?????????????? ?????????????? ?????????????? ?????????????? wp-plugins/imunify-security.zip000075500025073004152572267170012756 0ustar00PK ÒV1]imunify-security/assets/UT ëÆ«jëÆ«jux è‡PK ÒV1]imunify-security/assets/css/UT ëÆ«jëÆ«jux è‡PKÒV1]’>Ìù¾ dI)imunify-security/assets/css/admin.min.cssUT ëÆ«jëÆ«jux è‡Í\m“£¸þž_Av+UãËÀòbƒWò ’/©ºªäÓ•aëòxç\ùïÑ �Ùž»J¶²kÏ îV«Õýô ç ó¥Dù‡ÝÂôÒ üñË/Õ;lÞ¼Þ2ÔÖøˆóþ8пì 50Ũ*㦺@�Ž¥�0<·q K Ý�ޠ޽žÿë̳²Ï•·d*�±³#�[t çÚžT~�ÝE Äí¢ÐiU\Î%“ÈñwýØÓn1À#r3{f»˜§l£´*oW”áS¼wë‡DÇæŸW·-ѰÐù(èx®û—Žû\%¿Yía"lIT.ÃðvÍ•±{ÈÉûʉ…î²ò‰5˜kž)^¸[‡ARÀCR5ll² u ãÖ ¸ÿE[ƒ”‰kÍ*Xë¦P§?Y[a-ý¾ ,^Ÿ¡ðŠ I•¢x^¬îþØ 7íHz§¬S´mXÒ]gϫѶë¶Û (@™ÂìF̦j⯮ |†¬‚A‹”âŽ|ö¶ß}Ž*ùsU"\5ý`·÷ÓígÐ'vÆtÝKž~à¯Q¶mqëªæùÛ`JŒ›[]µˆXŒÞᡳj\‘8ÂÝö§ÊÇ Ì«~ê>:¢7êvILˆ¿|9ô[IKÜ!qiÌ1ñ´ü¾ººCî…¯c[®Xäq”Y_³,Óíü Š+h ] ›8aááy”ÕZqGQöŸ Õ¸í.G?‰v\Vø%.@‹íô„ŠlsûN*Œ«ó[?A@Ö=X~½´˜ÒìΉ†h'_!TC;�É4xÒt"ÕŸnÔ(ò‚ØÎµ!K’‚ïö•ìQ ®Ä•,à�Žž ¾yz��­“§%«l`&Î\KE|[-ú ÆÎÛÊr¯0ü�m&AL/ÃAÐJÞèëÏè\W %V–TEv7+ÛFeNô4ö…“õóÅ×QC!�Ø/=×Õ6Ç3[ÞɃz–èv‚Ÿr¼&”³#.£üÞ©Ã÷#/ñìD2˜VÄÓQ¦eU ñ‰Úùm¼òR’;I~¿´¼w©·e5••-4%››pœ5(aEãÊ2¨ÅÇô¹'\ÌR~ÐoA¸<'b?å.zôÃ{�cÒïü„?Gè;ã–ïo‡†}î¬*ð÷~¦µªnC ÈÐ¥�²7 A’Jl*bD6#e9Þ®µ h᡺`jVš)�Œ…½­õŠà†ª ôÃ#y•¿4æ7Ǽ¸¯ô�ãî6£í=,‘åd =Ñ4®½ ~ÃÛ]ˆ i?è•~žµOž½�ÐúB\a‹ˆ6Z¢l‰µ³ß­ú¬dÇ!…A%ݺ�Uú}€!C24šb´£þ»úØên‡ÎVc„oKÄ9Á¢înCN”ü¬|vª‰8+ÇnV6L,‚\9âUª£úfÛ ¡€� aí¤–�ÿçýFbOFÂ¥ÿ#{ø!â…ϲý^iT?–G¯úXÞ¯AtBæy.)Õó»�#tZV q•#µîFj¥7T²S×"T,b^–¬³® 3 Ký±M-™©ì4/²7üÞ2ç˜}"ÈþûÅ&šÝtrs}¹LÆ=žWðGcæ¥Ê�zÀîÆR¿Qe®ï¬ós¶Íü&òëˆt«Ç«ÜaÂö¹T4gñú8ØÂ"¿kŸº´±ã§° fÙÁrÉŒxÑÛÔó´È³b9£4AÛ¹GÐ`¯…Ñ…a€E|¦—££'‡Wáq} §ø Zg_·¹DZ½sh‘+xgÏÕG¥ª(3hÏ—áàsŸ¾�LH2ÙG·€•¸¸"¤×bÏü�ÅN7óX±Â*ÏBÅŽ›MµòÙéÇ"C o*à’J÷¡LÃZ¹¦: õ�µg²s”Þ„Ad0—B›‰�—¬PÿäúA¹Z¨ÓÕ Y4�±¬�Åê÷äÙ»ËÛsLë×së� ÔæèÉR À��Kè<Òï•yÕ£ua®R~êmgÍ•þ†X1P$üOºåLD›xTØfEÃV˜Œ°º²æ+ÜõÅêó]�8_}cíÞ*ëO-<‰0Û‘0Z­öæÔŒöqµpª6fõþÅpMIÍ~ÆÕ*>™¢r³GøI‹& µ†ö|èsK•Ó�q* ŒŠ‰h5DòÆv¯‰¨­nxš0çi¾‡Ú4O&­ö¼-×RÕ)b¶AT!J#ußG¿«<.“y¢$<ÔÇÐÑ�)Ožá<{]X@¹oXàž$t™ïjKë�jI"ñæ½d&C?!tço‡XͽÔöë{‡UØ$£”s n&3 ïÇ2³$LÁÌ,c4#QHO <ÂQ®<®›šæ§º •éÉ£ÍÞ•_KD`†J#ØS¬�Éz^�_}&�Õ‚𻠦îml½@g„ïÅ5O&Éßµ(1rí“*7-Äc d9î¶3—¡öy©kؤ$i]‡jyäk<3Õ}0¡cáӜ٩�exŸ_Suõs X¯¢èÄ×…$pÅE{ äßòr†ÄcÐa«Kú½�c‚Q[“‚¤³ÏËsü|m»Aˆ,OY™˜ôrìQ‡/œ°QÚ…y”GË(mh ,É*•déá¾11õ`ÁÔ×ZMoxd4ã5JsÉs¶ca¢IwÉÝé�Ý£vb·—DVGÔ¬·ÎÈÒ0ê$ ßzp;ÛΈؾFmjåˆa#¸7ÇÕD€Q’#ÍŒ.,rPkS˜x½ÉÜ—¸XF'8aXY»»ÅZ&¢ºl¶† –‘áH€�æv ŒÝZWº5òIú“$`�›E,¾ÔV°ç‚e°à$ºÂÈ1Óözc-`VmÃÆÒ¬ñÐHVã/XÍõ¡ó¿>~üׇNŸÜÌ‚øÊK‰iʸÔ�ãùs ƒb>³þSÙ×ù:_§€XõRf9€¹¦l=JÆÏä>³‘šxÌMèp—ìßU�Oš¿õQQ>¹ C® D„d�7žˆðüÍ¡3;W6;•¥–”xÌrÜý¬wôo�É莒i®Sˆc�Ó¾~ø‚¥ ìäDñ»Öú {ý(])eê kL}&‰É�5‰ÜƒæíO‘RËíBì³´íŒ&Å�ÿj=ŒîÁIO¨‹+“1’ïmçDÑî5œ­ßýÓ·õúi ©�g4¦•Š7•%©¨¾»wöÛ€Š°#7*ô‡�¸Ñž¸«×À%’ÿ-Ëj.ŠP�|'èz‘(¡Wþ•Öv;ÍÉ­Ms>´âøÇ{öö‘ã²�zÎÛ:ÿw#ë•-Ä^ÚŽ¯êNÛÒ#¦v„ÓÚêï5y¢²û¦NT†¿ßÄÉH�Ë ”l×÷¡až1(¼ßÅO7ûqßÈ*SDV47ÓËOš—} ¶;¢Jk03ñgTÜÊœ:D3Á?þN7͸ÚxŸŠ§sì“§2õÒq5êî ê©qŽšîu3‘äýz<î²^�1ä8,½hÆ1©² 7“X¤oÑ�ˆÎ’$£‡¥Ç\ÔˆeÄ-ëÞ¿X.¹ ëÓê\&%¾ÌmHËÞ!�g�½%1¢òÈlÜ@¢7ó­^FÛ¤WÚ(ol!‘|Zðö¥q®i–;DW]ÈcÛ>‘eò4ë´»;_¨œ!‘æÜÑÙƒ0 ’»Å)ZóèšEi™N¤f-?nG÷kƃ©òéS‹Ý›ã¹þv÷æzáöõÍwü`îvQE¯ùeðí¶îÛ>ÐtÏ⎔A(c-e°Ì&¸Ù&hƒ¢€™�‰…Aú-ó Þl½WÖ§þ�0{þ¿q/×ùË»<=p/Ÿ…«¬uìeUýÙäVqS/áÂÛ šÐÁzk ž™¢aý­™wîtcÖãïŠX–ÔÍ[> yÑ´mïδíŪ´¨Z] H~ç�¾A¥yè?â  µänud_eæ…;ÑÐ{ßú‚älW¦lúBµ×º©ÄëÄrž<3+­,°DÙ„ü„DÞæcŠÏ¿z^šì»÷èf=ë"Õ9ìÿÕM ÇžËô&Ežž o!0.êh£Ð2ë™áo±•ƒQ´*U¢Õ·Ÿ¾ïpiRøOP×ä þ×?þ2r5úÿ´m�3¨­Ÿ¾ýéPKÒV1]õ˜LI Í4/imunify-security/assets/css/bot-traffic.min.cssUT ëÆ«jëÆ«jux 臽[_o«:ßO�nu¤öî!HhØ#íØ}YiŸ®Ž*&ñ02¦Í9¨ß}Ç6Ch1iÎUÔ”<3ϟߌ�É낤?ì Ç5#üÇÓSD¹ÍJS79:Ù¯$áÇÀu§<½­>|Þ:z0„H¸+ŸáÜr¬ÕV\„)-¸]‘Ÿ¾qáÆ %›žá–˜ _pš+Ï7YÕ‘>8p@w(Âj'eŠiFYp·Ýnçh”“7%JR5'Eµ›¯œm¡øùÀh]$Á]š¦aDY‚™�á”›òdU4#‰uíÅ ¾=ÙÕ%ô¤tákñǺw¾Š×ÊÙ<˜‰f•ýt»iykoç%³Úâˆ×U“�ªÌÐ�àÀHŠ7›ãîpl¹:/ª€á#~¿þj¹){¨ .ðöÏ'ÝK£±þñÍÚî¼òôИI1Íؽ™MÃŽKú¹¤>…âÍNÃ1'´} QF…M€Oĸà˜ÉÉ´†Ú¯ñî¼ÆÓ«¸çM’¤[k†RWÁ㬷tB“˜ÃB-p÷b<”UùãzWžÂ#&‡#W×CîòŽ&5F©—F½ix[7rˆgU/‡^Ä(£ñ³áàˆ&?>\µÈ†Ô2á¬ÑüxëõŽýªtñè8š_‡Ÿ$•¢J)˃º,1‹Q…à sP¦]•(–«íl "‹’âe5¾ÚÊ6gŸ±9…î8>~0¥%>-áÕR®ý±˜Þ(„n†ÐV¨#F?6ʈ·gÞ^˜°ï|ÑA7fÇAk2L(o¹isé0‚[§,Rd¤À¶´óc¶ÍÛv„2TÄ8i>#¿ ׌Ä|@$Ùï|ÇYB$§á” ¨¬ý�o ©”$Ëš‘’¤aMXQFFWþØ|&=w¸&ûýÞ8ˆ Ùlé êù©�Qg¤‹ÔÞÒKÓ!Aœ:©»ÀêK†+ÌmR¤´)iE”ãaÈoä� î=]jñ xTp}ÄY¹€õòð­ Žô³¯ ¤4†d>È5!­¹˜£tæÅÌ-³%-‹iNºy!‰H�ò2Ã!é>ÏæR�Lo(ðPsŠø£,¾�ýÅú»VÿJÈè„?AÖ‚àÆ sÅ*’y`ÉÞÅv88×sÀïîFë^p/iem„'üβ¦Ñfw$I‚‹Aä[¯×»u:Ž™2ŠjV \÷q„a=ï¡×“Ê\¬æßÞ´Vή2×_Dr9žÐc[&-*õ¹€=aŽàD~û­Ãm~�Û49�‡nvŠŒÝêFÍÜ\¾¶rx[8¬c6£¥yœ�ã}HÛôþ¿ºâbd7Q�i {aþŠa%N7£CV¤`Ö bÁÿ¢Î1¤ €£¨ÎŸg×,Ó�𵤸ðEqÑËñ!kO±ž­4Zj VGR�¯Ê‰¨ øWU­€¶}¬sTÌÅ·îi“t�ÌJ„žÜœ ¥7b…² ìóJ^f çÅÀPž2’~-C3˜vÖ£WóŠ×P ˜òRÅԧʽ£òq!f*Ô­ïÏh}¿ 60ƒè;UÊé½)­[¥Md˜8ÝeåXÇLÔcïP†b£âUÍ(˜x¾öߨõù#ÑÚ}¢É6YÉÎS*4öSvµÀŽŽˆÁИQ(UtL!Xا՜ηs,Z¹ÄÌaß ýÒYæ"²bM e…iÒ®H¥ß§(œÃYKÆ,:�ÉHmtŒb:Á0‘~¨dé3¤Ù©ë®ÁlDCôstuΕ¢˜G?“#¨ ­¥œ¢:ã³C)Í8Ñà{JN8éñ9XExî–{ž£ô-xÛ~ Ÿ�ð¸ÇKJdÐÀ/t«Ë87 È7c@î @î�ù怼U‡}õè×˱mGê`»›�Uù[ Z�œðN9Ê­Q¶>/|ÿ¹]%ñÑÖžïíþVÞl³?Ã\\Õá–O½2Йxì~‡åÑ d+!$ù›Á‡­çÍÒj+FõŠxÜ5eÜ9”3 –ƒ…£s ^+/iñx9f¼ ¦Âòr@XPŽ«óöQµê©`}ø�̬m#è\cú-9¢â�•�øþ„‘úãfâ`;ÏÌz„°KzÃg´©7ÅUq·Ü¤$w³­tyɤ¸ÕK“\̬Zq1¯”&Y™™¼beT#Ms1ò@9•qyïL 8HnôATkÀr÷ŽÈÜ)³¶¢…õñŽ¥Ìøä§ðÙ¾ƒuÒÁjß‹ï£n@Š#d>>ôµ[&™¢¦¶ ªz÷év¼E5øfa¨ˆyµgÑXÕ¬jºIÓÝ|¡Á0ŸÜ½8»ö„ž[5ªŽM—Y–•$‚qßµœÜcRLVk�‡úpÑ»´Y{<<#¶0ßì¼#Ê¿p|ooüt4Ø?# »Ê¨šÍrª¶-ty1a“ Ò®ñŸžÙøT"€ÖÉ7Îjü}¶'¢kyn@\ß‚Os¡G¥Æ_8O1´@9Ö*!s¤Ý ¾¶©lÜïC8ƒ$l Ïâ딺b½Û}�±¨¿‰³Œ”©ÂW¨Ü°Ü¶ D`Y–Q[I°‚k@a]¤ÙxfƒØå¤nº‰áÍ5‚SªoǪ@ÒCßI {›48r±ûèÈÅe‘ñj>npÙAî@¨J‚Ž%ËË•yË„† š&)ÁÉS…‹�O¸røšð€"O1C¯¾fó|,�¤bÁˈV]<ƒåO¢ù”CÐI®i8+B½XÑ)EÞ#2¤’ÃBÇ„ÖÕÃ~´ "¡ð5»b°Œ ¢X©b¯ž­„áÙEn4̤£|õä6¸­yÛûiÝ l?Ce…ƒîBoô¬ œ¬ÀâGƒÔÕ?œ4¿.hê2a”Àûùô£ôÊËs�ÞeëÇ_Þ¥;ñ˜AŸz‰Ðâà™ÐÐYh_“z(Ö»ñ“%ÃÀEóÞ>ŠYÑJK¹^ßÂò4M©M+ÕfœØÄ2�eŠ�µRÄ»~nâÑýÇlK,#ØfÂøßþøýØÔ,ÆÿFe Âü÷?ÿú¦Q^A^ÅUµÊQiýþÇßþPKÒV1]4ãk]à-imunify-security/assets/css/admin.min.css.mapUT ëÆ«jëÆ«jux 臅X[SêHþ/¼’:D }Ë —ƒ€7DÔ­­-@ !„!ppkÿûv÷\ÎÖ>˜ÂÎLÏ×·¯{òwå°ØeQº©Ü\:•,ÍwóÅSšî+7•Šú?«ÜüQùñ£–íæµlžeµéGm~àOXc¿økŸÆ‹M&^ýéT6Ó„vÃÏdúõmBø¯ �ñEÏ™HòîÌqIOLHRÒìöµyB|��Ç€Kü. îÑ\8:ÐÖÆ1VoXr¿C€•?Ãên’ÃbίºA)€~·çøÊ-*ŽÂ7Â[!Ó!K8¿üYVàýT ¬DØraö¡ßwú­c °Æ\úSÇ"¢ç¡zêP€šZ‰´Ð�!¿ ¾æà±\Ü–±Ôo{ÒŒqп•É4ä_Ctþv8p¶äp�εN‚ Þ¡æônFÆ dw7Iv÷,£‚ëo�#“&H×ÊѨÆ"$øÜÒ³I»šŒï‡å]ùPý#ð›dòëûÀ¯Þ?K5NÆñ9•!«²6&VÄŦ_hóéa —ÀÑG2vað™ ʽ‰¾ ùÕ#º!|šQÄzCbå†ýØÞdhu&(TWO¨,Íd*ˆò›š�‹²ªÌ¸cQ>Xz^*¢‘qfÝr¬Øïs*ˆ–)uaôÖÒ>—�k _Kå"kª–Ï•âhÈ;X~xQæf Uä‘a®­J-¦1Rpž7¾uê’ãàȦLËëʆ• Ã�‚(Å`ÎWÌ©JÑþÑäÏê”RÀ ˆh…ÿñ,ÜX—%×£\ÎLÀš3Y9½I@¦¥ªeê™wgdîýD;çÚ�>­�¨ç¦ç­Yé“Ðü\³"Ê®¢åÜ*ﺊ>Ö‡ŒÿÙT¸!û�]akܰd˜=þ’)W¥f"úŽñwÄd\sh !;ËÏP� ]ˆ7PT"uÜ8lɯBkʨêý‰U Ðj/—ggyKœ7[Õ�1>ÆxG#ÌQ9 ”…òf6bþƒX&Ù~Í‘÷×ì]'ÞrMŽLÖ ‚‘JáfÍ8‘¬¤£j×»„\š%Â¥†ÿ¨\Y¼Ÿ™®Y� ‰ê\ �ü¶[ÛÆà‹®]+‚*¿RòÈ)Õp4(N„Þ1‘œÓˆ,ljÉ‘K¿¿ò‡÷J•¬†2 €-(^ãÁPq.Aì£Z:±]©š|5Òéƒ3•Öš|¢ßY!²yG¶†›ÖÚ;"¹v“Q˜Ò L€µg-û2#]>êò ̉Ád»Gà«3Ý€ÞhçüzǨˆ«;‘8(È¥àÀìQÆ€èì©î*QtN ·¹ö»í*"˜`èb€/ÇÚÝ*I0¶œïÅ‘îA%-äR ¬ÞAeV_·£bûèêÀ�Û,›âôÑ+ðJLáÔØ xÄ´çð%ˆÎQ²vRF`ç‚ÕŒ�ýv¨ì>v”c[¡¥mÏ, -ËS3Ý$Ö±vïÁQtàB~­\*¡Ô…Pž,0£b̪V™ºåe%È“`ã)ÑÌ„_]°{dö ö@í ì0ì!¤Ï£—[¹¤$žRaÝ�HÃToAÁ÷%û¯é,ýít&:^a:«×éêªB5ôïå­o㯤ØÓZ._ï¡_#{¬…‡ïšpè²e›ÚšqÑ ýõè·oU"ÐUÁSmݽŒ¦ˆhWL9˜O]CÓb€‰ˆT\5ÓÝÑ\È€`®Á\ÁäVJ$Ÿ®|J�ØgêÊuRjÿ]’ D>i‰®AKbÙ%jLðë¶H¤vB·‰J†„7®)mª×ìU&¬ºôëOJ0DÊ䟙‹óÉg½Bí«AQÏ$æ;‚ÉÛ°-‹DûºI�p„!(áÈ„Br ]È¢ "«¶…Õ�ø=�@ I¥£®ïØr„Xo™Kžª¸ÔÛ¼Q³,õk%Kš�Åå¤ôùÅ+ EF¸2‰+Âx\FQ›uùf“‰QL&U—ZÈ:Ñ¡�kôEÄÏîò‘â\ûâ[xqš®ýIHõ¨uÕ�“&\U#™W·6Í…;´Zè 0ï`‡Ûð™Ì!áñ¨e>‘íçJ€n´^ºTK¹%¡ÐTœÊg´^Tn*âÛþá7¸þPKÒV1]5Tq^•½ 3imunify-security/assets/css/bot-traffic.min.css.mapUT ëÆ«jëÆ«jux 臅W_s¢Hÿ.¾ÊÖ¨1ûÆ J1šHB²WWWb� ""Šq¯î»_wÏ£Ùì½PÓ3ÓÿÝ=üÓ(‚]¥›Æ÷k­‘§‡Ý"xLÓ}ã{£QÒyãûŸ�«+=ß-ô|‘纟îÿØïæËe´¸Â ¸©ÿ½Oã`“‹£¿´Æfž� X&óí6Ú„@5LsdjMfò¡1³oj1ÇõvLÜ>jídÌ´ï´#­Ãò¾cîÏ´‘2_Ëé0¥í~Ľ}A Hü3ÁX°‘ö`µ+ι¼ß™�`Éý^˜-±UûÄ}˜·hSÝ˧æ¤(0²É/Åí:=ú²�ˆdÆuŽec²Ë>3â7SQVSˆ¨aq]�áÚ*PŸY¨§ñX4á›™:ÓÙ ˜rOŠY#þm†ug¥Aè —%2ÃO k¨§ÿõJ¥ ßÖ/áÛì¬J»Pµ8z©|å~j‰®l¡3iŠèÙ??]4\iQ™Ý•G½Ö£®¹uR™;‡ˆl]„TJë�K�Ê\DÓÚ#<¤À>êóÎ…ºû‰È‘<²POÃgHDV�¾§:)çëçK3“gSN`ï²KB7|A“›/>0ן¾lØáóÙˆñ¸þB–ǯ`[oÀo=2µé òÚË‘l{{*çk¯%Èkõ´‡§`òÖ«{Eî¡»Ä m·ùÅ�Íë%|.}ù�¾t¸gàšI«AfWb–IÙúGw2–)«‚)TÍ+%c¾£gÉÑ÷¥Œ¬n±õ5�Ñ}ÅÌn²ZÍ„ðg [ª]W+¿3ÿÔ¸æÒžW™±Qé‚RA‡²T(füÝGÔE>6¯wQÒZŸê"¿jdú›H`P”e­H­J¯z¥-*C<Þ ˆµjcVgë¼/},©‡/]ܯä´É ·DѼ\q-A²Kà^Þ&�ì ò– ¯'Aþ¤w€´ÙaøJЃ– ^’¢-ñ•`•’c”,F°òàŽžd‡…Na 0CŸc+’˜}~`ݾÓóùΜ³àu¶\ÞÝGt÷á]•¹lLØ©JHb!÷qm”/�jfÏëF—”}tÖú–ñ%Là0Ô­ ½f„í5¼œ�ÁYS¥ókqÞÄsh¦Üüò ~ñµA+Ì×£»b4aWŒF¬  ¤pÈ®XÙ�’r‚·�ÐÍšQÃH×lO# 6ZrC¤¼¼‘Ó� ª)VžØ=ð¨zˆU-P ×�è®@ðX[ÖÓÕÃ-âÑÖì1—7]=$´­ÑµÖj:û2‘–«ÛÌC³�Ʀ–Ålæ=ͦv�øÿ¸ÍxKé^+ 1"¥…õ5l67t‰.V–ÕžÌþÛåêï�’1úÒâ],ý�!}¹°^5ÀÄÀ̾{VOG�½V5µYzˆhϲ†!fNÜ3'†šœ9k*jü#³ÙàÌqÈ+0*¤"˜Æ´YõiÅûµ{œ[ÕQÙMÓ8•¦*é2q蛘¬@Û‘óXh/BÈô,ÈçMñœsW2¼zS€«G8WÏqÎZà(bŒÁù¿Âç{hb,YB4’ݳö]¹Yce˜�uøYçÜØÕž†`ЪöâH¢Œ&¡©€ŒDÙø†>Fȯ<¾p>zP8ư�npëJ\‡çuꢅNGµX½æ 5°wN>_i *s� ]AŒ,Ð1( ía�ççW¶˜tÎC aIèuÞ? �©Yº�3¬ âq[‘X�‡Hô,Ünm›…Bûºïm4,Œ ‡V™´`â…K}mÚ=ä”ShÇ•Ý"h>P _Fu¨þOQÑô†P•C é0;žZNHð>4ëD*|«X“"›,q®&jÃpÄnat¨Ó’¼Ž¯Åãfd`@m‚|�ƒg°AÛ å>[1 0Å“i¿kéÚ¼ñ¶i~ÃÚ=w­n`btá°ÍWñ-3Ô­p5t9ç+È?‚É·«èŸHÔ£H¿áÃP°†žrMÙ!Á0×3§àP„'kœ÷:ª¶“‚J ÕµÛE=‡ÐáÀàLr‘ìŠ`ì¨ÉX4Dj‡ü·|K7øä2�Àµ±Ïô»³cÒ�àRØÏ`œ2‰ˆöÙ¿ðç×b\P û-ô%äì+t¿ÃLÀ‡ ÖË9êuâ2Ý¡2XPXÎà>BšÓVhî'»FšîÞ¦æN¬-!–> @Ÿ Aq!9Ó:ÞÇ⪀0!8ìmÄNaBD€�3*�Cɉë� Û¹w`PÉHÄš�7bî˜m@=¶ô@, XÁ¼�‡wûÛñ*úÞ! Šh˜p‡.ƒö©× ' ²—ã¢G�*ÄW·ú°å uÒ¦\gàƒ¯O.Ï �lÚK£Gê T2ø+ü:°ÆŸ‚fq›Áe! nrê'¼|ƒÅxùòçøåÿ±îHº½l@ƒß½îÁÚ„A°…  4Ô lÚˆ›éæmî¨9 ¸MÝòãb ¶å�VLx|€#Ùö ÞÎp¨¹íƈÀ«É8͘‹K¿˜s�Ü�˃µZ…ÔÒΚ¯BöÅ­sÙváù—˃ûß<;ž½ë—‹<í Ug¤ñˉ4™Þ<�æ@þò3ÿû$†Yqæ°)VvY”Á„Dw`}/Ý<½“9éX!ø(XøìbŒúªPÉ=Jg—홊32†‡îÙÇ^tJ-�‰çâãן(ïŒåê$ Л#bÁ'jð»÷'÷eì ÐÄõÊEX{iì¡ðüàÆ'�1Oq½3è]ùü•ç¼'O !ÅÞ…”·ªl¬}?‘K-vNã9hû xêçüÌ~ñì/PKÒV1]Ë D/´‡ 1imunify-security/assets/images/shield-warning.svgUT ëÆ«jëÆ«jux 臅WÁnÉ <Ç_Ñx9§Õd³ÉæÂòÂÄ'å knA쵄8òb­XþüTq´Hl1cDM›,‹ôËŸ¿üëCûüî·O÷®/ÒÇ¥½{øÇÇ·÷ï¯/ÿ~üåOûÒ~~õâå§ÏïŽ>|º¾Ü=>þúÓÕÕÓÓSšýãoï¯tŒq…—óÈO_>Ü?üó{%3¯êí¥}¾÷ôç�_®/Ó›d“¹ñO/íéþíãB™¸ùîÝýû»Gzyõâ/ýûã]ûåþÇëË-ãµ½¾´·×—¿úèǶ5»[.}ú†i}©Z‹ìkêj‰×±¥í�gDKï{«á=¦á½õ�Íw2¼¥vñl>û”i-G_ˆäÀm"7»çJiË»î˜mGOͶ´çD0Û»gØaÑm/kÛ`g6S;ñ^»ÙÒ6½/3=£Zû0ééCZÀÝTm¶‘�Â^}Ûf%ÄÂú°‘®Ÿ÷ÀÓÛÚ¿�njÖ¾æo—«ÿ‡¢ à%¬F_9öAÛMh»¯Ùhç(;ÂN3'ͦ8¾º«7L®MdÕ6�©N‰Ü6£�ëY¸«Í�ÜQá¸zf7`ÚDg91øŠ5Q€„€ÍÌx�QQ` l‚ÌÁûÝl²rqð} CË+¾��÷ %[«ü*ÍÚ Y· „XÒÍ®�TÛêºDo˜òš•=·nV~ ÙÍ�•Ï#¥Ë$8�R‰ļ6ÄŠ¾�éÊžGÂ�=ÖàØà˜âó˜«}Sˆ•�±Mìb›´- Ë(,aKØ;Y Ø íÜž8Y2Ø1 XDfcÃ!ìQu^H½T�dò ï³€௳‹ñ!“¿sŽUñ$˜€.“�®5%Ÿ%yEtÄäõÎ *Õ…&7DÃD»u½e-•`øG‘¾Éÿhá+GЬ°?ØLcÑL eŽPФR¨ŽÉþAƒ£œ¨®Ý�E$Hì“� ± ÅÍ%ëœ(L{-?É´äÀkõÁ6"w“z0 ¯L¨Ðnpîj#ªÊ4­ˆŠ@’wã]Š;EØÐ² Îu£Ë&E×ÒVPŽ"ˆ­œ��øZ™{Ò–Ôˆa$Û`ÒÛ¦’‘§ )ú¤ñ €Õål ½¡megÊÁK“-½C‹ŽfF} ½Ð«ZŸDÓ™@ÇŽ1-UÎ^OA3jš 4IAñÌc R“Àªm5_(«qƒÖõ5Ø`ÙFð'�¬-X ¹¢Â@f±pmŠXuÁ0 » t ”-ô9CÏn@9JÑ8 n „á¿g�ìœ½ßø4=UR™PЪÐW`þú¬Î€�𠙤îHlÚsÏhÎV�mdj 8 ìÐØ°ËÔ’ L¼UŒ^h ެ™v»Kua'©»9âíÇ C� !hyJÃb 65à†²Ô³8® £ÎÂý`Cm€{ëL¾Ÿ*ÆïÙ{h–­[²57Îë`Ï�ˆÇÁÈ‹Œ×A5Ù·^µÜœ˜PBg ¬R}5LæE…Dx<ø/…29uJ‰¬pʉÖ€8àu[–Šc½ÞÆÆÅLòqê™*‚†· Ÿ·cŸ#²Ø¾)Õw {¼±×óÍ5}c¾�Mp…Q ÄSib¡׃sq²AÈVbWýfBÒa ô†r• ½võ·ð9mÔ—# NsI(a z·Ú$D'’ïl0åPDƒV�³A'ç?Ô„Œ%IÇFù,•‡z|²Ä|‚Cx²–QÇ'Uø(e ÿ>¹5v2ÄY‚çãì7O+›5å>‘І‚=K„�Ü©>…ÈB|!6ZÇ•yžÞ1rß\iRëVî,ÜÕбíÜ¿S¥7áÏs•0ïO5ÇÜ}FÁ‰¶‚eú˜..¦¥Ø:ë8æi)¢ltf :‰m¢�ÚÁ»p@IyW­UTtº£Vk©ô‰îùÆ<�ë³`›ö2gH->›Å¤;Þ ¸°A¼nåªóÉò`ˆ²F%©!þ|�3Yl Yóâ^Ú»K4OxÑ…®RëBŽóâBMb YB¼yî¼i‘0£„—7A\Êßò}&>gÝÌÀ0­e§¦ Ëϯ‰:Qå” ½ˆÃÀ- yrKð*Jp#8Ù«äWöó.bç\¬,I¾¨×É…ŒÊA2SÍǹzD-·ØE±59oãZAT¹ÿñûõøRÜzÉÿ6½zñPK ÒV1]%imunify-security/assets/images/icons/UT ëÆ«jëÆ«jux è‡PK ÒV1]y�3çöö<imunify-security/assets/images/icons/imunify-security@2x.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR®\µUPLTEGpL³~³|³}³}c±Ò”tRNS€¿@€@¿ÅÃàƒIDATxÚíÝ»sã6`R´Ã”Щ@K›[J)Ôº¸Ì¨tuãòŠ8£R¤ ´)d�þìØx,–‡É(,‹ûÜ>äK’¶UwK›È€<6`@cXd@z÷€<6€Þ=€E¤wÈcèÝXd@°ˆ Èchl@À"ÒØ€<6`‹X† ÀHX¨¿ E|î…D|N&- A8`Ὂȼw‚¸¦¹ñàÚKO¾=ˆ1^‡’DÜöDüB€r.¨¼°¸í‰DtCÐø„°õØWŠ Èô›; ´ŸåÁàøÐ£3Àúp}1öè–�€$ÐZW‰”›Ü‰#À^|³zÃðõ¡U1€LX”V3J¿úh€ õÅ{3H€)הᦼ]³aø€)Ø0|À”ú 6€xMxÏ PÕ”ÞÄ4�õC­ÿ€™0žg`<@ÀÌëe8 ÒUø0PާWâ]_¼º/JË1]�W�  IÄ Ì‰ÏÈu€àã;À¯¯¿‚àÊäº6ê§öëÁ ›P�àÕ1_ŸùM:ÀIˆ7Q{á»ûè ^ K7qÏ·Ô‰ØõÄúíÓ© vÀ-šM™(OS�_Qø¬.þgÀ ÞÀû‡bºˆûÐU·úûòêSŒ³ÚÝ�kÆêÂ̺(ü¸˜ûŠp¬ß–µfqLà{Å/ð=ì“’®Öå¶|YëWçD¼à  §'¥»¶ ๬�gg"Ï5ý`ßën× éª� ø¼ªmé ÖG–üö*×7µàzU;œŸˆû3+îP�‹ÀòÔT¹‰¸ ÿÎÉBúv^õ¾ÍŸI»xt¼( y~-ÿö6xWO¯!ï0T.�Πúüé-äùùV9ŠfÁP?è†\m£ï.¬ün èc@ô'(ÔóÂX’8€†Àƒ¯½Œ÷pgž�7 m†ƒIþO¾=ìM@:åáŒk nã› ïðú:°~ƒ`¼ÃëÛà·é"@;%ž4ëk È$€æ}¢³æá»—•C· y@« à é˧[0¾U·“¸aøÐu!P¢ðSw�‹òr=�ïÚ Ì lÉ ôõ‘^î¯À8üm¨�ôýç-PÛ‹="œ�÷¾as À­ U@SÛî0! ÀøE®ÿ¡oÃá}ÏKàÆ/b¡ÄŒ‚Ìã5‘‰]†o~f¡�iík`þÞ%`¡hÇ 3LÔhÍü3á5Z€õ›ŸH1ÐL‚À 8âÅÀ04b�#@/(кРРÚ_–êë¹Ö$€¶Ñþ:•  �_Ð ¤ØÃR=£s,Í%ÀSåœÉh«\¥KGNÓ¸4[sà-Íre½™-+x©¾œãœÈ¸l­¿Y£@f|ýº•YÐà”˜.�‚ýJáþHK…¾,ÈÍcÚw$l€ö¢ë6 ª @˜Úús_м,ÈÝš*«Õ›àþŠšÄ<àÝ@‚ ˜”*Š˜ÄÜçÎCŠ8å^Ùâ%1÷›VR´$æž¡^cµaî)Š”ÄÜûîłܿ�(Jsÿ9åºT¯‘~«ZŒ!ÈC¦õ!‰A€/A�ð¾¼ Nb8¡ÐÐ$†ŠHâm9î…Öpˆ ±ul@ýßë:ÆbHl@ÐÆDÿ§±El‰ H"š»bÈÝ’È€»ÿ÷Ô‘Cðÿ6Óö/ÃĨ°…ù°IEND®B`‚PKÒV1]åî>¸ÕO9imunify-security/assets/images/icons/imunify-security.svgUT ëÆ«jëÆ«jux è‡}TËRA üÕæ,y4ïIa9Õ;±LÕ(plНOkÖØ&Ä”½ëõJÓêiµæâe{GëÕýÝz3´$Iy íýj÷ãñu>°“ „»ÏdÁœè=gw¿Ü¬§%9 ôú{|x™ëÍæéûl¶Ûídäñùnæ�s3./žn7kZ·kÕ,ÎSV 7NrY8–’XÅ%–ðX¼¿R§Ò(‰áÖ‚ÔoENòRËÈ¡JŒŒœ@"‹FÄ1`EÐG¤¦@»ñ © KÉ‹S$ï øm _÷ã8¾�ò0;á[šø@±‰«ä³Ò*¥ ^Î,¡ß(±²Ôhýè!J �BÄ}g‘'âvAÀ+¤ÔLÕ‰á@Ò$Z‰ŒÎ™�³þƒ�{ á<áTÅR¨PÊ6Câ°p‰ 9Caü<šLÊ¯Š Ü+Ç=Oµò¦° œÈ†¾�…t5á5¶>rõÀQãª{®Èh ßódö I=ØET!…AÚSkd�.Üuá..Ÿ×|‘Ç“”…$�MÀPkTä#ÐÑÿQ¾ñÍ=`f/vëE�xg¥´GªÐj„ƒëqà·?0,  ÛGmpkô4\Qc€>$  æ Ù‡b¾´ _úöÚŽÞFž0@¦ÁGé/0ü²íGÀª•ö�ßþeK3�åäM¯Hj¸Ô“ÜZÃ8ÁZT½�Yn¬Ue¡Ö²~ú€Õí0›‰ÄX+w¨·°\•}Ý«SOi”#X-/vu¥¾âzQùÞÇw8ÔS¿t¾6ñ Íf„«½àE <Í\‚(u`1�Q¤á½ÞohOB«)Œâ€»”“É×6Cl«•ïñŽ£ž†p±¼¨"ŠÀû߇³•Èö·T¹[=_À‚…k<©ÝA{d㩊@"qÖri€4(—· 2Pص¸MX\ê8½»m%Àþ5†Àþ—¢dH@u®5Àà ú@@g¹[LŒ’+5v>BÉbŠÙøèžÌÄÄe#Ñï*6µC¨Ðõc¿bvX€å+wÃ(ßTlôqHƒ4K›¹ ¨·M�»éìØîU@:ÇšÐ]Š"U�¨‚Ç@ø ñGAêŸJÉ€&PÝ�%Ú»šT@uw@¢}¶Ï¾Ñõ{˜ÎõÚ¹Ï@IEND®B`‚PK ÒV1]imunify-security/assets/js/UT ëÆ«jëÆ«jux è‡PKÒV1]m=ÇDYw'imunify-security/assets/js/admin.min.jsUT ëÆ«jëÆ«jux è‡ÕÛŽÛ6öW&¬1#Á’’Ø¢k�Rì&²@§É6“æ!(´DÙLhÑ+Rãñ:ú÷ÞdR¾Œ³éËÎÃØâ¹ßå¨jëBR^G£x‹ZA.„lh!Ñô7h9'ò5®KFš|Kk*'=A¼E(û$Ò-IZsI+Z`(ÎŒŸQÒS�xK²UCîI-_‘ ·LFñTq¡Ë¶¦Õ&¤h*7ww¢æü¿$]áš0`W‰‹Eg´¤‘ÿ¨$i¢Q$TÄYÁ¸ B*>µePg‚Á—W| jÆ×(’í¤úi#¬<Íê¯QYkð~È?AVñfiý&ÚÙ’ÊP Ž5!ŸE\¾ë¹Z â{Ì@»C gø~ˆ¶mÃ&–ÖÄVŸ¿oX"7+2Aoß¼»EI‰%žl±–=Aßêy·Öt(©y]�3ƒò«‚$Z§‰þß%¢- "Ä.y"V�(`­ú‡Ì¢éÌú®—ëüe+$_Z@@ùO.ß6\žo!À ;9ðëCÅLVåŠ�.¨$`î¥áTìåâŒËB(ˆL‹®ç�'¤æÝp.óýš"©ð²ŠÖå˜6—à_UÐÑIDRR±àëÓˆ`>øP¡«ÌçP³¨Û…)‡ÇlÇ�Gì/µ]áB65À 7Z«\ ÌÙYNêMRÕf =ûlÄÎqßã~¶1~\fóâˆrÉ ´w�éßš4ŒB—©ÄPn $Q z wÔóžŽ$„ŽC;«KR£däœï„<Ésó5î[];ô´rgºæY¢0{etej¶0Gr’AG˜Ó³Ÿáååà ëQ +ó˜÷§?�¢þ{<�DhjO,ZÆH=— èi–Lkb\y5k¥äõGÕ|sgç]"WÐçh#T—û&n�ðiˆl›ºSmÊš´´Èác)!¹k¼„P'îPçQ¢UP1K0ØõCü8X¼ß1k‰¥>Ð+‹jž‡ãeæ3Ö>œ/_ÔÿÌL+û gSo›.¼a—¹›j;’njaÙ�š…wš6ï¹8èÇ�úäžþS¿¼¼X|T®Ê]n«(˜¢­m’o�\Km>´¶#3ê,Co½Ù[ÜLœz²‘Ƀä¢ïT¦ðJ*T©–(‘MKL4dÅpAʼÂL�ÿeO°Vt°£q˜‹‡'ü÷ê§½"ïƒä#¹=àò2ÀÍ–p†çÀÃ:*£ÃÀ�“5|ýZ.ÙPv¦652e¤No0­s¯ë)Pº˜%#ÎJ•íp|{Ъ±¥›šXüNõ¶’{œ2*"4¹7Y§ÐqÖ�Z03ËT.¢ƒ^ž˜ãè½_¦}z¨Œ1&×dý_?n®Ö©'ù*A÷<ϲqÓP·¬k›Õ0Ãe9šÚ¬�”ùÊdщ“‘¦áÍ�I¬/_Ðoä?-â…bDÊL-1fk¼>[“Æo õ×Ô¥.ÂX-µÉ±}u¸_ŽfÏíUl�«tÙ“¤ÒÐ ;�4ªíüP ¡åë‚°Ì^A†ä�“šÎk©V­«ë’Þ_ ‘£ý&Vè:mSK…^\�=™®À•)þ1l‰ïWó®——þyk¡gÅ[Ëq ŠÌš×øbÑ�*G!ÿÁø WÖiÉhýy¨¢:»%rŒ®Ÿâ¨ëåÂ3xà27ŠdC�´‘ MbñmøÃ¼Þ~$ ¾"¯f›ÓpXJ,â$¸p ¹Ð÷G×8³Ýû“Cs±û�jƒ¬ShAÕ|ÝàÕ)ÊÔ  ø'tqn¶¤Žh‚Ì»‹‘K>(�kíüXµ„—*®ÑùI86laÁ;"mŒf¯B ©rÒ …“Â(E;’ÛGœfh”ã>+æòÒCG±ªexµ"Fed5Š!¸@ø1Ã„Ž­Nª@Pb¥[ã{lï=�ÆÖ°¤WÄt8ÞÂfüúöæë=q�ÒKnÇÂr0óÙ$¡ÁÍë–1íPuº¥KìÍ¡ãr¡FDÁWÙC…vÀnìS™9ªeÂÉ……� ªØï^8X¶¬"½Vé·ÿª£ïÿöLÍO�ö½ê£è«Z¡ê/žÆ®�x‚ ê&Ì›ÍÍW7i½Gö,ÔYfÓïMUé�ÞU*×Ïö.iaúÉ…‡¢’\Ÿ…h¯ �/äÏ:D£�ãç<8ä§‹ ö@Õ‡³³îzø÷Ä»+¤Ço��›Þ윱c¸£?¶xhC @˜ý™˜~ÎTrŽ}·>}žú^yú\“/i­‰šò ~8ŽjHHTn²Ô×VP¼uìì�ö ÜÅ –‹ p" OÌ­£ÞÒIJˆƒ¤x©Ëâq/h kèÚ÷š¡NwФ?„¥©&JK”ô Æhõ°×= uMBEàddïøûg¦�ìDv^)…w~}w~}ƒ\‡öŠ]ÿ êY½ÖÝ%ÏŸÁÇ®¾�Ç›ûÝÃÓÜm]ûï��¿Ó=òFßÐ[¦,8X¦À´ù\Ý-ÐmhG™§†Åƒeçlz·àØÂ??Àí«„«Rc åynu²n(N‰EBþ®±»YódÇvÍ%òަ_a%•úåâù?'éÕÄÈ|׿Ã2_ô{Å. €þZm±¶ÿ§9 "r2tñôOY·&ŽºØºà·4õ–zã§y𻡾£GÚ÷ѧ·¤ÙÄÓ?PKÒV1]d¼Þ­?,imunify-security/assets/js/sw-cleanup.min.jsUT ëÆ«jëÆ«jux è‡Í;isÛ8–Åæ9¦´v®é’ÌÎ&Ž2�'ÎøèÞ)•JE‹°Å6E*$e[#é¿Ï;pñ�íî­­Ú‰ àáxx7žÜ›e:-ã,u½µ³,Ä^Qæñ´t÷a¾7ÍÒ›ø6xˆÓ({èM&ñ|™Æ7«‹‡“D„ér1ˆoÜ}ÚläGo®’,ŒŠfO/ém9óÖ¹(—yºÅÙ®Sˆü>žŠß²üNäNœî¥á}|–Yî ¹v\\ˆé2'YZŠÇÒF!!Êl±È­êa<įÃóO_N.'ÿþ+pä &ÅÃä^䜴ࣞ¿Ÿ�7�r±ÈrszöáS žND ôyxyòKæF”Ó™�xþy5¼6@~,ÅR0@1 s�Æó¸,IÄ„Z›ÍzË €n~ Õ8wLæáãfsD ŠìAýn⤹«o^xk ¦ü–è~ÖË(’îÝ„I!¶²QæK±õˆ v]²Ze/aô÷–+àjÃ[á߉•Ø’ëpzç­Ë|µÆ]çáC !z·¢üRй �Þ@. ãïÿ~qö Ž“Â…¦×WX¶ÓÈì {³<`¶ñ�Ç¥hìã>L–‚7¡/Ìâ>-ˆ’‘ÞÂm¹ í™å,üE^'â*OÜež˜cÑn£ {Wç§8æKÆM2@3{Y߯©>(Ï�½²µËYÎE㤀ÐÚÄ lTä ØoéæâÖ/¦y¼(¯pCŠŒY&[ˆgã˜MHƒMJÊ?ÄJ±‡OS[Ð*ö‰£ç¿�ÍN€¢T›Í¡wàìÁ‚fi…ìw�E+{1:‡Gd$9:¹¹ â9Ò¡Ó©4{eDe.Ä€®¿‚ÚeŽÎÞ 8ö‰}Ý9IiÛo6Žc „ Õ.�s1-±wl±¯kh£Ä‡Æô@C�E¾LůRA¹JSù)ª6<Ò�X”ï&Ë]n¯öb}QIòþÙõï°—Þ"Ïʬ\-Dogé÷HŸ—+8@’Ü(cÞTE§ Ôˆu¼÷ï, Ì`ƽ²L6›¿þå§woÄ[”|ØT· –Çrª·Æ�RoËV‘Ç͹Ãtõ•ˆ|**-|Öö¬`¸ Œ‚ú¬é©›Qâàp×`ñÁK%n¤ñ\ÜzÁQ<öz¥(J—VÖ¨IÓÙ_]Ò:š¨0N À.¢DØG�=pùõ’TAyÿ€¬{æQ÷@�ˆÇ³µž ¶íö½‚ ˆA Vñm #.ÉN]² f¸‚apC7®¾%–6šVðV<òlX^ÂÔcðÖÏÓ@Š€Pk³šÉÔ+ ®Á²ÜéCÊ~sL$KñT cV¤Ùß—+¡¶™Lå¥u:-�r«›�5F›ª@S�ºP’Ÿ�çg¿] Ï'g¿}~šü2üðix~Œœp:®ïNg¨ÓKÇW"�fh%ÙS]ÜAž%Ý\€wP”]©¡vÌE9Ë"‡�T¸Q‚ëòæ¨#»‹…þx_QXbG”â†Äã&ÃÇ,+ðÏ�‹n˜Ä÷ >rq#rðÙ|‡¦–y'ÜÌô€1ûDËÅm›‡¯û8Ä6ø}]°³°Þx`Tÿ2N¢Ï¨OᣪK3î(x�Q`éyu Ô°u8)Ùdsš-Ó8Qq%ÚRÔœõÐ�f’�xlõ 8Ž�ZÎ[3‡âzIö òà‚Œ�K“Àq=ÅΓ¼r¥H²[yG‹:¡÷ø0úÖ#lùqÕuÚ 1…!kŸ’<#ÜÊXíËœ‹û½^‘€‡îú¯Þ¾ót(�l)pÅ6,Vétϸ x$vÆgÐÞ’‚n­jÇõ­±³«k¾ï웡—„qÉG7ž”¿&W¡?µœ†4뢟 â`ù Qñ72XÞñ•_A–“q»ÍŸu^ß:÷øònú»Ä |wÜ$¦ Fy™_Èiä)yBWÜ­ëà1çÐñ�Ë4\’^…LH)^¯J´w¯Þ½:zó™[-õ3@k+•.“„Äí™$¢Þö¹Ú+&‹Çë#Š÷8µ�� �˜�‚# ’ºZO!`ÍÕ�xÛªÃÉVPAì E€H@Œ¸-nÙ\iCßb2ƒžr´mZ8c4Àz¡šL-–ù­8A*”ÃRñ�L¼L|Vè L1ê4›/@GsRõ|øÁ7+ä0Šöù«f;ë\áfï !ØPW°E"¥Ð£ÛŠK…ø¿~øŸ H“Óá·¿]þ¼:|óÓ@õ~»¼˜|µøùôêGõuL>þërx¼o,‹xJ;e�Ž|?& ù—Ð9D3,Ñ#{%Pž¯ÁWþå�øQСòðdh¦C3оÀ‡@õ °#{’AÀï_öw ™¨ý%2ˆ?�Éî�ûí¢‘ºûõ;ï¸lÖeóÚ�Tä¯Pf bÊ<Юµ®F½_wA M—y4Ò+¤‰�ì­€6¹�ÁµÎuø£1³-hÐ UaS² þÑ[sW1‹oPsk±,fî:Žúš>}õÍžûòÄì�jëUå-O�ìüÔÀ+ µsΔP}™S‘M_ÒmÛ2ažM°¾õí‡eßÜè`““xš„DÏöà1;uY&&…#9[m‚!L|Ìíl‘Ü$ W Ÿ�ÞxÐY!h<½;§Ì–B&/]åTÔ�ƒz°UI±n` ‰ýÊ £ì÷BZ§xßÒ×cð>­€ú�ÛUÿŠû@d1uY‰ ì¦Ü¢I.é=ËÑm=?d¥oÀ*Ÿ•´0µÔ9(ø4Ï›\"2}#Ý–ë½â^å¤"íº¹i`ªä:(Ün^´2ÝíÒT½¹éºÂ–ÝHw+_JŠ·eõu:¬au jºêˆç N÷6ðì•Qkl` Yâg°4�‚õ�Q¸‹¡E4 ËÊrVЀÜ>-„Ö�JŒÚ%9ÜîØ·ÛÞOI°£ÿßgjßùvkn·ª¨U§RÕ¼àݠɺêä¬ÉY¸žQ�ORß$_ËÕ¹$@5ÈÉ3Ø¿c1¶¼ùœ®Ìàäˆú¼Z–æOªƒÿ¥l>#�Æø?8{èºí#uŒÛ©lv¤�d`ùm9¿ —ÄE©2騱 .)þ©%ººGµ¼�£i`aE_N'q˽ÄjWˆMíHÇ@ÑÇÕY* è]ê$–ª7¦^åù©g@ÔÛ–lÂ9‘üó’¼Ý²%ÉUy(ä©L§À)ßäÉ\žö˜¿ý:<ÿòùËðÓäbøíÓEðÚ~Ôºüòuxvu9ùz¼¯µË,G¥ÏüöíëwƒZ¼�lý1Cÿ5Ò¡O�e¡aø„©´1`<§Ø±ååÔì€wuLŠ>y |ôOܦ1âG>•¡Öä|Î` s•¥Xè 1öðû˜8Ö‹²Ôpà:�kõø/¨/Äz0ñ\ÏD„†9€Å`¢²Ô4u‘¸öÛ�}|\-¨-g–ñ×E xæ}~WÛ6r* hÌ¢×1ÏîE„ùPŸâIþf ˆ4Zd¨/¤—Ê=QÝÄÚªa?¥6…ÇZf³™Ä2GëùöûÍyÖ–hÞàO… ¸O;*¨¬~Mù£ÑX+ÔÀ?ŽmøN‡€dë¸-†ü�¢¹/OÓép 2ú1Ý�¢š,Å|Q’Ùþ9h“¶Ú³ °@c:5àÕa˜Á)´|0{g°O¥Öž§46Ïû¹èªÄ"SB’ïk£o’íKTØÏG×@¹ëc{ÊàÉ¢`Gô1ºƒ]׌„V=g^ˆ0ŸÎ¾‡y8/$ͦ‹B™V¬&Ý{ÏIѺZÔ¶8vê/°´!�9D^³þPÌá2E…¨KŠ¡dăǠÉ"aG!Æ[[í ë€�±c„}Áí3ŽšÙ¯ÄÃï /ÈwR"Sp¼<íÙ0Ïä:õýá»öš!úÎ÷³‹Ëj‚Ó) F歹�\;'2±x¹Z§ï„‹„ßô*þ_�݇‡‡.ÜѼ È9A öäãIpuù¹û“³¥ZŸØFç;¼�yQ;U²�-–®n$‰ÝdF°R…"é²LJŠ9ÅDm«T�¦ÔÓIÛŠ%ÍîØŽÂLýÑ+–ôÖS™¡yÞÚÈ~È9ø­óâå,ÏÀ³M�Ý�þßÓ�¨ŸÙ”bèýÑt=E[Zø¤èî˜q)!ºSiR´ð0ÈèŽdg`‹�}Sz©z˜zÓ~ˆo³¸6G™÷rYÂÙ¶�V¹b•BµSÆ$vÊx7è\•™`ë‰ÆVŽè¤óÓwLîĪө�š0cíš¼v[Ézè!d5,B°ò0Oðí†êi¬<èžNûkEAÀ-e8:åßÈ‹Ú õå|qQ[Ñ®±i_Ç®¸‘2üT¥Í"Ï@…~H#™¦²®B&ŒH†Ú²D$/K,È©ÐÅxyvVYÙÌ©ˆ>¾?ꛆUºUŸQÉíòŒ Oß1¢s;”Ë�Ç:£˜}½)$<†ŽÂõáŠr•µS¦”fHnŽª)Ì1½J¥²�Tc�Çq1‡&ås‡âX‚É­D†«¥Û­€Pe'‡ ‚K=µÓa%*'Ó T’Ïóˆ¹*Å*H‡ƒ#¯©aëuV|׫¾ÿгŠËj Ú±ÐoÆM>Ñ5~&÷d’_Vÿaa"½ÝLø·€É,ÇD°_ tv¥ÅzZ:¿èñšÏ(Ë~¤sè´q–yÊØµ Aפñ‚éC®¢å.ìxXËÓ‹ÛÀlkµµKø V?Ë1T”%,t¯2öÁAÛå˜><®*³”£YRp €[4Ø A”òÙÁÆÓ¯ åcõ Ð×)íÅxkr'ˆÆRȺž…¬[Þ=¦m�Á™‡–ê¡ç|/|üD:¿ÓwœP’@s\Ë+ñäFð<4ŠÇ�Žþ4ùR)yÒét�€•)‰¡Ê° Ñ[SQÛútØmNÇaàÂPX©ÍeþàE\ ÀU}ª É�*E"ù&„U2±)Q͉¬ÂÂÙçs8íeSºžÒÉÔ΢Eµ‚]¦‰cê¶…æÝè¦9epK÷‰ÆÃ¨ÒÕ·¹B´üñ@{éî³ÇàÉx w'¹¼~Vì¬ê±ê|>:“kRËmü¾ŒÀÔ(­P)Z• \]ª(U—®†|ª’SÐnµŽÄdxeµ‚Dl½‡ýU>‡ ´L6Ž¡žËƒ–êXCEb ß!4r�=ÇSuÈ¥ÕzH¼.îït0aËßXI ›êttFS´œr@NnII«J½çî—¤bðB©@0º (@¤8¨VVÊ„á� Ó×”?ß•’(Jµ—úÚF¡p®±R–!7Æ$@_C×í…ôŒÑÜ-t2*ظ}7�jöå5àû-\’WÓ‡5uÄ%{Õëµµ—yÐOAÛLAy—ö‚rÝúN)'¾³V_*Æ!+÷�Oi`vjòâìÎâÒ.¦ÖëÍ�¨þÁ€§’®Ól.‚µÌ öé¸ê�[5Áÿ+Êsýd¤�ô{îVòàÀ•-K-@åŠc½¥w…Ô»¸#š†žüHƒ�„L¾(”òYÉ÷仕WI1\ó<^æ Ú©ÉÌÊËß[¦ÜÄ µñ1 ‚­$POÒ'À!}¸)nz\ÛÃ`ŠgãõìÚ6šê'qÔô�ÎMšpm ×yÖ6øÉݼã+ Þ¶êôØw]q|¬(°�À¯‘š,=§ÃûûÕë1ïPã�y(�&<ð>m Íû�ÂéâX”�«Y|¿Êâøû"µ>hŸ§ÿ;Ú ýfðQR´=÷¯­·>Oo/ïàZÞ¸U)s~Ú×Çõq§}{ÛÏU�È_Jè9²íë7á¾<‹o=äõ‰Vï­1Syr(Ó]FÜwi�NGS” r)ÉžžÚéòykÃl¬´y@ç± °¦YWoÕuü¯ÕRìäj9¾¹Ns‰r60-HjÒßéès¼wŒê‘Ów"°S¸¸çS–E"¯ëô|™ÊˆUY›§³wÖOáüµä à–À#©x Ã_+*–2l…;2ÇiõH½¹ëe•Þ÷,p[‰ÊØÐ¼narÑJfHÇ^äÆ~*J¢xoWDXsç)�k–&ÝÒ|~7³í ��mù<é¤uß—œo+&¯<ñKþî_hqÙz¬2ÓÎ/¦’jÉÔ¾$äˆ&‚ͬ¶ƒFx+Uœñ�Š3»€õÈRÖ¡?ûÚô×[ŸÕ=|mtul¡ÙÙV·`ìè’‘TÓ€•௠T §|x"S[ÜÕ:߫ӫÝÞI•ötÚ–Ä'~ìågIDÒ•tULEì·œ5»?çÙœŸ"¬ùWVnÁzŸµ]°9ˆÉü˜/IÊÉ\ɉÔA$øÊdE×RQ†æŽæã±¯¾,9×¼h�È|n65Š·£ 5ô†öæZ®tf¢ nê)Pj yk‹D C§ãî×í“9OÍQ6ú=eǪž¢4·©SÙØPéìN§:E§¹ÕÄU˜ívÛP·»Š ºÌ’wê­ÛsÇõÛÀËÊS»Ö³WÀâ»lØ~ ÀÊ5^[!3Iâ("³{ŠÖ4Iåù¾õžIF±ÇÒ¤»šRù/i§?N#-dê¸ 6Îy-×JDšu&¡ªÝþûŸ�W·j�µ÷÷§Óicú±!Õ`ÿ Ùlîç“�Åû~|ù­ûøû·³‹Ó€‰Ñ8ýùcΣ±zþØ“ú1$!¬Sˆ«)Æs§Ÿº ÑwX"ÃX¤ö.b�G<Õ Â¸Õ¡æî¢ú-y’óE¹ÆñÙ"×<åÊa§×—'2Õv(ïköû"òc fn~‡ÄîBq=Vi-'ÉR«yñý¯Ûë«Fªœ;ˆ×Ð|¦­fÏÏl±dî2 u4t6X¬Tמ%Ž^¨µÊw)�9š[�¯n,h\ ÊŸwúR9ðM¤5Ët¿îýà‘ndJj©ço Ãüzšþ¡dÆ•ž7¢0IB÷€ÖudCÎõW€‰ÞXsäi»‡Õø¸°0—(\‹ì µE³V1(XEJ¼³î¢@Ým˜Ãb1Ÿ[¬F”„y~Žx™g~™g�ÕXi) b%åšLÉ„3�Xn§ß“ñ¼fOã“¡Hb§Ð´0Ò~/«fÝÈ©Ã/ {ðw&c+u˜˜Ð)9}Å@Àøeã| buÇJúÂj"‡-X²6c6 ^›ga HOÕì È"œ¼HØCÖkTd0YPõÛ“»š¸ž¬AÃ]yr$'¼+2¬ Ô�'�MR) ã õ‰– 28VPµÇrœbï8Ièr}`º ðÏ:�l^Âþ"d⬎ÌSëáÑT¤1è,Rh(wñsFþ ×ú%ÐÏ ý�‹ÁP¯18'r¨ˆõ+ØÄ¬Èõ<á�„÷u0«³lÆ:%PË,˜lå¥È@/ …ö2)Rí.`¹£!Ž$tt€p­°èóÛ¾aÕh2ÓÔ‡Ð-_ÉYDùõ¤2CX•If4T˜ø¦àó³�˜|ÜȤ¦Ž`«Ž}M9Å~謹ŸŸ›.¸ïBB?ã·PøéÀq×ÈnÀ"?#¡+´ €�|�Áq"£§ m¿_'£je&t�ÒW“ÍžVcî®B/³0'¬Å:«ÂX‚Û_6â1Ïbÿ3á!¢VŽÈåͦ¼©I“-—•r¥èœ C¥8°@ìs“‡v`�V/ž¡>m›“”–îè7:t¨D�hújõ(…³dî@ìFöxXФÔtð ø‡„µ•ô°#êu²“€÷âÁxÿ(Ý’¯ÃËc­y›_à_»µR!¿ gÐÓ�cë(˜”‡y‹ÎÀ,¸ õ°‘AÔ[M�ÖýD‚b´LäH÷i}qÕjBŠXjE\$Îd?s?dÕ&�¹êŠODÊ/ø¾í0C®^•ëÆ\Ío!È‘�¬ñ#_d´eá'ÄÃÎ46~F 2�üÜ/r>h3ª*‹vYsKÏì®ê¦D©ÖWÍùtð·Ä¦J)mNó#à<˜þ£GIÑ‹~PĬ{‡x¢Õ¨½ÖŠŒÙ>²bG{õÿ�4Ÿâ‡î^½Ì0­¾ÇŽ÷‘ÝQeƒì¬3»Á–¦0Ì!ѽ¼Ђ—ÂlꋚEþÅ:BFÕP??¿3lË…uëZÜ?0euØœ[Á§OÅú&h•ðne}|6ëDê»àÏ» üsSBσstñÏ1A{aÎÕiŸ`TŽÁšŽ„YðÑR©»À!9¾Cè~Ëýûî>}uŠQ”mÙA¬gÍÌDŸBÎé¾–Ø6oM‚BË ÌœÎð&ä-&‚O�å¬Íšµf�Õïê þž{8j¶!«%S<çj¿æD êCÈ6›]Šô/øWq®ô÷�mµcÆêè t³ÝDá䃆ì¸ügÔÒT+jE~á0�µB^›èd¿Â„ïõÃ>°ù@~w;Ø’«Ç®µs Œ�µÚMoÞjæÞì MѽñæøM¥Ô~¥””Ï@ h"Öýó¤ð((…„øŸ½9p­ôî‡i4” †\ì]¿ ‹˜‚ƒçëOaüÖ©½å‚9B›ýȤ—(œKédSJßN¢hE]|p0M똕ÆÜ“±Ê¥¢h˜”"¾9ðÍ‹T,—`#(6ïs#�&p#õö`Á:o™ÙÜ]D`«HÇævçæp‚p;­j6z% ÀYFIež¿”8ÔR¸f)KáјÜF“=3ï¶‘…§à}[ÐÊÖÕCŸç>«È2f›`—tl;D“9^_$pÞÿ:1ôYýÆô)5©˜AÛ#ø–g`‹zm3ñ·Ï&v³íŸÕQÍýPýÜÿm3ÃG"Žñ¦úëI>KvLØfžÞTu†³•9“6b[ö`:ƒöôá)ޱC�ƒ"h8¶®ÍoC„žiöýð�©Û¨ÕOËÁ á§ â嘵½¶Ìà�y0œ–øÖìnL™4<¸ø|`�vL˜%’W¬¾°~š²¶QÜ=Sž|‹" + Z}^%,Ù——ž™ì¾Û¦‡p&`®:›`¥z&ûP®ÙnmhÂÖ¡¨9í ·|‡È_˜` söî‰Ø0g{uZÀHó°gŒRÔŸô'uˆ¬ŠÞ¤°7­éŒ»÷ê¡¢õrýK¡=•ÓÔ°Æ”Ÿ)·=Ù‰õwµ%[^kC¢…á4¶}#‚»9Ž£•ËÐZþ EŽ÷.|¨<þÞí^_á;e…¡x~EÈŸÇ`ïúUyžÑ R™7çùƆÊÇ-\¾8´ˆµÖ€A™Ÿò~8NðÁc[ßåšË󡜞).7�¼ÏópPÖè^€[ Óéö·9Yþ¼ûÈL˱ö9J±cfÁT.d¼ô¢€opÒÛßÖdv6õ¯6³R•e)¥Ú­CVËd®»äTǼ]{P]þC!&np^ò> 1µ¡yÆe¿fÕ=–ºkT,giCÞˆEöh`Ø\Ìè*c¸Z!«ó4Ý¿ß|;‘£L¦èœ-¦ ƒíÖÙûÇðG8{Leñ·2Ò²zõå¾Îv3°²Ì$3TAʧµ?//εÎn8¤H®;nHðµÃþ¸¾í2o‡Â åwU¼q >¶ C~ÎÃ ÄÆÂï‚+áÜ€èAY⌜îÏüétê£ëý±JŒ’Ø×IpJ¿äøKÜqÒÖ_5>Aµ"bõ…ÊG>Ôð;ø‚¨"´òˆoˆsðGλ�4n#GdÌê¿`‚/‚Íæ! D•Æùû÷›Í£ê·|rö¡îd!ðÇß@Š_96“Å(¸QÄÛ^¦:¸´µ½\Z?ÃX‡9æ®7àëL_�µí¾ÈïÍ7J[tHcëÜÔ„õ)UávûËÇ=ºCU»ßŽFFAÖ›vô6]Ê£´1Ôî¢RÁÖ�æa¾ZÇØ%í/Q«”Að V?!_¡‘»Þ`:»îìHÐ(&GwYuzgã5\€þPK ÒV1]imunify-security/assets/ui-app/UT ëÆ«jëÆ«jux è‡PK ÒV1]&imunify-security/assets/ui-app/assets/UT ëÆ«jëÆ«jux è‡PK ÒV1])imunify-security/assets/ui-app/assets/js/UT ëÆ«jëÆ«jux è‡PKÒV1]P¡cî ð2imunify-security/assets/ui-app/assets/js/config.jsUT ëÆ«jëÆ«jux 臽RMK1¼÷W,½ä² BÁƒÅÃbW(¬ZP𠥤ɴ}˜M$Iwé÷u[lë꡾K>f^f2I-}2\^Ì&ù}Q&׉°n"-Œöjƈ1ï é+C°±¿Ú¦¼,ž‹ÑlüTÜ=2壗pUÒ4Òãj¿ÜÖ‚ ÂñƶV¤qK&Â3ýi¾YA½ÎÝ;~dHc\�«HÎ2ãEÔ„†�„˜~7‡ál¦QI«³ ¤gêÈMÓï*ûA¼y'™Vƒõ°'Z¨9Ç�#MÚùQ’ ¢k¼uMKë<2C!ž›Íßë×U2Î2¢í:1EV±æ.ÇãKh rn 3¿æ?'(›á'PK ÒV1]-imunify-security/assets/ui-app/assets/static/UT ëÆ«jëÆ«jux è‡PKÒV1]¯„0¦ð5imunify-security/assets/ui-app/assets/static/index.jsUT ëÆ«jëÆ«jux è‡ÅTM�Û ¼ûW õ`9NÏm¥m•[Õ®6•zˆr`ñk‚Š�Âs$Ëòï3v²[Uíi}°ñ0 ó>`µbߎ*° ½rÈh´XHÛ4Ö,ì‡õLhÍœ0 ¦f`NÊ[Ó€Á�eÒš€L[Qƒg÷¬Ï=�m rç­ Å �ÏÄ¥7ÒZ"×V¶£LuÜhˆŠ»OZ„ðE4ÀóF(³œùy±{¿_§Z#Zì4Tµ N‹Ž4sc äWžl½a�Þ6*@å!X}^LŒ¡ŒŸÖ¼¥ãgmåÏÿµül-ôÂñÔïjÅÐÖ–©ÆMîþU4ÖYvž¤‚ó]Ä·]@h*’³y”9hX'ò¢ü;aIÁÙGÞ¾¨ð†óÝ4½u¢d—áçÈÛìþÃÈ”ô>~|+ñÁ9­¤@E@É.ð´pcÊ@?a Ä¾Øb�Š{8(rîmò„ÂãÍJJÊu‘�Ê4ýb/~éŠ_-øn $ZÏówJë§ÃîΣa(Ro" 7Ý,M¿–|rU^þGM¢òÞPCis$mp[¶‘Y\ûoî°[W:Évê*­ïg371œuR¬¢{e#ä‘sB“ÒO_•fd•ó%Å+!Q�à;µ�± ’m@Û<Æ#| b]yßzýÑáW£»;Fþaä EöPKÒV1]®Ë‘D˜:imunify-security/assets/ui-app/assets/static/container.cssUT ëÆ«jëÆ«jux è‡}‘ÝnÂ0 …ïû¾™H¡e›�–ÞìöÈ4nÑÚU’ò3Ä»/¥0 6–›(ñÑwŽídn¬ï<¨²¡½*¤é[†cñ\*†R~þ:‹ŒuT+¬aÔçÉ)Iæöe™)ìºÕªh™Ü=ˆ…)‡tµô��5�lÉíœ �‚Þº–!b",Û³ôßך샌ï÷jgM¨5,–YÖ퇴?Â6‚æwÒÛ–ox–UM¶ªƒ†×‘÷ÀføÚ+Ùi¨­1Äš+'vIpo·ÆbS9éÙhè]3aÜ*'RÛbE>-¤m…Ó4÷Ûj ñ0´ËÅ¢u„áž§¼ý$ oßY‘#s¨ï,óBO*6,}ˆ (‡ÐyÛï:”[ò£v Ÿ=Á‚Cö¥¸Vƒ“€�&™¡jšÃé¬YdTq(WÝ)ùPK ÒV1]3imunify-security/assets/ui-app/assets/static/fonts/UT ëÆ«jëÆ«jux è‡PK ÒV1]�RKphphUimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-normal.woff2UT ëÆ«jëÆ«jux è‡wOF2hp²g÷ƒ@�<‚X?HVAR„a`?STAT�$'�"+�| Ÿ/V ×(Ê% ‚0�«6$„6 ‡~‰R …ߨpgO0º@ÕÖþz-ÇVÝÁÓ- žed Ø8€ý úÿÿœ£2F™“€*Üo¡lJUÙÜÜQax4«NyU8Õ«+TÕ†ó~r<Ùõ–ˆ¿EwÒÓ)“ò-ïÃý‚›Þ©tš<ÍCßNÚ”9!±z¨a S“du}2:´Â® "á ÙQW8Ò�xÒ‹Å£Òâí¦­-ŒÀ‰¸]p¢z $ /ï ~ÓMÜŠŒ�¿ A[üb�”  —ÿi‡Š7Mj#©dCe¬›mÒ5{˜GÖlœ¸f‰�H»ð�ßxdðÎ#þ­°!ƒ¼~àN‘²žñsþìÉ“„„RLêÊ÷— ¿ýæ’G¨8Z´Šš¶@Ý©˜Ãð8gÿ’4i#•$m*©ÓT *ŠŒ“mÀŒ©33vÿÖ–3ßóUæz^ ÐÀÿûõ¹Ï­ºUÝDF÷’pacëü—°¥åÃj¢"�ÙM¢ßm3Œ 7'ˆ¢bãBÝ”ÍEbîf$fŒÍèM_� - *J«Ã@+0°jݺ¹ˆ|ƒææ¿ÝÄ­“H,"ÑBˆäÂÿ¼›õ7µŽ(Ò:VD#„„4¸ !ÁÛîœîüîÕ�?UãRWÕ†ñÚ3|Ä�ÞSÎXžÿˆ*ÿ à=^"K¶,éh\Í\œ=6¨I/tiñF‚'”ºxáLWÎ̮ͯ íË™ Cµ’ŸÉLq€,ÓtqºWÚæŠÒÄ?êý`€*P� êÚ›¤(¨ðXþû¿ôÍüÙ´j•Zñhޝ`„·»ùÏ6ÿÿL7_uígÄ+.¯²nn÷� …)J H¥ :E75 Îöþÿf¶Ïl=õ¶þkÑ/þ Õâ?à6Áµ«hÝAu�E7‡…ø[*-$Ç’£¼ð²—þüÔû„ÏR`5–}3×?Ì·zH¦›«B\â¦kVAý2T§,ãê2¡á}ÉZ¨Û`·ù7ö¤sæJ@¨î*Ø‹€ø `ní`Ï«æ,HפÅÿßTýÚ÷]j('PáãHnf3þºh6ÄnÏÖÛmQm7sg†˜yCJ;3 ¥Hù Ó~)Ÿ)ûC¢|EË?ØYÞ�Ã#H¯@òHüAa¹)„¢û¥O¿±(ºÔ¥*u½ð_-›ÝîÇV_ŽìÆ\ˆówˆA!ÉÆ®pï±âRýÛûýÖ�ºB¢=³š‚Ð1 Ìqp|8YÃ$�H=oþh) mX¬éLÖŠ¢À£/iÚA”‘ùÍsŸûtB·y^Ý«Mņ`ƒ¤ÁsÏ1æ ÃöT‘r �æ?¼�èLO¿î˜rM/—cÌ%?6Íí')!/'àì‚Ài1GÙìÞ è €ç°€�ƒˆÿÆø�ârŒÁ•øœª€ɬ÷%³|ʤíÞcä>/�uØ« ;íyrÏy € 0ÿe÷vËúù´«/‘”âI%FZ·HÊ]£xêö}êî)Š¡©X‹öŠìIÇ:’,gƒ"çÎ×Užº»ÌGCV’”[Þ”ïÜ‘w¼²½¨$ÔÍ ¦KkFg††LeèLƶË0ìÆ\7™{ÓÈZƶ­u:�”ŽÚêìÝ»¿¥Íî®ËÝÍz·z³§Ûõ¢vÿÁ_±æ¯É|MÞw°Á½•@¶ì°A ÒE¡1úÝ-šlUØ "ì¨M¬3v:¯»ÅÍ=Nè%“±-²V§¦úä¨ãöaP,ÐmèÖ´;ßç¾°·È�l�ØÜÖÇùS³x€ c±A݃Œ3m5 ­Ñ„NøQ&†ÒF˜ç…Ñìþ$á%dÊEL> ­=ÿ¹Pi濨…ü7±³ ´ŒÅ¡�G“\ß6y ìÐ5'³ =¡Ðœ ÅÕW`ì¹$‚6€ø£ߟ¬5_@—y0¤ºÚ¶]ðÿUÑ„OÚÙVÝ$�ÓÈíDKjØæÖv´¸f—Íy)›rgÖgu¶¥(Y˜)‘ž¹7;7»ŒJ‹¸WÏÕýu}­®mUTµ°¦ÔˆêY÷ÖÎ5ª ~£œ(;K}YV$…SJJF‰)¾å`é^âŠ�5Ç¥hŠÍQ]q:*¢"J"#bÂ7F÷ˆ ;ÝÑíÕ*UªU•Å:úCŠ ´:*Bv4ãš°ëÁ‰‰ Î(žõ‘f%‰¶¤-Jw€ /×<{"ˇ�lxnd³&‘u‘Ô8Ü@Ì-êØÆ°— v~¤8û’ŠiªIú©.žG H¯çðkL;Nòò¿ú]YJ�ߤXé¯0âìT¾ÂˆCe×| Ó²ôjÉ[ö‹÷­ƒÀ8ë_ñ@—í4¯míaG{·ôؤ.ÿEоP_äâû¡@@öÔ0{[çû4f^¡@»Ô ¯«O›š ƒ°'»l¸qöº>í8w/"Á#‰F|Qb¹2ñ­%ö†›‡Â½¯à8ÿУ”׳Ÿ!`zQ‚.ž– "æöÄ)uCdÜ�¸µ­V_¥?ƒ‰/ Äïc£üuûWÒ8š©®W¨^í|";ÈÎ_¯ ¯zûX®ŸÜ@<ß]R÷aŠ[¤^ž)8fPyf9/œ ‹C¨bÐÙÄ¿Sgˆ×¼=‘Γ‰5POPöÚ{¦ÒóÚbª…6UœYÔÛìg²ËgkuÉLBÆ.-o'›e´XÏüÒ}yÙ}øDä‘RLjÕ@îh(9 ËAø³ùÈ•~ÑÏì#_¢#_ó{G_Ð]†’+ e>&Ò†ÀP?;ÈÍ4g]¸R®T”lµä/P?þ8= Ô²âÇlý°å­ÌÄ4P´<™@‘ †x‡Ù®U ÖÀ¡]‡¨aHZ¯tRM~ž–•5I®!R†€¢Ÿ³0öb?aTæá^¨�·µùgÁbl¶îÈ8=s5šÀÛÔÐ˶Áȇb)ð×Õ¯0cê®7?r„'²*wv‡»B!ºl3<—NwÖt±è뫹�¡ú©ócT`Uo‰­6œªb±ˆ5 ˜ÎS…ìã0Ê@>ÍÂm�¡?ÖÄÈËË3h£?‘à+ F™Ñ Y•Æ"ð 6Ÿ-�š‹( ÖÐÎØÕ¿Æü¶ü ëÑ×ÀÝJM'ÆvJ»‡X7Ûzê÷“�ÄáBq¢Tm1׳”RÎ’‰²Å˜�sKäaÕ2£Y_¡s:M¬©2{’órsüc\�{ P€ók±�Öof0 ·ð¢h‡idýJÈükÌÄ‘Óð¡þ¸ý™e}&Îü –,‰÷ÿO½iê™\Âögˆ/ü°ôßã­›^þÒ«¿Àzõwj^ÿn|í0Þø¹»oü…ä­?£¾ûiô÷¾‡ññ¯M}ñ]Ãç~¡ò§ŸÿÌïM‡Š{”þW§ßH^ýô%¡Ïüøâó_9[ö¦Œp2:¦¶ûõ)13»Æ°�M,ÆÔM–º×QE*êí_--/»µ¥[+¹«­¬™VÑ$‚Î&ë_¹ì9ÊÏÇÍlQÿò®ý��ýÝþ‘ÿ¼\5Ÿpx€¨fíJzJˆÕÊF‹ûÔM“’ÃâîÍr‰9ææ [¤_í§�)�vvô©äšc¤OÓ—™8CöpE½BGsÏ%Mwûý&±Ž¨Ðñßo­‹ˆùªþ-¾á^ …$t…ç8TBF±¨àÄñ(Hå ùý óß/Ù#ѺA¹ÊHPv7ï§®.ZSQ|‚¸>&ý™O€ëµ­Eë$ow€ 1�Œñâ,¾ïílHà$ ‚„M<_ýkT�­ìÚ{œ›uJÔþajt­ª=w¢–›¨lD‘)ÅoTÑ·ˆÜ¿Dww}µ¾B¼×‚ùÁø‡½Y`‡œ�q¾³Ô¡¸°ÊrÂ&o 2p-óR�‡‰Ym´¸-X€B >/ŒHÝö¬5›X%¹p½KÚDRU¨UH‚Õ^dã6që;Oý×ÔîRó´6ýâVŠ*Bbu(×3V“êh4UˆØ “[Ýp&C¼ófíº‘”´W6<šJµZ£bâæ;wyg¤D™š àñw‡ˆì™T&é™tZÈÌþ+|�J!“ˆ|éáÁl:�†Iì =¾Ûi·š ®^«2÷׫å"øwßyû­yéèÞl:o¾ñúký^·Ón½ü\~tx7‹�c}}t¯ª¢¬üø^ñ±cq“f b†dú#j6´1N£)4DrsòPXñØ.ŽS»jÈ{/6ê�±?, š< †pù¤°ê•+5; „â)”*;u/f«‹ƒlMÐZÖEhál<‚`yÚèˆÛ¶¶âŸi¶eÔ¢AZk;¢ 'å_ …ëeЊ!W‹8¿¼‡ ¡£$Q~ã:êi –ñ¢q‚gøyîøúÛ_ˆÍ¸— £.GF„|D‹zjçR±hfë§ÁjÕHPÄ(û¡5šìK{Ié¸j¬ÿCýLH±/\¼>é"QY“!4Æ›Œ:®ê³úQÆ��N¦7›f¤çî§ÇB^Ö% Â*¯(£�¥rÌPSyÀ=�ÂMêfŽ/¸B�©µñ#f»;G–90‡æ„ÊèRÄ,÷g+ý� <„_B,Ã2I³£øÓÚq�•G šb¤ÆûA7'Çm–ä«:;°¼³¤_B8ÅKGCÁŠÍwP«6#5Y´k=B\$ØðNã-.pC̘hë^÷å®1ŠÎáZ·­‹§áåf<ž×ûKW3-lqÙÓ޲͡¥˜_ãÜ]bË÷ÔQ$Ýn)XÎÀ:£jã8y‹«œ‚…„ÃÙ�DpDÉÙ-u+]“ì0÷£u!ATŽÞV·36q&Ï‚>p›ðÄÀ˜Ý×D-sƒÈ¨x÷—PãžÈjUhFh²�wgÍ›v0'�  œUÀÜŽË0:§a4.ú‚Q£áœ&óÜè\¯PšÎäçb1©Ä«FçP$ƒ@;ý²d'%q8Ž��éÌï°*X›Ns²òró[œ”Zx\d w^t½æýÄݨ.H|ìUgž³8ËuØ\)pïwžˆGd`ålƇ–¸q‰¥>&Nƒæ~š�_¿4¬±\…ó)|pšµöǽH¾db_ç722«eÞÙ2½‚¤£À*Çkx0¦mÒv­C”Ž…àÄl×3 ´—ZhãDêÛcìpº5®Åš^*‹–§RÛ±ƒŒË#HÚÞ}]/’Vnt¢V›`]vKƒîDƒ’:nõ!ñ¡º8Ô¬Ñ\0Oß,ð±�‰äž@o§À%Î"Îq­rëÕbi±u÷N—,[ kQ¾>GY�¾ƒƒÂÝDã*†G(Qq�D°8ÄKŽ‚.=à­X\á“#W¹çrõæËYYkB-Ð5ú‚J`]ÄÝuX%�Mvswž–ö9§ˆ&–léC®~,´‘´”ñœ„XΊÒ¹+U”>À¶rö¤¦Py±Å]o¹ÍL3ëÇqê(.KvÖ}´¬sˆ<`3·É˜Ñöf»RÏÞeCâ—/Zè÷ìbæÈ3*¯±Ñ å pè•��±Êþ&’¼^ZÏC” ™€{A§™K™ïéŒÕ{nEÈ`òöx„ãü©]U ¡¸Ë¬+Ã…ÙžŸxN›‘dÉt™¥ø"xµT À™#{Š„)Áß{¥íwd‚L—VLå½,ýç ?6øœ†ëhöu‘’gÚ-�u­ô=¨¥^t@§L²ªVcô"€³*FQ'Kc¥]Uè\¼Z‚?dnteB¼8:5v6 ùéI6†ß ¿zR·HॾÁ¨ æ Ñ´l34-è ÝK;Îft¡´¥SO±D³-Ÿs€d.©Â)*Ò|˜ØÄÆ#¢§>`z2·2âzÁŽyÈŒFÏC,JÛªõDžJ[‚Ý^Ä}Úç,´EqàÌCÃPWdñ!ñùª8Ñj%Bãì·|h©Úss̉?!IÊ�Þª|\qs­÷§mgêÛÓT8­¥bÜn“ÚR&¸Æ�]l3£sbâ:ÇZ{×X ÙžT>öÒËè_äo™t ¯°‚ÜXx·, Ä;‘SÚ¹´ëÄjæ"øœu},ΕóëŽ{�±�æ,ˆÿˆ›F½]^Îøž�[«ræ–Ö<ÈõNSÛÈ•Ó3fÚýaÎ�%ˆ?_ðÕÄ< 8ç’XüÍ¿1ç$+&c=ƒˆÜÓOˆ÷˜•GYA“I˜¾øpdBß PΈb”Úì™VÖfºøÉ%û¦Ë¾1.{ÇÏØ ‘qùÃþ:R¨õÅ r!g#E.­ïç ç÷GÇ›�K²ê†þž±3‘LÅ¥W�àp*ls¼2Ÿ~¬½o™°‚¼RÓ“ó�¯�ÈGõÚ$ótž[S™ñžàŒ[ŸœPV?`ú‡Ì9rî‘+~a=ç?wа/ŒLã犖ƒø…)· (x‹úÖ8‚Ƨg*°ègjbFG,$Hâ[É[¤£ôäÊå˜AÂ?ç8’Š7 šz¾¥[x5ÆsÝüShs>öÍɸ6´Ó/¢†%»îVîç^4Xe°¯×v{ðž$|”Éë€D‚Ôì�ßõSºñ8=Þ�ck€š´£ªä1uU¼�Ð�&£þÉ´�€èéÀˆ°-�½š½z ¼à6ƒX½pN­°î‡ìÞ¢¢˜›EÊž¼ÓÆ " ›¦Âœ™lŠÆQ,¶“š°X åŬ¨rW´†¡È^­jE¹…¿ ÔoCPí”QG¾ãB\ûõT¡BÚ<+jB<7#Ú=DÏ}H\\{›#×kª%q`ø8Õ¨ùPœL¶í–œ ”s#9Na¦H*ÒvÒJwvv| z•üÍ6œ¬Ù«::}¦˜SÜ™9Cùì9kÓSì�É0²9)þ:§ Þœû#kŠ` Ò]ÀMuK`°N¸”¦Fyúþ× ¦Æ:~R-nC¡‚(L`Ø–“i["¦8ÕPey�±ðìTÃ�©çk€ÒºÕVÂW oŸò©�Iùõ±Êü;rµê ·ÕÐp˜ÑÚ2ŒH^ScŽÆä_j³ÉUýoãXŸìêm”@W·`'»Âu±³…ÝÚÞ¥-¾/×'žuÉ~TLà…ØkõprF\N¼ýó1^XÓÜo*¹zì“QKfÅË⼊¿ ™¢iTS•áŸÈòÙ£2œåF³‚5¹M×1§Ì:,� 2J‰i±Â—¸ÇJÞ*5ï“lD½Û8_ƒÓ8=¥çº3›u¡º¼lcq÷½Ü¡õMÚÚÆÆ˜æ K t•6‹tИbs…Ð?É5±–JM]}x²¸Õ�@>TmÚaá…U5O¯ehB…­Õfd[ä�$YLÜÝu4XüýuJ”à¤N烑ê�>'9°úÉÎÐT¾3F&íeÊÕ€ªê¾ æ¸"çÆ«”LŽYÔ÷wŒéNÔ:N�ŒXfØ¿€ –¨^b C,síg*t‹ô%VÐNÃcˆyÍ(ëª ¶j¤;bKÁÒ¨¾©fÙýaD†êÛZï!õúظò\Ä�ý¡†Òò£I#‚ìĨӖ¾Ã]gJ*K{�îHÎG—›Çbõ#Êiá5I'Û¬÷÷’Ïj[™’âñ·;tòY±3—:’MÇ.YÊ&Z2Ø K\Z{¤…Ñ£ž�ô ^¶ïJ¹$²HÈz"�÷K‹8�Ý+•¥ F§á…üO‡©.[†×Nîgò£`ÕœO›[ØýçýçÄ|„µÞ-´X׃©füMuc`�¤‡î\>Z9†¾j›ŸŠ3X–·›m9„«hlçâ;aá䜘1b�·¶±c$+^5-™]®ÎŽÛ+@˺¢V̦znÓLl}ŽsÈsK貜L©û¯–æ6yüe¸¦ßMàÒJ ²,ÄȬ‚¦Ê¬.ò?-ZÍ]r˜w²Íª9\*¶ûëU�68ýÝÊ) iœ$VbŠ´¬ÆÑ·¬S¯GK!Ý÷اl �ôM¢e|G(º¶CèäD‘g»®¨úS' öjF~„Ët TÔ™©‰Ïf}©4´SàýÔ£¨{Ö lFOÁgÐn£®¸v•UOÁ|�4Ä­MQ{åJÏ+X×ÝÝ^Q[“Jã”4µô© ·‰ §ø8s [tBÇ‹¼&¿J®PSj Äå¦5»2ˆ�tO‹±^'ù�’JS}¯ÿYgå3•È)>82dëÖ™ï �ÜW³è‘ÓËNÿ#Y½¿Ûö,Ú´mA¶%M<‰Âvø×7ºÿ’gߥ«ù1¡eŒ‡k;``ÊÀýõÝò;ÏC(ŠÓzÐæù` µ(4Bk¯ñ ªÌ¤�yS÷Üìj8Y]\PÜ•>ù'ÛÊa¶Q@ N6,3ÛÎu*˜ ¤Ö~ÀÎY·ZÓ‘Ða`ÈñCv›<Ú2Ì x&�Òë[TO[˜yÁ6p“k¥»™t«î·­@—oå‘ïÄrb‘dDÀ¨p1hq!H–·e‚¶"–®Œ¸¯0í¥ÓÎþyl»;ÚvWr4-mÉ™ôˆ~iÄ+np�Öî5'9¨;ÝßùÇdtJ™4õ+ÿÕÙÚê¬F\s¢³–™>Ä$ræ�<Öºð3µ¥íOªt1P_¾\`§|rgÓˆÀ˜z:š¼þn�¼ívͱõ£Æoþn»ÇN�èZU«ß¿½_J+¹4ôjÓÿ•¤WÍaÅå£û¢©YÕ#˜ "^ñ<¶>¨f}QìÓfOÓ[;ò2ø{}3|½œ“�¤­Qæ,ߨDRðÉ<éÕ0úÉÛ@ël_óÛ˜üN×DwÌÑ ß“[ð[û�GóLèí ™pžçÌ; L3HU¤Ág?ç”ãi³ÃF¨ÅY¾)k ³÷cý‚Â\ýí`zÖœˆ¹ñîé—f�Z÷ý‰›b“Dîa¬t‰Z·¶æ˜¦ë˜‚ìÌ�ZGw tñÔ¤ÓáR�󚲓i1Ùá1Õ#�MVG¡œ•‚âŸu‹ä?/ ¸�s-G”h¶'‡ï9Τʪ„ôP¦u'•ŠÔEa£Ê‹’r�}eS#gäÇŨ`ëê@ë&‹ÌÓ¯ð„Ÿƒ½yª·™U4J}çºZ7ЪG9ù�},H¬p³d÷®–Ͷ”]»Éº[^o÷Z7B{ùkS}�WÒÏy_“U�¼@¹w“méöê¡jCs¿Fb�zçe(¼Élàm àÏ1r=o™rêO_{?Ù}š�œ›S�œþ�O&¹O°��h?½¢kkuá3‚Wfþ]O`„’ì£}ÞBl´Ò;ÍÈ@Joº~£ÖÇÈ@²Ãf#ôP— Éœ¹²<1GKw™ÃÏðVQ»œí’�W̦åʬ–….æ#Nñ¥‘~öh·|L²Íñ�ßÀìHæ2g(±ÃÆÓ|ÙÕD¸Ñ?·ÐËeûnçâ=8ŠëïŸcÔïPŸ0o1k+„W:L 'vLŒ™€ŽtßÇ¢ÃV8ãè"Í+Û›�ØÕÂ~äõ—¨¤$n¥?nÛa0�‚}ny0b«sxñ>¡ôhú€ÍF´#f£�C©úÊ&íèoƒrXgšgÛïæ†õÛŸiøÕ+åpV±ž~L9R22¾IÍ×½qÜ—ºÙ›Ô� ë)—Jjé§h„ª¨ƒ}D#é½Ú’Z¥Õ¡ $㜻ºnéí:[Ò:œðþw‡în§sÏÕ6TæœxüÐle݇˜Õ•Ö•Õ�ñ¬úýÓI™Î3Õœ÷!ªn-j ¡Ýÿ•Ä)–’Dê`ÒÖ­bõÅcÑC§ B»â, ÌaÛ ù/Ý´·¢£7ÀÅÐ òØø•ýèbyó¼3MçîŒ ²Ï\˜·ïÐwÊR¢– ¯-ØÉ¹£Nv¿H¬˜ô,Åõ›c#Ìï­)“¯í•U��[£` Ú©Åø¥mA›ÜØG¬Ûì"ÜÊUG^™Ì2?Äo©Ó ÖñH¼ŒRßd Ë2˜—¿$'�Ìýo,AhBæÚ°ˆiããQ£—(†×L n7F^3­`T$†åö;–å™E¤ 2ˆôËŸ“SX7™/!ö¡—«k&K’¾ý:i…Tþ6ñ—®� ­•/ÊÍ-gïÿ�Dòzo?¹ööXÜHÑÙËد$ŒŠD¿ÜvÇò‹ˆ#G 7o.ùñ_3<˳”x…‰Õjü(ˆÒ*zÂ!îPÊ9{Ü(øý¾ùñí³s’¹í³ãûæü?Ô;¯>•¥gÂ~A‡Ó ŒÞbá…Ù‹|ȽcÁ•»#*Æ cpû ?*ä�P„—tºü¾[[æçÙÁì"ÏUGÖxMNÆ!'�‰ávΉNÇòsb Z8'¯0&¼r2@t¸ž7°ãX>-"¾:¸‘…dTaÍÝ}³½‰Vû4ht³d€õI)Ö°”õZ�EZEÓµBÞ%9ªtòIêZlût]ਦqä`ö=ñÈÖ®Öî¡íÄ;ôlh «…MCÍM8QEý.ñ¥Q‰©'cZ.!i.˜´€¨ÄêsAu>tÝL3.ßÝB¹=K±ñ 9ììŽelJ©)+`Éüb þtk?‹½ä`”e»ôÂLÕ<Æ…Jl<Ô6˜«$ò8 ʵá`F¯C·uÿí|ç£mPÈ`ˆ§òq¨êþ¬ˆø´pã¯%«guí==÷ó·½°Þ¯³DÕrÞY;õˆ'4à³¥,øöR {ÕˆÞs|àÜ ÏÅë'çÏKéûÄ÷2á†Ù0"t÷4+“•e+Š^€�5é|,§|”IðŸ?°Zuî7ÝoZû¡œòY&ÃúXÞó(7'û––ú)š“‹×j_Ãb‹!M©¾ƒÅƒ7Q>�EMEt@¦tWJÇ…˜:0âXV|Úqù¡��÷¥€ôuäÞ^×Sòán‰»‘Ë ŒyʧJ™ò™Ò7Œ×«Ë "2÷i™Ì¨™t�¦ãpáÜ©€Ú‡ÊÖöÿ�Ù»ñì0\R™¢�ÍÙ•¸‡öÜjw8€cNÝpª&ôØQº/¾«ñ ŒƒIþå#îQVˆàŽpßÞùíe=«ztŒ/þ@îÁÿ¸añÐè2d;û6Ë*,«! Bªqª+} ¤C&•ì+7?aO6XÖ¾Ì%þ83Iÿûå"QÕ¦?ç×q™óóžjI¬ÞKéy”?ÿƹlFÕuê‰?=Ï÷1NQ“ÒR©‰I¤§$¤¦R̿ޫ3û.¸­;™”Æž¾*é| H‡áš^1cˆº…öø,‚^yc.N—§˜ïõôJð¥QðUQ‡úˆF­jOÕ*¥Jî)îäF5ßÖÚˆd_êf/rOPX3èè�ÊB¯ÍàÿBE/ó‰?¦—Êþ¾ËÕ™ ʨ4“}é\¯@8«3ÝnMá³RnPVD¥Õ»–�D@öZs`–Â=ŒŽÃ…q'DõJ=Õý™ÏKÓBMŸjœš5çtǶ½DÝ0ú±ÿëìwÅÜ0\ËÇ ƒ4ª†ÜÂÊLàŒßÞZò mgÕÏòü>ÿøù?N~Ý»Ë𱃷á™Ò[)ò šô1 OæE×5¶j±×Ý1HŸýº ~¹uç…õǶ¬ÎjB5èjehO¾¿¥a[ì¢Jƒ©ÎØåê@Ò ©m£ùy‹²dͽUY¼ÿ>‚¬Ö–>FfdP~î‰Àì¨Èàì¹Ø|›ý6kµ’^¢‰ÝŠ u.ž4 Üpúû~iqéAàd' ¿À¡yèí¦$Ú(ñ>ùþ�iné>žuè `4 ðÆiÒ4$ÞØHt¾N³Gó!m=¦_�EäÓ£ÁR@ ¹êúç×¹üf e_1ܶ¥Éc7VêŒs$c”œ„ ‚ðÔíÇ9"öJZéaQÄx¥ØÚÃ:ÇË5áp@TÖ¬ïŽWåáú ÑI’°³_ÐØ¡h>æÅ¦[ÔWSY{T€TÄ ‘¾¿?Ž¥»°OwÓ­ýœwݼµ" Ue눔ä}IÉñR%%‰Ån¬h)±¡L"œrµ³7*%¿@(|�B‰V×UÌ­¼¼l\IuEÎÔŠU†õ©Å”‚â*å-‰¾)šhÝ\…¨Ï!Ôʇ’XµãºÅ9³þzbTÄ>ì¾–F†cÜu—Æe#6dy.CYRÕÖüVw§^{6_ÎoT’Êiú).¥ëî9Š¿¡ ]Gt4L½ÚÿÓÒ&ýÀüulc'zË]O‡Ÿí…eE^•1pþ…SÒg.(R7¡ô­Q7䜊xí —neXLpÞ»¶(ê[ü¤;Zß¡¬öI[ ™âfNý9! +¹�¬y§ÊDØÑÉ’Êí-<£Yð9Ñ_ gôE>ž¯qÓnÌOrmYÅÅ‘»ÁøŠ°Zí&k÷ôìRU[ƒ,;‹-þóªwf]Ù W+€˜]ÝŒŒQ¶BH-ª•®Âõh€NÇâ.J"b&×uf3X1Šº�]X�2N'ãqÞ 0C*Ê6úÅ`ˆP Ý$£[Q 4NJíͧFÍŸC0ÀN Wž�Ç-ÀíèNböa@å‹:) ¬™ékUVéSŒZñ9çS`±¬Ð½FLWú{‚2y"Y)ÕGK’ÐÞ)äF‚²êë휳A·—ÍîönÄÖžNäºc�·VÅu–ž€qé`<Â쬼Ê#aa �£Pž–¦Q,ù!KS |S?'©f!¯pù ½°N¶ŽZïÛŽmšT}Øïå¾½Ñ(»QŠX ;×NíeN¦¶3yõÊL­nn@ tÎsÕh%šô×LfµT*˜ÒêÀ0�ÿl„àvL¾«¢ �¬»³Z!¥âj·2åÈlÎͤù¼Ð¢ªá /e͵ÍÂÙÄ€Ôó.†AðÑ›ÖQï˜}v7À‚«Ÿÿ}aSŒF0ÕjuNk',;o¿öÿ¨iøkiçzX!5öäz(îþ8à Ëe^Qï´ Xi`\,i¶m¶±R®šØæ¨/š1ÖeQ”cî£m[•”¥»› ê„­�VÏîÙ7¾ÈþpÒ‰qéÓŠZ‚žL€šŸ)�ùMîW½ÆQf�ƒ‹ÏˆišF·ï€xÆ`J¾qÕé•Ù_FµúN²’‹…ÉD®#µó]³½øí‰Éº¶“Ap¹Ê ˆøàéÿÏ¡±ßÅ(,KEºwÄ¢—K°ÎX¸õÈdRÐUƒ±à¥VE¡g½NXËcòSi 6KMJBkèp±¾@­×ðÞ Q�R9²ø1‰º<§vQ5LèYW¡)a½&Æ@èJ3Þ€�ÇJŸ[¯,òI€;i¹$ÖPl3³>öE7Žè¶¼ìfWð‰’œ<�C‹žÕpÄ}†[~?G3 ÇÉk²cÎ9eqjʧ¯Þ=QǦéþÄÛ-ÇQ›hê$ðÀìSÄ¿m1”d‡A®ÎšáÂä$^M‹ä­z<±ÉÞT#‰G6¾¦uû½Ã¦²^ QEûlÊä˜÷©ÂEˆ^7i1Q³�Ýõ*Ê2r)—�_Ũ-u†e‰c$éÛ:Ǫ�î¬(]kË&“µ6î-$Çp¡ßpÔ’-Ñ:,sœ+ÑÖ*R¦¦ŽÃ9]erÃN«TÈ™©k¯Íè³rÒTÒZðµSÖÔˆDòlø�.…‚ècâWl<#b>½œ4lm¼¼eF›Å 1È«?ZHDêЭNq¼½êBù!Æ¥8á@í«äÄö¡®íøÎ‡©Ù¬³XMμ à3ñ©÷DâÞb{Ãæ6huJ ¤{»áb\D‹'Rl¸è,Ÿ ‘g:‡¬PÁíe÷ç6à!N-áêØ%°•Y/Ø®õNë eÂW?%*ð4wG‚Dª©GÎ N>–-m"™óç„ûñ:� ‰V?o  Üðý¬¸Jû¥˜SŸØ•õý°7|p&ý{àü•‰_ãŸøOˆŸäaù•z¬ÞQ¿i=ý�9™/Í_6Þþáht™^¢ÿ9�?ó'ÿÈ¿á"ü>GZü<þŽ�“4¯ò9‘Ìÿ–,ÏË+壯4sºÓCêÑõdz¡!ÐTh)´*ƒ*¡— O`‰°ÿ`,Øy}3ýý.8N�?1È2æ–!‚+F£<#†Ñc‰ Äe‚3¹€Ü�<‰¤#G��+¦¦v¦×L_˜m3£š]2ßlÎ4ÿe±Ðâ’ešå5ËWVÍVÊ,îÚ&]Ë«—-?Ñ®Løw»w�ÿÞñ?!á^»úã‹×~ÑáåÇOüÃIg—¬Xÿꤿž,nŒž"_föG¼ÿ0L�/À‚Fô*Pj…ìø7¤� ®ì†ÚZ$yY1lÃÐuu“öRiiÚ& @¯›" Õu¾Pà?0;y\…¦�¥•¶Í.ùî;³fE½¾m�çA�ŽÊR'ßË^ÀñWŒþn–Þ>ƒzaGиVàí¥ºoØ*K †BA1 Söºƒƒ7¼?/×ñ°Þå�ížHlÂèîÄ6�Ð;ë™ÎÒ;›†cS£ Ê¥òô;Áh~Ž :sn{öÀ Ûwœ4UÂ�—¤4�Û!ç åW®„býXJÅ-»Õší0xp NZm2)‘Æ‚˜Ûé_ñ?;ºsÅ­¥¶ h#´Â ™S’4»¦L‚Ó•[“æjÖH-ÅìÕV²¤??‡U{ŒÀù“�ÂÿÈ�– Üí*×�¸‹û„„6Z!h®4U5Bq åMܸÝHßÚ6‘dÿ^†mèV2€‚2ñ%%$@aÙ` æ~£'5¬ŸÜ×§ì0RQQS契ÈvÕÙ6#)s-ÜæmÑyíÛÙÌð¢+s0h½>5°1B-ç x–-Øô (C�T ð÷óšœéŒ¨i¢P–Icç#åqF[¼ÊêVKpÖ¦ªÓ@’Ê"5£'W%îh¼?‘�h �jPŒß_9[L\¾6çð!è? ÜT%†È£nÑŸÉë'ñÀ];ó|Z—7£™B�»6@}w.Y¬¿Ôf:<  ·8réýyø™îXó^‰ ½v‡1·X§ka#dÓ‘(òV”P_¼ ¡ÖÒÒ:i­ž!Ô´B�äœH™¢/ü&Â`”%Év÷ÌF£ µ‚ý'�Ó`„1ªñ¼^GÊ’¬É2T©J™tS1 öª¶×ÁV/Ž3j �„Ç’q&fpk¶´Ãf쎗Gò‚ƒ´QÄ¡¥ .d�»V &£ib2¥6lˆÛzÕ'¹­™Ö)<=WÓXS»{Iι3/ŸÛœ·FêO\V­&kïI½JZ¥3ËŠ_ôdDRëû ·Ô ÛbǵyU Ä™Ñ犯 @̺þa¤ÔA-°beµË+ p£áu¡;¨ÜÔ¹TÀ·..¯¨äå>¢ÛÖ'ã†%l6ôœ)kBÉR>SèÀº-¾z› —HœµIÉähݬ¾æ›Ì�·Ýî5°·èÍGëù ¢|¹:Ñ�g©�@Û¶[»Ð ð(§S[ï”WöÅ?•£Ë&¶|“äê¯×?“aB–y(°cŠà=ª´|9 Ã�M´?Œ=V§ä²Eà))àB‘ð‰Ñ˜L,‡æ1jKÚ4B–|²�d\N,µ‚ž-bñ²zJ§†fðÐ^I43 AÒPËJU �G½kwÀæ"�¡Ó&Ûc[Qˆ&Ý >K Ùh < 56ؘcÃežCPÔ™‰þek'º–À¦ØoRKVT£�³8—•#òº´`7=.¼õÃþ¿’Ú”Ÿ˜O�Øÿëg6óJ+jµÝlW½H‹}R�Ô(Üþ��¶ß‘MpÌÚ!YœìcLršå\Q}µ kQ#žxå1Ó·­¥ï\ÑA¢ƒçåˆ�#§(›è(öú<ºs V/ísG¼é·JŽä"oŽÀ´a‚Kœì á{ßu\¯é{ kùâ%•QáÚ¸ìÈ”€ó¤]P{•Ÿ•€Oq�æ&µ=ìÄR[kx˜âî‚$�JýÞ¸;†#yÈ*¡ê¶%åõÚå’de›ÙL&ýÐüÙ.!Z•,ý¡d‰f]«âh«É%2âm‹  úµ›Á¬xk fmÕ‹ÆíNè`ž ֽʼntw²/›hðÔÌAÛ—˜eO2¥ê,lÞ4®™›{Ã4ÜiPÙõz³‘¼+Ñ¥ŠgÕ3¶¼¨Ì²ëßÏ$\.ìVf%-=è¤ÿ,óP·Î�Õy¾ÒØg4î°?CÄÏ4KùmÕ>ö¸ BØ£>ž;Ë eè],§F–±MŠñï¨ðûÙ÷’Iüè‹JJpCIЬOM¡—å‚’5w »Îß”ó‚žar‰›ðy9<ûSkãÜ!ùÀc~$˜¶>Dà"�z [&åmðF³nÊ6_NrŸ»*$}ï¾ìœ“#A„û8A‰B7‹_¿L2£íƒ³,Ѩ†®DÓYU0ò(PHòî#Ù:¤ÝbÑ…¼hFFg‹¸;$¡‡¯Jmøc,ÍÆñ¦qßolj×2y«Úq>ŠÌs2ElâšÕQ®ÜââQx“!…­5u‹ —²ƵY#¤—<÷~O8œîã0ì¢î¦žjìKÓF;�Áµ%ȶ B§ 0×° µ�6A,”99Nñ"ßnQµ GÔáŠrs¬=�6`i?VÌoÊp4)Ó‘|š4^sÕ¿�køˆJ†€œÎ¶./�yM Qø£êÓ)Ñù^)·Ë ¡oé:W{XCœÄ` EJ°FҜި 9·£©ñ*H|êmùY8dU!áÞqé!WÓÂv£¨¤£€ßoKËâå»/yrDû'ÉÅc%æŽ8XJío ÅòN¡–™ÙÄnX\ìÖ³C�¡tPÈt!,„ûc¿fó´‹"G,!iݱ~zû*›F2tgŒL�Ú¶ºu›5r8k9q“ÀY&^¹ s°¨�çð¿HÑŒ— SN ‚KRÑÇÎG¶óR“„`âÙÎd:œMµîŸZ_MÇýÚíäú©ÑÔ,ÆIlë�¶�ÔëɲÎÄ盺®�ç“8�ÇÉëÿ]Ö6T¡…mI½2Ê}×g ç�¤ÖÏvÜ@ Œzúv‡GîÐqæ“Xtå²Zá‰m'�ûbã�Î/³oœ}Ì“á¶> 0NA`JÉO Û+rnÄ eeŸ�šÒ+Ží«‰€rz¡ômi¯]µoË]+aK¿ e…Éý(¢8mº¢Qq]Ib²\àÛÆîü1PÐ@¬Lá¬^™ eµ•Á'¯’êýšÅÄ*¥‚’'Rs¾2ä\_pEÕ âÌJ,/Oªª2‡ní¹·Ä•3\nÓ[áø@½œ6˜Ûq ‘ÁzoØOÙÊ�bv=ŽÚN­=4Gº­,úyÕŒ¨hL–J$L³gh|ð§ªFè=»wmßL²ˆŽÆ…8ÚÂ>~DT›\fI×öŽÝ~»1d““oúÞ-†N… wÐm• Ã�Å3ßu›ªöp¢Ê·_n Ÿa ylˆµî»{÷î>ÿú]O@5Öá‰[GÝÒ td/ÿèrMpºN=»4Å›ròÕ+” È:ð‰•Æ{xR7ßL_i*^å#×ô¡–·ˆ@ˆK 똖à¸E·8‚LÑwò�Õû¿‚â@N“/(«’b¸kF ‚¬ø›¡ÓÚÄ´:aUÊ6~qs¹R!û>–Éö—'6rZè6£Q[ãy9mŽÍõþ›÷7àxa‡ÿvî  ·×‹ 8öóEÊë²ø·"ZöñIšÀͼïäÆÖu¸­<‹EcñDY,„€Ó’ã,e+gæJ\¶«îÁ¶Î \¢C wÏD©}ž„?ç{ÆÍÐÚÎF³h)BÀ#þp‰³°7¯NEYµ…#qj‰t£G‚ OÐ�,Û¸`QzöÔïóMtÑMÝ�8Õ„žPhP)à–D2` Dz ÿgŸÂ˜B–8|¦é�oËôeÄbÊŠ¼ �ƹê�,3¹·¼•‹%³xéQ�…“s¢ÊÛÉlø²>JYŽ¿.ÜÓŸÜBÏÛ“ô뚢lɇ";”Aa(œ�u’ßeÇØËVBKÇ=• oƒ5‰[çYH*Ì�b2µ—…|’ ©�ü Û4È]¹ô“ Q&À;x…‚‚ɺ/ÍüM7Àe”ÔÂ=–GŒ±ªC2wÅGgE‰¢m0¶ ®TJÓR‘¤³è|塆—D6«ã£›Š§P…bl ¾²×1Nçoš®®ÛÃ>¤ŠI«úb16…Óü–~[lë‡gÿ½e¹4•ï�Fa5l_׉ ÅR +d×a O|°äÆ(!Ž?…ÛS¯b�Z Ø´ÏÐ#£»±ÊûM«ŸhÎÛå™3ÙïV ¯ÜËq#w×,©íöë!,á’ÉVP¢Q½¾:på1°he±a~¦°¬ ï«ÑT,9ºËô ÝiÏN¬r&[鯥 iAoœw!ôàÐ.=Ⱥ¨ÃÑ ·påðnðíÜRfl’T:MˆbY›}M÷Õýu�K‚÷ò5µëBB?Ÿ�±àÔ±ûiO€|Ú=°ñ†…‘…íZVyeð�ªÚu‚ÓN½ —c ­àxJ7¤µ8‚v"qã#¢xÀ-…]{±žS6† ”‰D¨Vý¾1îîìb@‚®p¸ö�°ýðVïÐÊ9"ºfÕR0å÷!S•,çKÝÆª Ã[�æÏ]3˜iùÿÒÃDZ)›ÄŠ<+8uì0ì±%=ŒC/—¸¢FÀÍÐw ú~ñŠY¨ÞiÕ)¨çzKÇë°F¼Ê PyâC�N_~/|&oï¬ùè ¬.H,ÚŒ¥ð§1)‡­¯ª‰6¢( €&i~9ë’YCö]ü°ƒXf‰¦V[A1RÇ®�¥£:°9"#8®ë“¢kc— ×jïhÃiØîï`à¸×icýÊ¿HöÖ"¸Z„† êR:’ü`ISñõ� \ã—X²NA…½JE۵òŒ)0k€§iÛì§#Wþ{TN/en¬Ã¡qc³Æãz½+ ñ*?×ÑZFe òÆ<7igehîfÎzô×\âÅTî¼aÜh`Øá gw"�&Z—º/ôÌuWÚ¨ç±aXr ÷Ò1è»Ä��³ÇÊÀ2Ú ÄK« ‘ä ¢ãGÉÏ€UE¥RÞÏœˆ/ˆ~›;þ¶Çú‚"åÛjÏÍ�§­a:}Ç»©ÙO>ç{ÝÝQ¯½P᫉¼ÒÛ5Uf2›74E㇙qZ;Í£hëôÇë£)hDêR0òG'xèL-™¼­opŒç©©ß²$’¯�¼Ä7TK›¬¹=rí²»¥nÏð-;G‚�{‚8沪é–SÂõ«f�KÒ×0ÁjB™]̃ä·wÉåh^ˆxk~Õy?¹žVÁKÔà™;'Øs ‡eîe°�OЋ挕ʇK�í: xšsFó onÉ\… ¼ù.ò÷3{¨ÒŽ¡O²çá±K‹ ÁåUNVH›FNg ¨{°©À…SÍW”=k­�y ð°¥"{ùæÆW«�£ô’¥ï_dÿÁ…çήTýøü1u©›)¸{g¦‹Ra¤–/Ú`ÐÇ#>‹¢Ài¯ÔõB…­2W§¸lÔÀP;G9®Ùâ¥WYíó%ó.ó3£ Ÿ¨Š¡dy;ÕIY~nF•'"i&ƒÙ¥¾Ý²d�wâï½ô?.E~s¶-õæ’l`ßCL‹@Ö4\>N´äš#=éI ƒê Òw{BËÀãê[І„ 4í2ÊUø8�L¬)Ãtì€LªÇåî.F^sÇÓTA 9%T¼7lf½vÄ�<�z‰ƒKÖgòe<„0ƒiŸCŠy-.›É5ÕhƸ4ì—€” •,7V{pìnµHÀS×� áÄ~ZÆó–`eu’§€0ºB æEô>Eã¶jÅÔ’ælýÖ0P¬CÈ´MÈP$#Oþj&o7�–ÉyªuBÚQ°îä©w$áÿf1F¤�ô0Ò·“z¸Çfß i�#Ñ}GÁÁt§c £½Ö[:ÑãHK]ˆk/ñ0´Y‡PdSuÊe’K¥àCɦõª«oyw¡~¤pgJܨ=GÑÿ•qL^ÓR¨‚Ž@?u¼ óŽW?[xjÏ4Yå�$ø¯MO,4#¤ÚòeË|ôA/«(·ûéòί”®”+•Ò7¯VUÕ΃XXE�éŽîüšnLhõP»)ŠÇk™rÌñ³³ãúeZpNBS~þ<¸Íº›ûµ†b8.ÂC} 0tÛLÓC?Ó\à ,LiÑã‡Çˆ›8ñV¯ÜÔÑ�A¯O- ÙŸtÇÇ즘¡h/ºÕìã]ˆ¾32,è³ µ‘|¿3`ÿº÷ßþ§�RÿwÐò%›?ó™ùÄ&óg�R÷>³Ò·O ¢®tÔ@Ïl+îuõ/ÉÏËT˜AìmzÍ§àš­¤'Ô2“ÛEgàޮɰU³± ½/~Ý·¹/�†ã‰dÒ·çàuÐNë‘tYHoþ—BìÈ£ùóü³¬h¼íìÜh1X)ù>C³ÞD>�ôoè5>Bº€°½kÛë0Ú:mŠÙr1ƒ*(°aÕ\o$XÚ0hï( »íF樊)‰÷Q”AáádÈÚ{¸O8 «@-Ü«ùp<ÄÎùñöÄõ—ÅYìe ‰lãÒomÈó«·›zDHâz*dúýž:Ï‹uAR´˜òнz¨�t¼ñìb~@E…©¸¸°Âï éÜM!ËD©I)ÝdQhV«.ϦF{”ošá†Vgä=¥•_8¯˜É¤Dz>¼¾Â¿ËžÕ´Ç0ýðKŸ$ápši®Ü–LÄ(C4nÞj®½UÕc1Ëhî-.Âç�r¥#OÖ,‡o¹³Þ1§^�hRi¼¿‘Ð�­ßL?]¹Hb ®qÃÜô»:.ý&ËVò'pQ8л0TÖ3ÓÌ 4šSnÀ6Qª|þÑŠ³"¸göH{<„Åɶ"÷ úYoÐãX)>!nZs¦¿¼ÜrÁšÞ|�1t™l¸dk€$ÎÓå7Q�) ³byÔÁmÓ�Ë6³Q-£2ùØ­D1onµè@²P³™È@¾ïèÙ ¿ãpoõXMÁU‹À[Ö”>ŽŠû }‹ÏJsK¶–QÙ�*ɽô…g»F­> Ô¡à�š†h+¤4¤…W¨æžÙ!?[“B¬ÇßÏl¢>ç<01Ûñ±ÁoÜÿÞýÂü‹XŸYi(©Ô¾ ®†HÕ×ëij¹æŒ9±/J]P•Œv½â÷cïkŸ¾;@�k±d¶ÑŠz(ôý3ÞëšÿcI)1` Ãi�� �×Á~y8ÏÚøi>“Ug´ô3ÏPÖÙו‰EèâÐÉXÊÓ?ý'2»VF“SæOvt!ï8óX}X¦%H¨ !uŠ“äP°¿'½Èß\Hh�íÉâ"MÈG5xé:~4¿,¨$¼�×b"árµ!†ýAàE:Q0RÈâ'²âf’=×cпYtÄÐd¯ �ög Ä’JZåÐÄôˆ}"UŒ¦â£Á˜I£iØ9ïwgܾBA£3“ç|lÜ!à?ž%ñßW'…Ñ`W®}΂²�Öµ Uh¥Ÿ£yÅd9½e€×ÀV�–ÕÏuùsöiPàùæ&Âù›ñ×Ô5ójç87 Bg&‡µRDür6Þ­ˆ–@ÉǪ‹ÉmóKÐTí@)=ún� z�)&3ñ­gM½öí¹QÂøÅ믥ýøÊb)²—¸ý¥U•Ñ&üYOtÚɇO-û� OB´æÀ:¹°–['‡ò±m™Ù+ÕlÅn)èѾâðxwu,`À5Ëd²¦•3Åe“bš �á£W08l4Î5:CÉl»9!«€Ï®ì&õý4ü.Jg2UÌõ­ÞÎn¯ ¡_¬Û;ZêœGóGø.­ ‰)¦#†Óˆ€ß²«­ÁC²“ï/Ž4æó¯æû¢ª³"òj¼;Q¨Ö5X£‹¬ Be{võëÇÜ™q`Š�Ž8 Áú½¡Óç{ôDœ½Ñ]ydYIÍ(§j2¤Ò4¼ŸdÚ¹wíŠ^÷�ûs:z§ßv§Ò.X»7óÑ4/ºî÷(0ëÛ�=Ï1Eú£eu»�µñÖì“·ä#ܶ—!(’áJÞfËò«†ÛC!…Q:Ÿ“†ï�Ö&ù6ü\6<‘(¯( EÊaH·t;YU­ž•¨Í)RÔoXµƒ}Í?è†DtuŒØCCøðõl汘 B!�43»»ÁeõüY÷7,m‚õÙ>6ÊXk:BT3`io I,–ôˆIïnA�Ô?ô$¼&½úfM-Ðx)óì…†ðëÏ™ãã]!«>Ã!hfC=ÐÚ`žýø‚Ìž�NµDK¡Z:L •BJü`Ëì¨|�ªì(¨¶öXa ©Â1(¯õ[Œ ©Alk…°3ÖóIB‹…ª<À~¢mÏòm8ÐC¡vÞù¸ž$5$ƒ&(ÿüA«s7:û™¤YD­`hñzùzoBã¦„Žæõ¯øý—5VòVènÅ%õâL¯åŒÆb£q½ç§ݬéÈd‹¯ø8fÎ}‰t/솟:þÍw4Ø­”}Gæéä è 19?VXUµÜ¿�æjzÇÓ­îQ–l²'ã–¡�’ÂEpÓ1yqni@é³�Ñ€�bviÔq ;‘q*'©Ïâv²úÕs#ù�ßlÛNwcÀƒX{ÂÉŠ„‰oò3š ®U�Ò„%ÅXfu4Ò]ãðù1T{°ÕÝì÷;i3(‡b¨©ÞpØ*“™?­pqå©CÖ<§¾E^^ƒZ!pGo;ªÖ\G´¿¸¹R-ëiÇEe}àùÎ6š©¡\g™Ú©¥‡^Y.„8Èõq ½K·n§w] ¿÷’ §^wýâiqò®7R¼ìÍ8�± Nºk­ñzRËâûç1ÒpH‹þQyËVU•Ë«êT<ŽŒ©R h¦CvÍ—�#.=à︒ã^¯‹àpòí„¿)‹ã ÀPi&mÛ$ˆm^Ñó&7óÃοƒÛ=Þ&mk1À �ŒÔÁ{@DÍ[°�o¦-n†¬F›Õ†»ÕœL–T&—uRk.´YæòØ®×óe… 8cÔsŠ• ü±­š°ÞFä¬÷cƹ'øáeYªîõ@5aQõ€ 9µýh'ét-!8oý~‡s‡7r&ù¿?Vk Ã>nZ {‹ Ú@V ¦²EL*ÈAåð¡9ή-z-èt>ïüòàâcMœmç7 B-´pm� 'ˆÄÿ–\ìï9Î ^°–ûtÂ|ÿ&ìk¡)ö~]D=�CN û�΃L6ž1–'kDªc(h¸r›€Ñ’®1@#2q\:%�(eM:ê\{š8ŒNSÝñü'ØO,‹ä¸R„^%@b >‰ ¡:I9WU×L§üDCÌÄKRý©pÀ{‰Á�{©=N8G[‰¤h/CøÚ¨=gŽÞ‘é£ /ö{Ö›Zð;^7z—fÒ«'`¸jÆqjkñ«“r.DR‘:Z)MÙÕ¨ç0ÊãI‚> hPÖŠ€Æ  ÷°8…Ð’z!a¬` ®Ò¨ªÔ[`ɦËïÚ5HTXºT­Ý2-è!Æ–A²Ëlžë±>r�¢¢Å“ñ€Xç+òaàÚÔ_õ¯“ÂŒ…�¸¼g°cb‡Æ&qY£ ÐÆÒ:¨“¼­«¶ì‰“‹ˆBJ—ñb]~ÄðÚ¦þØè9í¾}•èÿV’;0ÏÉCø"¾P´j¡5æ^œ}  YšÙu+b…~ ø_»ú0ÌønQï4)—úBò¤äð/·³no;Ïõ–Ö8…†Es¯+µ?Žö˜�ý* òÄ€CFR ¿²Vƒø1z 6’(Åqz8ì.ksôA/Ë L㦠Q= óÛ?ÛÚú5†TÒ@E¤©o¨ µ‚QÙ�ÞSý9>ðFÁ7¹!³5LâyÅm}Ó/}q¨ÌâËyü®ÊÅã知޼!’|dä7‡Ã\LÊq¸R…žÄŠ ¼ƒ^1JûgV2Öp„rÀ�©‰ï ÷¿É;‘Ö…BŒ5õnö“9¦˜›‹½‰0ô(ß+½äþ¸0o®DôTN<ž|„ÛO8&ó#@åÀ Öþø–\n=.‰/ÀES �æ#•ëYÍœ~ž+4�iXÝZ¹éõ:“ó0îîxiÕ¢ŠF£B-”Z¯<1V¯çÞNh“�mË2áí‚ ÐǽDY8�Ï+�œk(¹š+$ž¯áF(ׂ«�»â² Ù^u¢àŒÉÐŒ9½:sŠË»D óN‚ÙÕqê06b"YçsŽû,S}bs„�Á *²“ó§=¹~<Ýr¯ÕsyˆR·jx?5Š€!’eI=¥¨ô¤ŠQøï“u'7/¬ÕÞwëvXC^zß7°Ö„cQè¾ÈqÜ Pɤj̨œ2.f»ú¤zcáœL[tu{à#˜±¯þ‰‚|å”öj:–h»C§Ië“O ±²NÄy–Qæ4íM9¡‘öùPí4Ô>ýÁ=öK6kè.µ‚‘†²æÞ”–OÊÞAç0o"É´ÚøéâXz¦Ýdúø¡ÿµ³<Œ�R릩·(~‹›>^•5ò2?hè¬xM!¥_k1J?mxÝ%8Co³MÆr®Ë'%õ„® o/�C2‚ð¡õÜ„aú ¹‡M•À5„6·ÚšÂoaшý�K’5ÌI ÉKN¾pV¡[=‰K«_N»¿‰ËzÔI®TI§ …«µËYN‰#ùùy3´8ItÁ1G¢0°%iõ¿Ûù·²ÖMàŠù%%é¶d�ÿZy© ú”ßÓÒG¾åö<°ì Qºl»ˆáó‘æcŽ©gŽt›5¶È=´âqß±ÊjÄbäÕå(Œ³¢® nˆ@Ý7L¿]2{öI�©ï¤Û"w¦´gŒ%{*Q¯ÞçØûNú-¸yá_Z,†©¥È+ ,®Ìê°RÌH>‡:Á²LK¡R¢ñýÅ—Ù¹¤Vl‘£PAîlƒCƒ mÅÖr�Üka\ k �;Îõ…¤þ¨Ã•�ÜÁŸ·ª )Eoñ—5ŽÛ@pñi­ ¶Aç—{mœCÖ×ëÂ.©_PjÏ”Sa·Ÿ-Ù\½´žcYÒª3È ØÔ&ø“k2ÃúLN�&t–œÜ Ø)d}bl»3Â5‘ EMÂ,è`ü=o†îÖÚù½·«Ý¡}OŸžšc}¶žKƸi½®•Ö~;\µâOj¬�²ÿÿ¨~ÐÜÙüoÐõW†Öá wE:N{ò�Mã²®Žõ=�…2Þê°WŒ·Ú‡uc«'eÙà‘ÕD­NÁÞhÎØ« W˜ÖƒÉGåƒu\µu�@j}:¶iÌïMYô§±÷6QdáHÚ߃V³Ç±\Ì«Âĉpxß‚es"a`×ðÒ¯\«Ûè›^!€#¤fMÍÂqÉÀOž5>“ 7öR#èF2 s |6õIû¤J§¯Ž26�xc5cjA`?­Zõ0çæ{ëŒV«Å ^*RÔ|ޜ눊·Ù´ê‰*5RÎ ¦lÆHÓÇs˜ ì�ZíEe¸R�K²!ÖŒl¢¸Ëá†.„�¿±°Gñß_:]îóAº£"-—´žÈŒ�+s ®ÆÑŠÁ”ºP#äú½<:Ré�]å¹�–L•á‘íÓ'z:¯z¤é\µ \î®Y×L´-tˆñ6ÉØz�5øÄ÷ôîEÈRîüÇWŸ¶:1WQ u®0_ˆÒnX2´«×¼#_g͘u¢¹€d ÷3‚NÎ×Ô|Æu³'ê¦&G…åÅ9L™å <ÃÕ³9•ë [œK3f¯²\£ôi1!Ð[›‡ÃŒZ±}ªq64×ÇÒå@U+ÃÖFxÚC/£îîÈßÚTõ¾í )ËòÁ.Q„¢Þ“x<ìÐGc`ÉÅ]M »NGßnilY½n™8P¯Çmá\e4wé“ኹ¥æ˜!½’; ® ^lÖ‰Z7Öþ¬J~ÄÀ7cq9ï (d„ž„gO—…­:Ð+êC,ÚØ[ï¾eÙy-UCõÂn…)ty¤£™ÌŒü’Æfä—ê¸èƒhšc´¦…a¤Á.rJ¡!k_ÿ}¢îÇ’yÕ+ó_«Í¶�Ø‚\g™GgçP�ÿ”v{EB$}RiÓ–ëÖhšŸ|,S`Cãâ½·jEJ–®Â@X3ñbåÛ½æFéYæiƒ\>�mkç› lf¼PÚ´å«r´¬‘¼Õ6k äå#8Ý`Sðø4§{Š=ÑaÝГë„�cÂXYÉêØˆK£V…Æ»©˜ôb ÒX-i=\Wl: £3Øå!Q8@Û]A1™¸:ôiê¦áôh¸JE×h·Û¨k× UÑxnSãy5ë'ØqeÊW:»7d¤ÖM¸r"UaIÊ{²o¨qz¨XùÔ;½”/žú4uíèÙŽ×Q�x]ÄÐlåÏ”JÕ …e·EUÛ èú(e÷«óCètÎMHugçr ô˜Þˆr;® µ¬¯Ã9¾çH‘­ý¦4!›9‚Ý”ÿ-áéСOS­“="¾éŠ@yx­_<ñÃ6p;º âleú9TÒFh„‰³çuÔ\§Ä5è¶— -wuqqñÖ¹ïyÂe›±ªæ´eÇR ¶**Ô+Ê~‹ä¶$›Jý­µpgÅýñú¬Hè²àÊñäo+o½Ô·Ñš9uiA dÆJHÅé2‰FþKm=…lÒá8×H&çwfëW4ú¸µîs0eðÍ\mµL0+Šª…Eé\öî…R¥’g¬õz+yËêö‰‰üpÂT?aåTi釹dO×Ùoq62‰¶™W™-_ÐA,s–¦aIü¹f�û‡o€³‡M`+u÷ÉE9S¾ê¯YX�ç“õN,ÎóOôueKxa�œÒí'S}eu5=}°dH€­o/}åõ±93¦H¬çGçDI4‘TÁ—ËŸí»¨:4¤®´3”7io~¥lŽtX e¦êwQ/ ëSjh÷�±G´Ï”˜ ÇŒ¡(2+Ç(!~žƒ�#õ—G¯7ä�Áª�‚Ü}Uíɲ"£ŸìB�&}ˆ‰[þª%°Z?õ�³N†oI›-’æµf J�äv«¦bŒj¨\_›ù7<ç¶yæ¶ó¡ø ��e½‚þÿöxví}”G¶>s?l•¡ûc"š YÎa¤Fôˆ©ɘ­£ ­Á"}OìäÅPÖNØçà™�¥!žRrqL8Ï$8�Ÿ�ɸJ£,«(Tš¿‘ã¤Gª$•9Û«¦e²Òp}>í´hzFŽmM§o~{½¦åüƒ/çñÅ ïîqíQ° †ž7;Àmç &ÿF1¤(á[z�t71waűý,[´³‰ŒÎ¼çCî HZP"�EÒ�÷¯O–Ñ„õN&ghØm…åËæJ¾Zjú±œ,·¯~»Å¿@sOo£í™ir0¯ØÑRQ½Ý¨QH;JÈs]UÏ-×¹À«†®ÍóD¶B{£9È&>�ɇ�´D©ø©RÀ_Ómh_¦†H´ ÷“‡Ð¿€  o^¾ãË•Äþß4«Ø·qÕmàèßïïø;ÂY=HÍPÀLþ6ÎGMEØH\çF‹ ¬„ æš ËàÎ.¬•ü[s’s Ãìñ¤ý¼Ø�FUyD&—·óe=ŽSLGaI¼¤ß+7ø©–p>Ö`oÉÖ×ø)ehh¶FÒº^¹°6Âà^©N4l§‹*wKÜXæ–Ù­c¬BâÄðÇyfºÙ¾¡åðlä#Z}§•LÃ�¿ª cñâ=¸Qï R·K­r»´¶BeWX‘‡�CÞÍM,(~6ö§gQ¼°XI%$t¥3cBß¡Üá$” ´²¢¹0@u²WÕ0’kèÖ+ë–û‹µŽJŠÄJ‡’Fr»¾ÙRQõvt™­Yî�¦7,?Ó¢Îc»ý 0P‚ähŪu*jšnþ+¼KÏÀ‚àäBcx…°¢RҞÙY!ÉŠªé†iÙìŽÅrµÞlwûÃñD( Ëñ‚(ÉŠªé†iÙŽëùAÅIšåEYÕ ŽàDr¡ÐÜöy0¼|ü‚BXaQ1q I)iY9yE%eU5uœ†¦–v]¼!ú.†Y Γõ§ œ¢îv»°øN^îŒôs[)5} M7LËv\/_×¢‚¢é†iÙŽëçåôI’$I’¤ˆˆˆˆˆˆˆÈ¶  hºaZ¶ãzùz•ªßޤn»ÑäðIøW=·Tü#|oXÇ�įêNç¢ÎîøñìPdÖwwûÎÙ~.Jbå¿d¯·½þí%~mÍâÞ:/­ãË810ú!%s1yW?úœåJ/Òðñ¼j:~mŸ·‚�Ò ”†§áœꎤæ¨:$*®áewT(¹~m½R°yÞbž³F”¬%d,=F“xÊh)ICH5Äubú‹¢ú•G4RÂ*gU½R5A噀âú“⓹WŠ #r�xÕì‹(Ü‚BóœâXqqœäF5NöE«Áñ9 EKq0‚�yÂFƒ[)h,ä 3I™È†æ×‡øžŸ ÛŽUI}×7§Ã(ß7!‰ V¦Ù�D¸ç‚?ÜaDTà 9ÈÈ~;Òw¨Ýß:ÛÈï{ŠöëÞ¸�¯Ç,³û]¾¹[-òcÿ—ì処•Ëùô!—»ÓÇ'ÓÝÇ;Ó“d'9—ovJU+TêøñÑtÿñÞ4R�gÉQ²—ü×J�À½§Þ¨¿PÇUæ=>˜n?Þš$[É9½Ù*…8®¶Í�]<Âßy‡í'§èj¯e.ø%çñ,1ÃRl×:Ë9EÄŸÉ·?~À•BÕò»�~p\$ЇUE ¡øHÝQvs?Jfð•E›´f«²-D–-uÕŠëfÄÂ^Ú²9*®wo°'PKÒV1]ª3΂ÄxÄRimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-italic.woff2UT ëÆ«jëÆ«jux è‡-€ÒwOF2ÄxU(Ãý‡B£z‡n?HVAR‰!`?STAT� '‚@+‚8 Ÿ/V �¸h�¢ „>0‚ã6$ˆx ‰‰c †[óEqETëv€FÝ&þ™¶r�(·]pž ,¶ù[pÅØ–Å ºdúSÞ}Ùÿÿÿ'&“1ÖÝxo¢šUõ† ·ÒQÑÖŽ„CVUƒX5}$£bK�Äö¤¤ýè‰l~´êˆô-1I‚önuŸVbóÑZJŠu½Z“Nk'ñe¨¡?Š’ý¦¾&Ö¢�œí�µN§ù$ º†å¦µîÅ:½]Ïúx]TÜ—Ún¼L ïà`Ž!JT¼3x-ùܾxq]ƒôEEH·S¢qδ¿â7�tâ¢ÞétŠëÿJˆ]AÞ*yȼ¡Òh½]³,„�{i—õßÝPÙZú\Þ5žÛ�Šû6}9¿’ß�?Û±—…ZÂeÎÀe©°Qþ�kŒ�¡ÕKňµ=íßhnÿîn·�1Æ‘Ž‘Ãȉ5`¤#òc‚%Ž‘% bRm&M”…ÿË#©ÃÓ¶ú73„„ ½‘qí€ëîÝÿ{Õ»™3 %ˆÒQ"QŠbö®®»nTyÿ—Ó¯¿,É’lG¶ób'�†‰V=¶ÓË™ùÀg�°DNO#%C6 KÅóQ]PïGfU¤q0ãÓBrwðP-ß|ݳ›ºsŒÈ0‰™ÒéZ•1.n@B††™køw³þOð'¦D!Ì JÇýŠMŸË—¸_—Y³ÎøîXë0„s–»H“ÔŒ5Šõ2S˜ SãÇÿ ôÅeïÊ‹�ÿö0Á¥X=‰Ïónöÿ›êHGŒ1¥#N[J‹Å  $h PAÚ;‹^Ñ?{Ÿ"¢³Î)Wºtwu’Nà‰h:�²º9À’�QR°LÓåKOÚ&E À6ky":¦b!*2Å(J ¢BR@LPDE#±b.Üv³×ºp•¿Ûv±úåïwUË«´§÷ú¯Nw'“<™³”S;³¾Éï'y/˜b3ûŸ]ïv{í]ÅN\Ú^û¾Šn³O\ªvkÙ���� ’„ˆÃœVd8?ônöÍ$h[Z§}ç._w_çNìOåO\רneÑ@Bl2Q[W¯×‹‘;“‰Z?èù<¾TŠX"@ÚŸ*¿ÐAZ–›æÛ†¦\Ú*¥%œ»h«ô¶[Õ¡ö¾ê3à4,[š3HK_™8Äv–´Œs¡)v:×̶ÇIލÀ×.Ýe”afQ³r(Ù©©^…›{»––æv_›_0ãUð3æQ¹™Ww‘ÀßdÅ鵜ö-Y“Q ³*g=.ÑæþЬæ<ØÑšUÕt5à&“…$Ë9`î…jýä^¨»{'¯e.f¼ÇÇ•Í2�–¦µ'£$[”yϨ¯ ’õÞ­9tÚA¾´?éô=˼z˜oÿH:a„0'=èNÉx`¸{sAârŒAhgïÌ©ƒì“ÐæÎÇ!gûÿ-koç¾»uEjzŠ%±{8¾�œ­iÂÌۢɽ‰�’ .D9 P2©¨ÈløAHþU}W€$dJ¶�­Ãô¢QÉ9¯SJÆ>Œx÷]àὈO  e«ØE}9 JÏ@ÈÇýþZ§Ô6Bú¥”-¥ŽÉ–©M¥mC†aÉ2äÿLMÛùg}œAÇQ:~8Î)ô¡Rkw.:¿>-ÒÁ KPa‰Ó=ïá–8Ñ€Gyðä”RÃÀ{’ RaI6ä9Q!V EéTÔ.ŠÞEÝ™hr@OÖa–´�˜3iÏ«nŸ¯²Y [Õ4˜O‰ŒfbÄ@ ÃîÞóÂãöFõÅ™Ùû”"DB� ¥ëÞýøÙãgÌõZ¶æmÝODEA!²±ÿ²ÇØlû}†ßÚ8�Ês˘Ñæ~x?ÖÐ�)"D:ÔÞ°Ïß’`Õ³ïŠRqæ&³ËÛ íW! Ýî+â¸. kB'6|=7aWÕ1°#`ò^Û(‘�íz‚@û-M1èÞE¿ƒ=�RWÀX§¬¡Ju«Ö Ĭ«ã”cÐ%gb„懨{®PýsãÜz�ÐùG¸ýRA’—±Ò߸שw:ÉÊÂ~òoQÞ3#þi6ñ1Ì¿¥ºaã½ÿÔ7¿ýÈ·íì‡Ömü�õÿwÛâŸ:¦þlëîO°=ùï8öÛ;„mO5~ôtãêO~ÿXõŸ;ñG9)¢ÅŸ-�\�†ÊŸ7ºÜØakD¥‰Û#a�D•äúgÌÁ—*~!Ô~9ý¥A˜<ˆ5¾-1¸Ø“dñDnKbs‰;!¤Eÿ?Uù]OUT&½:ù½eó.r}ÑÛ~#ÖLž¼œšÛàßðp[b[ž¼2{ü¾äðÐ I7ã'aœ$u»'æÞÞ3ÝyGá‡%kHwCv‡‰†+Dm3oßM5‘kºRæØ®£/ACvCÇ`£èœB؃p1ù\�“ž.o½ti½V�ïÀÛëK�ÿm¾r79‡äÖ¬�ü?tdÆvLææ~·oUݼu}KßrëÖÕ­Çu߯··½íÍçlØÛM‡çð›; QÞAðN>è¢vªºSk÷nÚîuäCˆì…Ý8¿×èîme¹©¶w›ñ‡w[>fïÉË««¾€skëmÍOöÑ#z¬éÿ”/Ô¯ ã+«ÁŽÀS²‡Þ<šSD:ãy±t�%D�×tä|æ*ŒxLöl#þŠ·- ³sR†_î$žiiãÛ–Ižð‰‹Úf>,m›™µÂ¼Fë?ü…=4$Ñ‹“•ÅËgz’;¶xãÙ܈ƳNœßàÛH›,Ÿºð½«ÉÝÈÞþKÖ€á]}pôïZŸzÜzÃøúOÿ=ÆA€`v3zýý=ãŘø™T¡_îš·@D ��@ÉÓ·‚g'D°ÎÂw‘"ÊO(Ï‹øóñÎ/´žçC.ž?âÔ¤ƒøg§ÌAý%�APpxÁ¯ym!Ö�÷õXw×Ku°îQÊë`ÝGí·ÀBRîvÑ/û¡rßz¬t*ï&Œò0}E'ƒAã¿ò6!H>&"_xVa¢Áo ýó[guùcÐ_eºþÌxƒgßàÔïe ŽÞN`§q­æ½‹,ÀÍ P_-åÍ-Ö/þȼÂ,eæ0ãW¾ZÙ·²wå 4µ 2ògÖŸßþßöß¶È(eä0âOuzßé½§Ÿ@â="8Á=ëÊh¦±Ú«)Ÿ•¹E8ÑÙMÅÇl·Æ¼’”fbEF'¦‘Í4P¶‡CG2H x¡êí¹ö¹¿æ¾¦ž£æS3©ÂåO–_XF—7%MII!ŽUž�mž­™ý”RL9B‰]úbé•¥]Kah=gÆ¡j2}J>Ç,%ç“3™ü ~�O2½¶¸{q�D¨Q„yJÐíÓƒÓ­ ¥Ð¾\Ú»égH9¤ø…¯>8Y²�lC gôXý óÓSÍÛdÔÀ§ ½“�ù�™)|þ½ùN0Ñ¢å $� $«Eà1çÙ94CMÇsý§”b¸’ÚTÖ:þç£zI%Wxí)—ân_í5eX*{¢(™A~B†ñi%â¬ÑF¯ÞKù,9ÂF-Ñ͆ϼ³çMX¢¦ÊÞ†O Þx±cŒy”•Dž™k–»Øcº‰ß|*…¿}-†m{ÙÀbÓHÞªc�…bªZ„;‹Ë�÷ÉI" Š{�Nk«ê•ß�v¸m%p,{™çCK Ùl¢Þ µñ{ž“Žíc‘Ö›±ÍVúVÂ� 핹º�ÝØ¿=í†^„ßý»m‘ÄL°ö1w}¤íº NY6Ñ xןöäÑ Tr¸¶Ü5AaÕ ëþ<º¤ò㟜pyã½rÈ{~Y`&Kfñæp£Ü 4íÏo6ÇsR.€ØÙ%”÷1%Bn·æo@íyBîžã“�¢‚ÇGç ±|?ïš{‹Ý÷x+í‡�õŸìú[=Fé V�(¸Åµ=н<<éið(Bö|²Y-j,¥·fñ‹ê”w~bK­pØÁ3éJÁKR][`bÄ·\ % 4s÷\\>?íÙ¸Ì)p _™±yùÿÜÆ×f”-ò#÷¡+â7òù{Qd�¼pÄiâ×üÈK Ì…0ø¯Ý)3tqÐgâSç@\b³½6B¿1‘¸D»¶«�´Ú¾Õu[ó�0ú#ÑÖxDhßÓ4Ó=—Š©¶^UÌ�ŽBÖVÑÑŽ g}øÏÖêïÞ+õÇBÛ@õgo‘îpÎV _ók HTæ…Ruƒ³Í¾Òœ"«ïØMÚ,÷d.Ä7n I·µÊã™Û. 3ÿ2³´ÛV¡(Ѫ4Lš2›§ZE~DÍ“ÎÿáùªKa±'H ÎK4¨¾Ôî¥?·j4Ïk‰QÑ:[Êá·¡¬®Þ«nuдšN÷~ƒè¶]C÷‘ ©”Ñåd¨é½ò×´EÓÀbT�ömpn E¹Z!PÃV]ªp5w�ËgÞö™!—üdÒ”(äIÆî ÿoØ�³ØBwdˣ戙v؆†Ö�Ap� “¶0—šI»0˜˜l�eÐà+蔓gîY>í ŒýYòÕE’\ú̘O>»ÙͧîÂG �¯vÓ �‡×¸ZäØu-™½ì®·›v£«ñVÝ( <ò“±üæû’¨#ôëpD$²¨ûÜ-sÏ!Ž\¶ö'ì!€'냭Ú.•»ó�›ä¿aκùŸ~—ûµ›H¼›® ¸Oµ¢"ô>íBþÛ >÷4uìx�Âë!˜ËÒ4yH#‰Db 'lؘƒ¼õ|& N(ñ‹ï§8±q '&Qù8à•&\ëRi¯îoÞÅA�3Ĥ†á.œƒr6«s¾©Å“f`ƒ{›~r7_É1Žb$·7{ŒÃÞ�¾Iˆáß›…Da€'½9neK6õÊ…(C˜#-Qwåšg“‚¥]†–cuN£ä®nÛšöë2žR2TÝèÛ«HËY�ŒxZOÍš3íòï‰ì�¸ìŠq�VŒ‹‘SÏÀ¢­î¿´¦Ïg9#eܨè -æ¬r³§{.½÷¿‡¯26êG°aL ûIB/‰Uušn½¯4Á~˜Ïn¼[.i|>¯&ìö¡,uØc¿c¾gå0å½È—…xº–²ÐyEߟ„/=>&\¬2?’m”ÌÏòH½o·{j…ÞãI¨@±q¥¾Qn˜žêóeyÁþ¶)AxÙàà»7œïÞÎ^± »sŠ^%xösâ¡¥¯spã՜‡Cb.–y‡å[×á^0?:Ë‘õÎÿQüOZôëÒæzä�c¾kd‹ïÜ3¸¯ö„|öSÞñÎ ïŒã¯ÄŠ—ã�¾Jý?LµÏ=ÕŸµÓúË+{½õ²Ó>Ò1,оS'’F„ÑE¿¶W”£{yä dŽiФ9‡e�@šXPÆÂK-JÄv—’ùþ–ëiøTäC¢)> èex€ž ˜T v¿ïš¢$9ØØNQÌUó¡°;@oGéTþ¨žî`v�c"{Ï1™=çPºûDÆø<™+¬'k‹Õ“#_¦5‘/ŠYæª)~ ÈL½¢ÙøvGráè ©nüS`ˆÒ§AêÒç€ý/fìkPô_Ö°¾ ¹>û @ÿO¡6øoþŒ´øà6`ÝhŒ<ýÆ�.¼¦jOë§”~:'ó³’3ŸM9÷Ù²{_l»ð•¢â¯ed~ÉÃôñ’ûÝçåï&8ýý¸ºT]üIÔ�ŸjZ~%túײþßËþ£äÈŸ$•_©èŸ'þ¹Ñ¹—Ë(3÷÷ –³Ÿ«‡•`ÓMËÿ yÍÁÂ[7|ø/~¹ô"ß²yà稼ðþÂ#}Y-šûKÇcþ:;ó×Ëõ·bá¯Åª¿ùxÀýGßÌ!ðÿ ççbü¿NY^>ÚøwÅ’ÿÄžn<£ü¿”Þ�~xÞÃó6öKþ×mð¿Ûÿ¿Zõ^1vgbMc¶òǨ36Ö0þ•o H}Ô-î 0³9�2(ü¸•çK_pp8-ø¹ó3€or væ¢Ä `»Z‚(@^•xÀ'Š}Í!ÈÅ;´¾ àßú $wi‡°{�b¢¡‡DJ‡ƒ°}ݽ¢¦¯E{F~\´Gd³¹;4¨ šzLÌ'!•®Pür�¦û¬Çp±œ0AqùK ™#ã@�¾IŒ|n1P�…ûû Ä]ððú>Z7†›&oM¶OC)ÔjDL° 11†dh†i¸FÝèË÷ÎÝûp±®™1ÙÙXÖéå�…0á5^¾X•Ò€#ç*‰ÞN‚¡|¼šÑý/1ÔÊíÔìÐ3�u§sã¿Ç�§Ã“a®f£\–‹2+ߘ¾:}eúâô¹éïL}úsÓþgO=sópVšýà4³I,<†šÍàß´·Q+?úd,ß#,E.ÐW³A¾ñ¯$÷–t \h®ãÐê¢83‚å8xÛê2ˇkükn³¹J¸ãîýªHI\7_¹._¨'û�J¿;¯B¹RyÈÉ¢àÀ•E”x¾œZ-�á8%UI£†Ý2w®fÑåc¡b$Q·Â'„’ ;(£¢c`µA¶bMÚtïV¼T$Éö›ÒßÒI”© eÔîj>ø[±b•Á;\Ѳ“QѲ-PZŸ�ØæPù8ÕëÙ³ ò³23ÒÓRS’“7�†×G�v«Ù¨×ª•­\*òêu.«\]^œŸ�žìïíîlom®¯­®,Ë™t*™ˆÛ!ó=©UÏÊX÷ìŸjçº"úÁË©›E’K »OŽ_`³´z¾²Ã�ÒÚ)ÔÓ,x¸<Ž4àé8! >;ñïi¾Æù2µ0¤^DvgnlV½ëo}L‰ ù‘qI«ø˜™ú“ÒŸR´#Cåƒ,ÎÍñý¡íä§”_‡ÜoP£=ÉÖE �š�ïáNÆL dìÃüáMÌ­K-«Þ³›g€˜KÖ\ÃÏ¿ž“g5Àã~a©¦„½¨ìÃ+‹ªOeÌe!8—›w�OõU7ôbŒ?,£‘Ÿ×©Í"Èîü¹ÉþLH‰ï¹xÜ™MM�À„oõVñ\>_ä¤S™©+fR8¨93�!L‹R»)#”È�R)h’Õ©$Æ P%YÊŒ“º,D‹n€¸�3?B­<ÜÓšm*¦jTFå�üg“ûW‚Ð~ ± SZV\mÚ•YôŒÊ¨x+�ž�ÛÈÈu(ÉDç±Ð§53¿¹9µ¿„ÐÄò5)ŠÞìÇ\u‡‘^”i3LœÐpÚ;…ß5‹ƒžf³¶°)¯´»+7hÅš‹'ÉúxàÍcõç”,S5£Òµ4ö•´7$o e&÷õ:¶xzÀ‘?žB|çÓÏà°ãô É«Ɉ)„XÁ¡[ŽÅËÇâñò€ä„¥Z|êq÷|_ñD<)”4·ÅxHàOzˆC輠ܰYØçêì«�-†�EÜ»>¸€žÖ®#¯º0ŒðÊ ®ëçËhÞ0‹k»Óð-@y-t :BwÙ@+Ôä}ç¸vàÀÎP«’‘p_:HŠc¢ý³ë—,ñå§)<¾I-…ƒ8«µ}WOI‚ sNQzöäàª+{MœVl˜,S�¾‡|8-Íì=î ™=§g}ŽùY�Â>ÎÒ¢oEœ¥g8<aéÞb%+«áèäŇº&c›.Ž3À'|˜¢;6‰!ÝÍPiÄÜ3*FË·z|›š¾†D¿Dó¸âIg‚w œõ©ïãŠÆÔÇÚ˜ÛßQ6¶LÂQ;ò¡ÏÖ‚Ý+íXè“c¤l¦!1Ë䯣Õ+­ÝŽà$ ¶¹î¢,Ñ"µ%5¶ Øxf»M¶*8¡ŽÀmz<°×O„<<LjY`Á6±ñžcìÍ ûnS†Ïãe׆”J.Òæâì³Í>þÀ[Ë_¢ÛÔìhYɵžç`¼Ý |¾ }6æÔ˜×˜�\]ëßg‚�ndŒ3Åϵº2èÆ/tª Y©·l�b¸v½¼å(W³ˆÏ¤j;»¦jဤ/ë‡j•g¢C ÿ*a_VœÉb�åž7ú |ŒÑд—=òæcÇšöjJÃ&o2ÄYÙvS'µ£Æ‘†Þž"+Ô®] &ä¦0î¼Ç7’¹ p0³¢3€ N-i:MànH¾‘ÐÀë¶ú‡ÃŪÿ]+B ‹Ü‹ =H+—FØÐÚË�Lw»Ê@~Ú÷ã×0“b'dÀÝÙU“7Ä‚™­˜,cn$—« ÷$'E¨ÃÙ� Šïê¤-p•H7³ß2mÙ¡ÒOÚ/¬H/¥lÌ~öD ã²W €eÏ<)<-&Ì íYLNÅl§iM´Ñš Z¿¶Rª*ÇÙÔƒ7•=_5ìzíOVi8.-ó ^É¥{“*S³çÔhsè¨ð¢«sl3ÔŽ½¢ÆlÌ×F‘’äú2wçÓS(ÍíÏ[Ⱦð9][zn–û�NE7æÒìèÊ ûõÁ †2ÝI�¯F/@)‚®*9säÆs«î¬,›È¥Ë(ËÌU™y}£2·¥ìÜÒûe™¢#6+òÎ DÎZ»|p›’”t¥ž’ÕûrpnŠM­ K{ŽïQñæMÌóS.Y™²¶BÏ ëy „–”‹Ž¡ß޶Áæ^´ö’Q›»É¼rŽãùzD ;ö¤±]dFz�Ï£Û±´"5JË !‘]¥ç/ÿ7_Ú¡Ò²ÜT蹘( % +` í\¨^*—œ:`Ì�Wr,]𧱤&ãCî�øÐ…‚ÊëNɹSBac24c‰Å ¹ʦ«dm—Û…§QI)ej M ÝlŠV13ÞUFøÛ’Í& Q…�Ƚc÷ #LµEÅ“;ó“Iֶܹ¶µ¡\ÞÚ*-áQÄR�Í=¶›\þ¾gò´îž°KX¡‡ÖK¦^âIØ[^œô¦a׫Ü•X'†«ðÙ ä ÆO.¢ t¼Ó±§„Wôƒˆ¡©á+¿U©@ÛÓ%Ü–$€š:Û}LÅ�G*nCÕ%bi¹5[¿Å\Àpq?´$vœRaè 6ŒŒ ¦ª°ðéž^’*K·ç¨œ®4ÏWz۱܎5_Ôöì)ZŠ`pÊ}ê~`NfÑù…}å+L©­Ixc4ûó,Ö>G M3LÕ X{ñÌó�½�‹{…>¤ «ÑLÇ„îŽP™úUP±£;4¬PqniÎ#‚nŸÄFkP™ïëMÞ.šèG�C¬ 3&@‚æÐ¯‚s§gßû½)¡bì=¥ỶÂ!æ ¬í¢®ü]³šy›öÀüܰugñÃô ý0cz ìÒ\‚¬­ª‘Wçn…�„½=k„õԛxÔi‘„¾8®H¾?ýÙg†À­£ê ÛcT ™ ÄÔ /vË“¦EM£Šíû+Mep[2Ðé§Ð[{›”MŽ™CSõÀ×ÃÏé($l$«¹Gþ]¹õq¬ÃÁÎ|=ŒjÀÒF|¥2u¦›ÃG=ØûvI�¥LišI‹Qe#Ós *l¨³ŠkÔù8©ã¦ëMGhåΥƠPóêpQºx XÀkÆ·&¯C4È Ù '=À§Óÿ3›¿ÛÚÍpfgÃwÒž�K#QB¶ŠûV~Ͳ�†…õÖ·¥L£€½^¤¡¬°]#Ÿ@ð²ÚG;|ú²ž�VŽnk+žô‰™D»¢ÞPKVFÁq•¹�=&KMPª$ÚÆ<0ËΛX)ÞÚÜ1.ãC.¡BkívzI-ëျaËÑ'ËÜïÕ•×öFkÐÙfö‘ng"û-]0‹Uõ�L‚ž]ñÎNb ÷øÁúgÓÄ“©`À¸=‹5(„šÈ×X[èa5ÚCð¢½gO†u´ºs4¨;Á^'5€¶_¯C¶ä|'dlQTœGìžMÌÉ~Ò5�-H&ÎÊ�MÒ¶¶ îCÇ+™:xÓK…æåQ�ðÓTÍÞ¸áÊ+½d÷u™ÍqÑägR�LÕb])¤«¬àú@}›y •*@NV'ü­°™ä5Òœ @, évˆ¬˜_ïBlGÚ‹Ê­)›$H�}§ûÉâ[™VGIWp"™UZs©þÄF¨F+´‹j–&[ãny©…`ïÆ×¢)¾k¡ð�6œkëÐ]$zAðÑ!Ù‚¹ Rò,éÎL’|~2gÖâ‹ Ýœði�­é¢Âgl £bÔáàbT‹� •uYª%¶ðÔLyOÕ|õ-¸­{¶­Ñ©7×=Å>y´©‚ó‹ÕÖyãküÖUîøÁÏñ×Q²:�x²þ˜FOûbBð ;& ›È �žÈèS:BÒÖÊt÷ZQ•*Û¢šAÓ6y¹eò‰ÏMAš45xȤèœò¤ÞÏ/WŽGŠï¬·•+iM©¬œ€“öÈBùêødNÁ¤œËèj8Y>˜˜•#�Ò/˜ö(Ôvüôä[nU¹Íÿ’„ |?Яñ+½�6…£vq·“[ÑÁ$+-P�³ M”ÖbY›æT—Þ|- ð¦*Ê.Ÿ‹~�…9µé# Ú›µ%¶QÕhº€w‡ypè98&JTUSM•¬­áj!½Áºsع—˜CÀW­ \Ë{yç"©Î0†°ä€e£80G%ì/¼½ê÷† 0ÎÕÏdàЬ3E2’øyQŽF�0¶wН¾œBAäVu.¶ìT&yw<•OE3*ÿê9�©¨ãêmU ]RÁ¤?Ÿùº“�|™Ò/[Ä‚å w±czþ;?í2ýÙÝy†‚o4Ú~¦¢µéb¸oBB÷?æhAn RÇÉÚg˜¸Ìl±…ÉŒ×í¬¦º;�8­v…Kd<òa¸Pq‚2¸^dÁÄñ�òÌ¡´7y ”³Gò±üh›ÛR˜Q¤º­fôƒ}£ÕyMj�ƒ­ðy%/fœ»º¦ZéÐ;'±.L¹ì{-C! íÆ5ß­Ñ|Úá¿pÚd‚©•ߪTÓ °——mŽ¥.6ƒ¦yVü°d`­­9è æò¼܈P ò–b¿•…ÁˆI7¿ØÎ-õ'D´Ñ Jª,7–W^�îžB44?ì³ïHúËýœò½¸è¤ùH>Ág~¡€bÚ:ß(^€'ç“ôifí“e…«d8sŸZxúžèÆvÄb׿gƒPXµ÷è ™% Üca¥–]`a”4oš€qJ&Tn ƒæ ƒHjªnþiSÃ5À…÷'ex/¸ðWþºß²Àmú#?.冞IȨ̈èØ)Ô,,Ùß±ÀÚ¼:¹ù{óêÖÍ ›®#ý܋̲¿FÓ¦^÷‰Ì–mM'þ�:FY¤Ÿ{Uóoû‘LÏ‘™ÔL­,=WY—ñL¶áüÙvâLŠx­¡Qí�²ÚÊg¥µ¾‰‡šãs6Ãoçg$·$Q×k¨ãÜ‚Â*a]ÍÞ+ªzÿŒçÜr’O‡¨'où‡œ%Ÿ“ß)]�«¥"b‰Ä¬äoÉV'ÔSåÚ:œ¼7{Q>Ü¥Ð8†{°¡3¨CÊ­�Z®+à£Ý1} —žÃEa„L´3¦äfKQ’̬6×ÄpAÈLÖ¢b¸S¡©u wãÂΡªS¦9¦Ô «ÀòÐ>EOÓMnSi¶~<÷ä»fa¹Ë�›LÊß.µªçš Ã4^›²´rì„­ÖMÆ¿+^ŒËÇ-íûÞóÿOí¼AðÌêñrÝI•tvÆ>«·iéùÖ ÌõßÃ˰Et¬*—%W ¨Å”…Y¸¥±éÇ ðSrªˆx.öŽý$™Þ?ã[³³²~uSWƒºâŒ¸“Sw�«>Í�Ét5ä£ìûpQÇ R¸Øíš“$’0�õ1ÀªƒkÙެP{jÜv&ep6ÆÙ²7ÌggwâJ#)�î�^ò.=þçs¿$'ÁEÌeâ>ýx] C6¯ŸOg1�b‹>‹) AÓs2 izNrvžZ Ô¬øyuÖƒUàgàº3¿°@?Ïû¦û {ϵMëÍWÕ!Úš¢+üÚx£{ò�D>Hsp4ÝÔå´¡ïL;M³VJ-[×É8�yÒ¢ÝWr,`ÎßQû<2)Ò6ÿü�÷B·ùFÜIðäj( jðñ~ƒb¬ßМÑÂÑ9œeyå1&l0¯ZF¾)oq-ŠåãÆÍ�›f†¬xŸ…È©�Càú3ɼ„½4Ä�¼ iG²Š—f£ÊèµÝxC7Ôëå$U œ}ƒU§Ÿ!ò1\§4ÿލ·a^ Ñ—ª—lµÁ¾µJ3�Š‚½mî›L˜œ)�œÌtÑÿê�/a§¾fˆb¾úVÐÀFìF ÞöY’:îÆƒ‰õ�¥ñ§÷ÒS`ŠÊv`‹Mé�œÖÉ‘BE09€†¾~pljsëI…jÞµ¬1¨×çŸéÙö\»ìYÁý¾îŽ€w`T|$Ù‚2úåÆGˆ6a;?qí÷É|èSÀoKeo;~épiÁ-ÏÜyƒ­Ÿç¢ˆê�üú*�]ÐF•GÕîÍ�bÃKÑbeìP†4þ^Ôɶðö i6øgpß £rÎT¡›[q¹R¨Ej5§¾æÀ•"WÇŒŠ=*©ÐoÝ]R”HO*5çvªíågÿW½ÕkíåPšéÔŒ ƒ’�ÐGí�¨ÚM¶Á¦ïoëâ;%;G]k5²kr Ë9Z­+B.h ,Ü!tAhæ9zÛˆîYÌß#Ë•L·O+„ûU©s²þfË4NãÚgQÜ«€¿a¼(ù€H¿g¥W§6Ïœ¥»²Š´„;þÂâÌÖb&›ßL�ØRÆÄ�¶N¸X›FNK‰fR²�™ÙùTèÇF»œy€Ñ'AÄ\&í §¯ZŒøä�s–ôì!QÔ˜ób÷ëBøÙDƧզ#n�ïUUÏþžÜ½Û;•ÿpWÆ[6|މÃz]Õ]´n¤âtè«X8bf�žV+(²–8ãä|‹y½sï…™ÝZÊdG§†ÊŪÄéšfÏJ…®yÙÈïÀa™1g¶ý¦>º¬ÿ·fB¾÷í7'’ÌÇþ»y¾=x¾2é"gº¼º#�mWU¼Ã&§ð†K-öî1oqÎ~½·U¿=[¬kOÈј �’BWJŽC5dz ì>ã'ÿë\ùQti²çCÚ/Þ•Ö~­T=ÍØ×\’üiJ‚Ÿ%ëbˆ²Va¹9‰ÙBÐ9Ð;ÔjšåÈ Y]ñ›\]ÄÝýý×A†u*QòS~y-•c R$XºÚØ{‰f­1 §&ôÅA¾fÍ®‰Æ­£·þ6Ï­ñ¯»@S{Í¥=];ßD üa˜ÎÕ4jMm¥ãOa%àÙ¯zšþ8Ô[òŒ�?óWù.ëA{ i`wßeÓUÅØýÍŒ¯µ—®¹½+Pº´}t®óc¦«jó¬é«ç�;Þƒý%ìLžéq¸Ö8Ä™¿9 UQg ìÈô Šè°…�¯�‹Û8ÃŒî{qåÀ›¢þŽ÷R·!㜸• kÛ³š¹ûê˜Ã ’3Ê:„ÞðÍúG)°ñÛ¯ÅÞIÖV€¥«û:«¦;ªÖÐâÈòÎ{Dv®.p>þó­’M¥„ÑßXÀ$‚%›Y˜6Q—öÅ��ìv,.qüé¸jKÛn»;XìÛ[BÁèÓˆÛǺЛ˜@st>l $ÙfçkßÎó€¤kç׃7®î÷_?(Œެ;½!uãæ. ™Ày‡6©àIhWÆÑÈŸnl4(wBGö£dã ÞEÓ¨„÷7iFeHÍ àýÕeðò›~׿vwÊ·Ò;žƒ³îë”Ú_‚36»Å¿]p�û=jÍ„l_W®Í? »l¾qîÿ‹²q¬ËZ4\x8æji§ôü¬Yºï¹Ì�5ò}—àìž¶¤éIaÛí‘Þ+\ën—gÐ>º–{¹è³õÀá5#ÔøÏáù:o2ùN|Ïsh¾¹$dî|¦s›D9šw8Zö« á“�O�¨`.Ï´tÄ¿î>ußð/fØývÅ<™f”f¸Ø-#%csQnpå,Œ³øz_Ž�ê†ÉØR&>KU)Qd°SŒÔN�…=ÝYvmpìKå%†ÝӲŠ!1UO fHµTêEv�…Ým©âÌ V\FkáÍ1Û`“O£Îl tÆ€Íà­ïiŠ�µÇûÎû}îÚç÷cû!¿b–k¼g¤iVfÚáñ?v|Éÿê•Øêáo^6è�!CûOFŠÞ?¿š|3ÿùYRAé�–ã2¯^oØÔx=•�ÿ…Æž„]l$ç¥yÇ„Ÿxüâ ôÒ7Â]ÿ²øö|;x&NñÞ÷üü§fu}½:ò{löïÑ]Ø?˜ˆ«üÙŽ[ò/~—©šŒjí~í¿mX[Ÿ)º|`éôÒÎGLbë/š}gàÚëà}œÑ^ú'DAWr¨û*¼¼ÔÓR‡Y7@cþóäabø©€Ý­üžÈBýu\ öŸë˦r˜m.ëfÈjë»|¤æ°š!¦¬ÅëíHŠ/îY_™d:—�ªÆ•ÕJW õe¿,Œ�ÔèDUƒ)¯WžŽh7–ºtœ;¹·NX6ÄP+Ür£„_±|�Ûì¹cÑŸk³¦ÞRïì;Ä+o=;ßnI¹©¸«ó�Þ[¶ÚHJ8QILu™yRZNSJŽ; ëh @~<“Õñ_Ÿ—vkw¡@Õ%a-4{ÌÛëBûÈ¢ÀÌ­B³”bßœ€ºžâ‡;uþC óJø:Ñäü[ãíò`I˜²ðÌ^ÖE¨»%Ì…&gúsÕ¥ÎÑ%¡…S�a*³�Ä:wHh[—¡OSËxµøþØ£¹«’ê¤j\DgØBU‡�êo¹·éÊɂ臋ñóp(§�gé í —ý)›¶"Ü;ø3™ÔžŠ ‘<ž’ÈI.•£­4­Ú»À¶/¦|€JÇv%)´URf¢ŸÐœ–HAT‰e¼róÄ9Nd5¸rÄÚ óad¶šömæÜ¡Ö]Œþ3â�´YÊ�Dee“ò)›*’ûM¡Qí`qS>©A‘â/ŠywiâX#€¤Agðì9óÀÓ„kæOç@� oÄ}_qPÙ #ê+Ån‰T'ñízÇÉ|G`ÞŒo,Ú�Â% ðÜú Œš ¢u„C8ŸßSª2lœ”¦£íZvn-‹´6µë�¦ÿ�µ û/ãzÂ�ø5ïcĈ“&뢉H”ý,{|áÈ.î®Ë7#Ä)û/Ó‹À½Èl¿Ñ³@ÂEÎŒ‰Ó ì”.±³|‰²[7v'¿s_Ø3ȰE~ùªØÞí%GÀBíÈYåç�„í�Îä©aánÈIòÈd¹#Æ�(ÈþBWN·Ð,ÑÞúEH™ZªðL`ìq‘^m9)´˜F µÖô8À8Š´r^€œ”þ\ÑL�&qúCÃ_®ÂÞ5d àY­É)h>}É–ZRÓíÚÈQ¦–r¡¾¤°ÌOJ[ÀRñ‚Œii$$¦g¥g”RÍÑ}ü8] ¢YQÃì÷T¦=\4JƒÂÓqrüdp#ŠYP!‡3¢u�T¼› ÿÑ…eå9!Рڀ/bÂý$, ©3cE�¦g¥$dÁ£ÏÁM`“ØÔ�Y[ê-éáæîi™Æ?fÉ•°tÌþyÚ‘Y{4Q=¡.ß›{¿¾¥{¬ŽÞÿph` V¶6éz°JÄÀ3+™S¤J{z’p“.ŽìhÜs˜^f]ÌZ&tøöfIÕc–¨rž-ÂmKžhuý;V‹¿‘Ö~×–P�_“x§­M¦hk�‚WæÁm°Ž…ª­ã�=1¿ *ñ“Ž¥¢£ã„½ 0Ѷ©½ý”�á$Sjè J­“ 9(äZ�\ã ç”á6!"= qóˆÈ–ï6‘±Ù“Ÿ¾üôdìÕõ¯"’’cç“#<ü¦ÔØq€˜øèúÉ–üįGŠf²Ä]CEÒ¸)†ÃŒ±ó ˹|²£Rð´ÐÚȩ۰\ºøó¬(RDW,]E&c±Eô²t:¬šM,aÓòêK´„ØWDMg¹$`Éñe�‚Ô4rI�8îEn®Ÿ•Ψ"F`è=A°s(Ùe<úùü&‚�MÉ‚­ C_ðG‚gƒl·nVÍÌÚ‚nÝ ›Ù`ÿð–#pf&œýNnƒßzÿ·;]úNÕv’Ú`Ä‘ÞÒ¿¼ã]ÏoV $§qc‰¦åb×7º#‡‹_ vk¿=pì;ÓÀÀwºƒ‡µ´˜æ»ƒGÿ ùœ%ÊN·°äÈyq‡‹Ë'2òÿÄÉû·«7;‰u>l¸%•‘†áÀ5AÚ¤| ŸÉÇ㊣›‰4‘ãüü8°Û#¦°÷yü2�øÕ(è1å»´”û¡òÝ=˜^PÔ½qvg{§ÁhÿíEßÜGÅ}¦§6±VHãÊÉE•ÊÊRfö»ïÿKptëX+Z¬ÖsEÞÀ0Ϩá 4E�=Â-ª6*E¦ �yyÁE }EÀHÏÕÈçЋ5_‘PÀUI˜ø¹˜^Q™cÀ伯¯Ò#ÂsUŸz³î²6.5ËYݤå=>>V~•NnˆüÆ­iBä—•ª…$%Y® +Õ hj&žR@XkßÿQÎö ÞL©°<¥ÎÓÚl:ˆ…Î1Q„÷:tí ÄVZ*ªúð|°š%P)Ô‚æ Ÿ×SÓ)Ú­¨rö\ÏPÁ%‡co¶)y µc_ãÜùH}“ñ¿‡ª¬7­À°ÃkS9HÂ;Æ›åøºH…U@6´cÂÅ¢*Ÿ¹ØÖ³é€c¥¤eüÉ:¿Ù HÄ8¸l «K˜<%uyhâÇxµ q»°ÉÃäšP<Zá(�1xhQ6F­!HXÐ'N¡0•¹¿Õ‘ùÙªÿß6%-¶d·±&óáXt„méì}¡JVî:„ó½{±ƒ. …‡SŠ24›i½é9Þ ?ÿMNsêêrÔ$Áò8Rk<¢&²6ù­ñ»í%Žñ“¤@ñ7.:Yfßlljpê|6¡ê6kŒó£­Î—lÕè †{ŒV_¬+ÒõoòíÍuÅá�eòÁCÙôÌ3•§ZLó,†Œëž¯”M­¾N·,?Ñ›©Ë:ŸEÊ–¥ÊÆðõ§{yæ•þš6>8çBþz-­fêl}:W6Ž ÖŒœˆ�&צæ¾búÓv)ç_Ý΋jåR�Gra®åaÇ …`¸;Øy�U¹ËãªÙëý>aÁ:ÜW#Iµ¡¥�ÎøÈîú£gåí»Ï ´²p•*IÈßV%>æëE¬BM»¾µjî$¯JÝ ?¼c¹Eó´4kÒ äC„N‘Ž5(Xo>äfp³)e,¥È�§;e�(Hh¥pW›8 ý7U* ꥤ…†ÆÌO5Û†vóÕT=† Šë*`ÛÑœ}zGåžæV1§—å-v!e-ÜÑ2ÙÅHgÇŽqâwö B³ÍqÏ'‡\YÒœæÅÙFwg˜ê Á´DéªIENò®øUC-¯®ê-´õAJ²YBææò$•{)Uü4xŽ>¬Ñ,7;éÿ홿¨kp —DÑ„k6~&¯ŽaÌ/Û_ÐqTÕ¯ ¬ókòòÌ/ÚÿaoCžs:áß‹ïvÏ]ÑÔ{�x¹SiB§B”X–&…ZÔÍ‘µ'½+©®M–¸ áÁÞ«½ŸŽ¤=η¸ŸÆ¾OÌŒ|ô¦ãÂ¥…²M<ç@p\+ßšzKqù04'¬+K2±:ÞDz)%Èå'Û‡‰*Xîøµköl��Ò_.IðÔ[%�“³ – VŽV�Ó•�ûãçÕH Õ°�½A~ %ý³À¯ ’&nþ¶Y» ùÞÙ‹§œ©ÿ?7{ù…fN5š£û4e>œ9;kÜ×£ã5KKK=pÿåÀå7}®M†4}wôÈW†~N•ï_÷¢ÎÌ�¡ÌñˆêHBÌä †ë›0ÿõ©Íµ9e?lÉAç˜êZÚ/w§ôܬ)õÕæ“÷?»rÔü•ßÕ·Ì«ššëL03mw[ƒéo ÅóÙ+äƒá´ëüù¼!¶þrW S1g|«s—‡HCÏÝÑ1k…t Œ¶êŒfÊçŠ)Éwiƒ||WMægG|¾&¹º-üŠî?î¾^]þͱý÷ä®ÓÔɈ–]¸¥¿¼�Yú2np»ŸÛR™Ú%eϱ´®Ca-çnìHi�t—u’æÛy:F+li\1‹ýâî±ÿd·g_»Û¸;l½�ês/{ÿ�lrÐ:‰ÒRpé]k”õ~i’g w? êª$é–=Äô©·í ±·'ÝJXÿMòóã!%wÞcéCä啅Ÿj‹¶Ási†Œle]àǓ€Èd×ìá°:ñӜ٨êVw5Q#)êAÃ@¯AìÑAEQÅP2Í1TkÒÖ´UoIÈ3Èk ^]WëŠ+ê´°¯™F“í$ˬü5í2Š&aò¡2ŽK˜{PÂ`¥±h›�Á -ü´Ð|v_îìþÜ«ûóŽNbE Ž(›'Èã0¨í÷ÒWì"eËiò&³÷ÜÔ¬ì8Ž‚®�c=©˜Â'éæ94r;�dÄq*äØQÔtÌ–÷Q‹Ìo�=ÿ‰óoâ EÕ]HDeôG2·œŠí³2ÂfsöÈÛÝ—Z‰çn±à óhùL¦‰!æé Á`j°àòr¯N4âãð²l¼®ÆUILlä�šŠžžáæüO›Žœ4áŽcD9é* _DÁ ¶Xð„|24å„úv_9º @T¥1…|æŒqðqb]éç³ 9FOø}_K@™—ªÌ—d�ûðä tƒŽ€ƒ]´˜†‹-@×x6uA‘Ò¢~ 5zˆrŠ¥zÎPÙ嫈ė  yX¥`ºU¤ƒ“Ó�Õtl�ª$Ü 2ñ_úLfŽ’ÀÛ(Æ"èøõ=\ÿŤRqù™ù"øÜ|Ö? ^­ð¿ó"[¹¤��ˆÌ-j©ßâì’ÐèRÇ#Z!TF®Þ\ �‡·Ÿ†œSÃ9©Yx6:Ú Á“¨€:Dt$ ÊÇbÝuXNÄö³�¯¹e½åÿGÿ‚ ¨þ“‘ݲóÔüPˆÚ|üÿ‡eH ƒUVa%¬(Ìëb£KÅVÇŠ�þYÒ’Õñn6`IL-ɨ;•�Ÿ;£;O¹�]´ê±¢ÐÝbc÷†À¶äòКd®(ZåiQX!3“[¶¸ÔÒgû8u %v •ãÐ/q_§ ƒò4yç¬|RQ˜Ôb#ìVòçVÜ¿Z\² yRBûìjÕ©Ù¼zÇýO ü‡2«g^uC¸OøJ!pד\�±&¹ò¶s»s�Ìj„?·BëCï&þ!y7ó«ófŽóNi7ÈÜ„ÆKB`'6–6`µæ\Ú–ésžã̶ §S(ÒYÚ1åžäï³ã Ñûùfv'€6~JÍ^Ó˯„Ì9sªÈŸbç|÷d‹NÆwÁê“A¸Í­ÿk M»'Càöà’ßíôÛ’Øöü¿# òN³Ù{©ôö¾J_{Wþ4Ÿ‚nÕûu‡hiR(ö¥—�à+ûÓ°Ê×`Hµ‡Ô¾;¤þÓ!�¯iþº®õ ²u™°¥RëÆwPéíöJ_·Uþôëʧ~Séï—úíWqD`x¾‘õ¸~råWk»! ž¬-çK=NºkCE¸X6)[\ð³–»œqO­þøg;÷õ„#6Ç�;W®¾É«¼n߸îÆB³S/ùNaÓðv¯‘ó€µ½ÄÈ+XÔÑ;”Øõq/ZÄ.¡yäà¯ÞðåwuI¥FžÍ+-Ôö@ÏCÞú |VûðîæÎU‡"«µ{écÿò./ÝG»4ëúÜÁ�™ñxÕÁøRy¾²x‹´ý@— b|�¿ÿ´­9‰Åî[œéߨA/Ц±!DÚþ^ÿvÚ+•™ŽãóÝdˆ9¤‘½åÙExä)Àÿ(J ^ߣX0¢¨�Cªrí?}lËG|!Õÿ§‰þO�ïÙðE{ÓÞ…óßàu¡4j�³7»9zÛÒâÙ3–Ç�~‚»WI½ã)Ö7v…ɉ¯É>³¯at¨væ?âæöheŽL€;‚û#½ÔGŒ$h_¯Ã#¹»=u¢Ôuj„Ñëqz¨8›!õd„¶¤§*YÊi9=þ©Çõд_:õ!ãåAËa¼ NT<1~ëu–{VÌê/w}¾Yë8¿…ÒwÍn\:å@gì,¯õÁß¹\•]š}±ø5ŠðóÚ¼„Þ�ŸúŸå am8þ€¡6•¥™¿œÆZr~‰5‡·*.—´Þ5‘¿Œç:f6ÆŒ!1‰ðqU#Jη;— µ/�Oe–ÉÅ\:Ö*Å›!�¼Jb Ö SŒPdÌì_­‰Lšòê“[Ú´»£V‡ÊYãáx>»È•úˆë)„Cv}ÅÓËG%väcC~Fô<íyRËWRñTÛ½é0„‹r‚Éwl× 5A‡ QòÌÕ(W®MˆTðKØ­‘§Ç³à¬7’Ps‘0 vcúakÔØ„Í÷ôoÉEs�ýBRë©F€ýM·¢„6 «4� x?°&¹Ój÷KÅI”X° Æ<â4¹�¿4šJO 1ŒÖ“ñ)}Ì๳B$E®i2]�ˆ’Y0-°&hà_¹ÆY:_Ž*6E�øè¾;�òTÖÅ×Öè„æIÂX”uU­ GÝtGpV+à)ÐíÝñ1BàZzéòJC‰Ù³àAÐÛx³¸ö ²„\ôÿJ¬Ù㩼†Œ¤œ% D‰Þ#·‹ÅjUÑŒÊäËäÃÎ�âo”ŸOåÖ~¶^g¾·�$> ñ†¨~§¼òÐ$P 9¨B2Ñ(kìT–�MÞ(Ü_1äiÉ"1ok G«y–+”8C“‘䀥&3ï=]Î%È4§>žÓ¤rÀñ$õf ˆ÷UµKÄÜÊ­“²˜˜÷&‰Ã �5Åû^2L#Í–{Öõ2º¬J¹MžaÊ„Å.ÏÈ@ Q¾zpÚÒö0:C'õÕužN×�¦ÞCïÎby ›ãγ½·Va·�.õ”qJª(:/ÑSC“z;=câNZBèRjkB&f†ýÁç±ÖaR´"Š‚‘�ÔÕ ,œqî’M–¨¬èÀEæ¤`Œ>æQJP9 Z!ºªœá„ÙfÂÃ*YflWt‚rdM¦ú-ˆýë7ÐütehLŸeSê11 áà@—±ªý863°èZT‘ÈñÁÍÆÝMA&ç‹²Ž©¢êrÀ¼io~Ô·[§³+ �ts�ÁV»IVå‚çÞ¹ý}{q¬#Ò°¬ôž-ïÆ(òßlÝ‹—‰K;íD¾­åÈÒg”‘�Q-I}%å4™2"Ä6˜Æö¤¥(~uÅ't_˜"3tnÌÒ -�á± VØ84(mÊ[gí91v~^B8•B³«oº.¦}ÛZ]ˆu]‡Óó+@b©‘”(MŽ…Y†�Xßbë5öá2#¦•íÖ jì»íÖÃr.Äb¡Û> ÒjÞ3JÓ)Œ #zŽ=N×å\…eX¸‰k°í •Ên'Œ±­­ŽÒmw&6 A?$å”–Ç*—ÑÄÅ·ƒ³È/2¬õØy—‚uaÜ¿f0¶¨öª¡[æ5Eqqáå½ç•MçQ(ú„v¥ùT�!_t´Õ5A{ J÷V•®dþu¹ÈÚtÜLF“í6$˜ÈÈÈ`G\|ÉÀ›á 2�/*ˆPŽ™o”Ö“PÛ]¸Z À[ÖËÇ$A/hR¡Ü7ÙäÆÓæP¦³f>³ká�e°Ô쓱J…�çJ�Xçࡆ�WêìGšÞÊ€þ¿3áê�çÍ)üÃÜ�—(üœ ,ìÞüþÈt�ªï»x'àC�Ï ðnžµ²„€‚f’TðDÍž�ï „+]ÞÔ ›Å,R`"ã˜EÿºÂ©À ®ïIÑÀ¿?¹&JžÅ} ˜rãÀˆ¿9�÷Zƒ­ Û*î;ø_ Á½VÛmÖNÊŽLí 5–[?/Ù¿õËÂ)•!ŸÐ´˜÷xÞ4õÛÙ• ÿr+•Òšþ×îþËy®Ë@7•†iAÄŽ bú-mk\údvôPkŠ”q×Jõ ß â�ßi ­†pm`¸ðçNwxMe m®Â, r.yDˆ18b™O£q“fW­Öu0Ô”±ƒ^(Ü�§lšÄy£’)KŠYùÂÛˆø“G›„�ͨ`™å[mñ�7ž´ ö0Ü3Ée5*0 •./¼?!NAsrq*;˜eZÌ3X› Ö€3˜uÔÆcŠé̪Վ†šýwó4 = sò=“$Öäé¡+Ò‰‰èÊYZn£¸µglk²|fJ?‡õ%ýâpõr±ð+#_¾°2Q>~ü ._©ïÝC5 ¢aþŒ+§°Ì®¢ö´�í�!²v°�^zwå Â0wµÕºÝ2à�ÉŠR¤i`'š”¿ÍªzK¶õ+qM½Úù̦ÞgØ,Ä£ÓíÙÊ.#î2ÇJ‹úÙáPY¦DvÕj—>¦5ú¼ê£¢ðŒ(Åvk”‰”J‘¤ÃÌÿïrϳên3ŸÄy¡³¸S N¾<‰~¹6âƒ.ú�©Œîúuíqøøì¨9ëÀ7B\͈,$ —X†W‡ñïfgAŠl¯-¿MŒ]»rÓ8ú÷(œæ˜�¤éŠQö>Ó¢áç¦ðUšÒg›Ë‡LóÕ7 ”ßVD¦æé­›†ZN;Óù+Â%V¾Ð¿‹aBœåZ—Ø ì¸`œ~.똑 Ó ©i»�.ì`íjz¬ÄÓÕ;¯Çpþ\ª1$›²N†àˈ]±î^rµCÆ+- 6;§á‹ÿ‰õiN(rd‡vH&{Z´º8NÄÿVJÞü\ÃíªT74Èö1ÊÓEHçû©Ér®±Véo YY#êJ9_ªäئrðìû9#_ãœ�g'•¼oósåÌK¬éÖÆÜÄü,°’ÔtIœÞ—FPd¨G··¿øùFˆ×ìóçX—Ëi´uj‚“ó÷G Þ¤«•w Çè|³Ù6uo_Ò«Äˈe_]4‘‹·0¤b¹á¤ë¤ºr³Ü`㪔|ùíÑãÁ$ļ¸�ˆ¶v�Ù Ÿ�åè§aoÐkè àÅÛ ’+kŸ?A–ã;œŠwá»Hò€Äˆ^¨#ýž1Å‹ÿYÔP6$\T„÷e3u•wÒLO8ýÒéS]¼òãŠ.Ñòì§g#l×s#»:ä‡Î_M^I½óÂ}ÉwÑZfùâß§Êè¿M“2Ÿß[b×öÁ3j÷¿îêfvà°ïÚ›¯ýҬ߬̊Ÿ?´2ÝüÛy»omßêØ�Ýãè¿»pþ6ãê}GïÊWω?’ Lxß ?”¨N܃؂0mñÝBÃã¤õüó­+90y)E® Ÿ§¼K]�JÛ•öm:#=1ýÇŒð OÆ�ÌÕ™÷³T²Š³š³fkeOe–ƒåÄå�r>Σ (JŽr¢FQ¿£Ð)hÚŒnCïFŸE?FOcê0ã˜#˜÷1¿±l V‰CãD¸*\?nw-w)ž‰×ãëñCøyü9ü½8™OÊWå×ä÷åÏäŸÉ¿WPVp¼àý‚¯  …#3¡™0NØO¸LxLÜC°ãâ77‘&*ƒ1Bx›�âÝ¢CeJ²&,JŸ¨)ÙKàpaÔÍ'§¯™‡¤—ƒ%(ªÜÉCyê�RRßøpqGÁ­Ý̪V™{¬öåÕ-TUΧI�|þúòäÞ7¯.DxCŒ:l½ÚùJö} �PåNÊSï%ðÝnÅjàÒ_nAÖœÛþ eç¢çĪ,üS�£�þä7–ç`w“û Ï„6'—ƒPåNÊSï%ð]'¡F8�çðÊùãÈî"^D¥p¬k|¦Ü‚¦Ê/‡“Úr­2´¼-�‚ÀèlV5=ºÚóèWÎ"ªó€#ÙŒæ†1ìö áûžfx¸%\¼XIýFó¦í×O©´øï÷¤1Z4©U1¯/ÇvÒ±„Œcc0ʺµqHkÃÊ;• ÌÐÂ(†V¯šËÜ X+ÔCØìn1ex½Û1äÕŠ·kAÿÏ£œ×…¨›Ãôƒhg3ŸÚØÔR"Æ·À³çX¤¾ˆ¬ïùÑÙÌ©J£éelØiœl�*§æŽ“¸ÉþNØ„éˆñ�iãC´v`³8îDÛº‹ö|ÄøZ ¹øËÐyðI’¡V[>ùˆ/„�‡¥¦­¥ †Åæ-í7+Ë•ÜQª˜Ðüè;½Ä¯…ݪÛ÷‰Ü25Ö=#}x¯âoVa‚µ`¥»Àƒ*cXM"¦ZõsQ‰DJE˸Rb¥URí’û¤fÊ,C vTZßÙżL¤Ö¤ì<äùœ€FO� ×Ú€ûW3‚5ô6},W%gxL�ÞkˆHÎ G¥T¦Kx½oº9œ–ŒUÙ�Šmaá‡8±Zôª¯´i£p†�"+^yÖtd«'��Ê®öý¡d.ÛgQ„|>!l�ÙIÙã\Çžãä¹ZfH+íào È ’ã)hÕ£‚–BxÏE¢ÉJíÎ茛3Ò¤ýÔ<"DT<:‚snBbB�œ [$/ëÑÿŸÃ«ÍžWÀ g¦Ð†‰ä·1(£Ö¬S>Ç„¼®ä>˜O' •þZªXjó `Xz·pØyWL�Š…™eA �qØ„pŸ7'kйàƒTh‰á‘zÇçPKŸ ȪµA7G­,êÝpz{ðÓ£ÒýYV¸ ÉΦ° Çá¾Ò4{ÇÚ¬Þu§¯×�x¬Ð}›ß?/è~¨O ¸ÜùAè‡1¨•nVÉtÊ ‹¡à€ÚXØùv2¾êjäÖÚ¹Îò­ùÓ„´\w¢Wh+™FV³µN>zˆÓ½Ë6rÖ(ÆÉˆ d ¥þ7[”ªÀÞ= —Ðzý‚ /g%S*v$« ã1 —¶×eauR$Ù€ÌHR÷».¥U½ Ù«å•hòÇý y¿iýÿ×ȶ·Q�¡õüÎÄv»žSٷ玗¶7‚ÝÄé‚fB bŒúS+ìéEи!Y>P3™�EÍLüxüëãÊkúÏý£Sβ¶óÄâGh‹Ð7`Ì­rM†©§[P·Lj�‹tÖ½ì±FÁH¿YÆF$Çaf¥UH¼$}j¤Ñ׿îûª±»°ó �ÚÄÊ{(9°¦³¡LF]êm,ƒß‰ÓÕK¥¢ódÿ³Çí\œ”M¥@‡N›—!Í÷ð{pA+à˜Î¦‡ô�;–·IT í oÓ¸1’×ò§°¼JÑfîª:* �Bj wR‡r‘�ÓèKßE—TÚhñìhÇœDy Vº²–ü}=là"ÍÀˆQŠ–}L]©°HàeM'�á\HhAÄË¢¼Mñm¥Fø�Ç-—À%sab—æ§Çr(§ê©¨Q«š– GÕú¢²£ð– Ï-v+¶nåó…Z³âöËÈ.¨iÒ²-ËRRžÂ”²x¨H³eиJ£E¥Ò0D8IIBrÆ¥” ùM½ß;4ØÝíƒÆI*Àò8ׂU,Q1 Ë14ãÌ€¨6²Ù-€�ÆhÜ&æÎÉ ¶,tT/«šCF`쟤3h-ˆM®ªªQ€KV´Õ§°—E']¶ª½úš&5Z}åÔHôüpÅ/r€�¬k_è<¾u8‡äGê¿7ž‹!_|é¯Q ›>õ×êž*: %cÁ Aà^‰fu·>ÿí¥Ùðñ}Þ¯+;„£Ãáõ~é›Å3¯�ÃÖwˆù¾±h3T{ºÉ}>)ŠêûBFLþ‡ÌÐòq6NŒ†ÐåÜÖö Ú«ÅÔ�DŸyÑ2©4С-¾‚ºÌ)ý»@CÅÁ•Â`ŠYáþe›s& mëj*‰`oÚ`-ÁÀ»$wl(ò ˆù¯�(T¢¸ƒ_Y, D(B‘î;QŽÞrͼ?$O—ž)Y7?[ùö€t ^÷˜ß÷³ç/øv axÆZžøž«ëD4pk<±öýλ·óq¢m~§ä¤;ÊpV°˜ €ÎûÍ“èVAcª\oº§y…B²¹ ß“�’Nëý‡¾�æ5`F‹üŒœïÿ6b“Pûž �no„öÆèÀ…Žâ‘ñ½ìí…͸ÏÇÎ�*m<-¶‚Ã2B¨"°e•;}ò8SH¦lyW))ãŠYË”u‡¢©H &1Ô-$gț|QM§¾B"±Õ3W˜‚ì5Ó,“Õ–ÄÊØ$qº²¸Í{$ .÷K©ï‡<2sËVË%Wæó4ͲÈo–àk÷”’sfþÝÏ×–©ê´žñÎélâ4ƒ±•б3Íáˆ%mUW@{þÒ.MÔT[ÃÙ£sK-y·ëW€µåv-[ °áK¡ž ö´FÊË5÷çî¼0×çù¹Þz¬ ãÜl™ åí(R/¯ó"ãm?‡Õ‰C³ õÿÈ­?¾�žÌK%�4Ь’÷>oá1©gFæîÚuqŽh`·çeè§OR‚WÝð–àæpØx¡ Ëð ï †y ‚ËýÅl» †#ÆjNðy­ó»«…Œ& hÄô±2ãˆj�)‘�ù8û/•2z‡øEÜ$Õkë�5W¼Ýv"d Õ9ÎdgKŸ-(ЧRÐj€˜!ËP£¿5)ee°�9eð¿¬Ú7]âVëõb�+Ûm|AÈ*ø®«ÐoŽ�wââþK ÝügœÒVBLÙe«§›¼,´.]q/[û¨«á–Ø+<;—¾x’%àÜPíÖž"²Ï)6ÊE\ ˆï5LÎŒþfßýw@iÎ çÓs�‡9UqbäW¾+‰ÅlÉã<ÿR$"GEOA)úF§ ) &ø�«Œ;8°Ä|¢d¹YeÅž'$rÑ¡«ñƒD&»úZn¶RÑ3-nì†ôËÍ?ÿâM$,4û¡­jgâõ=E)ä‘ò˜ÔnŠ×Ò+»þ¼u…²i‰£î¸‰‡H:Ëæ’kÓ÷€r¼ˆ/&¹n-ÊF&f?.¤Ñk†²b˜^mÅÅú’ª­Œ Cº…Ö.–^YoJ¤«Bï&†Ó­¨PRs¬n\³Ms»— Úh:°AIþokyÛÅÍlÕzÊ ŸEc�ÂÃ"C A­” ¿�̶M“;ÐÞ|"øùͼëdÑŠUŒÎ:U¡ÇC~iäcq·DÞ ñ�¢³ùfË£aÅ0÷«Í¨íü“Åœe8µRäÀÑ{²îÇìK+¸ã(JêÑn_¨O3㶺)sé›–sÞ/�åíV¶Â÷?NŽ�‰Nñ]¼ö}ãz.W�ô:¼ëúR5½&1U±t‚·€¦{X «<ÏV-°'̉ÕBpî]z;ka3·#Dæx-Œ0 ¯{ŸP�Ÿ“ Nëv¬ÛY¢¥aÒ‚¨k!û6ÒûÐ+A:§à‘2Ðßk&¢×š—L§Ù¼¢åbíÈéÿëÝQ"À3“àTnTª‡+X�O%Õ³0,"w}WÀ 'À}°NVÅh‘å Ñª—Ùñš:ÔÆý†âY->s=æÏ1$%ç0œ.æ¾¢sj3 öX�:&ڬȠu"c†ÝR‰½·døxÅžÔ~I‚^·"!âíò4"R¡íh18úÞŸHœÝFïYÔËÔþ…r™n :Û¥†8“…œ8ÅP²r ·•“B”L …'`ËUô�TåS™,Õî.múô£>t.4Ù .…k¬Ø! ÙüžLoµk[½<ª�S½A-Â�7†úì×yÓò¸u𭜲¥m»{óë\õ3#½qñÀ¹~”Yõ§g²RàÄÕ$Žûd"Zç;Ò"¤ß^¼ÒXÇ^öŠßî^«µ„/Þ{š€tÜîy ®Ç•.ŽÙþCw,Tàe|~EÎ*ïŸ1¢¶38èóÚ³H�j!�Á¸‘È•…͈V+?žô²Ôî¢õ‚ÅÊN™Àý3«åµårAL¯Ó॰�x©‹ò,tk¹�lh¶d>^•œb:�ÚN|ìñ¹Äm­çFÅÓ²§Ô­½!ˆ´©Ý´9ú›y=qIª**º”Àë“+ºòB¨>.FýþqýYˆ? ë7T+Z=yój‘/+šß¸�§iÒ—eCÙé $!KÏŒH®ô̆p©œt:ïdw‹1];èLÑ41.q©s¥BQQ­]gñhô¸‚ýúîž^‘/$2Ô–-fxt1GµUS5#Ûqà‡Oï½LCÈ%ý¹- I«7DÙ+éT3)ºzϵC¹L¼zÉ ”-ŠV½l¥uݬsõ³ Ïp8vob�#²ùª¿éHf“÷CåäðYïò! ³°8¤-´í´Éñå’mË¢fåô|Ë"�Þówz¬!4' «´•ûí“ͶÜ!DÔ¬_7µj�D}}šÛä¡„\é·Ýv¨ ð¾.ûFÔ¬—TîáΆ^Ðÿ»ÛpÃ20‹³i‚çkóÏ1˜bf+mbl±`6¯[Þ›~:F õÄAõªÚ”ÚžÜ×Á‹%û?tT?ÚdÁ)¿Œ=0þ&x]Ž Bª|”*^…�%ULw'¿fì©-Ä| äŸ.îÑ¿¡¼Ô|.F«‰ß†Ã€�Ôÿ3ùÛß_oÿCÔUTé/B¥ ]ô,7F>SÅÙ0<«ëmÔi‘ÿ{”y±8CzüÏUVþ—L¾ná §ï7r…-¸Ë…�W§«! zq‰ *º©Ï"S„¡ Zd³#¢Èc*sÝÙ *Lêk¤Y–èÈ´¸Ý#₨*}fjG•a1=7Ñ\{-‚á´4ó  7†tÓà‘z˜³? ãaýY}8ޔ̑­É§;N/8Lr§‹ªâ'¿Êí.Í=U=™>ÑŒê”ÌVGbÛ©³C Ú2k·ìýpuA™yLßÕx�Ü�D‰"›€ñÄ??—Íw’ÑÀYaŒ¿¾9 !¬m»të뻤ï¸HóÇz­“é“�(O(nÿRk»½uéÐyïEßãwø³QXå‰ÕjN…=±CG† &ëAÌàØ•gÁôQ¯= V;s‚®áAÅM9ç(‚8ô«uXáey>9k¶¿I’.©pj Æ,€*J#åh%YCJ ªÖ[�·f–&~P_¸ ·!VYÂQÑì°¶ië*•(ùÑó:�ÑV çsÌ ’<›N�‹e‰³… �Ý݉%>hF�RVûp'�C¥^¹ŽüºWª@…x•-55µX‰Ì¥öpqQZtð¦Åçreß!޵¢Ð•jÐ=Ž‹@*ñ,aBíݾWch ·îHZaq!ËG5,f®¯Åäw;ëUµÀ‘ÒN RzÁcÞs–�ä7š#Á1á@ûºœ1[;^3ìM—ºZ³Y×~â5Ž(ý‚„Î"ÉK¾,áÒ™9ìá/9+FSäm¨éåB=,N5vÆE¹üªèÃç™ U­’o¿$ÃÌX4—+p¬ç>|ÊN7�|€~)†f37ühM‰úçz´·E×Ì*êۚƙ$�ÎÁ-�Cœ‚rÖÉÊØ(³?sØåQ‹-5> iеdÖVu·ÌÑŒ0¼nKBÔ'¥ªø½ cdËj H2qΜ͙Mš‹äT[?Ðïf¿—ß#€�YMûC£$7Þ\ ÇýÇ–ÿóÍF¼ó† åÒsÝzY¥ÆMðqI@aœCØö�ü‰Ù ñ$a�z(ëC.eà³zÂ3 HÅT\jhRÚÍ`°eq°z²×Ëñ¸ïMS€N‚,–e„Â+­4å»U4µAÌŽö‰Œ,§º­ñ!»:µùͦÆv®EJ=ÁŒWT¥P›´$ýPøO F%3¢¬•³;�ÁvæmóG²•‘'›káL.ø,>Û7"þBxÙpÁ<õ+Þ¥^ã¶ìycӨØ-¦4.ûAbì»·z—TäQ×u¯[÷è_‚–û¥'¹Óý-ã•Cê’–^¬P±iÙÓY;BÚ‘Ÿ|êÀÒÑðÙt L;éÃ~ò8¡å÷ _YÍ�í6{5ªÑº%ü”&d?Ø÷2€Ny]÷Eí.u•Ñ/=Jžî¯ë_­á«TX¨ØV¾K–•=~—EÂ{íêå,EhwÙ>å;Ý¥À2\�eºjrjHYŽL²»Ãjt’ÇuMlÕÞŠ?xâ�pg`'ËP")Š»Ò9 .¯‘£#}HLŠw©—†èZÞ+ßSäêöžUo‹>8nú >L^´äÙâ÷Kt Q’·P!些Bæß.-ñSæwû'UÇbæ‘׺èJ}+� �ò�\¯>ãM+ØÉw³¦æÚMüØl¨®è‚Äþ˜Yv\$NG�i_!g¢÷͉¤µjøæC­O5cÎ hÈÆ'�û®] É4¨ÙkS¸#¡þÞz¾³Ñ~áW ¡ _f ÚEúÄ?Õ¿¹j½Ùï•¿};V'³+j�kZ†Z³ïÂ(üT!Íþç¡gUE!gê §"ë ¯˜<.#ÊK¨¿!0HúÄ¿ÐðQjÏÎø$¶ŽÂ4¦&Äb"¦¬M^ÓÅYÒ°²†‘¤ BJ.†•É<ÁùÍÕ|o ™„¸4LÔ& $˜»ˆ�„pö½ˆ_e€+FE3Gi’µÑ óa#TŒ¹²Lo7…KˆpOÞE¯ƒÁé�h +Æm�/øÉíyçÇ•wˆýù¦«Ö hÅÄ-¥ô?ÁmúSá ¸P<¨+¹Ø„V'\H¿ôatÿ3�ÚéÀ¯_9™ƒÒù¦ä“*!9HY"µ6Ÿ£¡Æ��Më¬z¥àm…'æÏ/œŠ%”tõEýd®¢Ó‘KΚ8vk‹æÛŠ‘E&ÒDI-°7ãù$®‘X¿4E¬&Ϻ0ǢܺÜZ°Z–9¥3‰DÊ-€eÐ#ND0.…4­ybÜ Š:Ï¥Ý1jÜa­+PÒÎÊâ[;bšºšR.]ÝçXž£’k>X©Q”£ [ÍãéRµ¸í §£²/+FÐÍ#¶t…Ü| ˽ä±èÛŸÓ¥4…úõ°y´=�5RfH4'Ë-}Ö^Ò2$-?õ#l—ŠŠHÀc…‹7™ƒ]…ô6PðV ÌäQ‘˜v˜·¨L£%°8ƒãó14ˆa¯�‹ÿù®ŒK¨¥›vžñYâÑ+>œö9Šb’æ´8kºú73‰=Å…¡Š(ÚM©¤oZŠ‚¡;ú<’ÆOïSJÁÅ¥õrk[=Â…žâ-+u¶Gd¶�YðòåöÆ…³·û‡�AÖ¥¤@‹†9ðÞ·8¶øÙbäR+c�Yðê§t„Ö³¥;k؇ûðž/™tÔõK ”ÿwÁù½¬¼Ïr½�AR7”-¦€˜ÿYQ°±)3Ä/¹éþIËv-C8ÍïOðÿßwS/çãÑ$±”ÒºÐ1ÿ³â5ýŠ…ffvB1b[x0H)ý0áæ”FÉ]âvà?ß~#GûR%i†²ÜŸËßy`±ê,—Œ”xý †½_ÉIDS06F ÉàOÞà}å˜ø¢5©n�z§ê·†{<†LÌÄUJ�ºT;á…X̃Â73‰]x·Ð¥/ºD$Ètµ®&j%0@Ê›ä²Îí’f#;>²ôëÌïjƒ‹w7jLu¶Þ�½gH¨GU#nÂÁ’Œ]|¥˜lDs޶‰|=h¥•×Ê%-A3Á‰YH1%Å •›‹šÃ8½’Ï¢t¸ÎñP¢õ‹Síͨ77} \. Z×�†Ž«´×7.φÇóÎ�“Èž. tñ)uâãó)ð>|u-sÛ�ñÍHÞ�ƒ9¸*q¾!+¢Š’„ 6��Óº}æLx÷bæA€\HœÌ*)Be‰>â ª!„£Š!L•¼3ÏSÄ6TSÌ¿ktôEìÈÍ÷Ôå…³t Ÿm!}A}c¬Õ3&m#eK×–ønBH,8»R{^õ|Bøi‡®þè\)ŠÊ¾I‚Dâdñ&M¬ûK¤içÖÊ»yÉü¢Ø´9…à âÜÀŒfL¹M¤Ýˆÿ³LÓrKæè‡Ÿ$@@Í$£¨Ê»µù•��c÷Seë!-6úÇ>+BÛQHŠ÷ ÆŒóSÒÓ3 ªWü(cXƒ¥xÚmëDKU]Wqt÷7Ë¢ÐëP¢ l×W¡]xB‰ñMy”cJKâ:Žj6k¯�ïmlôéó5i¤E�hŸ€âay3÷‹ÖôFµ^óåÛ?gÙ¦r¼\PίýùÞ/8®ç‡§f%øk¼J5rXÍ>ëYö]‚e­W«u&‡úôéüí¨¶m˜?%ä:ûìB—ƒ(Ëv9”¼®´Ž@¼n�úy//F¥?8 ‹¶õíÑ¢d8f É�³£0o7|œôìÔ^�ï'‚ýgJÕ �#†Ž§sÿãƒÇ)3²™jšÆfrŽèŒÁXOaM#þ«²ÿ; òÀËWÀ�ÂÀ=‚®£¸¿¶µexvÐ~5òcë"5êT%s„ÒŽÂZ%n‹mâ„P/2 ×Þ€Sd&ƒ"B¨¸¢¸zw[$�@Õ©¨1Í Ò�…øïþs×yœþ ÑÖ½ ÏRýä§×Ÿü <ãðËAB#ŠŠF°r_Ts±Á8÷#\¸µŠt$‹î=e��hãùÎû#ÍVÿìêC ›f¸íõÞæ„M}|¨™ñ>£úøÕÄèv†r ±CD>ïîaîÀ3‰=pŽTÿ\U”Ra ÑÆ-ê4[ÇGêž®ÊDQ6báDÜA‚s…³‰H“F†¯_Àñvêešøy4þ̇5(k�𶈓äô…ØzŠ,åÅ‘ÇVE)—ÊŠTŠtXàó»ë²ùðñ»/À{ݽå#ÕérŠ€›‘bÆdÓ¹äÍ@4\ÿÙ�ߦRYGGß“cçª5ô:¶¿÷aUbÑ¥éàUâlÑŽÞíÂ�›‡|¾�¶)é¼1xp÷kÝ Fþ-¤ý×Ó\ S;zÎÿ¡™‰>JþØ^GƒCÝNéL•éìž#îb)¼:e ,\/¬ŸÓWUÁO"ÄcÝ™ï¹õœà e³ÜCpˆ8$�v³ê;Ñ*À¯Ÿíh_`‡¼0cE†EþÚ"|&n�¡EvùV$É)°¾R"*ÁV¡`YÛµËwýš­n‰¿Õ”‰U¬RÇÅò:jÂ9Dv2Oó¡‚› |.ÍP±L{àe¦|‚ÍFqq:-'÷ÜL¥$81%‘™T<•Xó»œu;×>Aœ7±&`Ó>*lhLl³,ö¯ñDÃ’†OͳÑ)E*8–ãÝnm"oTü£¦=oê¸M:ò:ÄWy‰ã”A¤›ë�î ŸrSL¥º5¸¡êH%¾&ïµÅÓõäÄ|«:£>Nòà.œ¢÷GáQ |b¡Ý(NN²Y/Q×µ—•ÁêkŽhŠ–4™—<¨”y^Pꀖ.‘Hú$ÎÐV61¢dÊl!áOl«áÂé¡?6†µ6ùØÓ¡™¶:Âv( ƒ�„…QH\šÿ¸iÛY=D‚Ql<�êZùbÞ‘€¡Mx&=³Ð¯ZF~j•R]4$©ªäS©S®JJp3žÞ†è}¾åºÕÆ4i̪’º2* ÎÑD 'UŸM$6â(tÉñ$ ‹1Ýéµ¥VæáaªR-6ÆŸÛ¨Ëô�ÙÞÏÞò‚œ*ƒM G†ÍñQ«J1„™[8 ›SÛí3­y«ê$Ä-!‰¿‰'aØa­n÷úSç½äÕWf‹-.>#/76œÚÇåÏSú"j5Ý/ö L5Ibàž^â 8Ñ)¶Î’}�T²±óv™²…:rR�*Q“iUü®ÖSSœÈs�Õ`ŽÖ“õsº®;òN�E ò®ŽÏ *¿H’ÊÇY>0[‡:ÔbúbçÙ(™à!�XjÓˆŽIª�eÇ6½ú²@Å6œÊ&¶ëùuK =SŠ±Ëƒ¦^(˜×”S¨…"Q+…ÓM3L…£¢e>ã)’ÌãEÐ ¾�‘•õBB ";"�kœ+˜kGåc9�ZK¥´V§­�MSÕ Û Z™ÅÕm,/Èa ýHTU…M•Å�5MÍô»&t°šÄ’ t=–E!²B3Å´9®hY¦*iï[ýê«üÎÅÅý‚gÃsT¡}-ðr ÑÕõ<ò­2hÞ[ú}¨)ô·š“He1gÝ5½+v¼ó‡Ôæ:ß°ÏÂH�“z&�#V3DÛ$·Ÿã~°Éõµ”hé8nµÛqüb)r9¿\¯¸:ë/ ú©;‰òÖke6Ayg^¬žµ÷ ŠŽ5“g*QµßY²Ï¨žÃDF‘ AÂý£,£ª W(ïH•Ôƒ¦ex^N@Äý[IofP$\‚HR(� Ï8 „bD·8ήÝpr—œlAý=c•.•Õ™qô¯_‰æRÙ}`ìÝŒ’tfÊLÄ—ÄwðPd:í\U‘p¿â2”âEÉÙ®û?µ–~³Z›ÎùRI”ƒ{êcÎÇó4å*;ìN Šô‚› ½ð˜\êŠÓæ?¼+8K@ðÂ^Õs�˜éf×]1ÏßîÌëU‡ Kp îw[#ì÷D|=øb´¬ªŠT­(8¶å—ð aM€“ÅKš¯�( cœ.¡o&™Ò)(„ºk`©`tÿ‘‚TÑ[ £ýQ;h-æY¤ÅŸÛˆ´8µËÆf�ÎïsBÄ% ‹E65:R³Q ‰Kôž<šK\ µÖsaê~A‡LÖ¥]«Ë ©ö®í´¿²¤°¤±nzæ …@©ìà�°·YINŒ?e9H°zðu`$ßÃIõµ¾Øw¹Nûrg»�¢1S-Ykf •ò¯T6[–¦ø{–‚óý¸4ô¤ò².ÛaÊ`ð/Ýg²WP`0vÒ™Tð¶„Qá@ÏΤ®ÜÐ]¢gJ ê«ELp±¾ÙÇôèÙ¢­S……¬ž1p@ËoÊ´(ï°—q÷g—U pn©šöûSÕ멟D…àÎ?¯Dâ¬U¯e ÎQ&>@Ã"Ì/ 'ðvÚëUn^”`%jS>ˆ32{ÏdÒô¾bï‡rvšûz³rx›ø¼=í—¥†}F®Td[³j>7öäch=5•|óS¿×vëÖlm £ý›tÂð"î6p#�ˆX¾íZ8&�wï.¸ª«õÆ}n¥(FîÑÖ•|ýéÿ®ƒ;\šô6h 'kbz!qMð Ü�ÎÜU¿Ÿ§Ð LÎnÊU;QÛñм•ðBxÀyî?öðv¶KjÈÈà8Çç½Ò#¼·â÷†:H¹D`0ÂÈ—”¸ÃŠ"1‘•Ïà�íÄ›@¯Õ‚‡“4Dbé^zcìdZ, n‡¢ä…SMP}³±JÒÖ`0À\ÞñWH>XÝ>Ïü’P¡±˜•Z#g“ø)Ÿ¯7~3›�Ør'ßCŸKk^d¼Ì 4|©Ôìb±tN–}‡‡ØAPwyþ�ZÕÄ%FONm^ 6Â~"4Y­®i6ä‰Ê‰{@¹˜‚J ­Ynl¶gS„ç`lx�YRW|ÑaÕš%x2‘L£8šÚJͬöò™„?If8: óÒ bUsfŽÊ§üõxÁòžÎ¢0jÓïàgä„ß:rró/¸Ñ_ò)e5ŸKG»3 Ö¢�$Iö…ŽÉ5Ëã7�&‹'¤.SߟºYÉí¸ƒg­’�?³rœ–ŽtŸ «?oE1Në<2hèUÑR ãÑò\«Ž¿‚ÐèkÀŸ5¹ÇõΔbŒ„c©søëUÖÓv{>{ºb†ªñòÓ€pà=—’<ºT®5ZÝa……‘cËP%~œt;<阞+ïmÈäò:ëC}çÊ–7¼jµÈ®,%4ÍfŒ-'ñvª¯N²²·bÉ0ã>‘É5&›Í7äwÖù²Gl”ixâÍöé�]Z?ŽW½47û™R¨»$낱ͼwr鬔¤yž÷:ÇÍÎO¾YÏÑç‡h~·ö•T^- ´{›ÙçÁÐɈæì�A™5‹)è·|xm'ó¹öuE=ç�;Ç#Æ`YèkOÌ-âw"…®²Ò}<ÆVn22NVú'gÄvÏóS®ZÞàoõ“— “qyYMë•\Ñ¡’( Ž_µÜ C p¬°Tý�pµU5Œï•Æë�É­fºŒ¾Â±œšŒøiSRÉ^®w;]l¯.8…»çíª ÿ¼gVóLs»?>© Õ*ȺbS¨s�%þÈ�¨°'¯ ú‰ýþÚðŠûf”ÞÆ„«é‹R_ vâ~,gP7áXJÏýB¹ˆFr ‡±!FñUEíNÿ)»šjzì@ƒ‡øj‚ì¡8Îm±O“ ÌÊPÚ>³\ð×#«…ézõyÔÇ» £ 1;ª²~JAÊ–æz™ê Q^xfÙ½·Ò'&±�+—²IYÁ6_í‘/eºÓOd4GYdÒ5ŒA$™8òiCL{Rd,µû½VÇB\³y›šî5+¶nA:y^©ÙU”ƒ+•}%ÍÙGeTšN{Mˆ³ñ0Qˆý¼Ø¹5Ï|šãO€ß¹Þ³Û¨ ÇÖíÚ$ýS©ñG*Í NM«ëÇ”Lˆ¾:…sᎃƵBV#ì0¾1¥§oøƒ¬84A 8Sø±QŠXÔí ÀéžâJ"…CÃúU‡aÔТ«F$cFÓ:ï²(Œð¡,Ò‰IQÏOÔ£($­¬Âo ®³§¦hðÔŠÌßxó F&óyCD±¯ê­‡Þé]L¦O£ü]5g×OŒOâµQ“|™r8èeh7è²&7éŒ\‰§¨xÕÓ‘/r�„ lNûçw6÷Y䪃鰖0I q nb ±¦5[24¿+qO¸j‘VŸ*ïvr¾Ž"WšTbqdµÓ$ÊX3ªèp�õß"\4r�çkøò?3ÀืЈh¼�#¿ø�!Gwzðâiô\­p4eT öûÅXÕh/ÿ4»M‘ÕvÈ3�ãéµý éK[]ðÁûÿ.( ‡ 7œøë‰dŠ�à“Ä4êµÅ7ÖM¶÷ÀCPg b…˜h&ÏÎ1EÚà�Ƀ 1×�vŒÔHry)rßJ,üyÄ Kœ¥ŸWÅÔˆ™Ëe¥Ý7£Q°"—�j>�Ve›‘½ý?;ø‚¢ÂM² ʸJûÖ¨¿¡âV!Ìó$ôÓS)%!&b‚O4ß;ŠFÎC…,bà¼a¢7d�ö60Ø5ÕÊ“SG(ÁãèÚ®¨Äþ¾#iŠÌ$`pé[ËcHüšëꟛÁ©ÝªTVT­ý5ð–é¥_qŒ•JôÍZGD_SõüJ¢èk¹é?Xîp{þµi曇3GûPe’Ðl×›õš9ËU»gü£ú­n»ž ½£Žj/µËôc† ·û‡ ä²·.ˆÊa�N˪ËÒs5Ã;søÕyyWA̓ ODûOWœ%Z��—®€2õB1–àA/ãÍr]»¢+ª»kx^”•òâ(náÏsõ } ^óÅC¥/ !îº2Ÿ¯ðŽ ¿aq5+˜……n3¹¶ÔN§]ôÛƒ: kŠ=¬VÈfU•{™xóÿHȵ 7~#IÉ}ùîfÔ/�9T&òÁ•1ÚYaŽæí¥é/ƒFÅ@5ÓÝëXÈØSÊ­À¸¾ ½Lô䊒ÊoÁÜfûh0iD]D…µ Ìi0³Y�ÅJƘë6çDÛ�ÖÝli@­ÜqáÙeÕG¤QŸ‰aÍû˜€Iÿéú�âAízÀÚhßÿ½LSÞxø†õ±7Ç D­S­¾Ñš¡ò½¿ª·Ì¬�fœõ¶F«¹_Û:ðTã%¾*íݨ[îü ö2À^܃Çã¤ÃÁ°”à•$á+’ÄÉ€q ¢ÎJ§ÉJ…EQ�oUÑ¥²¬1bR}8Ñ¥t‰ç(êé²Ó‘¸¶Ãö)51]H©µÙQ4?¸nÙ‡aË›Ì[¹*ñdI‘eÑõ…験dÞ/¼m·‡GP‚?‘R7M´÷�xˆ§E™'ö9�³Ùm�¹m7FéWMÞ� š³ÐÀÑXXw›ä%_T–�V©¾P@áx|-à;F»ž‹Ç×{õ㳎GÊEÒïO˜(ÕÜR!3¿@™.Ũժ–6*ÉkÎ\wÎivûÓEç$GººfN«©âÖr% ds†9‘è�©±.È)õ …1ÒÖ ô}ìàdˆ¶Å-Còëú•QÀe7Ùð?Â,à ŽÔÿ™+º¡3Üè”âXË2©šÊK—»«²Û<–Qdݱ*ºn×à7s_Ïqn“RF0šè*Cíç9Ö«VçšXêPÒŸz5�eûþ}Y…Lfqvra1 åz­î¨ë›Ï(^®Ùéx½×ÅE¡by·ríI%ÜïXÒ,¹d,rÕýë[ýbZ?œCqr»Ú?’¤‰6ÁÔåÇοÂ,̉uÍ¡Me„`œDé< zYι±.5 æì0N©]ãeGV,WWœ|‡À3j8{PåK¼ âVLÍ çFk©Çi/G­ ­" {9YÌç *(^eŠ›BÇR:yÉ`(ŠÓeA®ú“QT{”P¾ªÚà.Îþ9æÄPCV‘d(’Qû£‘Æ7!b˜;ãŒååËç;Z¹8C×&ÚK`‡ `Á)¾6©$fk¢ùïÊ“ë?X"Ê<>ÝYçA“à߸áÏ]ÝJã~Jȯ»øù7Eˆ.�«§‘gf÷å—ðÞû˜dýGïÒ÷Lí #ù˜=|zÃt! \…ûüa“IŒ"üˆ¾åVk3·Æ|ŤעÃ�ešŽS–]§÷Ëh,« D…3BFË{Õ‰§ h~Ù€‘‰m—æä�ÍYÄéäVêƒ_Ä›$½&èZ§?8iê‡ó(1†"kÚ-¤’^a Ðf˜Á—N~£ÚqvÔÃÊ:Ö;'°Šw2?ö5oЊb[‰ÄÖ3õ~gø oû;ŽPÐ`·}ã Ù,•LU7(X5- ‚�ˆ†f§ˆßi³’:j™'þÜÅÎ0Ðeço"^¶–ã:<±­qY iF“(–¦î¡Y0ÑÁOѲ#R8‘±›à˜1jª¬íanز�’ ýÒN½~Š¢×l{ó4 ¥Ó˳èm�#ü¥Úâ¯2#0ûøÆ'(^tÔ›8§+.#™†žZQì.vÖáz%)þáíu[Oþ?B ‰–¿äLxåË(˜©ì}ô…rŽûa˜Ñe}Œ<ò_MØóý_s¨¼ÊŸê˜V¿¦pO»ëIº#ƒ÷®˜öÍér­®qY¹ÂËJêÏS¯¦èF6MÀQ´ ›LTwõØŸ”/þ˜9þº*ظö C1Ô±ú²y“Ð’Dó€ë)ð•¨òÌ ‘lœËwØdS„f’I²Ó<@6¤tvžaø´¸uÆÍœm<»¬X}¤6�*áÖb¼Òn󙺘BåR%ãq²†›åñ« 4í»b[ZN÷#Ìô/s´¤“Éå’8‹u–!v�°…ÖÃôiiÕJ“>¸{$£MÁní/Ûu¸©¨Ýɱ0ŽØßQVÄõêéÊšíw@¶9e‰zCƒ‰%«øõy`÷¨¥éö–b9¬Ê›†÷åT^ÂI¥ Gl¯Ò³"ñb» A íòîࢌ8� :‡JŒçÈâÖ†[Á‰måž°²8xw ô ½‚J?A³þ˜ 7ÀìX…·”}·Aßom³\ÇÁ]ç”í¤b fa=ì4Þ–t÷‹ÿçèÕïÿÕÁ‡j�é´ëJ�°7ÙÍå—ƒ%pöÒ­Áo¸ÉÆÇq5ãçdeeT¼ÓN²ø»×^ž¿Y!‡ËFAæò£¾Æ'á q@˜¢(+êxNÂã—i¥yýâ×JÆÍ‹�Ç`´S¡MÑž#î#³å“Í–æÜpÎÌœq»§Äýà+è‚a01P¡Ueê?�¸ÓëÉ$)@Ó ¡k|tÍR»âî]KÔµN«©^müjA`!õέ[?ßÖ6[+x_À¸BO@ª,Ñi!«2Ê,—}Ž7³(ŠqQ'S ñè1�ò«šÓ:1qÃ…Bts3 vºÃÀ“2 ³0*Å/«§Û4…)eB2Lî"çDa/{œI�ùC^-8ù,Ì8¦MEéq-/N5Y†'Áì>%–ò@ý�¾~5H%‹²¡ ›q¤È»qíoÍÖèLßa‚²ZEWTzyØô5s®Ü¢�ô‘»°ÌYeÀ0k¾ ð=«½²qGb'è–é´Tñß�*�¿o ozœ¯ö@‹¢01Ž‹‹ä£S� ÍÎdÆÈ‡Y*"�ýRnë;�àxày¾Ê�wF'ø`—‘k¼jñsìõ:ÊMDüVu °Sñ*§'=ø9�/\Ÿ•O xÝ�Ìr§zûãù^ÛI‡ƒJu$éUZõ£|<•APEp2ßòéë5Ϙ×m ¹<}>½ü�'ç¿ô^Co«—k,­ À,,¨(ÚlõËT¢Œê6«÷t'g#XTœ%M…iWDu#ú4t8 çH÷&!‡±¶$­`r¥ò§‘³uÎAζ‚·Æ †“ñª£’uý«�˜qŸWõhø1Ñ^nß TÁSÑöRÙô�ÆM®27<åÂýÈ߯CN&*<„•ø tÞqó 5&` ;R Uò*Ö•4J‹M…‰ž¤á#ð™Öн¡êh•€Ð‰…Ò¢OÜj�³ þë˜mÔFË `‚ac2ë*Šê¦!q·’]‚8—4Wu¿‹ Ú2nÅtó@� )€`àØeÔ ìXQGË!¤ež £šx)þ•VÖ«ª­èTÎ$Ç8…£À«ek,Ãg͸BªÈeŒK ˆˆ¤XÌ2·T‚AàD`¸�S/A7Õ0Ë'­1 êíçÐpáuàÝ0´â|žx:DZW“ÎôdÝŽì³;¬__<2ö|=nV㠀ĔLà©Hù­šZ9 î»Ú¥¶çæð#õ,¡ýd‚£rRh§4 ¬Ãõ¸3‰né)i!Vé!µQâ$ôb†EK®Ý�(yb6Öá”T Y¹xàñìÃØËú]$ïCÚUgX]!#hÞ^%CËOÛ¬9§^zµï""�ÿâ²N%$Tœæ˜wØA)WÜäŠ&¨î Degß]§Åõh+· ¤X©H¡*þH�Y@¤#üUÝ ]³P,Ž z~—‘ðjÝ®ˆ#ŠC™¶´÷«ƒ€Éá@‘[+šÒ ²vè4*£RM×ßS߯u·íeQÆÏ­Û-álœ 9Ke°`¦ü�‹·ÛU-}ÊÓ’HÃ?äË�Ô±­Bƒdlqlr fBRG{ ¾Q1ìæÂR—ÂdÀŠ6&ö�Ïnzñ^îØû#1D~¹àÞ—Q|Å·à#bŸ!Ô°å#¨Y½£µŽNþù=»çß FàgàA�@†TùónÚ‡¤–äáéXW¼#ô§¶)QF¾ºÅÜË®1�…Î^cÝSñ€“Ùäâ¿5×£ÜpÄO*Ý ÿ}GºXVLUx]µ‚v Œ6ã2_¿›yº,ÎÓåú`4ò8Èô/݇Lôžgä¬QfAÀ®(ýYÖz¡æþ‚3u!œÊ˜AÆÑ„0>UÕ\-WoÓ¯«¦^)dè(ƒCb7ÐgâEn¹’9Éž'£gæ¾Æœü qÛ� ­ò·&�åþ$uê�F�Ëä/Ø� ᢠR¢°ÝÕ-~Ë:µó­ç1ðÌÜž�‹!Q†RËóØûøµÐ5j꫽cÈØÜ,h)„�9E”åe|@„}WïX s1?q¾NaBAàD¢ê…�‰ŒÖbéÝS4"K⚎’Q„¬ø¨(‰ÃãlÕÆæxg%ˆÙÓ³”„Ô=FÊ£s~Éþý9ÚÎHF“õø­Óéé wE¦W õx~ )¾VTÏä•’Ì®Ü�£��>k‚YRž,Õ:˜àÌN1™›úR–èzæG|/3u˜·¥Db&}"iÌ Açå0V#ôÝûù´~ ¾ŒpÚfwˆ�ŸŸÒËa¬õ¼ÓYÚ šä—å„ÉõèxNëÂzX2²QJ� ¶Å‹w[“i‹+Lý%,6’âlQ8ži²pðañ‹ã ‰Íj·ÂºÑV”m%(fƒ—K‹ç—ç Õ�!Ë1~»dùfœéP/ö§ÜK5ta±¯é wyú¼ZÑ•�V6–ƒþ{¥ãvòtÉ·öܳ‚c_9øÎËvw$1 ÓXh8¦AÁM³¨Bø»1oMº° �®Ì5L£='È�ìSD0Ù™­‰]•$¥äçYi†öúõÛ(tˆ3)ïÝ~Ãd9^\Oó’H'¹Tê%‚�H[ÿ½"í¾¨¸§õŽÔXèTqüÉ�¦‘°yœQtzµÏâ± 0¡ í¡7Áö§Ýá¹Ýw÷R€& ,Ó÷|·ÌF0³ú2H‚²ìzþ�SA·  ý8¦=IèÌ%ÒŸ¦ˆ¹ÆÔpºˆâ:m//™DW³ÖÕú]W„g†t#spBæ- › orN5ª”„F•Ú|ÎíWt";]çÂ]b' iÑÐ!- qËD¤@DöåR�Ø´Ó™ÏÚUZ*Žs2~'~ãÂ?’¼ê´*«cu!›J$Ÿ,Zäý—+ø²+kã•©bš{™¤eþªÏ•/[ÍÝÞ®ùwIÌûÖÄûè¼£ÄýjD!ŠVw‘,Q8 xáì¿Íwôzðì§kÄë^v{šùÜèIåp�Ù@ê+˜¢ Ú`ð‚${ ½×bWó«Mi»/x9úŠM~/ùçeÍG J—Áž˜Xq ¡mÆüƒXgÌÅ ž23º‡]xæýìŒpðÞ‰ï�oÂÈÝÑ FÄîŽÉRäƒâ3Apž"kñ§@Z0{#xïõ%ãà±ù5ÈÓ–¡æó\ØŠ[ñXs\ò%¹,á¬Ö‰îPxˆdTŒ¨‰︩"@NÊnÇÊ‚>®6zÙ Q˜Û…¨6·j Çé¹*· ±ÍÁŽÜØ,ÄaóØ�öÚ"g¿]©oÂÑO«s1ð+b˜N…Ç8”Z¨.!_¦&„³ ¯áêo½–jƒµ£;Xn ú÷夳�‘Ùh:c27)Ä�HÝ`é~uÀÇd­Fé­J*ECÌ5 ìÛÂË¥{=÷õ]Û’z«m“ÄÖ5ß’�Ôüµ‰Äj&‘ &<=Sc69FŸeQl(0Ç]|ý4÷JçÈU*¾�%g®ÅŸ(D}Ǹ¼W»« ‹@£Ugª°Í:€„)ƒ"H6[à,(À…Ô'ŸÇi QéÎLøMúN^H•nÈý®*ÍYœÒ# Ò›Õ vhî¼f�ˆù¸< ™ø.ðŸ%:¨�9‚xÁ1,KñkžºFÁUê%ÊŠð×öß½!4Ÿ>R¿!à5B£ãj¥í«ìð!ÁmÎE¨D[©ßQŽHÀ�å?Í�Þ“/é ;tÀ@FnGtÆ� &óŒG!1ª½� d�L½rvn4�n­^yÈS;sH >-† ÙÄkS iŽ6ëI¿ÛÒz üì�µ>‡[Ä=*Û=NÀm4_T{Ù»qRî�Ô+†´l.Ÿ×&˜mŸéYÜ÷HziªÒ ¸·œ’˜,ÂE¸óL1§2”c9uÂmßè¼nÏÔ®™'YrkcËKòò™.î§¥Ö!S.ºoD¶#…ò�-^l¬ÐåÖÆön[•¬Û9­[‰;eäÁ¼Y§ê–zGeÊql­!,³ÊÌ oNòžéÕ˦$äÜ5ÃåÐcö÷ëüCùíéfÅ¡Ã_^ûêõÊJAÀÚ v¾7Àâçp�«Ç—5Ÿ{” >¬6R�¶ØZáõ “›Æ€kãìÖ¸¸MzzsëFï ôô¬�Ü_ò˜¾[€¾ÄI€»kz0¿¾f½|óüá—ÎÜy&vx¡áߣ€†0 í£—ÞºõéãÏ?û¡#/<çÍ�øKðRÝ·œ‡mÚåAVàÕòÿ:2‘M¹1P;DV©XvNû�KÍ^¯S‰eçïBSÔq‡B&ò&ÓÖ£ýdtɃFàïˆéEq”pFÕ¸Ñ|má$~¯1z?‚È;lè¥"SŠv‘öbOÚÖG¡hJ´ŽóÝ3 ´Šµl1mg‰óUjUeµ…^;ýÖðOüÓýà¶%)•cA¤’lÎw)®hGL©½º=±Á±bŒæOÿ\KPϸ=cíté%Zëç/(² ­5< ‡½+Ó¥¶WNhtÃY»3�•³w›¶WÉÔ—�K¶Û£‚Bâ#VJuâôë1ø?F)�g÷uk#j8|¥B“&£�vC]¥D™¿qr;âû-�#8Bîþ±Çõ¥r,oߦ°W’ÖÁ(æ0ªŸ‘¦`ðÊÍiªg­K<‡~Y­@bm‡ß‹`£^zÏáþ.Ûsœ€³ÃÛÕDi=+ðT©öÞ|7+C›�-\ ;jùæ�°Ÿhêÿ•žXG$Æj°ÿÍlvÉv§t¾´ÉËðQèG1¤šYС”NS.àOÆ_4îuNDå¼”'¥j#ùÕ+™Üv/µ”tRtµÐUË‚_PäåµÔù=™Ïð¬öýÙ’�i9U¡ Ùí…�¯ù£†½{³\B ‹x̸ Ôƒ•)ÒÄÐÃÐÒvß^ûW‡gÃ{žÄϰ5)ÜcºÕd?²ÂÁ'FN X¥3xbSQ"E•$–½©Açè,dV¢×s"µy=ÔD€ Z=‚’šÊu ÝJQRD¬,&°%q;î-fØŸ¶pêÒ˜øz_ê0™‹H Z¥ÕÜ� ûÿJú˰��ªd� �º¶¯½Ã:ˆÀ�9ÊCɨ÷Ìõtœ"θ:¼·…Õê Û�[T½^£]&~¹¿PPgtƒ“åÆ"¥‡ò ç:ÃÊ*ŽkÒJS+[É݉Öj�}Ðh™…³û�+‹ç:ÏòËés{®‚eàd®T¤ ‘¸X­V²1…¹õ°„¹`j§c!Â'¼_0»­à¿hDgÖ�N¨ð7Ü3[Æ#�ÙóNv1ÐcÜ”1²�¸n€ñ�]ªZ#ë�!Pª­‡Þ”³În&ë´©™uIÀ�’$nÔÚî·°úÇ+wì~ßçþ!kxv^*·öI9ûúf<\rƒžl7ìxvñ40%Þª¯œ™}Åíiðùêë¼®jqŽtÉJz_åj8¬ÉÔ`»MSŸ¶XÀ¨e ¼aúüŠÖ„”Xzi$ýYÊýÔCǤôÑ!*áÈÒpgULIn>ÃÏðöèÂ6£«dU®×38\³}Zé.þ|$rY µ”ñžå׈Ää”Í5½PP×a(iª"ëáá+*� ͱ3ÞPÐ#ì'¾—Ä2Ï4ïûý�×X\* uüx45@#(òÜ;Ù­B-,¹½Ú°° ´Œb‚1 êpV©p–™�¤•G�âªëV#7AψŠÄƒ�%ªþ¹\S:�í�#¹rœeég&³ßÜÿÿCvËHoˆšEÓ‹ Ùíß™—‡WºÞ^i·¾:œHè1¸€Oˆ¯$) ™g9~Á¶ÅwÞõrß ˜Ç>/½òJz…Q}I--{ ÀçwÅ­|÷XÖ1ÖÆ=îžÒ¤Ê6X˜¼Í…çeÓÕåœÍ"Lj¶É¿õê˜Óä^a„>æ$[cpü]wŸ{=Œïîci›Ì=â~J‹†ŠO1ôùMe¦°‹{¿ZMUЮp™ïÿVÇÖ�lç%NjÇ ‹ÝÐwýÝc–2¾×Q¯ë(Ã+‰tơϬ@ý‰%Ò{¦fqrÊé"qsN˜YÒ}æ‰SÊn³õì6A›ö-îD[¢Aþ¡%�CzÍQ=ð™EPî‡&r·]'Çu'/ÆQ�¯Lm´³}Ÿø´Ÿ&J³[ð?¶�»ì2:Nç¥MP)m‘ö1­§Â(Çr|0œ[!QÝ!N›ú@S•8y_ËPçó4�‹#j0d±l‡7k¤ãag‰‰�ò©mP%¾“N2Jý5ÄPó±j€´DÓݘ‘#_\MA´Þ‚½%©xÆÚ7õÝÁâ4áùz§Û(Ûo !$~uÅ?]ëÜ~Wϧæ�˜ôóÃòªÎZãêqÁQʸVd·ÉÝâäºV•©¥5ØOLS=ŠzËÐ-cà5Óø¤Ö„–-!ðŒ�? ~“ê踔~šH뤼GåtV KýTÃY¡ó°@1L¦¬Ôb)'G­úY æ\Íuë  `Ùˆ—¡tüN.§¦æÔåV.œ;ÉeÔÅd·íµJf{nëcùÊr0ÉÚ†ØÈD^鯎Fn& g+16ò5pµp-ÑÛÝVYÀçþÌ=ùGjk#Û�Œôl­öúƒõKûÓŒå#‹&9\À»ð%Uö?S#$¬´BŽms| 0õ¦gBù¸(4X?háHÓÿ¨ãv #Ó¾c&8˜î¤gUæDÉìÌÜñ:y…™É,»ÙobŒÖœ+?w�910Kѓ㋰ÛjÜ`´@!vÊQ4,öo«×;ö±]÷Ed#k)ܶøu‡ËŽÿ…¼VöÓ„» lž×g6î`=×üœ¢)Òv™íc½ÃnF–U‘'ÿ@-¦©Å¡[E‚]—«¤Û¿™[d�öXúWˆ�$#œdr·•µ?�ˆ%ä. œˆ<Èü[lÖ[j5�¼é8Ü»0¨ð ŒÃ¯0Î:ËAÄ"¢Ù9ÂÒ©� j~_†­Í3»Ò­Q¯`ÈüÿTÕàÜ7½®ÆCìJÏ9GMí³ÑͰy»ëÐÆ…ï?¼˜u¸A@7¤i¡ƒË8xI{^š¢s!!ý&å9U¢Ï¤dÐ.ª€˜¦jÒ2þM÷Ì¡Ê𾪤Àá⣑pƒ·qLsâó3‹M OB!ø^©JnÆãj@#»[çöFÚ®‹6 W’¨»¼E_ý(ø·û�5‰4ÂOG£�‚Ól;Iû¤P¼¤ŠÂïűžÔåâ¡åÐYµ ”Ì�ÍKÆÊ\ÓLB9,[6½¿¸bKmCÉW¡áÊ­á_'ÚÖY—d‰”PåÁ£e’ 5.'~«ðµ,ò ®êœŒ3Üi­ò7r%¸]p‡ÛZ‡Q,/ë7W*=¶ÏYÖZ‰[ZAÒ™°ç0Kó ˆ€m&` $˜ `�0 œÐܾMnE@瀚™ƒhYO?W©`'îû�vr»O8sC¤6ÛÊ’ ì·VÉÝz&%p30>Ä“'ª}dòD£1¡œ•ûÞø#{’y½Ûv:Õµb€Å’øíédQmj¾JŸüæ}ÈOÓzûǯŽò•mnÜ?Ü­·Åݶ=^(’»ßP X£9^¨Nk á(Hl 7{gs0>*CšúÎÊ&òHsÊn-P—~Ë&o×z ý·Ì!è ~ÍçhÇ_9Wã~£¼YþûRXÞéM­5_UU³J)~/¾!!�ýðCr$ßì¼sàËõ8ŠÄ™§ÁU2ªK�ùI UãPÕ«ßóIb~Ÿp¶á»ÀqT+¶i4d]–mܪbð˥Ѻaù-È&ŸÐglÏæð >:éÈ Ã…OßÞ"šæ3ÊrvñÈL­»>¹”5 ¼]<ßyTR·¶%V–S£%üK“G³ÿ"¯×³Æ30INI¥ ¤ VQôrÛúQ#dáš'ØŠ\(îÎß6 KÓ²ù%ü¦’õ ¢%¾@·ÎÁOnž­‚?4ž{¦9æ{^ô‘g]?�‡¿SžÔ€ŽKCÊÔ;Ž›U¯�®ùTÑ< ÏHRNã£%éÓ}Fx“|Ô½vW³9Ûzë]›…ìËY~¡;Þ©n6�¡zÌÂ#Nâ6BwÖÀš#Þ–7Êï|—Õ%‘ùK_0¶s ?|øê™„Q}w�‡ý®–1ÓD^s}™­ìŽ5ŒJ$3›vã$û4ïq6¸«òòþ8…}}áL‰Ñ±èFÇ¡ÙT (OUˆL¨Ó¨5•ªkB¹æ 1ñ×fàÂñ*^LnÓ¨k*uGÅÐÞÍ•Umïc�«7¶ oö“7Zqz,×3£Ä}†.¤cfØ ƒ£´C‰²‘9�t,VH'ÌÄsào`¨åìÐéß@O@à@lv8‘ºŸ[”�NÉ–æÖÛ\�ÏLF¯lÏ,jïæk,âÔM[óÃÙézLv›ËEÉoXœ´›‰£ñ3ƒr'Û8³žÍì<ž6g)ˆ`òŽk“)WëÐyRå)J£j85àê^?ZçㄆvªÉl!YF™3%Ž”ªÕ65‘ §ÅÆsÐ8_ªU ù‚©É¯Ë·ÇÊWªƒÅƒxý_qp߯škvd¡ZåA(Çótm™l3ƒ 3å˜àf½AwÐKAOC¸íXç�ÊÚ!*Œ?‹Ifûo·?¨rÑtžd‚AT䊕y¡Ó- P€õ�¬ŽÓšqïCNƒ3Mä­G¼Çåx¦Ígù¯w¿?'@‚Ò!(°Õ @q,È•gÛÙžw ÔaDw¡`ÄRÊÔ¿o®ø|þ+ïË 7+ Ç€+qî?dp¿HNeóy¼G+K,õýßɦ²ÄuœÈ“¯„‚šº£P• ’æ…üð4Uœ{;½s~jl‚rè@nAÚ”õQÏPµis0$á=ÜÝ1º¨ßd6Oþ×h²aT ‚´žv%G]Ô eA"R Ü¡lžaA× ˜¡f‘,²ìeÉÖBC¼•ª�Àæ’æybÛ'PR4¼Rr’ÎlŸ6@a Ûq“s9¢,!D-IdÅÝöyžs^"®²ÕO€ÉA3·µ‘»€"7Ê6:‰1£àâñYû<…ó¢*Z ·¾üxµ®pñ"Y�Õ¨ÝCÊKþBà(Š5FÐ -(9fîÆ~Rú'ÖÿÞˆGNxmÁYU°([§^y÷%÷ _¨?y—·0¿‚d–‹÷2ж&lû·óÁí¸÷Óâu«¥EyönÌK¼ôGÌ«@aÿW[!øK$yþº æò®õÁüc}é瞆‹pâ=Þ©>užL6é ÍfRŠ0­;�]hq–Hè½IR=ö@ÅZ7§á+]àÈu‚„eo:u»žð·Ü&*¼Ž´…xL#Ü¥O’½ìÞ9”Ç=ƒ|`s;Œ°¬=\¤ Ân>©Z†¨wÄC­‚Wn¨^ƒ?‘-”Ëà�¥\Ôº{U?>mã`e"õ5m#�Qx¾®Ò†¾sÃ`šØƒX–ŸFwžkæmÙî-H:s‡1¬Ä6ùÃ,Mƒðzµ9y;ý§YÚ:øAÝvÀ¼Œ °F1lYÇ_BýuñZEk!ŵZ!yÄS½Ãlv?›¯,ë¥æÐ‰£¼¾Øoµ¢bµÈ¿9Ì'¡m$üK‡÷|’�+ýLü"A¸Î*̵Ã×sßô÷^)=ŽX»®ùýÞøÖúª:[ÁñÛêX —H ™\nJ² vrŸ†Ĭ. e›L'<žz£ÄHH4Â8‚)̓Zƒüœ )¬V”*/ºT ˆW�sfóW?¸ý‹ÒIŸoÔ–-ªÃŸJ³ „nõ�âU5³Âa8È(gYV¾ À‹zÿCˆRM(„V"“þ| B²íïGdÈ< Ý©?qOþaHÀÌJ¯l€wâ»ͳd¼ã£/M V²»^â º¦3'¶ZA�7Ù0½“ÎsøO ÌæD¸þŒÈ\˜YƒW2•ý¼gf rÈ.·Ï~§JÓ„ÄHèòDÒNŒ‰AöÕk]¾€"‰lI�ãµR>u>ÜU~(�vöS…üeg¨±¦° —ãzÖºµXT”"S’B[N‘(lÉsiÛLx†Â§0@3™5Ž=”ÞÂ~¢Sô 3Ê{PVK”RÓ^Š=eè*åTLGsIüùìì€bt=@#9x%‡¤}~££ÊBl=a}TÊß„’¥$>ép+ªWíÔµN2Îä@SÀ · a³ÎËÕ#(™.®¿6)ˆ{÷½¨z1hn!¿„Û\–I%½ˆcŠwL>]0_Ç™`áFPóßwƒŒvWäçÙ%tÖj‡å„Þ%ÿïÇS¤„~湿ó×Á7 ëÌJ)=œ¡¬úxîÌì\º�dª¢Ãv»LÅ©<]jŠ,1eYyÍÃ~ õ¢‡JÊÚ†Jt¢Ðhk¬éE~B§¸JgÀºQJ’[\÷¥j«*7<‡#±aâwˆað‹È¸(ÇqÕÈggr¿ †•˳R7å4Ý<%­>÷‚œ¢'úØÜì¥kR:É52%L©²".Ô:£÷àÙÀV:ºç[::á1t=2½�µöÂ+’ÌkË™‡­Ò90|ô FC¼ì’-i›6+—)H YŽ¥émºSã >LÄÙ^›¹[j: [w^kÈHGoø3H++G3õìà³Øò8#6›Ç=åfö=®å¸{T°Dî¥+ûä+˜õû`¦Œø÷e�Ÿ«Þ¾aÊÏ×!î$v Ã;ŠÊæy<7G{EZµÃ4 �ÁÎA2Ý’Ïš¶nåÆe˜B˜ˆHýà–H¥½Ñþ˜3«æáºù¯ÙÑnŽ�ø/ý¿Z“Ç—­ë h½)€‹Ävž)7ÀŽ+È–ª^‘× ¤<’IC9¦³¤y“U-¬�T«¥É¡årû9¦ÇPÚ¸_mnG°™oV#>ϲœòVö"Ö"°uŸ�È9Ð�!¬Erl/Õ²8ﶃ k;ÂCeKFÒXu¼³Ýqù­²}§ƒ×7¨£ªÍO=QÒ¬í$šIÕsLõ“|ºK2ÞTª7Ó¶][gyUÃצ‡m?é<ÙØÛs/¶r€‡<ÌßΪÁ_rpD³ûjø€ÔH³×ôâ‹Ä/å7~K©%Þsûy+É㸂Ÿ/Š&ø$Ã'óv¢ÏyS:fŽ{T¤ã"ñ;HúA œÐÉòD•©^mw™T)š±ÔnYU¥ì" ¹%¥f!DŽ!Ç,%ʧšÛÁ=“DDér|¶BÖ©ÈVá¤nñD“#ã½äPƒÃg,nŽû cûKbÝ«‹´µû’áí‡EÙõ?¿¯²‚7¼äI±tž¾«z^8k9w/›­öÛ%nª ÀŒ6³�ußFCYø~:!®£K›7Ÿ}¬GA .Œ£?á(£rהּˆmÇ·»Œ`ìÅ„æï_‹óÁð5ä+tÕ?‹NÒänwÇz\�GÔÎ÷˜ß…‚ öÈÞö7ñqñvËõ”dv–Î"p&�‘l*¥(§a·!ËX,ÀÀFTc.—Õ™9<†GÂ1ÆÉßõ×ëåÉăçˆì/ÿ'ñC‰ÆÅ|­Ólõ÷÷vðÙ’fèr (Æ«›à¸lB-Fõ ´u’:uÃÄ:�±m¨Gû1§D®ÑÞÐ ^‚!ä”Meä,�þW�6ö]ö �Œ¹Í]ê}W¯NCï‘Üþ^DDVið{ËG ñz鋌óFÇÄIêÄÜÈ×^Þ›‘£e ΢÷�.Œš¥2p~0ÞÆ ºW©òÕÂ}3pˆö˜�DN�¯Å‹±âwáeNª’EBlÇ'´ï;ŽA'1Ô¾Pµ÷ýV§¤§ˆÕ¯]†cTihͬûúš&j-,‚ÑÁß�µuÒšY‡Îgˆ„Ü–»M0Çxk`û£rC¹§çÄp/áûÁù¡¶ä[ ¸�N‡Ve·š-eG‡9\ÌGŸ§…ãÐ Š-díó¡�öóEü¼©Ó‰é ˆ¼âÖêëW¡ˆE@/‡H®Í‰ë`(ü!kŸwzŒCBœ&u½C�¸6@¨Ú ãìêøœ‰0(J‡t`Æp ­4;„½-SWØ/;Q-Èì�ú@!m 'Š4€JÜ­ƒ_Iý0Z&Ø›‰y�ITŒ>&�è¾'NµxtôᙸßG€»0±È"ä| DP ( ó!�¼äFŠÁn/�¾²ÛAeo/\©Æˆ^HÀCÝÛpTĶýhÌL(™Lªd@ÓtJ!söôÙ&zt»3¨2?vûÈ~1@Î̱u¾-Öä/|uØr4âQéaçùÀIŽ�Ó¨F�H ‘JøŸÃðÊ+[!�Hºi Ž„`¦Y€¸â£m@]”ÔÁÍ!XÚ˜Á ƒ�EI�÷pAcÀB¬'¥Í ÒC hŽDç!õ Ô8Ü©:ŒmDÈ'J¸XÄI‰Qb˜È‡“AÚ:õcÌ›ŽOî› Ä‘û S >´Ò6Sè1G”ŠÑ:²øXa;ȃp’‡ nj¤X$’Ô&�‰* Ç�À””¨í†¬ À ú}›¦?‡u‡³‹/ëÔ;R¶\èAûM_ÝóiDÒ •â‘B�]¯ºFZeQLŒÈ`4àC*\…Ž=Q©º½\)ªwŽ k“¯g|çÎN¯ÍÛä‹7ÕéZ4º|Kxl;È»L#Êp÷xÆåÈëM¯,U*ü’|fEå;rjÀ& 4,!jç~OÖwŽÌ%}zÊÁ£iÑCåÙ#õÊ$2�yqè·M™ÅtfúpVxlTúˆ²}8DàWI­*wõ,MáÉN2ïÿx¤pïú7ËUpëLÑ#cæãjÕØOìïÇu, ~úN—¥ß°r[©s§_©ù»nôªØUÒ‹Ó_ÏÛÖ=0ƒE©$Ô¯Òøiç¤s½à£ºÉ2¼¨&âìK Ž×#DdC›ü�]_ †–�Ú …‹©ê_T�%ÕÀ5Ì�´tr¬;ÜX¹FPwǽpÓk^tJ€Ço6¤Á9pÇ"¾™A*0«éY¹ Å�™ÊëiHJ€ÇçQoÑ8^QŠm3H ³‚wp„å.>Îú�|�ß¡h°þp�¬!¢Q®~ŽÙ\}[<Þâíãò«Ë«Ñ_rW4Ü (ü»Ê;ä Uyµž+ £GV¢.üqW-Ú3XRµ‘„átÀ5¡En)-xd›8 þååú^ÀøöMó|SGo’¤j‘†ÑE Σ$ÞS<ß1Î4’º¯<ÉEDo7JËÉ;ÅDo¨6s áë� Àð·> °´>+I笙ìÏQ®oúôçér`ë;^Ãg \ÖcÁex±þsÀû øá¥xMdä8>p6߯ÝRÅvôþiÍ8|xìM¸R'ïA0*ŠZ˜UÅEÀ*œF1ó»hVåvC¨¹JÊa –Ì#Ø p`ÆT↬¬@£PÈÛ'tKÜ ÀÐ Ël£�ʉ& -4kvQ9&˜è4h#cì9k|!Ö¢ DØë«ÖŠWw«7•’šëËúodøÆÆs6^<¯ÊA¢îëúŠæxIåWo”òf�Ç\-U/} õÒcy2Ú“W0¿'¯ì1ÀÉ‘ìsµ� ëÜ«¤ïò+˯תR‡W¦³7"6óšD¯ê7f7ŒÖšEt a³7—;Ós�ïäeµ‰kS7B¡ø\¥ZªHº’Tµ¥Äj’ÇHF©OY½Ãˆ¶¿q§G“Ä_…ÈÖNW2=�^«jy…6D¡FP­Uí¡yµ{ÍœZ Š_ŠD©@®ÙNQɆAC�À4;¯önÎßɉÖWdhoË •õÉSîÿC}�†�ÊÐ Ëñ‚(ÉŠªéFÖ´lÇõry¿P JåJµVo4[íN··Ð G$E3,çæ=-™ƒ-ø9qæÂ•w�¹3„ åQ3« GB„4¥!!dÈ%Öâpd œÅMSfT³ëÔÎáû÷‘vkÑ¥_�^}ÎúD—ƒê|jÌ cFŒúÌ ‹r}!@�ÁBUúÖAá"I@(Ê€ßÄŠ'A¼zzÿJ” wÁ%¡PY¸¡Þ™r�‹›�_œ‡W+k¨ˆ<Ö(äø1:¡dÐ,O ’È*-,�‘xb²L›ÃåÉÉóJ¿À<¹šº†¦–¶Ž®ž}û 7´h„D¡1X7ž‡—�Àßâ—åž‹&²1Ø(«8Â[?:,@ Õ{WaƒZ'ôÉWZ½¯xq$"tt}B<ÃÇHœ£ ƒ1¸¿' ¡~}<�›FD1‘¾kM+Œ'TgÁôÜ ZçñpÓ`)ĸÌqÝ×›=Íö‡Ú©êÆŠY´VKò!K;9²9‹cC«cCÎÑá\õü¦W Ÿ_6êýëëjñŠÞh‚ÂéhŽ»ÒêâÒ}à/˜¨«2ÒÊJW¯·V䈼„ÔÃóN‚}CmòŠšÚ¦*bHE3Äðeµ,/³ˆLˆ¡Å`-D°‹Œ� £l%#€� ú[ØBch€`Œô{½xòßÁõ?öÉíßû¿büŒUáGì/ŒÆt‰ýŽŽ#†¢1ø1ž‚�áX_H€÷!Iì]H‡ž�,ÖÊÁë r:}~‡/^0¢ÍwZ}±ß?�e·?ÖìOÃCo\nô*—r¤´ÄhŠºìsjù{PãB ¿ñê¥l”MÈǪ„ ”8¥*ضr9«Ê].e”•)ÇJ˜4di(3ç˜è*\ÒV¸ ÷#ÎI]O)%+k ¥!t¹WjÊ*�Rbz„{rt�,¨£%°íŒÊ§;‹#DÎXw)�;(¾»)‡ç"`Ù¡sìTfÛË Å4KÚA·ê4˃P£1øVÁïÛ�ßvb™`p“áˆîýŠSä�³Æ)‡0€îæ©û­¡<=Åõ�N8Qäþ‘™;èˆûi°šY°˜-`¾¯Ç8DÄû±Cc_€?ø{†À}ýVOÁw.·w’í¥K\órc[¼\Ø6ÒBÚ;…“ì)FÔ/×¶åË¥­ìÍ­´––ÒÿødÅàÞ;âø_ˆHHïre›¿œÛVÒ\Ú¦�Ü¿"‘È›§EÜ•¿¸ÉÌ3·xlöê®?37Öm³LÙá…æôÚFÄîÛïß¡²'èúÕh¶às‘(Y”…ë}$ÎãùG ˜Ôu ž‰O—9�¾np+µÐÂ@—e¸’¶‘1i]š`FÚPKÒV1]SÆ·~tõ`õLimunify-security/assets/ui-app/assets/static/fonts/material-icons-v143.woff2UT ëÆ«jëÆ«jux è‡?€ÀwOF2õ`~ðõ ƒßD`ë �Ã,ŒÆt ÅX6$¢p ‚z [Ý\”MÔBÜìöü¼-¨VT ê&"ÀªQcç¬=U£âXwD£Ê±ø7Qòvæªaã*Ì ; (ÉüIöÿÿÿÿÿÿÿ+“IÈæ%ÿ½äó_�v:NÔYç†Û¤;JVÑÌ + ŠSš9ZïÁÂXÁJ«¾ÆÝ¦šÆ_0)c`[vb?ï"ÂPðµEˆQú�¥´‚À."pŸvø¦†ºÞȦžØ™3ŽZm`k":8©ÛKk­‰�˜UR%U2õû�<÷”Û'aÒL˜4&ÍàåÉPX¹Ê,z5Îj<++¸™Ò»»ffŠÓ¨X1I¢.œ –ÿ%ßZ<ãUTåG’)Lºû€¿©‘´;«A�ÇO~evæò-zÍÿžï§^ò·|¶¼Ü°pE¹ÿ@¸t‡7é.Š4Ãð>÷×ë€}ýU[y””O8æŸó·üë|m§L04¬ ‡tÓµgžß�àˆ¡/£Ê¤Û&á E»˜ù"õ¤¿q 1.(Ý™Ògù&?;¼ïÅVxþ�|ó-p=‰ÒÝ—Ô¾;ŸêÜaªëQ|*L8©–}‘$ñ—*I*¤2å§tI8ê¤úOþQ™íÖk+;‘”NÅhfšM¦™™tºÁ(Ü\ø¤Oú»Î.Ü´§:ní‘ v¦¬}H.òè|B<âÔ¿'ɲËr’�Ó1ñB, ÃÙ÷é6Ú&„™6x i—=ý¢râßåô‹Ê™ØOsõæ_g³{W$VD¨A1ª²¬ª«Î–B[àB’BJ´¥´‚�ð˜[? ÊÁ.$Ì"Á‚-™ÕK�PÚRƒ³K±ÄàÌDz(õí7_’ ¥=о–„òˆ b©C³­�2ÄŠ±4F…+ˆýÞà¼P㈃§f# qGG8Âaßõ|kËðËØ—íµg\³,ÑOµ9ÍM–ßâ Û¼I|}I¸¨nˆÙlVÙÞåoÊeŠ.¤{¿É/‹ˆˆˆˆ F‘ADDdXæ¾·¨S]Q§ª¢c²ç`TèlêÃr½æýä!!ˆH‘ AD$ 9yä—VÆ›þts©ã�77 ½Œõ¦ZuñÛæùª¾®ü*dWF›ŒÂaÄ 7B¡M¡MÂèBò݇Xýâ¸Tʪ8Pß½»G0„”Éd¼X,Dvz܆xàƒÀ¨§c)¼ôÊðq3Tá.Í„ñ~æ/}ç*üC“ðÁ˜á… ²oÂ4}®Š´aØÖu$C¥½¦1Dµ\Æbœ9l÷sÀ†çár·þû· $ÁO0¤p¯[Ñ©·V®ï(c0Ý>5ˆž_�éM©–EÄ Ç±lH¿ôßåz}?Í9n-‡±(‰PÓy”¿1Ã*((øøãyuö?¤¶q¹B÷º`£‹ ÍÆ€ej¬c¬,›ØÀ9Û0NtEI±1ýž°Ii’“MHßÕQ¶‘d1ïIé�à”—•´U)[’�ø˜-)/y»ÜáI7ÿÝånç.¹Kî€@ àTFp r¬¡2rŲpl\ÜÁ±´Ô‚n´üà˜¤×oé¶[ì¶v1èîyÞ`_T8táRªìÇñ}ÕúÇóÍK! ¢(‰ 3;;ÒK?ÇÊ¡våÚn]t.zS7ùí ñ4=ÔL:àÞôAé"jÎYJ!ïäŒõQsWòøƒóJtIn{éåùåÅ`DX› :E?)R½�ÀØŠâkÙ¾oå›ÃåòI“-BR5»C ÆöYôžby$§ôÃO¥®ÿ¯²wçXï'Yr€af®C'²m¤Ö„ [R�Sx´¬Á½Ùª·Ò¶ºZ�pƒ”�y†xsüC~ix�öõÔJíÃÀîžÍC(8Ã^r4ç"M+µv+ {@`ÉL¡ùÁu÷cNë¥ý7éÏíI2ìrl>Òø’D³ë˵½N¯aÜÄNJœYæ´ýpã«J­ú"©R5©êƒêS5{©æ”æTíñ¯žë¬›×üö¸ßk–é™ dF"A   BR$ È% IJ@²A”¦, Qj«fLRwïJª>XêÃXêj[UHU“ X%QU5:ªjŽã’ªUÛÇUG÷ô=ÇuüzóœÏs�ÏïzísŸŸyîsŸÏ}¼÷ñx­}oj•ˉ>ÍÑ}j¶O Ã[¡­iNŸÒÞVóýz•ÃúøU1ÀT3¦�bÅ, ¶Ùl®õ~q6 ÷d÷n úU7Hv¯g*å i)iXg¸ggç)õäÿo¦ö¥] AÙó?µ–ÚH³ÖÄõQìl×}®ë½zUÀ«n¬B`7AÓ �D7HJ ‘ª÷ª¨ªnr�ó$5{Ió—¤4_n¬fÎY Ç€c9ßjÖ™hÏfë4›þ Ýh7ûA¸dÙúÕª~:ïß·Ü@â F"ìVVÖ‹žŒ×Éq­8o;µk²avàv|eÒÓ(ဉÔI=ìòˆ½´�„Å2h¤VT"u ÔÇš!lHZ Äzbÿÿoj·¶ýWŸ5hÇ7gXäß ?`¢(f›J=-ºèÂB)"Gèü{~Ägf˜½»ÛeÇZcŒª¨ˆª¨ˆˆ¨Ú÷{ngVERPõézíQÁa„1ÁcŒ1F!„É;³‚ÂUPs%¯=‹Œ&„ŠB0Á!„B4AFs�_Lžl;ì³*ËØë÷·ÞÕ�$BDŒJÑΞýôé¤hsÑ�ÈQÐm¯~õ>͍ÌM¬5a(˜JЋüÿ?æüþhZÛ’ O‰ÒªâЦÝ)�ìþÿ¿èôÿÐB“®·x}¤¥„vƒ—li_�+ÙäÿAæ¬Ç«íyûµ=ÁŽÕâd%��±õºBD2¯l¦1ËŒXé¾™ƒ…ÄEŒî{_ÁjŒŽC@L±Ñç¤C~=ÂÄÄ‹%ÿs¢ü �ý}Ÿ¤ߣÈð=¨A }›³|ÌÝNTãp¡EØ1ï¤çnb»Åó×üÆÔÏ'óãÿ ìö $¥…µ±îà »0lgz&ú'ƒ¡§B¢{„_.ª½#Ãî!€ŽÅ0à•K2+nY,ÀIm6û­g¨A*„#œĵT4ÿ7åØuTØ¢QnÌÁ±‘J×·b6^ê}°DðŠñö›ãùXq"wnUR‹Ôž•¹Ärz[ÀB@` (&7]›^;?º;ÓkÃñx€yÌm,C¡@ü®‹I I³EÞë­7äß/¡ïšp|{x¸ÝMZÞØã`̺ÔP)`d¥Jøq*ž~¤ÝA<ÿ*d¹ U:Lä’¦°[[ V릋…1ín÷ ¾ÿŠ:Ü¿­ÚÙÐÐäŠ-mõ²Q Å]3Xmîê0ØË±éK¨*W¿ç‘'1S©J¦·�?”��ªŒºÚDQ#5Eêç(1ô@�º:‡§�S õØå¥GK8$ü×. jK³42~ ]špyÔµž9/ŽDuês�a$é�:׃Ìÿ:x •ˆ”·4o•[o/—)Œ¨cà {øAÈ ¡õ_Ï®hÓï¹³àGº¾¢à§LŸ]~éäe�h>ïg"´HQQ©›Ï"ßw XÚ—€ÝñhFÔ�C-“Qœ£ôâPê÷´žFƒÒû¿xº _kG&`…ùE½eÕ)Ÿº("ÄÒÊpO¸:ù[~NDn1Æü�e©÷­R¿€Âš i1¶õ®BƒÓƒí9�¾ƒÅ¦Ú–—ô)ZU…yχ‚_h°Ý‰(Á¿"D#ò¢›‡—3D¯Aš)Þs¶V[›T7Uþ¸ÜZ Õ¤:Íà›EÈÝIÜéÆÃ aÔrÕ0/oäž(ëø%XÔj½•ìð ©»¯‰¿IÏÈ?m´´*8¤û†oÉÁ†C •l>ŠÚÙ-æq½{näRv ¥gjáL2ã+G�Ãøª+vi äU“r>gÌ­Vzþ³è󀎢+&2Žõw†+U6Ù¾3îp +úæÞ¯ÂÒ7/�œìËüß<¿æ ’9Á6M|ÃÕ�ІÓ(ÌOA(§VÉH-H‡Ë‹UŠºb2RKâ�HÜêmœª”¦j<=šŠˆÀÑ$Q1¾:²bmµØSü̇<ãW7®‡÷ôm '®PrÞÛ\Ã'¡\a)ã&‹ëä;`¶å3Gž;E³ˆjÆn\­Ir(—ó�½ h];Í÷u?”qÃñXP5/ª8þl* €‰«®Õ=_˜ˆÁÐ!q&F›”0ò4Yé(z ©-³M¯+Ø´àLñÖÀ% " +r*ì8ÃÜz¹,v9ÛQÙ4¶ñ¯¥6FÒèÒbŒÎéÕú~9‰¼ /ŽrêEÅâÉé]ß 0ÂÔxc�¦œ“‚öõ¨ÍcîÌ„CæEGoúÄõ^Ñ�C}bš’WãüNã2ÖÅÀþ„0ý.‚´ëk;ì,}ú|Å4¸¦v® ¤ý…z´”ñÍôÓ6z^¦/}r‡Ð§À¦?ÃKEYà » ßgèÑ~hŸÃ·_&ì<È5ôùâ�tûÃ@4_6[Ê”<Ãè^wƒÄ¯¿Ã»Ðª®Ü8¼‹¸7í1ƒ ¯¾K++ª/Ùû¡SCšª6´Ë5Øå>*]{ ¬´’öÌ|xW¸Ôç“Z*]%®Q·°œ’‘ÑbúsFš ^—¾¾œµ]ËôL†7ïù*�mù­;�ðÀH³Ò´n„)î½rÁá°=þS43ÝQi� cäDb°·ñ1¹Þ¥Ntˆ­¬ôØM©ð ¸J>þ–‡ Ü/�了�ª:jû ™ ú—XKEÚ·`f§×ioÝôm ú§KÐkP –Ý Îî&²Ñ_äÀט YÖ/�±©–CÈAýƒí^Š >Ü®bŽeÏ«°}v?KÛ?€S¡T'ÞpDø¶À·ÊµnÔ5rB¤…Ò©ËÂ{f@ü’Ãm QûId' ôÿ3§ Ö æ ¦ Ê 2 â,�·ØÊ£m¹Ã’yT£–Ž­fëW.ÏO ÏM� ÌŒ ~¹å׎uÆFbʯ˺DÛR¢:R�*2ÑRcÓéhw–j3¡Ü>1¬ §TÌ[¿05ØþìÄÚé�‰µÏ@”ůºK£ÖÏ0j*4¢´\"m9,+H÷ôb,|º;p.ê¡Oh¼û)H½=J>곡֛Vn{ÞOÛƒWDÅÍ)ú'I`Ú!#µø¥\î‚�¤ÂaC²õ}ª¸)³j!OøˆtA%½3VªÇQ›Ág,¸Å lI"×»lƒ¯7¦š>Ï&^Bz‹‡€Òº­yµoJ»ÓtCqIˆ€y”›JB¦åCñФVu¥ï(�ßlQ·Y‘~z¨z:ŽrÜÆñðK�©Gˆ›!°ìþ-i.’è'�¦¸(¡1n'!FÌ(gÕ‘°ˆÝä*hQž ÷Á·XÊ€²ÛÉöNŽÐúÓ@7†·¯P.J,5]üe¤’�¤\(Õ³wî ­'e�ÚÐuN‡í�·¦ì Ú ÓIwðÙ�Œ°ÕÜÞ=L\«zY0suÆ¥* @F<¹}@U¶bY•’�I“@{¢b6†Â8·ñ´“BFoõ tç¶:]6c±–¨ÞJ ìIZAš¨cW(Ç|D*•œÄKœdT™O%fl÷}TrZ²²Ð©Ôþ(¸6äcò =�~BS‚Ìb£&;Ì·ˆž=ôÝHu­ÈL@ÖÂSÎp@O@‚”D,øP¸t$EPÑâzˆtÃ"�Üwt‡fÕ�‚<0 £…Ê—,íÏ…Ò jf§”ƒèû1,ÖÂø‘›Žo;@;|Äãr™%Ú¤tþG4?§¸ŠØQÖT1s,ô/Í�4W‰ ›âŠyÎ^Kï¡ZGOH1ž´ÖaSŸq)h‹Ù*‚„™ŠÝC‡ƒ¿~GRIEVœƒÅÄy2Bý€˜ÚŽÖSêé“ý:h v›”6ž¸tD ¸£Úq„– TIÙ�ðå"¤^Ù§>ž+#qXð…×’êq´®Ã‹ÛœÍ  _w%ß”’øÙÆ�/%‡<ØÕ�QAr�`2!¸½Ç¬ Œ¢�8‚Éè~Ö7$õlü$l`Ç{u'²m#0û*v’ú˜îÙO§9fúÆ1ë7&o¡­b9è2üúŠƒ�%ÐGä£á¥ë-ÏgŸ.ó_¯|ãkŸyé|1Ws”¯³W_»ñò»�ùõk—lY±íÊ…Ùʺ¡£æÝ¨ÙL1™Í-›]4ôÚ¶e�·o:»1£fªW]¶dM–ªÔl ; ùSf•û™“¤O“éÖWàPAc<\ m4žÞ®œû©7gn=›®¦Rµ†�ÛbÆS)tøW­H½BÕ S¹Å‹�U‚hù%\$™ S¦\˜sË5K†1Áb`¸F…À<*p$B r°iKŠ€rD)�¤øàFÌñ¡BmE9Ñbu{Ì÷ÿ}æ¹JöÁ°ty:þtøÔ=ÜÙ²�±�jÑEeÇ�U%­«š6I/bB²$D…¥‰ K¤÷›[¥H¢Êé° $Šs\l£ö� =ˆÎ{o�ÑÚ™�Çf–Nð"&q”Ïr–M¢Ór6R™Œ5PP /ÙP²º$²•{l3HDU/ò†?H¿ˆ8jV"ŠoäßvJ ÈìÕ¸ê­ÛP,€Š·ˆ|‡T:®çï†&¼°<…_ôÀrüLìÝÁßãë1C°u?ð<ÝÞÛ¢+'Ï ùFé@±—ö1+A>�S߇\�Ùtƒ [àé�Ý-¿Y  ,ÛT\õøÌ·Ö@A¤ðµ¦c�–òøyZ¢®qp�¹0C^69HÚp5Þth´£»Åúòüo\âžgh œ±œ;'ñC‡²ÙÒЫ7kèGý¬Upœþ‰+È 1ã0DÒβ|—àîmOb:ÈÊâŒç¬,1¨¤‹7ŸHBšO†5/·Ä¯{1æð€Ðy ÒE]ÁÍÖ‡Áä š©¤Ô©Íæ.4åIä@Èõ˜OE’*Ò-zB7wz´P�J5ÖGé5¢úæº}çeìÒôÔäÐ ùôlOI€i¨³«#:3ŽIÓÇô¯¾ñû5pER–¦JÁ)m�„d Þ¨jè6OÍ?²cjêJ�[èiŒ4Æà˜E÷BÔ2ð¢8–„ŸÑ*ÌõÃé‚ÉàSTSbº¡ïbΜ¾�˜èåûZÒX€´“0*°=œ“æØüȈ{ËDcÁ©÷ò�œYcGO{˜Qè:ãr€&2¦ßÄcYU‰-vÙù¨\ÒXÕ©ÈÇÌY´yFô$UwML§�ÊW°$ù:¨èë§E»…*”/BkÃ4¬˜:-”`œÅ¢ê-’ƒPÁ]¡þf[\4#Sº¸s>Ó¦o1EB/ Lc|x¶]§Y=ÿ–©Ûb ܽÜr&$*1ÞlE ð¤;[o¥°·-í5n¶ØÌ•[%n¬·k3lw¨1—¶@4άaÔMà-A¯*]š›mu6ÁLýh<õá— QQkÁ«gXÁ†¢³F+™†Ýâ€WížÔó©½ »š_{}ª2ueŒòÏ„´2_Ú$ì@¸§ˆó[Ã�Ýâ¾Ëd;Ñ÷Ç÷<&mïùRÕK=G~ Â«½³Ø:¬S©«·ž† ”'úm ëJ¸�ñEH ÀôÐË0|ŽùRý훋×�Œ\Ök¥&{^Íæ�"†Ir!štdJ¦–àp40Û?TïiP¥ß(©£>P‹ÔóØa+M% DzûÇ„{0»t! O�c?M3Œ´OýÜháH~,µªæ=Þ§­LË0fœü°”åø×ÜòÁì’YHÄûÔ‰rÆ�L×>:&qb£cr5l„€Xö#y3ss‹(ÒÞØÃfß'2«v9."uGÈ„eCÐzÜ‚ô:æÒ &-l�úô éÙúãØ™²z̼…Žoß1ŸVÖúkú¸³8öÓ(Gƒ¯Ôt¨¶|S•91h{mМð|fõ±-®õ¡ÏóUÆ^Û Ò!˜à:Kí½©‹›3S¦’´xäŠ GŸ“H ì³BÀDðªZ ]€ oPÚi-1©Z6 IÇq¤�ò#Jㄆfô€|i„~U¶Å#)W †*f‹kUŠ T+âRw*Ÿñ“|S{™{)»fêV¡½ÑÖ‰W¨¬c.Wð½vÌÊä¨÷ðÐ\¿Ïz¥+[ �¦ÒÂjß*Ê=[CnèKÓb å¹+óìdV×1öR˜9bÀ›¨9Íöƒêô)7-ÔU²@Ý•íàm€�¶ßí/yƒ7ð³±Ù–_‹giLgÑqX¡ÄõEl}Õhp”Û-þ*O¤:A^GŽWîÚmØ�5%ª®K�8"|q·`xS¨÷A× ëÃ=èzÏ6 Cô¶‹û°­VóD仜ÛvêäQºñ´XHÀvq?uZ7ã‹ÂMð@¦5HK�TZh;¾Ø˜„¡W•yIŒaÏ¢(ß±%ê烲$qt×¹—>ÆÝ N{–„n´�…™åªÓuÎR§Ù)‡Ö°“©ÙFŸ ‹� öÍKX0¬°4žÿÐàƒàfâýUýË×ÁÊÝñç®Hòõ´\âë®dL¿êǨa>3ˈÊRc`«ÇûçŒë> œn °Ý”œÒ—¦ïç²B.w�æÕ½¯G2g{Â[”;¾Fq�ö¾Œ½ámüUy:Róò$ß“¡=�L].™07³î Tªvp'†jv’òU‚¤¡`z^Íjšëýc�_ ‹@cDM<Êkê9Ãh¤‚°’¾`£j¹ˆ»‘ÃÒ´“cQжÉ;ç ÓZNbYøÁéhÔ(­Û/Q‚f?ôÔcjÌ+ÕÕV ÿ®/"ËÞ…–Àglýá8“BŒØx#DòÞ&}˜6[…Ü®çäÐ_‹\N÷¥%½Zsf—¶juñ*” WÏz_ëÊ�Ȫw„Hȵ”Ê%KËUm«‚ �)ÕðešMïÁí^ò!u=ë7ᾸD±£¡¥f Vsè8ˆð:ó¢]nJhÛ5�ܲÌ8rw[—¢l—ŠÛ!V¯ÚvX}KÄ2}éÍ‘öÔç/‰uävÂPo �¼ŸánáѼQ·7 `{êFûµdåAˆyÊ ªUtŸxÀN·_¿Qëòƒ,K�]ÕTÊ\¡Ú˜GªÐ§À% hÃ’ÄU±Æ1íý‚Pº²� „â$‰7øÞ»5ÐM­�\¶‰:aüëüjÁ ñ)õì¦àn§ Œµ»äŒøJýbäé>ë&¢ïÞIÉ»aaáºÞíoZ"&_å+éœF Ü\Û)Ã^¡–ùË›hv(Û-鑟4ñª.gn0¨£�”³0éB£ÛÎMm<¹014»4¶¶Ç¯s¨z1]¢¾>Öa)Ûç K]3™ë2‹3)ªáªHÊνĤÙH¯³Ý¨D°fAMCCð Pt5¿‚ýTðû<ºvšÅüï|`눪ØyÀßšö¯±c—ã»JÌr�A ÍĆhÔ磠"NÊ©Þ�^ò¹0XÎJ/ŒÊjf ¹'½SÒ}´�¹ó¨ 0MÅÔ&¾è@“´ÌÍC�8¬§��Ù’FÎý–Ú}æÿZ”ï(ŵ‘Ó)zC‹É#PcÆ-¿©{›ƒS´ä~ârßÒ<ów�ÀŠ�Nwi:#,~Ò„K÷½ì»rØ.³–¨«1oŽªè¯¸ f½H.[~™4Gcµþ�Ù6�¿‰ßpXŸ1LTP��j�§~Jk¤©rÝ_WŽþOjÓg¸ò_ÅÃF^'úle åÃ`œµpä52ÄÔÔô«L>þS¾p)Lß:Œ~·üe `AãÈÏW ¡ê9ဒ$ËûCƒöDºOs÷ËÖÔ|[`Ù/ˆ¡¿ÛÎâÆ Ðq›·šÝ‘¼Húâ�Ù#�£ÇÁa{ð ã}'½øp*7giOY)¹ð›ò,êFàZðÀ-‡®Ã1ù©4kN�Ê[Ãʬis-Ý¡0²VÒ €}*úxÝÈm`(äªXzà!@:ûZ¿hྊ­YZ0FÕ óûˆ<´62CÉ"Quö©a3xýÿÜÀ- ©m…tô'AàSiåÇßÛA„ƒB×r[ñÜ’…Ù¢YïÑHå›þѪðfìSE—m…w|°ç¯ïÖž� åtÆó3tG ó€�Íd¶ K_Hö¦Ñ©�^‘I>�`@܄ವ‹qÉØìå‹hdøÙçÌ›¨áNÍ%dúŸ<$¬„¤½7¡SsÃaî=‚ÉŸäƒðv„vMƒ LxþàÔqNíGަ\Èt½K;ic¬-{PKôÃÞ#dmrFÕ×"òw<†²�c –ÿxóW ûªà Bl\6–Î’‘î>Eô^ p1. îó–Jƒûj¦Ó˜¨á=ÃXÀÊÁ„UR`yÝ)6Ç«A» ¸/¿OûD±É–:H1xÅLg(G,ÝXv5 Ó­Û4Ÿ‹Kí÷î‹—ëSåWo„çY\d8#è•’æš Ž ¡±YšÃõ*ȼÝ@w-¾eh<Ä¥`�Ý´�µ‹ÙÆêN=¬‹ü=má<Ë6]V˜zú!`¡]xÖðáCì•ßÁ98øIm‹¼ÏÒ«†PÿNœ#M5YOwSM`ôÔ°v A«Tý{»émû´½ä~hÇ÷6L ÜÜÆ<»ãk¢¯š…e¶ñ_BÈŸƲ`ÙõQ0û²rÛý›[Š®+.I“зéÄךˆúv/%daâåqgÖR57ßY’ñúxD¿åÄ«Jv;¨ii™Â \nðœéÁŠá6µ�Å, úè(�! Nùuý¡Ç[Úüa‘­M7áä�Ø9ñ¹'–’³hþ ?ÜÆ+¡¬\j{ÿ ЛŸÖDBR1¶TÎí5õ¶~)ø›)Ó×ÚVxÃ&4­¼lpõz±‚ÉàÈúLŠ´Þv£ôÑ…¨ÅŒ!¤r-M4|«Í%%²'Ev´Vš´8hãLƒÌv€d¹g§“{zûÿÛ1éw»Û+´à$;¨òÐzn¦£­ï6º)ú$]*ös u‹âÉ‹í°ðÀNp– þ䘵7+°üμuPËQòÃq Eÿ_ÙŸ",Ÿà¸�x¦nÐ eÜI%xð y]%·Â„…êj¨ˆ¶ê’ÈQ78a©¬j�R}àÿˆøLU­æ½/£}Ì%²áZŽºBür)LãZ∺zÍJ5»Óƒ'¡Ùéê+„Ð %‰Jn·ÃcJek¬QîAE”�Öª ¯6÷6ïD[Fô”Æ_9·Ø| ñú§ �zq´�ç¨â*"ö€–Ó©Æ ®UºIì.ý…ò”s7"}y⊆•­·äa×íX™CµåqÛVŠ€ÆzP:NoÖ‰Æ5æ¨ÂÐ1q®Û9J÷³ëô�|ÍSø)|AdN9¨ïfç¤arÕÊZ±è�ð~;à½zK-µë:Á݉fP¼Ž8ñ–^ÕÁEZ|�¦´Ú|ôš€N§âæãMÜbÑ>ÿåK©$ŽDßâ¯ØŠÉ茂ˆ‰šÐD¼À�¼á&:ÔNÖ80¥>'k«ÍïŒ^b�×®: õj<Äüà®Ö0Τ¥žãhíÆøÎ�›_ZH›þ+핼կ÷a\?†ó/íž-ôwõÕ·/<¾Am¡¥¨ãÑ|‚Á@¹´¡Äm¥A˜áÎÇaÃ)öÊ®T/+CñM Ùs³Xc¶!`î¯?è6—n…„FÔ¬åÝ6…°#ÔQfIVS´‚K×™{ÚX¤Äâ iû?8çïÒÚe+—ðª@šä®ÛþîëN m²‘ÅJÔçc­ ¶?^š Å­IãÔ(·” dbØ¥³ø‹ëp,¾aÛ‰­k§645Ø‚¸‡yÊ=n©bÆ ^ Rn£|5fêb€âhˆ© ]U …¡Þ0�‘êdÁ@y—�`uÅÎ)ÛAf›KŽ•æy=sœEÐÑš`}(�¼p…%šru•Ú â>s…_-0“Á(²Ë ëÔ%PÙ P Ô·õü¹r_0¾`6-Ò³NÓ>CÒ³õ ¹'qÆÔéx�bàÈÐo¯Õ|ÉH:Ù0rä+ðYâe£‹ ""ÑF‘ãÜPÔçÄ “Åq&ÛÈnµÎB“Ðõ˜l@¦¦sVÜÍÐ%­èõÜ%ªÅ‹ËÕ7••�<£tjYUé‚;~Å[:66|¼¦;J~†ù™á÷ÛMÊiRAlã-�‡Õ�(›w 7 n\ªÂ»¢%@ÀÒ ÷îpñÀ"˜!εø@ZˆÉ àÃÄz w$ /Õײñ±Íé¤;Ô¦°ð•h´„”d}Tþÿä̬HTôJ2–_(bVÈ¥â_×áéXžïC¸)£ ‰´kÀvnû5#‹“›ŸY2ŹdŒÍ¸YÆ^Û}mR¡l´;™8åÛÖ…«¹hã¹X¨]4¾ÐYéd‡”ø‹Å%FÝÒÔ`Ëô¾­œÝ“ÝZ›Dåþã· Âà8(åŸ;æv üfŸÈø;$·r(šm qo]ܦ\Ð˺ô~x÷ôxÜóu™=Gt+Z^}50é¶PJ,ÁýŒÂé¯ÙÄ (¦hô�²èÙ 4Z·øùqD~ß?’bà ŒVQ °Ÿ«´d d[ú8L„ vv< .cr|ò‘!²�ØŽ9�ö¿ "ñ™±(È4Ðnû�ú+«¤Û¢¢À²¶ÞS�ÝÄ«,Q.�:~{ JÉ müÀ¢"0]ün>«U6R*‘b$U?“D„bɌȀ[ÝÙœý.ྒgsu*e—$›>¤¯®:ƒ®Ëw�×MÇô�œ$w»c�&õˆê€›óEk†®y|œk܇ƒc/”s;)ª7ú\ã’>Ã%¶çÄ“;¯Q"º©Ù˜üƒê¾Î&d? Ußé´ÕâYû@›EiIb5 šWªóÌp¢’ŠÆL‡’̵n.�ÁÝ¥ý´Wy‡½‘ÁÎÚîJñœÖuØÝPKÀ!4’«ýDŠ0‚&êåÊ•À5a3’$Ìq3ÚÉ CÖ" Òä-?Ž„º2)rn=óá[MI!°a’Š^¡Ö¨$–ÂHé6œ´•Ð�-�‡-ÙEÑÑø÷ûîýé[¾eô_ª:»ÆNØçØt1W‡c¨‘Aó–o¥Ò9üHg—!ÀÎÜ“¸Z‘³6Ô¸'CJX¢…P®×aqÈ¿ž�EdŒý-QÅxƒé·Ûýè+Ä6�½† hسª�Ò–õÆsgº²ÙR2û±«ŒÅó\Ž� pG'�”†»Õ¢è ×±¥•¼°¯:Á| {` oöîçûgj¬ËõA ½�†zœÖ{ÏÃPHéM×Q”oWtØÄ5¤ˆÏJ2ŒÜžžŒ Ù¿F¾×æ�Nà–Õ±ÿÜUê€{Ž¦Ø¶E�ïš��ÃPø C€ô¦¸C#í3¡7/B¹Ú•p/’3ð jžÙŒ¥‘Ì%ú‡£6‡#x¼æ�Ø…¨2UN²ú/cƒR$%5=-œKÎ89w0°%ä¦:ݧ¨›Y¹Ô(x\ 5(±z~ͦ‹#+G·%ÑÂ"@Êw™éS²Ñl0S:‹˜]‰±æ KÑ/%þ4·½žëb^)B µôðS~³ÉJÅË©õ)å°|I•ɳýTu‘/FyÊ®<JS!Ân±irR#0µ�œü½)×™à ’I�¸«šÞñüÕÊ£#"r(ìø­„˜i&X½µ/Š-¼[Éa9XðÝCÓžU¢(Œ)a”‰¤õ{„žµ¼£c3¦7®t>2”ÏqNº9Õ}ÜSu{‰`=$ ߈¹¬§ðS �«Ø™u°QÊmúÛ±w2j¿~‰?¬…nǰMûåéÇÓ}…Gù §ãCFÃ8EO@ÿCÌ�¹� D2x­kyøfMÊHÍÉ–[ÓQ¶ ¾è—ô9;¿gÆ”ç¶Õ >§õ”«‘œË\ŽãQ4îm’Á+ J*#ß÷²Ü!ü©yzyH9? äCÏàž¦å…}.4 ¼%À �j§Kò1"”Vý^ íŠqR*õAJ-®(‡}1òtÚ^†áÒÑ8dÐc±wQ¿®ŒªQ©¡¿ìbïWÚõ¨¸»Ôø�uàq°•&×Îäo”`¹ìWðŸ€N'`åNÿ’ï«¥Bkä±ïCŽ‚€d!¡ö‚Ú¯r$ ÆËŽ‘ÝI‡°·ÿ \½ç ÷)tµ¬ølPDD}Ù÷©Sw ·›~ïäX£~|F ¤cü¢p ì:T}ËôeF|Š‹ó…†yCøtFQQ‡âPA*÷+ú'ë¾n­.ø�Ñàzœkå�°]@z…Ä­tVç’uÔyêœ98³a[Ñô%t�øn„:`ÅÍ Ú„‡# ‰âUsµåñÙ*b¬l(¿¤äµ+æ§{G¤)²©¸·8‚„埚°Ä~Ó*\4þ’j…ðŒ|£ocKÃSC®ðßóŒ›\êTÇÚÃfù"æXiÔOúâf*p1O*ôß—w& ÌÑ‚UCFpGd« L`ÐÿÝúä”@Ï7ÿäj º¾ù'Oéw$�ÍWp0Šð×½Ù¬¢ùÐMªl½ô½ã°�Ú¦¡žÃà­¨0hÇh»öö^?\óÍK¾œÄ‡­ `›òóRh!Éqâ"Ó1ïÌ–.¤õ¶Ó©nƒ g;w;TÌ;´§h ®nìÈxð_w�VË-B‚Ù@tKíl l7K÷Ž·?læk³ìø~2ñyã„£ìf‰K¿VÆÑÇl‡š­sRø³Þ1ä#¹ºÖÂxή8‘p2¿,Ë �¤‚©üœ£ð»eVb7¦°ÀRâ(®D"øíãÜÐÔèÌÒ ¤©@Ï_í|»¶Wý.�U§Ü¹+…ÜÌj �$@WøàÄ|Mh%Ñp'ž¶›ZjŽVØ$Ѭ6榠vniø¼¶�n‚ ÷ùíèèó4¡úSÿF2»7›±2 …dÛÄß±ä׊Fh‹v< Ân-¾0 Íú¼+ Š ¦u×K׋ѽS_ëcß]VÚ‹M©Ï“_¥ 2€;nû#<£ÌN�ZɈñd}:G¬EæîuyøûÆf9dßýÒûdÔ¿X«pPs—…öj˜ú2ŽëÆî@‚v  "—¨7û¬ûÖßê‡Rê­€Ù0®º›„5ò’ë磎AAG"¡4,×ÇÝ$m!5eÉçqîÁ½ŽEã\YÀ·öSHœ�Q†‘úÓC> :kr_ N›è#fe£¬bíFGŒÎÿζۨ�­¦FÕáÅ“¦åîR®”¯ 5õ6Ñ¥â‰Q_ÌE[kÍÁ\"”pp¯›UbG-L½¡Ã’@Á‚©È‰H#·Ëuc;œ›˜]²¶œ#˜‚€gøƒŸyÅ]µ¯ÝÐm�[ÁU³‹Ÿ/òxõVéÙ"µ�Ð,4ï s‹nñ;oÎÇWP‘ñmÑ•¤¶T1ª·+Òuø(ù*�È<Öf$P˜Û “žÐ�ÑÁR¾[NG& B$Õ¹…8%õùmŒ‚A»x Rܶ:Ü­0|�êXJ“‰çž.ô€€@CÜ¥^Pˆ0Èöˆí‰a´—qÙ2ë—ßçJ¶’æy¶eaŽÐÒø:ÄN�þ“ßèa¼ÕçB?uÕ½­‹‡ÏukküµDèí�,F¢µlkï‚�)+s{ Fêé@>”½„` @öÍ)PîÅ´×Õ§r¼aŽJÛÐ’ôÁ®0Îa/=Iò·™OTÞ}]iÝøÞ¼d[¶ sß3|ëWÖKq‡k�ê€zîc׈H×ûÚÛüPÓIçézmëi¼É|›å,b|~Ü‘_¸V…·q_Úªâºc‚2=’éØó7q�§dÔŽóÀ»M5÷\4s­©.ÿñšãZ¯Õ�i©2}/xð¾©sZ8‡}…Åe¤Û®ºó áÑös>ÆžpÔ} ¸VƒCøFÐé¹>DT;:?LLæÕ½5'Öï>�¿`2Ò¾!1ã32jþyêv‡Œ‰‚ x…ÍÑM‚âµ–#¿pEʩݛ9ÙwÈì> Ï]� >kfþ—ãÙt€L¶­Ï~XÑÕ[ òlî×@“ÇŸ U"G�MôI’µj�‘`ò�NÐ+3%ntGƺØ)¡Yà©zˆtZ¦Ì`j$�|2þsê^ÞË‹�¯7äé�OîT/üEÿkÉ«:Ppç*2E¦ A¡#ïµ�J¢«Åj×X(�€�t‘K/üч-=¹˜ÒÒFÔÀª 7ÍQ@6<0M§7ž˜šlI9mÃÁl}!Þš�ÕfcÕóR, º.T·d"é†JãÁNá±Zd}é¹Ð�8$ÑJk J '‚Ïï~r¯6�m|~”´ÙCQÂ�jm¯ˆûÒÇœ{óìÆipË�³àÖçÁmŸ©ðæ)]˜œ�5œ‘=- msÇN-…x†úˆ0`À¿Ø:¸÷Ôú#&ÛÑFhÝ›¯ûZX¬üAâu(9q«­@².S�"˜KOU ÓÈ’´UÎèé./–/‹µü2{)ÉÎ綪ô\ˆySãÌõR È ãÇ¿Y(€ %�=ãѶ_�T�Ê(©Ô¬Ë]ÓcYÈô.Á1yngŠc†æ 4'§©¨KÁÁâ³pò2èÚŠ¯Ï™K©qz6ÈF®tî½¥%L}çyìLä¦À³ÍZ>ì¨õ,Þ,MíJ�¤‘�?»†°3_»8xÃÔ¼à„PSóÌ–ù¸Xò²¥É_*•Â¥2)Z*—⥠)Yj"¥KM¥ì§)¥œf:ÇsÖ SmgÖà×}@Šu÷¶8Ÿ�H–þ‰o°ÏOý¡ó‰`9u�TïÕ4à ~ôå¥ÛñðŸá„[g®Í²BøÅ=Ìaû¿® ‘oy¾ÉÉø™Ç ’ö2àû±4ÂøÆØÊ9 `Áà‹Û…Îôt…ã+n0DÍ`€¯ØÀA2e· ÔÅÛΆd U¦XáÙ/Uq@Ý—†PiÏuõEî.ÒD‘15® °ºJuêÍ%¿þ¯y¯ ^¢¶+Óþ ¦÷ÛèþÚ삌‘åÄõŽ0?&:¥;?‘ª,CçtçpΣ¿Á°­ã |ì=ôì8R„¢ŒÓ:�§š¦äÌøÔ1=Ûôž`.å=†º§¹xß­? rÝÞ´úµÛºHë ynF,ÑR֛جÏëKë@AHH+ºzr¯ùn³/"€ÝBœ!.]jÀ,>%Â7’�¦Þ/.<=Ð?8®ä"¥µcé‡8LŒµ„k‚ìða–y¢j�—}˜E(õ#‚ùØûcWÁ“sÐÄ%P´Ÿ 5&<ûˆÔG[øË…¾âÏQŽÐá†m§¬E÷Ö¾=ƒœÇq®|”a4p£ÆPÀM2âÃ�Fì‰ »ØÙÆÆ¤Lra6wƒÑ¨Zا¨TÙi¨É”ˆ’ ‹ �òQ�k”Á|2ˆc§åQ5ëõÑ—GM Ab¹oÔ·•äpÒ¥Ž…§so©ô±ë#¦mŠ,®ùg£{]“%{ùMÙ«@”©#WXÜ­œÉó—ñ­óßš(TZ²*^n ]ôl34C½"p…*2ImÌ)oÁcþ³gïöý¶ºMhÝ[¼•¶8ÕÚáå™ÑÕ»2f�h•Fšçq˜:ReÁ\ À!úÓ"RU–e z¥ÌU©©pô(¦x$óªx‡›zÝz…íë§�åö/­Es5ð/_òžGj žÏ¬ Wè†ù9I±çvjÃòâY¿I}¥ýðøäˆ(ˡٱ0õ€¦sÃ(]ÚXñËcIß§P…iñ<ûÒá× èm< o˜õ²ë@抭œÐ�Ä" *—rÞ)y¾<=6y�÷´; ^f\Ÿ›´áw�×›¥§LëÍæ?`•’Ö}Lbm¼{~*ô’Î…AUʰ»„…y0À=øy¿aDTm%eÒüÀÇûˆï›[a5Z¥U@âÿ3]­>cnU‡s£1ë/¥¦ÉWÛFVwö fž]>Áj‹ÓŠ*o#ˆ�3Ã3Rs ½ÂBÇ£ŒÅ4™�k~øÐ"Rþ�Ë1ÒAH.·�×c-ÇÅ *E^h\·×߸*èÄåö©�44^vtb±i�´ñÙÍI§¯.Dz<Ö¢I’!hÜb_•ÿ0∲ÑH‡èZc ìóâÛÈ®‘ï‚–\î¦RïTy@¾5Êáµ(¸^½¼Y²‰IJ²2Õdµ*L4¡„/V¥µäÜ}£UÅœÆu³ßð×r¨Ÿ¢ò3MAwMÙ+ÒÕ²8±�’ºÌ;笣1J©‡µ  žM÷Iç(³�K ½ÚføAįªæ±ò.ÆŠH3ef5>D4­.\ëÆÔ !¶Ykmò¤Úc:¿´æ|T¡Ò¹â9úDs»È©âiœ;);Í—ۉ%ýéɨi�XºCä§M$K¤œ±ñ²1 KçPg™šj¬ 3R™÷4÷FíûïŽû»bÛÕ©ñ™]jWUÔXSPSÞ¸àΓt©RbS†'wðÚ½ÔäÈýDÆrÞ‚±|C0Y2»¿ZNå6åҩ何İ/ãkãëd­æ!Ì5 ZÕTTsÑB¢¸`t¾�Œ›“Zþrëñ‡F±.Ý0¥JËè>O†�åÚùÕÄxOl`jµ‘ë¡ñ_ñräÀf^çÄ£!D«­¾Õo»òìÕ7{Ì*A†g(Ðk:RÝ#ð`¯*8 ‚7eÜ8£²j§Q ®§‚™'Ê*d[?\à£z8݇Š�-âî4¬Ò—Ì'‡Nú—"Ìѧ²�y¶ÜÁÀm£çÊŠ§IܸG CÕœ+èj +Tc ¯'�ÚßB#ÅßAû‘uºÌ]H2d2Û»Õ®�‘T hðºÀÞfÈþ+�„aXö@ÿÁyJ¢ê 7צ¹†"(»�lãêNRç‹% eo~:/Šy�êÎÁ(ëÖS¹Ò“Ò$ãRhiãÊ£¹.¸�QB“ÚžÕö¹ßœ;oT Õ{<¬7²<ÝÈæÒoM%ËóK{(µÚôK\×Öh½Ç">Yæ(G•óŒ7RÕôR00[­¾Ó¼Ððº6uEæˆEUŽ?ÎJt5s~¡Ç Íû`°Òk**Òëºïöô6uäx+D94H<Îdz„[‘Æ’ ¹£J&‹@lÙ…4n'TÓ"¶U^[Õ£DQOùo[zZ;‰�˜Øï®âÛ@&r´ƒ’úœæ1£aV`ÛÕ^2¶ô]“Ζ½œŠä=¡¦)ž¿ÝÓ;H0T™WŽ Êï˜Ñ2+°m»»Ó5ƒñ^d‰ËëUb· ÿQkB=ĺÔ£¯Š—èYvŸìèü¹6Åx‰0ïå_�W«°Ò#‚GºÈ±Ÿî½|üÀdžƒ£ãàèé“àÆVª>§IF@|Xg�ôú­M·A©^w¨í\ð†›FA3áèí ]ÕZŒBOaÃçT)o˜òïùSîÙí|–ÓG¥£oÉ÷.Á§#¹š–-iºTÓë´µ”‚$'�4FcçpKÊêF×Ô^Çô!] ŒF~"ö™#ÒŒ/‰�ŠJט±@l›€¯gOÞÛÿvfQÕ\}ŽAÚD»³_@hf¢°WE¥61Dy&@@bDÆ>r­Jc @·» uëD_—æ­È£™¶nP"§s?މ…ƒ›Ì”Š[Æ›i°Ó �öŽä\ÌeßíøO¸P€oê¡ñÄO𚲯 _>qNt_TKHŒœœk ªŠT#5ëVA¡×xŽFÌ.¢"ùì”úî9ûœÌJŒó¢Ù¥_÷µ�3øT‹¤ç9ˆô[¿}òÉp|hc´‹<ø‚Ʊ;¬º+[+p/KVAË�6öìÇÞ5ãIÑÎQ› øo¶ªË—aÏøC'¸j…j ¬böÇ œK2ŒÂWã‚Çã?·:~‡Wo<}ɉƒôÝèæ±5K¦ë«¼ ÿë+Ç¥ I��Œ Ê&2xôK#÷ÐY ¹Sš’ž',Œ ¥„1€^r]u|Ê·«)ƒõG` æ�6‘Áh±Åªé¡õF¶˜Ò ÀùÝᔹ®ºtУE¢’h¾^e¼¸À*;édœkwCu¯]ù›Ÿ‰°VŠÕ"X Ø'"™$@B_ήZÛ)6ÛƒÕÀDP;9¢SòÐêŸÑ�Bêö��ÿ1z!Ã�F%Swþ“²$É�Hmwò´‡‹„>Päx< ˜Åî�7b›ÌqX£ê”w3Ú¸ø=àkªòä½03=uè}h}|èýxÌù}mäû&¬çƒÔt�Õï_ |p;©mˆxã!‚«Ö.S³ÄIS¦äS4#1º+R—5Ǭ‡£R$T ºGº�½Or=ü"#?tV±q’€Ákm£*RÛ(ÄAjN¹Ç¼fŸ“Z­Çxèju¶C7ÂòÍj%{£€~‡Òä‡ñ[ú:=jó\i8™ÞÊC·q¬nw” šhןÈÝ!º½‰ðŽbÛƤábd®ý¬P$:+KV[ϹI™e^™žpc…on0%ßi¥¼ØS3IkTõVN QžÃBÍ!nÜ;›ª �MF1gš²ûÜà ðâÃ9&þ!`€?Ǭ«2J‹îo®Ù�K \“–Ä�ïFF1�slÑIsET­F¶y,ÔÔ‰¦Û͉WÍs�BqH’MHùcÑ_€¿n�mêfëÈ UÈ´±Ž5ãÙ:î±ìsk"ˆåvÛÝj‘RËïùWóZ›"ïXŠRY>Uî�E—zøHí{ðgž6U©ƒ‚�3¥÷5¤Î:/X�]K«­}ÂY\ÍF_ 3Ä<<Ä'ýõ©³Ö^;æ¦{«Ã*Õ’÷¸ÙB›ºÜ‘h&›°™MÉå E ©©AY›@vGïÍ’Ù�¾éÍ6\&vä#¼õBÉBÊyV(9¢#ƒ¹dvÚn'Ës@±.;ç›�yÝÞÕÚ>Iš»l“jU$$Böjx¸BÙÙÜ9fyB´ÿÕIÊÌàñhž?“ÔµÒ^Ü“Ò-Ó—¿ò“^öム$uqì† •gKh×d°TSD=�‚)dáÅv㇪—'»FñĘË7¥�¿AØ^Œ½”&„âαX)Ý Æà8î£À(%øÝÖ|µ Y®æ÷0He÷tPܹׄê!Á®|º–—;B¡·™ÐS¥çn8ó+Æ¡£ïl˜¤ ½J¾§8‹¹fÏ8¨ûÖ?ģܯ×EÍÃ@ilsœ·*¼¥£ ?NPSñ5Ìð°6ü±ÔîƒËí´4Zägø‚o4� ÊЫ¸YÒ´è ÁЦ1�u�ø#ë.�šxym–$3š«Gó@æµÙµ¼Ê…PiG•¢im”A,ë‹ÈWÓ‰¨þa˜ò�f_]JÏVL¡9J~¹N…Å_'j&¿:“Çsù�ù¢Õ9]‘âzs&¤œ °æ¼ë²7¦¬W綇¢J¥�“Œà=4—�ÈiõC1ƒT!ì­Ówúàðý<¯4ÇMÝ÷©«ZÝ3A–<KíFlâ3§Ö^+ÂlÇQÌ~Q`å¯7kÿ;p$ç­t -ZpéAâ‡cV‡(¨ן'x3+» kÏKdöÈ[ 2BbúûzÈ¥ãZ™j¹ "ÉaTPø’)›e¶1 µXL‚Œ’`rÄóK3#ó#«–m3®e/ÿ(ý—hü7(‰,æci�ê’ÑÅŸ·¨D;¬dCõ2á\Kâ’_ø‰f…�Âsx±,eñÌið7ø,•n]ßôìÄàìÚ("nñhOS†¥`”JF,â>ü¤à·.niIËH[VÖrò–_ñyN"¡Wñ¨dgU{N›Ñ€£*1{L½XZuT�LÛ4¢&ëƒ)�˜ �Óå�¸–:·ARi$AÊ5D:h¤BTiÓ½^ŸL1‚¶>YPª÷É%ê0ò‡À.} ÇŸMŸR­À ~Ç#œÿñ>êÊÛ–4C–DZr¦H`b×îåðRy÷RRyïR2yÿRrùàR ùðgœˆPCC½0Voó�%(o虇H颉¨íæ!Ï·>ó½H>À†¸˜šb ' ÙôkçáT\«Ž³i‘=;»Ôjâ5m‹‹Ö‚»»´ùÖÕþŒ~‚é·�Т[4JÍUÓŽQ<«Ô5uI  ®Ù•“-@H4¿ÎΠ#”úÈ ãÜYz½ïy OªwÏÄ!Wµÿ÷ÿ¥±OÐ�[qIÄ-b‹¤R~Ï¿†ƒ°ÚB§P' c®-ýå¶Ü wð>Ï©¹ŽN‘çuÓ]I‡êŠÕí?Ãü/ä�<›;sAF劜–ù286{jšU¶)­J›âz=Kˆñïm#G½û?ëâèª=½L ‘GB‚éh9KpI]~÷W?�˜œ¨sIÉ1Z7ÓˆÀê{µ·»æ&U lEUÖ§còH¿7¢ç/‰Uã5>Ø:ù3"¿Ye×+ 3wù½q ø�ƒ]ŘÛÅÞiõÜð2~?afy'MóTO ¿Þ\ƒ\{i¥pNkôÜ ‘^Æ}<"&ó‘,²Èâæ[^UXí‰þȰGZÌØ'ÈovÆá€€UZVZ>µ;&7‰è:æ^~s+7 �˜‚%Ä y{ªÎ€ $òÞœÌ&iNoå£ö@†˜Â–@@kOƒÎȬš‹Û×ú9Ÿx—½ûIæ–;غ €ð÷’?gˆºRãy1!Z¿¤;gºVöcÒ¬øÊKÜõ:N¢ÉîGºzF+P±÷/å1Èú#eþ¸];9Çý’@üíc¼yn$·ØLM8^HúFaÝÚëTCž‚ßûD`7-4좺]ñ¯¬bØîîÉúM=ÊA¡à²J3H ¤]߉ëÊÐræïp!΋6òÁs3€%ÃÝ? €ú ^Ã.J‚Ú)”m?q VZÑii,sá¿adÓÏÚ„fØ /8ÝÊЗgTa™?~q,ݙ▿Ë2—î-^L�ìß>©f}°›Oæ—Qâ@ô¨0èùÜp0•ma�üCo=±Ø:)]o¯O÷è¸�ƒ"9y/|�%ýð5¤Lp—kà6…]p G~vƒD$¸1ÏR1Ü[éÆ=Ï0”Ð9¶²—+1ë8é³Dô¤æ(þ³îq) íC >NÆ�5aI}¯­ˆ7yãЊæ0­“§šÕIÂàôBÈ¢¥I~fiÈŽ"ÚRtbÇ 1² üpHVµwT–nóCi™Üí„d`‚�¬69´>e÷0}Ohn¸nÑumo]ñ0?a ±îuFÇ9ö ±æ 'êæUê¤Ú?˜DálÂ./×E0i�`iÅevLMCŠûeH©«Ê1ËmF‘ÿéÍÑ�ž 7�ÃÖ�ÃxˆõŒKi°Ê$i;xôfã\XcÓÈø¨½nCdêVÎ RÚrg%cjêJÔ³ºÕªg^×©Æøë>8±„€’ ¢w&8Ïè¯ð¢¡­lòìŠö¥¦0ä�ÏÐŒxfW~ÎØâµ­Ó& òµÄ·Øˆî!E*)Ë0NFD=Ò_Š´ë¸�×&×Ô(f¯P2·šL0Ëf³ÕL )‡þX6ësiVNÞÁÎÐrÈ~Ù+òÕ@zê4ÆaÕŽ2‚®cÌqÇÁ>üSF4ònD ‡Ø«14´'�Tz©¤+e"‡¥ÿøF+ ¨šå%ÿijö„Ê¿dQ¢Ÿ^VmT˜UG.g”^<ÇZy ®z¼#ˆñr÷”¾ú¡…”j׆! ÏW¢Ö¶|výج3×JvѱLf͈8¢Ñ]ﱂù*: OÊ´®Rýð|Â$”,·èk«|m„Ÿ•A"Åaïß}8%>¼·‰=,?).SÓ{}‹¨ú̆…Q {Y}RɽРzÁn­�Ñ€¼[M?xÜä%xb Ó$ ò|—UA0áXe*5,Å S+1H’gD$�ôA!€nØ4Ëåcœ†K¦yn²úåÕU\'v ¼‚WqF�,:ƵÝ�‘›yæèN_ï#q‹OgŠÀ öÌÕù3ÑÞ3cTó`½)GÙË.Ö+Ï2ÛUÂxï<ºÔÀñop7‹_E1&�Ap*[¨®]=µ-›Ä„·rbêÍ!N±ð`J£Ê;&g?{X‰Ò††æN¨éËË%àíÛL~Tá×·à<7ºÐÙ±�M DhŽàψvB•]»`¬ûv®æ?gs•¡Ûu`Æîç`²{厄ÞB}¯œ}ìd Öc•�íÁI.�ÒçXs‹è‹Ø�ˆø�ŠÄ�mI�üçüž×¼à1÷¸Ü¹Nv¤Cìe‡ _®ÇqÇ6gœOûJ¿¤¦w:ç>çy÷� ßPÿàºÉv/œ0 Ýœæ ;1ÓBBP(߂ЯçþÉ`w–ÎÝ¿Àx¡Ušå–!bÅè–H–†IÇï�°–ïÓ)MÛ(_Üðé/°Ö¢:~à1�ž¬zb‹–ûÿ.|ßea´ü¼žÉÚ’Hø<ýZôb¤}Òydvä'�»œU©+ƒ2Á@¢ŒÄ°N”‘6W—‘Üö´“¢íé:Í 'I(”"&všé�a“‰2º|É+c¾œÅ7#DLNýJ²$MÑ–2k;¶Âì¡ ³ådæc}5½ÜÁ¬9G‹–œ­øP׿¹‚GWÔ¨©¤[‘ËÝ(õ�J‘ºäÕá~@^ûÂõê=hЭQ£Mµ¸Ü¿—ìšò^¶ƒ­+®gM$LùF‡ÛÔ›vX°eK»íÚ[ óì‹P“tz_ûЮaíc»rV—+awç÷¼ö(ªþýW€K _ïä…7„'ÍKÝ™¾K5!Vî:Ѷl‰ŸË|á€gžÙÉÏ~&kÚ4NO=Õ1¿ú¬ÂÊö.Ÿ' øáH“¢pú<û„÷a͠ﯓoõû—Sšè§ôÊé`¸þFšiæ|•/˜ÏŸþ´`Š…³.§úÙjÔ(R«V¹:u§^ø)D9 a u9�moS7ÙÇKÒ¬Yž-Ú´j%ÝfS1í–èr ?™(WÂÖërUûǵ¶C Èï»(•(E•T©¤qš„]¾'¦ƒ„îl‡ºîn‡bqqíÒo�ÓRzê©U/½ûÿÁsy^¼Þ-¹å-)ÞØ†ó$gó:&Eóº'U�®NkÆMw3 z™2ÑÊ’…Y¶lLräb—'›|ù((À¨P!¥Jq©€Ei±î—¯Ÿ_‚Ü á#dűüÜ©_CÆ%ŸýZ ¤¼ø¢˜ `ƒÈ4�¼ Â×ãöñ<,Õòò?]¸À?×Âÿ¦¹mýs/ü_Z–¤ ûI«hU‚y­ÖGáÕj_�(p’té¡G�}ú$0$Æ�;E<ÈòäIš/ ¼y“áË—?~ä A ’ª AT  ({ÇI$™d25…BC¥Âi4.­\.[©”£RÉÅ ¨‚èaX‚ÈCQ…¦Çå„\¿_Zȃá„ÅrÀáØG´ðŸÒ¶(–úн½ަN`®ï“-èzv¸¸\ðgŒ·ø—|>lR¤ “*•› ü¼’ÓâQö–"¨ã� F>ò…œº} A5�B7^Žøt’é>º\CC¶UhYY™Xk-S=61³ÅvØÁÒn»Y±±±Ö«—�½ö²Õo;ààˆcwœKÞÖü` O®qÅÁÁÍ)§@½ïCî† ñrÖ9ÞλÈ×h]>^D®h&ˆÂ«k`|î¸/M3åŽJŒ‡‰õØcñ~ò“O<‘èW3’<óLŠçþp¤OÍÃÛëëûV“>?ó62ýñGfþù,{ (ð/Ëañ„å‹÷cØ_)†uI)À"å�TÂR hH-`+õ‡�Þ©—á³9c”�Æe �i+³€�̯…r [9šä ?rÙ¥G®\…sã†÷ 8v˜ám¸¼ ` !¡¾*¬Ù5ÝpÂ,& ÎO„S‰Ôìÿ#¾ E’Ü) Z  “�Éå<ôzP£Âdâc6ó·XxÚl‚áN'¤Û-Ðã÷ûʼn(‚")Ó $•R29ªP J%§R1j5¬ÑZ­8¤€T€ *PT †ÉÆq…!—¢dÑ´2–UÄqòy^º (E’$M–e*ŠjUUªiªt]­aÀšÍj¬VÍ6›F»]ƒÃ¡Þå#&„"„„‹ ±PjfÌÀ¹J«,+EªªJM3éºÎ0Œ¦)³,‰m«GïºZÏ“çûLs6ÕN ZO‘pá0””Ê£²þ#"D8)Òž(QE‹¶)FŒC±bÍŠg[¼xó$Ø—(ѺYf™‘$ÉŠdɤH±&µò�yP¨È—kþÅ%ëPªÔŽ2e6¬22ÚU®Üœ –Uª´¥J•iµj=V§Îƒzõî4hp¡I“{Íš]11y¢E‹SóÌs­U«Kf/,²È±6mÎ,¶Ä�¥:<Õ©Ó‰.]Îsa-°%; ¨¯æ=Žû¡8+w~¢(ßiÚ[†ñ‘e}‹ÓY¿ó†@à¿Pè·Xì“Dâ—Tê³Læ•\îŸBá‡Ré¯JåOj-ˆmvÞÑj½N§Å€í7jƒ ‰¤'“ÍŠ3•j¢Ñ:]f0&“g±(›ã†ËµðxN|¾*X…B»H„Åb$‘8¤R›L¦3D“É­ÙÌ,°Z 6›d·{t8¼8�Þ»\îÝnÀôAžaØ‚¸CQ¯æŽûDÞ¼^WŸÏ·~¿8çð HÃR£¨ÃX8®%5I2)ŠCÓB†Q²,›ãd<Ï•(J$I!Ë"E±¨ªOÓŒºî7 ¯i:,ËjÛnÇq¹®Ýól¾oøÃ,½ð‚‘¿üÅØK/ÙøÏœüïŽy­@”ølàŒ/_nüø DG€�ß?´Â Љ)Œ…%H� llH0, ‡?..?<<¾øø|xò"„'bbÐÄøͧ<é;ÚVß•oyjã—4³ýMz®BMW† Ä2e¢§¥ÅHG‡Y–¬råât|�#|Œ“`„4S¦˜1£Íœ9},Åü½­.6¬YsbÆ;[v¼Ø³çË�Žœqæ Í…‹®\Åqã&Tw^ŠyóVÁ‡Ÿ*þ4¨ L78¤^A‚ŒAA™,ض!ö„ u L˜shhW00î„ ÷\„¯´iƒ°]''P;s�ͥ׸òÆ‚›·ï]�´÷ïr>úEÑoÿKÿ�ñ˜Á‡Ï!ö8ñB C–†š´Ò¡«”>cLتeÇYg\rñ× ýÜŸÃ<Á�A@ZLP.ÉA=tX…yáìˆmOŒ8‡â¥8•*Ã�L™Ë‘O[�B&)Êh,ß�L%¬eUªœ¤]Ã<ÄîFcÃ#ˆËƒÇnvÝfß¾\ºr¥Ýƒ‡^{-Ïolúê+¿üRç·ßnýñÇ ýUïŸrò_ÿXØr L Vðà©…_ "„t[%D c„¥T— pEâ²lWQìkšn¶€3O±bÙ‰§U¢$„R¤¤Kg"S¦@Y²ÀeË G˜*Õh5jñ¨SGR½zê4ÐÔ¨‘®&M 5k“¨]»4:lèÔéZ—.Ït릥G�½zíèÓ']¿~R xlР%C†È6lƈÓ58Æ4à|Æç™ ·ˆ6eJ¥Y³NÍ™#gÞú¨Èka �ŒAцÂ÷T(D³Òb0t±4Ä ±WŽžË5Ƴ¸ø|f"MšKâ†e°Õ  £Gφ¸pÑÉO .00ý��úDŠÔ!Mšv9rµªW¯ÅŽÙvíi°o_ž*Ñs¨OÖÎ/Î(ë¹Ümùß|òŒ –#j"D¤(�%R¾2õŒæUÇWÖb–¥²£hp¾¢÷ŒÎÝ¸Þ ²Â(ÒW¸Kþ/†kOó¿?ÇûÖÙ·ƒk�¬a·9+G3Ì•ÈU1Éea˜Lø¢ì½ïåïœîå.u¥«]ëF/Âæp‚ ¼AÆÒ;í¥½%\à_È£B7®»”ë»;Zc:?òãƒy02[NN$ MbV¥0¥Áæž�KÍ­K=ê[XÑèPÇ»Ì=¹÷ã€ï¢$…4rñÆ�PTÓDýìñ'yŽ…âØúaK^ê2f¹Ð�nçÓE ÚÖ K€;eÊ–¯H‰2ªÔhÒ¢]§ƒ†�™±(•6LËvp=_(q¼#éK(ɨÉÅG €$ŒHâH$�<ʨ¢†zšb‘&Vì9“ù7SiŠùÚ褧0ÃͰÛQg]ñÆœç˜XmqË0Šp…êi–Z”.c¶<À…Ë”¯H¹*íºõ[®{õ°^×Ç:ן«™6ÒY;íáIS¦Ï9qêF3l¦Í¼Y7׆&šÓ"øw ÄÄ)4_¼¨×°ËÀ°È‘Ón{ø×®þa5² œ�ÛÜ)g@Kµ„¸âK¦pE*N©"„V¦ú4«ÅÿôUé\Àõnò–âÿ ²÷L¿•:‡]¿ÉõÝš{ Í?ý茱ÃuAä‰HrÖY$ÖÙZ¯ñ%ÎÀ_FPA#õ±&€g ¼&´WSüRžLg=ôÆ·w$L夰cè3€EƒÑ†~M“ižëi�¦ÖÙz("TQ�Ž8á è�‹Š7ëh¤•ª´é±áÈ•‡ÃU™j¡vBõ6È(³:²q—¬û¥Ï¸ƒ¤»í˜Ç*r<ãáé%J¼è3aÇB”ú•Æ@Óû5‘‡&Ræ*ž½ÕŒyÕœ«¿_€ £:’Pr`‰`àøa«ì 7@’.¿ÞZû´ý=|.Ú_b)³Ä�&ÖĘÔ&:øpOô¥è¶è¦h\ª¨-5(®ˆjB¿:BµmÅÛú­ý×j—T­Ñ©¡û*²"*üí ±WÀ >{ÛE~Û�s,;D'÷DæõôÚ\ž}U_½Õ»gkn‡íÐêHYÚ=ÙŒ5ÆÞ»öúݶ ·�nl,Ðñ‡VƒÎÑŠý4o­'{ä¡î»ç®;n»éŠË.8Î8í”ãŽá°ƒöÛg¯ÝØj³M6Zg�Ub­°ÌR,0Ï\sL[æ¦bÓ Ÿk6Í©Fk9­˜¶§ixÆø7yñäD²xg´[ñ1¸£0b' BŸ‘1bÆ20nè­Fñyˆ=Ë{@Ù]Ýê}x¹O‡pÎÌé8]§é$\o×Õy@”öz7îŸØo8oD0$êZQ}»5p, fÉŒ{ß«‚ݳ/͵!2žž�œÕ^MÓ'�Æ7nÙÍËYìÙ~Š|É&’H‰ŒD~Cýlq”̳È&ÛÜ¢Ò9>ž£ŽÜóƒÅÒç²ûNþ3š®c×îÐÍë`�p»k¹mO»�ÿèX>ÙŽ[õF|•ž¯&þï5þîÿF¯ç)ærÝgî�v<1QÏÈ€uùX�ÏÚJæ.WŒ°þÞÆ³<¦ýQŒ�G@Ä„�ƒEm”c[Ê’+“y#œ�p]+ìMóJ:€BñðU/âî¿€‹a&?¯…”3êrõ–Her•F;QTÕSŸ§qR›^7‡ÏfÁ8`|<"b!˜¸Ø01b© ¢EŠ’,Aœ$ñRÌ’n¶4©2©ià2äÈR¬€^‘<…JäËU¥B¹JD‚à 7¼ð#ˆ�Q�jÊí-x®"DŠZàR—–ïÒ—�…�ÎVˆã(ôR¨‰3GáHÜ-É+L(÷&ù™Ú!t°h¬uvºñâ°¥ãÑÁØ´)-0|t{8<>žÕß‚DÅ93ü0nøv.1ÁPV2|ŸÉL@ïÜšÐ\>¹î †èy:§ëÁÂðÈiW† À¢M:pŠ.`M°÷�jN Žk‚#ázHÀÝÝ÷zž™�ˆýFúŽ«dÄE!Zq"Ý\í»ù¸&¬†……kdAèètW°|à CX"„�÷lA,#Ä3"‘|•ÏÐD�À`E.'µMI@wÖ4]`TD/¾nÖT<Ý� æ¤áì‡DÞ¶k<tžïd²Ö¨ºÃk§ 3Î)½5¹쬗©%麄±î.¢†ÇR>ʽï*:ìgCರ²*° \½Rì¢[éÆß#AøAB­jÎGŽ15Ífç°nÞ‡#^f ä–™•(½Éî:9˜Ž(ã­Ë>”Øf COÈÊ‚yƒ]˜\ÇNõ4#Bì:UÃ$äVY¹õ™!hï¥Ei­â"`J~w!aŽðIåºyæÈ^Ùövøñ=Õdh¶cîyªB¶G^Kè¼)…?�à+x�!Y®Ûd¦hd–B-ø„ň°»Ÿ¨üáü¹]`íB_sTÆtP½8—?™3l©W!ók�t­sÓ„\¹èˆ`k�Y¦w!í²pÝœf`Їµ÷3´�È_ÖË"¨õs,å`F1pý´B‰á ¼jmUå‹Q’®ÕÈšÂÚë’%1HÑlj^0˜°lßZ'"Qƒ`J»cü$¡U4!ÊIijF?D”†¨·~ïòÑ„éyBÖ;sd(# òÐôÕ~,Îdj”ÑÚÍ!ðhwZ¯”®­zÎÉp›“rF9r× ‹ˆ°ìUÌb5`V;îðób3‚¤ §Ó‘�—«›i[Ë-t“lɯ;Ìvݯ™3e„O/_�é`¶_kp±ìª“ªÝjNˆkvsÒ¼¢Ö–㆙ˆ¥šóµ6²òÈùø�Òp ¦R¿]Áº»¾ÿâéðÙ[ 4�V @åÜέHÍÁoY7yDUë{[b§ÓªXŒÙ€c…x3œ»¥’€V.Ìäb¬!ÀÜ�–@¯�•ÕœÅjLDÎ4(ÑTüfm5qì\sõ6ÔZ/\Z÷Üìj”_WEÍA (*æx{Pœr†9 ŧ!]€ª�B¦š@­JftY«WS¶Tk¥eEK§›‘˜‰=_ ¹;Ü‚Ç�å.„'Û0c¬IÙg §;¦°)yàf&ökY+—¦<7XàÆ¿„ãŠ'ç�«Ï=³ðc}£ž›LXˆ�t­ˆû06 Q}S]Š"Tíc\g´èÁ|bžÅƒM#!þ,f0šì=啉d"·QðkfL�Ö1z6‡äÔP [™Y?]²Ó’…¡ä+%ÇõlB4¨‘Oë™èuˆ˜µÙs[š€JµÖ Õ¹Œ•?E—ÛkŽ� %ÉFÍDÖa¬Ü8®•q&…¾Tœ¬ìgˆìcÏh5ò̳¬‚R/u¯qt~f ÎçžaRí=ÏÚfŽ­7jÉUîúªçÄ;â1µb.‚=@aV&Õ¹AÙq(º ¡‚¤"Þw�^B�}¡=L©åDŽñj˜«è-"‹àËŠ€0GG`Ê,å¡:BÇwß;æ š+†â�šÌÇ>Ž#ÓŸ¶ª¡¬ø‚Â\”óþ O`�Štì8`ðæFÛ FD�»V¢)4ĆŸÏ¾-:6X7Rrªˆ8’ˆfƒf±È+˜Œ³|¥�•óª„|9³Ö¢Âæ^ÁÈxÐQŒc‰Xú Xˆýü@Iá€þ`�(c=ã2ÐMV‹i¥‹>°—ÿõÜ‘‰Žháº(øzuJvYjp§ÂCÜÐLO»Ÿ½É¯®Y†— z?WÅ©IX³óqT$–ˆ¯šP€óNy#¨²à«¶a¼ ˜(ÑÅß`¯Nƒz°dF3gˆO弇s‚•`}§ˆ¢È©VÒ³‡¦’*Î?{"º!^MU¬X5�MƪG]sá3ÑYUÕs“Øj¨dÞsåè "Ê r�@Oñ<=ÌU#n$U*«KDš¨ò¨_†¯±“yï —¦e³Í‹ ›ï-zóa…æƒÙ郅A¢j¤t)áQ™WæÑÛ§Sæ@Þó?(g_ɨWcžñc9«¼ùKµª¨,aÚxê­ŽÁc‚]ä„uT2-.¥$ªH¯DŒW>XMÏÂl�Ei†åKV=Ÿ˜½œÈÀÈ…¸Ö†æyEá…¤ãñdÑž½!#°ê‡�u?�ðÌq¸¿v¬‹ª™X^Á7ÇÆ‚|Êì*böüt"�b̉a�m‘>:Ç.ªô4Qà7 › p¥4Pšs Œc(I߃ú*�Fh 4Hñ\ÖÑóÜÝ�3Þæ».Þ^î4Ì™®Ox%Ht6±¯‚iVíœÓÏÆ¡rL×¶Ä�ž”=˜X‚f²•Ö§I2CÑX½—h÷<ݺ1[›pÖ5˜�’B#ŒöþMU�²Î™p)?“Êxi¡â}FoÉ'àÓ² ;Gœ ù,Z£â€láyì×5´ˆù“Ð*Ó:ÝÆÛä-‚Ñ Ö¹€�ÚÑ0c¥5y/"6dzdhA{ß3±§U Ç›pŸ8—nÝB œ–Ç þ]Ë‚ÖàB{^Ö·Ž·Rò‰Ä<ÛéQ�[l°–F&6tݹTª•€-øQw¸T¤¡ @ƒÌ�Ó3_¾¯ûŠÜÌje‡�¬*7šóBÚŒ>“†»=Ø;41<0­Ö�ý×t!~ÿÒü^Y´æâðx‰Í,û…H§F/ÆÕ«„“/=Qp¼DÌíÛ-}Þ ÐL~‘Bæ† „°ˆ’á¼ÕHË²Š„i´ªä棽fX­à$¤ª%2E &«bÕD®*D&1Á‘(péÎ’ h¾áJUÀšôõµ¸R,[b]¤9‹í¨m@FTÏñ<¢·ºÞéhb¡ ãDœrû žŸ“X¥á œRÕ4-RÝ”# ¼º£âü�û†Ø)rp,4p‘µ°1ëêó[äèü�(t�Nn$^†S !@=àÌáX„>F 0Žü€«˜¯D¼ðIk`Q_öx‹8¤éŒx}Ç‘²‡$*Àœ»]¢Ä”©™ÀV‡À Âã% Ó<_„Ï!ˆˆœ¸W á•o*Kj™b@bmÓQ²ŽMõþ�¦kpHº´¸¦yÇÀ›Ì1Ä"ž“«¨\<ý�')*ŸÓÂçcçI»R¸ï«²¤.R?甹õÀ–÷”?b{€n#˜|ßIŒ]FåÌ3_Àüì{Œê³dtÎöß&ŸS†¤jèr×9æršïgØlÔRE|%c³ž!x‡î*õC«“n0g^¸è¾þŠqoãNÚŸ n1ß©~ÆŒŸ}-öÈÿ±3¾�ª:hw”¦J¢™gÓ|cš¾2–§(õ“n}o=ȸ-:ʼxü®�hÐ:…€B#]YÆ�Qž ïxðËã÷êÖ)tœ):«Ê(bN¡Ëy2½µŠ$AmÖ€“ÑBÆHII—ßË£«óS§®d�·áÚbî±%–>+þ«ê+ÏüÞš\Â0ür¦£3Iþã@ª #À”.ÊJwO5F}1ÍÎõ?êOú>XQ=ußÒ›§S²ßžW =Eõ,XtÃUÕ׸مeß—®×kvõ8¶ÌÏM87ÀÖ§o_»‘bÖ›êˆ×ä;9¢¤Yöô‰ù–”pýíÃ7ßgyTºD‹yQj“-Dgû£7´H•þq] ªýú³Vä}FcŸÕ––^z}… ª�Ú߇KuôÚ_´s¬®îXz1‡P»I뻺!Æ8¨´ 7"›•‹uaæXşÓa? 4UU5º¨iŸÖ’aò�ºª?àßµÂWÒ.NU6ƒH±!ó€n?o~Ì5vþ°$›Üqq³�‡-¸Q‚*ü`Õ}޼ŽxQýVX÷Þ×¢{­þGí&\ k4·˜Iï:©Buç)çzxT-Y ¿S57T«ÆÑðüàU/.?½rDãˆn§Ê�÷ÏiÚF÷�šò“ÿ,êØXoÍ ›j%ÉÚk/,š8'óŽj*šQþÿŒæúZw vÀ=ö¶5õaÕ`¦­»!:誙Õðs_ ÛãMh�2$%­:MùÂÃ_S…§’%VÌãѦ�÷ÛvÔÞÆuÉ›äeÑŒÚØR”J+K…×µ,šç©¯Ui[GÇëSÕ1Ø&H6 A"g(2ã‹ �ù_ÍâýU2ª¥Ô×kÅ=§iEÄe‹õa »»Ý�ÓƒPÅa±Ó`©gèQ+¨µç„2•zû0!jp4t¡ê_õ¯:é•¶xíVëý<ì|?äZâ�µ¿«‹*ìU\™Ò–ïžšðJh* zÜXèÛ´K´‹_½öªr_/šµ%ñ„;ÌZæÍZïŽÆ©'mÅ6bÕªÚð¨å’ˆÝV³sDÍ#­V›fÂÐk3˵fF‹ÕtëeQ/5ÔïPJ©ÿS Wk" —/«[¼¹þ|ý^íâÜ…s1æhzîq¼¯21ýG5X{ÙÍ "ü¦PÑH¢2f�$馪•Ðä>º–Þµré¹=ýZÛ'}Ë<ì¯W„ê«öæý&Ž;ÿå—Dà^RÎt{^3ðRfs¾‹~2 ‡Îÿ{îW‘v€ñZIÄUè¥zçrÖ^ÖðXI!âõ*°ëç¢Ø_Ã�£¸Ð5°cÐÛ{ …ÎrŒÙ&µ\œ­û‘³æ|Ó媙TõK¯¯§_û÷¤?ìú)H8S£&…ˆ0!: „¡ƒuŽ€îÝ`×°›à©�ö—l‹ÊKC=ÚzÓ ÚVzKcD¬C?½íâOT_vRš-jJqÂÜ4¶wá›ÿÔ£…¹dL"1ŠüJñb9CZÂô(™kÀÄ(×"ㆠbhz×;Hµ úÂæùí²”iÝün^–{¿LÐ5ĸ5ù S€ªtl©ÃnAè�Ðn¥¼›¯…ò^nÄÙã%žu>ȤéäÌSÄÿ|úT`:×z{LãýÝ®³Ö¯_4?Çé¿íÍuõÛWqÆÍZjdüX§j¦çø‹ÖPÃ-pR²EßS€§ï_ómpBž³Îqª*ªÌÏϿբ�§; 3]`1ŠJf=ð ¿Ü5t:`Z×+›–¨Ä�`¯‚?«zº>øe‰Œ6�rJ8]¿wNÍúÍÊù‹5�–¾sReضázÍž}Ñ©[â2u5† ¥ TjÞ¦ùÀw’¥ G;–€ZIß2Nê¸_ž'(YÐüݲ$æV©Äï«åŠë–8Æ}«¾jðò4²H”m]éc^bÎLSiÔ 5›»^[ÌÐý^T¯t3jaºõi‰£·øA5’:;ç²GÛMÙUëó«}~xxæÿè Í#�+!úŸðà¨Z8"®Gk6©åJimÑ´¤Y_^bÎãÈþ}�¶ÍaCùJ×»¢±Œß,±Ý˜’Ú4ûÌ*¦yø~›©U׳Ø[í‹nÓg›žlª¿|™È?%Ù@9s~Ž~Lz‚û/?Óó/ð>�ïtÔ§ûZT=„•–,?`sìø‘‰ã˜aÈF™¡E›{• XúÃ^†R¨Ê}¢ÃÓp…cš#Ž¿•E×zO8Æ\�¦yÑ”¡b¥%¶ãá‹r…–Äåó‚Óš³ÑzìÐ~w½Ik·]zP¹öšLµìCˆ™¥Ô›²_¥–S°V¼(û²K«þªD-kŠÖGcDý€îÙ,‡ç#©·wß~ÿC»~³u]§ãq³vZÿ¯‰Éžåˆë?ö9(jpAž¶¬òî?ô÷ýÙìJ‘£óëæÈÕwNŠ—ì[1ûê,™çÔU½¾øÔ’á7ÿ ³Xßëý4: ]g÷^/ÉesfœÆ '‹K_„*Ð\*þŸÏ;³‚ø¤šlRÂ3j b¤«­ñ>àÇdnzဥ|‰¬H^Îd¹sí·ÂN øQpøúñRÐMD:…Šn›o. F†Ú±—@É5ŒêP“�ó~7è J- icn»: î%Uö¶ª¦‡Š4€y\ÃuÇ ð†ê¦’\‡™AJ©P®î™ƒWËêh:Z! +cä‡-#Ÿ®<´ç/ulÒ®AnPŠ=ÿ¨]x>óFÍ%ˆ®¾½@³Uÿ6}7»Èð(õÀÈm—@z[ ­ê¨‚øðÝfŸâ´8åu¾0¸J4âþDAÆÔc* ˆq“¯šdÞþÁ-“zì„-™ig³cÝÒXƒÛ|`PÚÇŒ©¥‹º¾ 57jž•m•­¹Ä{S²޲æˆÒeðª�3{¾ý”z~Ÿ¯Á½P̓­¨ˆ‰™�WÍ]]UÂwñÒ�Þf'�ïò Dù½ÇãŒ(笠E4 HRt_º³•Š»=�–:¡> ¡ÄBKØ @Å*àríÐ Ã�`·Ñ/˱GX� X@™ÿÄÿ‡oáпÞ!X†r±3€r*�³ÚVËêìÐÅ›9ggÔ©ïòÌ�°D „„Ï3ÝDLU!Ÿ`Îz€ C ¡i†Á¯Vóч…±Ъ�AÏsÔ�껺'ÌÕõJ™„"è„Ø¥¨20÷ü#Ĩ �WÀù÷jbüØëã�ÓÞÁu¥YKÅUº!vÞÁ6ʶ XªO©h³^„h+P¼ÝØ¢IÝnÄ´šx6ö�yžëþè[`�N° ã-Œ]Èå²76£p=|ôè køš!g�VÕÿ3±Q‘Gjô¤›ÂR2µ:k�æEÆlVF Ô:61ÛÞó$o'1R»q½vÍeeKeð-$­°™ÎÚ&Ø‘Èm¾©QUl~¤„°ÔÏ-wsZZda·}Š¬Ë–)!/54áýعTþϵÐÚVJÝK[§?(0(y´(• ×ï5+°¬—„{z ªGôu¥»Zê™ 9¶ãö"+]6f†JþX�X?}ÿ—ðp¹÷õ²ØWö‹ÓÎ�OøƒttÒ×¼?4ô⯈e0ÃÊp8¥pP”‘�¢*)±BY)°ƒ…A~}²îA>º¾¡ ö/I'·¡uî<-ã¸Ú·¼§fµßì 3PbµüÕa9Æv0 û” /”®ªUBˆ€ikÏ;�³"ç`,Tƒ|± ̱Çtɽ£CÙ=ðÄI¥¯é&Œ•l?ºF·ýÈÞ8>ž…¯ˆ?q¥ëP¹¬-9±žòv_›Z ï�xµ¢Ýýl™a¼Ò] ±µœcJ!äyV …` @‚zÈ OÀ·FWÁˆJ'»yôÏ¡ÀމÖXtÇx<óPÖÇ@uqŠÉÕÆfh¤\Êm‘>÷T’ p›½D¦íèß´‡b ñ¬¦…HróÚã™0R-,107ÀϦs‘ª ]§oË)h¯ïD_Ñ#�ÒK”Ô†‚ñ^²äÿ¿÷*ôÌ…KkÄ‚Íl)¹ØJ+cƒ‹{H;ÖFÒv ”‚1ɾê”àÉw¸•@b0þÌׂAØó•:m[‰ã€éTI§ÝÈúì!/²áegµÙ×1`«9¼F†ü˜P0rVòn÷¶�áŸDécAøÓÚøÆ´ç“­þ×*á÷ªÿè5¹ñ•÷õŒ *Þ£ƒA›/´97ƒîÁOüõ—s… Å9× —Ÿ_}1‹âùº@úL³«×åÅ•÷1Ÿ„n‹ò´`±|wÅFÁ­[¦èݳ“`ƒõ=%ÓùsøµwDÞ”¾ïŒ‹åpÊ w m½-LSF?v6< FhnÃCˆd”•øÐ1Qm½2R|ä«‹‹-ú·¥Á¨6Nƒ S•åkŸÁ÷‚ƒÎ «¹ôà"ÐÖZE+Os[ŸŠŒÆ� Aw^kœ�üÊ,V/P)œµ‹ïJ³[ö&)ýŠýž7áª5;þÔÔ çÆpÍàçj4%êI‹— Þ°¢ð#a¥�»–l&h9!‹:ñéÆb´š õ˜§V^1r% +[ ¿ÄíÕ¶>Uk žI&QÍï‰t`þM|yì//f(y5npŸüФùÿÙRÛè; {³1xÉÞìŒgKǃ۵,_0±F8èÚ¶ª§úå�$Õ`= níÐÃoGi ©iQ—h†(†á!GÐ=ŸO”˜�”4Ôg¿9Åyº[•]zí9ÑV½¥•bGñOXê�$ m"1Ä@{¶d©rÍ9‚p�÷ÑKÔ6!ÂÂ06gþ• €ïî·fŽÿ—$ë±Ý,êGáÞ?äE¼Ó+¥ò¶n�‰E\åê1Cô-„gEV:(0­hJ%Ì:cΨãC‘iú\ø¹ßÄÀäÓ‡cä0ÔNOT?ÞÄÀqÓUe·ØwpsØ®Ç7 Ž­²Û1IGÕ’Ú5ã¬obRuâ»ãê•ÝÜÓ¯Qá\O|³ b—C‘ѳ©ž2¸ÏƒPÈœUUÔÓM¿­l«¥þÁn£åÒb?IWR��²‡aËoó®âõò͵Ó3æ¬0çÑb쯸 ¹›ÌüÛªyM{ KØ(¡Pd`­úw’’sÕºð„¡½•é^¶íÁ<>ÁíàÔƒTó‡¸MNŠ?ÁívšÝ?@iFÝØ‰kF‰¼ÔêEïÁøó[?þq|³.ÀÖ!ËË6C;ò!‹å#‚ ÿ÷Ä "z;‡`0 ~"€ñا�4nÝÝÑ1ÁâEˆQË¡¤CëÎ'¢Š(‡|Mí&ùŽ‚�ág¸f4ÅÒ=f ¸á¼�Xýhò»Sa „wx¸@;-aÐ]Q³–²¸†á<† œÑ„0¦­„åiV:%ŸOÕº•ô“ÿªPš'@ý£ËSZãçX!„Õµv�ÆŠ|`z‰äeäÍyàÔú?ÚË�¥¶¡Ö¾—ˆžL »=@¡ð`ò*Ïÿf��+ÅàA�Üc·óŒX5þE )}9þ3ŽV�’‚¹^@:E‚O¸õüž;Ú:؆1Âø"¯‚.ÑÅîÁ-ÈT₊×ÒŽå"CóU°— ôzV—䦑deˆ†²î­–´mÚô«ü‰öÐ.)«P'ëõµû@ZUŸŒí=ކµ¯�d©/Á6ˆkÕÑcˆ«Ü§\Pá1¯÷0¤Ù>JÙg?'¶ùT9§“!^þ] ô²®tŽœÙ¬«,�*š>Éí쥴ß"œ üì\ìsLÑ­"Ã¥ ô¸IÓ/uë„ù>£C¢pEêÃY¯Té’ÐV¾ª8 &ø<*tW0k™¹}7ü=@…—Œ'ŠKüî‰ìÞ’ »ëå¨Ã0‡$ƃ°ëÄ€ï5€†¬TG“·&¹î/Ê­"®Q¨Ôq™V˜ý*ݤ ïGÿx¦ûf0£Ê×�‰* ¿‹µ À:GГnׇ|4IY·®7Ch¾é‚úÝ�®"ëâ[¨¥üHH8FG®óK`iŒ(íöŽé%¡âÊÚ ZY…pË ú§ÎðË™�„a% J~IzR9±à¯êÆ<üXªï+L˵k·�"åõ¾û~oÓ¼ô oÞKÒ9Õ2œ×$e½A5x_%€)¼!9gÂ*G½cØ%u}D8ÆùˆÓZ¤!@üÂà»0æ%�œD©7� g©bUóÓ„‡{D .#z^‹éei3Ô*Ïu alé“$è!Œ �rÇ G¤a]†×¢˜uKáó¥Ö{šNÊæ/Kë:PaôX5¨Q…ÖØFÅ©m©ÍšÆ,§ ʲ#†ÙX÷Ö�±ÿðoáoˆ�‰zÑH^“ó=,AœœGœdM“¤.»]6ž�Ƥ­þ¥Î3T•L.ã ý¹F†—˳CñgÖsΜ¿®º¬ÊW€‰rî%�*ðÍŽN/hywŠfª/Ä ¿òCõFF]R ä3öTòxõxkV}C¡ÁJlðåMXHlmЃñ&Bñý=* –Ù­ä„´}Ê*™l4TBÞ­ñ̯Ååã�qHâ‹¶ÐùPù~¨ù­÷#¼ JŸ>²é˜"·¦%¿=È,ÜŠ ÅÂÍÓ¥^u/?£îû1ßj"¬··%c{–÷£ÇÔßÂßÔ¼·Q>ÏÏ';ÆÕn«–í �Nç¶ØÉK½2=Öù^§nþo²Â܆ùºñ—SK‡ÏJX1FÒˆKyX¤ïvyˆöÐuú¢âª6øÖ%PF9qæª{PñŸ‚E„Fts×jz©ÒßÅ]Z‹Pá)âûÈ~‘¤²] *äò”BvÁuh®7ØŒu½P)Àè ; ²‚GÄÿWU |¯@œšÂ Þ‚Ii¢1Á…YT*Rùa|(�oܳ"[TA©ÐþÖ`ìLÖ;DX5íh Hvû}:ùzD)a€Ñ8 QîÀh ÌÔÔ«ëŒu¦ú뮥\׬Ju¯v…¹°Ì¦ûìpšOrè0M/yÙÄs¼P Üàogþm´�&Hô<ƒ·@qæäšÏöðK�Ï\X—r~ßÑÝ[¬ 7ÃqhZ!«…Û1ì¬$SµRq¥´FØ0Ú?�¡:ÓøýKHÀp‡ôÇ •s&à{بÆwÚ-¢4 ÂÓŽ€¡tMý‚IGÒ+s<˜ªOÉG²>ù'{T\좘€«QG€ár| gùÜy:>%�¨N¸#Åò:šrV`*&sÀ#¨]X\wPͪ�ÑËI‚ŽxwFàXœÌph{KP�2“†-hC̤^²^ÂÈa,ú7¡u›Ï¯’˜oM3+EdÈ—l!òxæ…[$S«EÿYO]}¹aà³)”M7™µ�&Êzùga& YIw%olçßpú±èÚ>GÕ9Ú²)•!gWÒñ%6³«�˜ÌtáÜÜ™,â|ßX5X’¸ëCñoÇè}ÞŽ1Ø�r",í¼�ª(¹¸G’(ügv¦Jt_…0–PSA?¥¸TªËEˆ¢ÿsS´òƉòag WeôAÁ•ÍB0c#’¾øJÎÙzŅ䥔ÿbŠ…ï0‹t©a!w>� ´õ›gíÓŽGbGU{tÿÖ"Oý­R/�÷¶gjyQÇH“c�x)Ùà y Øÿ·_AémCü›Ì'~‘†J9”ç#¸AE¿Ù:g4ø·.IóÄÇmôhÞûüš<$³U,j£:èéÐ_²Ó!Ê:�0Y #WS˜€ÎäÍ„b&€—øâ³–L#f�´'´'Bk¹¨E*U§ÎK¥ñjâ›DΓaÉÑ뢅�Œuƒ[$òãr> €Þ‰é@Uc¨òŽ¥…žŸ¿H1šUé´Àë©HÎÆ�Ôº E�Ô]g�š[¿�ÛôgâkŽÌn`ÙÅýS@ß(ž<@¤ÄØ«’¢W×°7©sÏVøõÆ”ÎKø§&DÆé…dz°Šò“´ª›©)IÝMÀ€ :%Ì•®xE?v~V:®7eÖlgôI8¡"nÓ „` ìùs³ëù&&‚æÄÄ$¾ËjÔ’UÐÜÕ2¸+–F!û»vøÏ¶ h¢1Ó†;JÄ´_µÔ$ 4Enñ˜ªktÁ&acº”¡]ÓˈèŒÄsêKhxâø¨E°ß,½�3„¤~ä34¦,¨ä³þ¸€€óé�#‘¶#ZÖ>ª‡…néý!Ѭ%L¾è[ßYøµ"œT‡Äï'ÂMEV¢¾S‚N÷$MŒÈo*v…iŠPWø�Ìî{èÓÁë'ûVÃ�”ÿ0§äm‡°~rå†Ä7µ¿8õ…Ý�µí�uuåò©­‹—NVÒúY<7þÅ©/]Ü:uùÊiÚØ½°¹¾³½~$M ¬¼(F¤„g4í­¿`Ú,£Œü@Wüâ@izF§»ëóËÆz³šž9ÇôŽâ ØöÒ íåýó­áŸó�}Ïww—Njâ¡n‡ª¯˜5æ 3‡Ü¢ô‘ß÷nqÊ&&γÓ.gR††&Kã¾®°@*Lð�¼|~�]Ï|ðpöá`÷WL ö@í)2ÔôbYë}Ç7}¬–/¼î¤Öl4küßaMÅût«DgIÌYÚ0ÒŸ$†k:[õ¡ª{D鬞�çÿ,Œ�†M Ö€×£’ø—ØxŠ-Æxþ‡Àÿg.9|OÒ); U“¦éÃP<ŒœfðeNíž–¦`°? —9Ì›®]áD�jùÿM¸äùTæ½Øf?8Q—öKøÞ…YÖ Õ=©øtY�uË\Aý›ýq!j¦ -ý„@`uýtg„¨�ÙË/ý’r_¦\ztí÷þ¼ÂéÍ/òm*ï°›E�ÿ{y¹Ã\¤ŽnhíxæýJoj]ÃÂc®ÆAP‰ÿ-€ÿ'÷Ó G?°I~µêCRûUüé«í…"1úO�j÷ÚjZí• Ò­‚4Q ]-¨X¥ï¿_ˆ&í¹Ðáì§Ye*µ¨¼WáX–«š3µf�ÄÉtŽì?ñ‚¤e@Op`¡¥ËDÄ V;”n%8ž™ÃI0Aãô”²(P¦AcB |‚^_›.ñÚ²$زìÛ¿¿Æl@s^Þr;AhÇq¥'¸þ ¤ßý��òä[39'8òG ö‚¼¼yWiO‰Å²•7ÁXzã" pÚwŸp• ÇÞà¨ìî±dg_©Ñ‚È/y6As Gìs7¢|×åùc]uV¥Ö«(KYDnpTÈp•�!D)ŽF­fE;Â9²ÛØ4ž¸ *òèW_”$}9dž°â`Ù¬´œÅ‹4€´ž7wÞ|ã®pÊÔš„ïŸöÛ‘ßðiß9þ3 ÚZu>>ÊÃ�Xò´`•Èò…ÕXðކ¯.`s «ËÅ9˜»J6æ„…ä A–[*¿uq÷‹‹Çi ;Æ2ÃïP4ÉúÃ\`Œåø7£Ó…Ä� òÞ™ËÖcàUÙÕ^âì¼Î¨ ]Ý'ÇõZÞ]8}-åŠ,ùåî–Œ;þÓ�É´ˆ”xÂLݨŸ,‰©«×Î ¿u–Ê‹Aj 2Hæ¹^2ø<ó(("�;¿‚¢5<ÐkT�qå̇šr_Ø=C“diNÓ¢ò ‡Þ¡€‰ÅEnw!LÑ¢Gym?4 îч…7¨$¦ « dÙ‰˜û"ö– ~­�«cR7õ·«¡o0wbŠr©hŽF[;uª$j@Có«›¡³¡,ŠAÜN„Â\>¾˜¢k�ל#¶D.&�ù�ýì=þ*ð‹ƒRPv¿‚“õëÏ—9ÒC»þ È&OŽüÖùÛaþÍ0e ½U¤ï“�~DN‰8Ʀ^*ÖD AT…÷´{e¹â” ®©v£¨*ИiŒõÖ·¿_ï&ûdº¨•"ˆÎzàÝ¡œèÍ¿‚U¦\Ê%�rù=ÀM°¶˜WUÍóíH¡*.1o…¤Þpìœþ�6{n^yo—Ì6 å¡3wºzæ[·ŒNgS—RÑ"WÃ>@†IŸAi]æ(å©/Hp……”dúEÌœÜÍÎôyNïÑÙ�È„p'¨U´:Þ®Kè â�3+’V¼º¸é�ÊoˆÛÎùg[èdÄ:ûYo½Ài‚ý ÛKü¶še*éuä¤Vþ®­³?5žñì½°Ò Ðe¸ êÔ$Éï„»/Tóêƒo¨˜Ïùç•—è”»CÔÌȑ /ð–cè47BðN<>S†v4å‰[Ǹš®8v ©·B @ ~ºl,�b` bP%Ÿ¦ÕDoûö—Y) º…=�…¸ÏúTmÆke}´sæV·ä0¤¹ÇØ}Õ†@áëÙyõGâö_mµû£¶fô­ÁÏfg,ÞÏíºÞšãùq®�Î0¤¿,¯â~³ÑÈå"Õ ôTYn¸®ÊðÿÓˆ-KzV…Jà&,‚yD³f‹ì=–œS¦ Ø‘P‹ç1‚uIV �ÿ‘/åÆçá[#?)Uöøèͽ‰0™`V©Hh¨¤/ë¤[ÝÓZü�^²ðúOÝ®®9óM·~.æ« °[:&d"}jW î?È;–Õµ�Î?ëxæþh<ðC€d#k%rYØ“S¢_�²P�pyw›£»“¥[`À”Ö5 Æ JF솗Åï–NŸ±sûDi9»Ã×…CÝ6¹$­›)ó³ —J �I69^?%~DòÍ¿œÞlßrøg,÷ž”Ždp·¡×Eßâ*ÞdúPR°©*Ðî/ôIxïË‹Ó?b‚¿âÑRòÏ œÇ.®¥ª€L´bOýˆÂW^(Kü.ý¥¿ö pŽN�Eá¡èk77y�3ÿ¢3,6¹ä´¾Ì´q¯´¥{L›öÝQ‡ …O’Ï?�× ;/tw m%Å_¥¢v£Ëº¼šøIñúWǸÞXìáØ¾$iº�l]TêÃãóQb´/OOM«…l:ƒ:TÜBðÂaìäíh,øû€«EóÒ§JóÝ4Ü÷Û’°¯ÝûoÍÊxn\<=ÿ“XàD˜mˆta×ÎÈ]r‚Mšé’ÿÏóWÈ‹�Ü}ážWðßу¡“‚£“³ t•¤‡„ax»ÚÇ‘Òg˜‚7b„!ö*QßÎ;gGm~øs^ÿ—˜Êë(¡/ºžŠî\ü6� ¤(š¨Ãòý ¨"ÿ=«ᔇ‹3ú¨-ì‹—ûÄ_7ÑS„Ÿç¥÷‡D4ñ€ÙVÒÍ´¨¹&‹ÌI‹³Ÿ‰fĪZþBíRÒaŸURŸE\j»S*f�çú^Od~ \Å’ º�qªöìýÄu=b©ÜÒ¾¨©C?ROïfÒÏ2!±ºÂø5á[Bzû‚rð)yTüÜw×ú|á2Ü[£ë|NA,·J´ýÚdAÐ<ÈUÑ|™}jªu'ÿE’OfIïÏ!ÈŒaž%ù#dJã‰O�@ñX"—ûSX@Ñ…o»ø„óĸž§›B2C©Ÿ¥ç A¦ÈDs]i}7äןÇîÅwTÚFÏuFBdûÀðé�§¹ä­îs—!nw•dÐpÏYžãvÑ¥ê‘Ý ?²‹ùíÂw/K_ðƒÓ‰À-êyñ[l0<£_Šc©ï{.8Y:E ³‘Ê:ëãbP¨#4ê¯�Àl �•^ŽôkÊÿAý0)}šý!HÅð‹Ý¸:Ì]_+|ž*9ÃvøèX§€A…8¨Ç¬¶ óˆÂߤéËáˆ/|Î ×c ÔmöʬµånÚ^xnÏLÅU�Æ€îòbº¤Û¤ŠÑÀÂÃR–{.å'G¦…8— žm._5OlÖ`ý³M.féùLƒ}œ6=L¶ŽTU°~—賂G þ+fÅN�$à Šô0Ì(.Ìæ&§)  _ù)ÃÁLiIz¥M•&]n‘®FuN }ZÚ—*ûÓ!Ö?—uHª‰ ÿ¦ šÂü.x“ó ÅÊÁMîä~ûÖ›¬K_?…»¹û/»— qý*÷è ã Î'¿¨yðïeÛד¿?Ó÷{ó‰¤PÉ´ØÇB³¬Êy�R›´¶sc)öQùî‡ggëñDVØ„éŒõVz�ˆþ»Ñ7©¾ ŸÝ—ê+·*wÏ/aÌë4õÙr2KÔuD´8$üÀñÐ+uJma¼¦ìKšú—Éw¡¼°£‰Ÿ )N°É‰8}„¼féÌ£Ê7ƒâî…ËL4šÛ@ýp P£úŠBe%´þè“۹ͤl�ó̈gúIx>!Z¡`ðÍ]DjŠÀÞÑ3Oï‘£â!<¼弿Ðà+£7טð]íαeת ¾anÿçÔèZSÅjqœÀÄÑW“AÉ�oÞÓî!­@º%"P-sŠRJ‚N^ ¡<šy;æ@í_îÉKßÂ$gò̘ÎWh3ç‡lÝaÈû4º!Ÿƒ“=/‰ ;•0ËüEý`üD®Dñ Kþ……ö9¹|’äGˆbŒÆ¿LAñø‡?€·D�±¹ÕÍçI' ”cõ%qòfÙL ðJ“L^{9Ö KŽÈu0Çp@ø˜ëβÇåŸHš…Êú0ã7­&*)N ó¨Í4�#*Øu¸ûv쵡4·ÃXþá©fË®Óø=*†¥s¬¶.šÁ7£ïbhrù¾U\í²¢Sê÷Aiº2u<%“ͨmЦ¥ÛÒÐÈ––‡˜}õðU9Õ âç¢rÕÏK°Ï„ìB³*v›Fš÷Zèh ØFî+ûüÒHãM´�e�R)ñ5ú�4I7Â7~Æ<è{é(eG-uQ˜‰›¬:?´cÃßÛm.ïØ›Êbæi¥�}Ÿ&TCï\ü[É·h\-וg°þñ;—¸œ|`žß-ʧâ[V/óþõБ²5X×Õø¯o¾3„;ßQrbOŸ´;³Z²“xÂȇ[tº—ŒW7mÃdt!mFywò¼õÜ×NÞù_? Nå²å Ãyo ‚ä ��NL·ä±5-"l\Š7 áöžk†Æ½ k3©�F,¾!|‹ÚëªA¼§®ëXÅ�ù,)™äŽPÕö˜|À"ß¿%…Õ×Þü°»|ðüÛü;ë ÅÍ_ÿ1üæÏÁå‰Ï¥Y®ú, è21e¥xr¶XžLžÌÙÆ»|c˜¼�ãH%.þÍ]‰çlü–&PÐË\ãºëN'%–ÊDt~é59LŸDgl�t¿~ªh’v_«GP³øcÔHѶ�õžC& ³Éawí÷N©I3:5æ�}Mºï�Ò+Oð YP3èu u%/"Õ‚—@ÆN‹`ŠƒèAÓ "K!’—i•Ϲ…¼¼\ çÔöe^ÿ)1¶ÝñÁ¥ï8É.MÎö³E0nfB_±&}XrÒ+Œ‘-6Ó á(–B×/5_ðž[í;Û¾†·Ÿ;aêœo9J9t¹ :òpŽOäÉh!ÕÐk:\3¶AI%Ñ®xv�6´uÃ/Ž-º[Û¹h»½çïÞ•ÿ‡H^M|m xE´Öï"圧…y sÎØÑNœ‚5ÐUè±O>õåmò¶§CÑUžöT™7ÈÙUëΡð�x--ìJªî+Ží£ðŸa­¯°…§V .­L—9ÿÿLOµr’…”#Å�’Êè"ÑáÝà*ÆF€ ag—œ€Â¹ñØY –²ÊBðÈ ¸à:8Shh„rÜ™5@i&×ÃE{~…[�€¤ÉÀ”&ã²Uƒ£Áü;` —ˆm¢h¨YKÁFµ‡lð;·Q­ˆ¼‚�'` bÏ¢LÏö¡Êà©^ k‹� íªp;ÇØîPmq`¤mª@¹Ôœ¦hë–¼*†„¯E¾&×Ãì2 2¬qBS�§ª[õÂðé#h�aöQ!,ÉóY}tZ1Ðÿ­Óµª5‚Y›J2–¿ÆH´5#ØIÓ‰B؇EF 3âé´5æ"+ˆO�{ß ¬¦°uTûÉj¼Jð³S/õ?7%(/Œ’:šÈ¡Å*n«O Abé«Íl‰e ¤k/Xk]ªYÎÖ¶D�öÉ­+~>4 ÎXûæšqœú벬äb_f€þ¾ú¯Y'`b­Yx3�ûò jÌú´ï 9× ÖŽˆL1$ÃÉ4@2¬ÉyÿtÁˆ×D3qéJi:“Ú†Õ@,MÆ'½³†òGE" �«œ#Ø*ÛV RÁÍ„²Xݼ,ÒÁVv¯æ“¥û ë 1ß ‚É Eܪ7#Aïr”N·_ß#¿°"gÕ57(¼y€3Ú ,艀#Ë›d™l1 „X8¯j*s\‹[ô÷ep¨zT†e“ð2 ž ,9— YV³úɸL^lÊ¡©œZÖ™>\Mÿ¬¶åUß1vùá²üA„CÌ‹ØBÞÕ×Ùgð©µ{èÀOf15º9 üù‘¥Y4¨pcñ¬;k]²RÅãÓEåtôU ÇÖ)¶X¬… Fн^ìú#—’£÷·8Àébàm£¼BªÐÁ�¢¥5†g7 œ|p×àÒù*A¸¼¾[eå,Ì _*@0Ô ˜¡+Ðè keçoiHÔüO3>«¥„q? ¹+šyBªŽ«Oq …iSG3;kžÌ΄j¦®H‘øÉxìô%Í…¢ÎK¡[�Á ‚ßÚ§y*®ÐÊ5|7|+ Êf”YdR$³ÜËUýŽS2¹E[phT¼Ç»7L›~A!ßÕbR¤ÌÔ¢h]YR”jB8È@ÚÖ¹¡jmsÚxàù.UåYÒH×ä�Ø„¦ëb! ødÇÀ”HlìÆ^¶ðÝ.B4ˆZ+¦)ÎóÆCK¶M@?¥œ±ÕŸ5äÅ«áÁñXßxù{G(õ‘��~òO>—ƹz戾_nøÖ[û�+!{é!nÿèlä.γCÓíOíb—JUÁµh¸Æ›&ØÏ$xQ{κϜ*ÙÝþ� ü ¾ÖùÞ$Xrßÿ(¿7“wVWG®E1zÔÜÅ8¸Ãô>Ư€×)½±|ö܈oÁX–á2É4JÖz$F8‹ÙoT=•z$�[ð¯ó›ÀÃ\ì;þ¤Wܪå4<H¼#P' pÏpÎvqFtÈÙ°Nd¦`ülxÚ=xÃbOy^ÙŠ™ðÛAüQçÙ=ðÿ$åBÕnZ•xߊ›(€Sò‰}\0èJÑ£@-‡ìDz¯ó7 t~©£x†‘9Ý>Òé23<éb±¹:ÅŒ¹;;”C¹üEþ+7ÌKbj\Ïuo¼†2ù–�=@�(“_”Û~Þ6v"ê�î„ éÔ¨î�V ?Æà…6*^'Yâ�RÑé“4‰˜t*ú¡z è��ŠêždØ¥ç[giø òÑüX‹�ä®Ìl=錂nsI¦ 5�P{xZãgœ¼"èdb¼b}Ö ![ ]ZßES]z•ªn‚ Û--eC[œtHÓ1؉†5 ®ñ¨[ªLd“L¬GΕ#&°JL1Ð×µà‹>—Áõ¶TRY¸ðs>!á[Û¸¶î#eÿì- �šPÈ@?Ø™8=w]:8$’À#†‚-¬²ºÑ¯-ÿÙºQþi2*”'†X½ìµÚ-¯ØWƒHR¹u²^EÉ6ôRýcö` ‘XÞ�LÅ #?”p|O€WøÂžÞÅÓ'qûd Ãu {”ÀÆ 2ƒðÝŸÒ 5¹SÅH¢Å¯¥ Îú Å瓟¿›H7wáÑñS_^«„zUnD,õ=xw’-¹/Ï0ў̓lîY³Öb²bj'Òˆ&SvjO/ïœçÛË;Å`×¥�W bPÊàk¡ûtúQ¾xû‚™rý}º Ùž@˜ã¿Ç£Ñ¦ TÖbø¸ó.-…ïÊj¢ í‡gè¯râ¿¶r½?ã~ ™ò½˜HÏ{ªó’–Æ;¿~jÛ~gA[´œ�˜ƒ}Dáé0­ÈÒ|Œ0ÆWVý“m±¸Òwž.¹óz~�†.ñ»`6~‡†F]äxíRvøÇäë—;Ífl³®ã:΂-ßÂz¤gu¬ó2El]Ê%‘ÅÐÆÀIœHaìÀ¸•éÒM/d¨¥ß×p�dàì˜åñJVÇ_S±Ê“èx” ©ÒŸÔüÿrpl?w«kª[’à^æ0¥Þ–šOPH§š÷´\ƒ6åùÃL.Hç?ã ¥\�ÄD˜Ë‘ qQ_ŠÿÌîûÕäý~ö½ÂÄgø¥gý£•G¿Âæ»ëšC'+ùÞÂŽ¼`½¹{øêËÞ!íçþòßs{Kúä0& ¯8R&Ù''ÙßñÖs³Ö’48YwF{gC“?ÿ CþæKû—R{JÓ[AøHzüsçW±1­]·ÉCŒ%YLF¯Ã›ðÀʤˆ:¤Ãw Á¦ÒǨ‰*4jУg{³ÇòP~«é-J»t'Àk×Ô8¥¯Êƒ”�7¨HÜy(qÄØ/@Ì.ïû‘6ÚC!´ó©pHæÌ:rCPžNÄÔµ²RµÞìYê8 ýê•ë|“R»zw ëµWÜyàÖï7Ίõüx¿bÞQ›ÙË Â®�®> =|ƒHãã¬íwâ& ÂÁµõ^0ð�a{(-À�Þue8'_M<ŒôS¿(nN¾£Š­�ßø�¿k:Y\uöþÜ[2î¯YIg>»` ºŸ³9nÑŸ1AÚ.y?Pkný"0tV車,}Š]`ËQ(Ud¶œv‚�Fq}QúqàX%�°ä"Ÿ4V ö³,½'±-Ö‰åAÆ < šú�)·B�¯Ái‹�1JE›ûfì[�é¶ýÙt‚ò;êD*†ú¡vøÑ÷Í¢÷øY+ÐÌ&%–6ÀšfÌò¥ïŠÀÚñ ‰®Áwpb¹<$c‰_}rýÖnö�÷à S>Öb¬À·<ìGË:cC.Ù�g ljR¶€!žØ4yÓ:~¦µˆG"–ÌÜq52 í­ßÞÝ+òU£ãpÛríwuBT�v–|ˆGÝù_9óÊœ'àëëœ@ÏZjy¦Ú bÒ‰Ø Î®îQ’È=î&÷Û~§ V(^Žwë}ßtÀÜóñª(®² 4«|ðz ê[]”ðÉζ¬&”Zuœ=!’Y»8†K»9‹ôòá±õ#,Ün;ã9¯�ÿ_ÚÌê½­¹ÌbŸŅ?[N¯4�2[�]ºûÓâì\�iM±��ÿæåJv¹CE…«îxÊÛµ™Œ Öªä±cmï|,Vx=xÞ*¸4…/Tr0| ¥ó�»åI�¢Óig ­z+ÇIµ^ÃÇ[eæ±�0_Ã�*oŒ^FKa™•¡m(ËçKÕB!A9Â\òÙE™Áútª¡@ÒúÓèœÜ‹ÊµpòÊÀÂ&¼~aHGãéCQ?ÅØÝè‚¢ÔzDÎì!xÝ�Ì„ŠZ‰”n~ëƒwq;;@6Ï5€ö®W.�:}ñòÉ­[p®ÄêôŇHÙ"0àWƒb\:áxIåü^¸¤¼)·¼Àn°ÃiÅìК+ÉçP ߘêèç�‘ü·_ÌéñÏ(�|ozÇàSý1IÃcóÉY™çÖ;ñy†s¡3 ˆ[DJo]JaáDUj Ëϳ@ukŒ;¶"¸»ª)~–é €+:”•èM¡~ŽñbSß7¤¨LG8væ´�í ¥|`fhdÏ4ü4ß̓Á}ë©gíÉ…näК§YjMëñƒÛJ<šµ AÁÀáÛ·)ü:Nc�ÿ G#�›£Õºz÷`l¿Cêv’ åäùS9Y% 纞bK Ô[#dzw’v£�ÄzSÜËE÷ÀÝ{ÛæíQ‚ã«óçVyiáÌüR6ÑV–´jX¥—U0ú¾öšßT¯P"úÉ9Õ‘¢Ïޛŝ]ßg@­TQtEžüTæî˜�?ùE¿4øbÆûÅl,µßõåς׳Å&½k‚º›Ž²zŸãKTaçÜHÆ*ÜL!–Y²h^RºDÍ?-µ¹˜wì¡"Ã27_‡¥§Ýíc™ðgïmÁV™jQ�PªXÔæsGRržI¢B]Šg �@.Œõñ÷GMqX46½¶ö§Û(e'èJ}²%iŠÝö¨­3ÇãÙŽBiº�™áï_*( ³?�üHI^ªfRý•&Iª*©ãrƒ¦;²#&[÷d\eôø·Ù³{ÊéÚß1ÃáŸz_¾(9(ÇmN¢Â÷¼²501W€rAÖ+Øñ1(Ò”•n6¯ò:Þ•þÚ¢\(똘ˆËlOSÝÖŠ‰ˆ Tjà¢Áó|YÛvÕÎqï5RK¥XŸˆBÂqæBÄá%Çõ]âÂDÐ5S rT)K­©êØÉNF[CEJ¢Lþ­h9‚GQöÉ©ve´c®rËÒa¡?õ YOXÄz ¹á ã°³FÀmî„c@ŒÌüúzÐ3¼z£­õµYÝHþ1Þu±î(pn�mØO¬=/uëNs¿ íâ7¸†i� Ÿ!·Úª/´â—@\r¥ám ÊÙ@IÊê~BRbJQyÑJÅv¢q5P»±v;¬ Ýè X¾ìKµ ‡#Î&xÁÒ½¼Q”»T4k€(mÐ|ü…OÅGâ·C]µ¤ë2ð&öÌWKm¨'Ù†Ùš] )fÅì×ñLÄí4ûçûðÛ¶6õØOAáNeõ`æðnžßtcãCkuò5�XªUöó%âø GUQÖŠ+ÎŒ;%3Ÿ ªÀ· ¶Ï¤9ôŠÛÂZ\fÆ[¾÷P¤D{D±°±{ùJ–Â3µi7W½´Ú¾j¶üöïQ|}-ù®vCjdfIò±…lÙSd�-Ô¦v Ø)hß�tðqLý=r Ê×ê5WãÙÙÿ@�<Ppüœ‘ ÉGõzUÜz~§Àp¨FcïŽaœ¯õÓ]4D¨Hu gigYÌòï�yw‹è"yuWþü¬ûnÙU_0B3-÷öëç=”£Úáµ:ÅÁc©‚]äË!4gÒ–œ"èÈ»“(0ظ�TàJR]BKHP4–ºçµw ¸gWû–WIL6‘СәŠeÖ¯²Ã}ûþ±õøtx›sïz3wï¾2Ò8ìÜ/³NÍ2¬Ý.5ó»i?ŸÔFœ™Q³è¤+ê廒ÇH~‰ôJãjûñŠ;(]?Wrø’}40“7SÃC¢îÉ)™¼ÍÅ|#Ó~í`"V:Ï®(¯Ó&@qŒÈ�`¤pçè;ºº)á`Z‡NÞHÔÍrA¦î4먼‚ŽèL2èøIC|mNµhlÈ^§Özÿ²Û|„�÷ÍÀNç)¨õIz·¹³1Lìt2Û£äf? =®‚Y´+¬º¢Y�#R;ÈmG‚4­lŸ‡¥:¹²¤%~ò¾8Š:+ËG\HeU¼\—¯q™P�ɾBÃ#s¬ªküÝk ˆõ?à< ­|]´†4lc}eHî’8·­pYšì:ÅçWŒtÑ/Òaçò�®S–®šJM¼(å:&E#:IUnF½‹:qþÜÇΜ aîtÊþþÝ jP̈;X¯Ï邲\y…À§Ð*ïZO“¡GÀ¹…Ù¬°UÓ½TÚ)ºcnE1(^åõLUD%[¦Ì¿=ЗŒµùøÓ‰Fƒ¡#Òµ~/Á·?ùÄ·2ìº5™µ‚£«òßš x¶\Á–DzDzÙ_þÆ †°¶Je©d*ó=~t[+7–™ê#[Qu«¢³ñ;Ÿ¥š$)´×Sivd�Ýó".=p“2µÏ× ´�ö¼ºÜRÜAúñÐqŠñƒg]MBžC¿^gßUº7ú¬Õ ¸óŒB)”ˆ2 F€ó;k÷D@­ˆ·x¾ºÞN4«C…›b³¡=F¼³ƒÊ.nïÛ /ÛKÐbVåWŠõ�që?pú»N­YgFaׯ38Î@s:÷×™¹xï¨`´ÏmèÁ=Ž�ÏeêÛÈmó L)*¶fÔgúá<ö¢% ü‚k뚬 8ÃŽò’e‚›5ž¨(G¯6Þ<÷j¾K†”@u€W>Ú™Ç^{íœn’ŽÀà,W!_½&ž�"p£¼ƒ›ˆv w…Kùb¼µÌá)â:9!Šò­M;_ã|J'™¥‰[°|š.0¡­8%|ÒRÙ‡­•hûÒj~ƒŠD£ÒÚÈriéw¬Ç¤D¡ÑÆÍ$·ƒÜ)ƒQJ.¶ËjMÇ� š°§¹ÝÄx¡WñÛmÙ§½Ÿ‚šÕowD‰]õÜÖ˜«àq�}=©±b"÷©¿õX@n‡N>x5Ï.Ô|×HµËnwذ©ç£–4({éÄÅ ‰Äå-n’Ý'ß”¼3%èY(E6“mÚÎ�@ q¹VS„šÒZ'rv¥+ùgw7úAvU6)Õ^hÀí«9 ÓK¦œÇ¦�°èúIö!4ˆ¡£Y–„¨ º¥�Ë€LœÃ÷ž ŠÊ¶y/@•JM —ÛiL"g¥£¯ššP瑘|/ñâ®ÕDñþ¸ôøòàvêŽ+ûgß›ˆ#þô^Áê¸Úÿ ¾_Çà. ¶üÛÌc¹Ëpû�=XåÁgGçs( Hn¦Èû¬ÀëÅÎ,Ê[:sWâ|³~n—ŽBp†V+N/È¿t¨£ÈÈ–5™ÊKg Ç >ë DËÒ T=Rç/RUbtPy¤Ã£ˆ'Ðû�•E¢‡.âôneKE\©;¥¥¹w#;¿üäîPuuQŸ—[Xyê¹Ç‹OLêF—ªë¹-:qõ¤N+"¹¥ÉÙa�4%VT²zø9•×ú_°ŸÌ”8ùJsû^TF OÔ3q�+û�:Ö“RAT.á·Ótëèd‹iý·qëì·»R°>0®VúõeÆç½˜v!´ˆRý?N¿RÝLU‡ÚÊr©¨eÖ3$íà+­ƒ‡PÁËõ� §Qz€2jáåµK‚àmtqýʈ ]f]Ú¼œ�Ý©ë�ZnÓ¶Z5E¿~®öÛWY–”3Lå…Ét³HÒéw”ã2¿ÖLG× QÕ¼bºÈ\}¦R7'`DªCþ^Záe$ $+®˜&ŸÐ‡ˆÝqÕV7E29a£}'ÏRõF±Ô«ÄzÁ–p Å{g¾@ImÔò@D§ÓLÙA�¡†6ì/£>Î’b½€UUþU© 8U<öñ™ßlj-³¨~óL^JN_¦ë§ÃD‹†Ø$Ùæb üUª¬§š²€MϽí|bÊ”uXVðZcÑx  wËìÅsž%«ÊÁ²ôÁ½¾•ìAC}‰¥x—Ù)Ê5'N0•ä•�­ f(5ÑwäïÄÚÇÁßbˆÇõ`µG¤J.—ÑÀ÷ŠÿßýM€£�;~ÛåV ;Dûƒ´L»ˆf…ööJéâÞl¹˜-•+ûlËt^ØÅ‚µ!ÛÌ‹ÆX‰À´nEÄÇîÁÈy”åënIç%•¢�ÙëN¹TIÛÄêûÉ_.TEeu+»¯>u¬}yJÒéãŽÖ…²à‚ùL´f´†¦Æ(ŽK™#¡ +(U �í¦¦½bíËw Øç~û¸ûk‘Ђ½¨”�”·©WWæ––gU˜¿|†°Ðhó’Šd�4vY-.Y¿†Ž<™µß’´Œ¶€(ÞHðÔ4e‡B™ jgdõV£y«­ Íb‘è—5)è¸×ÕÕ¬š!\ŽÌ :Þ+šŸœ´<Ï 3¨þ~ù³Ö¬@•&VV±ïJ(bž³ý´úñ™ÕSž‚‘‘»Íå."Û«hqÿq ãQü¹Ý?ËŽŠ¦AÀ@Ã}yÉh¶]>�ù‡$'•¸ýÓo' �oëb{ž~rG(Ú_w}²»t.ß WZ«`ëé==5Øø—îÜÂGê­„*³Ë¢v˜o4W1F¥iÒ¦»¶�Þ£4}¸ï¾ð3­ÕÛN·ÈŸ¤iÎ"U:͹ Õ˜06Òüs§KL9Vr]Žº÷¥uU«É…P. à€|C µp °bìa’A ƒ�’¨ÿA婳“AŸ$ê{¿ ßôWñËo€¨ïȤӡžñxëù“ˆÂc“-Z�ÍYÐ#p‡»%¦®Ã–.`¸e ˜t•EÕ3–w7ci@§@«hu¤mnõè$U|î}1l /iƬ‹W¨=H\:¼+òîVQË«JÊjVX W ÀSÕRܸS{E¨œ­ít™_Ôn%µ‡¸fê“å,fsìKÖ -dßž^ËãQ{&/3ƒ€�Ìðªˆ;'åkˆq9»_õžàƒµ²W*¥aBl:g)Žr1¼ÎÊgpÛFO5NºÑ’¿’`lŠÖä»5!í¶@4ÏÕ¶^­©ûÚYDõï-Ì=÷f ¾ÇªóV“rØJÊ«|{Pqº¿Ü&QÍöunqe¸ÙM¯àG˜~kEvy9Qè!e½“½”Îä¢ñr�ƒy›L“¬rÈae[�+ E¤"E’K-\R>Š,¢,¿TÀ‘ lˆt:ŒÆRÝœÁ¾{Ë4gÈQ˜Ä°} vH,íPÏ//Í-¬¬²tõƒ†þêÅÀ°»t�hïfðÑųGÁc–—и_)>¨8Á Ç@ô�4†s8n¤CvafÚ.$÷ÄØµõà˜fÿu”ð&´s¥á¹I�Gqë…�ü’ë Q]އRæ?**.ƒÝ)x²s˜{�×T�5µã_o1gs×ÝÙ2édz@ \,CiÑ¥T�%ä¤É+Z’g¹$xÜy$¬×�¾]&«yI¥ê].‚xDÛ‰,$P LBuï}×Ú‡¶ÖÍ¡Sà Pp0ÀTB¨öjbÇ¢A"¸úÃ�(7(íüBË rùµ9Ð=d�/PFùé?Ã=$ÍŸ•Ãý\ÚDZ—Ã5L$t�©ÿ ÆÁ‡yz#1Gúµ}ou`-ÄÇ8áÑLµfE'›Š±U*ÐéÊðªþ ðÉ€ý|n$íÞÝ�NúºÁV‰Éâ2ªÍA:l^²7µ×~¯¦^ï7yÏ (ŸL2�¸"Ø”1§×³2_ë:ÆzW1AÈ£.TAóž@pÏ?Ò¬1 zHn×Dƒ‰S ÿöUg×rP�<â¡%¤QdTQ˜Ir/¬š�ksÀÇ+ˆ÷“�#sH½eÃgÚ=÷@r_sÄa¸¶1PÙ«ÛÞŽxÄ‘©vŽ6Ay:@Q¼_F¾k“Ô®¡+ËþùÆÝk竈½ßg™w°$x0H^VúW¸žú~BIoyfذ_̺Z9³Èe¯‚Ð#¶?Ü„ò™}£ 1ˆNn¤°PôùrÚ´ÊÚ’Bì@ÀˆŒëÁöNɬi)H¾Jh2Z€ jF(rmâùl=½œ^Ôú)`웺êÔúÈŠÉ«äÒ—ÙNáùÐæ`«P[âÆG”´†«-ö�ªcÝô$ÈÿŽý;÷ ~Œ|¹ímzø)ÁR" wè°_~ꤿeÚíŠ.TÁŒüÌ +t¬À1ž½±m¡ý•Ñ�"¥ÚfT­¡dÃ’Ì«Å,ŸoÕn³¸O´õ3Oý& «ï¸%´â´óõrà9”¢¿M ekáŽÆ%…å�GðjÀ®CŽ Û@´9)%ÌE)fJFë’ÝÅ\ÑÐbã•М”I²ÂëY˜QÎĬÛ îY½.ÏWo�ïÈi¹Í• ,Ðkr쾦×'ú™x‡É;îH¦£’yÅëºòÔ;T¹‰/»ŒW ßÎ $É‹ó{+[Ç'd¿¢È –å0$„N&$Œ‡ŸšU!ÔY@h‡¹DÒ~lË2qóquÓw›+±.dÑ÷:ŸªÖ eàLù�9L¬�CÔ¤©\�aò€ºLÎOpR�š³ìžF:hPHÞ§6'çQ³›NôV–ë ¥F*¨C²¯%ä‡VSoH¸Óí{yy¿ã –k%‡´Š;v1·Ip­S#a·ïWåãsð:ÅëÃSG0× ·1çª×¯ÕAî8Q�?j?ÀÕòµÖ‘M[ßž¼.<£ záÖ`7:8]kÍ~t°' _¹˜¬RÿR¾ßHL§À¤R?y{0„¨„„«s5o,—O�Ÿ­º3Ǽ>�'_ª#bAA`/¤í|V‚ kš]“�’s9±t|Îõ:[«_ÈÓ¶uÍ OÙVÒâAˆ�`2x)¬ólî[ô û°/FMôݦ2ËNÜŽÂv±ÈŠœ¬}ÓÎ]›Q¾¶Dd�ؾ¹†?ó¢âî‹ì),╺aHè§ È:!cï¡Úôy|>)öfá�~Õiµ¤;øÐlJqpayÝ©v[VJ:åC�ª¸íì,'o²^õëîҰ½� zç8 ¡äs3'Aï· H²„8@Ž£ ‘[sæw”iS¯«Ì„nDH£R&˜H©zì_7 Vƒ4(šuúÆ üZ†Iá´†‚l%Ë· [Õâ^±"¤Ð¥3®.·§óÙ„ó?+mË ÌºÛùœÃNžd©÷E³«ƒu·».*×,|a-‡êòÆ@R¿;}.IŒêû4LÀYQ&t£_PkFI»&x¬v¾Ö ez²{&dUXÈæÂáÇ´àæTÃó~p[ŽÊ3•“?ìm¼w…ј¬RˆÙ�MY=}qs ?`ŠÛÃ/~¨Þ,–bŽeSˆ>>& oï>ró"#&â¢ÜB¤q6Í3zM$eb)z¦@>³åIN'hÌ‹'a®ßýŽ,Ã?^OÕÔR¼*,¿¡ ‰2(å­Bå�ãúúþU">¶žÌ®ïT rÇ«[xŠI•ûÁ;i@öb±Ý…»Èóëegtæç\ ¾ù²»ýËTЩNOµ“o~|y÷U5ï3uÇÓ�]f§–P ¡*úâ1SÑ$Yô1¸Ñh 489G®-E5'1 ¢;Øab�ÅÛD6aÖçô`¼Õ†b¨]÷afïÛô|1Pt ¼P2¿yèäÝÛßÌ�þÔÏWœ6�Á˜_u‡ ¼<ŸÌ¤i�²„òÊBeJmçºR„(ÝÞ�²±ûÂõç�³'ý!êF1�Íߤ�®ÇSÍKÆŠ°4JÞÕÊ”•aš?3õêçfV'žOmpÜ&NÎÊ�ÃèEÚºÙ¤9«?Ž5ÚvcÕØFN 4IcŸÇ¥0®›¼]|ßÚ¢±F[�sãöå–xÄœ#ÐÓ·xÏ÷äå‚ã¶€åáP –ó2�dó=«vfê%ĹÂȵþÀTò"yË*›€îëÓ{SMg¶z̯Ç0²4ºƒª"�_ŒE²>M”q7TÔŒýMªóÃJY:»] ˆáBŸ3+òpÿg!v‹D©Ã™Æ¡5­’”èST+0¡Jìê·„îÃ’¸çÄ£$êÔ<ªL—¤ÈdŒ’÷Ñ'¢@¨å�¬º�†�&žÍ6ÔŸ6™È9’@Ë5è½HiµIÎÚ\¥bž“ )ÅÂÖÍ£Ò´°ïÞú°®ú “V�“53Èú ~¼Õ *ˆ„_­�Y+¾´‘Ý$¢>NxêßZÀ$-¥ ;IKWI˜¦à�Юʱž››zÛò?Ÿ5ÈŸŒÝºë ºEǶwŽo^P;j×Àác‹·ù‚J廒ßÐ; ù~£ ´³H–}ò¬ikäkyëYeùÔS®´ÉÓÒ'"uòµ;Ë5Ù#Û›³P5c^Áî9~ZÔ�CR¹Ì†æ@%“jê6äP–»K]^[ZXž Û? ñJõòænBÌPi¿åk’|â‰! #^¹¯è2ž,JþŽwåòÒ…|Åïë ܺ Aê$Éì`‚)iY°Ä�WxÖLä©�G!xPe??ÆgŸ^ftèõf[wÜ‚&0…ŸÃ“ȵ*Zµ"àMRW£Y¡0¢ìŠz6á]G ¹aDZyHïžN“Rp Pq�мæÞ}¥S|G�Ì<)?OˬIÏËùA¯Ì7“tæ‚H|WžÔžr#q6ëëU? ;Q¹(º-·UC‰=�D7Vú‰å³Šjè'~â“)mEÌ„dÇÛÓ,·�ü Uw[�C“V;Št1H—6›çw7dÝÉêO5õ=gÿ‡ÔöÁ3¥)7eÚœ ?k˜ø�+vÈ€ÃZ—ÐzîèŽ×ðuáVÂä—*t¸hJ¥d›\Il`¸œ`‡é�Ï©-:UpÏß§L¹¾¥S—Sý]Ú]CM;(Ç6ޝŒPZ,¸ô”:Ûꇫ÷]SÙo;œ¯ñxuðÍv;,éL$ßxµhB iæ�+¸ß°ô ¹©‘àÐPääÍ8{0e³hïµ3ttœ‡¸|'ɹŇVP¶~À|‚½ß5ÍÁŽ+KÕàªÖò»‰ @ß/Úñö½¨©H£]ÑÖ 00rÀ™ãV�™ÐÔ$ÙGøÝÛRxrSá¶P¼Ÿpt¶ûä1Ù”áùï%[Kp$Oï'jÐ-ÍV–ÑíM5iP q�8ñл2§Ï²vš5™u·ܛʥjb^޶‚5-fQ+âlNKšÀƾí„k‚5®Jg +ñC§�IÐ4‹ϲ9Å ç=2äj÷Ÿp“^Ä{kx@R{jy7ÁƒšŠ†JoX]¸e$çýȘÔGØ^þ~©Räsá¶XUe»·“/ú Q„¬'-ý€Õ|ÓQUUF…À FÜPàÍÖ †�È Ä–:.�Dõ¥4¾ëˆA[fä:nm×Ë1ï ^õú~x‚RŸí1mÜ5C’b‹¤Ù*ïô ¢‹n¾Õ N,«§÷I‘–¸]fa^¢['å>'I¸’C{mP/ŠÊø’Ùåñ°5ÓkiË£ˆ’JCà#ê †ŠÊÌ+!ç¾Ù"@9 ½,ž[D¢i��ð\éœîMðéÔíÙçû¶·A{�[¹»¿ø ¶O[³ 1½›œ³‚Ð�F°\ÒáBà‘!9A…šAÆÇ¹)ÿ[ »iÂçê1Ù ‘ ¤š ¶1 S)zg4ýš5¸‘¨Ò;hðtŽã䦪í¥ ÉKWôÂiÚZROÜ¿ÕÎî±F©ThÌeÛŠ»ŸDÿƒ¬3‚xop±ì1Ø4ß3ÌîÏ2xÿ¬ šä þVå}¨èÛÓeæ¯×s«X®A‚~ ù[3SZø Ø_ùG>d~ תœ¼²Ó~×êB}l…EI£®Æ¹²­Ðr¿pt&À²/—Hб`ä}ºg]B‹G¢/Õ�«@.@7yÀ+ Ycfεʦ¦'ã M1¹²R€Ñ2’Œq\wÞ�6²Eèƒ #h¯PÛ}}c\¿£âĽh¥£Øï)QÛæÖàù³£{š5u42ÛxÍ!¦¦Qêã•OÄê‰&ö—p½?%H˜½—OÈ’iû&u7² XíjÒ‘\ß÷c‘ºgŸ¦-_€Ñ†½{=ð7¤;ïKKIEOí=EQ^¿‡ü°†uæz+HL·kôÇ«ÔÙ £ ¤WËÁb,(3O*Ë~¢škB3(š4•ªê°â×HÀU‡Éí‹iCÛkëUl¶ãÎ^ªðšº¼J%#ö§o;œ¨;¼êZӉǭ‹I^ß 5誮ƫ¼ùX¶Ö,£¬”F€‹–Ÿ�l]w•§z,h»íóÑ•Œµðž$;¥$ÕéÙô7Q7«C4®Õ¿Q—šÓãP,Ò"/ž•:A± ê|¢3:;Çs$÷~§.öZëíeKô6ñ�>¥�<EîF|…Á2ÍŒµyÿ93¶‚[½I¤m·5_£×…ƒÁ‚Ch¼ðÂt|ÝÞkIñ)# ª“}nâ ×Á/ÕêYÒé94ŠÆDZjOíŒÖyQà$ÆžÉ9èŸ�M_|LÕ¥¡Ü&ìÊI£ :ñøú&Œf%}¶ª¸pîꆦSµÞê¼ñÙù(Ö·Ø»³„þ*Ë{DΣŠm‡¤÷ƒ (—qg¯:9�%E‰¤nµ5åb\UÒún%¤bA‡�×&|k͈píø™_ícª>r´`]z”•>÷nW(ЋW®{„ùîR.0•�´ [k×jkŒ’··²)©>r7‚¾Ú­u1tÔ ‚Û"Unîlš ÅÉB¢»"…¢Ô{7ÀÁ­Ð^QbS†ç.½?PúÝvzÔ¹µr]_…c'¦—IK»©+¨›žÁ›ú(:³YÁØÏ“¸”Í`e—ìëNtzóà5Å:„#ô†÷cΈÀ¿® 2¾ç�>ì;®?k*g^ºÓ@•³øear �:T\ �€gŸƒ+$4ã”Ô$››Ô]\ƒMo*xY.6T<âæY™š›Š‚»Tˆ Nt†.jÄÞOkzZ#7ÌSލ�WêÚ³FBž�ø~x÷9Ù¨CÝs+ 'àþ|­ùºÊœÐ÷-¿gµm½Σd SD¶4';$,AÍ3~^ÚAÃã³—`V\$Í|ìLÜ«ôIzyû� ¶<ô|Ä8•¾|AȽDˆ„ÔÕ¿X5kÀ†@_3åš«J4 Í$±=%„Iú»7‘û“× £ª—ˆ™ß]$G“šÂ°Q‹aÏrYœ¨2Ê“‡‰²Åù\«)T‘Z:ûö9BÌê£ðžái!‚_TmÏ ”>�U',¾adk‘V�ºô�yê^w4}®½¦².^ºÆÂ¹„ãNÙÛ¼SI7EÁðËͤ©�ªŸoŒ³}�f˽ �¯Ó>€$'£…Ú¤ìò`m øI2§g±É1d12>�Ö¡™,¢$òtTÚªWÈèMݱåvµ!DK¼Çc§��(S>„Mïã Y:²wohe‘1td èBøÊ·­†E¿T½5—ÍÐõ*ß’ÜsËy ÕéͤÄN®­ÝúLÑïÆ‚b‡g&ü4†ãûcè4ƒ2Ö)Û«�t3HáF›&Ý&]õ„äH‹ð�ï®Po‘¡ãß©ŒÎèW,h\¥Ê<\ØÚ_ƒLRÛàs(Á*WWmÁ‘{ê±þpšÕCƒæ´ø׳g"�/�_ô�Û“ƒøð…>ÖË„­Ê>C&…˜ÀÝI[¬À;ƒÃ^û¥Ô½£§d)tïŒu>£& Ä�uõS‡2Ò¶}_A󯱵sð˜É:ˆïSþBé«'ôýÁÞ¬Õoû° ¶�ßB‹dî&j'h~<^knçÖÞÝeXfiyóF‚l% Åu¯š"UŒÁ½GýKѨz"!»ó·¢qJvǘ÷©_uÜ0‹ü�ö¬ 5óW }©øÜP¤‚ÂÚ6 X ã.Ö‹g.ÀÍ[T¶þ;-þ17®�ºÏnÁ5M<ÞVE¸ÊW:°zÛ._JéÖ­£=…²û':ýõƒUB¨×R Œ„ß+ÌøY¯ê§Rö‘…wÙ(Ù- È Y0£‹*)înEBXKéäa“ˆ(G-û³�‡…ƒ8~,ÖºŠ U@±ì�mFœCuˆà.Œöf” BëÕÜPèNq¶€âÜxßœÜäÆÔ_A¹Yš–£b¼uôÞÚ`Ñ¥“´ý÷j×p‡ÀOF˜¢œ ª@Œá«Uª”ÍÈŒÎU¸-Ú¤0cj½ƒ+Iâ¨�\ðCŠüË%Æ@�7ÚΉoxÊõ*]¥M²,ˆmVMÇÊTË¥Q6^Œ:7g¬:Ökqä½þs&Ñ]R�,7ÇU’Ú”?ýV3�ŠR¤f¯= ½ç�"N¤Z*)¤×Õ@Ìšrt}bY<ÍÕõ»îŸÉRQCzmCƒfë@*éaQœS�µûñ"Š|ƒòÃx*Ð$ƒÆ’ŒBÏrô˜peë4’¦ómeœaE±ýø*½v¾ýjrÿ¢ñ>®FÿƒÉ>±HñZC?‹ÑC�ð€;÷4?‡³Åø|Ààq§o U/; +'•^ï’è�»]µÈGÄ~*}�!ÔnXKHô­™?hÌ0VS‹«œr| KâH�ÔØgæ�}V‘Wìõδr4×q¡°þ^2`—ÙIo�¼…jß›ÇcXï|C©Ñÿ\ˆâ‚‡ýq©kðGžº·ù͞ΓàÉóns}'h6Ë_´;ó¨Uɳ8RƒT ?^Y‚ï*­þ‘,%áXÿÔäù÷uП_ø6éÛ?Ö©ûâx�yù,× �p„û1Ûi�6úÿ,1ÙL?­‚1upa5¨…:ùçjˆCi@å*.×§º49 ü=k>hËç-+ ›![8ìe¾±Æo mÚª.@‡`®³ˆ¼™Ø\g³$öfîù¢©ÁÐVüL«â¬'ØNÏot‹a5üf¬´Áˆ—UAóФ�ö ÕÇ"õš ^aWSî$š”›ó2G@ºhæ®ej7n—p°‰Ì8 $F:}-â9MÃHá5Ökï‰H�¦§nŸèæ�Ç–ó]‘)’qªáÄžvÓèÌtª–Ó4i”á3¢U× MºáS*'&5;Î@5ôn+€:Ü3UÏI+ÿ:+.GÌ �nÀð0©mà->Ó OŽù:!¿+š¦º=�­K]ñéCÖì8V’ ø•Ñb)¨Ð XW¡IO?FPÞY2[j@ëR¸©ÚEEÉ$Ò�ÉÏý”O^×GUoÄôÅR%åEmâ&¤[ѻόC <¿fbX§Óï0$çM#bù ´˜‡Ó$�™ŒË[…Ûj–ºF¿+J0�Þ™ŒG¼]›GI¿=2Èß1‘Âc™~)ð÷ %±ƒº""ôøTµZ7žz–$§)ÇÂñÒ‹ÛJ¶Î>%èæ\ç�K€ÐDÁ߬gS^—ð¢n�ó€ ŠQCtpO%B ¶JqžÜ ™�¬ÒšŒÐ²lyc@xU¼ðã«Àc;QÇ©¬Í‰̃”ND £¨³N²È�]äˆf!G{µº ‘=#mši6»—­ÓT ¨¸uPô pÇE< ëC?Á é{q—ô!ÄÙ$*¯Rí ¦¬'–36ÎÙ?^G¾kÙý¸7 �Ñž°"›‹4´K5’ŠɃ�}ùN¢nQûH!ù€wíJÜ,XmwN¡†áVDK§Ô÷š¥m§½ld_i8 ý…¬÷¨iP˜î]:fæáDõ¿—\cH‚ÛO律ÚyãØÌ´Ÿx§�BWõìû^ð&X¥#Du/gK©î0Û™k�(V…˜Ò©i�³LþU˜èâÌ Á<½«°õBiÅŒãÉŒ“ÜKòìõÒB·ß$ °BåoP7¦#¿;¾ÜðŸ:;[/W6šÏüX£IرüQЄC2›[~9gppføùgpæS1WpUEüíQq°OÅò^)Ò@Pí�•Í̳‘2E}Ü*3%,ãHHH‘?£eF™~ɰH¤#&¼ Á[y»oÙý¬§ºzÎëž¼/ô¢DÕ&:Îqb¿1t^Œ‘fÿÙ¨9=½ôÆŸö^Œ’24÷ÝÖ,h”ãWßh~áZ`ôŽ|ýQ{¹—�7>§3à Q>ÈTº�ÖøFa…ÏÂ-Q¸MÖìÔ¹ŸxºâEÖNä~´‡g[G~‘r>Q›Ù« CÈth“± To¢µ fO×Cm7P¶dK¦g?ÝyfƒþX|. R©O_º-T»-ïîó§Ëµ$ÉCuyk+/…¶½ÛŠÚ¿cAùluH/ '&‚©]Y³.ôõˆBÑàý¹î¦ãc¹ðÆ?jŒ'ßa4Äï*ñҤñÙ Âádjo ó…¼þÒU £ úñGV}ÖžR¢Òó4W¸ËòäÃø†záö Ð ãÇÞŽ�¡Û”-šXGvºu«î&•Ydã϶áAƒH»�wËâèÜ~ÐÐМÄb¹#I/ MÝ^ɋȸL ßþTï{´’(FGeʆø9تÍx<ÇÊV³6!e�ȵ6�‡¨¯ðÓžÆc^Mœ$@¶##[&âçˆöݨW¥N�[™Œî~@ × ΨÀ"‹ìh!R ]šSdI÷þ¿'ª!‰…ŠpÄaBŸª>ø[^ŽO_¥9ùŽb ébÖf þ•ì¬1E8ȈrË'R!ÈÞ‹kÞ!KÈ�óõ[�8sˆú�m Õî³4êÛgÄÀPÌs X’à…Dî♌sÏS‡¦ ˶ª œÍj¼1QuÂÀ•ì,zúUÉ'¦ã ‚n(Â’gÿÚ>ZôV&á@ϪŽAUÍÚý¡¶ô2'Ô¯GEbE¨´t�±è¤H›¥ž§6¥Ç³{ã4…Ó¸×ßÖ}‰(õY™�f4„I—dp�1˜ƒ_Ò“„äe¼ShlüÝf�мÃÜ‹;tÔ½pïšì¶Z.Ö,䆺­‰½sɃ_T†Ù}²ºlúS®5ßB¤`wÞø klET]ExÌ~�Yõà R»ÿÊ#§$(ôñ¦ê=‰:ìѶUp+ÛBµ¼·mîÕ¬ÁÁu˜bÜÞI’ÃQk�ܲ¶]Žuý¤yU5ŽÕÖRßw5m•XA|0]Â&6Û†�;\µ£Zåó�è­ ylÃò£ç^ÈÔŸ˜STŠ.ð"ºvpiÅbw¹]q/&ø+rv±�ÂÁ_NÕÿñxä ÚO”¹4pº!™elz`{§ãú– í6<È{9OÜwR”Âä¿Ç•z½£êW0,'×Måx  ¯a‚Â4±àŽWƒ‚ãN ªÇw4´„Ы3 ÈF?½- ŠRΕYÒ☽Úzè~¥;ò!âÌ 7lª÷<É�nÑq4ôè Œå¸¯�\)„EÚj€ýd¾á 'æYu±ïtu|þ“u‡}‚¬N‚›â\sª&maã {ŸòöÍ;Tƒ…Nì+kðÆïMÊÀ9ŠM¡•Ç R°jâb�H–ÄhgW›«¾…�³'7¶×\e·C¿é3"GêT÷}²¡à)òƒÝ½�‚o|ëÞ&0éÌ» Äކ&ah‹�|ÅëPo¶éÜI?6tømñ0mÞ¬[ÉÜÄ… ­Vðµ�;ý²°‹À/"�¤Ý�«m Ê#qŸ{ñÂøˆ©X+¥Ö¼NñD¢nxåГÄt5†ëÀݬD¹.ÊÃO‰pèlö0J�ÊÚˆ…ûûâé©A÷|'©÷þzß@Ò…Å.;of6t|Î@ 4WF_õ3- J+&~M¨DÈ×ëjj©P›aX„;]ö©­éÔzVâµ|Y4‹Çþb¬+Ǫ±Ÿû¤&/Éâ�¶ê]C‡€–›Ð×}6³Éà0”^^[9‚JíÁ´Ü7]wQ:³£9�^œ\BXÇ·½±þj¯°y€Î�z]ÌöÜg&ã?™‰çâ¢Íæu<Ô)Ÿc‘èPäë[:Q˜ þ¦e§ª@úþ?<”‘=%ˆ§aÖ©!ÑÙk 5·œNMé$ I Ž\½"¸ÜA;ê‹÷לf=j?Œ4©Üå3ˆ¬«°ÇC\-!ÛÕVŠ÷¢ºuæ– —^kæ£qÜñ>¸ë=…ïþùy¼{h¦‹Rb–½7UTDUáÎRÕä7±ŽÕÄÅòòX„C½eâ:Åëµ�kÕí°Æy#bh^qÞvä"Yw¾’'æ«‚˜9É’·áp5XyLÕ#ŒÄÒ�„”0(Îó¦òàð8Æ–€Â„g‘µè´¾Mh �}fu1xìÇÈ ¾Æ…FlùE–™ÂwáqäD•šl½ òÞ ö<…ËnWp\§a¥§ëtR„S =‡Hõ° ŽömÓ¿Ô `‰…0Û%žDÐÅÕ÷-ì îO.±Ô²¤^2Ö´²´<–ÛYuO·‘üg#tb»�„#¸£vñaн Ð%£&s”j¯)ÀóÓRµ]í´Ãc�4é1M!Þ\œ!ŠÉ.Rò�êŠgì­¸5$øt]îé µO¯h’n·™­V­0ô;:¹aÁ ß$º‰Ìùý9�ù‘€ìhAçàþát%Ò‹ƒ+à‡»öÓ}y€omÒ9½´ÕûÞRWα’ØJóÃTšÍí°îD—)2çóÚ›ã{?O·ÑqüÖÎü�®‚µ;=Ï€ô ´ jæMÃñq†£º¹©Ï£‘êÓhfˆ½m†×‚í5ügÆ�Sý3L OˆRÁQfyßf¦Ž¹±EzÜj#«vë%$À5YA{”{€¥$OˆªÉåúJÇ1cý>À£Hô;+a*`Äuyyò¼3Åù1IÄ]Ñ;§ÜiSS¬¦å/ô4ˆˆ¡‹¯—À™š¸÷T,‰ER½• ¿t4W^‡¡@qkéi™¬Š~m±,øS©&±P/È‹1"‚ùxଡ2¶ê”ª&'aÏÄ ¥‰q�"Qn‡œ}@Ü8m� 4W¥àrªêÚÉK3vÀòÍ•.¡Eué\Ñ­ÙƒnK%Ëü„t”føiQÍmiÓ¡•‚oÕè�•‘˜Œu[öö”2uPjGͧ´õ;ôuÕ»nÆP×”Ú(áç ó"/@CT,rm°I¢ʹ •ÊÚŽñµ _E‹·™—ãßG9Y�Etîc°�DbLhÈì�Ýç¬'DLýƒÑFm z‡¶MfÞ#·Ú¬9DÆvú Qàçv&?ßòºi>ý�MÞÁ�Úü–¿S¼è7·X4l%mŠŒÜÞNj>4û´Ð¶ãPìIZ¦â`'ÄÕ‹Uã‘ìƒÇ¸ÝÆpÑHáUø‡|á8ኲ÷"}þÃY £>“óÎ V;›´w2»oóĪ—»x±+(”&Ñ®Š‹>ödp"Nº ë2B�w)Nû®‡1{ɱ&�Š€|ŒYç7‡0cˆ‰ƒ�|ç}Î1�Ç"6^C ÷æïÀ˜ª¤CÃ�¢HjŠ@úN¨9_‰U~5OÌÅc} ¤ííi8%Ÿ¼²{×d{¡¡ã‘†ë}ðøÅ3Þ°ë`§cäî©á*›4¡ÙX €3Gg9ÙŸ‡ŒŒ�0Äø…þÈdßãÏ‹“=6ंSØ»›BkÀ@Ý$Æ×wÖO“þ�u\ …E—P郰u!èÊ@„$ýlp4vF=?ú²h�Éçû‚VYõµÁŒ7t àeQQQ}¸rs𦗾áTèѹzDDš]¢Iˆ°(¶ï¹‘m8…),|ŽÂ�0&É& q#™…;4'EM¾$†[TÀï/%‘Ö3g1°c?¨L¦P\À%¼9w[ÂÝè�ÐO¢¤gA1ÈæQc”s¥‰xGQŒZ¶1€© 9&ÇîäXÞîpľìƒÞò N«×<®nfEuoæˆÊÐçtæÜ5ãN‘4žD r’n¼ÌßRO<Å«¹üXpì J>¡€i[ù¼ê×-qcâŸÄï¹õgÎ1ø¾·ÿ¯3�Ô5i”­�4ôÃjÞ�ç6i‹qâ} Q~xý=Ï÷Ê®¥£Wɹ…Q_•5©XJ™ny\'sÐé×u�2?ÂPÜ‚»¨c"íÏj£¿‰É”>Ð^4Çb0x�‡Î/0×Îöc…E|¹oÐï¾ °ù·…V0ŒŽóL¬ðOjÿ(›¼/°Ö9ë¯Èñ†åñ€ÝìÏRâÙŸµ8QÅ ¶QÃ/õC|Æ7OÛõYèÝ{'Ñ• º•uÙs“$?T�/óQëýòÙ9Û%‰ø^›íÐï—"‹Ã[TøL°YþI¬1=‹¢û]+ÌÄŽŠˆsÄ¡%þŠ_ Ž ÛàìÝ%ÂÒÞz‘wòEÞÊ¢ÊJ]D³º·R?É Q’ƒýŸÙ…GÞìÚ“»Õ�gÎÔÎý‡åí‡n}óé}sý…_ܽs+Ëyâ½@² ·¤œcè°�sª÷ö�mÍ9+â, —Ã�ëˆþ`b‹éN5´CP07×!ÒŒõÈ «(¶13ӿɓ(-A#©é8È.°jÊÈG0ƒ]&rr(Â[‚ö¢>‹¾:&4‘`“Âå\Ï�@fnpžñ1,g@Ž÷Ì!T2!}x �±šâ/’îŒãžsOï$Gw)_Ùã”3%‰®åË7ê^«[¢ItÅñ¯�ߨRQ0�xæ¦0ûÛ}»*£yi­Ï#^ùB9â;~qµ± s °¾†‹óüPÁ§äéxü¯¬u Û쉙G:;ðzžÞ1Hwg dÔ€¬‘8n«º²®iC §Û-ˆ~I ñV~Z9ôÎ 5<8kÙ†Yr+·é X¤EQóIÁ3 s[;žÌQ¨—‰¡gpYã—ÂŒ&ÕßÕ�uŽœxèÐ삳žRÉdÈÔÁ–`@7EÙ´=­•cež íx±,#I;e.#‰[ „³ÈË Ùñ%‘;'þ×ô°$RŽ(ˆN>ˆ˜‰*$@:«…Gž.ìT‹µ9?¸7Þµ‰ùJ‰éMæÌ²Â>ëär¹ŽXê>^˜R�Ÿ ‡j ÉIµ£–ã [�BÇ'È2 �j[FXm rÈe'{Í âÞ#úÓ•ç"Îø­2Ç·ùÔ+Ê&I—�úbZÏy‚°³à{‹®DèÍ;”½ü6®§`.´augxh …NÄ_+uÏŒ±ÓVÛ´§§2)Fí�^°ƒH85Æò^nÎû¯ïIZ°\0tm>A´ÝÈ~EHĦ¨½ÌlñÒ?nZ\.-:Õݰ_\”ŽÿFçÞ3)C¥¹–,‡7”ø&l”Y¯Ôo(ŠÅ¥YÅêT×Ƀ[.õúÆ 94PKÃC·¹æ"¡©/·Ö[«lZˈO¹hôÿH¬: €$�©Ù¼:j ˆ�¢`Œb(:¨—1{Diž¢¦üe½Ž’`EG­ÉaÏ¡Àßø‡¬ü„�³OGÚãA:�‰ÔÑMÙÅêÈê`4[ جå,•Ú`£qé�QîFgUµèH\ÕAÓtX޾ðR¾L:d9ëŽÑÓšf¦€­»ø½ j^§E#áï¶áØMèä�s*ƒ!¼×�ÃÇ«3î•ý]sgF¢å`žô_]p¢Ì_äò?…;ý TÛwï~fyFí[ZOxtoæž»''ÔÆAè_ܼn½?uœçFRË%©ïi€§±¿¦çJòú‘sÑHc“â.´*# àÑ1耕m\6`[*††a€ÖD¤á„#'Q+ÓÀ $œU΀޳D;O‹A…îývw·m v9'kœ®x8^¢º¦rNÉw�xf ã÷¿áîÿõQeH!UJÕÔoÖkÛß~¨öôü0ç>2÷ý®Ì\½à÷“=ûvè(m§„~o´.R¤ëz‘~G¶ä “—xu¡B.d;ó$1PƧM==M ~<ž�á jñCðÞM†rf] }eSŸ[YbêfÎ[±|#õ2Šjy™(ãóAÜûŽÿô¾Üq:w††ºœkì×qãÀSOt==²£cÓ Ó¹«K÷WÞ5‘ÇËŠ,Ë~Ü:|CÆŠÌš¥Ÿé—1�~Ò$ô???Ý~ŸMþ˜îö5S^-Ïl”—¦—H PFÿ8yƒJˆHró1U ”‚R'¥eºgÎϽ³,]]å\¥Ï´\´@’ßB¶äKœWDÛsë:E(qúˆJ Õ‡Ê¶”´Lk)Ù2-”3Frßá–Ži\ðiÞbï4o‰·Ç®mñ¢-u�‚iÍNÌgÂ(ôái¤¬ÆRJÄ…øÔÙmgÚ~i eDáÕC�à(‘$=EÔ’(Á¼`ÀbÁ6Z¹ampÈã™ßïáÿ•²Lj®åe“~½9Dèp«w¢@‹ ¿(¶Óƒ!Ëÿ€}2¦ *ì1=ò�bo"(eÄ€lÔ¶E¶tÛÔ‡*JäIK†ü:2Ž; H/"™cÐ!‰ÐF„»Œw×I‘om_þÂÎ}í“°/ùÁ·|IÚ'Í,Î,û;ºbš÷Ô­o~rïæÖC¿ÜLpÚŠ>2ãëTjÎ_ñ…ñqZ)L¹KL÷õRȉi-µ�in'oà¨ÐH~$RàȾLì:NÔ£tV$DCTék§‚Z�9[L`œ“±dòQr$±â�ª÷ô�iu›1Xµ6èheEÖrVU8ÛžÕ]£ ½¦»Ë¥«T_p[< F?õÑßu¼3M˜0±aE]ñæÍÅuÿoJ=â7ž‰o÷¼».Ð28ÄÒ<8FdH�GS1; Á:Di¿Pr³5F¼¦ŠµæX¬´SDŠÐs9£d€«FR©ˆZHÎì¦_,<2·»§&‡ûz2—ëÚOVý×ÍÜïÛ*{,Ëfü²`…¦RøÐ·/)èØÓ­Š· ZVæž»¬I9ÙX ¡–Ççtß4–xú%‚1wMßáÑ+ã]ãÞiÓx8¥ *B9¡¤A öÖ5©ÃÄcd‡°$ã4R¥4)Uîs+nF†´]¶€•ª�ÞRã/^ãêcõ²þ\ý%R?Z¨-RýÄÖÆF úçkó#„3úç“3[Î�ùPçen¾¡Êç–e Â9ßôFÓüYƒ5§w– ‹@¤R)!)#E�˜�<Ñàýh`þæ_$ƒ¬Ô§Ì+›7Eß�뢷øÒ;ü~óWÈk?]k«öi§ÏVeŒôNŒ`ÁŠ�'GkkÜRRÜÐÐêã´]8¢œ(üIj Sjë¬B½gú9Âô�ëãljC´ï…e7Þ¨šxcê }ц©~8 *#^žnõÒëïý½7Þ˜óÛsó§2Õ xVŒ�Yê‹»j WûM6ø¾Vknšíj=µè†^wæý7ŸBgu߸›O“f�ä3-�3g€¥4 n§dPSéeË,oãmÕw ;£<²�ˆ'{)Ï�K�+ºwó”k þü räÈÉ"é©€—c¥úû]üÖ¹E“ŠvïRJÇ/´S‰zDæÙg÷ì1B�L8 ¦¸ãÀ�Ž›ë;:êϽñÆÐò»ž~ú®Ï§Ê9#säT§„oœøæ2¸Üdz{ƒBñg=‘é-Ã#< ‘„EÇ=Ûλ±\`¸Ûñlêö€”Ê#§Ë<ãžë&î�4®åñô?'£õИ°�VµGÇÚÏK(è #™ŸgÎU>V¹})g Îú½~œ¨Ú:T•xqóë�ððвÊP¾×±Ã€nK½ ¼ð�Ü× �BTÝštžèòÆ»|ñ® © ß;[>B¤'32êÄ”Z¼+þŸ£6çƒkl~ŠD§fžà)çÉÿŠ­êT„]ÞxÄ·\›ï;J ô�ÿ…õìfU¨Ãs`¨—]~6° £ •¬§ßÛÛ—žn™.92/Ï€;p¶Ò…}}b�>òdanùÁÜÂ}W9p{K+rϵÆU­T*oB�u~|÷ËýØ l^æ%®þÓÕ«oî’[øþâkÆ87ΓYo¨I–\²Ó ¸xQT®$E´qeGÕpDºš¦Ý¶òÄÌ�K¿ØM··hâ$˜†ÃÊ.篂az“ó EùâdV@c MS4ž²ž³ÇYyРŀˆÛ…vný_6À Õ½mm½ÜÁî°>½|Ù’œÔÎì<Ó÷]ŸR‘Té²Ä�p–¥Ã‚ˆp’.�½©á}{#JCŠï§FLÊsgôÚ¿ù“Ô»màïÌ}]QP„(äÜÙcÅÙ>äçʱ“Ñ�’„„xÏ”‰ “/IÍnõFsª&üü&åx¼³ì(*’ã^ýrš*ºIlÒøl¹¸pÕÊZÆBQX«º_q_eTù¦D_ô­VÔ�Òž;6“í¯ >XIÃéyù££ù/Óãæfþ&‚3Û‰\A0 "'~½ÓèàÀÅW¤1 ^ß^ÐF*]­;ž^6…@^H–ÏŠ2Éð|9.g=s'rýÆ»ìZóߟT‰‡ÉjÆ@B¼N‹Ô(eÚƒ¶”b7Û® ÊH‘D‚IqÆÌòá D©ØÍ6. É:Ùà¶‘ˆ1DàÉ >D5�ƒæƒ:VRDô‡‹P†™‹kBÓUMÓb ©Ò¯W"èáˆÚd.%�L‘{‘œ”þ² t4/ÿ'pCmÄ|8|>¡Lkï.WïÀ¶ þŠt„õ`ã“"5hÐ$>#ƒ¶€çÕsþýèÉ¢Ïìtä=ù†j™ÑWm; }؉ˆZñr^è2ªÞTTN(Õ³-ÕçŬÙÕŽ®`åˆ"‡„aSž"U@!‚*»…séL%FT�íGÑF0"8á ößÝÞ¾¤[æ ´ÌÉCÛ&yKN‹ô…g¬G%€¡@Hˆ®˜H 7‡"’ šdO�älÖ¬¿¥ …£�¥Óšñtžé�ç¾\�7Œ$óD×ðÔ¸ÿÅî8¾ª‰h¾Y$[WW^—¨\Ý*Ïív®YÓë0ö>ñ¸ä¿;30Q¿ÌžЊ“H-r‘A@OS½?ärZkÝ-Èç1ÐÚèÑî ™FPÜß××fY㜹L×ù–hnÎŒîØ™ygNÓŒ¦Ê&G“õC;Af÷U×¶ƒÜ”zB0È\º7Ú†ÖyU¿ÈΞתׯ¦�YÝ, ) w9NbU¨^ÙFŽMa® B…Ìýk?3e®gAB4h%“Z¾rÕÜ|JI íx¹{òŘ/[–Ÿãµ6&1抟MlÙJ-Xx�R qAã�)üS(˜‡ušc5¨ÃJöÿ%Y܈OÛ1›v�€4œ¼ß¡�%ÍÜïy ´— vd3ÝàµbþiJ%3pv‰,!cPÛ Qüw±!ÖwÎRSßP Îâìå]¡¡lD×&½Z”IFÃÕx ueö:|Z�ñóJ¯v9V,/zO¬gç²Å‡:âÑÕEfžÃŒf²Oœ(ô·¤þÀ‘#¾ÃÛ?`îpí½ÂmÒ[P \R¤e€®új�ú0S~zЕ[2¢  ‡°N¶Ç†^ûh$¹„/ú—Æ%H¬’~gòzââ‚¥L( ,,\Y¯ œzícËJ|òVÍ®6 Ë—ÁGëëÇrR®À£0@åpôGTû6š'úgrQײ#Ô¬Y¸qâmÒÖ­#>©øvŽS,�ŸÃç™¶à±ÆG³Ó<\™¹îéÅÝ ."¥v%ƒò‰¶g±.KGŠP éî‚W>â`|jPaÑQó>—<aY¦ºFSFN—ÇsD_{æ6ʬh|僌TêVÃÞ¡ä5Ü,<óa3ž3J¦Èó¤ Ç|ÒERÅËiJ°R· €L²JnFqE1‹Î8K�V¬JG�]¶•3ï©ëÖzгkÛ¶/Ë#w9äßC}SpLüçG%œ*Ì¢ª 9aR:fzk{°íäçk·yµé_6Mñšž.í«þˆÃU>Qýbˆ³ºbXQ‰ÒÚ/*’JF£°£'´¶c,ˆÆö²kžQayå;Lk6”N�ÚÒ 5Ê�1�(Ä­©=LÆá¶"×~ŒX·TÑò*;[¾[ìc T€ LúdojØk½u`àÖÅ·IVŠyà¥Õj¹ãâxÑPΨ¹GDZ™Çšcò œÆ4³��œ4¸‘Ïâå÷¢=žÐ¬09›×LÔ†°¢)#ÎC´Ä<ǯ…ÜÃííõ<~lÒV±?4>1mäØÑ¡²ÛÉŸÒ·õØ`ùàÂÌŽÿ{×Þñ d.»6©9x±ðØ6Ûæ˜§žq¢÷Ÿˆc‚ìVгm¿‚üí>!Õ �ÝUK–m�`¥ã¥¸jh #Z³³Œ—•Üp—‡>²<¼t‚6î×€¶FåGXp$}åöÅ0Í=P若V”””ÂäÌ®Ýòä�óç�ëÛ¾û•W€/û6¾Y\„Dvq`Ó7^úÿÞôÀµ”Ö·ªß .½¶eÓ¯c¯®)š;6ÔªcþitcòM‚ûŒ!ð<žg½8S=®Á ÏGËJW6˦¦µ½ßÖú½Ù3ÖuÏ£üÃ�F"Aæ3¤Á"ªþ”ô¸ãß5 -7TúozÚðTùÔØœØÔò§hþN$E<•ç\�f¹Èx¿tmÜs Iz2ž›[m¶›é»Ùâ–vØì~zð@çÒÅ[ó ¦ê[«›¶m{xÛ¶¦ysWC޽;YG&ü'æ ÉP’Á•m�æVž€�c¼[½g C¯“VŒD,·¸ÈUU­9sÎóçÙÏO/ò\é¸âYtZN_WløüÐ!9r¢½]z-¶ÚØâ[#ONOW-=™êýèÃ:‘~WÑaͳš^¦–Eµ95(T€þµn¿~nUe“£ê³ó�4¦_̹È�樶«[s=çðGOââW�šë¨ZM«'Fµó–/s½T8ÓÞ¦5Tœø&Ÿ7‰L™W^[öWG ©ÑŠ �;ºm@&�$(…Y‰jÕôù )D6` µô<–u2qqÆ$W?3ú¸¤=“ÂXèdúzŠÑå+å<ú%�M 빨”H¶y››Í^C9C’� �·:y –àˆs8Êf”Ï€ìØ¹ †Œ¶Y|�kÔºÉ&o(Äa w¼U5¨†¹ª¦æ�ÅŠ> Êå»|ÀîAB—1’+™5 ÐÍéÐçç—q£"Í(à"XÒ'UjB™¨Ú÷%…”Wô™AÛ­ŒE•(#>¥cH.#‡¬á±›’Œ3÷q¸%(œÁ ŒLçbç:WÎ PJo$hš "â�­GÇXŸÆ4.d£ò<»¼o „÷„ õžþ¾°+fY@}pÉ#ž>èïOmA�å§3Ÿ±h³˜½d™ªð7¤ 9ÔNåUã¡4ÿ91=Fμé %F¹½m#±2Z¸5vKÇe~Ÿ˜>?öTWDœüx¨�æ¯&hÑÐ:¯Ð~ŽO¸k^vƒ±1lÉ8ã4…)0Ò@ÃŽ2Æ5к·>0®é9Ü’¬D¹ŽÛ&5¸nr �¡Ê3·Ô-’Wõ‰S3ñ«òËgý:м¶dÙªU¿Ð§¦ÆÓÎK<ïÛ: ÆÃñ¾ÀWÇO[3sGË¥ªUñé+ã•Ý—¶­'Óï9'§¶ƒ¤‰/gÕ³Ç2ï/Ÿ›ûän )šñÔ°)LÈ”œ3?¬ÿpFÎtèÁ„4I ýA÷ =¥)S£¡»Ÿ?§/Y1%ñæNíдÂç½çcÉi\‚o¯˜¶¸C}pF~�À»ç¬(@—ôëÖnj i?”‰9l"t™*#æveH¡‘Tlëò°•=/…²!°Ò> Å#MÁ«$¦gˆØ@ðì ³ŸO ô’\ Ús¡h<+ÿ°|ó¬÷iƒ×²‰¼½¬ïÚ ½®¨î&¾MèôÌÌ3ýÄ´[¬è¶"½-å3<Ô“KˆA¸Œë±&0!,ËÜËqùž�èÿPÐZ0­°Ú#g½ ŸU9š”ª³Ú5•K{†<—£æ¼Ê�¨Q>s�ÖŸs]$çÃ%÷þ=ãÏ1oEà/M-óæÖml� BV¯¼*GÕ´¯Í::â:Så+ÅãƒfvíÍ(Íѯ(785ÍF}ýMjVñ”� Y]ýþ*®veóŒØ\Ë¢Ç'Ì.ãezÞüÆÆùå?¼6oÞF(ëžóé …Ñw«<ýˆ Ô â+E ã®p!P ( ÉCggœmŒ ~§‚'k9é…£‚”‘âö±E ˆÚÔ—j_šªm—•#•'¦=ù:CäzS>3—ÊV@~0¥ºmhè6Ò~çî6R¿Þ¨'žq)ãeTZB]· ¤ÿœ;ÒŒáØ—k™é½õ›»ÿ\Å#é`0' €Äw`ù`ÕÓù´H[¶È¤gä”*ÕSMÙµàÈ%@ßlA$/I,¹àV*”JZ&§Üò…Œ�í¦ñÄ$=Diªº�@¤¤ãR2M‘' $ÓÀAεÐ>žÙ}gÛpE1N‹�àŠÑ�<ÜæE¤ïP�ˆÊ½öqþÄn»§›IÔˆ#ßw>qŸ2¨¤!¶*Æ¢M…¥¡®¹ŒÏ>xìÙ> tKuKë>)jM 4}X2.}—’S»mìfÅÃŽ|ßûP<m´ÙV@ø[s E)"‘<;>ÿvTópÌà9–›GÞ¼d°-ÃEŽÔ¥|ª¡?ÑE%œ°jÈž‘Ь‘U¹Y ÄZ�%² 5½<ê 0° Î²[%T_CÜ!ɈԱãCø>:Ü`t:7¸¾€7¾ëKml†é@>#' gÉ2^fÀjƒ¶{‚¬eK\ÿËÚUÍ„³‡‚”ƒñ3ÜàŠæ»eçÃô3ÿú×¢•ííH©ì¯+Qødõ; ¥Òz‚õê™òØiÖ×µ§8á5÷ÃÀ"݇‹ÝSŽDÕ�w®«£h…TÅ']zô¹/òû×›Bv| â\tî||ÍT$óÒ:E<nÍ“2ìçà ûÁ:N8ggqäȲpŠ!át¶:}�$è¼±8(Ý Ç7ÆOá©÷uŒÿÑššcpæ ƒñtº;k O‘”cÐÁO�õØž«žqχMJ“£©²©÷J剙Çʱ™Õ�E½E ‹¶ý¢ˆû¾F €¼…\a–æ>ËëøÛ—°A& á!ž‘ç븳¿ÑƵaˆÄ^x¯:¾\XÎ×;w9‹×M ”íŽíÜÁO^¯TÙnÉ›t£w'šÉ�½óKJ½ïÈD´S�æã!ÈwŽœ—‘ã(=Z$iàtQW@8\a};�C‘³ JÅíɬ²Ð‚·ØË¦�9Él‹ÄK„Å¢1T"§‘‚0hVF¶*´4›ß‚kñkµÚ1;p0H ¶Nø|LÜ%FˆFâmßî!VÞ®þòrëe|A™‚Pd «$ãD-êI ¬årå�¬)aƒrÿÖÓ•Ù¶Î+’vü8¤HOWÆç²CÄ]ÌVÀŒÙ*µFñ'­gîB¬ó‚ ?v8ÔZ_Y¹òi€U¶?m²' geM³UÙ3î ¹‹ÚŠöÌ›—ަË— ɺ õ�¥vš·žûcyRÒ^n›mj�IÖ#ƒQCoÁ‰§´˜ÜPIn4@Ea¡aÜkŽMÍ·ƒ®ÊÊHRK½¨ Ñ*Û@§ÿöŽf]`�³þ=zu–œ™ð¶·Ð©µKÎláÇZ]ôò…¿§cî.F·ÝAbýÕFºHS"©Ä컜ÄHôE‚¸‡ŠDiOÍl>×j¤Õ{Û±¿\IPÓË‚À�hñS@i{¢*1ÁUj��Kc넪gR•riA,ß c%.¹ÙË=«ê|Q1 !û¾WðE´}<ƒ±0êŸ� ô²MÕ7÷ø~‰ày¢{æDÅ ¶<òÙƒ•“—~ßZÈ.‚žíÞëÊñdÊð'J3€ÓE·�¢œžïîñ¾ŒÑ…_Ó�¡Ì¤¯:ä™2P 1#s‚ž¡\òQäJïY sÒqS5õb·Rxàð€açƒIüY5ó·{ú¬BÜ))¡ ³& ÒÀ$‚'ªª2hì0'Œ}ÝÄ9I⡜äå†Ñ€£^‹]ž´ýû>¸ôjüvP€CìåÄ¥�A²šwzá'¼Y±SxH¹Z%YYÕrüTl§ŠÚ³U3ªÐž¡epìüî‡ÖÛÁÁžÁÁÂ?œÎŒŒŠúäbsóÅO(ª'#ƒ`™˜"æÑV+lÆ5)R«ÚFKóñÕДy¨Ñdâ� Ea1EQ‘K³WPçÒÈúˆNî9#Y…€4SÖKšu“#{Jȱ=àb^@íˆô_‘ÖÃR#ûàXÓn•ä>TèæÓ‘U¢ZÐÝ( °£ë{ûž$óR©2ú),ùMß“]Òòø‹+R&$ždmU¦m,ñ¶¯§Ó¬Ï %‘ô]%°KZ2>a`j¯;ý›½B´ŽRBçF¢“·D·Ýn§­‡ôè)‘üð'O£Ì+aÙÊ�æ"ÁYVùGâŠ:誅é¯oDÆDÊ»z0·øx=;`RE‚_5 À¢ÜÊûnâAãÙ¶ÔÙ3y-‰iÞÔžÚφ)GG¨Ç0B‹§YÃâüsZû ¨sÃ'Ø‘F{Âáðä¤í�t¡óƒu©ë¼–iüküT´øõ&þøsâÁ ä>pò+)A“%´<œ�L)g Ù@„15"¿-šO°dã6Qò˜fÆ£P-×r‘}kÕó+ógØ£´°•jPéÞ-õw¶l»¼4ðX z‰H`†—AR˜,‹† �9�½A«’”êfÀÒok {caÕ#Ò!“áÈR¡š¤òD(ìòëŽ�…1¶ý¡æ'è!šg7¢Þe¯‚cÀ!íh �É(D�ïL½\ª û˜ºÚIh¥”Õòd}I@ïÿÚ"",û…e8�o4É»/’§1yº�,~iýñZ¿‡ Ùï>¡jí‚9É`à� ø–æ^(páœ;m¨Çž€Ë`æñ âvÚ’ÝVɲö–1ó'.rœ¾›þ(~&üÇÅæ+…˜ò¹éðɸl˜ÿØQ°¸ö4•·í ò~ŒDχ €O£ÙŠwoÇ"¥·Eµ™�¥âuëÖŠnK#1¡W 4:ŠÊ¼Œ>¡QY<ù·~G¤%ƒÀ&Qr?I%×ñëY÷™†-ïA5V» ¡A±ƒY ú·DÕM±œ‚\�ñÇÝYÖí�“‹ó°� `Õä_öV§yôƒð­mr}Gë½ Ú4ýïfÔf¸+*qÕ%­4¦­¶p9êÈ}9Pé¡,"mGðaEÈîzÄö5$Vo <…ׄõÛ v¨ÃZ\ÓØµ¬r�x� LRjfÀ£óãÊÖ:ÁÂ9¾U¬c\ãOF†ÛúôrËH—sË®ðÛ ·¥ (ƒJ@²é” ·:\']«É0l?�Ѳ~ŒÍmïg×-º´Òìm[½ ö<ûìªf;¸ô!“ûÚ¿ O¶Ãó+óÝv÷d˜¨˜}�­-y%µx¶GÇ�í©»[ó7Èï1ñ�¸|9ÍJ‹Óˆ*A?LðgÆFEí7£IßHìn†!ärƒçäç\×>˜4Òtµ¶®®ØÇ8Vñâø7\ßêX}®Ò­JÏBÆz‹z7lä9~DÙ¼¦V߸ÑR[pÏõ�«6¬YÇ,ÕTÍ ¥_G&€”˜ïCvØVÔœä*ûX‹!=änVŠ;ç«)š}/øUíkz·ÇJë 9H¶_†š»wïnGëh“8D»fÒyM™ihPätœ2¨÷•Œw΋—ÿ?gǰUgâÊ ~2Sï0ý ‹ RÑT²füáXùÜúõÓ¥‚S`³g�]¨æ1*Cyü·/P þXÙZjå!x£B›n«¡�Üö“Úýë×—�ëˆZ¬�i29\pÃRÇÀÏ5n�q9$È ‰ÏÏÜ m¶òƀ´AH,œ‹[’iG ?µd;ï?8òWè 6ów¼ÍM¶õ´WĽ**B!èJélúرPS4J¿^1]YõÃ<�ì„2%“@x\ äæ2R¹Hì"!½¼ü cyú¬|L•�WEPÚÏT†£„6ØíïðÁÀ ³7²·®(]„½'_ìç«TÌ9êi«'¾%õ@48h7W.ÖËæ<ñ7³Œ…ayòqÓ Œy2üýx¦] ³ÜÐpß õx§!\6ñân“ÌEqð¦ƒÁNbÕpT©ô�ŽqsLw¶ xNEið/%Á•K,Xn~ .}ß�W¢µº€A�¥öšMsÛ©¿&Ð’i6‚³Tú“¶NzÆÛÊŒç?Y|iaìA÷õ0xÈ EÇú=ÍKns¸­�‡4V/ ¬ìfƒ‡ÎöTQ Ól_ _@H8 ©Ú§ªN…Žº®km4ŸUàÞ‡Y§åWæ{…Žj¾¦[.¼ê ŠåiÁcŽþHP\ž:ü‚âXú'MðË;h-çg#™Ù‡Ów5Pâ q‘©¥$æí×÷DÜ;qc@ÃéºÊô«t4ó7 Ò6%oÞä–Ÿ�µkã?cߤeÍýæø¦¬nn]ݪÅκ ìϤmù/©¡9ø\n VsLyÆkšmÎÐbx¢Î™úçž‹X�×ã«åºÛbY<Kgw2N)Øj6Œä™)àç„ëܳxbwî¢*K^ ˆ*fõSsl?^ê§^˜ÕêÊ÷èø|­]’•Pð׃EqoŒݪ7-‰dâWAó’»[ÉV <7WŸÛ3×@ "ϨEöpvļ¦þçŸÙ}²0ƒ•²Tt›]ºÛjÏo4Î�c2õ®¾!�«L•éºÅLTV’Èÿ&Q¾sa°ßÒñ ŽÇ˜ÊªŽY‘µ LV�¬\XZ¶�œwyMè’oÛõ¹ôàÿ�f%{eSal©VìU”?^²äœ*Xqà4$‹VóP8èóÉMr/÷O`N_RÇU”Áß^ÓTÕ”ôüP¦ìs6hþ8“Æç\X¶üÃêÐÅ�ú¥ûíëZÉ“pÅÙt«•·'ÔWŠxîÁ´îÉ.(â‹Î¹ßâ켿îš4\+D¯.,áÒ[;J¢á’ æH›íØ;œ Ǭ³rÆ’]Ž]TvNp²8ÖÃ'>¶XJ�&‹lÈ"õûr+’þǃôQÄ&‚w¨«üýE³Ùér Já(÷E¬VCš˜‹á$7"ÁHš's%4-1ÈX Ñ�dŸ| 2¢ŽÆ’î—nHÈu8)¬Mpc�Ï nÄã’7³8§iFB€…Ø�4FD„—qmذàšÓ'�3’&ÙCH|–ë?°Èì’Àš…óWnëyÐoºrí¼¢Ò£®£•¯w~ÉêâÕú ËYº~L_üGžq^ „šGî*s±UîÄí"'”¤®©Q߯52 Ÿí\¢677Å—¼ë^ìÒ�?òLE€îçŠüú–wÿÞŒ¾{�8еyù[båøîÜZY„€š»4h›jìªõïìÞNR‘<œé¿Â0KK¥pw}RíÁ-eqʽ/JÒöh�³‡dܦmMƼ‘fV ó´H¦DD×X¬Ž5¡)d,<o ˜ͯ~€e‘ÕÉOx¦±*Ã3 )gfï>ô¡Øœºîë ØºÔ üDP,Aþ6\áhj¡1�B͇ь½×ª‹íí׷ͽðÕä~̪z—WŒT” gÇœ¾95l.Ý# è7+jo9ºË•»¥sq \=/©+¥3 ì;WÉï,]¤~|ŠÜ¯@×ài³Ý¬E €``a}�·‹;RS‘ÔÄp8ú�%w’á‡Ð÷ð÷0ÞôîÝß?0ÐbV¦FoAG‰JeÕzío›Ì¬LÈœ34üëu"@a&ìׯ©UÉ�Ñy©˜_þýÔùs„Þ�}ã€ÎÜ,ôÑ› /§ÍS•úØ4Ûº—¢yï,3£úŠ-)æ™Y‰è�§wŠ è†œJó³¸Å÷ÿÛ[ÚŠ‘æ—’Õjáîh–äÛ„ÿ jÖŠ‚R­rªž©\ª£�†ÊÐlç…·+»žþ.4i²Þâå®cáïg§Í³Î†eµ‹HBnhjr,_JöÅx ïX´Ô‘#yy”†Œ°áˆw–¢?f³ ÎlnRô 0;IÂ�Çž¸›þq±ÁœDúùôáôÁtÁ¦*ªê^Õx•vÎÃõ¨Y›za ¯D‚žö¸ˆis•ý™xȾÑY�툛²wÎ\ÝDèpbîüI Þ¬Fhœ‘V9ªDUeU lhOâ{’9­lœsÞ0�2ç<…€ ±-'�w{IïÍ]V™Ÿóßò}_©þ¬rÇδžå†C*1X£bžJ5T•;“¾¦‘†aH­‹_³p™ñQL>Êü'ñ/èŸçÏÕÙÏšI¢ëEíÌ)f»Ä�0(]ü¢NâtJRø";ž!Ï2ú%ú�>÷Ðôz<ÐÜóƒ¬,KQs•ür3½¶Ñšâ  Úež"Æ—–®:߆ù|;61ÄQD.o@ª4[$º0+9Í·Ÿ„B³7�á’º¡èS ˆ�ü2¯åÁ¢ S7x#A¼l�æzÙþLYÃÔ. ýäé¢ÊƶD›‚Ö³f¦v-ë‘Ë ,P`b'«ÛŠômÓ‹Šóp†EÓmààtÅŒ ª†1Õú^-)ÙÀŵ"ªëÁ · —ŒpìÛ]#8Â\lÛ˜bŸø¥íÃòa»Ý†GF†Y³ãTÖ0(�?ÄÜéŒjms'8I�ÀèbLj.;̶€¯×/诰‚3~lÉstD[‘?²Â]‡è§|ÃÈ4Ü]fð¿¸Ð’9z.ôp ~òÄ„‡'(!iÈsm—Ñý»)¢ôOwnÝ:èÍó!rF{\?*«¬ìÉê±Û8Yyf-þë©~'!¡¶|³£S?®6X�h'QÉ?}ïsÌ8,7#±.øtyVnF/ .,—3l[}šÞQt!E7Åf7ß⇼€Œ" íÿVÕÿ/Âèt±¤>¼Ýx1&vÕXö§68wªQqË 'µ*�&k6S·¿xqÿXÖJ)¸C–þUÜcŽº„Ý»»:‰NS)€Þø>ä³ã¶ ¿csEéÆòtLu_eÑðŒ¼'Ê´k` HBm€9BÞä cl³‘mf;0#†nŒûI-ï‘wO½Ðu ¡oˆ°�µƒjQ¨ÜÍ I;ÇÁCRÏq}‡H7 >¯§†àœsim*ˆÈ4$F“pÀ�›`Å<¶ä�…¹hÓÂH÷.•ð•æ²Ëž¸uý0F^Ϲ�úÎQpÔíÁK­ìu·ˆ8ÈáF�EEYYNº="ÚðbgáÜa+KU_ùÇ$‚ŒÔtdÅÅÙodþ©jz¬ÂžŸ^^žž”[ZžÁ/S@@O"¸ûTö}ÄZÀŸŒ+—–yh‘pl¶ï¿‘®’dÅoQµ:ýÕëò�†ä †æÜ7)ƒ�Ðiüòãä*pïÛ••Tž¾Å4O±°b¡â7X„>‰7Ûv8vÙZ@ qW41ÍœÀ „ð«°ä¦ð$ÖÑ{bœï—˜ËÑr‹l®@âO�d6HñKáâ²'PkkEÅ++Ë•4GŸx¥‰lY´ �ºOÒ·¶kZJ§Dêß<›±G%‚!:­J¼Îr¤"œMØF ‰7ìéÊHöERÞ@•6M`ϸ¼.*ÆÄù+x)ºa…Øír¥Ò^Í/øV¹‚ܦÏ?ÏØ¼gOí=ÉR2›¨m¨JS>�BÓDJ})Š«�„ÖÔÆL¹Æí–¢—¼51h!;dŠ� ³Y𨒤éøë`B8Jò2Ÿ½¬qªùó•áa¿Ÿ×*ìëñ†ç7V.™ÖMo*‡ÊÌ7šæýõ/Zì™ ãÍ¡æXú®ìÙ#6è„ 3Ñ·ÒŽQ´û]§ã*ÄÛÞÚ�ŠËPÔ7w®HdÂÏ9ü9VöÝk¶~ù?„ÔÃbõ@l&ÍŠøô“d?‘>¢+‰Œ(Öuñ§‹>3É~2Â@[²²>"ÞW¾CäL¢£¼ àø­JZiµŒ«yb’çÕÖZ­Z›!ù Û1¸ãÐp°ô1•Q̨¹aº�M={(jG£R(±R�×ôaÒ‘RžHš)ÌFõ¿ž"e®qQfu9 Uª%마d csH‰ýÙvêÜz8FXPVªÔrC(’éºF`aó<æ)˜d)I¡y;ïØŒš « …ËÙñL�ú& Säf·K3µN×÷ô4 EmmEuG/dý’¸Ù‘) ↠+Cô5¿¡SØ[0Ù~ºÌè# €4djÓD:ëù„õy]*#¦f5¢!êþ?‹y±3×½Q�†Ê EäWµÒ ¾ý¤Mâ yÇÉ‚hÿ'ڀȳ~šT] 53ý 2⢃»ÿrøBb! p¥1|ž5Õ�’˜#ZQ˜•±ÀýgÛY{a% Òü4¬Ÿ°ÜÍQ?Ûv}S'‘:ê¢Ü¿ÁK—�Ñ´„pñ‡‘SSX/Žàl¾Ýaé;S(˱Ùyo�$óèÏgfÛV uoi;)©º¯EA+ø›ý$þe­q�…ÝOVZç[œ lšõº„ôÊHE`™Ì6�‹þž®´…0"Á·¢ÖÕ®Þ�$VÑPˆ[ûœF“!î6ú"9òå—°±Á€õ*¾&”·QåõÄtN:ëtiªâÎ݆T@78õúù<‚·2h<ˆ¦»}Ý6CTúê"ý'ì½Ñ �‰FHGíëËzrÚTkb1µí œ²6ƒ %Ù[US±ã¨Nç4Î)w+0Òft¥Œì&Î.–´Ì~f‡^�›ñ…F£ÙE `&Ôíäo9ƒ2C pO8’ºØf–į=p¿†Nq‡hìévˆî½7Þ=‰9z‡+›­¯ ª«s>¤ñÀP}M5N`ë1QrÏ%m,ëK0†®ùVÆ€ ® nýIç”ãÉE×À€É½çŽÓN9ú# ý]7;ÃÇYV:ÃÓ"–ò.=sáË0ð ðLÙÇ•T0½`h/ôá½ïÚ·¡£Õµw-öúZŒk9߬wÙ$†=Ù“8�çX1P�“±(êÀ>PMx/nD{á2N«dЈšÎ:t~�ÈT°u X÷×yâ ¾¯/|[ �"5•:?b©)ÉwÜ9¸wò¯3ÇܹG{fO8-Ý‘©ý©¿ÿÆ�„£ŽvxrJt‹²üùç@†.Ë™3qN©B)E.— srôëÉ—Ë÷A%é`2èh¥_võörï@}´ê…¯Ý;ݦ¿ÂwÇçé·¯Œè/#–{¥æ2F€ÇŸÚ¸¡!I¸zÓè8ªHìȈWv�%ÏË d!·äôG±÷ÂÕ'ŒÈ”z"›m#ÄZ¢öeéÏó¼[ZZKKOÄ~ìésŒƒÆaãy£÷"É/›¾M&ª“º„‚ΔN�x ž£÷J·•n#ê „Õê:uÊ@¤éR´Dî1*[]eÊ*Lˉ9³Ü;@ �šGð$P�t˜¢†eÃ7—Vi$ÙÏfÁP,ßF„ i ª¡þ�EExpa2iÓµ&ýE¨¢×NM7Óy—1�r&4�˼ÈÕ�º�“šeŽK^Ú•œ�mÕůÍÑ$¯ÞÃ’šhP›LÁœω®ºF5®„p‡V6Rg ?yH÷ööû, ‘È,¿y�&ÈÎÌq/ÙÙ½º9bOGÁÐÄ9É�´¯].Æé㉅¿r$óö d‚Îm}bªî- ’Ê©Â)%9·•…O¤°Å¥xý“ÏÅ6&-ʃç) žÈñ‰뒗ݸUáp„‹2ð­�§ä=Á"¾4o°\oVô)Uªö¨ŽîùTU¤œÕÎJ/P˜©)9ý±oHÙg†æfÒl!P˜°�aܪ~a~!‡G~ àR€ÑãTùúFÌö.ynís7¸§• ôÃvÉ3jÉ@˜^,Í�ÒÿÉ™(ýà0Ï/ÍWΫ~Çß`úËåLEý R-V«¥L¥ˆJu,ÊoMÌo�T`FLq³’„HM͠ˤ™½žHëùÞ<·Bû4ž=ááFœ÷$çKÎCSEòL!fx!^ê…Ÿ)ú{§Ù@é’ZF¿¯ª¥QþCHJOŒKVÜÊLH!žûâïu˜ï)Ùð!!¤» OyTpss&KCI‘Ì.kÄl#óJ�¨°•`£ÑV<7€-¼x.O«åù©й™z®ØnäzšM{°œ{9×Ïç`¹üˆ90ÕÇ¿dú÷Û�ÿÐÛ Õå�:óµ%>æKñV){i:àŒ–2Ä]ÛåÒ¯˜rš4[¯„8oTš±ÑÙ 1^™Uµ$L&-%TzIF¯–‘4’XR­UNù>áWFé7˜«sW.|ÏÏOZû)ç<¿ÍïéÞ4¼@ᥫè„6AÁ~Ý/=E}‡ÈAÒC‚ý¿.òÕ³)ö�|»�tzÛÈÈýÆkq„mÓÚ³ñ"Ù<Ú$Ýà’spSå“,ôhqÀ«�IíK›ö2âw"™ÉJªj€Ÿm‹bWeÍžã¨LdŒ“7Ò^fÌ=»7zW˜ôZ Š_ï _%G±WÉw!PdEBdâcM!d1ŽèÒó¿Ìâ̧\Î7Á|úcµ_œˆ‰0…±í .«ÝzÀ�öäñYŽI‡VL ä‚GWÞ�.ÍòÈÒgùŽ-޵þßnÖêÃTM&/ßêe~³ù¨¸go³`54+9%G–oëÕw/ЖØå‘l‚¢<ÌÅÖ›­w”ܧÊÝa—‘[Š^™‰ü²öË/¹ Õ±’ñ.ÏËãkÎ…Ù�¦¥„üÜP0û³%ãD¬ ]RÎ_Ø,ÍŒ¨Â·ùý¼ Áç×絚¬ÖÌL" kg£ZVía¹¹—…e²•1GäaÚËM——˜ø]Ü ‹AZmÎTÄÍ¡�Òô“`«ÿo ldy~0�"^}ŒDÉTfQ ™$î³{Ei~*Y­õ°Óá§ò=ˆC+då-ÄÊ©€�n`åÓ÷¦nÿò d‰Äî1~:Z-Ýnøâ…Œã\ Ì+bÒÉ® º³7÷$zy”2óཙÁÿB«'þx’Q9åˆ~M¿rg£?^¿<>}ȪjvеuÇÂnœëÓTž^ö!âßïÚ‚šVÍj³h†_1yØ#£�©(Š�úø“¢ÞÆ,�q4í(c²í¼ÊÛâó­�¦ýÒ&¥f¾ù~†’’ß‚¯Ì�n+ÁQç¥KéÅLÊUXnŸSíÚP]Rî?Fÿ€©·òÜÍÎwMlјô‰øw0% ÚßcÛCfÎ;*m5®Zx9�,’~Üă^qïfðà’ óòêpéâ°¥‘ùÈO CÐŒéb"‡¶¥„X¤Ä€´v}Ìdïù@+.£ü û>5VÇ3[ÀbrÐÚ¨Ó¹ŽäÛNrð�' ð"ÊÕ¬ IöõNˆFdœ}›}ß ¹ :ß�”²T¥pÆetÎTTl¼²±›¢!+KXN±‚knåVÐ[sßA¿h‘  .ØWüî»Ål 3éð œ=þÃZ%òZõ³Üõ-s˜ÑLޏdô|Ú8ÅH&Ún,íÞ®,¤ÕÀ�lŠ·‰‹ ¥žê´b/Î7_|�¸&ywÀ`!ÀW^.ú?%Ó(ŒÉÈŒM©©I‰•ÅDŽŕÝÔÎ‘п¾«.@Äbî`GxÇ W�‚êï^QÖÄq �_ÍòÑÓiíì›qeaKß'»}‰æÓü’¾H®*˜”¹éƒ9sß8i ÎîQ˜ô²©ÅÙbz#šæó&IÂ!ÿ` ¦Ýö–üËßEú×5/žµ4ªzì´Ý ˆù?û!1/kM�ÑÎ…¯ýE¶’)·8–›µ¤S§•JrÒVë ÊR Gv¬[A°!GTZffyUÙAŠðõ�žk†¨%– ósW×:›Ú›cñF —寕K–KÓ7f™Á?úØÛAÐÆœw�Ñœ²ÀFï x¾«ª[’|úÎÝÏÐÌm3nÕ{?½¹~½qp½ì¥²”sÇÚµ´¼1c4Çê4f 8Ê -²%glJZ�nÛÅ× |ØßÏÅ€R'B�I¾ˆÔ¤\Ò¥@a0…irWögÆÿFm)DÓ˜¦ŒY°¡Hpa‰1„GÊTÆ7{;;¹·¶¥ååÿ…¶mÛ¶²¢©Ü¿Æ+{÷¼;7N�×µìÞÄf50ØbÂÁ³é)W¦/à&¿jÃô «fzæ?¶1íûAÉšÍ5³‹›øµ‹k/.N�+:¶ãùÎŽc Ðænág¶bùÚì» é�NJν¬q:ÉE"¤õ£�2äm º·Ü”Fev4ð×SÁ:’Éd¾c{t`ÒÐÆ<ÏþÆÒvw Gç:˜Ç~¢âÒ{§¿` Zñ¸}l¼X¼ü]]/çÑIyúYs¯ˆq’Qdá¹9HÁ‚ªûw VŒS�‚^JƒvàÒlIa*;EÐZ†”£4Ã%s½ê£I±�¸Ï˜ô0眾 ÷äEõ /¼‹w¢ík«¨‡7™U¯%' ¾ó«@È„¤û6̼¾7â³ÙYQ˜æ6'µ>‹èM¤•Ѹ³v« Öwbkœó€z%+y!­Œs� ˜~éOi˜„!“—Ùû5l- t¤,sÃa*·iƒ4ýçJS£㣾%‚B0WÞ~™Þ�1gN†�ñ©ÃN쫚òX'�°OõU^}mÉÌ9)s{ÂFÑÅBoÝÇ!Ø%ì¤KzµP* rZ~âÖ•Äf÷tU¹–Ø)ý•rŠ�t�©vâ謆·ý•Q"X´63¹¢ØÒ�þò0âÕ Ê>sÂM©ÏÉWô9Dæ¸!jùš¦Êñ�¿“ý'- ¹¾2‚ëF�'|_y±ó⟱¿Ï˜sq§àA4ðY@ò=Sq¼Â±×‘…høÂ<ÜSüŒe§O‡ì‚±ð¤›-P¶¢bˆ4kC="ò£žþ&òé¢`Ц¥*[q|JqQ{qq{Qq ‹Ÿ¥?}Ôâ{¥2ÍM\«-ü±‹ãã$¼ëÃ)ÑÜœ¦Ë^~XÄ™ƒé?³=žf&|-/)¼>d„='chá 5 _�Ž¸Ú§'/‹é©/GJÈ|ú"³ΖÊO:KôüL¤˜ªŠ¹rØDò ç™N�7ϵïu{çÖÏ®®ª®^¾œ*auW³PŸ­rÜ‚QC@B!ÁEé›Ã¶9?°f’œtWØkÛÞÞ?¥© 6ÞójÌݸHÚuŸ`°á—Þ7åÎóÃC�+—½HH¶kZµ*cs&ËMÿR‹ï~íƒÙ8u‘•�]Uµfw‘®§¹Á‰‚p SXnYÐ2îË‘a ®¹O‹öÙ–t.Ìc²•ÕsüþhlMz"Ѝa/™žQ…Ï¢’ú€P©<˰¿ÎáMiZ0Lo}#™¦knÊåM›ºòîà õr|ÍcÈ,ßwl\f0yϼÓìãÇ V£>Õë­gŽÁ˽„k³8Oðæë€/[º|;3ã*ð�=CÑ’ÇÔÕÊž]CÔU¥“èää%ÑÉÛ2´”­³û4ö½1L�_’_O�{†•™!A@ ª ¬Q;yõšÀ¼¼ÎÌ7dPbY´þ“88ežbN“ä¤Ps—ͪ .%”f×Çú|!‰ e!4È|SŒšB»ÏºÌ¥�l¾ \ަ¡E³w’ê9 ç˜|‡Èƒ!;3¶‹ñö„«4$C¯ž½¥‚ÁdP©Çls¨­Ål·(ëßëeÖ »àw|Fî̧ܰ {?ªÀ: v,³FÌg‡S90‚MEÚy>¡¥áuó¼+©ö«L(g<= <½,2‰Ä˜ŠçPJbZ¸p¹ÚÛ¤º&â-ÞÖPØ+Ú\e5Ùš²¢î÷/­P:Nk-–RÖ›“±ãjç¹”Òm<+Ô:/'Üœzo0ÊÓ\y[Õí‰â+`)ñÎCŸ“1šÀgS1ž2Ù^Ðj9Ô×Lù4�JÓ¼agÁGØtj7u±ã[¶šzüq}y÷Çéï"Ûû„  Ãü£Ñ�Ää¿@JˆÿÑžÙÁºjæ�ªhÄ1¯Edé«Òºâš;�8ÛØ ÿ£ß¬²èY�\p¸íCxQ…Ò˜mÆ@¥€>KW~“Gw¾éÄeæJÓ’O Äí`ãÆLgGgK‡úS³>ṯ.›^Ü2ãx†žOœÇÙlo�ªú­ÛTQÞ䇱xKåÆŽn›XÛ-Òm·†ò43˜Ùaè#+ÿëãÍWÉ0"ß©¹íA `ÊÆžR�;c÷ßiáÙ0œ:ð gÄXÉ¡“±GÀ̲áß X¶âSHFöægýBJr ƒcT�gî4¦³î�Êò4†)–W"Þ�GÝì»ûI7x¿�F,¤(C~§ÓI#4ņ—Gqnà,ÚsÆ¢¤W 5¡r5ÅÕõFŽß}üèûïvº¿P–/ÈøgüŽàðøw›ïš…ó‡¶ìѨ:I"ŠŸïËp;Ì4‚ÿl˳¬'¼jšEü_�êœ?]›TW+XÏÖ0ï’5k–,m-ŸªŒ%˹>©PRž‘rädS[ÇxÚéHiëW¸ñ¾ÇŸB“R5íƒÑâšÃÞåDå « þ#�~S>«ŠÜ[QÚÝ:ÖÍŠµ»wM÷õ‡:¤†ò‰E4Ù¨JÔ”èPH%D}.}‹.ä-þ™åªÑÙ 6¤ex}Aš\AŸ�ø¤0DüVNSPFßÛ%ÈJwáÏ1­ü÷7§Œ´ ¯\S¥U_nÉèÅzÁÁôÊ«WVŠKà6!×]öó¡V~ùÞÍ»{ ¯t?šë�åLV‹NÂ/Ю<#Q€…8¬´F!ë&uvm”%£b1fµ ‡[ѵ‹Ùd º&+ÞÖO&¶o§ÚÚz¨É}ØÆÂ�nJë33ë»×_à[XøF9ñ±_¹EM<7ö?_òÂS¼&…Žc¬>¥š�ðC¨WXÜ …Dª(¼ƒ3¡>p�rÿôí�óy†Ä&Ô­xJ«"ðȼHÅG²ð eBøßXØL¾1!>×Ô ã5&–ñ ½Š(©k¸Ÿä§í mVº½OnD ]„î—¦ÐijÂQ‹ûÿ–ø¨¬Ì¦¬Ì(?‘ 9PÚ-¹öNg—t�¦`Ý¿/¹Ë¸Þ?êÜðß¿µMYÀ×ÎɰEàñk5s2ì^xÒ‘l�ë¾U  ü²®eÃæÌàmÎÊÊለá.ˆ 1õû³ rcð‘AŒ1fÞ߀ú˜ ÿÕMì£. € ²Î¼Äÿ©kt³³fë4E#VË‚ZHI£ƒ(†Ùó¬„zÖˆµ×"�[Ì‚Á¿H`mK8ÛC³˜öWïc\5­ * ™  ök6H9÷%‹cãåûúú‹Í¹] �ª†/å*J%*TŠ6˜Gð`oû{œ}54¨Bù$1MâäÊäÜ©5[ >è3•[�ø]¨ÝJà·hž¢O•’К©@±lG qì¡M2×#„YóWNö"Ü{ÆÜyE^ ß-ÊÉþKSä=w®÷ŒïVó ˆ` »Y>X@î~ûÖ^ïœy–B¯�ïFÎí-ôšWç�ó]˜×¾Ð]^m‹Ð) M < Ìq�Õ7v”ô„@-蟨™)ÏĦí¿Pí‰X³È(¸UÏPÄÉk<M³‡Â§îB˜?[ó»x7¾“»@òZxKø©¾l.AÐxpE²rNe ñw6”E!m– Ú‘-è´Ã·ÅÌÝÐxÜMùEÏ=V\6ÐRWêë‡øåû–Í�%Ó”ï!4Æ=—V˪¨`xs°[nø³�W·#®åƒ¢�¼:az 0Áˆ›QB{+ ÙkKK¿¼[Þ%_&Ûül|�’|¸nDþ¼Âµð㈯Π°—xˆ-s)Θ13�à¹m*§§(NÓÑ•*(¡Gº:ò µË¥÷ÖùGî]ƺíš:A7Ä^É‹ËË‹‰ß°A\l®b«õTlú\„f©õÒpÓG öÌÝS<…꿼²º¾�³ÓÇ´[çFpMdÐʉ)ÎÓÏþu¢6³rUOªÍª]ƒÃ+À‹yûc÷Ç݉}9fcE�]‡»:t™ Å…bÓ>0¡™^:q‘˜Ì Œ ›eÙ¾×Lo;hUž_÷Z�z¦ÂXç gÃÊE±Ó_ еqõD±>½!{V¦ñôGmy³~~§‡ä ʈú8Y6öz%¶I`lÂV¾ÎÆ@V�úzÈ˾Å">Ÿ_/P>š¥ÓÅj4°Æ¾Ù×sö;š×çŸ}µ$rS$-¨2TÍr Ë[Â_Rxñ·ç“ŽŒaÓsm±aW¤ê NÕýÙ}ñ¸«îÕñî� 5ï-9ö:µe›VþÇSõ°¿ê­›6I`ðŒw\ñ,ýÛ çŠuûT×¹úQ×Mݳίhi®³Y1Qq> IØ%1÷¡CsâÐâóöÜøñ›rß¾c¦„ƒâ|f )9Éû™÷ß_{¶qPîÕÝC¥²bõD– r}å„rµóƒ¢áên̸eÐÌ´´¬²!+%SÉäzƒÍû:;?ú~ñ‹Ns¼¿Ÿýûï•( ÔÿÕ`/OåÖØ´ÜÊÙØzKŸÿO5Ll¬œÉ7 Fåª0„B{ζ<‹%x¯MaŒº½er@¸ˆó¦MV¬'”‰Ó’¬~IK‰©ß÷V~_ÖGˆ…Cž"?JZ~F@šlØ2�\jêhÊ›ýÞJÓ-±Õ�­°I0¦E}/Ä9ìòâ°rYÇú@ßdÖÃÉ7«Ù,”Bï¡ãè\wKýÿrÇAuØBåÛ4¹H®DÙj÷›ÃM7©~0ÿ *d憎Š›ŠÃÌÿ4=Q¥›ÓU°Bp¡®¢.\˜¾@IÏwE¶ìšû«3RŸ÷ó_ç€g¯üMP1˺Z¢8Góòòf»æÌl(ûžÙ ×6_5Ý> !¹áò:¯åâ„Kk¯Öf Ë;¼š0[ƒzx^Ûì«1P{Fy³�9Û,#°²õ�à!6j·XïCCÊ¢$e¡c¡=˜8¨ÊU.åÃQo¾židv±TFæ2ö,Çp!û: h7Ü@ÛjmÌY ë+»y—WÁÑeî•<‹[iÀ(##�x6`â&g›M3 (¹÷ƒDB”EžÄÅÚ Y¶ü:ù ÞÓ#Ç�î'Z»øâòž{ôîèK6´–T)U%o $ïèè¸aëLa+ÙŽF³^ßò5W $/½ÞC5Å „xk‡Í`K󦣭3i^^kp ę䪋@MTé‡a*L\fLò'¡�+~ˆ¾âILõ'@j‘øÌ›`×ý(¤€Â“œÉãlo‡Ä V"LJhQ‹ì½¯wp?»fðv'X*z­ýâ¼íX—瑲®oqÚjܧôž^×u§i¸T¬3dj©ÃÛïÙèì!½?¢C %)’8Eü–� ™cÒ¨NÕ-¿ ”÷œ_2)'UX Z?·dw)Lqþ�ÒhÏ“-bª‘ñ[*÷} Ð,[+­UéT¢R½åó%Œv÷ÿ?ä¼ÔŽwÃÕyVßÒBä"uüÛ"ZÀnñòºR Dš°/…8‹¨/°tý½T.Ù†?Ík/.ï¾Å‚Í…§lÃWâ—4ãÙ*´Šôb…·{ à€Z®"Þl4–­5úA‰Ê¢Z¹ZÕ&µÝ)EŸk2™ãHϯêúÆÛU;ûñU³{D|•­™ ýÇÓsÆÈoã .hxoÉÎew†=‹ƒœ (¹RÝ£¢}ü=Í=^Íó1çâÍnéÄ-ªô&·x>UüKrdÎÇþ¾~]“Ö—ú)g¹éÿ_I®ûk¯YtêÛ«§êUç ^zðKŠééÏb±âïs¾ Ì»ýŸ”LЇýðn§1ãš~¬ÔÕwÿ3Ì0éГӺ�õ•Æ—*pyÿ´ý¯=Y’ž¥Úè< ü}Šg&»· ðÒ÷ª—N… 9­œÄ Á>|Ôø×tÝ•o!U£•ï=ÍŸrV<å§pfœoõE¼Ê h¼�Ðiƒ²FZ7~vytú6÷ëyñâŠî«6Ú3÷ç° M(غǹݮˆLù^4%|D¾°>J‹gcñƒÞ~ÈÅ$L³$«û¡†ØHìÑ;LC$t¥ÿˆO“BKgúbµCÇÙbàe„Ih$&Ïä)N„I¬IL"v3’“B\¨¤->äLùX��–£ “±hèÜôÝh|èãè:WW4›šÖã8†Å´�OÑ4#‚F³jlhÓu��æŒS+„EDDôÛ€¥oºaj°ãŠÇŒ$¨`ôË›OV#Mÿ¥îœ¹ð+VVNÎtí|ô­ÁÁ®¢ÖyÝ0)î5(rM…á8°î}x§ï5 h;zËçozì*?íÞ{±’»m$¯S˜wñNѹCš¼k+ òÎ:µá%ݳÜÊ‚£O]€Ê¢‚î$@Ë9Ç£î±ìáXtrf0Dõ=;�øC•ø¹e][»ð7˜‡y¾wÞZ6÷íÜy¹x„¡ñævÒ‚š "!½=M(˜ˆšŠqÏš]º$µ×4˜Ay’}Õ<¦X›ù~"�?˜Ù±s4“•Ü bŒÄ2.²bÓ­¯]óIïïðw·kØŠ„¹•Ç6IߌѤ1@{t Úž…ÐÞˆQ?Sþƒ“–«7çÜŽ÷6ì},÷pñ/Àm·Ç�—g…1جs¿¤ƒ1�`]»Ä©—5›Y³eV¾U­=�À6AºÁC”°NNRÌ^YÂDZ»ýÔj íþ—iÏ=N_ª~¹eVqQz5É)Þ“üã{|âžîyZ’Îq÷ž±*".£;lSXBFéY‘¢zsØÆ°ø Áêºës?›[G‹‚¦Y;ò‹„`îúê��Õi¦%-¾—[›Ö߀ ’.Y¢M¿�ïsºÁ°oäâ°Á0�q�"3Ûº*¶6Bêú@Õö—­´®‹ˆ§ñ­/3~¨Ïù òï¨în*np&üsgOÚéðˆýÖƒYa[qc[ª­& (rÒ'KÃLaR­žA¤.NÒ‘ð[ˆ˜è@Þ Y³ÿ ̶—Q[ Èt¸äGÑêJvÕ>8†“ ]3Øf¬Õ̵XÈôä 2á1š3õöl k`»Îlη \ó嶨;—î²hcßÊÏù…¬à¿ãï1½a�¬ñ¡®eCÇLeòR?¹Ê ç\ý$UKM¼Œ 9Ëc³š³#Má¦HeÍô)0Þ‹·Úqlõñ‰AtMáÀïmø¬zÎó1§Éè¢Z–#P†¦kæ5²xñœ93¡ØâªÙ`¤Œ´‚â[´üŽðåËòe=iÂA‘––.³yØ3Ï8�6õì«5w­¬‘´Íˆhùª÷©Û™¡Âh†æ9 šm‹•E…"± \Vl›bFõ1ª‹T±cåe¹„€~ÉòäD€”~p…ňs­<ÆïC:’Ê�'½ñ“q«‚;ƒÞÍF¯ðåõ q,trM‚×[¯ Lõ=`Ì´WËw7ÓäŸNɼ~ÔD’ ›Sêñ2ý¾hPÄXyyö±h1«p,›¯9„"³w~1„¯%kåa $@ó޼U ̳ùO-»Ñamú¬:K¤7�¯|VÖËöZòôKwlà¦Ào xK$� ŽN„�Qf”¹¶ NÄ+q/܃nñ©´t—gqL±.58¢4·"<жµÉÍÞP†|“»Q¹Ù+û-xsg4@¥-É ý¢†–¡TøTÉ Fç¼»áàþãìI0œô€}[�³øœ;k1ÒÓ_'à—ÅñCâ‚„žúœˆÍ­þÂFµ”Ó@ÿœVÿDo’è¥é¾7Ñòó‡ýèÒ�îZM~B©Wo�Ø´$—@ÅÖf#r—Às"„²åSö3L¿–€§ð)`8’À`ƒÝÊ6€`PÖFÉ`޲ô¥5B¯©Ó©Î¬5;õ×¼¤—¥ÍÜ™·Î^>´;d~¸†â‰Y‚¾KòúTr¬ïC–øˆ&#-ªÌùp¾Mõ—ox2Pû.oH/M‹——ïL|qÖ°W¶8iþ7"éP9lñ èX”@³ª¹Œ_n5_¥ø|cÜÂXÏbšVhº�^:®�g¾éGÓ*@HÝ×ÈÉØõnûë47“£h\ò~MÍ5)" s|t1œ¡[¥[ k-.é­'~Ës“‚?ÚÒ#£åBF¡n–¼xóÄ�oy�ŸF]ŲUj 5» ÅØÁeºH]‡ÆŽ�[K•\Póìü™ÔÂXLE©fñš#ʆ3¶Â£Z…ÄT½&¤œ…îUj™ÛÕÕ)Í »O™&g¤Óå±M&… µzŸ½Û�É: º[G xòƒ¼>ù�Ulî‘�ÊãÇ):ù‰GFDq£ydÖ²÷I­.«MN Eу…´X@,f¶ ’õÖ‚ëó|?±Ä’íïôr‘Yß>éµ�Õ€9 ®=ºAlÐÒ3»âZa÷_Ô�Ú‹ήÆ{‚Œ8R©§ ÿ¯ÎD¹.þÅß ùe €w-8»·Ç€ëäGé_øvÎÁ«SWEÇãT»å‰–6ZzÐUP*!Êù´ ‹ ¯nßp¥)ÈMaÆŒ¦+ګÊG»A”¤ê‰Tú¬9 q!B(a#Œ”V¤ùùášï‚b M�Woô�—?g1AßýP°לû¼T#ßçËMcó>”¶h†·tÊ3Æ£[ô�wK2Ž»<4æËŸ�Êßy� :ïó^º-àk\{¬0˜ž|žªªœÑ_!XĸΠI~œ@ehø¿~ÒÿŽ`(ŒbýozÝÑå¶]=LC!ñhú?âË¢WÀ�X²D<0Ü73ÜÕEuuÕÿtôh`ÑÜ–ŠÀ÷ª¿æ1®M"¬- ¼ÑÖæuÿ}Öø)wÕÓЭ.ך©[MªQÙÚý$Ì Œ� ›“Q³ Ca¼�½�½–äÈÉrå\ eÉø”#ÉåTùÏ©Ÿq+r¢@+|¤f]ð�Ç`­#šy3 nØÚ À€ ¾w ù.eÚ2½²+剳]h((õ]%Šûº5渧#‹ŠÆsbØWxݶΘl0¡ÇÝk,ùVk¾tžÛ’ßCê“äÒ>Wûmôxƒ¿ùX{¨¾%Š$­v´�^sHí¦‚f< ©aìô#ò°Œ€hªvmÁÔ³ž¤õ³½Ñ�"š 6xãîÓ¹�­“[?7¤„ !†”Ï·N¶nÜØŠ?Ahb{–)•FÌ«vÄþh4ú½MZc»¾Yï¶Fw�†î³ÄS|¢r"¬¡¢&p�óÉ‚‚\ïºy!Š5I£P—/Pá¨_H4õNƒöÅ'ó×ä¿ÙýâÞŒ[mØwth„ÜäʺM ¹ÌäÔ7î„X¹Œlün/d`$'3\™¿ÿàÀ¹yô•£=¸€ïîM—}úÊTY9SUiz¯4Ý‹öVüð'Èíý“À±º€íæ77L2Ûºoâ ?kÕ µÅÏ¿èN—ïа�øB¨ür­�ó%8΋§çd�“ØÂ“QU•TAþBš^s£YYãPàV¥ìùœhżwX C° QõÐÛÊZlB¡\].–3wkPcðòzã'eÜ z÷+§¼T�nQÝ(}ÏHßPÙm>ÄtÛa�wsÀ¦ ™íµógE-†Æ U�“YiL°Îr°­QY¨hÕ¡ªï ç,ƒd(jÞÖ?{I-c9µÚ.ÙÉeS ÛxA»ïòN‚èâèu.z2Þí·3æÌYoÌH«,\1˜ $êxáhŒÄ²BJ‡ú²taŠk€cNJƒAL (¯'`ˆ)Páá!qfÐxÛ5jœÛý®w�§¸ƒÝé:÷Y:šç—\ÂU«å]M¯�Ä4t3kÚtVéÉŸ LC99âÚ.úÏ…QxtÂfpô[âwˆ÷ß'“Ï ¢vq»3–Ò}zWͽޜÖ\ìýϤóó‘°‚«Ïç”_ÞS~ë#ç�Oþ�üªÒ ܦúÝ»–v¿)Ê~ÎHáz¤5 /mw!,bñîÓgnŸ?{¦ÿ·3§w—_¸~kñŸÂÌ¡@m¯0óOp¶ËÜO^"ÒˆKä ÿz«Ê¸›Çjçîô3<[ÏâÅŒŠ A†·º83¯‚—ÃÉÑøÍŸÿíêõ«É:–òÇ�r„‘p¸ª,þÏ"—}g÷Æäð¾%T"|c÷mYø$¹?SxÕ/øÄð qþ/¿0¨öåû%–ÖÝ~”HQ¦{bßIï;H…�œ$KéÅQ¼——*iÞ1ý´wŠÛZØ1› ƒÒ b÷‹gVÐÞ&|•gùö† ʧãñÀdÎÀl _ù[sždnþ ëu+ƒùy7_qè…^”ÍMØÜ¿õ³îƒßÃÌÐêBôWÊØŽ~#Xî}IdA-ìfÀÙдӬpw¡o¸O‰,yDZÈ»F6LÚÍÓ8j¶Ons5›ñB¬ kâ¹Á?4¦ rþ™™ÖøC0W¾fÁ¤ö‘v]æ:0@ìʸòó!«r¨íÊQ´?É‹£FéÉÓGÔ¡­2a�Ù¿÷ܹ½ûá^¡4|Ä8mW®ü(9åÜdÓš9ÚȨì‹îÁAyoò9çÇ×°áµÌ¡y9¾gÙ#ãûžœ7cfñkÜ×FêoåÔvեųCq$#,yúšdÅ¡€„Ñ:?Z )±_= r}þAŽÅ<ï7¢(‘�6-Ò”Â0#Y‰l&åˆwPL�i¦€x6Z©ÕÞohİƆ­¶2Ø8ÓØ°¶¡ñþà#ú--‡=¨ ôTw cÁ¦F7,êTÍUZ­æÄ:ú•ÓsÓ¬ºŒÌ¹4]4M÷åÌÛÿ®'ÒúÄvÚ¬Ù’!0ó_ ÿ’z›¾üÂέMü ,ͪ-­…Æ�§�4(5µÞ;­o;çìÙ4”E�(ÄÊã>RDÖGiç wuÔ:b„íœtívP®/úr𜂂ŒÓ ³#è±æò£bñXq¾©0õ Ú8¨Ü¤<÷Î>c§\­>!X7wnzrvÛô#]Ø{F†—=Lçy³twí¯Ãq“ ˆ ¹:¹ªZá�|³IZùÖ`…LíF‰È!ØR"RÖ DçEªfÕœ(LŸ2‹“og7Ïî¾?~ŸšŸáuyygÏ’»ŒcC2Vìÿ¬šK_žcBzŽ™úAÜC1rdm,\yg` fÓk¡9>a~z™t¿™Î_]LÈ[²O¤Ð¬õÇ–µŽŸ�áLö€¨moD°*€X #¤ÊÐ cxzξv¹,u¢,Þ‰Š Ä)–²ÓÀ¸=¤Õê\^¯2¶«§»Lœ%r±î1dÖ/8À¼²€ã7a�L^¾S¸hçôgËž‚1�çødp΄_‰:w¹‘Hëÿu–¯±¢oAß±q‰:€ÝæT'T ûSú„bÈÀ„Z™’�³©˜ÏÞ¥–P¹r•X%w 21M�8DqIŒ‹‹°¨Mýf³ÃfŸÄí y¶è¸P&T��lÂYÿÇÏ ‹GËiäaŠ…}ÂéêO@Z0À¢û’=±½¿ÿÞ«ÀægdpLÚE7˜‹h s7äñ<7'eG²ž=PÑÞÞ3°™ÞqW›ƒoÝ:ß³©ö)†½ ƒÀÛ¦à2ã¹—……? pð?UÐX�çöEU�¯n¤)r³ÛÑü®x'§ÞDÜÚ-Õx'ë½ô*È· ©f{‰|S_²sÌúíQuº½q3²e6M{ŽíŽ\Ý\+k)ôF9Î`SðHñæ[~çè‘— ð‰jJLУFB°>*rJ@�;%‘|¦ˆò“?)T5‰&‚[,ÄCá%Ôb¬05zSe¯cP!ÂQ—Ø1õSLÇcx‰æœø¿?—j@°dÈD’p¤ŸA" ÄÞx ½¹gݼ?瞉5]ÝøË·‰;Tû–;G6æniÒOxŒñäÉ€UË‘¯êŠ„¹‚ËJ}Š x›JŠ3:HE´‡ILl¼•@QÔQNVzvÊ-‡txòVypæÉ·ƒ×x.;u†-çîJV�,r&Ÿï~#9JRŸ�Ô¹D³s­·ÁáƒWRøÚu Ã…'_ifõ@ÝFÊ™§wexL²,Æg®'…$‡Ø7®‡=dÆ=¿[_ëoaºJáˆÅ%Ú� �j›MɳI–ìYÆö�+*ö, a…%‡/aû˜¬Š™³äUy!ÇÕá)ù3‚}ÐŒcvSÁ„¤YçÂÞ%(æ»^ÿ®ët™Ùãµ÷Ñr6pX™� ã½nou·Ä^ö�ëvd�ôþ Å,˜ÁŒâxLØÑNgbxdäK?Á1œ«hc³ƒOgÑå¡ÛŒ$TQ:Ï+<3žS‰Ê{:D¢ŽcˆK8eÀ_ø>Ýèÿï¨0äÖT#bK>æó!È4LL@Ž?=x&¿.Õ™^¾´"ðbšiÂr*5”èõazNÁ¤~ÎÄžÂñ8šc.\s\oºoóîÚå ¼eË äJ‡@ ­æ§­µÖÍÉU¬…f®ãˆfêóêgDbêbŒ¸7÷´Ö²YoüûöàÛ,~²…éŽT#@ßË/»JLJJB‚Ë9örú‰î @‰vØJè(æ U:,aL`c•Hq(ÈA€û ÎñvŽQ<âí|t 6‰b vd�E@ÐÃ,`é@5‹Ùbk5›Í¨â°9[{Æä+™Pe<­ü�ÉÖ¸ ‚{¢žù_åKó/@¤r2ƒŒ™�qoH˜t:z¿H|^Rq�.!\dzFýV6KÃ+ñ.F’ª/±r ßM’J%º�Q6¾Uý3ütä’€[™p= >ÙQˆ’0§Ù4e……is6ƒuy_E«�ŸÖ›xu#y{2B7vg¤Ëмñê¬UI@堀Ō~ÉðÐ )†Áà3D’CùÜÐ*�AF¿2!æ£ >ß y ª¡T‰ð}†Q¢û‹÷Ʀm—W7&&În\Õ8‹M˜™sÀ»nV[HWes:ßJ¿½»Ó‰ÙézO öy"§"Þ¯cQ’ƒð ÇîÝç^–:IÝ»çÄCú—�„´*Î'0#;áÍgÌâ· Ò{r£›sr¤>ùBÌN£‰¢Œä%îQkâ»�u&Ë¢®å ÌÍ׿”P Z̺õUÞ¿£åÿæ=�#Æ—å£Õùo ´?Í+HK¨$„@ ¤U èa:¤†Ù÷¶ßcƒ¦÷5ùù§þ“�Qäª*/ÈÖ[¨ªJ 8G:ð‚H#ŠÌÁ„/¨qü<èÐ�ÿF…X:?M × ã…Úp,FfÀÕù[Áhn¸>Õ‡ÙÛÕ˜Ú¡¥Rm5¢(Ø1 †ÝG3h⛕çzØì¾ãâŸiÛwÚƒ±Ì>Â}¤µ_ªÃí58èw v�÷É{]�¸O\°¶ ¯ -ÔŒ„™�±—ìŽþË9�6RpÄ„e‚…`@_M’,å²e¬K ø³mmYºÁA]–8 0 d«ÏÒ…ÀZr¿ýJFÀéüD©ö¡oiôñ$·!{‰•Qå@?ÒÝýí~(€¶Éîg¢ó÷V@Þhi$�Ž‹(ž9Ìàì—nÂJoF;á ¶Ÿ×ãÜæAéu10#~.á¤n{ã}Jƒ«8õyÎÙ3NâÀ�ñçOÛ²^?Ir¹jM=&•ƒ“ƒk{Ë–nÎŒH²ûFFÆbcè£alD2Øô`BnFT^1,îARyySsqqsó!Ô×�E´+9ëËË»€à©ªÇi½•ðΠ8B'³Õ`'+Îôí4àÍ¥&@d¢L)T?‰ia UTì(.¢®pNB\Tëº�jq­¾Úb6›@û&H‰ûϘݛaß:øãú�¾«§zýÄü‰�¼j÷B‹Šü”˜Ä Ã7&ÚÓ®Â>¼2¾þèî£ô†ïÚÉü¯5÷%L¿÷å§)©ŽŒâçÞ_‹+kVº…�_VT©z•™(¼kk3@7ŸíÓNtÏœÞüöI“Iæ�ƤUQR_‹Å±¸—uŸßN'Úå?>QµvèÏ€¤¡¬¬Õ«¨îîBÖý¹sgîqß7{kçy޶]æx¨õÓЕCuŒ¾R8!‰\;Jw7X°&_£TJ¦>Ö£ùgBw7ÕÕE+¾°� Æv"*¡ê6Xs�Œ¿&è­TžBUUŽSú¼A:ã/ëß„¢“( t�.rÐjv¶ÓE�„om#ï†ä¹üpN Ä4A\è/Ú@(vw�Ïüš”>Á~#éÛ#X .ACWÒŸ®­p\Áú§£‡é£-}ÂÎwúºî—]žêUÿ4•KÄQ¬×®4£6CïS¨‡…³z Wb±x¯w4˜ 4Rõõ•håR‘²Ù6à@WaFÌJXíiè/®ÚËë¹-IàúVÍRÉÉ% �…ÈójÆÛf‰ -íÌ‚)BÍû·ùúòKÕÃ��†¿á̵œª—.º¡â%\¢ÌÇÃ/ÒÐKÊ�WšyöæºR¨ñµ¤Õr˜×g6ZÕJ€õ>ù_ú4ýw²†±Oô"áa‡~w¬¡ dJ•Ü·L"^fQí4ÍäR ̪6b(�'ékò,ÇhâàhâBêL.«]æzh²‡°±>zÚŒ™•æR�� ³Ý�.ÚÉDíúfqÝÅ�‡ š¾`ÓŒ”ò¨x Ã/N—z K]ºÐ–?›L„Ú ãZ”šf‹ÃŠZwç0n0´‰ú` rRfØéô†ÀR}ŽÅËÖˆ¥qϳÙÞI¥1&‰þ˜Í†ÛsŽ8Šs9�3FB&�¥$“ç�]ÌIaãŒÑ<_øzePÑUg�ªÖ8ÕÀAÙÇÖ¡ö¡­"ÌRbºÿ®¾2鯽e©qÊÕ:Åý$£ÒÝïå!Óí%açtm¸_!QzÖé­$=QF7Ï.JbjÎnn0$½G®¡“P'/åï¾íÏ\(8�–ŸDÝx`-½å¥¼Ê€�ž‡XsGQ¼£‘w( ñ~V¸ä@ Aùx Vú‰žÖ'ë4ã`ˆœÒsIøë¸ïq bšQÜïkº\»ÆO«~Íø”4ÄìD˜w5Êörê‹å]^Ø>YŠ×K&Ž¢T¼1J‰!äŠå-Ë•£‘�j mɾmÃhôcdþò�ë0%2fû’éáùë*1:dµRl·P 5Q½I˜‘< h ?­¶Î$ðó)HˆO]èiNƒ #ÿø\Q”±>ï•�…¯=þ§¤�9Ѥœ}ëÚç¬)n×�±�3‚w"T+w™±‰éOgr\ îgfRÀЉó„ È„„#µ0[: ñɵœ¥q_o9Ö Ó9¼ŒEtàFPÞ]ëg\å-<ÁI9ÂÁ1!Ô>)åI›*IÁæAK"¾�¬šT®Ê�Õ{'mµáÿ;ðŸ°ÑÁjm�bÚŸ&Öø�ïó¤9ë—%ÀIÏ“ßÝ2ºFsæäŒÚ´­˜¤CéTR4æ1TÜõqל¡mØèÐ6:ìÈ[Ô¯,l÷%²Ìo€KªÆüF @Z@T÷Ã]@'i-Û{ïË—eûÿùÏòÓµ\†G -%2‰d¢\EhnO­ý¥Ú¢ÍÍ@äš�?Awdá51¢Na4"MC�sÆ9儲BtH`ÐZÇô  S’-¿À_,âí8g­�†&Ã=ã?™÷3ço»íJ�y‡E›Ùî -ý47vgЃþO�š ×èÏM‹ r›ùñFb+/h4•¡ï_û :s¿  PíW ‘ ¸9á¨jÎ-Cìeðîʶ6˜€ÛÚ1ÞÌjxŸº9Þf×ë©Ùμ<çlÊ8^Qâöá!ååPÄ"Nˆ€E,XØWíRÊeÊÝ2Ùn¥L®ÜaŽ›HÈ©ÆÝZµ“í‡MOc–¢IßÓËEQrPGœî,Pý;‚!OŒ¹†P‚±â©æÜZÅAú%þ~ŽØØm¡óh@”�ñJ¸o%öÕ‹_|1³€—«Œ‘\™¡.\œ2¸Ã+7G¼Äÿ¾Mêî¦Æókm…ìÜyg_g—Ç…?$)dïÅ‚þª:¶¿ºNƒ Yr÷ õmŽ…ÿÃsà¼JÎ !¼kì~£%˜Æql4²©Hì¶®.Xt­¶ÿ,eš…‘«J&ÏÀ„Ë'6w¨!_‚¾k-?Ûaµ#ŸkŽBBA3‘•̹ÉŒÆqŒ”gó‹Á=‘ÑÍ ¶ê5zå~²° Úg…–<bµú»A¿IZ§[2¹“:µë¾zñ•k‚ Kä ¥ëòNk#�YSÔ°BMØúA1ÍÃPªö«‡´”ká‘øÒÿÓ”¼!­pÛc´½ªŠ*,@ì€1˜°8,jÃ1D4ÆpèZ$äT: £j{ƒÄHx[(R:uÿh|ž#Ož!‘#ïB_~ˆ‚­«pêâÅü<Q0�ZFßá‚…ür¶ût‹$ ʤyà¯&Ç3æŽD,¬7‡N¡€©èÆ@ÛÀ�M{V3O2KÚBk+”Û'Þžg;ÏpùÂeÌúÓƒª¡!°ï6àÃPp^š †ÍÈ­­Ýá:àžœyø#¼™þÆûˆû “:{.òCÙÕI99ù�nS¨ÚTóH|¯Ù©lUƒ÷ÅYWbŒ=à0@"Ú5’A *o߃ŠÑ›J\0nêæg„†²·Û4®<›°¡C5»²RÎá¹LñÍ"Qs¼ÉUöÉÛT2®'±õm““º,ضY8Æ�±ZÑ„uNbO¬UÎi h”žhg‚x î~Œ¸Um0ý^¸EÙSå¹iúÆB¯È° ªÄ*!Š0¼Wl™À³3h6NöB9dG+[ó Ûì9À›wóg PLÓ\©ÄÝUºŒá°åڮ¤sYs Àþ­¢<`ò”x¿n)…2ÉÞRé9•?|¢ <öA ™B# ì"V5Ío¨ÌòÔ)¼ê7€?wïÅJâBò™{_àPsŸgÈ-Á³–§ÿëVˆpô_ž—~Æ2Â@�háÔ.A�¶*!jqß–½t ¸oãøù…1ê¦>o¼ÍûÞ^^�v;šL5kã>O^¤w éwpŸ�•†ÎáBI]íÎ#’|§¤„çû¤kŒ#¿øúWß"ãÀo¯‚ª3vDȦN7n}îíÛK*s=7­lœ£CÚdwØd"íc-t±—€8Dü,"T3½ZÆR½ä2Úƒ†(Ãh�Óz`ä‹ûv—ðäÍÖR»¶Û%š]þ>gh¨ÅŠêžh÷2Žp·]?WLi¾åÒ§qà©z¾˜D,’kEU1S`¤M�„@ªÏ(¾j5�®Û€L«ýG@š�o. ˜,ïÔÑl6龿.ØoOØ9¤o´­{H¶CÖp•!�‚žÐTT ¿€ ¾ÇÝÒÝ žEñPä&—?¼y–œµ9¼.yØ÷V¯¶ú_4^|nE=ãÆ�æU¯î Ãe„¢‰R†õÀ̲Å`F$ã4|A *÷Nœ£0Õ'ä�×_2{ÞAò]vŸÿÒÞÚ�»ßúÁ%_yEðw½u"ëïŸD/Š¢ül�[%–cq™+• ’H:»s(S'ÕÙEuµP-Ø»¬Í¯'fO S”>ï~C8DAÝ!‚fºƒ`w®§XéQ_.¹H ù­oÆöµÐ…XwÉO‰k2ÐØö¥4D` Nè¤q’öí*a_'š�6Ùsµ‡á �GAA�"ƒ‚"¿bû¥$g‹=DüÀ5jˆPAè¥Ê ,øÄ.ïã~>oßÇaÝ¿b·êÉz�¤Ø�¤xp¬éÖ)rÊe 89Eâ`gÏê ‘5(—“lƒ}>믤—o‘éÊXÿ‡(ÊÂÝ€ÐùŠ�ÿ‚Ju2 ßÙ+åd¬|q_0œ�`D‘œ‘=&ë uéÉI’¬ùèíÜ@›�ƒ¯¾±F¢U¼ºùFE0„4:H@Ì>”=ôÓEØ’†0E~âÍññ› ëžØŒ-dåà–Cñg’>õŽÁ·ÔÕÚ¼Aì¶5Ý÷šRàÕŽámzuÛ"ö0»«,D Œ"ýÜi2Qôf©¿{æñjwß@0.%²{¹Áˆ&`â“4Á� ·:Ð2ˆ /çxydÎfq}øÆS"ÆúÜOrÀ_ãºbb418}§¦ºÐ¥T˜ ÑÃÛ¢^ïY¿j>7äÒ�œ1 c¶�0™†YWn*"”"Yšt<í :u Kï“´?ʙͲ€{V4š07ØÔ‚V<„öSDqdd1a£ÑØ›DéyžѼÞÀ{Dާà‡Ê »ôD£øê¸ƒŸJkþ÷£~ˆSKjñ12÷ ýSϲè�³^ØEÑmŠc…­Þ‚3éŽêé˜zrdÁÆÁõ`Ó/剟à uÒOËK^ÓÞxÁH fiØãÎÕ(6견‡,Žë]n "‚pGÓº44A&'.•ž� 2I|ûõѲë¢íKó¯E‘œ¨É£ƒYl³G­Vƈƒø Âø?�bQ Ñ ÏÿŸ þ¢Úõ7dÌÀ®}/†ï;ÓÄ]Oíòf,3 lYööÆBeŸÈ˜Þß!õU >f ‘œ 8›)›+¨Æ„ÛצNš"䄘] á™ƒ ¨ µ¼à›ÈNÈqeËH4ÖÖ“˜£#¾P¼�æ7º�ËÝçЖ·êõ᩟nr^ËÉ™¯$®Þ§zÂCLš¯©ªÒÌ—§%„lrܶ Ð6ðmh÷’媢èp±îaì“øÑ¼Þ)úãq¹ÜÔPþø�a1‰š¸ô(`¥v°ôóÿçÂùsõ¦±×à·ÈßPÔM|�ŒSã÷¨{UM‰y ›"@ßwÈè0ç>k'ÙÙ7Ñ1Ù�í{jÊñî½:ÅdN]šðW»Ý†9¡;†ÞãŒ× TŽ Â U¨Ì#6DALh2=ƒèÛ08Ä¿%ZÙtA€Å‘ó3Íû“´�†û]"ÉK”„l­ÁU¡­‰¹< H?Tã½ñ›ý´ñÅ‘ë‰óºOÍP}"ÏßB¬ˆ0ÌZ0“oœ6Ú­½#�iôÇ4ÈëÔ1µ+Ô ¯!�s±|‡þYâ#ÆÉ»@˜Àw}QQyO³MŒ ïúc,Æà;¥ÑÛ>×KŠ‹àà<×ó9ylº0<=Ù;2�"?�&üy°WäÕ†›ã?0Ñb™”‹í[brýÿ‹JÅ€ø+˜ÚÜœ×ö߃&ï[ÿà/Z‰wÛ“¥í@ÁëÝú�|¨úŸ¶I=ÖiÇ@Q?ïl‰ƒøØ€ØêÌ€ä!ªvzЦª(n~%žÝÍì׊ 0G´¢ùGørß�Ÿ›4KÆÏ /ÊÎýö‡ÈCè÷×  ®(¾œ_ˆ`È¡˜…pÏJ ¸‰¹KXešßó±æ%8ÀžöãÕ cñv®¿d7kóì«ïbr.ÊÐ�ÿ|´¥KÛåFŽÚ‹11Vl7Xy⼩øC�ÍÖ&‹+]§ñ„Àír!ú:K|›ÙÝMåçÓ`¨A‹9l{ã;ù¤Zª_Õ÷¹ö…\µ³ƒ Àß±ã¿÷÷òòÿ"6èŒ8ú¸=½¿·ýSÍfWÿÓö{ïŽhº8jVÓq¡ó C;_R¬VE‹zY0ãÓ>,è÷}ΉKÎf¬f¨½–—ž]‚|èS¹ìŒq�õëmnN¹:Å„bùŒZ53œ¦HwG|ËZ«öM¨Xâë#M6ëwäu0Ç2¸ö«ã“ ×&MŽeÇ�¡$Ëïö'í¤1ñÇ0°Èí´­šíP«Õ`PŽÄ�ÓÃËÇCçݧ@÷¼«¥_ZNÇ SˆûÁ³æþ`íמ/èu1é)¨×™Lͦñuˆé温Ù~èh9‡S~TÞ-ýáïg+ª-δ¯öɶ­„Œ¿óùóªÊ™á‰‰³•äµ£áRiÎ]_KaÂ)ªù®oÃÖ˜E3bÖÌTR¬Åäp0˜»½W'™ÌÉ«C“þ@»šzaƈSy™ýª‡q´?O&îBq4Ö¸ vœ�äÛ}mët²$AàcewƒƒÕ,èÛC|w§ þ6wãï{k¯OMú›Ë¤<}äIõ™rý©Çê*ÓûŒ|�'­sÙí8`!E@Å ómÀLÆ¿ïÒbíˆ�sá x|üúñJ¸¤›ŠÂ6Ï«Júæ¢%\èYLÛ_€ž8"€pÑkre@ rÕÓöësŒß‡'à?¼8ub?¼$µÁ×"îwjZ)2Œ/[æ—öö^häö!ñÌÁ7JHÒù«¼8ä$édë°?j¶Í³ŠC¹’8¿l5")A4�•´~ÊkY‚œŒo\æÀ³"sDÛí.e3X3ãÙGí7­C»Ó…™ŠÎü)Xþ®ÅƒW x4c4f„hȬ”ã� ƒ�±|D -OÑ�×Ùu)xj”¶ÕH#É­¼\nó.ܵ. >Ž'}b6È týÒGÓÔ®%ˆ¦x‰“ýr€!?úaÛ¼§\45ººES÷ðÙ§>õ!£M0 Ó[º¹@?òÝ0îçQ$‹¢ Ñ�çïtÎQ TyòIJ“.Ê‚’òÄ(·§ÏE³BÌ© ü1éÊë~¿~}Ǻ :y§_w'–üÙë†o?HÜ>…«o ò,:… bÿ%§6Å¢)1Ù™Ù«g+³cuRá Ñ�WPA42Ì™u8¢Sç W —|’Kæã7&’)Ô6ŒC$$‰�Ü zþÝKüÅ�©_ê{\Pg’˜„¿ÒÉ SÈqF!¶_X¾N±8êXSœœ‹ž_ND˜Ä‹@ž;|rFÀly])gICd˜SÂòzÛÒ‰|ídq�¹#¸ÕÇÿv€Þ‡c¡“8†V$–éõ¥ôò¹ñˆrèÐ3¸V|K=Œ{9ÌMŒ°ùîå_h¬â"ïÎ%C·êõNBÀpÔMT,ÒÚ ÙØË�æp>þÿgRégÿË”áfó#ñ<à^€Vwj¯ c~t¨Í:H9bÌøkÌC n£Üó£„unýtpçñd9ý#î‰1qAÙqáø€PKpES9a‹mw¤ÜÑ0ékï9¼À@ÑÖß¾(b„ Ëü:Ú¶ƒYU_Â:¸¼Gl$RV:'%¹qK&r�mpÙM­FÂä1Âèµ—:^º€…•8I”Φƪ~ïfpvé7ôF¬Ý�è.׿Íõk\ ] 3¡›’—”¬]±|MeçD¯©iÜŧ@‰itÔŠ*”ÎhÕ’W—ã”ÓŽð®+˜É&L>IL¶ÅkupÅ)`• ›µ J &ˆäˆÜ3Ž8®¸;¾ dÓ߉gÕŽAb�K]ÊxíDË[Å�ãüÈá‹]Cà \ðö†[ç]Ðè輋µ\d\™ôð7ß“�"„®×Űᘠ\ŸÄýh™Î‡pÒ“] ²Îž¡ªjŒ\É7Ošù–t£Ãn%†=S&×v~´�žò4A_£;ÕÓyß>`Û™W>7Ez8åˆh4+Uç¿fÖ ¼0üÌ"Õ3 º°³åŒQU•vû} â {CÙÙmë¶+¹I:Ùì&ìr§"do^WÑrç*#?kK¾ ‚��ù·®œ9c:îí÷ƒ¯îïüÌ«ÕûìÚ' �¹Â² 4—©‡ùW|0üli »é=vp< ±e×àà®-–uË*›�ÝÉ$J3¼þû£s¼\ÿèw-d¬9z²±p ½Y=,Ýî:EÙFàÂ÷cØëWÁ.ÁXà[í*z²w²Ÿo?8äwäáäeiÛ;Ä Ê„¸’x -I ƒ>hvµBokO€AîAöüèôOÖÚ{µ;v¯C¿Ã‘{¢~‡–”ÅKw’ì%ìß…X-¸¥vd/abM—MŸ~‚©‰¹;å±ÓYèh{ã)©W`eyoˆÜóÉ“âŒyš¾ Wœ¯åÖÖÕ2nß¿ßgïØ@ÒŸ@Å»ÜíVTú¤}òüôpÅF) ?„ÜÝ|C· w˜d<%jð ÑãWYë(ŽÕFˆ‰6ïBá¢fÚŠ¢¨õ¦µfÏ´}¨iÉÙ" Çr×7yaM8Þ„a•›¹±0°6è¼ß!H’$l6в‚ºr¥²’êZV«D1”½PP³¢bÄ®Lå|.kZ²÷9¶d—@½‹ÚF]â†Ø©°ž(LÁ]]‚=ß»d†±Ï븵Í&`=‰ÝÄÖª¥Î––­bï D;æ˜rÙ—uNüHôeÈ­ÿØÝräÞ4óÃã bÝGiÐãsÌHýÐú/ÆàÂJ$ ,'1ÈúGl¶›IßF€ß5áž‹"@ÉÅl û¸ ëŸGS=x«‹oÀÂ=¯µ´öbjÂz&&‡µÚ‘1³þô�Ú1åÊ¢½¨•èvƒ˜Û¿$˜[»º¾ €6œŽ�XÚ,Þw&?bíºñµk¿Øe<ìè6Æ8Ç_Û²xCïíV£ü6‹¡ßÔöúÚ„E4{Áü¶Å«FmpêM蔇j�·œTw¿¢ˆ)#�|nÍoèÁ¸,B~‡,ª!"Mýü’œ1¤PPõëŒvúÞ#%Ì<øà¸lloËx(ªç™¬ÌžÑ¬³MÓçÂÜ^~ ô7ä7îå%Ú»Šã݉›IŒá(îúͤA¬‰Õ41‹;Žî"ô!|áîR5«Q åDŠ÷Wãù+Ø.žá�à]3³ÿÐû ö‰e؆’´ÛÄÎ%I6ŸÕ³Ä$T|–ZRƤªú×z´uì—ñ‹­§€¡³›"ÿÊ–ñC—aÍY¯+ë†[ÄÆ7Àk¾ÝH×ç¿}”@Ëê;—zm87ïþw99ßÝçæ…¯­½¤ž‹t“¢æ.=Ôç9P’0[ÙŸ@úðA¯Š”f‰Ú§ �Ñ>.Ú×_4K²'Ð#6fwù:ñ�d=‘–¤Zyçº? pÈ>÷Ò¦xIvÞ,;€Z„Èl.ïߛʳy×f4A´ôWáûÕ8÷é?ÑLwœï¬Qq®B÷q�-�olki¹(úcW/lº�íåsÍ·ïC\ÙК%±¤NõÚ_Fy\B°9Þ;ÞÙOïKêhqcI]Ø!™>ß�ǸJ7À«)Åœ‘92íFE&‹�Î;k�š}UòªeOF§•ýêÉ2µ.DÖb��íÁK½ÝƒÖQ—ëÒC­T“¨NÅRIÎyÂð¹@’¸rMÏS©š·;¾°[ì´êœ–UÔ1up(J©u·ÉÌ\—MAÜo�-DeV¨ ×ÄqpͪԗÞää‡�çÆ±'ORÞY8ÛI¯è?zƒS�k8ïDT YX}Už‚Ñv §ÙÄa�o²˜\ê… r‚Àç˜Gí‚�ˆø‡ÏÃ@ìû£\vnÌþé*'Ж›ý®ir…´l8s¬ ¢…‡=èç¶üN¿2ÉO¢&]¥ÿ¼áCz"·w…KÒl6âFàˆ|è'Ö—Ò5SŠÞfýÐV+â@l†� %o< °d› ¥úk&Üx†Î ?¤ �—ÉÉ_GŠkŸ�(ó^}S››È¤gEèÓ¨Gqrm3ÍH s“Y•I¶3ã+Àƽ?ì»—£ÇaÝphT›~½¹™[4Ït¡üÍÌ…ý7çÔ‚©µÂŠLå%�\ªA5q·¿çjBáë •.ô|È÷·“ÎÛoTDñ*–ô>&g¡ rQЬ6}3ì礄K1ˆ¿…Y‰#ŠQ'o'¢ðSõ�÷/ ¡ÔYS�Yxö›@G-ì ©%]î¬Ã‚â7ÐsøžÇ60“êÍ.# 5ûY7–y”!Ötö£of˜ÉW?xÊ�¬T´;oqLïýt.6—9S熫LE±yɵXí§o>1¬wGgXå>ÄÔfÌlAOIkqñgß2Ô!6m{æ¶•Å%­[¸ìXD"VïuTì¤RNZH‚´LÚ̇P»±o$L�$�eÿйEZ’ ¸î2�ÕkÀ}•þ纺Я(ƒák¸¬Lk•¬†îÜz䈊­­7Ò©û#Saýü»ÿr7+; éZ¼&�éqö`¢+€qØS$'ÖÇŠ‘ü‰í¶cÍI•ýp�¸>d¸}‹zuqñ«ámtIxÌ}¬ bJ±ì„pîÏ_ò²ÂÂøð—Ïߘ+Ì«‡»já8h¬ÿ›ø¼îFûüõÙdgÉKUhÄå!{÷ t¬�òÂê‚_»|w?½1éH$ªªûºaÏÆú:J1A¾Òœw²I⟽좇�‚“�ŸŸ`s]¯á1Õ•»y§Æq–ãUË=Á!Ouÿ ß2áɹ·t}VkA}½š+ë+¹/_ˆîBQTéBc(xó‘©Ùy'à4šža~@)Æš®¨˜z.FÑž/‡97]s€,¦¼pîüç/¹Yaa¼ãËçóç U‡MV è¹0�üùrk ©>!O&;4#ø­ÐlQˆÜÓ3A¶ÖÉZ^ÿ¬ú °„_²X_ YXõ•Ë}SÛüÂQ†1°õ=ÉÎ2ª¾~èOÿ©¦Å8üU «N껸jØèÍ·Ÿé¼Ø=h3hæŠ÷HqQ‘«WßÓã„Ì7p$–8øE~_âñüú}ËM‘´i�©šž¹¤gí²E?³h­�q|O¶ä4[输fqÁC× ¼YcGàW t@¡u“!!#!r±\4"�D…ŠC#GÆyѺÕ+ 8j„B"ˆ †‘ÙŒî |‰]Ö*+CVF|fb%ÆPÛf†k4%žDØSÈÎÐ][0}U+ÍÊ]–¤{KsqÚ¹ v(jO›¦_¶gÙFØâÖm5”þQ³­u¤ÇfËÚþ ºõ�78ÓܺˆõAoXËP5hØwd“�C[|ã­ú¥SZwÁçtÐb„E˜ÿ‹?xøë{ª ZèAüu‚¼IR‰]§°­8Q¯Ïq[G2ü¿´l�nVm“³Âã/µ.~ÔV @úuä í»t—S–iÇ{-½EC¹ŠpáBeýùÇ1ñ@1ãÃÖ÷Ñ÷í2ÎZ�z·ÔJf¾{DÉ=kÐÃïf$µ™r·Ô°Ë)"¥…¿R�B3�HèƒNê׎™óÅn“/ ðg–Ò%WBá´’²°«M�ös6¥cÙ† qi¼ôïÄÓ8‚¶~Z¦…}‡º0Ñq­LQš ‡~ à†, ­[ 'ÈSWlww’žÖð^?a¨êø'»` ã¼Ý6ófïb-[vá~eeo/�ª*f¶š\r?-àæCŒøÌB›¶ÐÞ[5’…bùG®¬ž_Æq!Ö‚:ÒýQŒ°>C¯ØN¶Ÿ‡¤>&Iå~3·­;(Ì â0L˜>ÃRÔšíö Ë~ú]ý“`ö»–Š(Ð<¹[žŒ:̬n–Ðÿ«ÿáB4Í·p´ Uœ—¤ÐrÎvôÐ ¨êˆ ÿ¶¢ÑB£§?…seã?trî.9»æ¥Éð;"i—ÑúLÃ@ðµ|ŒVï8êŠ41ÊØ² ¥L}ï&.YÅ®g3¨v}†¬¹YKбàqZû'~ì'ÅVÚåËjþ¦øƒ1Шó"Z&º·€ŠVuZC™œtEZzJ·z3TæÊkÎ&üž"WÖ…5+?�r('ÙâÐ4Ú¹H‡Ñm†»Ø®g@õé¹ s¸Œ.>óü±Êž–£’�rÞ9:ÀKgΘNÉTòâÈvÕãç#2'ƒýcâ çJržV ŒË­];ç+ßp�{_p³p¬@�žŽÁ˜Y„=&\«Àš¯}¨“ñbœYÇ!¬|v E{µáä8¢/×va5çK¨£�šUªé 0Œžc£«ïçÑW`S…«bi¨kf 7¾²ˆkK˜‹>»Êlt?̉Ò_µç‘¸Ë$¦OòÁ H¯‘L­W糫ֲ¸ÎëÎû~‡-à[L:è;’Ý&‚u«±>¶×È¿v[Tjs¶s‡Ì(#ÏZ2™Q÷ë�Ò˜ ›µ)'Þìz¾oÔ1¢ *#ŽÑóí.fŽÌ{÷^�åÀöØVÚ2×7"‚w¸¿Ñøý ŒÜ¿·ñ÷Pv@O…C£4­$éѳf…)–4(ÂR ÝÅñ?Üñ½¬ƒñÕ45”ZJ—–ý_½ƒ†À0ï™RߨxMÍAœŠ^oEOÄRØó½ ”`×ÔqL‘“eÖje¹‚¥’¹Üê]ŠÙÎd5©1õò0çm®¨«aïs¬a—@øl&l¹ ãª[ù�ÍÒÜÉO0äLñß�)r„”˜ú˜6ExʼÆ�mô `æind<=Ý„ZjÒÞž œ´ZÍvõ²ÔOk·D_O…&aÅgÈtÖô9`1¤JÞá’ª™æMŽ¡˜"dﱤ@˜Ñcb`€D¹ðÓ££Ó;•-¤Æ†mã)2û¸{š�&"©›Þ=Ë¿l??Ý¿´…¶Gàá3Bã…žÍÅM�f>®¬ÿC€v“,)x’-XbÍEGá "ס ô?æzvG{{™Y ÔµkâÎÔ7«ª¨ü¬ŽŽvúÓ(³‡#õ{4j:så C­s«;ò wB'ï�–$2?`4‡ÁëV\¢êÿ€Ó-<Ö{@äð�wö î}’ųìÖ‰×2Z“i!­êæ€#®Ê•#0JÍÉ纑HãÀ.–*šàãÀÙ¬. §Æ¦qÔÒa à‰áY»H uþfVbÍLœhD�“(�$ø[˜ GÙˆÂg¢d2�„ BƒúX¬¾ ð�¤÷o¬î ¼ôò?ÞÂ%·|Ä8øJ¦–²i‚mˆe:Ô©ÑcS"LËY=§QÕ[SȪÊZƒŽQœ§™IÜ! 8˜�X£'v$ñJ«1Qã”PÈ;��üo!-‘+y°x*oeK!ªòìB祀ÝMT^Ž5_S…ZÐúÔpÏÿÙ5?“p,'‰¾= ³Ýè3M‚ŽÁ§‚P(ào¬3¦[¯ÇdD<þß`¢Ì.óoÓëv–LðìM(Ð}ìžš¢ŽùØ#•Ïo}U”ž^Ë>yŒAK´úh�déÕQo¥W ÕyüZ8wOZNíÒ?t€á0;ãpë´mjÚÆVî;AÞQ~LŠùݸ¯ÔZ?»æ7ŒØ¨ëBõË þüªŸWĦ±ÞŸ’£�Áby÷VB ƒ¨Ü eÚÂYWG¶™c웿yé�lCØå‚&Aõàqj¼æ¤sŒ(Ž ¢ôÿõZ±8¨pò»&“ BYòÓ—»as©:©›1õ 2{ÚKŠºÀb�Y�è�Ù¹ÛógC÷ÏÁBhÞë‹ó÷¡ÙüúȆ Q¦Sr¸¤,\'YeÍâ)ç;nl‚ÆÇ´¼† ½ÞÝ£G2äËô@�©íGƒv¡ Z,¡A໑í¢r7–±k*¬È¤Á»Žu‡'ewœœ¥öE“S‘@w÷€#PLÍD E§ ¼Úñ¥(!‘$5)îJ9YíeÂàU4‘•%të—šî�´Ë¯5]è ‡¶eò÷è¹ ˆLÞ½~�JÚ·w}SÈbßÁè3vGêO¡ŸÍÎèÒsù}+躖i4u(/MÒñì0w0g=sãþ›áC ”Ua@w¬‡`Sž}ÆR¼ÉXòùÁ=|?=±yù÷󿮨(ôOÅ ÙÖM·n%)•JÉwÎÌ@OpÔécu‡å˜Í³Qœ^TÇ�S`hލpr–®ö7‚Kbî[ )@ŽAóžEħä6†¨&†‡ž(oûÝWhJÿA,ÜY[÷ÐlÂ;wL‘N6pé›6Ex¦«´ôBd$z Ҏ?N ÓTàˆ×½;%y+�–eÒ¨ÈИ�bþ°‘¼èÏ,˜·¢ëïJ¶ �`O¼ln^á¦ä·Ïæ¢gÖ¦™LÏsŽ< Îi¾ôÃ\<7r…&ÛÄI_·�¹ ‰ÖVEè{KMR_ G@Rß„Í-WuŸVyþü††…æ‹A ùt ‚òÄoóƒ<‘ÀÉß"%¬¹ßdÛ•X4êÚ¶ãÐ@„k¤»›CDJ*£Ù°C¹þŽO–ÛvÐG›/¹Ô(á¡ qb¢ãÑ!$â8 <€;C5¬ ÃðÙÁ’É~¥±¤y( ¿‘ œ”>íÚÝëKa –N\ɺÂO$扎ó0ÏŒ v›¯ÔnºHÓéh—ú¿›j¯˜/qÜög‚ŠÂOGC ád…ƒŸd G>.üÀ  ë�×ýž9ãI¡tn'GåpçXZDœqéæíQ‰ýÁžpÀ'Þfžõûj¿ßŽôšž×¾ì;ÚµâHEÅ•‹Bôi³~µÂþ}òg^�Q>‹ l3[Qà–yÙ’/>icZ#›Zj­ÚÈ2Þ;}’ 2´ªŸ:ÈÌà¨@�'Ì4zô¯5ͬ�Ç.é4?ž`=¼ñþÅmù ¨ùÇå”âQñ :"è0'—›s·zÓg�ËÐÆÅ¼mÿüh‰øæÞÁäºA»ý¼ÑHmPU:Ös5Çtw›#[Z„ƒ^S;S••ØzÀxʾY«ƒ2û@ˆb'‹;¸» È‚ÝÜŽâ“*üà·Ìîq>ÎÕ¬�1øÿ‰éýë^�b$h#*ÚiØl dVŽ¢�’è„Å?K‡ÿmð?ÿD”×sõY\uµ<_w˜@>’�ßÚµàô_—†í©;ÐÝM]¸x™™ò2‚•ÆíÔ{å}áY—b=É!ò‚t&¯¹x�#Ï�TT÷’ž{iþÌ×9û #�¥a¢MÈÒ)µ?-\ð¼h‡=ãiÏ+Yˆ‚ÍsÌË|;øü�~¾0øPM†s�:�ý5 ªËù x�Z_°2ÜìPë ›ÁÓ]¼»VäÔƒ_Ó7þ Š…GÑÁ)E ÉË5"E5ã_fôðáѲ°èŸr>ƒ?;_�‚"U†è$—•Bv‚·DŽì½!o [ÒÊër®ð­�½û/÷X 4†c‰¨�½dß6¤ˆ'ÕN‚æfæl>6“:ÿ‹õÅy»0hN5�óíö¢²S-”ì¼Ã©–S2"D:Àã1”~e6'mŠo`qñ³£cœø´¢#°ñÅãè‰�k7Ð¥"˜3vÔI›À¬®Dò»÷׳åþ]¹:Kïò·ÈØ÷lö÷c¯«ž%ðÙ¶ÞÖ–ûຠïåäÌÁ €tû)/ß&ÏYmÃñ¶Ó#¶ûûC’Þ;mû©@¬±8i¾àëPL舆ŠÖÄÃ5±±%‡KåÅÄ—Y>x†]^Ê ^z)Þk_!jŸ�ËÎÒGU–=_ß,üØ&×(ãÁ¯eþ^y{Ìä•—…°î³GÛj°Úý³�Y|[SÓ,ÝvÓ—ûÌ3®.„3ל<²-âÀöˆ , \ŠýÑu j±aà³çhx�.©FðC(òlàãÐ@Íj»!+Lo8åêcv}¿¤&¬­þmOD¿IÕè?±r0 Ájõ\õM»X¼Í§ŸDFÿˆ öGcc¦E LE?-L¾»êú°oúÍ ª„ÇH´ñ¥:Øä¢Ô�¬®ÛüV]òê=±¸Ç¼�ͱ:(æÇ}Pn+óz=&.ãç·ûbMuó·Äë·²Çå¨èÿ«%û°ýrQ–;Wrª00·ÞÀà7ÛæjW—nø¯ùä`à÷ï7Ôþ¯ü.j™ýþZW…_¢a}ïý-É�ë„ë¿Í.bJm¸î¶íß¾^ ´!£g(\ØPÒ_‰© j¦œˆ±�f”Œs­1¸'Ošc ÝGUÕcŸ­[ïx(±e1ùCDzÓ?¸O;ŸÕ×ÿ8Î ÔÍÍÌxØ2mÔGjõ@öµÀLÿ¨aê•Ooê²t  ð,ÞéöÒÉ îäCj�‘Ìd%Õžä§V£Ù§Ø¡o›³‡º�%1ððxÕÛPé€�ºò a¥½¡1<þcDd¤EÕˆÎüñýœ'@@¬C»‚Á!`-«êÝÿ>«\SÔÀxÆÅ5LÕª©›=I”DW­ah•D½XˆÛ °{ÑÏ^¹~{êú¦„�¢JöÓõo�< x ÎW.¤C²ÖK±ŒßvÕ|nü¼f×¥9eër/ÿÄ’gO£@ _{èejR‰Sžhê¤ q]Îñ  çëw\ä·ñÙvØé*Ug€÷Â2�·­Ø­ý1ê%Q²÷óš]0µš´�7ˆä,èT£�#n©„qêµ²“JQÍô˜€a¢ØjK%�kÅă›äᡈ#—1t˜áÃêFÝÛÿ6£†ÁècÔŠNY¦ŒÆõ@Ì?55i þL 6¥éõô1Âj�2[0‹eÊvçÛLÕc‡o•𭆳Uu¦r½ÑM3ÐzŸ ÅŽ4Œ7ûø¦­=ÔŽµ®9�Í÷©òPãRÝ×2~ÞC’Pà¢*¾‰¡�|m  ¬ H8Žk‚_—`Y6wÉ [½¤è…Xò¢H"–åIXG ³0’Äf wx€]öÃ3jVç£ûr§Õrsô )€ ýÀ¤·/XÛqüt:¿‡#Ô}ç²q×2Êì²íKHRQWVW &…¬#5³ÍöQ Y28j± Ä�~!àº�ºNq´¦K1d³3Ú0Èð,@‡ß¡‡¤6?I°:„a³¦]‡EDF¾×€’("=8vË#¹îÃ&‘KÛ.ËdwxIwx®•¡U_Y9³Lª×< ÌnYlÍcv wIóô­Í€ fÆúx$MÖú6±"_NýØhIZöÃsÊp-ëÔËHÖÎØ…;&ö­ù4¼ùg¬ !cãd;õvsvJ‡agåÚ8 ¾'Éc+jRã/VZÿªöAj†ì`mUÉ)Pã²qbæÊ§UÕW®ˆ—qÒ gòÛQ{+Âÿ±×•“­ý;b·J‚ßZIÇðz¶€–¦m"˜Yào8œºù,öŠØà=+_yy¾Ñ XEpÇ6koy8Ö“X¯)û7¸“`½õ÷ÚÚ""7Z=Åž'í¨]ü¬"\2¾¾xFDLóÒÕhnsJ§±³y�À”b 8jX?…Îuôl �‘—õ^–_v6EUVQ¯”•èíÑÝ‘°™Ç6EL¾·È1àèŸe^óÑî ´ þe´ä+*Öi04¶ý¹¿zÈü¾¥ÿ—òÆýý7‡qmÐâœ(ÀýP ..®¹†ss=œ•ÔÿDÿ<«Ž®Ãç;c�ÔŸ Gcî „Y+Ô¹šÈ�&Éÿ +œóX/3û)�ú25¨¦�m¹)œåLO˜áÚË¿+2ƒ¢8 MIPø¶Ô‚ßâ¡ Ç %ÐMËDȵ÷˜…œý¥Ô“DA*Eþ¯ê¦Ò¾‰û¢+.ÚXÄ›P«'xEUU} ÖwÚõ¡ïHøÜŸ{/ê™ÿ*"þ»êÇ–…«Æë¼×Å &ÎíÝ SÔ]�ßq�FE`&ºERöñâ À›w±â~XuÔ/HFE9]9"e®«Šh%¨RŸ;Q%Býèú R^Vòù@ŠÑ•œrÇÇ �oHå·Kzçï>ù\G‚&C¥×Ò9"<º“;ã§ýzþ áöWw[x¿èdÐ{àwù+ðäY[M ˆ…Ú°).®=Ô×÷�çöõöš�–.¤kîç–-Âw2ÝÊ•ÎÝ»[f�f­³½�ëü­päèh˹g®‹w¶�™ŒÆ�œ>@‡^R>pùŠy~؇Ì\dŽÕ H †Ï{Ë÷ ‚^ É (r¦vÖ;KU‡QóVÔ»ùæg«�Ð!ûÉã½½“2@„j¹^êxq($äÈñöÃíÇ�¬U$›†÷J${‡7µ0ÞöŒËbqLáq�J¾c¡ŠF6þËø² ü^÷…ØVt|‡ß{xŽ»°ò÷‹½:@•çbZm%¶^Û‡}j0 –Ô·-Ô°Nnk£JY‘øç›é¯Œoýn†uŠ’?“M"`Ĉ`ÌςЌ8PÏ¢èÖ.|-†cíñÈ«hƒ±V‡Ù­!ôÔ%ØQH‘œ‰Àš‹,ŸYªõ¾AFÓëÒÞûÎñæذÙ^·9@:$™—xü^`»Ž'Îs>eÂzPwMÛ³ˆlG:PœÿÔDn(Y&ù/ 1_¹ÊH$]â¦�ŸJ)棥ò1�Qé±øk†ˆTAÓr-8Ÿ¢Ü¡�õ.Cµ“aùĺϘ2#e�ÀOã@@«XõxDÑæ¢þÐI¢Ñ’n8yÈŸ!ÖÅø�ö´b¾/ÈaGrßÚ¸ê0äÞC¿wˆ‚m£òЯV&p~ò} ní©R“@ÜV†ˆ'ŸÜÉ[”žÕ½ŽÒ±vé–�)nŒznq€úT߇½Œ.ªñD­~ÉG Ñðmÿ”8uÓ?g¤Wë§c¿qæx¦ÇOHŠ�£²Âè?¯Î+8ÓÚ½_b†ƒËsJä¿ï%A06`dbÃwš±Ašt­k‚‚ÖcëuäYW¡Ž‡èäÍÒªMhõIÛ^]%ÿtþ¹ëJÓ‘#ëøøÑîXåg÷¸í Ú+žàW7�ù(FYç‹'�rºpÚ¡»$KêÁ9OéÞ¸ðŠ€ì‚9q€¿¿†È(õ™!塬ºØýÜD� 1áŒ(¾t/‚Îí¼Q¹*ðŒ3ÚwŸÔìZ3ãÜ(õ,o÷.̼a]wÎô1zËåWÅŸÅøï…gèÿ4ÿe¾“á‰Ãá¤ûÐ…•Xí„‘°—XÉ0ÛDlvÛ%`[¦ÙFܶ/E˜KôÞ}ð‘üÝm#Є• æ*èTsrc¤ö(â�H<ª�,K>ö. †Út…¤ÿȶwå'N ´èµÎ#ŽNTÇVƒ&“eÎB˜%p”i™ç‹ê¶éÌ:$Ð$žsS“»‹¬^øºûD�}ˡî{�t.Ì!n#©ûM™™WšO �[:ŽÝʺæém\ÁÙ-oKè !Çóè÷ó¢ŒõyLqPî ìße!ý+ü¬£¿®xñ8ñ»88Mã|Žíó£œß©­ê€t©Ï›xTœG!š òfzn»Ù8V”¦Ã[îÞÓàËNùÚr:0âˆ?yçÎ_?ñõ�ÝÔte§�N·®Œ3Úά$*m”«›¿Û ¼¢E¿yzzc[-Ò�^ÞUYzÄ÷Z/íúû˜©ÒjÝâg< (½‘”o™ÄÆSÿö0NÿJäpÝ:P>†&êÎ�Á•¹ƒ•o¼Ã‘@[è…eÌ­5*@7¸•ïOØ�¾e”6ÅÌb÷y'Íéê®}±8’Õxý5Ç2|P/î» fŠç:‘‹gyP¾ „>v=| ^'‘tää®ðæÇ9ŠD¯�̪£*·nY’NƒUû§SlØyñ›_PÇŽ=ç7á…¹ItŒ̪½Ü§)äÑu”&nÓ¯/ƒs H"šX²*çÕ¹Xv[Y�Ÿøü0áý¡B;Ê.ùÈ�ÚOŒÐé�í?â>— :PHòµ·ÒwÔØÑÔÁ•@mžeéö»=€0E 7‹G%nsG3òD$%úšÏ›“JÚÏ�`±Ølö7xÜ•<R±E*¼ÑáS¡´üÛW@¿¼í/Õ³ån–çÚKR>ö¹µžÄZ[ĘFz!sº—ïh}àMí‰;é…ó[#øË=¿ßðíìo{};ðb®¦çìýÞ}Q‡ÂIŸûå-Þ3á�>úpú§ïž>ö€dNâ! ² Œ8}eø¢ÿ#à”ü<º>ù´¨d._ެIë¼,[#žq3@ùŸ`ëÜ�9s,©Ãÿ³XÿÏK!º->ë˜sq~*—á?嬲£óìì†Ïþ\\ååŒ3 ¿Ê„KߺºK ¾\urwü.•¿ß†É·\“‡ ’ȉ#ÁY^ ’/’°#DC)”&D¦½§ðå6äŠv¯ÿ@\É,àLJ²:L°,xÜÖ0[˜ë!ó¸^é»NœÐzý-¿$¤Mï¥)¿’çÝùxÖçäíe&ïÜ ¹1³nW�'SPì÷¯—¦­>êp[NhNƶa†¿¥q›íF�\ÝÎpž&_1FÓJÚÄnB„L,ÞõF+ö"ƇՕhŠwÈŠ=|ž]å³W‡Eº¾›°¿ŒÞkª/NóÁPCÍÖ5ua(šÓ¾µŸNÀW½r}ægŒô ÞL:‘rD€àåÓ8 Æœ’è ĉQr‰œ,â vyó”«t·|/ƒNôã=A%ÿý—Î[Q±¡¼n „LϨ_®­ìƒü×DeߺÈMˆ/?™2°´>€Ê!Žæ Ä’•[Â/r'NcØ jΆ´-`'~9`| à˜¡µ#€ßuæxñbœx— 3„:8�ëyÂOâýòÀA8àdhÑ’®Æwã?/ øóFp¦ì¦Ž*–§âƒ,TɺÙÏLk>"¿†¶8·»)L �#Ä�ÒÁp¶Y´(Ÿ¸ÜPP[ ÒÃwmhùkóÙ!A9·@3åÑ({0!ÖoÖd|âüb/"7.„}®# ¾y±ì£>ÖR�©Ó VÛŽ1>ÔýFxtžßì5¨ì~vbÔkóy€[@MŒÁõ*Tû¯Ú�; l&« ¾³ŽÒ¹#HŠÔyLšô[)�ðMýâ‡O»c AMBÛ“5¡Y¼ Ã|]ù�Y¬²)òx`Äg�êvÖßö,gòŽá-ìFô؇³â¼.0*��ÉC\µLWX>!þt£t2§¡�î|93 E,H«.v)ž‹Û‘é­/½)NrQñfͪµùÁæuèUC[¯iØ?ã�ÂÙ’éËŸ|¦Í|VÈ/æ%r}h f¥i˜2ûæ<ò§wu98"áÜ!`çïeƒDHˆÜÆq…²xÈà<4ôƒ±wŽå2T')˜˜P9Ÿ^Õç¶PŸàÅ0µ{• Ksq¤ÚÈÂ@‡9l¢e²…³-<¼ã#JL}4OÔ¨á;íBñÍ@Ù_ Ÿ Q}ß.¾tŸW‡ÄÕÙNïg�GsÛ/H¨/4ŸË$‰yqáÕ~�•ÚÏ®³ýÕp¾Úà=™�%û�£Ãå¢G T¸�OBÛpõ{/ ¼ì-)|,‘<ÝV �>—Ÿy*Àb~\ŒÁ£jp#1bµ²ÞWè%ìhGGû ‰‘ÔÖ;§>ì õô«p& <ƒ]ÞÝÝ}Dʇ;û`.U_‡NÊjÖÒGʩРæµ‡ïÍô†ïŸWùíçÕ (š< ‰Ú�vT_š¹™$Ъ6�Û�ÐÍã jâÍ5lE*±J…†­ ÃÊ]0Þj&M`.Ó"VÜÑÏKï1Û§vÊ¿wÕ rO,Xó¾xh[àk©ã9ôðpþ}ê8¥Ñ™ŒA%F¹ÿôlQ¶cÙLT”7—ä,1‰ÁÁ(¡9é“D¼& ÍÊ÷éÏùŒ`þµ_ù×Ú¸#Qô3I)•ã• xT^m[š­9†“F·»’B�¬ÆÀ¶ó~Ð2™(6´ØK$q’p-F¥Yœ.wÏhwÍŠ›bEœÈ ˜Ndò9t“ yÀßuÞãñ²ˆ¼`nˆ28Ú« +Çš°(/¥pYj[éá".RŽo÷Ap@.‹$E{ÇáÑI€€•ÒNÐ]nôiŒ'}‚ÿ{üOõšk#µvAÀ›˜l¥‹K˜@K²ܼyïø‹‡Þ© pµ(*ܸç9Ô:²[uC'À£ n”¿5bÖeêäŽ)ý=ñÀ“ºÞl&8 àY2Æ%q?Ë-дnÙãºçéÂtt¹ø^ÉHNCÜ3:CBÄQ{2Ìq›J8Wâ댛[¤èAVûÚY)Ø{ôdLe?pye~¾‡„|âRÅP „ˆÙx^Þ2Ú4~‘2ú[év‡ÂXt�j¢bÉì"F¡ùDûÅLpí8$ÿÎ&¨%ƒ2o®‹û¸‚š;w¼«¤˜ºRϹiÓè?È£ë¶ü¨ë{°Ù:8þú~íE+� ³™i¬:#†­/ñï¼Í6ë6\Q»ÿºss`£¬Åa535Ö¼y‚…µº§Ó�9Hâ«ÉdS¬Dû±÷–¾£ ç'ï�—‘¬Tc*+Ü.ÁÐCgy¼³“9à5?Pp »^ˆ=…QÌòŒ`¦%�¸«3ÄÇf.nEsͨ²–jE¾Œ}ǵ¥EÏk2bšáÖ[J>Ý'«jã| %°–SÕÑ6: `.¹¿‚¬#b,�KÇ ¾ . Ý–QCÑma´ŽÇ+~\Û ÔÙë(I úÚµ‰H⃟›¢0,Â¥r1wØR©–'°¥80P,ËQ 6ù ”ðcÑr‹#¶aÌ zs3f±£v Ö¼|dr  ø÷+£ igwt´‹üW¯Â¢œ3ÎhÔˆv5¶EŸ`?%õ8p\9ñ¨y¼,þT&Ÿ©û>}+ õ8~­¡ïlúÐþA~ŸùÙ6S¶ûñ·«pô?6¿sE¿¿¹¾ð›¿oó|ÛÝŠXùwþ©/ºÎY³wûÆ<¬®žê_®ãVÇWé0ýŠÌPß›ßpïY«D*Ï£æßRõ”Õ u1ñ(Ib©'DŠpIæ¡ÈF4>¦N€)D'RŸ>ò;« Áîôþÿ^ dGhàj ³Ö‚§þ„0`ÒfPF�…þÕÚ�üÔÆ)5– }=ëvVJ5rWI„ Ù@s½';©º»]odΞ·ñd…‘kVPà[ÃÌ£µ%­t_ëcÄ´®N4ÒI<êʼn�7èìëßž cp‚6Ú¡òF:q|fĽÅÔ϶Æ&ZoA0ÍÝ'úER¹�OX,/f!„Lv`8PÚàz¥“a�‘ÖºÝÝSèãã¨ÄYOí1f�[,âøÕ«ãýSIˆa”¬ÜL¤)uÍ´m]ÚÀGYíi4êý69±3ŸE£ ýOFƸl¼Ï9páÍQ52ÖïìWFfáïÕëÇe23ÇäNꞨ²Ë[N}x?ßg*>b™PèMˆÕ”§7�ÂDª +óüº0ÌE l@³1°¯‡1+RŒù£Z),9Ô\Ãw*%Ízós¨ù'iIu÷™3˪Mã:æÑ”–uQKÊ;’¿¹P(¬Ê¯ (§6Ù¶~ŽEœ1Þ2g}5DØ«BA`ë=x…ƒ2Å¥{£µ£ª)QÅWK 0±Ù,N¥ m:³¶ )@¦=\kUܾœº–¬ Z¯š§iR%µ£÷.)¢ù—³X*ñÓ‡~÷5I« Ž®Æ´SXR=yâ8ê~å­NŒd [± Iu|<�Àij8ýK‰1:š_Ÿ_¦‹Íh|Í8L(ðØOFÒëyéÕ�÷}†-%ͺÁ5³‘¡l1Q¦ Â*›ÚÉZF–.¡û³) ÎÒh(0φ&—õ’CÎR€U2O {ðÉô„Ì1ðó ³ÓçíŽA³\\9‹¿¨tCGC-V“ÙaŠ�5êùâ|SÙ§_¸¾>š‘ ¸‚© $‚Ù30u’_�P ÿ€©ƒ- ?ÿã‘@Ú£÷f©�*£þt©Œ‡òãÊ6ˆhü7‹–­íYÂd�²ñ�´Èêå+ëù(/:tÁ+±ÿ}#I,Á^Ëi…0 _¦fò˜´ÆÄÿÐ��¼É Ø Q-ó…i iDºÜ^¢b‘t:è›í•1dûi{Ðò´îT•Gj³só(·G¾·™êbÞÉ�£=ÛL^€±dk Š8"ç é¶\$ìÁ0ñÓ³;‡2‚â²a ÖÃ%wó1w Žä° GŸ)kȆ½�«&P#fD­'/Ww ‚Êí]?˜;ßA¼*P}¼ÊsÈ~’µ÷Û â‚¢rf†Û—‡üÉØÇk›ˆ·oଣ!:‘¤˜îä†:ÏéB¬)©‡¼ƒHb0à™Ž13½#dÄÓ•Œñk†ëÁ6›ŸÖïÁ‘=\˲ÐÎ#×Œ2¡ñãy³]ýƒë]”Ðéÿºe«N G0DC‘pb8:,øå°3ukÜf]¶‡;ÑÎ\¥=]gIh[Xüd‚'Ü÷³ 9{ö™…9*s*{¹((I¿±g�|Hä Mgÿ~õ¢BX–J¢eÕ>�§e>DàéÃ>Å(™*,S\Ìþ¡nUVw àÇñ@œòîûÚaà1¶¦¦!;Á¤7ï¬ánð�ñYkWý—p~�ÕlÐ๠S߈“ƒ,Ѻk~ŠB w Ç¶²´Æ ±Ü~Ý;M`ûD0ùºù}:Uì÷Ö’Ù >®ãd:ú™”‡·‹ûUìC„Z¿‹Ã@®–B¥kRÒnAÌ]§J™eI{O†1 ¥Ž€`†1ty`V¨¾�’¤�ñKdz:Ë=㹛ዬhBîº×˦™lºçâòZ�˜VÝ�Ç©ôx7Uåë ]3¢]<êòn±œF˜¹§®E5÷ø°Ó4zÒ`H× ÙCÓÔ_01‰˜°™ n’§ü´‹j°ŒK“´:ýì3îͬ®a[²š¶V _ÍçßËmÐf½¦ç¡Êüˆ-žÊŒcøÈ”C{Ìuê^Ó.ä³cc¸h²–EuI tâ“¶`¬\ÞëIº¥ ‚ç wDÀ± ">Q#i$M²wgiMñ„…²Ý¥s®kgµ– 枙ʆÂb2g§çúÝõÁí¥XY1Ùý(Ш6R° ÃGE\Š]@÷žn¥�ÃʼnuÏ^n°ÈÉŸ·ù¼Q¹AE>>Üx'GŽDE‚Ķz(Ñ:ñ m©,ÍÎкIU°kÅ »@| ZlBâõcK>Šú¸j–Ô‰a1¬‡Âüe ‡¸ýÔGï^ÈEe ¶FW×îÕ¡3™ü`ÄŸùP üˆ,îºã‘·S{ÉÞk/Ú‹q„ºy¸«PŒ¶JÏÔr¥Ž‰ýcjöŠrœ ]Ó²åù@çcÓ÷Oðóö‡™Õ;ö›¹};`Öö©Ô–æ¿~ �ýéüu‰ïØ;_¦¤i¦ªƒ36"Æna�yæ³Ò`˜{ÌHRY\v°B þ®%P" ”N,õOÔIèY®gÄÆò†…pV’OD„3køA™yÇ2Yå�ƒ Ö•ãÎo\Æ j “¡· ¡TG�“Ft„ÄÈ(Õb¢ †töÅ¡º:«Öš{+z©.EEâ0¯°ìmÖM½v”p`ƒ˜üLÀðú^‘(Jb$x <›ñÎÆ9Î1�ômÉÉ4Ϯ˼[VoTä³½¦IÉž:Ãsß©\ädÂØîˆ#”A�vŸà`gLé‘Gt� ,ªJ¯×~ 1./aÓåºK;CD«'ª�Ìßé ì¹ ¹‹qâ?lí’àþ×6¹¾a³_þ¿Iû¹¿%~íÚÄÍ�H )Å\«QeHAœ—ëIp*Q³á³M=Ü ©Äùêó›­^œöZ}ì†õhË"Œ–•Ùß`wšî`%¦ÓVqPfÆ,Gg‘—ôPó-}®LY¶<žç ³#lúIíÒPô~ÐÎú¾C>åÖ‚ö¼�Õ2t H>ÿ*;S+d³�ÊU¸ í­ïˆÁ6†¨”ò…ÝÇ×wø£VµôäÈHÔO•}Öߨ8ê÷0®æ¤Ì•d��?¦Çt·ÅMÓ ýxiÒй^ö±ð H &&BÙWÑ¥“ÿõ=äÈá$M8�7·ƒ†.Ýuååž®ð¢jÂCõ\QÈ8gަJv�×bZño ¤�râBž#hÅHŒ9!.Ä öÊdê‘-`Ö0‚̲ é½ðÖ=õ šd½‡ö9ÐÄ·ª3“5Õ$9/ISCZlú’R£‘š.RúÑÖO~yöi4Ä—„îp¯ªgá¼w.³òùý^ûFíïñYù—ÇUèÅT¿÷oü8ÿõu�U¼Ú¸:Xe\mö,{~2ácZމ ~kRþî¯}ô�ÊNN…KNïÑLIA6ûcð•2jsÙ>¦8Ÿ Ó²?Êô?¸­åi.’DßJÛ'�Ë–ûóƒ ÇÉær-h3ª«EÒ «ˆ‡þ˜X‹­e&>�})ƒkA“Á1uq!K™Uº[¬8f“]ÂñM­FX+•+Œs÷„Óæ­ ÃÔ b\8b ñF•¾,å“2¿Ù·�ÔÍçÈsŽ‹0q tšè qÁ9.µ0wôÂR6i^Äk’d¸=1é„…ºÆë_ …ÀI©HÅN-moïí5iûߪKªWÎ�ËäÓÑW"òA#€ °³z*Ó˜äÿ€.?r¼]Óƒ%¡¦ó枢é7¿2—�¶@mòrS‚÷ÐYlDwYh‚aZ!#tŠ—Ó]ôq\|ñÅó3Ïßwä|ÕùÆŒ¾ôÒ¨ã¾ÏüW?xWûŒq�Nð+ÕU—.ˉ†À;ѦT*ж;øæÍÑ?ž�üŸ]‚Ä�ùìàŽ££3G£~ŒŒ÷x•+*êì¤ílhxV_ÿùð‘²éë†z#DYFÎyé# ã¡ûƒV¿Ã¿¼øõWÎRCC[0#¶eÁ‚¥~.}¨ô‰Àâ�½¤R-Ÿ¢Ÿ¶dg£&ËD™^®Öð‘E ë‹È®ž!)bþ¨¹RR�Ö÷8ª©ßØ ?×ú%Ç«QlxPÛ.ÆÅ ›†4“D;þП–Ë̇àMq‹�AD}ïz‡Ï@´Ì 0o<�zøâda-÷ÿ:îåk*pí7¸ÜìFÚew?MÉäb®šàd¼¡hÕË®ùÒn~¿"}öñÚg¶úÛü†3Ù½lZgt]}?+¼- »® K�ÈÇB` Ù‘–Ô�éÍéN$/? )²hÿ¶„YˆŽ—Gÿ•jw¤9¢f;"%eÀðSZdŽÔ?»o¤�»© 20|&�‚áßSòÂW¯JúɃ¶fâî_TýK×-Ž.7qÄÌ¦É `?�bv·S¹?¥AìB7]×Òôö™™63=H&À lüõ>�€£¸kƒbÑÊÎ ÷C¦5��ФaÁ—ë$‰‘3?àó7ùùüü‘Ÿ?‚åe‡{G_å/o‰øe~P®ôz³àÐÖˆíAó·;Þo¼ôÏÚŒ‚cOX¾g%‡ ¯O¾žôŸèЇÊlLÃ’åCþÏp+Š(Èž€¶†‹˜¬´BÈ7‘÷n&Š#‹LæÁK£½1<M_ÐýeèáK}�s|Ü÷®.×=W¥µ~›lBÑ¿Q¬Ù'l;<ù­‚éµåÓÁ°�šwGÄA]GBY`à¯5ð«­[?·˜Ù¯ˆW›á*¼ª%Tcîäþ dµÒÖ¬U�™!âRxŸÍIÒçTWzÉ®X3ææéL84”K�\Ä ”©+¶±Tøšäcù¬´M`f ÁP tye­^v&cÅRWñ�ˆyzs¶” ä ¥Q°÷ZZ…OÛ±îê�yû õ0ß~Dàü lþ#D4CÍôÝ\ W·æÊŠ´¿ÛWYRc ¯›çL‹ÊÖæçŒwëqÿõJZ§ñ§8OÈ=V}5[w<NZžrHrèÀµj* 0“š9ng¨ÌòOGÚuÂð°,a%gŽŽ1ÈÁW]íÚ'{¯ÔêÂP Të c0z0°¶Ýu™�ÕßþÃh;DP 3x4sD�bgF’hJÚs¦syïì~‘aqþ‘‰ÜPÄSÖ‚—C.ܲÚܦ'“ÝV£ÔŽéâ½¢ûĤتÅ`½Ö8y„ù^­�ªT-¬yÀ?¿2˜re.α¯AK‚ZÐ5© ¯†ïß—ˆaNcp–M«Ãº(Á®ÓÀ`œ,|6]f[bÜ9m¦m½=Ûf¯(éL`BI¨ä’yâf÷¨&…V7ó4�'q¿'†Eë¿VMÄìIo$Ð@.c3MÅ:Ч£–žÒ²”’ æ a¥©¬N:.ÔÅé¬zu!. aŠÊ‡ºbñÌtŠ0¦ jŒŸ¥'mÅ9íÔ¤–Br+v¶˜dé�0¼�ÇK‰‚ÒNNiï“$×#0pœPfÍA¤˜ôX?u%_â+æ¯ä” !(Û*Wæ$ç[ ²Èà\ &\p4W�ÝP+ :¸u„§Â`úF>Xý¢,$døç=¯5kd+rìÜð"Ÿ¿@]–þ¼»cUrT(¡<ŽûJ¦„5´˜Ùæ)òmÄDÊC /º|Nc£G°Q~`æ®L•™Q©*ˆªØ*vç7Ñ#�5B…°¿u–n¨Ïb¯8#‡$ÁÙ¼%2.Ñ!Þ @rN ªÏ{š}‚üô.ôÖÂEao±:5ùl¤=Ü>·vÇù™Ø‡pÑÖp,ç§Šà¦LªŠ�ÇcXISÏÇ«¨–Šè\±˜ˆ\Ú¸ÄcK#íñIb)ÿ7&¦ÅW*ñœ×{?­Ì²„‘@1f�`FƒØsX]K†µ[ý4�)ÛR ËÃ02nëoL-snmà 7�¡Í†ùga:ËÒ=†®¿t¨íO¬ ÚmœTà‰J“­`ŽðÄ0åSñÊ}÷® %=È4툧'ƒÒ¿'�ûgYy¥8Ç–Ÿˆ©vÑé}áXb¾MÛ•–o8½Ç’KJ\p_‘sv³u‚Ì�RZ“ÔGõ­»* Íâó³BG\]PO]\–ÑŸ’¨×&èb 0•Ï:È�h²Í9*ÑLîŸóQÄ ûN9•íVTÛÆFÓÔ�¯*×kÜSèi2œ…gœÉÉâ{lHßåþNÊ“±‚îŽë— ”–Ä ûeè i0˜ã�>îB‘K`Ä ;f‡q€ÝýÍî9e#†À£w¤3,ôÙåH2Rõ9$�A{Œûk+½i$ÍQñÓ ¿® '�Øžêï¿ÿ㇖iR÷$̧JJõrŽÇ8‚ÛñW¿é�`Ñø¿Z'ì…±«™®”º¹�¬ûƒ¦×ÁÈkØ d¥a©„¸ï%: ÷ ‘¿fLR�P�AÈ�5ôü}öE+XKÉNÝ¿#Û±IdÙÂ÷ºF [ù:5­W¯¨CS“î1Ç�û”%CÑ Ì61™¸ŒÁädq£¾œæ£f-O­¿Ôšß�¸m>®´Ÿl=ûf æàÅ­ŸNo"÷tMÎÊÒ&EŸ¯ËÂ{Ýõþë•øÏ?Å}w1¤½›!x�\Ž´ «©owîþ59u®?Èa,”š çdzK*tÕm¡ÏY•v·" g Y§ÓfCI“µ…1�xÌ‹7ÆaE(ó=I nËŠ„¤Û èNlK­ÝlŽ—7'EDfßf<Ñc|ða¿€¹æ¼�u"4¯�.Ÿ%ë.<Œ’º/½9Æ¢')lÒ³S~sACÉ*ò¤æýÿ‰ °Ù6Õƒ¢P• E:& ÅðXÔjž.õªµ;ß ãÛ“ð§@ðgBO,†á°„' n1Š8´Ð‰Mª¿Ì±™b'ßóCªókÔ¢nq$YüÔ¼kiápâ¬Åwx+n*ûÜ·µÌ‘>`ì_% ("ž÷ãWˆBÑP­R,l¹>¶ÿ¹"ô÷M™á¹æ3þ‚ä \ç…íiG³¹á±ù\6ùW·~œHHe¬éÓÙrÿŠ:!$¥–BþRzb(à´ ÷Ðlt ÑOGd�Pгã߀øöaµ” Ñ â ’KÐë�¼’�‚MúË‘—â´?ý”í�aw4‡OiYá ¬�9w°š“’+|Á(ÑwȈŒÊUîã&ó vnlŒ¢IÏa@üHRîÃ|Õ›ÙFk™ÀhÊ=ñçY)Ê¿Y l^~iÆž“hȪ†ü�fåW·#ëÁì²f,ÿwMkIb.WMxd)tË>k{ûÅÕß¡í7`ÔC>xt-ð#Žk�õ…ûy—c7ÞÏçìÍ=½öVû8\2ž�=. \ŸX{´½3s6› ™ Æ3·‹ú‹Ï}lBüa?º+°X»©´ÏëÃ|·Ã ÓöJ5óN�â3mGhtžJ�T“˜m;Y¯‡j~^½½òŸvéÎ’NvåꟂ[�WÇ Çh0´jËÏÒÛÛ·Ó˜oÆçVÿò0¹2¨«d'«Ýwfç;û¦˜Y±e–@):¿óuµüâoÙ½ú¶ô—õË@G`Ç ,eþA(c3XvDœú~ ǼŸúÛK”¢\²u#^¨ w µ©ÏK ïY _'íDâHð�ùséi·e�½1‚‹ÁÁ1½F¨ø@0ªRДðiüç˜\~ì?Ò§3NP3ý8Èjú n}½øßCüe›ì®óy˜$óP2 ˆ¾ê¨<Ü{ÚìÀ λ«l.‡BwÈd$<—ôŠ\ÑÓÂòŸ‹""˜{R?i¬/Yû‚Žmqë`üIÂûë/^ô÷·sæ2ñ0¥˜sûÂ?œú—ÅÈש`dÁìÙ�f)�C‘ü}>U”±ÆÉa#cZe?˜aÐu‰HÙÉf#³e ©FºäUK Q›ÅK¢Jå^Ïì¹ë©íµž_æG•å{SЩhôû§ÁŠ XP~Ìb'v€À´“-Èú40ŸVAúN¿ ˧²ý6Á´Û�;mHoBvx a·0ߨ9f·;[ŸØ<ºf‡ûïÜcSs›cçüôNÝÕÇÞýNr�±šÜi1rå=Íi94Ú³ôˆãOƒù`ûtRÕéz?„hmûµÚ%3«y¡l ˆ×À>v­Æ„ˆààˆD"Bq’•ÄEyïƒ<éÉ]ºÐÏʼË{›­# Dm‚Á¶®=ö‡3–¬€]¶âŠE[êÍCÈ3„és#Å‘ð úÞ½ç£ýéúÖƒ¢æù9Õƒ‹Dô¸=«æuá«m½(baUC×]½¾©>ÜÃ?ý�@s†!S{ì¼£T3 zl†.¾âAåß»¡üŠm›{öÞWy¾²æ¿ÎÍV'”�ô©ñ•VÚh˜ñF–úÛ (àû±÷ÏçŒA—QR›a "Ù—ü$M~‚ékÎ@0ñíäh »S{ �RÊd£ç^ï\ÿX‹OD,{»B¥êiðNík3Ž ”ÌŸOÊ®S¾ùi»Œ¢»zx×n%7·3Í ¿*s:Ó$½f-æh¨³„U>À´Ìv�,äc®Ï5#GçŒ�‰À †p¼kÕ§.™p¥wåm“Øw‡Ó¥ý\»Ó™Ö©ô|Ìþù¹Øª=ù32½ÿ>{ÍBÃaŒÙïŠF îT¨›Ï]9Ť?FJ N9R›ÿý@�dÝÿ"}ÿêv¥æÀŸr/°æ�—2=�âþ³5ŒÁäU]Q—�¼xÒêGAÿˆ1›Ãí­ äi¿ A<Ò "øðþ'¯N;ˆÒD, ÝD—‚XrÈÒß¼föÿ#¶ëññ³¦*%hëæÂÀò‰±dôñ�:Šx\c%R�{‹¥ỞœÉ_K„"£"ôv=ßíÅËa¥_(bì,ñÐÕm¡cèÍ}äQßß½.\à@Ïl5¸ €VÁ¥$í›ì‘`!jkcq:·¨baXîгPú¹€qœ'º2Ì–Sˆ’‡Md—sÎÚ #ûM›‹ûG@|’NÔ‘÷A¶×cÂs€á"ŒÑÄv¿$†*²°#LPo¿ÌG.T‹™¤ZæXâøœ"»$£ B+FÉʵ_ùߘN4ÛLƒ…]³ËB¯Í1†S.©xß­F¹òÇÞ®Jh}$§¼¨QÏÀˆbTµËvKP; WX„ ³Žì9M«‚òŽÜ2] >Ÿ9?Á†æ3(ÉxV6žÄ,müœ,EWÆ_¶�KËCŸ•ù¿uºÀÛì%Î�0ymÃ9ÏÏľˆ@a2z”@Œtë~c¬k¶� äµl[éH…k=„§úS9ÑPVR¿.·p®,Y}}óÜæÊY_�o]×0:ì‚NêCØø:ê;®El}Á­z³UT^vW –k.ó¢FíŸ ¹}�©?gãlz„o•üÙ˜ºh—|-�gà!ãµÚ`ZÑê¹È.¨,9zx¼P¥õ'œëd±VXS„ýñ ºX–#Æê •’YòPyRx ÷‰Ø¤VˆœŒ[gëlõ�Õ·° rEÎ ³ø‰îoõG_x–‡—/êžçÚ ¾Ð‹Izùi˜ ¶±¦ëãüÖBËhêâ®Xc„Îw%#�ÿ ´ÈZÅ ³£ãdK"9ž|¨¾ z»ÈÊŠHr£yÝlˆÚÓ¾Ðïn^ïg³�£ÅÚ‘ rpx /©Q?½ùìóíÇaÜß'“P%8 ™v8˜*³f.b}‰ÞõÓ¡þ¹ ìBu¸i§6íBá­ûf?²  }B1ePþìv´FT¦†˜®ýFÖ_„g®ë—­y–Nt†±t�FqÖ�BøT윹9Á…²;˜¦ò’Çîê &cDœ¹ÙÈžÎúF¬–Þ0`8´TÝZùNçÕ2Ì’- —<'+•^ûM¢!&9©‡Xo ¬,šÈ´’̲k¶í‡^sZgM(IÎò5ámñ(¹ö¬ç�âŽ6Ï´þ³¸ø5áÊsý9~Ö…�mÐËÉYd >5æÎ*‚n”ìÆ7(íã~æ…úšÃð÷yã‡G €Øßl6Ú_šÚÆ«²UnýèlšÝU#lÕ× N=FúùfSòbòÁ#‘«M€F§•mz€À¢¹dȪANR¾’Þ>¶½Ó•Kë-+:�d�ÌÉRQ%DœùÅ\D `Ä9…+Ü›÷‰}y÷¼¯Pj XZë¬ÓqªDÃ×ùß5¢žÊd앵E:-ݳº¶ÌÑ7ë½£–ö¹Æ®‹XÔmîgü( iŒßVÆýu»+–çt¾½„˜çÖ©¢¥¿´#¢àÕ¨3ý£Œ;â¯Ì´ÆÉ|Ñ32 DìôÁý)# _þ”|ʘ}l——?%¡g•‹Ÿ² ËæLG9Ýqs¢�á';Ãêìã(Ç8ˉsºÜN—â—bmÖ`­ŸCvÈ„3Oþôcþ(²j�#›@õs—z0ÅŽõY�u§°Nµ<7<•ßv)§:¦´ëXgZª¿|;:eè�q¢£¬öäO~�íßÚ‰Ušö¡g$ÜQ‹nŸº#­Á˜÷?ªÝ¬PKÒV1]¾Ë©ƒ&ÁÁYimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-ext-normal.woff2UT ëÆ«jëÆ«jux è‡-€ÒwOF2ÁHàÀ …<—l:?HVAR‡;`?STAT�$'t+�| Ÿ/V �¸<�ž- ƒ80‚ã6$†d ‡~�! …[Œ8qƒéD5åãnÒ[ï;6 äd#OoV„ïŒ?Á3�ît*ó ?ûÿÿÏK*2\Z é:ÆÊǯª–ôš�Ñ¡³!0”tH\„fÖ�&­^M‘!&V,2ðÂyÓå%½÷[žÐD‚VêÓœÙÒeˆ•L±NóŸçñ†.ˆVC!T¯ÙR‰‰/š;‹2$âµnóµÆë¬"¦ZwË4Ú›˜ ®¹Ã·¡¥O·:÷ÆÓÞ¨­ô?DN{^mØÓüìÑÌ Ì¹ÊÈ_¼è�®@ÒJ†;÷úÅ´G^µQ‡äØG~`¥;èþÓå†k3ïÝt´E`ÜbG�™Wux~n½ŸKÆŠQ!c0zD ØÈ”îQe¡^€UX…Š…Í��E�bÔ)˜‡AŽ1Ø`›¢³WNÑF@ÄHìÙD™¤…Q`�Øؘ…X›9cÎèU¸µ_Õ÷E¾ð´ÿöÀ=ÑyŸÀ1M ¥`ª……’:)¶&Õž4Ü<ÿFÕ¹L2²²”Ókü @m¿{ݾ’ 3ÈŠ–çe¬¨†i~Þvpשڗ¢9k6¦kY“lÖ¢ DÚR·Ó°¼¹÷E¤ßóÞýÕ¼ðyÞÍþgÜ:w¦.´eŠJÁ‚ˆ±R¤tz{îzŸ"¢Ç�{u¯wgÀº È™YðDήĸCàŒ pè¨~þ�«?W’4M-[VT“¶0Ë>qÿ}_¹-jE´@§ˆU,¥(Œ˜1³Æ¬ ”z"Õ¿”‹œëâËD·¸–Éæ®?bTO�¶‰ bÝ„š°�8x‚{wëÏUb‚ýk�êóÅeŸ²l˖ܦl©³ÿ.¥5€CØh(Ì©šJnUÎôSޏ‘oÏ­JßR¾Á9Ê)äWxØRg—m9¦òÇ´–™YqîıX/‡Et(àû¹›$J,ýŸ©f;#éË ãòâÞUsyœ÷ÎEcçÎÏ¥Ÿ_¿Z�Òj—|·%Ý}Cðt7€¤çÀ;°Ž9|.. ˆ³= Ñ�r ©öë]5î‹;]á2�¡ÿTÓ–ÿ¯8ŽÊ©’¯ò\Q4Ç  Ôh�RähZ ´jÔ ŽÔ(j¯¤9ÇÕœÓì9¿ë£&¥¹�È1”Ö�µÙ^¸¯É.ºË&Þ(‰ï—ÎÞÏå_ZÅ5áˆDøNÏTþ(«c+ÖTsØ{_uë…âUâp{(„Aa<<}Ý@öÍ$ B‰^øñ4( Žƒ/úµþ‹ÙH»]³Cã†Rø=¦–©‡r+×Ö]Ø0Ã,FÐÕòKy9�µ*t›VÛm¡�=>›öÓ¯`0éë«ÛR-(UAAAA7sŸ÷#kú¾hì¥ë²Ëý»Ý¯½¬“B@�ã‘Dê?ZIëõøçÊLÐ�¿C˜èÖ’6¤õ‡ ŽUÔ@y…ƒQOä võ¡=dÈý¡B1×ð¬°õùlNW¬ %…µRnÈj¦«XÝ ÚA·]r€¶:<Ȭõkê �•Í#YÅN�f­=Ø� PØG¯Ô�KœÅ&lø’.Å]#_wò¾é„»IcÞÂÝ"ÆÜ&$ßµJºëɼë�~ß�qp?<÷A|Ö#ˆú#?ê£àÜbÔ9å ˆôø8ø±?÷‰ê‰�ë4û‰G�yMõŸjå�ö�xsû×ÝñŸ»ß»Gþ3éè¿ô*¯¼oÓÅê_}kûf¾ùÿhðÉS‰“oþ?§Ûÿ¯$ÿÿöëþ_ìz‘n/·^lÑÛó’uæ^íÌ}e�Ô}Y[>{2zöM±³oÛü²óÁWŒKçÞ[ºpüÀkޤ¯Î—㽴܈]#Õr1»b>´²\Y…c»b"¤·AcŒ5èúÞ¬ôû-Ç~·mB%w)H@ÎT(¨š:½ò@ ˆ`�ç^FÀ#"Á‘„Ù$ÔÉ'a¹jRë )cÄh&sEúõoÝ€|®Û�{÷K�LÉýr&Ùp¿žhU¶Cÿµåä¬Áó‡ð¥2‹c"ê°2nÐAÈíd�lè‡3E…òcÇòÿ«Ô—èbÙwšèÏz±Ú±V¼6ãâÏhÎȴℜž2¡X›MÇ$ï 2xù±¶‘ü'éäœû'…“ÄIÈÄqb2áLpÒÌøóxx|o|i|l¼}¼bœ?ŽûŒíÇÆcö%þ½õ�n�ÎŒö�þ•�ÒGQ#¯‘`d4bŽ`ÂDÿ؇zwïè‡ú澪—õôÕ½º uf‡ Ì6Ñ>¶¡ÖÝ:Ú¡¶¹­je-½E5¯&hF�Ù`l¢~ìÆ‡j·]GÝS[jC-¬‰5¤ «EÕ©Ôï§2_ÆÊ›ò¸Ü(íeOi) ¥°$–�",ŨhŠ"sù{~•ïä3ùHnÍóÚðInˆýÊ…91‡dadÓ¬—Ù™ŒøÉô_H]¼ÏÓ¹t mL+’$¥¦ˆ$J6É Ñ€žŒÿb ºâ\ˆ�±"$‘!r(E– ãs6P�;Oë¥bµóR‡´¤åF€´KÞ`Ë.“ †Ñ¢Å"Üq?cBGa6n°_(8‘7Ìn¢RùJŽ/’ö«Ño0 Êr8Úe»4¤² hÔ­��-“38s?9yÉ~*ÃUš]›DVhÃß@Ș§ˆ@¥ÔbŠvÀªC1>C¨Y]LŽ]Ç5k¢£¥hµ×ày^Âï„CÇnßÞëâ4í¯ Ü�€Ó?}ƒ·ë«ö 6D/–-ÅôbõyÚ)jøNŽÛ@Z…^Ç,Hyx\Û�1W�¹Èzãßµ;ø³çùUk[´�ÅõL˜4ÍŸµ!�朶hCmXƒt‹0h»êUH‹Ž�7ÄxÖvüú”»µ71Ÿr¯ŽóñÓÇøº�“>ÅV­É“Cc«óïºF7¦; ¶N¢ÛÞ70úƒo£ŒWŠBji¯-�|•[­Â“wsÝàär¿%wªkºøžðìÒuÌ]Xúšè•Œ¡Y,Ù`¤öð5—H—u Ì´?Ù¨Ôµ-x€5õv‡¤2–ˆ%: hå•*8/W“â”n –ÇKÉi14âPÿ¹v’ZÀ[d«�”¹Y9¸ÏoŽ×)W2šZñ„b'¹E—‚S’x*E4¥£_t’Gu¹j€‡î—De"Ç'ÿ©�ùÝ&·s/]É·H!áÖ˜îCoeGi(…&¦Õ–A eZYI– Ž9½‹_äߤ»HËÒI/z`ënn~†(ë#&~açA+˘Þ´pV9ìþA"»TRKßT !¨»e†6›7+��Â)^ ¦-Šˆ°Á½º›»6c^þ�m�+ 7´ÚÔ78P<ÍÜN¾Œ1à„ZAù’=öàý¬ça2†3;LCŽ‹(ôbcV]ÕÎᾤ£WcÚC¦Û_—En_ãIBwËÛžÝô—”\qþ}úäãŒë|Ÿ’V­ køØ\רœ „³" « zåØ~ÕÔ¿+/09žzŸ:kB¡ ;¨[I•“’y?Ãð]qh¢�;_~J 5¡Y0)çÌvñÿË#WKY�¹ÀøärŠi‘f'NQ‰·%ì› 6íæƒó§GÀ¦]ýµ‚^á—‹²1ÌóuVß{ÃÆŽ¼ëĤýlkÔèù‰ûæú „î4¤æ–¨Ã[3 h5Õ‚‡ Jø›ãž]ßá¾~`{O£l— ½õÃGÏ U¨¡aE¥œ ]Y!îúÒÆú‚¨©ˆX†«ÅîÌLxI®«Ké‚e/5œo>{zêÍŸv¸ŽRGõ)Üê^ÔÖ™î¤y×ïùàIUјôn-ˆtG„ãj@•#5aî5þªw„")P¼×ÖH>ª$�#-Uåè–cÒª$ÿC³sócúç4ÌŒ÷Ý™©MxÕ1h×ç4�ößm¾&"caø¹0‰¡!.tãó Ùáñq¨õ:ö ÿk2ð{çmdÿ&uQ5œpC@` DÝo\Œâ߈Á~ aø;Lðþd8üþ,Ó NÐÿ‹Bôßp Ö®p…=AH×>Lúö£³p°JbÎÈ!�C&‡p9|8.ø‡ƒ°GÑÔÑar´X;�úq¬‘p?ïÂñâèÇ{hÄæ“€Eç)êA¸1r*"è§ ‡Þ©çÎËH?ƒÂÄ™`‹=çÄìœ ‘çŠ3gF ˆ�›Å½3ÁñP;Ü“3ˆg{„�ÚíÆ^…ðbðFß%àz‹\ š„.Ç~>œÃAwF¢Ñ³Fä ô†Ã’ì²Íê­°Eô6œ×}û÷?îÓàoòE¡wDãïc×^UKßçûûT.ó�÷xrøç̽Üú?TrfÖé³úŠÏ‰¨8g`ð‚—@Ó…»Ý]Ój.,ªº$åÁ%¯ór¡+Þ\ü+�J®ZAûUY…ר-_SUr‹MíÃ=u�Æ�šýÏ¿ˆyo‚í;wâÅ#ÿ�äŸ_,øyùrô™’_¿Eô›f·üfLïw=îý#×-êJþó�™^,ÿe|ë¯Íÿ~O篽­�Àým üÏ¡»/>Öú7ó{þÓx쿌b¯^ªýW?¹ýÿ…÷ÿ¿·ó�»^ _SÕ/ýzôÀþG¤éýkR½éc“ß8§—ßÏ Ö}üf�yÓ{àù§�,ò޼2Z}b£Í¶Ey€ÖÇ­‚´Yï;ÃþPþﲉ.[b´îÿm$ÄùÔLíAÀ–…-9"`C{Ü6²\ÀÄn ð�>ßÊ�¿¤úKùÁþpÊ]°BáȰNVÔ Ð'áY8t—/jž€:bðñÖßxk…—N­SÉÁ�Bû5‡3d¿Ì¼–L‚f«ÍEì*®ôe½¾Ž€^¦P©3Þ^¨0(«ÊÚ²¡œ­¬%¢Þ>>µ4•?ËæÒñ_Š!9Ô^¹@~6ëb·T²D~»ü¥Wž{Qè" ¶çIš6½±Ί;‡Ç•@@ÙþËÂ<çGœ“ÛJ+ùÂÿÇo×êa«Sä¼ ímc?Ó¥Ò>o¼yBº­I·iû¯”ó÷÷1l‹ 0Êv#€#æ• øzwO™“cQÖ j¤qݪBÚÑwWÇLº]ÊjBb-¬wó—«J¶:±õÊE !ƒ½Çù»î–^=_à MÜQà*ª|ªK(×Ô ÚÁÚXŠÃJÊ¿ŸýíVA%pü2Túe¢¤X Ùí¿LÒWBÒîÒ† Í<©a(§WÎŽ“�t ëá/«¢’aäÞ�ðoÂ�™�Sª– “ƒY îf"¸<äwAÈj·º;f@Å^stÊnçkžZQ«jƒª( xo}u‰ÿ Bø‘brÈ(Ýà/šM]EE"N÷„ <£ùýXø\Ðk=2%üÚ©’¾¥P…Ù·v*.ß>În54lP§éì aÃY…×ȱÀÒ’Û#´§´]¤½¾†áX±¡±‘ïÖôÔÖ^µXwJ3cÚµ2¬-IgXß@Ë<Ìí*qDcˆ…+/ ¸b±{oxޝ+µO²‚» BøHBóœàˆ€®H/$ž/K~ZÄ||) ¿L=r1¹˜òQ0'جð}ç˜CåŽsˆjÓTM¬–#èÅå—~¼ ­m%Ý_…<À°¹ö«[� ^˜ö-æ€m'4¤úÍe×Z¡æç?›w^[dž[Y(�åNÕÜ2\2azeWwÄ 0�·,Ñ£ý’8ÝÀ({ô+ÏYá ½Z—­â¹¡²ƒëÝjÚ£ddÑ1PÐp¯‰ád[¬;ÜÁÀŒM®:�¬‰b r±I‹ýRð<÷c>:…OîñiŽî’†‘ÕF]Æ: LGœ-0ŸáÚ³75§u7áâ œ¸*ŠÏ/qâŠ=] XŸ£åº’›ÖdïäŬ³Z<Ä/V×PÍò^¾É½e¾Ùi;Üì(mÅ••3llÔi©Éd«Ü6ø˜=mÇIÒB¢.1£àìb¹ “Z=±çÃÄkØÜb»)~»¤×iO[~C¦ Å“á8(Q„é%ŽAЬ$ò‘ß6_©ðã`CJ(´“æˆ~ råTœo�b³­ªÍ9¢Vs…= g—­]óÃÒÖଥr'} ±8�`e2µð—yFéÚáÛ¹}ª…“´YY¬³V¦³ëµö‹äÛìë±\™!ꀭ3²ŒŠÌ0!²,ŠâÓr³(€1ˆœõº1uø&nÁGLF 1Á(ï 1ýF´‘>-d‹sÅN ™8âP• r½RÉgÌÃ�LyˆÎ°M\?Àå€J<Ë›ÂßyòÊH¨øGV¥^uå`oFF;U¿ô'F_hÆZºÀ´$¢ÖoÛO|þ¿žb¤’òžGœ”3 ]žˆr¡‘è2¹¿žêÓgPRíAOŒ¾'õ§PrF̼gï/W|îXû.z?–Á�W§Ü]uŸ­"혅«±]c„ÿ«ÏaxÝV70¾S¯$Ì =—œËæ2Æ#B ® ¦÷À ®Æòİ«b#Ÿ¨}¶ô™±l‡§O^Oõ5ù([#ÝÆGjçÅ—Ú[óUkQ@ðpƒì@O-äbŒ¯¡µ†æìêGýmo–€ª½‚<ÂU|§Õ@ß Ëø^s-(Œ½"‰ð-C-[_HUnè›e D‡À#¹Î¬£¢­ñ¥ÿ .p-–QŽk–oñø3ÃGJ�}ôÍÅ…o¶«(�œ*€wz`d°måEžG�ùÁD…Ý¢¡$p“ú²  ÿ„9 †±ŽäøÀ‘–9dUõ @{naeß-aeøÃÔ ü†O�[,ú´8ÈŽDd*ƒ´ˆÞäkYèxÛX w0 ¼w {Ϩ}¨Ã ‹|5ðæ W1is U B�5dYÆü gà¡Í ›-b™OƒLE,Ûï\�õ&†›¡Ñi8â{†ÚS¬Ãu1) '“$[ùcG”Wö- Kª[¸éø‚Ÿ-ª“ÿ}”CkÛºã¶0ydáC¾y¬á-»Zæô@¾XD­ÖC|ˆ^Þæ}#ÿ}]OòÀ±Û€gÆÔu©ÄkB½Ö:É)4S5{¿vÉŠ,§G2§›Lú'£¢HG(«p�Û”í{?Ÿ¼`�’Z§è~´4ùŠ|Š¿"Ÿã/G£º,ÏŸ¦lÈÖR{3†óÈ^ñ'ñÏ÷–s»¬Íd¬ªÍf™ç÷ÖV!•ø2Ѫ;�POw2ƒÇË©þNÊKÐ ¦œ…¨™ï6r£€FÉþ“ÇËX±}G׳­ˆua�O%é@YXkfæ­’o+â–œPÊ™3¸)Ae§<¸�Âëý*4µ»n„ó6JkâKL`çrèž~¼'þš ©>ö9Õ-ÈÍ[ %§7ð¨€5¤p»l©K ´¸ô³z¥„LžÌKU;Ù*•†ñy¨ªL¸@”e¨ëyE‹²Ì¢â€±ïŽyÚžõnlÌò ™ìp«ƒ Ó0[t}ñîò[p(üNP[# x2rc€£Z5 {z/=+ˆ¢˜i®y,ä«uùJ°üݰW²šR·@ìk­1�Ú†âV±Á‹5ý¦”̆Cwëê\¤k� ¥=`¤Y ÈR(ïB븦Pnàê¬Û`¨$¬`Pªù• ÿÂjä¿P·â/)ûŒ6§¢ß¤pŒ.Á&�z߱˟ðRg';xåF;úþ©VjµÒ` "}3–U×05 …6Ô‚$WÀtŒ$ƒ4x:äÿÄ{ONÁ´5 3Ó8¥PΫ‹YT9äb=6µËÒ¼\PƯÚ�,Î,qb íÀ½f6(ðU‡ƒÊÒ×é•|/ÿRX°^t§ßD�Xde@'0‚ÞPUÚ/ƒ-M’WÁ™¼Þ®¦oñ¿š#¨‚T›×ŠÒ¥¬:ï¬ ÀÜ)1»ÖÃnØÁ×�÷¯À'!k¬ZŠœHmJC¼Ýw€#×w�µs£ |)h  jr5Mˆ—"c7·)Û÷-PÃÆÚpg…ÌdÖ0 L%‡ $Œƒôèå ±¢[·ËÐ _Ç_/o=)üvføà3Uâõ¼xàôP¿Ô“ÀáRé2¥ìRðj" ަcµù5�sŽå^),ñsíQ‘¹{âWh+23̱®a¦)¤¯l¹ôTwx�EL²Ym°iYŠ.rüÁGÞÁ™¼ç_ªýü›™~sØä&-ë*Ap-y=KË9wË62ñœ§„†­–ùÖëü&d¨oâT-¸SšÒ¸X§bM%~¼¼^M©(t¬wlò�œ‰¯À–sý#&‡ Ttõ¹æó a1¯ðÆéÒÍ­{E¾¬Ž—«Ž–]©Ë¥\ž‡*=Y–:Äà‚—&³£BxN +O¥öŒÔDæFL£¡.�M?Ôì¸sø�Cóâë|*amR±òÚ°Ó¡@üÒœ°/†Z?êÇ*/–ŽÓ_gó ®L‘±ŒÙ«*ªv,а®Í©?ÈÀrL õâ�Ñòþ~ú¬HÁAÚQF¿7¹«îÉ‘È΄Wå ÞÌvœtÅß_šö w iT:goß¼9qìÄìÄžMuúð*]””Kþ´õXIÛã¯t§$_+¥(k¥›IP vÝ8Ê�ØÉËìé_Ä»Óù‡©ìaÎåYÙr®©oéžIMLA6Ö‰a¸{3[náL5æ´á¢z«ŽM¤ÆœÕˆdlÕ�¼ÞúväD.i¢C‚Ã"13½°‚gFµ€æ�§lÖJ¢–.ˆïþ¾ÿ+g[yh® l¾9�°È­,``á]£ã[FUp�0„ûÀ+°`AS 2Ãæ,•Œj� O!³9 6ñøõpü ’køÀ¸QPfxfˆÅOaõЧõoÿö(߉± ÒDˆ�^Ëúx9!c/ôx×/‹3ÚººtësëŽÿ¬âë'<óí/�H—$æ%ìcÏCî0‡ÃÔ߀왦Á‚þêbQ!7‰×�F}'äàú`nð X sAWHñ1PH€ázv˜³ÅÍ¿Í<ŒeµÇ«A†pé 6Z‡K¥Áù…˜˜ã9“-°ž¬Jèju‰zÔ’7–“’]ڸǹv"—,p^¸ÁÎhñ§Áa ÊÚbÀêT¹†?ŒçY£1VtiÂ�öº†êáÍã+ìJ’)”5à 'Y±Q;؈GÅÝ|ý+æÀìd¾(†óÀbÍ’«YÚèOÈ [~ÆVdÇBdÂAXr(Wˆyi©X¥,gÐñËo›Ž÷“«’ZÀf 2ñ$+"<£úÂf‹àý§N{Ð_�͆/G+Îù‹còQÊ€`ŒCeqnsÉ¿àª*þñ!)ûÓoIáßz<¨§ëw,›i½îfl»P�4‚êøÁÇ^Bk7r×%mŽ¢·nQâʘ±Kâà¼,`/c)|z<»Á4WØŽ§Â"i\Õ3#¾0ZõüýËl°f[ín9A:©s¥¡ShœJ`‘óòcÈ >ž°µ&5ðÿ¦dwÕ2döšÇ̵ ØÎ¹vXÙ¹–è±ËMŠ–U›*Y›uê²–u³-w�Êï"S�½NDN@(êM$Ф6÷±ñbåÕp°ÒÌžçDÒª!¦6Wüa0Í[Jï‡5…�J5Τ` ê>õŽìþÉ�ýÃÞ£ªŒ>RL—Ÿß7\j#×_ž�;þ@8:vOsü¬Öï®�=lˆ?¢è|¯ôÑ‚NZ�ý˜…NIùY5½&ÆöÊäÆ[.¸_îa¹Ø0ŒÙ� ¨I:4)/{C³ž›’ä×i‰ƒZå»Ã×l .Ã2—eŜДÀÐÆ¥þK¹é)7ÿÏ[{¥ÿ¼å6SÛ r¶UÊÅ`‡Ô–�Aq¹>2Á_ WÑÄæƒm”¯ÑÒÐú éó/2 ñúDu•-0ZàÅWï”}J*6w­œjØÛѹQõx¡½õÝ¥‹-ápzpõ^nÜoÍ1ßáõ¥ £±½p_½FªÞ4©ç]aÑŸg¦3%ï êË˺OëÄ"êMYT ?à ÃCâñ>e†ž¥S´€Éê‹Ck•yåE9õÁ®³Å.ü´ð’úå¸[% g½2ç½Jˆ·Êç¸ÿ|,ínyR–÷�½Ál)n£!.-µ1·QZ‚[mˆIïyª0vÏ|Î%À¢µBreoX€è/rfAûoáLfs9Ú‚ ÐRF­ëÊ0Gæ;µk*³R­\ô ¼­,‘úˆ„• \?ÄÊ’¬GË¥æÿ<¸6eü}~¿…zߤÉDõ´¼±°�fâm\¶šË:4|eçÐÑf³NÖk¤èuAYá=vÙñÞ¦ÄDv«#›Ù… ¬IHHlù�:,µ$KhÎOæPº8]ë|wý]fÑP >Ó†qŠåçÖ%³.Û›Á å1RgO›Û0¢Ðw�^jJ¢X7GðýùG¬ðPàaw²W€Y;\ý&Þ-É{ò�¢ÿÊ}9ÿ4Ñy£¶ñ#}vexeö_�Ði�ý|ìqiÈĽ�ýùèÀÝ$h¼èøJAEc|µ Î�õ¢•Á}“'¬1`áãIü×s9µÙQZ IÚ 9¡ñ…Ëèìt±>YÏ¥­SkZP@#‡Œ‘Á¶-JìæÈOG‡o k ÀU"0ü©âZ£ä?�}rvKL/û±Òëˆ<3Lcɸõýè´³b½µ=´m½µâ´MþtõâåÐKô‹m]Ô~XóÂD»†ì�åÙÆ¢ÂM vWÖ]½@ãîƒ:“&Uìîå6AÝïÅwnÖ]ª_A‡æÐÓ†sù‚3x_{JZ»;kÛy+8a|äè|¯7BB‚°Qu9Á‹‹ËÌ^Œí¡*4 È ¾]?§IR™më¹ –'CÊ#9£©Á@ïsZ4œÃ"Ïj²å©ªGɆ~ù¢šf¯¶5šntúðÚ£ÕYì˜)·0§1wÓ4ËèÂ(ȼe‰ïv߯³Îfmÿx%h}ò̘ 6Šš:Œ(¸ëòlÆUü£‡HdË3ÂqµtÃÛ&©“’ñ'¶hò½:ƒN®¼/˜Ò¦�šèªSºLþE÷Ê:â5ɲ[-7äÒBçK fÐA6Ä=àV«�ML;M3YýÃêEªöý‡‰ZÊ! ñ†{5°€ä> cX&Ï¢ÒøH»xxÈ©’nVÞÞ§Kí|›VüëÂZå¿ß4œõ3£Ê{±ùE]h�r™è= )$NxM!ŽùZ�¶¹90#Ï£VnoJþšæÅÖ´ŒW¸�hÓ¡]59ìǩә–žDG³hY†©²´#ùµ„k’’R*Á‡Çïæí¶XÑ"÷÷Ýoh+2Ð á!·�Ñ‘>ÚeD �g4(ßgw¸±r~fh¸YJï:¼M�Hƒ�Œ•ÙÔÅë¥:ìÕ™š$£ŽI‰q$Žƒ _γ‚kìÅ�_ûÓ0u˜ý‰ý¡º¡ÃWn|‰�9›µýë•Ê»ú»›“‚ÚHzê”eåY=̓Ç!‚'Ô£Û�mÑŒæ Jçã•o‚o�AQV)Ö…�ÑÌFo¨!ð7ød“³Ì³èÉ1æX ûh]ôïSc¿‚{’?X‘ 1õxÝëÈ”YT1�´p4óvó–T öjaý9�¼¨1mŒû3 &…OKŸË�²ø &НX*Šû,­kQ] íÄz�›’õj!ÒµaCM´Ä>l±!·¤��¾ß™ŸSµww¨Š&“O4òˆ©NÐ$¬�®øL°ƒ]aFûDí}âØùg©Ï[žgo?×Þ&ƦÉÕ‡ª£ž»ö©ºö¼Ö"úÀȬyø™ù³JãM­*ãg4Æ'&šõÙ’þ^2-b$ÁØKùœ|ƒD{¸Æñ0F`õˆÚÛÄÑ‹oSßµ¼K½ôvìÊ[ýwƒÄÁ›Q›7bÓd+Õ°š^ß…ë€.�¯5ñ.æTÑ.]?veb%6ÃÍÖ-ßž©¿®éw’“¸9ר�9wÚ>ðœ>µÊ>ïYJd’â’äsƒñùléð8Þ‘ŒH·KÓS ')Zø[8lò­Mém¨¯‡‰ƒOz³’ýòÐst´Í¼Q—*ºã«d™`Ž™U]ݨnÞ8ÝaU?9vO ÃQ‰·]š¥ M0KÇ:O&ÇÄF¯�9�d‚Tæ·¶�Js'û§n¡ú¥.H�«®mø’wýfÝ•:Ëû~ç–ç­ãýì©ižÖÓ^‰GÕ)~>”9Š\Ž]²0ÓÙÅâŒ7XíEâ]M:àªW ØQI™ŽéG ô$:ŽQs•Ú(bë�uDób‘t:j‰õ¢«K*–yÒ5Òîå%hÛ8'ž3„Š„…p2 �ÂQ«õã*¹uäPj19›"„‘tKÿʆae·q>X÷ \儨¬pÿ@–ƒ“�ö1zŽé»Uœð Ù—á|}Z¢€½Òs3/å•BïMÅ/ï5ð’ús9ÿ}äw7>åóþë$ùÍh&�Síç.–ÎÚ*�$®õ“dtwO åCÚ$ [;Ä_6õ:QÀm­M¨ÊüŒJÉŠ–¤9�$©ùj†|9¥c&$O§�Ãa2ª³þR÷øFWcI•lãN€÷õ<�­á4šˆ§ä´©†ùa²U�jUlË5ÝXTF°¹Úê⡃Q`ÇîKv[×kvÛž‡Êè>EyùÆùãK2êÓ§³!Ç7…­íkBÆñ³+Œ#ku-m[ ¡GS“? p0–fˆ@®ß¶D{Ê›5½…3YÍud–%Aa¸,}æÊ0G{M Ñ·!§Ûáâjå;¹ ›îÿ·v—žÜyª)Æ›ÙZãÍöf´þÝæŸ¼ÔêùÏÆ�›y|àq@Ý\ ¬þᕚ§ºüü¶k¹®ÿ/Nß­ÿO±út'ãûÁ�ÀŸç; ¼”ô»™ï×êùª…—mìÆKŠT6jãßõ¾¾ MÛZß--VYkˆ}=Þ‘b7–’ ¼×`iÝ8Âåß:=™·4Ro…˜>S¦“{×Àø®‡¶˜<ï«eïœK±(€y+fýª ©fP3‡.çP,¡ÿ–6p3é¢\ÏØ‰q²µñ�C*雞ûk#/ðÙáxÅúz —Ô‚¸€,xoèìǧwX<,‡*-7 0iˆ“«ã«™æ8ÁÙæP¥eâQpGÅÏ%Þð²àB ‚”³S¾N8>2†S¯¾t#±†3éŠw&8ŸvÅœT5°Caílâܼ•pƒ;ÚÀÍÐóZúRN÷ÅÌx0/%®Š•nÊí÷Q]³“n9 ;ò?MùËÀ„SYõn7ø‹±ÿo*ʱÉÇ‚—¾Æ…ü‡û‘†Ý>‰ÉŽDŽuQŒ÷#"ȪVáüüjÉ~ùÃ"CšÆ+û¿’ ¸ŠÍ²ØÿÓÉ–Ö§QIv¨~²‹Ù^t)å¦)ÍÛ€‡Žš²òv¨‚.â�`!éðû†³ty¯?Çîµ½!Œ”²—¬^–ˆÂ”ÏË'° õ‚)=�“U˜r°sFg°÷J½�¼Ô�êBQ «¾W¼‡®¬Àï7œ¯ø÷C–ŠC†t²ç ,Br´E7â@bWŽŽhÑ5Åu­#rå@Ä×Ù`‘[¢ŽøˆïÈœT@&‹'C‰ñÔµqAë°½„S�•ñßÕÐ%.aFÊŽ’¦Çx] œc�¦°–y ô�X/¨õý‹{Eð c’̯À2˜ÑálBó!¨*rm„R@2Òȸ;ÉÆÏìƒzLú éa:.(|‘c—j�Nû?ˆYú|�[Ñ‘nìYKºÊš>Q¡ø�§òÊGY|JÉ=§ë¬B7X“'¢÷$&l9V)6®(3wöàY½^3÷øÁKA  yB‡äi`’ªŸnJ¦W Üå‹A_}€tƒUy÷U§6á©féLuO ¯+_„q”Ú([c)o§wÕçMHÈÔ#]¨)'xqùìû³·[”õïŽv¢ˆå21;åÒ|8a‰Tù¸½2Ìèò>¬�ë nAöP¿¡D HƒÓ.{ZŒ%“PÏT——ʤÁ¯¨µÅ¬½U.!�ÄK¢ÁA²Ì¨ßôÔàóëø&¼æÎ�¿c–r.Ê>QmˆìjêZW»%u z°º(¨� L·„¨üJ –h"›Öq!•ÑÑAÍ›”Î'=��?Aڈˢö€hf�7„`s¸:çRªszG$¥öœKÚQüu·1¦@]ö BI®ÝÌ[ ›SG*›Ag‡4®Öî^¶?¥ì_bâýáˆ'žb°)à«R­_ös"µÁ¸òUC{<ø# —Üé]0nJ9&•1šZåïvZ¢*p^«ŽÊÒüåŸÕã�?¤‚˜ÈÞo¹é€Í·µNüo´r¬²£¹£ d3D¬ùTôløYOQÏK�U­yªÂ·å\}y· ‹©?â8ô=h`Œòiû°Ï¯ ¢]JvP¡ÚHÛ›<5Bh*¼±š7”þøIØ–N¬ù?÷–3œxÇÍþ·w;í×½Œ|ïT�VÓ› ]<¿æê­ƒ©k‹09Ãûb",^zÞiûAÀ’ê�5kºKÊ|*6œ!<¿©â5©~nø,¡¯¡nž¿£éSu�—ÑûòUØñø]»u”¨« øln!&Š�w•î)�NÉ‚u3F2 €—®[t‹¿ÓþhÍm £´³ÿÙõ”ù:Á$¦$- clrÑN�J4p9!/aëÆ³~Г׳läÛ<VîÿxÈø¤¶¿DËH¼§ôŸÍ?_5ý×+ÿ¾TÖ¢Rx¼éiÉi’sI’ImÒa'TÁ¸~.·ÿcÔG1Q|9êòðrŸ ø|n�´¸Ó§i›œ_i2§¨üèÚ°î} òΘï�N—±ïú=¨oœòyÇ ÷÷õ¢jvhžÆ|Û�| |H-:¼q.'Ïy9³à42 ‘)û³q€ee ˜ÿ5†zA|÷”Ók|ž^òÏÕmö¯+™î  ‡M‹ñºèÜ¢«·Ä×&!^òïî /ë.‹‰ð êhþI†gõ‰¢d¥�?¼Ô¬ö7];¬Ûo~¢ð¶÷[¬xÃïØðGA€öâ}lÐÛ´®�¥dÅ=MMî±}V·›-÷¨´äç뀡œ2Ú�-²;ÇÌ+w¦Ä‰£"~_I3öDZyØZEj”Ó˜¦3¤F;œi¤ÐfÉTo.Ø�|ô¬ÜÄp¨òå­lÌ9!;K�!tAù,äæ’ûj¼ƒøžž½¼š´ 䓞(E¨ežŸ…‘�¹W5õŨyö4¥ü»»Øq?³mŠ"ʱ@ÙCb½Ø^Ý hZo²;(fפ.Ÿ7 Àr¥Ó~¥ì”ªšC)QcÕ+5Àí_a Ô(ï‡ßjn{žú˜¢M²oPذÕ¡üžrZsßS³Á㱪JêKμús{y…ƒOÄÏm-–0ÇU!ŸsrèV«6«çª9ª«Xt.GÕt°S>ÍãQÒiG´”}H3 À˜Q‘(\n튫ÀS‹@/‹W¥ ^¶ó¦òˆ ðf—ð_%½M\î•åö-fïrx™kU7:Á h5˜Påí2ÌS&ÌÒu¿uU…`ÇLs*¸�aTÙ#´ÆkÔ "Qü~1Ý{ôÏÒ÷ä)¹Ñ™é¦¶ájVlx´¤Y y8Ëéü#‹#ÛæGCÓŒYe^ùme7nšS�#ÌÝ4Ë4¼8 r=så¶ôl6ún¤±ü©ÌOx#A]ª•°ýNºÎ#ã¾ûúÃ=6Gžš' xñFŠèẤ‡0‘äD?óס±Ç~U­±"LV nM6¯òGÏ1¸å>£v77î )ærqnm$½CÏW¯�ª7MÌ\ÅV”{ž?TìÈÊ:‡{Àÿ÷«“.@­2íUNô”\¹•U^Ú#>Ò‡�ræPà"ݨ™läí˜ï?´/“H>’1§ôc²v¸‹³çØÁ¨_GÆž~c®3º%—Çœ+aj£ÿü)w_¹“ÇùWK„ÖëIÄ’ò íg¨@ɚϹ®qüØOÿÁ!ò[¡˜úsëàErvOí|Û›5J`-ŠY`»’—ç±XÉ]uÎpÏ8ÑaUþi»ù:6×àÜK#t¡Ë÷×£Ì÷DÐû†» 0Œ_q�ûRm#caÂ7|¤jGDz"¹tñI›Ä›¤âϰжÍf•ÍîüÖŽ&é…ŽCŸ+Ò4ª¼6yѱ0ìÑöº¸ˆ‘iÜyœBÅ^ƒË™š)÷*i¸"jùÒ£…ÙS+$%IaãM!'@ë»tA÷¦¢™‡‡S«Åk=Ç#½|-ÊÎ<›'|ÈçªÞˆ<õùÖ=žºÇêÎ×ÿÌ\â ´qßt×c~Ÿå¤ºs@KM¢82+÷ÌÍ îñk‹¸ ¢¬·m·©löäOÙÒ)(ø�0¼¼Ä—+Ìžüõºuš7 *Þí-[Fuñ&AìÍ”ë ý)¨ë©s昜£T2Nô0ÿ¡]r ìú_€Êf‹Êv_þÔ¢®D<†ú[Éé«ᆮ×ð¥Çв{/šJÅ»Ëp¶ jT­ dÌ$ãÛ­ÄǪ°BÕ´Âß–a d*•Læ«Ø3úTkô¾w •B�±ãRqgwU&ÆiÊ¢í/q½wäær|Þ`­åOd~z_ [:/¸œ�ùR^Ä¢¾^ÌÖ8òö‰îY6ÏÿõQFŽñR!o�øë¬›z ãî³ÇVqeÓ¸€²°Ð˜ì]ǾàÅÁé6¸=�Ƚ,)”}_¶+l(~ôGÞ`ö2 iÇ€·l29ý´À.vzlã*¶$-ýâÿ‡5|N€�ŠÁD�?¦Úï,W¬Š “(ødµ_JÄí'ª¡¢ëá×í2žúàùpx£Ø¿˜êò6L­ tÛt–³®ëF�þu}q¢Ãw;Êr~meÌv(‘ÎtÖ³¥Ô‘ºÛ KZ±œ¬'è˃ɱ|¬1+bñLmŒC úìÂѳ™_^@B3Ò�y ¡g¼n*©±¾Þ³tÄW·QçûõMnü½çl}úíŒ×p~§dÌ�šT;[ †”žwÏËJIŒÉÊÍúmäõÈöþf~ÄŒð…–6]�9[…ì«J¿ïÒÞ‘(ÕY:íPËpË.p«Ë­ ƒ¡Z€ù!mü4vY•Ý>ÊJ^o]`éÁ¨ŽeÕÛÅ\ùª©®õE÷®ožY€×õ£®2ù‹,1Mõ�÷oÕÞl­Ø‘؆Ü(=0�~¿Ôt)8~ ¾uþt�ºœ„ÞÉ 42�;g‡ÐqÍJÌ«¸8ü`÷ÚÖ¹àfsv¤C' p£}ß ‰¾Pµ]6� ̧§õäpg Þ6ô”¸:ì˜!L‹œ9õêu<6#àâR#=£¤Ò*$ÌŠ”È)­°"D™ C#j-ÂCk�©Ö9Rd#ò-0dÖWd•u’¨9ä4’@ÏjWJ†‹ápÝ——Z¯' Ä·®L4iÈžÓX�JͪðÎtœc2ÑcàÄ+U·ª—±!ùôQ~yÁ9"ÅšžÂmÄNB´õÜtdaH$;5HCÄG¹²©ƒ"©An?�ñ¯4‰o­Ê«û„RŠiéôV}w¨s)~ñ´�·+OÌJKNáñ/ŠìÞÜšOŸñažª^�sgõTzU[Tù#š•^U'Zo�œ#V†¹•s 3Ø ùUÎ"|BQƒ n°`FØ4±!• ÃŒKÑ"X¥ë"ƒKµ™v˯ådÐY Ȫë5Wï~®¬«» X¤µ©V-÷Ü×çÏÿbåŸ-l»°2«*›¥ÚâG­�⤊„‚‰Óup7q¯œ›jŒ6;r,ËYÛ¡h�SóøŠ·²¤0¹ûHà‘2¼ž-âœ}£ç|´—¿×ªà|V¨ýü“cp&Æ-]r9¶Ð/(&:¼ÔÂþ6­É³<²¹–¯užóêm§¡NhÁ1©Ä}ïÕ6ÅN‰{ÕÂêó¹q�þUZ[¼8Ó«çRaƒÐ =@x­)›Êï>¥áš1ñAÌX[ÿ(YO �‹Àç¡'ÄyÃý%Lñ÷t|<Ì!úõ×Ù‡}âvuLl=Üau­¤óÊv ¯² 5æxòÕrüSg™Þq?ÿÀaÇ �ç®ló—äL|Œ�?üWòMÕ¢ž¨´ùÖ¯3¸tËö¾mû7nþGa‡o´ýÎÍçèÞê·µ~w“ÊóäèÊö=ý‡-´Â:}ýlÅfóêž{µ·Ãfk46$sL8ÀâžjXÙµ¹­‚:.ýQ2"·¥¤Š@�^Ž«Þág‘U4ÅÛuƒm-ŠDÇ !�L&xU½R£Ðt%ÒDPÝ$Ôƒ­&ŽŠiô LFmä)ö;3Ø»ŒM6Óª°®˜¥Uļ¤ekÜ%wÖ€ÆÍÔn'[Ñøâîßw�l"IÇâ°XzïŸìÓ¯ö|Ô�˜ ÊUû>Þ-†3™xTgåöº]Jëâ™:Ï:ÞwµÙs:jÛœ)„ëm¿ÝÒį‘gÕì_Åøƒ_#|²è jm…û¥kõdïá�¾înÝÓ£õb¶¶íú޼rf«UKŒqfŸÝ?&øh>@YU�8�Ç §ß÷Ãs~©twW*{ªÃvõ›‡�´÷‘{\{$SA 5ɶä³á8žÎS)²j�A5ÖÚ°=¢ÙgkïøúûÙ‚6µUÚ?ùz}yß—÷o} F«WãæÔi4“5dHÀ܇«ÙÝ&^“ôÝ«“)Єg*.¶”Ø6uIH�Áâ¸Bo]=ØÔgq—&k–9Ô>EÏi,÷6öY�ÿ…Ú»hV(ÅàQ2Fcfõ3¢Qc#‹X™1&Þ G´ãJóÒëÕÊÿd®ëº¬* rýCÙƒ£c¥Ü¤üßOHæ6Í ã2�œÌ’RO€¶¶)"u递¹ÏqS×^¶ó;Ôù2 VÞ¡g|Hœ¤£Ã»œ„Ä)5÷9—�Ëåk9}øK¾jÚÞº·çÛ0Üœ·^x&ÌÙæ¿šy¹øh"ˆ˜)h==€ë†¥{eÇÎm+mx2E–ýàI_={.± p±•H |`&g7sW�€`fŸÌšÁ™YÒC2t‡åÖ¬Õc6 %�šg=Áž..`9Ñ‚TCp<écfÚ—îì|_VZNj퉯•pô†f)±£&vƒåd4��ÚÖ áÓÙ²N�,|™Pà7ÐÒ bP–åÛ½ïÆfD!"mˆ9ïG¾ö䉜ÛëkIð¾–i~�ÕXï,þ3‰7i þQÞ3¾´!ÚÑhi‘M&o2Ì-�T'äÊ6ìÙZ6+‚Àç¦8gÐÎ\÷üõÎððæIõ.ÙrÂR´fžZÅ´œÌZ’B�•%åÂàR3<ËjÄD �¸ÇÉö}°­gÞ¹™É9axN6žƒ3{ÍI 1ìTVJåRæ9ñÊš¬êî)cÉ£OîØ²wÇÒ •–E!‡¯c^­î‘AÅNÆúýÛ,]±Âü¿Î�™L¬UPˆ.+ÈêÕ¡@Ð4ãq�#g;d—‡‹ÅnWºR�ɬo¼´ýDTW±^ûÏF-;ðIø¹ŠùÁo¸œÏÜΈóH^ÈWó¹¯ÍSý‹i é1%BÔÆè¦„ÐóÁ0 Ö»§7þû¼KA{ 2+Ux"*,ß1e3UÜŸ:wKT}]©j6�"ˆé€3eúÓ�’c€ØØûV®Î¾/ó�ðz'è¨VÝÅV¾ä|A¬žbÏç½yœÕ%ü4@Ä0dn¾›å~6"º;^Gapyʤš½³>+| —Qö‹Ê/×~(n_Åè³Ä§o”/pd ÒÜíbð.Õ»3äžÊ\´Ì¤û]F#òdÚ¨3§úíS{Ç0¨÷—…Ë÷˜×?ÊÙ7Ô=ê£oj>ƒ#wƒ¦rùª5yºÈÈBfP?Z˜ólL-ðJºMgž¹Ñ€óyÉa-÷-Ðkü‡g¬1ή$bo}t•4g"Üúx�ÒJZZ�tìTØÞÏ™~)àNwi…¨d— 1ÁŒSGÊï vÏÙ õŠL³ù[;V¶~1+÷d,é§²ŒUÑ@TÅË‚Ï4Læê\†Ñb÷R|‰Û˜æÍ™¸äÉSäù$ŒƒÂÿK™O Ö™¹µgÌA|Áiu"ç,p‹°MÈücþxËÃÊl&2-EáPk¥0Ù• Âo%²û0��¢j°m>W¬ÎçA¬×ª!C_ÁFôZAùãÙTÆßÌÁµý¤h¾ô`ÙV›`ªCô cex¥4§[¥uÆï€·ˆâyoOùZþ`¦x¡o …9·õÚ´O �ßà ~<€”úq1¬Bx½¬d^Í5-p”²xŸ–¸lA¢/PsnQÜ~Ð@ (ðÂè�¡_ÿS>„N©‡Aº‚§Êû˜Ð rû„�² 6N.à@/¨•ed/ºÌÎ%üææðA§ŸÎÓ±ppé0y¯�è¸hu¾Ñ)g:ÌA ö]ïÔ:×ÌwQb[sè²{kÔŽèÿÖÉžÙ‹”ðZ‚'¾pRÍ\­Qµíž°JöeYáeÜk0f"¼hÐÖ”ju[eÐp2aâ÷‰Žâ|ñ³S@݈cՙŪžæ.]†ÇïÌß·Òa¬X�â· 7éí˜0`z%bykÓGÃ>óÅ@�BŸG¿ñ›‰ ¡å÷.Ì«7²4q¹ùKYÉåw{]eyÿZÛ÷i‰fTúp`ìÆðÁjpèîºuÖ¬þ#ó‹#ï´ŠîþÐf‹_~òþ¹[ö>8wëd¡ñÑ"ß± +Uæ�%{K:nrc¿ïpá~æxsbþ¤kQæN}ÿ¶€Ù£·¿¼wa�Ãa¿ô‚àSú}ƒ + 7b[g/›Dš|5�1½húÜôo3³V³gæ–ææW-ŽYû[ Y|G8"²-A–§­.ZïZX³q´É·i´yk‹²m³}gçj'²?æ”mÿþ$þ$ÃÁÌá¥ã¶S™S‡Ó¢Ó-ç ˆË¸+ܵÂõ“›››Àí’�|‹ŠCñP�¨YÔuÔÔ¿^Jhs4ýý··:Æã�‰Åð1=X5l;v{ûN·çˆóÁE⸸zœ·Š{ˆûæwoŒ'àÃñùøfüe‚<Á„àFð'¼"&ú»Ïzœð€{\ö¬óòñV÷^ðñ#É“:É rEŸ2N=F]Ms¡Qé@úE_mß\ߟ±v~-~/ý-ýKüNTejÝŠ 4X€ ¦€xJÜûSÀ.ã×}ÑÆ Ï\½»îÖë–UK(Ï­€¶ê-¤”^yo §r´IŽOšÒ«5$f sjl¡š…ÂÞÊ<ò†y'2çfPË_Wd³žèú3úÙi'±â¥¦èÞ˜Bwà+¯™ºî±jý�äT2�$æg"ës3qô@ÿÖòk‡{%¯ÌN'Îüù×ÖVK&Ü©ùøÈ>S,„ÀEŽJØFhëZ¸�W¸Ò¦ÈŽY.QĺÁÞU?br©¥8/‰.g…QgÀ!*–\tÈ==¨±ÈØ�n…†’.§N\qš‹Î¸í»í¶ٸ×púÚIY7ùÒÖÎÑô•íéõe­¸E,º+à`T–\ètÿɺN/þ}ðA¬~èA\ ¾N©ó|`D÷,�^~kÜÛ§O;x q&¡cÇÑñ‘Gëc,ª‹ðŠ‹‚‰ÉûkR#Övê#6ªÚ`"ÁLseÙÓX?醂,^Á¥vÚ9%þ>3R‡C'ð»ƒÙ@šÆwúµùþ—Å3J½$(}\©ÍÝ„m™L¤J{R¹“g<�x`ýa,±¦†C³ ¹næž—Þb˜»³ºÖ›}b�ºžÚ›S/×Öv0ÙäDZäÝÿœ °ÎT»d §š›ðÔ‹ñBJBÜâxj9"ÕÍŒoˆ%Ø1�.îQUÐ^øÖ—~‘ú‚®å–6õÇ�×ë^PPE¹-ðµœcÈÁáÀ†÷£‚ÿò„9Êm)_ çè)oÝô~nS?H€[DÜÈDúÄéÁ¶<.°ËDÌ@E·Z£r°wz¸&œ1=&< ¡4ö¦yŽ †í¸†ew�£ sMЊcÁØOñc=ìVîF,åYF –S9}­¶DDPǫ̈ñÚmiÈ©qõ£îǯYàGâ9Öx)8 X­!g S�¼”Pºš:6«ž ÚêJm WgBè'Z°+Ó¯áùÍÀgÌÌõmäÕSxò¼òê��1è¥6èT4û×hCxºMød ¼ É‹©f³CÞ|ôM-ÑßSj¦¿­;†‹4˜-ßWTŠ"Á¶K:gŠqD*fÊ&5øš„ÊŠr–…O`³a%*nÙnŒÄ8¿·˜æXËÖI$“™¢)õæŸõ†ð·Sýëæ‚“áû´µœ´ž‹%kµ8ˆ±"%b×H1¿ú3‹Ü®¶-¯ËámÚÒô¶ôÜàhKÃL‹ã2 Ý´×RßÅ"¦NìØM­‘K¶ÛY=È�‰�Qg/å}|ÔdX5e¯/—e„…œ¾ŠSSK½!»ÚÞBѱGJ2K’¬{V>İ¢ˆ_ÝÇȵ“]QÁ|˜aa<¢jî ¡ùÓrˆHèû|ßj�â¥gU:v÷£áÕ‹v3�JÌ£/ ÿ·>¿˜Ì�<‡br+Í;žC˜�TÉ;šE)·ùÌ:ݧò~{nëÆ ´];X¸åì–Ž#½t34ÔÞÚXW…¿„üÁºªºîÀ³Ÿ8FëÕwt¡R¥˜f“h NÅF7‰ÊêGèd”q‹r’›þÛ³£–´çË›È× õ¤8ð…ÝRÞžtÔ0 ›‡¶ ¡i7í®"Û".·Sè=QÚ_bš¥ãAǃ¯P2á¹™ TˆFÑ FÇLOµ>˜2­Û4ôæFøf[œ×km¶ÅcË ÛQ…­wþý½·„ˆI�ähÿ-íäv­(”¼‚F¹´%òwx4s]ÇcØf¬ÎACÍUuÊ1¾|­V—6¤“Žç[4@¢Îù?%÷�žÀUÓzøâ-]¨áõÔ³U Œ2Y¿'¯~ÆÿùÉš÷¹§›:€ìL¸´‘L‹Ç74�.ˆdé¾_N›�0ÕðŒX–wÆ:-¸/Às c^ïh@Ú�Á𨘄s"ÿÄæ±³…þÖ8ħÊl»¼y]‰öPXØú6çZcëìǾ-OhÊïóK’|ìdPHæ ±àÆ£ûx·±é/$ð¯TÅ9û¶>šZ=§“£ d�êp6œï²¿ý‘êã„Ëç�EeÙð;Ãn›)6È,b=Eó°9Ç¥S®t B0¯ØQƒ°4¥pƒæöðÍ©†¨ŽX·;W ƒúÊá¾ =¡âÕÚ±]ô ö²Y �¶ñ8B(–�¦Öl3¿Cý+%Î:ãÏ^~#fMK„� õMµv«Jv"A—óN¢ÇÏ_zÚÙ 3û‘­û Qðù0+ ´éÔÙ¨ +ßGg“º.ßî\ifê¬p)"á°&ίô±Å"WV…åºÿÑÓ7¹.›­~³³ïšª CI©tød\ËÑ4yM»Ï]TÃi!ߤ©÷XÐ|1Ü›úZÐÄÐZ6˜�…Ž‘öD­¯ …|¡X®RvÑ…ã|åÐàˆ Ôg½ÇÇs¨] _ŠV­Õ._k‚k/ÃQÕª´XJî+ö'°àšŸº™�ÓC^—šÜ¿�ÜÁn ¡\•lŸ0`3)[ÚÅ>PÕÝÊðÍþsls¸�e«í©#8®o(MÂ΋íD&œ41 Èé¦Ê#7铼ßÀmN­Ú]ùÖZXnÀÙDld]ÝèÅ5£±Gؾ�ÌÂcøRDYÎË•üyû®Æ …–Áã©1rÇ–ÄtÄG÷öiÄ(:ׇT°BŠX…͸»Ø\ù®úó ARkp‡u¸ç“�Àzæ?QJGU;Û´¼83w.q�‡!û¢%i†Ë›§ê–ŒnN•!HÁw>:h•(aîÑSÅ™�Û¨¶4tÇ…�do%™)–‚º`D¿X1ÒZÎ+ ¶lCC–û'Ë´a¬u«Yz5½qsÑÇÞ¡õÐ GGkF`æW¶�ËÀn×ðy¥Ðhš¼>ôM³¡�[øú9o!¡^’^„õCµC-¯sÜ/�{ÊÿåÉšû™§Ô‘€�ÐyîI y¾Çs9†ÂíO䫆àÏ_s¦�ËÀ=ÉœþѧS{ð�±ýÁPts™`Ø0ìrÕõV‘)–uˆphuŠìv~ÕÛ},+xðÛÜ{Ü¢¥wŒ¼— =™/v«§¼—‡xú”*‰iƒH4˜ P:Á·AæÞS>‘—%&¸à?¯�M· �!Ȩz�ɳ”¤tJ•Æ$ª¾ËSÖ)…�1•dê=FÝ ö'âëlê�F?¥5‘ ˆ¼�í'ÿ%ÍÉ–­A)*§Ø6z¦Û§3Z·bä›À2Îö³¼»0µMˆñ$3DÝëò/&¿žd ŽÚwˆ9I]° Q9¸]±‡™O÷z[sb„zr4²É‘=�lù�ÉŽ¶€Åd‘áü¸ú.ÌAšméoqçâä·ï:€½§rè•›9~ áøÍ©ô[»e jñÏj­4 `RM‹¢©1ir’¤Âd)j‹×54™`[BXÅÛjž€VÕ–²âË ?æïÇ9Ü o3Xr,ûìhHHÕ8^£b lßO GyÖbRŠu?MgêÚÓîx™A;O£è�»¾0 c¨“¤½^’(4-¨“Úï¦CÅ>3^©ÖKUmîƒë¨½&’²Èd.@«–ûœª¢J&KÊ)‡/»ÿ‡O8Ù¬•~ÞãP( “.²-å~kÈ &Eµhö@ñw¡8bÒS0K¡œ'ç*Vb‡ckaשr|‚ÿÖYïÎþ»8ع�´š G�}~ZÀq„Ƶ„ “Ùöûö¬µ®³¨ÅA,\¯Èqít'†EÑ'ÂÑd/7–_°n—@žLPáÈ™µy�¶öÒO–™TDeŠ/¡J ^‰vbßg‹«NÎ"4sŸÙýê(9%¨°|÷+{=]öMþ*1P��ÂQÍÉ1ò>øë A³,É¥ E)ÿÇ A¬q¿!}ÁåjÈAú)ÍY�`"t {¡ÓP9™?PVñxdV÷ô¹ÖeªïAo5€œžæh8®\µåKªŠÌõ£A¾BB¨§Òš³ºÏ‡Eå …‚5d;Ý«¡— üÁp¢C!Ãôꞇ?Ý šÍ'àú3¨ƒˆ (~|´Öù%%‚;¾²Ú0SoA^ó×’mû³õCÎê²~×f§‰àCÇAmÕŸ#¡÷:ß’Äáš­-¬Ž´lÝù!aÑ�À¤–¥i8ÌÖó‰óÞü#vQ0Àëò°°×\âHÜÆ>ŒÁ¾Ž:Gƒ�ˆ E&rI)¸ö$ïš#‹#§˜?Ñèb6_PÒVÅPkå²,¯±—™Ìd·«MS,Ë'ý56<>ó›¥s Ò/_œÐ÷{f²£Ñü�2¨± "¥\QT8Pùã�î3Ë’w0aQ¿¶½KßÀ§°þh° ”\e:!Ä(Þ=Àn†ÝGXÎç"ÇÒ³2Z©èÓXÞ^~Âá=§�Ë7ÞæÐØ�E"Bª‚€¤iº ‚<'¹¦²ÈäQöÚÉ—ƒüªuo†ü´;šc$Mayw^ä3µ!L¤äâ áÍQ4�ßþ×àµU3¡¦Á+8æl_ÐðÝÑpØëÔ.EÓÓŒ‚ð%ñçŸJϤ3™Ô?ˆaŠ-‹6„Ï -ë'@a ÕTW.µZgJ}†ÑÜÝÓÚZ£¯…鮂Édq1šªj¦yóõ`ÃÊ%¤‰ú h`x¤¼=É—ÚRSšH{M6- Áë÷yÐo’‡m«c™ôý“˜ýß EU5¥¢ænÐ# ß87Dn<é÷¾Ð)}±7™ÈhÚ2–!V­I­vÉ8«ùËR„Èr9=;ýÑ‚0ñÍê¥Æ¿À�S± D¤}3ú@§-‹='^š³×·Û'4Z‰†uq+àÇ…ÚΣՙ[(ð³ÄËD„³;we%_¬5÷´:ß›e}UlDz´¾­èy´²W{+'R cðº¢\x±&ˆmè€H© ˜CY�䚈‹T“¼,àL'Æú‹`0Œ×¡qx4äó„äº4ì�,]”‰Ô~‡ü‚؉\.Gù×ñÙu[žó“šCjZIƒ¡þ:Yjý¤°±x�Å4uÖ8#çJÓõϦç†LùEz;•K¾(#¼o¸±-= Î0‘†X0é¼¹b€…sTw¦ã§ãšR·QO âáÇà#�bì‹YeâÊjé E·â}y3 çºøßÿz~¬en¯óßç`¥ö¿¡ÿ Ý-ʆà%,‚éo›/šyU‘Ko�¹< ·)ïß«”_}%ÞúbŸA�ž!]ñðù,H¹¸ÙžSÓPV¥;¶ Yâ� õ‚p¸Wwæ;{܈Å]Çfµjv;î³Q ¤93“žÜ[(&Pð:œK­Ywâ€ÃL%—CÝ ÃƒO`/„û)ê¥j¯‘ªYw…K:Õ»ÔØÊº½vÞ¸Å0õM¶ÅóÙ«q+ã‡K'g÷LÜÖÎzï�~ÀáF±Óá½À}YYöÒÔ³o,Ø5—sÏuzKÜË9·óÐÖ@"›—]1íó,«jc}tñ_ßPp¬T‡ÅOÆÎÝG%W¶¢Ò(­[pæþjx"8O"š7„A¢ à†Åûï7µÝkzí¥úÚɘ"Àú-:W"Ha:Ý×w\Àvާÿü{î4WK$Í}¸úéhA–eL Ëf}}#@‡Á²xm´“�·ù7¦g {Šè;òy‡<íâ`=Øùéh�E~Åzuã¸ÞäD?ZÆu,¶Ùÿèþ.¸c o$ \1ºíÓÑ‚¾ªâ“ûOYP�Éœ%§×’Kg“dúª!ºÓc· !ÐpËïeòDýfNé8gÐðÜpqy¬uÝìòR*H5–ã‚<Âðø œÖöKκS½ï£ió !,¦X¡¡ã^ŽcÜpTó­|Ó¾†úmkFD<’ÀÕjÙF-w³#´sz€dí—Ù±Tж,Ü I"”*âG2)8÷žèm“·‰ÎˉÐ\™±°eÿXØ8ÂtLP˜Ç¤º½t+£N•˜sÂ…kv.¤ƽö®ÙYM›ñ…%äe⪠¡üŽå¹”:Ĭ,é9è9[p ÛÙ‚=\ß²;9ù�Ó{|7ðšš‚Œ%8‰‡¢&úíÅ­¥ýFã2�Ãåè¤î hû¨–Ö2G£Wß·|vÅ\ñp#¤m à¯0‡rþ‚’ÇÝ�ã¯Ó»gŠ™A–Õg�MÝ&Ú%¼f#™´½ðbðë¯,ÜxB2MÈX©çóUЮ O"ÌÛ?óÈ£‚nWï‘/§Y"E S«¡ê?i•¦Yž:ÕÙFzæêP�óøæñóoOªêÿ÷ÝP>ì)Ÿ‚4àç1„Öí!”úF?·”è%ÞY:ù]³žv^uu7‰¥Y]€Â`¨£„/Jª¿Àg2¹¹žDN±ðˆ³="YvÌ\Z�+Vrßik¡0†ÙËŽ}&¢°SÅb®Šß�nY«[‘5hý¥úšÇ,¤U=ŸׂƒÉñI‘‘_gíøLÈ>  ¼ñ難bÚ¦tu-•+V,X³œcH¸êý‰¬NqwŽÿ¯À—„ÛCD²b \Í%§ÔÐ]ßL‡Á¯KÅðqO 0 ËYSß§i"Ï�Ã� Á�,guœæ—x:šÛÕQv¿¯V+¾\Õ!ü§fX'2Rp‡ÌþZ8›OüÙsfÏð•ôPt§f|S‹dÇIvLýÑ·q:Ù~¯WRÚ…ˆê·óg?¥ä@‡Cî½$(Nû,jDø®ÒʲFJ}\Vdù,X1ê%~¯PÎáÉó°p"øæ!;Š+ÉBC‡RXŽ=>b�ó�ˆô– )Jl[½•¡]^^´²Æzü�aÅoï¾êl€…m8¬¼4Jàiëø‹³S3¯›šª’»\–ã˜/䊚e–U4`¶Fÿ=Y¥ó‚ÛCgÈtÚkù„8­§zå\%IOçÙL™<¹2ŽºíW¸B�®´’ÐÝáøè¬è$N®P,Nž©Èþ bFº]uH´™m¾€²X(AT—a§BzQH£!lÊ�{dîê•qæ@&$Ç•V J®\�Á0ÿó€µå\.C=Å-·sf*€š�©<áÎ×k$óܸã´Ê³èQEnëËe9ô­æª}Ãs^ÊKJ2÷¥› @:²ˆSøùŽ¿0À¥·šV”úíÏL5ã;ßþ‰Jn¦óÙ==þp;´Ù1ß^k·ÍtÔ$rÞÒõubÒc43ó?ñ·ÞÚèjŸӢ붽X‹J†Šç˜S½ý!¼g*y^³•…Ó§.�{�ºAl’‚,»î%½uU·j M†ñÛ„ôKºW�Éà}$E–�O+ìi÷þ¡*ÅŽ {é1«Œªs°{ÝÁLªaNquÒõ÷¥Ãí;Äbf»blx ªžCÕ”¢°+0Þýgžÿä§Ý¢dj±²þO¸Z‚MK‰×3ð‚fXç�oOtý¶ô@ûn±”V¯'ö5”$‰;¦ªßœÿ†­J{ƒøî? óÿ¾™süSH€©ŽdSÒôø¯±.Ê{í!E8 Y‘³ çã U_Æ^�f83'ñ`¥A¹ß#Z� XÄ,îmcÔ+"šgx�S#ÐyÛskÄÝá=y:[Ê·³žù߃.Ì{íÅ_Y¦l&dí^½­6SÌON<Ž­7„‘ñ«ãì‹qÒ‹üüùþ›;#�ަðñíkñt:³ ¨xÕñ»X`p,·,.Çß>»dä�% -õç|{½ èc-€Ã<øá¶ÊÄñµC ¯éÁ ²³}0àI¶•½{Àü �œ·Z¶¢fý)Ã|«›‚×|ÍÏ­GZ¯Í¶_�`tãôŠŠK yé§´¦ŠÅwã1tF²LÕº5òL‘Î%\÷à mÀ›^\íúíXÿ1~=ñåÖZ,šiÄ¿ë¯[,ŠÀÅ Š=/¤ž—YWËûƒ¶*²åz[ó£OëòCÍ�Эà¬v0⮽¶’;gz°Û”�ó¬¬\K鈟š=+†Îàï’Ž8Ò:ô1‰\};µvN(3«¤ý­ìÈãÝ”�až@Ðævò]¸¿Ã‰�PBOþôbdùKà¶³�Êq^åŽq®w:[­¼¡·s×v¸èâKÆJh‰ Ÿ šûðæûÚœ`þËÁó4i¨[5[#\ŽS•¶l‚üòyÇ)kge2ô2Hüg$Þ|§aa¥jÕ2éœÝþˆúŠðè%ö÷ï3„ª!O­§r·:œ‰e„n¨ëœ2zbGw] äTÐhü||‡Ê]RE‰w3½ù»Õfzj6¾‚SûBfq3›�@½­›©ì Ù<^ðY�o_á¥Î•X i>�UQ’ìQu¶Q_Ä-œŒœ…cæLìv}qüÑü`¼õÉ©ÈÞéý¹_cýåNöÊ|š]{þ„øñ¿ÿƒoá9°WpÍëÓ·ÄZ8Éè�hlwI&B¶Gücë-Ö6$Ò!^�(=�á 7S ÑÆçú4ôP�õìºâ9Ù™xñ4ÆkTxîÌA§^­úô�Ľ˖=DT�„Õhõ»á»g” ùðø›e¼4ÕÖæ�¹aÕøx0x£©¥/ÏŒ¾ÑI-±2ê8p¶1ùóÝ _h¾:ó\R1M¿K4ŽÊ’RˤÓV›~îŠÎož*Õ mï�G÷‰­õ ǧݚxëìc xO< ã ›ncÐ:ªöÒbù¢Eˆä”ìJÏÁK9îÛÛ:ÝÎ÷¶ têò§³kÖ›ÜÖygXa1]Š?£ jâ¯8I0 Ρ©Eù�Êü¹7%ú›IÓf͵öR|wë¦ó3qÞåÙt›‹ÔÁË\Tq»¹í”{êàÖ�N�ÿ7yz¦BÂl·p¥C<±ÏÆÓcmÛ‡‚3‹ïÆÃõô«³×íâúøh`Ó À­8¾è¼4_–¶Deë�éTs0ŠòI;Å'EEéé¤Ùª@ÂJ—ceí�‰ojƒ!¯ðš*“=DÁÆÖ¸ê n~]û;â>]•彿Ö8wým/¾^ðöƒÂÍ]�jî­xbO.%%벌è8D>_üê�Z?]R±Ý�ˆrb%j$$Àô˜´T ôC[¶Y%è+‰hbåíAª4AÕlk/•?­àNymA”?”—Y,>ì6ÜÒÍX½šX•s©êèÙD†é¸êN_᜾•—tîÃÂ\x¿Ê%/È\>›e™‹¼ò�æIªÜÐXÊʰiŠ£â©•Ô†vH Is‘€ÅìQ·ÕðHhÀYhbtgÔ ›`:fÄß }¡=Šò2†Á¼2ÝϳY†RžOqL^À¡X`P�ˆ:Ñ…²ÂªÕ/ ¡<Öv5®@fkÝ�xWÇè�˜¥¢š>7ÏbÁ“ö¨ð¨²×ÔjÇ$àUÕ‚Õ;�Á _õÓºñHÎ*Ä”uŸl[v÷XŸ )&Û«�šቺï,½uFûÜ ¢‚ˆœm§B–ŒóoupÃûð›^Ñ9nº³l›¦�>² d3Æœ¦…°#„§`hLU^®‰Iæü½tb}¬²K\´SÞC—_%W<šaè†eNŠÖïUÌZr²ô;ãˆ93VMèEÍâŒà«emü!6ÝÅéÖC¬ P*ÐCåJ�§Š;„g†.;{Éš»MïUÏ}ë Czïw0:èô_dÀtÁàøôÑÜU[wIÃøÆ¥¤UZRŠj`áF&Žh3)5XNa~öî¿Ù@âp2Ê…¾ X§0UU#‚¤q! Îâ&�Àwï>˜3&0\Ç2Fµ‡aò¹Ô]«*ê²JåáPÀY‹e=ªnJD‚’šu,kùµ7#ö ²ô†’LÛTŠWÌû…^1Õó|¤$;/ŠÓå’‹9ø©vµ+cI=ÆiWM5‡‡8ð‚)o`)’e-‚¨�é(‹ =×G’c�ûrÙìjÁÓ;˜I&Óô¿Wáh­ÚßôÓK›Kk[’ôK‚Ù”nõ0ç)M’^Ô ÙŒ]wÕ#ýŽU%¹šY Ï —„&˜a|È×[èëoD¶VÖõd4èò©šKÙ;ðIÞä'ã9÷ñ½V°Z±ˆð9Lã«…&�J®ÎžR*™ŒøZ�òʶRÂD{�prh“XÀËÿ¤¶Mš?Š®Túë©õÄý6>øx�lô÷��K ã¹C¼·&ÌÆ¡šU¸þ¿DþÿrWŸB™j©;í> Ý´«mxôJZ•¼1ÂçO ³¯¬Mç’^Øwá+Þüõïyñ+îªÔ$#Ëڂp()8åVë�ßø°þÝ+qÎû¼3üõOÒ 1ŽÆ~ìÃþ›èªÏ7ÃWˆÒeY¶»ÃÎ@Ɉz]÷nF(YüÅÍ�Ê`}sù”Ìy[�åºçg×X¼ôykÃ[´žþ(8š°ns=ãîÔÑ|Ñ=sm|ÇÿKZd¼×ý�K[mQÔV1f×?ø¿¼éòu÷hI¼} 8ñæýÖ]ª6Ñâ¢e~öÆ`¿ù×ÏØ¢çn @ŠÌûü+“UƇlÕ…EÔ–´æ9ùÖ°pèÂñ%ìÚ|ØXA¿oöƒ¸ñ³]”J…L"m×~vݪʒ2‡ÄxW%³Y’%-¸4‡ 6ÏŠ¾¦÷üçàÍû¿¾ÿ¦¿6adª‚cÎ[ç­”òå…bºTr)_ÊaÒZ' ™‰ p€¹’Ô<�§c@ZœC›ÿÒÚýRlA›mF6›QcÂ9ÇŸùWŸ~ì}l>½K:„õyíw| 2økáÆï—Ó± Ïiþx,RÏoe º!ݵÍD~̽6gµ�÷œ½ÅŠ �W�ÆÃòyþ…abÖ‹ÑÙ‘ƒ)'¨ ÄÂþÕâ¹|E$™Ã“Oqàú—š+ <¿]$[ &"ä¾lÚXBázFivÑ,)Tf9Häi>Ìqbê�Æ*±Ldk4,W1ºwDö!˜«ÞÀ�unyšnZò¿ò¹T3H€ ÁîO·~�‹ ÛB‰L,} u™,»é±8ÃA,KH%ßÓ‡ ˜ª_œgÕ¯ ™{ì“�ÁÕäù{o*™Äi“:è‹Évx<×ÖEß™^3o×U"¾ÿ“ýƒCÃ#C£ƒÃ«çFÇä)Ñ·#ˉLv#žžZÈpÝŠjô‘zöô_3ËžÙÔÖišº‘ H² v«V0ZdGªˆ§Pš¢G¹jÉ{=NËÙ}bå&áuíϬ{e@ÞO•ãír«“£õWÓɳQfÛ¿Zn>±ƒ©²8Vÿ�Žþ«¼‹®¾��k‡�i(âƒjÎúM‡$8®£z—cWlÞôÆ�lÝ>8ÚcAÍXÓ%Êo«…‰ã¾×ó'GÛ1äLk¯S¨œÈ ü[è Á_FÔëóhvûshZLCËÐ4ƒÝüúïgªC (Ýòö„žÛ{ù¨wÑPÙÁAT;!»?ß¶]ÜãˆAyšðú4ØX0ßQ :[álìÐo«;#ö«d‡jn[r$ M$£iLe²‰eéˆ7Þ­¨ØÂn YÕé[èL!.»½mø7ÏjÒº ðª«F»2vŸçåhÁ+ô/×…ÅWCðäEè(3iRáP/wÍû„²d–BãÂF±Iñž’ŒõFVæ”d"N/fžWøÖó- Þ3mV{þ3`„<»—ÿŒl3Œ6"�òÿ!�¾®šVk6<³àÂsÍ]>Ùtµ4Ï�Ç~­yv·:2hÇõ„ÖÛzÐ#9!6hc5€YÐ("c8ưü‰O8óÒ~õ½S<‡aaû«XLÏú…[žCJ§û%ŠÿòÝ3Ͷmm‹‚ߺ–ñä+Q&è%ã¢rSsC¯‰†ƒdwæ?:yªv¼ßèOšKi"ÃÛòK?� ‡C9Þ$ã±~ Ïè�¿.•œÝ´´Üzj'otÓ;A~VÝá:G^�ì·@0OÈ#«97±Ä¼eV‚üx¹c(ÏŸ¢k)Såb¶<óf ø²�&“‰A²îÆžŠtòJÃàY*à(ÉñÙmˆl„—mçïÝ«ìÏ$ 6ìhï|;æ¦Î*¢6ƒƒ÷‘'(ºéØF!aú+Ö>ª'»ô�g×Pów°×¦,6úÜÔ±ý7¦“2M‰x\c)¥¿Pác˜½|^‘‘9e—(å‹¥·Á\uŠÝaÿú¡!‹&ŸÅhÔ™åî¾I.U¬Žro†?v ËoX¶66fz-Ë­óÕÔ�åX‘ÅN|�U—wDü¡ï•\ëY>`B‰1>»qA?á>½¿nì"ÒsQÓÓö٠'É“•$<§uiG$ˆIÁ‹t„âqùxGæ`«;$Ee\9’cŽÆûv…N'2ÝÞ(É� ‚¾˜^ Ýã˜è ÊI¬ÌÓ4�ÆêL-LQÖ Ï[¹w¦Õõϵ‰ ƒ¥Þ'ÂMRÕ¶+®£#†•ªë*ñ–$ã`J´‡ë%ñ)Á•í²8O2®ËP8ÏÖ‡Úbªä/5»H1桚J>}Ost[Ã9‘aáÌxv\‡†'…F&䥘›[Ë�iQ„wTff¶Ÿ•½–„L#Éae˜ž‹“¢6ê’–Ÿ/›_BG™U(Ä€ÊF]‚äå>Nw-�ÍIɧRâã¹øsBŒ·’Ü�šzÜbIV3K’6WïÃç:‘ 5BÑ>„(Áü!á®·`Õµ,³fÔº†ñ¶ˆaȳ”&�û!6ê~µ®›Ÿ=!³û:|9©È)vø°‚„οÚÍ궿ݩ⟬G`w€ISÞ„V�œiê Çnز�ñâ—6sÊý@ŽEÉkd9ú$ Ä%q9&­u´½5�( êéÅ�ƦF÷½X8×;µ¹”l>¤]ÜU«`„eOÕ˜…ÉðÜËçÂ%�GîéÑÜì†b±w1hãÒù_Áž}ïë¼@‚ëï1Lý 2¸‰ðhª‰•øLº‰ñ$„JŽŽ:·õ�ñ¨ØcS9æØÔ³­‹âq–§/Q2†¯Ã¬¨ú¶A­òÓ¼O^ÀÛSq&BZЯ ŠC‹L›0Û3!nʱSº§"uèÈãð²êX-‚u�G¢ÐAhÌ:Ó\­ëRþXfs:3^ØoëðŒ_(hÎ…|iDíyÏse㎻M˜ºù$ì Y£u;ÕG6hÂ]ïíš5ðÂÐ|ÿÂHÀŠ›ÞFŽ]Ç·�>Ì"2{ðã–#Âøæ�G²Û%—-€:ÊìJZÂÝp2ÍìêcÔ=¢{_UOdq¿ò)�ÄÛ¡A­É»Š~ï©ëLcŒDÙvGá-¤Éäø¬ßÔŽì>n›P�ùýúD¶ñ'àŸíx0„"kþþüž¸|îT‡V$ì?#-�isoG©äS7±«Óf°emû¡ò*ÑÝ+†ëy\3ž2hI>¹.׎^YîrP ’½açaA1ÝF˪ØÙLúÏtòÔéU)h½m½%Ÿs>Äë=óª¶@o¬iëð|¦¡¤Âpl¬¸Ž¢Ù»d†a:Èj9£¦q"MK]r»Ê™Y©¼Ç°ííËÁ‰Ž¿êûý××—ŽumñxKŸÉÚíõ??k?ý×ç¿<Û(ž^zqëC{÷&ŸÈéÝš–cÀl’*E‘ÿÉÒú—›¤X)ì­dª5;ô)7ê÷ÒŒ� ’2òpœ…aÓT²Ì)¦©ÏÐÞ6ÈAÃ@§ŽD°A£ð”Íï¥XM“¢gžQ¼�ˆl"XŒg{^„ âo*î_?ÜT?9mÞ’€ZÚâzB`‰@úV±°ù½�J‹¡÷ ùýÆÁ@3iÚ4Ý9¡žSæB_`g)Ó.ëfyÅ\âçr³F¥(y­¯†_VÍyÌ ŒûÙÒè~YQávíL³yO�–£0ë7Ç1Î�ÛRv¸9Mˆx»Ìþ€u¾E®9£¹‘C”ö´Söè)›ÞKÙÃN÷q„r}¡×¶xÙL>8®Ù°K!ç �ãØ\œß%w¤Ç,´Ù—c]¿E3/BóIšs^™X±­IØy’ðêZS6�îﱂR£M[éå|žR&ð’(ï@¿°éÂ(�ÇÑ¢@#h)ØÈ7”–ÉZAF\]~¯4AýßZCÓõÂÛ@Â̹lq)QöEÁÊŒ`‚B3•R½v E!sÆìnº6\ ÈÕª”ÛH@Q£4á©U\Vn'}ø¡ô3"‰ º­éCR~P ürM ƒžïè5ª© !‚gV{¯s·Öáæ M/ËŠªœ`ÏËÌ‹ZeÚÚæ1ÃÐõvVù8· ™ç#Tî¤X&h#ä·D»ÉÂí:¤éÚŸ©|¡ÆÔoOèZõ”,‹œø|%ó5í.^4“蟎ۣÈcE–D>4{Ç9þDs¾)•’ÇJ¶ß¼Oz=…H1y*0ÏmcêägÎ�¿˜˜g˜ÂοM¶WmÎ<íþŒ¨a/úT"½Ø7úãÿ~¯Yòe6Ÿ)éd˜¯YˆD˜í~ö�Ï"t<Ý�Í ûBHú#W:Ö‘Íïሣf1—ù'ïáÏÏ�Ò…°ý˜ý"�x ¯ž/–:ˆ qW€-êÁhäú±º¾±½Ýë‚02SVÕá©­¢õ7 QOæó™R üq)l5¦s¹þ²0Â/¨ÿ ?eŲB§ËÛ×Á̧X[sÇ·î^+‹g '›Ê»"×é¡ÔÙZ¾-p)kO ¤�tÖ:†eRr*B•Îø2$œ¼üµðrc‚YL$Ì0« ¦ y|N§ä ôcþ’Ý<Æò&©?Öœèù짙ƳÁ™4x;}Z^™ž$Í>Ü6½A ³Wòû{ïüÐöG-åàʶLVúTëB^xý'5ø{/[hÕöæû÷fž;h6;àdÐU `.=8þËÆ¨4É!“Û»X3¦+“ø4’[¤Ea@ú+õ'3‘)ÁËü¢¦ÊùÉð˜þåªHU¾o߹ϡ�êƒz]Ĉâª]¢­V—š=c·íätňaÁ¢…ŸºÂ("&;Bþº½ÓZDŸÇÉTÊ;šk4"Œ_Ò‰ uð$ªþ�z ~^ ØQ¤�éî?Ï‚'ðºÞ° ƒD¢Ûfy$•MïpHì„ô%½<œ°¾»ÞET½™y_B)ªB80á?ßÜþæz&VæGö”`#÷Äår#•@rIÈç÷S¬Iãç+Îb ÷æƒà.DÕÛæ~›ùÓhHºº<éûÚœW>w­äLS‰bm¸ CÔ |a³äÃ�$Ï•ÇÛ¸ý¤"nLJ%‡™·ò©F9SK•î3ÇÙPœ"êú†´ÙK!PPYƒB­„WqÕ°åHÕ´Í�vl{.¿¥�.âîÒO#ª¤Aý““Sô¸¾ÁAöj3[ÈÕ`#Oü®ÒpªÁÑK á¾´©ÜÓT]w¦`ç†ß‡¢JîýGµq9‚Û pð½ÿÈÓ<ÓW*MÅ€7È“Y6G3Á ¾Hx›c±®œœ‹Ì4#„»ÛŠž¾F¬¹ZÀÅ”Yí$�^8»£Áq=žy·9UF½DzQö4ÂkT7/OK½ƒŽ¯ÚøÑÛÇ3ˆ~Ä2”ñõT&'wÕüý�H.¾{Œ¼õþz‡J^wŸ°h%êB´ˆô!L)ê`2,<˜ƒ �ì–ž¬Î¾r{%•âímPoÅ€DÿŠÇ®ïÿa÷à„ÝJÃÿoÏM›õÛZ¹™WŸvÖ¤“b¦l�À‡ô¢Ì¤Ð Idœ»äzO'r¢éªjµÞ¶à�oípéiLt��Å„U—¹›õ~TåP¡£œ¦™ekhÞa(Áù$îóÇè•æx»Hk Éß 9oNž°ž\­ôú�£>rZÿÁæ ×Ì…EŠÅœ Û}=;:V»±/,·O»÷TþVèÚšL×Às»OÞ´¬0ra&ŽGèz”µñ[S×™�ÀÙ÷äZnèî�eš2Ñ( Ý8÷ÖzãÍkÞŠ‘Œq´/§\o>Õí? D '7S ÁGb¬��mÕø0Ñê(rð<4Ô¶�^ oÒ¹'|×_KË-ð÷Øí2»\ÖdU¬ª•JÎT5$Šâphî¬Óƒcøò-Ä.F^^ú3޹ê}¿ýÁ±ÿ…‚!$Õp/À°b±s—\ŒÑÃtε~Ê>%öþбjöãƒtZÂy ø-r­½OÚÿ™òñ‡½§PFŠÃÁB°ä²&^�DѪ‰”BJŒç‡&±?L6ÓTŒ ¥†»>Ž‹¢ÝÝn„pø^z"qƽ�èQùÖ‡¡¹¢U,†B¸ÿþ¾'`×Gžó•©ûù¿@}ü¨Ö¶Ñ›§ qD®©â8 1¬ä¹ïhyÅóc>~L0RH‡©špxV$ƒ°WqV9"‘¦ šÍ „šX6ºRÕˆ¦ó!ÎÕ|Ú"®õ¥í€_(8 ºFKz@àÊåœâ9Pµô‰ß’Ó Gtš·,¬åù�ð0+ „›j_W©”«õˆÞÒFï� ù»¾¡ÁklíÍc…d8\’ç'Mâ×»GêWqMÍË/Ô{Ýúˆ:R®5†…_÷»~™7èPÜ�”S>Ùâ¢8ÃÄ!Í´®Iš§Ö~䢴 ²î¸*±#G8”˜mî´=f¥¬ r²”ÍêÃ1éÑûQ=iõÜ×åõ·‰G…¸SZ­g3t0޶¤@k.´ýÎx4¢¬j¾¼C¢T[x*=‘¸2 ¨yáÀ¤¤Ï¤ Ü‘ÎUJi=ô5_×0è÷��˜LCËðóÕQOÒk4²ü. »–Ø\Uðb"¤&ç+SÁ†R+u'n˦?+7Ò}æûTs©³76þŽÏLÌ›]cÑ�\4Î�Ì–íò®Âf³tª‹ žxèÄY}5Vî;Zn´ÇÁm �e³‰NQê"ŠQ¢—ÜÒ&¿é.qjœdÀ,5!´ãnl’è{LT³ËQ-BÉÆ´%ý8{ªtá9üPè}Ð|ºŒíµ”VQAÃ@¤’Sm>•Iª�ªÌä»á—ómcÑJ¼SÐËE§Í¨%ˆ=}˜�l’¦ù؈†ª°3XçåX ´|Ø‘’ »ø.¾]òËç'Âß³–ä‚W ûýMÜUªÂÅJ: .–+ …ÏFžrÁ6÷‹_›¸+å›Þ_a*ô5WŸZðÚ@¹i½,‡Ç¯ß{hú±WJ�U‘ø­'܇¾ó±õqœ�=K !&$Gð­×ß>=¶i �Êmè#ùßðaã\Éþ_ÚÚæ.âŒ{?"bTJÌiZ�×›ÅZŽÿÛáomöçP©r=®DçNA‹`ak°±&µ%˜e¹p¦�įzâííZòÐÖ-–é+ù–~[]¢Æ(%ØY/´»PÚ‡ìbàDNÙºEGø›¥—šÜxZçM£¸´Ið�{€~©Ð êŠÅtŽØÜ¢B¶ë+gZ(LÌHñIÁó#zþ¥ì‚ üìOCØøÂЇ�’ÉJR£ .k!ÎÆÕvGv÷ýúqî|l ·éŬ_ìU:\‚Ôy÷p™Ÿâ¹íÝså/ªøØö×µ„|#æ™Ò3®Å/Añ«ž&îumTŽêÀIPÀxMHsr.—�æ×Ì·õ6 Gåä À9ŒÝðµ7Ášw�S¥lþ¥Îôy~§<ÛN² 8‡qÿ 1ʤ¾¯:6ÛC)n9!î†$#Í=YÛù»Ñ®ß¿ß…±„D×Úÿø?�˜¿Ì¨ùþï�¹„—¹õòm†?à6!ÒñLæ)g®eYÑÛ.&£yn™OœÜés¤Å×÷¡+d•²¡s¬Ö·*Õµ˜¿3û³‹“;}¦}…×aÚì@Yˉs¨ûÿ®.aØÑm“ Ì^™D¥áóà�aNÆrÉ,ï‹;Kjò¥Q¥™9_0©¹®Ø”àÁ'Zݪ=U=3‰"Ÿé¡“éõؽÿ 2ð½ýöùÅxª³1 Ë×¶`å];&�T”¾9/•%UÏ%=­E‰Uuy‡‡¶ùÙ¯wŽÒS–¦—¢¯]il­­ahGwõè×sÐÀ䘫öX+µé�ådšx2C–SÌòÒFÀõÔï}°0öõ3_Þ"­ OM´Å[KÔëqIJ”2N·±a¼krJÞð<ýYweÆg‰¦’÷”? š!îÑI2`:X‡ÁÔ?sábÛbS¨}k¾´B+ÂËbé0¨\èÛM³‡Ì:·~WBH\¦0!ž.Ñp[Ô™¸–Þ}c|N™Ã³‰ÑPè/>49"zNØF ß�´µÝäó3tk‰Ä¯!¼nae–ÖáTÆ#'+ÌanÅŒ ¾Ñ­lœØ9¢ôu< ´·ççcæ.¯ùÛí™DZ.b Ôª‡à<3J³íXÅë9·—|¿•fq\°BÄBUq,³DŒ{n�Ƿȸ¼™ã=ëhN†=fÌ&iû± ¡èF>-3©ó¹|‰ÑCíûU×Åg2s¤�ÛÎdtéú×?VƒÏ)!Œ· �f£]v�½ÏQj3È`}ht#—XSg¡1Mæ¨!�S–¥½%ׂ8VhÉ,cy“˜ëNù⦠ˆ.r÷§ÕáâBFm†˜Z„5ý�¹œÏ-¨]L}c@Kó3®�øH}ýmô�ºÂ3ñ%4/BWðÖ­²ÑŸôøà'²xôW›H¹h_ ©t“#ÕÁ{“׿à¬:·(×L_˜ÕZUŠVm¼k‘B¢^äX[˜êFz©X¯W%uUÃà@_s[}�DNµh˜-â:oùr…ÆÜ‡ÏÖ^*t#òï݃˥íé ã0YÒ±Ê1„¯ãàOÑ…¹M‡'�ž¶Âj{ £¶p²8fh:>7ráó¼l)ù®SàCdO‘ 1áãFÕÚgf-àÏÚÂÉÑÿZ©ã»äõp�eÞÞz+�’�z`¢¡�°~l×l(EÞ„¦ç¥Ðı6Ť†Ù‚‹6*åìµeiÑÔ~QdI² jΤ(i ˆx‘öU>—d¬±ûÔPéA æ¡A²âx"#Áߤ=Å2œ× t"&Ïx§Ê�sQ§T4äO�ÊÓ(Îî͘T`|9Çv+b*c½¢�7†—d–kâ)¨×>§Ñê'Õ)R+Û�ú¤ M3Ò鸀 Û H¡û⃾IÅl�r+m¥k3ä¡õ2¨þëÔìâ¾ð;oó¤âÞqO§ž`}%]î2Îø±lüvIsä˦µ€]#?ÚÝ\JÉæíë—û½‚}ßMFÅqG±ÈôØQþ²ÏÚ—s6ÕJµ�Ðq@œímWÍUWs†�óNׇòÕz%‚úP‚ «]?tdŠŒh"7µIëLâ©1ü>W¥ýiiVûÛ'�ëXØY@Tà+Ù+‹µ‰ÇõGÕ–­²£Þ BšŸsà“lEµ-öU¼ý+>vç@^»Œ}L~¾Í>ßIHn{~8’ŽÛð¨[Ê ˜•z€¨LA.è &^ ‡º;ÏÏséôëóЭ1­aàÖèÑVcÄÄð?¾\¡5íÆ,…Ã¥>àݶR°£›Ñ€Õ‚mî'©;‹ƒÝYª…~Fß(rÇ7]_ô#¬CÌHª|“%ˆ¤±ãM¯”úÂK�ÇÿZØçóñP_ˆm3”ðÖ¢Cý&âÒFérά3ÎñÀ WÉ‘‹ ój�¨°ŠÉ•Î" ?�¹okêlsü€šy�¡;Š�RRä·øð "*ø[?BôûïŸD:ßtnAÖFXó4Àrž93ÜÊýâ�5úþ�‘Ü ]ØGëßVZÿ¨ÆØÛÖŸ­núŠ ­ž“À̈ ¤í 2DÇÏÔáÌÎÁÒü»¼D>bž¬³,˜S£1ú‰Lô¥ê”¢ÜRøº®ž2åå�±–(DªÿZï ¼�n$o7:{y •yuªt²$QåZg?„ $ÙËÒ øÒ÷E ;½DÆ5¨¶û†Îíä_ò‘}µ°Rùw-¹jÈéû&ÔS,å†HA´“?½[ÝæÊQr¹CÈ0Þ ÔÍ’åAâ#ÿÞ¦ñ\^XWÄãÖ5íhÇVÌ™E¡ú>b[âFº �Ë­E>J"¬.Âèf¨!IV£«h©ŸÂDy�³lñV`z N IºêN¹‚'d¹—ß÷Gÿj(=ÊéŸEÂU­xûÿ‰§`ž:\Ÿ‚5ý¶#B2üT:•ºþ0ŽHhF)l@O¨ š63–¨„f¤B"< ÇÊÙ³�ö¢š Pý€r¶H>…Xbšq ]Ëõ¦¡"¬[ßHQˆM#‚áÛW©`†øàîª× b9PÍ|¸¢ªÊ–ö)ËRíˆ�ˆŠò¹Ü¡�6¬½�°îäŽçF ±ô#sÛÁ@<’> #Å2ì¶Y‘°ßÕ�®Hº»Zº¿ÓŸõ•ZN ,ÑÌuKERöé,ƒÏnKz Ž,W*E’‹q¢i}̨Ȏ›©ƒ)EªtluŽm÷¬Åu�͹r“;¦råì‚ó.�ÔC—˛齷6�jCÑ7Þn,ýÊ�N1õ´Nd¼W É%Ú©#ü«Ž!"퉾È�1¹3ü¸;Yã¿¥Ù|ý ÃÆeA²m®(Ãaˆ½=û«³#/Ý¡÷Ê&ì¹:Ÿü—dÝ7Ù J‚;2h�s?ï§Ÿ6Á!‚ð.õ·îcƒäB¸i)Ž6_ÝÞ¥ÝÓí::Âq9Ï’MÉ›?“øç>Ä0\�>�ØÏhEBÜѵ| îqUUF[�§ìã‡6…‰„š€=ôë‘ÝϤ7’»™$dI Ï“ãxwÒâÒh}oÂ6éœËV�~þõ߃äˆMUÛ£!cÉNjÑ(ìªNÆoÄ/NÍâªyžìñ/ˆk-+™�ÂØ«Íƒ�½zpxU–Ì'Üt¬ù âþõ $1N½8�ù´Úã¯û›¶õ •ìdgcL‡Jðƒ/ÓÿZQ6ü ž+ŠèiÕçó§ö¤¯GG§3ÇËŠfôFŠÁ¯QùUJy’‘’Ïôøú>/î€h,Jå©úÕÛûí¬�4ºù9n&Ö aAU&QÔëfMºbväÉ“º¯sïv¢f¡ˆ6BšõLI@[íç€Ò*0\в$TüaÆÁô—»Ä$ÓÌÔG$™Iÿ:PF®›hÃÌ…‰§åý“6],­½¼×'ožkÈ�Õûz²Ùì*+£‚ôÂÛß6{æ®{î;Û½?€òÐd™ªA@®ÚùêIs.cøFá¯Lg—Iæÿ8H–ØóG¾ÐÞ¼aƒ”ò«š J®–]³ÏâU€t(‚Â]®?·‡ºJ Å‹—}ÍêdÁ{ŒSìÁ\>�zm�æéå�ÐgE±Z³=ŸüÏá½” ˜”¤ ¹t ùÂxú8…Å‚jzA—…Š™xÓ¯^ëÌKA � /&Y�JkÍ%q]Xw<ØGx‘3Fšv`4øÚøx|:–ÂT¼ÅÛÕ`!gvV¶[•.k±ÝnFMœZ'Âðé+feø (÷� ¡º�«R°pÌ,”=õʉ4i�ñßÒ §–.�õ¡V)+ЉøíÈS…^RôˆÙÐÕuƒˆ¡ø:·$ë8cIªÊÞŒ‚º.Õy<Â3›Î^N–ÙýžT¶Y`Q:>$70oäIkÓ5æuðDàéY#üñ¾Deö[Qµ t ÒDv#µ[·[œ¹JÝJ)©n†YïóÏÔÔ46Á§ïfE!^æ¡áùù÷Fãêp™¡è-úÔU×^Õ3.ˆ½Ì�V2.`¬t+98žÇ˺¼‘6•ãú% }0p}Æßºñ�ô¾÷n_ú@A*J?­EÏãyš ØoÏÛÚS4¤V¶~åGÿÍÂ:-éùlB⬽PˆÃJ|ó’«ï— ¿ûX’¨>›™„¦}©*çíÏcò~¦ªFÑ—¡MÎ…é-/§ÛI“L¹hPãóJÄ�rý^»ZbZ>FpÕ^ i s´9Í|ý¥Ê\XŒM)vS‰¦¤9T–�ŸòKEJ`%碛I5Ûm"{sIAšÕ²º:>¦z^|µ¬:î O›ÄÅ:áã2¤!_øº Û Ù ƒ÷®ŽÏ€¼[@_éérµÇµÑÚÔkÿB—ÈÇMé3AoBR¯·öE×’kÁá\b2’ŒdVI2›HnˆÐ/yw{WÈ£41ü®G•hæ[ éŠî!Þ–ÅW¤áÎÝβü†³Ü!ðuaÕÍmLQ¾UZ¦ÛØ1‚M ²Qœ¨O®WjTöýêÊD…¼u¬ÔªvöVÀ}=ª$M}Ë�tti†l�ÍsDËòcKÑÓ›=¬h`ÈK˜¡"iýP_!‰0"�П}q†¶/è%¨èëã¨þucFC»âœV÷r uk¨ÙiÖœí…èÙâÿ@gT‹Ï.E×$?RÈç®k΂º‰Ÿ½ÑUÉ­W{¼Ä)vE[Å‘@Ü;`p e$ºX*—%Yö¶Û§Äìäj'Éïà¾ÐÒ¿¸ ‚I�P`QÎ>ç9©À™!ä˹­Þï¦vˆÓŠ+ì² 7ˆ~ÚFU}º¢`÷CŸ�‡¹Òññ[ãûËârš¼ @)" Õ0/NÆF?œosþypÿƒ“¥À´[(Lÿ´­Ì¹b}cE.ƒïîVÏ2†ÞঘKÝlNe¹%Yinï`:µ§…D6áOXXuè ¶ƒDfb4†HU×:záÔSu”jêbL…ÃûÓð@V•eJ€0¸ÙNɯ>Ž=ø¸ªC]U¡ã{C¯!I¹‰SRL"á¿Á«`I�K­#Z4Z ™4*ø‹d€UlÕš7'6_¿~°êÙ�æþzõ³·? Ú”2 W'‚N²¡[°â…êŸäwí0ûÖÎ m¯TmL ¡_¬·†gWÆTB¿Ç‰*ð­Ûîúz 0mÚèØÅÞ&Ù©¨mC¦(ñuI+³y; jÈc÷ú|eg.2õvg(ÇÀѳ¡þStäV¹âI–šõ©*u†@Ø1‡]î;ë-:/‹z£5hQÎKNp÷­•ÊÓ ÒÜ;ŸOJ°-/(Ï¿wyÅleYè(M¨ ÛøÎêp[.·�[uFQYcýñNUÕN#0äYöH”ôâWD¼¡íª†#ypà d›úæ`Þ­°Ö$,÷Ô  ‚ â,‡R¯}Lì=c÷•~î��XÓr°¯0yúb«EeýC0™!ÑÛã­ßx,?ˆd—ÍÕÔ»ÚߘnCº’òŸd㔪NZHoÚJ;üÿÉ€Œð¨,U¹c­õVK‚ø'Ù¬,µÀ0œRººiµ-Ãê³}³ê‚üÍ—«Ö÷ܶޔ%‡•”m{Âi±0›ÂÏ<îÛøRª œ‰Ú“ïbÁ¢Cl¶ßf˽Æ&R‘ �‰ÖT�ëz>­K·èÒ¡|ŒUJÚ¯s<üt±ƒ'�³=ê¼ôÂ’P^Aéé8E ¦„¡é´�—Ýà{Y9W"á\.~±Xë ¯¾ÓjÕt-K¿1iìÌöf&“HOõ49ÆÝKÇÝð“tÜd­dºÊK“Ò‰ëì¥_ø5†P›§.¬KLIá·D„͸n1¯€E4áŸúQøÂƒQÅcnçb`¶”™h úí‡4/ßï·ÖZm©¿ìˆ®NÌIyq‘/ÆÇ¯õÜÀ(ŸA-ØzD°‘w”eW®;¸àÖékVøÍµi‡Äªgú»¦cØ“y›4gp°Û@±5q"Ã.�¸ž‰~e=Í}Ÿü'Š—^@õ˵ì“ýªú§¥lLt¾ ¤öÈW6!P]Žeïº&ÂvÄqd£AêûËçòz“O—†²°Ûª=dŒâ¿úÝIOßÂ/JŠj³íQ¾Øõü„ÜÁµµIð"‚^+9lFÃ)ç×»¼�Ûa6W†¬&²=êJoá)'Í>}N~%æZ*ƒ9‡ç�˜+Hàë€zµÕQïÛgP­‡ÖÚÚkå \öÆÈ…|E–çò\LÅF"£má­OÞræZ1§Àœœ ±DÂѧ¸›wðÁëµrž`€ÒÃSÇÓòªNåÒ9ô%U®j_ølõaÉ"Ð1Ê+Ød†_C* ®n7á•oA�m¢œzðIh×´�ˆï r>ÂÙ¨Cth™r3†�GlÍü[H»ð)dís@Š|9k+á–³ðŧ œW°-H_‹ñ¶õŠÙ%‡Ð=¥ˆ°ÙJñÐÙ!+ùuõœŠ„>Þ A=Vçj£Å\F‘ÔtÝP��å«ÖÛsçÊc¿Ï¢Ñ:“Y–Âe÷4Eço2ÃÌÅ�•¡—1(êu¦.ÉS1­ÿvêž­‰Jƒà™Šqà«&ÑÖΑ&7‰°Ö¹j?É+DìÐß,*‹QM[Xïü×ýÎÕÄO”Ï á¦ gÇëÝuk?�2vg§jK¶hT{wòOí8qÏÖG|ÆïÒcH‹GhÒ�(í†q1p¾»ÛŸù±š"û‡[­€ƒ¦«ùüóÓ±ÞbTYŽÌÙÄňPHÞÊ~ÄxÊŽáûî½WáSãp Ò1qÌärWE©—,î†0'a×,’`ÁÅag" ÆÀØ™ŠáߊE+8)õAmù"‡pŽÑ4EXÌ�¤ ²*4—`€µy U”òšÒœvàæ& ÿWXO¦©ýDDb F$̽¯>Ub›{´¤QX�BZŠ–¢·Öø=î« ž¥]–ƒª¯ò]·`«{½j`…åO= Ê ©éE1¿Ë�ôU¢Ü<‹~q0s¦RÚŽùª,À×ðïó‡Øir®{z¤" bRù-·êº—Io€°Ó^’tÔ³$®ÎnŒcߎà3jŒ!dWTb˜o¤÷bNf  Ú°–´{€¨ _?]­:ê÷Ó�ôð Ðj´bØÓpš¼²ÛÉÕ@Çæc‰…X…êuv8f\œ�‹AÎ¥†ÕWßCKzÁkÚ’¦\†ÇïãüñMѵßÄ£6Øüõ\‰¼„.ržºÞÿãdaS…Õp‹ [�Q7‹:¯¤†Íf‡š\‰öû7íŠâÏ‹spï3Ñq¿*_“¹1%6‰ýÜé8õ}ˆÚ¶‰› $¿ÖŸø²š»š¤+ÉÔ(H‚!Bà‚,9¹ã`‹,šº#1èo¹?ï·ÌÑ€XË«)UÓÀØw𔜀r Œí9¤ÖPì {'lðÇñó„Ë)ø(e`”øúè[²Ù™ý¤ƒ4¯e$>Ù H>øKºý“��@I¡GÉ ðÊ ¡Êï FLÎå/ìFŒ 8r6añ#óSb*ò£ü‹¥Ù°RÀ€ú þ †Ê1p‡É1Ð “j€¹ †Ú½Ùßñ0ìõùwÂ%< ^Œv'ßK‚ÌÖÓØõ²}¾¯ùæoœ.ìôõ V?†2RL'9æ×\LOþÝ0øSª+àm„Œ kA P?êï73™kñÏòcŒ¡¤b°;F’£ý>ƒ¥bÈÎôñ¤zGÅ`7QFgƒ÷”ú”ãdz¨Ö"F¿¨ì¨ÜTÿ¢»ȬÌ%89 (pg!ðÄ.ÿe?òÅã3ã2ìœþ3#ð. P*–›9K‡ÕŠ>†³0¢“?ãòÜÚ!*é‹,{ÆÙw¸^+ö­ÆÏ{û7çïÔEKa§½X•ÏËÅL¾�z g!ì³Îbˆ�ìJº�¤8T�eE¯úÖ1 ÆˆÐ=~7zi»æýæ ø­ýÒbÊ×LŠËë,Î�¡WýÚ€ÑJ}�46"¿ç·5Wqx¨ * ©™\=uÇ©tÿóü‚úŽ–3½yg0P†ÎÿP^D“ë‚×aÑÚ‚4�£ì÷“g7p×Êý¾8Θþ`˜g«DSvX©ª…b¥>âÌ8ï0e¤þO™ÝÛBN8é°dLÄÍØR=:Œ[Ã�þyþÎ*ùTV')vâµD‡áÅDÃ}þcÓ¿º>P)ìCs/†¼l~Äy•�|’éhr8»âÊ‚³~/3yãEòd¹>gÄ`HÊv¦Â„ÕФtÍVÄy )ëßbu´î @¤ƒ±J4åøî­L'q’Ïu2Ÿ¦ø×y³fZ.yG­õhé©1¸B{ql9bÿü©ñ'G†‡'¢>w1p:è�ŠÀHÈ_éÖH�§Yø÷Nž�- Å“ÎÜpæ—<Ìwù+­a8 i1=x!¥o/Š=D´xñ—Êøk„J( áRßM˜Xž "?ñå«Âø%žŽ¼ 6Å[üåäÏžƒóúþ™#”às‹‹ ™œÌD`p)úÏua‰�ú2ä™16ýÙü¡gD¾–Ÿ óuH‰.�F^Ž]’ôv…<ñÿJg"vÆð«‹€ú¦ø«ìª>ð³rHöW¿w4Ñô°{1ÓÉìßJ?1Ÿ!j¿‰}¦°�AAz Ëi0=cÕùTJ[töêÔš°ý`$ŒŸ“ðŠX >ȽÉÓ Z.Vdâ½%­k#_ >iOüO<š)PöâíZ©_hiñI å¿éÌ›#ò™ðkø’”ª¯Ÿ5;,.ð½C_>2XæZ(>ñeE£oôœ\â/†î&«î”ò�Ò}äý}D[3¿æ9h$Á£I*awC äØš"ɦkIµ°/íñé¨ûü�…y‘ÚÃÉ�`WðŠ;„uû_›|8ȳØ*\ÇãžW�sÈò`�ËbBÔzÈ¥Ö‡/i‘ŸYä–Ô9åµ÷Z»U1UþUñwE`ÝþÌC •‡ßv¨ßyŠØgžtŒWýˆxwIUâÅþ¸Í5*•]e6³Ö¤á>=•Š‘¿bêS�m.[0i¼ Ý9 îœ ‡©èøÃ6å8ΚL-øîw•»ºžð2¢ÂŸ>PJ.óÇPúýÉÂ�„2Oþò©–~ÔŸ- ¯fÎ4 D ²½‚Ó‚Ó(‚w'%/܈½2Cž1hîÙ1±&ñ ]¨òj3ÑT.e ÇßM2‰$âQ¸?/øÏ,�WmùÒdV ùU¬¦uΔ,tÇçìÂ�ƒÏ”T�YO¹„›XÑQrAU‰öTC¥ììÜíêâ­l視ˆÎ:v¿6žœ¾™©\¾Rr߃$>=37J¶ÉÍý>³äjýœ~�Ä�Ñwœ;Øw‹ joã%¯“‚UæÜÙ“øVσI3_Š«ÔeW1Ünió;éUèÌúìl00Òâ|�I�Ô¬kß�_Ûù Êšé»iø©’Ù^‰Õ�A²×gû‚]³Õ)á]�õÝ�Óí´¾åÝÛ+Êôïí€{úuR´Jà ²‚³�Ÿ†Y¥¢g�†ô„R�y¶w[1j6—ËguE™œö‹uðläa·ÃlH–PÒx¸-ä^¦–E, �dö(rvº9ù b®�k=Ü0G»Ž‘,ËÐþlCºÑ+r—ÅÌ”5õ©®öŽd%q^K§ŸoÐ>eöi“ú_™- <„0¥ªè«¦[¯î/©—GßC„"(¦ÌÄh�¹— êÕ¬gZG -‡�V’Á¼“�$qç^0þr�Èÿ:-ïÞûŠ«!=kF~½!|}Ɇم/:Ë3c{áàD 阷D1ƒÒ›çO·lX“úØ1¬h—ùNQÌü¤­.§|WoL›üÞÉQͤ1Ü[.Ù”$-ù'+3os[NâIžÏ:‹QBÖƒ�Чö‘X,ªTÃ(â˜Øˆ^¶ŒûAW[Káhò¦Š�"YÒ6Ÿg¬à#äW·A!¬`A�K,=‡—xk‰V¨¬HPƒ—å­¨° §3è<Þ�êJ‘Ó¨ã¡aR$©ºÌ¦–ö\¾ªìûG[LÉ;m|¤Òàª[Nòô Êñ*º‰sK/Cb¯\‘(­EݺôôÑvÞ©Æ2™þÓDPú†¹T¥˜óúcŠ$Åè_g¹\Ìe—fR_Œ§’Ú§fv0Д´7¦Šçzļ£& µr¦‡n¬ÍÐI’Hîóã“Àv5×èZæÒé]ŽÙ^’8 ‹)’ ]yšŒ<ÌËá@˜±èï(ƒ¹^~VÁl4\è1«dBÃg‘ΜœÍftæ‡\æï#!°´/§ëñj»n—c�qý¯,_ÀË‚´w¨PÛuÂ\* Å׋ޝ+½¡��ˉÌU4­¥÷Úhk¾V½ÓÎ�Üa½<|yí}ôܨ »7;Ó[Ñð—ŽÚÛ Reû) ’uÀsÉ(m®Isæ³'ø0�ä’[Ì- ·Jn$·šÉÐD<©'xâAØ�d ?Ü«ûáÒÊ.0Ä"¹¤l„å¤ã'ó�á í˜AõÑõ…^¢¢²zQæø‘Åª4 @¡X0´åœNò,¬Ü[- µž·,pk”ûrœžE“æY$TåÌÐT²’Çñ$âß.¶XI¤ÙäÑŠ›³°ýpGô ØÑ¬¾P AˆþExÚ FxïS™¹r8_ÚK„äô1ðô”aýŽ3#óT¢ö  *óÊšä§Ü…éô7v÷õ–érG# ÞšdI\Ña²ÆÊ®»ãî×5UÓ!ÔÔŠáúÞ°,Yš +BKªD§×üäÍ,Såj·ŸãSõ–I´°J]E(ÎÎÈw¼¾â[S�¦%RÌ|!È¿3ÓR¸#¬ÊÏ;ÝŸ? ÙŸÉ,Ž hØÍ6k¶¡U**øw*/}ä6Å®Šö|Zåöí#‹ËdI5ümLJÒ<´fZÙ¡}¤E„19gjç½ñ\Tçì:ŸŠUL?‘adå€Ö2¸A§£· ‰a8,З]Ž`]9“ ?¬f×5ì�iÇú:#O9�|¿v`niO±6Æ­TÂ�]ÚŽ:Éßêyð¸GÑ­Š7NòiOr•U�pß>‹¶2á§næiRÚ>™ÌbC>Ê…lìÓ2q^RœÒ­[Qí"KšîrQÜ£CÜ~”KŒÚ`*¼üÑ꓾I ˆóÀ8O äóª >IP¶Ä¬ò„*§¡ÃÕ¥œ+t‰”ïP$ U9 ÑGFwÓ5%™ÿ&ç·÷ùI£^_kÑ3æ60%à㛹cÍè‘°ÇÃSÑV/Ñ×äÖCð7Ú;)ÌGkês®ýt’Ÿ{Ê9×èÍ›kòÉSyù£ÍüÎ�(Ø Õ‰5ÛùïÆÆwáöxSÎݪÃÉ�/?”2¤�اQÚÑúõíI¸~�Ìd�Ϥ[ÔÂmòyO:ÇifG¨ÅdKÕ"a9¢H:."·LY–æØA¬ð–�¿*ü…t÷�U™ü‘GÒpˆ»ÏgŠ£½«1I�tá]÷{›GŸóÍœ<£ò–fäš@Él;ìÿùä?¿²•Ó网‘÷’<æ�a?Å­‚³«îŠÇ€œ, V/ší¬† ²#ŸÃJspõ×X87õ†H¸>UCž— ?—ÙhP«Oý|‡ŠkùǂƠÂó—ÀH¸ÿ=·'qP"ŸpZ®“*>ÙÞ‡Ó¼òjšðÓC1«xø×ø —^=Å9ò¬{‡b®Q.ßypš’Ñ7…¬}5ƒ à‡qÞÌLRC'éL‚Üj`› ?^Õç?¸shGÕ|òŒ+ºð#^¯� µâå…CQøÆ^¸mq�‡YK´'<ùûgÎ e…v>—�½‡ýé/xµÍFçF|8á¤U¿òù±'h¤ž²ž{DM8 Á°'� ¥¼8^Ðý‰‚r0)‡Ä¥ŒöЍpÓï[4½Ã�Ôž�¡ìŠ åŒÂÚÎí¼É¢Az“ñ”‡MºóëÞjYs¨ù~^·,óif!2‹°ÑÇö[×b-ò:xáb½†1 3iŸÛÖ(žäÿZ�%/FK·xk+Ó°èûO𚆺Ç[ç¥CM‘:Å¥qöÅ>öûÇŽZ©€lßÁKWÖÐ'pW`Ã<®ZQqµ´Õ7O\{L°õ>%’|\>jpÇÏ�9xj-)¢öÝÊM 6—X Ï.ÊVW&ù˜g…’­ÆH f¥t;¢ô˜©Ö©v#¼æOŽ™§¸ìubŠIå”çÞÉj@"ÌÛÊB˜Z¦˜qiS ©"çÇɯNÞ϶£Þ ~žæÒ²W.Ÿz)ÎyxïU¦YžàÒàëÌ ^bÆc¤šz Ê}KƒZo«\®µ×ðþì¤NK£ ÞŽæz¾Æ’á c»éôl&3¹L<¢yrÇs #:Ö˜„½{jÏ=à&†¾0Z™liÊbŒ-ëØäxÕ6º¡v?é½¾À O³‚J.hœKÜ2V·ŽDáYKpà"š›v…‡»²qAÛ¿£R¯WLË‘« q^vúni6“Á.$)>ÖÚf–Úœ.ÉßÝñÒHCÖmlà@ªcA#¤èš‚ZØvk—ª_´aSæ—³*ÐŽ³®Wʲïê„,¨31»ÜVz{UÂUßb™u-hµž‚ÊÂÎú&ü¶•0ª¿\Ž5VeÁõW|è¼?È�éE•Ã, �‘›�Í¿^�¬¶T˜#qO¼k½(¥_é%Ý8‹“�¡íMÿ¹~äÓ4àúqÆòñ ¼HÇ}ôt׋:ž]Y½×ï”ÙgƒœÉâKÄúÈ‹_`ñ…ýNÞ8>ynü^7*ùôÊj…-­øÃþj­ÙePÛ*üa_et‘–ƒÑò¡ås6]£iø‡Âƒy“•&t¼””“?CþÃU#sUY)‹¿Í"6|ƒîê‚‘…©ÔÎú>/vâ&2Þ^¾58eGy-ïšX±0 ë�owQ—vÿÀ§“^œ}œ%ǹMvÉeÓ›÷ÝRÔ‹}7H䓳Þ̦33µÚû�–,-BP¼Hã©vl5,P®v„±øÁSã6Ô<†‘¶»º7[L W@ëÍ4•¿¬Pz>Ô0›îÇ9í=~iœ–Âܤ°™i�éÏuôƒn2Ä…3|z†è}Šß¼>g.U�¦{5LTÀÉû½£jÖëQ2Ën@�;´|smë¾´p€§CÃD£§ëü욣Ë�^Ÿßº›¨*9ðÕÞâ>ôsâîôeøW¯®ÒYJ·©HË7Ôgc4%4¨Õ�½ z]î>ö:ó´jU•‡Â¦ z���…úVMdâ�ݘ¼è)§|>ÿ¤+ vsStÓó4!€œ€L€ì€¼Ån û§ûF.7)[1Ö5®Hž(ðË ì·¹ØÄäˆerü‰nª±“tk!-©Ìã„Ã%½P¶_TFjx{àw( ±j*«'Ý\m™•v‘ígki9ä†8âå¸à�7–ùb9&K"¿�‹|æ—ÌÇ/p»_“�pðs3�µVøôEšlÞÒ¨�íÉâCC˜IKÃh‰ªŽ1¬QFÑ©1ZѪqQ×Ic~] ¨áª!@@Ð$‰ú Cc€�bÐ40Ík01¬U_»¦³°B3KÔLV¬´*#Ð)ÀÒ��-ÝÝ݈’$A„DîÒwÛqĉâ�…‰•1où|ä©Á¨F’¼«'¢©GÓŒ«ÍøÊ–.ÕÚ´îš™WW.×¢±Îï\ÂQçcdàŒ¯=õ~*DÜ ÅJk¼Äºöë-ÿ›Å +–‹�!-_’Ì‘õùrQRç­ä �)såœ3°ÖbXìnŠç/>¾å·³SmV’[!ìX±)%;S ’Né×…nü‘Bëß?'·Ál˜C #éý,WjÉ„ÀlX3°ø ³†³"êkIâç쨇ºXFÅ  •L«ç¤]ñœk"ÃΘtÀÐÁJÚ59X¢kª;o¡ÄÏI»üd¯XïTù¯ú+_P‚€0f”!xDž¨‚Õ2ÁM{ÿ‹†‹N\rÙ©3W\uÍu7Ü„ !HŠfXŽDIŽ*1UÓ 3žH¦Ò™l._(–Ê•j­Þèëh¶ ”MÆM‚Ù"Zmv‡Sr¹=^Ÿ? …#ÑX<‘L¥3Ù\¾P,ÉåJµVo4[íÃÎQ·×OžË X®PªÔ­N�Œ&³ÅjóA»Ã‰ºÜ¯¯à ’¢ý�`(‰Æâ ›H¦Ò™lŽãó…b©­½,T²R…Uº2…W¶ˆÉ0›GÏ1ÒyG³p9Skäjå|­Y¸Ü®Ê\ùE%Õæ *:éNÁ¢ °‹è|u·T·Q�åB*ù¿–^÷ÛܧA7LËv\ÏW€ÄIoÓ Ó²×ó qÒ×tÃó qÒ?LËv\ÏW€ÄI«é†iÙŽëù �8xÀ°TDDDDDDDy3333333³ˆˆˆˆˆˆˆ$Çn+é†iÙŽëù �øÞŸ““»sxûä«ÕÒײ[º»Ìu ¹vÑósÏí”jaÖ�U[_c£S»Ùå)‘2)ü^Š­?ÓußnàPm§ýŒh=?LóúS×C­_yµ{DõÌ«ìQÊ»”�wµt¨Å•W9ò#!7dGfJ¦çw‘Ô´“ìµj¢Ëx kõj´E"mOÜW-Ce^ –H äðçˆøòWãÍcéIVÝQºb­*Åv&*{Ÿ¼¥Æþ‘?Ô Öâ—°E·ßµ…·ß‹»wS°`L”˜ãJÜ"èòò« ªJ7Y@0‰é‚)|ޛĵ¸+௃¸o¡À¤e袠±`“)f—â�—§_ ¡C¦Ó‹Ð•Øxäâsð/tå7¿í'Æû‰øóH®« EoÁŸhÍXðí�†ü?Ðú�üýmxàµ-ÿŒ¾ÿT÷Hà'ìýžµ ÁÑ„I¡iÝ7°� FoF $ ë>Þ|°žž±‹õݰËÁãQPPK ÒV1]àíËÖ˜a˜aTimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-symbols-normal.woff2UT ëÆ«jëÆ«jux è‡wOF2a˜ŸÀa‚j?HVARƒV`?STAT�$'�+�| Ÿ/V Ó`ÇD �j0�£T6$ƒ> ‡~… …'—Ø6í˜Yw¨­ªž=WyœDL4a&)öÿNÒ!Cn ÐR«›ß""�P�Ù=#ˆL»«ãÜ£62„¾ã2§ezóVãÆUÝçrHÒYëT�ZdkK¶ˆ¤#ux3*,Ñò&‘I©Ìdcbͤ[ô>†–Î×È)g9upÚÓf4âpЄóD¸l�ÇÕV†¶iElºA³ðe Á¿zÍSûÚvû¿—ñסäc?³<¹üwùý{VÚ9ÆýCÔ=0MsF§Ñˆo9åÑ’·Œ[ì¨3óúß¿Këܧ'è÷Ô` ˜”éHAö̦Úb5™Ûmsl+Étϰ˜œaôØ^Ä¿ýÚ¯­Òm³[âÊ*¦8 « ADR@3P°ÐF0À ÌÄȉsÖÂXT}Tò ¤íŸŒ±”¸¡MzK(¬FXŒÁ3q m†ï±wŸËÙí –†fC<ÂqÏFí_WX—5+ëØ:„È>Ûýn›†‹h¼D) Œéâ߯ôßàåíñ×t!¤a8ª´÷N`R,wŠiBØ'‰©kÕ¨ùm§ €ÓŒð“®w$¶Þ›ÇìƒïfŸ\÷qöˆŸ<²ý9¬J‡¨¬ü:NbñwTvŒ‹”²õc\·´¬HÍŸãÍër_¥ÃRJ7¬ªÖŠfŽZ3O­&`Xc?´Ò¾ì2IJ} 7Ê®D  ¢×µàg®x×.ƒ zÕ-RÎ:½ÐE´z¼Ô´Ì©™!'†Ç¯žÒ9“W+·wQz†Åx5àr§åÅ6W1üj4牼ƒý2Õž —Më&•�ùUf*G\æÖð 0>™| wgËùx•³ºõÔ‹M÷>Ÿ>…†Úü5ãçÊ—QN”ãx=KŸ‚¦HQ;êg<ørhÜ@âèü9t�ú"Ý7o: Yû ayG¹Ú1è¼gz[LD¦tÒLj–áÒŸYÂ\º_®�ò€þ0”r™Û,+ÀJþð–^J åS@r2c2‹Ð³ñà zìyFÈ^gƒ¯g—o”š*€o}l ÷Ãl u¢Ï*¿ÊÔ´óšÈ¾N^Æ €ºÜ€ *€6*ãAÔ»'ØÃà}À*WôÜÚà9·ò…oà«Àà·0Ä[¿°zõìñŸ8@?A{|Rô%"ë+ÚWä<~ðÛSé«‹Ä«ß9ÿp¥ùÓm?Ïîù½EL¶¦&äÿ|¬÷—1’“ò™®Lƒ±¾¢�;´úS8ä1É€¾Úå“Ë>ÁÊŸƒ†M­è@Ø>û×÷Þ@)Ð/€¾ÒÇÊ|oãÐ>èm¦@Ù»ü~Ï:1£ÁÁ패à [A`°�Ïy�tk¨³]çû`8 Àþé½v�†/¬NTÑN$è¹CSPD%† ü“š‹áµ¨¿ê$Xw,Ÿ'sÍ< LÏN¹�Ü3ÙXïÍlX q-Ï´Ï[¡«†%n¡ ZŒyø…³¿:7�*ï¶\ƒÜ¬b<õê¯óö1íâŠ/ˆ@}â`\»ŒIõu¦½jp¼h*bj%jܽ O›ÕuÒs�æBi7³Xíuâë“ãFýÊ=®µê]A0æÍßáJe…‚r›2KKl¾’B¯áÆÚŒå-u�ù™ìsÙŒ<¨ªÁHYm¹ÇÌYR¯EOÕ;¦ Q{ÙR•«ÈuV_ôFœw um5ªnúL]ÏØGù¹3‡¦–SDToOwWcƒTR/®«­©®ª¬(••– …üü¼Üœì¬ÌŒô´Ô”ä¤Ä—Çf1ct…CŠ&¢ð¸H¬Äû^ͨ—�IÑÄOû3KZÅcBäì’'?ª5A·ÃGHœŠÝ?“ú™±Ö¶³¸]÷.ˆ=Í¿xb|ß(‹ ÚÛ·Û?çýÓF¨Ö.°Åì…„ºìšÚ—ÀšJ›]98�m‰³u dbS&`¯ú= Š]ë$L¢Ñ‘Õ¦/YìqžÑíØ²ôÛÆ’sÎExzÜanV²Û`M”c`¯Ï$®9Æ�Õ5ð;�0Ý�óŒ5ñ·•ÖNœ'‚fsçDtÎ8u±‘/869S¡c?yŸƒ ÚðtÙ®´CcŠÓÏö¥DyÍ�Fr Õͯqå+#Öžø4·Ð ±b —A£CpæZ7;Êg®Ñô&'âbͯ8êä3a3ÈM’gé˜×a^‡Åy&Aèð¸/$æ;†FàÜ&ÔÊÑͨ‰©ÄtbŽ…YU¢kù#ß&`'¼bR˜(Rˆ�5ߤÂ^Þd!ÁÙØ)Àm¢ÀÚ3æâg{,õº¤ñ{&ùf"LUTOæ_±ÒªÛí8¤éT³ Bíà ŸE’l#q.d­`¬�–‘Õ$á>ç¨>•—ëÑ:ÅbO÷µé´‰3\ƒ)7á§áAVâjCŽA±w»ÜÏ-·G¹k—ºW„~7“�KTµusD¨ *»ÅNÄí²ªÐn?Ë4s\ÄûO ãO°W:W#zTéðÓ®¹¦å7šç'24aå¯.Žàñ'íá9­õËe EuÂn÷¬ß?M‰cwò\BדúÍ´4æÄnìîò̶zÿãñægžØ¯¥Opd&kÏyI&6q¤žwüÜ&àŸ¶iÈ»/Q³‡s.wóH¥n4Ó²7ší:»ùl¥UV¤X7Þ0yH±t/ÛÝÁ<˜-°�;W�˜«Î6B9`LAË{²ø.F‹º�ë^V~T{)Mgb©çÃÅbo“ñ< Ü•:Åæ\רÅ bÈÊ�Ðñ~47 Ú«¸½Ê‘uˆëC½Ëß*¢ÐMjÅxƒ×œÒÙ&ÛRÝ+…||2)-î˜åì�’tŒõàÎËŒFEf %ÆaÇ�® W,˜]–.öR𣠲ÏX³9j…1°à™›>©J夑 —£H³È¦O º+Q¥>[ni�Žó¸½Ä�U¾÷Ç©ÊÙíÏAu 9»+ &Ž:Ž}X]ª| €�ŤÕ1 hÁÔl=É4¸¬ÖÎ ÝëÃå5ž#´Õ^ÒÒvlƒfnÐ^¦{EÑ”eª¨M~6Ñ`µ Œß,” Ùœ•/ppÈ¥öIûÁüWðLÃÙ�€ý‚½ùZ‡Dõ�9e6cíJ^¢ýM¡¹—,”<³RHÂZÃØ!0|¢vés4”Ÿ»6ejLzµ¶Œ™$D sØ}ãå)½,)qp�‘œ(Á1í¡ã3ÖUƒpVáv‚m!hOÎél#£.“_Ç:l``½—­ )@Œ|µv¡´0zyÀKWª]ý§ïiµn.à±<3ªÕ…ãÂøœ†]¶¦ØŸÒK9ÒKÒ=†`¢ñ.uK:ëÓ ó\[l')Âaƒ‘pÀi¾ZéÏMï5 ‘ e=”7µŸ@%î ¾µ\7 kœTì.ü•�ŒøZŸ„ú#}œ*ŸD]Õ<âçyœ½Vº÷D€õU[4XB…:P¯êôsi…+ãUcÝáB�ôjg¹©3é˜Ñ�¨ |V3°"§$Ñ`àå§Þß�D -—*xCô.œ©qzÔ;áø6="Tîµ!�­úϵJj_Hβé,ùºoAØëÐ'4ÜâŸõ[ì•«ŒìÛ )E }–³gIYñôï°fwG'šÀ ÌÁ´ÉHˆ`f¬ôòy¿<øø¥Tâ<ßÃË„afDëê, Ÿ%39ŒÜièבOveÝ–Lªµ;�kñ ä/¿ÿ-™iyö›‘5)¯#~GEzJø™_GE¨HL×=ý%nª_–=£þé§©ˆ§–ýyòæ$*sk÷ êí4f ®’¢I> n)–‹~Ù™:Œ'˜P"äIMšJQ~Óé:ñ|fñ€w³£V§:£ˆdÞ :‹‚Ãp ^×0tå+—)Úïì½NR …Á~a/F%F £z!Ÿ~´(ÖÝ_¢©D[-M.Pl²$\á šž³ëEb}›ûUÉ §¹T›V.g¢4r…¼'EŽŠ”–©4TÇ"¹#«üdÜ¡An’ô3ntªÛÔ„.(íâãs—Àõúróé·7)úƒŸÙa¸/ÔM„ðOŽB�?‘š™®»6a ï ¡–T"\¨iÝ…ç"Ôz] •t–Q*¦³¡ê[’úž›‘¿YOõ±¨_ö Š!—I.ÑâÈ÷)Þµ�LʤÅi‘Ãþ¥0}a¤\È%ëùg|j©xC /‰¼’LúopQ°oT)u¢/é¶Òrt(0“öFh»Oj7­GzwX#B$�@þ‘Pu÷b”*(�–ÃäÍ=#èjªäqnÔ°öÛq‹9ò1"Ý)G¼ŽŸÊÀ½8m¹öGÀÊû€ßys�‹cm²·¿kPôõ¯u.xÐYž—:Ó«Ò%ÁO¢2ºfÓí ÙÉQ膽ƒÞ îØŽH�ÿ¾ßÓ„Z|el{¾›Êw_‡� ËÁ�ÔðЀ' Ȥû±¹4©HÄï¶8ãÁtŸ +§êé[LlßÜÝ­Þ°i"š¸ý®/Þæ³o†nLæS­YzÛ³‹' …ôšªÍ8j®|)W,Ng–sÀR@&šdö_‡! ÙäËfº‰Å¶Ü\Fa�QÐL±}¸Gex*à©€1ŒGûk�?6tëÔÔùœµÛÏA¶ëž«G[ñáþ–Α”xÆ´äIìWM—_¦U]ºÚ}éŽÑ|ä�—n#-ͬ©kæ ü.ÆÓÌ/©ªDU‹y—þ9fßíÓpÅcaMïN_ÑejÃ@äùº@÷õ|ò¼ ż#Æjé´è�Ëzå3 ÇpåÚám3ü;0ªºѸë3 ¿ü]û"]óó @õß!ÇÃV~øLü)Ÿÿõ¶ wwgýß–Õw°Kò"¡#ÁJb!˜=ÿê›s;¹fÞªÿ‚`qüÉþË'çFÉ_|¼B¡n~WþÒ•ë„P“mw=3µÿݦ:µá/Öý³s(¥Õtø2Ârp\.ˆH:øaqýP˜,ñãµNÍÿ¹í8,€ óÏâGš�ÙAj³ã´ÖÉÏnè¾Ý/f¹ìˆÒÚ äìãk‘%ëʉÍ=ºësº:GŠÉž¢ZïV�}²¥^þëº^¶iä!1Vä¢19yšöØ?òø¶ ª<ÜòŽìtÀsâ:Èp¤–ÑAÄŒ˜Åï¾™aO_ý3gröŸaÍ5ªÉÌ{5ÅuëãN=dÜåO7³ô^ªgfŸ«3ô6ã¾ ûûÙeöI}û´5ðá×w¹!šÆê׸‘•p]»üF±OnÙ æ6¨6ÚøþªZM²»|£Ý�™ùslÓ©Q¾ð5[8ø®­~Åžk-¢õ5&-Š«iIðdö¤ê™çÚie[çJ…Â@*®]û «5oâдÍB·‰ ù±ýž˜3^Ux‡K¾‘¡š£·A÷ü%—WÈæ©6FÇìLb�¥è£U†Ç\ñ3i’»¿œ&7øÿ®“‹5‰®˜SgTeÀÑðOÑ¥rNÈfû±{Í/×z{ÞÝÜõÄ!ͨヨêÏîÉ?ÿuR{ltF÷[À¿[0ëܸÄð0PŽíy  …7˜÷ƒÞóbÄîaÍËÊkW¬ÈÞ�ïíþêÖÍ®WtNËµŠ¬·�¿"—7nÌd;0ìUTû±3ü¡¯jëþ|ÍUrð¹\Ñ(\ÐíO’&¥T gáUƒ«š«»ä?¼Œ2ßO)Ï4©r[Ò ]âÊëÉà÷_?ÿrD™!V ÍÆCb|BPqÎ Ûl ¿$I³Á”XM°|Ërn˜?…æ¡'Þ\Þuÿ]x!a6ix}ŸíÅNÅtǰ®iÅ�•‰ F Mé£òÜ‚Øhv'çDJnii©°BT^*(¯./¨(u3‰5~àtˆŒØ„ŽÃipô^ç‰ÿIg˜Ô?@¢ïòµ7AwCýå_Ny!õO˵žð¶zð{R€F² F&Xc'§#0ON»˜S¿·þè¹ðºø¨ä­“€n;µ|L�dÐ9çÎo?¸;qU*�·Ÿ×¦M^e{§EçÕ³ƒ–ë"4¸ó¾c:)ÑPlÕ4Ç�wÌ—·Åq‚¥rö®]|dììšúÎ~ÑÿË sÎ!I�À؃Ž�˜GõÊMbIþQ¢Ä=j\ýó³d°ë½´òŸ‡X­³£Ì TY˜I=æ¢2£hnèƒ>Ìžsçg j‹ÿïx�ŒYïÆ�þö¤K'Ïyw Ðh6Õù1ž*�‡Ê2føâ�údyÈ¥–”ÒôÆ<Ô~ín×'¾z =”qÂ�0“Öpãg°uƒÿïqsýdº;^Ç|@h|–P$�E,oÜþRÛ×ùÕ��o\Œ9g"�ž ïÕ AV¨"f²§ŒAœÂÉ n€è„Ôê` ¤kVfÛnd£pÊî}/ÊfÃ7©­&>ÆÍ+¢‘å˜ í!Q ãåï;ΧÌ;FÙøKЧ{¡da9倬 LwLwè$“–úBgÆ©êvº�'³5„®¬“ PÈoSÿ“Š‘Ò ^šZ‚Ã5™õ3ωnp$Š—h¬%ÙÝéÝæŠ†šrE|øŠ ±<Œ[ùáÎh´÷¸töÑ SÔ¥m–Æ8ÔòÁݪë¦$CÜwX�ß[C¼ ùù­ò-ÃOp󃜿ã÷§ctXºC’ iìF¹vWôýé ³DŒŽ§IÊéÒMÏþ²¬…—›^´™„Ln—›¶Ã/z]ô¹¸}˜»uåG/Ò.Ì­=ð³¢R®µzü¥Cjjg;9Ý#òx—’þ¹mXœ;’]Ükɇä;¨YÞâo*Œˆ< ¨7™ùÍç”fš Å�E…¦»ãP¬³òàX±º¶ ¯0[HÄÍŒ÷šø=jWV%ÓYY�vèñ2i¥³ê‚ØâŽ i¶ ËM�%K"rK³K3)h$=�ÈwIF³^Ë}ÁÖ¦;y�~öÖ®§Q�»¹D$÷øºdök¦f¢Ghh¢‡V,Ý?;Ñó"žÿ%ÑñØ}»û¿óaç­ÝU¤Ò<ÜÜF?S{§íŽ*¹-÷©Õ½çz0Ïf:„›´ Ô8Ž;Ù•†_t\³oÖ¶Ö¶Í L åàµÍþ |F%—•æGÐûüœÍä¸7=ñÏq!‹gj§§o{¿p$7ŸÈHA@¨gùô©¦Æ¤¦ l!Й�Š„F°I¹E´O~AxÙ œCÄX6�G¦ZW6Cè‘fÑØ R¨™©]Ä`ÿï^u~5>8ôùÛ—�ßN–rs³Œ N}b~†6¡kõÙT,ÈÀwä×2UGâun3D�mõ¼¨¦f<—«¢3ê3734Ó•` õuIb„†‘“ÉÌx “Ø'55v¶!Ãq›§ž¢‹í"AiE,ä Ï‚ª¸€ÎÃÌãç³4q—R*ÕLÉòˆ)\…–È b¹xF@C�èþ`´àïÂ!+VSK.ši¿æÅ<\]Ò<î}o…ÇÌŒÒÝgìk°ÿÀPnÁäG•Áå€ê‹ˆé�Tš=I ƒ°¸†þ¬c'vù~�úÀH’Ôšå&ËN“T-áٸ徒ùªgCnZýr`¿¦~7ÿäU×+ÚÈoñ€°o¯Ã O/åZÙ>ªî*úKÉO÷Kè\üš~)Ï{¢ìÎcËôÏ~úºŽrO'\¶ñd„÷� 8-jËY¥¸þÆ�È#ûª)éÁÀOçô¹FýϾ (=G·ÇCKî’+k÷bò¾#hͱ—NZ|µ$½‰/ŽÁòeÌ„? 7ULŠÂµ žâ­KÙ„l5¿²¸³ ›ˆÏ¬Œ2Cyw²Ï»'>‰?ö˜Kûãy<Â3:²@2†z¯¶ä|Æo˜ óËŠ¶IзO&Wf:p° Úr!; pqŸ^÷î[¾‚ÈÃ<./5¹Ï×G[–PÎC$` Q@€ B4� iPü‘€,Db€Ñ}ä 0�?R`ÿ_ˆn>�&ä%&Î:G�ÿWΛý Ž—Õs^ R ¿Ì!+S؉©a?ó!¨0[_›6žA^òHyíœS?Èn VsftsVÜVNQ;¨‡vÂÎŽªû¯-¥…{ƒÝÁÝš¦~nßÖ-ä|t¿P?تÀ‡3Ó±‡füÆéÛˆ_Çßš&ëÚo6)*¥1Þë6c®%ì_Ù´{|7²ÿ±að—<=?TL ª q[Ãå/<ÿÒîèȯ³ceÃ\�í  æ�ÚhÍ-•¶¤h_<²–ŒNŒ¾O²ƒ0¾|9(Fí}ÇÑ^{âb0•˺q{AÂíR�ƒƒ3#)Òº+¯u  Åqµ¥ŒwN"õ^ÜE%qyi–œÁö².-AÁ6!!?²n ltIy]C~=£m+1™píoEîkp-˜ª˜:²*(F—�•‹’ë®3r°#ç *t2�<º8C¨å)7XTˆæ#÷åá›3{8°|·»½…¡m¿ËŸúǤ_Ö…ù��»èo PB¯ e9+�AÛT^°Xõhªz0V øðI.§DßëíŒäÚ¹¨‹æz\S»Û.ÆP5Ó‡i§ùâ’æ|ª@”Óqpàų^‡$÷x>¶• ¼0¯KŠí`ŒY¼ùƆÙïúÄKôM{v&<ŸhS÷=ž!þ ^r¢uŽ2XÃÅÆ… W÷!ÔŽøtÝPzÒ{†šBl·Ûlª�¸0ÿÎŒJÓ:jBS’¦òâÙÚ£‹^`'�|0²9ãÄßΡ®ÞyÍÉSÑ ŠC›D’Ê*C�Û{>OŽBC±€¦C9Æï¦·þŠûŽ:þ û—ßnàaØDÌó0Ôîxy!šùqe´]­¾‰ì¼§b*$(HŒ  {©Û;nŒR!r BÁÁ�þqüÜ€/æWL útÝ‚êð—-Ò¿ÉÞ�³ÔWȯjGf+õû”[g JõfU�óÝÜNµ›—Ô| _á7jÿ¡=¶×í]„럠WŠô)q{V’0Üv_8eZë‹sûíñ•Ý}«N ¨Çwb䩘Ëkã”tªqøÃõªt¤î•L×�þ2áåDÝÌÉÄ’–�¿˜¼rbr‹Ñp4Ln˜¼)åï)¥¼¶åó-ƒ[æ¶bœÀ¥¹Ö©·‘ÎßîHóÿÚé¾Ù©ºüÒ®[w?¹ûÝ]_ïÚ-½Òâö»³ 6-§ÜE‹BÆ€ 0eNX¼dA^‚{ºÈ¾§Ç›V!QeeyŒCg‹<­Åvƒ‹WÖÀ@Ú¶¼5£§o“º>U1»x 2H è¬€ãA²”² Ë»ò Ö4™ž Üb�£8¿ƒsõ)"CýñµÖi!(†½¾ý „(ÅÉçõz\o±m*×ñO\a£LËì“b~Þ‰õ¼˜%ÖÈ’åðªÑ~O°Ñ‚¸Mµª�ý›z^Uêùd‹÷ƒÐ`¨,�„É-øÛ½CÐ,Ô@»Æœ��ÜXÇuO'h«&s…, ¹Vü§ó'ÉtA¿W”X³*.$�F1ã” I†zã�PŠ \51":,üôAN3ùΡò,5µ�ü+z M æEÎéÜH¾õ ¦³eÆ÷Ó0ð—þ¾,tc«ÈÁ@µ¼ì¸+þT×hýºò®(Ùˆq-§¨¢zÕ‰yxaP5¾7]\Ø©…óÿcÊsÜ­uU)Ó‡K3EÊéXGõPGùB�WÕ]UR"8¯ÀÍ™P5Ôã^PÞ/ÎÒêð‹$Q®”ÀA„�ñ\°xÞ'Œ‹5BØÉ`Vk˜Î^æRðöA¯—£ª’u åŒ20q_ð=‚;°˜ªEû…èk=/)¥ªéº\ººÀÕYš`dÚañ°|ý3 ×PSäÙÏÉQìS­E‘ÁÌV2ÙÏûþp8RC—CVã4Íâ“OÊ´¡>'Û|ç­¡Öüi©³ulèn3zƪ^àÈCåZ À¨¦X:ƒ2¹&œ¬Ååñ òÊxcGž»hñzðÁŒÊ.•‰W©0¢ ¥1¨‚.i1ß%J•käÑÍ.ÞéhZ¿„(ä¸^d�ïçÊîBžDu9ô0·9EÊn ÝÙpÃ�?KÙO4d6[õfç—oø5ÛÏòh×dãv¥7õìÔj1‚ôÉDs1Ç#mDXE{m¢é þýgu¶‡E‹ÔE£&°q!†ïFúY§èGÿôy‘nèÍ’‰@ô¼#Þß}éÇ¡¤·|.i4ÀЧ,f±¡%‘˜¶m”ŠÙŸ¢WÁ®6²>×9Mäl¢ÌÑ0Š£´b"Þ1‡3áˆFžÁz™Ì%³ÚN‰ò¤œPú^—ã Š˜z3�ÞZV¸&8ú¹ÖÚ�ˆî˜n·è 1•JÛþŠp諭3f ¶õ3þP²ßç.ˆÖ÷â"æ�$]šÎ¹Ñ4›çs°È›¡{‘=ð™t ©W•›@ŲÙ}�P·aIÖ}Ô·l¿Wò¶Vêëg}¶¼ÌAI ½7Ÿ«C( ›a#ü ‹ÖjS¢ˆµ’Ü Üítâñp*IfþÆ †.ˆˆÓ²ðŠ#˜B4¾¸1ì1Ãp)n ÇÄ$ö9Fi c’11jÇßK˜mÇBél§:—€îÿ Rî±Zœ¢È»}e•ÍF³A[¶*�¬\^ò.›iìx >êŽå#˜Ke*ÄÏ:~˜–p¾ñ[+öÍ n¡ kÁÔˆ‰g\þ†áC­7nª‚°øâ|Wø š"ô•éd‹Ói¥WçáP¨H±¼gC6›UÛZ.ÿ ½/ÈLá9ÓcyPh[seÛ]l”1zQÁ` ­)…x1…¶5 HT+<é±cR†LÇñ,š+ñ/Tì9ÝËtÏHÁÙÔPIåM ½:4“0“é�Ì1_»™ÞηwÍù“®[÷h¹ÐR/ù³ ”8z•”:ÁÎ’/=ÇáÖ¸J´ƒ•ŠL‚U�¬j:Ìb:H£.5Ü�VRÕ‹x8 ‚–Ðé+)Úì´\ÞÞP¤ržD×5¢,Ë¢bû ™J¢éD3P€ìÜ·=rÕh¥œ¹)L«qêõë@·/ ž‚á�Ó_²ÜÇ:\.â/à‘‰(‘w•ѲeëEê5¤uyêo �Ø¿�œÉ™ñ9HP@dyQTò¡A±})­Š\ÑŠy�šüt̘¼Ÿ4Œh½\¼2JÕЫt’ÉUÙì“.¸J0í"&+$[:ŽQ± ¤4¤Sç d¢ÏŽ2ѯlö,©�‚D˜º1°Â¶ýxLñðÓ2åjŽ'¥‡O£[!±n55L¨jêµìÐòT"À<CiØ[°È{Æ Ç±Îl�_Õ¯ÎÎ,Nz6ŠÌËÄû“26 ôi+zEõ¹ Ž�² Fã>B‰‘ˆL9‘¥+îÃ!xÞ!”8éáõB‘.$ ÝSÀ=HB¨^ôàÊØ² ,¥Kæñ˜Y“Z¬ó�01ù‚ œiJXŠbÑdb¼Ñ5�N¥ áË%¨¯àëVÁw¤ç?­ ­=[íJIn ¯ò—÷f3ꈓ&V2jyé†rå‹ÅÖŠ\+š|%üz1½£ŽÜ&çQ Òi*ž¹^•�˜ßÐ=O“m…¶cv§ë»1pá9ÚVÛ™‡ÒLäj? (çž ¬.-Í“501§0uÓô¿Úƒ]ýê£äJÉ©Z²!^՞ܵS±¹–}Føb*£~ˆ@îˆ7)þ¡q€nõõœdU–%©pôLÆã½ü’ÅÓ“ä~e­Õiÿ§�|¹½�º£S�i_m&tUU·güUþ*OÁšúh‘½†_'<.ä-¾~0U!ÿ(¨½Œ(ðzGÿ�ƒ…›ð›i|EÐË_3À…%omH{ï�…’¥¼#®ËLÛ¡¶Ïˆj–œ �&É¢H¸RS©™oØÞ%Äß�Ñ«X+{2XRŽO9–’ðŒIam‡O8öÿ¡x£ÉÚí…ÝCk|µˆ¶t«• \Q=ôï™ß–9µíX¦ï»w,�)§4:‘å%c(lÝT™$SœÖ:cF±á"�B¬Ó'W©zs<Š ¶-­z!Z·åôeü�?§RíòTe|o øw…áépk=É[YÒTÎ¸Ø ÂŠ14CH]gX�ï½}ú±Ìá0yGM¹x¬rÜ|ØJÍÃ<èQÈÍøÇ\ÎÙm4W)%„¤Õb¢À¢gÎ) ¯ �Ð* ƒGºe “$+ÁcÛ{j è•ùù¨.ÛX5:¬X3dQÇPË1Ñ2èkJ]=O3@HyÒÕuýÒŸWô,"@*g ˲’¬ß dëhdè’´8&V¨}ßr‘ײÙ?íJºV2JA®8¢è`7•éT‡ÜÄ0Û¼âÍÅ-`2pä(Ï ÁàÌ Oš…³Ž}ß\«ÆalŽ˜)?*rØzš˜eý~¹‡…Áp/‚ë—'œü·wŠäyJ =©&ø?ëƒ÷ö“·.<i§xü]-ä·+ï¸.máNã«x¯«¦§ó¹£åô‰œ ÃìÛ—§ki€˜"˜ ­C!ÝØöyœb$…Ž}`+JDËU9çüõøº^d”f¥Ó•MÌ;aˆ�xž�|ðXQªÏøßŒ÷…ÞýnÞe ‡qŠmo×Õ_ý\'#¡TÿÅU_ž÷H½”Æb›”œŽfƒ“¦q3Û63ÁÔ…uT�w0ëºò=/pßÒ2ÁÜ�&?D Wsf+#W¬¦» jjúÞÇÛZ¡MÐkRœ‡K^.SA�Viâæl^-'®a·èª‹�7)zVœ+c±3-±ô\5©Y• .•<ˆ¸RÌF{!òþ \+˜NÞ-ÍÑ,†Ž«€{û 4¸ ­ÒM~ ›9ÚçÒnS4™”kŒ1#f’™›ß0hMp.ß¼tQÙÄ…ž›‚"ÝãöNÙàÎ U WuØ;8š­iá¶·üà[¤ÔØMÈVGÑžž‹<Ƹfô*§òµ�Oh.¼´\·÷'̽Ȭ2^› „’@‚#Ò^CäLùU[Cž+Rðä.À ÅÛøÍ¯ô8?zùQy‘Ç)Ý ÁHä&dã)…¼Ôã4.ü>­}Ç“«ÎõõÎλۡ*P�®$kbŒªÆª”ðÃýÜ�Š RÿE½†jô MוR`™õAvˆÙ8 cè7,e2» ŠŽ[&¬€{Y �[†&³ÉÕP Ë-Y@ÈÉû4�"—s¨Bm½ûkÖ„ŸIG Aâ T—Kõ«Œ•µšXÞLœêÓ>¯ë­ŠËÂxžÓôñÓA© xˆÞQ=?ÿÜ�þ@CX›à›>½R°+ �·@ØæoùôçZMcçÔ+ÿNÃ`?4\�Û& ´Â5#öƒ+ítÊþO(!¸¯/¿ÀsMýóWðGè$AÙ×1a&š [Ѻb;#ÕƒÌ%EgÚUÐWßÝÊjuŠ àý÷ÉM›î"ßÛe—µÕ«á_Ê¥®âT–&! óU²„SH"î™òŸ­±‹n¾´f×ÐM?ðMM¥*V£ Óx ïwÐ;}TÒVWV´Sœ�Ÿ÷c‰´¡?z¢ü‰À¿”5û‘Ž~ø¯Ã’ÓÒK» ׬éfŒ Ù�SþYË&×(RhÇ”(Åã4~™“©¹åA)^ä2Òia…¢«¬”SYéj¹Ldâœw’²@¹ÍHŽz'UÙüéØœ›QT@ý"óß%¢©*¿½hÙ•(nìßAϤ°\NÝÌ»Ø+=£c5¥J‚œýÍ_¹D²W“žÅ £ñãfø—¼Y•&/�“é3 PêXUÜ?ÏDù5-ýqT�DDÉ›¨¾L}Ldˤ2TZZ…¸´–>ƒI¯±Â(í,£õÐ +1î 'ªV)© l"ãžÈ�uŒpeL»™•Æ Ñ±ýˆMŒÃ~1PL$#�Ÿˆ§k`æ.ƒ n‹}¾€�Á”²ÈÑ Ê|9ÈKê¹3…],S¼¼8¹™"vR9ø?%!£¶°.zfîžý{†– HœÉTW¸1IØÓiµ:�pNY‹ÞÆ‘�ØgW•YŠËLŸ¨›Å v×& ÜFܾ4|pM&À×:wÊ1æö4¨Ž,.EF# ³NúQŠÚUÝn¨|+Å2£¬OÃû8‰ÄyD÷ZÞD!ºŽ$hÐf›�ŸþÚáWfƬvÜÞ¬\*p$àüQû0"§G´4»«5ÌtÙá Ç«�Sd,ÌX$‹ÿ÷Fè‚È^�¢³I¤*+eá½¹CõµÉ‚sÕ¨ñöý8N¢�n¡8²†>+BÔÔÌtZŠ�€cG$}Ï,«aÏGˆm;dÁ0%C¤µá“?ÛŽ!°‰ÎJ8ëÆ Î<žÐîÑêt=-#\s\àí&´ èîf-S˜N÷ýé¤sè™ ÔÎ79&YUtЛW,å[IƒÉ ¬>À¢’ªmê†')’¬™éCàÚxÌUËÍp u:‹ðg.Ÿ¿½7Ê7¼¢|N—@qi�EÛê¬d¢KÇ)¦f0ƒ½¬šzÊéÌÆ¥ ÷˜ZଠW.×ZxâCõO:H£ ÊÇóí)ŽXì¡xSJª«/>?K?m/THs7¸Plb9yˆóµbÔgW¤àPÈÀ5Æ’�� $¸Æ\Dž«}6uL>­Ã3Èp<ÚäH1AÂXz·æ0yг’ÛwðÍd=¸MÛA�IæÑÕhÀã”Dj%ƒh¼v™´·$6.Kz”7„ZÑ£±Eàù¥¾†"m_¨`ÿ\gövyk Õ ðÛ)äÄ@ >ó‰xE*–N¸ÁoU€O¦@-{Zm–J'p—”Q®Ã�\ó»‹.t›ž£*žg�óÌáÕ¾¿hš“,L4èØ9\}¿5ŸÅˆ¬ ðy^¶k‡×ãºIFQsÆKsi$OLÅ¡˜WÎ>´;HëêtÍI´·Üßhë\½ÁÍZ›ëŽÉ †–/^ÞžRÊ%À™) “�áþA>>ÞnήÞ ©úÑGÉ^îî^¾Þv�á°?�xÁ¡ÎP¨«»ó`+Žú!0d� –ö2ì¿Æ@¼¼¢Ã¶Î(áâð8VV«” ,J"à£ò�¢Púk%ålhàù@NC�&GæáýM䡇K]9p*Ž5EMIC«–�E2ø®×\o f²™ Ÿ›YÎ)1ùiè¾Ðý¡By/¶ÚïB÷æÍy�~‘€ÃôQCA¥ÊV„¡W@_ö¾YÐo §ÀuLµ¥jxíOmà¿�öoð«Ïnyø…¥Æ_} yR`ß?"Ó–wÛÝa[€@qN§üAÅ >7ÏðWào"fr“<®nÎÓ"83J$Êl .ƒÏŠ7 ]hNìSÉ\¾9Ðc“¼¤8ØÀ©ÏÌ|5ô xV¯ §Ð�¾Ö\ëCIÝ]ZÎUàAJ‹@Y‚|ný±�ÖTKS™‚«+t�ôìa|,€€aó4Dˆ§D…ÿ  J!ýg3½HüíÄòŸ)Ü·Â fA•~ ;dšþfDŸý~ÚE¶^·/ë©ÆÙ" Þ»¯ýl^†Ö[�?Ž t,…Í5ïÞ#u,k på(2f¡£¢gÙR£tçŒxóàˆ8Ci€~ÑÉ4òMSÚv줮 R±j»…–yJÅ´†˜àÊ/‚ØÔ ÉŽª]È­©&çi^d)™A®pY]v§“lŒœ[Ù¾2.ëÎIà+ŠR0t\xÁâä#Ž2·G4wƒp`riU½d–‰#½D‹—F!¸ñt±�–«¦®é†e£i\Y.L'ÿ×Åá&�};÷þ˜Šk¨(‚¢cÖ.g‘ê™@uu r9§Ð¥²,Á#~ËK«ësä—»¢î2]´ Úà€tmpW(äŸz�G£¾`Œê•ÔËæoÎà ð­$Þ�Å'&Ø6™¨kbr¹úø�§þi˜S;Ã�®cbSng#ftÒˆ·Úû“?Vµ­S�œÃß _©”Ä)ÆÁq6 6z[… ™è(üGZÆ»|Æêíì§ÒŸþ€~ž Ö<ÏJ¥Ü±£ÇZY�Z>ÿò²š·rÕªÿr>˜¨w¢¡!G!‰ þÊPÈçòN„ Á 9ÁHWÇçíwÎhž½FçJ¢ÿòr„&š…ZX“(âJà׌¤Bšè,é£Wzf6üQRJÅjëeGkˆWÕ ± @Á?C‚Á_r š[ÆhÈ+0‹SÛ´½è­>Å8–u óbø¤uPݱ£h­°nð�OkE–çÅ¢U¬*ØæQ¹8éÛ‘JpAÁd¸•:ÇŠz’=VêyÏl\åQ6ëΘ§�b«Û% ’yFLçøºÍ8£Ù6jtcµþA^Ÿ *¨€ hRs*·q!7(Èžc0þŒ´fXâíP7ÏË�‡ $ÔT%!Í ¡zºpq¦R©:WÙ9Q7°¹*‹©�ÑÆgu5Ø'K‚¢~käp4póhQJ¶¾"Âõ·Ï¤U›_Q›&! ͺõOþ^iY*†òŽ˜…§xŽ+ ~ô��oBAèeîQll&a\™zk<"<ÈM¸íؽ²ü“oi„û`d&µ:Mà”f™¬P€ïÿ‹ó„;oñõ%VS<Ãhpdh>Žd4L³ã3…Eú|Z¯‹­‚ÑŽPòiX` EP5aŸœb–®—×�³Z NnQT•ƒùÚ|e‡Àgz Ü/EÕ¡G‚ÙuÓfNC©¡8騶®£èµq�3…E„$Š¥S0ÏÖK]/’,þ‘0g\j ±I�ñ›Ó`RêÙ¹Ô©º‚„"ñMlj$çR'œf¥fØ:eM©oEJÕí8ðB1XAIm±”Å9ccq#0^€ž•GKLPD† ^B­.ÔàI…ªªº]8œ áé”�H–§*«9« O’b¡VLj |E;<g•ÑØRÛ- Ô³°‚ÒªÒQ4ÝrZfVeÀL¦³IÔ;Š®”-Ö�“àqP·ºO)½S ¨ä�†ê=ª)IŸÀ]V)O!ʃÞ`^îŸe¤mVS�#žWâ)P¦“<, ÔukÐæîê( '‹µhÿ%gÐ*gGr<ÍZ›œ3V¹•2Œ·­¹#Ú=«öP>Åú  ¦üY¹’•£Qr±ZÆ)épì›?þ¨ãx÷uY§¨MWÖ;|©V öìºg‘þÔ$(Ö%vðFã‚Òê™6{šœ¦¡Kz£´`Ø-0’Ãò" x²lPÓ øXÿ<…§R˜Òäli^Q<åã¼õæøcˆT—;�\ÒJCÞž�æ²²ãcàù’ºs3/ÊaI—Ũ§¬Æ[æýéÛ_M\~Û±0´ïäRE�¢d9žè�ß»‡Ê¿±i$ø³¤”«à{G>�΄E-ìD/|@»õ;—9õ^•zT„ˆ&ž![àcfÅ‹úrŒ nP|µ]ÃÊ#­ªgw:¼­£n̾K�†S`[‰TñHÄ­îñÒŒ¹îHAJGšo_Ò_>*^÷7�gñ&�EßJvªÂ|vãlZÓâÒå´*¡+F£6–‹ $dãÅa¦Ÿ}Y¾ ?'¨Ø¢·;ÁÈæ¬ËsUpí,ZH¤¬ã¦Y�b·䃕q•¼°‹éèÍÙ¼·$¹><±€ã¨ (Ä«®½¥Ô ™-’6~Õíìcÿ7Ù �ÞËuô½�£ßí¤3qpj*®¸�õ¹ tÚæ�aµKÉg�ÖB!YiÚh$â��t†>ëã^›ØÏ��&É%ÆÑOÜ5 7ÜŒBçùÛ9Ç•lJ¼\�°é·2Ët3stþäý­Ø®n«ª¼US߇ËXðòÄí¯Óyv¿f-\,íƒWAσ¶xúçÉ ’a“:ˆuÛ½Äç²³B~Í¿µ©r zSªmãŽûÀ¯›1@#Å£ÓqX '#ÏCoYƒœd©6HnL¯p¼Ê£nûÂ�ëž®©¨¼ÃÕ ìãñ&iS&Ê�šƒL/¥ÅG»H"ÒËŸàg8V]´Åb£ ·íÇ€¼—_G:Ö .è�Ÿç ]Ö�cZ�Ïì)+•\&Ç£ @æQð'Q‚À4”ùÎh‹šÛ�ô³ß¹îy žÞX?Ç9Îi#4Ë—•¹ˆ�‚‹ŽK9,13ºƒv�Ëÿu¡¹:½–ƒ$+ÿ(6¶V0Ò*gól­f®+3�q¢‚@{áíÕ»ä%J‘“Bn¯Èù²]ª+)¾ ÄbžIÚ{ ÖâÂÊ+4í&N¦BÑ„©¿†LÑæðjž’nòti|‚Ê�vÔz�Úv<™”F! êÂ1ꇃ�Ú3ÙÏÄq!Jöžï*%8þSö&—öîÆÔÌäA_ð„NQ�?÷ìÉÃÍd1´Åÿ½�€Ç¥m€XŒqÇhÁ¨x½r¡„Aò°èÓ>_‚·¦Mt‹+lK¥¢n«A]zËj³xSû¥è¶aØÿ.«°—ÔJ°ƒ¢Iö¾«V'àÍE­yÁ2©á;ÞÃOAâÕq¿a‹' �HkÕq†Zã ¥mk[ýU™ÇæÚpnÛ~†2xAĈ(s)¶['Ø"'mLìÅ´¥n{ÆáO 4¶ª8] ‹áæIê9™ôéÁ™ò}á /DÔVÒ�w…P§Î„·à’ؤz±$í¥Ñ¨Ã(3 Îç}‰bãŸeZk.¢0ËPiš{/ì[vãf_¤”ºܶü9奧ÚM!ÝŸÞЖ�V‘SñÏ6h ¤RŒ 4¦†XÒŒ%I¢'…ÅE‘£ˆGZ†JŽîºÅEÒ,ãÈàš {r,R2E£J[)”rû³Çÿ¹Ï‘¯yy¦Û”†q úÉÈý¶†ÖfüöI™õ®Ù1A0Ì„Ó� cH{bvQ2ö³±j~^�7à�wú.íhÈti´ÃòŠk+M7×e†TÊ,VÀýs«rªö Ïãxñ—½öY¹~dŽ’™XïÿÜ\¹y¹Å�ÝÓ’)k®0+˜kÕ[ß0#Ï�V�2|Y¢Á«1Óÿó¸®eu¬ÖP"!Å>˜]¥÷*dü¿ÿ%õÈô%ß‚1ÐÑi#Œ,ž‰Ýèè\æñØÄµ°(>ž„Þue!oø83"Â(J”—¾“ 8lÁT¹–‡Ýyò`µ"ð‰¸Å$õW}I4ìcEϳV<�Å )âÀOèá¿BÃÎgõ™ ÿš7ÔÆÌ¢¦À¿EUuºŽË­[˜ïg…´/ñ¾‚e2q_ ] «`«ïw´”¥¹†O|:¡k-ã¾×“[ å‹1¬(‡)œÎ$û%ý¨Ô¬Ù¬F-x&…ç⺀Ǟ(깂f7²vJ*•tv�sÇeúî]„^Aøj{ŒS¾üf¡ça@£Ýº}��Ö¤€—",¡b;¦o¾$íº©-ØB±RHg nRüÁße¼ÛI§’QO!ey8ÅlúLÃå‰Jú£û Wç¢Ù~¾;ÞVTz-ñ# €·Š±vжs9¼% à}p<_ƒr9ô�ü¼h½Æ0ºÉ!!8¥ýšÉ|É¥^.ïö¸ Jêh꡵nCb0g©Œ2-÷TV�ïš@Æ/˜û°m²#Ù¢Äî½6òãC!v6¶±”Cm‹´†¸ê8“¡z(LƒÔ}…½Äa@`šØÖ­ÕÚ- J[Üî_fËÕQÜÓòùnµš´”Z{.çÕÈ›GÌ®&Ž‹¶÷?{wÌšF“É«3X¬O ¼(Ý'Ÿœ+y™0†¯Þ�ÏÅ�Jã��zœÜ�VZMBe;™ç„,:V|<®] õzEc_‚+΋³°Ì8ç¶ù[¶œ»á ¬j†!ÎȈBÙzÒô N|¸‰Dú7äÒ b�â-¡¬4Ömè+H©JØY\$p‚êÁ9Õ¯ÒŠbmµ}3. þ¼‘ì,�zˆŽl6á ÎrÞDÒ#u€«×CðÜ_£&×~ך'É›à¿tÌ„|Ûþ¸sP ²äoû¶[õdœ‚fAe|…àx¨bÇeT!åeFA [x™–#»*I¥X*C›Ì‘M/zŸß�ƒ;ÚEÞÖFO‹™º pךýƒX"•ÁÒŠbÂ_¼Þ8ydÿÓÏ>¼}ÿæ`‘ |õ×Üè�kûW÷÷/mm=Rôw]þk¡†»ÛC¡ön¡ÔøÿB×®U”/]¿Ñö‚fá iv®]»yóÆêP×cˆÆOŠjJRéTrt(ì ôÒÉ@­LIŒg›‰A£D¡!€‘È¢"�™õìOØB ÛùFZœ•PÞ3ýü|.‡?0¡*ïÁ5›r —3vu9ž2 j¹í Ét ¦Uö¶G©êÜRžóNEñl�$_/k–¦+çÈUèd(áZ0�NAQäÈå'Gb±pñˆ îbR¦4�ë~Ù‰”á�ýQ""ºÕRQt<5:Ý7({$-‰_âl†£,1†•áX´#œàsQÝ¿ ޱÀ0 »½æ0ÍGS?^d8¥Ÿ£˜cX¥®Ïó=/öô0ðÍý2‹œïwyá{×Á�ENFj´Ï F~ Ý™*Ï€ß#ªGñ%}¸šôÒ7ØÏ±}΂8˜€Sor6%XÁ! ù9Ìa½ ì^Z�°Zcä³R(š¾lb*]ýMY…c˜K«²¬Š,ËÛÀ1&܇®uÁpl¸ó†{ˆµ;Ýíä>8¾¾4?»B¢|?º+ Ç1%¥å« pãrž®¯Ñ¤bÑh$K$£ È’;1·%WÉûß#ͫڑé”A" ¶o˜(/Ðà…G=õ²{KžU9%kÀwÁ€qНYʸH¸=>+¢ª±Ó† A rÇ8´p‚už‹Lõîýe¹afU¼<å­Ô‘´s .´× ߆؜ÿ÷,¸„›õùa½îÓ´«üBñѹ“ ^˜å@<5«þ‘–H¼?³í^×yü箼WÀ«"ð勘;…‡¥8Ê·@Ë¡ ª4blk-.0(æ©£Õdbá*2Ü¥¢¿1Ô*Ö´¸GD d†Aer”‚¢[NcéùdLë%=žaÇv 1Rª”Ùˆ�Zv›Qñò¡¦|­¹ptÛ~z—ztÈ*íe`a­éT›±wö²©4¡ÛàT¶=�‚¬üDÑðÊAäyãÎê3®rÒÊžå½~HÚK`Iä#‰/ ¬’‹U°Œ†*�v‘ÆZÓì°Ç¥�›Z º·è©R ±‚0˜SàžàVº‘ŒÞ^Ô ¬KŽD;Õerñ Ñ(z0ž¦¬8nÒML`ˆ³ $YôŽ.»iXãQƒÁÖou”iZ\•°‘Hã ûéÍjFIÏæÈ2&[INºÃ“N:—ZkŽó ä8LoÒp‡Ý_%?�¸·¼Ù8­_\¶Ø¨%o™bé´Ki4YEq0¨3üЮ²±=ôû0ÙÌfÈ+ÞÔlºXÍ2 þH¿öôU¬Š"\ኀ •s¤j‹á96�‚7v94t9Yå@sáñÜ`+¯2T6½UšÌåã1]¯˜sl`+¯ž›•?ïV•nF&Öcv„%5Pxðéúû*½Z0z$`(Qµ«+ ¤à\Ü�Aüí•hœ*Ÿñ6€ä–&š¶ àÊÍÐß!]Õ*AkgŽ?éÒ/BÌ[LÝ—Wc GÓº:ˆ_7�J |«b+à³ÍŽš9w¡0hdF¡¼Y?¸C)#Š<^«xW°[�›Áã^R%rPwÌ/hj#×túrЩ·ß…k”‚s•1^Šò¶·4^êæ.Ë.Fšy“êb3èëÆ*ú[pJÈó½È>‚(·$‹æ_u"Üáìu_çâSÑå罊~ ŠTN®ÙF§?ž¿ZuŸb~žöû}ÃÝŠˆ-Åâ—Êlå>¯ä¾tUU{ÔÏYMÎËÝy�bz¹f»Äå[�»3B6Z µ�/±9ˆ¸\HâÓ¦'Unr¨Ÿ2[G7&,`P2žaFª1¬ï䈫äD–cÕŠXò«(2—ÔéqDW‘¶JY¬8Ž"VÞÁì •%*4ÈJÆ?æ Ãt0G'ˆKYý­aN´(µÕ4ûÖäF}E*f3Ç*bÔ²àá8Ò€�S2{3®�›MT~»"ÅnƒYQµÂ¥ÜðŒ3% Þ´ gÈŒx’LJpÏÀÔð(OIsì‰å.hm] ˆ¹ó|{¦f ï±±énv`—,!óAÖeJ©xÎÒ¹¨²LEŠR“%õpּɀ,)MzžI&¹¶Á:uq& =ï(ÁøFYäñ]l¢ÎÓÄÏ >ÞÀäëÌ»£øL&ÞYcúmÓ°ù°Ù”RdC'ÅF7a”ÌæŽÊÒ6!òL*8�+_0N§ã¶Ñfò" /û?´�C2É[š˜Ê½sLv±�ÉxŸ()*Ž˜ìÒ`!6ŒÁßj—Í‹Á/‘dŒ}Ạ‚9؆caîEͼ—Ô¨™¶ŠXHPñôýKEô-Âi�Úë°ÌÖ' Êšrb¦=ðù4x䵨œ*ÊÍ kSfªi2"#™š=738Ë¿d{qÏ•œ®„•°Ó&Ø-÷+�7Ð ‘"q"'ˆœA±+©5M‰.‘œ7Ê•-T k8Ìà%N¾Æ¨ÜoòÂ2^Höªèz fÅÓí�¢›s—3ƒ(Œ”ÅðxƒÛJpë )5B2À“ZStÆEÒßçöu |WŸV¡¿·wH˜vm„¨F‘IQstÑÃ¤Ø D¬Në]Ö„C¬ù�ÑD‚-eh ”©cÎ+ùÈç½Ê�)Ã1w-�ep”}_~Þ,Ô¯s¿TÑôV–"tßZnÂ`n¨°ÈL•(â¸R^é™¶:ãµaöm©:7èåôÀš8V– ЉdÖñ“ÁÓ(¬tUÍ”…@b"\$¸\ñ+«Š—0`�Þ¬�džÊç$pN˨3MWw±ŽÄ]PÍQ� W8À’iìâ^ ÒÂôN^VÅ\6ÏëÕJ‡µüyŽW¬Sâöúðž—÷Œj±.±‘Öì²$b å‹*þÕ>mÎrJ)²3ÁQ:)Óä�aÇP{a»Šs„†““™|Å&1ӔƠ•ã`Í«jý²ß3íVA¿š‰•/Ëgåœ$‰ Ä-Qþ¿«†õù>f·¶:þQ ÖáA­ŸŒ§Q ­R™;Ù4È„JPUD<‘Š„û© y™m�y`ß?p€"€ 1ß……ÕýVE‚ï{:<õÊJ©Š ™xfSÈ@÷:¥â·� Y=1¡yh‚ÒÑÑvÑÔlT…’”ýxÜðF‚ôæ³”Ñ8¸IQ¸HK†M'šH™pº@gâLHa20q4 p¸•¹taâl šUŠ�ü‡7¥ô–F+¶#ïÓÐp !P©Æ/Þ¡‰½wØ­ô®Óñ0ôÜqFí(̧S§ÃÎþ>Ëq5lm[ù�4ïÊ Ý[FˆC(�ØñÜÆìeËÅÙ} úfü¤†®YNã[ì¸M“Díc<ƒ0“Q¤\üù£90§jú§î1#ßè;å8G Y‹?w:§§‚ÑÍC$¹x�HCê3&’ûšW0¾š§‰Àå^Þ·—˜08è²ß�œ^ý‹g‰?Iâ6Ön�™jž2~áÎT8þ±h̉T4XøE6ì»r`ck™ ÐS’kwÅ\³ð§Fá +2¦gÒùy5�™Š#QEtúÐ�<{dJFýw÷k•V¶‰ÆãÄp4g)¢¦ ’éè&n˜ªJ—57�C'Ô¢’°]sUÇäHÕŠÝ–—/‘PÓr¡ }È9ët \´¨IÆy,¥Þ3âîZ'šÙ‘"üöïàºÙªù†N7 åè ‚—èÙŠË…@"ÚaMÓ^¢ªÁºŠ¡:Ãµë Øé–¸Ó¶�™£óJõ?Žl™R͸iÙ\J]œoáÅ&ØG9£�:‡ºRä�V”k£çȱ@ž› >”^J�Œn‰¢(‡l‚¸·‚$³ÿÈ_ƒ{£S&]«(;¶Q2Tæo>8kõ¨¦ŽÔ´¨:$êÓ•ê¿÷û!x½Ò[L¦ÚÚS}Ð÷)8%q–?ïù[e¦Uö­lAa…â‘vøMJý"k¶òàî@4­1Õ´xnã87,FþÖ |°ÑËQŽ5±¹‘±ÞÉÑè¾6E‹ÇÎôbÉ÷]Ak5ítÓ`ÏÍ5ËsBðÚ`ÃÙpçŠ=µ½ÜÇ gôiêw½Ô£>ÔñKãÿYéRœå¶8VçÒZ ¡œ¦Æâ­ ¦R·ŒKYºg6™ø¿LoºÆ…vQ]�}ž¹XU ¥l¦¨,�=Ø: ¶lî6�úvkõCd¶ÂŽ�Ÿ"š6ìp¨–«^d¯Ó^ }×G³fÅëƒTó¢g4µÙ‰Ûñ¢£÷…Ep9zhÄÑ´ùN¼K¤K©çoK[NgdX‰D Qè)……~*ƒHÄc u³µÒ?ô—õȇìýÞ*4ûµï+% zÈx8.ëÜi{kó¾jn'I²³x "Q.� 4a¯á� †×ñ,n,/.ågt·<ôçïû~leU/¡< °€_ƒE°†A5‹b|�ks˜u=�€Ï™‹$ḟ“µ1è¸ÃGb\SÖþÝCE…� ½x+÷©ã€å^¯ôÊծʃÓ!ûêÈœ?¥½�p;ë÷¡ÆŽŒßûßÊ ¦}p £n¤BKHøI� Ë²º‚DÆè¢&(º+Ç^D‘ÁÕà܃�¯íf¦9™!tÆÏós©Ä$$Æ›²ý0 ˜±ì{"4JÖ%Sf¥/üŒ„ÊPÚÏÊ…× !ŸŒ¢9YhZcÒŸ�WÕl{»Ní߃?/&‹“‚}^Ò™x�­Î‹oø,“)õT`Œ§ä9cX±e˜ “ÑÒr·D41{i7â3C)l“w0<„ÐG6ï*pm‡MÖ ŽgÑåæÉuùÉg"œœήuvá_m{�%ýDtðñÿôG9°h~*ÕEµ,¥pï/Îø¾3"�Ã`{ïKyÊèzA¶Ž€a¬[´Uúêe™y”'a3&ºG#lèED<+t�‡nÚÊ�*о ¯3…ážë‰`ÁNÝ€/XÞ0cÃÑ p]†t1EY{a¼/… †�ƒA�E-Ôj†È.\2O&ÌÊð$CÉ�T.Qx0‡­6d.zY’d®©ÐSS 8o[¥(©j›/•k’áöIðÑá!ûé.�“QRM]a{çšþ2îm|kõÌýÖòªêjŸåŠˆuÏ2[Hù¼”A#ŸÔ×Õšû© 2/šnÍ´ò�‘™-Vên\ÜxF_`òùo€ÊøäÓÆ~iNÇÞ2´—{NyñV>=¯6ÃŽòQà·#E #Ÿzi&§ R]é³c,uùÂK­âa5‚/du•—sðTÛóƒið’…Çc-óƒþ~ɪ¯ï± m•™�›—ƒ`ʇöº 6a¥S»uçÄsyFî+¨ÝHëéjXpúø&«ÍÚ­né#êgÙ9›Qê³. ¯.žYÂ)±*Ùö¤ 3}àczu„1T’Uå¯R:%ÅN+Ù*lÔ\½ÕâÛ28Y[Ÿ‚F 1ËÜ `ïß/wH34³kÄC~üó½8G(mËC„™9këiŽã¢ZÍ©˜]}9 V•ß5‚Õ…=&Õç‚–Sœ2_L9±2Íi0(’ÓQêÿ¹S¹(z>³X!Wb®¶\©¥–æf3q­:Aµ@5y%`¿#É9ìš4ˆ9­�MX¸¤©[˼ £f«äzÉeü¬±uµ®!òæcVh{Y“ùÓ¯¯ÍçNÏ6¦]Ÿø´TˆóÙмìkˈÖöóĪ =Ø\z2é2£,§`W–o¨(Ë÷&øº_qöº`moXXsa9½ž?’2Û·ºý’Éš§É²õNDƒ¡K6JÊNÄ÷0q°ÙByƒÍÙðêT ›–ÖZ@//M~•Kã½2»`A¸µ-+wðÛd®¦„0'9 œº¬Ûy��‡³Ú²ÄšZ»í@ÁFYÎË.åp®\àâ!ë,ÂÚ�j%FŽMÚžs²ÉŒßÌßÙJѼð?Dt{¼> X G¢±x"™JgÊ+*ó$Eë F“ÙbµÙN—ÛÃx}þ@PTH8ºÒF¨c3-Ûq=?zÅ3#3Á‚dE¡ÙØ1X'žÀEäæáåãT–mJM$DSAÅùYp8.ÎAy%¼ÝÀk¼àþ> ß„" OøõJOH?rÍ'då6÷ØsKÂm/=®ÃÏOkÍ•NèãwÅsuìQ!q\È*1¹X˜UÆŒ’7ø}Naãâü¬| š}97ýh†!ë™”Y�` c=»#c«¬ ½pcNÎPG¼Ž@Ž  NØâÿ–ZıKb Åÿ3'æ B¿;�_qŽù þÿ3G|…ÃÞ›Áãëaõöbvþë|\n‡ùjöËb³Þ�?y×d7¾]-/fëÍöz¾z¯üõrxq5^ÌœRTºÛ..f¯¶«ç׬,PYö§vöÑëÍóçæüGè zÆ猟œýsvöh°…Êæ77³GvýÊ©¦)ýg®Ÿ[Ãnø Š�»yC…«a½Ì®X‹æ²åãe»›ùbX¿øPɸ|3fãv¾Þá²°n½¤šËaw³šÃt‡uTúlµY¼¤ª×WøŒúâ”^oç7\±Ù^f?ärØ.ã°Y_ÌVã–Ê`©Ï^`”h™å||µ•0S˜âl´^ÌÏ?Ñtw½ÙŒWqóõFæ»åetÂãŸf‹·Ûaµ,köÓã³§_Ž™ßn–ëÙïóO†Ë0‚îÅ'|cS¸pëír\\�±•úáã0Ú€þÝÈ©ìý¹e¤ýó1…z^­!„.—xçLè�Ÿ•ƒ S¹ è®R$ £Z¥ïUf|ˆ-šFmŠ:‚Л>ƒ$ ©Þ³ÔÑZiš…¬Ò£¥XÊå�@� æšA�Ѻ`{€ò«c³Îi²L‰}H gYbaE@+–†%7Ò IS@cS2èX(´ÜÓâ–ǰ¬ÖrwW°ô$k �ò�m,‚š@‹5Ï-|…žup™ \‚œÂ^$%ëÐ<@v$�biYrãœËó„É6�*5ÔXõj¬©Y­Gàôܼϡ°'EàÝ âËpœ99ƒ€á4€ã>µbÉÝjìÖÐøºE…=ë@àf`j#0Ú"p À>†ŽžÏ i �ûAÖ,;¨äIY ÝlIG‹-i•¶ÎY¶Pْ٬g5»³šÍ•ÔööWÏw�2|…â-¥š–^®_ˆ´áÖƒí¯¦„Cº)?tÏqºfê+ÜÂW›Ò–ø:‡ŸšŽ_ðU‹ŽKî)Ø3ìHß}É9ÕÅOGÕÐsP›ôFáx�^"†e ŒÐßÞÿþ£ŸÌw¹Aœ� ßÂJ'D.Lµ…� B.¹pâäÂÔÃAÈ!„\rAÈ!î ¹0õ²ráÎÉ…ý\#äÂa¼P¹ð-¬tBäÂT[¹ ä‚� 'N.L=„\rAÈ!„\ráÞ� S/;!îœ\ØÏ5B.Æ ¥� ßÂJ'D.Lµ…� B.¹pâäÂÔÃAÈ!„\rAÈ!î ¹0õ²ráÎÉ…ý\#äÂWy᳟è8È7Hûý'îÎJÓ,ô=É…ƒÛ"’ Sí äI!„\@ù�É…ƒ‰\˜v>¹ ä‚� B.¹ äÂáÉ…ƒ_vïÈ…i×�� wìš©¯!óÏ)ÿ/rao+�¹°×7„\r�€� §H.ìûÍ!8Ì„\rAÈ!„\8^raÿo.¹p”®rá0^8È7Nž\ØÛJ'D.ìõÍ!„\ äÂ)’ û~sAÈ3!„\rAÈ!Ž—\Øÿ› B.¥k„\8ŒòÍ…“'ö¶Ò ‘ {}sAÈ!¹pŠä¾ß\r�ÃLÈ!„\rAÈ…ã%öÿæ‚� Géš“'þPKÒV1]äë*vv¼l¼Rimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-normal.woff2UT ëÆ«jëÆ«jux è‡3€ÌwOF2¼lDð»ð…OžB†h?HVARˆx`?STAT�$'‚0+�| Ÿ/V �µ�›+ „20‚Ò66$ˆ` ‡~‰ …[B4q·½tP´M_™z›£1èR£S*ùÇu�#¢RÙÿÿfR‘1“NÓvƒNP–;2ŽŽ‘±Á!Z×ð šQsö5fŒG¡K¢an2&­§»™2ú® *æŽ ÏCˆHÄt ሃN!βƘ¦Ê nhÝ<(¨vNõ …ùjÐÍ_ï�LÉPótãÄAi¨%© Ö®¼±¬‚ð£Æ_IÎi,Í o,CÔ]‚HôX9öï­¶¯Ìaú=NÛâ¯k¦óÖn¦LÉükðf…u×{Òžÿ:}^\[ÖÅ~5èÝZ`ÛÈ·Ô™÷ˆæüŸÝ½»„`!‚%4 ,ÚK0¯&©a/ ¢•Pã÷óûSªÔm©Zª¯î ¹uˆâD¤jÄFåÆÈ±f•0`Iä`À`äˆh#�)(FQF!o$ÿ˜õßþžšSÎ)‡MV8%Rhðr˜‡x¼¯ïT]$Ý=ᆓíY˜—!œ3’&U¥ø€"ÅåƒÌ QëÞ�‰ {æl/0úÃdμ˜4iJ/ÿ›}ð�„3’‚i[ZêÓNGÄWD†æÊ>ý[U›õQíh�ú@mú=ªþS±˜´1C2ŠØ d<¡Évé?íqýf·ïnÿþOUz’¿�®É&Z œòZÀ"ŸN ©ïÿÿnö¿Ï9B¤CÑWÌÐÎ}â¾þßW¡6ZsÚi©+Z¡“މáÔjBn“”x�8Mï‘ÀÑîq‰¶@IãÄÀ’-Û’%‹Á,C,ÿˆKûÿ#É2›4)/v_ûxì<ú¿Ët ž š%[–4?§=jVÀjj''÷ Wùuٲ쿴q½˰ýI³L=¼Ÿç¾ÐEþ»�\¡MË7{£>îÒå’õWŠ€û™úÿ C`—�Ê–,9$ù…ºŠ—\ª.oÑüó‹�Ÿ¾¿ØyÄ•4A›†mP�,X€ð¯=?Î:°•…–ÀºÜÝû˜à÷éüwF`¸³+PÑ•©Óˆžý€M!�4�•°�ß‘lŸ>MŸûtßff5r¨æ^˜Å¥Z.gòÿ©!fA,hIIQѾÉe®R>BïAH�VuX³û>À\²=™kyÒà1>C�ß§ô>C‡c¬;Ć‹Ü6DýZ#uB›€¿©—4óáįT§ ` >¢êÿ÷SÓö]øœÛ€Æãó¼?z}9É×L–VK�u/ÊœÕÇ!~¤õJÎ'(Î|Â’ç“ =� 9ç’¼Pô"�÷EY¶ý�œ'�òù$½`$/dÖe+ªeNïºðI—“~-º>EÿkšRýÿng¯Œ#ËëÖ”RQ+ŠÁ»•GÚSv2Jfǧ´.”Z`í,00€§4ÀÚÿ™š¶³—Ä�r"Ÿ ‡¨P4±´sQ…T»šù³3ƒ% ònwPbTXàH€‚ R¥ç B¨\»¨ÜY¥‹ÚMë×»ï]"bm3»ö»FŠ– ˆ¤û{ž:3%Þ¹¡u‰’´ÏŸÿý“©¾ŠœÞ9‹.²Úmo c™€�Ñ~á+™iöŽâ. 3 ‘•³"Ë ¯Qp¯à:Œ¹þ �»ëõ;+LÜ(KÙú÷R@HVyHã[h/€¾`9`Ü<‹‡ü°‚—ÕÎE ËrgPÕmûšEAïã²Á)2*Ï­óaÙ×ùˆÌ�. ˜J™íj¦‘ÆÏ U÷…±Ú¾’÷'¾™¥â[ïtÏ·ÇküNºš_AÃïÇ,%ñIWï=\šÕ`÷;þØsô-™w[à1.JVœí¯xo~ÖwN‹_  ®…g®‘~1׺ïO{€U< ÌVVÂ8ŸŒM?™Ø~²°@±ùäEùäk䝿àW¢¸Ì ;_IF¾’ãs{¸¹}Ixuî »ïúÜ;[¾$î/R÷ߨó „$+Ùð^Ðî6í}9ÊC�÷ËOöp}¸ó£0[°ڜϧv³  /Ö^_ÿ³¦Å§QOþjj-Ûó2!“¿² ¿ƒ¯ùàõŠ:b�í·8|�o?¶(À¬ƒà4:ôÓÄø ï7ʵ_óêû�/l$n¬½üÞô_µÅæ(ü/{lZŒî£‡ÈŸvZƒ9 ̽Þ2e¶Óòa'¸¿þ⬌ªª%AÅïã¹O>ûâ«oä;ÌŒD($Š�†‰sZì2:kP‰,& ZD‚CrÒçXŒxí=ìƒ�·à“ï?†ð 4‚Ö¥/ktÀöVM1£·ùìèíù¨8zçH¥ {|À¨ÿ3|„9 “»d÷k@>@€áóTû|/èt)ý¿faŒB„äÙ²€áá¶!t„Nµ|•ySû~º]GB0ê.©ÑNËf”¥ÕßõEš©Ê×3 °8E'Ò�ÞØ0ÿ÷Ûù@ IoE(d߯ôN½-ˆ7€ùCbh‹?Ï…¶BmÓÖ$ t°.j3!ר?53HÏ Ú¢»¸ìa(ü=uŸŸ�Ó6’¢Ò�ˆtôX�è1ÁNkÚÄØ•æœëLƒêÙ¤/x5ÔJ*,ÀÄ [ŽTi–ÝaF»fOB¼¡="í0m"’Ú½ç[pþØ 3Ãdf²½TÈÝÌiÕ· rf‰“D5N0h00‰»xšŸR‹Ê Ò -ÀP“l‰¶`Ä7B ’=í_¾ÒgzŸ7x¡Gü $ƒ |ýÁ/YÓîå*]¾‹8«“92@ü¢>×Mîò»Än€»s[—ÈWÜ¿öøxì��;Fý¸p¬ËÇÜqؘ0*FÏQ8ò8?­ááöÐ=¶ -Cã0cPƨ!`� ì@1?ÍIóe¿ØOô¶¾¡7÷Ú^Ü3{ZWv¿.ê¶è?›MÍÐ.¶îzv¶U­©i[qÓš¢y6¶QÔÛz#{½p v€¾ÛÂ:gC^Ë«zý�LÑ-¦†TùZgu_ÛDÀXÆ»]ùI&É»ñ/<…®õZÆêr ì(ú²´4Ž ´P ™�ÖMYüFa‘Ç¡›€€qšñ8<�ÛÝÎä¡ÜÙÛrCo&°Cý¾Ó²0Ó›†A‚®lc2(eé®èt¸±¢°8¹è;�'™—¿=H�ÀT\Ë]W·iízæ±Òs”rá×8¥õ$Ìv먶ÙØÓÚ†P6×$¢/—Q·¯]¶’×°šRu¶0¬Áˆ‹bˆ8¿¼]®Úa�.ªšÂÅuâ ±ê�ŠˆLí»±v®©v Kw�Ú¥÷ª³çëtQe³3Ws7-OBÝú(Þ†}Ý鄇F÷éºÀôåÚˆOk0¢ªM­å@B­�×ü^½'£3{wesåå‚P\;{~±’Ö·‘*pfQ´} ÉÕ ^ß,ŒÝu¢]®…¿ºWßÖ‚.è¢z?ž´¡¸^mß»sÒ 1wt.Šl‘Ö%ÁUè «#áëAÕb¼l—-l!~Ïêš<ðzÅÐ_VdíEkm§¤<ÀÍËÛ�v–ëÄÐ6h‘ž’Dÿ—Ï‘ÏxaÉ êìàe û çB]_ìJõCíéüÍÛ[.UÍÀcîwòªB©z¯HU‰ý˜¦öbšÒu=Ï\'¦sàÓœ`¼æ@U;ïÑŒ¤ãŠ�s Ó1êÀ$fA£ÿä¬ö¯Z9@sŠDLWÙÄ¥=XÚJ[ÚË^®Øž1*ŠÐ¤/&d€¾ø½ LÔ˜Òr°¹ËQ@¶ÝÈø·˜©xÁE¼HjÜÆ®HÂC}àk &¢˜+W,yòØf–5ÚVÔÏù¢Y%€›+雺Ìó`†0Ô¤‡ŠÊ=V·±–ªÙÛ•#VÌm•.ÊeÒì¥hgXQ.…ñ%’pbÏVl#ÓkÃ÷Ñ�úÇ [‘)!„¡ŸÕài),n¦¨ß�eü u úÛþ—ü÷É‚°´Y&¶.2Ú–Ô&rJìߨ´€Ö$‚¹óP ßW=U{ ÿ’—‡Xæ`@È2'}Ñ*qöb+Kˆ:r†ÛB¯!á|õh]hÁÆ•W$²G] 4A͵4)gv8÷-,Õ‡>Hò>Œ÷)>QH¥Y ûÓÌ"4ì'ƒ 3Ý»ó}P°es.&ÅC˜¹�83«Fý8Ö“£°éX˜#[B÷Ýò[èèn(xŸõÌü„û­9ÞÝk+¸"\�‚Mwðp_“<=’j‹áõBSŠKLªH€VÞ ºð½—ê@’Áh@h �±d5Rù®pía¿˜Ç» ¦ íeÀ—o_ùÑ6aÇÐìµâ]ÆøÇ}ÿAŠQg)¡l«éÜXÌ&þ-úlUi¹x ™b¤c«s]­ÝÊa6ˆ°ï�, N¬.¸R—L—¬IŒSÀx`�Uäâµ…*,Ôˆ©HèpøÁô “Ľñ×�µP!5ªD6ÊœCœœ`·“æË¶ÉPKŒg0Q¢Ù<àA«ûhXrÍmwx¥él¹2í:½4ÿÒJÑb÷mÃÝ´ �;ª»QÏ �RÏ'5Ì\?Ï£Z±D•ôÚ(6q†'·ÝEŒSC|ÀJh9D)­rÓ—ü/ÔÀpÒ‰¨2pñ¹ëÌ—þ79Ã5#ÁK#%“²H¹éR}ú`´…7†Ð•Š7,(^Õ¹d?ä!Ñs«\Xrv33NpÁ3WÂ{j™ÿni„gàkl{88i÷tجýT€ê”œÎT@Ð-D¨9Š1Àì‰n7gX/0÷Jø¢Pu)€®0€üçyÿ)€<„MÝ�æ—B€ú˜ L6.ÄØàŸ4b¸ýòJégÞ• ö�m¶oÜõ†§ÿŽnzÀoó oGç¬:å­Fd¬FÆß·Ùy_Xüø(0øQhôS7ÔS?i‘ë;ëÒzœ*꽇�ËÇÇ®¶¯½õŠ�—ÒŸŒø†Olûä¥Wöjëök{?Ÿwîüúê—cŸ½6þµkSK³c�¯�7~Åý áz+ O�ý´dõgÖƒŠö/¿–ï�C°YÆñ¬‡�>Mü\šÄ>¥£=Ü�~ êåûëæ�VMy¾H<_§ª}4É3�>§žÐB=Ü_,ÏÅ„PÀ25äîgPìÕ8�ì0Êéç}Vw… ¨Ë·6ˆP„‹`qÈàûݺ’’!€©·KUd�l[2GØDL8dDø•]ÇᎴœwˆèÅí?¢ã#G4<ê Câ³E¦qP¨©s>æj¡ópå&ð!?ÌÒ¼9O„½îø–ûiA}‘@ǃ¨pTOF þýÍÍñ?ò‰¡y$ÛóvÞ-ˆPÄ„ô=ÒöHôr„ÖDMÑtÍÖ*ZŸ6ÖùŠÎϸíuRgzC-µ¨~��M}ºh&gƒ)�×äŸUÖZÿBÏr½=|0l–-ê0ýL©L8øó�³Á•¹[†}†½†]††µ½a™¡èÇo=˜ºßÍŽ¢§žCÀÅ“û­ ˆƒéwíüÎ2mmÚ~ž¬Æ1Æ¡«+v±é6À8ªƒMì$óA4D9öúãà±ÝÞk¾I(ÔB邜P¨ÊÀõïÔ8q«º@kvþЬ_å“Óf†6‰%Eš³‘r¡Š†à¨„Q¥Óïõ‚~(6Y(”(Cà鋚]Vƒ…:¿±Û;Ó”¨#Š8Ê’41K?Uf4°K°ôeãůøïšÞžÚšêªÊŠò²Ò‡žk­®4õZµRKÅÉü÷îÞ¹}ëæ�ëËÅ|6�ÿÝ·ß|=.]}5,²í­Í�õA¿×í´?ÿ(=tpG£0ÃÆüÐΚŠaÔz‡wN�‰ywÒgA|Ff�S«©�qÍ¥&’[ŸKaÆ'n:.S©Zå·8ÈJ‚Ï&ì6<Ìð{¹3xq „2J«Õ�Ûd›„V{°:ŒE¨qq2‚àØ¢×¿¶Ê~“>ëPæ-¤y^K´7}£›ŒÇ%ÐÊ Z¤&ö¼é5¬´”$‰_¸næ"Ëdž¢‚ƒøüìø§·žˆfœl7 ΢Δzs:B]#8WU2!=�^­E‚¦˜&?Õ£_b%U‹TtüOƒô+!e¾îâ&M#$Iú„‰dFu%]yÂVœ®ü»dnäÂÅÂkÒ’�Âeµ’p,jÑ„LzF–œ°ÙœÐÞbÙÄ¢½v€Ê=ó#Håõ®Rþ€?è�P­�x©~•#ÿ#Døc†HžÌ+1ÿ–WÐU#nþdåpmçlÜIÐY‹3fø †¨¿èPI¿ÅЀk,©ëo/°ZkE굨Òt „8@°æ�ÆŸD(àšø‚Ȫ^÷ã¹fL¬ Îsb..;ÅW¿´-Jβrš¡rmŒsûœ·¬n d¦ç¸E÷¦ØöÏUÉ?ªw ¦#�Î|&û]ƒ´Í­B‡ÄƒÓÁ%'—Ô%÷Фã2Lçu‰Ò:öÐËêrBS\ÁñwݼsƒOà@ü6-õÂI¦G ƒÈ´>¾º„&cÜ;Éj ZzmsldÑoÙí1ÝNͰ¶Ç…iØlj�†oß;m6±Ób¯ô9Ê'S-‡u) ¬´`€Y´5É 0€¿~Y’LJ%q|g¯ ³w…3‚iÐvÝi›r»Ò\­%-Q{-“€šô=äébÙX%jâqršÙóõr—‰Zdt%>öÛÂcW¹[³$|:A]Ld9˜9uñ¡f3þȧÅEÁ5ïáEç362ÉšÛáò œ:«ÛŸ3^$¯!ôÔz#çµ\t6« ùн:�/L¨%�¯éÍ�¿Ðó¾ã"™uº’*Œè€9ÉH®•Ï“’õÃxAâ/Á%ÎU•CFÓåÔSëœfù‘Vg~ÔÍljîp{UpD í»Šnëy’ÇÑàƒFÙõUÐYÒJBo"þ÷,yØ­³h¼?…ŠdàO‰JäH¨X®KÛ…=mGt_áŽ`vëý¥�Á!ŸF» Ûqñ˜ã,”íM„XgŽ?f€ÓµP×dËëux3…­/�>òÄ%¤<“Ä6éón㳊DC¢a!øÓ*ZpyˆŽ>r¡Ôn×v(*‡PƒË›Ìüq)ÐÖ…§è~¾j¥ê”ÌQò¼�:ïâIbHâ]Ä›KH¬Æ´N!¸Û/í+Û+^ÀÈ}dÄ5ž¬cFíÝ„¦®-™êÑMÚž®³¹Ê 4Aåÿ<Ñ\ñ÷ɆÎù«àÙK¦¹/9ú)7îÕöù��·h Æm˜Òv޳]¼6¼Bn¹Ã»±äE3¥ñq1§GÞú¼Y"�ÇfBü$3÷«~Œ¡äúF^=Äm7¥ÈÆ` ó ‚»âsâUÙõ>ÛSƒÌ 6iÑœ²í�™—ˆ�CÜ ¢1øÉ`1¸�Y&Æ-�Ì»´MØrIiûbò2P+~oÔR6&æ„BÄL¼ŽÍОJ K¦@¶ûH‘§ò<êJ^Jñ‚Ò]šlÌk‚JBÄ�†"yl.Aæþk<(r¹ öåìÒóü'Å%tŸ�7Twð�iù×Õ�ý ÞföëÄyºŠâ]—Ü!W8”êV?ÇWwPþ]b>¦î�°ŠxØœ%‹îSr±—n¯%½"ëïæ;=µd¸†­+{'þkX&…§ûþµ)çP\Ô©ë ùÐ[{œz  YÇÅbx‹A·)Û:çÅMg’ äè+ªO/Î?}V �ªÚ>…zÌR–¦€·büÞ3U1“Ùx†7`•–—6û¼ŠÊ!³de™Ži̶B Šlƒ0)6Ñû=ŒHÞÉÊ*ÔÌïÍS”ÙEl”FSY/$ö"#�‰¥yä>Ê[�- K"ö·Åf~�= ¯–ÇŽwÙ}™¢¦‹Ñƒ¡çNy mÊ¢±f¥²R*™U}ŸTfлN†ä¦Ëu¬¨LWÎ3ƒGAÓòXñhzá_Ð<IÿU4M…ÌKòÎe=uÿy¾½ZB/( R�{Ë¥?ZoN-Ôy‚Œ9rÌ•3ºÏ;QåëŒ.P£ÞÍ£~-òÔý)U|¾“j¼�ŽùÇESà„x¡ÅÙò苜WU@”·h¸iÄ5 ?òrcâžȶ±*f*æçÆÊÎÎôëbnJîÒ[Mä†×-BŠkT^¢{ëÚdâÉcˆÊ>G�g^­@�ÆxˆÉXFÞl×J~m| ”4Н5¦&^Y­P§kƒa[™-VÒ‚ÑUı¾FÛEøXÆ/gÛy~"×:s«÷N®Ò»Žû׈êL‘)ãS~çê\K £qJ«:p6ïöŒ%?3r*ô#T-ÞçäÈ:yXèJ… o>+U†ÝAAäú­,XLÑr`¼C —ˆ›ÚàüÎmM2Y³šUÐ2}Ø8}-²”¼6ƒÒ�pÅ™ó�mɹ:,eø@Ýo¬W9á­”Pí ÛŸ¡³6ç%µ¶¦UìJ‡¾ÏŠ{>·šxýW¬b û#Œj¡ÂðL�üw¦îrWÒ6©£²›DædÌI‡…Ûý8UD(–cñ´ºjÊ|tœMBY×[³_lÉb%ŽÛ¤ûÉáÞ÷EÕƒñõmë™/1º†WÜd_Š®Pµ{ï£øh /æ ¬W>ZpLu¨w+ 8N8b2û§”X¥a€x) �Ì$yìczæÙ[Áo˜¯Ñ™³»ñg·ÔœJ…½VûÙÈ6³‰�`Eå’|Wò/p ~Óju½¸)M²=µ\¶§Sv}1ÞχùÁö÷£­J¹Y&.­Ùð„ÞBth¹±‚Q)»C!tåF,0ÔÜ=ô!Á¤+zêÊÜ\OG´žK#-lñ:Ü×¹G®)ÔµõõâüùÑO›žô`ŽV>ôLÈq�J²|ü8¹Ö‹�©¨Êß"ïyz/êïŠ"xüAœMâÈ‘çíÞ�@´Îvæ”ЦžÆT2Œ¢<¡«pà!ψµõž ".=R®ìPFÁzâG­•Y ³˜èÝ1³Wuüqµ�åk|Ã4q-Xßà˜öÝwqƒëçŒGÆœ#¼õo�Ð;Eu“�Sçl(Ö?¢!Ç�vœ[6uÑ0çiçý/˜kÖEƒ2¤} –îû †Õr– æôY"}Á «áAQûïšÿ“à/æÙ½)`õô„]Œì»gü?³ô�KçéŒÅ£CnͰÂJzÒ#,5™ÊêBŠ ôĈ»ˆé,x=[Íz*Æ2„Ne¤°r‘�’Â"Rú (=ÒRð`ªâ°d„0«\eZÁòp55ô‡³2oøàËÆ–xpËÀ:6£‡¶À‡Oðž‚ÅüsÍÜûÃBÉ$/ÌW<·jçßlGCáE}�GËm�K�‹Ãt|GKÓdúüÌŽÅꕪ¬+·0Öè€ßšîô±\juÚ)õ|/'ÈŠ'…Ü£þaÍ•IÞÈ•T]×/Mz¾�AD‚°ÖìõW €ßE¡+AáÐå,‘+¹Â÷nñr>¡(ø}Wâú�> KÀ�ÙUNÿmp?µœ—wåj^Ò�[øM¹¶Ç]r#=*ôìYß'åwKýOˆëNß´a»²}�NÀùùâ‚xÒ׋41<6Ý‘Ùa9�ú¡ØJDzÆ�ª­Í>¬©júÔ–R0†c¢ò`«Ì�UýbܪòYàú 9>�ZÊ;Ù·ÐV‡qà{^É'*!ã"^}l¢¤mŠ•«5Q8–ºiÊ™ ökÀZìƒ2¶«v<SžÔ±63oð0£p[¾ˆàž‹6-¸YKÞœàáKò v§Çû;›ý¸*ÙýñáÃî¯{Úú¾ºûÐþ±GÉ¢ �ŒPÆX\ÖØÈ0sÖë{l®£ SaÝ{òà�½½÷ëƒÛm{ó`F­á±Ÿ¬ÃöŽ?®ÚKæ6ÆU Ï–“ºëåøaÓØapeü b³~túïþŒ·¢ézLæ‘òTZoknâ7Nª_!9>ºYMÑèÜFsψ J§çîkªª;… 3Ùì&Þ¬ˆGe•RhŸ̲HF²Ô�™¿dtYÞ#¨°j»„‚mgÛoþ8„ò/‹J÷%äU[ ‚u·ú¡Bª,•ûÄ%ev(ÿƒýèà2IÉ�ÄÂ*[R×yÎÚÔ�m>Yàø wˆ4n0nˆÿ—çh9Y•íØdé¼d²·nïpýðú¿Fëõd.î$ú¢Ô¶Äb#†Ó´íøÖpëQ×ç.�î$6ÈÇDÀã‘~>X¤®G÷œ½ÖÜ€½ñÜ6ÌÌ“¸©báx|yÿÝ#ÉÌ�oEÌÕ£“ƒk3ILŸ[﯅îh¨ÉÊj¨FªW_§PÔ×…èéß< †aä“ S]‘ÙèÝ`ìp®±¦I–Þ5FSÇwTä§ ç¢ùò¶:Ê^·¨Ú%aêD~NÌÅÁÅ Yhˆö;Sä]i,¥µ6:f§Î„ñälG©ré{ÑùœeH”ëÞh÷5ßøËGö7ˆcsNøWt´tæ â#J"å�ù¥ôR°‘ÃÉb„¾ˆêxþì*˜°ÀyÄ9ÌYjr«|6±öHõ¡ÁפnÂkè8yó+KÀ~%Ý�âóÏ×÷”ßÿV1š½ä„qÚOt»é+Wm3û��†ÿpü÷úH�‘yúŠÌ*È?‘÷{ûðHÒ1o¥Š¶yŸº{Hh´e|Ûº˜YçSv.)ùBs¯üÑ ekÚ,«êéó»uuýÓmíC�ñ�l– �q¬e( ð`{hµ�ußÍ2(ÞßR}µt‰‘±;+ŠZUKwºö¤E¶Ç)gÖÄm{î 2'‹x]ÍiÑ)?�P#ÏܽÌA¢2÷µìlS’(�‘"‡�h™›k¸T©ìÎL¥“Ud˜Î¥bSÈ©]r '¼òÿAoÿ†à€[º®K5NÏûôÚA¡‘Ö8虄Yï-(=“”|¡©7ûñͼfÙ,«ê0ñÓ‡Èê�‰©öæ¡®Ä.S…éÿçœ]@«Ð±3Ä색8|è–Cõc>ü²3¡F©ÁÄ#ºÓ´ýÄÖp³ÏCpl × 0mßB’£b=îò^Ï’íhÚ~ѵ£µA‡v5 (±Úû E×cîÅ�ƴÎ&Ça4Tt´S :¹:£0n—Á>°šåz®\X=7$ ®H—‘CÐ<ל�´›ö  ƒ`>&îßé>04Ò4-û¡Øõhd[/J˜ž¦KÚ ¥w$¦í¾1^“zcQY5d½Ó°c³É6•ŒÀF'{MËÎïÚ®×<=¥—~ê²ØpèZ›µYוÂu8ß®"òÀ³ò ïè1ÎÇ%öùTÅÊ=òôÚ.±:¥H”#›ÐnÙ¶ù2ä‘T" Üã"œ½Iž¹9îpáÌ.‡ê3=‰£×X,ËȆ>¦1.oâš%¨zn¿�aÿª¦(2Z_W¬×Éà´Êk‹Oþ&Úû‡n?Öì|‡ª@5™~þß,ï¥C}bîadد^0Ï®Ùþ¤ñD¶ÞFçxì¸-ˬ‹a=eUðÌõDë¥Z`0si³lD~Ý�íŒmŃ՞ú<ƒ7\%sÕßšºíä3ôáIäÌç ÈÿÿÑyÓÓÓEÿwÏè%={ªˆ»ÄÖUæÙ£?øÍ„ÝBS¿ŽŸÿG«ãWèÛ6Žb¾þm†Å>õ±ð¡»ÐÕÉ´_ôIžýÙY³ýäñ\½¿–]ˆk690Ï3gÍö]À®&GåÀÑ-æ—O9¤[æKÙ>ÖþI×-@è†HuvŒ‰uV×GϪù —+z÷4W¹üƒT^Yzôî%|�EÕ+;×÷éQlŽééhåj6÷î5ÿkõh¾žuüüßÇ5 £5+´r\uÀÆ +Îgà̘»×tlµ‹77‘ˆd?M—|.kh•mîB1šÆ,>á _ü+pôß4õ%¶ñÈóN–ûéß8Ÿìcç_œJÙñ°sdô~gÒŽS–ï‘ÿŒ>jOéCæ,7?¾! Q×–<&œ ëk�ô¶eî�¦SÁš̎“-õþyuTê0¿Òê™üÍbjû¡í�oÙ Ÿ;ú–¯8ÖœÃÙ]+¦š·µ]L�zÇv¿¬ãžÏëÙáö–î™"kÔÎꊲ¹Wâ}œÎÞ/Áýd›{0eFo=ƒNAÇ÷±+=¶Ítqœw%/W©¾Ã¯Ï½èƆÀÚé¶Ón"Q™?6OC%´Ðs]Ë96{jye¹fTžTÕ§òæl׿Æl¼ã¸%’mйtß>óX»T²1vÞ0'a™åþ"4p¸¿bÂ5¤^ñ´ѧ˜ð®îì¿7f†Ÿ;¢7Û}Öˆ¯ÏÙÎàvp "M¢®é+§v:t<5�1ˆÐ£³%†i¹?õf»,û*Û*�½ü럤³2BáèÒ ‹�ûU��Û(J£^6•µ§Lñ”ùÀöÿÙwiº^Ü~óTì îϳ¤@?wÐÛÖ=g�´7žùž¼¬Ô]|úÏòö¦ ˆ¥b¯Äzuowîν–_}Q½ÎÎ;!“žªe–ÂepøX¦»‘¤+zùìÔ›ð!�GqÌ gqün<¿9}@sj«ömlKA–Ye=À‡ç§­˜ý┎x2¿èù‡®/ÚÍ6�¤[˜=×Ý6ç´`P^7ãÏO Çc&Üsät� (lT·`[œ,//OQTP˜—]XR˜Y”çaatÛY“‰ÞfžL¯v¦TMsøSMWÎ××–¶ �³¡j€a-�¹D¢šÈÝå2€tq«FT黾ó£è�¬}ó·Ë‡ÿ—úG|XK%ø¾= Ê�d � FÎÎZÙ–Ú$f¹´Ê¥«÷—+¶T4 k1´þñ¸‚cÇÏܾ1p±:»*ë@ëñÙ„Á‹Q¾¹ñA´ôʨ érœšXc¶{«N­È‰ @E[á¢Óg·xÁÒ¥s«ÔÎÍu^_Fý/£}[]ÒèÕΖ„M޵øÕÊöSTeƵª�¸Z{´àß_±}=Ï«‹ÿ…i³Uø…öEvG ~¡ª®=)glÿº¾Dpý›R:-ÿï ÜYé!¤}9ꤻ,Œ¼Þø�Η±ì*ïÐÆì†È°I�JÛÆ�óMqy‰µé˜å²Åž hÀúÛ_œ4pÛ<(# 5+ß,Å“òÿ®!õ•ƒ‰ž$³½U#)ÎiŒ@MiT8Üm}8»»ûíÊJ÷S¨«‘À.|Ë1£]j´¶5&ëÓÀ£v®h[‰ãK‚Íh÷”ä–ÅðZÅ�Ãó]Û“piKi ÃׇJqLvꣳ³bŸw�w$Û"ª°V»œ˜ŠB Æ/­ LtL„v3™Ùú Þö‘òk‰;}"›C¸íå {Y{Qèñ?Ñèê$Q‚5¶ŠH¬3ݵÕ,�VãH­˜âð§n /ÖÕ”¶Å„ÍT -Zl&Î|î1Ãúõ·kA ˜`>÷ÌX�1Ó›U—MèÄ�mÿ§$cæý«…§ 6ˆãûÿX½Â(¯Ã×ÃÐ�é‡W g >Y%™Jð:>ÆqVyÿŒ|'ZÎzšœ³ž)4iõ>ç{vîŒ Y0ó¥(Ü!ÑRX¤}Ûï°5w£pÖúîh||w+3Ñ+\·§šûÊ퉎Rï²�ƒ3 �|¿Š÷EPCªÈü,¶ðňšÓ|ÃéN¬&pXŠà…ÃÒâšfðyu$�dÎ#9E•n’$©Rüppn²è’~ѸàÒ�:lI#ÉÙŸ‹óJIUÉ @†Éªdo<œ—äLÈ™€7ZÔ$ó&""2œX ¬ '�àŸ×|„`íÒNKͼK°ÝF…p2Ç"J´›{«°†�ß È!¹æÖ«ÃòMà«Û_0¸ ßE(à÷^iè¡uu�º© ìèÕ_e è“ϵ¶�NtDgðkí´§*Á �Ke׊w+–¾9z<îã±²Â�F®/VäSžx»àêk]žœUi ø`éÁ§\§ †gÖ,8/ÄÂòbž_*½äS?q\�»æ¬Ô¯kЉª¯Þ”çˆA) ªc¢jw¸*Ñ(Ç|TU}¿¡úK®# Sàø[}M4¿¶AßYYF#©t‰T\é$•ŠL£“‰ŠßÈ¿5e�ÕÔ) ž ¶òŽÃ;BŠB&6[hjqçí{‰­�_uA:K. *Œ Å‘—Á+¼Ñ<ŸµÏ‘lí[гlr”¨Ò°H—ÐüÀxH¤;‚©à&‹ªï!L³ñåîÛYÃ?Û–Ž¥¦¨=ʤëÙœ™S²c/‡¥lIƒ2Êp)N쮈àÄi&CŸ‰Å† Ù¾¡ŽN4_”“£w©÷) uÆa:B½õà(£~ù•• ƒÃýrç´—8¼O?óúÅÎdz?ÄåÐ+WÿìÀ%×NäTaÊÁM…¹Ô«´qz÷Á’±zßlsX¡V’eâùê×â©É¸÷Í5¢7c³o㛚ފÇ'E‚ ߎÏüßK“êK•éy‹1&©Y4”ÈÍ7 ‹ÃÇ´úÈ4åš^x.‰H´ºç* ,·]M–jiF…ÁoÁ“±0Ý�Ó§ÄÚHl$J§§Ù‚ß—ƒµ–XKrpük²£¦Q§‡´Tiõ難’Æfþùž9p#®!þ¡œ#bh‘XAºÎo˜/Ï¡„ôé€J4•‚t,ãb$­4f“@Hoj¥ÇŠÛè¬&¡ÀÒm4AV¬TÆÄËÄ î7-àKdúIµKµæ¿Y®Ñÿ£néäÇE'¿ÅbD&ز¼04&4Ñ“ˆái ލè,ËÄùg¥*¨Ä‘þÝÆþ«­íªX.?åÎæQ2'o´s†Ra~½ ®w@Ê#(T%N–—š—,aaÑÜ0*Ã5ËÜ·´QÚ…à˜>—"7ûAI ÏTà`Db­yïVc!µØ™‘Wé8i4øp†`ÔËÕ¥uåÅÍ‚�™r´þöf9Pwû} îöLükšTu\ÿèÙôG„Õ®£ÖÒnY;X©™âp̆Âpƒ!R}Ø:ü)9\nÎtñÂëÛ˜,¤×úClÜ­0�‹2*Z¨{ÂÀí®|`üxgãä̈zd¦KÚĤí&M�)NLäÇ$&óôƒ: ø½ œµÔZ¬Àò{Û,x½9?»_ÎBÛÿÅ\›ÿ�9<©æÌ’Œr�×˾“®wÄvaaeÙe×û�Ûnºk¤Û‡¥þ·r‹­Öƒæ—,ÿÐq¶Ëã©Ùu’ ÀN0hdÂ>hþ¡¦`ÞY)SyŽñ5üµx1w)�\iq½kÛ`�”%ò¨Ô<öÿ㦻fc#Ÿ4ÁE-í%±œÈ”;ÚŒâ$NÞX—ßbué^¤.Ûd]^ƃ1¬ëÛLL´cº&£`�/Áî–sð¼0CF I?„ ‚ÏÂQH]sm d}àwùÏgeÓ®?æîö°¸u¹Y³)>·�W¸ÝsÓï>gã¹§˜Ã“Èw\%óÔßKê÷tïéko{£�Ó�óÇÒ0§ •ÿÖM4PÐr�P"•ê&‘$N,ÇJNÎtq¬8²TÚPyÞ—ä›Ðª ¤ï‰Ž‹²™YÐÒNú’=¤ Ùô”N�46ÒýX â¾?ÅÕðh^»{Ìúf½Ð¶S~wü¨.¿Mòê�x+�r �Ý =Q°º¦ä)±½öÓ€KÙ�¿Ó÷¿ÿS#ïœkººF|LàÒ¸è@”3ø&=„äî•" Pr2…íÄ,i«½¸'€¦˜úç$Ærá—Lð`Ã¥‘.ü4‚ÏÁ²Ãô~KA+u¥$Æ ©‡ê+¤òòó˜Ô*ãÑÿ:ÝNƒ ªÏ%<E4W÷Æï‚2!,È^»É~ÿüT'š;1#­7(-~/>ª9==£ç)[½ù¤vx£*SÆÚë�·÷S‘/ÂâË¢ãaÑ a{·ÌkÈ•‰dQ1Ñ�áŒVÙ%«‚öa݃;�ìÀ.9ËOR?i,•ÖX›rÒî·uá W•"~Ëkºåà¹<ÍõÊÏóTOûvå>úEÙN)°Áÿ¬ç×]ç3uw’^VMˆt¾«�¡ÜdBæüì±C7/"3Å>v’ÝTbsÝRÝz›çýPôª§û*:ô¾ÛÙÓŠ¡~¦69-üù+c£R™/#K*CȘkzzNïèõN¹\¥œ(© &bW`¶¥l³ºÙÕR²Ø:hlÿz÷%†yuÇj™«Ä20-ÃGóoN¸¯Óiù+p=¿ÒCHý Ú©…Ó 7[87^kJ­´?�cVzG_ÿfý)£»]wöŽw,k,@n5?�Mª‰Ç,Ø�|xWa’­WŒzà]pkA϶ãÒ­°ß\Ow°ýµƒáxò}wùVáž�'M§RõžtŒ$è—([¥Û="!Ñ�K…ÉOº“~Õ\™œHÛ e¯jþµÝg'ëX+UçÞ)ljR]üóØlÞ?ϰÝu׋PJfj{ÀùzuÏýÛM˜ù¦ØLy£s¦¡;ß$Ô(ëUƒzÆ!:s˜àÛ¦¨Ì¸´D%;+!""#ž“m)IãË÷šºvKk"k@Û~]g@ßn/ÊJŒ/ÌŠ—[CRi¶D Ç \˜Ÿ¯pÜ}EéiAÇØ hª½—'Bñ$@ì¼ÉÏbA9ò±;ëÒžqð zjÍzÔ%èÒéƒÜy€®c“báØN"B�VÛ†R��ØMêô ¡s/0æA[bák›rËjU®ž›ñœQrÑŒÝÄV‘úžƒµñ÷KkúXÆ=iêjüHl@UQ\ŽØM¥æç×ôIIœü×6åÕ&ªÓÑw‘ˆd‰Wh¨mB¤Dp©ŸƒùlJÇxpn’ëZŽè‚Fñ [[Aþô|ü=õAx½–v¿IßÙxÎÿÇ\‹þ•¸ÍûÅ•ÄIw–'¾¶¥×‡I/÷‰KÀ÷$üY¬¥©cb¼]ëFñy“üä‘¡(côŸî‡}iÿkUË;«Á¡â>MKS½¾âA³áÖ?ßní·g/ø]õ›¼]¸ßTS Ò¾ã—xÙOÇ`×hØ(åv²uòjŠ›~ÜSÇ�kWv½Å|—õ,·ë[þÿ Ó€S¾ãBj±Áë®K�úÙæ²–±½ØFËe™õP„X΋fÉø þ”¯ŽÙ�uý¸’¿®œä‹Lvè›DÜÊ:(Ë òâP`¶�DÎͪ«•ÖÒ)�.Œß$�ã(ÅÖŸéíÌ·�»=dÁÚ•x ÂxÁX%“É ¶0 2‘!l$‘Ê a†˜š­=¤ ¹D}�ŒdÐ8áíãCu¶Š7Œ‡+� Ê£�Mpûö¼~ö¨ûmÿ¾ý¯ž>ìþ0˜'à Œ�òÑÜ�ñ΀žõËÛ`¼vnvA×Q^Æ ìЊѹšÌ+èn©‘ëêIBa—7Q™äxJÒ6Â1™ æ»yãœà®R^(’+‘0#cÌ�#Ö�ìˆÑš$Ç3¢Î!n…C¸vB½Í'Sн9R÷x ŠSÑÓ^]­jH§Æ ,Ž„ÄwõÁ9…ºˆ¹Kžš¨-é)=©ÈµÐåêÖÕÜÕ­ƒÍ^Ú­!�WΚξ1î�Rß-¿¿6¯‘‘vOXå©7ƒYæà7ÛàÝÐmÆŒòQy©‡Ã9R-eŸ[tÍ`ÊÍ‹r¯¯}ÝTI;ÕÓu¼¨ZN«€�<¨ýnå8Ž�à¹bý�³ÜäÖùl|íQÏ#ÎÁ×OIÀIщ ‹«˜’YÛ¯–ô¼ 汯‡SXóaC︗¸ßGv8NÈ×·Ëþ5Ðsƒg"ò“kE~™™–´£@¬�U·9À%@ÿ0–¿Ìë ÷Ü»»¸�åBHNyK™ÅeKŒô»H ôf�k7änÐY•ØŒ&å2H”Œ†Hñí ×�É¥“ñ9MèÌ_H6J .•’Ú)/ÎíÎL¥’’‹É¦?¾ß;°sóV×ÖOçîA‘¡ÖKÊôe?J¤½Ù÷‘5ãÓm-ƒ@þ2&³8�i~ø`ð-SJÐèñ‘áS’ˆjâD´Ý¿Ñn‡‡Õ`„]1L¤áŒ´¹»sØwlî÷^�R³ƒ,¹ŽjÄFÛ—–R¯:௺#òhdœŠjrÔP{ÌMlÄ�$ \« t¡#íR1Ð&CÛ`OÒSLëFñ)�G5Q>Ò®åƒÝw)žQÿZ º‚×�‰q+ÒkqÎ[Ö°ÐÈ7!vÆÿ4ª"_Ù§¹HÝ"f<sÝÁ(lC>÷š!ª‰uÑvÝCÝôqÜôÄ|‹=Ú‹-ðˆ-y/Åœ“'Hh’¦XË׉ÔB¡"(eWi õˆ–8‰¨¤š/©Ân7›m¬Ê�Ú§¼à¡¦î·?gØnñÔ�q?ý”К/g}ô!Hj*YØ3L>ŒícTEJ¥e5ÊB¤Ÿ›�íº~lH°¼ÉÎtÆß Õ5Îkèy¡ÕV¾q&ç„–�”’,8Jø¥y û¨êZ;Òod«”4¬kY/„¬Pž©àÔ&0ê&²s!1.'ŒÃ;t9 hV«¶ºf’6'[ŠÍ©ÍÚñGç4øzMúý:îàqcTÆJ’–G9£² Éëœ?˜è Õ�2©„Z±­¯ŸŽF¾ß¢ýd“´-I, Ï Ó"-¦@¡4 qÖ ¢®Û·ÀÂ�.Ä8M΂y³ª‡¬ÏÃðß2ÕŒFmÔ�¶‚HAS@¸x$È+ž—ÿÓæQÌédm;„PÑ× ŒñÊXOö<²A|-Ýhäéi�ÓÔãö‚�ÁQù¾0A^ßf¯4Pƒo~ߎ©]ÏMŠWDàåÎm&2àUŒ´•̰¨Êó™fÉWö·ßjôÙg› XRúµJ¯�+2â²õþsÈój 5/|EÝu°ÇÐÛ½Ð+ª²Y}×/­‹kêÁç|W ß$¡–|Œ­¯ž”!"Tr{ZB‡1fZæ‹V×M pöÍÆ%Õ¤^ÅQ� ˜ŽÊÉAO'ù8¥…¨ñ¶É¿ö¨Ù7]:µM>º‘ç5ôq Á÷(ª]9ÊTÔ}xìÅœÄîè¼ÙœR¹�Zxµ¨†)ɱñ8 È+D®¥¦±ÞiŠã&…¥ôÂè¥ó¨ó†€ÅžÒ·ˆš†CG¥û�+=$_“袒Á˜–rI ÂOàímÖÂŒ½Ê»çF’NçßYÅõÆôÎAïëõp6  h^€ÖÎz  Ð Oñ·Q¾á§‹!j& Ñ”ÔxÌ­*`L4UÂy—ÿ}¾îµœ�ö" £-̨•É÷£a½Å&%íj@„øväõ~8\‡Œ­×iÔ‘ñ(õ˜_Ñë+L1¢vnÅð�àW•–ï9”•�Œ °iLl¾¶´­-¬\gœ*'æÄÁH 5ìÍòy/†ŸÔdŸŽ »�QÇWó0n{+iªz×ÿ;ƒõ+'µè-�d´vïF ðgs,¥(*%0·ÛYKQy0$…g¥ÉÝTRãå"€ˆûÑ…mR0jíõc<\vSk>¦"LI§›²�Éî¡khO£3Þ �Ò–”x•”o¾ý¾¯T�e2›M’ÎÛ5„H&ýìí ËòbmkTó¬ên? AüÌ@pº�œS­f*w•Ûu�©ÞpNjåG¸àÙ |‹ÿqôúdß�QjtBo%��Uðš…e‹~¡õ02æOÓ4"†*\#'‡˜…È(0Õ ¿—‡Ka²cýnןù™G¦˜=iNÛÌÕ^m÷ÞÝÝí-z÷.;ê#nï‚c ÷ËfŸ½v2Å9Ó§…Qàz¶éVîà1£Ñe¡�Ððõ4µ›<–ò»5bjŒ:è壚/¥IÖ$„v{ëXJΣxœ¾óE–î{*åûf?/ú&Ëy\ˆ¶Gdn[«ïa“®»(dï]½/[¾Mê4u7õ<ù~1ÿøaÍï®3N(¤¶ž¼'D‚ŠpøÊ'VÃðp êuêî~ckÓi×D޶Ë3ï×þK—[�&÷¥ü~ƒ³_cêUÎ4š•M` ÖÁ_x}‰—Ï´ú¡¯ËbMrVxðL÷iê£ÉÏKù×ï#¦Þm¥ä=qÉèñöV-]Ó°tzâ`ÿ~g~ øŒYõüõ0"ö3‚˜“ãÊÝ4Ýq²Ÿ(ÿÑ=0yI=ÀdSÌqA¼›SKÕž¶W#8ŽàÙ ÚIŸÊí[¶ŸIšzž|9øØî¹èaDÖÇG×:þ;«åf¹Œ¢ñ8 P·Þ®û¦7æáZ Rå›Ã¶‘r»“½¥ðŸ÷�vj+ãxœtk³lªîö¶Ø*BØåüƒ[À„Ñói:ŰïUHÝ¥IÉz³ˆ�’l9€�ë#í‹w?°íÖîi›&jö"ìâ?@p˜T¹PfÁp>°l<ÊšÊRÈ,;\°®¦ ½c„{q”[èö²X˜¹m>�ÀûÒ”\ôÊ#)ÌÅ|DI3™#ôE^Jù¶A¼`�þ�ýËàÖ´`nõä˜Åd�R¾H±R_/ Hº�+Á“ )�Zh§® ËêsHƒ{å²T�‹ï †N'ïvfÛÐÎÖ3ÇûKk"]1û(+J�Ìj6) ¬-åÀÏ¡ºÿë9Ü7P‘Bp…PoÙx³Î¥õ¤ÍºÇQÇor{gj,µô¦Ü/ÚÄ·Ë ó¢÷•{çùÚ§yÒ§üø¨C —¼@¤¡?))îÞÝ*Ð=;µ Ã[¡Vpuür¾¿�jD'/Ñó9c¾mñ5:„ÐS4X†ß¬eû’åúÖé/3¦½s:œ>¦\ûóK±Z�(¢rò›­ãc»„øCüø¨”²š "0œgIƒ�B:”ÿ"ƒJYM>ìâ™”w�Éâþ1¨Lêg{wß›ßkÚ´¯ :‡ Wö�fíƒã“˜h¢žãø²ñÚØ•G~ÇÉ´-™^BÊ財|7BkYÝV»¡]ÛºöªgžEmi×íÿm•ø/ùYêzü•>KÖäŽô[™¾=´_ç.ùÓÃAøhá䨵¨Ž~+ž×WÁ�6 F�ÁwÃÿ5üfôq£ûÆƹ&^&¯1FM6Lw˜zšòMkL‡LߘUšûCÕaae±ÛRÓj»U©ÕŠu¨u�õ¬M´ÍYpø7Û Û5»\»×ö û]Éã?H:ä'TƒN:îTï¢uR:{:×9Ϲ ºj¹>uKu;áöÌíµû1÷«>E¿yæz÷òõÊójñzãíæÝäýÀ'Ë×ÃÏÌoÙoÝï'L‚Àx°lØcØ78÷€“á‰ðJøAøYøCšª­¿ÿyÿGþ Šˆ�Ûœ°âUÀ›À‡�_ƒà û CvPj°¿Ñʃû‚§‚/? þ �†„†üЇ:‡†…F„¦‡V…~@îBN#/!Ÿ"„aa§Ãî†}F顎£›Ð˜-æ0V Æb³°ØeׄëǽÁká]ðb|;~ÿ”0 ÷W…"Z¯‘áÇÄ/$Ú/Ïq2ƒüš¢I±¦ (”\JeƒòU—jMõ¦b©*j;u�z’z�ºNýAÛJ³¦ùÐð´Kô�ôZ†£‹iÎ\ci°~e÷±ÇÙóì»ì×ì9ú'€CåH8¹( ÿåy"€�¤Â õh °Gîþ*ç(âY¯ûƒmX²Ïn¦‰UëMÐz-ÅÑÛð¶cÑ<4Ç?‡üþ›ì(ŸÛ„v–÷_ st^tÚ,_rH_Œ®§`ÆùNokS¨»:ô ”%y1³Š AäÑsò¨J L¬yyJ�ýQŠ& çÝ=;ypt^MRCþ�†•!5€I:¯ö2І>9-k†<üå!€¦FuÑ cqbU¯Ú-ãéý¿ÈHc1D[½ ôùŽî««{�ëcyUÙAu‘e¼ó·è€tÏ "0®tà~7½l‰…ú‹ê¯Â/4¯òÝrViåâËý¿KLBöéç6žñ˜‡/×®*AfqrÙ/“‡=J¿¤» ¹#�,´Ö»žŽþ¬÷ÙL-Þ i‰ü¢ÿ‰ðO9'JÏyív®0g~¶½ˆï¤I÷íJãJŸz=¦J±_vAK6ë>'Ä0IißчÅ7ãe‚tÖJb–8gcW± N)bãPMý?è…¯Ô57;­xNÑMÃèºí [ßò»?�ŽÊdQ°÷Ù“§[~Âþûoú¸ >0f ÊŽ;$iø}îF@Ê^ß!h-•&OÆmîå´2qëÒl£'滜ýÆØO kŸ§šð‚¿5éàW¶P€X­¹®[Îá¿èïïû<¤¤b^–ÂÊ¥Cð�„~âòÞø±V¯>ÙþxØ(VÏ Üâ ý¹Ê»öTvpoTUÏGP›ò„å8cݹ`[ôo¿i,ŒLÕ‡ªt*â ¹Ä%ÝÃ[�q^Õýø˜Jâÿµ®¤ä{rT†>€Aê¶Ñð z±í×ÿоÝÎBkŸ!?Áÿš©9*EP‘7qz‰×@”»óçB |µœM“œÌu:{�o&M?Þ @1 ˆ2£Pp. ÁØ3œ[QÁÓ òf—B†U•BÏÅZ¯ËÍht‘[³îAÑ®ê4�K²IcŠ‹°ÖEm©©!P 9Š[©9âJ6SL ! àÏ_¹Û¿eä`¯xR³Áa‚)(Õµ Ü6h?ú.h6ÎÑ]|Iÿ?¿:_;Ìgâ{×Â3Ç�Õº˜lvÞ˜z˜ìë¨zuhßrMÖwzß¶`RÍÚñÅr]ÅϽPÂ͉Ç1�Éß5Ä 5,R§üdÑ ÌÝç) Ò�×|‚ŸâÇ¢ÓÁ«Si!ˆ.‹ÿ ñÊš•�°ˆí¹R[IK-Q:+Äl*�æT#Œ+M3×7 † 2lz†I_Hæ$™4¶=™?|Óæçël—¤Ë•c°Ò´ºåeËqº‹¶¹++¶Q«fÑÃ:[?ß¾e´tŠ‚ 6Úš#:dGõè¦áÀ¥Õü6XÈBl 4Z(dÛwRNùV�eŽ=j4Rãà‚NXÑI›´5¡Ú™p"PC'*fúVŸEm ûe›8©Liø‚š—C~ü×}°áMHE0€2£�yí2Ä“€%}‡U¸˜õµ`w:‹2JvÒi‡dXXˆ·PP£ÕŽd2hmâˆõÞÅ  ÂB•ès¦J›®Cúm¶Âq>¿ß'ýVrke­ÁdžUŒdJ#­”ž§¤ s'X$¤ôt£!ß«d¨¶Ê�ÊÜ¥.Åžr÷– C}8 MÉ©t:%“×`�hÿ¢À–Bpø.qXœ1=˜ c¯ÉR®LrcÒ—~hRéh¯e^ÚZþkH©]ÄÁ,ªdMþ´X}çÄ®êñ퉧L~tq×äÚG¿Y¹G^�@•õP?>uþ¦Ra8ÎßîÉöxj÷`ƒV¨±s}±¯îÂf¯^ñƒvòc ��n¤¡¨&ˆLæïåZ¬ý OtMŸÁÒ1 ÑP^;«l±>·òÐ]£©;b ŽÎp|k½V,Ñ��A£S3sYd€ƒ„À‰Y%””ºïçXrCZmµr&ãg¦^M Š!„—&Œ6òೃ€û;Yx��>"Îbïšfw©ÒÞ0�‹˜öl±½®ñÈCqvÒùÿ…òo v�8¬rÞϼ\ãÌ!mC3p›õ5â´z´Iaªü‚ó›ü�ŠþëÀSúr{]CG:CDç…{\ALR{-ÅÆB ½U~æg$ïåäȹ|¹b&²ÛÖ®ÜÂ"ŒÆc„þ×µ]8&¬ ®�L9Ëfé&óJô—}£R,… ‚á',0ºø–FÂÝÑÈ‘-Âë„Ì!0óEÄ 6€mK¼Xpõ€§K‰ßu¨Ö m4B!…|Fp|{ÉÑÓ£.TÒ}‡!SD»¿ªã+*O³Úoëµö²Ôm÷”eûμï+p-�íY˜!¡”åBȼB¾@„t­µ‚¥õ#c ¸  ™!+‘Iu¬äDݲ‹¶èŒù ~hô'ðœ¤j÷¶áÿ*Ä2Z-­5qÐ�ÉŸ~ÆNÙŽ=òH«s³onÓoD1L8i¤i‘A¤d±G(„ÌÁf‹š²M¼›õݾ¥ô«ÙÿçןNiÐHc݆»Q—€a4nÒÔ÷sè}9KK+ɾ,‹H9h”¦øßȉœé­/j‚¬Ö$Z-œˆ…h34Û?ŽÅ §Ç»„'oI_\´ëL…ÜTìïPS¸ßœ ‡XjX1Y7–˜Ûk£�BºŸ®‚>æiïÿS.×v~ô÷ò�ɦt8N©}5ºÔº£k˜á�~tXVÅOT7®Öé—?‰27:‰§ÀGÿ£¶ÂégÍ]..ÃËÍÏ! Sðõzñ›&ñ¢ÈkIšž¨±¿’”Èa×iÜ�ÛðR† ôp¢NÆlô@#芎" ô*È`�×àL©I9…Ý6:®Q¥ i€ ±ö–:£K³¾–’Ô©Ìz“|"„¾€}r¾™½'$Oô}@«ÊŽ}«–üš§ç{–0v}�°þúMššRZìzO)„‡¥kå1JªÃ:fm­%–™Ë–Jåz,hH<5 ‡Ï}ÕÇô¿êÜ\;.agíÇL¯S¹ä4Ö“cè‚ÞœDL€qÃðì¡úŒ9X¶.([“ŽÞ^ë-öõÒ¡{ÑÏæÅÁ¥ ¸)xm#€öŒÄ­>ÔÄ£Nи͟vÒl›†aÉrü-@öz÷áÕ ¬3ÞÛc,¹4L. OÜ€¬èÝÅ�´ÝÃÏíüПš ‡;ôþž?è)ä3|t¡ó í§$ bpáG«Lìm¬ÅªCaRZ%¾³?ø­ö­cùdp…Õœ,TXE!B-‰ ߇¿ûñyÕ^'õ�ªD�ýóþðÊ+O;ü×ÁÖ––âb<8kŒ‚2'²¦×÷�Ú`²MúµØ){ìêà:θÀͤYžq˜Pòz6�¨ÔUË1š*ÑeBûnÚ�Ðíg <4ÅÑljš”?½†þq]|¶_Ü ÏyœKÊI D(0QÔ7þåî³ñÁ]ãÔôB�ù£ì ·”gÊÔÏÖØ š $ɨÜÍ3Î÷ØÄÞMŽ£oï·FÀg¤Ît�ň9‹ƒCDé³fæf£ {\yüßߌ¹ºÚnê­èSšË<€\ÌÆ·P•°ÆŠãàs½¢ › ét< õ¢ÈJ�~"àáõ²B¥WP)�—ÒŒ¡Õ=¥ªÜ þZ"ŒŽóƒ8`*ìo2v¿eKH˜ß’[èÝ┕1‘7ÇL¹…ö´Þ¨Sîú†&Á†kv@;¯ ±ä-Ž…(»œö2æÛqÊk„‚]O/—“Óù|.eõÐxÆ�Ùè±oÈ.ÄÊqçvÖ1QÛ•m»Ð�Vâ=x£Ùm*Ì�sm ¹®ÚS^2ð‡I”å¶PŠÛRWÂÛÀ¿Y÷�0A�ãñ¼3ED°‹ðò$~-5’šXËNêAßk`ÖˆöÀ Çê-?ó~ç¯@Šbä~T¡V¤,_é€S¨=ý(¼ qÂûµ6þ²}7 íLýø[Æùqë&§ƒ|ÇÖp÷ö>8|^¿A�£Ù¹è3�Ч\׋·ºeä®*{<þ­|PçÜãÑõ·ü˵ � Ó_mÀŸB` ßû›¾çO¼éñQ òZåb% ä¡9톿ÎU§~¼ûöð÷¿ñ}¹ ÁW�do÷¥Çð„ë79½§3ë�ˆ‰Øõs¾%BIc‰Z©*+´¢ö †BÂóp /I øCŒÅ�v c~]àtU¢Ï6üч‰ý±ÀÊ6Ï9 D×Ä¡ Ÿ=«TÓÛ(FtÜ]-^ýåФÅ#¥e¤Èsó¥rh3;3j­ ›1¯æ½œžÓø7ù£×¬?] ¬Ó}mSjsg†S$ý %»Ñ‰ŒË—ݾ)ÁM^ØNÄ+,rvÓ.…iŸæ�RÉu‘%“Ü`’ÌpÄþø‰Àû˜Aßåoå&Cüè¼J_ÑéK;j¸«ýG @[Š pOáçúˆ]�R®p@‘Î*x` ø{Eוò–+(rŽ¢],%•$‹'!Y ^Fµdß:s1q«¿,ÊtTW7RÀì&²™rBwNW|‘diGE~o}÷Î+ÑV¤9²•$}Ù¥¤Çkq& j60—ZóœMñaª7Ç 1�Ð#Ä1×ͨ,iÝF°“5`¾Y«Uk‚[ÕÒwåMÚ�wªoœž×ðØíƒƒU™Gʈ~³RJD m]gÂå –S†ì¶¤ˆzhD Žø f;€›]ʆùƒ'š’K£÷#r†ö\e`ƒ0ÚÆ²ï¹Di,µ0q×›Bƒ·,ŽØ =ަÂ"öjx$ÓîÄ%„ýˆÞªÓ1›Ìâä2}cƒ¼TËýÊÖmìáÇ ½JtDÑ/¯»5‹H˜Ûì“ø�h< �+•i;jÐ7,s—ÓimF²ì|Õ–uè|"öqÉ;-=Ž_==YÇË p¦¢8‡©uUÙ°M™¦ÁòîL¡FÞ‘?�9{¸£/_í¸µ–Bc—EWY×!mVQ@íBà¯r±ÊÉεGÍ6˯_âÇí!`˜ ßûÖšÝKôÌÒà`9•~Π¢ŸÖyÃ�–t%`ø¤ÒºC¾Dž†:è? úKL;ð (þõ\,ó5B“"Õµƒ÷¥ÒœÉ’-qÓW•aÄ6‘gX�+ñ…³ŽY\5Y.«nËgó�»þñ4?Ÿ6뱡± H$ ¥ÐZ‘Þ¤éàý–Y·”_‘X§£)Š÷òä>w™K®¬ÄØy[Å–çþûÈùëé ¾!Ýqî\Ìùö @#xYÕÃðm× Ò¼á‘Í[åÖÆ¿#©ã=2™„ø¾WŽø©º3ÒRÄóLZ UŠ?³„pÈ¿i©6½ð‰‘± Ó!þšTmHö¡} „óa�¤ò¨qºhÓØè:yÑ™/­üó1®2,o)]�#—¹±¸÷*IgV ßM-Ÿ}¼*�mi,6I $ÆötOÀ†�VNŽ’ô|œèÄh(`ik©fèøØè‚GFçÆ óΧœ¼¯9¡l`éµ�OÌdbh-ó*Y*ÖWlˆžê/Íäóº+ †Fu-uœ›®Whxòø«x”&W8|Ðò��z‰óÙÄ•¬j2™qh&pÆ— ]2)ÝÓ½éu ÜäÝÉR‡a£‹àª*@Æé²¤Á„­CÃ>”Ó¦ÙÇ%ŠÁá‹W:(s+T8¬ŒÉ`@sý˜âæ©z²_ö/AVGS‚Qáè²ùÖÊ©'îohM^ûte•.Ÿ/‡ýïʳžÞÉ–yý ¶ÇÌØ#ÒÏküÕËÃu`,�·RÐ,Šâ#�í¼ú£R[r£ùÆÖ×X¢%¦‰Ø=3ÌØóáVÞo×Òº®Q‡dnùè¶H`…é]5ïxÿ,ö—™6ÃýÆÈ®'øÍÌËûl:ðæÝÛb‘ñÿ­^Α]‚hXÈœÅyÔ-Ÿo:ƪ…’'Vwº }O}GÃïÁÌŽ±ö�ƒ~�@ o±¦ Ï»Ÿ ¶ëß1Á°m�Üà»fx'°×áÑ6Æ“jTé–k`CJ^D‰»RÉaf•xû=a:Õê@@ÞH3¡Àiì©k·©†\"ÉŽê‹‘„-_9¬xÖ3ׄ!Úíª¯ð ñ]Öû£Q Ù\IÙS~iPâeŒ-;ü‚5ÂVÀès"Ašqë7«ËSê9¸ub§`â�g¡ôK¯¸d]`üɺšå™Iå¢4 •1ˆT‚ýt‰ýøŒêmùº”� q¾��fÜ�2Tg%¬d¥‘‡®odª{™™*îop”¨ÄdÛ»Oxóá^Û'œO èÓî¡÷êûò²;ãÖW“Π|Ë(J;„|ËOãì A/ºŸŠ>,ñêxòï&=ZG[_ǵ֋�Gî6òà®ÓÇ�,ïM&9 F,“Ô?Ë0M­šxL¼Øë2]…nDÇÿC&{Ä×'z�&C3MÎ{ö�Jµ]´ý7�ld¼5‡·C$Ü^–‚ðÙæ’/@Èá�åw”<ÓÔOC8¼O+ä3UJ™{“$™Î0]x�# ™Rdo:Õ#€þ‹½Çït†a°î\ËI]à¾{ÊF%5‚‹Ó’W­±€ Äp›* Áy$“*{ üçG¨…ÏõߨòÌ2í0¸>«$¸9p„„˜s�éÖNúPXR•3ÚSÂÀE—cÉ ¿š|Šm*ó»ÿÜ¿¢kœ&ñ×a=j^yF©h?DiÑvÞРÛD!üªiåóÀÇ£=B:ú°%¼p¦ ÿñ â÷éÒÒ,KŸFÊ%æÚJ{i‹*Õ–ò �²™·ý«WUÝùåØF3W lje̽´v4€Êß]wëY½£ÿi3e£HÅt4ßfïÅ—î6Wå+˜kÿüIœ�Ūè2¨PTps\„¢o ü‰ÄàIõÔ<Œ˜ëW Óïeêž}!ËP×9N<½³-¤÷TÝ�É'f�Ùʰȕ‘¤ŽÁŸåJ8þë·Ë5Ý:S�“‘T±ÒõMõa¿ñ�Y»í4&/€È"e„,l^i·ðî±ßÖ)Cç?®üŽäÖà&|Éï%çWŽÝ¬yhª²JT 1Ô›}”k®IfýЉÔÖÞk”nuþ.U‰ÈÎh]T­2üûã> ^©;þ5Úfý®P‰U{drýÏz5_F‹pjF|SƆ†J)]ì]³k_Éô*è4s¼y¬wì>²guÁÍ+Õ<¿7=§àXßÔ`ôW>ª]3Rùé…œ<¶Ȇ‰ÒéØjG‚핟�_½]©±êöÞ,³4P*õ”`ܺTñƒÏ„ƒò‡ŸŒà¨{kËSk_µ‚èÊpã¥öê°Ð`Øþø‹o‰d`z�%o}Ö"«-·â(Z«•¬4G†nÛ„MêdIlýK!ãaÇëu Á³i¤CZüÿD‚ˆâ7$‰c¬±i˜C‚LJì«’%[¢n5Yø®œpŸíá<ïŠäÜõä¢æÝƒ^$¥3HsåÀÄwrûkÄC̔”biÌ CÙQˆÁ7�¯È½;“*‰íi„Ÿ(¯ðÛ¹î’e*4î¶z£¦n³ãøpØû�¯ÓΟîÞ^QtÍu·Ž 쬴æÓfõ�ZÙ°ùF4FÉñb8h¤wÃ�¥q\‹–Ýp¼-k{zðõ¡ñ‰éD’ïhTûI‡¹TcòžlLK­�A†2TÊQÙÓ¿ÐñV(r?µõ„ô—Ê{8Û>†‰�j}´ÓŠvsÚ½ Zݵ V@½Ù÷#_^r÷ð™ï%µKÂìYÁ7Å‚k£P4™ðµŒG·H®³‘+nÎÙ�óñeäVÆeYa5ÿÖK•\ �§„da™VÁ³Ú2ÒØmJÑñ«ßóuî­(˜€Š£û  k]´µA Ò)ad:=°E,6ãÏSóàæß''¼5K“�‚A‚ºï+Âcѱ–õ…A8b+j½&b#v¶6Ь¶ê© ˆY¶ùGîe&ÎT\ó]ðÊ—Þü`¦¡û¥|Žû†{¦|‚ßp_ãêUƒ˜ J}P¿¤[°ßöKÕ½¾\ÂiAàY^q›9ÈþÞ+²4ËŠ,™Úß]. ™t&›ŠÇšÐD@WSòk–Æ—¦ã$0¢Mý/å†Ñõþ†µÅTøa]Ó`,±ÚQº:»Vg/ކ�«gèkV«•\:[é îÐgOþáÙù|¹Váû\t§|»¶“vœl>½£çyqFŠ’ âI¶EÄQ—àÜ×ôK¶|ÔÜD«ÓzÒiÏy>ã^•ˆA§Ï¨vf¯×û0E�pT P(§ß§I¢",Ñ¿¡r]EÌ|�å8’ˆž­» —5ùSéTQÌt¥s%yu|ÅYqWžÕƒÕcšüÜŠ]í½IvB‘“VÁ0¨= ÿȉìù›Q“"Ä;+c+ zÊÔPÿ`�jÌÆ‰�£'×òí�÷Laà7ûÇ*ûúc©a½�€ IΞ?’z‡‘*<)-œ)˜e?Ø5ný38¬1«º<ƒOúYgs›ïÈÖš��«÷éhAŸ«|Ì­1ÂÇ?(},�Ò�´-üÓ� è/–�#6“i’o-É4†o†¨Y„òßYÆ =‹Ig±„÷åŽå†»ä�µ‹@B+´va•ú”½ÍùgÖŒA)Ö¾Ñ×Å?‹A¼û%ñS‡*Ïä;`¤;àÇÓKÿUC6þãÕÆù_ºK’3£¿/²F—K° §ÔЩ8ýèQ£â¹\¦c^›‚fn"á‚ 4âSú ÌýÆì'¶ÌŠ7Œ}óü·²émd ¿>ó» ?j=žþòÈž.AMÅ'ËIþˆ-蜊AŒbdcœg§‹Þ«AxiƒŸ/=ûfÝŽX6 «ßc©îú±BaþÖ?ž¿5³’?e¹s>�ß¶�¢ ÅHw,œßBüµæ~”SÂõŸÞ…r/˜mÚÏzzÌë�Ü—¤–=±äPË¥™ŽÔˆ’ÇÁ¡™éì‹wóKÒ uæøÈElüܲhÄ%µF… `T|ˆýÑ„û>\º@'ß÷ËØ  �6xhtc˜@À0i÷Q ¤EÙG4Ò‡ZÁ<|&.Nκޢ4á@áš)þmOh zcÒ Í˜ZO5ðFf+ÉG†¦{šF)7I©Gv›0Ÿ[Í|ñ&Z$ÔÆýeVáJ»Â&ÕØqåN=›~�ƒF¤ È-„àYt0YÉR,t¦.ÈjÃOÙ¡�^¼�º0:¬v-/gÁàKl9´ØeŒWÂe1˜2¢—Q CºÑ™¿²{“blìÚ#Wd�¶”"ÑK‹ÀEŸORi‡9·N0·¹}V½i×h²µÛåÃ!”½Bu¿Ô!æwlÓ0-Ƕ’’ëtnî/[׆Aÿû_O£˜5ݿÍ¥L#ÎŽ_õÉltª+{-744Bìv!èÑP›éêœåå½ : ?­3X…«ðU¾]�¶X,¼¶,häM†¢)b<˜ аà4»µVŠT¦&iKé� ªgœR5c–Úö¬ì‘“ü<¾³·:˜Ëy/m“›­ÕtÈH^�å|‘•Õrôë©ÅÁ¬ECÛñó7¤�7TÉRMêz‚'NÜ7Q€ñ�¶"_Ø4âRC/ä4yüú%í¢l*"ðEQaµ"_Ô¢ev¤<¯}Ñ\e ¼gw7®Yp!šUÇÞ/2(`¨’*Û.]»ºq4J<}…ZñÃl�B�Ï6ÉF™|ø×K×>†1¸#œŒE#Òp ÑE;øJ9D=­�-[ø‘ ¨“׬FG!å]Õ¼$ù»‘"¢ÑzJÍW èªôríõ=±¹ø=«l&®”Íl«•áÁ¨�¢yN„þiß°´±æ%×'KÕþ‚¦ŒnèU±xÇíôÖªÓ9¬ºl¶3ÿbN9¬ÃŵZ ­VJ•Y »'VØùèi©ÌÚˆžÖq~Gýu ,ÉŠ°“á… VâJ<ÚA•vÜæ´¤ÄqR»’ÛDIUé¥QLÈ>J”J¦$¶…�±D‚±Ã]BC¡­­Õ²â² �(zé‘`Ø94¾�™$¿ÿû�Ááé…÷Ba¸±oC¹…à ¨Äj”@“±�¨Ö[k�LÜHÂ^™:þ¤[ ß ¿Pâ�Ü^',M°ñT¼Ï·­ ,L¤òþ^ÇåùÞskçd^jN~»ZË®>q€†j‘8e  *P½¾èÀzìB«¯ä¸ÒR¸.:[në5/fëXAñ@…NXdH4ÚáS‹—Ì<Z�ïHøÌõÑÄ£¿Uȼ×Á›ëÁ-3ÒÃ`¬`mUy¹œ‚Ǽš5“*{^Im¡<&²ZQÑP©?}.ÊGBY(胤Úf§\.8-mqm��0·Öð®¾bR`²Á^xj¼Ô�䯬¨øoer1í±�p ˜F÷–ô²,Å'¶ÝÈòY­ØV L7šó\iöÜt6›â|[-ó - ‰�‚lG—»å?^gÚZåëô¡ueÊÅ㪵\{ò?“hÖV²sXÊ×&–�*k 7Ä¥öB>4*ŽÞØñéÚ"‰púväiCò®~|"ggU¯x‚^™in»‡—}äpõÃÂÇ66«b+W¥1¥G]þ}¯ŸæÕ�bf.Uâ5Ëû7(':ØK`ûRmš3éþan^t§ñá£Ã•—¶_7æÍoeŽ›¶Ë6Ž%×÷DøtŸU½fÝ«k¡¤å^ŸèÌYÝÒÌ¿L=Èd‹PNÄÍo¯á„Ò~9*�cjC��tm,öšçó¥Œ2çÞÉÇëbÔëÝxäÞhtg2¼63Ô¶þø"í÷9¡>,Ϋ]�Pvö¨\/wåÿÔop”Ö»è$Ij'DU Pê1]¼—߾ƾ™Gra2#h}~f<—/3©ŒH¥'! Ž@ú\ó�Oo êšï�îäh"”嬮 Î9³P°9�Q-iî·�hT^N!~ï÷.{o똲¬ü‡!³YIFDÁÊÃznÞªv =<›¨,™ê¢#M§äÓ8¿‡â#õ«4"z©¼\«VÓRÚ—’¥Ç­1xœºƒ{�o‹ŽÚåWŸX�|³˜‚W6J ]go#¨Ò m™Î³Ð�ÀqWê¹46”…EÅó­�ßää¬U%åÀ§%�Çkˆà†ú¥1ZÌ4*‡1þ§ì™Û›šK‡ßþOåri»°ã.JA V=ׄQÍR1!C¡ ï ¥7˜ùp±C£¥�±OAQp¥™Ó�®ÀUˆwiÂ{.¸YI‰$\GC MJð™æ+«á)ò~ø<›œsG«è á˜X›^‡å„ ‘£²’© a¯_ /@æÔˆW7ir¾©ÄÒFË(nˆP=éÖÃ%®÷Þ}­ÏÍaºòà+ ä¸0,A��ù=I·rÁ�©ú˽Õ±|–ºm�c‡ ›q3>SË|Ò»º†D6CQ¥ }4~7 Åðæ¨9+¸®µ›j¹ —Ïö 4dóNT*I*ä8Œ� eÔÎm.¿dtwQ˜TÚ¿x¯%ÜE´Ñ*´ ÞZ g׿K««Íròpëä*¤¤\XL_ß¡³À VÁ!®…ƒl£#Ë’¯•Z`G—¸Ï,T[Ø»ò´3�F§—4EB«a*TÐFRómsºûâŠÿü�€Ã­žéV’�̰ F…ô¶Ò²êàÙ¯úª÷TÀ`UI¢$0’Ss@újòY�F)m ÆÎÐ�ÜÅNÒ`_‘¢§¯1Xƒ«ñ@ÅN42#hP�!¯\Jf(øÏÁ}rs�^Ïy�ÕšÏÕj‰B‹¡ÙñvVPs~“FÈèrF™[å2ÐK——ŽŽ�Œo,r6åmóÉÕh4þe„ž®mdÄ 8 a¢3­'«QuVM“e{Â[úÂöù!Jz6wÂû>l«×¬.í�í’Mtên}MMÿÞ*ø•Saü+¯9Ë�—¾wƒé±ÿq]â÷ĆÕ\¬×-«· 3«èZ$ºôËÿ¯pßâ1~É›ÐF$7w«�QœÂŠ©õ™øÑe~?�ÚX�ÃM$}‘FwŠYwuM‚,+tÔ‹yŸ•ó'„Z—o6Ä'§KÅr›‘"¤·W–U½k£j7MM¤ý„x°¨ZÓÎpP$›P­Ïæ@ù"­Ìhº .A¬vΔ c:W–í®à}}5· â1Ÿïe“¬–¼ŠÒT°¢m–„);晋£±Ò¢w7E,‚Ç`BÃà©R&ÚzRî6"CŠ,sD¥îÈ¥ãs=“ ·S†îàfÝÂüc-›>w)�"ßèLXÉë$xy†Êâ …N£l5ØŽ‹/�[_âöHNÄêJTëB·tä'¢ñÏŒŠåV³QI{îÄ`Â5áÒ÷kËmùŸBªnŠì·;Ï¥jó‹¾ö:5²ÀÅØ:VŠƒX öα³H_���‡mêÅïV*–í~×*!Å~=>ûÀ¸>æpÚu‹¼ƒ \„›I±IÁpš"ŠÚP{YÊkkÑíÈÚÜTÁl: tf’ÙÃ~÷xp†3æÂYBC£©Ô˜‡d„–Új*N€×†¼~¢ ´3›Ÿ-Õ!�éé_956Øì–›mçÑsñ(jêáõZ¹ ã\<ÏØSb7´ƒ�þ>{yåÒòÅååó§O¯¶õË*\F³Ã› ]F}EcÙÅX" ºQM”1ÞL‹ \•�6˜‡“>ãSÎRWo”( Ô]€aèeÅeÂEƒ¥)ŠfÑÅEv—�°£Î’$Mç4g9༱]œºŽ±D.“y¾˜µ””ë›OvÎ,s‚ÕW á’‘ŸðxÚ–ê®'cÔ�ÆF0ÍŸ.7Û÷ê:ã<ÃÃ:Êÿöû9<ÆÃÚA‘Õ8Ë‹£¦Õ&¿ ]íëûÁU§ª­±º óLaÇNŒ(¥›øhe³Q#ÀG>bs!ãjÞ,çQ!ûäI÷_€6â†r]•vÚÍß®S”¾÷{uX‹kñð"ˆ1: •êpßÁÍËDÐ�cCd¡D>UÝ ‡wõù¶,J CÊÀªF¾Cz®\Ó\^ÓeŸ@CzP¯7^´ªEªó²,f>Û½š|Æjû–EMÒ�Ë�¹ÇÓ²TZ3‡9+׃mížÁEÍ”Ámç9{Âs½YuV³%…(ké2ÜE{UHèèÃJ ´øˆ“âÙtÊ�Èe-•v¤¹$Ëb–ç\Y!gžs³'�¶d†!�5Ž»±ˆžžñ`œ¡HF¨Ù;£ñ—ÕÐÁ’b[K{°ÉèÕ¦3ѳ ͨV¶Vë£òY9Xx†§õüFèÉŸãFÙ 9Ææ ÆXôrøƒäs•:®'!xßdtÁ¶sÿÿR§–cšúk#+ƒñÖÌ+.7cgá)cÖGò+p9¥­ÕtàŒû,3}û¦j’îDYšþ,Šã5ªàƒðD€j%ûÆÔ JR@éý O&†´-Ñ-jÒƒ¨)]¯©@¼ÒËÂB{SÖÄ0É)¥ì’«ö§ž8û.cM¤aã–œýœRù±³r6ÿÇ…ÒU3ƒ�аßh® ô€õô’ju¡yÌ�Š-RlðT@••8€lJ5éê%â¨N.¦à}Èž­`®-Œ:'¦@‡Q=3h¿á¯Ð0*¯êÎZçe”¨&ŽŸªÆ´ãáû(-#~—©ÄTzƒÊÍàP‰GÍïP|C9Š^Hèt»CÅ­½[ï sü¬¿8¸½­¾‡KLn Œæ|ÀÊ-`eÅ·G¡Ø¤{�¡Â ô¸‘–xð¾¼#füôši0ª¨ïm$Þ ¯vq|4â-ö›þ¿Š,ð5ÃÎ]¯hƒ:ç=ö ýiŸ>(ÖÈÝ\;´ç¾ ¾8YL^5ZÀ¥F—�ÿϦ’ïõmøîmÛ¢s¼ÙúäÅ2œwQ`³ÛÖ¬~0xΗø*.?0F‡ÞØjåÍ�2}±ÉzÈQ-bUDË“„Gðî^~©wÜ8;á Ο3>ý}5ýWGäb÷Iú�nÂÚ9õÛp~Q»ÀO„Þ‚ƒ¼Îàü9ãÎOCs�ä9o¾ôLö•UúÐK{nLÕ/,!?lžVÜ‚ë¿$”;;á Ο3‘Ù@ŽrdKÑî°Ð%2¾¥CÜÐÛE(t‹…®‘ñÊû…1§Õ·{,t‘Œ¿ëÙ�¿ºI¨Çz|¯:‰Ëy›* ©£xØÃ Í» ¤×vHÞæj…ÖÈ�bÓô‚Z'Ù‰˜ò(ÿ7¥›Ô8¯ë‘cdØÏ¯”ª B2—²DH}Ç[Ц–t^w[$¢Ðjup´jSoÇþu ÊT˜8–Å.gÔ÷�t)¸.1x8ôŒÙXS Úc¾!¯qLíðRCö—IÄ]<”†“+þ®ÊñÆ7݉îT…Qí·Û5qm`ã[�üþ¡ƒÝ¹6hÆC˜šã6‡5„(“™˜W+F]ØÙé5ðDÛïFs¥ uäµ²"Æ(ŸYkã³Ú¦x5k¡½Ã‘¼½ùœáΑªå£¹Ø5ž|ô Rl–5‚ÓbTöp|Âf°ú|UYp@ŽþãlžùG10°Èܺ §Éöm«¿ q<¤Xá­Ö¸á¥@Õïµ ÆØ®õ]Bˆ+�Ä:zlj9$FNíÜßœA&’XÉn[beDÏQ W‘õñéóáåÉ~%ž ÈjW¢' KQÀØ·ÍdGÀîD`rŒàÎÀ%΃_œP†x¿kŽÑKöøfÖIõïE‘§ˆG Ø€s¤,×�rp^÷E M§»öu§ìxx?£c>´o•‚“‘M㟃À›¤²E>E=&ÎkÑ‘¼ÃOø9þÏìé‹Q"µ) ,ÖR]ÕZ“2:°µ"Ó�IŒNMà±®ë`[{}šH„aÞ;àm‘Gny¡ÆK×À°”¸ i(O±çq­k¢ªOèÇô˜3QôdÄÛ•�.ˆa^‚dP FçÁP† 8 ”û2„°æ9UéZ©ªšú ¦Q%õÓ –ÄØx­ ¬tY•%2RŽ’¡ìÁGp ^5f]}Òœ—\�l+½INðq ¤w¨x)£.øS ÏCÆê\Cýu¶¬.ů‚Š, [þuE*O5 ã›U»õv':¯ÛÔ6½C•ÊÐòàýj&Ù��‡Š”�4}Üæ‡À‚M�#†ÙíJ�ùïG÷̲-@ìy|1؈qG˜îÓ°x´ÛA�Ãm˪I] xzU+¾E`÷ØÔ ÂZò"Ül4z}Ȫm„D†ÊÆåRT%€@2A•)KÓ{ÕwDo;Å’�‡³ïÐpI6c 1ÐõÎ/v–Û9~uJBÔð¸HQ�ZŠ7šè>ý*“„Œlè.zK3-ƒ@öÏ WW˜Û ë† >áòÉYŽ7ð{“üÍÎC/"p�ûìâ †g‘hÔÆk¤`ÚôéZŸî¿ÛdWÛ¥6´·fIÏxx„o‡ÞXz'â76/÷Ÿ¨½úLÙúD|1ËBß!<|ÿZ÷íX(ãÖÓ>ð-Åä{éíU¿‹b€úŠ,B;ìåíÔYkoJô4H“]þQ8]7o�8×¹I9û¼l÷¼£ªyæ(}wH"?rAß/†M°ƃËÂuˆ•1?Õâð\_:|{Üã=ók¿ƒ+°!ý¡z/æ;ðèXÙµ‰‘á ÔàSÊ`,ÍXQñ¾|˜>ËÐST�Ï�B®‚û›“ÁWh™`j6éŽÜ 0Æ9Ezõ×½šµN×f‰P3ª­´ãWé+Kœ�½W8i+ʼn1ÀvÓT›–©Ÿû3œÌI×¶Ö'†J½ß¡åJ¿=óZc'—OäՅսʡjµî£SZb±{¸R•{›Ï ÄI×¹OÕüБŽáEÏΨ·­7,Ó¯® 5„a¶£Ó3›í’â�Þ™¨W q< ªƒØý�S ޹F`¦9Í6#èxøf� b`&_EW8�W•M±‡Q R³…± _w¢m‘§('M™²$²,�-Ï—�'IAèù[¶±V!ÉÄa«/A¥#rt Âò?]¯àRp“a;xh”Û´Ç7Û|ãõcD]®Oi J=™T²ƒáëÈOôOë{â»- Jn”=DWK¤ÛKL§ƒj™åÉt“Á…à³øù8;Ê—Ë—ë/‡®Ï„¢  �ᣠIT("È2WÝ‚ïÔrÊ^J B£ 漢3ËÂ�ó äRÁý:*C�Öª�iýØJ›l½ot‹õ§-Wn0Ý‹zr<�R¢X@Fá^³Ú’²]>.®Eb‰x$\•‰Ð‘ÍÚÆœ€nóL,sž…NfÛf¦5~^�3± §@ñ^˜�Éoþ2myÙ©¹ kå|"Ç~‹tlÒÓĪ–g(Šò€¯õõrvƒ/m5b×Ö¸ãóëÄULܺ© Í'dª,ES/>Ç–Ÿ”q›~ÿï¯ÖàÐÇ¢ù:à¦g®É 5ûÆ… Ä8j„ç üèDà,èy¯Š€†+Sù <·Ùi]a3ÙBÄ9Eô> #A¾åY=¨ªŸX×p¯ ¯QÝxBZN«þ ËÂïçî.^@ Šlf-©æÅY¼‹}¦¿EdEF‚®ÒoñÃRZ|¸±±ÏU¤º¢_²©¼aô±5Ý9l¨–®Ÿl ÇE#U¨‡6YN{M 0ê“Yn í¸gݨ¤×ãyþê:ZÚë¯L­q¶°îHΊ¨ûqj•QN†»ì»êWtt—I`ìNî#ÍJo@NÅ⳩pB(òËž�K/IÇ ÜÊôý½Jµ^D!E»d6ØûùÃ(…HGœ è # fO5u[/ÑO¡ìd[€�Û–ûñ2ÀyñÖGig]cuCïÖ÷¼Më¬×”3FH­}ç�Kà�bG$[ÑcÀwÌh ‚1›ªøQlæ�VÅØTdY»Ù©S˜'×Á{ìŒ^L>ADHe…f<¡GíXèt4yÌ,(k.›ë´gãÑû´ºÛÜuèŠ}¬—êvK+D:¹BlÚqÈÔÐÉà”%§ñÒ{ðüUZ�m-¡/ö!9²Zá[�¨8àÇÝàÁÍõÆ##ž`AOù±GIëî|á%ƒÉú¬þìe²R¬EÚŸà+µy _ÜÈâÛ)(Ô× íÍ¿¸cÓlÅÏ­|4|GBz—mŒ0ÁÀըЪ°.�SDyL]éòÍœ…ç�†€$ƒÅŠÛþìùçïž6+–®i\9S°ÿ¹37¶ªÏnÀpïGZ~ÓY:ñCÁ:Ÿó°£éCÀqŽ ôÇÿ*ê¥Í6ÓÁ�eR¾ë‰Y—¢d£½pë¾Q:¿Úé«éÜÌ×�7l�`0”)<6�˜ kT!¬M�zèG_áz ápèVìª)ñíÿ%ð;ì¦ÛÔÌVùÒ£•&û¶XÔeêÃîp³±eŵ`EØš©6W™!Ý`ƒ¶Á•èÀ�g‰ïÆŸË2æèA÷Ußow®ë‰¸L`þ×\aâƒÐ¸äg.²l"\Z|eú›«EÅE•¥„ªbÊU ‘OnÕð† ¡�E­ÔÖ(L½‡ŠC�O”‡? íjà¾á;¾ÛCaûU�_gÝá‚ò6QEÍ/Ã) xL’¥*ûMÜ gOª“Ò;r…nýÜ´€£GdïJ­ä¿ ÃõFâ¶ Z¹|;ÑípŸ6gG}ø®ö½ï¬¬Û»î[ð�SHÜò6,‘O(BEì#¢&ZcY _R"r’O¬pg%nß̆££°g;zxšüvˆ–¦KcÁ³l{!³±’Étµðþ†1 \þà¶|ßÖFs]Y¡£Îg´ãúd=³x**Q¤©(kb”:—HMk>½-¨†ï�|@{s®Ð;9°æ©áÈ"Ž‘"ˆô_:“hÞi‡rñ E¢>ÈÐÐÀ@„w�Ù!«kÁÁ¶vÿP¶Ù�ˆ8<ŒèOD0`02¥™àîæ†XŠÕ»YÍDîžtð BJH¨¨´”?9Xnµyý 3ß,×ÌÿA|¡·©ô5þ>ò}ŽBG#ý3à"]»8Vp` wòGÊÛccƒ-ÿ£\ëø‘GPd´¤ ˜ŒŒÒb?žó‘£â™9ÃA.àèfS;�uëU=†5[Ø» 8G^<È|„߉³#ãzHþ�ù ¸nÓ×2Ïâk$HÄt|³Ÿû™’e¶ˆS � Œb®J ‰Wt‘—¤sl‡¢·ÖQʯ#Ù‘Ö9�dS‰ò+IÃõ„ÛРïS´¥lë‰dÿ¤\ž„Jn{\Yk&.Ò€`Œ<:i170³ž§G¿’`’ÅSéOäîQ}1;œÀ³#/×w MDvªƒnßqÃdé®�Oë,šð‰³UC6.Ë“„3œŸBß&dSÏØ)· 0~S–MM'ID(¶n™gçRÚ¡5�—‚c�›§‰Ù¸XÝE@0!Úu«:'’Á?µ>ð¤œGU­ž¥lSÙi(æTÅ�‘QäääùÈø¼6eŒA-:°‘�hítNÄ)  ¾vÎ4�*ör ݆˜bŸW¸ca¥'EdÏJ‰R�³M½Nɳ÷K §ì²‡ƒpý0ü0×ÓÐXGGjîßóßOy`4 Z°oîML6Sä_õDtªíôªGû<…)ƒã8oý¸p³f8áfÁ±Z±à» �­ŸÖÁ¯šùÙð‹% ÝË� Füÿ¾9ÊiÏyo�+n–#?­,µ_™6/nUt+%fÒÓ’~ÿ¼u)V=�ÆÈ?îq‚ô}à<Ê·Cs3|0°ú J+ xî¾°…çå¤à'º®ö$|yö²á¯f)4åõ\î,ëTŠ™ÌöÚ-lh™¾šìÍŽstŒ¦øÙ¿M‰R=Ùw¥Þ§d‡RB$áî’ÿͩŖ/‘9;qe5r€Ύʱn @JFAš­zMzgçäb¹èp¡—»_¹^AȶØÊ{ñÄKŠëÁø…/•aâ¡™ ÅiÚôKUðçÓÞ�“%Î�jF…õ•ë�çÂ_&e¹/¿.x"Øn6�Ý\ZJ·µM¯�Ê@v'ŠæL÷OïÀ¨ñâä\Ô||4Ì­Û n°Æš[ÃÔô-R »ìè[ ðæŽzèÓèX>»~Ge+á#Çç÷æMÊ"u!Û©±ÔH¶oS³©¹Ôðš&]é »©Þªo3`F¶‚„$VÁë@ Ú6}4¤6м ¼‡£[÷ô ‘·�ßPÒ<òmӱіuè[Rüv¯.a¹,ýaÅÀéÇ›àìɲ°ÿw¬Œ¥èJ¢a„^]¦iÇ]º#ð\7ÇAÿ™db}õßžÙ\yÚˆàH A°•Ðý:z£7u(('w>&Pˆt7>侺l, Wj¹50l:� Dƒ%îIçÝ�–Éå% ­x�(oÇû5Ê7-6bM-�ŽW¤ñ¹(Ä`cV°Ëh¨�º?«´v:ê‰P9m®o{uÙ˜3þ”ZØ*öDÙ«ËZÃɰx¤1Ô7•(×ë—€ Éûÿ2a-'só×ìNý¢þ8&Õ?vôU4?zI¬B�"Ã<˜Ž"h¼\:­D‚ÈE¿…ˆù�ò/Uk©XUk�[(?èŒcõì&U®„}ŽÏïß7)ÛÔ_ÙžLR¦Ôô»´"Ðä!§1á-ˆðƪ¦Zܺ\|A¢݈¯§ù[d¸+šZÕbêùqÁˆ�ã”2íÉ„eýG Š ìyF¥Î$ÄÛÓ„$l1Æà—S’_áoƲåûçI]œtåvKë_š@Zþ·–ØT©%ˆäÊ1§ øx³˜G ¶iéæÃQç'_D_-À–Mÿ¾º}³Ò•šnã&®Ø $Õëéˆ<…"ÁllÆÒº�C£cÒÜé™Qõ}ôüÙ³+W®Ü¸º8ÃB\e†V›é3DuÙ³q¯¸ÝWyµ <³IJ0²ÆAÕ�¤»ít<¤Y”aÙO"C¬#’Á£Ølô(ëŠZ…?.iÁâaµBí‡ò˜k±»tHOÕ)-˜š´ÿÄêZE2!IOç§i�,4Ť7$´Ø×�Íö‘„Y™éOp6½åð"¡4K…]nuâV�En}ŽÛépc|dÂ0åB�áljãNK£¸RO2ˆÿ/Ù+A¿š¼ïIß­¾»|÷u;+[)[$›'ë»™´[@Ot…Ol"Øž¥“¦;ê…d³åÄÚ: µ(¸qé±Mkß=6_Lò´2uú¦+£ƒ½Ã)Z´;Š`ó HÏσcå¸É6·¯í‡n¤÷Ɔúûz;ÊWV`™ü øˆÓšññ‘£+hòM¹/Ý£ÚLìTÐaÅÜ®uÑ’Ín4ÁJ´eבxšàfgžx��fg•x—Ph ¿áüNCôßU5åcÁ4-·=–­& O«¬ÄÅßlèV)Tj!Ur#Üã­ùƒw.ÖGMÀ7´pbý&ñtN�Ãtü‚ÇM«­x~Å ÐÌihøa² «µÿ)å†TÞ‰WùðÊ–x)»+ùV:ÚäÛ i¯r(ÀÈéÕeV�Å¢ga°¿àðqQøæÅŒ«/Š�r cVÍL{Z÷å�-UØöuΆfîO+µƒ„X%1ÇG®PÇaô{ W ^§Ï'Ý\*íTﮇHŶ‹Ò]Õ]Jm%`Ž<¼µÞà„ºƒPVI >+–{ç�0aT„hÀ©áØ2–³Ðs*-5ïVy{‹“N#µ­Û°wap�ÿô¥1 JaÛ[µa×kó) ‚"ÕX:E€‰B[xœ})öv‚ˆÃL]†mÅÂ>ZÓQ±³òk!B�Ùjçò[ �CRßY^ÙÖ:ÁåOézÑÀ­´>iE^ø�jÑ{¢1/­ÍZ܃Âû={aò'ýg8•°Mtg3˜pL\Ëæv$ÈÃ3SÑ=ã 5sUщr^ûm‚•˜În:!Hôd×—Ð%,´‡b,ÆÓT½«¥d$“Š””ç$¥…㙡¨ãZŽQðŽ¢PèžV !Ž7&‹C+’kóù!®KÙÆ‚(cQ0Ä‹ªÜhj#çu¾DÀ×ÝA½#ŽðšÑÊ.®…oÍxÎÄÄÆÓHZÇ�Š)øÆŽ…¤Úˆ6QôƱŽ�_á)0¹C“­ðd(”.<¨@ÅNè°Bÿ%²?ܼ7-(xY’ŒL'#Dh3;O¤¦@Ÿ˜àÈbÂ×|Éòœ[$xŸ›Â·ƒ›…™¬4fNû‹a5EcU^Ë”¡%ì·miwF«Û¹DñŸâ�èfè âÐðåiÑ›ÜΊ]Î,¡û¹ýhåÉõë%³—O”ø· ôÏG1·cìI"퉬0©…ÐfGgBÑ3Ñ.z¨³£vˇ:"Oñríû4|t-ƒì¾‹LÈŒ%0ÒÇʰ#Ë~O±ÊÜšaz;Ä Õ÷z¼�ö»­¬<»ãÆÉu?ýt´¯{¤�‰Nb*qùðõ©ÈoÁ„.›— qB›Í¿‰Ñ„ð`á½±„ÎT)±AŽÍ0ÿ§%ûŠbhÞðÎ/ÇYn1Äb‘õ\Ò©#j8ݽtÚœ¡µšªºTBv×??4X5¢oŸ5�p8§wŠ ½ø"üƒî%8Ä-è�wMc%JÍÕfä¯s˵ÔÊ+õR2` ¯;½kªµººj:º�¾ƒÀs]À,Kë�ªi}û¢iÛ4“¯Nñ¸å’8>‹=öÂ׈ǰŸ;—5‹2†=šŒÿÄËú‰œÂ¼¬ä¢ÐG†å/+Üñ<Ñßϗң׿£(×@°§¾.à»8^›EÓúR%5].^�š韵ØJäϳ‡èȧŸW–Ù¶I5.^£rœ�` ºf‚À›±šÃ�MŇ &ÄA)û(X}e¶uJØ‚ø*Ó×¹,û…ò£L8ƒÊHn•\2ÅÑN>¼ÚºÄ8&�aœ}æ¸ g¢ÿaÐ�Xa2 ˜úÙ=%‡‡Pq ¡{bãíZÉcgòyæ?™ÈTd'3oÇXÝZï@3›U®È¢�mëËï~йfž¸¢�v 2é¼7ÜèT3çàŠ†ˆþëUm ,X-H‹µ¿¬¯ÒØv»»ÏŸKîë¹9̼ðqã1醿¸æ€àtåáqÀ’ÝN»ž\ ½æ ª ÝÑÛXm4þEfaK“ÏHn̆t\€€š5*mA£�-ÔlÃmøŽ¨]àˆhÅÚKÜ!(ZXò(‰?q;‰r™‡ 2·ª…�`¹iinoOaùíº Ç`(S4µäÒï6:2û<ÃŒ•’¯]IŠÝÛ\Tä7`Zø®Vón&£€h‹ïKty`‹±tÆ)J¨ “KFtUD�·N,Y�M“[#MœÅÖÖW‘¢òÄÚ@¤7¸oM›ßáµ>D`P ‰(lɇHÜuv×Êó�éuyAr"ï>Ûw|6½=K‹s”|½°”P1´Ë ˆuL�¸�M†¾a”( uzV�–LVÍIK ëx 9:4§zñ�4ò˜z|#mlõvµý¦Ÿò'Ö ítçôYïììØ+‰w ?üêæÍëɦãUŽ��ÔÀÿ¯Û½cðu¨$­[5ô±;×…ÃêÃý^<nè�Íêi_cÚ‰ Eà+Œ©âp|>ºV³Ž‚wÜ2Ð�&ëÅÔ/cÁY�Ú�vºO¹[4óxÿLÅ€ÒÒL!@…®¨¢jZÍA“ 5òg_{çÓä½ìì5ûVõFƒD[.Óy¸ð–©Â࿯“•C�qôßÌ€æÈ7¢¯}mªfB/³ :¡ÕÜ[jXþø„¶z¸zeã_Y\°FG´/AÁ:_DÀºE§¾ø-'Rƒ³È`Âfñ¦ cæ”o¦áŽÈ'VÆnžõ ü1kX°ŠHÆÅ«¡\ó)/Õ`šÖ¼" ECC£§é†�®†²ŒþŠÝ„[RœðŽd”J¦ï„b¸T"c¨P°<„ ª-Ú7ç–*ÜöÞà Wˆð·oc q*Æ~[-OÚ<©âËÇé ÃÅMµ4â‰!ØêïôÁ”±˜¶Æ³’P›0J§>®nÉ ›ˆgËt�#¹eµ½L›WüXx§îZ¾Zȸ…²f;Ý#º•rl«Q®€Í›È8oJ‘n ŒxŠÁÝ÷€Åã¨Ôŧ>PIãE»Ú'“ØWÄŒ:íR%ãŒ[mØEd80´ÑbÚI眿û—éä€i[¥Lst²rçøçÚÀ™¿C„à6’ËÔ=‹x#–hŽfWTïÚ¨®_ ¯NG¦/¬#„l+ŸŒ7T±u%þã“Il'€.‹ýw?0?ÆÎ—•¨åÈ)¨hé'…yÖŸëíÛÝWjš»Ù«5h´D§{l>Ë èx´MQäÖzÀµÐý�RoÄ2bÿ»Í%Òµ¨ªÛŒûõM£�<ÛÆÎ6V–Îñ‹°ÍK‹@Éó—z{§vHžb€"Šp©ë|PXù3�&Åä8Låø Ž÷æÎ–­.^}�*ç3éTdm&¡v²†ý³Šiî +ŒGŸ{mäÊU‹Zõ¿´QÇù‡·>Æ'Ó)ü¦T4/7¥û™acÓô÷Ýê»Ýw—ïnðãûý°]~2�ÂÐçËj�*3£»é;–wêâ¾=[êy¤¨à‡¡¸îøe• ÍÍË^䣑8\(ŒGÛ4M�ýå ’ù't?)p~|ü<_üwÞÎ?Q'ãËá0ÏÇ㱨ôG]‹ºÅÁ»:JQðT¨˜ÙÌDß#s¯‡}ùû©ÈPÄöc9;ç`g«®)Û4ij:¤.Ô£‡êù5wh:$�P\g7˜‘yGtDW�ÙÎÄ`æi¤H¼¼×Úžjx›#¥$`5±MÖ$Ïø×Äf ˆÇM±hŠ£Í7Ó�Õà%U¼®ºÚcV‚¸ƒ¡Ø aþ„™†ÔQüþ½ô@5¸n(-Ÿ=狎5/çã^™µ ^x.è½ 4ûV�HmÃ/¼Fá5ñ›!Ãý¾øž‰»Rd’!|+�›h¼h,ñûÑàI´Jj��kg¦ Á&´M7”Û¶¦¡2�Ä]5ûbþ÷Åêðw9\Òúé™"Q6CöiMÊlýÓ3"�£eR*ù|îpxæÂzò}ë{á|x˜“k§‹á¼užqó‡´˜H^¶uaê –€´÷YÁɳú­9]ÇN(#´àÎyŽEÝ+#þ€ I¸ýÛKPûMàÑ¿xdI2„fPŽ¥øÖÞÍXbÁš�ÎÓh5äny0ñ…ó³Ù}ÂENÛòa)„vÚ²®›,›É¤�—9™lCÀM#îÜ»¨”W-k7«t(vÒ«dB‹Å·d`&G.�i¤wkB,mý¶UÄûHFX²`ìQo¶¼§é·‰%kKÝïÈ»§! µÑê2�(jb��žq¢§îë¹q¯Bl)Ë8͉Æ{Qp·µJÒy~F@K%~5fܼt¦QÌGåþÝ»YÂÏBÁËÌX�‡ ã"…dÆ0&ÌK1 Ï� Lkÿaióu™a”õË]vµC㇆±@RºZXùÞ¢�q©P¶Ì·™8yÇ…�?¡\½Âb*õ7|ßë$ÂÊx˜Çˆg6âP]_ã¬ûœe…!;د+ωïLlÿRe´ì‘H´gÓõ‰‰±ð®~lݼ§çTYfl†L¥ºŒGNŽM‚ÈV½'žÊbÚó8¼Èaaoµš]¤oµC?6Œ˜q]�|c ¢jÆÎ*iTÉŠ:6Í4¾¤ûö/Ú¶›½=çìÖéÕæM6FèÖ à�­Óc$•r2ÈjšÕÆIxÞ‚8ø¥ÐX˜@w̫ꑱ-çàŽai;Äï Àì¬;&UðD5æuæ;E-àË=–ô0¦®MgU> t G³k‰ÌôG,4)©ÍD1Ì{’Ƕ³J¾÷ Èµâf€­´´ig÷¤Ñ§\'‰`z^>ÿ‘6½»›È|t´Gcðgaÿ*ën̵ddú³™ÛÚÕÎ #‘ôƒ18VÒ�©ë5¡éÔ{Á�0K¸ ÅWÌ<Ú²�eèP3lÕ�>iWX˜ô Íñ†¤¼s—D7r€´C͸<´B„Á[6ÅBë§ÖJnà=¹£a¸ïå,Ñ«ùtj*3J=b¥u] ‰'„fm³�ï�@.YÌß©wÛ$à"Bë¯ÞDø¢ >¯¢ NMQƒØC'@©T —ç t;¬Ã‡1{–M¼Z7§ó³3ƒ±@ÂŒy‚ý“µ·þEÌ{1°(ù¢ÀÛÞ-.a’8ì6+âþDD¬¢·Ûº#80óãLÝÆ?èTLN|J. ×-C£òhcÓJöÒ™ŠYG¾­ª˜Ág¶ëS\õ>´+ŽW“bJ#}¥eŽVEÛíßäá Õ7c ­µ‡Ï+�}b`¼�R¤µ‘)q* õ\C«Ú 5õ#´8Μ1%„oWr9®ïh† ‹9èÀ͸Ø*"2CÌ·/âJˆ¥IW¶ÎÝÓñD¬õÕ¶Ô¸vоßxäò>ÃRÕ@Ó�7ŽM æZQÏzQR~†«RK…ôåÁ-FÀt4ÿ0|9¨¥W˜Us BŒ>Ôª/A4÷’ëÖK–‡³í%*�j ¼Ñ æ�SÛ7çHMªø*ƒ8¦i{íÀ"¼vÌïMÒÇÚ Ã·ÔST˜î‘k•K·xöÔ‰ÞT(éIÂÈÍ‘s­=q‰£d¯TP¤£Ó±Þº=ˆÅ~œþl^çѱق3U¿_ä¡T#y›á=INÕÎç‰+ ß™,1–¥ê‘n0ûB¡·gÉMmqÅ#$± ^Ò¼ó¢tb!¶ø(‡�gúˆ‚gHø÷˲¥f-üõü°|<9�pïè´X3Tê&,€ö¡üèÓmÃ=ôLv·Um䕘5( S¸aô6€ÀÝ(f.ö?•6t]úàs=GWøïÅ©“ÀrCÎ!“ñÅqòßk“zMMK"ÊΧ$hn�kÙëât¿,x«&}I‚ ÌÑqÜT£³7ކ’ ÐÀ‹Ú*í_äÁ¨8`ìµÒá¼·| Uº6épb<µjÔ ¤FÎb®ÜZr„솈°ŒIàÅÔÐìéu‡ø?¦g”vy>JÍ�`‹jb4Z6FøBYêP®:îæG�ôį·†c±h!¥LÎÀÌ¢hgUPÉ¥•§h…3WM�ŠF'e­‚éñ¿$Ù†\Þ@ Ëþ£†*¤Ø)Mø…c"Qš¤y.�ïÇw9ƒ¥Ñ Ó“ÑÁ´é�€qÉ£ag}(á9º7Cœò,•v´áj¡°\¥»¸Pê±ôª¸h²Ûs‚³’¡k,£Äµ{æ´Z¶ öÙÍ^¨¶I©º÷¦]®Ñ2^-ã="Þjû‡ºÄÐ,o6¤ ïeÇx¡?#.J­¹ˆ¤mT>¶âDz–h07H’¼†œ­ªþ{z—=i)EÊÑ;Zvè”w™x.õlI‰RêÎK÷áÈææF‘­û4¬M%)™²^M .RV['ý›¤'“I£¯¿,–’WeYê³j_Þߘ2çúøZ¥bòò•ÆÉz^r:®8ª}…( êÞŸ‰ç‘Ë`ùDh–ªú�‘r¯\W-Eèâåª/Í)$l+«ÌäcØK¡¬ì9µb²xÈC*ÍO|ç§d«ã,d}&+8tj–³ž")“ki2V»¾�çdÆê…Idvw}�ÑØ_òFZv7êúAâóðÎúK�ʸꃵЂ†P¶A°ë½” m�xÝÀýv „�¼Ã“A ‹·ÒÖ@O.¿¦CÓ€€À‚×K%žç�‘øRš£òô�(³_¥œÓÙ®+uå²Z®2 F‹Ö—w\8­’¨. ¼�¸<9Á¦¤° 6)ƒ‡pt6£Ìk,fÍŒAûXZzÕ2*ë,$®·[;¯íùõ²$D!=ûà¡Ì=í¬Q„ªcŸK/[n.ééé«“c[^«}ÖmócÏŸ‘&\S M9’m^}áa‘ÌìšÏ=’ g¥çP¤®'s�Qúñ׆e-ZŽ ¾Á"ÕÔO”Ò m�$èè#³CÆ*>äVSæŠGÕÄ]¤ r@•ø�`ÌÆ¿Ž À*îí=‡¡{C(†¥Û+¥jé¢jM—&MüiÖÍÙð²–Ð>  j­]pŒ;øZ�ô¾]}› �ØÙkª†R]fIYûö #ðÙ.ÌA¥Á½‡KÑ íH2�N A£Œ£I†!ÈvÛ¦±G%^¢»ÛXÔô2ì6g:Š€6Ä”Õzë—ˆëy¹Œ ©öv Í0¬íð0-«’ýü…ìÑ£x·<¯Âgÿµ{ w®Íhä.À¡ß¡x‰ÎI.¯ÑÆ®Xª3ÌÖ'sݳŽ93·µS:•[Gþ´�f�ÜšùßîâçËŠá9½³Ø¼>Ç›Î"˜›x d¢ú8@Ÿ]ÝuôQ¤|lÏ�èçrK °…D;ðÅ0ì4pÓ¡ó¶¹N_|ÜtëkõW W€=ꂘÑ9z`§M�ÊqV¹^¾!lC·fþç wê¯úþP¨¥¥9Ô:5þ;�©*UÎîtx·ae%,IvÎÆ(k-_ç#è/ÿ¹�ûâņ jZQhƒÂ7ÁÜ'ÇõÓrŽÝÀÖR†Å¥©^Z¾óô©u”¹´öYæ!MЦZ�ã™`ô:JõBH4cºõ–]�/‚6ú(̺íÎ<æj Õ8çñ@3«cârf&Nj#‘Mîþä‘LR8´†×#s¾‹’۫φêÇÙݽ�ÿ÷åη8‰öë{‰¿ß…„U…öMÐ�>̘ŒÖaÖ¸âøÙTÓ‡›c¢ä³D€5—LF‡�( C4èïF¢¡{K´]�&�JŒ­®µ²œc‚í�ïêKN˜¦�h€»QfnÚŽ\zýä;¦_P4’L§Sè,n\VV¶<žG¥’I„zØ[ëkþíü`žSŸ¬CSï–üšR±Á€ªbä@…y�‡Ÿ9}ê–·}º9q#*E,ÈDœp€„�°öÏDl�…Ñî©Ö…䆲ãbà;ù§kÙÔC·tnºé¦vú‹ÁKn¿¢JñdÈ·¶:dÖŠzJ¡#¤L�ßÿ\iSë‰O”íU8¸­“vôÄ“ÃÌ‹ßðàe0¾yÏT¤^m°B­j=Ûë>øšÆ »ràÙ2ÀP‰Õ¸6 ÿ;æš—d}\=+tÐ1ÉÖµH$¹œ"UCÒLO/>ÊŽÊÂð¶]bë‘Sœ^Õ‘YÜfO¦ׄNèâà ˜N$ènè¼�#RʃrÞ®äÆÂ‚”ÐCWÑ $6—DEêzˆs(;\™ÊH fN¢å©“ B}W\² øáÙÚÉo�© ˜QÐ/& ´Úˆ‚mºÞé5õRëCʪ²VƤxÏÑ%¬¤Ø•αETâú-­1.Y—yÓÒð;¾úÍ×R씼=û�­4HêÅõS…ïƒ/O‚#TÖü¶V2Ð7[ªÇ€*�èÅyLA!DIwn­˜AÐUÖ;uÒ–áš\{ò}ßóÂæ§t´}dÄÜd—ø$a©”8ú$�•¡oÌ™ŽãæÍ8‹f?Q²ãæ×ûN�£Ë˜€Avó„³ò*LÞÍ#Èqë™|š‡¥FÃ!ÇK÷íWê ”^­J›e¦^÷Þ�bNUdzþóÊf¶Ff³˜u�jVHÈŸp›Ã§¦ZK踷á,9¢`(Óµ�àUSwA\bÏ*‚é’�‡U½ýAîPg™]/6ì½¹æH©… Ú5ëYÀ÷¶©+Õ­ÓÔÓ-I=:ÜG!Þ²R±üQ°!µ”¨>ÕZ®)5gÙœJî*£F×çZ“†Uj¾fü­ìPSC!è õ¢TµRPR¢£¥\T�·‰â_|m1šaÎaWý¸U ¸œ�VÕ¼x]"ã!â.bgͲÎënæ÷Uͨk#¨o²+¯ˆ*ß U ÝSU0VQ(7ì$·¦_??Bk 5#ÖÕhçûàIù"Ë7Hn¯Eô~d]A\ÊÁcÞo½ÆüUƒ4` $òË,«½Îj;Ÿi½Ôs½V—À ÒÐEHW­þ‚Ö˜÷åT†|9sPMÚHÀÒ©œÿ¾žS’‚ž€˜@ièb¤ Fï1ûhò©†fÇJ4vþ‚!1$;USR#Tc,K{r‹øªìæ „¹¯†.¶öAšã†´2È£²£F æïð?otwä’ËF…‘¥*ÔèÚj\0Ìu üiÄÒ®¾½oËfSÛòÁ„áØø}ø39r`þï7˜übþÏírIâÃ÷¬‡pûžê'‹†_UcÔzkk‹áλR?ZOV«º×…ãjÙã ŽZ_tàç¤%ÒfŸ¯þàö*µ v!móÕ„Û–²4"Ha³H³4×Óר›¦ £%ÍÅŒ¯Xˆ˜ï@f¡H#à…ŸEl©Kù¤ià‡mšnX¤9 ð;mR×Ó–ài[šOF›¶"1.-àÃ'-dÆÕrÈ@9Âæ©ç#Q½lB>RÐU¾�’ú˜‰�CUãÊœ,Šy„\±*ìâÁ²eëY¶QÉ¡‚å]éxù§›C;?\õ4[¶Õd5ç_y±:Ș¾£T%XÑôôÚ)Wî]ÅY¥�ã5°N»™ââØj9&Æ�b²ã Ñ²Ê9ˆa˜«nWm ¯wøÊUÑN Tß95:>禬r�|��²¹†K¶^5¹·n¥Ÿ‡�î M±ÏAçdàzØé¸Y|ßÀ”%?21«‹d5b 0å£ç–Ëb2m «QÒ±Ô�†9%Të9>ˆnyLðç–‹Å!B [ùeÆß5RhŸ_"õ5Õü¿ÜŒ9 –ø¬XcÙ°Õ‡{B9qæBDÌU_ýH¹qçÁ“o>|ùñ'×_€@Ah…`!B… §„†�…ƒGŽˆ„Œ‚ІŽ�‰…�ƒ‹'B$¾(Ñb‰ˆIHƒ‚µ0¸/ÔâbQ³1 �Á@Qp„ ÔËr?x g÷Õg_­áR Ã;Äi³ËUy.ëvÁ9çõz!ߪ‹.iµ×g‹\wÕ5…Þy£Á)Ò¤“ÉpÐQY2eSÈ•C)Ï[Ó*PD¥Ø zW•({ã­CaŠÌ`'¯›n»ëž[vó ˶WPŽ:Ž0GpLšä°„ùÞ?¬BÖÁ†MØFŸ° û†C8†S8‡‹N†(ľÊtôl'•θÙ\¾P,•+ÕZ½Ñlõõ´‡:H"…42È¢5Ò<ÔÝMt¿©^>·ç•,6þXðù{á—Æ;óTvÅ®µ´pÆ{ąʦ\�ÝòI‰e·|Y`zÓçÑ pÎäx£JvÍnL4÷+–íVbä5«VÓÒ èŠ¶‘ÑM)AÈî^Â/¬ûÇ-²]¯kÉͶN—ÙÜÞ7TÑ�±:w{$V­´ÇTÒ¹8 ÊSÅj³ÞD÷…Êg†‹ð]xñµ³· ~{®R’–zû—'&ÚùtMrh9ÝÀ¯ŠŒ/âg?Æ-¤ f«û(wrKÁ6¨¨z[ªÞZA˜XÀ ¶±‚]YàáÂgÂàÛ€ÔÐr¸ µ€ZœÝÐþ&KµÎZ­hîhzkóœZmJ•æ¥åúãbýÓ*Õ¥bCjR¡Ró?W½¶²U+S–ÒŤš*É¢¨&Š¬Ê—ðã¥ç”X‰S£…µV¤à/çÓç×[¡¼ÌϪûsáû³ó–/«x³IÕã&ávÿêr%gFË‘öíé´liÉšú“%Uäœev$“--ß`�%½E¨:ÓÒ¾FK­û¬þœÄ$ÿJ'%J}œT}B�·–4E¥�R•о"¡$—_¦.ÊÚ‚¼I�ëü¨þ„?]9+EWM§ã # û�ã9Õ¶:jvÒŽ0�•TCPU]X¯v©§ÔNUk)™g÷Se5Á­m<¶÷uy±qkeû’v€þ2ÓÙµ²«#wà:|YBKÖ�ƒÉg‹‹ä˜xƒÄÞžøPþO3Âæ¥˜š!‡ßV‘62¹¶r%9�Pß¶Aá_ü\ÚAe*›A‚ÚXðMÉÅfä³Rt3ÂP9¦ˆøqìû`}}Å¢Ïô«€_ÅE¢,»cI¡Ô©íÊVñ‘cAö•%¡á›É*�Næ:ô²ˆP0ï?/‹^5.éwPKÒV1]†tÛ¯rÖhÖYimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-ext-italic.woff2UT ëÆ«jëÆ«jux è‡3€ÌwOF2ÖhddÕï…d™ :?HVAR‡0`?STAT� 't+‚8 Ÿ/V �È�®n ƒ60ƒ†F6$†` ‰� †[TqD؆S²ÄúuôÎqþP‡}¸Ð±—°ÅÃ×Þw{·¤•æJó`’.»ý;auŽ9­*uwÓ�NS CdIe³ ,Û’,Ë@‰y¼9„þáïÕsHCáà\íÆ1'hIŠTƒ~ÂÍþÿL„$�«Ûí¾½ªXyúM55£ ”:ZGkHªÔX©^¯ÿµ_Ÿ§év÷í~ý`à½�4@Zµ6.U·²z'¨#T* P ¤ãSq+ä—MsТ¤›Xþ'�õ¾ÑÈ‚ÑH"6É,¯´ðud@舒öC�2eŠ:¼›\êŽúPѦ̡δÖ;Ùzpn§½»b)‘>zû l«”Õ¿` È©ÿ¤Wf¼Ä M²ÐÏäÕW»k¯-áR ƒÖUJ=:KoÌâÅئÛuÚX ´ˆAI§`b€ ˆ=3çœ.œŠ±é\¸éü—þûÞ‹õ¬=jïù½µRõöšJ¯Âšõ¸È0”µÔ�†ü|ð+·ËW°÷ºÒýowÏb¨ß›°‡Ku3Áä›J ZÒ”¡ûCß<p[Š»#¦%A+GØ„9@©éˆ E‚’»Ý^Çum…à ‚DH�ÿÿk©�ûîüó÷ïœtèL@Øöqr!4óv²@¾,TœL\u뢊ì*lµªµ­±ý{S­ÒÿI=¨©q�™ÝæÚæžûÔ¹ž¹ �±Ù™ñY«jÀ†8Ó€¤Ý@Õ5!3 @ºúÈÛ& 1žkŒ�Îóº›Ô~2 xÓ¤Ö�Ôo³›‰ÎøÌIbmzA–úôþ^U«ýŸ$DÙ9Ðù"}Qî¼E'Ñár(oÛ›xÿøH’ÖHY4­=[; ´Z¥ EÝ�–<#ë’7äLÒ)k/§*ÅÊÞêÆí•¡èŠ›«®=ÜÅA[’X‡XPË0â(x�çùæÊ`¹“3ž‚0ƒaÁ�ºË2»�Œd40‡ælxï&yÆ×ñþÞSÞÞW‚µ!MC¢âcB=°ßšÝ'QÇ*gü4@™j|qû$®éï,' #!„æAø1ŒM‡cÁ:Pª?cêw&Фs˜¡¢ âd¬'ÚëZ!埰Š\?†ý×1€w�ñ�p%Fðßµõ÷ÀÚþ@Œü \®§5Ž3ßU‘i�€üðï¿ÛþO8ŽùÈã¿ö„ï¡|úÀ�÷!‚òö‡à>ï �Ïÿê¼üá×à»ð[/z7/þv^üß /ù<º.{ 䫾ÃuŸwÝ�„ÁÒ[`¿þó0Üð¨oú„›>�]7¿雿îÿ_�ö–…àÕ-ïàÀm5 ù¶÷ÀÜ-%¸€àC?Óý·g«ÿ3Åž-¼òìö«¯Üþàû§^ÖG>í{ô“ÅÇÞ%=uX9ýáHJŸ©N¤ÙѾÞ$Ï�í�q%8nw j<÷Ë2ô?ű©µ8Ý*sÙÉYæúL#gEˬä™'×çE×¼™‹ÖX„ÅH½÷cü`ŸŠ…ÅX¤â’7îTãñüÜ|wnckž¾ž¢ã)s:ÍNdéõLžÈºJ6..LÉ óúÂÖÔ¿öt.Tr¥›+ãyf_¡iE¡_øÉÅCyIÈ•L®”ꥶ±œL.Ó³UïÖò´k¥¡ü‚å¥j?1L2[+ß� E34Se¸È*›yÅE¾ÊsÖâb›ïïò‘ÏxJ GEq“èê 걯‚Rîøbö‘/®ç¿t'#MtzWÙvç—7Z¿¯ÿJ[¼vköÖmö­;šëKª·P»~GuýÉÖˆGWýš?p‰ßˆÅ³€æBÀ˜|>‡·>G(Ђ²ëÊÈ.µ¢wðûfJ«ÖGX7b3 @1 ü£} ~rQ+°(tz„Âu~¡ð–?)¼�¦ðeCl�?9h!ÿJÎæÅª‡›•ü§óñJFë|"“ªt>“¬&öm0{ﺾ/-cÞ³ZXÄ 6Ò¿ò#ÈŒ=æ@™Ái´œž‡ÁN‚ëÜ 4À [¯é71cì˜y´C5{ëȦy_öþݦìð!ûz¶q¼(7TÇ ê]kuL¬þ[ýdC>„ùDûÔjëê[í]íyí!mÅþŒý‘û7ïw ¶� ,okì¼Åʧº–žwÌ&WÌñézwckT›¬Y0¦à†; .w6´D±Áòbl°£Àé«Û{7m­­lÿj¡± ¯Ÿk£‹F5òÅ Ï,yü1…Ì/Qˆ)K‡Þö¡ù÷…Ö…·Ì]æ¨ç`µ>Îç+Õ¨¤–{ó(Ä?U)9àæyJö RêwؾÉ"ÿ�ýö~¹-(÷ù6ŒAÃ� A}: ê“ÛJ•‘-ñ…© ÅÁû‡ÚÂr4¬Lçõù`#}é¶•ž]�¸½‘Y>g]y©‹ý–í>«¬†�Y<¶¸GÔ±ò£ÿ4†ÖŸW‚†¾öIAy˜ZøŠF“Ï]Ñ {Žºñ9݈â=çâ(r¿‹S´ãÇFâð{Ö¢®Ý�Ο©ñ‡ø6÷ÅOí¡ã#}"»x�h&ŒÇä`P°š_×’>îÑ;c˜Ï’ž%,eeèÛƒ*z³]K�Œ‹1Z®ÎåYÓSP0l¯LVËçGìTE1Ϫó_ÙRiÍ\$c á6 M¤ ²lr>ÏÇ‹ÿÂùªì-Ïë�ŒÐnèqâíÑÙ%Ù‘ö X�Wïac5·ê'rü^¾6®&rEõ€™r*Jé NȳcµB À–<â ð1NÉ—Cƒ0� D+ÿÏ×™îD½)éuƒÇYû!ëìA/·Ù·ØäOŽ~ ó` 3‰S0� c£­-½3jA¥µ÷f…9ˆ…Çó5hÍ¡Ù=Ú:UM³r®EœúÐMaªò{׊Üoo—ñ &pœOÚ º~ÿ晃4€×ã»’˜*;!›ƒ†ð†NÃnÒ½àsX#dX“êO`!Ù_É=AýâÂ…­›ŒÌvµ¨4ìv¹w¬| gÎ&y7ÿ†3foä±¢¯9»r™À¶ÖûéèPÐídFõ3„5Äv:Ã\€…’Ë%9Ô]óq¢­…RH OÕŠ� Ä'¢Èá¸ÎÀþNp þ-{Â*ó®b } AÃâµI×ùô¼¬žÌÍx = —«\¹…Û ÙT?RfËQ™º§4H¾³ü\£¹AQô…'öUÁ0 )Õ.†ä¹°‘ÆÊ?ÃØ-O…õ×òàFý‡F>*ž˜‡„*°?ã¬_xuÄŸÅíd 5¾}^ìHˆèïî‚¢zÍs» ‘æb1Oš'[PBA½½‘]Er[OQ¾:ÂVävŠš�yg9 bhÊ… º¦óµo‚Þ¡Z–<3V¿ß$d_†0çÂäT\Âe|”Oê§eëb uy ¼‚<m-Þ1ã@mË‹0™=ž‹ ZhõP™;Á÷+3ýꉱ½´Ë!Ó§¢4Ž•ó¡Ðåuôiï¯bœ�K¤!…AᕌA‰$àñK§�ŽHÙ¾.ãñ×Ï÷¢ÐÞû+—:�h[,>Æ;4té(2fv¹á|ó›ð“nxïókçÄ�{fjpþšÔ1ÚÎé ÷Èï0aÎn qá`¾�ty»¤hõ↗¿ü‚|“6r½¯sn2´.½pd˜v>æDR¢*ôEÝÈu©Ãg†í¿s¿8”oÁyq Ž^ï�=³´±À €ÀÝ]÷œZÛ:hbŠ€ÂÉç/ÿ¥|Õ»ô5É_Ã8Å5 AŸÐ* H“¤¶_Óõ»B¿9û,°èã³ß’;ÀIwñ¿ð—ÊßÍaóC°7jû ˆoÃh(þtÇ–Ÿ‹ç~ƒÁüMGôo"üˆsü‚Åù� äÿ߃=H†è®è_B!X ¥­ïßÐî r ÖÃñØ(ø™¿�³`ݱCÁÕ@u"Lÿ \²÷DÀãEp5LN�ß•Èÿ—ƒñ*¸+À# –¯œ¡o?Ní-ð›èãá;”ß§Cû=€…Î{à¥K@Qñ20�Ö�À‚—ƒŸÙt%¸Ï¶+A?¾ô¸[ñjðS;¯'‚¶j±ý ðkûo�¤í·Â�oƒ¿9|ø~h.ƒ»ü†û8‘ ¡jX¢“Lƒ&G”þé/¤èOþ޾ý¡ÿýÍ8tä�ÒÿŽì±€íäo`àäÿƒÿ´¯@:ã p^0!›.øÄ/ÿZ/·“¿êÃ’ºæ•ÐãUàØ5zÍÑyÍOp¨$ ÂÙ/!Ó�pýÿ¿Ð¸õQ˜n¯¯øuµw…ÁÐÝk ßó&„Êß—� ³ó>Ü ÅùÏ+ßz0þ'~¾õ×7ûü÷×7|Ù¶ßÖzø›�¼„ãÝ®Ç^Uxëc¡Ç?˜xâ�ÕwÞ¼ù$d©¯;öÂ+ïùÝÏ^}ðåw¶^½ãñW_uà�×îxë}ÊÛÏ�|ç©õ Gó¢ã�†Ê•§µVŽ<÷銾@‡¡Ì�—úr|Šïåáú·¡û;€k�³‡vﱿg¯ÙÎýVÛOß­ÛÎÜ®h2:{ÚHàŒÞxöÌNÃ]™þYê_‚¿ǯé è}ú-ž¨À»Çÿ¥ï~ € }è{@šçµ#ÏAk_`�IK?À¨W’ð3éšBO¼G©2Ńùª`OxÔn=PBáÐ]ÈšŽè±î:ïy^ý׺Õ�v­Yö((‹ÝQUÐW ÛEM%Êd*@BC®qj›ËÒ ¸zzÁ�TzàHîË`€ß7†õ#ê„$³‡9Ê<`ª üí¢ìâ0û˜æñß×µ;çlàæá£îÑ'`ÉDðiø[x,NÛyéè÷AI�1X`‡‚óE„.Ì™Ñǹ¹ý‘@ó³£€â臊ï¾Ã9 ®,,õø[JûT´Ryþ›œxÔž�2êv'Ÿé_ "Ù¯|Ì�ŽUbü"àÐŽ ÂaÀÈÊËgÙï°£ñ,l<"~ƒãµÝ‚º}ÕW~õ7å›|ä'`·COâ mŽŠF‰«XÖzXÓ õŸ†þÏ&úŠ¢gfçÓ¡ÇÀÿ@�4,G]PúAÃ@b0fçˆKùÇôM<ý1O¿»¥¹©Ñn#Êÿÿt;íÖ^mnm6êµj¥\*ô¼–S9›IÇ`>‹áã�>ü`Zz÷ììýÉx8xúäñ£~¯Ûi·Þy=ßÛ½œ¥8ʸ¾Ü»RS)Šïê¾’Ag0Ï o-Á�é�\³¡�ñšM!ÉÍóçâBú1ªkjɆf±¿þ˜ûÃÒQSz€T)›¼1râI~J�²ÝÁ».‚OÄÏ|?' & FŠ�‚ë;¼Nøpt•ýÒŠ·Ö3ú,vKé˜ÀAeêgCR+£6(£j¯š½æÏ¸B0¦t°aå;â@ŒÓåÆÜá/Ÿ¿¦;'‚fž œT€=¬ß—�×ïÕRaCÞWÕ8d*^ÕOk‰ HiöSmòoO}骽ªSû§÷+!e¡ðéì.V‘��^¨/b«—ÙË‘Ë^W~”¹ÊM¸Ö_!ìxçŸZ{‰«w@¾ô­!ýÀÏÍy²·Ç{È9=Ø ÂÎSGÈ´¸Ž,¡0Æ_ËNkÔLðÆ6®±ýaòOí`ê*£$Å#êßpqçÃF³Ü-ÓFÃ÷P›Ê*½L ‚Ʀ'ì4.ö>æH‹ÎØ!$ žïvYöñNJ'ɇjc—üé¥yÔûN¯¥unñlã´–H•mV'rÊy‡ç«÷å+«f�g ;‹îwû¼ÑV"_csO¹±O^ps!€³Í•D6r†>dl¨©%RµÄÁÌ·ÉÞÛoJZ²×!å0 �ðÖy]€äëÚŽ_Ã`LcÂ[šzy‰Íù_HgÜFmMÝܼ?'®cO*àÞhr3m<¤›ŽKĉZÊÙ@ûbʲ$%u068bu<Èk(ø§ª¨Ö2:båÒ*”]c �;(�ÖN”úU Ô§aÜ`jÉ&ƒo¢§Ö{%÷£c'¤H¥Ä#É-7† ´ëþ7c9.aÃpªé+ŽbàÖ«›l|CÚÀ–`¸\E0»i.i$t Å'²ÿsSZΡ3WCÖü¬<” åÔ"W[Qg`Þ–¿ JÙ2éON×p˜´©s›¿PÐ>m©îЍs¨¡ÑMƒ”:[qèÈ�&(ŸÃºÒŸëªx«Ö�·�î-ÞÛ¨ajÊþ¼ÛÕÔ_� iî£ÈŒe¡º>¢Àš²çd<7ê(<ÉsG�탄1«4 Ê$B@™áÅ•¼ÜÒŸCP<ïúÈg�®ª1®LìÀ@T ž‚ e­Ë†õô�)€ÀN�˜wUðÖ£†É‰ªT¡ Ϭ—®ª1ËÑ9E@èücVÊy‡ш±èenUp‡hnÅ·>ü·¡NÇú ›m]ĤÆÅîz+ýº?ZÕèUˆÊެŪÕQÆÁaH;Ù%«,Ð$A¿ÙÓ8þ• ÒKN„¦ÄÃÅÈ“ýül‹êü�Ü×wZ` NÁ·|©4 ip›'6|ȈcÙ¥º»ƒ|9'ãÆ’< %d†$�‘F®¦ßéõe(a(Ðã©F_‚ÛÙë2zîjï­qÖz/@�Ó¶¥ÍM�Gê$î¤î½€ˆo¼¨”`u£gC�h|¡K{â1c·%y¿¡åRãïÐcƒ´®[JWՙܤ554°—¬‚§½ItB£yÃ[g- ¯œ§ó5QuB;")‘®v)È€ûÞ*^ޏ‹ÈÔ=£í¶Àú¢ÿ^ÊæT}<0­`„¿4c‘WAeÊy K¸±€xýŠ—ÂžFSmgî“d"D×!(™•÷‘£S•|%ç!%öVÕS ›fÃïð2¤âr/n‘³±ý“Û´!ÍÞ¤–‚#¹é|é�66Üäi¿â™òCÎÑ ( - èŽ `!a€ã«@®�Y©É¸ pº¬Ü—ÙŽ„Àh¢I×[áì„X‚ÿ�Ù‰’(´êJ8�¸v`ÁjÁ;–B†±ŸøOÈ^¿ˆ~…+À¤]P?އìŒãdèwÓW†E>(?ÌF›ë•]'皘EVDÌMƒ�Â!ûâ Š ¯"(¾’% „5eø¹>«²•¡u¶röËìÀ�שùæ‚[çnI7<·(hÕ¨wxÔVÕîn,;/O�dw_lk_ª;ÁfX+b¿£Þâ¡ú&p�WñÞÂ×ßòí<¤i5+«¢ðý§ÌÀ£uå9”ËÌé6ÕçƒqX+®dvÙ-q¯ ^`µMÉ\»jxeìÑê(n±ü8Wg´/§õ<íØ)½�MèÎl²HSþM¨¦ER³5Ú� ÷E!¥ÍΑ{í¢Ýž ãñ|V”§'g¾trø^ƒ,ÆP 2t Ã_{Ó[vóò€kxLÿL)(µÏ“<Å$N’ça÷ä iѵc”ŠKˆšr¿®â%"ž`öþfy{ßõ2 ¶‡ªCwbHÄr*ÅW7xY®I²A‘Ÿ4Mã�s?·Ép>‚šºr› Wáe’D¿ ¾�Û[`V鞪�Œ\bK.þ¤!ø†ð0ˆ³bçoÊÚå„õPñN À êÅ¡ kåi: '[-è ¶ÿó|_/ãCiÞ±§í¬ØhÀï<ÓÉâ7¦ `ý‰xž¢¥Ð50²3âUÇ€˜ƒŽ‹Ž{¹y¼vÁ¸%/Ôöxt‚ö^ô$Ã4º ­P®N GªRIÿ[7*[B¾eñÂ�É1‰üƤ¬û#ÔŠærƒZm¸5èÉ~¼Ê}Œ7°Þ>Þ8ŽÔ¡¡ÁŒt¦TLä‚r> Df ƒ)J �?È/ˆVá; vîÊðQ.¥áä˜´Ô ½Ãˆ7¶Ÿ8e2)jdzТ‚Y€€ kÔ6IÛŒO8Oâ ¶ ·Šð¥ñ9¯(�„‹­q� m÷(ŒìLàp%B…çö–©|{¢™—N±ÎfËé)HPÓ ªáÐɧöÇ�å£j-�Ê| ‚pÍE/XÏÍ;"<ñ{Ò®§7ŒÆY½• ·)¯¤_0 ;Ç—†8) $ÇvoÏÎ�Ÿ$þè‘o¨TrØb}^£uy¢Àÿ×Ï… Ú)ŽÜŒ’r‡UÆJ’'Hi!úAâZÚpû.§r–ÌÞ¾•)2•�ÓIw¦�ø9Q µÛ2—=BÆ=E·N�’¯µS*±ôY3¨mö¢bÒˆU®Z jÖ æ-¶À‡2#ÆZ“éÍ–B̼�:bà ,¬°Bª—h.ŽÙGºÕG/T©ÇÂÄÛSGyéŸ�ŠòPÈ8€5l[õŠ|HAø€rÇ«´æ9X�F !åSm«Ó3J¤Xô˦2MãûÃ!¾¨�¨h©±�—ܦyŸü(Fß™önsu÷O»U¡Í^Ûç÷2Ú‹ReÙö“jÿòƒì�~ƒÚ¡5°�a¦ÌIÚf�iµU¾¾SÑ(Íc´I<ë¼MΚ¤½^ Æk’4âäŠ@…Ìãè}Z¡«Hа‡å•§#Á|r*ssIÉÛ¾G `û&È©‡J‰a·n`.:)º1¬®¯Žì Î6PÔ· ñ�­¤ô�…¨ñ¬ |×´÷Œšt�*}UD^c\åÈ"eùž‹€ÈPj| µs*Ã#G·’TlƒÇDÙ/³}.Lƒ åôö2FêëÈ"�Èr •;SµÛüñ"ñ#V‹��™‚‹)á Ãê&â–zùà)*«Õ¤+*Y(V†÷HÄ£ù÷­ ¦†]ºî‰À é6ãaÎ`œ/SžŒH¦tÌɹœFd:>Àí.j[^ôêòõƒGÀ›`ã´¨èXB‘›·9þØ0Ug `3´l¢táàP35 èo• pb+û®oRæÀÏnµ>5 ” éë&ãˆ4Q­ÀRás:VúûÀ£C­—[iÎ Û}ÃB‡Kwt�ƚșW¾¦Š$ÄHÆ Šµ9ÞˆæÚFÚ¥¡^¡aóU¬åk5ÛZÐÎì„]ÇýÃ{ªN²‹¨{As0á ©n›…rfC}¨2$iß|„”N‰w!×?СÁ.:TI"$Hè'ôšèf|¡¢¥Ì 7b?a!#Ô12BÍ}.gÑþ ôìé�=!�#.µ1–††Ñ¸ù)ð5šÚ¼Ðçµö¹„òŽªøý&Î ö8�Z¯âT‹P²Ã)PH(‘‡6K¡…l¤‚„€âÇ`3Î-´¡…¯K2•¦mÖ N•yo™Uh3öýË?nK¹Äz³¢ö%Ö :X­Tâ˜Up3�eƒB�0Ib �ÏÁšfÁ>²;FëZ4Õô‚’îUõ F%\øÌWtÑK�%#ƒŽ¢2žvB”„ll ‚|1© „‡ {ÂçÃeƒYö(0ª.e¼&c]9­L„: ¹tDLÓ½«ËR€Û#kjm?î7#òC8ÈoT ±ã§í‹÷×\Në•û« °P¤¯„œæt6`€²£®·ÜYl£óÃ2™pÓ- ­ 6Z!6ŽþU%„gZ°�ÂŽ•�ï�±˜RÜ]i°”#E˜»)Uó#ð‰s®ØwsÝgîˆe×¹ˆßX±`¯ h!Õt2ùä‰ûþÆåqÕ%zLqÜféAoKF•zPYÉYh¡’_p®(iQ·0¦'ˆΔí�µ‡-Üh±VßaWAÚ¡mK¥ñ®X;û·¼è蚬n{1ÌöΧS°Œ“éÌÙñ¦¥�ta¸€©OÇáÞœût—ö`¢=8ëŸâÀû¨ä9}/ŽàšÛ7Ö¡i5ÑÊå‚éf~MKHü˜ tVãúåÑ£‡»Ò­gÖ„tq×(ûÒ¿x�FÁƒ5a‘�òqÏÔõusRàųS—3ïüõlO­˜ºÐ|6÷¸À\GŒ4 \ø²Çþ÷zo¾wËO/]þ7ýBÅi,#‚0x¬?Bf¿)?R|;áÓºk7ÆîIN"™ IVè"ÂW ]ü>•Sþ022CráS 1ÐrÑñú·8ÏMàæOmÏ×�c¾½Órz¡ùRÝ >6ì—œ·ëOo¾U`š�e[ ò±Ü øuõ«/~°,žÈ°UŽäo nê:E/-¨}3¬ôèêůŸNÀ–MÕ ‚€².mÙfKúHyµsd‰SL¯L§Ê €ü³­Þ�Ô.è=·×ͺ>|HëPMÃ5xÃ߀T´¶²EE´TVâ\Ø¥³Òù°ñbaùV�%éAÉÖ@Ï9ºž2î�˜¨…ã“ ýÉÌ;õ¢ìÆ<‡Ö†}2lDûå]š£Éÿ¡üêÁÑ®šeL§J ¥‡ØWv†Yµàèßsý/'µ+?¸/¾8V!ä˜s�³½º¹¦ ®@iÃC](4+¬‘?ígKUÛí]Ì}#?_+o™ží¶ ˜Ç4¿d8Âý¢��­“mœÁfØ 9mi{7¦]#Î`PØ]ÂÊyPV€#À!™h ’ËwåzÝ0E.nÌ%4*±Ü�‘ãËcgçZChT—±XÞÿ0lCý)ôOŸÞ–¦øÅöŠØ×d:û×Ù†¶ šâ—:41·¥ùÿ“¼Á)íË«NV”†Ã¶ŒøX›š-"[3•:ÜêTÑÁÖQß ÀžKh�Æxò›FO¬Lžot#€)T6—±¨|¶¡þdÑ»“Ú¾ç.0臨ÐÌï_u¯Àð-Úôrf/ S´ÂHrÇ{:ÐåòNzS~ϵâ\ô.©e5Ý}DpÆ»¾èGؘR2V†Nûps“LJ õ!8튧%«àâ&t §y�L€M�<øÔ7¥w¶Pw:´æ‰KÂh#�[/"8?Q^m>ÆQ§ãä(þl%|&�¹Zl6oj0Žj~ÎpÄì�l�êb Æ3�ãLô1Œ´Ú!ÄJ‡«Áw]SˆFmSVp_f5®ÔÌš –ÿ HFke-|\-¡ÐB<оXRǶVýÚönL›ZHdçg±…Æy’wù“Ðndh·géˆ"Öñ«^:À seÒBnåæáïáðd寓׫Å[ú(Ͳèè¦üìmwB†¯ëL/÷ñ¨Õœò˜Ðxï»_¬X±”r¶â§ ³ò¥C½ïÓ¡TW�‹@Ûq*§…WÊië¥ ¼\X ‰ATcíÛÉ+«8†Gå´­tb˜•bu~±Ð`°ÈF#„…šºÔZ´”R€Rl§ÀO}§~ÿUâ‹o-$x–\6X®Œ{(°¦ê‘>ÿßg€¦§4Õëùß‚ k»aT¹÷ÑW~È_qS¿/Ýxn]ÔnOl/Ll·lß>ñÄöèEã#�NÎ<|„èZ¯†ó#NR£fÕh%”ŠãÍĶ5ëÑ;�¾—u—s,½¦Šfµ¾øýŽ—ÅTQã`®vÈA ¡Åÿ…9Ň]‚Ýp*‰Ç t.7¹Õä÷3_Ðø¾ç_â€:œdÙh»kyÝ™¨aE‹K‰·ŽY>-™Y�‘ãN£¶\yÅÿÀŽyO²ÿ„�X‹ÐéÌt™™yQ&ž7š9çæ¾È;T5ÞS4‹©âdÛ„µCóРå™?TëYq´øµOÔ†?‹ûÈó : £sBº}ò¬Ó$j»B§^Þ+iëŕ Y(n¢HÏ­Éjö¢îº³%E‘¬}�/º¬m„¿@O%�m®(Æ[IUª½õëËç~O<£9ƒeE�«†"¤Õ—Ã=åç šZè¤YàL ß{yðv–Ñ[š0É…-@±¹'läå[}àÔ(犟&]R½¾�Hÿ£œ Zùýq%~à` /èf Ú‡ðÁw#Aül{-‘ËjÀî+zÑXsªzkÚ'uË¡ßlÙ<:¹Ù:´ #R0ÐsQ#®DgœG –+8ƒ”G„Qßö¸O]b?-.:k|Z }ª­ýÝÃèoõ6p 1‚x^¢)îÏki³Ò8ãsà™C·iÞœ�ØlØ<7¹Ù8¶™p“‚ Ùðªá.üXÉ•Ä,ïIêrÉ[¹Þo½Å\e>Ui’†§EQ¬£žºU<ÕÖýœ$Hä<|Ý¢Ú8¢°Ùå…%r4´íƒ_êQ�Åq Îð­µ�ÛDaUÂT–ÿôÞÊÔž[Ï­ŒQ>¼­gV8ö£+¯UD0 -ƒt£û§åþ¥³¥¶r¥—–“ÐÄqçcXnäh‘ œ\ã7SíG)AÓøaäs‚èÎÌäÿ0Ïo úé¹ 6(¸íý_¬è†¢ø“*Cn­ßv…W‹SYû|û÷Víù²*b¹†èÂo>zøº6�ly01~!ï¦bao0¾£?GÑ-ÿOË}K�¶`Gw�ðýµ~Ó?rššþ=‘ºÉ;s]—–JÏ„ë~OFue'?÷Úê`Vz­S£sA稭¨¢Âr=«Ó‹çvÑ„§Ö)®ÕÏ¿Úw�9†°P ê%úæR�jÇO%Ù„çˆîß ›à!–4ª¬"—e©eÁ#^6ܸ©MÉ ”=«™ø…V¶è¨²9s=ÚXôžÒZÞÂLåãœ^€Ñ­úSf‚�YébrÁÈ€òtG7W„ã»—Ôe$+’ù*cÚ0œå)ô>],ÒKùæqØ€šÒ y8!£�|ÅF%¶¾ß„%¹¾Ç4"À–t²œ˜Á¨3q õ{Æç"餪"DmWÒ³Í&ù;;ß_[WØÒ9öµÇÏâÓ’˜‰ÝÎϸ3ReÞËi¡sßÚeAÛ¤d/¸Fí¿´ ~r¶ £?õ2«£_¾ úÛ§¿¥){X÷VEá%«6æMÙ%þ÷Þ3ü²ž\cba©×_ÌMƒ†t´ŽÿOWDÚêFÄâÒP1 ðâ² zGèftÒíãýFU&Öt@èy¥K6vQXÅ¡> KJ+0Ç*�© /Ý„ÔU‚ÉMä>ëTì‚’rv>ÚPÇ•rlštNðâçö{ÎAßXò6È)9ÔÓs}z. ØY�–}}hCš¾úlI� H-ˆOËxÛÙ]—}¢7õùás§Þ6´z¥“ÌÎ"¿¡âÊ1úÌSÚ¢Ö@‹)aQñÿÙ‚üUÆaÆ9ìUú”U�™ R¢ã?ˆüOo*Í›ùä´sž¾XÕ3Q(÷ÿ•oõCŒ>>VŒ¾DY4t�(eÀßqÌ–Ÿù;ÂÑNËp!‰Pß2#)¦ôÑ‚yÍTâÜ¢\ª*½~DQÍÃdS½9” c%߀ÒÄQø�àz »U§De$3oç¤yQª þþù_Råpô Ñi8|FRš°2”5¾k“~tØöõcÃ�¡‰u�VÜâv>—áéÌvy7óTÒK Ëüµƒ»Ó [ZŸÖ)¢â¹:ëuîw?W$'ô)IÄ4U$ŒÔûõp´ aÞÀcÜþ “kzãÐì®´ZØ€áf hOð‰‘Öo6UkL&ã (M,·[AVÿÁ„�ù!Ý›R{œ°’/éR:0*#ŸØØ…÷é|˜ú€u®„u¥_ÿ†ì|kßq–’dDæˆZÞÃEàözùué£�#´žâÉ2Š(>œ¦tЋurl*É”/5åNÃϪ*ð=\8Ù¿?·#ß &·*q+µÕ�…×;&Ï ÍÒ–ôÿGÚÓð~VûhÊõ½>ÓoK½ù>-?Ç£_Z³AgÉg¿Q7‡ï„Üÿv/pè;õÛ¾óºä\GEôÙnïØ¶ÐÑѵ½ß Ϊ«Íâ¥(‚ùC@žS=ébh1¿¶ðfd‘`/îäZˆÛùТ)åÞ*‡,Lõ—ÀSôÙgi¹Z]¢×¹™Z*%—30'žÜÜ·ÂEäþè,ÑvyéèÈCË…‡7&›ƒå; ™Ldò“Ò}ÉôꉶõWheåšb0«—í)ÎW]u©N«Æš2x]<¥¿Î)ð×*ÓLÉD<®€“ÄN¢$R.Dâòi1 †]…±Ó{&ù#bÌáæXr¡0ðj8Ðsb ±WÝ©ëS`!\‚ÉÏÞ)ÐËßS(ö'F°Â…a‚¯È÷÷§ß˜‚0áWyø�‰Rù�?°¹)´>è@Çc©,�‹�µ¸Råú Œ)¶®¼0@ˆ½âNsË@6}k_ð ¼ôRçÝ=Oˆ ÄÇÙžŸvù�ôÕ0ì¥*î_¥c·^ißñ éuCäB^cVAƒ"ÒS´$ý ‚t:ûßsawã‹nõüàîïs±÷}à |b{q%üb"b"!5={E*™¯²ðÎkø*wZ?Ö]4‹©açØEuÃêá£Èo�õ'¨¼Á}•˜·ncäôaPËLê3Gê3×ó-. © nŸÜúi"­½P§^~¹¤½_ 'f£x‰ñÔb43³Ù“V?‡ ,Ó«ÐR è"uöªRºfž=ø°)‡}Òž%Ú0´zŒØp‡ßˆ¸RÈ3¶,扂Hö ®u¸vt9?Á÷ÿ_M.>¿ÚÝ)ø#©|ßõiMEw>WÞ%¤;š¬qÊ®tŒ.sÕ¬ª4ºLàžâkí){o¶ˆ\WPØ€;Ž<¯¬+´&”ÄmSÐ,i¾Nß’(î韄ŽO M›N¯|.…�Ë*bh¶öËÃàæií§xèðML7ÂOó%øèsÞ 8Ro��ÕÇÈu�Ìa”[îžÇМêº{‚Á׿WÐ)\µ×³ HLÓ»i8oÏÚ�ù}õÕcý¯Ò‘´ßð1ஹÞBd.Åœ*/Éë†/Ž6«Gâ\•<„/+:|”Äùêï(­£´toB�}�w¦¥s��æÍ7±í¥1æ#3½7Eã/ÕÃùcõôò9Àì£Ý`HÄBç10EU?…u3¥ÌË�:Ñ_«â¨1œæÕ]¹?5�gç6²ß|pêA¤øY;´wãkÛä`9i£Ö~µ�Ý V£jQËÞ�ÔÅ*WòkD(äØùêðûažeã-žÉãÿÑç†V§I{qøûgF+@gy—“Unán{TPsôM˜)Ì,÷ÌØ_¿*´ØÇ9í0|b {i%üÒ5ØÄU^Cé×AëÀéØLßÎ'³¡­G°Û‹ØmP«ÇèÀ÷.ZùJ)ªù£ŸÁ@Lýrrïæ×Žýyê8õ ô3ωlx_oµòkthSô-Ê„ Íooa7ŸÝœ öÝÕΪ9{f‡Ÿ¶ZO¾cç6Nh~ ï …”¼îð\Ø=Tå ‡Ò™Ù…¶¡S4? b™ÉàY„mÿC‡%ž;+Ö Ê¸±ïéYpÁÜáúP¢î$Ùjgœ» hlÌ«¬˜§²îÞÓ~"DëËl‰sot^úëÕò"»y8例{›µ^Û?^z6�÷ÉïÄH�å¨V�´WÔpË ï~»ì½eÏó;ã¶wV¼©êžÐXfwªÖ˜å¨Ñ‡ Üßë1”"A_Ò×íâœ#NþÐѾÿ걂àö/.:>“u’ì`Aúè¸"(»p?Ъ½œñÓøˆäÆ|YMòZ-zWÓ‘ñ¬¦aÑR)n¦œìÖF½-½Ös²0ÓðIðúçü.ÃËÈN¬£m vät�2'2Q.¢ŽxÝ*ELGeÖdåÖ"€C…¾õ[jͭɲÈ=ᙃ=Xæø ïBdßkßxa N^�1>ΑföÖ0ùà_?õ‰ìÈcÖä}}\¥¡««]ƒ¿Ñ8/N¥\�oßÚ{o»àöϽ➔ynN.!ž”ShN%à a‡›ÙÍë~jÄaøÔcèÔaŸºÞùªÀ`ÙX#Û d³¹à£ìØ 1ˆAa0Rk3õu¢³ zýޱ�!7BÏe¤šÒ õ²p‡úSQø{V/è ¹\ßE×ÙºÜÍ®MÕ¦aš¸µopëÉô~( |9½òyüÈwÚoÜËé+ä4W‚Ï'¦œ¦ÚФâsÎaItÍ7ÁIøN³úaûWí—1xxêõÌ+™;ÑÛ–¯×"®Úø6öµóEç¯=±ø¸º~”uôú«”�/T» ˜È&®ý‘Ÿv:ý!|úˆ�°»ÕO;å§F,UûAsjy†G–`Å>|5Q§(� í¹ÄFy¤'¯©Æ/2 N©Ó»‚è4‡¹¨x¶¡ùÄøÕ¸Šá‡Œ‚ƒ/K*Ÿc²êy+?Û*¥CoeÕ'ð4»llª ]©[KèRf‰a'º 3õ暟¶j"¿±ñlG‰>$TçO¨ Ác½Ìž›ß �ð,9žößJ†Ç"€çòˆtöœ°ã6f#ȨTÞlµ ”p¼ü Z#)„´¶¼Èê ½Y©êãV,q銦œ©¦vPyÏì BÈêÕk/ù!߇…nûù/ †, –êTŸøGkMo”—àhº×r|À�L#° ^ÈG×g~^c�oA;CVhòñR£ö–f²—SgÁQ›å¡…¥fäšÉ(¤K˜EÆíèÌ¡7ài£k_õ[ÿ]EÀq¨û ¡,1>:DÈ™~¦BFbX A˜ÃC|:ó½²³ï²@uXko¼Ö$#:Y£3 ï¿Þ~«u7M>« »ž9Od?Å΋ˆõ´üL‘>š^¼A˜:X} ³´m–ª¶Ûƒ<1dgmD:Ÿ€ æ)&ž©�äDdÏè'w÷vŽ,5µ±i}Gô¿eŸ ßÏv6Ov°GâiÈFØq,Òj|Õ­‘f IkëŸ4Ðç™ÕÝþ;ãEßNóþ�egîØÕx/ñÇq*ÁæD«ðŸ\ã?0òoÛF“$°Q‡_¨´ß@Á~md†ð+Ïùhà=á 'ŠðëT?6 4<·µ§Î¶†âõ'IÖzÆlØY…�¿² ³#Õ\³|u6ÿ!5óê�ÆÎ§Ýté>;|0ãkãKÇ{ß¡#ÍâRÀKs=JdÕ’¨Påu"‹&ÇŽ6ÄQª·—½Ë©KUnn¨Æ_¾‘xÌʋώ鱷øë-ë4dâ~û÷�ë~jX+¸ÿ3ED™†ËcÛ+v¦K-OÓ§Ò*!¹Ê~w´-”™s#ÿqÞGÙï…(où©áç'‚Šl·m^Nï?=ˆ—GSÔë11mü=UgQ Ú^{9˜ÄŠ#hˆKØú¸ÑmCçÞŠoöóòÌw¬}zþúÿ|8åd¬(Xé?zUSÿ½jŽ˜9Óߵ漢î¬rø½L‹}rÚosè�߈I![Çû*‘y2_p2 ¼\ñã²÷"uQõzPéëɽI˜éæï™š�ä@S盾·oŽžaöÑÁvž)À?°Ý¶­k¬¼ñž7wO}ê'4Vù/«®Ò¡¯fÖêÇòèÍ…`}‰³Z‡f”&„9h‚n7º$lú--ý¿Þu^#â#›ÑeµâMƒ[ƒnùÜ-]½ÐžM²)"=…³^+9°97b™ÌâpçÅ]¯‡mè–¼;©‡Ø6í¬ýÛÆu� �7)Ôb”´9Ç|áÓ°x¹™xªü«Í ç­'€¢‹?ºO^p�¬»àäßú�ˆÌ¼n»Õ0ÙmòÂŽøàœ¿®µ¹ V]* Ë¾Ì¶Æ ïNÊ×›5ΰ›5ßxšw>qF8ÃS˜Ü‘KfTµÊ3ïØ$y[Ýb0»›Owìï¤J°sÔë)“_™ÿ[™¥‡ôwíî·E=‡ÊÎÇ;«¯"›o»ÆO‹ò-”´‰. ¤þ9,é察jgF³0ÃôˆhMÓf©r»½‹ñëÙ^sßsb n{ïW²Z:ƒ ò|y/Ê*®F“1'¢-qm`BÕt†RiÍoš¯<:øÂWxøt0¤;ôŸ N_ll•œí|BG_þ®fsõºkÑÔãyÅÆ¸až†ßz([Ë ©ýö(lð£Ûßn—eÙé6íåá‰;üAKv§Ž=³sígð¼>å½kµ@¿¶NÃ4¨ý-0¸s¤ú€Ÿ§gLbî«�Šmdõ^9¤s hãtÅXÊW˜W¡ŒG~+V]!¯BBû>«wJ½`ÝGš‘ÜX Æ#JæØ½G3̵äÅ+UIèaàÀ‰k-±Ê®vŒ.óÔìêtº”PxŠ|LÃ’O˜IeòÊ$c¤›�»@$E¾}ýõf×l{€Ñ=×`œÄ…õÅÇ(SÎò¨P_Ñ\µ4:hÃCþJ»áѤ•Gp‚>cˆ˜�&§u$վ黭ÛÉ1õš*ìj½ê�ŸB²iˆÈýǬþ¤“/,ªƒ]:Àúƒµ t´˜«” õàŽ’{kš§�ÝÂI&£& r(¯ ^ ‰ ’—âÔ3à�jF’# ç ¸Jj'†OjG¬DHÕS™¼Z!-Ëdb ý]¥^Š )&s¹’ŠªŽÐNBþ‘Ú¯Y_äa÷7ñì›t‰u¬í­žüÒwW�d4”Z5e”¨%u‰d+#|Hëo\â‹Æ‹«Uó+êª`g�‡‰šef #1I¨ÅyÇ:ODœ�güK|b¹„Êú�œkô÷Nºÿ…r½GF‰¿rì`%"GfK}¢á�¡Îzr ˜à]%lÄvƒhÙ¯ã.1�Ñ“�ÃÐG>ÿm;]€ ðPHMºÉ—>�Q7=ÿµôÐe ªHFJ©UA Ž ØûXÅs#È{ê*†=Š͵ ù*¥¦{8Áðaã�)�îA „’3lÜèãå¨9ÉÃþ©‡þd* ¢%=�²&õ&V· cþkP5ÌEÐZ i&�Zù#ÔT“¸� `­%7ó†VGXûžL–v¬¸)}ûëÎ ÍþDÉèÄ×' T7Ä:½ñ¡k( Bp�èÜ÷»GѲjô1£Ákª�jð¤O Ъ’Î­A^àÀè¡ç%uc„8¬Þ;ôµfþÉKÀ½s"íü*ÿ ø^=òè­°÷©ÝòàÀû‰=Çà]€ç¹¾zpr+8²Ø¾äÿ:³=ë\pf‡ 8ð}xäöÙEûÀ.3ﮫ'Ñf;·ìŠ„`�Èæ ÀWðƒ\àùláÚí _ã…Z®¨Æ3Ûa}×ï`Ÿó‡ØÐ’¬1�ž6âýF!—`ù«÷¸F£Fºg_Xã»dñ¹´‰Û™ôü^Ž?DŽÜ‚$•º¥‘\”uB®R®y2×l¬éh‘dùzÞïiºÀ÷3Ñ#q!cýnð÷õ~ºóm¬ßóê±m��ž;ÂA:nD»“B>TEÕN¼õH·ìîš-yÜã z¢¦=®ÂÁà±±í»5Á*ð>»Ïóí%}oaío™¶ »öxÿ¹+-}�ðeI8ÆŸ ¹Î„“}V¥¡"Ò¢Â0ìÖbh‡~r[# ˜>µSâß\çB€*˜Zg$h*¨­§K«•ïñÊÚiMkàˆp(Ï3p‰pMX)›âÅóý8km‰>ÈW}= ìKšDáBì6Åqž�9Ò5)¡1Gfƒ%­Øh΂÷Ë‚ðÝ"ý@g^Œ¦P\#›¶À ‰“„óa@Ähg‘¤NELûlË¥zã/5�m߳뫗;.”Àa½öœ)ѯ�hxËPú%ák˜íÉÉtúlžûkKä+¯øº‘<üðÅœtÝù9åÃ[êÁŒ¿B о/z”ã‡Þ¨û ]}` h¡ªõ3™ä^'î�€ôÕªðnòþýôõ‹ Ñ�Þ�alÖ2S6m»t�,/)ÉlôÀÚo©;ÑË´.аLdKo@u†“?7åí�°˜)µêlèMÿÆÙïý<÷ôÓ_?ñÌ3O<±RRƒF³ç¿ÝÝ®M^ä…èpãç?¶ä�÷u!,NpýT—Ïžyì©§ž|챕L:O_nFŠJɊňÆÍÎ2’\»7H?|8�¿´Úvø±ZûÅî¼{;xM¯BºÏcYþ4�ô– --¾¢A£Ï½�ûä^U¨Þ/÷ã‚k‚ç#0Ø-2¥øE`œ×¨I°' p}pa•Zßíøsˆ™Šyý0Šd®+%7óøÙ‹¹áP¡Z?�8B”Ï_Qj)©*Àfl‰á÷—ÔˈD-=‰�áˆv8O'“µ†áØSìhš•ŠÖVlHþ&„*Üå<Ésˆƒ9äs=eý] I�|¤Å Jaƒÿñ˜¾f:–#…Öa-®Ê…2ø’‘Ý™çO£$'š‡ÁÈùRÛŠz¡ ¨ˆªAôÁ¼O•J7µ¦^œ‚qLú–M)eɲC‹»¥ÍþÿæÊªÑiIÜ:ebä"y&“rà°˜×m€ìÖx ó9•C÷°�&!‘G!'ÁµIŠKÂä:H�KÙ�vRpÆppµÑ°?+À­é4,ZKÙk±µ†6d_�¢˜l;Â/’ ÜCâÏÄ‹œBxBäU•D©"A"!ÆîzYYÆaRc¡~ïéí6²�µfxc|=2±ÏŠ4ß7˜{|³ ¸+Þ:?¨5å*$ýV°ÖÁz] ¸!Zs¬vç”Kº4ó,[ë2 MvNˆ cšC�Ô9*ot]‹­)ÔŸ p¦h]ìɤŽåcšì>Ï Öf7Í#,¡Ï7tÝ©w]Ss«�$kÞÈQ†¹£ã ÀDzÉÙâ ßhÖuü"aÝKM@Ó‚1å!®îÊ“$Œ¢0Ô•µžÈ{”Ì*`‰Zú ? LýPu«EšeiJS‚ûöÔuS¬Áô‰Håœ\«C¯òµÍ‹bÿ|ºNßžÁ�ËÚwÒza/ùm«oŒá"Öe ÈÌ)9ó3cgŽ̰ô'±»ž•íòæ<ÆæÝ“`˜.ÑaïîÞaÛ¥T¼Ï¢A†zƒ,ó„Ò°,0€a¹�Gij;ü$)^àl»ªˆgG©fJ6^‡$Úªu �[2s4l’½öÀ)M ¾T¾S¦ÍÍ:»ªG¼Œi“_Õ÷–`Q�-†!&*…±ü‘Î[üãp¯ïÍ~™§Å„p‡0&ò%4_žúQ"¤Á _IAÑixÛÕñûÒ†®ëYLžôXhÂB˜…qè+ óЀVlˆï¸*.BÚ|è”´im¾šGwà!–”5 [S`ã¥sucïdæË/Öm4¬èï M¿áVWáÌõ¶$'½?œçù2Š8_Y€„¨P¤fäû�ÇB@ Ql¶õÒëSgaPÿß©òÌÕeÀo8_Yæ MO|ÓµéQA²ºoòUÝ<ëºÌí&(_>±$LËWû–ëÕMJWmkáÞÖð²6§Ä€\ÀÔˆß# …ÑÊ‹µÒx(»^ˆyØ#©ù–òÖ|ÙžZ�¤",xDvÀ¡¿Û\<Í—+‹‡SÕ¼-X|Weomc+U·Fø†DÈñËnúDbR½+fF�.$²ðÎ:W.{G§aËá¼1ÖÒÊ�Ý·ð�ì{òL§õ¤ ó‡¸ãÜô²h6”éø7èLÞ|Æê|[ ñ}Ã^—Ôä˜<_N'„«s•‚—*¾=/„X}šcԃ˔nf¨Í’óíÍq*bM¢Ë*6g—3Ù.Yó Y›€ƒSõ=)íÍtI=KÚ¿”Í2mɸRÜÐ3CÂ<ƒÄ¡•~Dˆc[çHW˸i$Ör–ÁÖÙü±—';Ö¦W†¶ˆflLa ÷°e”¿^O§‹?r¶óÚõ¾"eTïÔ±–>žG�VìÖN�XGWks¦Þ©y¿?ˆHºé/ËÁGJÌ0¶=C1sobt*�©q@Íx>ê~}Vy Œ¥[—ë$üDX‰Bá2üŠh¦|Ÿ•<ÌYS/9#ü�¼dÑ _QwñßÊñÿƒo`("h‚þѲþÒlñ¿öóÎ}Lµö¹·ý ã£ð÷8Ûü“Ó)¶nÐcúAeWbÿW^g¿4?çÿ÷äLz阑OöÞu*…½µÿÇóà±»Ï\N�QÎSs¨W©÷©¿ÐÐ4,-�& ii´#týW†,Ë(`3cLoæ1æ.ó.óG– ÅÊd±X%¬ÖËÁz‘õ�õ#ÀF±óØb¶‰ÝǾÆÙÇ‘9箑û;/ˆwšàÃø÷„="‰ØK|]2"­–þ,Ë—;ÉGnбB~¡V¥Ú¯©.¨~.Š*Ú(z^Ì.Þ�8MhÂÔý•‰ƒ€¦´=@¥�øEM‘ZOûs²gc¹góßJ4–Šà_*ÄciÁ}÷BÕ†ñS€YVhý‰5˜wä¿*½?Å‹†UìÌC‰ÊFñ@;œºûôÈÑ|^¿½ckà1Ow»N‹N&®”¶*PŽ]tÚ*Íf�ìa�dZ‡¬†I8œÀŽTvP,‡+Œ�mÇ0ÖLUü�q‘Á}×´Ÿ‡C縆¡K§ÊrmÀkp”Àãcyq*ðô9ÐOÂåMÑŒºŽK@Á"œD�Y¥æ ’ňjŽÁ£žÿHœ› "æKE44�<ÔýÐ|q;Ÿ+³:‚ ä.oÈvÒd¨àŸyB¹`š— ¢ëíÏÂ3e,§Prp±š–M#–™Q÷KNÜ “X”•{c¤Å­áÞµ�åÚ®™§úÓ^ /Ùõ¨2Ô@fý‚#½›Ü)pÀHÆ&´'LÙ¤xÌܺ„>ócP)ÇOMorbÌ ™‘œÔŒÅ†¢à¯-¤´‰tL§¥³IÏÄö¢Qp/<ì‚ïpz÷µ‚R„Áb*;ÆïTe³\´¿¥Ö¦hbÃ^Âe“1Iô™ÙyÖ.";)D¯æh* ÚO|8÷¬éàY**IãÇCç1AA•šU.Éj¹xtõƒw�Bcnãj´�Ì@b�ÕA¼ÒH¸Ã"z�Wƒ„T“@VªÖë8îä½[Ý7Á±÷ç£áñçÀ7¬}ù êv Fõ b°™t.u5¾¦Fÿbïw‡‡ç›¾ìùtÆ?JÔË�±piB‚è¾/&Ñ‹–êÈõé²(·o+P„WQ/¸*±ß}´xN*!v8bù�†ëýbM©á’f•`t¹ŠCòÊ‚ÎJ©(uÆ8’ÉNüô¬y„u-€ô¤êøé`‘7j]ìw±j5N)9ÀAª˜(ár˜ü>Hîd7·©BJ›GiÅ„ôr:‰U£´£r3Eòý.¿Éöä²gæ6«+箃”$: fWË–&º• ¬64õHT=ªê6ÅXÐ"ÉŒ”ZPBlDãáaxvØ’Á‹‰|ÐØ^­ëÙt&+eóçݧ–+u“8³-Å„œåjTÌ>‡±R’¿É™S–µPrγ–årÂ�&ÉhÛ[ŒÄ Aiô‚ÛÐ1)É ……bP2²‹„ï±y—"y'àçXM^-DÅ=½¢5“® nWÁš7Š–ë8ŽQ%ÚTâ¾€œÚ‡®6F iþĹû©§íŠ Ìèø“�dÃc®ÑawO{¶µ²?ò»c£±ç9ñèÐYOÝð‰ÛÇ;,üZšy€Üì7JöÖñ[sY³ ÏLaœÞv÷_{¼ùÆlËX[£NÀ×?žüp�€'á„—ÂDÌL˜$·:ì>M©žÃ­�ggjÿ»É[KˆyÄÕ ƒ~’z^© *Â(\2ÝÄá÷÷÷jÐÀ—µ’cšŽ¾ÒjÓ¾\š{(`ÐîaË’fÛm$É7?D@-”dif¹" ‚¨icaúÆÝW­£jÙX¿ŠXÜ=9±R¦¶&ž²µeCêËÚÑJŸ ¤qúï�ì k<Ø.ÿ¬�®oFòF³Y ˆjÇÈI²Ñ AÍ©" øs!�¤› qÅhâÓ‘¶“#0SšŸ†Nì�D]ê 7Âq±@…MÉØuU�/o2Ц©bµŠúT1+Èùò£,Œ%�ž6ƒ 5¦qœm HØÒp´‚q¥Î °¸±HÍZ? Áã�b·›í¢si`biÄ(üktUú¨Ñl;ª—q›e“Á!ÛS=~¿w‘BàÏ$^U jGòX.yŽØc‹ïþ�Šï@ÁzZ wr;\ܬÀ– ý_èëî[IøÅÅ$y®ux+m— H(F¹Ø@l@m`!tŠh�æ¥NÜçD]Ä83�â4I)’•O,Ûù\G:^Ïü2çõ�7,$ÞªX�Ù�ºþž¡¹ ؆&aæO›Þ¢N‘#¦Óœ%²·â‚'oúð5û«F.êÙ·�\±KK¼Þ©Xc'sC|e‡ó±]u�ø2çÚ0égAM`Ìý:úgÅãÂ_ìûôo±­éOx†"‹ûL0c>¨1/þ½ëß¿C$È_ Þ/òÖ»¢f›GqÅ{²ÞÔØüL°XF%ü@s Nß#ãee}ü‡òAÙ0†%àжÐKü-yæ…ÿÀ5χ2@ueOŽ Kh©üÉØ�>‚¿À»»Á•k…«i<ÊéYFè*;1.{Š,¹]YQ÷åz&56ÆwjpºžZ I6ÅкŽ{9‘�ÅïûZxž 2à€Eêà’(oÙÏçþôäý0ñl;ÔÒI+�Qéì #v<øŒÖv¡-—Eqˆ3¸ÒÄ {^¯!‰ºLŸ£(&Žñ>_–ÖÜ;Hÿïq'£¢¶¯À‰]óŠ=Ý ”óî¸ñâù�v’[¯7o*¦W¤ÛøÒO{oý›)I,N×¹—ôFp’Ùè«Êékëä/½]¬Î½áîûµ³!{«£Ñd)@I4 «ß¯{àØûK¡±]EÇ%̆ëÖ^s\ÐwÀgy¯H/ã�Ä!—#%ž•ê†ðúþ�ôf�æJ‡‰ï×,4�»;ôz®>ÉWÒ‹í18-Ô{Ð,K�G?c1ÈQ~¢þ»:’Xgº®»‘üéÏ]ÍpýE�ɪ—)ín¢×&ËùúF¹=w˜¾ÏYË ¿p¨%N¢ŸÉ skz«!ÚÿâXL^ÁýÞ|îkCXØÿ0’ÚQYÐ!.ç­¥ç  '�:^\æ°âþ�n“¼ÄòM —{P—"üf•·I©;¡vpÌþ�¢sÛ²D^¥ótQ§žd˜Ó’ jF ЩÐëÂB‹�|‡ˆõUPš5³LM3¦� l’L îy›PñšðÏôºå¤ß¥lJbìÒ÷0øƒ/ƒ†.¯’K†üAã^š¡(ºH„ŠæQã-H�(Ë/Y(ƒá(Ô‹ N~ïPIm˜ŽÉ4îKÜÏ…1”ãaáXì%4‡ÇR§š~†˜®�c§Ht+¶¼CS � �@4¬´F4)ÈÿvýQ�!°ƒì+"’6ª5ÈL2)Mç.\ ×™­Õ›OÄ2rþy:5ößB®¢(68#ØÈ®äÔF³ïq~Ù¢Ìj(b-È÷ø’Ú4ð�ù!íä,Oàj•B�ª[\-Àä�·!É%¯v¾FÍYØ8Öé†Õ¸ÕJg†@A^–£¤×5ÃJGÓQøvœŽ$'b�þé‰ÛŠîìʰÖ1\Q‚š÷²p$=°Òx¾áå¼^¹ÊœJõ U‚gucæ�j'.Ӿܚx:¾çX,EË š¤ð�²#@w[+ÐŒ›v§«$X½žÜ®!·\™@’±Naht.…aœ>c¤TjÔךþ,j{ºÀ.m*¢U©IŒ3O‚˜³"Ÿ^Ð4Q€–¤A0í)"“8W˜ARÒ⡵‰Í¼ ÚNæ+iMmZ÷8’•¿É Ùþs祷è»´´‹îaÀd»BŠ‚®z}Y6,´´_âä��˦l†ˆJ°³)I,nr(F&Si!åÒhÄéq«™yÚòx³}Çæ:‘̰2…¨bQºÖÀƒeÁ÷}W¤þ}<¡^Í/v¡û¯ö”JÒæTAR± RÑC>Þ]i¯@„ä' *(ud õ1.°¦ÆN•â7-XCë½-çŠ]ÃãXZòPlœÔ …éŽúj+¨)‘ñt“OE¿DE5!¶rI�©w«¶…Rx˜¾ìBQ\Ôù˜]y #rX‘n¼ M”„^åð¿;‰ Ñ °ßè`wy‡ΧaM†LÐøމ£HBU˜ÌùƦ›xYNÁñ*ÈwæEhfa{Ób6F1%5‚ùÐî3°«á�‰÷×èûaûuŸlˆMa듨Á鄳o7M�ßd=øùóÇb]Ðй îþîF8²�UåÔç TX"Ó²ÓS2™œXÏc›°é�!é%€ƒéÂ>ŽW£&h=Ò¦0͜ڎÁŽÃšNœœ¸çÄyÓdx ¾�ËÅ>…È%k×�FÔh¡:Dö2Q%�Ãæe(R#XSÀKR g»²i´½€¯"KZ‡ê1{-téÆ`ÀJÎV:ÔH ’ìŠïØxWÐõÞ‚ÉÆ:?Ûæý`>Co 0,s%P=é/÷aË1¿?¿YC /~O[‘ô‘�2Œk†D¯‘äÕZj)ó„k-ÜÎwšÉ¬•¸uÞœé\AH‡â}ÊvŸ*-沫éõºÌø¶örõÊ…no�ÕG°o¨{ú)j6 *}– ‡\Ž yPr%A ÿ`rsÈü<± ½Å.o˜üAóÅ?.ÚæKï¶Ÿ'æ½ãY«3Óð‰–¨bzÊz(?ÂB˜ôa2ßýðdLuø¹Áâ¾f5'ðü_ÀV îu³æš²3‰Øe2Ü5×Ä0ßf/¼Ùêtšýþq.`Y�]ƒ®Ãwi»ˆÈÙn^{!¡ÕE£DKÝÆ÷µ ï«.!-iSuíDx÷dR _ÑŽi½• }Úa@ÀS ð¡7™ÎT_‹EYÐ{VÉ[ÛyZçI«ä¨ˆÖ¿cjR‰!ÒÏýàük<O6ÆSy³ÀŠ#([Õo'Cꬫ™P’ÎßlžËdŒžq™÷œ†Ëß0‘óºÌsß»× ‚ºâ‹h%ÞSRŽ·¹¬÷®×¢ô&T8�*R­j3yaQÊ×Cgbî¶ëàåÓ5ä§ôLÄ-Ð÷˜Éa#}LàaèðU$XVhV•ø;^ëòVÎ×C”s‰œÔïŽ7”I`tg1ZÐÏ%F ^t‡W7Ù/醺3 ˜ÞÕª ¨HL#ù,(̵\—@¥êÏ‹¿†Göà\özjíòÐê àï$ÞÁ“ï¶à‘ÉÜ 3ÈÍ%ÞL'è4+ÕéB7º_Ϻâì î]�%dÐíø§O#@Í‹í_\þ¯oü<ï¼_J›c:’“ŠS’&øHI%)ýÏ„Úà Øáge¾=쫵6󬻭ØktuE׈væç1(§�Ÿ“¾ç—”q73cÍôÆ€oŽ—�5ä&émyát¾¸È+³û^wúDtLï|ÆIúr&¢+ÔÒf2ª8�у1’eŠð&¼ÀqØx"è;”˜�+ÂkÆì%ø?Ö5ff¡p ÜÞƒëªÃ*ñÔÔ­³ÖÁ,�¥TÛ¼I1ê2žDdª5Àj’6ž‚AEp0þAYoeš­uâW«.”Ô¬$ÛýºÕK×;¨aYŽ©Bộݞϔ�#!ð´{£Šœ8·@Í–j%DE«XV©’,3“»¬L_êáš^H[ñ‚†²4}»áK�4èÎGéPÒºŒ…Ÿ)„�´Æâbr†ÿõÊKÔÛN~ÝŽIP–ªªAáㆂª¼)Œgú^gáëgdû=#îC†æÊ5 ¬­s�Ü/ýÅa9£Ïx³®™ùõ o dRÈs–å”ʧ¤½ÊèÖñ h"¥å"9 ¿È†F*å0%AFhºL=ÊÕM@ò‰p°ÓI‰B5d‹æN§Õ¼-“‚çž!±ù.kÉÀ(ª³L"M�æCKóäd IãH8³‡Œ!ÒEåÉB³Mž$+°–í>ñW²jØ=ûÎi“>Qžð‘½*“Áñ®P®©ùžüÓH·níñ¦¤O•‹*õð¤Fä$?:^ 2%‘/º?-³�±¹¶˜q¹8æ¶;~[)/i·ïa¥z±¨È„±™`›ˆ¢”¨$ ˆè:ŽÒ‰¬$l7º†: s–ót:P‹.¢:ô˜ ×QÉJ-•$l‰7šM¿/oì.G*ÄÍå+\z0yÈR}ÛæÃ°ç•ÃVÊ—¨ë V g§Ô·{2†B:BæÓ²òI«}}é Ú™­f"»›™gUbLVÆ,ÛÞô�r¹ S“)¢Áˆ4>'ÑɆÑRÒò#Ñ­”�í:QõY&M_*US©H’å$Âç)q¦�{„»`BcÍ£,YzH© ÝZg¢ kd¥4¡:ô$�½kXjHÓ´ÖêæyκÌä¸=æo-Üj�_aÇ¢¢š Z]WIæüK²x!rE”IÎ!ØÃ ©4Óíï'/Ò”à /^�›+¿Jc.�dt]DiŒ~GÜ” Ìóæ)Ãh¡T_ € 6âè~(Wº£x«ïq€á²9ˆ0‡* È¶J(Ö�ØÒqhAXsž%ម¿’v*òvm5tlÓ­u·WPÅù Á£ÄȘ"Ñp˜Ð›zÁ�°[À4�cMø ‹Ê°6¹J¯D©=®ŠÚ.Ø©h¬JºiêèÉla§"™_`œe¶€É6:ç„…¡ñ—&9“'&TdœÄ&1”žAvQ¬$o]Ð�ï¨x*•Òæ¤ÏÜ/Y`�å1ÎãøúÍ)±ÙÅ™Yˆ­D‹Æ§³SýŽngô±š^ÕYsœ·¡ ,…–G‡Š0’?Žë@q¶Ã'©PÝÑÙM¹›?Ý(A–)úî†(EMÞ’Ãqì©_¥©@Ãá~xÌË ¾ï_tÿ°²r�$b£Ñ¦af'Ê;$@1¡XÓž€P’:œá1Jïì–±ý ·`ß)…²7tº > A¼îˆû•a=ñ\ÙbµzëõN%›qšÅò÷8WoÖ•æµÇ‹¥jŒÐr�B»xÇ„“Ôˆ@!·ë¸U0ÉB6ƒk^¿¡Sñ[� >ÃtW š9˜[äu/æ-©ÀiïBE«K´þD‘¸Á‡oøÙ®ŸËÅ-íïÅ-Ðð ’84+9v¡Šp¢¤N1é&®×,îð;%ZÑŠ¼÷e…»fi|<ïõéâç±?&R¸ öIœI`Á¹,#ÝÞahQ£i¼H�‰’T�‡}-’y]°“TŠÁÎ0BªK$üc­Ñ_ßW6ô›ãß’gÀ½_Ùa6„‡ôÊÍé¹|�?_Y6¾©ï$Œh•YçÄ‚²ÊÄ`®E*%KÏê2�+k•Ê“3|Fpí=GjH§D¡º{ËÒ eIÜTýŽ]$åkÛÅ™èî2xî¦LßtFÙpEuRŽ¥ Ø~‘µšmm�P„="a_+öòr¥R¯ßeÔ�3#§11âÊ‹Ôæ@³JH5V™$oMtw,aøUºÔ'‰‰g Ül�uÆ™ùêÝ´Qþ��°´à|µŽ²ˆÅ3Ñ`H+W `q¦Bí1ä}¨µfÞÎT*"MS‚g¸`'ŸjÙšœ4¤3ðûª£ÐVjñ<øéP¹EGüV“ÉfŒÖd„Åþuº.i4¼ Ã)ƒQÂøzUMM“yjÙü³�v_ßÊIu£Í«Ø7y®(†½ˆl¥d„�RdI‚ˆK^K,ÎMÍP $Y:ã ¼$•¤2îN¥ dÌ£”Gl.‡ ÜLôWÉT&Bi}¾U°¼ i(Q¨,²|m >®()¦�Ör·&ï”DŽ¿~ž$?ê §¤Ï@<áNKá€@5‡¢üa“õððò»cìág±ÇŒp¹ü~s»!¤Ê;´`œ¼ØÈö0E¾$½ Vfð<1ðÑäKFÝ|ÓÉÁŒc‰šãw÷"o�)¬ƒ�Ì×VÅvÀÞOE„dSf8pz(äWiªciäÊÓúêó :Èð²~?x?ÈK…{ž|þÊt×£>p-êÄWЮÂ"ù:^k� �„û–V/ÏüÏË[=ïÀ…Á,œÑ~„ Š£1e.å°åg˜ºÃ‘’ÝAµ’æLr>¾¬|½`#[×Ê›ãà!1”$nD;F— ÆGð\*ôçÄAÒ;cʼÁz‹Ž2䇜Ψâ„o€m ±Ã/v÷GK–†† 1ZM¦›²úsŒ(ƒÕê7SjßRñõ÷.päSžàÞÎÄÁ˜Ì9ªéÙdŠZVM†©¹‹á½—²ÇNh,¼Ïzù“b¥.Ûi�OŒúã8âó†âjrv#OIõV–�báù¹¹Y‰Ô’p†x„6Í냰¬3&ëóËÝHÝnL…Õü‚ÓÆ%õ»)5=9é§ëâp@Ñ*å(©SÓ+u{2Ê¥z‡™Àz.æäõ[•Í-ˆ€eJ8¾H"ÈE‚8ï6l8@8e­19/*%àé´Œ� ¯3αÑñ=BMÓ]@ΟÝýϯŽ¢õDPÿi=Yi2t|OÚ~Љ¬¢·ð]ZTU„s×̄ޱ¯É!g '¦Ã¥9¤ã‚"éB~ðýÁZ§l4&ëW†Áà5ÃFFðé/i¶ÑsšÏ? ËŸ£3<?6e5äãbÄ)d³=¹c’Xˆºb5H2D'ã-ï8Ž�kmǹRB —’èTÓ*9nÈü1º˜$ \4�bzô îGEXÿ£€ [©_4”²wÄÏ(ÿKÇjoN½tÚŠ+_ê¶n)4΀xÍëôÈ"|ŸXžH9�ÁÅü“étH0/*xÀ}s`�º±l^üï ?g=�=e'N~,ÍlØe…Í>Œ‚Ñ‚Z5¶VGo3»ZÐw ,gj‘óŠ~ÜŠŠóQµ€#> REØ ð²$ª9#@ÞPVGôMb¢A”ñ?ùýv!ÀE�Åpž`Tpût{“MOÝáÞ§~¨ÜÀö©¢˜Tµÿœ6 À‹‰r�pj#ñ,I.‚¶^VTM*Q‘gÅÌ™1ïcêÉÙ°ÈÚµL*™Ì®OKƒ w—½#{‚ÿ�6n Ï¶hIÑ&hÑ–ÚQkXÛÞr)IÞEÒGv.bN$/s+\IF™Bt§‚ b!*çdQ9ð皊 cámA¥¼�Ö�¬!0å}Ó|çêƒ$¨eÞ¨mWjÕŠ­é5ÀB/+HQ©O#n«þ·$„renkaWçebÉ“È#Î@;. Téº{ýAšliUQVR0ù³JRukÎÈ’G²é'é¤ÎûÿfÝn¹-$5‡ù0ó–F˜ø_&¾Î<‚-#zIh˜Ïl»Y ;àJ*ˆÇB„S-§Â§uŒ$‘6eO �ÚGA"ö�rwtö ¯»=yS5¬RkNŒã«%…„+/ãÆc«3-`bËGŸ÷< &´ 4�ªs=L&-�j?'ÿ©¹¹È…0ÐqŠ bˆÚÛBÄv!Pİ¡àœ¢·9eÁMpÌâøÑKÞ®�|2ö�ðgÎÿ/|É÷!�}Þ4 ÓnÀŸÓFÿ1jÌ̲b­½¦~’òZ„�ZÝfÇË_ÈŸ?{�þ´) œ ¡Ÿ{zBŸÛl  z,m´y±Í,+Öãùý¯G�y*¼¼B-è§”’)$×Ê»£ ç74Ý„î{ð÷å¥eÅ……®»âG!kØ>€‹³c£õ”J=YkýpÉ¡KõŠÑ¨%\ó1HŠ»ÃOxì;E¼ \žyg{kòîãøyCØýÏðUk¾#¬z.Ø7dg½OÆ{º™@_Ûà;¼ö9�Íî`Ô›ÍMç‚ItÌ‘TX^­Öý4^&l;xí’ÿ¡Qý#bk/� »j\C“�îÀÒÑM„)JÀ¡¤-£§ÑMt\Á%e ° ‘ãªÛLg²wçáâÖ_t3Ü÷½z³FšÍHjjDÖwq‚Ú—ˆûF¿™Á¼C²„µþàSai ìÃÓÖØEd•Z,,Ð`$éƈ*ð`å…õ!Çg±âÓcï~@`~è"»¶Ùýʃá¾ZPÖ’�ïÔL'*$ÈðþEŒØ1êTØú’?x-È.yÙ’“�?Yv’Ï×y[Ÿ—‰~Óiç_»¥]^z´ë$\ EÐ�Q,áFDùÄ*ä°^NÍ‘h5­«@G®ÌÃx)ˆ‹•"y>êx§/¨°^¶Åtöí ;t8ZÝ™™Ü‰È`W% w¼Á³ô8Ø»R5ºn�¡+qx#4¦×Êò¥¿‡s¦à¾¸ÛÒ|ƒÕÛÅà%2‹Íù<vš ß3Ú**¯¬öVÖ€ð`2sÓ0Ë:¼KE| že +.‚¾ÿ<[¾#]£®;¶ö³!oòãÆÚD^;ÜóÊ߯`*¦õÈ&ŽÇ½eR¤AæWþR0Jèg «Ï)íë�û*�êÑÏ_ÒšF‹­ ƒŠí h¶û©”T¥á1¢Q ‰^•æoÈúë˜õ©H«›Œ_Ì_(®ì�4…ZÌûq÷ø$áLÏ„C0÷“5 ¡ð$ _ñšÌ·Ã/†ý}V<‰R4wCƒÙ‘DïKÓÁ‰]5¿O4ûî‘íeÿ¨´QbÓt•¡úe#džsxZ¹^©0ÐÛ„f¼|¬úØâJ¨P¢ð’ßî‘ÀGH ³• ÈÎé ·ê]Ü ôŠ=êÓŠý70žŽaÒF1M6Ú>Ò£C[Klkm¾šDs2ûúµõOê)hOàÛœ>4è üC"N£“ȇ`‰*â9z‚:d –�FèÚýÅ�'üð’.Q>'F ÊÑóÿ¸Dl�¹îÓk´¡�NÊžÀ; jÌ×/Œ�5²›¹{ÀC‰g׎âîØS}舴¹-ØNýYºJ,säŠÂ*½µÿºà׿ÿ/é½ìŸ€AFì…njts’« ÓlpÔøYï“Q²þÄ ~‘ëd™¥ÓíÒÊl‹WÕˆÎC4a•Y´¡¿`np‹�¬!ÙáVKIx¡À‚CøÅfö\5?eþ-šýýJ¯Q-¡ 5B¿CW� | Œ¦ç”vsVý�å0bzƒ:²àE+t‘B$l¤…Xñ| ‘‚ÍÑ÷ÿ8]AEdˆ$ÉžL[„ðÙ3�@3Míhý¦¾‹Öí+‹,Ë��’h ÂÎÄr·ÉE}ñ9ÿ�ͮÓŸ¬SfB[JÉb�ÃÓ±-5‡¢‹ë×.ÞñË¿ƒ’É-5Ʀq†…ÃË–!h¼TUAw>²ŒÁ(Ñî¼n=)âH ìŽoè6fåFD.ë‚�–H4Ù—�º�Ò?-IÅ #Qª�ãÁž„ aŒ¸¼¦Ò! s•FÑ„#`™Ð�D¾³Ík(OŸº«/ØW ݸªçheà ÂeìtIÓ×LCí@ûåÕ²ÕKtºüÆ�¶ÂSS¥uD)ÈtŒÆ¢ ¬UÈ’´Eš*âSI½UCಽ£U2Ö�¶wR™Ò÷ñ“ÒI—©¥Íêf—‚ ôòÀË£YöŠ9‡ëË9,(-×ñ×eI˨kWæø]÷ÄWØ’ðr>{‹«·´=ñ8 µÒå+]I~ý\¡¦Ùsr Ã<Œ'™TŠW5Åê t{û— �¾„Cpëö–© ƒ2º/›¥ØƒRÙ‡*×�MÆ9�~Õ&±×Â0ñP/*ª"È´WH§D ‰��ÇpüÐ}4GÓF:�¯ðµd }4�І þžolu5λy¹ÏóÅ�Cœ7Yœ!¹¸ƒ3®E| 9ÊËx�ÚKû�Ë ì!£ žpÒXÎ@ƒE*_ëE#„n3�rF4»L{a‹UÐÖ› ëbE”ïYçðpÙ(D”\͘Ó%Éž±]Ü¡e``k.V⇤ž&U|–ž–%ý-Gn�6l/FÜnç¾´m°Øó‘çË+�øü;ö^,7/¥âžyÒ5s±Æ+) „Š>bP_Y:‡“5»¹ÐD2owjÎL ó ‘ ÃË€r:%ÜÇM3n:v½w]8ìÑþçÑIi©ýЦóÆ çBѳØr› ¿ÃŽ6ªŒv¾\ˆ(dê5DFP©ñÌÈ(È�Œ„í$|É ˜q¯ŠÝµ1OßL£ îA`Ç!9Ò¹¡Ñ�‘ ¹ç÷S݇��8íQòåþ§oš|.^ « ¤o¸¦\Ï*sº¬{MÄ ´%�ê¨ ”‡ŠL>ï��ý¢Ê˜ |­ŽcÙH0–J4oï æÁ„ÆÀcà<ùpÇú�r�\ÿ¯´¯e•Èݶ��/ä"N…<^¡¼QžÄ’I,êxPÓìQðã"ëíU„=Ö?öP«bû³3¯.õÎO9¯ü|Ž' »6I =ò å�ÂÅOs9Ñ |<¸ÖÊQ¡�?ˆÈó‡‡yA��Nþý²|Ò10¡‘;=‰êú#’DòñPž|ÖúY­{DZ+Ù¿ïyñÒ—›Éýz¿å–!ÔÏ�†þnQNå#ÇÏçF±ÎÉ„¢äý®�´]ò5[ªÝîÂé ó[÷Øÿ\B¤øøŒÉ†p”8Rˆ"ñ‹ö(&¸K8‚½&ŠZ«Ø�&ž¹*êhHC�•,Fó Åøûb'§þé¹�Ž#n<[Šý\/¯êïkã*«Á7%-&¦Õ)¿MòÜã—è#eö±1‘r瞺*þxŽS€GÙ! ŽN»{Ô±Âà·Nu·]".- ü·êS­ß«Ÿï“‡g)°rÝS3øängú^À–›e�ߤʶ´xaQÒ9|é1Od”}ê í°gµ\Ul·if£^¯–ËŸ÷Z VN`˜tVÎ$1øE§9qO¯oqU]j²ý¸I ™W²¼ÕFe±t`PV¶�”üÌ´ÌŒÔhä·_óC¢Sl6‹Í—*Ë –}R[ÍO�Þ`4ÕTëeä÷Îîtÿ³±;»|¾f_z»sÿ±¸}§ŠäˇI¸¿¬=ÊUÕ…ÌLqº„rUm28Ñô£ÿt-£Ï£Ýž¶!0QƒvlB'ãWc û#zBš�€ $[SdÓò¼4<_®ÕB™…Ž…ç–­×\ÛÏ¥KÌ q•XQƒ( CÉzX8"Œ¸Ð¾gĸÚ'çÊRd`Hˆ2çãm…¹¸beó¸‡ñ_éh¹yb‰šÿrôlZHq»’Ù(jþ> EØFÕqËV/ZéÓ‘áyj¹?_‹ìø‡ÕM ,azߎ×V-«ºâ³ÅÀ,”ÄâgÛ¦ÓÖ-àb• GU5FÚ_n;Æ×ùRÔp {+ª)¢êÜ�!%˜‡kòåk©w{DNŒE²äyæh3Ý�uïã;ŒâàRÔ™ìÉ1­„÷à·øöÐ�`,7h5VÊ©Ù42àV$®!£ Šä¤ö Ìæ3iahfTÂ0€ÚËf “º&{öRN> „ùl^ç8J%¼^²(l–�#N;íR'ò_ñ¨ñÍXdW:Þ’ž¯µ�hTu“qçöÐÐCv¶‘Ϭ€ §T©Š ¤…Üx™j>a[ï3KõzkÀšVù°SºlJ&‰ÅÉâBn¶GŸå¢±TØ`õ¢)Òd@�0Ä¥ÝgËŠá ʨü=^Pµ¤u|…‹ŒFú�ðŒ{úF7F­ó›Û¦� G]¸HWÞjø§-�ä`Ð’1gi‘é÷Œ(I›zÔ %üê>ópÞ·ÑЬîQ(§4ÉB.åvÉ_£#0d#oæTQeI%3>[÷3µÐ<}'´²úÒÒE‚¤M QÎfÿÒwÙ"39¥îÛ.~Q©ÕÓo^ ¡“¤è�Þ”\”ÛâtÏÀýJ`œ�\«Kµ'14–47á@“GÕT“SÑ Š˜v`·#hQßeÜò]©çœŒxâ¥wÜ$Ä˰ûhý_®BdµïœÖ ±ÄsåÑëËòEšçi²ð‘ ð¿|²�YÉK“IR9¾gÏŽ4™¬¨&Š¡a?)Z œtÚ$7$ó©Ah²¾’7u¶L4f/-U*װ޵çQ,m5µ~wÁñ$Ë(Wý·…òÛácñ8KºIæÌb±¸ã:¡p$ 5 ÕP4áfئ€dŽ{2^3gPDI»BAw«»ë@’^D*E^¾±ïÚ›i^b>£*ζªÛX{Žü6öVY‰‡š ~�¥@E*å0‘“’Ì J‚o9¥­[¤l/¦ŒK™(!CŽ:nýÌÝøÉº%ÿ«íWJ·ðòþAÀ-uëÄÀzû�xú£_Æ®G‡Zk—÷+œäf (œÊÈ­…‰ßüiõ’=Œë¹Æ|8"[nrR~‚q»vÐŒŽÊÑóPë®6­Ððû£Ï˜†û¸:éàÚhM]{µ*Ý�[óÜì||¦o¬Þ �u`[ÇaWiw�…³ Nses�"¥JÇ&Ì[ID Gú=7ŸÃÕª3”Ì@Þq$õ7ƒÔiûY[’´s´ÐÄ¿{#ÜÖ ISõ8'M!\”nrÂLi�Vš*ÕÇLD;†º`z£F»óÆS·„›X,Ñ$.B|,¼x‰7��×ÕzQ�'©ÊÔ8ƒŸ¬ôèF °|âg�ѬGàr”»©x‘â‘qºÂóÞÑ©ÉÁž¾ž¡AïLpnÒép%¢³S3QƒÁ؆zqn¨ƒ¹2õ”H¢IEG7$Qdr©X´ôÂS EiíAgo{¿7¸”T9ÕÜäÈàØâÔ€³í¢][™T{‚ãŠ.«×ÁÚºÕoZ©r¬’T.KÚI¦\+!ëðàú,,*NwrSƒÎ} ’Œ!£—&/Ñ –õ‹R*Ë&S#ç?0Â}¥A©𬭶X¼N½Àá𤸄¿‡üäÉ'‰w»ºýNNŒ{÷á|‘¼|±ûÅ-�Ï8F·‡�á�/Gk‰Õh2ßêTT¹X™ ª{ 8iËuÖâ&aãaeïˆ6NK²ÌUòÍJ³ÓÞ1ç‡qGß3pJL‹´¸È<XÜ©‡DY%9Wé†Q’‰ãREê¬5?ã�`:,ºÕÌË eAÿ“Åh4–º¦Í“+GÁ“$Ð0/ö€=Ø…ñ=…ǵzcò¶? °@£`Þªš]„Z$‡uuïÀ]af¿z±Ê/«Õ:î÷çÝ"DÕ‡‚îÆvTC§,u’@)Ûôa¬o/÷­Ý5¿ÑæòeåZÏ¿}A„sæ�Í ½6X¡eä¼ËƒæÄŠÍšÄ~´W%éµZ§Nç‹’’X@ ÖãlH¿€½ŒSÁ\L,5#×Eu-t¾·±±iüúxRã9k&€áç`í;Ò?à™}17?Ml�¬4·÷?d¼ö¢±¥X W;IJcæú¢t |spzQTðíê µ_]ˆ›Ç¶Î‚»é˜ÂFÜé\JÄûfÈ,p6•ó«¯)q¤bðA^�M‡wôÒcx©qKðgØÔ[e}ýé\=M4–Î5T…º |Õû¸¾P%A–\ÜÚ^C˜$bÏB`Þ;¹êí0¾¯®Qnl~[δYÈ>¬?ejƒ·¼Å·œoS�Úôœu(UaàC«‚ýäjMz[¹†E¸(è”Q °‡Ð!ðdâL˜J¹ ®éjœšÁykníY”»Ê’vÝGe^î•Ù¸ßï̘èRcE]äÀVŸF{Šš¯[¦ìæÔÌæ*%°˜‰·Hˆ"›æ'O'ÕùM)_#ým² í¥ß}Þ­¯ZîÅ[ScNO…î Úöp-E"ð…‚Þ·1sh�D�¯ ni“oŽ�>Ñf Óó—‹�\T@†Ëkê´¤ŸñœŸ‘¤i;DÚeCì•n_ÔF+#{‘²BÏJ1[—c™Oh©¬ã�8¥ ‹}ˆ®ö*‡^ζÅ6võ?ýYåÿ�äîïrÿs®ëù÷í •ÇobýÙø°Ï»îëj*Oܵ{*™|‰`ëÆµ\¦t}w6Žu+¢ ú%½Ïxåº××c/ã$ÖCîÔ‘:ý�ÿHQ´¸ÛrŽ{O*�LRM?{“}ù±æ7Ç„<Ùã¸óÞ9SÛÆß’2,÷:óU*¼p§¥Î6Íëh"|¾.‘¿‰Ä[5#+ìì}dêb$—þ3^[HVòºàŸŽý®º�`]0 ý ,/Ò9Û¾¥?BÕ§÷[ž¯o¹@ŒIÅ¢X\ƒ~šT?Ùj÷zmP4þ„عK_F‘ÒÒÐë»ý{زZ–õ$zP„AigÂpú¡>âà£úƒH*¯òÿ6ì+ç™{w¶£i´�_ÃÑØ“{7xM’�-õõ/Ä 2Œà762 ýÎN“d^`èÁ(ç#=éPÆö¤Ò‹õS®ÙDGy²¥œái>$á§Ï|�ˆªÎ…‘kç°Œà©FºTkŠ ö˜ü¼¦{¶3*Šg³]vÂ<‹6ÔEødàŠrt›�Ÿ�£Ø^OT°óbY“´m©DDÝþÑE³ +a!XEv)�¾T.n¸N_/ǹ¦uâYUæi¼—°;é)M´Žç)èE3BÒ}œBèÙØê~­R>¦†¥Õ^N`åŽ46‰�”8O¬{˜€®]ìzê� �ÿxÞäZÌå+4÷%1¶ÉÛg€Ñ¤çì’qœW¯ñ•hñ•ÕÙ~ˆÊ£=ZOÔ:áX'^%¼"ßÕ:SË‚ˆyˆòãêßh¨åVLü˜¦Bë«—š¡ØSæ¬õm[0®Cmƒ±ÖØ%†•ãÎ5ÊÇŠ ÜÞÆ5{cD#é~T¸r‘¤ž_ O?_.§9º2*óPéòTDÄIm“ Nx/2-!¶%œ©±¹'SNFºàH;£T\º©K$- ƒoÀß§øM�DüñòŒ¾M…®õ78bgL¦%r;O±dȲb/x혻Úy1sì\ž�Ű`PÕ´ »DCÞ]ZÇ¡]eE¬Ù©L/Î~¾¤/•ó¸UsDÆWÚ:6Ç—ÁŠÁ˜R>N5§E4tù>Ô’¦OÜv÷~icíÏUU^$F×PúÒ§À‚$ßÂ]•R²ùŠg„9Þ;vÀ ÆT¹IZœx7‰€Ñhï e…k Æd½ØÞ{K&Ù¶ñõÌ\*bOÃ�Vb˜¸pn›×¿JÓ…Í$Ö†ù|øUî}H…\<Û[\†ùh›g>v#Ì>¾LÆÓ.ì²ÚʃçoTÙ@*Et šD�'\à¶Ÿûvv*ZcJù?�¬ældôùò¶ë‘ñgšÍŽç·÷¶_QO考 g‡+zËßÉ#ÉxÄ èd¶p¡_Yá±ãxÁ�¯2#&&$ eëU•ð—ZÏhÉðZ’z%ÅaaìŸÚºÓhý_óÞ+íKÿ x:ïe vk`�d“©DÔW¾�ŠŸŸF·-ËM³¼]›q¹•MoÝfÿ&Š÷©Yžc×ç¸$$Ù•ýcü†Û^^o«nlÔ�uY7Œ?ºlfÄTÞÁ宼<;Ç�_¦Ów«ÓBÚž`Z3³m Nj'ª¾{û]V;ô<´]:Òn”ŒÐ &²% wZðê!ðZï�;%OŸiëܸ{Mú\,R’dæ öàE›.ñÀŸ0ShY «…Ç™ôc»‡×?xÁö.9V#Tê!+63 ¼Ç#ü«±§æ_LƒÅTh ö #ÈÚ7îÆ¢‡Eý8KÛvùĦ’}~O·¨M™—ÙöÙA^ì§\Ëæ†)£ïº9 \é{Ö;Ì‚>‡†Äž5ü:äK³W¸Ò¸‹^Ù±>Ë$kà§ÒX3ïO– $Š|oRõz8þûA6,ý2vpÕ·##éð�¿¹åûYRlf/ŽZ{c¢^¦”±IkUh Ü 'ꉢdše¥Úò rÓGžU^Fô«i(/âѸma§ë –Äúÿ•zxa[‹Ã¦e½¦ ³ìê«=%Û0q8ßµˆÅªòf:ÏÖšâí°+�9cÆbu¦ž–ž¾.›ÝêÇ|JŸŠ-ãꎓüŒVë›öö±Ð}ú¡!{Öi�„7‚A¯®Æ±`ú‡äuw©hhXE²p; x>çsŸª´û$üµ)³vaP)Uq­HèXÑeëí> y�RHœDPÍÿÈ0vßW2_dEwf¦a×Ìógˆ„9þÓ`¸ž(=²áyµªæLW%á¥*I£»�Ý(ÇI^*dáAçÓ �ówƒ-ZÓ@HÏ— Ó1Ô¿s£/% UƒIS!•ë0~•ãŒvÝ¢¥é=ùÖ¦hñug ÜX+$d¥Gš 8ØêTE„BŸYê ñþlYðëËÞ9ïÅøCî$10MJ£š_6ê‰AØço·)ÙEš®ŠØdîë–7&ƒ”jIr1¢¾hºÿ¬/Ì¿@©˜ÇI÷D”þO-ciò"�ÚßÏPå¹r†»ç‚j:P´ÙQ´gnÃÇüöùr}èp€­„•Â|&ÎH¬ ?~ÐèÚpu0 nÁ †Pu±5½Há+ì>XwÏäÔç¢ µìTÒ7µRÆð«DÆ:�¾/öÿ!Ê7=ÝG B«¶®O# µì¯ÝKœÀ±”ªm8ñ¶0uÂÌÿÁ¯„�Âç·Qûéˆ ÿ¡¤Hs”HØœ_éÕ5w¥ä4ÉVé¼ÂÈŽ½¡bFIŒ‰/ÆI°qeóGö§ö æ¬R¸%ù¸ÂSJ›è TØrû¾áéCA(€j!òdñ¿—•ÃRùbF!„‰!°Öµi¯†V%ô#Z˜A�ú È% Mä¶Ú򿃻Þo¹ð7œ…{ �7èªQpn~à°-…½܇= áK7`µž1§ám;ýI­C÷ˆËqЈ-.›^ŽòÅïWÈö=q…ƒ 8…·áp #Œ—D[s޵„IBù¯¾Å>ö_Ð2zKúÀ‹¿ø–„À«„ùL_Á¸¤1[Óû†Ziç×rô´ôÕÜ?¾ßˆ}^u˜Ž‰$ %œZÁb‹FÜû¿õ‘þ­Œ—M™·C^§!F!þÐïž T’í0®û IL¦ ÕyÀ\Ìü3µmJ‚­¯^�€?*£ º c’çWkŽb{‡‚ùøá‚ò›­w:·'P $$µ:Õ1Íjc.&O"¡Ð³úk!Êùàå>ráhÊÛQÓì h6ôØ6Pð%6d”;Ÿ,CÌÞ&ÆT¸ëV”ƒæDÅ=+m,_D[áƒ/þòùgüwèI+¸kü$c0%aú¦ =»oÁ×òÿû�aËüÙ ž?¤žÿ§‡Ÿ$‹É„§6ቃ°I—˜˼C³°>¶Äv¸×=YÖoô/Z� 5î©“Æ]C5˜›°e™°!éÿ¡}î“-©"{&ÚTØu.n²Ü›ü¢ió–Iõ� G0­ Ê\EÏ09ö®0*$E’#>¾2ªY5)ª-v£G¨¨§Z!!ôÊäj(µ#ºr¤U”«[jÓ¡•Í€ðm)³³9têW/>ó`€¤Bëʼ ccÚ]нKãtc6xúXu‰ß_ø×‘88ØÿΟŸá±Ú¿Ø2ʨÝÔlb[.oÖÄ`Ïr)"æ»°ø:[”?$«PS“�U¯~aÕ�iw™Þìl¯j~ÇHá^È1NÉÄ{¿ÇñÀj/Çcàq‰Ô½Ü ¹Ñ˜Öéz�©ÏssUÉîŒþ{—‚[2zwH8ëG•øhJƒ3jy�4lxUGpÜmÁÅMv,sýñ2ûdTù°¼Z]±’ÐבUϲS‡9«>]¬Õ1FcrÏ3Ä€'Ο5¥Âd0:Dw2cöqüÈë¿õù/為®Gvu§qViéttÞ½6~—$phÍ¿�ìð¡P9áÜMÓXôú•>XKZŸ‡LÔ‚o]ˆbÇ4zKž37êV¨H©0 ôÑy0*l†æ?t„>ß{XNrÆF[– aÌ&½4(€A®…¯A”W•žkCã‰Á}cCäbíFÇG�®ˆw¡•ãi ¯/C·?6ºï¸£ûš¥sM'�IP[Ïx«XëýWz½5þ’ÚJ£h‚NÂŒDTnˆþAª>}GBE~¥ÿ·OØ«ü–K³é®‘ñ$ÿ*õiżèDÇúßZµªò%�?š2o†ÝúJlÌQ9èq“ŒRëŸ p ú¾½™ÕŽêÀd¨�WQœ ì+Ô8M£<(¹:5™{b4†¦?‰#)gÿ<Ð[þ‡°e£Á¹h‡_O’½ùï"çSmÇÉ?†¦vÂb=+Ç[þ´ 0 ø´WØT]—¨{—ؤɦu” µ`„Åf|[âeõËSœ§ctÓF·]ÿÂLæõ¡ÝèïŠ`Ñü¯ üîVþmRk×*“rf|?ëÍþØ×Ë�óÒãP#&“jVú3m42™Ê¤Ø#oTZš>å#L‰ZG� w�¿Ò¸Þ·¨?”qÃlr¸q ]*ùŠ•Ñµ?- 29‡[Î ž¦)‘ÿa]Ƙš†Ã]ðœÀ8Ró3UžÚ; ˶‘,e4nŸy0½Œ.šù—+US‘Û,Í€£IL‘KT“6‹mG4è–QrSCI¢TŸ¾I$¬ã$²xÞ×´”ËYí©ÑsDLXÉ«îMA¥ëOž–ž®KíÙ„6�ˆ³¹}<žÄ$%Ok:�¾)ï–¸¤’Yƒ4?h—°Ê�|reN3B4 ¿¹·8•Ê·ªä{¯„ ßÍ5íêáo·KHOæQ_Œå¶šÞæAæ¡^ 1B‡gÑe¦ü„0{ªæ{h;}QUÛ3¯Ò´™ÿ¼½éØÀà±4%ái�®š(Ç‘$%XõV;r"q´lútégËÔ·œIš‡Ò Tü;2*Ë ü–ƒôGÏc•‘2dáj™8LRçdã—]wf̈ù1³\}^A²gþ~ýOïßðÞcZn÷=!·‰»ƒ»bÆd’òýštÓ½VÔ“p/qб ¡c}åj±Ø­eÂù‰•ª34ÄŸºîϵʸMÈ÷ÊÐÊ.«ÖR´JH–©"Ä )‘‹€ERɶùJlâ¾dYsÖ™¢gˆœ{Ñv`ÆË�…”Þ„Ã2ÚÍ#¿Rˆ2Ì´ˆ™G«ú¬£‹ÙšH@è(o!TÓ E#žGR™Ÿ¯q¶ëéºã/5ÜÐʰvS†1ȇ^#Ô&ĤT9hw$S—NŽ* ûIX�áTÃ[¢Y$.³y�!ˆªý±ùÕG¸éš57ΆsØÊhÓþÆÞ‚&ÒR^Ć›­ˆª¼©¯°� Uw¨Ò­-#ñë›9ž5Zc£&Õe‚éöNǤʋŠÂ{‚Ô•Ì…yØø±Þ ™�E h±ÚpŠå'żèÿÿbăLéL¾û̽R"‘Êø§³ÕÌ%˜�DFv÷Øìî`Òy‡ :ÕÈÞY)­+óÐ_Û·ò‘aݳ-#@aã/�ä>·Ž³HG¶Ô,7¾lôÅØ@g OèvËU L‰¤[3ªUœk;!¦æ hD� çªX6ÞÊHÒ¿ð‹ŒeŸ:3£OÔ˜Ñl"Íú.á,€¨Æ…¤ÇsϺ#ÝaõÎaZ|<Ó/ï?n~”…+CBð� ^ÓáörBg{�ª÷ßlô�d‰$h%FA…}é÷/Yaw]0¹áõ¥®Ð¯H"Ï`ô ü$ñrÙðº.F.”,VM KpùJoŽH„ {d]ÞèãáŒ, ÈžH°ñ­õCI7ÊeմʾnÊ0èXqœ‡¥HÐN"ÈuÉá^ÒqŒäŒ”ñí’ÆJôX> =IsF+#1×™ÔLj…Ód$ä¿É£Q"×¥�¢§j4z2ª±Ö3™lÜ•Él…P­•F‹ „|/˜ßìH”º½æ™µíd�´Ìi§±1›�X›•ãÈõf=ÃÂÔ&!kÂÖÇ*P·˜¥‰,ù’ JˆH´xø‰™dF™wº{D¿ÏÏΦSÁÌ>:…ÒåFïÓŸåªò Ö±evkÉuæ÷.rka[¦ÏÆþ’ºF�±ž1–h×Ìq ¿\ññ*}JL+ ¼3ËlrE¦CM{Z­¶ÝpJƒ”€£V¨¸’8qH®a¢÷À–Óœ©p EÇòfš�ôØÌBf¦1"(™·ÜíÖY¥œXš¢ýʘg�@êÙ%jù.lêçZå™+�k¦tØæáŠW"“ôF�5ËʉS»>Ê¡gô*$ +Pc7�m#ÔV&0;LᥫG ÿã‚¥©m›pºÔŸP h­[d Þ]¨ìÉôÕ=àÉp vu‡±«_-Q°ìÿÏ•–4¼K]ªÃ½ ÿŠ!f4E71ÿwáQë+Ëæ�‡i„€ÝGÈñò~Ö²ô8| ^õº5T8…fH²Ý•›°Éà7N�Cn*dS–\÷†W–RZ-‘xeÑÑ*gÌÒO`%`¤Å7í áć>ŽA)�€cϘ0œrSCž­/J1U,ŠVÄ`†ßÙå:zÝÉyä»ÓеJ%ƒÀ!r¿´RÙUž/:‰Æ1PÍ £—ßôÞí|A¯Í*‚a¿•v8¥¹J¾ ¯íNÎfe+žI3÷E½G3Ö'ó 45©>Ô�Q(–Êp`Ë–“pšÖDB•¬a”¤ˆ­8ž.¿'¨•JMéµ×CÆ''™ì0†=æo{³ù?i¸Dæ­‘D’°ÓYüƒ:Í2"êÞÊ[" &R­‰òˆ&³�)ezKRŒÃû�¤Œ Òž”áÆ¹<%ŸâðMxaŽ &þét(ýÀŠH',5ÉoÚ¦q}%îÿ~îøàÄ ‡!v:;ر0=§3D�µùGÍèÎ;á�uuÀÉí>üpa>�ó>rPHwåá§�BgÈ£2ÖoÈÆ™Š»%Yv+¡ý–I�T*îÓ¹wX¹VK]*5äm«žy,HSbëµ™§¦C~¿é‚wè(pØŸ¥"�QÜ]s¨Z�]ƒ¢¸+M-ô~ x�ªúòDìЛP3€@‹ T°Y¬Î×`÷|‹¸·�p�)Õ�¹‰ºÜìyá—Ý x9iTÛ€fÜÈäl¹;iag ¥M[Á=è ïTσªó¶xÄÀ6ˆv̶®gƒµÈ©ò�ý³ûÅ£·WOî#q¤Œf›�Øéo¦Fjc‘M8¾£$ÒË$¶Ô�±/üÄíªLI4%š3ׄÞj�½ºð&vÌÕ@vZÂ5– V�÷ Žìì¨ÿý~õŸ¦ö>ã¾™¼Ý¿bPìÙ= ®Ðêí§q°Ò×C4¶å÷JX–ë¾�5T"â_Þ‚!ßz˜c ú¤dÝT¥Ýàñ+ŠBK¢Æ­4‚»Øãcø-ÎC@‚aÁt\û†C�«ù�t�j€wqŒïöóW>XOßpߟO4¸,øR'î¡“nBëÿêb@Ôþ?ÄwTε¾²Ê;ñUÑòÔñ·]06NtX]Sß–lŸïÖéÅuRÒÈÜ”éMüˆ`I9ÃWº=ã�# A2k­h»—¦hB|3òjñR¿^ém‰ë] ÉãÀ^¶†?Y%uIÌѽ1^¡S¤‹b•×\—J\J!0Ñm¯÷IžÉfRß�y)—WõÔ¼r*xUsÍæoÄ.†ïvçÍ$M¬±ÏqÀ´xî $|tþ¼d¯’«Më Á‰cøî×O±Œ×!䨴¨tÎÓ!ïõ îȮʹÙAgóè]¸GßZ1޾Ï"+'UICž0üë¯S?ÁT-¤I)¯Ð§d}¾7} É?ß’#®h)–Ù9®iŒ1½Â‘ß W½Ú,Ü‚ÕGtô7sÛ…«a–Á‘`PÆ2Š`ÔÝ-wìSwFÒ4P›H¡�IÄt�y#b$à±¼ZÕYà»8źÅ ¯Tº bSÉë—çNWgÓ4zO¾;JaÈ¥ŽYËDí`aRÏ™Ë(¡ ÊN©=í2kp¨9– ý¨ÿ3§{nmiÚ‹�QÇ?õÁà K<—?\þ¯.¬öºæ-¬u…÷‹iã…W•¤`>p¹S%žI.=0´P_¸î8(6ðú‚\|”dˬ+ƒî¯ªái¾¦�èÞ$§‚ÖÓ÷•{n”LSÀ$ð %Q¯�‘ÛéCz‰.°#è.ŽÉeã+š@b(±„ƒŒ¢¬JÖì“$Z²qfeêOõ\ÅøN?n-=m¥º½¯œ‹=îó->� –‡˜€ã£àžXiàô'¼+“ˆLŠÒŸ‡&­Íž£æXd¸Îµ¼·¡Ûl'äú{b`Çw?óÅ­$€Ss˜CøÐä5‹M9?¬–`�@øÑ…"YÒåù ŽïðÛÕ­ð ê °ÊkA÷y¸�iuÇc1ü›ÚÅ#PqøšÐa’J<¨3ÆÐØ2ðkì—4þ|©�y² U^ù5¼ï,AÄ1‰¥­µcóbTЧýÉCõÒ X©°¬•1à2·DÃ\Á·ó3Å ÓƒæÅ9ñ�IœóV~|œA®Åó¶eðñ`�<ߟüÆKï7‰ü••n¹ÙÚÚ@Æ‹w8Ë$°±Äã)WUœ÷À�BÙ “Šc¾Ë=,™f2b“ß‚ø„·‰N{wZèË‘žI)_eeÇŽó�‚ô) {HEåîy$.äp×ER”ö:cþ£{¢J¢¾h6gY*ã>Æ$åfR�)ÞvæÙ¶õ…ˆõêzOܰTàƒTªrOŒŒ„õ3Æ&òýÊï+i‰ ¨EqŽ¢[²cœ© ­–ùƒ ¾û‡Ïh#ç1ÚšHõйNIÞÞÛb˜¼tûÿ~³½�õóˆ$o‰¥³ džWv–…€gÆ%ƒ€�6íœGœÓ,¥$î›ÐŠ"9v±xTúj^‹0÷û_NÖ^EA³*ýhgO÷Oæõͱ‚—¼5DÜ””Ç¡ÍZ®ºõSÔ–yd q6$ § øB²óJ©1ßžr'½~�üìj= ÏÅ)U(4$6ÂÞXWÏ|¤¤ªÍÞ�ÖmïÉ[©kº¾ ÿVíZ¶wLšm¤•«?¥aŒ6 U(U=·*Â*†ã�š› �¿¨iÙ¬Z»ÿ+¹ aÅ\`¤´5E�‡cI ‘¥i*Î�Õªáùý:’NÏe°JÒZ:~C‡™l ,ºÀÚ}QÉ5½_UyÞNëš’õOh¤üfrk¶ v^‘­’•§¨×îQ×'£âƒPë”%4­dh$9røÈÙHU¯ ¢•û"+Ä(vXn‘<¹�§´ËKî¼\]}Š£ÖkͲBTl,YµV+rÓŠžÀ_W#E>Î�yljM.Æv£™%ŽŒ¾¬ì£5k×?á+�^4f�É:�Ù»0¥²Öð£ÂÑ’qboý74¡[‰P"œ 8çwp(.ªŠ4‘ùÃáÄÔù:”0ëYŒ5‚y¡Ëš’äÂD)ûÿËæ>Õ>\­V¤¸GPÀD(%.�èR„ޤë“5z>a1_oSÄ|üí Ž ʼp8×o¤åðUø5¾E0õ¬9 ý�ñö3%�Ñ£ ¡±ÝQùÈ*Qñ’éX’äù¿þh²Å#…»Šc—¡�ç0ФI�q·Ê‘åöW ʵ8¯çE{}]‚ …¡´‘9H*4c—-gF¥­¡Ô^4»Ӝ۴‚†Ë`8€Îž²¬>Ÿ®'­ÿ_3eug|´z7ûB¶%8ɽ¢ù�¿¸W‘j©DMŠÌs™Ô’~OÇÓÜ2¼Ä5Á¤øW²—Ÿè]5¬åÔË9T£ä·› ‘U«4PƒÐhÒ�ð<7T”€�œ´A¯32j~�$¨ð|Ø œßU²79çÓŽÙž¤鳃3FºÔÚêv™YC½�×VêƒXÆ!Щ–w',Õ€_WJœN�>&ü8þ?]øNaw>Ys†è–"G{mÑy‚QºÙ‰Ûû 3Ì-ç·\do¸áv»4÷&XY±ÔG2 ÍšßÁúT:°B »nòì×DØ|®ÜfÁÃö}zDS÷Nô¶SçK)BVY™Z‡?ÉÞp•¦xÑ¥N=ªàqÓ¢ý™öMÉwŸÕšú E?|5ö„/çÝð¯{¼SøŽðûV·6F4ßÜvkK“¥ý¸ÝùÞ.gÍý’Ú´òÖžuÚ>S4=ð ÙGîãùæDBóÛÍeãâ~šqWðz }ãHÅž{¯$îÖH†û÷N�rÞCÞt S�â dË„Ÿ¨‚ª¥µŸdgÖ ¯ÈÆÚ߇ç÷Ÿ,z¼lenFu'9‰†Oîg :“ÀPðÁïÃ;Y„W€«Ø2Th�&Te°vY WD'‚ù¨[ÀǼ!ùÀºÇ 1’x@à~xF@¯U÷³Y8 Uçñ*�7Jeq²Ã—Ñ;¡›_]ö¦N/mèG¡ª& ÎÌîù”‘‰úªDN}d”!K~¶£FÓz3Ä¢, W[^&#+ŽÜžðñ€ÃÜO«µ–ë{3OK_ÕÿåýÖ»«"Ž›V—#:fº9ˆ�ÏçŸ� Uék³µä© –[¼„aÙ^ɲÑôiCˆÚ(RšUYµp?s…�©ºT _¨û{!‹­s#‚ �Ÿò…§j+nÌ…¬ÖÂ&É3g¸s#åÁA’q«¾TÍ5Óíy8õCº� 2â5¥C÷]fJc— Lp+Z¬/§”÷¢Ú�z#šÝIÄž„fQ­„ t]õEÑ¡ñS›š™–5�‚kÐù÷“oöy’kÏbø¹ú9^ñ‘ÆÈtÜ·¿ö²5n3¹di,’Œ'órÝÏT±?A¥Ñ@ÙÇ0ÄÿÅ/OŸÓ¿¶cü†z¾r¤ò«ÿ*\Ê´â�= 6âËT@rgõÎ%3sÚïì�íëÄÎ.+¸DøãhÇa8…,&ƒ¿,.`˜u§Áèíž_M_: ÊDèaÉ,Ü�¿ÔᦠÊ÷árªñ<Ëp²nwò”äy-�dD¸è³äÊŒO…Z´¬66ló½„×µ8þ=‚ëP\ëOdíÂëØøÛ‘�œÊÔ­–Ur…rgÎ׫…¬k9“Qó%Óç‰ÆlÒ» ƒ°ŒÎP sÚZ$62œ®™TÀ£aåñ³�B¯ŠYá[¦ ¬ÙFRéÒߢ8–ÞæÙ=]”æKÝ£1"Óª€dÉ#èΧ›ÿ£|O· á(ùø)aO¢Qé¯äV÷ëC½õ[–%­u?Arˆ4¾ŒFdSƒz@'ìiÍôQ´*’¤æ¿e\<ù�àôxäü±t\ää{‡ýA�SRúïÌ8�(D%C°­“êµù”GJQC0?%kSÞÿ‚yw:ˆÁ¢(ô^¿èG´®¤W„ÜG½/ à)u}.ö¸,ÛA¨/À²´4±P¬öõ°½�Û0´’wÏlë}ÞåL$4ÅåIÏ ÐrÇäû®ÔP½³™”AEÑ-Tî…¤Æ5¿ø°¤fžÛ^Ìy–¥uè9\!åü®\fÛé–úÂÍð�HtÕmûyZŽh±,‡U$ù>ïØ\º�Ë“³Áå YŽÛ…ΫLΗeL‚ M´CN™Z*Î"Å·’ aÚJÖnóøÍxxarböÔï¯T5ÊhT�)š|ÊFí¨�¤ßÍþÝ\m•s¿­Ù›;1A#€K8žH‰b®�ÓU!up`ÏJ®rnQùÇôhÛ‚i¾ÚÔžÈ1Ái>A¥‚¾ ²º”çX×�bë›ô9ÿéâ®Ã# �z÷-3V/#H³Ñ¡íÙÅý0\0Ä1ÓŠb/Ó —bºÆ^~>äpI°Ìjsì3rjÆQF ¡Âö=*eQ(rÄ*ö//+OýÛ˜oê ó- %ÍgdËr4–¶©Ê?Díø¥÷isT+çÓ §óèþõ%EËÔUeûójàë>ÌÂ?üÑ …£>¾d`ïKZ-»Bˆ*v­çy§¦‰ŒfÖ”]¼ü>A|ÉwODã+ aŒ8ÝùÅ5ÓF«ÓíAm¹5l/›l?Êé6…Å)1ÝûRµîûþYX• ®Në’‹wrúñ÷?þþ§ßÿÂ.#“°7×›Û^}A•�zM×Ï|¼ ÃÐìÖ§ãßÜEÆ¿ B.aJ2Ôší°{{©h8<_“©gÚç¨mž×BΆ j[²\®•x‚à8 ©×ï$È 탱�§¬¡#ÿ� É�ѼPퟛ™š5÷ ÞÔò8²ÏL÷‘ŽÔGQñSsðüF•™ŒÆ k(/³Íþ»t©H–À@Á’H„ÜíÙ‰s­/?Àÿã ê®uù-¼ �®,”�Ì'@n‚ '-ÀÊÆÁË2ˆºËЉDŠ ”bƒ‘‘hž4ß0Ò³†Ú. [Lë΋òÅ d¥e–â£\‘9$òZ™<�ÕÜw[·ôìVœü&¯'¶Ï‹N¹SE©X|2¹ª•ëC›ô™«·þ}4c¯RpÔ_Ìjt:T��vyÔÑl·i‡ÒÐ×ôþD‘ZF%ÎýóŸt>žoòYmTQ‚Ì ’˜ASLÒJ�E¡“–hqÉ\^“. lžþ@xþZ¼Ô‰êåíÚ6?¤ð‘t²”‚"uWh!Ÿ8ÉIµì%° \1ä—uóˆáXŽïLÞ(SÐ s Ã}n.³b†å‹v¶R­¡€ÉH Åɱ.šÈz eâ¶¼Ön¯ãæ)š°*CëY†XF®7XÕ¤©Å‘ä(D¹Øé�ã'K£ZH<”�¸k�‘�H»¸ÂPÝ-YVß‘ZFЀ“ÛKæµlîZúŒ´,” ¶žn×[­†VJ"Kmëš^…£QOYhpã[Ès�ÍL³¶s¶Í\›U9B¯(gÚåTVXÖÜkA”\lwáp*K�ŸãÈáÓÆËRè}MRÏèÌú·zá¹&¸ÏÿYš£U"‹E&ŒïÍ{ç‹úÜU®V§cë~P Hsƒ(Y´M&MÂÉU·øº>ÀÚ«–‹ý`G‹ ¦tCý(︴\¥,(<æ:—ÄõÍ%�»½]wÛð¶éƒrj®Ûñœ¶ ‘²Â$à¢Ð¾…Œ—Ø¦ŽÆTi_ ñ˜hàÄ‚à.ñž~ùI=oÊ¡/‰ Gw“y †3ºör6Öå×4Îlu ™ÇYÚ$³›yv¿œáÁDo”Eom(ÏùsÄ{S+Kq?,µˆI0y{F&Æ~7¦�/ÅzÚOy÷åPÐíççí´ÉxìR;S0Íÿ}W� ™­³«O® ï–íög8 ›Ä§l¢Õ…÷“ ±yn…Ç åü¬Š;ë9ë¬)�ùÃè\ÍMØÑUû�Uá¸C œ�Ç15Y´GžqT5wlíX9™{h]ÿà 'ƒX’R¸ÿÿÝ8Ør‡ “åâ]{®¾Ú;guÔä^× ¦sRä}k"ê_µaiùm‰±úé}ò lX~9I^¨ ¥*?&…h Ùkù\Ál‚GÏSyüå“Ì%ýßÞ¸ßT1×~è¶Œ�¶n]m¤ÃxšmÉ‹å¥uw³·gÿ²ÂÍ‚ó·.´jXêE t”E22…vçùEŸzßÖë‰7ÎEö[¿=5Œß·Ö}Ø,õ› ÉWÍwHÁîaŠò”l™Ík�¬€ ‘u°èƒ'ÀçbóÄ NØpó�C=!âÆ¡ppe®�€Ð�£&Á“À 0^Já¥>+œ ÌV—À Œ \%¼V‚zä/F–AhéðäRÙ‘0g ¬ èc–#²0ëƒI 46å£F\Ü8¸áp¸?× ¨¤�?Á+ñÁßÁwZÂ…€{RëÀ•%­ É7 •ÚöÍQ•„m €%·Tc˜BÆ‚M‰©„×Ã_öôÝ<4ZÚ¼••]€éZ]õ¹yÿv„ |W€Lª!Ø#‹ CÃ;t¤ÜƒÅß4ç<åà˜ »¡®³`xÅœöX@¹,,›�÷vŒï¢÷ÜÔÊŠ1 [4‘¦�‚Z?´'îÅ=ve›e¯UUói_i\Õ£}ozkà¢,n`Y6à²*A»ÁçüT]:´n[+gµ1<ªB%>ê�—=SKV+VÖƒ-ì.ô¢°¦p/1„8ÒN…½±Zˆ.eøM߇ñ¿›“;ÜþYcdÍÏSì%ÜÒpÿùï eMhCÒp&ÂÆ±¢m÷¤ ;Sgi[æ D¶{qBCcÌ�oìÿsS·‡¦2�™-U¦x§Tï”P8BÃþX¨C B2ô­ÄUELÝI·gÉx¹Œ•c|Ž*ÿýyá܆Û.ÓÚœ|L·–ïaUÖéBìŽXï©7m���Ç(—ÀDñ öâ£ø„Æ(ç¶Aó]ƒ¸)¾^ ? b=µ€Ý„;„ÛÿNn¼ïsNJÊÌk[ß>§Úzbý° xê0[Üáàë ”Ì^Šêf:£÷Ý»enÐëB}H¦‹D”þ&A\ã¨;fu›­%ŽágEó4ÍVk³Z¾^ Þ+^Ó:WÑ!´¹˜ØždQ¦Î--{MCËî’¹f·&޳ãVHÓ½G°ª(ÉêJ˜Á‰;õ#¯ç¬‹ê&e�˜v¿ ޱŒ0Ëm&ä(ÛÓcz{biéùÖÐò§ÞU¹ü,ÚŒ÷œ=x¤“#ñGrš˜öÁ Ž5š ÍÊö�¼>°ë„<#WcO½‡ÄÚÒ›÷Þ…~µ>|Àý6Jˆ4"ŠPoñO*‡KãÖmˆo�M¨>,„~R|J%šFåDb7|âL F+aï–³�ß÷a\‘fy?y¾sòšz–ú]yÉt{ÖH[†×èDZ|çì^TÈ?‰°n¡ÃBi°¡f—ümýõ„ÄÐ5ÉÞðá�˜äCóÎt¯Vè̬[{ªÔ×Ï×�ÝìÏ?�¥FÀ[I —V%EI–£‚‚„ÕÅ.¡ð¬DSÎñ|%EÉÆ·Ú÷u°²Yx„uLï\Lä"�LJ–£Ž]³my}l�®\¯Q)Ô ~иݹˆ]¦¢°¯­jN&kÝ…u5‹Ts¸‡^zÊ%`Ÿ% ô:eRÓ=ëb�“ùã›Éµ—À±÷É1û}ïVü &ßszçCÚZ lénóNö+JÞòܾ‰Ç½íu«ME’)q´ø ÆŸúpÃMùh_óñžlNóKó#×Î4�êÄú|t×m®4aph‹âFT[qŠ¿ø&‘b4É~û“#ôÒ†ý¾eÄV%ŒÐbx~Ñ;ñ"ÈLÅTŽ#ERLZrÐ'ê/Š´mÕëºÈ˜Éá‚�-*,}ï©Íä8•ý¨(Z#8𤲧õv‰àÈKzˆx­?È.—  —T6ʪä)‰ÒAjª‡ÓŒ¢gŠNë—ž�imK>Ü‚ÆnÐÆ\¢zC5 Cea”Ã?œ99Ñ_¥+cWÀl‹`c‰†Ùس$ä)~¥pꊬÃ÷Mn�½î¹Í’Õ‚kç6™9�…Ãü€RÅijäŠýGaÉJÞÅ'¨S{GZR¬š’ú^9444+7ùÈêÏ,JÉ)J·cj׺Æß¾ßbIV`̪ӖnnÞðx¢jY?dNYÀÐáQº@sù™X��ëg%³æÍ¢¬Ð T�gèÖ7½€PºÌÑh|¾íÕN©M7é.ÐþEÝat¸®Õj½QYã�Éèf†@$v¶ˆÀvû¯óÁÅ}ðx’›¥¹‰·“Ì.<8ÜBz1ÌÉG›òß0añ w¿,´8T RS�^º$=¶Â…0:4ëãs©.E»æÀ”£]za°ÌÛ]¤A{ßÒl·…Ô8h�®>JðA,ÇÝŒL(ÄZ3_0pXð�–IØ&R — ø\¤„Íî‚ÎÜt(„€Òƫ׼�ݸ+S1êðCè^Q¹ËWÍ9åMMêúfÀ@³ƒ³†øYÿæèŒ%mQSÕtÏi-§-ø tàòò}ÃK�ž¨ç¹ÃTÌRô´‡Gˆ˜®$”êÁ³8îw¾KJöÕ�‡'à|!’ÀÂ��uËJó’3OJâÞ‰¹Zâü±Èª–XF‘´,³äÉq†9 %,°rIÕ[m9þ×�÷™W¥Ã�QŠp�HçN²*‹ŽôøH–¿îv¹=:ú¤Òûå� -¨›ñÄ]siw‘`i¿k‚hº(e«|³°<J{×Òu£'¸�OJ»Ú.�ê0–WÝ^T9ÛN02”�¨c.&ìÌ›ˆq¨”5ö/SôËá€.ƒ¼­a֨믄Š6ç—¤²u6£O§�óÝV(éwè�½›'Nh”Ó‘f)‰í èžÆ‘Ôp†¢'ptÉZÑœ¤ö3÷ƒíêÇÁ¡±°#kC01Bgš ïÃOz•ËÎv>‹"ý@ˆSµlúZOD�Z­V›Ø)tz­À©5É6«Óï�º¶©ðLA­$’Äþ' s sÉê/`ްÞ*çcî¿q”ÔÃ!³–F_ÓhõŒä¼ÂGÓ �‰Š@3{e™IGw¨·Ê9e<]1”‡çSDàJ˜ø ÏìÍŽ�ƒ‘ÒäÑ×Ô›}‹7Ä�€ÅšzUx._…Ö,ôµ�ý 0“]Û¡ñ òJ91–4 ¢&E¿íní\í©g*ó)•§fû’‰œíû±}›z¾~­eÁµ­—Îk…7#³N Ø[›¼*YFO>ìfv³åðXŒI³3ׯ¬'ÿðÁ!ˆ½üúù½ í™�]'˧”6M²„\�·,8�ÍSß;¾Ý«¸äÌ¿¡Eðø ¯qTô&Ù(pΨ;J[2[%ˆ±¯”#¢„Ä_ˆrñT\•ÆQ†×òŒ%@Hr«4{hOäi9M¬šåŽÆÃ¾ûßnÎy‹\f:ë݃Z eÅ 5[õÓöII䯲b�¡¥\¡>å�ëå¼$,pœdXRbÝ(–ôIÛ†² aI…~ÁADMu † tË?²'ÐתInUPt% ÿUÖ4³ðÔ¶HlÌ"ŸQE)©†h�b“r­TªnUèâyTÊìsj™ö�Eß|e®´z6g+Рá;+óå¾Ùx×s1ßÚ5nŸ´BOÇš¡…Ð"Ü¿~"`È`”¦Âºšp#È+¸ ‚°HmÀQ·ØŸ¨ÁµdüšîŽ6éãâ }þí) $–g^ó6‘f .’ñíÝP™zÁUpÈ1˜IxVÐ^„—ÑÛ· VEüeºËòg,iF—ÁÉ$2[]†èôŒ‚ÜŽ¸t•H�­×d<9ã‰ûý©›­ìŠÂ˜56²2wŸK׌�:fr¸Úœ=�÷ôŒ‚ÝŽ¥)ѱ¿ù‘;Qm_0òX�°YIôQYþn«e5´�¶oâܺ’†˜ýì“ÍYû¿ÚG¥äæß®ªÝã¼a#RIðîBiGÅ"ÍüÚˆ†îCV¨a/ïà׺´¨îè†[½öÊ´ý—¸j-–®}°¤oXË¡#{c½R¦¾,ËþE�œ„$9«öcN¢Ÿ±XÕäÉ!|,î§§~ùʲiàÑU·,[1d/ÜÊÅ.X1~ÛL–(üœä·Ï—ˆI2 ßnnAÝ` *§Gº²J¸::;ÊÅݳ"Ï0Œ`Tœfùw±èâ†Î&É9ì2¯ý›_¼ŒEA·º§Í#´š⯘AM˜`'¢±ŠP©•ErnÍšfÛ½ ýšCrH¯ìoΆéß| ¥É¾’b°¹÷�Õž»'ì�>H3F+/þ¹V`º€Œ:Ò¨Š²”GPãH¢§ 8r!‚—�£´nˆ�¦ÃÓð£•2  "´×`ªqa|ÌY‹tÇ•ï Eô–mw÷Š¢[å†W«Vë-Áè.#%€APð¬ß 8ÜOŒl—s\´!®fnƒxYnÎŽ1,‹€@¤ï’ ]ÈÀ°Š$å1¡¾@ÆÔ‰PfºãsÂ�ÞìOl§¢¾5±/Øs«ÍªJ€”$Ò2iÅÂ.¨‡L4”,ôÔ—;º`Ÿëuò2£Ž+¤æãX·=øÃN�¿¸‰’ᬼ*»<å¦Úÿà/NðåÃ,ÐÑfwž+Bg§¡a#órrëá³D9Úh˜9à þØîZgÜêM Ä>ÁÚv6Eƒùš›¹ºãûð„T `_$CêŽUS’‹ŽCdž¢£õ@@EeêèÒ{âpq©�¹±¯®ÇR˜yYjôqÈô)48Gø°áÿ¡‹3ÝŒ‡ˆk5gf!‚°«_v¾@XgŸÂâ‘�,o¦&ö¬öж'Wÿ*d’Ü­"Ÿ/ôY€T¬¢Ò�a&)AˋϹqËl!Â~õ¸¾ØFl"\ 2øÎq®Ÿ=«™ÛÞnþ-ÈxPÓÆ©|iÞíÓ�ø¦€Y»o•oþ k·Ž›  ,j„®!î¡+¨`oÇ9YY3× Ë-Ô,䯭X(fBÃaœJe-š¸T‘QÍ/‰Ä}Š„¬áŒˆÅHcz˜«)•§¬a�Ghäæ7Õ \&˜bgž+=�#QãR!» 3’åRÀÐI›õºWAƒNÝ“™µóÆ?Œ$6^cfåÆr4× ®ŸðEΓÀ\˜º»H¤ÕÚ{J!I ˆUU$ycl¿õÖ Ä_\üdâö$ í°|9ܧ‰³­ó…*wù©Âͱ˵§f€‰¥Ðȧµ=Õ(&IóDj+a.>qO((z<‡„R­vG&“N$Îsùî¸q[¡! $ûç/S~ÙmÈfiéx,Æ¢UT¢/s ›ÍŒ¡Ó‡gâ± ŽÊ5b>\ÀUÎ20‰!+ Iÿ½Ò6%EЦ!| ›07ÉJp/ìV‹%¨P HÁŒv­[)4XæËß¡HÈúrNš`2ØnâÓú0ê”Ac*F³¢H!^çØÎ2‰(%#L™¬‹(jm[¶¢b¢ ¡†&.UhLÛÒ8êsEV«ZÝ›j;KÛvFaÝÀGȈ–+¤ÞÜ6 o*g‰nßÍBš‚z SŒs\çÔ®s[«Í Ò�URc^f7¬ÑÛF{ÀA*Òp«´UiKÆ)5{;RmÛFVYµ_gLÙŽWüdXWª!öž1нTüê3E{ÿLѽmõùyõ¼…�S;û¡|Ï‹‰3ƲÔ'Žu…Kÿ„ôÔ®€œ‹àfDºÑ,Õ$›3§¿�¬¢A\ÈQ’îõ|UÓ tˆlÂ~tFd™äE³„‹¹ljˆLÍÄq"醾§œo˜!óE>‰æfý¹~·yâ»™,˜ò¹.Ðû‹Yé´ I8R½�¾¡‡§ ´<5­®Å~ÆšŸ¯ãŽù½ÂŒ»Aªº5&MJJ³'Ë2%+ÄIÄ…²ÜÔ½8E¢h´A”¨ôeÙ_ó« œÎI$lr7´N¿w ; jò<3«6qN³® ÊWTz­lèˆxgAXÐÿ �á4Uu„\Y�=÷Eh"›Ã,ÇÙ©ÙPåŠD«ªÕ%Õ¶C@¸mùø•_òÿ~Íñê²"ÁÕÈÛ'&h°èG_xòÄ· ë@>kÙ€˜51 �ßÀ–øxW)ßg~0hÔ­ Äísí <_~¿} BÓ¡Å�rÃ×4ëÛx¿^†Ú¥$�¶óp»`Áôšø¶>8»£¾B´-=SÓ x¿|µŠýÃ<ÈÔ“p'ý?УÍèÇvãðÿ»ðR«¡JX»ðš} sØ/Î6“}g½Wá>�ÿ«·ažðq„ DÏè´§Àµd¼¹ÁMÀ0zñ5º™{œJY4þmâ‚犿†+èà©�˜- /5°£í‡WÚ¥³I+xW%l; >QgérìGg6ª;Ûlã_9ï ÌÓöÂ7ãPm^üe¼T;Á«i¼j•xv(듆qX=TØb�O2î‡;è&ð÷Ö ¾ÒžZáªügR�Y’Öð^»v¦·–£óÌ…Á¯t°Üž‚mP‹âøE— ÂJ5�Õ€òÖÞT¥…’@î“!©­ é²Ñÿlàð]vŽ[´TÄÝÇ ‚¹ö?ÔÇÏà#øU u5¡8¥ôP7PW¼ñ\] œ¢Åò1xÀ×ßžýXPCì(—ª }>§. v ÞŠ¡ž ~ÆÕ>ð‰ªìk‹ÔÒÑ[Á’½i£ošžÙ?,3âw¼YËyãxol„øàð0 þÚΞÚþ9ÙŽÖQæð—ýexeœ¯¡_¡=‡wwÚcx©ùã÷ÚîÓdÉnyV×Î^ˆCg[…‹ˆÀÚão'czg|è�»¶Ÿ ðÉ«$g-ü €—Ø; ‚·=��øµþå9©Ì( úM§ÊCTTJo„D! ôqpо©€ªO)õ!ƒ½?­V‡½Ž WxTh¢`�X� üW;ø½æð ìá�¾ˆŒ,Ác–ÁÁùX‘Ä•Uà�XrìØä lÕ*Iº˜OvOFW»ÁÒa´zUs§š¼iù5§bSù²R¤NEG_ÞQ9Ï6´P5×ü÷£JºSáO�Å,O�]$‰©ÌXŠ“¯¥R¼²±R‚,z1?µô¦)I"Ã�­ˆ¾ÒÊTЪ2\Á¥uÕÉj:?YGžÚ®›³%W91Ôü=½"ÔŠ.tvr:$fe‰Q×j´�Ù·Ê;”Æ'¥«ùæ“ÅwŒÅÚ¾ÍJNÒ3Ó[gÔ[Á™Immè¬s"JSõlA& œ¸•9³:LË*é§X“„ºîÕŠa¨œÏd3™Õ¦Õ4«øP¹¥ðøý*]¿úoõŸ‚Œ­›·îͬ1o²º‘à�Ûˆ²©4Ý0-Ûq=_\…ÁH”$#…ÅIËà ²D™B¥ÑåLy–¢[YEõíCË𝤭£«‡B3b°¸µêN3 +;�ƒ“‹›‡—�Ÿ( ($,"*&.!)E’–‘%S¨r4yº‚¢’²Šªšº†M[šZÚ:ºzú�!P�¤BQ£1Xž†–Žž�ÀÈÄÌB$±²±sprqóð’ùø…„EDÅÄ%$¥¤edåä•”UTÕÔÅ%$¥@þꫯÏfÛatïtVÕ=™RUÍ ;®²§^P§Sbõ?£�S=m;eò€?~HÍŠšÏ«Rêž`Ìæjº4LËv\R\» ]¦e;®)®Ó„î¸ <¤¸n—†iÙŽ«ÀCŠ«šÐ¥aZ¶ã*ð�â†Ì× ti˜–í¸ <¤¸©�ˆˆˆˆˆˆˆDDDDDDDDÌÌÌÌÌÌÌo©m@èÒ0-ÛqxH„+ò³É~J±¨ýyD¯c�»·*û–ÏxdðÆ‹µ?ç~Û'¹=&™–¼Ô¸ãëÿdÑðýÿâ‰^øŸò®Œ«I©¼ÚÀ12,=¯ =†þ „*;øOå]é­!ªx½d«èò ù6:€�Nâ‚“= ºý1ÓßÞDo·»{Îtv:öUi­‚æòœ­¥€úY…uîÙõHm„âhœ@eÄx9*¥É.N@ ãðœ|¿ªh½�ëXQ;[é$œÜÑÑ´dÚç¤[em8¶êSR?'ÑØñFªÄ*;Z±)íp%”ÙÁB1�¢ bîóŸÿ1Qœ)ÞØöÄÆ«à%¶3uˆ#}B’ˆÑˆ[h[…XÌș &׳y…³öíE>�“GsdfÓ ´Ô© ]]i�Þ|“4GR»æ� Å�PÄ££¯µ¸¨‚¨úϽð%˜"¯Dˆ6ðϸÅ4ÅQimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-math-italic.woff2UT ëÆ«jëÆ«jux è‡7€ÈwOF2Å4D¼Ä·„9’2‡ ?HVARˆl`?STAT� '‚<+‚8 Ÿ/V �¯X�™! ƒ`0‚âN6$‡< ‰ŠS †[6q‚©Cèfo¼]²»Ö™‡Qll›¾Û”iÓÌ×ôÌ@°qöp»Góÿÿ'' 9ôîÃýG¤Qk·a‘29 9„Ü…‡8�Ѝ1ѨÐX�êx5äÂs�‹¦J“ ©Eà £¸N^ÐEhyTð;i†õn1§¶–m_èèÝÙæë¸iÏÙʲ~­ÍÝÈZÄAáì‡áû†:vð!±ŒW˜™d|Ž5m†\D²%ó]ht±øù¿§6žL©›5å±´ ‡%c¡lì¤ÂxÚç{=7#ú³¦ ’qÕª�£ó’¾ Œ]f#Öi_Åáù¹õÞÿ½fÛ`ƒÞ¨T:Ájh± …Ú—ê…•ÇE*f  `“&´äˆíÿ!~ÎúyE´ºõ±¿R•¯²d;®šèpÓþOBBL‰B „ R*6—{®cô}5=1ÙN¦V[�çŸæø¼/3Y@pìV¢,búWøU!Ü6Ççù6ýÿÍ«x*–´%I-¢$�0Îcˆ î ¾ré•§_þ§æGTÂðlêÿŸÚÖÛmwjWô¹n{jÚ¥_e諾™v[-mB ˜E¬i’Á6û/ …ʈ}Ý“ÊI”¶+v3½‹êSkG+”BD! µ¶gk˜X �F©„:Üg(Íb}qÔï}¾œÚ°À’,sc'iÚtÛÏL±½‡ë¿þB:- ·ü6l'¶Å3üýÞsß_éÈ"± ×8ÊâVöU$ÈzpͼQ;.°¤ÀA<*¼šžšEkš¶Â� Ìß3•�¥#õ^ªf„ÏÕ.@Ç•Çeïj� ” œȵ?´Ôç³.séîðf\@”QW MàÉç� ¤â³Ÿ§S ÿçÚÎÐÒTZÛ&A�AåÀÜDéŽØ0ŒFä,“u°Œ‘#&Ñ&¢ÒŠ…�Ù�ò>½�´^íïÔ¾‘4V÷ØqгÅΖ”_z%à³{h »O��Îøtè&u©ô` ‘Íòëc%m•’ºâÌÓ†ãú<,¹NñO]Û)kýÒVþŒ çm• ­êP{Ž gѰTçÖœAZ,Ç!¶³äÉŸtá§K[»{º•µZß$ˆhÇOªkµ©¨ñ3Ì)Øá_ ¶”™É!:Ùý¦(5!ªm)nJ?pÈ…hPŸÏT³�¸x‘¸È»ŠrdÉ»÷Ü_ª«ÎÕΟÙ�Ý,¸XÒbAJ xôI…Ó xPçÇä@É)é©t HÊï(9]±vRåÖn]”¹è\÷±reøÿ~¬Õ½ÿÌÎ_qÄÓ¦bÔ°â�¦Y4H•J¢B£4`´ó}wÃb[ÿgjeZŹ�ÃÜžÁÌ�¤¦l�ÿ�-Êäg_.eÊíË]Äh�Æð®‰9Ó�zMŒyrx¯ w Gƹh7“1æ£{æ¶®)€³§&fpgŸœs‘3±|’)•eÎd õ„©^nÿo-µóçߟ\¶ ‘K\ãH˜í6çZv&¼pa’ âÎá^9€Ï׵°Ciª|ŸO]êjä Y/kû¹únþ¥M«Ý !졇I ª‘–)EÄB&âÛÞL=‰cÛk(%„S¦ó_¿ö¦ú�%rÈÅ£nñSLÔJn¥V�ëKêtnî0^�žX�ƒlZ õÍ»ŽR¢h”8¼‚éLšµ¡'K’êã{ciÏüv¦vÿÝãt­MŒD.Q‘íŸ 4zµýðQÛ‹Až €5 Á3R8”º¿Òæ¦?Ô6;=!µÇ“ {bÕÂtÖ8!óöËYqÆ3Q^ðß`†ùøÀ{úã=ÿe´¾ü9°_ùz?~Öß“ þïWxþÿ—Ïüòó�}÷KOüð—wv�ÞÛ‘zekì©Wî|®°ð|éà óÉ—õO^¹ýåúÑWÌôÙWé窋è5Û^—ê^µãõâž7¥ö¥Wn³°óÍÊÑ·¤öå;kW>YGl\{;÷ÌÔë÷åo,Þ¸¯}ã˜ö�ÙìVÆÍûÊ7ßrèƒàZ8·îÊÞzãþý~˜˜ûˆjÞ¾õÔí]�•[Ÿ¿²%±²K_Ù­¯nSVw(«‡Üµþék·§Ö74Öo}îú=åõ—Ü÷…mÿËAX]�Ù�ú¬ÞWšÞ!alàšåôXkÇ3Ÿß?õ €WUDôé(.j÷>§<ë¼°ê#ȪÏóè¤G±K#Úÿ9`ip¢xÁ�'pE£—жeZꥻ�â× \,Þª-®t—Ím®|ïivB¯Ò ìOC7¦ëpG(¨Ö¨ø{ñØ Ez",§ó}˜.`pO qŠ!}U>~SÎ=°*}ß0‚i|ð.¾’ßÛ#äÁí;F‡ ˜ŽN,: xâš`_Òú¼PH�VP÷ýB, ‚*΄Æo˜(h"ÇP¢F�£ËÂò[JL´ëYâ@]ëž©â¦%p—ôþ6´®†&{Ôº|ÞÌCÆ’õ_zKª¥†G­DLÅKžüœ£E’Âýî&ÛUºmœ»H@;+‹T;0ì|:Cdp;&Ú­(Þí÷Òz]®ÌU[KC_•æ,v1aþ�Ôõèñ2½ �øs¯ó ¡9&ñ.¨ à¯#0¤ Á-Ԝ󎛡~Õý]X^ÿW_yä–ãÕËwi’‘®®ŒV©¥8Õò\’0°,Šuñ÷.!Á9è[^[~’oæò�¼+:™Î\'ÞñwcM9¦nÊ}á¦<Ž‹¤‰©Ô…©ôF¦L o¹ŸÒe÷oÐoé@Ú• Ír“l"�·17ÈÀ¾h‰úü^�¿âH|[”«…š._ÙK! ŒK»b:?– ÌÃwQ¢ã¢’Éàˆ™T“P8¿2KX ¡øã¤‹8­_-AY(ôóSއvàÄ]mræû¡÷#eÓ´.ˆ2Sž’lŽ&RáàÜ“g®·¬™ÂO³œj!N)D8 :j1³kFð_X¹þ¸kfŽžo)|·6œ½dó$i¶°R†Š�Ýb¶�c~ WóúP.*Ðìõä‡ìI�”KÌÁ«ÄUœ±(µ‘Z.b^éΦZÅü2Až!²¤ÿM×/FZA +)XQvƒ,ZÇ·nyÓfù/¢ÒŸ›ë>åÕT#Í—�y'bh¥L†k­WôÀ&næîæY=w²Û!}úuÂSQ@ÇóÁ°+†zê óׂR‡MrtÁÑÿOdêf„ͬ.žŠn¿jC¦‘é"Ç9Îl0÷Í](ïSx¼÷Ò= ¿ÏÇNƒøQ7Œä—?& 9ýqÒ›þ´,V‡Xµqù‰ƒ‹‡OçÒ=Sà­Ü|*[Ç€ÕhÐÑ ùà¬à«›¥*,;4¹–Ÿï“ÿXH®ý3€´¿Œ˜@ûb1Í[ nXÂ玕]¡€àñŸÁÚø€*�¡}�¤šžG£ A'…q&~Ž öx‚¼¥‘8oS#ƒ•õ·9úz%_8 s bß®áå†üj‚þ¡ôò |^ýŸóüŸÛÔ�ŽSTœzgÝîãFÜU¢ù—Y×k_7o÷èï®·ž^šfèlðÍÞ¸«2nˆôcó§TA1œô{GŸ�>ë[2Wü^ê*Çžx+¡JoŒ‹ìhâ¡7wȰƒÜ_5N·‚½Š‹¥˜ËRr_�|wÌ<ú(G­FêŠü®Q%Õù„°ú?Ž2€ÿxsk·GeúÝP� P\ívÌVêVÏ䮜 O:?<æa‚‹@Ab n³-„`?‰Ë©ý½ûÙeT"¨ÉBÄîr4¸t¯ÕªPˆ;+‡0mÇW?hT^Ÿû©¸Òf£-¸y÷�/A8 Ê?ÖÉP ÎoÌÓ' Ášó‘om9™V*‰þlyå¦:šÖæWµ93)¥«te3úãp.¤O@"äÏÀB,| cÉQXŠÅ… °�–’Ÿ Z­œrD_;– ï�æn2Ço©H{ "AÖK†Û€™½xÃò#X‹¢O€ï¥G�ß ¢„†žÁ@ë3€C¿ÚÏ{àô¿޾„Õ`9³þûu™r”MºñOh½e·¬DâŽ<¸î^îýÁÀúóí¿‡³ ~ÄÉcüi3T�¥AÿØr„Ï@ú‰B¸ŸNAè™t ¾øk¨^JEðåõX{퇼™„ñ·æaú[¼¿%Òþ�0äÿ˜�ã_p–gÒ5��h’È¿Çvþë““W™õ«~úÝ›'k‚ïûû¤ÅÇѵÿ÷¿çÿ#+O“¤ˆçÖM>·eø|iï ½þKµ£//5^‰}íÕuî Ç^{ûæÏoÞóú6í�ÕÃxWéÒóoêÇÞvw½=|gB¹z´ønbó=ÉCïùÀåÓZ—oÝѼuWse÷îOæ¶>s<òÙ”ƒŸK# kç èûfõû§'l,'Æ·? €$@SPÇ ïf»žË¦u7ÝÿÐ5ÿ=™ ×Äs÷>U“ˆ¼©s䲨0 }üîØIÖÁïîÇ#ï™Úè�P<2]üŒå=JUúëô8Ìx¬àð;DßÅ­kkÑZM’»Þ˜~ÐÞ¹¸X“Ç|B¶è´€úêëÿÿ µŒvðHؽ*ü ðâ“„}2£Ôq†ür«™ÕA6~3ÛÔÿLN‡anºÇ€>ÜGUD…[„å‰Þбì\»�¹zíú&-½ž†):ˆ„Jßµß\¹Žœ]03e¹Â*‹‹sÔ’ôóKF¼èŠô’[i,ìÿGBaàÛÂÄÉ'lΟE)t_>žÍ•ùJ¾šæ§ùņÅkícj¡ «ˆJZ™»±øÆ } {>Ë07DPý>ïÏ'é¿ÉkFþæáÉåÏN´÷^�ŒKÎÛgýÿC†ûèŸÔ·èÇõýŸúçú÷õ‡¶=}|õ³ô·Õý«¯¥ÿ\ݽZòô²§žŽûŸ�ѾÕ\-Ì÷ŽwÙò6G? ú Ú*ê¥p»*ë67(±Ôlí™êše,3¬Øn³ÌÅ�ú±Á&ÇiGÕý6_²jŠO!Ò©‚™ŒÀ׳µö ßÛ/@:sj'Æ¡¦$D/ßS ”!޶é`”þç|2Z6~Ÿà’j¶·òö¼7|ìKª×xÁ°ùvb*z&^òÉ…mS‡{˜]¥V½^çslýv팜œŠ—Ý>,mMšˆ¤N~'Äþ¢»ìž$üŠ7Y«“¥¶q0Qd„·¤OöR=”IºJ(&Q걓š Ôîñ3%º±‰ú‰dÎBuïAÕ\èÖ1GÑGõ ªQšð¡ûËwý�Â�kÈ�29YòË…@›ÌÊ› Ò�FÉŽ‹Úi9—˜úš‘9,iä·j˜Þ˜EÝyÿ.Ûí:QŸcÍ6câ:Ájð†Ë%W…ž òx0Ö?¾¿× óª�ðÊxAŸ–.ÕëuJ’»CÍÆ�±q›ŸòC*8Õ:èZÈÕ׋û îÕ8ÃæÇíWÃÅy§ngÙ4Um3 K–Ÿ],Nhsy¢8‘Ü#¹qÊÕDòNÛU'‹“ —x£Àåb¿×5×Ôz¡ω G²1k!Š"ƶ¼sìmC³µ¾UnoS� ÏÝ;š‡ã¤¹Ñ®PIM MPq÷ îYÃVŸž)[îy§v~¥�n°ôÕ]®×Z9ÒRjÃf q4 Q|ֈƧùî6•¤oiN‹hÆotb!òʽív¹�bÍAÿdEV_âÅú;? ¨ž?‚}®ø¶á¦t×¶Ž2àA‡ü.‰SÚÅõÒ‚/'â V6KK¯5ô{Ž» wSœ XLÿ�&Gë2ÏæO¢Õ9°ï¼ê|í°ù"�"Úw±¸hpÙ;¨�"Ê:©Hø s|Ú%]×yGeÝ“r��Õè ‘dn¬‡­Ú³jr¦g„ìëpÕQ…S��ÃbA<¡Ê~ þqM|kêD´ŽúÇ›Í(52ïRÔ¡nKhÊÀm¸b[¢Ñ¼„ø1ʚ̀º�#M…KŽ;{ÁQpUÿ…SËuÇq1ߣ#ÄL™Qñ€]ÍÔl=Ç„ ÞU3Aý{¯BeN˜ oéâ£é°ŽïÁLUèüÅcvÎPE’¶M >¨~áû« `ûþ¹LáŠK3‡¹É. ×üE¾ZL€AA?”öJâ87¨­¸Äcú!6“¶eþUîïëɤ ¹™åi³¨>¶gš€) åßÖq2²ºÕîg2&ñý«ÌF By²™òZ±ßË»1” µ%/üŽl^½ˆ€ˆ)@õ‘Žü3¹°i¸0 ý®@©kÝcʸlîsmò3©þ$:Ÿè°ÔÞ¨Ñ*&µÎá½ßXnÄE‡½8¡mÌâoviY9CÎg–dÞ!^"ZÌæW�ó�¦]±–íá´Ni~$ 9-f—ù&ÖÌÀ?À,kem’ý3„å#ÙQV•BTˆ9PEÞ·ð/ôå¥# *‰ÐcÕrw«NƦà§–¡º~$€Cé5~¨`媻ÎiΰLLh�Iï93Æ 0¨{V™õD©üÖ­ÀKޝ]6¸¡ÜüÙGÁøÝ_GŸ*(¸?úÔ‘kf¿ŒÊØ?2ûX»ƒˆV¨qnQš9e£¥Xm ñ3ù2¼(Æ á8�Åú;×~?3™ŠI.ÇÇ9·2뿵›U¨G\�¢áåÆpä]ð%ÞØlCrnž(]�ªóå†Su Ë–¼ãvº>öû²¡Ô ‚ç#L¡Þc–¢Þ5aÌ39�œ@¸ÎT°øŠ@ÇÕñÊ#|=¢¹ÔS ‡Ð!5Q˜ÙÐEzùIaBÕðÄm·[> ¿Ö¶á‘³>YZjöjwâ±µ ¦Ã Q–Á :©@\„ßÿ÷:§±™7 ç4°šµà{>úe›ØPä¬q~å]z&Ÿ!ªÒÿ%#GÙ/e¸‡þ¸‘¯¹TW}V¯ûâ�¸ ô"ÂÎJ̇Z$rB7gîæJjòºŠ¿ÄJÆia0œäÇç˜6•NJcë!�71!Ø,õÖË8Ÿ¶Þcap÷«n¦BT[¬™8‹C9Çk[­šM7W¡±”c1þÚ 2ÝÓ¥¶dÎ1t�¡\c}Øß¶B(bÐ ”Îó;+Œº ³üÞ2u !žˆrÀ_è=ëÕˆ[ÉíT~Gnü9A² iÉ–²N@Ö®çG$þ5´Â<7Nsi{Þ÷œÞÃ}V/f¸õsк§nü˜7yâPr(¬jõ^¯Ó:É–y¡­obD¼�TCJìÝ€AÀÿ�¦9ÉÏgE΀sN£è†Tå 9:�˜kÎA<‡|¥y%½lt%‘^ƒpe )|dc™ÓêþpÛ? ]–/yl12�  ‘ª„ÂýÆ#ˆ%”Bù²›D ô$·r¡ 'Â�ã½óï@¾±ºu[ÀŽ/w­ú4:!ˆ Ç-é”Yw$è¡èè÷ÚM"+¥Í©¤v»kŒCœãh Ô<öS¬*äì`ïIôW]; ‘¹JÃié›=½BTK÷&ÕT8NÇ /ÛºK@]�ì=ËÎî†4j…nZ–¬݇®·¾†ƒ–/|Ž×–!ã“{¯:<ñ–´Ç+Ý-r^nì1Ûú�Ë*¿“uM†×\»–h½ey‘NðzÖÉ=79ÇÏ» YF´(ûþpø¨…Û‘N;4sçsš¨P¢5‡ ¼g¸ÝÖµCX¼yƒÞÞ×î’UØ [‘â¿,žÂ÷˜kûztšÍÅh/&�çúQ·6ÿaºÔo™¸?�í×TÆH�x'}`¨ýÍÄ È͇‰ÿ^Rº2÷ËNæ`Áà+“•H'´�-‡´~"ú‡.\Ó­#�̘&’öì,Û)Ÿ=yÏ̶D§’žÇ¤¼ù f˜‹ä@V�ï·S¬ß{??¾éšõŒÉëÑÑI-^.uô¶¾ Y.S5Ä þÖ&–Âczê\u’@¿R§mÚvVCúy<¡QlAU4sb.YzjÊŒ_¿‚ÿ5YÜžf—ú^ëW•i°Þ>˜eEêÈ·w…×1R›b¨9nòôÔ¢FTaCWzÌ]èÜ{îTÃA­�‰[ר¾G÷(T´c«õ—ħ8ÒaNo~„ØÏ†b>œJ(O�ƒÏˆí‡{ÔÃͦW° ™h)”CNS™4OpÁé~õeE²XÔ””j…E!�|䜵%(ÓHEò ­\Pm,nÍØ#ÌÎÄiŠ#£K$Ê¿èG«}A_†‡›SäÎ*¯t1z_GZãóke\–¸%2‘¶:Þ²¥7l UV›7Y¶G2™âx”M'#aÍør$ òIÖ¶¯àŽ#¶œ_í i:;«!P ÂLk¥�Ùµ§ŸW­ê7Ð]ûâøG`zJp,x rj¶óYÜ-ákF*<·-ÆÚ“­H0 cëÅò´L¿OegÁq£±þrn%í:`�×¾›3‹Â�„àÊ90‘Ö_ÜÐs`Ëœ…oÂåjÖÞÝ||Έ4O0×Ë)q‘!Ùžhìƒ>E3Ø5,þ†é,›—b­m&VJ©- ûokºk“"û”ðGdÖÁwiVáxf¿�¨G†›Ê}háÛ¼@t8|÷·á_ã_ MŠŸ\Ï&gcˆj’”SD0D$ö.ÓC6fBn1~î;B]Ç}7ÇE�-é­g<íg²;ÏtϺ_Pa‚NÃ~_Ík;îé9žÝq|>#[%Ê*‘6¢‰¶¬Áíf". ù›´·ùq.®Aä¬ÚsQèôO>Ú–xŒé3Ó—Ö™JòV]”ÃÚ¹åռƺƒ7dMA¨Ç,Þ×^„ÓRþ#äù—ùc„­–ü ‘€Ãå¤=!<ܘ‰ßöyÕ®c˜ðƒ¹+â±>‰²¾yl (r>ÿ¨t‡[Åj/âr Úã·\‰’BV~!�VÐ?hG óÙ9÷j\Óceó9+’1·Dét�õG5ƒl$·°-~Ð “± 9´üÏÐàöta®~¸ôöÙãåò‰¾ö’48¬•LiÛP�Lu}ƒµÔo( g׊÷Å�®¾xJ׬¼wÿù‰Q3Úw9fgÄQ`Ó…4vÒA2â­R›°7MÆÎ¬!‰(Î~´¶âñ°†S«¸e LM³Y­™Çq Y BÌ[ƒÍK\á¸Æ"_Y­q†û;ççÝ’²ƒÝí÷iP1­b*f&�ÿÆÕ ›o}´˜ú–ZÿÍ“™­¡ ÄbäMßUaýÛ {€¸¦0KâùƒäZ¡Âº§HoÈr3»fÆ{±öpB(¹àΑýÐ�!]g%²`´ë„R»Ö¤Á\ØõXž° ØpD¯¼3cƒ?g=k|‹Ë^›àO3åëKÆ¢+‚‹ÜŸ¹ûf¿ç«·pº3»N_;f){¥cñ²¶fˆí"V4¦Osšª;Ün’Xë<˜)Y øRô(J˜øNìd7¨%ÌþÜ~F']4ØÕ‹ë.’Ä•dÔ2›êÖn(\½ó2Æ„À®Ù1W©H¦¤ZŒ%n¹ÃvñãÚó “ØF!¡ìZ)¡‰Ý#�õjFZŸ½¹(Ñ- :˜r§YǨ+)·1U*W4XÖV¾‡ç“�‹”îqõ£øÿPÝ•FqÌJx‡[d‹¢¡6Ól±ÒuÈ$¹7i‡ÿH}^ùŽòŽ™R›Ñ>‘âÊQ¨¢±oñrøÙ]zƒÓ†Ô 'ù-5n(P¯Ê$d"ã¨XdNzv.†¤üÒbœ¯8Tç›TA;�?¢l˜tù“‡-š²r1�PRü/¥ ‡ÕQ=šF}^뇱¶ùß” (9¸{Ö‚ÆúP?1`­~ZSUk¿þ¶mžÈŠz5Õôb\v�†ìä*Ì•ZæŠ�î¬H¿^ èàOß�O5žz7d©'|©*õ*sÖVÛ[ÊpÈì[~Hö˜ÅäèŸôèók<]šÝ¹|uORžÒ† $aû�yâB’6»ê çµ-Šç˜àid1>´Ë› ãRwPüG>|óp˜pu÷Ä¢û!u¾¯z£ðQë7�믞F£¿†Î”>ÅL�ëc0E ܨÅΔ9ÀàýÛPtoMÔE 7 æ3O‹ÛþüÆï?*†zïfÈØ)&leî~T·ø@¬YpaÍÚËó€B4—‘Щ‡»o(ÞJƒJ€Â�CîêÙÞêå4^?±÷i‹€ Ëè´Ô…[¶LüIHÅšriUal�´z¨ïbLýÊ*3h0‡[Ýõf{/�ñzOg$°à<âÍSý-Tȵ'̇�îЇó÷e¿Ô[—½�>‡ƒ¼÷„ñÆbÏoÉð Ù`øùnë�ã‚€3 âd̯÷pm„2N6ˀI¯úàÊmUugäE�žøqèãÿ�¶#Ÿßê8²Ð~‡èü=âB|Ãy³éÈþö»¤ºiѺÑ&›Àƒ^7Þ»ôÉŠhªÈeVŒ•‹¿iq //EüG.mïU¥øP½‹{q÷süìŒ »ëÍñÁ,óœ«cÄ1±Ur]ñˆÖõ™ß1¯ã¦å¿c�ŽnM{ʧãèR[eÀøú£´Éñ­"�(=·õï&ØÏ>½xÆN;1ßÙ›øCÿ¹Úÿ»´s?­??“©¢\ŒÎñÊÉÅØv`Õ”¿òá<©ª#YhèY•@‚b ›u$·ÚĘu[�hëe°“±cí³(Q¹=ž‡ËÐ`q(¡ŠDJ‘ä˜ý¦jæâˆýzA :Ì¿ :óQìÌ®°†x ¸ã®Rª'1P»ø¥ëPà/=þ@}¼kj`¼uAd8ÝtêôjÐÍVócß½( ÕDl¬lM<+ô«ö¶¶gê ª^ÆÝܸˆº½ŒóþmñÙ{ïfÞ–#[8[cXÌi’hïæµÍ|äÞw½^ÛŽô†í £§R6Žx{?L÷V{)¶¦çºÒ”1À{;¼×Ç矵W‹¯ŸO?õïÉùîo»£‹á!‰ã‡6¾{Ñq¡ŸqÄG…ƒ{Jˆ{§ ;UQݗãv‚ÃQwþÞ³uðExÄ·?˜{çƒ¿ÞØÿU8I€x¾÷ùö{³Áá¨÷þp“bzg51úÙiÍýÀù2HÒã?ý¡H\C¯¥Eœü)ËRh<Þ6”ö i+.WΧʫî±%ކn/¤Êðåë�7µ/ö�ß«õäaíp4_ƒ6ÿ K¯´w¨ xU#a6鬶^Ù˜ ²4)Áw¢#|9|™ÓŒ‡ö€d…~ÿV›ÝXŽb@@_jmÌ|,½Ú=¾ÊsxÈN’¢»?á”Ò©hP t™r!»¾d(a/ÏbíHý ز¡0œhÈy_{fhà$ÝJŽÌšª…âäÓrë|ñÛMBt‹Ç¡u!>µ '†e}|Úr[cÖcÙÕÞñU®‘UUH•à”�¢PéqfõRør¸'ú�ïK‡¥¯<Ê“¥É� 8õ¥Ã¿™ùVc»ƒä$)]Ø9ØiE½¼1õG`ëºNu®»�é5öä•¢Ž�{ûùÌ¡9ÓÏEËÉaé@wçtgÉL£%̤¥·‚º"»M¢"…MêØ‚MϸÀÁ‘Cmñt^¨` ^ &¿Re‰4b·‹+œ‰Ìs$ ­ã#BhŠP£‚t�ªžGu¼,Š£ªx³� ¥Ï®¿þ¡Ï6>»?�oO!êuÒÔY�|/]ØÂù†hi2ßVeø ¢:’¿Y‡ÛwG³#OáQ~I“Hˆ/F¢jj Þ‰§Ô ¬Ú=r)q^Ù,…Ær‹”H`è…ÊÎÖý!ü0¹X‹©�¿4‹Eåã¢ôH¼Q„�J/×£ˆÂ¤Z\ZŽüY"Û¯ñTK¤,Jv1À`µŒRd¢ ¾E‰ä�í_™XŸíѨ.cѰýƒ¤cÆ/bKÓÔ•á%èk¿vzÂ!y9M …<ƒãÍ#ž×ÒqÈL)êüt)ôÖR=s¢“[ð+¢ ƒÍN$‹Â—ÃWZ"*áS…y $þö‡/4ŽsÏýæº81rõÎØØêðošAðƒ€\£µŸ*r6õù×û¶ÕÔ�ÒD�OoVmdÿêÔú°.Ž@a1òk‹­Ná:¸Éúû²ü؈DÁqùu…¶&éùèã¹€Ó¬)ð;›ùVë(U.iÇZÄ™ÁJçľõ©SÃÇcÈ �vPïy~ÄôäÏ�Ž3&Í¥nsÆ+ÒÓîíGÙ¶®ÓDÑåò¾äëëGç)«É•ëð£Igªp.#[Hn,VZ°c°5uoçxhú“ðßs£ßõ}á0÷—se}úr›ÝüúºÒ3¾Â5²ª èR¾^hã€þ½½j+bÚÛœ…Šï ¶'º7má‚(i¯ß#‡µË•÷ hË­ Y�e×Ü«<Ó^H“æàÖÛ#"sj”&S.b;ÑC {¸:c_©�¤tá–ĻȢýïKw©­-nÜ{+‰ÓKp³›mê% ã[ÿ— ;í{8ó…"¡#£ˆ[�ή@“™iq�™¬’{–ý òµ|wQ_ªDU-¤%òJÈÉDDuÖʶ§/1cj�Uãæ.¨/µ¿Ëp(„y†Ôô­¾àŸhp¸Ûd;›“‹Ç$ƒí]C†ÈØ ¿ƒo– ƒ*ÚÆ¬NŸjñÃGS¨l.cÑ8üQÒ1ãç‹7ÕýÀŸo³ŽPc¿ñ#RWñ�ÿ¾­ q[¹%mèÏq. ½·Ä.lSl¶o9Zìû²UÃD¶žD¨6ѽ/m¢ûnri)òÄQ^最¾K½“T™èµTù…„iê8\º Âx”û¸z|kßõû¦/‘‡¯žR�Š.~žýê½í˸xECe¡�9à®2rüq�;|úÓ¶¾UØV>0B5ŸLÿzk¾ÞÑï!DC#é Ò/Áí»Áî´_HQ vðYÂøŒ­>>çÌýJíQLdSœ§iXa%#-’ŽéB,Æ£²á#õd\¤¹n ¸… $ÛØÑ~„άǒ®p¬0•9 z᥽;½(^j:Ák{¤‚¡ã)¸Èʺþúm>Ì’…ñÇ×dfébÕéb° ëÍÄkÙМ;÷Õˆj!ã¶sêà!€L E9”í;³ Š 2T Ê*î $΄·äÓÊœÑb85N Î@·€S¿¸Šè¥ `ˆÎÏ´#ùÛqÅ|¿oT!„í”Rãiñv¹�Å!ÔWq?*'éhòî5ºK=œÓ„�îK TÆEE Š5‹­eà*äÒ¦J6á{œ„¬ÖŽ_ãr‹‰ÖnF&¡²Œ{MRR"FçdQ«qÑEC?D óˆ¹ibÁãiø}2—˜Ù¶9ªàJñAdHÿ@á `|àæøKÈúoˆßMA”9àK>Å^•§-Ìû�§A€JdŸ{r¸íÖn)§¡¶UÅþàôX”sè&…Ðó]»²�±Zä<¼” VGYTXmR)M,Ãnr¨ßÈ“oñd y¶¼|y©ª¦F ö%†2 D³}âWTû.&t]Ìò;eÁçIÏ6.ØÁÁ¥F«}zT½Z¡ÖirÿœX§ÖƒÆFo~>žù÷ ù‡ù ý2,`öç*¸©«¥‘!ìÔ‘Ç[ 0wi�œþÐUc³×¿v mÇêçïæeyúN»ÁŽÌ÷C¨ÒsJq†šH ,VQ^++Fg°a¤Œ1È<¶2¢W+-)I¥Áˆ™8,½Èžõ}[ü.nfŒœžøiè¯c›‘OEo¶Yl»Cpþ‰ mA|Ëy£ymû]bý´dÝd—M–‹»ª¿wñÓÃâ©b—Y1^~z£Ò-¼²`ÅÆN€ŸGº>'âÌÉÀ3gV|sÏûq‚ŽyÓ tÞjŽ zó80:v¦:c:;Õ7%°Cg²â·Õ'«Ëá0aüŽ0c|h,x;ÜÁD÷)5Ú<Âú$ùÏP$õÙˆÿëÕUwFú¸_¬öÑŸöIKktî HÚÈëJag‘H›ÞNêèßu€;Ì”õf …)�¥µÓnlU�vå�§êSvæ ¸ÏB‡(«©Ü7úG%ðãûH¼Eˆ-0¡äÂ?díÉ$<ƒÏ8R²”G} tŸ4ËOØvw~õäÀ\*µÈì/â†ö�;&Ú"ÿþt²âBHOÑÉH (;¾�QPK³ŒLÑíÐÚg!·æfýq1D:›K_4 åB«+ô?ë-ÖªLØ‚!4J2ƒõ!‹Ã±'€öiãâÚ¿{›;›r¡*aüî%S³aJÌ»:—ãßÜÊL>a�ß¾hÖy¨�LÍ.Þ—°™ÜQÈnâÅxì‹L5d¼dT>¦¤4ÒucÜ·À  uÈÜ@õìùteö+ù¾Ø¼,† ¶um7D² /¤'#%þôÌÃÕþ{¼öߺzùãW¯#ò €;äe6FL1¢w™îŸhpâKú+}§Ã²¡D‘~ë(| òÜÏM]aÎøÒ‡½Éîæ‹ ]´›K™Ÿïìø�µ¾ Ø4{–#Lf§—ªË ‰ò„VEiŸªN·q©£?ÖGÝÜVI(¨QIZ1¤ÐDùVM¢Åòbs`ÉZzi¦‰!ÚÈ*:.×(+Àc#ƒ3ãAÎ úòü'Á”käÇ�чCó2^HB üáoÚ$986ý à+stgÕû7Ë÷µ­é¤—·+·¹í“kÂjÓ¹1�ö„V”§L«Íi}éTìv_ÕîFe›œ½ªãÔwâ îåi®"M˜žø3�¦BúÔÂÅ^}æÅ �gƒ]Ëì‹Þ•54U%q:°êªòíЪ<»ÎHgÆþi-Ū™è Cúaäï!g>y·cuÖ=ÍÒŒë\ÏÏÑÃ1Ås�¼Ä£ÌyW÷†Éè-¨ÐåºA³MÊÞ¯(-k\ëXö%û�î¿ã–îD€v#27˜|™Ò;*hBí dÇçåã0‰äà¶î!SdÔŸÀÓ×/J ”…ñ +µ�0n <¹©±Ê ÐËV ÞŒ~ä÷*{y\@„õ~ûööPçÝ{¶ ÕJÍùþƳ鷫Œ�LØ²Ž¹YW…í³cq¾=°Å¹‹û&'n³#ª¯ìÚñ®rÈOûN·Úà;Ã7w—ï‹YfuÒ­:§Ô”ðù3õ—Dì~LHFhKLë^j¬FÕì@ÚöH×aüm¤ßƒx¹\Lİc ç))­þlTûýqØÚ3ã£{F—ÞX@i/Ø|Vì“�rD]͘'pÛo»­@Ÿ™æ€5SÍÑò§à˜…Ó¨2À¾;߯]õ3>‚¶‡Fï.·bþsþÃk:N«nþ…²©¯‡oÄ ªF!=¸¼Å²8rMI(/Ä’+´‘Ì£á§8’ÀÙ`ê"€ X`Jbâ:ÖWìÎrUFïë<ɰ"ÁïÔ²wH;$à3áë�]ñ_Aá±3¾j²ä^oOÙ‹æûÇw|Qá9óÃDã¿Y¸¯šoÎÏ©Ñu±3B�ÛVvfÿ-ÚÓíMì³K–žÊbW‹h9ý¦õªó¥^ rC?öÏÚq'ÍLØQúªËs´Â©“¤²Â½ŒÀ£OwG1ždîT˜<Æ–Ù²(ÐN§Ýrt Lï­mâ¨ÌsÄHÐÑ"1 ûà'˜B”]’ . ¯Ì²Žú?ä„ó°;Oð^Vøi}dÞ‚dsn-º9‘áý½—úCé‡> ‘ÿð î~Ÿ�˜šKîͳ–ì`%ñ}à7W§c;†‡æ†ü2ƒÃê½ñ߯ē®ô'ý¾R‡{J5kÃ6”šæœR¡›ÅVKh#n¾Dº¿S[d8àÔŠz™´!µ�6Ú+ºÜN®Qåêr Õ Oå¨àHkOûp5u|��K¬Qò´5š˜‘g0²ãPÁ•D£°¿Òˇ¹{lmFö{ /%˜åP;ÑË{õìZ¨/:µÅU@MeÈ ç)qrPfÖÉšC“< 檌Ê*iÇg¿9í û,�oœà 9òw/·çX¾ÚäÁuoô{»¡íöï|ú‰=À»_üÞ>¤vÚ'{ªý‰™ wÎ ‚·ÿ8u’ù£cšñÙú;{ZÅ7ß~{óó;mÖ¯bÂ1Àb¢(ö¦ õG„á+ü`sAG„£§þLB—vãtDå[wã5Ç  _È¥Vйî¸x Y‹Ê•–R”TJ"> =͵p,ª‹û<ï�ØÚ®öZ4¢N (€êEÿùf£#n›"V !�ëG�U]wmJR ŸJ š;ÑòFg�ooTA¿¥é˜4FÃAdæxÉ’ ùd�±‹èÅ,üðâÃJ*= WT@fP �GN«†høv-¥‚ý‚žˆŠt”øw¾$oËàp$ÄX�XµSØB‘rÔd^¦ÜJ¿@;²ù‰Ð9ï´ˆöÍI¬®¹FÎG»ÀÑÀÑèNw°ýL÷åäÅ»ŽÈ/¿´L‡ž4¬©Êx…u©Ld[ÎJ;ܽ~Ò˜÷ÀðIˆºJ|æµÿHè¦È¡·çìS»Å&Sƒ (̘žr1­¨5”žrõ`ÂRn'œƒ”)p”Úìið²Ô»ºQ&3ÝG¿[]ŬF@~!°l¤¢ífjÔBÞ~qO;[ØÜ25)Š>Qx@ÒÑJ£4b¤Êâ��i© ´X$F�Åæk µ€˜’m`p¸½äóæãçŒ�I¿³1Ž&‚²°“!Wû)µ8–¦¾Õ†MnåèšJHUhNyŠ ]^JÆÐ¸T¨2Wª‡I0‚ß²Ëà Eh=êŠiÇnÍE«ë\U¸ä¶®©„gkÃ|Þzü¬¡øtaE^–¬‡VÑܲ‹!@¾zâö.D%ÜG C�À¡]?Š"Ò*Ô4To�ˆtgóãó© Ó¶å0[I 3º˜Ðþ„’!×±³ÆBTüÄä),ìøýùo|*Ÿ¹Û.ëñÈñ‰¯ñåñ“ûüpQd�C›×�|�¼nùr°H=ð7Y¬’#È™òe‡hCµjl1t è}0æóþçÌÞÚe #¸Sÿìˆ4”{Ƭ�çet\ †"xÌØï£;^¦ÅQUÜÙ® 5œðÑïi6¡LV jˆœkû+™ÝD‚°çU“º8}~ì|!ñ¯'‰T|R[ÙÏ×ãçÿ{áù’ ÷Ç,—•�ÉáïÃ_+ª:Ò¤>;·22‰¤®è.p¨ö›÷Ï&óÅ=&~1@¸¹[¨F{ B'tFWtGôD/ôÁ@ À–t°s4æ ÊÑ‚;Ø¡L wC@JH›»4ïžP 4#ôž§¸Wf¥ä.¿•²ú¿£)yÍž²üÿ 9Umú_Nfó| T¯":Ó[ )ÿ´e)ÿ¶´” -Áüà…ÿ!à½èy‚DR@N’GL2~(²{yS�(&Ï(¦÷)Ê—šTÏ'“òpKùãyÌ$ý¹8ôWp¨ÕÀ¡Çpè º ÇØSŒ!Lœâíù¡?øŸs€Ð/[zð?lã,òÝXû]ØoÀÕƒEú<ûQÐzlÿœ‡ñ_:‘]à;Úý1qa€Ÿ´[ÝzƲ®.€íHá\ea·mŸÝ¸ýþ-ÝXµwk–n*Ò|&WÜÿl–aÛz k>K±wº=�ü�ÞÂÎz"KäÚHmáÚáø—v^w{˿簦Ö66;ØQÐÌkkŽQ¤šî™Í­Ø–·aÈzN¶ýŸäWN ¸6„väÒ6RóZêÚ Ú›óØÕp_ `º‘sí¡F¥ª˜ øýŸ¶7{œWg1;xWZ[6ƒ×$‚UÞ©~À»àÒe[¯Ê!(DõFÓr�W§Ÿ¯NÄŸ9‘âÍNÅòÁ”`ú±Ž(½œBŠÒ#Ïtî{gw7;8~…#92¯Z"Mw|Èù€‡˜1ÿ!yʰ۴þô?þùv’ßJ…e(zÛ%"´‘ñ狊H±¹:²D…UÍ=v=/9o}Y«u2érÈÁ[Ðð°ÚWB’\ì˜�b»Ýê³µ=ß_Õñ„º ìx¶Ù0‚uZ‹Ý8¡‰ú½ÅÓË'·Mqâã}ϘONਨð½=¶v›«ë’Aw–ÌcóІ;�ˆm"NE¤xéó{è�[—®1% ¥!‰¸: ÎzRÈL"¹ð a_ŸDé@æ,Ã^ž|uG5ËØ–ˆJª{ 6ãQÁðx-ç%qÞSÑÎèÞ‚EåM¯…¨H"›ÏÁeí§grŒfƒà)*œ—UD]3a¥äEn¤9�ÈΔ̀* Ó¥bgœƒ6â×i(ÑÅði»Z•%¨ü›Öõ¨I8#Ű4†“ÖÚ#ÜÀ‡±gÁl¸w§§„€kÅ-«;�Ko#(ʼnðd‹Ââ!ZÎ,á…äeðÍêV×—ö¡˜.@öÈ]µ],F£Žm!˜ Í|œºÛGiöúÍüÃçÏ'CÄÇc5á¶ËãS�&J\Šða„ÓN{)µ¢Œ é9D§•€|Kaœs0ŠFÙ&ƒEçœDìô‹n£ìu`¼?Ñp­!F‘µÏ8�àÜé²ï‚Ìq>Íú;®  QçȾ 4Å‘#-³HœV“˜ "Ãu¹§E‹’ÃΑ{±÷2æv™Ó–[G3“Oõ¶·äçÎA3§Ð§ët×BÀ“éâoMÁ¤©÷0×[ÎrÍîâ¶Ù,°Êº×*ë…I:ÊîÊÓãvbºð<Ñy6CãÇ-FÂY6„Lö‚M�ª“�c|‚IR¾ê´’‹(§W\÷ÈÏ*R¬eJ�· u”èD Æ¡c(Á×I/[t”˜0á9ý-5ûŒÉ¥€Vþz¥ó©rR:1“1 áèÈQ±ª£,¶OøM-`™ªÙN¢¢ˆI²Xv!^¸¹RÕkC=iΠ‚>úÖk§ À=Y9ÔõkûZ°†w�{çƒ^ÆY½JÛq°:}°º�¥iô~í^¼”—öö™:>þP«;ˆs_J%%m‘ëÿ´Ró¹§"ƒXýiýŒE&ãã`q)Ž™iáÉ>ÅÃÖ, Ê"�¤axá_ÇŽ ðYØ«qÖnQˆí¶‹±¥ìæ\Û½è'{XGж…[›ŸÔR-5±’pNkfÓ¨†*€Ð­ä©ó:#NÛé4„…‰”‹…c%è“‹£^`šR2Høõ.ö4ʾËDþVokÁh��ÇÈËØ´�Ô"®µ'Âi—›:T�],"oJý½ÌߢœØz&o�Ri�Ø td o*!«�¶“”7%8™÷«·»4iBbð¨ª沓µcšÌޤk:WU²&]()³&(�åµ0µC¸zçÕäÜ€ãR3%BtPxðX¤Sœ#&¹»Ø€ÞEÄúAöáÉàuNÖ¶à§�ý åC57(uŽb.I–2,7X¥µ1ˆ¬ëø5ÿµig/Tµ5La(ë¹_l�`‚qÇÎ7ÔØ Cð’|ÃÐsG{îÝȹ,¹`iÉÊ�û5\´,¤Áq'š8¼˜š4g9øƒÀÛv0“3ÏÏæÀ™KÛ>Å耘§*œ "‚6·À¶ž%*Ï[ê…RšÂAcܤyf”ðöLϧ™OVÄÃ6�!˜�KN/nÐð¡ cpàü`쌖÷fÅë[äFt7oÚ*žnWåhdÊ–Ná­±º’çiäF/ßa8Û6³1®(oÑY“Cçí�¦¶€üN/LPߣ}‘t‡Å¢× 6ãºêL朚*Œ@>iÍ¥²@1WûªžÏ2úeÌÝê»3®z`ë³Øù'å¼ô!^5 U¡HqªÜ>±;›‘`mö�5m¯ÛœÍ8/Q¶Yš×àtƒBRÃ1Vn’:â=y� 炌†Ü;bcBÖ†&¡ˆ<´J”ølÁí`q­�¦Ô¤nŸ—‘ë{[Æúh[· ¾&Ú¨,÷é5ó´‹X^ôû°÷Çɘ³I�‡*!O eaÄ£fs*qGše¤jçýã:$σ«ã9Ä©VivAƒÉ!MaÑ|/$J�ÆN°:V ŽÂE†ñ¢1=t"Ömš• Óg‹�ÁP·#‚²Øh Žß…<ç‘I™&°@e/žª½¥ ö„R)üŸHŒ‡hD©e ¨ ¹/Ùñ0ˆË=ií*nœ –îüÙÕÁÇÕï!÷£§xÁÜâÑõկŜO×N³òWþoÞS:« ç–Œ3F2à%çY’:,u�ÉáúËP®ÌÚSSD¶.\TÀo¿1{V ’¡!'%ðd[!ƒÃRç cð£Gm[¥t EN‚Ðt¹¹ŒKwk ¶þ”p.Šƒ> óت4FìÌ/½xm®|uýÅ‹'“ð¾ x¶cq6Ÿ= ¾o€êŸÅÒ,íšsp�L`ý„�PÛ,UåÌã_”q;V,IºË¤‡È]LÜÙ¾G©’.Ÿ4bf?¼"X _�“¬ÇQú• ÄåsK}ßéÀºbÖ ãü—õ$cM˜—Ô/nlÌ)†lÃÎP`Æ„zäÚS8f­áìÑíâ·¾a¼fŸ?÷!\Ná@ÉÒ£†þû‡·2¾¡ß;Ä1ÚŽ“¢üèöí?·}›—•¨}6o|Û…·m³–1'æ`¤ã‰7áÄ£9}§3¶Û5×p+�ù`ÎrÒš"üo«2ú¿ý³aò½ä5üÿròßÅoâ,ðŽl�Ð1!û_÷è�H��1òÿQÌC¦=é¦m>rï‘d™|ÓÑw�šÊÃ�¿x<[™xbzKùÊÉ?­öB?}êGªßlãS§ÿ¾VŒým�þèÎ,qfÄp]Íîãçÿp}ó¾L_xàÂÏn¸³çÌÞó辆×ñ†¬ÇhbþŽcŽ…CB‹ßÿA3á1lg"3ñx’4é1\ ?š,OÞ�HARüSˆ>HE�ÿOËJ›L»˜î“^‡ E‘6äbFp†>ãj¦w¦5³3s*ó|æë™Ÿgþ”µ7ëDÖmT ŠÊC9PnÔ1Ô�lïì¨ldö'Ù?çŒæ:óÐyÇó› 2 Þ-d‹Z‹Æ‹9Å‹%ã%‹è|ô;¥­˜m˜Ì˲kå²ò°÷°ß`ÿÇÅãîàÇñ_¢ :‚›°A´Ÿ�–H�sÉõäò”ÊUO[¥¯22ï2›X`Ö:ÃÖ°×ÙwØs^r£¸Ù¼…Šwø8�Ÿ QP&�ê}‚]‚5ÁÁCÁB_aœ°@Èš„]Â=Âuá]áçÂ?D�¢8QŽˆ"R‰êEƒ¢ƒ¢ó¢·EÏÄÞâq¾˜-®w‰gć3{ùhºa(h 4 p[Ð=e‚Òy…Õà1Ìï{ñ’¹d›ˆàËÞ¯Îä èAÁ[?¬îg¾š¿1òñÆS½H´¿Æþ§ÏÐ!«fq»ýÛfŽ�ÖùÆ(ûñÔ”»²;¦ÊÚ0N³ñÜì =÷aüÉÂþQv’©‰Q­8$€1œ žO â§Kàd"¶jVºôwÒ@‘6ó>¥%3` oP¿(2ùJi<¢aæØ6 @… óž`Ç‚�SŠ¡2%Y6¢§j,þ �ÄÈ쬹�½N#‰‘ý™¿oǤÀcÇ?ÜÑ\p«[Õ’¸ûóOÎטzª`-‚ýÖ£×.ñ¨?e ÁÈÖªOeKŒìÏü5œ&UËÛñ�cœK?Ô›]Ýù»žÛ¢.Åõm³¢Ýø'›ç—þô·.)GzͽÏú;]7x,ƒ‘ý™¿â¯†Ó¤ ÀcgY­É×Ã:ø¾¥6ÈÆÜ ¡H©xÛiQà®F“ê¼e¤Š-¿�„“04:=W’&+&v�ÿVáM¬°Ò`Ä_ Û�yž«(ÚØ…bÆ_Ò,–.ØAm¿ž*j×H½AëŒüökËJGrì6Q4¯"Ð0€Û¬]¨¬¦ôœÏîRºëEJJçy‘ µ@Þ’ÌèZb·öøÕâYEüëg9¿ Œ†99BãðßüÌóž ’òõȪÚ@W1»¸÷¿ÐP¸žÌvÇ7C›N}oƒé„æû“ØÉÞ Õç¥@–ÜIY[²ýREÞœôïN<’`l´SÞÁ1 |ü®�×Zq7fM«Îï†kÇ Õ?~ºÜÔ�å¬í#'Sªø+Ú6ã Å&;ÛÜX±°ÁÇÿU{VÖÓµ]mÀ�Jø?££É}tÁÒq¨¡ áyAýP!Ãщ2­”XÏ*©vÅ}Ü4e‚¡»Q:>ëÊ¡D¤’d¼âHÉ-€gwScÁóCF°únÏÂ0dÔØ Í‚* Ö€ÁRi»—*ðzÏé$±ªTåkTìFfäÃ|».ºŒËOBx×­s±(Eããššº'Ýgœq£Z“…i.lEÁMÈädè¦ö‚mjvnÈ*Àç•C4JÐM,{[ÿë,ZŠ@â§Ö}ÏVk~×Zü¦ÒL”´ÞTU£$× {µ‰B/Ÿ˜té¢ñš ô°ªÞºû©“Ó�‡‘{Ò z±Œ!høÛÈÚS+û“Ñü$áßó?Çðç^ûרîòî`!xOèq�˜ ’ +ÂÜ}j—_x÷vó—4Ë<ÏÍA"Ý÷Ê‘¹— °_ý,Àí°®CÈÓ?ÐõY‡+ÛìŸ@>šEå]CºCêu¦¯}i?•Û{à‰äÚGPÍË�ôpêr�}ýzñãä*¹LAqë>#äÊdºˆâàrÅp4Õ!Ê~jÚ.oǶõ±n¹ÜnjŒƒe8è�1áKj(ò»À³? ù>|ÉJ…\€Ýü-VÖ+Þú¬yÇ�8P{ ˆÇøÉ+r/ÎQëÚëoVwý÷7~¹™À<§ïè©ÅQ"š¸M’'#íóä—«ÇI{£F7B€hé®Y¥íÈ= Gd  ±ãpé!’)oKGq»üÅ‘wÉÚtxÞnCž{ç2ÈšThÙö´Ûà ç4ÇÅ÷ì$.•ÀÓ ¾ŸØš'‹PŽ«EZ HN)ÓƪSmR¬‡³ * –Ž•‘Ô£˜ÕL»²-¯ó, j× ÁYóÛJI:#DÒ‘BfcW ²Ùo¦y®ê!$I˜ñÍÄ)­\Œ[‹üÍgæ™!“h8½\6�“[HE²< š%ÈjO­+ññžÐJ•><ßzæ§Ç‰}c+‘ÅU¥v—±F× Áî �·~n2P’Æþ~úi2ü„�09V Ž–pw…¤aµd«1Ѳqç]H‰ÌÍ&ˆà§T#NY\ih;ÐÄEM»ï½pu0¶íñ™VçV`n?P…ëÖ”\ËLeí …è­·à‚öo4Øh˾Ӯx=‹ì¶•ooZYÌ-Üù÷¿o�1Ðþqa 9¥ ìFm¾n±+�Í… çw+¦Ò9]¸»bûôÄ™9ÒpbÁ�:§v«‡H3,͸*ÏAÉiZ¢<Œ–­$d2‡N¡Üûså’ñ‰Ê‡¾$ÕB%[2Cµ’ùC*îÕC‰\úÿtzfSu¡ˆ_ëC§Ë�/?˜©«6IÓç>¿§J� «Ð+‹a¶­øøŠ³²PÍ*)Ç©}e½D˜[?_,> ܘ•¡ÿß-OÁĵ?3Yi–ü‹Ç¿™Š¨tÚdªNê*là÷Ý=Îë’×ôÌõ3×xÍh ·ÇWz®9rœ49ájoiæ$"–y˜¯‚Uð}úDxhaX‚ùælÛ¡WK}\%ê®7é(–�qŸ2H£ Œ�µ-8½AÅŒÞÁ^›g�W§ ©xäœy7ÆG¨„Π\u=ßÛ‚¢ø*Í'‰˜´ µñ¿_u­*Èü`NY»ƒU{NGn¡�)Piz=¦Ýªf¼Ì�CüŠå?�³;Š�;<~J™Ý})+/ 7"EIÆõínAQêçØƒ¸…d{Ô4é^ðÊvkŠ"½í·Â£nëWFüN§ ªÌø|ùhcÓ{šÑSÆEÅCÏK Õ$�Yòßq.lïàòöõf=¸Áœ^�ó†åL56šœ <í§N3sO†Åi©•|ÄÜtÅì�y Ý3Ån;Žk•õŽeÔY+§Æ}ÛÎUY`3ÿßô#»a¤1‘WÝo¡çäÇ«M{Õƒ?%2wëh©i×öÊÂÊ›{Ř­;aØûú=ö¹™b† 3q €· »¤cùÿùŸ®Á¤5Bíç§–÷©‡!ŠÏVxÅ({pÓ«Æìâ“« جýð^]K%Ë£`pG¼|ÿàÌà´äÓ!îµkaæ Õ™f"š/øÐ¿�Éë�¡Ægv¯!¸‚§0�P$dPæ_¿6q£ÒuV¢±­!är8NpeâŠ^‚½!ÉÊ r(øÌ½ü}&Ò�0,:Ú”ÀoV+ ¤ ?|…ˆ¤Æ§Ë~P\b%0µiÒ�\v9røB†W_€„¿[Q —¸òpµ~©gæ½å$< +Òë=ª}ïë6�•‰@4 Wëë¼qR´þÖ~·5Z×uO7¶z¼ì~‰t�Ñ@ÎL „ÀFøuÕpé91ºáBYÓr-ÖÒó鮢X›3¥©vp']^ÂBéžÅîDºúÉ"~0¸ åR(†€Í*UÚ’w ‚6 ±EÖ�6X»Ï†v|Õñj©¨F,»Ù.2dÔŠdmè,k²1¢Oí "¿™2ôRÆ•€®…“ír1bë]«äõÛ�äµ!¼M°š*•M,,)â´±_þ_^’Iª²ErÈj×,sÄ'sØ‹(Jêk¼QÙW¯wZ£02æÒ×=ƒæ¤•íù¶Ë‰Õü&êH°°'›–•€ßM‚Íä*­Tíd¨â½´ÿþj“Ç£ƒ™�‹,× ,Å_ˆ¯ÕzÀ©³äè,¿,&ù}6@�U[_‰ ·}Co•ösÎ ]2·$�®ßO2uä£ÝøºS$Z”Y—K@ Ê>j“�)à>}V­pû0/ô7 ¯ˆ¯æ¿Ýó ÂR£¶Ýöì?%Û˜ÜâŸ*Âeszà%P ûTð? i$ɱ B<_žkhZ¦-D²Öc)°Èö/ˆå6êÈúèÊÛ�ãuq)„¸Xm>Ï÷$�ˆ�PÏê0fL08h23ì–li}&AùË$v7ÏŒJ"ôš7™íB±á NBĦ+º¨"™Ä®/¿€B‡�Õgï÷CçÏ·‰ì‘Ö úµ% a¶š81äàø•¬(i%kޝ¸ËÁœFúZ¨Qp†j÷[6-ì¶��êZêúëÃ+m m´ül«ÙëGÞþZyRíh´òn-É©ǘ»ê¢µ÷!˲/Ï»~á1†f®- Û³§™€e‚ìeŒ’$sµ2Ç Œ}¼5å�cÂë:†,3¬Xµ@­SWížÌ±Ûv�uó­÷�ÆI†:¹¢óËÛ:À‹¡~uª1©Cß±�•�•ÖœÝfJDýL °8ÄmY,ÐŒhµòãÛÛm,6 ³Xàœ)m=´ÿ†¥¼¶ÉqÒLdFÍ¥ƒp¸U×ö`žÇn5·àÍY3æ(U“�ÙLt=󱻆C·• �НeNvŒþt6™íWºî Œ5ófËÆ ÃKl%/›Ú$`sQlô›[å;CxbÞ˜ËH…àå7‹¼¤HA}OÓÁ¨+ÍÖd§¡)ˆ-w;Í¥øŠp±�l¦ØRwin|U·3Ql·ÌÁ•:«ä¶Hí~“'š¤=Ú™û¸½.SÙCm©}fßþ‰2P‘—Ë“zÅe?¤Á¥'õ4¶Vm×2±r‘Î¥™êÍWŽ÷Œ([­ZÙ–¶^v–Âu×a »#°JƲá¼ÖY æ{›Ý´Ôög´Eî ¾0³ª¡•àüóˆýÀsÁØà_·x(K¼ûª·R·âMÞP¥ðû•í¥ÌbHn-k^‡ÞýŽ–[¶*bJ{ÍË+]¹M©Áåh¹�al8¤�LušLBàÃä=5€|*L�I㻞r®[* 3�«%ßlÌlz7׌> 8®Ÿíp£a�òªªF4m >¼{ì4^õÁíØ¡Ï7Êò»ÀÕ‚OÌ3ŸÈ(€;¶»¥åx»Œ÷˜•¹‡KA Ô7j¨Tç¹øO0ridß9#é{âZõ†/ˉWÚŽä³à5!�Ù†Ì]0&˜Aº1{gïçp³Êå2�¹n¥?` UǤÔc÷�ü”˜ �;¦î°ôœòÚÒéõfüV˜A~þùà¿ÿá5.È5~ŽÆuõb ê0¦}£|~0 †`%Òí?*½A÷öÞyþqq™�Ôï>x°�î�õˆ¯qÿëKeó90¾i¦Ëýz´ÔT ƒ’ô¤‘oŠ4A‹l6o—‚¯YK bÕûzšç%…Þ ÌϹKœ‚‡õ£c¥öeMÍ7»¯y$T…ñ›©!Ëá­ZPì™A#±Ôu-m…¡ÿã…ªÂa¥{á´¡¾Ò U”wë ?ç)Ï7ÏË"~þ-Ähw‚„Û•ÙÛ¬ÕõÙ…Ÿ¹aú9‡¶ƒ¿¥o)µB€Ž«(òI÷ 'oÕå öÒ€jÑM¤l|&x£,\Xž{æíÇš¨ÔÙ�¬eëx}_(Ê#¼ÑjñÐ÷Ïj4£eÍ%˜ý.üÒÝ’'DѺ™�Õ‡�Å©úJÏ­ªg{n~ÈŒ‚‹Ì]ýDF˜!£Le(@ÜNËð¢§^†…Yú>IÃÏ�„QñïÅ\©…[Î"éúË’ˆ¿[eÞËJÄåu;ÚÎ^� |Ëñû³S¨Då©rðP� ß’¸îñ‚½½r�•¸8Aùû'¦×ß‹ž¯]Šçî½®ÅFøB)‚  ‚w˜(ß 5˜ÆK‚I»ˆŒí?‚ö¹µïI ß×Î)ºíæ;G‹@TvÙ.øóÿTèá|^?T"=ª#ƒ‡ÑÍs“˜ãá޾˹}¾l©a`x‹½ïFâoj»ò êñÓÞ¡=ÑÁgB"|NOE%LÑ"ñÚS)Ö”ù_š�²Á»uï™MW)òPA§›h˜Î¬L(©Aä­‘gçEÃ[µËÒðòÖòfLqP¹ÕhÔ,IÄïÏÝMOïÀB„/×uÒ(É Ës™bpÿÔO–Š�7öhèúIÇñœ³¤ÐjÉÀ§…tÒ•Ä:ˆ8x)ÿ®É½ñ}œ˜R誡!³›A€ìI BØ®à^àscÔ”Ã�2™ÿnµ›ïòا¯S` Ñ |GÒ úC:ò‚Ý*Nèlc´‹Á%IÁ(÷FììÕå'Ä´f7oGÍ#„bVêJ®Ù }ºõ¬3ºŸŠ’(¡&M&0ûÒò‹ÿº[„5ï­ÌúP°°ã¤àƒh^É0"�°¯£J×ÿgß»wPƒRÇE£×Ãpýüß�Á$ûÕÎY‡¥' ™òÖòKÈ�Í-éЈºxGý¬¹Þýñô÷óðµÙ÷ßîa|.–nö 2û¼OÈl4 �v@øQkc|—²†ËAê±D�bÑkËÃH= ¦`ýjk…ezkù>dgs�?’ÅkƒðgͶþ2Yaþ�×W6ÒVïØÆ3 é:\x\ýÕHU<¾‚‡ê‘?U  šÝŽ rîGb=¿²1÷ÄYé™lié‡ ×û6|Q1‰y/dcR<(|µMyÇ—4É÷(Eö6¤(B¸n({«™T™÷/x„¾â,æÆ0·ùJa^-0r¾WZîoYÛyh2ò·Ï¼±æEãÚ§Ù²P¾Þ îþ8Nô‡œðfÍîÜäóóqø¤«†^¼ëô;]w€¦Bb0V)äÞ‰$z"�X×�ÛíµËßk¡â­Ý�+úÖ(ÜL^ nwˈ®¾æUÕÝM¡ÿP òùÅâoF4?þíúÏ[®qù½¶Ç^áŠQÞ³Â÷H3ÈÛß§L+–­ø~z’㉚kÍkùÄqÿð�³går‚¢]}#˜@Í�/‹C ¤öæqe¾�k^fPîn�?uIžÕµjxB¸·CÙR(éFh<þæ¬þ4~úá°Ü‰�ɺçx¡Ù‡ °rqŽ Vé Í¥Ir$†9À;G/Q±2/[oJ¯æS‹úß�Y¯Æ& ÌJ?�§^xw¿?�9ÀÇ�|áŠHäf`αÃFݺ”º¹3¡¿ôO&Ò�œ• Sc|kù{YÜxõKö~Õ?¨ÿ»——ò‚�³b\Z˜A¾÷nxdŒý? V‚Ô†çßKBÇæl­ž>MûÀª¨z ÍÌ…  uëüŸ(¼U:kMrkù{¼Ëf4�ôl5üè ¯ògJ®šriÜBa‹ c�¿%¿îe|{=¯ó,ûæ¦S mFظ÷?Žg�¬Æd´çÅÆry€÷­6"Ñ!¼„´+GÀ]Ý-÷¯xôÄÃׯ$3µé/ýµgÞÍÊn<\™È¦Ûãfó”$ˆˆLÍ4KOò©»ý¾M Cßݘv²þí^Æ`$àA£éÿÔ-vÛ·Ö@£ªÌÆ›çv¦�­#Æa9Ú÷9Âr™íÌ^¦‚©ßÜ | â”Ms¯,ûG,54Üqú�\Vt +•I¬º ék±H1½$ªíS]µÊ‚‘>ŽYÏ>ú«©® °·º/Wfs”ñFDd‹„í»wE�ºúŸ%üºÙ(äÒæjÑìŸ:úÉko@ Š üÕS<¬Ûq?Y\Üc‹öÇ`lpäÚ:< Ò`½r²×ZŽß’ÄZJ[æ 9>/N”¢Ë0½û4œH¤<D«hɼ0ŒJ©l[%D];#A z™v‡ מøÀfóëÇ ØU�¦©+)’dtUŸ$) &buΦQÈ‘&úqik8•«ËWõáldF�¨b„Ý¡ŠX’x¦ ¯[ãîSPøâÿkÓ¹ºÆô¨¾Toè” ÇI©¥Vµ±ªLGSÿìß±&In^¯»—ÎÕXH˜!c°‚I2ÈÌ´£¼Mæbš€)ˆ¤ßµ«,5‘þ âT@~d»:Ïü>1|à‹²ûYº1NKÖ”ãšHÏÉ™F�PˆÊÚµ”çļ.ŸvÔùL¿lZM…òZ¥x(Ûˆ®®‰„SuÙ£Fí�HÀ+ Hâ)ðºIm;•v^uO…µx(¨x¤§2§ÿ’ß+·Éû •]¹Ô\Ài3øš;w#Ôe6]f,3~è{æÞÝ >'€~+¤ŒÐKº3‚ãÅz——"¬ )PÕ�˜}SbÂ71#üž×_þβ]ËèÝD«¹5ÀÖ|ݬfe\Ž!ŒÓRX+;1û¦˜¥V3§b|ýÎ"„bÄ×û)¥h%Û îàåU<}¼YGŒ³{ zÎ(·µ¯–³öcÉÕ®¶˜NB¨ØÚŒu#x® AI'/ÿ¯–ŠÖ Z—ÅVj' /ÚÌÔ‡Ø"8£,�ÈXlâ.úy8±î¤kL$y ʉœ`B{ÎF¹) |$á�’‰*nn-¯ó®X¨ÔöÔ?¿þålëô•%›†ÖPë=8ðé{tQ5âÇ8x³(nO·b¥6{«µ7™Ï‘ðë ¯hÇ í4}9hüs!à w¯É½]ð4¦Ê"ôË´8Mû¯ü;}«ð…ü?2d¡Ìú|dÀ¥x[ƒ+îxî§Ñ’xœÂ ²qˆ¢¬š7 Lg‡S ‚"ÊN�ŽíG[�£W`&ÌRj8F �"pãÃz”¾¼·E™ RĤvM§–vÆ^B¿D¨¯Æô�Ë�­×jka#¥ÁÇ\ÿdˆ[K#P§ñn)ý S€ˆˆ3¢•óK:F™©Ûõ ¥©Š¥Ù­¡ÔPûú17iˆ-6 S¤OÏ |9Mcø iL-!OÿÇnÔËë6ÛÏÛÂtû6ã^“JZcG'ïš8xGHï/½²¥'Šœ\*ª¾DZ ÜŒ�îQ&ÒÒö)Š!~µAºL}<{b�èÅ4¶óûT¾66é_Þ7“ùðç ˆðÚwÐ8y_›þ>S÷Ø¢N¬ÃõecÁÜÛÓ0’ÕíÑc}Þò(…$‰ŒV2V¦i�þZµa)D|G—¢«m¦6XSÌŸ«õ¦èÖÍŽ6É%O�é.¢Ø_¸ûúÊ£u}ÿÊ›œ6ëÓÂ+r(‚D Ç"tˆc9ÿ$.†œ�éeõ%µT"�æD«&h]E,äí¿3`̲9ê¶4U­øyÂá—WËÀø’²}뼞ÜjEƒ'b.{„ÛȉšoÕÜ�ÀMÂ"‰¸…ް’�¬ÀY=ÃuTÀñvÊ­Ôoñ‘“Ññih��…8Ø»†…R,ejU©$)åâQãgtÁŸ#2)±9ÎMjõ�%�»€•µ>uC W£R«‘ä`ýµì ¾×X‹�“ê}ç¡S%w§³˜_ÂqmN†“Iç’ד¹Lø¥—¿¤×{gßw>Z8k5�öõîúWYX ÐöøVê—jØÚ`Y7.ÍÛíÿ„³ÎÔ7àXï–$î®M;§ºÙ�¶K¢?¾d' Œ_φløg7K¤Ò(ÎNøn˜Ëö,ϧ¢ÙÝöÃ&¢Ã̲{±f»ã›>‡¦–ÝdÐ@‹¬¤RÃK^›ÍM £¬.=eV×Ç ¡‰fX§<¬!bahW±5ܪÈvÁýÆÅŸÓ`O ãnRÔ«H *-;�s…&çyrù‚K*JR-*íÎV\ Ä®/YbHZ�oã ^/w—Ñãk£B`ð’®rúq”;ï±ùü‰éIw17o—€CK )¢YxRæáá ÉXãÊ\‰`ªô$“}ñbãúZüÄn]%è�ãêÖÉ*mÇ”ÀL+p7ÿ ­ ¦•ëj6âÄ3ùô\öZØå-Imþ½ê’»±Rxþ°t[—=þÒÝâ=‚ÃêÄú†QQVF0å éYÒË¥ÄôNVQ*Â%oíŸ@­8„�—çÒØ`Z®cý¤o+°ðÁ·UP3•þT$ÆÌ-…�až{�p«Õ·<£Aê„8â¿øƒ85ÙmgwåˆêÞ Ò«! f ‘žöÔgZé ÜĵùëÙñ:ÁîÐ4î&�.¤ÃV±Rr-=ýtø “¶Ž!˜]š¡a!ú`>7ù0�Ž­<øŽr `¼Î- Z—ÒiMNh†æ\ î,•kYêbS´ÔŒË6ÌçGQN.РaV“Š•EQ ï¥*¶ÞÅ6ãW1A‹f½8<“Ûn 3R’™2“Ч ‰ÎPð6ŸwH‚óG¶ÉFövaImñe.ÙüŽYìéjýä2… Ã0z‘¨É‘?9ì—ËIË™³¹WÏLÕ»·ÕÒÙG%F`Ÿ3¶ôj©€�ên˜¯þ’ÑйW¯®À†34uõœy¿ÏÂ¥÷Âf&v«YÍHýÈMÄ8×Þú6—kŽO�¯×Èýv¿kIÉnÒ?«Ä·üý%'=ø<È€Rå\Œ1¦bA1MÅ7x‹"ËÑnרÄÿªªõvóž†@íåºr˜�”—›ÙΓ©�ÝÂDªk@‡¨AÙ²$n3Ʊá‹^?ÖMq`ã:ôŠ3³©Ó‹C‚²K‰„g}�š`:ê1¶{•)µ"alÒ�ÕY‘£D7+Ï B]#Ï:€Üá'!ÝBh±-Ø_ÅòÌ�*:µ³+ �íýP”ò*Ü=ÍÇ"¯M�E:6;(ÌÀs±{cØÚìΓ£ZnX1aÝQS™”|¾Àátw¡Ë_=Jú‰ Ü.ò^êä‹“§š—'B|Ñ=ùX®ëÕ§Yý .ˆõaIIYl*K®^À&KEºÍNHXAÝ&{za— ~kw¨Òm!ÆžWÌsØJ{ùk÷QŸÙêïâ°_GaèÐ�õÔ„ÖµHI6f}+…JeWyH@˜Ø¤p½N‚ƒ—7/àó «P,c¯`·øOè£,½-4T_ú±ÍØñ½Œ¬ïDõfèrý ï ͈,‹‡Ûÿ#§!K*ŠÊ»I0µæ+‘´ ƒ–}g„EÎ’e}äš¡ œˆÄÅ{IßÐx]×Ôè_Ê�&‘m¨›¾s’�.ÔÓyµþps£æw^µ°Ÿx'Uk¯X–0GB9µ0Æ�¥™WDvlӯͫ¢Ú†[²Êvý f¥®#f„x̯Ké´’6.‹X(2ßV ë’¬ð$:Q–ž"É<^u´·zAºALp,Ú +”Ã8¹$P¾PV )ÏÇ.3žš¦ª¶¶2‡h/{Éò‚¥Ð Aà‰PY­±¦©™A׉h ¤ÈH>k ‹¯B3Ŭ9®hY¦ZÖú1%©M·< VYy9™IËGÀcA…|$‡N–²Ë‹)UÙLPVô©J¶Ód%Ø¡ªÙÓ†5Ýá¯jwâ ,¶úU×U<¦$d$Ð~ëŒrNQ{)1¤¹rnŒ¢.Äîà9;tWhI4­�µ<ÝUÆÍ_.p3#¢ÅxDÀ�†ü(¬÷QÛkR ëæ²EÖªÕµ‚TU†/‚ nóK„x;Ý+Ö>xçvW5`¬ï DY•h0(Ùˆh¥4ÝØ�UxQû%йìS²l†8¦ƒËf´pÛbu•t“q†$¼�Þê®îu¾ =¬µcI´òèG9~"u`¯²A¯ž·Üò~Ätê6jÊ„Y�1Uj‰$¾"�Ð"þbý°Å}�VK¯¾« 5Œ%axV´H’’)êuÞÀcùVáTJ:×Ês ~Õ© »ç±®AR.’ed�+Ì Ü~žg ïbÄà�m†G_§Å˜G’0š¢X½®½cìh«XÜ-eÍ t†æ”4±€`êüÉÜcmw¡ìå[ºÃ9þ ÓfU‚¡°ÏNÉŠX–ýÿú ‘R'_)ï gŸ{“ep2G&ú“©R Mbõ2’ã,�i¶]0(ú¦êiâ4ýmI-Ÿ'v:2‹>¹…̢ɆÕÖÃÏç*ïú�£4ô`t@òêZ‰Sa©Ë‚U´TÓ—c/†Ãò—(Xø¹Ç�R]´¦†ô^Z=dxžzS¬^­·Û{X}PWQ‚”^ù/êùô×Óï� e-ª)ºÎØ/>ãÁÅDÒzA7±gªy„ÁZ2ôöë©D#+²XLöîMšÚ¸HÒ‡HèbÃä�ú¾&¥¢� =9‹�Æìåmƒ�—ßú´™íÞîâ?>ªÔ“ŒÞy8[Â`)‚Ð$4–‰}ÕõËÓ´×ů0±5~tù`½D«ä†Jõ"¡\ÿgÚT­I±#cÇ)„õpUô™X…¥¼Çc®k àanÒª¬Ñ´‰ÅË\ç£�”'C2ܧ’? ÛPòbšB@˜ŒEé÷�Z)Ë@xÚÃÒ6Œr)3pŒh„.™€+T�JÚÿg JÐÉŽÛD¦$PGÙØå|%,a:h*š]”]‹å‘ÌbHêu¦˜Ú¾rŸâp —ê× ¤ñ“¡Ì;š�‡ª²dú-™t„»tÛG„þðÖÜX|h¼]ˆ8­uÊóîx†ˆ:Lr?=«i!Ñtd_û ìz Ñ}�Z«_SÐiéVÚ2-m10YÖ÷B†hv 1å¹þÔÛœ=öÄ ±úÂE» VÂO¿¢\€îžOÇsSª5V@üW�‰dÅÑÔJjÔà�Q/'}Qf £h∠7�#œI…ò¦Óàu¦D€¨áúŽðC¾€hXÊ�£¿r±9iWÓ±x4ì©�\^ —U1»È¹ªÜüÎJ�!qxK’�¹dBõÖ3yOòOäͳ‘‰l&«ã®Ï¬$I²+�,ðà0r0³0ÒáIeçÁ!»õ¯hnc£V»Wâæú“ <GËJï}(úT³Ž«˜ïoØzXþ„«HW+ŒwyÿC<Ïvü0.¯qÇ&†Öf¦$±ZØKÑ^Çé�>ƒçG³/öÞž¢µß4]7CœÜEÈв œó¨„·SYL²²Ó(ΰ•éA·¿[Õ—ÏŸ :p«ù^¤†Dgq�'ÞRÙé0±wèxO—Ö˳‰ŒxF…ùÄSª°œ÷�ïš\×F0Š¢ÌjD’£óÛ]*Dé“giz�Ž ¸²–½K÷¾ïú®A�ýì€Að‚Ç•Jxž{Z�, sí}çù½ §ÉÌžjÞ 8?gD·G�I«�|«4.áÆzÕ›ÛÇÅÎŽìæ·?+aI7¬‘¹xÀB@1÷´ÉÎÜdI'ð,·Â P¨bµ�8ÂÕV B®È–Õ‘�‹tGIމø"�V&`à¨Ì´2™­ÖQë•ÿ¤$N¦&5@�Qý¬yú³—ãŸǮk€ú|rh­‰Q]F(@2:^‹šP©?g²€ÅÒR>AC Iÿãío�yµÛa®ÿªÓØøBÀ€¼w׎äZ;–ç¢QÇ<öÉÌ#åIQçÆ›nI®¦š>¹¦À(Ú+|7ŠcáÜ�) *a†0ÎÕI»KÞÅØtýÚaÒCãmv2uVþN‘I–忀ú ˜oﻣjõ‡hð¨Îš^—NiAIa˜-¼b´÷²ä#™žçÀ¼ÈÓ0ÖÂæ‰½ÿJt·GáA¶Ò¬—«jt¼1rSÀ°z)wsåhˆç•ª>„ÿÌC™Eža§4ÚøâH–¶¨È'ÊEC6˜±`ƒžý÷¡Æs¶�óLjt¥«S·«C@¾Y ÁÿÍ!îk®`òÊ-jÄÁ+‹|Ù𬡰`ËâÁ¦.,¼!ä1k7—V>¦g)¦.Ô4A ø±ÂM†Oï…â�*z B˾í½×%‘Â!a=}—k6qhÈ`(PåM¢…˜$6\³`ã‘¡,Š�w)`Z¦K«G€²W¸‰4‰ðNüäŸ?0Š²êµ³´s›­¹Ú8MV{�:ÄžéY¸oǘKâ–­X¥§J|µþ±y#4pm­‘™îN÷ :�ñxêìÁ—ß”:,ø‚t7£7,›‚‡@ ¤H˜cÛ&Lßþ¡YÖ¾èŽP &¼'mד–‚�[k I¬vš52ÞÇ´Wt¤�†¨£¥ÆÆTª–ýN~Éqó¹niê<ûIùýGwV�°N”̧—BSdkF”¼9ÇîÇo“ä?©’꘢'ò'm¶þdŒC‚ÑþK`Iûôן“…ýD»7½åŸÿ?™b`¡�bZÈwî+èõ/€±®À …®ÉÊŽ§îÖødi鸹Ü ¡¡}ÞkËr;)²„¯$¦»Šbå:öÕCu=f.©”³[Ñ…ò°&9¹x8ó%âÒŸÚxE /#û•Î*•¾¬ã×â2‚&`Œ§è) ðJ�2ϼry¡ C¯Öï°(…¸§{ÙÄ¿y• ×kÊ!–¿¶L­ÿø#iŠ„¸xSËcÙøÕÎS¿W‚ïÕ²¤¨š×øˆVl½®ý­¿fK%úº=�è;‡F&qNÌþÆ KHµ¨©Y0Xj>]å ¢KU5¶*›U+`½é¶gum�MÍËÄy­=TX‚Á±¸’RzÀ ˆm¸D3 6#o‡®“yl†¥pyçHœ�ôJcáåÂ…AP�è»Ô�m-V6‚ žÑv7kJÑc¥UKODsüþ Úh¨òæeq%L‡‚OÓ„_ËŒìqû/T†Àü€f¥b¸ê9ÀBjØ4´ÃŒeõê"Ûû*,%O“g•Ÿ0<µnûi/$}¤ßý¼/Øåœ �¬yþðkuôŽ;W¤ÂÉ`ý}Å»®ðùå–'�¤ŸR;ntm³ðÒ@iỸS²“À2ï ïå~,ø—–húèG硊`Œ»àÇ¿ó'�j)ãá�+�,$Mk–ëÚ]QÝ)ïµ>Cú¢Ã—_¢ªvÈŸ§U¹LŽxã]'{%«Ð7Ú µ\ÕýcÈê}=œÙ—²¹ŸÙk•ý ÔÙÿÒÿ–àKa ä͏¹×°ßBŠ€3W?ð‹Â"ˆQ‘t."P:MV*,ŠÀðx|¥�ZÖ@1§Ú±F¦—ï”XŠDÑ÷%§#�qÚzÏ<)”2Æ.ñ¢e¿L؇a3×[­Õ#2_.+ž$º3-5üÂD±Ï‹Âr¥Ò^Db ››djB`�ÃQ±ó‘E2™»4¿dׇƕ®X¯À„̓ØÀRŸ�eMÚ=>߃Ëå8_HºÎÒnˆçâñÅ’þΛխît’Å@‚s©¼t*åZY!ËX jìËe7»RI^ ÕÌÍçLöûEçx£ºÚš�fkÙÉb"›ø¶@£O x~�iJN |Gê§Ï œù+Àxðfë«§‰ÇÍ—ÙÖu~µS~;Ï„Uð5Kể"^’%Ü‹jí$¡ª B¹ä8:ë5àüXF‘uǪèº]ÞÀnËqn“Šœè*Cí¦HÂtݱ:¢TÀJqͲƒàö�3„­ëÜÔíÓ‹™xrES³ŠXÌe3Å‹”1DŸŒSš¡­˜ E$/*lÁÖ¥ú�–Í �à>V;Ç,%|n7³î‹jjvu`:Å ®ï‰’îî”ñT5RÅ•ç-RyÄéÔËè—ští©cûΟ5g�nL@f¹ÖM\ÊS8o&KÕªcò™‘�Îdç‹ f^[eGáE§„ËP{�¯ò?u�Š“„æ¢Ãéüƒ\7BÝ™ãà…¾P�¹–½ÉäpN#y®f¥Ö±ÌÉ÷¢!_u¼Šåê‚“·Ñ! 7~Rù/ˆØS3£CkŒÒZŒÓ‡Ñ †V�…{̤—I%ÓÂμÉçBÇjZølÆP§%Aö‚Ñ hBB_N=dãõ\†Å®tC¨ÇP$#8ö³ùÕ,›ðp~�êx AÈ8ndEF'\(Žc‘´’1±KtÔ%»<"ð4§µ˜¹ÑLl¾gc-ÒÆÃ‰Ž8àÓ€Á.°8Y«ª�¡�”N€„€¡îùÚûØ xǸ¯Ãœ‹!ü›oE¼Ir¸^=ÀÜ?DpúÚE³õ6²røÄðWÎ.æ†kÀrŸ*Y!£ƒQ¥õÐwSõëßhÑ´#lŸz�QÂ(¬"Ù�gšŽW¼°T~}‰vZÃêGèp-¬†ÍÂ,g£Ukg„nW6+w6cn°V<`Q矔¨˜m5Eºˆ‡#CÇ.l"~a® h± MVd漎ÐÔAVßAóÈâù™‹>×Ò�@1A»ä;ùf¯²�–µïXbÅ&T0·æ%àÝnúLuRצ°éšöÞç<,7÷ôjì‹k¬£pô5sc�¡ìÖ iS<@â[NDP¸u=óu‡‰8_àEùG;¨·–•Xø¯ßž=ß‚|1,†{Ãì}˜í)Z5’ü…È Þl’H|¹_…P“©‹Ð£idТh¯F1‚�‹ ^8‰Ø ’!É2ÏŽ�!‚”]ÑcÎ+í�®‡¯(&àÙR¤Qv}f#�ôGAWîŽ"¤Ýl!œbqÒDScÌÕ“=­ïl´ñ„àÏ6“x¢73Ù\î/¨q§9Kš­ÒöF.©‹lÔ‰~SFÚ$:\tºFv»™º±²ËhuŽtéXl¿u®>]ÆÕ¬C‚ï§3z+á³»�„'‚®Ãà6ýC@®Ï¹.-`?¢ˆe Nþ~o:dCpû_ì©òK¹%¨ÁŽaWÈË·?K†vÏ6P€¶ TÅ2-Ã!¼Ž*ÞÃY‚2ì¢è¯D÷€![¥Ízê:\XŸÂ8­Á³8S&ÿ{]ôôÃñ ÁöJÚãÀOB§ÿÇ£ãÈ{É‘¡5aõˆçÜ:-x~š�c§ïSôÐp(!«NÛ\½þËþóÙ×ÍÍEg0³e4¿T’ëâ ‡;cTKUÿ®D¡†ïýËÆRø.Øxß £Êb*;4¿~�Ÿ{ò†”L3íŽð¼ºç� Î^JH@0ýh�Qix÷ßËeÆCpíÒx,]z͉Š^æ@”ÿÔ1 ˜ÿŽó§™š­èô °L-Џ„¤.™ÑÂ55¨†  r’q BˆclY7°ì“÷Ä á„ѰÎMîò�·üäÇO´Z©è˜8´‚ž`T¦A#R¸Á†¸ÞMNuHך^û𥿠 l5õŸ¡ ‚)Q×`‚ÊÁr$ ã$Þ¶SÌëüµÈ5¨²YOWc‚‚dimÙ«KÎX@a³…ŸNd.öônqù»koç�™”…úãN¸ú£¨À”»øˆÿÃkaGeø31lÔ9å.÷5¸ÅJ¹œQÇÝ£ÿÿÞ7ØÙjاú6ñC=©àÃæõÎý²×LIÿ“?JïƒY‘õHHë§À¬vÏøßýØ\ÆÏ¬k?o@ð«m@Ð y°‰ž¬ ¿ a–ÍÞ`·’¸êóÃOúYókfþ©møF\~52éf²\üÆúSøbâW 2â¥fâ'x#½&Ñâüü@ Âf7¬„hvF!�F UŰçó¬Bñ¥Q|Râ6ùe0·zCÖݤ­�Û% ˆQYg´“ò¨·@�ß7 &¯Ò¬ò6�ÂDÕü·\Bú+ÊdÌËð´Ê@®�(#'ãZ­6uiÏB¢ !ÏwÁ/YÄ‚|ƒõ§#@VŒÌ µ/]TEw¬Ðž_ÌÌ!Oî²'—ÁÓéŹ¯mš,·[˜9›Âÿ‹g®¨J'ËX« 1ÕóÏ­'·tóƒ¯Âü‚¸vbÓ(ÿˆ½Ô/Æåm7*ÓíOõh”[vpˆ±]­�À;ž² ËŽgÝúdÁrñhÏÕ0ë¤gìн ,b¼1ÏRL’‡Ä©x柃èd[E–î÷ÑvÇxhˆ{‹ ^7G¤M–Ý�mŸ-ƈ—à3+7å€å�A»Èû~¬‚^| ÄBb’É ðÊ_ÐÞÛY©•å�Õ7'æâ1°P±z„ÇÇtì³ßYS£/ÙÄ ùl.g˜.Þõª©[ã¡0§çÌ(Ï‹Ìvè{ ˜Ì$¥¤'Æ«#²e1ó€¾ (©í7ÏGøE3{‹ØÚ5=ÁRìZ$#ä$¸°¾ðî°J<…á EQ�ÞMg‰O�]]íêË!–³„ÑÁˆFǺ¿/ùÔ9Èóaüœª|q´¡h„H/DƵáZ°Š‚pVRí@2Ó턚ƒ¨U—�ã6›t5F’5¹V4à—öÖ4yL|÷2iKJê·­iPK•0ÿbÊa±Äë^ 0È8T";=#ßWç)Î:˜…<ሃ•Œ6§ø_ õÍh£õ‡)0Ñ)MC³ð&R‘ªÂËdkÈ*fØïìsU"îQj›ª`.!Yß ³³²3·¯%ÒC=}ÇU®±aŒ8z^Û9|ˆŽw\‚ä*‰Uv³u <°ÑN²Ø&âÎçFʈuòá1òþ”Šæ&Ó°8LëÑwCä-Ų[ŽTCÙµé_ò¼a’ÒU¤+uãÎdÔP » `D~v3%>=øàã\®²ó—Ý» hœ��?¬œ§°]¥É©Tÿ"•à™m7HÙ[V¢ë›µÃCËóY&„"N’”4á•Ðe‚þ[+ƹdÓ Œ<±CÛ $œHÄi×(¸Ýù�N[Ññf�Pij)z›TÄ®Á³SOäÚcå R�ªj›MÌæ:+¦à•ƒ9‡3¡”Ú‰@£ÿH< lXgçEÕ{fç~"�9éŠò¼/S¤×c|"?ÜŸf 3ŽÇ,}¬x RÂÚÜÒŒÁY©¤9Xšä¦I`–6Ü$±¬pÖÎJ8A³‚¬b´Ù‚ÃRµ74&/²ÿîönÛÞb £{:hB_²?Oƒyp¢aMòð¨*[Žç^àt¿ˆj·žö§xr‘b‹\QÕ€kA å^ˆD DÈÀFÖ-’aPíFx´ª¢rYÑý¶„a£-·gó£0&Á¸mJD×ßE"ËT5ÿ>“� þ ™kŦõ@ 2u\•°®ÖYË©B�‚ÅÑzÞmfƒ�ÏL1e�Õ�¶)ú®d¹Õ*@¸¸UëaEåq¾dDï¥üd{<Ïj2âŽÉ‹vœôÒ�É㈑'I¾Mo_èƒY,Ô¸¥VZ§Yy;“é É”²Œ4Ú¤1ßW‚¤ x [é5î_2[7’º÷&ú’Ë» WdžõÐó7—oªkJw{ ÉjBËã‚ØÊ^iT*j¶Kã`hW>ÔËäZ´ÝɸD^€Tüp)›îñãN´~o©öÆÕ(’ÓÁúûÿ48Z¦WÐÞæhe­ÃK§+T“�=ÕõÄj¥B"ëÎà‘î')t…64¢¹Âr5C`]0Ê U÷ë5¤V&ÀÀ“bòªÑ´… R£*Ôú¡PƦ÷ŠèÑ›ÚÏ€5ð«­BePH�JÕ"a0I,š9-œ<]ï<�ÀqùuµF‡µ� J$¯ƒˆbÈü‰D"Ü&ÁÈ*¬ÕÛκS²Lxª1æy]毷œ¨¬ùGH=܈Ț/x(Ö¶¹è¾²'–vÕu!µ¸'lÔŸF=~šÇtot ‡»$8(¬7I²´Ñ÷lQ>CÆT ��¨Ý Ù,—™þ8™DEùî]!Ö{÷ Rz~¦b‰¬Æœ0K¤¢’ñ>B8ÜÌjËÊî–qäëEïžH‘!úƒV“ŸMŨÛNA.ë©âÈ«/K[û¬†#ºÏt¦"N¶IêÏ495:Ál8l>T‡Á1d’À›Züp0˜±Þ½]6 l:8úDÐ…‹ƒ~z¯Äæîó1•ÓWsjÿp!‘t8L #�„5ŒïHŃÖäJWέ¬KjÀ¼‹iù°¦ÆÍwØ)¯=œžjå<Ÿ<×È %{ƒ°ËéòÍ3 òÔH°aû¤óLSŒ'„¼£‘Èè%ÄX-Kß7 éQ §ë³œšgÑ"H?Íñ0ñ�­§}',@æK ~ä2¶¡9.N8ÁªñôFE`i)¡vRd½;²¢¶ÃØŠåIo o+A˜¬yXêv‹F<‰ÚhCQE5ÝÕ$º®–ÍrU¹ÏÔäFµ¾ñ5•ÏÎíÐË0]7u#m;NÞ‰ÔŠB-Ò%‘˳޶R _â’3rñ°©s2ÄPþ q²ši~’`³ÀW(’YðDí?7&Œ�÷ÓFúîIÃ{´Új¶J¡ yX辄4F¨�‹_G «ëâŒFÏ‹?‚]7Š ÃEãçW3^÷¾§[\PRΧ;à…*'¨šÝÐ5Ïe£k%³‹›$ŠÈŽçx{!¥.•b÷Âú-JAJI¨·’ÂE¤Cq‚×8êbn‹Þb­tv«^à‡10hZ~n¤@™•‡DEcÂcCŽ ø|04ƒ-V¡6$ø5±ö²[yÛR ¸ß)%Ã>»¢ +Î'òˆì�~¥Ú8ôh#¬uáÞCQîU¡°Yiüº‹ž$¯²ÎŽe¬¤õ¹·ìÈ1í›"F‹�4—Y“‚ÕbPÍøßxÞ²Þ:a—]9=«Ô3êYo«p]µÇHk¨­î®J™Ñ_)õÏFìÍCÉÖÙxÉwÙÍ™~‘²ÌIün]¹ÞQˆ ¸…kàQóà3±­‹+CÍ7ðmŒ,!ïêúvcŽlYK%¥ÞIƒ±QÄ^jj~#i¥=6_/–%Ë0 íé¨ê†FÝçu†MèÃ`-NIaEâ6,äW2n@›³æ}í·ÀŽÀ¨jÕ� Y÷ÛØÍ›7§k~£ ²˜Q{·3•Kfš,ïO‹—3ÆØ-äf¢±…0œ æ³&6Þ¦›-?q`¨Â‚KÃå¯h­Ö÷®¹¢Kªè ÄÉ×r$DZâû½!©¢Mj½ZûãĦƒ½×íî2ŽQËÈS ÖÆ–òKè*Cc³ŒŠT¤Ð¥b2�$E­&‹x¦ûâs©n–Ó§WµZgx®¤h¸D·¾£ÕviíòÄ“ÇbwÉv�/¥ÊuJY»Ô٦ʥRíVlŸ ã¶²£r¬Ö ÊEVÜ@9³«Ûbè�©èNE¯e2› _ÍåSîeüÌyÇõËÆÇݹqUÁ{[KÓ>w"~¼S¯¶fCHH×W=¬›à%&5Œbƒ¶zA¥Wy>-C¶Ü°ž0{/M„Kuô�åpt–ÒÝ-jÓ2eÍ8`]¯KÊÃvÉÚ}’bY|‰mE}sîP]N38Ð6WÖü˜äÞG“4L‰lô0bú¾ì½+©JVÿ¥µNu†LŠ=¡°#ÌÁ ›f°‚š+(úvæn\X9eÒ2ãK, ú!ÁvbïZ§_ógÍ•TRwøOKõÉï53lW÷@“3›-Þïüý[·Ãaÿ +Íjy |{b>/÷B2Úh`kŠ]�§x0ƒ +ò<«ÏM¢}—#úµÝWxÍb\›Ñì0Ò+Nf{\¼Xßcç²ü i¥6R ë)×fúþõD ¼@ÆãŘÆ4×Û ù–+õÓÁ1ÍÒ‡¼)þ.رDÍ#!c-¿|y=oÍgb!"h%ÀJî1MV¾¹×jÞ13×Òƒ@V’)›a¥TPÊ®X¼oÙÆVÂk¯góýš×ã!Íq«_�D8 áï2ít¿ã:"®B”¶ iÜ֭ʵ†8¶~Vh÷² ÷7’gý©bòvI`€Â�ró>º‹|ºÓÖ–J¨•S�rrš1†à˜l~A4±„©ïB†S§.|æ×C·Ÿìè°X>þ¥ªñ÷�EBºRåC�Þ­ÿOm9ÿJkÓEK—Qkõ®ŸÌæ¿ò™†bøé6G³R€ŒÜM¡+2,¯ ™�E‚D–òð�B1G™qb[€z m"ÆáXq¦¡‚ó¼�¢c�Õ„vU&~­pt-´’&í5zJY��è 1îÉö¡Zô™. ¶�ÞgÓ ¸0¥ÙÁWÈ[èk²U7ÁÔbn«TÝû4 �$†{ª^ÃÜâuÍt!Ÿ”ßRÚ±¾�¯Þn‰Äø£~ó®j”žñæÿ]FÖz#N˜™¼ScùÀX(eLãçʆÐrí{>äƒ_"ƒÿ¯»ÑÓò(¸÷¶!¨æ© ý:G·„e:ú ZT2ž÷Ì9ÛN£–ù‹þàÐd›‚‘™~¶eˆ5äFªäŒÍ=kþxѽuó‰.{,‰ÌÏ}Qïóíyµœúð ÿ ½™è_YM¨ ¥R¨¨7E+vAlóø; .)ø‘½â”Úü©«ë ›¥��Ô·/W· £d-BP(i\Ö\È7¢�6mº¿r‚³ñÓÆö€„„dº8nçV%Vù4‰Uøý�Í]ÂëÚd¡“ì…#0®�‘ÊB`ŸYÚ½#„!^çÏ.ÿÿhgžó’ã]æË¶e-e€¦5Ü›gå|ƒ­OAåAv7ßg ckÝ䆾bó¿GÅmÁãlw,ܳ³~DW��éÖC,0ƒ€E÷ó!nÀ9u'M]âYãà Jm8_Ÿ"%õï.¦æ~¤nÎ�z*Ä�É4 'ãq€‹U¢–æ/m§DHÞÇÉéòÇ™‚½†–ÈF"ã�«�Ñ WlªíŸgò‡Ðу‚£ÛH/¤s¹YDÆÒ€ß%ÍA¶iÜ“«¤¢áóëdÿ:d·Žì ”Ï Q×¼°Iêi%V]ʈ¬‰™füæ <±('uÄÌ»Ó8çõð„¿Åæ�E·/ÞÊ&Ý�ž“žÐ ü Z× °òIWèÌ…KÔÝ[E¯ìÁÌzå)?ù(í᱂ £šŠçÂvøƒ¸ò½cÆoXÌv먂QuËuuŘh÷¨Tž{GɆŒ( %Õ®Í@½ðÊn¿­c„‰Š‘"Z½ò¨ )2›˜[…=#äc»B¥q°�»8®õ'Wƒ �¾—/U‡Ö!rsje:ZûÄvƒ3.ØvXN�"­è’دЪOñ0“¥ß°—Œi P‘ ¯’«NN!I†`̃‰F^ûNP©PÈ-$²x¨—’#�¤Ý™}òŽÖq<Æ—†/“§†Ÿ"•ÅóïF�_§d6„UŠ—o;hóø›ž:fØ ñPBÇTá†KrÐn•tžr’Œ’¢óÖa%aJ ·ËÓ® ò$‘Ç:Õ{((žJ®Œ‡äÁœüÐØìþi5gA©ZÍúÞûIt¿Pn}žùð+ªì·ùxÇ€f¾Ï°".,B’¤`‚繌½b×�™(²ŒŽ1‰ š bðæwÕma!>GÝ¡VG­©åŠÛc­s�6¤º;×fxÞaFÑa4v+==J“;[äK‰gôÚ¶6‘w¦Ä®¬ÐV J&ÇXÇRpxú¯³vwð롲w!�ú!¼™Ûæh’bXñÒ°H¯_yµq¤l˜ Ç…# XÕ,.©Îæ‚ôHe Ÿµ/3¦Ó{Ð%†¥óxêÁfµWµì¬•M¿;qÕf·‡¦Û0ζ¦2Ô\2qöò©Ý† +I�úå%_ !$¥Ö¼ŽÀ6 ‹�jwà“~Œ„–(­R_œšìA¥ºU«!YÈ*3mË« uôÙ|ê¦yvF=øÃªù5bíŒöËÁjÓ`Ÿî=ïÄïìu‘B ²G#‹³ÂªÖñ‡äi€nTõ‰¹c”FaŒˆ×ûmÖKÀ03$¬/”êÖïéá1±ª„ÇÉoÁ«í Ó{Aÿ=´:Æ ¶®{þ·yÞŸzqMµËÚE­G = #è�Ÿ£Ó82Å^úoa}ç+uå 0qÆÐ‰ÏÔüþè,„Rœ,n©ßˆ¡×²DüµN‘[ÔîubFp)�ñKêKËñ´¿�Ü=9=^žøõ]4€„t’�¾8 À-Áò1¸boýù†òÀ»‡/Œx@(Ýâ·õ�ˆ~µñoS§ËaUÕ_‹QéÏ=õô×ÀœxÍCGŠÓ¸ÚŠ0ÍÿE—†ÎÁà±(ÚTõ&ŽAÚFÁÎüné#4Â’߃»JÇ©}—R�Þ›IÈ‘‘u �2S¶õ“! ÷^Þk¾�>›{h@ùZ×§ŸËÁدÛH§¡§�ó>8Y1’ûDü'{ù"CBãÛz[ �€á¨»õ.ÔÉ< ½õó«î®|`˜5óªâwø-¬Ý.�!¾\‡­1´ãÆ”±›– „¶˜žäéòÍÙÓdDµçnQò#exm ÀàÅQ‘è'$€Âà±ñÐKbL QO m80 ¨‰AQj¤mqmÆ?Qb7µ[Ña¸J(äà”ò‘l7 )m¸¾¢ëÎjOý>m,wb_�yuXÔµ tÞNz¥ù5&!°2³ÞÜ�ôb±1dzôx�´Ê#jcxÅ=¬$©Ê!•:½ÓŒ\2¯¸PJ~ìÝÓjïò˜¹›Žùÿ{”¡ŒKô=öÎ4q Þô†¿.Œ-ŠÔà jÞ®¦cŽ"ºÚâ¿YM@ÌSGC¡Ùñþ§¸P)Ò©ù4ˆ‚=Ãbr½V«kÕ(mèrÙ´�‚ª¦¥w\.V³Ð?üµ9€46f¥ß½ªe› ñ ‹£‹Òj�·N‘}³uÄ[ ­{G[;Ô]c6ž¡@^ÑN ¼vB¬¾P›‰][mÑè褩·˜ÃhÛ´?¯ o2L¸Ñï“toó#ÚŽzÝ¿^<Ì€E†+3 žGÄæÔÞ0Á"=0g®]i aÿ®Éìøªñ=d·Ôü#›ãðu°¾ö;sÅH¡D€‡uI9ÖÇ©µ�:ÏA®ÿdkt›æNÄÄô¢m!é»E^È2O+�´q¢Øòýl”�=ô1 áwêÌ𶱎°>)+¡YU•„ä±i„íô•2N´ŽOÝíJB¡jª¢5 ýÅsá~ö³˜å^šnÞ͹¢Tx¯$F/èû;u1vÇkN¨~Ø(í $ŽbXŒj£޹"Sz²涆Ï Bj0aõ?^c] éÂ"ñô¥ö‹éŒ•YûmŽÈfµ•ïªI„pWp…¬Atõ�sf}ï¯Ô™>ç®Ëy; ÆZaR«íç.8-¥ãÏüsX¯xnþGK½XR�<˜õ"ñ {@ÒqËG•×–žÉ©UüòË/3Vïð×XobAQvíºWøÄV; ˆ¨}³é��׸¼B}. ¿‰_~ùu¦–\J0ÛÁ~¥é7ò·–ҥɤMëPøìàŽì`Ä£÷ƒ[Â?yò¨·.º¤Êµ=™# _Á}ÕäCôúàk�êÉûˆQ/ Aœû¢¼?òÏè‰7šöïo)Ý?˜C2ò‘•g�B«us�ÝM¥ÉNÝ"�ë~½ß©G&Í¥ééë u­m÷ëúŠü²ç–Ž|2ŽLÖÂ:ì¦Î»H€\}ˆžð¹K½ïËd�«ÛÅ;˜€8·¨äìçêê�4èQNdÀ¿ËI‡åܺ¶®å?�$3½ ÿ*Fä+®x�Ö¦Ç×àw øIõ¥ §ïÿ®óôL�«&VG&îÈËͳdü#0KÆ€Ãß�§ùƒÅ ~-Ķ�Rˆrl¡óþ�Ùì ?ùB3« ƒA�£„.»ƒÎ³O[ ÝÙ�,kïJ™­ÔXZ¿ÓÆñ�à €º&ÁJ)£æŸÐ9½Ø¡6w8[È_ u%/åq»I5S,*J‘)•#ÝV™)lÉwi[Nx†Â‚¤0@[Í �>( ½…¼–Œb'ËìÌ›MJU`f;6XÑã†^¡RVÅt4—Ä_•íDqI²‘o‚Ù¡÷œw±*Ú—lŠ>(Õï.W!¸D‚5¿Vu$3w?‘>ñJ¬QsûªwŠ~ãÚ±  í�—ÆFMþÔ¥R•p)÷"%œ÷|»X„âÕ¿Þ¢$UP°âT}ÏÓ€çØ¥Ž—ç»xÐyõ¦·Æ(ïJ”ü ^Ä=�ô¿8wfòïk#´Ç$¬cpSþUîL|vçyæ{·‡ÁCfîdôj·û” ¬8Ò¯ÄH²ð›Û=ßS³êQÖ- ÷:âm“]Ĉ-hµàlŒÖ”¢¥C˜~ÙkU~͵$½Â^›8 Æ?Yl8z¡ã¸bàÑÕ–7#H.a6ÕЖ7Ž•vx‹üÈC‹Û&Ø‚¹A×n a•0…­!Ê”•2.“œ]fÓÀhœ­tT×R%pÂcÈzÃé+fžºæÑauÞ}b9»Ç _¯˜‡†Sã�ù6"vôr)@�²ÃôWv\PóÍ$›T£4öÇÎ(£gj†DeèH“ÂY‘ίpÇñ¾ C–ºÌC¥ÁVǦ—÷ç?¹Úº¢ÙI‚Å*Šx$À܆­‘¼DCãv™y~ä�g^u:iSÇkT›déíΉv�"ö 2›²Ë,öRjÃêOH„¤ÂÆ®S±‹M‘Í*¸ N$dçebEã4pO`P»i/ª‰†÷”f(–6J­„cR§DKþêûœô¼o/å0£ŠJ´²sL�™sƒž]Î/Ð#�ÍfùxÏ6jÚ¿p¢—¦�‘À¹XßOS;YwŠkõ¸r[tÃ0‡_þN<óÚ¼MÈ—Ø48Ì4Æ ðþÑ_ êÛôM‘Gª^);®–óY8 åØ¸á¥…ŸQdP‹Edrh ÞÇã]ÂŽ¡r9mí9:™^ƒ.ó¼dâ +û £h(鳉¬½tck#Ò3eó ˜uÊ­VŸ5.òàGå¢i*:îj­,ƒaè_0wq¥�Æþü\õh›cõ fýqÂÌû*)â’ýþX¨ÛêZo¸4§{`šQ¦V¶Ô°pe\{s3%uÆ&°­·6§^ËÝ—ÿŠŠ•¯îP¤3�‰Ü´ÉW‚……Zð±Wû­Îˆb?ï¦Ô í8Vhø…¤¤ïÁ|jþfð¹÷7fî³?QAH•(<ß—V‘âe¦ÊX÷ê»]*DZ Xê¬ J©½V$·„P”ñ…–ö!`¾¥¹ÔUP Hæ[:pi"¥jžM£IM“MM÷¥óm;®’cœîGÚ£6”cï:I‹fn–ËÍÁÂw¢Ï«¬à÷×MÖ—Ó¸ó]Ù5‡â¹éDÂmV²d¸æË:?ÙcÆÃtcÀùi œÛ9ÿœ- |Qd�Ȫ� ïÊ”‘qô»!äÆuq(‡~~yñMØk_à�ôç“twoдÏüÃÂ\Á¯ßi³{jh½6ÎþÒµ†øïú´Âb9çQáÌoÀêÉÊ;õ[5Xçrçï»g–¤ý�iú}W9Ú7ôä óxŸ�Ôû°•ŠKn§% V d¤onáæZ Á•óíí“‘BsšAp”ª9?j_ÑîÃáw¨Ž[G&ž ‹“ªc›uÇæÉì™Ò¸Ítl&/´a^Å›ËÞv=�bqãùóå'œ�P¸p¦Bæì˜‰“È+�zJt1Æç˜4¾ýZâÇ8„[03Z‹P=(Ö+<&w\˜Ù}3⌧Á“`¬ù —ÌÓéëç¡óÜ®üXx0}ý¼tžËƒÏœI¸8˜?ßÓs™Í� rÍ_þ-Ÿ7­·½&μ-nU “f‡Ó™,2]iˆVÒ)+’+¯a/c6Jã24$[$“ 7Ëq�Ñ�–]Ìkí‚`àÆi"ó åãþ âB Š ïó~jõtWµ’9A6%+’?çý´~³F£é1Ú:N>ƒ5c:ðísïÙ×hufÑHJ §äüq˜³1ÁÀèÏ÷ÑÆ®ƒVµr‹ŠÄj\wcAéñIláÑìK7°gHCß²¾�mXX³—¾b Ãk©³cⓟƒ$î|éVóZÇ+÷ì}gèÿ£�áoy4ªñäµ*"YŽ ¿™(&^¼«“šåçñÿ‰#x�‡„ŽÑ_ÔTãšö¤(ô©™î«ñÎ`ÀסóyœnÅn_)£;¾síXd(ªè¬ÿÖê¶ÚíN¿'ð÷&IQA®\órß”æãåolþ>*ûÅç�×”ÛK¡X=;IÎ9ªUlqJ( Óñ+~wˆQά;�8N Th2k¯@Z…Š^«¼jÁ5×&vci>Yþ6pÏß�e? BГº´QÑ›îºûáþ%Gøx㩈ïÂX-í/g øÐ¡øbZEYÇùÛ©l!]Oø–"÷uÙURUÔ¦°GÈ/vm8ÝK¸²ÒÜÌ®ô ‡Šùbâd—¦x‰Râ¶0Csx@k!èMðÒõþ/Aæ™uk½3·á›¼Î×|)­¢pY”ŸÈ )£ˆ.í0½ËÆvîä,,%˜z@È$¥.�iYQØ$oÆ·!ŽPº�ó|à0Hò;p†*å)’²q0ö‡îf…炆.š®½ÑŸõ­|ÞqÐî~RžA%]عr_9·‘5È¿Q6FÞáÿ̶¥“ôÿAÉø1š3Ìù'ü+ªcÿ÷;…ã›øa@+“á‚v| ¦é‹R¶ÔfæÂÔŠ‘»D(�6»\§ßìÖ>ï×[&”w&6fÓõMβS™w.ÂÅb0ò)ácÍ@›�LÚD?,¢tSžyõµd$ õ~¯Û£Â�ôílôu³ñêuÕK€õéÕ‚«ŸHÎGŒEA&N×U»R8Ѻ£{ÈsÞI³þRIýbô²É'O´5h•Zpõ� !"¥OEûÇe¶/ƒËjÂ7ü‚â~ …œ4EJC5J¨“|?KÎ/fc8Ŷ¹š8‚3(Ê¡Mzv‡„%±cKÈ�H›áDià’¥Ø”Ô‹µé kC�ÚÅ«š%¬Ó„ŸìÙ@ŸÚPa»0O` 2Gü’]:8.V€"‚ˆ»"#ð¼ÜbšÁƒ~ÁЍŸ†¿8¿­Ù)µmbhRiD%�ý�&íùš×m éf(!åÙ �¡ I‰xbx>Ê×(!ö^UcYw'l?á˜&QÍÈ$xŽD3y5,+ç�÷.òì>$¾j‘�ID€;bKlËFH* =É"q*á6…)PÖíXTÓ…@�Ã$;gÁ¥d8°†íîa ÅdÇqΘU¯²t$rÞþ0ªk'AØ Š�v>Ⴈš¼¹fç3qã€/™ˆ“¼áª}msо ž£z¢4ôN¸�W»$™pÑch’ü_Õp)8’EQý·r«Æ?è¢àI¥ÍhRÞ7d$†#þƒOGñÏ„{:€ÿ'ÚSÿI0A<¹Q~£q™_ÇÃ\æÎñ7P÷>ß¼°T;ø�âR Íy}Û žÒþÛÿ­<{Ž1"K|ÞÀ%\Š.ÌÂH=ÙÍ™ê:§Ã •«¿Ô)hFV½üÔàœ�híl .éü«Ÿ�½[Ns\´–bøú ›êË™/{ÉBï~´nOpNõͺa|·c¡À5P€ ~xÜû4¦‹öpÆJoÝÇœ…±¿ïõRl¿«×y°œ£îÒȱF*7äºÕ�Á|NNuIóÿ:V4!/êúÿÜßçÚ]ê²�¹Eö>g…v™—ºle%ùþ™µâj÷u>¸VÂì›CŠ}{¨·D÷½Ô¿q0ÛÚèÁENî6Ï•£îÌÇ¢½žËz°"•ØóÝΞè‡$H¸ÆH¯Óí ÷ûqaÝT´ùÖèµ�þy-eé¤'¨ûÛùoÏv—¼—_¶XµG h_·öá�Íe…1)‚â· /¸­¬S�Íu©†¨f.•­±È…kWˆ~Î,¡;òD ‰|/„‚¡‡«ÚݧVX6ªÅÆ~Ò©.'W¶ã ûâT;=Ø'Ôã{ •=ž+gÚ³ö—ƒ%�ýùGwç#žâFe‡Ò^Ü5j²6–ço\4¿ö@ù¡5¶£Õ°3å¥Ü[BV·¿òŒB°æã ¢® ÷ÆÂ,çÛà2'ã­í¨úo>,Åö/™çp¯dóeIäÙîW­©OyIçý²NÙ,;K%Uª¡NÈà‡ã�e�ëú$^e•€¹›»Ë€Söºv¼Ÿm ôž &³Xy/×ÁbÄð¶¡„‡‹!ž‚A)·² ÀÎkÓŸHì`Ï 56k®-ÀáoÕ»ÔÐÁùû+J©Oó£e©}¶§€r\züP~ –Lš0ÕÜœÀA½ <.Hàƒq¹Hþ€|Zø|¿g…ÁCˆ¸9 ë„–ùŸSF­â4+\éf�! ¤ûãóQ=·®ÿÆ‹F:û£nÔò'±ý*¡5R394Ò³Aô¿çX‡ÁHƒÅá DY‚B¥ÑLI)–´ [–#Ç•WPTRVQUS×ÐÔÒÖÑÕÐÔÒÖÑÕÓ70426153·°´²¶±µ³wptrvqusž„�R?ø Ó*’®Ør �í¸žÏ‡ÁHƒÅá DY‚B¥ÑLI)–´ ;�쟆`yE%eÕ2jiÔò‰œÈž"}Τ©j-¥¡©¥­ó'8âM-mÅú¹ÐŸµ�añ º�MLÍÌ-,­¬mlíì�œ]\ÝÜ‚é & ñ@1œ )6‡Ëã[ügxº�ƒ­eÌ$›md­K›ùda¬ÐlåZšN˜õÿ��G‘)RUá©_=o¤8±Žr “"||åB�Anm•¥ð@Úø(¢ceÄ 8ñƒÓ?{›Í?Ywœ“ÐÒ’‘1ùî‘5ðc›£…¡¹5s[É™7ò1¦ŽL—Y1¦ÇM|Q=é%H’ö0"œ÷O�ôC‹;8ÑÊGÜÈÔ3|ª(¢ÊÜqtÉDç˜,�h1á[hÔ¬‹jÅkòÙŠQ2*™*³ØÎÁ+ÃÈåDm²Qià?õº„±|¡âÐ%˜¦®2nF$åoÄ4²¨ñÛu³ùø—¨uÒÙ¦’,'³ñZ$f¾¿OÂ# ëHr¨¼ŠTÿ$L¢Òíq)ôë‚÷Ò:9ýdܨļ”Yv‘<™W¹äÍgáL\óI5×EAŽ©cQ"fDkö�Æ„Š7 T¬�… v¼Á>op;‘4&u û ÀW¸~% V€®xîL›òlÙÊœ+½Xëèß4óþ}¿uðÓm|7k¢„ñæŒ]B£·o>…x9Úö”ã)Jí1„�¨µþ¬ânƒpO pÂq½€ºgM×h�Õ95È·×hm58©êä[ª,®JÒ\ÙŒƒŠìWp¾¡‚p–¥±Sö£®¬ªÖyGyXS>ÕªËë°VÊ¡=ÞÎÛâÐIÞ…æH¥UFX a1†Änc1”±àwѼO4A¨Ôy•*=Î+ÜPn!/³B©#Hâ\Û†¨ŽìJ ëu^ ‡|]ƒ*ôô×$s—`º5ÂT)ÏPºHhâ%ªmQ‘m›ûÏrG¤[^"ji[o­bW"plhM‰­¡ï(:ä�ðÌD'%GD^=jÐ)œ1¬âº8 ¹ŒÞÁ�èçÓ­ènï2‹ ½äa¾éa_tê<ƒÚÉËÊmJe¡k¼ñ ùMer}!’ªž2&RYÉ9׉KB’Œ‰Ñ3á†LÉüÆkñQ­YÍ"û—dˆ7rãF!_ãZ¨Ö€~\$[�‚D¢æ<Â�ø‹b^äö4~·Ï•í3‹¼#o2µ\k<íãß;DÜ�±âm¬ì–ø;äpÏáù¹õÞ¯ýE2j 5ptHK´€ˆ9$K Œ¾lΈ>Ž3±±i �£rcà®ÿnr¸¬Œ]i’ØÉl¥%dìBì2Žd„Ø'äŒuwtwöqrkãÆþwnwoÝÿnx<íß¶ô½}€ù¢O´v­“rkŠ¥æcguâð]Ú�$›³ ·9DÙ›{€_ÜcJ)m¼d`Ù<~6±/i$Í®�ä˜;à*B¬ˆÈ/Õ`Çèú¿§Ý™7óáR yP�l°�„xÖ‡ÏÍïOF´ò´¦ô© Õä&˜Ú b� …ÒáwþúoÍV"²1é/ÿ—Óü3�)VÈ$'£X€f#0icÈ[Ö²«%¼ÜªèÔ×{_OÇ=M­=oÍîÞ½L‰cv6.õõ¡‹FÄ9 Mà ”5Yî’”NÁ04Öàìg¾Âú¥bìÙÏk^µ«š‚Ý&üÛÉý?§úÄÑ$®@:�JÃ2Èv:—º•>%Ó–¬Cž‘“>f’4Œ3eø6­4�`IÀD�BQ©OuÖÔJè¬_¿ÚMô¶"2¢²íx;Gß\}U÷HlbGüD­'ÙpöÔþÅÿD»'À:‡˜GÀƒh`Íýç™Óÿ“´±I÷Hߘóϵ-o��·~W’jëˆeˆ\dŠ ;ѹmö?)q„²�7kÁR¥¢Å¦çßy„¶(ÔœIX»=r7Ï—¶gâ¥ÿ¿þ·�ø>vÅfüýù¢�ä‘ì'�Ò×L%’ˆ¾:%ChZ|ü¦[h>˜±dzæ„[Ê][@Û 7Ð9¯ó�¬ ÆÉ>º}Iø EÎL7óÊ•–,t…w»Ù(6‰í™]ÚÒ;žSýŒ«Ù°Þ® ïÑ«s@zŒST\{fÓ5« \†PòZßGàçç5¾?05¸Ñ„?ó¥|1ïïMMÛÿH>ÎBPüÊËsZå¥TT©séqQÙ�ÊÅ’ žõIÞÍ,� Ÿ9Z’ i-É;EêRjCêí‡ÅQúy㨀 ”SUÈ�*Ûe,ŠÎ�Z÷.º6dÿkjRýÿ¤±öºí+­x @éÛ>Ýjµ³Wº®Û—^Q&,Pc}x|>UËv@¢6Pb©½;§P”<:¤¢résÓ þ  I’E^ $Râú‘ºDq7s×Iv.S¨î:òBÈ�‹Î�Ë�ж¿ÖÑÊ¥Ò÷ï+Íî9µã "†õrÕmZSZAA!DÐÐWºÊT­íVÿ›·}mÈ64¹Ú”¹j7ʵ: Ý’IOÀc– D‘9{‚Ð@!GÑCä &þõÔ~hR‚ö’É’Áj6€�hP!³¬«gó¥Á2:—óëßw´ë~ì "B±!]øïrU%u\Z÷(îÈoßý_æüç’ŸnÏ3ѱ8ˆ‘B¤‘"̸ocÓ¡°l7 Á@IcÿUÛèP×3ŠX²^Žï©Tø”Fæ ¶À¯A p›Â@o ‚´“”ÕW˜k'PôqŠ9LУR ï9Èï¯ðhxÍ‹ö·âhz?ŒqÍ~¼Û~¾¤·.?ŠÇ®§K¥¯§°ˆüKк×>ø²õN|è.ÔÜ—çé Œ=æmz,¸ôXhü zìGã3îÏûú_ ,oëŸñ¢Çê¶kùIÙ]´aÛØõ&»Iy�c¾À3^ø'½²s|åô ú ÇxEa¼ö"½q!½ñÏ~C®a½Ö°>kXÊš_ÀÉ•Áª á診c“Ï4�é@NDz)Éí’W™SURS†8™€…`2l6H'.±ªpï’ÂUŅϨ:lÈõ,så ㇦Ÿ™~÷&Ò T+Á­î~ØË7§>£ÿzrS©]-ÛJ,ùj‘«Ô&s«{T�ª€�Zþ˜Ò8®�µq“_ˆ·@ô@ð€‹¼ˆ…K£mï£êr笠ú¾ŒGÛSóÿŸã1�âò´ÕÌèOatjz¬W›ù›S0¼�î+q?~ÅË{ý‡ÿít†,A'Ôÿ’ó„2î&€, ƒ‚@b‡€@¡m.â¬#Ï:EZG¾u$‹·Ž%­C.Ù:–IµŽ4BëÈt„"žð H@>ðH'?€ô0d�AP† �Œ›™2¢ ¡ (¤T� ¸‰·iý MN€šbà»Ïü�ˆ?ÂÕÀ0jù5‘0ýË~Î�Å®�òƒ+L�€2$Wáw_¥ô HBÀ†h£äg³Ž1 ì/(ÐÓeyÚôóÝÖé�i)†¹ ŒäÏ(�©å¿ÝÛ™f†Ì)À½¤À)pì[>Á5kœ@FJ n­œþhŽn¤ìH†vÛçãót{ž´ùàÑä,§™ 3� Ú 8±u¦|hMÛš—kn .¬|@ûSÛ¤­ìOéçöûá{ãkÄô ,Ú¾¿dóS«_®¾m»`;`ÛaÛd[Ù—ÑÇï£õycû0ƒ¨bææ sß�íÇàB™{d¯9 pͳVa¹�mÞ«œ•;¥É™0~ôMYß×ögúêþ×¾¸OéãzÿÞ¡7î=I§ô�îS÷º{ÔÝì®t§º†O÷ý¨¹?»M]q—Ù%uQ]`çÑÙuÒNl9µdÔžšõS}]ïÖKõPÝeø6@™>½&ÖàêR­ªqÕ©³‘ŠÙ›ù<벸põcY�¹ºÒÌÎø L�´KiŠ•â{ĄҢ êá.Ü€° ~‡ Í—Eng)þáÆ!Ÿ’{¼]½ë½ÖÏxµWÀX …ï ¥ã.s¡30Eùeé-_JCyR7”ÛåB9–ÇJuV”áê[¿¬c@!,­L ‹ðžœ7¸x«"., AGÊ›¬ÇÚ­ÞjíL”Yµýj+-ß[¼÷X`�¨`Ǥ ²ÔÄo# �áÞúZ†v©eíÐçzS¯„Ý7&XIQøT×3·nÍîº%= ;ö½Œ:vÃâÖœÁBjöxC¾Ho>—íh㟩 Ïk˜v€Î%»fÔaWBÔØóžL:ÓÝþ³³Kˆ?[l™déèy_Íl¯ñÀ<¹:‡—RG¤Ì…øGý�O{g¸öÙ, ¶k=Âü«¶�6 ^xðJ/�ê•�áOy«;¼½FܼiÏ¥j´ ÆnT‡�K•°5YvJåYíf�9#I.÷ܧ+ujÚ�ªfÇÀ€Â�­½^<]·†ˆèxFª“1r`•:Å}YIvÄ�D&Œ¤¦*îTÊ“NË÷DÞ$\ÆO_M?é“b%>œ?¨/ï":ÚkÏ3òsðìÁùh~ƒˆ,»p�Ì£ê>¸yÇØ" +±* 2D»ÕJquVÒ¦ &RÏ3µo2V‘K=/0‡© €¥Ÿ† ôò¼ðZ‡ä&,åÒ! `e×õ0DÜÏ?‡ÿsŠ�Ë >9îx6§x,ÊYéúc0;ý¼–ÊCs ‹uЧ®„N`ñ=ïôƒò2 @ÿdü’ž @³Þ9‰SWl��ù{¦5¨�Û&¢­øÖ¸“:ðôª_E‹Ñž›4tlI'ÝÝw¥lnŸ×ÀFKÃH»änAVR]ù¯ú:rwî¥äP,‘þl©wë¥Dp/þ!ïÆåº/uêÑ@à8—”‘�õ�}Ô²"tÝŠ�PÇ€æDÁ¡[rµir0nB|¶Ô‘, Ïd/tßÁ°ža,{¦”‰ŽÇ‡2¡3ÙMÒ•Ö×…b\ž)!�Šþ·ÐtÐáì=õ©�`ÑÙwñ‘ã§» ²4Dùø(ã 囨ÿäKHHl1¨®Ì þhcPTÿ{r€9%ïƒé¿ÃóÛ<¯á€$ÚJ£d4 …¿ÁÆJ"ȬºÉÆ+Éàø“ê»[àÝØ´ÕX”vpi1,f»œØõÀ$:;õ™A4�[æ[ø¬�¶¥dFY§ž‹®÷f¹ñ¾§ã‡ô¹�<óBBLa£´ ¾)‰¹ÙäåL§n¥‡†ÖV¸�â5<ª&¡ii"ÊØ$Êä 1ªLÁ¼A #ñ. û„ Ž�øZÙÎ}Òæ2Ñ�S~“ã°0ÇÈÁ Íöã �eââL­õâeÔ�•ëÆVf«-sÂð£õÇ# Ú…ÁÌ#NXÉ9¶Ü7×íÛ5ŸFÉeAÆ€�ô±`)v®DÉ¢H ¥pþÖ…è")%„§åCGr\RŸ+!$-Ù?DWÒcŸíÚkøãØÜëÂß+ïÝøþ‚lf;š´HEuA)©&Ï÷6‰i”·tä³½ÔK‚tÕ’É6Ú yÅ,¿Í?O±hÂÝ»ñ€ÑÄÖL€ ?ë®À±r¢®*˜][£\ÒÌ4ýÀ¶°0À�·b ¶à7üev.÷±ûq‡Ìá…~ñ8“Óu²ì±‹'[çŽm@qL n0ÙÛ()D‘ÌòàS ã¤æéç'<@´&d(lj�F¿¬ aÈŽL�N"ÑFtÝ1†0„Ž@ñËÅ´ÖÙÚ¦ƒ|½Ã9ƒÄ·‡[º‹ˆw«iìõÿ`Ö{ݾ¬fk£·8‡� ´<ªÔ˜³àáZt-ò.ô=÷Ì—�òŸãÃ:,d?ŠÑBAA@æ­ØU(0"vÖm(!ä�]�Xü€›á½$-ú1ŒQ3ƨêù²BÊHK,¼IöÆÛ‘³�ŸZëüÕ8Ê5ÄÀTÁ7þåÁS¡1ø ‡�ˆ¾ÖØSSŒ6<ëAÈje= P2Ε?¨Û!í­ÀÝÆ¥ÖצŒBúöbµŠ©AY{´»”�b�4?ºk ØœŒ¨¯¹ÍÚ¤ÆÇÂõÛñ‰§%WŒ:{Ö6=¢5y1"SéˆÄî¹!�_Ë]øæµG›«µZL¿é~e++lºš¢ ‡aé-§Ðã‡yÒ|õYW®ß½}×Nt¹myÛu¢{Zã­[…;ZúÈ=yÝÁ}O’�PûòÇ2¥›—¸µÝa?ôndfݼD�·³>u»^lŠe­ÔZsnSÞ¶Õœ�Yþ�±‹8Þ’Âf¨s·çMÆðürÜ ä6 ! O?áà†³@V:<Øßk6êµjåéƒl"П^„‚ît'ÊÉE0´“Å}ÉùùÉ®áǤ›'”ï*­­B]haùíßájŠmÉ"aQ.hX½�7²‚BØGÔKQû´}NÖßk�UxU+¤ˆÝaéb²Ka?ht·%dlg^J–R‘«‚bBÞ9æPºæ*¶„Q_õ¬½·¡bl_�O`¹CÛR:P†<ÀNßîÕß<üÐ]Q… y`/ kC¦oûåI»Z¡æ´7²»–ÀÎUàsšp„]¹=�ÅÖ zètú�…0(ï°(HÚÏ âðtÁ)¥Á&“¢¶W~Ý*vÚ¯ïΗÓ�$#ÃÞÉ€Û|ÌÚ½owÔáü[1°Î¡§ öÑ#m BlTÇ^*ZåMÌ;Ül�w¬Òб*BÞoœf®\Ôõ%Vç¾4¤k}ý.ì¿3oÊÊí„ M |-o+yך<æÅ=ÖU\Æ;+¬TIUˆ¯Ä­zç$%ÝÓ J£¨¥´bN/°ÆQ­çVM;å}C“¹Ô�¨LZ0kO›¸ypö#\•­‚"&ÐóÊ·ëu'9*¨Ó±çW‚­*‘Ë4uQgH¢>XlÖíÐ<Ïð|´XåìM‘Ìú6[>4転ŸÖgëR}Ìeá ´–ÊQÛ†n Jp®1œßëUÏ8£½�#gDdsÜäé3\¹…#5Y‚öE™òÖ!ƒ È:ð*dvxÎ]r}3]ï™p4ʬké“{·b~-+’ÏãÈí�*1Ž/6Ñú*Ä})y¤uÇ#<ÔŠ¸ ‚Ë�G²^ÔS „¤%iÏ)m²«†ŒJ骆I€(Áû蜑.åö˜e"ŠFs"¸µ!ªò #%zî#!¬{àÃ!Z€žO¸Ç[›Šõl^ˆB‡€*T/•Š@Ài;¼D‹±»¸Â dX×THÖÛ°=Þ Rf YF›Î9o ¯ëYÁail�QØ�UvG^#oº"oăÇí•~�ãÙFpEìÔ£ZQÁݤd¸Ú5÷F¨nÃ;@+[é*&«ó-‚øÄXOQ=Ñ}„Á©Ù‚_1 m,®‰Ù0’}sFmÙtØ«â§ä:ugž¦µÕ¸!!úV~îš6•+ÃÚ�£2´RþÂh1ÈaAù…M.È‚”J–Ïœd…‰D$<.>Fô-ð”ʈ℮2˜7ú&̱½;(¡JCÈÓ(Y4<ØtÈžkKÂÑŒ…Æas®Þ~G‚lIdÏ™„hìo{!ä«–J_‡ej‰’[�M6DFu«6M™Hކ…M%Ö¯²Í°9यFºI íD ,ÊÊM¸[V€aIÞ¤•žöú}ÀuHª�Ô0ÐÓLQ4%HöœÑ�6ìH�µž‰À–ŹbNúrðì@V6S"ÁKì…ü?àú-€„ÉåwÇ‹‰üïÌ�ø”HÆǶN$0zÙ�¼k˜ÃZÐ’�5ÁØ$ pÒ‚ˆìóŸsÂ8“¯#BâRI¿'ƒ^Ù$ÕLòºöæððÀ}† âÿ¾ƒ‚’6õM*Þ¡6¦ãåÌDW~î]y�žþûh®½+5ÂSMô3À¦+sr1{gEéßùoŒ]°y2;~˜Ó‚0ƒt>™ÿòðoF�FÅ­KVÐi¬ïOû+„!«Þ:ÎX׳¹ v“©œÉMþY&QUÉÄÒ#ý*y˜oMa/wÊ�æ2{ÅZ?Xßð˾t ä[Þ4ÞiQtD86ÞërŠ®¿ ±)ÂvÚ²§;iü™*]¦R "Ø”Œ¹çø¤í|Œ!á?�}tëÎÔÐõf®*_ ²À;j>öP¹<ØšueS„iŒ†è%£îN>ä}ÔØ”í'ƒ|fÎBa4(Õù”D‡ñUbø©Š.ªIÕ™Ë8gA¼€ì ñBDʳÕ9…F2çòP$ ØÐšZµ9zìBæ{•{Œ€€<€¯à®Á¹‚7ùàÅ�DYyè˧Â3V¸\^;_þ¾D~3À².‚>ðlžÑ¡3c}x-Ÿ~J!œ'�nï¼%ö3&'?�._×J¶93þËÒ¼v·È«(‡¦ŠÉœÕÍqc¹_ºåà}6áŒcÆšíªØ�‡K‹èûÄc˜9wõhÝÚwƒnøAp»K|ìš|¸FôK‡ëšgDl'ïDZ:îÍxÈzD\ÄY\tƒ>y¤5–çnéºSÂz Ì[ÀböZK�*w¼·0¦XšC¡Óð>8Ð Úîo8/ŸÿóNË %Ùñ%1ò×WÓWH!ƇþéTË’¿”C#2!MËøRæ‹ßªÆ…ôgkiÁda¯8§Yx2µð¥��o§2ƒVN÷Ÿ$ DÑ9ÁØ`Eývk2­jdδN*D avl��]õúêVßøŽëÌLAòŒ¾ ³…Zã[\CZ7ÂYL“uØŠ�¸8´Ã'À9h)ØŒí@ÙIîÆ8Ö¿#ëÖñCËß½——2'ëg;%×’˜½3ÑÄSOy²ä\ït)icW#}`ÒðD•'0 +]Í(â:­�ÀÕó`ó°kéQcl‘uÙ ½2�²‹uÿ¤G/A$FEeù¦†¶ç¾DS”p=Ç´-µÎFLžÀç‡ùMºõ-Ôj*J+øfRåo&ýZ[ÕÒ@õv<+êd t9p³Š�¼ú\e¦©¦9º{”È€€´ ÝկΆžBÇaÀ“Žq‰I»Ö´*�T.“iZ5RÊg+ΜÈûíª$uB®¬©«ññÁÑèˆÅÁæç厡®‘dÝ!~]rK>ŽÖEcÛT} ÁËôpqƒ\"ñÿ3³l‡Í' $¡Æ‹Éþ£Œ¡gÍüõ�§ ë5¤€¸C�ÚæWmÓv£íXx”Ší¾±Ó “­-É[Ùê…Leôl¹Ž:fZôç7EÙ¨,ùlʵ®׿Vv3‰&KÛ‡vÇYYÖ|¨Ø€•¤þ¥d d@1YKäeÛs> 'ÆP´Ù¹õ\NƆZì Ù•�  ¯¸FKÞ§ýI`¬P»Ô·P£©$EVt^ñ]7m'ÊZ�U­$a÷“Žejž{µ\¨å)ánG<³ú:Ö·Ž8ªMâh¨¾Ný…ª0 Wë.ȧ¹Ï§ÖŸÚGvåÎRd\k+Mµä)5{ ÔX«kh �ò(x/ÍɆmË6�JÅUÆ(ö›'öEº“?÷/N©öº¬Êglj:…ÔÐt>Xð¶TšÀfä¼7ß?·mÔ�÷ØU"÷±L+Ü„Ì7ÜÿiØËð6µ{�f¡t>á3-Õ�Ÿ¦‹[#bueÔfü–‰ȹ\èÕá~:ë×6S¬õ<ú0F»Ð„'oH]#ñ;ÒêkŸNªFGA2–ŽKªª>]R¼«¿kJ¹¸ÎP aQÚÎðƒQKqhêK|ãfóÙÕ5i¤8Ž�åPå:Š`¬ñVöè¾Cm©RJÛ]…E‡­ü®ò:VàÓaµª'|äÖ§Bñƒ÷µkÐWô‚ìƒLÐáØÜ"Ú ¶3„ˆÖ3r„ql.aØd�‹ ^9µW@CGƒ ¤]LÓvžq±ˆg×_š”¬¶Í¾û¹©­`žŽ—=è�Â(&C�U°˜€ìV}пæÈƒ>-7]ó$çL·UÑÆnK¸ã ï±ØO¶+]’ʰÖJ.†Ä 5’iH5¨–4-ò;‡”©ˆf·Ga£½Ö{t@�ßÉXßðâ»âÙ§5"Ên+2&Ë\ —IqSò„#ïi`m�ºÑèÎ~Äõû¼¶‹Ÿ¿:wuÒþÜÑ^ûº£Ýiã—8–«¨¦S¶ ¥dê’•»Ê³ô$W1ü°ù ø¢s2eÌ1ïbÙÌX—>v8ØÅy¥Ž3š[Ú˜½/ï²#EÞNµSc "ŒÖ¾Î‡òÔ[ÐzLÜ50÷ß¹MZüÜy‹E|Áv>ñ°Ýµw»mj-Ü;~ÿ âüç/¼v²ß<ŸãpÿSv�"t²¡§]3æw*¶Z,~W�Km5>aÁ9 �®N4ãy€‚q‹åHÖ'ÔÓ™u£o�P~ÑqôŽwĉâøô„Xegc̼š¯÷jx¾¿Ù—lù»Þ„’*âø­%j©%ùʶ�=@ºíP»¶©hCm`¨<ÿ—õüIš�àä�ø€öî%n�o*tж3ѳÿû[—´ÁZåh¸MvÆutYËhSÕÆ.kÄ,öôÃ} ½ç¿g��ÿÊR/qMö=éä`Ž<¿‹:Ôæ�|yX¤¯sßøjgºþa«¿~ŽßWfêÀ=5Þò% ­…á}õ‰ ‹ööóÂd—”q4Uw\ßÌïU¶©æ¤6Ã:y•æuâ`x§¾ÔæåîPÛ;Ź;|˜¹L:QÐíÁÆ�[™‰©.5EÅêüÆ¢óŽ\˜‡’ žuLH¨ò"§RÃÂ6f‘Cv>#¾Ûºqð¥nb÷cΘf®¿üý=︾%üËôÄüá³+gãIÜiɃÂ�y‘fÂÈ~uÅ”g̸€µÝg@7�¸h¸û΄9U³8¯:â„oeEéóŒ¢L£/Hšg í;™ÅE™Ü$ã,Ë¢ßöë]V~«µm%•¸qgÛšúÃfÔ¯ÜÕcè[ÏR•+emáÍqo”6j* ² |fæ&ó?+œOfc@F°®˜³ÇfN­•ÚíÔ¾ŸÊ–£}T~kÎ膙-Zok‘ÛJ ò"û]©7Yü„g°¿zó%­=EÙ Ñ ‡vî²w=-•}ŸXªýµ¶JÅík»6ËíðâîäÐcÍu´#í)9QͰ†®,…��‡ñµV¼ÕWð·QÕNñŒÿl>ZYÐE5€ …y¿Ö“–Ð8«\:g{½éñb/t߇Ãyq-KRÑ#UúgRwhe_Æ0<ÖÁ…í‚ä ½­ªþ¾°¿xýjs{}Ýà°Ÿ�ût•p-ž¼[]Q¦Ë•³Ý~,?R ÍTç'«EÕÚŒò=·e­˜ßFæ�Gž<�ýªã@t C ¸�ŬCY­GÔSoÖ(3Šs5ŒZ%ífý�Ò_G· v?©+ÿõNl¾–zJ)’ˆ;DÔSµ5ÔãÊô‰¡§ 8HðæP¯š¨eC*ôˆJqmŠ`ì¡5®hY' *|-pDŒ(£ítp½d�ý“^ø�gr[e,ËÉ�RB!2�=LnAló“®ÅÔID(WK¶îE²%et’»7Q†OC¤ÁUl¶ØÒ@‚ŽØº¯úRš¡kT«OYÝ4À ÿüÖåĺô¡ ¹–Fk0ëÝbž¦@0ä3áü™¦+{O7J•eí±�sr¢ivýiÙ²)ÓˆöO�–×#£öêŲ#F/h“ƒq?Ó¥Qµù@ªÓ„¹k¥lþté¿ÖéfITmW“Të’ÿ×Åí3úD³˜ÒæÞKƒíÓ¬â¥Z×ÝwÙð^”ÍÛÜZƒ ªíì4ç`�î:Þkh@ –-óíµÌ³Ë…wòÝåIáÆŒ c¡ØÍ� ss% .•.nþpD¼›+wÚC@~v8ŸÇòË3ÿLÏ Î—�Û$«²•vÅDö ¶t–£.Ó•«ÍŸÉó̳`£�©€™†é‡of>knusï:v9Úpé®×%Ž(Í#Ò®é€w_çC#ÔŸ*ûUý=Êö5­BUá×Y['4ò\ÍŸì\ðšÅ'ÜBÜ„Û%ôœþ˜ÔhÛ9W¬É:äê”Ü$fŠ:ã’Sªõ¸U/ºƒñ�%&Ö3¯æß~Xî~Ã��~>шŒðÑÖñaquǥ‡åïÏmX;= è…³aØD˜4äµ-†¡åfíðÉ P£[srr»qÕi7Ëò³9.T¨»,qÞCP=�xÄL #6ŸÔ.ÊNÈŽŽ�ifmÏ^².UîÕ1¤xvåq܃Ö#”ý>ºm�¥€ÕFmËMªñ %]’�Ú;f#²ˆWœGKªñ¥‘W<À•\ó†ù›•¡‰6>COUK,‹ºŽ›UIVxU:O�³�:·3Y2v_­¾yW'„ý©áæ,XÍÙ‘ÃêÃý²þ‡ fýÚOâYr¬_ãìö³gÁ7ï/öv¿¼tAuÏ�Ưaó„÷¯� Ú³5MH‘ 5ÆŸ7ÛmÀ ä§@yºŸ¡~ÐG3ÖwqpþçžË�Ë߯¿0ùž£ÿª_Ò$täPÅ¡c¨ Lv³ 4£f†ÇŸmQ�ö/nnNn©¾ß_ÑÄ^—â'ÌŒ6ôüdêù¼oyRÙ,mÖ–»yˆ¹Ñç<ªõ†•ŽŠ~¾>ÓŸ”?%2ŸO�K×®4öX�òr(ä¼ýb¨zQGÍ»Ôt²ío]+¹Ú�¹õèöo,'ïdt@z¬è‚6J«qã Í}Vð�ÓÂl’oPÑÌF˜PÄÎì�°rãüåJöÖï‡0éq£´®ªTKØ/'¨i ËÁ-è f-Š^gð ZJm2:¤º§Å°žû™³y§o‹ïû‹ÕÄžËïñoâwBœý++e+NeN�ãÖ? €9A¾m�ÜO·ÌÔŒt"AŸ>]dèKâd£“LÉ�¼]s:‘¿}‡wE§ä×ïiŒÚ;ÌÈñO2ÍA×üà=L.¤[æ ª-9 L|¤°¦ÃDnx¥’ÑßIÍDÑtÕͯ :P>'¡ôÒÿØ·pÍÍÌ]½Aöë!‚ÛæøªP*NN–ÉøDsouÿ”2q�ò9úýþéæ‹�]eH`‰äE ôÁ“ü½<Èþx| ÁNat�é¹l åO¤1IHÄlAôÈô âp¼‘œXïš@¸û$�Ò*ÄÉ)Ò‚4�oa©'ÊeT0Ö¶éß'ùÓ�§õŒ>Ý“7$,+HI¬VšôJqR¢'‰€ÃQÝÝ„ù€÷þsbå}IŸ�nTìñXj`hp“ò �#2 ÎØpƒ¸„>NÑ+ÌkJÄp ¿ÌÞÕç‘�[¤ëÏfð™lë$óÛäÌÀ¼°¤Ï°x;tš]õÈâÉêÎÁé.síÐÑ¥CÍŧ ‹v#)PØ=w•_½ŸÚص=€×Y-¦!�Eóê�]Ùü–�äüÜÖØ�;zåUÃÕhÕ¿ûOÁ5/ i85q L+{c[mUg*+z|»Äzý'­Ûëoi1¬ÇV˜‘£Ø‘D+3 Álù¬ƒIw>0Dòž• ÀŽð•ü ì#ÿÕ‰—Èemsåû*†â쥌1óÀé׋c¸Ô –+–÷/—/7·ò–21–žš­¼NôRË*¯÷üÇÐ|WFð¼Îkíœlí|_«ž/rp\’S7²¼,ÂÈŸžé‡/�¿26BŸu*Êad$i 6fõÕ°SyÍ”ðÞêÿžÈ­ø'Ú^ý;Ò§¾‚%,nØ^›zozW¾‹y6§T†I L"„y¥GÏU’jV¡ÈH�¡Â)×§àïX³Iݘd»‘·Áfïí°.Œ3ÃæÄ  ‚9˜di�PP&II¬‘¤¤W¨Dë�8<5À̓€Ç]5ˆÝõp´÷ü·¬±‰ß”NÎGÃñÈ‹=¿ xÂJ<Ó¤(tî¨\r®‹�®ÒF*gèß럸Ó)Ô?l¹økâ¾R´Õj|ªèxª¨øÝ?,%Ï9B ïòeÑfoéÇû+Bº5„Ûy‰-”“)’Bej¸3››(Ç”ÉE“ƒ«Vœ1Í2A‡B·”†ÏÜÒ¥aª˜iRj´~aáûkÞI¨:¨…ƒË+ËŠ=IaSb� ôáŒ`LM˜h5jKäT鬢°:½vÿ1—öž|—kº.Ÿ ÜSöS3“²Ñæÿ»Ï£hçfèM2ô"]\]ö¾Öc�g1²´:ÆDç|ylcÜлáéß/¬[mélY–Šw¥¡÷^O†EÂ;¹ö»!+CdÀR|×6n‚bpÊÂiá¢â[ª´K…ûT­¿�*Y¬©-=ÊŸÍ: C 0N¹ÄÎ oo\hž/–ùs Ù¡%¨pÙ®$æ¤da¯¦·ä¿+B�z™ÊsòM¶ »o*}¨±•¨ ö\7>n¸IUq/DÁI$Ӕ΅wA¶âa]Æ¿Ð(¯X/c­·•žÙêyj&,~/j¢Èµ²ˆ(}í;õ[Ãi-m5‡ßÅ9ÿ5®3†Ø)+¯X(Zü±j~¦s;ŸS4ê[ ÖÕE¯PÓÔz“ûßÄuý7ŸÊ¤Æ„7dK"cm–xBŒï Æ@¿~zWÝ´q³äfKn§2½ÒÏïÜ„E•ÎѱX¾³3ÑÚx¿¦Ïì‹Î\øã–œà Âyw98vyãTÚÓh.µË�»X/ë)QÚä!ñ`Gê;ašÑ¤Ìø§÷Ÿê¸+K%»�ÁsÊ »�ób¿Xó ìfÞ�¬)&¸+4X�L÷–-D¿$š}O°î=¢ˆ¬…¨ªò€£mø 7mÙ¾-Yöm¬v�&Úu²Ã¾#éúfEÀâv‹*chú.§¨/Ò&2÷8æ‘6ÀÔÉ]î„_™Ñä':ë4: �\+Yð¥L7•(’ià7e€…crô’Сþ·. h&}ÅP,7¡^�¶Ø÷œFÀŒ×»m§6 'g½³ï5UýÞéCÐ.<ˆB’|áhÕ‡ß8ÛL|4�D#,%s¾P *¸�@X+^ÁyTŒ3Ïx/€­m!�&Þ¶-¿_L¦D\û-µùÑ®?ZÎà…Kú+þ›{Aí¤o¾Fn—q¬2ß„_E5šÍ‹�ÞgÇô@ ÓZxý3yˆÃJŠЇJнžÍ£jòô!|®¢¿+sì@þœ8MóŒÎtvÄa8^¸óÁRh!&vïÍmö²ß|’3°c‡ö ÇP)…êÂ"T4*Ì�—Y×ü¿Ôp@æW§ï/„úaIE&n¸5Ÿ0ò” g”ÙJ–ž„¹_w<§Á0�êˆGÇ€ÞaÀEhêÛM –¸ªµ(´ªª «äiEÛˆ>jç¾ÄÊúuÍÔÕa�Ôæo™q~O°§mɰ8±à³OG„+Açaø‰êÈ׊Å5 —´uñ%Z­£f\ÚÑl[|™mƒ®Ÿ²�鬃.|ñ"œ$(â�uȉ “F1¥I¢ü¡ê¾/§Ä­Æ'€©Ò·”ø•oî]¾ÿeœÆ8‡4u²é‡þ­máá-˜u`è5� d–¨ÂòZ‘â®¶i¢�„1e™�í4œBÖW¾77ß®¨âý‰Ec/i8Ë9ûýN¡cñ¸b’)ã]^fUô#¥�¼þùwwQ—ÍhѶ8ç¡þóš¾ûM´)&<¸]Ó[¾�OÇ@ÅÕ¾`9µõkÿ¨_vÐòåÔo¢¯ü¾<íŸA4°øÙG^¸\IKdÝu¯�ßvBé””Œl¹Lz‘Uü·½}GqgåñûB2‹‡ö.Øsy=ßg‘ CˆÇˆ×ÜŸŒþ©4LH.Ç‘j"vc,ë2××G]•ýã‡e·¸ÏuCÛ®Ä#½cY—1Í#üÅÀ|l‘…mÀÖÉþvl¦.͈ö[í9Ì?¶�=›FC»Ý³¼Ë[wϙؚÅ:ÞÍOšN÷îcå5ÞÅ<;cYÖç©e“„=O´¸Þ⬬líã-1$ÛÏñ#ç�VLCÈiúŸZ…€,“Hu%ÃRµ6j®{ÌÇ®’þ½øZY%kl‡‘?r-þÔ¯,ÔƒÊÙ6»’�½]-­HAA·_%± öú˜t¹È1Þ¦ˆ*"bÙùâÎiÖ4ó@³:GPõ)FÒ÷Ûó¦¹l՜ƨo<· ¨M³O€êó=�êyÁ!€zã\‹×ìa!1ÁW»]úÀ?R<ßH !D0t= _—Mgºí¯(®�±´,¤–høªË§n¬v(9¶“?.ý–ž&g§¶çÉ^yñ�IÔã´jŽSaˆŸe�…D¯+4ª±þ×聯¶Ñt–Ùfò:þçLJA-oZ¥÷båòa·Ì‘7`ZWB^St7âYE)´(¦ UÁn–5»y¶ù£ZL2?UÿáTÒ’5Ý#QC%k H)Š”¶ €Öø;;×LЦN2>“ˆ`‡J ]ijmï„(«’�Q¸ðE"ÞÔʵÃÃûèè°%\[é©�LÔ.ES»Æ"1äÍÎÍB¶ÓPÕGéªêbÈqÜæ$/cR¢Ðœ,bÌ-XYä¼üU£ãPŸõñ…®¡%¼wH�Ç–4K#EF¼‚’Úʪܠ:�Šs‘P­7€ü´ö)p¦Š'±;°¯b"á̇é0‹¼„Jßíìeí‚s…ÛÒƒª(,x:5[11TÝw`bì’ 8»Zᳫö¢\mn}‡hÛq&%˜Ôð†S•�ß�ºwïêøÚµå¦0|R·—ÎBìœ[sÏþ1æž!LPâh umªJ˜ô¶|éXLj;/�LÕM3ÙOÑb‡BÍÙO¸pZZï³-VrK0´ \ß)PÝÊ"Â-TÌ4ˆ��uš˜„eðÓtÅô³'TG‚_�Õ�Ž;€Œvß¶”TRz:¨ÄÔ) ½¿º¯*ñÍKLU=í³plAŽêqÇ=¸\Ì{F ‚\l×UÞÌv´ÄoU³rùdà©}ç&‹ýTå“=§ÈÖ5MbÖ3w/!i „ý³!,KEÒ˜\/æl7�™Ž·¦Á8uú[˜¯„ˆ"ß_¯Ã€«eµ\ÚNëíÖ2Apä˜q±¢¼àãLfJÑ}¹;©—M…å£ÀµÈ.gîÝÕ1É¢‡�"³Yd™ïQû—?’¦–UêøqSsW�+_ÐL=:L Pí0‰×:Õ‹&šO`åˆÇЏ^’¿èµ²‰ðŠ­l}Î#ådk(G,©fë Ü©XÝÔuшµy«£Ð‹FЦIw–Žlæx0I‹Õ¶¹€-Éí!º²¶CÚÞ¡br˜®>&'DYË4ƒ3¥Û|92’”:Þ ‚¼@îH~áØ�^{·s¶•dÙ'Aw0ÛÔÜè,ÜÕ‰©]N®×á*INCbŒ èçÜ34ËÃx̦v/ƒöÖÙ+°>2j…1ÃôÀ–¡ü摎{�) ¾ŽÛ{…!ZhüŒ›šÃåF¸�ªœq„üø©o”õ.üô¹â3t#™>fß²D;XÙhæçÀ9¦ýYšÊø§Êªã”X­æV)+¦C±.W�ß"˜§‡Zcí08Ó j†Gϙڟd$Ãú'UÔ5“ÿœ£Ï�ÁO’´Í�Êc÷Hôã cäByÆÞSÏ�¹ ¾Ü7�¦gÊØ( Æè¦4«©×4ñàI|’´¬óÀ°Y«Q›¶=7¯\n,€ª@ù Æ�w4r딼ßà€XÞ)x®>z=ÏGѬOîÚ¢8|å�äÞ† ¥7nççÛír±r»Ìø:ÐKtPNc@ÆÉØÔ׸H�gO�%Fƒ4ø}ìPyó3HèГgJ�0^´®ªápZÅ�g~dŠŸÎ(áQ±w‹@v´’e–•“¿ÊysýÿÉ÷ð—ù€ü��¾L¿£ÿ™€}Ëþñlþ‡Ø*®¥-—ŠãêUõBoô÷fk~°?Ý©ûÈý…Aø¶7þÿg(ä¸�Õ;/­ÿ�˘¸~ÿÛ.jã5>Ú$§æ7Ïoù£çާuˇ[‘ÁÛ`¯z`èuïQï]oëÖ·ÁC*׿.>·�ã³üÔÈ­#/�ü<ùbJÁè›)ÇSÝñÑNtTºÂ•c�½™z&�5ö»´›iM»ÞÛ}ýEjJ—MÜ7ñjú±ôÛé»?܃¬•ÃsG2îd´ìy{üêñp¤¹jê�™�ã{{™¨™Ö×d»mv`x|ü²bñ�p 9�ZH?dròºjõ€Ò¡)ÐR¨ : =}ýfOÚÇÛ?±ÿ£`ΰ X ¬¦‚M–a�á¥ðvøüü9üB@x!Â"Db1�Ü€ìDe£ËÐ=èôEôsôw‡€CºÃq‡'ŽNŽ9Ž+kL%æ'µÓ§Nß±$ÖKæa+±G°�»ÎO]4®é®Ã®w\ÿuÓsƒ¹ù¹ñÜfÝ£ÝÿxòüåÅx¡½^Ñ^ù^õ^£^ÇpxüC{ïý{¼?ž‡ÏÆ×âûñóø ø¿}ð>a>B©o”oŽo�Ÿ§Í/Ö/ׯگË¿Ê 5ÉO'& î@¬‡ãÀ0x?õÆ; %÷Ói(y#ºì›¢›º®iådÂѹlkjìB—ZѶ8l_Ù¤ã$7 ÓùûáØº²ŸiàÖ:�BJ«ÃñÏUÙêôóùSñk[UwjðÁ9 *‹xŒÌ <ØÈ}ªž‹F¢n“–Fda²ázrÃÑ{„¹H÷¾©þ$N ^kv�b^«Äq/›ŒHBòðb!ÝäÂ4Kd ±¶;F1è�ݽnJ0ñ×Ï:5Œ[2*cQpKª±G «Ú·:°@@2Í¡¥“Ç�ê,;¦Ÿ9iìu,£©ìá˜M­»ŠÇ�- OçuÐUpñ<–Œ DlTef÷w^ŒÅôebÐn9‚&¬Wv­û¢}óš*"‚Ã#ÊÏJF`žo_Øû \KW˜©Ío‰ýee¹c‘&%>±†Ý&K'‡zkÊZ®·3ˆÊò½�зò<Ì¥„ã 5ýÍ�ô8àð }Ú_ ‡z¨x¬xâøåX3,ëmÃ4 ©îõ}ÆÞéÏf0�å8%ìév6  ·èêò7ì>Mþ"³#±&YõóåT ¯ía#�ž{°%Ãô‹&�«Ÿ/„bÞZCž¬9™¨~È"‰Ï8Ÿ«™)%ÛÝfŠV*­�s”~SWâVª²Ç—\)’àvÂ’-IXlŒ§lYa|Êñž»dZe·•5J2|ž@›M˜vèƒ4%úÒ�kþÚd”Øãp�RתGµ¤‰»‰åV.~£¬K×ÞÅ�¯,êâ¾û.cž+/X¤Ïxp±%ÊpÚJ<²Cí“bºs»½¾±�ë…ʳ°œÒdÏͺ–4à,§INg§ô|س¹Åp¨4-Es?Ѳ›e4¬Tx®ÑÅæSŒ \ä"ã{w(.ð ?>IÞ rç8|’2S·ö€{0]Ɔ:ë�¿^¸¢/^¦†r"KfÒi?; ®ÿ]ï•–{ŽíÆ NÝj­[(¹®á¹ÎÐá(å]¾²™3·ÿ0Š&M¾ïí63å�ß¿ÞW]×÷Ü;ðix°<¥VW”lL‰ìk…¨ ?Š/Ï»¡óQHIä1r,]mìuØ×ÂŒ?Õ…%摌øAà�­‹}ÁýA²€§|v° Ó‚r-øÛ8ز0"êo 5e f¡ŽÍbþî~Ce?¤òÛËÿxA�‡úwÈDÈ~Ìòd$¿#ß›\œ¬/Íaý8�Æ>X!4kÂ0E5îZ lˆÀm¹�D¢ÄIí ÂÄJMwãKëVPR`0mª Ì<õ` ¯y<:†�¶ˆµ¼„³pá;¨SÌ3"/1Ð Ãð&*1-«fµ¨ÏY„mUžŒ/È>‘RZ©?œŸ�„]á!Ø’¿PÜrâ2ЧR˜| ŽÐ¨ˆí²4L#JøËeRPµŒAT\ÕÍJâàþ ½ëÒýâʨW-9±HÛŽ`‡‹Ë6�³àÅËšð!ÌåÑè¶R„ËoÛš_í×òƒ‹CÄG‹Ý¿êƒ½6ælYkœÑ l¸¥F+瀛Tz2h¸Ý\Àù‡rlkG“ìƒ ºàD(l-°…¬˜DbÃÞ¡ém½>С°ü�€®Q =“[m·ˆ%£}kN*wÇÆˆ*L‚óõ÷‡ªG®ÁçÛ&=v>aY§;z‹ùmã ì.ù"¸çPIH–µ¯ÍjŠF�áºuî8UlcϹ'WºÜÉÁúeªë¬à-:a¼3ôR!šŽ¼ñÙ¬éo ¤b&:•y/è5Éâ€VtŽÜãå°&š#)ªi$îä,»‹MQ’±†ŒÌ”Œù©å�‚ý*¥d¤>(‹"Ç X`E²œ89zP¥¶Ša·7[6�Fl¿©Å†‚�fâ0ìÈcÿÏ—uYý¶~ÃëÓpKýWg ›××”\ p#,À)á>‹`åþAÈ ;ò¤ñœž×X"1O0åÖ\8iÝ^T̶.ÈÝaU‰ÐAÇ>ß1Ï~Íu×VåcÏûkÐÈgEç&A7 V]ܱueµ­Ô•ÒMZÔAó1<=²gºñ%®C²AÊãèëä=p’-±óKÄÿ£ƒC£S³¨kaŸñážO¶·Æ9·…ë2z­^3h¢&FÂ/‡ˆ$ù˜ŽAsº×ÿ©é˜—=¹ºm8™¼ �GvC­£�nŽ>iT*E‘Þ‹Ðã‡þÿgOg(Ö`VÒT*]âa/š¨Á è‹À!߂ӖŠÏ¥dÉÈ�¦'Ð\6ÂHÈž3-ãçȃÃðÑÀ+œê�`YWUçÌKLÛ¥(øXø2ô=|ϳþ¶nÂÇ('þ > yeç7؃iR^¾Ñ’0þùjü¶å<“/* *!ÝkLîú®~D�×uGîì É ž™KÏ$Pô²ìÕ®�®MÆà×,E�Ñ©D¤·zõraþ=¯6215ÕV°2ÖÜÁæ–ó�Z©T4õLqô‘få²ÙB¹¨ö;gœùí#©éš–Éê§a~Œ¯;&„BW¸Š¤Öœ".is{cŸ·È†2¿N¯Òi¡«.©TÃF½!Oƒ°úºîP1ÑÜßÕ@Ñ(ÜVIMhqÑÒ�Ú UÞÒA!ÐŒlx×ÃçÍa³7•N•ÄÌ,ðu8Æ×¿Ÿ>l}ØöpæáãA(Ç~÷°ÅlŒ:ôµ˜9©Òž²‡n¢Rº_MDåP~`�¡>—Ò!,rÐB} Kd:T—5—¡P+È®Øò ô—bþΤšª_ìÂa°@ñg1ç ÆŒµé|�zž»Ø9á³ ü¡Õ�CeÎÏÔ'äO2 QA^\±hçO“˜jµ³|ç>áœ3 ›àôÒ¡ß-'k÷Ü!9ïý{]Ï•Âß•hJ÷wÞŽ€•'âÅÑ)Ä€ìY蟟‡Ô#Ô"uAmCS—{½qл¶„¬¿‚Ö¿íX j0ä�ýs¬$…PI‘-(„S(XJ%JšAR, 7טk[Q‹qG�w4”(!@4O³ÏI„£íXü‰l+ä¾ÔÀiT–¹ª(D à=2½Ä¦“hw-Ø—VÚ`ÉÛUOëä½±g�hR!ux:•ΨK"n§NÙ¦¢Uꥤ¥_ ’2f@ßw¤¬]Õy¨ó0qèL7Ž“Œ¥‰Ò]©¼Ü��,‹û;»·ZZ휪Ù­Á÷!z¢×¢ÐÌJ#âVJט­³Ç6n¨\_Ž×¯fö‰Ÿ0ÌØ$c$uXç°k[¶SuRêì*�Ý›uïîÝ�-­´R=òæ¾™e*B͵>Né˜éÌò2ÆÍnwˆî¿ø¨TWdÌÒ¶ m»&C Ê·WÐ[ý¾€W„!Ä’iDÊzÄú°zð|!ªD¸±LÉ)E8LQ‘Ê®äËVGfQìWÊZÄ>O§‰D¢�æxæ€n‰®¦ÙžšÇûÜ(©™ØŠ¤dêõ4B"|jÔ¬sÂDåŸôÄ,k|3>•¤%‚Ò…›3Ü�×zzã¥É á“(âàRŸÇx7®Òª#’”XQßT3Ô‚¬ÚÎÃ'ô*t5‹ÚNo’?ËÁšÏ‰j+/%‰‘x‹Lê™d;®q±¸Èqb­ üZ‘�ÒgW bÌE–À.B!¦òÜI›M¥$§êEÄ0xýQ³4÷´=4/Øs¯Ë.SxìÈx|$B~âµn$6:?þV4&ní0WXq6z¹’…¤h4–¿dÇ5ÞL ÈzFî5¦^eÞÉ5Ž÷ì<~mÛÍé«+Ì_µ<g�¸³5gyYÛ?žm¦úøE(µ”*_аr$•$šnÕ[iÐפQ?.À�“ ôäAƒO>ЫÎö�M6ÎÉ‚0¯ ã¬×­‰Noµ*"Bj¥Z©KJšù±èñs!tÇ>•x½ <ŽK—œ«LjYÛíì¡ûND[Cºó¤ŽÖ½kE2É´ú y6L�³’vÊÒx¹þÂc;¼¨]›“BèViÜ¥ƒòFnØhiJaŽÇ¸O“æŠgs#ve5Ê©¾V=r{ÂFªT*;NÇU²»f€–“ŸZræv”F5S³Zà�Ôyh¸•ÅR,mZ4ö-¨iº‹¯Ã¯=ßv8Œ‡ñÙõ²y©b”xµæSI-{žmSÔÔZBÙ1 ‘œš§:›‡Åf®°ÊiÄÝõ3¦¸¦·×ÇO[BLOCgÄçªò+š„¹äzJ|6ŒqŒ:"3>U/qæ²TxNK«i{=hþœw2)2„³%ZUÇÆ0“Cá<ö9,qÅP®”‘FV‡x¤^Ëu:×ð¬,G`LÖÖ,•j³Öîš1¿¿¥`-7ؘ9¤7Oáý?á<,]—ô°¦âsDÂIQh^S–Tͬ65E4½kžràØ²a¾KË¢¦©° è…ès¶ ‚Ôƒ¹Ñã:<æêäe÷Qw|³‚ ÜÉÜ^ðÜz ¯ç§ ¢n á‰ÕUΙpêÒ9m6[³™`?+›c'iÑ1Rk¨} ’††r˜«–¨XÐ ˆBòZãsBŠXQE¥LÃÌ•ñø³ü‡wâ'†u8Scm{Ì.Ô´¬( øYçÖ™;&HfÈübÑ`8æ3—špן” pGO¼JH¯@$fbSà K̉­1£U‡‹ëFph ·µfÙl–1ºê•dU‘1ÃT„—Ó×R½Ýidbn_Rìis vbºMàBr8£Üœ%ÓdÄB6ž Põõt¸z(‘½é{âΟâW‰� ¨AL×cÖÅ3ü,ôå’ôö¬ ×�‚C›UõF^#F�p6ž/ò×!3njÈm#˜¡s Gðy”v"¤ÚûÈÿÐ8Km“=¯­ Š„OG0׎‡\\7·] Æ@î!¶HÕ*RHqVZ]òzEïà?!í­pµÜ0½Õá^øb޳2Õì2žØE3¡n$¼Øa6z㥅`° ~KHÙì•+g„°éÿ&æÂ¦B¤Rƒ÷2ƒ²¼ØŽ'å:܃;L:™zÂI×­aÏOöôp�ÛŸ]ÂPrV:óbñ!¶TàÁ>سÎ>äÓt‘.¼ùƒ{#Î>-îá]… ÌÖ1Jt“›¢H(‹ƒ“;»e ëN3õëQ 8‘oéã`ú ´ÃA¿šd*Ã�=\˜ž´ tÉGp8nÑ>I½×¯o¾õ5¥h²ç&óZôMIlç$B0 W÷ìñÜ\Ù.øª¡S…nËRsfelˆu«ê~ ÅzGyxùñq�¢= +((°„š·*[{ 2úìÔ¬cÝP$áxzA5/¸²=WOØ8Ó«!âUh¶”à>…?ʘXµ~Ù�É•2\‚³RñÕ¶d§y6Ëìg·&Z22‡R£gâGúÇ·ÌÆ¦ãÑ^°Ÿ”•‰Ux‰³<µMº>lzz¤?"û§ÒaM‹M$ä0Ç´bYIîl_ /ÉÄÔîŠ�ãc ó[.s·«n†¬ ÿÝHž¯£¦ eS=Fþ}Fj¦J”�ÇjËÝÔÞ%ȱª�ã\_Ý-43µTÒ՚˳Ãì9u€€:àÄnKv<ºÄíÂÒÐ/–+Õ!™´÷CãÉO ‹ õZµ¨;O.ò'ÖÏôq¤-}§,e­Ñ±ÝnýÕååùÅ4_~VƒZ8 7Þ üx?ÄÎd{8‘� -&£�&Ê‚G�¯4ã>SÄ¿VײûžåÆ#N¯_¸b0^L o’i‚ÀE.g,aOÓbëôø&rzzz"ŸxÆõ…¥�¤wòBðÈg©»SHŒ¤š_e¥å¸„Ê9S­ŽæÆ4ò9ÊuHÚ©U€"çd˵C¨åÀ‰ÿõ%”A¶ÖÎÌî¹yÕ�jÜ´jIAp–0É -v$:w÷N/Loܺ°TIˆž�Ü¡Þ36¯Dì¢ÖË¿÷¥á–ypF£CoÎ.i›u R@ÍÖ™y]m™Zh œ¥T–Ö¨ž†’â5ÆfгrÛÖ²37|uºÕzJ X_øÊ†d•´ #೓lC�²9ÈNùÒD"Ný�£«¼R›©…<›•¦7KñƒÈ�‚¯"'7Ocƒ•�2JGWÉ,1êªú¼*N¸Â€®²ñ âfü[Ë™n:“Í14CQ '²á¯h:’ä¢áë(ô~½8;OÆã‘x|Û=åÀä%ê޵¬¢iŠÙ¾Ô»ÇÃðÛ•áE<äTOkÏ/âw]ƒ éôìûµU—6¹mc=¡¬²XÀã²Ãü!HàoÔ;Ol°¦&ÅF[Î %o ŽX’ø\M‹ƒ($T`Œ£2MhÁ•¡ (<»òýç?µUvà™œ îñƒ�nk·»Š êÚŠÙò2�^²•òËÒ$P�«G9iylË€*PÝVžVÓW DÂ>!a·Ù…Ø*(p¬;!ëVs7G Nb@c8Ù¬|‡ óB…õ=:Í]›WHë»úžÇSѳ– Ri“Óa¸Ì;žqÕ�ýEZéæ'­²±8¾]´ÐÀr˜Eº�kkŸ›—øc,Þ‰ŠÚ÷²E˜¥ë¿©¨êLðj­[ VMU‘ŽdL¶_œ›'ˆôÁ±[_?½þs’ø�À×G£ÑÍpåxh7–—<:–,Šx|â‡?4Áö4²R+‹…b©R-š.ð%Œ¬Å†«7·ÏIzOÀD?Nº8R‡AÞ;¬*åoª�K'a�3j.Êd#K²ëdŒ»šÉ¶¦x×yU8]‚…^ªµÞx$3•Üfá=-NmN<¤ª×\ ÜúsNîX.d_‰É<[ŸØ�$ÛÃÈ!X)Žÿ{ŽKª­'/´Á>+ilž{+–/‘›’æ ÌϪÿ>ìÕú*�»û4êÏÛì£4Nþ ã-`ÿzíÁj¸úO�ãFl<ØTCƒ¬«È’è„¥( Læ4Öa…Ô§ªZðjß y±S:Ñ O†�‘K¨ÔSÍkE-¥ˆyp£>æöñš.?^"¶ólÇ®îбÃgò¯šÈîk¸(9•{>°¡>�â%ð‹Ô÷xMÒßü'f¨ÍlàÙ*ñœ ra™\cXtJ®ªé4¨ØB3A+úº,�FA¾ —Ô §%h"ëLf´ ß$é0û8:RlVàœ¸.Ãe2¡$ #ÖB~«d.ûR �J&êë#3œ$KP*¸m�3%YvŸ!¢t,ÑÙÉ“mu¿€G&× ô^ž„[«.Œª“¸BÔ”ìYqã Í*¡)!}ì‡ê˜Ó)†¦Aî^²@1UïŸ9ÊvOI" ô9Ø ¹Ã§£+úž¬ÜVªäŽè�S´ï¯mm‰ÞЋ Eè/‚c¡gùf†�@§’cE—4×ËŽl8Œ¥¹VGiˆ ™ý, j�wI`¥›Sðåš6þ\u1þdü‹ô«ù@{*�c@‚’ÿ~Õe­g>àš[d¥Èôí¼î8˜ÎL7ˆN jÔ_Øj@>èŠWû'C±TXú³Û)æÔÔØ.89,v2nÚ#$µŒ,·ato>ôÙ¸¸á#�LÄøÎ JæÊͰ˜g”Jo¬ç¶?˜š¡»ºÜý¿èØùÒ‡3q}\—rh«ßÙÃ9+¿˜Õ´’¿X«·­F1ã{¹·ÆZ[ãw0— ju[ҹΟ^ñ¬ÖˉókÈ�9‘mþ�+³¬Ñ¿‚t,Â7‡ öiu¹(¤ê’ûéÒˆÐ�áà ’oÓœïÓ’­úõ¿_'œ=ïµW›få#›õ*éVoÖeÐ=|à�»¶k™‹í9ùtiW¦ª¶ÍÓ(zº´¤HV·Ï¿ªÞqЩ@nÊî;¹yV%¾,ÔMÚ õA]>ä$`)_“;†²›bó=¬Î{X0q‡Òk‹m~º´+µÚº2Pš‡cSwLÍã­æö*º�Q’=¢¿‚S‹Ø¿j†µûŒào˜�hlª:lûþeë]‰ìð×r±LÚiæÄŒ ö±ôƒB2[ø7Ðû4¨×µ"Ó&U¸ßn¯‹`b¥R™M z[±mÇkµ5§8Ï‚'×KJ9ª¦Œû*šy³r9ëFo�W§l˜U©bOý:uöéDFÎÓÞ»[«†O1c˜ýÒ”miŠVñ�YÇÏóé;ëM«T]wÏ Ö î�¨õ…Þ\*…Ôš„(–U§ii|À@2L˰£ÛÞ÷ú³¹jÁUWJJº=©ÏÊn aÛW9íîyŸðWk ¡ ÏýÞ›÷N‰''‘&%¹f½L Ä 3¥k¥#›‰äÆ1ñ²ÒU+œ¥$àF~š_¹¿³âÞ”Ä0½¬�”�ÝÅGDÉ«4À!Ë4gŠÕV«ˆp*’vðn¶¬­oƒÖe"7Ø ºU�ë ñ·<8 Úa]†i…±ï�ýLXl(S=§³rµÊ÷Vá×’WwQI¤áÍiìKbìPÑBß|ãÑ0ëj—iË_Jƒ^-^Ø‚ôµî7_–Ý”ôàóM÷ñuï+ÏOÑ Ç¥ø‚ÆÚÄWêÎ Eí?Ô)$+‰¤2:Ó â£Qœ>qÊÍGǧ¨þ?�í^"7�!JÕg=¯÷vWÐûú�ï¨� ÖÉ“&çÇUçV•yeƬ³_w«Ya2^¬NO÷E«9ÉPÍÒÍËdˆ$øÿ¬oÕ‡¥ûôTî�±ó‹g=”RdÊöó#åöÀB˜�Ÿœ’ÇVvŒ’èÞ·V8qYµêÛ‹ù�ÛBzÜñÓºZäžÅ ŸÈ/Äܰp}>"`'GÚó¤œWÆë�£YÛC‹4¼}ö×ö à¦Tfî 4DÁ–§¿@T5mЈ¨©¯Os²úÕxކdó›É&]ò†'7½ñRÞOßr6£RΊÄ lêlS¹Ë¦0ÅnŠ: ÌÛ? eÀµõ©4¢1¼x^$ç1… ËþnC®Ù-k'†ÜkGP‰Ÿ©Û±¼tBFp(‹Ú³IOýHÏBo #júûþ…Ùo„ü·\°WLÀTñ>¼òÆI-lWÛ„Kð÷›eÖ%Êð¸å “¡›æ:òð‰å4›…™Ëh�g«eD Aû¥µpm,‚|s¥LžC¡¸w\�É/N8¹Gm5’ý׿֛Û_–P*=�d­©çÕyà{‹}‹j§P([®Ó“bQúÌX貪z#‹�ª†Ë8t�Ãqä-YŽõÂ4¢Ú²í«‹Û5hÀŒnhð5¥3q°xîä?ɉ býñÄž7�ÆÅ­f‘°âÕ§2˜“D#M×ëÕèwäŽQ›âÔ­a‹ÅuüÔqwâ?Q—yðÒÉé�ÔcëÔ´ó‰É®ºêò²ñËÇ3ÿ{Ðþ1P™,yÚgçwþÔ¢êÝå`¶—Pê~ŠpNèb:•!ˆT}¯ÿÆž7·i8õq…1¶ÔB^Ѝó±þú±¯Zc=³k«Lk#L}±§à„ÄúÝ2 ^õ+ ´-áBÇ›àmÛN$Z+|hibaè_s™ø–ž:•0-/aª‡PD…ôÚ‘«ë󢦨šf»¾ì$ò‰ŠÚdåí೟2å¼²$£q Â'ÔVÏ¡ ‘u|ì}=êæéZ³YMJä±ød=D 3+ ›ùl�Ó�(Eã9vÕ¹õ¢£B1¤yýv§*n1À`;ÖFìê›ù´fjåÑbmÛÄ>;õ»Œ’ÑöÂöàÁ©åV®ÖÓ†w÷ÉYíÁô}ª%ÜEs¼IuNÃI�Á”î‚ õl�å ‹h˜z îš8áeíH[À‡OX÷!ؾ2É5Ö Ä±�Z…,ƒpNšà‚¾„å@¯D;"8è \iÂ:dwQCæ é„fáƒ\ÐÆ‘+™m§¡6!“ü­RO5<é]àWêsl–t@^lA6X’È]`hisfЇ«µ�‘©õ ÛdÃ�æLT:ónœ«ÈsPBna˜ b16M 470ú�ð >åsö*r±Z@áX^>A6Ñ6x„5•éS»ÀùN«Yyk/,#°"W=ý·þ¸¹+2)ãN¨ß[<šÎ0Ãà|pÛhy4l™ŒýU9KãTÛö’Õ½ÙëÑì|à>�^®5 ÔcÀ/‹¶˜–Ö¿|·«ït7iÍÇ5Ýdy9"ÝÚy2{ñclÇ»ž´‚ýG %B$pGSd¶ {{Ô±œù‘†R³Ù`0Lвñ^yôë0$i厒¦tð\G †ò) é¥_T�ôbØ |ÀøÏEB.ø�Ò­ö ”B_Jt’àñ³0¢8í瓆ǷÎ+@¸¶à  ËÙÅNê¼â5Š’!¸b½ã)¤¹t¶ôc(¨ ŒÈ„œ¸Á1ä î;’Þñ¦U¸Ûgä´w‰ûï2Þ±`�”JÝ*³Ë}Ÿ•)§áˆ™Æ9VŒ¨ù’ 'ŸÕ_Ò�GL£Џv¼zdFúb¼N,n.W|G¢™XN…î)‡6K£Ü¦<“ï¸ÀØ Æòi\-bá~Nkºý™Ò ƒïî¹AR+ŽÆ5…4Sû kÉÜY6NXô™»&ü´â†iþú'o�@ÅážNC9LÛx1�ò>«ÿ#¬”6Ȉ9(‡°Úùä{í¨MöN­`wÚ;Ñ_•?&:¡%×îþšNÒ¯9«µ#ÓX£à[¾U, õ¿XžVøb¦r©öù A�`ä«Ìå!W‰ n乿µ10Åt±¹#�ëì­ËfÕ†ªt‚p’” bTë”–äÅ;b‰DÒ‹pMyC1;E/ÒaC´fš"ο˜÷Ô¬ÐTxÕ rlu–¿‰} ã)?hW›Ž/hÌê£yò»Íµ¨2æe8 GŠ$Ix'õÃ4¾R»w3kuyYÁ»nåœ^ /yŽzúÔE8Ò]¹;~1¥À½¸KÐ~öíòž€(Š �Ð2Aw@$T^ÏWì~lËdlz8QÌÍe G”BðÚNŒe:¤kxEZæm;š,âsÄI>)×›Ïé§<¯Þud^Ì_رs'¶Ì‹¬QÌ%ÜÞ8lè[É Ù].Ó—–&X18K„í8³ˆÏÁøÁ~Ρ#îÌåDš<Ò'ÞçÌi,$ô8œÝ„íà0cDã’0Á²÷&5šB$æLy} ²®ôÛ >¿U ûH5G³ð±'DæëÑňðMû ,ï žÐ)ýPZ?¼Úfqá»ÖÈÀ{Õ3ÆhðãͲ6×%"Ø�ç�Ö¨hÔQHj´Öûíò¾”°Ñ­´|�.±I�8€Õ8è/zá‘ØØžÅÖzÔÀÇtÞQA ý&Ösž{ýÞé pûÞÏþþ]Û‚ ï·î@C¼F'œJ‹(ÄëÏDU7äyÞ–ñQë4ÂZË™Aum* ðÂ�AœÂ-ï ¤¾ÁK}âz[¡|ð\ïÃã·úÞÛw5®üENn—þÛ—a3›¥`†fX U�‹ë+ãqÏÃå¬È†ÑCÎO¶S�V™s½ãvOØõ–•w&d Ãx|Èr½ïY³Ÿ—:8Õi•ló­øóæv}gûðsÅr­þÒìÝd|ì9Øs ùùÏËÎY¸$É�QxÓ«Éz¯&��¯š™ØÄ‡Ð�¯)E@>ÓD8¾jæ÷~þåXB‘°ÌÕc�9;F/SVGý“Ç›äô(ÝyBQ6ôé<ÒX<& h’¡A)õµÇ¹X¿#…¤a>?µÞA;,<ÃÐ:Œ(´p˜äAëfT"ÊGaÍ£ûW7¦DÙÐÍ,y~h`�ª5¶Ø†fþ Ï�aW8 Iœ%ܘW°Âÿü/ÛZ¦œ0s¹ŒôÎÇÇ#›‹§.æ,¯ôgxø¢õà4ø Uk¨ªþGæZ.壾J£!®«—.¨ÅRuœ�ܼF bFЬl!8“ªpri°ËÈZ½BÛ�Œ£¨Ìƒ/K”uú>$|øÁð1}jsý>ï &•‰«FHéPŸ‰€ñJ•éE Îuñ[uL¸Eöqnü5lÊ~ÎcŽšš>†Y�½ƒ·E †å ÜRÿxKy€Ö~ÆÅúiØl¹ÍÖ|ÑúMñ_þÌÕAs¬Kr5—H:xÖ5‹™´$ÙPu,ÒnJÈ,¶$Ò8¼VtÜ>—„^�nf0�›z�öeþ®OóX,¢ˆ¾UY‚_‚Ã,Ø*YAÒhÓ(ï™Ñ< –è‰ÃJêÝ&ï†ØNö>Ð+Š!Q¯Ñ‰÷M3YmFMîà:Æ4�I’óAÉ©bÙ¨)-ÁÀWÀ‚s Æaµ¢Pgu}ÓÁM Òs@x� „zý…®�5Ÿí éÇûäQ¸šôQír‹`ºhøUÎØ$áŒYMð:&Tö�ê 7ˆÝ¡ª¯<Ûx2Òs Ê]‹9a_éõ'¯y ¥™¶«ûÊÖfSì~®Óªú¤…>Á£ëç*�ø+Ђ¦{Ç}@» ±Ä;mÚ;–¢ª;ظå�ˇUÄâÆ)pÍæÖPõÔk7=B£²»v¦œâ�å¸ÿÆ’-îVpCׄvbïÌŽü,î_loä%EU Ûu5ßòŒhùYQâ(Y ké <“_%eH…Û:9ä·ÛCo´~ÞÒÃn?u+΂Ár+i¥–YN:3t'Ê8ñªâ‚'¶ ™^ÜÁ<ÛuµU£!ï%OZÇhpGsûøje«SÖ‘VY·ZÃ| ͸(p =.0ca}¹d±Rm‘ö¥¸Qu[F¢~‘±û|í0”îüóº­}&¦÷—U|êmÆDIâV»^µ$çØ7¨ëŽ y¿�ª&5„y›l­»™þ°�víý®†Â!o UTLŠ(Ôšó€eCSOÅQ}Ô�$³Òé'#V† òe¾h¤QÜÎ@Ëi‡{÷G–.wÏ‘z//JŽp}÷H£\¦bßreÒˆ¯ŸÇ9ψX¾$0<á(žÂ·ž2ÝD A»ÌškN ™~»¢ ´ê4~PÕyÿÏ}Ýñ ™n*Ê£‘tèçÊ‘ªÄÑqbhNªÒ4EJ“®ÇM¾#u¢ÕƒãéùR-‰úÐy98W5\i)!3iUFÌ\e%˜oLâZ�Opº®Z� –%†x€?W¡ä:2÷–„1”2E$g–¾µú°¬ê¦Y2T �ô÷[ôÛ™CÇ‘àãž|r·^©™� gv“{ô—£²< Â}±XØ–7nVdiè{Ñ&ÑÅiöøuÞ·°sÊK­­ ™ _¼pÞ9��Óy±ýº{š˜óWêÃq!Ž úmÛ‹>zÉh-öˆ¹d Ç 3”óD©à›6CY=÷à†û4@'”¦ø˜@W†OFIo±ŒT¹keÜïMŒ 惥™è„µ„Ø£]­--[H’¹ü>I•%p2ÿ¸yf²wReL¯`\vPN½¼µCâ¹ ‰F÷·(”ðU $2B弿qŠ8¡PÄ™Ú稓Þ;p³�”h½Ñ` Í’�s Á.QùÌ6¶dJ4 ÔƒÍE¬6åŠâÙö·\žž#³/¶´vöö"Í�Ô–ŠÂ›âÅàŸUê¼I‰¢Ê|!�|ûêF/Ô ¯^n!ëvj„¤~†ö $ž ¤„1ÝA9Jõ÷|õn|€‘}Kc˸bQ°ø®VÒë4[û‘" ldcP }Lз£äz £­?ìmMø?kGƒ¯2ð“¥n¾YRÀ­ÑÈž�úa²Í÷(Ø¢-ZÓèû$S´7üÀTÝXêd¢ï7HK*LÓòOlk˜A½X€y&ÑS‘š��éøZXˆëóù4‘ë ÔL® ªÌ,DɃl:�À$eÕÛhc`¯íôÅH|ÞE8ÕˆZâüÙsY[�ÙixƒãA¯²RdlzPR�°DP �·$FgR¦UlžÁ•ª³qRõÖfŒŸ?–°–[]ê8u2žÀ‡À•³œS/`!mìÓ45‚áà+á­öWƒi™Ü´wKŒ�6ßµ-údH±¨_U­šÄ\üÆf`¥�¢CÌí¹8ŠMr�Š�"ܵäèÊ'° Þñy¨¸¸ãîÂ>XãMEiZX&±Èø¥°¦¼ûb2ƹfôć@Ò²3eKæeìÍ‚}$ûÞx�m3»cô'dõ*| Mù/ßå0ÐìóI—¶À•cÜc×GEÀ´Ùð7æÛ£ð]àXiqF–‰OôüÄy%ÁÏ[Â{ãú:¡j:ü•X2CQËé5Š"Ák½Û(’3A U¢YN�F#áPo/gYòˆ`JQ™ f0ˆûíl¬3ÓÔUY_Õ±R¼X?ÑÝ=²YmóÑ PŒÒ'¾µ˜Ü´ç»¼ñiQ‚Ñ ‹nÓY•ù!a`kÚFq}¹›Îqžä�bÍ� ÿ’ÍPlkú�Éÿ¬s]|êës0(þ¶B�ß—¿uÝd0hŽÙ�`P³œ|Aý)cŒà£p�8z"HuÉd§q:eÎu®s>Q,vhÅ£…‚ï¸*{glsuùM¼ówãtJó±=¥ÓG‹åÅYO7N›F½‡k(§cÁún øQ„|¦Ÿæogîºi&1©û9B‡þ_àŠîëÉ9R,^{ˆº"ãºcôa9‘`YÈ‚ÏéaQ+‘”ø©—í$¯Í#ÞÆt2¶?ϼadÆ™uVt¿Ú|‘Ûˆe�¼,ŽI±…¦¯÷¾Õ*Ȭd=oÏHo�¡ãC°àß®*£�Åöáµ~éD2<­,ær]GN­Ä O$×lŒµcéPŸ­Z3­K'ýû�± ­è“URaŠr]Ô¸úÙ=ZíLŒ<å4‡¸…˺@ŸRLRðɽt¸_ÊÃßö÷éÝb/e!eŸi‰ø­ÓoIXt6DŸÞ�‰›Q±~Y9VâŸdî­Ãó�Œ'h‚XÍzÿo�õBXZïD‡‡£äÄúÌáx|lcQ,;Ò™¦Í@4Båãý2{^—Êf³WKW–Ì=ÓGYÒyGm§–ªŠ:}=f~`M J˜Ù}¬XBìd‰„ai™Ê”w 8d£t}öKÐï2(R¦¡E³%$q‘4ƒD„Ú[Vx ·¹Ï¼«ø=2¸íPqòFËåðÛ!‚¢ÁÔaÄRáX·¯·1v¾f”³�ØwÕ$¦¥”OªéÃ1~«@‰$ŒvfõP*‹ªÆ?êåSnÐΆçd´­.>ÏÖ&„úi~.kGz^D‡!Ǿ¾“5—ÆmT�@3^á "õt¬eìtß»_{OŸ<½§0WÐÖt°b‘D^5Ô†–V‚ ‘UÍÔÙ,"ÓO”ñ½¬£/�ÖƒOñµ2¶i6&‰†»ÛÔQÏ ·Ü¨Rþ­ÂѳR[&‰‚Ì:C›_g²mâG5D¶(êUÙÐØÈÈ`L…ëÚµö#¤‹‚²,vÀ‚9»ƒ&t&ÓWcltC¹òÇ89wÜ´ú¬&/‰ìêú¢2¿SûâWÎO(ñ:í³r¿M#/ÏÛ@@”{WÖØ‘Ø~•�ÌÍÌD@aÓfÁ»:†ù*¥Ý…]¦â ©}õ6y²KKž¾Ä9K¤ÒÇóòæéþÔíq©ð‹öpïÇîyóõöý‹j<ùâä.±p¹…Z7*üµÉœšZû#æÕqÄ(ÆÈb ZÙ üE‡"‰„Ã)ÊrdSE”ä6?FžÏeV3ôü\&Óãªù¢’„'ì&e>ŸþmuEq~^ÔçΕ ¤qEY"?�.f£2BãSQSm«Š¸1jYbˆ9KÏÖ‡È}—óª6Ç}®‡¸�{‹¼ÉuÆóm[EãGÄí23ŒDíRÎ^i¡„�”‰E«TZjÜÜ—,æ¸ÝÑÃŒ FiõŒÍZ̜IJE–I½W ‹¢Ÿ/™3HKÉŽàþxŸGmK–D–ûH˜&©[ñÄœÁ½ã¥õ0æñé ®fÜaw/5L+¥’ßí¸ÿ³ªú*ɳÑ}“³ÍÝÿ£ogÒœq€óùœþ -‰=�”1ªªÿúóÚ®CÉÝ»/·-0—àsy#�y´Õòb^#õÚŠÑ~Ùž¥ò1¾RƒF'7Ôv[|šP<˜ž»bµcž“ @,œvAã-V \j`¶ûvÈë½Ü^ÊLe«Õa„„ùñ»×‰ò )t‘¹T‹~møÉ², ©‰ Æ@4 lÅ�DmÔmÊ�Üe«X�ß•»‰ö¦_§^ødÃÁŸÒ·²'œ²,NMêpžÍ¤Á@œ2(®à<Ÿ“—-˪©­²R� hÅF8x2âõNÏ\}$`Ût]žR%‘¶MênæÍ²âZw Ó¥á«È UÌ¡q>Þ½`ßßöoÅ·5¤Î`a/1”UòÍÙÈÌÏrÀF™( ��ˆ©¤À}x’ˆ¬üZO»Ý–´Ó.=R¤É¥i×±¼&b[rílíÛï�ÇiŒ"¤}i§,Äš÷áüðè'·%œP´óÅ<¡C¡ý � Þ¤žzT45ψ�+GäuGÒ÷¿ã‡ î¹Ù, ÂÚŠ$†÷˜éH2ª34íy.�®ÊúËEÙÊÆdìÐ;Ó­úKöjALÌäQÕE3k®.FÙ5¼Dª¢ä¯EÔâÎö8e{¬Íz!•Žˆ:Òë*¹\q_6—ÉñæbyÓu¼E†ÆÄcìÆªK˜<ãÿ‹Á¶ÑÓ©‚šx ÏÅ!‘”G7ZmÛ3ì¯ÏnØ¿[æ‰ÃÃaFZ4a7ûb@‡¼…,,+Þ©‹ ƒØŒÏØ DcWÆ� ÷Ñk“ÉSÆ�9â'v £kyð)!˜c<„D?@ÄDä÷^*cc`DþNáÚiψ§ðê¿ÙB¾aFZ>`_�MúÎø ÿ›tCÙ ·” :¥Jõ6¼ Lbèt“¨Áfy“Ó>œ6ß·xávüz$‘��v¬x¹ÕïçäBú¼ú„!!v÷å2…ÑÙ´8AÛí›Ñ]Óô"0…Dùkq¢d™J¦h§(!–‡ÐåecÔÚA>{f¶0ÄA ¯ÒÈr„…;§rKUëìlm„qó+Ÿ}'àPÄçq`ŠFäÑ4²<оY«�9 1Ù¯ ¸Ÿêõæ%òSâªH™ºkµÀ�ìo{…·#Ž›Äd™ìøw?,¨˜^<ñ.¬ŒØ¨d’Ä©À*Jðÿ§ß‰ÝË |ZêawwÐô»Õí’‹1ß$Ì�FbC3&# Σ›äʨÈ6ZA“u-ž×Ù„úfFz¨Ï³ÔCgúØ-aL0¥èÿëHî‰MÓÕOÊ•*«J5B8·Ñz¹(=Æ F’Òʳñp, Y™Ù>böj\-PÌí‹S)hÜ\Ìcn¢žåO÷§&¬Ó!Á$ç·ÇR|5¸;nŽÿ3V_p0Ý ©0éa51¸mC‡sÐ_ó) †O VŽGǬJ(úÕÚøÅ~“½ ÄN¨Ú_¼¸Á§-Ó£ãF¿'­ÀΗX�§á|5¤�bÁBÈO†Ež„RÇ×?Ï¢·+BKJ`…Ý[R·òn•–Žæb.Úwfj’LÅ£âØý£8AsEU„²Ÿ`¸TÛ !�×ÒT3ðV%èÉ¢� Øß……š("´óÙ¾°ÈTKþP×2³_9¯�!«à&ÜFÿ,�šßÖŠ€sçz;»6¢5û"¯Gwö¬¨_NC¹•a\ »`4jŽ”Á²È3ùÖWsÿò§Lw]m[v$j]#«TF„YgOíŹEHÉ'y“†?'¹ ?ζ"Ñtû2 :hcUM¬7ˆˆV9dß’�"¾@cÛ–ï裺‹Ýr"PÝá2@ØP/¼¨W–…%§¡\@­X¶þˆT‰P‹ééÞ%\;�õ8†l®Æï,É‹Kñ±P׃r™‚ŠÅŠñ"dYK&Çž4ô$iê§d: ©Äì¹ôưᚡ�`**Ötÿ/Þ¯ÊyCü†ÛeIu¼.M¨ ˆÌ ’«T“�’I»6,¡‘õgØ8Ífë ä§vl£Éù4ñþõ§@p ›ð<¨Xª�’Þt;š#3Vó&Í£§èDSߟã«’˜¹¸\å8=(ú¥a¤®»¬ïCª ¿ù@÷—tûò¢{ÁVúi±Fo8€°¶|&`�öÖЦjõÈš²òŽüø�Ê™>2ÝÝ� úÅ $åùþ&ß #Π¼²óå±G¸Pú�uF�ùÓò¦¾ÜwáDø*{…€¾©àzSì‚Çöj&j®û•c}X�“±-¯ùÀ}$[j±“¬þû˜6K�c¦þX:*=0™è<ÞähÉÍ»éŽhG1/³f˜K[þøµl-™JáɤöZgW¸o@Géd%/n>к=!ÂOÛ²µš4éÉ_f-ðt˜´Uº/ˆ TȰíLlÈóⲘEÅ ìö¦i+=U~X1¥Ë5Œž ‘Þø+B>ëk�´!'µb2x»$ábàñµ®¢©„üp´œ9/ÁA–þÉÙ !ÚÚ Ú¹ó/´( t+ :*BÒÏc¯|è>ÚKÓd“bvö…O’†lF’°Ä,¢@„" ×G·•$ÝY.$Igü×W`›(6a Ñ­6˜7ßVDš¾¸u¡ÕÕ -Á¥ÕZMÿíªJ%Q]dZ)óEæpñ騫¿k82UK PÛñ•GO½þð1I°îy÷êƒI×yâ3¿üWç¿•jP>- À6øófm¿MãÿUÏÏ:ò3ÃöŠûlAæ¹Ná³ì=XÛ¯©/ÅÃÞв†zõ¨´-,£X‹t „ç¾mÔЖeˆ*£nå¿\†m­€]Ê[kcû…݈«bV+ÅõXG%aW=\VQI]5œØÁÈL÷^) ¯ {V§2²ÉRããáˆN!±:bê¸¸ÄÆÆÄ{Dpù5³”ö{Ý5Ü‘7øpWsçX¹kç¿#ç~qî¼7‰ÝœÜ•–Fnnc=mj L¯v±áêߣÐݬ٠)ì7$¾SRÎ$ p$w–‘þ 'ö5¶æô1QY•zm³zYÕ¢3F‚ô ÅžÅú+rCfCµ¢ƒ4™TU�ZN‹ÐT6”Ð ÔxV=b•'«Ônu õ{ów⹄íå‹x%n5]‘ìþÒÅÆ�¢ï•¡0Å E "¢!‘�/¼ Ÿšù|Øv–H%&êEa{«DdW”cœÎùö]ƒ0Ò8<"ò戃Š~A!aQ1q I)i™&÷»œ¼BºÊн´”‰*ª$5õ ž@T$ã”Öд©¥mKǶ[ŠB�� …ÁHZ9¡ "bR2r J –Šš†–Ž^¥*#3‹j<+[û%'7/¿€ �°ˆ¨˜¸)ã!t:”–"eÆñí|Bj Ðý’*hW®“=箵m5÷_fLdd'£ñóƒaß ÐÇå&ͨ¾?�‹&Ò†* ‚qŽÖ±�”¾8§#î´ À#tÄi\´’Û¦,¥½Âek˜$ìÔÃ�ÛuØߘîû®à\ÛC’B/—‘“f­O;n_0š“îï—r\ªD#gài(+¡ÒëH“±±ã”õ|2Ö|¤0iÆ+ÞæíÓåÙV§�ñ³§L%å.{=OÅYu±Å!Ð~L£ÞË&¥�eM _FQö´5©k]Žº'…rày<àçC^¯J�"çåH¨ö’²êQ‚ì]õ³âÉwÖ¬¶øê.ùÇî•g™WPêJC5Ð0 *†,¬:dñx­ ¹¹–T¤‡-<·}ÈÜ:ç+A“Cõš¦œù%Kasr”´ð×|r^EŠ{ˆè£ó€ï2g5ÊÆ\8/ê¬ïe{ïÁ-“¢>?Í—|›þ_ëEþ!JP¿è|üDžÈíÖ¦·²mIúÀQS]iz•»¹µ¤<£:I;tЬöÝ·ÝnVU…t-k†k&÷!n±Qw¾�ØÕP!…6£KçýËåÛÍÕ<ÍׂTX³ŒÕGÊI6­ìoi[;ê·aÅ|ÆÊè¦Þ¾ê\Ü=«·ý’¸²«=Q~h¬v‹�ë}ÆØÈØ[ꪑÏÉ<5eu<-ò�Læ#ùD¾>:|¥7ÛͱÏ7�~ÂíIƒ¥0iØæ03*_kÈvøÓ.©lµ¼ìNw­ÚmòÒúþ¿ãWÐÇs䏯gþQ26ö´l=Ç–E %&¯£-½­±1¢µ2«"ÝHG„ˆ�p•èÈ.=¢gC"4¨ÄÉ Ç *þÁIz8 …·¿gì÷+îþ7h¥O){}Oèz_.\½ÒpöˆRÝpôXìÝ.µuç¬Õ°t ³é F–[ ŒÓ�NCgmFšŒPg¸–lÇÊvXý uHNÏXÓ•Uý ºÐ.ÅrX–ÒÓÙtD•Þ¥Süßd‰ñ±Hî£=ÝAÛݪ%»´j2NYCê&:S#ÔHRšIrÔYúÕ)*�ˆ¶'Ò´-^×^Ì‹ñQBåAb:6u�":â_à­ÉÅX½ii²GT»ÉQ�È(Úâ(·Ãq¢äòŠ“h¡QkË£ÒF'`8AGrþ/=‰Á)Âø ¯p00ªma”ÚŠƒ�(þ¿¢DʹˆþDýr_îO¹ÎÍù�ü��j>ã�!/ìûjÁöT.ºïܼwÚ©ìa©ò³SŹÀØ*4 "(ËŸ@^~rŸÔl¸®ËÜí?>â]ÎGÊuž š.Ûç¸WâÒÔ>iм®å'PK ÒV1]ÆÀ.jÌ}Ì}Uimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-italic.woff2UT ëÆ«jëÆ«jux è‡wOF2}ÌÓ }Pƒa�x‚t?HVAR„N`?STAT� '�"+‚8 Ÿ/V êtÞ ‚20�Ô~6$„^ ‰Š> †êɘg†î°JSÛÿ§pçw;¨üŽí…‘�<b°›Eÿÿ§'ċMM«ê’‘ȪBï‰ÂPbê¨ä¥N}ºiw2N\îIýÄ•9E%< ‘/¬m² UX$ca‰äBrÎzŠ&½\°Š·ñ\‘\<Œ#š4�ËÂËÍ :r°OÞ|˜ÔñŸQa™fPŒï’:½_ðàD‡ïÄ¢Í%~ÕZŠuÈøÂ̶_¾�‚a‡.GS�žd®¨Þ�è÷ LΖ«Q¸õ‹žï×ñÂø'ŸŽîÂŒ½{«ÊÁ"À�"e=�§9ûyï­gw‰‘� ‚jrwÔ”ö*âp-´´Î†œÊoé‰(çí¯˜RQ¬G‹Äw÷ǵz_&™$“d&™ fpï–�öŽÿçý%T•,d\Ë¶Š•#Òe$L…m`›ºÙ¨(Õ2 �³’�iE°H1 Â1°1 uít®ûÑÛÞ±Wÿ4÷úÞ;NÒ²k·Ý/�0Ã+ %ÆÊúMÒuRƒPá¡Ú/Þ?=sa—62€Ú‡Óµ¯"tÊÇKR@ü?ß!:­Ù¸â=؃ŸÜ´ÍÜÉFMÒ\¨b‘Ê'>`]?³¸oV9‹ˆÄ!ԼπoÓ~6ZSÚ^¼-qƒÀŠ!Dlž@„ËKŸÉŸ˜}™hOÌ þû½s©E�„”s�ÎÌóé]‰á\xiÒVëÕÌÈñ<£0üÃI5!dNæ##5-ù_�Õ—d‡–€ùõTW?“+ê{W”TAf7ƒa“bÉÂáÙæÿŸ­oD½¨þ™á|Uu{k�� )AA@D�è6u˜Þq'Nl�ÂÍúŸ"FœI�„ ÒBëgîiy._MÎmÍzÛ.à÷ÖJ»MØk J¯Ìšõ™hº‡ìd(ëRo@òóá<;¯r»|µÇÐÒšÅ$)EØI2‚ã½Ç¶OÈÆ R÷¯ä 9Gm&´>¡ê²°{Y.œˆlB-ßÜ×íUqGjJ¤›JžR <´B"6ŸOÕ²�ÂÆx1vº¢»ìŠÒM…ù3Ð`f† é% ®ŽÉûHnl‘—Jë§äBçÊ�ßU\9] µ«ò:më×;ÃKímö’³×÷: ¿0x[z(¥ ‰ð J[þßY¶ï~t5lÆ:+9~í:<í:<çvSçX”.Ê-ÑFð‘FˆI€6 4«óÑÌœý éøšŒcȗφ÷ÅØçiØ€,i£sB,séÓo_8äÎ.]t• –``=`I7šLÇÃ÷÷&o93w«-øþª[»-¥ã�…Â\*`€˜e?ýÂÐöéÃR�"+�[ó÷ž–¨€¬áätr-‡Pä"J-2Ç«cÿÜïëo ó~nÅ (G„¦vö÷‚I5•Æ{�¢Ó =>½Æ´\¼MfÆo|ë)í 1¨« (°+ÇÐ=Þ¹hç €QìÀHÀóÿ™ç=Tã«RûïÉŒ|jÒîg¦ûÜ„ÞoÍ›üÉ’�K­ýOÆ$xzÞ«Kýòïfb§áO ³Ö³W>wð¯‚Æm”p;A{;Ù};ÅuW’瞌ؽGÄ{�˜ïKÜ/ÿtûÍ}{V÷]byÄoæÀ™šG�æƒ{ntCà9o*ˆ/a ÕÈ‹ ÐX�ðznºµ^Ê�7ÜYŠgo¸+)Ýp_¸²•€øŽî�^\¸5Ðxö¾€jpÇ’`èñvœ£8Ÿ‰eØz[†Ê €hIÉTK•&4’ œ´}0žÔ UŸÿÎüñGé“á3Ã{†e>eÞb|ÌÊ®ò.ZWfÜ·Å:~4taèÀÐô—ôú9zu§¬“×IìÊ„»ÁØ3T øhðÂà�Á?¨/©-ÔsÔê®›ƒ :xÄŽ¸XJÌ�°}WŽ üC>'ï?)o—´sÚsÛ£Qk”ÂmôƒþsýûúkðçøìÇåm’6N[n[lÄ‘‘Fõ]ê;Ôw©ï/ô5vAÕè´†('hD&”%A"Ä ‰…@d”3å W ø·^ó˜ÄH�ƒ>2ôGN‡á‚xsëЇyÐÃ÷du×5ÒZþ†~¦�Éú؃ÖáÁ�f¨@Æ>ôgçMÃ7À¸Ã}Q:ô!²F¯0r{Ž2äM¸ ª¯“[^ùK¯êt¡¼Ô?½È,kèèÐ=cá�r%N=ÍŒ BõcD¾‡& Ø�õÙ·&äìo|nèŒ)2ýF‡ŠY¼$ÛHMØÃCu�Á¼¨cIÔód³ ¹¨ï�Ô£(½�ƒ–æàäemÈl༖áf�¦ùék²yª)œ\TwêQŒòÂÉ”()F`¿Äôì�)ÙÚ«‰9\Ò5›z¤÷á±[äòÁæü0©}oôM2ãrêH$x_‡<OO÷ƒÕS°Û¡¨ß`ÚL€ó¤x6cð2X…˜y¿IvÿÌ2.bÃüWG\pKä[–GÝR?’{U¬yd%ÿÁ”¡~ªRÒ£ls¿Jr±•2O¬x»GW²‡Ü~¢â½î]‰Ï¨â˜'Tò%ÃËO­ñÐJ¦1¾xaÇ�ÊÏj®Ó×dçßâ�'¡Ü6º´ÓgyðáEý‹äGqaS"ï^„ÉwšLaOתè6Yž§ß Ø�äñü¼a½BßÓCIͦÌõôÚMöä7w[þ Ì„âò´ï:;o8³þ¢\“ÏCò°*rÔù Û)Nù£:?øÿ»ÈÃtÞ~~°ý¸?ÿ4(,££Nþ(i³îÔ5³ãé”mP—3�Ü ÿ¹LðBJÌ^hÒŸÁ‹(Gð2“aÃ׌� í9F =%–Vð…‹ì çåVšF�Ï/F™æþi}-{Ó¥T•|˜SROžzs>šCü0ú~3€7cå"bWJyH"á>‚ž}üìã#F�7äê|d4Êñ=8ï'&‰k¢` e] ¼L«ŒâÿɱV}´.¯2Ÿ¥#34�ðXÈËÁøÊéÄ98#@,•7yè̃�¡_ 2Á„ž^ç®gPÀÐ�‡nÆ¢ü« E_OV§ÿ·ÁhdÿXbÚOìÆ"ã¿ÁÓÁœÿ·ú]ðV¤¼6øá“m <'ÕÑ]†?oDÊ>𢾟À�þ /0üÕÃîÛcìÓv{¢ÏÞgâÃÙïžûeøCöw(^ù¯üÅWþ×Û?†àƒOBþá×Áýð›8ÞºæÏ>‹Ðç?Géó?b蛿bðÇ«qòÇ�CýÓÏ`ùå_�ü=šÃñÏµØø¯ù(ÔMàw›°àeÊu0çÏR½øñí¿Æ§ÿ�mþ'7;Yº+eëÞ´À½”ÆCöGPšGòS�<�csO%»Ÿ. ?ƒRž8M¹óÍê‹Iž—ÀC»—_"g_bW^þq®›Íµ6îe¯ · wâݶ˜«Ž¹ì¦z"éÙÞòêÅkŸï/LQÄ�èα㽿Á“5/ôŒ—з p_Ã�Çà·I :¤®N¾ª~Ýhô+&º€g5¤sÀ³ýQt�NZG�yp°"VITÅ'U!"ß;à€aïð (wA‚×Ua¢nçJ‰¦´Ç»#Û�wE&“¡6 :FIÐûêÖ'Bys0r ëF:›])à}ãìvô oFjÐ^˺À«òÏV‚†( DJ¢Š;˜Å%£Ô/©¶y@òÉ :D#ÔÏ¿¤DùÙÎÛ±çb™¯üó•�W®zåTØESýoþ·@ Œ ¸ëE˜Í è�½“©6–¬À�þš1‚F°Ó»Àì×\×Öz2šòz€m u˜{ÉXÆ@H¾°0\×N‹}Æìæ¥"+Fô»R£)Uª�æØ´Ú4c�ɤqHÄ�‚ [fˆìš²`Ã&¨eò1kѺÚô4^sÔCÔhÕÉé;ÉDG·Ñ «yËlŽÙbŸQ“³`K<Âĸ0©ñ.�£gÔ/n4cɦ{þ»XûËӭר٠£!Âha6j¼%Çûrȇ›õ*;-Vç)Ú÷nª”\›…3!öÿÁþÞn£¾³]«VÊ¥b!¿%å²™t*9'‚Ízµ\ÄðÍ×_}¹Ûzy¿óÅ|6þÙ»·£á ßkîÞ¨Ž™eåV øF Þ Lá3Rù}ÁΩ[ŒÝRµ<bˆ6':cn¾Rõ™‰GHÍYóÏÔ”PAAá)åYoxˆ åSù”19�\ I8qåk]o­SÔ«íµ.P Ž…Xê�ûYG©V*£ˆ×i“мo>çàø”/Ppžå“Wº~G�ÃþŠÉ?”¶DËÈ]^NFÞ.¯gÙ®*Z´<¦œfMó?�꣜²[örÁwæîj ƒ�Þè/q£°M t#ü+A=÷᜘ʼnzÔî‚Q¦:™ð3~Tª§ `µêi ÚPf‚¶UCÓ›¬:°`3NÅ¿dR]¤.ùd¨€Tº(R M²·µ‚ Òí�0}¼.�h•IX4úêÈÚßo h®ÊpŸ`9 XÀ§cõ¡-M+§<4Ij«ž=ƒ(� WÐx×{1˜ËÖ:ƒÍã¹Ô$ˆÍVÊñ†¬¤úoÛ¦WK©«¨°HsÞS›Ss- ÅGžï23çD*½QÍI†wÕ$Ü“¨" Žù¨/øƒtBnÄÜÐÓG,/S.çÏå@ÕÁD÷‹XÃÙ¬ãAåFw2O¡õqüº¸pÅàòÇ‚[èâ†Ûî |zU°å‘¥>™º­Ýð£ÛúQCÜÆ/ø4)c+@ä§ÿcηáÑLA|°Ì…KÐqOEQyŽÕ.rÐ>¥Ó Âc�½G9¾o¢uûmAà1<Á^¸Äx+`+S[�/s(ÌÃ-޽™Áîx^—?ÜAâšÑDíF" [öâ2!v”"¶.ŠDœò×@.Û‰m|>äY—jPq¼&”×B¬Ö+YŠFa¸=Í娫V#I¹ì #çy£Õf™=½‘ÓR9!v.îU¶°¤°‹ÎÎÅÕâÜöv9ψ1eZ;Õ{QŠ`c‚ ËVƒc€“%h«®+5ð¥j ©ò\ß—£ÅC““7äèWß;¥\�¼(ÅL¤Fs •’´5`�˜ÎæáÙµP€µQeSËp:ƒvQ:†^•³3]U€í{3b-�Õ åP�Yë¯SÎþ„QáWåh©À\µ¯:¦%)IL ùù—â Î%ð µ]UÝ�¾IÕVè`¢°³0>K2!”aß™j,�±�SŸ/m¨ÄytÝÅH‘[§pO­£´(OûÔnr£š£K¬€É(/Ï.i-•+¼’ЂÓå^?&"2ØûÌB_P$#Ð>è*µÝã|ʳ0Óª©òŽæeµÊV‰ÇÚîxÔAc¿‰vU%Ò„y†lýóàÆ#ˆ!R!r 0¨p¬tð‹—•ï(¤©3þ¢¿uz>ÌÕ®‰æ`ëY¸ŸÍM,�DüäŒØþ€ûŽª �š˜Í1)Ý™Èu#·—^€j -n‚v§¸ÃS_…#ý¬hª!ô‹PŸ® ° £­E>Ž•èÕgi§þ¦vÁ/Óå*ÐÁM­"€çÍj&y¢œªn F:QYDÅE»šæ¶šëûÕµ¹¨¢3¢,'V/ Ÿ…|è–"RõõØ“Ô1„ä�GÓäžH¹òéQÈ‘áæ——“î'}Ü—žÎ”Þ¸Ââ–±À€Cžˆd×h¹@ã6úàa±+#äªË 3Z¹}»©ú ðEI�Xz*òZ5úÓ˜iñï2°TrXHÔ,aQ= ­ˆ.p‡_ùàEÍõÄTÓØz!3½«3™Æ¿ä8©™J·¨5!ô;&ÆX&1šóˆ½)y´q[ÛárÍ8Ց̺VNä ÕØSxÙ6üøA:°­u죱²â²ß*×FAºµ/0XcêET¡j´¡�¹éÞ—Ì}cÇH…}7 {N�ôr+ ]ÞKMÎ~ó^¯;†Ü âl¼ù¦ÂþüS´z-BAÑÖ’€ã1. úwÀíÀJw¾ö™pÅ €QyØéUòkèÝ[ŒSìa<~¢Ÿ·X^Ñêðý© /2äøçLƒ©J‚±AžMaªmt¹e$VÖq…#?ÂSubcÔ·ZŒS‰Ââ84ØàÁèh-ŠLxác/Öh&º #˼¾�HêüùºÎÑïë‰0yp Ñ:ä*yL£?S:˜/~å<*®ô¬~_‚œQ3ƒôÛ­�“ý&êuÏ#£�¡ú•ˆ—ê½×‰ÒÑIÁ”µ´â�«4Àdm›}øo|Ý~Ä]³EöI•fÓÜ‹ Ë_eóé¢6±¤S9þ >^ûܬýëDoÐðâÊÅT Šãáy8ËbD¡ö–`l¶ôAÜÇM×oÊïðW‘4ˆ•°Žð*‘þ >‘)yÇ?pÒ˜•ŽAµÒmcÍ|w�-ÉoŽœž{”@x`õ¾Í¨¸otÄq<”£P‘Y¥Ô ¶¶+/ö4nnÑÜ9C_x?¸¯¸DÞ¾bvÜ?êno ‡5b=M)Ð%õ�ÁÈëž8 >ýb õ¿ý÷Ãñ5ýÝܦ߼ã<[Ã?g¼Ü||I�Ð`å�fhTE£Y'á7¤÷/¿·ÉOmUçœDÜR¹WÖ¤5ù� e¿ÝØÊ¼´Ôù-n~¢3ýòHïMºb±Õ0X7jóÓƒ«×àÄæÛ‰u=¼Ÿª¤dÄUsqyè–r‚±D–7o¬<ž\Ö¸“†ÖÏÇñrªؘR 6Ž+&" fY^�¬†¶>Xu#90$ELÃ'žMLƒÔpUh·£ãéc�Ò®¦]ˆ>ï÷Ï™w:¿è„"¬OyüZj=ÅçÌ�‡•)Òã�CàB—²ÙÚÿ�èšqxƒQJ­J!á9;í@#ÙôºË£FeÖ¿�>Y×rÞò -¯2ˆñjœXƒŸ9WÖ(ÒDþ nÛ/–œ5«ãß.;;`>C­$Y ½±ãõp¬Ð*¬\M{µ™›ÑV‡eP:Ÿ©,Á^/ÀÚ�rñùNÍnø•‡ÿ2LÍõhØ´�EÙO©¶0P4ØØní`Xд�a r"*Zëßñ&ºSÆKÍ#åLœªH:ÐJÞ¤Šûg.ùÑÈmT(úJdžàeþ&ë¦ì{ŒŒÆ¢c �8¯¦6¼nÿ°µ‚6Úž”üKx69;‘Ë%€Åü±é…¼H�Vö�yMÍ&×Fg]mÃ…×Þ××}À>6¸´5¾cqÁÂð$z^R}ZewÒ\ù›môä  ÎŸ„eæ%5¤¨š /@»¤Ç$÷èã�ײ++‡ÈB�ƒoãÇzˆšFvÆw-§‰y$*e¥¢ï­Ðã²�þð<8++½Ü©ˆyX¸gì?‘¯êØË\é’¡þ;v’QÞ—]› ,Ç …œ­ÆÆ´Jó¹DMšH‰F+énñŠþÊû·ø^èÎßÕ)zr˜E&Õ¦Óľ_xµkd“)¥×$S Ù®‰^sÅ[s%Ä&Bq f ¹+j*VǕŠ9ŒÆôäKYiˆÌK&Ãõ³ŒÕ·.&•™�ÏÊÈ £E)ùÉ ¢XØgË««ØD?N2¦š"â.%Ì­ �–^ÃÂT櫤ÖË´À.0[›…k ÝYº‘å-ën› J"ç3óÖ¥–g!'¥­�ä>èë®lUå 9(ïÝ„ïÀ[§è 7ìþ}ôÚ®xšöí‘G÷o³a¡,µµ¹+ý„Tš7d¡{8h�Î1ZLé'¥"R¯….·G¸Ç×yGÑ=’'zñnÁ¤¢Ä$©Å“]à‚‡ó¤¬Ê�ù/¶A&>1 ŸX¬€öwgǃ�K4 ®_KéÂ4 ˜ÿl ñŸÍÞlÃ�W.þ«Z’�§Fà, }‘‚†‹´asÅ™Ycà„¦à %¬‹{~­L�Q¬ @XÙ*h³Ä]õ^ª5Y˜]’ÆDkƒËéѽ(põ\gµf󚘹*Õ±ÎN«_Mm§�0´ûá7â§pal—òÚ”<ÑkkI8.fĵè%†q¸ÞJ¶ºU9FÕYÛj»VR°&Õ±yX†üÑÝœW:ºÜºAäUé-OüHÝÈÕ Ü=6=‹rc-òmGE'M.T¸@ÆT¡æ¿¶µ,í&˜» dBÌ€¸ˆ­´¸ÊÐúðcü“éBZùÛó2û×dÁ½é¦êã#wt6"g¨J¶µ»ÙÖÖ‚Åí×'ÊÍÅ¡SLv®¼ÂÐŽ1µ‚)žM&�àÝ‘9¼-V~òÿ;¾/??~~íñ‰o8ÿ`ùyëÓ˪§³OWgžZž"zÀška¬ˆUrÔ;éuòɸrÞáF|ÇQÍ«�}w”3Õ½ ½´²tÇMÎm•ç># ª7˜‚±òJáÚ–ªÞ×�é®Ï'›Ä%”õñ¶g¹ y­¸±àÃA�ãœk·*­—Üðl 6Øq).Ãú ÝoµÉÛ7ã˜Êñâ<Ê>þ6Ä„ÖK`õþÑÛ!`=>Œø É·R¯'ï@Èfû ùl€cÅ í�Ã_tj1’•ËT¢I`ŽßÑ ‹—|øÞÜÊ©Ô:ßµ[×¢n³X=3ë¶¼€¬ºí³î0ë Æm57À~¸vö$­E>„¡è #¤¹ª[•ÿšX_†€%“?ˆ/€M<9J›ü8ï÷Ha~ _e´aÞ¯¤[Ï-Å®8(…mk~ƒ¤oÖƒ¾?$‚ Ÿø©»zlóš¸`M¦c·ñÍGÎi77�‚fÝËÈæu1sj~äl±“ždH¢?þÁÞ`  ONXÎPrýå‘ "8Ì?ñvüªÀ²õ0FøºRÕâOYý¼oèïÀíØ„Ê¤¡ï-ÈšËçˆþQ”€Û1 ËŸ·ë~ݱ&ù6¼8{ö?)„~Úûâ'³òƒs!sQy£§·Jý¬¬·ùëS§>*ëÿÔ n ûœörã±YÃõÜj+8»¾Ž=‘r zIüäÌ;K¬�ÔF…`8ó$ü–RC¸>U‡Ì³ŸcE5LwwðwfªïÅ×ÀIûÇ:Ë¿{å‡i?¯5Ç�/è‡ÉIi~ý@ÐW`ý eák1ò+Êïš�lÛ5!bK° 5å‚{ ®—�ûQo±ƒz�ò;¨.f:éZ³VÞÇ#¬«µéßi¯ßù£®�Z‹£×Ä™}² Âf!½ŸX£ÀMº×Æ‹c†äŒp Øz©¦ðAoÓ‘'¥G-Ú=|uãR6«¥�Ij0�Y^"Ÿ&…ŠÆž¿¦˜4«SSDII)Dup‰+ÀÃkyx\ûóÓ„õPi#‡'�W,pUËðpÉ|Ѝ¥”‘Õ¨àtgçúsí9„ü´d<ž_0‹þ'Ƙ ÙK¬ö%ЫÄe)³-ï_Ò‡¡pñ¹å yZ¥¯,ì·q|-ú¬Yª`î6—F^gk3-Ó$ìÚx »ÄÉ+Ôó?óoCI�þoDêüf‚)ÖKÃ…þ�å°÷rÞ©¸Þ;~š#ÈQ¥*I–„ OÁ!\®ª ƒKW& ʰ¦�a]Ù’ ü}Òß’âOÕäª3­A+ùú’yŒ·ß›9qâùÝ-þ -Éóéó›vB;vªH�Â:ùÃÌ\)„ªÎå«Ó¬�Ët}Ñb5ÊÙÖßH„6Ì–Ñ/šü`aÛ²¯§_¯‚E¬=Ãøi~B2¸Èj˜Ë·¥Vò;Ée8Za‘n > %š`|ÃÏãSºP T\;+l=ªR:”‘×P@Íh¬§€ø>¥�% ùÊ!�4’×ë<Ý=_‹ TGÝ“¢êQ äüîÈ›Žàxúaœ·ÞÛË{PÕ5Ÿ£ÆkAY@Iü–‡ý•׌þüª|ÁÍŒ“è.Ö�b£ç“ l"¾ã¼¦v€ý¬þ È!N÷õƒÈÁcÿ}²itI°9Éæ=)Ý=#´ëô7Ä�|ËÙ€ò–ì…¯âÄðMÅÓÏcME·{¥G®UlLîR´ö¢K³¢Kgü^þûeÒmÅæ”á6QcW!øJÝØœZ‡%‘Ì·'’gUÓ>pÚ[0ÊcÐ(I‘ÝWM%9†Ä¿ÚÆT=àz `]x*Å ^ÈÑfá‡2Ÿ”€`ÇÙ~hˆ*Ä'Ôü´ŒËñ ‡?vÖ¨ M‰Ì¢¶ìlmQ¸GYgò?›É€= ÁeáÉ´9V×½ÐþÍ6 •Ð nïè:ìÎÒ .n�íè#MiZÖþ*rIe+Æw,í 6_÷§Vi׿£Mà:¹ú: ARi"ó3øÁ™8dÑEW[?H ì´å«p}…vØá©²'—רfrièBÍ0¿²# ôÇì¶õ§¥ÚòÜíwÆúQ±tüÑÀ;J\ð~á-¡�Ö›õ†O‚kˆœ%XµXv¿6d·Q\Õž “xJgqEÑÖeY�+ ~ÄDgÄ’J‘y) wÈ%@>¢¨XyúzóDvFÏßZ¼ žYuã8jG±T¸}I LL2b2“J”dhúç# #EÅu#°iÜÿW!è+pÓ*‘mQÆ+ ü-凅zO¼nŠBìäU”mÝ‘™Ì„ & ÆŒ‰�¤”F°°wÈW&‚+¬òƒYfXÁÄy-‚,™HmàÆ�-oº8¸(R{êp¼^×~ÑQÚ¿[)¸c® Ä>i4�§B²^×oVÆ¡`Å‹MËüÿù•ò�ÎæÙ ^ç±*î�*ú1÷ŒÁl£ û2I\iÖ0rW©©Wë1ܺ´ÑÀ ®¶v …ôÜ2­Žy„ä¡À0â„|b†]oæR#$iôT}•p)N6l"oˆ÷{‰Ü¨LšO©¯È¸Ä<—ßð ¥2&­[¢§"Ý!ß„bÜZ†g�!£°1±…8À-”å”?…Ê`R7¤ý_Ùôjz>9Ôý})÷S)Ènß|×B¥b'äk³±:Q¸cp+Ø»œ>Úžð'X»_\±o–F?\ì½ÀÑü®{÷Ù£´šiDÝ3„å­ÏZ’¶ŽÂc¶„3¨³CÜs^ñ60óøY”<^õá…tîÍŒSQ]Ì;b£ǃÞßéæ�ïOtã®ÄÚ”øgÅ3Ó%¹+2³'öê%Hj²ÊÙõµ²P$�¾\\޾ÍÒôF‡¯"‡n™Ù‘«¥7@R˜WÀZÚ4!{«äò¼û­‡3ÀÒý+¾Ö;Û~&hïe·àœiþ?Þs¾¿<3A p­Oíàç¸_zÞ êYµt�ÑÜ–v"§Ù4©MC Ñ»�Ü¢Ú$zâ�Ÿ2‰‰aãòãùþÊ$–‹B[ŸÖög`ª) bäØá(`“XR®gxW-—õoQ@*Mâ ›ôkõ ÙÞÿò;s.¼bŠDLQ$ðáohµ¿Cõ¿¹Úˆ[Ädç\ÏËö48E|6’ŒÍ<îM´ƒêÒjƒ¿·ïƒïëÏg Ï'àsŸ<Œ=PýÑ£§-„#uF._P?Oz9â…¿ÁÍ}¨Ûý[ß³arbvp,¾„BF SŒ]¤E[ÞcËÄ VcŸÀ„/RÇLqj• âävø™öâË�aÌÐúMÅVØÉÙ\eX‹ºÙfBŽªG}éúŠOÓjŸ~=ºæ}à /Óo}óûÝ׋7ieÓÍÇ&…��2ës7n­Ê~míÆÙ¦¯¶+Н¤¾;æ!²_૜¯N}¨¥fÚ“·6Œ è\nïšö¼�Ãà €Xp3j3_p0… 8�ÒUtìÅ+a‹í‡Â.¿ª¼c¼}éÔk×GG¨G'~žÚ3ÀõL7¶îVÖ= }e0>Ú·pgø0¤sÙkWµÍm)hè|Ù>ý¿ �ìÖ·Þ~�JpÈ®±Ëfž1ôG¸¯ìgþ$oì§+–*§o‡|ôq9(×Ïó=™> &rë7KN¶ïï}h�'g§wãS, ü?’oœÑA¾þš. Ì;O™ØDÜ)¿~‡ØœÖŸ»¶Žž±)ø¬Ÿº€ó,¾HK‘¬›¡²ä‘ÿã Ì®Ǥïô©å‚ÚAþÞ·ýe‰Ò¬­ëÛdNsôÎåÜ®B“¹³wýwcRÅ€FàÉó.­Ý÷%ž£Góå/üçëWX] ý}ÜÏÄwô·Ø*S (ð¸‡ýÓýôúæúÙñÉVKÑ÷]‹ž�ÉS‰LãÌ^¿îžñY*°o ú™òTÈ9�årîÄB}.?A†¼ýtßÇêN°9]²Mpc†À`jb[•ºo”/$¥ bH iFšu>§0qr›qµmĨOƒ›rz¶í †1a ½X¿ ß `óìiósú.ËLxC½N’éT0Ÿ…s EQÇ/z‹=LfFkaíš%”ù`Iõ ìÿ29«¨g çü§—¬””‡ãÃÃÑÎü@gQƒÐ ªÄ‚ИÁuM¤SÄÊRƒÂã*­.˪ê:+ýHÏç8†D‘\} Ñȵžg;LJŠ=B~8] _rê]Ó£‹¼n-ºW à†FHº¦ŠdÊG¬‚ÍÙÙizõ3¾% ðÓC ÌX D¨_F}^7Ze*G³9é¹O‰�€ëFêìX¿-½ï\,$ö»u]"ˆàîÏh¸@PZ+ä,¥_þÙÙiÖuÐVUçܵDÙ@PžÑõUét{‚‡¸�2dªYõÜŸZ £ tŽ�É6’2ŒÇ<¡²ù\¿œÂmoS³÷ocœSWN­2¶t’Ã}œlçõEÿÁ§’ÚÊ…a÷}4óÇ“(0&QJ'ßÀ©E)¼âúÍMÊìö2å Öä"=–# }åÌM§¨’ ¼kšD2·¸Üê®Ä˜þ鉥>lÒ/Ñ?ak£1q.Š`L¾Ø0¶¬� ?-Xã†ãE×EZ#ܾ s#¿Xºþê8<:b¬‰n‰§fÌ3­!Û�V £—˜âÖ|ÝT�»’kŽò–¸,V ŠN{ù$£ƒ¹¥&¨�„ï@&&mè…êù¼ïaUÓ–CŸáj?bQðEÝØuÎíîöË…µûÔ÷\õXd×)¾ðѦb1öxQ×_�ùäš)¸”«¹d_›¯ÜÞ¾½>88×/·3îþøÌ¾Èz±ˆlQ$IAª¬'­ß“жbZmzzP4H?…¿<7«Ÿýµ7{ê3Š?D•_è•P[Ðû+lÆe•å K«8"áv—³ë×_ÛœÕáO½×¯¦ü­ÀñÜG*ÆGùƒ m¾ƒ¼’ÆJ\kj¸4˜);Øãøú©iŠqa¡½ )w.ŒØîÁÂ#}úÙæ›)zÛ‚|÷Ãþ¹yæVì³§fª‡òæ,°»íwÎÎèt÷ü|¸7�¦aŽ·ÇÄ0vÞ°¨>MweÕï4Þ;-ÀÿóÉMhÔGшÿL`,'¶Ñ­>�^Ðv�Ìh¿J­î°Q�Cøðð°®?ËëÝ·F_äÔê7„!'~»÷äŽØ ÿ@¼¹îYékéĺÐä¯Èû7”œí3zé}á¹{Ïm™†Ÿÿ·Íô…ë/<}á÷͇·,°ë/¿ø[noÝàNns]~ôòoÙ²…á<ÙM²Çd_¶}hûÕ^ ®\¹òÊ�ص�«Ò—”ã‰koï.ôÔ•ŸN¬Iz3yBß™ý¿Ù×Á‘ÌÛ÷3€¤"ßAQP=¨YÔIÔMÔk¨ÏQ_~5¤+Ô1ôQØõpy„[ÄrdTägQ‹QûÑÝѳèh4ÍEW£»bÆc‰±E±�±üô•‚øòÒÌc³³?_¸ë¢]ôôÅ':Þ0÷?q 5ý‚R¯7¨.¹Æ°qÁâý‹“.ۼߩÛÿ+$À8¹—@ ÛeDAû¿FÀRÉzÓë|ó@$}ö)ÉHÆYs5ð+ŒªKü¥.‡¬cXÖA�I»CBÜͶìIðÂóÁË–Tk‹×å€ÂOVåK/�3bÃé ™Œ¾iE>ùá ‡Kë…5ž¼#Þæt¦((ªƒÉ¢CBþ—ÝR/ºò�oy‡wª·U&ŽÁ»·*Ð< Úcsy:¨�„ž¦NXt, :«KÁ@Õ@Ï‚.ú+xƒPËb³h9‚ž1û\*ûToHVж½7ò,V™k ûý®'d5ýù‘3±W…ÙÍþÒé_¿xIyzýh,ƪJ†gXë@[\CK)ºgžû béê n\&àõG‘« Fš3c1Ǫ{`Ù#Œó+w´BÒ¶ÿ>­d¡ëŸ¸dzay^z\a ñÊv1N B&!Åþ26îjØ¥#ïk-Ÿ�bOµ’€dVL@À8Õª<”ðRäñFV%y‚œ)D–ÔE2N'¢¡!¡Uà…B:ÁTŸ‘î ]N:\lip$ôaZÐ*èr%G3b/ï8eåņ‹ö¦Q›•8Ŷ8tD¥‚6HŒî�"º7µöKÌ[xSxjÙ±p?½C #7±ÖÓ(ÉaÁÑ©\©z6ûô+s¥ÖÀ]:^¦8Ÿ|IІÃÌ>ðUa+ò”î µö^æ#­I>Œšd#ëážÛb(Œ´tä�FÂ3�Zé§¥/Z–çÿìÖ·o°¸áïT »¤›‘à ‚SnÒ‘2UÃ´ÒØ¥äj€Áò�±„?¢—WäQš„‘\r­ô‹>9 ‘£ €‡¯¡r�EQX€�–f‘mžDuUWŽ�@ˆà*+LL*õzί°VuBÄVBš¶%7MAÔ1Lâ0n}‚^7¤Y `Yq–¢™0µ\Ëó°{T¸²s™Ý]TŒ’i�F¸H�Ç ¬ÎŠššDú³›ˆó]îä!qè¹ÿ:&Ë�‚E8ò³ÄQ3üpK¹â�ø–õš£¦Ó¯¬»©*%·qˆÉD¾ú §+GSg)Z­�ôè n§`ÞƒÜRo瀂ʟLß{èR*7ˆ$¿ó‹øùj1g]‚7d"kvŽŒ²‡³ù4�Ͼ4ƒ`ÊÇ~ älÉ¡ãé›°³ŒÐ¿ƒ. ñpõ~S0ð Rß�YçÖ;Ý:*y2é JîÉŒv³—³™Õôâ@Nrî‡îÛš?&£ ÀI¸ÊʵM?ÑOT¥\–�’b2]’oõû]7ò�ŠÅ«+` ªhBpTiWOŠÃΠhpðEÚî©1} _¨¨î+ê(¼´Þ0tU–KmAHQ`�âì”M-• Lw¬Kçùãé•0õ0*T­à�bÉmû’˜dCHJw�Ÿ Ó?ŒLçÊLêžEŸ?ºª^fH'å¦`e´3 ßyk'† =6�¶Û­b‘ƒHo± fé�裨*2,/\gÕ NâIú·å=�ðnŽR€lë”›Llüf]+¿Iލl@vî.²UÌDS~l�ñŸ©ØÖÉ~w ; ¬jà$ƒUUø)ð…©–ðm¼0GþÎåÐ#ÞT9´pZ¢¸º×xkÄÞ*©ù¤\QÈî`o÷ê¬"¸4>¥fN°Ó�óÈŽKÿXAaj V¿Š×4¤S§ ?xuÖÆ™Ùþ”^MLŸ�ãs4–AôA~7\žK‰,!3¦‡F“³J”ný'—U%¥\§{V ¨4Ñxß| 9BÜ�Máš4S¬/þñlïñvT7PmhU½G}Ót[þÎqr”F\6¥þyÔgë3µ�ñÌ/-ͬÂÍ=ÓzžÔ„«gŽ5«Z¦1èŠ b¬]fŸ’Š!Vv²>OBIªhjVÓgUý>–³Lc|}VQˆ©Iò¬àÉÁ¿2Kÿë=m$ѾUõ­¼¥»awŒ׬§þ£\á&:—Ì2§�g¾ÉOEƲ+ Hˆ˜�U¬–øoD·ËX¯Q�¡&4ÕÏk² 5|(ÐýHË‚OùŽ%æ=žy¦R0qÁe|0“¼ùx+ÌÜ4ÜÄ�žÝ04œð'OvÁ}.½˜}çˆ2å—vŒvBæ’èlà›ß �ÍU2ý%vzÂlÌQ”BðnuÇbäÎÇ�‚µ‰�ó#ìÂÒ–6pðlPaLîÄÁ&ÈB÷d •—Éΰ»ØNfðh†k±Û#*�ʸ§¬WËŽa#jŸ>>JA÷¡«;cUÛ„ñ„üûÿA†œA§Ì‡u)Ÿ£Í$‡4wðas1�â³n«:@qôBI< 1s5VÁœd£ •C 19ÉØg/ "œŽ+­ü@÷¬¯M’ñ*O‰ÌÅÜÚD=k�õ¾hh ð¸6`áXDB‚r†g"qT¡º˜Åñ ˆö¯À�—Þà= ¢rÕtV&9îñ�áå‚9D’ Í¢* ²šç> xû"[î¦ o yc0q)XÚ—Dñ *5‘@g1Ñ$¢škw»‚Úwì2Á/.÷bjîÔN¿�··Íœ�>š/ˆzBóÌB2Orá/ξ¢×{Wuˬ�7Þ±i¶}Çú£,z({¶�W…5±ekìéîr¹žÍM�Nî„ÔW_¥w€âG·Î~D/x÷­7[iÎh¨fïyV Ø­˜R"ÂiVåj²¤ Eh–Áê1�f:AÓ[zæy�pózA¦�ª%ê…:4ëó9�¤£-ŒX€;z£ÝÌ@éhT—Ù^–¡VÖ=7»O*Ã?MT;�²P¹þ� &NL'ßþ ÛL;aúâ´Daû¬“¿²žÕbàŠáÆú¥¥aM²Æû,9Z©¾3/×ë,Á („ÈÞh7«ž“j ЪQçœÑðöŠáÂç#0'ªNLzAˆ‹±ÒÊ ¬"ÕœUSÓ?G‘*Ž¥i»­¹�Ó�|YÜ:r‹�\‡@ •EÁ&Å (§Ùi;.÷‹I}Óm êt!vOP¦a!]‰·×Ȳ3Šó`±,t{µ¦¾…(­3F£ö¥%@JüÅÀ.ä‰í_ ¯‰ °i]áŽežõ Uº’³ù�wÜz–ªWS&{¦ ެ©aÿ¢†I,Í@ΑÔt>¥58QèØh¡± ïðÐ÷á1±¡ã&ÕHZŸ6ò»P,8áÀâ©äÌl›]\�2ú�ƒ€Bõ*ýfâ�-©còèÅÎsˆwÅŒR÷ ì‚™ï!¨š €Œ�б uUÉn›Ý¿ÇSW Ü'– f}x[FØðÑgåþÄrCy‰�©a¤¶øô˜˜ ìyŸ™ÝBk™A ‹¢†J1Bd:àÕ·ÕÁ¬³œÙÎÍ�xì�“­”NÕq};þÃFDôo¦ò%Öôo4›PЯCpü5Ì7 'ð ø›ä_·bJ;®¹pVåtòøþ¾¤�æ�©S³¹Z¦Bx[x¡§²¼QáM�L(ùµ®,V¡š«ÍÅHyÝû†[¼íø|ƒéæþÌîqÕ.ƒL>QÃÝ!B3ƒàâx¿ˆ¬}WË�MáF½¡—ã6¥®!>1•Œg†HE 0a1×^¨hR¨âjNDß3ïtäÖWÿuAãµV[oåf¤¶ø‘Œ‹ÍÕô¤`¬m°€‰i/F¡³¬“p^”/þþÒ¢å%·wùHÃÂÏ=?6“ÎPœíÕ; )ôZ0ÑÀ÷bM™ÎÂÂ¥œ\nd6{hùÃwõL2DÚÿv(oií}¬pìŸ ÞK7?t8™²î˜;½“½UûâHÚ]¥�Œ§“½Œ¢*R1¥÷ÌQ7«‚¦¡zbÕmü[˜ÔH„RŒaB�ÇH_׋\bƒ‰»¥q­~ÓeçVGŒšé±êìßÝòH¦ìžêKI¸+«ß±x>k0‘Dÿ+ØN>T~ƒ¡È1j¬‰ƒ7#wÍg¡ldd Ü·Ä+•rÈ¥÷>§’+”ã[fÑëu¼�÷ĪS2—ÚÃì’äãx!= Ëÿø,–5ãœåº<¨žÀÁq8×òò†«(HVI¤q&OÓ,ÔËÝBI&È£&–”å@¿âѺÞ† Q!5Ýå#å¾C²jµZ’ €,¸ÚA‹$ ¸-aJ‚• bÕK«ô1f6$ô•W;º—oíQ<–£'¶b l},•QõN§’±,æÎd"ÀßqÒAù)xî\Ûåö£›âp{!äÖ¦-’$Be¦Â½{RÍÅÕ¼u·ê v½H”–Mxˆ؊&˜Ýñ|Ïf~N£ ªÌ•�ƒC¸^IÊ =hW9{­¡Aäµh·„ \€¯Caùt6Q˜-˜jIÉk‰L…ˆ'QMÌ'¬eëÍ Z7õš™T,Z¦€ù6™ÉšmÓY$`Šò9åÔBAL†«×í”d¸>çGî<Žõ³Xø¶:÷3N·aõBVÈ”Q¥Ò,é|‰p$ä·{ kÑ÷]%Y®™–.IÓÌC£¶]6¦,JO�îG9ÊG·Í=b?bFÙ­šÍí>^>·ÒïEÅçO­íxvú¹RüÄLÌ[ûj)=Ñ^7ZaÚtDz"Øå¢CK\H‡']³£‡žlc‰—ÇK§ ›è‚øLHJ B£vºüé]‰í¥ã*KÐÄG=Ì¢è êôÑUƒs•]ÉòNöUòsç)ÓûÅ#ØöIã<\ìPcl¢Avùåp:-¨A ÒrBcG¾‡“m­`8䊨,fÈ Ç5g7iNdé8¦y*`Y¸ÏW݈´· Ûñ[ËxâÎÊH˜!USOqœlš^ض(�ÚÂåãv¶w;ÚñEy"ô˜Ö/[¥l‹Ë·�º2£ N“�Q*­––ùùßÕ­~Ù]jz­Ž�ùV4–í5+Çç'à†y^­©m„ÁÕÉ: i-ÖÑA=´¶b3^ÜÛb\Ô…�Ó�"É<$T\%–ÔÊŽ)U:ÌNÙÒ­Z+Øw•®Á¯½ë¾ÀMƒöú¹¾€E4Ïrp0N$0Ò\Ý¡uÜû²¼Úz»Ï.³Ú›òyÞ3p¸—°Q¿Kñ�£FHNcfŠ:|B"ÉñlÊÏsÑÂ9ß’Ãf��¸{•ØŒ²×qä˦§¾-ëå%è‰J£1_óÏñÊ„ášÁèH›Ù‰Œ•[H¢zPós\K· 5km} 9SHXyå»I/lU;P±g›þp+ž`0CHsÖk‹7gåÎ$`”gYpy‹<^sÞ¹<+$G๠µ† ÌÂ\E‰Ù#ú�¿¤é­ÏMÁöÄ(ª?þµïÑ­ üÀjaE<ýbœh8*ïøBŒÌÛ„Û¼Š·À²‡p.ã~‡Ü1ý :H¸×>MbmCJŒ g:#tD¦³òÛŽÁJîiÍ´m«¨«{5ÞÅó’¢¶RŽÊ­ÞÿN8;ây½Ú1öGAFHŸžß_%Šüœ'r¼âó^ÄN‰EŠz§Ó.zía8_–f¢Á`8ÌO•÷ý�‚ŠºTÀÖ {õ»$�Jü´¯°ìäÀæà267lœ¿ö‰¡31T%ŽÕn¬°ÊZ¹döyƒ1îu]”VÖeüÊ|Yd½@ñ&!P¯†›O¼¤ýÚkŽs~^@Ä¡Dp8À'žÓÑ?]YC�K{à“9ër…Œg˜x´{—^6J ž¤}Ø|1ÁTNÅ]§Úóã˜Û2Ö¶Ó4-¦·cî_ê]ß¿«W iuÊcB�éyjL,ø’�Ueí¨ã¦÷rÞQ_™¡á–isõ$®žÞÝH¡MùÁ¶Ë¹âÈ“:¥Š\þqÌ¢2ÑZ31;/k.X^Êÿ’8ÁŠÈ$F Ž„Ñ=e~:ªeÒ«~÷ê*rÑP˜ šu¬^ ƒ^.6SX#P0MÁ5'<#–CÂJâs)m§1šˆJðp:nTÎ y™BÔÞXu8™Ë¥S%¶ i…æõ’zê°c—#¡ã1ÃÅNLTŽx(¬Ã{Õ¹¥°¬ìûhÌqÖt(XQ̨WGºÒšä4æÍkücCU¾C*–JÅJR˜îûðÃÁy??�”kæo¢HfìÄÓÄî;BK…Ëa '»n.þ ZrÉèü±$ýø¹¹KÑFW³èž,rmjbª(~i¥Xlà–’¢Y.Óøc!,›dž¡È¡áâIû34œÂdÚì±kjyCÓ:¼wlÜСÕ*í¥Ûû¸Ù!£“%ž~‚fB鸞›ÕyóRó¤€(£I�&áÿ  '‘»Ä�VÑêäž<óÒnоÖ�¢ËIÊjüµúo�FNž‡ñå,/ÕSnùTÉÞÈŸ~fT w^ÓÕÕÞÿúÊ8< |âSˆ;WѦšÐQÍóÂ-õ´¹S3eÆÉ_q†ü'_|é-…ô;ï¼­þŒžiåÅ:åø“²¬TQ.Àgmù+X‘Ž7oÛ,ûŸ~V¥ˆÈÜ>êV¦|>·´±×e®Þ 5±2Ý[ãW63äKF¬(<žw:9yeÐQ÷,MAåËfµÕÙV*.QØçLƒÏXHhƨä¦",evj£Y Óèœùì6Á̵Š 1ªF³5)( 6ÒÄó‰D~E±Ìúˆ>²¦¾  ×O›Øû3^ÑPN͸?'«ü)+áŽq<ŠO§LðÿiºÊGF'禞‘±xxŒÏ Å×fãS`g‚ÄŠ†j8!•Ë(à<ÑÝü—02d¹_é'í$'õî¼d70àÒÑSuåª)¸•=b$ P@�¨,:¬ÆJ@«: ÖƒË`_0ÓG6\Œ¤Ù¿eEY–xA_‘(GZ®…˜ä¿¿žÔ™àä/~"<ä †g &¬Ó:_&!DÆnzäºb{fèÐdbü¨ê!'ùÁlö›7V¼<ïó{ÔŽ¦¦e‘å¬F(xjÚ<< zl2QrZ4´EÖÆŠIùü†ÖѦ§¤T‹æ9GÄñÏ“&´“²Šø;Åc­- ÏöÓ´ywÔ²r£I_ÌSfuIdiÿÊ&…ZÏ\-Žntè‘q«ÈÃK߬ʢQ Õ–„ˆèZE€ófÖüéEy|îMYîZaS…ç�t«‹íôtQÖ¤KCœåüÔ¦ç¸ôž¿‚O€‹Ó°ÜJwC¸TŠVÕÊH\;YFˆÝ…'Rç¨Lƹ(Lu� EÍ‹ÊÇëæKÔaHWÕQÜv™A™Ð¿�ñÔ¼ª�`NÐïÎȨñ Ã7,c§,Ž_*tæ‹÷~˜L§™yBæEݶåXÀ«êGô)àˆê/Òž‰®óŽßýµßc�KòÊ*»$°bD±ßR/gI@æ§s½Õsø§_™ííL6k.,¯'² �°p§¦œe¯YdýDãl«Ÿ0>8²™Ç�Èê—äÞý}7vhM÷5Àe„Ï�(+ÉLLäàˆ4Ò–âúµ»Ù[Þm£MÃ'†—²‹äFÅî´þ4 Îò�O69$ìµÇÎ\fÇQaÈVG”¸·Zñmg1Ð+Ź )‹Qð²™W©-¯µê‰„7²i÷ˆëXjŽÎJØ�!¥µ‚Û òT”*Í}Õ s�­:^æC®I•@“Êúú~½zƒ1³’·H8‡Òv/Ù±Üm£S¡¬�¢[gó2�œë'?œ¨L ×YtbBìUyì¥O¯Y®Ù<üˆ8‚v¹2´.à ].ÜÆÖ�^ª$—'<Ê*÷ÿG†B´'Pi9| §}Ö-[Ø’Ì1ñ�âÀr¸´gUþˆ¼R•,k›õfê “QÊ É6¼•G6æÄ@z8öâøÛ�ô×ÙbEï²ÐoÿljDÖ �@�á'±j13Vf¶’Âú±\ÿ‹ï†h£m@�‰v†ÞêG÷,¥†?´ûIg œÁ.JWé<œƒ¸q6�ZÅw÷¿Ám#¢Lš-¼žûï1b,o@§Þ£Ši´C´F†›"�¯bÜí¦�ðQ¸§ÞÈÿ¢öóËŒ�™âð|Oj”忨ùàΧÈìOA7-k#éݹÞ�Ý¢Ìã´OI£äh<Þ!ÏÑ0ÛÙ/™}¢#á;Ê¥eèÉBô³ñÛoe팱‰§Þ¬9¿þ)ö�È´fí.xר ÐØ ŸX.o÷¼ÔÑ>ž;ü"J3ÿXëîHO œE8ÿ±‹¢î§ï½pºô<52Ëáx°Pã.:¯¨qb PÒS¬2YÅX;µš'°å´É= 18®&ДâàK•Å"L5Ô˜áî³>jŒœ�àKt–låRy&jzÐ3,›´ÒWQY~Ž9MÂÇ)ò‘¡Ñ¸ –�›ð:š9 £ S•A)‰íÓ4io¬„ŸÛm×iÍSžd4K“‘L6:›°}´œ'Úú‚¸À|â` "×;U]=ѧ­:ŠMøbÀáÈmWÈ­¸ ˼VÿñQÎ2/qŸìj]Û·ðºb%”ò5ŸÜÖ÷ïš½¤f@H†�j¤ÎâŽ(N1»“<@^·»Ö>q´Õ>°:QIÝBEŒ0"hA¢Ú ¼Ct`ÅJ X"X׫I/ع« £úñ#Å>¨a_:;�]ìpIlú;w¬º½c¡qŽ6˜b1#n8Œ=p #¾*{ÉÉÅ}é%n›¢]´-ëa{·~ÿ)ùdØõK(„Óg­+D–½U#ÿµzco¯Þü©ºŠM0 ÏÜY?ÉdH§KTú¯ì?NÔ\Ç—±ç�£È' Òm^R̤´b4àã ñ eH«t”FÔ Åƒß!Γž¸ÅncOÕ¯+z@¡Ç`ê)KÁ$Ì\E‘¦výgþ•d’å Tùéù_lýœEâpßëWÞቻšQÌ3µiýax„¦óŒ±†Ð½‹.—æü—FŠ^0Ø'=ðbé²Óº€{â‡jÅTå#}fä7x›ïÕŒr)o‘þƒ±ö¡ݾf­?Ö‡�ˆÍÁêpù–-<�m$0DüºZØ8|²ý–e/iLî„¡÷h-©›reù<ó'¥Ý* öÚFß ¯CÙ uk í¼Ö7×¹›vPk9ãOjg´·Îø¯M»ýŒ¿¦Ñèø `pN~']{1��â�öaíh4 ’@ãÉsÿ÷~7c´A« í‰Æû£åŠFˆN™f<ùcΣà@ÂÅ™$ŒÐ,šf0bÖ¬Ø (ÿs‘\ò]m±G?ðq Ê*Ü‹J¹ÜÍð —°MÀ ö®¤ip(uÄbÝ!aÙ3‘Ê$Ï‹¬‘‹œ91{RãÒ¸Ïj¤'ÕÕVMŸ£dç§hà;!¢Á@D XÙQæŽÃÊ`qYߺ!£DiÇ9’p¿¡5H�o›O€Ãuìè[«y�1Ñ�¹‡!u­¢†CÓ÷ ~YX¢@Um*DXW­«¢Npªú+òv{GOd ÷¼üýò÷ `-æÜǤÛKù^oT~¨úh� �C¹ÁtµkGÕò¦®ó¯«8¢W5Gdƈ£5d¼](ƒÕŠr5�½ÏÄ!Hì\ûv^÷[+n—ÎÛíò1mƒÅzÝüÞÞœç훼ùŠH}Êð[? ûªÜÔÁAw¶Þ©S¨Uk­á’¹Úàýј%WÞ=¾Ú‘/Z'”Ñå¼ã:=5çMq~¾÷€%¤¸œý_Ëoœ>BMÇw¼éy¶�];WgäÕ·½®ê˃.˜vX8¼2ð°òN§Óñ"K�Ñ<ЫÄÏÙÛÄíÖ‹¸f‡~¬Çi �a)V[�{^È)õä§Ô*áP,h‹ìŠW§A–kA™µIu<AÙ3±¹Tý’ÈZŽöµðu'Ð…¹äXõ«›¿¹yMîì;Çv©B�¬ Ïòía$2+WÃåÁÕç'¤Â6htzñ»Ž�x,kNv×ôECÙ}äÍ1 ôÝþûù‹é §alÿ®†J“¥Õòбo&ýò xòŶÅ›9ÉnxòÆÀÐIº¶_{_…f|?¶z�ê¶œèè"ôN"Ÿi?zóm•Êž,óªiT|D>Êc½ôz©)pàϸ %á›ËK¨ÜÃÑÁˆOLäF$·¶GÆMfîO^mƒ4�g6ZñÁx@YÕŽ]§M,\ŸbpI– ™(:T•¬æYvoC€†‘‚˜œÊØ%û¯–ÒÑ ¢�š(QMRN˜ \xÎ2=SÌV n²âeá=±¾Ò±m:H �|ñE…;Ö½è™*æ¤HQæq –}Ü”n|:�,cµiÜè]"ÕyÍÄc®Œ‚D#ýaQ.¸¹ºo‚ÙÖIa£r¤×q¬à&‡U®×ø�Ä©c5¹g‡ Œ+³8"åŠ�—UøEXŸz[所Ÿ\IR¤‹EÄK­üso íÒô#5GÆ#Ée;$ÛEªŒñâc¾üð†š¨y‹ ’ WãËV·¸S£† bÙ \r*êC9ªPiâ$'àÖ_Œ£à#C5Á›„:4 „„wD²Eá'—&!"ÅÐN¾™oâ„Y†“ÐP7uwÀnøw"ìõfÑv!/(›qzçrŽTµ²sôdfÊ@ý´;°®NX(ˆa³)]�pQ6+!!ià©‹N/³9­ž\‘‰©!$^4X#1¶Ö2…£áòŒoÔÒºBŸVaAÛu$zóXs?R³[+I-0<ë?š(j§°/)š{W“Ü…NF,€Jç¿8ìöqæ³6«WïóPH:Ô(ÿ|xGd‰A¬ÙX$¦"@Ž3˜¶#ðßÇ7“ááh¸LÅ'$=<·'¿µeÛ5 e8WLþF›#ö¸ãöÒz.$ÔžU�Zã¾LÁóŠ€GÇÓ�” „ p\b“Ì%Á²*Êfµ¡WÇô¬}¼!ÜG¶FÅ‹,É…ºz.˜˜Èà¿P �fä-?$Ãw�“Å5Ån¸©/…Ãl¾f"Ñ�Æœ.ÎÕ:µÀñ¨,aÅÞ²ºÝlš3�‹¢'"{dIjOC'Réx)?œ¹p)„Ëë9aJÍ�ö xÕÖSÇž&S[jqÃ^op_¼ÃnÍ{*gŠÞ»³‡æ ü™F½U¥p.Ÿµ®n8›ËDSú u—ýª·¥:×ðã61SSê+¸–ƒç©èhÂQG Á |¿Ð[¬0Ù¥DIäM²ª¤½ÜX„ᇅ–Ù…¯JzÅƪÊk–mi$´ÍPpÒ\¨úQNcÉB±>¹Y i~YN×]tµ£ªœ„3HGàØk¥4â €ô2t´ ?ø”~ÃEiѰ‚…«”×Ë6£ÛK.ÁU¨8Ì‚º.Ït%K}V£™´‡jÏ )Ƭ¿0šæ¶&>/V¿¾ ]$FP@¥£Uòœd5añ'â�ÿ=ª…öôk]­;�n˜²„Kš´©9¯ÝŠ:Œ�‚4µJß¶t?ß ×¾oýLÁÒw4}<�XÝïêßÇA+cŒ¿;/4TÜ„.Ñ.Ù-DhÆêk°-�>€|œÆÛyA©Ðo˜o¦èK”ÑûÓXApÔ¢ÅS«<7“·Ü�E;ëû‘á úfž^µG´J†K\€xøÈ)4�D‡%k.�¢ØÃ²wK̇¯³G…(n¤)S#‹;V̦)ºlŠ&â}k¯üóoÊ[U¥6('iŠÍ—lpÓɤáêò·Ï-ÍôõRyÖ‘åe„ãX”cZçÊžê–X)¨eHÉeHj9ZgÂI´dìÓBª$‚ö»“IAL³¹t/3?ÕÔl',8ÏKº4àÊ]XôoGŸ„¨’ êøÐ h‹­C$(êõÁ@ø·�Ä—@¹WÉp3 œ—;{�’%‰nŠï~õljtñz„N6¼§;,•fÑ!!r’i Â2Ûìò !ý{?wK «k™'—•ª'}LÌW|�ãB¤RÈpÕ›oìj³‰. ÇŒœ?fR65Й¦jïÆðn–*åó©d D®iÆ8Ï·Úà&w„($ñµk7vØb*þÄ|Õ݈×a oD k�?fv(Ír*XÉ‘±ÛvÇ¢Õˆ‡_Ôg˧&¸rµlÜÐDÔÍ[Âáø­Fa/�®Kéΰ5´Â†Õº¯³1™ç²îÖò,ó€ïÏì©9n^ÁN6å ù°$|LóbB×Ít:DZŸÇËJʱ }d!w—D‡>Í·pÊ/ïú±Õׄ²“ÉpÖ–8 +±IŠ œpBG!�¶¬:ÛwBãßœIQ\LªJY¤PÚòFÊuFQ¼ÁbÙ2"˜«#�s¼Âh«Ápy@OØÎögõ� ¢î`åŒÉÈ,±(î„Kfn(Zº(W’õì"=�6òÑÜxªááw¤ð‘(# ,#Ë,òI¾�3cÛçäsš™@²RïžOÇ_Î]¦õõ™ÂxN¾Û„N[ÃTö'@N(>”Ù'Á°_¹‚L+ÐGDÌv\Ùz&Z;ØÇtvqR©‹ø7»�/íÀŽìeàh+N�Ú.í~|œ‘E6[Y.ãì]ˆ…ž‰t±� 0LÃ,Uš!»ãàØ)4c[뾘IŒæo �à§ý cK:Ûª\^ʨ ct—QàrÕ*GQÉ $z ®Àf8'ÝPGò¸L§è8ɘ§h8ç­rFÚ&¬kíYY2Ó,Oâ¶¿PtCÄ�,wŒ”á€äFo�2Z½éŒ½ÜÄêþ_ÛE‹ÉÝž4Þ=]gý?j{ï?Ç-{©Ec9ä‰ÔXkò“+íCôó7OXôÜ¥�©/D×Doýèƒvo¿øùñëZÙV7�G^R—;}öCtò7hm9¾uŸuºúA;©Í{ðòzkãõœFÛ¤µÃ÷u­äû£Û e¸_³äÍJ5¡Yœòwþ ¸!£Ý Ðtn·žHD˜òûùé¼a¯¥GÁáÄÊ1´g6Ö‚J PãSˆÏzòì �ês8Ž!8oÚò›o[LwÙY@«d¸(ç³gÃÍo‰AM`žÿÓä¼›�=§“�<~¿Ü¡©t˜Š|ˆX×+ VÇ™©’Š[d3­ÙÊ“,üâ£M‡üi:)m……�îÙ£÷ñʧæFâÇ´²Ë'¦-‚Ž@:ÊÜ�mþn… œ!Z”=×Y0ïªGE«· ½\CÝôÇQk…í¦ØÊ˜Mµ¿Rß–$ØÎ†²`¸!—¥N— 5 SФ^{Å·eçì�,Ä>Ý/i-ö8{)Ñöéc")¹Ó¶û¾èA1Îÿáb¦� Ɏ먮žÇ‘•ÖÿP 9šR�š4"ã¹ pS[¬KÏrÃQ!ðµU–óZÅoÌçµÁìæZåѽ_Ææ KúÌN€Å=ÈÕ¯ÿxÕ皦TÇn\óQfô¯Éäêì[þÁîúÏ�pE™e³R�9Ú‰aOÍ¡¤§«²2Šì[WR–ã[iWΟs‘ÿªùòXdˆÖmzZœ¹Ú¡c(wù¬o b1N’¤-U�1´,ÑqfžÞŸ°¾T“j à¬t Or¡t­û¥’ÏmYÇõ™È .-Ux´SFã9i°aºW�ð4‚ÊÓ9„’`f „Øø[£R]T¤Â£‡uã·i<'vC3ý¦Åâ"±Á(“` ÂlSŸÓ_$³±L�È&¦šo�*‰H^UÒ5ÝÉ’ã|tÂ=’–Ø™¯ô¼ˆÜš–­\±ÎÌ èl¯ò ßú¥{H`šóÔ5rG¬yî…2¦î»'QåUXŽo‘(bëµìx,WŒËj­Å#”p8µ`!XÉš>¹’!l/²kÝVÖ ã‘TÐ'a¨Mx³ÖÍúF6‚j5W´éŸ‚�¼yŽhª‘D^¤�‘“lE‘q?ÇF u–N~ÚL¼"_f5ß<é¨?/WÊ¡¢a2~WÌ}Ï‹ç:åqîq¦Š4‰:\%¼9µ^¨w¡¿¦·Ø“æÊqåOA­Övn©´¹îÈÕÇD³~¹¬{~–^‘=Y­ÝüØdn$ÃÛxÞ-ïûÿd꣰KÈJÕæ¡ÜÛûöaw&W-ÞûÇ3y/¬dÖmË¥6” Ë“/ñË�êÕ œ“M°ÆžÓÚ=Õ$i²£w2béÂï—2Ê%Øæi-ty0᫸ó{mÙ,Çi»ie &³eDqÄÖsç.´…CbVÀ‚ˆ@ì üµì‚9f‹²)ŠŒùò´n60úƒèƒÍø òØÜPÍ1xÿ°¦±µUε�‘SÒ}ÝÛ4‰êÚccÇÜ‹<Žg­‰y½Á¤t…Q-EëLÅ#µ>Žr_^j½Ðè¨�hú+ ã'Ð`(‘¾æõ™¼»ñ£ðêškvµ(òt¾iK•õVsÞ•%ýðÔ.7/ofgdÕU6ãSía eZ#Ý}DæXÃ¥§¾)È{oªå»YÐGTO�G�càc)–Z9 ŠÕnÚ"@ÍCáFfixVVíŽÈ ÌT£f³™´d5.�Q‹š‚OsV7Ë¿M:8ùf6ï.E'ÔÐ<ËÆÕi<\>`ˆ²3ƒp&ᬰÞÝ­TL,Ü£#‡mQ1¯ùNJÚ—gÀvB÷Ô`CeJ¸ ÎŽQÍÁ®ÈvYµDf¦3& ¨‹œ–ˆàBÚ0«ƒlÁYGå#Îí¯Ò¦ãæZ6-Vd¼Ç$bދЂ®üj‹ÉqJΧGÜ<¹àä©„ ¬é(QƒÙ6?óR‡92E±AD`Ó“âû‰ÿXŠÙ¹œÛ¦ÛÏ Šp&®²ò†§Û ,«ïý™£y xÅ(×iN=‰ 7ñ‰ˆ],é/Ù�÷»kaŒÝSÅkí·`õî^ÓÁüJ•,¿b¯”ˆ›5¦æ…I#r= Â@zï–|¡Ü�gmDa@´¡ò%\h‘`ìV˪•€C¸vÖ¤`ØRù23- ÏZE\g¡l.ëH†Î¥È²…O"¯ä8©áÓ›"βXã`:ê…IÛÉ .> >¤��#ühÃ�¨Å‡p¡c›×½½áñ�±Ztï9Ü�©`ãX\²°wX^DâxíýScNìiÓM·k`[ÀCs\2‹šE™Ôç‰qØÛíµûiå(İû¯°H~4›ˆ°j«Ê¡�;�,>JŽs§4I(¯Î\Kç yÓ–hî¼8Š›©;ÚÍœŒš‘ xÈ*,g’–sœºkÔ!g ¶3Ví³�³s9Îpã3™Uݯá!cI7VZòΟg•#ènm¦æŸ¸TZð¨àtܑբ£qê•¡•C¸€nc°8:cß³g)vS,Ç9\7*Ñ’¹Mˆ|N·¨àÈ«ýnõ°Mx¯P@ÏoSü½•ÿR jíY‹€Ðw']Þ«<ðg¢é}­­�I¥®á �4 *]Piц4\?S,²L;râ=è TÄˤïÓpLÙoÏ9gÓI —î ,²Wšjïu†¶mÚ84¯ä/vYüeÓª Jf_ÍŠ}bXÉÝ�wü1zùR«Õï,•¢ÎåöË+z*ETçÂ¥øF¾ ]]²`Ü×±±œóô£�%»q_¶LCoÆe¼¼þ\¤bã^S �¬æT¦ur˜þß^Ø€³•O­”Ú}‡P²Ý M�Õj>5Õ�ð‚‘úe �ú=åé “\o´6‘lY¢RÊz]ÂÒôLÞÇ£ãGRÐÀ§Rc&a;ÿ›Í;æMŽW•k|E eîLÆÜ¤ìdö}ˆXq¶!o?Bõ›*5™3è©ñä†)f¼<ÚbËŒUÑ0…Ç¥uSTÌxÃÔ�ÄXr)‡Â\i¨+ß7To£*Ûù ‚Bu£Ó¼*ïx=·ZÔ¸$R“THqWË”Â{ú6Œñ™:½,í~n«vµj›fɪz0XâªR­±V<1,âúôL"?HÔÕì23Ô®p^M+¼ gÔ:�ñ¬ ññ,4€æTQE$N:ç/¾d¢ÑAøªÙ¦qYÖüFѤÔIÂËá°ëg{œDøk¤^«wyÌ�+~ò÷ûÇá®a�.øÑ«ƒ� ¯H‘E7Rš„PT{¿.¨Š@ 4׋ÑÇé]AÖÈl9p�lÛ–F¸SI©Qr¸¸î�.ÖÜPm³v&•ý …RÀgaO^ÐZèwÄa9þQ$ô+éV-þh¨ŠI ]Z…o…›RÅv…•!)*ص†S]gBó5QQrœôg¾úJ6Ô³™#§Ú:>ÔZÁ|Ð:É[¨Ã•ø‘´G@ ¢h…8›, ¹ì‰Ff1„ˆ bxó‡bљɞàõRI�«a²¼ì=ñúc}‡ÃÐWE±2rû„»|¸žW³9"ÑU--Kv ›y%“û?Ñ÷÷àµs¹\ž§³,ÏM¦ì=fTN fŠÝKî” µêNV¿0«�1R_éåkùs„Z™æ ˜Åž‹Æ<ÊlçêfCk}5›c{›µÛ­ S¥žfáø¥“Üħ}3[˜;’‰\Ï,›‰û èšq¿@Ã-#Ý×"q¿E§¤Ì=Ûm®f×ÏJŒáT¬šF#d¤uõçÖIŒ¶C-á~=5¢”9 Œ‚ïüŽ÷heE°fvœcÜóŒëÉ;ý% ˸ J=`‰CîÑÐ/°:t\Òó| L‹ó­Ê¢€sJ�d1C—³šÈ�„C/&­&J­žçÒ¥é:“Ñ”EFs¡ Ûe„'äNîj�ʽ0è¶š««‘wI�¶w<¶nÏW S…Z§ãñ9»Î¤%ؤDB:Ýlh%uèý¢;š`®'î‚3Á:·­k‚D�¥Åbµr9 ½q\¤3k ¨’(w;ŸÍr»‚Aáf¯Ûº6¶¶°x6³`qðëo)»E�ÒµùïhamÚ¸ÂBÊ^ÝFžp`þ%ÀÚißk ©wGmÄ÷6*êél¡Ó¥!ä£â¾tbÇñ õT¨UÄVÐ3¦®ªH£ ²´`ÖB$BÌí‘’4W[,�kŽ×ŠüÈŸèÕIJmiŽ\Îqe ˆ¢ò(¡Ü¤åÙQy;b§F$hàõGχæ{2ŠÖ‚…Ì\§¯ÔV·^_XY*Ïs'sq¯°l~PͳÓAÊ‹Ik7`1•09O6‚ºØ’�*_æ5Uꮋ² ²E…`læYªÞ„�ø™íÿ¦z“+bߎ8À!90ŸR‘Ó~v$¤c…ü'ЈÌ?º,-vU©‰ä«ûÍ�·”K@LrÎeíµÞ´Ô\s—/cnªÕ3eA6  ±D9Á!’ L¨TLˆ8�þ…œölÔ%ÐyÉ|ûà`\¿”¶ÿ´¯–JggˆP·ñœÐŒ–ûsf£èëÝ›­­êS|Ĩ¾`}»}¶çžüv¢(¾û.‹v=‡¢åøâìßKIwA¸ðáßJ×M’3Ä¥Ô˪o:*ªæÜŠÙÖšÍß@ 2Ñ×.§.33¤wÇ€Éwëm„…K#]›[É UD[Ñb4P@—“c-3�µÒÉ'ù–Åmt_¿ †Í£¶n”_þäꯄ"ÈIØct˜!"!'Ø ¬+hº«‡DÌ8E‡Y 0ï_1zßL]•¯¤˜¨w昒ôjeÿj¨Ž£¯Ý�²C] ÞÛ“íJ÷a÷F÷h÷X¨åi+˜ãœåÞB$}7Þ’Óëƒ6z®ˆÜe–³Ì“]®§Ô‡�±÷´½âª6!0í˜j3ÓôÿQ‚?´ꃶa  )ž©¸sà°š~“ùµ#Au¿ož'ïQµTÒ<Þ­O«Á�#E÷ˆ%ç°·Ó/7â­j’%ý8òïóíìU v à  >ÿê�kÅøt#ãzÞèЉ¢^gdt7=ÙÊ$¹'øö—õüïð°u| ·×‹°r#s5[½ê,”þI°šÐQ½ ¸j…ž=Àw! ±÷Ç‚y�c‰’ï­^üÏã‚Æ#1RŸA’$`Üg0a‚³B-,ìe– ÿUÓ€Ø]Ev¿ñ�ß|ÓhE”"i&]¶r¿ò +zb}¡`4šŽòï>¦¨~É#÷"³çد¡ �’ÓA€Â„={Š`;Šü!&vHÃÞ8âpí¥x�ñ.IEž™N—ïG¢0¿ƒåän-TŠ�åðØ¿Y�Õ¸R5ôÎÚMhµ-Õõà2àóÅ1»ÅÊ^ƒ›þÃBȈçD |%Ö°uëemµ,š|]>ï€l¬ërYäÖŸâ%?p%&½@‡ÓonÆ'ˆ³AÑL­OæuŽ(¾†ñn—¼}>ƒ õGþ�~êäù#̺J®i™†ðV!Ì[d–Œf$w 0zëM©!»N¶«%·­‘3ÚÂÒ;Àô@�ã[|ÇÚnw5v>á«·"¯FãMû”µƒ%÷Dé:"prá:ö^ŸÏ)Dm¤(û¯—VÔdOvc¡6é››u«�Ðã?Rx�-u Å÷k‰’/5}7Æ7tž«Q·R�@?Ôø#vã.~²p'�:;áäåMFjõ Ñ S�Ep~ªþdBD—£u3µj­Ñêö�µ*ÒI%.ÙóìLz¿ëGô Éðv± O²íÿ#±ˆ ¨ÔbýëTСʲ̈¹r9Ïlyž‰f)—¦»löð,£Äe NñÅZdÝõs*‹ª?"µÈ¶¨†¾™ >_b¦Ú ›ÌãyžyG&ðÄ5ê®Ã^b\d�PynuÚF¤²OJhA¥Vï •’Pzàh”pÆè«7‹4ÍŠ$ÝôâYÓ–�É€a~�¾~n¶îTª’ZFm3ÌÝxE!ä´²MyåhùÂÛ¼@ž”j[Ì,À³W*éùð*°Ê>˜¯? ¡°j/½7‘ïC0�çxDWWÃ@šž:ò™›‘†7´ÚľÕ(K“›ösNzpA6rã,‘’ý�ö´v‹×vÉ76o<úÏÑŽõ>nt»Bx³.u(µ!ô4ƒß�RH•Àõ ÄœŒ¨À (Ë+K`Þ«"ø Ù_UI0‹gCd„þ/ƒÌ™~ü¾øÀ}®<,€€Àþ¿=¯xz6óä(ÆAé¿üÚ<=fÄ\lÜ7ûa6X" f,õ3eÃPðkùWà•¹—ö\áïaˆT6…Þ¨/_Té´~6‡”ŸmY®Á�’ÉÈXÓ?xAÿo~–Áô7Á5ÁèÖ§ú—á¡àB‡¬�rDvȨãã¼JÝ®¹D s=Y1ƒR‡ÞÞWû ð¿ í¹ �¥¡x è>§¼�'¼Ùåq¢•â2éç¯Ï+¦ñÏ{€�•É@ª•ÙÝŒ<5x(3ìXdËц»m@í®V”š.IÐ Ú;íz‘wDìz»´ƒƒnw£ÿF�wÙ‘C·ÝìÅ—Ôæv¼Ëï‹bK‡€*å°ó‚AL B¨)N¨!¾¬Äyì5 Æ×ˆø�:zå5€†!(ƒ……IÄ“aqpà:£~fâñ³BS8‰ž’Hð€$²ËM–Ä#'7Ž¥D¦$` M”Á©UE²õ•lRÕ”½E·$R]í±HÉi°J™4–Sh’¯–d5öª0Ô‰z5ØÊ΋�(šøß¥T!Æwýú¯†JD¾vu~Šk93®|3×fE°uˆÂ|oñ¥ÄJEI5XìÕIWpÈ2™Õ`ÕÝÙ(VÙ|•ØK"‘;l<mºÍ1Û’×Ó ƒ²vD謃Â#ê<!èˆqe¯·Á$IÉúÝr‡kÙ'xµµnÕ�É|'…K’b\Å’®köh jU’²¡´/uZH‚É‘7¹ q{~!¥"Q+Wr®PW³I­Ú³_EJ–KÖ;L®gи5 ½~ãÓâ•wZÍD›Éäá•+Oþ4ÿ¬wÖMw½õ—‹ˆŒ†Ž© �€P±!ƒA‚ßB ±ˆC<�‰Hz6m,B0‚b8AR4à „"±D*“+”*µFËéx½Áh2[¬6»Ãér{¼>? �Áâð" -=#3 «M6vN.n^>~A!aQ1q I)iY9R°jä•”UTÕlÛ)ã“êË® �êv® ;çÏwZ§[§N�^¿pZcMÔ»C„IA!aiYùf¡'4"L  KËÈÊÉ7 kô‡B!„B!B!„B!„ÆcŒ1ÆcŒñY €“‚BÂÒ2²òÍB/¬ÕÅ3"0ýwûÊäûÜëþýGtÖ4hæÖ²'k™!4Ä-Rp6üÂ÷K¹_êÕuH Ö×2UTÅ…>ã;ã�ÞõkÇ{Ïw_ ™Ÿëœ8}ZhÇ»xíO阞Aþ2¥~Üïû÷müðu®À—ùitŒÌ w,†:ïoa9sðö¤þ„áudéU˜#M=9 Ï7¾`,·Ã®¼áÉ¢³Žé¨Ôß }"é¸Ë£-öCkTi‰æáfä0܈¨PG^h ­ÀÕÐW ¡t^£.¼« ÷RM8çƒjW˜ U`W))”r§�’$—8Áøƒ” _�Û ‹µ¢ƒJ)íJHb± ÅÚNèÅ(òî ýTü�ð}Ox)哿+ ŽkÇv –ë0´Ý‰éQžÉòÝêN…æ€È³¿@µ(Ë#d[¯ Ù¢õB.Éxñ-‡Ò×ò0HÍl<ȃÏL¸¸hÚ^&šq ü^îŸù¼ð´û§hW\>ÃêA§a „¯VÀf €Õb˪,ŒpÀYÍ05uø÷+Æäªú‘XØœs› úœ>�«‡aì¦ô!}vèoh¿XÉÃ$.Fqxè?Ò·Y¬Oè#úÿ‘hPùS}á¯m÷¡ ÑàìaËØ> Ïü ì7V.ƒ ÏW¤ùp_½®¯"òÚµ¯Þ ‚N=zõ²ëk ¼&÷W‰Ð½œ˜è2¢åzpùÅrÑeùºÑ'8;Øw?‚bW Ù¶(œ›Å9bÓ¶ üŽªPKÒV1]••bAJ“@“Vimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-ext-italic.woff2UT ëÆ«jëÆ«jux è‡-€ÒwOF2“@L’ň9§n„?HVAR…C`?STAT� '‚J+‚8 Ÿ/V ��þ> „0‚‰6$ˆ4 ‰‘ †[Z q�Ãv Ƈë)&É÷C»ÁͧBv^ z³bì�âÅgj·C:˜«¹ìÿÿÿÏK*cl»¹C³R‹$rÂQ1\³ªÐ’ŒEæî•ºÔ̾¢@(l'" Ï1ÈÂÖ{´·�Uì'DVY_½ôýx5¼éãà»Pµ§£ñÖP’·Âù –]z³éL¶H‚îÎ %LjT7ˆÌÆ{j�ï%g3ð ~c;pqž‰ä¬¡J¡fÕ³öJuv}‡p“`ñðÄ/”Ø¡ürN1­÷ùŽžY$Mú+L ’Óoø�t¯N5Üv¹°6Y‚�ò ¥%WÓ_ÑØJðƒgØÐ¬wŽAíaŸ9œhÑ+´¾Ñ5£=ÔM ¢º™*•+ôôŒ8ÎKÅĽ÷çù¹ý¹¯D�¨±aQ¥"CÿÀ‘5Œ ÅÇ Cø°‘F«÷‘¶‚´j`€ˆÕcþݬÿÅc„%B$Á^ÚŽèÎtfÇWÔ&…ûÜ¿D¿Ä|ÌVÄ+:@ÛLŽ<@%,P1rÎŒ˜ÛÞXµHÌ­�ü¨X·] l� L䕺#xxú¿ìíbº3Éä’~º€/@ΩÁœV’lŽÀ¦Ýi— îG¬Ä_î-Pgy°À ;6K–äóÿnU—V¦Íh“*ö’ bÓ©CÿîîïÎwÿ­»ê^ß{’̹A9ç© “î\‚q] Ç.[ÿ˜ëºd=„svIZÚ@lc{æ¼j(Ï^ÅrI*”âUDëJ‹ëLœ¿×_©´D÷ FoÂÚs ¼€†eKÿÒ’Ÿ«—8éšQð_ªS•ù�mõÿg·ouÏl½Œô9/:þß¾Ó»Ó¨8ˆ¤¤€€Ð"cL(<ÿ¬î�9£‘4À‘±Á«Ñ ºÿBü3§÷ $d�K6&Â�îezV"9 NÒ–@›¬ýö÷ƒd ƒáIö™Ðâö]ãMš¶Iáî>0 €íô4Gmîö67GB ýýÕ?ϴͶV@DQ¡Z,A§D„(` ˜5 ÅŒÍZ¸VåÊ­¿réï»ù‘›×©Ÿ]Ô©6à†ccGù�V¸©”:Œwo¯ãšôeˆ3Œw8gU2rì~ª0„Œ\à t ÜH£+‹ùÔ ˆK·¤Kíd“|%Ä‘P¶î9àÿ[>«ÓŽ!Ä"Ž5iÎ/] ¨ÜeÝXΧLKs6àg¡2¤`/%2æ !"¢à¹~Áß›j¶ûÈ{œ….-.~ç�sú—×¹éØºtÕ-AÀ^ KЄ8š%(i¼áÜ@É €Ž±f©¹Ê¡ ±z>€ ¤Ã’t/„T]®œRéqQ»(ŠXÙEå¢.ì¿MKzï=­&?Í[dÉ  #ä†`®4ÿ�ŒÎŽ4ךÓ*ªÀ@�¦ù”j¾í‚`Ôý”+‡\�‹Ž:çܺ©vßî‹À ïÄ£ïN�Tæ)‚¤dRñôCªS©Ê?„Ôy\¹÷¸ ©sQ÷ñÿæJ;™?ósœ—°Ð+T„ì«Q “îîåÿã”rW@P˜"¨¾ ]¡X�nÙ¶º¾% Ù áH±¶½›iûçkFc Í»ï)�ÜÝÝ 6VMz�d”ö½áuX ™à›µÁ2ºâž.°a¹MSäõ®‚0< È Y�qt>ÔóMuf?XÆNÈà Uƒúá_–ùÆ[�Õ?¥6!F2÷ÎÌá8÷2Õç ‚.צcÿ‘Ás‰âÊE–eºÓ@úêWS/Ù£Çn�+‚Q´ !¤Æ˜`‚ Ó{¿èWˈa\Õe2ï³ß<ÉŠB½höjÁó ¢;R—à·†ˆ  †Ã بWfx´©òe¬ŠT<¾9 {|wPÎj𼡫F¨œÃ8>ÒÔ¡1q§§#ùþ¿ ÚSJú�5;ÿùŒ¹�E¤>e­w¶ð±q±væ•í/’2çÍ}þò=_7DÞ¹mðMÏêÕ×Ù¾µ/óídÓ«·ö_}`ß÷}ü€,¾q¡ôÆã·ý`çÉíWìß{û‰ý?;õãXå'Ç~tì§^ßÅO®‘ß`ÿσ¬÷F¡‹íö×ܳý‘µ_ì¤}ù_ëć7Ö?¼{Û/ýýrâ/?ÊÿJvìÜ+|t ÷ëÕšßM»÷ ?¼O²_éž¿&Eüʉ¹ã|/Þ·Å‚ï/1ü¾ ò¾Öÿ`ú0ÖUÎÃׇŒ™ãyõ�‚"áy�ˆþ�(ލ�±£oÐ�ÑI�9™�U¹O¶…'8²Î GŠ{Ë}'z"q>EÄ>EÒžb˜OW¤§tÎÓX^HÁSQÁ3Tì34ö%šæ³hɳ Óóuòyð¥ç!UÏѱÏ1âŸS(JÜs^îs¾ãyª2zY¿iñþƒn.éÅiuqNY<}ÿ?‚tøôŸ˜¶Tn/Õ•¥†ÆœsnCÿ•zA¯Wæ–+H2k-Ï9+lÇJ�Z™³VŠúÌÛþí­ýG�ZmæW§ k©ŸB}Í]ûU¿„йÖÚ¡£ÿ1 ërýø]ÿG>–ËmXH’ ™�¦½!6ŽžÁ›³ÿÏ·�ã�_+J©Ô4”“ÎQº]« Í�ÊôdÕ¤3TÓo}oìŸÀ¼‚y€P"JÆù/ŒÐnTbšJ£©2Z®ŒÑ+ó/%bÚñ§uÁ¶7Öö?Ü×On�ößkÁ¹"øoŸü pòÁù‰S÷׈zæ\ò°ö¾|”ôKo«½î•7¬½ÑÿëÇ0ñ &´ÕèÉ•!Äs›žU©À§Ì�<š NíJ�é¡':qaŽD" ÑAAŒ¡º�hÑ!!dŽ9�yB[ Yj)$N$A$Q+äªnÈ}�!O½€ †¼õòɤÏd~PBøM á/ B€GtÀC ©‚0¹›Gž?«ý|°Û>l°;Z¨v'�6`w¾ @¥’ ØÜäÃàî«n‡AÖ4 ~¸ošÑ1hóa2ÔSè�jºþ‘Tê(‹„š¥D€Âµ×̦ à ܞ*ÂÜv:c6ÙÕg±õM£CÖg•#hÇæ©Ø6�ùæd§,VVÃH™º?Nðeø0¼^üٟѡݔ`€ÙÉò!Î|So’b³ zÑæŒî‰M軈ͫl{íÿµŒú(CŽ”%á2gÓïÄß‚9åˆ)=êyé ð€ôi�xÿ÷j§~swìænäÚ®ü\§½M&` ±W›²Ü¦Ûbyf}kLPèÙ‡Á6m³xz:}uº±Cuwo'�!T7Yg©>i^Ô_’è™IOÜÙ›‰RÚ,fÇš�L†i45ƒÇñ³ã�rЋžóˆÛ\¼=˜ÖFoÛÑ“£�RP‹5 ÖŸWÊ.¹¸j4æÇš&?oÁWÎñç8h{ÿrº¨å&P19¢ƒ p¬0‰ÖG0‡>4¢vÈ p�QÆ*3ÓF�õÇpS¿¥î;{IOí+û¼Ø=ºM7éLê-Ú«v·]ng›Ô@5äCò-ߢ› 94£mü)Lg_ò 9TêÅz´î®ÿÕÜÙêºe\×ÖE}e í�Ì«j£nSé4fo3ñob¤<,×7ä…Ó-DC©,¹%©ˆJdñ..Ųèf>Ö™øýn“¯dF“Ã.ïžQxeÎÍIY”#ço0çW¯·ì�]²eÖÝ�_ðÇ1­Õ½eeSú¢ØOÓí�L–šRíÚúµ:&Ú�äÚ,�ÇòIÌu#ƒN€§ìâ_Ƕ^Yù*‘4ù�¶ ÎÁîü—(7OzÄö.Û7‹Aœž(X¤A:-»ô—”åüc\þÐ:çM s<Ó¦µT°ó£¨«eÛZ®|´ êm“ rwêÐăOjžXu­ÕbKš”=»ØœÅø*sz�•Ç5iÿlbL|SnÏ«¿PA¹\Ú$[¶žëÉØ œ¤#„®Ãé¦OŠGê#„æ à韑6jÁÿsN©å—"úEq‡­)ô*¬Ö‘�¡w{ó7Ÿ¶å»=„KОÌY—€¼ª¬j\Û¢ë AÎEUIìb[mâñ&‰KmuˆùmvÌ¡�y]®ªŒò¤QU²º—EÏg©­î¦M[$|nxÆ«‰—öuÝiÕ‡§º°TÊ‹¦m¦Z•«C{$-…_ŸüBA¸¯—>0ò¹pG‚z�›eP—“úqB½÷ÊD¹¶ŸÓW^šŒ džó¹X]oaΛjªu‹�9þ 7W©¾qlÖÃÚ£ÐË wyeœª«¹Ìg^E±7#,�‘T3\›Oö]H͹x€b´ðf—ÙÝ«,Ì;¢˜* ¸G3,„•§û² Äͱ l¥¥E9™ÕÒZ[áÄ"Ó9ÅŠäð|º\Á…9Áf�¬oÒå±ù]Å:æaãi~'.­WËê ÛÊe=/=[¾öxb¢üFûª‹z¼eZ‡Ç0*ÿ­�cñI×køéÇf”ÏÂ@Öú`Æó]Ü`C•�ë3«Ñ ËiIN…{}=H€Öñvö¬€™“P�œ"D\@•¬šÞFßÄ G)›l¥³õ$¯"-»&Þ•h’‰L¶,Ëé’ÚÜš=µ8÷7ɤ[6³dw«œö%x¯IYæ°vUýµ©@k·yw> JKg¸Ögùý\�ĺZˆ1àOœ¤Æ2Ñ•„ÕÜ‘ù´¦ïµ@º­ˆD­ï”|F»¤!Úw¢lñ ¸�:Ã…?q2+Äp÷F—6åX[˜F:=øX‡±R¯ã´¬÷íÔá }ÇéNa“äܶ[�ÎâI]ù&a̬'jΞš2Û x3X‘sµŒ(R µÛ¼”–Ôl²�öVÞ0ê|Á¬Œ‘_D¦æòšµ!…EØÃ™E<Ÿ.aY€Õ‰iA e…ÍôÊÊstÙ�GM ·u×7?Êé8øài/RåÓÝry¤Å�H?Uñg—fôzj€ÿL¢ ˆå"¡É_Eä�Ó¤•ú̪,Å2.Åé“ ý54(²#õž1ybùÃVê'�²ìîVßçÊySÞJšäÓ?ËVrŠ)"Påþ*ßHWk¢†ÓŒm9™môæF'šûõaB¶L·ÎTpôG†]’ã^w}&HÞdçx\Àµ9OV€ säÔ’Òà­µaˆá]ZÚß3àòφ¡|ê§:X2ókH<«†Stm ý»·ÅÕ8)ž‰±Tç\¤]^jµ©ÅEM¯_÷Åb77¶yn ¬ébÙä+OGêu–MfåJ³ëì>XŒ¸�Kß²tœV9˜\Ðæ`ÁÐŽY9 ãn/1xÌ-9®4àºnÐ^E�ÿÈo`e_;ÍHo´:=EÜöݼÇbENîð^¤õÒyk�d9þQ°´&¸«op¯—c{ºt¥ÊT4'tùQM¨œø$ 4Žörê$÷rÝ ‘£‘3jÔ­s�Mš‘ârzb=9Ø0 `£”º¹³gµ«—*tÊÅ4Cœ”­�yìê²9\¦iŠÛ›×cšÏ³9z…1u’¾‘"iý(à§Iöfµ¾£i£lM s±e!Ž&j’&kЬ”®|mU™WUÓßúGÿéº×OHÑæ!�çwÔ3ݘȇͷ9¸c)Å󸬵*F ¯^Ø…;.Lë`ãÌœöÀD?À]ÒA9*rìh`mp¼oõH_Ù–’Jªí½ÿþçNôs®vŠ(>ÏË{œ¸ @®¿ä …—X¸Âa?Ü~%íGÕ»6LŠÕ#ƒ}h�‰XÚ< ÀÏÅçb/0n{[µÑNsæŠf‡ß­–© PÍÚqØ \¨˜w—qç�;4Õ ý š‹Çš9£‰ð�–œŽâ×ÖÛ UZvv‹V5j¯^¡Ò[£ë÷ßü ‡À¯@ð;´ú—‡¶½ÂÄK°_Sñ$X“н‰bòŸõäÇRÜG¬ÑÔ£pXNu·üèÄs+áú]@Ë›1m©äí²�!aÒ-N&ÓÃÀ€J�Ú Š€CÖ‰Å}â5ë�k 뺅¡„aÈ8&ŒlÝÄNCG\3†�’Œ§aCLĺӥâWí|eD¬íëÉ/Ú… àåëÜÕ}> ;ôÐã§i_µCMò6{ xt ßz UlWIï§} ‘_€?žïwÙ+"/9IÞLÑ’ž¾8âF½/ص‘õ¯©ŠªÖ¯9“,ŠÇÔ$<4Âõ t÷ð­´XL{»™=ôðÏ]ú›|Wg?•=`N´ÕF¦ìg”›?�ò‘¥5ì¿Û„æ‚æ‡_¿9€Žˆ_õ^EæËárÌ~-Ôxöv舙o‡®WCjÚ9| J vø,”ý<äÆÄ/‹l÷¿²˜„­˜G9„¿Øê½@wà?îßÃ׎¿�‚± ž‡ƒTrvÓC;T×'ÿ">ýN¨>û?û~˜¿ò^(¿ÿFx~ð!èô.TüDƒG?yFn?å¯ß€]O…æO/CË߃QýO!ŒÿN�ã?k žÂaõ!âä��Èkûû�ð+ŸP¿YûIÀះœúùÞÁ/�ŸžE3Âþæâµ÷÷;oý#«òWü�ÖqüͲ¾Ô˜ÿ÷ÔcÿÑËl5;ǹbç3 �šÝUxì@|A?éð¡” \Ë£7¤Ž=×9‘.Ók´žŸÕWO¾xwq~E¤¯ˆbdy\é»ìü\°=}í’*mxXèt¦Óï*‡ ËÞÁ+Û<èV Ћqq•à@�'S†Eµë°ãàíZEØ|ÇbK€þߤ#“h�`|n 8ñÎï-÷¿+í�9Óù{¥¶ó÷Lsâ{Ä7À9f!ùð’³w » ðs&îtSû=¤.Kä œ¶©µ´ð$Y2Ä1í¡%ÀG"hà„SDÄÒˆ‹¬¨Œú8ïãRa3izš›Nà |žˆ}»€½—ý•ýÎÞ)ççWïÀ¹ÿU¼* c#:DŸ¨‹1zöÌ(xÆé ÎdgÇ¿°ÿ�pδŽñ}¬�»ÇÔá:ŠÒÍÍžÃq þfДÔN¸ÿ…)™¿:45øØ¨ëÇå÷È €ÖáãX�Lž�•~À¾† Á§`ˆ/6i¶5šÈãϤ�Ú�ª2þUŠ? ÍŽ…ùÉ`(9®¨Þ9÷é˜*fG|òã´ß P—ʪÜo«JgêÊ…êI”ÄÊ|ÛÜ´²èfʱK“ìP¦@­*¥ â�¢ �¯ÈLU/m³Ç~Šxš‚n;í%uLªBb±u£ÃnJ°VŠ,S¹Ý2›d ­ÊTÛ­N“#av« ëŒASæeªT¹M¼ÿØvÉ�¯Dµö9àšÏñ@†<Å*ì ùãÛ¢H…»ís´2�Õ.æÔážöæg¾¼]£–JÄ,CCê¿Ìñh8è÷æñíJÞYÓaÛÔUYäY ZIñÿî;o¿u–:û`³^-ç³û÷îÞ™NÆ£áàõ—’Zõ’Œõ Áî¡v¹-bêvsë®Fr)a7a3üÆÛ¹ÕÓ…í÷”ÖN¡fË’û—CaO‰®SfÄ@ž�ü�¦KœÎS }•Ønvõ$~+^ÂËïS›üØÄSæOc ñ €ª%C+e“s VEüê®’Ÿúø�qÈã5Úƒ®.zÐh^ùîu,j%aÈ”@V,¶ii÷3u©eí�n¤\b>/[fp?¿ÿ@žõ€ÆíÌR3ã(ªçøÂ¢7¦'WƒsY¾Ìê¢>mG‚NŒåóhå×ej³bÁ¶þ¡ÓþLH‰ï¸ØÆÐëË) ³\�/ä‹÷–;•Ù>H¹ Ýóª‰ ��[‚°¸n2¬AB‚Í�!…‡)¡ß²àˆ’å q#"9Q¡:ÆìM7ÅÍD‰¸mÆJ‰¿ì>öá™G4�[¶3ûP]`½+}XÆ�ÇÓKèhíž‘§mèGxmz�áé<Úûfvfwß”=„Õ‚ »0?¨§jJþö¸×sĪoK«q¼˜ë;Ðr°Ñ{„öìðœ%CnAš’÷¯RKÑ$.·´ÑÞ¢1Øל¢¾�´;½Ó¶¼1UôLj²÷&ïŽ?fZl=n_`™#ѳ>Œœ£"8)‹š¸Bϱ¿qQÁ#’…Õ°wê@«Ï˜0C>nLy‰Š¯>¥�96=f`fV.o÷,ù"‡�ª'ižW¼èLú£NÇ�t‚WðÊsC2tÔŸ(�ŽI;zǾŒÉ‘`·J;–æd�´�:VÛ•ÜŸ— =îN÷ÅN«™¸)}œ¶‚w/Ç3¤­¤U6TÇ Xp¹Þ¬-Ñ,µ-nêÓ`<+ŠÝNÛÕ8 ®€ÒYHüõ$Oú†ê(‹©€—2îCÀʰcÆ¿±Z·j0Xûª”б�$F=ÕGíš,@ŽZ7#Ø^ŸnGqò†_ ÒÇÐeê=‡¡Dt”v›YƒÐÍ¥ *@�AÉ]…È”óEùùÃK&•±AuÅdÜä™C�¡ÝrkºëFD©µ]“ª. á]lO­àµã�Vûb­ Ò­B�3_Õã|¾BˆL:ÚÚâÕ e‰®s6#⯴lV]JÓnS,vü¶r"¼µÚ#B9>`Ê÷‘äÃN …¨=z=²/}*Ë—öË5ð¨EÙÚ+Ä‚®Ks4›s{bÖ>'B=®<É "×åxÑœY%tKrí,_’ærì¢àï-RÚ™"³Þ¾€_òÞM€ÝDÜy 1tfµF]V ƒ À†&Úå}/Qoâ ‘=9@1`­¯TŠÅ#w„fôe¦Oû{þL ½øÒ’øûFB· +Q_Òld;|Uý~�œY†{êZ‚Ðþ ýª·ÝÒ~�¶XWpêBwáŽÑ`Ü�jC½c�WŠÚÃ)†yN×a€¢sW Ü ™W’ïõdÀ>àžè˜ÊÖËwŽ7éªê$ÇÔ™$¬`Ïen-ŠC-ëlFæ×ÿ|™Ý$8„\Ô!@k¹ÚCÄ2XÙFøa—•¹Þt�÷§ZÓO£LW`eù�gA(€6É4« 4‘ã¼\ÿÔ ­È¯[èläñmÚ¢?Ïâ§‘y™‰§‡�ñÊꊎƒëZ‚¯ÈrÙÔ¹\—èÁáÕ®I(BK”…¾píÀЉåƒB½ôøÈœ¶»ï†W„=keí6#ÙÃ~óS$HSX “Ðã’ö;ÿ ‹¬ø›ýÍ�HJBÝ ÌÒ3ìù<xd«XÊ�éÔìèÙõ+û ¤Ôü—S60ªF_´*âú®˜I®þ¦gõ{Zì=àQ`™È8õ÷H ¤wpMÊÆ:üˆwõŒ¦‹Àøq–©Åä5qíMÈC}y˜¥–l¯©Ë¦G³Üç:àáe`E’ mšÕc¡5ÆŸD+ñ.¢Ô.²cØÊUÊHÀy¯AÙt©ÖæÏ˜ªy§æí·«»ý÷bš†¢ëã fñs-‡� †ñ Ý@Öð–íy†xõ¼£L/:þ#UÙØO!H®aB²!'% ³øB¢€ 8–å‡9ÔUfÞ;ø.І†=u pàÆ—¥É:÷âIF²ÚA¤~Ôx ƒÈ>H^ðL4‘µIT='øhóCX‚˜ÿ׊ì€ÿ=µñ½Å­ €¶×�½ mEd»®Û*‡½¿½MÐÈ߆¶åóXtLhCe+ ½vËa»¾É ^ôÞ@ ÏšßulaÐj!t.,=ác[6Æ•È-Þ_ØXQŸgÆ=�hΟ 4ßÒòœø9V!`|>‰Ç?Uó ŘÏ/R±j‹¬O¬0¹[æy·ºk”ÑHZj.+¦û3˜€…31‹ ŸK9µB2ë°”"Þ–eS"†)µ(­£èXâ2 "®°´V4³ mªF L ƒ>^Ž%BŒã< ó"À|å"3úתËuRa½TY\fB•!¦JÚÊ 0nC¦ ÷Þ‚_%Jw®½¨ü�€ÅœIxpJ¦¡…¹º!°¶ÎC%ÞØa±ù¬=³=½ˆà–×Ò™ˆ÷ÛÒ_;‘õæçŸö¹ç1Xx)ªz´! fe_[:ünÉ–ÿ²ŠžÞ/pb^R(.¯¥· †ž°Aý�K{!7BPÝU!ç5hû×>»Ìaѵ#Â¥£¶¸±ë¼ð:­(QÌi‡}ä?x/…â©hÜ`éïù ýðÿ°³%# µôÅ ŸðK(ƒ×“QñÊA…vµkÔ:Âàïá [ §†¼{±ÞNí‰ôóg‹@}©h{�5¼þ«¹–äï’š=ìœÑ±Á¶OkÑÌEM:¿Ï#+©«Â|û®å&À8YûMbew|×GZ¾DIÕÙ�{=ÔptŠ6@ùŸ4D¥d›4ˆw˜F<¹rS_ ¥àÕÏ<ÏzYupûÂ¥çßJäLmÙn¿£${YŒ.UY~ôÕpìD'oY OQ¥;»þýÇP¡¬.­]¸Ä âƒvy!P÷ÏÊ’ªÓP�Òø×CgÞAÕ>_oÉÆ×Ð;¶?fb\2øs³ä}ßü´*I Ì�xù„u!q¡�p …ÕìajÍáDN÷¡^¦V84°�Yv£; ³7<ƒ$Èð–ÿ­«¢«Zó/"Þ€^Eµ»^á“øô>}Ø~6}›îð7ò©ß?I:¹#zKçkÎLg_Û@²û+ƒ×ªð~ÊYС â�2îåÙßTú\ïõ¨™½kŒŒÉ£—ô"Þb¤•6lµÞŹÆcÄ¥ŠàK±ŸÀ%õ¼‚ ó¬±è·.›´0Çq/8¼«Ú¿~�=ÃYjÖ/Œ1°ó"}�í ý7Òü¦sÍáÛL‹iî~Â& Ô†¹ÄSÀÛþ±#¯#WØ9 TUáˆ�l°`¤å<ÁRI6òDÏøÓãoÒ<–MÕš3nûí¢n·¿¶xl¥>ü58(Óý2>-Sm[º-@ÿ:/›Qr-=ÝŸ¼Ùƒ€åƧÁ·³/z<•3\ii€ w´kƒ…Çk©òÒ×Ñc?!‘€Œ¡(™S'$ݾL­€bÑå9¨‘ž<ì’tô/=Õ�ÕÉN]d¯;p¤?ôo¿M Ón­¿h�=:Q6ë)‹Õf\Eí¼ë�Ñb¬ÌŸ3ßöîà’í û~þ}†ÛÆ5Ñ)Åf‰jWÿ¸«O !<ˆQZçù”ª i—j}‚9î+þÕg(ö.ôír꜕Ï&/sˆ‘ÒêÞÔñØç™ìŠà3GNz»C|T¡¢8Úƒ2–bì¾å‰áå=Lk1†_¤á ?©)Uª°¾?ÉÇ'$ˆ]¨ :¹%«ÿÖ\‚V†Kþß©�—.éo…«‘EÍð"L "pýkç u4¥ï£³µFÝ*¤ŽÜ%ö»³Ë'd’sb²Ép“6qmª›åtž=ƒ�¬âÇ÷*´ë'.Uz›1†Æ †Œx©¸¥ïÕÜ�`»2›ô6´UÛ‰¢�@ª�U­q�t�ù¢º£F˜#ËüÞ `%þéý(ÌößfÜoØ•Êß(ß­‡¬.|Ÿé*DÛy/¹Ízصü¶ úDìi³·�!ÂV3ù�±L¸ §5³èQÏ”ñšñ”™5sO>Ïdã´KwJBO‰z}¬S ›U‹†íªmþüŸtî…Í£'±/ϧ—òoÿóý‹giÖ ªÐ¥Õ² €Æ¸È´¢vÂüØßú÷ñ´ýñÕKÿ–í*>F×D‹GvEgµ¾æØº#ï�„¡ú—_�y–¹Ÿ¨EMé0ó˜n[¶�˜ø˜Eðè'7ÿ ³Ú¾e¾ç®roårÊç­?~Ék�ÉJœÆ>›Ì�ìÁLìK`rÆ^øÅQÞ[/‚ºÃ+"kÏ�V8†Kð¥ÇÃÍ/zÆÌ_l·Ú�ð¿)­ÿ="!´™þ£áææc{üoÉj§ì[Ò˲·¤Ÿ^ñ½}勃öI^s±k\p‚ðZI�íêŸ0ÿ×LøõWµçÊUKû;ºÉ�ú.¬ä¿§v?9囎óØš5E[çq~xÅ@F8øè0§Zæ<^‰*-)»ÂêHÐ0›<²žÜBÍ\Oé1n~Ýa–ž&÷Ï%Øå“ˆ•'%Ørd²h»¿PÓWX©�-…k–æ#l¦?ÅÕl k À}ð™·ÜgºÈàüƒàŸuš'û'ZؽGÐí�3gA^{Õ®aüçÅ0üÚß–׬�\cZwl�aV§}5vzmÓÑ5+ ë�kßZ5 …Ó« CÈ•±31 ËÇÖ®}‡�ç®rkìæX7þ6ƽ‘Jž8¼üóI ½`ºš€ˆ@u¥JwN³9ˆžTÎö«øYÔÅ LÓD˜úÄžY¥®QEž~_’â;† †gõÚT››“¾r¿Ô3¾`ÈS—§(³Å Á©h�²·ô^]É 9¨›©nzØò7hœQTÞž#iç4Jæ(çóëÜ�1Á[–]Þsý IåŸî?­.UŒ â†'k‘sÊYºŸ{³-­¥ZdPèŸ�•��a#ðì^‹j±­1þËì—º'}ºŠ¥C rƒí°¬“ÚÊ…ˆÅˆAôÊÆÿªKzˆÁø<–Ój¨Û4LÜi)õù«eõ2w³p7鬫ÎÙóÞzÊ“s¡³W»j|æÝâöÙ�}�íðî§¼EZÞÓ10Œ0µ”qq:–ÑŠ ÜeæÚy…^Ök-߇ÚtŸ{Ë&æöp,åÑÒOVÌc]‡e•gxàbÃLZM¬ªEx?Ž\eYãíz3o†ãZ…™üN‰’ÉèØU›S �Í!³bE�µ4‡3AF^¦59Çœ‘çNÇ€a—Šˆ† {B-aÕr~~º¹ß ÿ®ØÞhLØQbŸ]Œ` ¤6J�(6R$_azD,F,fN¶De#²/ƒ¼¥%cŠl{Kº¸ÅM‡Ç÷Ürj®©RŒšyïÐÇ”ã¾oqÐ)åÁt§@~ŠÖ3ˆ‡ITæÕ˜4‰ Ö�ê.|Ÿh+bÆeAŰú¯`¯?2‰ÓnéÐã¸ÏéY�ãÑ¥28/b1âPKduã*^‡!¼ñɨóú ÷ƒv ýX!óf,.G@Êú{3€Z±}¥}J{ýæÞàº�mUµc*{Çà`w<ÈrttÏ¡ÉS#A"¼D¡Ó$×ðKëm§P›K_Ürb4HŒTˆŒšäÚ”²ÍYÑ]¾oY®Ð³ºIÔ�5–ÒÒ1¥ÓáJZ2ãBÜõ[v�š<3r+×(Ôª}ƒR�~‹ùz|®0ïJg1ëݬ³=CÇõe�³õ…®v2ßqÜ ' žÁŒ*¶Ó#£œ«±š}z›¼‘ï.ޓ޿vwLÀxÿ?ß¶å–¶HŒø’§¨m§¾°[¾/ÌRú7*î�¡ûwö§ØmÕ,ž‘ËЛӤ4mlI&·Xžã\ÔTd¾ŸœÏë�qäTÚT4°)UN“Ò+ÍÂR}™oêŠ[¯˜(•}ïáPí9ÙæŸ ¸ÿ Qí¨Î²“¸$¶8�& ) {£p]pKkº¸ÉÁ„˜Û&öš:Ó$F+”z£fÞ7ò)å¸ï›yh�r½l)+Uâæ×®Sw­)_wœ¿ñ/feB•–Ùzšž³Z½öÊjõÆÕ¬Þ ^ñ_Òð�òMÊròªÛ@Q7F²ÅæâEŒf ÿ~â­·¿X�¨æ†¢¯vÔc;¤I �gÖ÷Ån¸•’.èUŸfü°!¹ ºoP‚¢ª²¾CelGõÄ>“!�~ï.lÂ't;Ž”MÏ"s¿œ¢¾C·cK“0ákÜkèëŸÐül%æÊëW#œjc¶Ãil 7Üìõ²'a)d-�¥e7xN—¥5bÍRu†$¿‹kH•-/ᦅ…cÍ&ÑµØ `úÏís¤Û]Eu“ç­ {ßÐ,°uvtvÄý Tnжª���¥™£ÇÙŠÄKé;�"á÷-TØg—µ÷’ecO·ÍÅ Ib¶�eßš¶yà¦ð’?â&G盼îÐ8{ys¼Î>ÉW5º'¤–(¢žU7n¶‰›Z¿q¿Ô9¶Ûà”女I Ñ©r`;W{8¯®bO[À¢ÞUø„·È\Í€wwL÷êFâ5Ä­Zònª£jÑJÏ$l«BßÙÈ‘Tµ¥"ùUBO�n'"ûoУ(«Ý,¬»$»ÈËùõúÆÊ'˜À]f¶Ï*Ñ Rõ#ÖŠ}Òm¯¾a$‚0³Þu˜ÆçÂØFYSÚáÕ4u?ÆJ‹×3Ïw�7—«ýäÕ«n2ªÙî|éu©ˆÒ^ jyÇŠ:ÚÑ«Æñå›ù¹E’aò‚“’Ñ@Çg…gõYÕ‹­�¬/³^îš8hò髸j‡”ºQ’梛‘~?åÒíÒÊ?«ÿÌŸCUEB^\…¾.mÊ9sY±¿R>ÖÕ"ÜC\åjdƒÀ‡¢ä¢Ö§7‹øó{bvWÈ‹y1j^Ö·\½àò«)ÜçN­‚ìPû vðròŸ‡|ï;¹aÿy3ø”Â>ºei§y~ÀpÅÎÄ{;)©°ù϶cýSôK‹Ñ—Š0~o¸…4Š®ì ¶–”�)�öV�Èï¦Aô»‡ÆŽïÛ9ŽÔhLFÕBáÈ'”cy+1j`¡½ Ú£<´)*T3úå: ɹ>54…Z+VÕL§UÞhÀ�LÌ?ä—^ö|˜a1‹åµ›ëd¼âëm ×ˆMKmJNÑí3¯£iÞå»ñ–�²õã?+A±Â¢u1ÌŒûþm¬š +‰¨ º°nröŒ.¯ß†ÆLB¥ ¸ýpÙ9L_Ãá#êõݶÑÃsÄX+.+D f+ç‚EX©ZoTÏ{‡‡:è2¤tT™mkI—4:âÀÖa°DáÑMtè..�@TäÈ´ñDü¶ìñd)ýg=3Dk¼5ðÊñâ¬,d~9„nâ¹Çt}G¿¡Ú~g}í$‘Á²)$¤ ùšöߣþmÝ^ˆ\µˆ†°Þ$lîŽqQAr "„Ù~I£¦š¢9y0sØ])¢Ò´«Ó Ü£ñÁ£ÛÛˆBwMd-dåõ°ôýt³Iô@Þî­»8êFû»-Ó“‡î¶=@¥?„|÷¡ùÓ\À Ô1“!ƒ(eœ·³&;ß_ëÉàº.ƒ8?-¤Þþ3åOÑÒ6¨BF´KŸK‡£5—;“….W$à$Iòÿ€GÚáB‹Ãè¼{‹Ò]åjÏ5‘B±¶£æS<-Õ¾ÎjgNÒ鉸ÝI‡'MOL¦ó8i¢UÓ)"K¦ÁùÁ-r{•+�›ÇÍ_èÙO‚ªÊÊëÞßËN+  ŠûÝ\ùÔ›~¯…£|÷(øfQ¾Ew²¢ç£€·¾2HP]VQ÷E¤¦÷3L!Ó!Z?QV³*ðz°oã§ ='GþO)q|Á•DÏa$mÒpñ^.&M*ƒÒOóZª}Þ@Uv~k•§È_�“›,p¹b'QB»~u\ÖzuÆ?§å�Ú5ãNƒ çK9Ÿ€è!—ö-B ÞÏÃ"5Ùü4–ž$c½Šµã …E‘fQMVjjŒŠ$�‘H ^9‚"ýåg/1W^=¡Q³.cùòâ¬_"'³1]¼Qº¯nÞâØQVa\ØY^ƒ,ALîÝQ*:ÓÞs^ÕX?£p´ÉO¹m<{>Ã/kïÛ¶WŽÑfwÇÙlÑ� wiG¹¯Õ%Ûw‚ÏÔEÏ&Ñ­á m<ó %L{Jz4J~¦PÙçóT�Õ°³98âB .fÿëCûåÛ@S1 ³ë#ðBN¢ý'¡±×�šØÔ†÷OõúÄïpF~\j‰Qʵ’Î÷«˜Ì7ˆÇßÅg¾•ð ùoÙ¾“¶öÂSIyÂnÈL¼º±#€ld\¯Á¶WQOÔ Ûk ì:­Ñÿ9°�Ń÷.ߨz9;{¾¦N~uëÀת›Z„;o26ïJsûèm¢ÖÁæanÌ9~yN¥™b¿®+�‚êöË<¯Å|ƒ–uÝÒ<Ö�`¼OŸðB·bƒ³½pë°Ô²½óñ×K±ÿÔ¤çâo>HLío7ø 5òŒÞÜž‚OOì¯N@–›šÚâ¼ ïºrùŽnã?ÿ”‹»?žbm- ·(‹@ð^G.å—'×ý³~GVéh¸ z>‰ì“V9�¸0F^)§î_š!{š*½MÕWwu¾/P•““$ÌHNf$qW<}Ï|Wœþ¢FXê ™&`Uçˆ;OŒ¥p£:Ô<�|¾‡T.è“”j,1õ řƈ,óP·7�´šÅH;Ç”ÁgßÍõ�ë¤B¼{þBöÚ³lZ†¶lß|ÀZt0÷}æP웳8µ9Äyº7̨ê,Ï¡=Äý#?ÿZŒ™BNjuFCŒs‹j¥¡UtO©EÌoqŸn kõÐYž?$0†‚Ùº°òSŒ!!òÌ'fÜ!ú½dsßOÿ¤ÄVƒÉ\ãÎ�DWD–ÀÇÚŠðØð9§;õ# uLÝ£°mÉã¾ÐÙ«˜ë±µˆÀ‡ðN)%  ÿ=>ƒÇÍ“eŒ]BÆQN–¾ŸéµñZ Õ³Ý;«[[rQÚzKEóbŽï²2¹¼™¼DØ9úðÑgK®±¸¢LIs¨Ú‘æO»,s•%Ê“Ã�o)hßÿâu³È6„W…ÑáǨ@à±=2Öœ«Jè†Øeo®ùòbÌ�©²Å°²Ô*-š/ñÿb e9=úøñÐ ™6é!…ÝC=Øß2ð²Ü·¥Ökš�Ê+öaz§Zf¶¼ûßcóÄ¢{=m�ÆCrç ¯¤¿wçcÜÈßùs©î–ogÉä§„w°ãxçú0‡~pAëÓZÔyyyN픈b"Eœ…—ö½Y0?4²nPïƒ[^PgMÍ]UrÌ´]:Ù‘ó·n¹pþ=ã‰�ÿtRµ¬¤4 _…JË‚Š^GGòK9µÿîŠxUZ™Ùð´»oñ6È�—BŠ· ¼cȆ�º‡;ÒÎxIë{·³öû™{[hš7Z¶W’6ªúÛ,;úýN1²¬©¢vŽM5u^èPˆú7©rsãz3(&bäÙµ¥}Ë�ü±ÉuèËXW‰ô:AÚßÔ Nm â‹édÖ‡Á¢Ø1 k€½Ù1<ýà¶È¼­AÛ­67w¥þ®˜åo�|§ý®[Ê4p•wÓý4B—: 7F’‡:V’O¥ý]qÙëŠ`Ý*h@Øm÷yaü�ÙÁ~!$œôwÆyÕyã@È“ØVG8‡Å3h¸|PƒÀ¦( ģ膎«ÑÆœ{i Ñj¾ ŠiQËHšM¼`çuŽ!�(ƒ/€Æ¹ØPš½¼¢Ë¹ÐžÁXµd €sVM�8­,­ùp8<<Ð\-SW#�ØÑWPÖ‡¿Ù !Š0ënR…ØÏp×àhThˆŽSù¬¶ko.L¥ËÈf a†R bÔ “ »u�×’\4•6SÂ_×Êéù1Åm dΉ¸ ©Ì'w¦ý—Cî^vp×1’êI Z"´’ªE9-UóS)Q¦ ÑMÞ”öÚ4d+JÛ*ƒqN —ÄàowÐi_E¢Ó<µ‰Q ͨu�Ÿ’I÷RÌC= F›Hma·ÔaH’�%õäµ´ÿB÷_ðË»-Ú#='¨ø‹ºSiR*©dŒÃ*-håœQd-±ÃÆuÀÓ8*L;ˆùÎëŠã:JÒàµ{˜ÓšE–½á±¨ªTBŽ«Ìˆ9¢¦¢}ááX˜Dƒ~ãä_esï9¦ß:J2áwˆ\×ÁÏ}³±÷”qŒ/†µ±íc5¨J½”sÉûß«¼'ÁÖGN:.ŠëHÛ¡à�(/‡#2‹ &°Yr¿$çRcÛ¸Fþ—ÛC j‘ò!Åí˜Ç˜—Æ)3Ãi"�SfBe«€2øÝä„pA¶ÀTr«dø»ý”‡Ý”pÅÈ2ªúŒ�P‚™�x€·!­¤BÝí06þß“tì¸9;¸—þ×ãvLU±Ãæ£r\åmú¼ëÊIøƒþŸŽíF) ~¤ÍŽ\]¡�õ|Oá6Ζ9EOài Rr6ÜXxÕ’’|‰D͵\.#g^òÞÕ»2õXÛ.Û|:ê4t$;Ii-ŠÔ ¿Ì%ƒŸ£>£3]ØåÔX~cbõèÆË­ÕðúnñmN‰u°ØÜ$ ÓŸ&‹Ë‚ÍöÒ<Œ[á¬^�aY{’#_'GÌêM`b L¥°Y 1M�FƱI‹» Rƒè( ÆÝÉo‰MŠx49ÜÉ1›cÓÿÿ³åéÐÔgã�ò$dU4šªvܬ£làÍâÆ�!Ká= Q DÁtײ3}Ö¼{f‘4þa¦«3‰<‚SpÄ8•p"`ÑÏt~¡�ôU þà�Q–MV…ŽõS–§MŽ$(Fðx™Çï)è¶Å|À @wMI‘Ø:r{Iû žœ9ãÉ5Ï´QcHsŸ²µ¢ò4�XÄE�³Cž«DªÚ‡Ý`¨ª¢€N?p¦ùæá(ž¥+¹p` H¹’õ°Ï¢Ž1d,Jo�çXü eûÄ N¿‰�3OŒfc²ý1£%#ùùF&u<‘ýÚ ™AX²DŸÝ[ ­g{¶\+@ýk—ïJèÄéô¼JÊrx†X¥RY‚œXð›Ûö¬Á©€�"É& rãK•†»�ÁЀû9Kÿørtù«N‹4UŸ-ñÞ÷ý‚ö§Ü‘ùÊÝÈ®tÓ»FrÖÏ ÁÂûaîáý h+@+Î-Z ,zMÚ·mÇïäØy.ñºž’’“…ès§ öw€ HƧœÒ¬E4»­(õXI§j“ÎEiXY5ÚYêH3L³5 .åxª¤v…d«*‡|Ø�“dTLèK„-.$ýëyA¤�±($ØâN½¤±‡F–çrLè\©ÿñ~§ÑÄ®Ò4DÿïŠQJMtJG`…æ˜~³¸rï@Žº7håÞ3h¼?²’aµ2_é3ÃÊj4rR.¬¯ž³&*&Z×Ñëø¦ž‘Ñ_�ÂþO3Ѽ§ÏÖš4YýÆ\ke¨GÏÃ¥&ï€æV’3ÎßÀâÍÍç�Ǫ ”õU««Ó¹ï}ów]w|,ùѺ.úFŸŸflL´Ë ‹$õAèê]Õ”$tÆŠ[X垢ó¶Þ¼‰<½yéc?)¤ì_õ“±F¾ƒéá¨�æI2–uXby^»“z±€^u¹Dácê÷˜Ï¹6œ!ôÙv´·_U®ðÜ>�º^ÂrþJ}núx’ýâ<ß`žVÏÇ>‚§Ð[š"ÔãEË\b;—’ /8ã3¶÷oÔYVI™—ÅÄèªrx&µA{ŒÔV³Îl…³¾Q Ý ë^/3cÑKÆOŒnà$<¬í¶²ð1ðó1Ä�÷›$<ÊLð"(WN+3˜âï˜�-pƒ ŸUŠßØrf¢‚ŒòJnÇ£pCOØžâÂAŸ2TzC©µ™ÏF絫Y=E^ƒ‹ý}ó:ÑÜ2N€†'1îþá¿s^RñèÍ]§ùÕܶ»7xdÐÓÙ¾0qùEj¦dÊ’+Qä=ÅEî€V¹)jý/h‘,Ôìn`ŽV~‹ ß©Ìþj17kñÅý°ËuÏv+ˆ×øq?Œ>ójø°—âòÛÀ5ótM“ë¾ašÊáƒJ@|²†güé£ßöW8ZÀq?F‘'e raâl ÌîuH±>\¹ÃcXt 9Æö‰ª*-²;€WN;ïãuwÿØÖîtCÂ�º’Pz®ÎÿôJ§ ärÛºk$^ó]róe¦›Nï31熱êúfؼ­ÏwÞŸ£h+òõF[Ðîð>b„û"u¦BÊÁývîW³Àª{—]e=ê€Ú°­;CÕK·Hz¶ˆ[¤Ýô,K¨:ag²­3Ó+éò9ƒ8[Ìu²ø~“ñç0l»¯ßÐÁl…ãOT…#¶'K�\DytÑ4³©9¸ÂËáp! 5…T)<>9p’hê×À}q¹sáÀ ³µ®Ç dëkŸ4tg× æóÝÕÃÓ’½ÛÀï@“[ËÇÇÎúý¡œŽÁP—=Ì÷]·OØÌ¢6àž¶ÔÀŸòûoÉÙ°=‡x¡à Þ"™¸ÇAGÍ‘ú’¢RáÛ¼6‹is%ú–™Êi]ÉG)¬VõË ¢þA,#s@Ú\­‚æñ½¸ó 3z]݇Çú߇k¾¨)ªÂÜûSâÞ¼mÑIÚŸSÁ&«hš¬†:•OµzÍÄŽw¬Çì¯Ê¶JáM@S<·c–R¿ËŒ ýôS ‰ _-ÛdþüÓÙÉIéêjo» œ– [§ú€³bKÖj<­Óûîè"‚VnàWݾÛ$ÆÍ¨fד‰Ý‹3ˆÃ3ÔhiQ˜@qàWùK¯Ê§Sùo—B¨%·`ÔÚÐXð 7ÖZ›ÿË}ïñ xÁ ³É8nÜ1?i{ó}¶Kûͽ̽ôg;ox�¸'Ý›rÐ{Œ&‚®W+d=ĹBB7@[B!¡U0lw*ì­ððð‘ðGpøüyDC¤9Ê�0#ªýˆÄÄ]Ä’ŽÄ#Ó�fd²¹yyù…£n£Þ£I4ÍGÛÐèL;f'æ æfK`1XÖ€-¶cw`—qXÜ+¸ç¸x8ž�WâóðMø üqü[ø!D$�h€}ÀUàSà L ä!@x—¨AŒ%ŠˆÙÄZâ8q‘x•¤%=!‡�Iä ²�\C /�¯�ï’Ç( �²‰b¥TS({(ç)+”wTœŠ£ò©êMG+¡hs´3´[´a:NGÓ¹tÝKo¡ÏÒ—è×鯣±h|tr´)º8º7z.s$¶‘1Ä8Äx‰ñã+̤0Ì/X`ÚY;XÄYã.ÇÇÆ?I€&Ф ®„æ„­ 'ÞJP&¦$ö'%±ÉìÏ8º5ÇÃéàÌpNrÞLæ$ÇmH!û Ï´±Oy_ø0>�/à»øõü!þ>þ%þmþH*™ŠKMò·×ƒºN|ê§téô:‡��èÁëV=8þŒÖíu›2Ï›4Oanܺ{ë¹­ŸxäÆ#S#ga~‡õ4üç{¨ÈÀ`û…`¨_¨»öß ô#^ONÉ}¶T¼¶‹h¡š·Á† Ìñ¯(»j0à8? ZÝ£ÕÛ#Ðm½ôg=ç•Ä ²bZvÿT$ò%K|-—~g�w(ʾ¶6F ÿŽê¸ ¯ôí!'hlâïæ:à½�@‘†šsAr\¶H uÇ‹Œû™ÿ8l½¼?ÞMˆÂX<œÞ iØ¥®‰95$8�ˆæm¶Ídˆ¢$yš†qHU™Ê°H+!�Ñs¹h·_çƒÔ¶Íï,QvM[­K¯ ÓJ‹ÝŠÒž�Ž”Ð{’$Ùl¶  蜭 [Ô™�/©ZlöÌl4�Gè*Hä$m‰ÃÖ„-ŸŽ Ôï˜ùkßâ@ï²!‹z6¦9K9CóÝ®ô $ XË�…@dó&upþÀHnè ´rt˜=çàÌ–‡Mu:üзK)ÃtI<èÍXŸ¶"òÕ¯ßEJñ;¤^ÇÙÂÊ¥)’¤ù|}8%·¾\þk9å�çíGJ¿€œÃÉÜ<Åb˜½�¼ðKŸp º²…L¶`{ ³åÇŸžûA±q–º>c™L° �¶zJC‚‹ñŠÆR$_‰þD$Xº'Á-QÛFÄ0•òed¿0w…f˜æ†¸y׉ÿ‰Ž%+wÓZëâñ)óø·‡ó§öVïÿÈ}¸ü ã^|w™®8±:„ÒtùÞ‘.2Ôlõ´ýy{öÜcxÂ^üïñc³«s‰¢ãa޳,ˆ°Æ‡Ï†„Z´ut{û�ëDÚC4ò%XqÒƒÛñBÕá_/øŒz ?Vœéw ¦õg7C¯�¥1ÿi|6Ϙ{Ý ÎÛð脵Ì>pcšSL/"hʦ2�/ÖÖÌeËþkõýÔ2ÿ,÷ ×�œT¾bT”j5Çz3ÚIR£ £¶›L’‚–wî›hØ%wÜï‘YÎò�¹XRäGdxhn'¥�C¥ú®¬¿ØçÜõ1š¨jK÷Ûû=œîÒö(ý Ð�çWl.Åg¾Ð8"vÓˆóÒE ¾¿ñú¶B�ßÔ¼õˆ•MÓ×vÜÐÒ·º&±Ñ¦˜OZØy‰/ÔÌ PÒap9o)^"ˆ(IøJq�ú¡">Þ’wuVö‰ù$¶7ôB{cD’“q‹QÑuë%´PŽaHO$^•æ![õ(…mB´4N°‰cîJ�­#䘓KJH¨¥`ˆåøQ–¦‡ qÜ6æm²i¯L¬†DÂòŠ@ãý˜dÂ(«¢$¼õ#Ÿ>¦í ¶±½'ÎN0»Öè€åÛ5Ì#w.!ö=ß½”‡Uid(“BŒ„LXùP‘‚$Æ?KÁÐÎ~ÁáX_›F÷×OEïÂ-‚UÌtoÚCÜ8óBõ¬ ’]Òàý=´ì”´½ ÆhŒT8l˜/Ì]Â�ÑíÉÇ«ÄV>$KFB9Wä£S²x˜¦T;„LÜ£“2s¿Ü£?z�¼¨e+\:}휷Ž+œ¸½ÓÏûØSDŒ.Û¬×=,¸Ù¹‡F#Ïc‘1ÉŽ^•¿~gý›†pl¸�{Û§}m«˜—çñº4RЛ•xGK·+.¾KLX/j¾~ Rÿ��âö—vÛ_Y„NU›úY³Ëç´’hÛ“&d£éPº Q>x×òÑ%iǼ|˜&E< —xX௾>ŸŸV§°ƒpt#ÒfîïóãBüNKÙß6õŠa{¤ñê`Ø®Q0q1-F´ž0¾r;W›Z}WåS�V­�Û�/fK¨]¾…*5ä�æ|!mlV90ú%Ƚ5«æT uù"ø]Ùo¦ GzõZ­j9¶Î~öŠ[WÔ‚YÖ>ø`ï3ËaTOFn5þ(^‘æ^üPI�m^x¹Y.×ÇÓÆìñÔ?à¢b�qÀñÑ�ë O"$â•´€Çé¶nUß�l–æ“D«(ûÜßaÁj¨ù;ÄŠ¸å5÷‚IJ¤×ä¾gèÖŽõ³à�H4h2ƒ´ˆZÏ`úxJÜÙ°“3_3ßh–²ç}v˜#3Ûk&ƒóõ>’K ƒ!ßA•1»Š”øƒ+`*ƯA<&ÑõF¢%2Ýn³ñäDø Ò´ ™ Ùß�Á hhƒ ¡øV}Œkxfàúj”ódËCƒOü«ŽÌÅŠÍ^»Í9Pà‘ýjm¶Á¨ j'GvžìøiïÍ…+åã+Àx|gœ¯Þ ÊÈ#4B|HA�¯Õ@,Fÿ¬vå˜â%c –´�sÔ¥üÖùXãßÞya�Œ±Ü¶q& ü{×0ŽaÀ‘BõHj¡ú$ù$NAuÈù…`Z¹–ËdðéŵPº¢¶¢b@S\† ð¨¡×2Í/HŒ²…Ì’LNû$GÈÀ |<0e!¨…‘Ga–ºK:›r"ÚmZ"ÏæCC– , …C% »]"ÉnŒ3Ýt�¼-9áþ«йªë“…t!¾‰Qø#¯jheͨˆ£›oÞO”‚í;7ÑUz5«èîd§�±"ƒ0B²@@V‰A7ßp]šö2›:G<`'¡¥ÄÖZãõãБÉð’ò®Ò¬o‰ 6ùÕ\13îŠy>?¿©¡Á¶aðn÷ÞÞ£íMtÚ{Yë)‚6½ð™êú¼"jJ.±ÂËŠ~m‡ÍöÝäq˜"û ü°oW^c/‚é�ÿ9(Â]á?|÷Ôzú¢¢1O§÷Ô¢H)UYR4±B ªÑb1Ë`„ÝKÂ(J1øß‹yø¼ M OÉqCÌó¨BW bÛN�� ”a˜Üa�‘>V%Ô=ʯÌßIXͦF‚�æ]”`0W"™”`égŽÎ�æúS¥ƒ%‰z÷xœC¥`¹K�€HpÑ9Ô¸Å'åáø2=7^ë>›]¶Û\‰œ �j£féJ“ÑKç}èÔ•1ÁGqGv˜OwÐ!©ƒ“x_ ,èʉPó; #'erù\ù‹úMµº[b>]Ó™lÑb]-(ãÃÈâ Æ5S¥M/Lµzè£ `¬¢ÇÇKÍl€ÂÍ º~šA•JÒ=J‡ýa͹6-“`åOµt6Î�#oW5Ü76AI0ël�ßï]M©ˆøÃØRSü) /"ljÜì?>†”"b;“ Á¡‡.Úx¼]i¤Öm Ö«Óç55•®Ý»îf–Ju ðîif}=5Vùâ‹g‡o·«A"ÚËœ‚œZC°÷Ÿ" tp˜ÁZ}®èŠN(¡ ÿ n†§SXÍVN™(¡2އÒ1¹¶¤›§¬ÄŸÓî%>`sʨîloi3ˆÎƒíl¹ªºDl®¦Au½Ô­D]x—¥Á‰šìAP®X�¨ú 'ðw��êÎ@ð×6_ï+ˆÀ<HÝz{ Ía›�ýóéÎÁk™Ñ!Ã\Ø üžHšìÆoªÍ‡¬¹Ø3â\ÙLcÂéäCã±j}D}#G™Úl“Jâ-a.R~ª¨ð=¥<6=]*RÂô'Ì1ÎÍ­8$‚ö÷cTOIU³ÇÍOS»»ylÈ¢—åþ®"hõr˜m2±Û]5(;„"ƒú 1¡*óãá®îH8‹7?|ÞWÿî‡.iÞëa÷]ªíÁˆÍÇcœµèÓù¶†”ŒÂ] ——ŒÅèREI[·½ëì�áhTO¿}ÿ¬C„ò‹àÕ�!øŒÂŠ»}‡ùоò“4œ" 2¸g~^ço»£Ùn”uL:‰±©Ü ©ò|8Z ?ÝÄ[¦P‰GDÇT�‹¹ø«Z5-œ:F½LX�_U]‘š(+ÒU—&ü¡Ë“4GœõŽZ¡'c™<Ž€êi*ŽÞïQÞE%Ì4!²Uô ¼ù•­>'²' ¨'©Sú\œ1'µ~ÜJqf“#Û¬V³�îL�Ø`T4+ïôö�3ª”ʵ¹‹¿ùxl-1b-^쫨Y%õ‘QQL,A™Âb±i–~öíØ¼ üY…KaÙåãú&clkKÌ0×µL)��}pç¦-Ì…½]seUU‚zÍ «<†"0+•*uÒì´R_2 M™ždÊÕ@2öJ¬¡RÒ{Ç­®á®î¤äÄ´\1Éþ”ö*ùwo¥²/Ìi,6ÒID{TË3�VŠ»&,ôz"y°¯üçu:YI-ÎΟ9{¹4½íXŸA&žÂçH|J¦ŠtÝÊåg�r Bœæh„,"2ŠššÆw¸8‚Z¦‘›&Xjª´€“´•ÂŽReˆx)†Ù0qüËP_ô‡žFMo¸�ñ) åâ¹ÅÝ,‚æyIÊúhsU›y£wó½l®u “™ùå|.–´¯€DáJ½KО½Ã©7ºŽ³Yêßÿ›h¯úþvt®Ôè´êÍ,ädG®òѪU¾ýß,¨, ¶Å<^èS¨É 6&aG�ÝE§I:yÊÏL›]= ©^BD•^ 5v¨öÍ7*øRÏ·ý†Ì çƒ_ª³sÇNÆÙ�»DçcDrvfâÉyq—Ò‡"Ñ1‹¯,-î°sÓ¡z1š£i\‰0G»UUÄ›²øgÛ|qª´0ÒkO0élôÀZœü“�4´”¹4&- uXl…ÎêÍ9|ÞàD(lž'Ù!…¶º£•ƆÄåF9Ÿøm>—1Éþ̇žÎ{"C�¥©ª*=d³T�´ª‚p<€wk‰K–†~Õ6ÌðLÿdYÕ�Ò’XéÌ?ê‰NA§yZ–±¼€ŠVÏ_Š¿­ lPyÑêmCßLkÌM§ÙlõFר Á¬æ—3‰D*Å?,ò *•9[Àï 2ñäOíÒÊÍ G1#³—,¨ž–[nZÀ°M²šf8£]®›Ò'ɘä¡Vj•*¤ô'Í9üêÿïGÔ6†y×@b[b´C°°KQ·šZxNQöÕ gl¨ 渡´ž9Pæ£P ­PÛ>ÆÚæ_œS¥wè¦ìR|Êen,n#Û’Ë–pä¸e`Î)âµ¶ ³‹Qž! s0çs²s d¾‰5à×”ƒ—¥À×}ó^G�òWE8Ò½AŒ=Ÿ,³z1QV¤ÄRK‘B•Jf8‹ÜòÜž‡ÚÜÆ¿OÇ=ŒsÈëa[eaš­�õ}^ß ìP*€Í’xñ®¼Í!“’|ÚR(H¹‡­åà‰'šìDNм>5ÍÈ#ÛNg [JRuOï&Ù¯ù÷|Ÿv™}ªãÀf"'%ʹœ`Ù I JÞkÅT)‡)„‘¦É¤_ߪîV®U2Y�ÐKˆêï`2úfu*’6§[EL+UyAÆM…ÝãQÖO£Õî½Y ý±Júsª„Ó£­È%r˜=ö[^ã¸6¥ˆ�sï(V¼.4 ãª," u²i�ÍJÅØÈ¯ì]U1ôݱÉj 1$@ëF‰FÚ434“º_ðÒÒ)"LùáïÓtåòôŠBï�Q|oiÛßøTMI–¶ê ðÃ[Š•²ÒèQ¦Kz —I†�2^áäÏXÁŸ7ÿÒýöʷ¡à•}C“Mgߎ'Â=”’œ¢\Ž…•ÿÿåæ¡?Ÿ®‰-š=µGžN/í'N~Gº|È)-Ôa`'ŽIÞ¦Jž~ý[çAó×à_ån†}$ OÂ=’BÇ)é’(�{®å¤«àFpÚµÄÎíC_¾ü釿E4ýSß�ŒQ†…B»$ìî<¦0†ð¡û-úØ8¡sÎ9ÿ�ç ¹J§G# ·ô �LaO츺@('tÎ9ç©´�{z Ð 7kr}Õ|©µ;@,3X�hØo&«%˜}öÐüÊbÆÁ™]º©»nS¿åÖE熴ðP‚%øWvÿ´k[#q¤%òM, ‘ÛbÅ�‚ZkµšÕ\Vþ¤c{ÀÄ¡&¼LÎ ~9ŒOúÖFíj±±Ú.OI*uâP+�n¼$*�ÁQæÂ\³ò&‹£xƒx1ý�Óâªu¤/Qý84Õí(1¶‰kklˆÒÞñjóbï÷C»7òÆ´;’ä8N¤b>\ßÒÄÄŠ9?µyV¨N¯ Zy²•CÌ=z >øÿÚ«Ÿ~¡m=šm±;™>>[êôÕ.kÑŽ ¿çõ�ÓG®E\¬K’(¢0¤+kÿO=f†‹XSJˆãÂã!Ø]Ÿ »�œ=«TÓsBVׇñá©5’�0Ö•@Ñ—v]Ùv5Ic*ÄÈÆÒ¾»m¥®Ê—>ãþó´nKQÍiC¯ìgq¼¤a·ÍîÎ¥@¥‚Wø _]X˜~R’,jÊL²¦%5•5Îèç-T¢gTb]SýŽ‘³®éÙ¥TØím�]ІÁ/ÂbZà9ֽ̌›¤ðÃT‡ÿrÜçà2쩊®Í¾íØ ¦ÿ¹y;Èd0Én#žÝ„-Ÿó!§=ü:‚3[ Ë\IÓÆ„ àdƒG¢üqi„Þ¨†µ¶àÊÄ#>™º~8GêߊÅ0Y•½„°÷$¹S›û÷˜ßÉ¥o÷- “NÕØ.[ÓÙÞqm,ôr]åÖG€›íÞŒO…˱U‰e(š!¯µgô¦om{>¶ćܳ×�´Q6uSs×l ì$¸¹kºMضª&‹K£’-áœøgR°À5𔯖P¤U‰W}W~æ¤ß,íWÙ×ñ&ùZ3¢n›x£èÎv3‘ßeµ«'§nã¨ÞRÈžxŸÇ³é”4ÝÇ4ë�ϲόõì?²8*ôÎzÊJö*‹5å6¹ÌÊyw�ÅpúVf»í±8÷�쩪«Ä2�¤8Í}Á¬â Ô·kÔ…-všïð]7UVÏG§ñ·æç)ÊWp•Êè7nàþedž«<PŸÊÉË@{†ß2ô<MTZŠ`Ö{$¼KKóozö€Q@$wyôüCHð=ø‰SÑ)ÞõyÔK'Ã$áSΜ!x«PùCÊß­Æ÷¤LcŠ*ôûbú›¥$©D£[Qmí\Çiú Žž‚ê™,G¯î]pzý±�ïù8?<“ªnh�ÕQˆW-îˆúÈA´R ¬m¸<ôÂv–6ƒþ»RÙ³wn¶Rüè2E¡j>’Ÿ%¶k»¼sœ‚ìÑI®¨ÎÇ|z×ÈÎÅBþP@#€¤Ôì¯Tl%Ìz©^ÛõÄ·˜[BQZÚ#�O1qR¶çyHYuê‹ÕÎa7ñ2O°1 ĈCtŵñ4Ã!@þgøÛ£¨è?©^"G&Ž«‹Teóóá˼ÚÙœ]C;Ïnî¬PhQÚ€'"Á“§‘Ž>àµ)„˜È 78Þ³m;À–Ã,+þ%KÍÃK.LwJܯ£ vñCÀÈQpÜ(~Õ²ÒÐÀq˶ÆE®<á96 œ—¡oÁmåýÑJðj™=AØ";ï©|Þ>ü#ùíÃ#5UÕ·%Šw«éA¬ØÓñ°@•Ãz©·$ˆ›çìãø14)ôØï¦ÒØüê{ EÅ(¿ƒ…bé)€‘Џ d$TÚxä}¯�"4³_:Eå—›À*¢_ܼ!KõµDFI4�œ$ÌR-ÄŽ.MŸrÑq„¯yEÒJekâ‘h?ž�V–¤cÆ'AbLO )쉙ìW.Ɔâ\¢²,ÎáÛ0’õxSÿœäˆœr…Òd[%jåtg4ä÷zL—hìº'l¸Pl¼ÉÐJË<(-â_PóµåÀ™™ÙÔÿBX2®l�Ž*I�-Q�Œñ‡\MPš¼N_™ö°¡8÷§ný¤é:°“lÀœ|sV-²^_}°æ- R8“Ç LjÖZÇRr i ŸRgŒÓ¤ƒï‰tÅm£'l½oï#áÛ_ÿçw°ü(xT£Õ™¸±uº¶âJ+ûW�™±ƒ@I¦Ô?ó¯põ°¡8{�¨�_X™Ï=xïWkUÐNÖ7ó1{Ds×¶RlÀÌðÁÿÂÃ�ÁØ}”K ªKP3PXŒ–<Ø™oºý-QäŽËÞ\åö>š DKU)¶ÀLÞƒ¿áA|E¿Óßúý¢•9£ªŸúUuªÖ ?>³ã3ìRІ™*^�óh.ÚjÆñ¶Ûõÿ}t‡T¤}¦»¶ÿ¨LÇ›GH�ÞâwàvxÖüðlؤ�ø‹½È€™ î´É¡ÙN§ýœ�'êì@ uºÀCRO°˜H· ÇmÛ'9s¹ÀêtãZŠyÌÛÞáÎÅ»øÃt$^”R´J$¨Bó¬±Âuž@›LrYgl$;GÉ…PDɈ¹ÿmSI{ÊBN³Ü�Y=cÀ×&ݾlÎ�ìˆ@m—F¼§8 @çq¡Ç@¬*:Ê= 61Í›ñûvñÎ.ºYíA¤Ä¦?wî°¼$¡µ-¥Œ(çY×­;i*¶jØx³Õ×Á�jz�Ã]PH¯-¹_@\ý5HWR!Ë8,ÛÁfj <>ú |U2Íñ‹ë*Úâ’>;9îŸSCTòìqÁ†þÙ\�Oi%m`jªÀ²|ØIÁ- XˆOùø¸8¦ÝÖ.W?+•J%ÖJ’Ì{¹ð]ð.R Íý’”QŠÕ|!ó¨»8!h#:kðÅ^äáþ@L»\üY-…$…�g#ñíÕÜ8[¨ùkÃʇ:oѯ,ŠºñÛÚ·Ÿ[ojÿŒ•'CäŒF7)¬˜b‚îøž<¶Ûƹ«åH+ì‡Uoþ/��Gl+Ûªf®ð‡†¹ºkt(ùj•[Xto´;)¬é[­à…ñub@"eÐKm늑—¡<¿à‹™¥ÅX$< ˜–eV¦í7å•l}4Y-`$²ŸªØÉ€æ·»µ¤ ‚Ölá€jªi�OE,ëP'?J`ë“U+ÞJúŸ˜Ë÷ªZ£¡µ Â#·Û&³ÛÙû©*Ÿ·~Ôò®;ž×öyÓö:u+w7¯ªùÐv>UÌ-¯L¸!ç¹¾¥UUì”-¤¥¤“ÅùÙ™*&á§ Ä}na!~>nºÕK,›$?1}N=å�ª�ªi:|“R½[Åt»NÞjûy¥z½´öjµžl1Ö©ÈíÇM�jt—)»›õÓŽÉæSc ÈÈ¿CN]dÈ201‹8¢i€)\Õ·É…5îÕ¨Dœ;<è¾q8B\˦"¾XƒSà]¸Ùëo o+C!X˜�C Ç&ùpw §`wñs4þ5Õ� 6¯‹V`ö¦d&¢ …BÛ VÃC0Ct…ÛØÕHÆçã¼`ÝÙ™Ç+ùä€1í*‹s€Æj®2UÚVЏ<¸àD>Ôy¸*ÿwió´;¯ŒG&>ág¶Ö|ÿX€ÙÍàõ¨x3ºqS",þÇÖ‹Ðm”yÇ0!ðäò¿Q'ewvL‚im­ ŒH0+pÜrP,à˜-�bVYkD�(=�0‡>8Þ_j“ó–{˜Ô–â$¶àF �D¢!CF¦9ðx› ˜¼�õ8É6G¢xmÉ1aÂx kgRnbŠ·ÔÅä2È(tº f¼Ë?”^�9“óI˜Yþ p¹æ1i~1âÝ&¶-ñiã½í&è^‹›S.þ¤·ñ!·«ì.G´ uo§|ìî[_ÿ-[É?¾òÞâ3\$þ ö £ÛEž¹È³T¦Lü*…Ì Fó²(0;ˆóK0°&gÒZ#jq­”çg6g³™áñ ±@=È0ÆwÎŒ:8¶Ó¢¼ 2joPáoÏÑM:ÅÉ.òä¨kÿГ¡ÝÝy¶OçÛÌÕ¹ ôs,ðcÈ9fì€o áÝA.É�¯KLªéíªa˜¶Gø sž%Q¹Ž·;@` #× Ñnx´8{ìVœq^¸ bÒþÆÐ:>¾‰˜M:¦—L(�ÈéµVÛm4ç,úÒí¢¦ä²ëïRŠò-À6iPF=hWš”}ZÚf¬tLžJØ»ly˜AFá‹é½E&�ÂH­¯«VÃÜŒÃàF‡7vRžòan1Z°æŽ[[½Äd}n”3q²#C‚7¾@ð��·æèËAßå bÙ¬Ïÿ–ÄK˱×êîóåkx˜¾Ÿ—IHÅt|^6eŰ,S¹PO%•œÜÕ†¢åUG(iÙa{´ºR�µdR�¿‡‘Å3§ @gç½dœZ–CˆæÓÔ{Gë¢Út A¾$IšÌ•Y\ìŒÖ:f‚äˆÛUí·Ò—8e·‹[YèÛ ¡ h Þ¤ Á+’nëwßcè Qû}©d:¨nhh†–ú°INÒ ³gçbC ¡`´;öæV•Ä¢‹vÜ¡C—† z€¢²@ƒ:ò•ÜH½‡é®Ðû'Ï—7A&Yx÷L½ò.ƒ?ŠèŒí×|·“�”ã‘‚ÕPo?äº[™SOµoè&#�™ê±§ Ý„qœ¤Aáõ¦më ðkª´–,q€ðÀ#L'ÞäV·ÿ …ùE #°%‹»Î  ײ ÌN�B€ !ž: ÏË(ÄÂJ¾GPmÔ{+ÒÖ›§Á«oz­DX‰ö¹ˆh¬†o¬{Ä �ÚÌBÀ\9�:1©²a¢ðê>/Üèö+ô@ýe)¸¬‚)âRíZÆ5ô /;r«ÛÐytÃV;ªCú”€5‡9È1ÏÕ¸> †ÚN�ãb 5mÀ’_Á×öæájH@�4ÀY'Nè„�ex�õGeOû¢ÖÙãmÏq†ðièyø§3;‡å“äws×YW=ïN^ ]â}Ïñ—î¥Ä?�Ù9Éò_U8óo=ñ¿D�v‘;ä»ÃiuÞRvÌOþ&yMÊ~ûñ,žÞ§î*{Ÿ…6ü”{ÕS=ù%jìè’Õ;¦vÓc3×ê�¤ÈÆ…®ø×Ĺ+€&ûM£ N…e¼ìè’£~íºü 3ëœÓ�ÄÍúB÷�WU÷õxÏÇØÙ—”æ19;@Ï»Öj#cLÖ¹>ìßlý˜{¹Ú0×dHä¢yW!�×FçÓÚyVŽ™‡)ßE•þXºþæý¤%Vêszíå ê ä -C$3tóÜb-½zAV ¤ydà^++Ñ ·¯Fe~!Ãì’|øHI»w…8ì sKyÝmÊG+Ù+\ãögTâ5Z5{@’I ›*pK>´·Ð*ÊÂô÷„±¢™^8¢á'²XZìEÞ‚T« ·ñ|Œ›n¸ ?„Q÷b:EP߸í s™æ0>xš€épn��°/; ÔæÍ¿ƒÃ¦×’ÃJ´ÍíßHC4[ìê=€¨úA®Ð _óïÂ�‰1xrû¤N5½Qc¼Î�I’3ø]ƒ„Á:KR‹=y V…|Øš)¿m€zrÕæ.�“™‹Jâð™+4V¨‘ ÌÖq‚ÑÁÅÎöàrµÝÜ�ïNhHÉSY $�K(8÷ -–“¬EèÂo¨5ÞDõÑ}²ñIòI÷E'R´ˆÊ5³öž…ò’ ‡âS&Û›³Éµ`æsî³ ¸ô[ÿr�þ×§¨…¨çn®úC3­»4…8€þ�qc÷ø\(j ÓPóEìà$“”3,‰Ç·ôUÁ²ü5MTmƒd¥ô6êõÿø+œùÓI$ÿÚ®UÒJB*'y} n9Ë›úßÙhÈŒ)[ºîXºV³J¤2œÑ VR *†vØ´+ç1î FÇPØÇ´>y]½§¿¥ã-¡¶3|óу$wÕ%<>É¥EßÂ0Ž. ¹yu×–…@dÊïÕõ¹ƒñeìüçTh@Er—A%%:}„÷Ê¢�•§î¶rÍò²nQØœµhpE/?gÕU²>—½-­µ KðG?^‚‹i2#Z«trrêËù™ë¦Ý@Ö5`OÃb2êncX«õïß½zà´P ·êh‘Z¤ƒ&&‚o¶ÿpz%›oß9ÜN'Ñœã@tPò•LÙ¶kF&™߬*òœoÏ9sM«1lþ‘X~%yMõEOr±éT€ùSO×Ç;Źäç é}Á@пM’TîHðvIÅ«8Ðu˜äKŒã¦²9J`ùUñè•ŇÌÿšµhÓ¶²èVÑp4¦À×±„\’@‘„*·Œÿ;µo“~+¥sr §p·˜3ü²�jTÛõ<æÙ»1ÑÌ)^Ig`ÑÉq%® ý}Ëßå §¹ÿ½Ú ´ÿªÌÓ|yZæñ…ƒÀ“ÿŒK„lÈ’Üœ7&+ÜY£‘(§‡™TBv´ëp^k(7/Hè˜U(¡œ`èíÆ_ ¿…S4)×A½=)#µ…íÊsÌð^Ø…m8Ç”Š'ÿ—ðg,‰hú3%Bø¯ŸÈ‰Õ$ìQÈcc�|ä›$ø´ºs¨%u ð%0ëa_Ò4‰7–µ„2‘Œ !kf¢- .ˆX¨J/X˜:ö€ÒÙŒ¸Ÿ™³…>3"ªBÞiʃ�8SËrþe„DÁìh]  ¡=Õ}œ X³6“eâr–f¹ÚÈM±xßL˜–2Õ]�K™ÄÚ%ìB÷A¸x·=êiðF_ìûL·É#š ó¡)زf躀P˜¢ )f}æöl{Eßæw2�!"Æa|5+ºô¬Äê…¤MpÜô÷TÔ SÊÀà+H-i£�yU¤ÒüÝ §pg½êc�.¶^ž C2]?5Kàê_ºw»a‹”¶~TÜåk6«ÿtÊÍD?Ä¡š•¤Ìw=wXK\nëÏ(ý0I£¸ï�ÄlC)–åV$¡\«ue(^JŠQ‘ö-0>´d[†fÈ{k¹a*Y­buûÛñÚ_®ê–VÍí mËb€ÆJ}wcÚ&``qö»@¬NÁieЪ‰d~ÂNÌ�ôÆå2[}ðœSËK q§Óà#V8pßô� ÛÑ> ‰ž .²+ªŠƒÞSÁq¯«²bº eŸ{ëÕûXyç`ccï gñ´&µJ³k. O>H>v<ÖR~?ødî{Ÿ™ëÊ'$ݧœ û3Û_†Ã|u³ÈBu�Fn?8`øþƒô$)¯ 2 < EI¨þõOË(äâü%¢®*z)š¼x£­„žtl?f2Ù$ÎçëØ32 L+B¹; f+ydnÄ�¨”�eB– Y;—hì„‹ñNB0>¼°«&mu™v2}Ûj+TIÔEJ† ®�+3ít¹¿ZgÍ/k$ÿNö;QöâDÈ—oÒ™ ¥]çLWÇΆFçÏ‹éŽoŠ „žgAÀ¤ Ë[ ~!oE<£ÄÄGrh^ãv!r»ÔÕ“[äº�2Kø@HÛ¥dïþMÍjÛ±rV©¦#÷c¤ÚytÎÝ|Þrëý÷R�ÎR oN›¨›¾övmtÅfZ¢à¨ýc`ºgåBv=;ÚBŸô¸äo¡SÄàbÏYiýä}¬w´"ÿ º¼2§¢“–FÝVY¾ Ík¸("£GÂ�Lt 8iïì#ñaI¡ýBVé�‚¼Oôšéá�¦änwQbƒ«á§o�ˆFN,‰ž”Tn·Š¶òö?»{Ð"ñ“5P˜ L#Ü!¤‘cZ/¯²ÃåÆûíõ" l¡H 9Ü9] ˜¯ Ç (ÌÑxOÃmïA)qWÁ­Qì…˜›Mñ¬Wßp_)éaðÆwÈÀà }’ µÜ~4:Èn•ìY ;ÛÔö°‡©’c‹ÒŸÚ¯ÿù'úïNëºêÉv2wkœÞ‚V“s5TºâæÒÂv±�É ½[Š]!¼‹Ðˆ§Ñû¨—Y 䃩ØTœd…B RJùö1B­³ÊXu™ËÏÇ.âc*‘ƒ ‰ÞW¾CÛ`K o¥c̳[Žã$>ØbGi¯–÷„ûd6—[@<HÈ©LEÕqËQw£âÀú‰þ„BM”· dT ß(%�ò)…ªˆz4¦–³ÿcšÞ&žß{mM Ì ý¨Iå�¿œgÕ¹pûkÛ’•ʳlÌÑ$ "¨kddÑÚ4}ëˆkâ –RÝÉí®û)w¦ñÜ»Hº ‡^yã•ѼòÜNʉüôII ß'³víFË Š'¡_ý¿nÂ^ c}Q÷µëÝvݹǹï8ѳ!vÔi§u<�ûðyzÃ} Í™§�:–›{çDt„Ÿr² k*Ó²K@ÿ¹Û3 Í0§7â�‰ŒâàÂy· uu��Í5á#Áò†{OSa˜ŠªboeÅúd¹¯B1KlüÇÚv ;DQ^Fhýƒá¹Ýu»ÒH{0…¢Øðpú¹º¸"< ­ðKÎôºD¥¯Ï‰Œ»ûPiGêØGc¡mݸQŸÈËŒ"ãpUšÁÐüfÁGZ9�NûýV#íL˜&˜þ~ÍW©`Ýå0}ìä›'úú; 4K—ŒÏ ŒðÛ7š; å§ß]0 œs¥Ð:a›2;Ô:ªYwË<$¨´ãE#(·56D@¨ÁOBCOÜ÷>&Fx<ŠþÄŠ±8Cñ:³?‰¾¸_0Æ$«’.HÌe™—4üïé#--ú˜ dù#páãûU™ÇbI`^gšZ^cY«­=?¹Ó¡ïòü»·‡ùvÀ²}†³˜ *3pÏàOVÇjë%JH’M ºfˆ¤%É)ëÍn@‚EØëøA×ô–@¤@:]FâÄ—q#P ¤• (ª}êG£ý\èÐ÷Û­Õ¶Å*B[.Ö¾m©8áC±H$èu Cþfµ¾ÝrX×HfeyƷК�œ9õ_|*ØœËZÀŒ·¨Q©ý[¡X¼^dSÿ™ìS"8Î:¤»?´‡a%ü�Û� f\ØÆít2ý dJŒ  èÒt°ÃôÅG,�›CÁ.Ð2ÎïZ墴ü]ÿ¼B¾@ÝS/ºḩôM$K%u øÜìr>b™ƒùèªÛ°iÇAîßÝ›ñ‰½,èB!›çªÒ•À£ô/Þ¶•ŠnIªtŒ%—@+䆊hšQb˜×UYµ0æN2èa(J„SH臎ÏÈE²&gc¶.C‘E`GãLZŠB� Ъ¥6¹‰YìqÄäíLh¤±úº‘daâuX“(˜–ÒæôãŠÛl 7·|�Œ]�Å®¹ñz;Sµ¾Êª=[ePÒ•˜ßÓ7|;bà=b‰G_ü±É£SæíNçAæáÏ~F=íijB ›ÂyšÑÞãÔÏ| { ÎDrj2Šqw?+xâ ×ygÚ}¿”]˜b\î3Cçó9œ¯[\ɰÃã’)aeòR±0Šjª­›£å%+ŒXÍÄQ=÷b`�À0¡ùÿotÎÃé+ /á>½Íîç”åH‚ÓÌ· Ãí �ÈvoyûÏᳺ”ã8�å*~´ånçäß§Eˤzr ìž…)ÞöîËHê—·W?‡’,åUžç"îb©Ò ‚·sòg8îæšà*z&Œñ³ýåÀxF| ½E•TvÊ­Ž±û&FvÍx‡7Ãäí¤<ˆy¦#FíÑ3$ª©3¦æòÅSŸ¶fDÆiˆkIo)þrE{Qzs ÕÃd…Pr%ŠL×ð¼’Zm¬š ‡Î4 ÃJ¦§ÄGþ�²ÿ14ÃÅ—Á !N¬¢F_Kñ×ìì6Š”ûˆýょ×%ÆãéÈzqe5�C|HÑ&dâìãëFbMsEÉ’ÂâÒÈÑ?u3»Š–pÚÔñO�‰u qªÄà_h)Φ&)wD_YCu$¯x˜¹¤&=ž&|í°N¿ÐCjIxî3^ˆ–6qÁ Y¾¬é¿R©ÚóåÈið²Åz ñÏŒ£'ô:I2'H†ß¢¨yqZ ƶÜ8�¤ÛÔšAH„—™r–guüíCD뀉s “”¢Zí<»Õ÷œbTúM–MÓ[KªfÍ%Ÿ?Lº ]¾ïp_Óg‚Už¯\ ¾VdÆÒêüJ±k^*ŒIF¶wÖ.™5-/®¾�¡Ør€�ú¢]¦Õb’›™@ÆT.)¦<¢�ÀKSi:ÊÕ¨Qƒñ¥0&äWóN"Ý»Z„ ʶÝúy|Ù…îÌI³ BÏQ‡à v6Ö�"@qg�µÆóãƒRFÜ•JæÖMI J»cˆz£”YŸ�Éæ e¤'ÌEJ Òð$>ä}W”íj®Þh’iDÓ§’a zã.¤7¬7eµ?8³¶ÌBZ€Åp…6àd Áõ¸_Õ¹foAI;è Qð¶Ô�#]8éD:‹yq]‘ F´°ÒgG¿f ‚±+š°P0Z¶^�9,ÿœû‚<(®p¬º�N‹;iâ“yÞ7+´`Ú±d K3�0J�{Xaͬ§,|§8¶Ò®êýÏéÖ ‚P:&BªžWg‘ëžöAEéÛŸ ôú3á€áºá\\áÔÛá�ý¸Šü®xµ,�¦9ÝSP2­.}/ÆËêW·ÅG3ÓHä@,Aà*dˆ¥oDª (t ’êø]'©‹±aÞñÐ|¼…Q„±Ü)Q�N¡�‚p–t–ð¦Cb›ã*â4õ@9Ål­röÍÓànƒMÖA*N€Õ|È1e$¯ êʹ\$@m¾ ä7d <̤�I¨b;ËÅHïr(lal«6^» ù‡Ä™v/s8'�ç�ĕȄ—�?àø,•SÞÁqÌÆŸ¥+]Û–Ë4×ÌQˆ¨Hߊ²ºÍ7Y#q�g/`è­9•Öçb¥µ–0ô”×ýÂLŒ² àF—»6Ͼ™Ë5H•Â=Ô4l 0å_šÅ›tt&ƒ:Z­Z­)ç}4só0xŒùº fw·4]ýé g Q“¯JP+'5*“ÍsæÃz8C“a¦êïmÆKÂ&FõòSìÜã/¬Ú²¡Ma¯ºfîêÛÏ?|õ½ÛPŒÃµü‹áºV-dyø¸ýJÖCv]õ¦ðâ‹ßÓ1U¿y½7vÙçl¿óy!Ú"Ü„:G ã á¥>P:CðàΓ•W† ¤º} dy?vsãíÿoMiQó�(þ õ¬7Ctä,fcIÇëüŠä÷¶­F„cÌ{N¶d+ß`“Ý8]ˆ ±˜'›?í=°Û&½ÞÕ‡qv3�_††eŠþÙÕÖlqA8�èDј{L†ÚOÀqb�qmçáâ”—*2]7Ú² :±Y(´†Ž0Ù¿`h"þµM‰êu ±˜´–ÉÄ73ãe܉“ á�¼¥™šÅÃwçÒ¡ü°Ùž¼3:ŠÃTCFæ¾@Ú‰Õm[U;ðe¦pd²È^¬m>íMâ+d[srÞM;_­®½Í-ÿM.�e®‰èÚ6w“øe˜œ“\Û´oúê¿ÈH9�¹Ôò�ìhAîöÓhaXFá ÂÇeÝ0Æ ‘7¬u]¢o¹Üܱµf�–mvtÅØ› “€u<*Ëš†`ÆÚ©8åm8ããRÛ–ÍeX�Uùó’�Tï¶Û®"Ç wç§·×çÿƒmÝ…'G/<ûOíÙs÷c%fŒ¡j*™õo§æÃà äòóÆýœûn÷L­�Ié-<¾GfG"›õ¯õ6åì4ÌL&J‰kß™ddOŽ¢N(¡»¿ÿ��ÀÖ²ù Š(‘!ä±…I–Ô©)Ú.¦%“¤[ö�ùêWÍU?ÙXø£È<ܘÆ¿m$n ¡yOp\SȈ/`Cbã%+†`ðZŽté-�ÀLfÁÃ�±+ûú“§µRÖ$©9¦¼À� )Q ¦VèN®B”±ƒ/ 0„·BØöN’$¬ j{wNJ‚r�C$A(-|�+1pPo%r¦5h² h¿>2�ÖìÉ r%62IgÐL” yÖF':AÏ'ž±mWËpĤAlá*Ñ‚a€s ïÂôý®ßO%¸ÒSÄRWy—U°1¨5BòWÛÀ²©†¶$’¹Iзøvï�‹Ú »üG¶¡<éYÚœö¾údÁá�F�ø®6t §Ãä ‚@æé$Mùì±Â5®˜ÚËçíL-Z_øæÊ&†uM…õ ‰Úû‚:ðäÒ_1©Ï³ÉÛ$)d,«™¬ÅJ£�Œü΃6áY’É�€PE)�‰ÍÝ“¤·®ËR³kvLi�þAë‘=…þÂÕGkÌþ™Ñ“‰üe%¼N�Œ:c¡ñX[Ù=<#B¿a#ôܲz?2œ�øÓ_9ò°lÀ ¶¬ß—žO³^ئ+Þ¤¡0‹uAa+Â8ÞsŽð& �•¦1Àk…‘26æHË�”DöéUŒ‘z“{±ôh~œ(¼?~õ ã+[r~«tx´Õ.µ¥D|í'­lãÈß ˆrtøg•ðoj4£7ݬ€ ÚG­ñ|ËgÕLé'{�ž‚¶ì&ÛqRKkÄÐEE%/¯p YmÜ… ÕRVyTVñöœ*Åi*ä �Øfp5Ï]É£h DH›¾·¿:me¿ðݶæÁ!¦xòèSp4UzˆnʆQOÉpn‰�ÀI$“D¡°c$5¹ÅÙ‚Ôã ÌØ £(\‚§�v$¢À "Ñ€.4Á*˜´Àδ•üy?FWÅ1&`¡LŘAMs9l°Å¥YˆÐýåH ›@ôïÞŠkîš"6ÏXÚ!ÆÙ' ýµ°sbÕ`î—�†®^uÐ×Üħ~V¡>8'/=¶ÜÓ/Œ7p:;»½q¢g˜›$!EM’±‰G¥Œ££ƒ“¯EÈã#ÅJ÷ïkqœÆ°FGËõŸ\«þìB3û >œ76û±u¼k«¼2>}/Å¿š"ó›±S‹z}£•eï è3ŦqÔÍ÷÷X=Z¿¾?6™ý΀±’æ¯-–À+Z!)�+öTóݶ•Ù&Ir”J7 – «5¤j@UÆùÈç»Íà 0ü@õ-}¯Ý\¼+£5üõ$„n¢«¥�ϺHì¥ ÑcW�)èÚ2^§‰ó&’:²ëÕ$Ïž?¯…¶\ ­©9HÍÉ  )‘Áæ8c2b¢>à€º0y¥6”L�5«Ý«r^ªt!TDä•Û˜©˜WªÖ,©W¬²T¤j(x>© ¯ÔB�Ðí…|zä±—Ë:3Žž­}{ÎÌ쇗õ²‚㸒ù ÙË­¸"°]+Ózõ,WQ0_sÀtóŒ÷Dî×+ù–è.ÅÓžajN¦z/©ö�+Ê#/Ç€ü �µ³¢ Ýévàó¨79’ÈD—¬ÅþÈœd‡$8éN )H b€xVßíÇ",â €É8z…›ÄÆð® !ˆ^t¼h.@¥P þ@N$Îu*^ö/�Àãž' ð/²Eb¸í/ññ&ëÇ\âš7ëâ�ºÑWè;‘o §EœÉ[¼~£¶.ß(­åˆèjõÕúJ}ÿá´¸÷Ä[ñ,ü/ºXHÿFe�¿‘[Wúr}'ô6wšD±ÈÛ[E<‘¸ÓL37_LÙo=cüʼ¼vž²ã•ЕžÙˆøË}ûó'4t:ìÏ6ÉE¢d~`J!u>…™i��2f|áà›Ý´<1h±òÍ^,<9sÅ�¯ì£@â± V_êgPK ÒV1]ëE(pepeTimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-symbols-italic.woff2UT ëÆ«jëÆ«jux è‡wOF2ep«°d÷(ƒr?HVARƒp`?STAT� '�+‚8 Ÿ/V Ø,Íj �v0�²,6$ƒV ‰…V †è£5c›Å“»U]\yµ4³þ9£‘1l8§´²ÿÿŒãd a6µÔúOr¦Ê(q•5j^îT7y‰Œ„צ\¢½1ÏSû¼ü×|ž7ÐÝ£Õᨪ>›&-¶aJ²pá% zÆ >HQâA^™�<•�'£~¯(KÃØ¤¦lTò”ÂTô%±‚y‰„Azãa']¬`‘ãuË õÁ3ÿ¼ÚRMÉ7 –?ó}°‹ÝáVôîqg`¤!¡‚œîäˆH�þÿçÔîûúKr¬¸.Ú�Õ£‘ @š:²…h]f§e 0y�¶ËYì�4ônÖOð „$ˆ�¤ÐB©+zbþJéµ/ßsÙ[ñÖ€¹&)‚1j#'0²Ù, ¶†%‘£ÂJ*­¸Ð õ"Ëûó*xÜÖ¿‘ÚWÏûµ1ªÚT#ò¢ò{üÃÜè¿9TD0d‹1^¸ÒÊ  m¦x/ˆj&Í;¡ŒxøC½÷30qtÚÔݹÐ+XŠuN’ò<¹VýtgÔ2*ba&u'¬ž÷ï4Pš™äB €}TƯ‡üE˜k« ”WätO7è€c‘5ÃCµ_™»ÀaP1&ÏEÙ�Óµ[ω 1É'�€¤²ÿÿ\½÷AP^'3ÚÌR–²…ù¥”бQ=Ï×è®®pDº_}Ý·õyj³ú-¦´LÌHʱ2L‹ÂBa’ !™~ôÌ®Ÿ÷j.7qK æõ_ÒNïS:.|•—ug¼‰‡ÌŽž†U’ÆMèfñ¢×@6²½ÚKø7÷p³>†ÿM«7¦íšy»ê¿wŸb’I×Ì®3ÞÔh‚[ xLªþ«©Þ¹Õs&LùÄ)ynõ$×BžSHUxØRç?Ûò˜J�i&Ú²½Vc'\¦lSé-/¼§ÇÖ÷ß@@ø÷¦¦íÿ»üÐ’§@(EÐÆp¦SQºÎÎEkýþ÷÷s÷ÿÝ p„¨ŽTH…ÅE—‚@R™¶Bâ¸ó\å�º½0)ÞŒï2Ï®r¨ä*¥*�ÇMåRî¤Î­‹îšÒ¡sÑÉ]åÿ3µµó�otD›¸ä!A3GQ]ÓRt¼>)¾·'ölÂZ¤µI+“Fº4 Ä’¢¢é¯»êke?þå‘.­}�ELeªhñc?-C‰¥Åd]C 3º×þnsý?µa/6Þ�)*" ŽºÑý5A#œJþ@ËWÂa¶e?{�¼¼9þw['+1G9Ô*t½€Ž±8‡¡e:pìDÎÑÏI "¥›¡êÚfaàÅýÐF<çå® VgG÷íÀ¥«}cÛ/]� ï‹Þ-؈¨&_ãm„.sL=ƒ¿i��»ã ï´åÑ]»w‚¹ÜWqwë–л»Gv qÿàÎ}¨>ü*¡ôI�Á�ÓÛä¨À Ã×G(Þf×m+…XpLà bsu¹UˆpDQ‚:‚RV»©Lq�¨µFYµD¯ƒÚ€4—Q=váÏð�ñç E`a�ÿì ‰þ¶-¤f‚o„ $‰…‰fòbŠ�g|8 ߨ‘ /‘Ûç=9”+éßKžŠ¹Îz$b8Žã¢ÂS7w$÷_˜ÝD-Ýfô?nz‡ún½÷mÊG>B¶?5Ë¿~[ygÖøÝ_päç_�óÛƒ0ýõ¿Áÿ;ŽÿËQ>ËÂ2„’{…ŸÞ\ý™ðåú�ŸlßóóÝG~³·ýÛ»³Ñhé¯ëoüÛ³ýœk–ÖÖf,ýóÍö¿·øÏÔøœ7fœZ5¬ãÛ:à<+ŽÞ¢ ¾-%•VÎæÿ•HLYüS㯎³#¼pÒ²~³°; ¼§Å(Ϻ^|GÂ…?ãzqéüÇÞtç¹èö¢.)Bh—$Κñ£®´ÕÑ8€½Q®ùÏ(ÿ—«è>ü¯_AAÛ6J¥B•G"è7�åðè�"�áðªx cÙob;&â`(#ƒ+—Â@GÐE Ån6·ØË%éñóKªÆ¾øt°�`”ò�Éß/HÊ ”9­«æ�Œ¨—»L¡á"_B8—˜Á9nÞ` 4ÁŠˆòÅ“Uàq¦•a0sšØW蚇¤S;¢¿Ôë÷ôÿõËúº/NíiÌ ¡Ñòõ* Þx¨6õPnñÌ8¼Au @ ìâ~­û’0QJLž¾çhyU~À!×WVôÚüGC�M¢8®ÇY"_O£Ôl›>ÜuÑrøÃ"5>:).ò­‹á>)€úN%=;‹¸WßR"6~ê'¬îÛÊ£Ù˜Vnª^åS.�•}ñÉè˜8x]1HLôvˆ-¤"ûW±õZÿèÅîKÍÈ©ÁO¾Mÿóô`ÓD¤zÀµ &§cä«©HÔ[�…ÕäsÂc.ñŽÛo»õâ…óçΞ/�¼à`·ßëvv¶Û­f£^«VÊ¥bAËoå²™tJM*‰x, ‡‚¿Ïë–%Qà]N‡ÝÆ�ƒ3ë‹)x^þ[Íðnoj~={§ªexwz~=ÿ¶‘�ìÚ Á½°úèÒ–{Jk§X�#àvy¸-te$ÕrB‘]ð!•?ÐÑ]T–J4鼎yÙ%<¿Á2>@­ñ“}µÎD¸¾àöÉ´K0!Ø¥QWEº,-f¾øh3Ž1lX³íÉ&DúŒk¿ÛÅô}å±X†’�ÔzgúŽ� •…9ÔwûÂQ0û ®–[o_NÈÃ!‚dsûÜÊŒ2 ±ŠÇ/-ï¿ d†¥É¹Î0Ž>^£6E‹ÞqTtóKÇT6(îû’g¿2b¿ãâ^/ Su^)f_Ö”7]*JÅ©äòÔ’ÍoI„­ª G�ÐŃ‹âÐ"f]<ãbÞ¥t•È,¬(Æz�`„òÒýˆ^y¶­)Ñ�p'ÝeÉH·â«‰|’ð¢NQÊ¡’zYy —î–åUbâ^¸IR¢cÁäJ,6½GVú-³•ý¦#JɈVåNø)õ2²VÃ&­OE0;ƒhÄ;ů‘ ˆFà^Y²µ^iw÷ÜÞ5°¬£$Ë=Å.&²§Œ†±{$™‹ÊÎØvÃXs¼s#+r±B Ønúãµ nßÅÁg±sKÆÒ×M©µ ‡IS„`GâvÞŸmnÏÈ$½lY½hÖöÂ�̪HMÒøŠK.©ö #Ü&‚{nªï̸À­�ÛiqlÒÚÕr¥NeD«ÙkÔ�.¢{fÎïm‚(ATÓØˆ:ÁÛhO+Ö’¾ÐªÞsÄVI^Ù•_ÕJǪœ©Öp nqâ¸M@¿üª"_WVôQ^¢®lt·¤@� ü¸Sâw´]ÙkÔóe{ŒÎLI6Þ»Ól˜L¤<·o`dN¹�qE_Ð}>äÅÎ*Õ¤‘ËnV°[ ™K«©ëÌÅGûœ1ÍédQζ+^#ÆÚ!jhóRÞ‚Î*Êæ¡ÏƒÛ‹ ùUºƒÆ6…Îdï/ 4Lb¼ÂGV·PKˆß¥ÒH˜˜¤dwô6’m+íÀ�“±6ÝÐØò(ì2ÕÁtº.yVƒÙM ¡ÔNÞÝ…/ O« ‹%êÂ)×9oKé¼²-‚t]“<5Ù³¬b�uIÛézøÞ>€dXA™üD4‡ Ñ�ä|Á²i�áЃ9$Ê2t”ãˆf€QU•¬]–:Ð#(m$1 «@è÷¢½ ñqÂjé~D‘1¼Îmn}ÖTP“ºÙ *Èà¹U…´ˆÍhÙ~+;Mì·&(ì6{gS:-Ú³m"ÑÚ›lòÒ4¼H�ÕÍæ�Š«ˆö�7ž{y“Šr”À¼,—oäA9W% Œ¤ =(«ªq޶´WuAŠ·Ë@?ó¤Ü”Avð56È‘àì­=8ÀÇ%¬"ºþU‰Û½�q/„ÚC¯—ÜÀ‡�Jáôœß}Ï@'à-.@lTk‹�…õìŠkîMÔ¿5ÍV¡”¥ÂX5ë]¾3>ØUe¹ ¼–Y’eøgŒ�%pÛfš—h(…!3W±;Ÿlê®Å4‹…¼¾YqW.à¼j9Þæ¤N7ArèNÇB�€äM3,8ä Üù4fMY1eÍWó¾}n–$Úf�•Pä·Zu üNçê¦ùÒrö¼†–§Ns‘Ö'©Â­� ZoHîW&EÓ;ùé?…”©�¯:K‹õFl‘WšltUV-è'[/}ÒÚdul¹,GyPj£œ» ËÓ˲ê¡Ò¼ÀS›aÁÌ- @r¸‚8öRŠ‘˜cÝ Ž¿5\ÉI>Jñ '3Xí/‡ˆX„µFÐ_�ÆBˆBIyr€ƒ‰0!xÌLìTÀa»ö89¥éO‡ø±€@ÕÅD8³˜$o7Ã̦«q™»~Òúä¤àëØ�eBeJmŒê¯ö†¦–ÕE„Smë;±ðiXª&[f›¡±7‡Gy¾¥–QŸÐûUžu¥”ãjå³R‹ÑÆŒj¹å­1™ïÝRyçjiýö&ý…܈uWÁ¯b£Q.êìÑmgnzLFó~œÇÒÑ(Ð>1ìÕ:üùàò¹Îí8íÔè…ÀGõ~âôUj»iÈ4•ÜB³£áM$C<…\+ÖS#_·C$/@Úá!7¸D,ïE“_³ùNÓMnÞh<é®ab®7«»¹Ë?)ï}µ“a´ Ÿÿí—–óãB£ßyx/ =¦·vÞÑ÷ï·ú¼�¦]ÒËa´t!ÿílÖLý t¬ NN ÙÁ-ÄèÉáÚÖGéŠyzAµ.“ ðrÁWƒÈ3Tà27JU4”?o³L.G¬Ç‚Z­”Õ1ËÛP ¿ÍuTöÃYþÄ \zì哽Ÿ¦ö€ÇöJ¥ïUW†ûz GWT°¥X°¸¿"0Rÿ‰ï YgI²`fAV­¨–Ò°~ðQpäR›¡Óœ?¹[È66šcª÷Ь–=akoê[±M'Yy/àì ThS‚pœ­3ß÷OçÜMf­ÈVï·û}Û\­m›I †ÕÛº”§Æ#™ñ6ª•ËÈó™´i�M]¥üóÙÈútF¾ë÷Ò²}øoîåÚ0Kq÷$Þ·ž%Ï/ï)Û«[®é»¹óÛ9!7¦�ã¢i2ØÊðì—Pø“aÏ”¦6JTŸùhá{ÞÈ‹‰ÖÿÔ="¹ÍNoÍ‚BÓ­¦`³T•¦ÝàLådϦ"R;E ȧY'³cÚv0¸˜¡»èf"{9É¥ü¼=÷æ'`§g¸6V7Ë\wO’¯–·ùr¡Äå²G 2Ë�Ú@ÝY3ÆýÉO×&°ز)޾o0¥•‰-Çpï‡b¨™hi.%•¶pâº.›8³rËuw¾¾¼:/|«Ûc™¡ù é4fJÊ&|,8­Kæ)¥$TÔuô4&j¤{–UÆfÖ4»ßæ]õزöΚ–¶Nàyo¸Uî»ÒÍ™þ·=^_ÓñYìÆ¦ã½h‘ØÜÞϦ™CF…0oØßýqãÁk"£ W({XfU:ùnïNMs²Þj)inž'Læv|¼ïþjç†ùîÞÂöIMøø÷;ë°khÒ "«Š'ß{9è¿\Òq¹Ë{9,Ê“®ä¦DúË}›ÁîÍ’À湂)·¨ö¿Vûè’Í^oqUL›oÀFÏCœgB�÷çl{@Ÿ¶oüû0—üYýg²çûOoŠÌÒ`ƒÐ•¿fö¦ýÑô•ò^ÿì:›7е“%ý˜­Â{ñ¯ªŽ«ÎëÐ’¬¿ZrtOº¬½3eŸû0¥#Å<ÿá£`e;Åw/c 0{%>,uôíjXá+î ËìNC½¢ªR­\Ô}^‡{‘Å›V¶KîÝãܘ®.t!åpÜ: íF5ë,úr½‘Ó“'¤š1\œ£¿NÑŸ RFr[è�N²¼]'“ŸCЪ(NNÃËÌÁöy:gB®-.™Àppæ\/¿ñl—ÿ>Ì#0§SfËY/>u÷å/ÀÓ_á™�/¿¡{cHÐSÐÑ—B—8öWÒ�m±úÌëgq°Õ*±áXu³ª¨—Ü9;Ñ7Q1ØÊgÖNƒïï¼Êî«soI«mò†G>¥ï8ך%Ï̳R¾s½L§®N²6ó4ÊÈÚôñ$æ¾êÞ�Ý+¡%o†6ëi]¤#—žØÐ7>ÌÝV˜‡©n4Ó•?Ckk Xè]^sªãlyru¢¾’%(¯s2_M�êJì.æ”~ ]V æT&ÙÜ¶Û ÃÐùVr›mõŽØÝsNHšd›ä‡NiÅ9¸\½º¶Wd1Þ|Ïz(¨$£}8L±I!ÀCå©ÇØÂn•yÔûÝK²Ì^6ÚB9tJ’­¶ÉH–JÝI @cGlÓ1†„UÏáº&dïCfÃc”DwÎr‚ÏXñ æ¸Ã>͉‰{Yÿ7eÊ~„¨}�{U‡³´ÏÝĹKÅÒ$øËQŒRVIg3�DóÁÙfØËcîÛKã®lGÎ^Y¬yåÏßi»îp{/aÿÖÌ^0‰¾cƒ¸ÎÏàXõ¤MÅ8<#o>®Nî›ñš|ð¯zn×D”k + ªõ}Ç¥Žü¥8Q+ñHU]úéwÁÇç¿ðþåg5E%Ëÿ1žÔ­AI‘#§† ¼wùSÇä÷‹?uýîÉ?ˆ¹pM¡%6ß‹YZnº™Òo_\"GÕãØ–Ž¼äï!’^èîˆT^‡¾t±ßƒO&ĪÓÀ‡£Ùá‹ùCxïí°Ü§nïì¹²µk$–‘>žâº¾»`Ïþ¾utXõ�@âØ>D`6¹hÄ…”_îSÄõ&O¤#‘™�gÐ�hjÖs{Ñ’-q¶Ë¯•'l¶ ÿñÿg°o8/ÖÎûŸA;~›V¼ß ý’öRÛÚiÿ³Û w²ÎeN6l€ŸTß»õÁ"wºÚ­�7m@îê{9·Ï«µû—püq oÙî¦ß<ÝõybÖ ?òÒÄàŠî”;0j™\H¨}Rü>¡óã°��jôüà·´7ï[Ö«�õyŸ6-ZýÂûü)ÿÞ&ë7Ò”„—$À?þèÚeaë\GOæý×^Sü¿¤žúqû“ÙB%§ØMê˜ÐNÍ¥ú-çÁÈâË匬DUë u¥Â6¿˜kWbzeÒ‰^ÃZ¥Â¾\@Í��ûOs›L¢@Gs¤ÌA~Ù€†Ô¯i%Ï�šž¬L©‹UCŽ€gßM�=ë„Ô€CÏJš/vgF*#?s/GþÜí�l†¸§&¼ç¹ª•¤@ÔÅKKQw蘭ÿú{oŒ<"îþðF’Ù�ŽÿöÈç ßU¯4Ýüÿ¿Û]±éÝÖù�oÀaÏÅI�ú‰ÇçMóŸZ³ï¶õïoÆÉÿ|ì­# à‰Ñ)ÉÛ¦î~ñ,ù³Å«‹ßçÃc_>Çúc¼³Ã±:ÿäá»ØŸ�¹i¤Ëñwy[®úåÎG«VÀ÷?ÈœÉÌñ¾gÄ¿ø7—�Mƒ©•våæY $ê®EŸ–&ôÖ–½�v4 ôq‹nwéG’Ç{Ççir¢© /DF4mwD÷âûR_ {ή"ƒ”C–ö'Àíe¥òµ¦€åDJ]¨YWv‰+  X* T8b+\.ÐÚö!Á݉ª°Zu½pšx€Mœ÷º ?<Þ5±Ä°±Œ¸~:ý¢Ä!vŠ‹•…"Õ^;œ~œ¡7rÿx®ˆU—œ¥o).\ p#Iƒ…ÃÓV0B4#2œ«y¥�Sç± h„Nè{cƑ̘€°�EXð¹Š>>Þ3±DWSZªð|d„$’#Ø$·Î€Á¤×Bÿµèûš‚Eò›f¯ÇÍ,ƒÚoÁ807üTÆ%±]äÊ}ðn+¥×ºúÈ!ãÔoàðñ~‹<|JóÓ®…œØ|@oÇL'mFÎ'¤Ïæå{;߀ui¸Õ$ÓÇ6�i¾ƒ""G—}"ÙhŽV¡߇}PŸ �WÇxLG&¹T�xs�#—&w&¶#?T.I¾é3<ƒ�¦„dΨ¶}‡‘8+Û 8&*Æd^ÉÖ¶‹ÆÀ©ôjICrdÌ m:mïéý¬X ¶FÑÀ>Óq]ܦ n~=+D#cÍÇ<õ°™<ÙAM­üÚX­¯�T€Kž8möt²X·;òô;oæX®= ;ÕIH©ˆg|é 0Š×?›AÐkejC?žëhë ·‡ú̶1·#ì)Š`­Žž^šÞ C¤¡pR…µÆààlƒÚ ¿9Ä£aÈD‚Nª°UÛדºÕŸ”E_¢Lƒ^ÝÉ2Æð"¾Žòð ÷I“'·§/Žl¦`I8"álsðÍì5ͧÉìß»¬‘ßêÒ<\êZ§;/ůt»[»ÏÿfmДÁFs™H‰˺܂(p«©¬«F¢‡�g¬Êz:&bò¿þV:˜ôzè÷]]ØÇ&.øFÌ×cÝ‹t5¥µ’(`…—Ǹšß<.?H±ŠMS˜?"Æo”/�ìAOØûCœ.êg¼Î¢…OôN.14dSAP�ØöÇÅ—’dÅòB—ê¨N?FWªûZ0NŒÄ� k„.¨V_ryDfð èio.fÎÌg'“»¨šìÙX–á¯Ù�Õ!¨ÿí\—c)¨¦WæS™uèržžW©ÃJEÁ’¥yö|Eou_._ÚÊ!äD2j±9hh+n Õ3·È)V@Ë„®ŠïïT-ï'_Æ´}Õ\ùw(êÒ7SKË� 9è}¦ÎaU|j7€åm@¶óaQLßÄ™¥™‹ž0dO¥“æÔ#ïfm¨?™‹îÅ“^ g £øÔ/ÃÐø%¤‹Þ·×™¶—^ë«ó– Ùl<`n×nüùâ�¦Ýë5¡ÂZ‹Íd˜÷Tºƒ¸ëÖbèŽOu0 ÷ï–-ðëøg²´™!j´gÂb28y²4D¾;™ô~Ù÷€¥Í“”“OÞOú¶òøE鍚‡%ÏÝX@Dd3�Ú*y0¢—³D* GDÚÓŸ·÷å*_ÓÀ(^w!ÿ‹½Í–þ * oÉ?/ø ä? êÍû“�è…Ýe'è">cáL-努òêÊåÐÄZá'ÁRºßÐEÁ”:­^)õíKã Ž‰wq¨ö”¯ý/´Á 1�O– —ÂY•˜’:t#|‡Ešùb¹hw°„Ã0–Wˆê¥f³ ŠŽ!«Ð ²ÿ.9‘Ål �Kï¼YvQ�,d^uEž7�ÿµµú¹UFEic½¬°JËaW›ea¼;Þù ÷“»g<×l4Sï²sXâTŸ#Û+q–îÜYu_çݹ§}ùY¢|#9ñgl½!ñZWš9»«(.Ôã$x\&2"?Ï}~#ÁG|Rþ{ªµÓo­ƒÚØâ�Jp´�ûÆßc³-iÄ©Í11É(¬}Ì¡’Úº¬³jYxZ×Q'r9œ –É%EP’ $ç(Š«£…£*°l-ÙÄ%ÖP�#sohñÄ"Du%–„¯ªÚŒOþE1bª‡tø„óå§yÝ~*§Ý3=ÅMÚª:Ãx 8Wƒ@Rs8y‹-¨g××pyuãi+,E•":å<Æ808â¯ý¤}óšº# v5ÅÒ† Ïát�Ø#@Y˜D� Èí^#<ÇKS¶ÕbZêhM5uMõØ–@õ2€É@…-¸ƒ”¨"(cÎDÓödÊêd6w "ÇC=õgÀ0 Œû>ñn^UÕ\ªb– «ubt½ñ ¦Þ€J¾Ó¼Ï�b5¨#ü6ȯj  '.¥‚À t §<ëÿ’ßGÏðZè':™²lÔ$ýL'Ò…ÚD´ ýöêEYµȎ}Fð‹Ñ—î*j¶’ù�‰ÁÔÔgmÉCàÂòñXÁ�zíþƒžJî!¨ HwUBk¼&Q¦�Oƒ©˜á¤N“àîýÅU¼9}¶ü�QÌÆŒÌ#Ëjð��ü_²Ü ‰عOÔª}}6YpÙx™S8�\àÒ}�¤YðÀ^,à€-ÓÔð‘ÀÐ3N¸Ž'~zHo÷�uå£êW=´wzè» Œ]r\ðE‰Op â³_€ø2Ä— ¾ñ ˆÏ@|æ}·®·|JW†Sm—�ŒÝøZ@à¬w-‡�ôë1²¿`u–~ëôïàtÿ~ä?à4vNÂ×=Ò”ð…˜¦'�sñ¹Xª'ÔR•8ˆÐäI|Ž~`ÛÎ�Tä•ð¿�ü/¿cÑÇÚ@;"]iôQ;6‡¿ €€¹qßÇ¢`EÍÜþø"�0*ŽÑøP-Àþ:(fï[Qü¬˜¿®”˜ÃìZí…îéÃW|ÑÜ‚ðA|äçÖ½Œ"±rþ(p”k�ýE- Gv*ëפX"ïe Ö,ú ¶1wY×Ñ´ïc­…ˆÊ¶EˆR°‡¼twq—¯§dñÿ¼s!¢àáßÜÎÞm§HF  ®ÿ¨Úlä� TJ°.î@YE#Er)M…iü‹” 2+•Ú2êºdù.™Šyñy%”& ,¶Îæå9w?=’‡<ÑŒáÊ”TMyJéÝ�NS2É‘gÞ7]uÑuˆÒ� •÷oêq\.!·é'<¸SF¡F�î´×žöclMÿy`Óßš³³$�ûÅõð#,c€0åAੱ�â=­ÜÚ®ƒ�Hƪ{Ý‚"¡™û±Â‰`Ù ´CÒQdt*C&:x¼ê{ð’„®i6SµH� ª>¢°DöûJô }ç$8ÀÂ;V÷QÂiDN¤¡ ñCkÈ �;’X⹞­©6¡³ªMF³µA�V|ä³vÆ@Õš¢ÞÇ’±¶F@—ÞŸÓ̶œŒck¡ñ�Z¥Ìl"ÌèÏòëæÚ£8ÈNô$ÞÉ0&Ø uSü±G¼íé¥X 98�1kpžõ5»Ï[+ƒpÓÔ¤äAʰvr³É– ¢ØÊIP…B?îDœƒ¨�ayÅ2SÓ¡Yˆ�ÛíyQ4 èlðY$/ Qê†lW�FÑr �±a¦…9Ñô”U ý˜wVíÀiSMŸ¦p��ªAÉsb�Ùn]ÏÂ"GFÆ9às~Ç;׋º.>8˜7Þd7×òœï÷Ÿüɺ/MÇëê8�M;q—œw�áA(@}3å·)b!Å¿øÜ%›Ô0aÆm³�×+M,L7`ͺԢse´)!ãØ{/¸Po CíÜ`9X#˱ u]`ÏD@r GZT©ÛJÕué‡Î&''®Žc‹2©k,ZšúpȱqÄØr©4‰‰º§‹;-¡q\QÆ4¡Ïâ“lÃ`UUÅA[XÕI!üt—²,TØìÚ­Ö*”Ŧmë-½œ¹°qÄÒUoÏ’·hOT¨-b¤˜e8—¶J§nÓ5˜f®²ë¨ƒÿˆë¤ÿÍÓÃ_k†“øfñÜÙÕÊ|4h.„””æ…2Ùÿ»ÉþzŠîÏÀ•\0ÀÑ=‡[#‚OÙMz,D¸4Iœ«Ú–7–7δþŽ1{ #~üCëŒ ´5…KKÆìË/-êd†R†<«ªþ~±`ÅšU1ºï=ÅyCeÔá÷¿˜�qîõë¯[çnX7·Jÿáï{ï(¶g�…Ei0<�KXM:ê3:Oåò](R×5)XH ëAjuy­Â®Ûî]]J¦––ÿÚ1AŽúÕny3|®‚ßÐgè+ÜãI=yL�ÒÇÑqö9û� ù!¾~¦"™þðŸO‰3»6[!‡�Nd‹Ý�äèy^ßæåmm7ò�–'J¿È¿?h¥ˆ-~§´øÊæ´ék�._ìù?#H>~äÔÍg�úx=îö·zSî<{ìþ»ßèŸwïóÖÑ«ìsý?'ÜjøÁ r¡ë,D/T㯞|Óã ÿƒ%ßO=»Ì½ìᱯ¯§^vö‰s ÕDFËŒN�ºꃫ/¯~sÎÓç\\ë[ñõ=S ©(!ŠEœ�lòv¥ n˜af¸‹k±vÅTËÕ¶²^ÐX³ä+`<2{Í?:|º–�VDÖƒë©×1H‚Ô/|wá_.nŒ�À�ÏÊýybŠÔÍ/A¨Wùýîå.Õî\ˆ"Bî®,ÿ¥x×Á@¦ôXO½ ‰$H]QvñÍ:åµX.´=ìÞ�á·ƒâìhTéûáu�ú´a9ƒ~?å;*ßìB�L=豞zI�ê`í æhŽò¿­�ž#íf•ǧ¢jàBæYóµ€÷[ÖÖ€Ï÷¼IuóMÁiù¢·ýzzÆC¶‹@ žüÕÖÅOg�I¹ã™ìÏž<ŸÅߺì[{êMUWsÁAç�ô˜;žß~ûÁRxâ¤äÇ.•d8 ïN–oP¥úбlÇœdRÀrJ™¦Ðçµr�bŽY ÙŽ< Û~#Ò¶Ñ�1KL8äÕ¿IkÑ¢WMá³,¶lË®ž<…ÁpVÚ “D °¨WâˆA_jÄ|ŒÒ#uoEm“ûa·A„晦„®ô,%Aµ“‚̯وÃìµ�ÏH©L쮽q8˜êB,×5ï+ö7<êº!QžúÚw¯2P–Ãþj?¶!¤Â€û;«Ø\Y€}¤i5Ihw#s€BU†’ü �_�5¢·Å‹;�7ñVŒb»J£ã͉êv´Bíïêï3‹†œL«ÊÖLô <‚!8ȤFó¸ä€®·Þý�ÌNV¥ðÉèé{‹3C¨oH‰KkÒT•Óp˜ùwn²¼"YNí*TJ>º«¼ƒ}0ô¸¾+[–ì±a‘³‡C�ŒÄ}NÌLPN+ž#éLÈ)¯Š"º5sáæ›G*½cò?¥†Ñ,$Ô¢9Ê¥œËkdâÝ’«#'ý®P›ó�“ÈÝz>|°×¬¦Ö;�¾–U%°lÎæ&„ý‘ÂÄÕDr"™59xÙÉÇV1X«´Ù;2GMO¥ýƒn-•ž^ô[ðË… d>ðV¹“òg¯>±™\Ki fä¡<[ôè) 7$ôÓŒáÕݬ"4°kœÊ“Gw�t]¹ù{+9ˆb›;­!Sñ-ür@Ü„$ ¯¨�³&1^RñÅ>s¹ÝßÌŽRnÜÈQs�˜VB“­ùxþŠK¯OÝ*£Ž“¤ÅË\aÓzr»âb¸ÄÊa¦�µàê‘M]¡fÛ©ÃÂ1Åt§}ßMZ¹ ¶ª±d/¾*: v�…HF>ŸÍsj³ @ûÛ÷4j7ÊöÏHurzéù¥4¿û¦‘«Á„g\DlÉ‚é1gÛ­/Åœ�Ï$Û^bꎿ÷Š µ$‘_ùÜÝíq÷†G[Ó~-/)�ƒ…dËlùŒãc ØîoíÈV¹Ì¼ýÕo£\BŸÜ[¤Ï¡v;“ò¿ÛÈ…Óv¥cš‚¶AÇ‘…Á%89-¹6‡¨�§ü>k‡ðéC욦²)RÊ™fšx~-n,:‡`Øþ¿î&6›äú<1Ì?!J¾Xl{Z;Š?ð1—Z¨«­n»0Q Éý£]ØCv7ö~ÿ²Ã:|,KŽI¸€u 7~vùÞü¸�t"´?ø}ù"§’p‚Ô£*'ç#rqùþ«s†=¯|LÐ^†Ë¯.{½µüùògY} ãð A2h–A¹‚æ¥r1C#Ÿàao¤Hyýy¢ZòO”` †Ñ h¾¶™#0 í8¾Õµ~TÚÑ‘z°ŠäIÒ²IïÔ �Ó0:WžE�w®ÝcŸ¡ý Ö‡“ LÁ2üÇZ’áGà÷v2ÅñÎLÎnÉr–©“IÊËG,�oB4örìB%*zNhªZ`ïÿ5÷O_EÂÃ0O[5Ê-O4áaÈšî—ßmÖ4ùÚöw¯¸¦ÒVg ü�L¾,’¬K諜?,åXŠŸNûHGzÆvïýp8Q&°O…‰Šò´Þl3�~¥Ö§µŒ¹SØþ?Y Z홉…hùÎf¬)…e5B¶)ÑÔö4_éÄ ¨‡ÞÃ%£,!‡Ö»I3iKij»1c’@Í)•jÛ  ݂ٜ/ØÍiIŒcd  >ÿBm¦ëÆò†C „dy¿ ;é‹ÒE3‰Á’®Qæ%ê»pn6ÅǑճÈüªØÆðW §qœñÍrioq8Ónã$AÎRa¯§Ñßh«6ƒkf\'k÷“ÀÐVeq9ò‘á´¨ÜÚÇ'SÔÔqúÈ ³[íÐ3³qU娅”˜)x™¦™uvƺ HÇ�êáÚ™¥Ÿ¿‰^+÷u½eÊÒæ $NØ‚õ’qxøeÙøQ/l#|ß æW5Ö¹és-ž¸Ž Ê—S/„;hW€Ìu¸½·qtø±°Cx¬Ô®À¶Íþ­ùÿe PeRZ…üîåt¾‡Z¬Â�¤ýa^’"%I–(/��7Ißd·F,«Öò ’ð‰ètN�öÈ@Aލ†Wï¤=L M…PO¢ÄÏ• ƒe MLá¬äÊ8ò¨È"*aWV„ƒ%CÚÓ »�ªZªßí�%ËIisµÅ $œ)‰QžÄììwŸ‘PKe~ý^=ãúê;¥Ní–¿/¶ 904¨ÖÅAŪîXƒh0MeÎö,Ó1QÊ ú¾«Ûb‘"Û¨ï7ËØÅü5\ùÈÀ[Þ]eæã!3ËÍ^?ñÖ7Ó™:™o¶ >†ÌÇØçß¡ö)ÒÁQ×R�ãCê<Ãñw(ZÖDèÒ‘í– Öÿùs`%I»¦,kB¸#«ð$Âíû…[*Q„yê,¹yr—Ý“¸tâñš1ÌwÌ€/)°OeGGPP…•øÉ©–C§ýjcdqa}Ìå´ÄÝÞ½‘Ç‚^ÃXŠz/èA7žÖ?çd ¨Eò¨¶H4"Y3Ñú——P ÊÝæ¤ehd‹6iK‹qc�й8Nzq#6àׇ?BÚ»¹¨˜/ØŒÛJvïtw;£•rê¿ÐŒþŠd,Y¯±×èèÄ¥ŠfYšáÂÒ9;nR  æ´Þ¨Í˜“]Ø�Q7k[F1rçqI1l£ÚÚMøêj_5¬¨� 8ŠºîóX‹ÁµK?(Ég*ô� ×EkÈ–1aÊùo¤ ¦Ðî7yJbt–DâÞ!UšÊåjU´õ_|w?UÚUV¥%Îv€ƒ®Z,saBô±HÖ0±r®e‡à2][ÄEIšiÙWì FÚjëÇ6PÖ·ð"á�F'ÒÍfäjÿV5�,­¿)M´C󯉉åÏÔ7 '¦Kgyܼ/çK90C†Á½´É!( UÊ0Tš-¤>=õºðÏSóoQ®%DÅÈ )'i9›9àN8ÇûEyÇ»XûÝè!2úT¦–"1@3²np¾`0ß\è¿WãDÛp�Ùa_Hþñ+oÓ‘Ä$”â-vJZ\â°EAÒ›6z®=q¡S3 /†ZîÚÚ”ò6˜€ ›Ô€3M‚»™_¢Q¬2dToè¶»H1�î …9ÄIhĬ÷õUdC`£oÛþáS£çàÃ�s·~úÈ»k{VC3�†i ˆÕãP~)1†ÖQjæÂ¹½R›R�]9-RDR2™ÀÊzJ‚o µ°‚r|äÇåQhD³6úEôáŠñZx5,ç?ëæ½”Q£jMý}bª,æ"æê™·›¢tÏïüýEjƒpŒ›;˜œÃJ7r™Ÿ¤¸„=7k1säÑê‰x|ˆ€’°¯Æ#ÞÆT4ÝÞ_á�õ“µï†�U˜`‰ªãx²%ó‚¶âï¸Ô1µöÀ`TÃož Ex¾àA.ÙxÛ5´E£ÓÑ3L5†;jù[ù$˜¡U€ÇÎ�9�HWÏúkçTº¿_Ÿ†6ðœ¦\%Øz=v¼ÚÐl‚#™¶˜8¸‹ºEŸƃcŠUÖ´R{Ì PíÓpœ7tÃ1‹–Ö4‡a U¤;qj¾žkØ‘œ= ²#Bʳ%‡ìOtQZØM¦“AÕâÃé�,ÁJfsŸ==óŸvÿP¦ð vЯ¥sìÊGèÇÞ—Ü­²K ‰ã|Êl]µ`áßOJp\õ–ÄÌ Ð:X|v ~ЧÒß'Ò· Ñ_EѬÎx£Óà�Qñ´"‡'îˆ ²OåõàîOðX®Â<—Xh­r÷©iàžÿúª69ÿ±ð‹ÂS|=vçD,•±ÔÜ„LGÍuá�F-îŸæ_m-ˆ�/¡ �Ÿ‰[ZFñØÌŠ5Œ€, }*/»Ç±«¶Â<]h-1‡óø:T�‹ÿeº*Ül É�-¨äépÊO^;öîâN cñÚédãŠ+àêT~Uˆ9ÏU¦nJLÒ¥U}c'JW P"Iz¦{÷ù¢B ³Œ` £Çn:6c‚å¬éH¶•l±!qöÍÚVR™1“Êcž©ï=\_úä0fC“ÄE /QßZ×Urþp,.àSÑ|3¹¸Q%Úì«zÓ™:U¥‘Yv7�½!¬ýýu�ôÆceÖæ§ ãQ1Îxðc@Ëw±Ñ/ ùƒ¥ü�€Ó¦^ù°Û_ñ2²Œ¼íÓê­¸ÚjàýŸ ÁüÿÚôe…j·‚ må8€ú?&>nkùuü´›ï Â8¨!**×fÂö�í5+˜·‚` 1’¨ÿc’,Ök:�á™›žƒq‚á¬�µò‰¨�ÈVMýk×»EºTb$<ijÛ‰YãHqäE$BKFbIуØ"ØpZyÛy¿¶øÐQ¯¢Ò±æª¹†[ba약pZG¤¥yLÚz1§RÿD a_-Sa"zÜ„&‘œ·f® ¹zaУtºš/Ón¯Â\�Y(�é¹ì7ûœo_>5eSÑnꉧϰÊKN%i&Á^IÚ3*}%§XF=¶ÝvO¶]#áWr÷FhèÒWzwN¥\ù—î£`u8¦ÄˆUh†×3Y·#à©ô-úF¨G)òPc=¤b:¾mŒÅC0¬ÃÛ®3+ ’˜·Iù —“(¯Š”Ï�ÏC8[·¢ß ûH0Ož›E�1Ö©­²<€úŠ~³1ý·Ëßj®"WžCTVëÓý ¨õƒÍ /uÈïÏÎŒ ¶Ú — ‰`›Ÿ]jØ[+ù­3å}H·˜¬&úiÔ�< ¦$â£ùe=“Ìõ‹x„� l9pÃnÇÐËWɸ@Cép»>Iزq‚Ÿe)Ù+Í£}¦ÐÚ•¥>^¯„ž†/å±ÏÙ ÇO_ÁA¥\;Æ´&Nzl†1ƒ¹ …ØÜ0úÕ ÀÙ–e뾨 ¨S\CuÛ ¬ìÞ¢»f¼'ËÍ0kêEMOÇ=ÖG,€‡'GN\Õ˜KL¦-í>þêÏ:_:§Õú”_®ý ¯4*¹¸§µ ‹ û$#¤Ð,jƒýÆðñaײ²% †¢ W̺‡CŸÌ ze�ÓZxi¬é<¿`wÚE¿ç;𨟞ë“ÌJä«5‚P‡ãNêá” 1ó«A+šŸxçÚ Ñn&1©Ð«{ûøðóƒPµO�QïÖ©ðƒ'ùhƒ²§7ÇŸ¶�øÄyz &îj^ª›[U½·'x‘rŒ› k�·7 íp¼,uGmS'•þchc?œ&—�‹Ð’.òª®í(‹þ¢O^†Õ4ÄøºH�²?[½èuEg¾AÕO”àT,;^™ýƒ_ ¥¿¤™GÝ«¼ùÇ_튢�í¼uÖIv8�LV-OÍè Dh„"ï&áÕ×U¸åˆ}7îóÕÕñž7‰ßË#º½Otƒì cõŒ­ÊGó¯P5ž¤äÌö‘ƒ‘5;"Ø’{ôû&ÀXßÍk?߀(E‡¸ïH¦-­ÉµVP”ÜïïË[ÅQ�ó�6�A6¢¨G" M 8Ÿh> �$ŽZ¾-Ž${¡_±•Ó!ÐôŽRW@MËÀ ´Oˆ™¿³ëÉEWˆ€Ã lªa›ÒèúsÓ.Z³îû’.æ¥þZñ ÒiìÈ׿0·S ñ•J• At*Ïo ÀŸÃKÁÞÈÌ›ßÁÇÛâôIm¸œìè„#B±PšÛ«L„?ÿ�ÎÛ·ü'ϱÔ7VãŽQ½›…EJJ†^ih>8©‚m˜É¢IqÜå: tØgü �8‹?ÄÝÞû’¢§Ü*(9{î äó�§S˜…ñ6¾ óœ×áž=�¬™™ˆ—$û¼0­SŸ�‚pÁƒâÐN ãù? ÜÀÓ¦ÓÝ¥?ýÎn‚`ƒ=8jey“¢wK÷kM±ÚYIQ ƺ>œÍ qÈ’‹÷ýöÂhаñ1®Uö«â,OÅ4eêùZúdæ{—‘6Œf±¸¤9,ÀO6×B’5°®–Ü­ n8BPô³ãFz¯çÌ|þhïF—Im~¸: )JµÛ7hØ�nMÖ)Y×ò–RS4;˜*5 ß¾R¨§ }#ÆNç Á�®VÀ-+°ß‹·F6ù²l,øIùôXö—±“Ã)>`ùý-Ç´vêÓ“�GiÚäåó–ħ—¿à¡tù"äˆ&ŒrÓ Ù �j)Ï áõ£”RáoXw’=†3Å¡…\§g¨ÄúxÚ$˜"º¤ƒ¡ÅR"¦©Ä¥¥ÖuÄÇ’ÓÅQ�›Èår:ækAnBd´‡ÞâÒx÷ ª.jLmç)@¦TÌéé:ù|»1ÊR‰æ€A@ úú§E¼Ë­(Üc�ÖÐlt¥P*²h?ï«oëÚ· Ù± ¼©U8”bU¡ç’y|(5$‚iåÄ^&#Äâ‚$h§ª§ÍŠJ¾Ù>k°æ3Ûq Ïóà¦;™`)B©p¾+�½¼Àfg:(ÉàPLóºßJf‰ÁѺ|3)'%‘o ùé<”‹FBÁ�^O1´œ®J”ÖÃOMi o2Ë´¶É �%=?,. ÑNÓ´X pädÓïhŽŠ+•ŒíÊk¥›=­úåSIù[*‰ ŒrƒN!ä°a½åC±w ‘±UyŠzû[UûàÀñ­].µSZ™Ôw2<µBì8夽ÕY¯×¨·¨ápKåPøaA˲lÿÿ>\\~Õæa:.§Yæ“þŸ"ƒ;„³ŒM%>(¤ËÉÏ ky9�Y>ƒÁ]€U*ê86Ž Ê�³±µ;I—Öù�ýº‰eE6";Ë,â˜à…¥�,.S¡>¥/ʺýx¤)—˜Nû—�RàÌÂ�#÷–†bmüÑÐ9 [ G#$äü�¡(švÙºýÄ?…fiÁ?j# ±•ØG4Èê…�(v&Ôë1ò|ª‘˜®>r·)`á£ÚM¡Ï°ð(ø·ÝÊ�Ë8™•*;G¢ÓH5>�M‹Ð÷1‰öææ÷†ÀSŽ”n%ò"gµ�>“ÿâ¹Ø5Ë‚ex»jw5ˆã¤5µf ‚i§”`4d¿ù&U‚¦Ò8üCI²4$: �ß&"rKÍBf¸ººœÃ› 9’¶Æ>ù~O§c |��Ï+|ØæãÖL犉TßhИ/•+{¸¥Bm� cÕêþiè$,ûm¾¨ÌÍ}û®û¬-¥M9¥Ï] $qœ>œðšnX-¯<¢(:‡à/ç+0Ö…jÖ\"A%¯ ‰œ*�F�ÒÊ¢ÒH_GÜá4% á�}s ª“ùŒ¦EÌô®x+%²ŒUý›õ´ÜÃ㦠±³Å>¡Ãg¬Çõdù&1WAÅ—ÇòÀ&–�+ø ¢i”´Þ·¢ÐO›í¥c4l™†qZm¶ôŒ!®á•¸L&‘‘NzšÄövCXâb †XS<¢° C‘¸°Rù¼ÇÉû…IE•&}‰Qœ�Ä’¶-KH¹ž¹ŒxèûŽ[ ãZ7²V~ͪ‡Ð-Ð,Ëà®4mˆ¾ïúÕ�]¤8°Ñ0Ž:ð7Ùƒ¤¤GPæ)oI–‚ÀwLwÉ'9¾f6FxÇrRd©Ò"†[rraÑZñu»FCž¨Çí_úø‘Œ[è/¶|q´)±{2gÖRßY2®–·s-€ƒ8ªHÔŒ”qÌ ÎÐAY’ß?A›…­fG)Ô‰¢8TE9«*J*%ky]âühæcY î;Ò¯"ÃT´Qd,Yj™�O¸ !/”ÛÝ©åAK·nè#°i�DZeÎØæÖȪ{ed¨0{,:&tH «úÕ „•ÄA�Ú>6´TZaÃÜTr–ðZ·ôƒ=ñZ¼zhS¥k ý•µÌp\ÿÿxºk{›õènrÓŒÕùÜ´¥_5t'Žw?êź`Ⱥ 0É„â¸å_\ééð“Æô¨¢ªºU;!ßä\v;MYšŠ“"?}S¤ùïmB)?òELJ•%ôcKTÇÇìÉâd$Cцh£~}L�ȉ‰x•Ìsö,4=™HÄÊR¼å8¶Ô)Û§ˆïçè4P‡À©¤NÒ¢&KB4@�œ|Ç"SBz3l(«d(þ!æ…ê~·_•Wí¬º“¿P•ìïŒ+®(×±{5—cÀVéÞ@Àg¦\sAÍÕ3Y¿)¼}GncÉÅ1è¯v;âF ëѬA�ϱêhu§­Uö_-H:ƒG×­¤«­Æ;xw–Ó­¥ÀB;fYAŸÎ´ÇñvTwn?Jxh/K}D‰Úot.pX´`�Ö˜w‚œ<ù \:î;bQ4As"ù*Ì—éÄŒT¥^¡[ªý¹>|O�ÑæVÍåÞ’0|t|­keÛmf¡¿åQ¤Ä'áw^âÝå MšmA‡#ç3"h}ß^k5ÌëÜÃÝÿ|¡Šû[±Ñê±ê š“íD çéÉ´4¢m·�‡F�oI“½ð¤Þì³çGÞ¡Œ§“F%÷eç,~Ní,,7÷Kâ­†Î;Жêu]'Ô,®Í±s7e4K¥M{7¡)¶[¥Ó*é™7ÛÞë½ôi¤°©Ö®TaÿKÿ%=Ú±’qÜöXg°@¬ä üÙñXeU<6«)×04þͳ .©·$t¼øNÍÆÇFoŒFÒ?äÚ6`˜Xx¶£�B�¾o±8¶ùnkL$»N\œÝ‘Þ1H¡Ü‰RÕÚõèÒ¯ ì€–By¨x‰€x‡ ùÌÿµûŒ+›íöˆ¸íïi/Í»_E{v4�Ähâ­‚B[ˆ«˜“C6fã'½Šœ ˆ––72–J(&XšÜ¨¢ÉÇ0L˜±Ì·’æ‰!z_Òk¾­ s�±D¦«Øß„ö!Ã’¤Å}^Êœ“ïØdŠÕì ‹büË�ZîU%•Õ­Cµ{<îPÄãtÈ‘h<è¢$Y*I¡o7!0kôã)f;žÿñ (àå¯Â fËujÈt>‰È" %/‘üùÁÄÕ3Ù¿)4?ó‰Ó‘öÎ †Ïµ¬¶!/•où=GRÑ‘@£¼Ç%_ Ç/å ì¡-›=rXŒœ®­lûCÁÂÏ=mÈÅËi÷¬TŸÒÔªÑ$vL·ûûÛìHHC–#ÔHjÿÚ£ ›{ß}JZÒ^RþÀúý¾�?DcÖ×µ]Gy‚1§yNòWöÆ£5‚e[zSVpF*)ø � ¡ÓàT"yÓäw”ñÚLJ·èX$‚õ¬½È¦¬N’¼7ägW´ÚÜœüzšf…¨vÊ¡|»a(ozŠãP°N9qjf²~(<½“‰­eÇ îàfp¨èñŽåDË�’"Úî›”2yVéÑ5‹)„Õ( z.’gkûUÆ àš‰GKhÖ}kI… ã%×D„Ž0gâ•iªMLQÃõ)õà˜a!ì h•†J{ét•(°2ÀÁ ØX%Š…�aê\9 I¥ùãìj?š°LQlšód,»Šæ’;1�ïIJÁ4ä0ƒž;32j£Í¢ÊÞÊ.Ça=,u¹ÿ›(Æh…ƒ®.Æé½m+—àn_ pnä�îV÷k‡‹d>nÍÕÌq_j‹Iº-1=ô“LÓÑ£ûïc`W£ÅRƒ7ÛTP+hWD9#;.#±~¤KôÈÀá- ˆëÐ3/h+�5ẜªÙí'6²’¼ÿ3éœ OT”Uö8ÁS‚ŸÀ¢ç 8‰çgóÏ ’q•B ?OŽ÷œ´[b�9O’®¸ôuÁË’î! ›úk÷ÃÂʇC<ø‰ µAW,§¦’qýIÁy�Â6yx:Ñ$«ßÚ¬Aœ6Œÿ›`ý¥ÝuW,úU¾ "F¦gx‘IM•FÅy‚ä gŠvÐs53Ëö‹£Å¯6Ö—Þ,´û5ÎiÌÃËÄûenŒþ4ÃŽÌ59mF8ÿ H×=ð÷k麪+çÛÀÅ+È ò¶CU-W0+ý:cýi›Hn Ÿ¨Oöíº¤ïqÔÙ¾ˆ}ÕEÛ2£)óz’†‘ÅWD1"œóÎ2Ù é@F´¢v2ÿS2Ìp7ÎW\>_Ywµ/­~^ö+�‘šB_[Zp[—NOÓ¬5uƒñhZAQðÃ'™â©*ݱT—E1’$“å˜ v×�\.&鋯ñüa])m;»½7¾û‘SmŽÎŒä<®xÔóÑëZbÈŸ©ëàÁc›}ÎÙ²2¯î4±7Ào�¨LMñ‰l>¯j‘/¶ÅÚÜŠØ“» æGÏŠÛÒV6þÿ\Ð'$¯§�E*»U]×¢jÄe…!p<‘©ô�I§[š�õªÞe( bµ3&ò’jÄ'Ð#º*÷(ÖkulgW¢ÂŽ´Ð¢"ïKÌVKŽ.Åan_VQôwê©É3‘QÎfË”�Ü£aK�*rõªÊº©V[¤­dvX§šüé»{]ª¦j°—ãý¬:P1,„Ñnuq]dåË®´¬·»ÀwPÁTîôŸ#v?e-¤X ÐaœD�ã.÷I u.q„Îìº}Î2ßöã´9,�`¡UŒrÛ YæÒ9bA=ÎŽQ,äú÷NòBõZ¬ÚÆfE¹¬‘åM`vCW+Õ b�lz<â‰Qø•ÊbÁ2‰å®Š”þájú ZªUÍ2ïf‡™Y «õóßïƒ4)ŠÝÈNÃ[{p«K@R]”ÂCã¨7,ͧ„‹ª:>5Ž8QH-ŽB�फ¹1°Ö ½°1K£Yû÷ºckùéXÂm—ç¼Qa× <¼Â½¯ ðbÎQ�é©1¯°'gêJó4�kàl¢s Ñ²&�ÂN¬B/é;ž‘U�%a ÝGlkÔzÚXÅÐëK ‚‰O%m4,"4yQÚ£€`NWòDÀ±':‡P Z’wïº�b9o=$­i8‹1kÍË΀` ŧí3¹³0¨Ï¡CŸeF�¯Úøš ‘¼‘¸�ÂO ¾ ¹Žsœ¥âàŸÊ]lÁúÝ„Ú0¶b$îe,X™r ÎÌ—¥’òp¼J@cì3Æ!bJæ<¨g!MCàŒA/ŒÚ¯Æe}b}j+óþ “˜ ãp[b€@q;69>ñúS$ö°ô—‹‘Í#€iÌT.3½NÔG1 wR-«Cu*h‚8Û�<ãæš·!¡S·vÕ�6Ù¿\96….¸æ›µsy±�64C/Ÿ¸²8"ÞF�¢"&/$Xµ}þ³}:ô3:5¢1X öY�Šå)Ó*/Û2ÈYhó»� �H®Š½xYÊI"ü_&}|�`2ÛØ*[KÅãjp�ÃOü{_6Ï'Z ™Hg_�®Ù— bc;ÇÑÁLGŠƒ…ÓÊåqú£¨ÚbñâmÁ†ê»a¡[5•‡RÌÆÕï+)²¯^#žeá×0‚"°é]‘kWn§¿qLÃvܤ}*Id¦Š½vG¿ªò{í�Äo\Özèoù´Ÿ×—éŠ}.‘H'Os¨òµrµX.Tßy¶iU¯U©W‹Š{¶‰0ÝLXªÖ› A®Õ&ðoŸ�‘—Ê‹D…yQ«øäíÃ)ÂS ê‘ÎîÈ“Š@ݾêV2­47ëÊN7ë4F+©±“‡qù•zJ*²ZŒÍCxÔ;vö�H~_hÅmìpÆÁµžý,„šõÂjalyÊ»Ús=¦-PÕ +�½…aõz¥HÄ~42¥°ßßC«¹L&sÌW¼Ž•øC/}ö� [š‡¶©�ó}a7Fò¿ 5F ž—Ð:ø¼K‰¤âš}¼‚,‹ù/Tí8—°÷ÿ‚"ô/þÜÝk…ô>i€§×V�l§ ¥x�÷™ÄqXöl'ÞŒyJQtË./™•7¿û&\ÑÒ9Êtö7Ž!Ñúð{ñâÒ>MS¦<‘Ç#õ$«8Aëùr¹”•Kõ<àkŽyn!­(ªÊÍhÇÿKBNX3mø½å£èÛ¿”ãVöÜb­dAÿ}£²·Ü�ñ¼ìÇ-G6ÜÌ™áÜb,9ÍTbÇë �‹™‚� ¨½fqæÜ„ #z£ÄNñhŒ îe7_ÐI$Cù-{g«6Ô÷.§ª�.FìÁBÔX7÷Q.ÍâðàIÉn€@…Y~ ¿Æ¶ãÇHãÚ¿¾ßÒŒøkü2˜äÐ7{gðÿ÷ËbŸr`O�+mÝŸV½ß”u`oÉÂËZ}vv´[.þx¯øël?ôÃI›³ëÉØJqn’¡ÞŠÊh;ÂG„¦¿0A_"³þu5®Ìˆh�w0"z6iwE›×× GhN¨öRþ�Ò)ËL“‰ ÙL@¼'Ç�Î÷ ßVS]U•nºaÔŽö`…‰œ›Õÿìf�õ‚Pà˜¿5˜¡âmŽR– “8Iå€ÃÈ™ð�n þ:ò=+šË¾Ø'½¹ÇÂÛ lûä„5a1.Æ+"õ›¨0°ÝFѰ'"A¼Ôâ0ÿfãŒôc´WŸîTx]}¹K þH· jëÈEuŽåù"ÎÅbL¸‡dÄ�gRjš]í67°áùS&àjŒÕz›ŽZ›®¦:rb5“Pju´V( Z²‡ú.¬Ñ©ÿÄúú X縢†XÚréý‰deå]t†?MXЉhjI«¶Ð\;g.ì¶ý³ÓÀØfì¨EÜÓ vPÏV¥µéR}àp�SÕN{©7”³Aˆ÷§Ü–�þV'²¾––Óê nÓ}³±ifØ$“éŒÑ•ÄG„\þù4 ôÛoƒ¾ÌAò 9)Kn!¸™×…` ÅIÞ]©Œ0­ékhêzª‹“:ÌêGI¬ˆMæùÁÐÑõá�@“Ñ¡rãƒi¡® �e'˜¢) ‰/šÒ(2GùÕ¥'V³yõðqbªŽjùzc£ëa¾Þ iŽ–ò¹1nëzwЇ֙6J“Üíúô86Iþ>*1ž9}©ÝåSw€ x›9©¢}É=ìY+RzÒ @F¿·a3q¢6mý @“ƒ[/“0»Ûs‡è¹øí8PFeh>]¨ÒزtÃnøqn1�ש†¤nßµ;vŽèˆåéð.lÅ«Ú^™é¾ÖœiÒž€Ž÷y⻓è‚aû&øŠ’NàÝò?ž’É»xÆÜâo=§+Gø $�ü;zè®�Ø2Žõ•ø¡ÅP�e ØöYÓ½åÏþRŒ|;ns‡Îr9Å™ró®ÿA�7!öÿ‚£þ*¯(Dc .±üç’dÛ’ šõ¬DÙ¢šÆ¼FÌä9E`Ð<úr2lœì¬®¡½.q+f[q¬’çSÊf ÅÌTã’ª‚®xe6/Ú~äÆ yq|wZ Äq m‰�‚�Ýr¸¬5ÊÖblo9UŸ?2™…âƒä7‚f·RJÚDí\ FÐËtóˆéTO'#�ŒJ—ŽFx±C��«µT‘Æ[i.ö¸'‰¦=Ó¶ "ÆÉ¾é³§Ï‚7¿Ömtÿ”q.¼3vãä_}3þKXˆN•µ² 8øá}t?,6é°O7ÂMJKþrñÝ'Ož€ßj20W’üdØ«“×:Ž;®¨‚aé´3¶àÖ\Ø`5À“6ß/ƒ¾Ü  Š˜+Pk�|(3¥(¶DÕ̤ÛõrŽ&�ž´ u«˜0ÒLW6muÃÚÆêe—/ª#¼èÕÖ$ï ÖrŠóÁŠL¼¬af'XبbBh%2drDm!¦ì$l­BåGb¹oÕežó´¶i\¯m×»^Ò¥3t´ÑÞ{†©¶@ðÁ|*N‹5Y4!võê(p �dÅéÿÛµ¼p� –¢Ðij37/ÊapæÎs"ùØîê:Š�X#}™Ð˜´9ÊÇ».]ìTð UÐf¨&°‹W†?D(”°Nó³Ù|1×H燲0V•iiû=!´ *cóÝ Å35šÑ¨Ãä¢ L ¤2±¼¬¤#PmA }‡á´t¸¼Û羚ãï]]'Pž§×³ î¯hÇ2oóeµÞ´")D`=f `™gÉl‰?Ÿé�b2øDÁ‡|ÐXb΄‰?Þçd°áL@u™À,�Ýü¿I¤µ—“Œ#Ð>ÈL£§êM‚„×B‡’žù™ÏÂåÑ̹ †Â—ȃîË¡¸’e˜t&�˜“Ã/ðÇûÿ .N° òòžyÀËÃ;X˜>öÿ~D8¶C»¸|É5ç$fao"!3óŠèBD‘»Ýˆ�ÉÐéøþ‰®ú`Æa¬ƒ.š>Iwöþí»hÙ •g²åÚ…óAÈÆpFFÍcÎ e±ÍáºX?•‹‡B£Îïu{dH�}ýeÑàó‡I¤á)€M£ÙéÞƒÏpêaÞ¬‹æ±¤\nˆñt»‰)âš[i5ŽAÈ#¦^)�€dñJéëQp¢nº÷à[RƒyÒâNÙë—Ñ-…ò»¬ºœàTæl¡ÕÐV¨Lb/ƒ56µýV–™ÊØ|¶H/è6 -1‰�cÈz±ÀÄû:ŽÊ©W­ÌÔŠwQB›w ´'#ÝiK`ÒÏÞ}d‡W™&º€CU‹@_óÕÄi�CM"$Ä¢0aZšhbS †kæºL‚�?]iH—èÚè²UŒÉÐ47„¨ÄÕ›$RÅí4µ£„W”êR¨=¹#5zwÕ:\XC1Ö¬@°eC€sîÑܳ¤ïÃèA/Ù¡˜-ù×鲎3Ô·ÀÅž ãŽ8Â Ò Àâ¦ä=:ÿ˜o¡ÿ%ЦÉ'ð¢œg "ª8{`>ÍxV ·ƒ(÷XØ¡&$ø˜£×C°D�œÐì4…ã`ÜPÒ½Ûj?Pà+\­% Ά'¶;ˆðc&ó Jä¢(Fž¦=¸mKsñÅï¼<„80< ÑŽŠMϹj‡`VW©ÎüêN¨!­.V ‰kUÖQ¡€½»½4ûÂ÷æö],Ú…}O¼5Ë‚e^¸ó]÷ÄsÅqþïø0À±0 !Ô?w)çä¤û�#gAøJ·×6�R°øËHû a¿À`KÃoJ;´¦x=ÎÃOc*öã·—z¿þ­¿Œ5‚Wk P ²ÍZ­ïÉ�|'òñz·¶®[±û5«,¡þºÑxyĬ«i h4;£=_К�¬¨�†lØÚJT�ÚÀ‘æØÛËhèY ÖÇÖƒ�ªì¡W��ÕbõÁŠî?ýF]Þ;ÍŽ’O¸ÓOIwì"Ü3b¢º´•iþÑò}­¾ôOÈ!ׂwTô}|8?÷+÷‡õùõ§?êÐAð à­È±ÊÑJÐ×v Èt(€ø Žà6<ðšÕ ©Ôf÷A<¥û^¯ÿŸ=uW Q©TÌ´•�r·áXL^*ÆX-�džÀ_½´·¥ú�Xû«ˆà}8g¢ªò©ñê6 !12�¦+:è)ôsˆúÕ$À1J»p¥^ŽÁ ù $Ÿ.p9ñd&â‘pÑÓåÆ$!^–“ :;�°¬4’f‰%EL+ޤ„ª¼~m–åû¯E€N�' *Ý›0%o“\ IU¹.)aR’2Ìä’˜$Ã<Ï&�TßNV&yW2žî@rZ´&“!¨N¦òa…˜^'s’U¡ÂÉt.Ä…ÙŸ @�v6 Hf&*osµú8¦`•p3­ ›(Ø�5�êu¨Ì^´èš �E´bÑú­ì¸½é5+9}Ò]A`Ê»ó„­-Ø™Àl_;©;!°=Æ”j9&ã©p˜'TNèöŒ:5‹ZZ/î”`¶ôÙºS˜6è…@«È=6¹e�¾à–m•0õy*}Éæi²ç:�ÉDµ>£h$pûôµlÚ±PÌé#Ýlú(çè‡ f)Áê¶2õŸccf få&§¦@ �—Mi͵ûâÚr'%‰+E²C7avã&jm€VEÑnˆsíÞï1— ¾f‹ð¯í1!ÄH€ QL‚#�(´°†@$IJI“ed)T�!'¯ ÈTRVQÕ§¦n  ýŸ÷£ÏÅÃ' $"& '‘$’qQ< EH%�tŠRÅðž÷Ä ÁHZXƒʼn‰Kà D’¤Ô“’/OF–B¥Ñrò Šs&ÛÜÌ2�_¡íŠ6_ÜLÎç f$WÚ«ŒÅ¥)’)�˜uë­äŽ­yEóKÇs³öÿ|©ëex6‚ŸÝÒ–'3.OÂÿbøgñÝr²ZÉ^ ­hŸþ·2_žúO×!m›ä¦ÖaÿÅb¶fÿbBc}aE«Ø'ئû¸ƒ:äÉâòDg �öX@&íòÂ?Ù€q€Ø0ÀW`+`ÃÀj…„þ±aö±ï³÷tø,0L�W˜<nâldüp)cG¸atOÙ˜àwo¡¡ÕüÎU\n`•…ú×TCß‚ˆÞ1lr+3RºÆU:ÇPÇø� š ù&"Þ!Ö<Ã"îþÿ´÷Ú:)®NkÎ.ÂѤrw6Ө𠬛fi=s[µ¶pZj홪kš±ò %iúÒÓ•õ�¶$¢)°ˆºø?ªÂFs‘Ã]‘¥)ŠìÿÈsO–Ë4iêIR­‰OB†ž ¦~Ü /jà.ºª…ãEÛóX^5…éIaø=Kc}5å°¯Êâ*t>~¨Øõç¥{(ÅCDšapz<Âi ï›V¨Ä8%Þ–ùùr�“ÕXô� r)®4:AŽ`r¢ rB´G¦çŠÚèðïÑUáÇþ^ú@´÷ÍJ„�g+ #ßoì�.¹Ûâ’ÙÖ}îÇøiþCb!ý¡-¹Úò’½Mƒà4|Õ—üOÙ#ÿ6Á­ÓàFPdÉÙ–Œ¶â3?ÆN³Š`du]‘^£ëË^þäkr˜Ü)GÚ{Ët©l³¢ªËè)KvQ¼2íí~žèZ¿ïšk0¿-¨»¾‹ÿ‚€WÈž±LÇ�Æ…r?òef±£>8cD{ÒŽ¥À<“á`)¹ÏCžhu �!4Lغ�SPKÒV1]@X* *¸ ¸Qimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-math-normal.woff2UT ëÆ«jëÆ«jux è‡+€ÔwOF2¸ .·¤ƒs�z†?HVARˆH`?STAT�$'‚+�| Ÿ/V �¥<�� ƒT0‚Æ$6$‡$ ‡~Š …[qqB„cûA*»IUY?vè±'ÓÍÅs;(yóþwž¹"A}ã]³ÿÿ?5©Œ¡IñiAA˜ª›î?‹ÅŽ,Hš¯h”s¦åˆUzi‘‘CRk½ä6^[éc Ù«ÌÜÝróaÄÞ!•½¡¢U,´­"�Œ§ê)Ú…skT…c¦N×:M±/iÚ:*]?®_�èín ’%h¹Ø?ÙºñLæx’«LI¬éßhþ/|ïyn¢ÜM �áni‚ï~[Ç/„7 .8yò. Œú-F¤ˆv¾�ƒÄCìJuþ›ÉÙ'þªoׂ‡Æ\eìÿÐDQÒe/ç‡D³L%´dmÆ"0n±£ÎTÍkÏÓœÍû²»1…„�¼Þ A*NOzfTÎm7)59¨¨Q£-'=Qï©R2„Ñ ºˆKp'þy8öuÞ�À�ôf%Ø:&á¿ÃãTûlÒfmJ°Ä, ]uÇ8 në)i�H–bÉ´�,ƒ ±2ø^ýÜ´M5ØÙYðRÓ}ø"|‰c,Æur8Mï_–lYÚöþ�µ”X]îzw @xᦠ°¢ø êB=–6À0t‰"YêÞZÓËóC’;?=8W–Òþ@aù˜SÎ]¨4 õ›š&¥Ù¸YüýRû pÀ‘zV3[ï*¬R-g`ÈcÏ.@<£�’r'Ep$Ï9ƒÅ$€>u™¬µ¼’ è÷kûîP‰Å#Ch©Dÿ‹O'D<BQ3¸±/;„`Íì|ì‡�ÚÊ™Y{ù¤±_Î8 •¥}$Øm°LÓåÊWÚæŠr;€ jÊÌäPÈî~€˜&2¿×V)-aï�Y†Ò«P³÷†n-õ¤¡{™8Är–|{C“ß·ßo±ÅÜšéÎD$~¹­A¨~:‘öÍ�€n’u?w“$@‰¥¿75m÷c‰;ðÂè(å´ …H�Šæ(‡Ø4w.]ý}ïïîXb±ïXà@Ra’'€ÔŒ@R¤�Bê€ #^æ�bªcCSzܹhÝ®�‹.Ä¢®"üǯ½Ú½s2yQØ`]c*l›)J £«$(`ɉþ_骮b¾:›ãc|г&›U½æjí弇S"‰!•*¦ѽ›HMwV.ìÐì„è ‰ª¶k�ù™jˆª÷£roÅÔãŽÖn{µï¾`Á t„Ñl„‡9>|Qûù_§Úý7—BtTâòm–Ï×}fû˜-�ˆT¶¡‘C,B�…Òúßýíè–±õï`€ÑœÏ8b”ü<Æ´Z i[ºÉ–¦+è uPôþ¯¡ë?Dg~®ñJ»ê�¥Åˆ ") B°üÉ p: Ü&:„în@s� Cš&¼PÀ{³ ,ya¤„={²Sf_²ž=ÉŒ%‹£9g/Øçˆ0ç{¯ýäSœ_~ûõ5±¿~÷7ïIüíX|‰à�¯aüùè?o5nßÑkÊÜõž Cÿð%ߨ¢>þ¿36øÏ�=ûñ2ß;‘ö³ÑÄd? „>„yþ{èÉ�Qügþôgè”]ƒ]‡‚]§Ä]oÞ®_Ìs”ç 3µn¸îÔž”W@Ø+gü+w’èôÐc)¯mñ¯è7ú~o<ÒÞÚ"Þ:x½uâ¼õñ{çÊ{¯ƒz¤“ÅS‡ÙSï,Î6fOH³§xh>¹ýßËù·^“:=}¾>T=}D9ýÎ�ÿyÏöÿnhsG°¹c©¹ã¥¹“4¼%>÷‰­m |9‘g§�ÎFäüaþ iሱ¸\^:œ\™ +4ÿÀúv𺦈}€‚S~‹õE²Ø_„X-¶,÷Ù——� Þ\�¿;º M/ Ï ��ð´ *"¨¡É» Üî á$;žPÂTøÄfTㄦþ_{Ý ]=sr[ªœ9Eʴϼ)½UI;€¤¿%{T•°ðæJ—Exo Æ© †'晫™ãVƒÔc C aO*úét4S®ßËû•Ÿ /þü‡¤‘ì©©(™êS!®d‰Z ¤„ÿz_¯»1üà¬àÈF*4påz³(ÈGr¨ÄØË©¡ëç“¶(AH.ŠÈõLÄ[Œ4*›Z×óƒ% ûõ.T<�Ô©Aœ¶ÑÓ­â'“bè3º�5k€©VhøQå„’Ó<èÈ7*vü(ãÕhÆ|:ðcmŠ^&P„EW†;:…1ÈpŸê,|އeW,ZBÔ!¨30ëÖ †¤ï©M¤iD¼µM0ï¸îX +jþ.¾€hFô¿n±¬2^¹ë-ò±¡áX‰lQLc�ˆˆs åÓŸvJ5VfwJ£ÌÖÙ?(LÓ·Tr—Þµ~eþœž5º—˜âEÛ©ZI?ÄäçV0¥MJUEí ‘Z §¦lÍ«x¦á˜­¹È†Ûà¬*•‰ŒR¾]p€íŒ!,�àŽVÈT‹ÝǶò?œ;¦€ÜôCÄ�ʤfêÓ}䤸9ê<ÃêêœcK+ÍR§àÖÌÚg’ÏÔ)3üHXÿ¼ŒKׯ0¤Û•>µª:·2>-bhj—çƒü”XÎ�8ñùàÒ'‚€iY @öœûýz¼�E”oƒ±ùa€&È%A,5J®3ŸQ¦>utÿ EÔS�Õゥa¼Ë†7!}W€¦§öÃ]cHÛ¡çD>šÏ“�æË¢0ñùD[0ߎ�@� <Ñ`3ÓÇX«êUñPk#Ö†¯ wæ8ø>áÂ×K¾¬üõÇ·ƒÏˆð1Ê /ÅP ˜ùXHF�x´$Y¨4;å°ÁE´ +° `pÙ¶ñÚÆCɽŒ«q²ÖÞ“àJ7¿ñ'`)±®]Äs„÷Ó‡ªôÍR®(Aí){�óëØ7ÚÏþþÚ4ý1ý5"J‰é�²ËGÁ)o,êçY úë¶4_Ëä‚ñ îÔ€Ç ¬7=Gš„¢nÝÔ÷1“ТÍe3ëoî~e¯ŸEÕ ©¯è! cìD;‘•WÐùßá³zƒI~¡»`�©}{¨HëãuRu*ý¯T–›ìwÜ�r&ÒªFÒ;ÐÇÕë�Â}«,2´Uެ8´¥…ÕÒôa¼«±ÇØé± œŽTÇ­ÐÇTgã|®{Ÿºµˆ]ïý õkuºiJhŠÌSNI#î-ÎŒj‰bqRX°&Žªg"Äiòˆœý¬Ôhq1TT[$>aÕht©Ð@(-�z´óBÍ×Öi•B|ÞF+¶ˆ­³üq.Äl¦¤P©J>X—bV70eåŠTeæº�2|*Ÿ°£`nÝi9m=ç:ÙÔ¹‡®·#tïÛéÏ�Òx�!«�PÓ”¥œxa“Ž ij]üø5õ˦B|‘Þ: \áÞ½®&À? ,áãçEh@¬È ™ÃˆœÏ”û‹@¼nhÂ[®Ò/�ô`¿ˆ®åËØOß4¾ï‚Çt•ú¥R~ºŸ�Q#ÿ² ž¼ ôáû1ˆ—õ ôg°üë½ëòOüŒó¹ÛR>÷Ç—~£úÒ߆¿üºª/Åöå_Ô~õ(¾õ½¸o€ÿí¯D}÷1{÷‹-ùÞû8ßûXÛ÷þžà¯B¼Hýµp€õµ(@ü|€ç½t€è3;À×ï8€ª¡2DÂ¥ËeW¼Bn¨€öÌö†BÇß´w»Í.úã/wÎ4+4}‹û‹GÒ/$á}3Íû6N÷9%;PÒŽ›çŽ7w›ÿÐÓû!#ÿ‘eìò ÂoWÿ*˜¸ëº‹¸(BÚ K=OÆûúãøÚ'ç-2éÝž=ïléï\óßáIÑüçë³ûÌÙ_þgæ;b®¥ÙŸþ²h§–ëÇb]±éá ¯yø!ñÑ%y~ש~•]˜?/õ9‹oï<ùäð©…³:n¬L]0wÚ=ð ‘±Åqp|Àód‘ÄíÆø‰þ¯í � =ý€|i¢ä=”ÃSËÄK`¥çìð†ûØcp×Ö�'�pxüÃ^­ŠUrž_˜>@ë çÐ:Ã¥ׄ!@¯fÊû2°ìÞë·ŠŠ=c÷¾QÜR€ÿTä 0Üä·œsdE†ó1q £tàun:¢òðþ …uŸ!Ù¤¾4úƒð8#A‹Z9§p*¨ƒ¸Þ€’Ú\†÷"åŒihŠ8È+qsUS�ñ™´á2j™LZÌpÎ5¾�¿ÆOã_ÿ½¶¨º³•lG¶[¥UA�ªiõ¢k—\»òæ?wf!qpøòŒ«|1�¿- véWüV�’}½Q»´­•–ë(÷¿tòÏíuÛk·—moÞ^/ýýÿ4¿ÌŸàûįøù~Ôÿéÿÿ¯þŠÙ!×A�SñÂ"»°xt1 �dAʱB %{µø" 9­ÁvZñ]Ÿ UèÆÚI iîŽ×ã[_Hò—tüP`º„"jGÐý„«øË©´rkéDIWÎÖÈ’D%3Kñ/ÔLàEtUÈx©ãýK# OB(p;“PÍVúWÜç¡ Füá?,1‘‡?!É·Z, õô=þ© o²Vkù+ѯ].Žg2è4ŒŠ"ÿ¹3nú½îù ,ò,匼Y£$ŽÂÀ÷àj¹˜Ï¦“ñh8è÷ºíV³Q¯U+®c[çŽÞ‰^ìß×ù0L¸¹:xÐP9Œz÷ðq6vx«C³#ر·Ã‰o·ŒµÁ°uÊÜ~Ù™–2þ'…BUxpËïm8åá¸òÔ–bx‹gߨ¥ÔÍlóÝ%*‡*§Z÷zµMIÍBj‘te´H6‘ÁáPÅšŒo–É/½hv�1æØ²_•5eŽÊg±9¬‰»iꂪËÔ\_µx›k$M•‡ŠëÐ+¬1ž§LkxÁ_~ò;ò‚.ó|ä¥8Âæ{ßij;jô¬§êÜ)1Rcuç�LPf­g«¿N+_—©`÷Ÿ:ü¯„”Ä2䛊4¥Û…/Õ¯êuý$â—‚©mžž*ñie¼FxÐ}í*†ÐCɲV"Æêº5=~2eŒÞ&~¤lÒŽìÑË ”ƒ=<�vÏîÛ#*ЕŒ?ůØñ¿ üc)-Õ'¥�沌©q&·$…ßÑÔ˜×m@k-<¬¬×m�ÂÏî¬üo1ã•ÔHÊòñœ7Ú™šë4Õ>ˆ Ë1þª9‚xvêÙF£±awC« «DžW%¡�Ï>#+of”Í¡$ãÊÌP»¦æÑ�èh™ÏÅmÞ‡û îÄø(Cð.ú®¿¸ äc…Æ3NEGª B¦Ä…óK‡3 Ö÷ÕýóÉ�‹zU"Òeæ©ԃȎæ€ç%¾ê6·é…§2Îs"Ø‘bÖ!A-¾!NºœWPZ^Ðç jghr­¹y8Îö-7ºôž†q’¬‚Æ·LZ¤Ý´–5låï7Ô­V`æmîm‰ˆÉX;`]‚‰j%'Z›ÇL€v~¼ªbÏ*/ñoîÔ›îC)ðÉè‰`¤w!íR뼡{Mµm#“I%¹{ŽëÏÔZ©yäùpÌy–|’ˆuÁœÄãA[xÖqL긽L Oâ:N2ñ––A__Ï`ÑåÁ]þÅHvÙ\ç›Ý ÐæÑ’¯¼D“|ÕËÑ…›è¹�mU«Ä(p%Éýˆ®�´ÒT¤O†:òQUöË9æ–A"ÃcÄZ¢ê‘Ù¢rŸõX 4ß]r@ߘyÒë‹Õ|ÇŒ]sœUîaÉ9”‘Nü’¼ºc¡¸¥çmâ—�©sÇ{‘ åжò[f¬WÉz 7ÏÙ‡2íçH$ûüÏýK…‰òÄ…lÖŸEt[rÅ:wH wx„Ì¢Ã?:¤érÚ¤6“\VHî$å>ѵ3‹q¤á^úÊQ¶»† 45Ú�Œ+ù£D“dƒ¬ê«NÐz›ç@÷ôkI) HƒLû}ÿJ }}ó õ™Ð+êóž(Te Þ³q¤kGðÚÜ¥l@­rË/MêðÛW¶‚¾P/¹=žÊ¤�kS¹íŽCž¥Ÿ�’-€ˆ%5Ws!òœ÷*¼ 2¿%ÍWѳ "ÑKaön“›£ NÉ�FÅ@CîìIæ×òyðÄ9s±9 …¯!ä[ð4 ˆráaZÚUþ/æÉ‘­jQ£MEgæßôÍüw ¥ÜÿØI0Ÿ±/ÒÀ¡y/»Y®üN±âý¯‚t ÑÓ‘hí�ÄϼJÄH;ôp9ÉF ™>؆¿ ¼á$2Þ×´ò\�¾«îš¥Œ¹Æy‚`O̼€#uÞ/a>Ù}©™‰¢âŒ¦'¿&ƒQ|‚ÖÌVü›ò"\Ã`ÜÆœ•Œ¯Q6œK³ãB{qõÿ½—'©êL ®a†¿´r¨©aˆ¿²T CÑ;>ÇÌ5�/ÉÔ&õJ*sáSÌÑP{ 3’eé«vm1ÿÐâïBŠ8Zç:‰m—kß‘mx’*÷4蛇ý)pSjx Ð\P×ì¶V¤�-GdmV?0Qð»%�›ˆ¤ N°s ó?šòvÀ?‚ <ŒmÀ�ß;‰òLr�L³I䜤Œ¤»à"•'7ðWOεñpê\¦î¯@¸ÛÒm"=»= €s% ØäYç�à væ “œi:‹òº({<ÉÎÄ2G qã× Õ¬á"™`UY<´ö/ÍZEØ9,»´"6lMÀÌ›`„bÆÖ L*é,‘ÏK ªXWv.ޏâ­6Þã?÷ÎíjRVÞaÛ9Êý�ù«k¥.Úú‚²G_!_îþ�F»bì…³Þ^yÌ-��UÁm4ºkŸ¼±µÂ°»¡ÙG1êéCó}òVM±�‡çª”Ï~·wx7ßWÞúåi*E•Âg"I·ÅõaÒe¢f�wSYnª×§R*•Þì“*÷YÆ)¿¿8 šGó>FÍâýÞtæ¨æÆÿä׉ûc³7÷=µ˜²lö7æúDÒñ½‹Á j©ZÕ+Ò@V'ØÄv¬/§¥%Sbºžíz)ÓT™�®çµXü/Ù_ó&ÕªWXDJi4äò!­ZÇÏýV—sÐ0{Üýôô*ÿ=BÝÊN®ª9ú[Eþ9ËÈÿ k3ùU®Y<#uÉ^>þŒî´)8¯l4ÜÏXGÀÖ˜Ïà,àªÖð-ùw¸‹(²Ýq:)óé~±7QKƃoØúrpþŸÕ(¤àÊÔ^N…œ@à@ãD È”YöÛšåžP¾< Úº=×½°™Nó�á“3¡ ›:üï1©ûFEù�b='é;M¡lÙðKž,ðmU9ŵšw<ø«ôÄølº·¯ {–]ÙÞtÎwbŠÊ÷õ„aŒÐ{FÞþnU¡köjµa*›åÎÑ!'ªz!‰þk) g­ìÒGu‹ ¨ ØâÖÈÆ}0ÊïÂ3"x¥—Sè|˜6ª¶=Ùݶ¥ô' §´B?@”#ùj²ÉŽò�(_r¼VvQê¯ ú×D{ÅÞ;gâ5„M}pá3¬ÑÓ ±GŽ•‘�R‹‡©ÓßKé«–8+û4ºnm™Ã�sÅ9Yrp›ÖSçkô*6„^ëV5¨n`0]i²º“jÏ{zM¦£j ŒÃÒ—<ôš8øËÚu"‡s,Rj¡¸U#{³ê.$k“žç²Ø9–?iA¸­öF¡X ãÓìéÅ£¤­ÒÞŽq·ÌPÁ:‡ßjÅHn;-Ä-‹d4²-©ç™ËRµnŒ2jS›ò—T¡�žÅN!¸(„,™`\Ž ­+†¸„ZÉ·p ò´ÊŽTº}•ð!›é­'Á“‡ ß1"�ŠÇÁÈ3æØÑIhŽãCèLÞ4kiÙ£Tñ‰¥h±ß̳ôA“Œæ(IýÌ–fÒ”¥à8Cãܬpq „,¡¬§Ë¸lÃ6ùo) d‚ú" Uóã9õr5…"ÅeþPžúHJ×Ù‹?Ë·ú Ðî1¹Õ­ö‹Ïïüa'ê8ã4â uÆjþw�Z}_¶H]š”Í löå¿«Š¶ÏâAj“­¨{«=„mí­ê…M{šhvx”æ'ÇÅÑ'-„YCûñ§@OŽƒ�xö¡�MLúΓí?° þ\½}jeY<]€€Ås“è?�;ê•"UGçøãÖoní#‰t5½tì&ZÕœ�Ê.ͱv³;rž9•^.ºpÔå<­óÙ»É:&¥Ÿ2¤¢H`ß#W}·�”÷D1ïÀ1ýc¡‡,Ha®/J‚‘tX·¯ÒAôŸ£³Ýøÿ@°µñ§Ü‡æíÖMšùùΗ1½#»G?ÐU=ƒ“Çdõ+ñO?>ÈÖ«0@d¯$ÆWÓ…‰)bZžAà’WÒBÁ)–B…†±ÝF„ 9¢)Ckgà×ùù0BåÏE‹R[4�a² йæ_[2Á¨Ü&è{iLÖLêzÌŠy–Ô¾ãàƒl Ù°� !z*xð;’OaÉ2s�ãÁÆK™�ßäŸ^uÚè™É±ÎšÌ yÇšÅÁŽk·kbÝ¢Ý$µW­sfÜâj‹Ý3²bç°¥2ƒ.? ,Ÿ@l´¥$Ó·ÊÃ5%G•?ö¶uË;Ôaµgí�C7f­yäÊW á×~öj°ÝR©”#›b�˜ªÇ;VSò%vBÑR{Q/EÆZi¡çfÚQ÷æÈÒñE,Ee^¬"ŽK™Ïòåb¦ °aóØ�nµét—J&}~¾´Ø5É¿§ëš¯�êÒLh ×¥¡6Ÿjêäí}Ð_K¹jʯZRVÇBx°²i‰.|Õö¾;ÅùÇ�ìʃ¢R­\¿ò6F0¾W ‚ê�^c¸pCi 2 Ñ Á¦a.8wæÑCE#¯ç¶ŒhÛ¾Økz;ÌG«ÁyVÿ­zªm�\Íÿ%s±íjhÛ7¼«5ì)×U/ÎÃþÍX $ 4!l]Æ»w9§dº(‡>ÝN8ÁBd’4ÄÉ;”Þ~×èFkÝ£—º~ɾ„^Òƒ:í<ôË�Ý4‹ø5üˆŒ+±Ò´½/@—má1^p¬‡õs�cüô´—åõ$]ÝœvÔðÅT!éÆe®Œ¹ÚvegÚ\uÐÜÁ2M×Ú‡,×5\}3* ók gÝÙó@Þÿ²öܲD™Œ`�÷÷œ¨Ïr™u1ñQ­s´ÜGŠf’÷ÎY“€ðzŒQ?$øàrµÕ+¢"¡}{aUëAz‘JÁÁ ‡€$×pý›µ¤ýq– îm‹°6øy5¾çÓƒÒo½¢®oÓÝhûÔ™G#ONM‘gh ÚÌÔ$uʵ5ÆeYÞ>”’]¥½edg`Ôáo;m­Ÿç“ 2›œùb�´°úyý›>£�_9¹XA”Ö p“ú1“ÀªØÇd:Ølwiþ¯ö7œ²¯Gd«H<Ü’ËwNO†‘bÛdä=•ÀL:Ë+-(·¿Q$>†ö×ÛkŽÊeRheäÀlF9+81æ·Œ2-7…ô¯6�+l=ÓvóçŒ(rËúãò«��ÞÊJ.H‘q|^?¯´Ü‰Ey—[F•Ɖ@H?ek¹¤±>Ëðh¡Õwì0{‰?Ο`=—oe|T”eÕhl}^¯OÜ7Y7yükÃt�Zêì¦&1Ž”�%:ÁÐyЬRJ{¾ãKG°4�ñr†ã¼ð8œÜã§l/•[��YèÊUÐ?|¼à¦Ÿ½v<¶bôî±Dê§w\êÖÒÑñí…ªó­×|Õëk23ë«ýÔ¯_öU«gg׉}Ô4nލzz ¯ŽÌ�U‡f48ÕëZžm¨iLMë˜ ”Å–´W$ 0PlA«˜Ü «=ÏI>R�±9¾žžêë£ð^ßïnt ¹¥6�òHL®öùªæÓ<]}Ôá´›‰ÝµàáµÓµ^ÃÝ]H5þQ§¯dHgwD/볪”ºRM³H|´{ 2<�J¬N/âw;ã-<«i¶çÜòÖ¶ÎNp¼+ÓRI>(wÃ�íg>o�Gy¹:û¸¿ 8»¢üôS²ðl—X­•Ì0NZŠ2‚µÇ§ôMÞ˜­I¾±žW6aª©Ý¾_O%u‚äŽ OtœO=×}H­i~N-í——xÚ×ZM :®íº±Í+Yà‡ª¯Ì¥eú§µ<̳�ÈÊË÷Hó§ñ(óøê¤bnNê…f•ý—BTíJ£={m8‹7I 7g-/œî¶¬>Ý?}�fD3fÕwéQu±ùG®«VË´´G/0‘5Ŭp e^HLoÔ–¬<çöý®<Š18×.,M;÷O¦¥Óùá®J:!wÄO „KÝ WCjú7œÈR{!™�™Ñ :‚MçL ŸÚžè ½’Ej-\ÜŸú ÁuXˆ5¦”9h0µÞþ¾x…!ûÞ¤|å)jä¨ß— Ôÿ·GÇJjl4~s¹C§h‡×Á3fMýôp¤}xûÿOG¬¾A:_x,Sß<_ …œüTôÀŽc�”P-Ö�ÿ“0­ÏUûSZÆoÒ\eÒVŸ<8ÐDý´ðýNÃKï†~”T•Ë]ȇfÚþ$*Ã<80÷$€pt ‡ëÂelÕW—Õ6{¼«ìÇ™_î…š¾{WhTõÀfu]jä貚¢Ç�\O=¡o€jþÇäÇ*É4võ¯ï=šœDí«<�“Rꪚп€|ÉÝkŠ …o#‘ÀöezÞyì’‚Ö�òýÈà!ýˆõÇSL�ÉÍ?SƧÿI‘] Ñ�z&¡Ù�z¾c½ÒE%¬¾<™¤þ@25}_’ ~ÒøƒßßÓímɪà8¹ñþG78>²ÚÒG„¡^’ÖºÁl<éÍ©Éh_i®÷WÕR´åêå{Vâ÷åÄCÇ?aCˆ›|é;{¹)‡ÞSË£¶¶nÆE;Åt±úòö{Îo'Ûš¥ ŦHÍêÊrùk^?]¢n} ¾%™ÝsÍK?ì”DFÅv…T9D‚š‚x|§*fnžì».wvm ÍøÜr†� DÆ5åÚ–;,&r:Mêft­ÕyE›6._è-ùú¬+V7‚üvT·xrãòFÍtTÈÑì% SÚ–ÏèÕ-èòÏAI†Ñýý†1æÉ$]̪vN"f�ûÇHËòþe=†6劃ٔY�yUsôÞŒN~LmQzF‡­A?¼¯Î Xza×4²æ4-ÛŸèGh…ªm‹ÒN1Êý/|±Ã¸k­¾ªµjùÕŸ…gRñéø¥ó'Œ|î‹7Ë.sŸv4«ª=©�ûÙë:ðG—»Ü;`c˜Œ¹˜þºÀ²€7–j*R¹D>n¡+WuYù™o+ß Ö�³û¢L·ú¤¹oéoÕ#(ù€A¦#˜ÎÆPít´ÀágæÖÞ‡ò©•ּػ)mlßœ’ÂiÌ{ 3¡½Î8s!rÎ-ÀWvðšÂDn*73ŒÛ¾2Á®>èp¬ Ó"Y&È‹–­°D¦cl·‚”Ë¿@Ó0c�W×~WvAÁ@qD ׵ųÒV9tM«B¼€`Ç ½ÑÙzŒ³¤4{¯0L˜4R…C~~~vqaQ~VQiQFq¾½n¨Îmë}Ô–ŠabPµ5Y4OgÏ5^;WWR[QÔé·Xé+(:ƺ AF`tÛŒy¸�ÛÀªÝ=D¶ïádµ•Ú·YcéäØ?UÓ±þÍUdÀ ôÁXm]¼Žµõ�,Q�¸%îlJÕù[÷³/U6�PèÄñ50¡Êܹ|üôíc›ÕY¢ÌÁ–ã‹qã›a.¹±^�iUa^óX¡Æ GI‘?Y Å '#!\%7î©HkXläù‹g·„—K®oø1ý;ã~%›” jkcü^«ZÜVUÛIJ^ºœ"j#lÕ.þó�Ößù¬ºäŸ En­-);«= ·&ªÂ�mKÈ™ØÕ€�#¯74>%ø×‹Ö³ªì9�U­Ó’ëÅ¥NwXñkDˆÈÉ·!«žåtO¨Áç\#??¾6 ½Q¾Þùâ±ûîè¾¸ŽŠ=y*®æòwc£Á¿•Ôºªñx¢¢AŸ ¸¼âå4„"çöTZÞmy°Ø#}wù²ô ÄV'Ò<àà²N· ¥`ŠÎqeÅ8×3)„zÍË &¼ØRoCw”]Rbóz@mö„å³n4hÅ-º¹,"ØÞ›�L²J„v…dF4<ë8Οµ"�ÜE“n(5»ˆŒ†{ „žñVñ)•še¤‘mÃ<4Uq-^Ó™ÕäÃh«¨ï£õ!Qcÿ£T¢ª¸q¦� ÖïV2H ¬±¢TÎÑÙsõ7&×ëŠkÊŠZ#ü*QÆCFû ?üÒ¹mS8æ>¦‡þŸm¤CÐEÏï]^Ò Ò"|Â+ žhu©÷¯�ÒzA˜í�ü{eŽN}•¸×Pòîª?Š0縣(Žt0Ù6w"=�Q͹¹žgGsF[:{=1õß–w5¤Ùlå×Új¶L¹i55ž�hšdÂiZ‚¼-3M“Žž5N¥Ykò­ qtçŽìß!F$öhÚ�›ëÊuµ—)�L`â�ÓDHYçùñ%ÐOùLçn'"fAú^ ¿“ÞÙÒ9 %(>©{AŸÿCƒÐøVðØ®éj—�Ãüð¶ùû$²tOp¼êávuéõ>Í–ü¯‰_øŸoéûÂ�ß»;¹»´÷ktS¿ÏZ¬µÞÞñ9tvïv|ßf k® 4J~)¶g¿r•ƒÃàþ‹ œã%…¬£›QæÜ—òÝtŸµæöÏŒÅ3²3‹Ÿ˜ ïÕ”çÓOEœÙ Œ^@ÛÖøÀÙ #f*~:ÿt¿_’ôz¸ÿ%©º4\LêÌô¯1ÿKöö[ÛŽl݃ õB¯ö3þo…£ó:Iâò°Þ›øoFGN›ÒŒïzùІ[dð£”lh‘Ê.W×Z®'¾€¦YT¦<¢#Y~®nÔB:Qˆž•DÈ ‡KžüšÝÓþ,¹ìZ[eÚÆz­d—å—Ki¼Ùº,Ó]âæÏÔs[Ú‚ãS:è�CÙÍÍÇL®—‰Û“a8K¡WC˜³p Pòtκäõã%qQsßX™#¦Es“ËO¡ r&¬¨`_Ú¬Ê-+£S9ÓÔv `2‰ÒëŒWöäYD€A.É6)Z•zóÉlyÍaÞ¿š‡OwʲçÃ÷ Ýh_ý7áícÿé‹víϰrhÂ>_�^‚v™ŸÛ~âóMò±™Mµ•¯Œ\¨ ô�±Åøü�SÇþú$/¼ÿY4æÞÉ#dõ�±^§ƒNâýöR¸rœ>Ôi¢dT£dÔmb¨³APHØÇ„qÔWœNÒ€‡×y¶W©¨©švxx ™‡E‡‚°µ:�/ âŠqŒ6ëL=ÉÏ턾ºU{ɶmœ¾è@¾´hbL×%G(h¢=º�d…¨(aömžŠm‘UnµbéC ?õÊØNPÎÙ� Ù‚®@–Hí%ê©` ~€› 8†^Ú¢7´?Ò툩?WáÁž¶ª )IëË>Ë?~5ÜiþG9÷矃7E?…ý†YnKÈ9ÒÿËT8t˜Ò”Šùåæ%}Ïý„÷̦¦ð#칪¯¦h{óz=#Û«Ë �R}�ö±KÕ!o:ÂdôeÉÕ¡‰‘O5­}nV8¡C59¬6ë³Ç^CÇ•^Ʀð9OÚ:yÇÇØ±Š‚ŸOœí(™¯á~S”H÷ü)ŠSÜÙéQüXPóû†:Wëž:,©"3Mq&‘¿ÑVé¹Ç1WÙOmÒÞ‰&i‘ïØäÿ›;-Ž!ì1º«UÁì±a ü‰@Fw[Âà‚Ésüü¦I0:® ٮ¯X¸ujÀá"¥cñQë’&ó�Àúq` ð‹¸¦}ï?Â!Ň#û|ΩþíâÚ1pO̲Œw »Í®ŽÛ‚áJÊ0ó-·<«‘ W2 oæe”ÌŠÙ¿©¾6Zq;fÃ�òoñÙ?zµøF2Ž�³- öôbÙ°ýý‰ ‘îòšQŸýÈ÷YêŽË§±ªØX{JYu§zKIu«ªf­+Gü” /å*ÖË— GQ�6²ŠaŠ‘ ¢òK9•µýiè…¤ Ë£ä‰ÂÚj&§5ÌŽ¨«¡Ø®]( ãø6ÂЃáFñ–¡\q »Ïv.0-²9�^7ŒÙP‹¡™…yÀÍO€y<œkÓ½‡n­ñ­$¨dÀªÊ5Ù¯“Æìƒ,æMušàÿC„â—CšÙjËÕ¦ç@Ì�:ðoKBîÜ %¶Š˜aÝIÈlߤ.›]Lnâ²IM5ô°ÐîDÿ,¯„Þ žhäH¿›@祇GØXA$�G�N Á¤E ø.Ñ>$* ÚöBTé' Õ,¢B*‚IEàP)Ö«˜ð.ö�?ÅÛ<• ¯ÎϨ9¹í-ª¥¿6¬ ­ÔÜ©5¨2.D¤¾0¨ -ÕÜ®Õ�:®?Yß%®í®=±ÜDé£ ü a óòëÍ×Ûc:0 ®åj7íö¦)“>œèy@ú-«µä­7Áu‹MåÍ3}c˜ã�òŒ:ˆ;OÀ §¥²ãdõ×Ë   2œõ§÷g6WÏR]C/ôVæPj:…ÉGCÌ£ŒÌ qm´Ø ŸFö´aýAA±aA©c9ô?�. ¤�“Æ ûú„SCŒŸš(¾Œ€?`ý@¼—G�¯>ož>,ì¢>Ôlhiéê› £4k.ß4%5y2cÁåxOµô`ŒæÄ47ýa™ âê»FS¨Ž‡’C9ƒœ¸êÌ™˜¡}ÃÀ@÷ï½ðŒ†ÕB&QÜœ-æ„E†P„¯ g÷¨¦öO±s2½6 Z¹ŒO2ûBïN§–g6ó@á æáÍ<ÁÉÍ_™ iÏq0E‡Ô†Ä”7hƒð#ÓÌóEÝ©±ü®üK×XNaþþ)ù}«L£IÇa{=Klï›§¥ïFû^?y ý8žÉ›™fŽE†3Æf§ècj¦¯nq ¹·%à•­åLÏöàÕ of¡´¹ŠK×9œvóHU‚ÕɨÖ)ºÞ‚7æ„…ºÙF3}ý¨1QQTV„¡nèv¤$$tº&Áê4W2Á¨´ Pˆ»ƒ�RqΆ{H÷³àãIHzeg[uµl¢>�ÂçDÒèQl/¶­3êkÃc¸«âžÄ1ì½£Mê?–›eKÍ—-C\ØTˆæi颪�‡!´9æìè˜íãü Ü¡ýO¬ �ÐVxWvåW3U7ùŒáÇ-,ŒHÈd©+Ƈ›è„ÆÄ檓ï#?L+�Ûé, KJ—s�ÿ›go½8'iaÓrǼË@LA¦º4QÃÜöÿ‡-^ŠÍ[õÔ_|Ï ¾³4'»»ÿ$ðVÇ©©6×[.C}O_jÆø'­wjH¹n00zL~òHý<µä~Xx�žtÊØº€w•�Œ(Z"›¡šjY@ (mePÛ5y³ØwT¬rÅô}£&y:»ý°ó!}èÍ"àg¡+²†ø•s©¦[¥�[ò³okÊ.¬úß3Þq¿‹dy_ ažYgÉ!>ã V¶‡¸›QUF³9eIj/ÉÚ×!¬TAÿrEƒ£Ý{ÏP!Æ"˜Í¿s�ZR~>8͸¡²v¤­T¹‘ˆâ›PÄÜ`"9½žÅkÁøytn —ÓˆÊø…h–GÆ&““%‚’\iF2…˜XBÒGÃѼû‡Ç^D´•l[¶pwˆ«}àH–ÐìÊz8’òÙ¬š±ÙùÖæñö¾|öîñÇFøÖón %‡|j)¢˜ ¢„Rʨ¢†¡ÜÌTZuW#לƳE�=œ¼¯r‘ ‰Y¶£xþö•²2ÍÀ’åÀª£Wy¬qbs£{ŒÆ�Kˆ9—±®;rËÿß³íÛþSÞ¾uÏ7®ÿŸ1c󎽻}šOö)~Ðùq?ìGüDv¬Ø÷—OóÉ>Åú!?î‡ý'^§À ÷áÉoŠ`+˜Ô3ÉN¾`ôFi“Ýð¢[~Œ"ÿ+¿1iÞ+C¨Ðñõ>eZLõ+þ»ÿ'í–gÕ–ÏGt¿ˆZ.c#"†þ¿P4îÄOŸ,C®‘ˆÔÃ7Í"D¤af.µ—W®]p5 Ï(>E Gݨ hz0›ºÊD[ÿ5°yÎIAù:ØšœCkù®ôþæÇló�¼ ‘É3h>bѱùÅ©ä[hî+àÆ7ðyëe�‰kÆ:ù6ÔüÕü7±"ÂÖÊep­�h—pû†.,[^‘l(›/±hÞ¸,¿Â)VÍæ¹ñ r ëeíâÀš±Nù3ØP VKCé{ú¡kïpŒ)\å¼Âþ~cüww|r-ÙYˆ^©©{Í]îFƒu•pœUYf­B­�k;”!Y ¿ú®ß¶ÎoåSÊŒW+¦£££�º¾ b]6›¢ö¼÷ÅŒ£`‹–åàfg|´&êÌ3Á2â » 5NßZžò¶ý¯Âý[ùXé;鼿¬Æ¸~‚`¡Ã­+Z[´Cæ‚݈þ^0âÎë„÷ýí46 ­�qïHŸ\Ý+5ãÒ# Þ93òÏ”gÞDèW�í ?/ŒëÊ(k¼2 ¿îÃŒ›MÈÚãð'ì»u±³–Þ>}[|}ßúð»ê÷Ì_Û?ܿ؆ÜB¾Cy£BPI¨>Ô4]‡ñÆFáȸi| þUÀž1À-€�MÎ~%:ÑD1™($¶G‰Ç‰W‰O‰ß¯(�D’# Cb‘RHÉîä#åd àß7 ÁŠÁ¿ ¾ü*ø¯[jT•Š ’¨\jµ†Úk=‹808`ÄH€; Ø'2Pc÷‡@îU~¿7Ô·6±µÌØÎK·ÔŒe½pW¬¬50ð$s5þýýß´¦9k³ŒEνìDiT»ÙИÙ$\'Šom‡ wßf‡cCwH3KKYpð=o ž¤_v–1E=ËNZ¨�ú'>0?µ«NiÉÅ·'öB¢¸"/JÄK+…‚4ÌíCйÐF7%v^€Y£jPÃÈ)Êæ0mf¯T�ÊûYv>êU_ŽJ³vªŽiÇ á1c$»Ô5œzNŠ§Ã A”øäãi:™B ùŸ¹÷ÔfäaZs½þD}ã_•S1�ŸøÃ�w8âôûË3F† Þ0vý£òh¤—BütºPVú¥õ��ï~6ü¸Ý>ÉZ‹þbôÁÜOùUùk~y·É:T¼~Ñ™ŸP‚¨aÈwî|¼Ô%%þæËsXé0 Âmi·[âYÑUx!„RŒdi³D#È�Ô*^…ôÔ¥@|@f4ón> M€R�øå—ÿöJ™l¹'ÇFU]ÓºYþZ\Ý�ˆÿ¬)×1�ô¾ü®žˆÄŸù͈¨â<ó"dv–uÒP¹K2Bõ$ ¸xÃùÑ‹aN’,Yx©°·âù@îƒ}]ÅSö·…û¦£Gƒ~ àïÛЃ ¯Ö͒иÿû{ úãò¼²{�[6 /bùìO¼g·ý^¯Z�Tm:´C’qŸ$lÞB–pãm™Á½SÅvR Ùó-x³îtŸÎr'þj9 pBýÀ%œSÿ³QÍ¿sgvU0ËɪÍÈöŽ"Ñ�ä’¾‹€+–üÛ —6¿ý«Sß,×·Ó™ö¼ãB§>¢6sQw—µA°ñ ú0>ï_M×}VÒ™-Ôo°;¬›ºÕÀ§�£K‹ÃŽ(�m¦€� …�ž=o󣄠¶ço¡I¤mqÒX“˜µv˜·'=Ææ‘m…¡æ ΋#ˆ¦aÇš^t›É°¯kA¬\õ åŠíÃN\›€IHG!’¨ØúцtÏÝBgzÍKFjâAûáŽ&°ýM‚ €q0±„3½›Í"ÝŸ±‘}åKØJxË�´û1”Ä��ÉìÆPðÀ#¢W·À6MÈ^½–±À¸N|õÅÀ>ÿ'þÛ•GQO6BKæ=o÷�’Ï~?�†L(¡Ií£³ ÁÅzÖ­ptå]€Eøªzä>"š�+�y¨)<ËRܺŸ-n`n[‚MŠ$%à]‹,ÜPôì$™ÑeÖØ pCcÂlÂ誌,ë¾›aÜ/-Ð(ðÅb¹&Ç¡?(Æúûeœ˜à=>PÎ$©k˧Ž;”•“ÝùÃÒÚ‰[ÇÍÙêç>3b‘ÂæT Äúµ­I0§V.™êbºó/uD$O°¥à–ÆäM°u@ð¥®Uý7“.}câ¦?dßbáé·Ž…l¦(-‚D}ãqnÆìÔtB ö©UåÍ`_†9Ï–¿ŸÀ%l3ˆƒ"�üºAÖšz‹V6.Õ¥ùŸôíÍ »>oE¨^WëËÛíýÜ8�XÅ0¢ÎFbE‹¥[…„èÂ<Ûzdå¯Þ"¢DIrX:bš{L†T´õ™TÊužê²�^O{¤q¤F!ð)±llkåtþj ép¹�Fÿh{Nm4½yγb­]ÄS° TñmËÎ$ˆw‰nø© uRæ"Š›5rœCM‡†‘lN&W†�!pQÇF(1lŸ®ËH)3cåÁeUiõ§QÌ á­w|è…€€-„ÀHì†TŠúcàˆ¢&7œL€Ón)þœ–abR2“I“ ¸LÉi(;4B¡Š�5( có¨�gŠ!ÆÛ7@A�œ3ÓUHí™eâ�a®y"ÑhD~VI:Êz�xkƒA‘òPø^ʹ¬ ¯CÄäd‹•�â"5{é#1·ÈÄx#uo ^Hah� 4EJ‰d2!#êÿcZåx#½Æµü•&ƒÑºc‡õNç�È[‚íÈÿI#'®¢Õºþúvó©¬Ñ^N�)u²ñ—fôæÙ×£wK"‡œqE´±[ýŸþô/–4êkÝ K�!íxßíhõñ{ëî®5‡ÖO½Á¢Hpë8›Çy?ëõ£  å¾õ#ƒá€wºœf–PžJ=C·ÛßâXB Ž�“2DùdÂV^Õ¶º¬îõmþ‚U†Eûìé!áp×^!AÓ ý&c=u¼°¤ � Á9¶&‚§ÊÒ‡Kõ|ÏZ:Á- ü?íì‡ ˆ}õ1šÞŒŽÑYi¨Ðén·ªÈàó4§ùæ-×— ¬�ª`»1³ú|k½ÒáoÉCÔÕvf_á ˆ°ÒúŠ(ð�ÁßòǾ'A™÷1C³ÛË¥ÍüIVìâåF˜nØÖ[Ó‚½™Ð’à^ v5¾jµ®é©æ4qå3:TãúŒÁ‰UrÖ‹Å0¼Š¾ü”B×Ïʤ+'l·$ñâSÞáÔÒPÁåˆ:úal?”‹@VÖõºÐ~d^ãÙ‚k'Q9R— ‹çEê²ÃY²&� §Se\òDa¯ˆÄ"àèL•Å쫹¹¸¬ -–»¦ D¾Ñ˜pè!”@¸æð’ ¾ë=þâ\ß9Ó%[5eõ›c_- £¤œ-©ÇŽ<+v-�öæò‰$%V¡Ü�KZ€¶^+Øiïê€ICXE¾šÿa¹ÇÝÝ‹ÒìS���„Wžðx<ÇŠ²rz/ö<h„¨›�¶ ¢ ü�mñŸš”øSç½úùž‡'Æ¥(sr¿|™’‘²¶VX�a÷ÒçDêžn¹ŽJÎk)|K�K‹ß¥ßèûiß’©C½.Á£ÇyI• ‚͆ü` =Ø2”ÀCi4/Ï’$­A9£›ÿ¸ûAÊÌpCšÛ+ƒÔëIÐbqý?‹P0bÖ'¨Êð�ý†iáZ“Ýs�¦:†4O·ÐèNÌ/RW´eñî|�ÁD}B[šÌ�$m3þ§juÌx†¾u,•*Ü 6-ÿä”§·oc[R3 ÇRKÑFÇoÕ0â´?ªŸ/}¡):v3Èù=Î:­˜ëîv[o®ÂÄ Íi´Áýf®ÏÒdU•­@Ý„yŠÐ�¹·T)Ì�|x8…àÈ*sW�Ã7ò  ¥°aÀüiˆ�_F`s­KÙ(9>ã ,­„g“*AŽ„¦T±*•¨JúÀñSË*%ûuó}�nïŸJåìØ­VTnÄO¶;íå˜�mƒY¦2„è—�KâFq‰®“·qþq£ÃA$V3%c^5³–Éç ñ¡ í™ãòÖwb‰Øœ‘ƒ–‘àö~þvr^¼Pa%˜š”¨ð9&('©=×Ê’&ðj2Š{%³1öô¨uëÔ³_AåÌÊS "˜§6Äßœ~¤¦õ{KI¶—üdÃšÕør–hf?R“û½¥$'À<3`syóËáP ùýHMñ÷–’¼˜6Íz½u‹V¡ñ Î�Ë×)f!è ÇÇÎ;ržûÉN×Ω0ß^qy‰RÝNmSxÑØÿ�QêX��涇®Œú7‚](?.@¡Á¤x±YCc�#êœ%amóÇêTbde–×Ëà‚þ´�~©Ç5¾Ùõ�à�¬ ›�ÎRõûá))R¹g¿ ^)¼3íuì¶cŽbÒ%ž0!»Ð»ÂlÂ37û•oÞ~mëݬr2 ³ iá÷c¨êyÒ=ÅÎGõŽ~JŠÂqÄÙWÊOÊï/¿ ™6ìVá à…ªW3ò£³ý#¾’im‡ãxÄKÊñt’m| ¢3Œˆw¿ú&ê Ât�ì�ã ðš•÷f6¬yH›¡ºÒ JcŠ�al5‚yߨÜsD^Õ@Š–±yG-:©Nß6uÝÂ%ÛÔx%ázUûq<(ýl&#OëP•eæ1‚�ñXÁ2õ”ptÈÃlõdNB¥^jtú®†ÙÒvréŒ.ÞM×8),:˜eÁó“û ýí„]ãÒÿÛ¸cuzäÚ®²¨HJ�Š Ù\ê¾Ç=°9/ª_ðë°º†iVÈ$OþX#C*Sk¸�Kqt]¬ÚݰŸà»!Zn•"̌냔s%£'QöÜê?lV‰I˜CC/#€l tl‡½cØp×ÂDBèQQõ´KëˆCö�äú¶ÅGÅÜÂ#²*š'3"×¼N¢”uË6¬¹PÞ¸)H¤u¿ À ëmݧ÷ÁñÕ”·”´M€³› h�üO¼!¨m�áêíVx®ÔnSÑD>×A‰°¶ ÅŒšáG5Žw@¢z²P± •¼uó§PÙ6àû–Ë¥2g׬Ú}ÑkíwëÛ€¯+XpŸÁÁ’Ä!)Ö¸T9àˆ¯ª´?í·$cöEa= k#Åÿ�˵¼»2ùèìRÒ”·õ¯¼ ‰íŸä¼çdØ…maå‘à!lMÖ¸oIuÕêQácþ�ºνŽê f4f6�‚“_\nm=íþrq[çobàÑâÜ�(´“׸²¶ <¢o÷ª±ÙB©€ÌF‹ã^@a±;O…,ñ•µšµ›�q»Ș” žYÂZñBéú~'7%lØd@Ç:†3T•µ¸.QÍ.=Qç4÷{»38Ê4b¡u=TPû?ëÀ¿˜�yC1lÃÐuÀC`OJ¨8øçüÿÖÓìÚ@Ûéq=ƒ±k§(ðóÊM¿ÿµøS/Ÿw,í� hO(mSÁÜbÒ-X§Ã«ø;”:ßc+H5~àÒ¨ÚÁrcI �`1%¸#+È É/ˆ»IšÞ· Ïk°‚Ÿ6ª�ÞÇ9º?é— Nu¹”ª\?}ä›-¥þ¹÷› v÷¶«òWöS‡ª¡öj1ÜR3w?Œr1£5×i[A‹Å)�yé/ö ZÐ.¯[„»ÿ+/Oû¤¤Q¤¤b(=º½áðí¥N�#)¿ÖvñŒÌùz¹g·%Ƕr¬›a907´<Ø©(êOÔ⺷ ÁóK‰ÀÂ:/ƒ“ÙéÙ±nÿ’»UÇȯ «F"h[Nt—ƒ¼¨Sí6ÏZ.ØŒÆò0¤<ˆßî~Côs)¡60�”(Ê´�”ì³UÙJà¹�±ß§ #3M/RóþåšDœ’ØU>—3f$ÀÔ2~È’"w·J�Œ¯Aþ@]„a ‡PSÿÈ’‚™Fê£ßÄjtNÜ»Ð!òÝÁ«Ž9(.qêò¨žŠËæØº?ÞßÊÃDùÕ•¹ýÌCB‛/ý¨ÜÿoÔÐÓ"ûÜí¼¢àI$Ïùcñ«\¯:iR$yý˜õJùo%ÈÆmáeô™Q´X�ñG—ï‰þkñ/ËÁ}ŸTcÝËÎîï¨<'‡ ¥ph×ø·o¢Èl¬“JA š‡üÛK¤¦¿] !è¯)'EÇ2Ù˜ øxï@èã8ÛBðpÒ¿Q(ÊT½°ÇÄlk~Ï»ÖÞŠ|ðàZh>TÀeZsÔÒÞ³J´”·‹«ÚðšÜ|I>g–JGÀcùmm·Oí#¸¯±j ’)z qHïäË�÷Ѝãýgî¨~?%u¸¹VÚ ô°›(°ðfm;R{Y*‰Ê8—OåIU¿!…™…>,Ýömýù‰e1!èÚžïrQÃ&ÅîVA‹öçç§–Bðì{jy ËÊxM›à²&Ĩ‡ ¦ªÏiJ©ëªy¬0xÃ¥UâbwhVq²êÇ ‰qG{íÄ[fö÷.¥äøÎI€d¥¶·—ñ{9¯ôÆqþhO:º×ûøœ‚3g¼ÿŽ…ƒvÅQÀ"A±¥�²ÞéÓ£‚®Ææ8jó•Ïê½°é«X>áyÆ£Ú*êP[¤ÄW¼aöhPåÓB(�RÔó‹ç¸®u–|Ž$/ˆB2ŒÏ°yÆæO‘ÁÍK^—c 㨸Ť&ÓÎÃh˜]’a—0te›$1�øÞfùþ×ñ41ep$WýÖî©@+²h^MtúÇ]fÓ+g½NÒ‰µ™¼Ã·èHs!e/5÷�¿ºáË,¸î zÖ ‰B©.‡™œß„Û阛°éÞøx§Þ|æüý?(à«4 ç^Áð©¹+ZL&š$îÇDS¸²j“X:Z¤È‹h=*ñmW CËZÆ,ÐçSDà_¬nLYÜAÃI…~.?CZë†Á›·Í”çR¿vȪÚ~ þ^Ƶº¡± U…‰z i p5ƒóÊÖ�:–¿»wüصçú9`IŸ\Ý)‰X™‡Ðë;±ƒ>�®íµã�Éôñ�T¶`ô¿c’œÂ#¿™zÿ¿Ú�¶y©Û©Ÿ¯†1“°u\;irÞ×Ò×wGíãD„~N´x<ŒÍ+úÊÈQoi`–œÓ ”’ Çœ…ÅGÑ(¦k! h‡ç­éê»¶Æžë±-€hÙå;ê~kl¡¶ç—‘0îå�~öD ™ †ñLm"¿9ã)”ÅÓaœÕ�ŸÞ’²¹­êäNbX"ɇ·n€¿Ó€þ8ãlmY’â­ ¥ – éø’š=_¬CðBvr£¯¸œaTEÍ€©=Ÿ®õ+«ÛxkV«Ýwµó°rm�‘ êŘz_Òì ¸Àm Õ¬Ô¤û'ÝRK mzû'•û­5÷�%)¿üK�…q‹¹b»`âhZ 8r…¥­´ŒƒÚh™¦ƒÙt ¼¢o×ñ“·V Ú–«7sd€H4f¯˜E e½Ú÷] Ýã=È¥èêOàžnéª?˜øù–n¾(Ñ–òãÿÿ!yDˆ²²8K ×ë¾›—& ‚#WJ)- º«$o<’çîQT°=�…XJ¹Q†Îl ácžŒz%—«Q£ øUƒ$Æ\П6ÁM¬œAÜ´ZXqR›YF™•EþŒ+)}d«Ð+/À¡ÕÚf§D£B’ÿu1ÝŸÄ`ÁcâZK›[U_רüÔÒc›6¼ÒN}¤mµá›WU´©” –S(Êè{‡ÿ6ÒMÇÃEpÛ_¦¼O%ºx;áé M÷¢Ž·v7¤ø$ç$ñÿ h¦»ã?N¦‹ûó/¨Žç禔.AÈU‚û«q…(&ÅgÎ:}–¿{t¼gí°zñŸüýümŒ¸ dÁO“§G û{#²f)U ¼e':ÕCÕ°ÉCr¦µäÚ›Ù¿C,Õœ ËLß%LJâÛm�H´ôäÑfåxóÑZýœ”Þy4yhÉñD°™»K0BèÀÞŠ6h`’ËÇ›ã‹ï÷üÔ;ÒÙí_ðÁ÷À_DËÌÛ…­yzÿà)*†>^å¸ý¿±J‘v�œ|~"®{xMpk¦ |åUœb ˜˜œã¸Šñ²iån7Ò’d;™ì˜¨Ô´ùYOY#P#uD‘¥¤CFÌ!É1­ Æ*F|�¡j{Ý8+‘0<æâ6ê³M�˜»¹H"KÖ0©º8Ež¨< ©iíïʽ�`4QÀBÆÇAÉP§ÖBê™~Y"*lU'‘Âý“å„Ú_*Âù|G,רrKÃaC�R˜ƒ#{ý%áÒ~mÎ«Òæž�ÕÇÆÓ£;kÚ ÛâÐ홚][£õ¤^ºØ ©R8z>•dŒª¹Ç –»1Í[j3šª-\‡p[Þ¯‡Ü4Yò¬Ž y(i»ïG²óŠD�Õ_>$U #Ìõ2�©|�Ñ25=å¿ð†y…jß S绾£l<~9Ž=h?Ø ELÒ??±.«T�^Nƒ’·küü‚op/�é;—\1‡X!�s¹›Ÿ^d~HÚ')¦ã*ö…G, æ|MÜ�ŽÀ’wsçùôÎ8¼ÊC9Á%ñƒoElT™Z¹K+uVÙñYu mæÙ3Ýy+.8jè8U'^E—êï£9i=:z/¯ôh&äà~ç{Õ}8ñ×±*ŽçYú«€÷’ü—N¥¹È,2ià;[Qï°17êÊr­T¯$Žƒï²JÞýõC§‘1¢ÐGžÛÀã½ àP6?x{­*%£>î‹æIÚ%~#š˜Y™ÕëÓÒР“à&Xú'µhÏ–¡&JP¹%a÷ýSÌ¿“%”rÚÎü¹So5 p ®WKÅ.ˆbÖ¨T,¸5"ÀçOŠEhèH(7KFŽ­^8w´¯©®B©¾y`þìê鉶àÞ(€c¹ëäîåáê ··±ƒ#¬ÐÖ¯1..nð¸j'ØŸ˜Ô µs°ÑÚ‹àvƯ4ƒÂ«Ú§¸k®Mɼ-èO,ºL\a³ÛB¥RhWm½s+ÍÙ5t¿5 }ñç.¨X˜0TH™¾{@‚.ô Ô€*hÌ>hЉŽ%†\•µød3²EˆKÅf»|ˆNê•…²�ß'è3öÝKû^ùY¯9UâŠ|w8ÉÐ0¤è‰ºŽbŒ“Di䃟Ik{™rÕ0ç?M‡B(v±uѪùI :ùÞãßvC¢`Û? õc=OD‡×¢ŠMЉ¢%ÒB±¼—4Q „<&Gõ®Ã³C¿5ö`²>«5¾•TDáÖ[ Ží˜øö`Ÿ¦Vg é�žš?%ö¤9ÃqŒ#�½¥³�T?�AÇÜ:ryÿÈäßÐIù²ÿO u{èÍÉúàšKÐKžvÏñ—j&?1óÑTS•ƒ†ºÁ ~=dy]º×›£‰?WýîüÛöÞ—Ýžw ‘?â#G˜!Ž�/|þüêÂÕÔȶ«›ðt×)/¦^ðAp@Ó²•?¯r=•s¿Ndƒs­Qk•²îß~ztXBÜzQ«+�¢óÿì†ÁÐh²ß®oÖgÐÅgù?+ÍÄki¥v°‚}Ï&nùËÀ篯ÿT1kžæLhoôqð²Åmþé±ýe)£�y¿jæ‡K›Eqž EÆáO’yÚ%7€ŸÞL$^:½L™­r¼Q‡ãQúDqŸŽÐkÉÞ^}&ÉF™ÄÀ<ŒÒ[K¼3= Ÿ&%#�ó�õÓ‹à2˜Ú.üFã�ô°œ«¥�¹SªÃô­4œ°ßà- œZ !µqYLf¢ÊãME5M<>¨¿yd³bl�ºlgÞÔÁÇ21 ¹ܤiôz,›HšôË•”l¨ê'ü6�Õ÷°{îD½ÛTõ‹]w�õ]ÇõßcZ«2Ø£Q0ŽîTŸF%Î'´þkOÖ�Rfàe¦[uù±ËtêgOXCCÃÄa‚ɉ«BÌ—dýØH™­Fö?òŒ–@ Ü%ã%(sëo){€"c•l¡ÊÌz;9–ZÛq`odQÛØàG¸(X J&ŠÇ§m–èNš#D³ÍIÍrrçÄÁhXJðä¬Io735g Þ0®¦žó¯Ü¿ ¶£:ÙCŽ©j„“KX0(‘[§mïìóN¥É¡µO^{9qIîæËý©%ãö�ˆ;™MVS^o}1ô¢ª‰>º§YL�r» Lœÿ[½ÈRn«“ñÌ@.—Žç0–B±d‡ûüécø¶æÿ:r™IV•ÖéÇWîçéD•�;�ë‰Nâ;æÀl¢¶Jg•Õ¬™ ?T¡Dc¹“[äÎîÜ %[ݹèW‘Baé«w GxT.Y¯kávt”œQÒ3õzŠò4–P;`Åú�=ÙBEÛŽm,Ä�ú‚áÍ™ñ`û„“Œ&JãUÜV°Ú\¿™A¦2\b\M[ÙL§“7ªÌzàUA3ä åMãÛ§î;X¹��:Þ“§*¤8n¢ÅP —¦ñ�¬ã òY%&²¬Xô»We™ZÞ-hŃ·ä�_ƒL¶Í€,ÉrYô&ò.¢ àÜ\ÏÄÛäÏó”{Vq‚VË=8UX�…žH}æÖþlkÙ+NfsbÎñÉÍÛQƒÌrv€/ɲ’ß:q�ô¤CwÖ¬¬Uçèëy¤xí$óý7.fóÁ!i´ˆÇ¦>C¾þÅv¶X}äî³›iw½Ï’±U’`ì`�0çºdØÅL¦ÓÕ˰ƒŽˆpèDtœUŽFüeUÞRÕrp ±lˆIš Ù0Õ‰=~,Ùõד—eÍ ÌI׌ÚÑföÕ*‚{Ú-²­c;S“­XIµLž•þ`Ï$¸Úì7’N–«9´q³Ãß0ë-¾!W×�#]Ôêý¦åΩ¨]ÊJ<²F|ÅN]W4³/HÚìÞžPØ¿§uÝ¿²±è± 6¶—Pãtu°Øl¶<‹ÊšÆuÇšN<‰ÿoÚÇ€1UܰÍð‹åwuÀ‚·�'&¸LÚ¬¾ºT0¾´éi½ýïùlÓ$H‚qSÈ~27ë-lÇhœkR—%IEs2¯Á’nt•ŠŸ-î‘fŒR.€ÛêB’GG£‡š%¼AõÕµK m1î‘lâ‹¿x ­ႌ£¬ìËÅ1P¶Ä0NLºò²™óºº/ìÞó¸=לÜtˆñƒhÉK°”„~G‰ýÈ ñÍ`$É6ûayKKy¸Ý ¿?ÓgàøM:4™ÆÉ„k æù �âA†®‹akÏ#$ϲxTØÂ¼�p¡W$a‘¦šÿ•8ÿȉQ…-:\ÎŽƒZ�Óä(1N�êx" —G �~–Fƒ†)˜í�²ÅS½Ð Gà�eÖK)!åƒù×´Åó!®(ˆÂþ TOï�™biSTYGƒ)ŒHÖrƒƒS^ZÂ-áñšP©6jC\ uhQíæçXÃv¾¬�«±x¨´ÏU D Æi„ Ä¹$`SbpÛ«Ò:�SÔ[˜Æ.,×jÛJªXV¡¥3@véš¶9¡z:”Û0›„F= ”‚m&&�”ìú0:ô;a¬žŸ¨·- —Ûs©ôY¿IlÓ´ÎvÇÀü§Ðj›²µyœw‰Øo  Á�ˆÕ¢'÷¸¹gW»oXsž šÔÓt20n !Y‚ÚUNÖ�±Ø®÷¿WOvOŸ6˜Õq‡ �F©õÝDê›ÚOL™[ÚÇ Ø‰hÍ_NŽ38•C ì–R©�B)·vÌ-’çò“oÏù¼-LòÕÙhÖ�3¤v]Ms]x,4‡tz£q¿œ Ç "?ßÜѩ҈ñkþ:,v£½aÚSøG†CõÜú¾í¼òƧÆV\ÍìCx-·1IE—²�»FÞr€Fò4.ÕDƒ_Ô)¦øÚZ½QïË›ì5¢l—Þè°õÚ*Î&3#{‡ ÈDÍù6ÉU;Éš{šm¯˜ÑJÔab º¤ý¶!×F'·m陹VÄsÉ9@ß ²X— x^Æðv' NƒÂ²]¯±?ÙÙSjw\~Ù­Wú²` µâÛ½Ô‰7pVµî-4Ò`›Â¦Æ‘F“’ÿ|b‰Ëh[ékfšœ±¦…9²WHâÿJpYØXÔÉðæ}¿Ócu;É;–êÌa!ås[•Xª-U¢/'M1¥²€B–Œö)�›Z�h/þО¸XÓÇ%ÞãEWáeŸzm¹«ñBæ¨ •B×ö—¬/ñVí¢LÓÌAD}wS@ˆ¼ý[²­;Æäá­ 4p´Ìic>ûVµÖl–‹å6 „¸Ìâg¹”Å‘PYº·�^keF[zpxDsÕŒM¨*Z„eSÏfãl›QF¥0‘ÝäÜ|Ù�¬ §_øÿXýr$eé?®ìO’ †DFÌȘÚÒá{x)Ï‘È.=¿ö�¼$[w¡¸çWq^–UíêLtžS*%i߉ݦ•†FÜ“òQC�÷w_–Wêèæ 7�¤Éz,Bü ÅŒA”rƒÿ(t/Ø8–*Yµ„·v…G†ëÂG·×¢D‰ßÈ8ºå«ñ¨'úÈÉø¶Û½�Mqsäb‰øeË.n:yø`ù¿nYÉxè0cúNmc/n•í¼“-ˆ©Øl–ƒê’ìœp’äöDeå? ç¡Æ­}Dàã<àÒ8îd'׊ �€ \ÈÒ¥8—ªÝÙIjˆ3¹ :bI¸¿ÝÁF”sÒiE¹™0¬8�LOVá*ÿé"Þ¹ÚÓa»Zg]‹švv<-7™¦jÒƒòÚpãô ±v{Kÿñµw(‹pY&DÉ\Q¢*ªFlkY¹½¡¾Œ®’gn,à\GÆi-ÔÂc�T—]ÕåDÝÌ”‚â¼ÿ­R![¤º;ñü­FÙVß•³¦pIiaL„‘ÌtÚ¥XŒ‘>ÓŒÅϳ°9Ø;Í-;ÃÍ¢LßQç�¦Eó¡D½$½ÑÐá¥àE�á`³0]¿jˆPÐóKµ›êÛQ)eË@2Ó躖j§3¦©Šì÷ö•E^hßÝ5 —ÑÅË »O–¨Û�bI‘Ýε-ëÏÿoýø ê™™!>„,âfóälq-9ùÒwbõF–ÀJÜ K‡-75'lª÷U«ù¤!�]$ûü03Jƒ7ú6uVIÅ´ JáÀR|iŠ4¯€ l‰^$%š„? œDp¬˜«¬ãMÀo„åÕ­r9Ò÷yᢓX/<+SÔL!²k å¾·3לc©hJ6å…�ÊÚ©"ûÉ4Õ½<‹ÆÇ»—ã±U CKÏ]�YLU.ë:ÃôþDrÝôód�ueô¸¿|)QÞTÓ¥¸ò}”@M‹q|,´:Ç+²h‹™&³~q�¿Ys{‹ã,Û妑\ ~n�òÒÖYµãó{í:ÚÑ$È�-¨P�V¤Æ3Mk‡`ªÜáú©t}Ó ”’MÙDKÂÄK¯7°·ŠC8\4§ =\Ï­ýMmj쬄ÈÔŽà Ë4fE8NL&M‚þÆV÷w žìê V¿?ŠW5U&ÍäôŒJÑåëé¡:Ì¢×ç‹�YÑ µNuŸY<`�y–Þff¾ø´�9]ŸŽ×îFîj ë7¾ð¥  €œ¯¨ì€vÀÂ=…°É?8eh}» .Ökâ¡)“œ¶Ñp)„ �RÙtå}ÝèU'�\1ó5 miØ�.HHðÖGd1;aÌ€ÚCÌÆX #ã³O9 R ¶�#Фx¥×Òý!8A£ÍÅ_\G‚_>$‘ñÑb¨D¬À0pò 1Ú–bÅDõH³ JŽî ÿÓ}‚¡8éþl0$Fˆ/ìlHùÍx=b#Š¿ŒÝì´Ù‰Ë¢«ô¼…Hü¹þ+$©¨Ïbç!¦‡™tš¹­™Ó™ëí³»4‘®ZéýqS4rJ»Ô\KBó† ‰^ Ørì⟪p£Ià† —Œ=ÕmÈ¢$Ø M�ýøÙŠR¾˜Ï?,,l%€¸ÜÖ÷›'̶nšº5°-úÿcŸ^iôÜÉtM¯Òß _Ýeq{«•©I›1!³rï´›óy\‚13›H nïƒ�MçÕѰm~¯ÛA߃„lÝ6ÉÃÛ´ßÂP3-h‰-;¬ k¯‡þèqáÛ~‘üòŒêk¶¢ÇÞö¶@ÅéC­n·¿A‚‰['½Ô]eÚÒ踌[Ì-©e9¬±°{‡ ¨‘K5­(ê �šÑ,–à¤Q!ÓÂ9t«z0�±…T¢ÝÉbì§:â\è�õ¼<º›Õ×T³3víÊHÌÌ9ü’~ã¨Òª‚šø0w5*õê×Õýc¨Ö¢\úaohiÖzîQ;.ö8œz~†2cÓ9ÿ‡<óë3vâ�ì`P�Bü3‰[¾•N5ŽDò¹U ~ìßÙZn�ÞÙCÌž)&ú{nü_ €K¯ôº Ó&ãFür]ûHt—¡*(‡K yö竆áÝ)6ðÎOV$iËY-Z â¶Æór´¹ŠH~±Ö]† Õ;Ý3 ÿáÃI¾È¿…ÔN†Ë �¬f›MéÄ`üð¸1ÎénÊX+‹…b©R-Z „› ©^2:ýž².d]˜_ <*ˆ§‚þ‰muj0ÐZø]µ@öp¡¤gòù'à-Z ¥xΛ\ÿ÷ÚB2ÍóìßuagöÜhu,kGÅ‹áÛMèõw5³ì/b~Omû�w•ìu’ì ¦?«9Ë`,ò“0•ÕŽ¹\ïÙ“cw›Þs •™’* úlbxƒƒ¸0 Êp§û(!J�×1 eÀ•‘òEqå´ÃTËÕ9#àØ`Ä Ø“:ZjZn”�‚©�I®'F’€cÍ7˜ –I&ÒËVÆRi"”ÆÀ=ÚÆ$ÌûÌ:›Î¤ÌdÒ�hš¼ÐÀ×§m¼ÈZxZÉŠd¸…ýÜ)ûbQèƒð |FŠÀ$;Nb nŠZ,Ñÿìö&Vö™É :¡bÌ61ôvÕ$‚j‰¤°xÛåg9U Ì~Ñß„P?M¹`ÉœSâÎﻘÀÉe[¶Ã¨`Mß'Ià¥ÍiÇÄ�ñm0om”£’�$'ÞêL¡ÃÞI‘ÆüQýŽOVHCX^’Ø’P•Üi‹Ù"æë¦U'æ“&A•O0 m9'šþÇÊÂú3O®!=u mX–¬·¸Vvw´¡xÚ~ëh©Î9qÁæÅ´È±¹¨@}4õå‚&iR{kÝc›�œœ1Ð,ž›hÂúÿ*JŒ€µûÓ¥à™Ÿœ¶-!»ÊhQœQTŽXpÙ47 *¾«ƒ“ƒuø—Êâ?¶c·—Ä;'\¦„wöVnC—õ6•“½Þ|dzÏnÎr¨±Æ·ª.4Õ†ásDtuÜ+þû™¡ý¼¥ù}C(;Djjqn}ØeíóЬ6´ÅŒ§Ô#�Q1$ Ø?޵2ÈÑ:!Ç,˜Xø§ƒŸCk7ä´¢·�Ü zr··‘h앦OàçÁ$œ©LAÒüÓ Ÿ�ÈùÚŽ–acŒÒé%êœÆ<|ß�B&Fûlt ‘hа¸¦!/0Ÿ®‡â^< ÜÛ킟¨¼?ëmòÇ )¦Ÿm·‡(dûoý¿ä›5ÒþêÖé h•ª¿˜NŸù wkÈ}G8‘e:0 ®‡ŸC@÷éQ¶l¤Q+sœ?ÿZ8@ ¦‡Wùðaõ‘ðCË}mã€¡î º2¨&Ö�0ýZ«Ë¨ÎÇ·¸ŽõçÕhˆ¤‡¦@: „±0ªjb¿äZÐІȡ¶ d ØÐXúÏî`¤jˆ'MÔDvhPTðJ-¼��oÁœY>™<Ó_ÖŒ’ GôRøCC©‘¡¸D¯À-Y£}dàq!.ò Ïž¼óMl4^Ûä�÷îº#_Pâ³{˜±–Y|Î4£.–Ÿ2×¥&ä"de�ÞUÎ-Úu°'M ¼�Ñc5M¦Âà„D sg¼¥`A6,€éœCLd‚8…«$…E*!ɹà ¡üHeEATœÛ$i&1]†¡BÍBâ.‚ç{éÎÀ¶)”‹Ùn}H烸l“ÁÀ›â"‡�‰Þõ"9È|;·6ƒ¥Í~Ò+ÊâÓ¼ä%ÌÆÕX,šô¯•ø–ƸãzxóÀrÔj³§¨Ò¶‰i¨v”µ³e&Ï6f«Ø+%ò*¶B_Yµ®”Ž�36ÓLÈ„½v¹Þ�� ÎóÅr)ŸciÎ÷¥Øn‘„X—Õ8'WŽ�¥"ŽÇõT}î™æÁçå$Êì–õìÌp´5ŠŒê†åSa'Y–ÁëòœëRÅʹšÈíÐ,a&#%Úi¯TWkÆ:[õ7 ÈHe²×æº*Ù,:�¸€Dq:·úW[æÇÿ}=�¾‘9lªÖ¡+)¢µÛA·G@+é='ó!΂†âÔñru©3†üõWÅDœKjªx2u5®æ©CÔ;ybdv†Xˆf°lg>¼]’"Nά¢QTq¹;ö51!"wx`öÀÔŒ_j‰bЎӕ󋪰Tåæ´ùÑ}FŒ¨Ÿ£j9_,9Ú`õ?‚P±Š¿öœ/lØ'}ìï­¤‡â¥V«ÒOSÚNýÒÚh:¦5™£Ç¥ïÇËÿÖô¾.sj�hÔ@]œ.nÏ/&óõŸnülýdšÛ1ë8Ç“ ".‘ˆ€�B¹˜GNšŠ�Œžö€=íO‡<‡/R㛓Gš4œ¦õ ÝK’ xéq$Gö<JOI¨<4›¸Êð§»ò¬/4íëAÿìeQkâz0ÞYß2ynÉ ©øeo#]/5H‚ %”åpaÈ͇g˜­ÏÈ|¶ ÓÀ a—ÂNÒ)¤\®ZÃ�˜VÔ§÷ß–ò¡f7¼Õí÷)0I™¢¹u'!É2í÷Þ(š�ð.c†þ‰ÒpXËìu횢À ·|ýãódXŽ<åt„N Ožp¾Kï7ù?ᤣ9ôIHÙ0! ƒx¨9¢¿< S)•u(Jò uZ�Z¢ïæ7óºÐÜiÖÐP»Í€/³fNÊðPNIçœts#“͆ÂÏá€0 ¤DÀIâ}t Ã! õf£L²Ä@.Ëöú}¢¹•á'”Ó¦=6˜ãˆlqÁ €Zp±„@ˆóå§·˜.ï!UÜk)ü‘3Ó« ðåif¸lãëÖŽ–�¤ñ¡'VP%ñ=й’*@õ‰‰Ýœåí6s1enp{ð‰”õäÐ&~(]šäá§øíD¾k;ÍqŠþšCè ~ûJ`Žò(SÝæ«´Æcrô“è)ÕêtY«}½d�©µÁKè’Û��.g@CM² ›Ið{Ýγax¤Á }GŽèØ Ot¡\(ã<ØÃÿoë Aëeà®k弬·Ð»ó5(F��¿Q‹{õbÓáKZèÞ!�8`Š„è# k�’:úrOÛÐ&ÍXuCÒHS{->½Ù[³ ãK•ËeZ�Î~ƒ8÷4iA°¨Óž~–'oZÔß„á�6•'•˜ø$LS!UÂßï7+í•£pœŽ…‰pÓw;WÊ�ýžJ?,¤ËøW�·Ò÷”ïcñ'ö{,}7x µ÷w[ú½¶ƒ�t_úžâEGŽ\óaú¤²xÅ3õð?)S½G5‘fBJ~—;ÏbÇžoé¶ãÝøÇkI ^¼3î éÞøùQÔuLJ+v¶\«5yô�»>Èxðç+Ó‹-…ò ƒb ¶åƒÚáîP¦Ø’À‚®Ó³–ášR„mh“ž¿ÉŠÂ_š+–©ÛÀù$óûÔßUÍ€ ˆì¶}ÓwNßk]®iÉ Ö<À^YïâhÂæâHKóSC¡% àE@7 î{sûIóc"‘Xƒ\÷a7}/Ž>ôŽháŸtNªtU"a3u� ƒ&EùØÿêØŸrÓÉ2íã[Ë¿¶íŸOذÐì¤á�Í?”RŽ—º�¬‹Õ;›|’¹®â¯‚S´* ÅÁûgïÊ¿úuøt’ÑžýЬ‹¥OeàA"¸åÙãÝ"â5à¹ï”½3Äè÷ö*22F�øO"®¿°Ñûü]—e ò¾† E�[L–¥áÚÚÊ! ÂÞŒ¢¢¢1LcÐ3R†•RSSZÆQk‡#R?C-(yKU”ôÇ$e#ˆ3á“.Ì+ÞÊ1x™ÊÏ\á†.ŒŽIKèå`=톮–±uËy™¨“ÒGm–¹Áø`n=¤ýl?›P]]KJä“@A"!5¢`k)N¨^Ù²¦ÃB�x¸(¹6£ÕÚ¯¢Ö.mž94= Ü*‡ˆ¤\Ô»÷Ú�P”R’ŒÛìï½³”xgáZXà¬Ý€A% >?5Xri€Ù&p|躞^mìëoæ²oºî©Ç\\�]Usxe5môÜ~Ÿfjz³–µaSÕ¾e¹ÛÛàȃ­2kyõë4©e÷yûš ˜[ƒ„æÄr*\¦‘x�ä¢nCù�ötzÈ= $¤ûŽ�’´qåjáL´ü 90e¨ä=c¶Ñ (�R–�Åò“-–Ç‹2‡Š¼(1ó&\$e¬ng`K„GJ× „‚avû:Ä7Èêýç„=sh˜ŒDTH…¯ŸòŠÐT&o’y³ãÖio^/Ú(‘'B@¶ fwÅÎÌE âÜ#$bK|Ô½73ŸÜnApjQ&ÇÂçÔ=w!1—Ž»Öð'é�Z½>®P†ˆ®N@—=8Kleäb}WÑ`†mÚ£µ|œ¤ÀPKÃélM«¡îQÉÇÝÿÞ3ÒD­Ès¸‰¹%$©Ü!k?‡S.k¶¢ñ¥è©Éëqï¶Q‚3êR© Ó^0�*äSªV�[3ê™Rž’u§€~ØU’k‘È1K-šµ>öÓ@Æ7L…5ë/=6‰´&ªvšü}·~=a’êR˜QÅ©²Æ­V¨ÍÝÚá“n#œ^éÄ Þ¥ ʦ¾¦Y¯½¦H(®†�8Xp¦oø8§m4^n]mª#;UŒ5¨'ìAú¬·ÿJ6Ý62pœTìÚ8«†%çN&§hð(Ç=yRtcoÚSs•L4èí=¼s£<5Y&“-NNe™0»Ð)§XÔQ)ýGx �˜ ɺ£ÛIp€4£¶sˆœ”«©´vbk’ ‚Þž-9èaË •um@i#hø\H“É(2WáëZ^(Á‚“cæüµá”ûšL6)šåÙç "flô×GXŠìÝLÔ¤ ®h;ÌSÄXväîžúµ»¦]£¥ó¢È± ³Û€Ò×´úØ{ (!”ëi ðÅs;µÝ÷�¨´VŒÝNc¿Í6 Ù|± Ë$�Ë‹ `åb)ÿØ.]]•½Ùeq€uƸ½ªOÿeÇ…º÷ï' Ì§@‰™˜ezÜ0IjáG¡j»˜O>�6R±dÿ}êéf:½á(Ù÷9,Mš×ˆBa^(¨îW •´ð@€†:¥7ÑÍò0Xш Ü†P€l�šÖJk tÓ°X ƒ÷Gl»@˜‡Dk´)ø¢Sꛇ‹¡�+E²�­áð!!`¥êeCžó^Ÿ+èÙÌ6ÏÂ|Þ¡ N1­±ÐÕxakYcÒM£Ü<õac½ûkÉ’8s9°:GÞÔïY›}2A ®ï®\Øâ�žû3Ø‚.¶ý,ÊGN¦Ü7”q"ù qϵÞ>üË“¾›º×¾ìÐ~×¢œR.Õˆ‰Ìår‚‹ mÚKZ/&žZlÀ º ®X©œ|Fš0hqnR`¹m{Ùl¾ ÷®52mg˜åñ„¢9]‡Š*<6ë'ÎTH[#�IêŽÿ «Î–îésÚñ_÷üäwªÑ×)”9UÛíÁ#XQ(*š)äÔõB¤jœðµ›Y:%/Õ³jßUotñĪCÇgîùº MV�ÊÞuÙožiè¹MÝ>ºû×�8$q¹£ nY:Կظè7¼Ã)�ªZ;*5[°HCßW‹hçëù¾ÄEø÷Õ•‡Ÿ|äù<4PBœj ýãVÀoâÏÂ¥ŒIÐ�zXžÒîwnˆÆáE|^u¯ —!Š®.·”bÒü 4ÌQilÛ$zœs?EJÖË$ÐDZ•ÊÆŸƒª[�y5H­]µ0ÑH‹h0ˆp'“ªŠ'Ün GÎg×{Ž.`” Ö—RßÉ2GÁ8�þM¦”yôcýìéðh¿“^,0ʈo§¬1�'/Î>8ù×{áòÄðÎ_“i|¸M[ ažã?Xšß³ó�;»�¼¸Ç¤¡­'¼+Ø›díZyªí½8áøsk/ðâ†æhïVAu—¶ƒ/e(ÃR¥SbXNɉà”ËVÏoíZ©gú�q÷½Å3¤2ˆ�†$ŠŒVóÄF6›çM«£@Ïï OP«&yÊ‘¬H ÝV]Ì×뛦/#ÞÕ’¸îL…ld§âCš½Ó¨äôZŒqFpà3­¢¤Jf×åó=·"0À”ÊðN•�þâšØÃ�˜æ¬©Šá¨0Sº)̧˜…9=ru�Tý<ô`˜²»ysOµY½�S%$Ýí•Áß«8'˪ÑÿèóP…r÷,âçó® ôó­oTàFEǧÅ& “z© ­Ûi·GH°É�ÂET*ª¢$Eì¡!ÜO�!ùpf)º¢k‹àÙBâ£Æ�¹/ÐÀ6·”5ÚçL” ¤�6Ÿi#=‡‹p:îðX}L#å²p¯ŽÖíí=À⵪õÂö mб"}‹œÊA;šÃ 6S³mÇZ&c�Iyxî˜ÂS0¥²i’@WúMÓ™€Ë%æVl*ìºÛ“ÕF}@!^†Gzt” ô?^ËXò=˜mÂüؘácÚ(R·Å…£‰8ÅÝæ²Ï{»×O%䱿ëuu]A¥¡ò:|G‹aD�ïIþfl£&†’Çöbå]�ép'Dˆ,›¾½ù©ºF�°o¯­TƒÇ±1°3Uâ±Øü‚¢üã‹N§u¸Õµ«8fïè’@ ³¦&º99*Ûõ ºy‘¢ùZ㾬VØn´ì!Ó„úÞB<ž©v€*Uߥú©5ÿn5 ]:‚ê ÃD¤A5k²LC8­<`0N•ül«)òÍZQ9ɦ(Ï.I´�\¡„Š|,Âo1J3(¸¡5MF¡¸¨éY»DYÊ‹€›<<¨Èññ%|-ÉE�WUÆ�¿ØÕÃ� ŽkÀ¨nÛSUžnê[¹æÃ5)ÖŸÍŸæ7·©›’ÓšU‡S}A¢çû7yõžCŽÊ5`q%˜—`/êv�=æ•¥R¹¶[¯Ï,wâÍG]U.Ŧbò¯É8�pÉÁ�.'³Q.Ò(JJçíX˜þw‘5áùÚhÂGó²ößfSÑd«Íã{‹kù­ Ò« �×/f¤ÄoF—®»²T‹Atú©±x‡T‘×¥v=àZx=Í´«Hi;Üzòb}M%h”PÝÆ Í$è�SÒKö‘V�·gŽÑn—õbߌnSÁÙqÿñªFUÓeKâ1?¶ë¸Ãž••�p™&A!ì ÿ·´‘Ín ´«œ÷“SZWsùýÑììX€É)…«Ã<å‡'o·º¦>a×YG¥Zƒ¥›"+Я¦í£YêpÆ'Š…�Á¶B¬<_ÏIH4°ç&¡·Pë^Ƨ¹ûèÇ�¡!§dŒaJñ…Ë…É0$!æ:$Œ:ð!VÍ<™I “0¬—Þ¸A±äi€yoEgs·ñˬ#iéw¼l>J<%}¯7Š:#šüÉ|ÅN ¡®ÄtÝ2-¢Z…k!«KÙ§›:ÞBwVÎ"¸ÉwûÁZuV*ÙBdÛF׈Y­3‚F‘îv=õSN$¹ÖhsÞd&N‰ü¨Oˆfև͔x ]ñ2ŽÍ`ÊØ•ÒV‡:d¼Žñ« ŽütÏÀÞ½™Êµ,Â[/& Åâ¥1°ra’«Ëõ:{{³MiGùýV'_:ÖÞ|Çûà¥<ébd,6¹j¨\Äß»àá{;`S¢ûjÞ±§¿Ä(´ já¦,ñ¸{¬‰Œ�'»VF‘*J¥ JG–Ø @ž1)©„¢Ž¹– ƒ½ú'(…Eg—M“ÓF ‚Ò†AG¸MEÂÖçefá6Š3¤ß>¥ã<ôz÷¯VìQ‰Y�ÈíÕÞ†€/š+eCà…Ogë¶Ñ]¬í/JA+M\¥(¥Ü2å#¸“cæeï'@ojJ¿�;ì.Í&ô~*ã|$³¨ÐfÕZfOAh²@æÕö„ñŸPÅ©­# ,|ÜK£>µ¦ª™Š-q(³lÓªë‚ä½U=ØÛDP’m'M–÷×@Þ¡UM°†�T4*w±TÉè¥Mƒt’änBïÕ)IJÍ\ E-EÔ#_ÈsR8ZHøÚ¸�æú}I/ž\³››³G‡ÝƒWe7½‘ "¢!œzÿœ/0G­íÎÖ)tQªZîD%ƒ¾îçVäe-zZàØEpÊì`B¸5íZ«}óI´Ì;ʾk‰EÝF¾wÛîK@H­|3()Ÿ­µ�Ñ}i¸Î½ðÔü\ôð�94Û„øí—k¹tƳ?0"Çß·ðd6¨ XÏW’®‘^1[¸Ø—‡4¡©ø�›ü“±ú hò0Ž5,"x ±ðÀîÄ‚þUjm·Í/¦¸@l.àwKÈ¿3áòé¼ðàÔ僼`[òLA÷¼!f]­)]‚  "„#Éxì”DgN¬rX~ýI±è—÷£;£øV %¢ÎÆÚ #¨MþáÀêüûdýT¢ö�¾úhŠ»š?G�ø!ßÝ“Ú=kÝ7ñTÊNáûwNÚ¯·O¦\h{…€yÔ°/ö¤Lˆýõ�‚®{纂õ¦—ĺº6½è•&Ì–QèØ¨k~²øÜÕÀ¾†Ë¶¬�ÈÂ< ¢­ªø³`µsí�N#é<8ZÃòx*<¾0û¤Þ)¯¾¬"=Mò€° FQAÕp«Ãu@}sî3gÚžÞz;¡Ãf 1ð´Y µÂ$e·T¿‡l´#Yi0ÊžI_GóÃØç¥¨™?JÆ4¯#U «¹92G€?àQ2dêW�ºså…®§ÜžMró†!11Ì{È8²gÌеœ¡”FÒ:CGÏ2èK'µÀÓ§”h«Ý߯i‹úÉÐ�jéa·Í‰0þ8iÍ ;‚§€trÊ¡šæ.åE£€h(x¦$Ð8çÂÂ3máø}‚¤F‰67±PÂÍ�XÑ~�üºúÞ˜û‰[KV°\_Lm0礋Û|™Í`Prv#Á}2wÐŒ¿-$]†G…0ˆ‰ÃóTÖCÂÎ�'(# uÖ¹ã äexEø’dˆ]1�4HtàN‰'s΋˘û~ÌÖFréѬ8£˜XÇ×ð¼ÿÕ£…k«¢³þ‚½#`TàíxäëBpÛñÍY¸À25æ¡£0ïܨ¢¡�ÉŒò€0„âXm(‚U!ýtaRt.… 3~°íD5UÅWÁ’&ŒV%jÝoq" öÝ¡Ia~¥ÀÎÃç­íF¾ž �¬÷ѽÓÙ4½Ìþ¢Œ]�vªKJ:ç32q [{äŒn/»¶Y!“ÉÕ¥–Íln’NE:‰ŠÆ7"­?^Û¦ÎjA¡‰†sŠiÓr›zÙ žÂIVP``¿S“X¼½t$®û4kü§n!Á §eT§Ék÷[¤éÑP’@X$—´ÀäÆ(ÅuµõE"�<_ZÞcbÙl- ´†&PÉ�s¥ëùJèY)O(®VìðïÌtM;JS3Í)5 :çøÅg/£6�yJÜ~ú²=åí¯PrÃÐ>˜ãªî™ù‡ºÔˆ±W2:¡©Ñ)ì§~ðCøÿR“¦ý8üîü_ à‘� C¶w9 ™Öï½ÑüPÇÏ/A2°ÉA¹]º)Á—=¯ÕÚ²ÙPì¡`(Áiƒ2ê[²Ÿ?N‡´ƒ<¨Ù¬ÖþVkÙ¼è7Ü¿ï-d?ü³Ýq²[WÊë½;Ç&e½u¶~òwØÃà:þRƒ-äAW,ͰÇW’/q«mÂè<º"W[5òzcÓ\ËX\’â4 u¿hœËËóÁ6C)ù$…è‹}β)jN±m‡;¿†×š“k $oÈIàXî´:?7ƒ+¸Ë÷„bmR›q!�¸Ú|C{öœ}†ö͘ÿDÒ­ÖDr¨™çšï& îƒÞøe3€„Uöq×á¤Jw}ÙT}pÃ%‚ˆiF«¸ŸvNfI懨èMÅšœ{š°,>”º¿-$ ôÓf‰Uˆ œÈ �d* NšŒõìäXB¸㼋¢=ŽÊÙɘDÌ Š Ù¸â”&Ô-–w¨Åq9/Ò½Öý“-mSËëpçÿ÷A KÉ!Îň{ï:B0ÔgX¶³@3¬�3cGØ`Ñõ7ó¬µ[µsN9�¥bw&$À¸ÒÈ#Xº‰Üfß~¼=4p€º²g7>3Ë쟵ÛËþµ·f�)KíÝ »·ÐÖ!(`�èl²a¿Î0àLkÞIƘrý©gYåN)ðin…Æ�\ØY$…“Üè–·1B655 Ÿ¡x-õ0 U#ì ‘(5È´K-VÊê༴<eÆÈþXD´8OªØœ ï6ì÷ÛTÉ‘tQ-ûyLv­lžÁJNŸK\J'“Çä®ÑL×Á²ÚÈçRR"X6âî·ÏªÌá̘»ºÝ„¾ºO\œ‹J.SÚñžÄÓ:ðQUÖÞUÇ¢,¥]öGä9/îRÓ¼r"ÈJ” €ø´€Dn9í)³2u§ÇsÔ¡‘6£—žà$þ_¨¬ÃšŸ9{Ú«Ôc^:éž’fŒ£,¶¢p§pnBžµ· à8=�Xüé\»=]‹TºüJùÉúû˯ÊÎ.Â!œÂ¹éø¾ýØ Ó¬½/‘ê/f>�‹OÚ90¥¿ð›‘o·¾²¥c�Â#Œ/ÆY™¶�žžœö&èOá)©+ˆ@i"騥Ä$?ži@ ÙG¸ÙfÙ–Ûa†Þw (lÇ-="®°Ì+´yE·§oÄtþ¤ÝïÏ Ø ú¾�¡F?Ï/cÃú–örX®9&½ú¥@½Ëv©+4S8œõm¨ä·xäI–É0Ô’ø8ÚäAÓÛƒ+åJÏP {§éCÊU<—ËÞ9M[¤«Õþj-€oÅRù¯¡Ûö |)¾\å}}:ŒtÙoÌb_rʺ¾]‘c[”6šYЉ•°{ª�{ºdæì,Îq+£võ¸Ùä€ õ•>òÙ«úYÈ]%H¬SÆ\øEçÂÖM˜û›`‹"'0 †ÚY.{ZÉVú(ÕW¾w`?$æqЏöÇF¦a=Ýâ8á™pž­Ù©•ŠÙ‚0˼‘TUžÀçÙÓ‰-iJ´f0¿¼j�wDLÀ`µ¿íœf: 0}SUÅ\w;Òž÷ˆlÔh^Œ54�(¦\§²yÀKïóyÚäQ>ãy¨M@9À—;ï‰U‹J­>€¸)-OôGÉ4RSgÂnú˜1oî3Ìï뀳ÀÑ9ÉĘc˜lXFNdäRbbf쎂„fn‹ÆAM‹c ]%Ë!’Ô~˜RLv*|sm3 gå…p¥Ü(¬ñõtcsˆd×6>QêSl=êÙŠ,JË0 µG‘鈙��m vÞWô÷„�X8ŠHrÌmmIcSÑd8ïoA [êbí~c‹§Wð…—¼Ñ†Ÿ9¨ôXPîðóûÊ[»Ì¦¡ÎØ/´–1 ¨=Xñ¹$.€ãk ²�ÿ¢Æ¼hOèÊ3ä2^»²¿Ò™×MŽ#w%×èð ‡K†êòw�äç›!à@y`ø”ç!6À˜¶ ûÄF^Þföö–ätú~ìꦥˆÞwùè•(U¼A^†³-[?nŸ’®·P�¬0»VØA8«Yæù¼Ÿ”³}šT!z2X¼\�„�hPAë˜þdÄ»`Ùãf¶ßOH£„Êòì*jiÃT]³ñÞÈÄ:Û'²Œ=}Q¶Ç-öbùF‡­E+�ýHxp?Z‚&Œ·{õÿNýšž¥ÿvç×N[XH´ØN¶Õ‚'Gxßîæž¦YËx ]{Æg{ÔQëiÑ´qÐ廼Z«ÆõÒEÇ�Ñð÷ÌÏzû$qašû¦RÊ´#SX<~î÷¸Ý÷¦MÛŒŒ­§�G�ƒ½Ö�5õ÷ßG·\yö™6�PíKfFóÉXŒ‡ÌH0Á|qE!è×Xd™B°ûhÙ†=IÉqo¥!ò!§½Î“vKL[@Y2=Þ®uqÕSìãyÆAr„ògzæzØ9%õ`ûѤ¨È´]š+øUàjú‚BN‹_~ä[‡‹,ÑGS=}~èìªü¬¿îC°âMG'h­ÞìÐß^ˆ;xæzC“”¨h‚b…qâE;ð´É˜æ²×.—…m׋08«é+2´ôNˆE ãe ¼.Sî†^„æ1ØNXg@l¶„—G}þXV’2n«Å ¡jé|нa“ÏL¦¹kYÖ»;@tÑôûÚßN"Ð’)ÅÈ ¶1�#ˆ–ÑÚ€²¥ yôy¤ûH­t'³ÙL½h*‘‚’ºh|ÈÙ‰8BÀ¦Oàà Y+%Úm ÐVcÌu÷ÿ@ûàN‹Qbðo®Ž—Pü„¢p77Ì•Í�aÌu~w¦>˜ ·ãZUCÛ.™J› ¡zY:*ŠÚúí°4DRâȱ´�¦ÈˆâFÜvKm4` pN N‡\Ó¤~• ™ˆÁð_¢ý‰P§ÏHYuúûZÕºÜÊ)­âaÏwï°5QhÉn§LĪ™ŽÄ Â’¶Ü«õFV¬ô:ù{3ò¬lÎ{:-Ë¡°Õá‡'êý]q—ˆ�´_¸—X£3º,«ù(D©UÏ ùÍÍ�f+¬MŒ¨\[OR3K<íޮ݅û–Ù×V�f_œ- º5]×H…¶§Ö”»K}úA%‚åÞÕ5Z€ÍGâcÀÿÕÞþC4ÓÔ$°”^αCcŽ÷•AÊ‘ám Ð{«;)¸UTcy°ê%’µÝû¢5Ósb†"%¤æSkÎêZ }Ð}G&šÑr>Ë/þa£†àŒ I§¶“þLvÞÝk§ºfÇ�B ÖA"ô÷F(rÂÞºÕ˜h‰,Sé‡wÍŽÊùÌ|Xe¤ª´*üòšEùtº³‹nÚܱ ±L&±-/󯇛ˆÝ±­ mêlšBìfèT:ìá¹ß}W,ìëî$ÁÀ\Xâ6A1ÀLK’*Æ·f _?¥Íðý#�¹¥Ð”ÏÏò«‘ˆÞ¦ïi÷Þ'Ÿõ±c=®Œüâîo¿zðcû4Ce5ìÈš¨«¹…-Ü-qæ³²¶Î»K[dÅ}ß6d}•aè¸îTš5¤WÉ)*² ˜–ŒH’^,.þµkÆå“çŠ~Œ(³¡ÆÉ·Ø�Àòæ¤é¹·`OË{â“(Ÿ8’(:êɆ4&j“ –tîâh¼ÕÜб?Aáäwþ›Óæ0PXY¬Þ:w,g€ãdÑ*ÐÂÅœsÇ™ÁëoÏñÊþÎ.à…¤®¾c[Zw¦:Þí‰ÞA Úõm؊ܯ¶káóäê®Ï²ùÃcP0ÔËYý�þg (0Nv„K!|*à#s2;'�9ò�–âpò»Aõ�»þò[ë»3uËWääûþ3wH/eBd²{~ß›%ŒUר+�¸ƒ Œ––&‚Ãâ–˜ øEϹ{†ž€…=‡Bÿ¾øïëWo7ÒC6ÚÎùïÏàg.>­ê¨ûn$l:�õávÊ3N!ÞÜkâG½r›óŒ �º¼ñY2iýg_þ?¹—Úóý`¹dl8Ű¯bÄ(ƒ:.ªZÍKë¶ÆKsëDZx,GriSiã*\�©ÃfÂ×k:¯ßŠ æŠ+,• ¢B“ƒEF±Š‚Zc¬ §^}Í õßHÜ® °½%M eÅïàüês•¹œÖ�rÅ$M½¦/r‘h.¯»÷úã«rC5ñׯ½ø1¬F8wE*‰ pçó©á­ÔßÇÈÈÊ¿©É Ûó_JÁ+Ó@Ÿ¬|Ø"`�"M1®Ï¼§U#oøëG¿*•ä$, PU�YÕ6}÷C-żÒšÆl ³´ð¼U'çOï£ZÃã½t‰MÜßÒU¸ŸÂÝ� O(/º�ßne:‹>JüL€�3ë°¯4sÆû£ùRþ5Ó[,ô� ú‡l_‹·�!£*ú—P¿7žØ `äÆrð–Ã}[¸oá­=ÃîbWZ'Å’Š¥åG†ç².¨ÇSGï[›‘­A+µZ5މ�¥9Ž¢û}N)•²p’ޝœ`ɲi$ì.Ù ª5¡¬¼{Ö»ý)· �„Gƒ+šfX¸ÉÁ4B·ãÆÅå ù©aú?ùÁ¿A¿?rÒs}ö8¡ÉÙ¤ðŠàW£–�E Ï;·Z�Cq,dúy´·‰xé\u>üÀþ4Ý=9ùã�ì^¬æ¾\˜«[J�˜cØf˜\#XpÒÄÿú£@ênØ.3p>?zçëÇ _=ç�øŸ²„–ÂPˆæRjúy¾y ưoÞ›Ãúê�RöM°ÞÐoG…Ì ¿#àbŒ�Æ ¬q£~ƒ,Y·nròGÅÅ.ê¯ø¹uR¹\&M+°¼‡lèä»ð’�C]«]…[®\GkF,%¼ííØ>õ¾2×7Ÿ—( ÃXR,{€‹.†ÞzJø= Ü~R.Óñÿÿ.ü6™ùMß éê…ø}ÌO»u‰KœW]3j7µâŒ‚¨F!¸U‹Ãb¨Öžj‚jø0rá� /ôKI+àr8‘Mn¹ÑM¢_¦ÃË5¥x»øv\.h0�;�œÓí˶ZíFÎÏóvK FK�`žÿÎÿ-«õðÑ�ë¥ü@Ûôµz !¯BåÃà~™­ÐZÙ–n›US¥d"9T^+X²˜åu -Á…»{�‰³JÁó¯¸úó/êHm›²Ðóññ)—Zq3v\;Òu0€�7švÚxr"Jž‡2„5O½üÕEÂüÑYfRï� Â*÷ž÷HùÙv[‰¶swÉÏ·q`þ^'Ü=“|OK¼ïõ÷@ô·ð{ø’ššF�ªF%Ç®­i'‚NWYÓ,7Ñ�єܙZq¾ %µf£” Àüe›”ÓÛNùºi1BoJåMè­Eʹ -�Ð ?>Î�çoG%Ëêéʤ©µ¶*˜h¤0´s$3ãRypX“¢!åDzKbÁþ²;'¸n{¾u^dam?á*�aœ¸ù”Gº:•7áÊWì7nE¥¯š¿1a,E×·ó×¥¢9ÙÊ·Md Å«fw½ �½pÕÁ�R�$˜[Ûì²õçåÊÂ7OhÛèþäkdO[4¸ÞýÖ ¤U²o{‰ñ�['—)j�¯@åóKÛõ©´€Ûõ½»±õ«Q9Ùì÷®€zýùçbUHk¸5•ónmµ‹tidµªNÏ“:-c27gši[û7(¸þRíIØxo Òš| *ÀžÝÜ`‚Óþ¿%!bÉ{‡�ä`ÁqL Ñ5cuݱÿ� v8ÆèÇtN­8e™7åè^Ú÷Ø µo±õ:Œ´Â êq:¸.’®µ.��w]. Ow±S@¦ÂÂ$K¯Ie³ùµ�Kº‚CƒCCéU¶$œ«Üj4Ó[-½‰•¯oRÈ•.æ·¥Å~‚yAïßš¸quCd;'fϽx“0?±èè p�âÒ�Ý.ý4ÙØ©4œ¹7÷pNž-ÎS‚·œ~æƒÓ©“ç·žÏ×^™Ï³Çç¹gøýIwSnòiÖ*‘;ä}&)'à8ûö7ÿ1¾¿æóç‚EÃSÿ{ßßL@ÇÏÞúGó|iß²Ú¬l3 P à8ŸV§ìóB{zs»ñsí%àÄ0óž¯>Kk4fö0”‹ü?õã³~|k§ÑÒ„—;%¦àv½öó¢…‰Eâ aiÙ‹ “ò)y‡ì 4ò y7ò9r)NäÏ~•5kÔbÜÓÕY„g»÷J·;,²æä5íUºÔ0š›Ü?L±Öß�Ké�”«ãávËk_Vn×áË–ˆùò-PÐ~@�|µX¢¸@tâF€J®a±ŸÕݪÉP5Z[Þk/�±^?aôZiºû¬Ó$¬ßcÁ°žrò+ñ{JlÖ•i¸ÂhÿÇŠsS½>/ÀÚú½O«€R†T1y‚�ñp«0XÜ@ð@£·¤ˆh£”¨QîØ×�EŠß�q×,é” Õl¼©}¬Ö[z¥[ù�ˆÔ—í¯´ƒZ�þå6gë[ Y¹ÍÂ%Ú”•«ñ¥NwQ¹ßOþמƒŸú~ìkR˜ÄKà‡zÜ®;`ÍõŸãÇrrÊ-/ù¨Ì­ €¿~ÐcÝ ñ H¯kZ†êe°P|†Û¿œÎÓ"’ÿe¦š)wÆ=¸g™8Ø×ÏãÓÙ‘òàî&Œ¬WÄÎ/¸¿VM˜æšóOá›r ,"§È±æâG@Vº±g+.ºA^‹Õ¢kƒÚ6Cf'ghO¶Z 5‚¤®ôíèM’Ÿ›œ¯Ò‡®µ£µÔÐÖr�ÿ¸ÄNü\ó°_LÃÍ&Æ­{†îÿµVüÜ´à‡ñ×ô|ù,<>Ïp®‚€ØïB{wb Vì´ãwÀGò©”»M S{Úîž ¸Y0Á`gÖG%½�Ȧà ‰ ­L(Ó�µ£œZ.F€•†$fDx4W‰2 'ù 4²'T¸Ñ›°#o'(Äî„ÅÐ.DpyÂ�§mvâZ¨lrÝ‚¸AÔ,n6Z1D¹Š¦†øêB¢¬W˜Ìˆ\oªËnÏ›/ÛàµBfñ¯10o|\l:=ïˆG¶åbåš×Êf}ЫKbM?oÑV¾Ž"‘� 8§M?÷@vìv¾¬.xЩïŠÛ슆¹ØÕæUZjòæ—/�ÊÒsí1E¶\—*&¥ŽuWp¬•WmÕ ãú¼=,67X¨@NÇîGÞÈjö�)ÏsŠw$\P˜Ø²>ǬkÊ·AK©¨±TB='ŸWCÑ\ɳº¼u@ÖÕǰP¤ ª+®+çäÓÊynî™&ó\4œh¢*)qÔ/Óì/…6vN8‰Bc°8<�H%SĨ4:Cœ)!)%-ÃbËÊÉ+(*)«¨ª©ëÓÐoÀ !MϽ 3˜,6‡«¢ª¦®¡©¥­£«§o`hdlbjfnai¦˜¡ÙI2¦˜cñ‹üŒwñ˜vÆ&¶±‹Sq:ÎÀHƒÅá D’ˆ(™"F¥ÑâL I)i[V®Oõ© ¨¤¬¢ª¦®O£_ëê§>©Ûggµë3¡E©•~6hHÓs/è &«6²9\•þWUS×ÐÔÒÖÑÕÓ70426153·°´y|�P$–@Ö60‚bø?tèÄ–ôŽVRtíÚ"¿qKT£ôîÍ É˜ÿòŒ†‰O*Ãß7 Ø�Èè~³ Lž#̨2yœ–Ígé^2æ—•prÕÚÚ/€R½”ÿ*#¤5�ÆMg*µ�ÜI袘|te–Zÿv|¹•T…ÞóÖ-»‹ÊjKG¼H¬Àâ ká4ò–„zAúFÇ,Ç>ö‘h)½F»{W΂‘•# —@ŠhI8ñ5ÎÁêía Õ#p“T¡’*7nPøÓ®¥E=šÉÊ>|7JѨé-#Ðg–h&±Ùñüî µÛqí†f¨t“¼™“V÷ƒÂAè3âõœ„W8ð×nðËö-FÃM¶xÕ©�Cj 3¹ãh[³í0zÉ95G¯ñØbã  W§RD•–?‡ŸÚÀ¬)rk ¡ÔÖàa 1ãÀ5lp ×âšÂäÂ@~p@0 Eà�à’-�KÖ¼—±ÿI›m¼ƒpw]¤óÈl=ï"¿î’]'Z—ø-Ó8UßÔöªÇ=›ƒòRi(Ž£0Úä‹4Un~6þÉôµ¤{©%ÛzmâmUÞ_]´Ô‰” —¡G0¿†A–ñ'ðż1èD¹Ã´Â#4¼'ÃÛ8;WÅØ 6�UKŪÏÄÈ× KQÜå9ÔyªŒI¹c” ¤—nC'½6¤Í¬5¿ø mqU.-'Íç -òûýyKŽMn†êËaÎåe�—e•_¿W嫹"7¹$ŽÙ¿�‘äÈw—]ß`9Ó»¦ð²~_Ycªûêm¤ø6ÏøAf½*yb§Éc;픞O=Ó§È¢—ôzâyR2ò´dû©eã)1,{­^ÖûÆë_ëAø@«Pb™ÒÁӽǛO7ïõnôžÒñF©(S›öá6žè?èpÃÚË'‚–KàWðô²jÇܲ"tV—>#þ ßÿü ×Ê5Úý¯ü†B&JÆOb •Ÿ¨{Ê¥ødÀÎSΘ»lÓ§`¤ž·Ð¶ cN^ØSÛ¶žÈPKÒV1]’£§íKimunify-security/assets/ui-app/assets/static/systemjs-conflict-patch-pre.jsUT ëÆ«jëÆ«jux è‡E�¿‚@ Æwžâ5Q�ƒÆÉÄEO®MнôíE1!éÐöûó+ \ßɨ=]QG¹»ˆJº¹2~a¡ôx²’GE’–лŽbZb=nj¸Ó¨ÐÜ’*åÞò¬(p˜¤�ÅùÙ2°5ØŸ� —©K+Xà ãXC¸y ÜÑ A¥ÅeÂ�¡Å—Ï-G§Ø¨ÿÁß0‘¸Ì³�;/C^–¢\—Svø¿§{›}PKÒV1]#Ý™�ƒ3;imunify-security/assets/ui-app/assets/static/importmap.jsonUT ëÆ«jëÆ«jux 臥˜Krã8 †÷}Š®¬G1%¾{5WAÐQG–\’œéTWß}(ѯq‰tªfç>‰ ‚úýíû÷—öpÆyzùñýwüÿñw{8õmøÜõðQ�Ã0Géåò÷îmÿ*Hù€Á ½þœ^þzðæ7¯¾·_É»&fµå–¼u[Þ­º«÷íWò¾9Lm¿ï¨šŽ°ØMo0’¯<©÷ÔcKÓîfñzX41g-kü&§êàs8ÍÏqgÕ*]PÞ¢^›m*ôûSã°gË•ë¼S !ð€Eî®íg{覯?¡ºú¤5ˆš5Цøý†Ž¿~f™‹öz:øÕ_iX“æZéÿÝp¤æaü_$Œ~ókþm’¾‚tÚA 2Èú>».Á‚¾=ÀÜ}–u³X�ÈE ¢l¼-wnþ™(»Ñgy¥j"ª‚Ø¢¢Ϯտ¯ÂFAàNÖÒd;¨ëÏì:£–VHÊX¶ñAgAˆÃèã*³´‹ÁŠl”ôÜ3‹Šg‘®õm6TQKUàé“‹Ó±ðj}²šƒQ�R`²Qáë‹Irg’z‹f�gÆ�Ëa} ݰ/lk•,Ò¦0‰Ä-Ù¾Ó'ž²/yÑW a ¯Q4Vž–ûß]Ó#jœ" \8ÌÁ“ýƒò…5H•�P£��¨ñð¹;ŽíÌô]� ×G€ÕÒpe=Ùì& Ñ+.4 Nrj5� ’$™lŽÌa9ÞEO!¨-«ƒfä}vÏ—Óº,nUS “>°˜él³o-° ǘÇñtÈžƒ´ëŒd-dÓ·Ù[äL¿æ*´Ôùóf‘:¡q ½Ca» ‡Ã¡TÛ‹š¶#nFb M ´{›çc޶h©œ›Ð͍Qéíà ‡cÛå[ýEO°ÚëØ¾t˜y±1›È‹–rWJ«1 ×~3öKe+mS[‘ÎzŒýÞon<Êhló vÑSÄѰÌSÀÍzºïà4KH:Ê—ì½M¢“B… êÀ7Ãv¥;ðû,vÓ�çâ`ÑÖ› æÆæy8TÓQ¶ÞÛ¤ýÑŒÇ=fÔxU¦Ÿ¢g6Ÿ“šÞ7°Z[�µÆÍ| Vó°�S^|6J‚q„`RØ ‹|„1[Ì‹–’ÜN�q¡œ øFøî†_ùQ.é©90ÚÈÀ¡.GßÚca:ŒbŠ)ªØ­cö£Û'n¼BM^ŒªkqÆ Õ²Ž`î6÷ëãÇßó�ãf‘êÕ6Ê ¤å$(×W¾›0¼6‚¨y‚þh}á�“œ¦+'#•×¶Ç +séHåcâf‘²5.Äc€³"y?¶¾êÚ)[ºWƒ”V1æw�6Ç¢+·Å|Õ.Z:tƒŽõÔ�uyýmÌZ«˜âi„&G±¨¼êÒ‚¯k[?΃+Wü�úS6•¢¶Ò¬S>“B1U¦aßöË0;µ\ —g.4¬\£ÇqØ�4M•Ë_®ïmRA!ƱHñ`lñ¼yNǶïóéÿhwn\7ªVY(>e„xgÊÞŒqåñ€:HË16ƒ"o¢åZ’çVu% r<U(Œ(Ÿ†SW*þ¤¦wTZ’_nÊÛw¾ÿŸW÷6çÎâdðܰøÚezø^J‰«A:a|¼`6Ú„'qˆ£u9œ¿>8{ªWÚÇ.ÒfpÙãjÑR½‹ó;±ó=¡ CWXñYNû.‰¬ˆsm`厲8ÍmvT>Ëé$©jGÒ„òP¹›GÊîø¢¥‰…£QÄ×t›;}¹2UO>·<Ú¥cÄÆÍ *læ£Ó¾=ºT�8ÉÀÐWYùÏ-~ùygû´½quF„ p³)�ñŸYRÏ×ÇÆOÜœ«9rþ|ûó/PK ÒV1]6imunify-security/assets/ui-app/assets/static/nav-root/UT ëÆ«jëÆ«jux è‡PKÒV1]zÎüª?simunify-security/assets/ui-app/assets/static/nav-root/src_app_empty-route_empty-route_module_ts.ff022345e5e1d835.jsUT ëÆ«jëÆ«jux 臵’MoÔ0†ïüŠÈ\ÉM·É¦¥Y…KÅD9Tâ”F+ãLº^Û²'­ªlþ;“ ”�Vˆ ͼö¼Ï˜ ¢€^+d k+ö_œT_?kœ‘÷'ÞZduù·àáPÕq↰ãUÅ‚W[éÜz‡�”1 ü¶îm3t°ÅÀj1ž_^fGÂÆåÛÑ&žC,lÒpã»Yu3‹®�š‚SŽžâͽôQ(-¿ˆ…¡i�®ÏâMù’Ï9£êdŽ%j5âN‡ävX¥y+UÙF¡¶†ž=ààMdà�Ãá€ñ4=רޕ¦bËfhµ�+Û;kÀ>⣃�…Ö‡‚Xèì|uò‹yV×¢Õ…b%ÈÄÌ£áÛÿ\¤³ù,zw/KÓeóŸß”}ùûïÿøçÝ£ùjqyçÿh.²áEÒ9™]d+óßå‡ü7­«GýNûôάµlew¿ùëUvçA¯ß¿û—wQÖˆ¿¯fÃe’ÎÔ÷w¯ÔgÙ7çË,™½¹3»{´˜O’å�æQón+þ&ûGûŸ­Õ7ÊþÑùg+ù&>ZL’a|ç^çn+Ýü«{÷/Y¼\e³ÆòÛfº¼Œ³æéêÏî|óM’ÿÙùÓ7iþñ,Ö&ý¦›ÿùßôÿüç;étº¿ÿžþµÓ¿ûms¿×¿hç�ýþ»ùé±þé#ýÏô¯ßt:ùþã›NÿÛæ4š}lžÚ·}Ê爫je­¸µº{•Œï\}:ºŒ?¾Ÿ�eé<Ζ�†Ñdr'nÍîÞµ“Žÿ1ûç_–ùtf÷¾YšMJ¾ÉòqVëu%�$ÿÝ·ñ?’žÆGú¥Ÿòý ïÔïûSV ;ûKþÏdñCôC¾­w——Yú¾1‹ß7žeYšÝi>‰f_-Ñ|>ùØHÇãE¼¬LxæÛͼÌ’7É,š~Æ Púxd†‡0aÃEãŒWÀRæ‰ý‘G®÷QØ=‚Ãn‰ž¬nêÿ4så®QúàZNkù¾ÇóæFU ­%ýb˜«”¯Ó¿ ì+}x–J¶y†= Ç!¡9€ëðŸVŽ–†®JEe¾Æ¯ÖK|™�ôyë—ˆç WÔAñVy匩›Çb¸@|¥cµoËìãëô's¿~¯‰²�CÀcÕnôæ–¿ÑÇÕƒ.›ë#d‹1lªõ$gï’øýódâ½ö °K–ÆbØ&mŠ�q\àüÍ‹x6zMñYºH–É»X–lð"ÙÊucBwØæp¹‡¿„ሶÀ©õQ£ùéS+Zævñ`eMVVÌò¦¢µñ€‘0R’­“d&*É]¤Y´íEËŸESy&'›ÃTïúÔäyÎI¯FQ®�]ÅïâìãÓè£ø<Þ盫êÒÐÂæó'Y‰5ÏU>´r©çÓU¶¼7/2*¼plÈ,•,ÖÐÞ†Džó`½ã“È»0¼Jô·‡ÕóR–œB¯ò˜eç2MgÞM°weÄÞ"ÜûÞh=üëôyé^w;\T~›92ü£ü û=¥ì�ŸEÃËWéL¦³žpìœ{øZn®Œ·('��_®–£ôý,ˆ!Ÿ€$éã½�‘öa"tPnËLme˘À13n“ôà¥É©6�E”¿±”r6ï±ê ØpkXJ  aNŠP Õ‚úV.V¥…i­B9‰æèÈø8~y™dâôº‚̦±¼\e‹²� à�=u –É4>OfÃø;-rFä¶‚8Ñ1~UÍæ¸T³!'Å9kŒŸr›I›K™9–›J¸¼\˜z #Çf<òC·>­¿E°¯^ŸŸâ÷¹ôü78F4±ûŸ­K~l…ϾåÏ[¶ò£�GºŠË.¸È¶Eòûx4+ÉòTŽW·•ʸø¸XÆSå©fé,qRÕcóÕo¢¶¡?íÖHW£\¹]}p=ñD}ûR}+c˜ššê<šÅN´kx¦¾!ë%Y<\F£iâTKžê¯«¯ëgæ“xá´ZÎÔ8¼aM9õ8uæVß6¿ž-”òx©P»yìþ=W…[€êŸö‹¥ù=Mfù&½‹&¯?Îs>’/hµÌíRÅ^Ì_Øï�Ï0ÚB3ˆüC8Dø,6€®µr³ê8ŸmÂçÔ¤ÿÞ�òˆ‹îšÞLÝ{×»ÜOw[—Zúí~®Äià1XV‰pºž·9³‡_b~Zö…©Øïhv0ÎÒ)UŒbýù2ý¤�ŒI:|�ÎT8�Ž"x1�ª½JGÑäôj˜NUäÃÙ$Æ—édäsëT -àl#¬Y1ãt6N²éëøƒ'ºÁ a=VG�ed¼�qŒMÐ6^œÝƒ·�Oª°:î3&Ù‡I/Ÿ^2Ù#nA�œRZG]–@‘UN¡Þ-øÔRä“+9¯£Áa ¥üþäá!èæÚ}É|ñCZùìBÐÕ‡p»n!xÀ¡6ÌÅaø#ÚRÀÓÞS‚_w·ªà(à‡XØJÄŒq<¸§€ç¯xòâéOGfg='¶š¶ÃqɼÒôHôMo�^9UvúĬ³(L �Ñ,Çø5žf‡Í2‚)‰Ú(riC)¨k“;®F-2GØ]²?!ˆ˜…š°(ßpDÂÇñ,´d�&„a8NHñÅ¡u{ýäL$Žœ_þüôL1.+[¬Ì‹éjùB[kå‚™û…*«ÿ|„›Æ.!×+t2�—öJf·–ŒDIH‰ûdþKœ-ò¥|Ý<ÝHS¸aÌ0#8;šÇvôj;£Íç…@U&P¼fÉ\ ç ÃÃý`!+ýc Ý>Ðj7³ËádJCäá7Ñ~{d¼c×{åÅÐ"öŽÐã¡*Hcö}ÃŒEf5„½­ó^ëoºˆ4#6Â\ˆvùvž† ±zDjЕÁH»GÄk¹ÂÂD?¥vñö�Ù£¬³Ž¸<˜Ë>föº}ÿüü{ÅU—Ñ`¿VJc®áë¸á révyšåæ …”Ãóvêã ý7lþÅ,çÐ^¯c"V»B¾ü¨aÄC>è�«eù¨èu©2v.zꜰYjÐLØŠÃ¥!–r#ïú�‘®{RÃ�âq´š,¿S¦f2{sz•ÎmÀp’–à’„Åq†+è�XœrïÍcŸd#Ó ºO›®ÇTìFrrO²�;ÃXÍ„¯À†õ¨¹ÏÒe2N†‘%•dþx4Š�ÄîU„­Tà"è]E yh\™ÓÛS,ç‹==Å•­ôTà?1ªØžqø7�šV¢Îà˜î5A_Z>ÙöV£@®'¤x6J„u鋽ÜP�E�µfécsJÝò¯W´m—CÚ¿[9.Þ=½A.‹&拺íT2e‡v‹6²¦.§1l€-8)Fß`Æàá½Ç·cn€ßÃ08K ×xgÊhXé�i¿N.-­è€×å´y ›rzà«rzˆ»rªãá7Ǻ3S«Hq>1¦CVƒi≉¬ˆÈhÛïôjœL–qöÝÇr\)ƒiŽA$„™AN{ùT/ãhgZÓsš7ϼ 1ábÇ((ºÚ¯¥è©Ò©aö×i:Y&âyz}» Ç`ø¼#zÀ­YI*´7�F¯Ê¸w©´\lž^=~*ž#ZVøvÄ–” ÷øY¹ýë(žƒ§CСíkjoR‡¼EsƒBÌáa<.¡Ž�?õñóòõ[BêÁ›Ñ©âÈØVƒþ-dS‰“¹‡Y˜Û-A=N)ú^�$VAB¥û>~éb°y¿c3ô¯<û‰h‹ƒ2CüXa!xõ.üW…­Ça=§“í­ý)hQ½íE …?Ÿ{æˆ(¢è¨1úÇœ�.‡þâÍû_{ÞNWÂZáŒ~ÞqŽâêá~ Ù`’Y©òÿÑ+cd"ÛpðW0§Þü¿=oæé5x"�€Àl1�ï‹Cw¶çHïa½í �tÿ[Õ6‘~÷�gŒ#!êULR $KÎHzìØPª²ßÉÒ†A’6Í Xž¦¶ïdž¬ùÝ­>uu.4X5¶ÌúQÍÀÄp#a’ßí? ó³´¥)I–l�DG±âY ñŸA»�ð«~³(Hºä±{nzâÕ/0ÛLL–3Ð �„€î;ûÁ³·|W×I³­ïd ljädû’ò�åa¤ÄhCýv ¦*u ]�¶wu&;ë¢A†C$ΆE'‹NÌìD¦Iâì7 –…&¾µaMG-‹K¼FÛJàw²LC>ŽNdˆÍûÿ;œã‘[Ž4�Mó�,´ø@ÖÙ“?öDHL!!L[MþÉ“ o6ÕÄI¢?!Fuб¡ÃjTÚ‰ø0{å2{"Ë+D†Û³ç†¥^TˆûËж¹=ÜKE+HÔ5ÏÙNåX-Gv]VÿGÒÔHºr “G¯PˆŠZÇ’ÕšD!{À}åq94Èà>hvL¼?‘e3˜Œ?±�•ÖÐî·ƒ«ÿîñB‡Üón©Æ–Źƒe«déŒÂìœB^ª!d‹“È2•h}"‹V<ݼm¤$ .ƬŠYÜd4+[L¸éÉùä— =´ÜÒhRòOÔg5ž,�ÌÝ¡‰°›; Û[Ão>‚EÞ¼_ÖÄÑŸÃ3o` ¢Jmg�q Ãm†x. Ð.G—­§>éo'^<2¹„ê1ñ²u‘Ø@hÏÖŠI=opWd¹‚ÊŠ¥`ˆòÝeB—d[uðRóÔ 4ƒQoÐ)r ´´·'_öÉ7Õ[äHÄ{“ñ7ÙBB{”æê1bëâOƒ]&&Z ®é�¡´v_”°ÿ›l!>†³Ø6þþæ‹DéÛ®=ú7¥ëÁTO¶OǼYæ‘\ £˜Q´ø7zã~ ý6Y™G^Ìðô‚*ÿ7Ù #í¼tãvÊò�a&Lþ›¬Œó³ê4Ÿ=Ìà^¢¤E©óáDäKÂŽ:dH5ÜÄE-#d�²©À΋óQšvQQ'vÌÖFànѱ)sçp|{í¤€²þ`vû7McÔÀëpÿ‘N6«ˆKÕ ¡�Í ÏI#X�ŠŽebjl©ÃiU$ ÀhÀòB_'Û»P®Ÿ˜ádQ†á~>üBfî�?C¤qÖ«!dVb†-Í:”òB&¾U°�ƒ›af11^¾wk”Í{ЂG�ÍöÅ�ÙQ*å…ìwaa&ºÂå Y8ðôi„™W”&ß=~&Ûî–ÿ”ém ®‰«ëûŸ²%bä8òòGHêa™¬À$ð–ÛÈüOQïèb£ ·‘ýwyýHì1YïäyÞ¨nó›¿Ë:(GPÑZ Aj ÐŒ3=•2t5�ÓE\‡„Dª‡ECÂæ�÷Øô¬¡B"�]£ÜQìï²ÎÉí"Äì%®ÔA yjèÀ¢°·ÏM¤vDéuùLRôw䌞‚Bªþ.+SU„ÓøU½GÆ…Â}ŽWo†{)cȲ7ñ1/å@Ütö‹o”Q!Ð˺a8/e>�²á�o8aŸoâP^Ê a>÷Ø.¡²«ˆø¥,Lq¯x¬S¯€Œ ºP9ÔòHÅMÚöa¼”ÕY8Ëðô€½M])û/eÿl!™ ì‚|¹8Ñm{%7\+r#øSmá+9 y%Jð°¬Ô³B(D7` ‘ax¡û!Mou’Ö+ÙÕîˆzbFo•OV&�‰á:Ñ+Ì…ˆ¢ÅW²{/9À—Ã0Ú~MÿfzwxðJæ$¸ÃÜ ê€Op ylº[+|%ožPJÓ+Yi2V˜ ¾†·Ù�wàî`ËNøR�—£^ØVɯdëŽ_8T ‹—s¾—íÍ�•Õð€3£iœÉ0øWt„™lâIw¶ÌúJ–Y¸m<ΚGƒÁYÈRŒ* 1ãfµ]‡T–nŒº±x�Y¦,ãJ—INJEp¼’åš0 báoR;^ÉÚ§K"ÐWuÀÜÙìàe+½ßèLÛ¶à+YCÅÃÆT6ãk,âY|�ØÃ'ÛCè¹ü ‹o“ˆ ޹&Ž>¨2~ûƒl…ãe#.õ˜ì: È`%öª8œ¹ê=²€§·½BYí¢"`D0n5œ, p8îà$}‘~�?Û)bÌmÞÿ [åhÌcä€~¿ÌAQ®—¢zLæHHgæ1¥oý ß3m£WÄÌýèÁo™‰z&ÞÛýt6¢A´õfù²2ÃzÓÏd¸Ô›ŽN`„áù—Ü!¾Í=ÏäKŠëÇmk«&1¿­ºíNŸ1×ñû]„g²ÖÍê‘È�ñö úFžÉ¾"\"hn´âLæl¯­È?Ù‡ ó:ì�ñfŒ‚jœÇbGÅ…ô”e}¶.„áD˜��APúm2ïÁ®‚ðXHÁ J'>“Õ740Áðï±(WØ¿Ö ÓrÏdÝO¬§?ï±—ÁÕ“50>Gà!²â4ÞÞb÷nÿ—/.g¯mFþ´Âñ“Œ/ ÇF-�èíj9" ä]ÑžŽs³ÿ?ɱ"ÛÖô~Å'ÆñÚía‹'O&Ï¥¤Ú¼sYÜ�;<†˜‚(=8ÙlÃBçaYÈ’¸ ½¾qê�ü>A½·|.¢l]áªh‚=—iÑDw̹œÒÁ2ÕÏA.¬'/;΂bÔ!ËÙ8F�Ä37²ù\LEu 7ÝíK<—CRQC8�ý䷚䤓` ‹910²‡U6ô¹ú@7¾ ®~èy²B©r€—=Xdã—?÷é"ma¹‹°X�WÁaI¬��Ùr.3pd&nàð\v×qwæfP5D…È2ÒV®ü–Ë¡Û|£»]¶Ðc¢ôñ �$É\½[„†È»*‹Å?11;6µ?—V8N —CÎ<áÉ¡<ëŠÄ“çý–% GZ-ŠEN†;NIÚ“z…,&¶Ûž®Û*D¹æ k,„ƒu ¶ Ä�¯î³½ ‰UÒ´üZxxi6 ˆ¯eI‰‚¨WjY¢ð{‚™F~Còµ,$p9ܰۨý¯e[7’%Èô¡úåchê�¸õ6Y`€yCŠ@”­y-Ë ´–ð1}‡dÁS€60ßkY:°É3UëµÌÁ9:ÏQCK#D—À¹"'ê•Y7î I3”![ÄäcCXËJ !³Wîg‘Zh¨ÝûY6N mÖ¿¹±µ–¯>·©·�£Ÿeð²vŠ‚)ì -OäžÂ2Ã�#œŒBÚÑóóÙœ“Z*å!|)•ORÌ÷gYFóÄ7¶ð³LP˜Ï‚Ê¢Ÿ‹þ"B”5Í—TCìÄ ¡¾ã§¼º�'h´üEÆ’¹„ˆ@lùÿ‹Œë¢GFÄW¸‡•ü‹¯ÞÚnU¼È\öYHpFÆ/2 jÃ… �Ù˜¿øâõqµ£by>į²ŠÈƒh¤Uh0«� ^µÜ_} O/^?öÿÈ Î^>˜ÒÊ'Ztþ·|oÐT'Ú‰z,Ì›ÿÞß…#Vkþß²¬ã¹I6øÕœë ùß²p,õŽkÉþ¿e´í-|‘SËÃto¶hq9H£l¤š¿Ki¶nüío·]Úô€¨#öv6Ãz„îÔL¡?>¢Ãw\ãÿ/¸=#öj.+w &ocƒx½‘ *´ VWcËÍÙ�µá„6Ýi 6d©©ö¦ëØ›¯ôÞЭ,§G ÔÐðš‘Ð[,p$uÜ!T‚‹fŽ "ÐÚ?!�ÁôI2;J}ká5¸>è}Í£¯tÏ–×ÁMöxòÏ­G&AÛè0ø0רòžš_ãfš�з2¯±M*<Ê¢05TâàÂÌÄ~´½@ÕÉdºš%ã�ºVðe¤Ú›^ÅïâYI›SR^çÌ’,‚ÜJ hÿeÚÍVÓAœý8~¦ßø©•̆ɨôå¨!p�© 7Л5�Ÿg©Ü}ªcf3Îc~ý:õí­yb™æ¿O—9Ç/W¬8 ÐM/£wññûÞU£ÁÍòSHÝqâ¤@²%Î*~'ªíèæœ®¢ÁjgîÖHþ¾†pQ<0�g_‚@Ý¡˜Ñhôbþ:ýn ߊ›ZÞ¼�òÔÀ•tA:‰!®�ðšˆåñóU >>¶›ëiWDÔôpíÙQ‘ÙÎÕ×ZR�ÀôuÎrlÓPzÇ÷½ï¦oý5½‰eý«Â›õ¸Ë(™¬ Þ£AÖ@Ìê�é4JdE�WYÚÙÊ'$ÿx1÷|�E<ËUZÏûѾ{H�¯ �ã,ççz(_ß­êì½…,Ld $hÁaoŸá�d›8]4¦„YŠÑN\K·fZÈ ì½fjš#`ÃÑ+�íô p'âò‚0À‚P¥qÒ1�ãú'ÚêHªÑÞãa©Yƒ)Z°Ø>E8”ÖÍ]󰌲§µ&Õ°Ý3¾¾¬1idÝä¯èêPî9î²¥oÀ‘QTÒŽ�ѱ~D/0ó•´¾cÜ&_‡t¸øV“ Ó,•z²›6’?Y(¤¯s%0P†3bžDG4½ÍšÉ¾‹³dt˜ÒU´Ä¾ßUTüzÍçñÈÇ¥kâ5Eï”ëâ5�‹xÈI 9 Ú[]6�ö7usßWé(Ÿ¤b‹ÓJšN£óxeù•ýe³dö¦Ü!ïF*3Ñ>:Óã |µÁfƒ!ŽçÐKcö"t& ¡Y(ûDç•�« ´ÐNï²×9TiÖ‰ª(Á¤àó�=© ´X/DSÿ5Y^þ-KWóóa:—�‰¯±Ó|pç…R\¡À£'lƹîYè[æyèæ µ›_ûëe²ôÙeµm%ï4¾5èIß 5칄[H³ôÜÚ'µC7dµ(À9H¢ñC ²%{š °/B� ´[3~,4_NöGVhcugv¤1€V»·®ÒY|Ú¼¯%q9³ón³5ŽßçÏ4¿NÖC5õšw¿nJ°S;nÍ>Vy0Dk|»¼ìÓÝO­,V·ºœuy;šåä¢Z :‹0°;X{ÛÁÓ®–dzÑãI¬tƒt¹L§…þ|µ,S؉G—•ŒR>(*( „qiœÈÈg<#‚˜ù¤Î7Ìß­Zç  š©–´Ñ*GQhÀ,‘Ú8˜ Ïq¸:&,w„Ô ƒ·Å;¹òäîIdÊÇ0MG4Ÿ:VXöéíKP@°UxÂòÚnb·Ôl=1{8ò œÍ–[¹îoA›¸/’…„ñvɨm2ï…Ï~â6(d`û Ã@$½ˆRég{s� µ"ò-kjã Ù¿rÌ‘ ÜVC³W·QåaÚj~4¿3Úq4Tg~á>„¾a�n©ëz‘?É OಉŠ%Ùø|‡ì&ÿäÐq W¬x 1^€‚…ZaƧ=â<™5ׯð|‡Ž¢Þœ•"Oî’¥ÃÆ:®?\¹D¨fãn€FTX/GaqIU#{ÇRzÐ [-ãqš ã‹h¹Ìíý\ ‰†^I¢…ÙYô; ë‘€}±ÖÂ}A85„f[Ô̈£€›9(²v½.œ”xq $A Ÿ6îÌâxfõ¼úT�Îöcö§Ç|Ô>›'ÞÁút�¸ñ;.ù÷R$€ƒ“:•.o,×ñ°49Ïè Óµk+ Š!é�+È ^‹ûäãñ�s CªpÇY�.鲚ºåÓžvŠdvqzHÒ 7 µ KEŒ{ïA»ñ]º¼÷4^ÆÃešq5Œ;,nº@pG›�ˆRÀ•»ö#þZ›d:[Ÿtp„‰5ÉíXr÷®)¸ùK-–†îÁ|©"Q vÂSܹUÒþíÃ`;_�»>b‹ )\(0‰ÿtÂ,p·Gr…ó ÄÅ-îþ1[V到}Ù¦›X©Ð“®%{‘„Hâ8/~+è%0 JW̹ wÛQD4Ë HÈê…CÊê×c†á(A1/¯•#^=BF»o’¡!J‡Ž� Þ? Hm1(×9™›­¼Èw QHB¤ ºÜj±êS-½†ΧÖÄû÷„Yž;-•òÀ}×”²Ú%Qp{áù�.»’ô!â¿€;Úos–≡&ȵ ý?ª ‹šfŸë’˜tLΩ»ýS"ñÀЃ\�¨&;Iú�傱ÏIéÙ¡-°½.ä•@ô.["Ñq(õ]!�U…²ÕM”Hˆ§s9@¾ó‡£àÏÜ™±!ýHåÖ¯ æóíòaË~_³ ò¹ª„,ÈþÔÞãÛ%"¡~$Dà]¾Aøè˜O‘I°µGüžàn¢ä´=}­‘B` M|îs ºbðŠŸ ®gàñƒð³DŒݱ¸mŠqn•ØÚËôãå›ùYIªØñ8J&*Kèy¼^z"�!ñ-¥ŽWsHÓÒÅ{ƒ5ØÜI,ÚÖcÞ®J´È;!r‹äI«ªÄ°Ze‰!R$â u‘)�óª”R.ãh9�Ä Q,QJ=&“ >Ïú£œF¿lâË3¯H ¡ÀaQšI•¤û„^ØÇŸaèÅ7C| ®ÐÀÈe²X¦o²H,dÒ”>žÉ h}ƒféßâ´¤Xá6'à*¡#ÞvW³˜í á” \µš3‹)]¤ã‹ÈІx2v‹g§)8°Hqْן{ü²¡ˆËÔ·xx‡!´LÛðI—ìž5ñÕx'ÒÏÉ âFˆó¬²Q‚Ì«ÜaÖFWÙÓÏ÷|ï�ççÏžù^Õà^¢3ãÜ�9#­E« &ƒ�#ßAžF”�Ý`ôã­ i›Ž °¤Üé€ñöryìtÀa>p¹Ö^¯ö"êå¯ è.ï<ÛµNâh¶š{…�ÉLÛ«ÒsÓ뇩V[°0Û Þ¿‘)¢�¼÷,�‚Ý(G@átˆŸ[^ûþ~JÊ:VRÁá6…_q?4ùw8¶á2æ ?J|µ‘qówUí1б‡v>¿Q’øÞ�T{å¤jË~vs^s›iö…Ñtë =úÂtn Ó©-áÊר’êˆWÛÿÂ;Œ&�K<Œy}¾«ûÔJUE§Jf½ÃEk蔓¤#— TEÊŒ¥�6ðÜõrÜä�Qãùë³VãüüûVãìÇüo/^=>#•Ç4âX‚§â%=cÁ½xzþÇF jÌ�1c]�$ZÀ0sLA¥Ã¤£ã}hýÝ6Lsïà£\TVÊ�¯à â²ÔuAû° ¶Gj"ñ‚E𗮤ýQxŒ[uCÓ\Ø2¾¯pjȾœ–³?—¿žÌ"\1V {1�¦—Ñ4,#ˆÜ„|¿Ä… ¾ÍZî;´K,J‰S;Îàóðº,qjñÙŠE�™jÓ'®Æ�ž¸ƒ.TUºP1¯Š�ëß¾¥9t¼`1•g§WÚ0űk®iƒ«©ŠÂööAauå÷Q¨ÐÀ"¸•¾lÛý4mîíáÚï ¼�sƒ>|BùònìY,墄‹v¡¨„Û:ÇTÃS£Å¼bÛxÅVWh‘¤:gú›=#\�´F@±ŒÈĘÜ_i²…ÑÒxòêœÇ€ø&¤ÂrZËSRµ£ÂDPò¡&‚9Õv:‘ÁråÒPÅã|¹L)À˜óßrx°�dîˆ�B]ù+.l cÐÊ}\-EfTêÝè ÃwÓt¥Š !îÔ: � S´ WÝúõñó@!\ÝèÔc«ò©ñluz¥›'y*ê[-6œíúbçT�=Uh<ž�"õ®\ÂeÖBÀ]¦va�6³‚àºLbÌù@ùì»ëý_ÍÞÎÒ÷³`B9†—”ÑÑÌø@ã*ue‘sà8{1²mŠ®¢ÑÈ6­�Vù½™-“¡VžeY‰@àêÜöòÞåH¥Ã©�7çž“DrüúQÈÌaÓtu pÚÅ…çEøºr –ÃÓàPŠb›âqÂú5Vû�6?¤r‡'Gücxù𭀯c8 ±ÔÁ$ð¥ø?DlO;!w·Ç{¹T-aP(´—!.Œ h>¡á]ªž]û ya›`ÓcØfWA]©�±ƒà*\DfÖ~`¤à¯1ÎH}D®brã£í(ù·žžåï8%TXÇ›ÏiwlG ¼yú×kÞ¾Õî»'ž.Dƒ_å£ë½]Ýr`ç¸ØZš·C~»JöÏÓò¥F2ÚÚ­¾§=¯\.Â�åÕ\î(±÷”ö.ÇQöb6_-==|Ê]åsAD ZªäNDB¹'”B?bY9ÏI摯¼~ÆBxC8WtcB…>™¡ìjª´“ÌpøŠ‚T ³•¼Ÿ¨£…Ó£êvm7Iò& ®sO²ì¯î:ŸDÃø2�Œä&¼5ÒµW/?!‘*(×ÞϵBÿÝj¹LgþÞm5NUóÄI¼Œ­ý0HGž.–A•²0uÚ7&´íݤÜóÂ%¢à�Y³§^£WÊ’—B.‚ˆ©}m Tù6þ@Šû¨~Â5ݼ8Hèýñ”O?o|R>ífœ4´6då´Ñü:½3;*Zݶ®4øR�Tƒ@ ü¸Yàrð–ý$Fã¸æ �à'ô À wÇWîæ<‹—þP¡eQÆ—z¨¿¾÷¢Ööðz˜‹�éƒu{èõ¶‚îq©�쯛ùß%XÛ»ã(;Œ#ˆô„å?„,+=øiÝY m6R’QUÃX �?UTçéPÒ˜Ûf®´ãA�»“Lb¤Ô6]ÇnR—ód{hã5 èvq ”F½=žFÉdqzåo—sÕWé,Y*L?Zî›ôuú_«(‹fËdæ›(G*«·?df\>>­¦µ›n×ø2YÔÁ*)7B¬¡G�1é˜s5®Ëóx–KÕ—É4‘µšr¤cº»EŠãD%2"#,u•߇`–TzµâÛxDÊ z͆qn EÙðR]Í׈¦2Ù·a$\Ôûªr«âÜå¥Q¥#Ñœ¯¢ÇÊ‚Jók,CØh³�¯i€gy޼‹½éFGR,,DÉ&áÜãb[u|KNj‹ ¿*߃τžØu—o®%ç%?º×Ýj*þ…¾Æ*p'–ƒQÁ"'lqW.w¾·"þîšþ|FJ æ¶ŽŸÕYòˆ`vfH Y&å®Àrä÷'ž-/Ò•s×¾üªq¿LåÈå±'p�†qU�àÅèÕ<�—!²q/Q‡.ß½€ÝX+ã,^ÈÕ +ÈòµŽ wÀ‚aÖ kŒ²rÕ¦jÉLsÛ5¾PTœ£îåºÄngdhz’ä7* Œˆ.×­#é@—èM\>'ŒG@ðÁO¨¹çßbø³?´öµÔkzû½©QÜ›!’�Xpæ/Áiˆ0¨<ä.³�:ªïçGû/¿QMù_ÄË|´7²8Dºå¡"Ö bR³Tø@.ý’¡'<Š{ŽÜ%’©¤N¶`cb|?ÓEs£I-âdz‘RÀ=„Ð�3C6…Þ7—m´“â§§÷.‰ß{ÌGœÚpûED%Óˆ‘sÄÈsCL¤"¾‚xû=uhãd²4×-ß×{ŠIË× c‡-… ≠BÇJÍ ³ü1Xå²zÌÓ�³ïÏíŸ�¡ž;›]èp�Ø—Ú�[ þO<”‘}“£mé§I~¥P”kõKI²g7¹—±Ó}�qd�ÒÜé�–Ñ`á À¡Í˜æC†±õLêm¯ŒØNV~©l;S_4”ÇNçt½×ÁÑJm0"èÞà£Ìa<ˆ)ó“9RÀPM"ßrº¿*=„üw6ZZ%ø¤™e¹Ñd}¬;½_ÃL²½ù‡žFø_~½pB˜ÒGŸwÁYÖ·œ. )zµCM‚,R áaÁpæÈý\›—&/Á„ãj¾ÊÞÄ�=Z ‡<¾ªªN*m™-jöü€X·™¡‘VnèAyÇ1<¢¨T}3ߣ1$�¥Ä½Çœ�MXCçDñ:}�£ÕÄçkÀÈ�x{^t •¡ÎÂIÛ`”¨’M¨³ Çi6Í�üÏ¿eéÊ׬9’­�AQØÏ“x"à Žä… ÛÁ|®,ó–ë½3áS\I=ŸGð*-è ¥è(À7Òø6Ó A@Ĉp=¬º%ÖÏÒÑûÚÑãê*?COš‹;JMËžï>.c�/LÜò> ®Ù¾jb{d÷š­NO¢üÞ›ÀM$ûº�L~T,øU:Ê™€ÇÉ,pWÑ~=kððD,p=¨K¡v©Ò è?�–Òg¸;ú#×[R)ãæÃU‹/¿Â‡Ðõ®Eu3XPUæ‚ÿäÌñŸÊü}¯À‹ ‰7õî:¹t^Þ¬ô;›Ïh–`‰ØÜÕ!ŽËh®ðQ;¸!å�ÉÁd6L§¹Ýu¡<%™Îü¾ˆgÑ`RB"ÔÊ ú¸Ás-¿ó!�D/ 盥<5]{s¾�âe™pî"c)Ýu�Ü”›ù×eÊqª»MœvYÑVÏuPf÷"•ó D ¹È†Zö˜ÒH.‹T4]ªª`O�ÎÅ2Kx¾æ·á®)4y?.ÅûwUÙ«Y·óü§³CŸ{W:T)»ˆ:€DÐsB’&ƒb{ü¥Rvr“s•œðz¿Þ›| Å$eÏ"­¿uÿÁ߀ví¨ØÀw›¥ˆU qa˜Bˆ•Ié,@ByžòV¤³x±ü)^¬&Ë"CÅQJiv´X ‡ñbñbOŸØT”tµl¤c��¢5Žü£iþ“èM¼h\FïâÆ Žgæë�óøëæ¨ñ›ù§êÄ:�éÚÛX¦ùh8V«1×̸±Ì>6¢7Ê¢™À2Îfr©.DÝhúsnEä¤qgónA¦ØñæâX‡ó R}.ð‡/èÑu¡°¢9_�åèÚEÓøD8)xÜØV™=﵉²Ë'–Sá›ÔMÿU�65Í®i·`§¸ÎXš¥ÄY¼šù‚i"^y5b]GçÚÔe5¾ ÷v{­v)¾­X çÈ1Þz‘�?*^M"}D±œæÐã8ÑÈf�d†ù1û9 ùžøf5àB-¨²N/X³””�þ°ñâUïAÛ!5I{2µR¸ŒN°õGdÄ~c†@³ÀÑ£…¸Ò‚éЃ÷›í8aCÛO°�–cÑü¸3ÆÌ+;´ÂKãSó§II(CÊ?k×¢ �æž2­ß/Gvî?2KäiÆ=âeD‘"ŸÄŠØ£IþY.prê¼0ïºÈV“xqt¹œN´v—�g£_¢,Q:� æTåžÞhsëjM,UYgéHQÿ´8:,ÅDT5SÕF¡a—é{]õHßݲÕP‘¾«:¢ÀÚåf´«¡ª&1ÑêÚe2[ªxÛ¥S-Ôm¢º!ê¶£À ¯|Èó�¹^!õÙÊΖðœÄ�ÒÝraìJË}´èûùòÔUb%žpeâ\>3oå\Á[Í…ñ– ZÒ¨û�–ttÁТŸ?Ù;„ÑpûQ!®Z‘|Ob dŠn7!€c-nÌ€¦�7u$Ý¢­øæ ëß\m°—òw­÷ZYé/¢¾x’Ïi�ªþ®ÃDº¸¤Q6*¯8V½¶FuØÞkƒ„�²ðˆ-]C8Él´ÁaLÍ$ÔA¸Ž…ñˆðAO³<óàö ˆAHôcL�ìòU öŒˆ zÐjæª��ðìQô‘Î*´ŸB^Lv�Õi$~8Þ»¼ðý)_¥úÿ•»ï^FÄýx'Lr¸<ëÜn¹$}�Ô‰˜bXR4À‚_ÖÝÕñ¡@±Ž îðKâd‡¤„=02§M*véÇkÆ™?8òF—²^UU€,~¯¼0Cÿj›¿q/4Às$ ÑÁP¾v¶ÏSÌ'EÊÛÒôÐjæJ]Žâþ¾…7X-hÌÇNQLÅž n�kGqûÖinϲ‡�žDLtÄF%„ŒmÙãÊPaŽÅ·@+ua6üÄ‘Í9¢Žåâ•æ»Äý‚ õ6QÞ2…Š¢™ÐD’°¶‡dƒ<­•}ÄøÞ ¥®íiŽº¦«Á Ôa�ñûíàéåݹ£Šœšh:Š^V“ÙñúIU|uùib¬„„þÊØ)mÀÚ¨÷åÌ­ÆÓô\ü–(5pÓWr 8.ŘÍ� BJñ±zÏ~GÃ̰‚€ÊÒ ¬�2cv4…cf/Y¿!^'3±wØ�€>ý§À�rî8MG Ò*›º;‘Êb¼‡ÁUl½ÅY€ GBÅ�¨)hDq´±NTò¥‡··ƒ¯²HªW(‰¹ë�DV2áL\pê®_�À^9Œø4“høö2Z6ΟýØÂ“2+cj©Œ…’Šˆ¶roàûnóâ|P!:Ü+„Š¡�$ºÓö eÙYjžËQ«·xM´d#<ÍpÎিÓlH(UHP¯+˜¹�½ÄX k¯F• ËéÄê¸ûˆd²ˆ½!ãp='Æ1Ûß!éc}�¥>Á:‰Šs’“Cø÷“Ë2Á* JÏ>׌t7³ƒ\WÌÄô(bå]^×7�K+±�þÏPÛ{.,ŠnI9îYm7ÜëFé2'1^íº„*\ÕTa_ªÆ,‹Õ@O¿ãšÿOñ MU Ù¢q®ž¸ñ÷8›ÅS€R?çìBý}”�âY<²…-”nVi|\Œ&ˆ= ûã'¹þ—ÿ¦Ûîôâ!�á�›Ý"ÛK4�ç ½á6$c$¾ÙÛ ½ �дsô)Gñ WT½b‘’Ñòm‹MŒ7×£xÀ±q(ʽà–X~ÿ�Í5l›Ž@u¢ì ÞDéLººur}‚ïœ�A¿Ä0�à£�Á8dp�ƒ»Öúh† +¡±€ºQ®�%Ê¢-åÌá&æ…Ùõ‚©ˆ¸Ž)1ã;j7ßÛ¦Òž° lNÐg10‚i}a@þf*Å)Q6Þvø¼ëÅ\(Odtµƒ�TÉÙ"Ô Zˆƒ÷H ÊCvÊ©Oø8+aìˆ\„c"ö§x=�À+†Î¬ýiV´{U€/ÒyGéì@Z*I"»�;‰[ºlÀæFà˜Ât˾ÅM#É3íJ¨#†g>Ü“à€Íz°"ž&ˆ÷–û^ÉÞÌ]s¥ær­r>’X¤Ò“Èd®à6ñ¢bÀ�tüÄ‘jÈvÌáI)eÂt�;"BbÁ½é‡í3‚iÏÂR�©7 Ùs[ÀÑoî>'Ö¨�{z¢íÁ,Õ °|XºÈYî@'—¼¼Ÿq›Å2ð·r±MîÂ8X µ¤hóÖ�á}Ø€¼þXŽo.÷ØóãôÈ(h0’'&Rzº h·‚(wt”£úwB÷(S²×…³V_B†#Â;s H/&¡ô}!Ùì Wœ9¡4®uˆñ@AÖÊ ñ2™­>| ÕÉ!’"þ,Xn-8"ò°£0IæÙïŃ18Ñcã׌îú•yŒs8¼¦äÞ¢ÁÔÝþ)ÑèÅ�® … Âê‹�¶vꨛTž­dC_Ö5ˆ,ø¨rD(ªät‘§ÑÅöˆþ˜–""¾(â½M¡ÞÉ)2W¨¸,Í‘#Ú�Ö<ÊIÀ*ŠCÒ‡øÈ‘ö…ð(fC™�>Dï]f%”Q"@“Übßýé»—žÛI*{Â*Ú$º�Û™;ö—vœ†y`.W›SU(‚¸NI6¶9n÷¤ÈÉ2¨y]épɃBˆúFd£j×b1¯¹_Qž@:¾w¤ŠTuñÉ ÕÐHf$KF’ãºÆ^ªÅ‘ 5§7'DM ”¡8 Â2žv?ˆ$ð4rÚ˜^‚åœr°KIŽ�ö�¬ÂkÓ¸®·Ch”Ê»üŽ.Oè AŃù�ÄŽOÕe‡ÈoºáòÑpgÐ) =Þí˶‘ù¤iÊ gËÓ«�î _S‰‹ò-^ÆÃ·ƒôƒ8´¸àÈ4´vƒí~t—нPê•h"(žB›/£jо+j‡kêä–ôi@ùI O„hOáK‚ϰù\ …÷ÓㆵÙ:ñú!5’|HDjº›%ª'¼¢œ e@eo<Ñ–E—eØm7ÅQKÊÄ—Û‹BG'©qCˆÊ!TY€»åg¼}7äØ`‡ø!¶&"˜ÔaWj+ËFG‰bAiн#ݺúýìM©^ÇÕ´V>á¤Óeò®�þñ/¶Áž ÊôË‚œîdg·¤hŸò™)¾.ø=Ò­1u1Õ+$U½Ž9ïÉ·ýÙ‡y’Ù.³XŸÄOñ"öÄâ®|"Ä1¤l�MîX¸j1fuúTI³&´PS ¢˜ç�1âëÅä¶ßÄÍ‚®pϲ,•;W“‚N\ÑF­‰”†ý¼Gð}]€š�R¹R!Låt¥Ïÿôò;ùVç> u ƒhµLMOÓZ¦ÅTVBßjHÌ®ë.Ÿšæ¸Šg”ôq½CFU‰ÇãXG�š$�_âlQ&Àpç8œš`F¼+p·±¹4Ǭ©ZÇ,‡—g*oò;�s•/ÚLÖt�1~hû‰~Ÿ‘"æ@-pešÙ˜/Œrf°á�›ßÛ±a$cu˜ÉØ1Ú›‹hz:_„�ŒyÿI±Ò²c O ³:©-ç^2æ®Ú®©—ï*šH-ÆQv­�L4KŒ|#UŽ óÂl–¯ãw'f¹S–ÙÕJ±ž$(‹Þà%¸çÇØ/HÔ�IÄ r{p‹®‹ÑÿÇb™¥³7*ioO�£¤OñÜ·�7m*õ‹Ù8õ´©2g,¢•úG0ŠÝö½)QsYMÂx-1lÂ^"ذýùkOÓw^á(¤á�N†7¬f™q_¥²ÛSŽÃñqw¶¦c^-»2Ø]Ã÷ëDð;L€Ä=p?Fp‰ 3¼ ‰Þéªé«±2º×ÕL¾Çh¢«ÖCKz“õ º.Fö( \90Ÿt7·ÑT›ìד}•Ž|¥×Ž ÷Pû´ãɼ{ñø]”L„~3¨®U~zJxPVÔÛHÍÕ|™”tíõ…ÈCÁÏ^„÷êRrÉ0ž-ròÐnÈ�(}æ�áóí Ë­84�HÍD0.Ȧ¢­ÂûD læñøè�‘’ý�? ãxäSX‘uB<µPv«(I¢¼ Žä¯#Îð€«-st‹Çäïs.UN®È^Ò�oH0¤'€w¿#¬è)ç¡~…yª›UM’i²üºImyÌ @#Ùhy�‹Uƒ9ªA0fÔ5y{™�t"ð”(^÷ÚÝ -ßÕX/}ÿÚƒHøìƒr àˆ6s€‰È¨*tW•L7ORŽÃc+¨Å£ÞIâ¤àd8z*êYÄÓ&…ÔíZvÄίq~þ=q UJñ$³ŒWvÀ«e¡íÓ ©ÁuÑZ8G�÷³N‹]Õßp¿,†üõ98n}¤§Æ—”ô™Å1ËgÔȇ†4!sæ2ï„â Íý�‘¿§ÐÑ�Ï6ø Ö¥¥Df‚_Wf)G¡ðLeY]n£µ±ù$Ɨ餬›5ŠY9,’oàŽ[§ÜѤÄ\*ж«Æ¸Ý“íº�òCübòö4�S0Ç¡¹Lb�·g¼¯™m׸ :ù>žÌwÝU+͘ÿ™L?á¥@x;tÉxÒIä¦ÁGI×P�SÔÓwq{kl»(ÉŽªÙ(‹É Ê3�H^¦ß­Ä¨š «A×ÄÁu>?¹¬÷êÅìU”½-q�cçôñöœvPJ4ì¡U¦—œØ ˆÙ{³ô—h’Œì,ž§ÙÆÊ~�m|Ë¡2+žFå`"fòsO k:êø×Û·ag«Þ]„±«È~øôڜݕS‚«ÑªˆÕoiPA=þG, ±XËNV°«XØhK¹4ØãÍd°KÖt�H› º!N'õº´jG3QØŠHA0¯Ï¾ªPµc“•¤Ï³8~üK…2áÇÞïðÓw˜ãìs{°+iÛÓbMa0g¼½a4–¹âœƒükŽžÝ¤âªV^•›Ùâ� ì.,Ôn.–‹Ó«h4Ê%Åôôj¼šL‡ñB6È�Âr‡� B˜ÿ ¤Mx+:„#:n!ûDrO1ˆÏa/5ž¼xú“žòë4�,YÅ÷8mtŽºG½£~Ëþ¥}¿«þžÿï´›ÿï´—ÿï´ŸÿïôôþþÍéýþ 5)*Xp:�g²¦S^d@„ý(ÚsؽÂå*v£QK9¼ !ä˜,îHøôèm^ök”ÍÊbdО*=$G~�§Çn¦�ª.g!Í“èö0´®‰ùµ&Î�áï«tí˜h”¤/gtO#½3;Z~œÇ­«÷—I~«Í{Qp�ð¥Õ6[ºŸË)Ø8Ü-SqÄQ–Îk0]^ÆÙ)\4{…ýeò›q×îâù0�»8lã$F“S°bvk˜6+N¨Ü7[o²te÷ªÃ£ÊÆðg{½ j‰Ø@:çK«\¸LÄØŠÑðÊ÷|��`é¢ÔÞ÷`ÕKÒáÛxt–fKY"ÞŠÀVÕ«ï¨{�œQ9Øs�Af¯ÌÃPuåæ KKÞóRÄ—¼Çûˆ#�½²ˆ£lxùS¼XMä×��àê+®âœfÛëoå»êˆRé«gT¸ábì‚‚ßßÑ7U„^zª³ò“óç¨{ø ¶õ ªzMÝ•¢™g¡êót©ûXDùœuü;ûéN]´k]­P™ma/°`,öÚ›phÃFÄ ± Ö*åš�„©‹U&µ}GaZê¡•Îòd€¶¨@èFúzØq¿�¯²yZ",&unv\Oå• D`DÜ*Rd'nS¦Ý"]eCù½'ldÄ¡¤øæRŽÌdÙIEí$b2¬îS™ŽrÝêj�Ž|‰ªÄæåVD3Їc眨ùµÒñÁ´®~ýþÅëg¨*Û}]ýgçQ³õÝËÇOþŽJ+‰\Ñÿí§Çÿ} ›ƒ¿Ýüj£®}Ý Ûß– 0¿½®bY’¹}—è À½Å¶-£Ï|óÍÍÒe2N†z_\ÌR®Í¯Wwl4Q«ÝÊÍ‹t–ÛhA57²[ãøýi² ©ÿÓT«¯f£¶¦Ñìc-™#Øg$sz†.Å9bí$RÎùM6TéCk]é8ùxdȦ†ÎXY^Ñl¹R Öd‡îI;ˆ‰•v#¢(Lô騼ÔFÉÙlÞfÙ¾§ß1Ahõ\”ù�ß×t6ùø*š­"ÙtuT�;À¬�Ðͪ%A]–#(9$vˆÄ �Þq5ŒæËáet8‹RÃ.¶×¹Y¹¸\ ³8v:7Ïõ÷çúûk0rÍýº2(Šô®¢‚̆%$x#ÈÐÚ¢ÎU¨kbÊ}p‡´Ý•mqèû1œ¤+O�ÎŒ ¾á»_ž×»˜2la@‚—Ñùãì]IuOØë-¼¿šÄ¿Of[‘ ÐYÕa[j}R‚Çœ8¦ˆÔ5w”‡{î?R ¸=DíÝ9vUûBŸ¹Qa°&=*˜k-u›,Š~ö¥óé wÎÏ¿o5ž¿>#e.‹³8ºëÊ-¨úšþqãÎI»ÕÈÏ�sþ~„úÆúÛbŽÓÇmJû˜¡œ¢8bjbš OgpÆ_l]7‰ÃÔCþµÑ1ëC|Û©ƒÎYtI¿z§GK\ËG£þ‘ùØÑXa-ä »CØ>ö* ŒJ�®™DÅü!‡?î¤êYó=É—Hù„Mþ”IÆÛ:c²©Ã*‚€‘î‡Á½ý¸R*d°¡§ú©¹Ø+³Y.�b  =íÔ_åjÕâÅ>œwÿ…ÖøßǃÅeOF…�éJ(zú•Þ1Ota¹»ˆb©¿ÆƒsýfZsHÙ* šü�èa%š÷þÊToÒ¢â8ÿÅzbÅ�+¬ªùûW¾n”a]ê�rU,Ĭ++rº^"ßzŸ¯OUT*r¤®b]ë*Ÿå(ž-“h"ÞÁYWR%)øìŠC—y’+Ë|¢[�6c;\œ'øx*¶fTRâ;Áññz!Ú…áÈÛ)áÑ—KB¡D£ÎðÑïÀ\ËÓÍ¶îˆ ˆ‹÷i6: H¢ò¥)‹;M«hòÞ&›Ï_¦Ãò~ÉI…îÜ6[¬ÇÛŸoEþîŸÒ4ȇKRç�Ù*ÇìöÙ¿“:ÉNÃRƒ(˜éØlOH·5ð|UTu>ÿ³hyiù§å¦¥V*¬ÊTi»D�z5x¢Öz|_¢}¤„R¶Æ‰Oÿ®w[}A€Ÿe(ÿhéq±TÎEß ªç¡w4ŸO€jÖEN«5ª‘¿îu�ëÄÇ-[’Cº&á.|oPÕ»›ÃÐDê¢s )ŒáôŽwV‘½í—ó�xô´¬znU?wl¹F6aZÞªøŒÇÃ�ê›Wˆö²b§\)$Úm JaQ§1®Ì¨­Õ/:ùnÑ }ÍL\œÁ áY£'ŒâFÖ»£šOº,‹µê¥ª œ¥D*¹ÜçÝí™30öEÁ‹5Eo 5îl„ù~ë­HU4:7¦âóa4;·­^†“8’eçÃíÅCæTÐÔ�®æ÷²ÕL¡ÉMO„‹áÀb¤sQÕZ•/wæ7”]µ¼ÌâÈVíÓfnÅÖU¼C„è‰þÒ%Ù^åÏ€ jâ Õ”z³ýúN¹q ¶š~¼©þ 0´Ìq£¥¶Ëã0ùѧ¾5ÿ¸9¬G´¡¸}b8ËÍÓòZ8Víá~§}SÏTÁX>ÏmÒ* t#ûí1q9¼fh•J…,ô=Xä×éÞ¿Vñ*ÝD÷*\l6’¯¯ï5`Ëß-ßl¯ßodEéìÞ(Îé·dAÌuàHOl‚ ÛçÖÝû…®x»½¤çLé¦éd¥g¯½ É0I•P�&‹ô§x±tcå�-€r#ÈîlÓ )Õä`Òð{®Þ‘ÌVÕ<;¿}ˆÌzÒë®E¯o6ͯw@AïZ©~»§i_vw­öÜêÙæ›ªt«X>.I9ç~N�iOâ7šøŽg³‘ê‰·Ž‰À”õµv-ÊÏ�­�Í�6åŒÿòµ õۮą¡€î„ÕÞ‹“Çœå6yîiÁ÷`0LxÅÜ^ûO^ÛRàï¾:Mh€zj‚)Njiã»\Ö®æž|l¶îX%:©hp�! fbØw˜ð4ë sjo•¹§Ç¨“§ïñ• ø²à¾k# y‹Çl,,›èãÜm|óÈžìÚÕ¦ÜT®Yþ´Èƒ³-ø 0ªÉͳ¯x$ÆáíØ<ÓAO¿´S6·?Y°rs4ظÀHîBÎ' âÀÞ~·ãäIŠÝY;Š>It¾~ž¸ÏEzÆã@_ûÑV|JIž•+°ÖÓHÛsJPÌ8·�~®õ 涸mNò_¹ÙýE÷3døú?_8ö­áؘ®+pÞ‚ƒT¼•(°BÈx�7ÆQ UbJŸ� ñ>Ï. q· g“h¨5 �ºŠ P2þ°Ì¢§Ñ2:½h.yQRÐÃሕ"Q¥ØZïQˆ+‹¬ÇÖAè…!�."Ù[Ëù@i¨€±O˺oÆ•ë1šºVJ2NJЬ†'ÛoOSAf¯?ÊEhÈF�ðb–Ìç%µÁ÷ˆ› ¡7„Øzî-*ä&rXK3Êž\GTØî¾é¬4ªã)ð¶ [°œêw‹Ãñ›j¢…/„ƒ¸B±ò¨ØÑ›¤:ã6 (På’Y6ýBÏ+´`ü×*RµK’YüÄ(ƾŠtæ5(RˆOÊÙ\ëA.!¨HY‚ ‹¸Ø ,-·glÐC•ÉšoÉ”ÐvÅKI((L -9xÙÚùèïožØ!N÷ áÜ.ÂQ츬ßÍY&Â÷Ç� ¾²ÚW½ª—¡þ‹‘2L=ùÛ'æ±2pødv1ÏÒ7YYý0|‹TK Õm‡erŠm˜Ö<ž�ʸ} S Š‚)å¹Êé Õ.4>H§^øåq�†o “ù×*Éíbú11ÞuŒV¯ ‰ù�­céHNì¢è“°«Äc¾8a·¬œöÌŠÞÉ]²ÚÉ|‘_G©%¸^¾&­•ERŸ: + Kl²�1„ÕûV}�We\'µ›í|\�·ïÐuÃǾoDįòe¾S9&Y�inÌ8K§L©p{Ž;Ÿûí)�'©b;¤<Á®¦*Ø^Uru ûteO¯&Ñ ö©Dˆ‹a.·.-–*P7¤t!Ÿa8pê ùR•Ðç‰ê ±�ƺíñ^^­ ^»ý.1NÞÑ8O;€Õš´ärõ�Mèªüq�ʳ5~ÿ:”oÒÛ—m‡$¥S!ɶ#eÓJ¹²­­@hú­ EúXÒ`u�ðµÞ%ùk¯–Ñ@×HŸ-Ëj¤KùXžm' ºÚñÈU°d<ö86Á'¤ÿ Xí']Yõ©Žï<½z¼Z¦Óh™ £Éä£âW¾îJ 9ˆ£Û#`¸ëgO„K}L�Ù™Ô¾Dè“Õ¹ºï¢Ù°DרI»‡“�?DÓyÉ ö5½R:fœÛܹþò4YDƒ²f͸'XN‚G‡U·>js‰ß ÷�ßGì�à³BÎåAY¨táˆV@ÙŸ-`è�h›)ˆb«g® ŠQDR3ŠÁö [.DëŽPX^E ±˜Cy€˜ü%í^YÁ‚Ü>R‰Å¯Ó�Ê à¨d⨳WžšÙMÒ÷秪ԅ¯šô]à˺w£aYW£hq9H£ÌÓÉ•œz)É›ðÚcÐ:’Á_& ^‘[Â8RYÙ–Œi˜Ï6Ý÷üù…P&V“êE¡…›¨éS9ÜËΑ÷h©êa7¨V€жß$™8Dºð¤Ç6XÒ<ñ?Ú'|Øg¦œêÞÚ8f½p” pgçËt>÷zjj âÔlб¯ûŠ]É6 ”Ѓè*±ü1]=‰fçqìdƒV;Žc�×#ô®›Ìö=:_›iVyÚVã¿…«!ÃØl×.=¶éꌊ�(K£ª-y¿‹³hr-—q6“‰ÞSfuÇ2^N…ûŽu¥-ŠÓ†÷ Ï%tVœ¿âÂÓ\ï+¢ÐEíÌškÌ=L«êÃKY‚ U8ÍV£©â�·öø¹µíe2Q$àBRÉ%η°-&Éxðs«XÃÊQ#ø@ÇÝ >7_Z—9c؇lßÉÑo3}b>8ð·ÙýËtßÿ_÷§Q2¹ßjÿ\Nç­Æÿ:š_Îù]ôToÝ�JêSµ¿�ÛçJn ÷(G¥�ûÁŠ'ów=­î‚Ên«<]ƒ•ÕaÊÓæ-�ÔDl�ð*8$±'"²‹eÒSÏê¤Üôn?F·wP÷©.¢‡*Ï(�ˆÀä:TEësy ˜¹•€)Æ5{©ºd‡¥ª‰ý<‚[UK-\Z@ ™.slúÏ�` ãjX”›N�=-ó‚òÑÍÆ¾kx°åÍú[kRœl~Ó-š¨h”é*™�ùÂf¥€©úê™ÚS·¤"–™’î?øÂ¿9uÅ;:Ë¢‹±nÿ¼µîü"žÌ…K­:æÒ !ó]KêÔ2?ãÁx/suI–lFàí艔G®‰w^êCJ¦ˆ(š�_Fý�Ȩ„ f�9�ñ‘)lšÓ—¥€u0˜³¿ò¯×MªÂ⹯¢Ñ4‘¡m†»ŒFÌ7áÞ*"NbÂBÆÝ?†æ¤¢ÒޱHÙ’ö¢Üï@€$tó ÿMpXóçP6¶�ìÂ�DÍГÊË.¢’sÒxõÑŸbÇÙ’†'¾™k-<-+ήÈ);ö»B;×û 9ˆ–)g¸ß¸RëšÜlH†zË<û}¼|$´9Þ>^^6”–C†Íã¢ñ“a“”Vç%Ew¸�ΘÞ�Š‘Îôa¼å<àȃ³r~Gvxó÷þ°…^/T>N¬5¼MÒÚí`=Žòr»e÷ÐY”o51¤�Yã›Ù©¯%©#×ç!õG‘EÝí È6ƒÍ'=ûõ±0¶#rÀª_4�/šÀMà‹&ðE9cþðMà‹&`NèóÖæQ¦ÜN> Σ‹4KÞ$3Óˆ²V=€ð9á]9å‡"�¼÷Ñ0H¹�çÀ›¾$ÁÏ16H"ЋÁ[Â�ÑO@¯–£$%ç�еp]ÚÛÅ0*t‰•–\1‰÷6ÿp¼ù"!úx›ZøMC&#²%­êóÍthu8}MK% ˆ’„{íÀ�E©$z‚Ž!_¿ÜÑ»£xLø3W/nª#éÀ&N5ØtêHuÇWíäßQ¤†õÎò…>²s:¤ £œŽó7Y4Š×­¢ÕR®£V—)ŽŽ³àú!�0ñÈÄ[àtE?ÞÜâí´ñj!�0Â[ QŽ4AƒÜOÜ>‡ÇN,sÆÈ–˹Â+ö­Îט­ä¬n¹¤¬H0*~(ßÇúÞÅYQ¸r@�<$ÝÞŒGÞFìä" �È˪†o厴Gîß®e1“ÄÏΡ‡rCu«�ùMpÓ#_o�°.�Û«›Ol?¡ÒÙ#,šú„ýZ úsüï~j½÷TÒÄø�0H‰>7ì6Z0Ó'~g—-„Ríê÷o•½Î¼2¾vOrT}\wSF¥Ž—mF ïÏ»…TV{[H¥•°m’ïJ ÑdC Ï®¨Ü¶®áߌWø�ïñQ!r‡›œGÎx|ú¡£#œ&6ÔÁ»L�ï˜-iþþÈ´œ{„Õ±cR9 ú^1nJ¥…j{ì—P§¨Îå|Z�†0x�cÃ_ÆYP£ö(]a07 „˜�ô�Š N,2¡<¸I‚Ö*QÀ¢í¹'›ÕuBê#ò87ã*W"Aï29×ó8‹J]p$±³½(;*îu§ �¾WZ³ÞQR)gß²ë7V5}ùXUfñÖÒ°wv­ ï –q[âé<ĻԉZp¬ †ÌÓlyð;V°ýMÍJ�ÚºDWBQo Q÷{.¸ T±áR¯è°WÙÓ¹cÍÔò–|Zïµ{¸Ÿ¦º÷Ii°è·w\¾�MyS‰9 YiíI2•OºUÃQ{°eo¢b‰­ì שE3ÚÝø6yQ£vvûu¼MÿkxßZ/³•çn‹*C@¿G?Åë�¿-ª/ÜÒ*/jj»r½Ýt”P~·g÷ƒOÞk[1ñqÚÄ_ÄQ6¼,WŸêhÅA⣘žDü;ÔE¯¨œ†ÂÉè¶�ø@IXvØ�j‚7šá¥g¹³¢w æ_®%Þô¯›ñr:ògŽë„Ö.¾V<™kaÈÁe�ïÆ=xŠÖ¨F¶¢Y4ù¸X>ñ8Hô.Ù¨. ,]Ç—`à€$F?Ù´F k𖣘Ô:’wÇIÇNø2««gVÔ`ªa¤U¥2p ,$ä†eÉ$m‚sxû5QpB$mØ:›†Ñø*€Œ9¾æ0œB¨çä+em]­+•O/–VF—‹»[}ßÀytÑ «"ˆW�Ñö•[C‹m1åH"hƒ‘ìËP¼eííí7oo“˜œ@ö‰''ºD”eÔTÈU”Ñ11δîŠÑPmXzE ~Pñt0ØUG�ž!1A¦7=€)s”¾PŠ£í™“ƒÅ4¬#mc^Ñh! ¤#¬a±I°Ñ£¶ê4Pl¥‡©7`QƒÍ .}�h<þ‡[òéÜ*¼"�NãÙòe@䘉ÞXƒxœfñùj0M|͹»l=àæ$5IIE”ÊR†åä- 6dçMÐeT0Iv$¿oc˜©—G®<Þƒ°‹<`ؾOŠc§¼®+i*|OøDi ¬Ô‰]L¦” ÅîfÁy4ʳoÞ*’u~þ½$2HƦ`ï&i Ô^z ®l!ãŒZš *Éf)¯ \{îÀV–#¶×�8ô@ã&̈œæFHÙèaà“*…$e¯*}U¦~.¬éá¼N3ê¶•ÝÏdûÊ/µÎÉUµÆR¾Nj¢#ÿµƒ({Kgzh%<²¸$.¡[ÊS7�ŸBB3�e©’‡ßº¸>Þ 4ùq£ÑEì‘£°ˆÿ[lÑ� ûW»Å-g¯èáü,´�ôÎÉœ !Ý=¢wRÿª<ó-Ì/ÕbŒ»œéÙ-"½…�'m€á'aJÁÿŽg9é¼Uµß_ÆYü$š=OÂzÇÔ„–ˆ”DN 4}c�[ˆìÓš}§¶QÉëôu4¸�$¤7Fã^ãZ÷Y1»‰ŽÊÞ‘¨s>:º«´~ø¡"¼ZËdø6^þœ9åÓÏ?½ ’t{W�]‹±Ñc_»Q"˜omߨŸç£²`=Q+€aQ9â”n¢ioŽÜ#4û/N¯¼íåñ]B·.2þ‰ŽÂT•z³ûiY`yå(v<1táó@$Ñ�hßf-|@hZµa+ÖÀBk ßæ÷à—8[èNiRx޵`ÌaX$û­Í£ü–û4…®Cð#Û¤«¾º¹åc¾‹ŸÆãx¶�ßÁe0‚RSU"+=Uµ”â5]”+*O^�7~}üÜL\5ìx¥4ªòfÈ^Ŷ£ˆøm …M!Ho¸AHÉ0G2;W´P‘i“9<›Õ5…à—gñ|µÔèØ«h–“à´¬ÀÎNjš«i™¢‡“×Gѹ‰mYÄËen[ÈÒÕ6„f‘Y=‚mѦÝj®òm‚xTˆÏ¤½©+’À®øn5Éù~4H&É2‰=ÕÞÑ6 éIØÀ�Ô0Í-ß/lå³'él™3ŠÅ:êÐB¦!x¤ˆÏ8<ãApeUËÈáà+iŠq…ªS˜XÙ¼p�“›Z(ˆ Š¿LfrçŸÊô_€SÜãZ\YûƒÝ`|’›ÀÜO�óD‡šÛ \#ŠŽÖæR${QN ðæƒ„M\\wg-‹ î",&6s8:Ir§àT&»\Å©«ÀLjú6„‰Iþƒ‚THèUcŽZ¹z²þÄ¡ÿ2ÜÞ£79° =håT-TKcø‰; Þ@˜ž'÷[ò „Æ5K°Ñu§WÙ9›DÃøRì›öLýæÿ«åW®Pg@,†²}¶·‚ø½¥®*R=yOˆuÍ"�Jý´J°@Òw,rh,`HÜa§¹¤s1ÔWةˌ¢öû}dJ†©¬¾¢†8+ sRÁz ´_¨‡B¼D�§³Ww/ãî´‘¡uåh„°vŽŽ‘`Æ=®± ±ªAÜÕ}ÕaŸqBµMØÑæ@";„8Îé¨*Âj¸Y,FE1ËD®ÞIž´d•x²AWuHW–VfÐÞ—�FUH—­‡ (¯°j�‚f’œ`+ØùÀñS î› Ò}ôæñ0|VæsŸ¯áõ#CûxõÀ%à d#&%•‘âZ7È�·¶ûûDFÎh#d¤-¤ˆk”ë8%†ËG«dÊÚÛxøý ïLí¢²"Ô‚âߌQ´¦ö¦¨&ǽˆ]ÉTJ¯õDP’0}¹%Í]˜,ÀÕîEvàœjT$u4HóéV¸î7z·?µTwûY@@E�®«£>¼L†e>˜;™”•4Šx¢/º'Ñ�!rÄJ:Pß º^N ‡ŒÎ0Ùå\-�É®¢—ÑÛøñË4AÙn�¢ÎC¶¯Ç� ÷cãkðQT—(*ö ®Fb¨P,‘) í,¡ez*·ƒr9y¢1:áß"O·ßîŸÂ‘“�c·Ñ®«ÍLJ+ÐÝÎú1H9ëmPV{SFçqö.Î^ŒT\œi9ó<¿+§G|»FçºA£\À 9ÆÃäj»v¶Ý/N)F2 ìrŠ‚“Ö—ƒ¢&xM}‡ µr|§Åã•+ºb×+iáEmÚË•›Ò ÿŽKWÅ»N›ë¶Rç«áЩ*ßq”:ä Z#Zàf:Xx/(¥ŠâºØAÇàš(åa¦kÞæ¼”A³Fè¦æîºV·ËÝu†ËÔö >Õi^Eq¯¼å6ž)€ècPa‡:…«�‡›R£P¬ Äo0.$è ù²„–Tf¹(Ÿ^¥ò-á+©·ßêy1Kò}-Ë Ÿ31VX\£‰…S7;û(V$¥†GÇm{꣗?¾æ›;<ï­eî}õ¦fØ™;«y¥ùG‘ÞÌÖÕ(6yÍÒ›N)¢•«ðÅ#•aºüñiúný¸”¹ˆÆü®µ×¯òѧ¹×šÔ™î±&Mû® Ê*ª5iû£-Êüõ¶*ÕàÆ,ãÐÒµBÈÞç!WƒøMÍrµÜAœÐa¤«ÊŠkwà3™p>ßeNßž¬OGˆšC7U j£dùó"ΞÇQ>„J•Ü‹|çàJë�sA¨ØÎؼ¤uµŽú?åþ§ö#8O`]¨ÕÜߊޡQ¦%ÙK ÿõ%©@ŽdÔçËU³­77™––µ†»Ló½™ìû(K2ñüxͨÀ†UfŠYm¡‡…�_ü…üC~0 â®ß;K¾½*ˆ½/|è ºò´)Þ¹ læzñ½÷—É2¾§ ]4ƒb#.ÂC® X[ª\�ÀWï ¯Kc^©èƒ|�‡Údõô*ÎXÅ-t1ûzOMùÝ«P‘uUêÒo+É:ئ˜ûg5é,Ÿt´¸%³&\ ýÓH£B\$®fñ2)+½F‰Mïî= SWîÛÞ&ýf+˸6â#‡#ŒñWdŸÄA,8Ò¾U¦üÆBÌËÿkeÑl™Ìdõßʱ>”õ£]ÎÓÌã|Éí®¹ºá ™·ßQÖ75óíz‚£ýïJð–äæe¼ cîXÊÊ.±ôrõx˜R€Ñ[༪½‘N“Ù›çÉdéé�hNõ¶‰GÁáÊ9áPVŠÀ.®ê^©@=Ú)gY*7GôĘž�ñéòyN 2öâ@š¾Æ|öW„3ÿI—¡Q¹Ê“³8›& UáYÙô»X™&"!°Wš¶I >RÚ›«à–Ÿ‰ +Ɖ2å•L‰À;,–N ê.Z¶å©É}©Š¦MJ·I´R›Ít7`Œò·Œt¹MŽÓ)õâìl³#`³Ä#å}ÖΪÄ)6„½r¥>ªÐÉܬ›jgÁž¾�/N©ÏqQX§”òuúâÍL•ºGIYé”]>Ê—êpLu˵x‹ q€�8®0̓Nõª¡ð¼2 ¨nó� òyãSùB}n[æ ªeN ´ùéG[™ð,z£Ôòs�+“”¸E+²³ªjQ·.7ðª˜×óƒr¢‹rø‘ ¥Äî7ªNÅ]�ðÜp¯pÓyó ©v Ép¢Ý‘à=X£ýúX¯hÏ.[]üÏÓºP1Õ‹ÙˆvMIÃO­­Ñ¡WÑ$&é*$b?�¢Ux‚5íV®n.¥³[|™?ÞqíûÅ€îÅö«ÌU±à,VÕ`ãçY:ý.¾­-\ÛùЬ7ˆÐ»ì Î9ÊDÈý0ZÌnã§\sDT§®y]kÔP+`í‡f¢5ÐÖM³Ä/[6/ê�ªÀAÍ·@™?fÉ›d¦Z`~ᢓ\£öAuß(õðÍ#¬Ù0:Y@­Lv¢³Ù”ÿ¾|VÒÚæ˜_eÍA ˆ|J«?¶PZM<¡ ‡aóÀ‚±sú4ªû¯cŸF;?å#¨XÞõó'°�¼FíÖ“€\Â&>�'ÑÇÐ2|/KúÌÝ¢ýãÁc„¿¡/»¼>b$‰ÂÜìÑŽ´Å0šyºÄâùñx5ÇÍ«œ&D-¶gŽ:fC»¨óe:Ÿ_Ã’‚’b‡R°S�;Ž_¦oÏÓìiyÄ=¯Åí(S‚׎TÖ *¨ANãÁfù˜÷M6Á°Éc½Œì]2Ô˜Þ2—^Þ“Á-A)ØÑÁ×ó,­†Ë¢iL3iÅJGLÆëP� ,ï•^"/ÈíˆÙ{„à MïLS…WÉb-‡—ŠÓèàHeÚKH,ªUµðZ9¼ü°o}>/! @nI-3DŸqêÙ†å‚ÿÚ.ËÒ¿o«c˲xNö˜ v`ÁZ<Û?ï£lVÖI¬Ö:�º”Ž}£‡ÿÔúÊE<=�&‹ø,]$:>þPLÓᢈBªú¸/ù%ÿÉÅ㼥ϼ(BI7QdÞ¡ùo·‘>èyG•Çá ÙZR.ûz6•‡åî³µF+ý²§uï)o”rÍç“�gZwð¥WbBûƇ•mi^ŒW4 €–k8ËkœÒBÙÌTjáHW0+âj^¥#…ðÙ–0²m·>�ÐÍâ–²^‰zu�M©v,ÊpS$c½­Ç1¥î®ÊG¯RÒ`�-µE×1Ÿ¨ÄW>å¨þï�3MzµnVùãlâéÌXÇú¹‰h·¨‡:pó›ÝµO›´ô«Á$¾}1j]ÛaƒáÛ};è�ëUÝgß%Y:+íÖÙ~²Ð¸tïÐh”Û{§Wá�¢•‰MV¾×xÜBkS·6±!„Ÿç…Ü#L£¸Š·úR¢$Zë^}j¥9¿ú±$Ý GETØ¡QµÐ¨ð™ï¶[¼W�´@½¬¨D[)~¾…SìoO‘T·Åû ö!÷A5bu%áÖ»ˆ›*Mß|2,ijÒ"ËÁy½ãS�SáÉ»õêÑÙj:ˆ³ǯ“i‰þÁNÙîëöáÈo#çòP»¯tã¹³Šj’õ*£vïyà�fб®¨œ”ðéWO®2'ßþù§—þÍÍEI¿žLâ¢qÅ\B_>fC.’Tcúd{P�·Ñ&‹½Óí©-Íæ12íñg)ÑÊD–Y×Ó7ÁU¶%Š€=[c‰ëEd­,Ê€zÛ‚½0´Å "ãòÚBg~€~ÜüƒÜÌ7Yº²étŸÇµü¼.ÙFš:•µÕQŸ�_ëÓù0¯ËdY{zíûpb!·Ï.m°ÇË´$> „EðD¥esé¸3“•Ç�ˆÃ­ª†0&~f�ê-JÎ AK„’Ü€÷õ*;Žž¯&“��U¢Ý:¯íz“‹nŽ[Ûà/UÝF‰1;öŠ}÷Dücà‚¯òF�øc!Ú>O™M&?),ôÉe ƒØCþP™ù‡¥CªRH€Ð¨€©3)Óïy¤Ì°øî,°0ÝBá±ÄÄá{Ék†Ð‹QñÌeuG« Uß!ê¬+†eì:?Å&Aûð5ooøÆf²‹[«Juâ›+•ÝZö"î�zêm©÷óhUg`Ÿ^©?£Ž�²h®ÐۤĒCå7¸¨ �䨠ó($llƒHDa0/~jáÜê«{²rÈľ9ÜdEºq�­TyB5ìHiYÏ� Fª‚ªCjãa×ö<ùpÆÙ¬# @XÒÙúCÂ�\õàI$Êï�vb—úîJ¾2˹}‡C³‹PCpú\ŸN:—/Ųh+ÄÔž²­ðÓÍÝ}êÓƒÎÕµ°*÷8‡g³º¦ürÛÚùuúÄv5 WňIƒ‘28ƒ‰ß ÆCBºQ„ ~ûX[‚L󢦓%î ·³`¶‰©X¢©fm§#Üá¿ÇñÜò˜J*o˜*Ê6Ì®ÌQïÍOιþ-OIeK p%‰m’*¤„8!Ü/št.Ç�³ïÏ|°Xw7“¨L‡¶»åtbTn´þäÕyã×ÇÏMÍídTª–bP*»\\lP�E²”·Âq ”C=�F‰Ï;o#÷ðÍÖ|ºëJ⥃0Ní;©âV¾ÿâÌÎâñ$‹£ÑG¯0«Z9¡P‰†TëJÖçlñð\Cùïtu^–=ÇMmž LÕ‹ž?„ùÙU³‰sv´.cÉ?ž²é@ªDié$‹\ýêÉVÅýr†·ß‚’E.tމèŽúH”x\ØÓEÜ�cÛºf³á§çËxº.l<—¶Žv›EobÓ•ÈWÄ¡T˜8°Î ¬yK;)çcü©Ž2Hg³\¥²�•öɉq\½ª4u¼7{Ó:Õ0Ws‰™D‹×½ÓXâ‹YÎýßdÞî{eq` ɱ¤|t¤{ÔE‹Åû4ó„�LzßlŠ¢½é~ª/¹B”¦rSüE®˜Q=råHûâtèëøƒì�£µMwŒÎ@—î³rXœ\ÅZf©ì®EC”EwôHÎ*‚\Ai¬d¼Ý„I9'.r'x¿#D’¿ˆ«ÃÍ"H]ÎHK%Âz;žLÒÕèe2[}h W˜ðO^þàu\_/ÍÀ ×L¾ ¨®#s…�M«€änÎÚѱ‹áeáø‡b¯·Ò¹î]ø<¬Ÿ�Q¡Î O3ùB ÆO0¤—èw3#äñ í^YML‚Å¥"«Ö„ùé·ªÆPL-üœŠ ¤k¾ªÈÕÐWü 8ßÜÕ¬¢ÖÆsx ý…Úòf••xÂoÂûʨÝWå: ÜðÅ|+ß)ø!ËÒìé*ËíØó¥; Ó€Ø1¼Õü)f¾"ÎBx‚«'�æWºÚb-ãÖÕ(�Ŷ¡üN¦s]·•Ì’¥ã„}/D�“ô%v9mçšpB$œ#Í©~¶¢˜ÊE¶šiïMþÑli¬‚Y�}Sí믚_©”ü€&“œ£J ú}L;QÈ÷a”•EhÛ0Ê÷Él”¾Ï%^™E‚â‡ìΔaû9)3£|c®úBº;)ä›6žºGà:ó;�ž§Ù”T¯­©uÂÈ“MçOˆ³#ü�z«ƒ”Wœs ~-G¹q�ñTô¦L Q îP´¼ï2Ð à~;Ôͱn�œ¡]YxØz¼÷ÒÝž‡ÕÒ¸C’\Vî©$‚ÛºÃ�;º­k¯�qtM¹Œád «™MVoJ3Ã5q”jPª±¸Ãí�,Ý­CËtëO.= O&éûîKœé¥¹é„�ÙiV¦è†ƒÎ²…w‰'¥`¨¸#&Àá)-_ÑïýþÛ‡h”k¨5¨‚Åoƒ[^Äâw8¼Ï£„E½5n±6ð:M'K¹¹LX ÚkÑUäñ.ÖÚ5eÇ{Ä„Ÿ»cq›et-±Ò7n¬‚éÇÅ¿&ϳôÿÆr ÒO½#á ¾ ¸WÏÿëe�bÇÅŸ¤²q»‡ëÊ4æ5%®ìx&5ÆO�Šê�•û·0.+_ü˜ïâ+çÇÒbÚ�;óÜz{kȘv� ol¯t·ÅÕ.GI°']á½ì¹‘äh-M m¢ÚŽf­#P‰³q-U�Á«É»ü‹4øšUÊ{ù>ÊFñ,�}Æ·è_X·ñûË_ž5LNö».Ù¼|6±ªaÿª(¾L’?ކ lÙ.< ß4ík ×‘ u· ‹x¯êÂLÉÍ+*ïá¶C£¥ÃèZ­÷Édò]ì?ú°Tå#¶Ôþu3DÝÜ«%E{=_;¯ƒÎ^îýUÌr—‘”“ân7¬ÕYeŒ« ‚=wØ»�£åw›a¶.ýÇ&}­²áe$'7{lÖ]ïøŽÛüµ�î&òg…Ÿˆíø‡¸~y Ü Ä…6‹vpÉ’+³ ±åó84¹ñ¹Ëª´&%SfîÙ‡e<Å£—%�ª¢M ×6ß!Ô¾Ì+Á­ä(®�Úƒ˜¼¥Š ü3 ‹*UŒþqpT ˆw¬¢p,*ÕuF«1ÿíUA ØÐúäiŠ^ê*öíÿÁcýˆ•çE±=nû’pÊVY(P0mF÷9ç�ìs 9úœp�ˆný#ßãÙļe²N7GWºŸ¬Ù#�‹-LT8ê ANï?¦‚’|ðŠ�•\€(7Íçûù,+†ùkå+ÜOTK©…Bwkl4"KøœìÝn¦Nóý&&„�[gûµÜ_(´öPðidòRÿ`Cø•ÃÕKh ‚»¢è§–E LM~g‰ØÏµ¹ÝóºíN¿´É .‚åóÁyÍ6ªÖáGz�Žž ð2à¢dêåÆbX³u\±¸ÁWUØ#G©>4ì­ÜØ|!GËÀ$“–°vʈú.FdrÆ«‡J솼ҫל¹¢ÙjŠAëÅ .C.³Ïx?CVIkXʘù27UDMµ”xTZâš›„ì¹¼D“h,A0b…‹â[<|TÕ&9öœ…�Ø$hr´ÅÕïÄ›‹¾>s”E‡&γT×:¨Òo y$ÚJ(«0ùuG÷xôBèåSi¬îÌŽ†éj¶lµ[qëj]⢼)PnÙ[Ýd|“-ä ©Ûl�ã÷aã*i4¿NÖkêÿ4ïˆÐ+í¨v%oàÍ–Î×Å*n`éŸîšY_á*Á±Í¯½¨z}@.Æ·zænN«L¿Yª®©þ\/ÔÛ(ε¦1]'VÛtÕY¼�‹Ë$žø$Ã�hÉÝ{@èõ°?UèM<‹3•N�¦ÉìI:[æ iqzçä0©R_cd3îÚqÕ MŸGÌÎá¥Î¨Ã¬rÁ3 Â3Añ�öCÅ´±ýu�ybHª£Ø^¹/œ(—\¢ +—7!ˆCcÀž%‚Ü`�9§'ðwÃÜÂKIB&ѪrQ7‰±œ(Ö†�@¡(Æ@C&G;Ú^Ÿƒæ°ˆrëå—1KWóÊ"«˜7“Dû£¾î°öB¨Ô<@´]åbµL½L–ñËd±<½òOΠîŽû©¨ýv9Eš{;€3!ìÈɤ®Ó8]- ?Ì™ä<Îr “[Wᆯší¦In]ÑDtàäÂêp‹µ[­øU‘ý#ËÜS4—ÙîÓ„^Tò‘ˆ,î`>?äȘ4ç§éð[iÜØ&÷¸æDþâ•p2FÅX\>ë¦R0±ý#diLÂõ³$ÒVÌ#ÍðÑçìè‚Qï%q핤úØQÉs@AÝíÉ�dîò( nÚÖ)}dô§ÅøÅl¿É,»ÊÙÖðòb2]ÄïrÕ?0p'õ¦ÀÏ´ÐQ·Û=U/Ã6š¡:ãvžœ?oðë *´äY¯fŽgà3Ç÷ëéw­ ³ÞèÎÓTR¼iÜBr 'd‰lC=>o÷JG©êÞwß>�'ÑÇ-³8$½”ƒ èÛÅ«•º9éñ3 ŸÆ,ÁEaÕóÅÄÌ�vqp5ɽM¬uL�0Ãõ¹wôÊ"³<Ôì‘t¨‹øccÛIü®oÝÓô.?¦¼È›PdÌ�Â:JÅ–¯W“¬©´ù4õTí«RÝ <Ü]y’G¾–|Óš!¬#lœiôá‰éRÁR:ä…ã%�€hy@Ÿpw\Õ+£Khk0÷}HM7ZcšDJÀШðzb˜¸C¾�0@°s’¤×.LD¶½7æVÛ®û¬5«xv͆ñHÝJ?0ÕÅ✠Ø: ÐìédîOyqßë˜Áö þCÓ@�Ñz+Öø…=1öd¼"ãL]Ù '|“hWnÔ> ?ì3ý  ®ÝñÝ@šã;|‚Tà€Â‚^¤í…+6Ôô‚W‡s(î¿ØG ÌY�æbŸZ¶´ƒ‡.‚«{o…yãZ+—èàPé^z‹†ñe:ÅYm-ó‚JíÖ¸9ù2ÞE“U¬Eqôq’ÈÕ-ºlþUý©ƒ|ÃÞ–¾£Ÿa¶_¤µ Õê§X…4ª²„WFƟdzej¹"@U€á1ÝÝp3ÌË0lÁ8yãsAJû_éo�7yŽ!¾Ê*…Ü‚l…⮓ÀœÃn‰¡˜  §°Ê?Ç[°Jµ¼d6LF Ù|™¾y£¯ŒŠþø)õñâ2ðÆÔ OŠ5Œ(e:ìl ¡)Ù‰Üão’<ÓÜCžFG.É�µ3 ¹É.XfåXœªs"”lÿã/—ú6ŽçOT8lHY©ò¾Ð”�×e†ðꢅª¾×6Ù¥¿(înÝ˯8­B®IÍa%ï´‹pÈêò§o^ÆïâI%x‹9:Ë�ŒêHpL%· ûœ¬H¼ï!ÙLÔ•R³ç‘Õ@ãp¹‹¨î,¥ï ¹ìÞÜÞ*ˆmšŽñP¤)þ]è`$ØÎvíÆ«t”ë ÃU–,?žæ¯I%oézüèðâ ò©?žŸ?{¢Þ¾˜ä(gí<1+ð0<ÇA¤–Îf ëh%x+é džS¦ôC_çaF LŸóÁx#@6©‚�"Æq¾Ž“�‚¥D+6DËš@FLò0¹„B�޲síIñxƒ°ìÎÉæ·}°#hVßÃ{ð\½õúh5-&$D“÷Jô6rF‡¶Z¯î´=`¾ ËQpÄÙcì•ÜI½¬Š¾ºNVÕ‘’Zó€×ÛVÕ“}Ì Y¸âäÜDv`ûi8ªãÓ¡J¥7-»3ØLƒ€i$IJKîˆ*áÉ|’¼RW˜j ÞéSG‚¶„¨õðXå¼ïÃí­¨”8\ÚC¶ÇÞŠ¢Þ6*=�‡…Q 3-ý ‘Tæï¦ “ ï<Úœ½ýּ۔ײ?=†!ôÚ;=ûÀV2Äyƒj�Ãê†í¤b‡Ó¸ÆpGÑn.!B¼)Ž’˜ §ÃÖ F‡˜ÅãµëÂ0…îQ9QŽ0.ùÂ'ò¨ÄÐWÀò‚3ýÍ)¯Æ(’Û Ró‰íž`þ1†¿w7CtÁp# úãÏ€no;©x¿ I–¼#|‚[†¨Ž‹¡aeè…‰@¶gÈÍþý!PLgóûƒÚ^Q¢¬Œ†rJzô =1OE»5n-ð"l#œÛ€Ñ.Ñ.©‚úOGŠ u�Ò†ÒH+�0ûUpAˆXT¤Ð¾pÀ�ÞðÙ÷@�¢Š×Ì׌tGÀ(‘’Ùfß)&÷ØñtP®Ôõ­?hôÛ÷`ÉqÇé�ï–a~f‡»æ"›?‘;0Ýç¶_í~qµÛ�:À|2“CÊÈpác~é�z Qf$ZA™ñÒãñŽô(KFøI¿Ý`ÓŽol~óGM=K¿7ÍÓÎRÚeV@\kaê1X襳Þñnt&«†ž@½±4dÔ½�Á…ªº¡*Ç‚q"¨¡f4•×ç†+αÀtw²™õ%Äö¬äB•ú9N6ÄÕ´,Î�¡A,l~ß—úÌ] á6¸ì\¹PAUWÑ|~>�‡ª ÌO«‰)#^¶RÀ?QÅ;F.!!µ>.ÅÃ]@%ûŠ—o5¿áÊ-­úÐÐŽÔ¢w¨Ôö F¡–›‘ÈD¢âqß9¨Óžº.âö*áìˆìb>êålÜù5ÍFgY¼X´ÿ™¦ÓIÔj<ÍVóh‚—µháÜëÝým†›Ë&r{°‘vGle}2ÎÕ ŒÀæ2šG5¿ïðËtþëãç# ;’èƒ>Gº•”v/pÕÉq”c O! Î=Ø `‰®Pt’iÇo¦¡ÇöÖa Ò–ã,Áìó˜UXV±06“P½GG†L]ÝÑ_Í9˜ënÝ�Ï@2RŠ4D6˜•gôqcOëêVãZ§s{™×Ýš…�Êýƒ}¼ 6žTc7ùºˆwí�‡Ú–§¥�»Gë�]!MÓ‹IÕ¶ëÁܸ…GH+§4Ç5cõ©öL?-�ÞÓô°g2ÅùЈµÔÚ¿ƒìš?yu–J…�T±FLåDM7߯l¥òX½êîW|ûPz®lÓ‰pÅöt¾ûh¾mmQTø-m×zE\g�²AŠOáÉRºN!´9d� <¢)ëq‹¢ÿ�eÄp™ŽE­^¬l³(ñá–ƒŸIT‚�#ŒPЃ((øûiî2\LwsØW2éˆ]Aö>€ P´~j}qpjD¥Û^O¡'Ê*¾Ô‹�cºœæp*ކRë–ÂK re?‘Š…qªŠkr)xN¼|¹ä‰æ+ç(Dc F³X@ò Ú 4äî7‡�ˆ»+X† 'n•N¯Ãëºñöñ†Ïbùþr‹¨FÅŽ‡U)çÈÃ~�çºAKKЀpÛ�ƒ'áÒ¨q Ò϶m ¹ÌøÉþ}¸\¹¢¨yôUXU3QY![w_öÿJGm)Íí}�î<êKOÖ¥¬ƒÆÛ}0-*�*ª”EÉ�ÚBø$UªÞ²†×ȵ¦C¢ì6ð\i‡9Y[±èðÛDÊó¥ Áº"�‘Zb6 ÜÒ3Ô↻ÅkçX­¥Bƹ#`eïQוŽÓ±ïæÏ!�'‚Æ–ª™W¸ßƒˆ²Çù÷‡Õ“òÇp8)�²×u+P¶tè!8б�ìe)àÇS±¤GT£}âБ¶°7´TjÜÒF̹f–Ë×[YËQ4 ŽáGv ˆÌ¢ÿYRF¤;_�6�"+sØ0̎ƈ¤$ºBÀPñã�½ JœqPU¥”IR-¸œIžTƒ«Â7_¤Iä�؈ó·“ê±áùzÞGÙL•{ÚQ� ×{EŽZù¡ž¬�¬9“ú |>Žæ).ˆT�ýx¢¤$¤È âß> ÄÚ͸Ïm£&]j uÔ´™ŒØÉrçL)Eä]Ppßµ…µ9ÔµðëlOÅ´­˜~´æiQñ0,*‚¸HyD1¢Ýh�Ð<£‹ƒTû¹÷ª1bËû+f„¡_ T�C^}\—],JQ?O³Ç“I�=’©V„Ãþª»çŠ×c›Ôš¯²áe´ˆÏ¢7ñÏY`»Z„J}Jýöiãr¹œ/Nïß9.ŽâÑt>‰�†éô¾·°U°&Lµï W1Ф5^Ïsù„H†§ÔÍ–Á]’b¾5×Åt|íûÂ]�”d+ÍjT©S^À�¡+ä†'£jF�~^Á%K÷£àeE…±Æ¯g�ùdõ&™q›Ž^Y$4»äÓZï4I21tæÈŒÀøNh@ÃcÃÈñ®k«Pñξ(�¢mL¹qÂmwÀ½‰YNûM‚Ì+ÅÓb·xöcB EèïoçÁг¼ÌÃÕÑ#T ¾-Eâafˆü’3•¾?Ðõ|ÞGã:åç}­<*T®—„9„ƒ±ˆ ‰ÉV•à *†JñXž°™ *¿?a�€:“ÜÝA¾Âã£�ùýãx\.™×g°ÛEtZe…®v<¹ö-³Wôi<ŽV_ç`ÏM¢¦JY,�7xØ]Û/²*�×xü%á—º ÷õ»Yos;\¨�'"ú°88�懸‡ð0"NÃk¢ ±S+úYmî�–}Qò]ºç�ÚÕêDdÑf˜œgúr·Lœ /'H‡Æ 'ó9ï–}FN–.ã¥�nÁlv„œÔ®>!å‰'¡äØ< håΛA’2ºŠæß�lÒ¸%hiê–™�ÊmòA4Ñ�ÐBߣ²ƒìžÀŽ–Â3©êC/³dè)˜ïˆ@«û‘®¥=K–©¼‘Á†eKºáhýR>€´vçH_ô‡öÁõ‡ýÎæ‹Òqh²«ªt|*Êä_©æaï⋜;ÎÓY@°ÕcýûÆOö÷ Èn¦FF°Ã ßúMp&P„×Ñ&”46Åøw^<=¿kígd„X™€ ¤.‰¥2B|qŒ€ cúþ"_Fb¾]¡PÙÇÈ£}Ê›–{‘H¸‰= =1*$wÃå|E^Ðfƒ ÒUöâ"†b&Èêmç´£³¥ºaD¼ÏIÕmŽ$&:lƒÏ"/’hÖUr€# –iÒ®$Y'wÑb�oõÔƒb›¹Äuå˜=n¹k<ðï8�AååY¢ÄrD`ՀיǑ†¨ÒJ�ÁVF2ÍëæÔòB Ñ´’Ÿ„é´«Hû<('ŸèÆUú*Íâ×ñ¹ oåCOd§ ’ѳY¼ MX,Óu�¾‰`ì=0.šRíÑrçÅt9ÿn’ßš.¾“Iúþoê±EØó‰µí@à'0 ¥)²†Ž‘7Ø©IC7“7ò-úP=øÔ§Å¹1H�w°¨â ³JÖnöR�=ž¿ ¸¸]vDDù8‘f(î2 §ýš°^¦Ã(03ØqX$óùév\ ßoð­ÈÇx ÐÁ‡¸¦K­T‡E¹  r�CÞmxè[x¼�ªniæçEœ}¶È犼«ÿ…w•�umþ›Pü0ÞV[™Î“×]&àÑKñô#àBfh’ßhF¨©‡¹S{o-Ò7ò¡Æ Òž)I©ýìóI´¸¼È¥d×!/ÊUåŠÂîN˜4ud¡Ô«ceê• õTEö·§EÑ2±öˆ#m¤¸^nl�çÃÌs“ûènv[g‚Wˆ(ÑäÉ’‘ÐC`�ºx£DÜî·’¥e_‹ïˆ§¤_ ÷�2ð7`¹ò|�½Ÿë�€,%\‰· ;Th–k)ù»f¹êïz•!sr&F2‡ÕfÛ>ÂåW£”7ÇF1½x{¸�ËËuÍÆÙN†�kÃâLi âöSü¯U’É.¼Ò�’MŒ: ã×{™LåÜ ©îŽ–5æQ„Àl{ÆàÀGœž�ÀŒ×=Cq³½rŸP"ãØœ28R.eIUÝXWyׯ’kºXTh,/”CyÍ¢7‡ño“Úf¤/ ä#�oöZÑVMÒ7§WËd9‘AÅÏ媘ëTîa§[Æí–‘L_w::÷·÷àø¸w|×e.±ÑP¿GÜÚõ�Ù½©ZäDñ·ÛÎÞLõ4šäÒ#>½Nâh¶š‡E\`¾šöbˆØ?ØqËÁ’#÷UÒ›äT‹ÃuÙ×È+IÕV-̵‰JÛòcþÜyÀa—ÞÅÙrÕê0 ó#‘3 •?!Žç?fÉ›dMž'“xñ4úè“Ó]¦Øpí‰VëF}›µ­ £y�žrãîìÓè论ŽË,™êÕxø&n59 lÇûà ŒX6ÕiNû™âYœ©êA4|»š¿Š>è“*u:…8Ûì<8àîØn:b)P]\dÜM´©¾ócN­a–ΖѠRL‚-¨­„qÜwT°;VW¨0¢Žð’+KäŽ>$%¾1.M€]k¢±=ª†':†¦¹‘T�$‚dÇQ좠ýŸâÅ2ÍâçY:ýN3ް"I]#%ãÛp�Ž­:$µ�·'Ù# iyš�-õØz2Ëw&¤m£#”i×ÂJ\šï_‡¡w’_‰TóÁÅFÜK‰Q|ÖŒócö_«(‹fËd¶§bD$,·‰º Ù48\ˆ=B¡Ž¯>áÐ&Ê$v£aê']IÆËaŒ›·“ t2�ÁàTï†ðòy�¤ª�¡Çƒ³d7ïŽÝÊó¥ýËODÜýË/Ù'U�¬´ýzˆ"€×ÌK ¯SÏ&ãê(‚�‹Å€ *“û°=wXòÉÃ;A¿zöòù]rÖ¨L £˜ñõ�9q ÈÃ÷ôà7u7¸ ap|�ŒSI‹s8W«ë_~kYUŸ†XÁ$vPO)¯CD�>ÑæåÑ ¹¥¢Èt“9v>ŒfOtX¹™²mWîŒ/' ’$ti¶�D“ ÔD{•6!Э\äÚAƒnýæ$‹‹ÁAj$ ÿi[¼£}x�§ŸÞzÇE‚�5—zei›â}È>ÈÆ ˜gEš¢eâ+ÎÕ…ë¡�Ͻ $Y¢X—LLôxÍb?{Û/–µa�na‡'Œ[pu)‹|¾œòÇÊ‘NH|,|„»Ð\1LrÄÄÙ*‹ï=}6òR*ÿnž¢³!Xu š�ÃgOÏ�WäuPri?™õ^¢ÒRC¦¯£¸aÓÛ¯)ªÉ ¾°fWî(:5 nÊrVèm\ÝÉ5ÙÃüº¸ÔuÍb1ˆ$ÁEàrÄ8'‰…p‘&ûv5ÐoŸrm&ÁVÑLž‹Œ>9$3Ü?‘ �€§›Ð±ëF¶Ûs݇.Ÿo8™‰Ê‹èñôë×Ïù}j � vÚ¢@%‹rØWéH×ø> œ'N?Ü�>ÛrCÁ#{S¦éèba{êݽ¥²\HÕ0¦ɇª’(g¦–‡¤�9þÇù!^~œÇÙ"'¼0Pl¯*Á+QLó¨^’|00­¤º½C”+c”*R¼ÄE5¾/v$¬‰üþQÍ?(ú$yPäÝÛÍ;ÃúVßF{ÂG€æAû¡n�ò’O“ÿÿG“üoZ; 4üñîXÇx€cŽïHD©�²ïÉÒ:Üλf •<¹òÍxÕ� è€Ã諈”¨¿°»TRÁzþl Œ °6þƒ¯ÔqŸ-y'v")³ø;×’’Q1“ðK¹£µ¬Ë�#3ß‚=>{aJ¼Lf« —ùä2š½‰+Õ7À9c!–ò>u¨~"Wޝ %Vè@Öti´hžŒ*p‚ÉÃ*IŒ÷3óH< z«¬g;4yàiN覀ÖT·ïÙõ¡÷¯ ã­jèå5�¼™»��ëZ(�$5 Ûˆ¡“í‘DœÀ ä‰Éf$HLÓ!P"Lƒ£WÑ%3ØDô£®{/']?‚é’|MÔ*Brp :R=Y/Ó÷O&Ñôñ/?Å‹Õd)QåJ;^êúÄ­Y—"îìãëÔ0o Å«düìC²(Y7Þð�☷`oas¤pRjüûr"DÌÒu1…G :¸ºeË9׸tš&é)]^ÆÙûd!³qõMD0HûÏÞ8ÚN?*£HB 7¸b�sù†Ãšäæ5l¤ ·Þû>¹ªÃ×~Ÿt½Öy–š±§Wƒœ—ÄYðUƒ³Ã^$ð±^tiË9¿œC[x" iWôq‰ciöGŠ.¬0ñà­ˆÇA•vx£?zÝKËWPÉ#†áØ-h~=;ÊÉc´.•Ïèë&ó,ÅÌÎÉ\ž|â/Þ�Ü+ðngœÍ¯p¶7ûTŽû´gܨ¿‡9ù’Ëç�‡B’:C#¿‰/¦ªPëòcÜýö�Þ¼‚ú®= a�a9¨Ãa*+k…©B´°hRMŸüâ4‰æåŽC$Vsµ>H¬²ÇÞl¨£‡@ˆ¹à÷žR«œ5p¨=(¥_Πξ?k7R« Y¼HWÙ0~’«©¹œWÃù*“(vƒ¨<ûÇ3ÛŠÒÕß6¼1ìîCÅå&“Á<¨�1WîíÜ?‚ž3zOÜ~›ï5ñÜH*:Ѳ„9ÑFÆ7ÿàÅêk‹Ù%ÛX¡Âvmï®r¿TQòæ2$1�H’þḆ§’+·¿-Þ�×õ kÅÜß|AêFsSç §;(§»ñóýÂ]wæp7xtÑJß{‚z9­®yå§Öbx�V“X»+fºy­¿›™p“ÉësÇ)¹�+—ÞbÎ]f3a£áš¨vÊ]ç\¨_îË6vw2[ÆÙ;U¡(¸iyCí•W°öÅ(’«'𨠬Ÿx /±Ç¡j ¦³¥¬ðyÙ³·Æ�¥%upub·)Õ;ŽßV˜Ûˆ­\ ’)ì·Ñð5§Wñ4J&aúˆæPÁ»Õ¾sGß+êå-*lýk\6@ÃäØ\iº(¾Á* ­ŠÖ$zõq¬±£—׉ðBa`p ˆkR$`7x¤Páý${Nª/W`A‹@‚®M4¹89jv –\„[U5Ï$½IF{ÐqO¢ãkà7›\vÍ šÎþ-£ZNñ>'��‚¯i�ò€=Ä.hùr6?¦»•öQ\ñu•ì Ò8·Ë7"™&)�ÞQ¢D„‚-|êJÁ“z€ÞDé"ün‚oŽA"ë*ž°ß°ÄmœH{{æÎÔ–Ï\«·‹3LbGköš�(ô&ÅLÏ¿gâáj˜=¾?ºO 2›ûg‹û ®RÞ­Œä·EáòïÑ].hÉ•ä.GDß¹_‰‹-Gü­¬4×^À~¯eß)mÈÇ$€>{gO¯rS1à²EqF@Mó÷Am×·‹È8N ‡‹Ò/T€r쩈¼,‡VÂÀ<àÈXíI݇ONàÕëŽÞŒ øÍ¡µ GÕ 1áûÁæ±&¬yx€†Ò}Ñzþ–³áX©«Ê ª\F5êY>HˆÕt¼Ù®šu ïÑÍ ðÂ>�­;¾Ü´/7 ~c7�’¬¾iŸZÙjf£ê…ôAÊ:<$‹­˜[°äí÷Èœ=RÚì‹Ü” ’Cr°û›wXrëI?-Eè쎀]LìHÌ£í5tî‘£~]@±Lñu·Fl™#Q góya؉-¬{¼ÆƒH,$î0È(Ýé´é�@*×ÿ¿þp—0ÈUÊ+…#ÁK˜Kº²WöÈí¾#›|¸=W³ÇàÃuyÔ¤ =¤a«Tjͯ�8 ´Î4Wgé´Š‰ˆ‡ÖÁ— €‰(,?Í yÅ®Lš•k^?íNx(^€âà�…Ý>ìx}:-Ý]ââß¿¬–KoÓ«ýÜý ¡"æ&¦'¸éŽÕÝ3¤ý0FÙÄÛKâɸô61ÕWÎN­‹‚ÈR*à�Ä2¹C¨A ÏEØòù]ï^×ã/H¡È]ÛH ÛØÛ?&)ðfr›7m»xtÜ·‡ÜŠ#0ÿ€Ò ähh�”]� Eý]r"*&^øÂz‡Þ„ûeO¦Ù©Êüˆ�Æ^oB£¸y  Á¶7€<ÖÎçòâãóŠø %~Á�s‡£„ðwb è ±ü8�s%Ú†ò^ŒÓÕl仈¦ Þƒ ÏÃ;´„W‡Á2�Ј¶^‰˜w’q„»øò7^ ÙTØcƒw®ñt ©4fxÆ^2«�RÄié‡ì³§­˜ ‹±Ù2-þéeù¦ >vÄê<ß‚¼’a’®Y_¼Ÿ_ uEÔræŒÛYÕê¨DþëæŸ u×FÖVíÃA[Ía³)Hšèà&´L¹d£rAµMNéj9ŠrHN]aÏ77'uò…„BH¨ºˆátÖÞ¢3iZä”,ˆtdJiD³‹Yº¼X×ÔðÑAŠ3|Deà|;½á³1nw0Ûâ=q(tÒã®Wᙌy]¨E% ®Ëtªû:'³dqYJxOê¢9ŒÕvĈÀHv;{§¶‹wcÁ6t¸LÓÉ2™‡UNéóÀ-›üËðyª“ì¶œ M7ø4\‘óa§aã�ȉßwã»-ra„u£;†ˆMŽÁ£Þbíè²­j^°q"ì�BUÏýG„L-G°¹µ¯ (õ܃{ÞüÍÝëhnâ4B9ÇŽy€‡d ŽÃÀÞ�xg]0ܼ)}7|„9ïN+;¤·ñ|eåxÝÍ_D)öŒ'%FÂSŒ-½yò®"*uÿ1hth¹ûÓ0¸>›ÀÑd !ñ!ü–ü¨ gOê“m.‘ fò°ó“?ºìØñ⸢¡÷àœ5è<;w íÐÄuô¼ò6–¿²‘¿›¤Ã·•.¸+˜³%d›1lŸgËJé÷« ýV×}ÂP� J` I kÃÄIȳ·‹D#t/]øò>üç#|×±•“Ñjg�Vü6%Õ¢‡°›^aüŶGªÞ>ñZ–}Žç‹ý^»ý^ÜÖ²Þ÷¡†/*Y‰JöG3çÑT9æî[3ï¬ãHÎ9©�9l“—½.ØÂQ‡‡D>V„$ ã$Ô3·]øSC�R߸‰Ñ»ø<^.“Ù¹-d8ôI˜ ›ž&Â�#ÇEQývWÃa¼XœçÓz•ÿ7zã+ÊÞ†ä>¹GxÝð ÊCDš·_å‰h³p™Îçñè<ÎÞ%ÃøôêÍ*‰¯ |M+Ô´úÛ°l“R±à¾.ß{@1ÓvIÇíÍd +J•b.?Ìny< ´SÝÄ’äT;Ó5Ÿ§™XÐ9;î�+#ö¬7�¤ =ÇÊ€ãN•§S¯©$¨ $V!¶Ñ\$TÊãÿwq]MŸvßTÑõhx©Š‚ûz@£å, Ã|UÉ·J#‹¼Ë‘…�¼† IˆÂëßEµyòò›`D@L€â”‘évÆAÝSkák½;õ!Òs6ˬ¥ÛýíÃ`Vï¿[>o rqÅq¨-õxͯ³@=Aø‘L¥@ƒÚ#½ÖM¼?ƒ­I�‚‹yHÝs"¢H럢ò(„w vä]�í¹›ˆðVvoz„¹T X3)_øV‡ê*Ñì¤Øà"î�C?ö²ëJc}jé‚ý§WÁm8Š#nÀ Âf9—Ù—Pü1l3W\x0fyùÄ}é¶MW »Áÿ‰‡Ë Ýîâ•¶Aì^Næ|F¿wšˆºIPðÑ»7 ´­¯óæ+„7päbs Aj zö÷)ÊIšÂ‰ÇÔ JTô¤K;c[±xÁ&Þs`èK@KÓ>ñ'U.$™Ém pßx—eÒÿ%\ùL{íS}öƒ€›G¬Ð¯‚-U7´ Ž}®jP‘¢]ˆ ™È+xп£Öö|FœÅì>ú ­àô·gwp8�ŒTqºÌR#É='¸4.nƒr|®Áˆ19¼r1Àsö8¬¶žC�$÷¯Ó'éüãÓ4ç«AµVì€Ãíµ„f^³»Jn‡€Q†gú;ŽŸôÈ"ÛÂPŽå(˜Ì�FA¢†åhôÛ§�ÎQ÷¨wÔoÙ¿´ïwÕßóÿ�vóÿ�öòÿ�æ3럞ÞÀ¿9½ß×§µŠ¦%Ud~�ç—ª³J`…œIüÀÆ’"4ºŒî-€ ÜÜâôX¡ —J:tk˜?¡DöIð�â�!‹{›‰q ‹0œ„I—ët�ÿ½‹LíGG¥P<Kªp— - éÖ®ˆo;äe¹Ú�Á/Þ#-¢AÎ"V³\q|¬“·¯RÎ;aéø2ÕVî‡téi$é’…ÌÐRNrŽãÇ\4U9ÞîÐ5��vH0‡E’‹]œ$xÚ×èÝãÓãé uU übŒ Z…|4‘ÅžlÁœó+ rm÷gcó D! Ä ÅÃìÐPº»¢�C:tu?…�áÊV¼·¸wmn<@s]jß¼øi0‚TFEŒ @�,|¤0}&¤Á Z Jjëbr“IúþçEœÉ˜oEéUé´ð> ?†]C²ò›º£WÌ Gv €TºÜwˆ"€)ªš1O agüN⑆ø ¹G`žTÎì#b [š:b–_�“ñÇÄîjÈÿ‰^”þ¸oÆÚ1µ.ãh¤îÏUâÔŠ_<µ5ßù<åqŽÊ9ž¾ŸyÑAîœCÔÛÐ饗›6â6(¿Nš¾Mâ×K'àôúõˆù�jÙž”8“${ÐÓTÍ*§§Þr­¬aOÁ¾ty]SFS·^”­ÜqÝ�Ü»$~ŽÁõÑÈbh?ÑeÔàñH‰ž‰5“Iù,Im0MbY§ìöØK®Í@ƒz–.,£Ü�R´.æ2bfXAðZ9FdU©.ÈÅp¯Â�<2Ý@'KÍJq” /¿û(îX{=ˆß†Áã5[ÙƒÔÏ‘Î�ùúVÀóµN©×yS ØBû†ëÉÎã,IG‹óKí×_¦£H&$‡ o±ÆU>f³sÙt ’œÙwÙ×_v…o»æëþÈý¬"¯æC÷—uè‚]ç¡—¨IYŒ ÛÊžý#D*,’R²S;½ã¸Ñw¼Åü½lãw|Y·ümÂ9îµ2~FAìø–‡ì-ö¯u„¢\u®"”÷b® 'T�PVê—¿º<øn�W+m¦ôÕ]ïÞäPÝâð(7û,5ø»¬Bò�›Ê(Nuå-ª^šT¯�zQÌ+¶¤Âñ)ôq9y¢s”Ë)‘Œ ËËÇî¶»p¤¡†¡%åh\¿Ýj1Ö·(fkS·èò­. r"M©Ht3þô!,”}ŸÑf†*¸(gt%ðF˜)»½®ˆ �Õ¨Ô¹¨ü<×%•똃(ì�Ãcå»­kåžÞWÿz^Oã¨Î™!šPë,•7±Žö%ùÍN­ˆARÉÅ>x.\dìšVlbâÅÒW_>ÎQ� Z~@¾b´#Bˆ:‰É Üô4O›óeÁ ² ÉF›ä„,W _&Ó¤TH^×m­;Qa?–Î#@wHK¸¦|�àìÍØL„¿TÐÑ©Á’‡A«Øóû¦´•4†øK.Å—\ ”x¤ â‚Ò~É¥ø’Kq�=Ú6þCçRŒâq´š,%I½úíÚ8j¢…zW„«A¡-°‚õY˜Eᦅ= ZÓw�¸¹^ŽÚ~øUú#ézáuñ Œ‡ËÓUåÛA.žwÜ;Ôa6Ù�)íH)+#êÿºVÅ4gÑÔmQ‡õÖ,2h<®ÐãÍ•t°«MTÙ$}óì]ií¹›-íãÖ!Ž”ã"qStœl–BuutéxR� /£YIíËjá¡&^¹æxá›b¹úì�zÔèµÛ.ý²Ó~‹e�á­Æ±3еsi ÐY.Ÿ¿sAÄa£Ó½¼‹$¢W—×½ Ò=´QˆñÝ"s2#{Ïuf „èFmo)ê ¢°üíJ…%³UzoÏÛnÊ×;ŒÂ\Ÿ‚¬•™},éi‚­ç“háqgpt€×©`ò“²<€$[Y¦•ã¯]mÇùô‹³{ÛS g¹ÉËù7U'vÎ n%³Ë8KJ|Ö]lgrÑ‘m$ºÇQp< —³ÖYT�„ý’ÝvÊÌ/9Ð_r «dµ¸»¼8û7J�Næ5Ì‹¾ùÅ™„»œ§ŸYŠö—ÔÒN-ý’ˆx½3;\"â>Êõ—|Ä5S­ž�x{³³sžê)ÜZ™©–§É>)c•ä“r]cOs0`gÐkSºµ}¤ÿO×ní¶Û�ÓÑàäôô¾ÞýÅ0�Çß'rrBùî» ‘�Ø­CôO†ÐË R{¥ËàÝÊ#\£rvÞšu¢9Y—kîß?ð‚�ý¬ïS-ß©¼¼?ffô—\¹­«ü%WnÕ®Žo|É•+"ì*ÇÖGQ}É•ÛìÑ—\¹í·É•“Î($Ž´â,¿äÊmBÁ1£=}&»¯ª¾ @‡ÁÔrfŸDA/¼KÀZG2)7§Ò–•Öæ¦;Yˆ’û%Wqõ%W±Â«w‹œ,¶°Á2÷ ý¼©0+›âøBn¹† ÂÔ@ «’ä(".Ꭰœ#¾8{×çÑHEhgþ­r3«þ9óà:ü²o*·s5“Eª Ù<Î^¥³¥óÎÝŸªoºòîô*™Î³4Ê¢ëæÇYÜx¢ºg5^E“Ü®VÿŠ£Ù½Õ\q×x�U=ø«©ùR·’鮜“a¿õu¨ÝæÈÈ àƒ>Û ·( &)ñL9Û«NâDèŒ'%íñJb¶†aÇzgžæj`9šÅ5t ;bvIé{7²M#~h’•A€�“Íàd¹`(þ㈋ k„!4Š] /ãQ®‡�·ÑlV"¶»<Ùj¹ºO�°o´ý;ð5Ì\Šä ÎO š ¡2s+ÎÌöüË×~Àg†'Œ7ø;<{C„²“ý"¼!J$/NäŽÔ½=H]Μñ<ûä¤U«ü•`q'xˆˆ�ƒDéØ}o–4o|<ËMç$[-g“Õ¢øå‹YHØ27G°bd1ÙMˆÙÄMY_ã€mÁ=�ÁMHÂÂ\0=¢¥éx¹wž5oîHã�Ï"QøºÎÑNÇŽª=ÿžPEŠG†1H¢HHEEÄ"±È}áV’ëÞuÀqýÍ=±obqÊäð‡“‘æTà‚�#†û(ZÌÐX-—4¯f€#i#‹³À†ö¼°‰’ð !ψ¦«VdfŽwšcëALß" È…ÜÔ9¯ïDe�åÆTú|¨Ÿèþ�{AB£¿+"XÞ"‘U?º°ê�²a¦½m]DøÅ,×¼Ïãá*K–ÏWII¥"F`|ã9õ£š‚I¢ŽéØT\æÏŽqunR†`?¯)òxµL§ ï]› �¯?ÅÑäžrK7βԪØÄ2É ¤y_ƳEòn½¡â^Be}JlÏz�mOWKídx<�§ã¥²U\»ó÷8›Å“'ù·­Æ÷Q6Ê÷wtöýY«ñkW�yʹr= <,‘ÍqÖ6ÿô0Ç ˆø�J#ob²ü:¾Îoã³ùM3¾´pœ´\ pÌP¢.K8ž›ƒp%«0Dî}ñíŒAâ<Ñ™{ j�õDAëùªq~/Q /#-‹á�IäáÐrBâ}´!¾Lçߥ%¹À»�‰Ã÷Œæ#¸=Ê£`¨‚î "ˆ-ÆGˆ9 C>OK”áMãwŒS9�SņÂui¿äR~ßo3½!ħ!Jk±ì‰xEDbB‡,ó@l¹pýYDžì=˯çx5™l(Ñ'q»*\yÓÓBdäŠóâŸ*ƒ9ôÿô´SK®;B†Æª{P8’C¼”KŽa%™¡µ‰Ñ«Ô­�êqç^~ÜT3¶nb½$?ıŠï¹[…µ0�rHŒÔ'4Pºõ$ ˜–3Dõ;æz*X 2m«O) ö­V߇‚r_u™UÂ9 €²Äú PGî /grº?¨LÄ'!LË1MD\c~~!Fˆã¦[p ¸_ÆêR8—ãfê>8GÁŒç'ª#´Ñ±S)™s|E?t\WÀ ¨ƒ²âùj©-ÕWÑ,zOKÂHëßY*@¤êæÝí¥  – İ2‰pòè0E5ö½%sìÙTl-‚ŒÄÈ":Éõ'Õ4¹'Ñ…‹ªàŽsd)¡ m�DM­Îö䞢ž|¼ƒÿoiúfKd’ÉÉAW¦ñj0L4$3]Ô<«R åi"ƒ9¢^A’Ô»àeð*„»î\óëôÎìhMãÖFiãÕA³$ŽzÙßTÌ}L$Æ öhMTÕk¶Ò¥ê´Ôl~º«2;¯á¬z”-PĬì̓U �X+yªde¢baÉ›_M>Hþ÷t$c¿¬D¸dõ’#^:<Ü™è¶ËP Ldî!€ÑGÿ‹£kðõ/¤W—±Nò„HG¢�ð (¥ÏÄž#ŒO,Í‚šþ# àŠ ¾#"Œ�¥\w½™Ð“k6LW³¥½¬b:˜íXh êî˲BjB …ª�Ž š˜¨A0PUŠõt(—Äø©Ï¢}'`ñ†xÅUŠ|#c= K”‹dø»>gúp‚äšãÜØé!Û@ß­ÕòJG6Sà´îÈC½V¨öÐ;þ“â×—Éb™fב„§W±©©ÊiÄ£‹ez‘¼™•a•³ls 9-GÌÛJâåAó•0ü›“[B°1â³Õüb”Î<ÒÒž%FSÁÀóx6* lGëK}Eòb"È”L¾Çô š¥ô™cÔ,$/G@Ï ûbXÏbeeé@°s^n¯Š�oª_ùꟕ'9lôjáhvã,�znó®²XCù�&ûXÃ�Vøy”L —zB IÈš´JÔ¹ ,Vzûd]JQºÜÓfå…Òv�¿øS2gÇDB¨å°“ºAÊÚ]Zl¶ñ0[çIjuẟ‹ ÝlÝ¿VQ©J±õoŸ¹�‘˜åµ«9F—ÅJã²÷k ߊi‘/Xd�רç·�’¤ß�Œ }ô§Ã„m9 dkªƒùÖ¹ö4KÞ$³Hv‰ÝŽE÷% ×áwZÊ«’«cI4™|,–>ò®½+õÈB“’Z;-º\ÝyTë6l(à°ç”g}¸Ó†e®e%�v%ïtͱ<‚9áV0•¤÷P-#]ͼ�Wp{Á£J;0š=@.mÖmةϪˆPºæ¿“xtE¯Ñv²Ù‰¢õd½ŸÆ¸š3=˜$Ìâ­’|.¦§_̽�A� øÛ4Q(ÏÓ‘[ü¡cÆ|À#N"‰°Ä�»2…(G]l‡jÊÙŠ‚k£ Ü’ÅèšÖº“Ê,í¾Š ©Vî&ÒáèF¢it%Í.¢|I‰m[—­(»¼#†àµì³lHs¥;†€/Aøã^à¿®¢º¼ˆ?$ Y¿@éŒÞ/×@q²]î�¤ÙŽY/úl £UI�d«@¼\›«£’E<<:ZÔ#ɪH~Krs�‹Q^›êûA�˜!^Dê /¶å4’ÜHÈùEHD�}I·ÃÂ8j•%¡S=¼SaÑQ!ćÛÏ9²j†Bò]C¶®‰ .I¨Ž…wÆì¶‘KÌ¥ã®y‡ÞD¼d¨sßgÌgVÑ¿ØCØ•û ‘™¡© ¬p_ùk‘Q„ñ?d{»fö"ý×êUº~û00�Ôjlœ Çª‘„T@ß.øßReW<ì£4¸­©sÚ<üJÇM׸՟ZÓx¶Ê…‡‘¬?åÖA®;}o½µ5T¬âº�à¤îóH±“æ̵îdß„CÞ_[W•H]gÎÎæ›º>ȳnNt-.iY‰úÒPƒ>V¬Ø#ÔÀ¸'^–¨KA‘7ê2ð‘X[¦ˆ½!ºš~¼X›øÑGrz±X ‡ñ"7þÓQn]�âe”LÊbtÏûŒhRnE²0º™ÄIA”fÊŽâAIV5À˜´˜Î ÃaŰ1›ìpd z-ÕËxú<ͦ¦±×Õã¡þª¯l±¨áBé\«'êµ%Œ´ê‹ËƒÎ´œ}qVËÛ¼]òW�•eqïÖ¶‡iªüiu­�t�³‰l®“hø¶¾)Ô›‰8ÊRY7:¨ÓÙQ,'$ e-a[ï/ËÊtì8w’>8ØaG?µ†ÑlXR¢± Câ5œ° ò ÜAìÈ|¾ÚïafžN¨m‘7íÍjvàÁŒ �ǵtÑÑLe>?_*@è*[•–×sô©e`@hªZÀÜë$Ú ‰Õ›0¼Œ2\ºL—>ð×Òf†PÝ+Þœ^Y•IÕ¶~•ÿ7*iý]Ùv® …;XId¿YÉüã�3]åSzI‰p@l÷p Ôùságƒ„`ȼÑî‰Ëll¿ÕÁÙLO“yâ ‹¬²óå EÞsQÒFïl¥¢‚R]nfïmF;A;Û[¼×‘Z÷À1»'ÓÑ×OuÓM5J2\Œu× ÓšC—ÃZ¹DL�ßá1fõ1· ³~¯ñäü¹yTÔGªçí™ÔµIndÿ Óדtø6]¨ªE “{Fp´fb ì`(S¬´I…ò.bUàV�ž jiñ‡yœ% y‰&/ËúHtÑÀål¥EˆäJ‹Mݧ9þy>I•‚z-—QIÕ~žÛ UÎ0;ص[¢'ûw�øj„xY’0Èë6O;9)tµÛñÊ8~ ´f’O*g(lL‹¨d�Êq·Sàœ.m¨û§­ÿ’ÔÌÍü{Ëôž6ñ›uÛ¢&ö±­Ÿ0ÍÙ�BØ5®¡`ŸÌòÞ›,]Íïéþ‹®uã3¶?âz r3Ôç st*õT*9­gü”äZ[<¾ùÕfZRû1í‡ÜDTt±¬€ý¢½ùºs¼Ùx£SuÇMºÔ@¶fŸ¬]­:PŽUØF�>Õ¾w&VÅžà ò®mÏï —}ϹÞÖkn6N©ª¾Ó-z/ÝÔØòÅ_ÑiVð+:²ƒßË-ÛÐ�¨öOæ:8Ÿ­iF½¸t8õ*©i¦â:ˆ½p¸m_3�§ÊçW릞ì°$VpH g”‚7b>ßöôßdÑÇCϾÃf¿ÿ¼ƒDÄžçLd¿‰'²~ÓÛ�‡ý?Ôð‹ü?Ãe<:ÔøÉÜj©`Øå"1JÇeq¿‡íX‰Â^@�Jˆþ&I½˜Ô-™Œéw|/zWMä•CCœ¤Ö¯¹g{uìu’¯•ûn±-û„Áº®wž¥º‹l(SÜq¹A•QÚ0УÍSް7G0JϹªë9ÌkXÝ­"š÷ñ`q™Ä™³om+ú8*Ün%ºŒÁL'Ä Œäœ}Uâ¸ñUÜ"(-¾ãi¢N!žUdçùzü�N÷3âàv¡•ø-dn®åúøþ]x¶Ý×ÝXöÍ1ëíiü6ÿ±¸tó�JN½§š(Ü%^„¢žÒ×<àHDÔ¤i¨ù ¬ª•(”BOM˜ü�Àk+ΣV6‹ßßÇQ¾„xqoº®z,.‘$ bÿ$féÒ`_- žì$T7\Ù¸�µZéDn}¥)µÎMRw~“d˜¤«jçêeñð2öF3ïr œ! b~wùúwaâx.›pÇfOâh‘ëm³Ñ½E< S˜‚'^²P[á fqªóY)‰ëxûu‡áªvâ•=+7ŠÚÂE×u)ªé¸-!ñ³>þ„w½¦Jt‘¦t� ÅY%"®÷õuG�´š‹a4+õ�õdUùLÅ颫긳ž•®°:/ ¢~(¼g·©ÒA˜]IŒEOdÈ•/Vm“Îç«úžš½Ì‘kœ¹ì�Üc1Æ'©#”¬Ä��­Å`¸�'¥¥‚»¿º£ ¶‚×½èI:t3žÏlÑ(ò�$ÐÐs—aí½‚‚] êQ; W»[W:\³R˜œ‹…ßšÕØU =sÌÕ)0ü¦U ?û²¹í]ÂÓBCÓê·$÷gjV [;}칎ÛxírÝ:^úC¢¶¢:›É;ôÒrg{…|;Z%ª‡†è$Z°(w´=?Ž& B°HJ}t}AEÙ«DáJj‘áb„_’`yX�#A@°÷|M|´÷>Y/µ½ª±LSt¢@ÿBÀ?G§O¤@¼e¼æ�¿~>‰oï-âì]2ÌiR¦$ïÿÞh>Ÿ|¼7�ò—‡ÒO­Rç \‹ý⡱cßÅÙ²Ú x ‚îáï¶±4«hz/[MB/BåP¨ÉCU¢ô¯ }´‹üŠØ¨{¼¡¾k´ˆY˜C9#  [ÚDw…R êTž˜Í¯¬C„|[)ŽÕ:wÌÈAûP!(ª2 ×".­$Ðà2}A°·j‘ŽšEP솈;ž‘Hl- ’ÆžöíoÃ�…ÆêŽíKÖj·âÖUÛ¤Rv»lj<ý¿.à€6ÁÃ]´èrUÀ÷Õ~Kz|ír8ÀbfØ:’'å4Brü‘þ¤½)ŠÈ5[*Äå�yjV3oïµçžÕŒ‰�Ú¶-?±qüþˉU9±‚Ú«\¢æ×Éš·5õšE>v`g~Œ¹üñË9~ÖçØ{t´Î×ÿr�ŸñAê |w+˜0Õ5Â*ZlPu'n¡;K9ø1mAY&D�ŽÚG ÒCË¥ˆïÚ˜ßV´ÊnË®¡;^t¦Š®„qÚ„ëÑTKö*<ò£ºÅ±OtÈ5˜R9 å[cæv‚^UÎu‚"ýD횇/öQp˜Í–7?­“.T¹'Õa…Úƒ[¾ Qè"!Ø›Ë[1iÇpZ³é. Í£ø Éûª·øg€§°5.‚:ð&“9Dt{r€ôT@zp4œ6v-á5ò3jÛ5|êç“7'ì[ŽN“�t­‡Nqä�ŒïIð·#�Œzgª:Ì/��šá~�°  îd0Ò9Ï‘æž~–oëAõûè #‚‹ë°¢Ê�v©Ä!n³6¿ôŽ›~ xz—ÂWøÅí”ä膲øf9{àŸ«G.9$(²½ÙoÝzRN3Ø}´äfq®‹ZG¯×8S×áh]šþKi¨ÃÌØþˆ©Q7]3æKi¨*Dð¥4Ô.{÷¥4Ô�_ó�†="ÂüÔ%$häuÕ–*W‡¹pÞr�J‡IÆ AÜ2fGˆ…ˆˆæe@‚J_UÝWÔö-Z´]óEׇˆm¡œô|‹VW^k,¬¸(³â*”·ñ‡qìÏ7ÂÛgP@æOжÚÉ Z%Ô3³;ÂB9j`�1;éP¢„þ1”a‡}«VY­ ]!Ä'©I†çqÕ9@-µ�çÛaóݦåZÔ®SåšÉ~S-©—8Å�î%¡5Ô*슂BÔ¶W¥´Z•Ã@)Òq¿œ:7ªÖ`Û•2<‡náŠÃV];¼ º±×TVãa°û“Ü)å@VQe•c�€Õê¾ý¡7C9¯µjI…ªt»Æí­Cwk×s«# ŒÑŽ·œê8•ë«5wãó¾PîÊ€+¯ûƒîÂm"Â)t ùõnÅônáBn)È�–8Õ æý»‹š %ò>ó¢x‡qrZzØ«èZèd°ý#eØÅ#Þ¥z^G ­|ןÛa¯6Ãì\õ®†¬÷ È Ö¿ë’¸¡ åL^ÿ |=ÐÃâ‰l Ù^†‰oµª¯dkÓÜQ—Á>Í"÷„irô†ó 3Äݤâ½Oð ÜAÆÌû=G¤=ÎùÉFë/Ix 8°¾«Ð€íºuõërÖxÂâQ�½Uû…®W- øù”L¼ Ïaíé•«-"�w¶w²J44¹ôÈcn¬¾âA–¶ë� ­ÊXǤïÀ71œfE^/üˆ¯ äq,Y•ánéÙõ‹Ü»òóÖ1j!Ñæþô‡ì®‘°î>®ŒGw·Ùàa�¼aù;ÅïåR«�Pà²#ìªKÕ©!=tïå•}µ1;’�Â+nßzÃÊjîµèÒü¶B%ÍÎ lÎ-+#YcíÌÛ¼LTYnYµÌÚŠÚÕx]¹>fÝóÿfTŠº¿]äp}ÛY ÌÚv²†¨üjù·eæ·ñ2Ö�üãV~ LpݯÌ"’FðÅH!É®Ç@I$1 ´pœ1LwÌDEBÞIQ¥8Ð:Á~}™‚’KÊáèDš@™âa°{è C ´%Ì'˜Ó{cÕBË‘ö`�ŠÆ†³ÈÒ>Án¨¸ûÎ ·ÊÎ7^˜m-YZÛ{꜊Ûê¨8º¹ŒA5OëX[²3 ˜dhe¡*ƒÛS'¨b! Ã,RŒ·AfUGYŸæ§OŸZÃt¶ÌÙÒéÕ0š ãI�´÷˜žM=ê8ɦ«P¼x›ÈIuÜýc>áå>¶†ýÔ'“ø—$~g§W‹Ëôýìy’-–¤/_Ä£}ÌKEĺbÅ"ù¿ñ×Íœž�a¡étJ¡À^[ÕçЩóŠH`æÄ\Ó°šRΙ.ó=š~´l÷çù"žLN¯¢Õ2}b¯r|zÑß?Üж\b(3E†OPÉa:¬¹BΗ՘!\oŽÿ¨øFbíH;!|�õÂ� ÜRÔ %ˆŸÌ’àë¨Ñ�ÀÓån�†¢ DÎ�Üm¾Ô­VùD¯÷Ñ~ôH´cþ#Vsx ¥ROtçŠ#é‰GR×}‹ñ�ÐÌE®X)wˆu X´÷ìºq d»úðØ¸Ø–¾Èü�"±¢ ]&˜öºH¨=ÖmA‘H”mKüx1ùw‡®é¸‚èM‰¸7‘ÕFZ"êb¡6– �-¼xYX_"gÈ}´ND¯¸<éïša|½ì‰¶aTi>ê“‚R¸ñ,'Ë…Oqè‚AÈ×]„øò æGÖÊ#gÌß{Ž鴃Ú.lÿ 'ž,ÚÙ÷ˆÇ„  ‚&Ëä§®_â–GÊ"H€”ÄÎý:ŽÀãÎĄ̀ íCL‹G>…p²>4P“AVsâAïu„(H·soooo'®6¬³lfø€Í¶8Õóg?Þc‰ºF½ôèÑ=Òö�k"�å�ªÊfÒqmîoݪ à½äø#Ò‰è¿.ÿ°FµgŒ7]> ^Ž$pæ#ò~<,¦{â;05n“O„õ·§èÆ×t ’E/éѵ²>ÂÃ0BxÔ$�•%0�"æŠ},ÌÊ'룂swè›F8¯>þ�¾ßmȼÑCÓ#t5 ´Ê2.I$¥i�g0Z÷Ñf´Ž:Æi4[E“PŒ¡ò5®ªqx„|<•r¯Åü>°A&êÝÊöPc{iÄŽû á!¿Ñj¥¡ôöTtÞï¹KÀÏ=e{8âçà’»žs0s¬Õ üEÆ6P2]åÀa…œ˜ Yqõi:Š&¯Kw êHZ=Šq±�È*œò�*?K¬§ñÔ¤à�^FƒOD�Ú ¢5ÈûÙ&y6«uÁ3È’Å[¯)ÜáÙ™à•Õ¬*Qt¹–`ïéžö”lÇ•¯ËgI•ò¾µõÒaƒ0ófªa8lŽ%8bY£q![VÁV‚ÌÞV‚yÌoÚ”šÿ…(¸I›@6svRß{Aêû‰ß"Á� Ä‹OˆÓ ;Ôa F×AMÒạÞ2áúIeR޳x¡šiiÇèOæŸ×ë\áZ<^ÑTÏú]Ë;$Ù…¬‹¸+!zz5L'«éìIg M[Úòü÷  Fõ’Y¾Ã‹Õdù<]ÍFå¾khê´f«‰ØÔó·Æh{ó÷®!2[5òÿaÆ{´™0Öï*YÌëÅ쥊é—ïNyœ(i¿Á("íóÇ*UÛÛ1pÒq+Y £5IÎÞ¿¶5˜fIƒ&‘¢�™Iù¯[� ¸„GW>õ;HÞGL§,pý»*Ev|<™Ë<—Ç"9n7, ñçSº¥Ï¬1™W˜{…�Ë )+N9àáO-•M~z°ìÒ´…wÑd¥úœèl qžCMBÝÐÍ—ÃËÈ3n©çW¨ôš]׉ھհ*:µÁ£Š.W_ â�9E-.Ã,ŽgNãP®¿Ï®ÓHÊtâz[¿H!æ/Fé4JfÒ U~È]¢ˆ&%jló±~õºúËù2Z®A´éá½ ‰ÏWÙ<]ľ¥ €n§e”M»Ðê½" Ü�OJ¡ç¶h}å´J¸éö“ùt΄2”BÌËr,Oò‹M7©in…ES/)‡ÄŒ =eÃ4,p; ˆ3ªovÚÓº½ÕQl©cq²!›“EæTt{',µ è•�±æêÝ~�/9ntûBL»ÉHèµÃ*ï¾�¢�ˆ/<2o«õÌz!gVïv–ïæÃZ7óaÙ^.ÓQ˜@/|JÛci¾ú1^,ã¬d${©¹ÕÖ|pùqîc ]t‘�wÐ÷ut¬Õtò„Öå=Óá`¨‚TvƒÿË"Ñ÷†0@ÁlðX•¶ô©#ðŽõÓ“dšäz¶þÏYô&>Oþ¯|N• 9ÙîÙ7#Øzª?MÉ(Z¦Y¾J£ýý�*Ü'‘3G¸ÑèÀ¾»H<¢Âˆ"(¬èšÊYEÓ§zª¿&“Ñ0ÊD茛Zr,p·—‡—ˆõyi/y±fóN,Z;ŸßÛEŸÆô’œ`ãÅ¢é|ç†ùÔ58~¯öͤ…™­«a˵| Hºß,o§õߺsú­°oÑöÄx¾+&«®� �œKÚ¬>ÞUtw{º«’H££—Á^‡Í.½Ôl¯†+É"Vh>%É3çn”ñö܃rô�šÀMì’aã­kÛ§Ælåú“ó¨:í·›½|½Öþk »>¾Ç¿#Ü�¶•„›OuA.q£Ó½,_ñ¢Õ8v^¸Î¥Zt4X¤“Õ2>‹–²×‰yìi �Ã4Ú |Šèß,ž†Hr´h¯ñ[©Â–lµ…\p–:r:ˆÒ‹ª{!Ž‚Õ.œ�ŒÔá©*. ®£æjÔ ™“â…Æ#-M„ÅŠª�PBù£¦­»Ú|Ò2s—ÐvÔÀÑÍÂLŠ7 )ô¬W)Ÿ ªºê=€£æŽÏv Q'Dí¥QðXJ=©>Eì;I±q'›&»Láï�ëÄñ8)ä“Hc^ÇUM¿ùõ–ƒmí[sÅÜߘì︭k«ú“[ž©]^ý)ÿM BÈhü $\ŽÕ¤ëcÞ;ш¸•œ–N5ŸFÎi¼ºÓ9Õ_+ÂXäìl¿)Á-%aFÜÌ’0ë£àÃMöiVGÚ¶þ5Y^>yñô§Cp;šÌUR_5ìôaWá¹íHbZ±ÊMÛÇ/În^þT m€©Ê)1EB,iGìÆd¡zUÎy©Æ²Ç®‘¸ê7Ll.T2Ó Æ×ÍÍ�ÇÙ»8{Q |Î[Dn âô’—•Ø�Üÿpb÷q´0{8�–O£eÅ›÷»Ub�?lq0Ø&A2éXÍb1Ì’9L�¯¿ã~¼w¬_&³ß5ÆÂ"p݌Ž6¨Ì9îj5•k1 Š®õ6.¢8‘þ°\ŸXxÆì)ÍÚÉYÅbñ>ÍF§´ ì'ͦf-ø[zóóï'«7ÉŒŒ6€¹õàí£ü×i¶$¿EÝ#·Ì�Ó y#Ì‹¸&‰ln¶T‹¤XØÉfK¾Ms"Žœ¯í—¸Ltäˆ.ç·v±üŸxh—Øuð¡fkµˆ³™BÚqž†ÙÕ•È£Ø� ±ãšFÒYç±ùŠX¬“Ì&<}³áQ@Ç\¹7Á kpåHÇq—[UލÜ}ð½…Ëà·‹‰vÑQÓ:ÿò‰O^ôÙ1QÑES�HƒÌG^�²œˆ9«Œ,sRBöMr°+òQïÖ§„Õàâ 9—$N|Å¡âóh6Š3£GŸ^ ßéïræQWÔ÷Ž’ù¤ñä—gM[6-´^ZˆÊÃûr/TíÈÕ@�9Œ*.õfØ‹ejHª¾ñ·à2”éº`üò"`U@lŸ)hû.ç–JŒ…•¯ØI`é†ãRIR">)“oªBH®¢‘¼MLá>8´U}f4:+�'«ŒÆf�’¿F©[õiZºîólXÒ¢¨œ!m–ÅÓô�Gš9êÝn £NèA¯�±Ù­e+»{5;Ê^¾Ë‹oð ͜ڋe– —Í¿_4–PÙ~öç?7S�zÒüæÅwÒ±þÌf‘5“ü'ßæä`ÿ}:ûôé]”5²oÔ ­ø›&0º#OóçøØ'FÁµ·—kJL*$ôö<Á‹_ˆcØ�¬Æ¿™¬ë 2R"ÆGwؤˆ�²ÃîM‡ív=?EÜYüî/gä§Í£Å|’,ï4/šw[« ã†ßP<¾�ƒãO÷I7”ntpU�l~dÃ�#†Ù�Yâ:²#ñ„Žrä8 Çïê¹3GâN9¶ôHÜ»#dž‘�I÷ß‘Tù�k¢ÌëÛžá7÷Ÿþ#}úÏoïüö�üÿþñÛ?ÿù¿~ûçï¿-î~ý*ÿß·÷7âa\ÈÅèãÖê/VNMs ñMöíòÛ&lËÑ(˜bó4àg¹|:ûºÙh~}'þæëYÎ�®¦ÓÓÀ7\Œ?ðü(p–µ¼ªuióaiêþÿÖçø¢@v[#›²ê0[!×ÖU.ºõêÙ4Í xpQþ5?éGÇÅì?ÚôdЦ]ð�plˆ�PJß?²"�Çÿ³Óþæ›ÎŸÿ¬þÒþÓ7�η«´ÿyªþù×oºæóÿø¦ÿç?ßÑ¿ø�Nû÷ßõßòoÛwówþyºúG÷Ÿwµ’}ƒZÖZe-ãÅòÎòî·ñ?fG¹²¼¼¼sW=·ùǧ¿DG‹oV­èhüMü5ÖÄ7V‚c¥d¬I>VÚšäc%z¬Å7W&8[5[ïãøí(ú¸8äMKÞSÜÁmì‘™=F„ût¥„+k_lfáˆæâ?íw¶§Gœ€è,Ç>ÖƒycèÑÄ‘DÑ)lMG5aŸÅ6Ÿ_®щ #½!-Ã^ôÛ|Í}Xg±B\�] Ê «Ã8ç÷ªHÝ.fGæEfDæBfAÞOÞLÞ©)tqÙ¿˜­™è©è¢B§�ÖÇ8ÊÌßû­qšM#åú}ùú´ùýétÚl½|}nþzºXäÿ:m>}zôêÕÑçÿËÿ©þÝPÒ©¡>0¶_ïH}áþ¦Õ°£êŒòÿµòÏ”I6‰–É»XÕ°=½¯òí ¤þŸ ] !§�ÿ¹`p„Ûo¶Š[‰¡ÕÜ$ãÛ1dTŒ?=·¦ê§dÑgÜ*‘Z†Œ[^î¯%ĸåäØš“�?µÒl”Ìœ½ø³O­iœ%£$ž:¿þ�þ·¸O|’+ÿÑéšïmýýÃoq‰…3†°Äcá\Xh5œFvdÍÜ£‰j+ßY´f«É¤õ§öÝÖâÓ�ìΣýã»w?}úçÝ¿üîßÿ�EºÊ†ñ«h>Ofo~þéå7‹lx‘tNfÙÊüwùay4ô£Þƒ‡'½^ÛGÿgq4�æÿPKÒV1]ÄZå=y‚ÜJimunify-security/assets/ui-app/assets/static/nav-root/main.4eae6dfcf8ce.jsUT ëÆ«jëÆ«jux 致; Wã¶²ü(Çn“„�Ý5ør³!téÂ%l{Úl.ÇØJââX©-)ä¿¿IþŒÃ¶ïœ·ÝJšOI£Ñh¤x‡Ë˜Ó¹Ñ©�HiÿvÂi8Ñžús‡û,Œ5’c]ïqÏi·—U܃ïùU{¢Q଱.‡OX4_óˆ;A Ëæs®cöfœ/ÊèˆaT_6Ì„F¾ì=$œ—Uf$wFÝÇöRO¬ô�<(Ø´–„£hN|xµdßÝ0�9 “ZBLêòzRà{4ª%qÆî—ì•.Aó!bÏqY®JÛàK¸Œ^þˆUµÇ4r8‹ûá4 Íxá4•Œ6&“$tQ•N 7^Ÿœh+´_WÄÇ‚aá`a`ábcáa±À¢‹Å‹‹ 3,¦X<`±Äâ‹>OXì`ñŒÅ#=,î¡8Ž(O¢ð5¦&[£|ŒÆkhÊÙS›¦-š1—Q xHj€y䄱�:™‚âO§4hÑZ‘bw¾Ù…½użDèËâ›çÌMâ+ú`_ Á²fžùÈ%m*HNàó¥DeQÇÈ= |ªE2\�…šS$\¢sÇÅ쪨r7‘y£œ XÓf™%0{Þã�ˆÀ“µI`ÊFf£"XVášÝ››ûÏÝaÿþËmÿíY„ ÐãeèÞø aë´ øžˆ2YE¨gƒÞ׫þõÚR5 ® T¥MÀ~qâÙ%sÅö‚'p:EÛÖ¡�;EGÚ,` ò5²×Ó^àÄ1UKàÎY4˜œh Ü…D\HèŽÎqÇÓAÂÊ¥Œ®t‰ 㫢ʦ�Í/ww7÷×wýÛ^ÿænp;ÄYWqø ’÷Ÿ†Øu”(ÙBTQŠë u öÅŠAAŠvKãD®T:ËÃõÌÞ b=£¶‹n)šh G<³PˆÎ\2äR¢ˆE_œÐ Ä(‚H}ÆþÜǃÔÔ‹ðèð²‘a`xw쑆%Ed"¤MÀ^Og!«ˆ À r¯ã¦TMÀÞÒŒD£ ³6à‡�þbHœ]ÚlêrÚh¿ôo‡ƒkÀ«â|úœm})TE �‡€ÞD̃ÕÄ1—ÀöìDžÔ�Äiß’Vçá,/œtüŒNüPÚsê@H§Úئ—³ªóz:¥ÄµÕñTõÀlžðdÞ¬e�£ªÃñžœÐ­ÍkŽHuêdrRUÊŰqå,Ö…rÊ&™‹\yÁÐ/Ú›åË\µºÀ› IkRàU°›þ“ÐhY#X¢Ve=t ñ‚p­‹¯1ÔkPgêS�½×ê5È=Œþ¿IE‘ã=,z_Òë寧2¬n’Ïéõòxæm’•´5¹Ô,rh5ÂU†ª*cðºdFØ ‘£�¢Žïéè‡Þ÷Õ¦ïir'Ú<›*Ûmï ç½Q¼ßù†>§”÷’(ŒñëÒUz�¼ ËÔ;wÐ?k¶q-SU“¿Á‰ü ¾à�·ÖrÊš s¼ ¡¦@ªJ…ÎÇ¥_î®.×%+ä�ÒÃ_~zGXP×dé‹ð¨jD‹Äªä¢v7/j÷1b?û¡Wú ¤MR�ÍR�©ˆ©T¨F¬@Û,Çÿ{¢‚\# w[^³ì9e“LáÔÛ,^búšêL]˵¦ rŒs•üÖ))“«Ò¢ƒCÑx¶.\¦Ve#:�<³6“)�Ö¥àf^Z ¤)<Ñ_Á‡X½d‘\# !†nì5'V%cË¿è×(X—,×$!N¦yÆÐeu›¯†eM >AÔçPÒšÔ2ä3Ê}÷ ‹ùÍFWßÀVÕÆÕa]ANÙ$ÎÓ�[m}Sϵ®«.ØÕG9ľ»?×¾£¡fK­sTu<�/m8U ¤ò¥uaB r’€ÿâ íº.�cq¬C“…y·u ö ®áÈOH%Œâù)bÉ"ËW[©8ãìb^€€výÓý/ÝË‹³®º÷—àŒþµßíõúÃáà6ã)à�oªF™OÔÓF³Î#ƹÎ(Ђo–�`-ÀÝRGLª<£,ð~ ùr ?'~à‰Ëü:²Ì©FRæTÈ2g:ú* ¸`5}O<­âe:È"õ–ëé5Sø’—ñeêšWÿ,^ÄAkÖ&|f� Fò\Àõª(ŸÃåŽæHì©÷uÉšBeÆIò�B²É6)à‹#*bÊŠ&æU÷îþì¢{9øé<¯‹e ™ Š3ñ~/ÕÉvß ã"Y¡Š\½€Å´È#%y -ñHT‘«8µ"¦È#CŠ`‘zçó²�(›f& q>¸½º?¿è_žÝŸõÏ»_/ïî7wƒë¡²Ôf2Cýè�çøã†ì.+Ôâœ*HÉyg¿¯œB¶%~˜L2¼l—§1M.w=’ኽæpN¿?xEËœ#Å”;y@ò Ɉ-’á.à8Êñå´âr8§ße?”åî—bòâWeÑ&|±£"¦¬èE�ÅoDŠU´ËL}$ÜÉ_‹$—H‘Rì°„*+{2ÏØ|¨q,@òd¦?3}–¿2CSV·c*t7û5*ÈJYÁ³‰÷ ¢ w‹?]á“ AžÍkçÉŸ pKÆC¢ýæöâª{ûÛýàëÝeßÿËàšp2²‘a.ýð1Ã"�Qò§–‡þh~¦3 ‹†Éƒz)®`È£Ù¿º¹û ß–±øºÿK_œ¬XgPn)˜~™ë.Á@Ï)%\ìF~©‹ Pü1eèÎ(NÍQFÇìhõX"‚bšëpw&Ð�”Haó?¤—°h1Ê•`A�_°�>€V—Þù"å)‚‚:Ã5Â|0<À~ ŸvÑêÐÀ=ñ¹Ø²!0ø«Ú_TàdS`#1ZQ§°HÏÎ#6O 9Xôø3óCùì-šˆUÜŠ*ñ;‚B‰6àa_Ã0ÅO}i±˜>‰ŸÒ&bã’WA Î Pb›FSdu ÿêóYŠÃ6àCÆP+€˜PG8‘¬�x<ÃØZ�ãZ¬¢ *ÖO6ÏœHü´Šu KM±BÚ£ˆ[X!ôìƒç\‰9dmÀsçb¥ ±¬ %Ú¿!1ƒ“úc ÜH ±.oÚžòA9€¬Mz³öÞ™NoÃzÅ ”»¼7åoîÃ…Ó•¿¸£dµúB]ˆ5V&k¼R]× û_âyJ8¹ ŸÉÚ¯�Nû“…¿Ö“éZÓ-8&}—kÇÈìÛ¡þñ eèZ7Šœåg±‘ÍEÄ8ÃÖ|XrzIÃ)Ÿid»eüû­£#㘚ô?ùˆíÒOÃâÇø-íSÿÔ‡Ê**±®�ëÕŠ¶;ßÕ‡­²¿�íƒ8ˆ::øh�QŸŽö‹CˆÞÞ|5A ;„+òéC{ÿÿÐŽ«vfÙÄÝ'Œ8Ñ4Á'ÕØ€É€´E«�ä:Òǘ‚Q�Å"€D§ó%qŠ+Òé|ìüƒÙ¶?Uí·q¢øÃD§f –ë¤ýö¦¥4mÛÆ1°ÉµÆ†ØH[!}†ÅÖœ­”kË�·"úgwMO3ÔÇ[˜Í!T˜ –î½YkI(rðò!KÆÌhw·ÚHM¹pôÝõîvÚÒ"G��ûh¦ûº6¶pZ°±ý¿ &šQo üÃðn²½ÍÓI憲Óq‡»»0iíšñ¯fû”é¡a…` Ê÷~xx¨–²�n/–]@.%ºú¦¥D ÜvôÜ_ †r¹¸Í�bÚÙ‚ù:'í†þ«uZ°ïa﯃qgMØ^#Ð œ|V´Â­®ˆr]lˆ©\þþÂÈYáÂŒ`e~Ø´4?hÆøÿuqFáX.Ïá§ÃÖ{κnìÑ85!79“3¨‰#|æÇx†è)¹¦ß~b¾·ÕÚ†ÁŽs�£ƒñî®6líßq²CØÒ5u:éH&š±õ ®Kø¨“ñΩç;[¾ðI6?å�3‹F–ñr ðm«D0,¢’Y CÏô¬´R×<(‚áÊ0ÿ€„H×4p)núÅå ‰¯Æ« Ëå«EAµG£0 B‰´ÏÜ�†œCÜò H·tÄvë88V–Ó8 ia×Fô(C;FuÛ¶ Ê£‘;¶ÑÍS1¨ˆOÒÝr§ò¬qj:Ša0ùhä�ºñÛ›ž­œJ%`Û¶v¢7j�׌ím2¶W2vŽmÃò­ÐúÈ`;`SèÊ«Ÿ¦TVÜËV|M Aš ÑHÕ„ ]¹®OórO«Sx0¶*„ZËd:¥¹Hâ™îxpø¿}Ðùgû‹b?ÄFûc\ñíÐH7‚5Ûü�3G û6¶õ$¤±ë,¨NC—yôëíEö(¯ÿ<\›ÒõüÉ‚4ü�ȤÅ,‰\ ùÛ(_o/mÏᎅAΗßOíý³ðØ…0¦ÜNø¤ùñøÁ‰éÑÉ,àchÓö~üŸ|a¬Ê�{Ù99â™g�œqºO¾…°Sr†�£ƒC«h¥Úäe-ìR»M÷ ·�èsÿˆBÌÑæ~ø1…xš˜µj:H ñ›8q´ØB#�­yøm°kkÏ”>jNî9 1OôlíÏĉÄç¥ [[R]äG s[»ŸðEsëL {ï¿ú7ïõ`eŒš{àwÐn“ÎÊ8ÍÀ‚£;þ-ÿ˜“­ÓúöÈ´„XÃ8ÝÙ#{ïÛHý÷ÛxÜ0Æo¿ÓÁêíJVgBä͓РÍdå¼ußæ²ËêwY ‡Ã½)~²Š?ÝZ 5‚&sÄ–6„ôÅYÞ_1QÝ%4ÆúWê…²u7K"Ñ8�|¬†øÑZÒŒÁ™¸®ÝÆe?;!xéC$WNäÎÈ ½¼ÿœŠ`yßM¦IÌï‡tÁéü�F÷—3¬¯Ù“DœQW4J=±ÈË®Us�i¸–‡¡@'Ð"üðvÞíV+=UGZƒ6àPÐÃf§e‚‡ÓKÈÚX[ᇽÅ2µåé]*uÛ>¦ñ*ÚüŒ«5ĽDç�v3%©} *¾Ž­)ù«fMj&ÜL&°%uÌ|®>3�‡XXš Â}¸w$ï6?¥SÓù‰ Á¸¡YZS3SH`;DkA02®È<ëz ŽBœ"n¢·ëÆI¨*L5©B’¢rŸvçG=4qƒèF“«†i—)<@ U ‡ÇM7€8¥¦ãy0 Xä‚MvÒ‚}Y!6tç´Ù¶ ±ŠSó6ô&âAÀØ*kFVmãí “;Ǫ¹Çѓ֩°“KýðÀjì =YÔȽ^Y1YZ òl¹Ä³rfuÉÌŠÀV‰-Fæ±å“ÿXÞjDÁWR?€Ë(œ]²gõ zÂd"¼N»Tß‹a/‹”!©hvÐÒ~>.6%~@~ü2ZŽí™°wßÖvüøÌYþÄ;˜Fžê.¯tËcŽ_æÁñÑ{{ÛÖ·ahÛtÔøzy¹‰/ý�‰ãˆ§ÇÑRGÕ,F%yŽÍËÓ„a:˜$±ô4GØ Â*Ãáé¶w]ÁA¥›¥�vK!���·¢AL_e"ÄMŒSÐC0¶9h VénÛÝÅÃ~ ‡5a0A€—ø‰}9�†®žÀ8Y©›«l•ISæS<åVöUþ–t¿ª‡ÛFlgW‚7ÇlbüžÿáøÑ ì|ѲŸ ¬ŽA){è5`p ¦7w. lol$䫲ÃÄfG@¶VÆJŒ³W< ³õ›á¢‹qçÒÞÁ[¯ÐMDމ¯‚¶À38%´ób«úí�šP¼®œ²Çv6µgù�"5ÄTê)ù›TäÕe9Âlâ²sÄåÆ1�{gþ…æÃóS¿v®…?<š ĵ*)¼èψ\ÓÁ�zoÝÝÝÞû}gÏ7ñ}µ«À Q ŸuõÄ�Y·Ü¶)d³ 1Â’î�>ÀÖÆiÆÉƒT­·È~vÅ O³þ±0¿Þõ@²;F|ÈîÞÞÚPŒQ�/²g¬�Díp=K…ÿ¶Ìjµ>ïU¶°øE±Þ8­¢¿È„I-Ö±¬ñ¹oJù9¬Êo"j+︒ø+´òL"E—)î×·ÌP_$ê äWq†œ+…"ÿÊѱDE†VàŽSö,“‹å¤vîu/Z�bʱø�y�¼­«yg—YÝ7œKCÅCü¡îúýœŸêò®ãׇpFãĆžHƒÒÐH©®;ÁùM{ß8©h’BŸ)ÜØª£(v�öqò,,°ÅzB’65NņæcKöÙCH¤dú/56,‰BD¼ˆ@ŸÆ¤ÙBPa6½€}aÕðW ¹Zj޵¦EH_¶·åއT 2îGs�ž<¯‘`@|†”b'9Íö@K˜8-l£ æÈ^�N™Å”ý“í@&µ&¡<Õ¨{ÂTjÝ}äs€ua�ƒ`¤èš‰5¸æ"Õ<—jÎSÝ*©¦"Õ¥Þ”ÀqÜem¹¶uº¼z€$ßeô¤/×<0† @£RXzÍ{t­¶óŠêÀ8ýâ‚ !׌êsõæ#1RhcáĽI ƒŸaVL+!ak¼žÈˆ@6´ƒm¹œq¥Õ°�ð_ýä¤~tôöùsk6³¢èÜú¼ý�HO.´ êÉds*™õØö·ÅžˆÙ\Ÿ�€øxÜìMn¶ÚÁ ð£Ó-M½´~fyR£ñ¤Jz©^‡öd<µ,ãŽ/I.[’ g5Áz¹<ÊÊ­X뜉ÓÈ„Ø(Lev¨A,ʼnŒžÖšt’Êp¾I!¢“ø¹ØcˆÎ®ƒ06§f„‹ƒH§&ŒÌ)�8’P¨Í‡e«y”*tRÐÜ"n’ª� àÜ&¦2ÇbMƒ”ÅIYåyâv’8I=bìˆÅ<ÏVÆáYž?OµÂI5áZÆèMS�¢–Ž–,½Ž¢ É"²Í,[¡PDÌR SŠ ú4qQv<¢TÞ³³³l‚ ½’âH… Ûmÿ’úaÆÐ~ “‹Å>[�€Ûì>ª+Œ<ÿÃZ$¶èvš]Â6ñ./Õ56_\2±W•˜í7ÜW¿°õ+u³�-Ú Àx›LŽ«_™E"üçíLè+X_ø„½–2ä¾Áºµö/B×ù,$G‚ª  OØV�cê·õ c§×èì¹]5n*ãöz�tTQ·;¾ r« €@. Á`bÜfƒ…õyÛi�º5‘,Êô&êG ‘pÇV‘‚Ô7C¾o2ÂtÙdbã¨ê¦–ß/÷Fˆ! Ê< žŒ³E°P{-Ôa‹f¡�Ð5z^*/Ëv�< 2'y®WÐmŸìÃü.Ó·d2‡CíúQñF&|ÁG@3Ítèã¹f†ôñA3§ôq¢™}Üjæœ>Ž4ó`4B¡ã©³"e¯4ÄøQRïŒÜò“‰¶"&¦íÂ0¿m»71Y±´ãn?€ÅSÇ%ÿÐüf˜Æ#YóÛ rr"{Ÿ|×þ ßi•ÜU6 @÷~„j;êÛ¸ _/#ûþ�#’o+ìÌ~¯Ýø''h(EÐ)šG§h;EslšË ý7§NS»ÝìBI=±Z½Ö|Dx~V_ž×ŒÁ©>°ôa½6M»Þ7·G�Œ�Æ <)~(ðm>âù½ñž:ˆ›ØwxÀYSq¾56éÌÌ1ñH‘Ž˜Îfy&WË,ßT%#«I'm‘Řé*%Bïß_¤ÅÔnòƒ ’=aÄý�Y¡ DÚO VÝôˆzH²2 UfÚLRÏO²‡'×E¹ä1í9•L•á¾ó]4pþêZÕ†É<3Cq³¯,%º©D»åq+ÏópQ#ý«f»Ãx´â*=p¦²Òr†,bWÎå›è¬}�8 ¸*Ð2ÒöA }0›wÀm ªÆ*½KM5ÛAî+@lÖ¬™Àh:¨•€pN¤�@hz¨£àb3€ÝÈ[ÀÞh]¿È�x 0Íz‘_Ì®³Ù‹7å÷%¨ãÇ너“*kr×t͆ñ?V&†^SQÙ©ÀLTBôû¥îîLaûÉžf»£Æ5Nw9F8ádzcŠ r€qÅy¹qÀ8Ÿâ|%ŸÒ[Z"¶°ö]驆™ÚG´èRÀ\±uOØkj‹ O÷StƬÀv¥€â,üJ÷MÐ0ñœ;ÁNí7Aoà ¥PÖxVjhgÚ­–«6�¼jvQ nÓEKAÙ!dÛ÷ûìt3S;ƒòÆhÏyçr+ßžò(ߎò=•ß°p|3“ˆ¯)ÿhoq“–M}<Ðê´aZÓN�{óµX|xâ#ª Œ5�°&ð “�S ÍÑ–K­Î¾Úitø #…uBpFr½.Û‰ò˶�аñ¦¨�ØŽ2dÆ4VqIJmóÄÊáÉI*1‡r\G–J›æÑQ*-ÁxÊçVšü újRäigV–&¡¥©Jp0OYb5£(•^€yz�ú2èªåZ»rÖ.tóÐ,bijá Ý©î hð ¾¶ƒ«�kŒ0ev‹8Ùu¤=ßž%‡~ª-Y„tæâŸP\¶bf0Æ� AìLÈÜVlnû°tÀ ¦ªM&9Ñ�˜…ÔÑHHÈ ŠiëbèL0¨fR©y�tŸÛÅp}ñú¾[°\GÅ9}7ÕÂ@"Ù+›¢l‚Ëôؤ†Iµ®3ÇÇËHú•0ó‘¹4Ðó ^/�t¯èUð ÍRã†CH'Ê_§—‹’|@zz¼9a•-�éB‹òÞ§ÄLag›ËIå� èÚF±3$ÙžµYXS”|õ^S¥蟯KŽÈ•ÔLbXƒÄGk#Þ$-×áes—#þ°.9bVR ñg]wSÙÛk3Pg+é¹Üµ;¥È?®Kޏeên¶Ü–©�.›†¬xÝx2Ì­Æç&o2ƒžH(ö6ƒM$ìšÙ| ð:É.l><“`9?)©Õ¹KY"eq�õ'{ãÎEYÒð�,C ‘Áöd2‘EvÁ¶ÐΔ12b‹j¸¿ڽƣZ0lŽjøÓ’÷µ°ÐZ¤ÕPØu¡UWx\Å�9Ó­çv¾r÷Ï3ÛÍÞp{–‡5$t©þ‚ס ¦dOÚQçÃ’ÐC oœMsºŸ\…ÂnOMÅ¢³9«Þ|”�âÂTž—Mó— ¦am óÇH—|Ô8•ŒÍ)#¤ ’PRËÍ\9mƒ"írøÇˆ�ñfO”©Ã+�ÕI›°Š46RT'ì˜Ò�Y.…†VÐw¹Í9yôTï¹�G.ÖÍ‹`ÞØ_VyÝ0Í=˜äf”õpã1“’S=l¢šÛ!�ßsÇkråÑH§s…�뮟ÎlXueà*bà,<“6 Ykžc5P<Þ3‡Ã\Ã;Ë¢\´Ýq‘# )Eeé”|?ÙÃD‹–ö¸ç˃û鼸cF.ô[Ý�—Z{ý^Ÿ_—ïˆK»» ¼ÈÊ+¯S¼ÒÛÝÃ-%_ïvú-meà«‹Vs¾¾×ît sN7·Û�ì@\¾7gt-¸«Ü¿öÚM4°¼�>À®ñZ0|âñ8Ö¤ÛÇrH·‹åß"¬Û�¯ºr‹·ÃŸ‚$¨�¡û‚Éýü|Å dNš¤á”¯æ±  SÿúÒü†¹xT’OP&dül‡xï×�bÅb†g®¤¾v"÷)ű¸ã|\ª4‹|B�uã´ÈÉâŽòqwêÆ<ëY>ZÖçu>N–¹/ÏQNÝ ½�¸h ž�‡Cûxýc�zËØÚª‚<Ldßâþ¢Ç ^Û ¼‚¶�‡ãmq�ª¹’å½-¼$3ÀÈ'!ÉÅþ�ÝÎ.‚©‚ES,²*PœÇ$°å²æÚv Ä>VNR‡W¼ÍÐP34øµ”·°˜Š‹ ÕÄO,LŸ ÅSœžŽÏJ˜wl‚‘D(š™\¯Ù¯zH9–Ëê=0ÇfEA/êw¾µ¥€“ª½IkQ¥RÇ,ÞÀ³ÎÈ Š8#C¯$÷31˜LHb9|HC;R†4T‡mdù¢Dù±Šž‰ PGy\2¾_Dß ÁÇ+)رá6ë²ADºŒå*×G¤À«wU÷ÕEQÕ&‰BxÝ –´<}À¸gaòØ® ¼˜ &Î*œ'h ü–2¡ëhkë-qï€ttï°Ï¤J .&o}TŽp�Y¯B¿¼!ê¸ôÒ ûŤ[4¢¹Ú³†3¹ ZÏ>Ò‘ßXo}ËöÖ„Á')8“�Éþù þ°ÖFØÙé4 í«§ÕÌ1Í[;Ω· ÿÛTÙ:ôÄ[¤r—.y¡¿úÀ»I37Šœ+ãß™ ~·ñÙüÅ^ð ~‡Ä¿¤ ø¾\þ `w  û\.Öt›žFý7m›/íGý7¤{™Fý÷rùPeH¾fûÕçô´µõþg‰ä:ù¹}‹}„?¬ ç�ìc ÑóåòcÊ­ µ�ß%• qò†6L±äÊX«áLu‡áˆ<1„£$¹$N¬Ä û+ñþ°J¼€ôïR•x±\¾ûo+ñÁ>ÀJüX%>@ú?R•ø°\ @å†Í¶HŒ,^L›D“zçùñIȘpW!�`A(Ï8Û˜põÏ óWû’×å=Ôå×T]Þ/—PyÊêòô^— S«ú›�Öæï¶PKè÷Âú è?ÄŽßÅGhÿ&]¨ì‡?ãÖë8j¿Ñ¨ýž46Æ%`ñr‡có�Ìo$PCR5v]û‚®­á_Vg—楛ê`”EH ÇÓ8þ�Üý˰I�hó5›e¯s³ŒVnX®pM£¥ ŠÅv È2.Y¸X’¬r0…À‚Bë ÝgÊôPJ2ûÄð±7ιǠ ¦�^¯Ø*.&󣬄®�lÁÞ×�Ôí$MpJ›Àc˜‘ã v„pÆë—Èh°XËæ$,�D �‚›p¨[ ¯¡ê+9õå:GcŽ�|И—Œs@U>fã|œge�‘&æ´�)»R¦Œ¶cwUdóÚã†ÈDš#3*è¾ÈÃÈŒ“‘ã-uÑMRªÓç$FTØ!}‘x‡µ£iQNLäƤçOA¹H cA ¡=+×"!ªaç2PÚ@¢ŒgP€ µ˜§k‘„¬=.Ø(E$~‚ÚG϶\&hHöSÂ0".!“q!™¤A!úK“Òäi¢-°[ïy`9Ñ_°Ébæ�îóæÀ¸ £ÈØ Åt¹0þÜ(Ò.pF“���Â:ßÚJñ6(i®ep¼Èâ±ë(åXGHÕc�\Õ4›ýÝM ?óÍ… go¯Á~æz�¼tµz%^ºäFqw«Ý–@ïkŽ®ý¹þªÌQ\¹p+Ž_aX*LhÉþÒR—¼«Ê%ïœÒgð‹— ”B* +ƒåç%d½Šý܆.‚`ê:Jdªa{´µÅt-[fªà£Wˆ ѹå_&̞ʜ½¼41•Zñr°Zˆ³¤F�õ5êÕ¨SP£¡ÿ/êÓ]_ŸnQ}ºõaOú-þ'}Ô[_§^¶øiD› ÕÄnužJêè“Q=ù¡¨CÂ’EùdÝ�ÚS,Ù$Ÿ ©6 {µ Ì#$ –ù6ðhŠÞ�•®µøþ=pþù`¾�ŠªF¦+éT$œ²„JDuj2·y¾ù�‘H˜öW�u³ Ö^¯Û2t_ e_T¹�±b7èl†”5l¥m 'cráÎód„=Xªµ!ç½Ïx‚‘†³–m#ãZ^õäL&Yï�S^‘jðø·�/¦�ÂçH¸¥PzkdѬJlèÛÅA…»EMvd_óÅ㬓#Òß÷Ó¾óœÄqžÝ4pOÇNQ'Á?#¼f��Õþd[xˆ;r™i|å Z™E.w“•¹×Ý[¿ižò)VÌ8¼½óÐáÞ§O4¼Ÿ>Ápd†{E>¦¹ëÒ2¡¥ªkèíM£A†$Oß¼ùtúæõÛ×üÅ &$œ‰X[ÝÛO«¢_}Ef)ÐÔd¥4ÜÌgñ¨%eö½UGµ…bPˆÐï$} Ï¿|` ‡ýc±g5p‘t˜´Rèa•¢ñ6ðGÝ8@ï�Ô Ë>twŒ2¦æHÇžx/{8¶Q|•͉Wf«ßè®sá÷°ÐŠQ­µ®_y²ÝÝæZ¿¸oÐ�7OÛníõÖ¦ñô(›­KvëÇÎ OŒâÛºÄoadxÒÖî^s]ÒwoŽEëööÖ¶Ž�ÐÊì5z›�ü¶z{ÈWËycß5CádRä$Ê2#[¬k^ÌÞŠVÖxI´Üg•9Ýϱ+»�fØèh�"%»¤)=Òhû—ÖÔdë#ø“g7Ì@º±Ý÷û^­fp&ëÒV=Ÿþ}tz#ÓCs”˜¥ðM 2¸3.wOãGËWJÜFG�äñ1Sp&F_Z[•þUÛÐÏf¿½‰%÷˜7snL/³‰úùÀ›!²½�t.ädë"—•R�Åžç~ÀR5‘odÇÃ@ÚNø«5n@yÿ¨@9 ÊVaî-=‘R´H¬{zþ¤‚ëN*èÛÚ³¹{ U´Z�¬™Ž™õ[”é!òä;ÊýÀ{K6?‘ÈM~T ùŦ¡pü†’  g®j§ä£vŒþR´Z�úÇ‘^Äu Þ|Oo Ut­VVwrF\0º5›ÑY­)cØíŽØPš06¡4£¦wduàAGò‰oêýÊJ3’‹:ÒºJ= q„5H âðp÷Lâ‘5`”  w>1™qˆ«G"¿›ÍŒ;* —¿J­PâInÙ*iMG�#mML5%]¶o+\æ7pÞë]Âc�.—ÈáíÝ‚¥�õVÎæ#ÇîÔÒÒ ¦¡Ì˜HytJC2ƒ¯jŒ4E\ðY«ãm�>zî|uU5_.‹2&uÕXGIÙÏl{C¨µ45¬¦´÷©V]ÜrSêØŠ÷dI¿íÇÛøžÈä™Z»\�„•Œn o jÈ^R=H†¤ïÈ´¼Ôm57ËÁ(%09…&n4’ã(!1¥åf5Âv�&r× ÍFP*af#»Ýþ3i7›=f6Òj¶{Ìl¤Ý鵘ÙH³‹±Wd,‚¯" ÙH§OV#¢“Ìôuk~ÞC·úÃTsĤ×ÖÜs-väöa¦+tÓá©�ùͯr7í�Ú© Ïž —ʧ5.©ÄEXM OvªCÊAÂNRËühäc=0?c5:Ý>ꌇÔ5(l}Âj¶{´1ÁùÙï¡A CâH>²p†7b_>f žeõ$lXžybßI­‚m[h?\]…xiŒ-T?i–‚V’a:ÑÀ³ÒDƒe@nú+Âl_´ g’&!‘û˜ �RÙDŸY³†£!Ó.·…¤8ÍZYñ5!¼[ Òö¸E’ˆ1ÀÎì|Ùs‹rA‘q0óÆQYãY,6œ}AŽ'ÞÕ±—d`‘�ž}È低èùò\<�ÌÌà RÈF$J"†E ¶ÿùùÀŽœØÁgPK�Šh@'>Y&ì?ü¡‰Ë}¨H~«pé[]M ��Rza‡ò[…«ò@H)f…ƒ¹@ÛÄtø>ÄÝ@H³Ï¦�7{ëzRM WƒA»µO"ð @°~,Õ$A2ŽÏØ»TtÉB¼yW†¨ )",#âdâ`°lB fUR¨Œ‡’ä7Ë·¾ã“,gÒéXßåI–5én/z†&ûÄSø'A_9¯±€r.VÆÇ#ÃÛ²X§ìñÂøC©NœyIÅ!jŒÏBQª¢z­ �tk‹W�Œ!`”r[Ôáþ�saö&ä$��R‰R=…Tìr<&’€ˆa,R|ͼÈ-é =Á¿XŽ›²á¦8–ú9Ù‚ 8íÓ›>3à”µ³'�¬ü‹r\=½Á¡c&7L-Ì1h(èÆ,Õ}G’¦Gå#™3Ð-«L6V- 3Åû:8±™¾/ k惦•׎à˜tÀ>9Tn¨A®¡oQŽ“j7qUÁðDÌñ× L œHI%�N@k“€Èz8ufJ¥Ôt‘ ãøÖó2%Ç‘p3 ­ggJ ž;ahbç?¸ÎçröÂc ÿâ9€Ä×ä€Xž§e9Ê ŸÇòlh[(r£ÔPKª8Š& JïPCÜ×wRv×!îgsxo\$G;˜ À̹�àB=\Ö.Ep (t-‚ä WyW˜þ"á&ùª“íí!ÓŠA|ßviÛWj¨â½µqaq cÿdÈÅ—¤3~ÒFö[:{H1àKüˆ6½²Â1Yöúö�®ÑC�ÊÎŽQ¹[i‰iMẞäùd,³ËÊÞŒƒçž8×”AO,é¾zuÔXeÐ0­}P€ÑÀÕó¡®nú»™Ê �r¢º7EzYÂMUV9TßRÔLMâÕF"SAò5 ?�œznT’ØÔx|6w`Tš�Çg³¡ÿœÒ<™Í@çDåYX4ˤÒm¦Ô¨|gd5?ž!G,r”¹EמÒx80—X¨MéÔZ”ÜÍ%ÍW�F:�ò …ú“I,À¹ ª²’ΣÆgã*JA6“ÏVH¥™ýÍ_2æ?6ÜR…I#‘ࢠ|­Ïåàð¢,…}žÀsYP·8Eùšb“ @FŸ‰WÌÔ$òi3JAºD´ÍÅô„t:Ë%eËs:©xi'Ÿ”ñqØT–ØÔäõ°T>~…²<O@¹¸^‘®檦&þ_»~ij¨D«™>11GM�TŠÐåê–šˆ3é¢`ú5[U¥”‰Þ“nXϵ-­e²¥â ²¢”Í‚°\Ò37Ch}žK”UH2Y²ÑyD™\ŒRrIIÉ$eöFù¤R_ɦ—¹L‰ö’ΓÀ ³”"Á¹ ‰J“ΑÀ‹³¨ÊKAN5ºA!7S" 3ò3%"Ÿ‰ë5™šKÎõ™tj,Lœ#IL'^™ÏäÓÉ_p{o¯o˜§ö3v¸~dšæw‘äI. ¾Ú5¦[VKî][î·Ë0ÿ^“(bx^&IØôS’àËà†ùÜÞþùÓö}Ï.χ葵>8ŸÔàã|›žE4–úP{82tŒTÏ[ÆðÏóóÑòü|Ûx40 }`S@qIåçò§†±se~´wÎÏõósòcò¢ð �ê÷éªãf¸àÙÚOZ Äí7Cod £„¡«õ¼ëÀ%õ<Ç $ ¾ŸÑ›h¯ÐODâU„öªj¡<Ñ5`?òÆônªUÜ/Š#³r±ˆñAj4‚t¾:Þ”¬+§ ¬�îpéMÉZÚ‹¢…[•‰wÎÔsÐó,=ïèq;Í`µJJŒò%JcK*ºŠžwÊ(.²Âv—Kº˜+ÎõKZ‡UR nÈ,s6�o¹5v‰)o³È”7݃q� ¾�@_ iè›·à}(oíB}_ê;þ4j=ú }üºªiôÒ_?ýU™9·Ô1€dË"uüÛo×°ØÐø8q–Qˆ¾ò|f�êO*.üÃJ^ãõHµõšxx.ï âoèÞKøôYgOyhL„.ø Oi}#3Œì)Ò¤�ˆø¼ ã8‡%Ù�TÆÓû¤mÑŒ¾Àÿ0Æ`îú F¦þ&ïFÿu^p�ÕzÒRÆü¢æGS{ÐÔ o�¬ Ó£ÇÌ<ÛOöaŽ¡ÉÀ~�Õ®y8á€Ñu N›èTˆ];š¢_�1V ýï�i¾ŽñºËwÝ7Oõ!ôíÈ«–¢s»iØÕÆþü±(tŽö!4"3ë10360—ôÉhî!ôãb¹Ôjüã/þÁ¢.EÔ¥ˆº.²À³ötŸÏ…536)ª|óâëÊ—EÃ7Ñïµó¦ nÁ`·³>–Ê™4ælkë`¹Ô§äAù’ÃX–W³µm­63ˆc!p)g$w6˜q~ÈŒôÚl…7eHOe|X! èÈŽ…T/›”c_’QáÅ¥§[[óZóg9æ¬ç¯í§zhâÛ:øbMµŠ7s4tŽ»î©kAè]á9Ð{zãV–1 ?V8œ�ØþÊ�ý…0� pÿrO�2°ùv˜<©â[Äí^g£Å"Ú5(œÑËì ±«×h°Ö_k×Y´™Î÷ä¶¶Š7çj<Çßlwƒçú�<ëg—yö©ªTÄûÁC§ÝV�Šúçw{¤4¨k¢-£qÇ'qwPÉNQ¥Šb­ïï5w7›Ÿ–¡ó“^{£½?¯O�w‰u�Ǭƒ”.…�ï<Îø{ј³Óò­-ö·hÉ•OyË�¸ÐžG Ô.pЍ/›ê�–Qg0&Þ2¸ïU±o?ÞjŸü#�É®Q›Ÿ,®²VRi‡UбKYªÏSnÎ'²f/ÕÆJµS `štºýõ )<Ðâ×9Ø_šA=´úÁ‘ñŠo ìzÇ/Šʼn›$Nˆ �îÂPAÅîõø<ÙòS•!†™��ZwÛ"}K»¸¶òx-qØÁlàÐѾ-Z„ϲ’ßmiéXòêpªDa˰�il© 0÷�dü[ ¾‘¾ŸØ6ã{§efî®çÇ^qî¾µÕHJÞú³7õ×bI� Yü¥�Ä•Á–µ7k\œ‘ÂxŸ2k�/‡ô•å\ à8Jn> ;ðìˆÜ³¥ #nù6$“á:-ºÇD|d¹¬6(”\ Kî6+ü¤Ûnm\i7r˜Útñ—Ï AVo�+´k}} %g‘E—&Ò#˜Ç.Ü PjçH`ÆÊl5w7.váßKOß ¾s¢ʲrúῸ üú/)2*BBáÍßLÎhÄù¾,3hTUÔ0ª!sæc¦®† ­×4Y¾Ðö¿µB_º([þ_ÞVáë–¹#’¶ì[[þ�êcô„îDÿ¿lEµ Íðð™l G”Žý?jŠ—4ˆòp pkÈãcƒR÷ù¼¾ ]÷;Ô:ÔCC‘rðŠW»³QgA6fèlïuÆzvN�gĪM‘WHJ*_cW~ ur9Šoè° Rô.PXTLÕ¡Gúø]ñ’…Pèùª7Å%ƒ¸Î!2Ø�Teè¦V•U"¸55G—¿yê¼Í’AÍ‹}'70Vº±ïl{ÑK÷Êßʶۡ2rÓ�cáí¿F¯·q�iíµ“±#öKÞõŒ4ùð чßý< N7ù2ƒâí àDä þʧI·cq*ŽÕµ%\.£ûé�ÉÒ¯ýသB¾Ü@_q9 ¿¹*VÓ#ËÚM£6%µ±€Ìšx{¥·[z�wDtPä`Òë¦#)Å�çJ.y¥\ð¹EÛ—¼—[Â÷%¼ u‡¬nç¦sUúÛã¢Xº¯W²‹Øe\ÚDY×FêÌ^go#"ê @¯ÖeìÇ[O–aÂÑÖv¾ìrµ/Ös=”tV�í§¤ñH´’yÓˆü~�/¹–l àåý" OÞ` ì\=å.oKn׈ŒÑJ„ê pÇ Ðd�Ý¥.¾pM7¬¥nž’Šä=|.‘Gô\d§µ"Òè×Xv)ºóé¼£¸} p_ü;žG�ÆS�äÎ/v2+Ö–m³HÂÂ�³�z¦®–¥Ðî´ä6P5¤åAWçI1†ñš+¨Ñ:ŸEJ�9±«z–С92Ô÷•" _�›cZhø{æ¶oCí÷¹óó¼IÈ¿Õxlgú)BÜßž€žD]�ø]M¸¹òœ‘ôý8Ó÷‰ªýüíÉ˃éô0˜"‘Š…5VîºbŠŠZ« uaº5hØX0°Áf‰�ÖsêÆ]ÂåT_J¹]Ot™r8Z-Óò×zͬw¾Ø˜%~ôÕQMu$z(£ÂüRöŸTý„IG¶\õõ¬ÛÍü0Wõ’ËŠ@•³[)ª0­Õ±ÝÓU´ñnc£Ãêd}É»u>rnÿ§KKÁÚ‘¬,ÿ~Á¤–�V»Wv5xl‡¡)ÿÑ1»O¯�%¡!ÊùóB”aßGÇõÅK¿Á·�üAÎÉ5+ ú|�ó7ÍФ Ö`Vo�¦…˜{Ê•¤õ Þí“nò|¼!‚Rîlý"–JWóÆIBŽÌØì¿–vrjºŒ)é¦ÿ�²V¥¨ݸo¾,µ¡–†r›i*Ýæ [ÈÆ¨¦Šàkt(_Lò—l#|Y÷Nt£51¹´nMVûeÖqpz3_6ÄÕp˜�ì‰azÙer)2މ{ž,gñ±?qoØžBU�ÑUWÌmý4Õ"ŽÈòÌs¤ZA?ØÑЉæ|­_¯Éí{…*ým“(Œœ �ü±çÔùW¿Ù,8øü‹Uyÿ«rþcV%Y“« ~�UyŬ T¸«ú¡×J‘Lã÷ÊYM™ÖÞÛkoô9‘pÞœ š°©ý_2Þœß�ÿ˜ñ²¦o»Ñܸ�”ôÊúÍ¿Äg@Hκ)n<¥neœ±dÓ(Ôwþd)ÎõíGçÆƒ�²,:=t3m‰ׂ¼ %§*[4fÙR“m¶¶Æ:sDV4÷š«ûn‰ô;¥†Å|�[nmñ…½qȞȭAYæ4oä�åü2îèý,ÆkÌrüw¢\·±ùˆ�=v£È.0’[…ɾk®ïåÛ*ûÌ]7›Aùî•¥™Ù T(ee­EžÝÏË 7ÏÖåÎïáãC®™½,órÞc�OÁ*ü:O˜EöTæ‰]tÎ#Ü�[[…~ðYÙõŽŠ‹lsÝ$3ÑUÞŠ{+­KpÏ¢¹ÓX.ñ£Î¾ªxœànm¹?×›nþ>†?ËåW¶äï¸;‰‘X%æ!;ÃF½?b7{èó®½2jú J¼ÖCß¹Í0yIWªC½ Õ!ßßöp×VÜÝaƒ€ÞMû‚ÛJ¯•µ¦"·µ‡Þ —Õ;º¬ãÎOhî|z°câiÄ*�+–¸¸ó<{íŽa¾±_m�QÌÌgöGý�1xÃHäKîJÿ$X Çõ‡ÚC¯|À§öP[™§e ¡‚ÚùùkÇÓä!ƒ¬’qüž~dÎߦgñíFúÇþ¢xþ jn-H^äøE¡ÞRÞÉ îîhØ/[ˆn_Sžñø[/ÏÈ÷uÑiíšÅÐñãðl¤>Ž÷r�hi “,*Éñ¼ ‡²ßU”å#—Ï�­–.§dm6ë ígï§WŸêºO6êç…:tÍaò7Õ™~"à{§OM-j´=®¾Ó¿˜Seü‹]Ñ> æ„[Í-m£4Fjúå×!jìRB2#¾áD&ÑÙ =ÝÎ$ä � `e�UbC?¬ÉEohM¶j¥�ẼˆvŒñ¦Œ{å†fåØÇ§ â[z�à/,ÿ¯‡*²JífSüØ�ædt¶\N·S "–œÉX5±ÇÅw/xýÏÓeœ—Õÿ¯8\àK]:Sz«ü�•ò�ß!£*£/\?Ö yúK&� RçH¯  ª ZºšÍžG'iÄ×Ï� Á NHêŠ3é.$ëðÊÏ•Fº«E�iåôÆg.T×vÍ(²Î™ngÓ­¯PëÚ®¥Š±ÎåDpiçKÜWŸ’¶ÖÊ�壌¥÷PR”’3¢¯Ä k¡YUA[kr_yO¯’®ªliWkW�ɵÃ7Ѐ¾Þ`*¥nõÄ·òåà-à½1¬›U6{S…ñ¢¯IÆšækéÌ_ ë+­”‡¶ì¥)ˆýs`]‹¥ú�=­Þ0Lïgûpkë�jÊrjÙ”—Pê@òõÂ҆°€Út\t_˜zéœ=ZÇIÙðm„$ïŸ'’þ]…þÕ«1¾ý�Ûo°÷y2�GL­¢ g?wx7ÏòÍyè~µR(%¾þ À3R}^Ýÿ‘&6~†N‹à¡ŽS'„vË%ã -{¾Œ,v>‹BŒíù"ÂwæMG<èzG#!FD¾�Z°ºè¡²²Ø©eÆÄe*DÝhº.VZ¤M+6xBÎóm ¨2§ÙM5öì¨\¹)ÄOìøÅ�k¹¢îü)2ŸG�ôáù·£š±ÃÞh”skØL\ ãÝ0|Êñ…ícMßê׆ÒuKM?hVE«�ZZEwüÀ¿�‹È@�r±/’«°ZåÒñq}a‡ÁD•½�­ÿ(›ù«}4HËZ1V_W·å�OÃ?�Ñ#”EéîqSFT2+tÄËåÑàWë7ýW*íw'qt ®[¡½ÇÓ©;cä¯JHJL"•¹lûÁ„ü^—<ÒŠÎA ™.±»¢n’wx\[{¬Õž¦{Kâ3 3pÑñ¾È-—Ñé¸vcßqÒ«¼ãâ3§nÍÖЯ¾;tÜSM³µÚwý�ÃøS×BîAÖ*¶Ô0óÏšo�¯½éäÔ ÚÚRC‰ŸzJ»½½ ê}>ÞYׄ Å!{I-,;}Hrƺj­ÃRG[t] }'~õcöÎëôæ�©�ûšÂGÔ·^õÐEƪÕb>Íc"u௠uT�÷HË[F:§…8+œË™0ͶF;‹ˆŒ½3nëØ ;"2ùëµÐË8ØÐ#LMPÖ'lÃ]%KÚ4uSSvMÊì�6¤bGÈ€ánSÈ0‘&ˆVE–€0•Æ4ÎÏ §C<|6ÚÚz%XÖ+h!gчuoe¨JI•^ó*ÂK ‘’ñ €^È4%Ü|~!Á)ýàø‰3/4dÄ0v/øJš`e)%wì²5ì�îƒÖ[m`OÛ?Ó(Е!<ÓrÙK¥¦#¸¦9FJ.jzt¿¦G©¦ÿ¨¡Ò™ê¾ é‘ÚôÉÖÖ$ßtã.’ WÛINf"ÙΨ¬�óûµs.Nîæ¬¥"|pß¶òè²öò,¿ËS6¦°d«{p¿ê*ÕËVÿª»fxÒÕÅÎ.¬îì~ÕåØf›lûs¿q/ógX­bò•áµ×o@:,{�í¾b´íSa;>Ý¿Xö'yÛwSST;ý²¶,$¶ È‹Œò~‘¼ž¡+†¾�X|ƒ5±o±8ÃjÁËú@ð°þ2,WÓà™âcŠ S†®/M¯¦Í—šà%W×ô‡4_M÷FJŸÈ…Ùœ»öÉà„½r“Ýó¶bu*±Øå2V_â�¹Ì�ÔòÉ,·(‹WGYæÌµ«s¼¼&î×ñGv‚›Šñ€oþ~@–·‡_¬w õ¡Gš…kë(5XË¥ª‡Å§$ò XeH”¯é3@‹¥ ³"HžèHI#–U}=y"å” ¾™ã˜}‘Ü5ar@ –ULüLÒ.{޿Ŧ«ÇÅåÔ±ø‚Q¢H¾cÊ3Oñ"¹žl¯~PP\ÊUQFÿ‘1�V|óú2Ñæ8@<ÿÍŽèÕK­þcoßg‚«;ôGêV†Ï{³ÞLJ{¯”Ƴ8·‡Èº)ê¹hÂÂ;tºÝ< B·‚¯ª9ãØ Ñ»ØÏÍ�¥ô½~!ú¦aæK„:Õ¼;Á8Æ©íy±ÛšìÏoK3Tè‹ïzúÐÂ5�ÝÏQ%4w†ç7�Fýü¦y9Ú¹25L�,5B¿êÒƒ{î4�ƒXoÐýŸ=K»Ð̾¥�ÑlÀL„?-K»„?mK µh Rc@ÑÐ+ü¹�žˆ7{l+ ò†³cyT¦7{êfÿo 'âsš<Z’æw•k¨Q�Ì“½p7yRUI¦Ó½p£r‡Ž”0}0�ØbñÙ„¡Ù”`Š]I*)¿h¼‚?ÏB5©†Éý pGö…˜‘8!¡O’6)ÇwÕÇUñÀÃ$_\¸3¥ób‚O?f'ÁÎ|ÃíYYÑË|ÁßåÓ´•x®@8£q"+ðȸsì»UæVñÔÛþß8¤‹Î!¾¼jãïJ¤³KÃXü˜žNÌF™ cÃ`o �e­—Ë£­-†q<Ê®,—º8Jþ‰›5;€MØPÄ�ñEzèRT®°­cl«añØq6‚¯Ùí7DØv²±ø’Ýk1€á0ÂÇß9vR}u‚ça˜Ê’ûhDˆõ›žDËØ"»íKž†'rÜÚÂ?þ ¹ã≈oṬO–«1™öÀŸõwºï—÷[Ì<Ž]U¦Ço¡âüáøf³Á,û»»è“ íùCÝàÏùB¿ÂHà ÂÓ`z{éM§Vhz³9Ûø¡'^,ÇŒ®½™5MÙŽÉÒ|£i3Õã}÷ðÅÍ‹òËÂÁÀúo,�ZðN).˜ùÁñtÅó`î $wEòWÌeeð /W¢ÙÙn¿½~xTÏ,èiFtovRnƒÃÚk·šÉ›Á›ŒÆvuÊ&Ã]Ê,c¥xGÆÛ<‘Òø•êߟ‡&90óËr¸ ¼M-Ýx‘bëÀܦæ* `ÕŸÞÈL_Š”‹œòœØÿÀ­:YSœb+óÀ¾{€—q½1ò¡3¾v­jÃ|€ùƒ)ûvo`Õ÷�).CtÙ)¿øþgˆèÓó}7|îzW×qþàMâk þ,ø~ ½�C×õaEö¯Ü¢zÙ�E,âF 'çΕûûëËKô·!ÂSáPT0ÓéK÷R ¾ æJèwåû#ûv§—ôñͽøì1ÙÄ�=Q`gÐ×Pê±0(éAð¹2gYGW¯|¤Ô)Å… ¥<’ÐVhEqG[[Üî˜Å›nrÎÉ CL“Û}“q„p®'á"Ÿee{¨Üf/î0ò[w…-Ë X$·K</tÂÌUïfªw dÊ.GTñ ÖãªW|º¬på©YæÜUºPÁº/lPIé�lª8çhfiàÝ0ä‚z êe"¡Ôj—Æ[@¹`pÉVeOÅ%s_Cîk5÷u&÷µÁö9¸Û’tKÂqP'†ÅPÖï –Æ4ž+V‹±,ù"wÇ¡”óL¨s±õ§„K·Ð¸ÛÇ“¤q·Æ:2QXj€ÃÛ‘Zw 'Õ§�à^ÙK\­Æ† ŽÅ†‚�\Õ½¬ëü:긊)‹ fÙ·qÕÏLíÜBææVÕ­šò6obœ#ˆ‰=ãix¥7M\¶AvTЉZxÛd0MœôzýŠ{-P3Ë%B.—á*íÇ{퇸^󴟘ΣºYì‰Ç—²&9%*p‘ã«› �ñü¨û�[uÎuÐðÊÜët6š¨#…‰{Fá—¬Óà÷–èùÙ©ípo8ª€ÔO•œ‚«P…BJ&Á ,6[e—`Ö¸ÊæŠyg è*Nª§SlCn¥Ø, Öd§B¾âm7÷�ÇÙtÀ ñt˜Ì‰¡C&<}‚¼> ã÷Â&.—Õá@ò¸™}€¹À‡�gI1 VÌ¥=.Fûc}b^Ò%þ9ü]¥Yó\eÍ”ëÊž¯iÅÁŒW|£ðøØÕh߇ûb%�&}¼ Øïm¼†] › y *áÏ7 ƒ¹Ž¦7µA?Á1O%/x,„uÅá(1Ñ?Qb"à7Þ>¢ê®u0ȩ؉ð}¯AšcVS‘�­9cXŸ®®½¿?Og~0ÿF±f¢œ‹®ÿcôœÁ¹°‡Ôãdà<ÃÆCtyüM{“d¢£´±5MâBN-a�èúÂYá£Ùëj‹™œ°îWèÚ§ ;û¤V\’¦�\:ý®iµVl¡MWÔ5µ›[é#DŽ·vKÖ<ÃæHÌž•ÊMú!RѽÉqwo­v$Ú¡'µC^jˆüs-¨šb¯¿þöë(y#óbRæ%$õ¡ÔÓ@©GRo{=ב~‡#ýÀFê!aVžÆÇ.šÍÎFWνv›käÌi¥LÔ;ÌzšêÇŽéÄ‘8uüP­‹¼\N�«¨|´'EÎ Â.N¡8^T¾Aé d :&0ç(FœÎôJ@alƒÐÅ»<Æ1³Å4ö¦ lòˆ™ˆ˜ñÁT Štá{ø 1/2à37ú*¢¢Ø¾åPôªäˆÎ½+ÔxºÃS¡Ñݸ‚pfOÆ™;Í>çÍ{�v²kôo¶‹寋oT±}³-æ”=¹�™=Ζ:`Æ«gWÞ ùÉŽ³_Œ^Ä”wô,=™ëSZ|ט6A ]´\É"�È„ºŠ½RÓˆËï'bvÆç—oª˜òn¿ˆl‘Ý”fg´Sœõ–²R{„ÇeS›Üjê‘ ÅJ€‰Ší�{r¥CHBs„ã ¾ÂÚ)6›­6’"^�ìí¡„ãX:ÜUª«ªAö´”c„î—…º(Íh™[yzÖ­¸þW/ |zÃ$¾vâŠhAò²Â$i‹d,°pÀÒ=Ö#\³4^4$'�è±™7¯0IaÞ�þxé]-HèÅM–Ä;²Um’ï[Wl;öº/w8ýO{ÁtkºÌ�K(ØóšëÏt¿?éMžÿ Ý+÷FuºÊßóJÌŒŽD~ãêŒÃŽÉ·Ôf^•Üo6AÛ zAGùÂM£�©\dÆtE\}µ¸eâ5�"�+)ÂùëÒO<ÓÊfi)»lÕR3~Ü€ŸŸ;­~§ßÛmõ»Ëå:!óÚ "fÂÜ_E—Ú­ú… “z©’äžçi¡'»D­h�@Rò‰lv…%í¯5L47ySa8&Û*’±vº�E} ½˜ƒ#s. Ã,C +�œA  %ã-\�¬4Ôà›×í@mæ¸h·al‹Aˆž;_ÝC¥âÌÛú&¢¾ßЇk†^l¢l£÷š`àa?Ð#DIߨ0Þ3{›ÈÀkÞi©Jmž6I[Håî³Y§£dß½‰�ýÀöðÐÝÃí•ųxÛ£?&º«`Ÿ �Äåñ¸S°F€˜÷Mδaο3²Ü™7¡Sxßw§É[X@�±t«Õ]ôïH=ÜLêN)©«T6OQYƒ;K‘¯Ÿ¨Ì9*VgÅx-] N6�­f0<…tÒklägkÉé,¿ºË§ëÂÈûF¸JG>^Ï|½[F!ùx…ˆ:òD‚Â} ™øy2™þc2a.øÇÄÑò¦é¾j0—@�4A�Á‚| =ÜÚRìÌY�PÎ~ u%¦?Z à჈ʶè<]öûYÂüwèç }µJ`¿ûY²&ë£Å=Г‰0rÃbði+Dg䟉v5czu€¢’Iâ¯Ð=>ð±Q¨§ ÈéAû©½vvžÀŒ3@¹X.�ÿÙím¦È ”q)œDÌ´f,[[)þ®DóS_Ç—¦Øç4Íõ<_êî67v8¾ÑÂ:¼³·Gœ)ï¬"æÇä© ¤Bå‡üZFZ ž”â9uÆŸ£t¨sð—+´áð(ðÝÑøOÓà‡ULÈ›»°þ„0Û1w¬YQ]9‡=�¡ TCï&³„8ØÃ…ÝX%›¶$Ræk£ÒÇ›ï«xAfˆ¹ä²JFÉã#—®²é:Ô‚{êøI›òBO”o_º_aÚ SH ”+jPˆ»>=ùÈôP|ötÂ3y0G!G@9X¢wo^V°þøl$£™@ÇÇ:4Fñ±Á½îŒƒiMÛ¡v_Q\ Wñö÷¼ŒÍxވͽª ž¦øL—�`ݳ€NP½S¨´.Ò�“Óô ©9ó _z¼3ÿ´måa>ïÃu ¼ <¹Óñ2Z5ÐåkEÿºÎfÁÈ–µ#ëÊ ò0Ÿ÷!ßp„ºªîp™í3*}›¿ûŽ:Õ åÀåž�{Kï’B\‰ãëÊŒÚUyHÖ¾�±r_œUB÷ʃ!¸Ý®Áô¾ •™Esw:eD‹/CŸCDÈQ 4cÄRžc ›÷ ñwÌ:¢Ð�]î4|kË‹ž¡ç—¤ãdK‚d%¶2›»�ÒcL•§$Î×þ•£¤cQÙ"·«•â�gQœ›¹Š!áUñ­¸u³d�&½7Z¼a l÷Ó'—“­|²Šª%¥uÓ˜ë|ˆ~±Pïtz{.”ê÷Ú=Å íuÚ]E õöú˜rÌC»­=:ö¥P·Ñn(¶3œí] ÍY¨ÕÚë(’³”-X— sÆBø¹à»„ð’Wd·Ù„Ð5GØh!Â+jî5áÏ×ëhãâv›»ºáQ�&&|Ê[Óì`k¾Ú¿ah·ÝÁ¸,Ôl5°Ýßxq» ,î3‹ë´[wȱ°ª|âÕlPK�EŸ´ÛzÂÛ�–†yÄÛݧÎX¨Ý¦¾|ÍC»}lÉÌ÷–×¥‹ _±Àn£�¼Õìbž‰�¤!øÂ*½×§¸S^@{ú;¯X³�Åý»¬±‡û[4ûè%ok»…¡çÉÞ.ÉGÞž.µçOÙÝÃÂßñ¾íR¾e“Fá1\»Øº÷<Ô¦1ù•—@¤øoÀï¼á�VÙuyá�FÆ®gªµÏƒ»ý=Ü£Æ"q»…A‡û�vièŠRiè§<d�Á±(·ECñ`³M]7±»-¬Õ\Äöˆxpo·�­›‰ØvÊBÔK¹… _»œ4›Ô¸+�† Þ…¨>«Â­¬†n\<2ÇÁ3Ÿòˆvc�ˆ_6¤‹u{ û¤‰uû&°tiŒ>‹Ø½>ÖõPÄv¨�O²)ﱨ|›zì‰ÌKcq$S¹g"v·‡¨^‹ÎïPA'2–MKÁW"¶E=øFv/uÄ3ÞkÐ@,÷‹ˆetv*IbQ}—½A=þKB4#DAŒo¼=¹KÓú¹è�Ý’ÓG9»8]™k{¿»iBíõ�kÝ%½J׋\P¿º!ÚèXZ³½Ýìn·zšx—Ô Är²C±ò˜*a~·—Î0˜ûeáL#k,|Ï ²" "ß�ndM$Ä‹žÎojÍh/Ö�>98<˜L@¸�¬™>>µ©à²Á¿T`Ï~;ze]+Qí[5㓃WÖ;5Ññ¡õA \8o‚EŒ÷)žªàéüÚ±¾f!ì²DSö%"¸ë)ëA6�(_ñ<ß”<§HÖA3YÙú,£æ©�îb­C¹7£K£Oê OT‚«u�Æžg©Ý ó”]`8S Ï�é%ƒ¾V ï�ÐÃ;s¢/ZÓàãÖ[zæÎÞCë^© ¨-W@«§ŽZoÔ!ê|¦†Ož[OÔšAÉBD}QúèÈ{3gj�ªMroœ ‡Wà¯Ç1@~Q GÞW/ò �On­¿ÓƒiZ/à›« |®¦<{i}TÛröæÐz¡ö×Q×ú#Õßѵõ^¼øðÖúU Ÿ½~eý–šr 2[¿«t@êºåº)ÚÀ.±nÔ™!Ÿ¨°b5é»—ÇG–Ÿ‚¼ˆ§BNÿ*8žX� <¸�ÉrTÐx²k…nj|­iªj‹kŸ“ÿX…†îÄ‹�pbE©üèÉË‹o)f¢Æ<…¹?O%=;~e¤!O^Y³4ä앵H7§×¸Õu]!ˆ âÕ áe^뙚/�‹lÏÔlOcTÐ3Á¯R½óÄõÇ·ÖEª_ã±H}›nÌk�§{Ö�»-8?Bº©tȘ¸ÂpRŠ<\àè7­§Ä{ KY_3Àf·ßêXßTè›g‡mPn¬™¤íf¯×$Ù²>—Ƶ­Ã¢8Á;?e"; ·YÇ©®V×nYO²°îžu”…õ:Ö™ ƒµÓy÷æØz�uçÊwcŸ¤ÁÞ4ü6öf.š«[¯R4Žì –œ7 pŠ›kÖ—à4Pø{qÃÄ¿$�…Ïa'0Ü™ÃR`½L`ß®½Ø�zQl=O€¸WMÀ�jU?ˆ´îÄz‘DøA Óûî²%þ�RMq˘útqe}P±A´W¹oL×÷jÜ[çñ23®u¥¦�î´.ÔžôÆ®¹§SLù‡š÷ýpJpáøbº½³mµŸl„¸ªEkœô²€É„2neî5÷ØznßéìÈ\: ¾ñ*B!ÀŠ¡Û¯À$ˆùúEU_ã`6s’ˆ È“dsBçB VÄ»@ÒɃéɨ;ÍõëïÎ4kçÏáAý�QíÁŽgjÎ÷úÁöþ÷�œßŒwÏ�æÞ%þ6]üm7è·y~3éáW×…¯1GpqUò !€(Ð±ëø§uÉcÇQýP GÜMÌßÓ/`÷©¾&øÕÙÌm*c{Tr¯P‡¾°dJ¹;á%LœúѯJ =H±»"Þ­=Uâ;Ô ¨?üµt§õ_Þˆ6�Ä6´Ç®ˆ�êOÏRmÀzc�o&Mª/Ö.é‘K§~,±õZ»ô‹ÍéíºôíÐïýbWôözô=¡_–»¿G<ý¶ð·OxÚmúíÐo—~ C›Êj³4}ú¥²:„¡C‚;„¿C:„¡C:”·CxƲA^ýÙ±Ò]Ñ�">¬?{£Ä7à_‹ ë,æ øw ÿp ;4Ð�r)&4(8´{¯×�ßfð \cŽ;Ÿ0ð<;õ§¼óÛ@�uüÓoã¯Ã—ÐÐËË^¯ŽúÐ}{,ú—NƒâÇô{�¿�ý69rÿ¢þêõZó§õW/ (…7š*+hÏyüõ8¯õçïJ¨¯-gdCÐ u`ƒç�Oë§I}pÎQ—7(O“fX—æH³Ó³o÷‚~E§Îãú©:m^1Ðe Å Ox›»¼žbÞ©3%\Ôß¼Ëóü•}þùsý×?ÊÒàï¶£ó¤AlYç ½Ó§ßƒ§ô}€¿OYÊŽ9šÖÏŽS½3Vz§‘ðÉk¢Ïõ³_×r³Kq0É»ˆŸïëÒˆ´'|JuDIaýÍÙÿ�ÅÐóËjȰ0üÍ†š¯¤·¨?Ô�>ý:ô{A¿‚F_ëgO×Löøºþö¹(Ám¯t�þ"ÖߪÌ`÷žëÈâsýÝA®æTOb’bŒ¢-�cú³KƒKCßüêÕß¿Êp ¨¦‹Ó~[œ€[êÑo‡~Çô»G¿4-”æ‚åsé›Ò_0x‡ ãH}‚Qî ‡~Ç4àkL.Ø0°ÒiâŒÑ@ˆ¥¥i ëãkm‚Q͈ßußlºÂ0!Ì*•ékY['”oBx]–žêà68Ïe1”Ï¥|=*W€°XÂ}Iø\ÂçŽË#gø¢ü—Ô®KÁ»?õ_Å"؆1GÖÛì¸ô{I�4Íë�ì:mæ�÷ó¢~ü[²vöÖ® ë×NZóúݵkgn�t:ëVÊ‹nñz9¦ï *}Òek'ý¤ã$ks‹ððµŸJiQúÕªÃêÆÖrg5d5ç“Ü eÿ4á¡v÷û„§Oxú„§Oxúúué—p:„Ó¡:TC‡ðÓ\ì;„ß!üáw?qè¾C˜Âìf‡0SŸõ/óáüØ;ö´�ä_1ªãHA ÛØ€êøÑºiÚ»>®×J˜ l|NìCÜo¿™Ù]í d'vâôÚK¾XHû˜}ÍÎÎÌîÎôB� ôB�jØ£¼=ÊK3¸Ñ£¼}ÊKK|£OúT«>ÕŠ–µÑêFŸê@3¾A˃æ}c@iˆ%kÐÂßä� ‡9$È!ARø�‡>dáTâ�úaH­ä!•>¤V ©7†=3œÒò÷âÈÇElÿ¸ò¾8ý¯ñ§¶sö þnLüí‡ñu·ÿÓÏø[ïÿCÈ…—£ÊÙw‚7ˆJÛ�:0eô½W£ï½S¤ÚÈ4Œ*ß¾©�÷)õñé)UF› ¨,ò‹D~!Tb�XAG{"öu¤Æ²¼GYÞÉX‰=fy�³¼WJì!Ë{˜å�©µ:dy³¼ÓX­3‹}Ác—ætUüVek»Ò(¯)ø%l€áß)d³²YÎÎ ¹]ÔÎ’Ü-m³öd·7¤À­´ç2w&¢fYn—R³$_PÍ�~Y•:b8¤�…ŸÆ#È®RŽ,ìÔw‰’Rô½uø¥ô»VÂû À·B–r,Oò1DÙ¬´�/Í®ÎS¿X -Næ™Vé©÷kï �%Ù×óÂmaÏÝW¾½•R‹¸�7q)w¥ t¥ˆE°,eQ/×ëÄwÖ‰ï¬ÏZ'޳Ng�8Î:ñš$#Öë Ö‚ÏBZ¡�¦¨!rkÂgMÄ'ÖDHiùCñü³°½.l³¾)–·E¿ýÅEn|’ÐV'¡­NB[�„¶: muÚê$´ÕIh«“ÐVÚŸÅõ?¯¸NdªR®� ‡TÃ�ZR)!A ZH¥„óc‹ú¸Ä||i›Kû$oJûlŠß.ð³x)ó[kB?K!å~‘B þÖ�8ù²Ð© …ÐÂ?°´¬±”V„Neh CŠÙ ¯ÆuƒÀC§24�¡� ÅJœ#€•Ã`iâ�†ÛnÜ}À]´"*ºmf§× 4ÆZq8ýPÇk Ì`º„ÓJê”5Ã$cèÙ³%¬èèdÎÐÁ‹èKB9O?’çésVqÞóÞu{äî0Ùµè�Q®7ôÈÅ[¿2,2dž¡Ø7”¦ßÐÖÿÛ0Æ@Ýà¦Ió½;7ò‰ÄUßç‘5Eß÷ûìði˜dfGoskF>n¬‹‘€q‰évZ£F—éÃÞ©«7[â{]…€åT6 ¯å«Ðt0Âx·ñCx4ïô °/9=jßcJW·ª¦¶Lf-Í�¡…¢W¦\ðS þ⺶— > àq>ís ¼ÈúUá4îóðÝ£\ø¿Xp£Þú$tï§>òˆ0š’ŽR`ÍÃd.oW)æŽç®mF°ºEÒ5ºÿš—ÝèɶëÚíígè¬I_N{�}9ô“™îxâØ�ôþÈ,tWÏõvIw¼íJ£c¤z͆ǶøÚA~_vÅKã÷Dü¾ç°—Äר E”~ÑXnV4unµ�ôÑÈ»¹§X´Aó”9›̂x”L#:/�ÖðE7¤§/´aŸçït¯½°TB“A£­­øùhÏÙíð;‡)£Û�êªà/tçžÜ.ÜIð~ù#Ïf6C× :[[ì€wI±�ï9�¶úÑä\¬Yl ²@MPë4ËÖB±å>DóFœ)Á›œ1š.ŒUW“Œ�3FÀ` j#÷F.FèJëªU’X1½Ãm^°6’ËéÕx€–8DhŸ"àNZ6¦±4sª–WÌNÆ’ú{Ïï,–ºñ¬Ü¶Lß?ßL¿ðý]û¡Ç¿-ä7;*ç‰VUðîiÀvýå]UúôæFgGFk­)g 6ô8»¨°ñTeoŸjh¥i..1¨&îAM™é)gJÏ@å|ðZ/M´…ðsÿ�1—ŸWYA`ú'ÁcÑ×�ŽÎ·0ºcõpÞG¸e‡Š É8Îc¯B…S‰Üa�‘ª³Žœ ]Dfr&9É ¬£éU4�oðbd ÃÁ2þÏ—ZIÚ·V”#aüà¾dÖ§Ñ„7ŸÅÎ|•wõ%%n°¶ÔÕÏí¥Ñ~PŸïÛ�ËÇs ëÚ�ù ‹7GÃV?žö_G?ÈÌ+ˆ¾l)žyŸì»èx(^li7²%LÒ*Ò|P À÷àÅ€Ô*{�²‹'Æ,äëo^¾úîo•ŸþQù Ç7 úî"kM³ôÑ �üBÖšŒµÖ­!ØGè"@ÙדʿQÖyö ŒÝ«?.‰Ì3haî:â.®âñ�Á�4:³`0@“ %�[£×#‰E¶Ô“ÑfžÁX⚆6GdWãúfq(ÒÑÖ“�’kKBƒ;4F;KÝî7“¦üŠ›ca2¥”…¦©„s*¶JøkÊ0JU®Â¼YØfm)çŽEÓF ìV”ôÉZÔC­&ý%%âƒÏñG“ˆÑ6Ûÿ²\“&à2§™b=�0}sEÏ.(ŸllÞA j{µ! ª®…&îñ¡?Ü¥ @�_þl­ÀëV|lzÚ z¤Ñ¢©Ö1î?Ù�Û}È|"~m,}0k­÷úN:ï9)üÎðefxA¿rù{%š1¬ Ø0w÷‘L"ÅÕ�´–n§£hÝ]ÔvÍ퇩ÑzÝ'Z}Gk‚¯¹JNqmÅmœ4µÉ,À$¸6šz”›7¡ Ô‚±#ô‚õóèãžoUŸXVjUÅQEòóÏqÕÖÙ´D»»0¦îµ}�ñüLmo™¥ûÿÓZ¦„ÉÑÚ–ðÄ Ýñf4cÝBU­±Ñ)£ƒ™&¦/G}G€VÌt]ì­Dq�E ÷8–Baƒ®šõ"Hëz›L�™šô1ÃT}2X´ÑâÁ†¨¿¥1oÇ¥±•L'¡^„:¢bK¥jÅôïÖ%„Y¥ü€5$˜„×Íêù¶·³×a#Î6R½šJúã«Æêí¦ ±»�Ô«ï³t|ÅqXê¤?}âIÚ:¦uœ”mËä’ÖLgSÿÞG �®æl;©³oÛéö®?@©ž â$Hæh¾ „½êù®ç@Ù—ÔS½V«ÑîN ¿Û¢”ßë2UmϳµW³³Z ø«zkÜ`=ê^-kûÎ2=×÷ñŒ ¤3JVç� Œ_ìcÛ¬“Ââ5{îž<-Bš¶ØˆWì’úƒ¹ÛÕco.�†èÙüþrîcOÿ;¶°×i„æÃ˜f³'´£‹Ñ<éh3¬Ë�ÅyvÇÔ–äù«(Ú‚þ; ú—Ê$ÂS\üÓÑ!Ÿ¢lL©@#+‘ Ãã$FÓ•Ê0Š«lÿR5×g*4Aæ!!ÓPà[Ü']—kkZSkkäKºÒÖ`žj„«X+¼t˜5¿œ^%A4HºI‚ .A&õÌ…g91�õõ€¡33hÏvÇú}:Št-Em®Ñ&ÿpZ¾Þ‡*|]ÖúË(l Ï–µfìeˆÆãé[‰Òïjú¸Iqž0 /4‰ž¡â0Jº0šj„ŽÎ ØW]±Š±'Dh�Ëš¢GÖåx€0vGå±±^,KMc{9Un�¡{6ôvÉ÷+ôWÆM‘7™Aj^>¢�iã�ieeʼŒM,+ÅÀ¬µ+jŽÝ¨<.ê,½¸³¨ú¾/1bŒÈb¤rÇ„›wwÛí=ž¦Yw ïʦîÈWÚ@ú\ë ¡¡VeçÓD*‹ûÜ„õ´H+Â!|!c«Ú,d¬“›P 3?!Q�tÛÐb\ÁèÈ,Yף!Á¤wôõzôÝå¬a,&) M æÚÔf§ŠÕ)ŠÕ^™¢±ˆÊ6Ñámxý0�+uþö ˜Gn“qŒÂ÷A-ïÿYÎär4œ£Æˆ9½à[DÂ#KÞ'ÁZê‚L�É,$kNÑéÝ9ØX,ÍY¡b\»ŠÊäÙƒLÕà­¨8:°þ{Ú—_Šo­Cr*;vLã­QB¿¤nÓ#ô? ‘2£ðëŽ[D»ù4ŒÄ‰ ÀhU®¢IsjFªß+á¬å¹+`µ…¿©e“¿9ÜóTè�ÊåÎri†9m “×Ã¥9lN—K)½£EÖ• Á|ŽÞ†6æÓ Ö!y ¢÷ÞXȰüè,Ú˜ÆtÜ4¥£<‰Iì¢ ¦BK˜K Ëà º^ëqÝØ˜„°Š,ÍX2ûùcôûÛw3R»HÔ‰€ð3#õÆ2ßWL¦Œ¸?¯Ìª<ôöº˜ÏwLË \êÕ�x|³þ�Ùè�,¾ù›n,� ä£H¸æÐá—ž0c8fVu(ŠÌ¬O‘cZ¬’‡ÈÖ1Ç¥f �¾¢”w?C¸Iš–®Òt"iÃÕQxWVÿ2ˆçºmt܉ð_ ›Yh7?«æÌê¬o‡îÀºÁ†@X~Í/u­¢)ËÄÖ\fÈ‹Y/]`¤’ð,šëe:6aæZêR]RÝË:‹ƒ{MšþG#꿆A¬OÛnk5;cŒ’ÑÔœF.`Énô ¬IË¡Šˆn€)tájjî‰Á&TR Ä€³L™©—Ï4 Ÿ(¬‚Šòjhb?ˆ¯‹ÜWÏÔ~²í&ý·lÛþ : ›öóOGlK Š,dª:upI%µ¼w4�Í*¹ƒªe¾¦JOœbgN`xÎñÓm{ãLXxom°Y䬷�ÂRׂ䮈¼²Y¶ñ·ùh-ÛÊ~~Í©ÉÜix¸Yü�;Â=X€Þ-0˜¯_›Ü@c4ë[=BwåoI © óŠs¦g»0`@">KÑiŘ­Mܽ0¬�Ê2m À9áÐI9z¨Î¦œð`†8Y‹8õ@®$%&¯eŒµŒE‡«&áHwæ&ƒ¹PNÓ˜ÿªÄë=Éû dª÷«ø“x]qï«n§ YºìlóÌpn±\›'\®Ø7+™ç?íûl'ZÙm€AˆÜ\ˆ…Ü ½'S�(~ YÞ6›Ãx:�‚šÚ¡P×ó„¤ùüy”ž@ÛÍýÔ©§Û5T€�ƒÉ, Âf•‹ F›µ&ó™õ _p÷0è¿ïyÆA�2/û’Fª]Ü�b:(:˜ÓU„ÞYU¯Œ–Lœµö+ü«¾zU=>FaYp�MO«jHú:¦$_pѹÖ':ï•׳hYð¼?|‰Zf¡ø«VþòX¢^ÅÙ`;+†â1;Sßæ”?^¥Üië¤ó.mUϘç ScÊqU»(4L©`j˜¿ªydZ%é –®®ñ#l÷8ƒÊ+Å�¢ru¬*¡Ærk% Ú�gÎÏéÌ©ŠÁ÷PM1tìçÕ/¹næÀÔLVAqÂyiâubÂRS+òñ€ƒ]�¿³œm¬F\ÁÖ'W5GžÊ•W‚Ö7´˜‡èﯨo?öyÀ[´SÌë‰.ÎÉ=—œ¼Àî­­¹KÇÝB }Ž]‰2•$J*˜=“`¦�ʆ(ÄxV�— `Oà'nÏŸÔèJWÓiòW§¹½Ô£L¶‰èÅખ¡Cmd~ÍÑ�cgfB¤¨i&Ÿ³C !Ý,ö—)în³Ÿ�¥ñ�è�ò< ÛW 6ðèrûd#Ütq‰†%Qì³(¡‚ -ò¿¥ÏØN8 N܈‹U¡²mž U—d^??HŸoŒØ›‰F.mh¸ô&n¢â˜a–Ö—eÕ8×t«lhhÏcÓaZV˜5'iU=ßÒZÏ;œ9˜s‘zP“–PmDˆýT{*Î� ¯+BaÁÉÂ×öÌaH€‘Ìoòo�*ª¨“e:Vov/£; ®»B¦ŒÈó‹¼–ª'µË_jè~´gͦ3]�Þäµ7L󌾘»™ÓÔ†ÏQ‡ks5i¾ylæÒETºR–vEI}Uf‡_ õø`: FQ7™ÁÒ4õ»´�’s¨§v�¾_ð°%òƒ×À8^L§ã0j0yãê'îÉêõrÞ_eÍðl&þçù‘7ʬÅ1t1Eͺ CÒܶ—íM÷� \·ùÖµ[o6…‚û-WpOÖmzo7�º^bzĵ±OÓ|íN .P‹:5%ê†EÕv!ÎXÁfÛŒs Îǃ¦ÄJø2×jÐ,¨ßœAù3Nú‡Ç“×–wáÈ£F³.ÛµÊ�•ÊñL79•‰§¡;í…Pt´Lz (Ïh†Cb Aéôµ%:r¥ ×ÊÐÝ#+ÃöpÐEUO²µEêØ+ ƒÝ-ÆÖ3*æ ò#Ôêt˜·µ%ÞO²�•Ž�¿mE[d4’yÞÉóá~—Ø´.04óö%C¬£y%Þ2Ôµó¯lû­ï�žúW§Ì„×éñ~ŸÒÇé 7n}ùµ¦‚ìwôŽÆ½/Þ.àûsƒèZú�’�Lê×¶ą̂ CTÚ‹o‡bwšcw¦$y´k&‹µJ¼Y ÒbKwßs ¡•Ñ�gõ»ßz~ Šn¯Ý}g﹘�™‘OFFE¾TUV¼xÔòåA Ôë-º©ô‹yÓ婺Ñ+ëF$xWÅü\]wxµªê�[Y?ócu½“•õN¨÷ ?ž:AáñkiËlc?ÚºþòóÕž:aavWá.é8[ß÷¤´/ØõÔÌìóå/íòú.éyßýè‰'}¼ßJ™ðÒÌK'žMÞ®ŸN†ÑÛ�ë··ÉDœñúdp¿‰7}¸j>ˆ'çkþ¢ÙÞƒ£®¾bŠ5Ų¾þqãöãfbv{iýãOó ÕŸ•Írng…�‹‰õ^ÿäödõnõ'˜±ˆä·ÿ*¡³"’ß î«ñÛ�‰ÙS‘ÿ;Öø8ù¦æ�K}Œë[%–9µË îÊf¶þò%‡¶`£áço™îi¶ö•�)í|磟y;hùfr¼¨Êmîš{ij)ˆÎÊJ®Ýiñµ«·ž÷¼mÇNž÷\‘Éidm»)QÛKo§]ýr²îöVZ¿<ËÞ¶ìlr<¸ìŸ÷â_ª3ý'�RÅ«ÁI<-0¿ó·ìm7›<;öö”v·³/™7:ö_wãö‰cdfsîxÎrz�¼n�W¾Ññ�Ϲø› $±“èDžÛùowáwzáw–7 ÿö¢šÇ÷Ë‹iS_6÷·ÿ�ïyܦNM4–q6^ƒ3Þwvã¯ù‰‹`Õ€‹¯"œèU¦LkŽ·2/ŒLo¡Ú £�O昭�û{sÜyyð”bÿ§ÏƒáU¼zÀ¼Fz7?|9µâöÀ’ŠG÷~–s¾ä`yûbá&ËŠÇ�J—*Î&‹ÿûøÃàÓì�0ó<ߪGŒ�ûß¹é‰O+í»øô«î›SÆWs£»‰…©î†¼“otþÐç±b@ƣśžw—˜ÞX­Ç ’™»×'Ï?ò0{¾bã*ñj+sÇizÓ‘å*í›ÿ‘+ê�ä\qöÆs‚‡$>L-8}Ñ9W‚©´ÈäÜ©‰iŠkמ’a˜Z0µ™¦%J:ó’yMW:lí˜&ó91ås�«ç—_g`ç}Jü%ÁS©é{|Б/Ã[~Ä{ß ¾&|ÍEm¶sg¸­n˜�`>z¶e4Ê‹½‡=P@maI­ð: GÏ¿€‰ �%Ôh/b½bé±àb•’êR 6(îS²¿Ê®S©è+v”ÁC6ÉzJ¥ÇýW¢—Jþ6^ñ/…”„�QïVT²[yŒml»û+J0áî² S –²À/V?/V?¿ª�F˜OsüÒãžµï¯ ”~埢�>×�_{ŒÙ³¿„9ó°s}®,¿µÊËîaa·2òÊË6ÈPr@ÉÁ’­ÁP¡©•ÒÓÆ¨€¿²Œ‹’w”¼[Y—¶W@TY¾žè„ ½_ W”ÐàJë�Túo©GáÞÃ#öV{+ÕCqTŸî§)^]]ºŠœuœyQÃwjùE¦GýP+ÀTxF#–­áAµÊ³±¡†9j+"k�N­<¸ Sû/…/ ³œæ²hHPø‚‹*`¤ Š+.làgÁŠH‰‚êSÍHÝëÀ›‚‡ÑY%)xè3xÁ¢E�Bì¬tÛ­i°7bq‰`9°ûë\õÚJ4¸ŽcÖ—Cu4¸Q]uEÏ;·�‚FíñÛàÊi„Ïx—QƒM­ÇàßÑ×ïrÿJB“&4_[BTDÍðq߆h —Æuûa„xYøør1ÂB„8Q¸äDƽB.¥pyÈ …X;¬®¨P|Y  ¹�Âö½fD¶èµÖŠXÙªSR £…W·šOEø† ’»'NRŽIÛÝú¾göMo`=ÞÃíDoÖ§w²fw¬Oo.Oû£ oµŒÍæó@÷«›Å§__oNŒš=“¥7R‡;v¼ÊO½9þÙrßolÌŸ]¼Am¹›Ç›VRDoÝÎ^Ÿèáõ‡o;½_v¬ÔÛÞ++µam÷’Z� u¤‡µ=ÜÜaé´n¥6q¹‰Ž¢s!ËŠ’–—�ÔoúâýÂôD»(\•›¸Ô}j½ì¸:ï»~ç‡þú|ÅýUG‹-}¢hºüZ>«xÓ˼Cñ~aUOUÔ]_®œàH‡§E¸ñ¨N*iÝýk¹Î3r�'äÚ_ ×}F®ý„\ç äzÏȵž�ë~�Üô¢Üíuúä�¥Ž› ÊHPB‚믌ïéžÎOr¾;»xÁQqËúOÞ¥�Cñ'EΟ{mîZÛ ‡å,ïvÎOű>-ïƒ*gÿ.>þžZ{vßt¤ó ¾Yñ²ø›Éïm%NC¼^x9Ž&ýxˆØŽv†oºã~tö†œ´rާ9³@=<¯šóñÒk‰·ÇÛÃÙöªàþ¼Ü¿<óF�yÐûkîð!ê˜#ÆÍŸ,;û‚swìïù<£ôèá„r>úO{búÖñè­ñ½íù ÔGfV9{;_GŒN U¶r2/$ÎâwbzÔÕÒMƒÍÙ¦I÷¤™€•b*`öÿŸ9ÊÜ4Ø´8³i²±³ÞÛ°?ÏNÆè™‰Å{I›gn%ÞÆœV*µ ùq¡ 9yeY;÷çß§æ¯J­YΤñÓ�.cH—?[ö›Kƒhøáò•ýé^‰y9mþ¯e'65!žL'ÄKÊ_>ۙ߱š�ùu÷þöÃlc!1;»yVª®Á‡?ÄÞü‚7j³ç{?ðôï¤ï¿øJ_r0m~Ó~3øE¶¹©·HúqtXË­étŠA1Ö:k‰YõñŽòÝ Ñ7¥unøX¯srÐQŽIÕôm5E�ßù/¾æ!ç†\ü*2¸"ÑÕQ� c}Ú zÙ§ÌôtÕ˜®fdÖ¢‹ ÈÕgCN ˆZÿ¬¹–Ú༠1õ#óßD6«]œ“ysŒè›žH�þ 9‹ £ž!¦ŒöÑ eýÞgˆa雲þXÈÓáñ•D=Ó©ÁÅ…cÀW}ÊâëKä»Ô£“s2ëÑXpëÝH,õþïR[?ë‘yvbÂê“SµhÿgßËQöG‘ÊöÇ8ÊþÔû““>„¶ï_ãÉ�ˆ‹¹]« �ãkálôMf 9Å?§ômL. ù 2úCd8êÆà�ñœ>Ðþ.Š"Cº†Ò3¤oÈgCN 95d`ȯ†œ24äÜ�©† C. ù‡!cC&†\rmÈo†ünȆÜò'¤kPw ê®AÝ5¨»u× îÔ]ƒºkPw ê®AÝ5¨»u× îÔ]ƒºkPw ê®AÝ5¨»u× îÔ]¡nF#)jþŠŸ5/N Á›×# £sC¸ÞCãYatMæÉHÂÂÓȺ1<½VÂA¯gÈddþ©™áÅIÏ� ˆ}qÃ׆óz$ÔáÍ�Ì.’˜ô ùÕY¢áЭèl Ñà'r 9Bh_+úí ‚¢Vß°˜A£õÙ�“!䯋‰šÒ`ÈÖ`,ð­Ñ„²‹ú.†È2¯‰('xO;¨z{0¹„“�!�OUáð¸ï/ûúïýäZ½rÔÿSõŽTï˜Ý1¦ëœ#¥3¹é"Ÿèüñ‡êunnäƒ�?ÿüSßoYõ#}»ø�¾¯™T,?Åó-¦ÅØ ¹’’]%¾’Š’š’@ɾ’wJšJB%-%J•¼WÒ‰“|NI^‰$ç%9/ÉyIΗ•H|~O‰tä¥#_W"Ey)ÊKQ^ŠòR”o+‘¢ü‘)*HQ¡ DŠ ÒQ�Ž‚t¤£PU"é(HGA: _ú‚$$¹ &$¾ ñE/ dQRŠPTÝ¢JKÒ[KI*KRY’Ð’0—„yWv%`Wv%`WvÅç ½/3ùBïK”¯&ø’çKž/¾Ðûªë ½ßP" ùH‘6_Ú|5ÆW;|5¡,•eU+«ZYÌeñ•ÅW‘ÊŠTV$¾"¾Šø*ÂW‘øŠjT$¾¢j{bÞßžXö£ª¼ªàV·*¸U±T%ª ‹¤T…ª*TU™®¦–×ÔòšŒXSµšàÖÄ\“ÊšTÖ„´¦î©©n j�jBHy ƒBA )�ZF �à¨Y�tÒHG �tÈ´ i]*ëRY—¶º´Õ¥­.Ìu)ªK|]âë’\—¼ºêî ACªÛP݆ê6„´!¤ hÀ'¤ hZCÐÔ–w’Ò””¦´5ÅÒ”¢¦XB•†2g(¤¡ŒŠ9”¶PÚBÁ 剡ô†ÒJo(½¡„†RJr(å¡LÊ¡„jQKâ[ßRcZß’ø–$·$¹%É-InIrK’[’ܒЖ„¶„¹%y~ )ª¡o¯HÛ�JÛ*mKe[�i‹¯­v´%¹­æ Æ¡ª‰åH::ªÖ‘¼Î¡ ëK�7Žë–û×}xë;Eð]b6×UŽ «ˆrôq®N€÷‰áò[&¥VÓ¤p`stDî€øÞ!z—‰ÃÄ�<Ñ*ß$¾sÁæKÄð±¿DçªÊ·LD§”¨˜¯ü Ú„õ¦~WöÍoø kù]xŠD¢X� ·�#‚7ˆÙGä3hµÌP&Òð ïá7 \‘…}Fˆ}ø÷)m2RT$³ÜDòAž”AáH×v;ë {â/ŽŠÈ,1�”ˆ»!˯+Ö”�\â‚*q¥ìçv¹Œw‘³KØÝÅþAâˆa˜kÌÏ1@¤%Ÿq¾ …üf�”q¢ÉXRc�àªò¹}°ùèòëÔâJ+·„¡L@m3¢—ñ–2Q½|À�@¸¨�_)’Ó4©&Ìb83ð®=&{¶½’tíí30G¨â'UƘFS6©šÒCa¨úf˜P{km3Zˆ¿F¤ª15¨1¨1†ÕZŒï#D•!¢ÈÈp¨6GÄü"¡ž!'`� ð™ eÆ3$ÀI4 J’¹ËuÍÄxÂ(0*´:`fì y€¯Ö±@�@]'Ô×kBUg>Rï�VÌà?3‚z~f �W°Ì>nä̸ÁÐ@�opE4ÀÓhÊ& ¤5hWƒOÿoк>ù޾nâKÍ}RZÝ4×f�±�ë¨ÊXc®p­…ŒXí‚$šQ„ö†-¡ ™†ôoH”�–jfH‚ç=µÚŒE„ó�¨r5uŒf6!£Y)T­Z•� ÐÈ|$<ì�J~¡Œ–#†œC† =Æ%âa‹«¦Å £EßB~‹ÉL‹¶·ä9ôѳš#²�70²íAÓŒajQ›(ÚÆí:vcÊׯók»´N‘á¨DÛ¹Ò;q[^òEÉ-×úËÞ"þVž©”[ •Ê*µR¤6iZ©MŽ � �ÃÇ9xx\x\x\x­,9[)uAh§R—T<6m‹‹›~¬jƒÖv¨ëÀéÀél)u)uá¿��mNðÛXئ6­°±³M[lZacaä6˜m0;XÕ³fÌVu°ªƒU<Á­N ;XØÁÂ,ì`al½ï€Ê¡ßð8XÕÁªØ°9[úí‚Í› 6_u±§keHÉǪ.VuÁé:p‚ÓÅž.8]ìébOKºXÒÅ’.6t±¡‹õ\<ÁÅ\к uÁébC× ÝRy`öÀì�ÙÞöô°§‡==pzø€Gï{ õõ—Z{z ô@è�СB„=zYdf‘ Z/‹L®,¿õÀœm´iЦA›m´iЦ±m«¦Á™Æªiì™vRxèý4˜Óžl’ÆÒ O§áüið§ÁŸÎÂÎ4þ�&¤·Ä“IÙ¤©ÉñHÅŸÁ72 Ï€9ƒ…3¶0dðÛ VÍà«l›m_Í€3Î ›Ác3xl�Í`á VÍ€0ƒ'd¶@‚?d°mÛfÁ™MÉW³øjKfé÷,¨²ô~«fA˜õLJýž[lY�d±U6‹äØ>/Ël'ý-z*\�ÇýÑñâö[‰åÙ®¦¹šÙr#‡)]nŸ¥ZÓ,ÉÈ?$¿Ãb‰)fÞì³YD±I”/“Sa× iy¦ïù}–mûl¦1qÏ3Áš.Õ5ÍÊñ»Ã‰½ÁB‘�µ²™`™ß,�˜¾Xlêì›íó› e�eIဖð…ŽY>©V±Êoø‹è*15,±´(µ„³Ä$lwO¥»ì&ùyRœ>‹R¿BmôÙŸñ™ÊûGfCÊFM¹e–4â©Y¨0¬°oSyÇò¦i6½„m™{,÷؆©²ˆ­21­²®²ÿTe§¦ÊfLõPüU´W;ìb1e¯åÍ–¥ ‹´˪œAÎ,WXŠ0Åœ.`̆V�¥¶ XNX&h“Âóž½®÷,o˜þxHÉu¼¢Îæ^�Eo�ͦ:–ßgúÞ`©Ù`ªÚðYf”¥±æF�ü#ÙðK�&“æ&þÓdÁÜd?&¤4Ä'C¶Yÿ‡½kaNYÖ%v�¸ÀY$^¶BI $‚$Xƒ9·| I8!� dIóßï×-‰—qvã]ß:uêÆ¡yô<»g¦»§;�cX`Év_Ø�@ŽŽ2烆l÷¥gÙî2'áräÈÔv¸¬öÙÄ ¯-s»-ýÓ–Íw;äRÉX´ûÂW2x“ݱù8ב:w„÷Õ¹‘-ûMG¾y;’þZ°òZFüZà_Ë +‡ùžQzÂ*ïÉ�§'\ïž°½{fY¾9WO=™o½†äjJH3ü-Ð�Ðæ²zÂëõ¸ž7r�ëKö…=ÙïºOk�œÝ­•Âßké`²¬.Æ“÷VåùluÇî‹k•-Õœ,kAKm¾8ý‹Ú™u"º]TX')1x£ô#ïÁy¥°Ñ:ŠÕBö½Óïá; ûÅ�iü '+mm½c|Ûê‰ ÐËÙ«­šKèã]"Ráb'ÉäêB¼e„Ú2Ÿç¿&4tüË�N«í¨ßÌXè%ò$&¯T=2y]TUôÓ«¢–.©ÚÅ乪r fÒ%-ƒ@MÕ3Y<3jr¿$Q×™Wȶ¹ÇÍö§âÀ5�Tâ Õ»ê:ì,`º5ðýÀ(O× vÛOmoàÉÏ‘"‘)¸H½Eæ-Rmf‹([¤Ž"± µH¤E-_"’Ù³ˆœEà,âf‘+‹TYdÊ"C òˆsŒ8Lj�8vı#‰eñéˆ qA¢ƒñ–¿å°·\ä˜_EcÌàEÈ9æ¼c¨ŽÀ;ÎöŽóŽëòŽ%»ï8Ý;.èC~ÏIDbüžA½gPï9ï{.èÇ~à‚DÓCĪ8ï.CÔ>0”\¡ 'ž0¨ ç˜pGˆ”uÂ=9á¼¢è3á¼Îû/Îñ/.H;>rŽ�œã#×ô#gûȵ¢�\µ� E„Ñ¢‡ô‘¡|,%ÿÈu™2¨)�¥ˆ›E5bÊyEÚ-Š"œ-‰Oœä€èC}â"E¬-jG"�ÿÄ}âlŸ¼è¬ˆÔXdé3nªˆ·gœmÆÙDÁGü3.cÆÙæ,cýÑÆõ¢9CþÌð>sᢱôY¸´ÿáJŠš‡ˆâEo@ÔŠÜT‘“/è’«±äj,¹Kµäv,Þ’,À’,Y•aÉ…‹r—¨}‰ÞÍ’kºdÈ+†¼bx"o‘¸h�ˆ˜è‰N�åEmI…V j%¸½_8ïÎ!Ú _x‚üÂ@aP¿p^Ñœù•ýÆeü΢=ð•#¾rØ×/�:ä´ÜSûù«&P¸~ûu bÇÂ¥x!I꛵ic‡ñì,NÏNŸ’úì/hòn/RÃ’Ü»f/Ý|uíö¿“ÉD"UÂWZnúÈ%m˜LÜfUÞ¾¥("3H³’‰º ¹ûƒ¾÷“AÚT I CÄ%ÒQêð�4!E™„\BX‘yÀJ&íÛå0‘H0lDhÀ„^JF‰TËê¥t‰o_(¹@åuT„m­©…(Ù&RÂ_ûC Û›<€­—Èá_¬ÊüoÙ=ÿ�3=‚±£”Ð{Lv�L•rûŸµå*ð‹súGò§ÐF|ñ0Ú…¬øºˆ2Ù¾j;Ž[Ÿg‹ÅôÙÙŒ}=žÓDI³V{‰7Bù¼.�œìxæÛŠìÕƒo;…?ÏQqã–ņ‚æ(#>g—ÜS<2ìpQÚqñ¸ˆÝÁ¥´¤¾P–Åénìt7v]K;ðy·çýqDtšf&ÊNØ2 Û˜\=Y�L‰ÞFn!·N/ùNåÙYîakö!‘¼àýêb¼ñ"9}ŒY´ÜåÓÑ~J“Z÷ÔÆ3¡Ù¹ þÝñÂS÷Å-,wr視5ì^ë.Ͷf~ÙåÛ)åDò-©ÿZŽgËÉjò˸´s½r†D;oØÌí ¼Ub²s5\¼ªÝ3Þµ�ûáé—ÓW“{÷FÅ ßoXà8]´)©iýb”›VC}¾[t‡hè¸tã×1LËp¦‡ö�gÉd~Êg×�ݹ0ôþÿöÿÝ3˜úú»“ßÙlfÏ.ן·™p¿5ݽ{ÑG/0®ŠßT]U4=£dô‚’Õ¯”Þóx/àýïWxÇË(8fcFmüÆ¢{œ€C�Dc%òÆ2ß½eóç_Ç‹9ÛEgJ{v[r»nåîÛ;›)“'oÑj8Kž¯“ uû|›o]ÚEW¾ö¼D^�f¡ƒ€9ÑöiwdPÙtԟ龞žVnÐE}][+Ü¢ÈAƾÁ8¾Ç2cz©˜MSXÚ­®a{7Õf¥gúoúÁÏ׎[®[íÿÒýk�óâì Ÿâ‹}=åFyÈÈÜj0®wì•oü( NE•Q^ÂGT3ðaN (Ôà#<7|˜?'*)øˆÚ>Ì/å|DQæUZ§ÃÁü¹†}Òš-mÝ¿[¶�­jèøþصÙíö)´Fr›2n/†!YâeÌ,W¬ªó¦îz~³´;×ÝÞMh;íž5 ‡g²¹|áòx¶ÓABgÎwmdD}�ë÷b ,†3žgäNW�¹¨ªh{Í×ï/gƒbMÉ(Y%§äà™r5TqX:Sr�ÃÔ8LÉ#4Óâ0¥€Ð8,‡)—Íáí¿óˆÍ"NS°«ä•8\�ÃÊ©Âp-Gh˜›Ã3q8Bc¨¹ª’�·/'é¹ÎÀ¸(9¼¥ñ^À{ù²Rn•º©qy R"CÌô¼”ž–V3ļ@ç–§¥}š@Ìô<ò©Ò›�˜è\g”Ž:O6xcjxæà Ò2<çÄÏ5'÷P3½ñÿ»kå<¼l{à(3Úa#ß×�`Ÿ³Ö¦ùÉÁ›Wƒùp0Lž_�Å@cqØ3_³Õ³¬ÚG1µÏ¸OÓø·Y�6®œ7D2‚¿7ÏÑ«öa¶\ß{‰¯b¤ˆn„¦_N^]½œ` 3»¸Ÿz¢€€Kòs±UÓ©Äìy(ôJ �òåç×ÅèEUS³5Ûp;Bì®ö—¤Ó²ÁmNÆ)“^7#n?•e;¼1„ÄãŸ&É×)Æ[¿qowçÈdéßù‰øT–<ä�‹éú#äL úîBö&Ñlãcò`¦ 5•Èœó%ü‹Â9ß¶¿Èã¡ /T<2ËK<²Ã‹+ÕQÓ`lÉ8"åGã³ÑÖm>ÅηŒŒhJU6dþ$1DZGš93iö:+ÐŒ¸9LVRj¶aåLШёÆ?Û Ú’”ý&ª…p©â%|þJ-¼œ¬U«ø41ªMÄ«3‡Äu7˜�Ú Ùþ²,C±Ý‰ÂÁy`½� jnM‰ÐŽ*ôõ’É v¥_Ô\q»¤”î�Þ–ðFÄ�MR"âÁ&w‚ðÔÂ^2øÁ¼XÙêl=l…ÎÌצý^Ó";%+>­&vC“â©zµÝhìÎEÕ¶œ<Î>å½ÔdàíØ6 ‹ôfOöØÆ�û·6ô qÙûm;;1ÛŽiyHéœú1:¹ÖË^MÜÕEn¬ó1+�ÍfE2tÊmèl`x‹µ)q;ˆ^¤Kägr§áÛV\òB¹g°ðv@·C¿<áî5¹ÝOa™ÙÙ@n­n÷zÅ‚lö¾ƒ€9‘à2L–ø[O5õ!ûˆóÄöë˜l‰ÛyÙ2KYg^ì„Sª­â¼ L&=†=Üîëáo†Žƒ™©cTÖUM©èjF±t5«Tu5§ØºšW]-(5=“UÞèê¥R×Õ+ÅÕµ´â險øº¦) =“Sšº–Q~Öµ¬ÒÒµœèZ^iëZAéèÚ¥r­kWJ—]tôô 32Ì!Èd¾Ã"ØRÛØ’Ì–pvf,w¿¿x·˜ÂëCL’ˆÉ1 Í'ˆÙpwÅ?¿º}ˆwÓ9†nÎ6JÖ;{çI‰·ác$Lm¸,‘­}—ñŽ•‚ÌlköW}AäBÔªì:³@R‚µ;[�Ǹ¹Hÿ­úŽÇ™Œ2Ç_c^œB‹ŽÏdx†¼­�JݘÜl=_Œî¦S1ÄrZCA á@ÛÝg@Fq‡åexèETj6ëÏÆ]Ö8ɶ¸øÄ±57¹Øî&ŸÝsüÒÂÕQ«‰/\ÛÜ{åZŠ<â„åêê‘NŽò?ÿA¦$¹]ëwæšÍüß;s�–Ç“ÐïžaÜ}.oi¡O±{ýQˆãÈ"ör?êq¹CT–Dz~ÇâX¼!*o�eûŽ3ı8C<âòËýÙÙòììíæðØ/â_±„ùÐd—é³£çÉаˆ-ÇJØÅcäzÙ'6Çxtr­¿¿O;BöûÍ:�ÊØçëg¬,"‡ í0X ¡œ¨ÊIz˜Œ|w¾ þ Ù§oUDOB >Ÿ,€Ý[9e›Ó#áM`P�Â}_bsèiêÏKlöµ3c¡Õ‘›ÆörGÅo‡cø8ßV™üSß×{@â³ë-š—ÌÌQ^ßf¡üžëž±ÈÌöÜœ}û²˜w1£vl–/äéØì&/ŸöÞÿƒbÜ{~à>ãøs(h˜�^áX˸¶ŒÏ“¥<#{º«Øž.:n²Æ®€[îœ{b^,çŸÆGÜÛ=³vÍVl¾ü+øÇ­àÿøb2~Zud嘓ÀX%ènãCú�U‚îb8w¿îÏ�»‘=-Såþé‘QÚi4ÔvTz7ýah‡8™*%¿å”ËP¤*ÖC 2ðß$£L†E†CF� � ŸŒÛßÞæÉh’�Ñ&£CF—Œ>™ddâ»L¦Ef•L‡Ì™u2]2=2}2dJn3 ³MfŸÊT6¨lRÙ¢rƒÊ-*w©Bƒ*ø¶¨âP¥F—*U|ª4¨Ò¡ ’ôÉ"Ë Ë$«B~WɲÉrȪ‘å’å‘å“Õ"+ «CV—ªT5©Z¡*~ØT­QÕ¥ªOÕU[T ¨Ú¦*ª6¢*ÒöÉ&Û »Lv…l‹ì*Ù©‘]'Û%Û#Û'[Zb7Én‘�Ý–�Ù×dwÉî“CŽAŽIN™œ 99Urlr^#§NŽKŽGŽONƒœ&9-rr:ä\“Ó#熜>ÕêTs©æS­Ooè�Eo\ªSÝ ºIõ2Õ-ªW©nSÝ¡z�êˆB¼GuŸê ª·¨P½MõÕ»T¿!—\ƒ\“Ü2¹r«äÚä:äÖÈE”G®O®4Ëm’Û"·Cyy&yeò*äYäÙä9äÕÈ«“ç’‡>y ò~&¯E^@žô‚×%>ùä›äWȷȯ’ï�_#¿N¾G¾”ä7Éo‘ß&¿C~—üòûÔ0¨aR£L� 5,jT©aSáF�.5šÔ¨Ñ§&5 jšÔ´¨Y¥f�š.5=júÔlQ3 f—š}jQË V™ZjYÔ²©åP«F-—Zµ|j5¨Õ¤V@­6µ:Ôº¦V—Z} (0)(S`Q`SP£ N�K�G�OAƒ‚&- Út(èRpCAŸÚµ«Ô¶©Ý v“Ú-jÔnS[z…¿LêXÔq¨ãRÇ£ŽO×tmÒµM×uºnÑu@]êÔ5©kQ·JÝuëÔu©ëQ×§nƒº-ê"U›º´‹ô}ŸEýõ›ÔoQ¿Ký~r�z6,íˆ øU6KÙ5% Ó‚×ȨËk@sLÃíÅ�ø>â0JF³BºÈ@×h»��ÐnTðiåmà 7ÈfÕ±€š`a–Yh‚…™d¡ú¦HµÂ4Ä4©ÊôÅTC„«¢ªhu3³ŠùWm»!AeA…mÐ[¹mTÖ¶ø€è ‘6ˆ‹ œ¶�„6�ÈæØèPi·ø ¢…in£vïÀÀœ³¯Ay@ÞDÈàß =h™ƒ–9L§ÂÄ�Â: ®誃2« †t qS¯Z Ä+Äzãé xXê4�V9Ü>@Åð:@5Ãèiœk$ÁÜ®Ù&HœKoˆhxÝâ'¨ff݉Ã(ÖŠ>Úá�@Wþ9BD”î �åbt]4ÄÅãVêøà7:ÍE\ëä°†´¨¸ô>^AP\ÔÎÅwCˆn±@;Ýä wX=t—g1D—xÂ,éC×x6H#ºÇm÷01ñÐСu¡p¡k!4Áä‡g{ø£'ÉWÈU ôŒ~„jGøúHRíѱ˜ö·ÐžoÁÖÇ/ \wèè9†8ÞƒÌ Ž!Ä�!¿�Ü1Ðp z8>„ E�Ç’¥Å’C. \ ô[À¶(r3¢Ø†L Ðeñbh( û Ðg�I(ÀQ )0 †W@Ùг&£Ø# É r* èŠ}’åhR^L8h^’qåS€” À[Ð@Q³W@ÕP.Ø»±'èäï'‚¿À,K…”¤xñ~‹Ÿí'0]N@ 'À©‚dŸŸœž@@€vNa–œBÜa¦Ï0³gH;•žyg��g˜Õ¦¢l--LG ÆW TÞ‚µÔÂð[ †êµ@-Li ôׂPj¡~ 2­yÖ…´ Œ[`‹ÚÄd´@%-LH r¾U Ðd ª…Ñ´N sNw¥¢¡W�øo½ß‡¶ÁßÞ®Ô1d€Ò�–%C?;ëó&&9\¸®ªsˆöªöèþÞÃöèË}ÛF¼hŸ¾ïV«Æl¯ùpUD�©-q¹CÑX—)”íV¾~t¥ÂÑb¹§b÷�z UO�¾¸ÅÒ´úÅ_jhÆ6�7ç%Ð5DHo*Í 6,e—Û_Ð göòT:��µ/…Ð݈K²4fД¸%¦ñPf¼ÜÏÕ{uúØ §±²¹¹)ûk’³÷Ê;Û¥¤£c‰ññê5¡¹Àø6i9ÓÝs¹|9¤'kußò-Øx[G‡ü‹…S°ÔO›‡.C7žçIT>Žâxq ¡!&¶_ -í¼ÜÓ«£³ŸºdØ’ ’P3÷ o¿¨‰ö˜nu›9Ûü'QLÐöO K$¬[lŠÓÞ9:{ßeÂY…FQÔ6Í<êv‹£JGUlÞÎÙÖ#$Q¥-q¹œõ0C÷ò— ��ü½¡zçãyª›x Ay“Tó«ý`áÇj—ÆŸ®bnö¶¹ÿ'ü/å”<9P’Y¢çš¯c-cî±Óì+Y)KÒåž¶ Oë‹hmŽðràŽ€¦óñ"Æ_Dj †’àÅ\Ý�vù‘¢æè̓½:fTÐŒ3yž«„„¯J6ó òp¹cƒ‡|]Åè++>PëÑ:÷Pñû°‰çÏk¾þàœæí·žÓ¬ƒ0å�zD˜)fö�ê‚d‘)f�•>äµ….ýÚÑ FÒ Ð¦ÝÖ·:-ß7Yw:t šd*o¿c´MÔc¿ãÿOh�1mË©¡FžR+tkåÇj¦¯2W/ª=8 ßÝ-6ôÏ�õn†ây>‹§F½Æ“‹«aOf\õ®Åóz4_NdÚèî£xÞP’x÷>ô~“¯·¿ËBóÞD=?ÉçìÏÙå˜mí°—Çö½¹¯Þ·_±;.�—ÛÓÆ€¼7�³Ñä·sÑÅ`Ä.êpv…¯ñ„�O®åËøå¾b—w“OwòÐ_÷ä«piP/€W}|Ä8/EŸn]ÞàÉø/âÊÎÊ‘h§tüÙ}`ú#5×VªAžáü+ÅÅ|Åp¢Jd:•D"µðãƒ-LÍQ¯èmåFR§z—)I‰Òð{)}J¡óß?¬«÷Ý�(?"Âx>ÙŸün½~ÿ®@øŠXá÷½,û�«²�[5ù®öÊž¤¤PõuƒòXsÏÆ†‘çØˆ1wŽTëC;ZÑ� ’Ãù\ø�OŸn ÉÝãÇ�À×^�åµ×tbehÜɧâ¢k�ó•Þ?�pïp—äjéjÈÁ�@ =õå’âCžv-O~¹˜Œ&ãçÕÔ™®2S?oÔ£Œ~ Íè€+sw�=˜ä™I687‰òjÑÊý›.pÆ_ÑTUo§Žþ¼ò…­¼|gµ¼…× s9¦H@Ó‹oˆ¡°tá2,°6[ïÌȽšÞñÅÅÅÕDsd)Ù•gŸ„ßV¥x´è¬‰Ë„«‰ú÷ø¿Iò$³û�$IÿaH ù Ë,ù¯Þ7øGÐÀà¥> ¾îæúô»Ëç‡~ú”§Ú´Ïný¦w9Ì×õ{G¤kߎ#�åϪƒNƒ·n<é>q?ΑÜYóÝÆzY§k¬ë½áÅ?Îo!¶æü|>¼âƒ~p-þ»êÍ®øõgñ¸éÇ|vÕóù|:¬Ï‡—ƒ©»Þ6–‰ÜËÑŸ0FhëæjÝÏ$' Vû�?qŸ ¿Â!2úÎóf´îýñÌ GóÉú}w§‘S +¢K•O“�·8ÏèlfŒnÜ+f�z}}&oª~òd¥o~ë~.¯7½ïáoBy · ë×§xgŠíÿwI‘¹¸X¯×WÏÅcAêšN ­'ÒAk¢ƒ»DKWYWNµ÷—�úÝX¢¼__¹çØÐ^rœèB´ëÿþ·þ®wÅHÇéUW’yüŽ7.äÏ9{ò¤>笅 9‡bÆú‚g:Ef u¿èƒ^_fë“Õñz)G˜ý—ñ‚i|éOÆ‚DÖÕ›¿*©fÐ>}Ú],V•Íé{0X¬þº>Y”<Nã’7Bo>ÜÜÎkóIM¢`POÆL¼Ÿ�µáx6ï�/k�ñÞ¸6™öS*{>¨é"«¢B�PT“^F³ÚÍÝl^»ê}Ôzµ{wÜÚÍ`~5é¯Õ¥ë'Mä Ù€FÚ+%ŒŒa[ˆÓ´åRÁÕŽ×ÆÈ£ãÉA‰ð´:XF̈ú�!J˜)5CÆSiþ�#›Á·zƒ�rŸD$W"´·À?g"Ý“ÉÔ�®ÍÊÓÛ˜®�élÁð\_?Ê.¢W"Êv¿»q‹¶(Ò]0̨¼°îÊÓ5òv6£˜®ýêè³=+0Ç uG÷Êí½ÐõÒRnÕ®¼n×..–�[ò­\£Ÿp Z¡3lUÎÕz­îÞs¨'ž^TãÀ/yXYn¥úVë’ î’æ\æºõ…� É!INƒ=×ÿ BIYç²yèßUð ]Ns ë±Ñ"Šö訷aWð‡à •‰TLÎØýè7Ïш//Z'b_�‚ïÉFÆŠœé°Ñhíönvå %9»«Ú5�Ü�]jÆsŸ[Ò›lê†øˆ+ ;9"ÅfhzºaynUA9%(§áeNœ)N„ŒÓn³àHšÎ/Ô³ÌåQöÒóínúËB’3š/Œæ—ôW—‹à’¢1ÎÄ¢¤Òö_K'ÊL(�Œâi¦>4Þ ã%g?qn¢’²6îÝ�éAï¶.ãmÔ¡ÜÅk£tîp€…à¦öUÅRätÈ÷Ü1™y÷dnm�z7·ƒ¾+[°Gr4ëÒú(1çL� QþœÐ¿ÿ2ª0Ïm� ¥ƒ§’a� ñÿÍeÔi:+7(�}þ}OÅ$þG›ÈÆ ç|j_Gß¾€qz·Ý`[ôÏ{wýá„ÿ:�õ=„É>à7ƒÙL<'P/üu‡·½éœÏ!Xø‡a0q;ÏÔÞ2ÌêÎZ‡užþB{À¾Gñf†bqK¥ïÓ¥žwf :þ;Ì7œúr)¬_¿x«©·¨óû ˆ סP<ÎCýÕÀ[t\W¸rÓrÚŒàqp‚Ç9Ÿ@p÷¦Ÿ¸‚Ìýn É�ú¾fâûé÷�-.Z~p)6‹d_h šveP9 ñté0DU�–��VÝ­¥ìë-¼›Ó9ºö¼»|Z½tÒTW½çÒ[=Ø!vß·wh}{ïu<áþztD}¹ëoñù¶ež¾?å«�€{7ló ¾NÁdŸ6Â4âžë„!�Ú~uyó4åYÆs|³$Ë»®ø1ü‡g">ËæŽ¨IUóÔwQ··½ Š“LFŽPå¶^éò4tNÈ·œÿâ½Îü� ˆyÂSWEu‘ád¶L VýÚÈ| OE[®*¹³k€ <“ßöü î–›Û{k›£17Rñ£a¹ÈëC[$�EÒ,¯ŒëMˉ]§'*ŸG¾tÐп³0ù™ÊÉE¨aY\-JWsSç`SÔ;�§ÜóÜÀ'8Ú±8!c=<Ð�S¡<É(ÐpšweüŠò|v<4·žw� ú ÙíJC+‘³Zî¯xaåz0 /‘Qšý [™Þâ]¥ÉPTÉËMR M‰Ûhƒ„ʘþÌ65…ä¹ QߣÏ~Ü嘸´Ëó¼ÒãÛM;P1½N;Œ“´kGz>c[²�£1f)�6¡àŽÊÌ�ëD¡ÐåN$«Ëú¶õÎòMŒ.‚ˆ1rNüYxÎ/ÙÖ®)çOV¥¥ó1Ûz¡‹dÍ�O(b *§ ‰¬‹ÛÔ%ÔpFIWÜ]Õ>ý²¡ôߨ5ìyÞe õFû=öâ�©ˆáÈøtÁâ±§¨$þ%1D40¼KTbb;qÚÐèuú —§"ÀuJ1¸“N_„P!zW mž¨Þ#’Êç‹~i\õMgÛZŽD>�!pß6³ª‘$&ГbÚúØÁ™eZ¢Œ´H¹iMbr0b»ÇfÖhF‰“µcQÖi¬´P†< a¦u¶-QÄ)…üÎ�œ§g1�Jp ÆlsO—¤ÁI>œ0æyàrúHDàž‚GS—ÇH Û uŸ!#êB©FÄÁƒtjX…”�k44j=2ÌFy»J°tžúÜGÏÞ#ˆAjÏo‡ÔE; yD‘Õ�§LŒU(€J?[Fw@(G‘ï�`N•ÐËÈ8ìZ¶F2-—Hv]Õ†‘J~›Á¶i®;„KÐ}‹$åe£^M÷»F+DÄæ© ®¦ ìV øQæ�HÙš ‚Pè�bÅã`伜ò8åf.áAÈã�)ĸ$j¨ =áqNÒ9)7ÿÊpTz Hqõ#C:8´uBS'y¬øÞŽ¥7B&]Y¶(WFEòD hN•Èu‰×fI6ʕߘ‚XÈÞ”ûV5ÿ:eÛ/M�0áµJx<–CðÀçAà–±R˜ù|ÁÇ`½ N»´¾ÙÓr%ÉŽ??¿&X怫cižzÓ¬�v–ä‚´AÉQÖÆ�1`¡ Miiòf²cƒÐ} ”ŸbÚA ø?DQÍÁ‰�€DêB0|N£§¡ã´Hu­S‹3![ÊD{в Ä„ Ç‘VXèCÑñL/ßh©0ð-4Ùý�`9“B8BËh-ÜqyåÛ•«…dšömÓsùÞÎe*¡7ˆy`§ÙmxÂ4V�.£‘À³1¡¤ .Ñ]*4#™¥äPk'P:?û…â(ía ¡0÷Kˆ„me¤Xœ”9Ÿêüm›�žBÇs<ná�¼ eu+-@(Ý­V5ó'f@ Œl€E¥�Vݱ'ìIVZ�P¶f?’™^J ×d¿0ÐùdªAvórþ+#Oc/Bó9oò ÒÅζŀÐ-m503‚ªÉ€’Fâ„ÔPÕ-£r÷ÄvÐX¸*a82:öˆ5²~2YdAÜúBÖˆxÒºPsÏöK³Ì4p´ióÒå¼wvˆÄ-y;‡ö¨€VœÙê¡a'“}j•g&¦*¹»r;³ƒ£…M Í(E³s¶cõl ²Z±xT}HÓcÖpÅ-vBcõØž1ìò¬ÝÑ6GN¶ Ñ’J’·SU¹Ê^K|‚šº‰„ƒñ ¾:}Ñc¤Põëoìåk+sm\‡¥ Ðtu{iè.ȳÇMp¥w·´Þ ÁeÜRök“�WõµYiÂÖn8XßWKXA¦nR^ ÷¥5‹CÛ¯ÉÞ}i©ª‚ø+�î—:²¥sûšfâk'²ù•µð[�½ÖÓŸùíZ‡N‡t�¶3%ArO¦ ö(½RýëÛ53šç´öN¥|ær£BŒòúš½1êæ“ÛHÍ(¯±¸³f@žÿ1¯]OØ›c³ç‘�r}`ûgVxb!h¨ñæ’”vÑÄ’,n—.§²¥`©jE–‚j!í“&ÂXõÅ®!ìU,Of¢vh$gÜ|bFÄä´#«=ˆ­-"qZ÷Fâ:,žÈ5oªVÞâËÕÑEcÐrF%bëDÜÛÅ]‡ñÎLBLN圗ê—Ò•‘|ó™”l¿Œ¤ˆd"+SÇç¬it”ÒJ®dYެidZaÐȉ- ºÇ#¶euUPY”#¯¹¯6£ä^T#ô%CðR í›%ÒÐ1õ6µÍ悎S&ÐIËu,Ã#…t¹¡1ÿø·#vd8"ÊhßÈÊÅ.@»5IRµ†’7Ô#E*qÜQûMÄBµ†2µã˜tWæxKï(绎¼e¬Ã$7![Z ¡ÍpXG¥…&IÅ’q‚›VÝFQÙpšNØÁ ËÂ|se¢*^§©Ióa‰•�-ž=i ¤aNç�wÖȰïÈ•OQÿŽŸV䖕γ!Û£–¸ñÄHDâÏšÏ>µ ° f6b…¶[ÂŒ$ JÚ͹aE/}Y©"Ð;»f…Ý-Äjô¯n3Î&¬°X�‰ÙÒ6wR³§¶jÕY,µ«G†f¢�~56høÂŒÍš¶ÍjRé)ÄÉW `a.uf$šSõ„‘OÛ׎ú„ S�Ï/ÙÉk«lÈ�±¬²½Ï¯Ø‰ÞFJž$åUÙ|ÊN¬±éé½t•yÍNŒ69ý•ôÝ5;5Öw:ðX V´´ƒ‘¶Ã8-o[Jhî>³Ó÷\2™Ú^a©¢>K„á¹\°ÉJ†ì¬i\äŠi år”=Æk,wÿˆê¡ó•“©]XâGil»Ê_¸«çO…âf~¢ ÍGm4æ´“`ñ¥B-«­(Ð)kT,èf['VÌÊ�?%¨¯´7Ó›²w;¡š'T¤;ÍóC%Øy)“¨Â—?®ØŸnvÌoWêçI N‹1ù’Q‚ ŒMmJæÒÀÀfÀ‰XLs <îÊ„HWµ´~sÍÞØ9¿8´Í«)>Ä´L ¨HZت_Áb±ëã¥TVš :™™µQy¦kà%7Âsñ¼×¦Ý€íÍzwC¾žtw@[, l*½ªTh6‘*•œH•aÉuYzU©‡&•^)õ²Gû˜:uoÇööJ¦Ê½‘ ËS§ªÏí�¡êWëëÁ§™Ós«I|χ‹j Áå_¼Ÿ< ¢ÒM2�a ü0ú‡‚0Fñ÷ŽxùÝüæÛ?w>R¸�éÿ“÷$ì‰ãJþ•;éÅA$>0ÆNKŽN29:“£�€§×¤ãbg�¼yoûÛ·ªtX“éÎtϼo_L°Î’Tª*•¤ª7áKÌÑzæ÷7v\h2 OZâ:Ï%/ȼRGr”ù_ínÛÏÜH"7ÈÛQGÊÂZ2GýžòîÅ÷Ѱ#gC”ÖK¬Òn¯æFò«;žE�¬a5\iËO8x‘5`ËüÎÖ?¿ç��²™R�zØö—œüwìïoút‰›ÒA�#±"§¯&ù`<ߢ I¾á ”öi�Ý©—Iû"ÈLHŽÞ¾’�*ÙõBÈ�ʘ­“vöóUPi;�r�Äv.ŠR|,€l·½�rª@¨+Ç_˜òp¸Ý39àPMÞÇM䣷°˜åg»²dªÞ2çÓJ§±{(_Gl�Zµûæ@z¼BŸƒ7™JïXkáÞ�ö²�YËlÓ\+±¦ýKƒÜ‹�¿[JÀzsTÐ=o.x5öL‹!±è`Gàࢠïá…–âðZK‘õ‡îh?�,áèLýªÒTíñà]ÕÅGÚØPoaƒËm%]Wñ#G×HõãyASŽ©üÓKUü1᥸D/S�婟NrSæ“ëÅ wÅà�|\HzzÅ»•âOoÔÈ«á&WAs†½|ÊË:­¬ÕÞ:—FÈñGœÓU¥r#FoÓ’ZV%ØüÎîþAæÔ÷݇�¸;(B…*4š$‹QHcFœû“ÒÓ§$·ÒF7)½i±Æß\žªÎÿydt—îNÍE•‰éggVvßR±îÔlL-kj9SË�¢B^ý©mâÙ%<–èMkÖ´V›Ö<Ü{rm<âTwP]UoLñÀŽƒ'ÍPoïNõ¼ö÷ ®ÕÅGß%qdˆ"Ljí½Å_7ðµ�a$JðS�\ý!Ô¤{”ŽâPšré�ŸxåÊay0–†Ô yj€ÇŠt¹|xI¶(ŽG�Etœ^ÒÛN·�o-¾/ÛFLÈ }Ìå�ù–� ½+4;D^qx%;ý±ÄŠ!E@’[_ SÃ�†R¨âßBÀŒß(KÌŽˆgp…K&ÉR@~ˤ“£.‹ëNë.Ž ŽüA-S¦^åìùˆwÖJ5yjfñŒ6�AD©Srâ 'B±fÈEÞêªlÑ1‰-ˆ\ FRJٯɳ�5ŸpÔ�²ÊÉU·ª„ì’MNÞeeŸCÙ§P=C.�h¦†ºc²Ó$SƒØ1‚…î4Z:ަãþt<6ä(b·ž½…*ϰEx(˜N›MÏà:5Âwð¹žÀ´)4ÅóhðA>¡¸0äâ×vW%Bžc_˜f§îùÑÊh �Ï�–”º|K‚ò´¸ÑC±¡Ç.ÛP.É ²¹=ÅËLs\  H CvuÑWïe4IihN¯Åe…¡’ ÜY¹šrÁˆÝœÃeâÀ˜cÖ_¤üiÿqƒ€Ö|&ñtBƒ8 Q Ff£kPÐyQf i}œ>ŽzV ²[¨#hÀ›r†…:ÿsN3ãB*3šÂ[ïZÚ/«"¸QΠF�Ž,Aw�+ZŒÖFd¿¸â yXlCUVÕ+DUø¸\’}ÅiìlC«ú¡¸êñ<ä½,K;—%3ÕÔWt^M®BýR°ŒøáEVšœ†÷§ø›*Ò±€dK—¯¥ëŒá:C9Ä�f Ðùx9ιΠ_\ö"'@$:_>D½Á¸•{##EZÂ8é ûƒótZ2y‡ÀcŽ¢à€{¼à÷²Vú‹þ;Ej"ôü·/è+µ+„›ÏÄM§½ìçøåà_ÆT°Ž>ÿÒå7Q¸ $Ø?M__#€5ùÛåBS6~¾*[Wúzƒz£—V lÊl¡[œn¿5µÐ«éáÿy ½¹–­j5¬N-Ó\ÕPÛ•–†rpóûàôEA­è±=Óÿ¾žG–î.Íë±›i�-ƒô«œ7Eä ‹ñ}¯íËê:%X^ðÞívûkF·»þì;Z{lÕræKƒÑjàÊmÕ�Û|‚kx¥³AJc�ì¶(G¥¬b*¼ˆì¶~(…¬—^À:juïOÛ1üöÖ¤~ŸBZŽ´:ð Æ™!lU»Ý„k�Ÿ«Ÿàÿ‹ìM¹î÷å¬Òл´^¿V Oç™-ý%À{þ n¬g^¬¤À£³4°ó*g£`ý6íG½»œY’Ig¶ð«Ò´üß´°Q3ºßÜ|âprÇ—=&ñ?vñ>x ‹ãC¥À—^4ì¦�É$0Ùm=êÜl�|ãüC¼)ÀçÊ.‚\ñèV²ž¯´ÒĆC-A‘ §%Ѐ±ŠÅ“)A Lo@7%3¡û*O欺о&ë†0éqÙKGÊjE‘Ás3©€Ì¢õïÚdý!�%@ò¹¦`†ÎÕ{°\bCO}1xD8ò­Þ6±%½Hù&…ö&“(Nâä3YäDR“ïÊgóÐææÑ:ïÙ ÜQ6æÐºóÙ\Þȶ”gå„e %†’C·á�}~¸e´ ÄsÍä)®e Y�ÔÅ£9øcºõ¯ÁÏ#9¤cýL„ðJ˜j$þˆ[Rœ ñ†”B!qAˆ�ê¿­üðÝ¿GÎêϯ×ÊÆ§Êô›ÿù4ëvºaPÚü÷­í[ïnt»¯B’žT· ¦÷Q@ºmÕ!üUt † ÅQ'>‡µ�Â13XwÙ2D_ôËPmI‡jI$‡"_ h¯yî_méäå‡Kž÷6øòÖR[ §c §ãÿG+l×ìŸA2çØ– aïÈÌ쀴•‘|»%G‰Zßv&!®Œ ¶²ÒÖNF@²žÿ»÷è0âõB¿~is˜�‹7š Fîý úõ4z0„51¨Q„ÀLÐÞ6 9*Y9!…:UUVˤE ¤OŸ>ÑÀúDB˨®4:†ÇݦÓL“@�A¼²`“j¸IFÈ&­4H2{*šÙ´hýó€” Ñú°¡1“;f=ìó�Q€ â¥÷úõÓln÷LØ·b=©ò¨ õ¢'D‹p¨RË¿7÷FñÌ*Ka4¬„†~ZQyÈzldÃN-Fõ4÷¼ÜÌØŒÎù™èè{Dãk5L_gpÃ/fpºá¯¯µA‡;o†Ž#Õ3Fç¸íµ"Ós2&g€Î(’¦‹lßý«[,ËwÉ—[�?ŒQÿ¯38÷] ¬aj´¢¤Ÿþ Ä”NÉ2K¬dÙxx2Œ@P�°:†Õ= ƒÄ ¹ä:ôË(MÅFa°iA°iã—ƒ_5ürñ«ŽÅb¬…FXfc˜�9lŒ°1±ƒ±.F¸áÒ+F¸˜Ãõð«�_>Âå½8�¿$šÄ„ƒ°9˜Ó¡Ò0“ƒ™ÌT· ýíh0NRl.¦°kÂÙ`„&�;% ° :ÌVÃ45|­aü%ãh Éj˜¬†yïWîb óVAJ?÷©K˜Ê7!’ £þ`ÿ±Wl¯ƒM¨aSkpÍQU¬Vǰ:–[Lj:Fx˜ÃÃXc=ŒõL“xu“40I“40I“40Iƒ’`Q>¦ó1��é| óÜñ/%t—¦~@¢Ü *^èãÍÍxËÙŒË8ƒÛè´÷�Þ^‡Ò5L' c‚z{2eI¶|_¿†„¥8Å)>Ñ£ãm“ÈÕ]¹ÃSX nÁŒ}(Œ–‡6LBøvó)3D‡­èV�²ìC³Ý ¹gŠ· éb„4¡#,eÖyä¤(©ÿ«0õC%Us›¯™ 8ò^º4ñUŸ•M±¡fj uŠ–çT²ûž^ úA¿lÎ{¡Zi 30tÈì�pqö‘WʯaˆÞæwûÕemÚ&Åp›Ž‘ñ·î˜ïkÓôøãÈL܈¦çAw£êáE¾hu¹¹Ñ]¸:ÌϰÀ'Ø-ï¤Ë­vuÿðäOÆ„ 1G'§7¹PGâ]¬ÝTÍ#,¿ms?&Xh. FœŸœî@Þ©8dt-1ö±v×RÁ­®>ê'ÕÅF4?/šmLå ?’Ý2Te©ËYç©»rK&®º™'§©7cM ~˜ÍÔiYï1 bé&‘º=&'þl³Ý) ÁÁ ›íŽç�a(ݦPŽº*.óˆ´;"TÞj«;@$‘ÝgTkqɦWh¹ZsÄ"ÃmV3Ð'Ëf²]3[å¤Ú¬™lÒDV§VE†$Û6�µ)Öjäb1Ä×BX²e‘~¬YÊŠÁ¥×2•ô×F¶÷œäÞ$„5VçPV £lýõ>§§{{ºÍJÉ…4»ôPê}ôP`ÙúUÖ!Ø 3\éu OXƒ¹À|æ1‡ÕCXu™¬̬·%ÝÞlö€§ +Í–k| á©ïBhË6M͹!æì/źùyý:�Z€+M“OË´hd}C$ãµÎµ×òõׯ©†4_+ê^Šã…ˆ9JZ)˜ €Ù�wÉîÝ ÷kYzqݛ󕘉x/™\ Ú>ç2á$ó…ÂáSÂm”#ògØÜLõ„)$œ€ü†Ø×ICkxƒ)H‡$ì•&7¢~Ad/h W3ÃPå Qu9‘ô®E4GÊC„„Œ»ÞxAddd”5 ÉHˆF~T,l�‹0ІÐáüPÂ`ÅãÔ3ë5}¼¸xùRê‚8O³pü[L¶à%y`ža<¡B&V@ÿ-ñßÿ�Òà>6)º&’ù˜l²åx¿C¨xV¥YòólIÑ3 XÛncŽ`é,jöG)Ö2â‘#`EXzI~�{Å/š`0e€ƒÕÏ6‡[þæP+­4ãÎxCü*GUÀ+肨é)혅S']mZCD¦…ß1p­¿à·eUSreÊ—)K‰‚hvÃx}@ý„¥‘ MÛÀ�6˜éK(ÐHƒaËnAR«Š¿Üž³×Êø»j—á¯íß·ÃQPUj˜pWr7íÊɪ]G#vDÐÑ�x{RnˆÖ\|[’h ŠØ B(šºvMîÖÒßµÕ8Û<±Jl`Òi„3µö+”ü$0PÉd‘*j®3&«öl)Èöß«Bc¨™‘•žÝ\|¦ ˜¢«6æW|yYuze£Aÿ±7(†yP™Ì ê s¦Ö¦{PÈßÐé§d@~ø�vÒ¿|¼/ëc%qÖûòak¨fû9¦_z�ÚïŒ R™JÓ_+ã ábà‘iTë ]‘w蕦í-ÈFº/Ì_ÿ ƒp'¨cëµÊDxÆøbª8É<ñt²IE;'}£_dÁ}@Üy=ü•ïå~gfSh0+ʳUŽô{GϦŒÉ’¦Æ[‰ }(Gb|Â'Ù„A Lد¦áZÙ®¤«uCl"�š %I½¨5Í€¦MD¤ÏÇšàe¦” E(×ï£j|�iBzB‰ o™K#;%!*¦Œ(h„Nã‘7bÏ&TuŸÅCóï" ²nLÖ“ñ]|‹Ø´‰;žrZ a7L#È$_ÚŽš¯€—Ð�ÒU‰•.àyOžxNáùÏxÎáÙƒç<;ðœÁó#<7ð\Âó<ïà9„çž]xŽá�e+P²™RÊ,_�ZÌY�: ýRêФ�yή÷ #’Õ– #R¢˜—$f_Æåæsy%¤?›Ë[‚Ë[æ<›'ÊU$Ÿçbd*¥ÆÏî( ¸@ Åôd1½/(FÇÅË ¥`ʈ0¥H[>ö(u>#qVžóê÷ëo'ÑÍÍȬœºQ‘/Q9œŸŽ¢\1 I ©ÔBV‘6èÐtÝSn�¦Ÿ²‡bŠ‹)y*¦í¹˜ê8mqÚ_‹©û^Lï�8eA@4CM=€H§”œó–¦I Oëµét.�ÖÒbÔ³nÏé4¾j–­Í'8 ý/ÆÛ÷ªËÝ¾Ç FÈg Ó‚H _ˆ×äRP/ ÈÒb›ÐÏ/vq5¿Öœ6o—Bïq’Ý71t~�òJ¿Ò¼W'u±Ç-ènúÚ…Žö —}ö&€=,:ÛòØQ`ùìÇÀ¶Øq`CÇ× ×­ Žm²·�eAï;€:uèþô=àÃU`Õi¬:à `ÈûÀ¶Ù‡ÀvÙÇÀ®±›ÀvÈßÌ `­v âÆ­ÞÆ[ÕÆ;\ßBûnw�»æc_B®êÁ$Ÿõn¸åÝpëüÏ‹}¦Õý7ƒfßÍžYá×ÝJùÍMËÅÉ)6»'g¹H‹fhü‹, 8viEúk,`‹r5P(÷ j) [’“w’œ¼cñh1ZÊ;INÞIøLÓÕßÅ ïn;ùõ÷,ÓÌX–iá.ŠÅêÌ‘$Ãe Vcv(DÖA6ø$ºV5f2,êZ?6H¯œÃ¨¢ʪ+¶Åv䜀â¯h»$9‚¿ŒàªuVcn�¥Ë“ƒÕ+Žó*)M�)#µÈéàç†in'd¢)VZ¹Ú–ˆcœü™†\]ó™q=’ßÐ;JìòÍ/W–4¾œQúÆêœÄZÈ)b xnÔò›[Ú°‚Æ1P«¿€'…š m¢s#`ÇZ…1Ç*R#JÕ€I;Bí™äô9€j#1“U£gö¯¢í†Ù*§¹ œB–j³òz´]ç±¶=[§Øšˆµæbkk‹Xs.Ö†Ø4G0œ3µHgj‘`jC�¤¹9}•¼=ü½Õ-,,ÙÖ©ÀÙ6ûú¤ïÃðôrÃÓçÃ3^bQ#߆Õd\ôhM¡@¹ÇÚƒ%Jµ·Ê Á"u˜©CóxeåðŠpŠ%ÄsV"Ô§$ÎÐÚÙG9ÙGÕ²� r³� ªgäeÔÈ>2ÈÏ>2ÈÌ>T¤[@Ñ´ÉeÓI%‡µ�¿ð³žå¸j±˜pw :§g[Ë@b,s Uit—¨‰›±s[�ª_.Mô-SS×[›é'w……¤J*A±«i¶;± œæpè( _‰ÝîùÞ‚´rŸ‚á.ñâA/÷â¡/ýb(Ɖ‹c)ä®Ú ½ªg�b²÷õ m.à�ªLÒh³¿ #Õ¯VqrŽä¾GTíÃÄ„Y‰G[xu~Üô9%yh´¶ìwÎGâM:š e1ÿÇÞÕpµ�+í¿²]6n�ç;aC6Ph¹-´h÷vCÊ5±CüÖ±³¶Ca!ÿý�ч%;VJØÒ=çžÛ=,Y}�F#yæQšAð`)«Šq�âFõ¡f}¬Y©fý¬š1±\¹„°ˆ+fhBd¼ÏÜœAö§\ãÙ�v¯œµLv"ÅâÉlžÒg2írRý,Çê§âÈUœK§ŽZUtSG­ªÓ¹:KÖÈ?Ý‘k«+}½¿SœË-+¬±±é:±T¨. j êŨ“˜!èe¦Ç›iTŠMvžëKz°É ‹Ø k¿ÎÂ/~ÊHiÃÌö-­ '–?Éhå§‘:Íü†eR´S¯Ê A„™ÀK«¾øË0(eôZú$:™þm‰±Ö‡GùãùœÍL¡ÑäBƒ™7®°D_WþË ÖÂ6BXD€ÎÉÃä/uŠ-JÐÇD�Ô¼„hŠ-»½¤¢�PÖ67ý_Ì~ÊmÀþš{iF¶†@s×ýd›AA‹=S š|þãfp©+½&êK¾H¿Á6ÐÞ\œîJgB‚Õ0ÃŽÛ“^ éu';—ÔPUNÝ˵ü*—ïù°ƒ€ñÉŽA÷é4ðåiàgœ\%ßI„üXˆ†+„höÑ•Jˆ†*!šeh¶,u± íwµ<õ²Nd0J`r&Ѳ³Í¥�ËÎ baö܃Ÿø{LlÕÉÎs;µŒÁ‹ÅöTØøN…�ïTØøN…�ïTØøN…�ïTØøN“6¾óîÖ x~~¾µñÛOÏ~>ÿ¼yþü¼p®�¿8ôðÅÖ•>îÞqã¾¹pA ßô¿)°8óÅöX”>¥¯�HѨ=9ÔW�ºIçÑ5ÅeµÍÍ`•&þ<8ðƒ© !4õ-{¨ðL¦¾îÁÊ4;y|®Ôò:RîÄN� Pfïè+A€xlÃ^3­#A�¡Á8(a“Sæ£> CVîw3ì1Ó}8•B¯“#~ÝBÇê•Dõ˽rY"S®Ð¿¯-7aU¦2š±ŠÒrbr‹G8Î7Ûå§E¨U:Î/‘æ�ú–¼þ×›#îÒrWAO çñ~õ�€ém=-�€éMâ*mÀ„UøëNìÈ•²s&Ê72ÊOMÇ�üNÊ›BšŒdA15–øn‚¶pÁu‰Xù`Þ\|7ۺȰÞ`èoãÀ¼"ާh!©›2Ðrþ§T5âLÎíàöbäOg¾Çò.eîåµûû¥ØÍ¼–Òº==Ô§ú\ëýJ¿Ü¾ !”¯ÛÝ«=ªÖtéU�ÙÝ¢Š§À…w~((”ƒ½8/–†ÏµÎ–£é7è¿·/FΉ…1¼A³-`KŸ _Ðt[ØÎ�À¾ N½ÔG¾{OŒÏ¢�ãqô4b]&În%{kâÏ~Ku¾ëîíÀêϺªÄäÌÖêpÏdS ¢Ít‹³_¸ÖRê !þ²ÄœÊ‘þ¥[Ä,_{Ï:Ï_5}¯ûE$þ�~¡%íÛ£5½€÷r–=M?ìÆhóÐËçÅ‹ÒÏ�ásî’|¡é»Ý­Ÿ)�Ö¸_<@Ϭø’?ÜÜÜØ¥N�qó¾ÌÐÆV´^3ìVÀ3íïÒ]Ä V‘FÇ^�hŸ1<çE`»fä\Ûó ¾®…a$ò½9ÝK�„A”Äý8–y¶¿ÌOŠãU�øaƒx"åÿ-û  =i£å„´ªæ<%+HIWx˜’�I¡<ïbÎѵÓõ=äe!8)+ª’œù/»r"ý´[8îVôb Ø‹ÂY÷å’×?è ¾ãvÿvV�dÁ¤8øÄF×£äa¡Ò)bÅ¿Æo๷`‚:k0­äÙ7±‰¥ ]l@> skË61$‹È�ÂWB“ñ:Ä,ž»Ô›Ä)‘ÕvU¬gÉZ${Àňˆ@è½ëæwí4(ÝÞ±*nŒ8ê‚DZr"€Ìcµ °–ïò˜ BÅkNÀç_àrîD?~ ƒõ_Ã`¥`R�òp ˦ ˜ö�Fc螢íïü1†±x·¹Iþ%ÍР‰Ûs�ôs-}B¦ ~Iþ�‘=éÎÙâÜ×¶Oz…)µ\vOpõ›ÀŸ ü]xÚY5—Dƒ&4áë2‰ Äš˜¦]x;á"‡zÙ�ÅÁÇ„ŠlˆÛ¦èÀMpŒ~í–áw‡Ü±¼NH˨™ Yˆ›³0ºø:�u�Xð&5⩾”,îØéjÙ½�ê•+‘¢ªU� q—D‰“^&M§€Ô´;…t¼*—®9ú‚U!³*§X:ï]˜�L†ò�sh6Û/„�V¥\&À4¨•+øÆ¥y@-'Ùa Ð& Âõ!k¬§†™uïb]¯3ÈO¢h–×ÉŸþŽ!4Ôù F®Û=­: (›<Ή4ÀWòû¤º‰)é � Z"Ĺ÷„FFlðBË�Dl¶Þ!ÞÇê¿ žVîñMj§�QËŒN¥Üª-ô>ÞÅ1( >ãŽv>äûY„Çýø#¶°­'†PÍBßÖÆÉCK%— \úþ²ÇƒÃÝñ?QŒŸk‹¢ªð¢Õîï1üÙ 7TV�ª¬Gªº‚Tu=Rµ¤j둪¯ U_�Tc©Æz¤š+H5×#ÕZAªµ)ÏqÉ}ô_1ã‡ÿÃÔxkÒÖç1ûWÌøáÿ0µëû¡½¢ªß|fu„YEïga›Ä˜yÆ üAÛm^&cø3мHsïÒJ¼ÏãçL�fõ‡x'¥•M¶  ã¿p®Öª7”—€ý‰ò§‡fbP“»õ‹?ä\Ä‚´W@AŽ7¸…¿–Ýɾ ëÚŒŽP-…B¾¤ ¶¸Ý‚/q�/s�/¸ÆÇÿC‘üïB‘dö”Iî¸ëŸeÌ1¼ãòLë}`¨]±:„7¤e¦ÞÝ×zAHJýJ‘úI�–x‰ô¯O²Ó¿>¡Ô�Dê½OÙ©÷>Aê¯iIJü‡"ñ„t+]•—o²Ó¿|CÓ'ï+zeŸöJ²&‡Ù‰3((zäàD‹ïZ¥×@¶ÏIª¿¢J/³ª´ÿVQÿ·‰_P Ò‡Œú*ªqH«Ñ\À@‹Â︅�r)xòð,‹Þ~ÌNýöcfjí·gœ'+ÉôŠæ¾Íjî‘‚øÑYFâcE¯ó^ße÷|‰,ïYÞC–�äšVРâß ûÕ¤7é·J.D•Ê8Ë4·‰¿Á¼?£e†£ÆHQòØëFƒ š+F1PXyßÑÑIÛ"zÜÑÉŠ]àýk™ÝxòŽô|%- NÂàôM–Ô;ULðÓ¬ ¾ª˜z§(ÄddE©Å¤:eB8É3}Ïôß21¹DÿHÑÜ#ÖÜj’~r‚ ?HÜÒÿÀ8Ó ì’¶Í ù311$‡qÖ«ëFS7ÚÃäSŸû("�8å)d˜öQ Y´SæU±ë²¡IF4†‘4Ÿá6¶Â˜}.Эnµ rÇ®bÅ9Ÿ—k•*þùç2ç^_±õ3*øâð”$®ë�dòcEòc:dõdê—ŠÔ/Ù`Õì¶çâ×`"£”!8Œv˜µŠ¼Q¬ÇoþÈâácEêã?2H+´ŽãW¬uÚºÖ‚]‡˜hűB6¿cE}ì'Äåk…H~-J#�•[úM”{¢XgN>ÑNÉ%²�)dÁ哤dRpài?‹KN,xršÅܯ—W ÝÓ�mÁæ¯÷cµÇW¶�—ä?|‘Jt“–ëÎ>öï�~?=»?üØ—•vÌä͹µu¥ZD^Ø .D‘Zœî ®×@ô e3:jÕ†ÄI=K¢,0Ø Kp>Ïñ0y¡<òÿ¯êÎ쯳“¬Uâƒb,>ô³&À«ÝÌÔ¯v ¢¿j‹žÈ²ŽÉ]¸ r :éîïßBáÕK‚Ì Ï¯ûä¶VMãè²É¹ðA1í>dM»¾¢ùýLå}W1Ívß1Å0‘XAzH–Õùé�¤Ú#'`omÝSH¯½·lÕ.ñ—È¢hÃÞ»¬ßS4bï$[ñÜßSh{Y«ð©B >¥J0í�†¤&›òJ¡¸¾:cñœåµbÉy}œTæ�þ­Ð&þMôÄ·¥�·_ï’M:VèQÇT�ªJMªÑ}DB.+æ×û~²zïkúûO¤”†ž5òïØûý,^©à“—ïbÝHÒÍy_k÷tÀ¨³K°[�FDhB¯óô‰™«hÕ‡OYÒ壢9¡9ƒé¯ô�ú>–Z”$7ï–Ä,Z,ôv£ª¼Ææ©¯ôÏ]÷wÇŠ&buJÓ'"×>AÕMHV­¶[ø½žšíÚ#® lOl²™yÛ¬P–%—VooC+5b Ö¥WÃ2@4XÖÔ…ŸôÔ¹Zûú‡íW{‰«‡âLUì?¥ç/zŸŸÝ- 03χÌPýüüÙ&Úm _àïU^C(íðÅÖU 7SðÈ ¹Oß‘µjSy|ÿ�:u¡¥ù—ÐÓWÖ�C<eåÅ'î)3 ˆêoRç#i�ÖûèGô[µ]{ÚËΑ³œÄÝR±!¨§RpÖx’ŽC wfcØÅŸ”]kþ m��{§h€‚ îïóW¾åÚéÌB�d¸ì©m_„óKÓ²;DãßÙ Œeì``q´ÔS™,?J&N2%ôõ°ðò«™dýK—1¤¼ˆï¼¿ç¤ã(-A9ÑXèìžfì5ŒÊ…h-T ÚÛ“ú¤ƒ9bÛŸ –z¤?vºì®Ž’3rý¹µ^§<¼…Œúƒš×ÕUÕÕŸG®ï¡m}ª*' Y¯æ#UÍo͉ï/טnû‰óÚ6)¨¸öúñ‘öÐ é:}HGî!pëhEÖhU¸Ô$؆dÆdë13Ëù™ƒy/OŸJÁœr±ÖI¸‚v M#äÈ£�‹e¢ÉPjŠ(I<,EŠá¯TS(pùU&ýÔ‹(Eêä¨IqéQÁWéé,Åe‘Ç/«ƒÍùÓ8ÎEIž’N¡�¤­ìëvê!”(Ö0�?ÏMñüå/ñÌ #�Ë[òŒ‡ÂÉ’¾ �ýžÝÉç�0Gm=í¹…0Jn›„‹´}ÔôÛ‚ª¶žD€¢c ¢¸²£þÌ•ACh]A‰ëZú#öbÍöÓ�FÚ¯3> €>½Á«œá·�?»ø³‡?ûiÀOó ßéxÔvæÙb£K·–ÇVõhW›µÇÝZ¾þ T«ýôÜlg>ºjësÌmÉ[˜{Q( ¼ñóØU[J‚^*øòGœ ÔOÛQ+ >(¤D¾kc˜‚¦Úuzã@"�9Ä\¿Ú�jãé…iþ�ë#ò�Ö�HïVÚõöw?~¬UŸþøQ1ê’yKt�&*?Ây^}Ýü÷o¯$gÓ² `âWâX<â©ð��Æ@«g½Xã7ÿœûÑ6¬ë¿äѤèŸn*MŒF_)Ú%ió¿&"¯häN>Eà€Do¥¢ë{ÛT�HÆ·$ú?‰Xs:#±›?ä ÍVÉ€|�á�1Öc"°z D (o{2ú'ú�E²¡ÑÀ#Fd/"vŸO¯ÝQ½}^Fj Oñ¯à/RA�FmHQÉ2¿¬Xª¤ƒßsœb‘¬¾¿·¯ò| Rv;zÑõwÚ=_2ŽZ è›WéˆòJ�Ê¢ `Ûmh�Ç]Œ#~-R”m)˜’(I?ÄѵS8º6�µ�ä{¨ˆI¼ ܯèÛÁ­Ñ$¼^½… wWæqzbyœÁãðîÍ�«ð8Dnð¸*�Ó[[‡P‹˜Ÿ”™)бhŒBã ±ÔH¥M øX<Ķt_åñË©rˆ¢u‹º}u’ë\Õñ&Ñ©] ž),vƒ€VH‰ Èk\GóR"R¬ê Rz™´)Rdly™´�‚ V õä3Ho6 Å¡Žu†Ò‡C=‰`Ȥ nöb×Ë”·Í_Î&¢t›¾�70n 1:“pà0v%÷Ç-Pø³íßS‰þØOÁÖ2}ÅaÛÅØVÎÌQŸúÜå<ÊöÈv®I¬¸j‚úEç馨™KŽñ·ŒeŠ �ÖßT7Û /è’ Yú€ØýæÄïé«#P3—๙D%€Üˆ}€Lsï|âC“B*sÔEã=Vi~¿%�“g@߀-ƒ‰æOí,ù�àŒöB{ŒR])—ÿ™æ�Á=ªöåZãéd¿ÕÎäè1ºÁæ&m"´ ~9({r s‹Úr^CJd ^…0A¯¥H£±?Òëÿðð¶7”îÈ{Â^»ýýÇ: ÆÈñ^œœy¸™xDå�§•þ¼¢txD[íu$)bžþ×xdzßMÊkwÜA�`È™C�ÍcV�‰å¦gK*s'^©hµ†ù_Üïïù‘Íææ†ŒSôó©k\‰íÝÚœ`4O�›ðÍ�jâ°ú³ìƒ[Bý s§F»ÞVõ]ΡÜVµ‰º"5Û1èkÔZ5fÐW6ˆ^âš�¦!›ö©§°ìk*=³üMéÑú£ö¸ÊÖñIˆÞ›ï˜$´ëû®mzùN@“²yàÒ—Îè¯ù€H¯7ëÊãÞêJ•ïÂSÛÀb«ÛµF…¶º^®´TmEZO–Øwß8B×!èKä¦E)a˜ˆo­Çü€I|�ŠÇôBe‚­×¾Ù´F›AšÖ2ø€VZUÚ´^•…ãÙ®4ªEãŒz£¥éa´`¥J ,kaÇT¡cˆá•2÷Á•ë_šîÙÄ {ô±#bô~ׇŒS,…i©¢òŠ˜ã[ŠP%^2=%¯o”—À¶¤-¯t6±�—G£'Y½*Œ3è6×€ðúª”çôbÛ)ôuksäï(!çé§õl`-—ÉfÞ;gæQ #_‰Gè½ît]Xu—S×@D,WŸG+�Éý¬äh³ƒÎVèßLs]³@ƒˆü,ÿÂvƒÅb±ìi×›8x�žFû›Ð޶ʼn9]”H9‹Å þßÈœâIäL‹?- ã¸.ƒ™åæÐÑ‘¶S4zQGB6ƒþ[®¾€›v c–çéó’×åÍ#ßR 0G74�·@9¾ÀÅ„{~g ìÃJÀžÁL]â÷VàeeFÙi¡×êj³f¯dÁŠp×ïà•»Ðâé[5jtú–«“ÌÞzÁòeÂô‘‚†Ko3ÄÒ¹ô­ÛÜOÑM´73=Ûýh!*>wç^.÷W‘Ì¡N®œÛp¦8¤¦mŸ{‹s�fƒ*½xþ˜0¥šmfZ0`1òg�\¥<»¡Yν’Ò³hÎfôaDJÌ‘çȼ s;9˹†_“Òù®tr?þG‰<˜Dgâ_Û�ž{x†±?š‡Š’s¹È¾‰Š–=òA�ƒê pœÍ¶õ=MŽQµZÍd –ifq2džy�›»R %4…í�ãyO ΰÙÑé«ÃÈŒæañ«c�4]§JÁ&ÜÉE¤ë#�$ L´ÊŠ@b>õWŠ€~‚ª‘G׌ìO…ÊìF[£ :0bB©^ú7ÅpbZ88Œ“eæ+ò¦Œ[øß£J²Ö+ÉCI•U=ïù‘3vFÒС5°¡<ƒ¬:š\\ºþB£Àà gÄÉ,ׯñ&vàD«Hâ�‘iß]);To6�¸ vÓrüa‘e¡7­´lxä´±œHÓš: NïäÌyäƒPð¹œí9͈C‘®3u¢åx�œsBpdÂò‚Ì�*? såž#=M;¶kQ1˜ƒH/*†Î_öÿ³ö%Lª*Ûš¥âÜèˆs®§£çÆëh™úu¼`™G‘Ž÷ß´ª¶5YµwßrGmKr dæZë[I®ô¶‡Ÿ>ö­$ŒÏ¯/Œƒûxð®íÞ˜¼Öù/Ç�Çi[çÇÑá?Å¥,úª|ôÚËi}—Ió:°=<< {L²þÑëǧþ}uñõç?­ÍßÃDþýÚòê1ÝЊ³àr-þãÙjžüög Žcø¯ë v�wµ¾mðÿ©ù`Ö‰U?ëë¼û·rpðü"ÿ~ðz?HÐ78Œ%g�‰ë ƒ>^Ö»Yì>ûŽWŽü ¿íª êɇiÿ Ÿõý\⣙öf½L¡73è§Uø$ùŠê—’ÿ•xƒ‹~ø}`<âÓú08db÷O±å+˜ðððDäX±óû…òáqÀ às><ü÷gRøW¥\(¿+eúËR¦?!ÿe)ø÷¥@ ô«b®¤ß–ƒþºôgä`¿.û 9×F¿$çBúm9ȯËA~FÎì×åÌ~FÎ/;‚+éwåÀ¿ì ®¤ß–óËÎàJúm9¿ì®¤wå Èù‰ÉŸó*¡o8ÿgú�Ð/­Ä»A{_±{ŸY ·ÿü! ‚O!ò>_¶n‡–G?"â»…P 7@I–3GŒPU)é…°7Äd¹V[zT ±óduÞ'«dåްhw/#P«Y»j  ³T˜ØVd@~—M#k,[ʚܰґÖ2/m@ü è„ìç6{ØdA¯LA{V JŒZ3±Þ@™ŽŠ®Þd(»ì¤&ï„õŽ+­š1=LÉ‚véVm‹4÷mv†Øãb�‰K=ç6…¦ÂÎðô“!‰¿ÆÖ=æ`Öôbßô‚l˜‚¬„½‡NÏp=-Á�-"7_�´\Û,M7Ò»Õ ¡*¡d›˜ DK²I¯&^¡çk†Û:Åv—¼#BYú3ßSj‰Òg·ž/Å:<šlˆ†¥ŸLô| ó¼pQOFZ¿&¦|�nè@@Î5üÓ‚^„›îÌ•g)Óçh„'™Ö¨DÊDà�KÁâPâ¼9À—«ÍÁW)#Y­ ˆe¶£7™��°Þ®Ø‘ q€5”çØ‘ZsVíkÓž[ÀÅšwЩ°§­…!<ÅT”¥6ã±îÜb´�…®d�Pó-,Yƒv£¬‚"ãýFÆ™ \æ ß.–ž´Îæ\ìÎr-ž§Û3ªÎ¹¹Ãë.£mÈ6­ÚY“Èv³âÅ31g�5Œ.^ï,’u¦‡FJºH$N0�BÖÖt–Á�áëÞ9K·2ƒÄxÙŸM*=®ce/ ¡=§M6iŠ”êt¿,êInXÆ1vÖ"b�þ¼_‡3ÏÒ3OE³¨è;Nê‚Zãóˆc”B¥–+xf/âaÕ§ AõÓºCÀ¹ÇÀûiŽÌó)(6ªÚ ' 6ýxÏõdêÒ.©xGQàcÞ¶˜l°¾Õo·F3Ù }Fè?U°lraƹö‚Äy•° /ŠZFË]DiÚ{nwª¸²)ìÊîädר;´ØM�é•1ö®´Ú)5)Rº3¿‰”щØ)�µ8–‹9ÏSf¯KŠàu´,¹³`É›Hl=Ð3Zvn-2*T'Q»T´c³Vˆõ„@–Í[aµ�+NÆ,&ÄóJ7ë\mÔ%�ez«ÍöúT�»ÚîxŸôãïÔŽ�éü¤�¦a ˆ=“»‰7™ñ%'íæK>¢‚•·Í™ºåÚ£èS¸Íé–´‰Ê3Ÿ&ÓCd À¯– c3Q 28LQµ¶âä°˜ŽçMoaI®K^ˆ”Ü!Â:X“á˜Ä¶3U×*ÒÛþ4íÛz,ÛýD ÅÈŠê£Z+ Aö‹’ ¼­“ø- -}˜Iˆ»¯ö "ø§ZÈÝñh.-‰Yç/£@`¢h™�ki©%Š‘óÈŸÀnåT‹T’èÕÞ–Iš ÙpÕ,t>™ïÏV wpq¢+»\V†P{vìTà`wi–P:[ ÞÖ½´U…I¶èTaT¥Ýì¤3%©„]¦ûÊX6eà®çÕÆf¬_÷‡ã^ÕÙfÞ`Q€¸msÀ|vôâ�©q]£Ü”�·kòXC§¸©wøàÕyž=Ûv›©Ø ¦—”xìèiH·†¬'È‘¡à„bÅD˜îO½S–@,08E`›ŒÝab£&Íœ�æÚ0‹„§Ú€ië°^Ç‹-Ú±ÀæÚ eœÝTØ3´. k«¤· œõ #£)= V}¸Ÿo±ù H¾ÇÙQ ¡Ç‰æì+p…ØÎK¶l·aXf¶8³x1›ÊFSûŽ„R®‰¥Ÿà`{¦­7«¤êýµ–5%á1~ÀÆäJåN¥Ê¡é‚ÀŠÅËþÈS;‰¡¦ªuje8„ó3¯¦µŒiÔRü$e„3aY ç²C=1Á�¥ú5/l:&?ªf�ÇÜPžÓíÙÇXLò™,àì¹Nò Õ…°¢Ì~ê–˰—O0˜®_ÓŠµƒ@ØAÚ+|±á¶›ó hS$3�&Õ’8ÏLÑ�@1*�¼éC¾°ÖfžM&ªÏtµeŽñWÓ½çëf†‹î™¤YÇ ¶çJ¼>ã(Ëæ‡•¶š4‡éº¦öˆ¦)=ª5çÌô¼‹KbÍ�ÄÉ á£µ´‹Xâ€(<¼E!˜‘7G‡bO´Q�¥‰2ÕãjOÏgŽÎðj X>qåÉòÉkWdyŠïÏžÏg9µóÜÒ»I£Ú¸Øîð6¶úÚÞµþ$æR'ÈÐ�ËèRdaÒ8j®ZÁÌ¥¼ŽóO0h"÷1`âl*žmk]/…õd *²\nWòBŒÖ÷yLŒú=ñubó[˜¬’}¹šé L?ø«¬†×ƒ=ÛûtÒ71ÈÑV„•çtéÆ÷XžbÃ)– ^XîØsvQ_á±0¦óŽRRЬ³]~47’1^»žuwÕLÈxÁR]ëlž5.šÑ3É߃D»ðÆéI@‹¹8[ùÊK|E L{5Á3¹e”u&Jš¹ÝMŒu·ngÙË©†Ø®HÑó9-�úÙ®³Âr„RŠØ!¡¢âî'‡ƒ«’&´ß,sUY%Ý`ý:îj%;Σ}?93±“-]Ç$&F:­(Ý•~‹Nà •¡¿Ùï�<Ü�MÑѹ͌åÅ¥%%¬‹iÅ‹- Ä;Üd&»MÉ7ÔŒ4U.õ7§¤…fUv<±r_³ûvŽLŒYvîÁ=íë,i¤;Ì…r ´�!SØ€ñ¢Žƒ&ê"�0Ìym'ÖàŽ8;å›Ár^åU«”QÓ£çBëYëźC‡&%n:ÓžØ"`f§¹K² +ïëÈi–ŽX•?' 2S óÌã„Í‘IÛL(À•4_¸q}\­-#ˆ]lÄÝ’>KA[äY›VyH QJ7Wz˜Ø�1‘7èÎñ›LF9l¶P$ˆ®;zi““Â1²ñt’K¹N�Tlº.öxr'¹œÑÆÝ—biãÛ¹v<á$se�E6«‚ôÃfÁ…ìv’qRe˜ðq%L‘áWÕ9hzÈS6m"�˜V¬l2Ö4{ð–pĵ®Ë`ÁW~°-x’Šq‹OÏÚvæ™7äûî^¤v°wP½ù^§OeiºxÕÜÕÂðøW{4¡;Ë® ”È4;­4©0PD®­:ÝÔ]:‡æ!ã³tIF{âÙø.�H˜Ä£hV›Su4`ñ8³Úš¨áÍ@›¨»?� iTŸóƒùD� ÙŠ.Û­ÔkH…‰ÓTjwRŸA€<ÏØ¨þxžIÇ ,M# 3Ž|` ¸;›–UpôM§{J4ûÆ_�Ü4ÂEF‘;p7 ßcTÌ×ty4ÂâsŽÖ¶0²\=Ö«ªQͨîÛ¨ÄhÇ�¨{¹ÀÛ ©"kØ&B&è À’@\jbvŠâk¹¤fʾå&˜2YûPc‘A�Nösº[B�ªðŽs!fMÍ®Ñx½å�´;µï™¯;²–»Îžè™A‘DÉ.¼Øv‘×^C¶œ+#„dÐÊ’„mäîHÃ�[âT^ 9³ õ|QzÅ NªDåÏKqv¢,:ÔxÄ 1•AWpŒÒËyW[Àe–Ž®žœý<Òù° ¢|péûÄ~³æ&aV8E›¡à†`çÛH ¹§y])ši£¢%Ô¢(¬dÓ\Í×2aØ›iåÚJÒ7Ó£¤zq*k‚åRCSÀI> Ù0.«¾¬§’t˜-%E�„ú¨Åò /ØT”l0¹+(3cΤ‘PiÀ¶¤SÉKdÈÏW ?ÅÉÜ:-M²Ðç­²Èæº¾È®“¥�]gfBÅ$¹Hxɘ+�Å09!O¤3êë›ôÚª’áw20¯ �,â½KNÝnåÅKHÉ�ÔÂÍÜ\«8‰ÌxžËÑfï›äD5€ñŽó¹™N±cŠÐ‚C9<ÑztPÓÈ�fÄÙYѳéÙÎ5ûÀø³9á®Ò,dbk‡«vZM�#™]´ÜU…¼?ñkâ,Ýs„{‡oq¾ØÅ~²�¼ÃlÑ@‡™¬/†Deºî¦kJF¡5¨"ªš³ Ÿ„s€Åõ$·sËTN0u²«Êt$"˜¢>ÙÌ^Ø’°):!vúæX®Žó¢†½Ô vmzN"C(x®rÕÈN5Ä{ãhùR™pª­À2Y‹Ñæ´ë›ÖÓZψ9Urõ%ÖMN8”‡}¤ªùYÐÇåÀÝñp.:PçRq¬áe k‰€ƒQÑǵ™œ`žÁ4é&:©xT5“l= ` SP¥¡ck€àVü‰ÏdQ½9Ì Žsä¬9êöt‚ŽÔApÀø$êKÖv»Ù,¥* 0‘a™Ý—™r¦¸@åiŽeùy娲IYVš‹ÓþHæž�å¾5–ÎeªïùC §Mëá<*÷òÜ<êÛ-Ä3ekÓ•% {Û@00ëœh›cÉí±ý6„÷¼�…FÔsSdEYŒ–[ªej‡b³Þ[¨èuËeÁ¹´.7Úч`)BP°RE�KÛ!P·Cb·Op�-¤@S8{p±‹íY±Åš³u àV…%BCFÙr3t]AÆߦC¤¶‚içªzÒ ò‚F™Ý ùÔ ·ç…É@³hû3XBdÆ^ô+¡Â½t9�“|YË ïøC©Š�+çôÿñÛãÏĪÿm|øõÛÛ�¾OOòÆ'iÿm{CÛ�·½~ÚöçC’¥Y•��æÞì(|¿êÍ~è¦Ù¸©ýÕ~¦Ïö9]>o­2ļºðnßÊí†ÏËÅÒ·B‡i0n9¯ÃdPm塯a}þÑìfcô˾âËȬzztX%YV.Œ‚Ò:WŽ?5;yvÖïZ º†VZ•ç>?Òü¨×ǽtuöÃ}y¯Çàiwåß¿ýçúýöFEc•£ìô>3øKfwÉ‘/ÈË2;=m¼Çý›» ¦÷Ø^ߥŸ}A?nu»Ë»ÏÀ±RÇ»¯þ‡±ê°Éï² ¾b1~sð=Ö ²ü|—ÞþŠþò•¨wY8÷Y¸^ìÕ÷oÂý‚Cö…Ix÷éÇeö»ôþ}ú0õ³{ôøýÝ9}á"ïn÷C_øƒaúwé¿pC¸kGО ùÂ9B_8‚1HÝ¥ÿÂ�W]BÌ=_ø‚ÒóK¯:Üeñ…3¸žXýè—YòMG}án8Þeó…‡n¬H³Á燩u×ãA_x‹'^wY|á-ÆÂª»ô_øŠk�Ï]_x‹Ê«‡¡ ª»<¾ðÕ¸­ú=ü…Ǩšü«yá6š<ά»PþÂs4•WÞíø ×цÞ%¼/ïä 2²¹Kÿ‘¹´þ¹•hiÀ}^ýP†îCæßÀÞk1ðÏ^°dv©SyãŸa<ï®{x¦Ôø8€Â`€ªIèºOò¿/ w°À‡aÞú~�›âþŠÇéqèR U[Uô /¨G„ÇÆW©? 9K/pë½Ûk�—ê™+†þDòîn=Ãk°Ž¿Û�ÿð7s®EèÇ ^ËGßUöÞ ÄeÇÿméÀÓ6ôÒ{[×v#âÒÐ «<¶Îæ=ü5Ö˜ºÙ)ýñnÁAðLüQ¢5¾.wkgå�üýPeã·CCßüÃñÆ×ÍÕDZ ®©žËÞ þØQ‚àÛ,hìðÝîˆDî¤E·²V�…¼Õ†_—£Œ=×7»3¿ìž§zÕ§Jäe¸Ë:þy.×2%äýœùœþï¿-¿ö>¨AŸzé­Õ€Á^òü¯¤ŸM_ïØ=Ux^Jšþ|xá:‹o*žžfÊ3[_ŸUÛ�3àž¥Øÿõr‰—6ŸÏãËÏÓLýQ ŽõÒ�ÃÛ2°­ßÁ?žþý£ ÿ=µy‚ÿ¸�ùOûˆŸwë¾±‡ë\ÚÂûRYzçFþç0çTѼtÇô¶^æ�Õ<ß+ê/ï½Ý àGÅ6÷ÜéÖÞãeñb´àSiåW«~©/? ŽÙK¬ ü¸2$“a^…W›¼Ùh=Ô¿¾±¿û}páÿ4³GëùØú¾ÏãbÇ¿¢ÈëJCüÌ|�Kù¼ÏûWð‡k…ÒŸßöTõ%Û¿,gŒ‰#É—|oÚ~S“[Š/óÁŒ}o»»›Nÿ|€0èÏ‚¸Øô~mήÓG?Œ_<ä󴇱·.äÓhõ‘׃}Ì#¾oâÚ�…¾c}m™Ï |Ô^UDü´ÿð;ÏÕçŸà¡�láM·¾Ž‚ð§“ÿc²«Í¼/~¼%ø*=ŸWðË#òY<¼I>ðë3ñ=Ç¿^Ÿ0ð\Sšf£7¿mé®û€Ég€üRkz­êx9ºzÕ>¾Þ »eÝÖÔÞí y[›ú)@úX§ëèâ_#£�ÉŸæÔ@úzXÊíɯ°Ä7ìø£èÿãTŒ÷óè KÞêq=AÀ‰/§+<^P̓W»¼yò…¯Fñ³Ã*nÕÓ!ÿ½�+ùÇ�±Û8ú‰Ïz©Hý¸ÑgÐçŽ\ãƒÞ}õˆÁ2­wÞ ~=¦Þøú9çô>E¸3F?`#6¾>wæÿýÍaøœé;^±¼Œø}öAÁð‹÷ÀÛö&Å�ñÀx_à_~ìu?ʶ«›gBO=ô’û�-¯c0¼yQÛß/ØíØTuèŸ_üÇ¥QU[廉q9bæ¯ëA3ŸëçsjÞëÑŠ>ÎØ+àütÛûPC¯u˜XÁI³¦1éõ,¤Ç`ûáf~¯³§<þâ>NÆá�댯?>à2ž­öì+Ÿµ=è3D¿� ±•WCãçw÷úªþýDnáÈgO$?y€YÕ¥W;‡W^ì æ°|º&ôA zs?ûa9žÚqcw¸·»�ÝÛÆ~û,¾Ý—z·ñ©Ïë Ø§ãö<(/^_?ã…?äzxÒ½él6ý4Êüð??PÏ¢¾—â}Ns›ÒÝ&$¶|êÓ�¿Xozdoáôôý¨üïkRü>X‘»‡Cˬ¶j�þïxìÓ¸ ª ŸÖ.ož¸_[ýN€®üñó}Ä¿Çsh÷¦iö_cøy=9`‚°¼[÷ýìׯð¾^³¹¬-Üpú™E›g¤ônÅæ)²|”W~O«q»Â}¥|} ÔÈócµÐÙŸé@xãë•Ò©eǃ"÷õ/?ÿ.½n¸ÝÓëz†Ð9÷�°tžaÂkëA?Ë&>&~íláOÌûÔÏééG`ð-å'iÕ5£zF!èÜöòÁ' ÕPúôhá½ðJ›WYóã÷;ã#&O]òøEŸ\ìòý¿Ï2?“y™Þ_ɼÎÇÏXŒ†û{jÛÎ{‡–ÇMõ_aþ‰C{ÃÄ{�§ üþ|¶$ ¢×ƒ?_Fã’hß´õ6.¾ÈñÇ¯Ž»ß6½³°ù£í«™}º†ùŽàùœ²�PäÓΕkû'ÃyY¬zé¯çûª#ðÏ:âÏnð�¾5¿éº{Ì_¯Pý?öÞDKqäXý•º3ö�iS öîçûÌ^PµØ>}Ihaóñûö—›¤””) ªzf|oMÛ3´bɈÈÈÈȽij‹Æ‰6á{ÓÎÐ{3 sæR âRA˜ã5TW/�‘€Ä¸ËíÝ®èçç�,ì‡ô¡'ôIM”[ÊêXžÀ«:1µà[tœ$GðŸðô«ù ¥Küñ˜s—ì¿ÜœŠÐã`–7M''¡«Ê˜Å$� ¢8óí -ékBšHæØ�uïŽ×ØYëÜEÑçYÅüsú°c¯ßáÆ/nE1‡)†7okq§ny¦ñß¢ëŽÆØ੦Yq8sIœË‘"—üÿ g_=ZãME;^5ãG\7!ûÅ|û:¢·4‚K&¹üJ±îÈf¬”„::þ¥­\ã3Ö­âªà8·""–^ðrVR‘Éz¡„�ìšÃ�%Î*‹/‡p>"3ËTad¸Ÿß¾38î²eˆør …¿&¢9i¢1A;½©iLútŽ«1í-ìÛ‹™là %‹lÌ8^†¨�‚~)ÚLó s!Øœ*ámÎ$×,f½é7¢}e%£«�½§ˆ î‹�K9\.ä•­ÊÓ½¸a¨S¬²aR8¿À /³rZ 40.ˆ«Prÿ¾gõOÚ ÜV\G�%ÀÕ‰Î[�÷÷Ë7Dг.ô§ÓÓHœ‰Âê…9]ß�¦’a€\U„’¬Î­xYEqÀ©öæPÞ95E²,z•�F(²XJål�ƒÓéxÇ8Ús ;øWitÚÅäp÷<Ù™·G2Y³†ÆÜÐV’Ã/áQ½»¶ ,«í\¡’�× 0é¶.è%¦’hÙ†ämß?û dÎáʵP(‚#¤ôȶ,§I2–«Â—­ûŠPŒÆ£tÆÀ:X$=rö7"÷‘-;~™‰€äž €ÁçgÎ0-΀`Dó¡,—íMÇûR“à—P¿éO;Š�H›/ùfÝ`H­P}¤sY¹ó-œiPk^¬ý9!5Ã8‘³h 9WÌŸŸyÿÊ^¡yd_ºSKʸ�€ñߟø§[~p²»Ä89ìÈØ …=°=Ž?¿‡[8þPÃ1'\‘°ÄÌ�þ»8èÿädM¡L40=Núæ´Ó5G,¥r(�•‘ %µbj{0ا©#1¿C�ÌB[9»bð-ÌH ŒÍŽ÷²¨ìÚC—E»uÇI=и-�Ç©�s!¦¢ýö”A ?s)½Ñ±�2”��àp1 ɺpx^}f$‰Y² Ö&L'¹;ƒk¾]Êiÿ3ÝôßN1zH®D=arvþî‘õŠU‰¹nmëð„ŒöÕë¤àK’^?ôo?o/¯)—*�wh»Èz.®Lô+qEÞ¹y»ûƒKåpñNDÛtXˆÛ…¢=!×ä3;¢²»ÀìëÊ™™2—3uvúØqàQ»›|8œ#@þÝM pæÇì€âÉ‹1ü<`£N¢Çq´~ýÞAË-—mˆöfÕÓ?ÑËæ.-#]pAŒ“ûˆÎÜ ÑÅr®€�]‡W"ÞD=jÇHX“wžù�:lçœð�Î`ÂGGÓÙ”Ý3‘Ac„'~Ý+[NKÆ…sHs$IÖV’ˆ¡BG7QZ�N�×ׯÎÊ£9²+#1�¯1.ŸaФ­¹½±¶Ðäø–/æGÙrh)�ÉÝ�~V\ËM³á;g¸||³e¾!r Ôx‰}5Onyá€Ã Nø—³è‰7ažºä±õÁía…⟃s y÷UHö®[Á¯Æ~La�­PÁS1ŒqÐ E¡]C�&Ãê—±f~L£Ywiöÿ¼2Õ©—pÖ@Ozùn°  îÑIƒ(}Ø ðŠdæ”Úöƒ~‚f/ ~M0>íèMï–h¢/-m@—jú–Å�…Mu¶´ø„?ÞŠÎÁ"ÞtÂ�—€‡*œèžøÂ”(¾°$ .ºû_åHÓé;<éý¶ Uæ Þô~)ÂNÍôÚñd /bÆ{UQâ ¼}�8%M+M+Ôÿ‘t> ª ôâN’ûotÓéGˆ RTÓú-„õ•€jdÄ.wçî>œ¿}ÿîåàüŒ?`—­¥I ôG\ úòý;îû¦mÿ€BT”ë¹ã6'Ø¥|H”²ôgYUR‘í�ü5{‘/™¹–rM*öÿ—ï_T2DöÀ¢[{8ÆSY×Ýq*kÁ'Á‚¬Çµü¯ÒJ·ö_Bvq#äð×lxÄä1¡~¦mu�ïÜŠæIHØlÒ’"­Ü3�ÉÎà;q�¨é�¥¤Û9÷t<ˮ̳±=’Ç`Ä}�%ãWw¿ßùYîK°Ë@Ž’Ÿ8HŽMÄ/®šŒ”Î?f¼�élQQöi\Ëþ¡™;RdVøØú5‹F¾Ù/þ\4°U4í|`»�bŠS�)3™‚™9Ã|¸QÞß>¦çœÐF.&Ä7ëþw0Hü+èçþy–ÄR˜Ô>r×£!h¸Aнwé”\J]T£öš†�ïVxÄâzĶWrßBROð[ òø’û�áEe©á+¿¿P®Ë’�k§ÍY¢Ž•ù°O—1#æY!”BÊ Š–E7\z¹}"£0?¦áP_Á­ýGÄÛ÷–F&‘òODcqÀ28å˜gL9Òì¨Jp¥«õ¡è8ÈYÔ¾)ïÜ­%ïª ÛÜ#®�Š“è(†dàeL¦ªþ%ªòJôn/ˆ;ÈŒj*ÚO—v·¬£ÌNºÖF¥#§éùQÆ¡EF2LT2ÿíí’gE÷`@rºñôf)�A°÷Ø%,ÊùKÚ9GÀÚß•s‡4Üü„›Pºñh#¿¦Ó aÓåù/…ãÑÃös¸éîK<2ÚôzŽ×/ £´ãœN;|׸:#»X>ñnbNƒµ‡þÎÛxþÓqc² Ä#Òú¼­«ÎlÀ{¼“AÿÇöP†Àɼ”Eé©×÷y'å8]¶/½G|Ž'ýɈý?¢‡rR§Þ}Eô>_‹Jô>JÝdß;•äxd„~àGÚÃ¥–JPî~pê9Ú#S}0òØ ÉÁô!{\l‡ÃZÁÔ¥±<•Ç!:ÆÆr8ßKý?tÜ[ƒ“+$Ab¬ ÄË�¨VŽ­:TþWÿ¹zåÈÿ#õ‚ùÓõNÔK`ë•wô"ôœÇ«âô*ž®WþD½ò|½òqzå�·@âôªœ®WáD½ |?,Äùa!ª*h½rïh`Å+ò+¬§X1ª.|Šq«5^±Ò‰Š•Þ¡X)²2|š½ÃË'jVfkæ¸Yd+;š±Ôw5CáµÄÊ׬r¢f¶fEG³|„f•Dšåod)�fÕ5«ò5+ÅiV…2 ‰4+�®YîÔÌ#ÇI=JItÃ5VˆS®à45¯$Ê�œp�iKéB”r(B“('dߡܩIHŽ“…”IsŠVyd™çpª�œnòåNÍDrœT$™r¨5U)Wx‡r§¦#9N>R&á"Z9äp¹Dʕޡܩ)IŽ““TåŠQʹ© ”¢å)Ê�š–ä8y‰Û}EkWr<.V»|öÚ�ššä8¹Iʼn†ÑÚ•—‹×Nx‡v§¦'9N~RM¦]Åñ¹Hí  ò¢æ)Ú�š¢ä89Š›~¤Y¹Ú¡`1‘v¥ÓµNÍRN–’sÃ}¤z¸v& ¸ê¡¥Bôx@Ó‡#¯Ähª¶¡üúÓD´Ä¯èCÆÜÌR»•rþç|ü„wš  øë?~É]äþñË©&øÛܲô¯™Ìv»½Øæ/4c–²Ù,¤v�¾îàí�LÔ\µZÍ 0D( *‚_{÷—¤âÇš\iD•¶è|zñLÀE|E'ÆD&‘Œ�>odi[×KÕ×`ºl=À. ²ƒO*šŠ<dη€ºäއ1¤†ªŽ÷ä‡Aþ  �Ÿ<‡ýÇ/ÌZüúéË·j¨n$û·ÓéÍgÿǃ²Þg|>Å ÈPýAz|Fíÿ”¨�¸Âÿ·pßIžc·»95yøò %\÷AÿúƒÅo²ÿõ=Ñ›£à�¨uVQ¿�1È7z¿W‹ÏØýÃb7ˇß¼ãë;.tÿ1Z1CWKÓKÖép­+"zVÂ3‹?£'?sßx&~ü½�FÓd=mžXŠ Ó„“U±|ÈD5aKâŸvNFØَ™¹‡‡¦�[ƒXKÝI�ÞöàvÂø¬pòá�ç¸l0M N;³ågÎR›+m)EÒ¹Ï*‡�‘ÚÝÏ£Ž?ë[ŠÛ->žS¾ÍJVuÛJzb�ñZFP÷‚�°R’2ÌÆX_�”[œÏ`ë$O»£k÷ý|¢µ óqמ’ÇB ?°öu éIa�ÅîÈ�ÄbqrPb1;6,E tl`ŠèØÐÄb—(<ð “G5>�S©YKµG™Ò­—NÙX+âfÃ&ÞQh›ãeJs ƒhR&™Æ*¹8&®Þ%<.w$�ïÔ§—ðã­0ãÜ‘1SÓ™cCÖ-çêÔðϾ«‰¼/å» Ý›«™»4¾G¥iÖ¥³3CÜ£[‹±ÙÈ%kA,QµdÀU4É킾ç½é‹¸»é>v+ßBsRŠà‹W8Îû“ÐCLRtài€$ÔNâO½=Bø­+wlu“ö„o§Œ‹†koòDRÂR©+N³ìƒæ~Øäü£ËÈ I¬_ÊC¶&—¼ã[…˜¨²:•w¬“ØÇì&‰-šÖŸ–¦ïs9J$vúñQrÑWAü�Äòn8J¨ÐäÈGHê%ÞçWÉ: ÎRéú¤ÁdªŸ¨®‚«"q5•`4õþñX¤²œÆ’¼ª%cïHO‘>Q]ý¸OxYÕ¬ñÜKÉ¿G臜çätçá6ÿš�O 깂?º>îõ�Îu•î•Õñjrƒ*.‡¾»È{ÝeÔž9� 0ÓEÚQøœ5zæzuÿ©Àz�š_ÔEà³ë×LC¦ÓäÙböK‘ÆO‹#Íyy•¾rÓÕ„4æÓTxù ÿ“Î.ÊE}÷…þˆ¯ Þ=JYÉ'†�­Œ|Ï›p™ŒX­8Êž‘îâ<Ûˆ*1ç¼0è|u®­å>“Ö†Æaí #ñ‹ò­w‚‚~Ü&À'aX8¸ì¡9vï�ã¦%ªt¸yîߊÿµßâg!ÿ| Px‡ÇC»Ö¤,üÃ%ˆØïÆ¦ä¾ òs¥ÿÄãWÔ|è‰UÞÊÖ<-©ñ¿’"{«ëÇP¹/ƒ$¥ž +Ð/ü…ú?Í'†<�¯ygÐaŽZôª ó†�î#œ�ÅÅ#œ:œã\:´¶’Ø¥Ù”¿¹K3f;t *Ó�ch˜Î̧9Æ•“r‰$~ŸãÁØ{½8¼ÚùéÄŸNü›916¾×…ƒ‹ÀíÀ¡eÓ䉓òÓ�ÿØçvÑY¬Wï�aÈ))ñIëAʨ¡B—9F"E¬bQ“Ü e*òDJ[Úl¦H´LPwã¹ç1ü–ꂤs`d%b—JŸ÷~`<)· Ä’F¹X,13 �¦Àzãcs¥X*N+Š¥cůé´"–ŠGæJ±DìæKÆAOè‡Á±vr/”Šùj>Ò~KÇãs½0–4Ê c‰Ù^XÎ�sÇ{aÏ ã蘽h±œ/ç�ôÂX"NÐ�#ã Ÿ6\¤j�f Qû‡™Üàr/õý´‹�yØ‹Ñä¨iIäâ8‡æèa:³«ý‘g´‘fi!S³.wa�}„ýþ^×€ ú|Ÿi“½�¦ðÎÙx>Œ°_BÇa®P4È0W6ßÑH®dëÜåÈ8›™»"Ëbäd•Fá�;L§)�¥`®ZÛø¢(¼sÈ�}ì.£—á5Ä¡¥û´(SEêy ²�6„‰4Ö rÙ¶¬ÎA-[Üò?FÀ=w Á"8ÿ|G'ˆ8ât âÇì¢úÊeCœÈZz„îû}ruZÞª-Ɖ™äÉú¶EHxC5Qh4½B"¢Ñ#¶–±H�¾úX�´Â'ph²-@ÂÐ1Žä(d–N"Pë˜È�u�Ê¢²¾­ä…<èDå0 ,2�0Ð ùgx ÷鞟îù‡qÏàøïÓ9ßᜡåáxçŒ#9 ™éœ¡[Þ뜆ëœ8»@_ÂîÉ f#ˆñYËopuË _¸CÖð(&ÙÈŽ`ù7ÆÄ4*ùÇŽà!õ_íü'%óG$çènÞ衽o?6þâ¶ÆÀV–ÐÂ�¿ã„ ×ÉØ±>ˆLîbðOE“Èjr"¼_DhðQ43j?�?êQ<6¢bÓ·EPtJ1uÀ•αkõ-á6Â3ÙîŒÌ4$™cwzÐô„8Òð|j·ð¸�„þº‹Ë¥B†ó0�`e‹_Øp=%àÀyÄ/à7Œe¡O·ùt›8· ­â0�&”>F9 ™é4�A÷ö]iÔx¬“+IµÓ Z%¸LÖ.Ó£Œlòh¸Ë¢¡»I lÜ%Ü ¸ÇO´Wòµ7&9sá�‰±êÆÄ�Zrc$YoSdÓJ�À°ÐÿЋiáïLaò„g:ý3A$qÜLÍ~íÔ‘n€�»);¡Lɘ½S(z�úCFq m÷çÒ2,žœš}˜.ŽÇ‘wºaò1ãîOø�Љ¼çî8ý別 Þñ)÷)EÆŸ# ßåRÿ ë< CR'ŸsÃÿ'.Âý—ÿ-¶H§ác:Ðÿ]¢ßƒŠs&î§óü_Y™ŠÈž5΢ûOÕIãåHÛŸB’ "Ì*ª“2s9 /pz�ãiaŠ$Í>L•¤å‡©ŽÅO°òMÓ…Ž€Ä]¦KÒðXtñ5ço>,ÜF˜”×)gyU{"ñQçù—ð`3¯þN&�ße:¸—"|F‘Ï(òE>£Hò(¾—âÿT a\~‘ †$ :?Á6§ÏrT I\µ'GžÏJ^qÿ©1.0üÞ´k®ÐHØÙ8§5Ù”S ZèãÊñmç�矪eð;Z‘¥g–“Nœ¬ÿ‰œf™�Ô;HÇ«™œ\Áƒ×Š}?wVÆ�kæ_à—dýKS¥4yÔ&xëNÁÑMp…h«ñK…H¹!qˬD�4tyDzŽœK4˜(޲̲’qwâÓ�âý>’7®ËD�ȼÛ^N›?Ê`Q×b.s¿ÉÊQ—I¹dœ|‹ŸGÔåR|*æ5S|ôˆ §øDì+lcVÀO6É1÷óÆ�&1N‚+xR&2wuþd{q9a8.�ð³G'7%—Eäö‡<Á¨ƒß"ílª¢¶á»À<†Ë¶“ïð@tµ7ÎsînfíÎÑÅ™¬’‡ð|ï²DŽ0ü{”X<â_ð¨œÛõ�Ùø80¯/d³È1¶Ä%5 ®ÌÈ®Î%;æ¶ÈS+ Žü(Û»KÿC¿Ó&”þàï´½ÛÄ‘~æ{v̉-‰^I;F¼�|Ëí½BN~÷×Ýþff4v$uEÜ»ïJ¾£sH¾}“Ë"j£%—ˆùˆ;bï'—†ý™‡Žg-˜o’D¥ó–8ÂYs|¡ª¸�¦o?6üì=JøÆ0` ép"âuŒŒÍâÜ÷g(z¢¸¸M8p`Š"p÷ÏÇoÀ+qÊä2ˆÔ”PÅ�Þ`‰z MÒ]†<%]FI·cÆX‹'O›ñDHBKfÒ�rJ_±¤1M)î²|ªUq?Øgûl`Ñ Œ{‘°yWE6®ÐQ©ÿµ�+JSvC‰¢à5®D4ÿ1�+�͸�+-¯q%.6‚4Iã¢fI¢/ 6µ0�µS²¢ég ;<+G‚ä`è#óÎWÙ#zíÕ˜ª‰ãg€æt5£œ÷#Ô¤ç8q¨7%]'pÅ($ÏpÄ…¨Üµ¼ÄÜýâ‡V<à‘ï”'™y^��1hdpß)äRuâtònÑçÅÿµû‹>÷(þ¨ýEÞê¶ÈyÁð3†|Æ�ÏòCÆ�ÏMΟ›œÿw�ÏMÎ?:€ü>W‚ûÂ3ΜøxOä˜ìÈ;H£Môyÿèçý£ÿÙ÷�RWJÛ*jà¾ÃûˆÆaMÙf#.Qоë?†qÌ’Gä=íÆ:´BÍ8f&þ݉mÿô~ñʈ¸²(úN¦hA�¹ÚÙV%çyåO™ÊŠâbQ‰Žuü¯åù±�ô,¶P '‹“)4<øb…ýó� Uеãd åA+S\«ð—Æ¿8úN—c[WŒ­Ž‘á}�Óe3¾aê†fáL1aÛ Y»a±M3�T¡vðñ‚…çC®`óL U¨…~¨Tq 4TØ©m”ÏèØfo³#%ù@$ç]â¯gü p¶‰:/ Pæ€Ü�Ú‘Š%*…F‚EéM¬ba!A)1ù« p3ÿ1å›m‚Rb’Ƈ¸f_`´ËéOn|'9h¬ïpsÌŠ¹°Ïkg>Ê´.¦lÂ#¹ÑO°P$Ñ» rqÂ~ECÁ¯aA¾~Ip_@åŽå82LnÄŒ9�'KúÀ˜”ÜtIŸy8IŠñRÚ�4ј|ç`#þxÙY%œ®D¨:X·…ú�oú`/:–éñrÓD"ò:”¤-˜ùf¿ïú�mÉq;ŸôY(U¸{¤b;Ťj0/ä竺G?B_^ËÔ"4<ýt >©?¤giù#ûÿçãÃl˜ÿ÷ái”�W‚]ÆoÓ[øýëC:�°ƒýÈnƒ;ë�ÐÔïé?~ps�ë>M<þ‘táö &+ï¬<è¼ðÎö%=a½‘±m�ˆ”ÕýýWšä™Gã]Šßk‘‹{ä*'ÞZœtI“*â„5M2º¦5áNâÄ‹šTéΪfñ¸UM"ÁÇ-kb†¡UHgõðèEÍX~É–4)6‰×4Ñf”ß!ssæ/¨ò}cèà×HF ø#“>ª˜�-¹ÿ6ymº™ÎÐÚ½'5) Ù¬$%öŸjy��¯$w¡we¹J¹RJ>\…qºÿU8R¾“rˆhzBòÆ—+—�õb‡Òq•C"ø¿Ç´@Œ#ü'«œÎç*5[ñ»ÌqP’Æ-𔊞ߧ©ø—9%\ÇÚ�™²†Ëeìäs®%ÙÊkN§QtX¯pÂOC¹Kd*ŽØéúJVeýŒm€GO*Eêô#ó Àþä×wLEZä�"Çóþm X·GOE»Ê�Ì£ qèÉ h3þ±&�‰ÈÔO¼è˜)G 4Ñ/÷d‚ˆÃê-£ˆÝºæ;V�l�¼‰#YWìI~JÇëØßÙï‘ ª˜[?Y*ú®�d(5RÄñ’¯Fäf’÷7jžÔŒÍ—?@îSôï+õ)�™+qxCéGHLpÒÒDŒ‰ô»�ÒøœÀüœÀ|Ǧ㾾ÁAà{ÜÝèÌ[®yÈw2óH¢îËpT4UÀÞ¥âÅß %샺 ?�þùÆÀ�z¿Z(Ïϼ¯DöÄ!–p`R5N¿¼›Ë"ê¶n.³ê¹ØIÞJG#É‚ë²P,c[Œ]¤ø;û’•Âép�¡3ÖÉ‹‹Øç9'32¦Ñ5SÆ1É�²âSiáx{ªh[ˆdS)¤iò¸H°PqdjŠMÒ6ä ß›´³d Ïî­´²ŠXŒd3ˆ¢•CÈpŸàî åñ•œŒÓ»�q²Û$ãw²­yŽó� ˜GNä�<¡÷ä8uå8#_ 9.Z&ï]¢Ú[<—x'À̺<^BK‰ŠËBߢª8è-Iy$IÚâyÅ:3ód„/æs ±´‰¸Š¸˜'±öôÍÉ ¥Ì'’’¾Sù�Œ‰;‘•}Ì2ú W*YM¢:“ŽLH¤± Zé¢!›Z¢b„BQÎ9Q2i)dÌSÄÏbe"ŽŠ§ñŒm…’˜/r<ŒÔWÔÚb¬«Ã«t\zÏHaFsCÓû„¢kú~î«}¾n :³Œàó>CQÁ%æš/ÂÃ+ ãnKÈ:qgÎe­iƒÆ FòI¨�ž<ˆå¨ÒF–¶ÉÌ$ðj·_YÕmÐ-K@zTbKÑ\šÆ2åªÁô}æK2ÐNFïVáYš#µk"<)ô™ÅüŸÎb>‘›ˆ$n™Á Ôß¹]†¦i?ª]†Ž+ÿ1fHÌk™'rNÖ4CÌ?Ûæ‰mÓ7¼‹ï;“��,5".Ä–±¹Ü—fšbþˆc÷ÙßéØ=o÷J?Zš=ž§-¸²“h#mÒ ¤#縸,˜Ë IF´'úO÷$ûW*ƒ6yÁô€””˜‹-‘&:vÑ'Ñ:ž�´Óái�¾*>~PÁ¢J>Bõ¨a|Ñ€ï5à‘ûq_3 òÉ"ùpU;’ÏÉ !N§ØÔB2dž¬[rÒ隇Љ"6ý1>F8~ Wõ^� ÌáséЇIˆ¬”t¹›mßä!‘MOš{!ZöˆxÂÆõ­R‡ïqcy+ÎQ'¯ªsYD-©s‰˜‘™‹±˜Î¥96¨Î yt1Ai2Z[B–u^ä ͦóÞ¼çï PN5Í:¥DBUb¼öì‹ùÄC?÷–$ML]áÔ÷hÁ<6I¢Ê\a}�*n(':ª_ “'XÒ Ñ±jKÑÂËJã‘©ÿDÐ_ìUV<’R²Á©�.¹ùª/¸×0nùÛG�á,;Á,`6GË2yù;å²8Zi"[ï”!È"¹ Ñw±Pˆ Ÿd Ëvb’àrbŠàrì*]€\CY™¨¼—OÀuã¹w}ø+ß04ƒË*í}Ôq÷ʘša9\D þW¡ãpå"ü“¨¾-MSFIéÍ•¶¤›A˜ð”ÕyÂ…7>K"]8¸F‹Æ?ÀA î;?Y‚q<‘$¡ sŠ$Qãî* LlñVÚH¦v¾Yçò£Ê±dëø-¯ bߤO^`ÊJ¡“³)Ù8¡:0#�ðDÝò™%Þ…pjÑGl×à^|dÓwÎj“½ðá¬âDǨ,7yÇ«Ï�ª¿ÇFÕ¸ª‰™M§q-á@|À Œ�ܳþ#Ý4b0±u¢*õoŒóEl²°šd{[€9Þ™½mñ¤3JïÙféíèB7bâÀÏPîì¿äìâDÆÊƒ��·Ž‰yáÐÏ'xmd%Œ@ö/¦ÑEC%>ܹ5ˆ�rÄ& °*cIahRˆÑ瑉�æÛÀØUé„Ô»Í%\úî$´±·~2ÝûÌš‡•u¶2Õœ‹¾ÐDˆ[ÒÓy_UÍú•‰•Ï%àË“/¾ Á·²5ž§mÕmÕ(Q÷¦µòðÏ·(¼öz4^l=šL‡×ZŸ$¦¨N¨×Z¨^!B«#‰°NG91É>¾ò�àÊòõ+¾ãÈ7¥]«Bµr´‘eGHçlŠdù&Ç3Ç•iQ*„-é—±D,¯Œ%bûd¼€þ ½™ÂVèX*¦OÆRqœ2îõ�æ ¯¥ßÞ:F>¿Ë‚ÿnÍíÕ(½T5ßË꨺s™…俾9ü ¼é[£Ë@èHqŠŸ…ŽýáH"§b�$Ã^Ä#й¹š]¸ Ò{úþÝËV™ïâè|_ç#>R´på…Ïž@¾gõO+Šr@�6(¡÷üO  Ý tÉ��‘~Æ6¨¿Õ`¶¬< —À€87m2ÒLwf,óɈò"ØòGÚÎ5¸ó�ýœ“ e¹ƒ�ãY-ÎmhIÊIãoÑŒ¶–ˆŽÑnÑ1›)ŸÒ¥C_€ –œôã`z.=¿'ȱôîVÿø±˜¯Œ÷¶FnÕSÚ»ßYF�±ŠÅ­Ó àü¨ÒtCs†Î 0PÌSÊdŽÒÞ­ö…WHàÂ1û•ГuäpÔù½äý�²*9CõÏÒ…Åk±°MKžî�é�¯gSEÚ¥Áè—ÿéþ•ÙéÒÍ=²ÃðFÒdî#ÑÄr8P«odYÐ÷d`h¡0´¥™1_È$Ä ïY¦™!¡§„8ºë¥�åS€&‰@‚±„ŠÄ�{‰5y€÷ ‹ òÄ È“5îS¶ï—…U¤µ×%jéïÄò È—†Y”¬Nå]x¿…à`÷|oü)Ff7g"Y�KÏ™à5PÜʰ$âÎRdÉÓU¬-*Ôû3iÍ�g²Šžº"W|Ÿñ¶ePÖÌ} ‰ AŠG½”á,E=Ê|kðkŽž;%˧¡=wÔ®úŸÅ‚X¬Ša"înþŸÇyø'™ݯ˜«˜IJZÙŠ%ƒî›´ Ý”ì‰æ%0ðQ8ǧƒQ ;‚çcgÿsFMØ:/I‚FélK¤¦�ØPþ{gèA)§þ¸�É\œ«Tü.ž&Z‡Õ«�€ ù{§ü�)_e»]bo‰>ë9Óü“\­#ý!*$ûXÏ3Ñ>Õæã�„y«þ'yñyÚ%²Å‘½g ä<ÉK7¢bã5£H4`ر4×”I0Ó Õø�:B•¾§�F2W¾E,Vð¶äÁ2`󃋳Šï&ój,5±�}È o»öw[ø;6£Çòtpïðnî7*O�oêNÎ\¢7e±60aß ¬¨þ<©À?$*q´Û/,Õ1¡Ÿ ppÐ91^ä8¶hðwЉ€h0qtûþ]‘DhçY ô¦ë¡ðê>îçÌÜ8¹Þ›�òáâ È K>ècdáü(ž4_ôáù2íùCœ�Ÿú{ïb ÷F“ îZ¢¯û-új˜ŸÄ|„¤¼Þ!agð[‹Áël~”°^ 71ïéêçÜþù؈IiU]”ßU N§ñ½Rb�&™g0!E.�ýÆï…Ü4 N8 /è�`”˜ÔKÁŒ~¦BcÞK¢n~æ׆N«¹ò}tÞ(Ò™È(*ŒîÎ% J— 6‰¿$gìi qdÖ}×Ñ7æ¯�ÐìÅðt½Œ')â�P–š@™$ ;E&Áij½¸�8øºO3;í³˜‡¾¹{B&ÒX3Dß“²ì~Ê^ȤŽ~†§Þ`ND=BWYxJ*Q�%ÄE&tpØüT¿‰ëó‚~¶—³)®X${*«U4Ì̱ô´?sÕŽ1?…çj-€ŃûÒ:“ø…·‚1fx}¸0½G^ª/ŽÜ� ­A;ª;Ê\ÿ¼Õ,ÍñÏ€Sbç¶öŠäÛ!äûv5QhtÓ`>r,P/„Ã+F`ÃP΀4pê#‘7ú‚{²l8 ‹¦¿ÁfÑ?^#õ¿eÌxU²Œ —e¤U¹"oC1·žüK³\˜Wyi÷ÑñèŠs,=½|réðV3[»ßµ¢îX¢Äám&�£“VºµOÂÌ™_d„@Q†KÔdÅ&æ}‡öŒ‚Ű…(¶ œd#Z1hîÔ½Ë3|N€ºÒ‘@ÈHÏ XÁ*|òØýÀïîceúlþ‚æ´¿â ð%Ô‡‰Cæõ3àTa\¹QdÇ–è9ÇÑ¥HO)ù(s'äpŠ!ÿ>I6—Sä 4¤“¤añˆ–…Šôsq‚:j´õþ?^ȃ�%( °ð%n«ø1µÏ¼[ý¼É12œÞü¢†Cï’ਦÅä„*ù�fÅëØÆy<¯Óe;®¡Ë)‰\¬F[þ­-ú:S�¨Â�sftû<»˜šd¿œ•GwïMé¡1xDRF”ù.[�Ù È!’•î0¸ÆñH(®É÷HàÀ‰M¡zââEÔ��Æ_Eܺ‰-'²V˜%ú QG•eǸ’ãêÀ‹Îñõ@ãžV4‡x›°Ê{o�P<ÕKœ Ç×�_‚$õÖ’�œ^[qî˜Ò?¢îâCÝ©�V“G=fOŸ¬Rd§W,ƒY2SFHñfŸ¸’JvZE3åJRÙÁ‰‡DU":½¢C¬’“+ÁGTr�yâ*N$ÕiÌ�Éψ^KÓ§p`"ªXFLŽÊFãI"SÒù±yiòÒc’SŽÇg¨§IJSO“'ì3 qø-89ºåFÖbT‹MPb\KMd©èz¤±V>>�eH�ÓÆ¼£ºâ²Û„%HµÅç¹'HsbõÅe¼IbÓÞdtï¬Ð ðqr|Xõ&J…O—í•}ZtMœ'§}gÝ'Ì‘�—çÃ| q¶ü>ßá ófŽ| ’礔ïô…Diô±²|˜$L¨ß#ß;|à¸Ôšlþ#{,`rmXʱÉuNŽ«ÞDÉõé²½£²O‹®‰“ëä´ï¬û„Éõñò|˜$N®ß'ã;|!arÍ‘/Ar�”ò�¾�(¹>V–óƒ„Éõ{ä{‡—\ã³bTný9qý9qý9qý9qý9qý9qý9qý9qý9qý9qý9qýŽÜ:M�rûœ¸þœ¸þœ¸þœ¸þœ¸þœ¸þœ¸þœ¸þœ¸þœ¸þœ¸~Ï®�4÷ ÿ±Î±¨Ë–¨ÈÆFò(^ç‹–¼\¦ãÇR_zøäŠÃÀ]<Áì³°ø¯é‘hJ¾»íNºñ€÷ªF°`Æs º¡YÈ[‰¨g2ÙO„(¶²5Ç'ø^Oð¿Hé¬K† ^!‚oä‰'ñãáÇáÅAÞ¿²œ‹ƒØÁ±¹?<©)üè|;„=B�é÷YÕºzýçi¹<ö=ý£�ˆñ ‰¬§MÉÂ_áßL÷ûßÝoÿô¿KH<]Ü�ʾ'†Xæ\ԥЭ�ªëWa+I´,U¹Î[K‰)‘…œû0±•ü \ìäÜW ]�E_vDŠ6-Ѱ¼Žƒ¾ë«ÂêL¨ÇySSÆUQ²ªÛV¬¼¡)à››pM†fÐo¶¤©»¹Ñ+ÝIq¸WI&/Ùw ²{ƒãqLƒPs®Ùð-EÃâ ê+Þ�·_Ï6²)ƒpº+ÿn=ñmw‰k( WË4�ÉZ ÿmÁ¹Ÿ=X"ã( ˵ÝÀå>¢,ŽÄØÛ¸bT†­ØÿúMÁ½�޾`ì�ÅÐï`Ðz~Pà ³íLyWÓ óo+g³þW°ºK³Â¶)hTbئüÃðÑ-ôNÖtƒ¡JÎ;m�q�tdM¿V³iÆÎoùåã‡\I`´ètÑÿѹúØyLc,’—ÒR×ÑÒ×|ê£/çaÁ½:ý¶Gð•£ÈǸ’„eô.Q•ŒC÷´‚ñÑ ˜ ÂD#=ƒÉ"�äWt(4Ì9JÐÁ?ðÇh:žN�¬›DRýÏÙ_˜×¿G<>zZ�T¿óe°º¼‰lXûóû®r‚i{ÝÕôó´þäÏY¿ýNõv¼Š¼ºœŽ àÏ‚Q¿QndÒæ<Ê1õЛá§ÌânßJd}>E]êã^TªWÍ¡KŸ‰ç}c8�ûÞæ‰À« 4RòÕzÄ~ùßæ€ņ�W;|À,¹ä<ºé ßÑ‹!ÿ‚ÝŸ%_òä·S"Ø&Ñûá+»“° ±à¥ÇJ與þ§†Vܧø¬à,"›ÛG ÌBA³N ³¹ÐT B673ÿ8‹s ó_¨¾‘ÜBí:Rˆ»èñù|Y•¿¹óøŒG|äH߯Γq0ÓBâ©DòÕE³èºò,P¿5X˜RHÄ—Gã™Oú ^9¢¿8•˺&ž}¯q0»¤ª‚~–Žó^�ObÞ=çÔ�òμ÷¹<2!æ‹ >d¨NDßj>—'Iå^±ÔŒ;ç_E‹yzäDû Ù<çîøŸ= =ìC»¸ï™‰­;e�õÍL²ðO¨é�¾�¬p«qßN >†Á þêL%‡HöÍäÞ®�EÝÐÍó¶oL"?¶ç�tº ŸÊœwï@b‡žr£·¡ÆKZ ‹<÷м™~ßì=ÁMŽàêÔêH‚XÎ ”ž¼ßÞ•ˆ��Ú#slȺåçʸ ~n­”ÀĺTÖš�ŸÓÒn,é–CnHc'Ëð(šÚþЧRC6AîÌÈS×ë�A}\FHV.0oª ä"[6Øy¬’täÁ ´B'IF–þ†ÆNiS³�1cçÎ9 oÂ$÷嬸gðË™�å¾0$Sd(XŽcù UKc|:ߢžÇ‰ Nï½t1ÖV0)25Mýî¤�Ž·Ú‚¢†4 c¼Mçik¿÷úVP¨×­k( à�¥ôH²¶¼çœ-Mƒ/ÏFw£Á¸î¾ìýžJè5òÙ�¬ñœp¥º@YCiAžšô>€*0¤4÷U!—R~-©õ°ÊMbÆ–§ \–†‹‹>fÞc-BÖiÊ!)ak Ía!ÏÎÎÏòþö¢Ê_¢vJ½ þòý»iS×8˜ê£DôUa„ìÉ+ÖÇœ®ÜîÇV9]F°Ú£ŠùÑÎIë ë]´†c8ž±ûf.‰“PÈ^˜…Ûo\9cÃÊÙ0zÉéW c%‹nþµÕHÉœDÓK¿eKö%Ôô3|�t”ùÅd]cï¡è°þÁ7Γ¼ÞÇb25õÀSX}÷uö†*úñ?¡ @ša´ ½Åí¸£“�»©+©4¥ îì©k,çàš|Å?eáì£à.Ý1Êô¯Ûp×Ãù”ô“â^ÌA üé8ö ¨Ÿƒ¢m¹ ò¥Q¶®q?ƒ•쳊˜+ùðÛYA!f\Uþ‰a€*õ}2,Ý©€Ä¦tç8‚Áƒ >þ"Që8®ÅzøìùF6mQQœ¡4w@Ð�WÒÝ-Høñô™¢�€˜Ô—•aŸÛˆÆ¯é´#1rDÊñ“Ïn“ ¡¯ç(ð`4#¸–-ý¤;ê½&¢%éòx šŸ®é¶~~:ý„_Ç»B/qùúUŸ U†ŒƒÂbôjÞÛ‘¿œÿôÓù¿H�ü5ŽG#æ×¿ÿ´•Fyù5“¹È˜Æ8 Ï  ÆÌàZËŒÑk鿨4:O€¾\ / H@Ò¿ÒÔ ¨XöÌfòRtð{™=Å È4’‹âfòPÕ¡­ìÞO4q‘”ÃJ5Úb=/‰ZD£W Ý[D£!z‚�·~Ä{ˆ”ų³«×Áç–óyæ)·'5„Ñab43�>0h¥1(w¤<¢ã5,Ï1¿Ãì~|vìßÜ´:€<ÕµÒÔgŒù­Ñ™·<Å~Ë\®ZÀŠ�…c�U jî|é ©Ö.· EÇhA1îºç)cK~Öœj®]Ê-`Ëή5À¥Pì<—(xd6!˶æÀlÝ¡“ðgVýìj—kô½«¶¡2â(мÏÖQñ¹X0±šw !@'ß¼÷PjBqs�¯ôõà|Õ~®] a×ôùB}Â&Àw�¾ZÎ×™c`ôÙ Ûè«Úì†iéX¡ +Fq0Æíbëî[«Ujõ©¦¶ÄÍåR#ÈŽ3µmК[˶ۚ ,1ßx(»öÓ·nmß×o]V/ЫÚÐÍšl”UÓE18([%ÇA)y(™Š@P–-Eo±QlåÀA)x(UŠÜvQÔ6ÅôPvÁC)sPfEé°QÖʆƒ’õPŠ””‡’ë@ÏÉ´{eֹǾ ìß¹ÅÐt�P@—âÐ�Q÷jsK�KÊz‹p®³·=En2º…qÀŃˆ=®‡¨¯+Ü®÷·HLË‘�´¿ÏïŸß?¿ÿðïµÃø~cwjçÒLͧÚ7ôOýý¶üÖ¥[>Ýåy­™ä3µõ+(7‡�?͹¾ÏÏô×�óç\·Yôuã|ݳ¹`(Ý_¯ÁèÕ¢/ŽÑéŽB·[Xh7‡ÒYiän5ÇàsjP…)M}ŸÕ@ûV–C¸); Ÿ.I¿ HA×~“÷«Q»-!írÎç™gB’uÝü¶¢”Z¬xOUÛ®ÄvP—ƒÆÆwŠ¿üê®<‚v¨4Î÷Þr€’ÁùRÍ�ã = Ô11õ²ÞªÔ¡I÷Ȥ]kìØzUo•¤€�½ÇD£ Oú=©¿Õª<•m¦§°]Éd�…BýiÐÁô“Î�w@£'ž7�;iXÅÌ„r'Al¬¢1tÇ×åÖÕ·ÖU¥uâCïR}3¬‘t‡ ÉÿoM„­»ƒµ€Çpºù–WËdÐÕ§D¡ÇÖ¬ý +˜ƒúl¦Ž>Ï­T êù–Ls‡j@¯Ñ ‹ZñÌL5ͧ®â”"³jr̪2‘%Ã:”̽{ÄñZÞXÝçÿÇ_»¯ ÚJÝ7šõ D‡\ä&ãÆ‚{CË&¹ Wpƒ ¤*²b³íR‘[,EåpTPynü Ű·vሸ Ú5”†ý; £g·º¨{Qb{eÖÄ‚ƒÉŲNÅ ÃJb§3øºÖ¯[ 6Ö×m×g—wÊæ¶³í5³�a9ʸ0_|›×q€SꡇAž —,GØœ5dÖm°?€B9S!­@ºŒü0úp÷!Ü@?;é¾GË{* �×ó¾úË Ô%WuʢݢFºì‹¨I•QÜ÷*#�<„ ›*×ʵÛ .†cçÀç½ïsÙW­¡Àá© ”TÔGÙ5Ö®óc›÷²+ìû»µëû8ô ’_×½¾/{/¢X�lP]»6æÙ#ÐÛÀí-Bæ¦d2Q×jˆËÞ+y¦á’’õ¤]HÑ dZ> zÁ2e Z&�d׋#“g'*¬��õEdý0U5…4)›Aë.uY¬ u5Q-JùŠk"q»–Ek2C =ÖÄ]MÃ�•¼µ‘Ôºƒ!Ç3ÑgUt=ìºüôø­Ö\ÚõìwEº¾@g‰Ðb2‹9ñx…¨æ~é@ÿˆ>g†^ÙóX¶¼Ae»õb² ÏLÏb;¢ñµñú Ѷõ)l.7‘ôŒ¨iå}_ƒ9M¸§/!ªœCF( „A@;>B!lø{„`ñ¶Á#°‡üÙ!'…Ó «o]�h¼dËK]1›Äîuž fïèÄÜ‚ÿ³è3¿}Ãß�A—ç^ÌyvcŽÄ¨U/J ¬!¨Ó¢p'h�Œ›°®_oF÷Ð�s8;Ðñ8X--Θ ÷yj0ò£>ïFq>g­4PB× !x,`r´@,nØ¢-Y�™PyÃ)½hã‘ÃβŸ;pòu‰¾fÞü_eøõ® ¬Œ?Sӗ섵uŽÖ/¨¼hÍ’–jñT˕ÀZ^g,ƒ?�I�–~ÂûJ•F¼£_êÀPw9W¹ñíôæ[ëfV¿e:™Òí0]^¨û!Ch­ƒË0À¥Ö0éÎÅ üê‘eÎñí¢92-›C¦L¢ÏðÁoØ!úY·T2ôÌ6nÍ+؇”`¿³\U¤ˆ †¤~›iÞˆYªODqu ¢¯áb.€¤�ýdr`”PÆUƒ„±þ Ê!@*‡E@8Uð÷¼û=Ø?€jÂ(9ÊÊ©bŒrpQžIýáï;÷»C�Å€MHÎ=X9 ªõ·`ä|ÎRëÛø»âdº€. àEªo¥€j«&ë«7ñè6œ\ô×9èáÝ|ÕI}î;æå+V3�˪›úÜuÖTÀ hL΢!íÓ-_3%×âC8Y˜ S%œ •S¡A¡\F èh'lߪ=¸t¼ÊÔÕ:v5Ôp]mN héú”¹èt:*ã˜î±3ëÁñ2t~4˜žÏî N'ÕE0 Ã(?—8~¾ô{wÞu“•xð(÷𶈌_^BO½1½Ïó¶›1ÓÑg·ÑAç*ÎÄBw�ÂÕ36šáÊÌ]Ýw²1èn.8ÎEâÀR€îAU´ä”€x"{.3Ek²<4éd-¬:äŸÆ©£Õ�õ]0¶�xL‡Ak dPƒh‡ŸÍ0¨ŠA´Ã/1Æ~gÛðøÜmô)Âmƒê! wÞén¸' ÞÄ]šŽÍÛ�}dæ¶ ›Ë®ywó˰4s"Í2, -§Š—õŽ}‹<½BZ�®¸•¼ªwL ”ó¸Á@jÄ)³ä0„q®0änž¯kuYæë;ÊP°vƒž�$Ù¡1ÞÊóRí£è¯òu´Ãâ°¢ÜÔÄ0Ãîç*„5—÷pa¹uï8U–¯;I÷ýãTúçêÞJíâ('‹pî=>š‡w¦×\µðwº­PÎ�P†Ø0÷®·èp¿ÓZk ø²ÒpœþT MêàùØÊ9~Ew¤Njó4Œmדç{žX^ rr,â� yàæ¾#vÅáÕ—zÌ]†¢@|)‰£ÓÌÍfA¥îrzðå*¯¾TÅûžî ãpÙ– r�P*ÉòjÖÂ\(±Gý~z�‰¼N{…^7ð<¤&®×±¢8>³Dã—˜!%¾ÁãJÜûˆë†ÍŠ Hžl«§whÞ4¡ÛÊM«ì1oÚøo›zx¿ö”]Ã-_�—žL?í1À¢W1«d5¨eà߀v#%0\DìpO6ᬣïÃ.3·§ªŽ]ËÞVA�et§×¾s6>ÍP±]eãij׫Js%ݮό�——\•0LÀ°ÇÖB¯ÿXq%g¤@ìßÕ·Ž¸ÏŽ¸Y‹»Ùºâ¾:â–0 zÄÀך¡" úP1JÐsnãTñ‚—ÒJñzÞ ع²žü–ÅkÓðûêÛvÓ¾:Xì-h¹6ëº�a8Û#œÃsm9N7v Ð ›�CLäîwˆÂrK¦ùû½‘M·X²Î5ÔÑ@m¾µˆË W°TØîÞØ•j2¬ùzfâ¼ }¤&ˆ:îÇsNá†d¯µQYI,î+y%Ü»À\ã*–»Õrõï°÷ÝüºÔ&¥,b|p§GÝùúøÚÄÌ5ŠuŒåè8f›ì¨ô…K,², Ör�1,*×P › vŒN‹3[jÒ¤zs ~n›“ˆÖX›öX‹½cгg†G†Aî]weµPt[·@t£wŸyƒ»¬—÷?à’7þ*Bß¡iô}ãëŠ{õ‰¶‡­fœqÝ8U¯Yí54³�o }ª;G‹u“eORBj‡uÞ…�ƒ´÷ nLc¯19öÂ�i¬³“X3.¡Í³—®Í»^¥tBCXP±[,É6àCWn‹¹r[þd…�%½è cÃLÍ"ú>Çß÷ æ´�—�f=]aÚ\Ñ–êLÚbÝiµi©€T@€—Ï»52ˇ6S㑲ïc«†ë$Õ ebó‚SY%�`VŸ—üÆ­ÍëË’ uÖ˜¶ï�'õÓ»t󠜔Úb¹íៃÚy¡IJŠÐfuµèxË+�¬D¬  s×rPæõlÓå�"v+@­åóÚ•«È¬EJž•±P»RP‘l )¢–E¶Ž")¤â²^® EºpR�”z¡A«ú¼ÚxЬZ}W8ÝäýÜ3ûêu yàò�= øNø˜M`Õ ‚Ù4,‹`«zÙ+_s`%3ëzű?9¿IßjV]®¢¡‹Y7*ŽƵ[‚JʧÈ�-ë7X¨6†–#°«Œ�6KaX9B–C'Ý¡âR�)m2ËUý ÂìTã ¬ ÍòÁ;dB,K„¥:k†X®2˜L!0š¥M`Ƭd¹Ï`–š¥Vï@X%Óx‚°ª�å+‚-gM[ÌC,׳&fY¥ÏÔ‘¡åYšžjC$”j×õy9]‹ŽId dS_Í›=ˆu€rµ.³°ù^’ú_¦Vô`{¶&° ¶%0e† fx°¬«ØŽ“3–÷`‚Ӭʀٶ�ð,�é X‰À6¬àÀf3l³¶"°2fØ|†í LeÀ f1`);x°’[¤n‹ ØšÀ2 Ø–À”e&˜áÁ*nýØŽ“e Ë3`�U0›ÀJ–%°ò²Ù¥Ò?àÕ©eGUµÉˆªÎ.Ÿš×7×¼,«æná’-š(:n<>¶ÇGð(4ïgÖû¹vøˆÏÊÚboÝlÑhf�E\ð Z{+'8¯–˜åa…Xš°ñ{¶ÇgÆTQ¦Šo²Š_Q¸‚æh”BÅï늋¿BÐ\)ˆ–­)ÒM|ë6”nå\xMUY+_Ï®šm2ý�­P̺ͷœž²u7l“¬®¿…gÈÚN;%ä`ìlÕzh‚ïÆÙó�«—æMgV£P/+�m$Ñpêã†,uow­Þ¹ö‚(€ÇÑ‚¨X�E'^�6HY‡Îx=kÖ˜‘U,/êv" ²Õ(96‹¤H»Û À=ƒäÕYÓ‚,I "hØ ¤ÐðÄM\R–è(ƒ˜kJCq "0åX9rìu\€¥° ²W(ƒt¾AÖŽAV´ ™¥k�8AÖP�R½lCŠ' ¤ì¯‘¥œ–U"hFÛƒ–ålqh• n–n{3pÀ²6nÀ¢Ê(yößz,W™%-êë–‰`3󨕇[ð~î™(ÜÓt袘j¦˜_)2­ÉÂe›dí‘-[,Ú|Th‘zÊZ°ž*õ ªä±unºõO@:�:\Þ·ÂÇËZož�3e5�ùuëŽlÈÖ(ïš$«_7—pžeÑXî›p¢eÖ(º@±Öƒ1Lc½o*”§@CÚcв±³PÃ�ׂ�Jc¶iæÔ°šÏßœ)(‹Ò°-xtÙP �€2¦"G±•†L@yŸ/EÅU{Tœ°iª й=f*4ÚñM Ê¥ É¶¨U5ò˜¥Æe¹�cé:@аTöŽd?˜ÚÐöðHêªQÝ9šÓ;x¬:Þ«Q55«×Êu0jСùa†—ÚôÆ~‹Õ*†´€‡9®ÜñÂHC#hzÎa>‡©7ÌÆÚ ¬•ƒ•0ÖF E2ym¸y7pͨ˜@å%M–‰©FH…Eª¿™1•ÙP©…K¥xû÷p€¡9KBsÁÕ��í±CèšP²TAî°´nä °G]Ô¿T’�Ã%•II懔$°Ò&âzé}‰¸ãfùR `‚`fcQ†ŽªÔMàª+fwk:bÍò˜¤\Â$à?t_gRÔuÏ9¼¯TšNÙ·ÂD ’÷’#r•o7v¨|µ§©¶R`6�i"�Y’Ìôtª3Î:¦Ø°(À7P$…ÓD¡e&ÓþÔO*5r{8³ˆE1ÊX”TýweU¢‰(ûßO”Y‹¢”±¯À@ìÆ&+Øs‚Á$%„Ë'‹ølJÐÜšþ–Íì·L£Ý�Æ©ŸT“£=šÊç˜ý‡É,�ªÊŒ+oN™Cð¾šÌ"¶L!ÙÝwËt*ZPjœz¨TÑØ«aÍ@ß2ê[¸lÑ"@9…+IŸ·¼l ‚v sÞz@õ‡@€hÄ¿Gý¡ ?,厈bÿ~¢TQ�5uÔ:\1g-ÛÌ1̬·èŒª=öÈmïöLˆÑ¾1_@F/«GfÖ¿»wRäà0SÀ§ÚkÖ³Î@p\fè®ÑJÂŒ‰°÷*ì"Z.–]BxFÎìáÚLÜ•ë¯2¶ÌaÉpf ³�œ¯²P BYš]É”ÇPcÅ ³®¶Lf¯;ß(œy]`©+,UªñG�j¶ÄRíˆTÛ?„T"UF�ÕkÕåº;u¯�ºW£Z Ï.Y"Sq’Êß©ÑÃ#kîjH°PùB#¯C“mꩦO‰,Sw¶MIT°ë7I«åšÞº…(: s›z „9ö¤4û'%Á>TS6Gm·gjxM¼áNÀå{¥Õ†äˆûß\‚õ K ¬±ë*A¥H «Xu�«9[¯q¢xhà�â3½…ƪÕb,’Âì†è.d@ &�¨”D-Q\ˆwVÚ¡ÖÎ"ÄwE s?ß–wŠþÐ\œjÞñÚgÇ8ì´e?ÄG�Êcœ¢‹ã@*’÷CZÞ9ðC³Dpô²'ßôý ^ÿQ‡¿eðTÀü±Òž¢K>ƒÀKX‘|)è%É•‚æ-È¡Ä7¯@pv¥ y³²)ñÍ»'8F)h »D”/…Íë:ÁQ]²&¥6¯S‚FpòUO¾ôé1ônÇÏ�m§È·—Í>»½»S‰r™D¸jÐøÛ*Q³4¾M z5h|“@Ô*ßøk‚£TƒÆ×dQåEp2• ñå*6MµÂ7þŒà”+Aã§*Äë+|ãW*xîÇšwüs?x ìmmÑYâž¾Éãx¨tZaj8X&xÁÛpðäTï‚–]a*¡|þ¤Þ<£ø¸»¶„OÞãCõÈîz{� e<4ªƒ§º"jî#´ËŽè3˜�µpùP™ 5íBmXÅ}¥¶#„dÇŠS?ƒÉQð'ÅWk»?+‚;‡8ë ]KW79ÚXуQ‹`)‡E‰ Í–Y©ùN*ÿÛ2¤~RÓ¶÷Uö8¤¨©�Ê+éU‰8#͘¸&e:æ´f©Å‡r€Y›U°Lsá2‡ �˜m.ø¬˜Õ0¼Yãc¬˜Ðthf — å/¹åËÌò×mÖÏmâòWK\~†”G·Þx,:Æ¡�{ãâe爡+™Oiî‘ÞËæ|Õ L4,W) �T¨ÜžÝF)O¤|™¸ÙcAÁí'ãäÎx§LY»0™éŠì¡õ“ŠìcvîÙ”ì —YöʤÓt7é%h ˵VFo·FÓ`¼K¸Z ¥T‰”KJª"B_a6¬abÕôdw:¥‚ ͼ=bÓ€+§.Ð$Àj4pO€œÑÀ)2c²: JC›ùu´¼ê˜åÆb95P¡ÂÈ(³³¿RGhèÕ0f¤cûßž‰�bþtCáv Õ*4 šq‡º¥Úu‡ÙûíDzÏÄ/7^¥¸‹6ß²|€j‹Ôû`@¨åCß4!÷R3·…�°6p.õ,7å-eE¯\*h¹“%Ä Ò\l¡erȹéhã¨![~¼oÀ+4Øx{‹ä;¯)SþæZ� Í÷.ZìU¡“t°ÙØ�Oªií;¾cžµLs»Ç ‚¾Ñ«¦™¦M`™­ÓS€‘üõ™»Î©.GRX¦¹&TŠÇ‘š!‘–†°f-à“pøÓ¸v»Ö†§™zæý¤ÞÝ9‘Œz°®ä}-y_©žsé}¥n馘QS—òÏ<2jz�z hÕb‘(q¨Yz—š…¢zz­c»Å’�Ò¤~RöÅõ:o 6éýד'[Nuçmô@,¼?ËÓmïý¤¶vSò:å¸@œ¬�9*›ŽowÖ¼¥m:’³�Çhm�ëÖ¡/Ø®,r¤£© jùÞ£(x?©Û9+ÞOgÓ�+áÆ-!$X{‚eÙá§sCOÙü-Á7\|É«LÉFH�‡B‡ÜXL9Õ²Éú©y?)Ÿ™1›Iˆž„BgˆK!—„ŽÝïðòâÇ .Þ»h$Že°]Q­˜úIFrO6.Þoãâg­â™¨ã{Ë2娍°�6zÍ”ÿa ¹dÊ|?äM.C§£¸Åc�ha53ëÝz÷ÌA¦ï½c^€é\¶Š)Ÿ«•N—¼`H¾Uм-oi0$©XE¶½Ìªo¦ö§`˜LÍŒ:Þ�ë0mo�µuïÄÍr‰|о€�>”´»’·$¸.ˆjM‚pl‚¥»XÏbˆ‚¬C�Y0ü0±øô^°�™ÑKbÕûU¤`»pm²ö´ „g“Ò“ Û-wÉÌ:¿g•zg–©oÄk´X£ÙUWö-U^q pÖyZ>^έ™­á5‡h™·KW‚ÛY, ^fç«C* $™ U]$rsekæ‘wCŠ›M�þ�Ð;1¯î1@ ² õn+µÃXE‹ò7²VVb}ÃxíK˜cIÊ®-§å<Ò{‡¯gʱ‡5„X;··åz}Lj´c–b +†îK˜(°ìѽçè¶%9 0Øâ$' Ulªy`I2MådÕ©æê¥M7�SpGB0[p%Úi7´DûFØT5Ú ØV=BØ €öO§'¡Òâð½Õ~јˆò¢=«JX�B2Ò†dò10cçoÕ¸®z~,ÙkÇ« ­îÒº10 ê®CÞ:GÏ�QéÏ’Ù\¨¹Ü0æÒýæýƒTÇ3–T‹®q‘èû†^¿ÿι\WÊÂ"º›ÍeBbôJ¡YÂë§@hÌwx‡}y—”¼æ^Âa[ÄÔì‘"”†2bP*wèáVH Ìa•B@G�rlèÀvЧ”¿-2+:JŠ8JÊŸ�´Ù25D´�~`Mh—–Ê}+ÌŸ.­¢¥‚QHŠ`áÈ5Ф†(TÞiz?÷ÌÖæÕ•WŒÿùzpMOeQз(Su@áw¼}¬»ü=ò-?æÁ®Ü=T.»ØÝ^ ÍÔäuŸÕzÙ©ˆaГ…f]®î—øÑÇ4åª3ê ¾:ûùnÊåªß9�p”"y´‡xf�‰ãšƒºJÊѶÊõ7 7‰®‘rõ„mN#`Íi1Š[m’çRèÅ5—í Ðí �IØV=¶°Ô-ï x‘¡eÊNq¤R8Rè—óÆà ]SŽ�¥@…C­‰�‹~Áƒi�ïé‚L3?«£N¿0«·Ã7Ԝ˄ ©þ< ¾PïÎu�h@âÝáÁòÁ%sê>K¨,WWjXãòÞ¬M˜÷Öám„x›„JÅ&wžI#zx Ù»>ÅhÒî›L^ø Z÷�°ò=ÏDaùknåHìQØGS„Þã ÑŠU7ýp¼¹BÚOÈ×H®êÌq8�lÂZyÑõ�£kµÔ¢ûàŒƒr†QÈi€0 ÅÌø4?Ÿ¢‹¾ ø«»‚±ó.6eAÜj%Œb…”Úb€á˜ï81ÛöÅš�9è.G¸šébÜûâÿª©^áÌY42KR[c>:½Ÿ08›ì¢+n±¸¥×4\ª÷]ô}Ÿ3ê—t;µ%f™‘Ö¢ï–÷¦^™™»s›5å92æ<÷ K§ç°p(_UöºV›aRï;™sqe@5ÀŠãi2ö4™á;K †·V\÷t9%λ2åR+3f” 9úá=B XÈ]ÀµZ6.Àr�«²Bn1º*ÀÆÝˆ,6Ô°(ø$h(.‹P¯)ôGÈÈ¿彆�5ÌY‘ƒ�3™‡œj‰ 2s†Sç$k2¹U îÁ¤ê x.¢ë–­®›cô„+˜C@íP†1·»^†ÑËbàa%¸ÝZ£|ŸbÕ¬îÔgBÉ\ÁW‰×Vw‰U¤_Ãg‰÷VÞëK™g_÷ÙgAÓMŠÐÌiÐâ=k#=—'IM#™¾�AïÃâ6ˆ5²y¶Ò@ì1ui,Oåñ™¼ÈØÊ¦tA©ÕÖÔºE8ÑêfýÊèš)c�2$øÖÆñ*ÐÎ\ƒ÷ø3ù m >ä�·p*— új,WA CLÐä/Ä1,Ë×XÄñrfh¶:I“f03Ä}°’ç9š+lüråé†IÑù¢L^–χ!Ž·²4/§Y²ðOP¤‹Ñ÷‘¥†’+ø Ñl Æm¿t•»¬I0ÓÍ•X‘ «É8�Û¨¯Ù§áwk¯kÀ ú|OPÒ¾–ú�ŸÜÚüÇOß"ˆýíÛ«ö_¢ˆèCvq¥îéLE‘kƒÿnÀ;ÂJa0è{±;¥šëu‚Ïô>Šcñ%81’à¿P�)6é©,)¾Êt5DÑ�Ó[` ÝŸ Dxï¿̼²Ò¦=2dž¬[<¶¾8Áô#Òʬ•raXÊÙŸ}U5ëWkþþ5-íÆ’nù#ì–QQ,:/@:ŠŠ<ƒ¡*j6cQ݈¾tƒŽ9ŬOóptøyŠþ¡q|ý¨Môÿì™1‰¿fÏÏÈÿ.„—sÔí±Á9á‹�)ê·QzùõÌÔ€?„¡[ybÍýñ‡@ä•8“Ò8uýŠ‚"ˆå UL`zùkv"ÍαB±x~æý Hù…É}9+þ™ü²G.Œ¡‘O‘¡x9:-¼Pµ4F $ø5äDÁ*ˆñ1âc&¬T]“A’l"ÈÂ`rljšú¤+”™³ò¦j þa¦à„ȉ�1² rÚ4È„Væ×3Øý§AL)²°MKžîÓ$Ÿÿ ;´±”IÖV’ÔP‰°�Zš¦X²ž$Ob÷U¹¿¯ e6˜;,hHÖxN�éŠGi`i¬z *Ë��ýü•ìã‚'KyøÏJÜ9í¦³OfÖòošÛ�»¸ Aô …¬?z0E‡�1è¾n”ù ›Ð¯ùÂY^€ÿËœU³þáÍ^l'Â]PùþÝ´�iÀœ0ˆÔÆç±šE9ID´¯Ä–ë=ü‚‚n_ß±âœ*™Cy²Bò:Q-a&iSª � uñ@�9< 3ð_¤‰`Xç—>Q¤ƒÿ“Z2ª8þ ŒSš“4à‹7þŒ}qÇy`hâó]\ó(çG3%Y6ÌäJ¬ì‰i.�Ä¢!‰Ùˆ/P£¢�1ÇéÆ<8§nà?¨“n²õwÁ!ymØU�A=Ñ P¢ÒRÕ„™à×3)ä&Áé –Šd´;R´ñ2¬ªàOCÝ„9œÄ›ÒŽÍ÷h昒þ&«cÅžHg0Ï$õˆòÆ_ÁØñKX¤ S"ÿW’ãÀlË6ƒÀÿ¾˜šPnÊ3ÿäªdHíÐÌm{ ¯™áoAn+ ˆ¼:†¡<`&EÉ7‹g÷sU„ø\P­}¤XËÀÕÑu@ýÇÜáô š?4Vó\î;èqh*[¡€áIµ£ÀæXTU%E "�ßÌ$+¡ˆ¨_=ûŸ3‹Þ\�«!(•ZÓÂu.í@2F‚¯½Rÿn^` ºu‹SoôSÉÛàWÁ?4 èIýÕÿIP“¨û¨–6¹òEÑ�C¶E°ä:‡Æ�Î?à>4ÆrFþakÔ�iÔwÉ@å<‰¬øéùlp];ä¢ÁåO?• Úèxþ�1/@¦gšßƒÓa¡9».кlŸ c¤9œ¶Í%¨"Êþníu鯰×þÉ\¾õ"­/ö$ð ¸a)ŒÐˆ¨�3ŽlôÞˆ©ÅyßþX(B‘W²u†ƒÚrþ:Aòož‰gº¡¡W&@Í‚ ÎЂ$îŠnáQä¿‚M®5b¡q\Æ#%„¬|a¹»Û»Ðk>¨�ÛŒ@ºçDó3Ñ­V"aFÎR`7ˆóý9(SÐ+sã¢&šú Òâ)uÐ5r µd²Ü• ¬j™QÛ7hCÀ`†Ài['8È3sC[IÁ"ÿɱa½#ö´Î8¤çÕ®£êÿø]‹g†ý}¬|�½*šqå+âlQ:Ç-–%‚oæÑÉãaNó+ܤì_þ�Åûkä&ßjOâýM”ªx“É…f�½r!ØßSÙ´ð6A>ƒpÂ@ͱ†&ê“ìõúvš°HÓó³ 2Öc–Ì]ÿ‚ÿ0{‡P9b¨`.D‡è@¦r1žKã%èk¿3'Eý;:ùš¢zEãÿ¨jÉEçqîÖ´1¤žâXškJ`©ÁçdÙ :× ÖB©•ÚKxí}›Lù.æó!×…D÷Þ¿ánUüãOΊCÕéÅÿDMæòîV±?™–*;ï kþ¶�Ë ÁbgÿÏ_)JŸàƒóýâÙ¯ÔJãÏÿÂTÿ!(´ �QÆ¢2þ•Â;KÃù\Èòù𣠑'…%Ö´+Œ§d¹R ˆáË üÙ š…yCkÒz”¢M²g[Ð%’°˜hó5™iùø'=µé™¨žÉSC„=×Ïø=¯›Ú0:rz[Q�ZÀuçlHA¶á ¤`S[Åk‚sѬézµ‹_ÿ$®tÉî9!ùè÷mC=S­ù¯ðÿÿ}~–ûÿö׿‚üÍ‘ø—3`6Ì{¼©yÙÔàèfò‹3ðüÛJÞ�²¿þ ü‹ Œüt×¼ûJv‘îÏÀhJ‘Aº©ì¡¥áŽR˜‹€lì ´“¤ ; ‰¡ÁDNB9ÜÙ?~¢õûÇOpr_†:N�m‘‚òÔo‚ÿv]á¸éßgÿ}ö¯¿‘œäßȼÿ>û›¤xk(>~uȾ0èüJ+ÎhÒí¥¡À×/~Bšn\ Ó€¯Ñ4ÎòʯìÏÏþ>�oDÅ–¾ø!©€à¿ÿþJp°øt2�PÀ}(œBÁ€ ä|sàU¿þi¼š€‚AÇ…€n þ‹}ü€‰ O@Ë”„СÃd i*ˆæ!,¡qëÿõÙºbF1ÚrÀY»Šè ¥°ÏÏèµe·~ùEà5èÄe¶¾ùe�ô†$œŽ·¤/á�W“F?w#h¬1}ˆGCûKå“”=aÇ.¡M0›X€væ~F·a·åqÛ«Ó Y¥`¹c ‰� Üöï[¿øïõñ;Þ‡é]¸' Y"?Q˜„¾CaŸ»ûUžôÓù/0#Áɲ·=Í—=ÿä?þälã7�ñ×3ÛP~ýi"ZâWP®B¦æ2;¼%«M§ßÆsÑ0%믶5MW¾Á¥¦Rá|’­vf5x¯V«ßÏj5ýì>‚Ÿ÷µˆê—Ϲx°ÿUkBºús·k*Ò²út}è‚¿·áAe̦=¼œä\¢žtضoÛj}3ÎCùnàUõ6’äº�{¸y•z»ÅXxpW—o:�í@¨ïÇÓ›Þ@j^?>zƒb]t:PèÊ�nîz‡›êrÐjîfý+sP×›r}5+Ì@ôrýyV#üR»…\Ÿ _ë³Aç­t¿¿/w§÷‹«ÊpQŸ;�e[vF�ƬùôÖ®‰—‹Âvúò¢ÔòõÙëÃl(to²Ý Îöyy\ž\GcPÿ­·‡Òár!<Ê›u¦¢�ºÏÊUêYéˆÚàæz¡vƒ;e;õQÏÖÞÖåÆÍõóeîI“ÆÆ!7T6«á 8»›Ÿó÷Ó®±™ì Æbº¬*×�§\A¬ ²wý¾Ö¯äòëÍÃÝêГƒ›ÕÕíƒ-”oç‡Â�Ü»ÙIvþz~¯®Wדuê²*6'oý|nó,¾˜ÅL¡4Ï­‡å§›v¶[R Ûî?w:Fÿ¹owîÍgMRíle~ÿZíOõQgþ4ÛåÄõìp_ÌŽJfï^)ˆ¥ë1§½n&¯¶v—íO:)8oª#-®ŸÍR[j—\7'ÍÍÃf½Í5¦ó�¶Ïu­·òÍÕ« }»^P{/éu;ÎåWÓÛòí¡<.›eûps°½þ`P¾Ï_÷Þ¤Bq/XE#ûØËµ–ýzû¬??^ 'Ë×ÝKÝ.Èw…š. •úìF¼Õ$«6îÞ7·íË—ùî~4¹êŽorÚFž–j•·úƒQhî'VãêÆ’ÃŽ\��é*õª·ä^C_O R?¿™ZÕbªr[xlÎ2ÙËÉ`ºm5[òãn;kôº�Ù�öÚ(,++íÙ~¸ÌÕúÕ™´7zâe¡ºœ¯/3]ãúq>}¸¿Ój�çݬz¥½4µiy[>Œ¬v/ó²Èkùqæ6§ëåEýöR´¦ÏÅÃeKXßvÇ…bï­)¶wsé~x¯ê�³¶Ô™4Äöó£X¸î÷ª­Æ“p'Š•åb¶y|�‹ëzMy{ìWÚZöJÏv³IYÝ>_W:úcåf·ï[7ûâÓ¾ðиlŒ»¯“öóÓ87ŠÖø¶–z¼îÞì«�Îê¹3ì”Û±Öçvf4×ê¼V©¶g÷5K,–4a6˜¾J{M}ÊäK¹åê°ÖÕÅ­rÿÖïÉ£FsØYÙ«zíÎRß®ÖVÊ�;íñàEl-;™Ãþíz6ßw;Í’ôPЖëÃîòn7³ž»úò²}¿~¨_] ¥Qk~3¿>¬·3»ðº½Ýå³ ©-¼õ|C/fo쇇Mo[†SåíòPS'ÍIí^ZÜô.gƒÆfSî:Sñðô4°S�ÀfÕ×r·x_ÖÞäKY»œŒZµJ÷¡:ªJËå¦ý¬µ§…ÖRU7ë·Ë—­yiØë‘9ÚõW/öÃKaýRµ×å×^]k�^ q³ÌÏwòþé¶»nvûòÝCµ¹6®ŸíÖ|z^n6WûÎíu»S¹ºóÆ´ý|gLs#—rõÂKî¡·«K«òîêÍ|-ßw¶ ã±´è¨JNy]ˆ»Q®<¨Oò�ÞºÛj=\=OûÊR~~1_kÂã`hvÊ�×åËÔCmi½û¯ÃÌå`÷².­,P ý™²Vù½ðv¨¥ž†7‡nöjÿ"—ÞîÍî0W˜®¯wj.sU”…×JiÜm^õïšÏë�quÿrx}¾œë««Yû­6ÏçïÔBómœêçóæá¶þX­josK¬i½lg%ÆËÉpxS¯*eUÈÝo©{ûöµ”׳sµ¬\¿ò�8^·×/ÝܶuÿØ­õþu¯0ìõZ…ü¤ºï<¿íoßÞRõìó°W½½nÕ«�Úí>Ž»ÃòeO¸¯ìo£|þ0×õûá²5yè<__m¶7ãKõF¸ÚZÍÜn¡¼u&­åëº~h§ê“I])v-õùòq"Ÿ®W“®:Œë›Wónÿ:2ùû·uÝÜ¿‚n²¾™Oõ¦5Zn ý‡ünÜì)i<Ì©¯ÒP–ÅŠlf Ù†ýø¢ÏîZêò®Þ¯j“^õÐ’ïËûݾû¸¼ßVw7ËìîÞ[ £Õè.²ûbûíõî¾'íšý»IivÕæw³');•ÇÃåÕnbõçZ]~H-7W÷Ï ûö¾z›ªæ¯Í®(›O�û±Ön¥ª¹n÷^Sì[ýÁ~¸jjÚëæ¹ôöZ|PvËÜÓKwÚœ½.Z•ÝÃu¥¼oêó™š{~.k�ÌÍ¡­OVRªÔ5.ï^WÝe}v-=émks¹YÜLë•Ñå«x7Û\Ö ýÒ´YSçKQšÈV=xLÝçŒÙ~Ö^››ÑýXn´ùbÿxË+ýõN¬¬oêý]¾w;»­É·™”2n—…›æÓa[èŽ^%uóÐZk›Bñ¾ýp¿y|¹Û×ï2êt!L¦¥çÅAÍi�ŽÚv‡îƒ=j‹Jåö0_¼×–öذËËY~²±çåé´´�”M!;(ÙÉÀx4fÒ‹­+Ï…beøº«€¨Þívö£ÑF{(_ Í«úÍb×,ÊÍÍ ÿººÌ^ÖäÞX¾1/ç7Bó°Õš/÷W¥×®Ô«åG­óR¾™)…a³½_ oÃõª[·›¡)Îoo•ÖSaWUzý¹Th�_n³÷�}îv=ÂCMzœ�o_ròr`óCæÁ<Èo�§r£”YͧÒåh©æ ‹ÔóøÍÌ^ç{åiõÔÙ=¶;íkySi_÷º7Zi}ÿøüpX ˞ѷªWS½šmo8zµ¯Wæazû¬ÙFUjOg¥výp¹5. j«ZYÕ;ã°èÖ_îÚÍUÛ´^{¹M_�sóƾ{?ŠWJ³ >Ì*Û;­:Nu:åÊ¥6·Rìܩn»½Ç][_< Eìz¹ž[K’ÐÜì§åNùnÚÖf—£Æk­›ÉÜYëÞu}x(NŒ«Væ­¿²*ýÏÏëÛq>Wžß½Ýw×�—OõŽÞµ³£z­ÝXÞ·Õ畜ٗ†7“TN)Üe»ÃinÚ»}n·Z*õ ¥×JaÔ¿lO¯‹oÒôu¨Un.+ÒL»{¦0jÜ+·ûJ¡ÓÑç×Ï×){^¼µêo¹lA­_.ï™ìCêA¿ªûŨÞ^f«[QâÕh­Ü]¶2³û®ðTÈ íþãb\ïl›s—º/¾*æ[u±ß_6µŠ jCèo/�í8£ÛyÝšÜõúýbåm/M/×û¾:Òuñu—²F•›ÍKe£ˆkô²™¦”Ku<ÓfÙÁ]FìÔ|kج†×›ÞP¿Ó-EW*«r.Õ?(åLù¦T¼Ù�DP»’*¼®Z³üCþêê麿Èå›é´[¾YÞ2Ëîü!5ê>e2©ëÕ›q]zm•_çÓkÍnA{½©©åछåÜøùú2W6öêÕx0.wåCv« Ë•z§–Éu{W/�½¶Í¦÷ݲ¼,»úC¦öÚ[¯³–ö¢/†�wƒ\[ÚÜ–vóɵ�ª)­N}·Ï:ºfO Z³t7}ËJ¹æDxj™‡ì¼Õ¸)]Oï‹åÕôþ~6]§*ZÓ¾¿ÕnO/©Á­–[<¥._ÄÑUñ9?šÜÔ›�F³W{Ý�,m-Ž{ÆÝ²z¢ÂÍýä-5ŸOjÃÜÛã•þpßšÛ÷êcùp«ì¬{mÑX¾Rû¶2Ö®&ãa55P‹H¥wÆtSH �õUOž>¾½äu„»Q½¹Üo´ÁÕU¡rwUïÝ®‹fGh=53ÊKeØN½<]»^ª .ÕéãvµÉ•Lm±íôVçmÓȧ%mȾ5§¯�Ú@})Orú]v4#…ǬҲ”™½Ü-{ÕÁ°qX>¥DŽÚ‚¶ÕA0¼”LɼVÛ÷óâBšänKIy7åaýæq7¥F7™¡¶mLj�ì¤ÿf-ÇöÕøf�1§¥^~¬Î´áƒ¬kÒeïqÑV7Zo�½¾k´&е¸¾_ËÕê¶¹~¼y¹jn«R§ž»ë¬um£e.˦”Wsõû]ãþ dR£Ü Õ,¼Œ§¶Ö/\–K­û»\ÓÚ5¯FµÔz$—k¶ôZ»T/w½»‡rñvý¶,g¤þ®×ÛÕ®Jƒåãä͸1F•§Æób±–SÚ¤ÿÚÉ?^¯«³×ùcëRî<¥´Ë;s0×½b~•ï^›û™}ÈI÷�›U¯V~^_�r¹Ám³ HÂSu|sûú:»šµºætö&‹BJ½Q6•âþù©4YkïOÞnê/‚4�o¯7Åz·®©ê[¦û ö&×­�Ô•+‡‚.çÖåíàj·™µê7mûåÙÖåÙýME°DK}´vj#×ÈWofpÇË]¿0¥¤QåE_Ö„ZeidìëÇ­¹7‹FV³¦{iw‡³çÔº0y[ÌrÃÜó:gíõ¹´œVgjO»n›§»ÃsÞ,ßÕ»ÍËÝAËeú ­³\÷2Ýžt·xîŠËŒ6XtgÃ^eR*æl1^Vš‡úÍð`O[µËyv ·´zí%û2ßÅrݸm*©‚ÜÛ¾]o÷ýò\rn0ɼ‚ô~¿3iÕ¶o‡þX™”©‡éSªØ›¤^÷×¶üt{ÛÜîÆæÛ¼̰ŸL„Én_¬–ÒÁn®ôæó¼Ö¼Z¬žs÷ÏæÕë¦>ìt v!»ó»{¡,m画ÒdVìÝn¶ý{ýP¹¿}å0ßZ —Ï7†UH­Ÿ^Æ™çNu4y»[µÊ �w‹önzý˜1òwËjùM—ËruwЋ+ÅÐ×ã=ð™C}ÓL²÷j¾<ÓÚ ð—æªfÙ×kI]o²£¥.5Sí~~xi´SÐãLM±’ï/5;sÈä­�1î×jßÚ /Õg¡Ü¿««ã¥.ŠãÙí¤SPß²…Ëu{:µùæ"ÿ2ž [bwrX £—qCZ+ÓÛUn2Ûß­V³ÁMá¥¾ëæ»Åž¤w¤ªU(�ó¢Ô6˽Yq4¬®Û¹i«SZ(/ëáNT¯ªÏE«³Ï^vVÓKy1¯æ_²7oÏ£Êäí*sw]ªf»Û¬ž2»ÎÝ®™«éÄnÖZ›Um˜×Ìzå¶’‘×µöü¡6ž¶k£Ö¿.ä;íÕóe«Ù®Í€ñš[©™ïT—Íç'! :•‡…umÚÃ¥uØ,�rs�¬‚rûÔͨ»ùlþpØõú]kW³ú­—Ý(õª êµY®ÞŸ­ÇÌh­[åŠ5ð«âúz çúYQ[­:v·h »‰Q©ë&3�g«Ñ2¤uIX™«‡îþꦴ­‹Mù¹›—äòC»p-(…æUcg¬Ÿ2“öÕøõa;~k,_»ªÐ+›¹ú4{5�Vßo/S²¶¯7Z!ûXí4Öû®Õ?4»¯÷k»h?ŒÜ̺¹é]÷‡ÃëÆm¿:=ÍÉè~u°‹‹»©{¹Ú·9¡âbU©«¹¢n÷š™}ï²»,óIg×L=•z±ÔU/›Ž4U{×Ý­î:ÕT¦ß¾Õ‹­ë]ᦴÎ>N.or凿[{\ë]ÞL•¬TP毺2ï÷ }Õ*¬/›êx5èuVõ…]N æz4*gªÅeϼ^¾ÍÅœðv·�;ÃËQ· wÕÖåþ¾^í´ÕZFnm„—agþüÒÌW­Ì]íEËL–ö›žjõs}QýɾP-Ý)¯åiw—õ«»Ìðp°‡l¥Ÿ“ÇWÒk_‘K•Ìfm½æVØTj™——mgXßÖ*Õ׫›ÑnVê< Uåö²ÖÓ Kû¾1™½<È‹Wi#Îîï¦ú�t×¼z°´Mgž¹Ü?7»]2ŸwÏêSæ-eì’º|~¨÷§«bY�eÌ».ÇLŸÛ©©¾®dË`Ø>).ëãËBñ¥°iöÌ�Ôm盦r0*7˪4ÊlWíF>Sºmf—Ïw¥t7?Œ@Jp·­W¯ªó·î^HWòLj6ºÀ:ˆB»{ tômuj€æzcTŸÖ¹M·Ó?ß<Ý­oÊ‹ñá X·Ü¼»ß´z‚0¼Ísò¨–�H™Gkñðd™]P�ã’˜}hf„|Þʈ‚’1r™—TµÑ’ë%ñn³èW­×ÌÝ¥]¸2Ó¥œ�fÆjVÍ¡͇Š>QÅ©Ø^{;EÝÎ_&¹§Ñ«Ðuën±ÌØêÕ¢?©¯§ûK#ÿ¸©Cã¦c¨¹ENO�M1UÖïìf=³íÏÁè.§UÝùÔZS^U7Bq<:ù�Rè çµng´Êm„îÝ"ÓÏ-¯­ÚúîAÜ_ukÃåÍMsFÑwZµÚàys£Ö¶7r­aÝ×ê«Am§}/åñ@€S«µyäPZoØhÖêµU­Ù&sßûZ¿P¿™µ·µ·Bݨ]VjóB£X»ÉÖ„ûævöpWït[ÒìѬ÷í^íe]jí}m°ª«³Î¦6ê™Z÷®&w×÷]�(¦âöjX[¿66÷×½š�ç;·³a§>{îÜjÃU]©ÕZ«îÝ q?;¡–ªmkCyvÙ†òN‡Í[ÑìÕÚÝ—~¦aæžkkåm´\]><=õ·õvõ*w¯�íü͸�}–ÃÛ‡J-_ê^ �þòñm:¬¥=/-�¡Z,/Ô|³7®�»Õ�ÔœYÍ<f(ÚmþºY*îGúóhޞ·ö¶2¹·[ýêÓH¾~)o¯SùEM]L Æ‹¹î¿m»·ÕEæj²_fä·qwSéZ™Në-Õº“楖�›—ú¯-0P)Þõ~!w›}®Þ†%³’’™Nåu¥�tqx¿êÛ‘¹Ëi¯ùeµ½¶k­4j�îz�ë]Oì…q½h¬-ARõ—�º_-½u÷Ò¯Ú¶Wýý`>{Ö¯îS—£{¡_³n–�Û—ƒ½‘ž7Ò@¹|¸›¼^•w©m%§Ë‡åþï½ÂéÀ—Å|o䛳‡ÆÝza WáyÕ«d—ëƒb=(Mª—=q Ú¶ú¸Ü>T–¦�ÒnK2H ^ë9=§ÊãÑs¦71»ÛæÍ¾¶ÌÕ_íy£Z=¿?LË«<ÍÕRÞ§­¯7‚6Dls]»™·n¯ "Š”‘±äu[?f‚#¨¢Žù¦�ø­Èö«ŒÍ›i‰¯ÉÿƒFÃ4ì³nî�°öÂôZ/¨ùbh¦sÕ~ô¥%üJ1éGQÚE`à0˜@;Q�{öØåX¯C¿ú zåÎEŒ~Ó¨vØ{fd¨Š>´ëóõe@}ù1´>na,¸1Ljãè’îÇZ*h ˆåb� ×áÑ`;ÄJ1ˆ¦?h㺱:F/`Üèp �µq@¢dÜêðÇ€ˆ†×c 4ÆA Òx�f1�VÐ ÒqCi���Ý*A1PÎ��Ð.†ÚQ1„úücÖD} õ8ÆLE} ½` ³=‚ÁŽŽ1;¬>†RôÇÑúBGÜcÅçQ�à±T e ­ˆƒv$Ý1@Æ‹8èGAµGýÒÇB} íÐ`Ž4†‚°á¥¬r5b'D8ðÇÐÅúj¡�2†š€éch yý��1†š$Aʦ©“Œ�2†¢$à«Qaa Eá–ÆCVFÃ^ä�a$ÆP–QÄc°±0†´\„cE‚ãCaЊÂhÑÁ?6§4oVñ…g]å ³ö%Í)ʽd„�û \«{Q�v‚U쎹„ÛU†™  aº€­Þ1,&¡Ø?šKÖò¼ôV*@+9ÉU¼üäN—B„igs`h% ÛÒ˻͉ùìÊÆ5 QŒë+õŠ·¶†ë²®”6шbûÚ+iaÅÞT…dÔµûÚ+ÁZIú¬‘ÜBý�¶øÌu¦ºR@H5GÁúÂ�V¦Ú›">ÍK�Bð‚jg¢f” 31±c‘ë óä«b2L²®p85WTá#¬…ïQ]àg—Éî ÙÎ-tÖ¥Ô!˜³ÄgŠ¦ÑµX�,IÔØXY…_í…šE¿‘€¦ŽCc&‘ 8œw'Þ \Ñ%ñe\Ž·"q'�¬U�³r7[ƒ°›Z(Pˆí o ´Ô"RJÑ’ÿlد@sï|ž`ú×+¡ÃW‘‘]Ñ’1°10=ëg}è¹^½JœN]z{” =�E“Ô�å’ÅTµT�”=.¬’É×s3DÔW,Ž×‘þÁä…ë6/\œø!�<áHqÙVaZMø�uÂ14ˆ^Á© øks÷ü!Ä Ÿ\8K‹$K�È’Zì«,cý4�ÃÆˆr,(÷}£\ËæÔ–uŽÖ˜×¿ ³v«"?¶ò¬>w(ߨÃuØÄõùByTDWE~_o‡1øÄwÃ^&”W¾,³¸’ ðÀÿp¦ÑdU8 âñBíÑ•#É v76jFtn®D€³±QãÝ’ß´ý¦µúBÒr1år³cUÙÃTç——Õ:ý7IoÿMZ!‡(G)cÿÖæEy#Ì!Ý©R‘™5H3»A¸ÀL&e0­Ü²üÕyE½Õúj‰fY¡òíŠÂ¹ ¢�p4ÙÂÞÂÚš˜„TP È@}”  “©=k•ÑyHï–@��’ã‚5?®Skmøuv ๻µôh6¿küZÝÖ»Õè±nŒë×<þÜe¿ ˆ™~ñÀS×Ã Ú ã¦¢êùDnA ìhnÌ%±õ2Pó4ÌÓBŽ'õR†ßÒåŠN.ûZÕ;k±�#Oé§bRôŒ!Zô©Ü­su!u•_º‹ÞÊD0ÙU´�¯²$UI~¯VÇ÷já‘Þ«�¯èÆ–Áù<ÊlOcÏ:0ÄŽ€ñqARÜ’s^Ê Ý=]cçE^6 ša ‚^òÞå¤�c™<½ mZ²�G[–ƒE †b�õšö``m­»ÝQÊ\`ÇÝ6˜ê1¸§¦=&I€ žvåëV@yÿ´p«%T�õÚ²5ƒË�àW_@ã9DêäÑý&“¡3öi¬”si�~Î… 3ò°˜Ø!ß´£(u¿i<+Dä²¢Ø"\hvë�’BWÅ×nÝ•q¾Úm 8ƾ/×$Ð-©ä(!”��,Þ•Kðª�ºZ >™=e�{¦ ‚ot¤7ÂG ? �C’ )´ÄèÕýÜ|ß'x·€”ù6# Ä„·é@ô1’Q/µØÕU7XµÞ‰W¯Fß%󫳪z.P™‹ÇÍÁXƒ@�ýAˈ9XŸ_]Ñ‚*j_U¡üÛ!Ž«‹Ã¯%YÀ»AÙLÿõGÈP¬Ãv¥MUêð?Øéá}^Ì:øa ‘0ò’¦ßnG=èy­$Éújê¦~rî½Ùݪ.Í/|ÀF*€Êmy]7Çîîhÿ_3åk*¬¢–3`yY€ÿç,†q-5{~bëQÅ5±¸Xæ˜sDî,Òk+|k%óõqb6›"ƒA6]›q/]t\ʨ‘Yý6¦Xy$ëÛzÚ¬Á©ØÎœwfVbMxãšÂ6Yå³õœ¢’xõ><øÏ¸bC6q— w¬¨ÌøU•=¿ãz$ê3òƒ˜ÔF*i�ÒvŠ©ñÆôPëBˆCå4ê��=|–7Ãæìbʦkë-•‘Á4릖Ÿt‘·ÐøRòˆ¶�½D�¹nL»{-šm6!úX�Y°ùw¢Øõ^Ô‘üÆ ¶£ëó­báv„T•*A±¹V²›fÅ!UÛYæEVz]ÏäßâȪ…ýÑ l_ûÆHôn,¯éÔ?S„Óܺ+óÖÉa„éÏ Ï/ÂòkOð¸¡Pýx ù&ðð¹‘×UûjWÖÝ-Æ¢ØÌƒ ?Z²Ëyý¹K¡?xF�Ùµ§†±w,ýZð•à kõ…eö ¨i9ºO|�Ò‰¹×…A ¿½—ŠÃìÛÃÄ\-ÆŽfô¢«8� æu•O½úò—ƒèP·b²i펿²I§àGΤc¹ %À3«‚Û£*4ïÞÃgAv‰ó~Š3ÄHÑ)?y¾5ú�® äó¯LQõŸÜI?Å|ŒøÉqÉÑŠÝsô‡«Žë´)Ðÿ¨˜øü?¹yÐÄOâÍÅ3~›©ÊLõº¶c QZüLºÜ&KΗUN˜ï‘°�†.,�3ÙÈÖ¨5™ èÌ(HÈr·#~¬L½«Î?FHµ Ÿ…®ŸÒ üð&ŽyôÜRÝUPÁNðì.:¾Ì˜ÃGÿùz³ULLÄhVضZK¶ž4!ã|u€Ttä  ¹øt²÷Õ €®ú\€fkó�Sÿ2lå×^°UÕ £^­þÇÅHz‰V¶°ã8 ä»¢Ýã©*)_0I¹±x5@»�Éè›=¥¦­8š…TØ_ô&szÿÆ!¹Ó9—°á?¿ÓýŠY¶RÞî´a³¢·á«ÑýQ¿ŽÊÅy:HNÙ­¬ŠîIÚò-¯Ô—´þº4ŽðS”iñkñõïÚÝ36‘ÍY/!Ü�«Y±¯ƒp+ƒ÷ÙÛd޳*OoôÚ�ïÚåÁãVƒ*„3L#ÒË 0“q”A.‡Å’V›ëëↃQ™¨×kø²}™ÎRÈ[޲մ;ê7Ü·üõ" //6æWÀ�}¥¡tyàÖÛóÂÿ>·¾eWg"�Ø<>r»ú,rß÷œ× vާN¶f¦†A ú¾Y}úÈÔA¼âØÐø@ëMî¥h®Á� ¦ßè,Ѻá™@$IÜï�‘Úm4»…]ÖF¹°,z­É­‹ZÚÍ<[¦¤C4#;z@ÙA—>Ç5izÕqŽšhÃ\7@›Ú¾†Êº‰÷5`mn\Œ7p6ŒúG”ð·`9X ø¥ÙƒÊƒ):Kðˆîù!©,ÞbIi‡ogÇIf9Ä‚$�NÖÊ‘;—CòBÿg3F_ØÓñÍ蘫|Ï›(×å± Í~Û@Á¬¦ÿå:£žÏ ä´ç'�×�•³J4[çø’ýÝÐŒüápŽ<¡µø9d²0E€ÍyÀugDö…ÀOœkn©¨Ýf›Gœ¸Žb’S\Ê+�cdéQQ! *·1y8H4çU]¯ÕàõEí*ôƒ™)ü£ efn­¨¾9CÆØKXí)‡Pñø SöüŠ:èŠîj¡ŠÚæ 5kóŸU*z¦Ínu4uŽ#yÜ.ò­^¦*ñç·@ÜÓ-ˆ åÛ ‚Ñ:­àåFãê4öW#w°$,²rPpñ•Ä�€³ê¯-¬Ù· ¦’³4 WeÁºWü™…k .°[ÒÛ-ô•Âõ }´š™rîœ sÖ~sµ½,á¿påOPݵî'¨î^õ“tß\4›(þ: î’s'ÜRΦpÀ»Cò¯Kö0_d‡å¯/ý“"Ó5‡¶èdS,Ÿ8–$¤� ák2€ð#áÂ3Z+o»H. #ÍßkÝ«ÖunÕÑu>Åy#hú½æ ˆQìdg3Ut¶�-ÑP9$ C ,eÊ»»`X~ÂOŽW‚à.sؘ“�·gsô+�tÕŽ~Õcªörü áǶá¬29Ú¨[¨˜F ô²q1©™ŠâG&6ïfª¬�Ó€£n4…wrÕà‚1Ò‰�,ø“³pI’�Ãï2–½pfÙû%Ýî®ð|,G‰¤àWÐ}ƒÆ)[„h0m¼qXÆ”@JfÇü^†!-ÇÜfhívÁØ()÷ †&¡09ªÖe"}£Ÿ¤æ6*$ÔðãÄN�A…hÒäVÀ ,½ß]ç×(Êué Ñ·4£Hò¬7çé;]ÛÚGi ?7çìlßEsÙˆØFëFIê…‰•xµÁɘw²BÕg6*Ù÷p5{‰h_?~Tºé;kÃnb€*A3@Ùÿg•‰ÃáÐdGˆaB†gù�ËOÕ‚÷“smhÖÓœ´’éÍݧJgRåy—_MMYâ'ÉzßNg5cÝ™Ir€C�ø5±›ìL±Ij‡[¥§¢0詡¢‡Êš½ä¢nE¸9ˆC@–ŒÑ¸òhX�@“SÝAÊ&â¤I“ƒqÆ “ï[¾dõ¥¡áZ_¬•ÜÒÆÓ»#[Å]Ë[nòœ¥VÄk8€¿­Ò‡èÀ8æ¾jÊ|\Ø[p’IjØ�c[L ,¹bþjmå¾%‹y¤ÎÙYB'túL¸§ço{œ?2þΉÔz—b!B¬x˜ƒÆR³ª‰`èi63_[\Y¶ã¯©qè¡Wÿ_Ér’ÛCw6Ę�ºKOöš.AtòNǧàÜ!Nl7 ^–Ñ‘>8EmÏP¯è¨•Þ˜^Ò�F½–ç÷.ýëÄëúì‘/×2– ”MÅíV[�›él¸�TøÛ^ˆÖaf©1•¾*‡ ¦—ºû+W¹UÔp½ù~â5G�°Ym_ ž‘‘Ý*žæ°B>å0g¾·ØÒêãì²uF²7쀋(l) “d„¯¸§ò%5‹Ø7àâÊ&®ÙcßþXÁ�>ÍdSãíðe´°4¿°:[ÓÆ§�‹-1£÷{”(žP¢xýˆƒç; ¶ÀÐÿ< *,NX}!nݨ‘¤ñ¨™JÈ�\«£![¶ Ûqmm™åÊ—šÒcÎÛí‡)Ê·}rB®úï 6l!�`ïU‰¸žÕØ1"ÝùùòÙhBrýgøÚ‚ sð¨ïŸóm,V�€É 6ßùqáµ�¼^øaOD`í„ ’â4hvŒ»í\+µ‰_¯_Û}Gž«ÿ¶é‡´d Èp3�™G'¹%7šqRÖ÷9FõÅÜ�f°÷¼gô§CH…9 Ò‹%õ€´&[]ZÕ=8<¿ö/l½µ%p¶ª»ƒN/d%‘ÌÁiAîÄ-6Ž4&ëss¬�¤Ö„6ÃQ¿Å�¹áœø:‡û-™kŒþöþ_Øú³¾0__ZZâc*ŠW0çmâ®á <<ÇAÁsð+Ø—Àˆ›~$|H“Ãù,DU˜ö?ÂãÍ0<‘Ná_jß+éqV2á{~m~iMlya�Ø�|iMÓÜc8Þé” £c° ë@ z;#?GvãsÀ´Ï¡^Ú nLfk�HB ©ªqQb£±Õ3��»‡FôpÃrñÛm¶Ð=², ·¼¶"Ì ŸA�Î_À6:d åUGi˜N't ãˆzá9gÛŒO:—±¢\�ìãp‘·h€É§6†™ Æx€3]™r&:§|Ðèû¿gõç4÷üGW(S1#Î ·:›ÏB¢Wÿj áMNðWÀ.¸Ì™I½‘¤ÙUgCk„ˆ-`�L'‚Ƴ5’@ËÇ;›ž(d÷zÅ&#l»X6Û°§‘Ϩñá Ù‚ì{Ÿ¤°•¾zvM” ¤¿ 5˶m³ Ó�qõR�þc„Ñq˜PZØçÎdº(QÔö²/½?ÿô¦§å™% ÂóDòû¿ý�ðU͹QÙ1Á›xV%"Cpí˜Fö\ö´Ö™P cƒ,+�w‰<áB¶“’¨­[ádšŸ�|e´€ÏÄÕ »C ÛMû½w›ÿáó(Âʳ­Ö�.AlÐè‚6±:Ú Ù~†�=>íî¹çòÀéõ)� ƒ›‚*¹¡æí�à„Üÿñg> j~ΈÊc"\&kŸ1Âå�áGx†/Ïrc0húÃdÔC³yïM7`È@’°ý¡OäÖ3K×¼×`²Š|ܺêÌÞYÄä€*?3¡îÙnê-Ö÷³CŸ�(áÙ 2y;QÿÌ„Ðn[ A2Ëøƒk³ ÈMæx`ù$0ß0šTœkÀ_¥—!“šf„2Sm'“�›¢‰`ŒóuSFëÞ4ëÅ´±±øÿƒm'ª4�#ÕŸ›S“}oN§¶)1} 7ýjp>€³x+£¿{°ýIð¾~x"Ù;Z5oÚ{¨ô,ìgz“’ Q=œIP*4IyPaŸÍ®Â3èì‡f?<˜Ö¥B„90.&âÒX¯ÚíÜwŠËàÀ€¸0Ý%рРÜ%X¿¬�ƒÀÑ&áEÐsA^» ûgK-¡ƒm”q÷Ɉyöü¬–�5wâBvض=ÀÝ‚± lÑrÈ$ c­^]]1Züû×3bª$e¼ÆNP!Õ®ÍÁlØä~ˆ%` 𮢃1Í ''‚Ë6œ,bÿdÆFgV¶{È)ü $^’+®2ìƒcG°¡.Às�&Q±îjª‰6õSvŒ} [>FpP©•åî8­ïÃÅ? œس�À41i­–4“äŒÅŒä2Q•1&‘�õÛ#ŠÑ¡Œ„,o8hÃÀAn±…Ó ÝÁ!¦Ùs ©ªv«Ó6aâ^BÈÆY‘÷î¶Ëm.ÚÙÆÔÀ÷~U›ßa ¦ù€PÀñ‰$ iQI>À7Ès~ªšR0¯ñ½còA°Áˆz¨UÂcšßDJŽ�W*º _*¡`¶/ÒV’ô3.b’úÄzˆÝ#Ž.Ñ[¶R¦øg•Цjxðþ¡‚�ɲãK×·ü¢ØÃ-¥¯§È㲇DÛ˜ÄZ�„¢y7-.ÌfÚáÌ�„'ôŽ(‘pøVCý-EÜ ’°Ã„Ñ˰�V™ÈÃΠЙ)Ù ¤Ú oÀ¥yÐwé(q‡`yƒNµ=‡$C?V[X†�¬¢’ B¼d$„ ±ÿýž` âàó(„ˆ†€I¶ƒæÄâa S´§XþÒP¡dD…žwzQÃïÉ×V$2@2Ù9{¤$ô0p#Àõç�HIg´Ô�¨ù•FF•ßà:<°HãË8HÐË ¦HÞ°…Iø&Õ=Ê/ÍöTSî©êº–ÿ)LP9®’BØåÔœÊ%¸ªÁ „1LPÔ·`Þ³êÚvx%½×åÆÊßÁu¿“6Ú8ÓžZ:n®F @-7Ý @‚�dN`p¹:�Ñ  â«è ¼»@ItFLb‡$Û(È÷³#••Û{òÄ*Ò^òIJâ©î=±¥DS¦@A®�T‹Ží› ×fÔœØ<ˆ§V“ó '-+Ÿð¸g‚ Uñö‚š2JàÅ£Á€VœÙIF�!› žÒmq¸Œd ƒ‘…”«MIù{&ËgÈæ À¸ÚÔºŒ !ÖÄRà€ÙögÔªÚ2*Þ¦.7¿\-ev‰©…¥OÉ&Ü �e·ÀÓÐÙ… O5rLÕ:i•ä�3?òPò&V'%ޱ̈́0Þ9íRKÎ5ÉõV0Ú>›.`�Øš–—�™«8kÈ6Ò´I…‘[ŠP%»û˜Ù·‘׫|ÏTàÆà̘¥36L B.m6b&UžI@ZBø�hÚ ÷lñ¨ÿ«å/#@½¤ƒ T–ój»¹ó¥3Ÿ‚^#ŃYдÃVöwà_°s¨×#BâkÇMŠA¿í°&=×~yc³&ãg^&ó‡È�ö wpsìnö>Ì+bœ/-A\#§>A¦‚B§|üÒ¬…ý·×©^¯óâbEJEîIF“&ŽŠOV3í0èµ¥AÃp`ø°* j6¸ÇA?ºà܆Òçwº8$*Ž›�àO4¤ˆÉ mÄá‰#ŸCÃSB�7äe¦l^$;{Íèôzˆ–VŸK[2Ûì0ñEŽ@l°Lø]&ÍÂ` Àlûq(¯Ë{Ï�Ký(\Q+Èåó®‘0ѹ6ÞHŒèã´‚Š#ã ìyŸQ¥4¨ÉƒF™­Ÿyñ¯Í9ýEþ5€ºj2 š!›±–h ·"¤ B÷¨£šw³/¸‘bÔUU7Å5¢¼˜È–�\wv6)L �Í´e™œÙ%ÔÌœ0ɱçË+¸³1Ý<€`âªÙ; ­—ÙZ¸A“X†v¦µnÇ‹‡ š­Ñ ^‰‰ƒíLŒæŒŒ‡�—åMøœC‡¦­hŽ­¢P´¬/qniUsËßG�ÖfkÖÂÄ%L˜£É{Wá�ˆN[ӌ݉…¡4ƒÞš%Ô¤�]IÅ|ÎæÏYáê‹6„ÅöÛ‹*4uâ6-¶ˆ›¬Å^4è€x 4øä½]¤s¬}N8„ðGÜŠPYîAzºÈ�aã…aÏ÷…Ñ¿Ö�è/˜ôÛü‘½©5;!˜ñ--­®¬.M²¶«m>Í7\ãóŽåËmv¼m8å8 &;ÒjôúÑ L#ÜYÐH›LûàÎ ´þ%h3ÔÐhóóà�ry+t—=ˆxÓ´|¸¡çšEÞ># 5É…øDöKn¶N.ý´ÙÕí”<Á/J¨ù.Aìí®É<ðæþøÇpyÞçæ~¼Ø™´¾…и6N`P>Æ �ÅÞ;—à .ÞÃÑ ˜Z8@ŠGýkkî_ PuÏÑJ… UÃ$ì‚kõ“áSÂÞª´–×V[ Ë-ø—jS¬+kZÈáÅûøµdàGe É.ºJò© Z2Ì¢\AJ Aâ2ß–«óRûâ£F 0  âÙsHý&¤#ƒ“ÈÙYj}̸çh#£>) zØã™ýÞ‚I1‡£GŽË#rS>%% ÄÒOñš¶Å¾Â¸ÉqBòî•qÂð�v‚”_Èq¥?‡¬ãpœ¡Ñ ¹¹0­‰q�2,Èbl<5  òÂp AüåÀïq¦#í¾)€EÚrr?:rêшu¨0Y hÛ«½bEÕ~ õY™&‹Ó"�6ƒ k99ÂÛ–�©â€…"!à ØD › Gp‰«itx³è—ö ÷PdAëO�ßóÛôm€dæó Ø œ[XY­//­¡a#ñ€°N0ÍeÕ ¤:bÜ{\…‚3üÍ$ŒK¨.®,-.,<š/:13Sº§ë”溴V-A•Ç¿ý]€ui{“j.¬†~U}‘z,°šÑú„3ÓÞß2²zµáRðþžKúJlêRcâÉÛU‹÷NŽ…�C>eÍ¡o²‘»!Ü¥oç?wŠÈÂý[ðBnzÿ õ‰Fb²6ïœ&ó+DðLè=\ •e7ŠŠ3¶1.²= Rßì€{ÀÒÓZ�bΑæ®J@�÷º€ñwZP¾qx¤ÚòdFT® âÂ5ÒEÌkÐö¥k¶Ù:xa$."„s7P=6Å�vª¦£3E£¶_ZÙŸí×ÎÛF»�pÜa™$YDZ�YB¢9ÜȰ$YC"5éêöÒ´@ºCvü «! G¾ÚáN²šºŒë«#9•\3Æ\Öä’á³8“JAäM£Ë¦{¦ZÍ€ˆ×RÁú³†åŒfC:×T÷Èå ZÐéCakúB1¨ «ãZLZl£Yõñ&Mâ¬�iËÜ]“+©¸I o¡5¹aâW.y³eš§šZûÙÖ©ˆl>AËr9×\Ììý%„ºÌ ÃC?EÛ#,¢.;ðv¥^o˜£V¤Ýý¥6’)á¦luEz$#ÈìFS!ƦÕÐt]Ò.‰Þæbw»Îľœ·ª*Ž|&ˆÖ\%33f¤ÙŠ'ˆ�­7xÂYæ½.g³Ód‡�ý$û­Fój¥ÀYJÊ?3ÅÞ †/ð›]oб}¬ary`U €X3ã+Íž «õƒµàÛ¯Š¿f)4“âGC³ÿJÍèpš CÒ„†§—28�I¿§Ì(ÊGMXŸ2´¼øÚ¬!¶k^zoÖ‘!ƒÜUð5¯!K¦0ÃËõ! .§Ó%‰ãôº‰©JéꈭºNÞKT'œhõ ÊUbH«¯Þ¢êgÓë±XIx½ãÊÿ=»›s6”د–ŸvW ŽqgÂß_\¹ygëàÓ¡L‹ ÏRÆL€¨Ž/îAw«¨¿G¤õ4Šä­¢çACv£¨ãÖ¾U¼‘kOÎÈ Z3³Já(ŒÐí#€ÊÖhóHÖ·Ž;¾ÐJ]&‰4æèKá0oŒ°#¼dë*ô×°Ö‡j3V‡*¢ŒZãI¸ÜƒÓL¨š¶S�`ÜÈ_hœ�G(ƒÊ4 íÕ¯F1~«F‚v*ŸB�´0éV5jU^¢*�åŠ×2ç!·%ª0«- ‘ç’�#l]îPøæ¶Îš, #D]n´;îvØÐ¿æ` Ì´ëáý䀫 Å“?®Ú]/�âöJ.¢¦oH’}µtüæ5d¢(‰{m€èÔ]eÌZÆód[�Èd¸Om ènS¹«Ím‘ëÉQêzƒQÏÈ–®²æŒ£Ú]®mehó Q‘„ôÿ4a1±Pv üטâEñãG áoBhJч1Ć̯N•“s0€{ºD‹-éÿüÎ�õ„\\ýâ•@ø�,À‰µÐ�\ÙÔÇÏW²º_ÐüItï#XŒéfâ´…�Xs] ƒÞ¦‹4!ëóˆa|üš2ÖMu… ?1¹ââ°vÕ••œÕËLi¼»Õª¨7tªå¨ š+‚°—/ˆQ§âÈø„=r·góõ.D0DzüP•?*Ü…Åãz02ŒíÁ-7ä\†Z(AŠ7¦8]õ2 à Ç ešKÍâ 17}gÍòÖ4Å�Iò,Ì!�Ó‰$R­L¦H´Ë·ëV,´RªE±œ©h-xr‡Êi2áÁEÔN¬ÌÛÑLû*鯄’Ö’"�Æ"²¨'á3é])’AnÞ{()zGRÃÜÅfÈ PÅpòÑbÄ7FÃÀ˜¨T�ˆQ¢"ÁµsböL!€ƒ¾ä?èþ,ä_|®Gû ›URrÛMeZ!= ì„Á Äðð&×lµh\ðc·*Ùæ!ò"u侚•*Y,R•ñ'ØsÑ»Žê(Á&‰&¿ýý;4�%¤½€*K…¹‚è �ÕKÊbF›ü=B¹âLúÿsûr¼lð•¦|0ê7Œ|ëÇ�‘8x0Ø(ÁÅC7l)×gÝ$†”ìp°âEªÖêÚ6&Э%¸ðú»ôà†g¹ì7¯é(xøÃ¯<–n‰fY¿“QÌþÉ�¤é“õ¸DpQ¡� R¼!ù—D –ª²j¨÷Kjµš _Ôè¡6´[¸à·2‰‘,ª)èQųՠ|HüýFùùlÁ°z瓪 Þÿ̪¶îbz´±s¬ŠÞåD+¨7™íír(ÓÅ<ÑCºiBޤÇPZÁ@rÑ3¬#¯q�±ÿà�'n¥°49âW!ªÖäóƒìµŠ—1R8�ß“qÐ<~èCάœðe“(/&8‰ ÂàXp �Çë Éi qhïlfêjö L& ë#§¸gSWv€¸ÍÁõWq¹3/ßD¼(4Ô¬µB« ªDl1âBwtm`í.Ñ�(9@’D�ŒØ È8A2Öõ§šFˆxóÒOt*l[</æZPkº"n +³âJQ™ÁP0?¶ †×ä»¶0¿0ï=‰"ˆ®ÀxÄ­q?LÁÎ#¶D:±?ÀHTí8@³èfÂ%UÈ@ïÚƒPå@S©½ ~Î×0‘­¢vz ÖÈÀܲ �š!š ž‚L—ÑÛ›!/µ^åÃYl Âä9â½ �€M2�CF|“X„ðZŲâÆ_äŒF{]�{ç° äpÔ€è¶x×'C*&ð°ÉdÊc©Í�­KУî¡�w"H¬è%Å\cj@qÊ‘–�‡£ƈBêW›M}ˆ‘Waø¡ [þqW!�À–œ{6¶PšLÖåtÂ"öF¥s?ˆRˆHqÔ!¶«šrþ*éúdž$N†$NÂc1ºzçxky`rŠWáÖ¨ÕÊ:}ºë�=>}³y¼ëí�x/Ž�^ïíìî°‰Þñ¶XÝãSoï`ï”�>=Âf9¸½Ýx°{¼ý”}ÝÜÚÛß;}‡¤Æ{¼wz°³SòÅæñéÞö«ýÍcïÅ«ãG'»¬; ôáÞáãcÖÒîÁîái�µÌžy»¯Ùïäéæþ>4‡ð6_±‘C_½í£ïŽ÷ž<=õžíï첇[»¬‡›[û»ÔàöþæÞAÅÛÙ<Ø|²‹µŽ$'¥žzožîÂchw“ý·}ºwtCÚ>:<=f_+lÄǧ²ú›½“ÝŠ·y¼wÈy||t@ƒ³ZGˆÕ=Ü%H€~sžXøþêdWõvv7÷<6g‡™‰åÓmHHž,adœFc®“$JZA¿Ü4ç>ô/ÀŸ�¢±ÉpýsD¢5» áÚ¨›jðh«ÀÓ`¸ŸÖ¨zZ^›�.¨ ¹�2‡ÎW<ˆñ‚ló E<Øj«• L�"=ß�j—¨2€ôÖà÷vëuávH®îTGô/`�“}òE÷„²m¨Á³Õ¼“€‡••ÜEv€;íˆò\ÁÂþýFDouô€u!ùÅTÅûªþ~§!6ìM¦�ˆüž?#5]! “señˆWðà#ÌCv´éVFÀ$׿JàˆÅu%zã<úeM e«µÝ÷¯=Ï�âÙø %tFc`÷ á³^f™`4ð\FŠÛ÷¯*™–<±Œâ€œp¸Û�XGæÒ‡”¬åð«Hû ŒpҬχ åÉ/U5މWPÖTŠ’TlW¡KŘ¢)Uh!wÚ™°ÆmbñÚ;†˜¡KÁ“áóÌypM�Mµ­CiCTXËÙšPõ™H†б€í¥iÆ%¬r1ÖnÐr`GÎ[ÕÛÈdOgvßCWTë"v+¬„$€s»ˆŠ‰^±mHwm¹Sà2í:s( M1k ‚=‡¹~ÂæÙ0¼r¤�ײq±E=Dت"®%‰6Üf9§böˆë0´‡xÅ"0ÚIpŽ–ÔÂá³ušB|Æ’}‘í® ü0P&‡è㨠Ÿ”mšX$— bV†‘f‹ãkb§…Ü¥p?ÑtPaˆ+°æ=¥˜Û’^.é‚Ã. HÆá  -ІƘV�€€ö樉k/¾U-�¡B@<�×ArPÏ*Þ´æ Ä„†éi•l„\A 4‹€Æù'‚CSÉæ£ÆW“[Ù7uOƒVa42a4›ûŠ©§�è¹Çy܉ù=4¿JiÎÔZ•FÒ´$”ªDÝ1ÁÍ6×0.–`é”ÓŠI‹äüd·¹ƒÎ ™Fꨩ}{5€ìâʈÎm~Æh§ÑQ)]׫‹¼ð,ß¹{m.³Âë%‰-0Ô T¸=I›è“P �“f÷Ê(’-ø³v�¦nfix5ëýù8 èÿ»K‚K›,½ÀK/•ÎÔX[c>Sg^Ö0ÉÙ!i³þiàÿz\Ý$ŽÂ}޵:,7Ž:®Kܺ_ÖÉWr¿ÑiSêÏÜjó·py Ì3p¨ºèƒNÚÕß×¥VWh†¨®?´äø­k3ä’dÉÚ‹vm,7�…0mæÙ‚ã٢܇Žâ%{³pg½©�ï ·Â#zÿáÁ� —åS×Ñ`–(Ã4jÂé�g‡…Ø«Œ½†‹`ÈC–Ìõ gë�혵•^`þ`zꨅª£4ì%(hO½,¾|VﮇQ'ö‡Ýkí£Q.û»AÔ!úg# á=\O7Z»5TC¢é¿:4nus(‰�ZîM̬ãxÔ°\£èÚUzDó<“™©·¤Ö¤l5hz'û�9²ðvÜo6µ[ñ{ï�¸RU½ä¦IfŸ3FÔÍÙœA\úñà‡tÒ@ö¢[nŒñK\•ýQ�@ƒ¼0__Ë^ŒFßZé¼Í‘Ù-ô;œ÷"7ÆëXér[�,ÍÇ,_Å|& ¯ ¨ÈOj¯ÀÏ…›Ú+¤£Ë¬¢¦m}Ü‚4hôm­#x}Þ¹r¡ð.(ª³€ôí¬>Of²ÁÎÅ<«.á^6LFA+’YÍøúß�EY™�ÉÛëëiPbJZNÊîÙÔò€ÜkÖSiñ ¸.ãœ%B„éÁ r�µ¢žµ�™û=ÓCÕGGÄ„¯J 5‚+¸†“!G÷ch&\—“—ÌÄß‹=%²¼ßÖnxŠŽçÉÁˆc� À 99 :W ‚>“ÂÑö…ñ… “zŽ ¹J‰~&…®Y9V<˜ætxtº;“ÆþE˜œû£v߇àæo0Ÿ)Zi ƒ&&pKNÌó;B]�’9LfEo¹ª_Q1ÉR‘`•Z}S “a7¥¤Ê<¡F„ê@˜ïP…[óN#Lï)ÃöBðG¡ÁbmòP¾2z �­mäAÁ°<ÊÌ‘J×ÚºS”Ÿkq~ØL…± dë‚u¼îýöh~ùìc†¯…GVÉÙÝþÖ˜‡_**�#ÌQ9¦ožJaÕâÆt»TÖReÎ(1¯�Þ– ¶ÓºukE´Ë\nEQ.š ‘61fQ6Õ¢ YŸÍ§¯kQºü¬9çqU2—^€™\1Îì¢Ež­ð|æá€-É0ÕT¯üb"¦;ø0æ–Í”"!(¿`�pK]žÀœ“#qÒµÚéÏO!I‰ œøúƒ‡G„Ô'›F{`&ˆ�²È;Ñ XÜ™Žç3©5ÖÒWcL9–¶G”VOR:Kì`|LJXí‹ÈÒÐ ¢-ž)q‘"¹€ÉAmÉšžEDÕW5E�MGþ2ë‚Út, ‡{7€õ­Ë–A‡Šc`çí¾›qd…µï�]Ë£å-ƒ]*$,åÅc# \�°÷“JjB‰lÆvü¡d¶|5(W òÙ×_�ãÿCË@Mr:ÿSôvÕ0[€¸(c­#û»£*v™Õ¿À»5ýU®N÷›éku|ՌƬ�§cn\A ‡…E�¨ËÖàGè+�žŽÜ q²¿*¨ÏÂ! B‘ O~5Ý­|»›“|4ÛL5PŒê¢:9xì%!8'A1ÚÆ44fjók;¢¶‰¸šZÞâ¦Ã^OçÍ9‰Ú7s8—CªÊQƒj¨¬5Ü[CJ;œÔðaP˜9²Í.úš"¥ÔzÏò"óσ”Í:œÔ(ëcôñ\Qûg ïÀ[�±&(F# Ó £í6f8©HÁÎ4áQ¦(á�iyòú &…@dyrƒîš‚–qEãÀ°0›÷ˆ›än¼¤¥F^­o‚© &¤:Äžœé\ˆe»–»Ðjë2#i)Þ>4ã0ii4K)W9¦ˆEàªe¼›¤ÔªìÓ%OX¨­x]r'—Wïa?ÐóƃyŸÐp‡± â8±ýÝŒxT‰ß‚Gð˯t!+œL}®ç«ä;\6—£¢\’ÏbGd\†V�„�š*SàŒ#ú—ØíÇѬ‡@¸fîиVm@zH3꩸‹¦±ð{�†/riÓjl8µK*zÒ:eïùÆÌ© Ѿ(»'k)½ÈA2z[ŠÉ¥_ÂTôÐËuüËÄ�õ/¨ƒËqÁˆVû7¾.)wÿ¤ò�>Ï¿äœï+縃æÕW~Íû4ïWм_Aóî%hX`¹À8‘T˜õK›Ì*ZùU‡˜™làU«XþDXlN×€UøcZ0“Ñ w-c²Š¸Xì„�mP³"ô9Âñùi×zDÌñ´CFkE}øßõŠM«¦@ú€CÍ>qU‹Süßõ  9ЉTUpò‹’„XüšÔüBnŒ¤Æ)ð_N±JŒ¬`=S­EÆ›b¬8z ‰´¹Sf¯¯«$p¯CWSLÞà«%‡ÆÜÂòÒêêÚZ}• '<&Pªæ‰jJõ=…îhÂ%J”©eáÓØ >þštÅrVІƒ ÖÛ�­œ»6#šCÖÃy|8»‘÷I•¢Æb5Œ¥"9ª}ÌOçpd=˜Æ¯bC¶—ÐŒà†ÿ"¦(gîÄEtV3j1xSŸGè2Ë¿ᢅnt ^WEfäÀU\hðÁ �­ÈdÊöˆ]˜’]ËA˜Î#ÆD“Xùnðet’V D]aÍa¢q-Œïž¾ˆf:­Á2¶™;aٵ݋?޶‚s:’­O[VŒÌlÙ)¥OlBÌÙwÆŽÁùHÕÔ~„MÍÉ$Š«kÄÇà´Vr*ПoÝŒ†fnÛâùÐë©V²µrhŠ–ðÙˆ´–•¢~- êõ*ù¨Ç×�•X¾Ë¹Õ¶�† ™¨…‰N;f¦òQ‘­ R•yWTÓx¥aGC :LLŽê�œú[[M :¯žö"oÀüNIC�õf=îÄ"~ôvò Á­Å¸‘V‰ñ±fë–°4$h‹ÿo`Þž»X´lò)s—°µÙ–鯭\Yéû¨*�'¢ÅÔø£Þ­Ñó���ßeè°âœêËËõ…µÅú<ãœÀX€ƒ~s‰ˆx†‰Š@�­Â)¤ÇU¢ÍÖÌ_7WSÃ`P £¹4ì¤sÃ(¡Ø•¬ˆlÉAÈ*ÔdM‡‰vfŽg��13ù¶|Ê̇z_αÖ^õ{•.n³�"cÒŸÓõZ}Úc/ÉŸÓÐsÖñËËËÚåb-Š;s óóóP•Y¿bˆ;w¬¯­­Íá[VôÏi&úN{×ü/´¬úûçô ¸ôæÙï²·€ ×Ñ%óÏé!§%ÓŒ —[€ÅÄ»M¸�K�A{ËA$Ÿô¯Óÿ\Üeƒk†q ²šl`Íküã¿�ÓòÏi÷柞£ê0Xö ô̧¤‰<â‘CUt) o!‚\ë°€»)¤ ®;µoA2†fû š¨ã•`Ú"¸Œñ6_ì�Çwø­šÁu0&´jðYS’ ü† ‡ï"ûÊ�š‚ÍX¶ÖÂP!×ê(›e*LÅ…Í�O0 Òl¢ü4È*¥Ê8T«šr–ä œ×ár°jjÐVáoc«ÊûÚ]?» k>•Q–(Ûܦ@p¢6D.âW3"ý›“q_1ÆU{�úê|+è@,~ñ)ÛŒ~Y…á x᳜Å`P,m?jξ@'kŽ£&N{µ°3_ÃýTÍè4«Ì¡„Ç.8ìäsšF:CÜå±ÞØ“·3M¿×44:Þ^u¡¶Bï6t"'ÊRã‰* |ßîl¸ýÏpos@ŒmÊÎceÐ4V/ÃVÚÍ=‹Œ ù1Žë»Ÿ"Â÷5+Y®´Ä3¡„�0AÅ §uÆšgõë�•vBÚj® RtMáŸÿC+‚o£Øo…£(:êôÊšäüÊcùË$ç—IÎ/“œ,�%Ï· i!e‚53³šG©þÒ¤¢~{Ô“V×�ˆIC&à ·£uˆia´´O°ÇȈ½Æl7õ®kZz£M-�d\É2ÀÃ(ÁŽaXÅx·eÝô½õu~ºð°üýlÍÁCP&HÆFp¹UG<á2}æû9‹Ïš )IŸ9$œ‰>��¤LVU�* d¼z×½:7Ý5Ú[g²Rxú1* ™Š÷‡PZˆ‰]gÔš �1\å€qýñây�c 2yð—óóÿäO„îG{Ä 1�†Ú£ðÖ@1�ÔhvÝZ#æR¢h™VË#/·£A¤¥Öd%áµ¹.«né–¶{�S4&±ûi"¬vq;qJ¨ë�õý¦Å˜ƒÛœ(>ÏÝmút‹>Iü¶{Á•Õ±ÐÄ2Rß?‡´&˜xl‹qŸ³ÿi×c–¨`€ù­(YV#H/JàÖ/îSB ñ.AO–ØæÈ©Ú”Iô¨:; „ÝVƒÉá-@Ø>×µHA²©e³k-·ÏÐF Z™sSDL¹ž"©À�IU"â´1 {i•Á¡fSÐ8�N½\÷ †MÙ›Íp7 ƒüÔ¦°ê¬…ÆSÊfCöÄúÁ”Y¦JõùVÄ;Ù‹(l)“tÕ/íÓ¨?L(³-ÈêÍ’ ‡œžògF.ù.¢4΀¢l¥ þÙyÆÊ¢‚ºK!k†`!øb¢üµçC kI?ŠÒ.ƒ2H5úñaO¡…¨Um3ªÕ»®¨©Â‰EˆDR+ T-€Ú»›uíJm¨ðpònBd½÷>šŸ[0ј”½¸Y7/ÝÿÌ3lþ(í—©Ã/S‡_¦ÿG¥e¢MdZ*œÚ m7ÒI£‰ fc¦e=S7‘×i²í „ñ%}»¤*#üè¯ dt4‚߀žM‘Ž©ú?ø÷¯3NúÀ‚à¬y‹)×H}œÁ(cüx €’O}…Ë¿nCé‰Ð ‘ým"ÃåEaSl‰Ì/…õµ6y@,è¼nõH¶%>É«PLáKîð¿Ø¼7F"y5ª‚ °f¡Ø)BŒfÍp{haÀ-iÐ1Œ�[£;ÑÃtšøkeÈà5S£,}>4&~«s>C‘¿¢~¬d¿EgfõÏŠ) ÀÏÃáæA ÝZoÊ‘§~sÏJF@uk®U)¥ç“-‰©!îàsXc\#Ús-D¾µ’Dó³FËÇA‡í}&ªdÖUjÖ˜A±Ò\54ãÚ øÛ=r™i7îi-è®øÔ–þ ³8Å;× q°£8ì„`¾ÎW'jATkµlbØØ¤3� >]7çÔ¿”O£VyCÈ—’4€Äa2ùÿ5¹eJ¾[Ü£r°:©^¸ {xõG³ðoÐ϶9¼‚ë¤8èÏL ¯´ûÙñ±YdqÕ‘l¥D�Ç"—ÅPÉ^UÆEsa rO4-¤‹hú£9�ì@?æ�”}“h]•-€Â³lS Ýh¿ñ 1ìÆ ½Sš(·ž‰$s1‘xSŸ � ;¤ÚÓ³z Mâ:Äz¥ÅÂ`ò#\hAx«³À¨fXW`q\�¥q–Çx”W€qÃi˜öòG! 䎢µ®skÃËÜšMH Ïœº˜&ï-�R™ý>ËVìDx: Ú«Åàb|:Éà©f±²<o ©N13* OèkL­bô8¤à�Gïj<È+猕©Ã€€¥æ€¦4šóÊ5÷¸�{¤¿]ä_ã 3êùñº·Ä€ùŨ¿î-óï�¨ÇŽ„ñ­Ç6÷º·†_¿Jkr†× MrLØ×¡±V[PÐ1In×5’º´A’:Må’_Hù1;B»Ý88Ö�‡Iµ^[®x�T%Ô…´‚fó@ÜÈÒ, C;Øï �ä"äÑ| „˜…î!ó€�ÅÚÊò½ádqN–VKàdù†8á›1+ pr_ƒ_7øÅ¥ƒ_º¯Á»–Ä|m�-‰…Z}áþÖÄò8´,”AËâÂO¹&�|"qÓÁÓat“%Q¯ÝÊÐù B¤ÔË% «ßt£Ô+÷†’±‡I½Ì&Yø¦ë¤^ñæk«÷pšn÷ÖÈÒ7]#÷²D{ËãÛ-÷³@”PSŒ”…)K€“ûØ3B�»ý2Y¼!�~*R/µJÀ3"#¸Po ©EaD^o¿J¾å ¼0v‰Ü³92]FÓ’•r2º–,ӟѶdY㌾%Ë&f4.Yf*£sɲ­Kö¨Íè]̃Çк˜TØÐ¹ØÔÈÒ¹X;ÓT¹d©­s¡Ysh ¼M¼±ש\³ ‚>Z°ˆXßx+žÂu08↽ Šy'›]Ð!u> Ó¼ž¦>Ša°Vd¿6Lc˜è–¼X„k´3êÚa­ë'p×À (�¼[)lÃMf é"…ß¡lØ)ce]Êk®fZ¶d n@'"Aé¡G¿f/ˆà‚ p™æªU©Wc^,® =ɉœ®w¼Œç n¶]ÖuÐ4zF|ˆÎë&B®^—v2ÔÚÈšC™!É Ë"íËX7 »9èª(o.~#uO(l£úoìFƒÕ‡Ösì 0Y÷‡øÑa; ZÿðÔúI`ƒ+ˆ ãmw£(áQŠÚ¬XÎÂýúá�±Ü¿ÉôÒžâ—§xu½Ó6¾ywÊõŸÕÿ á¯uuÎUåɯÕ83NC1ŒÁƒÎ€åL³OÐt€¿~Jéý‰Ãà"°r#ˆ1ð’x.¯õìð¥ jÅŠ‡Š�¦«Ó³ÞCÉT‹øÃ‹ËN¿8´ot°ýæ(Æ��^Ôð{Ä�hÌŠIŠuh:qýßʃ£c ‘c‡£[à\‘×”™W…Ÿ~xžyÚyæ]‚«‚�VrÜÉ^Å5ï4²@ ]~V<Ê7�jvºêEu¹8iÙ4MóW5Rþ¸Œ¾ÓÍ,¬�—)åêúV0à�âÎLÌŠzB.3¯—e�kIÇy¶vÉkKWåŠãevÔf!»3yT[¿hך4«U_,·W…`Èpr‚ñ�ÈŽÛ‹"ð@j­¢[¢ÿ¿ˆi-nÊ-pjUz4Fçü�’5-yù|¤#÷æpØÃqhCú˜óý"ô¹ƒt x"äÿUÀ1Iþÿ ~µ}©FÉUÕâ:ؘ^£-G “±çaš)'q´6L|z»<æ‹1vfšÀŸÁã™ÓoãL‡(_Žk° ôzá0 ˲›?D�UÈ1á¯äˆ­ $–L”38T¡ß‰ÏÐ3š)òKr{=ÇeÀÜ�áW"°GôñlŠOË&q¢`|>:\4¢+a{ÏœM¥ÑðL5GÛ�౪5vxð=�a€Ä’ ¨è! " ñÜõ|d<ã #8²ÔW�¹ÂŠpA¬[^Á�¥°Yª$å�w™¶È„W…œiˆ¬å´C�ÊoÊ„’i…W·{cµv"Bq䫿ðÛÚAP‘ôžÁÌ�UT›g|·ÑsïŒvÞúŸ±fH5€7ù°áÙÄÇ/¿š»œž• s„¬ô8eCFúXñ´W8dƒdè,¼Î¿e Vd3,œäéM^hñøÛ&—ÏŸ~•«ZröÙÖ-¦~*LÓ¦ZW3Ëz5 ãœF# ý©†ò{û!ˆšœpÑWióGÉÄÛ€¤§Êˆ]ŸM°XX·@òf[U‹´iè)æ”dœ’SF×Añ­f@s÷pìR�Û ”¾ kÆšhb€L±b®Ejè_ï+ÊHäOÐG ñÜ¢Ë�¬Â—Žfu˜Å�áUr1bž¨ÇÃ.eôÐ �Ìžˆsº~ YÂ,ÃçÊ­RóÞE#aBN9ï tË$i³$<ipF#3�£ª¼a‚¤“X‘UŠƒyº Jç�EŒÁÝÅ þ ¤:¦ê��€‰ä[›&ôÔcBTx#دp„HaƒOà…½@¬ŠOΙ Ö©ygÿÓ­ÿDø†ô‡1ƒ¿µŠü?­ðâ¯3ZXQGÂ,Y%�Iú<{fkñy%€òtHóàÞ"ö(&WBHöbtW'ÃÁÿ�óv+Šz�?`Í�§ä¶HMj·ÜSI:Ú¢X€k@µ&fG…»«Ú*¬+ý‹èpòÚ! ãîx:ÐU¿ ÎzdSouà+¤Æ·bþ{Ný»?µ�ÉÒçD|âjšG<-ù1™âÈà��soE&S.fÙ×aî1"w08ŒÁº~Œ‹B†iµÌ¾fÏFç�/[ã®Ö½?DA—R¶Ë6ÎH)’ªÀøÒ }óõ�wªŽ‰PÞýÌ1™çè@‹‚Vàhƒ¬:/$³’�PÜÒÒ´V£³Y*™åó‰­п}v•ßs=±o•O'𣡞uô”tM¿Ç]Âå¼Á°Ž!íôñ3gOfÁ|ƒµrãÃÒ^.‚óü®+Æo§7Èá|÷ †ˆŠ(™·z0Ù…?€ƒ†œV¼/AñàµäeGš]¯£1¸`ˆÓM´ì~b2!ƒrïÒ¿y1Ä„3®•‚HV„¶�óšm�ßz -§ABøZÀ� ‚¯úCßÊÍæ…*ŸÀñ•ÌUJ¢Wgj…û=ãz y/Ô8(,p_Ão®ã»[ê£ÂÕ|ø°0?ߘv­{CeÖÁËtÃñ’ ¶ŒEhÆÍqØ� ;£(Ö­Ì›,ÍÔ¾÷uùž©óûÆ­Xq%­À•ãí!¢L8€_Þ®÷š½Rž)÷°»9‚ Ó&ÙÊÔG=l!É“;ëÈsg�Ç’OÉ€K~½´ß‹^ËG´“ô¸}f˜<égÜã ëœ ¬—ézÅ3#Ø•²K�hã 0ä‰#àŸVßpb××Wb1-ž‰ —Z‰Ú—9�¸,Ó¾Å"# ÈÕ2‡þºIÔ»@ö†œÛíö‰Ç´‘¢o'¼üÐ2xw¦"ö5Ž‚ÌÈ<†¥V´êõüFÐS‘jòÞiS’W„ ÜïòÞ_�E¨É˜ðdÄ•ÔpÌ_ÿ¦í芗çe2™8J�D8"ö�>£MBÔ¦ÀÒ<æå«'[0ÔÊ7¤Äp*jµjv ä Í-$°GHüdwzäfí¥¡˜H¸âÀ9£Á©1¡j‹÷§•]dFx7¶å8+vwUâ' å¨sSUÅ|‹M¨èUç–øªYYä`UïFæ¼ÁâRCGm!(ýÜ(„ˆØ.…§G! ‰õB8ò(„uYbp—Ö¸l‡z��‘{ͨ5™`̉�¯b£Ò ™+îÏoäUD@E.cŽæT!É`4q\(î1ž:ô/a;ýÌîâÐʱªw¸#£‘戂œváúÞ Úm0 6À ¨ºq4PÁAÓÖ4Ô “ÓÑdRÜy½“þh5T”j6 ÈZ ²µ_bª€å3éÄïy�Èïzk>B¸ðÙ�}�ãÀèaûÊ9J$º‡vªGà7ÎÓ'zÛ''2Þ�yv‚p�^Bz>›Ö.�“aÙçTŸ7Ád\ž†…a ‰¦ùZäK-V vÙÛ0[¡I�^4Šñ† £":`Œh ú^nÂv4ŠÍ7W@gü ›ÖÄgcèE�° K¬åFiÀhÌÜà'"N—±í¥ÅG¨¤`G�N[¡Ù x�W¸9 ® ü|˜2ò:‚´ÌèZc”rj#Àñ몦€ àðR¯¥Åt¸)�mzÃwsÄú½Àî8GÃSî FÕí›z-y‚ÂTÁj�‡qçZçxÂÂsƒ%Dx–iµ+£e€ ?‚Ä«'|-SÖKæ~,¡dbú,[oàŽ“ÝGl,ŒIî.9ÍŒ?Ì’¬�›4“è“']–‰JMǘêo—“°T\˜ýº¡¬ÓÅ%.�¸da[ã¤<@´€ÁÇ7¨q±‹ÅöÅœ‡l¿×Ô�W¼âõ¿Ù†ûs:N{Óÿñ~ׯðñû£4ÚPOÍd¨z IHÀmVp¼‡�[Ò84)ô)Õ$uA %@qàKraïPÁÌäïÇÉ!s·Š59ë°1ôù�ì+BæÍÚuGHñžoabÛ5çÇ$êsßAûº¬g/¯8ÁøDÁÇYž@y•ƒ$_}”¬z­iPOÍŽ„iÉPj�y'TVd5ÔNJ bÜѸ9ž[I Žb,ÒeoH‘ li{U J”Ò³¦z˜¡Š/.NjSP«Êo Q—£QϯêðÀ$cZª\ÞY°î#mrm.MöÒµ�uj/>þnXôhpèGš‰ˆIº£u)—Þ‹»á ½Úל)¢~ùÍ&î÷Ú-R)MرK?Üo·´TÌî.åαlÞµ¾'ë¦\eÔ½x7”±üšKE¾·ÄVA¿¡iËyïÒÖI˜RO› 5·Ä†Jv)õyè¯0×_€³5Û_„)’A»:œU]±A:ŠõÓ95Ã,c�ä*.ù߬âRY†k'ÒoºŒ´AKé˜-Ò¨´”ÍZ™9}½³baz�óVæqÎyo˜4æ”1·^FÜèËH^= «6RîÊÀÊZ�bª#ìÜèñº¸LÄh­X£Jo²7ìp²£5XRæ…eÿÅQ”Îh14þ7g·Õˆ V‚mþj׺ËÓ© ÞY4£ÁÜ�˜ß¤£Ê�æfÿæ¹Lo›ü½ vÔßI3wü¸ÕV›Ü¼ÒhĵujéJåGçæÜE Œ]æç´/ilJÈ"ùOSjäÙAg™�l—±[Fô[­Î�:WSÅ£^ÍêÂ�6U‰�uë®}�d›¡úP }ú!luì«¡Dµ6¹.B Š$Zœ&&ƒœ‰—âò�IfÍs”\ý·mIäM ï/7g—­|‰˜H‡i™T¶Ý�Ù72'Õ*¤´g²¤4!òwЭ¡}’ C05¼Ãðã4lûÍTkƒÇ1 Á#U*0þJPI»ºÂññàT£¢9Iõ¿…~À²¸ÿJc?ì¡æ‘¶…q/*¼9ÝìÇlM ‚©öê¦jÖ%îÝ+FÞCÔýôÀ_}nˆš@â~§ ï4¨5-Ð|B“bõV£4X÷0å;O‡^ÅÁ0@³%Ð?ðûtåi†º+cšèIôÃ]ê®Ð+Foe/�¸MÅ ÒfmV_|G;G3ý>[½qß… ž˜›1‘w-ëƒkW`ÇGÒÒˆUà–i�ô×"ò†Ì¼<Ž–ÜäQV&_SOà‚cÛ™/��ib”q;R^ÜL¸E;]_\,ÌÝ î´Uë=×|�ÃR®4,ÿ$§ÇtË¢Š‡Òüa£êÂ|}U0â’Ô8u­t»þãñëÆ¿)Ó>AË÷͹�늵¨¸Ä™»¢øû*F\7¥9ñª@žs³»¼¢‹Ñ•Ý1ÚµoHR-ÀB%J%WŠŽ§ä|/:,Úê¿y�|J!³ó6F,šçÕÖTÉÙ˜0)�`Îδ\ûSÂî"W4Ö¨æ ûf=Zä˜}mß"}jÁÿaç‘ø�HOiø¾jõyç Øí‚¢EÛȤSE3�EGoj>'t2BéÆ¿©îJxö;´Tn�šÚ¸ü<qå)B¼y<ˆŽtlD­¨& (#ᤫsl€Bƒu‡¸ C¶k ‹s06(àXmàxZ¼Øp”Š{^̽ì[`/ü˜Ž€'\ñãFÈÎÈøZ7fdÊlì#v¢*#Úñ.òÃ`f 8\n–Ì{Pñ¦‘ùÈöL×h?d5`l.¿‡3ßIÊ?›¯‹S\s£�„¼rõ.UMD%ü³°2Ô1™‹��Žû5|füŠ?kàj²Û˜/7Ül-k°_ïh' üwí1*°1(¹ÞsׯM'~¢ùž`š9ÅçA«ù £™¡ê‰øåøÆ !ÅÓàÕô€$PÕr€¡«lº`æÑ# b`Èxˆ³+Mú`Әɒ]-æ…- JÉzÌ ±P¦m�š”]„á_ XnÔ'³Awìa4ŠEä>Hef*Ö%JÒ‹H[\ "l^Á —Éá-Þ™š·GQ6á†\_¢jÉâûþ9‡ˆ•)¡R¢6 €ZDÉ.¾MƒÂ=Çêç¨0.ìýÖ§OÄ–Ùߨ�AàF�£E†5÷ÍþfLÔµÉqÙbz\rÊ ‚€ˆˆTŠ Ñ-PLf±*DAÛ·Åx]±*ñašßE!³¯ º™u¾„(/é†4y}Ó Ø0bÈ)àc°V¤æ|ƒf˜-⥢mÖ»–j{¡€NÙÚûök Waœ(òú£f­W1iƒG/kT–¢÷UáÒÅAÿ��NŒÏ3êsóFXY„ò£#…ÞiñJ–âÝÌÚàHÁÈ®ŠÔc2°�´@gÛŠ’/0¨Í8l°�Ûew*ç²}€¦Ó ,ÃIÔ \fÄ´ ʃ4Yjã CƘCLç¤h št†,ñF!ú”JNRFT�¢Qÿç’PÈË Ñ–¼P _-LÌÏT®žêƒ7`xj@¢ íôuYSšä —„<^[¢_𠝵º"Ô2uÓ/³ñª‚ˆŠÃ«Ê7ªjqýP7², Lb�'oF\¨Ù¶•²9ÓNnèrv 2Ï1�×·hB&ÅÈkå6h‚3MÔÍ=NŠ'»þâ'º^ý@Ã~�Ó±_r8R�±Ô=c8ƒ Ïoð1P”•"…‰}e��Í/´Pl0É7#¢c‚#¯èŒ¬(8Ð\‹ƒ—d#“ŽW| éò�áWRÁSiš~LÑ„tçpQÑ”M¸@ƒÚÿ2Ó”§8iq¸ŒÚ\òSË÷„ä#g›!܆Q‚áÐãØ2‰åtœƒÕ¨¹&!нŒw>ˆ.Y«p Ãs£dÙ}‘án4¬1&Bù0�—ÙULÁÑ “~)óжPì$¶‹^%þà{Îi]bNPVBpÇÏêWÚ ãÀ”II.þaT3û˜wY\^)Ï¥ IUU/¥(�`Ýj2žÌx/'ŒÃv‡-”Å]­|~2< w ⑬èª îš*Qî›KáéÈC°êÉn,zeo%ªÕѰû-Z¸µ,Ú«ô½ê7à ŠÏAµê˜<àW �»€õØ0ßY)_ÁÁÃ8è€õ•jpNÑøÒ«^‹9žý:k‚A6`æÂ�gœý±ÆAl§7_[Y– t­³¹`¬aÙË <4\"„"¡½téh ))‡�‰ä:Ê-D8Œ½ˆÛÒq„ý°çÇ=Lh�ôl@1.-YJŽ…îYG|ëè=•$!ån&@T2�ãð­.ê›…v˜Èô™Ø¼*ô[È«(´ñƒd6Fj†.}¼ê"£³S¡’Šå )hò–-(©@îe8›à0Љçg¦Cb@u¾Ô 9Y¼Ê2Ð9ý6i ±Æ”Ú$N5ëViŒnTߌ›ãPöNÔ¤N¬À�ô2ÕîR…ÂÞ3:[Ç¿s§^uكù"ÙPv8N'¦ò<V”Ih”$³�Áz®ÉE�q©\øšÒ¤ƒo§?¨À娴TØ g'R­ h`|b8‹�å…8ƒ Iš‰Ÿ¡ë,D¤®.Ië߀�É —^jzÌ`@‚ðÁñ³M>’  f§.{(Í×`+Þ#³ØŸXƒ.w‡í¦tX^‘J3”×`HZ©‰‘®óÞ¼bñˆ�kH97ðOd&ÅÙ¹_&R?†‰”ÆË³¢ÿc¹ê‹ØõV“×·=éiÛ¨„Í–D†]©Ü]f­:~¸Mifð%¼­~†çžðòC1,?)eå;ïeý1(k~:�¬A*Oða“äf7&ø¯E�Õ£1Ô Ú´žåRâÜ �7'Õ“´"ñp- ð0³œL§xð ‡<,ÂràôLuâ຺<¯ÊÉxø†«xËóz…µùñ5X^Et•1œ�$¶gD+²^ì†)OF5—� y2 ‘SâoV£Áæø«æ§kOE5¤Ÿ° Ê8âÑnE¢ÜNçiΤþ6??/>¶Ûm!¨h#ÖCçª.‘Tµ�9…Wí2¼a-ª‚TñT÷ë ÿ”–*¡ U"`Ó ïõº«ÿ¡v–xZwM¬}DÜ7¹“Ù”´pãJâní�õâ³aÕ*§² Í:À(vfݦ1†ÇlÞé«£Hgœ�©ƒDyaM/‚VÅùV&i|nX™)ŸgÒašÃ+1DWCNŸÙ¼P3iCót«†ÿ°‚8ÙØM=gy8š+À€í‚=�ÊÓ­<5ÇΡM6r]•Y~Ü™¦ŒQ[ÌÅ7’&” ´C!ÃÇ»—Ïî—"~cPš�þ]üá¦L=Žźž Xé6x1ûÙIÈÿ’v¼HÚɹ%N.ôÙå,IFè¨jÅ…2/È&—QJGz*)̘Â�…:ºPU£+ªÜ=°,I£N§ÈÊ )Õžç�°.ºï“'Uü�ã 5â啻ėYZÀÓ…®LQ“qÇòÚÂ3ycÚ ;ƒˆMIX§©Ì”¼¢‡2q®…°®Ý†`§´åàØ²ÖÝ1,I6?�‚˜'“Ýœ’=䥪XÈqlïRqšä Q�RÄ͸¸ë‡¼)Cýñœu¡Df7ÜÄL$JnEà@flä\ ƒ|Ô´N¨‚½ŒRîá^JZRk¥âa4óØl‹Xõ2Ž*�ƒ!nJ HáÖ^À´³2ȼ2ZŒæ?Mhd{?n2Ìu[2D�ïåîÔJa!± U!w¤7Ïþí…¤åvC²Î¿Y]o:gž¥v…|¹G�¼u:”Õ*VŽçŸ›C5ºXHoGU7]„q²˜#‡Lp…,fß…Sû2¹ÄäPÑï" •Ÿ0%°çùŽ"Í 5/øK¶ùÞ²ÍܺoGÃkŒõä-Ì/,zO¢ïÞ ‰a°È pqL¸º€ÄŒYi\{ ô3£·ã-gš]?îd×àÀ”€3Q®P)¨Z“5…ÑΜ¢vz áúA_΄¬¨"cÑŠš#å�Ô�oœ>äÃ^åÃYlªø=„É]¶Å{éW1ôâ�üѸó=ôFºÝ…ý�·Õ eµÂì ìu|LÃ6ü p�ÃQ£&]ä¤xÆÙ±‡ z½·³»Ã&zó„=øð â½Ù;}zôêÔceŽ7OßyG�½ÍÃwÞó½Ã�Š·ûöÅñîɉwtŒ÷^ìïí²ç{‡Ûû¯vöŸx[¬îáÑ©·¿w°wÊ@Ÿa³ÜÞî <Ø=Þ~ʾnnííï�¾« °Ç{§‡ûñѱ·é½Ø<>ÝÛ~µ¿yì½xuüâèd—uc‡�>Ü;||ÌZÚ=Ø=<­±–Ù3o÷5ûâ�<ÝÜ߇æÞæ+6’cè«·}ôâÝñÞ“§§ÞÓ£ý�]öpk—õpsk—šcÜÞßÜ;¨x;››Ov±ÖƒDã„¢ÔSïÍÓ]x ín²ÿ¶O÷ŽaHÛG‡§Çìk…�øøTV³w²[ñ6�÷N9���h°€bV뱺‡» ÐoÎ+ß_�ìJ ÞÎîæ>ƒÇæì03±|ºU´Š^8H…DãIc4Œ˜È_Æö2^ºZÅò'ü­7�âÐÓBàBƒ&Õá.Fä Û ¦lÞ5m ã@FŒGJ�J�'Gö‰K¿§øÿ˜Œ„Î×cÔ,z|$ HmN†¶4Y&/3ŠÛ�3"iü®ò#6[Tðeø€ƒ¬xò$3~ˆA6Íæ5»N ¹î˜Ë”œ¿!t'I’%ð(ºýæ 3êù1†™DrwJç²·ùb�X*gPDÇAWÓμFÔº^¨xfßôèmÐ'6…'W fâÌ„}ë O{‰.Câz+h·­EÖÞ.<–›F€3(?•²Šº|(Fì8)€ Myö˜|üorý2fº|¦´ð‘hÄ[ Ó Ïd.�Õ•Ý@za!&ä0è=Í–>üe«In5@­:£5&›°B(k¹"(›XÅ›¯`Î-çYNU鲤UOÁЅ˪ë�<�§Àu¥ñ2ii¦:ˆÀˆX é®Ñƒ;A¸V®{Œé ‡I˜hXP/i9h¯0¥ŽSйÕF�^ÁàNöÜhâ¾·#aœö@²SCIJyXO÷Ñ·— ô°Ë¦ÞLÏ&˨û­0¢åÕ~s1ª¬u}¤=»õíQùË¡±¦p%¼otäХ]&›Xsß1e+²ucVÔoðþ›î‘n|S#UV´È˜üšêY½îéæÅ¤Q=È1[Òl‰ò�abEa— µ½²æÛøÒqIfvà–Î…ÔH¡oá„ý�×}ÙRÆ’J¢/ß­ôÆØsû‰~sä�qWuÝ茷Á’xËó:½1Ö\n¤ßg?¹/k!µ¹ÉM¥ÝA—3ˆr ž÷pËãšµovCb ¿&ŸÜf&Jºæ•a›UÁõ 1žÕÑ€‡½€(.&´œãS¯ï‹.š?©]±Z¿în¾÷Ý�“«µ-Óàº-ælË4ía±f“æS6QÏJ«sÎÏ™žqê X«At4´Y«±Õ’®? (U…gˆ ]ÒÝðÀt-8[À$3 �pZ+)}…Ös £˜œa•î¬þËNªhz|-âڭʶ«��$¿ým¬�ùÚüóhö«†Ø\×£Š7CT�—¬xlÆ2)–K¸¹ä€•i‘°#Iry[40FA VŠãŸÍìæŒv. �˜°iÄ© xx �€^Ì@è0í …. ¿Nð¢$ ¼ŠÑ£ÅX ´÷%!"aÃxÄpâeIX—ù»ÌíS¡äY Ãü¤Ü6-¼_ì¶÷]Ùm•­Ä ŸSüxJä_‹'‡CÅgH¯ç,/[S“HUSñtÌLÅAõ.�) Pùì™»žèYqUÙ3šOû,vÊì,ß±”C¸LIÌfYª¤“Ér–ÌaÈœem†Œ×̲cäæ��€Põ%G—aaÌÕôÛ߯òúºá¬CÈ´kÇ4cTžg~y6 M^9( ¤¬ÏT/LÒ¹à"ê�0Þ2î®Ä#‚‘ÊFt%?dBEè�ïðr {ÿXµÔ#MäžôêL†¯ ÎgCXÐó{¹.ca v=xvã[áîN8–ÀýôǘÏâîèS{?�ÑæI%,8ÕR`5 s ìZûKWÉ��ô£&*ZIÌ71y � æ`qyÝÀ¹€"ÜGƒ ‡î” D6ORâ"ì ãé89“=¥L_K'UpŒh?ðAf–IüDZ¨¨×RÔ”ú"-�£¾C".6VÈÚ‡Z>УñF¸Þ ¢Ñ&(U�«)e¢- °‡qHÙŒÁàSJü©˜yÌw…¡®HÜ ÚÐÚO ½�Jõ%úÎQ˜s˜äCsp½éá6he“ÔÖ-bòM£gÈ„Ñ�lÄØ0ßò0Î ³‘³¼EŠ²Ë¶lŸIB ©DM¸ò…â¸L[ 72c Œ›/ö*bí�‡ÑE¶¼¤¬Ý(Å ” ƒ;¨µÌšk³ò”9XzÆP,f‘¨»QñdBLTÅI ws¤†D›¦x�çjÎJ1y#;°X5ó'swP†ƒÀÇ”[>#›¾�;‹‹ Â]ªpØÔMÀÜeÙ–GÅ¡®_–:FÎ6[¹wæ×½åGCÝÜ~ªuöx!ûxaÝ[ZÍ>^d�—²�—ØãùìãåÌãÙJΤåéÑcO/#{2ÙàW£dƒä%ü#Ç(Ùà9F¹äFìræq¹ÁË??ƒÎ_Q¤â¨L’Š–ðÐþ64?€ï…Ì×"3�i鿍Ñe[–džw�Ý�0a¤‹g`ÄœL Ìš+2I} tÏFfP¹š)>�7Ë�¾¢Å?n�¦=èAO ’BŸ_­ÿìÑ™PƒòK+ÿ½�`\Ì ¿˜90ÿr`þåÀü£80ï�ó"d¡ƒ¤”O\5‡!¥éZ®Ç3Ñ�I½ž9=ž±§É°Nœ6ò©ã ¤õçøÍ V‰ú\)â({Sßj¼Eâlèœbúh£a’>|�?’¬åcq¡9~+5“irÄ[4d7ÌGŽ0ë~Ú¥ëq9G¨_×Ý �7úÝÌ÷õIVJØ”‰ÈòºËÎLiFì’AÍð£ùH${s�`¥Ù¹ŸèF/jž;5×.É_¶‰rgîô+1ŠëV=cj Yž*£‚�|i�s™!·káLŸ DÅn Sò[&½àªª«óÀ Ó2­{u]p5[¦§Ùö»Œ{ûÖ=(Dd0hÝ�7aaÂò-ðp“}b¸ú³Å¥—Íã&™h5ŒB-€TÔ€Go‘ûB*M©°…6øÁ#´XŸçÜÆÆj91Q3OcfËŠ07óhCr‡VFeýÆÜÂòÒJ½¾ºº—á9dp%ý~Ä}‹l¯LêÇëøä=Ý> › .ÆÛ‡aЬÉG�Æ\Óîs“av†p£˜V�°Ùb,r…óê  7L‚“z€âYËyÞò HH�¹`i6`¦ÎÈó‡N#‘¼ªÅÏ ã“ ufEÅü]åëÕæD\ÐÌ®cµõõFÁ.�),ј¨ç’o%÷SÃÔkC©5Ð?‡Îêþ„îþÞ¸Aµl¦èI“·¯{‹†ÞO¼Äc}�Ádâ�n…îÚÖŠÄ–è¿�î{Ÿ^êʳö¼ï_�Â$@ΜRŠ{0Ðì‚rÍW7q\ׯÖEµéSj@ŸxõF9p¼?ó/ÂÊßÕs¬ß„8o‡ÛÈa*‰šÑ¶‚fcë9ù§ œ7J ì)îd�Úp]ܵlsç!þ Ï .£CçzÄNñ«Œ|0"”›å°Œ¡Ç�:|§½â÷“EAŒDx”ª�2“sÊßüŒe³ÞÎDÓ��ªËÐq#¤c.G~wÞÊb’IaïìðÔhóŽ3t‡“yŽƒšoÀC”ˆ„ääPÓ÷¯ñHîû)¹ÕH <Ê'Û~q� AKÚ*~ßæ±“ýZ1͹8¼þÍèÅîlÐS•F[•"„Б›.Íû_z / xBÆÑO�4®{ «öÙ—²icÏçoxšdÈ¡p½¹Æ&š>„)S²,É£ÃÍh…sŠû~oC½5¼R``¹Õ}ÿ Þcpÿ|oý5ÂOYýÍaÎs—Œèí7Øc·Ú:Kw³uþ ¶¹ÓÔ­œ!MÒ5ƒòò8ý£)æ›#[—?ÕI”=®é°¸º[oθÃaÇ$oyþŸå÷G�ùI¦%Áãm]“4Â>_\˜T›ôm'¨^Òî¨ß°1ý¤Ë°äì÷ýN֖⻌ÐTçÁxÙ 7Üb9iZu³¼iìu«Õ˜.h×,=i»e&å‚ ÇÙØ,w«ò]�t�:Ö„"�‚T€_kåÛ­)ú³9'~#‰â† *v0¼F~�[걯lÖ ·Ä�(Û9›6$ïåá÷pã®”_ƒÚüÆ—'0ÄŸÿ¸3âAýZD¿ÑM%T¹3vâ{_rþH(ë²€_‡›Çñø-Õ$ÑÀ˜÷œâowa: Ì ÙBqur–¤?ꥡյq³î÷ÜnyîðùMHV†™‹¬’³Už˜�ìæ’ï ��;'ß®YŸˆxßé¥}Iâ]j.KžÃ¿&òGŸÈ¢³°¥þ¾F&ÅÔ a{|Ö™©ßv(*ŠZCo¾””h�\, K÷‡ ¯?«dƒ>hy=]M<&›�bÏ Ö…߆$ä Æø0ppÿôX–âVäMŸÉv-á ;ÞÒ¬ôq †°Øèp aUÔCËmäN.bÁ¾ß4È#3œ#e¯+˜óZáEØqCZòya8À رV0Œpìh–ƒðÃá¤Ô˜È'æ£*V•¥ª”U ˆÝ’¨Ý�!q"ší·èí� ×¹†óM0¿O„?ÈUñ%{íq*I6÷œÚ€½N�êýØ CF&1è]ËP}šõM³2bÎïÈ«øÄf;¸Ñ?ú[a ¤Û¤Úýk"œ`AO'¢Ç5'ö*Χ¶æ•ÑŠR�.W´œåÚZßR¥5—ÐqE —Ðq…éì(UÔÇY”•€É+wÔˆªJàS7sL¸;êVjº;Z–šCpÊ+bðVÐö/¯È3$–öpŒP…ïE ‡³}ïîrŸËÊŽÌ(㩟î¦7y 2Ù6÷Xâ¦xÆ�¸Q&[@ï€Êý¦A»+[wGwç+ Èt†3Ž‹=°gÕÏ ‰M\G磅°ÈM^fÊ&0Ó§ޖh\‘Ûðº`´VPá*˜š Êäpl5«a|VºaPRÜAÿe`¤bFÓß‹ãÑ.S žêUDϰ`î3qPðd© <¢ÍMº0 `¿nd*‚5õ ÜGt÷囸�”5ªÒ´.Â/º^)Ó@y+¤¢¼ˆ··XÑ ‹:%˜Ü¼âÝ.�;†ogWM  Ì�›(wEC{Im,ßHåZÌÙmLqSíú< HXHÝ®m[xOht³ªwÛF‰�‹� 4.Ü¨í²ªù›/x§^þ‡R9ç ÷f“éV†ÞOcÕtw³\&ˆèQþ�*Ô\L ÑJem &õ€Äi4fôSZ2]ïÏ?½iˆÔ?Í•…ÛavÊU�%{€�¥˜:`þ ‘ "Tz�kþ˜2„¢‡MMëÅcL›�"šA%[|òa$ÞÂÒÕÂRkH!•å±ðê�ZCH½¯yO£Kp™«È¢�2Œà­FïÚ[š¿Zšo kÞ©©i`} H²  %<£,Æ1cÌ{×Ô]jÊÄAkÔ¤!¯²Ž2ôažÚf*°CÀµ~�‰¨­kïÆŽjŒ4úð€ôÎ"R¤†«íhÀdÚ4€¦¡ë^ÕC”ü‰Ã¯y›I2êSd"Þ”ÈYV®û쬉Áù¢Bàº~¯-rˆ»o†u}Êó0(B7™�{W‹×¢—‚æ<(R£ •è5hÔ7t›„škúp!Ë:¹_ö14IƒáüãFIбAµQŸAñwz‹sfç8ÒyHŸýç1‰Ög(ÁðOØè¿D‡Ì�¿h‘—búuû,q˺�IÚ¢¼÷?j5äf“9ŠâGlS¸×‘Iž€ªVŸˆžY™€È5F3gdõ fö‘½«xLv©ÏÚŠ Ó”NX3Ð_Ep¿E ƒ²Áòn¥Âg=¡Å(‘´Œ‹¯1™Hz÷‹a̼Áû!1£ùI|ÛU£zbâ…+^á•s]T¦`ÔEO&L—“Å{·áŠq£‰s&.ôñ‹2B0ŸOÿ‡Á/€[Ì«©Î/È*ï°dpb¬8ŽZ~%d‰+üùï‚»rôö~]_t§S…� U€Îî*Úªèg嘖ñƆ?Ã\dHüO:%ÂËüÓ‘¥°?ç„ÅÚùY&c�r+Ð~¬y(²ÁýYæa,�ú)&b¬EÞO1ãéÓÏ09îªÿmüçÜœ·{ņ!•^`�¨ `d~ aýB!¦Ã/¨Ë ½eØü½Kï6às¯"þ7{Q£Ä¡È51D W`{ëc‡<_ÁÆx±çŸŽ9ðiý0àëG7Êýµz~èÕàÙ»zÜ´ëÖŽvµˆ³�÷E´@¤*@{öó,š²ûÑRÐXù˜g7ÆwjÆmUu1WÉ`ù+•îÁ9·¸ß ½ŠAÐ ŠŒLš"`½S?•²nœzI·KæW}š «�†y�;|½‘,ãÆCf:x¹þ)+«)ë&ó>í''ö¸Õ«O|Ñl:¦°`µåÚ6~o\�±ùú!°uƒ•?�)Û ×~žqé÷žÐb+»ï3Ÿ.#Öï�§›„s¼ìXFÂß1.Çü|y%LÅ~p¼k6Ý¿cij6…”>c÷ý½§Atɉg•YÔFey†(ëÿIÆJ9d@¬ÈÏAƹæxùèuQ`DŸÊ?™Àö£`|üÑ’�‡Ã÷^|vªÒ»X^“0 îÊåx� ×u±‡V½“É/S–[Ë÷ŸÜ|ò~«<´7¦îùô]¡ŽRòx�Æ:ßç»l3ËK{¼¹ò·cK¤�ßI�òö–ïñwñmº,†±º¹]‰;Î×þùŽ.`9áâ0ÔÝ]`î›ZÅ lZ†•¹saExûÁ&ÃìÝÏ7d£HHÍQlbpEÒ]I}™p9{ä Ï>1Øì¸HYˆgËŒƒŽ·z ‹ÚP‹ÃH–z¿–ãÉ¡ç®p'SÁŽ¶Ê•©‰qæ—<¶Õ¥‡»m«]ÇõAi{ƒ(ÍvIÌïÿi–ÜA¬IR&@9_®ß†Ó/ÎçRº³c¼eÆÁ+&xyŽ'[Å¥iÉ%:É�`y–]œ¥¥Å²+h‚õ“7!/ô1ž=ãHäÄT0¯�ñ}åç’ú1ÞýÓw|r@GE\ÁóCÉæì?^:ÁV«àΨP˜ ì ]ê@w”´ùå5“ŸMÁHÙÈ(J±uj%‘ &BgA£›2¸*¿ŒÃ”H¿£=|™ ´:¬>ª•�—@£ì®Í?÷&Ì•˜²�Ý$"ÓØøôP¥+X°Þd’x^ƒúþ(›ÙäfãȨu³S’ZÜÙ mÔ ‡±¾åCÎ?†Þ‰ò͇-ö©€ëÀ ¦5„?>Ü•êN=5}²&c¹ÆðüÂË¢„âã–ׄ¥Tn%GŹKÊ…­±H­‰™%s‹Sá~Pš¯}üÑñj¥ñû!1›wsõcáö.yß;‹Ã}GsRâfèÎ'£\x§¬Ìj¡y.ëÑ?þôæg‹ÅØÌM^®œn³&s–ƒšbC=Çä0­Ó1äCˆÞ¨?Ð @¬¿°�(M1� >±mÙVì_TÉ+äö@�Ýÿ[OR.߈¼ÓæK�ýX÷êµ%íÕïëë 0g<óÛ©RŽZȰ}§Aøj Ú%hŽc*~:Vö~ê»o¯÷#ŒÝRË\ÞÜ=FKFTËŽÞɰ’x†Û»p¿Z ˆxyɨÁoÌ*pyݨ×âZQ!Hºß›£ªB9Ãã©Jȳ\¾dû'–�4ÉPF…› v8ã ?«èxÁ{ d „F#—vÎDã â öÝO¼ÍAgÔóc)½Jqc„ŽÒnúz‰Ô”ózJÊ_¹‹Õ—9DoŸ„â¦AƒK«Îµæ´Ø›Íf‹\D˜4jž'8Ål.šçAœt¸? Õ% ²&†�Adiz 6¢ÏaÃí%lõÃlÁˆŸ_çš÷¹?¼ù=F´ Ký1GO Âß÷‡5@›ø«agŠÖ\…@ÎVôŠN%ÐG{1O4Éwq•w‹›:+Uf™jf•¡\<$3[@ Lx �=Î…¬·£æ(�Ië…*]EŸV‡É(hEÜ9%Š©Š.7ï8h!Ü„þö·ò×Ú´@²èÒP·ë'ÕóàÚîòìø>´"v˜®=ÁzxË:òá[yøäë‡5oÚ{¨¿Þô¦L€‡…0ÿß:tŸu‰u'Éí:Oug_ÚÝ(W×ãsÞ“ %Ãæ6£‹ˆ2HRϱÆÄ†ÎùÖ#êøÃ¯oÐÛ,YœÚ0Jã#c-AÇxìkçtˆÑ—Zs˜ ¶éø„Ãàøöˆ°®ƒsÖÃå‰ œÄË;C….gU)p kou“KŽÖIŒè£ «ü^PðµÄÛÞ“‘·<¿ãC:bo4€É„í0€[Tä$ˆC–.húÀf`úY謦¯Ä°=câCoqÌ ÿ[£³\Å£±R�FépÄ+“ÄbHÃÜòΠø™·}r" Š®:Èzàx )Õ¬Ò˜jÞc4¢Wy/�T>g妠{4°)ñ9¿„_a2˜NÉSñZ½‚ÊŒ!ÃWÖ"?ÁÑåãÄóùTl?ü†­8+yÿëÉ8w�Sõù÷rt§SËà)ÂWc‚TÓü»Q‘F¢ªBi>a W"ö`¿„ïr‡m°ä+ÖÝ~ E¢ÞŒB`Å@GÅšµ h'±Îí± \‹lд&ÐŒ/á!ÃA7ˆÃôŒ 帱é†`Ì3‡•DP¦íƒJ€–Î> †¯ 碪I]’¶Ø>á-{žDn|>½9Eôù+‚Âgª¨ˆè Òž‚ndÞ[}p×W�„šJȶ׵~lhï.EŠí›´ÓÌèô~èõåÔû!ˆ"œ½Dª-€à€Éçe˜Ù‰ç«Ø"Œ<7#¦~ŸˆHx×i 2A³óƒ2éùI×\Ï:7çì®$‹»ý�E ܈ årœ¢÷zBsTͺ Þä01 ò%x•õBF’|ÈóÎä-”¶ÆIˆ‘h‡TëÎeƧ„Ck²�åsRa8¤ͦMÜøÐ˜X/)wsÇàx ú-ònµNM±IÜo¿Úô‡ „K¥ùáÊF@àMäy ´¥�/þlÈ’b¡1ÆXÚXöE…‚-6A %8“o\Ç™ê§õv¡fÕ¡É(jÐ?£öQ•1`á›0éO¤ ™Xã~ã‡:” C(h['È}«Ml°* VÓ¨ôg¦°¦Å3§©ãÃD+^=è{xôµÂÿò‘™zCIó/�ÑR¿7—ú�*�{Æ E±ù�l³¦Á6ÔGŽwnx%[׬Q«Í5£8˜K£ó`�ÌõæX9¨‰uèi•W_IuÌQ]½,䧈”c0ЖoJƒ kÚ(¤]2ÛÃ[Àâït¶€¤ÚGG1ê*þ©ŽÒ°—ݧƒòföIU̲Ðò o Þ�´±Üù"[qCÄHbã“�šæŠùlà_°ñg/C>}ÜÃÒÖNì`n dDdð 8ñÀuí– ˆj¸Âo0p—~<˜”Ï¥…¸â}wÖJŒ¸|>  ¢A«—‡‘ÐR²÷ŽºŒ³N1©J‚Í1n¯DOûAÜ ²Uf8Â46ê¬íä¡6ˆ¼¸ÀGÄwÏ”Úŵ)&v¶CaåQ®ŽÚRT^JéKG{ ~g”D¾¦Ü ÙÎ;˜ÏR½ž11B5‹‡îhÉ:Šjù UÑÒ�Üh˜3î.Rz‚õ4cã豺ÔÜ…ž9,ª.Ì×W�{W'âZé™–ÄSÜR)ŸU×6�ÚwÅ;ά¢»ÕŽ9L a€_`oì  Fæ[�}äõEŸ|vM%”È�ñÓÉÓ–¹EÜ7ùÁ–ÍÇí(îWÛaÐkÉ:êQFêÃÕ2R2ßýȗБnÐq¢ÎD¹ü.Æk‹îâùÆýJ¨ Àf|�b×È2ŽBJÄ™‚¸Dsœ—gâeÆ´GMO�+÷¤—&t6Ž¢tfÖy”™«…',Žã}¿Z ž¨§™‰úiVx¸“±4C $^®ËÂòp¸»±˜Ý˜ÍeMùç³\ÇqŠï¾×Z²]6á{©6JÐÚø:VŒÓ~ ÚÑÎÑL¿Ïε¸áÏ®{'±rv‘S¶°}ÓÏœ�=ñ¢A£ëé8ð|a”55IO 6·í©w~Jö›—ªæF?µV¡JWÇzôŒÑìlƒÎ}ÔkÑmDI¥é˜‰HmŽUÉ ì¤Óý/ÃZèyQ]·ËŒ‰�cÍ=IÁê ÊåámãWdëè2P-õž…Z·7yN€$Q³L5»ŽȤ³ñºwþŒÖ� ØÙˆT¼ùÚ2ü³¸:›…’YKYXóµú‚¬¨ÔKù]¶î÷§p=�¯¦Š)‰�b‰RÆ””ªª”µÑ½°–Ð[_ER|žäÈi)ΊT£Brû$gÈsvui:ˆ\�WDk.àlóŒ"h,;à™­"hþ H²ŽëH­ab ©!aafÖÙf‰£�~(/”ˆ ÖÇ^#J»¦î„ë`@ŸmË~(ÈßYp#SÁ“9E F³Å x*÷<ŒÉߌz�Ôt`rÈzœ¥(FȉR5T…YcZŒÙ‘ >sÈO¶ö x�nMÝrC7#ºy·Ü(c#¶MÅ»å*n7TÅûÆ+Ÿ?û·V–-Ë{U¹£­yÃ'm¨Ì–68ßɶsÓ|—[9¿‰»Úƃ¸³-œßÆ÷Ù¾…Bʯüí`½!:0¬ïü„›Ü’ºÀ’R!üð÷†ÜQN|â"‰5«Xêr'Wн=� úvÔ%ìíJ.ØoKGÆ­”Ÿ„ŒL¾)oA8\»'+µ»[›¸nm`<ưÀ¤»Iœ¢meâ\Xz„åŒY>†SË\¼»Y“J))ä�IãQa©û½'¿Á ùmî›»¹öŠl–í@ê“Ý/[[¾HŒgæú1^e–�ù:g±Ct F“ÎÌF1Fä!ž˜�;¾ªÔ|èsI‘Îèº'Ñò©ðK/N‘~¯9€Ÿ×D|Ç¥úÊL#v^å�ÛEúõsN†±±wˆ?Çý3Ÿ­_·Ïßõö¹Ôu*­9�ÂËË;ýá]Üú�¿ÕÓ.–¨mjÕÚéP9L ._U¯Á¯¨â× g=»0±<:"ãf¿Z—5…Ç Ü>�zGlÆ\—Á%|�¼€snU8Ûa#¼6Õçjä†$¤Š£1K‰µ ¡'Zå@í‰4¸Ds»F S2¬c< o�šX™H¸Â�†~_ï"‰¶‰ofJDZ9±ž ¦n´«�aFA¿×š­s¿ÙbïS>” UQo΃ëFäÇ-ñ*cT¶_cz†àí­Fˆ l*wŒ 0àHÜæQæ)'GŠ…á”ë&‡ÌïÜhÕCú3¥\’¶ÂÖ4få¾»hVÓ8)ùÐÕ´.ÞEÃ\ EÒ£å†"\ A`Ë4y¶IÜ�`�Ñ‚ÈÎNÑ�‚&T©Q’r¶#ýV+áv>tL5®=dV½õA”ά‹z³h ‰øë‹7ÿ! G $˪ dÎ-*LÔd\,ÛÉX&LmÑKýŽÈjR)æ]Ö@P8¶\/Âh”°šÜ˜Wô»ÆÀŠøVõDX Ïj2ÑØÑì‰É¸qp™�Q8˜]÷v„í@FÂB. ‚ÒÀg@Њ¡Ãs>C M ”ÿÎP‚hž·NMv©_Ç£˜4~¤H𻪩Áë�¯ {Ñ<…#„`=n¯ÁÚ¢K†,â(¦�` �œ¥ny«ÊkJÁÚÞÄ–’q$ss8ÈíhxcTš…ù…yïIuؾØ4qê±È‹ î‡Iq7Ø¢ón¶îý{6F‰ã¨fºP¡•zíÁ¸X…¨º? @ÚdMÑŠo“•[µÓKÐk€þ„±FQ3�Æk1âÞgâSÔ·³4Â<|xp«|x0‹MÁ©Ê�ãL‰÷—=F·Ó8Ĩ!�p½¯{a?äí@uÄOñA<š öš�öQ+lÃß95zaÒE#užM{˜ÀCFQ¡ÑÛ¬l•R÷<·ÛF/¹ésØbýàHÃ-}Ù�úæˆBêW{XÓ¤�j±½aËŸØnÛ„(ƒa ÆDjɺœÎSV‚ì›rîÙ¾ ›7Ć8fjÊù«¤ëSðk¾~Á’ÁÁc1ºzˆæÜÝ=X¿Ð´=jµ²NŸîz'G�Oßlïz{'Þ‹ã£×{;»;l¢7O؃*Þ›½Ó§G¯N=Væxóðô�wôØÛ<|ç=ß;Ü©x»o_ïžœxGÇpïàÅþÞ.{¾w¸½ÿjgïð‰·Åê�zû{{§ ôé6ËÁíížÀƒÝãí§ìëæÖÞþÞé» {¼wz°{›Þ‹ÍãÓ½íWû›ÇÞ‹WÇ/ŽNvY7vèýÃÇǬ¥ÝƒÝÃÓk™=óv_³/ÞÉÓÍý}hám¾b#9†¾zÛG/Þï=yzê==ÚßÙe·vY7·öw©96ÀíýͽƒŠ·³y°ùdk1H4N(J=õÞ<Ý…ÇÐî&ûoûtï膴}txz̾V؈�Oeõ7{'»oóxï�óøøè€ (fµŽ«{¸K�ýæ<±"ðýÕÉ®êíìnî3xlÎ3˧›'aeDYO©'éxµÙ ø¡Á†LF ¼¯âhžÆˆâL ˆ½«q”ˆxN!Æ^‚mPS’Ž’‘ä݃úä’Ÿ,æ(œ‰$�}RVÒsKñ׫VÔ‡ÿ�‘ˆ´ãÀøâæ3Œ±çò£ê×EaFʨD,�Wu1Òðÿ˜8óšQ»LÖÌŒ†oLÚÌ¢¾y„}}Öj—lŒψ~cªF=¶6�7?nÑùxútïä#Û€»\Ødì_Ê“¸vLÂ1 Ëu]Ã4L>¨c´tzã[mDIÚd;¶ô!« [(�•º ¡—i1�>2cd¦qûQ¤anfÊÐáñƒ óf@œ;$*ô›� ©EÒ­&V,&ÜÀyBÀl Œ—cÔ¢ùpŒ%„¹Ã0t Ÿ”ú�ZÐ.6@G(TB¦�ìŒ|d‚‚ðãŒ-ÂtíJ‡Êõ§é5È }�]‚U?†�Ö”nBBTÃCf¶&8>‰Ä�ÍD"·Ì¢ æ“ÈÈB÷±ZWP Q×d|…;ë˜9o~C=ViaýFõ×µá #š5ZøÕÜkaö£Y­dʦ-÷±uúØcÓ?S]žÿgŃ�¢� ‰=»Q;½ �Úµ�Ø}<0P9t[.›·Ä0[m‡A“Í(o \"5¼yê7Ï)ž.Ãì:¯ 3LºmŠìœàOL«Ê(MscCláìóÄTÎ�=H,3ùt¶æšu+ð„©#Í…5ù²¦>æ¤!½5²]ÒX¶ójaéjEÊD,��¡®éŽúŽ-3SÁ¾¯†A½¾N׆zý[ײ�ŠEK8äÌ=ä˜H¿ xý Ô¿äÌ£®'tl­‡ù”öV‘•‘ÈŠ”PŽ>%�oÑÖL1BªUãpë îõ ÿ C’6϶À¤È>Ñ�t‰‡�gÇs[‚43"Ð-�IÌ3”‡ %¶Œ{Ûí͘}žiG x |åØ^c§ˆ µµ6ÅÃEËjŽwR—˜ËõÚà&óØO>%®búÒ®Ô#ضÆ)¨ˆµºZÎD…–óO]J‰Qi÷Ã8H±ý¡¡dÝÓÌ]T0bç�U±J^ÚOÍP±Ú ²cÇ®x>[ñ2¼ì¿Tzo›¬Ê=1¡Ë'fm]b,q®}�E5íj_@«šì¿eG€l~ÉlyŠ£Ò —‘F&wŒW¢±üµ7f ë•‚4ÛZóZom”诬Ô*ß©1’E.òÜrȽ‰w–bAŠa"#º`wŠI”VØËvÀL}8Ú,Îälj<ÙÃÒ†v/yÔˆ@ÚÌšç÷ŠZtÁ+Pu?oøÑï1³$2J·U;ÞÀõJØFcÊg¼WhFÈ0€µÌì&ºÙ"Ü£%™ŽŠ<·¢1žÍýáýËï�’ŠÍº÷Ç=µØz ±Ï+Œ ‰¨È21òÙ8Ó*q¾þ iµÃNŒåÎHQ§ë�]„IØègp0â%UÐöG=Æ]ïízõ:¤RŽR~_!‚�{~"��u1cáÌ^*7á~¹Â8nŒÇ�±ìƒ+0) ÁÝ\Öp&óãfªÝ‹.×=ÞÞÓ 8­šLæÆÉZgèmµäKåÊ…-F“µ»øóûú:cL¿Ð•1&7Hèèâzx6]„s,žè PÎé®T(òjù.:çZZæ=6]èßE[ÍQœ€eÅ0 µ-b¶&¯Üî²A¾F%úyªÁÈùcÿ7­ÕÿÜIgʆQÜv¡ZÄ~ 1ýë«Ã«Ì±bÖµ ƒî€1»Œt²¤i†8Ø ]AU<*ÙWIT9’±½!™ïîæ#€«¬5~àÉ7¦(m©Æ\_”ç½Óów鼯 ™˜Ã|Ì)¯ñÔž)%•FèZ$Ö2à˜ÈC�Àd`]DÕØævQ™âÂe¡UؼÌê*úPe‡I~$ÐrƒË@‡\çØ„ �[‰"u59‡2ªkö¹SFYÞFV™˜›P5ÅþT½^Ïð4ê·û( ^�y$7íéƒb”Ø™’l`0UŠÞá�-œÑN¹ÀAàÑÆ·íAÞ‚±õ ß´OrK¹” ß´'y»Õ|ùÝzU8{ÙRãLF©aµ›AҮ̉L)‰4V»ò�£6v‰¤Ñ>[Ö¨™7HeMR‹"šjíØAMµW“G³I³Aj> ¦>j'߉?ª¬ÊÐ+òW¿àjÂá ^0#ÓÙW=Ä%×ùóOo^Mƒí†ö -^ñ¡LìÇsêÀ[šPåŠ!×Z{®Þ˜&”*5� ÂÛ®ðŽ}“8-Sz<Ñõœ…–ú•`èÉI(ž¥#‚‹‚‡jÉ@,Ù.›¡1³à+L„‹œ’AcŒ�1 ïÅ HyAË%$WLÅûm~~žýÛn· mÓ4´exø[zYtRÄ]øŒ ÍÔ´v³é{Ieóâô–‹cš9'ömÞ0fø¡E/r�pR'%éè#²]=o: žêæ»�Ç E|ÃÑÅ%þc¹�k«î¸}³ Le‡¬úÆàÍö5µ¿ò$-Q\Ý<±ïâ·tÙkpa±Ì­³ÁÇ÷jˆ ä‡K6žš+—ÐKqP>èÞØ $›�ŒžñŒÎ%¿×õèŠ''§›Æ §Ì�h—<F›I®£Y÷–@ÀTÏûþUØõ³ÏÃ=_П‹«ñ×F²åÔÇ · í×=yó¤ùÍܯ»¢ëÀ*ò_Ä©Ç�Æ]éăvh‡ÈzÔ<ë“Û裙¾°³@ÿmvŽ3zÓRšYPÝúh¼Û—°…¿—©�4†N”³B“�Τ—™‰°™˜l/£�Cµç_ƒ–šÔ8ÖªS«NGî <[`(0Îb¦j#·j77ûá�„¹-ƒ�¶™,”€+}Ø"ãlÝ›^°,€ÛÀbUÕ ‘š¬¬Ð�¥æî·äø‹z, ±®ÖT%Ä›õ5·�\=V{œd UÛdµ¤‚c¶Â‹{꽪§ÉEoA÷Ö¼۟׷VO9Øþø¶m¿ÿ«d/ZJÔL)Kå!ŸäÔ®˜¼ßb›&[5ûê‹;Œ¿k¨XÚÙL±í±™bõÙµõwY0ãcÿ’´è¯Ü£·8Ší”¾Áô $rK"ú&Ï=ÔÅ eÃÚj¯¥”œ mk°B‚“)Ò/´sr6æÒ+c5æI»¦~ Š+”ê±CŸtÙ S¤˜�C€Ô>Ù$-¥²æÅV¨JÈ@ÊU$ܳ¶g"m‰~{=F—sSmޡő‹òv †)‘qçVb=OÔtca:£o²WWV½$uTv5/SG Ú®BÏ]5h€vyxj–&±‘‹­Å�ŠáqQÉ–hnH(l›!^@ƒ§º™&8ê^ú�A÷ýfôf×ы¡]óä­£×àÕé_„ŒñއßÐQýOZÒÕY®æÎeŸû¸’•?rC¹4€Øá’ɺ^î»Q/LЮløÁÅ!¸”OÕtw!“îB£4?î³L[µ¨rÔ[Ùhr%ÀçÆ®ü:F»YvnÐÊ1zÆ å6½Q6ñ\°|7�K ýCÇÒu w" �»Š�ER˜�jj=�“™jàjzEç@²ü´à‚2MLÐë'E�ÿ%‚~oÔŠ¦Pô+šÂ¯h ¿¢)üЦpÇѾs$iÃgÉç…&FX(´á†qJG?€p ÈÐ@Ù×*}u”5‚;Ü"ú£Ã@oä·KåÍ¡*E³AfZÍ$q} —£$q_z¥å�ƒ!“ �áx‘ÿZ7+.46ò…†8ã*"c#\ -5—تn=tòá#Ž ­¨+½iÉÐN–ßâ;3ït.ø&�;Š£C0L¼à3ôƒÆ½¨qQ*kÔä'ÁG§ÇÖW³fõ6YɆ=,Y_¬³ ñ¢$ÃÇ·p.Æ;×*Yl ÕR¶_­ªÁ¯7ÇUÈñ¥Ob å<ÃÅ( q¥ÔŸJÙ+Piú~W/„Jßá<ÍzdÇ”Ô]ñe?”T•ü‘ÊÌ—ÿAƧ¥f<ÇŸÖFÐ i‚6`Ìðxs‹üft[,_F%´bµ@E+P ogæÖÁY´ ,³Æ†-�…ª ¿Rz'¢b3»áq.Œò~ä9úš’¤ßM¹M7Ð\z¦ögÓL2£'•qFYpÀPÞF è"S¾¢È@`¤Ë›±@±ß GÉŒFtôçcÁÙ~)òûÌ#w]Kå4Ñü݃Ç1µ_»ËóŽƒä fu4ÈPä\p»Øcƒúo¡w5F³Åh&˜Ñ´î§M””RïŒÇþ½®öý!šš¡~´1hðÇo‚=­”}‡¡Ú3,@E÷Œõ,û¬Á[Ç&Kžˆ¿ý�7¼¯ŽÓ‘ã“�Ʋ° „9¤EƒQnÃäÕ¹!^©˜/ŽÞñÁ4‚n8h 'o‰½¼ÑNP‚üÑg¼Ú ?øqÝ[›ïƒl`¼Q@ ö¶¾J¯�¨'%Ë?„ûÿݸþÝ ±ºÓ€¹¡£î%®@–·%¶–¿v0ËÆûŒ¿º#"�Ó^`„•£(1ŸQ­’Ûÿ;7.øâç%ø¯‰Y�q1/öŸh…;¹â êú­è2³‰§4‡WAw-*�†p#U=’ òóÄ«/÷ŒQáÇÞ"£b²€CiWÃõ®IH2n�.¹H¤÷ÐËRUSlú±B>äYÈgøVs>Ç¥Gp›É^ËÞ´%Êdã¿Ý{yá�Û hŒE]¼a>+T‡IyLT-òik„fÝ®nÖhò©*e¯XÇWy>ò§ª¾P8W®Flƒ¿Ùº`dû|vÝ;!�<êàÁ•À!úFXÃ&â*ŒFõÿ 7]+‚`l—LèÅ;,~Àã‹È–f ÂFØá+ˆŸÄZ™tõ2˜Ž1SB› äú¨*Feë1QÜz:ò{�ýIW~TL¶É=z]?¡©®y{tyÕì…âéT™lH)vŽ$µ ¤SÍ¥ÍiX vLø!oÏgB?ëY¦MLŸͦ“Ð’4ð[hçš2ôÜÄÌÀ "™–€nCÃt6ÿ§�ýR|™Ô÷¯àZ?À{$–;TTåPŠ‹“×O(M·œ@Y ˜,ŽOB#ÞzƬ&ØšpxÛl"(N &Ç`bBš“õ¹¹Æ¨ó…Í¢_c'þ�âÎ\Ò�.?²7µf'üaëÏúÂÚÒr}ÖE0¢u´j%ãùüåÉ·D2gü€ã¶l¡—Af±kê Leð7WLŽ�B¥n>÷k²Ô&Y}vI«Lȸ<¹*k]$º$ÎŽçh”èmVåR“‰Ü’dZ2×K|ê´Æ²EÜÀxÃq—wuŽRƒÞUï heºgTPý+5U¼ÖÌ„X˜¸[…ý£mO”F|3ÝÉ-±E Çoljë8€Qí �À`�pI’¨ùMÀ…_Ãq¤ÐTD7-h�Qò>Ÿíæ5 ý)•!Å¢æxá.+Ú9;÷[M¼sKA“¯Ô\õ°sUм®zíšyëBì'8=3'P`�Óf,¶*w”*#èõÂa&7è¿Aw‘¥„›ó SûQ½²”¯òŵ©qì"×­ØO€Ô¥àÍtæÄ¼äû¯%1YÔjéБwf^Èè2…âü�èA15sé²êËc•Ylž $æàAÂÀ#‰â)XªM ã ªx!ÎB¹}±˜Œoç·s£´öß`Æò½i&õyùI=^ÔÆüå÷ò]ý^ ƒ/Ü0*A3Œ!I\¦lò�)°‘5èÍ”É>±Ž±œ÷÷}ÐÝxnÌ€LÑÂÈ„5’À“¡ûÒ­ÂÍn|oí0zß&è\q·gèFå*Ë ÝöÍãËÝY·'<ÿ»Ï{¡ÿ:&¾ï1a–‹G¹Çþ ûd®Ù:çÞ÷)ep á·:�ÍüãÉ'¸Tç`tª„J±ÞŒÃ¤¤Ñì:Ý’§_¢¢ˆ%˜�OópsþàÃ)Àµ(wæjÀÜ2"„—`SZhþú4žÒò6­{�æANŸamxècVÒû‡ÊÜ0•ôý^O„†ÓËzUïè�”ê,ð� |D„)ù¸ÊfˆÑÉÖ:EvÕ[#¿Ãj}{YFÈþGŒ4Fa¯•ˆ›æ8ºdƒ÷‚8fû%lË{]† ¶¹ é8¥¦† Dá. ¦ã ¥­QLÎ�}FVÈC„”ÚížßñÒ ?ŒbV˜u†nïèu¸Ðý'Mõ �1Ñ*¥«ãË@LM³øüjtÆ¢S U ‚$ä� Ðp c‘#pèdÔnC�NVV­°Ý@QJjsD‰£[fwÀJ|)Эup¤\Û—È¥Åu÷¨»ÂZ¾H@Á˜àò\\CA¿ζ°‘D‹«Ýì½²dÏQUVª6‚ëˆý‘×¢¨û”Œ ‡ëä¬;�)™VBË7¡=3® Ä Eåfr“+ø2ìË&×ËÐ :\Ò‹ÒDê Z4Dm¨5£²´eæ•=q,+Åy|5 3üù]Ã192ç#³¡Ê`�Õ)-( ^#è±-š¯¥iÔŸ$ú×ä䤫Uµ8�·ÂøÏiH¨ýŸ›Ô.ÏbZMÙ& T¶ÙB/€š $¯Ÿ%jýÌÄ•솇ÈDˆ-äÍžÆLßùôË¡–hwN÷¦“䚦RhÌ7&‘i-¼;Ä­8ž<">«àÚëú¿‡•Á|ÌÜ«’%­'Wv=š)¡̜ ÙÊÕgGÂDšc�½žiê7»pr ±È Á­Ü:ªÌ,I oN;nzÅc0Pq~Ööýsöà…iâu£Ó‰ŠK/qãE.ed³Æëóé’�áœcˆŠá.¬?‘€¡G76«y'hœ,œJ¨Ì°ú?"Pè_š�²„N)GÎl‰3êZ4}1<ƒ‘sû†u£è{HùX�ÄäÔËnyèLGŽsµÌ¶Ð¬ÒrL¥M?Ǽ•�k;Šw—<•qÙ–ŸÖJírk=…¶~ß!/3¼…ùù>C’Ÿ€ \e“¤—6n_j�ä]•Û-%ÿ2µø6'µY�½ +1Q’Ð2Ið¨Œö‡ª¢$‡ƒ(ºddÚ~ŸñÙ<ÇÏLÎ1!hÎ<Ýhž—€‹/Eà³—Lª­uYE7“k~*Àó»lGÙ& [^]¦¯Ìl—Á»¶e¿ü=ý£/[-”½«Ul�Í.êŒ)ÀgÖÃDtøíná¼T¬ùãÚǾ~;\DÑ…­¿³4ÓnYD0¢£#ÇàùÞB¶¹í “¯/§9YRSï‰ÌR()ész¬qL†Á=p1ÂôõLXmÑ{VGWLÿ"b+¿ÑÅñ5™› ƒqÃ´Ø ÿŒ« ~#³äM!Zª@*žú\•´d6t?`[±_ [W˜TPÏ– õ,ÅÀ”*¦â©ÏŽŽÞs�]-mžŸJQV·Â|Ã2Qj³·Sö¤qvxÙŒ»¶+Æ;iYÁ•yvâÌû�{ì™Ð“«ò+ «¿ÆEJ¶¿ú¥ÇÐ[íöä~/ÿ—îèòÿ‡\±ÿçMH•ÿsÜÁ± ‡[ÄDÀÖ¨IÒ÷`ÔoPì“4쉒]3¹mPaΕìÒa©�ñQr•ñ® ºVQÙ=ìàŽk3!ˆ¢$‚²œtðR�¬)¨£i4ôzLBêÕ¼#P\†\±Ðã$Õ`cE ˜ØÇˆŠ¨¬’·PE·B!cÐÝ+¸RI–28Ñ Ãe-º"‘®¡ žAaêw]5[p‡*{ï�^Ôà¦è’E4øü_{ù·l-¶s‡aó<ÈØÙ©7Y%�J&¾�›ôÚ07ajÞåÞä—z䇗zt€@ÂØ¨å_W•;¹tè ›>Y®í· Ò‡tQL(¬á�\ †ôö›xCP]o€/‡p%¬ÉÖuU¿[\´n eÉË 8p)¦…ЫÔÍ*J!(ë\)Ä'Þ@*«0¹E†ÇùPBˆæZ»BÅm�sÆì•Ú¶ã1a+˜&ë£=ãÐ$~8@.éŒí±‰×N+ƒ›¡™€5Ñúaò'*?‹=˜Š‰¬Y;áý**!ŠCQ/yé 2‚823ŽY¦F¢Y¤·oÏZæÎ_Þj›@,RµlɸìyäáF9ò€¹r¸úžF�NÏVa䘼Ñs×–Û¹¼•2ûÖÄÂ�Í»Õûr¦rðõž‡«ÏÓVëùÍÍëþŸ7¢“Š¡Ðí$7ý\¬pL÷‡ŒŸJTšÙÜŽþU./³"�ã×âÂ2j™€$7FËžÚ6dÌŒÙOélv#^ƒË¬#”Á³Ó™G¢¨…Å©,~ò1”÷ÂÈû]׺Àó¤êb Ìô¸E:…Ÿ ‡\�14ðâ8ðäN1¬à\©€žnY{ÈSᇞt� 1ãjrŒ‹~¦Lœ†¿ø²H1PÒÉ9HýRœÚ=ß‚Nv¯9Á�©”“(NáðcðÝ‹•ÌôŒÓ!¨²l4ý¸5­Ö¥4מìºUfc1î[Q]¹¥¹@QÏÁg– Ä AÚõÒpØ“fÒÜ4 ½–SÖÓ}qÀø‰üf— �*²ò¨%RÛ²~WµDa4éd¸” ÿ,îƒÕ»–aµ‘L’V� üA†ÿ@�,%Ð~0ÜF-±Ï= ¨…Ƶ—úçà°ðDÈ5ÙnÜiø¼Ð’à)´êÚ§�õv@ãaÄ x3¿#]§Ô bÆÞï�š…œn0 “²wJi�Õb³Ê°¨™’UÀ-LE hÔ(ƒ]xŠhÒ]ZBž j�š]Á7ÜÃggbZGíŠ�ÌÀ6†`ÌƷg2 zÖûóO^ìz¬ÂÊ¿@Ó¼#轌¬Ç?Õä(_öø§ÆP–íI§P¯]ñêl�3uvÜMÍz`lX›là±ÿ·Õ¢ï—ÞÄ}D3ê÷ë|þ‘Îç*îoE$�¢ž#ˆ |�Z~±Mã¹ Cúe{lqÝŽ%Å]IälSºÒ׳“PNz ¡ìÈíNÄ„?ÿuWîésNà¼ÊÄw|qføGq7pãË�<ÀVü° o ò Á½~)hn¿ì~(Í�©ÿn­†85qM?:×4á…Ð�1Y®b†i.�ƒàÛÝÿ|] IQº½ÉW vuµån>ô8oDÓ7P³(£�ÿ”t [ S¡÷ƒSwí­‚õÆø5¢õ¹[£·ÚòçœºØÆšË�»:¹�»*ÿð× æ¶žøÄ8¤ŠåŸQHÏu¨Oª¢´lü*òœ‘5ÇÉ$þDç2ë¯CùûʅDz •ÚçÑ)ĵÏ=íBˆh™zÓþp8‡¤@–›Kza+à.5Ï !ÔÂ¥Óˆ®T�ZÒL’qÕ PMÄÍuÝ�}x€G=ä'Ÿ“;ýÜqÚÃwà�H‰Èô…Ú­Q‚`ǺáñˆŠ‚Âx0}4 Þ‰?H¦+ŒÿgLxÂzßþð@O†Kt3¯ ôxž/IH:ÿ.ÍÏÏfê/ܼ~2j¤aÚ nÓ‡¦?¤1… �Y¦‹ey~¾âÍ׿—‚>À™ÅY�± `ñfàéÚ�->š_÷´‰Zf_ VÛËÁšÖ‹ú<{<Å5ÕFG{µ�ÿjÑx¥»'ÀÏRáÛå·� ß®¾]-|»Vøv³› ÅU‹Ç»YÜi¡G3æJŸ3¼hô# ³__Ð×�1‹e .”-¸X¶àRÙ‚8ï-ÎñòQÑË•¢—«²}*‘ÛþZÙ‚›¥±¹Y�›¥ÑDË¥¨ä,íý)ØáÕ8hDsàþHNÃðr*Æ�\…;coF �׸@W¸Â‹àóeëlCÒÕÄh\�ZA0dúKåöì·öÊJ“‘=»Wœ±ÓZé»ÈÙ¹}w!¯åØZr`Æ8"†¤ÐQŒ3ÉIÑç »¯õžwJÊ®jHO2U™¢„;íüP´Æ#½»9±ŠI¹ÿ¬k�ÛR¼=<ûÇÄ¿‰Õ¤}G8±~ÂÖÓo«Kð[Jü ßWg�O™rêDí6k©ÀïDµ¸ßt™Ê.lÌÚKr#³›dœ}EÚ�9êgÄM¶zH{´ Ì�ÑÌ2Ÿ|·Ü ‘“®•¯vuÔ�ce-Høs&ÙS¨Q¶z»½ŽµÔá§ Ð?°­�æéaê%ݰ�ÖùbG³N°•Ë ¹3! õ~A� ÕÉáÞTUÌ”ô¨¨„È}ä,T8Y#’š�ºSÒDz4v,Ääe&ÂneȨxÔ76ÈÈ0ẫÇð†H=Q¶)þFðšV”vGÓ:écóç¦J…`\›GúÕÀQ"ÖïºÄÅ©-«4Ψ¶  ñôùãÇ´;ê7ªçƒ¨¡VfU+]íúƒVO[1Šùt<ç­ã/Ü£ÂbØ#u8šãׯßÜã7Ë‹[¾<\q]±z˜t'AÇ �BÎþ±áÑ…5§ÇŸòh¾ÂœÚx½ˆÝ4»l�JE†Wk¶ÎyL¬ëêÐôªµüž€�{•µ†q$h\+`Ga/¡ºbRµ^ʳ²f J¾Ð�cÇVÐ\’ee¶�àîn}�'àӇkƒþGƒä?zåO£$ Ûׂ¥X÷Ú½àªÊ¶“„°Œq+Ʀ?¬ äE¯("èû‘SÏRü ßéÀâ)ÁšKýÚ©æÔ(Æ¥ˆépVíÂ*¨æ¥ÖíĦújP¥©YÚ¶¶ŸµÝ °©u„¾ÎXÇ^² ‘}g=(z)¥±tö™¿y/\�¡Ë‘’àoÞ!mO÷ÂÙD8h‡rÅèV2 Š¢I¯äyö»l`_3‹F¦¡’õ4^‰#)-¬�}¥h®L1¥ÛÓ¡.\V✪FqØMùòü?y C™lÇ-ÅHüÕ3ÃÛPhà]ag^súã=Ä›òY»}žÌêÝLÝdݸîÃb%Ù4ª-ò›¿ä/¯ù®j´'\uš‹ð»¡I$¨#s¹ÌÕ³ªð‡äK~˜£V¤Î6ÖØ�ñ„îk–:åT«é/ƒ5Ä@t„ƒîåìIj& n%t¥²Y7Ê×·j/Ö*ÏíÇ—žÂ­…—ᦾÐô-±¸–¿ˆJϺÍFÖœ '´Áï†OcÒYͲ 4Á™SY-1T“;6+zéˆcˆëZ3!×ÅåÉrúA&CÈ.t¦‘4y_"¹‘ d:‚Ä»è› òAèÖ Âö‘5ôÚÞLâ÷!b»Ÿ@dE«ÃàœÛõcÈu›z˜nu¶æÖ æÏÆßö|Î/Yb¦‚Bä|(æycêz=v¼*Ù×h�).Ü3$·ç7ƒnÔk¡Ç³½p;÷Â$Åþ~ü($JÌëäfŠe$Ò˜£J€ù�ƒ40T†� ù‹NòOÚ±L²Ýqø‰v³ÇŽ,¬ñ)�}ph2•¶ø(ú­Ø×]-&KIó[k~³¬©9èñîêŠv áÇ[dìPR'–Éí²“"ŠŠ^|üØcs $OaǤg$²2—Ý‚–æN–"äÓ8ëqØËoIy©æóJ–|¥¨ >(,Q0Š’“œÇ—eÏ»e †¢£^7ÞزwVzLת§�ÔLZÙ$Eyµ¡û€^ðãæíÄ�Àw½¿ÚK;LA§ôÏ][±g²ï ÅxLä ÙìÅ\º£«t&i`!è@0Þè" Ä ŸF™)¸ÉħԛAž–CóÜã¹wÝï ³MY‰=•€¸LÏh÷ùhH©L ×/ñOâŒû]§ŽUÞ[‘ê°ìjä\Öjþrœw¼pÑKÉŸî´ç˜­Ï£ÄÊYûÕ8Yà”mÊÔŒ&ÛâRäËc¹b­ùB¯o¯?†[;潪¦û± ¯­·jƒ¿],bJ$ˆká{r÷g&§û$ÇÂd"Œµ)’�j캶¦:1ä�éhoð,jÍ(ö­D”ô“¿·,{l©Uøð øšéfŒ-ÂN‚óÎJL+ØÌö ~²<ò%Ë˯¾R¯xkkÈxK‰Íœ!¨ÆápØs$½ÖR*Ké›”]){e¬1„ FË�­µ_ã7š¤d×�öPq%~C>dçÞÞê’Wfª¦#F2†ó™9K-ŒKÌ–vd�K—&Ù^Cæ0mÌÓ|î/l±%ÁÐ0/ztÅ5wÞsÖÖ8žpCM?q,ÿßæñÇ^Qly\šôGúWç]ä 7ó|îÙZ_Ö¹�ì\šß¸¾ËšàªH_Rjrîì\Éi™®"´„µ:kk½w‘wb(Œ‘å©ÀJ)´Œs³e…_µ¼�AË©Õróâe¥`·Ç7.'ôYµ•eFîå'!ú#‰ç§Xm^½ÈÝÄúzPÚ …1­3Ɣڗ¯ÙòA˜^—"ô)ª]Ƙ2@h�ùCó›º<ÒŸ8+‹ÛpUs½”B�y•5à×cv³•J[ �%YT”Äñ¨èàÊÐÃß³HCÕÚ:íNaìú»MFQSÙနÀU#ü?ŸÕ-ÎVPÕšóza6£½Áî��9 �VWîºÕ¯ƒþdx7m°)òþ*N{U¾µ�{œ¢ªÅ®’ õÌT�é%õZ]°éïﵦ? SÆ_|1Î`{½©R¦.,K�Œy¶¶M̼i»Ý’ýŠ7xûÄÆ/2©¿Ã£Ì=Äk=Hò z4Æ%Æçk›+j6õ[ÊY�T†œåcƒ_`•G…YáÄCÁz0ÃûäLmæî�{Ö/ˆ;_DRÿ¦e Ò­ñ›r04Ïÿ-ŸýÇVR#‘üéŠu¯o•c”u8NZa¹²²x Ú+ÁZA-eaÙºˆ#¡Š"<™ß2L¹PQèIHú[3€_÷ù«ÙÅ ôe…\jã„×À²'DÚ.C)ª­ƒfØA °)9£¬õ…ÚrVq‡ƒ^�Mfhœ+Ú½áÂÊ#—ÆO^�3ìPîV§jG—mì+ª‰DÖÌ]¦„P8›j‡í-üd´âÚÉÇ»—¤~œêÇ üèØj¾¦½ûšÃ«JÎ>@lP]ÂÕJQ”¤‡öcâºiúÀ0—' #” –Ǿ Ñ¡ý–Ú›°ªR_6�‘oÈ;NÆÚÕ®Æe1ŒŸân–òGçJ ”?ÎF+™NgzÁÖ_«Æö3; ØR·ty‚�ݧjþ:1¥qyO½ê7|—¢B7U`;Äeo³dI̺LU 1£s4Æ`®è\–Qç-sÚ¡u›‘®�º‹ÜvVƳ°Äì®Ø¬™ÃÇÑ…Eƒð£1¯ìˆd'ÅÌÚ|+è¸õYðÇØ¸Å“n`yÙõJho×ÌÅÊêj¾ÒQ¿lpJº ’[ÈI � K»#øq[Á±ÛÐ,¨ˆ$p¡Öž¨¹9SÀ‚㳎Ôoí%ö»Xq=´æSSX2޳Ã&šòãj]6”Ô…Ú+Èî°øÐh7ÛíY Ø_Þv'©£Þã½·»ë2œr¶Œu[U¯7«Kø¯™5æÂV†•éBn»_�S梈­0N¯o0�ÿ½“Øn.±ßo?‰™vÇL¢q4çÌZµãõþ@îLvÇàZë6™uØTo•³†ŠN«÷¡áXF™Û®1kjÃÇ)„Íѳï^"±•ð ö`ʾ0þcëÍ p,·#‰µr–M+ê�½l2“&æPׂåPÑ,@p½™ãÌš˜2åø}nѯ%; ZÝ&s‚±ßÖF˜°•²Ï’‰RY1KÂÎF ûjË|3žMÑ™ ¿UyÒ ;¸b 3ðÝ…J7ä¼Lh¢Ú YGçfàt3o¬‘\Hs áÛåðŒ_z…/lÇ`ÂÆ>ílz»põ¦ZÉy8¨ÉŠ'H<½Ë(>‹ijbÀÑPÍ;d#1Â("›LzAv ‡ã¼¹xðŸJ�âfpEéúƒ_ÿ3»ªÝÔëý­,/?ZYŸ *ie0ûç_?ƒìÒƒZk&­ü½¹>Ã^õ¾În°à ÿÌ,Ö—f+ÑŸƒÚ`&œ­øìÑòÚòül%ÆGþìÌìL43;»׆£¤;óï ¶*ÓpYåý–^¥Ûh5öôbé_Àr<¸Bk'S5.Œo›¾Æ=÷G¦õ-”¿\‰Ä� ÑËnyÿòZáû—ÛdìM¾NBÜí—¯ Ù8,]ò®÷É'ó¾Ê@#ÓéE ™ŒoXY5ºÎ†“£GœÐh&0Äšé\÷oKê´W·clo¼Kêl$û%ú¬Ùèzži"'´>¿4¯M¤Õ·ZÛa«—Aã<äš}Þ‘3e¾V_N8?F_Ñmò&#¸3"T8Yä{£Fµ¥ÛUÀ®5ÃC†õs¯ÆÖàGeo"&tqqѹŽx¥¡Ï€ãü~øÞ¨§=!@–´¦|�Ü“¦?p#×QgB'H'éz…±å™â<¥±—¶jÁ[Äœ­õ| ÿ-g c°ÈMì˶Á¯¼þ’^h¶i­TÅ­Âï�ZjMÖRÐf--ažñr Õ¦Î6éÉŸ4¶T›Ý�xãëÕšq”$ÕI”í�AÚÝ ñŒkRR÷BB“ÏØ3ð'ú üg]h±mBrÃmC)üV?4V:I÷ÂD#Û;½ç’¡aÖd/„»4Zñ¯1Â|L˜e ’7 ãˆu¾Ÿx Y÷„¦¹€„[¥h‡½î¤`\:ë/rÜÆõ9k�O‡©ß«Á¤»rø‹ÆÚa*ôÒ7i�Ó­Vå'ÏÕaÁ²V¼;§±â¦1·ÝÏv›IœwÙí›�st›ó ªßÅ@‰m_N£mÑ……r ÐBÙôeµÂã tëZMA”íIÖôä�Ä!fxG«Ä”†éyv{%ެà}3·€ã*2 &\•øÙåàÆK�ß¾WÊú Ckÿm�êùÚªŽ*S×\ÜPyÑÁ}ÿ`¬!¹„²¼“u!GôWëÆòÇ¿ú#ÑÞŒnl¹W4lÜA/oNÑ-kzUðÛ—*_óZY[¸i+X³l+Ë7ney‚VVoÜÊjùVêóõ›6CUK·³tóv–&igåæí¬LкQ;Xµt;‹7ogq’vݼ�G“´scB@U˶³pcR@UK·scb@UK·scr@U ÛQÆ5+«k4cˆdóäƒßH£©q{ãÀeÍÎzi^¨Wmï¢eMŸ÷/~~6uvP²dØ,jtáù„–ÄÍuo÷f´üÔ_g½ëq}îŠâ£]FíöF³ëÇI�þ9JÛÕÕ °}´Tiͯ=9îlnmÂÏÖËÎæf‚÷NØÇ—›?[O_Õ_oÃøgsêm½ÚÛKzÁùÚéþ—=öýñ.¼B0�ß?m½Z}òn¡ÞmÂ÷wðt§ÿø/^¼þ\=h<íõÙ÷í<¾bàš›OšïŸ¿éöÞ½aå·vÞ~ ¼{Ó=_¾ðŸ°wìÕî)¶òþy¶ÙÙÚzÜŠo�—Ø×ãW46ý®·Ãþ<¹ºx·À@m=>‡W§ow9=îû×�7�— » „×F\lîÖ7÷ÖFïÞÔ¡¿ÇuYéYðåòñáãÁÖEsúwp-=Æžì?®¼ ž]}zÇ0üîh+xö.ØÙ?9ùòìÝòVøîÉèôêÁ0¹zöå`íüÝîÎUçÅóäÝÖp'Üêw–:Û¬ë+[¯:›ÞëOáVçý›­Î»'o½¼~¹²×~ùéùêûO[�å'òqøþIc{»³súöñ¦ÿôÓÒeûõëÞæâVçÍqçýÂÞÁüÞÂ(œ¶½6WZOß7šlþwß?úòôÓÂé—•‹Ïs«ÃÆÞ«Þó‡¯zOüèÝÁþ§á»«wG½Ë÷l>¶æ7ß~^Ù>Øõ´~ÍøKý}ï¢ÿþÝrç¨ýþÕâËö^|ѺZŠ?µÏ×zûONëKþê»ù£/¢«‹ïÂ7ÇGý/ÏÂ/ïúÏ�G +‡Ý/K᳃«`´¸ÿ‰}îï÷÷[Ÿ>]ówZo_,Ö/^ù¯“å¹¥GÝúç÷+§�ç÷õâÑèÅ«'Oâ¯^Œž}ÚyƒÑüj÷囵íaãI÷´sU÷?w¾¼\žo\9ü²Ò\IVF_¾Œ¾<{ñîÝÊËÅýgoƒ¥åë…t9ž?yVß=o ÷/_ _�<ß:sõzk´-mÞ�ô¶:þQc3H7›{/w¶?}ݽzÙh=ßkÔ£‹°ýhsõíÖq¼´sÝJ·Ÿ¤á§÷OÂ¥0n÷¾î†Ï¶‡Ÿ[KÁ‹Å‹vº¶üpõpéd§s<7ÿ´õ®}¹»³ž\]v¶Ÿï=éEo¶—ÎWûÑ«ÑñÓú拵Np?óŸ.­]Ÿt??�Û‹÷Oºíã—GÑæ“WW�µçÑë�“¨½r¹ò¥‘>~6÷úÓb´Øœ;¬‡+Ÿ¶ŸúiûÕò—§» Ÿ÷šKËÏÞîø»ïŽºÁË÷/_–¶N:�ƒ'­mÿñ«iÿųµãÝíÓ…#ß_=ÿÔ¹8yÓõ?omöÞž¼X}Í?Îï}é´V—¯öWŸ OV®®_¤×˧×KÇÛO·›{oZ�_�6ë�÷~Ú<Ü\<=Ùß;¸^Û~ÒõäÝ»«ÞákóIs¹;zщw>º›«k�;/7SùQ´Ðy×~\GƒÓ¹ÅGõƒÞó/×ï·Ÿ{/ß¾x6¶wÞ?é�ú[›GéàíóÏéÃ8zû2Ù{__jÞ¿Ôçž/ÛKoV5÷vž¿8Úyõù]üüåë/o^½<éûÏ;�ßnv�K;o›_,.&_·NÖÖ¢·ÇÝÔߌžÍ?é/,5Ï[ï߬6û«+ƒ…úaüöáËÑá›G‹Ãùî`¥·ÿ:�üæçÇŸ_ïÕ/w_ž¼x³µ<|±ÿléý³g»K‹­µë'¯Þ^¾}ûpkþÕûgk‡�7ïÖž_ ööNš{ïWž>[x¹z}°ÝX\üÒln _¾?ßm?yµÿüâò ùtp°ðü2Ý©_}ê½}ÒÚ=óyëËã‡[­ÖVoy/¼zzÒ —O÷û­½As!Þ?x“]¿i$Ÿ_¾ý¼•\¿aÇäÖE·=ÜIçK/ޝš;ÏzL€}_¼ Þ‡¡¿&LÔØ�¼vŽvçG[Ïüç›­gk_v×_Î_^]ï�œ¿¼\»:8Ÿ¿z9òw?Å»Û{Ÿæ¯—¿}sôòYpµóâ¨õ¨ó|ïýâUç4˜o‡Í÷çϯZé‹n´?<¿xþòÕ§Ñá˵Çk‹Ïßíìùarºý²=Þ}¸VßÛ{õF‡ÃãÑñó�(zsñêÑÛ7Ëǽ«óúéë½öNçͧÝÕ«ãýÕ•ë�a·3¨¿zµ=™;øòxØêíÅO�^o?ß;ßêì§ÃÇéÅÓ‹Oí­ÕÆÓ7þQçâéæÒ‹Gí�ÍA÷ÜgŒ_úâ󻓇/ëqçºóøsrÑxÙ.DÝO×'_ü•þðÍ‘¿úù`ëÅÕâ³ÃÎáfx8÷°×h.ž/ìœ~¹\þr‘nÏ=¿xûðÙÎÁÅ\ôy©½äÏÏûûOV:‹Ï^´?ÇkkÁi³ß¾˜{µ»ö†­¤ÅÖÛäí¼?¿è¯uڗ髹Íן>½{×Ú9:ˆ®ÚÏÏ;ÏŸŸ?�æ�ž¿ê¿|UßÜ>o?\h%ͤ¾Ú;Øê÷ß$o/6wÖvž„û£Ý—KÛ·ß^ûñÂÕBÒy×ë¿yùúr!NÞ=KƒÆhîõñ\·qurô¨¿õæIÚ}·×x .Žw?¿ß¼XZ~ùøøåÅÉë£ë­£¹AûÓB«ýèÕ§/ƒzôäÉàñÂÕ—½ãQã±ß[=üÒýôza?�N¶G+ç�ÅÖŨ»Òn?úô.–æß-¿û4ßzŸÄ�àõhØ{µ´¼úþÍÕ*£ê{{O®�‹èxeaçùÖÁ§«�åpçâÝ‹7ý§óO7ÃgÍð yÚ=XØùrí¼~ù|®÷ìñêÖÚÊIôäõÊA§·ô~çñõ§÷‡ïÞîïm�vÞ-ìøÝÃÃÞîéÒÕZïÙ“á«GK�›¯ç_>¹®~~ço/o'�æáëzxþnw¿Ì'_·ۧ+Û�æúÝvð´q>¨/}zøªù6™ß_|¶ò:èŸ>¹:yüäñ~x±úxÿÙÞAôèóË“WÇ_ÎΟÅ/ÒµçíáÚ<Û{ïoFûýäKûðU4Š×‚ÇíÎ“ÞæþñÓËøøéÒ`wmµ¿õd5þòioëõÑã�þã$}ó¬~ñb!¬w·¯÷^¾{ï?ïí,ùÇ�ÕË£h­ùðÉ“•Õ§Q7}ø~>|²õåpïÙÉÕãá§ã÷_V{ÑÂhke«þ9v.®Û+OVŽÚ�£ÎÓÆö›Í½¹¹£ôó³ý­÷_–[ñóݹ·/.æŒô¿zõù°¹X_é½}¹÷ùäééÖ“áÞh¾±µùxûüåãÁ«~8wýèýAëa½·t4¿÷¾]o?;|õøñvôð᱿ðèÍêRãÅÓÇíýå·AûÍûhõàéjЉŽ^ùŸ’…ÆöËÞáõêÒ“'Ãîþ«ý‡£îòaºõ¶>¿4ØzzþòËÜüñÃãáÓ÷ƒë×½xíðéüÚ¥.|òŸ7>÷ŽžîÎw^î-œ.Õ¿8ùÔÜzr¹óîÿgïK”TÇ‘E¥^wLLŸ¡(ðÂv:æÆeߊb+Šezâ„W0l³NÌûögyË$Ꜿ=÷õTô™*P¦2¥T*%å¢_ú©an*ë³ÒúriÕÔ¢nÎ98µ´—Ù¨�Á÷;ƒA®8»bk(ìnÇLϩÈ-öŽÅ£Ì\ öã(¦ä–Â-ÕevÞÏ0ó³BÕµ"½x=v»þÎ�wrq[ Rƒ«\Èzù\ïÂ2æì 9ÝÖ—Ôˆêvß_k‚šE±]èm®³Ì¦½¥Øö{&“zÝδ×ü´^˜®ÄWÕ ßÌõÌΔÔfÞ7ÍÍÁM^[DA»(]nÎÚ×Â5{’…b¥YÎíN÷£yQOYZ¶ Ò¦�«ž+£LyÚÙﳆú±[/Æý9ÑŽoùóŠ=¤Êr½Y9¹es§xZ­åûâ,+5žs×rf”]Õ«½ü«8̶âp¸\°¯©¢:86†oj¯?Y¼¤æo*±~Oµ>¶››P,߫ԪÕZ§<½°†ºg¸ŽÖß4Í�ˆî ùYjµâGå1ww£a}u*ãÂõM>Cu]ÝÌ®©KCæÔ.Ï-J©¹’3LSú¬‰G:EŽ+ÛŽ$ŽgÔN2Õ[©m.GuÞíÒÅ~·ÒyÛçô&Y¯eä�⢑úkíC%_^ŒZŠ8>m�D^W×§æàj4gÇ*•šçÕË5;«‰Ófy®|xb×ϲœyRgåº!/›ó¦Sš/ª×Í{Š1ÕQƒTO»±© [‚.è¯Jc¸Ê­žxËyÊÕ¤E¥7>/ØÛË,ÔS•/7³ü`fl¸C—ëí3º˜ïPœ²T#i§ ­ÎxÝPŽjgŸ}íWë¼l¬_ߘi¡T:ÕöãÞG·v* Í ÑoîwêQÍ´ º@)Dex®¯d&ÅóÔ`LpâAЭB¾>ì5ã\ë²åÔž• åƒ0-·”Ö¹ÓroûÙ¦�çNç\îæç›1?Óz[|¯NÖë½”RùÁ´I�_÷¥åt5®·¤æ{Jmõõù‚\¿vrÔ–j¿ê—åáJÃñqÛ)&ûW– æo5ZÈ÷×{›N—Ýe½­‹Ë™Ä�)¥'‹¹Ëä=ÏïUÁ<ïó³^åƒV#¡:›ör•vEU”Y¦=b:ük}.´¥âèJï$b_8Í»çã²^é5mQ‘–Ã^‘4Cg¥JT©Ro ^ÃûšcS[üØmÊd¹¸Ñ2‡×ñI_ÏÉÞºšU 1sØÚ‹å$µ§ùÙzI,ˆÉž0.»•°KK¥£¾Ö´ã{ÿ:¡ôB/§ô�ý«JdUµ¹Ùw2íõ%ß_�É~n“QçëörÑ)òùœ¦/×â¢U¬]+½Åõ ÖË­Uv.ÕÕJù#ûaZ¾ë;úV“S´Ô9Í^O—Aa¥˜21ç3SÓ¼¿\fÚ¼)l‡ùì:àd>M�Ä÷T®Ã§¦—׃ôþöV;�9}¶Ê™Ãpáy’?_r¥ÂZ¸jÛ]m²*׺ëí„NôîôXY4Ûô�Înê<$ ©_bóü2×y;žÃݵ8|5÷ÊUß“­Ñ¤§tjÿþÁe&ÍËÏúÛzÁT$dÝ8‹¯ãŒFõ7¥Âl'¤ÒùºËmem·ç.¦Ì\+ÇZêš*Ta©6LÅŸ_)ªqxÝ Êþ˜e{rE¨¥jÑÒ©«¹ãˆ:S¤õ�¹f(㨱‹Ë^gò£4! ƒ~Eá6;†á–o|“VfYºµoˆ¢1šSµ5õÁ-u¦Í_÷$ûÁU…m®(¾m ~yéo·Ëy�þ¨œÛT;×vM¡dÐŽb„†^è,s좴ob½™_ËûÅ™Qº¥IÎh^²­æVlIëU‰úÈöf¶ÈϺ™þk¾”mÏziþž97ûçÁ\·"¨•ëÇmyA©z¥øVÌHûrc5*s«ùi¯•¯4Õll'­z­Q^šƒW; 5ªY¬¶j“w’z3:ÅÑÚxÕ£ÅƸ7Z¡Æñ©Ñl`t²ûÂØ<ŠQƒIa¼¡Rô)S8”K_I-ÎÃI¶ø6Ð*ùáìØJ†©7‘80奡¤fÕÚ¹KiD~´xbA6Ö å·÷vF9¯–«ÑõÜ´�sÙÔ?ÎljªÎ+å%Qðd}œa÷;£P4–æ1¬›Û¿Î%b�eÔí¶yœ×5òÌkÅÊN7ÏÌÜ’6ªuMØçÉ­¾µ/Ý^þTajÒ¤M RaÔ _I™®u«gmÿžá]n::q³êfÚVÈNA'*b¶+Š¥Ùø­•’Ô=·?ªtv\jV÷ÍC¿>¸ÖÚÓáþ�;Œh�X½^çu°X¼Vߥ9;Îé<;Ü^¹u$´[ûÅá� s¦^,É…Èí�ZæÒiµ7óÍ|Å7ϵÔ{¾C3ù¶Òš›Â’QçöyÛo–R™Aãm—«¿žé^~Ÿó­QÕf ®ÜiõD9+Ðòh5ÝÉ«Á€¦wÛ:½oÕn;ï4·•õ¡�"õ=Ë2¥Ü¦ç­ÙŠ!ÈÙ°d¹æ¢Å¶i©­Ô[—a¥Ôl(åŒT?’‹æjòQ£JF¦_þP3üæ0Û¥êbÀ0Ì|À_èR¾/O bûœe¥sfqšØ([צYÊ3ǽ1½Îõy,–3§æ¢r*KÓn�=/óÍw²$¿µÊ•Þ†U~ù1’ÖSáÈ,û㾸ë ýZwd¨Çæ*ÓºLjò¡‘×'ãóDyĮ̈®~=ä•ÍdTˆÛ\AYfô~Û<Lj“FJÜí‹Ù‚ylçs×V…kѹúXëèga0mœGµí¤W“¯Z±·) læ´mT©Lþ­–ÝLúG9ß_]YÓ$èŸ*¥ni5k_ȹЕ–B­Ú6‡cgj¡óè0'›»SIÔÌåÚÓJï{âØnv¸IソïÖܵkŽn¡Öë’\¼²+BbËY^ÈŒ�õèÝÐÛæry&;ªeHŠ22 )g4"ó‘*UëR%Ïô�ëAɘfú­ÝÕÇWq#eÅ §dê¬-4õz­�Š;^3"Ó!§�³¬œV<ñÎNÉF[›Ö÷õþz“9(Ýõ€¯ìÅKK£ÆkVYh½¦¦kb—ât&UØõµJæ4X™§» ¸VõîSË5i[:’9޽’ÔY¦›‹U¹Ýd·Ä‘l÷×™±™Oëå}$͇Ývy±éõjK|³^.�æµ^O)ŸzR¹j Ë•í¼¼×¾-‰›“àjµ¼j˜6”ÚYTkåJy[®5œ»ïKy@WzËÆ©<£+Z¹U,¯èj®ÜË–Éaí´õ+Ív]XŽõÊ`Þè”?ö•…Ú¸”çÛŠ²lËYÉ”Ûý²Ô®¾Û¦¡˜ª2§î¢¼ŸV�Ã×Nù`ß/6ß–‹fe9i¾©‹mE.—ëÛv^.™f†,§Ê§òBZ¶€^qQ{côN¹Ñþdª:1)ïå»™w[£÷÷Á©Ò(u‰áŽ;P=ŽÎN¤quñ6*–©|»EV›ñL\”S£yfG ëju¡ä k…ªu¸ ×.…ÚÒ¨Qæ1CVߨ×Z>wawvÕW‹Ã©ÈõAé�•^? §×µ.+kžÖ>ôý`vj¿•Ö™.Ùd¤×>ÛF¦YŸ¥ê}a•¯ˆU~0­›•ÜÛ9÷VÐÄ[vRêÑ£E^/¦¤j¦YœnwìŽY OdåÄêgB�R›Rco¬÷jž­³ýÎxîÈÜõ°Ö^×Õ½A ʼòqT.Ûͼ³o·tn;š«§NÅÜïç«ådצZ#vHÊFo3>}\GarærkÔç§ÝÂ9u*;éº�v—Î\~¬W�ª-GÕþ~m�Ý#9ÙvŠÙÍþ*#y®2d©ÕaæÂ¼qPƛӨ¸Ñ)õ-/™†Á´BìEâØI¦ÃëíS­w)oˆÊxzXUKRÞQ— 7z?�ˆu¥JQEÑ´ñË´ØgÞßÇãn_—3„´�ƒæLS‡—Jk9j×ZÍf»ªssz8VšÍ~µ—»®Ë;aN/µÙ¡W7 JuP¹^¥*W¢Oã£PlӃ렺XOß߉vC;²5�tf,ÓÉf— c¿HMÆk­5+ÌÞ%rÖ Ò|små¨× Ә옳˜¬öã·C÷„s·{ È]ÿM[ò›�ÚjÙí¬¤l‡Q†CRc¹,AdFïæÁ®›=‘ûB½¿œ [¬©bëï—!Û3Zì´Ÿi½î™až(�­<ý¦ózñ]1wjf™;ó£éöØÔktãµvîìróÚû¥¾hù͇,æÉ>5h°õëkG/ J7Enw]­ÔMµÅyñR +z[Ö¹ÓßÿþÓࢹeŒ_~�_?…]u�—<ð’Ì ô„ ¼¶=ƒ²!ª¾Os!‡Á¨;T8vÝ×,’º åçd}nÅ®)Á/"~+~—MëKMÎÌVü)Ș»5I{–+É’q¹5‹ÑxzJoÕkZÕ�§C}«ªÆÊB"e­â¿ú�ØÃ­LZ%F–]àÝ'Mب§�/�¡¦¥¥ÉW¨Š�—Žà§ß~‰,ñSDûH ḇÈÈXdXp*ÜJzk;âÐÐ Ð`äðXA–±ðùxàê†EPÀ#à@.< Å ²`Ú˜;,ŠR UÇKƒ@Ý]°ðlüA14< �‚@2i,>ƒ³$<<¸fÇ‹xxIU<‘��ÇÊ£6vø‰}` ¡ˆ…�Qæ&€]GDŒ&ØÆ(G"F€M £öA·¶Ž]  ¢&è+,Še`'ÃI‹šºM¨è‰ÝàÈE£!LÆ Ô©íÁ`5£-\X1Ú„Faáct…¥ƒÅ£-tÁ²:GŒÆÐ�[5žŒÑN½P,еqØÉ*ƒ5ÈÍjŠ`G�ŒQGI0M !–“ Ð`áaä_vÌÑ{¿Ö7í>ÁxÒ$þI}f¯N”ùÛß,[Rõ²€?¥­/³¼ù¹•$7m¥¢úú´•xÞ1!­ e°AeQTeà÷" ºþµHعÅ}ó4­WÒt–�í^YM9nÝ ¾ÒR¸xDeÐÛˆüÌ«œ¤±"n ÚÑ¢Ñ*C·‰°<þý¡n¢;!™æëÂjKµzà BJyõ¤Ü~ Tu„2àÇâŸG ‘E-š½Û—¸8| ò²qG2HBŽEþWF–AÜ®~CŽFF6|Þ™±ÃãOt䦾X@‹»±ØaJTTfÐð_¿2¢!@"AÜ„WáU“}!­¤¾Iñû¬Â"= à'‚ΉѴBšžŸ¢_ØRì‹x‚ÖŒ@Ó À­ö›Ç„Uo)Ç·œ Á¼%¿Uµ2š–¤�”±$*e¬_ò?b×[7´lY�T C3ò_¦Ìߢh".`«Æå•æÍ!ºn¼D ‰¶¬”ªiëò"�Ÿþ!n\½Ý ܾq“ÚZöæh�ËÞ"XCë?~G²Áê�¯¾ä8¬uü!ÁHC:‹Rɰh�DrɄŽPzNÒ™‹Ö­5ð_ Cò¶ )ñCø´ Dbï)n,CÉh= éÏqV/ˆÝ ¦õnyHñ o_Ã\ôy‹ž)¹©""î^ǰÿP{¶BÃÜI¤ðÃÁì5 ~ôÄíCnÆ�‡gµºuíP]'•Ä(Æ—`Ž7¦TQ�62ÕeÔ®ƒ AäV¬©ÕÊöêŽ@¡~BÓî+ô�ŒMEHpšüÅ ±–l8ºì„H Ë+'iœkq"�:Á�ƒz›Dž–ñÐîYfÙ†!gDûxè4tÈõ>@œC¶óN’`Ô®ÒɆĒt̘Xë2ÿýV&ªOK¼ãú´å…,Ü8 lŽe¹¨BÛÉý›´C(´Ð.+m… iæUKÁÞ/gi;ii°š‚/kXx‹õú±R!cwÖpSÌ-í­m@²ä…lÀMº3H7»½[�'^8îvˆ"j 8! †è…5÷ yðº-�Œ«m¢IàÌí’ñ¦'Îü·4®O #¤Æg€ÚÏ$1ݧE1ˆ9Na­1hžP&a08±”Î*!ëø^¯s®p𯑕™ò‘¼kÐn’Þó†:‘ÝÇÙË gÝN}–õ›&èÙZLÅ"L›vÔ�’ì%ÅôNi·s•ÿ®Á«»÷o/£ÐóŒÂ2›Ùb!šÚÌ·“¼€ÛY_êòà�µÕí¿c;!aim!¸|ÓwŒ—:-ì¡­Gë9J…U�°€»Â€¥ö‡gòÇÁ½¸©Ù|Ur¹0�W~ãÂ&¬ù·½`¢ï¡vúpÿϤ�wŒ®ŸÌcØ?®Ó‰ë¤â?­¡nµ]©â8» �'&Žó[¨Î?‹¿ÿyð9JÁRvCž}":-rð!�pqSpˆ7˜w$¯ÂW"’�ÇOÁdo8<]â>l÷Ct•ù ‡|Ãò Dü 9d‹‚ßxF_±*£ñ–ÛºïFÔjäqì—x*f(Ú¨A måx™ÜON¥X¿ÉêR ‰"^ î” µ¡?=nFÚ–(˜^`Ó 4A4Í´åíbH P»mÕ… ðºó÷tEÝYµÐ}†>r€†rÞeýŸ"üùÀuºíþn9Pƒ ~*°]s]°¦m|Ò_“ðE0:—õÀj¨®4u+¸øÆ†Ð5$sdÕ³GT²àÃ’výÅ_ßBã  ·X„§ŸL«Ã�äð‰–¥ŠÀ É)Û�|ùŠfŽmŸÒ!ëp—þ“óíqëääVÚÐìÈ "c¶aÃÕpžœÊ颩ÔxpJÝëø€iö×�TÆô›¹�¦¥ò�[7 R‹¾=Òͼî~µ4|Ïg0g£›Q/GHìm†u…Lä¨ç§Û?Ù2r� ÁëßÔ’"¦ þ‡+ÿ Æ„/»ó�0hïèàœ­‚µ¤cï÷¬Ã–­|Ç1W]9j j;ýlq@,þ‰°š"–hèzÜÙ›ÓîÖŒy•E@º/#aHß‹IdíeŸöÅsÄlü.„5,þc+ÂÇN)mQa·Æc罄è̦ðÙ³2_{s‡0=ìBòö9Õn /-ƒ2÷m >FBÞNÇÈè¡§*ýÛÍ’ÅWÿ›%Ie)bÌ E áëåè¸`Y!ôÿ`DÄÏ ~üQ? YðÐí>ÿ!ÖÐ9Ò®ïªr¯þ]©ô+ÖÕ48D¾ŠzÿÒ Ì­"_Ì$ÈÒã·�ÑÐ¥ì^Èûò¨3|� ›@2’Ì™%8ܯw©_óB‚á;$<|/§íïx"ùáŽÚHo„„Ì$€‚q”ÐÍ;¦óP°ÎÑNâŽ-bÕ_B µoE‘°3«wp¼W—#Âýà9Å-˜ µ+øêŒúЉ:/¬ÑKÖà[g( D³Â}öô AæÌ�ÞGïA¶}ç^þÈ-Æ»ç„"¡uñ±�·1nññœ7ÈІ õ¢¯"ÆÂDtû_!%›ÔB�á¹E£y3ßÄ>nè¿¢ô*x#.À~÷˜ÃdÃãI ·ªäÇ`tèßXi+ùIZïÛõ“ã›(<�›ÛXü†~³!bo’]üÎöãVÑ ¾xÄ�`oy0³ÇpßìÄãÀ¸£à‘ êeÞG º|eRb¬oÞ=@œOÔ]x||†ŽÑãÅÅ*4 1<£„0GK׸{ïOät°Œ¸ÿ¯G=BW¢�09ºàö+»•‡¾Mv  &xÃzÛ¤@éËÛ>ôï î›]SÈîÈSuVÁ.®OKéãº4qâö| ÃÏá/à�ޱ\q`ˆ·…Z^;ÑDC7¢‚÷ˆØÊ¡–2³/ØûÞsà]L�6ˆˆ¡ S‚6«{¼œPôÚ-‚8À¢NÂÇ}°Aþ>‹ì>æ‘ÁÜ·›³Ðõþi܃…˜ ÞW�TîW~‹ÁszÎÚŽ�¾`ЏÞååä“AʸØ<7$oÁDc]ÓGI—¼Êð`D/w½3 /ƒíÅ�édÁ8 ‚3P‘HOˬ7Ym¸¾~u_uΤ]f™�½É–�I«Ã–…¹Éè‘ÏQl¶y.€b×÷¦×1M’ƒÄ¸- ‘óæŒçáÁ«”“–ñuôQÉþÍ}Ø´-}VÀ¸7x;,™ûKøŽ�òÊXÂ=ïô•Öqð0ïY•î14d³z‘oÉ ‹¸‘^Œ‘{rÏ‘‘÷ލ½˜BÏ'ÈÑý½F$ÊIpfÑVŠJàóRqUP^¶ûYÈ ”yWÎ-ºù½àܜݪ–û>t_0­ÏO’Á­Ê�†¼3&ÃëÃøí›ouû"ö=ŠŠ Å‚8qNÑ2í�е2­XST£ä9œ³un‹v™ÛïÓYÈÝ)ù9=ЕåZ2°})jè‡iëÖ]à£ò¼WömêyÛjð_zRî„C\Â~8iS ãê¬^ι9õ¹öX¿šË^˜ÿ’6¿¶#o×»Jë¢/-Í-U<}» ªâº­„?~Ýà!ÔuÂ�§À y¢O;Ã Ž€/0 |™ùþW ’(~B’>?–‘É|@š>OET¨¡RËñ�9ÚöGµ oSZ­OW&Û$gt#íV¾Óþç˜óisªÌ]Ü5rÿm¥fýdš&ªnüÄz°fÆ´ˆ=ìîööáþõíÛÍG[ü-¶l5íÒèôàÿÐîÅúäÛ7“hàÛí Ìþ�(–­ç�Û\e— 4ò1ëÿXR”�>M`ù?þ’}¡ 9¨m`S°&%ûÿ&l÷/Ÿ1äø¹ZI~NaRi·óΩ°Ÿ²7<ÖÊÿ*lwÆåKd\< ¹ø%=1Ý�ø~M ¾›ÆíF¡sÀÆ I ²°õâ6“ÅÙ»z©¨ýΣζó|ãñ)»ÕŸ¸+qæ‰û* Ú/žOßóñ%¼eX‚Bñn#wLè/$›“.xf0q›Cw`dù’¶g9xtpîŽdi&œ3~ÉZ'ßì— -rM»ÀE(x1…˜ŠÐ•òUÒ½L±‘¹Ç|à Îsþ;'ËMúMàÖýæ!ñïæ>÷ϧ$#eƒzÇGä{4@†8zišžÃ],e•ed¯aÀ«-…V>ë#¾Ùq=p—VPòÂkE”ÎÎcHØã!2[$8jÄDôl��¡äTîçO|oÂ1�ë·�ò@œ 3Oà³Ðä¡)†Úá¬Ôè‹UP^|¢ £9^º fg)*à�G�A5æ��*Ê2eÑÒ–9O]ÞlûDƒý0 \@Ìù »ïß¡o?Û—y2ÁÒÏ3ÚD¾r¤ WŽ~t¾IaõO‡µ‡Z!O„9vb½go–nŸY3qkPî˜TOqÝ5€P©¢šÿ0Š´en â‚õÂZM±üéÒž[ºe™€«@/(=¡Vºóú×? L„Ã~…êÜß<áaÚ=¬�Üm<}V @î ­]¹¤ÝXh¨Àðé­ÀèÍÏ‚°ýÕ"yZ¡™¨ ÷–#}866d·`ÜÕ“Rž혩ÀA4»ò›çKQc¶‚©V²œŒ¹€0Q’eû$ðô¯§ÌßþÏß2OÉ`pÈ»A„$ ±U ”Çá½÷+'¦À]ƒ_cÍê@A%߯u wþ%qï€eDßÀè¶Ÿ÷Ìõ,qŒçÞ”ðŒ‚ Þ¢!lºÀÜÊ‘G¤}‚4(=}td´_Òi±i§É³Lü†òÛŸ�ÓÝ—øÆ–Óë³ý~‘ ¹ev<ûÍŽ@ÖW÷d‹Çnø œ€à‡ÓðìY£Ï‚ nŒ•aáÀŽ>ÊuÕ½ øŒtBàÿØ !8™”±’Š@I+än‰ÅàŠ•ZجþPÉÅÌ Nza—¨ØK ܦxÿd_ ±%0ÊT+;UÚ ŒûŒ!¤e†d{'€Å £MÃvyÑÉ ³<¼Þ.·¬aè, �¶ÇòQè³±¢SÃpœ7%�Ždë‰Ñ”‡p L�.Dq"fܺfMCýš‡G$ÊÚý¿»<¡±~Nš&ÇãŒÀeé3ä#$é‡PþCÆÿ{ìP®éô÷/lGŸ“5œ¡÷½ØM¶ñ}’I„Dbø3IßÚúžJ!ß"ýÁ}õsï4õÍ“ÇѺL_³ÏáÇvp¬½5Ðw'‰�ƒ8–ƒû^ß‘l?À·<¦ A'iy ‘G<ÈgË *7ÿ¯ÿH¾ç?,_ õ8_äƒ|‘p¾(—/ÃéÖºŠã+÷8_Ôƒ|Qh¾¨8¾(·ÞG_ÅÇù¢ä‹FË!'‡4n*ü|ŸX`¹Ë¡',ÇX7Æ�ÓÏXþAÆòŸ`,��ŒgŸ�Ńœàœ¹b†]c—3ûg–zÍ£ZÅsV|�³"œ³œË…ᬘˆ3Ê•FØ %à¬ô g%4gù8ÎJ€f2gùÇ9#µ<„é‘O›=cts´»Ô`¸’0÷°ý�0@òÎZJÓ8æ, ‘K™ýs�! )8Ë Ïœ%‘”ÀѾ=‚t·ÉG˜{Ô!¦H2æ¬ÕTJÄý æ5G„=RpÔž9KàˆDÌå?ÁÜ£& �°IŠ.s9sžÀa™³eÑáòæ5K„]âm_xîò®ÄÅrGe?ÁÝ£¦ �°MŠ®6ÄsWpE.ž;òÜ=jžû¤”Œ»¢+sXîÀP´Ãæ#Ü=j¢Å3?Ò0Š<î,e«1-îò�sG>j¥�+…ðÔ=–={v/ �ìY&JÑáóöµSH„�’”=‹3* {töì=|]‚°Tnæ#ž= “ Á]öÈO°÷¨­B"lÂ;<§a$yìQîªÂ²'M;|>ÂÞ£Ö ‰°Vnö1ž=Ú]UñìåïdÏX [!-« /ðé-£m"�PÿlŒ“�ÏáÄý~}úí¯^ZáßþÉ+Œ‚ Ö†p#òQ­CéQͬ”áò¨ÆnÀ2 ‰gIêòr×D cÆ Ò5 ‘†øqˆ4Ç�„» 8Fã½ÑðV…)Tà‹[d’ûX`ŘýßÜ[E¿ÿ½·Kšö–”“`s7ïE—¨¿ÐPüŽ/®lXéÖN%ƒóéB¹bE$ÅÅêC™|Í„!ƒ)YÉÀ2·uÊ×d±�në$û’%Èœ“:Þøä•¼ÌâÇìNƒÀÁ\uƒÍ•@ǵ pšÉÄŠ¹å7d>Ý;M]j‚®§½W¶˜ÛñM·¯mÏVŸë*Ü'iÑ\aæù�ÌRÞ#Ýpp_à {Eáû"jêÖM ”ùÛÓ+ª(K»§¿eÌ¿4Cþ*-Mõ)Øuu"9‚ ü¿@zýöÍî6Í«†[b á~ e˦�‘ A/ÂN�Ÿ( Ç«?€ÏÈžÜt’-‰ªÆ n¡hÍ^4ãÒgFÆDÅ ·¯X.Ø¿ÞÆ=\­1½ÕƒŽÓ¶cj<ØW¿ñáÍ@iË,Í¥zÐä_~âƒùj}�Ñ�ËÔy+?ÿ…ªš¿‚Ü„º¹üý·¿/Äo}2¿Rtó¯•aì¾f2§ÓéåD½¨Ú2Cf³Yí6úzÙ¡M‰R©”±¾�Í&¦V4»x¿ Š]�É£ÖüFNV|z»øjEŒ›ßìÌ!´£`~|”„SEµPzMݯËÀ\6F`Kè@ÙD]–8ì/TÝd×ÉñÀhÀ*wq~ÑœÿACæ¯(�ýí¯󷟾üú�ª§ÉþÀë4†A¿óÙÿçJ9è‡÷§~~d@þ�ªú;ññ§ÖþOÑÚ‰'ü‹DòÜ£¾=çÔäꛤh“JðîcýóÓߎÿëg´7‚Á1ë°®¾³þ¾g@þ¸Úû³\ü©»˜î†Éð§•wü|Ç©î?Æ*†ðj¨ªlH;¿ºÞÉŒU:Ôú"z³ø³UÖ“ø Û~­ iþ0MXùòÄT„‘&¼¬ŠÅã\Dù.¬bA‚×ÎÉ` 7Û17÷ hÚkS×úrRXµ=Ї�(€+œü¸„€— › ¾hg8ýÐ[j}«n,œW:9*Œ>ï~t|¬oO¶×}<&ªˆG%)»ƒ‘4bOL<ª;ˆ1Å—VªÌ££ÁcIÐ4S²Pâ5íP>\ ÀP+#Ì;M&œ”¤³1£i§HŠ-NfìÑInvãg÷óxðÜEñxoOÉu! Ä&?ôöuèCj†îN•Cñ°R‚!»W-a ºW1Åt¯j‚¡K¤Ѐɵǣа§Ú»†Ò›—LÙØQ´—m šxAñ�ix1Þ1 PjîA€e€‘©m1Â�@0íÙA%áñ°[ô¢>o¿í cµxviL„T?°:§I;ÃM� ð AعšœúR�l@VÞ\U?§í<ú[U5V–9»Ô˜‹•µØ6'ÉZ¸£’‰•Ñ�ì‚�òÞþD\â=sß«ÀCsPÀ—[ç¶ÝŸ´tº•Híþ¾®OwòèŽ�ng=ÙÙ)±gÑÈb�Ãí”HJØ«/ÅihÄñb�“ÿî>2Éè€JyÖX;IÞí¬BЦ’"JgX$ö=Þ$±]û¹¶£¥ýù\î" n~|/ºü© þ@dÝ2 ÜETärä{PÙ%>'WÉ6 ÄSéú¥Á¤©Ÿh®Â¯"q3•à4õùó–YÄbI>U‰Œ±O‚�PŸh®~ÜGö5²¢Üêf’ûf}à/¼à–“Û¹…Û‚o.|å þèüxé;Ýt•^Êêx6‘JÕîÇŸ;‡ªnbYÔ7r‹ @ÍY8û¾å¬­2@Ú|ùOIX5jtW/¡�=¹†d:í”-v¾R‘¶ÿN3¬êV^õ§Üô8q´4•ýüdÿ/MÑ/…ÜîüÅÿ¡]¼&œ{Ô7JЬÖ`±ìG‡@y$’�˜×Š»Æ+.nÙFk ·Â û©›¶Y&N�Sè AÒ—»h"iMP� u©¨ö ÆÿÚÍa~½÷�a²�ûcâÐDƒâ PQ qpðw¢˜ÛÀä\Æ ‚òƒá4ÂkÐ2¾=ÜÜékŽÆ� CACAƒQÐÍ1!)h ØÑðFÓ7„;uw�­X“8!w#w�%ú’7–�«‘àãi¢»üXBo@’‡;Ù3«š�œŽ^€ÂbnÍm¿SºM{déNc¢”Îï~0 ß�­�bßmb²‡�(ùŒ¦©'|ð Šn,(”`ç4�Äœðnà’rdLƒžÈp¿÷hü§hü)ГøŸ‚ñ‡ Ü]Ã÷—Œèäæ ù– ƒÆm¦°öÐýÖ³�š߻u‚Š7œºÝÉ‚!`–ü,ÄKŒ¬.Ó¡Â�ièwÐ…ukgZ+�‰y³ˆÀ@�Π áa\Â’é!@d$h´i44ÚÚm„E�Þ  —z`A´…­�c}ï\ Ð Fá­àæUÐü�ó·ø™$Àϯ!ˆ[ðxÄkMÈ‚$Æß ‰¬ òs‘?ñíÃ/j�æ‰Y>IÆ*-™TÛÿ$m|{]¿Ê« ’Ê”Irì4øñÝxbÀÈÚ-tá²å„føÀàðŠp†ïê°rŽéÈÛJb‘†Cþî" e.Ð1M¡âf4Ì=¢œ øsblÆ>+ÅÑ×Î?…øO!þÝ„?+ÂáGàï-À‘gÓä†òOþà€Øá­ØÛ¼‡Ž!�˜Ä½[„!qG…p[è!ÜóŠnš$ƒ”.K¼�6ÔåRü# ›sÇ­nƒ^)‘­! º2YÆx©DÚ£êƃ‚˜;^ý/Øfñ1jï…r ½Φ1'œ”Ä;�\ ïKÖÜÓ%(!¡Ið“0p,±ƒðba‚DÆöuP&Óz¡>¨d¤:déMd8�¼°—µóõ³Õý$_jÅÿ¡â'î,j\æX™±J«¢ÆËÌï�Æ ²PâÅÁ'PÕ9£à`Ú%Ià Fîg¢`!*#á´˜ MÀz£HÀL)&àî®iChù¬á6²ÌÁ•wö l‡—àK6ÜÃö°/mÒæxú‹`AîÃÑ·ÚQ –n¾Ê©'ŸKÛ.Éþ.Çôä¶’HçBÀmÕAI‰o�\± 8‹†*$V4G�»×VŠ…B¬¢X8˜þÅ"“ÏÝi+ÅÁ—[,¢yB9 Ÿµ“K¡�£Jv‚#ß)…± 8)Œ†Ka�àˆû¥0 %…qpÐ]4W  Ô�R „Púq`ˆæ�}³hŸfiœÿ0xîõ}þXbgøc4¢1îA‚}GÀÜ}L‡nµ?2†q¤²ª¡F†–ÜûöýËN5 Ù­.iVå/dÚ×îÞ.Ð"JÁ—H¸#°ršóŒ¤-‰¤ ´zö0Bb3‰Û,�Ö›¯Ý³‹Mé>#Ù:Åwåk÷ ÂÃ>Á3z¤!¦ÉŽ?x´(”Å@ÓçPŽ=X¼À©š“l[RVæ,Èþ#BmŸ]ä¾®}nü‰zŽºý#;öšú…/s�á%5ÍZYÀþg,j?¨·U»MÌUL6à¼A¨`@‘3þ;äoŽqƒ�º;êÿcïK´ÛFŽE…wf’±CQÜ7û%/ÜDQûbYK’ã’ @\sæ}ûëÝ@c!EÏ87²flµtuuUuõ‚î]Yø:AàÀ”˜�DRÇ8’��euò�VÇD¶fY\®“6|crí²5„¡o)h�áXÀ>ƒÃ±wó|7ÏÆ<ý£´wã|ƒqqã�3Žd'd©qÎUy«q†0<¬qâì½ š§d—‹ÆÅg-¿Ã+d„,ƒc�dã8Î ?×%~8P£ä‡MñwÈÕñÀ7$G?XʽC �ι�& {›ñæ3¾m!�E$;~÷A÷¯9É#²™œk N¿D“hFr"¼÷Bhð‚1'joŒ›8KE_ð'/p›]*1m6v œc×½1ZÂ%yÂ3ÙJKr¡Ë¡ „~Ú·§¾’¯cIÉ¥‹XR̈,)~Ôò•” ÉÚ•®9n¦oâ¥)Ž‹ÿÚݘ‚ä ¿�çü"¨Êп1Y~s¨x(­� ÛàœP¦dÌÞ(¿Ø{†QŸ ¶Î‡ÒJ4žœZþaZ9Ž#o47Âä0ÃÖúÒ0‘gÆíV¿DŸEÄRúÏK�”{Ÿ"ã¿Éž%Ũ¿}„¶{…¡Ã÷ÜÿŠå…`ÿ%Þki4áØïôßk@üÝJqæ#Å}7žÿ–õ£ˆìÙ´à,ºø…š:˜öÍuŒ)$É ‚¬¢Z0)3ƽ�Ó !–¤HâöAª$ž¤Ú?Áú4Oøœ"î† ]Ç“ÑÅ·œè>2¡N˜”×>߆5ížÄ;}Þp ?k¿½É£Äg bCGèïQä=мG‘÷(’<ŠÏxø¯Š!’ƒ$Ä�T»â'ØŒôCvŠ!‰›vOâÈo�’7Üj �K’EqÀ›aê Œ„éöv8­)¿ìk—bÐB§Wްé>jœ¿o-ýïÑŠ,?³œtò`ïúï)Á~š ˆÁÝ)´{5“sƒ+xðˆ®Cñc³2l®9ü0¼$ë_¦¡fÈ1þlJâ¡1þ¢•FX)ENl5´ÌZÔW{ŒG¤å(À¸[ŠB++=m*wŸ¾h÷‘¼q[&º�åÍú¢mì|/…¢€P�1æ¢ÊªQ3í¸dœ|‹F8�¨ƒšÂ©¤G6…£GÞN$?6f|o•ìrÖm iå$8Î6!e"5…®Îï­¯PŽ;(.”G𠊈“«2”EäöÊ~gh�ŸÈL7Uq›å™H?i•ëIØâÝ,þíí!ç ËvçXÊX3È¥rÂ'‘# q�’ŒGü)û=©~§‘�ÀAz œE^²%.©bpcFvuŒl—ÛÌ"¿-‘p<ðgo.ý‡¾ó¬PùÁï<{³Š#íL¸Â‹Æ–D7Ží"Þ!ïE{«�Ã?ü¦´@ÍgAÒÒ• »£ñ �Cò훡,¢6Z†I/¤ ÅŽØûJ#¿ÚËCdzÒû=¢ÒyWéã,A:¾€PCY‚NSØ� _{Ÿ%¼¯°„t8ñ:FÉfñл\8zRqÍw2¯ïƒ)Ž€íŸ�߀W )3”AdM UÜ×2Q÷¡IºË0¬’ŒQÒí˜1Ú “'‰ÎÂDHBKfÒw2J¡ØÒWŠ;xžóª�Åßw{w°w‹v°ÐCñýîå_Mè\�O¥þ×:WTMåŽEæ\‰hþcœ+�ÎB�+m˜s%.6‚4‰sq³$Qù]-HÆg휬hú™ÃÎÊDÆ?9ú¨»ÜZÙzíÕXUÇOÍþÕŒ2ÞCT“ŸãÄ¡ÞQAtÂcP!mŒ#.D ]ËKÌ]?°â?©ñ¾ò E–~/(G�4Ê Bïü ¥Øé‹ÓáÝþ¢÷=Šÿk÷½ïQü^û‹¼Õm%ä6À÷òCÞcÈ{ ICÞ79¿orþß@Þ79ïòÇÜ-„/iœÙó"œÈ1ÙŽ'…F«èý”Ð÷SB�SB¹ã™rCá{Ä ãÈ&VsGEŸ›Ã8fa"òÌ󃱬cD3Ž™ïÅ„ÿ è_ÞSX EŸœ-è.Ç$/ •^(c)#M×7ÝGµ#Þ'bïhYr¡$F'S ‰ÿbíóG�ÊoÚq2²•ÃÊçbiáÇ÷F_;ÂeWïŠÑÕ.2¼Í9mEsâÓ²Mçs }3@°cëÅ’¸f©~pxÁ‚ÎùcÈåwÏR<ô RÅ9h °}}4œÑ®n¯³%9 *½‰÷S*¼èfNz›§nˆí§Ž¬X¢RBȿȭIVŒ$,$(%&“tóïSŽßm”“4ú8Ĺa|�Ñ&ë§ßÛùö2ÐX)Þ`昕tù=ÌÏÊŒ¥ÚŽæÀg£¯3áH¢÷*åã„ý„¦oüoƒ‚|úÔWáê}’ÊíÊÓ÷a/9·2rä4NaècRr%ÿeÂ^uàOÕMßTìá�8û�øð²ËJØ¿�æ��é)Þ¤t`+Ú•éîróD"ÅÊ:”¤,=Ù?܉ý'òÇzrÜþä}ÖU•Ð�L±�bÒjH�ͯFà´ûˆzy­´�áéÐ%R¤gÔò{ö âçða6ÈÿÀ=Epåð•�—ñûô¢}¤ÓØ÷ì6Bgªú-ýÇwv÷¸î#ÑÄã�T—Ðþ#Ádå�•û�žÌ!?J'XïDdr$"•u¿>Bñà‘¢ôvFñG-Ebqw\‹Ä€“.ÒUäK�›Äk�hkÇ�aÑy®|a› ëùq8¿grÆó²?÷ß'ŸáU÷=Ó¾voI!*…\NUÛO½†¬§P¬%7¡7eùZµVI>¬„ñ´ ÿ*í(ß^}}¸^!¹ó嫤½Ø!o\ãFÄ�È�ø1|�1„ÿäªø§ÝC+5«ð‡ÌEp’ÆMí‡U*zž§ ?)áz³_ïÒÔ2X®d_=äc¥ Ý ŸRDÑáz³xrúJÌÉ#¥/O«gš¡Aè0Rì<ùY§ï™Wöß!Ÿ \ß0Á©‘7ŠÏû÷I€`Ûî<�m*ß3�‚Êá'm¢ÕøcMÖP‰ÈM¼è?ÌÔ MÈÄËýƒLÄqd½etb·˜ )'ÛËϵHÖ{’ïÓñRýÓ} šJºESVEá0FI¥úº2˜†W#rÓÇÛ�:LjÉ&Éï ÷¾ýÇJ½�3‡JÜøy‰ NF]ƒˆ1Tÿ°oÞ'ÿ+&©™ I¼ï}܉èÒ³�Ã�#N"#‰:%‚VÑ1[x‚ˆçù,@™ƒÑŸÏܨ[› å2¯³¿ü{â�K¸«.i5ö?²:”EÔÕ¡DÒ¦ÅNrC8y¨ÜÒ _õš=Xè€1CŠ?©.Y)!½Øw.0ðeqòâ"öMö•ᘌ=,ÓÑpL²U]�¬Â)ü´p\<ÒÍDš£õõÒ ¹RÃ_¨ÒwL}AÒ+d Ô³j£×ì,VÍ@Ø×MÒŸöMïÍ\8Ðûÿ„ùÀ¨G `0UÈåfNJ�P\ôpq4ųó·¼ÚM´áP5ðt ÌQ�Wax‚GÍz¢{ª®kÈöñÜŠ©ÁºdÔ%¨“ÃŽ”âÎ#òHÆZóc`ÉB�½Äu~´w¿3û¦k<>û—ÔßHg(®šúK6,+ �G–�Ÿ�>ZŽ�ˆ¥�d@Þ™WȘ)”±¯×YÓž¾‚{zh´pÞaÞ"KµÇÍÐÁ|¬9“Ee`A¦® SyRgŸu’€âÜÝ1òBâ�Å;lMñíd;>ZÑ”Â|ûE¨ÄÑg(ÃKL 0”q#ëÌÒðñ7•xŽ–ašdENlçâ€T† ?ï iýû‚D ä+z¨FÈdn¾B,„õ¥ô…ØÃVøÛ °£Ô÷ó'$‚ñ®UÇžY^#è”ù°º¡Ã¼3a'–É9‚üÍ\…[<9 |g¦hf-Œ«®Ž€n3y¶¯ãCÍþ«íêÿ’{ú^ì•…k¢v²qSrÅ%SõÈ¥SÎ’2‚Lw¬C"ö¬�%*v†ºbíÜ0µ=ë´gy�–ÚÍØ‚¥&kºÃÕr¯¶Œ®äL=Ö,.Š ¾(Æ^Q¬¶ Ä—µc”Éçwã™0ÎìÎ6‰A{ ˆiëýø xg…'2Øýk±—�îZ‰}£�×ä»VëPñfW£Û7ⲦûõуÚq¸òhÌ©ùcNMsjÁÌ©PÚ/uBrR'È-*wBT»FµR¼‚öj»rMÓ’ö_{±†´èþ* ìdmß:ìÐv«ÂÞñ¬´g¥Îv3·½£Ùáê¹_0“U“=Ñ »ÐyÙæ/ÿ$Nð¸DÃ|¸Ù¯â÷9Sƒ�ý‹ó‡¨eXiþ%õв»Ð’–Þn;^àÄIo_âàþy¬¸Ñº7ô�ëœXW— ’¨“È8Uu¹u�(Ë1B„_hø6™vh‰.Q·iEÑIF�"ˆ8=Š,j D¦1]+oÝÏ�õ$ÞI.9Ð0b§G(zNb|Äo«LÂMrð'ŽÏq°P‰•*>«èOr>±ÕìáÇ`Â+†;Ø€o1RÎ þbÒB‰ùøwA„QîÞÈÉ8½Y{›M2~{ë:ÌpXáƒYäP[jC~ï mËø(Â1ò®ŒÝ¢eòÞ%Êßâ¹ÄË8j¶´ÁjJÑUXzÕÄ~kIÊ#IÒÏ+Ö˜¥_01?´×*¿Ø¾ƒnמ?/8¡”ÅDRò' ¿‘11'²²�YFn*•fdlÅ«» VHTc 4³[sÌDÅJuPD5O£dÒRȘ-¦ˆŸ•ÚPé—÷ã륊R,‡Xi¯¨�®åXS‡GÓ&8D*ž‘ÂŒÉBÓÛ„â®(:?vW�Ð Dg–|Þ¦(.¸Ä›%&Ì1¼|¡0îD®„¬wæ¡,|‚ 5mà¼`$Ÿ„zçɃXŽ–­.5u•LM…°ÖÄþ«ÖtË*¨¿*±¦x.¾šÆ2 ­nÓ·©/É@;}¼YgexŽÜ®‰à¤Ð{ó_�ż'"ß7Iì™þ Ô?Ø/Ó´‡òËÀgÅ?¦cÄ<˜gîÉ9™k˜¿ûæž¾) ïâûÎä£ÁK�ˆ ±eFl.Ò ÛÔ�ïñy|îú<>l÷ •ö¿tÍÅ`’qáÊN¢�´I'�vœã e!]I2¢Ý›Püº'ùØw·R%´É 椤Ä|l‰<Ñ®‹>‰†ÐñlÔµ÷H›üÑëñƒ UòªG ã‹ lo§ù�œè/ô/?Ÿ\)’OèUb;òÙ{¡ Ài�R!Tg`k–«%�® p|Q$§ßÅÆgÀôªÞ½i¾9üP:ôb «$]î–ë7yH”Ów/EËOä¸Â*uð¼59‘·âE±÷ªz(‹¨%õP"idÅŽXL¥Ù5¨Žmmêâ€Ò4´¶„4KïÛ ZNçÝô¾#ÄG92MwŸ ]T‰ñµ—ðÌu z�œ/’41e<‚©ïÎ,üyl’DUºÂú CYrF´S¿$O°¤ ÙaÕ–£…‡ŠHÆ##þDÐì^ìUfa$•d‚R!Keùj/¸×0nù[ ò�Æp–�`0›�e‚¼ü�røYì,ƒ:ÔÜ7Êàg‘\†è3S8Ä„WœeÛ3ÉóqÙ3ÅóqÙu•ÎGn¢¬LÑßÊÇgºñÜü»>ÄÆ·mÓeœµ“9qÈ”NÒ ñ"„`¬A™Ä•¯�puLyÆ!�Õ{(ûOe»´¿?Óø=[?Îð¯Ö�“ã÷hýØ ðÖÖoc:È©&ͪƒ]äΛÍÂ:ŸCð�Ž.ÂÑÅÕn]I’¢Âû´·QÇ�+㘶K¹(@ünBjpÕ2üIÔÞ®iêý$‹ôÎÌœòn$Ügužp Ÿ%‘.\£E ÿ€ƒ&Øwþq²øãx"IAgI¢,†í*õMlùñff_ãv¾–eßåG•ãjîî[^%ĤO± ••C'ߦäâð¼‰�†ç eï€19~ÜÙ_®­ªþ#T" àg s(9ëÕP]†${¨H=ÓŒèMÌb„Ãy’ï2Þ«bÂ9:4âó§ûƒâNÜ™Î<5%3ÒT}(ïb5øé(uªêKÕÕJˆ†3“öáèQó•áTS�áDò“Ãw}"‰Z†ìîo¬DHw’k&Ž_P9Cî‚ ƒÉÃQÚD8‘šÕÆã7ø‹Œ�<�’ Fƒ ? dèr¿Às#oѸ”‰´ÒA4ñ±§š©Æ"úŒÙ…“ò‘Ê'ÅŒ:ƒq¨)º9†ž3Ù}l•q��yNÒÓ Cp£ Ð…+¬Þ˜L"ä=š3 ÿ!Ú6œYâ]û½Ãv�Ѓ{wlbþÌYs¸)œUœèUf&oøÄê}£ê±Q5®i"Gf£Qœ'àˆ|�qÈ=ëßÓL#ö]'jRqcœ±ÉÂj’ím>æxgbô¶Å½¾QzË6KoG:~IåRÿ£Í`§HV>Þ8n$æ…C‘�ÿØÈZ�ì_Ì ƒ†*ápzj�e‡M@Áª T]R“RLMp™XiÂ>ß®JñROï4—`qè=MhcOý”šwÊ�+K·JÕ!}ëÀEˆYòÓyŸ Óý ÅÊ &*°åáGá@ð•æ&™…Á¼%êÞ´Vþ|Ž"Àk¯;“áÅÖ�É,x¬õ^b*Æ�»U…ë"jµ#®ÓŽD´FR²Ã7>u&˧OøŒ#aJ»¦Ô õÚÎD–!Ý)³ÍËÔFeµÔl¤]Æɬ2–Hn“ñŠ ¸ÛD^¡]©¤6Kb”q·|7³�X-GÖ.òÙøþüüí›;YÌú™©a 7[`(­~àÌe’x|sðÂxÒ·É—�^ð‘ â+~:¶‡‰hÃîH†­(Œ(æäjycà2HìièÛ7/[•Þ_ç£Þ¿Ž8¤hÁÆ ~{ù¦"ÚŸ¯(ºÈ]Ú î[¯>@'@²tÉ™�‘v&W¨è5˜­,ÏÂ%H ô¤MIšÉfÆ0AF”AÏï›k¦púB~íƒÊÌAà%¹þŠÂCm¨ªyuð9šBâk‰è$~“ˆNê¦á”Œ½*˜†¤…ÔrùùE8AŽ¥g[ýãÇbBoõÆÐ¦ç¼u¿± ?c]x’!ßl}BÊHý??¾…�?õdýƒåÜŸR4KüÑsa)„­‘R�IØï[ØêÔ�Æä†„íT‚7WàÉ™MÆR ƒfæPÑéÔ*|­#Ç$/Ø| kS?àh§Ò,Û¤Cç¡ èÎ>eJGio®ö±WHà±ü6Ͻë^ÀNßï%¯Ñ?8­’o¨þu ºÈXãZ¼.WmèôΧÔHW×0ú•ž•vº¼»GvÞHšÌ}$šXÆnõ�, Wû [š%ó…RBÜ‘„]Ë4¶Ut•PÈ…l½ôØ·| ÐTH0PQ‘øRb/±&å~”±"Až¹²†]9ûvYdEºKå–þ –(`¸4Ò¢4c¤­ƒû- 4³ï{sà§™ÝøŒ‰duŒ>|d‚×@±—aI”5RäÈÕU²-*Üý3ÓÖÆš�®º"G|§Â¶epÚ̉AŠG½”!•æ.Oô_�õü!ÏÏ�’åÓÀž;nWýÏJI)ו QènþŸEø“L‹ì-æ*3II³…îj û&ža9êbhz ¼ïÎ1ÆÇiTÆàÙXêo)nÂ8#ÝŽÈM7†ßd†®Š¢-úé�¦ÅYHM4Þ 9ª:`‚žÞ}Ê ß%ºI±.7¨Ävý¥G¬MŒ*ð'yµvlé(g÷÷žžÍ¡ÕyΛã?öòÖó÷ü˜Åc°ãw,‘¾Dve¤@ßr).A\*ú¯E¢ÅÔ‰©ý9d •À3ú„VéÛ7þ£GéZÁçˆeˆ°Ív° è~pÙUWá©c^‹ùâ!Ö±€œðk±CÂï±2$}‘8„Áqÿ ÜØ;.�·Z4›ö/íðÛ­d[“°múÖJÖàÏ�D%†‚öY‹Âr]zÔ��ƒnGrׯ®EƒßA÷¢Á�ÖíÛ7]U jè…è¶>0ŠCá•]ÛGçdœÜ-A9¸x@š.“úe8ßK�G‡æ‹^œ«TŸßÅÀå™§Ø{—}½7š>`«„B÷[Z8<=9„¤a½CÂÎà÷#¬³ù^rÀv�Ö$]–ç;¨ŸóCøs؈ÉÕÖ?^:®¾©(œÉàËwÕÄM2OBŠL:÷9¼biœJ@oÐí¿(!p¸;€%ý:L…aw„²üL¼±†O«C·Ú tÞ(RJ‘D§…‡’ø¥KPŠœD,‰Ž*m4Ḇ…ámøªÏ^ NÄ `<ý‡„²Ô•IRaZdL<�‹„^ÍË.]¦þY.ŸÏl·ÇP˜¶"\+wð}v9&5ôžTƒ9w½t\cãɦDm–©�â&Ðù¨¢‰Ûó˜¿�7d»[¹LvKÖëh˜™— ø }ézœdæ Ϻ)ŠGèêRà oò’ÌÝ ¸0½Wú^ª¯ôÙK�Ö ½Ò¾½bÌ>¯Lפöé3JlÜîFW…½O¾A¾°_‰Cã]Cz}q�»ûCOià¤.F"·ïùw[-à€` 8¢ÃæÐÏI@û¯$sYµœ$èå$iU¾¶U8´�Äß22k¼ »N<ºá¨¦û —O.Þd'ë¥$T&žLìÑq6*ÓО“½\Ö€'µ-jvx�±m;bŒ˜Ú§CÚ„© ÊÃaöT=¨÷øÙëIIsœ£¯¥Þ.šVÔéIœ8aÛDãèÔ™ån’0£ó‹’¨hpñ™¬ÅÀaï¡>£`1l!ÊÂF²TÜ465Áïß ~ÀÖ@ÈH�Ž…K²`Uô_fÌ^„w÷1Ÿ[ º¾A³ÕŸpPø莃ÄõŠ Bš0®Ü(²]KôŒcçR}¤û”¼“ºrØGŽ€}ï%‹œË>òøi/id<¢eá"ýD¢Žm*‡ÿç‚ëEà9‚">ÆmߥõC/»6Ø€döw¿¨áЛ$ØÉ£˜ìÑ$qË(^»:çî¼ö—m7GÝ•S¹dN[ý½œ½�)HTá–8'Ú?SÇCÛ´€Œà‰®<²]=<¥‡&áIQæ7¸l•Zè ‡HV:#�p�ã‘PÜ’o‘ÂÇ!$6Ú)/¢…±‰BÛ&¶œÈV‘–(*$¢=v*;J�q%ǵ��ãÛ�Çݯ-xñ:‘•÷Ö6áx&j—8voQ‚$íÖ’�ìßZqn—ÒÑvñ¡n_‰ökÉ�ƒž´§OÖ¨²ýVÂ,™*#¤8DÙ'nä„’í×ÐR¹’4¶â!QSˆöoè«dÊ •à�ìgž¸‰Iµ_KdñËaþû˜ˆê®“c²Ñx’È”ÔG¾k^š¼ô˜ä4DŽÝ3Ôý$ ¤©ûÉ´‰8á�í¹‘­å± JŒóÔDšŠöÐ¥ˆÕòîé¬D‚èœ6†à Í—Ý&,ù ÍŸçî!͗͞ñ†H›ö&£{cƒ&H€w“ã`Í›(Þ_¶74ö~Ñ5qfœœö�mŸ0GÞ]žƒÙ@âlùm2¾ÁæÍ!ò%Hž“R¾Ñ¥Ñ»Êr0;H˜P¿E¾7ØÀn©5ÙüGöXÀäÚvõ]“ëx’ÈäÚG¾kr�¼ô˜ä:DŽÝ“ëý$ $×ûÉ4‰8á�íÔ‘­åÇ JŒsÝDšŠöÖ¥ˆÕòîɵD‚èä:†à Í—\',ù ÍŸ\ï!͗͞\‡H›\'£{cƒ&H®w“ã`Í›(¹Þ_¶74ö~Ñ5qr�œö�mŸ0¹Þ]žƒÙ@âäúm2¾Á&×!ò%H®“R¾Ñ%×»Êr0;H˜\¿E¾7ØÀnÉ5þVŒË­ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß�[g¸¯ÜÞ'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß'®ß²+$z†„øYç@±4Wѵ­d#y¯sŠEK^®Ôðc)ü_zøäˆCßY<Áòoañ¯™¾â¨ÂÙv{�xv_†¿`ÉE –mºÈZ©DܘòË +Í�à+„{Äþ¸:[ªíC…GˆàyâID<|Í"<8Èû+wrp�Ü"B´ANOª ýÇ×CÐ"”Á€¿ÉQÖ¼�CÕU«á èïmD’«J4+ã¨.~ sØû°wÿo$^]؉GUáò –3Q,5pj'‡Êì*¨%µ0ªªõPz‹RbJ¤!z&Ö’ø›ï`'zò¤cêÚ0•·Ö©Ÿ*ü‘°B«6XØ”�\gñÝš�rï(Kº˜]=ªºàš8š½P•œ˜· {æ1ˆÀVg&=ÅÌwÒ–ÿtðسâ72p0zÀpÍåóµÀñXüaG¤hÇUl×ë8ø³¾j²Î„»vW2õ7’¥Ö €-[…'4¥|rn)Û6mþ6– w–£$7ún¥Ó'ô(Éä% ‡ ³wcê‡:soYÐM%X ªB±ð€¼ú”ZjŽÂIà¬â›ë‰O»KÜB>h°Y–À5†Ç h�þø=ŸÝ_¢äS@™i³ÀÅ®GVúJìi\1U†^,ÞkSb§ÑñŒ½±þ† ¾žrÌ ûÀΔ7¹^�p[ùÝúßþæ®4fuS=hT’è¦úÝ*(àÐ5ðkè�¬è�\¤¾Æ�¸@º²¦õÜPËóÛðòñßS*H<:S_Ò£�éeÅV½”–;Ž–?æÛ8� îëÕù»=ü÷E^³•$,£‡¨dü8§Œ�Æ@U¦Ø™1L�$Ðy P1G(AàC4�vl›DRý-õéñï׊îW ×ï  Y—7Ôlw£~á('˜¶çÑYM?�Jà§x${ùùj·Ý«Ö–£A ü|g!$í{ˆr#“6z)ÇX±wB/)‹;}+y�lŠ;Ô=ƼTª×Ì�CŸ‰å}–»Ió@"„µ) ­�®¡Ã/ñnØPr¹µC~gÉUz�&¾£Cþ÷›¿L„pÉ“ŸfÌ ˆP O¢û;‚Gv'a`–Fì*¡H ú N ÍB¯FggÙ@ðPäÜ%° Í:%ÌæS1ÙYŽÅqVÈ)ÌáúFr 53¤wE ñÅbUéW?³y|É¥9ªï§ÌJíO5|·º¢O%’·bÍ¡ãÊs ¢ø®)ÀÂQu@|ùq4žùäßà•#þ m\Ù1ñòs�ýÙ%×üµt!÷Õ ‡�sÎ�(Oç=B¯Ë#bA¾È à…ÆP±ñ©æm8T�Ð#¶ý5 �s�·¢Å\=r¢�Ÿl’†;âµ'�‹}x®™X±)ƒœ03QÊÁŸ€ëõ¿õÝ ×°»Óü—aHˆ?Ñ©ä`)?™ÜÛòï¨ºÃ¬í³”HÄöì1�/C¨rȽw ±CW ±gt7Ô`ÊW@À"¹"o¦_˜½'¸É1}\i«öUø# p^ ôªvá›Ïºñâ3ÐEߨšåŠ\%ÔOÜ™î›@‡Êº“�ðuF]TË¥ä¶:ÀqRwm/€¢©íOx*5Ð`dátFž;^¿Lõq!X p©@zRm¡D²•ƒée•¤“ f •þ=I2rü;4vÊ8æÂH†Ppþá(dá­ð1 ’ÿ˜*ÿ)ø1UÈ…Â>J$Ó5(X>Dódž™Áø|¾Å]�hï½t<0g0)rLÓøFS _Ç[ïÀŸ¨! èXo‡^Z-Z¯°‚ÂÝ[-YC fúª» »¨Ù5Mx§lt7ê�ëìf·èûT·±�×¶ê& Tªc”5dP-ÈU“Þ Ð¶š ½Uˆ±AJ¬%·VA¹IÌØ’rZÂei¸¸(0ó.k)ä¨+¤„Þ˜ÃB–],¥ŠüDMK=æ~ùöÍYØ#¦œ¦ù8…&Œ�=yà ÌùÆ�à¾k“óeø›=ª˜ïm �´ ²Þ)LkBGØKvßLTeèå ³pû “36¬¤R@IèJ$ÚÎ@ÆJÝĵÕHÉh¢é¥ßš« 5 Ÿ/•^ÇqY×À»(:XÿíåIn¨š»à)X}v»‹|Cù‹Hè�i»¾Úîâ¦æH³s–ÊÉ’JG]ÂáΆ°Ærö¯É×Ä) º�"téNR¦¸nºNÉ_)QÃã (!|:N>*rÐÍU(ƒb¥Ÿ«[\d0S�~fs‚J­¼;Ë/Ä8”A]�?1 P£¾M†)› H¬J6Çá\ð‹DÞ±›ÇzxíùRsЮӡtè0€ Ó[ÒÙ$|yúX7û@L ²2lsKÅþ�ÉP‰‘!‚Pޝ|f.ãCBo�PàÁh¶-+Z*þJwÔ{ Wµ´Á¸ŸeZ ëhú!¿Ôº7q ýª C_“áË#Äà°$½šwwä¯G?ýtôoÒ#*áшóé?­Ô>@ž~Êf�³Ž=Ȃ³(ƒq²¸Õ²t[ú±3pœŸŽàƒ7ÇèM�ôÏL# Vƒ=³“¼ ¿É~ÓŒ¡ºÞ��¸ë^´Þ´ÎÎäbÍÑÊt°ý„kÚNö›ekp¿è¾ ‘Qe¿�Š™ ¸q!Ìwo–Œ;£þ7Êå(Ž“A¶ψ1@g¿ü}K7-˜Âf¿áßX4gÙYŽºšêH íÄo+çü{Š lþ½7 Ë6Ƕ Ú«Þ~ãKÊ’±"³j”°OñÅÎ ‰IŒ“˜#š³ì7ð׺ ãâì7ò°·R½IÜì7Ù„î.:`“ë@,ö|8™pl"aò�l}sáH{šVdlu¬`r8Ñ tå+¹êöplÜè awÀ@c†¸b œ¢÷– gÁÀ'пûǸ­øÏÞLø|TŒûmçà W÷2¡,ô(ÙySÅlR¥Ä¡3À~ê—Eüí})é¾}‘<Ô$íȃÑTé{�¿Áæh§ûæÞg±Ùod…ò�l2‰³¹06pÎà  QÎ�*6Rú»»¢ÒG„ûø�—]QîÁßžË8–f*ŸÏ�7û«GŽAÄBÿì‰ÙÔˆÆÞ4žì`³“Æß;l!,·ðÃþŒLöTàï½YÀ¤ yØŸ‘­‚¦‚‡³ü“¯á9ºÊ ÎÒüëh(4cì|ú©Ñèõ>w­ÞѼÙh4>7Z§wŸísòRó^‚··äí Ó¿†¿ŽÀ_—·ôݨû¹s2nž2Ng/€¨óÔ8*á�Vã>Ã_ÁSãhÖd�*{ºdO×ìé–=ݳ'q=œ�R^ˆh«�[eï|m5:QÎðÛ£ ®C8f,hÄ£©'¤élœ®Z@Š®Ý�b\÷ŽÒM_37NµP`wÝyƬ9žI,n®3 êZYůüÚy4Nçè}Ï8�b+Ï@Ôöm®‰ÊÌ·ÀE€Á3�¥}�&t‹í[¡€Jʘ÷½-¡·[úÖôÌŒ º-X B�ú „¥�ï½uéÛ1U%zmû�è­ÑîLfJµÐ†M SŒÁI¹sý¹Ó©tn8ÿšbÇ85 25›“×àÂ�é sa€K,¶îÊúäËç^csòLŒ¼sZk}…ös ª-G™µŠ‚²òPò!(%ëC)”i‡¡X9ÊÂCÙ† ”<”zŠvÂPŒ9Šã¡¬CP J5eÜe(zWŽ2÷P–!(9¥‚’öPò]h9Ù“3€2îÞbÛúï^a ¨ºn ŠkÁXPêÂøz¾¼"Èe¾¹B8¹«3EkKú‚�ÏÄý½BVMŸ…û¸·3ì›+$¦Ke þ÷þþýýûûïþ¾±}ï/ÝÆQ�¸©ó¥ñýé¢ß¯ªO=Þóù.Ïóf’¹4æ�  \nŸÅ„æªð,¼~àß®é[œ]]åÐÛ%}»ñçmþP¤°§GôêðY�ÇøÄ G¡«,´—G9¬ú äî´àuú¹Sš*z?n>ƒÚwN `ú—UšÚyá’ôÛ€tí—E±�« ª]ž¾{*$Y×UIÔWéBG﹑땨 +êš_þøÎñ_øßRÅUûPµö3}6}FÉàdéö35…3ŒQõ´Ù©5¡J7H¥=w@u=kv*RÂÊ~}† µÇI¿!í7{�Už¼�*/¤–"7%G6 ô§~UøÓO>Ö•RzÖTBædâ*f‡œ9d�«h¿°QÅEµsþ¹s^ë\……øÐº Z_ª†9RƒE¹�¤ÿÊAØøu§°˜�n¾ãµ² ô¬©Ð}g|òÿ%ë³ÑúÌË‚1«Ä÷:Ô–´Ç¤1·$¾VüýègüžŽ-zaVàÅœsTI«zQ’KÙƒ3Š›yšu¯X§ùÎm×9}Äu+¢l²Îò�ëî�J5²èÈrGðû�Qej~�“�éÀè0]ÁYY5jU‚ÖõLcõ•q™gÙ¦ÑÄöEA-f_A‹ÜûÌý@K³�PYªºûîø œ¡Å£QõdÜb3@ÝtÁL ãŒ[ 1î©hÒEf3p'8óðö'(’'¯Ûà§î¤&çYŒṲ̈9èó4h\åI‹hèº[:ÀJ@3dÙ SÐm·€@ ºž¨q矠yp ­²(â³OdÏc¦x™…&�ì…M‡ìÓ~EÕ1›t} (´ÈaМ9TÄ ÞàÇc ªcoðS ‚ŸnП¿jƒŽ¤pÕâºh�׋ñÄáÜ�YX½]Ø1f¯N »Lášy¯8 J3!ÒLƒÒЫN›xÚì.®�¥×ˆX:käY³ë` VÄÀ%rÃL�¨%�!Ü0s†!דbÓlŠ>2-6×”-ø@þÖõ[6’d�v3ÏJhÆÍ¬ØD;4¶3ÎL s0ìvb@X{z ¦;·Ô¨nÆÅ&Í´o_1NíâœßR! Ô GÇ89„sëñ1=Xq:ÏÆª}‡ßó¾Â7ByÁйeÖbÝÁMRs³…â#HiˆãÐN´@\jëÙØÌQ»â{OšÏ|yŒn'Ïö<±¼D+b�¯ ù™%wBb»bñ(äÆPaäNÈCh�Æ,…!µ&ãt'$(�B~â½ÎûqB¹Ž0B³›@þ(³jÙÂ^ ›Gýþ´:Y�ù­îÙ³L��0«“ Äq|�‰^b–”øK¼�+q#ßoç-ÍÊ-H¾,ÜœS¼_s IÛ�f«µÝ&ÐǤ½À¿-›ÁÉüÆ—Ün»_2z2Süeƒ.ǸŽY¥!«çFþ$X´²P›!bƒû² œ-ôþ¥'M蹦“·²·¿° S:íµ¯é®Ã/cTlO_Òxöx^ko ¤«yk 㙽ôò’ó †0ìþ×Âj~_qU:< úïY+*î7gcq—+&î#·‚aÐ"žo†Ñ€ÊPš€òKÚTÄ ¾V–PŠÇ­ðTÀ€5�õ觸˖h«O«e Øêóë¦Õ�€ÓY�9ÃËxƒp¶k̵C�n7x^®)1‘ãe³F.L¥ê§ú…»(Û¬X²àõb"&Š�Ú~ê“y™ÁR`¹¥Ü½+ç2²Iziâ< ¼äf…ºìeW:‘pI²×F¿†´¤”7TK^ · ¨kPÇrw:¬þ]ùfÝg±.�ae ‹lYÅù¡v±¹¶6tò­r#A9ºTmÃÍ•þʈ™”F¾5€Eå[:d“ņÑí„L‘:<©Õ€ÇU{á��aiƒk±¡jà8{j¸—(ä–™ («ƒ¢Û¼¢¿{ÍÜå¼¼ÿ�¨—¼›½‡ª±6­K\WÜ«Í ôšA–™qºÙpOæPÍ‹bk õS_ÓZÌÛ2}’Òk\çuÐ8ˆ¿±3 nc–u®âÙ&R´6ncEs@ÀÓh)„BMkÒFF×ác™Y6g“öÄÚB¹:§9è¾§¤ý§é‚•=Ø†Âæ–•ÀV¦O‚°�Ù,Ga5[K`Zʬ@a&�Õ%°�½jAXŽÀ, ¬B`KV¢°ñë,/�ͬ*�96y Â6fH`%s%°4�m=X…µiÛ²6'°¬¶"0}„Ìö`5Ö~¶–À4 ʘI`u lA`¯z–#°ê´ÝãÒ?`ÕéiGU£-‰ªtkOÃë›^–Õ`ŸÉ^Û(:.=> �OÁ£0½Çœ÷8§| ˆÏ Ê|ñlÞîðhΙŒ¸ä4÷f48Ϧ˜åv†X:Ðù=Š…Çg,­¢Æß–?ãp=“Ö(�Šß4u„à5\`Rê-×´Ó¤›øÜké½”sá…LÔd�b37kŸ�é‡\s‹bÖU±C{ÊÎõË ÉênVðk³ꧤ€<Œ��ƚ໤{ÆóÍʤMg5JͪÙž€$N}\’Õ¢ÞÕºsvd~EÀâxA ,Èk7^�VHÕ‚Æx1n7¤ Ñ ,/êv"²299–¯IR ¬_å ¦è)¤h$PÈœäõ5©B &VÈÒF )µ…°Ä%mbyq€ŽRˆ3çä°u¦�‚TŽ•ccá\]®��Î)dk…+dN2ãÉN™Bâ™CA*ÍêR|1AÊ^òœ,M=«BÐ\Œ¶žE÷º´šŸ»%ó7,wÉWFÅÓÿÊc9‹È,q€èÈ8poWR„…4��y¸%ïq#åÀáΤ*àC‡ ­fZú–#3Û2\¹JæÙ´#CàÕÇ…�i§œ Û©Ö\¢FþªtŽÖþdAhÃém'øyZç©|#pæ´fJß®Øh`ù�[Õu›dõóVëγ¼¶¦›6œh·Ê ¨4n` ÓšoÚ:9Ð m0hÚZ»ÈÅð@äµà¥Þ/ÛyµÝöÃg:åeÑ[ ~D:méA�I@Y‡‚ÈGÛzK# ¢ƒ¿OEÅÕ[T\aÙ6ZÀZù fTh�Ä»@”IA•­�WµŠ˜¥ÊrÇ’@š°Ô7´d˜Ñ27ð“ÖY«¾¦5ç·íP¬1ú<ØäZjÜlT›`Ô`µ Ûö„- /µY­Ík¶ é £¦ÜõÂHË$hVž2~Çiµœ<ÆZ$X3Š•+`¬e�)åµ*àÀõZd�kÌÅ./iËTÌ9!¹þf,u .³áR—Kñ6oáCsŽ„æ«¡<Û“‡Ð¹4 ä¸‚ذ4oåK°G}m~ß©¤E—T%%9)© K›ˆyX•·%âÔÌŠ_#À„ÁœÖkªÞt€©Î¤Ý­CÅ1Iµ‚IÀ?|_çpÔMÏ8¼·\šÎé·&Eà’÷ ¹„Ê_´Ö¨|£ §9_)I]¡ U‘)-I“Z:×ç¨*6%, PÅ%ÉÂ~¢pƒ2Gªî‘K�Xç”±(v‹’nþa¢Ì*X”2eólj2®bQô*¶ˆYl"°*�=$LrB0>9ÄgÕÒ³0 wk‹ž-íWRãÍMƹGÎåx‹æò9iÿáHKã‚SãÌ‚sê(xoi+©�òîLŽ»’š-¸j–h;ÔêhìÕrÇ ‡ïØÍ\¶è –Æ�dM:^¶Aë–3éÜ¡öC À8ñÑ~hÂK¹&¢,þ8QjT¤M ysÜA°åÜf‡ïÀ¸Ö“�Ü6¬gBŒ6­É+dôuv/Íú×·4Eö3 ø«øÆK‡®óú¨É¼°5ZBÅCK6BM^D‡!¬¤sa!E˜1#Õ°:¶S‰›˜kåux‘‹òN½ò–åÌ„ Ö¤ ´’2«y}øÆï•pºõKõ:ÃR¥[?‚Tã)–jM¤ZýRÕˆTY6¯ÛÔšlÚ^'moD¹�Oe"sÁ‘KÚ¹!7zS›*¡B ­¢õ´l¦Û‚ä9i…åŠ$þ¿hfY:Ö(¶L«s Ð-Ð–Í hòégù#'Á&Ð< xNXÔòœ¹Å¦ÚŠ­�Þ9�䉛ß]‚ù K Ï±óï*A­íH XcŽ›9×l„Äë@¾/Æë±ÕA# ÃíH–8bù¤K™„OÞãÃõbs��§ôÄà‚Hû³ö9:ÒçáQ¹ë b~á´|ã3´4*Õl—mXê‰TÀzá2�7n½vdmdµëÁrýú¤ïW×ßF3·QÖñÓh„¦ìȬѤZÝ,p¡Íg�sŠVÑ|ÖȸiKˆf¶ $褗„z-Ýj� ‘Nˆ¦Iˆæ„è•Á‹'ˆhOÕÎ-q- —ë üÍ»*·ª‹ZuÒºc)î¸eŠMœöRJ yǼ�…¥|C :½">¹Bx|ãåV¸ñìÕ 9S‹sØnr;H¶"d…9¦¶!–FðÂ<Ó!x´¨0×,¼úáaÅrÓŽ$ÐZv›%-v{Œ¨æííV²óÚ» È7˘ˆ|Ðk‘æí"%zöCȉJ„¨J‰.M·˜(K‰: ˆVˆÈiסÆ:˦¾eó€Q¨¶Â7A¥¾¶†�øU*¶|a®!ñ¢½ÌCb¤º~c—–³xCH²9Lâ´;ñÓ,%K#êUÛ* HݚéëM7 ÷�´@‚æç¨ ÜÏÆ€+Ü´ók É7‚Ûvi�AîšÆO�‚VkèM›¶å£â¿俈ß.Z2„ÀÔÆ |ch·¬–0¢–òº´ßfªî1�/ܳ٣yªDyEš,µ â‡Êcªž TÔ��ô$†ûÚ8d!3‡Ul¬ÅŽhÛžåëkDØÜ€™–E† A*�Œ $_¢üCx3‰útù#ø4n~�í8iÞCÁfíò9°§Kæ ˜¥ÍXÞ“Â% ±ä™@181HµDgï£gJmœ×ß�LD¾ïsøm{JpêEjµT9%l´U"P§‹§Ìp(¤F EÒñ>èÞ¶+Ǫzò�‘ÒŸà9Mø¬�gЯà¨ÄÚÉX ¬àŠ+~Û¨H¾âWo‰@¶•põκâWoŽ@–•põnŽ]ñ+hQ!•¯ÕË ƒà ‡Bæ¢W‚ê¥%˜§X÷äëC›@ë¦vt;B¶=mßÈý�ÍjUáê~å¯ê¤šu¿òbÕýÊwĨ‡+Npôº_ù&�¼ÖÕ?#8Ùš_ùZ«¦^ Wþ˜àTk~å§kÄêkáʯÕðÔŽ;éŠS;xHìmW1%©á†¾,âx¨w;Aj8,&x.Á[†àié¼�YcÂÔI|,y�¶è¿"|Š®GfËé%‚–õиžëЏYŽÀvE8vÏb>î+ãÃ¥+Ü ·þ?‹{Ëí6ÈŽ+Î=rSÒGޝyÂk›"wQ]¶SV–m¬ìÁ¸5®4eQ!h]¦Vn:“KúVR¹Gnbcá½Õ<inÄCà’I~Ñ!NIc)®Ã©N:kYéÈÄá `|"+¸àÏmá*†•˜k¿êð~1·å´Â&…wÑbBÕ¡90\þ–”? -_“–??‘=®—?›âò³¤|8¤õv²`™*‡n †§ÝÆ«d椽Aõž¶'³®ova:ë¢Hi[² Âåörå,‘³entÀ²Ç’Žý'ëÄæ¶Ó¦ÏL“šbìx‰‹òïåØG&¹.³ê•ɧé,é%h¯¶9<4n)Œß7ï�¦þx—p1Ji)m™”\CÞÂlØÄĆãÉN;¥‚ÚEZIJFÐ!À<šg»\z�– l²’Ùç‹Ü†|‡Àó¡m:�{¥�_Á@Øx¦§sVÛÚ ‡²²W.´Ø$B1¨µ_WP3ydÜ|´¡ÕÐ\o‚7÷á•Zr¼�KòŒµçÊœ½1í´É†¡ÅžÙø$ºÍòI·ÝMWø^³‘m¯6dCÐg~Q4Û^XvE{ 0’¿8‡ gÝ}‚ ƒq$…eÛsB¥{¹•`™kÜ6 ‡?­ Öµ¶¼š‰ÓÎcï‘»5gO2îæºŠ÷¶â½åzΩ÷–;n›cÆÌ©?öȸ9Aîz¡YGFVâÄá¦æ=\nŠëéÍNŒJ™ œ�÷Èé·ë¤SX�Þ¯ÀŒ1y²E›»¸@7Ѱ¼ºm¼Gnç6'/-‡!qr ÌQ_v…ÍW“޹ìÞAH~Ao¥]x\W”¾´`H°ÈA�´¦ Ôn“(y�Ü1›5ï‘î)`.Y 9?ÀÚ,w¼C7p§-À_|›á«^cR¤Bºß–ºäèaΨ¦mÙ£é=r63–ºIˆ¾JÝ\ 9ísÀÞÃSˆï—¸xïÄ�8–~¿â¼˜{$#¹/ \¼í/~�‹wÊK¤¢®p©ešê¨´„:zÌV¨ýÈ…œJåõßþñ¤U¡ÑqÜâ1ȧdA73ë_÷‚,¿†�;᎞šŠ)êµn�\eȾ™_½o=Ð$¹XEvw}×=ÞÒÚïƒáHkö,iÿ!·”ð½ ®-;ܸå&RÂA›¦úPâwW$¸Ù ÄyS�œÁ²Ö�8b ódì?R¬pz/XhÒè¥J”ê=•üÉïL's¯¶¾ðìEz2iÒ†¾•¸eVZɈ»hq5"6˜À+®$±Î  ‹;�=ó²3#¼&�-èöxͳbJð²k¡á¸( �4‚TgHäÜÉÎØ#ï*î´=ú;BO]Óc€@U ti+½ÆXe†Å™ §5‚U„XŸqØ�S`…ó2Iå­Eݵä‘ÞR¾ž*Ö ÄZ³˜»zk- ¯™Нÿ…6K˜è° ìž�R ê¶"‰Ðïf*u"¡�õÃù–$ÛÖ¿‚T:Ýž}=áÝÀãäß{àO˜D+"í’—hÓ ªªÁ+ëêŒö| �Ç“v\.{PÕñ4%çÑub ©Å!�ïÅë ãÿàD‹™RÑ[.O£ LJíÒ << „ÆbW‡'ÐW×IÀCê5À¡@8¬Ê˜ƒ‘ÛQ„Ê‹†TªÝWtIaf¨˜Ã,�8€Ž Mu(àEš§´è‹Ò†††’&†’“�Ž/EæÆ… ÚÌ ­Îh¹„·&}d´f€– F8‚WF yXÜè’—pɦã=n¤ÞFƒêÌ+F¼<�î˜ê¹Ô Úeë¼%¡¶™Cv¿G¾ �y°+F÷¶µÓ6·ÇR;=|@Ýg½‹îe*c´¤çR»†�€.ß%¾XW®Ó¡žÿÎqØÏ§±+Wë¢.|rÒp”&ɳ‡î»OŠÃÔ‹A==Mk ½r>Â.¡a—èÙiVOès&›ÔctÖlªgRè¾4Æv è6„Î!lë[Xꊀ7üšåeÊ�p¤(¤q¤°²ŒóÆàƒº¦©ŽU_ƒÃZ—EÁýi�pñ@¶]7Q§_7O‚çËûŒk 5ÒüE,¼ŸžMp�è™Äÿ¦Â#ä-#£mŸ#T.«+7–a¼Wkä½¢¼ío‡PXEÂ&—LRÏ‘½cÝÓ—f7*yáƒóîÂJ¸\‰Ã[nF%ö(;SnÓàÑÊu–~Pk®ÿ‰ .@!ù:�Ø �\ÂFõµ' ž�ôkïN ürQÈfÿ -ÍøL‘O™¡Ï|ö*`×0v‘asÄÁ­QÁ(n R+ °@z “Ôÿ°-6˜ƒÅ8xÈ8Â5†q+Ä7öÕ0¼Â¥Sgdj¤1Ç|=‡…Cùêš èFcŒI½÷d¢…ª À9`�Zš†-M“ØŽ*«…ÄZkŒÇ-_@‰‹ @æY?`,�dõ†¢oß"d ¹ö)£ÑÈaÀ’¨� pe�-r…Ñí@ °@‘±á†Eþ{�£0�^SñÕ!#û–”÷@61g]ó; f2 Õd'£òOD6´0äNÿñ’k7`¹ˆ®Wu{,Ç8+œÃÖe“EÏË0Îr¸Á@ج[kUÏáEª¦Û *�ì9¼Hxîö^!±Áƒ¬ x“ðÆíÁSy9õlš‚~^yš2¢Iš z½D—¹.� ž:VÍ=mxôáI¯�»6¬Ò“Þ”1ö(œù·DÝzèEˆÎ¥\nÛ¨œ¼‡C­¤@?9æÂ¨NË4\Õp?ýã׿k3Ë´ÝÔOŠeew£«Nv`Îf¦‘]*¶¦ôÁ‹Ÿ>ÿÓø§Ñ7‡›Ô¿ÿi¤ÀŸl6õUµÍ4RŠ­¦–š£Ä”¹TíÔÐ6­¡¹2Rº �ÊGL÷³»v[–b¨:%' áŸmF3†êúS*—ú,•b¸Ÿ1ü7B?À‚CùÍ¥qô–2jÆ8ãšÖ§T!g­=Úß`޵b%—õÄ$e€^¹JßIý-5Ô–ào…ç=0uÓþ”úe¢*CÕΠ_?{à?šÀº�‡‘9X8¥ ÓP9œßøÊüzôm¸_�³¸&¿dî¥nê{7Ôluà*Ùfø ¨úЮã=fF@Ë¿~T+†áˆg æ'¾>¦v„ÿ ":W&¦g܉:SqIå/¼úúæ:ãh[аŸÀ³ Õ^‰f!kªŸ‹ÅªÒ¯rŒÒ0a¤ÖÂý”Y©ý©æf”… FbºÎs§0$ÖD†íþäs9`s©ÕDsUÀÈQ] ï£TẦq”rT´Å’ z_T|f¤Ì4}ó)õëµ¥©{Åp~TàŸŒ´6 ¸#ÚR?�â&�êÀa2UO\?ø7ªz]é«z@”!2L{¦èË™b�5 I¨)îõPs,]ÙÀRP¡#]õµ MUq�Ô%±�Ô1°†Ì@ÑUc¨À&n2m8T� ’és ZÏ^€X£9©™ b�c©m¤ R&°"{¥9ê1W•®|M™ÐÐ,‚ˆ¯nN¬Œe:¶([Õ�m-©U?c æñ'òê¼(k i\‚(´X¾†"†8Àå�•,Kpe0ÛæÂfˆŒmeãoäIž§Á•ºv9óê†IÑÅ2 ¦>++ƒj-¥Ï‹ºe)ü"÷¿õ]#`x¸�|I(Ä\¸P1Ìù0 vYCæÝ54°"AfÃAû¨àöøÞÝX&P¨5Ù”Œà©ÿü‰µæ?úA,ú·×ì¿Fñ%ô¤æé]‘×?ûæÚÀ:‚•Â`Ð÷bsÊ 4fuAõÅ®ø¾¨AôUø#ÖVc‚Mf¤©ºÐ˜¬†(š#pfd‰¹@„õþ&aæ••q}g`k–ÆVˆR;"^æÎôcÛÕSN}2L÷ƒ;ùͨë�j¹bä�Ý2 ºËç¨ŽŠ®�ah�• ¸Í@1–Š�nð1§œjŒ?�ÐGè×@k¢ÿs){ÜW>äŽRä¿ãBéãêöäà|á£ÀõÛ(½ü”rL`AèJº1þˆ6SÆj§®ŸPP±xŦ—rCu|„(”ËG)ï/ åÇ0Hþcªü§àG�=†Â$õ"òé/ϧ…dž™ÁHÁ€ßŒÈß16&&> Û��j™H’m_dYLŽÓ4¾�Ôc†2sYÞTïÀi NX�œðwP£ÌQ�Ñf@&4s>¥`÷Ÿ=0W‘×…ãj£M†äóŸ`‡6P3}Õ]©ª(ú©kšº«YIò$y_•χ÷U�ÌÓaƒ Úª;˜p`¾áQ˜Aµò7=�e«Hb# œ@ð”Uþ™)kê7˜}J³–ßxnK<î e¢aXȉÑC*:tF¿ù²(ó ºÐ‡b)U,Àÿ²©zîO#¬Ù‹íD¸cî—oßœ…=ò©ó3€ÈÚ&[³(#‰(‚·•Ø2b­'¼ ¿Å—nXqF•Ì ?è×J.ÌûCÀþ@Z-P‡™þøoæËE`Qì/8„…x [q¢ñJ�ÎeF‘³WŽ3°M]g”‹ý\µp®0ƒ2P9?�òðB\ÈTÕFõQK†+ÍÕú¨¢ª<¿ª|m(˾B9)ð‡^ ßá”Ä/Š"ŒVˆ¸\«ÂTåÕ¶MO•£A üxïa›At¥Zª"Õ;‹Á莔ŠJ®TeÕ…z*€?ìÝpÞUòð‡½s5Ž~.©åJ¥ _÷]#ÃêGFó?«5øƒr–_†­(JCát •öõhFG©‡ õ“pE¤ÒÏÕpâøËJ± 8ÞÙ yøy0zÂs7 šUÅ–�V5Hý™Ž‡ªšW˜]•ƒ½E†v!ŸP2ËÔÿ Õ‘²ÐÝÏ~Ô‰ik[è‹9_q=ápb‚h>ÑŽ¦äcÌeÎ"bþ¸T¨•«ùR¡îÀÞ¯�ËæKH$�C¡å"d­!à4š¯&1 Ùp8 ##î$#Ž"#3¬¤! ÉÂF°’ÉÈr&RB„×ì:<«ÅŠ (Ò0á)ÈU¡¼ŸøÒãÀ’6^lÌþ%u¢­UŒçíÎRx <õ—,Yñ>ž™C�>À| ®lÓŽÀ]p—O0ò’Þ�§þ\¢. !ÞÑG“/aô…óúI#è¯þµ¶RžÇK)øíŸ�G —‘-V¢œ‹H@‡S e‡L¦rÙ`BTšªA ™pö…jïH‡aŒl `]=¯qK_›`}:T¹o�%¡”é1ßàØP¾Ú[ ŒÕ<“ûzžj¡sÀà¤ÚN`g Š’Š Èoƪ›PDÔ¯¦þ–rù͸üR¹�5-Üæê$c$ø.fÆßàæ "k[œz£G$oÏ âÐÐWOîWñ’ %Q;Þ VZæ«Çe‡l‹�Éê7Ò?àšd9£äµ‘Ê Uê›dàržDZõ=zv\ט¨ùS¤r€�&ßðódzŽóÍ?�:d7À1Zƒþ 2FžÃ~Û\üUD¹Ã?Ü�¥þöâæ¿¤Ë·^¤bO‚/�Û®. ýñ�ˆÛ9Ceã÷>€@Ì-Î ûW`A ]›in ´ $~( ùwRJʲM ôÌÀ-È  …$qWD¹G‘ÿö»\kÄB㸌GJYÿ(3wÖ»ðk>ÈÁ�nú Ý£Ñ<¥¸ÀkUBdD'�|»Aè8ú£(#Ð+u㢆¦ñ+Òâ)uÐ5†ðd²Ü• ¬á:QÛ7xÀ`†À™…Ep�e´&¶9SýEþ ɱb½£D·|�kpH^T˜FLUÿ&šV˜$úX ¿À^͸†W„nQ:Â+A˜y¤y<Ìi>ÀM þþå7Ÿ,Þ¯‘˜„ÕžÄû›¸ªâM~p$˜=öÊ-üý=ÇA×o gL¸9ÖÀD}’½^Ÿ÷Õô(uLÆzÒ’C׿àiï(G tÒ…èÈTŽu0}í7館¸£3¼¦¨]Ñø?ªYòÑyÛ:ƒ6æ�ÔS¨S÷-5F–;æs ¢-”ZYÀ_‚ËhoÛdnb‚ 1òYß{ÿŽ»UñÃ/tÅ¡N{ñ_¸ÉÀ|‘mûÅqUÐØEoXó÷ÕD‹9¤þÏ_9JAð¿Ãù~%õ�[iüùߘê7‚«ðe èƒ^*çsÅ�%Ø­ ‘'�%ö·4Æ«dµV÷‰!dbvƒ&EaÞÐY‚´¥€h“lj\Q% ‹ƒ6_“™V�/€7pÒÓ¥#¥�lö\?ã~^36µ‘täü¶¢·€ËælHA¶á ¤`£…�×'ŠÓ°¬ä~Qf–jó…üôû ÛHîäüÿÏG©üGøê¯ù•ø×P‰æ=ÞÔ¼æ˜pt3ü•<ÿ>ÓÖ ‚ ²~‘b�’¿\·¯?‘]¤›MéH7õ Ô4ÜQ s��¥€Ï8$eX»H &r*ÊáRÿü‰¯ß?‚“û¬ãèUP‰*ø33…c`~@¤ßRNýûï$'ù ©÷·ÔßUÝ[CDø@É>JèÄJët4Ézi¨ðö£HÈÓÀ�kAð6š†.¯|ø°?Jý^�¿—оP?úø!©@À¿¿}"8X|>™@(à_%¤P0`9ßXÕ‡_³!(tPh¶à_l£à&&aâBX $„”“…HÈSA4�ñ� �½ÿÃ.2ÊëŠÅÔ6Tœ¥É›ˆoPû(ů-³ö /¯A'.ƒ°J /ƒD (’pÚ]“BÂ_MýˆEÐXe ˆ;C‹¥†“”=aÇ.¡N0›X?£‚Çhfžê¯Ô¡e¥`¹c ‰� ¡þ/¬_Àz~»Û0¿ ÷pÒ�%ò=…Ih;öÛ¯"±¤ŸŽ~… N–½íiBöü“øùÝÆïØƒO©…­øi¨¸Ê'P®N¦æ²k¼%eŽFŸÅvT÷¯ w”©}†KM•ÒÑ0WïÞ�ð;¼F£y;n4ôØ»�·�ˆ?ÍÓ‡üWø!`þÕhCºæC¯çèê´þåbÛ¿ŸÀ•1›“—ÓáC­û\ÈOà—��gø¶­Ã¿”››¯óüW£ªÏÀï­>|i=vƒÆewðrþ8ÑŸ~³ƒø]Œ!ÂóãdZ^*] ÎTÊ üë¬1n6O†fÿé®~½{Àuƒ¬Ÿuøxw½|†§Š6O¦ôòë”Ý»™²é?ž” |�>â7Bºhtò�^}ñü˜‡òÞåÑ™º]�\�Íå 廄G!4O�$'ù»ËGõlýú 4ü|ÝÔ.»­Õs¡¹Œ.ÏžÕöÅýýöì¹ÜÔž»](tíÒrÖgÛËúô¹Ó^�oÎ�ç¦ÕÖš³qiÜ¢W›ãá—^¿jÍñËcsüÜ}ªÜnn«½Ñíëyíåµ9.w!Ëí¥ÛoµÆí/O' åôµ´}ýª7ŠÍñãÝø¥Ð»ÌõJcøñpî¬UÔÕáéKÚ¿ótWÙž¾¾l«Ëy¶fõ{úyúAï*æóåÅ«õ¼~¾ÖW/ =š¹ÆÓ¼Úº¼x8Í1Õ�½Í¿èËÙËsy|=zy(ÞŽzör¸.Ù¯£i]¿è~É—”ÚsîúæÆ¼©ŸµÇË»ëÙöLÛ>_Îίî…êÕd[ºÔÎ.×ê¢xñ žg³‹á<}ZWÚç›b~ù |uÊÙRe’Ÿ¿T¿\žäzÝ^,nº]ûæáfѽ~m?˜ª±ÈÕ&·�õ›‘ÕïN¾Œ×ye>ÞÞ–sýŠsv«—”Ê¥{Ÿ7K—ÃÇ…y�»vÓ60ÞtW}½xp*'j˜ä¼=l/ï–óU¾5š,ÍM¾ûÚyª^ž?ж›%ãìë³ú¸䋳ÑUõj[T�êb{¹]lÏnžŸ«·Å‹³'µTÞܲ�»?Ëw¦Cëbõ`=ÜŸ¿ §�ë¯ÍEI»».5¬Âó½Þ_*×ý†ê6½Ûvëêäôëd}Ûž÷—ys©�*�ÚSóÎ.µ7C·u~éj¯/]­¤Ù£YúÑêhg-k>,©7ÅåÈ­—Óµ«Ò}{|—Í�ŸG«N»£Ý¯WãÖÙ]¯;¾6[¥imf>,îNó�›úXÝØgÊi©¾¹ŸÌO³=ûâ~2º»½6݇õ¸~n~mß›£êªºí»'gÙ¯¯E³8È^å-«úÚ¼:UÜÑCy{Ú)̯zƒRùì©­tž¯'êíËí­QjÞ�OÔî°¥œ<Ü+¥‹›³ú]§õ¥p­(µéëxyÿ8QæÍ†þtS;1sçV®·«Æêá¢Öµîk—ëÍ�{¹)Ù”îZ§­Aïqxòðe�ï¿(îàªQürÑ»ÜÔ[ÝÙC÷ùy­_}UÝAy²¸Ûí¹1iÔê'ãÛ†«”+faüΛۓts8lêåžk<œÞµò—‹Ù°g öÅå£s½yì;¯ÅÛ§yÓÙ<‚n²¹œŒ¬¶ÛŸ.K7wÅõ }¦ÕÁKÞxT_4M©iN®”k-î¿ZãëŽ1½nž)ç�áY}ÛÑn·ÓÛõ¦w?½]Õ×—ÿŸ·ï`vÔØü+ª±×3ótïE $¤q=ïJB9çðæÕ˜,$ˆ äšï·o7I qÇã]Teß�îÓù¤>aŸ»Œm¦¾3êµö.w-4VËá¸#\èÑ�/JÝö&‘fBN”¹Í¾{á­ÑV«Ê“ìþÔÏwö`\dËùîšn3²9«�9­QÏ–ñv{¬)ö@ŸØ“.­iËÓ¼¸Z&Êe�Ïm‘––»zé2镨+­o%ŸÏ)­‰õo �?ÙbÛh µn{_•zÂLoX§Öi׫%¶µd†Ò©U!GE‘®¨Û=#ð²5:®§Ù1nHW©q4Oì˜Ó‰¾¶Ý]§7†:èË!S:ö«£K¾3�y€e–+L{²OÏnçÂídÕ°îi•íÐý¦{¤H2¹ÓkRR¾3�F¹,̸ƒxÂæõòì¤<¿2W9&—gÊ’x¶æXe±Û­×<=ìk±»—:�ý¾«åÃîü0žã•Ú^̼əxIéW‡¥¹bGºL7åž]“µlmue âB˜ÒZ9,Ç‹3a˜ëŽ%°6¶˜`[ö2ÕeÓÚ®ÛìRPO“úqS9‘…qc2>MÃkuˆ©âŽàÅâ|wSq­ÙTÄåÖžØlƒQJƒÛv· z–6­ÙÔ^Êó'{K‰bq'('2·.¬w9~mL IXغ2' ¥ÍòRX½Ýn^Yö¤M¨Aw«ýÝ….Èôi=ZZ¹VEîprßlmû};kôbÜÅ”N£T-SS­¹ ú’BnèÆu·¬7ÇC»jÓk‚f¶ƒ�RŸ‘—²Òiêó"ÙàƒÜ¸yÅÇ5S#&a*qƒ.ï×¶±½aó&¯j3ªVÄ[Qh±{'wÙ9·2s½|‡Z‡Yó2m4=ùTjô:í¾V<ާóÉmOì;ÆÈ*wE½œgoÃ.íÞÁ¼‰ƒ¹fe¡!JM¥Ò›´ÎƤEªõréPm–ŒÛ®]] ô¡aZË~2¾­]Ûãõ†é*4ÉL¤Òy¨•¹l³I•ZÚÖÊnrr³z´;ÓKCßM6·’¢v•ªâGA èÓU¤šÔPlhR‹­-+m ZÇN¯º¹x£[ÇV£3‘SêŸÏ�.�SÛájÜ>N[³jSoÛ9¶ZiÔöã†:?ÈØµ¸éóY\!‡¹öFÄÅÎ`ÞhÔ´lvÂÅe‰dG­†Ø+¬q¹ÑJýVI�´áœÙ™[+ƒk‰l6õmoÞËÚÛÂÀª®ð©V[ûñ ËM²½µQ¯ Å(Z¹ò™‘‰Óe�ʰUÇ&Ò¸MÌHœhŒ¦;®Ú<Ókó:ÌŽ KÅ\•w×k‹ÖJ&X btngÓí¼nñÃÎhT(­®‚Ø:^G*«ëÌò’µ'l©Z”N s³ØÅIÌ*-•“4)·bÌú¢æëºDnz§ÎFê–¢+¥…gG7…¨~±Ð¿² X]A%–‡º”Ÿä»ÝYo´Ãóë“(¶©þþ¶Âöíí$˶g–íVF¯¸¬SË­ØÓ,bÎ3»R³ûõ°›ÎÍ{-œ2®j—[sTûFÝrgeC•ªÍ †·;ÝEóª�s¤8nSòž*Ô.Õ VYvŽÇœ¥-ôÝf:\ã á4(^¶|ÏÎV”z³z9qRS×lžÔèâP\åœæ‰)w«`“ܶ^ë{â¸@ÄñXÚ°½lI�ã�ÖÎ7³Ev=ÐðÝ,ÛZ0l·0ϳ|¿J×jt§²¼²–vd¸Ž1Ü7%"ûc~•ÝnùIeƒ¯¦]}2®oí±:¥nåb�µ]m¿ºe¯ …Óº<·)g×jÁ¬ôÅOd–˜VYœ®y]莭ÒûëI[w»diØ­vÇ‚Ù$ê3S¥M#»˜m»Z¬l&-Uœž'¼hj»sst³š«S-Ÿ]µë-·¢Åe³²V�ëÃËIašSê–"Ùû˾S^oj·ý,ËtÔ ´³>Ȱ%˜‚ÙSãma'ðø x”%GË›jzÙ°Y¶�m´s�¯4süheí9»Ëõ�˜);yN•´ÍDÖ5¡Õ™îêIës½a­Î+Ö®7`–T¹|¦�Óþ¢KŸËB³Š›G];iX‹2…¼ŠWÇ—ÚøF`Y_gGSrÁ‰¶6"[T±>â´u¡»l%{deªb ËJKm]:à UW{ F—NçRé×û)¿2ú[šÕæ»ÝQÎjühÙÌO{Dz´ÜNë-¹9Ëj­¡¹Þ»^§�?äÛ=ó*Ù7\OO‡N…š{,ޝ4©ĬÌõË¥Ô•êmS”V2CdÕ¾r*®óY‘?j�÷ùU¿º „íD¨­–ýBµ]ÕTu…µ'L‡ïÕ×B[.Mn¤.ãGê¼î^NR½ÚoØ‹¹±©ÊÒ¸_",ÆR§ÖE­áµ|¹/A‹—áˆäجÀ–ú¾BTJ{³{Ó³¹[ý]-§Y"fïíöFšg�$¿ÚIøŸqëªo…½X–ÔŽÖ£�Ólx›çMª_P‡§Åð¦áب¦5÷ÇÖÞ]‹ÃÝ”ö˜¶Þµ¥M§Ä †)íÄM«DߪýÍÍë•Ö6·–ëZµ²È-ç»ÛkZÉ’rç¼ê�¯#j«_óذ÷×ëÊX7…CÃ^¯n#Ná‹·ìDœe >»¼öly6Ðç g®¶0 Wž'øËµP¦vÂͦ:=ßVèîî0ÇÇs³»•Q�Ì7‡y«N7*˜<ú,Ðùf©Ö¢ç3"?‚Ni²³z¦=Ùì­ÛioP4Çg'«‘ÕÉ©)Åò£95Ýç³ä£ìJ9ÏW³›Ëxž+ FFµ8^�ZYjœˆ¸ÍT$KÍ®jô¥‹ãyB,Z<¾!š›9k‘Ê`ÖÆÔËVÚNn—Ψm]*Ö¨¾¸°Ù¥¶®V$¼:â‰úc�ºE•, ˆaݱ·–ñQŽÑ‡¦=ºìhâÂ¥ªn™™“H«V7„c‘8˜‡IûÚíÏU†–çí¼ S“Ù#’îÖ.Æq†ñ�.·œœ¹Um¿l«D‡2ñª˜ëŠby5´²²väŽ'�ÌMËÍÚ±ië£Ý^Ž�vÁž�.Yý~§7ÚlzµÁ¨¼f§“gLJ›]Ø 'B»uÜØœ(¼XVª*^Ðí�];­ö~½_oùæ…ÎΊ’)¶ÕÖúÔ$Fµ/íËaØ,g±Qc ê½ Ù/sS¾ÕÇ© ½jp•N«/*9�T&Û¥®lG#’ÔuòØ¢Uî°î4Õ�Me óȲV.ì;ÖzÙZmœX�‡'–knZl›”Ûj½uWË͆ZÁäú‰XlšÛù‚Η-lXYh¿·Wz¶>ÂG ìGü•,‡Ê’Û—;*_°Ím °I®4Âe®+,GŠ\,a§£µ¼­Í3q*U°ÅâÜÜTÏ•RyÙí³©ØœeeЪt4ro�k¼´˜È»¥pb¤át(êCaHw'–vjn±ÖuN+v£hΧ—¹:ÃVù®y³‹ê~>©ŽÄC�R%̶�#ÎYQ?–rÛù­UåZdaAžèŽyFËÆeBæ}Z¹¥þ¾,°ØùШå±â€ÎíçÓRno,` †çj¹[Þ®ÚWb-teI km0:ÀB—‰½&šú¹,à¸ö�ò숟ÚÍ7ïφÇ>µãn]0»=Ÿê‚ØôØ-.³•/`Sk7™Yf, Wdr#òy c3pl‘-×êrµÈ O»QÙZbÖMvÍéMÜË9ãÔœš¿C»ÝèIIç•)#2bÙ¹(êy»àñ»$mcY?Ö‡»=f«Ý݈¯ÅkËÈOw¬º1úMCÅw¸žåL&KéC›®bçÑHwT«úÔ -Ê'¢À±7"QÈæf[i7Ù~"ÚÃ6Â÷ëe½rNäõ¸Û®löý>-!õ›õJe²¦û}µrîË•š5®Tëʪ}[2·& jµ²mJëljt¥Z9T膧û¾VFdµ/5ΕY5*­ReKÖ •~®BŒé³4V›íº MÍêhÝèTÇêFk\+ëCU•š§ GT±J{X‘ÛµÞ¸ Ål�9w7•ã²v÷:ÛÕ/6Ò¦Y•æÍ�¶9T•J¥~h×µ±Ä41¢’­œ+Yj5`Å =`ÌN¥Ñ^Œ°š‰Ï+GeÅî×ÝÖd6�«�rëœ�ïsdn.Ok›Á¤TÉÛ-¢6ÚOW⦒�¬1=/ìjµ�Z vjžîpU®]> ´dÑy f(Ú ß£‹…+«ÏÙmCÜnìs‰ÛõQyÆÊ½uîe󻊺ãIcaG«s{PÞa]þºÇä×>•ÚÖ¬¯²õ¡°-Öm|[-ë@P) .…AuDâƒÜ¼Ü''›¢YÊÊ5¬YZtVg6ã3Q=³æ×–ù}¹q´vG­ÈÖÙagz¼tîfïŒÞ®v´A]W'õzد;ÇvË䓵vîT½_o¥¹Þg[vLŒ*V?=/nöI˜Ÿ„µÒš ùe—ºdÏ%\—oûÉD¿v–P¸Øm¯Fž–&µáqgÝ1?tJ¹ýñ¦Xe­1D¹ÕaÖºa«ÓýyRÚ›vVeÀ,«¸Ž«2Çαo¶ÏtÿZÙãÕéÒÞÖÊ¡èù뜛ÌÎg|W­åó%ðøR2³ÙtÚš †Ë‡1j® m|­¶¤I›n5›íšÉ­ÉñTm6‡µ~á¶«èš”Œ•ݯ[”ZUo7¹Æ•Éóô$”Úäè6ªmvËÙ o7ŒK›Ì¨³b™N.'m¬ã&;ŸîŒÖŠZÍdbÕ)y½¿µ ù^•iÌufÂlæÛãt°bȾpévmœÐ‡Câ÷ z+u;[9×aÔñ˜0X.‡ãØd»nîL©úPš�[,@±õÙuÌö­»b­Þ‘éã@¢<µŠäÀÄ×õÒL”š‘ ~²<œ:£:M6zô¥£ÖôìZß4ðâ~¡ˆEb˜5Øú­×1K‚Úͽk”»Ù¶¸.])²j¶“;ÿûß>C»Õc}úúÞ~}ý\å!®–Á}Ú—/¬ ˆmq×ná[·—ÌAS57Rƃ%o¼õãCp„{јɦ�ÎÇŠ\�~z°y ÛE:Ÿ]ÿS'X¡¦[òt³'H2++²uE "¾ˆéÜëA»½j¦w¥h4ÍÚ:À Ã  ãØù=Ïžh9Ðk™QdÆt¼Œ×âýZÚ«,� Ñ• BU|øúUÄsø‡÷€:ÚŒ[WÓÀ©àRäS†vvïS‘ð+(J „b h›‚z‚cTNHëF)†"nTORN¢™i»ƒI¡é×l[µŒ4 Üs ¼ VÚPøZêQžC€Êùâs²*jÏ!à¹){OÁ{!e)ð|6¦˜!aÒ‘rÂðLqHE¢x ¢€$.B ¢8Ú‚é�¥çPRp…!ˆ†`nS€¤ C8h'áU4´Ã»Éž‚;˜)€R0ž*¿j€BÈ*“‚ñlâAK’‚M i „\âzý¥ÀHÁ&¦`�e’Ì()Å„¾O!)Å‹°”$­Øº¢1)Œ‘‚YlS0RfƒHA-'Y¬ˆðŽñ¤`(Âà ÑÁ¿~ˆñ�t‚ÓÆ•0,Åù¿ðçºJmñŒ|¼‡\¯õ0[Z}sÜoÂn<ž‰qçE ^‰ø`>Aùà/À`JÒÝk+Îó×#â|÷" ¸Ñ*`ÜŠ_8þB߃˜Vw)"ηÖo!ø¨ Ž8÷øÇÉÁ·òww’ &mŠä‚ºá3Š£ ˜hëïsûíËF´ÂLÉq•£ñ�ro„pø=ì•’¼6aWï˜(ø ÙsTö¢¢‡ý–Cn†ÑØ"%ø{ Ñ™}Ø� =ö[Ða3èÙVBcâ>ÆÃ…³ö3q#ánƒ%ˆlJ³yfÛî‹ø¡üöêKø8´9óæ{|áÏqåBfí$â‚;<ø q»;íìâø˜KÎq ÂL¸AÂPûþ È`²nÊþùA\² ¹À[éÉ´ºNr/™ä®;]?L;(˜)ñ´-´\è´ÅÎüãÎvö$ŒbŒSøK¦\vö%~WÚÀˆFnlßèN"¨è¡zŠFãN?!RBù�øA¹Oõ?Èæ ï³{Wž RÄQ'þÖμŸM?€ó6)@2…ðbpøXû!jÆ{ÃL¤MlêäÆày×ö“áGö•3œ·¸¨¾�0¾çÞ�v…ÙgÁÉTÞqÖuS‡89KB£ó˜¢�Žk1 8$�ÇÌU‚?äÃ}Ö„>˜è†VÒA�‘› žË�sç¿\·C)Æ€Dd)âÂoüÈ¡‹'co³_\úêã„ÀAÒ•¿2ÖV3?Fàu¨Q®—Í€Ìq�t¸éøMÂ8&sœÒ eÕúªº1*8Å ¹ï”þ К›~ÅE�`¢Ã{*£ÃqR­8”×%Ìá0|‰X+zŽ’J'ñ1<†{RbW-¤pf5…G‘�‡ÌˆJZàïÇñRûtܹ+ þžáw=<[šgúà€sÖ=vÞž¸¢Èp9*˜»€d•Î*¾Ù7v  c;·Hj‘@JA’ÿüý5÷±ïM'ýMÜ'_‡�Œ-Ù l ™ž/�õqߣÕ_]NÇÐ΄=z=í5-ƶ¬€êÍB#e§…U sÄxb†œŠp¼1é¼0å…Ÿ'~°´ŒïHã.‚£þà9øû 'œ Áï¤ >ÞÀ £ÃX�þ_qsf=“x"‚Ä#ªuú°€Œe2k»9îîû¡r|”S+ mh]ÿ€�…a·^‚?ù$ÁðIVŸ,P~è ãðã¹§òhý^ä·/¢l@Ÿø­¬<„òJ–eòÔC€ïÓfU<äÅ �Žî}(ù{›ÛÑŒ ÜÜ;œ¥F��—ü>ÞE¿�H}_Br1%r³©ªŒGbŠòË…û>ý�+½ý×o2¤Šå Íì_9ç—…9tïTÝ"ŸÊ09Ìçßa.h&cÈA0­Ä²EyE´U¼ôŽfA¡÷·ëNlXÕ¾AÒöˆr™ˆÔÇ.!CìãCp$è�S{ø¬ÕƒÎ#@ññhl§‚qÁ=ŸÖ©²±�‚ðâ»E?'÷ ,À_¤Ûh·Xt#­_9çù'û‚øÐ//ðÔU^9ÙàîX=ÉH`ÇðÁ$ý£÷5IÃüÑ—£|JM>ð[È«DÑ)NvúúŠv6Âvz)"ÂÝuvt¤·ÿäž·æl‰ôÖÜõ Wu‚Z§Öd ,ËÝO¼®Øæ·{rž‡ïQwù DÉ?^ ë1’•th¾xxJÆòÍ‚DŸJ\QÜSº]õ.ÝýÞ‰`w‘¬²tU%ɽ*¥÷Š(¢½R™ûÆÏVˆó)>ÏЙ�™!�p€�Ìç-Å®Ë{&=~¹R×%¸lR9™‡A/½Þ%¤�„, ^!mšù»CÚ9XGƒqg�ÑšÑÀäMd¯¸ì6ïG)‹›vÛV�y€•»ÂT’Ä­mð™ܼH¸Õw¨ñ·Bd EøC7P:‡èöæÑýM2ž,ÊØ[Æ]9g=ÑÏÅMF8òp ±#ø"jšÿJã�BD"+ê´/4·øKÆM ýêÿs‹ÇDeü¾:Þ0ž/Ñ$0^RIPBÜu€²<ð®ž/ ]}|Î, ¹g7ˆÏ7Ƥ7r^±Œ)‡ˆ¤G¾¹á ƒý�ê o¾€‡ð~ÄÌ?371áÏt@ûf¦­XQ[*Åã�R„ðþðîEð{Àü¢¬*š 4ÈŒåÅÍqb B|̨|(æ ž+QHÐÁ;¶ƒª"7å_1âøýâðû;!œ»Á ¸ü×o0C1 ;.mê]þ/@=4ç>Ïüª"ÏÐ 4ʘ#Šš{þ¦¦ù¥„;u-ÆÜg–õê+™#¾ªð =�êÙòÆÝÇ'ˆ�öÿý¡üÛ=¬"’3 PðÁÿ/Z ;{‰S3ªGõ¯‰ý‹eoæb"w>Ókßç)™¬�ó7 Çù Óµ…‘Ë jä£~ÛI±R êGõ´� „XÅö½ G`uY/„ñÛ}¶]Ë_ùyïF%ÿúÖûúá¿iÅt°pg0w h ˜yWUÑõMë‘_ g&‘‘¸æ®íqTXãí¤‡úâ qŽrÚ êíö„ày3§¹h±7ª­�LÐ{d0ĺ‰gÌ-«1ï_˜šð¾ ÛÝ#Ñl¢§‚|›|'êt]Ѥ€?sbG£ë{G%„;&¤j ôW‰x<4TŒTÍ2ïg¥Geð‡ü[Þd½É[•Å+s �íF¡Œbÿ‡zP8M¬Kå"”#¦?)<¿–yã�7T¿s ¹2ªù\-à —ýÕ¼ FÙ̸¨Ó‰ž/ýÃçeÖ> o{�ÞÇóš}¯L¦ ËøZ�¿ÍNº|)\‡½‚( Õ 7 ü0xÏr;Æ›ˆ%»‘(‚e¡W¡žA<åÝ'…ßÇšÙ¬éÔK|éàÀ,¶ è%  h'ù ä}®)1P=M)d/ܰûw˜ïò­‰Ú;@Ô.H÷Þãb ª]¿Cqw�ÀX¶!Ü-g33Á1‡ßÄä¤Ncm˺£‰ø…ø°é(Óà¯üƒž÷M blGîå'ÖA"§p?½ÝÓ*Ez”÷‡êÖr@ˆa(ŸôÝW„F.ß­ž±5(ßQx@¡ù;c}Ç”¥õƒ“ß߯1ÈíE Éöñ[`°�°1ù=íߢ�!b±½ŸðÀüÅü/ ïˆ$ŒlTô–�Ú=QÇåR.Ò@¥-ÍÜó$¢¬Ï|þâ¿O˜ž^ÑS‘zÔðÕ'†Oï«"u|µôcDaœ ˆ–_C†ÍÄ5\ÖzXöL¼Ø÷(lÛ­͸gÆ}(P<¼4NˆydeÂ)JßܼˮXé‹ÏÅŒ–7EŒ­?<Ô¹ °‘:�’mœÆ˜ß ¯ÁLw\6[ ÝßÄn ÷“JkôÔæ+Æ<Äÿäá4§ ò1Ñ|5þl‡/-\¤˜`ƒü GÀjwü‹�ƒ¿PíÇBœÿÒ9åùpÖê�^ÙUÈçЛô 3]¹̱;yÑÛùŸË{±P€OŒÕsl¯ŸX?ß{‹“>‹½í >&f? Ït†DsFùÏ“”iO»~òÕHcß  c .½=Ršä¦’m<kÇšn¢Oºgx¶M:Ñ'Ö¼3 'ÁÔ}ž¢€ÐÒL@CPQsPòa?ÁçûÃÒEþôé´Gš�ô9at�Ùýœ!�@¯ÃÞtä˜ä~Ÿd¬ö=Zu·H�âpLø É.sèû8…"|œ{070;ò6dìm~-Î'Ÿ+|Éø±éûð¾ËÝubñû"„ ÿáû@qøø%êaÞ-¡ ðÅöÎy<Ì<*£zKÿÇ1Hÿ v{Ž6#§ã�ǤSð V2æ|ÅJ@Ϭçx¼@•÷K†ÌÅŸá'´àö;è |ž3gFžQø$ùÖ ª ôÖÿnŠŠ>‰‹ê?ÏùÿIpÉAŸçî9èãªGmžèÿBSñÃôÓó ùÏ{�·'žy8œª,¬^GNlH”öŸÝn?–œïQ9þî v[�›å4“�Çoc3 º“ߎÿD2õ–bO|¡{ (-Œ{ÞÍÀÇ;a>™Ï@=w îzR!šà9¾hz™âƒ>ßÿÞ.v™[‡VØQµVкÉÁŒó¯ªA�\AÃ\|(ÚûÀ½ê‹q6²Þ õÏ2Ÿ\›ˆªª¡ŒzÕƱnø+�‹ ð¥cvbT@b)äï^AåD•‡6/âmàÇð[tIöâŽYÈ ø?:î—êý4ù#>�ó;l¸ýç7÷~%\¥¤Ó… Šþ _í¸?¢×QBq’ÒÃ쑬Šñ)°å+P8I ý�Ó8ÂçY¦Åïϯ¨Cîž�&sÖþW³ç¾¾[üþx›ìÍÙ«—.>Ôëø|×q<ñj0w*|gV¬³ „&æÁQÆár@Q§d¤Í/_ü€e4Ea™ ý �¥/oÅ”}µ¶ö��¿åÇŸÍp!Ïæ¨â¸s×PÆyàâbÎ÷¿O¬±« "E°ŽÅxWŸ¼çûžð™ˆæx’ ™ÿô«.Pß÷]>×ÔÁÿäÍÂF¾$^Š&,x‘ÁЛ”%úòLpQ’¿ã©ýŒf÷i—‘Q¿×ˆÜšGÒn&Ù2™[F3ŠFxï ßMÇiºCGÃÓæäàúÓv?¾!•õÓIü5`dmâÏÀ9d àcAˆÿ\Lø‹Pò‚wiöáåï.9,Aѽç‡Ie�[¬@ÚñLlÇb’ÌzŸ$éŒe­brçz�2YØÿÏF_NOÓ›A9°¸Fœï^ïër*Èp¿£@¡=´øøU²ÆÀ|äÇ c¼î \¤Çï��àÿ¿#F Œ®c®'4?Ç5YøÕ=`ÍOwæ¢}_àw9×ÄRš(‚ÃãSܘb§H&•€Ý›²ø¬P*±±€8Sü¤¹ÌkÜçûàÑMWN8Ÿ~uþw7( 2s#EÑÃé3d€½dôWI°</ïCXöüÍè×q\ÑãZxu´Íÿ9ʾºEϲÅm_mÕר{s�Û¼wÔßSÕåÏ€Ë=ýÿBùgp„K#ÁÞ7ú¿]Ýûß®î�<@DÂr­îpbâ+ù�§Ä”‰rô¶!,…$lͧ»òɾõ¯ø6nXp�§Åz§Åý§®OgÛ¡O¿Æžœ‡iLØû\I,ä³ùºó zܾÿ�êñ»þGºÞ4…§øûLÁ?)ö$ü-H ‡"Vê I¾ |g“Ev¸ýÑ­ÿ”RŸ,�¾} _?>>~J£‘òQI"¤0Bü½¾d^q”[�麷ÄI#à…ûÅ(@ÙÁJ=£íß?¿£¡÷MRˆaxÇ,=”�ïBÈò> ^ >w™À¦À51çíÏ ú•"ªÚA¯zª½ÿBøDm8_�ªûT1íh  ¡‹IÄTÔùˆMÂúÓ+(kÀ�‡šrîä^…`¤ÍèdÁÿ%l\g’v6…ß,ûÓ•ßIÔîî)}|& ¿'Ýḻ-‚¦~ }‰±ŒyǤ<œ˜ßÞÃ�¾‡ù™¡‰â“±¹I¹ÿÆÐ(@ŽzÛ‚rõ�Œi…�ÑSD ŸØÙyPa4i×­À3°ÌüGw<�b°/ãFãâšxi排?g° zÒ‘�üXÂcX¦O× ßå®%«�ƒ¶ÕL+#›÷QùŸ~÷Ð<´r7=:í{ý—ÍÌEÍ­| æ­ÞQ|Œ³Ðê}y‰ˆbÁûÇW( ‹Î~d~ %¸Àýþžz.ãôwk»ÌÒß­í3H?T?¨í¼´O�W¢õœcè$QoA¯¼· Þ¨T¦§\}�‹]L°¿mÀZ€}ßÉúª¾p£�CB1z÷Ý"È?¿}»ë¦ÿ±6¢M¨ŽJ0 ì"e Y×ÃìˆË09 OÁáwˆˆ9ˆCUŸ|�19G†yû7(mÀô&žÓ»ÎäSžtùð=¬)3Óür`ô��š±ÝYå@Uó®‰ãÑί`‘DYŠJ£î[¿°×±�¢çÍQô¸åBš´äˆº/¾›ƒÙCg�hÌW{"Ð$T�Ae?$'ý8˜ÄøÈ�Ÿ[oË¢[™kt³¾$–½ýçÐÖó®%mƒxôüˆ­\ ¡±Êª ýmC!}\<�ÆÜ¿†e>OØ#bѤÛpüDZÅnd\Ì_¤­ÄïþEI>©@ sŽ-�":t%â—ç¯è8¿}ü]ì¤>Áw�@"$Ä+² Óø®UED0ÇÓìSî-O¢ñ×îㆠõÌûæáÞY.àö�çlèÄ„D]z¯Ià%ŠÞ]òésî0NìVpyY€GЉH3ŒêöÊ%µ�7fÆÜj¶ÂgåÌ\ÍÌ–¯˜`ÏÊ_?øûþ뇌fxM|ýàßö�·¦–±¶Œåø{º ˜0,¼b nÖ€­)×.X=¿:xkiNÍ ®âlã é­7Q1�îПêÕ§/@±¿ëÕ½GkôFê ññÒt8#2'Í€cæ ��¦`Ö‚Ƽf*£¶ã€Èƒ6M Y„è3Ö$2½onõ'–ÝòÐ@ÍBºjºÓéôÔŸO0ILFι½A/Ü38¨Îä¹èöOG^ý"tëúùÏ—<+p Ü@gÐ/ *[n=è­�"§§U0ÌÄYu›Ë€1rÎÛëG° Ž<æ‹ ÚP4g“þ–}…7”pBܺ@ ÒT°Ì`è 6}ÞÊ UFd Nò[fGï lб+èëG64ÁýéuôOÀbÀ¹·®}�î|2!ó žÇÁ~ †û§;.Q…ŽÊ¬¡íð׎.™pHàÞ€,ÙÙ´°1ïè¼@8#C±N�³³Î˜;/7 ˜ˆ«`½¡oîØ&Nݳ¹›:äÁC|È®Gþ, 1Û=n÷ý(xf:¿Çyõ1À_Ñ�!f5æ]_•À»Q÷WOåörn&w03œÍÊÜ++ÜdÁøDv{É +®O9\3&“ç‘úÎê‚}æÊÞðœ4™‡¨L6MÛùäy*ŸaÑÐfñÏ tq Ç)àß`þ@A]fצ&CûÞ6"ÈQúü†Œ¡yÞB¨÷m5•(_‰’9hxï„Á# 3G[xÉÀÍ wŸì]�5-Ãæ¬‚I~KÕѸ¶l/àĉÈ6K”/¥–©d ÌJ¦6�º®ú/™?… ØH6<{¯.rýó �‘À�ß;C �ìºþƒÞÞ‚A0øêÀì½cìï:¦‡°½“o0¼–ƒ^OŒ¬ø@;²é bKà¶*àn¥ë]mÂàø5ÚGŸäÅõ?júX‚�Ñ0g}Ê9NÁ9 ¸Ñ'eDqŸ`Tÿ` ˜xÐB,O°ƒœ©>kÆnX‡‰a<Ï{€$wRḨ n‹aá¤q`ClÝ]­@2�aÐþì71öÃk]•”tФ®;1ÆaYºùÃ@;æÛ”íÛfH˜ŽùÿÄœófb¼ð¯ò¿eþß8‘ÃI’ôÆô,^–©8§ÖO� ‚8ãpƒç8ÿ„ö%pÄc ¦w “ÃÜ#Ä{a÷ü;ð¼fÀIÚH"�03ƒ9H/m7�‘ÆG¤ Ë…Ô3¸(¹Ñ`õLghàî‘=À¸\‚Ѻǖ…ˆbIã6Ÿ<’È'Ø£à `£cV�˜(¯>J£|9ã�F4ŽÞ ¶íø¤·*V”«Ó²ƒ.ñ§hòiŒ¡úÀœ˜Ê”Ù9íƒÆ¿_gµ½ŒÆ=oL…2³â¼«³Õ2!dzõ�ax‚ÿŠì‚‹ÀœØôGÒEš]u¶ŒF˜Ø"æÈr&i<¬‘ [¦8ÞÉ’ôDa»×÷0ÑÈõ˜ÁÂlãž&>ÃقœxsÜJW^±&ÉÊß…›…m;8ÇiÄθz©GœP4F&––ö¹íRŠF^ù¥·½í-/«3K„IæÝQÇ™â÷¿ýPp¥çܪì˜à:«2™!¹vJ#‡{®|Z›L(…±!–•Ï»L�p/"ØIY22ƒ­2-NH±2†ÈgÒjÆ]G!Ð��=Ï'ã×çƒ7beXyØjçÉŠ-_Ðf…Ž#ØÏ²c,¦Ý=÷B8ºœå±aSP-7øÞ3œˆû?aÞâ¤+Ä-àŸ¦ò”dí \Þ }Ågôò¤b1†ñ ˜f³1™Í{¿�‡€ "y!ìs‚0·ž]Ú÷þ…&«ÄÇõug¾óN�zâÌĺ'»¬¡ï'/1 ¤„'‡Ää=K&'6„Ѩâ%$»L_ÚePn²ÇƒË'ÃùÆÑäò\Cþ*¿ˆ@jjKe¦ÞN6;·ÄLðuKV}oz±lm,1ÅßÀvâJË4Ró¹=5å÷öt›’ÒzË¿ÆocqÏ$"«Òí5Jॳ8f…•`v²Ùé&h¬u[.°€°0€,äBmÊÊߥX>!6O¦=0âÖUÕ„°&—‚ Û¨ÕY˨~›ºÜü*µ”å%¦–9%;x3„–ÝOÓ Ë Ÿä™ª>k•Ô�³8òHòfV'gÞqB˜èœq©¥æšåúB0Ú L²F°¦Õåcé*®0ä"2´Iµ‘[êP¥ºû3²±°Q׫bÏtñGÆàÄš¥¦¡–6Œ¤ÊåÈKˆ~3M;aáHú?¿zXêÔ ÊÄКע›»ÈQÚþw8>MfiÜAM;nEdãàœCã1û2_;oR,ú] »aÓsCáW51EÖdþÌ«ÄbÁ”Ò16ânNÝ-߇yuLƒóe�E�Ê¢]Óvç\ô0NEò­plNÙæ"²‡p¨Ä%/N,FüDÈ#tÄŸ£”E¥-6 í<Â+OñŸ BHwÐÛ1Þ¤{'0’ ƒ·HOtMgRQu&ôE$UŽQ§ZÀÝO'¾·_Wù<Š)œ7Ž ‡ÂÌ2wcÀRߘðWÜlsGñÆ‹úX'J‰X–Esý5 0ªF «ä�lÁ!áBÇØ!û€uÅ›¸<äûDyžˆ)>ñ5 ÓBÉ5a¦´¡‡h[—_¡‚¯¤ÆqQ àÎ�m�YïÉ)SE¥-û’]ÎÚOޙĨqÀ©'?dÌ„ì—÷¤s eNcÚU[U?Óå ÷}Ž-¥Îµ/ßd´koóQW˜b n†±Èö‹¼‚YÆm¦À3/-!¡` è$!úJ7<‚ÿö½C2×€EŒw¼µ©,8бMw8úþ§ HuNè@B¥§¼ŽÄhã-𗤯I }²œXáA®ï­D¢’ÂR5nŒ5'j,ÿšDN{gšIÔ¬?NLš¬âãÓ3ØÜоb‚H%&Eæ2Š�Sl€¶²ÌÜ¥�7Q´éÑð0Š Í™bE,Ì= >H"`¥ ü(.Ë@E£À‚ôȰÏÃdùZl¡šoÁ¦Y©Ï’X ߃Ü�±I¬ŠïÖ²D%ŽGÃw°ð¾ÓºH?’)ß«Š;V¾^•DzV,”é»JR—PÔ}œÄh�¥}ÏT¤0KÂp'žŠ—Á‡�²W!¥�LNÅ7éÈ¿îÏô¤#O›’ýш""—{2 c´½›š:¾ÊÀ& äÎP4=ŒáE*Ík»¡š(ç YIѽ#£‰êMČٔ>×W˜å² fègùTïZß4Vv�Æñ²Ø¢/©K�Œc†ý. Æš‡ƒ0ËÐãE*ÑÔ�kB67ã„®´3÷}‹ bë6ìò½]TÜæv˰¦€ï.ôÝ8ý”B0¯*޾€É9X8”q}º¬²œ“gd”VÐÕ9§§õd|!µÉ 'аåqïŠY¨Ž#Út´¤vrˆÖ%:b äZ¥ëG%Jçl¶×Õšivš 6#²ë™¹PA�ÌPøR`áÚË…¢�ŸÓPÙmuM“Ä‹D©ÐV‘&YÛ+À¢ €œž‰ ²Æå—h…(íG„½Nï²/ŠË©¹‡%Mš\82(>[ÍŒ¢p<Ì´�Â�ÑÞ,hØà„“ä�àþ(”¾¸Ó¥!qqÚì"f ENo#Où�’¼á /Ò(‡yQì쥠óË)YZ�BÚRÙŽp‡Éjrƒ•Âÿ›º0e†K8Df;H#u]®Ù{\é—PáJZA!Ÿi�D™Éµ‰FRBŸ \œ_dÏ'@•òÐW�6[?ñÒ]› úKüiu½l"˜±¡l„ ¢ R÷ê£Zts"¹‘zÔõt7å5¢º˜(—Á\wÅlR” œi«`rV,¡gæ$Çq ®àNætóD¢‰«aï@´^ekMr3ýèu+9^:TÈl�o(èJLl'r4'l<”¼¬h":6“X'L¡xY_ÐÜòª–¿®?éø……IÊ@˜ã)z×�ÈN¦™º“JCi€>‘š%Ò¤°]KÅbÎVO4YGáëË6¤Åõ;@‹*2u6CXÄhqœÄg(Þ"�A>yo—è´/‡þ˜[‘*Ë=L‚A…1l⢰ìùþúø“„?ѤÙæcxãÎ"4ãÛØxüèñÆ"k»7Ó|Í5¾êX¾ÂfÇ{Чœ ÁlG“Fo’ÄQžÐÎÂFFlÚ‡w^¨õo@›±†A›ÿ^’S®h…ï²ãD4Íû!Àz¡Yí31 b£I!Ägª_j£À:¹òÁ¹iÿ£å qQÂͧtpIb§i·¯NðÐ[ùî›ïðò|"ÌýD+¸3y}K¡ñytzˆ;€ó1æh€,÷Þ[5lÉàÒ=߀酃¤x6ñ¡­•œ¢ª{…W*N¨&cý[{ÿÞœ°·„ÃÍ'�‡ë›Ãà6ðݦ\W…ia‡ï ðªaäGU Å.ºJŠ© ‡*Ì¢ZAZ Áâ²Ø–�W•ö% �À0  ëç�ûÍH'&†&Q°ªTθW3l£¤>© yÇÓùÔÂI±‡cFŽ«"jSþÂJŒ¥ŸÓ5íP(|¥q5‘ãŒåÝ÷Ö #zæâBN(ýdóÇ㌌^ØÍD´ ¤= , Z�¥Ôx6;Å@,Ä ã-ó—q0L/!FÙ}s €i«ÈýèÈ©#E#èÐY²Ò¶_÷ž1+ª÷ÃLªØÊD2Y‚´é^X«É‘Þ¶¦G–Šd „@$a35Žð×ÐèÄt³š—ö™ðÐdÁè�/îù‹ô…l$@dæ?34ü�¸²þèñÚæÆ2ld× ¥¹ì©Î`8hÐAsO«Pr†ßq\BïÁ£�ëëWëNFL{Éôt]ÒÃì+kÕT‰qü퇬+Û›Üpaµô«ú‡Òc¡ÕŒÑ'²˜Yö>¨ ÈúÕ–KÁ{¯’ô5ØÔ�Æ$’·ëïœK‡jÊZAßT#·C¸»Zß.þÜ*"k÷oÍK ¹é}ÃêƒÄ”mÞMWˆà‰Ô{¸ª‚ ¼S Þª+ÂÌØÖ¼Èü$ÌG°áËO}Ÿc®°æ®Ç@­÷º‰ü\–”ïU½CR‹my*#ªP ášèb€æ5d{MÒ5l¶3º°G’ƒÒŠù< I=¶$Œvz¶£3G£.¾,d.¾vÞ6 IÇ=–I‘u ›%d†Ã� KR6$Ò“®_Q1M ¦;„ãWZ Q8|pU wRÖÔ•\_ɩԚ±æÒWKFÌúL*5‘; �.Lw»×«€Œ×Ò¥ú�-ËrFóT9ûº{ìr†-˜ô¡¶5s¡XT긓ۨ£¿^§Išõ9MR™Ûk’c%Õ7Éá-Œ&·lüª%ow Ió\Óh¿Ü:QÍ—"h\Î ³âþ’B]é…塟“íÑ—t;JR¯7ÍÂÙ01î~¤R›È”tÓB¶‚»¢<’ dy£écËzh¦.i—Eo{±»]g,bßÌ[U'>Å‚Â\eí¶�©Óõ$ñ)ê ~,sF^’ŽÃì à°à³ŸåဢÕ^M³9KEùÛKð^2|a08÷–€íƒ†Ùåª`=´f¦W†=1-@¨uEÁZèíUÅWe Rülj÷_ë¡�'¨y)`H™ÐˆáÔàRç±é÷’}•Bù˜¯ëKö�VUƒ^Û5äv­ªÂïí:*d�» ½5Ôb)oD¹ ¦Áôb¹!q\îÛ˜ê6®Nx0ª›ä½AuƉQߢ\ †Œú&á­«.p¶ÜWˆ¥JÒë�Vþ½òn®ØPr¿üûŒ»btŒ;‘þþòÊÍ;é£O‡6-²›&1¬dǃ•."ðP-¬®çQcBÝZFk€¾�¿ËäÁè,WýuÓ0Ÿ¥±÷áE0½�¨ôP6 ýÎf4ûgw’AÀÖã Ã%…>u$Ìé†ä -TªÕHï—ù¾/É7�z¨-ãVoÄm€Jb¤ŠÊ~ÔõŠjP1$ñ~«ù|ÃpÚ»õIÕPï~fu[·1½ÚÜ9ÖEos¢5ÔëÌöÓs(óÅ<ÓC¾i"Žd (íR ¹$¦ ëÄk\Rì?|çÉ[)*ÍŽø=Œj@5Åü{­ãeÌ´NŒUœ2�Ÿ˜³€*gbÙdÚ‹ �Eæ‚(8^BÐ1BÆ:dršcšÌ;i/½ïœ É$�> Š{²ô¾ n'¾¼’—k8ójð‹Fƒ_X+¼Ú°J‹‘ª¼£!kwA6èŒ@Å:�$ƒtPÄIÆ’µv¸?½€LR,µ´u ÇÜ=òñÎ$‰•½ä˜khL�(ÎÒ2ö�úg�(â~�`ê#мŠÃÇ]Ôò¿1îª$¤ Ú’ ÏÆ!I“Y_M'.âà4¡¨´rîã$ÇÈ�Gc»ê)¯²ó€Í“TÀɈÅI|,G—bOðü@o-MNé*¼0j½²Ž~Ùõ÷:úmç`×Û;ô^ìÿkïÙî3˜è�Cx€Qé~Û;úeÿ×#Êì¼<úÝÛÿÉÛyù»÷Ͻ—ϺÞîÿ¼:ØAjÿ€î½xõ|ožï½|úü×g{/ö~„º/÷�¼ç{/öŽôÑ>5+Àíí"À»O�Ÿ;?î=ß;ú�H�÷ÓÞÑK„ýÓþœ’¯vŽöžþú|çÀ{õëÁ«ýÃ]èÆ3ýrïåOÐÒî‹Ý—G>´ ϼÝÁïð—�çϱ9‚·ó+Œäûê=ÝõûÁÞÏ¿y¿ì?¶ Ü…îüø|—›ƒ>}¾³÷¢ë=Ûy±óó.ÕÚH‚º/w¢ßž'(‚¿=ÜU@½g»;ÏÌÙËÒÄŠé¶$"OadžFcå,Ë´´B~¹yŠÎ}ä_ãGÄÑØT¸þ&ц]†tm4M5D´Uäi(ÜÏðªz†ÞNRɈ†ÂFY@+ÅxI¶EÐ"lu8ÌH¦'‘^„ï'µK2F@yëHð{»kkÒí�]ݹŽì_�S} d÷Œ³mèÁC‡|ï0aewÆ‘ðN;a€"W°´ÿ&¿Ù[=h]È~1=ù¾g¾ïÓ4”Æý–Fy(#¿Wψo*ä"ir®-é ^ }„EÈŽ_êè”$ã2&è¡„ŽXBWb6.¢_úF([£íIpééx~Ï&Ð(á3šë¸Wˆ˜õ&Ë„¢! ç2QÜIð¾[jÉ“Ë( Ù G¸ÝÈud¯!sH%ÁZ ¿G´ßˆ Íæ|ØP¾SüRÏà˜D5U˜JYBq€šÍê/riãS<¥-ìNÛŽ|@´�ÅKï2Ä€. O…Ïc0oÃKljlN¢ÃZv|©ê³‘ŒPÇ‚¶—¶—´Ê¥X»áÐ�5o=o'V+¨8�å}�]Ñ­ËØ­¸²Ïí:*&{Û>TîÚj§àÌxP·ëìq�(´¶0xŽsý3Ìs^R�Çqñc’Œˆ°Õ#\+m¹Í NÅî‘ÐaéŠE-`²“-«‡%=¢g}žBzCAÉŠ¨vûLÿˆµ‰ÇKòq4FÀÊ6C,RK�°Ž«‹ÂHÃâ§øšÔiéw!ÝÏe4RÒ ô½_8æv—¥— ¾` ° 1Ë8Bá#`‘EÑ4¡Óº°¸9|yí%¶jAc¨ÐCä>JúY×[6„@hX^ÖÉFØÄB³ h\}"84•0¾XA ·Â/}OCVa<6a´›»¢ÔÓÖÌÜã"îÄ?‚1™_å@(–-iju�§®½1}ßñ¶¿G'ówItiS¥×EéõºÒ¥ësk¬–ꬪ69{ÉÚ¬¿ˆþå u“< Ÿ ¬­ár¨ °Ì­;T�rq-÷[�¶¥þÒ­¶x‹—×È<#—Aª‹qŸåçæû5¥Õ•š!î�냗œ¸Õ�6+@n¸A6¬ý X›ÊŪ¢-=[w<{ ö¡£xÃÞ¬ßZoÖæ÷FXá1½ÿ£µ'¢Â•ùÔ>Ì2eX&M8òpXȽúGkîÝ0^c²le²Ž9[Wøl§¬­ü‚òóSG-úèÍòhœ9< °=ý²þòY¿»œ&gi0=¿4¾Z%ð²ÿ<£:Äün%!¼ƒëiëæÏh×'5$™>ˆ«CëÆÑ4‡Røð+ob:ŽãÑÀ²Ïѵ{üˆç¹]š)_XRR¹Œ4¿Sý.Yt; Æ­ø�÷N^©ê^ Ó$»Ï%#îf§bAöCÀNZ(_t«�1‰«¢ª?új�×W×Ëe/Gcî £tÕæ(펅ú-΂{‘[ãu¬ôr‡�,¯Æ¬xߣ|6 ‘¯j¨Èj¯ Î…ëÚ+H¤Õ£Ë®¢§­?oAZ4ú¦Ö¢¾è\ µPÄÝÙ@ævÖß3Ù€s±ÊªKº—M³Y8LTV31Ï=¼ì�FräÍ^9¦ï¿ô¯Å•À®ŠÈÜ­,€s¼1 ùKŒþž³(”‰@Þî÷9Ҡ”²œTÝ+RwTÈ#rÛVÇÓiñ0¸.pN™Œ!ÃôPP5H¿®g#kæî•z¨û舘p¥R+¸‚k8%rt7†vQÆÁuy)�Aâ½ÜS2ËûM톗øx^Œ<Ö ž�‹Ãàs•!˜ó°(c_X?2«ç`È=Nô³(tÃʱëÙÀ ' —ûG»í< ÞEÙÛ`6šÜü7ÊgJVÓp@† Â’“òüΈ�#W£l…’Yñ[¡ê—ATdL²\&X ¥EߥTÃlØ B9©²H¨‘�:æ1©p}ï(¡ôž*l/”,hS„òUÑ[Dlm+ …åÑfŽøˆUº…­»Äù¹¬N¹4Äl]¸ŽûÞ·ã_1û”ákýa¡ä˜ín¿=]Å¿\T"Gš+’rÌÜ<ÝÚ†»õ�™v©ÐQeÁ(�€WKoÛeÓºµŽ¢IÚe/·­:‚¨M‰HÛ+P6ݦ eŸÍ§”¨kQ¦ül8ç U²�^€�\1”Îì²E‘mŠ|æQ K2Ê Õ«¸˜Hù>JE„e;¥H„Ê/Ü#ÂRW$0äÀJœt©÷Gú rLR¢'"¾¾á1õɆю푨Q–y'NC wbâùDi��ôÕSN‡¥³e!‚'+�v(>&'¬ddiì…€�ÑO´¸È‘\Ðdƒ UÍXdÑõuMÙcÛ‘¿Éºà6ËÂ!ÀÞ`sE›²åBбâØU»ïzYmí[dת(AsFËb—j KsñØ W#ì}¡’Z¡_E6k;~V2[µT(PÅì›/Øq@|ð20_³œ.>ê^㮚– 0÷�e ë¨øÛQ•º õßÑÝšùªR§ûÑôµ&¾|«±ÂÆ317¯ �ÃÚ¢NÔ•kˆ#ô·B1:…@æduP‘…C:D29�ütô¢5Ÿ³" Ro ³µ�ØÁçÕ%5¥F‘¦‚ ª¼ÉЂ“Ã(g„˜2ÅS!e­£¬§…eØñõ©<�¡¿ýüõ= d]q<دùúYy!XR\�˜&éÓîe\£ì®4Gœ³"7–{Јé¾&?“¹}%W¼ã°"xA$øCâèÈ\\íEižD–öª(Î&}ÃÈ%x+€ÓâPU{.ýI9¯ODtÓõ›ÂšfS�2ɪþÙË@ ÙD•Ò¹¹T˜`.’ý»+`2O½* ¼¼uu�¸¤Å"Õ5©þõîËú[Jô›\¾’Æë=(z}`s¡�-/ž=5,6D†àI¨d^�ÎÓà-ÛQ¶<Ÿ[¤¸ÈpJ† õ"ŠÍ72È_ ùÍÝ-«¤ãðç‚Öè7 à´:¬èE) #‰€€ÊâJ®mëOòäG%-±8¸S'«¢@P!žx’�ÎDì­Bòc'÷pœP·7ávÕ¸ê’-~ÌküsÓ«ëü(w¸þ™[Þ}’TU[ùï&À¤‡éiÐé“©•Á߇d‘ëЕܧ¦»•�wsR�æ"SÇ Ô£º®NÞ${ÉB ÎYX�¶9 Í™ÚêÚŽ¨m2®¦‘·xPŒao¦óœ„ÿÑÅÁå°ªrvÊ5tÖá­¡¤AjÄ08ÌÛæJ}C‘sj½DdyQùçQʆg>g=FŸÎD·"rdDé0eR�5`‘Ê�ÏŒ½ÜVéì r†Ö‘F®¨=eÈFÚ“[ô°ç_¥;ï3¾�êµuás ^¸X½Å�YFØò ‚tX´äÁguÕ†ƒÉ�õJõ¯"^ΔÌrL_èd½T€þ1VÛÔy»+BâD8¥žð»*0V[0Žww,—bÔÇRÿM‹�¾e !ìâ îN.תi©¶ìQ†JæÓ`ï²ó`˜\è°4Fïm´Ý°÷°;é}×ì¾Ø®^ëMRÝ -©£i±a`‹Õ-ßâøèEQ3\±†}qzÖ/‘RÈžŠ¥lB«ž²r æ–8„+i‡S�\§™ÍghÃäÜ™%ë¡~ýÆ«¶6ªÚ=õ-”7ÇÜäÔ6Wy-¼O²ÔK=ºùzŸò}E#ÕÀ̹ˆe½F+Ø.ì\®i¢¼„5!±ZÙ\Ãs~’ul÷êæ‹x¼[XÁ®¾Ü(KÄx~‘>©ˆd¯VtË]*V™va‘�°ajðZØu‚(>?èV“5+T?ëŒl✼ ºˆê_Ör ½µÐ÷F™�â…‹ªH35Èg˜¦„øLOFé¨éo3Ƹ¢ºaj^ÇÿÖñïÚm©@v Ô&â¡îþ6F¨«ú­"´éášÙEÏ×`> ôð*O…ÊÕP(i™Ñ+�Hsý‡¥4À‘iošE ³¬¨6(¼vHü…ÅßñßùVA5µ:†µðâ�'޼@\’/â@3sÚå#.†b—õÚʸ¶t'iƒ”BŠ[p-�Æ!ÃÚÝ1o�)`%e™å»ÚL7ø–«Ÿˆ€“'¬ÚÔ—f‘¸cƸ¤Y„ñ"DâBˆ�Â;ˆT¬ ŽÑ¤a9:1Q†C™ŠíL3eŠ>‰˜–‡ÿú™ˆb ¶¼‹„A·¯‡ e\Ý80îÊæ=&yˆ/'¹•‡×¨'À Da®‚ éÁ““ )Ø®U.4ßb]ÚŠ–Òíà �²Ó0O:œrU`ŠY¡Z¦»IN­ ß.D Dm×;gwruõMB3o<š÷I w”ÚÐ1ŽìïA"¢J|>Ä¿âJ³Â©Ôçf¾J±ÃUx9*ËM0ù,uDÅe†Yt“©2Έ�è_„h·Ÿ&ïq=„æÀ s‡ÓKݦ‡´£žÊ»h‹¸9 d"cZ­ §wI×,ÃZ§ò=ßœ9µ!/ÊîÈÚEI/ªG˜Œ¾(ÅTÒ/iª¿e[èU:þUÆúš4ÁU¸àU#«ýk_ 7”»¿PùÆœç¯rΧ•sÜAóÖ} š÷5hÞ× y_ƒæÝIÐ<´ÀÄs8‘\šõ+›ÌYùõ¦”™,öz=*(-6—}d¾[–Ìd�/ULV NÜ~!BŸ#_�Ÿ1s¼ì�цÉÿw½AÓz9’>äPËO\ÕÒœþw½¢h…c"õtœê¢,!ֿ浺†c©q ý×�Sì1#+YOÉT‘ñ–€'4™6wÉîõe�î>FpµÅä-±Hr8]YßÜxüøÉ“µÇ <Š˜pHU¸š'«iÕ÷¹£IwP’D8Q¦‘…Ï`+Äø}åŠå¬` ‡ X¬·/F9wm šSèá*=ìlUðmJ¥h°X¡O±TGÕ6ÇÜõLGÕÃiô9x ¹¸„Ú’"⇜¢Š¹“ÑeÍh�Á[úÏ,D�@iùû.ZêF—ðuOfF]Å¥ö‡´lW%S.ŽØ…)Õµ „™,1aL6I•o_V'yÅ`ÔhŽ�a4D÷ÌEÔ‘è, Øfá„U¬í^ü•pŒ\Ñ‘r}–ØÊbdI`+O)ƒ ±gß;†æS"ÕPû1f 5'HïÛ&Öº„�Áe£äR’?_ߎ†foÛúù0ëéVʵ*hŠ‘ðÙŠ´V–’‰…kk=òÑŒ¯ƒ+±y—·*«E# %2áG™I;ÚKÕ¨(×E©J†¼««i½2°c …&GõVEý…‡m¬¦…]UÏxQ5`q§d FŠzO8±È?f;Õ…ðÖbÞH{Ìøf놰 $‹ÿƒ °jÏËÝŒ,š�›|ÉÞålc¶UºñB®,‹ôëÊó‰h=5>6»u-z~lðè]‰kÎimssmýɃµUàœÐX@£~sƒ‰x‰‰JP�­Ã)ÇÊã*Ó�f}ûÄ×Ï’Œ¶²Àq/8¨¦G½R£T�8Ç4‰Q‡emá¼Ã‡�ë…ãþ‘=Ì¥G‰é_ô§"÷2²áVîø Ô^"V#¾Z¼ýk)¹È¼_0íûS™öý…Lû^· ¬”Ó^eV$=E晾Ø,™þG0¾lKŽÄõåo—I©5óå[ðG‹–Þ'Èû,H¡\azÂoHu5èÛ¯{l¯‚ªL˜tRLæÊÚ’÷éó‰²=%xóh³�Æ+G‡z0°^öî¬�üfO° ÇâÜ`ÒæÏâÿÌ’ ªJI©2Õº¦š%5çu¸¬ž²Uø`mUb߸ë§c7ƒæse‰³½ám 'aä"q5#Ó¿0�ûJ)®:Ú{¬=^†g‹_E|*7c^VQ8 ^S–³ *�¥�$ÃÐÙì¤ï8jÒ|ìGg1úÆôQÕ6iV“C‰Ž]tØ·Èç2�´ÍÃìˆXoðäÚƒ`<°4:Þw^oÝßìXÚ‹Ûš [‚uQ[WÎvd7u`£yD Þfþ ™¬dq4�ÂÒ¢Ñ+oØ“„zÅŒ{n1�KÌ7v1&@�λªÿro`£÷}É_Ò¯R-½üG¢‚â�Ï�hªÚtþéÚk]Yºç­éëð ;Y\¯Œ€q_¾–QÇEßô)Ǩ~‹ø·q­.ã¬cç1 ‚(‡_±w[&‘“e¹ñ‰ª¡|ïl¸ý¯por@ÌmËÎseÐ<™ö.¢a~^yYòy×·?%L„ïjVÊ\c‰gA !AÅ¢§kÀš—õë�UvAÚj¯ Vt-ÑÇÿ¢!¶Q £Y†�tzMMr¾æ±üj’óÕ$ç«IÎg–ÇRäÛÆ´�*Áš�YÍãTy棨?š�•Õu(cÒ° 8êmÐhRZ#íî16bF)ì¦ñ¥o¤7Ú1Ò¸aÆÃÓP¥žó(‡±Hùf¦{KH“� Ãbjo¡£9°ÌÈ2 �¢î* V;NFãhÊÉ´è*ŠK¢TÕ÷V·®sɂ٤qå;ï Âûn~�$×gI:`Vê<]=}ï_ì“:™eµ†œô]˜…':m߈b`›K‚ãõRH.­çу7ÛйÅAl¿€#¾0e”üi—ZŽBZ$³„÷½·ª„&ãEßHod<îJ�I¦\rVU�³$¼ÆU÷yL•‚�r5Ñ$KÀ8u:ñN—üLLªÄ8Iïx™”gB  'ªÜKs:Ã0Ý=©^D»ò•Uùʪ|eU¾²*w˪܅ݭ™úö†¤€X‡AþÇÁ%îm‡.¡ó-0ï=–é”q,£†2@I(é©P*SLN¢!gNŒ(ÃËd ìä69éð©´H`hdélXœÃ–£0¸dM€Ê]®Æ#WñKUÒb$�çšL‹½xO?ðJO“Œv8„i�âÝ*œu3ðú}qºˆ°â}Çwðœ Ø!÷’êH$\æïb?—ñéÛ�2™ôY@¢ �øûHÚdUèqNÆkv±ï­ Ó]«½>PÈqÄáéç¨,T*ÞÏBi!'¶Ô†GŒP9P\ºxî la&ñR¢buõoâ‰Ôý�`¡0i©=jo 4ÓÉ]Àfû…5bÏsùÚÞR¤ôe¦ ñR‘î{ËË[´ÿz°¢�Å7µj®êWC6ƒÝ��.½Ÿ@È%ï½wO6„û¨Ê(ÃÑ*K�@þòô…‡†ì«76V?xܱ]j-{ˆnÙö’ˆSÝCÅ^ßfÀntŸhZõ½§Aü.ÈŽt~”â�,o¹EÙŒ®µÎ9l7æ›’a¹‰� qŒN£q”_Šh–TÈöÆ``’V!ba�‡1 /@äÍtzwïØ>yݬ­]J× ¼oAûˆlå<¹ÀhYØ£žèËŠ½­ß‰^c™a·¿ •․<iÛHv<ëŸNqëMåö”7x}�‡¼5g¯s®2©À p‘Ó-äï9*2îP!iè�/Ú2¯íÙ ‡Í ÷v×Ö¤¡ EþårÑÇ&e/ÖQ“g*´…ÿ[!Gˆœd»7ÉzÖaÇ{8w׫‚‘‘ìOí`N¬�yBG«g­Æ9azϪaÁ.ï�ì2ËÉL¥Ï`´-´Ð…2j ñÔE™ÍŸ$Fãq@–4aÜûõp¤™lå·ðtåéáá Á=¦ ßrSÇÜÔ� 2âW¬QÕÏjÔäÎ'x”¼Þˆ¥c½V“È+BPZóLˬy—äÎáCm´Ð*š´Ã‹WI‚!~W¦cl{âW!̇ã�bfï(P«ˆgbµÌýY´õQBŽÊñÛñC\ý¹FôK õ#j;#ªÉwŹbzÌ h®~’˜’Ī];®¤_9,cå\#6ãG˜ˆÏ(ΡìR1H`%F¯)ð#`õ¿+öž$y_ÃR|갥ČQއêxTOÓ'Z•·P£¬>UQõÈU^¶»"ƒCeå>õÔ»-­¸rGÏ`ïƒL€¨RYW¹YkåJ0´jxÆ�ðÁ=j™7îi‘-˜®øÜ–ù ´8å;× î ÀQ�Eh¾.V'jaT‚Â,+ØÆ°µIÛ˜ ¿_õí9µÄ/íÓhTÞ’ò¥" (qØÌð±ð¿f·LÅwË{T–B' £wîÂÞwÞÚÃþNÊmNßãuRNÚKÓ÷ÆýìüØ,ª¸îH¹RfÆcQËbªe¯cÝ�yÑ\ Aá‰f„t‘MÛ)ô¸j¤ð M¢MU¶ŠÏÊMit“ýÆC„ØM5z— Q®_Š$s�€H‹¼iBg‡Ôh¹cÚd®C®W^,S1èB‹ÂÛVµb�õyÌ+°1¯À漫 7œGù¸z²@å(N“áeem|YYsLYáYQ—ÓT½ERŠ#+¾/³Ï:�$í5bp_@N2tªXUž¢7†R'˘]”'Ì5&�V)zRøÎãw¾ò*økeš00`©= %C€ü�C‰IsOÛxÌúÛâgžÍÆAÚ÷6Ä4¿˜MúÞ¦ø}šŒáHx$�as÷½'ôó“¡ÔW3Ü·84Å1Q_ÛRc­· ¤cŠÜö ’úiƒ"u†Ê¥º��s#by&ºŒvºupô�‡IoÍßìzu%Ò… ÃA’Š@ÂÈÒ. B;ßK@&É©EÈÃÕ± Ý-BV!üG›w†“óp²ñ¸N6¯‰±«±S€“»üƼÁ?Øh0ø�»¼kI¬úë°$Öýµõ»[›óвÞ-Ö¿È5ñpîà›‰ëž£ë,‰5ÿV„ÉÕ"e­ÉQ²þø£n”5ÄÊ�¡dîa²Öd“¬Ôu²ÖõVýÇwpšHn÷ÖÈÆG]#w²D${ Ëãã-w³@´PS�”õÏ)ˆ“»Ø3R�»ù2ypMý:Td­Ñ*AψJ|ÌðB} ¥�Cx½ù*ù˜'ðúÜ%r |t*dº’¦¥,å”t-e¦¿¤m)³Æ%}K™M,i\ÊÌTIçRf-JZ—òQ[Ò»Ø�¥u±©°¥s)R£‚Î¥°3m•Ki‘u.²žû£µS² á?Žñ££Q¿ñôú’I`Ã÷Æ{zž$™ˆR4‚b ÷ê�–µÜ?Êôòž—§tu†½36¾}w*ôŸ½¿Ë…ð}_Ÿs=uò5ÑLGÐP c0¥ 3h9¥ð ›ÎBô×Ï9=П4 ß……ܲA ¼$Ÿ«k½bøR€Ú-ÄC¥G˽åŽw_G25"þˆbÖ²3/‹7:Ôþ`–RH€³qrŒ™!1˜››Ð¶L òúXÇ<,æ@cÇG·Ð¹¢ª);¯Š8ýè<óŒóÌ»@W…€¬ä„3RqûÞQR%tÅØõ8ß4©Ùùª—Ôåò¤…iZ¯|Rõ¸¬¾óÍ,¬°—)êúa‹FigfvE3!—�׫`AkÉÄy¹vÃkKWå®ãeyÔv¡bgª¨¶yÑn4iW¿Ò? n¯Á˜áä"Bã;™=œ¶G<�Ô†F·$ÿÓZÞ”ÀéUéñ�ó?H…i©Ê磹w¦Ó1ň#º( œïï¢@ˆ0DwÉ€'!þ_s‘äOpð_ƒà÷&ÉŸ½${ß³‡ØGÓK²%ëôm”—Ê)\…Ã-ŸÞ®ˆù"CŒ�Ø&ð'xÇxâôÛ8ÑÆ!ÚWAàZ,è…ãq4Í¢¦ìæg¤�ÄFrAAú+9b+h‰¥¥ÁŽA€UäwS ™2¿¤°±7p\DÍÝ¿f�=¦�'KbZN(‰ã Èáâ4y/mïE€‚“¥<™žèæx»3<¨êÃá!ôP…’K‚£F�‡€Œ($r׋q°ñL �àØR_7æ ôR† ‚ny=‡–Âf©R”ß•Úb^nqf Ò¯h‡;UÝ” ¥ÔЍ^ìM¡µCºH _7G¿`k‡e  é=Á™;éê6OÄnãçÞ ï:ºõ?±6¢oI5€‡6û°ÑÙ$Ư~Ú»œŸ5 sD¬ô3pCBFûØõŒwd‹d˜,¼É¿• vUK,œâém^ióøÛ6—/ž^©U­8ûrë¦~)Ê~âMÕ×3 ½ZÆq.“†ùÔ@û½}DMM¸ì«²ùãärˆšm ÒÓb7� – ËáÈþÀ°U�H›–~€Ð‘SNIà”œ2º Jl5 š»‡s—‚ÚÎD Ìmè[kb@2効”}ðÉ¿>Д‘ÉŸ¤�ã¹%±ª"–ŽauXÆm‹*•±Ï iÔCã�…Ë=ŒÃ$³‡²Ç‚î£ßB™0«ð¹j«øÞïÉLš�sÎ;¨\ÀÊI>83€4|%3;�PUÑ0C2I¬Ìª‡ÅÑ<]¥ ¦È"¦èîbÿÅRg ¥êP��ICâ[!%ô@Ô cÂTy+دtÂÄHañP$ð¢^Vå L'g;ôÏ|ïäïçkß#þû”?€ˆ¿—Ô)ò߇ѻïOxQPE ¶J:Qô¹sR4ÖóÊÕé�1æÑ½EìIÊ®„˜ìÅê.­NÀÁÿžóöÇ$‡A Í!�_Øm‘›4n+„§’r´%±€Ö€n/ÊìŽJwW½U +“‹3pöÚa ãöx>Ðu¿jÎzbSotàk¤YÆ7bþ{NýÛ?µ­É2çD~jžG:-Å9™òÈ�­sƒnES.–Ù×aî‘OÏ(8ŒÁºÿX…€i½Ì®Êg£óÀW-Êq÷Ö¼ïdA—R·ËSš ”RUÁñå%ú˜ïH‘ºûY™çÒ�!/ìâцY?L^Kf!ḥ�i­AgËT²Ìç3[%¡üì*÷*=±o”O �&ðX�ÐÌ:ú•tƒ`,\ÂÕ¼ÆÂ(CÆé”Ξ҂ùkåÚ‡eq¹HÎ󓮘`”_#‡óí/&*²dÕê¡dAŒ 8íz†i"‚ײ—k^L½ŽÁЂaN73²ûÉÉÄ Êã‹àRæÅ�\+‘ìJm»à5Gž¸õ–ZN‹„ˆµ@!$_N¦¾U˜ÍKU>ƒ+Y¨”d¯Nô ÆÆõ9òqd&pÐX¾†]Çw»ÔG‡«ùã�õÕÕÓe׊(n¨ÒzcxÕ�nD¸#&V*Á–µí¸9;Va—Ŧ€}“eø€ï}]¾gúü¾v+…¸ŽVðÊñfƒ�Q&À/nÖ{Ã^©ÊCxØ]A–i“jeéØ [ÈAò”ÃNŸXbálcðXê)p©ŸÅ÷²×êï$3nŸ&OùÇY÷8Ä:—땺Þõìv�ìÚ yâøgÔ·œë›+±ŒϤ„–ZƒÚ�¸hÒ~1JˆŠ€¢VË ùëfÉø±7ìÜž·O"¦�}Ï¢wa,-‹'qg*‚¸q dGÎ1,�¢=oœ†c©¦ê�1%UEØ ÁýNâ¡êý…Y†šLOV\IÇâ5òoÆŽîpE^&›‰ãÔIŒ#fßø;ÙDDc š‚ŸA¹òT놞@õ†•Neƒïû¤ÙÁ�7<·˜Àž ‰“Ý鉛-. ÍDâ-�.N�‰T[¢?Ãò"³Â¸±­ÆÙ-vW'~"‘P�ºÂ#wIw,š™PÉ!½€•RÂ.QYÊ2…Ñ´²ê­zÂT¸¸1—AÈ5Û¹¢Õ¿l$ȵÈõüêFq “÷ùÕ±œYO“ýùueY³~Éž·²ö…è3WÕÌ·Ü„Ú�^wŽ`ÉŸ†•EVÍn”Î:,ºu0LÔÖ‚2Ï�Zˆ„íZPtzÔÂPX¯…£€ZX wQWÑ¡ÞäcÔ^sjM# ¹óulT~¡reãýùu‚¼Ê¨Äe¬pœ&LbÇ…ãÓ©ÃAÿ2Øé'Å.ž =à;¨zÇ;4Ì8Èé9^ß{áh„†ÁÒX5B7Îb¼ñ4Òš†›9�Læ0Å�7N(é�QCGùáfÓYÌÖZ˜­ý‚R ¬¤“`ì�%ÁØÒ[‹â…ö%�ƒ¢‡qì+çp8Q�ìÙè¡ß¸HŸè==Ê�¼Î¦(-];�å‚ÚÈpâºj a#8ºÔ@)nŽd›ßˆÝœ@ÿ°ÔçhDÊ]&áaT½xSo$ÀçºMüuÃHàDÐvž|²8¡ÆpO ¿8ŸŠF‹wÃžÌ VØG…÷´öê‹ôyñËÆzY0 {éÙiÐv¬,’½E0ª$îýL³ê¯>ôæXže~7I©›¥®Ž–ÁÜVW?ru5b¾ŠšN`�y% ·ÕÏ�uÙOªK�£§®‰â7ï�šSE ç�·Ñ=m‚6÷X×àî—£Œ«‡.Pמ?ØÒ`Y ½�Žaç@|àªÆ£³”«Çnp·µæÔŒ+:Q‡dW¡Z¢s+h.tùÁãRŸ«Ñ\.RÛßÛG°£·ÍH}ñÚQÔ-™Û“æôʤT½rQ£b¡Cp\.ÒÖœ º÷+ÍGÍ eêÙO5¬u5,�‰ðhÒÙTÅ8¸ ¹ævû[C53�á©*XÛ÷»g�TS,vÌë¼Yª¶ç¸Ûe‡šˆåm9TCÆaJ�äŒìÌ,( ç ¤Ó©ÿD;!e‹�mZ¸ò­¿.TNV,v�·žËî–™èf¼§‹¯mÄ :¸Ì–M°zsx)ƒkÊÓ¸¹¦æüEÓø´¯`)ž¾ÎÃýgÞÜcwÞÙdq�)¿óliL^+høB$®†¦6'8U„­|ãï"JKB…´$#ÆõU›î’ÐÒ·—Œd*6¼Êß —YnpRÑb(âåŒÖ÷â%òÓ–Z®¥,Ä<êg0� Ë«;lTÖÝ&u°]Î[3>zê7î–càFµÂ=DUdz+¢½3<ƒ+èœdӀ®èËÙTÀy8Æìæw¥’ú�lÅ„}Þ ÑïY˜¡sŸVÄ Ý»¤ir�ñF ù‘øu�^«ìõ«”. æï·Ûм³ÜT­¨ f2ñŸn¨Ñ§#ÙTL§Å”ÃM6‹÷"vw¡ü–q2›å‚�ÑÇ&«*§¡€Áj'˜ŠñèÔk˜Å«§²¶ÍG²w_ ¿¨^ÃRq�ƒJ4{¬”=8g|dhdë´ê BôÃH&uNްPheˆ·#Œ!Îâeòª0fW R42ð4’Ä£q4È5;dôÔ#÷—Ÿèf%ЇßæÈUư@9ÁeÝÊ¢”ø´d½@’h½¼ Ê`ñ¤j­Zˆñ—¢:Чt#BXµ¼£õèŒ í]ñº¬È§hQÐ7�×¹hʧR«Õä5T×2?^ª‹$ÒûÎÒ ‰Æ¼Ñ@ù³pQãv¢+�@bÁû C8Ä9Ù† ¨¢§¨ÀE°<å,'5Ì!$¢¡ ñ�%“Sá¥%Vˆ†+;€ Û˜®ŽDî.4¶„·û²Óp’FÕ—7I³I±8^ZKVõN-¹˜î=œÞ‘lƒJ³ž”ê‚&×l=´€ªû0ˆÅ¸.ÈoI ï •ùGÑÊÔ© ¨Eâ)µôâ&ó7¼Ÿ=ñNÂ¥'HaàM³p6L”� 4Õ&°FãQ,oà\ëœNX|nÑ‚ºä�¯`ZíÊÀX0@Å?’Äë'b-sÖKæ~.¡1½ë ÝqÊûH�M¥1É-Ãe§™ù‡CRµ+3€–}Ф ›*Q©íÓûöC³1IKÅõÎÕ–¶N——¸tÒ’ÅmM{�óñFÚ ÖÅ.e<”Û—rÂ~÷õ�W¼òõkØpÛËi>^~ãÝ3ƈñ³<ÙÒOíd¨f EHÐmVr¢‡˜[Ò:4$)�ô)7$uI @yà+rQÜ¡’™©ÞŽ“Cån•kr!Öak.þ ÐW·Ê¯™×k×!ÅûYz 3Ûn8?fÉDøHÚw=£xétʼnÆ'òà!‹O:­-»¾c¶?gÉ›—³H8-˜ã‚tA‡»QÕ´æfŽÑ�EeãVrq++£`ÅýƉ驞ªH]QÊQ¼sÍa?ÆÚ UC’ÇAcY•�¯¯@œçù4믬œÁ:��bF›){ôÔ¥oæz†œÊÊé89…—˜~„ Øøg! Üìʱ5³¥.¶¼4Œ"Ø‹H4˜—™‡û‚ÞlsCg5—"õmÀe5(CnÈÚ«¡JÙ3Îl˜ál?ö†Aú–íT3<û¥gµ 5'\ùDï Ú Ù9ƲDA]ºÄóä"$«[µ�p€Áñûx7>KrvÂi‡NS#C*aF Q8ù$( Ps÷‰>œÈ"ô$Ê»¤dù*œ�d5©¨o@=”ü5 ËŠ¡4 ‹Nj¨Pe5ÒN*bJÜñ¸‘[I¢Žc,!ÒUoX‘ my{u1J–2³¦z˜¡J,.Aü%¬Õ7�¤Ë1¨ç•>¼$0Ř6€ª–w¬ûH[œG[„KS½tmc“Ú˯÷,‹¿H³±HwŒ.UÒ{y7¼eV»ª˜"îW0àá~§Ýb•Ò‚»Òøn»e¤bvw©rŽUó®õ½X7Õ*«¡îõ»¡‰å× Z*н%· ù¥HM[Å{—¶NÁTzÚJ¨•%¶t²K¥Ï#…•É:ž­åþL™ ÚÕᲂÐèèJ¤£HÐ _Ñ3lÁ²ÖH¥âR|–—Ú2Üøº�~Óe¤�*XNÇìh‘Ge¤l6ʬ˜ëŠEùeÅ[•ǹâ½eÒXQÆ"Üfy{`.#uõ(­ÚX¹«+lh/I¹Ž´sãÇ}y™HÑZ©F�ß”+nÃÉ*Œú2°¤Ê ÿ¥I’·�ÿ[±Û|悵`[½Ú�îŠtê’w–Íj°r#V7騲@£•Ù¿E.Ó›&¯éE1êï"‡�;~Þjó7¯´qmß!]éüèœ{«”µË\àœâµ ­MéY'ÿJ�*;è2r�í2wËÈ~ëõ#8PçjêzÜ«ŽÉ!\kS5ØX7îÚÕ|$ªÏÅØ§ÏÁ…Ž]Y*ARk³ë"ƠȲYhĉ1åLºÜ�—o ™ Þ’äĶ%S7-¢¿Âœ]µòg"¥ ©ìéy ¿Ø|œU«˜Òd?L 0òw8‘­‘ý6bA3Å`jt‡¤y4 ¹Ñ†ˆc¡G©T0`&üµ.”°’quEãÁ-8¨F×p’‡Á�ü€U#xÿ•§A4&Í£ì�â^tEs¦Ù�Ýš,S�D=CÕlJÜ»ï�¼G¤û£¿úÞ �Ä…âNAÝHk*[àùÄ&-Äš­¼Lò°ïQÊw žŽ½JÃiHfK¨÷äÊ3ˆLW`šøIôã]é®È+Æl¥M—N¿¦ë…ùÀoÿÙ~{2�Õ›ž¼àI…{×B?n±Ùi˜'PA\Xr¤=Ö_ËÈ*óò¥ŠÝù" ƒ·½á UÉå˜0¹ˆ`ÏβZûKÒî¢R46¨ç ûv3Zäœ}m ß2}iÁ¿)æQøPÈXkø®Œú¢s5Ší‚bDÛ¨dRE;A�Ž^×|Nêd¤ÒMü®SÝ5ðìwh©Ü:2µqùyfòÊS†xóDåØHZQ#LP&ÂÉWçÔ‡FëyA‚†l— –à`Š d€ dµ‘ãŠbÓY.ïy °ð²¢½òcV8‘p%HO#8#ÓKÓXDš‘i³±cêDOE´]‡A{ 9\a–,zÐõ–âÄ~TôL7h?f56WÜÃÙïåïTëŸåâ”×Üd ¡î†\½ËuFYIÿ¬­Ç…,uL©Ãràs†ã~�ß�_ :®pó͆[®UìÕ-í‰�ÿ®½ G…6 ×{åÚ¸îÄ/4ß L³ ø"hµ8a 3Ts" ¿ßT!âx¢š�«`ø*›/˜EôH†˜†”†3Òì*“>œÁ<Yòœ@Ëy�ÅÃA)¡Ç‹dÚálÀÙEÿz(Èê£>™˜ £¸S“Y*#‡ˆAj3S¹v8Q’YDÙâ"�yEƒ\�Ç¢3¾·ÇQ6ñ†Ü\¢zÉ#â'Á[2‘+SAåD-0 €ZF)."¾mƒÂ=Çꨰ.ìƒá¿g"[i“>†€[AlŒÖÖÜ5û[2Q7&Çe‹é É©4 "#Ri&Ä´@±™Åž‹¾-Öën¡’¦ý[’1ûz¨›é‹%ÄyI·”Éëoç! #Åœk%j.6h‰ù0"Npú Þfçr×rm/’Ðy#ö~q‡ C”«(N’x“Ùàœ¬W)iƒ‚@/4*KÙûžté ÿ^D'Åç™M„y#®, Bû€ñ‘"ï ÅeKñóÒÚHÁ¨®ÊÔc*°�²@‡mÅÉê �NaàÅ�²B;•Œsa�é4€œ$ÃÐeF,@KòG¡D–§&Ú0N_—5¥MžhI¨ãu(ûe˜ðV¹LݤM]åô«l¼z†°²‡òðê‰MAªZZ?Ü�2 ¨’XÓÉ[ü¢m¥�mÎŒ“»\¨ÊsÌçõ šPI1ªZ¹ šðL30UäÅS±þ-⧺^4ý Ã~Oй_*8R“±4=cƒ Îoô1Д•#…É}e‘��Ì/ŒPl8ÙזÑ1Ñ‘WvFU”h¥Å¿ÅKÂÈ”ã•ØB¦|cù•té” šfL41Ý9^TœIÊ&] Qí‘Fy.Rœ \ 6âÔ <)ùÈÄÙv·i’Q8tÂð,-˜Ä :.ÀÔÜ�ø^Æ{'Ð*^ˆÜ(ev_f¸›M}`"´zy°]%”�4éW2o ÍNR»äUÄ—ÔsAë2{‚Ê‚;~Ö8|o¼°L•T�åéP Œzf]–—WÚs©ËRUO„ÅË9J Z·Ú †§2Þ« °Ýa UqB×0AŸŸÏ"\‚D$+¾� »&‡JTûæBz:Ьf2‚k‹^å[‰^o6=Kƒ!/\¿Œöÿî§x%æ ×sLžð+‘ \ÀÆ0Ìß )_ÑÁÃ:è�õUjpAÑÄÒë]Ê9î\ul0Ä´ßiÛÙŸÂ8˜íôVýG›J�nt¶LaXÅe†.B“нtéx 1) ©€O‰å:Î-�†L8¬½HÛÓqD“h¤cJhMô,æ—YJ޵îYûbë˜=U$!n&HTJ�ð ]47 ï0™é3+òªØo)¯’Ð&N –Ù€ø–.}¾ê¢¤³Ó¡–êå %òVQ<ÐR�ÚË4p˜à(I%‰g¦Cb uµÔ`8YüZf +úmÓf�9´Mœü­Òݨ¹*6'Ʊ쭨I�XÁ?ÊËÔ¸K• {ÏNè\8þ˜Ic­}©3;Ã.Sâ‰<ìi(ð˜õC®tô.ÍY¥“SäûM8˜¡Ö ¥!ÀMd«2Àmfèdx[¯WTÏàÂÖHŒ D²gÕ¦S''Þë{íyq“¥ÐLenèäj.QîüÆÄ2 ¬³`~º˜ým�ïí™æF³ \J #Åš iQ¢ÖŒ´@^æØ+.ñCm\0ÔÛ*”ÔÚ/{]U‘^}YذC»E„4C‰ÕÝŽqkY� ÛÖp :�CFv[V©†ˆ)˜ç}t´]í8®rÿËMbîj7~V¦!‚çz&ø*8`ã`2Eö9÷z›Î]ņÂḜÙÊóYQ�Ð8I戂õ\²‹p©BøZ2¤ƒ�§?—¨ UØ´ta��…Tëû1LLŒ`ʼ�`�1I3ó3|�Eˆ4Õ%¹dýO1dr&¤ߌ¹‚ J:~ŽØGÄpê«Pk6„[ó¦äYÆþÂtµ;Š®aZG@å5©´C) †¢•†éà:?ãÍ+�ܹ¶�”sAfR‚�ûj"õy˜H¼<ü“œ‰�‚û¡ù°Ž]Dý¢G ?mbõ™°ÙŠÈˆ¡k•»Ë¬ÕÄ�°)- ¾�·ÕÀðÜ^>+†å ¥¬bç}¥¬Ÿe­NçQ6H >Š$ypM3ú·@�õ£9Ô i1>«¤Ä•A ¯Oª&YˆÄ#´€Òìàdº$‚o8äa–ƒ¦gé, /{›«ºœŠ—Aoį®·¹jVx²:¿”UdW�á e ÙhÔ–}ìª^t5x¹–D<Ý\i@:äI#§¤CѬFC͉ VÃOמJjÈ ƒ q[¶ÛU¨¤0§ËømY0©ß®®®Ê¯£ÑH *ƈÍйº V$U#dNmÀÕbѰaUCêzºûkëS–.a U2`S[ôºïêWª�žú®‰-wÍ�`îd˜’!m\EÜ {£_¿c¶ µš)‡ Ð:0š�éiŒƒá±›wúêhÒ&gcú ÑÞ_T“Å‹pØu¾5‚)_VfIÆçYt˜öð ÑÕ�Óg¶*ÔÌBÚÐ*ݪå?¬!.6v[ÏÙŽæj0PtÁ^@åéVžÚcй©Êl>îRSÖ¨ ÌÅG’” ŒC¡ÄÇ»WÍî7"~sPZ‚þIüá–l=Žõºž- Té&x±ûÒIÄ•v¼ÏHÚ©¸%Î.¢|p.> ’ŒùÐQµʾ [\Fié©¡0c [<îèzO�®®^p�Ѳ$OÎÎÆ¡ªŒšRãyˆÂE÷]ò¤šrœ¡V¼¼f—¸óï2 x¦ÐU*j3îTÞXxö!oM[-cg±E#Ië4�™’‚WŒ)@&͵Ö�Ûê”±[¶pwŒ‹D‘ÍÿÌÂT$“•Ý\R=¥zTÈq\Ü¥ò4©@¢¥H˜q ×xS…ú8c}¡Äf7ÂÄL&J&èÀflì\ ‚|øF'tÁû^É©òp@/--éµÒõ¬0šUlžÊXõ*Ž*ƒBƒ!aJŠHÖ^È´Cb^�“ùÏ™ÇÞÏ› {Ý6 Ñ£Á{•;µ[[HîB]ÈéÇͳüAi¹Ù� çß笮· �ƒ3/S»Z¾Üã@Þ&ª‚Z(ÖŒç_Y™C ºXKoFu7]„q²X!‡,p…,gß…ÓâerƒÉᢟDj>a.JP|\<äŠ4·$ÔX¼àWÙæSË6++ärü4™^R¬'o}uý�÷s’àâÝ‹F€Š¼BÇ,ë L<ÌÊ饠cÊŒ>JC²œœéYØ%v ¾D¦ �‰Nñ •ƒª  )Hv6è$�Œò ×�úr²’ADŒÅ0Ì´?Ò(B¾±�|È­CQå�V‡š†Á˜` —mù^ùÕa ½4b4á|�½QnwÑ$í`uÂDÆY­(ûB—zÝEÓh„Ÿ! r:;GÙ9qR8;x˜áú¤vqD+˜·!s÷ ùÜ�¬^v9ì]‚Ø‚~¤Kuq.\DÕˆ"î×h–Æ%¼ÄácLwjù߆óÚ(�“ &¬k¶}Êúj:�(SG ÔÜÇI xhf¦zÊÅ«ì<`4±Ö†žÈN��åèRì ªorôñ@ÓqŠ<_µ^YG¿ìz‡û?ý¶s°ëíz¯öÿµ÷l÷LôÎ!<ø£Õõ~Û;úeÿ×#Êì¼<úÝÛÿÉÛyù»÷Ͻ—ϺÞîÿ¼:Ø=<ôöàÞ‹WÏ÷váùÞ˧Ï}¶÷ògïG¨ûrÿÈ{¾÷bï@íS³ÜÞî!|±{ðôø¹óãÞó½£ß»ì§½£—û§ýoÇ{µsp´÷ô×ç;Þ«_^íîB7žè—{/:€–v_ì¾<ò¡exæíþ ~x‡¿ì<ŽÍ¼�_a$ØWïéþ«ßö~þåÈûeÿù³]xøã.ôpçÇç»Ü ðéó�½]ïÙ΋�Ÿw©Ö>@âqbQî©÷Û/»øÛÝ�ÿžíí¿Ä!=Ýyt?»0âƒ#Uý·½ÃÝ®·s°wˆÈùé`ÿQ µö Ô}¹Ë�ýö§”TG¸±s4n_Û¼Úà@fÀ#åH¥Ð“£üÄ¥ßIsúNFBçë9j3>Rˆ¿¢B4e&¯4 6d[&mXÂ×=qÄ–‹J¾Œ�]O�dÖÁ�1(£�ݼa׉$ûÞAH¹LÙùC‡’¤X�£ÛïÄg³q�R˜I"wG|.{;¯ö˜¥rEtt¾qæ�&ÃËõ®g÷ÍŒÞVBƒáh<¹b03g&í[Û"í%¹ Éë­$6n[묽]xl6�2gØ|*U}ùP�Øy(Ò5šjòì�|üš]¿¬€™.Ÿ)#|$ñö¢<œ€Ì…²z¨³(� *B@°üåû¢šäF4ª-ðA6�b(kµ"8›X×[íRÎ-çYEU岤U/áÐ¥Ë5õNž'RàºÒxÙ�´ Ó‹4"–CºmôÐN�®•}˜žhšE™�ý’—ƒñŠRêÐh)Å#ös¡¡ñjÁ;w4º¦“�3/fkáÉ_­œçä÷ÖB!·wæaßÊžÇhFÀ“5 éí&îz;2ÆyT!;·”¤œ‡õè9ùö²£�vÙÖ›iàòÙbUÒ`%ü¯ºÚ¡_.C—-\Ïn|{Ôürh®)\/ÄkÝ0it—É6ÖÜwL劰nìŠæ ÞÓ=Òµoj”ÊŠȯ¹™ÕëŽn^lUÓƒ ³%Ö¨ÚF"Vvy¶WÙ|›^:.ÉìÜй�©õ-\°Šàº/[šXR)ôU»•^{n?Ñ�޼9�ù6X oU^§×ÆšË�ô£ãì ÷e­¥6×™¢£´;èr Q.Áóny\³öÑnH,ôûêÉMf¢¡KaåQ� ê ¯_˜ñìÍbö£¸ØÐ*ŽO³¾C,v¸h~¡viÌj}½»ùÔw7N®¶h™†×m©ø(Z¦ë5›<Ÿ:°‰~ÖXå©êªG•Mjµ§Ý z~—‚Mµ;æG‹{r-ž'ÓàUš–QYÓɦ0Á‰¡ ‘Û¾Û6Ö” ×†Å ÇâQ•R%m¹q*gït Þš¦,\W„ECM“«2Õ0ÌÊÊÔé<ˆ‡ãPÖ5½m…9<aÊØ¬J7¯D‹òŠÿ6Ói�KrÕï˜s 2NqHƒ<œÇ2d7xRÓè‚„cKÂÓÌ.sjÃÂ>qÎω™qê7´VÃèhd³Öµb«eçÁ4äTUž!ÁvYw#Ó ñlA“8Ê(8µÂ9­ä"ôYÏ¡Œ#D``rÀ*ß+ú¯:©£é‰µHk·§Úî1@8I¾ý`­�Uÿ þó°se ¶ÒuFǨÍ0U%»ÌX)År7— °*-2v$Inn‹f¦ˆ#´�âøK³»>£]IB&lq%±Ïb à,ämŒåãp½–ÀeÑŸ¡¾hƒ®bÌh1PÆû†‰°Q 8z� ;náîN8–ÀÝôÇšÏúî˜S{7�1æI',82RP5sŠìYû+WÉ8xGô× IÌw(y ƒàæhqŽyÝй€#Ü'qXAwP¢"OâSQvx:ÁE¶Ë§”íké¤ Ž=”™U?™*55å¾(Kç$ǰ ÆŠYûHˇz4шЛa4ÚŒ¤ v5åLt¨Dö0�8›1ÜQ „‰Ñ#•2 ù®4Ô•‰dFû¦Ò©¾dß +›|®× =­ aRÀµ1ù¨Ñ3TkÂh(6bn��yW„Ù¨XÞ2 GÙ…-;I¥!�¨‰V¾T‘iKRéÆÂf œñ`çÕ^W®=ô0z—DC/¤!tã<É)GçÂz-Cs#(Ï™ƒ•g Çb–‰ ©]O%Ä¡DU‚¤7gDjÄ´iIyîU¬„¹“·Ê³�‹Õ0²wg8J¹Ù ¤ÜY_TîF…£�iæ. [ž‡¦~YéÛ\Ƚ³Ú÷6NMsüÓ[ƒÇëåÇë}oãqùñx¼Q~¼�WË�7K�;ÝŠI«Ò£;Æž_$4öl±Á?rŒÿÐ1JüCÇ(að£Üp#v³ô¸ÙàÕÇ— óש>*“¢¢ <´?­à$z¡òµ¨Lg"º9;=‡-+bÃ;Èî³(Ò%20RN¦SÊš+3I†¤tžÈFfQ9ߟЛe ‡¯l±ÆGX Æá»p¬I©Ïï­}éÑ™HƒòU+ÿ©�`\Ìë_˜¿:0u`þêÀü¹80ï¡ó"fáƒä< 9'ž¼j`CIÓ~¥Ç3Ó�E½ž=^‘±§Ù°Nž6ê©ã d˜LVÄÍ UI&B)â({]ßjºEEèŠb úh“a’9zP=’²åc}¡k9~k5“mïX¶r¤[4b7ìGŽ0ëA~Î×-òrŽQß7Ý ­7æÝ̧õIÖJØ•‰Èóº«Î,FìŠA-ñ£Çb$Š=wÖ¯¸@(¤Ù¹ŸèÓq2xëÔ\»$Õ&É�•0G¬ÅT,nZõÌ©)ey®L 6ö¥EÎ¥Ín×Ò™¾ˆŠÝ@$6–Ô#X&ãð}ÏTç¡*¥eê{k¦àj·ÌOËíŸ÷ö±{P‹È0Þ�×QÀ„ äcàá:ûÄrõ‡!Çå—ƒp“ ZM“Ȉ 5èÑbäÅI‚„�Ks*l©MF~0BKõEÎmj̯ЈɚU³"°²s=�f9Tô!wheÔ€IÖ?]YßÜx´¶öøñ#¼DˆÞbWÖï'"Ñ·Ìö R?]¿à7ï—§/Ø&G�Kéöa|õÓ˜Ú}a2 gˆ0І¬È!°È]Á«@oš…3�z�YËEÞòw˜�žrÁòlàL�°çŸF2xψŸÁÆ'áð¤óžÎ×k̉¼ éô©Z¿b°Kk 4&ë¹ä[Åýø”zmP"µSòƯ ³¦?¡»¿×nP/›%~Ò£äí}ï�¥÷“/éXïLïL+t×¶Ö$¶Aÿ-tßÙ(æõÒTžÕ°ç“à=*LBâÌ9¡¼ âÁ9*×}'tm°.zƒ€SÌ«Ÿ†¸!ˆ§û³à]tFò7B æë×!ÒÛ!†�åŠ8�í0$)µ^‘ÚÂI»QRcOq+#ÀÔ†}y×òT8‰Wt�zkF\¿äˆPe–Ã&†×êð­öJÜOÖ1’áQz2tJ»â”¿þ ³>*EÓÁ�êËÐy#ä/s.Gî9ïae1Ť@Á[;<ÍyÇúL�uŽ£š/!JdBrv¨™—t$O‚œÝjå¶_fSÔR¡¶JÜ·yp²’_+¥9—‡×k onmÐ5SUÆX•2„Ò‘ë.Í»_f /$xRÆ1O�<™ö½õÇų/‡iƒç«×^t�:Ö„&˜‚T€¯kåã­%úH³5'Ái–¤§*<¨ÜÁ xÍ‚±°ÔƒŸï`Ö°·Ì�hÛ5›E8DÞ›ÃAîáÚ]i¾�ø‘/Opˆ_þqgŃúºˆ¾.¢ë,"N¨rkìħ¾äüœP,×e ¿Ž7�óñÛ¨L¢=‡±ï9 ÄßìÂt@¥Ak²Eâêâ,Éd6ΣB×æÍº[Üs»å¹Ãç‚)[–.²ÎVs`A²[I¾<n�|»f}!â}«—ö ‰w£¹lx�ÈÏ}"ëÎÂf”úÓ™ÔS)„‹ã+œ™æm‡¦¢¤5ôVI‰…‘K€Ma™þ°QæMft•,cЇCo�«‰²Ù,ñÜ0`ýTúmoÃŒäÐ.>?:P¥„ù Ùn(]aç[š5>®Ñ–ý]C Š~Xp¹•‹X´ïâAˆyd¦+¬ìUcEsþx½‹†3aHË>/€ê�B†Ó4DÇŽ¡e9ˆ¼š” ùÄëb=UªÇYêØ-…Úg8¤0ÍäC»ý!¿½ôZ#7p¾ƒæ÷™´€@ãµ ±d/=A%Ùæ^P´× s3 ÌP82Ä`|©BõÖ7ƒqÄ\Ü‘÷8ðI‘íFÿäoE-°n#Î�û×L:à‚^Îd�}'öºÎ§EÍ+ЊF‘nVµœÍÚ–ZßF¥ —ÐyE-—Ðy…ùìhTÔÇY–UÀÉkvÔȪZà˜S·tL¸;êVjº;Ú”šcpÎ+R àÃp/¯É3&Vöp@¨�Â�ÔÃ}ïnsŸ«ÊŽÌ(ó©Ÿé¦·x 2Õ¶ðX¦xÖ�¸U¦\Àì€ÊݦA»-[w Çtçk Èv†³Ž‹=´g5Ï …MZGçc„°¨L^fË60Û¢N¿m к"/Â;G£µÆ � ÷ÐÔL‚Ð&‡s«¦g�F%Å-ô_A*Ú†þ^�Å2�àé^ÕA”ñ kæ¾ÅO•*Á³ Ù£E¦Ìá7"ŒLe°F«^�ûˆé¾|’¦FU†ÖEúE¯u›4ÐÜ ©./âÍ-V è²Nƒ7¯Àx·óŽá›Ù`dsí&š]ÑßÂPæ^’c›×R¹Ö³GÅ6–„©öÚ*HZHݬí¢þðŽÐèfUo·�7&<´Ð¸~­¶›ªæ¯¿à�zùÏJå\1ÜëM¦[z7MÌUÓÝÎrY ¢GóCªVs±$E+�µ�›4çI¶ÍKF2]o{Û[ÆHýËBYh°pd°\ïô¬AÉ1"ŠbÉKa•nەݨ.UlkUs£*¸½o ñQ‹»*ÄŸ‚\´˜P¤…Bªå’É$‰¯Dº·ýW¿ÿ¸s°sütÿ8>úeïðøùÞË]F—ÓKr”�9ŠÇc*n8Ó¹$C)~®pÀ Òƒ©G3LÁjd¯ù¡ßi;;äé6€±$ä'ØRaÎ�Q(ƈ ôî ,ÇÔAó_Œ‘�ŠÐ;½�9C(yØøF/~¢´(bvËEÑ'Aæ­o¼_ßN9ä¡öà<ÞÚÃá”rï}ï—ä]溪(¦ÌÆ#t«1¾ô6Vßo¬§¾wdk  Iµ�¡’Œ‚gP”Å4Æ||ÉÝåö°Lgòcè( �òÔr‰nÔÆ ¢/½?Z§Á[RcäÉ-Ö;ËH‘®ž&1È´yˆMc×½žG(Ù¦áûÞN–Í&™H4%s–`„•Ë œ5):_tÜy0É€òîÇkC×;X^„A‘ºÉŒÝ»†¢¿”4—áaŸƒT’× UßÒm2x>l¬™ÃÅl,}v¿œPh’SÀúÇͲp4ƒA�€¨/Ë xˆ;³Å»sé"dÿy Ñ€ ÿD�þC†q(݈‰‹u)f^‡Áw…[èn: YÉòÞß·�jÃdÎÒX^ãÈmŠ÷:*ɳÐ3ê3ѳ+CŒ\àÍl«ê]Êì£z×õ@vYëA¶)�´fàOMp?F ƒ¦Áòn¤Â“g½a�Q²"iY_Ÿ#bJ‘ôî3*˜}ƒ÷YbÆð“ø¸«F÷ÄÆ‹V¿Â» 溮Lͨ9ŠžJ˜®&KônË1ëF“æL^èÓm„`?¯Ÿþ?â[^7˜W[�_“UÞaÉàÄX}(µúÉÈ’Wø«ŸwÍèíݺ¾˜N§;[ºŸÝ=²U1ÏÊ97,ó� ¿„¹(‘ø/t2„—ù"¦£La¿Ì ©‹µó¥LÆ<:åV }^óPgƒû¥ÌÃ\õELÄ\‹¼/b*æÓ§/a2*ÜUÿÛøÏ•o÷= C)½Ð QÀ¨üÒú…CLG’n¬"ô–eó÷*XÆ—¨°AŸ{ñ0NNOÃ4’¹&¦¤á -c/k}Ìã�W»ÔÂ/öêÓ±>¯Ÿ¼fý˜F¹_WÏg½z<¬¡¹«ÇM»î`íW‹4Ût_Ä D©Œg_΢iº ê«sgk^q§vaÞVÕsÝ–?²Ré\q‹û±Ð«àÈʤ)Ö;õSU!ëæ©—L»dqÕg˜ºúh™×¹Ã×[É2®m1d§#(oÖ?meµT¸É¼KûÉ…‡=oõš_7›Ž)¬Ym•¶�ŸWsl¾> l]cå/`Êv͵_e\ú©'´ÞÊîÓ̧ˈõSãé:áï;#áO‹—�cu¾¼¦bŸ9Þ ›î¯ˆ¿6âëY›ZJ_²ûþÔÓ »äijÎ,ZDes†¨ìÿÉÆJd@®ÌÏÁÆ•æxÕèuQ`BŸÎ¿˜Àö¹`|þÑR�‡ç^|ÅT¥·±¼a@Ý•›ñ: ®ëz=ªz+“+=^– n-Ÿ~r«Éû�òÐ^›ºWÓw�:ñMËã5ëj?œO²Í ^ÚóÍ•?[¢ üÃ\äò8î¥×¦c5’ñ)æK‡8–Æ WeÓFðdÄç}x9›œÂ þòžCÁ¿ó¯ï¯¼%÷€?Pľ¢'Ó÷'˜¢ zŒa¼ƒ³Ð÷örÊÜ|zœ» =c€‰©Ì¸' Œ›'À°£'›«;!ÃTÑ}”owñÇ$�Ó-ÆNåãžRWJ xÖáçhME4P‰áÝJ»â}î{ÏXŸK~Ú'£`œ…'¾ W… ËP‘óò¯dTB±Ï½¡ÜÖ˜!‹²W‹¼–2y!Ú­²Û­� «KK®ÈMñýšÕ«k>1 {–qV½�´Ë,ÜX<Æ Ÿëü�v ¹°ƒ=ü¦�cx�`‚M¹…ÅŒÍ Z¾1üc‰›ÃÒ�U~ZY“·Rn2Ú£=ZÛVrÝ%;gf̈L¤N »KîЈTTÒŠ^`Rî¹.ÑiŠûÖ’;«¨ó Ú±n5g49Æ4*iû·4\OåU¹¦êWÕëj‘•e†Ýt-¯…Øü%f.²Æñ¸ç,"‘b^IË1ð¿hþtÀÖÏo«Ínný0™!öF‡IµÁ÷—pš¸Qóõ4ùä§I³�ý/£pÕ�¡¿ú¦­ÙnŸÂ,ån›ÆÕ81|T®=ŸšÎ•ÖHÁ5÷“i¯ é.ößãOâÛt;Xª cu}»wœ¯%úø„.`áâ(ÔÝm`î£ZÅIl ++ç¢áí3› »w_Þl°�"#µB±IÁYw¥ôeÒåx:³/<|Øp\ä¡*$²e¦áY�ǨKFЈÃÈ–zÒ߯ðä0sW8Ž“¥ð=�¶'”©™uæ7<¶õ¥‡»íB»Žë†2òâ$/wIÎïÿj–ÜA¬IR@¹X®‡Ó¯ÏçÒ¸³s¼eæÁ«'xUŽ[Å�iÃ%ºÈ]`y6]œ�¥Å¦+h�õS5! /ô9ž=óHäÂT°ª�ù}ç‘úW)Ýýóozò‚�ޏBç‡ ’-غt­֥�Ñå0Ô¾ÔÁî(eó+jf¾ŸÍÁHad¥¸pje‰&ÂgCã›2¼*¿H£$Œß1š!¾l ZVÇz%T%Ðhºk«Ï½3E•¦r`D7‰(56?=T£Æj¬·˜$^Õ ¹?šf6¹ÞÄ82jÝÂì4¤·6AƒÇµÄáa¬oõPð�QHw¢b³¤ÑÞ pÙBÉ´Fá'À»RÓ©Ç7'k1–kÏ/½,(>nxMØHÕáVrt�»¤YØš©u#±´dnp*Ü J«µ�Ÿ;^ iü>KÌVÝ\}^¸½MÞ÷ÖâpßÒœ4¸ºõÉhÞ©,³PN:Öô~ê“o¯w#ŒÝR›\ÞÜ>FFT+ ŽÞát±xFÛ‘»¿Z ˆx‘xÙìTܘuñòΓñPhE „$éÁx…¨Jmd[ÄSU�;B¾„ƒ þI$C2TÑAñf�‚¶]¡à;F€N„¾‡7J• h<tiLô4 ³0}¿ƒÌÛ‰Ïfã UÒ«g)Fè,Oð¦o²HÍ9o°§¬üUë±.P}“CôæI(®4¸±êÜhΈ°3$©ÌED�I“ÁÛŒ¦æbð6L³óïxu)‚ìE™‚PYžŒ„M¨§3@Úp{¬~œ-|ƒñóׄæ}å;ïÁˆvŒ²Ôw+üÔ"ü“`ê#Úä§��%^s]Ùéš�J ãâb^h’oã*ï7|VêÌ2*ÕÌc@¹|Èf¶ˆœðP{‚ é�’Á,ÃIG:]E�žö¦Ù,&Â9%I¹Š:L“YŽèµÒJ/§p{�tºJå|º¥Ùø¨ó~£Yw1{2qo½ ö,^p$eV`îJ¬ŸÎ$(Jèp³ç¤ (®²Õ�ºŠæ„³^4w6KGÁ@�ýüTÔµŽ~ëMSå“h„MO€™%ûÿ;m‹}µ}\þ¡4~1¾ìN÷Äè¥uˆ¾ëû(ÝÓm¢£BšøD½‘¾w§3øù퇪ªWå¤Öz­ŽbïªÄ0{VäùÚ;‘F™°¯wæÎÊùm«,TA³Ýñt’ÐÇ×§½ìôhI8ùwQÁ¸J‡‡L;»ÄâíB¢Ì5cì¹�Tp–¥þòF„•2W� o E¼ZØ*q~ò×»ÂÞü°x_þšì�Oµ�Ñ8>?– êõg°¿ Nfã<20ˆÁ»®s€Üj0Ñ&¨Q õéDÝnit¦,Š™Í÷ç5”Jã86í]r»”¥¢˜+iÖ¤.†Ö:ÄVl­*äjôÎtú9„ ZåÛ!ßi´]¯½wc <!@ìX#‹[AÞÎ]ùo+Æøm#�Yí‘×&CN£ó®¿\)öšïåÅǹðHÞ5˘z×y•K6×… ±k#ŽÒNÁ#‘"+“¡ 0£Ôyrw½ÓYî]Dã±mã"�¦ÉEF)–ê'AàŒÙé¦qq« ö”*cÿÓ©u‡Ðqá™4JÒ�ÌÜ›Q·ÊÙ=Q7ŽÈ­´|ËËÆR¶O5ã…�w™ŒÔº‹µ‹�Z¢ïeÉ86"Å:üˆ…Ú}®–öuWÞE)fØR—Òp²UUXP8}5ÁopAÁ�[ |ЩlHjüÁx iûa~ÿ¯¼žç.'º~ÕñV¼uÙ¸µ€¯/Q=Su† âzB©lè¤ZÝÖ?fYè-gA–õ ®\ã`·ô$?/>¥ðú --Ó0é ð×Μü’®¢Fa>8Ç˯ÀƯ°8êË(M&ðLϤÇW¿¾™î:ÐC…^´eë’¸"Æcð]ˆ)âðÞ×ȇ=ô©B2’¥;h*²ŒT”((toù¨Øo2Ë(^@ËÍ;a„7¡ß~pB¾ò—%’eð�ƺçAÖ{^»Ü™ß‡aG‚9ÞaO¨]ÀBGþhÁÊ£'W´|oÙ»o¿ÞòŽJ€G…(ÿ_»]‚îd•]©îŠ×�ÅîK”ëëñïç0gÃæÐEÄ$¹ç@¬)±¡s¾Íˆ:/‚é•'ôvç6¬ÒôÈZKØ1ûÚ9rô�ÖœæFBÑtü3Bƒep|sD®ƒ+ÖÃÅg‰ šÄ‹[C…®bU„9r "UÂç† î�JäpkÂX½gí¦`z4À”‚_"ƒ¯(‹—sv€ T¼…^ae`ÈèUa‘Òè¯Ä8é|>’Û�~Q+ÎJÞ_žŠsgÐ8]_ünÁ4p:*² õ)HCö½¤+’˜ŒFPu68Ö³x—’ͦÓ$Eó4m ^$C&½€\�¬œûýË‘'SöU¦øÄ2…¹vøÐ‘[€? Ó1ùVÖùnú–LBiMÂL\ǧ Ã{í4¤€Nq.îžÃt’Q5j¦«À{ˆXx‚/‚Œ/1fªˆóä7%Šu ¹Ä© °D÷F0y‹%BñÏyÅ ²šùp~Uô t×WoæÁñÈZ¸À˜ï暦IÎù¸�° ¯ç‚Ñc* Ùo]÷Æøœÿeª¢ïŽõ3–Y”´æ£'ÜMdÒk ÁÆUwIØ[HJSˆÆáœv±îçFŒ*¿D×ð‹,ßÍb8o)ŠK¯Ø“-]Ò ±š>™kÈîÕ@†(W�Ò»•7zàî}DÙ­ô¼°b?JçÕº^têí q“é¿•ȵdÏ¥(ë ƒô­Cõ!Þ¨“^G>ê7yE€$Y³Iµb%�)gã¾—ž�m£]´³‘#èz«þ&þóàq§ ¥´–ʰVýµuUQ«—ª»\¸ß_¢õ<¿š.¦$o4êQ$KYSÒ¨ªYPÕ&sôÚjTÂlm~YHóyŠ#çm¤9+VÌb‚äöI.‘çòê2t•¯:ˆ…¹p€+šgÔA+aÙÏÖhÕA³ðoARu\GªO‰-”þ………vÇÙfƒ£�ÿp^(7­�½Ó$?·u7(\‡1/ZöcAñ®7Á0"™S0çIš¡§ò8´ÁsÁ”ý͸יoSCvÐã2E±BN4ª¡+t¬i±fG-øÒ!¿ØÚ¯áLºµtà Qߌ èæÝp£ÌŒÜ6]ï†[¨¾ÚP]ï#o¬jþìKÜZe¶¬êU÷–¶æ5[\´¡&[Úâ|ÛÎLómnåê&nk× âÖ¶puŸfûÖ )_wðg´ƒÍ†ø °¾« nò‚„èÐ6” ñ�xoÉÍÄ'!’HPÍR7#8•‚îÍ™èJÐ7£.•`oFP*Á~\:2o¥|!ddñMyÂáÚ=e©ÝÝÚÂukh`ð€Â³î&sжÝEHˆsa™–KfùN­tñîfMº�¤�t&Ogµa¤îöžü7ä7¹ovìfía–‹�Ô» þT¶¶b‘XÏìõc½*-!ûuÅbÇè@@“NìF)Fä !‘˜O8¾êÔ|äsÉ‘Îøº'3ò©ˆK/A‘îùàõç5ßy©¾JÓˆ€�Wùóv‘yý\‘alîâ—qÿ,fëëíó'½}nt�ÊDkŤðêòÎ|x·~óoõŒ‹%nÛÂ;#£×+ìt¬e—¯gÖÂàW\ñjËY¯X˜Ù8‚ÎUᲦöÄÛVïÈ͘ ë2º„÷Ù ¸âVE°E„ûKct®&nHAê:Š!»”\ÛzbrÔó0SfdnwÄ” ëÐɦ&Ö& ®4Åㆱ…{ýs"ÑEâ[š™VN®g†iíc$˜–QÐ=0|‹â7,ö çC ‡]ýæmxyšéP¾*Ù5íלžøâVcDp6•[Æpdnó({‡4“#åÂpÊu‹Cwn¼ê1ý™V.)[áÂ4–å¾ÛhÖÐ8iùÐÕ´)ÞFÃB ÅÒcÁ E¸ƒ6à–ˆl“´Ñ£±�� ¢¡/J¨âs’rØ‘Áp˜ ;>¦N/=bV½~œäí¾¬×!ƒXLH$^¿–oÞ°…#’…*Y†³ ËŸ.ˆšÀÅÂN¦2Q^½<8“YÍQ*¥¼ËÎËõ]”Ì2¨)ŒyeŸ©kVÆ·¢¨§(ÂRxÖ¢!��Ìž@ÆMË,<›Eq§ï=‹2Ø�@Â"! #‚ò0˜�µgbÐŽ¡#r>c™šœÿ.ˆ9A´È[§'@»ÜJ`âQNš?R§¸§k0äúk¢¸h~Á#Œd=a¯ˆÁÚ’ @óÓG²†NÎÒ4‡¼†Ue…5¥dm¯cK ÉÊ òi2½L)*Íúêúª÷s’œÁ¾Ø‹4õTäU˜N¢,ø°èмÖ=дgJœ†t@ α ]^©—Ž *$§¨ûã¤hŠWüˆ­Ü²d”_ ^õ'À%ƒoÄ}pÔ·ˆ²4â<üÑ:Uþhu¨)'ˆ-è‡@mé‹ódb�(â~�fi M³>j{-¡–ÿ »Af8%¢ ‡‰$˜©e}5�GP‚íjîa_FƒPbc3=åâUvpðk±~Ñ’‘Àác9º{D3Fww×/6]µ^YG¿ìz‡û?ý¶s°ëíz¯öÿµ÷l÷LôÎ!<ø£Õõ~Û;úeÿ×#Êì¼<úÝÛÿÉÛyù»÷Ͻ—ϺÞîÿ¼:Ø=<ôöàÞ‹WÏ÷váùÞ˧Ï}¶÷ògïG¨ûrÿÈ{¾÷bï@íS³ÜÞî!|±{ðôø¹óãÞó½£ß»ì§½£—û§ýoÇ{µsp´÷ô×ç;Þ«_^íîB7žè—{/:€–v_ì¾<ò¡exæíþ ~x‡¿ì<ŽÍ¼�_a$ØWïéþ«ßö~þåÈûeÿù³]xøã.ôpçÇç»Ü ðéó�½]ïÙ΋�Ÿw©Ö>@âqbQî©÷Û/»øÛÝ�ÿžíí¿Ä!=Ýyt?»0âƒ#Uý·½ÃÝ®·s°wˆÈùé`ÿQ µö Ô}¹Ë�ýö¶‰Ü0‹‚ž J"£ ÕÜÇ]!-F]Sñn­cFä¼Õ-ýX§… N³d \×–c0@4}^ø½ïµ(ûQÇ(™Ã´eè>Öç¯c˜þvosõo]ÿµŠb.$xv­vÆá(/Ö¶b÷‰À@ÍÐ]pÙ¼!†aµ½ 0{¨xÈH¼Áp‰Üòæy0xËñt¸ø¼² ´AºÈìœàONTJ3¡ÜØ[¸ü<³@!• R˦ Ÿv|׬’ÏA˜>Ò\XS/}ýµ" é�‘í’ÆÊ�× ËT+r&blîMMw2qähi/…ïé}/ ×Öú|mhÖ¿ñp­!S± ‡œ¹‡Éâ·Co”æ�Šy4õ„Ž­u¿šÒÞ!ª2Y™ÊѧìÝÙÇè4S��^ÏÂ8ŦDx}£ÄŸ±¤-²-€ôƒÙ'&¨±Â.‰°ñp<�(yAÓ–�nLfŸ¡"\(³e|ØÝÞ¬Ù™v䀗ÐWöœ"’Ö:8TI„‹VÕ9î”.±’ë 1&´ÅMV±ŸbJ\Æôå]iF°†À)舵¦ZÎF…‘óO_JÉQ÷Ã4H¹ý±¡¬ïæ.:±óÀêJ^ŸÚ¡b�lÇ.�]ù¼Ó ñ*¼ì?tzï)[•efJœ–%3žh¿b¡U‡~efrŽgéˆàb„àáZ*K¹ËvhÌ2ø.ˆp©„Ó0hŒ2ð^¿€´´ZBjÅt½oWWWáßÑh$ùe›f ­ÄÃßÐËÊ2 +‘"áÂgMh©fa7Û¾—\¶*No³8¦•�+bßV £-Î#z‘ „“:iIÇQÑÕóº©n>ùx ¡ˆ¯9šº¸Äc,7sm5·¯”©é�µB߼ݾ¡öמ¤ Š›¡›ö]ü˜.{h .-–…u6úø¾ŸRDuÁ%à²�§áÊ%õRT€º7X�ló¡Ñ3]‚ñ¹Œ³1_QcâääLÓxFá’=ã’‡Á3)t4}oLý|¼�&³Iùyóóuó¹¼Ê‘ŸE$œúD!)ãö0¡}ßS7O†ßÌݺ+º¬:ÿEšz i|®œxÈn‚ì¡G§¡'b} }2Ó—vä¿ ç8Л¡ÖÌ¢ê6 ã݉‚- ø=¼L •1t¦�”l´�_$lNfÒfb±½L>½qp‰ZjVãV�œZ}: Ÿà¹P‡òG 8‹v¯ˆÜ^±¹Î-ó© v:Y(CWúhÈÆÙ¦7½dY·´Ðb„TÕ ™š­¬È�Åw÷[qüu=V… «¾î£‚x½¾VöQ¨ÇbO�L©j[¬–R�SbÌaô®]œz¯çrQ×[7½5oÅÅöËõ­5ÅÓ¯¶Ÿ¿ƒí(8Åÿu²#%j©TA塞TÔ߃¼?„MS®Z~u �Å-ÆßµT,£r¦ØÑÜL±æˆŠµÍwe0ócÿ"’Œè¯Â£·>Ší’¹ÁÌ $jKþ¥Î=ÔÅ •ÃÚ¯•”\mk±B’“©Ó/Œ*r6VÒ+k5VI»¶~ ‹k”î±CŸtqåD1OÇ€¥}*j�Œ”ʆ[­*¡©R‘pÇÚž…´%æíõ]Îuµ9–G-Ê›)–dÆ�‰õ"QÓµ…é’¾©¸ºÊê%¥£Rˆ(ÖÑQóJuä ‹Uø¹«°XŸÚ¥Ylbk} b|\W²6AA4·$ØÅvˆÄð©i¦‰ŽºÁY¦“`…ãNŸ¼(Ú5OÝZ½F¯Îà]Œw¢9üÓ�%Éÿd¨\�uàj!à\$éÛ€V²öG>Õ. (Ç.@Öõ&èpžŒ£Œì:ц]Q‚KóTM·2é6´1Zóã>ËŒõÑÕ‹ªB½UŽ&×|eìÊ«9ÚͰ+ƒVÎÑ36­¶éµ²‰W‚»y^íÏ*8–©¹¥YÈhÜV|,–Š©¦úU|àœÌT[U3+:Ræ§%Tjbñ€^_¨(ŠŒøWôS‹ …h k¿FSøMák4…¯Ñn9šÂ'ޤ lø FFêy­‰ÑBm¸f†ÆÑ0Üñ\Ñ/Eýn?t×-¨œš¿;ð8æöýÛ<ïH¡`ÖGƒ… MÎ%·K=¶¨¿õFzWc<[@3ÑŒfx7m’¤”{'"öïeoLÉÔŒôC¨�!ƒ?q쥊wº=ËTvÏZϪϼ>5ÙðDüöCÕð®§£À§8­eQ$ö�® F» ³Wç–|¥c¾8z'sžGñP:y+ìU�v�€ìH>ã½aüàqß{²:AÙÀz5ã€ðví1¿¶¢/J–? ÷ÿÛqý»bu« *CGÝI\�2oËl­xí`–­÷%uGD§ÿ*¾ +C (©˜Q£’Ûÿ»2.úâW%ø¯‰YPr1¯÷_h…Ö;¹Ò :†ÉEi/¯’îh:ZW:�ðF©z牷¶9É(FE�z€Š©¥�OëÝ��TÜS4r‘Hï¾W¦ª¶Øôy…|¨ ²PÍð=®dø—Á­]¾–½n+Z”)Ç»öªÂ+:·AÝëºxÍ |…PJ$19HµhɧÙu»ºéóäsUÎ^ѧWU>ª§jm½v®\� v‚Áð�í·�¾wÈ:yÒÁ£+Aaô/аFÌäU�êÌM7L0Û½t‡%nD|ÕRñÐ!:�Æè"<ƒ‚ôM®•ޤ«árJ™F #X”ês¤ª•m ¢x€ôtŒ=û“¯ü¸˜jSzô΃Œ§Ú÷öøòj0Žä Ö©‚lÈ)ží¿PÔ~+§š‹àR8Ò@ 8&‚H´€Ð=+µIéÒpât2Ú£8ËÃ`ØÅv.93Áàfv}©´|¥¨s(±ù_|ì—úˤIð¯õCºGayiÀ¡š‘*‡S\þëgNÓ ,'HVB&Kà“ÑH·ž)ÔD[ï)LÇ ¤ä &äù4믬œÎÎþ„Y |8)è3IÏV²óäâÞøƒ³è‡h¸½¶þdcsm×EÑzý†ñ|¾÷T ƒ"Y0~Èq\@/'‚,c×ÖØÊà�®.XµJÝjî·X¨ 6)볊XMBÆUÉUeë"õÈÒ% v¼B£ÄoËB¨�šHâ–ÓRº^Sg4V.â&zàŽ»¼«sœô¶zgAkÒ=«‚î_£©µÚ baánÕNôç¶=ƒYžˆÍˆt§L´ä­¿µ© Çà(ˆ�† DxH²D-nÞé% GŠ<@etÓ�ö€’ODølG0¯ÅHè© ©5ç weÑÎ)عßâ�[ Z|¥Vª7��ëq¤à¾îµkæ b_ÀéYÒ8¡ �6S¹ÍH¹£UáxM³(“¸!ÿ ºK,%ÞœoÙÚ�Þû‚òU½¸´#Ž]äºû�Z£¼žî¯ÄœØ—|ÿµ$¦ŒZ#}9ò¶W¥Œ®R(®^‹ÔS3—.kms®2 æ C2�0‡šà±:‘›òëHÕ¸*»›,Žžä¾zø6'¥ š¦/­a[ƒ·§Aª¾\\íÇ[‹û¤Î±½²½Pé£7Ë£±ËÿÕòT¥Žõ gE7Uõ¢@�WÀ¹6ܽ¿¢òŽPͪÀqe-AyF„ƒ„küÕA­J·°Þ‘¡Gx$Ó<…KþÒ4 G‘Žâ,TÙ—“ññüv®•Öþ#ÌXµ7Í¢>/_¨Ç‹Þ˜_ý^>©ßKmð…kF%D)!I{2ÃT‘|— l• zKeÊO ÇXÅû­;�>èn¼2f@©hmdB‹)àÙÔ}éVƒéf7¿·Å0z'è\}·Û|£s•U„nûèñån­Û �ÿÝçCq¡=&>í1a�f1Žƒø ÷ÉÊ`øVxGÜ¥”!€Ó`x™zx-ñ„–ê ŽN—Ð)Öi”�†yÒéóý'{úe:ŠXæ¡Ùø²7Ä—N¯E…3×)Î-!º[2Bó¯­S@ã%#oSß{¸Šrú’ k#BCIï�¹a)›ã± g–õzÞC,0F)ÕYà>8&„iù¸3trØçÈ®fkìw“ÖwÌ‘q„ð?aät�‡™¼iN“ ¼¦)ì—h¤îuA°¹0é:¥æ† Eé.‹¦ã¥ÃYÊÎ� +ì!ÂJíÑ88óòp2MR( �áÛ» {=Æ.|ÿÉSÄ=#gL²�Êùêø"”S3‡�¸�¡±èÒ1b¡'aað‚Œ=$^¨Xä;™ŒF˜Dç,B+«a4…¨(eµ¹¢$Э²;P%±øˆÖŽ:4R¡íËÔÒº{Òƒ½§Z�L@–à˜ðò\^cÁ`‚ζ¸‰DË«Ýò½²bÏ⤧*õNÃË>Ôµ(é>ãÂÃ:¹Â�Æ’J+aä›0žY×ò…¦rí ÄT ¾€Éc BIÆõJ4ƒO—�“Ê)r �ïCb ˆ›1:õJò"xš³%5÷žÉ,‡’"‘¾¢ÇÇdÜ##!œ`_O¤Õ6¹'k䊼K`城gizÉæfÒ`Ü2-¶È 㺤ß(-y[ˆV*�®§¿÷-éT€ž„°'õ°M…I—ôlUÐHÏRL«bºžþîèèÙ5BÐViñ¹G`u+Ì· æ#Zmæ 1­1€ÿ0�³ÃËfÞµõ\1ÞIËj®ÌËgßÜaϤž\÷P\Iúk]¤”ûk^z|½5nOîöòã–.ÿ?Ëû¿Þd€Uù_Æ=Ëx¸% g–¾ãÙä”cŸäÑ$Ì´ìZÊmC s¡dWK#Š�R©ŒwÕ-UÝ£îcà¸A%•嬃WêdCÁÀÍ“©7 iì{û¨&¸ˆ„ba¥YnÀ¦Š0qBIY!%o©Šfn…CÆ�»Wø^'Y*áĀޗµäŠÄº ‚&y�©{¦j¶æUöÞ7gãäT˜¢+Ñâó¿^ìUß² açN£ÁÛ°dg§ß”A44*YøBnÑkÃÊ„©U—{‹_ê±]êñ‚ c“apÙÓîäÊ¡ƒoúT¹Q0d‚é¢@(ôéF.ECúâ›u|ÃP]o�/Çp%Ðäð²gÞ->(ܪ’aøÁ唬²fWÑ AU×âJ1Þ8óòP±X…Å-28Á‡2B$0×ú³Ø.^8Ûv¯,ÐE;¶†i³>Æ3MáG’ÎÜÛx­à´JØ)24 °&F?lþDçg)¦k#«SŒEx7‚ŠNˆâDôKQz�Œ ŽÌŒs–©•èFÕEéíã³–•óWµÚ‹t­¢Šd^ö€*òp­œUÀ\¹\}Ï“³³qQ…QaòÆì]ÛlçŠVšì[ ·6ï…Þ73•ßw<\sžnq°Fϯo^÷¿@ø¼…XT ŧ »˜çbW`z2~*Óif+;Êø×¹¼ìŠ N\‹/˪eRÜClzj!Û`Úv?•³Ùµx !³ZŒP ÏNL—É¢,.•ñS�¡ªV~ØOºÖ%žUŸ0c`§Ç­Ó)Tø9ä Š¡AÇQ,’8Å`´‚‹…R�<ÝD¦v)_b2 J�Êq\y˜:ªÆAx¤CŠ#îÁ)”Ø“ЪôÇ]´ à 4hH&NZAf·]‰Q{Ï­g¬í˜`d— W}é­«“×8®ã—×™Ûv‘]«g…øÿ\ļ–޽Á±fŸ˜0CÓòu�x¬+Ë‚=¥m/dVù‰»^­½(RK⹞/Ë÷ÎÃÍEk‰ñ-tÓÙцv•î¡¥SÀ9¬ŠCás?|ÕCÝÞ¸=Cˆ[�ä€ôN²¨¨¯uK cêñØÛ%’æ/Ù-IÕŠÕµ®ð�­¾Ã}ð\Ç÷Sþ¢G^Ïs´Äáïxɬ=ì©ðYOºD…œq 5ÆE_S&Oï|Ùg¤hèäæA#NíŽoA»×\àÎTÉ�Y’æ’p)úîÊÅÊæfæétY؃ .ëu©Ìµ»nUÙX¬ûVRWþh¸@qÏÑgâͦ¨�ÌÆy4+3iašE^Ë9ô4$_4~‚Âa08gã®j€=jÙ„Õ¶Ðïž‘(Œ'� —réŸ%|°Æ—*¬6‘IöÏ¢ ª�ï0Èðw¤“…Q"íGÃmÒ“€[8½ôòà-:l!<rMµ›ž�¢• *ðZ÷€ì¿sÌzóx€8!oœ)×)=ƒ”±w&z£gD#ç<ŒÙ¤ìL8%£´µ`V‹†)Y Т\‚&�2Ú…çä�¦Ü¥ävèŸùÅ �åÞ!œÉia)´kBÒÆmŒÁ†�Æ�Ú¥Ýñ¶·Ee´ë)Öþª˜áÁïUd=ñŪ¦®@Ų§PVîI—¦Ð¬ÝõÖ`�í58î­¦:Þw¶H6CôØÿPhÑ€÷Uoâ>¢�ú}=Ÿ?§óùšŠûëDÉ“dì"(ß¡–_®DÛxnÁ�~å¸nG�†â®"rESºÆ×�®M(½„Ðvìv'c âÇÝU€{úœ¸À…€¨²ð�€Xœ%þQÞ \ûr  p!~Ø‚·UP­à^_47_vŸ•‚æ³ÆÔ·VCžš_¹¦Ï�kZðBèÖ˜,W±ô’§aøñî>Š.‡¤‚(Ý‚Þ䪻'ÃP»›ÇaF'ò�lújmôñùŸ’da*Ì~ên¼5C°^¿V´>wküÖX^蜳&·±árã®Înã®ÊŸý5ˆ½­¾±©úFÅÁg2sš“ª)-Œ_Gž³²æ8™Ä/è\†±~=”?í¡\{,«P©m‘C\ÂÓ.ˆ–¹·L§+D T¹•l Cá‚á«xV¹¦-�Óä½®ágƒ,›W Õ$Â\×ÝØ-:ê1?ùŠÚé´*J¤ù˜Þ¡"'"34ës‚`Ǻ‘á‰ˆŠ’ÂÿÑZÞŸ†±wÄÙrø`Â3èýè�–™ —éfUäñÜF/IL:‚ÿn¬®vJõׯ_?›�æQ>oÒ‡A0å1µÖkAÙ¤Êæêj×[õW7 ÂéЬÊÀØY¼6>]"»³Wûž1Q›ðóÛðñh3|bôbm/ BïôÌxµ^ýê�õÊtOÀ?µo7kß>¬}û¨öíãÚ·OjßîÔ bg½¾jýxwê;-õhÖ\™sF÷§c`Dqö×ÖÍ5dÍb“‚ëM >hZp£iAšwŠçxù°î壺—�Uû\¢²ý'M î4ÆæNctî4F/—º’ÞûK¸Ã{i8´(ˆáÀ}ÌNÃør)¥�B…Û.nF M׸HW„‹á‹eëlCÑÝÄh^�†a8Ž‹ü¥*{öíèÑ£�½b¯cg´2FvQ°smsw¯åØZj`Ö8"‡dÐQŒ3©I1狺oô^tJÉ®zH]O1U¥¢Œ;ãüÐŒÆ#½½9)þ©'åjü×:/JñÅáÿØØ7±†´ïh¢'Å?§AëéÛÇø·”üC|_Úκš2UÔIF#hé4Ä¿ Õ~ÓM*»°Ñ).É­ÒnRqÌY|,Pß–7Ùú!ïÑ&0Û&£Yf>Ån±¸ "§x^†“™@¹ F�öÔKãÞk ‚¾hUrržOÆ'[ÞÓgÿôØcò’ÃÿÈPµ'>oôéôãî‰C5µ‡Õ¤Ò#Å2Êë�¢p<¤Ë0JUÕS‘8ûžÅ ÿŽß…h@h2Å[ÍÀé¨! +XAÜ‘ùlX‘Á[²m4Åί&.««U5€áÎi4ÍoApVʆ&#¨P¯)‚ ÕœÂÔ‰ÑXÆ«ÙZôš8šÑ…&¨#"¤Þj?æÀ¬˜0¾,Ggg7ÚK.@»ÈU´~y¸jÔ. W…ª=“�Py3ü;ÁT ¿\Ðüúj¡ü$Œg” öÆ]tBªè¥³lÍ,Á FÁ89Ã�ˆ&”×[Å Æu'0½7ذ\®.]¿0ÙvM™šCNä{�ÉaPirq;s] ®bÂÍ€7*æÑµ›¯„V�}C ci·œr *¬ÖïØüpaבi�ß_Ñ1)VdŽ‹Áy4Eži|éµ³�Ù0•¥P#�-ŠHö«Ét6ÅŒ£`úV®F›Í-m™#ª žpN8$;î�µ!†Ñ;ä¤Í …åøÒJ]½p4óS¶Áúv4š¿òhÌâ€TæWÚt¹Y}Óv‹P†ºAþÏü¨Ó ˆŠâŽãù`ÏÄU3¸Q,æ´nå47l¢Ðub®\Ë…5õ6_P¥=çËÈÝܨD®ÞJtÌå¦î¥‡Eg"):j-TïÖå´V®ŠÕI7N•� áÿÉžC�Âê=÷øuj¤öˆbœ¶Pÿ[ŸÌÓ£ÜËΣYçË �€•+ ¹K! Í~a�Õ)ÞT=Ê”ô°®„Ì}ä,T;Y’¡¾S2Dz1w,Ìä•&¢ØÊ¨x2”76ÄÈqÁcD䙇¨Ü”x#yÍB”vGÓ&éƒùs S§B°®Í™#½²p’ˆÍ».yqZ”¿ugR[p†xþ~|œŸÏ&§½·qrªWfÏ(Ý;âáØX1šùt”ÃÆCÁÜ)RØ�ôLDVå²[7ÒÜ©RŒ‚ª‚s‡GãêÖ‰”7j¾ªd³ÁwëÊЃÚ5£h8ÉU|Yù¼Û´�`):ÖÖ¬wÖ¶éÀ]!=¦kÕIŠSKj­l“¢ªÚØ}D¯‰ üãæíä‰ïµ!þ5^SÁÔtÊlQóÜþ£âìaö�)PÌØ‘7‚ÙK…tÇ VùL2ÀbÐ�4Þè]È ˆ1�*SðħÜk£ ÏËaLyîéÜ»œLBÀì@U‚§ ��é�v¿�M9• æúeþIžq÷LêØ½•©›®FÁe=®^Ž«Ž.z©øÄ�ñœ²ÕÒy”rÖ^Y' ž²•šÑf[\Š|u,w +A½0Ç×à–ÄŽU¯gè~ Å×…·zâ‡Åßn )%Ƶ¼máþ rzÀr,~!&ÂZ›2 ©Á®{`é,Å2gÆ:‹†á IƒB"JþS½· öØJ«ðG«þšézL-âNÂó®�˜W°�íAþ)óÄ—lnv½µGk]ïÉb¼•ÄfÏ‹TÓh:;’^)••ôÍÊ®^YkÌaƒ1rgíûâF“•ìæq5Wœª‡pîÐí­)y•¦jùe d8_šst0)¨…i‰¥UãÂ¥I.®!{Ø6öi¾ò� a `04Ê‹ž¼š;ﻕÂ68žrCƒ s,ÿoWéOqEÁò¸°é�!ô?^u‘3ÚÌ«•gëÚ¦Ém”çÒþ%ô]… îÉô%�&WâþÎ•Š–ù*ÂHXk²¶…÷.òÎ …5²*X#…–uŽP¶¬èOB­èfÐrjµÜ¼xIY)Ùíù�«IE}–ÿhȽú&E"ñâóWõ‹ÊMl®­­Ð3:cMiQãrU.N¦ùe3 RŸ¢ÛÆx©=í_úòÈ|⬈/f ¶…èªæz©„û6ªl> ®;æìæB*m-tZ”ä�¦$ŽGuW‰Þ+#�Tk}Þ�ÒØõžMVQ[�Ùá�”àU#þ¿ZÖ=ètIÕZñz½SÒÞPw˜G(†V«�n»Õ«á!2º›¶Øu•æãžØZÄ=¶‘¨šG±«$J=íR"³¤¹C{ëEú{ÏÓ(þâOë .®7]ÊÖ…•)�5Ï…mÓC3oMÚn¶d¯èï9³ñ@ê?QæîÓµ&ùF=p‰é[ÚŠš-OXÖ+Ïâ%7WWQÕEŠ¿jw»ÅðŽ�¦IÎêL1RÃÄÊi›âªsåçl°`Y-mZ |È¢ŒN棚T²KÒ"^G¾OÿK¹¬“*‘³jlˆ ¬æ¨°+|†x¨YvxŸŠ©-Ýý Ïšúqë‹Héÿд Uº¾¸)GC3ùüµzöÆUÒ#Qüé£Â½~¡PÖièP8…ÕÊ*ã)\= ŸÔT1R6­K8’ª(Æ“ý«Ä”K5‡žÄd ßBüë>õ ³4þL“HHm‚ðZXö¤H{(%µu8ˆF EJôZ_÷7ËŠ;‚ŽÇ0™‘u®÷†ë�º4~êz°Ã¹[�ªS¶)^Q-$²–îúK%¤ÂÙV›8loñOI+nœ|¢{Y¤¹yÌàS{\-�ï®*xUÅÙG1Æ5%\£GIº_|Ì\7OºVò|Ä£¤à±_„èÐ~+mL‘(Tå$¾0�I`É;NÆÚÕ­à²ðSÂÀ­ ü1¹’5Êg£ÝR§Ë}ëoèÃ~† –𼥫 Š}êU¯[W÷Ô�ƒÓÀ¥¨0M`‡¸ìm6 ³)SÕC,é­1Ø+º’e4yËŠvxÝ–¤k§î¢²�GóYXfv9X;‡�£ l âƒy…#NŠö“ÕaxæÖgᇵqë'ÝÂò¦ë•ÔÞ>± *«{ÕJGó²Á)I˜‚Je!'1´‚.•ìŽð�Ûú ?än#³ :’ „ÚâD­¬ØŸk$A};Ú€¿º®‡…ù4–ÀqžÁ¤`SAÚ;ÃC†Ò&]¢½KìüÁ/§£ÁhÔ)ûÞû®ØIî¨÷ÓÞÿ¼Øí«pÊå2…ÛªµµÁéã�ø«Òsa«D€št¡²Ý+甹(â0JóËkLãï$Žð÷ãOb©Ý9“hͳÖ; ¦f0w&Æ)ºÖº‡ÍfE*D·ÊeCE§UŒûÐp,£Òmל5µe�CàÃæ˜�á·7ÆB° 2ÄMùÐ&xl½=Žeãv$Ñ¢VŲ†áZX\6¥I“óB ¨kÁ ¨d ¹ÞÒqV˜˜&åÄ}eÑ«†ãaM·Ùœàsìwa#,ØJÓŽ—ÉD£ €²˜@%qg“CñjË~3ŸM1™ž~õDÒ ;| 3 Ü…7ä¼L�Ú�XGçfàL3oª‘½Sæ"H¢÷°Ëñ™¸ôŠb/¥hÂßžíx»ïðêMµ²·Q쫊‡D<½‹$}‹ÓÖ¤€²!ß{ #›Š³CI/Ø.!pœ7­7Ý,™¥ƒð Iò~«uõ¦³…ªÝÜo§WÝ͵Çkýpûû-ô.ÈÐ"!omÁÉàåÛ¯ßl�f1Ã{q;ì|ôµñU¼Ý[ëFÛ«[ÑßsÆgùùVtÿ~'µó×ÑŸ¯Ñ’b{{êÅÛÑÖ)Œêí°˜³ ])ÀQ;ìFt°ý᪛BÓÝ1Àÿ=”ðÇÿ–l‡¯Ç0¨íÈG�íƒ×«oîó÷>~ï·ƒ×Ù›¿þZíN·[-;òvÖmy­Žü5ìla¡íáý5ìÎvÜžvº“íL6ózíMw£¾®K¾¦ðóüdÇ[,·ýDC@øºùæj Ð[ûf{{§“¿ÞyãÃêÂ0C÷ïwéÉlŠ.ai{ÒÙÂÔ4 ÙvÒž¶`—{ñ0|¿=îæ~†±Ãö¸»Úý ÚŸvŒþ¬«á÷×®:W©?�eç0‰æT£94çŒÀx;÷‡ÉdçÕ^;ïlÅ¢O0¿[¢š¬¯?à”ò¿>`§?ï݃}‹ø¡ô )<Ñcõ‹^ œññ_úè)}ëpŒnmç�+J“û¬üiw®®B?|ÏðTgÃnÂã ¶aMm‡ý‹(ÙNþúëÃUyh°*E™-¹ôRXpéß¹àR¹àư6‚×)웞1©½Þ•¬;À6¡°,W·2 $“@†$ «0ØüõÐtï^›žÈÕÑÑÓ?ì®u:WÁöàê 6ëÆãõªÍúájˉ”˜Û�¶Í¡Ã|¾K¢¡Ç} ßÈ…11 )«ÿŸY˜^ ƒ]\Pã"Š�ò9zñ|ï'¤i»L†ïÝ‹‘Zåè§�Œ¼ªb�<½J€Á I­öL¶…~hWtKj­ÀhŽWØ«íX.düu%ºñMÔÉÏÑ;1/¼]ÔHµ[O‘zbÊŸ4ŽIxЃ£ã,Ì}OÓäx­Ko±È)¤sìH‹­eH˜æË §b×Ñü‹À³|ÒÂ=Š*¥xøô<Û1,ÅîÆæÆfyV\“ÁhÎ5š9€¹@P»EÝn©Å %Ìwrx:Ë1´y7ôõ³¿¸·ô‚-€ái]z²ñp­�;¦‘ŽÅ~<Ø‚ µ[n·bÌpß°×?Y]l¸²Ÿ‡8<9XEn>ðªï«z°b¿1p®—p«tA�vt»õùÛk+Z¯ u[ïC«Ó鯒Jq%úáèX˜vT²Í;¨y̤i+‘µé§Q™~‹-ÿýê-¯ø®¯Þ1ÒЮwÕ*v�Ÿ ·˜¼Åš´nA•ÚÞcä®aë›mäá`žæ‰öG¼òÝ·žª1>í׃çÛ€ó ?)@-`zåßYoá)úp£«ú�pÚ³8ÌÁhq^¼ileÞZþ Œ3Z{ûùû¼ÕýhõÉz·•¥ƒc|x< ù_¾�é\ c³ô“Ç�¥Ã¸X:³`?ÚÜ4Kg…Ò£Ô,ýàñšYz”JG¹Yz}ó±Ùï(/”þw`–Þ\ß|d”þwP(�­Q>ØX3JÇãBé©Õ“™¥§Åž¤3 öÆÚªQ:�JçNÁa”΋8ùó¼7°&èáãÇfzoÔ¹Ú2;Z¬ßÄ~‚›«#ö„÷*M&Q†›�Ò±µ;>pq»-WP{ã bÔHÐñ9I†38=—[÷Ãû­e :|Üb Ùa¸Ýz±ÿì×ç»Ç/÷�ŽÚÿõå38®:‚ ‰àœž+6\b±s³öÆhÙNºë`�'þÛð2ÛÆ§û§ÿF/üÝŽ:ݤˆm\ü]½C8Ù:Ä]"¾ê>X{ð¤®H„àñÚ£º"Ð΃'ëµ W݇›«uE@ºZ{ô°¶/ã«nmGØ×õÚã6d}£¶¯C8´ëKL‰·¬Íbvµ–Ñ™@o>©mhP6Ö64(›kµ �Y|X[â °ò¨¶Ä)LàÆƒÚáz²ö¨v‚ÞcOVk‹ìöÖùõ¶vš—qëêŠ\Àîxô ¶¡·0ÏO6×y xyò¤uÇ8"hˆH 4úxíI³ÉÇUÜ��aOo¼Ê¶äUÎÆÀ™�‘Iÿ�¿öõ×ñ¬•!ê r�¸ò¿GRâÊAâjɲº‘äuô:óx¢ðµÔ)¼ÙÆgšÝFaóñ¼¡<~°±�C‰Û›�Ð÷9“öÚÆæ“N»ó×_0Ô�'�à«”E/'§ K J [|£,‰%°8ßl‡÷î)Þ3|¼ùÿiwú bv~ØIÓ“*$y‚Cƒ7þ �áUŸ+]])ÍB �|ôð`e؇�<êtðm}s} EÕA»õ7` ÿÖê~³Úéé÷a˜‹ßS(ù`ãáƒNwg{Ún&]C U&ðî�@ãåà» ½—ûP7ôÞj›�6¸ TË\ѶF•DÏ�!WÑ•MBÄ‘‹}T«)Vû…&PûÀèn)-l˜\í[ÙŒØéXrûC4ì‡]ñ¢ÿáêJâÞ2ýŽe=غúû‹ŽþqõŸlv_ø@墲æ¦þqí?à™ú"'�Сlë…‚h÷CÐ~xv88Ë}æ¯ä*Úý*^Ü~�GLˆÐѯžC_ Ò£p²v/‚cˆœß0�îã{‘ÄNL›7!ðzçÆ÷îÅTu«ÆÆx¬zkñµãp�I¶Pe¯X#Áb5Írgë…Ÿ¶©GA•)é€ñ]7o@¼´_¿ÁóŽ©^§~m•:žÞ»÷Íÿ‡ê­aø”ÉÝÎᣣ¸§aš_¾ 0,uÚ‘Ô¬ Ø py�P„jX9U�œA~ÕÅ©Kº°Wø}›NXêB¯—òÎ ‘u�^á×�¾Š®0¹”]¡âCÏ&@)NÇaÿ›Õ.t¶Ÿ¿Žß\u°‘^ļðC\kR”ÄujŠiPªòåp6Ûmæ™ðÀ â€Í€™!'ýÖý.%E¿õp´¹z:©zðxut:xÔêºÔýV0Ñ{ýt-xòðÑéÚ`h–ËŒrƒGO6O‡ÁúhmxºñdÃ(g¨$ú­µÂÑê“ÕÕõÇëƒÀ(g(#ú­Gk£58žaéÓ'OV�r†¢ßÚx8x¸º¾þpc >å D¿Žn®Göèa£Qh”›ší>ÜllŸ„µ�õÁéÈ(g(ú­ÑéFðàá£Ç�Na@áÀì_nŽw´ñd øŒµÕƒëO6¶ªÕ 0èÓ‡kƒ'ëƒQ°¹1|´1…ƒéô˜ü™zi2ËCë;kŽó ª�F€‰€‰ÍpmøøÁfë 9,‚g-X‰\ÆbIé“ì<ÈŒm#ø[\M{¸(ÜnÅÁ; ¼ÞG8ãmæØ�üÀ–:±‡[ ÿáû°Ü¸kƒMd‘í¸£7¹RÄÁFZêìÇË£à ÷m»Å1»[q1™:.&Ó×c:ÂPŸÎZ�m$5Å7¨…í]„§Ó`ð‹üxa²=×¥W 0µÁ6lÎvR}k :ÖñyÛ-ž�V7!.< s�ºòQï1>É£IÓ´½¶¾ŠÉà޽ĭêÇ—¨„ɪ»ÛÅÎb‘t° Á ï.¢}xp"±Ù¶  ØOT5mã·q éš§;‡AzÄ�ÂKYæx÷Äé: 1dˆ·GZ%CÁ‹½®P÷&Àß»™$6¤CHÐÈ€°#“ gþ)�p:"º¼4º—ý–ÀW«ËwIýŽˆµõp£³¥GdÖVO;]5Ðâ{|Øé÷î Í0K'œàE œUÛ,…—õû,UÞ»'¤Ëð4YptçyÂhç³ø­×ºŸßoy£ ‡Cÿ�¸ÝºŸÜoõáqp¿ÕiuS?ªºÝzŠ…±& ŸKàKþgfùvÐ�^¯½¾ öD‹€÷8]F µ³55ݤû:è¦Ýñ›í¸;ئY ü,žoÏÂ- …µH2N)1N)àÐLöëè �òè +:ãö‹]ôÃØ‘xl ôýþˆ²¼¼é2ò€¾NÞð¿¯WA0îâ·íÕ+˜% iõº%èÿÉ’x*O²Ö›Ú—d¨+ª–$e•n7qÅl›�ù‘xй¨Ý!¢.VaîY`&‹¼ðK ¯pûEM„€~ D‰ Fñ¢�wÀ¨iÀGx`©�Çë¸TðQ‚kôEo¡ñ¸ÄG)jž^´ñ®5Oøh€*§íµõ‡¨kÂ'CT5a¡ÕM²Å¹Úš”oA4†—öÕøö˜žñ5óv[\#¢…ÔUÂèe;2ÊšWÒÛY»³䡽ãït'ÐçÞ=øÇ'À�dæw¦e(^uˆ]?ê~Ø™NѸŸÄ°½îÎ,?׿Ça÷§( /€·Ñ ºÏ£A]ÓÏÎÃî‹Ë½É,ŽF—¸ {Àû#Ó�ƒî),èM0¥/&ÈÕ÷â“5½xt'É,f ñhÒ�Åúçˉ¸ÏÁÉGÕ5M~ûÑ*N0Î>Þ7Ðì£ZwS^—ÃL>^_Å%àÐ2„þþÑ/»ÇûûGÛ-²]ã•Ý ý—;ÿÏÕz‡§»/vöž‹ç!Pâ±|sÕؤGÉå©´`»¶hûdé�Ë+²âÎN`y¾&"‡'B ½1Ì÷yŽÇð!]ÒZH[0ië Jxȵ8›åŒc¬ðï<ä2ï<!þ'gI/â *üÜùWéÁ«ñ,s>ì�¥ÜäRÔí½£ l½�Ýõáu ÷¦ÿº¾CvcZ¡ku›žzª@y�RªAHͦÁ±À†…4Ž&¶Eö‘áûÁ8˜4Ì[†�á!–má¾O•=+¥£ƒ‡ šgRjRÏ:6äÉ{üg¤Ñ †Ã^4Å/q0¾Ìòr„ñ ŸœÂ„OhZ¨À£"Àç0ÈÎOŒú'=bHGh�o&ü80øEÙ9~ /Ø,“ƒÂ‰Ç(ôj¢é)óšŽ�ËGQ vx¿ü<nÃ3üE6sÙv~%EŒ¶¢ÿ3!,ìÃç…ïs}\-½~'6D0L‰Ïã¶pu±jZt$·:_]±jÞy íìÀÙÂ|gèÿ¶sðrïåÏÛ-LÖýÌðáá¯OŸîn4Ο%:ºÝ?·[é,FáÙþo/>ØyF q+’7¿Û{yx´óü9½" ÊñX¼ùõ•ª3›5ÐêBÔÚ}f’‹ŠH�Cÿ' ð»ÏŽ�öe©í³àÇy"KÒ¸öŸþsAíÐøö~|¾ c$ÊŘ^¢g,•=Úõ [2ê�ppÁ8x‹àу ã4~jÞgÂö{ëïŸ"%B5#rà┎·…¡èÿzí% �?´ ¦ìh§a›¯ÚÚ¾ï‡d4H%–+÷ñ?‡+‹: Ê—²0M¶³$½Å®ð/¯Ícµ6ßú?†çÁ»(Ig$#Ð=¥jrÌ´Rýi„örÐF¡Â@îÄWwa!¦ŽÊ.‡ q Å‚&b Å’ 1c¡ãyu€¼½mæ}G¡µke÷lÛ­ÇþÚ½Å3…C6È@ì["Í×Î2k�Û°…:²|6M7<ËðBY”YÇtÙ¢ÈJ?¹S¤…íoÖIH€3%"=ý¾½¶¹**L@+/—¨oÖ¤a8ITmôÙèæ€ŸZì•xM÷T%¹�§jJÂRj'ï¡nxƒ,+•‰²�1 ‡; >e~hÉì̆ ŽŒé?f«ë�6GÁ@“£ÜÜ€íü¯¿pâÊu€9|·¿nñ/þ—U3|`">[oÚ(Äs?ìB0×ýP· ‹D^‡(‰#ãG›�‹51@#L·ÅD@oÞfêJý!}È·ù˜žà§¤ùd8Ž.üíJû7 ‡èJ€V–°R@ñøÒcƒjr,PWyÝÖUX¿«°`[­­h;'EþNÞîßïlý|»šüm㇇ßÅ÷£>T¸ÿo�Òûbþ(M&O… ºÿ}»·þ]rïa§Ó_íDÛ­�Ÿ>Ûýéç_öþÏ?Ÿ¿x¹ÿêÿ98<úõ_¿ýÏïÿ78vÏΣ¿OâdúŸ4Ëgï.Þ_þ¹º†×9=~re»¥î=#µâRãºü¥é PÚ[9ë¶î· $ã“@Avå¤Ü’ˆ‰cr­öé6d‹~¬÷óûÛ°[[ÆÃüP>“×ß4I­½1†Ó{lÛ>KÇbr¾i]¡KŠÃB<âi³ÌÝ÷­åÑö;ÐwÛöGzXi ¨öjG)ÝÛkñǯ–ä)ô§­�tĨÿ¾NÓÛZmáíJëoðç0Ù°+QeŸl)¾»íÀ¹ÛªvÛRz±Ó˜Iù©lÚÔbôé�»á -aqf-vjGXD|ƒWÀ æÄBúœ†ê‡ÕþÚ–1$0Lñúª 눼¡òv 6 H¯MZF­s(‘"µÆÿÎ-*¥7ä«ížù­îŸÛ­Wã0ɘïgîÔ�á$úßÛ­Á+Œwßê>GÞ[|ÿeû?î jƒÒeª8æ„8(ž{÷ë0Ha(­•Á4C䊺bƒ³¨ÕéÜÇÏ•§ãd6|ų÷>>îR·û­¾ÌV¦ø»7~²ÊïCôp ÜÓÏŽ_=ÿõgŽwž½Ø{¹¢ËgÓàv]ÝŽ“ÖÕò}¿ÏçûÄÖ;ñO.;SØi­œ'“ð»•ïtOa"V...VÞQ‚+|c÷PTXiu¶Å³Ö•à²Ñ²˜HÒhÈ÷Wø?Ä«ñX²L\‘èl6ɪsÑ9¢ Æñ°÷àáêñ«�—»Ï%¯FP¶u‰íí?å«§”Áz÷oùÎhÑ*ð³,ð’{`½|Þu#x»ï¯Uå7edýš àKU@}{”<¾:ŸJo@Ô®þb”¼úvEfö8¹Fêy@‡èAÍ5Ò5ÿ³Oÿî+‰Ùv6la2u8p72uÿYÅ Túñ󾔣¨3Ðô�@ `¢©а’.ã�ucXh/'íWÀäêœà’­ÖÕUˆâ£Aò;C“:_s�$©×êüà¿^}ó×_Pÿ3æË Uÿg°›O³þÊJ0�¤ôXEÁNûuû5Ìðÿ¹ N{ï¢ðâ¤+‘ŠùäM÷·mm!�T!ÚŽ}ºÖGý,œɯö�ZÂmu6÷î}ó«/¢-e@éá|îü@^–cÖu_Cõ7�~îs.>´èëÆWÝÿ §ÖËí<ßCuÇ?w_¶„ìñ¯ŒQ˜ø³(.(#vÛxp†Ô¼…šï7h2(ÊÃÜ×”†·\Z¸ÿÄâˆ�|Û8® ª.´hÔ¶¹OQŽOñ.[ÿØÖ_a)¡uQÿ�[ÁÄ‘i·[üÙ"7PùL~#ÍÿÃ÷$ØÃÿ)PnsÑa¾¼oJµ~vyrPg? ±-ƒÁ³Z­ÿÁ÷}zW\Ћ²„¢«+[:e­óÙn ëff°r1ÃZ×ôó®hçiJ˜`àŒ�<ž�¢qÎW0Ç!KøÀï =BvLàÐ*cn÷aŶ²0ÏI³§ÇRÃ�=PòûGWýWøB›Hÿ`¦T ùáC©ŸÅ2ÑjGŠŠ(E "îÚ¡›_ÌËÐU«:\SŠ4‡S×l†W%4hlYÐÙEв=�©Û©i�Îwº â*ø5ë D.Ø0/Z1ÈÊ�1wŒ¨1+m’)p:.”ÚSúL@k6³j"U7®5àŠ.˜K¡€ƒ ��\wüI0m·™DCO[Æ– *�dî»íµÕ�Ç›�vôô8V»*¿}?ït?ˆA•ˆ`ͲÅQ~¥¨é�p"_Ý©˜Ÿ«ŠùyŽÄ²zRà<}ßCª¶èZçëGÑLûEÃ&Ä-l´›Åg±mLf“ßJÓx“™…u«oŠ‚õÀÅŸ„p„‰Öövå�ž‡Nm"Ý2ï �‘ oÇÑ�yVÑ3Àvè›4O*Œ1—\F: ú&¢)Fyã7ò¿ÌBLo‡‘Kè‹xÈ÷Ï„¾uu¿˜ÃG¸ìÞP>QÍ…pNŸÁ¾ãéç1îCžt�¯‚üÜb˜ßhµ”×Zwá¥_Å´yäŒØ>LJøÿým4¿ê s¿@£È+”­©¡c–Ã…†?oÎ08NBÅ⬄£|—êjNèVwÐçmÑ0rÀÔpûƒXo@�Òà)Ñ ûÑ ­žäÀ-Ü,sØ¡È'¸q"{&xwêÜ¿ø²¥]Û%q#3—.6&ÙÔ¡%Ð#¹IÔ¡T·óëÑ/’÷&#Ű‚a%A·°%ôcÜZ°ÓéŸ`¸PÔ¨Ä̸!s®¼øÒ°x-Œ¶>âÊ…u$ò86Nò"8�&WÛbÛ £l€IÑÕî\¡•Æ,—Ê 4 ¦­–¸Ž9K@üE àˆ|P¾ð[œ‹á¶Õ:íÿøhŸ¢ñ”ÕWÚ{xá³…!%‚4Ï~‹rT±¤‚)*åHÜ AþXa[’'îIʯÄô±&Hò°a«CVß%Â0L¸7…>&‰é|( Ët·Ñ"&u3[#Í00²Q¥nøÿ¾�]¤aƒ1Ì_ûvÙ$ð]|NsíYÂ×ï­÷¸w/ü�úAÞó#¿êšj^ý4‡,nB‘€W’´ôÓâBL×�&ù®¶½Ú}ë“Z‘ôŸ²ÿ�oD�ÊC _õh‹ùä¥Ã …¡=Ï:}GÊIŽ.X�äÒ Ö�¼¦Ô Í’B)ñ)ý@\~³hõC´Ïë�˜j9uP€f7;±°¹ÝL H¡a�/¬ûšVÄu´øwaøÊüE,JHÊüpû§v�ÞHÝ}Ž؈Õ<&W ±wI%@7ªãªg~Ȫ]þŽ•x¼ƒqêiZ º T“úiË\ùdŠ.#íÔ›C…_OÙ¨ã%㕎h¥$£Kèø¯¿ÌVüð}N×�Cè 4IOCM»‘Þ%x·�‡öéüW{/v~?ÞÿõèùîÑ›`ÂÏèÚ{«ŽZnkjùAS G›ŸD]iuK7ÔY6–*PÀ—È0–£4¬=Ìà z üðáÊ<×b<×d3º_Prïů/÷~úýøÕÎÓîü¼{ï¾^S¯+‡-Ðݼ»…†º•�ß̵ʰt‹mèJvÚ5/w¬õ¦…þs±åa§W’–�ènTUfLq¤nªdNµ–9-¨™Ÿµ_ÿö˜U}§ˆR¾8ð[]ö»E’0.ÊŽë#ZOáØ8 ‹–1ˆjñL®\aV#6¿x)½\¤9 1Ÿ%+›§Ìƒ:ÚÈ`cÈÛ�,¦ä“Äl�óÖ?@rx)ŒÀÚ²æT•LY"]™ é†jEíB�߬Q¨@~Ûö2øÊ�®ò“ЫxÈœxî ­̃+ &…}јÝ]ƒÅÂ} '‹FO&§Ð� 'F¹‘×°u`zÒBú™È™ó”Y¿L±Î ©ÆÐm)k™u§õKx´Ëа!T–•ß8{x²T¿`Oß|¾÷DÝA�àŸ†gh“Fn‰ò~D>CŠß߆—¨6²µ‹±ªHî좦~Ü*OiŸ ­ Çã·irög°Ý²¯rjñ*—È«œÊî³! ¤†á»pŒ¦ò™xG6RV�ÉǪÜw£jÎÅS?�Q�B‰£ÒÅÅ…zì'©,©F](ªžS·¸¬Â„QV=3ÊÙH1 ŸEùùì”JÚeV^!´,À²†a¥uÕ}_ÄÝÏô¥€•ßéKi܇j‡ImÑDG…y¿_ñ\;òB<ðþ O³¸ë&žJq ˆâ–ˆv€ºIýµCx;,¾‘é]ƒ¾ ãa’öߣ Àßßà-íb ؈“i-|ð]è«ß]R|²Ó ð‰G¿ìîýþj÷ø×—‡¯vŸîý´·û¬ÕE+Ìþ¥ µÚ;åKÒMºA7…Ñ¥—"sE¥Ø cáKFä¤.Á�|5öÑuú‡¼=èô‹Á£"|34ÑÑ-/™„½“XäX»ál'€Œ¢*E:{G(�ÿº±íäÂv@ÃL»ct«~�·‡F‡ÆåB쀥R©º2±wªK©oàôŠâˆr¡üõ×*å®1ø0a¾ŽI~@Eèî{v «�÷Ö:ýâÃNGyH´0Òi´-¢žÂ¡Kýék¹öûµ"NeÃeÖ;ý¨{_Öˆï¯uÞ�UàÛ°û4Ü^ùÛ?ôÛ~ç‡öë¿¿ýÿ¾éà·ûôÚÞü¶ô-~¬Âÿ ïÿ]üæó÷ÿ ½?ÿE–V"�âãPÆoçÛO1^b8@ûÅr¾ ‘½–&ANöõ"¸9É{Ày`òì>ÆÿîRÎ]øŠùtø¦Ò¡˜Dð}ãM÷Ï0MàÛæ›.ç³Ê_?|Ó¥û?øúèMwŠV(tÀÏÇo€×„vP —Fxñä ï*hr#Ù©Áí…jßcŸ¶U°¢�~cÒ†>½/%6ê±Y�üÐúKÒwU4+”̨` fV9¯U’žüТ¢ô]F„lóMH_øaƬN~àýûâ·á"Mõé›3M ê¡H=ÔÐK°ð‹á²g@áèA-AÐ`ù?†¦sŒØr”ÌEEmÄ 2Æ2fqJàcMûLþ¾úCkÕoÝÇuE‘ˆÛ½¤ãÿ;‰âvkµÕA/(¹�’û°“ÔFƒ_Š;(áƒ~dJz²êýuäÕ±¡ÒÞÞ3õÛæu#b¨6$ZRz=ÝWëå¾±"î·ÕŒÃ8[ý ÉHÑ£¦ñûÿ“÷. m#ÉÚð_qt²Y+Ææ"Fá%@&ÜH23Äë»MŒä±ä|~ûWOõE­‹I23»ç}Ï7»1R_ª«KÕÝÕÝuÙ ³KZ{¾4;^û.ÏrÝ'Íü»¯Ó–¦Jþ© Èb µ54SÄ@Ä7_wþ[4ß~ª$¨-’œ8¾òæ×ì´Û�¬œ m€ë3¸þâ†8ŽaSXQ ´8ùÒ9¤ã üÑ’+†g)M¼îó #:<ã®d(HGĶ}™û2GNÏÚ ‹OhŒ+“¹ë�Ûy¦vê¡&r’{z¸êz#]‘“Î Çþ á¥~�ùXíù¤G›Wn¾:n¼0HæšTcñ±ùÀs«ž|&W�çĦód~a[žt¼q•¼j#Â×x=òÃçôk špnLã(-T m�º°8æB×/�ÞÎ\h_î°ÅŠÙ“�VT—:4õ~¾‡¶s:ïËý¥-ûÄc[z¼¶Â;AÙÙ9‰zÞ¾Nx^ùÇð-#¸w¡¾œ-Óø«�c ú·Gÿ^Ñ¿úwHÿ¶é߯ôïÇ «w$Œ‘$8{:EÌOë¹»³çØËd’âªaý˜Ø7 N„òŽiŠ{û“«3èÄvq .‹Ñ¬€{‰18&ž9…k¡¶7äì<-yÞ~ôhˆŸfÿÉðIç9¬O‡�5Es}×õBé³NXænÉ\0¤é‡šT; êîóÈu×\40š`¡è3J3ׇ4tqÚ��%Ì!1¼:'6m¤³„þ�\nô¤'êgø %;\rl—Ðxº i%n¡¤zC©Âr-=æ™þ÷yÓÎ�²|&:mÏ=ëÚ£™uñ$ƒ¼2mæŸT·åIö…›‡Âª�+Ö8[ÇÜkÞ€pj—¢Ñ>I×�“……Î rO¶…~…´"ì‡û(AÏXŒ “Žì©‰fa–]^ؼ‘‹¼ %öxWFªñ&�^ε¨â]Z¹°%ï,P²Å�%ÖÖG¸Yo^ÂêMà\Ð4³%Nohs•¯jÄ�AgÞuL1¯9¡ U›u =r`/Œ`=?A¶®EpÈ@Ù¤~ š¶ó{¸¢E\Ðuý Rç!À\­'¾ó_üôèÑüéYòåçî|+ƒZÙ�‹µûÉ ¯G×zFBeo;0ÕCþô#«N_‚/b�NÎ%ò��|¸÷ÞÃ`þÚ£qú�Nþ½®ó9Â~ð…¾É6+|õ™¤îUWëO®<Gæ¾)¯ñuI”ÿ¡}w×™?°ïDD)1bO üÏÍ|5¦õ�ˆõãÂ�� 5µd<©É% :4†ç:kÑñÚ“'‘«Ž¥-òY4^d:V(Ÿ;CÂWF¬´$ˆ •Œ¼±F>a(œÞr΢âm£‰öx&&S‰4½l¸OúD覓¢òÍÝ�¦›5ƒb y_œ®>ù$æ»ô ž4©aÆe!Ë{È~‰3ÄYÍ'h"[öC²†›š¥ÕçMì”-+ó ¾ÂçËOÝ[Bbi÷ûëãROõ‹+?~N"”ËáËG�Lø«"¤eg¾­â} úZLÖ=¹Ò_w3øôÃùz¾¼ŸÏ}2âAŒ! �û º¾ù„v² Àúùœ†å£I2Œgü@ÓRÐ"ˆZ›6w2}9vú¿�¾i:÷)Ðí<N»HerK E5eÍ=8UÐÏù¤y±¾BC£ÐÌÖÂh„­…�×·Ä›<«�,ïú¾]o¥¼k…Á­Ús�<ùp(g¨)’†Ü·HðÔïá—d03¸Iöw×!HúÄ®”áæù£äš„Xo.‚¯ÇQ³™¯Òÿô9N[¼[5q1¯GÄêõAXõšßL ޹p Šn�äâ“ÈäiáÆÇ™�^ÄýSšRIÜ"È$µ%„(â™'I›µ=ÑtZ‹ÿ�:Öù2¿Phšƒ —‚ýOëÚ¶÷í#¨E^—HQ© J\�ö¾Üïù)’XÏÍYй² ±¦TÈè_¸¼=Ú=fã~© ³p 'è§Úô™UÕ2© kì••ëÁ&œÎÂ" óË7¿pUêå†þ²§îš˜R|EÒKÚ¿�ÆQľ�®zág7ñ S Wˆ)w-�BF'ÏXlrÛyÖÂr1�ÞóÌIÌ——bPÜnS™©—ßnú �¥§K«‹+KO=s±åÙ—îù�vC/}2J7 É%]‹³ùÑäŒ(5] ?·¾Àæ|=¿_Ã5Î$JH®W7Öü|§”€¿D¼™÷¿¸nóþ o¬™¸¸ñ­«¹³uìxJ£Åw0wÀ$Ž µ÷9Ÿdq\³ÉO¢¾ªH»nû>•gæW3nd’4ýÀá?|7’ 8AþEÊð|8ôÃV£ËÉðSàÈ¿H™ÈKWxÛái»Ñ$)l7ð)"¾„Úú@¦Ûo\>‰³q2ì±7Ž" 4œ¨s�ŒìP(pÌ#ßܼR77èôo3:Í·ƒÔ)ü0ž:H(Äò›ÒwÙ�`0N¨<~—KâH¸?áˆ>mHøËy³5 ÓË´?"ÆíVþ†\öŒ8ÊA* !¤²OBg·põ7*¯ô§êú·ÃäÚ?]öžÊxä“+ÿtÉ[êz—ÑÅ¥ÚöhZõPž¿±.Žd«x§­Ëw:^gYÕ0”�QkEWz Skßü‹° úÚþµ0^¦Xýäµ@ †Ö9û§”~N#/éœqçá!YÁ!€…Zôþ$ÏðóÜe4 Õ$÷#}¥$ÂÞVß ø–[^n‘(ÿ^VÈ8ƒè¯¢ì8¾»{/h‹Z½Þñöþ Å^áßg'§oEWþ"ÅìLOñÞä˜-°òÈçÿwÖýôÑ|O à{ay (èî»uQjݨU-8ótw÷–úèe5E�ŸDP‰¢¡EŠœ ? Ë1ÇOzŸé*!ëTz8“Ka×ñ‹‰_ A@Ê[{3óÞ‹³ bÌ«³áMË.dôÊ‹80ÍñäJlÝЈ¬Ào9Þ$ƒ}ÔM=¼Í¦Ý�y¥ÌöåÀ¼ 'ŽõåâjAt‰} YÅ¢j1I]»Pbªø‹£¢˜Œ^/…õM/W4ad¢'OMz='b£Îš|�—ªy«aÁm… ’|wÇÈÐ0Rx<°ðÈ�ºå©9¼qµ«’·ì®í®ÖÃ0�=’_ÏVݾÝÀ‹$�‡Ã&²Âc­C=™eÁHSX.£ &TYù¢óAÇb©�…Áƒf•Dww9`„Fé» aˆg~tÕ¸eÁ{‘°�ÌøÇŶT_:?¨ô¹Ãf1¬uˆ5=--ÃEy—•ä¥Û7mqA YãyÃáë[n† ¥*{ Î)£Tîº2w=óy†ÓàÔÊà‚„¶’wwäÝÝj›•a;>yòŽøÒà*kÆÞgwÒ#”ú°ÁìeÔQƇ™³ßÙb !ìΔºÂ©ð*™]—ÅLà› ¸ŽRMì0:· ¥�§oæ�îÔé~¤[#Å­h€ø;²è=ä„éGcà@Ó}âÓ%*œÉ5ȬŽr—4ÿ!}2o{JOUÁnQë¬õ'sÃàÔ ÇQ87 Ïà•ÍÁXÆá<5„7¸Ź=ü@”�†yëÒ¬eywÐsîv&ûlöfò"ÃѳÂ$« tkú­ío_a¹/§xçuc Î&ì¿DzœÇŽfãÒQ5ì§Ð�Ž½Ñ±q؇ÿˬ«ðB›ÿÒðR4ÉbÙxŸG9Æëæ°–*Äî¶½¨ K|‰›¨+è‰ë2C¤¦˜å!iÂO/ØÓr“¦í(¦%ûæ¶…K£òÔ|ų, © }duÖa:ç[é6DF!¦Úl)»“Ô¡ž¤JoWÆB4âÕ$[?Ï 61cwx9æÈzÄ—DB”�í>ó8mì2Š�Sø§ïú=®ˆŽ¸¾ØtSÆJæÀ‹Ö)Ä�\/Úf¶«¸V”z(POÔþ!¡}â$N´Îî¦Ôº%ü|É ­K €ùüŽcŒúT(éX±”Íy#b)›o�¨9ü]iñŒÜu¤È9¥Õð]$®¡£9ì:4‘È uåÙÎM–d}tþL4ˆ—£pý!ÁèÆr\Ù¢Ãv&EzœÊÝYž@p¨˜53Ï9Û_F-…òPN¸>á°Hñ:›Vù"?£É\[�ÿœå~çó6Hׄ4v¥‡:M)Ï`Gd(½f�ãFGn�[]šx?eÍ�Ùt›E;‚<¡yè,ƒ‰Vó£Ô±…sYuµÔ�vÛ 95¡y)Ò|,:,»6x¢…Y¡¾2ß+ö®ÇQ¦ÃCšp(ò}ê~ ·p0hĈ¥a¢L"D/·¢¥Rµˆ~²¤;cj›omxŸdkgd¶›S�»™ËÏÉ8ºÀüC‚³g{QµÚÛ,ˆ¼­šªyÙžžYy7¥>ò­>NËÕÀÙˆYúWõøX§ïø‹©â€p¨äaqõ»µtuй*¢bn¹êô3;±² I®~¶x¾9I³äÊÒ­—}Ó DFŸ’/Fñ€™ËÜ•çZUL k¶§õ»Ö8ÞÈV)©‚Ö7x|Îܺê�Þ}R!ß4YªFúóÜ·³è=-Ä+á�û�ñ(c¦V ¶–1w}Po{'·ùëäÆÉ/ü?äeŽóI» øïÈrsœ|TÌá ¥‡²j½6â�Uÿ�¦LPÝ&µ9r²eáÞ’~Ka3õmf7"$dØŒµ Ê1`î ‡KmYQÇã.‚@S�ƒþEòÀçˆ]YϾÓ<„tް'êD]õI ~Õ0ÿ�åÓ~œZÄ‘Mw¾#•4³—Ù×9œvK]çË Úvø$L¾g)ø�ÜgR}�îAf�ôœú‹íïO¥2ñÏRëXÕòW× YñUQ"×”öØ'Ùš²4øÄ@ÙæI¦¼õä"äâŠXæû^‰ad¡ÍW˜¢ù²•ú$ž‹\ø� ’2o,kÐÀÇü¤ÝS5�á7Ç£ÝqÌÊ.V@æøXA\ ïî†?dëÉÁp�1ÏÅylþæúܯb+'Š{?¹vØ "÷pžY.€Þ vÛÑߌ²òÚUºÉÏkr»RwVä…Ü8ŒÉUS®ô0¼Ã.N&¾}»³•ÇÏÓšnɇºÃ[fú#.õŽ�‡Ø{xþYÒèmg«Jó*Ÿ©Êuq§Ï[;{•T|tÚO»Oˆ}ž,Ñ¿Uú×�Žk+·tV¡Ü�xñ¯fgù¼}<.æ—Š*XÖœwT\w…>#ÄG7/Rq=]¯&ªÊ·JòefŽZÍ¢œyì»¶ üx0cçá`ͼÀȘ¹f=jI“¶H6¶Ž¨TRïÑoàQªÓô#¥¿i1Ͱùúä_­+ì|:muÐ~æ3iœYËN›ñâ³êv—X* 5Mõ„½®ÒC…fS>à(Ü©œr–ÎUŽô|j´ µbtú—a¥Wò˜Ã¼*ƹ1‰õ}Ç“^€"I6‰x«4õ9g‡.7Ü _hÁy\”Ÿ¦kV œk�ýC¯úöÒioBs™7“±�Lg‰‚ÖÛæQY"óZŽ÷ ]´×4ȼÊY�&ƽŒ'ìÛ”¸†Ð"· É$x<¨Ji�<-LýÓ Y@‰«PÓŠìù@Ò–Ö*�Ÿ‘ˆ`8<IzË7î&B¤†Ìjì,Eõ¶˜Š‚çôiÄxD#W9]±S˜0e&ÊITÌaò*o¹Ç¼Š‰(Và5ÐJe`3øÇ”¯ÍçoVÇZ¦Z5S~géìL}íתGƒ2ã¿��¦~žâñˆ/}€A€ÿMé@ÌRjÀœ·›×Í ØMxvPŠ&r ÎÔ*].aeÁÓí±=/äͧ e’®q· _Ôš j?¸®Éƒ�c.åJÌÊ8ŒfñI £$yè§\NT)ƹ¥ÚµzîfɰÈïì µ<{®,ô>U„@Ý¢§™KäXµ\ªÈÈèr©|¹ó¥á ©NhÈWJ×ÌM/kßÐ/ ³ 4(-m~ö�P·1Vq­�/¿[†[ƒo=àïÁøe>�Uж§;ñmàv1ÙVÉéøAœçÝê‡/ÍÖßVÍ^"*•œl]û°-¬5LÆrŠöþµæªL.Ö 1~¡U=>¿iTÎr †ò©Ïú…íwÙœ®Ö©D­ 97ûÂ;�½ˆ:k+´¼ËÖOù€�Ñ‚×Þ°ÕL]ŒÛÑõS¬šÅaÝ…ò-–ŸxÌ®~È“˜?ö4™ý¡Çã÷=‹}–´ªë‘?˜qAÏñ¾ù!) dÕ1Ve´Š‚ré7.ª¨ŽµÄ�[œ|>‡³ “"‡BŸäµrY{´Ñ®c`2jÖgÚF&¿4oFŠMú´ «LݵÂì½’jQ¨­Ê­²Cj5ª¡…L»›…ŒR7 yi1ñ­\Ô¼‚cÖZ™<å[¬ùšÉù›VBZu_ÒO4«»IÚwÚléVتå£�v`ù¹î|äZ°6ëSIá!ÒˆÚ9JS.6Ü`ájq©à1§¸*1IyYSo’Œ[cŽÍÎbNÓ9›œŸ‹qNÏχp�š^”‰+ÇýFQâœEÄÙœy:«›s�®dëLúMþ•O»a8§²ÚXLUá�¼b�nœçNZÃÂØ¯ôÁ³àøÈù”YšŸx‚µf>9ÓÚ3Ϲ֮Iθö–Éž{+c—¯ J2®†_L­›²gMl^í.Å¿gã•&ÝéÒæ »c_o=¦¼@o½©B«|þú]Õ/F¨®EIx ¹ P3ý”©Û€YÛyKPTnË¿ oª.ŒÊ|Éç<ŽÎô…ÖzþÈž|YcÏzB;ËZP$l:ûICæ4´F�4 Q ^oÌ5®£áP†©–X4ÌEÔÇõ¬  Ü�R‰KoâìRdQß î½Äë)«¦·ZÕÆ$’XSèËÛ#û>�I�ÃtU{ó,›~@­×P-þ·SMÝ=‚f‘ÑÖÍi&݇o¥LÂa sÊDš2‘á'^¾ƒ—j0T^/Ë_RA¾�õq\¿ùð˜ùÜéŒÅaæQ¢v¢^{Êh–â±�­ ¢dì’ØQ:¬4ê«ï²à×L9�{S<íd²³&ñCŒc0û̋pC«ž:Ð No-"¢^£4JÅdÑô:Ê.ùÙ¾oT³ ­~2K*{Ä|©Ií‰KÇ^ªF2R<¡•]úY3†ª'û~ÃÅ~µ¨ë±Žë,@ôá+©±;ó$k.z’Œš®r—nâ{Ë2±Pt§@¥òl[¤á´£´˜ ýÔz¶Ä›¼Å€.9®*RiIH,›ÜÊîùºž&ˆ'¿;}ÄÔ¢›±W©âôCÐq=R^duè’uEþ“­¬òF4ß±�9d–L§þJ†|“5¡Œ­Œ´T,FÆñ´Ýw™ëY…ŠÄ/³®N~¶WUàÕ²9Ù²ü*­|?Y“RlÕ‘JNu �óvagY†Å³gñ&'Öp’ %Ží1Çö}¹ZMØO×ù׿ì"?‹=Ó¢ÿs&_Ûø"Öï¥ZÊ�TÆî¦òÐ2*“r4Öz”U:P(Uî›Å(öIu“ù¤UjѾ0 g”¯4‘[˜Y5КÍý–‰Y�Ä¢5CšòÌþ0Ö×*‘'m�Žåk2 ÌmÊ–ÞOòúÄx±T5z:!™jcŽ~ü'�9d¸�8¿C”£QoÄÐ(¿ee]«ã£šrMp;–e<®œŠÖáöþÖÎþ+] ž�5dmì¾ÛÞâ˜úEgý¸½yBY œ%_œi3�iÕLaâjÿ×qÙƒêFlÝ<öz¸KW7޼â×d/|%ñ+ùKv¾™é2¤±î¾J– G|-(uéÍÙ {35G8 *¬†y2È<•Ëž—U>­á.¯zvkrV?ÅÝ¥ŠéæòšÛd+y3`óõ?Û6x*\¦Jó|UWšŸº®9øýI&^«Æq2RñíÊ%õÚ-ØSª4Ä™Í_ÐÝKÖ*Ч³Âý=z„í©Ä¶�¨<Ų b²k#SüO~ÈfNjþ�0´ä{‡”â?úl x¨YüL³«Jn¶ª.šª¦d &Õ[››‹ŸàõŒÏF3E„Ùlä7m :S©àÍúf®ÁnÉ`W*$u9u(¯‹Šyú>Ô0¥~ÜhÂÜýh7Ô“ -¢„ív~ì(q0<“‘g™üßs"î'ñöh¦[Êþý­Ö]k^ßRNË¡˜i}y¯Ë¦ç:8b‹xÇ‘XÖyjUBçထ~“ŠERCÔÝ.¿§!K›P˜´°[?õîã©SGš½ê{ë2v]»�&|™=„»Î'5šõÈìI Ü‚ëúÜ^ëA;fÒ€L½J«0TÄÅ<ü¦±˜ü�Í€áF<Æ„×1“WwÚÔe§¡GëL’ ¸EqΤ»ÇÓÊé]Ë’XÝ(ÂëJåšñÑ#阷e‚ äÎÝ´ ÊÐòH¥Í_¡",ÃP8*Z$ Ú²i#ãÊ«œTxŸÊ@/]ö}¡@l_EYÆh™ÐºœÊRÅk,8¥‡%j®ùÙ@xů³«^Gñ ¹–U峩úž_gW$ý‰ÔGFeýfá.$€A–µl˜ÎòCg‡4•;q˜EŸå±5ìOàtf4fúmɃ,�šfÉÈ:uàdÓ±9…ÿlp¨ûòf~z¸”€ã"®Y…™)öR/�‡·×¼oT•¤§Ýº*o•F^ø 7 Y]áÑÅNœz¡’žÆì9ëk¦§fàÒ®©l… [�á°a¶öÎ4Kçÿ',Í×�]eüP­ò‘»þñÔòÐÂX„žo¹Â{y¿g'™ÓÜÑúPªÏ§ï£ > dnjҡŒ¨gL‚ÒOѨ'M6¨Óë•Gt¿FáÀ2/'éd D Ê€ÖÐË^oý›KJ1*å}ƒ¬‘õÝ6¤r¡=H6£q2$JüwW{„HÖSOk… ÇBäV–R�ƒ ¢´q¤˜ÜJª?ËaÑi×§ý &ì‘q{´ô0’Ë*ïR`ü&½÷ „3Â0¼ÿ<"÷v€éß9Ý ¿¨â‘H¹ërþ7’'dk.«–PÝ#oôä‰dÇ8‰¨:/hñ/ù±æ¬íÂVaÄTDß»;í¼b–ŸŽµ:“gsh¯÷hêCo Žck³§ÈÔ¨³´L±«yJ²A—½�ÀÙDÌòvNºê1Ÿ6jÀ¬xÒ`6—ræZøÐ./�ŒGë™ÿ;·ŠùYú:ô tKòضùµ¾XÕòoý%²ý2˯ccý{éùŽxæ\½Á ‘«a):‰®pÿàï®^¸äù3óߺ€E¼oõÿ®GgUL¯õK‡ê8f¾ialZÊÐ{Ö‡¨R¿Ô¼aíÄá$kí¤Ší¯xéBçñ‚•–/öã�NÒP¹Ç„Û€y¦¾ŸHÏ%¡§jûãâmÊPÛtö§!ieª¾¿ýá=ÖŠ<�ûãH**„å»–¡l½—kÙáhÌ+¼��uÝþq³ïzÉÈ�N9üZÉÈézR_ÂN•¶þ]¯w%Çg/�\]…ãO]§¨m_]¦•Í¡½ó;´F×y9d]®™Š£¿ZvËšÛè#±Œf&×*,SÖaœ;—¡ †²(ïI·`j*z•OEGI’•l¸~+¼Š¥Î2‰Ã–ðÇ|ÚóU_º½Rz§RÍ§ÛØÛÊ3鮨o1Xzd=íNmÏÍi‚ê €ÊG©Úq&pÔ5&×b o½i('§�g­v«ÝHb‚‹fÎÚOöÇâó¡+7Ï0n(~"»Mf/ŸÕVŠMÃsz½äà†D�¨Ï¸[8³óǸ-ÒI{á¶‘¡ôam� %ª¤L�+gßÝÅÖ3û²| Ù^Z`­4õ02I%.T—,÷ùíYÓµ¯\ÔY/j0ç ­èŠæ©4¨IÃ×Êy·š¿V=zÏõiðÉ»ò¶­¼ñÉ-Íôއ¥Hà ÏÐ(ã¾b·_uªIÓàóöº=д¯ksTÅጽ,ëÀ”åƒG� Æ“…¼’ú WÅ$EuXFƒ…ôÈúБɷCTˆe>.Äæ‘\¨¸Ý BF"䂹õe^˜¥2*)%J.&í/e«k6¸üYžLÀgažÛŒJÙA¹¼WNP®Ô”Þ 8[Ò9VD>êâúü¤N ÿiÝYýT>€fõSº*"ÊiÞ"pÌ�M�½¡ë Û¢â�9 Õ¤ÉGê˦�04Tpœõ¶¹  Òøh9®GËÉU”B�býêæƒ\/»-–]¤�p|Áú¶+·8*céÅŒR¼(@×=ãÜ1)8u ƒÅ4¨£ñ<}kÐùcøBÖ¾‡“1gƒWYsX¹å€�Òäuó‚¨g,Ý€´Ʊ¦4bÒž94µûPùù„³‰¾ñn÷ä�[í"T|AàDŽª#ô¿e95RbéÝ:©Cy£ÆTË$ÕÔQ¶A»†rqYZ”~Ž±Æ¯Ãß©D-›ú wapoæÙæì3fo™^‚^köìg½ZöJ³{0–\ð•ŽD|¹kä>�Ù6NÄcB¬ƒ`>Úd’qì5—Ÿ-­jK™atËW±ý(P—(œ 3êLÄ.p¡üæHó¨|‚B¨ÚVrî6q¹lnÆ[&í…§ËçaßÖÝãpkå™2Ê2ÔïH¨vdmù «¬øRŒAò—!´rnœ.ÛÇ5#" Â�ƒì²0MMŸËäh݉1�b4SíÛ,ù$`“|.ú¬Q—Ù’©¢Í D›[i–P¸É§Iú~¬rÐ][šî¹]V”yÅ–)WUÌ�òÐaY~x� Xwï�]KYã”À¬],ûÛºc¹®_8# ËmEE$³‚@© ∠Zn•ÇöŒ04(ºvÁ5dÔµ*'P±О ™ËN$@׎XŽŠ¦žîâ´Š°�å6óá.v¡ê‘uÏ£ ÍÑÂ#©º9 IÓX�+æ�È6uâk ëÆóÊÎ5z•¢F1'¯>‰ìyOQ—:¢í2dý|뱎ý�òaiû ÷ˆÆJ sëL`±Î&»Û~±™Ø»¥TYÓ{ó¦ì!�‡Û¹…—³f(*`û¹·édDK¼-™åWÚþèЄ{Ø"‰q0{û!]ožþëvú!í>vée:�¿˜â˜b<‚9¨°Hf¶àAÕÓ³t¿eÕSwP¨í×zÃ*Wxi¯M4Äc{ó•ýÕ*-C²QC$“øô(pœµAr›=Á]çetŽ·ÌZwwü—JÕ†Z¤ôÜÒfÝ< »×¾–|šNø ¹ÓëKÚš³ŽÜD{:«s†ƒ¡´YO2£z¿.Œb`Ýôx Öv€Æ¤]’ û� õ:"6ŵ3ýû_¸V]¨Qr6k”\`”\�ð­ aªR­>-•ø_H®›òœÁ¬£"í†ñ…ä%å& j±¨dÜ” );÷•Ä)7IT¸�.rãof”âº. Ð_-´•£1³¬¶§ù©LIÂáTi:o�·{Ç'GÛ´uÙ¾¯ÐÖöË�·»'½Ý�ýWTöó¬²v¹·¯÷á}p·>ÙÞßr¤ƒ�ë²LU°×¦½=ËÞÖºCØñöñ“ª•R)cµª¿Zà«W%J®‘|ñ1l�È7Ú·áÂÉúPÊ~5eÚîXDÔ—�Þ8D0”¯rh}Õ=ÌÜô÷0Bï›8¡÷m¬ �çزW˺vªr´È™©òÚF[«ÅfÊ®P5=+¹#Q”ZŸI ?ÿŽu#F5“wó+ðó‚EÀyº‚X¡ßWWÊáW²¹kÚ¸¼UÎk%ÃÉWœ¶ûŸ (3@I‡Æ kŽ»7«œ ÐJfÜlpõ¸Ù“ª˜JáÆ{/V\ Œ‰¬\�ƒ ¢RQµk�{›· ÚÀìtF¦±§Âx³ IgÕ[EÐ;ºÒ¥ÏôehLÎCƒT|.­îîZ¾Z׿b%`Úçc�ƒpª1Šày¦í�£V~n³ãÊ ýqt&¤q$ÏÀ<Š˜O]ן�yQìhñC؃b’Š2,frK§•…ûTtÝo!’jÞ¦U¹-í‚ ÀËßO%CÏxf(dx÷w†5‚ëºP�Íšùíi �»;kMs�ÇÏšõ�ß“© UN�¼ìÞjˆØX=i*.­m£XX]ù« Ú!½ Çâ[‰| ¯ôi D†¯( &‡ì*¹ø„I£U'H#ž…nì+(x³Ú¶Øæ6f—šyJŸ0°¾ Z¿K%Ö¥’†v9\Ê�úJx’WÌ»r6.K7SÉ7®L¬,œ–¾ƒ €«¿Ú׿5ã27Öv¦–“¨vŒ``ÕÓlf—kÄ©�p‹µƒ¶ÕÕ LPWº¦­®jrÙ ƒ]½jÝ›Ìuô0å’­(ˆ/l®¨h!“uÄwZÀ_~½p‚SFÓeYKa Ò¨ SÞS³¡}‹ÅçJ*3`¥puj‡”PŹªÏ j«]jòÓ ©ì Î,Ÿ1ÕýJÿRô?í'Pf|ÐöЇŸ'ª OùBòL¬­¡ˆîw¡PY^ ˜ÔåÎD¨ºR} / R8Zæ#P¡êHj2÷ayµr¹ÏBÅQT8¸”žpKšjcV…L¹Óøbãœd6¸­ÚD–˜›T ‡©õ"øz̵÷2Šs[ÊÇ•zë_FÃ×YÓª5o-V`-OSÅõ¾±�Üã›RäѮ؞ޱH›ð&¼ ð*Œoø{½¦ZÝ(ЈR‹&´­­«püée2æaLC–ý8E¼C².J*Yí‰F•Øk5›/öR]>ÙŽ¦®­3éA|f›ÍÚV,h‘<¿ÐÔÊ%yìD[P[×<·^xõ¥iÁÔ¢4ob¿R-ЃŒæÄšÝiíNnôdXZ¥‡–R[“8ÇÿÞ%ÇԯˬS·Ä0u™E0YB”žJhÚÝÑ¢ÔuU̪Š[jš>çßT|Sí3Á µ,y�*Ô‹k[Kk0?^JË`¤þé©ó͆ðK×õ8-¾ø2WLïzQ<šd©kÒ}»ji!¶òd‚35áæW$²-÷8®ÃeXîß®äÞYj8KMj«Ÿ´¯„U¦¢[8#fj­Ñ`ʲí.{fVm°C̲B'•¡"ôk”‹•€$=—Ï7?üÓ]ož†slÌýÚž{Öë>qeÚ‡Ô]÷ç/¼:ÿŸn^Çç<”j¶¯sq”ó�‡‹Î?]q‰Ýöò¥ÀC/áÄ^DÃ/òÜîãûq_4Fæô.Š'†¥£‘h5¶¿Àw‘4„8GÞFy s‚ÆÜÞ1Ñ·éGšg0ïWôR3öõ_ÒË)áeŽéRº¿-2£½¼Û‡hšÓM¼ÊA”Ž’ô¾ióžMS™¥ïß*™!¥pe¦¨Û8wL͹Ô!/+_ñÕí£ê6QÕ^ÔnQªèÿ ˜U–³{öVU<ïÛQ5Ý?‹¯… çiÎ$·ù<8ƒ%t+u¬ðmËt ƒÐ–ÛÊ»™7bu½ºE½Y`+DÌ¡Wéûm‹n«N0ʉùo‘0¼ÎÊŸ“PÑ>衉¬^rÀ¡Aú ¶z)EŒ&cá?èLÿ-ªÌ^¯,"ÀH-êÃ¥8Üé5q�aÜÆ{É`ÂFÔÀ!È6ßd ˜ ªTÈ.i6Òï#*£¹Ž° ]X…θ�¼G¶Šœ[E.¹ÈÌK]«VjÕP­›È3y_8Oos”6Ý4Ïß.ä/­b ŤЉ•ý¹�mÝ3à´tê]GÝé4'ô&ÎþWPúÿB2ÿyƒº«dP?ÊöÕÇÉE}kpFño÷�ÍdŒZÆ’ö”;°§|¶²´ìz/è±7whc³…ÔÅg ×;ÆcgµóT;Þ8ˆ‚ëÈò]}½½(pFa,† …£ÌN"kl—¢aa&m ú!•hYj,éñâ¥C3d‰2µ©)3-l3\[îÚÄ`? Nçÿu‹F2n\%cÑ�îúÓ†ú¸Jà�¨âK”f­ÇóÞü¿®Âáu8x�¸"nü ìk9û0Ì.­Ç�ô2™ ð¹žãM2�º;‡�S’qùó�¹—Zæ?øÝÇ�(m„Cød¸�ØyJr0%©ATAùîãóòo#}h¦ÜƵ lÓI~@ÎiÑ¿iH/ªs¦�Ëáw¢,m¤"{@ûI2òxÚ˜À_}éJô<¤‘Šzÿ‚¥tK÷ù<™ÄœüR„¸QjüSIéÝÇÿÎʰ|€OÙÀM Ê~8%�:N�öÒ‡nc3‰c¡bâF±qvÓ 1f„Þˆ1q af·¢�Í0þg¦úÓ�¥6‰âQ³Npʘý3eù¾{H80@u-Ù€#¦d"{½}5ÊnØñ(}q!½ž¦Iÿ“"Š®22¾»¬È™»Q_P%˜_EÇcÕÖA<7à¯ßHûalÂñ$†;V”:I’•¹i$#At&2§”Z Ê9õGB\j·2cCÅz±±Õ8Úþéíöñ‰¤ñx(?d#‚Hœ'¨/H™çò#ùÌ£ÍMúv´ ºÛ9tŽŸ”X¬ùbwcóÍÝû×;'Û.scÐz¬B4]MÀ<|(50º¹7—‚ûи&þ¢y):�°ÂÁyqÞÑk�¸âüÍáóð>©5ß]»o¢(8RÇ¡E½ãûT°1þN¢<4¡ )þR±ù@ô‡È¸š2 A溹2ÍašÄ><'H†�èsZR½ãI-°Š~—K—‡ðÑ+TXiï縙ë�”bÆp$T£fÇ[飲Ì¥ñh\¹¬ÏxþLmOë¥:¾3Ì´bû~�ýåÏ8SáùXoÃш½Åêëµ?’Xh+#ðCÛé8ŒKp;ÊzgcßeŽ÷Çe/»ö�?.çúD0‘ö–:Ï|G¤ü,R~,š—ÝÂ¥SñAxó[*¥ä¹_;^R ]*ÍK¥¦T: ?|9ï$üàxb âQ¤¥oi¡�ߥEþíä¿‹!ÿ®òï³Ðo¡„G heYÐJºòt¡ÿa²>y…�0ð(+l‰I–ö­Žœ�M)<ÊR/é}ø"ž†Qš—Œ2S�²äÍsQ'y±xhŠáQÛ§ jLtXðF9¼‘�wH³íäbB�‡VÑ,G23Hž©ûãOÀÓêµú઴zÓÄzz¶JT_:_&ª/‰…È·úÔѵ5S›®¯îÓµêËTë‹Á–Mï&4à„Ç­BúÚNºPYaHý̮†Aah´håß«ãÕ¦ƒŽ*M›3œ¨“(C>]Ÿ½”Éy;}qÃ+|?6�hq¥=Gѵ:¬‘ÊJAùkKé`7 x¨&àFK�pJ,g¹0ØŠZŸÁ7Ö,]ð<4Ö>­ÔFPEóhG-uœœÄÄz™UÝsxv<ÌYÝxìýO­˜d Oûü†pà?h“˜ù'Z� SVÃ{›0îïc'­GøIjKWxÊÌÀ®»6,Þc�qCv)kõ„öêTޱQ"FÖêÉNyÎ@e�YI¯8…óÔZV`xôHÜ«]­ôí¥ ÒìLŒ^°û—�L\5=a¬9.H\*-5ÀÝ‹þÝ]S�`ˆÓ" w×׋ ®WÆÊÜ+nŒà™i)ÝÀü¸k ñ—ÉÎú=¬•a�þT±R-!1s,޲á¬Erâ"¯ZrZ™yì‹E‰' 6«aD9èךÀ-CKN—‚öXM·5Ô¦™m¨.õü£q*o7_’ÈZ2—ÊoÜŠ¥‘ít ¾NAÁ·¾¨UbZÿQ´ VðàUtÿxJ‚H· Üf¢ñá”ØTdÕÛxZšÀŒ˜VàÌ Í™pûକÐ6†"3y¦Â.%›D‹¥ÔÉ™FÝÑëÙ<çÅÉc-ŸïY´ÛÅÎq,®h„4YpóXp³Ö«Âöe5‹ˆ1b´Òð@§@È÷ßjn3MÞ/³³vfgÅ­ý‹_I²œ]"­­ƒÍ·{Ûû'nmoþ–£Æü †�_Ö9*¥¨Ñ§ÎÆ}¬�mü¼ÄÏ+üìàg?{ø9ÀÏOø9ÂÏ1~Nðó?ïñó3~~¥Ÿøy�@~È/ù ¿x�€ñ#~ÐÆ ´ñb?hèz�†^ ¡hèÚxñ ~ÐÆ&ÚØÜÄÚØøM€ßøM€ß|ƒ€ßøM€ßøM@Þâ›ïðÈ›À~à7~ 8o¿-@Ù€-ÔÝBî6ÚÝF‘m4¹ xÛÀt˜¾Dã/Q÷%ê¾DÝ—¨ûå^ñW Î+ þ P^ûWõ Ø¿€W@üê¾â¯ñº¼b(híZ{…~¼B^û×hò5j¼F¹×(òEvÐÚZÛä@ÞA¹ ¶È;¨±È;¨ö# ÿˆr?¢È�Àà ÒÞÓ7Àô 0}ƒ"oê ”7@è z‚í¢Ó»èô.H·‹j»Àt…wÑä.šÜ¦»ø(»¨»‡j{¨±ì÷Ðøhµ ö€Á ì¡G{@chìÝ=ಇní¡�=´±‡6öÐÆÚØ’{øð{Ü0ÝG“ûhr­í£µ}´¶œ÷ÑÐ>Àïü> ïÞ>êƒC8DÝCÔ=DÝC`zLà�ËÓC8j‡@í—ŸåPŽÐÚŠ¡¡#9Fî1Èy L�Aœc>FkÇhíèƒ �Ñî1Ú=F»Çh÷@�Ñø1 £ñc�äÔ8ÇèÑ ÀŸü :sð'È'€|È'€|È'€|È'z 'ÀùðÞñ·€ò5Þ¢ñ·hí-rß!÷š|‡Î¼C¹wèÇ;@~‡î¿ïQíg4þ Êý‚†~EÝ_ô×÷N·p\PU½ÐŠ8à°CŽO­â2ü%ãã ®ð©=“L¤Ü‚ÿ£ycb?”eò¯nöŒÞ(D‚& ©V@¬ÁÑ¿x†v‹hÀ3üGùvÓBxÏ�k6ùç‡ÝRfÕÒHÁïfÁgr.ö"D…+¹ÿyã®K…ºÁM$†ƒ†ÝGŽUb4Zh5*RKY“uc›µŒõ”-)7¥"÷/ÕÑß&QèÅ ï/…Rœ#ëU{R¤dŽ£ër¤ó,ÙM®Åx3ħ Õa§äÑ7•É™#•Ö ð‚Ñ)ŸmÕ´ÇV÷T�OCut¯¿Hî¦Q}eÿjF±•¡Í­üÛëË0óU�Õ‘¢¼œÔgMafQ¦˜Újìö³¼äá ãº5Rr£Sw=ijm•—ï:Y¦w›ŸZ´OŠ3Úð*“I¹%  Púb=ö£©a!…ÖNüvÌB(88»�ƒ•‡5'�KUCiÚ½)¬u߉õ]%3gf¶˜˜~tÙ‚¸éZŸ»ô¡E™W¼ŠwÛå[¨YŒ’u«\éþ�¢ðQôo“Fõuê`'ö�q’dNY>Uç¿G`ѽ0»l� üHD$WM÷±xBsñ!—1ƒä÷¨¹ØÖƆ§Ý’.xÆN•‡òÓ—‘œHO©ÒÂÒŠÛõ~‡�c®…O×£f§ÝF3Wþ]Q;b‘ÿ®–ò—ó?¯h’OSÑÇÃU2ÀÓ®`‡¯ýËÐ~4¿ž�8sæ¯�q}e"°Û®>ô‡½A’âIÄ—¸ià�ïBÿ(Æ]6w·}y|îÈ¿Bš Eú)pøÞåÑM8¸ŠhüY/È ûã$ŽÒÀQH“�¾GþEJ˜LÃ(ž|¡vÌs1§—Ľí(£TØ…¬d”wÒä< ùWB˜¤™óYNŠšÖ+åO›Dð²L_m¸!pð pXP¿xCœÀÉ(pä_¤ÄIÖS—a�c½HbdÑg>±=ô3#ñJ!ñÛ $Fa4ÀÍr4 I,ßå_ð› †Ðn8óˆL0Ÿ%óÔ×y\a9Þk5MéŠÎDþ1ÍUêŸ ï�H-<æ.¾Yô–9»´à¬½ŽšHgnq=ùƬ¢_,ÑmŠÙ8P¨\JÂg¨+eeɦK}(µc/’ò>؈դÖCþ-Rß Oüw&QkÁרm©T0/`}¦j‚¹&•3rƒ:m¸=ÂY’Šùܼ�FþÇN»õ¬µðTJ›^?¹bOäεú¯q]ó_žØp Ò*¬¹ÀÚyùù�OŠÅQ¼ |L¼XöÏÃÕåó•¥¹å§�§sKË+ sg‹çý¹…þ³•Åó••ð<\i8O„º²ÑÕðÖC²Šæ“ú´Æ´ÛÞï“�V� F¤”²@)|'î/‹EZ…„'¾€Œ4T}ñ�å h{ˆó¸‹"¨ “xVÆesž¤Ô-üSChó°\¢·é¡¬ó½Tµ� 1ïÔ`¾XEs±ÚNú*}Rĸ'¨Ùá÷u�«ôVÚË Oûí¥puIôÏÂþÓÕó•…Ó%ñÄéázûÿpy¾ßv¾õ³µë:^ÓË*-ˆO!¤võ_OnF¾¯‡²Î×»¨ ~/W.àÛþåz?FAM¯KÝú%’„xûM¥yÅ~geñigqåéÒ‚—%Y8ô3îÐexEOÌ>#zÄèÊžÐ~ƒÀ¿�‚ÛÂXm8²·½³„’V›“β§TÐp/¦ã…¥=I˜úBPAQP–9ȳð’+´(�v”ŠQ£C’^C‹F‘ôÔè´“ gêýZK‡N…’ÍÁß8”i»ÌUÌý˜ï@²²§.‹8T\AßQ'�§íÅöâB(–:«‹!ÄY»v1KŸš|º:èûu–Âó啳þÒ ½Ð^XX´‹Ïú ý•þÓ§‘³�"Ž@xêŒû£ÿsÁc�&~Çs0;•”…ÿÇËЗäû;éx– nþÞïM|ŒÂYÛdôÊ£MÍ(—*¬þí8¼ö�Ÿç_ÎáÀ@|c™å¨µÉg‚ÌÉ—Î Ò¤ïÌcã6/'ßÑåG 4Lß�û¼NkaqÉ[hÑ@i/v½7ß8&ª<\7ÄÛK«ËO ðÊãföü]¤´!ç:ë™ÿ.‚Kt3º39¥ÍšзC¡qž�¨z�V™ ~דю$­T³¦—¯´Èüé›håläDr»¼mûyƆ�5´Glç}‹RÄæE=Zé¼]ÉŸy+…Û;N×Ozcô©ƒ=ÚR¦É0áÍΜə;»™ëç�£kY^‘Æ4«2¼ágÚmßy“ÉúýŒŽyä�ÏÏjãós”÷‘)#’zÊ@q4pΙ©j‡Ð ’Hä,û¾Šg©Ï þ2¨L�Š¿Éã�C? $V@¢@ÂÏ´�üìÈ £rå óÈ " ‚F’äžË?"[rMŸFÇ Ünž:J¹rN~ ù4SBlpºÅ3'i“ÌúÀ_‡ KÓƒT ®¶Í#ì;€É!YlÁn§_”^&×4…–NÓÄ âHJJ˜zw+Ã×âˆKéžfj ­ Ñ•‘ž¨h^yªl -u+¯š«klZп¯©š&Ô$e¹³¼—&ºxNUGK“ãá\f™âY_”oçÌK£… @þË£8œ5‚"!Éc šÎhZ8c–Õ¨Ϩxœ%£&¡T> ú‘>°Ék¦Í±4œ(‰¥.tà$Z-Z ]Œ¡E.�…ä3ŸÚÀ…½ŠåFð‡ÖØìß76k™X)äuÕ·%“ÔŒÎ2§“««p|ó�0TiŒÔtžŒ6†Ãê'¯‡¢jÌÑÄb±�äg‹¯åÐɼ‘R1p¹ñM-€ÅUí\Ý�5Œ4gy’ãØ‰X¡Å¯5(+É6”¾´ YëéXžôŽGÝX‘µÁ·é ®QtézX'§” �,e’î'�g« �6Ús\&Wb^'/Î�&g4 ô D6Ÿ%É0�ÿ”þv6þ|]_ˆÏgÉ„w&^�ê>Ñœ;«zçw–VW;«ígmÚüG`[€ƒˆ”¶8ôD,ƒ›=yN>õÌ´ã·¥m¨óËÆÑFë½8;¾Ãa¯µÞî¼|¹³¹³±ëx*Ü`šHFô M|{­È©Á㨙ÿ 1gÿ“ÂÓ#�p“þ�9|‡#ñÈiàßY¥ÿøUòò¡ âwßyxÖ[hwž>[è<í< ÎhG¸²ÔÜ6ýW{ñÙÚþÉ»ßö_í_þz²w½òKg«ßÞûcgyÿ·½ë_ûåæ—…�›_ßÿ²üëÕ^ k¸k½ÞÆNooãèÍöQ¯�7•¶lŸ®G}lÖ5ôËû£,|¿<ê/ÝüòóÑçþE º�«Ñÿ<±ùë}7=¶ÀKkaõ.?:Ï.Ï^]kÞÃÞ«í×½ DS¾“¥]«RÿôV¾J ]�Ú¿õƒ´P�> §ö”®»Ì'×´];÷WÛ�Îâ´;]£¯YZ¶ŸÙ?£ü›ÛÈEÐ* Dþ¬„s–"þ*›×kXïÉ� 3߲ő›šnøð§Ç»&ûõv”K>ØÉ˜;Ù.Â"�)ÃoÕBJ2ÅÔ»,èê}͉òü�léZ]¡°�Kìá0IûÉUA†&¿…óQ<÷aÒ&‰¿K´”ŠÁ\J2?®dR‚§ó¬?3'|À/e|óq•zïzüA}ç·ä2î,,.©TŽo%2Dræ ÿ\‹Lµ»©©w“§çI>zçUÑÊJRÓ™�ÄÒÖyUX£¤Ê@DbeÜ[‰uST¡Ž•�t �ú9å5i¶¨[�Ÿg"¯F†°’=CàBKVg/t܃ÙëH ÷JÕ{—ñb‰l1­ØË¯®çÅB9î“o�_$%µïYÍ ûiˆ+÷¹7‰ @�·³Dñ6M¹®Tyj¡Qvd ïÝV]ÏÜNò ý(-FÍ\8׆æÓ¼D¨uñG4úèI4å½ëòÂêÂÓ…ÎâªGrt6cä¸.­I|1oÔ¡Xát ÇqrÝtòߊŸ¾«¥‰­x&p)®ä|7¯%÷^}F´Ô‡ÕÎÓ•…Å¿‚>¸>ö®[;ûÇ'»»;û¯ É/7vv··z'=U �»p¢Ó··¾£ÞÁ›µß¨ãd2R*c_hRŽipIõZÿAÇ‹F¾ÓiuZ �vke…¦A9e//,�NvUr6¤�Åë¾gù•«�Kò„� œ¼v¦Þg1f-ž%�–"[Y~ºŠŒ«0ýä/-<[z¶òtáÙ²]©K[0“¬.¾Œ"y¥�>/¶Ÿ¶WV¦Þ6Mê)_Ó..1ÑD5DèL½{Kó‘MMi&>­>þòÊÓUÿYxÖ÷}‹8Ó Õ‹ïƒ3çm³ Fk6ì"°v«Ó[the477O6_o8ÃçÅxs:+íå•åŽ3�Ñör‰éù݈ÔÃ]^­`øbþ 5~/Žœiµ±"0¤þ_ö6†ªYƒMÊSØ-m\‰qÔ5ø·Çß~~q¡Ú§qÈûpÃýxg*u#>Ï8­W¯ûà×b"7VøË{‰êEá´ùY] >üе€&¶¾ö5FœôCÄßÚÖñkÏ8ÉÎOR‡‰¹Œ”©êÐõs¢ñÉÏz——;�ÎÓNÇSò‘�d ¨Xë:÷¶WŸ>[yÖ^„}±´0«ƒ…åΠ³ò4<[â¼ïO†Y½oEþíiüS“b•¥/ÿW:ž_±þ½]_É»¾²ºz¶º:XêôÏ:KKç‹gÏž>]~¶,V—VÅ`i©]×õ¥J×—þb×Iø¦/.øOözáÿåþ—z¾ü×¾w»Òóö×z^Â^M_»¶â,,­.–:ÅIåN-ýµNu*½2IyéÕÿx·žæÝÏ–Ÿ†Ë‹Ë«íåÎÒ³§ƒ°=8;_\i/R÷Έc�ÿ÷±oÒ¾«‹ßß�åJ7–+Ýx6ízŸpü`�ZXY|º²¸¸ÔZ\ì¬,/.yb2 •P!q¢Õrþúúzþ3ÎXÒùÇæÞnœh嘳í¼.Xô\n{£ËKp�%Ã(c�r ä#j*ã8Õ¢';B)¥Âé\œFÙM¯?šø Ö{”^Çá•�ÚBs­—Þ\ £øS ñ[Îô�5uI8tÌiO׊³uQéÑöaûèèàȳ>·µ�e+,glÎöŽ{ïv¶ßú°ÇãÖçH\C2 ›»ÛûÕ|`éÁ'âÎÑöqoï—�½·û;/éœložìÌðuŸAXïõÆqïøí‹ãÍ£�ÛUp¦6<Ê·”þkÀöþÆ Ú�}µê0ºˆÔ© m}°Œ‚s°ßÛÚÞÛØßêoÖÑ„v®’éXÇ ¶RïýÎÉ냷'½£�“íÞîÎÞÎÉ×àô®£ì2™d=JHUazçÕþÁ Ÿô¶·ê É=tÒ6« êv°ÿrçáõrãíîIoƒ?Ñ Òÿ•ö Û“jJØá–â £$×C Ñ8†‡¨ˆjoï`k[µR-®Ú¹"‘Ù@Ø{¿ñRU¡}ä`„‘ܺÏËEŽÞîçÕO†"ÕŧÍM딼÷u¥6Km$Æì÷˜¯¤�ši�}ð Ë›‰]ž|äAb?ß?`TÉ"÷Ô&Ö°”*W3p 9jD¨´27i\gò ¨ï¯ËßYîr^̘}´§ÚÀÙÚ9fLŒ†ñîÁ+<Š …üfgw—iWý)p^ìÀU}Ëê[V�Œ_ LÕþ„W1¬X  Tò$óp¼B\p5ª´LÈâBçIG,=Î<0 cä“ryÜÚ£ar£ìÔ9œøÂ¦Ã…ƒ.Ž9‡£-œ†”›F?ûÇò“Ž'UGT-iòÁûÌg ­ÎÊ*mŠó}>¯C`?Æ@j£HÝAÕ]œ})8Òøýðõ¡u æzÎ.ÂjXFD ú?,-„B?Þ42¼ŒE?¹ˆ£?hÈ«/«ƒµâ¹}±ýWÄÑ{Ä¿½�­­£b{³2¾åÃdÒêìãQ½Á&�èà™h]$ɉhêé&Äטõs•Ëp’þ'žG4Ù\faü /ðHÌ •—¹Bò/‹áðI9„<ܶf ·—oww¿¼ ììïìmP‚z൥Žg€ˆY3"Vƒð&pèÏ×BÐÐÄ/[K$qvIK þ0àcø`–zd¤ÀÙØÝ=x/•b‚½µ½ÿ W?°&í½û&m,"4ಢ–ÿ"­$[á^Ó°t~¡Y_Õ–ë‘Q¼ÏK‡ŸE�¾Š)ÎRtTX!­^Kå$�×ö§KÏô…ê~r{/2q’EçÊ3x:÷�¨Í¨\ƒ¨\¾Ž’`þ_̓'nóÔ¿›ëò£»þpÞ{‰œ¹õƒÇôò;[÷O;sϺ”t×v×éõC ÅQú0�÷fót¡Û÷"ÖKÊì)`ë·ŸŸR?ný–D1ñyÃqÕ Ž.ìÑÜÁEUô+é'øM1¯\,Àwa ¯SM¬ Õé+Ë£¹>§5I—óoÙJ—‘†Qd-Æ;kè€nmf’‘nSUÌ‘OMZí³úrüžÌš�ŠŸõ6ŸàƒBŒ›Û³ïiœ»-ìX¬Úöo‹¨Óz<€½zÍ´…)ã#ýØtsrÉ 7ïƒBDå$u”À;)å›Ò­¨Ÿiì Øç¼“‘4½ÐnyEÉß$nß­,ë—¼,óŽ�„rP]nø ÐÜß G%·±‘žWä<ÝÝUâGå 'Òì›Óá÷ŽÚ¶wâÄ k|úFr.}ËÏ”`½7;Šð€EåkíŸstœ¬S"x7H¬ Äцi½H?g’—ÁÇ'G'Û„É7@ Š›oé›ïý©ªy›/wöwŽ_ÿ¹FÿJÝ¿‘ößDñB§ÿ—¥z|¾ýïe6Í[5hL½_il*豩\}BÙ 3$¿bó)Ãubð/R‹Ûû¯7h”nõ¾ .èÏǸ^lë{ï_3¿O½�·'=Ö™‡&Í*2쬿°4õvö7w¶¶÷Oz»¯^ñÀ×^g—½xr¥&¯vÛA‡ÉEoH[èÊN¢ì(ÆÔ´H/{ærͤxÿÄ×öî™4ë&Åq8Šf±�”âWÏ“`bå¼¢!µ�œªÐ.T�މ˩ˆ!ß;ÏFlR�aÍRþµÉYbÓcÝ%èo\}¦’¶ÑšüÐ(ÔÃs¼$éy¬;9"ÖGú#—;­Å§e:HwÚl=1F®³´²¾ôvöO¶÷�wN~ño¡··äA[ï;— ot9êEWPËnªMoÒ,övw[N3§'|cŽhœ`¾§!¥^qYîCõc2¦9Üû†Eø™µomœl¼Ø8–�ç XûþÅíx{ Z;PâÙØe(ÅÕoûÅñë�íÝ-+Õû'×ðÚ�|¡ Œv®Èßw4 i8Ð!³ Kƒ�Ú<Ø?9:ØínìoïÒH®¨€ä÷…i �­£VöIÅ"rг/²ÛƒããíMÿV‰I:œ4gñÜ…¤úÂÇæLO�2r'{R%�_2‡¼:Ú]E\�÷†çƒâI†:ÜØ³èì‰/4Î$Šõ“¬Øc�FS!…*¿Ù>¢ÎonàËŠÁ9Óeï`«'ñ�z),d¨s=ÖW“dÐ�[ +oxý«´§ýêæ$‚;u`©›:Þ;9”kDñëóL thIX Å@ŠŠÒáß©3Aò$Og*d\ ã"Ï`Ù’ÑÒç/·úrçhûýÆ.}_ž°YW NIy<$RÃÃ;Ù<$J÷v?/ù§]~…æš~»UÈÆ«��×^)Õ^)Ö^)ÕÆ;Ñû—žÒ³+PEéx^Є3úŽS�iΜŒ¡Ò;N.¢Ü·*Õ�! ¾£õ‘M¾‡ ‰G¾Z�J­å;7b ¥¼c?$¬=cþªIˆwG?ÍØ©#8Xåì�”þsà¨Þý¤ôx~žˆögá0¥:üWzþçÑ(|â¯t�pÎ)ò/o�eìD¿PO¬R ýp<ý¤Ì h%ÊkßócÚùÑÙü"�±ܬ‰°Ö�Á%ÉA[{ ˆ÷xËTïrM{#à¿*\©tt*´¯nW10üçª+ù‰“lüÜ˲¡Úu&�Î|)÷§�*‡ ©<üŸN9Òiø½'áÕL‡Œá``{ˆ�Eá´©Öiµ(«ÛVÊ*'3•ÒÊÕL¥<Ïtòô³u�]­ˆ“µj3ìv«Š”¾¹«mCåÖ¸¬Tg¯Ä,Êâ€;ê³YUV{�ëXÔ`] &­ó9J£³!›¿©¼ô,´ò_A¬Ê V§‡Á©ô §¼>¨8ÿÓ[úPÐà°ÀC­PDlž:<ÖyÂ�ÄûIR¾Ÿ„�èÅ×ÿ3]ùnp’8`1þMŠ¥\ãöˆßÉkÆ�ó?yá#²ÊbhÞ\ bƒ^a.À�œœØ'½¿W¿=®vy´L'ÿxÅM¬ã¡y±Dç+m f¤PË<@ V«^jŠ0‡°9—:hH·¢÷¹“鈴o�[›ŽÒy‡ï€¶D�ä½¥ºJ:"¦„õtŒè¿Å€Ñgr‹LFÔyÌË{]ª¦úmT£¤ëÂùM@õÚ7fñ›.Gìá4ÄÎtÃy4wãœFB :àuŠŽŠ óKžÍ2Ì®Ÿ;’Ø8,8*†™÷Ï€^È—?7_£™"ˆ¬@,*þS5j:¬]YñZäå QΦyq] ×G^^-,¯)ˆö_%u”Ï Þ./ÍffÅç_®¬K+Ù!\ø¶V›òzuµðk1…:6ÞåÄVd'f蕤 b©Ñ(ÈÖIò,7YBöS–õ§Jñækæn‹ö fp“=å“ÌB-³" ÚWë$nUŠsÎiW‰ÐÅZ¢ƒ cQL‡3!©o‘ £°á×q­Ö£2˜v@3îýÿ‹i“r�·•!{]á1o¢¼ãr×C{RjD$ );"ý@&õzä¡ SHhÉïôæ�ÚCé‹s8ñ‹æˆ%.ÉéÈá™÷§±H…øMºb¾Œ˜å¡­jA×m¦¡î_“œ¶ña«R¯Ö› mÓÂ<`b|DðÊ?æ_¥ÒWm„AU"7vJ¼Ô?/¥ê—\¿´„WÑþÁ»“”uG%;Žao`[JqPbIbKÒÓœ·™0‚±äù,)lnK"<Ĥþ÷1û¸Hb,ÿƒ[Xø—¶Pö­XÇ:¾&Ùõ�£-ø†LÝž›+ûÿ,%ÜÏUOwò¼¢¿Nìøñ"ë+ZD�sÛ$Pl=l–Š6:C[£6÷ •ÏÝ�æ Žù +ÄX�nXÀ^Ò¼ÙAóæ`êtt²)dsp [ò:BÚº°` M+:$¸ýËȪêk¶xg£7ÂàNïß°Ñ:¶ �Ç+”½ËRÙÌÏã`…X þÂ"¾*TÈ?g~ùݘôÊs&¿ûcÓÒKíx4Ø11ݾÛ6isÀòëF²*„�ÂÛ •}˜ì˜¡¸~5ÎwVƒC‹¶á†ý‘g‡“+c) ž[»^:·4adnÙØÙÇ]ë€ h7Xÿ˜Í…ºƒ‡¨>=}ŸêÂûÀxÑE¸2÷â‹0¸Qhp•,çd›°C |o¡qMp1š0d<· Ç]q*j®ƒDãÚrÕ¸4©‡-D_èƒòœè›;|z“¡íÂþ¡Í¸�õÖ{`Ÿr7ßýÙ¸Ÿ7“öûvutL‘äR}8î¢ý¯vœHpïö¤>··ÿöý›�½ûû¹ÂÒêvÃHiD•;I[qÊF¿c.&ÿx’|+5oä,ËŽn?ÂBâ \ñCgÜR f l� 4Oñ“ßškù%e•]ã$]̘{ºqÇ8/¾j°/ê‹~cÀæ˜Ãƒ¹ ùÑm¾ÛÝ·Ã½è†øwØnÎýÇ(hÿç¢é&f“…¥: }ïÖ´cfWÏ1DÝ—üùy²•GZÆ Îñtù–v,¾sUbÓÔ @‡ÏóÈEô†{Îå§ÍÃe�Otf‚^üþ‘ºÁ.[ô²Õ'Gº:¤‹¿°'…PÓà�·zÒüd`€ ˆD´üÛ}fÛAQé="eŠÎûK#™?çug|~¹B‘<“@>´…ßÛþÀ:†ãžÏážØg@S.—Ð6tODšon¡iÍE^ÇÃ�… ŠÈTÔ¸ð£þlFý‘LÖª W¼0‚3�dŸplÜ!ÐëXÝ`ô–]{¨³é„VžZº\Æeòjðué?!§f^°éP°8Çð絇*0Ç©k9†_>°C¬Bƒ»âóV0¥¸wŒÀâ!TLüc0<Ýv8Â6D½vÜ·‰%o“�Aí-{ÖØ—4Ì ©o @¸ü’Œ!ÞæÃÖxùÇõ²e«ƒ†?‡èvt‹@ ¸¶æ‹–+€E‹„? ÛsמH?-† $Ÿ‘Ûv�|Õ³jJj�é3?œ�9á´í”Åþ–N¡Z~â‘æYº© HPèxÎlSÈ<#@Æ 6‘pÎo#‡ø'õHó$CYòÂÁ+S/Ï6 ãŽ/}‰¾’0°›4U‰Ü!Hm'‡‰àµÌáR€¤ŸÀ"¹½ñ÷ýD©Ð©Ew¡ýIcåä€Þv×úbå“ñá¸a9Òƒ íÁ2x–_ôÍ: ==#‚ÚQ¾‡WÀÒ¶Só‘hr Cµ6€Tº†ÆÔ2�!Ö1\:cƒ_Ö¶Ñ{654gÕX™ÐDÛ×Àj�!‡¥gèÙ·âPÖøy¤TVCÂ)ÔÆvnP¼Y‹Ý$ÁÕ) ž·˜y)ÖËÇ:m#­�å ‡$�ïê)"Õ²°Š é}\`£x~õƒ˜aMW®�Ýf¨ .8‰¬&�.3û¦ÙÕg¢Å`ÈhäA£&%Á+[7Yäߌ¼)E0è—NG´«;ž¾O �4±ñ [ çcÑ.�]®ž£½^vý©�§l�èsì5ôE[±“a£'¯Žz^¥–)O‡:‘-tÉ**7ª¹¿÷c×Û¸À�Z½,6í9Ž¥áw)l;�,æçýÌé,â¶_V2ëû¥³“Qˆ€ã ”–<G™‘rhúºð`¤öõÒtèlß ZwL>¤Äñc�Še9-ÑLºu~j‹ÏŠkR})øÜøä†'#žTkcŸ ;ÚbÌé]I¯%£h ‰MãÁSáx_Ãì°�¨;–Œ ÐÇB=étýúyúI5¹�µžÔ,Zæ±­²á}1�§´]°ã+– ü|p�¨RvoÀϽÉYNy ¨]ءȲ¤0˹3Ç9ÑrÞ’…)£ñ¯ó'0­ºp¾ÿ3�’îa„£WøÓ;%>@*„b ®nÔƒƒì\¹£«‰AÄå(N(J$÷e‹¯ÒLÝlÔ×ZÔ×3,*ò|¡sc{Ÿì¤å�¬›þå!Ë™†Ò×?íü×6l+±·0YÖ»òWå�·0ÿÝÞAÙÀU‚ŸgHz8C¾2L¾‡ßù J… Qîd¥JÏNªÀoVeÇ€æ.Rõv”z;vA_¯• ¯“ ]é/²i“˜aƒe¥9´­Ýrs¹UeBŠw˜(׌Á‚Jž{§˜Ö¤\i)@ÊÓÝòJ}¥¥—OÌÅWwÎØtk+¾ŽO–52�Eœ³�^må8 0¨ÿ 1wð6Ût€D–e—S¹¨ë—8O»ÅÎL˜\ÉéÝyçŸïƒ‘ç@» ´¸Ý/±%*úæ*On�÷LSC+eL/“ÿpü´Å Büž¥‡�÷\ÃuÌ�àê*ðYóFæ2Qcud'Ž®7®?nƉ{‰µV­%õÀ¶îÆÆ6þ›|ü›Í.ãûØéZô/yØÒ/.u×Dzú>¯Ž¢¬m¬¢ßÑTŒ¡IìJbã5ŠççOc.??¡»·tsázNÉ%ĈÖ'è… }­ŽÇIG¿óŽdÈåùy³’Ág™I¡¯cß.Žt†ÎãÐ=?wÐ@E�Á’°úäSœ[Ù'/3ø}ƒ§ž©±61ÅÛúèÐ�ÿÕ6ÞÚÆ÷v²Â?áöàz½±ÍAЧ޸}ñš0uúÝ6�L0¯Qô�A{@ë߸s€I”/ÑC€lµÞb–{ß Ëj}t2FõŒ1½ê¥s;dno¬ö±FŽìÐ m/,§¬™Å¼±‘”rÑ–ÑG*/à×Üùy‰Çw7¾02Η”µìP4}~¾ü*.»Fþ•Qp¾šÈ¡³_Éxà“ï“Or0WÅÅÖï€z¥ˆsmŸ¥f Œs/8µ=ÌYXž�½åv”Ù¶ÀŽÑ—;Ö»pl"ïÆcCÛwx„°gÏχ&Å7*/òÐ\ÄÛ*N° †‰ÍôÐgM˜ß”ÓHÇ¢þÉb~¾IŽ\À HšÌO¾Ã]0z˜§Þ³'eº@i°åšìöà(IÚ*V=BÆ0) ¨ÜŽ�k7ŒG¶ÇIGÎh�OcÀŽÆá£9"f½;£XíšùÚ�¢BpŠ^s0js8²¾+{0tu«¹¶‹è•ÜX #Ø0;ŽÇ`ï>Ä­áæˆYwÈéç¸ãì† “¦5aDP £–R–�  ´€\‡íƒ>}UA·.vë#è)Ô›îS"KÜï—vT´ `��Ï 1 )�ŸŒE¦ÃEDHJøÄɲxˆ”±R)dá X6;q§â²£AĦhÊï£>,l:ñä.… Š)’RwM¤>,@³ ­ãS.+Ý–ÓoÃ}ÊÓ'ù#˜þ¼ûB¬XpR§÷wÄ…ûcrMÀ”{kLÎ�›R‘¹BÔv Ìm .;"GõåÆetD³4ìøç3v«m:§£sªðĉ°öw•šLO&’“õ�²�AØ&2Ol�MŸÃZ"¼ö™?<£4Îb'\÷¼Cøn˜+ÀeC‘´vÄ+ó8¦±uõ¾Ow:˜Ÿ(RB÷’¡3(�:}{„{—nì¨d{Ä]‘ ÜöP“[zuÇÚŸè´å©ö�œ¢ÜÄa  ô�‹VeÂõáÀßÑv”•'D$!×,°ï9K‡ÓžÜfˆŒøR…Õ†@o††ì!.R%Ô3¯˜°€Õ¢º¬eÞj…�Á”®ðãߌ‹AŸ$(úËw0ˡΎ"÷Ü/gz¡è›|ýqd‚ÞgmaÀ &ìqñ&Š;nZµj5A+Ã0­\"‡gûÌ{ÎO1Iw§€¬óÁ¥Ž®NÛ‹]„ÙˆeaÔ¶­A8¶|4öyÇRœ±æìo­jšë‚»1–hþ¢x@3ÎØð¬ sÎÄbA9„êíp�;‚xE>y ãá �a� l}0H†¡r".._RZö0Pr‚ÖUü�D�ñŽ ®Ô>ÖÎàÂö4»)‰»¤Áâÿ®P ^ÄÝ${!á;ª“tw¥RãÉåÕa?ÛÎwV³Z¤õm«ZUåTÀ† ÄŠ²ÕQȉ+™{ù.�Ý”¤X¿”ËÇ¿´;ÿè.èmJöŽéÞÁ‚otx>þ…~•?áO^ö�²ù %‘dàg›?^êRp^DÄ+ôS�PzE7»˜~µºd ô¯�Œ²9vØG—‰ ›ûKxÄ€PÝÁp{ZÚÈgªÒArîz½Ã­½£ƒŸz›[¯ß¿A•C¶Ä¸…üâÈ5; ]éyø�²š·Œ¥¹gä œä€3ÎI/“õ—ÒBt üÛëÑ}¬Ol-îÄm’so¤„¢¹˜ÎXìB†,WÕ^¾ðgfóRóm+”™«°Œ$;ÇÀXYõyX©Œõ7­ÜÙ¾_þ€¦ÿ“hwßpÚ½äw€­qã ¸ÖûÁÐA� ÿ¨Œ `Pê#’çx?£‚¥)¢½’ã( t£+À¿!éÇ·cŸlÎ’jH {‡6å"á¿J¨ DüÆ�>ù8ÝÈ"ß$ww\¢�2¥KQzFóÉ4I¸ˆ¾È¸ õWŠHåµ(€ýÁš�$ÙÐ5ï ±kÒþ&�0Ê ŸxXî0¢xNóóÅ� DmÍPÚdǯž¼>Ìç÷¯‘zÓØ ¥ÿrB¸q �èOé�ˆÝ„\ DÙÞhvø å�ð‡¿@ÌjL¹S4C\ùÄÇøkq"*"¥t'-’üÑšª ¥C�× \¦/+ßÂ÷ µé˜”`€%»D<ú¯îÂ1QÞâ|:³Ä�”n\Ï+!qŽ_–xF=óÅŸCظ,�i£nÂ:¶»ºrëf’Âî±<´s;'õ¢c¢TøÞ;Ö:†[¼»tnqu�œ3²+ƒÂ† +Ù™Ææ÷G»o…˜MÑY¯1·`'‰ÛW19kÎÂû6]¯GFÉ›“T›eÑÈJ#˜\ç\ _étb…µ‚¯3žðz#9o‡ð�cR©“˪lܵ´oG>¥�ûNs‘—›yI5a‚QNF®ùêÎç»Ä '<”u§A­¾˜ …kÖпè* l…’šï=c’©A¡¯šœ~pÏ::£º(’L�à‚A4É~ÿD¦æèʛư¿ …éì÷Ç'àÕ¬bÊO Ü1ð›�E#‘ú0ÿþ~Î…ÿÒ-e¼ŠJµí¤©?¶#Ê©‚S5ÇÆÀº#­öi0\×ÏŠèrÃ\ƒ=P.Zº"·”äùÇ–Àx:t”`K.,N#Kqñpá^f>_xŸ‚è¸!÷FÊî%·—Ý%ƒSŠ1Q˜U¤#‡›…ÔètW%µ¹¤T§#H¬Œ~—^3.¤US¾äk&80e5ÇÆ¯LïŒÔ½ôФôt–vTÊs� ËK§Ž@’*q=\PéËPŠF�ÇŒ:ù dÕJÀÇFKI?œ¶šŸÿÁþ0`c²6FVÎŒ)žöò"LëE`¿/}aÕ!™úŠ(Öl V†¬ßý=\QËìJ�äÆ@A^‘ ñª²á§à3ÚEÚâCß²•Ó+ìÛ×î9MB�m¤ûôQ÷I!YÅZ2`ÆmF©.Àý<àR¡–×–™_¥»g­šÚBY£ ‰¶`ûxüßNªÀ�z–ÿ²Äâgšæ’—ÅvŒ7‘¸b1#Ú¯ë�Ä5 ü ™àkä�a¢ì%?St·3ÓEy=?�p~¼Ñ•Ü;“Ά솬ŠÎá ~E-ÁÜÜ5\$×áu€Ò¯)yø�½Ã£ƒ÷»ð°µIæ5äÿ}“�Å%Îâ†Ïbä3‹¾AèüÊüFŒ åE¹+p^ùšt×ÍÝ„÷÷7ÓÇŸÿtÚdä62R¸×ìÎ!³%Gz(£w'Ѥ±c™ë;„úÀ’1}iô¥˜ÉåQ¦5�¨=ú�~YÚ{?túÁ5 ÿË›5‹±N4 Y,‡Û “àG�à9IUìgúAxE”ú¦3Œ/2v_9&0ÓÌ|´bŽ&¦(¡ViFæá%Wa. TrלƒÎºÝCÑ«Í8/ñÍRð,c �µ�i£B½;6HJ¤Gy}«¨:Û=e‡ñ«Ü ˆh²¶Û�%çs a­­m±ƒÅöûÕŽwn”¯I7˜:ÕÞ$f@„ƒDú¦$Wx }^Ø(ö'ýdßwR*²‰ëë]Õ~ÿu¸c¥Ãû{þÄ%ˆY³ÎùùÍP˜p'Åa2�T•65ÇŽäX>ÇT”€‰=•R˜j1e‚È­Ís‘ã.—ˆl†Öâ®ë»g.0}àp~€þñi°°¶è&ØêP•8'2Moù£sŠLüÕ©w+ô›pQ+¥æ–Xx¸ Tˆ/¬“lÄ»´ o7C&Ø�Ÿ§q)BùzÏÏg´xr#æçëV”CYGhµµÂ!iÒŽ=Ün~p¼IJÉ<@`¹¨¢ì�ø¤“ynÓܾ|&5ŒXªí|KE$édôG¡zGiDŒ&ž|TWqb—Ï„�#^ˆ ¢�õîïd»µÍw»ÉJé †% \£ÓB†šºmñ¹¦�±±ЮÉå£åb‡ÚcjƒLÓ†Â+v‚!³QX$‹Æ'íxͶöå²7~‹Ë(”/¡8”€Ì#cû<"²™ýLOĤºílŽOàb²qî?¢Ý�žZ’‡lMyÊ•³-y÷$ʵ�»èÖ�/œØí·Im�eݽäžbC?aqÁQpÑ÷rW÷ î¹»1g„ã�iÝÓ ¦µ’ë€aôØH`[`\ ?»cR�®RÀ–�1kR4;WCŒ´Ýcç.2ÇÈ¿dÝÃKÙ8¡�FÍ! m{'N‰c m ‰¼©¶–²Eà“µ9À9_KpyHdŸŠÕ¬&/T—�i9Ö|ÌRXß¹dÇš²~•Õ�$(ùA ¿îj´!ÂÓ’bœ[t4ˆ•T!– –ÖœïªkN¥¢˜/qùf=0Î(iLç•´�À©CÎ O¸mÞ•8eM&ª£ñŒõ¥P¹Þ%dhGÈ;í„ø‹Ò'æ¤F$Pd%˜ô«;w\B�ˆ@BPùÕ�ÄTãO''ب+¸\¶úê.ëo"pF¢QØd×»3tSRpoŽ|Î ‰M(jH`ÀeÊj‚ÃÂc=7ƒ¾R'¬ß 3ÄÝEŒäC}6Ðí"uçP…PD€OP-¼!1�¸,´ Ì(áŽVŸÑ%GxHßRÓVuœè bÁ¬ DD]ÕÔƒTFð)UÄ+@¤‰_ÝuÇ ïDYÞОVà wlí‡L‹.X÷ûûÓ0cÅ|‡<·)clXhpöÌãìYÅiQŽ·K0œ£ .å7wv 8á(�ÕQhÙpVéªçY¡JV†)’Þ÷-�Ó]òµY®1°|cˆ.$ìêäg¯Ú‰ÛŠ-›B› ãÄÏ1%£ÈšÅjh�§¯!'Ô—˜ºÏìO�‰õƒvDyÍB†’ËoŸbvÏð}”ûVj£7g\>B¥Hÿþ>ÚF—œ*á²4<}-b\ºÃqË‘q„î9Æ™“wd»oH­dûŽÃ1ÆJ`¢ p³:F ó[X–¥$¶(‚ÿÙ´€çMCëå @k)G³Ûy' $zBÇŽ`DÄ!Jú”Q4pbÛõè=‡Jm“½I>bÏüÛ?b%lË&Òi2KWÄ·q~íd/ð+ÌÉ8‡üDGŽ}Žq‚iÒÛN*,QJªÙE@<D;�…¨‚*L†”øŠµÎÕad‚Äði‰#T–¥ò‚©Éþ(ñÇyŒ�æWE€)T0Ci7 ˆ¬¥¬Ýç$›UoáÂRžâÛ .C¹d–žŸ‡Ù£š¹55˜(AÏênò�$Ø*ÿîxbõJMºŒxDJgëkPaØQv¤,‡ÿ²ncñ%d¹V~ÃÖ&0Цèùn Sïúª¹Ô…Ñáè�έ$¿ü…š8m6Éûd>ÊÔ6°¼îqÐëy÷kX&Ùç!>4€ƒ :\E¯½ Ð#B‡¯¾•  Œco÷>À…I™EšÏs§¡3ÿ)-J�n³uæ°‹ƒ›0²ˆ�L‡»IVdœ°æŽ_ÝÙãî‰1ÈŽñF¤ì�÷ÉjþÊE#NbŽb)¿á°S{Ž>pn_3äyZDýˆY®ÈgìQ[??�stm „Aæ8Lþd{Oîuï< FCÖ¢,CY³rªÞ*ŒÐ³�•}O$1¢`ö‘IJ�Æ7˜æK£°ï ÈA™f¾E¦Ð@C¢™Z»jið­ë_:–°C32†Ÿ˜ŽÐPbϦešk€e6B80 z2(Òå¬`:rX-˜yŒ��ŸB–�†÷M Ðäs\Ð5ÃWHe“º‰Ì9EÞŠHàp?ED§ü'êéîïSMd:†.hÆû|l)í½FI`ב_Ä«]wòg›ZÐ3w–$ëq€¼ì„úÀ`£ï´÷Ðt…ÚÖpk ;ÝÅ�ƒzL�`_Ý`¼&«X6ž«§×øuÜ@ˇ°®t;«¾”ª)óì”}·|çžûAèlŽ˜1-—¸eÝøÁ.—Ózt²¼»PÙ‰ú§)­`ŒÜ¶jD“'Çœ §trš°bÒ{‚¢q¨ ^£äø×nø¤y(¹ùE£!�q¦FXæ}h/þrH&aLlõÉì¼Z4ù·}mGJy»”©UBw8Œ¥*Õ?p"÷w‡0†Î½ –Ðc+pB¥˜ž orNR3’a Ì"Þ’¬é"å·KçApíØçP/‘…Š9Ù~‰óûeo$›bÄüË6ßþK׌õmÿÓ¿”fq‰Tƒ7ÙOI‹Ïömí_†v}]¦ „0+ º½É5´¥Ï,•wüÒ¿Š*—kpcüË(~ù/lJΩÁÜaŒèKä^èRbÅRo}Àix¶ça*N6i°X�&9½Ø ïÒ.Rµ¸R;ƒö§Á‚QÚ%½;Å®‰Ü« …Õ¥}”÷°€%PóÕb×ø˜àTq’v|Œ;=ئ�”„+l•aÝ¢4ÔüðrˆYÕr·ŸÃD�Ÿ“@ûO›‰heÊø¡jà3 (™ÏÜlªOGj>òÚ{$TLJ6õèY%èM#XT_` •pƒ?‡âa&)ìß„»C9 LÞ[Õ¬£ Ç]f ‡%Ž]‹¿³ªkq¢¼Q¬?àˆkx{Œ¢ïðäø¦�çÂ;5¸A7ýVš‰È’û{2ìÍù¶éGÖ ‡o0¸!ì¿q¶q ørË'“,õ °X^X%ä`ñ‹_óѱ/wí¡ñŸ4G³ÍWç(i»UžæCh‰ ŠíŒp.¦½™ò>å@¤\–1Y:a–âB´Ä!y®®& ¯VwÕa!…vªãTÄ©=�¦à7 iˆÌÊ�l¢,EXšMßt£¡“%:9q£\8üŠQKêR*6°•7 ? Ó25FÏâtl ,�Ó 3/0MUúŒ¹­RúZÌ ô0N•`J1\ßc~¤ð×Ñ‹èôhDP4—ßü<ÎIã¯çªŠ.ŠoSm "¶á�§1¦Ep¬�síÂ!önž‡�©ñƒ“Ý[qJDÍÎÓ•_úL%{É<Ó³ÛZ�º­B<—(}“÷i�Wª˜Ñ±Aœ"÷ØéR$Dµ4–XZ ”×i—¨˜ýÄBÒMQýÂ"1MÖHâØÉMJÒ¤–ÃAïös'ÂÙ� â•çG-OÂCÌÀ1Õ¹¦ˆ‰}z|O�O£ÊèóIQ\.J4>˹*Õ’K.Ú½ùÄÏg»¬·¹c±pTãÐyÌX‘n‰#pÌÈÄ,K‡›?0–û„Z7ii1ØEɽ)�Ž�‘G P﨩4GÃF¿‹µG®ŒI„!Ä÷hSıÐ÷‘H˜P¦Ð‹È<`KÀ\+¦]�—Ž! ¤;d žÆíŒÄŽÛ�²¢ÎI›ÞÂÏ1¾àC #™EŒ2M&ÕcTÀS=;¾èœ,ŠŸôÉxѺ‹'J8 O$hùþ>cw {¡A�ùQ†±3/:þµãÁ A£ø¶£~«"À;nå"RójËš0b8:dòƒsK®â‰k‚¥¼Ò�X}Ë’X'Òi~ñæé¾†�zðö�\–IpBÁF•Ø„d$�BÏZü¥Üi—?Ý ¿5y[ó'øË~tôÎÿéåãO7f¥+Š ºÞ�ºæ‚¾¨Äÿðdœ%¦�%çjŸyV»ð'ŠÚ��{Ù¶ ¹ží0q¸ö 9u4p’íÀÀýîÃ^À’Ûßÿc»oS™Í÷üÕ�‹€åŽOÚî�Ùè+çùNvž¡2 e3Èþ“&�ÐEôLSdPÈfÆ€•×…y;Ü»@Ó”)«à¤DÊH��‚H-E¢‚ÐtãôÅ+M‹ˆøÉbNþíø€—à5llF¾Ô�òSLŠ! mã?!þãÁ?]4�ån–\uo"ËãÈb`Ea$.k‹Ì6i Ôn5DrÖ@Z1UjÂŒ jBX¸!%sKt¯‘Œ ·¨¯¡ "²˜�µ¸½½2ƒ3[.{_YíˆíŒg¾²Ã.Ó+·û‚L‰Ó(\ÕQœáŽî¨ÅXéÄOZwÈ�+k¢\Ãt¼Wø�ƒÆ"ÑF²¦Ø˜›‰òˆ–‚½xÇâqéÊ�Á;¤ëhQ©.Ù«E½“ÇkÌcÇ"ƒúÍ"ñbT™LÞ�öì½òUF;$=­U‘š~`4¢ ††CªéíY¿âkÄL¯ù%[?f……Ÿ¢Ø)±ƒS x A!߯M£1sQò~è)< žPxêB}åƒu/C¡׺k‰Ã€Ã½#! LHÒD@™„ßP‰��NâœÑ›ŸO=±€lâ~àÝ¢œ¾3í%xo‡#àù¶èU¨ó:©h=£‰0fäælýûðÝžÉP’{v‹Ô@r³ã'9tåvÜ"æ.8íc˜£«N·í2ébA=Z†6-·œ©Ñ¡áiùä“ÿê.7Âñ'ÿ¤Àƒ^«&éï�ž\!5¼`ÔK²TflE½ÍNÝWâöç^n ³¸>Æ%ŠV¦]„Ê�LVagAÈfÈÆ�è°d°¸lkªkª� ®žîóJöý)=rð¨'{~öÀ½Cn½´!ô v…þŠ“±ót³{¹"ÿ3Öc[Î@­9’™0x°ÁKF!bb2#iJ¼MJŽÈbO.󅇤VÄh¬(Q¦Ò�H)JšH�U‘I¶S‚MæÖ&�:ýÕ ÂþšPh”DHó°gtßãTÛÿ!Kzý‹‘©”SìÑÛï�=ÉRtx °%É šØsa´WÚ8¶3Ç š}4Ù/X‚¡�+ÿjä Ú0tû½ÓQÿ“(„öM/rú£Ð�Éû�ýÒ&õ\ÅGGKÔx2¨ÉΣÁeÚÖ“v<6ŒÑаRJ~¢¾V"Üxy³OèÎG…�”–«ë–H¡;ì�pN\Ë>c€opÉÆBÖô‹hj+ù‰L,Á)+⣴ROX‡ÿäÕÔÈvS¸e‹u[¦´Ë¹Á•DQò±ZÒe¤=jtp¤—ë4Z¨È#Ópí:±�§šü†‹^˜ƒ[X ·ˆQ^¡œ‡ˆ­” NâŠlKÏŽÙͳ‰qÄ�Ù9|'¸a7ý¡Ý<‘ÜM.pÇ{xKPq%Ì’‘ Œ™W±d@ÏÓ(LºÀ{pÿ‡Æ1·�´a×qÙX¾žÏžLvD*˜l¶^‹ÞÒï¢ÑÐA™2Ëw%üx*N/8K�±°ÿÙªÕÞLD„¬¸(!îþ•¸;uœD‰nj<«÷µ—£)(iãó#1„^ þPŸM¥þè*Y«ÊKƒQÜÐÂYÖ»‚KåÑI…/pD…½é°×ðËŠè^ˆ|  UAÚ^PÚ<Ü+ñG£Ä�'‹BÖ °ØL`¡ÄL6˜ÜD¶W–¥Ðm<ò}ǃ½+¾¯å7îãã6w›¢·¿èHL`—¡‚w,9¤=<Ð'/…˜EßãÈÐA_7²-ï¤'Úµ�$­ý„‘Ï5|hBnñ„D…Â݈Ñ2 g¢;?ÿ;ÆqÊ•Á¾Á •' s¼±uSàÈC oH`9e§ós†FüÂYsÛ6•¥™K(áî;r:)T·éF};$W┦Äìð gÐQÓŽ"XÖd‰·£WFDd˜ôlü“ç�vh:üĹ×›D”xq¬Ú2¥ßrÔ†5—bñ&ÔJéXdú#l™©-‘ÜøÌc¡c%¶ÎTHܲøa£˜ô•ÄönÄÄÆ›ÅzãÛŒv$±>@¬)ú‘@ŒRwØöÀ/£j®ï‘£P¨Ôrî#6†”Ó?Çeú$¤æ4f�ÕÓáûrKœ¹Çÿx*ÍlUy— ÊïÊbEx¦Mt-Ho�z¯3+®tuÆ:7' ãÓ‘–µÃa{.E@Ñ kˆT›j0æ2MQ)y}‹xÙÅLQHþÃ,•�ò0�®Ïâñ®E!‹GQD¦<Üß÷yLÓ7ŽD æRÙ£\¬òÇeZ#Æ6HªaŒgÊÙå¯g%7±Âs‘­ûÖXƒæÄTžà-® äWhÉOàsÄËO�’3c'u!›´‚~Ä¢N&á‰RˆÛ»Yî€Ü'¸a qBpcÆãX³…a~D>JáS$˜j ‰çv¦ ¡?”ˆ”uΑ|éVä×”|W³T˜Z:Ý~Ê�˱åQr…å‚.ø¿]3Ô«8ã6É.×ÔÐÅ‚/qz¹]ÒPûÿ¸ßÕ:'¥29„R�`�Ô'z†À>ºV9W„éæ1~lVq¤�â”$õˆ€˜„Vá9/�T*'?‰y­¯9ßUjIJÀߎQƒ-&Xd¹Ï'uËRŠ(aÍ–—„N±-d¡žPQ‡BÓäð›@KòÆèdži“Ëc8#&OY²hjªL¬Ï¨TÖo›:†“ÚÎ|$¯7IŠƇûä¯Ú"<ÉõY*δk¥@n­€ýš LˆÒTòJ8†2Xúu§cê†À�p_ô˜²–ã ¢ÅAšs : Ëi¸I>ŒR§(°ãœ²š$ª!p®šEˆ�*«”Þ1œœ«Q‡Ü¥F¿Ã¤$k§ÀÔ^Ž3Œ�2/5‘ !Eke{~ž›WrËfÃÌÏ— Ä]2Xí¶ÖíèvkÌ…Q'¾Û£C�iiñX6ê,IË7‘æPSݬÖæËY•ˆ>b·e ÅØ.z{Ý)S2=YÕ…á ­‚"ø«f ÷e>,ªGú <¤4Xy\¤]Âﳈ˜Qmž2ôZ}xìUoI$u%†G¶q ÄÕH×·LZ•"RЃQø’�qêhغJvå‚ÚÓµ(ŒJ]”f¿µ#FŽíR�d;ÊßÄoÝøà—ƒ]“•«¦ó(±ºj§âù|öæç)~< ¥Íå_~u&&ëmÁ-9”›´¨Ó»=•‚À»HÊH€n±\É�±Ì¯è¯' �¥¬Þ:a·4� ‹çOdLðéäĈ,éňàöÙøL§AGT ¢.`‡ãi&S¨°'%ê¶_ÏÂ¥ÏÉ O’­â—é\1˜Lümþù®–è/×R†µÇ\|Ô-½qañJleJ!Z¥¹l ©EÍÒ¡R~5ŠÐð¶d—ø|�µKlð"¾A¡cµ¨»T3KoÔàf[¯DãæumbqÆ(Ó�냼ê BRصã ÐÒ ¸*ëßEº ‹žÆ&Ø ™|Lx–ëÆÐ'*÷³W>á 8Ýýd¿—’¬2C)Jx0 aÔ. ö/¯ñ“Å–ËÂCcý„%O�„þÀJën¼ŽPÉ éÊ#;èí…€V(¹È"jc˜pÄ óuâÒ±³;L§f Ú1øªië>_-Y¡ÄÆËt‚]œEÒZ“'•Г0Åpùsc6ÄÊè>=i²\K!ÅËÜ%,];0’Åd¿m+帄í�G|}…\Ðü¼³[ (H?¾¹ñ(3.Ù™¢ èSN6ÙÌ쬖’jC„bæø[Ÿ’�­6N~KDZ7Àu¼M+ÆI¶:%+ZZÒ=€ÔPñ;Rõ‘“ÜkERèTmªÌ²C'Z`vIâm9Á?K,Ä 36A<Âë}"A‹ý�‰�]ݧŸŠ’‘º…ç˜"�ñT)‡b–Êu8V’o‰£Nã`Þ†ÂÇPZ.=ªm úð™›:WnÂO>¸Ït¢ì¨j ˆp7I` ¶t¶Æ¸ª8Ýì¤ûãälŠ•/>�k�Å‘#6e€œ æyˆáÀlG�‚ádjŽ…Ñ;‹5†^˜�ß ¶‡ ÕqSàß®"ÏZ僛uÍ1áMÉ´ÑÃÌ7”ׇ‚g¤Þ1…qòœLUë¤WÚZ¾-‹å~ã!’Õ,h�.ÅFg˜WòAK“OB�5—¨DXé$¬Z�bäC« a„›-»ãí6t‡yMC_PGx†%Ñ¿$\�õ›¥MŠI¡O™ÃT”Xޱ°l‚R{Ÿü Z“XJB/„¦X¥…ÃÉiÓ*âá§¼D*Ù¨w\®¢„nI \Ò·¬ªúäì ®¬KI‘(jI™¬Ã¤\…Ûƒ óƶ&�É‹ÔÓö FÙ5~Ù~Œ6èŽ4î‘@Za"^Ò¶ñ�"]Š02† :Ä$2S\+ÎRIVŸeµñ½@6‹ê<:3:7•×)ÃkE‡›F8¢a"‘”ϹF¼'9Œ$“�ˆqŒ0ÐnZ~ÂEóóž¢öÕõI&ÝqöI¨îµ”!XOt÷÷”£k ”2ŒZÀ�Ý. ”2³ qk±ˆ11@y¥Ú½(þÎä+kÝ(µ²³³u/¹I‹uw ”C¯4ÕCÊD‘^\ ˜qJ™þZLÔÂÃsÿ*ã#˜,\¤0iËLJ\9@6Ðíÿcß-Ò±”æ6ïYè©'U¹nÜ4b#1�È›!Èw,ö £m×½û6:zN¢ÛÁĆÆCDhƱüÙ5.B“›.nþÐ;|÷þ`c ˜9Z"ƒÙ\Ä<êyZ®KaBD€ŒÔCA†ök7rO]8¿·"C;‰q4–E÷Lý>©Í³v3°Ìœe Ñ_¤Ž-H#“à‹˜¬$Ÿ5·wd]KÒ-{µ–é8[ô½`ÔYdOþ`ùŠtdàcø®¬ \‰ƒcI¿ÍF²Ræªè»-ž_Ο0eñ>¯†G.%=É”¹'Zm]Ìgß(óµ“ùºéùÚÎ7«˜ÈÏ˜ßÆf››Ö «·œP;…JSQTÐ?‡|.YU—òö1¡NXÆ{fÂw¦ÄNwâx¶a«˜!‹o0 Ydqðxc¬Ñ Wqûd^†(IÄuX4¸ ~.—AÁë0°};Š7�Á„0Š ûµë@³!oj#¼ÆÁ;Ï(Áº>$âž¶]Ï9 hEð€ ŒÞ³œ@<�îl¾ÆÜ"§h¬@O<ó;{8Rmeµœ[µ«]gàÚ(« �Çheìã†ÃS0°=eòILx<üð†BdÄÅÂ~¤'þ¸€å| ÂKj�ÚiuÔß#G}ä ÷Ñ9= ˜ékò[6$ü¸û`%“M¤70ýîýЃ½�+mÇ+ˆ›®‹W£“´…�<^Ôºï^ÑZl£':KF'•ü‘g=œ˜˜ŽîÖõ¡+ˆ©®Ø”ž–70?ÿ*._„ÀJÉ"ÍxíñD·¢Sµ–(Õ -?(|«›ôizAæç³Kïú%ÌîM¥_$â8"ä=…h6•eEj�O¹ ÕsÏÓ¥ î�‡6¥Šåók•T�ÏUÙ’޽„¿­[Ê=§Ä·äI\D ÖÊÑhä¢^ºDVÑ©!¦äðHÑ¥›…£RC.*_ßRj†ÉÙ´9l|áŒÃíª<œeÙoüc-ðéÄ2P,þ‚í=_ЙƢÐát[7�(œ¢�æcFf‚n{uµ¤2vòÚ8ê*Ä®�ôŠ@^a.¹nÊæ™p”·hA‹.ß´=¨°œºåïR!ºjû]Öò0u}:I¾¤¬e‰b •­´>ùWFx%99‡.2ëîò™Rƒ”ÀEyÆC’*˜ ¡J½\¢º”ç|@ ò„Æ©sâãV¸SÇ‘_ž/Œt)¤[õй ®�I _tÔ‘ÄF,¿(o€¦ü”‰†AYz%HÕab5œên�#Æ]âÍ“„ N6Au@çȲ$,µ´z�:jŸxDÀòE ţIÀ‚• 8ñt„îÊŸ¢oì¸Tþt¸ÐQ¼‘“_ðþÕ¢kì)u;í²¹Ðù„•JŸŽÍ…O]½so~ÓÑK�Oe(„�ETS‚ºèîŒ%À‘ôáß*Óº?®Ø•ß» møš¹ÑßZÔ;Ø”â­úHÃÿ±ñÀx ³O‡ß�Z_4¶ù�˼=¨Ž¿>±&¹ÿ?6>*,ÂûûOjИOÝûã_þ¯û Ô,|2�téñ§›O³´h¥¹Õñ²Áþ#ÁÖY�Ez‰‹÷] ƒ²B,û†—À'ûžµEXþø¸QeÊbޝŽRÊÒ½ð1IÔ¤¥(Ú©o,Àÿ¹ºL½—úœÙzùÇõ.3Á_ÒÚIñ$ùH뀋µ˜÷0þ"7MÃ?nà¯:þjâ¯F—wJr?ëw*׺÷÷0$ö}2NŒšŠßwð_‘ÖÛÁ’¦(�“Ô5Ž[éåØÎ.þ ­6‡“¹ð¥Õôï*µdF¿ñ¯±.›Q ƒ´b)›¿³™Ác6³:þju-MÓÇ,VÁ+„O0qruØÄQèJûáS�…8™µ…%-už]Ýø ^ò\”·k¥FBv9©È>³C·Bò$2Dû“ •nœSµ¢4¦¸¿w;ÇÙoþOÃü°\6 ˜Ù7®s’í’øµOŠzaïºmæl¼ñ¾4£û¯Zy%Á‰Sø¯ž²’èø™©Ñ›¿ñ1c¡xKõÇ“ÇÉ;1<}cKaÏøRxׄá4yY5§Fæ]Ys)𕆹˜LÌæÂ¥¹x]¢ðíÂõHå$ædÜo“±rxíDt•} èâ{vщïÚ7žbÞ°Œ¼‹ÐÈJÜ¥§ÁçÙq ³D.�FéÔvIq¥êß$#ÎÒI’ë¤äw²+ØVâ’|O{Ãjðt!òÝO©}C…± £> ÛÊX£ƒ~è”ibŸEHż��wí”ʼná¼Ú+¸!áúI O\ >‘8SÌ’ò›¨Tër/ƒ&pxgÒþáttv†ñp1Ü4%s†5ŸkŠt .Xi¨Ta&|b�.Ã?’Бô4(0E9¢ªÙe™"4§„»Û„¶ë· HnjGjinn$Îʸ R©OÆþ2{¨2;<ŒmŒ*CÍçÆ¨mˆS ÂÀ—v¤T¿R îï™õ�hÇÖ ê>w‰WóÃýQ!·BÜÀôª± òì#Ý�â4ÓnT;:Š�0$Ì�µÏF UÐĤB;i˜•„½†iÂ;2רzÆøÒ6ãнÂh; Éò¢CWxÃ0ì”vÊh¡uT:ŠƒáY5§ñM™Y…zg©Úùµšu³-­A7§a–7­>l¥–Éml¢²Ðžb8 Ä–»à1·úR€qñ™ÒÚ–ÂŽ(H%aÊ/§ŸÌä„)1`:,ïÍ%A–8A_bHj‰>åß%Ü}çÂ8Ͷ[‰Çå6¾Ý¬¯Z,H¶¼—)É¥Þ eâ“´C÷w8­KM�Y⺉¥/Zæ+‡\ƒÓn¯£¸“XAyyÖ9Y,dâ«A�êòZmÊþ8îbQ˜Çý=†öúþß–XÛ}ô¨ßµb£„VÖJ¥ƒ³3�±´}¶0?f¦J nÓÚHfR-}‘Q¦ 8ѰѾvýqÅé³þè1û�ÂñÄÆ9ÙÉx@óJ@t°ãòeÐAÃÒ¸•aIt39ÅÌ\>~[¯Vq¹’’ï¬Fµ H0e€Çƒ�°Êa„Â>"ï'¥‘1×»ÆÂ@I@(.3NWl\—ûN|„—=ž0�8cÌI&iç:nä~xéR ;iŸ²Œã7ƒèx:àBï¿�œ‘ÓÃìªg^p#mâ¹i”¤üj£–Ih�â\ÈCñÑKÄJ#9 †”Í%,†œÉËD#I³?³¸-@EñÔº0uâÄqýØ‘,:c�‰P!Í«,Ûp$\2˜a• žt�%7DÂ�ý.øÛ¶Æ %4‰ý™<àÒq†6˜oûßZ€3æçÝok-f¡Kƒæ:ˆq:LÓ÷ɜТUîôXrÑ2‰2æ½k_¡ƒš#-•ôS¨ŒBÏX÷+8¿J%ua ˆ”#¿+¾‘’¡Þ¤¬ýXað^AÛÛÊ[VI7R÷Uö›z·Nïô´ð¥`Ör¸CLŠèáCšüú–uã?øÏŽÿlá¯müç{üçGüç'øGÈcç‹`�â€Û6‘"΂$kþ�éž %BÐÙ8_¥Šïx�ÕM¤ý�™$3×ÎvÎX2 [o·Ö·z½N¾¨�(Âyé´ÓE¦;è ­`ÊLe�Ñ�«BîXnLl~^†W(xKNÌ�²ë1ø6#@?\±%Ø« ¤Ù•èZ [«f»`tà¤+§£±¿@ð$¶\4Ž|4 Q~¾˜šc„µi3/BfÃùùcÞ“Â, vüž)ˆD Œty!·©ue8pWõß$ReqñDGß åêòoÔðÒsR`ã´ÒyBÈ·$räOÁ¨ÔçÉ.F¾©…Ò?`nQ�n—d1Rƒ±[íE k/.Ûñ¨„¦, uh´˜hCO�(® 1À0ðFÑbnY¢E A¹†Zòr¢Ã«eñÙ u$Ef»4_;˜r!GdOJ‚ቨÖÎ7`¢en¹\5.18ÐM:E:Fìèr‹+õ¥-ûÜÂàTL' [<:ÅÝ<¥ ¥`˜¦�+ê ë„Ä Ûgu>�ªõå֙ݷ Ô}0³2 %$Ìòß a¨åkì‰ý˶eÇÇ zµ[¾‹ƒKÕ©ÐGŒæ±NÒç8ñGþ¢ÌCÚMÛ%·_j)œ3ihûƒ‰=ØÃ!™ïYÜÒ 0×+pY£7¬€=&öÈ>¼†‹Ë²�t'©½,Zs€¬ß�Œ±å&_8ý®oï4–ª½ï·Ö7ßn«É¯möÅ8ÛiýsëààÝ~ûïŽvöÞp÷Oæ@í&õy´€§+×§)±b5â½Z}–RpýNje9nYï£êþ¾<ù%J“é-³¦ë‰Â]¡ ¶Þ.ÃMAæcšÀ]K�¥ÕA½Ñ_uVO›+vÝ>kœµ–úõÓÁRcµ_oþŸ{ãØ­ï£�çú£Ï°KW‹µ-!ÇWÌZìk雸nº‡³3ׯzW¹®ƒ¾‘�ÜÔ®e29Å}Ê«ÅrŠÙ‘çË…¥kp²Ke|AÙÂÎÜ-¹\oð/ž�k¶ï¢  íl默’„A �‡ª¬N&îäôPŠZ´®¡ñ�l#r�U÷;dúG<ýqÕhUëðÿÕn"íó9g)ÉPŠ}OÉv¤ky‡û–wÌãj·c&‰6:<Ó‰bfÊÉ1kîŽÄ©Š$ü$‹ã~޷㋨œ£Ähè̳kR~@=eSuŠÎWÖ�5ŒG|„hÙB5eÕ€ä Þâ•¿ÀIÙ*òmÇ]K;>ØÚ\ß8ÚÚì2�»ÂRXΙ†G5Ÿ26l ?°Äe‹Þk„Ñ~8º:EY‘öù‚§ì,U‹c¨çÛw±}µïBÀí4ª6±ŒçŠ%äÞNð<³Lõ· ¸Ù…hšþj°�ßN®+ßóè;Ó��+ûs2ӨݚÀz×0¥*Gì°îpž�$¢Sƒç6+ Üw¯ˆGC&IÅ•IÀÿ�x= ÑÕ�CüwØ[:¼µ$¹ª9Œž“V1ÒÇeUo’�ìá¡áÔP®#O�šøáK[r§í;åEºÐÄ�>-ºW#=�;m@÷÷ö5†ŸÇ¥Œ£O‹Œ0ù´¸xnн×F­jÖVëf«j.¯´WªÕêâYÄëWNoU»Èî„J�¿â-!_Ê�ŽˆyV¢-2ˆs#`£K`¿"-GP´!|èšÌÍ,£…d•¤À×Ô)Š¢• éʃ¬¢487yñ¥‡™ÈS$±?Q¼@Ý•“22|ï”c"iùô¥¿‹©©ð¨œ¶2­õ´«ñ#ÙÎ=žà,gK—HJ 'ý¾nLz÷ÓäW;“_yÎäwÂ<{r�WÿjÔqs»¯Þ´à;µ–B%L®ã~Y Ëü¸dÿÚ±ûˆHœ“,\ïÔ«ÕvuÌԡȃÁ–í–—ZÕ&£Óà �.ý„6]óœ1ϾE>³&窊HªÂ€AÆJ¬ì3ô{<î1›Ùf99˜òƒL¿ºäƒØ37u°¦Å‚€ssþ\¯ÒÌXº ÁÝÞ©IÓÓL°TZ¯#’‚¯Qæø”Eá°²H4;.«ø³1÷aa pׇCe°ãââ$dV¶14]�c`j`ìe /ü ͇·3H0Ùã×AÅûkúT<½CÓÂtjís'~�©`1N —u÷1ˤ¾â[ÑeœXÈV*rÔžs†áÁMü»  ?ËÈ…�lçÆÄØý`-�×(AÑtöb8¿&Ÿ)ªøå’÷e é+ò÷Ïßù›˜â7À;þ9q­Ý7÷ùyœ†Y¿þcˆÆëgÝ3œ½3¦ØìÈ&¤5âˆÝTI;K…ü,·FÆ0-E¤g^>ƒQý€|³ñÂö1î Üæ.wûDäÙ1™&‘XÝ ocûֺƟ¢¸ð]{¨rúxx fíPVúw�ñ¡Ìë•=è 4—$�˜?òÀ¾S¦\äî˜Òy?)ƒœ2ÌÅëO†ÏyŽÝöúr»½~z¿7ËÇ»”*r75*‘ÃA¿—Ùg–Wî6n„ª+ß8Þ$[ôB–ZKÌ• m0+¶ öÆN¼°�€C.õ/P²[£ø¬²¢¡„;·è‰QЬz¿ÿ ÛO¶_¸°ýé ‹ eÅoÏ#-¼ ÅóØ;ß #> JöP(¡œ¶@>Ã÷îÓl»Ž¹\]>kÛØµ»9l‚$ÍIš•¥–¸P†} ¥˜]€%vWâ9ÍÏç#3³2%$!oâ\ÂôÃY�ª -s0ê O……ú‚ö þn˜´ CÛȯ[äR¬–ÁÃ?Š/ucØ/Sô;¸7Öiwð|ÇÉ÷¶öã÷˜æÝ¥zI´Mxð‘Ç´AÑ�˜ÕT. ôBn¸mæÓ‹f83WY˜)FÀ¹á.ž2š;.wx�&ì@S`uÂ~ˆÂY–³qfPÊÙÔä#²¥P‹*VLæWÆ„^óóëýò]ÈŸ¨_F37€z#)+ñP$Î/¯#ÍŽü�#îdÌD]güqryc4 )Ð.òD°}8u°ôÌéÅö<îÑÉíjŽ5ª«u�!­Vûnœ9ìŒC±ÊwÁÙY„þ4™¦`(ý›‡Ï•ösÍä¦v6UÝÀ‰‹Ï¡àHøE±~.�úB j( ’¯µÆÔcÎ!Õ/šf*<ÿ|ÒrÈyK¥̰Æ\ þO/j÷9 ÈÏö‹‡†ˆK²ƒnŒAkyr‘PúEßÒUpYÎ…‹*É8Ÿü0ôÀ‰DŽÓ~±&ŠƒHHLŽ€—ßJ“ôPLIÅuP¾âýYA–|UÝ&y7ÅÔŸŠì2èGq‹1RIœ:RNÕá%mùõ¯:ÚÃ�ع#Š9œ«0ÊH­#këô/9`óv„Ý™¯Ã�¶v÷�~bqãù ±]Ú JWtU—P¨4ÐD€`É s9k^¦ ¾1wö�Öß¾ÝÙ{“‰üS8¬sïÝQ�³µi0 ÛD9ÎŒîð®+&Ÿ+Õi˜Ñ¨QB½Æ>¸!ms"ß+¥¶ŸLâ€h6EàY6r“))ë&rPÌöXÙGBíVøÒÊ�謯ó�‘ Ê1@m¬BQ„®öp–tŽÙ ;PÔ Ép™–ñn,­GslO‘9kú2Vã…ËÔä­ÊRY1Ÿ�$Ò˜r¨|£«š ¡«Jƒ–Dž;è)KGÿÓ–‹/¬ ¤Üƒ“¬('ˆ*l“ÆÄ;%K°#Ït÷î£^e�#¾ÉÉ$…>�L�`°C�ed¡x§Né„Õ?xu¼$ü%_Þ¶fÈ%‘ã&¦ËO‹RãPÊ“Å5”÷ûüc4Ú–fôìÁCp¦“’]bм \œ�¤‹’q1†á¦Æ³  g:6á–\ÕÏûð6²uYâ%ž¡Š†¹Õy}û>ôʪøwžqG3î¸Vj Ée‚ ÙYxxp ÐÂA¢­F˜‰S²ŒÔ&ñç„qæG•èyØw|íÑŽuþ~ÿÍÁú&@[Þ;Sº!uË“GqÞŸ¸4²Óä̵¹aéä.ü¿³û~ogû§ÞþúÆëo¶à å®è\ôÛçýµwÓ™8¼±€²An¾û¸÷Ìk“¡HÁ�/ ¼íðÝÆ[xË­ollî¼~»Õæ¯R·lfx=œßOÝb�ÚÛö¬³�2CaÁÇg³½¾Óè½s’Ë�¶Äý¯<‹‹)ðœøáÑ»ý}¹S1J ¢˜¼a*ÓGOÁ-ÜÊ’÷0çðñ‹ØŸÂ=á°�ñ€nÓ7UÁkB˜”g²Lq1â®Û öm òw?Þ¨)hF‚  WÜÊu#¥¾rpüRKêLÆþu…qÜcÅv§S„¥¿™´§“eç¾)¤W_¤¹œ¢ï¼xÎë4‘'žÊO§ËQÄv‹"¶Õz«ÊÄ‹Ÿû˜R�ª­¾Tþ˜ï}ld€BZ6*ÏnqÏ:®OóÐjvð�= 2beÊ é¸�.vL‘ø•ß]Dd=q¶MýP°k¨ØÙXŸû IÁ&;pTÓš*Bcßð!”ïðc:»p« (:ÑŽš¼€[£d{1„¾*1Ã3fs:M°ÒBᇂC FøìÅ"Acº,ùpÌl gn¢¦ÞÝß³¶eƒcÒ%_*Ǽ²ÃËõh?t£`ÒÒÒÏš!jlºa|+^Ó¼—¯ûm�Ø«Iö�í0^,D‘z³æ•-9vºd¼�Öî}Ô䆎/YŽ$AFŸp”ˆUOªÊ±ß]s±Ù;´?t¼3Ñ+£ï<רs_J—árx‹ñÑô%Fäc¾î«+…’ÓK9±¾¨€Ÿ`D=üœÁ™qÖìÆJ"›´±ÙôÉ;é™ÌQ¨¢r �‘€¿ìvSí�)ää�í¢é�A Ø”ã!ò¡üI‘E³ŠêK€LœØÍ$³†4½Áî3Ãp&\ ÙÏôEô¿s·´,‡YwÇ"BÜb´ÉuÞU^Qš©÷kJ¯ú¢Ã}ðÖâ;– òîŠñ¢­~Ò÷1ûNèc¹Í®¸PT�‰vp½ÊE]¿ˆæ—–í²O†IâÖD+;l£¬½ò‡@�\Ù»j6f4$7BÃã‡`ÿ<æß\š÷;Ð6B’w–l¾æå¬ÆùEÁU“üqsÔúpÚ#o^n…RΦbyüº` ~gÀ½ ¸—�`Y =XùNyËf?¤T!—³ëéåtóp=…fâo@ç]L&ƒ*ó»J<ñµcÎ.’É ?=­r¶j?l´yÀë(ût”–³Ø€Óâü%¡…S—ÙKÛ?äehf‘Q I ~Þ`]Þ tÏèl è]òn£ï wuQ™è‚­@¥'7YP88^WSÕ§M9Ò;þÑÇgŒ@:sÃ+gÀQrÊ+a�D˜+ç@N<°“%v{…A‡h&*¨æ>ëkÏqÔôý=/)¾ɤy<€D•!ú×è$`R‡˜Ö&þiŸ•s�Èe–©9×\Ê/WE«S ¯lB3õÚòu�Ë"KqÁçyrÊ`W&™pËk?Ûª«ë>5I™û89êÂMÇ"(ðê…Cîm¿Œù8dòDºõ±²Ab‡«ã̉(FóÕÙlwÌÊùs¼ß;\ÿŒóÆ»½í�7½·[ëvöÞôö×ßl±²ƒÝÞæÎá:°^›Ú³*„^ÙÓ˜¡½stÚš\ãfŠíç�;ù]oJ¯Sú›fkzÙÿÚvO½þ‘Î;ÈP5ZKMÝx�?[Íø¹É,ªËŠ™èaŸµyü,5(‡Ù®2…,àAítÇ(~YÒË5`æ4c97}Ô Aåº!Så·ºå *”8–})³}ä€jµIÉ¿@¬ÎF(1ÓC£Ô�ú¼“ ¤L]D»ÜÛÕ×2ïisÐîÍ…GC *û.uüá5Í#Ê Ã\Slã¢y`hwˆ¹¢œ¶^ÒŠfûÚõ5šrݱEë| ÆçØUÁ¡xE¤‰(n€²wG³í�ü\n⤥j"…K­U°WCÚ?œÛnߨþyEš_ÂWKìí„·r i˜ºõ‰áo¦… qØF6t#GG?AÓÀ€{€!á Ìn|^ìQq#Ð~ç1ج-úçG|��„ñ0œu* ËÞ»Îg”ßd~k©Cø˜cÖÈ-Ræ< vž|j+ŽX!: ê´RÓš8"¸37˜¿Ï×¹!˜cÕskâ‰ð®]Ì3îb¸r…AË�T·‚Ã;Vò§<Zâ&Î5çˆYÄ&Kš®S–Ù‰'®fõ¡Ôs'®1ýœîõ DDø•,'i QkNúè¾­Ïè¾Gf|œhTÑO¤§žÆIø<~Ÿ«GKæNŽê¦”:æŠXΔ'œã�³ N Ua'¬ú–G—”z.¶}AÜkÍX)çÏ �€˜wg­äì¬N«Þ0úFS­^›xÇ|Áõ>7çOt~€Ÿºn6è ~âfò¦ØÊ¿õ­ããc�bÏ l¯»€¶Ñ#¢Û5Ôòht:éR3»Ëˆ½éûБv¬tÒ…7Ç鯕"lTyä�uµ. b~ŸÅÄnàÚ^ úñ+èÛÒF±ëE&µ‰�£¢†&ò= ÊgRuª ¥ZgÃÂhÝåìÌdßâ³4M˜:¤Ñ‚tsO`!]ÄÚH—!J–%(L`K({Ë�¼ØB®�!ñÌÚqÜžûâ9˜8fëä^sFUS}s׎7EçÅ QÿjXÌa`÷ü8±ü6"î<µ6É�†ßBZ׎â¨}§€G[SИX¼�¿5#³µò«M‰ª 7?W�ËÚ ²>hF$ÚZ¶D3èhkÉo^Îã/”K@áåÄ� °´5åA¢8è/ œŒëzVïZêÏPKާJ8æO•ñÆ�×TÆn"þ°…¸Ž¹CbÓ‡ÂØ¤Êüän× ×W_âí[2ñd_ ú*r–e챂)ÅJwŸüR©’­ZA©xö­VÐ˵]jV‡Ÿ×°ò�…:o—ªôxåúÌ»–Œ?ùÓGQÊ#Fý‹ ËÝb”ùqè1<ÍPf‚o—ÐôqC9C¤Wqýz!k/†íR¥Æ§}á¸ç±\‡ÇÏ“ õÑ3b¤Œˆ#Ÿ«…v›Åˆyì43”I#2KêýË4˜Ô›¼éÓ 8¡ å(‚dñg1ªË«@½��Û%ŒêŠà@¿ú8äÕªÕ&�QP&¨1ü\ªÕðŸüSY†ÂóS�~‰ÿŸ ÈŒªáK�ü§ V­É«­Âÿ7—àŸ•¢Zu� Áî_¢¾Õ´K7nìP)ÝÅíÜG+ËúL«lâ~²Ò^/³øìôf?©Z¾&“E¹ ü\°3+6zäGNüø1D£˜Bêªc'¥9æjûqj+·�é/Ï{d€íÌsœà� ç�0ù5,öèʧW¿Ž¢Ø=»-´Kц]9uâÇñS Ïaì‹FE‡ÅrDA�¨®s1ܰ9ÎÚôq–'èN]†è"týKq>¨3RáÆàßYEnûø4tìË Æ«b͇•¾n§�7(¼höðÿÕgE'3-@�MÅûOXeŽNï@Rà rØ…ŽGy ¨# _ºqs¬VO­œÀâÒþ(ŒK 2ãL#ËU«µª¹µ�÷(-Ä™}åzï€Ê-Úí6‚ѶÝ={¡aš)¹Ez}–ü/»Q5±¥)¬ãá•í=Ç yG«êÝXkˆ$< ·:,a-³¤,MSúX%ç)A‚I)P,ËÔ�[j]_<ëÄÌ}³Iâ¯"Ìþä.…Ô™uSp!åo­ÜeD_Û•^+$¹rwšDOꮵê|M ïTȶ+…}TdÎ{•Øœ_Ù§œæ«¶Ü´ç[õV)¾Fÿ¾kþ¸kÒ ¢ È!'�rêËåðQ¶êUEðBX‚~˜žë›R¥Ô„£‘ã"&õÈÊÑk?`o9B`íÂHÊ+Ø¡Qz¦Ö£¡ëKN%_û4=ž°PΕíz—Kkµp¬it*ëªÔñ‹ ó™ØídÆ·àxLÃS®!eü áLëŽß·‡Ñˆy¨µë¹øo&ÙÓ÷rñ„û…nkyˆ…x,ü!'*Àîlž•VÖÄð<öƃñzš°ó͸æ•�Ñ�V[ÿ€�¢0B—fÈOº_GÓ–•'æ¿�Îg/¡”“«Êá…ågŽ ³BQ`¦aîC°‰íÓ Üf5ñ#¦‹ª-1eT­•h£FJ+–Ö„©j=R\d”á²H*»IćXQÞ%U3  ¬¶¢Pë‘ÕÙœÆ~ú%×nd${Y�Gò@âP^’(LÅMCÑtüi†ò8I^ûQ ß5&säL kJ iÔ3Á ­1‹UhÖ6pÖ5'«'D•×>4tÔy óCàÈÞò ¬<¬ufãÇY'¸Z  Éšs*J¡¼þdº œt�W°{‘‰3ü�hù[{ŒéïCÓi¨VÑ_8yëLžL�â‹O¦õôÉ̸ݪµT¡zS*¬T¼ŒA¤Ò¸™JT³‹©Æ8S´fùÓôx›è†±lhÂãEÂiË4f=¹ÿ"ƒäÇö¿b¬&ýûùò½e�ÛA¸ÃBR ;q*@ÄËCË㧤V+Zš`;t mD‘QߣÑ2ð„‰AŠu�Ó€þÞÏ(ÓwÞqÏ? õ?7Þíîÿ“S³ÉÿЏ*ö¿qòóáfÛH gWt/‚%ýÇÙÒÙàÌÎj$x—Z>$¥4ÅüõËL1á'1ÕF26_aJ·ïÆ�1VÏÛh §Ú·/TôYlËHF£Z–1¡�ÆÊÇ‚Få$ªb/%Lw°b)Œ½ KMÂmj¶‰Ê¢¿ï΄ÙÔ„B¥îDÔd{†ªñ+ZZפ ÃÛSí ØPŒ˜»f)ü©ŽrÊþ/‚(s¦ „�ækKø_‘<‹ ½ DÂpürýÀIÄaN<֓Ĉò˜Ë~[LŠ6í¼}ÿEçíOã•ô(—’Çáé: »–¿ÅGšŠÖ12µÇd\†ØHÞ¬‡ç qÁO3 CìHú†ÒjÛ5Ò}´ƒqF€�óËÁ±5ëØ4M¿Ëã|PGÂÅ[iW¸r§»²‚áò |‹EëG½Í�õ·ïÞô6×�ÖŸ›Å'‡YçIœý2ÚK)¾^5Ö�•{W̆&Qöß è hÊlï{4ÛkJtB»Ì /wANfþž•ÁÈb¦”ew1âÁÕÆ�ö$Îbºw­aáH†ŠqèO´ ŒUÄóÅ%|cj èâß93€Â~›%²3ÒdA§$ÉYXÉK‘›Õ"˵É-N–M ½g�Bÿû‘Qž)ª5 Ì�ïßïýÐ{»µ÷æè{öŠLµªJìÞÛw>E`R2ÚƒM÷ì,:�åßéIcE =ª‘Þ[cÝ L—�îF-—ï†v|7 '«¬”--—5aöJÄÞèËP¯ÿÞŒ, *k ýÚP5ÿ]ÌãAþø¦ðBuYõ £·ÓÕñ:ÎáÄ’ôcåNûSøÉ¿ÿÞòuÌ,öíi¸ø�FA:FCš°cwE($ŒÉ"²K°$7¡ôHc½�ÿ’³sùATfh�‡Ÿ¦\«QfÖ�iŸÁ­Oõƒr^rîïçj˜œA¬.í~~R‹�/SÀFÄÀ ¯øTÛ¡~êwC m.¨(º#áÒc928“äp&)N1I~–Ir1B‰dÎEÔæé0© åM­cõ©‹y “GJ(¨Öíf“š¨¯1Ð�òÈRš`1…,õ=ÇöGÃ×(K¢Fx÷}Qd¨rz†rˆÚRñl§DÃòIòÀ¸|ÎIèhÖý­ƒÝ�ÃÃ�w{‡BbÝc¢â¢ÉÓƒQ0Ë飮P�EüôŽÅÒpm:âå|B"�d¹.S¢«[¡‘ìµÏ®+=1±Ø÷Fç®ÿ@3™Úï Có–ËJ(ÿü aÕ’zn+ID>'#n¤Xù"„Ûü|®¨CAÛœ˜¨¸Â÷§# « 'DnÝ(ô¬\E^O|ÉWàŸC¥ûû‰Ÿ§zéA- 8“ Œ”˜ä°lQÇiOji,“ÆN† ’ÃÕ£óp±…UYVݘ …º-ÆçïìY¶ïmH¨A9 @"¨‰â£Ø)k‹0×E2ŸYä�QèqÅÞm~^+.],,žl­“ Ÿ»˜Go—ËþýýlcÓº™²0|ÿׯayãcÛëxÓBßUÐ4ßâ©à@«ÏM¶O¼ßŽa=-}îÁÕ¾ÚÅùóÌ‘@3aÅq€rEò{”Èü × ê¥ã€f£ŠEil‘8(Ñ¿¶á ñâ³�áÔ|–u_(•3hzBý¡«dd‘�+§e£  íï~è$@÷¦Ä»vŽ.Â_r8mÉú²øº¸ŠF•ûä…˜œº†§µÊ’ñ—°ÔÁPô·:rHÀ97.,Ép íV R)[ÒgÓÌJY°!Œ¬#¶hÏÏÏ…úìðÆ²‰Ç€’á0ÜýÐdçç§ç:áW"èl �±;eÎ+G“Ò–ռð“Œ÷û+§,îšoÊ ØÜRž!'…cûæÑŒ-•�*bŠ Ñž«�õ5ØZŨ—ƒŒ†ÛXôNë¿™X‘éx Œ³¥ÏÊI£h3õû0ÌÒb…ÿ•�4Ý AL6d@0Gcw%À?_�±þs]øSRJL»±ßOáƒ?Ny7-èëÅ”wg_1Ä*‡ 9 öœ›ÈÒ`Y# ˵ëø#`»PdhiWÉåøÀò?LhêûàŠG9æ¦]œv8°´�ø‰å;~ß)=ºâ'–oó3oiòôCéGç4º@€³´ñË·ÐèßÒÈöŸ?Œ<ß íS×sc×�¶¯Ó41Û»±Cç°o£h s+Ð3¾‚)Ú¤…Þt΀-m(J*V„Õ6v¡fÌ<¡-­U†ò+8ÃQL‡i×öá‚Cµ ¥…²´r%‹±úNˆai—ô»Ït8¢E•¥Eì•ñ  ù/,}ψlKZèã6ýÀÓDHû�ÿô“mR.[) £°Éëoß¾û¸µÙÛ9ÚÚ=¼¿Ÿ›Ë—vÌc§›DÔû±¯æ˜µáò*<&4>¥_ø(‰¤wJQ,ÂA×0NÇüøî`sÿ`뾸±Ïz,+Ç€ì2ä2D²M¹Ç¯‘óÈÐf‘Ç-Ö†eÌ—Iã.³wÕöÎÁÖG¿ 2-D88o¸âߎ¼Ÿæ…Žü2æçËBjø¹eÍ:½¨2:NL¢ð޳t†·)ïüë[ë.B½mØfG;2Ù¡íc„z%Ÿ9ÖÐ »ßF~ÜC´ú¼žf„Ž¡ûK¾*K{�B?¬�5ûîÑ´†“Z0ÿvêü[jÕŒ2è¡Ü¿wwæô±°Ú›Pï×ì÷q0ë×G�fD,ŸÂÔueU´±`õ"%Ç/¢•Uñ¦ïP ݈EbAgàÆ„—£¼Ìj'¯yýk×¹ax<Ó®|¡&ånPÞa>9ñ�pZÅk~2u²’í„“�[J‘4¸P}Ë¡Ç2�½šÜ%–Z`Jû"ä+†¤g!EׂVª”PvͺÔ�$â?Û©x¡‘4ÔŽÍ_ ¢4ÔÜ¢­™n\ÛåFµ:!wJ%+²2å–Š§Ûxí\Ø×nò´å$ᑲL[Ÿ$ð¬Oâ×\‡ê [CÒU)ÓfìÃå÷ÎÇhÂG-··e=“ÆC/×t]IÁ*óXäæÂ³Nth;l!áO$nÒt�IŠ-V?PNy‹ u )™*¦™ŸçY ¨W€ÜÆEÎÜ\ñ:—u‘�j’�¬ö¬4ó°?6Ù5%F{àªQtâ¯z1M3›è ã< 9üÐÖȳÓÙòJg´B¥“ÒnŽÍàW"½ë4��õr¢gƒË©“Þ×0¤¯T)Ò¯P[t2|fÛµ¦ËŒñàRëdñÕ�kFØœBŽùœ¬I&�=-º…˜Y$è÷‹Y™þQ ä£s öŒ]¦E̼˯*wžéHM‘L \1 f¦ò´ðÁ ²S ’ ×è›’‡Áš£Aû3GW†L«†ÚŠ(®$|a—xä ±£¬�2¸ñ;¶¿õyhûi®Fh9¼¥älô Ø£~0@1§vìSŒä€éGÞN:eñÍïÆ”ºÂÀ ºÅ.ynœí^#ê°¿÷÷<Ìq8ò°þalêPÄ~Yë5ã€ÅO¥ÑؾІñ7ŸãµóÖõ/-"E°}�LÉ”4½¶*šÞ9¹ˆãaÔ^\„/Ì+73ÏûçnåÔõ±'aÂs‡&õê.Ÿ´“+1" ©ÈL ~â!ES¾îÜl´ŠôCP#0Î$D5±Gxaãð{" *³ª‹A¬„sW}D¹’Ò ê¦ÀX„Ÿ0øÊÂ*Žé!8ÅF¢-®Ui®Ähl+sM<Ð"ûšºÃ’6ÛÊž;Ë–yw�ošXpª o6&Nµ¹Hå~‹…fꬫ$w�AºQ€ Ø�t“†->¼Ò®§úY{ô‚ódÜF ½u•¼R¥ü$€R¿t60‘Üà€ßùR–Í{K§*Á�%Å}Çì–˜¹Òq(u ¿5D+|$Z¡!VŠnÕ³#ßÂ#ܽ�îó<§ç‘�dAóå;ÛóÚܬ›P¿yCM%.«§·=v:Ù]JÙa5LՉʄÁhhË9ŽùAîZG.æ¹+‹€Ë¸C™®þÕ”¸½?”2Å›§ËCߣ¨b=Žíþån@R:,¨ØT‚†”$í;è{‹*>àe,-¤è°ü‘Äyýˆ‰óFÏsR¹œ }|lQ,{”ÌRÖÈræãÛD“ˆqWTpb°˜ñÂü»Nç¸ ,`€æÐ"»kYÞkÓƒÓ øàÔ±œ«þ¯€¤1˜�QzP˜q1¿°åæe5ÿoœ8J°wÊ+NBì¹$–¿-ø(õ2õÙ ÁoÙ�ø«TuºóŠ*s¡Õ4 —üÖpl]! ³çZ婾QŸž­H:vNjÙ·P¤Ѳo±L&)½ ®�Ü�DBOoÉáä-�W¹Í(¨žzI÷Q¡!Ù®@x3ñ r‰Ô˜’¶ ÛæÛô£óHl£.^ûŠ=h�];]@Šc2ð‚[8k…’šG±Vœ.øô2³ØGª©š²ËfØQÌüˆžÅ­?7dOòÞƒkº‡THDæ�tf2í  "Te‡»€tÔBbBÄbÿSû¤Z¦À@/ÿ-Á�RTR.Â"e½›7nv'å;.þkÃb°¡ò#·0P…ß<¹W_™ž™ønеwý‘wÎð�¾sÜ/¹sÜ©w3V(êIy5Ó5å>æšryMö¤›Ç�zó¸So÷¡›Ç�ñæqwó¸Ù›'½Õ•WÝkÊ[F[‚¿ÈMÅûµ.+doùg/¬ä«íXå;f@Y–j:�;Wv4Xê8t¯ð^q¯œ³•ÉÀ~ȇT¯Axac´~çš´sxs$�câ ãñ¬Wáß×ñß×ñó‹å×¼’ù…Œ$r:„ÇFi7Rųj̃¤¢H‚ì—è'æZ¨òʸ‚�Y^‘{ïG)¹G'ßm;3¶”Îi’ãËX”à¿¶Ha$‘’:€ojÐ� ….|ÌÛ÷ÿ æ}ü¦Ñ­ÔªÍf«Þj4ªøFþí·õú=.I : pÀ™ù4á£å¥fmeeuyÆù´º µzµZ]©6ë3Oh úi.7ê�Z£Y›uFËÝJ³µ\m­®4f�Ï ny¹Zm´šµY7hƶÚZiÖšÍÚò¬ª$4ëեƬ“©Õ°›Õj³ #«Ï:Ÿ@B Vz©ÚXZ©Ï q Í*,t­Z›y> ­*ll½¾Z�yR �¥V£Õ¨¯NŸ”}Ìÿ׿'¢¶ÔZ^]jÕªrJ-6¥euJÁ½;ÿß@ÀOuiµU­-5êrN«lJ uJî½?ÿ_—¯øÂR³± QS¶©Éf´¢ÎÈ¿·çÿëóÞX†óºÜ¨*›Teó©ϧխ,Wk-8ß«µçà³ÐX�ÙT ¶gšt³´Tm.¯4­Y§ÓDHhµË+Í•Y§³Ú]h-­4›°v+³N¡§Z[]0%è™eBˆ°V–K�Õ¥Ú¬óÁó Ðj¬Öf�ž8ÜÍ¥•ZsiyÆ)Õ»•V N¬ÜŒóYF܃a0ݬ‚h¡»¼ÜhN�Ñ/Á/Ü`Tnr&M6“e&¿@u¶`•:éÖ2L?�´Z�ͤ¦ÌäøF›ÚJcµÚ¨¶Qñy,±y,)óø>Û¯®¶ZKÉ4…Õ‚ Àê«€@«³Ì¢‰hf¹¾²  ?Û,–±‹Vsu™á‹æPE^…­«.5«3Í¢øeƵZ[nÎ2 Ä-­8Œõz}¦IÜBÝV½¶º¼:Ó$–º ËKÕújmeu–ÀÍsm,5›+˳L�µY¯­ÔZ+„‚f&¸ `§—›0‹êLS€.VW�„Y�ÛaÊ‚_ÊpáÙ:_W@=K�* -9�%6�¥dî/e¸ï]œÕZ}ieµÖ¬)3©²™Ô“™ø¿”áºsu‰åšˆ~š«U·Øl–“ÙØ¿”á÷u~\áô5 'ó©±ã]+žÝú@Å4á”/×fœ¡ÓÕ&,�Ž3O‰ ¾UkճΧ†V €¿:ëŒo®ò¯ÑZ�qBxáÁa¬ÁéjÎ:¤ZKxÁí:óŒà ×ÕZµ¥æÌS"`hÁÂU—«³ÎÏõÜ+«³Î €aoe¹ÞZ�uJp²s?ê)JO¹Ë_À?ôTëZîþ¡§z× ð=5º–½€î«cÎ$¦cã>ŠGÍaùŒ8ߨÙAƒné 0V™Ù´g”àÄ…ÿ“ä´6ÓÊ÷¼ÆØÌêZð­Ð—¬È~¢ºÊEO`7‚�,dü#Ê+z|l/,Àr¬9^ä”°"ÜÈMY^Æe„=†‹ÛàEK  àSå €�Õ¥{XòÖR£¶šúïõz½)>¦ææá~† dc­UëÍoÊn…ÖÊ©±/,zzB (¾%`…k5@W°ÝñEÜ0y ÑÊÚ{ßE·ù;”xx�¨DÅ”®4*�†¥8(½_¨U·áÛU�\õfU�B­ž™Ã´y�íﬥ¦-¦ÀÏ §®@Žáë†]Á>Aïqm©«§BŦÁÎV�J‘g<² àŠ¤[kkúþu­];¾01c¦´Šm,5+�¾æV*k.@j×`I(ìNðíRS§ôk�^î)+¨+ðú6vxlÒ?t ¾Ê¼¹�£(x•f¸œèŽ}Ù>¤Ð°&zäoð=2)p$ §ytW|›’å­èº¿`¾í‚5bËÐÎÎΠþÛÇ$z"Á‰�ÅvÇãHŒZÙ&Çä¢Côžb‹à¦æBx´9”,v£3S»ðÚpÙ‰BQÞ>ÊÅ{ÀÇ‘¹xøð�Á�iœB¦©õ8„XNâÕ1Ê’>�_?‹n¡ëÚB9†«R/—XªäV¾É¾EXó�ã®…˜~,Ðã…:ûSƒKR\K¢;q3¡F¦Sü_ü]«ˆk"l¢rR[+ö·V³„ÚÒr}µ¥»HVZ6CóDm30–�HÆt÷ý‹òbÙü¦£—Í»ª±2Ö_-â@ÀDne!-+†v9;~\&°ªaR?µ¬Fe÷÷Õ5ÖŒ{Þ‚Å'jÚä¸Y+hcM+eúyf/ø¬þ¸å:ÊÝVF¥¾ O�•åU£"‹›†(]éêFÁbæZ¬Sÿc­Iµ¥UkõF³µ´¼²jŸöΙfHѵuÜŇ”xœº;‹ ­5hÖšÕ:|Ô<­ÛËK§«ËµÕÁ*ÊÛ–û­Õ:Fº<#Í2Iòµ ÇóMÏßûƒV)r¼³*qKgä±ljBas‘sneÖ`Ֆü!Ïg7¶EoOaóÀ keúÅù]ÛR aH‚­kŠc´ÈlÛ4aíIº¼£Ø³V–šN‹‚‹/2Ñ ú¶wòYPã�عÂt’ë¾íÝÆn?Úuûa1êÿ\Õ„›êç ìqÅ�†µï£�çú£Ï¨ _´‡î¢-ZZ¼®kcŒóztûš"o`ÖJ}îâ;ÇÌ–0ó=çæ�ÍêÕ{[bßjöͰ7…€Ú" ¹G1�å0A‹Bêy÷–ç<Üçµ'u'�rŸô/Р5Fa;²{ŒcúÁMN€Ç.Â}B *ôbC»€ƒsʾ¡ý@ÿÎmÏÅØo/D¼‚9”Ù¼ìÚ]Û�YÅ�Ësee�£‹¨|‡ŸSÔKQ¡²Õvp¯œ#G7’Q´ÝÔ;"<μo¿ÅšÓд{mÁÁØ(b8mÃL} 6bgгc4pH/¬}툵ò` cµ@Y¼¾Û3YyØâ27%]K�xÄAüĽ’ ΛÚÂÞ«;®ik0>1¸ÑrÒæRHõI¼\x”&÷3>ÁS¤ÑF›Éì;�è&ùNŠJæhëŠÎwÎ4MX¼$[Ž2ðÈÂs!ŠÚp9�h™çæbSnwÖ:�‡h”™ïÀP¾àBY½4†480FŽxPà)6åo#‚ ¶�Ùo“»{¼ nœpÃÆ0©aº‡Q”Ð>P<Œc¹›FtÁ®PÕ,Ž•¡““Ðî=Ͷ~©�áÜqCD@è:QÙ×ïÛcÀìdE‹Kôʱü°7„ñ`˜~ÂùsÐéQ`ºÑûƒ·p˜„­v‰¦‘ßzÓadkºP.Nu/ˆ‡N^c�Ø5GK*se–`ÏmÀŒ‚%!ÉÓãíðoÀáq�­7î8_ ×«ËÜf-5«Z /oôç½¶½2;b]u��œ��aeB"L’ʦ\´á3O]´¥�/t£U­ò@dY˜¨ŽO'1€¡$yФ“ Ü,œ¨,®FÖ{sÕp÷É<4zeÚÑ»S$ÇÉÑGñ–:ÂüóÁ“’± ”™&ú"MÝXª2®t»�ZLôb™qðO9óSS²Î_hì8ÓMtxãÖ~I’)QG ™ÂTÝ€Ð%*ÔágÍi>û[ÓCîG"n¾‘7Ñöž“Ô��ïëà3üª–ª¥þü>s1ZЈ(ŒÒ>_y>ÆÓçææÆ¼iPœ9´!]Œ®Ï©Ì ºÛh˜µåF­ÔX2—šµÖ[ú[].±ò•·õe³¹¼T/Õ›fµºÚøP«›KµÖÒ÷õºÙª×[ê-suµºò6ÓÎÏ»ðÁêêj³Ô\5——V7ê5³µÜàO¥ÚŠÙhÑS­¶²RªµÌFcµUj.›+µ•ætÒ¨·VKÍ%³U[)Á7Õfk¹ÔlšË­F£„Cj5àÇЬm´Ìzs©ÏUeü¥†Ù\©5VJ�esi¹Ñ*ÕÍÚJ­Z/5šæRkuu£j®¬T—ZPPƒÁ.5Kð]£Ú„qÕWÌf=UЂiWkIÍc¹$Û`SY‘�à\šÕú†Íei¹$‰“i%s å­mˆ)R­Õ’Xl¤^«Ë¢N–[|ýpÐG“�І]«Wk%±ø¢`ƒ&ÖZNjÐÔ[ËIlqê² Z¼úŠ[Üš!­=ß ?mM½%fG“§�]^–‹Ã6^®AÅJ].®|æ«/ŸùöðÏÅö‰ÖÅþŠÞÅþ‹Á øcð#¦&àKL�ƒŸX�béôеå°�üŸ“Óù�ííõõÖë)`àÄ£ûϘ|>ÓG�'z¯ë˜v~BÎw$D¢¡Ýw?¼™’»ýP¦˜×5MÎOyæ5Ì­­2Áç{“£ùþh÷í ÃYâóZ*Lè–óyÑ�.‡+Àÿ†¶Q¶÷G�ó%ߣ-uya¨uõ£¨(3Àçgú¨œö+FƒkHLáz>OüïÙäðùÂ’´ÜNÆm»tæ9˜ö½TúuaÖiêíRßÁ¡Ñ;¬Tá´ÐÎ¥~à�®|ž-~â-üøž&5Ç',²Ö‡ç®_Á4Å¥:KZ_ÔË´^ÁäáíR­9TÊnxÆûÓÀ<8sÜ¢Ší¹ç¾:̇ÓÙ'‰K>GR}0#Þñ\@ yDÃLÄø�©?âÀ¤+†%æ+÷ ¥än¼6~ógà¡T+iEÃ@\7j(Þ‡Z°^r‰¶þ^¢‡–èúË–¨x@ÿ.Ñ«¿—h¡ÊåfVV—°€™ÍJ ÓqU®ld{,±2ju#ë˜Gê%Jùòý¸M/ýÉšz5tÀ}ä7õ/ø¦ñß4åÓLC7ºŒfš!ÕœqfJÝg¤Ô}p&JÝæ#ê¶Qwéu—QwåuWÅî`*ÂÇ@¡RÆ�Ê}ñà~å¾xp×r_<¸w¹/ZbENß9sãÙ@VTžq-ÒÕ\ˆtõW!]ýÁ%HW‚ÓÕâtõá8]ýAPNW_}\õZUë~-QcöÊÉt:!fØŸBÙª2�d£žH$k†–ã{=±¶ÀŠÚ…;pÖéE¤H'c7Æd’ÚLË$»â”wj†‡+õzž}Êä¥³Ô Îit}Ž /0çU”àéVÜþŒƒíQfƒGTå+‡ƒ!*D›ñ3sÍh ÛA¨ñ¿ïÎfìš™;N­ÌU3³Ô™eõ“ª|ñg¨ùÐR¦jμ’é¯XHäªo‚ ãî£ÙFÃO Ù“>h8³Ï™UÿóIõ8¿PŸÄ/4fáf”TåÔ4òýf&Ý’²E)Žkêåeþ3/äóY™4ŸÕGð? ­V�(LÄ•5„;fˆÉÈ‹Ñ×£º®èå¢x CV'²€y)*_ƒZëveäåpŽU–�Ïœ±cZkö!�(¶µ³'ŽYŽj5Y¨zõ�…*ࢳünù!yyãÁ…ª7�­gY(Ù'lt4´ðj“O~zÅì—ŸCŠ-Dz·¤V‡=ûSËë ø¸ùÙ ”T{¾]iˆUpZ¨k4žñ7š¢Ë–^n´pÖ&ê÷§ñ˜ýyhP+BgcÕ¸V¡ó¡e˜vŒ›Õ™Žq³¦,U³þÐR5óÀÄ—ªÙ|¾¥j¶h©ŒZþŽQV«¹d¼z–Õ’Ý.˳œÇdHb ã ÊÖ%cHú"1KËIÀ̬Å,×Ñ ­¨´Å0ƒÖ{â-Û|Ì5û5U`*S„ ''k¼ò”Éã™ @+‰ë°øˆb&ñœ<¢b¸܈V º°§�(!aEjÀ·Ä3|�áe‚7ü#œñLKW€ Œ„È‚§´š¿2¾@Ö]7�@™AXøÌ3MdÁO9ÓÕ¾@A 5urýQ⥠¿ðBÕPè0& Ï-¿äÃe^èdª‚Òg††¬ìù…7îãúCç\ Ÿyª)¡òËÁ>\��‡öéèv�<šr¶ƒ¾¹kÇ(ò2\ÇÜc£7¦ZHHØ�Ùt�la*§N|ã8EI‹!kô4NØ.Õ†ŸKQใÒ?¶š[Ë[ÔÁ7N¨ÒÓ©Ý¿<ƒ‘?@¡L_©u™!«;±_)s1J*p!ˤ)ŸŸÑŒÂõÏÛ|ì(šnR* íÁ€>©µÈöâáñq¹ÚÄa¦%š3Tc’©‡¦ýP·)QÞõX§_bcCF&æê0Ù"æñë–žgfd®ïiX‘$›Ùv©rü^�.ª¾Ë ˆ­/q#›dëÂ¥é͹=„a®C�]„®)a}2œ±¥Áp©ãµ€òvG6.Zge{{{²OÚB¨®Zrh—ü ¼²½¼áPk•�˜–NN¿>;œÏIXK5xbG©T6O³ö”ê¹ï»Î~ÆÆÂ� ¶¼ÂLÌ¿¹2û¨€Ó*�f�XV‘õÌÁªâ9gñãÐ kÅLK·gî=ó {¨PòLØû5¥Œý1{Ä'é¹³/ˆç²a¨Üx7«EÜø‚1·Û�—Nø˜±‹ors¨š-çêC`Z�Ùºfuåî~¨òeøÒe\*ZFYy–YÌzG©×ÊDÃÆ/A[Jeω3V�¢!$\5k-fNy÷Ö›3ÂN ‹4’æò„ÎöÊöêöë¢Îš©1À*¬$¤”üjæ‹“SertoT[ÕÖ£¶°° h=ñ x¶ëú^M”lj‡)*�¯_«Ù(ÞŽÖ”ÂØ¡Ë›³ô5y�ªÕåÍÆölm¨ë£šî6[™Ûúììl-¿�•VãujÅ(þƒ$�Œ°Á À+ü·J7dx~j—«F‰ÿŸY¯él¬0Ú"]é%Ó׆‹OÐ6]1âÏò¬,W¯/f´þeFv—Ñ”¨FÂ[wß¾…Òád´ýõŸv·öŽz‡ï76¶5rw%oæ;�rq¼ÍúÌ'[8SÈ'‡7å˜AèÂ9Ôù_ ¿"Џ×pqoé8óó… ñÀW<ö€0.Í'º•€È­þÛ¬)rèKÛδÂ7 õûNõ¨!á¡�EŒ…lø† á­”Fþìˆ!� wXhÜ”²µJe˜);÷÷—ÑdïY‘%+(™ÉvZŸI†X�󓽌¤£ìe”ö”•†×‘b€1Q_UUõKzòyïñŸ/+ŸïÌfö�3œ(òHôíÆFdÔŒT§EB»DïlôøÀ¢ÈrƒBi´&} µõ9i}µî¬ œŒIyæ£Ð9sBGÊóâì{t$§ILý¤?Æ =- Ü!Q � OUú´w°¸�-‘t�5µåE°\Ž V¯S;q€7˜üûƒëÜàe§”·²‹í¦+sËÁ¦9¼K'I :u¹2òT¾9GŒ?– ÖŽL÷›{ë^¯ôŽÖ_šßW˜¬r¢]ÊT¥a `w"£iÔ f_ÉA¬È*±b²£[¿ÿ�*hNÐÜŠd0ŽCˆFìSÃPefo7Uç…ó€1ŒL2¸›¦)°ÒÊAõTudÓpòw\a` ]…æÍ—ƒfa‚÷X�ö³€ts6�NB-áÅÊ(¬,ÍTÖÏé‹3~Pµ= ]`QnPk?�Ž€Øl1®¥Qn¸ÃèaÇÇ^o›hXÑL`'o†0íöÉcÖk­/�äõ(º‡Ùn–�UsNLì,bZñÄÈ,L4°7IŽ4*O(/Ó4yø›@Ä 0a§Ëca#„wŒá�»Æ%yq€&ç†6Ãîsq0ÞE4ß�MæðÀ6�ÐÝ½É ìҾ¹_zúU¶iG§�^üà?êJZÊ-{ú†Ø`×Ù:£ÐÙækLºKãÀ¦ö&€¦kÂÔ¿¢ˆ>µœëäÑ `˜]Ä0K B¶¯Ø%ÓÞËš?„þ{†C³ã÷] "ýïeê_íи¢Ïü¡9x�C³§š‰výSÍöËš¼¯À_ãÐl»¡sccàÂÿµ3“Ìü«™3ÞeþÄüö'f[91íϧœ˜ý—=1y›å¿Æ‰ùèœF˜öýïÈ(SÿjgæFô™?4¿¿À¡ÙWÍDÏ«)‡æÍËš?D�ñE‡F»y˜¬âÔõÜØu"íá¸Lú«”\×Ùãòë —7Êq™]P’Œéí‹—ß»?ëqIß1[W¶û?H’ñi=#ö—?(ß¿ÀAy›”‚è\”Ÿ^ö üUyþ]Û»±Cç°oû0Öÿ½“�ÿW;:W©Žógèß/p†~RÎЗˆÞ¿ìú«ŠöÀ‰æ7�3Ìaô¿wŠò+ðÕÎÑ0Óuþ$}|�“ô^9I_"øùåNóB®?Àè .Yž gC*™ý`eÎÁÛ„ƒ§Ú�Ôf;vgAØwöÈ�ØýÝ‘© ¾äx½€…Áò£L\¾0Ò¢:¿�`"žÆ?sú±3Ø €öò£ t0ûvÿ"µòÃˢ뿪üéÀŽb²ݵ}ûœ¦öü([ Í`üÌc ð³9Ù1ÿEÀôyn€å©7@ñ¢¾ø-Ðà·@XÐýƒ>©O´×i­ÇœNõdþðWÒ‡Ƴʎæ—Þþó²6qUIÂNè;Þ�êÿ{d�:÷¯FÐ]ÊNó¤Ü�/pnþ“�rA�>7Î`FcŠç;7‘¦|žF΀™ '�ÙÙ½g5 )5Žº\þàEÑLžÿk ™ÃÑp„…tÈLæ· ¤ÕUÃòÆCi8þ|HG®Dã<É|7bíj©‹Ø}�ãçBIYë7ò‡QKð²gå¯JÀ:qìúç…fJ�9,J®–£(`3$Â�wùp°¬?á�’ËõÜ'J.Šz¤ì8RÁÀhŠ;zvÚö…o²pð"ÞAG,põa߉”ÃÅÁã?j¿ÍøÑƒÌ©ÒjËøýq­.ÍÒê²ñëãZ]™¥ÕUãûÇ/[­jüû ¾ª¿à«ºñÃ|Õ0~ü‚¯šF<0Pâô¨¯Z†;xÔÎÔfÚðÚ²aÏ8š/re{^W5D½{öõ©¢×ï:s¹Ÿl–ýNêË:SÌYŸÖÙTñš#Mò„»’ »@¤ ¶b~~–A'ö„/&²Y2j(³AOpiŠõjÆá)¶[/6¾Ÿ�Oø4afèY‡ø!mÁòÔ�:L¿É­eC"#ƒ­Ï@*–g7Kxy¸Ïjs_¾Ç¼æëåû,–µ¾|¿ª8èE{ÛÞZ?z°uhî97/‰Âà.ª­âyã,çlÐ,Ô§ž®ºJ8�„îô^”+üÛ’å/*¬ýÓZ²ô_€!ôO³d‰^ô ýmšÿ×;>2ÓüÁ šhð4ÓüáËš¿MóÿÔÇåOmš¿þÇe8xšiþÕËÒiU…úߦù_åÈL0ͽÀA¹<Í4ÿìeÊßfÅÕ3ó§6+¾x�“t6xšYñù‹ž¤f~ô�“´±{˜Aúß;F™éµ3Ô¿Šr±§”túè<9@�ÿuì ¦Þ®Ë9§ƒ ;Z¿žQy5»†ôÉÞ«fMû’Q«ý­iô²­2£�üINmÆq>Fmþ\ÊÔ4œ³ÕOݸ5f(’¢`¹=Ë«?Lñ{ý2×_8À¬žõÇ~Õ�­ÂBmù«`Ô‚XÎ�68X\¹þ3.° äêÆ¼z™�yI¬(Û¡²‡Ñ£-÷Æ5òJ³éžL ð ­‡*L&FžBê:ñ�¿N2Ä' öýt`ùàF.`�lÐß×ñS!qŽbâÏYå÷—¾…]_‰H–akþ€Vyb. n¤77¥¡9;¦rFžÍ¾žŽL—ˆd±‡CöY8ì8öà6Ãüæe%WùóóÿKHþéGn2¯’„ÞŸÉ«¨™JW11“ûdðÄHþt¶ ײûMé�à’Ò!f‡Ì¾®Ðù5xÞˆég¤8vÒ&àü FýX§,:ûìAPiët¥ç¡7Š2½»Óz¯+ôî>Ðû>ôø,r¸Í«³æ:ÈK§ŠÊJ £ëó‚©9ìd}‚iëÓ2€w›¾@Á ÔÑð_­­Á8RRÈËÿ­éZÿ[Óµþ—­é6^@ØwùDkºÞ߆Aý9 ƒv^à¸ôžhôúåŽËüiù'øÓÊŸ;øÓæ É$³E2zpÍŸÂë?.îÖ#åë�ZuuÅ_–’ü«êŽÿ€p[›HŸ,Ùzâe[(�ú;öÖ¬‚òYE\9ÉTVÄ:ÎLóJÆ?É�}÷´ÁáàiQ¸v_–”þ«ÚBþ�eåO‘eåèNÌîàiYVöþ¶þÛzø/g=|ð'iï‰ÖÃÛ/küøWuXù;äŸ(äo/pn¶O‹¹ÿ¤�¿ÿñš€ˆo^à|ýžœ¯æì÷Ò Ûÿú·¥ÿß–þ5Kÿ·/p:ý3Zúÿr§S¤¥oæ'û×8¢Ü„¬è„¾ÜU#hÔ˜«êemºWvxËŸf=H�©INJ÷Ÿ^Ü¿ÇàØ- &/ ó¼èÿý2*›�qoy÷x—‘¦qô¸¡L¶&SZ]2?”eã·/qyÙŸ)²z*Äè›/ªY5Þ~ÁW5ã§¿ùƒÖ�µÆKªñšO4Ù�A™·úgòñøc"ûMYŸs‚ùó…ðü³F^|ŽˆÅ´ÏË�}†°…ÏÖ•¤ŠŸÖ×læ»uæ“4Ý€wÄè‹õkÛõ¦u¼^gi½Á=�ÿÌ=7û¶ޏàþž}›û[»;‡‡;ïöEgJ‘è¸ÇîûÏQBâ)ÉÿŽíðwl‡¿Jl‡�/@¹¿bl‡Ÿÿæ)ÿæ)K^2þóò”?¼ OùñExÊ�ã_žà‘ø§á^žÙqô‹¹-##%ü Ò¶\¸÷‘ÎHM5�æ‹Qj-rãz.:MEÿy™3´ñx DÝø7 šæL^ש“õÃVgå/ãªýõãü?‡sø\Ò�š³ðe çw´ÖdÄ{m§ÍPÄ?»=ì‹ }ê_ /à¡=WàÒl^ÛÞÈQ<£§"Ü!Üœ›�ác �¾®ÀXÏ ûTªÈáóS.ÎPh¦:þ3¥ŒÎt‚zœÉg½‹ü‰�ßxà”¼Ëhºû(Äú#­æ#ÅàñðQ¡ˆ¾à”M9d³Üõ¬ŸFδ®œö/íó¼÷Ï㎛¶þáZ�5™È.€÷>ƒn<�lÝ¡UkU«DÊC«\Ö­ïîȧ¼äÜþ¾}ŒbàÄîâ 72¯Dhç*Øtm@B&�Ïa5·®a¿ZSµ 7è¬ÇpÔ«>ú³¶žÑ7"c` �uãÊgÆ…qnœ·Ægc‹÷Ý„oxhûŽgÅì!#½µ|Vœ (d¹¬ÐÅ4+P x›q\f…ìYE�–—.ã_öYiÊkÆŠø8¥ŠzQOH¹Å‹!{Áˆ7k�WƒõtBkÄ» úô‰uÆžo‚p° n´ï�Î]ÙÒ+BH«Yç|ÙœðÊ�Ð ²N³[Ä¿¿5&n´õ™½¼r±øb‹•rkK™ˆ BM¼0Ê€—.Í+{¨—ë;'E{òo{gAxÇœšHkg÷ýÞÎöO½ýõ�Ößð>×ÏÚ‹G‘uʸó»qPq~xŽ•ÞX\Ïa7~*P—•_DÓöoy0“²ž|3�°æj¬ŽBµY?ôSeâ`ZxyÁ1¶þÃß²43-v¤ôݸqÿb—oÀ\ Q‡Þgzy®¦·§À•yîÄÜýë-…ãRºé£Ri+ ƒP'ô!Û<îê¼o±íe§czŽ_ÜßWõ諸.¶{' n_Y¾sSº4G§¿Â\�@Ù(°í˜~àÃh›çÁQð6€îxÀŽh§Ô´}@°ñíÐ ÎJ;€Ä{‡ß¿ûØ{¿ÿæ`}s«÷úýÑÑ»½Þö»ƒÞÖÞfïýáÖܦîåL éê¡5ăê^Äö¥óÞ�]O/§æ«ëý§Q?tO\¡;§k#ú‡)üfîÉKF#;Pß}ܦDAÞü|êÑQ¼ [Œ+w‡«Õñ;*£Ð«\ØÑE…�Ó@3ð©}ò�WwŽ /×Ï`zÎ�n?ŽÆ'cCû†yy'˜y“Þ/0??ú#¼ÇM@�!`Ï¡+@û‡{ÚWŽB ¯‹«uX‡®½ÌFnhWÌú*¸’°Ÿô)*ÕOàNGggNHžŠz¹^EÒ‡5ìz0~ú$…ìMj~?ˆ\\êŸÕo�ãj÷þ~Z­J£úÖâmϼÅÓÚ´°Á±‚`Rš[+‹ÇÍÝC@‰Gß®¿~»µ9 ȥϤ#Ž`G"Æ×—À/Çd¬qaÃÝ ý…—p¨6.œþeYŒÚ)�Ëú¤ïÓ%�—/íOÂ;Ì\e–5” `–ùyNR œ|7E2A€wKÓ¢h•õ;.ûN-RÀ^ùæÝ�›NLÖ�s–ãÆò_ý4C�8¯ª ûY*yyæ1_)œ¥ÒÎ u.fièc†J={†Jndäí¦óն왪mÌ2®›YÆõ›y@‡r–)8æ[Ž'fÙÍY¶|}–JW³T:�¥Òå,•~î£D!ûWìœfàœ©·\ ��'¹£@#â„aÔ>>ÖßUB¸O´n׸rå�hRÓ–gz¢DQÕ8_1*WÑ9;É…i*ò�±[^}x×ÎG¢@µ.Ô9sàƒâöq¦*àµkwà„Ñ6«}oô�Ÿû]½k œ¾µƵ⺠p’$6Û9ÓºÍW ë4*ر]ÒQC‹3Wª�‡ØÓúLOÌ$~¬¬aE{ÓH gn¶VÜ ~Ÿ gwuË?Ö 1ögË‹X‡ÈÌ ìpð– xz#/ÕW4(¡eÖ”ésí•|C–õi«‘m°6SSë8éÍ+±}Zñ\ÿRc®ÈÄ–ÌØTÁ—®H{þôAÌØTÁ—B÷ô1ÌÖRÁ‡Rpóô1ÌØTÁ—™Ð\OÊ£,øž$¢OÆ Í|ÅÃú=½û™*øNº¤WÌ^öéCyd“-$’àÊ•4x~úÀ¾ Yl%u—à|jðîDüŸ™¦Ü^µ¿)*óuî? hÌÚ|:é.Èéá ºáÒê‡×3¹ÈHÂÕ�+Âåïñ[]yáõ–\IÙ¾E…'/VAKµ‚O­F.ÅN,ùãË wFåsTÔ[ÿ*ª$â…§�þ1íå@›“NS(¡õ é“�©\êø ).ÙÏd‚ D9}),ÎDùPAJ®qSWNM§¶¸-£B*½Ô(ŠI´‡ûFB(¡‹˜ˆ¬<@QXW h´²zõɾEÙ�0«@?ˆÝ3—1ˆèëÊ, TùÆRX4‡¦]i‰fÄu$Ó¬úaãDí&R�Q„A¤cUµf¾ûXŸ(¾õ�ñÑLZø¶dJ�å?#&sªDô]éî“_*õ/Û¥4�5|>TX‰Üß�v©V~¦²!—~·Kö)°\À[S1aàv©ÅkÅÁ°]ª¯ÐÓ Çñûö01ñb»>”svÎX/ëkÀn•졵[®-/­êFˆ?µÆ*³[ô²Êî%­ |J¥7Êž,'­½æ¯�Àë—‘@‰Á ì©�Æ�Š9ìMÑÚ$[3²7×Ò!jß©¯ÚéŠãÜJKK•þ &:ª™Šfä-……¿ò gAØs@lz&ècÜÔ(³©%hËñQ©×¿Ëì`N'š\Ī/´‡;}swý¨·¹³þöÝ›ÞæúÑú³‹JЊFÖéNRìøpeÇ›Ø,�7)¬2Š&£XJdxý\7¨c¯g_¸öc7öÁÏ‹‹!M”HH/r&(ÂÖÂi0¸ ¸ˆ»Ud$uŒDÍÚƒÀ÷DÝ"ÚCéè‘h~‚ía_кŠŠjVVù�÷úSðþ�ǺŹo¸öô31£ùÚ¬Sƒð¡©-!yó´Êœ4î|l�ç÷t£<õ.UÛ˜ËïÛ4›1‚ø]{Hž%ˆ>L°&Ñ�C�€â§ŽE£~ß�#F×}®»çðzÊ6‹Çû�¦ypÈ´�_~¢Æj†KÜETå:æLÕø½ß�LjðV*¤�¬Ð¡/µÛ•çôÒ¢¢Ô�wj‡•øbtuÊÈ�S»yNÄaEP"gý&ü‡DÄ'ÿ‹{¡ÝÉ=œõ—ûKÅ=p¸ åV…«Uó=óý6¾ôû;ô��ûâïÙÌi~7î ¾h—®\¿¼Tý§QZ©V‡Ÿu¢È®ìÏþºo{ýr­Z½¾)UJÍYÃõ+£ãêøá3,JÉä?Ògì©kõÜͲ%,n4M7vµ¹ü,+Ã.Âg^—çl”¯JA“é5™vH¹&|Ͻ*ÏÛ,_—ÂF3+sf¯4ϲ2„ä+ˆ´Ÿ¾ÏÐ_ƒ¤%6qüU!e´ET3tcJ‰ðŒGiÇç:)Oj+u@°%¶×@iìU`âç>¢ãÁÀclòРjèé8®~Yá´ëËózqXzÖûò',Û—78aí®ìðî!.N¨%·P{Ï»_Þà„µøò§¯…眥—âI« hþ' '7Äf-šÉI „*¡ÙÚ¥› —Ë›8)TÌ?éY.Íêõû,4ž;(Õ†ŸKÿpVð?&®rØaCéphϼà¦rÛ.Ù£8H~n—˜ÈüÙ¦ºzO?•ÏÓZцp„+ ¨ª´ŒÿЯúsžLuøO?–ÏÓÚË�K�,ËŒ‚N”| râÌGË²Š¤R0¯b©ÔÞùn0yŠt±Ð Ïõ-þžÉÇ4Ò¹ ã™öñ{`ÿÜ+TiÀŠÎì˜Ù²ÞŒ×TÄ4¼h@E¨ áÀJnWWò9šëµÚ-Úµ�Múâ(¼Ø²ânvQ�avA å¿"pŠåŒ%…‚oݳòœ£³¥?„¦%-Þ‘ƒyéÜFPÿ¸ÚMÙ–Êv•_çN\>¹†ëê ŒÌWwñøÄpŽãî˘?¸Fm©XV‰ª„âmÝgÚ�;”™3±19†h\b‹ö\5·ÚëÓV›/6š�‘JÇâò>aÜõÓ^ ,u“0Wû€bÔú4˵"EOJ¨$§«�¥TÅ'aàµ5þC§�ËZ�Tq}.v‘}DvÝd‹'(¯d•SSC<4ŒØä Àè ´ExòB¥uœB%èD²ô¯ãžŽ \ùçÆ»Ýýv.¸,ÜÖ§^пÌÑ«*]}ÃiŸÒ³)U±‡¢b€ÀþEêª5¤p„$òü… X{¹¹ÜL9³¯\F§½ƒI–m}—"øƒŠ7÷L¡#J¥â +Å9$•Ûv–Oˆ‚Æoþ•Ç—WÙŒž ä‹”qQ;GïÆ‘¬%pªx/þb^!ïAšþFX¤¸Å¶p½v�)=¢r# ’âð0—&7cÏ ­¸”ŒÓ×£ýÐ�bèO¨˜ätH7Ê,Ë£L ©wŠ•þÀ9Zµï¹Wº3¥¬óqѹ[)@~HSBñ7šÚ»ær#+Ö²nÆŽÏö¨hÜÂ;¤Lº?†¤õqªÑ»Ì 4Ñ’ëÓý$ÜKèl8g™YÂUßvÊ©*V~ŸÌ>ÐHq‚|ËëC¾”â#SxÊÉýWûIƒBÆe@o—³»ì¸·—(òÔùø“é¤Ç.œ&Ê™áYèt¯g}SP+Í÷Ä�ÿÊ) dý Tp”Žœ¢Nnѱ”Û^ÃÉÃg®?Êmrùeˆ_üjƒõ¼G/ätá›TÐymùYz2 sv*º'‚ ÚùŒäì:ê3²-ä°(Ù,Œ˜¡Bµ¥gøs©‰qÉ/È’¡¶¼Ìèýó&ènËî_ügäŒë¸Ë 3ðÙoûúõŒÇ7!ð¿ÃÞ­‡¡}‹®]ø îïËø-mB†‘@³¼}:R§Ágæ¾ÊÜzœ�¥|�øF9dMÁË9Úé‡ïøx$þW¨Ô: FÐò@VËv4‹ªëxÇl2°0¨©mÔÆ3LޝÜ�QõŒûòEÀK3U‘ùÿ²�%¢æ«wŽMÓTJ ÖP·­öÂ<\i*sjBñœJV¶¬|¡žÏM£†Ìá(º(K?,^ÕI®Y">+—aÄŽ¸ Rm‰8PVKø¡fÀöK�Óóž}"ïÅä*(7âÉçºLgˆÔ¦Jpn­%Kã'_¡‚×5FCäFÅ£֜œà!w²QLÈ�° ý ø8Ç„y�=-cÌb`#’M±p]çÂ"Xó6àò½7½ëoßoõÖ76¶ß£ÈÙúLwäy�äpçnìp€è—�€ÊÕ˜l¼gºz1¶;E¼¶º„‰‡ná§é—Oážÿ̰]µ®[¬ô3”^SéÒjMðѯ†lb`­»öÚ‡ü”o‡H©%[XB¨ófÔ l@ß¹6±aîN¤0À¥�ÆÜoŠ£)±}ÖwY& :ë ܳ³2® R*hnV‹Öhä»xä ׊Ë~Ñ ÌYkî·õ&'ÝâØaU&�}ÕN>˜Ô<ÎQŸaô±ãENI¶w¸ƒRu†Ç\r’rÿX�¯è!Ķh|œö÷%0#±—“bNØEXȈ'_jÙ�/ºÙô»qzƒïÒã³à~Hä?dó9åã7Œ-vÎë£Kºªíó…öçr²dÖÄE먰ݮ7¿QŸuÀÌ�2ÏÔ¢Âòu¤™ö` ÷?Ù(sz‰äµè.<0èýü§ö$‹…7ò-„v3R—I»d}èãÕÐÈÛC©õ2¨ƒŠÏ|9L[?Šs£øÒùpe»ãD€¥`ζ¦¢Ñ?îb2òmíl®½;8|ôÇ…qµ&“ÆÕV;J ÈôhŒC²`?óœÏxyÐ�ŠÜ„(õ#ãFd*B¾GÞ‡êm£ùlqÉEï=YÂN³¦äoèÁ;$“-Cִ̱€ð”ªÙ™XaÒ˜¬ödÃJ4z4ª:³ì¥Ö lUï]^m‚ï®D=cŠ˜¬.Bñ'xa8Óz5¦ÆAOBîÎ,ý[ÉKËGÛ}†,=l¶Ž”XÊ0N‘ ¥º>êVM˜2"x$¶f¨›ZÑ ó_~Lî³6—`È|%&šz烙 tõù–»V›q4µ‚�I6˜™‡Ãþ{BhÈ´e L ȹjÄ*…š�›¶/å脎GÞØó ’¸51«ÊCH ¿`ÆÞ—1Æ#€ãÀø!CÚÉa#3ã” ’¸O7Ô�¦9©b²Ž<¿2€®yŽ‚œ #ö_x† Šýœ›áöͧ˜SÁ½¾éœÙpQ³´NAheÅåqÌÕÉPˆ­=ùr”`n#v6]sÓ �3b×Y3`Hñá¡cÃUL—gT0�?ùŸü\]üŸ™¾*É5^á—87èq}aƒ»\ç*Å.wEZ~}i/TåjÐW«!Õºú«FóÙú!�«†d€àl3e™!ší úø_Æ(±ß¶ñ¿µÄ^ª]ª®¥Œ5ªÓ•mÏ5e6r²ÖÓ¬N×Ù=sϤñËvýu&ÚwA¯¥:ÆÀÿå©Ëþåž àЩÄÈì‹Â^Ïsl)ã ó)j– ž»Q ~\Í¡Ôu⇆#_²4ÇLxl?~~ÔãúgîçŒéTõiÝ$·ì�=²n¦éõ ÌRjýÚ“ÑâäÁež+t/+vÓÒÿ}­Q½x~.Ž’0Mfæ¦�¯·bSÖ(û ¯—äZÍ-^Úsù+NÅÃàFb¨Â·ªi¯¸ªÄÈ�¢)H â¨MUÄ€à:‰4­2á•—d¿ßO߉KhºØÌŸóÅJ]Öµ†ðý&Ü¿7P˜Ü/Ë:ÓÐ�ÒäÛésÏ\tù°k ¹‚ž0ĉØÓ†È‡É¬F •-—C«€õwˆ7±4b ‡ò–Æhj×/‡÷÷wc¡tÙZw§·hbi·ï06æëÛ¶fÝ´­ÃÃâ±°uÇÆéíÒ÷I½O¾Zï“•Æ4´Þ„¡ñž,�ÿÀòV±Œ~Ð {|�(Ý™j¼‰2+f©Á8v¡Ïf¶.Ž4âã´zC1 ðr›”¬2È·¢²¾4)l–ß΢XO5×9ÆÀŸBÕ.ƒbñ}Έ•ÕQ›¾�JË-ö$…y Wº1ùúÍjgrÀ·¥þ&}±Cˆ(`l;Bˆ[lybÌü 7TyBÅirØ4HŒcUqÌ5þC3¤·5ñë”û(¤�×à Ôë …«7h p9pó�?üóŸ_æž r“ ¬ÿ×Þ·÷·m#íþ>…¬Íf¥–btñU^%+_Ò¸õmm§i×Ç?•– ›µ$ª$eÇUôÝ7$@Rg›÷=Én#Q 0¸ f3Ï‹‘âåävè†ø/G@=?Äßñà0¸jÈ@Ë|ºG#ú ºˆÙO§Y&ƒ»eZcþ…ª aò}šXÀro˜ÖÚZ¬>æï7‹7Ø’±9Ð ËÍШ‰ à™[u¢¶Ñí´–â¨|²'c° Q;ϨGî1?)%êd¤¿c�»“’<[56|ü;š3áÿ�‡åä*àÐÇʈàÆàòwy›]‚çÄÛÆb÷©t)í¦Žx¡mÛ#ΞÝÉÏ4 §‡5Šnµm2:Ã[ï§öèn2p|:®øÄOSFÎ¥ÖçJÌ© ò*„¡8êUÂØ’À�ÍLã*ŸïdÖ¨Ëì8†‚”;èáã�x'ZHîeà é*ŠNás*ϤÜë.^¼xC ˜—.mRö�T÷™`<¹ÔE*^·yò +€Dä£lwÜuû¥PÎò`°OF©ŽB»ƒÄ1¥žû»Ò@bòHW蹂?âäs-·§z�·.w í½+…¢¢µj¹©¼wOMŸ`ÊPÐH”¹Š»ñ;Å'‰Þ›ËËÖÖTÚžHÅT~6Óî"êØ�ñÊÑ‹TüM,y8�èØ BrÊ‘9 ®¼=¬³H¸i¨ìb± «n¤).‡’gH×Ô½�¤æÂç�À“¿÷AÑ�/tÎuÉ«;‡4ôg7ðöÈ>%ÜkÕì;&éÒ%9g±ð2Ú kƒÌÃLõpÏ!Ï‚$ßæfÑø–wðjˆ<†é/Ôc˜~ÖÀk�Fsð?#¾O–ß>Ž â,½½‰ 7uŠ÷Ô�YOr8 [¦�!Ìÿ|�(«\ÌüXúšÔ–)ë½ÿÂp<(Þ�I8Ëá9HnvΑ�K{z«Ã’í¡{çÑõ|–ܼµþ¾­YÞJ)¾H—ÄYi¥.H„žð2ãË�Ì� ‘8�è�Š´W’‹§œ/±§áêÙ“à��¢§€d/Š'–¿§NV*‹ ÂF¬¡ý oª�ÛuÉ›U×ù‡…D<Ý@Ÿ-™¤ÓÓSâ.V<ºQRÁÐjÖdéLä‹Ì‚?û:YYGw˜�œ‘4Œè’<2ÊÈI¹Cáþć›–«>ALþì¦q¯êôB!ø’‘•üôŒCDíi‚3”§±WðÖÆÜ1JQÑœ:¾BéHÖ†x¯1/ðîîˆ1O¢&Íçò£¤3=aIF ÐaèIh{§¬lraæÏ=óüÕ”&øÄÛ$�ófe]fÉ|ð:ÿ>O|ÌŽ:âDµ˜gvŒVþ˜ì—(0Ii>²­ªGé¯`‹¨ñª…Q@MH"K¡A%mó0�Ú`ˉXª(öœXÑêã�j�ÔÏ´$ó2xàG¬ÄQÒÁOºVF¤çàާ 2…Å6Ï´ºÆ»ÅtpƒP|¤5uSÂÂ#É0ŠðîD•iÈü Ù˜ Nwx‹·Æ±`×$¿ÔLjè^¤ÿÓü‘rá2þ1%?•ÔwÜLbŠx`kjëR/„%Ú¥5€¬O}­i¤1W³¤–3NRby,A­Ë�ƒ.¶±òÐfZ� “¨“xõäö2¢v‰fL¬v›LiæBäßa½öÁ>=üùðÂâAq1²¤ Êò’â) ¥æ,]”5jò:*kPk“Ô÷óËýö«¾\3érã%¢ ÈI©B˜¯..îl¼òX8z@<sÔg~úú”Lp…}‰Bž5€ÊPä)Ëê WnÑ€xä÷Dö ʘ&ƒ�`î1›qG=ô¬Yô’á”uµta£Ç³o˜ Rþ¤(OÞïш*ÁŠføý›Åªªu�§Ðªkò¼çE¹Iâ� Aoì¯ñºÜ1¯sþÛÚêVŠ$BØfÌÕP<�Ñ2ºdBw5—õ `Lv’¨²tîC1g£Í*sxú×õ\§P’+¶6·ÆŸË´Ï CÙÈü3R�Þ!c®êÓ3¢“ºÕ« ¡z·Œy 5ºg,D¨ÏÑo#Jå©“œZ76·àŒzÊŒÖ6àî²SZßüËO)©õ¿ü”Òµ·ž5¡xæjÿ«f®VÿF¦N&Ôä+õ LǺó9|ZßÚ� ‘ŽÍG ÎÇ ‹ ?輜¦„è&šÍ¢~ÏgT[È"d´‰JÖ“?ÁäVÍ6¹1sF²¶ÕÌÅ - k&H qé0nmáwá ûSùˆZIֲƂc†X°hÁÍ^«…ÞÁ¿Md�i²çùBdÒ ²î †ÛÔÉì5Xú%FüÏÈ'yç“oM|ôž-^¨xÓúal•b#@Öy¹Rãpm‘¥ô8ݬ!Õ-aaÓuÿ _ÎxÌúe‹Ìîõ!�Ý‹gKc¹¶_(ƒÌ+çE”76£•G>¥˜Q4"ÍbôY  nP½i=Ò›¸í”UÆRìéÒÁFÕµ˜û²Eû†gíbUUB¾�x ÂÉ"�öo;·3çmR’Å*—¿C®°í8çÔìl�¡hYT,ÔÇшxN Ö¯ ïaÝøð3$ª ×°K]–,Ï&#­.%º¯Ž;ÆwUœõ”Ë¥hEYL›×¥!ÿª‹@…~µ|HßËBÚ¥Ãó+Ü �œÇOÔ'/¸á $B“ýè,ÿ8_V,²ÈjÛeqT×vÊd™­ºñx§ìÑ]O]Ïþ‹º¬Al%nÌݜ۬—æ øÜ€EON �÷t�oâwQð‘à¾òpO1ПØ@GOþóÒbTݘ�ÉFþµ€2ä¦Õ]O%³þcZk!{ø|¥D€G¨>±£žïRcÚù"ˆÊ°Ê^±ÜL Eo$^är¢…òs®{uéú:y ÕK�°Ì)¥3—Ê't´X[2Ý?%–ü¿ó‘¨ëv«t¬ý4Æê@5vm¦g·¤'#üS�žï„ÅeÅaá—Gh“°dnÆ­oYõ¤û[®= Һ³“@¹6:åÝs v.m)U À«}êË"˜º÷ël =ÓÁðXžà¢W4ú�˜·•™Gíøn Û‹ye�¨½øn�ÅC™Ó=éåwÎ(1~î‚ã—ê�Q³FKŒß_l̼Ę9íÕºIƒ+2"7¬F:vKʼ¼£�Ìj!¸´#�kâ`'áÙ/…:O ÅZå͵\L;¹ÖB–wŽn-€AÁog„�,×ò,Çò­�Õµ«g�U÷€”fŽÝž 2b°ŠâÐá& |ÄEˆ–ǾóŒÑ-GÀ“÷Ý»‹9Âc€FuPo Ôg¬â.èƒÄ&­@ª•ýÞc1BÞcÏ&$ªnåTÚ” �éµÖ˜‡Xkù€FžBÄÚœ|L×~òyÏOòi×?Ÿõ´¿¹Ä•åY89ƒ9V’”�”?g·�ø�åA§mRWÜÅ)‰õÊ ÂS¬>Â-÷…¢[óD‘ŽK2Òîq¤þ>MI`æ‘CÀºÞL=‚X^Kl,¹×D¼o7b…1ìt ë¡H¸×ü�¬jÆ›xƒOÆʈñŸø¦ "² ~ïѲg#pÙ ¦’KˆG� �opЃoÂÉ¿wó4‹ïÛc"(õ)¾Hæf¦j;<>Žå N½søÄB– 3ÔGâ™så= ‘ÞL´¥x‚©ËïDñà}<"Á?3ÑüT»¦W³L {k•‹g¦òÍ‘GÄ+ä’;±"U,ÓÃêIôxš±»çã3`ÿáOU`Z±ºe¯¹àÉ á#Eèžv�ñ㻩k‡¡oG.Ø»·>rvÉ‹„TöžJvêk@2{K¡>*ÎJ÷h|ZS;`‰&Àƒ_»Û§Ò‘eŠ>Ô2VÌDcuѳT¢Œ,r±5áõû˜Ânw÷Š”™0wŒT3wfÄJä%Ö±nÝ–ÅÆW{Ã9Z)•jp ìÂyü@¼>ÎbiTŒ½Åbã8´¸˜… \²I€ØÔ§äŸ­í­ÙÐ{ÄÌξž÷¢–„ªXaÌy�e²Z«©a«jѱ7.EÑ–ˆªÂ"ÀyîÞíC¨8äJÞûÞÐ@‹ún*-jQÚˆ†šÉ ÐH‘æhxÂú§÷d»˜�údAüsks»,ÏÀ’œ’Æ"šE‘ò.æ¥]ã8¼­î–!’”HY‰a43â5Æx•¥%ÂÇÕ…a¬…²"Ø¢V½JIÕÖüú5ªT o«"Zma·llÂ<6|¨•a1Ÿ=³Ä;Õ9_«’±=Á»xsLb&¢+<vÛt°@PÛ@ëåÙÍ”²÷g\.•®‰|¡Óxðâv�íô†îè�F²† LÉœr ø®ù`žœ_ý:—Ì#9:=:i[£~Éþt¸wùáèðø€gRbó1±Ò í*J™rµýy£K‘cÊø¼qIÑ\žH…£¯âHür9|X˜pvѧ¤ßC²ÐQŽ2ƒ<­íwsºÏSÓ§<5ýš£ŒŸ§µÛàeœ¾#�}uÎÞƒ±ˆR\u`)óø^£ÿ×,ŒþÇ«Çæ�¼Uô+—Ô2B¿›_Ï ›OÜøÊ Ñp:‚ë6ü› kïá=Âëñnâ\²›ý ÷vŸØ~à]jJ¼M,g<>Ÿ¯ÅJ7þZ™»©Ô™ŸJ]rT¾õä}ÈÃìsNZ¹uzwˆ#íÅ]ìck_“~âA…"Ä¡Eò ..5Ñæ�'y†@YÕs€׺â½jÏ¢çø=qk(¼jX€�=àhÿ÷N€åušú€&u‘£'Çj'&Q à �Ë�}ŸÊÏJ¤‚Òÿ H¦ƒ”W pÍ5®ÿJ@Ñ®&TíÉKÎw¨7�ϳ‰ Tª·K«èwìžk® 2T©±üÄÉ+VšËøqAp�j�LB¥� ™I_™iõÄËÖ�¿yÑL8 f:…˜žËhél:³ù@T3VÎ&Ñ”²K̘Úa³Ð¨åYáÂ&옮]° Ê0²ƒxó6“,ø ?¤÷{·‡§AŠžŒÚ¶M � r_‰Õâjü�<–#®CoL³§H8éñß©˜ž(�Œ ¯£íêfÕ¹­Ähßzƒž‚Ãß'ä(r%fÛÕO2 $'ê@ …“ó,¹ÇŒgaðã9)HlåÜÕ°ʨ–8´ %¸½¾1W V.J�æ=,³¼…ÝoOÉù…û“hþêz> )¬ç<�æÂ0­Óº]gÀ‚ÉmþÊÔªÀ"¯‚Ó¼KD­˜'‘Àõ0k(l@R‡êÜ Æ\)TFjÝšgömamh6oQß󑜛…îÃ�¹ùœ�±)ˆg²ÕŽ3:ÆE8«�Lùw·V7­B½Qµ µ­«Pµ·×Ë)<ÏÄOuIÃæï¢�UåŽ!cDlÓºH‘Ü™ÕÙ˜/8#O»H”ÊïÍðsÒŸrÌTžs4Éš›#/,E+ƒHøeVZ±ùЂ’‘‡<åÖ¸¡Ü~®¦ÍË�7,çþÈ¿Þ4gBýÛ~#/a)› VñÑ€8¢³ß'A6AväaêÇNUnQø„ØÏ»å—{Ú.†E(ÖQ#'LÇÊ®­DÇõç¥J±*›qL‡ÕOŹú—ïh;+驤eÊNvÁ&–GCkê¸fª«i‹‰jUÓQklEå7õ^Áâþ¯ähÓ,H÷×ûý-ª¬$÷Þ ÷»Ú�T­é+n»8Uqù<�¢²|ÕØ“EVƒ-ù§käš ÎÓhó0�Fí©;ñXcϰY|½8äÏ¢KX%ÚÖFoÒ¾Ää}’®Y˜@Æø¨Ó xbÀžÜ£Þr$ÆïÍÒX�4Fǽ:Ǹ³1ÞhÀß9; ÜÇ2‰<™ÏmÞá ×·Î#˜E]Ó)—fÚç/À[$j#ê66„8§Å'â,<´«hy sT¬ûZGuT_f¿Òlùb´@�m < |[-±øÌ¾-|×…÷’è¥Tc¯c±Å¤Y­f%]R’« oo KÖ*Yˆá§u?Ϋ·–?ò5ÇN�­•ˆŸ/B"äàÝ™líÅèˆÁø­¨!›&¨(|¯+Í|’&­£²Ô¶HJn�mçvsÞSB%'«UY"äü\šçõ„ŒøU–hÕRúÕÂö×X«óTÛ˜{ÑJf�=5›ÜÖ\ÝúZ,K&0�XýüÏIÀ’óý}lJ´~LÙÒ}K‘B«Ê™\7dFä�ü °‰P´;Ÿr¾`§XÃ<ë=ù[›[[_Qãµ(©ïJd×ÉJ1•äh”Cz1?T’Åù®3�9Œ$È×¹p¿2Á kµòY.Êâ¶›í…d³ùš¢›f{î�¬:š´(½Ü› 9‘F¹±S]¡•FGíR ‘|a)ºíŽÈÅ#¿?™ö[°Ö½»JSÀ_êÛ´ 5wã2:q Ã2ߪ³W‹ << âÅšSvуŸ\—ªÖc›)—àö¹ñ‹ßøþ¹9@Î#¿ÑŠP¹T-ß�¸¶xùï -|Ü%ËãaÁo@_s®°A{Ô½t¯^~­ ÉsßHÁ¿/oÈ>�fícÏ{˜³mì{¿S  9åAßcˆÂÝvëºøKPä)+9*äœ=§r& $€FÄö�~q0� ¤CwS±/4x³—;pm–­cŸDñ•¦÷N°‡÷)825תÖ-ûLðA›Ånï�'iªH†‰ /V´¸lrBrì»ç¦Üo›ÿZ*ÛÀ!Ç>ÅN@½+¯dê²ÆR¶ŸÜðþ˜äö8�jƒ‡ükPºžzxs¸£_šE„'Ï¢ß~mé�1~@é¿Ó¯¸æ~ÅÞA×÷}'”ß\‘æQ¿f<‹:- ð1ÊË]AØ&ây‰D1Û C@) Ñ‹ž:uÊ2¯ÄËGSC�äEaS\nMþHÒ"gbýÃ>Ã�×y¹<<© o\Îñ$c³9ð6¢§QÞ¥Äàõ¼—‰ÄŒvIŽÀ÷ã<¡„í…þ°/Èl¾\žoíæf™ü”ÎØÞï=œ“%»ò€Bº䘹ÑÝ>½Ì¾�ê¶ÕÜ2UMè™·>Y·€¹ÑN¤æw‘BÈ eÔP"M Y9ø§†–hÒèÜ:@}ÝÁ¦ž ÚÖ¦á(—ã.™®%Oaä ùI€I ýÏŠ|ÉÙ­ª$Ý ‹“¸;Ñz¯ÜzŸ+Á½ÓƒÇT7«m�8`T­ûŸ]§žVH¦¢ò›…æím£â²lgUí[«°,ß“«zÑ|‰úu?&Qxý|V&ÌàžÂ^®aäXàM8BF§Îv…"dø*\:dXø€�ÞêX…À!J´ïö5²¾½Yg–‘0ÇØéý‚b�(7õMøkÔZªýzCQݸ3Z=2Y¬nM™'$Zf�ãEZ”VÝ×ê$W‹�¾/8´:/ŽU·wß�n“Ê-·½‚ë.Ù Ekeúí–Y“•îô×áï‹wˆÊŸÒ-guîè•åÀ–ËxÀ<»åQhè´üzM76šm_eÃerªQΡ:ž�Mí1TÝ(�í‘g¾TÀ]hT uõ¯¶oÒÉ©SrÕ¯Å!ä‹X:©O48ç|-þ™AO•£õ{IRì>Šùâÿ õ×wÖw2v¤´íüÜfû\Ü×-É_sî¥òY!NñÛtÔwþûÃHÔ%jû+¯‚·x¦f]ßà÷¦5ðµ©s²,Ì:¯¤˜ ¸¡0ü~us³–ŒYyWœV7š‘ kÒR-Î/Növþ&�4ÿôÂ�ÁQŒ¿WÅ}YVD–�¬gÿÈÌübõâ–UÙ r‡BÈÁÜ‚`Ë<,]ñ3bÙ(ÞÄ«gi™êó½ÏͳÇoãøÍÌ XÝÎú =·ŠÜ‹�VÜ^À°•9•¼nÛÿ\êµùck­†ÿWž±¯¯"¸Ž„ˆ§ñ áë×±; q¿ðÚ; ÙÛ/—®oÊÍ<({MO…7s£˜âI� ªG õÖžÜJRp½'ûì§wr�Kqð¼!T@’DKxz\=•Pƒ³%((ã?³ÀyD,ºŸ[œ"x~‚À_!(‡6>zÁ‹Y‡3¸¤Ów…ú\�[ëÇ˳SüÝÇg5¡AB´)×uSÈPÞ® U™hÖ¾w\h–øA²I.QX" Ž?@%…À;=�å/_Š×7�Zeyë§Ë­�Ÿ�„UÉ5£¼¹¸›Ö\9ö½G½½’Ú;a-ƒ%€$6‘Õ'ÈÏMõ#ÁÚiì!_÷u¤½žžÒÓ» °#êú�EZOo¤4Mtf˜Á뇎;P¹A³¬ òC’ãMR9^’ÛEmȼjØŽ~àÜjµ«ì«-—þ7¼\`<\¬“ÍëIf7–;Ó8�¨ß÷†CoD[³ÆÖ‰]jÎeOùeûÚKQòìY»�Ìɇ’C¡¸^¸ìz­æýØÊÕ/æ¸ · ÷÷ßðħ!‚%`:nbÈãmÝ}ÃC!­Q7HY Û�â:˜+±8•‚ìÙ‰“ÀÛoxç±Äic—ŽÁsÛ(ìÊò}`{c9HF3*ÐEã�^Q €«{gÔÀݶ^xdH¿Êý³gC@¬Ç<% ¹ên½Þs$¿ÑïDb|Ç3±í†qh^ö ÌsÈñøo­�çÒ)•JŸyG›ìûº‹i½~½¦C�¦¸ÈôYiTNÐ=d"žÜå¶ï;Ïïbìß=w„EæØcž·‡÷X™/ù>žÏ+2@¾‹ Ü|µ\üŒ�€”�€¾|yn›ÏíûŤÃOÝU÷ÏmqÞ?·Õÿ týéÆÂO!õ Ò*ŠåJ1»è™óyNéPê»®7 ö!�ò+æe³‡î�G×ó™· d°ä²T$E�6]’eª®G2Ï`¥Ôãù?ð×–¶õ'CÿŒ—`�™XÆsù g4·ƒxéèVÔ!ó/FŸŠ†o‡n‚2úô[•WþÔ¾8ì\î·OO�NÀk.ŽÆ¥î\ÙÚkïÿôñ¼sqxyuvq(~��Ï�žótÜQn›&c’<}úÞÏíõI=p‡üÒÞç¿{öÏx {à­�çsïZù’�œ_œµ÷¯Ž~>ì¾?<Ý—›ðzHª”PoÝœ!ò¥Ç b•­Ã‹‹³ LåùÙŕ܋)Å{“ËW¡<ïöþñaûôãyT>ôÝa§ïP–#rz¯ßñÑÐ{tj-ÖBãu–sä�€ ‰T¬¶ž$>�]œãq¾ŒˆyrúXï~áU»UÄ‹VB…¬]ä ·~š“[ƒÕKáZ÷ ?UÙm‚?‹Âwœ?OH‹”4²Ût)Æîåß ïI¼¢‡nñ“.ºr‡˜3ÖªUf ‹‰LœMÔÑú÷”z'+ ÛŒ¼§(·_ø¶J �!®Ï/cöÛYi3amKžðÚƒêZQu³$"‰ŒJi:p1÷oÖ¬ÀÅÄS×È>ðX//á)¤EaF«Rùûf;Z l9Ê£øÄ-Uq†²*a_Gíëù-¬’°…Eâ{¨µ”M•eÛ¶lŠÚ(i]Àry7|›] 7µ&ÄWmë’ KÚ¾iÖuy$‚ýuŸnîi|e–J gæ§“á-®LkN|Õ bµø­žèÖCŒ=ðÀ Q‹ÝÈþàà.ìÈNÉq}¨< &c2´’ÞͼѹGõé\$emé§„ù‰¥®BôÇÕÚf�Y;D Üñó�bÅ`È;ÿ,±öÛ­ëéoÈfñ»ïŠøvîCôœ�ë�‘9±Q©øÝVÕ:h8Ÿ+Ä{Yù<$Êm' Še;¼G£Ò‰}ëŽz¥ksg§Qfɶ=„׈‘‹jÄåuÏï|ÃɤÂ?7ñÔÆ×³5 õÐhÏ,¹dûü¼³×¾<ì|¸8|ÅH‚›fñMq&YhTã ¨“ž–öÛdC‚±¸=,©|ô‘Ëx³èÞ� C4>5ÔJLƈ£6ÿæ>?>…<7”tBLÛ¶x“1lÃ<îeÜàiîïÄ}]8S[ã)¼¢‹¦ßÙ�å˜êl*¶k®âý1ÁòÇ+%o™¹X”÷[–(vó½Ì»Ê$—#b­çeŠa"GT`bé5!h‡`F §¼è6ͤÈ�í>ȃîŸHRhic¦Ä„æ·Zá;fÞ!ǰ…˜cw¼Ð�í4­0§•øüçºõzÁ«-‹mÙÞÞR>Þ{ÅÄöytüÂA[§§!ûç£ÃO­âd|ç;=Ô¸£‡8èñPííÿû�aÔ£Yé ýåËtF-"—yoÈ!ñ_wJÎbéš|¶®°Òç@RKI ·Ìü,…– f(,ýöjúã̹­@¿YSG3;vÜBé×£h¹Ö£Sª½gw¼Ú{WDRRngyéV¢ü ½âµÝ^D¾Do$Ê‚²¼³•!WN8ó±ÒÞ;|déÄã7ÄÒÏx„Úd"•·hpOÖkd’•÷TS…nVl…#ê'bÄæ*ÕZ#,,ˬwÒcnýt[Sâ*Ò !ÃuF!L² ´y4§38‡`Ú‚”)Tø_lt'XØÅ:õHùÍr­é=Ökᘜ©´qO‹ÍÑl%yÙÄÑn䚌dâ·½•KòIÄgÿ3„žO]ë2å®3yýsò ÷[ôòÔ�»�÷Xvï¢A�]ðhŸ&GàêƒÌxš¸ÀâéµÙ»:�o¹Kª˜øámðµ 'Âë×i–ݘY—ȉDÀ‰"oéwMüLe­µV ñ[&Þ/àÑ%7(Ó{¦C\žºg�“uhµW>§)¶Þ‘ͧê¥E¤ÓÈ|ªµŸfßï\|ÃÛ@b€òEzoœÜîï¿á~ï»÷làsAç³úÄg€�²G�äÑÙzšv-NöáíV­º¾½±µIÌy^ñ—ÅÝ.Ë cP�V¤Ç"RL vºÝÉ|^QïØ»3\$^ßð¸{ïit9ÀË�Þòp âÀ»Û÷4öUK¶ûV³¤j3‰6…À,MiòvöN>[ÔêûG[Ørø�Z¶¦ZX¯coV¤Zv¥Ï¢À.Iò�]—ßî+ã$k…êQÖ^¸OÀméz âwÓ�Ý`Z!­y"—¯âìJ¹úø°�^^µ���N`o`Asü ”dwt‡ã‘çi1gXV Èg ¨t]|S¼±ðœ.SškÕ™0ºkõq6¯ ÔàC�ßFNX.M{áñ/3ne¦3HHFÿí…±‚1gç]®Ú0І4@òƹ¤ Â/ZÄô"¾ÒcUÓyßb«¼ ÜÑ�kŸüGK KýúF_ü€®p0ì3‹TúTAsXIF}g2 ¯6©�Ayµ*Kzš>.Iv#vbõñéšfŽ›f±Æª�m¼t*íÉÈôvnšu¬LwH‹øÌôWâ3“ÏráŸ9àl,OÜJ£uM.ì–#ð³ v ÀøzM„ùÒòØ9\2£ ±0´Öj È+Ýý«� ІšqÝ$Aù¡;ñ¦æ ²�¶ŠE‚=ÂÐp˜Ù!< AE¥"˱HŸ¼Ñ±3º£¹Ö³±R^ Rèì±$\ä¯l~±8�Ð2¤–´(*$×*—wêzÖ Ñ;ˆ"éRžÜÊ+~»è�À ÇxA=°§ ï¨d_tËÁN˜³¤÷t¦é²Â’ã‘£›üGÿñQ&ŒV#µ"+e¡ +±8H¨YQq �çÈ88kº5�s̈ápŽ!‹YbIc¦åxŠ:B] |,«°…­%W2²ÕjôNî]IWe® á½ï=±Ó�¨r†S?¶9ñ‚E‹Š�ø(¥we!–DbT†”¿ærs®fò’3ÃZbÕ1½^\ %÷Øøà³ð½OªY*ÿ³†ïŒ‹Ú*BQÍ » ˜1Ž�Y3DçR.\n•S⻃t‡ZI ì|t;´Tb)Ö0/aéyXü�Ú >‡õ)Eùù:�w§¼‹xÛq~�O„XbJå�ײBÛ£`1΢NÉÜÂ?œ³ä‡%í�5‚�$áœIÌCWÙ% í˜jbq®¤ͤó ;ßè½³»Ä„M*y÷ŽGŽx½ÐR!Úþ¢™"[lUDK‹­8_yë2NÖ…›£Í# ¹<Å/Ø4%stjá¼´".©—Ðx&Œ.–ê]Ù© (êÞ BH ¨¦:°¨Å’S‹c–;O 9M�ÐÔP•‚ùC;=?zr\´¶ ¤£K´Íòc×SÒ‚`Ȇ컟™s~2dVÞe†ì­?•7ë½�Ò×­š…´×‘eÌ9èÒëLüA¼ŽÀÁò,ægýñ˜sðûÜsÀ‘8ñ,¸€Ãid< ~tÇ`^ÜÍX› Úf=Ç)xŸlZE4ý’ín’ætyîIsƼôÛÆõ—Þ¼„ʶcý™Ì„M’j–¾šÕïJ­5S¿k ³s¥š_'390¼ãŽÿ�*”§/"ÝÝn WmÊÆ¦>r0eh«ôœß³½§%p­‘›åÙÜT?cñ 0š ÇÞ?Ý#ß €6‚f&ê¹ax¤õ$i8AΊ I% ÒN;€’’5K‘D£bL:Œ:I~W‘íqr4'°F-ØY⥯ʵu‡SHT €‡“BkŠÀB¯i:4m‘ª‰Ž�5\Gçvà@õI¢•9¬Pb*hÈRMãKÇm«õŒî*â9¹P¶ª¦ƒë‡Ÿ1�ôB3¬ÊCáÜ\Ièm¹ƒê7>'–&q³¶<ŒJkHƒ.oÞ]Lp¬qÁ1y ¾”àXñëì£Yx44X ì¥ ?ùHÙbí¥Éíåêß!’WRRä’~8N<ÙüC™k©Ã57ôÝÎ-pm�‹-r{<¹…x¤ò2â .UHÌÁ)µåÑÙ¢Ú`oe©_ 4ü¸ ÐçWì*E–„Ùt­—ô¾¢œF /&.DøÒ­{‡?+ÅeƒøÏOj z lD fÀ¬z�V_È}ÙH†Ž"i¶NÖ\CÔS&]ÁkÁãÀ&áwˆWu¥ëú]¼(ÉûÒr0±S%¥^v4ÅÒyäx«ƒ5dîy¤WÒ ‡ç·žã÷"E—º“¯ìJgÎü!IÕ�d@y¯¬j”—«&òr™T ª�áS�Ž›Fû›KÝY�4;°)×S»M~+‹sŸ�¹ÍÆœÞDÓCi�\€õ?;£Šv²)’'9ºÈ�N3Ìyñ—àW3£ŽY›«_d�Î}CÂî+¬¢]˜ãÊ@›"G(p*™„î«°Öñü_̧‰ûWIæ5\ɬ;VS•Gy³Æ‹aøžÍH�ìŸOm+L0emÊîSU[v%@8Y(Ìâˆ×�ÑÛð•¿ïŸ�œÿýFŸ½0¥©¬P°\ÕØ(Cßä¢$—"Å�h´•¾‹²f—¤-•G U’>Ö£¬�_� <6õ,êxNš„¤.½šÀÿb72^’Oɬþ’¼BÛšÔ( žZÓlìüy¾¼•ø$¨%™ç^Z6éÓèx;£.ÞÞä&탋Î .W&¶¤ŸòН˜ `dü°¤˜™0ni U� ¢mZñ �n&~æxN×7$ ºŒEÔ^©È0ŠË~J?ßð€²ÙIGX?lpÙ”æ¬ðñBaIA_ITpRò~êæðš¬Üb“ÈÙ"[�D¾E%ò­‰¼KNHò%C"W(3Jä,ÿ€sIêÑý •Гí˜$ô¤À�^I¶Àžñ>]“UÇ:*T�Ƕϰ«h•xŠÁEGr=ñœ—08äòš�Kš)#Æ“�P ß{ÝI[ «€ô!4°O·Å©3õÐa�€�1ظ´pH�À¤{6´r˜Ñ»{àeqš|G8ïpAš‰…^$”ü�Èt­R2Ýu¥ë­¶$;45tê}XÎCxYý«F÷˜Î-*Z  Ñ°-–¼œË+Û·¬¶ný wÙTNIzQÆ;°A噤ÃÇ2}=‘}úßPÕàR T5éJ¾×\�sœ¤Ã¥_F<«g²¼±Ð•¢zI©°Û g¬�Ôy lý\ª-íþ4��šÚW{ì“ #ôåKì‡GÿLê¨Üûáw�7tzwê1¤Pàì¿{ö�¢ØîvQx>~Eà¹_L†Êk²ÐX.7VºÌZIæ?æüÆ/õc–JPÐ÷A¸È:)Óãæ˜žê <äŽú§õP¯”9KgzbUJY¸¶† ‘Úr·‰›^é§¶5ÄÉ}¾í.P¿™EOü‹ Åí¼?г-yŠ8Ö 8æÉ••³� @‚”Qµ3Sp!Â+m8nÊ�ò3–ŸQm)B_�ç—ÐtÉž•¦íƒ“£ÓÎþÙéU{ÿê²ÉmÏh6ÓâÀÇ–׎]Ñ¥Á‡úÆLÃygç?«œ�Í­-iv¢fSªÒ­cÚ!’fô^õÞÓ™?ìr¹\r©Ç˜Öïé%&=Ì?éÿãƒ'>¶®Uk§Jqñݿ޶è* )+]ö–´°´t�ìÝ…÷•Ú� Þè·¿7,·5^�n,¯Úb7|¿½¹Ž6¾sw£]ñ¶åqX‰ÿÚ¾üß°1ÙZô† {sŠ;{gø?'²=%8iá+�¶´P"#ìÜ©ä&fµñÜ™áE9¢™7­†Ö~.ÛîÈ% ož'öhA‡¯-ËZHçð5ϽÂqÝUÃUBìZ,åígì7%ôÁBè÷å-z9`½dg&>6äÆ3^‚*ÊN™wä<*ýÒ.7ù£6ØC4”n°‡î}§pHÝ{º¦³8*FqhIf ³b�Õù1Ý9®Šp š�¿¡ž^/¸.©Y]‚‡hÂÖ×�­ªp_¾ÀàÅŸr�:TIT ª‡z D¿bãxÞÌ ·~ZH§v*ΘmUI‡¨” ˆ% •³&ÝV¥9f XŽú÷òÁÿí0YèßyðŸFöϱåürqyª¿Õ Ѭ�më—6ÖU-wˆ•—(‰Ó¿ÛP’ mÍÁnY¡1�ÆŽß¼ùŠà±ÈÄ(ˆ�XfôŸ§©¡£ÆêJpP�lÌé°^"ÌϾr€âä�C@íÃU CóE®/Ü—J·ÊѹۋIùê㋼«ù!´_¹x¨Ý®¦ â}Ä‚¶ÇÃ\Yưï�tr�|<=zÿkç¼½ÿSû‡C|ÚiÎ ÿU‹ˆ§ð3]ŠñÁ ÂäêSp*s÷H ½»»bÇÈ Å”�óðà£c¹°1A\ù7 Æv¦a­ˆâ¸ò÷cðË"K¦ÅMÄ»sð{P‰ãäBÚB^WÒ}†)ó�§“"éÌf¦ïgà¯õBìK¬–ó¯ŠUG2 VB}ÒN¤øƒVZl�®¬ŸÝÀÅBàØFxîïéÞÄï"HÔ€^IHü„¡Á³AϘõ茑Πp�äû�<~�™!û÷,^b5�¤ëª{qš×ž¥AJs½«[Ö{¬4–géüìD «Ô´<ΨE­ç¤38àÍë&3»…Q5ø,§ijëø\¥ëó•&Š’¤‹Ÿ—x·h[?¶­îP9.¥³î“aCª—É݉À%ñØ#Ùd¨��Á©YðÑ€@³²òø&ÒW 9Ä!^bÔ«ðè~ þbQèÉÕ¶®‹¬LW¾{wG|°‡âÙ MŠ7Ñ gr]+|}9½ŽN+Ÿ§Ð¯/¢y÷ª`q½ïP <>,² ÞZV*þ¾\zˆK—W¬±Ë+Mèèq"­•¬ø³èÙmªùÖj’yÕíq›&Z‹†BŒ>Ð�Õ XQ¶{Š‰ÕŒ ²…�Y¢/ˆ».‰Õ Màndî™ W^姘ždüÌÃU"`_¤&E‡ÑEÜꛋ!ÎR‘šd'•L,)zŒO3^|ä<ÒꄳrDŠf(’­³€Íˆ¿ëš�÷µ„U£&�~Æ Çûol? (¿†È% ®‰¸³Íô¨@E¿fØÙZïvŒíi6” k2ÄCÒ0"ÂF¾ùÀõ·¢AÙÈÚ‘6�!ÍFìÍT¸vr(\à™1ˆ¤ÌeÂY3ô-ˆe%Ò-½ô=ÎÙpzÌjÃêÃ1!­¿%s!WA´dvôñ­Qû›Ö=,š IrÖ hÑ [Ö»ö/dEx§ÛF|ÔGX~$²!^³ !UþKõ©·Iö¬‘DÃÐw1í$ Õñ]³ø[€;Ju�Øâš�tÀ¤ù«h<›æñÕ€D¡Î�óú5SWm78õÎáÓÂᮚáJÊpQešt#i~âÒý‰X¾ˆy*Ìix•õrDRé%ÃÄzNr,ÃxIYRúÊFâm¥`[óýåßd±ÆðÅl ”quY¨ðG·žßC~³ywõvXÒí±Êš�Y«Vÿ¾«ó/ jõͤ±ÀîY³ºÁ@·âñŸFêÿŽÄ:Ÿ+œK Úfl„jÕñgü|#µCþ¨£PÓFNÖŒ J”Ÿ=ƒ‘š Àm”­Êú O¿+R�ãÃL½5–"-JJØ(ÖO‘=ôF.”YkUðeiƒ’·O‡ˆ¹Î(Z&{WU0©N8Æ,ÕýÌ5ó´lx÷�¾â6C=Þ1ž�sÒÏó6-&¿Í’Ab*¿|‘è`_hyöÅ\-¼#hÉo�ÀíÆªW!šê4`ŽCâÛ£ìâEøü®”9̤ݤE%*.÷ˆt³òåfVJñÕÇâ¯'y—Ñ)Td©Sa%_Äá�m‚tB·L.WªyÒÞ):ýŠ­\¥»•Sß1NZ8O²†/“Ž#½' k�:p(�“M¢‘s å/É>ÊS^:ô¶VmË [{•V ÊVY#p"­/D-ÍBç¼ ©øXßΈ.üó—/$Ql”³�íÚf‘}(Zd‹5‹t§YüÅfT] �þiÄò$ÿ9 *h>­Ñ;y.ÅÚý<4º×Õ”5�·¾77N.`óáBMŸ©ñ_-H)«)‡9�¯ÑÙL:‰˜?™;ª0!Ç¥Hd…5wéÃ"pÍ’Ilä:ìø©^jÛlsú…xE±³:½²ŠÏd›ÀÓKÖIÑ2¤*3j»rN¤CݨŠ8ÅÕÔQˆÉ¹(®WSa¾*™õùÈ„¡ LV7ÛsÑgª‹Q–¾Šæ¬,cýÌ×Móʑ䳇 ù£(BXp/ü­‡P u¥ç²Ÿ›…À¸=uFÚÁFþ²·>W‚{§ç=õ×Y# Åßúëøo#“âæ=ø’%èÆ,úSª†ãW ­,Üö”B¯@Á;,Þ%øpÛïöûå즨Wk‹ö–÷¨»ÞÝéuM;S’÷øÛY½ÖÎB­Ö½Ý^׫£¬ÌÓ½¢tÆ�·T½½u¶¶òÔ£ Ц¢îmc+ueÏF¦kp€•¬7çà›†V(ü> BÈúÁD®f¡‹˜¿–¦uÒC-ÁÀ˜R¥k‰Ò›Ä¡¶]ÕèÛUa~ø j9yÌÅ�[ÀÔèœÎÌYVúÎÐ<ÙJûwó̓Ò»Û{¨u¥ŠêY…ÜE ߥÆÞ¿CQœ ›7 ao‹õo¦íš‹clÀ½±ÓuÃgH!³ÎÜñÈ(U(ä–¾F˃³ ÎÀ½‘ ”@ZC’1†ÃG‘}Z 01¤O¾3ž×Mþq8—Ÿ*±¾§`KÛ¶��-õr.&Ž4ò/ãÜþ‡¾ïù($ðÑ!�ùHs*±ŠŠk°Ý£ofz3EÃý´ C¦Lü¯ão‰ÈøÙ]ˆ±C>î5môaØ*rgò}üÙ±o»ÔÌ×b(æG�þ #“VК"˜Æ&®¹ïuG)ZÁ„Fb=R6XOŽ?®[d°VÇS�¯Ü!j­Õ؃1B½V­Êâ0 ÿl¶6PƒÑAÝ­OœÏÇ$±µ³=óFÔÇ�4"5‚7�sçÐU�Û ˆƒÍÃЪ®µZr+ÌZãøÁ €,âvÉ‘Èø†¸¡ UØGPʇ=‹Ã]ÉøolwÔLz(�k{£2¦ÿæL¤÷3´�UÞ9FÎ#ÊÿN-I²jØ`!�W †¯¤è•iô˜»ú°á�;%©ï¿+�ð›hŽ©‘Ž¥[j*Är˨hw&­�òŒ½#OæþЊ"¯afÚ‹ÆoË*àèÑñ1ƒƒ’œ�½B%Î@¾ƒV9Í·£ÅRÑ:*ä"¨Rü‘É¥X­)à5§¬ ’bÄØØÍvÅ tÌ([nެ,#$RŒ�x;ÃV�ØÌ …Þe¾+Ï ›°øEfóÅ({ûò”+##%ë=\5a"9�æÓ]|> —ÈQ…ÿSÁúƒÛ· ÐàaÑבÇmŒ m†e-ôqC~¦Ið¶D'›äV·‚µŽ�Û¥�TÈrHÿf¡ëŒÝÐ`Rò7×5ãDÿeFUkû¤aºgŸðÖ¬ÜúÈyÀà ÿTàIþQÈy�ã“d0)=À¤Ê‚Èõô²äÈür‘?ó,ÂìÓ�ß–˜~26Ĭ3ñá¹=>bíÎmà &lÈ…¯w¾ã‡ÿN°ÊÑÙ¡ðñ vÒhÝîæÖéù/Ï1QbŸÕáÐdÿoÈ·¥/ѥŅy»Ôˆºõ ϽzkT¿éya7…R/ò0¸n K5ìrcj –Ñe¹U` hÙ%�ÚQvõº½‚ù7“¿Ôä§’Ïç™y¢öÎ;õ²´Ïßãâ>YôxW—5ƒdÇÕ¥kÌ%x‡¡7KsŽôQФ¨*½R¯¯„‡˜;³ÉÛÑ‘ê[›¶%ªßè\P†Ä¨�íg›\v_ÕùDu×ñ_ k0W•ã¼I6mp]Ëñ¶Ùõå<Yo8Õõ-]GR*[¨+QS:‡¥xëìÆu®9é;Û �b”VÙªfE´ý�‹^›9#wHÕ¤ëRÕúcl‡4‚©\*ʦHö#µG–†ÿþ<Àß§œï׬HŽ®5~)UËÅY¹lñ¸y7ò]¡õ¶Pü×x­¯²j¨²²ñw¨”ÕI»�߃ËÇ›²¥�»o"×T7­:�Þ}#½©C §ÿ�Íd_Š£9!•Ë>¸vX ’ÆSäAéZØâmÛF,J�@{pàçëÚM“}ŽZ˜V€Ýh½%žþ^Ë…¼˜Ä/^Ù×–r×+Wí¶-ù·WS4뼚ž8á½�‡­ç Ke;ô.ñ‚Ý•›efo®—g¿•K£2¹þu,¿¾cpÀM¨Àoœ q ›"¿~Í>H?°Ü8ð“ÈÍK~¤pËå]\ªä·¦p‹Ý„ä:3ë iÉG<�>ñ±)¹åÝО:­g z Ϥ L<)Ý{šìÇ÷ž hÖwGÎ`ð<õm¨ ¿Îý¦\§+®ªkòH�š£Xµ7Vr’z¡GoâWí�•ŽÏ^jàYÒs¹·¾B¦Šb(P}×ésC ;ÀR,»"í»Ÿ°"]íFÜEòóª.RS¯-%ôÄ#~¨ngMô.�àoä¥[òa6Xa.Ác*Ó“Ž^Ø1‚â1³ñÜ�»?+¸qô®6ji¦)ª´¢aªê‘ÄÜXH{îÀ1@c™:$ „w¶®‹÷a8šoÞ8cW‚_Æ2$ ¦ð\›ÿ ɤ7pG“ÏäwÈ"ôËÉñ\è‚�⬱ñ+½ÝÔ_[²ôà–™H°V#eˆÇxÔƒSšœ�Ο˜Ïw‚çá­7èt>ßû/ŽAhóÃà“ÂÑ Îvqʇ)œy¯_S‡D¶yœ\‰‚ Wõ|âýO¢×zvdA5€¡^ ùJÅå(ªžXÝ·ÕXFƒe~Ò`’S]LôGy,ïWÆfîÕ£ nÜ飈ã©,´±r¨\vº¡ì¿ÑŠU߀9¹—ß ˆ‰ –�§Dlø-J¤ÐùŠ{|¨Ò<Ûx‘ÈãÈä:k~n}üþ´Ñh‚÷O*“)ü‰JÒ =~nÆ2‘™äºìÝGI®lÓM…K´²=Vèì,O’VI縇;FG2–”0à§L$ô¨á'Ђiÿã—ûùKÄ&XØ|e@>5k95í‹{jÍ ¡°P7$›i êmžì‚»ž}pcl™¨TiáU‘?lx� œ³Ò¬¥*�ý‚h%½UáÍRñf”ÐÜÊ9o èÄ{Œyü*Ϭp�ؤ­ÄA÷ûæšd¾p�•.€žY“îŸî5ŠÜÜâ'.º¸²jfLö?¼«Âþ–«µ LÑÑ·Eƒ+[”±‹ (§¦_ ®$“8¤DAãM^"¬xvh"^aîÙ…‘HíÃÔ\ûIsÏNÁ2HÚ›9ƒÙ! 0‹HŸ´ót¶VòîL%5±¨fŠÅôQk©ã3‘891Nej-YO÷ôZÁ¨(hŽ IxØ8œå=%*:`b" Ý›(ÍFá­ÒQžL-Z¤l?c“JØÏöô1�ìñЬíLŒ~6P‘=W–gΉU©T­27¹Í–œ":#«b~ÀPÞgâh]Ñ\?Ú/÷±H2•šB¦F{H/†êèÚa9´mö’SsV«hW®ú°‡ÛÑÝÌ{"ZŽŒæm$ ÝüJ¦5:\æYlî4ï: %—¨…@þ7ˆYd%Sá„g|Ø�±€´&õiKª»8¢u¦ù“$?|†©7 ÉäuFîàõÊdKeÙn¦ÒFŒ²en]MO¯s¥+¦Ëà/Ûl@ˆÁ¦#’;!hÌ&6 ú¯•I�|úK:ðš ¶°ÚÐÆ Î!¾A…%{u@�¯P"—u»lLv'c]+Mqº‘—> P°„Š¬ÑŠe¹–o Ú¥6QbòÈ*¿gKlb+÷įJtÈ¢ŠçÃ/®ôÑÄËû-…mb*b•-žêTåð¹”Xlþ‰&زU5VVF™ˆÐ,Ò©¹…ÍÛgV‰t,sO°a#çÁ¶f™¯I•©ƒ¼-¡„7µ2Ìø+ɋؔaÒòlÓx¡_<ÒB5>}XÉæ#(™g�º›¾§AѾR3U˜>nì~&àú‡ºÍ%ÅÄ3ƒ<�„¯¢Œ�²:ña2‡ŠŒKøq¤üø®!20àËÆûϘ¡„ø(ã .h}0XM ~È/§�‘I‘m'PøÊ¥Ib¾@Ö¶`bˆÌȪjÙ d 3�B^`C¦;è ®Æ­ë`0ùÎå³# Å:<¦V_9â`BÔ“ñåÊv1³Ó=Ô0Qˆç©˜}ëA„1!XeHS76|]íKi'±TàÁb,XÃ1¬!cc�=˜@e‘¥f.�),³JŽê º×Ç~˜ç„¾âÊâiýŽkÁ:M[¨éŠy*~Ë%)�efV–@0F3�÷‘„ôk ]ÉHÍaa ™T¯ S1êÞ#>£4"�ÒWÄ&îiÝ›ÇlãMw‚®,VàUÌLž ˆª¹y:ªX0ø�Ÿ²+æü*.é š2Æ�ZÝB™ =¼hœn¡Ìw<:­k¤E �¶³%ª‰°ÚÛ†‚4� ~P¤`itžw€2Mü@_ÂGh/–Jä\s•³Øx¾!P+y¢ù…WÍqÐ�©‚çàã‘“8v¿é-ÃóïÎ�ƒ…×"ð´ «¥H¡^UDU8Æî&AñxaIÄ@&f‰œb|½ÐvD- 6ÏÐqÈÍ,*ÔÊlGóèhp<_—ˆhM­3 C/kÖçäFaL÷ô8ÜíÄ÷õ_Èoû/ŒVæ—=Ñ?¡l,ç"O²67øçôѬŠå|±à—0s-qgƒ•jüRù½’,fýãäœú§÷°ðè ¨ì±-¬ÔLF½“P«VKÖpWÀ?E`bz3j‹Dƒ¼ <êÃ@é Åñ/dÐ.m1u|ïÛiª㉛íé+•”Ø+ùzWK¶gŒ„ŽOH½XÕŽ±“…p!ST?í¸T:|bª"ÔjMÞú²§=Û%ØñF‘²ñ_ºâ[_™T]'}¾Ýß<å¯÷à´ñdî§´9´õkM½‹ž'†Âeæ,U|YµIGÄ¿§�s…»G퇛IÏ w…°B¡‚j YRF#ËJÏÕº¦Î€úCößS Pµ35Övü.Úv`TħN‡;€°ø*� }R/ó즢Áí#âQÍNYGX+`‹”öôvrËã3¹ýùz¯Ì�˜’¡ÔÛ©82JÒs¹0ÁnÆ ž#‡ûJÞ"•V§"j7ëýÑ3)sÝÿu*›ç‹¹Tò6•Ý4ÿŸ:¥(^«¥Â=“ÿ7§ø¹`�Œ›[¡õ3)_ò÷\&Z~� øè¬‹�¤—y® ýÌʵô>0­}8}luY6€òÙÒ†N«ÇŽ—*zoUAtbÁ&.¸ÑÊW<­3¶G°’Њ˜ƒ±­>?0 Ä‹ªù -ì,'vi xaXv$Ô>äw÷gÐÙ_5mÒ¶F¬ˆ¥�ÒBäªfãy]¯ñ ”þ^Ók~˜…ÄW.$²�"5"hùwš^nÊï=G'9¾ä$‘v0lG�/ô†×(ŸQë¿xËÁŠšß²ÍŸ¤…uЇҗí»©ë¦WžKû ÂdíMÐnó»gvVTÍm•m¡ $Q·D˜mÜ…I`Ca‘ØÎ-Ôø"8T·´Y¶ódáë êèœWgi¥ÒØÎ RØ~Á¶KíŸfÁ ˆç#°I¶¤9ÉôeY·¡T€@!Ë�YÐD’&,ÄÛ&Á¨[ûɲ0oCY©¬l¡À÷½Ü׿åP(Jø’ÀÔfÁß¶Â)|£Öf‘f©×�E|;ßpF›…rÛd.÷1Óþ™7O"lN#°p†võ wÈ:,Ž;ÐwŒ“E‰[º%K ïމ€ß]JèN/Þ£4 c¨�émE‡…çµ\áü, Lmæ¨5ß°B‡…ëÎCPšo†`�Rí[¾øë°àíªM0v®R”»Ü7uóEX$w–*!ë²Øí€óí¦Èí°ð…üäYôv½ó¿¥3‚o‡Å ŸÎµç…K›Oˆ�[^Ë™ ™ÓFj‡…a'·´Ç(Èð,­¢±Ð¦cáßÊwX¸ÂlW–ÆaѺ �¥¤)uY6lk½$–‚ºèE1¶³Þí‚ÝÁ=~Ö}ôòÍ›µËzgGÝRš¼Ùås‹]ß‘3{l¸õ`Uõ ¶óÕ rÓüo>©÷Ø€é-½1î±héY•µÓã,gõܪ°k�å¬^¦0ù­¨‹36ÀΔN¨:ñï�ÏXÿœ©蜳=¡7 fU ž3ÖC=ܹb:Ã#;ô”—#…ïÕÐÐÎÏúÎ�p&­A8ž±¶:³bs† Ïòg_ÌJﳉÿ²¨ñ$ʰ¤Ù·ÈÂ4ëó¾DƒÛͦÏ2k?Wó>ôË}’c±ÑÏ¥ÕNbºí³üÙ÷øí³~í«™IF&ú,öÁœ;¾ï³~ë£DAj}–aBäB˜ð`²$_¡÷úlZ/»0¦2åòRŸõt‹Ê—‘Wˆ �—­+�ëÂ<¡AÇw*Zß`là€Æxv€êí>KÓ �Ù¨Ïrp9�£¶‚uPŽr,Åz(@ó9Yç�>ƒKø%XÓƒDœÓ Âæ9Ÿp¬Á’Á[ëœ�ë¹PD½çì<Ïs½ðÕç€ ˆ,Ñ*<`£b`ËB~ÀBqà¬�è� Á2_�ÓŸæ€5¬HâÈ–E¦ÒŸ& XlÓ߸*‹h“õ*‚ån/S/2À€…êÀŠßrRƒ5ø€v¿±™‡¦«FÜ€uÈ Û®š.X{^Àržˆá‚µ×$KŸ /XK\oW¤lÌ^ˆUÉ–—¬¯óíŠõ’%°×¹²°2Þ®µ/YƒÊkf>P7,“]*«f‚ zÉ—n&5–ʶKañºÕ’*óÖÅöa0–kE�±è̽T'KgR/Y�ï½P ™"g_²Üp™ßAÀa3K E!+ bB!¶8éˆOŠe‡lÆ ZÅÙl7Äâ{˜G ¶¾Á%–†89ÏCÖ?¸w%5dw¥ÑHC–ÊB«‚¡Ð©ÖŒC…éù¥çš!˜c�ï©tÄr!¨D zÄrÀf^˜§]Ê WÂÊøSÁÍ›!¼M=�X¬�D¾I?$Žé i d‹ ù–xØÊ‚‡AdFtšeÄ¢zˆÕš*ˆËW rò»–aÐÞû„9bƒ: üø™²|62TºC•éSë˜ ¢±H·q6fÃhlÖ@À"Ù  %ÙPÓþ.]U× tnÜS³Ñ1V‹-i�Yzht‘“ õ í·;‰ Õ=ñĘ…+(”ËuÄv,WT:�YÜ�ö1 —±òÆg]D–}+«Õ˘WiQMX'N �ÒbkÂzf"-YjºebUÖ›Õ5Ô„õÏD¬rqDºWV)–ÃÎT¢VÅvÂÒ×d7éNxWúm �½ k¢‚{'2¶X†ŒõɦW–Ê<MT e±0˜°Æ78÷—¨'–U&®x0aI;É£ K ¤leã}"¬¬#e¼®ÙÈôËÒkÖý×2ת4Æ5¿—c*oK®ù÷–>W^³h¿ÆZÁyVºf§y�‹–��F‹¢ØV•9žE@I¶ÔòÎ EBzÓÄB¾â’°6• Õ²![„y¼é‚5mª«ã��‰ŽÒ  z­ò³Tø�ƒ"„’�嵞KÌzë†�Ý8 ×"™ Ê/„†Dú ¼!^e�¸›O]ò/$0#CiH„�/Ê*ªmC~M€eA=‚Å ÕºS²`4H©¬¾šž²È�æšj¯7¿Óu/µ²¸¥¡üÓ,§ëXày€äLx#²œæxç›YþßÑ"vÊ‚j*ô§m |ÃrìMd+"¬›oKßÔîA/ñ^¬ ºx΂Nãt¹%½93pS³ËþTŒ�¢›iï†�ïͧ™ÜAÓ-;å[�'êºå“„�ê[¼5—¡—üžtQ¹Ü²Yáèîh§[ÖŒÞN· O¸êî˜ï•M»Ïl Ð,vo•ÌtQÞ²YùVè\dˆ©7,-¼�å%±ÁYžå”�ÞÔŸc€Ö±{iœ¡+Ž?óÛ•˜ÖRÊT?×,»”¡`~˺GЫÒ-ó¿eÁù¶²·þ–�¡·*�Q™‘Óy™X¸åÌ@BÅûkåŒÝÜåØc…›"˜)ž9ˆ„§øðLcUî„üKЕ.ÅË¢xv/~——“ey>ÏÉ"42½Q©tùW¾Ëò½“éÊâ™'`!QÜ�ÕPÄÓåp<ËNÓ]o:‹ÝZ ൠóežVwùlZ{—„ƨôe%�A�é¼®ïÊd­�,Z­öhÕ …ªvþ´¼×èìÓRÐŹ†YñWk±Å¸S:7ªót&íÕœ¾tŸ› ꃸîÉAÑH•$^¸Âל`WúÞñB‘—œšº¢ÞKfäð:7Ÿyè�òçæR¬åXÞ ö)Yz;£›1xãZUÕÞNðQÌr°2Àu0AG(=·øâ¨áïÿ¬öÜç¯^ªÞq(/õÏZÅp{ΩF .Ú<äWÒ!¯WÙV ÎkÝݽMõÝÓ§Þ¨x!ÙPî~q+–T33ñxؘ'6©¨¹ÖGh¬i·Èæ<�¯ +9 |ÃŽR ±•šÏ%ÞÜ÷_í;÷»,nNƒôœÄ+<ø(]éq*¤jXBÇ#A)B¨Z0ÔcpÆ,‘­¨ŽåÀ†�eé·NŠéx«ì±zÕ6±xƒ¥^¾¼ÇB¢øÌæØuyä±~Õü!ë® e&õZÏUÙÈCíÜV=жšà‚¦’y Žå»ÆÍÄB¦‹5T;½~é#ÄF*V+ïAD�œ\…a¯€ôöÊš(.N9¡·ÓímFÒ ÚLÆo„Õxƒ¦†Êð6c�<©êa8ãŒ%YäI¾t¼kË8º á^ýI�ŠLy†×¸'‡xQÓg’t85ƒn/lM·tÀŸnÜ)'÷̦#ðt-8Àús‚¦l¦SÜ +çúÅ•¿ŠÞûrדhAº¥‹ I¾Púsó®^¹òI¼‡¿Oá;hë‚ù)ÁÇRÝ ú�’¬’T¡¢@ÅW ­…¢C…;¿ÔRÜÏþ^ =ÿFeKú-�›ã›z�ñ÷8J¦Z¯o¿ÞAlTýeúq–oá鵋JWÿ™ê“jÇ5zkqüu” õÚ–�ÉÓŽKm‚9þ¸ÊæFÉñWð û3'ÁZ~:Ü\¿9h¼`K„¤;¤K9þwjêíSþFM\^¬,ïíî-ä*%J¥Fi鸕Hªçf&ËLZ†ìcVíWÿÛÞ›v·�¤i¢ßï¯@qNOÚ“”¼ff¥ª«òÒZlvia‰²ót�çè€DPBšX)K–ó¿ßw‹@Ù®î¾sªf:mK@ Ö7ÞõyJ˜2ÊÛG/ …¨BE»,›r7c%Y™^eTCÇšµÊ®·+«'a…qŒß�© ŽWŠþ¬ÉÛ”€â ïÓx7±@k~”Ö+ÊçÛ冘þŠ4 sÿØà…Fu�(2ðuøbá~1Ë#]y�gx©¤|o7zG†üÌh-Ñç †‹—Ÿ¥Âg†G=fy�÷:t}+ Ì©HJ{ÀÑ(òfrjh¡Ð’¡¢ÊY±Ý(èë\]Æ› ý²³c´ÁÚð"Ŧ"lþ—Ф;X¿ªK^¬îÝ?™Fh ­i\øæu³•à½)G³u¦ @Á\� 7Å2 8nr<†J¨cm3Ñ{4d•Äë X&—Ð=U¸L`â¥×4Ba@¶¬¨©ÑìÒì&f}V›0&r*“ÇÒ|ƒÀ û]ªúÂ;`•g8]«ˆ0bâE 6õÔ¾ëé¼P*‹JNf# mû%°Ãñ~w*ð׬ ȶãíöÙm¼k=ÄB«t¨m)üÏ£ s”\Â|Á5óH»‰¯e½´Xms­8 \¢c)KôÅ�O£Wùfç€^Ï‹Ýè¬òïhâ;gV—ñÀ2½ß>úlžb+$í,ò™ÅÙuN¿I¨bÕ|cH‹8Ï—0Ép b¸ @9�ÿÊòb…Õ鈦›;~ên%^¶c3 -R¯–ù,^£mÉ3€ š®àÜ!(ˆ}úF”£ÒXëìh[Ûis[ó.m“—èPW1W<„«ª 3Ø·S|”ÕîWq‚“]òÒ·.óaYªªÐ† ÊÔ…“x“ Öו*ðš­ÑQ£/÷˜@WÀø^WÎË�6ËŠt7¼ºñ P}y‘Üu€•- 7¾»B�R, œtƒc°À´šoø˜ß68­\9Ú0‰Èý›lø¶©Þo]§žÔ|¼;ØØšßÒuf_»v;ˆ ØãT ºuÄ8VŠFp;²]¹3m–#"Ò7Š£“â<C|NØu0[»Ñ¡”ÓãQ€o¯I/O°ržÚ/H™DØ�-b1l”ãëªvŒÈ ˜B~—äš®j8dæ_«¥÷¹à]µßŨ»Ã0°›I×�| ‹”Ãàõ8½Ñ¿ŒIÑ|­r¿‡DvDmG“ å‰�ð݉ãË|q‹Öq¤ª¾ ѹãÕãÙa¾’³”AG—[Þùla9=O*ýP¶:ý\D¶#™Φö 6�•¶Hó-t‹vìŠÂ4ÁâlWÜ?ƒRà×׸�øFäMÅ6;Õ >†µ1(ÚÈÝg›%y&k!8¢Ý«ñΈf¼¨å+Š,‘/駈fXYçU–c4‹£Ïï`çÑIù,@‚x÷wçLxúÄiÕ¸ZÞ23´*º'ç“Vª •õÍO’b.Ç&¯èYxn>óù‡z[neæ¿hbNâ%þÊ~¶m><ÿ>„“¬æ}ϬÖvDߦ[�,ß§°4$‡‹º…㹄Kìèb2D¬›a49ƒ¿�OFð_�Û»CQNµ¾Ä§k|0}À�ã9OAE¢.Í7J#‡>µXP XOéˆE²Ÿ®\«)ëLåÕ/^ýŽ®�¶5¡ö\%‰âÊ7l¼h0­r¯.¯A’w-Ðÿ]zʵÿîz¦H¤vVèn�½�<î²äY¼gÖT0‚xµMþuØr�–f؅ۨئY;2�sË9òyø1î{O~g, 6u«ÇƹËrpÐ¥A^?º*AIw6=Û¤®•ª"/̨”ônÄà ÁùMa¨õGSËžŒ(ðNOËê\$Ul1J^ÉùØsˆ­ö¿û]¿³øëè¨õ¶pC/§Ê¶{÷ô»Ñõ{�Fˆþ0†ÃK4:½à�Ìñ›ª• ƒ:Ã')›‘ÕÖ*óÏÈò+R¿ ÖýUžûQÖ´IPÝX�Á´õJ6NRÆùñGŸÆ+BÊ ñ߇Û5FR4 ¢ÿbÙÖ¡cÓ÷ºâŽ+l¦­îö}¹�µŒW›–˜†ô' )ˆ»uÊ^å+r*b «ÜG—f_ï(žSÉ+ÑRù»�›Yí; ÊŠÂitûÖ+Þ,�¬ÍC'Ëqö·NÒù6]µ ¾)-™%kç@£ÛìC†Ä­}Ãkž]ƒÐjïHõ9<¸8&UŒ "䦆.Ü¢�‚€�á€Z ËFdÉ­˜G1&dÕQ�àÛ{l7º¨Ù�võÆ9/�T*�"ç$ÈÉÆ xúiÐWh!ÆÑ=×�Ur�^a</ì9f°Ý%€”Ç‘í,É„ ÜE=2HÞ¹q¥y¾F`rç£yý£ZôÓmjG¹ µ9†«^ÂÄ•ŒÛ³|c/œóÕ,_45½[íÛ‹`ŽIFW-Ñ�ÞÓOÐâÖ×Eƒº™’OM.°Ú§^ú>uŒukä9ÀH%iŒ*.ÆÙz»i‰ç¼õNé€Ð¶˜l1œXPB8O '̱_ñçñ2NØÒ l·‰³ðq¡}t˜lƒ½(‡KU;1‡©H�¬ÄS×í¤ûõÁ´^¦�9PÙ)�îWÛÍ&Ï‚yV¦ç›L!’`–'^Ø™A/µs¯¸ÈBtÎD‹Ö\#ŽkáÎuÖÑ¼Š£ù îÚDZÏg‡¦bà>Þ>î+|zWv*1-8©Wz+øæÝZ8_28o›ÍÑ…¨rÌxÒò’V—Ë%zڲÖ¡]uÌ{é‚É?6Óæï�ž7¢ °Í~S›æZÀŸ—`6{�þ£“èIDT1Ì¢ð‚𠛣GºÃTm‚ÇE–iål‘ zK¡ G¼AsÄÌ™¤Vª‰Ô,±ýj?~¤ UT¨BbêšÝrŠqÄKФŠàÓoâYºL7±}îÄøJ…ý¯(5)ニ7mvû@‹Â�ËÂ�?Iˆ~G.|œóó†o”sÅc©6&Ê ¬§Mø6C¿õýøì,¾U{ÙŸÅí{oJ §ûXvˆ³Lüh˜ÈG4¤HOÏuÁH–VI›ð³Ã·Ç£(Í*ÉÿÄ¿Rú7THQòçð‡•à)÷ç-i¨~–"iw…¹«ÔàŸl¥jeÌßã(­ìW\¦4Ûb¤µŒ9èTùì,P†ý.tâDÍ—?–°Ë¡Ì Í,†i¶ËµŠö‘:¬�ëW•\œ�CoÆXY7iÀÆ;„MJ!szv#”R ú¨z%aï˜SÎÃçt“ÞÈDpR^~$ßönjÎf6ui¹Îu¾Ý®èñÇiFp©=ÒBKÓçy­˜Reœ!‰Ê_ö¡4³ÍÚ8a%Ò ßª!HGû*×9’E‰'«cå¹g•ïû Çé¦Àû„çΆÈ?Û2Tô.‚˜Û‹®7° Ÿ<¹J7×ÛÙ.¼ñ$»ºÝ¡°àvç“y^¨'œóäùóÿƒþ*\ž;/ð?<{ñ\úó¶ðž,ý¹ ¨¬d³+ŸLóêÏŸ pÜ�Ù'GÚz ·±·Ñ74K¡‚3S[I°[I�é NÍáïuŒc‹HʼnÚÉ‹+góeRìÀq¿‚¹ˆOp ËÍ“r»†[ŽV} ?ƒ½c¼äo]by¹{½Y-IÛ]"Ÿo–¼C Ë™÷n‰0šzE*õð~âeop¸äüóœ:ý“X~"Ex¤ŒJÑFS$Rí^ç).J‹Øáãì ñ™b©²$ùÉßÏ1\µ¤³} ½ ÁzúSú™I‚%-ÁIÒżÐô7²ª%Ë 6:ÃÛ1 Q“û�96. £Š¬CŒgSÅ ÂÅ�nÁ†€ÉrÌóùM·Ø‚Š>“�mL0hŒ� cxNä¢u@bºÅŒ°‚º]/�œ]޽nÄ\w#\~¸*0['ÓÖË)H¦¸9ÁXвfÍ€ÒwQ«Ãÿ;ÿ™¼ ˜¬�½ð\F¼ó‰)+ÜŒaâ4žÀå�µ�™Kž¤1&�¬f®Dæ o-�4“�ÐÇ_¨�xo§Ñ™¨Q)æœS “;¾mÊn•fi p½E¶–Žêä0—™Y´–„.ÊÙH1‘º"Ͻ©ZÄTzÞŽ`�®³~às�*lŠzǯ‚|Ÿo7TRYæ‹ ææcýŸée|Ía¥>ñ’bd�Ž¾Î¿�C%¥Có«ƒ bo°¤Š ê#Cb†‹kî|¯äñ^˜J±@mG ~0�\žâ„^rm�«o°�j†H—¥NEæûŽï:¸¶á»¨Šrc˜fµÝ¤KÆ ‰éΛ¥™s–ð\昈;äÚhJS«  [¡¡j1/¶Ùåq½W˜-Í(cpš¹*A‰×’æªP«Ýè-Rî"ó¼ý ‡+å­´„‡„åƒ<@œÒO)Öh.K*ã.Sþ¸Š®Ø-SpÝåR*o�¢Z¬ ŠWæÐk°…Öãq¤Êé(ž�e~Õâ >+mEƒj‚KR¥ä“yhýÖ$7M79‚„|‰ä¢,SÙKOì1î•¢„Ï4À*<ÚˆŸ]ðlõÍP’ØQéE-7Éó¢âžÜ)A1YÂß9_m [ MÛíÛù…�J>ún†�×ñ&šž}{—ë ÝèÔ\§å5Ò5Kˆ-£s4¥3hkk"â�óÆâ�ËSòUlO‚$ö0ˆÑnt�{lžq�ŸV¥¸ ó†èÍÑɦç´P´Q¸•§æ(Í“ôÊ™³ˆFŒõ‹˜êæ�)¤RY7;äìEhâçŸþ%J (㔪ÐÅ`µ�µnbÎEB,2Òçe–8ÐŽõœ&)Ø‹wv®fyŽÆ3¢€ƒ°QÑ_UAÙYCýž7%õ Önf*§$î:oûgÑj�/Мì>­ºÔòÓU©²›|I�¸’Ü‘},°z/å€sôf´Ö(à&Dægød™|LÔ +ÚÉõ½³Ì=c˜¬Ã&­ZesÖvaj¶f%À{72Ý(ܯImænšl’šs¼‘™)TvQŠ0mô#vrã°þ¯0G‘+•ïÅÏ|C™»8[ »³k¬Ót§ÊΠΈL¾5­å&ùm›`jª¨K¨é�%îÖu")G6q�;7Bh�Xx+ªÏuÔ¨ÐÝzΊ4§ekl:üŽ\×7ÛejÒLî>òVSf#²ËKfw&Dôz¬¬#8rÐIúæÆÝí›h(TÝ«mOÔq«ý£óMªKë™}�P_°Ët–C4áÝC§¶È)Ã¥E–�¢P\@Åë߉9J›(J\;äÑm@‘Œ>aÌd.pÀ±ÒòñÝnÄ­‹Ïr㈚ª.¥Õ6VŸ�äj§Öº¢±‰žsœfÛ[ªW£ºªB�*Bž^@Ët/aa�ÝÓ!E;šÇ¥®*7õcÆ—Ã’ÆÈš'N€\5Íùܘ©Ø?£¶i véÊ7ã«Ü EZΛÖÂͱFˆà͈ª«Ü‘XI´¢áÞ¨O‘lVè�I¨7•˜8¯ožÖÝU ×H­·14ƒ»Š»¸b°ƒV–wêB§Ê“–èZYÅ.Ö`„ÞtžlëÆ€_RUã�"-qq—œ t²x#Rqhj Ÿv£‰[ [Ú3�z‚!gÏ]ðCò£Ö0­à‰×y~µTlÇa|-A…eÇE:Û¦V٠׸z,±yN·wA!�~¡ñ톲ÜdŽâõŽ ÐÏe‰ÆI:0i¸¬¸qñ¦±’Š^RiêN0õ�¾+E[[½©™Å�ŠÌº…�.-Øh¿‚3Yù˜< )u±¨l«®õ©ˆÛ�M ›³gaV€ÂÎ@'Õ¬éŽ^ùB=Ƀ嫜Åb–“�v}2‘p5õQßQ­çArµ´õ�B’)lï~Öš?f¸ µçfù­?L)ñd§°&ŸáRYå\µ›%ÎŽÜý< ›#?hw�N@|ÅdT4<ná_£˜°Ã�#+·n°DßaŽ,&!ÜVÔ‚°S{òûŽnžš =ö(¸7\žúÂu£Ãn0Ú z/,S†)1c‘�Áh¼nYÓêB€Jñ˜£Âú5SÓoÓæZª[³ƒ˜01›¼ìð‰�`t‰$‚B'‡O�´moþ ]Y¹Mh˜:�Q³àÑ'Е]·|3è"¬ûô(„´:'íh>ag]ËÖ­jww×ä¡-ZB •‚>£,TSÉ»Ý{bò+ßâRè¶ÐQ^¼ Áz g ØT­4$ƒÚn„�»Ú¢«Ã²æ‘r±sbk½R­Zþ1I†™/=Nî ¨Û™V¾¥S£wÑ£×ÌȦÇÆN")¥Ü9|Žæ’váïÏŘWŽQG™%|ìðv�Ê8ÇîS°¼Ü-�ukçÃ5Éò.¢x(5P6žoÿ˜'Æ,Å_°Ï)ã$üJ¯�|@¨ú m�9yAPýã�`[DÐñe¢ºˆ­áeœpThƒøŸ¤íšC  E*;Ûa`‘—��ð΢âá.ý -î0‘)NXÞ?;�¾=¾8ŒÆ§Ggç'£÷·sCòÃá4:8‹&£‹ý7º¥@ï)3Ùô]‚�gëÇ�c0Þ-Î�OÞÿ'£oðˆ—A+É2u­�¼Mø �  Še[+Öµ˜ˆ„çºýùçÂŒý†‰À¨ÿ+* ÙÕ_<é)ÿúD~7ßÉ8[xóÍÇ 47:Ûð'c/°ÈÞq7WEú—Ô@òj€Àà;©ÿì±ÙÚg4p˜Ömˆ_ñ5Ç¿Ñ UÚø“7ôÙÁß!ø�‚gRKCh §"ÿ‡wþËeÊEóÜHøÐŒ.ÞŽŽÇÿ1:�F¯ÏÎGæ³”ºèÕÙc×…y³Ý€¾*Ö ï'4žòÀ–Þy¯Ä5k+W0Ï ÎV©ATÎðXßž��Æû„´œèt�€€¥6�3ÆQÌôÁX&9w;W* 4‡VˆÉ"®4¶@ÝÛ¤•nKáx`µkUïE-®5_éËßÀp×ðO`ßÐ2HUºM' ¤5·ŒÔ}‡Ò¿>^´\\ÞmüBN‘;/˜†åH+núíR>!Á¼bÚ0˜¬6Êdàš¾‰”qYÑ¡BY¼g{É:Hw7ݵЇ<Ê(ß3*öX'ó'ÚUú©VŸµÛ€ñ—NÛdÞP�{s>v{HüÊÂ$~Ÿ"yøˆBë3°4¨‚ a\ ÀMn ô ‚N¶1ˆ½(ò t-R�IY“àM”б¯%ш ÒÐûÊ %Ûêºxê¹lxÅEºXk¸É_mÃùqò÷mŠ3ÀÎƒŽµ§¶ÆÙI\|ðëŒ#j.®µFbŒ¶à±H'ïöù“)Ïq)±ó~–¿ƒ-šÈû á[Á1vó#‚ÉG)¦‚Œ­³†4B¦~†(xª¬ 5Ž´£Þí<¡¬ãO§¦áMïsËó4û„-óóÁ!x7` ¶ÙÙyô.×ùq>| ÔßúÁ-oP+˜‹N½p¤À¼\´ìØLí!"ýôÈhâ©í+Ž­1$eÆÏ‹„f$ÅbSQB²Öûè!ŽHRÂ\ Q‡ð&xˆ÷û^Ë�ÓÂT³l;Z(]¶¨µ~5ŽFÊ”ÒÈËÀùAZšœJFË|[ø‹HŽrv$n6þsrqÌ\&­x@'L®jÒ¬u\€åþ}xÿë›ñÅáÞàÕùèt4¾:íÿuopzø,·!üçß÷ûãÓÿ¹çùûÁ/mÛí I±PçO× ð›ís–‰…ùÚ>0®¾ðóåCî3ž ?  ìýbñÐ §éºÄ‚�<•žs­èðž�]’½�XB1ˆ4ø:>É «Nžh£Ô¡¶mræ°ªT»À|vÚÇé”TZþ}˜gË»dCôn¢J¼,Œi‡y&°‡áõL[tζ¿ro¤½PwxLPY›Åç̓ŸSf§•”�æ/¦¨p!eð+¾Ö~׳x*R{-´4|cyÝás¦�+Ä&xóœºwNP¯ôËé�aÇè˜Àù2ßú õð-3|ˆÖyVµ¾¨Ño4YL¬o¿$4‘oR¢ßk5É ö5oV3`„œù)†êFÞ83Á4#,óãȆ�9«8©ñ|ØVèõ?>F/_¾ê¼¬j±Æã–étÞp_n¯âƒ­.N°|Q¹0Ô=V¡ò93FŠQW‰M¸ â�Ôƒã‡ZÓÓi†¬m[_êA¨‰A¥d¿]"ö<´µQ+�±{qv1:Žâú,qÅeQ¶‘7Zýû-¯± ÝÀ�…b­Õ,v¦(Ë1ûvJïãœ|öÑ�îü%z�‘LøÓ< q ŸÛîÇfj®Ã®¦aq«�°ÂezÅàï¿k/Ò½¢@Ðý 0°“c-×ÄU414ÜÀ®�¯�\ob‘©_;9uüÛèãÏ4º(¡ÜI´Ûý7N”,Ë�y‘LºÐú _UÕðâàek`‘cGƒÍáWRyãõo€�ûCn‡!ùñ}%«&Å7ÄDš]©±ß]ÙËÂyK®§y¥º›é•ÉåiÅCSKy?ü‘JøL«öFñÑl¬™óâá"±õZ¹‘dVZ3v3•Š¢ñɬ«æY‹Èu¢�jšo²˜qÚ'óK�]‚¥�`: û.'¼�P;= “u«âºv7è}2óÇï ^Oe-ÒV’ˆfO{¡”v uÊPG^u÷ŠzmtL� ÔQ¯hÌm“7nŽûjo¹ÙÖŠ„Õ  �Œê+ËÕ²>œå×—Ð�ùý~;išbÖ"c’ÕÛiM»yT>Öó…•s÷ˆÄ÷cgÆð—96[±”ûïxGH·aœÝaÿ‹­x!¾ÇÓ k|§ó8|Ö{"ˆñ7€=й�pÈìÛ /z=íé1ÁÀëœ%a‡»Þ‘uƒáSü�­Ò¤ßð¿T£I!S3™™JO#‡baŠ�x,æ’5‰‡Ï>¿¹.T¼qßÁn™b.ó)[ÞE.¾ÌQ7ªgïØMÂ¥#�õ~TIÎ[Ö©Ì&€ï 0 b4€­Jv°Îí´,ñ®†®±pF®˜F½ÞPží$˜ØØ·� qô–�fP�èÙBEÑl´'{ìá”ükÊZZÆ™lÄj£l™ÏjÌèTó4Ü9ü¬2jj‚'”—x ±€ ÉlýZM]A°[ôè#³÷T>�yÃ1˜=ÓòÊ¡iõ= nÕ—³·Êáù�Í‚âEvÚÀ}ø0K0õÍØ7AØPÈ8Nàzš¢ `ÍÙߪÔA˜µï)ÿÛįþÐ&\�@UV T™‘¼‚m¸]·¸yϨäl»®Üª9•„`É#–„(~BÞgUÜÊ.¹ß•Ž\DĬ´R¾N ð¿´Tð[R¿3÷ML%YêSL%!%Ps•)&jíöF”GÔ0Ñ5¢…Ì`Ùò¥‹7<››x†Õ>"­Jª«L%µj/Ò²ø¦ñÒ[—c&R&oùðézöå³Õ95eenJïäœýb@®q^þë ýN®4”…HrRMñpÜÔ¥+¾—¥ëu ç“e7\ºF²ó,méСuªØŽ ö�Ô¬ê vìOF”¾˜éýíòŽ 5‹·Ï‡´EÊýMŸiK§‚2élA¾ZÒt�4™˜=o-ðˇ í ÔRöÉ,õÈX©Þ.Q¾¢îSÙ§S¸z�»Nß好ۻ—ãÖzÖx„—IîGØ©?—f—TÀðû‹ŒG·¨utI¿½Æì~ÿJv¼©C1�+Z!¸CVd ½‰ 7ª¼\Ý¥|ý^RY_иk=ÙröÇ•&I!º¤§Îeu+ê¥ÈÛÀ[Z LÎ"¤®›!´›<•çì®÷>ZC^¶,ȹ]=S|)wÉ7™µvÛ¸Á'É^[FRnW«¸¸Û»_âU ñuÑ2.7h—úz›¤HÜœ´_§˜Z¥È&NZe¬×~pÞ\¶›À±®5Pùlxa�·æÞ3×fö;:ˆ?8[±µ�ü6«þm9ÌŒÏ~Ïå4ÔMjÁ;+‘QPŽïbá½²S„n1¹Vz= kmï~dªc—Ë;Ü%-‰PZL7Jj7õ$Z%†Àp…�ßÍán€âc\Íï°á4¬�Í×n­ŠÆ§Ôj� ã—)³a8ÞxËô-è[¦R†º:öOâÒë¨Fæ�gÈ‘M¯f¤G&‰>t9^ä¡“9‰‰«Œ 5�—ƒ2iàÍeþqz·"4x‚rü°vHžr�ýt2ô§(•„]ˆ• Ĩ¢pu:(‡\/Û™H ¦yQ¹tò-{Ú<çDùQ:¥RÎbKºÓ!"iNõ/yÉ¥ßo_¸®J^Î{ nåÝL˜Ä äþD"—ºaèéÌ|€Ö®Ihû=?ì*ŠEïuÍò73©tÛnt$;Wø™ éAײqPÍ�c+XéÇRq{oq“XS¸Ë·ûq6Uªe¿Tb`è¯îœîn�U 60ZéIµñù[“Gë  Õ¤:Ýd@ñuÑ ÎÖ÷ßéfÔ§  £Úÿµ‰¬öôä;ËÎÞÙ°lV©n�“°CÕî vßgúâzŸ=‰®ñ�'Ñÿ‚ÿ#N�'èòÃÍj=Œþ×îúzÝE04û�1À�¨°µœ±|ëŽo̾ãÓñþ˜ê‘´…÷€k4Ëë×èž¹Gƒ7èÞà 2¾(Nè€6‚®¿LŠÖäO{¾RˆAÐÃå°7`’øk—C^³½zTt{p›kwÅ·µFX u§¼ÛtÐoi›­Vüó{ƒÖòóqE�ñ£Þ¥�Ó.ÂÑÕsŸf“«ÞÔ0æK-Ž·<(VÃ/R2Üø�߇²í Â<5:>=‚Gå÷qf*.üo°ns¶‡NU 0·ËAeN nóÁ™½a­úù1î)<á=j˜#¢E¬û#ïa‹À&fÈôJ‰—Ø Šm(¡¨`©Á¸£“;1±w#úì:žç…f‘ã­Åk…ykÊÓ°'qÈIr6uDÓ ve2!¢sÜŽâ"i¤8†Ñî5®ôu^bdc›â.¶ÌÀ<Ùÿ\ÇÿÎëèbz;ù›>ˆï¶e¦jyô hoar©£$}™³êW ßo)Áßñ£¬vÄ&ö2d`×›øF-«xW˜öÇ—ÂEåøÏ÷6–Ôýy”ç‚ãD�KÚ,'+êi�wʦd�÷‡ÓÉwû¯ã?bhâ»^&ŸlÐLœÞ«­gcçßT†qyTx¹œžŽ¢Ðj†Êï[�oÒ9¾ò€I[ûÚh¡E¨?ým§±;‰¸òÊÁaïÊÍ~ø:œŠƒX Á`ÄVhñ h„«Vm©5RfÔBqÕ-]SKFpýCÃí~ |+&X(°Ò?›…v#æMô�ô¼4Þ¦$.¿#££6þ{´5á;²þᢥž“âÜÌ—^�òw¢v©PM#þ3÷-o Ûf4)UͰ¬ZnA ‡N2®/NžFÕå÷ªé¹~vm ÛÕíšUßY¡n”±—…3,5ýfLB‡CÖÀ…¶‘ä®Y?eœXÎÝR©i°Ô Iï¥áâivÓ0­\Mf·È KKIHEAìªý8;Jý9D£RŸÆŠ q#º"O¢°ùEì-, Dw"ŸDÓ€-käÍ öUJ‡<9~­·çÇvWöK‡ä]˜Œü˜¸}tbQͦy°ót/�ª±%§n‚«Í%þy{‡«HÿZÄ–góí 60çÃ0ì W/ ‘˜?©„ËÓ$‚œ8k'­éxRu;©¸ô.‹U0ÐïòQiq–$ÉÆó�Z±ȾçLe/¨—R%‹þub‡£Éw˜ê£ªât(Z÷`ï0Büy`(ÄrG —Í©c¢4tÏb�zK5$¢�é|Šœi¦Èݨçæ`:i¦pT =Bí°Tæ1'ˆ÷Mêá@ú×!)6ÞÞ=]oõ؇øÌÿKk½Kò«n½¦\÷� mn!±�E3>¶ŽE?[üÛ&PXµX¾>ú6ž…³>å$bD‡´ØdKIðROxƒ–Òé4"¸#bZ¨ƒU£ÖU. Ô ¬Àv�Ë]²ý[LR+f‰Ùêé5C©D(³£V+÷ܾdÕ‡ ³—O_îYR�(K%cZ˜Z&iœ$S°'Ä]O1ó#ô¶W½1ùG›Ø)ÉM V3a¶aôp¼8[ío´ŠZ¯hÙi!�ecƒ×ÐPšFدMÜãé6„„€P1ŸYäi³KŸ A~³Ý!fr|ÇÚݞSÜc.uŠ¿ñÖšœç²�^C4ø/štÑé%¬…ß ¼Æè0AgCø5d %ßi��~PG1�ûH3ëÜדÙÃg—PŠe†÷–N°a™Sg¶¥c-:ÞÇ7P]Ú&ô${F`sˆ‘¢(Êf~X�Ì|ÀN@C’¿75>܃–"¼a|óÅcåÌ)¶é'Fÿ´þ1Šû 6ød‡ øvпéÍ>‹ˆ4—ð@ýbÿ}E¬SŒZ|c4'Yå�Y±—¿Ò~Ó¥�§RZ GÏ,gžá§Ynò[´U@[qù�Æ–éLq½µ·¥ò8 „h΄�gšq,QšCK [mš‘cÕ–[WSVÛÅ™j,5ó¨;ßk­¹�¿™`C³5ê•Qû[›®cb߯úOyûìq;I÷º´¶R }Wç6v§ ± Y4†Æ˜ÎWGérαav;üóDÑæ„¶)éÐFøÅyGê´¡iTÍ ¶M ?tF¥0¼uÐKúÚ»*�%îJ³áÈ3ô·×CiËÒpƒW5ó#7ÿ§èc)ÒÄ�^Öª�áÿñ~b'àò×wp\„ôV>àJïl®§šç;5®£-Jߨ^‰æ[é´ì œØäS6Ò^\cV&šI 7“ÚmÉnŒË%þÚtoœºotvÐ!ªœTè�‹¼pb�·°ôó�¯z}xä�Z>·Ù„/é¯ð7ÖÞ…�0‰pGE¾b¦¯6Y@•Ö…bé?Àsÿ[µÁ9wêCÖÔ¦í}�µöõC«`Ó8ƒ;3Õ ÿ�u1px(mƤ—fkê–²Ä9øV©át…ÿNûc»lQ\‘ÒÉ�C¦HÒ´E’ª1‚F/]o ù°jü/æãjß…²Ú¸:wçËúQ¹/a(áJ29[Ý;œH«º’4pÆ’C;ëÐm;¢_Ǹ¯uJçWåQ^´ÔóíçÖš“LMJtÙV¤'Öã ØÚx�…ΜˆÌqb%žosÎmº‘æ…jßlS£ˆÜpù$-WH¤Híá‚&TŒ£ñÛˆ ƒ¯(Î0S°ó×y'hè²Ä:¸ZL"ËaÔ–¢ˆQÄü<ª:²ÏúÏÆ[ŒJ ±T“¼LÉÜï£WIL_Ì#y3˜.ÕÑD/õI4å@K½îÍÖ&šá^„9_Þëm›W IÈð¶G(`U7™PÆãz=¬-~'m4†®©¤‚�^ÍGöµK¹ÈqÈô¬”= 1£À Hhq%=áŒu•®ù7™y$Km •Îm4ДÇ*9Ë–~ž1iMIœª@“¿[oç=1“øÙ^1U³‰ qãyJf­f©$‡™•¶¬9-ñrë�yÅKŽ¿¥bÿ|Ù5ñS3í³µÍA….Û ‹Çž\›½† ½ã6‚Õóþ-JŒIþÓ3)à‹H¦:¿ŽW15+»>¢|†0(êeU·v¬<±l¹&‘çn„®¤>t ­^}×IRãºÐ»„ýËþË­�£@ïØ/Úª ßÏñVÝ¿á‚Õ÷eusq·]¬]0B[Îò`$ÕÍ×­2¸kÜ¥:0À6ÒÃ/J?oÝHçÝ0›e0TP™7'EPõ*:6O—Ú%Sœ¹VJË®-@РdàËJr"üëC`EO\Æ%,"â†*ذIð/ ònt©öë˜�xsÖ âå†ýë„ö�¨Ìg5{�3Q"´ÝHQNh¢ðwKÒë�ASÄìÀØ`QóH¸áŠp7Îùó–г÷8‰?„¬�Gµx«e+t÷ 0¢Ç×hx0žŽ^ì §£‹ñ»ÑÁÙ`x|özop~øz<½@<¢á«ã3䆄?þööð×ñ1è‡Çã“ñ)þ»în_º(tz‡-¾I¯L^+_“‡7¡øCÉ;s¯È/Àt3”5Á‰D¥Û®êŽ­M[?JoÛß‘Ô3÷�öüíZz4Ç�œ¤÷,? §Õ·„ä\U»PA÷ŠqóûÿêqÉ›»È[jKGkÐGò‚3çPºd˜¯ )Ó5*‡³ë6üW¥Ö­Å"”y¹B�ÄËTþhjGÀ\ö~· ,y†{š)‘�%qliÏÿäͤMR7ªêeáA[-п¥ ÐNS2c“Ä´_Ý#ô“$c¸˜ì�á7¥é–zRSŸ�]MþÓ%è–É]{]0[¿‘§Ìaù³›ÊŒ\SÈêßóí4àž ×øëF ÁXJå²�{–Rì¹—-0ú•œUií=a“Èî5ʼn™ID ¸D¢›Bl�ržƒ5TTž¡(þkAÙÔ†"8žaéÃ].a³ÐÚàx¥ø”ZN³´zk’Ú²Ñ噣'ž²ÂVëÍÝ \V�ªß„X“É ÅTå}¶Ûôó@—µy7µc9içxÖ[è³q¸ÊZó¦�}òKEanÕȬç8àG/µ’C|ƒY˜±›©HQÓvJ؆”*˜�k FœQƒà7°›µÂaE4­ÐRÝØHl‘íÆ8‚2Rx`JàÖ§Š2 “rS™¿ù®qqá½Î?< ¦äKe¼/…Zæq²³†­åMö••ApCdp°Ê°Fe¼¼‰)ËÇÖ(�œX00LË¡9pÎ`¼PZsùæ¶ý›v³¾§HNýŽŠƒ�úv¹EX.4ÜÀYâÍå–¨K•Ö¬´#øÐ©ÆÖÝÁ0Á7Þ�NÿÝ»K¹øâÉèø×Ñùa‹¶MÎ.O/Æ£ãã¿|3:?9z{|9šLŽÇû ��ú[nW.†VÅe]¨ß¶‰šžíC»—‡§¯Ç§‡‡çãÓ×^U,JO±†GÞ¼xs~8º¸¼ø÷ÉáåÛÓéäp|4=¾÷Ðßžþ::½8<¸œž]„&aš/6¤6¦ßhÌ+ÏÀ”Nàp_¥›h–o2µ‰öÿç¾ÿPͤ Ô>‡/rϪٜVk[ÛÒÚl[Cëë´¼no†�›·µ�r¯¼Í¼…F@],½‡Î™¢‡­á¯Vð'ÂXpv‰« a{åq¼fMu#u Zv¦´¥©Wv�à=u-/Ø­? j{v"SˆÓà[ž�R·[.Èî2N§ŽS°Ðe¢¯=ùÑ(KÂÌxƒ£øÈÍ]RAqš_繿öæPT(ó¨Ò7i¨–Oë[n pÐ HA¸!’ù-ÈZ'ÔV’ë^+.Ûªa4ºÄrýšÒH-¹«(åNÏúº;TÐN‹Ô.77½Ã”,Ž1o­¨„—sмWãk´Ám”‚ ‚ôÖ’Šä÷*0ýµ‡KÉM÷é ]ÏíPƤZí¥ _¬)´ýš0óf?ÜÃ(sÞ¡oþWm íNeqw›oŠÜ;šüÖ»àHbÒIk|+²þØîF9 �·òhñ©�A§¼�xw àþñi»]¬ßÇÔŽêVý¥=Sâ@öé«Ü5îа»òÒ# ˜ÚµJPÉ¿Ïò©þ{óßMÕª‰žù)ÁQÀ/=g„ÕiS[0Ên €Ó Ýï°;4b:Ež¥è]ÜEÐpÀìkÊ�ÆQ�ø•>‚ ¥ …ÌÔö¥´ÐQ˜;ÂŽ72íÃZ³}Î�ˆ‰L&Œ�óÎn4*i;VNÙ!XÑkw•ý ÍÝZc¾9¹7thj€|��¡'«õΔåØ;FFé�Šï�ãh8ÎÄb�Š‚Ìfs~¸øj={½~½>;v1žŒ¤lý>…±Ì\Û4 H”׳¾bÏbùæ›”Ù ËôSÀvMR¬‹N…‹]‡åÑÕÂn¼JÍá±åžÎÕúÖìu ¡Œ[Áýnt%{»‘pö ï·%e’DÀg¾¼~5Œ�”H\;øS^›I¡V)¨ ÷}&<öÉ©³lG!P¢Þg¯«¥op"ÝC, œ�]ë§É[FËð¥x–ÂéÏtåK~©^ýQæ)ë3û"%è%_�³Q¾H)Ðb׿³dF67*`Ú4®Wš%X+^µw©.å`[€È™nü޲器C³V¾£ÀT©á}ÂExóÀîN7{ p;Íz gçìRs† Ø r© QÈ`èL"'žZ�ÝÍ4ýn ½­ ¾CkW}ÊLlŽúOz£Jž�`˜æaÏÎö(ú qx¤>+¡ ,¦ � ¿&W/úÂ(qËø+ã$9Ê‹U'¶J3S!éåõ±ž2LœÊõ×–ŒÈè$¨A§È”˜ Ž×&¾ZͶVĸNo'üêšéa´"t)ï¶ø‚пTˆ§r½Ü^ùÝJú�¤(´øÇ„)ÕNQ (ñé“Ñ—»Œm’[ÆÎ⬯ø³g9¾ÈYÜÛsûß¿-ôs#› ànâê^ÕÕ‚ù6»ÍõŠ‹{ Ý|Õ$5eQ³º+ÿ¾<*òO~а³èänú·cmÓÌeµAö_)ºCµÖWÒŸHïT„ù©y@âUôh RèC¤6óÝÇâv aä1+Ð ¨ñ ]’sV¥{ï~‰9Ù"_ýgçM\À^WÉäÍ„±84Ìe‚tTÑçãw‡[ìÅgŠ1oÆmÍñ/qŸ#çUø—…Ït>9à\‘ø±|ÁI½^« U«ô<˜²4u2fúŸ5¸T–ËWªm¸‘©yÿ~`¶Q—Lá!o_«Q—Ó𔌵҄:ª´Öq©ºŸ5dzùsGÙ# )ñyl ¸'ý.±IEqsúM$-á%‰¤ÖAêÎ*bw¶YelðæŽD‹o€A:¼Ý FRrìÏÎÑ�¤e~EÉ­Y’ 3õå(Xù0ÒÓc5H§|dnÑ:ù&(îFW�˜ÌœxèA–ßÄ&?H“Å:Èx÷ÝtU¸ÄŽ+b«æ ¢%n¬³~€Õ|´¾ªvQPq5ÑШÝ÷Y¤‡T|¼ˆçªJ©†ÿZJ‚£óSÛ ‹ÿ¼TŠ`È/áÚÙ�7Tôd[OÊkê“ø†HÞJ¸ßwøÖØ-¯-ð–„Ôw«SÒÏtÇÇo[úø�ê^ß;šõ…ƒöžè<�@}S{^CŸZÔµ3Q%µo‹ör…L}<òìÞpè‘mó"Áxq´Ú&t4÷¿IúpUwŒx�”ÖrÝ�[[C.OtÌ7J½ù2’âv¥ù·>kÚ)ýƒJvÅ�ß"µžswAéÜùKt"dÒò3xdˆ‡êó¢ÑdÍ'1ƒš:ì‡!>~v¼‚œ˜Äl=TŸ=3¨zŸ]º:_Y“³KÕ9»¨* ØÎ^T¤XúÛê ¿þkجêšhnx*ŒÅ*B…IwTa“/ •J'Ý‚Q«t 0Æk×$ÙÞi½^6Šoáš¼j†ÂäS!®¨»:‹Ò0Áýúæä‰Ù6¤J¶dàè¯ê»Ršž€�Í…öS[ 9!µ”VÚjt²où1Ý̯Q{ö‰¤„”s„g—E+ˆw¸˜¿ï<óÆ‰ŸÆõi‘˜ Q飉Ò-j„Ï:¯»Ñ!蹩1æ–ÐßcPQsk5M' NaoÇ Þ¤½iµ$2>fÐê+»Ã™ÓçÞ9Åû�Žò£?Š"Í#+‹£·c‹÷ æ�c®,¦\)‘D’�ÙµÕο%óÌ=ùÆèKMëçµMÊè‹Ê+ìT³¬ñh¬m«óüÊè‹ï”&/&¨ÓÏ‘ÎtkФ¦C O]b¤ž¯çuïTçq7¢ìïÄÉa熪sôÒ;G5DLž-V6(hàNW9ïjØB‹�k‚7žÙ‹pB‹ôþv6#`VP˜Qkù™Ð^e’òJžb•„BŠoW¤Š¸1̤íäòEàßfx™ê %·—ÝOÑÛ/–Ó®¾U¦Œ¢J—–»’v.Pi^ßL䛓1U2¦À�ÇöñAîU�«†ßÉyE4Ì+JzÅòbm35é©Îu€9 (wÛ6 ¶R(kaàÊ8lu]]U|Ó„mZãÐsn~Œø•’ÑVi£µÇ.[^ ›,ŸÄ�õy„ëÆÏÖDå÷ðI/ÁîiÅrÐþ)¹1ÿDX‹K£’È ´ó»ÅD!Ÿ©ÕæÊQ¢Ûœ¬‚€·ñ(¿ô¾X=¾ùCðÕ+Ƙ °K…¹óGÿ‚Æ\-A|÷Ò„{ð§ÐÆe é½ bÌG“çlŸ>ûáE±MWìÙ[Æ7E\:¿¿ýéÿèuå!#vm‚Wt£>Áã?·MÕ"çìË\óûðÙSÇWï•€Ü7gë™wïT±½¶_6hUiª¨gÞ�Æ„nQ @3Y“3óÏüÛŠ±Á‘í·ð3ÿ2MW�bðSÞÝ$[aÜäè%S5×GË;½‡'‡ç¯ßßÎãÓýñhÏ$1Q†‡©dQR]P :TµDɤ34•ßÅYŽ521c,«èš½‰+ Gã€ÇÝMüÉ©Î#vÞÞ¡ž_<´Ã=;‚ ½ô §Â}Ví�w§ìcEAr1Þ?ÇÆÜÄvn¨ÿ?ìŸóŸ£*þ.#K‹Ï³Î n›))¼:ÄÝè�°R\ãNQ“¬™h< LÛü¨fÑ#SŸ¿zù42 q�ƒÒòü¼ßà^Êàt? Ô�Öº‹îšÙÎy·Bµ“?Ô:é=V£ƒw°MìöîÑݵîæ.”œ$ÞØâ/øq¥W/~¨öÊ{LOÏ.ÆGã}°áæÐ‹ù‹~óø¼Ö1¹ùR¼êÌ� ¶{ŽØæ‘"ùè”Ý8ç± Ý,ãÓ£³óÛ­Ðerp8y{î>F’æÕPDi|û9¥‚«M·†ânK÷ÐÌdâÊîD‚oÁ8„¾Xé¥FÔ¸íf�ýšÉ“V‡Ñ¿åùj£ƒb ›qˆ¹¢�#b„»e¹½Ú­’£ÔºTô€¬’òüëèHà¸ñ:ù¤l%Ü%o��úƒ·Ÿ(o/sí¶bÞ¢—“AoËÝ÷™–k@(Ð,†çAÔ�i÷&ýN&¡š¡J·°.öÌ õ9ÕSâfÎk�6<�Þ $íQà«» bÆiM¨â€BY¿mMf}ÈÆÕt}ßnDá»Txó•éU&Á„�H§¹¥íçv1 ŒqêÄ 4;t}Øç5²fq­Ã磓ÝCÎîôÈ´DÜe|9�L�Ò­É‘®R¶I­î�MED7‹|ػߵì ýæ„��R„�³tEz=îž�Z0“ξ‰ÆtНFÒ §H=fƒñµ¦áñ“ 0‰æ ƪQ&TÕ±•EË�€EäìÞäóx¶]¾×©ÊD¨¢Y±ÝÀ2ƒRHù*Þ¾ÖYÄб�ÕhBWÖb1 9ýpÃdø4Çñ8wå†9–i©3ë¥b3Ì$ µ[͈×�UæÝF£*r1¶ƒj­]þî°^ñ§w0ŒÅ÷=ž4ãDöB1{¹²¤|â³Æ'š„FY¼V”q’”$8±ôú°r¹’ )�€ÎŒH”6Ë:`w*%:¶]´³¬är_Žòa�[|ßRfU��jÕU%ý¶ãrpú`rõ‘ªçmÑ�(1Áå­Z­—ù^t½Ù¬Ë½'O>^¯æå®º�1kyæÿIÛL¼=?v¬À/øò&ÿ{ø¸ÊR]²ßC0�@–ã(žhÊX�Ü® ‚D䵚KþÂèÑø`úØYU” Šø0é¿ÜÏ7KÜâìý ÓæÖñ'òNh¸öÜ$¥²Ä@†cÞõ‘À½Ó¥Ö̦6zŸ�Eù >J¦Wn:Oƒi¹Ü`3Ä·±OÏÂ8ÁJ•«œ«�´UoñŘðqss¹é Jä ªÌÑØTÜjT(=·õ,ÐÂFza;7,-'Ý®zŸàC¤hÖ“w-´ (ñžgdC4³}ë#‰â¹»„å�5rúû î�ª @¤v凤k$[°R&£“¡ßsþêXÆ9hÄ�õ‘ïCø´6~mðq:·éê ¿­gã";>d6µ<¯M]u¢œÎxöG$]ø–<„‘}/íR­Ëfý_9BøÉÑÅ7]AnÑ^ÚˆuL9¤]Æ)õI>ç³îl9�Ö9Û8Ì7»�§RöS¹Ú¬_a-4Gõ°îö5¾Ö�o¢Ë=ƒEÊx·]�¹ ¼ÍÒ[ Ï�94¢Y(ÇKd2æßMOº‚Ö+N Žó�ÇŒÐr@qƶ°nÈ Þãç K  ‹ÿÑÝ#ƒA@ÂT©o4³Uû?izkjJOQ®mQm�ÃEFÔB]å<¹®× ©âc›Abë€Ø"‹ÞÀ´3ëÌ—µ_ëOçÙi¤%7¢Úð-Všp()#•fJ/²žŸ¸]m�ØWk“aèú.™¾w«†.hÎts—Në8».±Ê½Œ�OQk—ÏíûR;¢��›OÜS�h÷ƒØÚsƒf¥‹_E¯ u‡™ è+ Ú¾Š_I�·æ€ r€Š‚ÔÈþ~ü‚̻댨>d]Ö3àx Ð[d—�ë-¾­«ÂfqV¹ÛÎ�óäðC–Ì.ᆾMUy©‘dú&9â¬g×Xqïj¹ã O8.Íq©‘Îx Ê. ®ÎÑ’ðщ²4¾Ý?8mÛ™Z¯ÆÏÔ[ÃWQÃÍÔòrýµå6�Å»­©Wþ¨,S&HðÖۑ߃ÊíÐd1¨d¦²vmÒ™-}ªøÛ´Û—ü'ºFNT˜Y¾qã°p÷l†›ÚönÏäÍ'êFÙ‹sg[,‘l—Å•3ìØÌ’�ƒ¡ê,)ÁŠ¢„B>QÄŒ§D—=�š³iz} k¡T÷ªèòë-¢ ~[—“ùYÏ�JµgiˆüHjÀ ûýž œ^·Þ½Š+àX¦!y“… ^3w:‡œ�ÌÖþ�OZ@ù÷mZ‚ÈÓH•¬ À¦¨ÂC&EÙÎ ÕuÄŠðù¨¢˜ƒõr%Ý~þ4:yUñ̰8$÷&+ÈçXºáÏÆÀ_©šè1NÑ®dS*¶Æ9u=it!ìÈ1Ø ko½´LU÷¾Ö¡°¤mí£šâÄ¥›»è× þÆaÄ.X·»ðì¶´!¿�ìϧp«ßa—)¹÷3"âÈ`·rŽ‚uG IŒjcB2ñ À…¦�@ñõKØZâU#Óˆ!õv[=•5T‰Ü7¿xA/ð úB#ï·ÏŸýüÜTÙÉ?_cA‘þ‡75«cdsÑ„ &ìFgÛ Þ¥z¹´ÚÜx0u):¨ð›˜”[϶Øn4ÄÇxÑí1´ÎkŽýôØ` Ò=¤çjºíw£ÖH¾&×,­4úÚÌ*h�ÎBŸùyFΪÃjâY×(‡Å-\ýŽÌá�ZÄÛe[ ŽžJ=XbhÚDùèæ?ÐŽñÎ4I÷F=½D–4j§”OØ;$¾¹ÚÁš`ÖêÁdL_å=·öº!´¼�z¤†c ¿ÅvUíIkx+!>¿¾-Æ£!®™Ùœ¿¥M¹gT\YtHM _…T�átäŠkŽ N«Y7¾Â¥˜Ø9B”^R‘‚W;ƒûg™Î„9f õcž#›A^r2,ÉS¿VA¿rý‹TÿÒw7ö[cjB{Ü3Úì±g³7?Þ½õm·(Æ–ÿ&´o÷ÿÎ6ô1–ñµÕmTj.ö· ŽœìßoW·A“Iñ®à4æ ‡ÜÒ†ÂjóR¡è´ŠMcä Ã7ô.Ï\ÛÁë7-ô壓·ýÑ3̯|öâÇ~xñ‘Ì�­�ïQ¶C(ï4¤/X,Á~F+iÔ‰ÉQÀϸ]2‡(š¬>± ·Z(;¨þbJìè¶¥)È(qÕOª ÏQGu­I “üÏÎÉ˃ø®u«rοIr(ˆÓeÒ°*]Q[�´XB8õ�U•JjFœ³–zå‹ä¹øÈbSpêæ„‹…©{6D¤âM<ëöii–w;NyÕ ÖqŸÐ¥…ùöìL‹A(_W0Ëûg½t½T»*C€£"_ Ô|[1¯P4‡eQ-„IÌ‘êBlòU•Q¹.ÒîFúÂuâ‡Î �àXÁ›ú‰–å…!jõˆD¬8$–s*W¦!¸Jý†Ýá- ÔjÁ‚¶ë…ÅÔvµÀ^d®ƒÂ©·þ{kÏGv÷Û¾“Ðûª 2M¯s¸\ôðB± MÊp´ò›YšçŒÍ²<<>zL€èÖ´ÕU\¥Ð@%Q¢ *óýõ9�"=Íøaû=žX·=b‘쯹$¾«RF¸r–�e÷­dåH»ÄÀ*ìw‰PŽ „J±1zJZù­6:ö¼]#GSå´Ú�ƒê±$å€L¯ú$™Ü$Aó8ßıåóuÄ�ëi�Né©îX虤ˆy[�å£ÍºG1Ò-ꬷ…ÚYlÖI[÷Þ§R]Ù2Ø-ú†€‡Àœ‹i�q~Ôf]íÜXNkgßz}”è“ ¬¤H`}ˆ…Þ¬PK[e„žC…äÁ£ pÓQÀ9ª÷¸¥Žuô~e%xkÚ]o e¿lŠ�ùk7„ùBY�Ú®‹ë¹ô’’LÞžo»ú™]þ=f}Â[Ä7u}Â.ån‡éÛ’xy<›b¦Êý&zÔ-kÿ+—:±³mÑAŠ«ºÌmÚÊ öQ'°(î:^ ™c�47…Æ4*·+W¢L̼8;5 3 ÊOÊÃ~Ï·+R¡8ŽÇ t3BÞÖ({u¿S­¨Õîm¥u ÓHiZq\9Ýa ®16ÍrŒm ˆzÆ*ý¤ÎÕŸÒîÞ½B¦Ìîk×a­U½Œb^¹+,ü—+\™.`…›¥â’‹Ð³Fb*úˆ¨F˜ÅòSå2  Þ'âd #´ÍÌ�—,ëÉFÁÓx�&ýæd$¹Yug~mÃ7 î µV›”.FNæ‡à¶‡ƒ¤]‰D†8ÚÞ@G-Ma<¿VŒTX"P'nI_ sHu4r`«W9q 7[‘qhá0µtÙZö*çæ\O•.ËÅ$Ihâºî•€\-ÛðèÏ[º"åÞ¿ìS g™b"ÁVí/ãÕèÝ9�½¼Ê™žf·5  Þ‹\ŒÕ°“ÒÅ!âí˜éµÙ`hI0ļ1E4'¹”-ʺ#¨®�©~y?Öi�rI¥`·pH­m)²'€áÂí¢E:*.jÙýl‰å �𜽅Ø+ºÃ«¡9ʧÓÑÚÖ×LËFøEW#Q©^ °áZ°/kbXˆì³—yÈ=¼êèm0¦ñ Ã8›nW -Gš(ÜS²½]¢]�1wlcj½fj̪•xÒ—‰ôeÈêe£ÖC7.j_Ly¦qý[­³„åÞz˜´[`;åÛb®öéæßÏ×Û€ IPRâüþä-WÎÖw=ñèœ Œs÷U“gK† ×WepEz´•eÀXX"LÞö)ßÑ�;`©×éÕµwŸ-7„,žÁ ©hüä¬÷ ÍÜ,|ñ0?Ð,—ÈôZVØ—�n Š ¶ÇlßùîgA‰ÖˆÆˆ3 ¯ÅÕr¨IßÕª;†àPéVã …Ýž}¾å¹X\—NûÙòRÃùÀ1…�wëœ`ÉÊ’\.~_É)úG1&§”¢wªÐQ½4øò}]( §9jÔ\€.]<@ô®°š’Zˆj®FNµ“ÚõåÖ—y|í_ÐâÓ×0Õg§ñ5®Ê@ Å›M‘ζa5�~�Zi‹¨Ca*ÌW𳯦îU+<4êr€>¹‹ŽˆÒ¾ã›Pûè½îmí¯òmùöe=¯NÓ%ПýS(­÷Ô$'R š�é5et¾ÂéŒy 8ÐæÐµ[Y‡üA™æý€B¶À„•R Ne”€7Ëoƒ°7½?Й' ' LÛ\ãEº“&™� ø·K <¥ù¥Éu ˜Õ’òEE!K­tš©ñ ´&ö˜Y;jªŠ±®ú}z²#)”Ì ºò²‹âG?Guì½ãp&ei�”6gr]½³ëðpÇ’¬)“.ªªKëÌÜßuúêœZ!õÚÞöÞ&çut1~7:õLílG¹”�R90® —€ån�z-Ÿ·p¯sJÝ#�¾éz»Ôž‚@ù¸maúd€£„?i„ÐÝ!Ì\'«´3ÀØDA±È±±£'ŒQoA'+-‰ñ$jdMªö ¯ö\a.rdËØ8«9~ñ|»¢©A›Xv ŸÆç¶>)ì«A˜ éÝc6Öçß`¼âí¿é€i¨XKŸñíñ=Rdj�êýÁèMü[¾µ>Ø|‹Ca­¥jílÊR ¿8½“¼UÊì«bÃe@;TŒ/ r>6Œz0K7µï<úþö±­®»rj@øUÃ,˜óy^¦XðKÞRò¿mÄÎh¿ñ'–fuQäÝ<ЇFF”^¦6šà×n–lf¥ ä5ÌÑug4̤bŸV‰?AWÛ´Fc›z‰Í¢î¾Y_k¨]笇É*ž =6×g’aoâöÀ m¶æ•øô;ˆ9&žYp¤þ&¤¦:ˆ|xà¨#Ma ¯`¨µ´w�¾J9?5׃‰fí&¸fÏ|ü)"åyÅ]áÙ¢¥Ã„tŽW‹\*¶ë eU 2Ю[ ÕRh_œÎ eGiŸÍU�]ÿÌè¢ÉBÆÁÁùWØ?Ñ´òŸhŒ›»5B¬Š p¹ÈAÈ·¦»H°Á@h÷ ¢ZñnÓØQ)ÜnC.¼ÑÙj©ž±\.9¨úôÜ éRK7½—#x˜ßžó:rr¶‘õPRÏqPÛòRpõ„SHŶžu·šq}ùp¨.?ø�ilÎämyþ$­u–ƒv©ÝŒ­Çæ�IŸæÇõ—˜ñ5›Êð„ªh4Þy…ÝrH-S}Í#qñQJlPB˜ ºà5r-Eš©¼íluùq}9§ B�!»ðØ/:ë_µf„è4_ªfÛ•17¼ÍfÀœ™ ÚMÃöûòÑ�ëBf諆TcŒé`\-þÓ`ŽØO—H{mœ“íà g$h˜+ª üŠáe„$Ú•ÿ Ÿ1C³dq] j×5z¶å&_Q‚ šo×nÅÀÝ«0[b¼ L|F €Qºñkß�å¡ }Úvî�ÊÁ]OWwF¦ U›=F–ØD­*¬´.™›)Ú¼Š"s¡¶žŸŒ� ‘ýG—[焬êwH¯Y1’Ió7ÅõIØ`é]Æ’H”Ty÷ÞuG8¥½ýêèœX/_·Ò”š–ÌÓ,41ÛôY¬ƒîÛÐ@°þ¯^¯ÊÌÛ«O³¨ôÊ0`ñŠ™é[Æ"%‡n¾yïžÆõè 4C1mYš‹{…$¥_,%*)]ÿ‰R¢òݯz¾X8Ôæá*œ«!ÑȲ›ÿNz]O±¡Gþ%B£6èÿ ¡‘TA–ñ¾+ã„LDÚo,b/©º¦–¬ˆÙ$Û9Nó8ÁòjA‡¯"±Ä6[É?=o‘Øäk0ψUnjÕÕ6M¼ïÃ/bŽÞ”ù²êË„Ý:õо¿ ÷{š^Å.†¿Z)ß mŸï÷LSFî(¦Ukí))–ѲN‰¯ ‘ñ¦3hñfϯW!…Q¦n)p5_vç(N°ô{Ž~PŠVŠ|[}6ö�OÉÑP Îàéáé›·'NÉ6%ÙˆåÑ=Ü×-v¬??=Ê×4v¾ÝÜAt;bË”#¦RWU…ûR/È ˆ¸™³‚N“ORIM¹I©uœ{ÄM©¿n ;8þÆ£¿…믳¸o¡$gf'Ú×öµ–—p·Í~#P”Ž/�ÊrKw-9Cújk¡‚ʾ•/ü£PNX°R÷Ö‰i p‹Åâà@!ÿ]öÅ!ùráå�ú:Má§ÞŽ#ë»>�úe,Xȉ‘c; 3]¬¢‚I<—%Í4$›ð.Z±×ž„ÕÜÊíÇNDFtCò&‘Ö»™½Uanò°P²)Q-JŽ©‘cæ~¢š›tþá"ßÏ×ẇé=ÌKZ)ï]«ˆ -‘Aº–”®qÊÊ…2^LZ�ªl|¶û|÷ÅîË¡üåé“çøwøßÞsøßÞ øßÞKøßÞÞ“›¿Ù{òò�t£# _pr\ˆ–ΨÑÐNAO7$e¼HI"ݤ%æœm\œ÷š†ä¦³ã–Â�Ò°µ•j©,*<›)¥MCÕh[<Ö#¼'>@wü‰ Õn’�™§Ì ‹ð­Q¡û#–ø9òýЊê8®Ã%AïÕþ¤0V�¥‡\fŠ+Œ�_å“lÁÙ�ì—ÓLêc¤ éUÆ|[8òR«3††ŠÕ…°Û9w€X&B˯ô®uØ@$¹�Y Ó¨ �æà�µäàVšª²F‹”9sœ¶:új�ʨÄi 7,ÒMJµDW)3sP´†@Řãž°‚&½­ãÓÆCŸå5Ø^ç–z�íø@â5~º_œVJû˜ù¯›I•çÏcP˜¢2”çRu±ñ'ý^3É,>CY‰ÕŠd*†áöZѺpÚ6Û%#¿rtŠR[¼S¢ëÈðò»I•7Eð]Z²WÀ…uk}â¹-‰µÒ<Ë7g¡ùžæf¼Æ°%ú\S}‰ì›÷”§ÌžÃEŠÆ´_ª¸˜_¿òæôÁC*DŒÁ=×òÁ»cÒ®Ã8�p¶µþÐ^^7¾Ï9�åôš4w̶òNÛü7Üwƒg×^zrø1üò¥ÿ—/é—Ï¿}ο~™øßÅmð“ÿ—?€�ŒàË;ÿþ6!ßTažzË@̃eô’ž-Ûæ<ýÜy<0PýtŽm ƒ\hÜγ?ɳN€Nq0Íe>rVÃÙkL¯ŸÅÃ|öÀ1fô YÞÂFÎ|[®Âå\Àæd³[Í÷þ{[=F¡©uAc³Ü'Çià¶1Nѱžÿè¾Òqš*è\??]áûã5³¹¿üãH�ùZtèã”ý,‘H“ï |Ì~jH4ü-�xÛÖ9z3/ý÷ÛÔ”"P—*ÝHܪŸÐë%É\�—ª(k¼þkºL@ßô®} F· ó°,3»Š;/WM[‰hIöšÅŸ,Ó™rRózÞ©üPÇL˜ç#íI@io®ýœÉTêgHiFàßöe¡ì€”ø `Ö¯i�$Q¢Ô Sšç�¾§nƒ/^è´ýÞÎÆ­*M—;3<‚î‹ÉVÞ1’Â�^!³÷±eç92 MW»Å0ìî²íTÃWÜEî§ø-*·mÅ~^}ʺœe°™_«âévì8ÙC5„Á'ñ:E•7IN¸©ö{CVz€TÕZ^]Îy…BœÅ*`1»z¦ÜW(߯Yø'�³QšäŠíæÇu%7R¤ýÓ£øßÜ£(hae‹cÞf~HÕ—!6Dáæ=²„ eŠ&40ÉÀ.„æNc’ –—ô†²óÓ@ô‹‹WjQ‰Ïëò 5ùÝ¢¨ ˆž›ø‰C•“)o©BAßWO—œ¹ÊöÀ¨Txó∷ò&�Ï�ü*a— ?轵ݕ¦©íÐÐÕíî^ôâéS¯p§ž5&ÒGÀW+ôSZ±�û¶è’0ÿt+£[¹ËŽÁ vö$®¬oyìUÃÒ+4Ê1_×¹Eý…Ûñæ%þþüÑ:›wm£È=þ�ôYo×0§^«â$„†ö„@ÈðмÃzÅôfAuø,CxÏtþÁ çí#rþ‚^g*S â‘Ò˜ýNè}·ì†3^‘‹‹ÒMué9—©nï ÷¸TTÞ¹¢¼üŒèÖ#]«-®sB³¦žÏ&m–ö9LîŠ sº)Aˆ…pe¨x¾—¢ìʸaï3BvÁ¥N &!ƒF‹˜ð²ÄB¤Çe"£wßÚ’Ãd9E„åÉrkªmÆY‡WJŸ«k[Ï=9?‹2…ž'61h*⛎†L/£ï Y}ø£Ë”+_,¦ùÂ2:•ãÔ'‰kª=¿Adhâ¹ät 3åä%¿ ny;«ê.ÉÓ»WA‘:J�¦ºzÅIoéêÅ�O)¥dœÁ)ÓvÓm¡,—;i¶ƒjµ@�Ê-ëÇ�ÇxÄ8©*1Ǧ¬wPµŽ,ƒxåTÿ‹ºV ŸnLý›¯Ï tòfÌ,žmbMÊÉ4R?Ê’©³úZü«*2µÜ§½ÿÕ¨L%“7“!"³G£5‰k|%:J õ&Q3u:x¯ní:á!¹Ø߀w°›Iùž†‹¸¦Rýƒ�§ò¸É1d÷ Æß87�þ͘ˆ.ý€)f 4ôWƒÅ•P˜ækup¸ðæq¡+O9zF°ÀÕ*Yª�{•û�ûc83¼TDKUlÁt&L]T]Mäf*Ôç¢îØ=�ÌkæÀ÷™fM.FÈñüCI�í%SÖ]q¦æb»\:Tö>}¦ _¼É74VÉ´òŽ•~—¶‰Ç¿¦›B ÒY¥ø,-õÞûlä €ùZb)÷<€èp+!‡½wò0Z»¢X›¹½O•BÃà~!ÛëwòÝ¥2lµFÛ¤J‹KÁÞÂû�ŽØ•\nòKʺhuý3SÍSÛ-IÔ�Bg²C.“à3^Z¹ó‚„3^è~C³"Køä8o²+Ø+ÃØê�ò “x:Ü&JÁ hù¸ƒ �„=*Ä5†{>É=|còâ%"¶Ì¯Ûl<ïô.âtÉëÔµ62Êùiê¶•÷ÂQ¼£Aìb…$æ4Ïk]C¨7Ñc=‹M, ¼ïlƒíäl¦Q>üE�¥Íi¨`6 3Ãb·¶X4©4Âíõì¥ÓfÜÕOak ¨-�sMïÈÙøÅ&…›àN·–´6§I%ñr�ãÁøì¦m:c¶è�f‰©õÎi+X´n·§ñ5¹W0äÙ 4ºùp‡éÏîk›Ç³eÚ„Œ&_qÕMÂR“zSÍ——«»”oÅËu«Æ>Ö7]ôht#Úu’?¶�Lº6ö¹YÎJ»»¹«Mµïi§¹ú^~Øž«l3Þ$]óâ2îâð1(ØîÆh¹ƒ&‚ÉÃÁ ¸Á;Dï©ö_§.0³ç0Ý\·NËËô{eŒ“Šƒ*I€ut¼gb¿`?ˆ‰L—®zïÌÜÈ&£'.ÂÐ7šV’3”~ îHRé±àîƒ-ßxë "‹" ŽBGÜKí‹ÕȾZ!„ž'Nûž ÆQ,6¢~»LàxÐ<©‹»Ëú G{Ïœ§65ö»Œ÷MA >Ñû¦å!ƒÐ¬²½ÏÚy›7¢2zZÀ_1_(SÇ5C/‰²”³ÚÉü€ “q‹–ë¾ã ¨‚ŠKƒIâòz–ÒŒÍJÈqà\úŽ–ivR¡´£¾Ý]áßá^¼ˆ•ËUžÄDtº!ºo4tk< ΑqÌÍC‚ñ/…»Á‡ÎÄ£Âv®e—£¢x` ZëQ^¬8­ì~4';ª=Aƒ Á`÷ñQÿÂÚ‡×1Eàññ¤ýIÊȘü‚NƒBŽT$½–(ñdœ-ñšB¾°¹o¦ªs2>y&YI �Þ/aj2æYd•âÊ�×!g³¯ ôëΩïsø‹?Ê¿¡[Æ\ýׯ¡·¬æ¤c [WnÒ±^çz•r¸–}Ä6–r½ž"Êöƒ!%$ ¬* Ž™ßq)0Ó©S^ƒGE÷¿frÁÞPI ¹Ú»ï‡ËÖ#šîžnþÀúî,£¨  ÿx/�&ÚO/€|Ö?%ûØJMìnò$ôÓŸJ·ß·o{ï3�™Ãh•|¿?Œq�hVÊ¥›úùßp¿�Ìü ÊSO~®%İg �Ù)yÇfŒny‰r¥Ü�x) ”e\V�_mØPQkÓö†kÃfÎ�ë¥Ê‘œ—n̦ë1�ö§G\Ãçd [†øã;8„á�¨Ìûû7‚íÐQU7ÎJ¸‹èâ☀Ón¹‚(G—ÇaºûЀò|Õ[¢·Æþ2Ξ?Æ gÛxÆ>ƒêÈjªv@Ïû; PïDiàŒŸ�G~ù#¹Ì„Ëè�I™ü.º´)ZÇ•ú/ð#SÉÎ&ß¡ Æ mº,Χçã÷·sXÁä‡Ã)ô¤ÒØá#ïP*àW5,üÅÐ{¨‹-yæôÇð’{Pûž[ÎmëËú}zøú|ÔÑSºKÔÕÉáùÉx:mL0µôÅ\iµ­Ïü|ÏÛþ4] ëN/ót/¦hY h‹1Zb;ÆôÈ“;èðï~<ì'¤ç¬�pÀOîĬk”m#@¬a:[!?àüÇi‡yU­4¿ŒÎ‡–ƒFo:18®ér•FàGwhcžfŸm„w£¿ÏšêöRÿtÛqžž³Æö�W�¬ q©òNºæq·om˜¥7Sž–§!¼;—ÛãV×í|ùûœ÷ºß„_×nQ}aGr{¼¨Ùånª¥žn{†À¸Ws–Á·ÙÀƒúUÉyhíàG5+t±G».Bc³…‡ôдîb(Î4Áü¸\øÛºÈv…ÍÃÝÝì\]i«ÇâzV¶þrÿþt¯ª´ÝcQ}+Z»wÏz¬æà È;˜�‚÷ ØáVª]%ˆ†ÅöˆÎI àÁËœ�:-Ý Ü°nXi�©�;š·tge¢ÿÞV÷¡Gy‘`P)ZmÞQvY$²Ìëê›ï–¨ôËúÚw ûNï¡Öœï„îÛÙ[0ZØl{ìJb8.áÐd \(YËv*ã´Èèyé³èº3õ5—6:«þ°D$DµàpGK‹¾À_µ »^=Úqß6a°^¯uÙ,Ã’È´«€v™‰d˼D�¬ðk)/¼tÒº�€EAï£P½ /bŸw°™–ÝÁMí²Ú–^ZÒëQ>�šßrf¤Ú=×Zp.ð1šFÌPêz휞RÎ{¢øoãÕ–:=Äzap¡¾¯UrpµW§ã’ù²«Ú ëh0ïîûÁû¬Å’ÿ¥¯%}Àܑڬ!ç}Y·nÜÖZìéZ[†ÛÓX·Ž6�$ínøt˜ïŸî Fžœ9Ê 7ÔÔŽ¯=Þ�NƒlbY-ÒelÞÃe�Ûˆê݆h<ð[ Í<{ðgØ=ûà ¾�ÍÌ è�:x›·SíóŒ½%ßÇ€ôãž[ÿ@Ó‹Š®¤¡pò¾ä†êúËJè#*ËUûN/µñ�p6e1C”öZW™üå}væ!‚G ¤I- (¡²ºØdÛïõWkCvOvX›ü¥Séš Ò¦�̰·Î·óÍ`&„J,màJ �x»w#=?„–±Šoaê?1¹ôu \çï3¾ƒˆ\«Œòµ³á˜)Ò AÉ‚Ù×#*î�†©œ®ÏÍg¦Iß}�2ÀD9Sh¸æù†´3÷à{é-Â�ä!ñϤFËK àSeb"à-!(ñ¡™„J³©(Ã>_šr±ªâ€e÷è!pj«˜'8ËþñÏ@Á?_(0*Öe$–¬èËC’9=ÇŒš$½ªròY¶–=}" ­­Y&u§I�™ý<Ô%öë]8€qØéRn•o2ëÊ)‚äÑ|QLÃi�ô0?´}ëè8¯{6èLôŽq4^ߟþGãõðj¼pØ)žë4Žaqly)|ÒU¥ñcJ½Æì옛±$8Z†õ 6§Õ#ð®�qud*\®É•ŽèÌ8˜©“w…i&þ�§™îxͤ+TóKÏXÍÈ_¹z@�Æ÷þ²W|æ¤A0 woÜÓÈ,ð¾s¨«_“ñ4æÓô{[Éþ)èe#÷ˆ ƒ'=¼Mg){ɱv�ÊŸd»¼]ƒá½Ü»Ç:< \v¢buù,ì÷�¾$iŒ•*u„„(7¦JbJy‘åY›ÆXÜ‚Àµ¥`6á—¼¦Æ™r<úu¼jí…¯µWÌ ’W0²Ø�¿RŒvA§†}RL]†�½ô5vj<{U˜‰ØP"0E‰Êlÿ¹øB7ûƒÄUsJÃרbõÌM¾¬TÏ´ .»`¬�ã#Da ô·« ïŠCx'Çp‡¥cALÙÔÎã³§Þ K5Q\¡j§Ê»9oH¥C]6‘2•÷BíÒº &ŒÊÓD®i]oý|PMË ¯éI,¬ky©�ßèÐËôðL7ò£×ò#�šVŒ#aps»Þ˜>üž,ƒz-Õ›Ð+ô1à ~¾Uõ²xGýsËqq˜GÄhÊÕ*Áíú ÷î»yÊE�³íÝ©Ÿaÿìdr>:�F¯ÏHŃ °ÔS�.ÞŽŽºö©‡€ C+ŠmQÉ`ê-¾X´”ÙâÝ¡§$OQÊ =îÕ™Þ°úSè‹×eMyëôŸ9rû†©M5J‹|\Lc)µ b.í#nÃ"þ¤dBT†,D‚Æ8–MêÀbP·ÒÌaö VlEZ~hgçùv–û¥Š­IG|ψ­^±â]jó™D3z…%�BêX« ¯Ô‹`¨èu ¦°°ùÛ– ÜH6U%…W¸L´î^I3ñ ‰°dy—æËšôt¯Žo³Ã ¯nFÉ5Õ»ÁÍyÎÿô;\1pÕ”¬•9L/s¸ÚWÙ¾ÖK5­ˆï£®B(‹sUn—›£¬Êéáé›·'h˾=¾œE‡§ûg§çð×�}}œQ6¤_,�@AÏTCÆêI çn] Ùìi9Œð²¹¦4 Hü^êH)Ã&ÛÞ(ÊrÅrx„HG š‚E£år=z³ÜËPjKP£Í–ÁG$Æ„Uó¾)ó¤DI¶ÒÔžö¢gî=“`äü®Ü eÁa|Œ®É•bÌPm[pÀlJ){÷=k5m-¸›Má7h?°y �[Æß"¢|"ÜÛHP¶ïŸjö�x 6aìU6 u‡í ÂÕü‡Í4Œ�zï)cæ¥r^(íúv¤ÿ¯Ñû�U…và á?eœ öŒcýû¶�˜� þøm±F>•ð³ ‚NN°”rg¦¿ùDþc&ꕆIÀ£ÙkwØ”Ömo‚†É½‚2: ¼‡.ÅŒ1o\�–i§�E"EÜšICÏþàÙÓ•×õðþ6!lBPž=�`Ž·Ì7xæ÷�èçcÂÏÅŸ¿ìx²4h»øø‹§þ˜„Ó‘OIéä§;»ý¢ÒíîÎ8}ù©³+?éž ›Ù8“ÿ†Jíh¨xŸ9C/í©ÙÝ¥PI…W²Â(¥0€%{Áå¸GîÖmÛã"]÷míE¹†ó@Ƶ2ßïA’ÇH:£I-“V H"_dWb–¹g*ÀøJMÓO~Á�}å º÷ÂM·GÚ ´ÏMŽ@&<ï§9ª ”žw‘CáH¼bî 6$/)ƒretH�ö¢ÿµë0àoÝÉ9ÜE–ÚÀGÓó¥ßûI�äcªÊ}¤‰JËz€=!ªVIpd æ«í’9>ø#Ç!þ ;&›¸*àûåv�D³šy'ú€×–Ò~ä¢�‚È|®‹z«¡„4�;¤‘E?+AûݨI}ëLiYí]^a¢#:`°)ƒ*ð>AëÖ«Ñ^i+¶NQ³Ì{zë·J˜oËÀT¹»'s܆zméû”’æ˜X~ LÖ¤tjo;¹iǸW®á@.‹¦ÆÛ�íR³¦©û¨b¢®HsÆ?;¡mb¾ÉýCýÎØb wÀviáä`e2ˆ v/�61˜c×2Àr‹P$9:°™U|;%ç÷É+””alû5Ù%•}�/ Ï1IÙ_ÓÍõþøàÜï8$é=0B‹¼t"A…­îᢓ9"iýÇ´"P¦²ëxÀ°”�&9\/·  AÿéOø7b¼ ¢9Ióy¾$ yú¼�QÓK80ƒñ�¥õDÐÖßÔ^•åaÞ Aö§ùŠ„ ãÊÓ®®r- ¦&*t¬,+aZ«‚Ò®yðBB«z‹Åѧª"Ã*r•täóð†a™k>+Ò«XÐ+sÙ£h:úÞCTFP†]q¼ëp ‚�^.À<)5,°�uT¼äSC ‡<˜ÅÄõf€Ç|z«<¹,Õü2^öçYš_⊗ ¶ô:3ùòæ¹×·Lùw¹ã+Ñ”fž…ÙA°_±0wDŸˆnž)Û:^].6ëK„Øm¥<,7&eÂèXþÏǾò(.ös™7Ž.XÂ\¯/Ó†¸7w—œDê§¿·E^ð%-alJ™Dcid7‚ó¼„Ï£†âþ„æùLÔxOɹéð{¦¼ÂÝ=�³Ëk°0 ú›Zz]ð§:»ZSq\¢ù²ö¡ogÓèÇÝfSY~Y–¥òÕìAw~ÛJÖ譛¡ÓÁŸíOÞFÓéôðÅn4…¥”r6”b˜S±- /êo‡'oŸüõÝÉ�Ò/ù0î”t eý�â("<ÅçÛµÏBÙóíïö¥)ÞŠƒ_ßœDù ðœ 28.6`Š€Fž Úò;1Þî~Wï@ºþ‘ân—ð@@ŸN5¿ òÎ0¸'Õ»!]1üƒ)y"·!Ä}®1æäÙHAºZT4˜6N?‰3ÓÐŒ~ðccÆøs—e˜¢íLwIZ*‰²-¶«�±c^ŒÑ–îÀ6ÂTíûVÉ;ŽzëÏø«Ë|–Xrú*2Kö Ά÷Ìå�=éFSêÀrcPÛùœäsN 2MÑÅ€h­›Cì¡wÔnJ6BŸC§6ª*!PWM3AÚ»aTMOš‹­<•Ê­Iv…8ŠŒ‚MÍ \ÌËË9©`¨é™ð+$èçBMj:=ÆY´µ,5�gç“?¦#�(üüÚ³Íd ˜ÅÉ÷Ø['no"ÓÉXé|ŸÔ^£xß[»Ží,.mþäA ;΋ m`‘R¦È6Gìã‰À¹ÕÞÍ+Êž"ãa‚-E!krÙÑç[rWZ�}£M=!^033ô¿Ï _k )Œ,Ô)#väìknª ewѪj*AÉ¢Œv˜²ê·¸‘ŒÙ �ãäËRÒ~7td@Ù%’uÀ“颳ÙmNán�+IêÐ'šF]S¼FsÌc(“Ž'!‚b 8Cgßµ\8Ë8øžAœ©¿¨CÔðÙÓ€Cší×Ü­ìûöT5w=—!¯´vUØ<\Œ ɬ/UÐ…¤ý£M2Î’CÈ-±cÊŽÑ‘fÚW! pÚVIµK^Éàtb©7+è“—D÷ rÏïêÁ]РÆÁÕêzÕ¬iímÛËKî7ç?ilrÎEß`¼ºE˜[U°äËü†| ¾PÓA´ÿîp Àpä¯ãtÖ}B¿/þlæÇ8Ã_n„@GDj›uèHè7F?>“&µiÿž—i¸’ú°·ˆç¯ýŠ(å|´nrɶ_¡•D\¾g-“rBôçš ©Ó"pm< N~rÆÏüÑÍKfÃâñ½Ú…m†Pòv_ Ê=««ƒ?é_D®ÃRýÏÿ9ÈÉý6øóŸqÛå ú™®qMá‘_ðöåï©ßÇúÖâÏØÈ0ÿó=»éÖ›(êÉ’DÒU~‰iqp¶v˜TwÉêçOúŸXz·±ÿ­Eÿ£T·öï¸Ê3¼ÀvK˜ÍÍ£Áåà±ùÔôš\Žð=ü~›ÅÖ°‘K0‰¼¯�°÷ðòùûÛ8¾|Aÿ}Iÿý�þû#ýwW^&¶vÜoDfš_.ðŒÓßV1;n.ãY‘.áŸ`üþ¶™ ÿ]Â㫼D²2ÐW3x>ßn¶øgkJ?HÔ'ú‹ç{2Bø(~?…_Áoà'ðØ<¶�Íb“ØZ¥¡¼H$Z‚ÝÎpãÔP\cïÙðNÅÿýåpA~F8‰Ç{ƒ7oöV«Áðøb*ß+Kø'ÌåÁ“““'ÿÿƒâ¿£ÿ�¨ÿ�ÀÿøoúW¡ßEÿÕÞòÿDúôhÿF}^ÀóÄëUaxxï~SŒ,¥ Ýÿ¥$O6L"çâ¿aã%ìM.Î0ïb¸ÚlW’~ÿ‚þKb²Q†×ø[I”^_Ó/9÷d˜Ð‹ ÖÁ_úå™ O¸Aô`á¿N¸AU*ø×ý.F×üÝýówá|ÿIV¦Ø•·KÕ‡êQ>̶ËåðOaAT<úùÇ—?<~üûïÿçñŸþŸ'Oþ˜[°æO@ÁÑ{{~ü粘_¦Ïþ×à†ÿÜÜnv|9ùCò³z¡ž½|>Ÿ-v+wWñúÿPKÒV1]Œg Û‘†„^imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_en_i18n_txt.ad9412b1a967b1cd.jsUT ëÆ«jëÆ«jux 臼\msÛ¶²þ+¨>¤öDq›vÎÜÖߎ%K²lIfMÙ9IN¦"! 5¨ hEññ¿» R–Ý¥ìtî½_Ú˜»»Ï¾‘€ör•M?6Vj²”ÉÍYnÍÒÈÛ7ÎZßøt´‹øŸÿ|ü´°,òùÞÇ��Ü%¿ë·?™ß• ÿ÷Ÿ�§y÷óO?ýt¨ŽþûîV:aަ…I¼¶fO5Í>=óG±wÚÌöÔþA¾Ì´ßk4ö›îèÿñí§¦>‹‰r{þã÷Ÿö�ŽTÓéW¯ð¯ƒ<Ó‰Ú{óv¿Y<}öÃþ/NùÂa~}{td_½zûö›£â׆5ªqøCxò=ñ+Û8ü1<ù‘žLÕªqذ~®\ãF«W¯\9²|zßô�¶ÒôM×Ôûwzºww0—ùÅÊDÎ.•óëƒDfÙžkªýýR$÷Q}úżzµ§Þ™ý_P öÈÃ/­óùÑ]b kïdš>LZMÙ8NS0#`¯a8ráÖY$C"M¢2Ž£M`qjaoÇrI”Æ=¬C¤œdÛþÌX§:¯ô¯‰IdÀ%¤IE®à?]™åêMdsíõ-hþ¾‰�éiõ0çæŒùÁI¦¤)–ìö Œ (& ²uŠ‹rC~®;É ÄP¸¼f–qIC¶BÕr0­TjjÙÞUDÔ˜‰½tžpF@Ôù:ÿy` ƒæ…Oíʼ`Tɉ’ë…Š5Ô*-ø) Žólñ$R|+æÀ^…A·áhÐÿPæ†FøgŽ«Ü&È=Y@ú‹£²v­ ôú¥¤ ,ºg�fãÙq ‰V%p’Ù"…PR|æ«" �Ê�øÝšß—�s5ªþ2X\˜7QàǤ›,¡*bW!åaÉT;•x™.4‹…"#ùaÌ2S9#$lo§µ9ˆÚ:á³Ì6Ãf\05èš�SM!=d[u@p>ö˜®—Šç�$(à ¦×V„nc¼^ªæì«ðPè"js¿¤?‚O`ÛFÐæÆã¿ SåÜ«&Aû¹Ež:È –¨\¦ª.„©8@á?ào¹Îè�·÷˜Ÿ2›Ü(jjBÑ_Ž-þ5´)”;ÔAMA«æ6Kù ±ƒ‚ˆ•'N/—cõ¹¶éGßÅÅÄ(L6zù¢5ú¹Mâ2)õk}ðÖ±œ|ÝVJ^’+Y¾Šn“|“«%Ô§^¥¡©‚¼Ô�r(ENRäØ_·û'—Ðäz*D¬ÏÈA¥9ΨpKèÈXÕ‰‚ƒVŠm¨“J›Š)}/o õ9QK/ò¥J4TZ)Š…¡=T]•ÙÕA¹È3’E¡Éõ ›gÆm´P‘²Ä«“­šYÖaz vSl>íG„U½D€ËäTK Åz‹µ�8 ”œ˜ñ¨áж w4ŽÛk�»ÔÌô7 �kZ35*³ÀÖIuÍ"%t{A0ᣠkeP4uiÞZeGOæÚÑÇÐ[›�(UÈ)Ÿæåc @�ÈP¥_µã¿±Å—šþéÔÏïø°ñt³‡ÔÁ=¬ú"ÕnöP¡c{/[ÝÙTgŽZë>ëN]¢ŠÉ:„Ź’à²äPlŠýkH15áÃL©Êú@Qllmæ5 æêQHD[®æjvR;”G…)C6V¦Ãšöw4(ôuT©šÊ"ó-©Íìð®6œNQ± Èi¸-»,ôúl¥s Ai�š¡0ã 1EDnØ=̾™¶Ò2Cø·&.AI벇¼ú5iˆÞkbdÄ­�ö«‰qïäb°Ø ¾z^&¼nì7‚¨…‰¬¶dûßv3ó³ÒB²y^±�zþï‹‹<'ê ‹Óü?(öYiË®,Ÿà½-þUüðýÛŸô‹“9º,ŒUƤrÁ¸`Säᩤ˜GŸÀw‚¤¥ëø2x¨²6yZ܈¡¼�… XÍÏ¡®�ãÓïNmîq‘ÐׄùæòVm% J J=¤âÄêG‚b|ŸÚ»š€6µHƒ‹„é+±6Ú}¢Çê\åûDï!ËÁ³o fž1ŠïeZ‡ùîHì]êb4¨¨e gç½@±+„m¨Ý‘©ñ8B<�m†pk³˜lCDWÇÓàø—jYL2�àŸ¦wLõ›éY°ÆPª€¯–ÎÜfÛ¿µn ó„Ï"ís~öf{§,vÛs�‘ZY´¶%7J4Í6 WNFm³hmÛÌ.&×6 º6”GR\†Üfãb;½ö5/ßR ¨l¨‰j³ÈkN‚Wþ—$…³¡³=w�ÓÝ¥¶�‘i{½ m³mQPb¢´'l¬ëÑyŒ 'l”9ùCcµ‡ÞÂZôD™…tø‘ï„5× –A™'¬A*†G˜=áÓE6S!¤vX—ê$Ä~<Ôa7Ûɽ ©¹ÃúDg¶^"v;,0:N{§h4Žâeç6uü\Û%-Þeݧ«Miè.k‰®þ­Ðe­Ð•Ù ŽÞò­.kŽ®JUh}b�uºÿP㇕áX#u¥³j{rVC]‡çr€ÜcbTP�ÍÜeÕwÁ0µ˜|{lì9U†Õ^  ­›ÑNzl ìÂød.z…¡¿Ç"¡W(gr…~Ñcbo^gmÙÓÆPÈ!ã`ª²w�µTO–aªÇF9Ø€!0ö"ž 5Nf jlzl^îüYHoÁŸ2ñ0kW6Ø•>ÐhP ÿ¾S%ªú,îú¹“tr®Ï‚¬¤($PÝÔguBøj¢¤ÎÁÞÈeÄE‚‡pÆÊÁcvÆ‚±ïäŸHd• D‡E_?Ùì˜ÕxßK:ëvÆêëL¹àæg¬>ΠÀ ÉëŒÝí©Ìçj�ÇÃʸ…Ê;³.%�ÏX×<“K¢ž³�+³ÆõÎÙ¸t¾v³õ—²Ù=g#ÔG,tΧsíôD Ïù Ë.¬£êœõ°aïsòö‘ºÕÄÍnwd¡¯ ©óœ5ðv1ºádýü¼X�!™¯†äÊ™­`sÎçò‹¼™—j°Éj I6W ÔDÊe¶  ™aÀša ¡2óÊä^QÙ0`CRì´HsCó°ºèIY Xÿ¨Üú9VšÖ?¶u?Ð~^”o7l„Ÿà«p#l<�>´ƒÖD /|Ȫ}ÈK”vÈjvÍd ³r{3C›¥ö––b= M)£fަc‹…`Ç!tÑd¢!ë“C(Gf2O(ÛYŸ„ò9}dÞsÈš;8ËP&*-+Õ!Ƈ2Cÿ²þ;„$5¹øØ* ¸ÿ„|¬±å ow†lt9¨EÖ;6”I¨,¦¶7ÇÆø Gýg�¥Ä�óP�(JY<£ÙrÈ'£À�…ôk/¤²khjš†,‚a|Ч¹‘��BÀ Wd¶yªÏ:€”õ½I|Ȇ§¡ý‚Å_PÔˆõ“‘\èPŽX?©•hËl£ë#=£Û#ý`à©Ín:Ћš$,º$P'gq°h)Rž‹EfEç÷F<Õ’N0�XX�ÀäXŽX@ŒtP4k Tä%K \°w± D±–ŠÀ5¸÷ˆ5A¤H²hW³Ùl]•}kƒH. )PÖM)±‘(šëL/—ÀƒªŽØ É›ê}zÄÚ ä êˆXu„¨ipRE¡œQ¾ŒØHiŸHí¶wÄ2‚¾Ì[|;ƒî±"ØçåAøˆ�ø)§˜^"Ö¿a ê""Ö£gão¬É“¡õ»d-~‰/d £I—,Ø/í¢Œ�—|Ç¥\pþKЗEÀrÉîîr:FrÌJË"Õôõ…æˆÙ (Æ×hvÛ`1_ ©u2WYFp‹Ùœ¡ZŽYmÅ+•*"³À�¡ì–K:ôÐŒùW—„ÆS•)êüb6FÅ™½-¿ÚÄìÛ—øVféRÂó™Ä¤·bñeÌ'o¶ßhÅükzt)Ê\ã 9Ö æc¾$ÇB†³€ŠP!ÓǬ_Å� ÆoÆ;zü�©X·ŠØ?Z1¶ D8i*rðÏÔ$šÞCÄl¶íd"–Ùmùæ.f3jê0( ‚ÒY¿Œ×! Ål �Wø1!Ä­1‹ÕqánBGÓ†¦Ïæ[àó¯äç’fÛ»IqX%U=°&W³h[z?f�<žË�ü,FÇò½‰Üc—c{£Bh³xìà)î±^�)Æ,QKø…³Z‡Åãâ[Ac�c(=‰Ê¢— ¦|Ìâl XÕ© ¾8¶”Æ‚k\à=I$³¡p,õ*lƒÅÌXš/e ¾bcåÕ ~ÃCl_±½š•¡öŠÕåÕA|ÙÑX'. Ÿ­ñ#úè®XO,ß“†×·ÈÅú•+ÊuÅîìêËDm°rÍîíZzz-ßÖç¹ÞÑé^ã€ò&¾û /iË"ãš�ë×±¾@U€Ê¹æ¿ –o’®µ›éíLs͆pÒå_yYx^kå ½M¼fèµ4…ô›w¬o¿ƒ^N‡PÑ-|A‰å7ËðÿdÝñÜæöÁûžÕÑ{µ p÷¾¦ËY[O'?ðyœBvø ˆL,?To™?°þñA/&r² G e>ŸXÈ�‡@ G¿Óêp2~Ó-ò‡µ"g½¢‡"ðÂ’:Ï •·ñ°3„½—BC®ÒåÉRëv-o)¢åŤ–jª[åÂ�Ëe�–Ž$6*ÕÅbÇäCbxÙôx¤5· <5d¿oάÝuÌ­ä‹Nù>¿07ï-í8H8žYdÃu�×ýr¿ËÚïð¬Ôé©ýf-–x¯¯º†ÁÎ�üRHqlŒå{@ñyt˜ ÄjlÎ�ݘÁýê¾dccÒ]¶$«p½íÃR ‘Ì%] QP=ògÇ:�B'Þ ýtÂÅ4<€Â(­دˆ�p½ïóu<ß\^ ¼cV}ð´ºÓÒôÖó¦#qƒG¡¡ìï’ñ½-ÂÑAü]½%ðÃÎîä¤È•ã�f-œË.oÕÔ^Ç[+z‰¨šÐuñ,ÜÇž¬�Ëv²N ¿Á¡¹’вê,øÖaM^À­Ë:ß=ñN§3Å©{|Å'UP½ÑD½�êôš{eDWð>wYС‰\™œw€˜(Éõtª Eûðh×ñô�ùÃÍŒÍHÖ)OŽn?†HƒÈlÃÃ5äÏc†›ñìÖƒpaA;´[i‚œOvÖó’§Uç;7'ÿ«ó‰\IH(†¬ù!I9—¯]]€×'‚¨ŠPhó'^I 2fÐ&oÎ@£%—K•î0ãEwÚßæÁ*"°£?,lš«ä[²Óâá.›Œ«Òï¤3x€�¢4-Ô|�{Ð|ÂÈ?”)ÉS⽪Í}1)ªÓ×›ÓÅ%—€œ®P�gîĽW0a¹r£üA†•ÎÕQ/*žf�²:�\Îòp ¬¥±ãö\…Vº§’Pn¾nTÐ]Õ‹ÐZ—«ÑyïJ_M±†ºÐ³¹™BWZbBA­´ˆŸŸÖ#?ªQïS;~Zƒ½Ó~N¿Þão9|Í<á·hè'@ÂA4ý�ÆóS=ú9�­‘_+ÒÃ<œHÆVò¢è†3@½ü¿*ˆ”ñ7\Ê“rÛƒx1[À ÷75ì^ã5{¿¹ò}ªmÃ/‰Ô+¤ü ÐýˆäÛ‰à­ÊB Uã•ïÜù:§«2=ž¤ä.‚ÑsªF7 –wÅÉPR`9^U©�Z‚ÿiïÍ»·Î<áÿßO� ÏtUŤT›�DݵU±£-¢Êu<ÇïÑIPDŠ”ŠQù»Ï³Ýä½PÙI÷LÇɱ%áîËsŸõ÷Ôþ½:š§p¥5Üþ1š–Ū�ñöÂXÌÇ Ÿ)1hc•Šeë4�ˆŸ¹áÙÞ%«j/"Ÿ÷eš�¢(м0ÌND”#¥( _Ä –B1E•ÚW˜&›½h„qb:ÐXQ6Ã&¥8e Q�l²^ <^[Mã*ʹ¬Ò†HEiïEÑ(MéÛ—c%±A1šé"tÂ�°´—¨Y5/ bÀañé1ð zû av”ë:…æ&émR×@ªÖà—�é¸?N*ŒVÁÊ}ªIí(¹CÒËA-Gç#Þ\bU(:Ÿ=†ÍÊëõvŽÒ ö6r7½¸'‡zàªëÐ|͘­1TED©ZÕ°«·rÓº×jÔeúW�k=Á VÊ„^††GvlœÀ$‹ZŽlÖ»X­°Ã£ ú’áÉZ,R„ç u:¦Å„0ÆH�jœ øõ‹ÝtÛ‚6†Á’PhE�Å‘Mγtz Óì|ždÌ¢ÁAÀ© —ë<›mÞ|÷2:,êþ1}† ÎÓ5zÕf“J¶”ßï½f)TìФ�L݇mUýw¤ u‰_ë ýiªbh“&Å—žoYãæo)6¼Lª À’%’Mì"Ëañ—¼ ð¥Ô•€_“ènQŒ“…°nšÕ ¶*i Í-š”Ef�tt‘*‚Ù¶‡Ç´úê é³d„¸Êµ:Æt~¡t¬§öõò¶˜Ý.Ë;ñkŠë±&� “¬X#ä(³É®ã½‚G»˜îÁ¹•Óýæý%ª“±}²ÛAº€¾�•Kóß.«',Èn¿Ê¬©­®“~Ÿ!òÕæÉó>’N¶:Mß[¥5ófžVú¼£«çÎ(brñ}Ø!ðú-µf� ’&kø4Dhõ]¢`!Œ~Ì+dæðMåûÁo4‹~’P”é�º5(TÀwOXrM—+·ìu¡_kj ÕÉ(�=å±¾A•Ö2�nzò.ü¢*^êBøÀh1º1�:N ÄqÎ`“Qü;Má%rꈨ’‹~¤Nà% Àë ÅŒGyR"@%Ÿ)ì¤`~’M?yñ.-ÜŠ’ `ý̺« $ ë\q—,„× ºÚxÏŸ¨ÐÂYâ×àlæxIîÊÄ©L{¯>Æú6'ÂA¶kÅ}¸Ž¯ë4Žïìj�`ÕÅzšò9´8ÓfÏ~ÛŽ/Gò‚ÉiìE$çÛg“ÄpâÄKÏ[µI¼ä‹}-“¿(6Ö>ÿ!šAŒuT³¶0€5ÃC©•VnY:麦ƒ-Î0O뇢d! ›  ݻۋNo®zÙÜ‹®.á§áùþ ç|¯×`ym†Ç£¨Ë† kk;Є›×‚Åáuƒw¾êŽÑQ†�dÆeš|êãÖÔ5Ò‘ÊÞ¼qm loeh…©ÜAt!ksDhaó§Õ*YÞÎḷ­öÿE„9Ì�&Ëèd‰t ´lhV‰î+bXté¹›*PY.=?8ó²úºgD®6é›&fa.‹œ¢U[¡®XÛ¶œv¸,v)2íåëƒG:ò^m@Ç7 •µÈi§¢�~ü”n×u]ä>EæQ±ÚDìèÀuGlEu�*þ"ˆlJIÕcc[7•QK™°Ø‚ÅæC¥‹Ñ6}:WLð l÷€íNÙŠ9¸Ùd¿ÂûVð•ÆrÕf9._Æ´ƒ{Í.߸Ÿb˜MžàU\» ë?%³é\HF6Ä3&Ø_ðÎnuñÖ½ßA¤uùyš”Ã|µ®ZØ�=–ƒ0$’ˆ „„2Â÷õS{Áé�ù„;ò Þ0º2ÀKCUϘ `rK¥”$ë¡»…‘ÝFz°AƇ:5%éöpÕð¥3c…ç-—n\L=P©6âŠtªô׬<`5Òûh7ŽÐðéê[ͱrÊðŸ{†¼t¶xº›g[Ÿë® 7I•¿3¡Vüä™A7æÌûpŸUE)‹ê§ùœE.ÎÞÞççZù%ÀRO%»Šôû[£Â¾ Ö…;h§CH몭r¯\}È'¤ §ëK0´+¢2�<xhDÝgˆ®6õÛH)Ôpl*™WsNˆøŠ©?Ôɸƒ O þCú{ËÒõ"A(Y=ræ/øBÑ—å‡\F€ö€+1ä•Åt=©�Z¬h âÖð° 0�Îê±##f…‹Ñ7äkÖªïí–Õð>pcnÖîaÕ®4÷ˆVÂo©ÔÔÁ)P_éçd¹ZpÈ=ëñ©–¨;ŽÖΓÍÉXØ>)O~ôŲ_ãM¢y]¯ªƒýý; àï-ÚÏï>÷�pæŠSû %¤ûìs¶ÿúõ›¡¿µÿÿùöÕ›×2–¥óÞ`'Ðǘ¸ä.e¥õžô˜Í¿ïy_—'#dœ8’̹!(šÊ€Zpò0 ?1›Pm·Ý ŠO õ˜ ®ÜÖI1MûEygÍe²˜–}¸Ä þÜí³H¼�ëXÕûÕhWJÛ¼€¿ÁQ‚Ißr_·hÓ¯öæõ’²)�à5ȧ?`€ÜØIç"äçïðÝ({� õÀŒß£s` ŠÍùw™:,Ý&"}ó ²À¦{óâ�žHÚiÏA>ÉïB¡uØ@¤ êå+Ø4äà?¯²R.mεë´rûÔüˆ·Ô”‹”Ò 0Áùr{äç˜r£{‘\sK‰¹‚5‹e,y²ð C)ÀIshMãõ ïIà f¦ÌÓÅÖ•d›‚I´ó傯B ùa&¶ÛçãX}ÜÛ#uòl†¿Þ§¢Þýι]ªdÄE£´äB Ü«þÅ ‘OMºÂ"d[R•<ƒ<•o˜BŸn÷È{ûR’Öä˜È±~ôyßB‘�ûÍý‘M?Ü€ÿ`òµ‡].Œh³�¢K£å²Õ@=åþ•yï©!ã;Kã—˜œ™9ÁÉ#1ÐþÁ“ŠñgôŸ]†RºÀ½Tµ‰ |žÐ�xRKˬ�שڰÛózÎYÒ¾’œ’Š=÷°CêAð+2­Ë’òE1ºãÄÅ�s(n„óF‘MfóPSsÏŒ‰ý È=–)NÖ?Áµõ÷Y‚Ú~Ò–ëœåöœÄÙõê®L¦é™?eÍ.Y©k°' “ο�bš„+†¬œXöÓ¨ö:�7F|Ö¢AßÚ…bFÞov‹ïbâOýHÊ�|­Ö%02$%�FŠUZïVR–”yê‚$]:ï=f¸áÌ$È/2wj/Žn8E­¹:dÅì×ÅáÚ­Ç(¢ñµaºöÛ.„ §$Cª�a~ž”ŸÜÊ¡Ý íÈÉ"›ÊžŸ¥Ñ!ÉNy'&î±®Þ1ävf ŒÔ“Ƶ­‘’æ,†}:ìåqHnø–)±¥±{Þf^[vØyÈùðBmésðÃþà‡o"¡¤¢S¥¼ª YIUFþÈ5ê§ešœuWÞqÅš–«?9/€þªUƒÙIä�ãKê~Eq-õíÕ¡(Ét ûº³›`P1N鯜G?˜{ŸQ(–w�%’gë‰MÎ ßâØ•¬|:”:ê<=ò_Ô˜õœH•=7ÂkæiîÈ Í!˜07§l¸éXNþä ‚ž/ؘ¬Z@�Ù¼é.‹Š Sû÷/{ÑÛ·ozM‡cþú¢ÃÖm�ØÑŸqϵ{¶†Ù\w,Ån;äc\Í´Y}ŠŽF§ÈQ²¶Ô(<€;NîRÊ.‚O"–ã ÿ¤<Íf@޾¥¤ƒŒ”ÉMþs´ßùN޽–¨ƒN«¬½�>¦ãÑ\e°,f³�åNIúD¼Åðiê£ðE ûý?¾¾ Lý?êý?žÐ:|¡k@�‚~'¯Ï PÙm),Ò‘y_â#ý/œè3ý¬b~íg%?¦¤›}„[Mùdáìë"€ I.IU=%g©ÍÉ¥kR˃–¹O"'C¥2 SìEô³š¯´C¾0¡$`%�µ¥c“bq(Iü²F8™–6Õœ9“¼À�ï›/ãÈ Ç¢Â4®‹Âg�Jø†OïøÂ“9ýE1†!Ôhi˜OŒUßâít5VNtŸ3B3zLAïpà‡¾ü6ì×¢lÅh=KçÉ}F €bª`eRÞ‹9±º‹…wQ ò~@ÀxuµOÙ�ÃÍä=¦(`¶ÕíêÔê4Yr(†iTYE+3‰âÙî)\#"Œyï“z®“B¶¥vdµôÜ>f˜ËÌì/èrqúQ†Ò�Ž}¶u媊͓™N]Ëi–ƒ‰%ãðv||´èo­V—@"\Ë&9à ý”Qóx£â/0>¨G[O4‘Ðãp7®�Ç$@+÷”àËæ5ášÝÇ4sº=«©8 É�»ñ¼zaŽ9-ÁT<è’JßÊ$!á¡�‚[ÌH¤Ê™Wúýeì¦U\é�~¼$(æ¶duSu»Üd¬Ãº5� ¸ež¼º’ü|Á8d–UhÌz…ÚÅ’àŠðå§“õÉÇ1ao¢¬K™ß…3DjlüÃùF9úÀ{I!Yf8â1¿"lc²®˜5‡•Éë>ó£Mg°'ÑžEZásVÏËYn»$Uâ KÂ[æá9ÞTÎ5ÍÙ¤w·‚P_¿ÏÁ�£ˆà›qŸ�"G6h�ý?7é¿ü&QŒ0®å-zRÃÝ›Þe ¿ë­[„õtVGËì3Ò4+©q“#¶´¥¼fY€'5ü'ÁÇeñ)¥ÕÇ8æ:¹�ô�‘­ÐåEšÒYì¨K´TÂâ’Çx.|\Û:ÿš¾æÕÒ–ãDÒ–“Öݱ {ä!�åè 5‚=_l¦h®ŸË¡ÐKð¥Jupš£A$íŲ•ýr�£\»Õ8P†ýÏ”y~F¾ü>æ×ÉÎɪScÓ‡˜ø$Jx�?�à5ï”�{"o‰Ôå)VòŸã阚Ä×ß”çkµ�–ÿªûá_ÙY8ŸÞy“ÖêicuÁ©/íÝEan¤$Ê‹±fÿ¯ët�Nû¸Ñ(â÷˜—Ð^@oótºf{\£�"ïOS´6†ëséíÊ„ñã$x†ŽÊr>ÚÆ~¨?ë–øÈ4[ Oà2ïÓ×`ÝæA5I0âHÔžW…\¾̽95ϱb$D.zE‡×Ðh|õx…ïÈhrïnU>Ý8z­P/n>ɧ8½v-˜2¯•–]­-))Óy}ˆtsØDAÏà]*ôHý¾ARe™…â.ƒ ù�hZG‘Ë犨¼›É¡æ*µ?…¥®™&›Ê’Á^!ÂEƒ.à÷ÿMËO?ux&L©Œ‘¸„UZ¢Ñ_|{~z†��Ka6~CßfíZ}®Ã„NY8 a¦g ~åe*ˆ¶Ã ì=s¯Ð­ÓZ¯ÑÿëKbI™ Náà‘¿ßz4~¾S³o î0%‰[G*s�r>� {è 0å‡v¾µò�´wIîÓºŒH‘Ìn•£ìè”Y<)ÔÐøŠ¯_‘ûDJêeÊr¥¡{¡~ØÝ¬òú˜U¤²é<³–ø1Qmµé²î_]'¨HNèˆÏk€À òMdÊ«À?sN˜geÌ”S!¥†Óõvê¾³În÷�¿¦g\xÏC1âÀˆ…Yv-âbަ–#¯…aVX{ÔZmݧV Ú%™ËM�žDŽxa5'~Þ#­ à½»’½&TÅHVž­wW”…¿Åu¿2è]ñé[-TË9Õð/jlæc*Õò…Ùo»˜uü\%ÿl>Ç?‡5Þ¾C�fÇ× 2<ŒR•¦S¯zß"¬ß²¨Ý–Õ[죺@ËDˆ˜k\Ù, mª�‚œw”ä£4 l�²±¡L`í`ûFÒ]VY=6«‰˜ëaG­Û.í\^@[³‹�„‚½ZàJ¸¨HñøyJ©BzVNHh÷ê˼RÄQñÙH¢ÀWR––å94áKÔ >ìâ÷¢M3蟖{?åʽó§|qÿ·ûèã¼ß‹Ô¯õrÕ‹~»·š¯žíŒÎkjm›u�‘ÕØ‹ÑÍàúÆâkŸD²4ÍöSëƒø ô ‹æÉy*ùSD~i ¬RYu�†H±E?¶+Eȶکÿµš£zP£Æ°Ívµ*pÅÕ½æRîí½¼’÷áX É}‡C$rûè?7øAëÿâÀàïv¹,¿0¨Uµ8E¾ù¬)í ‰åâä-9 öE~“¼ÜÛ½µð‰[6hqa×êÂ2´•C3üÂìEÇ÷=$ì¼ð…ø\Â~\}ù>d¾Uâ—Ûµªá,!äöE«’rk0¢¢2F½èUŸ£5_�¾ Í:ê +”£Ó÷ò”ºƒØeÊhÇ𠘣ª/G=Þ§d‰(ª=ÁÛ¬³¾v ø•áÜëÕì]9`^¾ç˳X –þý~Z±¬8v6©e¯Ü.êDïטÓvÀå£#3ÆF !Î�[�òFòªìCnâYpN&в.�•`¤�ÏdxÆ*Y=“XˉNjL©nt�˜˜Êá³yÿšª>þä ÷Œ WÀ~€'Ä¿•Â:£G�-:àë\|B·ÜvÚµ™�‰]À]ó:v]ª�¦|»Š�˜«JLº˜Qr^im‰¤$\ÿ’·£^ÀÒkRZS(ä‡Ã m~¾*ª*#’PÓ¾aZ{ÂÑ+õHüþM%…6F•ƶ‰Ÿ2P¹†5)VKÔîC«o¥urkBëÛ9¿@V§:+”z½ú^IQ ??a9*®åwÇCôõ7�£ˆ`8ŠÒê ñò9ÐÞC‚¥Ÿ²[ÕýËbüëãOÒTQh/»`m½0�¥×|ÔöìXŒÂ­ŒHç Pȃ[•œj{åûj¿Æ{‘Ä›VëjEîÁx(3FQj‡‹sbéH»ûH$ê¸ÌÒ\»ôój�îqó µ: D/ä«•ãLÊb™U¬]dgþ3ŸnõœaO $ߺ‘×½˜¿°)WöBâ?ñÀÛLȉZ9d£Oi-NNü sA ·qU"˜fĘhãWOAÖ¼yä5™å÷õ{'°g’¼­Ô2rnò ]u°%Ĉeïú=»}eJ�g˜.Â*Z¯$DCƈ~Ћ5ÕŒIäï*8•Â%§Ep–¤/dææ{É£ÿ0ÿh-¶qÙ·�óeÉ;Øé½Aºr� ê2ðÄ ¬Œ¤(+Ó»¤œš´/2û­Ømÿ�`@¼ç5DQ�©Ž’ü4s'v™0¥7à e¬~ *»›â&q:în‰/Q?2Íʽ¯T�`;áhTÒ¾ô- ÏØƒÕsÃGêÃõY7#§ìèÀmxÖÛ�¶?^YC±Àø³R‚9¿ÝëŠ?�w» șæÑCÛ<†@ùÈš}1ùb‰²ÐPr’ÒÝ­ W/ʘvþà±p[ 4,0†ŠÇÊ*2ˆ¶¡k²µ’ ¡@Ê|‹RW–}Žî× Œçg‹¬ÎJ�JS^�òäëê7ѻɖr‡‰x &ÐÝ0ð1œˆžHdù\L~eÈâA(¯½…¯é³*­îtà‹ÚÀÐŽ >ð¸g¾bôŠK9ܺ+�Q‚bÄ2¡Vl‘žú6û]ÄhY×cܪ±G‹¢¿6ŠÞÖÅíÊ·&¦ŽSÀ›Â‚þm¸Otø«‚mt è£Ü4~ÈÙ×j¬^xáÔ%¸m¹ßW‚¾Ô4ãii«)gªYÕ �þ–ÛrÏÊÚf�R… Iñó*A°±#xœ—ðpNîÓÛÌÙLtôÃI4<Ž%$ÄE–Ùë¤Mqd'Cl€.çwé™à§9 ‡©"´ôyºU¹¢¨]«†;u�ÌÂëÝ"8¡u•"±༛*¸Þ„кÊéxUÅ%¹ �cÔÍ�Ö5«è' 2å*i ¨bŠtªÃÎ8a9~vãB„•¡2hŽd ÷•gÏŠ‡H•Š>_­bëüœ‹)$&®—3ÒJÚ¥Gí@ú ÆÂ÷•U0>íKáyÆÃY„Ê“§3úЕ*I!|ü—ÕUÐ}ß¼�ƒSî ÷9^ wëäŠ'¹`Í€%çÄ›ú¢•¯u¹È$»ä9WH¾Å+Èý¬DÇ@tD¦˜¡'€ÓéÁb xœs•ÉÍÓ‚ÚZ’g(}¨$ÄCD§J+*D ê(ʤӬf,~Šb#‹!›’é”´Âð5iü™'~S#÷# ƇŸ”d'†¤�näÈ=c¬Îzde‚bØÔv̹O9s‰†%Gc�'N9‡»M•Eüߨ¶Ç©£sù¨ �–/·AÈbŽ‘BðÃGªÞ\IüÑŽÁn²<–:•'Þ1sš0³o¨*gZ@¬ ÐeV1¨Ãº‘´9™ƒÄ&Ñç裸ùV:¦Ê¿\ep‘ØÃ ‚.å"BZÎ=ÝWŽÌ ÁÃYç€Ã¢6’,‚2$³HhÉ'€S�øÔÀ¿Õ°�5ŒaGìì´Õ ¢©8Opj¾qdÓVÔy0f‘³z#ŸðFªDæj¿·�fûôUæ'Q¸€t¤b±œR‹úH,ÏçºÞ�!ù3/ Á “¼þQɱg6—$ù”ΊÂIoÞ§›«ª0cVñ ×èõwLÄy6 «xûòíÁ¿Òš’̾ãÑ£û‡S’#(Üÿ8ÚôF§Ó)Kít ¯¡îæ¼[º2x¿YNhtä Éã­}ˆÞñ¨ ‰c*¿êCªºlèÊØEî¬�IÀýÚJ Ù� u (âpu˜™6p³^ƒŽVkÙ,R•ˆ$½ ÕßBÅ¡/ÖH,~o1׊+Œ¥Ðçß3Qà6ÌÍÞĨJç²Èއ�âmÑAÌð!=D8 ÜLRKtÙ.“=N"Ô+½ݶ‹Ãɧ�¶KÊ2>€W)¦Kõ¦~–cÍt ›ƒJ ÿ¸í¼ç¿E¸Úòô5“ààå{Éý�–2”½Ä’þ,Y¯ C£‡z`møE:ˆß©haÓ;Ù„­{Ê–"ÉYáþÿÞ³.J¶_v£fÿ·íÃÖ áú@ζùÓÑÐ3¿MÓI‹Ü¨Jÿ@$™-bù¡I’8¼¸H>rVËðéMŸ¦�Qñ¤ã¿Û@7’6PáVÍesUacw>=MUzUp¢´nS'&œêEªâçl¡ËÜÝ tYgMèí‰ ðï»Ú¸œ“šÇ6)Ma­Ð` w,†^}u£Ú#*QªÙsn⚟²æV¸ÙS_Ñ?oµu=o¦OÆö G”Ó²XrlèõsÆMi†¨Ñ˜ÞÓVD9Æ+‹ÜŸ‘AŽ­@Ÿ;œxüÜ'‹µÛ ?˜Xݧ®˜ŒÔBt]«íÍøÒû*&‚ýx¿(0çNêZ j¹Ù‹Þ±8™âžœêÝC@ñÈ÷®lw%`Æ�Ž#ø–ŠG¹›v([á±ñFòÍæOÈQŸsFOÇäâ—s–ƒ­Ó#©œÛ¶m¶¡T�Íd (Uá_{�ÇÃÑàðìäø V?޳Ëw1ü+îž]ýé ¦ÿĽ? Ïà�Åo™ÅüáÛØs¥]Úl¿.åE,î…aç2esZýç{—ÉxO³Ïa,’0åC�ä6y �û}3`¬âxS¢žEt‘¢âÙÂátõt$9‚âÚmþ)MW²žÄ‹Eô ÊH“¨oX©â*HÌÛ+öä‰ÀEOØÄåé)ÝŠäã®2vÌãOî}.ºj".w„ÆÑ検ØU)âêýUÓGL…=ó^«Ûn«~Gã½ÚÙ/¹òd©I²®b™¸±­�鋼¿ã–ãðaØ·Jí“HGÚŸ°QÓMèÖ‘þ-C\Ô¾zzž*ÅF™þX¬GSB#jØ–·"Äè•#�LþÀ_TÎXª¡Œƒ+‘Yä%¬¢çcÔ;Ï’õ¢~ÁÙ»1&P)&(šUü0Ö*åfeØ,ËKîQQcÒ—ý±èï?3já£káÂÒåªÞH e—©ŠÀ#ÿ¢×Æ'C¾Sb—(.";8.¦N½ï‹Ò9©¬[¡›doö÷ Þ0Ľ=Y@?sì˜7'$¾F1Ü^y†Òæ­Hzáç ì™t4$Ý Ð’Kžò�Nh]3'Jçè’c ™žœ2G~r2gÉTüž{ˆ-æÓå¡ËþB|ƒ�ç;ܾê@ŠDÇê¨þ½ä>´í@ÁÜ19ápBSWX°@ç§nc÷ô…ÂÈ©!Ë>žÎ>®O?4:º<ÎnO.Þ /NN®‡ïÜÖÑI†N*9ð iZ²–óÃÅÇÁÅÍÉñíèòôÆ×Ó‡ü�Òt³<«¥Ï›÷×'ƒ›Û›¯Nn?\Œ®Nކ§Cà�Õµ *^]Þœ\ÜÀxÏ~¼}?¸>?ýpv;¸º: n†—Η®¨9ǰÒó¤\‚Øc»1£Õ£Z%K¡in¨(øŽåV󬚇 ^a^›XñI�âfâqQcZÚ£= U8Ô¥È4¦¬‹ôS5à�gz§”©Š¿.Q7’*,“Pï_¥�ÁÐBµ�fe-W£¾‚€hmÁ`E40ËÙÞÆØ^ÔÁÅ�­§0(wºãnÐÑ¿|†©Rt·Î¦œ¬Bu½›²Ê[ äS?ö~Ìž œR]#�Læ…'9á}ÑE€Ä�'µá¢Êud%%ãÙŸŒÿ=CËT®Ô]Æ„ey()@ƒ·òÚºZɯìtay´Ä�ÅäÔ+ÂEé76ÚTuº„±Aޱx�=`™ %ÞSቇŽó=ç\y‡jv‚¾G“>Œw6ÐåvÑÕTf=·ÒE§ÓëªX’na©þ‘ÛN˜pà]Wi ô]Îñó'ò"Kðþ¡}¡Tìä�>.’ë†8Me·ÐYµXOÏ€gú,ûJ [Ï.B<¥œNZ¥æ ü>l§D7ñ…An‹#»NïØoB`„ =¨*¢£ñg…N¢ò˜éS.KA»¨‚‚tªÒÞ3ìŒ&Bǹ,ò Jë²ô1¸ü)pYåZÑNi„Bq¼ #Í�Ýj«!Ú+ú d>µmS]T&!É+Ÿç#ššÕ*vŒ¤ÜÕ(¨5N6� pÃGy+Š AÝÉÌÊ.ƒ�TÁÝåÂ༟¹;ÆþÝÉMôêå»Ãèôò::½>9‰5±jíÔ:ÞfwîÒúÝØþˆ¹O¨;\‘Y™ Xö7^|± ˆ%¼Úî]—û%÷�Ë‘îÁݲ*4Ï0wCÄÏI?àßiã±Ä7ñ»Ã^D@ÍüGÂtÆ¿òr_•)¢ ‘vü© )»ÌûÒ Š´_“`¿üò¨;âT�‰¯§áI¡à$–0Ò/Rä‹$Å ÏAwMâ&§~î²Â5zcNtÒW`˜~5Ÿú¦jzç<52 S¨…1‘ò–î‰b Ž)�Ũv+Kž‘´Jv?#-;bj¤½GBÝ�ñßqã¥büwÜ®2–!…É[¿Ä=kibósÃÝébiÃØž!«K[äK ¢èk/2y2�a`ÿ=÷ï²DPx.EÎ*Ê’b]´PÉtzZ”ËÖ�é¦ýtêW'-‚ºðÄÖbšð¤¯¢B§:Ù©ÒÎ!É{˜gð0p”ír¦ö|/:Kñ¾‘†Ì~¿·T}{^�i2I±Àˆ:n�üš2#“í4 Ia¼ 3íväÅþà¿…b¯“¦íïvôBy¬ôº»'®ý¶­×þåÇÇÖQŠ\–O ܤ£ËMõ×ÅiYüÍ�Ëq¾ýùLß••SOx„€˜P`6cuJ.Òç+8`ŸzQZOö^(@@`BáÙIÊ ½js�ü‹Þ‘UÈH¼…9d¢å<×(WQkJ!×^ƒ�}ü G±‡«p˜Õcè]eßÄúÔë×S7á7ÿ;0 Vz ŒiÊ#ˆß'@°ótzõþ*¢´ª()LÔð—³Näoå2;Ö¡ùÄòq·.Hê³zÔZšJ�2Ô*2p2Ý–Ì^¨T…Ñ�Or«KI£»uþ¤íâºKV¤Ÿ|®lpzæ6ê“>=•2èO빞zƒÓØáž 1ÿ3ͦÜ-vDCËÍàΣþ¾A¸É»„Ÿ•iÆB¯y Ko|¶RÕ÷©ÜBaÔJ°näé¦Ô¦Sß ™¡}MÖ ,AÃêÍ÷à³½„ð6+x·Ð�™ý$Çèó1…ó¨W (MŸhÒþº*÷«9Ìl?¹§DXµÏÄv¯š[�ùåwzøy:n{vÈ2HÓÅÄíkA„¡¦&à=NM[ýz-Þ®Ðð©c£vxRÆG "ÜîIѦ[›«Cý§«E 2_¢DÂI¢+Få�?eL¡׃T>¢±=’ØŽ*êÿ1¢<„õ'(AÙ„ï³~œ0,Ùàjkغ~ üÓÆx¢;�}þá³!'„PE$Óê YpKí,h¤ߟïËheœL*áSèq £­R(ní KG#ñý¿Z$ye`5”üh#ñ­w’"úJï¶ ¨&±´tç?[Þô�1�¾%©SÆÓKÖ>E(l6S—Ëu3®øj×-Wú üT¡}õáE«C{%!Aˆ»dfJ„ˆwc›Q<:ØÎ(*t¼ JAijc[² ­çc¬î¿ò„ð@?;ß0þï. †¯;O{ÑP Œéé*f3Þî�º£+Š–dØdoµÝÞ ת0Un¸8™çô½v›ò HRôü7/àÊ?eüð (}�V–sÂò:LpѲ–Ía¾qgÕOÛàªæFâ@¶—•C3­ŒñN_’ˆBªXˆ-Ð=xÔÈ€uMàÿUDN‹_¢]gÀ~4Ðlv„†TR­™¾uÎT]ms³ r)É7”¿j�˜¸ ÑOŸ“q“òÿôy<&=E¿ õfÞ‰UPéÔg2Е° ®U•‹k6{ í𞢾£¶þÕÜ‘ypQ`XOî(*Rƶ'^�ªá:ãèB!>$-½ƒu!K¼âp@� o¥HÞIÛÍ™� Œü æ]CNGÈ·*.µ´˜jYó"]‘85vÀÊcSµ=-D1Õ]!ó1�æbÙ�@Ù[AÝ|øsÞdŸ' Ô‹|×}Ã;È|œóæ#Æa²S~°:åÁ¡Â uo‚€n¹I[†0—22~Ã]ÇÐ2«à3%¹5GÔC¦>ñ.bjÉŠ‹áÕv*jg€©wõnx V�s:ùDŽP[Ss]’´Ì [aûŠ|ŠªõÆ?ÑKs\Œ"í-QÃ@Ü(}�$¦0'&Ÿ8Á7/{jÐJ¡¨çÔ|6#䌕 g`Þx8ïÈÕf/t4ްKŒ4gLlfdŽ Oh©Ãá�â)Š£oàfÈNéeòÙ4¹íMï”ç>ƒ”´„çNÚo'¦¶Jp2$m�èsCÇÆ¬ÞL ŸSöSœø°ŸHÉÝ%)}u¶¢û Û$Ú¯X2¾·3L›É�*=—ƒý¢}4�Ë`¯ÍÖ…¨ X{`@J4GT5P3ôJ‘8Å`5m4KÔ%„d³ðxZ¿ƒo*e Ý|ò<Ä�:ŠÆ4Ÿîyh»a½úô8üºût5¢f=w†å§€WÊJ�‹ph8Y‚± ~9Ð?^‹Ð*0`pËŒG@éßûxþŠà1ß|÷í·o¾%7æ’œQóþ’Aù:á ·¬)DÊ ÷×?Ù’; >].h†7ÂŽëØ= d®ŒpZ”ðØ:ŒUSMDwÀ+/R(Æ™c¦ c?:äà9Ç#¶Ìí¥*ICÍëzUìï?Ì—“jOþ \Þr¿•=±–ض¢œ^‘‰ L§?ªr’Âè,sUj]Gå–¹žXH±…ŽMÉ,å³ÚÙ‘bæ>^IëH²š½bÔCEi÷J­W¬Þ®$ƒ63]!LPVé ®pYä!ùôØA@¸:ê%W©ÆˆP;&.»©Ù�œêtî’Yûq3Ãç�n+e·êÎ:|œ§& ©GUØø‡ónpv¸Œ¼$”�H;Wí÷§KwxNcô¶µKß�D©øšMËúÈ+Ôa™ y¥EÕMšØ‹ö…£ÕCdo{ýÐ{§±�FÓ'�š,Gt�ñV«aÐ^'ÙaÑaƒaåšÜLÇ\/[û+;7^W(QB»“2yXà�'|ž 2Åg�_‘Â!0Â�¡E+…�ÔÂH˜J¢+¨ÞÈ›vAŒŠÛ4ÉßPöÛíS2¢/øÊòu’:þĈ§ÔîtÅãµÛø/>a¨8YÖ+‚Π|¸A:>:¿¹ŠnÊd†Š÷†ot×רßÂV‚H8È‚wN‡š¬¥É‡b½˜¢Œ)|MV’|  ¹R™©€)æ|B õ€üO–5Å�ÿvOm±Ž dº'NÅå† Ý(,¤m>¿p8ð ~}8‡Äq,¡¨8 ˜Y™1¾ÃSÒ>H:L¿Ö(¹±' óŒ}ËZFINeÝ¹Š‚ÝŸÅ�úµÙzɶ§Ÿ:T™pŒE` ×RDû¸ý’ Á€ùÛB�ÂÀ„óè,rmrRc 0Ñn}”"Lv»^`”R�‚>Û»vZj_ŠtÑ— É þ•%„>¬Ø-¯@Ï8 ÿà‰ç5HÐi5oŸ Ño‰Ü<êáú%7MáeœE�€À¡Zç`Škà€FJù ë0Ôöÿ3ÈœËHO7R>£XwŠö¥ú¦žÂ”Á„|Ñ4ÙÐŒ‹»3„?è (Êòl 'L£%Zñ¹JˆJcòÆÌ¬0c¹�£w{ »à*_´’ñ%ŠÊSðr4:9"Œ¡†¾Üø„fÝí�Bh±ãµ(Ƴu5!ºV¡Ý€ôõÓ¤NÔ]œà!'í²â�ý¹j±AKJÅf¸ÅòðhyȇVQtP>7óU»Õ»Áop7 z@dÐGH{Å“ÀʼnPÑ@LW1 ª T9ÿDâýceÂê8.¨Ë•Œ¢žñ+ÀP•_¦ãBØWï@ì$[þ|T+®;êZÀ£èLs�¾»?÷œ)v9.ÊÀëf Úöl†zoœõ4Ì>Ì~ÿ†yZ:ÁÛ®}¥‚Zþ­«²#}¶ºà⪲߹oÊ�…Þ#.Pöw®²¤š&ÓµôÛ”1™ÎýÞ©Å x%"§ {ãÂüÁOû8†sDœº *¼zéÜÉ5ºc.8qw´5]\ÌWÎ]R®!éHñõ}Ðø�¯œ›ý>»›ëT1°J´]XÚ¹Åòu…)—Õ²¿rnêv›ÍÄCX͹µ# 7ûDDu”NÔ9v.ÔÉùÉõ»“‹££>Jf¥hµ�׆ýg3 øIW¨D'34R<Êœ‹D¯d $þcʉ+<$iæÈÏðŸiò‰Î9÷`pvr}Ó:š'÷jgIâLí�s[�®‡7ãÁÈeÖ£ 彟EßîEÃ&€…áãqË’z>Õ$Ê9yc�Yº\É5“ËÔC:V“`MÌó·/¥aŠGzá£'××—×®¿¥›Ž– 9ÂwZÔímQ}~»Ó§ó¨~\_ /Þ¹z}³Õ+LÏÄ NÚ祳7ßnwæ<à—°''®¾^ïö…K‰¢u1)pG ã� ®«@-�”oxqzé£tÇ'‡Þ8#q"¥’Þg¸*0_SëËFå1ý"•—ãKÜKZ§<½Ðá™0?“O̯•·Lû©°(°Dü‡ ÑêVìj9c9JTâódyÜIh–Ø.¨�> zø)GYnµ.WhÌñM�‹²Ãßåô®Q&Œ`=!w‡†Ý4¢d\0îáD#tÊ�“ÅAªäÔø†´X¸O4è(¹#otle\®kb»'©Jî~ôe¡ÕÆ´²ç´)V͆&óàqB¹`³é­‚†lÙâ³æf홸â�NíÜqÃ+’Šƒ<ò¹©ybjžqµ–ù¼é—Ày%%Ð%k:¤SÕþ-Š~+iª<„˜|<óaˆÐ§*jäZí¨I²ë„W÷‰Ê$"¯”Ö¬˜Íz¦ Z£weº!÷Q|Ða<£|¦`¬(cDÔå’]°•Œ¤tqú¸jIjê%¹úÁ=¸œ7Ú’¡$˜_@"?E–g¹‰X9Ô'S4TZÇ ?먈áÊÐJÈm°û)9 Ó†{s«ú:8¸b˜,uO ¸¸K­›6¼’ÉZ¡ÜDÚð]§ÀÆIláé‚L"ðëyòùèø"t|’…ÚVM`ÌœBèüÆ D¬uäämôÉ}"°Œ“9Æ$ ñ‘@™eÍî³ ¼»ÓÀîÑDÁj˜ÁëÙyÎk8O7tJP ŽvÍù.,ÚFp‹¦%HË"�Ó‰ÝûšÖ�(¢c!!Ü0†E†Ò 7™îÝí©ˆcüCWAc4H=œXØPŽÈ¨´O�–|å"†+W"äë—ç‡ê� d^g}PHOÒ?ß®,Ô1o âF§B·WO°Xø÷Ÿ§|ì{]nDÙ+o—ÒzÓ )l¾œ%“Ô8¹®{�W^øÆ% l™Ñ«ƒkÍN³µÉ °÷SqЀµuJ�½ìÙ'Ú òi†ûƒ«a´\bWC� Gh�‡fOâ±òº,´\-D÷ˆ‹ò cå¢á§SÞ$Äu‹¥æÈT3Æ …5¡WtÐä©ÁCŠü¿j†•>È{ÏðBcUd�Ó„„ák­ÒϤʰªFQ©X1ÜŠ<ý\£J)Ë÷âŸwf=@÷À KˆnQ8/h#¤X9ÿ9–¦ÛZ�—".ÃJ¤ñ?G¢c·lfÉ+E\¶ÜÚIšÝ»G(ï�­.'éy²{h�¼¨Ë–³t58ïòC1f¯úÌ^‰øñ”ëÜ MÜaÅdéž}�ìö-£*üwžgÀÍEìý&úvXÈ1¢»Šä‰„×c Q�з^t}xÆÂºb©´Ã;éVÃò¸¸‡'¯¾êBÓN ü7Ráï³*jI¬e h,Ør¿l™Õ«N“8EóÉ?xìî>+Ë?l>jö™´8¡i1Y£1‘�•cOEVÜ’üæ`�å²’¨'«•¤}˜#2'ab¦èè|Ôײ’æà:“7´åL!©šÌ9×0è‚™m…؈3ˆÆÚ ß‹þ£(–‹¤—ëU² ØÙ?åxì…¬’Ç Ç{¤ƒ¢½:(?£"Â,‰Ï™8¼�݇¢ËÚL²å �&†L1$!Œ­â:ÅùTyƒ÷¢­¿û'û¢±LHaý4T@W[~*”W| ­3Ót_QM±�Ï ÑgøÑQp÷ Û~Nj4͹w•OŒ·þ¤Jy)™A ±G5R´„õ)7p΋z�bSná4Úi½ä¡`Ã*j^ó?‘¶” ¢*•\p�SÙžUZ³^’ñsŸ.W‹bCð;ëi®Ó,�+©w’�i—ÝDà²Ã 1[‚º>ù3ñW%RЯ(¶-WyèdíØ"u]«ÉŸjüíhÅ’oÛ ¦S$w˜N¹f0É­çpá™�e cåh¹‘¿[e™èL¯W¬¡©W5§H¢ñU«¥±«(¾„’tò7ò—0J½ÞSÊi«œC©ì@G{͵:­Wí ¥•­+`Ïû ãršV~Ú[T±XcK•Zš"ãt�ìÏuš,Ð@Ûíü"°�Í>VÊ@�–a2<ˆQ˜¡æ(gŒ°�ã2$@¹)Þ¬Œ/4WB³Ž 2‘¿'yñŒ’1F6ÃxWäRæG¸Œ}6AïœÚ¡�“öc»ÕŒhHÄ›ÂÎådO–|áðaŸSž[¢,¯óJgu¨$¦· +<ñÓÔ˜"BFâgjÔ¹Nžzà^èÆTž6k%ÎÙ?§û±ñŒ.ï¯t2�¿jµy¼ã—)–tßE9€wuä°CßiÇ÷¡y�y'i‘1Vn ÷»�™Í('qçlÏÙL�('ÅjÃÁòDh(l÷!s_ª�=v6Ž×Çl¦îêîXfè—ÁŽÒxœN¡…C`] ©ç'g§/ô™ÕÑf]Ât4'î<ª}J4bƒbÞ½, æ:�¨7âµ”€®·Mâ­É1.;j/óãdOz£‚abºuÛÏTÂP~v;Ì ³oÂÅìO©?®™fƈp19!™ ÷…Ó¤¼¡SÚ <ìª.ëEK (‡F./±””“«X�ãÆ;(d;‘n5Ʊíêjü¥óØæ›Ì…жÁ½WEÛǃ,¤.Ž¢éçˆMÞx|ïй%äå…'"–‡¦=QëÓ[Rïu WëòˆA†§h�À+lú[1£X–¶¨€|0­NÚ”ª ’á8�…CÜ ÁfhŸñ€_ —¨m¨Û±iš/€xü+»AF[™Ú)ÂVò%D$æÔPÒ&K²˜I&í7˜�%Ö}íN6Á‰¢?¦šXë;èÌ%TŠ²åˆŽ9/JX°Õꙉ©BNÃAô>Íîœ äЫ e­Õ:dµºú°ÕWÇq¦Ü‘±*)¸Ÿ§‰‡¢3õælå+¬âË 3þ­I<ÈǼ…4î_~í`±êkŠkPÃéqËÛ€Í 32ïö<ܰ†kÚ!à ƒÙ‰ÁXçì­_ÃmÆo`ËÖ;¥…úiâÆ€O2̆‡1_î”…çø�Šä…;‰îEÊA iêÄÄúçŒ{Ý„ÿÅâ¥ä+J#;FD ¿Rž„ØÀ’zµÚzsVâY„{Ã.ºw€ šö·š¤%ĉh� ™M¹x7C«âc•”ë2Æ‹ Uºh«õ¦1•-fÀ׆ eœÏµ�'’L#¬&X#d p<°Š\Øëð}QˆµŽ”MPëñº®ƒj.V4&Òš€üÄŒ&ßr¶F¨ž�¨\»RàÓãT®¡uÁ) zŽêtªTÍ�¤á–yDrÙOR8jÖbcÊ& l¤€§2*\Ÿ±CûRCäIܪ¸½Ž£•©«ZvRЧ6±S·h%È%5 XÀ˜Þ*.5xªÐ…ôÞë¤y_·´&­Á`Ø?Ä¡DÙšô]ID¾�M6š]AÄÚZÍUÈ$qh.4Œw'½}XÝNH{® ¢–PõK¦E¡ jV¦IòdÇíÎ'Ü8 L4�c¾”¢ÿ€1+>¤,Ò+øÁ¸Åœš)íp/éúJ£®÷UCÎMbœiƒ²`óÑu—œ(ÉŠ²šÝ÷ùVâÞPðo²èß(MðÁ–8Ë ²~¸x›[ {<é4#ÕŽ}a-ÿ¹¦:—YTÞàðIö ¤W\ø+ša:To!v¡Åiµ�Wð�ëÌO³<«æ]‡8“ÒÇ1ª. þ.)§ �°Þ)*DÂb3œÓ‡eº­ø•ý;¬¹Ñ9>g/ÔÞÕ7ãí°þÖ€Ý hð/Ü ¹»§-\Lc?~­[Kq 0ÍjÅY³k(¿„•2÷£ã$¬;òkN¡Á›Ù@1ˆ/�r iŸÓòCFÊu°g¸ÁPûêáïêé(€J@E WÄ##]Ê ]˜*&=i“tO–pùxn ¸ÊTH pí¶ôÓ:µ<¯l_8«·¸E¾²ãâ³7<Þ-³+¡†â—ûa“�´{ÓñÛÞ¨Oftnv½Be>IwÅ„ÓqÙÁc%/JX¾µæ:y¨„äGY4Ó^s–Ô Fî¥ÂÃwyA>ll=>Æb²T47]°=õQ ‚P¸ôcóЋ‚ õÔ‚ØJˆÃtµÒ„ýžlµ¢ð|ñµdŽ[ZQë×z½\/ˆ›$FXà‹º¸£èæõÐ4ÜqjPö—ÌL°:þA33&pë Y<:ö<5c!iŸ/)UU½ç| ç0¨EZ¾ðrvcÍyhmúZMÙº�¦ÙãhÖ-wL5žW„úˆFZV�°…‡g©ÀtÆ/‚~CÌ[ï^ÍsÊ[ÎXábE‘i“<—Ûí�1SÐ7Ÿ¡Û£íYž: …¸:¡ôkÔpåÇ—æk áu]fãµW+?°¾Ã �ý duæX�/޳›¹è¨ò‡-Å_Ü‘gÅ¥�ÜE1��Ã]ÐãA9-úå«x;Å^ËÍ#Â_%÷©r¡w¾Òè4&^-èwÁ(ø×@Â1Õ`„­ójï}ãjúHÂ%z>Ý¢ç“O kHCäÁN$íV2Þï©,á8eh å´¿¢Z*)~\|^ ô`ùÝÄ"øŠßÒ­Ä}ݲû›S»ÀÔ‘½lŸo= eôbbG†…»ý\‘óÑí4I—î‹Þ¡cÉ6©Ö"nÍÙ³À§ËNhç6ؾDJ;`çÍšT³ÛiQ©�E7ü_šç`¼ë¥'Œ³¦€Ê%]ßÂ{r«¢@nÅýþˆ.•·÷¯�Ð7Í“ƒ ¡rÐ�Ej-º½÷–£k)ì€'ý:f`¿[ÊëEÄ~vTä3àgkñå�1ÿÂÿÈÈfèx„H‰t·ÑC¬î½8~ÀÅluË`<·�¢ µc<²¿Atã•m¶ Ï¿8�ª‰h´¢£“&Í)ã.š‚;}e«ïèy¹…É;OÊšcP�‹ª©Àª àˆ$­ÞÎÙR`þ ò£å(ÜíáÕý[�à†[KžÐô÷ïb+ÿ¶ª·ä¦KгpSf1�õ©–º�„EB(¿E½¹ÍŠÛÉì¯Ϋ â5=ýs4¼Ô:µ’&ªš×Ž?0n˜D•:ñI´oàh4:yCx¼Ååšo$Ü(`Ü9·­Inôç“óûúá¼ÇÀ•¤‚ó…ËL¤ Ç^”ŒÅ‚ª¥�¤Ž0®„l\[ãMNü� sp™�9‚Ûp9оã„íK|vh�ô­ö®¨…–ÑÌ=#l©äÖ›¦cñ#†Ô 1¤9ãÍ-‰Þþ8©IÀd‘Tб0LÐ>¡Þ¬æ«ÛL¼I„˜8�ÙiQN²1,'þÆk� ·íŒ"Æ%´+Ùf/Â$‰š"§��‚çÓ>ÙÍâ€õÁ+Jô¾:Äž˜ {ú'ëÌNs’ ›i¢YóšŠ`в�Ô ˜Î(M£/�ðCZ}TÔ4'ŸBŸåaÃóK»M¼bõ*Ð&š2}!ìzŽªF.¢Ä u ‹®(‚r¾ôÁû Ìg bhRÇ’RªL2��]hÝ &‘Û‹®Öutqyq‚>©4 ÆNâ]ks„0­…¸:»ÓçLt’Å v953è8�4WZ\�Ç=ã¹ N ËTÅ1Ú bà8À±•¨lбÆW±*ÐVi §�Ô±Þi7ŠaZ^ÊrÓÒ6A•³º#™NÑòêÂU�Ôø/„YÚ†ÒÌå‚ ¹*B­"迻Вr°‰8òi–;÷÷áEÛÇ&I*JuÇÁx_8‡}¤HGªO0•­Ùº$A•Óÿè›ìmôš�‹AWª4$;ˆ9“³³§´i¤s;aHóÆlb”}ŽVtj{‘dW§˜±¶ë Éot¶TgË’UH†BeY7Š™tà²~º)ŽŠÕ†ƒ��-`!ì’ÜÍ94–~]d+•­Sç£p¢2¼Ú{½÷fïmO~x¹ÿ†^Ã?oàŸƒ·ðÏÁÁþw»_ößþžT܈cà�kwd øyæ 8Ö“˜T‘j &±±G�†C%%}�””N(‘å¡£C®×”ØŒ»Á^: EE{Ó”_ë¸e‚MT¨wè¦�z•¢FÕ¥D{ËÛªðui‰xîÁ�Â'wElkµŸÏøà¯rу›(éêS¶ZqĈÓ6XÁ„{Ðt)A&›˜¤ßR«%ë©8¤èêÈY%qJ þtÊ2ÍÚxÚ.’3·Õ el�jhmS»edg)¼®ÊìÞò»T¹è ˆZç%=:3+‘å5{IèÄäîtÞ”ÉÛŸŽ¡ËÐÁWœþq%÷Þp¾û S|ÊÒ›Úƒ£››3rÝu3ï3F>Eòœáâ_T.öÇÄM>€ª@C÷Yêô"ÆÄ…x–¦î—Ó%Àô½n"Î!°6I.æÒ»’(±‘/-8%ö[*—:R¨4äÙ¢¦me8§C§cê)æ»ÛþtÜã«ðË­;•Ó¨î\­�ÞØ‡µ͉­ �÷í ~@füÕÜÉ}¿Bgïø­ûã[úøÚóõ5~;u×ÅÃÿÎýñwd`”)ü‚ÑŸ!D6:B&AeÞR©*4*÷Ú*虘´'ÀܾR©ßI)Ëùîš×¦ŽŽ°\+o9JÑ)ñzz â[eRöò"�*ò¢Pô‘ß+} ÏØþë"JIŽrÇXé•IA\/Ø@ï7Ý#jÀëïì²-‡Ÿ€Ùþðr‰Ïwœ°(Ü�vGø¡…%¥EùŒrɦßÄÑOŸÇ¿r‚£ŸL×ð>  å+ReÚULRÓ‰’èL-Soµ�Ùb:&±Cu\[Ð2ÒÏqÅÖg xä’À�¹04³µÈ^ .Ð2ÉK‘9£…TB{—;Ù$~PˆÝ{ÄLWNž¨F0>½l‚˜|td%�¤Ÿ½Ub”«"(”®j»z‘sÀ.ÚF3�A”IÎ ñ—˜òï̲Ϯ"ä!Äœ2ú™§\ŠŽ®R ­> ¾¡¶3pt–0m�ÈJ6£øÚ¦‘ÕW¡@AyÕc]üCùªÏZΞˆ£:î'« 9¹éôœëûÈ/î\¬ò­Ê2÷¢Š“~ª\zÄ0棤̉‡_BCœe;#Ö…ùs±~ üêDÃK[f™½h—÷WÊL��' %!\qÌ,b4:?"è'õ~£m'M¥&Ií¢¥lȳv¼Î[tµ�î¬Ò: Ó–ÖY„>ìùÐ4§>â4á%ëZµ@80¬ó�]“ÛkfªGrB·š:•”ª{œ&ÝkOSG}äÀ;Ôä/[ÀÄCéy<ä™Ôyd!fÑ*­BŽ7¨ºA'|H§˜úê ]�G·ÙN�(7PÂu<ÝÅ<(üÒl F躕¦ø!ä¶ß µ²8<|ç¾ —UdŽ•ÞˆRPkýé{8¹‚çiÃû&†hó²Ãr %Ü];øÚd[õ¸× å·^f±2IVˆóú€´c£¡¾±s=…jZYéd0/޳ó`ÝÇEkPO2JáÀiÝŒ—Qö9òJÁ6�VòĸŒî}OÔP[çò�Túü›¨%Ätä$‘�ްµj„þþ!1NV§ò$¬ Te[äºÁ6Ô7$o^úžòi¤?²?+œûYé§24B‹É<ª|:˱�ÀÚµwúÒÅ¡8BÆøŠ)¿ãÙ;{,îLÚwC—¤ßp§½œÍH5�’£[-�_b%:{…\šîî ­UÙòÍË—x„_½üd/`·š°ß’dúj=õ’ ð^½ž¿°W¯åÜ~,1.�‰™N%¤ì bw„¶ b U²pä´³|íµKà7u¹QÛë_^ý=ÁÙªs�á…ФõCQ~úZò ­äÿʼZó_I�÷T0œ ¿u�†.Ë�þ¢2±N»‡+‡ˆTèt—wØX¸_îÑÿÈÄýúåËWÓñïöß�oæ¤X¥ï3·&'“`VÔÜ#PŸYI3¦=»äI;µ¤ü\ »ù~b‚ˆÊÛN'�üÒþ^ÊÛêÉþ©'û§žL*+yÓ[y[Úüje[¢dO·Ê­•í1¸ØðJtHBlñ–m4࿇ÂÎÅt3Ô§Ñ× �eScG.èôàܧž‹ÑÛ3­}(}¶­¯Q®Wwe‚&³UZžûpºö È œ{�á-ÐÏ6^»ÇÞk 5âH�ã€ÇÜ@)•ZkÊaÞ"Aö\]_¢Fl±¨Tº­žh§”ñb‘%äú OuŸ¼ò"Abû“Ft|@¼Û‹dÑðYÇåÁßàÑNót†.: ˜çX!$:/Wv—“ëyŸ3Ž 2ÈÀâË]x­ò·#?(ú¥ž�ª?Ñø»t®±ih ¬ŽàòÍw/ɼ:Ì¡þ2Zgnáo°XÀâõ‘2¹°0ç¶sd2L«ó}]k�+;UŽÿXùFpðSnŽ.½iyÄ�òÕrñ v°?ÚçOùÕv’Öç˜zGÒû™„HÐú²Z)„�qø§=:1d;Ùjõ­q>ŒYÉ붬ïDå£Î›ðÓWó_ Ìס´8[ã�à™«‹ÕaáV&ŽP—>N¦œd„Ù¤8 k%Pd�OG‚ïéjÈäïE*±ùÕû+Ê; ¬ô§@"³†‡º¿·`’¤»Xò�¥sŒÒ¹×ß­b³ šC‡yÍDó?.>“q¿˜aìòÉ#¸Öë·û¿‹ì²–O1Š^ÉôÜ“-…^Ê'D�îæÐûî®1ÿùClžƒ ÒGúõáQö<ÝÃX„ÞãLó VË÷VÓëìLàT²ËOpûì„}Ç?¿A;3™P›Qyp¬¬83‘ÂËtµæçW?èÂvr£uWª÷ÒÑüy¤^eµ6�ÒV†'Å£1”I3Mò†;ŠÖj8†LW¦ ¶ôÁn$ÒДóйt-]€|‚>ét¹õR å8bÒ&ÎÙ™Jµ Or’RÉ$Å&ƒCW–¼+Š;RçÙç#<X¼^½Þ2¨åÓ�•˜GhYŠ2䀯ÙÝG¿<.¦®Ë!÷´Îk8§GD™5{€]ÿu�~Q@Ë ýI‰È*hZtŽñ5ü ã¼Ï²Ï8n8yKJ…Aî¨ùO;øŽ]Ø€È{”hØ„ëràê—c+sŠßkŸ§Ja ó !æ7šm9xTy”I¸»­‹[àU¹pmxû0Ž“š©XQ¶QôP5Þèxn*¢eæq:Oî³ã@u2ؽ.öV*Ði5tðLâVq]±r?wjOh­CTGr%€õ½0\¾§<"–Eb]¹¬Ñû*+…›®`ß›2ËÍ­&(É�[ ¬Eؘ„Ò‘ÑÖ½rTÓ‹N,«#ÓÏ+<Ä‹drSúxŠêfP¯uMh~X¥Ì(ÈqæOm ±ÙrX§ËS8‡ìñðx„»{½Ð^7áÏPuxå+CÖÿ+�„NÞã$�÷Ð^ÐbI—ħ¾Rš*Rlç”ùKlÑ�À�ZæœÛUx^×O™Þî?[/&�H�ïVBö@ÜÉ!Åæ>#³‹ô�b-P×�ú´@aú® OËÂyÓ¥,~–¢?svê ø£`¹jl"Ôz­ÜŒƒ|â��Õæ2'…¹„†»É‚¾Ë8,�‚�ôV¢ [üÜÙŽCá¾äß”~` ®R¡�8O+}a-ÀLÄ^&”~f”²Þ£ck,»Y6ÉP‹¦Æ�!žž†Šü É5QýP™¬¼ŽÚTüX¼V,eû¨9ìRÁ/ÐRI-ËÆüS9×>Ýyó¼ÂnÛäA5’­Ú*[…Õ‹Ò½FEw*u”º«Ð´ˆîu›VƒDšiq;ô|µ,é–fC5ñUUù–ö“û@M.Ó,ÞSkk5Pª\Éu#Z ÚÞ†)êªß},ºŠTb¬½5nc·~÷Q|²íQùTvÇ ~1Ç w�‹4 ·�Œ‹î.’4Ñaç¤…ÆÆm×î<ŽÀ¶I›vMÚjlÚvíÎ#òoY|‡lUßù>û�û£¢Œ!+E¡>Š~]ôYGç¯,ú9.¦É ¥¯àSûæít63¸+SNm?¢¼¬\ðLç+ ÒÚÖwÕ18Ü[žª^¸öú:uÓ4¨úÏ5:»ò¶|Á¦°%ú„ŠÛi¢Ã7’ºN—”N),ú�Dêç«óŒ·¾£Fãè(3¶ë*=FXõp.uóá £ªJó­ï*‰îvè”;뺷×M¬Ý�]HTþï§è¶+Ýšì úÁ°Z�±šü®íjŠi–oW+Œ…ï;«D”üeZÕˆfŸ¨bÐõ¿^Ë`æ�Š)ú¬²Qsº(T3_¯s0ñ¨ž.î€}¹Â²‘YÁo‰d±Té] Gòý¯¦œˆ¸z­`@ÅÚX}vÑDè¥År”µ³>¬)lÔí¢•.a�_|–ºê)¤�&Z·Ñˆ «;\Ù¨~.á½—½¼÷øò@ò²r>RØë$¢ìO³] Ÿ–®%pÑpq !ÆN÷мÙÚ1\¯ìÆÜm±×H§ÖâoJ=£˜Ý¼Ðפm¼?¿è¸�Ç1™ §Á� †|¨{gé~`è3Fr}ÿ„�öwµ»ùÛ]t"»;H&IŸÛ$Âßÿ$ €Íò5Á4Sâ?ÉV´t#×[�[J åÐÀ•¿ïJ¿ÛTÕ¿ïHÎwÖ©ºYh‹nTÊÜv�Ö$ÍÔ˜*AªLx=âm­òâåk•¨‡¸å½S½0DÓgØ÷¿¥?åâLøÐ”âŠÃzÄÏ‘ý•‚%­9ývy…¶f��‘5÷ŸrAPÓÏÊ÷ÝŸ'÷Én´nà¶š<ýáºÄ%àjä" 7B¥ê6)§8tNåf$ÄL‘rÔi—¼“7�™—ñxe-JÁ¸Ž—‘½l% ½Ö}ž¦GÊÓ4€?g”íˆKéä½àïÊ� ñÄЭšù)B\:kàWÁÓĵ¯àX}ÿéPÅúaKAG@ì†j¢£6¹8ËãüaU¥‹ÅÁ#y¯yCEß#0¥‰ Àí5¡¬™z=’-g)Ú¨® cºÔWeqøyqîÀ‡ëë“‹›˜â|/ܨ~‡~Œ..?ÆÊáS¡ø1/•n¹®(QÅÐ)‡Qh Nÿòö•[ß«¦;¦bñì²øžq&_ªï4_4êÿï´éˆý+©Š3}á9�kñÀÆ„ ºÎ\ º‡h�ëtö?÷ʬú‚ýEK¤ÒyVuš,ØcØ¿Vì2ëš‚KqŒy·ážÌêà¬G'—@,rLÿšêµýÖ-Ù1õ¶¤\«,jTÜ™žñ,½ÃlàUµ6íþÎù—Q]âò-ŠJ—ý½«ìi–5ÊUÊ*ú÷p%ê~L¢{ãMÚOý@Øj-4m*ôЧ·Èï b¯è Þ-.—é4Ž#!ò­è]}B‘ -ugÅH8[!i+�Í`±b¿Áƒcfÿ7¹ˆÁ âŒ�Ö . 9ú’̦‚½ç'<`;p:v;½/÷¸æ<ÚJdáÝÇC)Ütª�Wh ’Á&¸ÆW¥Âh•ËkEçŠ^)Œ 2¾“É,½ÎvZ±Šc W9¸rç°L”Y!Âë,áöUðzrâM¤u´Mx£QÑ Ðþû:¸/2)Þ½ßÎ;{¸Îj&t̓×V¯îÌyÕ_½tOfŽLJå-IÁ#—Ÿ3Ì—é ¦:'ÿy8Ü×ü«ïì÷¥x܈ª±m'Åb½Ì�+¥ÀV]í«g ¯Ó XòS_0ëÅet}2úpv�^~¸@|\Ue˜“®ØsûJ*ƒ,ãšÞÚˆTÐÚÎÜ‹ÆkÂÃǸ4`V*Õí¢XZ¡æX‚ÈÂ=X,(Wâ¸pfìP”ä=§lâ…åZ‡X/"ùHj€Ü�®¥kóÁ#BcéŠå‡lz—Ö• Ì-[ö9t¯5¿&‡_˜˜©@†G)‚l-"whÑ) @ŒÕ“ÆA^ þ¼»WØ$nl o ¡'tG£78ê�”ãþ€¨cTƒÿÜ»+ÝùºÞ•”®k’¬àD%îéFã çú8çGޱ¥«I™ºÄazDßI”onÚ7€á®ðGÕZx�Y Î’·Z—+¨í¼¶-K÷Ÿµ6õfšÄ͆ôûí‹¢n™!™€›‡4Q0"2W‡bZÙ.‹�uëÐ%â”Õ¶Û⛺@ª4É2xê_а–‚h ¬«*c-nüêåÒ© ¤q¯^FË,_׬Óï’ø®sF»7/ÉêÞ¼Ô9íÞ„Æ÷¦1¾ŽI÷ºdÉ뵦ܤ %•žB?ª�üâ3Àî#çIi”ýÍM>ñ8£²„òÊPeÚªlŠQðx¡‰b\øèzжїµjÉ2Áµ&K&ó!%+¬KÑDr¾à"´DH9œm…+gË/¢R5oÖK}¹³Oì æîjn¸VäW«t‚¦2Xº�>|ž‹»Í@ïx å5¿xÊ^È¢ �ÔÔðó$ÉŸ‘šfÍ!µZ{ÒIà¹`ø†ª¹Œ�ú#§¹S®¶NC¾Å”‰Ê=UÓ"g˜B¸–À°%#[´ÃÀ\§¢a£âadåîÞ¤Ÿ½ì)FIéê1âS¢"ÇÛåiö™Žë##²,’>ŸvüðŒõ,bèy˜‡¸Þêš®‰Œw8ChS„±Ã�/¾2”ØDd¥¿�ï6°R†¿€¸=mY"ÍœfÌ¢Pž.%ÆŽü›^FÎ7auq@‰Ø•Ú=0N—}íÙJƒÐû¬r8ÌkÀe�…­´üÚÜ Ðjû¸Òx+B2kI(d^°Q3Ý`žFqc“¬NÑüìx¥U¶”3c?3l-8¢TXM¶€v–«\”«yiÆFtâ]7�:xîH ÁQ‚�|²Ù‹~ÊÊ ²F�(AEü_×0¿´žSä dìä¦!¤ÉÉ CXxC/u\ ~&+�ä"�Uæ¨kŸ£~c?u²Fj5o1åôYÆ$Øþ�¼U‘e�<‹¬Q­’åñ÷h1Å ½ÖpO–”ðF`°ö�Ò O €,h´xQÆVjQ.%e¶øƒm°â›ÆgšB×5Z ÖuÀžfô�¦œÄ•n.%�À0ÕZÖaUd9“^Á;FA•¸Ó L#*×YWl�“~ q« ~Ä´ p Ù¥€NªDÅ1Aî3Š"pJ+§�Œí´(Jܼtܯæ@DágJ€Ñ˜ß�÷¬(ðÏ´d¿§uÀC3:¹äET7‹yVÍÙ1óNeþ¤ô¹Ä­UB †ÆWS‰ ¸·EbÄ')“pzäÇ 7l/R0Ÿ4¨_ŒgëJPï¡­9‘™JÁ‰Lm Såf% ¬M8gã”n j·8ÿ‰ÉøÝÿ ìoûhOÔy ¥šm$…°¼«Ák ù.ï ¦E£Ÿ˜©7Ñýiî¸+Dka±a&K¬^‹M¾¤ÌG™­‹ì.Í'ÖcB¡Ub|n¢‹“±‘ßê¡\Kö(IÀo®P†ÏñŠ–ŽìÜtÖÔ8.×59eBïòbõ¢ãbd~¡Þ ‰¿W‡¦ÑG�—”H=£ÚS ’e1½Õ ¡Â[ Tmö)Bµ”�«¤„õ›!€:Qªµuc‘¸¸‹�ƒS¼,t(~ŸŸì¿œÿ`¶Ó­z•‰JH‘yâÍà4çfWm«FÄâ&®g Ô½Ø(7Ïé†Jñ‘Š?¨ä¦}J)øŠ÷‰Ù|C6qÄä(Ò ƒtnÉ�:Äá÷f›J:èô8¸NÇE�áÛUDN*©`Ó[õœŽ*¡EtõþJîœڇy XxkMîâp'WE%Ðê|JS`ºøÁfñ¯â–ð™n¢•ÊtÍÈý|ÔðE@8×üŽ7ÇÓ†â5º#ý$Ú”+¾¸ktJ/ù @f‡ë §Ô&�ü¥zÊxQ Z�‰¬íq B‚¢µ ÖŒy&*=cè-VÌ; ïÁgK€ä^ âÓHsƒ;ÒºsÎõNÅC�½Æª““µÒxDZ!$:Ì}6’Fle8è1"VÄPªéœVDêãµÄæv7ŽW€¡¬“%Q†—è7 ÏÑ‹S�bOäÇí.Å]Ñ’´ S¤ ×s/Z”õɆΦkòpïkÜ;:%Ì· Í úžàªiÉHÓžL ÈRä#Å|Á¨÷âp¢Q$¯Êµª�c®v’®Rú¢ìb¤œ8J 9“‡µ ãRÚ†:-—|ÖA¤œf$\ì}‰UÆ4Ÿô,¢<¹ˆ¸-Ç”Û^¾·ìÌqA :ñBY-ô�Im8é;ßë}¢*}ÌoeàXƒè²Ø­õâá3( MÜ–xE©­Ô7½)wI]ÖáıñV޶Îê=?…÷äÅ^4B¾SiTì NÕÈ ’T#ðX‹ÕÈÁáÙ9å7/ÞÞ¸`V ºC–,ˆ:ˆ£7� R$䢲£2·Eü§PðŸÃm¬$©X‚~ý+bðÿC üJ¢;rì{HèfhYM5&Ns ´D½�Bˆü¸B-0Èê=bôÉÖ†,¾d%ü\ƒàåK�ªv´q0D£=Øsèj“Ö:WåC‚Ò.ì̓ºc �ÍŸ#R_‰v8pQàìí Á"]Šø¶¶ï«¼Z2\ƒó»ô÷yJAå8Nô�YgîÌAøœÀAƒ½,H†¢‚PÁ�ÙN`í�[£RÖe‰y½ú¸V�xäŠå<Œ¨F 'r¤Î[)Êiÿ:±ÖÚNÑš¸SÈã}câü€+úP(me'Ã[éI-€tyLÜ*–Q¢Ã¬<*Š 9d¸IÀB�.ß?)Š:� 9ªr¶QëªÈDöÞ·f/<•(Èa9I÷ý Ž$[�dÿ¢‘p bXâ7­äžf"S¼¦d»„ umh¦SgŒS»­ÞÎÒF�¤1©€|ôEàŽ–BJgÛ©5\l¬oº�”ØÐçÚCc“YÕíla²Ú[}?šÌò@Ñ*Š/D]‰Û;*ÁH”Œ¼‰˜¯ÕGý¦Ïè Ò‚SdN&ªKÝÖ‚k dûWBÍjq3�äBY{• Öt<^÷I ÂÏ´�¼š'T“K(Câùܨ(xžÊbÉéCt4�»]ùJEy7œåèöLï¶×z ÌéˆJD’¢ÁCR†Ì×ÎÄÕ’‰Õ1å ððâø¦ s®©‹©Î¶çĬÛë�ÝpR:CÄî:,¾Á¤–"ªçž pMH2å¾Ç”Ñéd·®9JÁ”\ç$„¯©xaЩÇcI§ïàÙçÛçó@'験Ùdû¤=áütÙš›Ã< ÛâCø{¬î�ó5 /1á²»þ ?DÈ~ÓÊ̲EMW±]‘U)DþÁŸ�Q»*Ú‹yêY÷Æ‚FŽ]¸)Ú«ÕEL¸ À$ú‰#3LÕ¾á�õßå˜`Œ$ͪÜÖÏ™$?ú�÷–*óª¡ý=�æ¡¿áÄ#\’°Àèø©”Óû&ŒàÅÃ+Š ¼ ¾‚ä„)pàE™¸V¤·‚¯\Xñ^·¶kň°}ŸÒºÒ•?…#ÇNhAÂ`ŠÉƒëõ£eØ=oJ—cþÛ¯BO¤�DWø}'CTZßâãážñê%ë¼kÄ æ#yžÛ×TÊkO½ë½%ˆÁn�«î»E1ÙÞ:y|åÕ¾ÜÎôŠß²N=˜ÎýPÒ‘Ã+ðnÞ“sƒ_­\)rŠžŸ¾0> mS¶¸bµZô_ïte˜²FÍÔiÞJ &O­‹·´û¨Ê„¼Ëq…ØB|‹ÂªïšHJçç cmS\½µ–ä’é–ßÈ-7Ñ‚ù$o?T>ª„e¢çôÅW]}ÚƒÃMívðØ¡FjˆSj²Tâ¿¥üB[jLUä� ñ#B~òã <¢P3óa—Àµv/âàVñêècê.£f76³D1³¥âª”Ç–Ç«Û<õ^ÏfÙDã‹<õ:ÓëIwJÄ—20oëÅ¥MƸƒ‘÷¼é�’C÷ �ÃU]7±q#/Ý7ÅŸƒ"ý»b'O¿×£0Y”'©j�†Æ[ÎyæªE%¼×R�/š?Z­ýé¾ùÚ(>P,Bþþ¾©1iú¦mªwjöüî~?îüZ�¬YJë×û©(Šç¶)_¼(g²åÏßéo¾y.÷Þ鸦ðÎõâ»’$$ è¾·ÃÏvŸ&½o†'sÒ|ñ[ù|Tn(†Ïa.Ÿ[s�hy�YkìóF[èg>Ëe±NÌlæ¤?h¼ô/‰7‰°ó°�Ú'ÿj¼Ô/ÿJ®•Ïmôž†ï­’•(‚L/OÇçÃ}ç­Òs5[ÃT/û�ÍÂåž¿oVÃ5šÑ ™ï5¨ä@—‚~'÷åÍÒXïÞÝ bãîD–MLo®�•}åüÁà ÿÆá¯&xi“Ÿn䫤It2~R4 —Rè°äÆ¥÷f-æ(¥z.÷S´o¾ÓÞ½:h4š€€ƒ°{[à¨/øWüä[׸qßÌd!½äæ‡åÒ*Ðk’á�™ÒÊ«•$†÷͹Ú‡¢8LSé+hðÆ* ‚NDš—7ìèEA /ßaÔe’É„h$/ÌJNL«?ã†tp�Kx s­¤ujÕFÙ0éïß*Ìç€O7<~EWšUÚ6'©“Ï‘Xõ†Áû\ñ ¯_Å´:Í‘E4$¯l+]R(­Äév[èÁÄœ…€P[³Ø-ôŠ`)r-ü±ä%«s«æJ‹b7“â§ðí«×oMI¼ æ3•æ ¦xù9BÛ¥àÀÓ­Z;zŽóÉ$ÍÅb™dÏ0î@AB4_·Â_ɪoR~ñ_gEC�“·ë‰¹ˆêà89'Ö¤ÉÄn4´$D ¯%`ØÊ-M;Vr.l† ])y}¬ –õø®°Rˆ%uv, 'GÆ‘s³(9Ò+³Ž™‰p“,‰xÖ¸¿o vÊàòJíØ¹ûø(ÅJ³>ÜWRÃc-,ƒ¡Yà„Sˆ`Í»L€ÝIPʺ#Ö5&ù ™‚-J:S–�Æ#𓨌Púœ£ôƒ˜è ”`fUÆÏyú´2S(¦àçëH«ã|HQ³ö,U‹_]3a?hš-RLÌqíÒˆ2f™ÕÃ*ÍìH¤ùÀh^ðŒàŒj\…AÅèq|f®5GþÓM í™°æ>ÉBâÖÎo£½°¾&쇘g0“ÛÓÁNY�pc Éãd šàõnLèB�F;jQÅZŸ+ËòšXÐÆ3ŸëjØ�Ê@ óeÇ < E»s®–< tã^G”!.l(ô£… `̃_â� ÑâQŒx²–üÛ“KI;WC¿c9AÖio$¨½k™éz"iÓg°+ F.°K­ÑŠOz›É“ÃHEõ– „¦pó•!m$ì#á£Q¿ýËC þF%QéɹÞEú8}€…ÛÂÌUúµEg�æKzºZ²IikL:B" Î J½ÈŠõà­!¢ ¥4U€í^çb?Îö•u/0:Súc«Y»RX±û~rè„“Û½²§y7Ê�Oþ Ù@D¡KÉ‘~*íœúúµGÁ–à#Ðãd�7+² ·RÕ/¦…œ ;C0¢§uÙ +aå0„³��ïQD‘ÕÓ ¾Ä€�<¶�‘ö<ø�ÄØFb@åÆÎ-Æ@»‹1o—ñ�Gš÷Àmü$Ì$4W…oaLWz~pg–e[U_ULк3i ˆômu~ÙvÎaÑ1ÌAÿÊ‚˜x”æØÉaG¨¯æA$Ò'-a§!HÚãIçAôY‚b ÓÑÚìóX%–$ç5s˜8Ã5«¾Œ1÷ð‚Ÿe.é5RŒk¶j�HDld $ZRâ¤î¥–Šiàð’'p€×" õž_Q˜’Lÿ¬Ù±þ;dš >°Ão¥� Xì,û•,Ù:äÈZÆ�fÑ�'ÒÞ¢ls³ŠjhµØ`oAÛŸ-Š-¡ç¸IX4¶d1/�Ñb!Ø : ‘ g�ˆÅ`+saI�­6Ïšµ ªï["·uAŠ`q s–¯$Z§ìóBbÀâx ˆð{ O­i!k¤e1Ý‚Ö'd„ŸÖ�%€ÅHZ ø–)Ô*ŠÎ"~$Ö–­6hhJ¥;½Zm±ØoÅ`¨p›µÅbô'‚8°poåPçF”±Xnï®…F8·~d ¨b-Œ ÎE¹XPrÔ->n³`nÊÚퟑXµMj\òñL7=ÿéY(C‘Éó˜‘äˆuº£ÏAxIoƒ�øÚÄy“ûë2`”·óõÒ ¤°kŸÇ�n$cƒØ‘[–*>bƒ²ñ¹2KZÌ1ëqÇJcÖ%ÖNÇ*û�t¼Ó�Eñ©ÌÞǬ±Ž<–k3(ÛÚ9…T6Pøê/lZkÊÍD4Ø”ÝÞ1«¾c¨Èé€C— ª]1¥+]¶(“ìÞ¥F©»líZ©cÉÐeÐÅå;'yºl°í†5à;™ÁRɇEÅ. ˜n�j3‰é·Ë†ÕnsQ—µqWM¡2ƒ’)ØHÙµFêÒ~]Ö~]Q».+»Aé ¬ÝO+ÊC<]6Éo˜Ð6 º™±J4€5tQô&ššõ�C`j‡ ëB„Q§1È| uí^öà12b]©‹>¿T“wÙX |Ȇê�d{-Èôj®ËÆa‚NrÂºÛ $×ä þC Ö@‘A^ÀH§%k„'Kž°’žP‰Mqù„×ãc�uŽ´n[îÜc=¤g«¨ÓcÙs”Û¦XÁõX@–© Õi=V½r6¦L$ô¦ëŒd ¿­cžÀwC÷âÞ �‡xªÇb¶gÅg|ÈêÒH›=·Qkˆž/»©SVƒ§ÒƈpʪçÊ[4dL�§|z,û‰\PB»P´%‘œ›•ì)ë˧bIôŒ]Ù™Ôk„ðÌΔ�çê¶jÇÏØxµÙÔds\ÁÒ€‹š BéÙx`�¸0ô6¿yÆ$69±@2Ë\îI¿7¤Ú}Um2Ÿ±:h›ò54–!( Y<)B 3›¼~ÆF‹3sM½–~gl˜ØHG6^ê…ÎØŠæLÜŠOy©í>›ûÂàø>›û gÊC¤>¹×)Á¥Ï«¯dš{hؼ¤v³Ïƶ±UI_èO�>«É~ìü ' ëT}éŒÏ± î³Nõ…1úʇë}6ÜõÃ�0‹1·ÏVê}<^ò`Í _ãÓ«þ�°&ŧ¬†F‹°Ñö �¦ÈDl¥¬{âCjýioÄk¶D‰®«ódµëÎèOçÂ¥T\ Xg®À œ\. éAA73P¡o¹Õ€ÍA½Ý€ßŽPvQZuÀºý»Ô^ll„µP_5`�K$…/ðÝörÙ<ÕXv+Þ( ÅU±ðFÛ9ÈZCÀE8è…:‹‹fšƒ ¦ e�áác$`cˆkR<ÛpäM%#ë 8\ÅÂ`À†«�¹ÅJ3ò²þ2 kÑ!ë1C|‡ýç^[OQ¥CÖ†jNg€‡¬”U˜vf lE‡¬ KC6¡í´bˆ‚…sµÁ…, a ”‘()YTã›t°!‹°!XkÏ!‹�¡ŠJgí²QêÚ×*+—sÖûΔ1F¬õFPß.P#Ö£Øßá*G¬EF¦XWååÓöiÄgÕJ@¾·b»]±Ak„{GËe¹'>bãÕH|ªÊ˜oTS˜Ø �XEÅ;RàÑ´c=@ÜTZ�ذUÅ�‘ò©P–YK㫃›OÃFl,AgåÊ#6” “0'<�Ø`,bé0b�}1�Eê,~±)½`¡@©-hEú¸¨©`Cç/øwÒÆPqÁBþ¢Ú�½`廸œ#VÇìò­æÐCš€�Ž-¡šÍªQ”fÌSr�æô¦IØt?†©pcVec| þ†\sÌúÂXé9ºj}ÌïÐÆŠîä§ò‚ÚȘ kã¬^e�Ùý£ñJSa©ó>…~j ÖÔN�Y—z\Î8à/b*ó¯(ÐuDÒ—&®r‡—aª¦yù6à¡""¼�Y¸�Í¢ìÉÆ¬×�!¹â­$àáHæ+÷"�Šõ;T21ô^Û‘0M훌٤ ¸Z‰Ì�MÙ¬ V‡à" ‰ªg½u¼Ž]ý˜�ÿãkq«Ê¢ÉΗ“`?9´v»j@ÎΓ4Ä‘ õØŸãEºøf~Û÷ĔŸÄÐ ˆ ïIN«ªØ„ÅìDd¿ªMlŸ°H�˜O² �œ ͉‚ÆsïÜâ[o‚Ô„'j«|\MÇt‚¯¸É>~/ ZŒT˜0ËçG³ˆ›X¼RZnb¦"ª�…Û$àÍ^|ÌÍ )ø:ÊÂbi"ômµ/ÙÀzùÉ–»ô—¬…Ï!+ÅÀ|¹³ù_<ËŸÄwqj“~<)N»ãÂ;ÜéE0]²ûë;—6”‰î’•ø<ÜRëºÁÔÿº¯['‡Ñzt**t�H®pÖºxk®retÀT‡ÅTÚóÙ ¼obÅ�ÕñèUñ‚^+¯™ëJèéNR9ÞŠÃ&¦vÐAu5ªI7Øù„Eiñ¾™‹•ÊëÞ®“ÕÚ‹Fóãµµ%ȃÄwbÀüiØòpk<@*æxL-¾Ë-ïlÕþaƒêT9T-Ÿ\Ĩþ¼Át}XN¿ã kJxOú¶riñ�Þ£»X[ŽÀËÑy øëÓïU6—5Wž·o–eÒ UlÆJ½¥¡ ª_þ®b‡žÐ_<Ö/hë‚^å9©í¬Ã‰e|±Ž—#g3 ÙÌ�‰zç¡a@ÄÆø„Ï â7iäêèFÍö£².([®øG.Ä*¦`Œ ™rx¾:þ Vl øwV AW$K)£²vXb£2òu¼^SO/ßDàU¯&ÊÐØ:Ï]�©¬Ù^ÂU‰š¿w!üf)¿!êl¯šõWzP¿bÞ�ã*�Aù̳šÅÔF�Ö•gÅín ‰`Z@’‘Ù¡xÕšÏÇã£v‚ãK~šF¼�Ÿ9™"D·;ÅXb2ð2{/¬ÆkCìŽJ(ïãl`“Ò9Ú 9x’"eL ©´ø—;\%éfttÕM¥Šþ Euh~Cô•CÁ¸ô¯T ç—½&æóôíø°=é]Ñ}ºq Í×;ÕÅE<¬WÝYjn{Çÿµ÷æÝm#YžèÿïS 8gFö$E/éÊE=Uùh-¶ª¨¥DÉyú½£! i`b‘-ËùÝ_Ü%60mW÷ô¼ÊîʤHD –7îú»”"g­-±Ê�¤‹Uͤë ž?ʹȚÛ4ÿcü!<ÖýÜÄW»»1Žî-q,ו •Ä[ѹñÁwZÁÜWeQ‹±X.§‡‘ ÍÁn~Më;DC™ÊwJI'”)¥¶*çK^fÒG¬Ž¾~ÜíàYäÅœùÅà«wÓ\ ’l£ºÄü<ÎÍÄÛÄZ+]f2€‡yáž¼ˆnŠ´zª“�žŒ¾ób:ÐS�€D¸BáÕ;Rrc‚ÅÁi–Ü�ïmɇ–\5Í“i&P<½–ªN±TLà±ðXN¹~«;Ô£•hîQ€ÐNº¨/13¢é¥[M¢](:&Kw+nM®÷R»cƒ¤á-;™J䥸•3D~ ˆ Ô 0c4¨ ¤ûÃ;˜£z†v `)òl,ãŠtIi„ƒêÍÉ–Q 722�E“�æÑ1¡”“�q&{Fl6‰"Š£Ï}�ƒø¹Á’Ü‹2ùL,²—�×ãë@€cBQy%àoõëJêíñ-Òdp³•އ™¯×¥”qoŠr!®âº–̦êMd™Êçp EaË;ÁSNôƒ¸¦kŸ£Ý£9E`E•±–õnAN�ÚYÃëZ§ œpï¬P]“¢¥d&o”t'ÈŠ2„•Ìl'�Ôû ó%Ýû2j2JE’Ä¡ÃìAÜeð@HÖÝ¡ .ø¤âd ê�¥Yñ„gRË\ƒ·à`å鵀ŀ£Å%* P`ÌÔÀ?Ñïu\&Òäk©súFõ–~‡2ïÿTñáÂ#åùðÚ ßª—$i¿…ßh…Ö:FHÐKH‚e V­kÝœ2¹*n®b–>{Nò¾¢B¢V÷m !JtÂÖ¨4|`'ÑÌÙz¹¼w‘UhÕÕ¼ÍTÆÄ-ñhÌÄÚ³w2wŸ"#„@‰€0Ek²«lñxe£ €ˆª"Tœ�9ú+òÇÐ]ôñg´Ò¢Wv1dÏÃzóE·û.reó�—˜z`6 LTrõì^ ¾PWl+^Ží“¸¶›RøL‡F¹��ÑO<,} và©5®ÐX/è²ü§¬eKÞüªå¼@Á“¥¾x=�âìC\ w\]khðǸ¨$cÊD´x¨u’iR8<XlŒÒ¢ø(¹…äç§cÀtG§'òÓáÑôô™Åd¼.ìËftº÷æ² Ã 8LÖ¨DÛ1‰;ÈùVø>ÄM%&É´æ#¶†Í“¢Ã›àÝ(üßc#)G‚ÃçÖ´‡"—RH/÷˜ÚŒ¬kÓh-v"½ì’îòôo¯Æ¬7"£¬âåÕ�¼ˆú¶ðÿGÝ�ÿ^~ ’¿Ø^â%ÿäíôèiÏ~íó³)û9ÓD`Y°ê^§ú ]÷Á�Å!ÜiœGÓ‰auh6¤¶®�ñ`@“X|gϺ˜7?}+!Ï^µß’[Ô>,Â1 \$Q×MKÒßè×Z®ÑávÉšŒ£_{®Z¤¢úå|k)l™T¥¤©ùTäJÓÓíÓº)]´ˆ¡Ù…u=ˆ^6­Nú¯ÓƒNÓŠýXÇEÞì<¢×;àÆ¡ã;P6“(ÁK% à ìžò?¹×WÍ �vî[ ˆŠ!é‚Óù‡T‚nÈê—‘Æ—{¼- / ÔA¼�IŒxÝc@In¼GꨠÉUá÷’¢°Ì˜vÍ \z ¾ÔÛ¨î¸ó`•*}Q§�Ñ–c‰œbݨ1?VÍup®3Õ¸KpÏ\"„0ùªÊÙÛmßõüšÜ"iUÉó¹ Fí¡rùŠk H]j@Wû;šçe:Çûœ®ºöÈè„û3ôEù–«¼R§’eö ýÍa÷j%›Y~§q“¿Ï¼s|’ÑJÞÔô¸è8­8™ò0aG5ÀÜ*xP–msÐÕ¡ w>BwÃïòœ5§ÎKZE:Åz-¬v)5GNðº�¼Ç`œ!w#óRªqÃ\ãºHüÌÒ3ž0… Ø�‰Éú¹é ¶CHI÷ìÖ”¶Ö Ìð½xèžÛ.�3½B#»M˜¼ÚÍœ‘xOgÿÖÎõÚ{žÓ�¾-v´]ÅÏŒñ&“â HŽ#u…ÒE'¥„1Êpqçæâå{Aà¥+•Ãê®{Á N‹­–áeó5ìÉ3½žiO‘"(iø°@QîP£USW® B…G $®¯bsGlÓ.ÃQ‡gøŽì*:†U½C_Fáƒ� Êä(Ø›ÁtÙåÖ×I,9òœM’ŽŠ<­AžÑå³n‹¾K€ñcÂ2ÚU† 4c=BÅ·Lt‚/X„Û¹”äE9KX¨Gò:/mé;BñqE‹ÏP=ÔP¨Kïµa7¡«Ð°¾{àò’ÿÅåâV ©å8P)g·XÌOœû+œÀîæ[)›¿A¢¡;o`´%î¢wkÈг¶ tozÏþ‚ñ¸*œP‘‚¯úékfæí·55 ¤ÖœÒê 77Ë«xÍ×·rœ…hjFôó«@<Õkæç¨¼hX½ÉOT'׿Iízm¤@q%¯G¯6;=ŠžEX鉯–�ñe¿UÕ Œ¹¨ƒç…ç–+©dl:­7’^¼Þ0¹ÓM îßRJìÅÍ5 Œà‚÷àV¡øbSï¤xˆ;µ¤dÊ*“‚W69,tÜŸj"/ËøV„mÉ ?Ü¢éÌ Ïjr)^¸½$f8 Ð[EŒÃÍx¯~ïd™ÿp˜d%Ù—¼¦üàüvbÁˆ.6ˆ6X„nvŠs²aú€ò‚H @¾Nó¥÷逪©Ùˆj�y÷èÄvؤ-²üÁè®V\¾a(ʻғLþŠÇW� ©môÈBHŠH a(¥AuJ^]]Ø¡ÕÚŸÙàm wn%\ácp¦büå³#¬¶Ó?q<¢×M§J÷+I’¨v´˜ø"`dù¢Û)1‘þ¸!^Ú¥ª©Uퟭ½ª´é* åƒìaæzŒ ò•æÑ§±¿vÚî�X¦$öãsÑéÛÓN¦íJOöèh$+_øƒ¥�É«K‹ª5lûfoïÇ›©¶©òŸ·zý3“¢vVØv‹rUéLÿUµ]Sti4~É´2ž£uøÚ™€QÐñÚ¾~ð’�9+„hmÃcX0æ¢&Kºð†ê¸8¬Ê#�»[=h•3aC\ÐÛ²V›ô­)È™«SöØã€�ă>‘< 1K#[ß=æ‚X5å­˜†ùÅiƒèùY¯ŒêKÄô„Ö*E:´Ä‹îi,›6AÎç¼Ø£Â-^�‚usIš‰ ì%Žj½J DÎÉ“)ÿ,Yê\ÐÑmV\ãÚ2«V|÷ ™÷E“UÀb&L ‹èÚñ•ÖÄKRqG•éIRÆ"P×~�¬}Ä5 >¢'GÅS-§¤f`®Íë‡ÚŸ¸³Ë×j'¨T˜‹Å{8+ü6l\mÚûµ�¢VPôfç1¬1èŒWkÉp%ur�vKöpÎþž’o ;¼zª-»ã›¿™ç¨ÑEØ··žë²—„{wÒÊ>Õæ©`{¶cEOtSôÓg‘ötÍáGY3u¥9U5¸2± W"»ˆ÷tîrDù¶Z4§ú îÏ�/A7±õ�„2•œÒ©j&Ø^E–à˨¤ˆœÚ<»I߯P1üÖv˜•¾ŽTõ&œõâ2æ¤1,v%¿È÷ ©ŸôÔ³¨´4<Äû¬Ô¨$3Ø[¿0 ž€3Ëù�Ê"iäŠO¢w>HSà´¯ÏD%¯´pÂ]$&P9H6ƒò|»lÊ”òITÜp¶<P:Si¿�p]CVþ,e ïFItIBxìÐŽ(”Vž;Ù›Ý×8Z!±EuùÅ·~†{.µ¾@ÅñYlµÇ»­¨¹ZÒâ®PèLÃÔ{W`º¡EÅ*’µb­ÂWæÎÇKñ‡¥aƒ(ÔeF°µmM˜h©W­drÝn‹@Ú¡Ó‹Š¢²ŽÅ&o]g+!käq±tŽCW2°G§½Eù³/>¨LÒMã„ßBI¿àÉ �'åEÎî¶ �?Ê ~^Îd(£Ã#¸Å?Õ-¦'Í.@¸4r–u:²bíé sÙ(ZŠÆÝÛþ[jr�²­÷²9&gDJ9ïVïà,ÔD`*#¨qP’pˆ%b¤§i�ã:lp&ê‚}s‹,`·Â ªS_”þ sJÆ-ȯµó¥h…ÂEµG‰ô š k©oœ–Å}Ðõzó³ÚMl2Å´BéÈ HÞÕ~¡Wt£X�xCÞÿ$­VEޝ Ëý³êûT¢Ì�ÀØ• È@M *½È)—‚ߨ?â&UUòBeF 6¦XTG4pD©•ÀHÏST¶ÚõkŸœ¾@|+á^m÷ýgU”5IïS•/³ÝÕµÔ4Ÿ=»Më»æz"Ùóüöã60˜*“4û Â1žQÀγ—/¿ÿoø‘«ømÿüùÅ÷/yh¥÷0ª—ðÝA™I~eZ¸ß?Fº-w!!kASú™Çaæ-ß—oÉ['à-.䢺Á˜‚¢2~Lø)�gkùá¡ ÅÑ`z&)ÝBª$ÛEykMq‘%å¶ä·’ÀžÐË3Xߪ~Žm �ˆ3ù�$@¹Wô®«3öïêe†B4„#Nóä Ï^{/¨¼»·(­�—RªÙ�•’ïÉIïC˜#~£ü¹YõŒ+`·xŠîP1¹+> —I!$¦•"_ÜQ®0r@zòq6ò Ïý�¼üÁ˜áG§ØÚ•L%¥$7  ªL\–%ÎöÉ R!Í^IM Q…‚vâ²DÄ–-{`“-°x­B• ÷s„.HTBÜ B2,)G–ôyNý|FæÁ4r�ÏœQ¸U5ó¼É´´i;uú¯ùb£€ÎŸ0‘•_’ˆ•dlÌMWªî° w(¼#™ Ä·Æd´×áåNòzM…¥oåÁ ¡¢"®9ü5ƈO ³%~?QSþÿ.2`Ô‘L$cZBÈ„¢RrcÙJ§ÁÎ)T‰Ïv”vƒ·æ˜M#•@³fÌ6²ç”cå‹FÇ/ u˜;÷(ø/Jñ„ŽàöX‹^ÜÜ”"dÅ@(Ïö�h,£=NNeZf[þ¤PÌŽÆHå,“ç\P�T*·+ÅÄÍ•†�7‰vʧÜÁxA££……¹¡£`,â#msÍiÅYq‹¯�(3ØÂE¼‚õ¢ˆ)Ö”%÷)…�<±Çë¿byª"°Rù蓽bþTå†W  ]ŠËÇâ‰@Q’ ìqU[T‡ð§[2z �®‰æ.®£ùþÉhÌPxüIEÊWüX`ö(Ð ”þ”£à>®sÌ[TlÅžÒ¢“¿5ŽR”`0RRkF’(ßÑ`,ë‚_6¾ã¬6ÃgMúYU\WuÙ,ØlÒ(Vò¦XÞ¤ªv ’]+wnQ>¬8_Ž«ŸÞ:)ÐVŽÆò�j�÷ó�Ñ_qÓ�ù‚ìq$¾HAªHUyÎ:Ü‹Üx&®‹ìU„i1"ú;TœÊÈ7ˆí¼¡Ço¥�"U�„-Ä@Âõ/ ôƒÔ�’èú�¿Ù…Ô=– 0-ŠÈÄžsiA,Ê]o $.XÀåÈ×é….Ä`d¤ýc˜0²¤–Шß0‰æpÊoñÕ:N�"îq“‡‚hXBHç‚ [2I+_ êY�Kˆ´|—1ü¥XhÜØ3d gK_Ê)d÷Ñ H¯e)i!4Ôƒ$cT§YÇZÞöJâzXfdýhrˆSͰQLkF²ªq bH%j>N˜úˆÅ¿Ãt— ìænè¬&¥u™]¶V™£öñtIª´E�û&ËùÆV—4æwæ 0ʼn`ø…À^oDø±#!$}èzS›ž–k^ORn(Qž‘*jÒ`cdb�Y›àTVð迯gêÃã_d"é€iеÐV¡˜J \üºå\X• æ•ñÀÓ ·Ôåè“(‹í$~¸EÛ®šv´Ø‚•ÝùhqV�Å2[m,‰ÓbÏRₘhý5|’ûÂrað³4—çU’åû‘>G¨(a†,õbŸ;Ø9¸P䯳êdÊ­�dHb¤ a íϨ”@ÙÂ{ðT/øž -Pj´À«­¾ƒŒkN7H¶Ô &]TÞøjå[‡g‡—�ñb(^�[©ë\ÒUæf97Uä ª"#³qÒ $µ6ÊÇ[55ÛBôGöOBÕ¤¶t(Õ7Ø5;s%)�¾lÐ â Ñí�ÁâYŒPö-åôP£²x zc+HN¹ÄüÈTåÙÉ�:5iÞc ¡z Z &nàZ_®# Þ€™¯ã·iƒì/ 6þVhb”šrF* Ã=dXU3CÖ¼O³4ÌWUž—û={¶Ó‹ApD@“Ö )Q‹Òƒ ÞäÙë™;§06ÐÀaÇTÞ1^ˆ¬•’\…!•W–ÞÓœÌÛs¼Ëp%Ø~ï¦ßN•uï*J¸Ø% à“çýD#êºÉ$ç‡9â;e¦L[º‚üRÞ563à>ÑvWhl+œ3cÍÂÅ. *Ί’ úÀýË`ê?v®µ°Óõ[L™3!Êzçñº3-ãP¹, uîN,Þ_}Ïým+N#IzBy@p¡HΓ”Ø"f4ò &ËÏ#TÓŠ½n3ú)0Em?jq/¸qù(�z))>•ÂÆz)ÒÕ¹yWž•ºC5êÚ1ÑHÛ½Ô�ý…ƒß‚pD– ùŒ®¦M!Væ )í :²i§DC¥%~ûõPà²K¼í^ð¼, ¼×X±—ruj…z4²E“�¬š^§± ”Ròhãa¢�±VK(cÝÄÎ8ƒ]{.<Tħ,J(›uÍ1xä®B H¬žL&:Àñ¦Ã�tÀž# á‘èÛ{^À²Á(Άb(�$�ƒ¢¼àm·l Z[Ï�­Ážª€W´Ó,½ö]û’xÛáô(°,43­Ù))>äR$…ª‡Õ`â“c‹‡7}=ySʵKë§aÔÞµ5Ó>(Ò þèòS€C»¢„½ý�+ÉZÉ}˜“ õ þü–ñº´1lë rLHfW”/H· äÀ"˜Ò’¬&ý¸½tV@C0ÝyŸâ=è9 øwæþÆcÁœEPðhK”Î" -y•Ë< ™:€î¬Äíõ$nnÈJMªæ;Rdü.^RœXº$þ…ZèœÆR©;Í.Mÿîäð,šíÏ£Ãビ³£éùáÉñ<Ú=9ÞÝ?;žŸËßä_ggû»ç‡ªÏÀŒLð°;>‡�Vœ„|zþ¸ëR /cÆÖÓÊZ”“ª'y!>ËëIÝÎ^J±úœbƒ°R�'N½ Uº@³föñ÷ŒÚô¿¤./?þÕ‰£ú_ÏøÛ[”¥¼ä_ uRÃò è¹Rö@öut‚†¡X+Ù×Ýœ&ç»oÓEE›*ô…G¯Õ5óë6`[�„+·ŸSñ³‘¥vÊ,¦Ž��™c”΃ÿò:iR>XGûççgûÖðøÛÉÅYt4=<>߇3¥ß�Ѷ¾¶ £ú‚³©Y5½—ú@Àe�<É}1q4q¨7â=Rüœ2è k ]€`¸2R¢íà"ÅxvxpˆØö‰ R reìWŠß–ȧ ÕÖM†¼ðãBˆ$ÔYšÕ#=:PšnÔZe÷’åÝAZð+Dñxuƒg‡ð݈� ¨ VÌ.br+×�¶pØYÒN SüpÞqÛ¶Eé´T(`ï“EÓöïé7†óYš¢‰X Ÿ¶•’ú¼e¼OcbÃ5mÁû„y÷ôC7�œ¤ŸÐÐm3C’‘>ˆë<ŽT)ª�A?Ø9¨ó~Êþga[•?¡êÌ}³ Cã@¬/ØdÀ=1‹5M„ï‰!sB5±À Úà 4¿àZ¢�DS²V:ׄrÝÅhðXãŒFey?U6$ÝkQ ZñøÒ„ËÜÛ'ÄÖ¡¢ëäÕÁxðG‰:dÝá'È…¡�¯É"ü;Q‹rÉ`W‡ùQ\¾÷ ·ÓõÞ�;"ϘíuJ| T�³GTyñ¶Ü…ÔO c²%�ޏ:EcäømÁác�Ü¥‰¿¥˜6¿¦P)FŸñœ>g»ãudªÜäŸlA²hõ§3Ϙ‘üø�UM‡Mëâ bê­—x*5sÇù­Œ75:uvøÞÚS}ú�³¡$Ö;Šbåû¿ä0—&ÌáÎE‡¨„¦ F@ÆIr@©PM–M1ÊÜ¿DŒ)WS8ï8]…˜O�…+ßÖ°Ž I6FÃß=Ü;Ã:Aöqs'z1y9ù~òjÌž?{ Ÿå?;/å?;œ¸óJþ³³óì‡õ_vž½úÉe|ó ”Aš+`'^âšeõŽÂKŠk'ÁLülG�c�Ê1HøT] øC¾¸“⸊â…J*ñÛ¡Üä&i@ãÀ˜AðÙŒ#ag„è£1Ú‘Ìȼ%ªÖ¦‹k“s¹Hƒ=«K¥�–=o#r£›Í‚¬ì SŠ4·??9ŸÎHRq—ŽR¤Ëj@5bK˜�ɨî>B£†ÜÚn6£b‰èWq=ÇÐöÙ±çoÿõ�í­ßþ«~xû¯ ¬õ¹3ÁÞ9�4‚P_Ì {Nµ‚ëÉ>žqÍg‹Ðp£/uL$„yRŒ ,w3Œ,6UQ�¼á £8Ï¡¥hƒÇžºFZ'M:V¹*$]O¾/lÊs6ɾÌÄ€‹F˯8TÇu«P˜{eÂSêF£æ¡‡ZwbùOsH߇,Æ€~Ä¢[~#¤˜àG\™k»lr3¼kôòùë?|4뫤ð#nyNó+”ú¶Éu)Ýj S t´SN¦€Y‚„ äˆêjù�Òõ~e P¼¶8ÍÙ¢'S•°ÿÔé%¯+LmòéŒöš¼TÈ—Á¬ m˜Åe±fÏT;úõ.ÑMHÐ73éÖ‘ÜÍ‘ð>Û®ö0îØ™¹³#jÝiüНœo¼†Ý*··&/Ú(L~QÕ,—qù°ó˜Å×þXjôU-âUZ7WQÌ⪹Ý{@´=˜è@®‡ð†U ±#¡M‹L„«%¢«iÞu”g}­yûÍá�¶š.|‡±Ëˆ`Ýn^5£‘øUÒ8ºâÍ©,Ä#¥VÑø‘Ëiiec0öÍ�wOå÷ä3�Bêx;�SÎ_YÄYöÄÐUIŠíaíízí~1Žl„Ôæº?þX K#E»Ó¼ÇWŬ�<Àˆ^G#J«ªJIkùꔽ–QÅÈÔqC#˜Ô²´Fk7Fà`8Š+¯‰\~�©æµ´ÀQ�é�áò¼;²Ÿ²I� Ò—�¹C­³âÃüa Æy¿øÓ¤÷Œ'@Š_ȵMŒ0¸�ä– ‘„M“ßi‚:û¬�ÀO»PæÉ�>â\ÿîîQ%„>\Tz ƒ �©¬;C_oP®¡²,˜|;¢Âøð¹)åhNDËb…P®§6xÒ®>;ßÔÚÕÈÆw)ÜOÞ £·ø—¶�¢ƒå{X(ÅRB”�¢ ±÷ѺÄ"zh<Vž ç]Th1rÄ (Tp­«h´�ÄÂgRÕ:"�=~ ÅÁÝ?ÍnœÏ…è¤ã»QNÿÀfÆ5�¨Nî@Üöl›êšßCÔ\Põ’|5¢Á ¹ï¥^��‚E³ Ô)CÆx ˜7pS€ù!³ÐÎ.T@#Ch$(¹xn 0J~|æ ÓŠ¬˜íh£q4B¤Jw0̸=ƒÚ:Õ©ÞÅZ,ãM†´ÆìõÈðf¡”%5²Ë\ßg—ù³»b)žýÏg�%ñl©?ëåjýÏÉênµ>� ‹økgAã±×�úä{ot4=;à 2¥~éåª.È€_P]¬;£/àÍØŠMà^‹ˆJÔfô)Z½–Ÿ|€Ùß3¢§úLÿ\D€ê2µN?݆ÿv7-€ÓSÐø¯:ÁÐm»7vFâøÃ¯$¡È÷ÄçH-0¼iÓü´C©WËëFšážj…�z‡�ïš2H>Úzi×!À2eB{œGKÀK¥vKÕÂÚ W»ÐŠSœ�Ë™"ž» nšbÏux×0óÄ#º5ür¹>¯�äÄ2ì6ú[[Å. ê<ï´f‹±Cjh ¯Æ‹…›èšG¬5Ò‚Àâ=.-ÄGÇÆñ•/50ƒ� ÞÒŽð¥ÐÓ™SF zÍ®M˜ �EQZÓšÚ×±–¥â(í¾™mqZíÖH�L#ÿÚäÿã7­S ü+ar¥Ü%ö˜€}!èL!ƒ–R�H¬–frˆCdý¢^%0\•+»\kP`ˆB”ónzLÛ¿Há}ÅŽŒÅ”ûUc̃V„hÓF†!w‡®(ž*ÁwîßìŒÙ�ˆUë•á½eA¤tnv&¯ïý¤Û„åCÃÊ[Ê=É a Ò±o+�ý¶'‹ŸøV@à›Â1`E�X‡$´Â ]]�¼‰j¥�Ç’ñT—𠯈²è–1fíÛv;P°‚¦3¿iÒz(Zø§¼Àâ­`Ì‘]Þ�VÒ|© $Oé«¶ÊBî—8hë)@CÀâŒÍiÀ¾¬.rùÀrvØ2u½e{íË`Ä’òõp&>ÖÄi9†B!4mpT;¤Æ¼dj/­!ÉôªZTt–årÝ\—Ùd@Š&¦ŠøÜ *ƒu UTO¿ñ¹Ù¢ÄZ¨ÈrÁ8€6gþE™ÏÚáÑ –Ò¸«{¯ÔÌ�ý¹ �4Æ-ßô[,Õ2;O9Le‡D \jÜÀŽƒb•\p”Ö V3öõŽ:_{ºMa_¹ÆýÃ3SbA½¾¤ÈÞ–nÀm ©OÔ\Êk $á®uØåÛr¤xYkäs…bOÁÅ6«Øm´EF•¼Å f[ú>¬øøàÜB¢µ� 5Ê×3)uÃå±äÊ+/J¾Á^B~ŸÑ]¦‹íæÞV¯Öµ%÷ ®nU4påA}ù.Rly¡õ4WZ2(Ë!˜b¥Ë�`H5r¯)¤÷žË¨Ê�ýÞb=¯ðí[if€q•.‰E,ŠeJ€˜�? …éâÝ×#+æá,«¢ÁÂJÓ`>Jy†0(âÎ5ŠJ$…é÷TĈчPçoÓ|õ¹œ,@Àœ¢¢rµhÕ`7ò¢Òô ?!ìë–È1ûBåÔ¤´-k”ÀU•¼+•õ©°¤€ƒ X×[ÎÀ0X�\5²ìëÒF£©Š¬¡›½á9"êƃkÏ%̹ˆTŒÙv ˆ¯÷£ðòbÜ.1X :cïì�r2ÍÍM*ÖóÙ‡Tî 1¹À–Â*,d…ÝÖ¡ ÍH�Qäjérgrù [õ^UA“òÉÆÅnœ¤þ0"ÈTɽ|kÍ!¢–ªHžN Kó÷çÅyìÍ_bK/÷ƒïoG~¦©P@:¶-ÔPg6Åæ-÷’¢Õ ÔÛ»8›bSIÄ™LýMRZFµ³ <×Õ@  lGÔݾ�3ÑÙ·oAʹ¨C瘢d(‡*g\WÐÚO<C¢òا�!{œ* í̃#»„Ý d2aþ2²°<t“3í{N§"ËoEÍ8R„]"mDµ-ߥ‰ðš’ÞQ)°‚83Òº®ôiŽmë *¬øž…bŽú"Í þL§IÌì3gr¥Õjù†4I~ ­á‡œÒs G.çj¾æ˜ð«rÔiHUªi“;“tœbQæQÿíÕz`Û⬧E•¢•e¨ÈþÄ"ÅrQ´9Ðþfs¯¯ŸA’†0NŸVWƒ®óî>Ö#  6@ö€•¶»,’¤Â©*ÕˆÖA¥é¼jÜ'°E_Ð-rOhëïlˆ‰S`À Õ÷½ƒÂô‡ÔèÆü‰v"æŽÁÂjÀ+zŽ_¡òt  Â --u{Öòœ,2B½ÉIžyÃÆT‡nOÔš¿ç?ŒEû«ùk”`Y$SËšI2KË"EÜìÓÏš‹ë䯎ÐO`KqÖøÝ�qÆnÞ”õº¯X\KÔWKÛ¹¬Öuç.êz‡TÓêÄo(:Ì(ã�ÁäEãÔúgùái„!˜$ Õšy@䥸¤eÅS‘Ðà E ƶBÈ�Pø1o–R¿:¹9O—~gœ)ƒ0æç´ûÀ ¼<Ç…ýÛ~²X4’(GvóÝQ@€³;JΪˆ–ž{Œ¨ä“ˆœŸýÄ”ÙÄD}í}’rºÝcô V K”M¿z™6[–.æ÷¼>Úòóy¨r¼”(ŸÝ‰¦T0 vr>ð¬Â¯�¼½üxóŠb¶½'ê´”ˆ¤¨™Y瀰QŽðž‰§Ûøœy(øò…zVS°®õVæÙ̸„7ˆS\FÑ YüýŠRoE»›­¼ÎàŽÞ½óo͹ŸB]Zÿš±ÛXÕ’¼’že$ì—D¬ "�´Ö¶7ý"”µ¢«³0í™vÚ´(ªký|E`‚’]ÙOL}r¯b×"v—Æ@¤.eøwåÄäʿާxiÌäPÉ¢ÄAhùN†i¦®c™P¥Õ4¿œDoȈ…9H(gÜÅPýA×_ÙùYáÕÌ.¬Â›1+²N ?Šìð/ÓÃ芎hð=Wû‡ô…Àü% ˆèïòÇðèþ¦ÆƒúŽ©‡`)ÿ%”‰ Û ²;(lÚ&g,s èhü¸w8Ÿ¾žíïíŒööçÓÝóÃw .ŽÆ³“7;£¿�\œOg‡óý3(C{ehåþqÿýp6Û�ãg§mW]f+º:¡¹àÄ÷é­Ž§«wÿ>”NtÃ~mZj•ó-¢÷(Såˆ8¤¡Kð"E›ü�ƒôcw;�ÉhÚt'?XÉp©¨”J|´tNP¡Š> I»þ �Ä`|ryþ¡œÿï�UÁA¡çEGb¸7,½«„|­‘)–K&vÿbÕ™ƒ…‘ÇÀÞ8Ø<Ôš¤S³à_Vêqïp&}Håûˆ€CEt,/J ùéÛÓ®‹À“zÓν ‡ÄšœÁy_U Þ鳞|†F´gRœM:“ý-mG_T¿áyhWÏ_”,Å¿ÍÅÄøK¥ssÒ…~Þ8D‘äÜzæ‹t;Á¬9®V �ÐNú­½/²/i”—;ÓH’kðâ`Z®êοï[5wÉW×cç”Bkø¬ ýóH%¢†´½{”óè™£Þ öš>sab=ŸÎ �ýâÈû}R¤±ºû*þ4¢ôÞ"!¸Á�•Å‘ê«,A5ë"¯Ð•sD³m2,öžß2çF€?Æ0‰R*E-ŠÐk’-åy³¬Â ½'Gh«ÓŸ¼–¨"s§FVwŇYÈÖ­²6—Eš#�J‘q² nT™PPþ* ‰.…´AIÊFÊÅ\8>E×î†çϤJuCðT§qOqzVIUßÔžñ6lÊr¤~ÓÌÞˆë úT�³„µ�ÀóÄ�q€ézU¥¬¸ùMÑvÛ¤ E‘ð<¨t#â½>N�ÿÝ¯Äæ­ÀÙîh:ûuz¶ß!7ʇNOÎ÷�ϧ³Ù¿_½�ž\Ì®¦§§³ÃÝéùáɱws¬4±6–T.ä>Ëžç'»²Û«ýã7‡Çûûg‡Çoüw;J3P²$…@ËEcëó·gûÓó«ó?Ý¿º8žŸîïJõbèä/Ž�Ÿïï]ÍOÎCË0Ó)c5¤%0TŒßŒ¯›J$rGn¥6y]ÔRš‹vÿÇ®÷¼M¯›Š²Mð1 ç”Í$Íb“vo*S»«+%][}­õ³ºK«;o/o㥸$°pMR'qAsô­¹U«xÙ9x 0øi)ÿ[Š$¿VQò•ëíðŒŸBs/Tÿ¸êf¡»zym¶C¶QKÕÑÀü­ëYwí  Î¾£Å–¯KcíÌŶ’±¹2Ø€Ô}È_Mó$\�s4·ŠÕN0Ü­wEáÏsÛ½+ ‡R?#…öû4�‹ËÏ¢‹Õ°5Ü;ýòQ/Í®“‹AL›àAƒ�è:L§d V©­Ê¶£Þ�­ $EÖvÍ3w„jDP•ŒÄ„¶fGK,±Ú-17Ÿ"ɼ—#¦„+û¿`Å(A8Áqh¾ýF[0�RhSµ3Ë…<ŽÀ™ãŒ/Ú{$‡ tý\ ]ÊÕ‡Â�krT4“|DÕÙÜÖÊ›Ò#ÉþgS €È[SÀÚG¤. ï­Ù¨@a°ø½.Ö¤Ìø¹P°�Áz­»^íÂýLвIÏÚ�wÉÿ{NW��Ô¢ø_ºC\l¤Ùû2Nq­ñ9¤9Y6¬ttgàŒy'P8ób®>¯¿v jTòHIBJñà•ú“œ9åACuøì±o›SãÉ muã0»É W�XYHž(97ºvƒzŒ¤ß)= ì‚ð‹ûx&r^yºPºJµ¿f¼p;N-Iß2;hö¤íèÔäLJõ3‰¦€×&Š~0§ NE¥°mÖ—PW¢¡D‰ÊKbGVÑI¬Ü£hA¦úA02@jG ­ÍG̯)IØLîÇÍ:y-…âóèÅó7'Ñ›³éùÅáùþ‘”“Gš7o:sòFÃôæ:„�ƒ¥£åνx½)"8MZ«�¹hé§€B›ÀùªÈòa…I€¶%yްïi_è¡÷�Ç`|Ä–*9§Õïï•A5¢�w�­Àƒß�Þã+€ñ·XÞ ¾¦ C³d7Ú‹åÑ}�äÛÜ&8÷žW:§‘Ë>½} >ÈÁ3*5i9gÊÝï|šÃ¸<ºTùç5ð„ÏT ‡^$W©ï5àˆZ°_rв¯Ë#öàE;ÐÇFòˆæÐþ¨Vóbõ …™¬g,vÈ‚V/m#àzG˜Lµ×”’;Ík¿Yp‹Ó’â†Ñ]�œbXV"m¡K €ôÄø gŽjn7y`g¤SÈH³Ò0²¬ó•*|4³”Çqª�ÆÖâ�Ìg'4yk´v ¤•P«¾VÜU+ómà©p$é8$¸‰\™¢¨ŠÆ:æ�\¶ ƒe£ù´q7N’ƒ¢\ö¢A¹á'I¿9ËÖꚸ¯ÉRð=8i·0�ÿ!l¤xt×^Zøùˆ8Gú2G%ñk[Y,>EÏšª|VÝÉ…xßcmÌJJÛtÇLª;¾Å¶xj“Á·&]Û{ÝKzjGG˜ä¸ÖëØ9å-ÆwrhÕ<- xwgÂI.>x§Ë»+8×às!Ìì‘�øt<Œ-sƒÛÂ×)Þ;Ÿ£}È×D·Â)A GŸu1vCDÆ·œiùƒl,U´ý×èHṚŸÇX„,�e›Å)`GÓÓѕ޿b¬ed •ULD7`.(­„{uBZEû  ˆPŽØ‚œcä¶ê¶ A1õ€¾´+P]ƒÕ�Ç–Öœ�­Û¸Tž¶K£BÊ ÀRÓ‘±°{ä·„ Ý·öVøºa0-àˆMŽÎß ®kJ�X¶Që”·Î~å%#¢¢wbãô˜N9œâ×·GψÌPp•â]g¡‡¦2œ º]eq®�!ãõ%DW¤²Ãl$˜„>¤õâì8~!ziŒ‰Æ7S‹0̾)¹ Ý�#ýyû…×!JŽšbe»i”�ˆßŽdz`EüV+>‰3÷bŠÃª :v€Z—G‰;ìÁ¾ùCS–hbeÅXkûÒ»¶x!j\X=‰þô¸¡uA&þväM†µQ7¢ñýBEv‘ê=~²%Æ+95·�N¼Å¿‰dœÅë/<%D&®=øKÄï1Ï’À{ÍÕ¬b%!½õsdáìë†è¤4®AWYñù² žlµ§Wyaø?øS*$Ûý­|å]A'R¯D}Ká1BÐåeA8U;r‰äNÉ'âkssZWñåÇëkuyš«“ÉqŽ" yB/ì®\°][ dgát[ԯ϶4­µ¨ yì¼o8öiçÕW2Ü ü3Ò¡OÚóT& (V‘¢çÐ£Åø�¦^ ¾apâÖke±Ù¶Ñ�GøŸ‘¥Òm«õÆTQ¡YS+Aë1¿päÀQÔ_ФâR$#l ÊŸª¢ôI»b‘’¦1Î$8Ày<ÅÆ·áß¿Ê>ë.¥óI�Âx»Àc¼@J,ìlMÒï5 `ܵkùB„Ô4i%]ÁEƒ�Ì›Q¿5z>’ìHᬠl)}Ý(L™Ò¸¦"eÍ•�ö@ �L¯À28WNEpfö¤È÷Zdä¦Yœ²é/¯Ë"C–гn§TY„�û!ºõæÚuñ5‘Ší)‡¼œàßÎcpgÎ¥Âá �dµFâqt»Æ[�Ï{ÊSr¥œî¤ºªÒ[É‹è£"Úºsuå×YzËW¾h]€ÈÖšÒjV”•æ ”†|{Áb2úcm¡¦p|�-·^ÇbéÂI¨ñZž@»¼„Uc,ûÂ…ÛBžÁËJ‚¨N 2˜¥Ü'?üŒ_9zz¯‚¶ R ´ fI]dQ«ôX)âžÅÃà¬8@XfsçõX¤ ª¾¨nåuÈQ1;� €¹Ên’+•Òß³§Á)çfƒÏn&\íÎ@øÅS›VÌ1&¸»o:ûlu†oè呇­¸ Ö=­RÖ·lãÇ Lx‹÷÷ßâ|¾•Á±¦Yÿ+±DŸ ¡4…¶Sþ  ˆJ½Ý+æ]KñŽºW–ˆÄ0+ö)íá< Û²tizY7[k?½Œ?î’K~MËX’>¦ËfÉ|‘Ž;°˜e“I=ƒÅzÊ~?+Ç{Øè(ÁÅØ5ýÉQ!e‹übX†~íL,Báç,-4HØ�×Û´½FƒgÐÇ€¾z1é¿)aQÂÃRw`ôDðÓþ±uR>«Šì+Ý·’$—ÅζGŲ.›VîÆª»0� FÎTép§ßcê iÅYgþîm™¢T.…ŽÅûîGs¨ÑNÆŒ÷8òäàŠ`ø·9,âæ£êœ8º"¨H 錵^þM¹e¨æ�±Ê„Oœ¹g£R ²Õ �µ—Ÿù†@É,ìKŸ··¸ ƒžIšÕ]ÿyQQ`×|öT´~#nY¯]œ|jRG{&ªÓêMšêÔ«ÝûðpRùašÖR�åOs;:ìÊvåÎ2{äe‡â›@$¿qM̬¸�IA °Ú„2±% Ÿ/FµŽeD² ¸SîʱFUp1Fh,”ûêk$�-ë1&Š*ðäÉ|¾¿KØKPw¦<R Œƒà“+oš$)|X+ûpõLŽ9Ç̦*º–d”²›wýØ.�;ëŒüP¯HZ¯�zªÖÒQÚ'¬ËsØsYZ�‚óHyÞïVý 5UnZwSÀM%©Aä¹Á �ìÚ…‚Ðêæ`d;J†’ ËGwÑôS PÇÌÑ)íÙ7h¨,hƒÀ¯«ðRbÌ‹Ij^•Zl õRèò7\~,8P»¤h¸ÂæiÖTìVV§SÞBÞ’u¢ ßè­jnëSÑ ••z`aM˸�d'ß‚\™h‘ ÏZù ^yÉ”nНÿsGsÊïÓñ& —y²@Æ?x—‰Á^V(˜9c’þ¢b¥E‘!_´íã’à7P ÷'¯äÞ°ß $p±TÕŽo T<…hGe^_J"1%D¾xî%áB¬àô¨’‚í«Â+öÂOY6ZhËÐa®$V¬R…5òÂKˆ-‚ÞQÇx 0ö…—þ4ÿ]|�’™žõÒšç=í“ì³—ôÑHñïžÏk2 u½qqöfÿxw?Ú6Rfh bäp$t³”`óïv\Õ?fAE ò>¢³XØh#U¹�üc7é�ÕF¨8ÜØ¿½³ý³ó ÇiHÓûjó³ÐAÊ 3Éjj%þZƒôÒÍîÙáùá?.`˜s9±¶ rºFw]¥’QÒ+ÿz@›`S÷Zá5LüÛ�&v‹’ƒ³š3’½ 䆊º{òA\GOtR ì)�ãÕó§!F»v¶qÖ5ÕW“h¼j%V« ƦˆB[0\³uÉ7Ê?ã(½GlúNÒÍ¡ª “¥k°ßÓ`�ŽbylO˜wXßÿùi蚘¾;œw�æeÇh$�.²”%,Ò\‹"C¢VÃ5£qû]8‡Ç'¡ëeoÿõÅæ'W ¶š0W…X`ܹ¨{…–Y{ Ù�‚µm@ áDí£´hnÝÊõòl@¥H“Dÿä×¢LN!vý­(–Y<ŽöÊF’à˜¢N/1a�üŸUá12N{†Âhí|À= K D¼Pá¿VyJKÁÞ§J° 6iRìPiK5cP›«Éen}¸8O´ÏIGL™ÊÍ8åñ€E µ}êÛTŠš\ñ¢dKþò¦è¬(«ß›-ro`ã5Ęqkí`áìI×ë¼þþKöß®Çñ‡õê`=*ž¶­¹#ÏçîѼWCnÁ®5 Ý0ó!d�+Ðá‚ Úz™Ü¬ÙO­�«�(}ü\/«¥Ñ@¬‹pû–`Ÿ!_§P�¢ß[ž¢ ’%È¥ý&;¾¼²ü|z<“hW{ÁcP£qß&^IHUŠFÀÒ”¶”p–jO·×$:œÄÂwé:§f^+QÏDZFú±æx/—hÍÓÐbÂQƒµÖ…ó|ñ÷c— +tÉÉ¥BdÀË‹ý\I·Õ娓÷s)€^“éÜ,õ bz)¡´2K~PÜŠKlíj_Ó�°'æHqR4¡¡_�|i6D3,Í;ÑR‰ÄÛvÛ˜Pþuב �£µ”œ/±f©¯1Ã]î‹E|Ýd ö#C,@�¸.%D~ŒÌA2ù¤Á€œ²)­�†gfP5” ¿²*!øI%ªr nX3tˆc*q‘Z>D¯ ZÚDÂã×xreëXäl¯cݯmZ¤n3Ãäçš-W'ï›rê9w'§ïRRÀpˆVîÄøÞ©mù¸jÎÄù¼`È ˆŠ�`—@4Y`hešA\¸3ªsÑ «d‘ �t!•㢵zuÈ‘hEº²»¤7â•ný@øØº¥Ê„_Eí(æî›ŠÏ§$Jc<(JÀÞàMvVÈM{sé{n8k:ãJ]”ý)×->J—‹ÝÕõªÚyöìÃÝrQMÄǾžÈMyÖµ³-»äW”ˆ¾cÜ[²ŸR&­¸"ëÇv9S84b¾½Á-LBËœ‡{óè b·“R>‘?5 ×ð·d¥¼àR¶ó°…ÈE¼Šù:¸VµLhò%Å„Fäl°Ê�Û¢ ³»š•Xº§¥ ¶U\ÿF5 à ÑDK7 s‰#ÊR®,<MÁ‚æ=J§5r[6ÕEÜÜ"ñC,89»…:—å±&^¬|ðzâ(™bBkÕâöQŒkpÁwÑÊY{ïz‰w‘B°—ƒÙ€qHDÎì£Ñ�¹`f.œ“(�„=³ë˜y~Õ°‘by�æ’õ±¸äV«Ã €øˆN§Gc–§Pp)�iôìõŒm':z½tȸO{î®Æ>m�^ŽyÓÇt¹WHî_Ô6Æé¯£µ^ÖB�œ4¤[“þŽŒvì÷ x &Õ«ÿ䙜Ó�”ÝÑ C1£VE+©‹O ½åÔÈ�ìr[v¾…x ^.íntÖø $xÇÑËçÑQᵉèlz„Â2ËägâwPн�1V§pn§­Ç=aRû&“̲*”�°ÁÉ‚<±³Ñ¬>úÈŽo½…c«v2¨pÑ-ÑWËF­Ll•mâ"{µÅ$zWTì—Å€-¼wÈx d@�£ŸIvƒ^[²ZÒÖ Ch!éGçC…F½‚0¬†ß6µȨ Þ¡“n‹ìih!,¦.z¢ó“ÊÈuL]6/_üü2RXü'æ&�û°;èKoP²ŠÔh>ÃÔ�UA—hX%¼�öºðÁé7)¤%Á¡7nDaåÕp4“þÍ Ä”16&¹¶‘�·®ÃÃ" %Ê­9ŒÖ™LG·W®E›‰�QkÁ‰¿ZЬ5IŸ Ù2ó*»·ó&^Ö=!÷5ëÊáj­îª¢ƒ_6 ‰×Ñ^Áµm@‰¿uf,±sÍ´ß– t’-þAÉê¸VHVqúº4õ8`›åp: ¯@ûý?ù¨ÊîS‰,’‰®²‚s{§ŒN¯S…ð!'nõK@ŽíLÉ#Ç þë6S¹ýóëÉ9pkË|BcuëE” £C(÷ S\BÑn’ofé56†çºLØšø ÆTçií/41gFNAq°UƒI¾g]¾ýapî¾v @ïpþ©§å2$̤þVw¥I5ĶKÁA»AyA AªÎ ¢` ;Á «­0”¸”ð�¼ &"ܦ1Ô #’çFkÓuì-<ŸÑ“’õýþó÷ÆJQ+<¯ù6àðo£”pÕ: ƒÕ /#/jD‡Â*1 R| ‘L ¹1Ü-¿#ÿqŸ‚:‹ü¶yý®}1éËÕ[‡á‚¤�†#�"°Õ^üГ�†w\+Â�Mä©|‚9"O1‘LŽû ªË 0×Úõ—C à¤íƢܫ/ 6Ž–ò’yØ@ZP#Zw_÷›ó¦rµªö"ps7F]9‰¶l�ü’Qp´Ò„¢‹üö¥üì {ô…[)fºÓ�¢Ä3"Ì�æ¹q-�©®s•‡Ž s]ÌÀ;O�géG( òMÄ—WÚ05¯R!&'¯P8sÇfc~ì¤üGCEYý⥴§‡�Àïô8gžCZ;T¶d{ä³e)²™LJ†‹(Œ€Ú‹ãz¼+«$;jÐÑ) ùZÊ2²‡ß;§sÀGHäöD�}ÌiÔ)nk»B» ;²ŸÝô�3EÖŸŒœŒþVÐ[L�îþìà©Iü¢˜QÖ>&?UÀè²jÝ»!SV'P860NçÉÙ³HŒüñT�–�Ç=� ñì®é¡/— Ë{—–LŽOxK§¾-ñÄCæ“rKä: ËŠdVS¯Ñ¨‰‹U“;𞕱s4å¨<†`­aUÝÜBÜ ;FÕ©Fà6Õ�m•ë\\{¤ž±UáÁ!àŽ°î¶Ô«¹ˆ¶g%ùÚöM½Jºæ¡°—Úr§éßèwOvrøÖ+wp‡|ò{NÅÇ% /Ÿ ‘áõ¯Ì&œô¦kº ª�T) ð�s˜Zw¨<˜²$¹xÕ‹5¥kboaÎ)Šâz¤eÉ2vgËJㄉwRQhõ5O1$¤_U¹KDÙ ›‘‡Øc¢è7§Ž ó<úý�¶ÕÈ ìÝ=ÀVÊ÷öò`K‚Ø?�5QnÅÇè­ê‚A"uJ½(Câ{�å+ Ð$êœ8–üAê•P7^üºŒ~kÀÿˆÑŸÑNKFÙusí 9HOS%’j˜sú‚ìÍ÷iÉÕôb ¢µR¬v\£œ›ù]Y×Gm„ r°Ç•¨Z�‹×úrúWUjׇS†Õ_¦ŸÄ™ˆ3`Óó6©ø�×÷S+HÍõ Xm®ù�FÊ p" x% dÞʲD)±Fè“y’ìñ&VßBh;8t@‹ øWô%Øm‚«w‚KÁ'é½ÍRÑQ¯ÒdØ*M)î.‚o�P:˜ä‹" ’ ¥—@<5{ƬAR.u@¸Ì`Š0pr¢]XUȦàmPÞµŸ]û„¸Ž*ÕwÅõ–wœâéÃLsÜ2mÙ *åê`�©uR‰í#‹ãO;sÙ}IÝzºä™¨Ý[†8-Ï�©Ï U„°-–Þ줥wFñÕTƒR8$Ÿ­R¡J´!>&òµû�ú‘Ç÷Èìõh+5Vé3¢W–Rí9PApxoç;�l0ÀÇëL^*åûƒÔ >¡C‰äR% / (`u·rA,ï¨_T ©Ë*à³~—´¢Ç�sq¢E—¿Â!ò‹ ƒÈ•– ? Î’('~¸oWÝ�ÎlûüQ)))¤ÅGõ÷MÆ÷ùujÐP�iZ¹¯š¦�ÛI‡nÌŸïSlÀÉì«TŽ"쇜ºïÝ�ËØj�º$1b$Æ%.i=«f0Hâ¦(5ª<Â(ÇšGw Ÿ“è�òÁ�K¸”w2†Œ{¢Wšh÷ôBV û±5Y¦? Ä�W%;®è´qÂhUýö.d—W¹cà.¾|eŸ�üs–:þ¶Kz•w°âƒ× SAgSo tâv»Ùç|ÝÇ:ìfÀVaýåNtX¤f •ÐÝÙï—á à éOdåg¾\Çû¸Ë›Ïoá ² \Iì5ý£‘Q’ ¸Ék/ IFAeóÂo!ú[ é>à ÓýV\C–gÜÔ`ÑdõŽ"õ°…Âuà¡î(^p)þ†à)p¯*7‚rkÖ³o}íi®ÝcÐÛ1ôuT#TPî´ï¥0w‘Kî×u™^7a™Òú ÀÂU{çv¡^]>Ž*޲4È€NÍ=Õ;ºb^­T,h­ ñÃÕVå »$Fí}>†g?Ð.éÇð½ÃCqÁ Œ™mømë+´¯_¥„A6)‹ÄÁþìÎ�àW[MÀÿ¼&(Þ@„QÅPÅûq©†õÞë7U+Åæ£X/‹µtT±¥Ü{1XEêI1ëŠFV%›�J¦Ì…þ-±œ¿þõßp©9DƒìD¸ª.ŒlÏÂ(å†* XxIAè¼ÝöÚD$ÍAlÎ$ÚÏT•=m%ZS,¾IL£¿M <È ˆ�Ï3NlŠ\÷´è!Æ Ç@æõ°†—T�cQxÛ0ËLçéQuo;D‘û…ÔQú�9ûJ�¡@Yz6z⚔ۻR=5˜�[R�‹Ë”xØ9ÛÔ=Ì#çªU Dó­‡}ù˜¼––é€R$‡,TPØ·Csp”øzÍ„ëVŠŒ�—’C{îd“ɦžëÉ-£VÑ;ù/še£ÐçÐ.¡HVÛœÁžÌñé�«DÇMèòO–ùS²,,¾r-¨ãåÅ�sxJjW“í€v‘­…$*E%Ä)OZ[§¢¡qŒ!Œ4…bz,)òÌ|H"Ò'¢XPµb÷�ˆhZÉeS׉™«“Ã)¼NëÖëž|÷ñ©�zqa!TsÓÊÉ–©t¶L&•AÁy+HJB š*{ò=Œ×ù¦,ú˵Rpׂlwâ#ra(!E¡¦'ÅC5ATèmQ¼ïñJ �pìÖ+–BbÝéLwž·ÂùûïyŽÜùä ß h¨ãÃÍÜÀaGÉâÁô�‘Féí ʃs?t”Í6X Gn�c¾ÙT#«Ò6z?V ¶Æd¬KÛ-]ŠH~§�þyÉ) ´2¸ÿFé%Z1º­�ƒ‰\E=)·0§N”ÍŠªX)h°‰�Î÷ú&ëlc�"9v ‡W~Ïè9rÝÜ ÝÁÚb´¬û‚¸#œ-î�¼ƒI ¹º)š<éÒÙˆâXF‡æð™Ëa´EÅBÿo…ù8¬¥§jõëŠ"8Ä×ÍP£žh´š¯š³¸tq6C*Ð88ÊÚfžÁ© Êän_©ÄÇ!s=ãgAr°C®ÜùŠ/Ÿ&–¡·èØrý&†ÊÁùÃô9Žú�æ®À†+ÊžÃùŽ«YߌüwDX_IžXè}tÓÃí×0,»ô,G%Wè$ƒ©{ÌÎ6Ù0L”nI ÎôÒÊÖºTÀº2©¡;^\}X]-ÐÔ»’ŠL8@ÿhÎR}ý¦2°¯yAh’�ÝŸV�å¥<–HÖ”|éìŠëªàÚ£_IªºVVÓ5C¢\ë­T•KØ•¼®´­¶ëQžÏ¼N™9á&�‘Véµ_1—ŽM(�ýû \pΩÚèaŸÊà†—¦ª‹%�¢z×9I4B·´w«ä.ø_ÂUÎçÚH¥Ë%‰š1—µKâ¡c[ Øå e6>+A\M>N½ud@+ÈÓgl&Èv¹ƒžÑ;É�¶/O‡/ ž´ÅtL!óÄ?_¤G³° ‚Î ›•Ðq'=¯ã²ûÎ蚯Ñ¿ÝÆªó^›´ÚeJ÷7á¼q{ý÷ßÜñ-7ÏÙQi0B-“K ì�X 0„)é™ê›:_asb ¹\-$ cQ².s%”sÞ„3¬âí|[æ@Ò•ý‚Ø>$Ì;¾€G¨‰nÂ!Üyþ“¸ƒ#Jš€)ø1iÛÍ‹_gð¨^ß2ØóïgS=žµ­þ`hu°_KwYßj*f Dî”⌰¬�9(¸�/Ö,`Áç²›#nôKœÌX«Â<·#òÀn‡‡¿.V+‘Ì *`çñ¶IoKüA'Ï‚žHÉËð çMz�®'n[ÑŒtµQßï ªiEû` ãÃw•ž…ÍS¯…zG\V‘Sô Æ‹»e¨fË)ú·Cá·´ú Óú]Úí_¯{š*3™Ké OÌîìxÍceÓ˜^ì^Càš)r.Í“S)kz¯ÏX÷ÛµFæ©è 9Çs¾êìy žd“ŸÚÍ)×0‡|¥"øËR(dèµzžíM¦EPX†I›èh¡áâûWdÏL¢kIœÇþs±Òž¾ßáŠÄøÊ:ª‚ûžrDœÃÞ÷�ÈÇê®ðØ#䨅ÅzÃjØá‰~:ï Q½ú'ÞÐëâà`4FÎÏ AaÉð2iË-bã¨ä ÜG93l4&ÛQq]‹<%Ï~*)\UÛ¹Šª£?�7ͽQïŠt‘ꆤýS5¡æº»;Õs”Ó¸ ,ii7”ŸAÅ»!O#Œ×Ñù;#»fF€´/¸5ïã­#(l’8ϧ·ƒ1êËó¹ÒÅûób·X=Pù_ooRÉ&= ֤ʆŒ]¯jJ¯�f·W1<!T«iâM�Þgô’�èÅäåäûÉ«1xþì%|–ÿì¼”ÿì|/ÿÙy%ÿÙÙyöÃú/;Ï^ý„ò Z׆:ê÷á ÓHA…°Í X2<­R…ñƘÊfŒ Ã>1•Ò»,/ß’ý"»G«°ZD$L|”²œ(¡ˆÉâ=”÷Fl´Çˆ¢€Zܺ•ÒÅ TÞåG…ÜpÇ×qÅ¡v´«jîV+%ÕÏ­s’«\°UÏòú@NA3”4' Ÿ%×…K4â!ª””¤‹ì‘ ÒiW F#í¼¦¿÷º÷^uP4L™Ý£ò’°ÆF¶°€}ýkØ!Ó_.9ºÁ^§¯žaŸ2J½§3´ç”é}ÊYc¤ñ%NX¬ý€�×ö®°C‘ƒLͤP0~Þ‰8AøÄÔ{¼÷Øß䯋 }"߇Ü…�ºu�áØY1-ªá\¼OÅyíê>Ÿr<ƒA ¡xu¤âar@MèrBÄ(F×5E€“� c…¼ C)‰ÀïSá ¸TD´›ø/ç#ÔØ�Ü›ër{)P�„V}.šŒÕ9{õ9ÖNŸ~LÒDGêÇ ÅKe5G%ârq÷ÚNy ‚öRC¸½SËi·œd�@ѸzË-Wk/_ ˆÁ¬æw¨;ÔE žtÚ€m=Ùºk ¡yôânä{J~-|åÿñþø2ðëKúùUâo —áèGÿ�?" Oä«ç°¥+ùÜzÑ5¥(1OWôxÕ=ËP‹ÐÄ£µRšÁeX{Ôò�ËŒýãcŽâ�:| ƒmÔ©¶Ïó‰`›=G‘ræ�@ÕÂHQn_éúøÌÈÖçõòçl’àâvu�í¢7p?Ù–Z�F_þ`7ê9m„v7‰~~¾„«ù‡;T¯ RÐ\†e�œ¯s£ÿy0iòÝ 7ü¸ÆøàW䦻3yñyæ= w«mÂØ+É€‡^vƒXœµ( ÷ðkš%‹¸ôny¸'¬¢¤�€æþ[ñ· ó>6E}!yA˜»Ù`@«B¦¯_z®gEì&PL“ø@¼Šë;ïaÙÅ ®J=‚29àtwlØc*¤ú…ø‹ÜIN¢Ø± °”�N| ¶>×ègܮЛyKÐêv!§ò·R„þ½‰3ïA„Gàñ8ñ¢7éG¿ÍMJ÷ �ÒÝ]57�+ÁÖ]õ(Zë, ~K)ßàC!F©ZŠÔ ßï᪫{DzQ¢]d½Œšb^ö�vúí—?F¶¤ˆ·wP|¼‡ ‰¢�ç$z&f�˜“äˆ:é¾TxËGàtZ÷¢£‘�CÉ„i†îÖrPÎ��ÊÏíQËLmáw¢àGúgHL!¦8 m+Eȃò7‰b¦¥0i`/¹ å²ôK«!…ÒÚ."e~ÉØf­Pi;P*^,43€A4y|/omÔ¥º_Mîq“TëÌ™VÂkÊ�:Î5jyn&íÄ ¹%`�ûí¿Ðg–xï y%à+`ÔÐÅÅ ã$6éÀ�`ì·vÓ®L�êfOÄ_ÒQ;!ÇtúÔF]Ùð—¶Åœ3þŽÖˆ×uŒ uªpŒ¤uK"èðq�ËŸ1Üb·ì|0�~§ß®’]´.=È‹¢à×àëG4̺+<ƒ! Gk@¢¼ãØ¿PérÄ\Õoà\gÅ- ÁQ¨ý”Tt›Üåî`3}EIÃÚÚ§ªtÂqÔ&>uU§9BH{™°�\± Þ[† …¹ÖW4„Tîa©UËT*Q>I@¤Îâto9µ7KËÞAÎW5_Rôø\r‰&Çä+ÿN�LŒSñ¸f© ¨ô1£ÂÃì±(£P˜ø¦Ö€ì°ÿ~ÏxB–�.Â4ˆmæ]€ÿ�L¤@ì‚mçÞØŠo0€Ø ¯Dâ™TÿëšT©¯êp`¸žü S§†î*ºÜ#ûasOUäõ.†h «Ö�]ꑘ/†‡Ç™‚ÐÃÃL‹4àeÄsJ~ú¥¸)‰ä‡ë¦3›� á½Åíþ}ÈiYÄyl *ñpÁ¿8;L�a’¾¤�‘Âam…ÁóƒÎÓgÌEËÒњѦ\ñ>³ÊïšïŸ?‡Óùâù{{†¶•¼þÏh•yq=‘»óâ9Ä‹—wOí-è9p –Ëßî×p†3b÷âo´gºŠÆO•ÑQè'L2�¨üåMÐm ¿•Š]øE.Ä„‡/÷ƒÄMCOPm ÿ±æÚ®»ð?ßÏâG‹e¦…~]ÿ™§} “F jòÂHRþ[Ú U$¨ç ýËáóÏtøøcñ�Èþc|Aéjƒf‡§À9RÓ¯¾Ú•ô_ÇÙðÿ{|Sü/`‘ÿ Ÿ�¤Àpx�eš4³!Ûd¸‘cš´�t¦”=4LD1áEÏ'ø_ôòùó;ÉõO;;Ͼ Ĺ(Vâmê7Òä>a­ú"%­·¥Ä«`=ª9«{Ucp�Êèhÿi7içyêÀWìàá¥Tü‡ùiþe¼þ—ñú_Æëÿ*ÆkmÞØ K"çYÇ)X{ò08ѵÁí ù°" Ž#÷Š�“Qö±µÙ××íë]{_m)8WôÕ²�ýП¤cYÙÍ•LxèZ,—Wôý+øRþ÷6¼OLÏ¥?ê[ð›ÕmCèÀJ”G!Ágˆ×÷ô½Tú¡¢§<5A‘ü$$ætñ^¼Ãª2ÛXVæZäâKq:Õî€Ê- í½Íò #�`@I�¢UÑÁêê:VÐYºà6'õäaÞgP§S™A´Ô‡qzv‚¬-­pæñ}O'f„(46ò:øs²,Åì¨V�@@Cˆ¦×¨nÈPk¾Œ@Ì&~³ŽèqÒë܆mC Ç÷AÊÿŠ) ¯}xd·ÓÅ]ìäù{X~ÿÃs ú9Ìå¡›se‚9wôë6ií+7ÀOÛBP”³ûŽ÷”VJ$úXGßE+¿ ‚d*µ:§ ‹;¨Oz¯GêëОZãCà*äÅBÕ“B Xá#Lód^ÜÔ! É¿‹2Ù.‰·€“™‹äôíé µFè‡à„ˆ©w�«‰ðÔxC�å×Ѓ™.é°–– §�ÁXeqÕ" 9Æy8CpjògL‹ŠÀE/_=ûqD™ÛçrA Ü. _®áTmÙU®m´¹V©ˆà¼%3é{p=ûó/_~?Ækëý˸‘’9—Ëã2ЬÅÅvç§Ó£¼ñxí¬VÚªúen—d¶˜]¸o•JýBvDÃ�*©ê½V1è¼ KÝM“e¦S¯ødWÔ”j¢ì�epЈäÆýç5Ú¹Ì ÏuXÝ[ß@ÄÉQá?1ûr!¨VÀ ¯-& úÎã Ÿ¯´c¾u´i’rétEÎÒÞÎÒ;Å(ã÷xt!„ØÀ›\´y$šØÙ´„xåÔµ&“³ot~€v†BÁòŸ^"4<ûÒŠáü—±ŽC·€ xƒZ^¬ Â¥"ñý|o”bÕP`A7joh<&;+QúgÕYëüèl1dR¦8Ö¤P^1s³Qe™vp»Fø›¢ S½wÁëge¸I¥¦�C¿Õ�ÄëAcƒÖõÌ30}è[;ê”�f[¬C—£ïŠ'b’ÇK16‡a¤.�P„Å›®!`Ó³u-�¨¤ÄÎhôÇÓïFíáÚc”÷½5ü‘ß}Û­�ªt€BURX$Ì?^§·¿rìÇë"ñ]Ê( M^ËÁ™ÂŽŽlË P³#­ZÕæ€Ê0QQe/�ÁxÀ(0u]£]y}è¼M¢ØwY\#“]ÂÙ�•cÊ9^}÷„ð§*0û«.L¢™‚“´*ŽÝ~>_+­–•¥8Y§Šðÿ‹z—B%’­Ûì< rõƒ«D$Wuq…a/a� .æ¥ó‹Q³r¤K^%(÷c]ÛÜzàþªŠ¹V•¢nµ#kyÀ@bK϶͆¢æ±bœÕUÅ �Cà n}6Ííסbî–Tä¦W€ßÙ±æN7"¸æ7qšÑöuÔ™Äh�;(PߨE/­Æa7©iË¥MI ô´î›‘ÝSÛ� ›àÀž9{ v’«é¹»F¥Ýû’‘[�b•VO%ü¡¥ düKÁesÔ¥±^ö'üŽáC¿§o2J±é{C«{µª9H#ò ¥òzP}'��«"¿¶Óu¨ù=|Íx7í–¶‹ˆÑµáZ]‘œ%Þ‚èÏ´] Š:»¬?J—t‹�Žìê©~X€6%z诋½�Ù;†ÇWšGírM6Fˉ|ÑÕò!¥[ûjÕ©…ê8z2•²2ѧf´Ißq93ÞÂt�·çîCb÷:›‘«K D;Èò‹ò*î+@†ãhQPÇ%)IàrTë 5ýÂÛ€±”˜÷"Ü¢*cZíÒ‘V‹¸ñ‡2ìÂpáÅþ›e/Æ1£§a¨=ÃNé¾ré†(¢Ú+oâ¸öC'Ò�:ežìxÝŒ† ’±ØP™ !³”Ö@à0!qÄ\<íï¬#ò ËñÈÌ#=DP¦¥ÂÑrM ^Oéd³Ð|tøúzR¹c¿•~W%RÁÃ_ ò¯6™„ªbÃà äi|ËâoPÄ3¸/$)kk+#ÏXa:úzë¶]ª:1²ºib¡K1'‘ÄÕÝuhYWH¶™ŽðÌ#u™x ¬³5�åÕfúñâ#]-‹$Æ*ÓóÌWqÊäëxzëÈÃÞ¥:äVä÷%€ýYPC—ŒÀë¸wA‹¬±ìŒÔnå�9(Ê%Å>N¨0ö„唘\Ó]xØ¿ÛÖãr-€BOûÎ0ç4dzµ:”�È'¡VÒð6Œ::Ì3¸è ¢â õ¤ÚºÂ±2*&ò@ oEE‹m±²õ‡»€�ßßüŠ6ÜáÈ`qö^«’ å*SÖwÎ&{¸.®wléi×>vîÝi÷†�Y›TÈëÜ;QŠ#÷qµš×po>–MЕ''æš GzÐÛ=Ê“X‚1ö%fQµ_ž9‡8%Z^C;�Ã`7 yh�xzÝêá$G?-ÃmyïÄVW ö.Ê®üÅ+WúzB5€°&Ô[h`Ÿ @G»Ëä»Ýq´Ÿóv/ªŒ<ö£¬qüÏçF•Ç–�v#ŸÈè‡ê ×<{l¤ÚQ:�üh@a+×´×Àuö=³-œ¯1ÏY¶ÄK72‡ØJ”T /±ÐâÓêîü€’�ä!YI ÁÚ±òðúðo¬¸@EïoJO¶çœ ÏÏgˆfø_ÐY”ÍÂõ[”cŸað·¸Xe°2•é5@ž}rª&|–bám†‘Û˜¸¶H)BXþžµdë°+QŒqì¦ê‡;:J)sD}�_�ä…³]ÛxÙx1aºo§ý6B–oc8è}ŸžíGS8¿˜yé.–ëTÒök¿.¹ Þ°ªÈÙÉÅlz|¾ßêæ«ÍAUƒÇ�×ëoÑ÷«ÛÃŽùµœÿîÛM–šÞ­½¯9iÒq÷Œ¼C“- }Îò;¼“ŸÝGÇ�a³'>YYgeDÏnÇ$zTáþWM –}]È…Á|+«*ûîÂ÷b°dtœ3l'?§¥({ª>jv?’�>lÖÍm‰Ñ2n7az öc‘$÷”ú�bp!$¾m֨›Wøq«‚­ÒÍ3HÁnK.ôUqüÊ‹í®P°Ò•Çu úúº>(z;¾wáä»�¶9>u`c» f¾>7=Øî[»˜w­øzÙx Ú':|ÈÄuE@©_b#«®÷²é�uoýCùäÎmøþ¥ªw’†Eúéþq§ît1xÉ Ý|ƒ¡m°ÿü–ÛïÝøvóáƒÜ`ÇG· ònC�\Zòêè^%èb` Ò�jÒÿÆ#�%Ax ³QG7Þ«¼åvåâö*æ¼½Ôa~A-C£`v1'»0ÛK‚.±Ö¾áù®£öàŒ«`[è>á¶Ó1À0jN-�ÕL#)%¯�¥ö牼½ò®›« Ÿ�h½¤g ˜ÁxI€»êè†ÜúìJay}>]}¡'{ó:zÜîÌî èÒn­�~ƒš Ò›Æ##éE±®©)sF-Ð_×s\#ÙÁãV³€NC”jª êV² o¾è"rÓTË´Ô_-uà (ø‡;!@‡2¤ìˆ>2©!L}ÌP4-t�ÑMœ�¯¨Òn‰Ä*îvR‹¤éi½¸C~‡7)ùPÔ=Øw î’Á…™u%{YÉ£ø~›³·¡LœÊNsX»‡í¤!…gÂ8|¸ iÁ‘÷”(ë¾ögàªM1¼W²DÊuêœþX¥iâå6ääm¦ŸÆ×ð†N$·2_õÜiï Ù;ço¨ûÒ¹ Âàs?Éþ2Ôf`÷ß¡º©àô(—vç¶„MºVmv5Dé޼?—ãÇç;˜ÈÊÕÙ0T"˜ãÈö:L"Ê™W�qàâÄÁ³V¤Þd4�e@§ <½XëÒ×Û¡õ8ú®ÑáF`´Æõh½¼Ö›Àéþt aû7ÈÎÄ•S\‹Ùà<ô¿„6?^û•ƒäSç…$¦"±--X ;÷—Ë|f#¯. ¶W‚�1§gì —Lí�(Õ9Åi•ÏB—·+Ðð^0e¢Ä’¿òV„Ùpp¿å¥£È|…$˜@µ%yyN¢w\R²ß—ñÇ¢ ËË».±Hdã´âA`©ÌTEµ¯ø'µq­ÖØoLQíC®IgÁÚ·åzj"ìå Þ¦¼¤ß`Xp,­X~Éo9�#ýÑÑ4&$¬²HëʼB“œÝŽõç8Ê›%é]K�µ›}Ç$ˆ9q�‘×’J{W‘ ½]™(œS˜ , ÃþÉ/äDM¢¹N¾Öu²Ñ ÿó›hy00M sœmâ<ÑqO ËÁHòI; µ×±¢;ÓbO�*öþå×mÀW§-½“ Z “_¡a¾Ì³ãtæD¿ÛÃîñ9óØYðl vöøzxsv8_ë!|~|]0½÷»x,D£- 4ÐÕãÀ!qüÕ oÏÜ|0z2ÓYÁƒ?fÞÆãC� ›y}†é7ïöõX¸›²†º}:ûùf ÷-kéÅ›;�z:üf~ ÷=_á t4Üa ƒi˜†ùx|+wÏ´kÏ7òø{úVNŸ©o—7ò÷¬õðÍ\=Ó¯öòøå›¯qð¼±BÇL±R˜ª/röøî¤/öóÌlò‘lCiÚJJ�i:‰v��#û>)–˘­Ö�ÂŒÈîB#xË�.hš/¥IþÒíMê›0ù—Œ ³�ƒÉZ@ƒ_îhš “5"H9«1 ü+}MgßÔÍäëmmÁø�L?a³’kÿdUÔX+I%ÙôfñÔd•P4%%ÆË·C“˜ó½�œŸnë†Jðõ-­z€ó /¯e\–V‚u«Ô{Ÿ'kê:±¢vã~‡Ö4äËR¶ž^oÖî·udõw7̇µôÈh•`°­ §¯�zìP%ÿ›½-¬¤„_a©*ƒ•üÞÞy€W©Ã¡4À„çðn׆g`4Zf¼Æd¾|‰™NE¨‡m`Úðf�ë4†Xƒ˜Ø†Â¯õšñM/V’KÏÛ5E¿¿Ì1Ƹ{½™ãÌ7Üoã?›s-làHð÷t`F/Ô�1Jõ™êTŸŽ*¶7³z=7 noÿ. ,¾º+>äiéO�³Š£TªTL…fí*ý$¾ý½€Må;°³b½î CÎ#fÎ1Q]¬*y{ï<‚éXA >JƳ¼zÑa ûd#¬±õ»nÇ0ªCâ‘_ˆ%%¸_Z¹æ*r_@â\EÐÈ8¯5ÎÁ( –Ãor¯TŸßûú| 7¢Û΋g”#|¦àktϯüJþQ™%�” öª\cÄÒ ÔÁŸƒÓe�Pk‰ä’\ÍxA¸cò[@J#iûçû"kØŒÔ�›eÌ~í¹I,KUßZ6 uazÁôî"/–©Á±†.åMTÞr46~î]> Pe;’Z(_·YqM8waª9EšP;€7�dä)¢ÂU�‥­á&uR@ g-‘Œ�èÆ'µ†éàHÊêPó[©*šïŸ¨†?xUZR‚(hlgyõIJõaÕ¨æ?\8Uè7¹ ÐŒýO~Ý!¿)Ê…·ˆÉCˆ¾ÀÐ:ü¼ÑF‚#-_¨BÒ�ìô2”#–äq LŒ”�Î÷Ï¢£éáñùþñôø.‚F^v�TÏÝó‹ýÙH¥ä à¥a¸U8 B–²åa K ñ­Nú6ÀBÄœÜÑŸê¤òw9e4LçuË#’šDj.I1N²'s&Xÿl— u‚ Êp†“)ö`®œ}p�¥gât´ŸîÇé¡L«÷�¬ó]‘­³'/LëZ¤¹2³„Ø“wçù%†-u33xÆL-æãåZ§òl6åµAMº0Ã:íæ/~.<@Ç0WYÓçÃü‰Ú;,¤“ ½K‹L9ÙÛ¨“ߘÊ�òFÃ;LД·ôý°Ö6F¡²®ôÑ� FºnÕBÊË|WIȪJRÀ<Œì [ÎDÕdõA_hz±{q��D0¿˜�Oϣ󳓋wð÷È4?ÌÑĦå+JȳQ4Tä@Ç:(÷—ráAÉ‘-¢ËÅM%[Í¢¨“ÀÈwªÐ#ˆQ*Wz‘M2ŽÚS×w ]yÓ,Ûëçuá-:}ŽqÔ–+�â©• |‹é bã°3§X Nw'z�RÆ ¥¨€²µg+,óá�sz¨0PìCšÜ Â!Vúy=çXjçqXR²q‚vTE|@ºIW›u�Í`¯ð+Ô^�šác4G*ŸTàÇݲˆWRO޽òU) ¿Q¬ïg –<àþ®HÂV¼[òHÕ¤«¥ðC7Ìñ÷9þŽÊîõ×ì /Щܥ–%€[ ¥ë±Wíªpˆ¦«&>€wöª)WPl*üìÉõoÊœ òm—¿oõ¨šaœG´Œ½‚ˆ!p¼Q±ê¢bë!Ù1š�€ûŸYn{¼çìÂBEI)άHì½x¾ôZX^<'8R¯£¥Ôk 5yá·í™Ç#( €öœ—¯ü¿|åv§ Fß?÷{‚¾®ðQ+¬íÂûGÿ}xô�Çó£8?®�¦–Ò©¨§�G8>ã®Iå³X#$ðü[LÁ‚m}XuíèùÃjàéÕ%Smæ?^tѸxº~C×T‡ÍPõ5%ÃŒoÀuÜÅ!v±J-•ÊÆÂY�TUê$óôSNÒL€0À@…ÙA© "M4M¾—¸ßqâE�ª£"IlWÇ"Jñ’Øeg‰7_ÙÄ­?TySµÝä ý?'VÕøÑþˉ¡ ´£›ó6·Ù¾ìÐ_Ëͼ $([Ì‚:ÑÊÒW »M’˜Av0ôÔ´¼m¸8½r*šæL�£–UNÕHö£Uhì&zcYê"?¦L®yÕyWõ5·MB艨TØ5r­þ­RºXûâºû›8 @ÐÍÃÉ¡?uµj ½�?E’mP¨Þ%T)©ý�( âûdÀQ–DÁtˆ5žÂUgZKXä”ïRåÁä&«cÀ¡·#ÂeA!õ}y‡¤ �¥yBIAvÁ î˜ènDööiËÛ*ÃMêVІq5XØÑ¡ãJ~αÂê=bºÇ•ÞC¡À3+Eˆ1e#€¥ËB4š‚ÉØó2þ8G ÿQŒV -·~QbÏ&šܳ5»ÒÕ¯i}·{¸wæ•.ÔùTãQ‹k`çOnüèc î´Gàïƒ&áßOŽÌç†È.†Ëe ¹Æ�CQ·àÊå¡ÿ`ph|¢£Y"î!ÔRQßRe6àE§qéÇ…G¬1S»ý<�ïéEÁfˆ§ž¯µžC´Â�ö­†^%Ô!ŽÿõEYjŠ€~¬‰ù+&i4Kþq²„vCaW™ÈolN.q‘ß6X£Ð3 ïMfØ�-TXØjþWžOšë6_0ˆ¿†ÀÃ!Ò?�+d9­ˆÝ>ÛnAQB…õî¾ ÂÌP�ÐÇÄ íÃ]\�Àòƒ¤éåÎh.ÿKf4<<™Í¹ú’ +A}ËÁ€W\i”-<­¼å¹rJÑŒ¬ºUΘ#¥žP˜'èÎíçVãP|o´�\Í|¿Ú�*~ºõ{!g@‡Ý| ÌôC!Å2ÉC‘^‰»ª>–a`Í—Ys+IotŠÿ5_Â"â)š¯¤ôP,Š +Wà'Ó5ø¨¯äÑî©’ èŒV¿W ª·;¨æš.¡Êd+팎¥D–¬Cùêí!Piëú{𹶬Y£ ú ÊêÖ|Ó)C?#ðUìÕ /h,žkjô¡ p¦d: ¥'€†ÂÇGÜËGŠ}åú-ºìÎ㢺¹JŠJ¡�ûQ–[€®M´WÌ;«uޱ�†\ÃÝùAdWm¡?⪋«x%OáJ, êD%äyZÅòœ_Ý¿ôÖ)6“èÚuMtÉ=ZR;Br=AŸ›bçÑýK,d¹Š—W7õê ´;‹½Ò[×N¼•_õ�é¦öÉ•!g¶U#èàœøÞÝê*]B”AýpEAÇþ}ßâ§ðÝR*‘Jb‰ž¾=ÅŰ ±8Q¹“È?ÿö^€Æ&‡üRÜÃÉ�zä×(Œó«;©4—øId^wÄ1»Âúd8>Ø�])i�Ì£&ë½äÅU%Y�×ׂÄ/Ê‘ù+±ÄU…ªZuÙ,Ø›ÐD»§Ñ|>ßÿ~ÍS*ÅP›Ÿ¢ì]<ûû»£q$ùYSªŒHðÙã‡|K?Jµ]´XzèºU�µ!Õìž,è0+@ýÀ,¡'˜bI߇+Œ<(²«Uœû½]3aÌAX8¤V {®¡kREšMú+xž°£­°`æPB©} UäÈÚð>V ¢é*‰ÅÒÿ¿áåVYÕÞ`¨ëH½j�[¨Á 3ºÊùÉS�W‹›ß{�?J'…x�ß›-—¡ eÒ­°{ð�èðD½Gîµd?þ#Æèýþ -ÝÕÚ(p¼·—Vr)Ö¶ò¢¤Â21ëÃb…ûÚ–7޽U« BÔþJ`_5N4A ô*-â‚*vÃMèöÅ幌_¯ñm�ä'YûõÃU*3NûJÙÇfL�…$¦šJyCïKÉÆáV^iWòÊ¡?7Ù:#0vŽmš�ŸÚÕ±DNj*rEù¼dQ à‚ƒFkà VîÃÖ.uÅ(Ê£_ßEý+½¢ÇË”½…\\DE=æ Þ°¯¶ÚïMW? òJ>ï[�})´ÅiÅ1:ò>¨°¼*ƽHúlè’¢Êb‘Ý™¼ÓÝÓEH (‹<€52Wuäáab¬1Gu¡ñÚ*Ñ{®ªpiKªk†¸ ðÀD•)±ž¦Þ 9jÞˆØl’íXê3b´ó8‚žrÛÂýaæí»K9ÂÁdǼªw†ÊñœtÔ•‰Ç R¼P“bÑ,)Š¿Èñ’æz†bº&mŸE˜�‚­&”¥bF5ÆÔ”mcGћڀkœÂÓÖ3뻼)rX¤þƒ‰.�û$/ëìj�’HKjºaå¬ù|ƒ09Q†ãÙ †oRþT`~~QZå5pŇýU�ó={a4h}ò u‡t±‹n{¯R¿ÛÂc€�f`ç®Ltë^*é*PÕÅFK±ì‡”=Ȩïåz–(¯Ÿ§pM¨°le˸"xn4Fâ(:¢zÂ�¡!ŸbUs©úî<77¾®Z·©‹»©ßob0ˆjôöV¨Ö%2?Y¡­XJw[Üûä�˜õWÑélúVP7Åf¢ºZE»GóèOÑɵ5@ÆC!»GWÓÖ]“¢~&["OTç þ9ÄããËOƒUáC@LNl‡G Ö´ÝRùêå{�¶xÔˆ…ÏÎG¤³I+ú ¶!s<›L<5øÑä6Ô‚¦²ÅÒÖªWäïp…ct‘rœ#á…J¨:gL^�Ü…"g)}^¡Ð(l¨Ü ·¨lg_SÜUÈ9I‹ÜnmFyEC îÂó£÷ƒÓj�ô#ø,u¥ñq5pJbwRÑ¿G‹‹/d/Ú}é4è9 »L{޲e×B|s _ûçƒÖ/9âÒ< U°VÁc¥Ú8%ÙÕéÄRXÝ/“dÜÙ Þ’Ò°œiÏÍRñié¤yN¢X‚š…¥l|óR%D Ìð23ȃ:ÙϨ«B‹IÛTwæñòÅK;sœ�ë§�b") êGüÅî`~’eGÿ¦~ˆl‹¬øÿcT •oô—¿å7ø�J³–ŒFü·6ý½#þøã^jõ_ “qù—G2Þ”#)§ˆ÷XGb”¤K 5¹Êš&Ð~âm}¦Gù‚¬‘íd+ÙF¶�Ï;OK’¨ï䘋ó{I*W7x‚Kø(ßV]Åòs&?Êq7’Åü†–Äú*.¤Þ-I0vÁqU,êþ›Ë]Ä/ðÊ^àgÏynðÚ‰zéD¿râ¾qâ¼oïšÀ‹&ü’õ@÷Ì΋ñƒˆKúüjŒ€V ÞÍÎwFoßî,—£ñì|ΟwªJþ¹3ÚÛ{vtôìßå?òOø;:’ÿDê ÷›Huƒ?$òŸhýW í Õ&pcï<Þ4’ô$Ñ ˜ðßÑÄ-oÕG:Âr?äÉɰNvÙ×PEl¼Ü�\@1òOù÷Ot|ÌøŽ~¦ø�ñÝþÊÁ0ã~Äpù9ÁŸ(öe|„¿, 0-Q—øÇþçòÓ~M¸­…$fÃH|÷äÅ_þòñ‹ÔuF;£ÑÓ?þø7þ©žð šPxç“r,~6þÓsyŠþxR?ùù‡W~*ü¿Oÿíÿzöì¿�©´\ˆ#É^¤‚vq6ûKU.®Ò?åW7%ý·þXO^|ÿ½¸yþóóç/zùÃbO~«&ËxõÿPKÒV1]û û?—±. ^imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_ja_i18n_txt.46c6022645ef08a8.jsUT ëÆ«jëÆ«jux è‡í½{wÛH’'úÿý\îÙéò”ló�ToÏ\Y¶Ëê²lµeWÝž®>Z<Æ$ÀæÃ¶Föw¿ÈŒLd$�‘(ÚU=[=s\¶Dæ#222ž¿ønÃÉßúY¸ ¢÷ÞäÙ* ><\çù¶ÿ÷?¹~ùùóßþþàÑj·¹ùîoëoÖÑU:œeWÿÀ·ŸŠÏÝy#ozü]v´=Z?øÓ¿Ý­¿›ø³Éƒ?~Ö=ö§d—EÛ4ÏøïÜ­Ùv·Îúùö†­û_ŽvƯ�ÖGìh÷à.M¾»ûòè&ؼþ˜]¬ó[ooEÁbñ;Ê<€1zìoÙßÿ¸ý—ù.{ø§-Ì–þi]Œ³{ðGù‘´—Ÿûwö·ôïÇ쑘ôËQZ™SÌ÷?ÖjØì�Å?ÓÍ«àÕwÅ\Û›uþ±—±�½gëu¾þ®dØö‚ÕjqÛË“döÇýï×ß÷{Û¼¬¯wK–m{ÿ§ÿýöûþÿé}L·7½,ÏfÅÏ×i±…Þ‡`±c½þ÷¾|ýêÑf»N³ë4¹-¦ú¾ÿ¨_.<{X,4·ÒŽ Ì¶ Ì¿o ’oåFÿ˜=bŸVùz»ùÓ] †Ùßqü6?»Îò5{™n¶Çz†òl~ÙM‡£á/»Ù|îÿ²XÀÿ çüÏhÆÿôÃâ·Iÿ²óFÁ 8ÆhÁ‚l·²ŒÖÛ}—=Šò]¶=‡{78î÷�†ÇÅ$óÙÀ+¦òãCÎGý#±l믾Ôá ½ $ŽÅÏGbqâïñ´XPÌlËì»óÂYñUoè—{ñF“bȹïOН^¯ƒlû|·XœDÛlìcÓxb)aOÏ« CE.?Ía¿ì&,žñ?LL‘[‰%0°Þc<­O2š Š!—ùö6²(®0¹b8͹&&gõ|§óDP&öÊÑŸ G ‰¯³ŸC§Áÿ² 8áÓŒ8µ¹?Ÿð?ÙˆŸÝÄ5ÔÏ7)uöŲa™Øy0ÑËj±PàOb\OlÝgâ¨}õ÷†S[3¾âƒ3›7†ÌŠ=ùñLìÆ›‹ù6Ûâæ?_çË}è=³Íævz#=Ãëuz�fÁ‚¸�ÃÉ(Ôÿ¾"J 6 õIÁ¥˜�èù|9ÚD…X|›ÿà¼câkáß1=´í–¢b>àÄö.*äT/óˆÚiÓTpaàçA¨§­Mµ]ß¾ÍßqI.T¯¶)«Gh“¦==ü(œažm¢ÿч”}|ž.è5:u6ã"y:œ¶,‹Ÿ‹ »È7é6ýÀˆË1 ø0þ|X¬v:ežl>“L6ìùrl‹—6ÜÉGp‘F,Û�k «ƒ ùZ¤)a%)å΂%õMâùœÄ|ya!¶ n½‹ƒBpݱl}û4¸µÓ£B°øã")I×ä#Ž¢Þ�&ß­·7ŽqþJÖiLÍ8ÆCΈqTλ¨iýé àži<É�Ñ™ŽÂrÀež‘óCÎ*óÃÇßæÏË®~Íd˦òäYÝœç™�Zß•´/~À?Ÿ]Þì¶qþ1#/ÿ]x~úi�ÏÁXßQ¸H‘øLà+f*ô’L· Ö[‡TsÌ6‹§SxÈÊñ6AñM’zÞt˜Tè³aQAv#‰QwŽƒ§`Œ¹½I×®!Çâ3»õÆqÌ£*wlÓ%»L³ˆ=÷ªà@BxL áÊUÙx¨O¥‹íÕÞ¯BµöäB¤Â�–Ÿè‹ÿô eV}„?X•Õ¾(®ë7_nÁÅ•ðæã¦E능ï}0SñŠó‘Å™ã~4ž˜ß(øév³eKn¹DëY�îìâ±xÊÄ› ¶L„LKx&…ʈ½éªaYg=ëj¶éÖ®±îµŽBÛ,ÈV­·AØž`ÊF`C­Cêñ�妫ͫÜnáÊNÕ=q×ü¤ÝJ#n¥Áç:Ãxh¬G6M€Þw§gOßô”? †³‚×F°äè`›³ÞÙ—>gR´#"ûJ~SŒî‰±¦âOß/Gì©M—ÞD*]ž ä,BdžÃ6ÉJÐÀU›°Aˆ^l0��E&¸Pøìþ˜Û çAuF6Ò£ñýpÏ¿èC_Ïk®M’ªÍã—#²*œoO9ýw±õ—ïž^ð{ o¹A˜ï¶gâ1·ø ¼ú‰­7ÅO…x›z£Ò ã‡#¬ñÔÎt)aWü=Æ»?Ö²†Ð©æ³ ·á&Z§+þ¡/æ‹X_é:¡ÎÕ.Ô^?')ýXb̉àxØ…<ça�ƒBû}¨ë|˜kêãcÖ²à â3äí°S~:Ó¿µû¥àtö¹O——/k©€Íš * 8hÄ ØXèZ±Á+;u,RƒÙénz›éî�ß«ºÓYÈU“`ë›+¿…%‰§Çwy„ ö–¿ZÅ#-\üswÚ¨®u¨i¦Áˆq·½Ç@`œeÅ]·›Š…Üè åTygø^ï¶ ßÀþ.vSÒ§:Eñ×ð Óe´ò† ã6çpPR’ Äçc–»Åö W Òìúø._IwSa[PÎ&ZÒ»îì„q;ZÉ{û‹V½ø»7ƒ¸aűöU—˜”4%CðîÂë8×7ßÀîÒ—O›åÛ4I£@žGº:‰cfe„BàºpºoH ?äJ�ÇÆ-n¼”` �¸¯æç•/ݼH ‚óÛÇu¥§"zu ïV›e ± bõöð?µ¿½yÎ{O؆(]È��SP¦ŸÅ)±Ôú årñ>37#–&è冥´qûæ§1sÞ'zóRÄ’üç^ÿwT¸¤ñHà ðù@ÏÝIžZ"¯‡|^y,ôä‡V‹Gn0ŠäoáýFéðžÉããNô“³6ÈA'šF/h„f†­‰t‘“ó6_NÃ_{Ýj‘hy¡d¸ýùT²#ò§ü‰>yÓfa!ÊAŒ†ú�.‰—=šrf˜ Åý—hÊ&佬£šŽø²¤w[u›ÿH¿¾(s2(­!×ò#ý#‰WU‡éxB¬Ï \=BøüH¼¸2 Î?J^\¶)3dqÒûr˜ÄZkû‘ ½7ò€ÁtÈc;aÀ½R?÷@Ʀ|T?Ëcý‘~.@N‚ß ½ŠÂ¶ø‘|(BTN«åŠñþH]ðÊÂóçY�þ%©ÂJq 5Ò—¤ Ë"}ÐÓcÓî­ÚJ}M‹ô—$sI¶BO»|ñ¤‹]ïYU/Iƒ%Dn<, „xI B¹Šj å%)�HàÆ‡þ’~Ø””Oq©fX¬î—ä‹+o=ÊÛ–W;ý¹ÀIºq2Ÿ‘jû’äØš;ûœf1”I�'ÿÉ7LªJú£¤ÖÀ�ÃAú/Vê�“B–Õ®Rñ”bꜴžLï¡û ×^‡ÏéØ ¨˜ “"¾‚à_¦#4h6\ŽÌIbÈ�sâj€<,]hCMIôʓԷ¹Z{Þ`Þ«¸^6ø¼c”‰3žÁpN> ¬¢]L3ët¾ zKè^UbÒ±†…_"d͉»xNË”þ,U@ì“çAËÌÍ3Í¢ê‚ó/ÓA´øP,’–9õE"î/É9-mð­�j"Å‚¶tȇé�È'–;YÏIG1xädG€8¡cDLËp|§€èä û Ñ+# U÷+R<ÊXnR‘§¯Hñ|€}ôRR r%Ä+¯hw54òÓªh#ÿ)ó"$rì~@yK^‘"/BîPÂOüŠÔ ´oº´yúk´™W{û…CííG·ÁÔèø×HO¼PÏ„éIÞwI _”¶­ñbø]~E‡-j\¢,¥øe}M{½}3PXë‚NÝ"¶æúõ� h ²^ìé§Œ‘)Ró\ÐO/dÀ•^fëåª:Ô.èÇçU#×=Œv¦c1UUÝ/è§GŠ«çyAaF˜Á˜3ÄFëu=,�vS¡¼ð‡F«–Íí�ŸêÕáR"¦Uà :ù`¨…¢ŒIÆä_£ßÀ¸:[ /ñý6 õ1-ã‚~dÐG±'RÀª|Iêv’܉oµ÷ÿ--›Ð "}FsMÃK®RÍ2ÄÞ[R~Éd)´Š½Ô9™Óí‰|ÛxKHƒ ooiÉ%�†üC´¤A´%³·tÂÖy¤„æ_ „‚?�‚b‚܆yÍyï-�çƒØWªg(lP_6)&äéyèË: ð–6“fú ®Ã¿¥-|ÓÄbè€#ζ ‘€@Fn‚”4§JÞt¨w‚”P9¼q‹YØ” Ö·ô=DIˆõ,N±w´&磳Âáo.§ÞÑ!_ p¤½kªÀ"¹ª;æO"[n�”±p»ß5DúªÃyÒ8›Müòõ{GÄ‘Gº¦ú¾£# È!_ù¯½*’½À*çâ?1 Vdñ¸¾üV ‘ì™êC�@àÈ_4~�¹èµèY RËU e¢— PU9õþ†?û÷ž–¦�«a£±X>Thbø#€…‚±LÐ.þç°d÷.ĘÐH4W¯,?äð6œû½¹_£9$*œm~ª4àr—¥ÉmïxK””Þ&‘}`Á¤î_ŒUì‡ ¼ö6Û-C¶~�<c|9J³(�›‡Ã Îðȶt)0Þ n/a!õ*84$|ïmnÿ–†‹ÔßÚæÅwò- óo{0×ó&øÀ^±�gîýA°be຦knš4 07õ1Mï‚p·ak;àE1»0¤árÎÁ( ‚Bba’-¸ä¸c¯Å2¼=‘kt@T ¨B }�Fúö@á8‰Ë4ÖÎGÕÕ‘,õ�È è¦Ñ> Z¡¯üœÆ×Œ�»úkâ;Û ]”GÔî€ø÷òe`G³;›ëgez¬w´TÁL¡æoXV\ø6Ú�Hâ9J“„­ ®»_oiÃäp”²ŽÏ2­8²‰±E`Å*ÉcBó“êoÍƯÒÔà\x“Ì UŠç8Ýp™“ˆ~+«ÔTìf¼‘°ÑÇC¿°uº%›˜üƯÂ2X­X츯//Ÿ�"ÄŠ5ç£Þ2�7,BÈD2ÈJá´&Á Ô±>ïPâ—l¬‹ã‹ÖÇì³îhÂxGƒ¹Tˆa�6F,oœïÁÝ�ŸøZðú($Üt#\Â|0t­á¸ züpà�‰X“·be£n*šŠ"ÕÇI€p}L7Ìy„|CŒÕš„ðf‚4“Ü(*É Sûa ñjÛšÕ¡�ö²G«Åî:Í$zXk9ûÑE¨ƒpêLMFÒP,€#ñ�â™$ ÿ¹jl«jÃU3TOÆpµ\‡î/`<¸òfÖa­Ù›€÷ÚHÏÅ?÷GóŠžæ‹ÆCСÃÎÊÝMGüí-Ý:†‚«eÀ!÷ež”„a¯©‚us•½Ìˆ¹&û=bâôÇÜÞ§ÕbȘ ÊIL]JÓZ*°äü ’hùy0ü,>Šš½à)c\¨ bX•A©.sŸyãH(>ÒëÛÀ£ÓBƒ;oÿ‡h¹¶ÞmY’¯#vl·Å[½iÄô;=¿´“|O„z. *ȸ?ËÜÄ¿0¬ñÚ£wQÆ“jy´2µL� v‰BÜ“&þì<�/Y´ã¯qU�ÕêáBÃëÆ~•œÔ™ž&§Ë·|�{ŸýÉlìâŠo@tá-VÛè&¸’-vZAHv‘à E Þ7DC;7ùc>5ÙjÏR…úæFAPr®<ÓËÕ"ØÜ\FkÆ2ñI”ÌÁjUýÐ3G7d2­PY7C·j†–UùSÁ<}ÆKù¬Ö;÷‚ŠƒÔ¤uËÚ€—±wåÙO<¹x¯½§ï[Í5D2sõìßçîÖ,eñU¡ µ–22ö½'ùöáS¶eÑ6_£›2Ò3j;j’ #òÞÁ›€]‘ì8á&¿ëû�8}iTÛ#ö¾Êê.½r�>8›ÏÑ�w¨x‚ ®¨õ+´ò§¬FZd"O¨%CÄ�Lã¢W_&ÞwŒK‹y¥Ñl>˜š÷‰Š¥©G7”š”‘3sÐGF¾.ûh’A¤ëùL/ù›z�RÁ;¢V`KgÁ4�åírÁ•‚&Ǹ’!Ÿ“=$Nj´J)µD~¼É¨îµ’\Ú ¦t^nìÛ¼J½>��m�° ‚'qÙGmž/#5óŽJÇœsCqËÆI˜E½d\ ‚ÈÀ°°)¼Áh¢/x]É£ü!R|ÁQ$zý³ò‚í¸wÛ5u‰-W¤#¾£ò@ÛN\IÀžeÃ�Á‡ÄikÕ.¸‘×´Ö@eÎ¥…M½Ê-.; ‡æÒKQeÒ� W‰�æ%3”¥ÐÞ´�–}3T€ÛZQH‚tÁã&ÏY¡8’11ŒžSŠ hï%ó©¢RAq¼†Iõ~ —ïv÷ÊM%�Ç\6ƒäV÷ ü³@µ±í@‡l—Ý«e»JÕ܈ ‰dèúwsº‰üéf›_¯º“ X<è ÄÏ‚H·ËòXN¥ŒENTéÂi#ìAÄŽz|T ®_¿ ®Ô})HÞ(-á*O®é<¬]6m~ÞäÑa{#¨rT+ªê�ø;ŠæX$…gyÊ(¬75¹Íă!² ž¾¾„§þîv×Ùá^5JL}^'`)þžjRbÉWÈáq�0Èbó×¼uM`^j#ÓxP3v:6Ï£q””áz·Ý1 (S~‰övòŽD d»ÕÁo ^u�=wwK/QOM©/-4h„~Ž‘¿ ×Xå>U< òûoŸy€†GËýp:ù\Ï�üJ.„ûQrº5rÙ7^MÉ­Ëõ×`T·›í·ÊŠcç]þý[²¥›n&~.J š|ú÷÷ËQ¾Ù°èoÙŽÝ464ãÀóuöôRŸ°R»¯7ÈöÆU‹ŸÏÔ+;‹@Ø>ÙØ�¸SÍöcðµ¬È°¤Ž¢Cµ"¦y˜8ˆ¾ìMv¤ �S-_½OC0{UÃÄz±©ÿüŒËó�lDb©ž´ÖaÚ6…ø3R /Û}£ Ö<¾o4öuÎ0îÛŸ¢¸C€ 7B”s@­ÇCA”X‹¸uÔý‚¶1¨÷ÏÐtŠžŸOžïõZߣ¿Æ“BY¶;¾Å\íÒÀá’ä©r‘h¯«¾ä‹tÃGFT`MXT¦>)9$áØ¬q›0ñ¼ÌdSƒÌ-€‹§PøàQÃOÞ$Vwgz¾¥ØÀuž“-�%ds^Jž-ÊâtG<ÐïfÄjQWp´Ê©ªˆVðW_ôí\ñ�³lËÖ¨Z5?ŒX ¬,üÓe%š BAÚÛ�ÚáÝf:Ÿ2¤*„À{êBG ´E4»m6ş±H�ÜlvlsÊó5[${�ù©{ÜΛzqÿHf?䩞ò´ö'Cˆ‡tË÷vë¼!™ã^GÔé@ÚÝ¥÷åúá˽!4õtÄmu8ájÕ.{Ÿå³¦�M˜ˆ¥Ca]ËÏqI¸)n[ŸÅ²Žê.ˆcYCì .ȶi$„Õ³õšºzS*uÄr—Ãt2@Π÷àŠR‡b8ë•3�‹øµ <Éh€øn-ðÄwõ:ʲR—CVª¼";Ž›Ú�ñ&Mï4&&iä©AÀåki�N•dµpV»ô•qÑ>rd– b™çº"¸ÓÄ;»µ(Eç\4õôÛ©¬ÙÏšø1RBqñYÛê,SiÞ£mdxËìTUµ Ç‘:b­þ šŒ)îù8F¬Ð¦fJb�=EëÅ`èkXX[RLga |9<„hƒ÷õòÊ|Ó×y�É3¬Ï²ÕnÛP‹Û†8åÀ°‘®¬iì3H"ŸJ�ÛšUÆ@*#J3¿½¡Ç•¿ÑÈÓô¨«Ö¤D³åƒUÏ›õ °;°k¨kMb‹Ã\-‚ˆÝ䋘n/ÞtŽMq‹¶w×ï  €KñŽ>Ùm·yæ*y¤&¨Z\›Û2ù‡yLäüø¡L:t¦ôÁSÓþ}°•æè#©ú¡8Da÷™ÛM­ÊÊH—? ÷ì¶ùhê¢ßå}<ÎýÅÉ!^—ý/E_©~—`àØ5»R=îõ¿Ï «AU‚Ý mÛÔp•}`ÓÏ�„e*ÚÎÀZiagl×Áææ~wÉ,)Cã¹îk²©6'›êÐzÒ<•v–HGNÿ{›áFœ¯&.žï+Ù QÌPöˆæCÁ¢Û^Þ±Ý秊Ö(Ø£¼¼¡IYj&�ÊÍþ:ÅA†-%úI1̇âN�çYºå&lI÷Ðuþ6ÿË.X…–3BÌQ"ò '¥sAÙžw 5š¢(÷eº!/TûrZ¢vü.—,+¤ÑËt™’è[•ãÎz ºSõŒŠ¬êÒ1Ã}íjý0ÁŠ—Y}-𞲈�z°Žnø�ˆK÷*X6¤Õ(âŒJ7‚Œx½‹»V³.•�öÀìÖí<Ê| Q:êùÓ!4zw´¿lº_.‚ZQlÅÌþj%×â")ñ¥:_¥›+ÁÂÜëËHiÇšvä|Ñ&G1Ù‚¾~úšñn::�áAy²$!\GËQ“Èké`1C¯Oõ$jàíU¾³nçÅÉyïqÏœ\­ÜÏäŒKbщi' §K¶uH0SRµ¨yxÖ,Y³ ‘êmH?�­bM&Ê!(6T®³Z•EㆰËY©7Å#áœx‹´8Ò–ß‘"€bI¡¤×Ì1>;uÍä ŠB‡¡)>úêÝ|¸„‡³ßF’à[È•©£(K,c™PQPáß`Á²Ûâó×ÄE2Ž…ë„…DH#B �§C�©‡–¢õ°©Bïóºø`°a'YÌŸPÊ5 */¼±Q쉩èCÊ>Rä®ëuì™'4ðm$éb §X¬ã!glâô°Ë˜ÇjÄ&‚ Åïàyž|'>±ô‹ŸÃÓàˆÞ˜‹0`> ”XΦ¡�ñ–o„Ầѯøx¿`ˆõÖEË2]¡!äLÃOqDÄŠ¾½rÇKY¤ø|ûêl\´Âg£�4]¥4"%þŠ|ºáY¼¶VI}ñâÂý8" µÕá¹äµ3¦’', ^겈88°½É VºÊÓ´Ø»+Å 7È„˜5¿éÏ„êx—Ðw¨²´Ê½ùª'ÓšÛ Ü8]iÓÏæðfÓ�ÔÑfú‰Š´Geµp©åðÎ rÎ^â‹°Ö ‰ EŽËEÃ[‚¯1(Ääg‘?¬ô�ÓZ¥ßZ7Q»Ãçâ~À�5®‹PÆDc[a-C¬ôQdWÂç®S6Gl¥oó]òT/²þ‚ôýš¯vëkvâ’È6›_¨^1OVôÆa¨ßú�C‹ÅO=Ž4ØáHm­âï /۾͟²$Ø-häÏ)z0P+.“6Qˆn£Ð’’|½,äUñ§À#V)R1&TÉPÈàÆ¨GñyÊtr ù2–èâr¹Üô:9Éå*ˆöpQˆË�Qd™�ǼP4FIï»ó'J«Ù¹3;V¢$�¸3On·4Ú)6w�.›Öõˆñ'ÞÈT¡Õ€…µUpƒËÖ¯ë¼åm mGWA„/Ó�:¿{Oäxš�s¦â ·Å.:ˆT*2r”B#ë5©d’ 7ݽ•ü›ÐˆØ<÷eTÅy'l>iŽÊ/§¯îƒ¾dw\}�ÊÞîZ§Y”/‹GéŠ[ik‘þsÅ2üLÊA׽​BÎFhl—\6” £E&2Ì�®]ñŒÄœQ ä ¦T{Ðô`|¿%õi3mlÃbKLž—‚�f€çåùô¤¸&Þ"îz¬ŒÇzUœxž�EŽ¡B- äŠJWC0§Vä ¡t9�Ñf/�ezC9Ø�tHÃ}Û¸ù’gl³}Ã6…‚Eã$÷²G›]±ÍælË–§2äXhè½<éA»‡B²?Z ®Ù¦Ç[:ôBŽT%~}»bß÷ãÞ/ðO^Ñv ºèmób4<ÖQo%.Jo»¾í×…zÑ ¹eëŒÊä•Ù1#é�Ê7±C_Îî¼(VžK&!™}ÖöÌÊ@•Ý*‹€Ê|îöº÷,†ŠÐó«‹GþCn;¸­¦£Jûµƒ¶£8¶ëœÄ‹Æ¯¡1„Ýf®Kíý¢l¥•Oƒó[ü d锪æ]·Ê¦–ÝQxx·ĶK+¾iÒßàK¯×]œÿ‚ÊqGyíeê,ë={÷òDð+.5ñ&Õùd‚*42½³sŽû 8T~y4BÊ&Ä;<,ž†ˆeD^¹°ê,+© rO!Ò , ½¦á¯4çëµJ`²¿ö¯U*wbZhn‰_Y½¨ÞAï³LVˆçsñg# R…ij‰QU2z WS“-*vB¢Î/eï'Á£1‹dȤ—¦9{“¯©öSo> ÔXHÈa©‚ÈRÔ�âîòt³ü¹¤T Õ•|�¤¨ ù5"¡ÓÉ ›)»ÞAATëbd¯µV?^=_FLf`‚mèÄüÄë±r|0«Ëš;s|¸Ç:+êVÒË«SÊQ ã{!¿Þh8Ó7玑TSÄÐûÜûEâCz£éè¸w³Ý®6Ç�_§Û›]ø¨x½gן¶Yîq”¯Ùc(%z<�ÿ§ø+T°mŽùÿ¼áX-÷ÝÚú©I¤âÇ]rÁö‘œ2ÍÍŸ?æjÈ b&¼é»5õ”Žk]Jø9×ä"¹0‘´¹™Q¥ÌÙïuž½Vé�Zn Aå1{˜¯¯¢E¼~X<ã×Å x -æóØlov«B!æÅÏŠR�è æºâ=­6�n¶Ë…p<,X´=É⟂uÊ%œMáç9œ×Âáqt· ŠÏp%#™Êüö~!$ÍŸzóéXýNW…É/H €D¤ Uø&ÿ(²-‘—w6J„þ7g×/øü]įB<ßZ?÷È“í˜Ú=뙦n1M_RQäk¯‰Ìü„G¾ f½òØÂK8ç=a~ =,öZóéo]éÀ%§ÊYmVÝûFT�€“*ÆP†³Ïšb÷}fx1¡¸ùÎŒìÇ;A‰Õ ¿›¡þŒEÖ"û uuö…@ƒK‡t\]Lò§ ã6nm ßêÈ2-½Ž·Ç %Èú“š«*ü.oF¯¢’v«,s”­“•P܇Àÿ¿°/' bX`JËnƒáPür<Ô†õ²8J| LÄBC•ÑÌûÅl+aqÄ´‡�œne‹¦f)„$××H&ò‡õ-»Üð{ÑkÖì#·I^®Z‰  jËyš´ó)§Sþ§Rï\âªÞÖs6ä¾s/”XÖ64oyIŠÐÝ„q*O¨¥Ä'ABµ8Â+õ¿åhó€üKИ@¯ —ÞI¦‡u"Ì.Ì‘ÅÞÇ|öIb)ž$9ºÍhÚû6Q€žæ—½úOÅZë�1âê!Ö³‘Õ¢±BwK1[!~tüÎT`ÊVUÈp�¹&=õ^Ä/OÚ„½•ž; '´Ìã«�BÎü™…ŸBi“Fžãz‘pçMÌÄ#¿†fD,Vàù“1º>n²r0Tè0ºüNbË%)ÆêóJ– ¤•=hPª‘à÷¢ÓXÃDÉnÞh¢�­�_å¹?+Ë ç¾3ôGz}¶·FüÝŞÞ,¡ýü4djÍd¬¸¬lˆÞqœé '€,d䉖3Qà5&QÉ"v$švO%¿Þ!Ü�w—ÖeV¯ÖgŽû˜N.sæ´*¡D™�Ði$r²“±×•õùƒ¶È¯r˜Úh‰€—S-*Ý`Â¥)P*B† *»„_nsÞ×ô×ÓWë½C»ÕÅÇ`ÍÜ lŒ”™ �@—ôE¾€—–•W£ƒ} �«QQ¶MsÑœ:sjp¸Q¸[Kâ㘎›0z™f»O�·VG·ëèîc“çsJ ¹lR ÑÝ ¦”[ËmD‹ «¬Û|Ãæƒ ÷0+À”ò&9”$ yÞa…9˜pŠX±¦ÃC‹‡€Œ[óóÕ{{ŸûsWpY¾:˺¼øt”ehqÒtÄk+€JŠ„8ŠKm[µ‘ú¼ (5³Á÷ý¼LöSÔÝÕn+ÃË´D×Ð!z×$Ãlғͧ&Nÿ…¬¡ÞþÁÁ�‚nÅ&; p³åܱf¹Ç\��Ðçx¥vØ[½[ý�Âç ÈH€Ù±§)÷¢”pï!†òÕwD�\fÔ€M=ÐC&*"iS_ÃiÒ”„ÕO" &Ñ$†ôP–*Ñy~½`¨9U7^¨ ë9ý4ؼ2wS]® �Æ<‡¸àƒHó7ÂÀ{â͇~ufÉ%  C‰+ò¸ aÆ_6ŸEX’òŸŒ¼±ù~@¶íX%޶‘ø%ýÍFÒm‡3{óäe�>Œ¥ÒÆu†}ý…C‚º�À7ŠX¹tåó¿‘!†Ú•b7àëðçÓÊs8wÛ|Žáy$nÆ.öìÆþ4­-»ŠïÒåÍ\ÍÞ*™^§Àgüh8°ø3ýy¯ô^�Œ=ÕaX2öl”±=!ï]}é­' g8QjÃg%KÖÛã»°ã°!BÁÑ�oXô>Ì?Ù†ølfyCßkÞè®l8 ÎZÜ”À–Žl jôE¬'êNýÅVÓ¨ªÔ*E([&âz „ÿ3ò'�ºq­÷;Ľxê¾­-Œ@´ú›ËO4�¤Í¹¢ÕÆzwH®—ˆIz…pù¦L¯¼–h/žÞ3³�ËeÜÞE©V×<¥¢‡±/ŒgªP€B p“e…ø:£!ûp@Ã��çhÇÕæ÷? r éi”M-Ø&÷QŽtB…d¬„¬Y[‡‘»m9„ X53¡M"¤…·ÁZæO–7˜S4l´,t£G¾i5‹S”c:ÂÞ€c`¦s÷ªžær÷¿Í|¸G�•¨&‰3e__K²÷‘"Êþµ“ÅKó<_¿ÛØ‹'0£´=Êq­i@Ë£óGV˜ÄKdò2»p^f=| nÞqþ1»^> ÅÓ&ÉuòOèŸGÂm9Ÿ?(+£Tž ¿²¾ øéÈú�êHÈ«‘»V£³™Å,.ÏßY’É«¡r^»·)ºØÍ³O«t-Kk2 yÃÁ>¶ž.i¡dCôдÅ8.º¹ùyKK†2 v(Ûm!ð¾’²Ž”‹Ãó *lu´×—‘:?Ù.Jª"íß <•¼üOJ �Ý̓C‘Ho vÛªïˆç9ú´»ýÊú9?R婨3«e+K&œÔ ú‰­7¤V©ß)jmðâ÷yµÚ6º¹à1on\ÝËî¸SØgÚR(QŽÕ°$JÍujª)"‹5#ty» Æ…¤§;ÄW‹ÿÔZÐÈ{`ñ&�f}»±_›JPRæmµQ`[aºÿ÷f»Î³ëûF5øûÿ~,\ëÔ‹Ÿ­V�©+WC¤Tœe �jèb.Àé[´¸6?ö=î…@²¦«ÌQ’f³]&µÙV-Ý÷ÕµëášSÃ4nL˜öóaÛ„$gåŠ@Ò`•(ê)1ÁèVve¸þäfÀ- û$ëF'º—›[ â’f¿ ÊZ@Ë–Sc©üXÁê ùõÍɇ ]ÅuýÆÚXs=Û”: †Ñy("36�X¶a¼�!‹Þ»d<±ªn(¬­Ö1$t$"NEqj‘-ú°Oc±}Y¯C7˜ŒÚ,]ÛJ´ À„4yõNe»M 8ôw°R®�lý–¹2°r©§c‘£0IW,7�À#PK€ý`nò�o�JטXF0SëçA¥ � Q­Ò,S¶áÁ Üm–°%SÙ——/zš°îÄ'ª­Vd+)å†b ô-�ÔYÉÎhkYÊCã’/r²+vÎáìN)ÿ",ÿšŽÃ̽©×É7´hk»é†¦áUíGÃ!ÎÐç>?™í–s³2ü¾MÍ4׿]|e¶ßªÑ�h§›r#8XPÊÄ,J"õi_ö` 𣡅¸Ò|$w#uEææÕùb›è¹»7ú†T_°‰aÙÀ Ö¶[Y=1¹þ�ùa&µ'¤à`ßv,íœ.©“[”ãäOv$,@³ä3¹â7 ÛÄ~βó`ýžr—uÛ—P1ÅûðRê‰û±Ów¶é™¢é§`‘ÆrÊçùZ«ngç¡£îÙÁ{\ŸÍ!Ó,gó¾þ`nÈ5>J Än0kZ¯U‡¡Tt|^2ƈ‘_46ƒ®Mìzàg¿³¯Û?×´8wg]á‡,±ªŒ)óçkÆN~"±Üjí¨í‚ƒ¤UÜ/M­§jBµõL® .y7V꛾¿ÜÀ¦)ß®@a âø9iï‹�éö•ÀÕ’V?q ‘®¨>Ë2±®ÞìV¾ ‚¨J^‹f½ïNÏž¾é)‹Y0€¸éÊÙæ�§�÷†�F�Æ�€�‡ð�Áã‘úwñ¿ãQñ¿cst<)þw|üØ·ÿöø±ðg ÝgÃ# 'É�&Rœª©6–##’¾Ž´Û¾ECöËČ鰖è%g¦p©”Ô9RŠEA|ÇáVʱóã4'šÒ ¸"Žçyt'gA7C[ƒ¬þQ¸à¨t}}ÁÌ®�ý£x�¯\¿—ðFe_D3o©/Wzå+Y –ºÈ£`qŒŒ¸öà¥caÿèZ`÷‘t@ _ºÛÌ%ûEš ]Ñ}Ú]§«Úy=W™\ojö½ï./_ð¿†ÏßÊoHÄ�(ç'µÔýq˜³zM£U§ž à÷( ’5+ÈñBBo×0=eÔјÀÜ@l«tÚèMY}P¢SHç�Þ.eZÜî³ób§ð´íy �µaùú V2¹å¾wE|œ§c$VPœûø0þ$+ ÌQYa‡×Ù‘fÎlç†3”>ܱÙ××… í$¤®!£ªƒºu²ß¡tò6HëÍJ£21øæ8]>²psÃ*“ùŽ*Ùùl¦ðõþ~†äëÙhÁO n¾ã©T»eÿý3ˆ <�ønl�‚PÒw¥ù¹ªÍÐØ2&Œ hQT)ëëuÍD'¤ÎÙæ*öÇDžô]!Dâ²NGG>ëÑz“&r2«Æ¼â»ÈéÐPïd‹d&®¤Óבdb&Å[ £Ï]“Jk³ù˜¯ã‹æ`=M(xrt¹³åZÈÉ;&µ˜œ>Bó0X­^æ‘«MYùò.«Õ›BÝ�g�ç´·tC¹8võŸ§ýT5ß¿MO$@Íp'¡«³eÓ;  ÿ“÷L"àú �$Ú4ÅamŒ>ð�{? >“Â�ûqXÎÑ,3a´íÍš[4âf”ȉÜdŠÙñb*¿â}ž2ö‘"µ.Zv°hC3ä÷>/´)ÒwÙ_”Ü'‹�sÖ¦`͇ÿر‹ò^ÜÑœÅ$ƒÉhˆAxû�}ƒ‘ÂMjT§Ê³‡1[�3UiZ–w«#r[ƒŒ²ý[O"/^Õ¡×1€�ÑÉ9Øì+Ñ÷Ô\F3ù°ß@6ì®Õ$ì3óÉ\/Š('_¥9—˜…៿a›­ÝÞ" ’ïúßÛz»‘rJÜ…ˆß…`ô@H)…Oº$å´“È}<ø³,æ( ¥ª…rFàã œhf/rM©á~¯Ä'øÞ’§WÍouC”ê40¶É®H.€úu7æ÷šÍNu9pIì'Åmޭ܉s \Œ‰U‰l™¡È8Ž‘ˆ÷DþÌ`îâ.\ðŠ¥ƒteø¶‡jo¨0’º�|�ƒÛ ¾.©úYŸÿ M¡m²økÙN8¬æÔ´é\B»ûÚP µ)6ì¢s%>zÏ e#D ·H2²ª‘iW§9¸!\2¨,Éþ”ðÚóÙÀSé5m#C@œ¾�M¯¬ Ó&£þÖ™°WåÂB9S à ÝÏ`ÉÞ?9Oîß9äŸ�u {uöxp| ö½"R¾0çr0»x}à|¸ ÕiÝŠ«Äâ«€öÛm¯ˆ*Ý¿è‹dµ4II\¨Òã*Ò~‚ìímSn]]OˆÈas´ÉÒÕŠ„Úiê8ª pªb‹µô¨H•<£½*Ie/WRòZlDA˜ņtºugê ܊ìwûŒ%V‰ yìã耦ð�]À“ÐÒŒ� áTaæþ\Àã1+Ô©ã­Øã(;K„æ¼¼6¿z4SÑn”+ÔÖ©gqŸÍ?+jŒüF)Äy¾“‰"ÍÚ­ö v[9º¡ÂÎè*Î3PÀýÕ4»Z­óëµ#I¡ éÑÈ+–Å.p£ýFU¹£ÎDpi…c_ÀD…ã!Ó~=Û?viA›«åm F§–Ü„T-XþÜê]Œa…¹}%°féÍ´Ò“´S5áu ðÚWˆÖ0OÇ£Hh‡šÞ¼Û÷Yý¨;ħõU.=ø”F`úú�ÐÉ:_^IEé D§„H‰Qéðú˜ŽH‘6 í�þIw“ºzZôn¹ Ö·Çw‹ ¤à“ü9wÓȪÐE°Ùrç:ñQ+6�'¤€ãu7«”×[Q<Ó3V¿ÂÍlaoáBÈÑÖS´’SÖѺÈ-åç ÅZõ:i"WŽþè SM*Ýkbóƽ{YÊVgݫ٠¤*AUŽ}7Ì@{í&kÞÅÁæ&̃ufC=‘5FÅ%"ßñ&åŠU™‰pF8�˜Ùa{¤ìíQ/‰ëî7I(ô¦ìÎ áÆpÝ<­ZhÍBÒm®?"×»R_ÈmÞŒ­Zv7¤0íI­jžF‚'í·Û|wd—Œu¼4f°-�ŠÆÚ�ã@[1'“ÁK’kåæuùHH%8©a®Öâ°é›bÝö�­ƒÅE°åPÝÖbÕìѲRßÿµèÆYð"·wδUo#¥Uëèh%9 =Ì&âOÿ¨×/K�¼ñXèp€Õmä©“ë¨íð¹TJ(‚ ¢#ñ�.Uå†Ñø>º ÿ¾Ì�q«�²¿%άF%‹ ¦¿X:(êxkë@űÈëýšY_Šõ0š;g4ûa2™öœü ÉLæ\Çý cÜÊ Ô4ŠTÙ„:x—f >ó¦—²êöM΃1DQöYãRlåÙm–è+ŠÐ¡kp�ykˆò`ÿ·_Öç&ÎEabp5¹s.ÜYJ]K%ï—-ªÇÙiaÐ�¿Ñf%׆ĭA°²ãn¥Æ1Œë¹}®YºÔI[ׇU³ïÓO$&ébËÖn&ø—:Ô]-+°Lbâ11òJ„z7ãÜ´N\®Ô¦ä+¶v@gÍÅÅÛÐø�ªÓE@”›jõîU³=á™g޼pg`ÅóæÈ lšª´•aÍxc®ñÁš¬]ïëÛhj¨ú[®54Õ& À°&=;l®\ž“uñz�÷¢¤ŽÞVdvû"O¹,À 54´ÀW×DÄ ú¤ :w  �ÖX™{ˆC” ('z!ôñÕ‰,ÆDÏûæ+e—ñqïÃ2­ó”�WÖ¾g·Ü "5:M¥Z­¢Äücî5´ {Š¡¾Æ)šýÎÕbs8ÃÁnà bµÔÐ ·›í©KÝ…§DneHâök�+yÀÿÑÁD(lÒFŸ9íNç7uHú|Ä'‘�OˆîoºqÑ©MôŠÓH5bLÃÄD3â½$úçºV¿iª9ùÚ¯ Ül²FÕW«‚„®YÌ�)\Ï­°Øçº¼Ô6þÍñ2X®†”‚;åÏëhn¤°êñœ*‡¨)v‡…¾Ž·¨“ ·µªÃVº× *DÂXØì_�$®ñzs§[ø|…_XyE�¶«%è„.ßW”œF¢ÄfìiìÜ à²Ö°Úz,ÞUnèCs¦—tU¡Ê¼“•È( E÷3–:äNµ[¿\w^€À ÑÒôhݵÇP£UCô=!{z5Þ‡Y JB5fÅW8lRJ`µ�++»ïÔÂã9›Þ`>×£„pO5‹·ÃÓK‡ãdjÂÛ*ò›F‘ø²ÔÑðøøœ+~4å$ò'嵄ÂÖ ›ùÕÅ×ÑXxz®ƒý烧dÌñ ˆ ÞóYÒâ*2’ß.Ž´H–÷)&°[ $‚Âõº4Ý&[ '—5W+ZèèÞr¯†jÃmo“0 -|<¡4èülõœ»÷~8’7¤÷,+6ú¡iS¢„J7· TžÚú±ÐªÙi�=O©JûÃé7¶¶àâïÓ*ø¥7DÄ/ƒ¡ê¡³é@Dzvìmþ6 qšÝ/$vë=슪§£óÖjª·¿]aûDïÙöÝš|imœøî͈äu×%)…P|B<ÏX4@u%—¤AàÝ*¦!ކ€nœl¢Î6ÇwNPÈšzüúÊÊþFx“ªÕêÌjÁHÿ/ôSâïÔœC+Yè1ð²øc\S ˆ&Á\?À¾ŠeÜ–»hÀ1Ó¢„.li%ª$—Å+ÚÏœ[ÁSïY5Ûm­rõ\Õíclã•íWŠ^³­¤!u‚uŠÐK8^X¬~Jcf ãk„NõìØÖ GF7½�™1Þ8ìV›Eiìêšk4~»‰�·^qï ¹Ã§�Ý[þcùÛ¾hCfÉ@ôD~l×®o :\±˜EÎKšEöýæÝ†¼4“d‚t³Ó)~Zûº�IçwF÷ª-¿FŠÈ’ RLXŒCïÈÓP vä+ºã—4±B}ƒµƒj2¸Â!Ší£÷½bë�¨ï%Æ«gh;’/Y4È4¡LÄà¹åà˜h§å#g�ó~¡ØS–°Œj¬[ˆáPÅæ>å^p@�h¹qKÒÓóËÞÏ'Ïa&^wÎå8µ^”€A91mä‡ÑПÓYg %³·“1̳¬Ó(úu€ÀÛn+ìƒó +ÎÇÕSYà&z?†n`ÄQµn„o(¶t´Ú°í¶xÄÉRÕVG@­x¨Ð�¶Qkz.³±Üî%¬×[`ŠïÃnQƒ Lé6¥@pfCîRñ’ñ¢GP¥ÿq#ÓhOól[0ò¦ôáKó¬ÁDzÖ«?ªÈÐ5­Du˧1S™ûªü×þª ò¶¤Z)ó=Ó°{Ù¢1’PÑuã6ñϺ1츫›�� Ô{QÄæÂ~3`°[œ9AloëÁ·ˆBB ›@‡jL¿ŠÛ7…3d—k*HAã21c>äwЛ�Pâ|›‚ 0¯®ÄG& ìÙ÷m‡¡ø,ðé”!ßlg¸`£\£…0ŒhB mè¿óŒæÿׯx Àe„×ú7{P 2DzSsã>M£Ì~e1›XNø+�#ÕóQ].?b3ÈbMç¥ñÕzmÃ'Ù³tæú’L� ï`Çû*vkÛ›ÍÔ(u«ú‰Ë¯©$=¡�>@ŸQtu×¾àç…Ó|­q\OK‡‘Ç%ëlV,*Œ®g.+T{M0±&;3‡k“ÐiÁÍÃÚì±¼hÞ šr-™p{½umqNÄoQ†ö¬al ó�>·/JS>Q[ɉ#´T”Å…¡¸$c½\l'%˜õœš¹ËÅt=Ç6Éh'�–‚‘òéeÑ6æz¨�˜Ë,ý9ŠQÉÏLÍ€ºVŠ·ó²Q�¥Ïz6jqgð6xÏN^æ9 <Â߀JÕ�‹Å¤¦ßŠ>šã†î&2›·•™ÐöijüT‚bÒ>æÉ`r ¦r"£®Ù-[QUUQèßwÉÖØú,æ^T(þ{^œí®Kןšü«dôYàÇÜùËâ�‰Jå+d@¬âO8D¢‹ÈÅ_î¨ÎÚöÅw^[¹žz$¬­ÏT}¾m{DµG�ƒß|T}’&í¥˜ Ïd=TÑ¥’ú¸ÍYž^½q;¬­eãZÄa¦A's–¥ÅΪM‘A£¨èÔqÊ9K¯oi@@òûI\¦åÙ@¥çò/åÅo1ÓÑ]Ì TÒÇþ…þ‘èʈ:¶"rŸ[[IŽð²Þ§\LC\™Ïvø[½Ÿ±{D4òš ŸŽçÕ“†¾ò ;ßÜ›ïÛ U*Ž8Ø}†.FnæÃƒNqºå�‡Ï%‚ññ]œ’~8£Jä㣻ҡ|Lû�K¹ÛÆÛß2Þ‹"W:NÕ«3¾ýâ»Âã¾iÊxã¡ß?ŠÁ¹,nM†_v¹c%C;´ƒît >|{’Ö-@Gl¨ê µ6Çõ ½,0¨kÊ÷{ÿùø³ü|ÌZ¸ IÑ/^¥‡oÒ-{È“=hºz_.›ò…eP÷„“DíIqí@i×+=‰Äë»_ެ}ÙÚtƒè—kh¨ÔªÙÄ÷{ÔÐìßxÚu1m°9мÒÌöÀ±ÜfÞÍË”L€Å£aØQo4ö>µœXÓ°’>ô­øö·„lpÞ|Wv"¿ÈA»¯~Y`)›Ø$³µ£ºï�ÁÔ—«€B#ðBNæù0J8_ì ö�9²Pùض•Úç�KV«}Þ¹¨4‹òeš]?O[WÍït:h�½´ÆZr„ø‰gÂA¨V¼yëuN¦±@Ž­ bô¡yÆ«¦Vé ¦}“tÙzøšeã™­—é†g¡�xÑy¼.�Iÿ)nLñ>ûähíD¡›¸-A�g[y!¯Õ5Ñ$qžÕ«ÏÂj¤G󟊽(v‹&ï�½ÉûcósÆ6GgÃ’”4¶ùA›¾Ë#'ò›F^°ë;ÚÀÄxÊÁ-ê¬ÓXVVí¢<²IÒš2î½·²XT˪ÆX-…<2AI ¸¢¢«f^¬¡s³0÷ º»ËDÞ={™_ožçë½4Ô7'ï×ó@ÙTij·Xº³áØúC ƒÁÕÐwµÎã]´},®‘£�uD&§(o‹AÖZ¢è:p^53çéfl#kËÊwg`æ 6m£(K|¤#Š°Ì£&õÎåuó§fR‰ €!¤T1œ²U«Í¯•·;±3g¡h’4™ú“cá�nX?v‘oRörxÄ{ê“¥i&ÄÐiðUæs<¤µùðLÿƒy¾Ú¤õ™»`µZÜ^ˆ+ã؃B�+—ËÜg‹u':Ú–ùÆ Š}qq·‡�û üѸ&}j«à¡õX¤â)ç™ îE-¨ 쵇/ó¥¨&kÑn÷˜×ûp€¤”ùî‹ÏCjã�£ì·³ö;Õ4°#>Ø�¹A'H8Á¯³Qm»ßÒ0Z¿yþÒ¥qi_t6Ì]¸È£÷gV,²³‹žú¶ª1® ½Eù‡t�gtUßtÂoo6÷€*�E ÿxû‚ÅŽúÜ`4Ñm†[œÿ7=óû.åg|”|÷šŠ VÓÿ{ò°±c²aù„ݱýá·ƒá^²‰Þö´Œ ΂!·ÆãF3 .9êmÂqôXÑô‘`rþ»l· Ùúuò6]RÂÇóã2.ó‚¡0ñÂ!ÙpO›�€i¨aJú‰}R÷p‚¼BêóÏíì`ïÞ¼(Åd'í·&›Ë]æ¯q‹ 5è W Oo(†j{uûU‘pxJ +ÊS|è+†�Ѹb.«¢ºìsw¸Ì±F²ûm9¯ÈY÷$ÿý²ó�¾Ž Iú÷²$å�¶´#Ý•£{27ÏZ‰ Ë„ÿ¹1Ð7нO©§Õ÷¸aïOf¥ÎýÚ0X1Æ„v§4] Àó0 ( Ú«“5h]¨jc9%Ðzj€Wò'Á8²žê"';å�¸¬jC( CT’8±o ¤ú0¼dÕŠœÝo®%�R0cãú1OÁ†T‡EaŽÇ·M-5ìÉ…T&o5åiÍ·KšK�¾�ŸÍw—dž“¢¶/K»`*�7ˆ‰!7C¶£v²0Eu-ñ©Çýìî¦HÙ´¶sT «Z_ ,hæ¤øNZéHïå2B5mÒ½I'ŒÛ«6õª\6ÄtÄwa6^§vxsÛ߆­RŠ¿ [7ò©`|òžµ› kØÂáàınâO›O�—–«ííya¸žŸÛÈñ!Œpj¤¶æa´F”Ú¯‹%¾*¯^˜Çd�Ð\dﳮݰL`DÓ àÔ¢ÛÝIÝI¬ôÝ´7´u: ©§‘9)}€ÉÎ3‡ÿÛÀ’Â'1æa›+ß>Ná�+‘žöÊÕ‘·„Sâð:¦¡%ÚLŒùš|TsL‚þ0-o3Dœ¼Ñ1¯dá°jý7õÛNŸ‹�iù7»ÏÍ(¹W³¹ ÁlR²ÿæ&ÿø’Ìl¨á³!º}aÙ_³EÄWÅ-'J? ÃÓð€Š,%¡‘AŽjåÝ+sT÷éNÞÇèµÅë˜@�N§üô’i!:æÓ$A' cû”tíÿ:¡ ð î¥¥V]åì)1·+Š¡†¼~× ¥¡q…`Èbº|Å0·¥Œáÿ,É�5�ê½ Ò‰´]Z~B*ooxß�·|w'¯þJ&|Çe¤äüäåÏ'ožu·<‹ï^¼~ûìÕÛ³“—/ÿzõâäÍùów/¯N..^ž�ž¼={ýŠÚSX¾È%wEŠsmœZ„n-©8©ld±ÎË×§Å"¯ž½úáìÕ³goÎ^ý@Šà¸6 ª>•ɉc-Þ#´³*µ˜öí‹7ÏNÞ^½ýëų«w¯./ž�ž=?{ö´Å¡¼{õóÉ«·Ïž^]¾~þ–>:DâÖH?Eéí!Bá–™ÝÕƒìánÃâÞ‚]§Û^˜o3¶í�þË)!Ф/NÁªCòQx̾- ãrá(Æ?“U×!-‡[„‹—Í©W7éææp£:f �†xÅœ~³ –›žˆ-0<ŸeYüwÍât]ß|Ýyz°©%ì@Ë­zéúò4ÿ¹×Óž­$'5çdÁ�C´8jN÷¦qªTiò!CãðØó|þ.”exZ‘•?:Éâ7î¦Ò1‚ÿ P+@£¯�t!¨Ýä9…W‰í:ùÁ‹uþ!%À®Û¬§‡Þ—XA¾½H˯ڕÝ:y™ˆKF78A†ÁP7N�T´)üX]º÷+ƒ!bÄz~¦Û"Êú\d-¹+ð(?)¼6î„|™‡Ù‚š Ý4jöl‡¨#ýʽì°õåífË–mÀ´X§å¼KÑÊTé<é{ö{ÈéÏOÊuY!›e ì=‡öÇ�ß¾hQÅÝgi°�šûa*œeÎP¦�KÅ ­!r UÔ£G�D|³ù˜ÓÝ•T\|?Ñ#Š0åý${´pZü~E¿Ê”â|ŸöÜ­/�Í_W�Ørz»Î[0 x‹ë�šWU÷òBc4oèk„ áñgŠ?†§/_ÉŠšÞé"ßÅ/Ól÷©¡×~Ó%ñÉ^åVÁ×~ðIøïMÅOmÈ5�¹B9…:NÏSÿnXÌ}zwY~©þîÔ²Àv”÷�5.yn‚Ûÿ['-%üßQ�¾ºx h¥·´ÙôÀÅ�:Äê{ˆGc�g)Ï÷Ø­×t ÅX81dùuÁÄ'ð5܆©Ü("Ö KµGíülð„Wv‹œÎBn—±)c©­hߦ~GQ-¯(êbiøPóšBiW½CrÓIŠŸ ®-ž¶IÔ‰ šòT;WÜmÚÕÙÀìøÝýì™CS�8§ñ¨ùc°€sÀAʧۚåŇg¦šÆ´¹®’Q�HA8úÞ\*¥½áà‡'¥X�ŽÕ^2ŸöK]ÒÊÖK÷5ò’?„¤¾(}Úe˜§ÃŠ 54ý¯VQqÞÁ誊nÖìº1bÓ$P­ :Ÿ ¬D,ÊFËl¾'²k ëÛâ,ÀÝ5TŒ¾[\Ç>Mùç¿ïÿðDÝ1�³`0ƒßoóm°àþºX³eZX×wíDj¯³‡ò‹›ž•+º½ ÍÜç­0¤zóTRDãà,RpñCú5Et¿±Ÿ_3ò‡�9þ¬ÙÊì>òù ¤°&G•t@£š²`ð0E"ž»ÉŒnŠyÅÑÆ�‡d‹ V¾©°*•«ýBJûùëXÍÂ`ºÞ­Ù�mì6k"mEtâ 7$û쿈Ž`-°óén]<—[{ŠÅú™¼¼6;º‹Ó,Ý÷ùŸý#éÌìÃûü<¯Ö»L˜.}ô�þ:Ú¾þ»¨òn*ù!¿as†RYLÈKµû©?ó!ÒïÍýý�Ç‹e/SjŽ"ÉOgÎWÒ¨ÛÈÍ·Ó,Î?R†|Á¶P…Ùƒô D:á碩›'Ãï3-IhQ ^&ùqü<_/›‰VªÉâî9Gú[¯\ ü�—¡9™§¼Hκò�ºt'Ãñ|¦«ç¢1?mÚ¼òê 1 d­ú³êz íÁü:A{"¾¿Zì®é|éðóy€7%‹Ó’ÏL2,p²Xä©+0 ¦#XS®:oÚ"…l¾QÔïý­]8*ª­¶m–Ýée jÏj5V¬°n.0‘Ÿ`à#Sn¦JÎË~©XßP ½ÍóÅ–®ª<¬ô±å‰~Ë»Š“ídŒ²9¬ÑÂL+Ÿµåíæ‹çëü¿èîòí†3îâùíå_^" pt`WFX¯�‘L­¿ëê-ê y„„{{ß­Š'ñ}OKþ œ ³µaêÏÊOæ¸ØC¢ðêôß»$øñ%»ß-8¶•Tì"óE°ŽYÆâ‹€ûQÐîóËŸž¹#ÛðFŸÕʵV?,58¼B<ë²Ó½KJÝn«ÝÓµBʉºNTËC0r‡í#1í—‚H‰&|ã(Æ®Ï×PQ{_Y^訋Åæ:æ^Ùvèûþ^'‚– ³ÑÑÖ¹Ü$ÐήÔ}’M ï�œ¾ÁÁë¼�ÏÄ(ë�!âÝ:º ¬é÷™•T>+nn1×ë Æ5Êü¢yIäéÞ».AwäB"Ðç\9Šb�ûÆH“åÓÏ>mY³ø%U2ì� ^2†ç«‚�i ÃÈM=w´Dh·r�Ö(â©VÅêÌêG�1\ЬoO®É\b‚œœ4\œ ÷js.’?†Ø]ä.4Ÿòîîf†?®@1ZvOÔ’÷IÃwÒÔeÑãÝfýxs¬ÙãàÃCžï²Icö”áG›JÅkk/#Ö¡=œÐÐX¹‰È=‰Þ*j~3dnö7|u2ïe«�Qù´9”!Ðæà"'; ²Z”M±[ _AA…{”ØUúoLõQ 8ã–À‰ûøÜ"\]Õ%Å÷#�k¥�Iy¹f¢fDÖµ€ç�×KÔexYΊ}„<»Õå½T¾s …jT$HònþÀ˜(øñÏÀ­à£qÇd‰ÒÌJ8ó῵‰ï2K•k@wNJøÏ½è"ÈØ¢wrqÖû,|Èܹí�¡DfZ�,I›ekœF·¬Ùǵ‡:€‹M¡óÜ÷Çò.ò: &œ§üþ`˸Iü@bÅD&w|æ´áÅ#~2 \C¸ý+5&_@uû£áೃŒ¤$i&^ô zÏû©}lIqœ"v2œW¡^¡xÝ�î`¸ïáˆRª'¼?œ I Ó/pÑ4‘Õ\Î3MÅn…¾º�0]ʼnðuÛÙ¤’š¸âçç�å�i’¦ íz‡ðLÇC×4£: 7w9*£/J7��tú‘h³«'…´Nx ücº�nx Ûqz.zœ˜ë¹ø¢¼'"oõ®_þýá�,äÀ!ž�VÕs~Òû:¢ú–IÄûÒ ªr•ˆÞ¬×IÈXùTÍT¹r0¬E#×2Uo I¿Cï!X~ Í�t!½|ÀÁ6U~�í`GÕcâÇ6žò*kO‘ ÌEÉ5°:tî“Ák€Ó'kë- ¢f±ajãâ[@1øœ�µÍŒ]eÖ ³M].1+rŬ–¨íÊK-ÆXL×VÔ„¦äX÷UQhéZpt”S—4°©Ï„d¨úô„sÙD�o­Æ¸ÏoµÎE’QGÐ*‰ŽÃâ3‘šoñ[ã¦åûâ?}h®[oV^I_lÔ¾€¯˜v%ô²Gþ™…—â—#z(ó4 ešq0ò‚Ò…QÀŠ5.ZØ� QL‹ª‚êò1B¼ÎP»Ñæ,÷ù�ǽù¹M@ìã~V²@©ò~`^]‰¼'$X8ºá€»O§SM›¨pÚ¥I[»“uÌÓ dÖHD6¦CXb´¿"]@óÁˆ“7æ)¢ÐôÐð Š7 T¶`·Í¾I·ãºa4l§�%`9”bH¼ZŠoa�ï¶UÀ[Þ¦6àéÖf(èúâ…ó#h€%,UäÐÐPñ;‰Ñ³¤ÕšÍW§'Dþ É#ŹˆíϽù¸÷�PÛüZ‘G+fF+—6¦¯¨e«Ûu¾¯AãY™‰jr—èb�#”X1”ÈñXçøúòòÙ)ÿÄfÁ‘ãÞ:áöÐÆÌµd^ŸÄqÊ¿´¢¶ïÏEa^2­–.q³ <Ê^Z°<¸IeFYφE.ªƒ¸Ów©™2Õá§³ºL,X¿”ù¿ÒšêvÏ-™À<�MdܬڸtÇLºG{ª‚£!Ò)@cK+lسÑx[†µõ\Xy«>¥˜ª×-{\�¯�’0R·œy¡TÕ ß4gØ÷l�±Å)ï@Ó¢4mŸ†Ã7 0W|ØÂ£mâџŒ}“F*¿Û+óKñSâvÑ4ú±¤ Í�HãeïS™#¯¤l¡‰ É]ã9"Õ4kJØ$™ð8ôp(/¹Çí_Œ9&¤LYö-ZzŒ‡*k·ð‹�&‡Y\Uw)FöHÙjõù@±¼Ê¯¨�æ!á�ƒÀF“†uÊd˜²�L1ΔZÕ zõ<=5D„Ű¢jn6ø33ªÂ£ÚU[Å·æ„:f¦ÒƒŠ�‹Æd9“`täW­j8 ¸¸ÒQ{ï“H–2LwÒ�4gœÆžÈ£˜«ÄÈ“ç– ©> Z½ú´pÈ׊É}¿÷³áÃiîé©âêü“ÔTF¼¡eæT×UZZ‰?;ÕåêUkft ȘE‹ÕZaº�;|†âMÀë½ÏÈ÷ãÐ dØSÎVh™�¾”{­%e-€›fjÛîò1ªÊ(¡éY�fE‰‘a=Išþ]¶çÌ48ç>Ï!8‰Ñì\®éXkŒÀ@¸µ¶èazÙR4¶¯â2ȱÔá–âS‘”•v Nº,nnùþº‘¬£5^�4jêhÚ�[ lÞ*é[Ÿ½žÍ%µkœì„md¬ºë Qš?é6lAcQÀ.õü *gáÂC Išµßœœëâ$ÑÜÏ7"JIãßáŽ÷Ç�0 ý† Uf7—%øu?Q¥´rÚÌÁM)iX ÕÒ™Ä�#íacVW•™Y,K*Œ*}õz"�óDMPsîET(�ç B\›jÚæ—£�J 9‰Dšüi™fx`éaHG^Ç^v” S>DÂYxÙ’¹ÈÿMðç­ÊíÔŸrñ>–ý´+OçlÈŸE/#Þ¾æl悉¨8$z¥¦èЖd?�Æ„YpC^KœL¯Bü®y®«ŸÐ‰¶qœ†ÜG”‹ZÏùg¸ê1‡.gÂù‘f�•<žz ^¼ñ\»œÎ´sì—s¹lm(‚æÑšíÚc•Š/Š©í—>,„oëôaZv˜§ÚmÇÞhT^@Økñó‘³QÊĺ�Б¡�£‹6 ´××—RÖv¹)8ÕóØy­ÚúÐP=Û»¬:áRõ�îæÐªþŒ¦û~ÙÜe½0zøâ‘–òÍÀùN(†‰£ºv—K!i¦ª­óÌDUºÆÐ�iŒ-⸕ }Ï^$¯Ò \0³ˆ?8Þ,iéÐþv™ÈTzìëy¾>Y,œÙ| €¨®G›Ôۣ܂°»®Ù»u›ê²I2 �{7ÛíjsüøñÇ›e´yÄ>ËÕ‚=Šòåc·n3 Bá®–·Œ@‘>D¿…rÈŠ{vUHºUžµPnNÄç{oäç•-,RiœJ`¶kï7œÇ,‚ö@ªŒ¼MGÜ UÏ1¥9×3íÚ@™¸si›Óé2Ü(†uac±ÂÏž^Ön™éÍìIÇŠµüVZRB—œE €|”ÑV+TÂKÂÓÎ0[”·Àtð!]¬9ÿ¸.F¼Ép¨‹�Nî ÊuýtÝ…5ÏÊÚh¯!Á��ZÂ.6Ë M³½«\…Fa!î Ô,;mKXŒß i–‚meï6 €�Çò}ó`„AÃÈ|¼ õÉžYpÍÆªBÅ–¬Ù¬V¹‚2™l]?øîÀZÆÐ÷`r,Øý×zg3¯tÕXa›öÒ­»­Î V8p•�è9µ|š`Q¾½Xç[&ÛÌ3r†{ïÅ®AÕÏÓ|x{&Ï Š}¨ ¹'Ù®¾â¡<{ñßâ@±×9(£ê<_3C§ìizWËäµ/¦ö|‹å‚E†}�gQÉËžÎ8d;ÈØ¶nÍÆ·£5"Íx¹]=áýM ÁŸw˜ø�­¹ ñòÜ<‡ºÞÃTÈbòýÌx]{y kœLˆF§ŠÛŸ¢IS–¸k:áQvóÈ?¾„ÎQ-.kzŠ;ÃgÊS’Ô¸ÀªºóBÖ3m:ôµh‘Bo®ÏA^@ý«±e¼};Vr­À¤Vkå­¢¶Œíé4ù^I`œÓ/ådÍѽ 9( ü Îd‰Ã.Óúü^’¾Ã²ëpp�Mï½fãfz¾nQ´í¤Žb]}¬__Ÿi‰pÚ­Yœ®yo¼¯Ã£bµ•BûöüJ & øX¨)!7%8Ø$Êå=ÂЮմ›[¸S4&Ñ~–]— s\æu؃Ìe�PŸžYjçµûÅŽq·æ¾”²ò§QÚµýªÎ"€!†¢Öd—Gkº¶… –ˆ}Ý{n9s”¾»Äƒ•«˜r4œC�³§šü”,Ì�"ý³}@Ÿô©¸@™´xûs”�ÓU×! ¡Ç(o¿ ÍÛ¦¤†0·]§¾§Ç‡Ý-j犫ŠÏ³_tË'pçÇ i%2•~ÜÌFi£2ëÝ™AvLL[Ã]M¦—C†Ð,õR ‹“³†êºR†’ ¯“¤Ýqj‡ ËÔNwªånT°áS–»…@؆ ß¼¨Æ‚�éÙ»}m;I­�IR¶…Aß!ÁRŠ9ë…¨³-šn™ÇL ¸é“Üu¶'¢idUin):ÎTåk†yå‹�¡¯Q(œï»øNݰP"À¨§l_NX«uÊvBÕ™–îv Šô÷ÕŽ0J¢Zú†7†_èPrà:ù‚r|°í:�ˆÌoÌ+þl P²,ÝæäºÁà ˜Ý!Väȶ­…‘*lCm¼YXý·—P­huPñô"’/ÓeºuãÈÚ‚cJe¬aî�5«¶×.4¬û’”»Ó ]p´c—wèÜŸP2÷½Ò02Áq,òkG³»C�N·Ó¹¶¹FÞ˜ÇÀÆ©~¿÷]±ÇÑ`8ö½âcP­\ëÓòZgÏOF½ìáR@˜q¼ޱ(I œê‰Ý*P@T£ OÑÛbÂÀ�ãP~¨�]f,(G˜Óò·Ÿ%1/~!Ã2u§ø;Š[ÓúX·˜Ùe¾¶µ!%šèëuz�fÁâyº`›§Á­[„èî}M”—Ø]*dURZÐiˆQhD'P£×éR¬â äE‡=õP× Ôå' ¢÷»ÕyðIP‚¨¹ð<µ�Šìª!3Ö­v ®M»@'!`0�C^GkÞt(l—qBq¸«[XOÎÒˆ]Ò2ƒÑ/ãúHÕÂîë= °ƒŸk�&Ì[×¼µV{Á5rûBO=ZVgÁ{;çkö|�/ŸŽi�Ïm½::¬Úê@æ#=l½3fp©žÈðë7Ç5ÏUS$%ØïE(~+`œ×ë¿ì‚u�mÓŒ€mïRãöÿ|,tGÎt¸' Ljç2Ñ©�-˜=òñ‹¥£½–M2á%wœè" zÇ(ïFgVÐ(ʪáb1á?¤7F±šPB¾10=§1Ïx¶HZ >w×—û®z±ŠÂãD0†2t�`�ô\ö¾{öò9y5hwŒDaÃ)JJ­ê¦Cf4†÷¨=hpŽWó:$$d§+hÚÕ„Z-CÖü™ï� í|í¬ùƒG¢9EA�Šà…Q£j÷±î}È—ˆ%v¿ðû Åù³Ù% “Qk¶pÁÉä1[ÄØñœWhU1ÍÔpÉýá®tHRètâ_ûtÚvC1yüùvÕÌà«Ýš=L¶+[<ÙE¦â+-.B›­YÜNõ¡Ö(“Œ9Ú´%“Dgòukמ££È¶¼,e  DÎrÚ%&À˜"A%(«o£­å-1òlR¹ý1ˆ{Û‰'ƒ¯ÈvÜ·S³ÚµÎ-¡ŒT6„ÊÂ�§÷é¡çjº„ë!Ú—^‡gÛsèÑȵ,2ºÝo…/óÏx¿ü:PÎ[)Ü®ØzSдQk{¡>ÙSϸ£¥R;†0˜ã I²™2"µ³ê|À³ 0<¯%éË,<·+›WÒ�š¢ã]À²è`ãD{Öz‘*UAîàÖMÌÓ@ghW5·,SQ0ø÷IVÄÇMØËxó¬}ñC ;F¡/I¶‘&¼,O÷«%œW‰ÚŒ,ß§®õ+2ä¼L¥mmŸB¥<…ŽXív¥.Ó¾¯ ?Cnë/ÓÿboX°à�à.«ÒÀ*[“t ÇÚiö/Ól÷I莧7AvÍz*Ø…Òíýï¥x^VUDë�0æQÔd0Ö Ô^‹âP‡¤°»ä̤SÁ&L\5™bZGøêX�t�G\^Î�ËT—s¬Ò¸ÝiÄaËåÄ,‰'šD¤îÀ'–Ë[5× Hù#žü6†Ów€~¤ÉZ/VEñ•)løžÔ<;Fí2_æU‰�\¥N‡ø2¢©=R é8óÖ�ñ0²Î &£^o›8%=ïwÅ�™²`q»I &â-Æ9QíMzysñ“2©ÝD‚¦"ûšâvz”Ñps“<]Ë“ŸÞ°ÍnaïÙÐ+°Y�µ´û�Çúöm.ýÒÕNôiòìSºq4Œ#^ Ù3^ ‰þ­¸—"²ãM«Ê—­G›ÀFh =ÚvgW¾½aë�X“Êb†2¨¨ÄYžËÌ0e· )Y¯ËíÔ¬7òÂÙcÍñRÑüg_RR]¯á[6IQŒºZç€ëu|ÜÉÖMúX/{T|'ÞE[n(|ßGÜlOÚ3" d ñÉVNH[i�ï�¹˜ñf•�o]¼ºnÿÅ‹ ÍûUðHÓv–™/à8F~z\<æûZŸÑ‡éêöy¿özOÄ¡í_&ÉoŠNÎߟ—\¤­nVgKžÆ¿½mU>dm],p@¡)\;É«„Z­¡d•�â’ËP2„ÚÜ�rNŠŸÌìk¨VØÁClfÝ·p¨’GË{ªwµ0ZòÝ:b§…¬ß-á,î¢Õ®�î>~$s«½Ó‹w=SqRÀkR '^µ¦éqñS÷aÛÏÒ‡ëev¼#¹ÊQk]c«Æ³özjm�s/Jz}CD나ç÷¤ù7?ݳǯrºô8¿�Óµ¯5~¤ÒB&"l¹‰nX¼[0¡‹:˜æ¥õG=Di¤Õn_”£îè¦îìônánÉÍÑ]ýi-q°6Ͷlý!pƒ¬º .½8œ/D¬Üyמ$Y³[âÂÈÏM3|§¢àw8¶åyÔþ#cï]ãÏãa«0¹7vÇt˜Ø )vò´ØtC"ÝÌŒy' 4i>Ó£ÀΛֳÏìTüÁ÷c=;'ËŠ—,Øn×i¸sÈ:�ñò5Ïg<ñÒ¸h©Ø D‹ÜÎ wCÆ¢)ÉqŒª4 «€ÌÅh Š/± @‹-©àP?VI8UijÍnx•HÙùYP*i8ˆ�{N™_8¾cË ]´ÉV£3�ëõ63ä ¯Öö`(¨Ù`€�õÊ“Ñ VsUü;µÈw믎_$ùh®DŒ™k@tˆ”µYM*Ø×'�(y tqhA¼L³gò‹—,z柜mÍ¿îÊÚÔ(Ûº�ê“mFÒ¢G¡0Ya1hs‚âïcÄEØün¿äpñ°Ù~á°¼*±§¥ƒ�¾)]\Ò÷ãOˆÕ Æ|eH›ýùÃçyݲñ ¥ÙVÅOÚ” í,tñgôµo‰˜rXøe\�"õKñ­6}§ E‚�È_é1Çt*KŽk!é·hö-èã×Þ0Œ< gÛï\�‡è¦¬òì‹vÛvÑЮ|.•qäû÷!/¡Ç+þLÐO€Ò2Ѝmêt·½º’Ok^85!º÷ì[:lñ¸µÑLð9�ÍI²ªÔ@8} €&™”@ü•;aO°|F@–£Yp@|zøó”.DŸ~)pXäLDãÂö‚ï¼D²h<C5ãan¦ˆIkSêržä”Á£èÞÇ8�ó¾,¿ã·?FNùàºÜe 羂€›Å<¶ ¼ê ¾[ÀÈè�!£I ¦ü1[QaCÜ[>#1K‘ƒ«®Uv“„•• ¨3—ëßz€P�—¿�ý5Ö ´/Py»Ù4œýB¡àŠ·`8ùNe¦ Us�¨ê²âFÔ:_v¨X4à‘¯Uš.{تÁ2s4¥§Ì aÖ…R^Ì»¢@`eÂB�øøÊp$Ü…»í¶¡øh\Ct4º[%ÔÈi,0›¼q‰øÕDx N®¹PÁv8fa±ã‚ȹu’tõID�M«òåʠͪm`±6¦²ßº4ÿ>çZ}áëÄóÆOk(þ.ÖqxÉ%¢ ñnãì+�ÌgV:n¯}šîƒèäf Ia”{‚1SÉ>‚²ÄL‰/oOLÔˆ÷{^ÿRZÝ?âP¬ô5„@;�‚ámì_üåãà—ØM$”¨¾-üÐÃÉ**³oW¬àÒ©|•ä»,n:Hgà± ÜêØîÊ¥¡¹Ç}òÁlùTñƾÇß× WPÉš“*F°·lÙôëY«¹Ù»7/í'ˆqë»,î«Ó?�Ò|·¹RÚEoµiPðÕ¡ï·Yß~¥L÷9� óEº½ú°[ðØXÓ cë?í†dGà"âÞÚhm°DD2­®“³‡OøþÄ·Ñ¥0rÆbýs�“æ{¼ »|≄©zEG‰Ñª¾éǪ΂�‹Juªi&ʬØÕÇÕU$Z�Ñg®2•÷FèÞ€.ûu�ÒDQC{žzíEö|·�ƒB޵#û˜Mþ‰ˆÌÜ‹+y»ÜÕáÉË«Ÿ®²|{UæÝK‰r=˜þt„d[8DöðÚ� ‰ž¶™£zb^r¿½Uàn ^Àu=F•âÇä»Í6_ŠÚð4K77Íʳm—Wf‡PÛg<ûc›ç‹mJB§4¢á—Ù¬&ðËäwH^™{�(�‰P¸; #¤0ª@�À,*»&€›ÑuŒzošØœ5¦â½Á FlÞsœB¯�átãç- ”®GÑ�ÀÍÇÕDNùpi0n€A‘U¦9;׿�êÖþ`.·Áº…­ÒñLæžH°žGáýéÝ•}õÜ6Zugâ5ª–”lü´�…·o©ß×àêýËyO ›ûòj½ ©‰þðŠÖ¨�o¿°a‹4Ñ�.–;nB‡iŒW4aÐìwËw¶îðR°ÿ o`—µ«c;Ü;§Ýá•ëJìƒËbþæöQûjˆÿ,o£:Ìv/c×sìò2îÃÔ~ý¸ü >°K¶Ý¦Ù5•á�ª¡!¹Â a�&Þ(/»ÝEQa^cžÿ%A€MSÂ[Š*o®«6 �(•m¾Z±ø’­?¤QaN_ïÒ˜*@Pá.æ–®E—µ†bï¸+:®+—¾!"¾À- Œ¤ð² Üo ²B‹D§™hoÀêy“2J¦žeY«êkh‹n¹è­Ú ‰Í 7˜¡²íµ²’šF˜�fÑ»8KÕ2Ønƒè†'ñŒêÇ·t [�Qñ(Z4g¯ž¾|ÕØÝ­ fYú mS¼Ñ<¬Ê7WØpL…¦!Y³ô¥^Ý{õúÕ³ž’xÝfl® iÞ±‹š¿-3Ixž€<©O¥UÞ‰ò†úSŒÞ1EåäØïxì÷ Ù' aËÚ•2·ÕÌ|‘ÞB˜`(ü�órY¢£†—@–°ì²g•ÓÍU=³€Kß°&1©?÷åH”Œß5Œ\gznÐq×JÈé;į~øŸ¢vãþ',ñáNº÷�?'ÆçØéD#†“€wM–fˆtxò�.m†òúZŽU‚ì™è <Ïs”‰fo®EeAª„ò£áÊø@§_vÌK’�XK3¢”À•·m�/»Þæ¾TÜP�h­4§8'/ëöiþ€‡F ™Y–‘«l´Á\ïSöj¯Ñ4+Ðf#$‡ù-�`‰D&›3‰§. D‹SÀ ec„Ôáz“gÐÞdÞ€kQ÷ÑšSêµU:�Þ¿ÍOóÕíÓ¼¸ttYÇ6ÄOÍd®O G&&‘}4xSìhÍc ’Š-‰—w¯Nb¢ÅÌ$™…ǽá£Ñ£ñ#x#†ð�Áã‘úwñ¿ãQñ¿ãqñ¿ãIñ¿ããǾý·Ç�'3a�KG*n›Ýð"¾Ë éØ;áJÒûÞy3ÔÌKvä Ô «4ÄIä"6`h�•WAõ(øk}–1–î4h×FáÞPÇÃ�†¶‡æßñ-ÃŽù†[QEøüxqé+¢‡ª Õl8•±¢óÅ”DãÂ}>”é=Ó¡H”•7ÈÌ/èÄÃå›ÇYÑJtUQÝ.C�¬6&ØKŠµÚš¡ÔÆ@ÓpdÞUÚ°4L•êyY;³�²2ïd¥�´ÎÚ¿PXÒ^prdŒùtߨD³' ǹžoVYˆéß®6kÛrƈÓÅ"ÿønÃÖ4XÔLO$o,á@ÀOŠ}Ù‚•žº‘l~0šëÆš6êp 6Ïß§ìíÖŽ�"~Ù{ûö¥€3¡±ÇbTyÏ€²'L “ïs܈zÒÖ HV�3-J›‰U#£ÃHðað*‹)}}óîõs?ò›úD ®X—ÉòíkúðÆÎì~œ)ï !­…‹·Â"ú[2ßwZåá$]lónX°Žnž�.¤;d¬'ÔÉÆþÔ‚m´/OîÃö-Z[PòaêÞ’ZQãV‚7¾bë4�7—7Â1µÍI´” ã9m›£?¼éÛ>Vü¸øåÄþˉøåˆøí~=‰íßåjcjÿåT˜Àr'÷ß„6hö†½ Ð µ;ã[“Ú·¨m_Õ¿GУ>›§j„2¾5­| Õs‚ΉØ`†äâm�1 ÙÇ%iÇ1ÌfäŠÌ9ª—©„"Îm·Ñ覥Px qàÆ@ÄØV`¦Ûn§" ¢[ÊÃh0òñ·åX…óÁÒÒ¬¯çßsNdÎ=¨Àñ$ÔW£Ç£zv½ÿÙÿ>{”Æß÷{¿| kVäY�@ˆB=ö›BßɳùRì?‡þÌ,ã€?[¸hÇ‹„©Q˜#û¾4÷~;ªØOõNq¬É^³íF®^ °¥û'g ‹ Òë†)Úݤý‰1�sD&„ ª¨pÞ“*b©s [J+~]5>øtó}a7Kš�ö¿í²àC�.„Gh�z£r³Òª©Ús™£#> 1'î²2+E'�† ×ál꼪‚wÜÍ]Ü$J�¦\Æto:{¼I¸Óß­DK·™Ì§–3ñ^ªö˜«â2î0ãSì7g‘²ÓœÜƒÕq¾J3ææ™”Kž'lQ×�8l¤jµ‰G²MS'u‹Qª }�{ïÞ¼,±®T–•ªV:n“(�û,W ö(Ê—�¹É¡K%ƒR"�™ú°%2Üêó*ËZ𗼇.ù<šê{_¾òÝmµ�EÕÉòsz0Ú¨§¢@´9ß}ì'={ÔQÁÍ(_�‰´-Ÿf‚…Ý7_{à $LØgóóR×!¬AU™©ì¬^EÓÕ:o²„;ˆü²ÑØG¡–Æ0®|9”fÀLìhÊ¥9†Ær�iVÍ9¨»²%"Vó:D”r‡w�Àü�Ÿ E2†µMfú�Œ|Kä�­#ø@Ö dËJJ ­Œ‚p¤[ö«¢²òóc/Ù|Œ¹l"|á!3©ª^¯ÇËt™º„Í¿zÐúÛ†¢»h„T@F¼‡Ãɬyw¿Â-¤þ=þQ ´Ò]0'"#!ú=9êÿ®ä({ ¨¸/¿½¼©tÕ0þÙ…åQ“"+HZî%Kk]D=%•ák¦lý·LÓù=·¤!·¤ëÓö{rɯ‘÷UÜGwí�‹"–ðóþƒ‘hRËq•>_j©ÎËB¢£Âx$þïñ¨øÇ¨8Âã8œ?öÓ&ÊWìEJG][ºº«.7 ¬àa+ÌF"Ÿ³øç¤lJVáîR‰˜(çÈŒH)pžÙW]öoR�½‡~z,äéž0ò+æwýžäñ{’‡úûïI¿'yXfú=Ƀœï·™äQƳtu¼6cé[q°ñ[gP�Ê=i´œÍ°º7œŒ ÅÌÌ%(ëË¥w·nñæþžÒòMSZ:9[Žu’Ë�VMs)çÃÄ\(~î£2|Jã{±�Çf_|#½§wkº�öo8wg·º^¼¶`ÅÖçTŸóÇ¢o8×ç?ߥËÕº0@i÷ÒëŒõN9dFOB ÿbAöp·â·•e,Ừ߇øÝކ�K4u(x�¶ &Ì”@SkнÄ©®´P[ˆÏPŽŽŒ*aŽ ÀÊ�Ï€z�1­¶6FX3z®ÖFnF54�K�pŽ˜9büm–_êŠòI»!…™%zïMc„w%kI,Øgê¬ÐØ”îÜž—¬|’Õ9›8RÃêéI踓Ÿ¾ïéŸ×¿ ŒcdDÍÛ\ï¾ýæ$+¼t½Ûô.»�úäYÖ"IF£[Nãa™aW9ßò)Þ�5j�Ä�Ÿ “iòÀ`?K>òôQâ.Û¸i¥ŒÑ" †‚ãQ+™ ±‡Pa…>4 =xîQ_Eø®… SÏÜ€ðÑEI¤½¶vÄ•‹T hÙ•5'æô˜êSð�”ñUþNz?K”³ž3ºãí‡ú%áê"w ’icнï{oX°xÈ=}½‹u._?ãÝ.”ˆÕšÝ°l“~(÷LÅYy%”[NG§ÞS;Ám=¬=€Zð¦6gát**ó„m6Å„Áâ’†Få°\Øóê±éD™-`´Oé€Å¿-8Úƒ  q=(@q{ÃQÄxou³R}öË®Þ}{Ü ý]$¦ùãP” ·À6_=ÉI,U±¢YCÃaávö¸[¯LêÉpMíUR‡ð"¡1óõh-ã…Ò=Õå[‚ú9ɦKu�$3ÊñÁ³a/�Jý Å¿…±“Ýb¡e !9ÂJÏE_–EÌ]+k�!áo%“�± )fˆÎ»ò¾ÙN¦U« SQ\ñø<·ËC3ü^šˆ¯ãþ×»DJ?â*­¦$cøž¸“Ùs ^ÿ‰ ôp곓K‡÷BôGÄÃ@.äTÔõxÂðÃ"XÆ+¼1WR¼Ù¤º$#D�•jF4æú­�kE•'‡^åZpŠC±w–`³™zO°’ü+ï}ÍV»­xÿσ,¸fK"€D Bzñ�'ò™Ô±ýYŒ»Bù~ï‡<¿^Hø xœJ+ìøi<]Õ „èïb¶2oNÕÀL©ë—+ò’)oG1MJ?�ëe¿ qÝiCp!Aê�^…kŒ`²ø$Ó— CqÖoq±cN�J{OÏ £uª>-stPØŒgÝò@_ëOz.Ðè^þ]ö( –ìH‹×¾R3ûüÞõ‹òc{1K å›õ±ôBJlÿ(ßr`‚~ÿ˃ïûÔ–¤7ö{oF¹ió±Ò÷í-6¼ÙÁ]˜^ÿ Áðâïyl3DzÙ£(ße[á\÷�™ò ‰(›Åïd¶?‡Ë6SßmØó�ášœrÎ>P&ÖÖ„ߏ?Ÿð?Ù¨ú[[©ªAÊCOD¨FH‚µ%ð-*B�qÀÛ#ªEuæéèæ8u’yè8ê´Ñê“Ì¢BáuêÀ0â¸ÖOyeÜñgñ¯�f?#_Ý`?·¢8 }�ª>Í7nÒ´Xß–~ìã;Õ$<õ’ÅWÛü*½ÎH L³Ù|îÛb·môZF¦²Ýê*Î3ZÍmíj5ÕŠe±ÃoÜv6n©¢Q!»�‚F3ƒÂˆ»q÷Ú÷d(á;8ÿÕZ6²yνéiéic ó–IëÔî‘M$£º-ƒäzä«d�/ïŘZQë0{¤ ¸‘;ÜÓÁs)¨)ÔdOÎd§©ž»]IÀ½?$}¥~vß…Ýg1ZM4eÑËøÇ.X¼°‰Jå6Þ²=&X3.�å „Aôžæ²½2ÿ¡~g+ç`#Op�µv¡Œªõþ&«Ë×éušT‡æá•ø{h‰«B§…F|«–p��ÄÀfªh¹ !ÖÞRìu!¨KÇ1“…ö8[W3Ø·?�£ro¬ôñŸT 3Z/@ttø`•WØÞ„œVƒk3éÛDÌ×VifiM¤4)]E‹�¯¤R´fÿØFàæjy›‚Euµjpœj«…7£š¼ËÏÁ| ·^DÚš½ìucÌ%ÞW2Þo ‡-{®î«ÐÜòõUP,çv“R- ›îoؾÍ—¶.ÑÔóæ%·î$Ça•<2ûX$Åm¯Ø§Â £æÑ¹È 0½é¨žcYŽW˜tªF9 vTÅ™7æ�)Ïg<ªÀ£‹¤GÔƒ&}¼�îƒ#ÙÜV®¾ó¶¡é4Qº®ÜI(‚&iñnn©þ‹Ø4‘5˜å7œK0›bÑå‚Ä£jTÏVÙõ7œZø÷2ÀŠðç$ñJ·ƒ™Œˆ‡ÅÞ™Ùã(÷¯´EpGƒ€;.Ìn5®âÓNÚR ÆÁòd>R‚› ¼d üV¦é¸9Þ`4Ûñ¶YB ¼)±B¤¾�þ’{ÊÙh,š”aQ/≑~8�è¼½†Éšc­xP§SÈü`é  ÄÁæ&Ì]e�mÝR`Ľ$…�Ë�kì•ÖÙ?Éc[¾½*u“à–;î¯dÁ«e¯ç]̶…úIEl½×WF8$ ‚±FÁQ~Ñ-ý��%–3jY9gÆ‘ªõeÀ#ÐRªSBå÷Å»·å»ãn¿³-[>Ï×K@<¸;‰„ß¹¡ü ‘½†2ƒKÄNùXO{~[¿uvá¨ï¬}úÂÑ·ÞK¯öõ7»ûœ‹"Ù³lÁÕ½»pQ¨§äRZç'˜nTþd¯sRʬìÌY‹a?Þ8r¾bЇQ ^¦¡7Žûå( ²ˆ.ö¨ 7A –ꌓm:4NW=:¸±ëub4ñzšls fÁ~«Õå–«twë�#'k1Rõ•�¸‰Ï<h¥a'pžÖ‰,ß’†ˆÕÍ‚ÁLâà'éõñÝ~½ÇíµmõÌ¿º}�‰´~Ù³ÍKÞ¦ æWksY,9mç½ožÖÚÍ´ÍBŒGI((ÙŽ{°î¿,Üj×\ŠÈ3ª (¨¼‚Óeüý)ÿY¶ekq¶›D`ßXYésñÛò±€ͲÈGú¹ÿ=�_/ í䕈a‡ ÑßæŠç,nŽ±È®€�Bºæ,ò‡öƯE³ÍŠc7” ©Ë<ÆdgþWØDsY1|rêÉœR™�pzù¼W ìƒSËà^Ps�CÍp TÕaÓ®Šë],·Ð_oIµM´ÉºÉw‚¥Ñªª°úí[[�“èÝý‰·îâZe°xI—=‚HžÃ1ømû‰½[-rþúo�J›JŽB?æµþÜ’ÇBL•'ÈÆ”–f¨ o@¤µdX.®ÿ‹¾HàHíèÀÛm¯¥é”®bË‹4Jó]ûÓ§bU ”^³è†Ñ‹6ö˜ ô�‡ž!1Ÿ&„ ¸.Ã`SHö,.ì¬íõoJf›Í™(¥|¬÷[Ü) G &±cE_Ù‡Òžód^Ÿ´£Eòc—$¯³q]úztX[÷¹Tjãט¤�ú¨¿‰‚¬£«Él®×Sƒ×·.¦É»­Í]zxQ&Kôà Nänóá0²u¾b*Nχ|âöÞ/U-¨O]ý¹ü]ÎÝΨ;tçØTsCºj`Ô°¤EµåüKb(Þ¹u³aI�‘–û8ôD;ÀyªŒI×Zùà-”ù‘‰[hIùÍîàëy/»,àÛÒð [(6¶íîú7õË Ñ’B}Ü" ©Ÿ‹ wnÒöVòP`ÄMÊ[‰™}/Tj¾WÓmt#aŸ@Ž¥2ší@äé’h´b Õ‚mÞ?”xèÅ¿è·Â!X­·W†¶ycS‰†z§ +Îî[o4tY–òä—q¨YDzlwÁò!G¥>´Óš rh6Šç›_øÞî; vp48bGwž·2s³]?Üïm×"Ã&ÞÌk_äºÌÆœÿgU7,MÌ÷�†‡Ú„Ì7Ûkáó‘l�U[¿…>e¾ÏoaÝýïÓ’)úâ?}‘„Ôz3_´»==€0QÖ¬÷.‹ÙºwÂSoÞ÷Îóàlì‰À®« .MÈA‹‡IÇçî7^áæÜh]—Õœ1ЫŽ/ðÀ—0@ªñYlÎôíº"ÖÑ—XhG�Þü¸µ“å¾l×ÎÇR%}£}oϺó½)Â�ªBH b‚­É’a|PœK„`Sy‘ÍØ2²óû ×@¹Àj¡Ô`™¾œD(ͰýBô_k ]¬†“¢ÛÎ_zÝ˵+¯»Ù·…¾\•æ¶Öû«Ï-Øg�Õå ¯R˜ÔPÀ·Õ¾DU¬¿}·v—{µì´.3|/øÎš\½aîÆ‹¡ì³èžÀŠCà=TA.Wo™7ý{’èïI¢¿'‰vLm?¸£[H{Ü™êZ®’"*%¯ ]@*;HŒ0ãʒÕ"Íôžë'üÙZ¿BýÒÞ‰€åP´Ûm’iÍ4Z�Ni¸šÚ˜ xµˆ,j¼ ´÷K—í”»o*l·Ä×û)ùÍI­gŠ ­ßr'®â¢eë×Tq‰Û|6M5sŽØ˜šÚ)µ[ÚiË vŸšÓEjýÛë½¶L»N™¥÷ÉÓú†ûhʂ떰¹O‚é·K'mŸ<Úœu¹ObèWMm—ÍyP¾ªfÃuIüü ]Ç6îw;Ú ü«]ÇâºÞ�6C}Ë«a[OûœÌ½30[ç[vË®ìžKY¶é€¼*@Îuuöžù“ûdKvÌ�œ0Àkf>wdNºâêüO™wEy–jNìµ?«ô¶Õº!˜­.õg,­6¦bý\ó ÃÒã[ë*ý¨®¾l Ñèý­ “Y<“ÿÞ”Hz¿Y[‚éž #‡.L©Còè!RE;¦‡îcÃŒ-ØÉ5J§”ÐC$€vO÷Üá²S¢g[M^ɱÄ�1êѰ†K�ÁØ10 nàe.–£”¶é´`½ÖòB?hn*ýÔËÙÂÍbosÚ*µ”š–ŒB0œ`Ú.�tŸ9tºA‡ÒC'Œ*¦Ö‘ÃVÉ£‡Hí�zˆ4ÐVIŸûfvNèü¶É�]“5•Õ2šaü7É0—×*—±]æbË\LwÒ pv“Aâ£TBcý[xM0äÑýÎû„g…ùe56Ô¹Ø0¶‚ä{&‰ê.MîÑaõºJÕ&M´ž¹ Èò*)Ô>r«4QûÐ֤Щ}š6i¢û%¶}ÅÔ5Ûd¸åÐÓw÷@‘T(QÍ)›÷4¼0V t< Pº~JÙGtµ¹É?fÏÓ5 èíêŒÚñ|6ŠÕ%}IyNß&ý/ö}ÿÇ'óõÅ£’�� Êï‹ 8¾²€Â•7êÝjËã»`·ÍOe ö®�ýË«!I Š�\˜ö�’V�Þ3K8sÓ�@÷nnî�ySF�¥:´OcÙ‚@bCDT ÐЭ—5-ÙÜn—ܵÀ1Iq¸;À’Sµ´Ù�Ç‘¼`P “:6@5Õ„ð6�&¥�eÂx¹`Ü�ߣ8è`­Õ0íJUT]:<*+ÆÀò3vOg“›ûvR%þʯF<Ÿ‹?ÔG%¨6¡Õ=Å]wÃLöã£Ï"~^óa\žÑ4äHÚÓx0QD\vàl4ŠÌ•�[uõ…†™ãié6uß©~Í‘ìcÆ)†ñx¶´P‘Ï 8i‘¹8Z‰z£Qõ6%;8’¶á"ÈŸ'ôÀV½|öºÚgZOr¢úãAÉá>åÔäÂÛ÷‚ò«c£!¥eéGÜxêð¿óü{5í”`°(ö3˜= íç1ëJT !ψ˜ÏxÇ`_ÔŒ<;WCΉ+/X|>â�õù.-H~q¼CJ†–løpwû*ÿHI„òT¹ê1‹ øÀçfC´[¯ÉÞºô¡¯po[>† øü³ªËHwÅå/Eãµ´K~³±}Hâ*b ÀØ›è'j´ÈDÝWÝ÷›|ÜD¶§Ñ\:¢ž51R0°K®ÖŒeÏêúš„ÌTÃI®ýû-{†–H§Î>ÂÀ q¦6ü™”†˜îÊôBÞ±¬¶Þ€@‡ª�±že݇ҡ=¯H7ï^×6�”¼ Á(Àý†kVž 3?œ¤nf†¦~,BAlìäñ •Ê%ˆ»@3 zÏÔ-ú¹â¼|ªÞ4ûãÒð"µJ´þÐð:¹ž’†W¨�j4I8µx|î7* ¾ðè]²f›]foàŸÍÊ/Ôïó˜q±·…±ÚdŠdy~u9´òb·ÌN•DPËév‰Yb«|ȬXòf·Ø>§{éMcO4ã™GJ@Äa%H'ÍbL)ÂÑër±¦f<Ë^r×8ɬßw�L¤Ãm§åó2ºÏ:õÑýæšÁp÷irqEf˜TØ©ìÃÜì$æ)} u™Ü8™Gx….¼ï#ÈpbŸ‚åjÁ -qÙšôðÏÄÇtî_©vu"ÄF�äõ™(mÆ‚ð¿7%ÎV´½ê-Ædb˜áú2€Xæ{s—º2Τ—k®9øD�PRI¤Ã(Ñd�âÞ;}™’­é'Œ'«èªÊä]˜ íñ£€nÄ^45´s¦{7éˆ`LxƒÑdßus&àì,<.^ÀðØpð^Ÿ;Ú×ÛRó°É³Á¦‡ÅKo8ºA{óËüÊ]ÞJ3¹ÿ¢7°ho)SY{nòÅnË.ÈÃÓxêëh£ÑAV´‡£æHæ ÚáçhÊâ3tñ(ˆ »ŸG³ƒ¸Þ™z6K¯†ugÕ¹à"/¶MŽQu‰†ÿX/e2ˆBZÛTÏzzšÉ%ÚNFõ„«È¡Îó ÷à˜‹·@¥ÙÇÂsLm‚tŒØsMDû>‘ñÁÇÜ œ([ĻŌ^|“Å` ±Q”Bð3S.ƒO—"‘å%²Ä€& :ê)ʶìš4˼é�î5�²bë d îäëtõsº½9={ú¦P‡-vXt:Þ2îÌy�8[ Sœ·¾X—?³ËšàLHP�¦{ k0Ð/-X!O)Í„&¬qÉÖØúŒ”±ÝAðè"¸¼ªI2 `�ñ†;w¶º âE°ÞP»¥Pqƒ8Aèí³,棞%¨wm2‚ jôæq/yúãÈ�Öjó÷„‚§Rvß›[ ûœ µ}rï0þ”°»Ê´;1î‚e×”1÷ véÉ„(ñÍ5ûÇ.]³ø¥øâWÙ­Õ¶àÔM3s¾àPó” ‡YÕªàÙƒÊGÈl�Ê Ðö¦ñ¿,m¥$Ϩ|›s†tgú¶VK1m§Îûþ~¼ ¶GwPvµ¹ÝlÙRê u_�ÿ�²ó!(ÊýR¡Tá‹#Yâ{aÀcê¶!¨ÕKìÌ� †‡åcÍ‚€'ø&~µM³@ýªÐ–BH‘íKmЪûõK]ÁÐ úÜÄ¢ôžÝ²•LïGµÙ|Ì×ñqíX°‰ÍûâPÍO?[ì®SI ì¼GzéT;â¨òSf3x‘/‘GùÂ4!e¡Z‚oާ[_¥r¡ìϳ§Åî6»ð?Y$ætTo2(Žm·akŽ…'¿h ÍÃ'¥×�vJ7W_]bžÎÝG®éŠÚŸƒjóhW^PÉîçÓnSlÚ<ÞÝÕïrAÂEø†¾„ .B%<`ÛóÙ`fÝvÁaÛ⬈g½®7%¾H…$¶Ñ¾} ÖYš]ßE›ä*Î7W27'·*ÓÐ�[�YOLdQÕûq†OóËž;G%·è7ŸÇW]«B¬­X”&itÅ/†rhD7ìêÈÌ#3*¿}Á,•ß³ðDŒÙ«²8iÕz£GžµÔ^שäª7KfœÈ—«`y•lWWY^lÿC! EžFãîq�ŒÞëó·õò¼6f€Æ�¤™Ѱ‹Ú#y³ºJ—¼ä`{{xÖ«uñâ¢w&?§©iÌ¢¨¤L„õ9ãz~£BÂà0s7¸H·îÂ)ªó®B"èY×XòœW]K ‰ÃkX¯nnW…•ÅÿÆÖ ­S–m__ú=ó(Ô‘šo�ë*GTYD–_m6fÍ{»¼¼|6î�^¼ãñ´É4Ú¸@Vü[®à/ÏÎß=þñ§ó’’•¢2í¾2Prõɸô´ÝÒC,±gÙ¤<©‚À&�È=ŒôÀºfÉV¾åEh<ê´¸Òir{ÅÓRÖùâjdTÚ¤õýCåOÒÃ�–+«Ëbý‘rI–äÈm×�5ÅL‰/ÞÓ<>C˜µTQu›7Áæ"ˆöió‘Ö]Å[æÄŠ5$@ W¼únOŸ®$ÚÈ\nSíÒo‰,[–m¸XMó«(ùÇážÇÓçé�½îé-„  Ç¡wD�–oœ¹Öø·¦üñ-ñîÛ.U‚ÝZ‰Zxxq¼ û·ð ¨ˆï«yŠ?K�.yÓ!´…óÔRëæpI´+@ûº\´Ú­W6H}ë °ÉÙcfáQ��öp·ZäA f_¯J­ÝŒî÷MŒÏW‹ÞÂÿ~çRh½áíUÛ@•K­üª.|"\.­€ýEøÉÄy7jLùB–….òè}a`\¦üÃê‰�¢Ò±?P�5.Ï¥âi)ÛˆÑ-T×IÔSVJÃ0ðÜò„æ@µKK‘ØØ¨¥dœ+Ö'�Ùäz‰ÍU •ºuÐÀÓ$¸lýüâ¼÷oÿc¾a›í:…tlñÛø@NW¾Èý¾Êk,ÿ<<8¿©ðzZ†Rñ˜pÚ\ªÎ’™�]$´ÉòÍïXïìâä噔*ùtyÉ”×!LE@õ·)†ôÑC樂lãÞ³u¡ø]mv+á3r§NÔ¨^Ü�·«›¡¬Š{ª[èo¶á+Xä ê®ÏÖë|ý9øÊÃkñˆ‹§!ôØW®M«Ôí±à­.ý¯m”TÕ?‹aÙù•C½èhöY‘µ[2½æ†‚Øö' ùîÂs‰±"fˆ‰ëØÅV´³vQ]7RÚ[ eµ?Š1òÑìÊÐ�,/uóƒzytM!¶�,¬ÑÅU$œ@Ü!"°®w„‡NãH^^¾ì¡CD—gƒ Ò†«ì—•puŠŽSÚ´…ÞÙSžT·¡âÞv?.ªÜ‰o³`™F§¢€‡ˆŠy£¡NÏ)wªA3ž¦Å…¾v•îÉf¸é’˪ Û>‡LÊæF³¯´ÐþbÓA0Ÿz¬Š~ᣀšÓÛ‹Í8ª))jðí 9uÁ­Äã»0È2žÑ�' )�¥Û\ºÑÍIÛLZD ¦o4Ó#§Eõh ü븕`È(ïlïaïôüRßpÜà|jtPC­ÕV•+’;P Ú$9­Bj'‰@[ªTf«·@YO RµmÔrzÉ\ 1¨Ú´;ág匽9»:ZÏ£P UiN±ºWD*�íD\�ëkŽ $ÑYpô³QF¹¾}Ø- žç’ÅdÇŒ ž{ÒÑ ^œ1Â{JÊ¥ðROU/#.—#S9!Ÿ�R,²Ãõ–šwSElT÷ú*ÍxLåzÍ6tâA�MD4�†¢}Q%Ë5iç°ÖrîÇå�z�W°^˜ƒ¢˜mË6i¤6a] Óáw€}Z| ž¥ã»èƒˆhÚÛ?=ƒ7PÔPŒ‚,oÙ ¤AH¢ 3/ÏÙ…üó!IvŠÁ<ú‹WÛhëRpK¡&àŠÐ òœ¸òâ^‹u$ÊKÚõxòù/.—tr–Usb¢SúŒÄèZr‡ë]S4Ä@×ŧ.VM݉1—îD à÷€ h_JIÀe_Ž&þ �¶GëwÙ£‚Ï‹mnþ„Çè‡Ò«½ÿGõ‹Þ§ïüË¿ôsÂïÿéOœïóDüLA«§ÅGþ½ µü÷qöåˇ`Ý[ÿ‰rÄþtQþÿ ú…ŠÌÞÇÁí2!˜(�#øû•ðÀÎ*?šKŸŠDsUó‹£ê¡4ßø‘'r½õ�ú�6«Eºý®ÕP.íòFæD 5Éuȹå|r9®u¬sÈZ¸ÇHoo r å×Gò¿cù߉ü¯'ÿëËÿNågò¿sùßá@ýE�8”CZ¦•¤øÆsçë˜c+[ɾgI¾^ÜŠyùö¸ÿâÅñrÙ?zùöRþýx³)þyÜÿkñ¿Ççç�Ÿ>-þ)ÿÍ#jÓÉ9LýTXüÖñëžšÀý©¸øŸúèœ|±pM¾pýºÑù©ïйÈ�~9Z²u§Ì0ØËþ÷pôï\hŒ'Ðæ)îë&³H›EÀ!Ky‘Åñ]²+¾X\áÿµ‘àéI[ùoþý#y£yŽÜt�úGKÁ7¼‚±ø{ñ�ÿ«ÝGé*Å£›ø=þY ŸÔ)d8ü^üë\ü¦�’ߊŸœÃïñÏnaþ‚LÅßoåüü__¾üQÒaýHJ¬G¢˜}ÇŽ²Ýbqô?…ÔúòÝú»¹?ñ<øòåïþøÿ<~ü?{›|·ŽØy!ëÓìúÝ›—Ú¬£«t8Ë®þ3€ÿn?mMü¨ÐRFÅwYR(e³Gÿ¹y´ Vÿ?PK ÒV1]=imunify-security/assets/ui-app/assets/static/nav-root/images/UT ëÆ«jëÆ«jux è‡PK ÒV1]Dimunify-security/assets/ui-app/assets/static/nav-root/images/common/UT ëÆ«jëÆ«jux è‡PKÒV1]< 6ž·Wimunify-security/assets/ui-app/assets/static/nav-root/images/common/contact-support.svgUT ëÆ«jëÆ«jux è‡ERË’Û ¼ïWL‘3òˆ-ˇý�|KÕ:–«ü’—X®ýúô`'‘@0ïî­¿î{zœŽç¯ÁLµ^ßW«eYº%t—Û~å™yCÓî°Ÿê`¼\†–Ãg�þ ÷Ãnù¸<ÃdKbzm³y#<ëëÏ:ѯÃñ8˜Òëkšho¿�»Áœ/çïÝíbès0'éÙb9,ÏÎÙ:ñÄÖ‹³¥Tl½ÎÜÔO¡>msvÄä‚ï"ùÔÅ긧fÁ�Ú'‚nì™mž™rD< N¤Ú”Éù~¶¢ bAm÷<>!mO KªXÐs.v2wqÌþ•!Åæfè‘v”¤‘J� (4%©}ôÿ ¨IUô?Ä÷<9æ{”íIQØg—ÁÍ”¯Î[_´X¶íZmÓ£JÖ>°¨�I�È))\kÓ#_óÍSR¸�)�n ½™]„ .ZC"<¢³°lN/làŠ e!íÝDl éy?GEአÀXg¯àµUä0X(„† ìPPS£¹1¢ù!*‚6ÉjPIúí gŠ[³Ú¼­õÜüPKÒV1](K<ÃáNimunify-security/assets/ui-app/assets/static/nav-root/images/common/loader.svgUT ëÆ«jëÆ«jux è‡�˜KoÇ…÷ùf“£V?ª_†äE$È:;¢%´(H´åûïïwzh‡ ¨ ° 3==Õõ8çT�®ž?ßM/ÛÛÃýõªûÇ/«é~³½»?|½û¼Ý¼ü²ÿr½ò“Ÿ¬ò»š¾|Ü=<_¯î‡Ç7——///î%¹ýÓÝeôÞ_bð¸åÍ—Ýöáù�¡÷~9ž®Þþ0ñsuØv›·ïö7·›§«Ëånyr»yÿ¼\ŽÛÇýîwû‡i{{½z¼9Ü_„Õô¸ß>ž‡�.ÕlÍ‚ü ÙÕ˜séy\ú�¢Ù+«óänõöêòxèѣ˿\ººŽüqs·‘#χ§ý‡Íõêaÿ°ùzwqÌ.�ßow»¯u}ñôiÇîÍçÍÃþövuåböÝþn¿šO7Ïï÷O¯WãrwsØüt‘�?ót�—?ŸX8±òÛÓþÓãE|ÅÐ_v^3³¤�TOû=FWBö¤l6—co-ö4­cr!§æ­ÏÉùsÉ-O¬ŸBõu.÷Üb ëÑ\L¡§>{^j²+&² ÝÇæó]Œ–¹±‰ÕƲµÆy–zë9Ä)Wki¡†¹8«¹öš &º ÆbÏsuæS-¾·)WC1¬±Z{옙’¹Báì¹¹ÒCPHXh®¼Ãp.–’ŽqÔ{I6.sð9Õ)4g-éˆ9j Ø]‡Žk^^Î�8²e’2EŒ¥KKgû‘(ÎæòÝùå?W£š¿ 7ß°ô£•º¶<0J…þ­pr¼†–ñ–Í8‚ÈÖòÜ¢©Õ•ækUvZö¾öD~cë¥QŒ)z×¢¯�4›˜ãØ»fs�æ{Ès`‡…˜j›‚JdÐ+*;¹£\S06”œÁ a&vX˜ˆ$¸ÇÙÜ\êÙ³c’µž9{æ52iâ,‡yþò8úî“'Œæ"j%«œ ×�\OÕ‘þìK ¶œSN*EçMÇFb ¸‹óëîR`wMZî9‘¦ XAjÁ®Ò”{-ÓÙ\žÔ'}G}Ä 2 sfdÉ×7‚´ Rp²N Jzkª½•2w×C7|�“yçC®ëÿШÃ:A è(g;ÀŠGR4k‘ôšü€tª0/E•‡»oeð* 8˜ O-IúâGS”±JÑZËgÁù†cVfàUŽNdg–†‚‹Q߯:€jU0 ”%µ±ùl&N²›ÿ{vO°¿¢€þ›’r †ÎIà°÷ñæùÃ0© iêâÈËýö°Á�OÏ›i´µ7÷O›÷8xìP8È#þêµWL/®®wÛÇ‹¦î^Ù÷ 0¤ÜZ‘HÎ§Í ÷ä‹®‘â”, |KÍj "H‘Ž–Áñ¦HîÀY†Ml¾¥¨MàÈ©Ä"€®S—(läV @;i¡óIc]ÃM¸„âçHä•zg ky³O bºùø˜†Ï¼‰Ä4ø�‡½#D@Ìs¨< ÍÔI$¥ÂR *{3Ž“Æ”}!5L¦ðbF±„ñÒ]vÔu"�¦¢Ö¸¦óù<Á]ý'î&•ózõéi÷Ó� ~þ,ž«è ý»üKŠ ‚P›2èŸÈtñ~t)AõƒyUÜ úÓXÐìB]'£ÝÐMG�èÖvm4aŠLfú˜è¤vkä#çes’Ät©‚¡Ô¾e C¢žA&Èy hGœéÇ>u@ ¦“¬eo†8xÙ’D¡˜`›iÒ�¾:š; ÒR]I9q¦–YEÙ¢P’¢ QA]µŽUéœS‘aJ::- r´”ÐðS-É&¬¥‚ÈSwâ(-GÍkÞCHãpNbjyŒŒ!`_ØA²à…�ž® §=Ø�È£}½Jb•ðÖé2CäÑήgg¢‘W$Ô¤�$‚$š�V«²§þiÒ\5ؘ¦/:%¥ £)*¥@M«1eÍ@Zå“ðãM±ÑK±`qHŽ©¦Ò®S!y·’d?‡Ö§Ñ ¨4ƒ“úM …AŒ÷5'ÄŠ®Ìj8Xï"…I³N!ß±k 뉓éSj8Ô·Ô0²€‡‰Œh³\Ðf\·R}é Gâç†ÖA–º<& õK‹‰ Àí« %M©„O‘Ãt9[‹ÓÇï(°IpR‚ªDaúÈ‹"ËA¼jjÝiÈ)W™9ß“�ÈÔÔEÖ6@î�è®Yj .#™Ðrg¢VÙá>!F¡œ”2؈+8ªÓhÜó€EªÊ�=Í?šoH�Ô^m!¡„pI%.TMƒtΈÊ` ²”EÑð×ǸËÖÆZZ n˘£¡²hÐ &`À”®ã�æKÆé¨2xÍ˦®R4‡wSÄ"0³~žÎdñ´0ö=ã/ž ö 3‡>)Æ´nÂ"¦¬Œo•¤yßí•BfP} $B>+ä?ª£Ï„�9Cæ`�Lññ9#�Œq�-G3avqôu$î�u¦åã ý…(³i–ôÙ44\�œÍdX?$4Tu}QÑ–Ç@*€ ‡ƒ¾l¦�ñZÒÀ€  Ç‚ï¥cL�ƒªxRVg) ‡r¢Qjud¡TôX¤©ú<@k¨¦à:€Õð¨)¾iIËžf+ÃX`<TMò¸ˆ©gËqZãòŸjü·¦úíf\\é?oø?PKÒV1]¹U±ÿ« å_imunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAVPlus-grey.svgUT ëÆ«jëÆ«jux 臭YM�ܸ½çW½çhHV±Š vöAz¯}ðm±žØ8¶±žx6ÿ>ï•(©=È)hp£DЬÏW¯äŸ¿}ÿ0½>¿ùøxêý4}|zþðñåñTü4}~zýû—?OiJSïŸýóùÓ§ÇÓç/ŸŸNÓŸÿúôùÛãéãËË׿=<¼¾¾Î¯2ùãÃCI)=ààÓ/ùùÃôåëo¿?¿üÇÌ–r6ç㯿½|ŒÃþúÇ¿?==žž¾?}þòþýiúýÓó×·ÏÞ?ž~•4kjej³´ÜÊYòÜJ—«Í–‹œÇòu,¿Û÷g›{±}{ŸKÏ­îû×åw›a?ÕðïéáÿQQuNR„WVS9k™»'»æ<÷,Ë'ˆ’L&ÈPµO9Í-%§¬V)J·Øžñgês‡ÆyÒ<ãmƒì­×F9×T7yÑ4×®z¬§9µÖö÷¥ÏÖTâ|­¾@.ÞãzëݸžÜC½\õÙsjô”emgisʵ_ÇóeÈÇ{³Ä�sžîå¸×ç”ôF/›µc}Ó[êÜUòndiÖ�u�»ä~¼¯³•f»ß WßÝ 93(Ã뇈˜\·P‰ÌÉ(£y2·¥*u‚,xÎCK¯…róJKO…—ŠW…äCL¡tA²6ïU)¶^*e¬¶ÝmöâÍÃg¦<®ˆ †ði-9r¡¨c•¹o[gl%Ša}Ë…í|Èɰß�\2󲫧‚óJÛÕ‡ìeMÅ0roÙ#¦ fïòêžÝm#ãïS>•J7øÊä*Ë.+”3� […OꌈÈTÀ�Õ–QÂKe~Á�›väŸk+™Ï%!>õÔ7yQG>'=ÖñŒ;Þǹªe?_ë¬ÌÃí~ȹ‰íêíòª>�FÌ%ŸyNW¿ây˦Ë�ùž:öCVõ°+•õ^„Ä(kÓF=¥zÈ]¸îÌÜÝîîMOæ ÷oë ²´ý}ø©H—ýüÊ:ENm÷Ó¯Š\ÙôÛåUÿÝ®žë°÷N9�BJSyK—4$n®¬KÜ‘—!31•`0Åã|ªpN]ÁÆù± ÆaÎÕ êp„\‚9ä¥V‚I>ÖáÏýx`“­çMl]_ïG¡¤žý6yÕÿºÛìïÞiW©Z–!ó½ŒÆk%åÀjÔäV[=ÔÔ¹æn20�jJAN5†¨f ™n( ŒÞ×�ÙUoÞ�ä’�óä~sÿ–¡Þ&®ÚoVÝ' ˜c��k£·‚:VÝýX>ý¶4úmûÖè·ý÷lôwv” á²=ÜïÍ®› Ê¡ YSnË�i‘d$Ÿ±c¡y8€qÂë¹ š8Õz­ dC·™DYEc4ÑáVL¸=!Ö›?V]®ŽŽQDÏëêb쪉gV/�GdD"I™W¶¦T¡¹å•U�^Ý|A†3Ó­Üåðî¸}xâ>îuE¶Gw ¤¹8˜MEËH;I¸´Ã6q>·j�ø®Í/FëĶ÷Ά¬FÙ\Y›¢Š–‹±zÞ·�ëî£;Jþɸœ»”è˜:*½ ì‹ *…MnF�£[$tÜ´oKPŽ™%ø ¤+<©ØŠÿÙ±. šû«µ‘çႚ�},Z7º 4 ³û''µp»´H�'"˜ÌŠˆ1 ÙÍXéH>"BJb ;? `"°Qù½�·š‘Poì¼SàÉÑâÁð¼›-` FIB—ÛÊŒkð€ZéAÎR¼Â© '™¡¡Ø!‘&x��.îÁŽÀa2t¯€„•ÒsD}¾×è28ÒʪFn`E(Çæ`aJÒÃŒ*ïôl¶ÏžPÞÄhèIõP˜QÆËœÏ‘gTKIŽñÊÒûÁØ;¥ÒÉ+¡Æ+²‡Qwr(”i ÄÂC;˜Ô "ÂWˆA´…ÓбÐÓ•ø*LÛH$ŠöVÈ3�¼I݈�¢£E÷Ç‚]É.À æ<¹”©º6K€á’ÑiF(z£ú�F2F•œM €?„=AŒ�†iAÐCe̦ôÚ¼0E)B R§˜™B�©Áâ$tãã S­vžßQ³+gíÈ Œ|A¸iXæhœlÀée/sPj¤v �x�¶D·*�Ž›‡"åÔ_¹íeÎA¡‘åýhè�²ÉØê茂„2¡”#«@PØ€Bœ•CkуphåyC=dºLKÁðke $„ì ïUî'Õ•z× Ž=¨2! ù¥ZƒÉ*ë±0¯R�Å®)²Óy—ᤓULŠŽ…ôË…i×€qY,­D¹ÜiEaÀ%"¯8‡)£]Ê8â#+Û¸uÍýü�’®ìלÕÛªFv¡Ìb”É £‘]²Êpk¥S©4�$F’*T¾1‹c´ã Q 1*€㹞ÓÖ䃇01’‡C‘Õ•Žgc¥CÈÙX5(|)«ãsŽû2Y3=äÞõç9™q¥)‰;„£â\�l�½Iœ—ˆ¬Øïa¨w[}ëŸû8}t*ÓÀ~æ¨I8Í… ÐÈ�Iºuß{U†\ÓÚ~›¥˜LzµÐ9‘RI2ŸƒZaž\¶fßUï„V ô8�6wø–HV˜ìLĘºZ@1>›�6l‚ic÷h@¨-†Ý¼ì½ƒOµ­EÄ9÷¼1ö>$˜†Š‰Œªwˆt€­µxF•·è·‘¶æì· ÏAïb‡ üÆ$*¶‚¨“$£��QedéTX©ì.�{U¥gb(ÑHªàGJmšt°^<§Ç멮Ϳ—q âSU-šJˆŒˆÞ¼H6Xƒž68{„D ÛÁŽR„ÇQkÓß܉'±M­)™›] 6–áh:WWÛ¹ÁRŒ—V8»Ænƒÿ æ­ûœ!£Ë­¬"ºÉç& *®K#H§›}‡Ü2Àrã÷>§µK–`Tç„QÀ2Þª1ä4&È ’ekX“wÖÍÞÀÎ�ÑïtqÔ~9ö5`êÍùAX8­Û=G¤Ú‡ D‰äZÞ,‡�mûLLkû@}øœNŽ}¸ßÇ9̦CðîW˜"ýÐe4¿“ü1÷áÝ3Ô,¨¸ ~ƒõ1íj½ÀÊJòÞù¹°)­Æ$].oŽ»S�Âk�l ù~i  ¥FÅe²¾öW¸ÖP ånº»rí^oeg›ØBÖY÷h´ø-Vû¾ï�×ÐSÎU¶{.­�Fmñ‘u�^¤ÄGfjÝ׌„W(K)7_#ü$~$Ù”œÌÊ2ȶF�·°,ª¶BÊ‘F#=Çê°”Ì6–6~÷´²àèzã!å$–bqÊ‘zX ª‘úápãh [@Î#@÷‰v fT�;î¶*W~¿ qí± Š1xLVÑ1:©l©›|îèÍ)£)ç–|ì#nvœsȸæºß^8 EnŒé“�™ =Ú•°[Ú!óÿF’Ä�`]öçùÚúžEyTþŽÓ7ù<”¸r€C\6¥1 ñ‚ìœg¶ïaøM>ã—Í)û¾á´ýœ!�{®ûý«ï—NðR9ôÄ‹ªA �ß|odšyfïmn¹‘Ãm?Æö&ÌÃþóí;~þ PKÒV1]IÜý. =+Vimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-myimunify.svgUT ëÆ«jëÆ«jux 臽ZËŽ\·Ýç+.�6‡¯Ë‡ì‰�4�Õd—l²s¬ñh`eF�dIþûœb=È–®Vz#õTóU¯S‡Åþñ§Ïÿ}³}¼÷þñùéöœ?m÷O¿<¿z|z¸=ýëŸÿ¾�~úëŸ~|ÿñaÃȧ÷·§×>¼}ysóéÓ'÷)¹çw7Ñ{ƒ'òòó›Ç§ßކÞûÍøö´}z|õá5v¬ííçÓöúþñáõ‡ÛS}|¼ÿô·çÏ·'¿ù #¶ÜNë!à GzØ_ÝžÞÿþîן¹’·?x½½ÿðÇ›ûÛþ÷üÛý˧ç§û~}|óæûw¿¿¹yÿñþéùÕ«!yùîá?ö/¾ËÝùЋo/¾‹ÙU¿·_ü…'=¿ýù—Ǽ ?œ6ìö�-&WRl!nºWúpÞ0-ô�}Ù’‹e/q'QÙcÊy ®–¾§°ÅÝ%ï1eóúS‹‹m{Ù¢ËÁ�Åõ”öž±E),ª®Ç^ZÛŠ«©Å15a™R„Õ•6&¤ä| ؾ9ZÒîö­óèÐê¾…àä|•÷ 8<ïºK5x¬ µ…pB›ŒECTÝct1äíš«‘T>2ÌéæJN� ûÐwë.ªS Cßéä0O¯ãŒ¤`êtìâö1c‹Aí°/S»k)ÒTX‹­R�>á`äϰC6ìsô ј›\fï…æZÁ*{†ÿ:�´”JŸºƒý-íÝž`jšÜtߟŒapdÛ{"óðŠÑã¼Åå8ÎvÆèΡS]L>Ó>Ñv`ƒ¦™"çÀHWsB_¢F“SŒ�™é¸bªT%RvÁ¿¦Sαó–ib��¬(†O]¿ÆZ¾Wrwj¹Ù »Ž]1§ Ÿ"È í56A®b“é³õp‘È3Ît¼1ÞËã �Ù8Tà™€xè‡Ú^ÍÔÍ 3 ›:ŒcSŒq¼SÐ2V (ûˆ?¨L‡�#tY+¨ÜGŒÐÜì2™3fx[e¤V$° „B�̹{ ä-6—BaWa?¶ÁÀ\dàu`ÖÛɹy"2IDçˆ#pšâw kU€RÏÃÝDvD}Ö·º {‘’pJͤRsœ-8zˆä,u5/!ôía~ÁDWV³#ÀúD ×Å œÓ9±ë€¹’,ȉ]«!±Ä5¢uä»nØ5ÃmÀ �2+�ÙRs¼‚PØE &d ™‚’¤ÖF:¦Ì‡"CE§ëʉ{„G²0£’dšb¤ÖÐÝe.v¤Ê»¡°I*�*:Îr¦9£rEÒÙ³Ÿ‘�ZG½£H§ÙÖ¾¦«9òðÁklãsc@¢dᢋ“�:rE ?4û@oÏé5ôn\Ç(«X3XH †È‚Y‚xŠ…!É*ßÀ°á$pª �\òr{•P’³>ûYÜð}M£ eʶaHrg¬c;˜…+­½�uÙ=¬°޲�l†ê…±«5Ž âCìh°çð;�`œGA ̰šr¢d¸t`ë«ùy׺?(]ˆ†»ã±ª†„�Â=º’9„ª2ü”(¼‘ð’Ò�*ðYaOÁRáÀ;"0lëê(øÉFÈòÛàɲ˜e»zˆð31IVu›U<œ¿ II¾ í—…|0�³&ˆf©V�¿6ÖõÈb±‰ºÁ v0ܶl*Žo¬#"�Þ¡›�ú›âO̦ ,E†âU*e6j&ðÒÕ�= ¸SÌvfï€e@øXæäêñ‰º²©1LÈ$ÕE>6–‹Â̽&6–Dñ‘™#ù—×`Á u“˜¤€CÓ,7 a«†˜-4”¢Kd_ûj^îII?ü#y·õ]ïÇÒ?î–Løïm]¹�mð\áPŠ«È×ëšð[ë^/%B7>·Ø%{²šr$„Æ�1c;³=à^+|…"ªÈ ¡×ËO ÂD³Þ/E•\”’R½€�Râ¦�2"­cƒí;oºDK _ $)i:ªGåkÀ®ŒÙçƒ0N­¬rVµÜÝ*&{1´“U“×ý†x.r¾/‘ë€ýõhEqâB Ð`†·(ì³ûÊŠ>iý¹°¢7À[džeQ©Ð$$/±Á„§ÐÞa·‹4„EyÙ*´Hº[Åi :̺_K±DTX]¤Å‘Ú9*,Á…±£þò� ¹ySò ¹t-`ä#“ë Ûe6ó }¡ºÊáÈæo|™�¸ÊuþÓ&Vå•|SH]½ÛR*ÛPŠa¦o´¦ôq²‹í)>äœ ú”mBà�r*\”xærÓJ 8ˆ-W‰Ùœ@ìGþ+(l�pìÅw¨)qÇßF±µ”®ñ1¥+X-Òª5±ÂÈL¨jq V¢` –w˜í-ý³ÖÛ굫BU”¤t%WSvÞ î ã‚¶ŽœôÐð2Aº1Iz–¢]'œÒ7îfÁ/‘«uQ®·Èª’лEºÚ¨D»qJç çUZ”-@6›z¦ m­‹ÓƒŸ(ðªšÚ˜4cìF,W³íÍÐpެÊ1çz�e¹DSÅìâ¦oô RH¨Z…ÙHSºÚg�Ú:<–®x´H‹bæž\–"â8·˜7"+¥‹…É»²ÍQˆó¡%ófêP�€ÕäfŒž‡-e 7 u#¯·¼½+E›²óp¢ôâDV’“]«gj“ÁÙ÷øªJÓ‰[¤�§€Eá¬uÃVëÎ_®&YÜ“êaã4‘L È~}‘°ÚWUÃT˜ÒëýGÌW³6XWC×]ü`©E##X£k‘™‡ïéŒÂÄ#Tº$î(ƒ¾. 1)äK/€rJ�ÔA%¹xLN™\¸WJGðÉ ¨Éè”Ò/˜ôbñïÂD”r­\FÖé"á6Åî—+ ‚�´ºr“í¤ågÔj‘-TnJW栈Ѯæ±tåq‹tî­¿7ÏÝ— Y—„ M%íŽ:m�œÕ>ób5à¤æÙY—å[5é¾/ä ÒÙãîFø#þ6ê¶ÈV 4é$ZCòXz”SÊdc··µII°�ôµò²à £9Ðû ÖF(9ûßÊšÈâzaQÎV’ÞÜ�‡ÖYÝ7Æ6°®]p;D©‚¢Á_×*¸nŒ Â猰!•2÷~§"HCê¾ÐÎSc€˜^ÒÍ43ãÅ~‹à‚«AÃõ.œ)+×¢çÅZ…¼.âhÜyt1»t±ÕMôÒi�Q1-0_['륮 4� ö�ú®^Ap× 0Mk›µÁËlX—æâ8¸vqçi£•KÒKü=ef‚»U¼4#h³ù¼u Å,!îç 1w~xœ�&|=À’:ÊUO*oäPЇ¹jý+ÓrµÝ…ê]‘} ã‹—Uá¦=¨KçÖ)j 3*«ˆÎBB•™2Óûn‘®6š!uÑÇ9ŒÀëÅÿî-¦×ÎÊxœùŠR.bä°´Ï⪄ØnÒ|ãH¯ézÕ£&WT¤á�³³"cwSDÓº)¤ùð•ôl$¡¨Ôa[Ñ[+pîMÝEëé)éõ@RµYD¦÷Ý*ŽvE"qe2y(Ä ÍçEVô9Œ>·C~p©­wdë�P¿Ôž­åÉ—t×®M˜—Ãi:²éå:µŽ­N~caK¶…Y/ÛOÞ;�:ã‰neÒ¿X„ªýý£à»bè ¹Ëwã¨óBQ¾!^“z®q™Ô‹|éî‹‹—þì²ÆEƒöpí+>ZDýeQ°§\:lÓG÷oˆ/�Y v�ÅDMôG%«ØëÏ'•t�ºÞôI&w2}d?�#t~ï¯V‹×Ì4Ó†b�!«¦ºÇÒ¦·Õ;^�¹x›o:´—ä^³Ìù“·Š>ÄÓ•�ãC‰Ã§ovmV†6:L¼kòK©Eh?U¹»/qK G=’šGÈ9ýz!W«¾´_–ÞñÇÍ…ªuQiQâ!mòSЦʊ�4,­ëÚ«ÿ*­†µÑnì$Æ@JÍEþùzwíîô V Т>’¯¨EßâM0%IðÚ|¿§ö;—¿Ö&§›¯UÆ:×é(Íüh`gÌÿ˃^ÍD}^³–SFe'«åì�u&½i^˜³Z·p. ó¯wlNyo_‚©u#+}_ŸuØéæ�þyÿÿýPKÒV1]B`€ÿ´"Timunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunify.svgUT ëÆ«jëÆ«jux 臥šK�$Ç‘„ïü…ÞsåÄû!ph±XèÒWÞ…âhš@7)ˆ³5BÿúµÏ<‹# °<ÔDgDFxøÃÜÜ“ßÿvÿ|ùçÛë/¿}|zùòåïúðáëׯÇ×züú�ÏJJéƒV<]¾þüÓ——�Oy•§Ë˧Ÿ?¿|ùøÔæÓåþó§¯ÿùë??>¥Kºhö¢‡?|wÑß¾üíç××�O¿üú˧'�¯ÿøŸ×OŸ>Ý?ýòëO?�ë¼öïýòr.ÿ�”þ¼ú?]~úøôÜ۱긔}´U_ò1÷�y©½\ßs=Z«ïoéš»žN¯¸_ë‘ë<—xüþ<ç±öcͬq¿®£ô~Ó»Gªóz”=5Üe\µ´]Ë1F¿]O�Ù4SWÑoNKSµ÷s|ì}a‹Õ´¢ÍõÞ�=xKB�ÆÂ4Ë%KÔqŽËÑR¿¯côñ—1�2FH˜c÷}ÕþÈ2ÏõW¯gÃv=wìÈÆ)>/†ÇžÕ²Ì~TÍK̪cÓÖ�ú*ǬEW³(£´ê–sÞ­‰¿ô¥e?µVÆ’zç–:SíÈ/-µ#uTé#õ6ÒIš”/õè•ñ(Kkw“<¹OsÄ¥I�U/°Q,\…¿g¨ºŸ+®±¢�#—‰tM¯�Í6}XðåkêZÅ:Eˆ:[ -�n“ZyÞZ½ó¥Ôc&™Y+fàYKÜOoT*‘Jµ`ؽ·sm“Zò9Öo.Ò®ü©,ô™cúú˜Öüz·±ì?y�cŸrz®½Ë”k;Znº…¼I—†Vv‘zö±|úæâ%sÓ�Ê9Æûºb.L ÿˆiä)yò¶ œ³wÄ{çêçXËòþwaäéïÏÚO&ü× !–´UwȸOËøUN¸ç¹Y‘R:YÙN»ÑF)˜õ”§ ë'K}w”´;޼Ĭ‚\o¯k\Ÿ=êõ›*úÝB|“HâZ¢)7!dëhÈÓ¥ê^¬WÎì— +U¬]ìzÓ�¡åR ^–ÏŤnÿ˜Ìþéç¶xbzŒ}Ä7­Í£Éÿÿ•õZmòí¼_´¢î|ÏVF,üQ;Ìå›7vÅU+BU©N˳ÀRf˜º‹Ôœí�`Ý%Æ/ ç»î€pÖ›‚¸m¤rÜJ9˜%ICŸþ©‚ 3`<Üw髼°1»¡|UºãÞ¯(M%]k ùÎã•mÛµÛsô[ek`EÚØýUšßй¤{]8¼?}ø?“Äü¯z&‰Ütñ¤GQ¤s,•ªÂ4ãA›ë ìÚ‰<úŸ3ÐÚ1F°ç±l~ÂÅ š*+–B]±, ïu}Ì[»…Ñh(­�ÇXTîÊ&#,-_itùIu îeÏÝf•E§þíL O+̘iç�8¯ç@jãž —æ8oòǹw´tÃ{dä ¬äœSš®ÐœÔŠ…®�»µºœÍJN72Sõ¯Çr”Y,Iè÷"Çí�¿ GÏÔ›Ù¾Vq“ Š“iä›d#�º”ëð¡;´©U²Š&�AS‘â„�rGÞMÅÏNlÐ"c0sú2l« /™D‘ÄX§-§Á?×À«1Ô’" ”oh&t®Ý)ÏsºŒÚÒ�0;mkJ~£ta��¥!ÜZxÙ&É$ûØ:–|dwLÍwŸŽqËT�¨t«1œÞ z;¦m°v� ¥(ñ3§'9D¨ÿ±p¨Êxº�¡·B8Ä õ*±¿÷ŒHÝ�– O’3©sjw¾ƒÉnomK9•—goX‰yñ2<žW¹CZ,ìN|•;~dÛ¥eX™Õ.5ô¸;;èBŠ–Öú«Ô±d¾Úz(xk7g d;4ì Î DbNăcY® âJNtv�…œ8´bcD¦pÀ È2›+5„�â´T‰O§%g%Ÿ­O7½�¯P„0T;MÔ«C”“}vkŽ˜× bt7 ACP¦jò”Р\˜õ�£ñVí³åE"�ðµeÓºezPá©Ö·ðœ˜³·˜zà)W§Ãá<ƒVúÐVâYŠâ’ò]Ï•Ê7rF J“›Ôé4aoÈ\�Û[Gåvï.äQ LyB éâu4GB1ȘWA+u¸ýÚ´QÉ‹õuŽAÞj*PŒ¢pŒ^AúÃjä#¡Cöî+í‘u—µÞߺ,8/ãĨ4oÆxƒv3I#Ä̼ØÂFô f. üþ1Öªv7¿~Ñã-ÌÐõ…ÚŠ_pÊn×lX4 3¨"”›)¤ÆBxt ¢â›Ý´7‚DeÈäጵ%R�^p*ª×‡S[/\~‡ÿ-.?ŒŸÎE™9aÄ#�^bÝÝɈä“Û R%ÕZÒ !w�'hð™è dbÁ§$»{vuDX(¨|L©v²ÌŸzÁŠî%  ={ÍÃå*erÓ¿$&à˜›™ 2‚:¡*Žç'À½îRô wÕP»”tGɳ;L�zšÄ@U�Ò‚›ü楈‘Íé£m»Ü:[äVÈS |+�ÈžhßñÙe¹ír0`WrKoËvtõÕšy•á( #»ÀqQ5 lcÍ~G8�D° ü[Ì‚8�á ZÖ| {D>gfã5ðK…gŒE²Tx%œ‰2MÀ³íÕg„?—X�nÖ%h"ißz³)bŽ<¼]46¦²s=ľÚKb̯ƒt sâf˜KÛ† ¨iQ��cÙ$w{Tô‡Ö��Ì Du®nÄD2ãRá�6m…K¥Ài®ò6ÒMwaUæn>Â*½­r".‡(ö:‡æ5®Ûp³¡ìu¦YG¶qeÄì~޵ËÖ£`Vqk§ëv5a‰Øü|„ÏU¿£¾wJeR$Vš¼eo¦hÆ%÷zX.b¿®{DëQ’“o-ÙïzgÖs¬ó•9’)#qµ‡Ó²Å#��tBr'¡~·ÎR±m‰+ºRÎ4<›'ì¶vº/˜e7Q‚·DUÎØLaZ‹{؆°ÎÇÕ–� C¬ß9Φ°Ée²Ü"(v»µå<¸e9S…“üï)D5´­A¹åOPÙiêæÄså|3*ç�™ç¿[º…j »BÛÅ!ÖÓæÝ'Ñl(N _™¾9žq}´}Æ õÖ“þÀWUÌ´(@ž¶fsëh¨ÌoàÁ9æÆÖÄ”2;Ú�R_°|‰7ó©¸aüjé1Öñ}ؽšpŸeÙGBß{»ä6G8ë75^�W ß߈À«ª¶^뫼Xå?ë!�âÑð^ÃÛ×sÜ@kç7ѵß�PˆB ÇœEÜÀ‰AѨ4}wó�é«/áÅ7æ#­¸ýÃv§êœÿàÐAèb¨ÃmµõMðv£xØ{p­ûú{Âúž›~Í\îÈLÝVÓàå¦;=½—È ïo¸}–%áö- X#�¹¸`½F›¤TºeÅi™q÷ÜõXRè»6 U„šÜUÒµ�~wWE=O1‚¬r#_ /(Ò8,nmß(Y.g<ˆ™‹ŒzŽÅ�Z®IÔ³g;¡KÑ`MWwîl®f-–î}ÐVc¤ˆ™›BçR@ñÛÕü�þ){Å}ŒLU_ ÑݼE€ˆaÜ,ÚÜUœä£ŒÐç‚uÞœ>Úä°E $ë³9Wîsè¶æozÅ ÁõŠê«î›WÜ9ÜöH暯¹¬ïÚÝ �ï(ÀºKNÖš†›ÜKeaÈZâ 4ÒÚzÃ�çyßÐë ›ïyž´½ Ÿ¨4œ ì�ª+œÈ°ñpM·ìT éJゲ&©`pãe³\¡`|-ÆJ€EŸ¨¡DÐk0m€K,÷"×@,ñ9‹Õ%ÖèõG'+!¶È­`kІp º¹c>³’%uÆ>Ã_cÅK93›jA2·ñdÏm›@‡ Š(‡ã<’`+öÕ%ä‹Ç˜¦YýMïà #¥Å�k¾Ápüæ%˜WpxE9;)´³’AÑÜyâFÙõ™unk5òœÓE�I©·³›XhJÕžï˜÷ç€ä�†z³8FwÅÇ6gÇ€mÜ›— l©l¬7¹:)4Æ\´+ªÅ^>yÚ-«a¼›èõí ’O‹2[ãh®'ïs@s >ƹ*ªÍ»œ¾z�P5{Ö3>J¸v3xD_ÇŸ Ü …„‘ëÙÆkŽ<N_ÇÑF“·Ë§p�mŒÌ#ØZ§¥ã†=Ío0¤NÚ+£ŠNB£/Ã%‰É‰$ ù}æ1èvºyމÈ5­°’ž ê.Š eœ]šiê:ÝÂØæ®P#½ºæ9.€"ÊP‰¤Ðd.ÊE'äéFß4` #úŽè騊ٓXñj6ƒßŽBXbIæ6ç€nØ=Ïx3Æo°K’�¼ m .ÖèÅö«-wÕ£>\ȧsrïçx(À-ŒŠMêö°:(ÎgT6;6i$çbž ¸ðÞRŒPËò*7½LªGC HÞd¹\JÙ-ôs4HÏAn*·ð†ìä±¥#msfûGV¯î/É=gTÙ»=+çt¾(*ÒnòGØ˜à‘…s2»ÄŸn´bn§¸]V\® Óé Wœ��ñ.O§|Ü©'£ž 2©*‹*;=@äæJ-â»ñ eü»¸Ìëù:íÉ –¥¾mã9Wç¨M{çV\>ÒÌ 8Œ £³] xÏîq8Z–Q@œ#ñ±ó= ¸pvkv›Ônáüò7'z¬rÉBû&¡Z>!–³gwkg‹¯&ñ Ml¸ZZ8Äâ\ù¹´`é`d¿u³T2iÏ÷´�f�ù)ÿ›ᆲCNª(8úqs<‘–£kVSÇË¡é$Ž}V«+)Tô×ù¯¿' ÊR�rÏ+H©ã›|Ï¡»»WZ¸Eæ˜Ê¾µw\ÐNŒ|@M¥PœæS¢¬xþãópXØM¹ùÒ;(Rœ¥ðÅd„F[|–5DRýÒŸuH(ÿOþ¹l>€ø;ȸᤦ'Š�å¦A%i\ø ¢Û¶hËVYψ½F|ìãðz‚8´GâR§AÅø=&]Hƒëp§I%<äÇØX·ý}ÒUޏdªÁI\.Ûç¹s>yC6n™eÔ¨£P<ê|æ,_Ö¶¡È4§6?w‰\« ãÍ=NÀ­®cš%\öÃlͺÿ¹ÜZ\.!ÀÓßhùY‰!³ó,�&ßË'ù—oe»™/éš³·” NC`2耹{àúsW‡ŽsBåÓfÅkU"WAðŒÄz—ì„Ív´g±,ºëRGv’ú…|baÝÊ}3:lâ<&(t]Ÿ»Š}м ™Ù‚HYAJߘúZÎþè®X£Ä—q§…Eè<“ Ü%ô�IfÇ$[ΦñÅJ7kÝU¦PËbЪ„ÃËÝï4ÝèÏÑ2ÔJ7çù2!ié’&¡„n˜»Ô‹VþèÎíÔê6NŠOlä%Z•´Fؘÿû€oÄçÍy:ÜÉßShGUä.ufžÑ„Y¶ùý‡Ï?|÷=ÿ/Êßý/PKÒV1]³¦Ä Û1Timunify-security/assets/ui-app/assets/static/nav-root/images/common/check-circle.svgUT ëÆ«jëÆ«jux è‡M�Ýj„@ …ï}Š�^›ùsƱ8B õjûE§£0ÕŵζO_»v¡!päË ¤¾l®qº8ÖõüÈXJ‰’¢y LrÎÙN ¤±_‡Æ" ~ Ãzømôéy¾:äÀÁؽ±É`¯:Àû£Ãiž<Þ|¾|FïÐo~šûþ�»±Ý¸tÑC·ç¨¡û:t9äÈy0UËŸ^�ýÛ;¿­Ã}ܶ-BïðUTTX�–´¶QH*‹„ Rë“æ$­¡ÈDCª¬@“*ÔII’²-b.,q“KNŠËïû±š…&«Ñd?PKÒV1] -,‰Å¼Nimunify-security/assets/ui-app/assets/static/nav-root/images/common/person.svgUT ëÆ«jëÆ«jux è‡]“ÁnÛ0 †ï} û3$ERTÑô0cÀ.½öÐÛ€fI€,)Ö îã�^Be|°?‰"þ´Þ?¶Ã¼=ïÖ#Ñ8ì6ûíî|ùþØo毧ÏõˆDòös8¬Çã鸇Ï_‡ãûzÜ�Ïo÷«Õ<Ï08ýÞ®W‘x|¼{xûqÞ ¯ëñIA• ^ÐhpsMØKó`õ*m(P[­LH¬S�B¤f¤H±�æÅƒ± xç“j>%3˜‰×ázœ‹öìÚ„1—êÕj„_Åa¼¤Š )>&.B|‹0pŠÏž¡Â¢Ë{…)¤áÂÒ&gÉÙ`žO2ú“õÓ¿˜þþgÿËF JDFjÓç¨.<õ ‡Šf5z´ª­–X(^ʲàZ‘ÍîÊ…FÇúWc‰\ÝÕÜl± �ƒ…ŠøÄÀñ‡h06®x%§ÅBe.a�–ÒJ°5òáf(ÁZH9‡c Ñ‘ôήÜG“û M½¿Èj=½G<þSÞÁ�Õ»¼sHñ œùÖÆŸ&vë�Eíæ ‚°Y÷.X©r77ùêþóußs /yç¾È·åWq©–Ëõx÷PKÒV1]ÛåIM ×)Zimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAVPlus.svgUT ëÆ«jëÆ«jux 臭ZKs·¾ûW ›‹U‚ƒç̨Hºì©J*UëSbtSÄɵ«"×¢ì_Ÿ¯�Æ !í(b�–ßÎ6Я¯£‹>½¿Ww�w‡ýåÆè~£vû7‡ë»ýÍåæ—þõlÜüpõÝÅãÇõtw}¼Å3CÿáÓFÝîînn�—?Ð_ïvO?>]nzÕ+¬òv#Åš�ÂAûÇËÍíñøáåùùÓÓ“~rúðpsnû¾?ÇüÈËO÷wûw§4Ó4�§o7Wß)ü»øÓÙ™úÛn¿{x}<<¼Tÿx·;¾¹UÁj«¾�ƒñá…:SBп·»÷w¯YAýæðþü1ÿæìŒEïŽ÷»«¿¿ÿm÷ö÷ýËÅyFò·×»Ç7WóÃîõqw ƒoùL}qž¾ÊOݨÇãÃáÝîr³?ìwþë¬p£ÞÞÝß—/éóÙÃo÷xz÷q·?\_³v,êøðzÿøöððþr“>ÞãìïÏ|Ð}úש3oùó ñ˯ýZüxõ·ù÷_b_•;èar£ñ�š´ïmí‹¢ìŸÝO?Ñ�8e‘úá5ìy}¹ùþ¬‰~ �Óvêé� ¶½ú`‚�nZÅ{ü胋ý¨¶BÎ.ä¼Rò`upf ãØ°†{|6½ë'×È_�…”WM &þØ=6WçdŽo²V¯'5ÄærfÂqÞÚ8®Á“vÖ Æ8¯f�Ú�.�b hï&3× :*3jŸ­ÕE= ,r6ƒžòO£vd ü@tlš!v§8)Ü$;ÁJt6Aú•�ÍÃ^�xÒ¾ìµAˆy瀎Sö*D8ÒqWÅ·$cP@­7¤%Ô2ùY#Q(˜ÜcÉ4Æ=cq›1¸™×­ÁBÈ,`y¢Ñ6iÒÞ®×1„ˆiUéuoÇ1F©6üsÂrÕW�=R ùQÂ8#ƒA ®§¤2'3¹ŠùN"<*(Bi[QwN'‡aXƒAcŸì¯f#¸òçQyMFp|WuÁ-L:¹·]ÐSŠ“(ŸóÏŒª*"5#-Ž$3æDö@CòÏ$ý€ƒáQ|È“É ~èêÁÊXíØZQ.Çg J—­Ø< RÈ.i×Ô�w¥f~’÷E"²©¤nÈÖ�¤M�!ÀÞ§à’V:.™Ñ3IIT¸c+`é¼ÓÌóê9äåœî9ú`YŸÉþ0>öÑŒ!*g‘[ɸlhC2­rȸYA'[ô"@ù9·p7 cÃŒÊ"P™<€–‚`ý%8[dIu¶yÏ,ÞÈõºgçÉ;XÜ�ÓS\ØB ÎC¡œD«%¶nj Xp‰ã“p%"ÜCÀ–¢`ÈIK×ð†ÐÏrö.D (—*:ÁøšTQ°ÐP˜±j-¬)M1ê�ùY>;á6™¨„\¸Î7ÇÃÅ&'¨¼*PŸí/´’`µÀVÀÒ^"ÎV`á‹g6z,ËÅK¦Œw:žÈ$Ã"¥( tÔ%ˆgå©Jåt7¤ïõqÌ@KS F�\Àå{äí@4%Q¸I'kÙ–>܈êžz¹æa"�äC)Ø¡è'zmoáP6qYye 6{Rh'Àjˆ­@›âA>#öókðÄ ©§ ªð¨™I­rDÌ…¹—ò‡ÍB܃.uÕ#!r [ø¤’êc¡¥jN�’G<õv�0ÜÇÑ'ÃÕó«¼…÷¥ÄÈ+‹€ê TØb{::ŸàÐÚwŦ÷ Jf¸iÅ…”5¼mÑÅMUù+°Ìo!dþ6è•;Qucfä’± F—¾e–š„^NðXF™€a>“i^ÍÆ]�Et¥ŠkNNVsS ÏŒ%?ƒÓæÄH¹¶nª¯á†Ódœ\ÄxÆ¡žË(ÆU&Ü�ë@S"h&G4p¥†ˆãfÔžû%, ¢Í½Nƒ¢…Ü4n‘!#Y�…o¿)¿÷¿ßöêÃán|¼ÜD8;3‘� kŒ&,r �ø¹”hD›MB=¦É\®BieëH¹ƒ6\2 S6ežt"ˆ*[G<šÌ¬¬Î×w ¼(ðq˜}ø¶EœZøj®Ê#Æ)›ŸL21§‹8·øÌ‘Ñ#›gFßå™!^¹’YjÒ²%p^Ÿçe…&oÌÙ–ÎÝ|Œ©e—á.¢ 2¹]— �-Å›‡«�$Äty\Š2â¦4R˜:¸q¯œ@�“ÏE*�eCgMÓÃ2Œ–AQ�¶å³J‚˜‚ÄÔ6Ó…8'Ř+æ�PÚœ4Ù„”,í„:Ç­jí ÐFöLˆÈ¶<¾Ñh¿� Þ"`éâR×Îd6Á]e!³4�u¢¹¾´¤r¤†n'ªê#ç>hf¹Æ/ðšQ\˜Eñ,×gO;——'è�b¶“:mÈgùBÄu�BÓPcؾ°‰a/#þÞ¿Œ¥`j�|Y´,LmTÌc¸lÛЩ±})¢4¯MYáªPÐsø‰P­‡‰± m˜+±óqŒÐ8ÀyJÜOB5ÏC1Bƒ«”:m‡g™9DZå;�꺧«['r${W( ã}4÷usMÜiW(CìŸêÔG”Û'k¹›/Ó)/X©WÁô÷ô•!x%Ó‰Oùà³ã¥Œv5á”\Ñ Ø‰b6Y†bm$¬-Ö+4Úòöë3>/Ž+�âœ)±#Ñ3x€9EÜ aʘŠàÌ9(§Ø`ZâOä4ìꊄÚö1§¦t ºvîȺŽ+Êì(²Óá“¡¨�x^êÅwŸ»òc(eÉàrzwˆßž#\¤ †çΤ¦åk¢ œ ¾Ü¡LÞ”Ð}iŽlÈâ4&-ÆÒ,âg3?Ù§¬‚�Y|³eÁ«N{ã¹-U­n1Îa4rþÔ] mlRÎw5½“Sj˜½t·¤3„º¤¡½ƒaVÀ%—Ö¹Ú•ìËž­g Œ=•ñÒ˜nà[Çœ9ãan·;<¸Cª®�\‡q„ÍÒ‘kË%„%ê´­qùd:Žyzòr·«#rZ;9®J÷¥8Ã{[‚y- >{šæu0#/( µñ"ëÄÛ[U7À¾¾KOßÀ[Än–m-~ðL±¯=u'.ªêx!¯¸!“T¡·H#¯O…Ê-ZìS×ã�•i^й02½–¬-ó"Í ‰.$¡.w5[Zr–þ²öøÛÏÂhæèz¥~F9æsºå­›ÚŠQ¬ŽTd}c¹dÕ$Xüï€ ×ý‹ÜToë{3yâÉ{üÏ @QÇ v¯èU¼YÞ ›ÅW Ôž'M¹3£�ïq:ÑÖÿZ~wù\ÞIx+º‰ÏµMlÅHØ•ù@ÕŠÕîõjÝ®!–Q<‡´(Ö5–`¥¡¼o«a¾½�€ç:ø5IQ— ‚§êÚKÞj+x¼1´xY/un¯/üC#c~Ïßø´,œ„˜:æÉ=T]¸}fèå�d;unk#ídþ7Uè4X#=ÀYéZëq>ýÏ œƒk°m[¸tF„–™¨Ž4„º3„`:Ïמ Îo[!OPC{œDýbw7šÐKè-ès±¥ ¼ à*Ûɬ&BCð(·"+SzåÉÔÜ@_H*»>—…Ô„¨ *Ø®ïÙp(²*µ��ùXÛ{]I–x‚�ݱdÊþn+³¢8¡å =Ê*c�˜•ÄC5&À6¡,S6@a™ƒ<¶È$˜!#†ÍŠŠd#%#Ki”v¶@†ùx›9_8ªä“(ªÈŽX‹EçöRkùßIó´¤­›U.b¸ž™"í�-ÿÙ)béý2mN§a§×û˜‡áEFã¿1?Ë‹lŽz!_ŸýPKÒV1]§\ŽnõNimunify-security/assets/ui-app/assets/static/nav-root/images/common/vector.svgUT ëÆ«jëÆ«jux è‡UQ=oà Ýó+ÝϪ8C'/Y=x«×¶äÚQc…üü‚N+¸÷ÅÓo÷žùñ²GËÙÐ�ý°>ï÷±óˣ₠†–ÅÙ×8MŸ—¹ãìñ=Í·Šëz}/ ï=xËO_H!DŒùép¼~®»Tü,À’•¦d¨@[¥Ô@hÊÚ€&2®Ió:Û—Dnˆj(*‚(’ªIó?’„0,Aê="¼œ*Í‘õˆPêÚ‘ ä(ÉP{&0¤­c&Yÿ‚nûIb%§\%j2þôLgI³›¥Ül•h�/Aâ–\#*ç^ÕS•\=ã"æ'å–ßæe½¹2^„mÄ­œ¿PKÒV1]ŒŠ�ob+Limunify-security/assets/ui-app/assets/static/nav-root/images/common/bell.svgUT ëÆ«jëÆ«jux è‡eRËN1 ¼÷+¢pŽ7~å�º•à �JéV mUõëqÚ#9DöÄž±GYýìÝïg;~�~šçóã0,Ë Ãé²(Æ8X…wËá}žF�Å»iwØO³ÅÙ»ŸÃny>ýŽ>ºè°8Ã6+gg}~›'÷qhmô\婊¿¥áòÝv£?žŽ×ÝåäÝûè_1²CDi!AÕì2`J�@ë¢æ5&ˆdˆ` À��Ò‹¡êJÙDŠH¸WEbHÙ‚ÄÔ°`@ˆ"O\ÐÝïÛÜ&f1áÛÿ7„B¤¼$È, Q·P* v&Âɘ-PÍP156]r i JÖ“�"k'JØ[”µ7fj$] o;—¾óõµ€:ÈXlmêÛÖl´Uº æTMÖ•ûpÅÊA„Œ³&Ë»\Ìf�fê/UC¯ªPYÍŒ*Ôýé&‰†»±Ñ¬±Ë0$mækIµ�¨åê‡ÍjÝ¿ÀfõPKÒV1]üýE û$Vimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAV.svgUT ëÆ«jëÆ«jux 臭ZKo9¾Ï¯àj/ M5›d?Ûƒ™v±@Ïi‡Ü¼±b q¤@ÖÄ™ýõû±ÅzÐiÅìÆ©Ä.²ª¾ªúŠ�ËŸ¾~z0_6‡Çí~wµr¶^™Íîýþv»»»Zýó¹èW?]ÿpùøåÎl®ÿöé·ÝöÃï?ÿër}œ~¼Ý<¾¿››ãæþ8Þç-íåzþé´êÎ<û�›«Õn¿Û¬ò· òßÊ|Ø><Ð�éóÅá·¬Þ|Ùìö··Ù¸¬êx¸Ù=~Ø>]­æ�ØûÇ‹ÐÛzþW™ ßæÏoÔ“ß{Z=|öÙï=ÿú6ýUÆÕvþÞ�Uö¿üܵ~Aݬòó œv{µúÕÙ¾ò¶5SmëÞå¿ 6ˆaþ‹fJ}#Hϼ3³B×ÙáôÜ3-gˆ¶îšùï¤ìùwõà»"XˆÞ6‡ýêúr�lzÉܦ�£‡ôWœ¥©mó‚Ç=¹ØŒJ<°Æ v8­¨zÛ´§Ð$©Ÿ—ºª³ñd’7£ë-™ÞÚn8i3�žÔ5�VÑY÷­tt­-—Åü9*ƒÍŽÄþ^ÙÁ‡­³zã¼íN1…´ËáÕÒ�ƒŽ°ˆXûÌ9;|_¬”ŒJ¬wt¶ÍÞѧ«ÙÁ…)µõ9ÊîÁ†�¥ì£ÞÆ:GC»²³í‚¸µ=¹N)n­/"É¿^‡± ø*ˆ(©ÂÓ¤ÅÊeH¨—ÄbÎ’Q‰a%�6X·~É.Xæét0¥'ŸÉ‘LgkŸÝì@Š{Èì`{Áµ#Ø–¡él—¬»Æö9ö:Å@ 9 z•ÀZk첯C¹}Ÿ±ÓYsLSöZ%ò—à¥Íoœ�Y¬|¥*”SQÒuD‚0-——w¯­N>r¦Ã9>W×Q‹ÙGÆBmùœ$ÞÛHé×L¡¢Éæ7é`mö—Ñȇç\ÆcƒÜÉNTÒ±é¸déÅ-¥TRóÙšh 3úM@ò¨Ã6ž‹“¤B*^˜”Xwl²ÁgÄP‚ן�ÒA{²þÌõ'E~‘Ó&²µµŽÐÔ3ä•­p¢ÏùQÄ¡¶!7m%F¼HI1bæèlê¤YŽŒ¸{mØé{²|š?jßOõBßUbí÷eP¾Ó`9l±ªb%u¡¸i1\Ey­ÄÅÀH=§&•#P^³€tªWc¹¿ÄJ » žãßRâDš\ï�–ŽÁ1õâš ¤µ0H©èSøÁº¬Yz‘ñ`9]”yJª|1i±n ` }W‹3ILO‰ƒ/ä]é„i{*ÚºW‚žó-ø¤ÉáU…ìºb@ÅB/Ž\Xf�Ͼ¡c¦ Ú/ÐE5»'£-UFOZ¬1·ˆÐW<:¶u¦Í±æ´}þ½àÌê¹sòL©•DŸ[)>#ÖÙ­”œÿ¿8vì© !€-EjŠ‘0|NŒô«è9]ψ5°”ØS0ƒ‰�ÚTÕ䖆̄t zFØ@{Ã9ÒP3˜Ør~ÕL"��U ‡QÄ“²öœ¤@¢ÛgFæµxŒà3,vdŽBD³4H›\CP§æ“Súú¬‘U~g`�"E.Þ/P!‡?#V!|1Sö¿ßíwæó~»;>^­:Ç”'ã•Màä¾G(¦ŽTúÓÈâd�Ô:(Rݧ$I÷Kæ0 /ˆVMN‡˜£Õóè¡ÒEntÒÈåÃŒø�(Y-I+÷ð]"`Á ‡¹˜¡‰ò+‡à@ŒÜ�Ké²ÿÿHø¨O)ƒG5Û+0CJ„+9‘N ¿\UÌ¿�sñ@“&·¹tÀàÍ®¤.+Œ×} FœbD7`(P‘UÈe‘L{)÷žëäl4aÎ`U…骄n°uA‰b…‚xº}i´6uÂC4t×¶…×_5pËO`g!÷ÍÚ׺zõ\+Ù¨Ià¢î(@L¼ƒª~Ь°B*¤\»P y”CªRÝ”{lx„Îéw—ÜËüMxvZL¼YÚuʹ¼BßÉ'1ÝkÓ œL öslR¶¡•Ó…Å¢ó^O�¸S%4¶ÔwáOЍò@ªc•$}Bƒ§ Ä+N !l1R l)@q)¬¤u”èQ¢‰ê(e#ÂG#ê( ›£ârr¡‘åªi'À¡’ž.NæØsýC‘MÔˆrßiÔí¨ 8œ¹׃�t áÊIêiçEÏ'pçf–Å—Œ®¡ë¿JØ�¼e|å€ht ‰XÑ7ɸZ^’æ¼:õk¢Eóß–ë& ýuª™íËÆš€~º'y�{P¾©&ï=[�‰BzSC”¾¼; Ù'×zŸ¢¯)n ºl*¼¡å£¼+äC±×@ðóúdÀ´éÅ¿{K)9G½$Ô.Öoø”‡ÕK;­Ãé{p%eî,�ŸdV)`²ŒžwæWMmeªšzÊ�¨od'5îÌs]®.ô¾;½ÙSWÓ¢¨Zûò¦ÿÓ�YzIL€—yxR3®šp&áw•B;j�çn®ð«_§âÀ<]‹'ÔâfA˨^ôj´8)/ÅrÆ •—a¹q¥Woµ+ìï ”ÂüD:©—~J<ʵa¡£“÷U‚<õŠ]kBÁ«ÙurE«ßZëŒ,–{*mz¨ÒâI¦ŽB>ª‚^¨ Ü÷´§Õ¼Uþ— ù¿<ª{É üY¬xFLÀü#½¥ð—ùÃeúßF×ÿPKÒV1]_\¸úÔOimunify-security/assets/ui-app/assets/static/nav-root/images/common/support.svgUT ëÆ«jëÆ«jux è‡eTÝn›7 ½ÏSß®?™¤$Šâ]®÷…›Åì¤HܸðÓïPrQ³š¢øsHùþãó9ý<^?¶Ëþtúþçfs>Ÿó¹ä·÷ç�ÑK:¿|;í·‹´%íŸ^ž÷'èuIŸ/Oç¿Þ~nJ”¤%Øî>÷ß¿žö韗Ãa»üQ-¾Ë8®ï?OÛåõíõòôþ¶¤oÛåo¦ÜJO\²ï(eõ²æÖ[â,­­�V¯zî䉦 >ÊWuÜâ"b#ôj¸¹œ‘Ó‚@I7i/Ç–…§ßî?5Âó@ðêot·inK péÿàÖßèn¡_ŽŽ@oú)¹XÛEv[³{I’Y}€´©ï¦ä�ì¹ÁÄ’¸åF[H,9¶±[K&Xhí™z$Pn«eíeÕ쵎4üˆˆ�OÓÀ¯™,:åšÍúçz´f“–kGL«Ñk�îd™¤ T1l1S$‡LQ¼¢´é£f–’]’AôÈiË*8j.½ÏûR¢ß‰Ü=ödâ°¸qª(_gÞy¿Ä0$M$ä aä¦r9®uìªSð­a˜$ÈdµÇf›c±.3ôÙgs¾6x*ôî=‹�(À¡�|UØÖ{І´¡9²3ºçó`—¯Ñ˜¤)À5ê]À@%• räj8£|Á¯B´€ªc"©VLÁ:êIí©eîHIXU¡P°!¥6täÖ�%¦*Œö„1Ažì,Y±0`¢w�ÙÚ+HÕ$–@æ1¤hÝU©„Çø1íS‰„>Ša„pnÓ²ÞÜÂÌm¼1�CñÑZÌÅç»Ð:Æ6ŒD,æicÀãÍõ[oƒ5˜fè$HfW=�$!E¨€eS÷Ð/G€Áx +†Ïw†#øàƒÂøW"’ëAse^çÆôä—C{À*;p"(å²öH¦WcYæxHkQM–W¼çùVCýÀû[ ˜±²ÞƒêÒvcU ¡As»>�H;J_–ÍÃÝ}üW?Üý PK ÒV1]Fimunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/UT ëÆ«jëÆ«jux è‡PKÒV1]\ÖD¬Qimunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/profile.svgUT ëÆ«jëÆ«jux è‡MQËnƒ0¼ó+÷ìeýÄD€ÔæÜ�¨€ Q åëklªÆ–Wã™ñìJ.浃Çe¼Î%ë—åvJÓmÛpS8Ý»TQê ¶¡Yú’IÍ o‡®_< Ö¡Ý>¦GɤÏU øUܾ–¾‡q,Ù›vûfáÊï?c[²vm¯SÓ0hJö)$’r@gáÐÚ�„$À 2ŒŽš@¡Ñ† 4*‹™1\a®-8Ì­ô¼%ÃË…F­í�-’@ïB`î Ö}b±Ÿ}¦Ø.”?èy!߆d-QfÚ …Î@ Ëä�÷föÅwEEŽ¿è3�T�ù¿lkâ1:D¾>‰øÉÒ*)ö?¨’_PKÒV1]%&(xç ^imunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/events-notifications.svgUT ëÆ«jëÆ«jux è‡ÅWËr;Ýç+T“M²P£n½S&UÁåÍÝzOá P!à&�øëok4�a ~$•˜…¤ÖãtŸÓ’F\l¶3ñãÛrµóº¾û0ìv;ØiXW³)¥<£»Åm=D¾ór1›×lD6¶‹r7ZÿJ(ÁÃ"õ~|#øw1_Ëå°X­WeÑ´eõ}Y‹r[®Ö··í¼ÎÜvœÜ—Õºë»ÉtQÿàTìLo–ÜMêyëáíx<.Ħ®Ö_yù[;ºÇË}‡Ü_ˆÛañŸ!aÔ}¥ÂD -RèȵޒU¿z$·® u;¤¾1º»FêûbðH\¯Â(dÇVAtAÄ!h€@™Šî:<t¥Ææê²eÁx:¤(<‘ÿ<ºt±‚»ú4²gIJŽC&@ tM¤�õº‰tè)Ö,é‰f1ô„kÁ5hë¢o�ýÓð[ÙŸy„x²çðŸ~‹Nã“Ѽ;O©CQÿ6øƒÎD]MV›/ëêÛ°hšËI]¾k7UÎÐûÞ9»‹žwR”p"š9ZL_> �°ÇPÝä54±”ËåânSŠ)_HoÄ)ï¨À…P¼ð4W �4ßCÕÏܦpÒqW„=^¢H¼7Œ��Ùy`·Œ5s™,{šÇŸhª““È©^¦$9ðÞ¾ž’d9û]!Ý_£ŒîErn%_EÜÿBQ‰ï/ÿŠ¢²T¾++ßgÍØ_�U³—@ÿ@V´ü ¶¯¨+ZÏ;Hézn»^ f�çÊ‘1]TÓe¦çT¦–ê*W­{ÇêÓç.êá}Ô?õÉN¡jÎþʰT Š?ü¹Lò+Éí�:”“Á¤¸Ð:ŠCw.(€�†¤4E~¤i–Ïí­T¥tbã‰L}±<#(¹ÀÆ¿äŒz©ù=£¢ä ÑIV6FÙ$8dã̳¤ÃÑ XòÏ ‰§Yb…!…i€_yhÁ(j .µ="yb}3”YvHv8�vNbB#�‹º©BklÅ"@?~ýÂ{Tªbú¾¶R“¥LçW¥5K#ïNœµ¾öáõsƒÿú×ûǧËPæGïß×J—þ®_þ�ù=Sñ¿þ#ÐÔþúýO?œ©º©ûã×ÿûà�^½úáÕñÏwÒ ÷zLêµ58~ü€¿ù×ß$Þi3;Rǧå²Ðþ¨vZ;~ÿòÃÏNùàŒ0«YŸ+W;{ùúµúö[U;«~ýT×�–­ûº«ëã==zøtšËòÍÊŒœ]*ç×§©,Š#WWÇÇÕâî½úð³ùöÛ#uòÚD.ÃkëèãÍþAh û›{>œ¹SÚôS=<Ù“öûÆo–U?ߺÊ!ˆuìsgW¨•h;gÝQ­%Íy!—Ëb-ìtZ*V{á_Ô„·BºYX(ãÅ?j/Ì‹Ú?ÄJû\kN üî4ˆ îd”¨½¸JÞ OKRŸž®a«¨» ãêĪÛ':�c4c@33 ’3S ú³:U—Öùòõƒ¤eʳ™ecÛ�ëT_—þl·ÃfýÚ»àQhå  Q"׿>Lû8MgÊ€ÕÒBI–Ìd¡�ÔijƒñõïÁ–ߟÕju0ùY­](T ü…ÌmÿVµO ¹˜(§´ÑqùLÊ+޵s”ËåÔ‹¸yU¦9M˜9iüE(ŠFšª²äfÞÚ¢PF¼ 3§§S1S«ß>ªsWÍ·¬4µŽ Ë¥2rŽ¿éÂÞ©±màbÜ„F˜Š$ÍWÒÝ+Ñ'åMÔJÍö枃ÙMű~Ú/A¢”Ú°ŠéQ XæóéosÍ«·}«ôo³éçG[1³“s‰ÆN5NáVÈ €{­òjzé•Î.ž—õ­V @9à•V“¡ðËc ìV|ãôLYpkmÆÀSŸ,Z{qÊçÒ+½2ý…ª—)¸äØvâI>˜YIpOsà|*~ ?|ÿRE¤Ñ¿SA;¨–jɾMy /Ù·sY0+z·Ûë¨ÖF „€ž%­ê"ÓJ”2àú‡€XÜÁÿPã ì¨l¿Óß}¨4;ÝiµºÐÅWµ iÊÊü¥2Ù…,J5²¥öúN±øI€JÙɆNÔ>}ªK‘tª WèTÁÂÜ}}¯Ì=ìWhÃzp~‡a#ìü!üŽN €�2ãìAÝ)·>—knÆu?–rXvªt H0 9TÅÔçsÖ4’+§3~¿ À�—3Qò{õ•¿�« Ŷ+"1¦¥ÖØn`�ß#Û‹ƒœER1Ñ¥Ø1i§m™æ8ÄJü«RÀ°ô%R›$>³+Ã7•^ˆK¤Wn*1º œž¬A³‹j¾—ÎóÞIÓ+Z¤BTJ9 N"‘lFØMAx6—®@ΈïpHƒK+ú\;v™s§}\ÆçÁ•:‡0TqäõB%Ú¤ªI8sîô4[Stƒ<\™½ŠpaKT£ÿÔ0aÃx•ºK��‚AQ!f>çã�ý‡ ·L=ËJ$1_ÃMP_¡»•ÊÌAºbeÑ—Á¤*PT¥ÎͬF:Ùg#-lÈ þ„�ÜŒŽöqôÀ¤ß­ù} ÉVóŽ›Û‰7„è´Àí ;Ó)ËqkŸà1 Ki›„ÒŽ<"δS©—ÙB³®zNà ~4mY¨’�Ë#Ø'�àå³1®UŒ†$®NÉ•Ë�¥â‰EURXLüq`¢¨iŒ#P°�×KUVƒ‡´„X�ku«ñ=о"ÛGìâÚã¿ Ãqb¸ž“�|a“ÏÝâ+6Ù9ʦv‰>ƒÙ55…Ò kqˆÏø§·Ÿ0Ñ6�«l„}µÝåØâ_›AEò�ÚÖñ#¨ˆ(0ãëŦ‚ZbþÁ؆žGMb'a ¤ÄÅX}d Ó}—„‰W—Ýá»› (SÓN{ˆ�ãò [vGûyíù:do‹'mT -xøXN¾VÎ^¤‚VTíöÖËrhùêé!’zÈT`©ªþF{tG¥°TbEæ˜Ðʶºç×'°–ÄeNãÒ_àˆ lãpIt00Ý!nÎa¿†KA(¡¤s™ u8¦"žfª„¦Óù:šÔ38IóB™À¬ Å8ˆM‚ŸV›}�¿í~h¤”ÍËãÖCÆÞœ�ÐT�*Pʉ ¾KÁ™�õbj 02xƒ d‹•røG%.Â_/«j\b¦°ÝœN vûÛÍø€?|ÛžD¡ôH�^"›÷��•JóRd\Ü¿‰Þ¦)• ›…².J©Œ ´M ^qÈÖ·†ÀvF Qr,ŤZÕ“MO±Œ‡X—%4Xä‹Â*Tú¸O’\ž|wi¡»3³“Öã6÷ÁUøDVìtªÌ–òœjËìP™/'…£ïAð ³¶ £ÅâZjJŒ¹,ÖKb`C ˜é07_t¢'B“‘Eê7Á?KÝä–0÷Ìâ½G‹õs‹#ùÞâUL:P5äØÔ}ƒT™šÊPøˆ 3;{°ËªÍ�’€/è­3 ¹@�Õž³nÝ‹á¥b�IÓÉÀüÄg¢)T×PæºlòÇ8ËX¯§:•ûzÙÈ2Ū bwtAð=“€z<6¶¸÷a±¦ž`ç!€06žÓAR+z+ÛälN‘ÄþŽwvýÏü7X~¼äLmޝó‹˜nÅ ÒÎô��v)¦ Vû;kŽs–£‰’n‚͉¯<î 1ØŸ9Yh¿ãiSiÄËêW*;>çé±)+¾þ¸Bþ] |.»…wÇ�H)gµ'ú8£c£Ýæ_o€ÏåÙCu'a›|!EQ|>{˜êêÄæºË¦Ø!4èhÑH…‘#Wb0ù0¿žæ@Áq© 4È›˜ÿ…ò€ª�±µ…×,›˜Öw ª;:idNÅðW�²²G5ŽÑ胻üÓñXÄÊlpàtl rh.eVÂ]öyøBºgK½m&‹çlŸÛ¤‚�xkt2vr �s¿ Ù,e|þÛGõS¡k¤e1ÝTn½¦9dÇ�EŒ°ˆoÚBßU’²˜oZ#µSuh‡�m@´)¡$«&’°Ôd]¡éd©+,6YG%Ê…${³ oæ!ÆŽ& å¦õåJF@ýÊ[ñë­ƒz¦‚s“…3`Fßck±8îÁ¤àV‹=¶©-Åûž‚UÌìƒØzr‹qÏBŒÁQžï z€Ëé.Bˆkµ “BãÇ· × �Ø®Íb?¿+�ŸøZ,fÛ4¶P÷›9fŽ’"{«Ç‹lÁ‰6b²n庠XÐöä[`gA ³É®-³=[„Å$"«Åb¯e¦âZj$ace/ÆÁÖ-ÏßÏ‚2’€_+8 ¾ùWIúfƒ)À/7Ð!ø’t…t,Lß­—±yh±è#Ò<Š{νs<îäçlÄ9úŒ¬UÏãý€¤8¤a w޵ITë9k›HÀa÷œO%ÅLU‘¶ÍºW; �ðJT›•½]úJî6ë�Ò~œ­—ñ#a›EKÛi(Q¦6§’妬hHÎé�>×v‰.XïºÐÆTŒ^°º |Šæ¹`Ís!‹9.° 0¼‰4]G˜ CñJŸú¼”ø_¶ CuG-t�•w�J6&äkí½‚·"cÝ¿VàX8Ìú}K®Òì\�-Pz²„®Ò`ŸMp}IMkŸÍo}М±4™­oP5ý�’û¬öûu=ÞÂQÔ3öÙ0•8-ú�‹iVkÀ ”Z4κI_•ÖçXÏöY?Ùj½©:�µûlÀê‡�j1 CfŸ­¯ûÊoª¶>kàu�œX…¤³ó9r:`uŠ·âRf#æV��-2¹ŠÎ7`Ý ¯ß)£fŽVcË jÖ!8:OÖ°Ž8€Âe&Ë9•Öa…2—E±m¬¬�Ñ=ò^AЯgcúb²î:€„e¾xß n!? ë¶ì' :=°±m Sj€¼'c¤s1磂4xx� óQ‘úŸk– ä� T-–,–Ñn%d‰î?`á<Àê GY Ç=4~Ÿ­X Ã|•é»h6þ  ‡Ùþp >êbÖpö:–é62 l‰Õ!&Å!ë&C¹Ð±z²n2TᤇRl 4d}`¨gô$eÈÂð8µÅ|ÓâYøÓ‘6Ä ¡¥trˆ‚Åó�.¢aÌ@\ Y4+›ûùC�j)‰IVC09V‰CCMˆ²¦M–JUí ëso”AF¬¥FP€.Pøk�‘"ÆF_ÑÖˆ‘-ÖÛrpÄZc$—A ´þ¶±!i”ëB/—:>c±ñh$ç›úbÄZndã�÷«–=G�¶©8 ë”0GlPiŸJívqdÄZsí›·x„.6b£ÄHØêâ•R'ð#M˜nF¬›Ã*Ô]ŒX7E`cýøË�ãÅØ$^³¦¿Æà`4)äš…ýuXÐÉM4ù5ß•)W˜]³è¾Þ�‘^³B^¼¿à +D"C¦ã·!Ú%ak¡DP(š]×—ð%‘ZCƨžJ$l OBF�KX¥ÑIg§³�hè©–Õžðg¥P•]*à€DfcVRØÕækRžè$w²˜H—®¯ ÔÈu$ç+8X�éɹYÂ"@�‘¢¯,½èI8—¡¼kо2Çê†À�°àJ,´ß¹ÖÍH“†ž~Ô“gÎÊ�½Xõ+Æ�ü©käàŸ™I5�]$lnuW&l’Mbq&«×! ë£Éº:‚LØèž¬ðKFôŽ1‹Øqpóò„oIˆ8å68�Yøâ™®¤åø’’t6}ØÕ®s&VÇ,°Ç–>ŒYP�s¹ƒìXÒä6 �YœŽí\ň7f¡ù¦ô^/È&c–¨-ü»Ù…æ8l³Ø˜EæŠSÄå˜Åå˜>âÏ©v³ pu&£wŽíDFͱH|�ŠÃlpK½Š¢ð'øÒ”UµzÃFÏ›9~LD ß°V½™UÁ÷†ÕçM‚×äñ!CðÅB›ˆ'X»Þ°N¹÷=¿:FRÖ7n\¨Ò× +ÜM9Q[ÀܲâÝJ�_€&Ãrüö`|‹bÀ_7g†ñÄ·*?nÜL0ê ÔÎ-ÿ1wsö$®‚™MÕ^åpËvPçç”,Foµò†ÎoÙ¬z+M�qó–õó·ØîÅ3‘‹à%›·|ÅK0úwÖ#{¶´wˆÞ_`-Hƒ¿èƒÖÖÓǾw|j§`¿H" Áw›sêw¬ƒ¼Ó‹‰œ¬è�`&Ë|b!-⣉;]Z·}0ñ쓇†Y©øJãK÷Ç«Ësêì1éKŽö¿Å¹ÂWÌw�OãÃN¼í-ªGØxõ/$ªÍ…8¼ìKlÄã�7ø�ßלӡÞ G\·µ¡· €²ê]�»ÇçYñ­h¼òî ˜áõ$7ÇäU=]}4óéV¼W^†ÉøÐ•£öb9µy�7ÊñØçDª;ö�ÙÚ\¢¥Ç‚P?ÞáíÌçÞ‹, L�®E#•nå’Ç(è’ù îmˆC3ƒîÏè§ ‹‰ro¦mšñ©Ag‡&ßZ¼ä¤~,èK3>zÂ7Ò<¥9۾䉤cË ]žmÞøÔ½õ‡žCçMwIsy§†jÕ}ŽÍv) È„QA‰=žñíY.+Hï}�h&ãtªš8‰¯�ñ&g->ÅY>óð¾;¢ eõöÞTwÞžþ?LÖ�jÛg.’ö �ÎñÚhXSÝ}½">Š~ì <ûû¯�¾#ö÷¦¼ÕÙL±®¿?�æx(d¶šú’žpT±žÛÑ�¸Àü�6JeÕJè N1ŒøøÓswrãÀà…=,½°k!wÃùð�\Nª·+ÕpÜ�Æ×ñ2Æã´Ê“RM# øÏ‹$SîðªN*ŒÇjcäeò>FeîbVxÓ”¨IâÎg›Â ÓE| Þ\Ì^rÈ¢Q. ]Z@oô¸ŠJy£•‡§ÛÃï8¾ŽËûçQ?:8½¾<~w|xAöï×tË,Ft¯Í@L’¬;¼=yFvþ�K=‘ªí¦â(e`¹™§˜ÇÖ87á!l `|(#8‚-v!c«oûK•b~ 0¯"z¯&eZ¡•‹2�püÕÆØcã y C%|”w@R¡Þ§Õ‚ð6Æ”ñ þPäiÂgxÐ8¼P*í/ ªX=ÅUÀéQÓ*/ÌÞDzó�ÕÀÔ�g0{/lN“3 Ž6�yE½WÄ4à\Ão§Uõúté$ZRz—ª%ŠˆŒUÐÜ T33âUÑ|™Ob8ÌÑá5sÄç)K¶�ÅY¼¼¥ ÒÇ27M©åJ¡\¡D9Gb�{[輤á7í[9š€°¢™MÇ¥Òú”m[ëëgî!xÞîÖÃE9M�fQ”qwànÑ ª ²Æ‰â¼EƒW—x�Ê8©u\œó›Ùì§Ï;8æ¡WwˆÈA”€Gº”ý¦ÙÕˆÛr�…Z’7Mß¿ÆxÝ�; Ï–Z­ýZÃñ®'ž/�­{‡†¢m�™;kÎÀ'¸Wáx›Œ&‹t D=Fä… ŠÍÓ—N…8%x3™¹®¢rMËƒÇ¤Š é,3¸¸Pñ9RÀb}Sæ[ iV0†b3êA4`h't³à»˜ ‹·tûU4ƒK–‡õцfCs�o< •V Œy/Iþ‰ZzŸø ¯ê0šIÜ]Ë�+O_ªÜoJy�kR�ÚÂ^õ(ç êÑ2âî O¿ÊgW±Èm'±�[Ï”K-à™ò£u¹G˜ÎCÚ¬�ÇáØpÈ–p0pޣłÞŒÈái60$ß�Hs¸g¹"½¬$†N§äæD†’ákñXã{‹#�«1Ó§¨ü{}NÛgý¹X[„�­gÍ^Zh÷n°Õ§r—Î1>jާ†\ƒú“€-²Tá‘W͙р¢Žh|§– ÂcóH®úó;ŒÂÙÌ>w kµ‹É¹ " ^³î¶f WÅ?vù@LJÔôúKWï…Ê6Õ�*:—ïPË+ ß�jÞ*_m?ûkáM¦»žö†,¦ª;� ®‚~Sè–ˆî†Ñ‹attyÞG œ~tþþ:>�G›òfHDWftq’™„-[ÇãyÖe(Z L3hz ô :p†)w�2#¦Ú¯…ƒT@vq�®ës‡xg°K " ×÷Žø†%殽hp™¶­ G÷\1M/' 3´7å:^]-€ýwíËÿ òР¾u-:œÒ…úèÕèôq§^¯Ò Çkz¬mé½�1ŸŽâ®#Óén–Z›Xnâ]¯ÝoÞ5te÷Ô´_» íƵnƒ×rTÌ–òË'5[©e¢ôaèG¯@óÒŸhGÅV çH‰Kó3’t½!éd©zšs²6!G I�רt³ N‰2“ ²bó]ëøêÃÞ©´¼ív¢y˜ïÞ=9%ÛlT;JŠhqcì»D7!° ü“y]‹âäe¹}±Àúg³ÊcµÉ~êp¬ûyž{AqÞuQH×J%éÆ{ ­“ÜZëÜïÔzϲák¬ÑG£u�@°� ùFñuµ‰aØç°Š«�í}¹™„­¬Åâd?æ@ß W�¤óÈ6—wœ]2S‚Œ§Ê}´�îjl=/r æ•1¶ÊgE†UYÅ]¿ˆ+í_©»Xï‚lîËã:Z-/ÂÄڡɦ �Ix£ ³Mv�!ŒpëhÞfEBGÛÛ­‡ðø•4ƒãDœˆ™©Q å~g4ª'8A"O"€~AÀ¸*Yä'Q ã \æm1Íd¯ÐßzM –²(­ "$]Í òN¯×¶4²Â38†äåIÕ¶òÒ8Þ&4`¾çyßq6”•_*dÉŸ.ð�+GO2 99øW¤Š§|{Ê1,nØÐO–ÀÁáÒ_‹ÿEàMo 2pN‘µÏȲM>³Ál…ß›nËÛÕ$_F×a0t‡û½Wh%Ì- ˜�¶Øm‡«¸Ã†u:'ìÓgº¶¯yî×ÇaW­Üø¬¬$Aª¸8ÎÖ›ªÅ“b¨wlI-ÝAÿ0>º)0(ãÄÈŒmmõ1~ŸÝÑ«DúvUÛí÷5h£’¶ëe³üŽ!‚L·¬ÛñJ·çÕÊ™¶WÁ‡2Ë�½ØTUž…|Ëš÷6"Z¸X†p˜IžøÑ­qsñTÛQÉÑŒ¸„õaoYÕÕÝ'u­n;¦c¯‰>V=»a˜¾|\wÝÖžfßc¾Ï}ò/‚­ã#ú÷tµõ´8ÝÓ×)ýáå×'É 7ßÔP6õ½ñ«2À:îDŽOÓjÕµ^¤˜líÓ _‹�þM<8s‹´3VÈ0È€„ "‰²¾zîz¹Ñµ‹|Ò¨!Ä.í{º OKtÃ5 Lgõ¹Ö.wPm¬À¾áVYÁ¬>¥V†5Å0ˆêö4Ï0>}¯.ª3Ï»ê³|Ø4ê³ÌMÕ¼H) T�ç)*©à°r€M,¸be Uœ¤!ÌÇII,ñ[|eÝM¿Ÿ{i뀮»Æp˜‹}Œ³©VKÅÅ!8 ÔÑx�g†òÆYÀK *4Þd ³CpíTÛàcF„ÄcN·¡—ƯñŠzÔá]z£}=×õo:?6µ3ÿ+e2ãU^Ýh¨Ív¨o·úË™ýD�)þ±Y'?'”…ê—�D“Oþ¦®åÑê*ßxßýjt=‰F,Ô‚|TµØ7šõŽ^x¬ªà ੱ°ŠôèÈl¡f@^ÏͨqNø¨QOn47³`¿ó§&3—èW”›BL‡º½á ®r ÂRÑþhdÇrÁ^ØjP#Ds-RJµwˆ¼§ùÛ`Å ®¢÷�b+õƒ¿öÿÞÊýš…™JUaô„?ŒÑŽÎîñÍ„>ðiè2&9ÎÄCÍšÃµÄ ö3³á%BP޲9 wÑÀ§&bü+uŒ>–8òNƒ¬i&lÇÇð¹¸ÒÐx€„ä]áÃ,I$(´€1ù©êm�p \äjªÒ�*AI?ŽVÐKêÔÆF3Œ¸ÛhB¨%1÷0±�uˆt�ªn„'IUxô4[,þ¬† ·mCÓu˜ò4`ûø‚Ë…WÚK�²Ô4+½j-»g¯¯sŠ€Y�˜yxZ;¢ ³=�ý¥�Î_�˜çÂ+’�ønôècž=æ|‰¿©i êÔ¢ÙL_9\˜% »_Þ’E‰þ�îÚûY8¡Ae¿ýjí2§*ž”a½%m²kê’‰+`å+ô¿ŒkS4 öJ–Ø2á‰çƒ3˜ÜúOl0×`{îƒÇÃâä�ØïÇÀdÿ-ì»),sY˜Õ¥ÛW²‘Þa ô »ïpY`üuP<¹Ð?jS›Ü#5¿_oй…Yƒ+…/=w@” è ÀL¿m ­w¶Ó$U]æ\ä!$Áé² iÁá¤%Õ„¡k%/VpáÃe9ö*jÞ­LYš“¥À½ó6õ‘á¬Ü$8Ù×(ã_'i û=í–Ê5¹V 8vÕ]´.rBôèôÅc#I‡wÌŒ\GÏká÷Åm¨0(/¼Ž×ñ�öþÉÛ¨ep•ßå!vÓS<]êf /b¡À TÏä1³lbk#ñì£ÇJû ã:M°�i Ùµtj1ÖÌîº% ÎR']á+¸>Ûå9tÞÌý¸ÃnGõ]iîÉ]ˆ$‹ê›“Wú±1 Û‹µáEù0á$:¦Õ‰œsëšEK]jªK3†J¿B² SìY¸üŸæÉ¥Zé´;ê"¸7ÖqDb*—X{˜¸¥Ö¼ÈJ<Ö]ª'Ïù h£ Ècãñ)UÜ�wO8¢E4nÛ…#³ XG®³NZ T î " ܘÇSb“`b†D„¼odX &šî™ÌÜW¿Œ|X݈K–òfsÄB Š@¿›‰]J(C!Lcu¡J¸ÏÂ9O‘B{,ŒeºöÅv2 B0rf*´Â# Ù–æ û’Š+˜åöm/‰~‘Òu0­];âxM¬×=Qv_ýhMDUÅmÏᲈhßÉÿâ5+½ˆ«éÂê‚Ö ýÝì—‹ç¶\á§M†¯¥°¯2rîCáú ¾ø(}8^áÛÄúбRÔR—Qj³X”j´h&;Ý z€eœç¡¤µZPt;Ð'å!oÝf4­†C�b %U6ÕŠ@ðÍ+8»Bh:³£ÑD¼YÆ4rå·)Æ×wð‹%Á§7ÅÛLœ^ÝnÊãS õgãÕGaUp)M ]vv<FE¿=Q™¸ú½Ú?l}ÅG7«n(?ÑírþT;ä´ÏÑ8åÌÞ’È뽆ާ…¤õšŽíAö©Ë•øo2ròZC#Ç/+ÿ 7ÝÁÌçg¨Ç™ý¦w™é†š.6*dÐ î©Ì .ïaU L(£¥J“hï à\•¤<àì䄌‚h$çEþ1 Ĥ͸Ư­Ý`¿®dÅÙ$Å ‰£¤ vËæÇQ)‰Òš‘Ï¡8G’Þ¡2§lÊPtˆ“뎔;MëD5ªIg{�*Á”]sHøøf÷iàäÝDe~Ñî=òB¥%ˆ®K¥K¹I�ãÓ÷ýê¸ÂÇ22þuö©Ö¹nºîÍ^´¨*P=Ÿ<™§Õb3[z’Í? àþÎJ¸ÛÕ“)ˆìO8�æÉwß}ÿ?èO©ô9øÿûáÙ÷ßÉpÞÞƒª_"÷ »Ë‡òÊ4w¿‚Üu Mø~ëå¦ð3—ƒ¼¨¼åÄ(Ù@)…Å$ø;:€51îµy:!4�@2%>ËA?<‚Ž™ÁÙ›SäÅÜš×t™,™ �=aŒ'¸¨eõ¤Ü¬×Œ,/á; ,˜õ¿ë Êá¢Zq~ùËgÉ;ÄÍœx¯ª­äº†%X�»×;¤¡=þL‘ÈeíZåš–˜xÿ˜<’j¸ÈoÈ[J ì—ª ôB¼Âˆ÷ñ“÷Stl-éd3ªÐ–Hö�éÖYhÔáÔÁRlB®­Ë<{l½Ó‰tmÄ•hˆ’·j9Lr~áKÆGY‡*ª½Wæ¸R./Ës1ÚµKâCŸ_S�‡EîGœ—n°afÂG˜iaM(JÿÅ2"ô�÷ú 9G®`‡AL“"gŒ›Óæ„®oFJ@®¹Šö�™ùRr2) #s@ŒõFÝm8yƒÛ�_)̰r:”Ð Ó¯£“¹ÎEG¢>DôކNc%x|ëœÛ¾“»‚\\g¼éX|Ú 7 V0ÇJë˜FiÕ4�Ë¥ïéúIÄ®PÇ‘«Š¯ßÖ¤Yß°«¢P7(˜7Áº‘é’ºÀ*_,ŠJ:Ü‘ô2`—>Ïa;·�£©I.¹)Å^ƒè‡þ.B5§b,D–y¡’"_pÈ;¬$œPì-.¯¨ãØ¢ƒ¹�é,bÔ:Sù¬ÂÎÛÌ*ÎÛÑ#¶CÝN`ýû¼Aœ7à˱íGù¸N&h?X˜yÌàQ0KNaý%û%sßÇ�¨má{Æúeˆ�qUê”!Š{Fɺ!†÷Uj^)‘·!:ã‰ãj^c4.E Â5ì2¨+ bE¤í9Œkë�ñO“4㓉7ëûÑ‘uÊnRæEXý�ÌF\FÑ ÿ·Ç‡|¡Ê×k½y¢°=Š0ÂØñf]Á×s¤yN/Ù" ÒMß–BqGlgSš0pdbÎf…ð°ë¼LAPÂtÓø Ÿc؆B%›;æ\ăé¼ßmH靈ˆ™øÏ\�x‹Á´�Êd˜–¨—¦õ|5¦d6Ù2Ÿ·÷›ì²ëŠ-nQ±g¬5¦%÷ ãݼWòÖä ëW´ë\(Âà…ÒnÂ<á�ÎbEH_Ѩठ;>«�P½9U™@Ôøä÷$Ï LjQ“Á¡Qáïw)Q6†î«b€ANð%!,b8_‡oÄÎßž/Òr�YùcNS¢´|’.9(_Þ�I"‚3=ã�FÂê[$Ï$w•c$’ElØV¸Š'ªÅF[Û} òÉlSrÀïàRaNå5ÅßZ€ –F‹‡É'5N’ oCÂwr¸?3ÔÔ¬ª®9_!;6¤ãJ×׿ý1úŸ@ÜØu=C{fV¾œ2Å»ƒݼvÄÝ2Upô&¿š`j/Ý…šä9àd#[ƒ3† ·d_µóF쾊qD*A«. ÈïAý7@“$šÜÊ7û±T‘$ÍXßõ¢Jñel×J„¨µTÀ—Îq²"{p‡ L˜™TZ+§¢í¬ÕÀÅ…Ñý$ð™jš«MYrvþ‹)¼XÅW*xÇà°WP2êù½¥$u<‡±Ú;)]Äöº¤žI\ Hå>ÁÚ ×“Ÿ(X‰ª`³â[ÊZ*J�ZV²2²ªü"¾–K©¿”%K�¤´¸ŠK�ÉÖ ô>9X`pTšl1RØÚNðoÜ�Z≣ËÝHq4à’Ø7‡ŒF:I¬Xâìú„¹iÝÑk eMI�$¢ÖF7�Dl26Ì ‹ƒ—�dÿ!È .Büp‚¹bJ™¨ß‚RªèÆœJ‚HšŽãŒ ³´¹¤õt• NAÆœ“FdzÈ)¼§…{#ÿ‡w“��Jk±¼¢9’%ðY¨N:� Aþ¢ªÈA޼Ô‰r¤•|O|”$ ó|šûòyCûD$¼¤èp¡‡œcêÄ�;RÝÎ'i¶ù40›Œñö�Ò�ð¨Ôå�L³ þL«ó%â9™ì�cAÃû@4sSsGfÃHαd¹ÀÚ‘”Rûßìì\`ÏÕø8KŽ'õ“ÖÜRG X˜=Î80€,òñ ¨0uªOS"M�«@%àcM·lº¢«o-öÑEÑJNÞyqbØzS‰Ž¢*4:ÚN>qE*Òbè,ÏÜÖÅé²²^룈0ÅL¼L)¤‚¢ `FÈé~<yž%œ 3æ\¹:ðº”tyšÉ$OE¬T¥ '-KÝŠéW‹@{“‚ Ê÷í¤r wõežÏ—(x0iè)q)wÆX*ÓÊi”%’5F–É (jÄH·"ý£×OINêEü›âçðë[rf¨°1Îò)c‘ˆH ÿ]#û)j¢½xqÂAÓ[ƒÆU£¸û�v]ɲÖ~j-HoCP±=S7¬­uOÚö‹¯…8µ^qC¡Z´˜ñBU W2z»Ò¹v(ì‘Ð;Ø"bI+Ôž±¸Å\ l–iáœ<�z= ³«fTØ.±°þªyûÁ–Á^³vÔ­™Ë4õüu´eʇ�¤‰½ûIkÆÀ±eÃÇd¯…š^OòOÞGáÜá°hÕ?C#¼<È%þR œUåD%h'ÆI|Ž0‚¶Ôª·¶Ý3Õ&?h·"¿Ë�\Vv@TÑ'R Ø_:Íõµ=°!:e+4¦jºfîÏ2N[–�„íÉ#Ã;Øö$Žd ƒ7š`¶­zµìÅ 8¹»¡¬kf¾t½-tH}Ñ•9ÝRÿ€ÒïP²u’þX�Z´.… r�F©„”4-VøSXAº 0Å^´!�™D‡)QVc` [£F@Vb§2©ÆÕ¹eþD«Ü;Éæº*‡v~mÐòÚ4‡RD@P’&i¤îú”�—]‡(‡&ªpÖâ{Ñ~> -ݚݭòëœ x—‚*ù6ú»¥Ì[â™(ö]I¢75‘6hiØ?¢db·lWÆü‚ãÝ»ßጿ…“³@t•ñ�ÞE�^çx©Ã€¼BË7%Ú‘…q:¤@òãÏ1G'q ÛÏ~Z§…xÜ2Ž—¼ÀÊ»Þ(c`ÅØ”lT²R& NßllU%-‚± �\qÝø‡ÀYÁüÞc¾„5dyAœÙ„ÿ…#¢l<ÔØ¦d½Añ—ý¶~¯~•ägéÁe 8óµ¨Î‡B�PN:뇢âx�.ù’xºÜŸ½ÑÍB‘ ‚¹ÅÃÔ|Ýÿ¬ç°³Sˀ˚o_<¬Z=‡»…˜_Å—�têßÚ†E‚O­• Kî bטmù¿P¢ÈæKèëÿz"_D—ñÄn&©'¦Ìã *‹”åËQð˯Ú<Êf Q‹¶“ɲn2¹Y:—…L¾úŠÅŠJÔÏF7ÜÄ»QžÆp¹�>@Mgüg¹�¼©Ð&Þ7„ƒqÆU,oý×ÃÏq 9¦óŸ/?\F£×—oG'Çc�(Í­(žÔGìµÑ=+¸DKÓ¨}ÄÚ8~?k��}é„PS,$ ³OAHCM›,ÚéD…à# h†ç5:{}qøöÍ&ÑQ!®g‰\'éz„Hépú4U*ÙµŒËÕø‚Í *»· X½0p”K’KZd#F¯3'~Û‹t°Þ0:ÍÉ-žqd†�7«Ÿ©ë%nP~sÙ®ÿ£Ve-pÇ�´hŽ©­H(^ÒkjpC“"Çj³Mˆ®@‚αÜÄÚ#=¿âÂ5è SìÁk�1fU[÷êá³Èà?±NÙÙíá R‚ ´@¶Ë4»ÞcÙÊŸô Ø?Ùg+÷.ÒMp­d†&�x¸ó>HÍØýÌ»×™y®Çs½5 1ç“,/ýŒä…J£#ºÛ¬¢×¸F7-Ì¿  ?Õûe"¤kÝ2Çúf#{ƒ÷=k£ý¤5>À/¥`º¯ø¾M×"Ütõxœ�Æ ‹Š©G㉰ªp y�áÓßI&ÒÎIÍMlA¼%¸œÍôMX ×ÇBļ¾^e ÚCUGðÙfa5&O7çȬýoÇT*pXv\av�#ã·¤Ÿâ«bF…A»UA©”½T·Î� ¥Fþ¢²ºu &ç/›lzæ1¿ú�žþup.ª1/£q´ ëÝnÙfŠ[¦$@|/Å¿ÅIrÄI5›årDAÊ! к ‡¡d¹ÁèŸ3So&h¨iï\ ày¢jÜà ãäö¢gÃï†ßŸ÷å�§O¾Ã¿á¿½ïà¿= YÛ{ÿíí=ùqû—½'Ïÿär¤’‹mŠ�¼æŸâÂæE-ÅNjl¼Y°ôIÄb�´i©�q&…§�©€ÜAg½¼ÍàZÎ3‰kE q/\Ø$:4cÄ4²$͈ P†Ûý{Êžßë™ú ½þ„* õŒÝ¶×OŠ|½×#ø`F�e:›žÞEUÚ_¶Ì§ñr¯w’_ÇB¹=®Ø`wìÄß0˜[ Fí)b#ÇØPm$×MO ˜Sq/8ü¬SÝâf¡ð„W�OÖ�ï)UãáJЇó§¬Ôñr;pa⢴œ÷ó`ê0_O¨iMý Á×™aÈpæ:î!}…1nÆÝ3ÕK:oºÌ7^IqØau¹ø£o@ìwØZµW)ÕDl™(YýÏÙz‰Kó0 [ɧAãÆ™øõ=�î xG³4„ÖhFn�¹5þá3F14Òƒ]££Á@Qð•:0YÝ z@ù*jc‡Æš#ë {[c„ý £2½rÄYÙ0//šqé×®šŒ£ ‡â¹GÚÆ°äv#§Ÿã>ewéÞTæâø´†Âè3ùHe�u¬EX£9²vQÆþs� ^4] àþ)ÛãlÓíFœ�ˆi˸Ã?{OEuü¼¼¸o^Ojï €ð®÷¢OÕ-´ƒýø^£+ñ9$t“�ªyÛFÿÐÃÿå,S"|Ò“ÉVƒ^_FQ�møë^2á>_ØÏW Ä•Ýù®É3¯²rÆ(ë5ócö�ÕQ3Öƒttœ=à¤F ³™J‚ �Íß[I˜™Ž V–øÑ¿àQ 6_Æô>§iž €0ã¶–)Õuªq‚òzÝ.Pì;ßúek/B9»L‚ WÑ+Š€™CÄ Êí¨}Jo²ÁýJüÌ×~·ùè¼¾_>ÅO©’jÒišãéA.¿À0¯øÑ¼ÍkÒz„¥Ö£grsÜ`ób�Ž_ʰªØÒs¡ìkÉÖÙnŽ´)'vÔbñ�ØG¼~þ0K0d̈õ�O]ï�vÖqÄå(Y¥XL¼ˆa‘È©d»ÑGユØYË¥¥s(+“e­?´±H〱ýGfB˜¶Y·˜`±x?DŒö°-Î@Îþ¦HAŽ—‰YkÔɘÏ‘æx(¥ ç‰oKKt{†Y· Âß{ø¿´…˜“‹Œè'V"*±J8&SâK.ã nkÔ{a—‚Ñw±‰sK1¥Õ”‚oê²`=RMuà |,s:›µîŠ¡+’edC£°Óœ±ÌŒoA¯¼Y6¸¤zåÒ�©9á˜ëÅ�»­YÏ¿&Es 9åÝ·�’ön­æ¡Ndš›vzAåa\UI¢—µ’šë•BDàhÀâ½û =r°G£Ä±AiŒœ9ÒÙ&Ödž™8ú¼k*¹Š—šFàÉPxýÐ#[x:KC‘°–ͳ�¬óòÖo_E~< µ_fézíw·óݤ”½]Fc~Òø‘˜Â< ¢‚ºæJ‡Lm±ôàPˆ\z»aéî:ýŽâ¢xï¢i·ÆŽÕ˜zû|„[¸!] IO®a™VõÝÃçÅ)¢æžG-»ý™;KÃ[Æég2»�Ôh-O^ü¶£ÅMn¹]˨dQ¦Þè{9‹�‘g•ä~ˆ!ß³ivµÆ„¿€-О#Û7ÑÎ¥!E¬~Öï'�­>(ÉÊÛ‹öÏøt*\¶Å¡¨Ñß7)Làju›²4€SªÂ(ÂÇšùE�”Fx~ìtH’ÙÇqÐ¥lÙÉÍ—ÃOZü³zmém‡š…T3™vÍÉy®>0�G›Hºý–�9¬wD/‚2_ɵô›,b»RýÎÊ?PÛ=ËÍj·{÷K¼Í}H!�R°†—qY!»õ �ŠCwéw4M¤%Ú�¨¯L­õï& §¡Íiº�¹Õtâ9ðá�´n¶6k�uϵ½¾­x?òë%¬~´Ä+3Öý=ç¾L ç4�tFƒ·¼  ~̼7/E͢φ¶ÇËlô:áuú¦H2$j·ÌoÆ·+4šûeùMŠmkãÄ´L©$lH<�ÑmšÅ‹•jdY´›(‘3àµ9€(Ù«<Ð¥ Bh�—øƒ~ …V_ŠaIEo¨&Šªkkãñj g²€lìªlÞ~¯¢ÔXJÅë�R¸Úò+‚ ŠË¸û£†¤H¶ëdè¶g>Dl×!D¯®½H$ïÐ8´ôM’w¡Y¬˜Ž#)Àö Òˆ©á#S´ ðh+½;ÞŒ33%±›oöãl¬T[T›ãܲˆ¢TbVîÌ�\ ™¸&­!¸�Ťä%GaZ»£Ãã3ÝG@;!ö¨zZ¼<�+̈óN÷T û�b‚yaÍ\й0|yÛ·ßDLëˆ=ÒëG½èA ﮩ¡#7ßl áHªg(ßè e§czÕÖ¨x(¬Ø¯ÜøGòKf®’_²'‹|¥žüëÄŠÒ�ôÇjµîGÿ:\/ÖÛãºR6êFm¹U~§¡W�ÊÄãËÑÅ¥¥v=ðvÛ3×›ßW­¯²‡qLl!¦gïã°¼ç «¯¨ÕÅsÙÁR°×ãR9ðg§��ž"yA|ŠASœNb\l�!h[·Þn›Ù©ñÎyÖþ0¡ñå›ósaÜÄåïÓì¼E%{Íû}övìì%©RØØqë+)€là¼X’ôŒk|»^Ëì§z¤cbX 8èÒ7"À�ý¯/²]Ùf«K…´›þ~£' `Ù,5““´sA1ðÀŠ!,c²|Ì 8%ÞÇ(YÀ[Î8÷ÍFqŸÞ|Äü. D²¶3 KIp\×óCyw"uT�z’ ´kŽÌ&\+§r±¢ªFŒ’À-ò²Þ–ôž¿¾Øy(O—…ü£×½7ÀÖ¢N8h,àjÕQue,K9bøçvþÿh;×( £¬ÍbÉU..š7¡ž¿�CÍÙi�ªM§f0.Ô:�HûôðKÜ‘›˜Z$=ht¬”6A š)q²Ð¬WØ^–D‡cD“"&ü; ©V:6Ž—¡sÛþÑ3 î[ Yjh c>cës„ÁÈUÚJÃvÏâ¢Îl3Þ^<¦þ@”¹°aÈêpŸ¢|HÕÅ4Pˆ4Hž¶a`l*ÙN�ÄS׿0_{°"u0dª©Á8j_þðKô¶­<�Œ—¹Š^#F)«Lš=é<ö’ fUß`ð ¥ gUªùOr“?Ð 4ñX�-!Œ‡<@,v4©QF‡QcŸNèsÝëçŸi@kÅ|ë‡-,z§|1�áFòÜna\‹ûî[Zª1ó˜üÆMG&5kÌ"­î7º‹ö= êcº¤xox‡õˆq…2ÖüRjšt®Þ¬|Ú¦VcsCÍ+ ɯVí0É.·…"[ei*rçk.€$øRõÓ¨&„½¤…hÓÚî.Ój„¶È@½cNJ®®ï6‚­-^`ÌDЊÁ8¡†Å~:ü†G§[8xv0ÀvàJ軟2Oá‹Æe&YG÷ÞÔ—Ìå«RîŽoÎGÛ(N\Îë+ÕEö�8ÕÓ²}°9œÛ=ÛÍþ¤í`!ªÂÜ} kçÁï̦̋tjP˜”°>§ >´½Ö~Usd´Lz$ÜoC'¥§w_©fëp–Ç4Þ‰v\8[‰ûʤ‰¶D34iµ¾àF œÑá?£•®C™<,÷'õàí¾ÛÜB©Úµ_'q@°0ÌeÒp[3z®• ÁÍhÈIW„ÅQP£ŒÊÓ$MýÃDW}ä¤I^ÛÆ’Ý£¾ I$ýÅëh]ÕW^Üoœ%!j6ö†Ÿp5Y@¯¨HÊ%Çš,+ Ž1«#¯oa{»0¶Â´øhˆÖ‡Óð@¼˜�”ÍHd2$„YÖ7Å¢¸˜8ßΗñfRW%(AƒX�*Ð&…Öx£(q²÷IÈÏnô�à–«q0…h\‡‡Rä'ìÂÌDñ¤Fß5ü–æep‰€-µ:ÏM¡B³‚ñ]3ãWƒFº1W¢±ˆÞ s¹‡¸t7©–Ë®iéï6ÈÄ ®(UN¤)$jg¢­š‚0 tdÆEƒG4œÑDãò&fj%U%äì.Þ܀׬LÆ)°‚àÌmm’§4Ör0oÀÞ¨ítg}Ww«~A¾a8A]o6Yz-Àh¸’rGë‘+��6õÿ·¼j©áТ|,^íÇÙQê�¹ 3,»:Æ"e{?:!ÏMÇ*ŒuîÞ¥‰òš’ÞÇËëjQä›ùb@i~íT†Ü-^ ›ªƒÂŠèiìR‚ôrTók�a§½¤ ßËÏÁ¢÷ð#ŸRP-/ÄŸR¾ a¿TˆÃ üåg3BG#f¯N  3œú!á<»YýVM” ½\¨9еÅ5£ûZ:,¨ì~ÅÐL‘Cÿ8›e’�9½†Y‹=Ô»A›t!ú‰©%lEÛ±c`9|=«*Å�š…ÐØBåúÓUÙ~X÷OÇXŊ߃¾äSäþWÀÏ+^ ~\G¨·írx¬ˆ,§éaK…nni·«K)Ôu;üÑJ5¼UàTE†ƒõ²—F]é@﩯8Mà1bi³²Œ'é2‰4à­µë¤pàÍM)ž‹}®“Z½RœI'$ô0 Œ¼Z06Œom6©¦u¶^p²S8ˆÜþ1.1EÍá±X~ ókÃ,·ÇÛDé ©×o3ª‘ªålÌ '™A‡‡¾¨¥®ë"{½…¢ÃøUÊÜÙ(©Ñc�"" ßÓ Ö‘Â|ˆÏüoÚ^à,~ùËAuϦu V�FäG3Ó^Ä3-Ó™ã×6r–o¶)�úZuýÂ;ô€¬Œil/ÂÒ&èldE }•KM¤øÞ|AÙtÖ6êÌT%€»&ý i,’%aÑW”¥X µ4@+q5Peu9eŠfX«)Üã‡!A…Wan@þ|GNˆ®ÉWÖ‘®néâÆ«0aÔK +�ä¾Dâ¹êüü~D%k°5x5ðÀ¢†·ùlP0Aø iÏ@œ7¦¨Ì¡U ´A?$w¬šC5à„´•…¸Û^ Dð’?µà”z`.J]b–”]’ªæùÁ1êSÈc%¬¼øZ�NòÜË_©[,‰©Tì”JühTïNxÕ@LiôÌ÷%Î<¬r=ú|Oàîñ8Uȳ8Ix»ŽTVØ£~Ýì”ÿË.<% ˜r%ÒÀÆëµ*ײQâ¶Ë| ëRŰñÿ•²x¨ãM,(8TaodØÔ� •ì-¤5†g5ÅrÝп=+Ow‡õÔaï&ùŒ‘·Á;ÍÔÕzˆµ/_wMáhllÍå8þ*hß4ÒnÛWRl®SLk1aìÛ8BaÔڈÍÎþöì½t�÷Åjto®4Ð*¡€ìõÜÍíõ£�©4GÒÈÇ]ïB\ïíh«èÄ aH’ÂÞÇÑ�5§/¡{I~Õóñ§o„Zõ“Έ=4$i…áÔº6 !o9aäásŽ›)&ýûºš_H=êÇ÷ŒúhOXÆËTà‘­#{½ZiÑÈý英¾upl»Yí?r^ Vaâ…CÆiÜ'Ì�P±åY«³ôwcÅÿø- Îä«÷îÛñxø�0{À)„{7@¨7DÁ—¤�zx#º|4ø¯®šæò”à5£)ñ¸ÐØ·²Ýÿ¢‰YÄÇXzk‰wI•©U'÷’j9åÜçoÒY�Åå—÷6C©TiPné­¤â¡Å;Â&è(£º>@ÔZ*#(NVüº�窅ۻ¯“YjD›rëØwÞxîë¯&Å6´´�Tñ®µànÇë8x†2ךÒ+Š5U ܱǤuÖ'»mT�Å«ºi½e›u°ØF›ƒ??J—U8àç€CçdâÇçúáÎQ{ •È2•±ÐlwÖÀÄqŸ³iFðK ËwFé1 t{®­zGpf‰%Ž’ÞÇÑ© òID©“¢qJvÇTúJÃa^‰Ð±üßTħ ªãý W ÅÖ’l@.„ÛH|˜\ÙÑßÃ…Ë­.¶u¡6A3€di1,X7[~Ï‘ÚÇdP¶X�èñfVªºª1íŽ ±Û阨2¥B!×)'DcœŽÄϠݾœ¥F98­‘·¬,²Ð–™Ò:d sywMž‘ל]îèwWµâæÕDru0zï¨ÈWŒ-ôµ ôÈÉÃg¿ÕÅ—¨Q[�4fkÝÈÔ›a–_¯1~ñ„G»áÌXSc’5~¿mžqø)�ólåGàÊác̬êËh?¯-‰�÷}ñÙú©k³ì�Ÿ/€#.=’ˆOAJ|RÒP‘P‡Ç/�‡ÉUy­!¨e|6%ÉÈ0°MÔ¤ÉÝùµî�fcA[mY&ôÒɉܖ¥KB ¦wr¨§ ·+ '¨Tê$Ÿ—GyÑ’×Í“~¤ ®Vmkã‰`nãõØÓ€L�àãI�_c ái…°ÈFg6øž\$j DO'{ÃOÓr…3>„’Ý5¨ñø+ºP"Éõ$8…«'ÃGùNêê­ Z¨6¨8J%²–t,-¸Æuý wVî“è¿:Š—¥:ÏážG‹E‹è&Q�8Ã#BC�¤ÙÞ9'Ö(Ï]ìîá�µp´˜\P�Nï6ûêÚ÷üAmûÀ3}yKeUÛ zRxÕ£#Áé!�œ\"@yÕ—÷¶­Öa˜Ô:qØÝØn_÷ׄ¸ÞÞÁÍâdÝîȽÃ'f˜Ñ3ìç U¼2à{Èíœph íš�Uò&[zÑêÎ jUk‡¿ÖvÞ{ªì௷p|nê>0~Pö1-ò,ÒñvB;‡´˜ä�P”àG~Œ—›@]V¬SÑÁ¾r­5|Èúy{âz:oüö¬p¬ã˜Y$A¯5©°š¢ÖpŒw?Š1$Ýíì¦%šG¼$AQU—cP:°¢ "°•ø[¶YÁ+ßÌ.Ó•Ÿ|AŠä5å°’óÀA_㯈fÏÕÈü›üv�ÉY$ßmü o/Nö4V"–ì‡Á¸hõÓ&"åGо“‚?˜dÀˆ]cÈ…{9ø:¢1½= ¡÷U+B%�F_¾_5ûÌAH݉jÍá„'.¤ÄÚ1¤$Á,»'®ÔÜ_ä~eMÁÃ@‘ÂEÄD<mfÅf†—w¯ \õA©©T8Ü®çÃãÄ—ÛkçÜŽÐ\ÕV@ä!bìN• MlþnÓà 4%>„�š.ðŠÜ_´Ýjs ö+ÆjcóÂÈBÄD‰šO„;í|ùÛ{>l,È�Äšäî1ó­sÑ‚Ÿé„kYªª.u±›ÄDåvƒÒ*-ÉZe¥Öj–ÝN˜Ð àÿ–N¼%|ºNý\�wR’]à.óI¼äÚ`£Œód„©1Jvô’ >˜ª„© N-űplÊF¼áÀl¯´×h„’Š�kZÇcq*w[f��šÙkø>‚=¥l‰–Á¬­ÁH0«Krœyà‰ñޏ\ák=’»UŒPê¢a7¬p<½89<ØëŽ^_¿;>¼¸ìõOÞ¼Üë�_¼¹|óúÍÉ |Ç5#ß`ÍHúG¾z}|rBñ%É�ãýWnáÈV ªr£‰a â�éÜîòÕwø1Û¨¯½z{„´£¬u9‰¥o»zu.Œ,QÓ몎À?J?µ7™(´³3Ф´i=¯÷‘Î)®ô4œ¬"’ûaSGoÇø£÷ÍŒÀ÷_Á.�—yK.-»%tauí’ˆF“<ËØ}ÜÈ Ú¿VjÝšÎòVŠTèœLÔÓ´e6E÷Eß}1§\º¯v"ž �ÉóWçƒI\ê*ÉÄÿTW%243‘ŽuBÃÒgÊ` JZ$”"óU@¢_ä.:¨/ ¿ÞKÓ[à{B•ƒÉ$º1¹m£FÖ¸�“CËaš9ër…ú�|3Ù–Ð¥«k›¨Brhu)f1Ã/­_„5�ìr»´@ï»q¸ˆd×µä5,£GegI\$+Ü”âÓùc÷ͼMƒUÝR %˜ÒšI.�‰¢€% VB¸ÕèHš†÷´tÚ·(  -Dhݨ–˜¦Vëêö¤­PÂ�³F¢?š¼P6‡×¹KÑg‹†?;‹ÔÓ‰z^ƸýØi{hÞÿÏ‚­oC+‡a \ÊúÉ‘Ÿ[…¶ÚŽÜb?îqÖ#’C½ùGErœÖU«‘³¬y³&oÄY7雃÷"´Ä`»Ø¢Ó4Ûît¼ÙÑ”›�­›’l"ˆù×e¼Ò¥QHLNÉþdþò2 „L±k¹ÈoNfÎ÷жÒÔ+Ô2�“ÁëËøù!&EHâ94¢$yg uAŒmøã/�à"Ž:] øÐŒÑsZÎâKÁ]N~d~ª÷ûjû¢æïÀÙS¿™â '½³‘jjeE¸’ ë%þè�Q6IUÅ¡ü˜hÓR!�1†æ›4±á­û\á�p-ïGgÿáÌÝàht::y?º8lÌà¡ó7—‡g—Ç£““ÿ¸z5º8=z{r5:??9Þ]¿9óÞàpGgw)˜i08�V!™;ÐïøÍ>tzuxöòøìððâøì¥—‰äÓ4^F‡ÙD?Ê%…¦—¯.G—W—ÿq~xõöl|~¸|t RþN“~{ö~tvyxp5~stšþÛ Èš q°ô8ŸU²½xÂ}-�ÜW™ª¢ýÙ÷—Z3?3„È÷Ü èR\ /d¿­Wˆ íí_ËÂ_Üùz‘– o×çø ¬÷—÷]®ã•$~ø’n±Ãü[¨$-àˆ#ÌŸÏÐ[Ì<—œ(ÿ wÖ;Ûö’zƒ±�lU[ƒú`õhíÛžÕ[€ãÜ»fÛŠèȈµRb¥@škô½*_�²$\°Ç9|ŒtáAúš.òÜŸáô¾–«ä)ï?¦�„IY4¿lg]hnª�*ê[¬Â­:=¿Ï>“qe RDórbV°JTöZWv¨�F›0—ðánS/Îî6Ô2#5äm,#B)øÓ ~/ðÖý“³æëwP™xÐ%§¸´ýS{pG–�bDj¾�qÆsumû¬Ñ ÞB%¨ŸÜgùXÿ½ý®oÐ}€«Qæÿ«¼— ‘ŒPñøËgû*«p‰ŸØ-0:—™S¬¿ÁqДéy–¢ÙtSu!t•шŸfüån¦h˜°•ü†žFÀèÌ`Úºý²�™vžš©úw›Oc�I­Êš/qó!ÈU¬EÕ'ˆ¶l«+;›Ö‘JcÊ1Ë¢:¤¨Q´�T#—�á®…ŠÂü ÐÈÀv„UcþÇôHd™^èðâÕèdèh||={½|½~3†/NÞŒ{†Ë†F`�«­#nÍËIyDÃÕÐñ‹¯1¤9[æ%éfezçmÁX˜) ÅAþÑÁÈO!Ä ½÷%-5?IÖµîWá�·:=²X^/Û'DQí1« ö^}Û{ù¢½$ÄXþ�Ñcñ{Þ®s PZÉ3µãê[—]ŽŸ*÷Òë>™ÞÎ 9qŸ¿Ñq5†ÁÔ~k´=ôQÄä¦ÑG²×Š{òº)ÿYžý G²u­ì³›¨k².�d™OÅIضËü:^:£s›™ìFîøRic*ü8`Ø7£°}Q¯:„;®%—Ò~6¨õŽ+¿Áð‰ÿn”üì}C^0Sýû„ñAá{}̽ÞëqÐ+gm²rÐë‹ìoKÙ=\Ô+]Ó¥w.¤¶x¯o-°½œØÊÊ|ù¦�/âR}ƒv ¦?³=t³Ÿx úÙèRH7°ãù ÐZ€#Œ6³ªˆçåŒLÀ’¶m Qà™1âÆIr”«N@�F�FÒi=®: ¦ú!o`Á‚稔­Ñ‰+=õí¸>öM›¼v'Ÿ(˜÷’`:è®ôYÙ|Ð’{†A ½d@v®õr3÷[ÉÎé‰Ìh±ïÅìj©—¤ :Þ sƒùçcíùü{Ë?ÿV¦òÝ,׿å¶éc*%hb?•zh4åȩ߀Øl€*Ú•L[§ò”^Ý–_ù]îvüשØár[‹—c‚ç ¸6½sì N!‡ª«²a£GçÀw®£My3|Üç´Êm‹:Ü�BÈœ4*&v»<ФÒïÝ/1$]8¦ÿL½ŠÑx¯tÊJJÅ*ú|ò³§QW)> €ï;nëîØâÎF pº#þã¼�cdXmáeK¯¾þ»W‚«_#»°�Rô€ƒØÇí/TÛ:DÎàÛÞgIT1ÒŽé!YµÝÞ¤ÒBw\»}syZo]§!½˜áĬá‹å/©ØoÄ{»" »îvØDŸ({j@£,Uï43IÊìœ3B�†Ë±ÙM-QÍɱ#íðÖMRɉ?¨éÐÔ*­ÜËÿ"½B0•IˆÈÎú–ŒT¡•nŠâv4¸¤�ˆ7ÄX�µx@i�"Þ·#ñ¡it^!¯R§®$ò´£º>/Š*Û©DrüM%œ�x·3üõšw,s£‚Û’Œ®™�+®  ÛS�‘ äÕòa“JÎ=LRÁ+‡ÛõEÆX,ióɦ,ž” Xš'ñG*òW‚´0à»hX.ˆ�aà‚ƒÒ6t×.$陉�~™ÆÛ㇌Y|îÀ)½¸�èšÇpW€…�ƒ˜I ØÐ» äi€A ÛDíhÁÅóÔ‘Ø‘©›#ɇ=Ä6:‘Œ0ÙÕtQr@ÆöÉ1±7¶6€î_¿uq²: EWf«Ï �¬GŸå{ t/Hù�ì�:ø‹ÀOã üNGD ¶Ÿ£)aÄF£ócG딃ӳ’åú™C½0w�\äl…ŒÊܵPö£Ï¦ˆ�¿æ›]O–IªÝ¹ ‹GX� Hï3S¤ ÅR\Dsžªm3#ñ$FêÕé�Öm@ÊW°èÞÀT󜗔”!éŒ. þí\_ÜÆUÅ.p}.ff´íòˆTlpfXŠ…'ž¼uú„éa@¦«ä p©´ˆbgKÐ’”oÎÂBê˜JçKÉâÆØÃwõ(-ÑžMy“VÓº�ü¡)|ö„oIÚ'ÈÔ½ÕÜr”Éçqß3žùÑv,Û˜>ñd|âúsÈ¥²/[Ò¡»5ãîèjƒ*HzßÛØR+©ãÁ–ž}µÕzPZŠÄÏ�R!W3 rN›õúÎïÊv [ÿ<†‘ü|w,EÍ?d–hF¯Øj�¶t!6Cdl%à é±þ#q¯Öľ!ê0&‚ž�Ÿýð I”f>:P’ @ÐmxC�ͼÒ=XÖf)¹ÑÏ8¤—|jF´ÄKë[½³´Áa-›®$HßZœçþ¸‡ù£ Æi+ jÐs¾¡`�ðbںœ{ —¢ýf’Ða²«$ä¾ É2CÂC„>ÄPÍW¼<`¹cIƒLµ…€ÎÕ!ºî\dþ|Ó¤Z¥ˆ‚½r1´õvpêú8U_ŒN¯�ÇÆÔ˜P]]ÁB’ÒÎRn7ý×> Sï]Ž3ïZ[c%Ó�F‘cKr�³h±ªC#‰ ±�b4¡yS¿¿é=í�–T{ý�l¶o´æ(>ƒÉ¾, rtl__Z<>¯Q1¨wu´lpQÑ/[ÇFN-/ q¨*ò%1‚ŽEÛçG#}]N¥„T©„"•ø ƒR°†Á±è8”=¨ïh·•"é~Ç€%¸Uª BÆlïFq«U\\sÕ@éV_M ”ñ�MÅ¡Nr�O¢¹º»!:îƒÌ]DzÀõMu·Á›J¸TcFxÏ,W[ËRù &Ÿ�9gÞe‰š±*­+„å“pP@4EŒ�¸L˜ž[ö¥Nhf]ú$Û5^›ñ o/¨Ð˜N,\!,C¦«%‡ç„³`YÅÑϰFEŠ%=ˆ!Óf9³ÂQöLqµœ%W:å¼cê‡NR#‚¢q í��V6 �Ççj+Ãz§mµÁnL'<í˜*ˆF¸gGâPVNI�jzMñ÷ &8óE |ë©©kÞ¯»›”‘’IŒ2K�ÌÖ¦@¶x*ÆÞ1õ;Z`„h¥7 oÐA°kŒ�ü/eÒ‘ƒ«dQèÞ§}vŠoé™Þ7žÆŸ¢ù}¨wbZzÇ.r9ï…îx vƒ¹kÛ"`—v'Dº*ecŠ‘üeW­í¦¼ðfjaw[°Is50æÎ Þ_ºp|­Î œ~x@L¬T>ï‘&ÖÇÝ£j§qeÖ)siº¬ ^²å§œZ«,1Ç7bý>û„¬Û ™4ZÛñ¸„¿B4ß.I«/aе”2�w]‡¥9þ%Oÿª¡Q/¨Z1•wgÂ+•ï>1–¾EЍ±@PTÅ„•X¦)¼�ôZ·µrNÇñ—hŽS��%çÑdóÁí=7ì/€æT¹èž %„ij™À7#»lý¨F¡ÕÌ“ñ¶œÌÉoºæäËL·:Àñ\+µÞ¡YÃáLWhVÁFè>á)Áå>Q7±@ÌbÇ;&{Ú>ê%ëË¢K*Ùét¹Ìç'p/wà» ~Ðeµq†fÖJ ÊRwÖ”“‚:¾e² K•v>=ÂlöÈVª©w8y2¨xÝJÞ'ߌLJûdzĨûË–”\÷ý{œ8�%£$Iñáx‡e:H5T(°Zf\Úç_ �bÀf¦�➥xi �Èñk�£ø°)q}«;¶µr‚ÌxéDâj¥ZÛW‡> ñaŸ/Ö�‚Š“•cþF Š¡ë@Õ˜csÐJJ*)æÖ—Ír=Ã6¢x©H*Ep>t9¼:Ç=±Šv ³ë¬sÅ@‹’¢|‘©èLm°mhv±ÁöZ|â‚Õg î o ,Êü‡7z+shø¤!““Dž¥*)(¾þ¼Hó"%ÇýûŽ 4õ—§H%oÝaxשjõþ‹ˆu²zHü²ÃþÑÏÙÙý�ïš×U—ê#0HhôG_#Ãwh8Œ§¿lž>ûáû#«Ø{ Ãúw-=“™4Åʵ( üÉ¿leEÕ³ÐÆÉÞùk¹ÜØ cÊ÷H¬âÀ°gOCt¢]¢¹Fõ=ó’ k²ô–\¤‹‹aC/Iéý¦Õ]ä 4P0e]3K}æ% ·Ìf?.2ä±è§ší2máWz e"hZhh‰©«©>PÞ5={sy4:9‰&ŠÏ|^JpŸF°àú …çHbf©fú$,²Ž�>Ð8ã¸Þ¤;8ОKöDF¿?Qd_G¿ôÎ2ºwß�.ÎÞž½lçÖ`Š®¡È®ˆ} ˆ ¹:á|²¹Æ 0ɪz”Uˆ½¾8¾<ï¿¢¢È¼`" Òþ0ŒŽËŠz7À>V¬W$ˆˆÌ`­¹ �ñº)¦~/ud˜ø-é5“�Ì®,8øñÑó§íý@ ×Kâ|G‡¯N/¼ãNEó’hoÖUÉæ¤¥Æ€²×KöÔÚ�èÑÍ¡„Øg½ÏÛ#ø^FÀ³¶s©¢}x0CcÍÜzñ÷?l¿Ø{~^Ÿ½?<{_ü�¼˜+sX2Ý2Kô ³ D7M$ãÄ^o/ó>>;zâч/Þ¾”c|…‚"¥ Ôý”–Uµ‹ý[b2õâX«—pÇ'ˆˇE�†²HÀu,Ä€¯5=‚Û!9ÇÀÊ~ôsž¯–q?:(6ëxÉAŒ¿d†$çÈf> ˆÑÊEîÝÌ9‹ß�ŽÌ� ê­¶é†ËÊ:ÊÄ®(,ó�÷Ò�!FHÙÇP{Ù·^à$ŸÒ*¨Y¼Y¶Å;à ì°oéÜ# >l¥ñÚ¶¤4#lY[à‰/Æ :–RQÚ,aŒ^§/ò¶‰½>À^nW¸¯¥ŸàÑóÐzn×gà 5Þǃý"¾Yj43E¹'`D%…¬a(ÎèA`±£»=zîó[ˆüv Z’Øo]Æà±œeþ²�ÙïÒÄ×9¹3²´ò££‰%Y…8Å’Nºt·ïI¡ Âù"ýU»n8�]]Á¯ól!zDÏ£‚@Ï@Q�>޵ŒŒG’Ja‡Í– Þe®Yµ®ãÄœVX;ô‘rpæ ÚH-KXŠŒ©ì ««:9‚_Œ[Wyœç ` ‚ £_2 ó¿QÓk]2OK1Ì�xÙ…®tcÍbWû/lí?Q ÂwÍ0Ãhm»ÿ©»Sc©¸æ@W�'˜Ñ‰�ñœòLq™må`”ÍŠ˜K*¢eEIþGÒ˜\›ÔÑØ¼N)‰6•SV; � L£†¢5ƒíÀX:Q%mÁš"“v…RQz­¯ä™ØeW“4«íÇç£Óª®ËØxSà÷£‹'ƒóÚ/áH/´óaç„H[W »wŸ-¡¥ÄŒÀËê ÿ¨¦yeCéâ4×ÅH÷ˆ/ˆqô&ߘTëDX�9„Á~+}°rÒ1»YµþÌêèòüá3 42ƒ×" ¢ž†b®½È§Ñ,5io©¸�†¯ƒüzƒ&86Ÿw òd¯ªõ :œ`� /±Yw74apLo³ôÓàe±Y¯µØª­ÈãS\a:¢¸Ôx«F~Î5ÒWØ̽ga°Á_ÈoNPå+5\ááÚáPrØ­èg=€ÖÑž`wÛcŨү]fËÆò{¬³1كߑÍnÛu›V]-7XÞ1ùeÏféΠQhZu¦‰cY­CÓZçbwmY¬¢”º@±ùÈ—ï%uŒ‚@ÉiÛí¼Wu °Ì@¡¿Ï6Q(°Þ&�ħn>ÙaÙ2×:ê·«%ËØ‹œ;= ;gb×˽i;ùjÓ¯v¤Ìëh<žª¶¸£WETæÔƘM›Ö¹¿>£v¤´éûcÞ¶g‹óânkƒµQ¼ÑZ-=înø®×ìgÆÊlé_gùMvµ.òO0è+ ¶õ°ho”Ìméò…-YŠ?ç8‚&Ê$ó|އÀ`#´©n×Ñqk±§ÓøÓþÁY«Uì¼4mÎŒ”Ëh¦–WëÝe’œå†m¯ÄHØ´–ëÓõ¦‘…Xý‰ò6JºŒ0‚gFqû(ÊþŒÇ4„Áþ‚Œ,é—‰GÒµ+QhPŶìÞŽ©VÖZâP\t‚�)<²tv*(FeV•%'‹ÛþíñÌ‘³Æ[e¬â cbj7åþ h‰Ï°N§ o”dÀYÍ$ì€ö_.®`[”êÞ kùÞÅË4ÑF}rFÈ¡w©Œ²z$}‘ Ð|šÁóµöH~6�ã8W2sD”κ¬´ëŸj½"k�±ù1›×m=·Æ ;ã6ö£»á/Ÿâ§/†ÑÈhÀßÉ4Ì0ù®ûòú‰‚·WE=‘--«RKÓg¸ïá�¶ðcAœM ϱÕ÷4:}An@¶¿‘€|¡þ¾IÃÅÛ¸#'sùÉI 4Û$/Qµ¶h´NÏN!óÜ>7ozÓô’òµ•}ÀÅ׆•~‚}-ib8¾4Æ Tá\ö®òBµårí´‡‚jRP·Ñ£gœ˜ûã?|ÿÃcŽ ˜$óAtÓº5’ÿ.Å‘ ¸K×ñ½¨Ï‡ÆÃµ!7Ù“H12Äk²Ír Ü�ûU¥‘N rÒ°+{Å�+ƒ±Ùºº;Vú+âÛ6ÒÔÏêhš‰ÓG7ñ˜².ŠtE]yõ\šÎµT G/(ÍÆ)äg²K7 –œ ÁhÅF¤Õ%©13Lq%V=Â>bÅVñdpJ—ÎÙ¿DœŒïÁÁ>÷3°±l�(Â;Ä1ÌÛõqý]‹.Ü •ºïÓêlI±N³c* J¬\ËGYÝ—Sâu©òíË•´˜ö{ê>u~¯o®vÅo{É�ªu÷z×Ïz×̬Z·&/Z¤]˜�ACZDÐqee�¢b­ÈÔ;–ãÙ=8 çC }…Ûƒ•S§Yƒ9ñåaÿ›"ÉÐåçP½ã ×1ÔÙx(é:É®4ª¬PE«B¦ž©S´u Ñc¼Ê“Têg¬z½ºh'ÀÝ¥;å¥l«„¼R4Âí,…5 jŠUYÚ·¸Ca¹D³FkböÏíó–ânuÉ•4ê§0âätÝÇaà½?�9¶Á�9Þߊ!tüNÃZãì´Y²>.ˆ¾û±(ôö©.»Ê¢¹÷ ìzdl.ìÀL§!F¬’òp7kÊ+˜ÄÙõõª�i±�Æv†’&üš›“ÝÃ’/pqkg»é±cüºßzr´p(W¬Ò;u¡€ƒß7i $2ŠÝ"1R¼tV&á2¼PpT¹N�<{Ä ¯Ö®8â†øPtƒ8® AQÑv2‹åmͳ Ù©Ø;UÝ ÕÁ€Ÿì�}è0µˆ—Dïr¯Ód·U9,(ÿaÁQv/ôþ‘Jr�€˜/™­Ž­$—¨%µæ?ÔqzJPúhäÀ ôlkšÇ¥0%é´mÕr Ã2ïÇtÕ–9]�´66¦‘öƒoj~g—ÛðÎ` &½X�£‚ŠP:Ïm™†HÊ6±Ð¬œÒj>®ŒpDÜ©ª“—Ãg¯Fï@ÀÑÛû:~€6\Õke×›+n/s]ª)“α¬F 7 •·­@,ºN�×ù:µ@δ�–ŒnR?.íˆBU1a¸Œ,¹!çÆY;¼ÌÇVã­ö)ó¥½®“ƒït?YbVÃ.w;wÌ@Gær'ÆáTÂtÒ},KNÄÀqÖ#ˆ¬>ýué.ãÃÞ]Í%\ùX‹Å~@W÷2j#ö4é‡Ƀ WëÅú3A(xPVkÃF~ŽœSî˜#{eÃaAJü‘Š]g„™AeΨhE™(;B±NÍ*Õr¢Ü÷lGQ‡‹ ¿:�ôœ‰œàN#_È>±ÍЧ?]oºùîKÌ,é쟿Eé{È¿teJÐD(À½ˆáØ$¡µÙ�‰7Њ’ŽÊ<{Ðàô­9'NÏ�ãq¡°–Î^A%§ŸÓüKvüäÍo²d�~~Ã%s{æ\ê¯-�Çb¸¢»ˆBïÛã—õ] wå+òûÌ1� —V¿ÅhS³/<�«îÀCD<ÑN‡÷1¼ùcÜtg–Fĵáõµ”Ä^Ë%Ïðå(ÄÊK<§yWòP–ûm.°Â„p§ü¸§œü‰HkÔMçbœI€âu§ÝuŽ9†z€HIaÁ‡\Vñ<°¢]ïïjÏSmƒCñð>§% ¿ç*òÞ}\UE:ÙÏð‡ ¨™Î:›ìTÿ°×,ïí3âyëz{Ø}ö¢mË^m‹îTCµõ?¬Åôš…�üá, ð²fý$Yì6^XÂÔÒÄq0HšqØ‘çõÂe.hÛ Œ«ÖTTÚ�Ü2–õ.½R$È �c¥€IÊìpl’ âž„úÛ·O£ðh;ÔEz2IAäÎçüÿ¡¸ õ#¢a€pSܺõmœÙA£¯–²Õ²Ò\96çÐ’¹ÀÝÒ,Ü3éôºbk=úVÓª’ ØP£dQ¿9Þhm–‰á–9ÿŸÃZ6™ $fÛjp±)Š>s¤þ��ô¼‚Ñ@9¢DBŠ|¹¼FÎ[²ðÈÁ$~Âxp,Ix¯4a4OŠ7‹ýó‡ŸÔ¤ÑÎ�9ÒÂG÷¶Dãk숞G‡K8x_ªâqû9¤f±£½¸gCt‰(]«tõæ"•ZX¢ô.£tx÷Çæ<õ¼4“NÈFêX÷TrFg¯Äp3ÀL¨U\!‚8‘<úANä,.KÁ‚ïŠ&t �øH&ð˜íÓ¯\�õõÿÝõ°pòPûÙdLäÝW!ÌØ54Tt>‹*‘!äLVq#z£I¡P¶Ü8‰ñ3ÛÍÈ®"ñˆh¸3&i§š”±ìK´Ìº°�¸iÈ8kŽXývÊ×xôí§ÇCÖ#îTJqKÛÕḵʘ=R·±‚ípDÂ2^”EÞ]ïe:©Ä1š”Œ±b“— Åý*ϯK‹0pUXnÜ~›¿Ë똲3·¼#È}U«¿˜#Ÿ|¢N×Ý]‡œh+Œž fƒ:áfæÎ¨óX,¯Ÿ¾pŽáÂ$¡�ºU²:ƒ]¸›à}²“Ȳ-ttÏ|9Iû¦É�ZêB�oèØsõÙ©n×JW-µ†í˜V¹¢ó¿ËQ�‚kVHAj *CJL³ºæÀ+°‘Lò¡Ãý`*zX>`�2¯•»¾vge�ZÖ=2>±DÍñ�+Ь�Ê*Ç„š.+Q®f9pÓÖ˜#¶úiìãâžh2P-4!DÃA2S;9”ÓÁ‰™zÄp v4vfr+ŵùå�žo/NØã¡_ã2�¦ù¦¼Ò!滌wì,g·,®ü놭ÃDÍàÅ|Þý¾^=N'ù2­®>n0˜­ã`Œ2²ÄëUvZƒ~áÊ“bJ³©h„y”0 Ák]äQf5QŒWÔ°­Â _”å º@Ã:wr¥†lR"g³ººY_MÉ“ŽzÈøæ¶óy¿jÂÊIé§ ¦ãý¼Í33¥ä› ƒk’fð� ùΠ±gî tïx•Ôž! ãì ‹ Kd÷)ç³È^¸¹Z/ã/=,׊P𩇿j²%§~‰ ^¥Ñ~°Ž»¢èÔЭÓx±¥¢tröÜêè\½$Ñs“a@ºZ¢¤H×aÐ~Cå¸@S“èqŒ±z“ |Nì?… bÈPæ%;ë)9 ¾‰¹³#¨éîàDÍó,ûÂÍ{¡æ)ͧsç8¥©ŽD�itß<Ž ÿ+žÕ '& ÑŸGç³ù‚km·]Œ¬Œ˜ÀðR\�"IxÔ�[Ðè[uú"&ºÆ*‰<Êåïr|íÞ‹«'öÀãZþ6GÔf¯ú€²­I¿èšÒStjõ”v?³åozN·¶ˆï…2þˆÐv(Æ{-ï.Ò ŽJ¡ ŒÍt ׿:h©uî&|Âr鸖6OrÁ8PKH¤xÕÞý|“&� -,b ‰µ_(©!¾ ô…rÐ çu÷ ¥öL=0ß×\ ÉR€”®Ë™Ums×bàh®„+é‚»néïzèV‚Í^…`äaMbÖ§§Ën8;…ÉF͵�ɶrÆ9YXä”ĨaôÒ<óúðø ¿“3$ã%ÄE*øÝåA3½·-Œy(zÄþÑxù˜£¼ëùµŽ2G:´|£ä…ªÍï$ïçÓ@v÷b$<@í8‡ V'_X‘®uÃ=$ Qî&[0kÌ·è6éšÒÒ1âC/u >[C4sœ ›ÿ™‘°=ŽË±cˆ­÷Ȉ«Á_T”’ÿQ»Éü×Ì!Œ¼G+Ë’ Ïá�¢”ç E]Vþp>úqpyyBay~‰ê’ÈVû�öÚ]…œ#¦Ë;²W…¢:¼ëñÊ.V zCãFõn«Äs¾0o[3üíÓš�gyõ&´è˜ãG!!öâÓ7|Œ9‹ƒ¼3ü…K³ÝðŽF8]¼ðƸÑCÌIvÛ×ÒÈy»ür†L¸)ؼc—–îÒÔ¬)B®/Hr¯ò@„ß+ Ò…Ç{ÏÞÈÏpMzÏý?>§¿ üúÿü<ñ·ÅÛ¬÷Gÿ�ä\}žÂWŒþ„*XEã 烙‰ÈsÏåɬmZòìwÎÃ�Iš~1õ¹e¾òÜå9Ë© §7�Å$¿hd<¥M&ö�Ńßþ¼)µÛÏò– ÇT‡(Z ÝHü¨9'léòµŒ³ÚzmÒKê웪Zî“-r'Ë#F}÷£Ý¬ãÝ £Ãèßž®øzüqAlîO�# ©âr¼27/öÿÀD�4ù¶Ãä��óŠ¿ÑQ¯{º€{,ϼ‡Ô£þY482 IðÃnln'î%ŒË…AÝnú>]&Ó¸ðî¾§ Þ†F––\ã`¢:/Ö|¨¤ªÌd�:B_:Üš¾qË�/Q~¬cþoÄB€AzvÛu\-¼§ãm”~€äcÄÔó’°ü™ I³érã¨é¢d '�@¿M} 6¥,VzZ]³øØèŠ g\ÑÜ¿oâ¥w‚œ•×#(ÜYúÉ÷È„¬…j!t„f�ç8¶•ŸÂrÕ!Îä/Eˆ1Ƽ…Ô¸è01MW=D PÅíUÛ þŠODÎk¸–òÝ´Ðï£TWv�c°dñËvî õ {z¯S”`“ä”;5غ¸ yW+ ×z–«€òÛ”åéÀt8®M¹·‡D2Vs$¤œ9C­è"l÷¨Q€£&Jc­I¹kF…‘,¢]44‰~cH\?é¡cÂßXáŠ�ØÔE\Ù´ÛÀ«7¨áé2T÷·ñB¾*á¼ “ØäؘD<6ñ”Q¹¦ ªÈ€ YÃf<;lêݰ×þ»ù 5:3Ùx\L;6»&Oû.Øaº9¡ú> ƒzá°õ�ŠÒ¾±ôÜ*-;µ¶‘æµ¾�®‰`c—‰ßöO°«Ê6Ô£·'‚7«³æ�|±�Êöº­½Ì@ìºxù`âG úO%ÅÏñ%�ú#>6W4ŒZèBìï(NlXb‚%Ñæ˜FØA¢= 5bÉ“Ÿ¯I—ì©qþ¼¶y‰ÝF#Ù kÝ®ÃÍOl£i]žQëm$®à&‘o"´Þ˜öGÄÿëF¦¢|{5ÎvÇiñô§Ø©€t—ÆôšI%™d³šf�Íd¯À˜RÇv'r:Ö}b¨½}ËLS#TÁ²d†%UÔ¢à„?ÁñˆËˆPÕŒUŒ„N�öd³ °AEÏÈ©1çßÕ ¨•¿5ðßõ CñÑÃË­¼Ê~ž+½pÿ4þw7 ¦VÙbn×ù+ªQœ­+î[-­L}:kxÎk‹I!ýU|æäyú~†ºva£Æ¯LfBå£ñìéµ½¾;6.ûÑbix¶ˆ={Zö̳ï�íõí8#â{>«a“J]¡¬4ë¯õ[TïÓ…îQ'J³�wI�ƒ™*¥é³Ýv–éüd^£a• lÙS€Õ?@üe@•Þþ«Íþ~&hì]©?™öø¼ü/8°»9 @ü�ÍOBðˆJ ×y•ÍcD—cÇ÷þé{ø=}þ¨¬ãó�["]ïÒìøœùÛ°¸·®C¿ÆWËøÿöâ¾÷ß×bü…Ž  ±pl‰ŒÂonëlfÛÛ‚÷…އ’‡v’0ꈔ§Cú? IùîéÓg{ÉäO{{O¾ÿépš¯–xْ̆ðfö 5 t”GZïz„‚Ói÷Œ¢þƒ{çà8-¾›NÿÁ—fëe¨/Á=:;ÑŽûq)üÓ*ûO«ì?­²ÿ8«¬±´v䉿ÌÌ«£)[L½�Ø_1Gfp|®Í�r 5]œçÿ*C1Ù`´‘8 îä\qž¹¶{ð°…øøüãó�¾-?þhîKú­lFHÆX÷ú=XÆùw5EoÖs`† A¯Uq‚özBXZxi~ ˽ÀQÊÄo2„UM§×&=e‘ä›5Ò�ÊÔŒênHó~ŽNç€Bw5y£jÂÊNî =Óy†¸Sº 'YÛtõñkóítnχçÝ Î’4pªÍ��èShHt¬ØÂ†uÜ¿Zï/5Ž^šmLëÞUDë  MÑ[Þ_2$J®ÇèÝ·lµïµ„_Œáè|I8zò8ë0H‰]ä3,ü™gœ�û19Ø"¨+»h„·øcG�Ö ¥D+FmãÉ$= 4R¸€5<¥®<-ùî ‹Lò,«e‘ºKîà(7“57Wëo×¥¬éxÅö4œY”õ4`ñ`ËV«­i¾}dÂ?SÑ#®s�dõý�O)¬ä8ƒ#©+˜�7©ß82‚ h{¿d†ñr‘›:‹ØÂ%–,ç+ÃzE-_UØ^}ÛŸ)…ÅýLˆÚ{àøQ^PB†bHd\R�»@åM±[b�×t ¦�ãÖè´ úM„”LرTÜ¡*RØ>"¼ÚóZJ�hg|x.øbí•Óí—㯧��c5ˆÆ„ð"£CDGäŹdCj½áºíh–[¯di^7f<~M¬¬òrZ¨�hÃP=èŒËè"ήS†È§’m«A£fê‘)åö2ÏçKõ˜,ciÁàb¾‡/+X8 Ñx&uûrU×D%…+ðd¶pa+¿mÁóšÞ·ù#5ĬÏ~M�=Í|{¸³!l›ô,¾Þc ô½^ï×Çßö<#ÆB›�k¡8|�dguªu‰ Â÷“tþž�(ðwžø.²åïMVÁP´'Z"FZ³Gª_R(¸ ¢ŒuäE$‚•Ü5·äó´¦ £Ã’e KäêãEøÈUuÙDÔg×X%î”[ÝuÒÚ÷¥J—ˆ)¥êbºÀ²Õ±3ä‡ Ø˜â·FjõL[·{:L3ÉÆµË›`G„kâ•H�zh”I½§þ¸ŠlkËXuqÈ�J«@ì÷#LÞŠ•ßÙkrÆn;j$ ò×VW åxw Ý•–jA©L(Ð6Ư…%Ö3ÂÛ/•¡¬¨ #~Òà7ýÌe+¥tÅ©V+˜5°ŸÊ�ùr¬´ly…†¬Ãpõ›¤‡Sd€3þ6"‹ØÝ‰‚ã†Ö…àžØ€Ì�_×oÂGcG'§X`--½Î½a[X Š@òÈÒ#»-ä *ÓµBK¶×þ1‹ùy·>¹Á.#Õõ„°±ü4·W"ÊúD^,ÊM‘œN¹×2–ðÐÚ–ÝÒ‰V¤³Vð ë#Xó˜-¢ûɾ–ßYÊ9 ¾†,Ó2”Ø) éöÊ0ðøÉ+ÁZ¹ZåILUE)¢&ämû/èªðá�Àr’yI¼½l- Y� ?ÚîEÔÝ**sÊÆq¥VGy±âpµûÑ”Ô4¯Í�P�šûø¸çNâl;ëøÜì±õàyÀ`8Ê4$Z³æØ9ŠÂ[޳%^PX†kêEœÁû îÄX.Z”¿æk“"÷ž1l{¿ üÍnƒ4¶»Áš4å'(Kq6õ»QãɤP¢˜;¡s[Ó†DóÐ}nÙÙ]ö²k÷¸â¢òŠ;Û»^�+¼áîA2 9°8ëÁûÒh¾çQ²€èrreæW©�œQ¸Cöî¿ÅMì#ö1w€Ý°÷õ훌|Ž‚äÝ` hÜŸ)þéWà­¡ø{ânÐÆÑGÀJÔ3òs°1lò/ÙTÙiÕ�öWÉ·ûýè0«˜…NËÅ­†¸]Îï3<ú §5j;Ù�uŸ‘¡mÂè“Wèo(÷zò1¢�®ùlØb؉Z;E¶ýΔô¡›Ðd¡B@JDzLvŽql|Y¶ÃrEèFnèËvkÜñ‚ [ù‘U�‹t¼Û¡#¹îòòÄ 4ÄLk„­ /Çò$9jZïQ°°âÒÑ8f†Ù H§¬xd‚x©²Ï$¯-Rþ#Pz<Ž”û�µl—j1K±‹'ö?ãŒÑeMN<Î'ÐÀW=¸TU>  Å vña�÷_½]|8¼\(N'‚P\ᮢÃrPÖš° #Õi^`pR�&ô^¼Ð¯‚íâÍyàF³Ûÿ ›.ÔлÞ�Ç�+N]ì2t·»¯8¿ù‡÷]?Ç}²f¼oú-Êæßâ¾khíÉÃt-ìÔ"l–ÄGÃj�ŸÄ,q”ÁP•‚3]>&æí†Ë�;ñ¶AûCË Äv¦Ðg�iz¼¤vL²ÓðÛÛÖž^„·ÑÑM˜>u?z“ÛºJýG»ð=>e±íAmJº|•¬'Ô(]ó,ƒ”¬'y,ì#kí¯Ï`7‰ß¦¯ûø²¶a;ˆ?†›*'Õj2�`É`Sqó¡¯Õ¤pû3õ�ƒÁ<ÑÝGçÐê¾4È5)–1Ô±nìî£s�u_» 2äõ:RhæÅpþpÛf»#6ÏÙN{;{È6·wðµ{ìíý!ÜÞÁ×î®Ûû•Ô±àÊT ·!ˆ$…‚òÄù2ÒŠƒxç³Á'ØÉ–kûÏÔÍ@WùÔQÙ¡¬RªÖˆRý (ê%— íջɢ*óÁŽÑCuFç0ÕÚ?0ui‚}m™>ÖN72Äpç�@ãÀþÈ€ã` àÎq ‡(KÑ>z Õ¸#™¡YWÆÑÓËóp €1jÁtÓ!ít5‹�Bò«´N.\â~«·zƒ=¶õ¡�&i¼ƒÔï!¾}«üHâ]©cƒ¥9Ä‚M¨`£c9mÚˆis47�§q\ào�Tϰ[£Ì�L�T€`리�6n�¼o'Ø×]ƒöß²á®Oòëxéë¹UÝd’›aWÈw¢n”p¯�Í@W;*?îwRõ Ëßà…íÂ7— ãî]¡ÝÃ@W0_Uµ«P?ëÝ�¼ ¼¨�ÙN¯ ,Ao/K‡Ë´UÌ8‚Ǧ ý\d€à{åMZÁÈÑ覔0¹ëº®ºŠ+mVZí”î §õR•×Ém`&�’[]Äëõòv°Æ —àtÎñW©‹ —®²j§fžU­b¯˜—õ ­ˆ�vnçD£9©›�Eé# ­ë?íýû§{”™‡mJ3¹â‡Y…È 6³èBBì•�a ŸM(1/(ε�‚uwÿ$<æìí“8³ås·®{ßn̤{ôO ¦m“Ð@Iõ+}¼ãÞžš2“¦˜Å6‚û€�L&œ“ƒ9aPfwzYx^Ùˆ* z_ðE;˜–/±ºú%ë49Ù³iåS�· ·‰P·¶µp»Ë³O£C]03ØãNbg So|V-�þôKv�n•F¥8€Õz&6êÑt\ÊÞî’gÛö�HÊ)Ý=r‰ UHûYüÿ£ì.^,��VîÁiGï±Æ0/pÆ×M@ì/•Ø¢PÛº$£Uü)]‘²†a8ñ¶S,;.¸°L Em0åû«Ju.1 w¼=GÆu§á’Y‹Øvwþôe·Õ™®'ûžÕ:Cèêd¢‚CÜÓð·Êñùƒ½*õô`·Ê#QÏ'8ÄË»¯÷®tÐäÃÛµ{U˜¯qÁ<ÌýÒá]ñíÔ—x[vÞñ/ð¾væ+Ü0Ùë/ðÇü&¾˜ßÁóîk}0�d·/õ¿œáŒŽ6—MdÖy`üÙa_æ�AE’s` èB4ˆ€k†ÓY&‘pv­º�T ÌJRãO”.yŒ·9êr˜›.¹¶ªø©ÝÍó.ìlú:§�.Râñül‰;zÞ}µçÇ„…•mÏØvó�~SÐÎYe»y…<dEô¨ÎO¡”¢RE.ËcÐïטé�„‡éÛ¨ÛÿI§•®×Üa¢pdw§ºò u¦@ïõZÀ Rœc¡nB†Y0Jº·ïýÌη$FèÎ>¨"Ä· áƒ_èJÔÛs/c"w&ž°ä,ŠmðkÜÅPÓ“’i`½n0§`‰TÜ‘…7Þž¦–Í%Ã弿Š)Ô‚_²±ÃZh“û©è õö’‹fóóO½R²†!ª n¹DvHaƒÐÔJ ˜›r½ÊË"žÍÒ)åiné!¼ïãMÌ…jÝßF+Sû2®jÂðîê u/`ŒãÃ7A*uƒý§«˜›Š.› +ê“"GN$ÚÜIº‡?VV+ø‘ÆöÓ€Ðè– Ì2Æ"NH€Xž1¼�ž­nûoû1 ?�N‚lJ�¾Ë‘Þ—”Õ:ÙÜžù+Zü|xùá2z=z{tx†°5/ñ©y©äà ¬�ÎÑjÛ¸ˆÙ­ÂÆ ¸¯)+ HA«÷hI Gª�¶5”Œj �,ÌÖ’iXifNûÃl§ævã"-¯[ù˜f%ˆˆVÅ‹eëž[]À_ã¤c—ñšF¯µÛ³Ÿß»ÇYƒð¼æ-s8ê|ë–‚�­ÚùÌE˜7„¸ óT©ñDƒäžçØ»,ÂË^Žj¾PX|!ÌS,°¾%K™í—ÝŽTLX~3P7”õ7äì¼@G5Z7[îº+¨˜‚9Ó|¹YeûZòÔµZ|�Ͷ# Ç…*7Ëê(„$óúðø,:¼xyøâìx½<Zù&¹·|+Ù/%*´÷ ñ|ëå‰C“p1ǵµ=cAÙ„|5~Äv�@Ö½Æ<ðÇXã6™+FQÕ ûãÆTlfï¾#i•=tuyŒ %sb;ÂŽïØóñ9Éœ]ýbNóFäYÎdÇç¾{ÞúàwÏ£:ë½÷ýS¿§Bþþi$)ôðdëX¿wÆÚ>glÀõû+½Çõ•Úû¸Å0°"ðÐKú‘­1Õíºm§.o×»¾èpI&5E&› hà¿­ F‰6ÐdÛNð•Žä³T+çž Â�Ó;¿JÎ ¦ÆETUo�dšbšP¡Ó½{æJg9^ßD ÷¦“)KPh¢k˜9Ú…6ñŠj«îÔ(qð1/1Ò„[â`«ÔÓ^ô¯C«Ð?eƒ`£]¸8SãÝn5"ñ%"Ö¾øØ_è©~k‚Ô7\«U\bùŒ±ô•Us)s«¬)]A‚ßu*™Ô˜#B*‘…=×u‡VÑxÚǧèš_°²kIØÕ/ë—]¶•_j¼�"eH;µj_º¯pjdâ[âI bk¥Î[0¿XÜ–'Q+@."f| à°äJð?¬¤jsØ~tQ`�”ÀСẤ“Œ­Ú ¥Ih*ûŽå•z˱5¨yÕzа6ÕCBM;È«Y3¤Ñ+/Úƒ<£)âr2„#ÌŠ³’\Ðʋݕ𷉘–Á/rÄÏ]H6«D„FŒªúK|”ó‡°‡UüiLfæÓ¦�r¥ºK)Ì{N`�sÐõ0¾;�M ‰Ý¾O«ÅþñÁ…—íºk Ú–,4"yؽ73?ØÓVcö`IÚ¿>¸V/<~ᄑͬ~Þ¾è5Ô)דr1ŒÐÃ}r¨Ã± ÝîÓ Ëkü�¥ïIÉ�ƒöYÃÉœÇEb1³Ã(5œ"´=Ìl~.³î6…瓺õ½Ûj_¿Ú«á uü¯?Uh:Ó3ýt„Të=Ä©ª£õ%sw×€a—µc„z‚‹qîgZ'’ÁŒ F‚íë49¡fpn4Ñ*±É<þbÏ#Ídi¶ëÛÿÒñv´«ïJóE„˜¹‘[ �;AHF\Ú ¯ ©9ÌM�ËÇ“}êfWý{ :{ Ä»Úë�é_‰ìÉz†¡³V«Ë{]I=@S×/æ*€Ny ô¯q]LœO¨ØUÌ?}Ù¬'œ[øtÏð¥žðÊx¨öö¯Œ`l�¹^KQÝä"Üó_U�Ñ-˲¿^næ°û½sú>#˜œGÆÈ|š/ "Ÿë>÷¨„ÚœÆ�ôöoj mÇøÇ5¼!ì1d¤Mªª÷t!Z­rŠH)Å-µÆ©¬èbwéö¸„_ˆ!¹—Sf‘QæãOBŽ$_„‰‚äá- |¡Aø»ùÇÐZõA×-g §—}Ø�áz��µå{«´]qˆbæàîQŠ_�¬ÚW¥š^Åk ⵚb9À+ÜÆR™®ºöêãw^C-‡ÀqéH�›&ë—9E¤ =yqFÔeôñ»ásÿ€ÖñêjV­¯Ž·½"½þHlî4¹It.cæf@‘�øèò\W7ñUOÄ,ÖWdÔK«Û+Žäôo7û©Î_�GÇòxtwgó’CµÈÖ%ª9•ƒ¬#9¥"I†ìk‰8�èÒõÚ^ט¸0F „XÅâžÇp¨«(‘2u¥–^ƒ7UÃÃcTÄ7ãèG™:yØÊJÜ{Ãíþ²üª„3à5é •WÑx<>ü~°þvðB!Ì~‰U’† >d<Ó¿ž¾}òúÝi'ae�ÅÐ’iYÒ<¸Rx# °(™¡ø@ò9†�][‘ðͧð êÁæf6)¹¼½B»e‘/¯ÖqæwšóƒRþ¢L³dëaÞndŸØ}îtpŽ�j(shç¾ÿSyƒq#WI¬V! ñÎà–Tu WB÷98 >C@_Rsš_Mgßé,cÙ’UÅYEûG¿AC%ê <ª×e¼Ò/,Äïö)­¢B’dg‰.¼¨ÓìKKaùÄôFyUZ á]TÆKˆ-òñrI8¶Ò׉¯ü¥z6Hìj€]íþi…Œ”Úç!;q`ä¹Ëôºò)ðîÙj·5f´~C±¯cŽÅ{ÿê4úË_"êCãà"!óš\2£/�ÕÇ^Rò“ÚÓY'n�']ÿHΫ+hé÷�Y¡Èô8–ŒK!F(¼”Çh÷$#¢BIØâ0z›ù:áI¡££s== ©ª­ ›Õ�É-Q„ÄN¾7³ÆnmÑÈ­UGUȨ&Ãþéx0Z¯Ëè_"VïÊ?D¯rû°FÜmX¹¶ÒVi‰¼¥Eœ¤0 �Ó®ü{й=AÞB‡áÛŽç·`a´û^v0ü¼ø›xè1Mä?ŠÃ��—ØÇš <|Ü,aóñP�5“ ä8Á` c˜ì—ìmñƒR,ˆöš2y”Wú±rFÓ>M� ^QÁW�;«dòBÅŤ!]b÷ª«ño•ðH8“¬£lwW�úŠGÅýûgk­fÑ š£ŽzW 6úk æP 4$3„§Ãýw‡h–Ï[ÐåÖq*Ó̯T럟ø'¡+“èežÄj5ëÐ0Mt8¤s{\­¦ý­l"‹;:"GuÛ¯:%~¶¬éœâËW¨ÝPa Ÿ‡´‘G�…êà÷[y‡ÄgüaG†¹ìÙ¾69ÎèÇ¿³µê~֯߫!ТÍÿÙî Ë’p‘N«Þ¿ë"Ûr¨þå_z9YÄzþ3Ò`>£ït†(:y~Â+—?ï©_ý:õgì¤_üù¾Üë‘B÷cuÍ®ëþjïÿôˆQ³ß»×ïqáùøŸýÕj¯÷?ãï/tñÕëòñ?û‹5ÐÎñ~ Ð.¯èïÿì'ø¹”Oðç^ïà`xz:üø>âçat ÿEú›ÆW‘nI¿$ð_?òüŽìfI:(º­÷îg1�øÿ,É«„Iœø©ÜKá@§xfS8¨)žÅ`ŠG-…S•âÙIሤxÒ_Õt] …o )+Q=Úô³ÍrÙÿÃÓÇýͯ�ªGÿöãó?þõ×ÿ|üïÿÏ“'ÿ#*óM1U§ÀUAu|{qò粘^¥Ïþ”]%Šÿ­>UÃg?<�$ÏŸ=�þéél2ýãðoåp¯ÿ_PKÒV1]‘ÿª÷˜õV^imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_nl_i18n_txt.ef65283776aeaffe.jsUT ëÆ«jëÆ«jux 臼\ëw"7–ÿW>$ö6vÒÉžÝ�szsÌÃ0q•ÝwúdTUd ‰¨$hðøß{¥âa÷-:ÙÙÙ/Ó1ºÒ}ýîC*iŽ ‘�>Ô–"™ótzUh5W|qb´¶µ�ï þã>ŸÎ]19úð¡V˜ôwùö¿Ôï*ÿÚO@Súñ‡{v$êªn�ßý÷“=úáÇ~<þiÁ 3ïFN¥Vj…ãÇOø›}÷Ud�Tã#q|ZÌsi�j§µão?þd„uF1õsMÛ‰0µ³·ïÞ‰¯¿¶ð·µ³ò×çº|±lÝÖM]?ÉÑÑÓóé„7K54z.Œ]�¦<Ï�L]—‹›âãOêë¯�ÄÉ;¤Ôï,¬#�7ü5“@÷³ù ?ž™SÏô¹®_ñôü¾²›eÅOð§,|jÛ‰ÑK¦Ä’µ�Ñæ¨ÖäêËø|ž¯˜� aÏjo웳šq3v3¡,û{í�zSû;[J;aJ«¿ *°Ï�`µ7WÑÍà´ðæ“£°zƒ¶Û.Nìsݽ²y«°ŒËü¬À$gªTô'q*>͵±Å»'î—)Ξx–ź;VÚˆž,ìÙŽÃfýÚ½c–ÈGÆ9xPŒ…0'¹|,,ø+ÍWnNM»™é¼«@9y$NSí”­}úî¬V«ÃÐYMZ1ƒÿDùÂEíùø¹ž‰\XA­:fÆÚÔI»”E!ˆ16\Ù —ççi*Š‚šØá@“�ìì^ç¹ÈäX°4ãjìд£Å­%@²úL/D¬9i)aæ9ç¶`Šú–ÜXÁz¥­Âäxéà\0˜Ÿ=ð–Î_LþÅ¡V*Ò6¯Øÿˆ9Pox?‘´]_Í}/ížäÁ?Ĭs°¨lk#�ÍaG§¥|Ì*aDa‹FÏ+{)LaÆ�$¼R¶\åÆÈ±T<§æß wqŸ R©l ÑòoÀ´H!âbÝ©OŒ#§õ�kвô«GTm;¹§SZ@rrOO9Ïa¶5«Xß5É81:AÝÖN.ÐEð?… œ: †ËaÉÒv ÀùÄ¡L )–2'W|€és€ôBe]Ÿlì� }ld ¼ªü.<Û€h&l0TI}оãI.b 4H~¿OoÏw³Jl˜V+Qaa0 B *:Ý65‡LÂw|@|ãìAjh÷Æe¸:°4Àki >´4Rï–.O…!ÆxÚðRebÄ]n˜iÁgOz^îO ¾Óõü0P`¬åú €ñXdNúÆl]=GÉyÒe„Û0DåK¨âÈGó¼\ÎϳL�6êËЂR³Dpwí‘Þtb) Ì`âi&˜èZþ€¦¢�´ÿæt†ís9´ØÿµˆX›¡´3Y±~s[#BªÙç'Õ«U+d€è܆P¥­‡¯W:pèàO ·’l: õ]) c¾ix%Ó._”2ýe#üe­ÿ>[û€‚Æg5ÒgþfÇýÏY½ C~«à’™¤{Ÿ½Šâ³ëÙÓHæÐÌ5V]²^øQæk†ï{&‚cEÀp$“PUc *šhxiüeÜ·$±Ö¹•¤˜-A¶9Xîe¹ þRLïm·WËðBó¬_qÕÇã'=Ϲ?-{Q8ž¾P–ûÀÍ7dߟ·dˆ°fÍ] ÀÝ”…åê9ŠÉŽ^µÇÛнú%våñe%ûW‰¿©Wÿœø›U^ˆ¿WZÿ寇Òû¿“~¿Â¿–þÿÏøÿ”ø”ñ±[…íä8Ò ñ“¼ {ï–X ²ñTæ�®¥×C/Ï Ý5$J³:{:oUÈkƒ”õóvÅ�¬Pr ò�žH4kϤᡠ<¿ �'\I<úEšÍØÊ±ã ÷•Ü$.ó2tiÒ±“yî zt[”»ß>‰Iú$‰�lIn*ØèÀä— �¹�SOrK3ãÁóŽODRá—¼)8½`Ÿi¿\L6šÐÞ î)’Ü‘k¹Âžo¾§År‰çò7jô·Oé˜È¿ÿ�õ÷HŸô$ô€PÉ +üö±G&°ÈHÖƒÊì×!- ²@ËåÇÉÈé‰BÛ ö´=2r^z¢'íÄíàÜ#ÓYÏ}³Ä̪=²ãî‰M×#BoXôIó÷¡i™NQê>iá>leS?L¦Ó—JõužñÅ–!„xw úå±ñ‹’=Gð*Hf½Ãúd¸ö¡±ób껆>®°B1ÁƦÅ>\û$B@õy* HlÕ K@Ÿû}ZŸŒò>ÔJذ ifü#Ò‘ÑÞÇ}ç6�öÉ|Òø²Ü¯NP$@U‰Åa_E²2«Ê?–È> ô>wP`vØì“pG?®ØpÌ}ñ}lêp”w`#ýö­O‚æg2|òê“ øÒ»�ÜEöÅ'°KÆÌrÛ ôÉÖ×kl,ƒ¹d øld2ˆR¸%k¿=\ ÈðÈq™edl ´é|s’€ddtì-C&Å”`ÃÇÎS�ànhÃD&bo)ü Çú€F§˜û›Óg"{@Âc ƒÍI·ƒ>Q xC†áÍÌ×�!é¶!´³3THúa(¼lÛ¢¡ÎW{­ä�tÄ�ÏgAÞí¶aH¦« ™Ë¹|TÞ C2A ùtóM`Hz d ÓIƒ„Ä:”¶Û‹>;÷õuH&¨¡´)—†¬øCÒ©CØ Z�gHxC2u !ðÚ�7™9ð"�{ì Éȇ%|V’‘= ØÆ&ôÒù¿ð°Û¼%} ýÑ)é sKbÿV‹½¯!·ôˆ0ÛZxKbüÖmší[RËÛ%^9�áˆÔ"âZdòÄV*ùDdñúNUˆ�÷"ºŸ+ØiäCYñ#àé‘¶{XŠ’‘„ ÚºP¤ £À™_ Á+Nf¯(׋�õ#òx(Zð<ÁÛ:€Ú+ìMø*ÈE·¹^r>}uöÑ_0~8ë í¾D¡¦|QVÝëcä1‘‹ôl·×ŠÈh‹ „â³ $¨>fعŒ 6oñxÜüžcK¦ÒŸ„DdYnç µ(�#²ôF¡ƒãåU·ˆ Óhe¶ê‘i>Zâç�!1 ØØ™©—º ›J]Py*&a�œûu«3|yÛYÖ‰,�“À޵ÿ‚“˜Ž'|« Ö˜gëG¹Íí1‰ÑXO¡Þ¹½ ŽI|âGOË™wOL¢͆ùkÃ�Ägìöª[LB4Æó%щ\ÂYLL/¤ÉŒû�uƒIÌÅmâ0™(c.—Aú;WkègQÒ;2“Þˆ©?Ñùˆ¾#=|7.“ñiÒ»Óè ªÂëGÎæ+¼Uº‡Â;2<[‚í®„g¤%£åθ²¦Ý‘JÞˆu"¶º'õ¼ç6|c°û÷6Õ÷ø"þ “á$ÚìÖï+î9(±†vMtO"Z�@]µ‡ã{2Ë‹~NL‚õ^ «ü)ç=Yjï¹rÜ"‚Þ“ÿö‰Òg’ g�¯=ïéª^^8ø£×ºÐ „ñ¯gc3¯Ã¯û¥•¶þ£Ëé=ÌFågN¤!aø°9 åAΞ,…¿yË‹I¢¡D∅,´Ù¾jøÒ³„9/_áfÐ@[|}ˆ7÷IßR´ÿ†�›²‰° _%û+¦k�7µñ'Îß³Þ6Üé~¹è÷ô¢wlêÆ€a©ü#Lé_*૵ /+ßšoŸ|JåÙYž$9d¦îÞ¼è]¸$®ºŒtÎU"Ø€—ËNR}Æ<Ü~Z2Ø?/ð–å�NÝ4¢£;ò÷‘&Ü?GÁÛ ôEs¨VÂaéõ@ÏümLåf‰07£¶Ÿõ\Ç"ŸU-Ð-½�ñy>®«³íó™@ë ãœmÖÔ­¶ôܰ#z®OøB IJ{HÊ;pUâ¡á–há=™wÚ=ñÄ��éK£}Y$ÆÉ)›ñ©À«Èµðþe~èÅ9¾Íï·Ïó×áÉùæÕx²:/¸z�O=Ëqk�ߊØBòÀ~Ñ´Ìûoˆ¾}=å½ÌÆ‚ŒÚWO�2a¡'ÙšçËÆÁ9Ð"V¼_Ó³p¸j ã[\ìtŽ€âŠn¸Äw&G#,Š6ütè6í§þü_\§‰û¹ÀK`@'‰øl¨|�Íðë¥ÅðÎd�w�ÏÓª„æõÀÔT>b IÐÛ¥Úô[ëøˆÅÕ´8Ê�+âi{�ys ‘˜Ô ½¥XMñ‡Â7Û°';ú=~[é‡>8°“/ÄíDæ&é@7J¯wŽÿàiéçàèDÆŒÏç";€‡›(j7¿)¼syŽ©wŠ{¼Bmx:±áµÑLg…H¿)Ðã³ÝC>AmÁk™Ù{n¾E!Ï” ›¯3x¸¼Éç Ìæ9 +ó±‚YÁ¶P©!dœÞ¾ñùúm»€ô5ç åøêü}»WgÿÓÞ›w·�dy¢ÿ¿O�âœÛ“$å-³ªÔ]•O»U©­DÙ>�/çè€D�‚ ,,’%9¿û»[d@Ù™Ýuf*»+S�Xnܸëï¾?¾í½Ûùéà„bæ)~ÿ..TË\J¢èS¢[¤§Dñù2dGΛÛ°íÒzo�NH*¸ ¿ëñ7 é�T”ˆw°}Êx]ÌÂ÷a_ù¢Fù  "óÞª1ÆÃ]ŒK›/"JxýÔX"þ#¾ ¢uñ1.o‡b„°_Õ!EGÏ�¢öD¯�²qŸM쫇¯£ÕŸkˆi6’ãºo~ äŸ�¥ç|åá”âIP�E®pS`ßjÃ`áDT‰oðq � Š �X1³Ù”’MàlTw,�RŠã övÊ#¢³DÃ`W3³Ùê×ò#ËM»0)ðƒã˜‡†´¢ 8�“’£¨tú8�cåËt÷bþ)-À|Gî6[Âs¢ƒAP°_mPÀ¢¾ìkÍå s¦&Äé4˘ŒZeÁ ¦Ôv™d” …_\æÜñ‹vBÍ(E¤ RAçu–%œü¢3%â£Ã�J(u0  2Þ†ö Ø;á€o8`ŠÍ=kl§8�ª6Rô ÝËQñê%»føõÇÛf¾ÁØI —%°çkÉ‘ï\’#{”ty›#>Qj8…S 0ãíÇmš)�Q éOçœÖ�RpŒ ¦vŒ€‰7£ |#Àýí0wÐ%ÏuÓé0¸ Ãh ×ú, »|BpbDVNZ#ûb¸k?ƒœ5Tµ¶mim†=èAÑ5¬Æ¦DúlÇ�¢½Ö�N»&ú¬0—€E»Y9اY>ÀË}󦉺úæ‡—ÃÆKȓ稅³„¡~o^E‘Ä l†¹7½�S­ôFŒ¬¸B¾†�ÁvªE'{3`/Âæ–ëa&÷8`�iÎz¢uo1Þ3À´Á; Î$bc(/‚æS¢ŽÖ8° š®Du/ 1’0\–˜ƒ4|ÖqÃÉs�D훩;…®Ú¨mç�ôKö©ÁõY=L­§�2ž¢8¾Ž¨ %«ñ£�Œ][Ü—¾Äë/-Ÿ†Ë¯ß%}êGZR¦½ì<¶H ηÂ?Õ«L09lê€A“ÐùU”CÇy–ŠªKŸÞ Ç³~õ™cøìÂê7šÜvŽ1Ò¥©&˜Mž×| $«ˆz0ü©¤{šÍO@fQŒ÷ R_U8³)¨è¨ï*à´NmdY+±’\‹¸Hªy9 .T>§„RÕ21f)0e8žÆ(†¬m– e¹¾õŽÑK‰ó�ß÷¦¾�-É�l�ƒÓI:=R™ÛvrÄ,T CàðU5-1÷øb ×PXøu6½EZë8W»Ð.NÈæW¬œ�ØE=]Çä:UoéX݆„€B´oÝýƒú[}›]îŸ�4_n~? y°rô²‡!|A+Ñ Ž‡Xjzk�_>�|1ˉùؽÖÑlc†lë[9—­rIsÈ¥±ÊN 0f÷^(â7%| 9@ƒ‘j¼ABáX&€òpcåd ƒ/»jŽ�ª¶íøPòÆ…�¿XÝ:%„öá´J ]MÍr-òßn¥òÃW.ݸ*ÚJ�† ¨Óª1€¶åq¿ÿkyÎdÓ³nËM9ݘ,¤ª9bg�ý0ÂÉ»Ùâðê¢� 3ýàâ~:>ݹÀ„À‡ _)û›° ‡@§98ÞiEÎ)ŠA‚GrECi ¤Â=Àû~¼%F=ÎAn[f3Ã%��wmŠ‹Ã´m ½¿Ý´d-ÓøVa Ï¯ýb.®o€ûwíÎ?½„Óºˆsã¾õŽ2 ã@ xT‚çïvN_têáb z¼¨¾×Z%Rúðm1 Š„¢«ÓçF&‘`M #›à¦·í3PQkjÙðŽ]U›Ý—.¦ÿ³¡ƒmV$°€Š>°ô`ÖΓl¦F?0G$¹;5Æm/ù±ÕçÎJ¡úIî² G2 B¨žÍ¹§Ht‹�%n¬€�ÎË‹RIæ°¢Ñ�öoÔ:γK3ù¸sø„ëzÍ«*­¶É=ÙbÈÚPÊD«ÃÉEW)�}‚ÿ¤NãiF %–¦�œ±*Ù@ª #}”©ôÇž­zœe™ÞæœhR‘{¡¢¸rLµˆA±MÈíðÚ5òám,Ñ{£á Ý^œÝ»^+ÈYïÇÜòJø±¨Æ~Ñ€TVên:06ò®ÃN6Ì¢¨T±‡ÔM�±,À[xãF¢'»«,à&£f)]dT«—6­Ùì�l†«C¡­ÌÏwἕãíJ/(óFAwU:O�·u8ç@¾sAtë~O[$Ž#ñ-"Z¥¬`ñÓRÊDß}ôÊ@˜!J°È`b¸ ÙŒè¦Ì²øä…¥D’¨ ;Ãè¾t…�RüW^,H¼¯ οÅÑä >»ü p¿î˜“ÚÇÆ 2Ñš¯8î +<ï‚|7’VÌ›v§ BL$Àdå‹äFÁžç@¨ã :žKÂ3^ùt¡‘žÆSAq/eÉ  ²Ì“Ä3ºû­ï¿ñÄ�Ù3]:›Ó cÚ¹ãhp‹Rè-Oø‹Ü0+xë¶„€"“ן óãtY•-•À‹_€1ÉÐ!úFʰeo¦(†…NUX°zê³Z Š¿î!¤��ªÚB‡Ÿ- ÿ„ȇ÷»°»•}†ða¼R�?;_¶ƒuŽÌŒZ•°zÞæÓ­Ê�v«²ÌRŸGWX‘ÕTª3Èyg‘ÓÞeC{òÒsœÊì¿2û_|kô‘Œ„$Úú„èÞxRsuß1�DUX6À:=»YK˜ ´@.©Ö£µé¶õ4“ñ�éz‘Ÿö±Jè?ÒýÁü^ßZÖÓ§Ë—/J}ÓÕÌù–€ÕÛhÓ‹Ûhç_¦Ú=YoüÚ>ײB§ÇQâªÐqOº 2�®wþ–™²ØÄWYŸ¬X3¶¬ß„¥N{YZæ2cjç«�›«êAIÈU ýîÛ³W ‰x‚·naWO³ó¨·ëÊ,³¬«ÞÇÙz•v“·Ý[Î¥ÞTÚ˜»z°§E¿Ûü$öà!îLè…$¦ÜhKìßéOsm­‘ñ6>Ž< F4QÀ˜Â|rƒ‹A»|æ)æ°Ã�1N.u2¡cÑ^ñ¶±¢£Úã¢pgœ_‹ràᡌÏ/ÝTnÃ>¡ÐA1¥÷Õ9 )Ÿò´Y¸•Óp®žA\\Ó†¡2ãFÐ<_Ù£~â#Š&†çU•¿0‹ãæk²:TD¤�F²ñ'РùÕò:«œ_~·slaì:…v¤-¦XÉÆy¡û{¤J/¥Ë¤HîCí ãf#:gS w¥•³s/5ljºoÆ33u�QʳPä(Ê5Þ¨�SS¥ŠóC:ÞÆØß:Zî*Pä¼MÞ4Ã1Û¹�¡éžæ^ƒ³¯ž�¼oÉôTè×~íÿ£•³ý½ÁÔ E¶,OppÊÜãK}Äß}ªÈ8k 5Ûõ—žúи Ñ`j'��Ó9ß'{Ê-˜Ð¢„:±ÊŽSJ%³U0&ƒ4‘afq©¡ñiɹÄ ^GX™Ã°|ñ¢‘ }¢â[íCw¾Xj Ó àÞ» utÌJKwhõj»2ãÓ‹üÜOó?g¼'ý†ðO”JÁè™¶hÛ!Ý#(c>dz»-V<ñØ ¾âFáåvÒ&­7OK/œf+ Ç‹ƒÈé‰7?—7óÂ0Û‹Ð]ˆçâÝÅ€ßX†Q+Ûý TšÏ¡óœc€Ø=x.þ¥¾m¸pˆG¾"øx&þºb§þ8þZûíl³i•á¸ð«8Wj^ÔQÑ�¡”—@)p  zSyVèŽl&xæùØ Æ÷NŠáCRÔúú?¶�ˆ‘ ˜¿{DÇÉW¸>Fðºo^}AXojƒ’Ÿ¿Å«—°‘½aÎú8=vx04Ú+Š\ÊCª!ò«u�Ôl~Yå3µãgÖ `ü¦Xl¿ðJ ÄõÃ[å��-a å‚¶[€Œ¡Ê«lŸË¸i0¯f\‘„tÑBW ë#ËpÎàßÞuÞ›ÝL 2ÌUóÊÃø�ÛÀ•±�+¬9'ÿÔ5Oy­aAÖma“']‚º�Kräꮂ移/Œxìß!=äHËÊDH»÷¥¯@D‘„³Icbš|†Zy×µ®ÐÀ” Ì‡@Ä’s^ùü€âïbj\± мöšµ3½MúÊlÆèA•]3ʃ-?yWáï+Úé“�¹Øº·²¾âÌýÖÝHÏ%xÎËùÂØd¼mÅ0òœdMÁ„ ŽYd^²Åðh $kq?MKqÊá×(ðåd¿V)¦ÿ8O�!®™Šr*ˆ¦;ðîıVן`Öû4©Hgj9 ~¥�d§ŠÈsþ j(=²¬AÿT…м› Q¥Ù‡•µ?4K¿ùúq9°¾¬Ü ož—ÜñÄÑÁ‰¥Ê©V«_ª=“Å‚;é]È¡£…3…7w¿�'~i—°¼T\;þ¤�@ ¹–F�žöÄ<²zŠ9¿èžìoEŠf`&% ’‰ƒRÈw½(øEªžÁD6툣±ÈòXÙ}Á„ˆª‚2¿Âœ±€¶´(O!Ø},>XNnêNp™$n±&S§øSåäUTÓºõ3NïËU�¯$We¿† õ«¥«¢8Ò¦†×¤W44ØZy‡`±f™'‹©ÖãW:Фÿ”¯®³Œó\J%W½ �"—F­óÄ—¼£^º‚D:“yÑöZ%! ^¹­wüDô|þå<ŸÆìrµø›¢°ãS w$c‘m×ùF"§YåÌÈ¢U�ð{ðþdK…%±‚#’MïTBCïY= y`Ç¢Ûž*{ÈïIÚt^•NC•¯ŒÆ5Ž¿;rKþ-=žTªzò=.´ë\éF™$+P8%‡Ùu²Ü�m:ÂÁös’vV}UÅ>'ÎFdl+abyv{T´3¥�¼ÇAõ”Ÿ¯3`¤%zlÈukçP²ðP>ëá¹uÔ7?Wûâù˜}ˆ$¦ŸÄX£Ø àï8¥ðlŒ™#·*ºçÙr)á%¦†]qsú�¬‘:´ÖÄ*�ψ‰[¹šNùÌKëGXï¹õ¿Õ«/hÑÄk|ÑIu’®‰e“¸,ÊíôNÐñ¶¶fˆ79ïÙJgŸ%âÛ`ô÷Ö$ËÕ‡vl½~ýæÐ�RÇqðÿùþÕ›×2¦÷¹ó,ê�ÈUÁÑÝCùdœ5ÿ¾…,t0CdÒÑ«ÜÍ>ÜUÂ%@£ÐÕì‹Ñºð¸I©)ÈÛ#"ðäþE"¼Ðè˜5t=²|fMk’Dù¸†vm1*îiQnÕrI*À#¶0Χ‚I_ó·®1I¾Þ” N|Æ€µ�4ú€Žcçu 3’üº°˜·¸Ý{‚;³�ÿY~—ÉÿÌytìŠÃ ð&»#w"íº‡Ì ä_Á)‹ÄàøíÇ ÷:á7pµ£ÕÀ—ŒžQ•aιbc¬‰×ÁÓÎ�,¯QÀósɃ ÉXÝ3×ê1(“+QÒí¨+/âB{*ra<[ºP²è)rž(LW¹O–§ùrÎ%$U…²×ÎfÊõ9m÷›CŒ±þQ˜¦U¢ãŠ-Œ¿·•âGP´"jw»TN’Âñ°äΘU$³Su¼#m&…À&a%²s5ë|NJj¡`»bˆâ ü?ö"1ÿ˜˜”Dñ K‰§1sc+b/&N¯Ê%3[uIÀ‰Ud: g}¤…9Š•T•¼5ëÒµl”ÏÕJÞe´îg —DqÀX¤Q�àö–šF͉Íuþ…Sæ¨B± Çñ&–™âsß°’M6mPi¨œ/‡•ç¼À¤³Ö©bÆ .k†L?›–‘›‹è”Ñ[�—dºñ£˜¿€ÿ;2:ûÁ~64ƒŒ© VG—v6Øîç5Ë)' �¬ð,²èºÐñ±wjã8ò�nWнŒ¼5]Ta¸´aRq„õ�JžÃ1Ç) ìûãΡ­½ã<¡¾JyBäo|®ï¥)ßdÒÖƒJ¦Ý£˜èüPs‚à@ǺhÞ2Sœr¨sŒ-rh¦‰J{œË–Y�ya·¼Ÿ·Èu† —è#ÐÊ€ÆAÌä˜`¹ <&ÄÀz¶œ6ß‘n|ä¢V¤ü$›µØ–› HLZ À˜-–„g ™Cë3*Qzq ª­,�hS‰`›a9(©Â6÷u®’Çú†u"‰ŽvÆ,Å«i€`*'úý¤0;–�)áÇÛ8¯��õ9¸:GC6üùa2ÀßÊ`tpþLLSð`y7”Y §4|ÆU˜níT':;œÈ¾p$ˆ0eõëØŽ «2Ã,6¤~í²�c÷†AcC#•�§UA¤ ½Þ¤Ì‚7DÇz“Á[8šŒ~ ´ ÇQEÍ$‰oÔÕp‘ýš9«›S;^|þã¿5^ç8!§aÂi%TÉ A®’²Mr‰ª|Íê÷ºT ¨¢Ö\¯‚ŸTž2$�´sW¾CcLª"´6⨀ÀžÔ¿. wº$Ìðß÷p�åª>µYÑ`Õ ,WÀ÷h€¬§ä¶öÂÍ©âê´µÚ©!It?ZpYddï1,ëgÂOÀ{…ÄŽv*ñˆ`ð&4¬* Ø‘›†¿ÂäKhkDˆ¡­T l9Œí8@�À‘"«ŠÓÛ$S‘¼»ÌYà Xkóþ¤dž [!§.YQbh0�<\,„{µ¥ƒ[¼d?ib‚mëÜ^÷v�Žd$ ñ‚ì€'6C»nD �4MsøpcøòœQX¦K€�úà�¢£ÂXs¯݃ÀÇñ‚êu9•Ò‹°âe©hg‘Ñk¯ lÞ·œÖ‡Òz¬.pŒcu£äLåz´0ÕZà�A\ðûh?ØWSÌ;ª…�ÒÎH!à¸@¼º·.Ù]È\ ¥\²‘2¼�%“9‹ì‡Î>qŒZÞa!´çÛHé‚}•»ú<0»G1}¹ Ä�#ÂÖii³ÊÁ¬ˆ1% _@~6牉E/ûÔû�€TŠ”#\ÞµN&Ù§(aÉÀÏo�±¹Ûu ò¦×3ÍÍZ�w!ÞqxQn •¶f„v§UÎT¤fbæç^¶Ëú,8afY•¢¯ù¨æcCp™Ü&M)ÐN Ôr,æNÄKŒäŵ¯„“ÜdÙ Ñ»8! S¯b�?ßówô™ûæ3+�xpw#kFÕÙ£<‚o%ŠKµ²F  Æ�ã„�j5#­Ÿ‹ñg1± +¾4Q³B”Sêt€ñ+9ÙáÃ’/Q¦�[ 3Ãô*Ù8A¡"³8‘]ªDq<™ÁåîÉÀà­Œ-¬ ÷õ‚CG:©�LKZ¶4�Ø;ŒOŽô‡Hé7™^fÂTFN‡L®µ>¦ª{¾ã‡©pÒØÐÂsß;%B•sgˆtYêˆ4Œ—ΪïŠ�E ]c—æÄ$šÿÇqkXõqÃL üp2gŸ�obBòWñK¨ôH‡ìJ¿Ðz?ˆ^'–e>èÙ~WJ ç[õI}"žÕWØÀf0À"J4“ñ ÂìRxe[êÃùÈgŽ^y©c@ïac ߦ‘cQ2?äT+d¶{]š1‚ÌV§ 3o8æQë’H¤“‡�XbŸS, kùo¥1RŒÜ>p¶*JÚ­òN�Lo §üº�æv`§(éiŽé&Èÿ…†£jB' ® jhçßyía«¶-rªzÕ¯#E—pÝó)[ :h{8šØ©i‹qüPìáL·-�âÆÁäÊ8Ìò÷ÞÚ …ÑÊŸòäŽ}$$Æ•Ý$kTN@)(“’®FÉIÙÜ!†olpÐÎÙ (´H¼SƲó!x~„&³âÅ0e‹ЬÆ; ù®�}8$_=¹1Ñ“¡÷­€Í€/|^‚†ÎÎŽ”ã¿.1lÈyÔîÈ.§ó1²è1E˜èfsŠ‚/Æ[Ê%3Žv ™U±N ¡Å„ÂFµÃÕ›ßwœÞÁÕEóÎ*ÚhÌÆ=øo¥¡þ0!û iì#s=xhŸÒ£F“6ì�Ь…O¢§n+2RCÞé\ÁëÖ(Šô2²†)‚í�8Þ<{|\ì\í½ ŽÏÏu#d(ƒôðå¨xÀ+'šÝ N3;Xû,™‹r<Ç›©’°‡pú`¿ùJÐ];÷¹©‹tÑLÇ"’6Á&˜!j›ô ¼¦³¿Ž$æï?¶äˆîÑÁq:uF/ÓJø”#{“νûˆ:««{G¹8žµµbÉym«TnŽ'¬ [VZó›N�ŠÝJëÒõñùÒÄD“#Ž ¹(8|Ñ—ò~¦pÎ÷nNÿ·ðN%uf¹Ÿ–wö®Þïœ�.΂³÷2Ÿ¥ 9§XU¬Åìh¶=Úbç«]¸=Y½º ëm–_–z@MÐɉèÉ–y=gx²�•W;"€tçŸèÞùÙÕåùÉÁÁeÏ =û¸žåM îEaY½ úê3(ºÑfÝpH"]*mÄ«Ø=ùÙ÷Ú.50"²*51zùø#ßõL8ˆ�Áù’ÁÅ`¹ÇI<ïsv_E âŲJŠfŠEº»jáÔç TQØ@A⹘&‘€«%]×tI°%(”i«�ZµQ�Ñ@:ˆµî¤Ínqˆ09„Å—Ws “IÍi”m×Ãc¹À=>BbÓ ÕÖœ°×—l>F9ßfaȘ}Â#DQâ‹J-CŽX€êF¬/‡Ù[Yï¾jP˜›÷ö:3\ðöwŒ¯y,·Õ•"™óôJ臋dŽ®Çš[U¬’>(9&Ìßyðà°r-¼ûI7U²äˈ‰ÍåŸê‰×ß0H2&¶š?Á!÷e¶[¹eìõ —Á¯ïöÓ‰ƒ>{œžb‰wçÙü)eXwJ¬Œú<æä Í”èϵ|îI+�ºkrlûã½±†3öu±OÊÌ¡eRG“³4?K|‡[žc“7¡`&ÀRCm[Ì ]›p#ßÖ¾}Á.ÐÒ{KŠƒ nÑUF¹uËì0WjÇYè(dÛ”™6=s)ìë?¹Ïž~Zc]ÌDNæ·ÊÏ`ÌÖÝZ™‡øQŠ& £è�³@Û¡`Í6«€ ®ËÅÃ¥&ãø‚€o«qJÚu°w¼ GJ¬!а-A\›Ó¶ƒWÃ×Ã7÷}ùáåÖküþÙ~ ÿlc¼Ïö[øg{{ë‡õ'Û[oÿÔäEcç{ §ÚF(/ñ5ßQÊ€pÇ”îÊ»-0ö$d!A–\˜¹œGØÉû.Ø,Õñ~hßìy똡ž_�15ŒâÌ“ÐMñ8¸Ú¤\Þí¦÷úc*Òcˆ÷^?ʳå6ˆip(ó�‰Íá �ÜKß!töö%Ù$L¶á>šcPeFAç½#Œ_°{nÄJ0 “'€-�ùØWïd_àž±B£¯öL -w�\ꎒs¿�rѽórº„~áÞC�Îñì á Zçwq”µó}Lñ jëo+<Æ¡í§ç³?)¦-¤jCXn{£C†¼±dÊ`—|@l‹Çcï{ûÿÔ2éúSX‚/Àìx ÖÅ*â=Ÿ{O8•þ“sÑãé»9%oì²Ê—™ûÜÏXLñœÌŸã²EVåî<ƒÝœju–¥;ùê„«?´¢§ìª;ý¦bS(y0ΫÿøñÝñÕœòã«^÷dgï'8ãw.á·£Ë�ÿ„cxyü·‘ç€ûc�.X_rø{Zá~ÿF_%¹S0 )ùî‰W nÔØoýÍã‹_ª×/_ý¹¨ ã%ª7a¡sp>œØd¬Œh»W#Ò +Cã,üó#Ä›­L‹sn³ E]%–XYêãÚ¨6W¤7™ù+B€¦Éý)V‰ó³g©Ö´(v ÞD‡$!Sa’G³ •? 8¾›ã©ûrð~p*ö3m)¦H¥‚"•ܶ%WØÑÛÁ?‰ýÑÚ=Î|)K|Ÿ >4q¯ƒÜ?†“Âyj½8ô�án8Ûz¦®@ÇÒM’¬rÊt{ø`³µåêk®kô[/?­Ù»˜ “µL À½I£õÙ®YŽ )Ñ—¾äK6xNà²3«Ò‡á TJ `²l¼QüZÌK»õŸ^öƒ·oßôu~€¥(’�<Ѳ¤�Ñ ¨¾5Ö>~‰ôý-ÅÐ` D,²t/SÁŒ¬V™çÄÈSÍCÓY"ö"r XÛÖ5f·ÚE¯‘IÝÎd èzb(Ãç''ûÇG5hV6–‰“ëò e~~¡‘|E&À¡P˜æ Œ'ŸÇЊ:þ¨Æ#jd•�æ‹ õ1ø+ç-ãO¦Éà¯Çu›/m·]ƒWMiXƒørb�¥ùœ|†¿þª 5�Šœ�2Ÿ•qèÎ�4 Ò&Dø}XÜ¡ËI ¼‚uCäèTîÃÔ¸DÇŒ©G÷ ñˆað%¨¡ª8®(�V.Úí52ö„ú’7Éø$t€)l�6çÛÍ —Ë“lâ5ð3<ðâe–¹ê—ËAž‘åG u4Àd]edz4ËÝ(.X1Q—KLYÒÒl0×±ÇKMF1ž8̹µ«t’È™:ï&ZqÛo A�s”]:–KÆyÇ (KIdW‡U²H")7h0¨ª:XFçiè2ÁÙsB"Þ)÷£±/‡o?,C¬´"I|1­+i¢¸Ð ¸ºÓã]É:�¡"ËcJôƒ²dãB¯€p ­lê{ŒÆn²Ž‚:Š»Gh:>dT,e,[Óm7ŸJr¾‘íïv�††}t3�«Ò‘5vb‚•,8g¼nÆy6×aUÚLIŠ3Xg+o°a~<–+#|Êy¶„ƒÃžRãlå”rãͨ†Oýõê}i-xµ„~ÈNðfw6¯ïr|Ý׋PѦSA�—2+fèƒcêjv´Ùœ°*(Î\�žåvâ­»‘í=ÑK†�§×r³|óòµ+¯®êr¬æ‹DFÊïbæ÷Û� ^�Îå×eÊ(þ·(‘Sº�² ±€ÇÝÔË}þ¾} j0ÿÙÚt…Õœ(‚a34¡tŸu«}æ<õþmµšÆëg¯Ma·ïO–LW�x–ùÛlZú‘S/P^÷¸Ú¥æ!Ï€P§S £l&¸Yp³“6¶ý¸# Ž“0Iî‘$Zâ}ènµ3"É­`\ŸÖÒ« xƒÊs.GJ}K÷R×!F=*”s=¤Âü\¥ Éš 1T`7ðº"ÒfÁ³éÈTçŒZ 9 dÁƒA -å§aá4‹¤Ã�¼„Û�Ü �}W™ï¬ÒsªÞ¦Ít©´K²»Ñý�Ñn FžIiÛ¶÷Y ÄÞ¨ ò�rý$Ø¿ÕØg_«[j#/l(°�>F¹¯¡À»pßø�2• °‚‰*†Ѓ'ÚÀ¶·ÅêÀ¬mß±6–û6_ xõ¶ó®=Ö(=wBNp^*¥BN[vQ.K쎚¡¢Ä9Ã,X<Ý2èwŸ"�k^á£á‘ãP˜ö}ÿ¨áPl¥;‹1£R‰0*Qá¸]VBQÄÊÝ‚Aò“Ã(Ž0_/ƒ$ &Ž6Óyrýû¬Ú Ó‘R-„"`�5­�£˜"º3’ïKp(´ÙLL;îCÅÙífÐÍÎΙîÂ#›Žäר Q˜\ hyîÆ½×·×~�“ü¦ñvXE¨cU8ÒH ñ$|÷L]é½~Г"“*Gõ|åã‡Â_ƒxvªØ¡Ì5¶0¨¤lâ^¿§Gaxza�p}h¡öŒ-NÍþ’Ö×Ì/éÖM¶P[ÿk ÃÅ·ú�þµ\,ûÁÿ.o–ë£÷ú(ã±³ûäëG]zJhŽ®0ü«Öþé¶óßsÛ½'sR1ýº}˨…u]€ ¿@ˆ¨b­»ÇÅ)àÇNû6½%e}ÅZ_ ƺ“ÛvÝG±næ¶ûñ𷥋YÃʽÝÛ<á×_3ºÂ�dâÚÄÛãô¢EA¶+Öõ>;6÷Vp+е:ný&E]‘´&ð (®á§ÅÉà§hù®$“÷ZVÁ¼‰k™êÂû~xìŸcVÅP õY¤®lcÔ• êÙL· £…;ƒÈ %0 >«L¢�|)SCB”/EFþÓ{�Í.À6–�έQÓ’‹/±êZ)�6EÿÂ3¨ë•aƒZœ–:˜¬µökœ—Ú)R+ÈHÚÈ�qH•ÄÕÇ#Ñ 1×A5ÂCíEì–¶ùƒ YíYA}S–|Èôð¯ ý?jC—ˆÜˆê±6—E×ìSá%Ïvâdô,`9`»ÒбÜâÏzMfÚ¨Ip¾ '— D±±LŠbƒÂª�í¯Ú‘—…¡~5P¡%20§þ„�œ [X±ÅV��ƒoàG$7� …ˆb†�ûö_0U1¥Ñ¸%E\Y~ÂlÊ8¬¾Í¶u´‘md‚e$QËxVñ0:ÕäÆ!­MWžØ�XB¶Z9âÚBŠ#¯ˆç”_ ¼ã6¶©Å„Œ›Æ?’~ç‹8?]}]4)w”âÚÛÚ›‹Â¼1´¤\aÇTŒ4�_.% H3 ]j�o">c-µ¨ÍwÝI«Át–ê…)¤à ×1‰Áñšn9 >êuFü^3÷/?Râ»Örù ÷›OL`ŸË Ù:ÙúµÍb£>…ýÆ7ºÂ Ä(æ^Rs¥˜Eµƒ�_�¥Õ|ª‹ÊÑGJ5â‹)¸Â ±6’ö·ˆK±ñ8Wàóï×eÈ9ÁÌ(o›F5Ô§<²y^R¨a«â8e`S£”…Ì"Ü%ó:ÊÀíåÓð�':4Ë´2º̶?-‡4 ¥ç —éië˜{ãm,Iýž¿óó: Ä€‹µÅƒÜ8zßüP5Z{OÕG¥�[<¨¹�éDÁ"œrE5]¤Éâ¡ð—¶áK]r]×·Áîý—¸ÕúémþYŽ0]$õì~Ô6«v¾±ùâÕþÝß™™éL?ùX‘frµ©†Z%¤7º;-ï?y¡¬öþt~…S¤Y3ø«²M8ª¹‡6 sÐy¹ç¿Í¨Š/´/‚SÌ™gh��aZÊàÜÈØk�µ¹w¬žBé‰�U–†šc±#±†$0³$¬!‚]åJ8•öžhÃ2�“0 žQá&2Ðu@>P<£êÖÍÙ?¢Î; [î]Æ',‰u­^;¡‰ß‹Ì|™J=ˆQÜnçŒþÐå‹h},�¿1K�ýˆp»"Ó³º‰Èèê‰éº«u ŠQßµ¾˜¨�DÏñV@±…|Bü‚�sçŒê‰ ½ð“²±—¹¸éPâ”âŸw{×”­#„½y³_ö1—«"ø4ÚŒXr¹”Ž»Q: ^×lÀÊNs®²GXÚ¬9ËYáadQ„Uˆ23(í|W*!äŠ}/d¶õÆÙ Z¯*®3Ž‚ËÞŠÖDÚ˜ ˜Öõ)ŠÚÃÆwY“×1â@ÿÃL¢æ$c0ƒ[¹—x"„Öcïï‰b¥t�² c»á˜d¥(æ“ �õÆÏ[;RÔ‰¹¸è‚¹ß­RùŽ·’’ HDXsÅ :9óy,irHÔz › §½a A*•üŒÿ.æ^64ÃÞá›{az»CYZ¸‰v õ¦øâ¸ríI¼Ê®Bgî‰VYµh4¾Tó“F¤eZÚšD±M$Ë>/Œ§ôÍ=¼¿<Ù,@�i,ÚqgŽÙ´�1-~l)ÕÂ`b5&\k‰æ:Æ«¹$Õd"!¿5ŠlW|eÑàQ>f%Çb0š'¬�HI·½£,‚+v‚sIÉ‹Ö(°]Ëð×(ßoõLï[nhâ®—L±B ârû ‹:…Ô-@Kz&¼8S¥ÌÊàQOŠrwEOK–€ù: 4Ãd^ÞäY5»` °ŒÙrÎþuþv¦÷³×¨õ=�U‰�N¯4ƒ î±,Šh¤no×,“ÇÞÎð�W´ºKñJï}0¯'ˆÉ¥ÁÔq mèÜN?é_cÙfö´…G<¥T ½è"®ÕFtñyÄÀJ*QdÊd“lGç~ ó4›‘sšnWl«ÞvÞð Q²:…cä|FF÷á§4€ºe„Fv°(Ú�êÞé+Ùð‡ÐýŠ3ô|c '™¿¬#µ[c¢ê#Óxjôpà/RÛd$�ö58ü)H8„oí‰ÒØá»R� ®å퉎1ɶ½V0æFy­^+¾–€�aP•Q†ã8Á¢<ž(»�G­ÜbñY¨0ú�ˆ7› (ˆ=Œr*"(õ@®¶²¹â©ÕåIkj²T )@ò„àG§Øý[ËBï*�ÑçZ1 40ÄÙ•²9äU$Ÿv{ž«¢´ $×Wè$À’ßÜmëß™&OKEGÓµA{ì}Ch[®ÊÝ‘q{€ïü¿´¡ÀXÜršéšâ¬ælä&˜Cç Wꦑšñ KEªfñµÔ±•I¶¶Ÿ�™i•4Å+ƒ-ÓµˆSíx! )•jÅ…†GŠ��••ÆØ(3�í[º0ŸE)Ãà£UE”Þ³I?9¨ÔiìHõ\Ɖ|‹¤ÐI.ÁRMàª>ðI#2Fδ»ŽS®ö÷`¹W‹~®tŒø)N)“TágÆ)û¸‹dI3Ùã}‰ô1Þ]ÁiŽ8£íe 4Ìb]º>Ë©8Hp…Ò»åÀZ Ü›[æb³”úÔŽ¸ýH°ûÜ‚2©U­ØªÄ@J ë—6Óöp$ œ,dâÚÀ¾ìœd™“ɽS÷ý€‚�‘â@±}� Qáä—Ïá½M€1�4à¨AIC.m¬L<\{oíW–Þ¾|» Ç£çRö‡ñÊYa1îÏqDÕ¡É—|®6J?%ËÝ>—â¢ÀíÐà]¦4§Ìîx³°êvf)yRp?�gTùàe|ã1γõè"<õWBÙ� Ôˆ•ºÁúô4È~mñäcIã7óF“ë�Œ™ÁòO›ž)ÄêI�­¹§Àq}e›G˜jDpº¦�±šeb.Ä<€¬kONl7è‰(â6[E]ë}Âêœ0ùt5T H�dÇ;Låí~Äv¯ÞØ^ßÁæÅZã.7Ùî#5E73Y¯�n` w|}RDÝ*1sêˆ?°„IPEHd�Ê«ªÙ§=>8ݾ²?‡\ìmUg-ˆ9�K¤3ölü�ì¼)¥P Y‰ëù¾ôžÁýI7bÀȲEœÚ^âš½¯©UûÝúN)« ¤öŸOÌÂw ‚Þãëx’XÈÂ<ÄŒüŠÚ Öæ"ÛzÛHV[¹#Vzj‘Ø®ÚÂ*éâ‹p†´<"½ÚÅaEc%‹l)…ªˆ¾�¤#î'þõt�V +âöŽ‘†}Ô‰ï§5æÑÓí8mâB‚ýo"q¯ô�ÂaG5’‡7ßÌF¿‰ð:̳£ã|»J)QROÖ(u»¯Ñ,tÛ•)Y÷Þ“U'Ž�þM¶ðé3“¿HÇm»wíÜDÕÿ{ûà³'9• t- )u䮨ŒV�óh'#<�2¶[ð«(£JZäÇK8' KõåîÒ"�•ºNL «ž�HLŠ(ÿqY�ªÄÜÔÚ¬ñì«$¼w3Pǧĸ¦ô ³‡€¡í–—I¸–ZiÁß„ºØš´k »ÌT·Vê$›‡YÞ‘>–À[Z~ÑŠ¾`ãÔ—!5CåUlmШQJŽáÑ;© ½`ì1=�‹–Ëó„¬Ú%ñþ˜"i¨´< ‘rëaJÅúóUÈ{Ke7™°[ÂðíÊõ›ÎQ¯¼Š°»‡aR¨‹¬ˆ¹¤¹_ÀÁÀ;eÂ#o±Y°¤vjª•÷�d›§uÔ ¬k î󕎸Ð=hãÛ°«›u§'¢7'÷T)±ÍŒ$µ‹¦ ¶ YzÊ1ºüŠNT^Í€9Ô‘0˨�ùÜ  uõ)˜°MìÞ5 Ó [±�îUdZΣ*èvø*ÞHÒ2E˜åÔÈRMl/è=Ñyš8M¤#æGztwøkmB|¤jnH÷]a•UTQémœg©ÏO¾zâfr|‘_gïTW¹#–È}_ãg<}k1×Z¾¯Z:»'.Êqî¶ääÕ¥kƒVë,¬ã £¹¡.×Ç*æ9Äþ_¯t^ Cä�šlð˜yïhʲ ´xO *¼]-Æ*?Ÿ^Å 7¥îÒ ‰`)pá!ù=6qù!÷®^Á݆Ï+wßûË“m�$�¨ {~l¢ŸÉåÊÐJuŒ:Yn)pJV~`ñÀÅùÈÃJ`ìiÛÿ"iö÷”,ðo[ *›²ó•Kñ�3/À�”j!<»ò�æJiI[ï+ÂÏ<¨0p‰H4�û�¸0]£ý;S„Ûkɤp%�È„�=áP¬ƒÊð…†8îwÐÓV�`CSů+àûzãÙë‘:ü êšôžFs@A—xóíݸ~§AaM ýº�Úø¢ �ûègö�/s›€|·x“¥uÜ傳U#Æ?%¬¹•4.ýà�.ߟsu\`øO&†6iGÈ»>­5éZw–ÐkázÇ� 8øm»YÙn�œ@û¼“YP`8,æ®#HJ˜pz‰…|ˆbÅ8Ëg¥C19Ò¹y š–ó³Àì›DJ£tTr^ ¢ôMq?Ë¢€êZûGrBA»§å 3 wÃáà p ,)aŠR"9«ø¾ÓÜ?íìžìo÷Þ_ŒöÞíütp²ß럜m÷à_Xî«ÃÁ~ú ë[÷:>�Ûÿü|Å_ë�j¢ªÞ:Ô“æÞÆ3.ÉwÖÁ­/�ú¨qeY[Õ{â™éªË*HsÛÅé‚ެßãÏíÍ`ùo²diÇU·ÇŸšôx‹†ÓìÔ“í+I�¹q a¯ñ¡ûŽ'±ÿþ˜b ƺÊZ² ­zÂág�*�ÁgK‰ñÓ8Ħ·Ÿ”Z¶¦ü L…ówï8ÏMoC¤!Ó#�Å·>i� »€\°kž-ÊàâÝ–Ý ¥‚,3ºŽ,cotùjx¹?j­Ž2ßî\´ˆNðÒÅùÕÁÙÕñÎÉÉ^¿Û¹<=|r½sqqr¼·su|~æ¼\3 ŠG¨#œÒv͹Ñùôy}pvt|ÒðñÙ‘Û19‰áR)tü«w—;W×Wÿyqpýþltq°w|x ¢÷&S~öqçìê`ÿzt~xå›üyЦɔl%Ù´”…è…cPq#LÀGûgV¦Ð÷ÞÿÜsž•Ó¸ �·Ðë1ˆ7v“ÕÞ4|Ʀ]ÕpÍ~–7qq³q/ô6¯i³›b Jú¦½ÐËuøëþ›+]÷/àÃÕޡꣻ ÚâÅ»Hß»­W­­ŸÝÆÚj ¾íÃõ Ò2´½{a­±íÝÑ’íÞ«n=wÏJÞ“ê:T^®+ùÓNùËlõ8<Šu5¼ô@¡w§oüÄ׿â.fò:Ù¾hU‚}'-xÓ:2ôöí|¡$„›®N¦p&Ê) `çJƒ\W*3 ÙÓ¨¿È¨iÑJ˜‹Ž…¨G:ì=Íì ¼ÚU †¼#bS I ±Ú.([“7Ás§áVò†9¤p:$®Æ} =GÚô(yßÔÑ¥+ð–îÔvÌW¼+n9;bµÈˆ.‚ë¶p™Ê·O3ëÉŠwH‰ûÿ­T±YmLÙ^ƒˆXÅ‚™Qæ™sR°a(üÄ3LÄŠ@}–´&žB‚yLº*ò‚æ=Ùð³ì7é °c{'g­‚s£P&FÑ[” „úcGÀ@œŸ(6wÎÒ›U Ã?gÑjknu£"ÊÓl¤^ïÿ™SP‹0ø)‰çA�s›õ²ôp»õGå=+‡·û~’fD”ŸgiŒ¶¼*Ï=ò<¼A„Y¨ Š£B{’AWöP�l¥œS8ñJÍÉzãþˆ~½Ì&s4nT %Ø–žayè¼âKßõŽvûWÚØ¦¿RUü3/þE®1\ä�O_VÛy:�NèÚ÷�wUL µµ‹§¨:Ù ŸœöH°.‘9&Úós2!´`Hzþyå �IûGVûÇS&((¤t'ÙDÜG›,z’Íú.¤+yÕÜÙO¼© /tÛ~…ú¬<;Á¼C Zk½j𣜅}B¢•nãÓ3L_°Šéõž‘g„1�ú�‘æEˆx ºm\bº\§}‘v{zÍpÅ®u•‚™ô×ðìF½¾µ†½Ð¬X#jÿY«fêêÑ´·¾ÖŠnݤ}°04þlrvÔä9Ò» £(% ì»�Ê�$¼J €"cü £è0Ë�+®÷Èo3Ù¯­$òÖ™Ô`Ÿ šcþ<óÁôzôÔ™2èÆŠu T^Ç¿6«Gšm)Cµ¯\4*ôÉÅ7�?�á÷›^‹ß‚Øl#²håíÊ—ðÖ;†²¸/þ‘æÙƒ’é~ô÷*”;V·À•UÀTsYaš„ >aø ¬%€Áyµ(ù| gŽ˜ŒÃD»Tb”„ý,µJ À€© ·ý˜`°f†îrŒ(¤¢‹w#‘j^K…’/'Ö�ó/äz-�Ûú;6WñZkä+öçHË»a�Ž&VÐa¥«ýÎbóM�ðÒ�#-ícÿôãÖǪx»ªm!“Òü]Ï>é+VîÈ-ã릙i¯¥áØ¿bÖ¾ p*�v\¯ö×…:Ê›0]—ºø@,«fæ6V�“=@[ Je�óÅ3�@®´ô+J'[JBow|UcVˆHô5ójòá!û¯o²»ƒÏ£¢wÈ 0=áácD<Å ™qFê† ãЈO ¨ôŽN<%‘éVé.ÈïwfÏÆù^e!gôIÒU!-ü±Ç�}š!õ~»¯‡w4g½§…-¯&dpEdîó$ÄtÝt@Êyc¥IÏ— Fx߯>)ouNT]-C—uÁ’í…¾5X%[à8`!|i¿­ªÈ·Š˜ÚVxKµ¤ ¸Ñ|K ‹�6¸‚�4l.€O{Êx�cíwïF74‹ûí›;ÒNvÞ8¢®&Zzÿ†Õ"°¡>¥0n¤þrG¼|ªî4Ûâ"ÄðºI3la³òuê7a¶¬Ž†xW×èhÿ@·RÈ`Ñ}©‹ã˜Øy©p3É[/j§l0ø«þ+24´×ªôKР'n3¹@ÜÅ`çâ¸geÞn œ÷Õr <œr]h„3m�í-øò�¡ñʤêê!Ù…�ì²+Ì-�j ìCK)šC{/Ð}G#fn0 ]¬y#V Ï�Â=•®©ÂaFmÃ/ta~I,›á/»Ör‡«öêÉÕ…r›e×tr¿E—m‡"áX¨àŒ™s]bÞv‚Ýz­†A#Dy°�xfk!Þ: ±Ó ‚Xd3ÙàÖ:Ö !mqýƒ_>‡c®€C„ÏûðËçñ˜ðQáíú‘ˆKžWäs��X"5ÉäŠ'�M¸-+§>æâ[™ 5Ûu�B–Ãɸjí×JDº1~CÍÔ†Ç,ˆQ.Õß A,Á‚Ñ1ù¤J‚ ¾äæ¸%:Ð0j­Ã´“:&1âllÐ%ZD'Ò#ÈȆÇ]Ð�%GmŠnÀdÖÀyY²ëBÄjÌ@#F=ub½š«‡*W”j3ÌW/Pmâ+³pЄ٥ԛ3�D¹ïûk›�ãÄÙE­Í±r]ð‘�štº,f"ÂøJ‡ñ;3WŸõ^ö€iÔNä±Nây¦µY_a,Ñ®# ‘‡¥ap~Af¤;5“TJcpAKµ¬$FÒ 燣ʘ…È&mÙ~á¨<£¬õP©^Bέè#î+t7ÓHÆõð5دe÷U\cd:¥E«?ËÕ('ÅôX-àBM0Iþ:™F×:C¶cŽ'+±({£ÃÁ:Ìôñ§j¶‰–‰½›âîc­ƒÖt\cðBä‚Be”Õ¤&sŠG^á4®; „9»ÅÛeB{€òCãBCË~6 "+Ç\µNPÞA! ÌÙD °/c?óÒÊÄê| üPë:¬¾¼?ï±wvMYsÇ=‡Ÿƒ"^T Hz4bJ™3Ýa™ý�‰Â—YÛ `§ztÍàìo°n„óog�dñ(锬NÎï6ji´º"�º‹|ÃÒñE8Ųò-ÂTù•5žkÚ|Ñ=°оm®Ó]ó?éà«Æ¬Å…¢˜w›_¶£âSüCÑè¡'(Dá}âI¹;ÊãOJ§ÜõÇð�¹ïÝŸï䯤çi¨ÁK*.Iõv™˜F ±�»Ï –e²T[‹'°¿ZÚ@£›{ ×E@qºÛ|­’NÇá_kÍ¡òâkE½ÊT¾jSÅM÷DEhÒ„Ó6 ”ï9wL^4)|c’i,ØòfnZÄ”$;“Â6j¹çÃdÝU”w§;FÕ ˆë>D–ŽÛrѤ«±®1žHE§(ÔEof'Ó°ýx>ì9oËlúß­ «æõ%œðÀ¹Ûð¸IêÄ9ª¤räqj�²mW£%vÒõ< X�ÀˆLÎF\}竲F9ªö¢Mâ1Ô.gí”#Jlï;«QJ|z€™WÁnEСUŒUçµþ€ûø¦5*Q[¼&¹^‘fšøÛ§|Xpa¿o‰‚DmBå°ÿœ[&M~ðºnv‘¾„XÍ·áˆÓú£«…UØ¢zùêû7»! %vÁ‹?#[M�y蟜¦íH ·ÎÓCL‹ñgï5EÔ.¥!ó3Ã×_½tS¯Jn«dÅÆ‰^€1œ¹m­5ÂŽœ¤ÁJ­|¡%œF%lé$œ½Å¢Ùgãº)ØÂI/˜"ÅCeølÛ+'y¬v?SÖù*ê/9éä .De:i÷%Üc¤&ú˜8utq~°tðaç$—¶H0�´7n’å@EF± Çi–Ó=+˜[løŽCd&7Ôª†}T JäÄ0ÅO�gé7òå;7lçdçòÔ9¾:oÁà×�¡Î¼“Kï—“~º<¾:>ø mݲ|šG´$¸LßsÑÖ˜#{5ÄxªÍ7Èq�»§™f=nÏó–5“õŠjˆ*±V©ñ@¦ûüíKý!ýþÂÇÞº§ôv|¤á,“Ì3˜æ¶ê±=ÿÞ=çYø¸³s9Ú{÷þãñÙQËpÞèᬠ£‘öBaÊ$>ó½s$΃uv~u|HYœ-yíÞ· xf“, –¡ Î ÒÒî©°!ûœLýøìðÜǾ÷vßɉ¿Fq AQzBÁ´ªì6H“ \VHÄLºˆ†äqXÄ…äUØø(†[˜`ÎAÁ¨:\’ ûë˲Eöƒý¼Z†‰Ž´C`œ¢åÖ®ð5 ÞQ5g`äì¨Ññ }Ü9È8åI£ç�਩þ/¾‚V|XXñȲKBqÍå.ªŒ´‹§{ È•·¤"à ÙäÀj¤p?/Ž]0ÏʼîîçÞåy±¾ÊŒMKl 4 )ôÔ`•±†“´Ž 2 ³½&–§O2Åê=lD·Šd{§£�…ÿ`õ/Û´�&Š�l'd�¡5FÝÔøLÏ<Ò®l;¨8j�xæž¹1‹Ò5:S7ª‚`®PÌú1~�S$mÏxR¤³(ña¢�p¦ë†s—:´H ¥¤Ñ!–DƒŽ’Xš£.Pej³%¸ði <•�}¹s:¤°ûÓÆ•.ÄØÛ$ã’ª�ýÖæs€)yOOñÕá³6›�ÖGOI–Ôð}wúhK Èž1ÈwsG€× «]X5Ùàh 3˜Ó}'TbɃwè8Õû†EÝrx";HH}†?•X¼}¢·Ù$WIçŠÙã‚GW‡›¡×ƒ‚UN¬„8n)cf˜u�#\E+Ö4` �…Ô¤šëøíÄæÂí–«„s<1ë“X]F¤†¨zku�u«¨û-ƒuœùãtœ«j¾ÌÉ«Õu·Ü þlÉg´½²±Vª÷úg+-€l¢UÊ�"¥Dàz•èaàSVOI4¶x‘†DÕ_‰NhdzpPsÌîð+-sÉ©ô»z8|çã×FԘ؛»¨œ€*�å‚F¶›H­FøÚ\Ó?ÓrMhÖŠ1�Çs˜åßé7Ïrâ�¯½:uʉ~ØÁÖÍH¬xd,c�Õ×;suÐI›åpv’h;¸)Ëe±½µuw³˜Có`›²Õ¶ïï\yèj#Û Û¬8‘L]é.³t¾Ä+\Êû(·ã)%C×Q£IHx~¼?za¢¬W.[d Æ•‰ýò.žŸæÂ$¤§tÔ»r;äʺsùÊ`£yZ”�1»ò&ø%E>êL¢E=0ƒ" Ö"�¾ŸŒ�ÃqM!ˆd¤R‰Ž’“÷†y!^¥Æ!®2º¹`r!¥wp ²ÔñTÂç„ÜR‰;€æË0óo¥ü•}é¤OÚ0S\l|\ �ki¦Â[ôRé bsxJB µ.©Fu`m‰™äÀˆwF…¾Ø9¥¨¦D[‘ðI?¸Ü=£{Q�G¾ÙºNØåfã#¶ñ9^ìg·ÀKÇ­Û¿½¶HÞŠSƒ|Ç9–Ö)À ¿£Ö@¤›ÏmZ.÷9^]<}>Ðhãiè;Q¬|ñ]»„lDvVÇ Ê&*¡¹Â3zØyt€„ÈH¿(—»˜‹Éž"Ì<ÂfݱûJÔoL�|Vx’'Uƒý<˜!²²J…k®„ÙЛ£S\0æî�)|º…™#é¸n–J§Afw'œ®Ü1ŸË�%i™†Óðéò°%^*OÑçZÇvÝ…ÉúÐ0”å·^ãf@ùo¿Ìuÿöt6äºZͳ5ž¾XŒºÃ-襟‹¼oœçT¬!ÚŠgë ìž Â|Š¿ÕÑ#¸µƒ­DI™>°”å '½ÙÅi7dt<Æšú ·c‘ô®d  PÐÎ8952‚Ö¡ž–•„:$ËÕñ˜ÞäϰtºQ››ÊrÃn`gøêQ®(À€~ÒÁ«&À$ Sb‰ý6í~¥çUõ^­j-¼¶uô~u¿^“§+*¶?O³»ô4ªÏ Þ\kŠ.zÔ‚…2bññÅ3^Ê«ˆdy2•¢éÿ”3jÅa‚‰uðÇÓðóÞþ™U&kN8Û©Í,Z•_ü¨î:ª…U%S•\/7*(Hîo D0Züv=¢¨¯ÅpRü(�¬iV`?‰zZJ$•’iTg`h5"+‹†ÆOº«¥ÙŠÄm Ã_@­©³ër¬&‚Î]t?/«V3Η‡V`üƒBÕÑÕðþxkçâXß7À¨3}Ù``0.¼°ä8ŠVŽ áZ (ÐCqs ;Ç¥s/(æÛÚ �°â¥#±ÇÐ)®iíøB¸,¢fLcDŒ§x멘$xʼn™|Ð&AÃÐMGûDy(F¢G5•¶1cvâê4@¡»‡ £iQaâß�KA�+ØfÞª(¥e<À¡­By»ó+ƒ†Î#¶ÑàõËÓ]dVˆœyH"£¢—êUì-QE�òÆDØ?Q˜8³Îém‹s^i´’¨¾¡tÕ¦HôjI:�Ò‘Çå}ðñB£TögŒA½ ™%‡Áû;ãr’¸:ô˜ ˆî6^R�Û´>‹,�A„‹–S×Hdçˆd²ÇTWœ²ÃCb¯­„BŠ®ÃV#�䊯-bs‚} ÄÆä| Ë ð!ÛiE¿T¯_ýùµNÿÑ¿î$è꨷„Šª|¾ÔèéÁYí”mÚ ¢^)JŒ/)ZÃ(H½R�£Ø .õ©…|§›Þ®Í{¯‹Šð:^³¦­ƒÝ£Ç¡Ó·<:+Þ "/i�ŠçÜés7þþÊWrð-# 1~6?&‹¸¯¦a•´&@÷µOʬ·3�7�¦o“CWß> kiµl‘#š€3Ë-«ÇB„Æ»YÛôvŽ‘»6­O ]}`�DØ °0¯|h’‡w Š”l�jF_áí@I`yG6FäX®Z‹µYtGçÖXíJö²î”ÓÃp„ËšP@·GSä§,ˆe»ÑÂF%Öþ¥8EâˆN4?’ïG�”¹¾uÿUtºþåo§Ô_Y¿¤BðÁë¬84lK)édE³slìEkp<óugpÚ�/L¬Ž-z³ Üp‹Ë=±ºÊUìùLÅ!±ñçgwΑתe•.6[‹†¦ç©>E…Øßüðý÷o¾§b ˆ ŠV: €WœAÛ7�£–\o©»bEºÄÛKÅ¡ö¢r‰n¸Y̦‹„¥Y¾1ðb¿ %kNZÉé´J€ïp1Iæí> 5DŒªÖÅ”±4X±Þ·Ñ&¿‹+jA¾£$³ç_ý‚R"òxAÝy8ªÌuÎ֑椭76” ¶€†è7jÜQFë¯")Ïh†×G Ð2wz¨ˆ¯ø©¶.–édÐ@'µáK ki·ôL8§g½ÞÝŠ2¯}¹^·Üû)¦íèô§L o/\þ ÒEg¾H¦³@[`uΗ°„\öRÞ:Ï­rå--ú«%á™jP1ÇÄd  Ê>M<è4©$Xr·MjŒhé„¥;Rw¨ŒÖÉðäŸqÔÙqŸüGëþ^�Ú*­·Iz�b׺½ê¼a¸èÉ´“ˆ› t Ø GôAëü>?89¬Iã…Ø£È v“- Òý=9éJÌà²#I×½¦ùVbß•ïâ×^hŒSÊ¢¶>ã¡Ø[rîmWšÁŒ?[‹BAÝž¬ú2£€‘oòa ëÜ‚’´Ä² ËlVã-4bëU1ƒŠ2eÙœÔÂÆ«2FF"ËDPW�g8-Sï±uµÞÓ¸ ß`j´gŽÍõ<,—,¦X–U®ÓrÙjw#Îh‹DÄ?ÐèªKÜRio¶—³9“ý×å²9Äc9}�ÃDcl®Â³îD® �:aØAaG297(y ŒªO�XõÑ4$†`²Ãå!‹ò0P6Ê ˆ$õq  Ì_‹Qu¼eç5ÐXK íàIØØÍ%;å„ �7VâLÉ<ò{î-‡2w µ¹³oî—¯võÿN· À¿Ï.¢"¶ ü;–†ä +„¢T&"bh›RÙtóàŒZœK\V!—5‚5}ÿ2°Ím$Š�¶maëA¯Ü틨8ØÌõvÀ©p¦óÛ8¯Šíu=³É[ÉÌnîz2š¬îªcà+81ºÕdž¡.âu)Gr´º‹îDm¶�Óf±xU[`­x^¼Óá$AÕvÀ„Dì%äÉ S¤v¢˜câ;¡¼¿[øÙT�™Êg Þ˜_ÆùbÆ¿Á‡ÈW.ãh³%À¼®,#´&VÌoÛK踣ZÇWÛAvœI DbEÙ�ŠPˆSösœKaüŒ  R»Ñõ®˜Õ¥tÜš¡w©a•Ì1‹#Þ@׸áÂ)¬ ûÇæ=µ�_y¯f6…Q¯”ì�`2{I¸ØùpIóuW²ƒZË�ËÈmìÂa1y•éÚ4+H'ñôëxÊëJ5:Ý¥.=APñЬÌ\až-AŒ–Ø/\ZÂι‹Ý€¡diE—èŠ(.W/µ_m–“·^sĤI#on�#ô8†%aµ3Œ2Kf’S¢¡�q�mõhy³L0µ]ÕxSäOc Ê:œÀÔµ—ÆyA}U>ç†ÙdvB™òt»Ks y}ª ¡¤±Ð,w³<^ ;¢ìF+Ü×"»›X]³é~§Ê••%¡Êºjž`$×€ƒeû§Y†±Ú Á`U*™bNhý�8ªCŽÅºÝº`ˆU¬gJ„•UùkÛÕ‚'ý8YVÝÜðŒ#|iç/Þô…*ø†�ëgèòƒ$è7^Çmž£N)”¶К5auѹéô·Œs�?gÎZÚï€Á£_,{Òo�?e¯ÝØ]pžî�Ç;>³+ä“'_U»«PÛ9ÐóF®zxà>(’y‹±á½æhÀºÍÝWµ Á Ýï6lóJÒ]e5ªÍQè.ñ²eµ`s·»�ú)ÅÚè×ÒÌm8Ë2ª½—Žqò£šë>:W@ƒ…Ìc®’)ƒÛGèïäa.&:˜W—°ë«�ðäÚGamõòIŸÄ®×¿ˆSW)ð�°,óx\y�ÝŽ~N‚ø¥È™®n¶RìÖ=g•[üt{hž KÓ6Ðv-já/ý]l–mq½ª1ªV‹¼FÞFáqF6©ã᫨Áñjf3pŠ_”Ä-Ýx®öt Ë<‰Øbú£]Œ…àþÈL\jœ}öâ`x;ÜRÌT°¾ u.‹�Ïrh‡~CÜËuŒY#uнœ+k×v²º@lX •ib²uDî�ʪb“ˆÀ›‘|Á“}XGLYó4ùÑ:è°º¶p”�Àˆj:ذ±�½1ùe¤µ“¤pþIÞí”,�8�c„Pk´Ý�‹<¹7gŠG/|Æ`ø ò�21/ñ[Ás "¡è¬Då/(1×””¶eIU5ˆns‘Û-<ع%œ¯ŒœuäXvàÙ‹x¤há…¾mQP°F$ëk ‘»dÇqœs™‡Ä•�¿mÔwxÊgÃPGëœ?Zi{¼ZÏa€/X/�|Õ5°Ò?ï a„/X2¯RÞôî¨NU—ÀÜG f¶{^�ç�‚!!‘G…46íLÐÅ’äfwÓ-{ÕjÞðs†ùb—�S ˆüô]@¿Ï¿ûü‚ô8@—e ÂY ÈffcYHÚóWêó×*úÓ<Û¤°B³»§*Õ˜’D†ýëåqƒ¢0o?²Â:¢õ¬Yz Ä—²ÕiwAA©‹úbïŽy¹ÑÖ¹UÅ»àñ#-#›¯îV"_-"6ë¯W°222²3„`רà°n’7¶rÑÖ[âšØ0àê™·TY— �›Ë¢d,›Žõ4ëÞÅI©AUúï|z”ŒÙš¥F†6».²iT§æíL�M÷üi1O#Ï®ã)³DkaÏÃÀDhƜÈÅ>M…0Pt†"£ÅfË¥Ô"ĵBözšÁ m Ãà0�³ºÁ„ŒŒ"rÉ]�T°âñ±mT ß~�1rBÄ€ÂzÄâéÙlе[»Õiñß6 éeðþòd@]%¼1ÖxgUq­3J6öÈZSº¼1‰o8 :® <ž–Û£†¡cÄf¹¾­T�ÚOÄOlèÊ•±sÆiû¶u_­÷DQ€»8¨�©§&ê9%“7Ím`®, 4² Cc¼>‚ÛóþÁ Fç�º¾[^OÈíwR¤|ríXáož­ª£x­éÖ TÇ4#HO³Èª.wm0‹*§è�è¿|ù«ÄjŠ„s�e<�¬ûÀÓi$G eP¤ßt^rNF�ž¼«É¢âb¥*‹ Î$!tRÿ]Pl@ —ÕMëLvj}Œœ´¦‡ýe ¯°.Þxl)e  %ˆ“(ÝÑàSŠŽ§Ñë.)AÝQh)$937¼Ló{JÒŸÒ¢Rd”™‹,ùaÇý±6Ÿ…ƒ7o6·eCÛ´gÄ… íyvY=Ú"}�Ù³öâ“&0SØøîÇXÍ22ÚÆ'!Öî]YåýîËãÒö�þ6ËÜ ë&•èŒæJ‹¦cVBÜøÈír±ÚÖ�$ÿfì“ÆÈàakµRš·�Ö0ì¬Xb“R];ßðpÖöÂßòlν~ËéÔSÙðl®Nç·;šÜ�}4kõSƒunzXõ¤º�êê|~““º²;Í³Š¤Þ"^Jæž\‚[´‚(ÐkN(©ÅÚ¶Ônäa P‘ª²WQã&RvˆN"‰þш³·g¨ê®–³8{ &TÂU½È–IF`shïö�RüÏèÊq:²i¯µÚz*•â°d ®¼˜_µ^Z§,�A¸4¥)+ŹcV!"òOÀQZx1­ãOzy'É&ÑQ ±P^÷NÎL!û ­ Jt k å¶�®†®æ£ƒƒ3Æ£¦¨¦†ŠÓ!�ÎûKmk‚ïéŠÏÙÃ:ã f­§µé#e²íx^˜î©íœŒq›‡ˆÇw@f H`k1?ŠW´¤fTAæ! ŠeF( fa˜jÀªî5X) ÝR5×~+rSÕ¡ŽÞßßôb ¥~Zêë­¼‰”6þDàß8GÒecÙÖ½õõŒÙm¯Ù|Eœ-ä_p’‡àç AñNß8gŸ%¨~™×¦È2ž`™8eâ´æ? ñ ^qš4c–ˆ‘dHñåÞ½·ÔäâB E}RÀ z4ÇGèLwÎzÄúN„ýÚ¶|;B’@YhTjª0†"?A2{Á‰‘9yhªûÖ 9”4½Ë· …àÃ]e{Ùòž+k9•b�=°ÖšÀKÒ‚fK“=clY¼Ô1îñr'rf‰}¨ÑÁ^ _ß ßö凗[¯ñgøgû5ü³ýþÙ~ ÿlooý°þd{ëíŸè‚E(ï¼mì‚®r dÝA6;G¹Ùu†%ÒK:†fƒ=Üœ.Ú¥ëËBº÷'4TõG—ÉTŒnHH.3OÖòæ£ÄÕ{uã¬, †‡oÝßÒÃמ§¯ùñÛÈÝïžÞÝÿÈÙ]<‰oÿ‰”®é e"ú­·ú=ßœô‹¯Í›žéÕ=ê¢9¾¹ê7ÿ¨ß´|wpP½‘5t»á]dÎ,ÈŽ×ÇõÙÄÞþ¶¨ôÔR[‹Ž¬^—ViQ¦ÿ¶¹$(mÞ5@H�ÂA™ì‘Y¯Õˆ‡9ɯ°_ï84X3süù寷nH9ÌÜÁâ#®0Ó!éòâþ žŽ£ïzÁ/ŸÇ¬yþ™ÎrÝÉ%\EYê¬ð¹igú‰Ô N8dq®µGj‚DÞ¶ã$š€t»iŸ‰ÓMÚÝâ ņDh×ç„ …ù 5àV\€üBǬϵZ$Òj–7îœP4[|�„V„ŒôS(¤^Å8�$•[Ì­ï8�ë¦>ߟ[[ñ{xë… ë÷º.šrù)�1ÿQ�Ìêꆬt¬¼‡4·\MãÏÎ#¤@¾§ˆ<:SÏk(Ƴ’/T²y˜ÈX݆ÆÛBNœ:ÊŒ†ÔGýr³‡U~Ýöz#Ðßá÷)÷ÍÿòÚé}ö—lñ+õu�ÐI?`޳.c”1£è”Û{Þopu.êÛÑ ™ˆM~«|áÑ5m1OÞ<ðˆrçKÌ~J-4,’ XÅ�0^ŠƒìÒTVÀw¬@[�Ñ•o%ÜAOÍYo-[cP–p×_Ð^{Bƒ[G´_ëèJ¶ì]¶†ØlŸ®RP|ãÄWгùAºå¬2èÃ@'¡EADs�,6\ †uG]¶Ô}‹ò¥+ùÑØæý’Æ­­®rjEðÓ¾vûZÄ&†a°\tÛ}þÓf­#W{TÚGÜD‚Ò 4ßÝÊ�MRVÛÞYGTErÉ<ÆàA-2aéÛݶM>ûês¸X&Š@ÞñÊÀhyŽ;ó|�}ŠÂƒÜjÖZ[Ɉ‡o)ˆîF§Õ'æú%̽œ²˜‹áY)òÔ×”¤@QÃì^0æ­e.1O<úcµ$ûXJ …îKÔÄ$õ]ŠÒ„®£†»§š×®¯7æåü±,»aK$å§€[x̺Æj‰ÇCƒ›Zï�ÂÓ³kÙ /…<Öè^†½Š©Ê ò<“ÆUf•èbg–Ë*±ÿŠ‘‚h�ÙN!JbKËC¬H¿ˆ}„ã˜ÝïkJãº9>#Ú¿¯TñZeÂòM.®Wâ_Ƶãš ß-æf“5°R©ÛSe²“ëã&Eå ·É–�Gè7鯷ÜT°¿ }R��ý¨ºÐ|�Z{œ1'tÖzv™jÇ®{kÀ.Y{TÉóàÖçµc‹N­GL§¨h:'©ÓRð�)‹üìuió Öõ§ÿ»ÌánÞV[Šbwæ BTÿ7Ð.{:+Àc�œzN—PJžN)ÖY¸¹à¿ìò¿½]Þt|ñ»›ìãåZ!âö]ˆ¸/ßdïÿç³ÿŸfPíâ]ÿ¤6Õo1Ü)ùãö%ÜaÍPÕÙ¤iªòòüEàú¥�„ƒ:tâå�þ�b'^¿|ùj;ÿi{{ëÍk¤»I¶Tïb·‰ñ0ñ5êèAýÿg/´Î}hw‡¢÷Sº”8+#TKÿÅ÷\ë-fd¾m:&·hîüÝ,íÿ²ZþËjù/«åS¬–F÷öv°ï;¿ÖÊH謋»L¡�òÏnž¥ƒã m¥Ž�4™wqŒÿëì¨dÖû©O ë'_’l;=vо«ÖÓã‹Û·¾Ín�û¬–E�• ë±Àéïe�­–3Lçß~\ªüÔ´E(N; 7t:€¦Xu5#õ[Æ3¼Ñ&h„j%­ú¶£/kêqA( ¦|¦XwËŒŽE§ƒ�q&¥LH�[Y<*FUcÏqI›Zà£Õk"‰ÊJ‘ øÖKÒÍ‘r5%3Zï`‰3Þïz™ãY…¡ÊÌ;o~xIñ Ç)œ]h„ªšOá/²Ü•%i v¦{��¨ÏŽƒºÃ+¥"s@ƒïÌxPæY]Ê´qn©¾È:ißš�z,ŸhãF m†‘%Õ3n޹W§Õî¤ÑHð�Œ]å@t{ð´¼£|]¼ƒëì£;Ëe"‚OpçêÖÓ¥*ëlX�â4ÙÔò=Š·Ð”&#vÍë·[\9«™5˜ÀwËȸ9±Fv-ËäU&?"M6°nêô@»(c�“v3^h‰øþ 9¸v¬Â«÷æ$KqºE§K �ÕkX”}˜~IMÉ}DT¹ 'súìæ�1¶ |Z%‰U;×ñåÒ¥YCFByœS¦ÒÊ»ÎÑö/iÍ)• Ü-B£><�°n®óB®•h\;¹wÏ”BÉüq*ÔÚv]Èõ°ZÅw& ë°Ô�bÀs:)Ï9Ò�rjJµ¤95€MÜQãÝYÉA3ažÒ®œ±õe=t•jˆO{� ¶ªiNq4wZsËÕ²*阷#Ñ5'©[ñ<-ÊÔ€%:W‚,¥Øý¨uÍÐ…îEIU!Eó޲lFµDè¦ {¥oˆ-¦;ë�x·ÀÀ È»Ð0*–ˆ  ¾‘ZÈ;¨ž«a.T¿&°žfŒ=Ü›Q.PÄüئ‹çöØw»×ûõÅw½Á ×[¯–6ýWl ¯˜$Õ3+Çñì£T•{g‘ë¾ P²­Òò»ž]²@å.‰ƒìBxSQJð�Òe}‰ n`6£”Ç Ö¨™g(w3uq~'s‚òº5›±«x¦¨Ð7’gRÚ¹\N3ÊЩ~bª#7°[P²ù²oUëð§Y ZÀU¼‰üùÞHÜÛ�ŠŸh«VÑu™]dzÔõ®Œ]€|Þgð›Ê4Èž)ry°A�PL9”X¿ Oä«hD3´- Zhµcë¦;4Å(õ¨ÜÀ%o׆1=’ëìòÑq=!VÈ%½9ò›.€†„ŒB¦�;’xuƒkÙjYÒ÷Í*xfU½ªÓ0Nx_ZŠÐèÏÔ±ÖÍüÞ¥#~iV Íî´.½Ú¼kë]ÕåÌð+¤Rw¿Q—RÓœ-Ž.Ò«ûk¯[cõ¹räëŒÛFw9c¥óôOµk¬mHäþ¾7·»k*ÎodR«­s’$=ÜLIèu^ÆÀÖïu§Qk¯çº)™çTRr$³€‚7I´{ŒbDn Ã".’jÞ¤*¯µŽ$¿ÔŒÙÝÇÎ×ÁÙƒ…Ò�w¾u!ôì²I âÊN9è«�3I¬DG}~ šžz¥"¹Åõâ>æ›Ô®íœUóJ|>Sá­”I|Q3ê:#“Œ‘ºf@´~ š¶¿L:rÓú“‰ÑWO§}£Îòë°¥–&c´Û,Z%––Kì˜39›¶¦¢Ðµvn’pì‹ �šVhp›M¹8<µZ(®˜dBJ&aåvÿžgùC¢u Õm§É:,+D+')Á騇$Ðê—®ü@ çKšQ~ÆÒˆvK� €¹xêlë‡ö‹-Ÿ9jÖABiÉ|‹ô~žu©8Šó†,ÂTEó=ræJn=IÄ}´¤š· •~¿YM3ÊCÒË5fÉpÃ@zg£å£‘X-Ñ‚ëMÂHžnÞ-µÙhÀ•\(Ks¾ ³ELÑ`K£l_�´¥¹¶ ßÒIDÅ•KFtòJÀÜí ºçØÂ:A˜æ`jßù?y…ä£Ò1¨…ÁV£VË0'ž£)ò\¢JËHõô¸¾¯ïýµaàá=àZð'®YRM9Šñðx›@_©è®øØ&jI ¾D ˉDs¸4–±\ñÈ¡úUÄ8h Ç¥Zfù‚#¤ÅíÕf|;.aÿâÞß´œÛï_´úžéèQÑ…Ç4GUU]"ÌýFÑ8qqœ&x)a�˜‰‹£ J'¶! yjž¹ñ��R¢ÝæîÆcäm6ºÃ;«¦© ÞÕΛH©ÒõèÍ}ð”-[”»wлoÝ;Õµ?\¡K9E˜æÖ-—#,„„o¯¯fUj'׫¨fK^êØcÊ‚.ݲÆ<Iòƒkbûq3(ª}³ ÐRÚ\Q«Œ ç*â®—÷ç)9ÖÅ)G�‹cу}Åž€KœÃH–#G•iÿâÜi…Š�Û÷JÍVZm¿¤&tªì-¢ïöúÁqZר˜SŠrtWê�{¤P_@¨ à½/epYç ÷¹à&§rI}8·”è|�¦ûb»g�ÓI eøXÊÕx´ö-H|ýÚìTÊ=“mÖ½¯-L{£ÃÀ²¡¯¦E³%åTÁÅÍë%­Kи«xlTüä8Õ°S„u�I®˜ö�O˜œxÆÍK¬)Nc ÁŠŸ8dÆó ­dÓ2‡÷ ˆY¬CUË$à…>dÃûÖ:°ý§ÕüÓcà8÷‡ï´ƒ·(ù±8˜\ÿêÿ”Ù€x¿+ É’þ¸syu`˜£ù€€JœöÄ®Èk ÍÕ²` «o¼`6èîìàèààòäøo£«•ƿӸèÛ ¿�ÇWŽ£ÖO™Õ“w`Ü/`g‡ ûÖ­·vÉö[ôµ¿…w*éò~O~ i}£~+�¼ŠÞR+ªÇ !ß×…ó+Ÿ`J\%ÙÔ÷0>ÝWÁñ6oƇêF¨µ· 8ƒR�ØþŠXÔè¸Ý}Û ™ï“°7ËãOžžüDç쪹¹º§Ø}žü+1aa艭¸Ž‹rC�ø›ÅKžª—†©) Åñ¦vôD8k­&viC·¢D#eõ÷íýpàå ¼mëFÇùéɘF‰½Û°1[pÄÍØHÛ3}š*‘m].k‡™gh¦›MFèînƒÁ¢ÿ’äZz70s¾±š^6«³7ÿPÛœBŠÀ‡8©³•‚ưMƒM†»ÉjJ‡OÝy× ¾vÛ»†Xßx⦻†ù•;¾ÉbÎPc`$ÞQ ö´u=Cý2RŒY,�’û‡}¡¬‡’ZÚ:j^à+^¢^ªîºlÝ`a\ñÎÝR1 o\¾õö² ÊÌ´{xÍ+ˆ5ÿ�¹ƒj3øÀT·Ø|²«fqÂ'Ýd,2C©‹¬!„PrEºÖ¶g€iãÞkç¦éšhަ§—i3r°–ÉEÒY‡<·r�º.}ñˆ8C^�¶aµúõš�Õ[¹I‡¤¬˜´#cã–>5Çd^ô{©Ð"Œ²˜XÔa«Ò‚½ß¾Õ%´nöVÙM<:‰Õ‚JåP ø‡EE^:dX.n7FÝÙ© ÞÆ¬˜ÔhI�P?htê»gɽ�œds²ôô{­jb‡4¼±ŽˆãXëIœ{—ØöUÍgSMOŽ‹ékýKžÞ¿MîÞXß3³·:èœ<UvëH¥Ê«ÙƒÂ°?þ† îÇN¦aR „[Ä^¡;ù€¯üššÖÅ¥ˆÊ`Гb1t� žºÜE]WÑ.HE)yýº/èf Gv>�ä ž»§Øl.—Éý`‰Þ¹\àSƒœ.̨ܬ.g”‡aÜÐ9ªp1ÀÌœ'*=Œó„–�°U4äts™ ~.cý—ý¼ÿørͱ7Ul¼LÍ&2ƒƒ¼FHD#-1'I-¿ÃØ1ÐTùE}€Û{Åkøÿ}µ'~¯Ù[;{ì}—™Éõè?=´IºG\�«£^l¸…± \…Ý­�C8…†¤E̺I¹˜½µm?>aÇëëà9ªå+Ø‚ä V'µ¬õKJ­æšÙ£oå6õÐõkµ6ì[Ž MÝ�®þçïm#IN:Ô½­„[·„N =þ’Äèˆ[Š‹Ñµ¹8`NÉhŠmëKo q¿¤·îÅopv¦7aÊ…Ç9Ïc.qN‰WI°0_œ^!Ô0x�á˜%Gtâ‹ÀÙIáçxaÂ"Ò1øÎëA(ɑץ Eñ±)— T:<{“‹ªÞëFÆÎÇZ,êhýûñënŽŸ3, Nâ²èëíÖà,©èv ‰@„JV2$A 5Få1”º”ò-¸@öq„©]>à_öùÿëìó^8åiùfƒ(Y 鯾Ü��Èî U4è¶ãë.MEÜ�ºÕ1ȯ�N×ÉM–¥«ƒÌ–ô Wo~×A#2yÍòßÁmìjÅ{ÐXé î§‹ÚÒk¸8Ã÷9úév*XjÄêiÞȧÐìâèòøo?{ºðŸ�f+'¤Ý‹p|ñN Šù /‘*´ƒ=R_ëOø°b?©ý Oñ%´“á“›µ{ iÆ\λé7ÛÌgð“}ÐÌ)wÛd}Ÿh7$_äÙ@›}íP¬ÎÞZÇíÊ!|â°Ûíʵ¸³}ë@Ýýt[ç7Üö¯ðOßàÿH‹^f3Ê%ÎJ;š¦]¹Gµf%5éoîÌhV5ÝÜ¥±Öî)Ž��5§Æ�z5v¿Õ£áìàë¼?³‡àäÉÞŒ«¾†NåuS�ø«znøí ¤³{òdÿÅÚ¨ºTâ Üm.‡ ,JëÝ0'ûÑø�r6œv–¦öÍi¨¾ÙM¢¡ØE¦´¡uÖïë.ÈŠ/d�aw¸EÖ]"ní·Õ´î5¨•ÇÄ9_8úãöó¾ý ;V‚A $ó?ÒÈ$sO*î›F Ä0â1"Êm?7Ù]zçî›#…U0#A¥Gkh?¨ïz?ís¯\ mñݽŸcE�1_Š’o„fÞ/A•N¶1ËK#T=™_\¿j¯U3MŒ*Ô³ÎB¸èi‚¶T´ó€PI²— ÛYeÂé›N£‘)M¿XÁ·‚¯lÓ‹îå�s/ëñ$¼Žq@èD!Ö쉀E™:ÛÔÛ[÷®(†ÔÂ.1‚£Âó3ϰG– [ß¡ÝDZ»aˆ É»xNG›„ÑÆpüà.öÜd•6)aK%™þ£`óÈ¿ó»ªX¯)©ØDÀ³o¯^zˆ…@UÈV‚øNE šhHþmÇœTªïq‹DR^JT´îô®ÁA²±PZ·³nR [3EÞ ¢u'ß ܄ᴠFçƒy‚l4o�ÏnßC>+ù¦ dÜ”@•Æ z lÇ÷‰îà�ž¥]`-ŽàS•Ço¼æÐ-ÿäœjVÝÑšú[_¹*CCe¥þܺ/S�šÓ eÞ$Jvé¡�P?P•î„=ÙãêþÌ Hö>øéüâà Ùn•çžìÜwï�÷��z:Gg9‡�³ÇH. Îg­ÏI“�4× ŸV²|Ws‹ÆÙ´Çb@åZhõçµÏ®º1y@m;¡mJ‹ ÚF¶î#7‰$^LŸw™ªs¹QÔ©Óñ5â¬7»f·i¬q�nÒÍ{Á=´:ÉãbÞÊÖ>0C)àžšÂ-štÜDÂLØXкÝGÂ>V;vî)2�¢ÌÃé´&"'¿‘º0Â.(³¹•Ñü­…=ø‹Íl “ðp'‹9ô2?WÙµðÈbÌÔªæí¬ä LxeS�þo(g .ËKþÕw—äõž¿ ÂÏ:×ZJ\L²¤Z¤{Z¦Ô…œš‰F KaE•”‡^@Žƒƒ³àò`ôþäjgç*8:øp~¶OlQ7=Ær§>èVyà-¬<ƒEê3v·a�—9zík—GXÖ�Ê®×@µSžEL–¬I’UQ^P5æ4Ê»äŠ�­bãÌYåp‡C0Ùk“[í¥\»Ê·$�F¶ûg;x¥å_6Ô|î‰BR,(è.ŽfеFÀ>«ŠØ~ìH,$/VœÖ;^šåbÄ.Þ°ë:gñü¢­cL?FƒÛø"ïŸDë H‡mláƒ@�ÿª‹d6&l[a iÂR‰ìªET×t3KéÙåÊšFbuö¸T–�­¬Ü6w>ì‰\yé§’+¥8“þâùs·æ§yò4Ë  ­:c S�Ü �~ꆗÜÏF;"oµ¬—\9ˆÏDG�ªˆó¬zdø½.Ôä:\­.Õ«m]SõnÔ¸±G]ß¾vZ4)æŠRE⺆JÇ"–zí ]7y‡: n_ßuvÝ2\\OËå5ƒvÔƒ¯ñß�•Ä„ùëd2;ŸEÇi^] xP´+7Ëëx�.Òòþš}�¹w™¤uØX×6ùî"8–>ê‚nð×�ô¬0#‡Üº(àƒü{C×6F,Р‘µ…lÅXšëP›rúI%Nk/1²º>‚ƒ{*-ÏGÁÃõ^Ò캀{Úi¾þÀŒF£ƒ7ÁÞÅûAL@‘d¼á ØÁ*m$Þ –òï§ï·~úpÚ²|†E_nuIùŠ÷gjxP„Åc9· —à'�þÖ–¾QšÄTøíþZBé®—aêv ó‹¨Ä÷‹‹ú•Tù–ÓfS‡T÷°}ÕA\¬ äsq‡¡×Q¨ž@G¢½Ãºãwì|DR�³ëÉôÝRaÊX ¦SrgMI§Ù;ü{p|>à8–\÷ {, Õ/¯“ ÖË5M'•FIPwjìc?Âg¨ÀŽ–ß)Ä'ÉÊd—bJ—îšOé�ØÙ;ó M6„Þ«¨!_µÇ<?I¤k/¬m°Éñýuè¯ù ¥^. …©­;#‰w+±ËðC‚烷¯�oó/N’3)‚Ñ)p7í´ødŒ�}X›œ nëM Ùø"óBÇçžaLOJIWï}|wüõ¯Ò¡ž3gÿ*!‹£DôMŧ_ð4‡ÏV?/ 'Ë54rßqÆ�^¢OŒ"ìF×ø@ÔÁD™¢•æ8ðYˆ¹¦ WK¾}«GÕ”Á«¦vk+Â�_þ"J\VÄbÌ%ó›õµî¡Â$Ã�ÖÇžÊó,Xâ�'“-×sÑ¡`Ä­áìÐ 7Ér„{æ ƒïŒ Ð†A«/Q6! `|Ÿø,>–øy§•Š[‘ØÈÏh•8q’óQû� ™%‚¦"YsŠM_ɯlõm¤(ÁõžUäp3ñùpy%×BP@0s2†:^4:P+ËX`/ }C»„��¸¥AD2¨r}婯kDUËM݃OöÈ[èÔÉ~Ê’l±à@qs Õñgû\}Ûí'D”x�”úÜ!Û9]g&ÆFÇ Ã³r‰ãZµN ÿAHj®J_÷†xÆŽ#"ª¤xÁmÐ~ð‚Ù~̦SW/ú1úu¸ã· ½!Eæ[Ky™"]Õ�®† ‚$+šÅie�ð¸ÇdÄÜ; @¦¢X¨×àÑú‰sSäþhpÒlFHbÒDÀ áHÁ “ ?í~¤°Ì _]Îu€ ÄìjÐ@¦ÐÞ@øÔ™Çи³\H‰bö½¶¢q±YÌgcX±$pöÛ*��FÊ÷š ~2Åé 7AöÃ~»‡…h÷S‚G@§‡ec4-Ñ�ó ÌÅ)êV3´eùW]ïá-êjsÕ •å¦õ¸®ùÃÜ—{>?ÕTã2›�'hþ0ŽÙW2g6ªâ-)ÙŽîö>0#��ßUÓqÂΖÍáWª<�ï�}{JqK©R!ïb別¿Z­idÄä“Öã í_+O[/Ħ�ž¨WûY�sà|k·¦dŠ3^ N@€ò®¶Üá†8ev-5ä{�`ÀݨÔWãØ,´yÀažË¯ý7~c‡ïôÓ~ùâQ �àú/v=„°FérRöþ]?l{˜úŸÿ³—‘±§÷—¿ ‚ˆÓywX öG¼4ù÷mõ믷¨ÿ;éçyd“Pšô@(PsÂ�î=€˜ήèt€ÿb cüï]¦ø‡ˆÄ0ü ?ð¿!¹Jg½a±Lâòyïº÷Ât8º!ÖC6„.‡Ðݺ‚ÿÂÿnó!´:›�¢Mê!ƒ6ÐZ@x^o¼MÕ†aÌŸ0€1�¯§H^øã …%�“ë…Š¯?™Â¿’ø:¬fULô¥%pÀ±Ê¯³y™áSØDúC¤&ôƒã[2ø ~ìzÁ_ÑßÀOà°sì»ÄÞeXÚrôÿõ¾Sß=õ—¿üE}ùò'þ�úë_^¿ü[hag1öæc,YÀ·_õïU˜óÏoûdêBÉëäj»÷îÝöbÑëŸ\�äçí¢€_·{ûûƒÓÓÁÂ?ð+þœÂ?�þCó/�î†DðO°þOABJ :綧̈ #¡‚+Èò ÷o!ÁàÙîÃÆ‘jH`$(BÒ_üWôÿƒ¼Ú‡1÷þ-2áý~Œ.ÿþÍ =£Ÿ#þ;’aþ�ÝýýSé0$[ðé)÷2ƒéßóÓOxqõïïéá'ÿw9fåPÐ�²¦Ôó¼g?éÿá%¢_Ÿ—ÏÿüÃÛï_¼øõ×ÿýâßÿŸ­­ÿY•OÔ)p`çï/OþRä“ëøÕŸÒë4áÿ–ŸË¡šþðýë?½ùã.?ÃE¸üÿPKÒV1]TóødûÇMJimunify-security/assets/ui-app/assets/static/nav-root/3rdpartylicenses.txtUT ëÆ«jëÆ«jux è‡í�}sÛ6ÒÀÿǧ@3Ïœœ<¢ì$m¯ç¼*2m3•%�$'×éd| IŒ)‚Ç;º4ßývAJ"%Ù¦d§mêõ´±I‹·Ý ¾ˆ�ôvÃÄ�݉d'VÿçM×–~$k¨`º£qÌwì‡üÉÞãï� ”‘ôcÞ“Å®ðù‰ý³ôÿëJ.|‡«x,Cn+?ÝA«0b¬#ÉE®ò¹qx.S> …K§Ê‡¡”\ ¹=áHVy¬@Д2Œ ‚ÄÂõ]ÄH ¦2ƒ˜H ãK¦©Š(R¶+@w”�L ƒ"Æô†®'#¾™bzYŒu"Žw}�&ùì¿tã±Jb…„Ø(£ �l/q0³Çž;q³0º®¢…&”óYåå¸Cü-u±‚dà¹Ñ¸Ê7JënFxS×u˱«BIÏC .ä[—u‘;RaVhœU‘N÷r¬&Å’@ “Ї$¥£‹« ÊtŠ¥£ >Tž§.¡hØdŽ‹%ŠöëÃ#1PR—%Õ_Å�Õ4 ØÁ¢U³GÑX@Þ’¥éBõŠ\qBL>Š¡á]¨û@…:½åbÖ ýc“÷Ú‡ý÷õ®É­ïtÛï¬ó€?¨÷àúA•¿·úÇíÓ>‡Ýz«ÿ oòzëþ³Õ:¨2ó_�®Ùëñv—['�¦eT¹Õj4O¬ÖñZmPs ”„öÛÌDY&Ä;d'f·q —õ7VÓêÿRå‡V¿…2Ah�wêݾÕ8mÖ»¼sÚí´{&$ÀZí–Õ:ìB*æ‰Ùê× UHŠ›ïà‚÷ŽëͦNª~ ¹ïêü5Ú�_ºÖÑqŸ·›&Ü|c²¦UÓ4Ó¤ P�fÝ:©òƒúIýÈÔ±Ú ¥Ë1X–»÷Ǧ¾éÕá¿Fßj·ÔI£Ýêwá² ¥ìöçQß[=³Êë]«‡rØmƒx¬NˆÑÖB ^ËL¥`UóB‹@¼>홋¼˜õ&Èêaä|`hMöÚ}2b0øÈݵU˜²†½F”„Sľðv¡ºŒdh$±ëE7óèÉžÿ|Ï_Û*hÕÂX,ß®qg U˜ÈqˆÏ9Ķâ¿‚Clñ›8Änæ/Ï!v‡øvbEñ¯Æ!¾Ä!ö{sˆ/8Ķä_æ+Ã!^ŽCìñrb7pˆoÄ!v‡øVb¥¸Ùþ(ñDX‚/„B ¡…ÐR-™Sb(õr]ˆ/ÄâËF|™��.‚ Áå.à"ÂPL�A2ÊÐLcixÒÅ㤧€“(@�}Û»[’°mgz×’„m6Ó{=IX©™Þ2$a×Ïô–$ »~¦—HB$ù½Hr!\O ¹Ùäf“›}¯ÝlGÊÀ�ÿIÀànÈ“*þûTÿ Cv1Í9-r�@üùD¸ÞëT‹ìóš/ã—pï¼ "ÞU×Gp<òÓž6®Ùjò’ D"Ýs ]_0¤à¢(МxZjÍIˆ$D’e’dÁÕÆˆT²Jø\<,¥¡ý›(”9Pر Ÿ€ò‡¥Ð|КNâ;2DžÄªÔ{L³qRïÙ¡ļ7v'wõ&‚òM"„|’û‡�ŸDFFÑ-)3¶¡Äâq¤È†Šd>„�-ð1’±áÆ2±*uÖA„ B!ˆ ¢´ÚÀ� y"‚AdCˆ UhHa�K¾›ÉÖžð®˜ú ×5@ �{ ÐÄô„®Åf÷^<%^/è%î}äÅòKÜ/"c,.¤áãÊUš!”�ëA(ÙÌõIçO¥Ùc9s'Øøü3¯Ã£¸+£ô@ˆXTyWþ'ëëˆPL"þøª]©í‚²Ù•g8�òIG¶=°ú‡ê‹f~"´K xv&Cþ‚ïd&ö³œîs´=ô�¿xÉ}yYLlç×Ê,ZåC•†‹sŒ³ˆÿåá³|"‰ŸOf½Ðç+E|î'ž÷ò%¤¶ˆ_ùP”|¦�–u¥Xˆ�…YŽâï$º6jFGý2¯Qé'Þ •“ ÒÚt'‰«¿q{Õâ­Ž§Sy\¸ýôÇ=¸÷¤º,6k§þ4�kDWæ•õ‰T 7*ËIöCÊ"ØìÖJÀb˜ŠÎæî£GŒ?â§QJhP‘È Xuí1¼d䦻¦»�“Ýó „}.Fzo¢�„!´°7ÚAµzžtj o·X«Yø5E_.s–ËYö Š"ˆA:·NN[Öá/g�zãg`ÁþLð3–>ÒÖ³œ¾êJáàñx-è·AàgÎwwy2ë´~Íš¹6Ïʇ}^±–Za5Ö~!äÿ_²Ÿ —¬òphýëržöâÐ�zö¡¼på%và Z(¨í§˜’táŸpG7òÇß Ïu2U²ü7Pv �òbV­Î̾SƒÈìö £î4ð7Ž6˜†¯&‚œE-< ¥ã†Ð]ž%¡÷jmˆÔ�öù@)O ?½ ^@xf«Ä�÷uPc2�aî±v!ö ÷Ýà,Ëò«%�ø"�ò«y):é�ô)(šjoäÕL`!�Žœ¨…ÄÂ#é¹#”äl¨Â³¬éÎÛãõá“ü6Gb}œA£®­’\˜•稙]è]Ó–ëÛø7hcÐ1Ð_˪‰‡J�ßé+hú*x!…ˆá=¥Î¹€zŽB{WDSß¶=$ì:r(}[Bòy7 ì³ A?ã8žÔޏ›˜¦ãÌÚ¥ÐäCá�ß¶¢'i“W鷺6m¢/³zšU�î$ö]E¦_M¬ �ôoèÏq £›† öíyžåèFÝÔ½fy.°<}Þ,\Èý ^Ḙ]Åõ’ÑW;�<Ä7ÉC®NÒŽ-e@£Ù*|¹×�£²Z‡–Ïm¥U˜b Ç‘0ÜÃÂP$~QmN𘠭ëÔ 5 ÏmKöç0éwAA¥ŸrHfŸGüÁišßúˆ ð´À‰‹ »†»¿W¶,°×«ò´®¿(›¯5K'*2+ãš«è¼J£òPÄ‹f¼£êr‡ie�EÄãP%œ¼ÑG‚Ì´ Üð…K9”9”�:Šù²ûå»jd}rVç̺ üiëI¥ô)îÈßAϾÊ1ÙÈðf-ß =¤xï·ß4‡ ‘‚yg¡/G2Î:��eñ¹^B_1ú5ôC*á Ë×¥õ ÜŽ>!+«˜yßðpÑ éˆj¢. �5c[âÂi?¼¡&àlçùK½ €cô²–Õ^êÚÊdðÉRÀ|~rÀhv´ÜZú%þÝ‹iüìF¾¡R£ˆ“ÐÏLwþäËü/TßOêL ùµðe!˜*æüWxúA'™Ïž¾»åê´‹é/þÊBƒ^ËuíšmuJù.� ÙÉ'9‹\P¡Wz«¢3×gçÌß(ýù²lÊÿíoi ¼§¡ë+çläÂ2“ÃN=@f<.oŠ6› ýó‰h®OÙç@—cÐT~jáE8£<6ݼ4’á<)ÐÙÚu®—G.ô¢ '#>& £ 'èÉc4ˆ$à"}a0“°[´ªC¨HéìäMh¹>—]IÝ`«å„JýN×jJÏu-}Hæ]›àw©œÌZOƒv~¦î)¯Ï}&ìêt. 7P‡ž<…®ïZñZøÂMÔ•óx}–›è…šŸl)ÌóͲ¾{‘vé3uÍ=z™»£½Ûb’¡{��^˹ä"è¾ÁÕØYjØe6h/sµ¡÷¯Ȫ¡=»Q^ýÝ•â¾[5Qè‰Vo¾Xo·õwk;ÚW«¬Yn5γKCs‘xñjâqý2Îòš¸Ñaçß§>öÔþÜéø¿ÏK•ÿåß—¹ÿ'B™^êŒBú‘kÓqøôª�^õÑ«¾M_õÅ¥7~ÓÉ„Âá#�”9úþ ‘ƒÈAä r,Èã}cãn?¦EŠd €ÌΚ1éó¨Êñ„¾(J$!’I$‰¦“�òʸ"?’+B!€@ЉUº$£Ècò@ È êÒ¿‰E¿C+ÚWø q„8Bù69ââÒn_xF䩘¦U !„BȆ‰ °mm–e¿+’²äëž�!ÙݱÏL¹3–€Pv7,Y|ž˜Ý‚%ë>Ö%[²döybv,É}ž˜Ý‚%k>O̶gIá ­ì¶,á+, ÅÔ$á,sï¼�{ŸŽ¤?š&l�¦IÈ7ùKñ„|“[ù&é’‘2ß�¦¡ áƒðAø(â#Ý«•�ï½Ñø†V¿P(”ü‘›@AŸÉ@,!–Kˆ%·`‰ƒgn’kB8!œNn�“‰J½¦9V�ƒÀ1›$IO3$G„xBI†&rdü–QB>Ii”°%”¤$©�‘º#ÿOä–K¾-–üeÜbÉÖã›@�š íešz£Ž¦:É:f R×R‹ÕÍ|!ðü¬ÙÜÜÊÜþO¼1A=Ú•c þÜVÐ7‰Ÿþþz4®w—çßz|}ʼn94¾þ–Æ×åzµ?l|Í6>1gm¯Æ¶>1§@¶ý‰99b°ÛŸ˜s9ví±1PŸ¤c!ÚŽ{qãòjzsH29Èä ä%6èšÔ&EŸV!‚Aˆ ›$wJ}$’€B@! l”ÿPKÒV1]ˆ„²5`�н^imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_tr_i18n_txt.f491631103c32956.jsUT ëÆ«jëÆ«jux è‡Ô\k{Û6²þ+X}ØØÅMÚÓôÔ}rö‘dY¶u±jÊÎ:—§ ‰�„’t@R åÍ?3HKÎPvzú¥[—™wÞ™¤"ž¿o|ÓŸE©V+Å×/ŒÖYãã›}�ÿùÏû�‡G«<]¼ßHÍì7ùê¿Õo™ñ??ƒLóî§ÿëÇãÕMsøæîÌÁëŸ~þñð—57,{3ÏÕ,“Zaûá�Ynÿlèl)LãøÕ›7 >(Ñ8ö_}iÊ�‡š¦™5åá�œÜ}9Zòôò“½&+Žf<޲¦:<ô=gïÕÇ_Äßÿ~ ^¼nü��~äá/^„3 rÿÌÞó�ÇÙ‘ôK“?ÓŽ÷7Sv«~��2ñÑŒ•-�þÄ”øÄºÆhsÐèpõ,c|µŠ ¦çóTdÇ�çæyƒešq³È¡2öïÆsñ¼ñoöIfK¦´z¡à{#a lÍã\°Æó‹àrt”fFª…œ0ÔóÆQ£š¸zÍI�ÖhF€fþ)@%ÇÂ/ôu$>¯´ÉÒ7wÜv“ßñ0œèó…ÒF dšß�Pö߸ÕQÊ‹„³D*•`"ŠXk ®òñ“êh¦s•5_‚ ï^7M0õqãÃçðõBÀœSõñË!jL$rc;E,2AM¦ÏãùËW?¼š¹LÇÜðˆ¥2†ç†«ì4�ãÖl&Ò”ê`Â0�ħœË„ÝXÜ-Œ&×Ñè™|źE,’ ’‰^‹‰nÇà1ôü g¨IQ–q7Œ›jõð ŠzöÃçÙON4â&ñÝX}×tôkÎqÁ Q7lä¯ëàíRÒjn‹‚oê×áŒGv�æžøb9*%§°ç*…Ñc©H'os§Ì�Vù„â Ù[+ÄÁ§À€€»�ƒÃ݉µ0Å /(ù3ð‡Bèt. MÊm ‘b†„4׹ɖ¤z­FCÛ× ÿGi#CzÜNžp\3§ ´ò­5ó†ôá~Þ‰V5ÃŒù†¤µJj¢Ok'UI?CâŸ8K=ïòÙr¨½rðIV œäU°Ì³PRäÚ�çñ÷ö,©ÇÙÙwr×SS¢½Ùw4õ|?Þ]ÊáÁ=)U•Š(‹¤-ìíeäÑ�æ{�N¿”†îès8CÞÁK¶ÌMZ×£0n�"™¢³f2ÌC´-Ø'¤·’X±Í,Óœ\ñ¯I×òí«Užky%Ó°?˜:”À;üjgàÎ4R㽓°v ¹¨ÓYP$èë“U­ &Üë—'SŽ$’/ÌÚfF+I.«åšXÅÝ>³Xç!ÐYþ™¶°µö±ß´úmq\Ò”iç)¤‰DÆ I’íé9‡µ˜X/äŒ\Gg[àáÃ+®gcly J#fIzÿ‰mnaóƒW±HÉ0Ɔ]a<0 ÉžM@•‚ôü¹•T€Î¶XÂæ'+A?Ê�ÌÏs@œT (&ÅJ4ï`¾9°Ã1¢Õ=~îÛw`òHF� mC÷�xc÷³³{ àÜ\ZzdÄ~&¾q ï0e媀9¤xV[ø |ï’±ý"Ó_0’Æz‰pŒ…Œ­_ÎW�Ÿ†:„¬èn¦¬¹Æ�¡‹¥ŽC:QmY¦sÉvÌ!ÙîÙŒHBn2ŸI[œ�¿kÅPí9gÝþ ‹Eëê‘ÁÎÇlá.™Ñ™ÐƒŽ]}) ¬<~§O]×­6yâG“«t¤éüþ|ü ëÅÖ�èCþV ;ÎÁ°Ù9?¹rY:"¤ä�HE’­¥±lÇb¬—Ž“�üËWŠGn�LÙÕöðŠC7$VÌM½l[·Ž–'ÈíÀrÛü˜ŠX@�PÐ[r(/ÀêMïyÛùåQÆSÿÁ柉Ÿ³�ª„ZX´3Aþ|ä§öØê¾k´5‚bFæ“Îó�l¼>#><\=òùTçÙ¹�DEô±‚b7…oÁ«ÊEqR�`æ:U�Gï]ËŒ�Žï]ˆ$õëÛÞõ e ütfä ›)¹®Su"X¢ÃbòBà`™¯.¥‚Jdÿ žÐZÖöá6<«ü –éMýèjabk×à!Xœ}×®„ËÂxŤ'¨S•n·£ÖÇ­°»)£ÂJE˜ÒŒi:΂5ãÓXL��€7í>ÐcÄÈêÀ[ ï} ňôDôíi¦Ì5g«s¦ó\ð€,ÑI^æÙ~QZQp =�‚U�‚ä¾N­¨ëÔ9©¿E<û …bÎó8kcÀ’jq|§W¾ø„¼ŠÎ£Ú;ŒE£ÖcÖ–ßX²Ü'”z%HwúÖ^·!X­–êø†›´¬³�³ïý()ÇG•†:\θ_¸\µÂP�ú… ‰A^®žûl �LõYƒc–‰T J¯6•†ù%’ÀÏ¥‡Ø¨tb·;ެ™Ï³B~ËŒpçÉíG–Ãü© ÆîŸ¼d˜‡,—ŒIRÇeÝPÒ³bß0 ¶µV`â‘?}bv[bƒˆtÓÃQë°ñäIíÛ·³{ïՌ˜Ó›ú¯múð´ú3Uû§èòQ|?FÍ[ˆÜ£Õóñqµ ¿;ÜnOáÿ§Šo:î�LIæïUþacáñÝ\Æ�Ú¶‹s2É:_=+„ß— e�°»’KÁ!Û³tFÆ€Ç2ZU“ÍB–ë­÷‡2I›lO´Ž3I®ç‹û ¤ÊmQ%è7>ÑÀM@ÍÃaÍ–ñ _r6盘³Qé ™­Ð~÷Hî×ÃpÌ0„g†Ï«8­2ØÃ­°ŠV6 ý†\ëj™}Õ[•š<%aÚÍ^ÕfAmØi?I[ ÚÓ �‰Ø_FU‚ùde|#4þzÚx24°–„fhPÀ]&xZSbç¶¶�ð ÔüõÈKF¬àÑ}¢²”›DdX6†ÂÕÍÊLq|×:!k jƒ»r­nÍ»—X¸EÃ@-ÃW¬›Àw2òïˆ[§d¯óW #ŽÅF«GœÉEÎÙZ€‚Ì4·¯Zç´è"—±Ý;l H£ø:Ïâ9Wh…v›ËÐM¨ñ…c›„c›«EÌC9£a)bëèÖm‚íÜ@%ÊÙ)O5 ‘ lçñÜÉâ}FOiiDaÛItÂ@¹ËEÛô\•ED›„nÀ¥Ê^€^²¥µÅgþ3•Ê“8n “8_i�Èv˜Œ°“!1ÞÖ±\[´´I�·µâÒˆ& `Z¬ è‚r6O›è¦·@j“Ðo±‘‡mú Fž ç¡ ÷ö2÷v �ÜÖYºæÊŽp[ŸŠ^å©› dÜØ`^Û!AÜçx˜›;ä‹=Ó){ßЋZ|d­pg{¨CBº¯�W°•„é¥É8kÍ-¥wòd™Y}£<‰XÛÛCI·vZ/Óµ ‰Æ®™Äï)ÔånØx ÅÊöièè«U“¸¶ ߉ä>2ÌÑÞÉøVÐ:N‡Dr_Ç:™Jkë ɾô²+G’?ûè-ª;7äzùJ౩Ъ�„e?76ÙàÖÆ$Év–H1 OQu÷¤ß!QÜwíS¯`¤Ê eÔ�ˆìúOH’lÅ W®�$¦Ž=!‚ͤ­O ‚'ñl¤O0e‘Èö'¤‰|û´ž�«éˆ /쫜.ézÝh �ö“‹í¦™v‹í’~3ôêt?l?$hºFfÖYº$‹y§ZyÅvI"ëf…^ÙöÓ�SmvOIÛœÊßQW§¤eNya=ñ”´ÒPFF+±) B�åý‰XÇ"ó Ü)iºSn´øªRc§†«WÒ#)µÇ§ö8M�NvòË>¤2qµÛì‘|Ú3“t�DBÏî³ÏÊ Þ#i×NÚ�´a=©\2ß#¡ÓË…Q©À˜Ü#™¶ç¢R�4vGૹ¬T£]ɘ=cOpù<¬GÚ²ÇKÊ둜‰+ÁÆ1½H¬â|…dðGË´ÙÒiðÛ\Ý'÷=ÒM¬ ”(XOh³�6˯¾ `….*=X�t'˜w&0u@ ’ÆA"ÁF’ q5/Ú2MyŽ2$éöòÂÙðŒt¸3º #/J�Љ²õ©´3O< áRugäjϸ´4yF®tÅl•¯ž“þÑ…ŠÎº;J�âHÌØÇ(TÀ�é ·»ûç4µ@%³ÒÎiåàne9g’nÜ`jù†�aêy ‘MåiÎÚèñÂòœÄí¹áèVç¤âýbÝà{8}S©ƒ4‹Ê|©uAêõ‹¤‰ R[�ÿºdä‚T™ßÿÅÁx@ÍgÜfE·‘P©û‚ôó ¾ò¡°ON³/|+�`z .<;–†ë“ÔIÜT£+»IìK#§Ü‚ºOg‚:ÑÆ…}?¶Fb}™e)ÉH¬¥&WßÏ7À1}mƒx¿&1„ ¸›”ôkr»µ(pŸºO§j¢Hœl“XŸÌoú|ãR—2R¸ÕÁ€ ”›©*÷8™!9- ò™DS HS ä2ÊÁ,㶨�ŒÉ\Y´H%äT¸­‰éU‘ê sâéO™­1‰z`‡ÉzvñQ*’in�ƒd²>e 8 Í3¶­CRû§–¼‡¤j‡PG¸–!ɸC‡zýp)CÚù¸�äÅù1 ‘Ù‰3å�·—4¤3ZègÁÓÈVÔCÒ;¡‡t äñ¢CÒæÎs†<¡×ã�Œ Cn«º!€¶¡j`ïÛ¹IøG”#}z¨�t\:Å�$E xVó{œ–)ñ4ëÃU’ÁÂiÕV-CØC %€Ïï‡$´ñ,v*ŒÁ}Í! oÐQf; £8Qäp$”áñP®Ý´!IM Á×Ö dÉ9QêbÍ�ôxܧC’®†zƒ©&jiDºËˆ'Þ�F¤ËÜ eïµTX‘î0’¿ÛEŽH?i‰vsŒé ¶#7É|#Іá‹ÜJ�°>Óq™ŒH(ÂlÖölJ�p‰•½�3"�5â¹ÁtDbb$sŒX#ÒV›ïD9¿KÒõ®“Ä:Ò˜4Ø<ÄÞz“† ;·ñãÕÒ\Öæ—÷&“&óUΙ�º¯KÆ$K�BÖ·’Ê¡}LRÓø>vŽIãÁ¤<ÎÆ¤n£Ž%x­Àb(ÿ7±-LÇ$?�e6ãÒ|ÝǤiñ¸‰Æ­&¤ª1I¸ÊÔñù˜¤ ìCDrƒ¤Ë�a"ÖF¤G�¼1ýüµfo3³¡âŠ´ÿûç\I«’+ÿWºÜOº"WøÌqZšêŠz¹A{E.ò*÷ÈEyJ|U �éR€»ƒú+ëtæ$ ¾"v È0ä¡qOQ•V �>Hµ·°ƒ�Îà€z†¯Q­H2 b½öI|@nkO¹ ê�¢yaÏýt²Ýñ‡Ûtýº=ˆ³�ÐÖ¡ƒgS6&+ô†€Né… Ë•‰µ°f³Œ€ô·æ©lÍìߨlFº\¶úA³‰Ný¨¬±�ßB5“+»<28wcð¸ÜŽ Èø¸ï4ÙáI— ¬¶±™$}0âFúí  ÜIn"[u¸Ä7Ð>!aloÛØ>Ÿ°3V걬Âý¦á„÷DÛØ^”k!!;á3Y‘ü„ÄéDGÂQà„ç‰Ï)s6‘‰5΄ÄçÄîF[/„'$H'¹²9Ú„„èDƒ+c+‰P?†³ï„Dß0,Cn�t¢§Ü)�„Ü$Ç»óØL’&èvíÖAiÂÕÆ3÷5ɪב�b擆½^xR¾&õÙ:j�1û2¥¼U±“� y½ïõ8Ûݾ߮Æë�פ+]›Ü¿ëš—%áëÍTT»!õpÃñõ¾mßSbßà�;ø‰{šv/O¤?Xß #n€õ6�w *oHMïl„ÝHó»ü*†ÝÐg$œ j!á}#EæHô† Ô7\åoéÄ;@ë¿è²S§~ ù–ÔÙ­H,…ÞÖÔY…ÆËX_šïè·%�¹W¬(GBø]µ±þŽô°w2™òéÚž¨�bd9Õ]ñJÖZ¦ÚT×±öÞ¨º.¹5ý#‡�F:ãï ¾¢$ÿÁ\ŸPq'Õ1Òò2¶ãCa/3Éòt)ÄwÝÿÅthw¸ïéáZ7÷÷1Bߟ›Ä{*P3â~˜b©ˆð¾ »�‘ –+¶€ 1ˆ›à i>�Ô�¤ €†gðoëŒ!t§ 0ž:{pï_Fî”*²þ2Z9ï¼`'\mÓUR~´'¨–ÜÞ¿�sÑIºYõ‹Í&Vy2ærÞµ�|iâ�å°îéËC£»3—Ø?û@º‰L ‡ã꺠“žèYq\Þ#lf:£ÿ„ÂD¯bôÿ/Í%_‹‘øt¾oš¶�Ón®;Gæ6lmg¿È;>ÍSaè£ÆAŽu¤wŒuçx÷Ëßm¬ý[#x>Q®bÿ§:ü_f™-?ÚžóÀçãíóÍP*%œ|•@Ú[‚ÊŸÍ‹âê6ý®KЫyx¹ò;»œ­ÇÞÊÿ”Gís—q¥Àýêëº[?!¤Êôm_„%kÅ÷Xnšœv<Ä€Éx*ÐYMžZíY”ó¹€Ð—V~ßAìSn¢ò {Zö㉠å‹zH±ù–¤÷à0Ä;Ö˜y¢ªJ÷ Iùµk/&†2Åî­YŸÚÅ•”%ÖFPׂØÔÓ¡}•ätZoº¯5kɯ†íYb÷&XuÀ¾<¨Ig/³8²-ˆÓÇé'Pn-Ëiì|{ª{¹ÌÏÒ'üu^M%×AÎM÷TB¶¸÷Y—ûü(¬Ñd _­D¸Z—AÐí| ¼G™ŠÙ³ÂYØÞA¨$÷צy V@™ßr£ðÊ1B;gÑxR°Ô /³oüa€÷îcbÉ&OÚû4‰¾þȉd èþ¹\í#éÈÿµ÷æÝq#ÇžèÿïSÀ5g†Òt‘Z»móŽíW\$qHм,ªûÈGïÔA@\XÊX(©þî/#"W 3�¢Ô¶ïŒûúvK$�È%2öøÅñÏÇ×ãàèøç«ãàè„6ÿ$88¹šœŽ8ìÑ礊=Û3YU(Ô£xLû$JL¿q_´¼íZåë8eøÑ€!©Ä'mn¨^qv÷yðÑ™6€�ƒ*a&rŸä�¬Œä£¬}ÂÁ Š BiukC*- ¯„äò°»°\8Ä/I½D°¦)@-¹D¨¦•·ÄØu0ä+¹å·xKã›fÚ󙼘ržäa5kJA  (%¹ðî1B ª"LQ¥ÑïÞFÙ’â³'Œ:âû§²ðìÉè+ >Õh@æÞ#QÞ„˜ …Wø˜ó–I-USô&y4aã€Æ7gfX‘ fñP;˜Î[(ßX¡üægÏÍ v‘í&Rû^pÐŒƒ‚ãÜÆÁž‡í&‡fÓá‘«p1c$Õ+¹€ÿpBÀºz|ŠZö!ÐE²YÍ z=)¹ècŸTÒ>�q£ÒEÁ­Xã¿÷P-Ï×2üZÔ~ÀR™ÉÌÔ¦&Ç‘2‹ƒdÝÀ¬ºìò+�¼Ì¹”ãUË9üëk~ˆ4Þ·w3'±D{^6u|S”‹xÖ5»ÿUoÙÍáùæ:·û#. èb+Ýçþ9ž³[6—8eì�yȘéÝS檶ݩ–|‡•ÔÓxÑÀedC°Ÿ Õ+�‘ß)§Ýx:軾­û…-åZ_ yJCN=C2á®kf8Î8„KïV»È’ õuR|åÚ2nQºò_Š×˜kYµ˜,³úâ5P$Þ™)³õªåtQÆq. ¡;Ôì Fêg·¼{ÁWãÅe¸Òj�Bq Òeê–§I¥¾ó2>+“Ú[fåy Ì©<‰£[ÊP’ßá�W?=Š:¸¦í?Ž’EÂì—û[¦¥&ycet�tÖyrr«ö:ŸêûŸvoÛ€åm  bè¯!ò¬¦§TâUYÞ߇Y©¿ (Òeœé6aSƒùrŒÝ¼0Áãà`XëÁ¸ Ȫn­Ð„© âWö û 3Yã,Væõª�ð:ûÚHá*ʪ¼®^µ²d¼ f?B&ÍÔwÌ»çsSÙÛéá ‰ ‘^‚2Ž�ÁD^zÓ^?ÀG}Å_…òU~éˆü¼Wž©˜Rj0½Q2ò¢)6 oA Øul‚.k”CE‚�ï2îW°ñ’Ç”¸RbÙ0â(ÙŠE}7çb7!x>¯‹71ãñvG?B… Ý# ùγ Â'„=!³‡7ŒI�o8}:|ìNŠ9,ã°f&²UÅ®`(Õá—–qj}A«dGæð›((KvÕ FðVïæ;ñKÔÈ߯…ÝÛva’÷g1OP“…\s¦Ü‚.ÏÌÒM±âòfVÜÌB®¥¾;غr¨§ÞÅHŒÆõۃʡ/7¿Bº~có¤êì?8º˜JÙ¢.A÷rƒ¸Ÿ€ÃŒ$V1ªý _\ m›Ï�¼éYš´_º÷-�a)8‰’^mŒœÍÚÀ>.kyXž%Gâ~šà+Ó¬ ˜~Äìtvíò{( ¿×µvüHïÂüô^Ú�#£i_y!Þâg…‘ÕÍ«¯2Ã�êW…Ný3&¬&3P\ HnrVþSöWjLþ->E]‚Þåàèìõï»ÑaÚñdæô·é½ƒþ:.ª*^|w†%ØÄÉÑÔgY½¹¾¾Û8¸¼`:9Ÿ0†:ß“`�.�r�³eø9Tܪ�ôr­’ XfÄ•�²AlJ~m8ýX¡Ï L8öÍ8¸/JF$· H*pÒPGaa‹È%iµa_ì!'×õúPà¥ý`ÂwsÊ ° EH­Ö$ü¬Ãl¶dB³�þ¡Ú$*ÿT}ri×#p˜ç̸9Þ]Cù/ ÿäÝäüi¯í ˜üò�m¼ëIß‹ìj\@¸ßÅ{ôA',ôTUbv†+1Ý-àÐqÛz¤@€§H÷óÜéÕÖŒ<ŽìJãx ÷@&àSX¬>í ”ž~yÅã£eXUa5’+䆀ÁO¤×ƒ‡4 Kë¸BÅVMÜÒI0©6qç^�¥ùËäͶ Âù 8ÿã¼ÙÀd·gõq†x� s7è…à#fÿÉ­ù¸•q’1ú`\ä`€ÎíuDÆrçKSù*·l?WÌ*ÿ2’`“·EáA€g6;?6…ë#7 ÁÆzuka cö7䈡ö‹èDkµ gwjQJÉnä¬^"$òí:¬±�‡ª™»=Xä]©Ñeà‚»«Ù^g¼`2è�¯ª&®!04¨€¶� )Ðß vÀ·nÀtqXú¾qd\¡?„€ûÏ`Èž˜q1ßÐÞÏ/‡=ѨÐA6^“¯rh”à�Ìx"²¤çHô§àºVŒpâò$âù€Þ-°‹¶ï̪#¤Pì­dw_ ‡.ïD/’€½ˆ¦×pZã °¾‰Ñ [!ßbÜ:gŠ…ÓuÀÃ. i¦IÄdÇQœí6( ¬`x íTlK�rr&'©¸2‚€V.À KOc.ë¶‹qíYjz9€rÁ"¥ü¿¯XJKœ‚›ZºuUò|šÍ´‰¨ð¼™»¦Mè•uB¼˜‡Ð¤…:ÔŒ}—ê+Š;ß"m¹ígC«IÝzm?à[Em+l�”Çay’¯›Ú�ZÖ2–³Üz»£÷ X ÝÂÝùÆJfäÆöUªÆj¿{PÎkvrÆ,�±Ï‘�ñQ,A�‚]-Ðd—ææó³lˆ<ûÅ¥sóƒ­]\Ƈž˜”“8•¦+ñKáärMÉŸuSÞÆ7#Q†„ˆKÈ&â\4UNU¦%™b£ù¶Ã<д·ÿ›»¼ù8¶´ëâˆBÙ^luR2C‘ÜgQ¦È_oŠ2c·–ýÛÙUúm ùGJ  ùMÂl]‡Ï(Xg"àÐôŽsÅÈÉ]»Å_f¤°pÛ=RLr.Bux0šv<9?x*íçt` ²Ò†¿©ƒÓ<ØÔ®š,j Mµ W%â£øžs·Û]°ðiF)Ww¡ç³Ó69�>j~Õ6œü‚FTGû¹© 4ùjw ·D×Í A¸ºRèia®4ÓÞ;×íqϯÉR﹂@]uŒ'íx+¿õcÜêËnÐ'|ߟJ—s îdyÂãõx[0áõéˆ;‰�çoùˆ;É©ãÅ › a(dçPÉi½¯mÂ; ïJ³f[ÓÃ,0Ë…·7ÂHÝvJœ(еZ#ÝdxŸ=5¼–¥Ø—o «Ú¡´ ßzGÎ#Ósª`ƒáÄÚgõFÕÀÍ¥æSîb$bŠª¨'ì4Šüda¡<ËW6°×—w,Dº¨öƒƒ¶«âpi(íU“�µˆh¨@›Qå«È㪾Š+&ñÜõ’A¾W5‹E\Uиô�»H™7¼XŸÝ)ö#¦¶TÌ0¯(ËæPÙ€¿Þ¬ãFQð‰þ IÈC¢„å .ØhúXã`�ÔÔå&o™´ ð¸1`es¢âÕà¶læÝ¾m2»«H¡)¢ fûHy˜ÁHÀXæ&ƒÃvÉ”[`SUCР׍pb£#ô)¯s‰5‘^ÞW¼Â^gûy[8ªCI½l¿-®Éàïuy�×k„r¥ÎBpi „y ŠÂ¹RïPiíËsê�79¸¸„ØîJ]…ó†œîczè¢üÀ. ¤DyR+˜f8›@šJ¯‹ÙŸœC¥ > ~Ou&Yxo¦öÝë7Ø9l$J´:ctn ­éªËVáÕýœ¦;FÉj,WÅ(£Žs¹wÍW%¨P–ÌÄ,Û ½NxÅ n¾·,>c ÏÛåqƒŽ[Õ’*Ä‘·Ó£‹�sºý‡%Ó-À¡â:y+jQ©f’ç•qR�Dmòh™a’A‘)”H‚<˜K/o­cûì|ä¿?b:ÛNÐÎJ8OÕÒA`×½ÍI­:OÃŒ�[}=Š¡¼ðk¯’y‚Îk‚ü;$qWüÿ£\qÀ¸M˜jU&™+pof^�Ž=–qž‹Ms•9«ƒt¤­Î)—¬ˆ-äž358!c{xΩ:NÊ…RåÇP‹ÄT[ö?ª ¥Uù˜½zSó¬ßp£Õ˜°£�B*íog«ËŠÖ:‹)É‘á‚oØ9EMé-š×6ë7‹â.eüT–{<¦ªÝ:^F aŠJ,MúmׂhÛ¨gl3iÈ5(*&[¼›×™ŠÞ¿µÄ–æ·f›}ËÂrUÂ{Û ‰èUpQsך™ ¬0II{x<*÷¨˜zŸ Ü‚¶P5.×ÇÑ_ê–´Ü5àêßÄL+³áO1r‚u®Gc+†Þ³õªOÖqÃð¸Ô%èg�Ѭiü�[O0-Áº=;¹b€GáOñlúnÞ¹å: LN¶nÈTg¬ žOAg[?í9!þ$wY7ÒPN¢ââ%*6%t×An¬è£¬¾çÔ·.î™Yxƒ÷,¼Sdþw‚»Æ€ë‘ žÏî•e&¹,E` .ØÌ9Q·«‚”Æ©o¼åÀîˆdUd¦|©J^d‰:êTv¤¨ 8SZÜzB+šÜÀ{¥ŸÃ2vsÑI¹BÏ´|�ˆ l$U‡:†ŒNøv…OPDc)‘Q§<vªd.9M‡k6òôøbGw®jó,ÛðNüæFY�JZªSG@ •cˆ¦@ ô4dÁ=u�*œ#JsÎWYHÈDv N*-Ç9Ñu‘Ä­�½]k–ñæ.áQu&âÚd±þR†Ùå9Uj�µêxãh8߸wP.Çuï˪ˆ´º³0½¤�{î&êsMc̃ÿþÇßïÈÔ`Á”Ú» `yU�ïVj21gü±s ×lpÓ@¥Œ€ �õVX׫x^à„ª¬ÏŠƒÓ¸ÄŒÄ±xÏšùþ.„<è8‚謂]/ëø4Ú!»ƒ�²¯(&< HÛvMC¤¯o—Ú}Š;–¦ÄÀÛ[Nà$�¶ ¤ºFrá¡gãçÍ}#Åd„CƒXd²ì¨¸0šÀ=h °0ôÍ1^C,L.kô'ÖT”ŒzÙFüèÉ­¹Òª ¡’3Öq‰Æg^¡³¢" °•Pÿu�fêolÎ|ǺW�Í e gÉrâ¹JKyÊšK|Ú{€1-ù}ÌRµÖå”Úl¡À@Y¶ô@á®Ù3‚é%, !*­6D82 «¹…Š Í|åÓ¶� €"6PFÂYÒ�>¤\‡î " Ô0Çœ›ÅJmÒºDø uôFE'i@QDmGk7¤ƒÌ£Îë‡X€b½R%�û˜ÓGؾ�¤>ÖÌÚDvS˜ªç‘¶Êf‘€C—ì­Ô«LIÿ•WÊ,ÝlÇìd›W/o:ŒüßI·LÝá›RW”2.ÖaÞÜb¤#%ÕñÂÆr½>–äÍ�â:Ç}ˆG·qI÷ŒªnÅ ¤ˆgªŠ¼¯Èq×;t¦£Ä©”Êj=PƈƒIY5ÕÑvød·O#^$« =¢Œ^,í÷µLª?a½G¿.fÙΉŽÉQCϦVDQ¨ö†qà<ÆÐ�¦ð ®”Ž­J™<üMÒZݤ¶á¤0¬ü÷¤½xª]75wW¹.ÊT"{R„áú‰Á ”ò©;òUÀ$kùG�”óD_œ©x(J6L§«ÀL™ƒz]’!¤¦ÄÌÉàȦZ)K%$ÄMµÒ«qð¶(nÓX›m%pĆ꜑a=Ù B�%ê �<<ÿ ¡oV¦¡ªç�Ô$Ó\j…sHV�`âÏ êäìcep`’ÍòêàL[5DÁTÂ9“Ð;•”1Ÿ}×€ŒEK� ›&Y@ÀTù‹27[G&k—mòï“Î}O3P'µ‰ºTä¼"F€î36Þ"d¬kp¢Ñß>É%Vèo4‡ClƒÉc…<0Þ³³¾k‹ŸRª¾öÜ XüɽV=]Öûso9”°<¡¢u/Vóâ‹í±¯ïð9RZî .Œ8ÿü× X5QC¿�À x®`E̸.Žzê[Q|´½r‚±_[Ê/æ Ôd)#”Ô©ƒ¯™: gã+~|_Ôûü×=“Ô-u®®ƒk Ïѯr€}ÍùÙÜKßYËî2Ì@�˜�bÈkˆ'ŸAæ™ö÷=͸±:Ý•J›½Vó zŠRiIŽ?¾èýкØÜ"Ÿ½� ±G¯RôT H&Ÿ½¥ÿRºâó÷ÇÁÁäôä½É™îT3 5U †G„�Ÿ÷jäÃù¶.scÆä*@ä�@Áà }ÃN šÓk_ÓøÇÿªê²ÈoÿÌóÿ×3þw£ƒÑJ DnzòNòkMÚâàl¯xÙUÚ{po¥ é<<¬ví¡»ŸvµÉ¹0ìÝ éÄÍm½KϹGh½=îÂLtÒz¾&îÀ¸,Dp�½“hìÑ�£©ÉU|ÓHnÂÇÏÇDéçÔÀî9Ä]¢ÅûÃã³³c9Ìsï-ŠÈ L‚¤WªÉ]˜¤Ž´ ýE®Š@ ˆƒU7% Ç„öO®ü`ÓáÄHq*XF‹’EœW1€I1µÙ½§ﯯ.΂ãë‘l³c%Madæ‰ì)ˆS¢!gû²ˆ™¹Û7°9fÛÞ²&„ê£÷`lX§Íû½@þ æ�bç�.ò$—œìñÆ�Ò@`/ê�–ô>ZˆmW|¾ö—ãN¦œH¦åÈ”=Ôèý.RZfB G�Ÿ¾S€ãÀIðëîÝœ ¬¬©�ã“?»¯–J*—#%[?.“+á9�™Èºþˆ¢Ü\U=½öIuµ—–}Ý�6öUÑ,:–¾T„, ŒâX\/I4 TÚ#ÂÎp -ñ5êÅ7H/àë�*L]%CB/ À¾Á4KhT‰®�® Dœ� «3eÕæ¤ ,eª½s€TŸY®¨šƒ‰Ø—u² -׫ u­�[zÒN'oŽV8“côAcµÏøqTæ¾h°ãÛQ%~ç$?Ë•]C·}�ÿ ^¢3ÎÛ{60ø(ïÞÏašDü]fš)¾{¢gòÙ“[5&m˜l*OB&aÌåu†\ÕÆ@F¿&�6ÓÈ£ŽoÍ’þl°'ïðŽ–±ç�NÀ¹" G¼H…ƻś2Ž'Ö¶½Gʳ€ò×ô¼ä‰\Â1¹|$†¶ÛúÝ1<œæjéŠÂÆÍfMÒà00!Ìo£è b²­Ÿ`‹5ÿ TÎ&(ýkÆÜáÉÑ•–ú—a:¢·CŽ_Z ÄaÄט‰œÚ«ýàÅÞ˽W{¯ÇüÏŸ½„?³ö_²ö!yÿ5ûgÿÙOÝßì?{ý““VÔ'ÎÑNï#89ÇìoÜg>èé¨6�ó3=ÀÍ�®cá? XƒíF©ðI„ßp5ê£)@�r”Ô!Ì †òžñBÆìëÐ0£ñ›svêϸ}4ŽÊbíù5O,¦&U0 læåŸFZ,Âtô‘]¼t4¾Å²>ìòe §gfJª£®„³˜3Þÿ J%\ GU3| ›ø\¥£ÿ+Fi†‘pøÜçzq»ƒöÔç2‘ߣݷq[ÕË £»6rµ7oz�ÒXÉOÕjöJF{€Æ çH�ԸȢºñP¾<Þ§o:Úå”)O{f!¾xî+¼dÑ­Œ&ƒÖ*=µ_‘É(—\¨·µÒËmM‰ƒñ˜�¯‹Ã8Å .á¹½#ÚEëFšY7%Ó^ì5aÇÃÊcû•cäMó°ð§)¢ˆ× 4PÛ/×õõ(ôâ݆¥Œ~ywr}ÌXÌñÇÉ_GンÉáéþètr5�ß^M>²{~E¸~×™%`f'?)òžGýµ2~6Y²–efÌ‘ý¾Ãô¢˜ÃK%7æµê‘žVœ^vðbp QŒ‘¬+ö'! Zb—/‚P%Æ„5í�Œx ðRÆ£àçwÐߥµ†vU§WvP f¥w_ìŒ6ƒª>1ÎVßn~Ù±BžnΡ ½•à¦džgì•<Á“×´¶fÚÝxà]Ùúø/J2‡kEÊ6¬�„Tß S}}•"-Ì¡ãU©¹ù™=2lÜô‡[gU;D0kö�"ñ)9?»œ>©'ä�S)vˆ‡‘lz×·½‹´hì Ì&¨=û¯uÌYÆÀíÜùîï»{ {6ƒ±úŠ>¢®:=5"x‚m9Þ\cCާ.\öÇXPU 5:‡Ñ‡�ú‡çãàõëWc_“Çþ¡žZÚ ò2.6/ω²�€éúzÈÌÂA3gk•ÝH¢ØØ‡¾å6õÓ‡j©Ø^½¥ÿ’6_Hº );É‹íQçižÈo•��~¹“'ùðÝ ƒëɹªƒZUBd…žô•½3—¥%�ô²ï“ã™íwµD‰2ëÊj€d‘Ó0]I$ŸéW£Ùý3âþìþ¹ýàîŸÛ²l¾ÛxÒk(Ù5$3ÀãÍdÑ¿‰(:"Ú²bôo\†-¹üï{TUOnʇc¡l0è¹›„vôËþËu“U½Á׸i•Îpþ™Øu¾©H[ÖˆFhÍ¢ÅrQî} N5W&¥¹WÕ碌.ý®ÉK˜SH©¸“ ÍËIp#zöm‡Qƒ®×gÅÂéÞ06P‹ÙcWEa�à^óD™s+lz•'# ³/Pÿ£èº8¹Í‹Òž“Q¬ªp“é™x±ÈmbL'>qyߢ_nW­ÒÜdhPäV ¤ªZ•îÒª²"þŸT'éo¨SòÄF¡µŠ$̲ÉcÍçŠL3d¢¹ û+bÖÎÙŽÜctqÀ¦»2kxU õ}Ä|<¾ßì€94�[]á£czgÍ^Ð)ò!š{IeCÀˆ7‰££}kj^€ïb@ÓvÍæçë¾)àwÙ=—MA-ö !к8…o•iÚM ï¤Ö†µ²äuÛ<„Þ¬.<Çc‰v¼v@[~,RJö·UïÜß.l7 1�®îâz ÀøÀÛ#ùåp�Ÿ° ü4�s:³ÏÉt¯ ×h;œë]ì½Õ=óÓpk÷C*I¦‹0çˆüØùÑJ€qÄ»Cî–M†¬’?žëÙ)�]cu¸#—ƒ[¢1¹Ñø9üKaCàïGðoD†ÀÛHØ÷Ñ\"OH®8æ¦<7è�…ôãQ4Ç1ᶪçëe‡µþÌ «Í#åk—kn~§òêJ-©Ž¢‘os·çŠlqu[�8¤Šêîß›¸‰£]«Ë6�ìgEÙâkìê•;Æ(òÝ(ÎBÿ²×FL[§= hÖ±lz•‘9µƒ¾ÅI´o°ÖÏ?ÄÇ&Â5GêÛ‡4^ë-ÃñÈ•gpë}h ‡ŠV²H ¸¾Ls-®âª¶k@¨NÕOZu²˜OtK–ŸJZ2úÁŠÒây®ç_À@åø*ÄUõÞqA&«4izd Ìý¡ 4e­»§Kfôñ^.Ò½HªdãΠú��mó'¦ÒQç3¾²F•ÍÚ㱿(“¿%L© žÈBlø÷S®‹lâ(æ‘à±Ø7,@71®8û 7•Æ_EÒŠÁ á‘ü�•?ÀXâŽ-Cj/¸P3°5»ÉîãÀ]Ó{Ä ‘"6ÍkÕ% zK¶�¸ÞZU…¨“#ßžn¥NúÚ6{f­Á”Û-—õá¶Þöï(S¨Ê�©{áþÃwuæˆW`B;¯X|á&t òµ÷G?Žf¡Uo»Ö»2/\)zø‹ÆJ’›ÄçwxÅÇÀ ¯7ö0uŠv•'ëµ=£Ä-ÆWEtŠ,”q)rw èBžÒ\änÐt•Ö¬„`�å¡IŽmf>Òã`ë-ô·„ân‰Çø!¤´*XâCbžl¢™s‡_»Ów;úþjá\F ‡ fìy¦dç\ÞI=ûùzëyÉÞr¼Ä‡�æPùMñ�J7(ì×ϼȴÊYTØa­'ù ‹Ê]Ù2rѺâ(y–‘k cÛ�\�ãxWDm,6ù9oym�QȪÚho¶¦Y¶IHs�UÖî> ?ëÊAð¤ /òÔÕÃÖÿ9ðf„ø¡Fà9 ÛJÏÐέ¼qÙAÇ5ïJí·!�çÔåéë!#}Žݧ%öú]̸üþ{êwDß6n éE-¦j²,,7ûL ±PmZ�•#U .«3»&d²¬Hr�l ¶cíìú‰H{±î»™vÒÂü¸›&´7“!·ÚÛ*×ylö¦~†OÄe�‘Íå-Ò ÖHT� ²Ž¼ƒwqUÉÚ/iÌt¬ÛoÂrE‘¦º Ù¼ÿ0i¨rk¦éÉ“{hÓÐLÌ$ ‰h¯h²>DI4ѳ†Î;,ëÂlí¬K¥œÈ‘—×:¾]�Rzî¨Ml6 ŸJx/Ê€j‘ë@#t‹pW¦?¤ë B�ç<¬¬! ò#ËðVÆ£Nq7裾.\,àZx4ƒàA±ìÓkiñyºÉ &bO~G´\hÀkê•�à:Ôº÷ùÑZlÇ‘ÛÝŒÉFB²× ÁÑ�eÊó8F¼êÞ!9”x/8=á¹5tŒS‹ˆºü²µƒêlÀ“£8m§Ÿh&¡Þ+�¢A.B‚Ÿ#|,úŸyP L §j Zæq2֞ˉží¶j1©AÞïÇ?‚•¹n±Möî¡Pmx3¹I㚱ŬáÉ¥^²ÕäÓ’Mû%€[¾ ÷Ѩ“6ê}my�åïÛx£“ž¥·‚L‘VY?ÞÍa˜Oãøti ´“Íâ_T>ΜŒ9wB`ïžÅN ¿íäT î28,^cl†¦—²VÚÛÖ©Æ=t+˜8*¨‘²ïMüÃ2òàsR/ƒÑ81Q‚ew�øžŠ.ñä†Úé|ò –Oïà`­žß¢x/ 9naGœ ˜™ÖXœÃOçÆD>åRÚ~ÊŸ…Øys>ûŸÏ°”èÙ8€ŠŸÕÙzüϽõrÝ]€35 wúŒ}Ä?þQ3GtÛSûñølr­YÙ�“æûRœ[¯¼.¾·áñð<�n8RØL±�MÉh®[K+ ¿ß-´?¢®”왾Ï%…·dŒ‡÷ÔÖGxDlÇ:Î6!¼Öm 0{âßч+ö?.fPX=$ù¥Ï_§ ™RÄ{(dçyeh`ކÃäÔïT0MÕŒÆYæå¼%4-’ÒJ¶Fîí2ß!A z[mדʩ.íQžU8Ý£<׃ÿµÌBæ z£Ì^{ ©LÀÆž é<8ß·5ï3àÅe zH¬mÕp`€‹™h k�*˜íP°€É¶°)­Ã$bðˆ› �’Þ±q˜!a*ª9ÀV B°%LaôèõîH™‰ÃfÝ ¶M«qû··¯$— !l0ÁµæÑl÷m±fS# ÕSÚ¿)íAikÆÉð u4+Êä±èLáökÇ.–m2ÀÃ" SU E:s�(ÙUB2“î„Ç�mŒš5Kö1lŒ1/î› ï(Ü NÅ&ÔºÖ™™ÞŸCÁœ!¢ ÀRj¾BÙ‹€jq€›@0á Øë£ªÉ�:@¸è¶o\ê ”ÀñܣܲC’&G² \¦«�•5ß@0,yÙF½ù�Ú;]ðyui7áÓY F"È4ŠI=o¹M[µ]¢¬LŽÄÇÀþ‚^W­Ø¹1�¾$ð6Ø“ßïŒ5ç¨T-ë$½Æ K:Ã2çlÅ5çñ‚w¨�ÂÄ�­éÎÄæÇo&dk%[OU�a$;dZýˆÛt×ì_eÔlõÕ<Ò¿ â’ð"‘‚èöhš3ëfZùó>ùCÃ’kcL®U_Øj[=:ƒÜeß3¿Ê¤´N5ŠœQïE£ÓˆÂn,æ¹õëªÅ™5GmB™4JŽYG:�mpÑÿ :ùÆ¥ûˆ¯Â5“øVG­r˜/ {ÎÌÛ¤”±Qaá ¹²ß­*Æãsn¶‚st»Û×Zq³ä«àså·ˆ”ð‘'ß” RO áXІ4 ÆX¹!Ê`s†m;/ˆ-�i˜Ø$R†Õ£îá�<*M–Ú² ¼tÛg¶¹À\û²%oá�*2âyÙî5ÓiV KZÝeýç)A9o°wVÅÚrç[Ñv’h 85dË@·Ò¸jõÍÞ}a+nIqÊV‰Ó·nâÜB]‚0¦Ðc¹¿kƒ=¿�.,î…ÁÜS°»nð¥mÀ2Ì¿Ò�ØTnEÖ Uü ªÅ6U}è–ýDêy­Ê¡´¬bJ]w™ oCg@_8ü ± 9A ~2Ÿ¬ÍOnÀÝÀM°#'’ǾÅpúކ0*¢ÇQ+RÔÚ‰ðz0^ÉIÇ N½ÝöhúÆÌÚ3hŠæI­1¦Ö[ÖÔ?²ó5ën"´œá{€žì€¦”Ö <ß΋Ä î©ïÀKåDU·OBÌfl%Û¯ŒyúØ�<7¡ a«oMÇÑ#d ¥”#Àœ¹R”ÎÙÒþÆž›CÛxê,wGþ\uèá0tØì )`ÝmGè7JËbo¶Àõîqgñ¹1#2<€Ql»”­ïºÐJJî•ÖÞÅ¢LÀp© kNàJµ¥ˆêuk¨ç€Ú¦«W(©W™ç‰lG¼@«g¯óȘÖð®ˆ?ayDªõsÅf·©*rF%tÊHÅh�6“…Iê<$ºº].0U^ ¯ì ÏÚq`!±uÑUÄ©£ˆ·Â¥ègÌ#¿ýí¦kˆaAb#ò”[Ãá€Öå]Ì\™º2!ô¯ÐŒ«’dÈá‘Û‚Ñg&LâÃ0“Ø3'],1˜3Zf† U�á˜ûÅ_²o㚯Бj]`š|D�ÜN¢Øê<ÔŠÚ$7é„"…÷Ù6Ÿ*_B¿=炚æ�`?@š[×";¢&/¶‡ÎØÏù¯>Eƒ ˜�\@ÚÆP«®-ÏU@àj�Î 2yz¬âÛXŸhJ©Cߟ•Â'n…#�:¯áŽ(Öv”žs*NÞ�ȳ×ábŶ•é[)à.6 ·kv½°ôßfgîcx`#­}ÞQ|ã‚Õí¶/²ÊÏ'ϧÐA™¾~…s`OöÁÙ¯ƒŒ6¢âr*Ìé3d83r&äç}ã "ãHo•vΤþmì>$‰ˆMžÌ®„Ìh¯¡†#cÑGFÞÎ=G¨�¼�¶Àñ]“2‚Gu¢NìÙç´,|%+™Ñø¹âQ¾Ã"¯=TÒdçº]�F6q)R]`" ‘H Q#<6Y"‘+�ºÈlÒ2ü[Z˜6±3Ü ßp¦þ ¢’Tƒ -X¶�ö9ÛŽ»–&ŒîÑR^ÑÚr…ݹJìzGV¯žêò‹LT°PoÙÄT/Õ6·yU&² ��„U[¿*ò¦Â¾µbë¦{¤ÃZ–Ìj(¡=–0ÑG”‚�JPr÷À¤Ã3ÿ/cM¤ÔÚûVSé]¡§R_fÐò <Óîœn‡Aµm §hCªÚk¹ð»Pk”¬Va½Äì•�P¾½›PtXx@HìÛ.Å:’†6V&§\…H_¥ª ýJƒ2«2+^w5ÒYx�‰_ëxÁ”Ÿc—2wШ¢ á‹é6XYrbsžb1 Õëß BG®Ê 59L·š—Ý%%žH =ÍôÓÜÛéoj�ç'Ñ…Ò¤J½Ÿ±ÖA�‡ž Œ†/ü×1¤ÐæÎÀ" ªÎ_<èøàˆBå–[ ¹à¶imxä„\rÎîÈÚTÁ“ÃU<9+ +~o ²¼Ž˜/ñËOÍËçáâÓ—ð§Ñ¶øþ-ÑÒcøât,|b¸‡¼ÖÊmã¾~þzŸ²„©¥¡ã6Œ¢)ÂqžD`ûQÞ̶SÍ ÐôR¿EŸ�„¹0zUH7µxH×ó¬/ ÏZ¦W$ù¼¦ÍVh¼M”Ï ýY;r.HT9yþzyÍ*¦Ý¿C#Õ%®]Ç�¹cƒ–#ñM[€¾èS28IÁ -’¯rù9L÷ýŽCG:ÊÈIÎ8Ø[�ë$î~ÄÙa$¸ÝÕ)¶CØÜ‚î$V·Âbj¿ȇ9ÄS ’9ŠÉu1ª 9ìhŒeû#b¿£1Çk6á­³p0D3 ÿHÒª°}ûo@Xï ÿ½© Ç%’ûú]†ƒF}ÛdUƒ÷&Jj(Ây#ºh>´+™Üüèƒ×jŽTÓö®q9ïö·³Òe®“æê@˜¶¨«£Ÿ˜L®0F²�þ‘è¶?Ú¢4êNCå]zHØiZYºÞFëù×Þq±ß–Û^ MúX“hÿêëuF�ä?”2¡G›�]ëc່޼ Akq $ÉÜvå¨sÕce#µЯٰ“ »¾¡UÛ€±Ä´$ŽÈñË.æÖñtžHã}ó@P_VÃF2ð_lÃÚzÆëPø©ê,qD\» k؃‰õKZ+=ZLj°¾Ïé{Ñ9©�Ä`œ B4ÄJ«¿Olø°= !§ëОE;IÇæ(r®1l¨º÷Ò½{Ü�)öPdI~û&Ikw6á[LƒŒÈ2¶ª°¶y3žâj|Ì;ƒ¯ø½˜“j)[�›¿ÃÀNŽÕ¦q™%Ô4Ùõ%fLj. 3^îs‘¡=ÚºEsâÎŒÞòd�–ýU²á} çýpÃ�Y§�Š+ê˜AÅ ÑpŽð=tt9­>mÝ5G¢éL”ý\†·@¼Stï8`ïT��¥ÏaFÞ±Ÿs—"ÕPi]à¿oElò kc@�v³œ1yW¿J ê\¡¤>Êl“2R/kU à;Ûrö¯ ¶íNµ×52áÀoÊ"#8ÌGî…Y£ó[íA ïû¶æ´,qmŸ49>`¯&›Ü¿W¿Á³‰sH�RP©¢ÉÔ�œê9ë¢�¡7Ì›0­âË¢JУäÓ†Û!ÛËâ>ßÓ[�e:R{O¥¯ë‚Ò_¨Ìßñ3~<ä3+žMÁ©XµñiÓß0n7Õ:¥Lõ"ôx ÙW3»ÁOwSà2ꮿaH—ü—od´J2+dl‰µN)¶öI\¼ý`D|ÝÑQ«„Æç%>E1QW_a]úËäJº^ñQø–@sšGyjMy´ ©¡£‚Tw ý«Š]<`#G{Ã6耗ˆÆr˜Þz—”EîÊæº(k„÷“u𮄿 ¤‘Þ…icO•i¥çëÝÖm÷tÐX¶Ílï$6 ½°{ÉŒLŠ“K^x’0ZDÙH‰- Ó@ö!t; 7‘ÞÓ›Ò‚‘®à’º=¡à‹A”+Ç1Âïò&›ÇåÅÍ5³[í°tÂ.EsÂ.ã´È@eÕ�;0Šº?ÛÏ|Š’)†G{ªú‡«³}�WPm‡[»ÚÁÙÝÇV›´{ìDP0ð£mh‰F:òPÔѶäô]ÁšFß{/±»ìdÐF^ëÖM†12­‡—ÿzÈ»Ï~wí Q훲¶áÙ4 k�ÆËÂnÖMrž÷VAW<ç%¤mNWÁª{w°…m½©iŒ|� ´N·Xz6ðÖé_þˆMæºxš$°¡kèf^Ñ-Û¶ß”o§Õ”OO}¶ÛMMPÿ7’=#¼+З¸Z“ÖGí‹ò-kÐ{h0;ÍE¹H«Hª}:�“ÜZÍR³#õ¥n[¸Ô3pQÝ•ÔÞºiƒ)Îunm¿·…BÙ¥@ŸfÉ·Ü©Wîûò'PöŽašü»2ÐÙßV‰�oOÛÛcH-þãgYxoáiÂ�Èx—–j»«´ÂUPÅw `'q”/é'—¦zS]�}¦¨>i £]ÕBüª<&Vusk_ЯcçöËeÇÃh©é]ƒ6o[Â$U¤Ù«ÂZ™;ìf[÷Èøáèd:98;>Úÿ|u�à£ñÉh|vñv*Ç¢Åû3ø÷éh|pvqxº?:~ÿöøììøüx4>=9cúÛôâýÙäýÑÉÕù¤(ãIÝ–³Ô³ÈCëlÞqVãá]r+k+H�8¾sÕ{µ´‰cE4£ÁÈÛgªï¤ª‰}'yÙ”O£Ù–+´¶Cây“|ùö/ÈÌeÞ2Š�ÝS»¸Å ä>,8T£6¬Y¤î|+ì½N'—“³ø½K}âHÖÿÔR)ž³}]xp,®50³NÂ8/òXÀ¼OŒÄí=ý§q¼öÖnNf& |#Da�BÉòQñ7ƒ¹|wIýšÅÑWÝþjB(¡—‹n¯{¼NÑ]»êÎ�Æ®Šï–‘@…kCÁô(²Ðމ¹/Z57¨GJTÛ3¨¾:yÿÖn¡BÄ(8‡¹.Á÷V¥P¥7¾~wu<¹ž]¼<ž}x?½<>p`,?Ëa3rIGxDÞñºÇ[ä{¥}ø{T zÑ¡adð.Öà²JÿÑ$�®Ü8®¼§§–pŠÆ²(ìÅÄï'a†àòXy·ìêÌ©ξJ ÚY&ë�V�‚èä¢Ús%¾`:ë%ca�þ‹X}ª§Ð|P€¹â½ú§–ŒªÀww>ÆNçB�ïѹO7€3Î;“v2á�iA”Ck÷ù‹õb‘ <Y—³ËÏóo}¯nD ¶B!¶˜’I˜rUæ5$'�¶:ïi7KMuÖaU}.\(Z%žß¶àÚcNü3Vt9øj4»‰ù 'ƒ,7ºÝuY¸6J€•È�ûF'¿2#Ró<¸79ɘ¢ÏÑ/ÏÞÓæFìÏТé,É›/�¤Gl®:Åúß|DQ/Æ=jǼ�ÖvøÎhÃì€w�",M­€v4fŒ¶Þ©Ú‚œûæÐ&s³n´QÌNr&º“Ž”ÿµFk oÇÚávjH²ØË ¦,C `½®6(¬O]˜¼ƒ³»,ÆÇXÜ.A;Ÿ™+>³ä`XÓdʶ.ë8_Ä%åÊ®_¦¬pÌc–qŽ0ŠÞe6w±“DùÝ´ç,þ½æ{”ª!ØödF÷YS0ŒÔm,b‚±‰Ã1ñÔyºÐ^À£bÝáZq±–öÈ7/øx¥yÏ馸 :MhEXšœ6·�3¤Ö OÀóøÎki«‡ái“óKk¸ú—Œ[}ý®Q«aá£ØÕâd�‹ÿí¯–ê:ò�i[ìqŸ�ߢ›Ù³XÈÉW³Mõ÷ôMYÜ;p“7Óÿ<ÓìY©'Ì•:í娦r>E—è옋ö'àÉ•³€XØ“5㾫qpWí=ªÌ"ÖºîάçÄ+$0^Ç‘ˆöR¨ã"É~¡ß…PhG—ï.ÇÁ׳Ÿ�rp•_wØ2„}ÉY™=8”¿ˆ·õìó|nC�÷¬Ó¸‡ÕJèVY5¥é�¹rfóŒdÓ¡�‰Ü4=ˆ}›H ¨F_W‚ä«îì\óÅnŽ¢,¢Ä¹%ú@|c¼Z‰ñ¼P§£¤­m¬›r± ­þíöuy§›á:æD¦aeÓ‘È#îý†qzì�Z_g�¹ÑËWL�òã/54äˆÎìy¨o™í*îq­ê�ì µ,;Ÿóg=ç)?AÍ;.ÈÄ=Måfrëˆ8 {î¢Æ* QüÁÓ÷ñqèdÂXËb3¼îM•‰ˆº9�IÛð_ƒKès®CÙ_eÓ-ѧ/á×ñ¹”’Ž9ÚìùÝ?ãoø] Žô‘$¢¾‰îÜ×`A�&—'×}¤aõ“S]4„ÖNZúAU@F3vjô�*Q«+¼�йC˜­î¶>4kxÓaÊȵ8VLÅ©Eð¹"c£þvÆëݸt¤ïrU—)yçñd$”9 �U*™)} x£V}g$‹µºìÆ\‡ÌÙ.¿ŠçÛ¤_Þ�?ãTDï4÷a§VS-W¢áT±C*… µ(?xëW€˜`¨Ï5l_—)9’\Ñùá% ¼Cd ö ãзúàAØ\ Ÿ“z±§‡@ôµl´µð$ƒ„Šo»Š2ÆFòÏ»/ì9�H•ÍcffrÐŒÛ |ØAkáci[ƒwFµ!ª1 ßÚ‰¦%RWÃSÙW�—µ¿wØ8”³%ԯ㰩‹_™*ü½c]�÷¡�Q«¶´ØkÕ2òfT+LÎÎèùˆ1=W¸?w„ÇÆžÒ~9�™i§\ޱ‚™WÒïáÙmL± &ºÅ/›üQò]])²¬ž=<¥G©µHÂ+HÊBÒ´ ¸äirW€ƒ¼ÿà>ÿT¥KÍ5´4 ¯\¸¤nl’P/í¹ޝ‰t/ú+3äkÊyiÏ¢ —É(nL,˜EQƒqAí³P÷œC �š:wÌXÀ„Ð=ÈÚ\¿6{£_;Û:&ð^‹¶?~kÙ=^i(�¢Ó8`™d/Ò£÷ØØ†˜¶ÒaŠíF6jˆAcW E{Nš‹œ8¼ç°lrÙ@[ËÊ�‘·Ž‚�EusB9r´ó À›¥7ÑLÀõl�òóîˆyNßùm:Bƒ©óŒ5¤äqÀ£P"³×�“ß±_yù+ŒáÿL\ªy/+~µ‡JäMp¬% bæj�pñb……_-Fj‹…0ý樘êõèìþ¬ˆµPÖª1bW­ ód &•)DÊ+¾|[ð6^$+Ì&å#”jLáÏ£Â^ãŦujàFXn‚w›Ô˜ýå�Òl:nëçÙÑs`´œÒlñx˜½˜Y¸ªò"ªÀ2AB¥æpºíHß6�øCÆÀ½[†l:ìž_P¼åEÛÉY�Ú5-wàzàíþëìãt¿Ù!‘.rS–ºBœ™E`h>¡›ñ´ÖŽý´ÞAb…ƒï ¨ õLú:®ÖI é]©2昔l›¿1/8\û;Zþl{-ÑJ” ‰”1AÇÛ’S� ч™ö®Z<ù«h–pƒeq5®;�¡ËWÿ%oØÂÁÉRA ¿©ëìß¡êé»ÄôimM=r¥÷2üwjBT)ÉköÏŠÛ[\6(ßWŒ^ãjÙ¿ê)‘Ï6¬‰ 0{_˜Òƒ ¦1O6@z$0¿%ÀváúŒWq¼>t5¿.’dLëáÝYŒª~X¡“†:õ ^+ܰ\¥)-nϘ¶‘öï32 •ýÉ«: ,ì¯nCl‚Ég^‹€È&ñ SÝ�£¿‘Q/l¯°ßhv%¿ó?UTŽ7.¦ÓãCĉL¡ìÚåŒ6&CpOµ7PàI%ðB8`³NÅÞó[aÚ_f’Û’™6a…ªòÇ,.W±4¨7ÚMõæGq‹6¼‹q(ý~ÿ*#ß\Óô›b‡HžÈ-Y®{uÑ㊱rEi§ðCNëb,M¡øh•2kоÁßL»!3j±î:ôr'òúó0b¿êõ#'¥åü²Q~쫎Æ�rÆëøß–ÔÃç'ϺMêN¨ƒòÃFû½Ýÿ)ÛÝÂë¯4ŸúŠ­'‹õ~¸Œ:Øç”¿÷ÏD�Tï5Ì€3Bþh×Ñd·X¾!5:Þp3^<·Ïñûbe 8t·”°U^X)ò5›�y4CyÕÁ¾°íÇO…�ìÊLXü‚¶àM+©2±EX:Þuo•Ü+U:¿ª»5 YîãXé¿'Q×ib#!wÓx!®¶õD&‡tðgÁч«çÁ. s("§‚~×D¼kå儯ãôÓ‘ t‘“-Nz¬^P‡fÅxVJÖ:Dd0³ßì]àÏ&WßeÞ²eº¼© ó£–ê[’š1plsÂV²;½¢-¿¦ÿœ²¹ÿLºsÙˆ;²†$ÿHÕÜSÂU¶"å '똒4¤ µ–½à}-ë…ñs<ïn�P[M¨a8ˆ'¯ŸsåÅÀ¸|ÚZ°õ¶¼›\OØ"_÷-¹G“§ Ó%·§²î̵ O~´¯Â%A>|œ\�°©¿ê=g s;9®g‚¯~tMÐÊøí=¢ÿrÊ‚ëð²oÊW¬À;^@„•´YîbÛ55K+»wÓ*ýÄôÞÒ]b dòñäôlr>áŒkj7teà}ÐXÕ×ý:£qY)bÔʸ�¹éÂÎEÏÓàÙB\Ñ|òKQF—�‹>þwQdi8ŽÊfÍ®ÒÝ|ïé§ü²´€!:× Ÿdi,Dðû¶@ ó„ÒŠ®"Ì�Ø´;[¬©³>é4ãÂû�éÀZÂî/“7­ÅËÆV ¢V•0þ†®pÌ¢bTÜ„�Q«‰~ÊyÑþôý¤îF…L«¤~Ãßî9«§ï0MÒ¨³ïŸòí'hÝ|#vþmG�–ÝÝuQÐo‰½†íÙy½äçÓ�ML)Z¸JüÖ©õ„iXQ1Þëb€�&&¼,‚(NÜ·©LF¢à’`ÐsY0sØ3%Ÿæ`Ϭ Åd…¡ ß’‡pÝ8sè¦`1„ €Ú�öÂ^p@2j3ÌsU�ÝøSŠëd#2òÂkg„a‚ “Ð S†Á­q59ßë#Û[O¤aK¬/¶ Kó^´{HS‘1$î­j[¢´¡0>¨å’uB?Á§ÑQÛX9EE=8ínÖ§b/ˤ&@H¢ä1¯KŸ�I–ÜÇÁ±Öö²o˜êJÔ02D7ÙgÁ‰yÏÚCw�c`¬Ô‘–º ç�~uwÇ4§ /ZËã …‡» öz/®�Xvã¨ô!; ¤d!mŒ Ua(Ø7 ÂMû>tÎäŠt1ņnÂ5†p±Ñ‚!^Bú’eKDT ~­Ì*BlÒH�'�9�÷S¸—Ê]‰r ¦ Ö"íUßu3Ñ~ÕÎúbÓ~RSûMÙ·o;îÒS–i˜ÂáAºQ΋"Üè$;m£¿*¢P“†®vr�Ýï[´à¾ÞÛ>HÊ‚m�C-*‹]xtKhíLlÒt å�Ê1P¤ÙåÓ„‘Ñ�±†Èrˆ&F’9´õ]j‹kŒ¦€*×HhV•K~ž$¦"ø`ç¢å*8û¦(¡Œ'œäÌ·Ö·tå äyËIk5^ÐKøCÙŸ‚”^æBÁË÷ƒe]¯«ýgÏ>/³Eµ ³uï-Šì™oßÞ¸Sï×nÝÌä‚'À†xÆîïš™ÁýÔ1Áçƒ+þ¼E¼å] ˜1ƒòõ x�KÒ�ŽæÅJúÙýÒ’ÿeï0F5Rф뗽 šWn u /˜`àONަOyζÉ3"`üŸr™)ή÷B*Ú³"(JYõÓ«î´|—ÄÜWqδ.¨×e£é2´fÆÅšKBawÕ¢íñmÉP,ã”Ð3òÅpjV¯…Âý€}ñ^ëOy›ž³õÏÓbeæk)¯Þ§‹‡óäKp[6ë¶}ºþˆ7I£+U�c€ŸÏ©oE(ª ðÁ‘h�¹¥•ø�®sw•龜)îNrB›Cð¦O~ï3qi›úz “6Ή™g4f–(¸#uÞHóÄÙe�'›†ÒÛ(r¾z8?~â>Ñ®ÙêB±ôÜBÇP Œ值Óc>c<]Á’¢õÛ1~Ö’v÷Þø,aöôw:jJî5Κnnÿ˜]¬%ŒtÚsòü²êï ²­j?jF;šPC¤êøÿ~‰çSk¦™E ™½Ÿv†Y»§špCf_Ç­¶ŽI# ]a®é™ëž¡´÷•ôÌ’ïÊôÈ}ÓôìþºOÂPÝÆ_×q×±µîøÜ'-?ã£sõº%DãU^|Îgë²ø’ÄÕLà ö].|“è9#ªóðËáÑû¨@ Ë•™ªv„p„±¦8©c•wÆ(éär‡Ü&2ü¡a‡šÕ’·ÒÛ½nû£÷Ýéð/)£ˆÌ‘‚âd€Põ°d^†É½£mû¢b aµœ1‚ˆã¤ÁìÌ"S‡Üêæ¢ÓS ·}U­Âjµó7ß42^�„À�'ú$‹Aäu±QyY�Ð 'lŠ‹òf*´FFwß�ñmÍ…E¿ÆÓãî¢Ë夽›{� ¶¶ÛÙÏŽë´ì<ˆ~1&þòyp~€b ©£Ö#%Ò¨ºŠÿÞ$ö ¾6•Ãó•q’ž¤Låç!k‚wã€Tn‡¦å½<‘à_ýÙýÜ!ª†‘qp‰öÌ俢)“züriýŠn§Ì5¼PŸ,¶ u|á?ቱˆ:-£ðy@e¾¢Öî#Åž¶±HjN¢J¼Ú”’³0ÎoâU• ×0jØ¢¸ÖÓ¨¹Â¾@Øž7ÐгïöÞˆ<¬ËnõË|¹U>åm \‰ÿÅl�D€%°ªvD\GæãØRbÇÈV‘hæÁßà¸Ô–¢é9((Á=WêVZ•åŒSHy- Ûv‰âçðfA3ÅM¨R0ʺŒaö±ÑéwÈP°¤!ÌE¥j \Úó‰ÚKzÕ ª¼°÷5öÏþ¡NÉÓq�ë(¾ ›ÔW–‹HR�qµl¥>h@¹h�×9]ÊjÑ¡H ËÃ1 x»%#ŽYËöqaÂ$’o›˜Q¶ îãJÃaTøZ‡h·3 n£&QwÀ=L��ÎdI|G”fÙlt@­ËžzmߊɲÓbéýõ[<âBo­%i*Ø~(ÅZC«TD±¯ËÄb~*ü�X¥’'µ½!>óœõÁ=îŽl�Ä?ìò|ûUñ-gð=ú•UgÌš¯}¥™—Pt"Ê5¤m(K­ºÞ#Êcï-ÓD%ÛZª‰àHXë"œ‰¯ «Þ¤Xëð%AÉfmv'Àù¹»±··=´÷=»>@±d*nÔ“ØçÕO?þøêGÑ¢VÂ$¯‚|7ÃÂXbO®wÚ¿Ê®á ‰³×4'dÓŠX¿&x3DæBEX ý), q;ó%€�i³ª5, ä�þR¬-T@ê/Êä@ÀÞ0å¹: 7¾‹"ÃÌÔaªê_ð„W6ÆåS¬).“ ·2ÒÁ»V® XB•>¿à”-#óY°K÷4ˆ¡è lgˆÿ-a¸7€DJÀ¸™÷{µÝ‰áRCœ½&Õ-p‘2q[ýüãín7ü·šxõ‡k}Ãä8ŽÅ×bÍKÛÁí½)‹Œ7GóYsÒŠ$ð™a·‚iÓ\òž¨î�YK°õrrô5ŸVǮ˧´@]”ÿÙÀ–ÕŒ =/Œ‰¤„4:å¯ 4<#2»áÔ�ÜS%éˆ76±ââOÃ:(¡K0Š Œ§¿{'Ûºi|ŽÀDSdÖßPðNÇ.Îãôæ1)^ˆ±�ë5å   Ã;Á´vƒÁ>9>{Ó"ª§�vM‚N ¿¦ÈB!x�@»*žÑ´ó`·Í{ÝHuÃÉÁ|žnÓ;Õ>P�Æé"Ìׄ„ÔW=̽‹x²*@h4Z£.Í',¤ ¶Žje¢® JU²ô\xJ`pçuÛ^%BJŸ;JÔW-¼BÏþˆB¡E*ok.ó­¹Zµîyµ*à‰¸ZO„“{S¯û�mÝ”ñîM½Ž Ÿ{eìÑÈ¢}ò9q7•y=¤† ,ßœâ ç-ýµéŽ{ÊD=&R—ü®®øÕtU“`à>Åΰ˜2Ì‘é%Ž n¼ÙMi§guæîÈ¿Þæv­VeP¶ƒ)ÂóæªAa`êèlš5z¨½dj¯¼1WÜÒ®<‡yNè½gÉ«¯Èý:ŒêÚ¡–ÇP]B»¯€°YÇeÅÓ�rL€%}NÔ Šý÷…J-Qêdïćƒœê(“&\ƒŒ-£TÝ@„ÞE(31ÜÖ J·ƒ‰‚!6°Y^_¸Â0éŠIÍyo`_N”�ÚÐјÑUÇóŽŸ‘d¢Ê‹ ÁSô¾¢v_æVW ƒŸÈû•7I~Ë¢‘rW{Ö›©³……ó3h•×ÚâºØ³°a B˜ÿ*föX’á}€�Eì3 E·Ò ”MX1Qò&äÜíZÁ:�&¼WÍ�—jû„”\nFtBn¼PÐZ ·Ú�TfåhD½òróíÂÆ´˜/®“hئ1#¾ÄA˜óQõ²õ:»ó•Õeæÿ�hdÚÔp”½aN\¿Æ¼hÒp˜}Ò )Hdø$V²ÑAIJG&ôú$»—ZywìâÞ*'œ:”Þs‰°4’ã@;/Wb‡wìWÐf T�YäFnHùûӯ쨙3êL“{§÷Z†ÔÚC¦ÈN~fö"³Þ¬s¡Sìì¿ ¶¶.7×…èõÞHMnŽ¡y«ƒà KìªX³+‘!0tZûGƒi8½Ÿ{wøÉªÂ‚ZàæwŠ�h&ÕezáOÉNH%L‰u&Žë‹\ ÉøaÎ6‘™h=<>h·i€^-Oª—œì8Ò&q´%q�·^BDÄ3xGÒð1˜hpÌŒé½!¸®’žþ4ã.4›äI뺿3FGô`t̨ï3ºÅµ½bn T´¯›¦ür"\+ $jnô;d™ƒ®-+Ìq�WÔ¤ÜÇ«±gQÖ¶¡Da·�øÝe ö I–Iþ¢)ñ!à[d´…‹u3ÀîØÆ™éTáÛ7/?t:µI Õ$€]“ZŠŽ|?èäÞuÆ¡ÿŒ»@µM[ …bž¿?ÕŒ}NhŠ˜zÛç ¦Ô@ã•ñ2¹]Zé÷¯ß†‘âŸu2'Ï.¾ËÉtÆùmO>×:™´ølõ¼µ¾¯7§GñŽÉ!þ¼žI¹ ƒ5ˆ2‚TžÒ’]3�›Xì¦,¦y…uÒ-õŽ�*£Òª“œIî»Ð[j÷^·º$®y»W;o#1¸¯á{hxëvðt{GˆNï9ùò�ú‘vàÃ2 £Šäê!*Þ6㘯ÁÉçÅ'¢èv_é‹™_hÁØöÛòÆðVÕ;û Ñûwر£)ùª*Â8ÅÔÝ™-={K~OÜT³AO9‹¾Ò{«#(ŠVs˜1Î×-ÔcðëŠ=Ð VÞAdì¨à¢2󩌭ޠ¡³Ý‰EnØvÖ`ÁM€?žœ¶ªq:GâP‡uFFD?YF8´kƒrVÃù‰™)>du›Ãúé"�†¯ŒÏ6Y_Yï ¿+ŠÕdj¶í^�ĵv8µöØ‚Š¸`éáWIÆN– ½7”µ¦×Þ䊥ëܽ_ëp—®aI†äØèó4ÖÎ ‰t§•CmQR ÝQîn¾ÝäzÒã�¬GÁ&èl…®JÙó^û7ÊT'VÝ“Ùß 0®T¼‹Wy›Yž¢¸)¥¤A¿/­¡¡j[ñA¤ 7Ö� 6FkEà´ìÿ—@×*C•ÏQÉTUA¿µ=ªÔt8yŽÄuŒ#½‹×t¬®ˆš’ýO�(cWT>0.½Þ¬¡ 7ºf7ãrž�p'Üt}ñ¼KUÿ¶l3¨;%B” ÁÔ Õ‹§øEÒ›HktFÙc±oo pÕè1q Þýe@!ÿ ®Î¸»Pâ¥lwFÃ7‚ñ÷¢©f†`ÈžxŽö“Èâm7Äág¹ =»íù’®À8—&s€+žÝ5)x/ü¬‚‡JT´…`ÛJ\ldLNv`"Àˆ8ÛazÍðó,è�ŽÈJÛ2“%�¤Lë¡•×Ã6Œ©É�ÊÏ>¯g Œú;_ÜAñ{½6sÛ¢@�^Á¼ÔP¤·?4¦NûÕ kï”{ÍESG!» C× {+3¾ÿ1+o®ÙY¶í]2$ü̘9“±‚ï$9L~F)� OË0A…êÝ®NþèùØZ ÕëMá2ðÁ5U]d˜¤Édxµôn'÷°ŠH³W0NREZ'Öäñ­Ew³¦ÿÚ•D W-hü1*q\Ukë^ÁB1xjÌ›‘/Á¥Ì3ó;F'Ùëj›ÎI6¿éÑYÌ­Ú÷$ ÷ËeÏþâ+Ï=«æ‹Õ«”qá_Ú2ÛÁì tÖ»gS6 ¿Èno×AǰW×ð[¶£Cò;zWßQjéqœ$Žú5•Rö×nJÙoF$ÞD6Qj¥·|¼©‘•c㈅"|�Ÿuwý¢f°o½� ÷rºÞ�ÖÊ�%5U\ä ¶ìqƒÑ3Òÿ®\U¨Vß�¹Ú*´L!µK»6�¡عßèúØ1à Œ±ÍÛ ø k{ßϘ‡ìãxuïÈ�fÎÀeÂ;èé}@¡h¾Ëü5‘U ݹ"¬ÿ­šÅ‚)´Œ…Äç쿎‚b:‚¯IZr9ÏøÓÈëb½Ž£i\Þ% ¦·ß6Id}§WШ ³‹Ç™{&ØüÒ`nÊ0ú΂7Ä^er\+¡�Yž WqÀTú9¶çfF`-KšdkñÜ·jt£ê�ÜŽdί°:QÍ 2ÂÅ2sõë<æ¹ ‹´¿ZB¥Nž½çT‚¾„�O/;¬§û9&˪ç´Šƒw¤l@Ø‘wÿáM‰ÔÅÌû³:Ä$æêʸö±õhðÄ£í>¥âCµ÷ ¬çèÕº˜u�Tù$n� ’ dà.ÌðuŽà½€F Ð¹KVz‹¦°Ø«R Ú@Š£CõïÛÄ0œ1GÕ}í:Ïþ:ÆL‹ý‡ž¯ðh6#�3rï}Ÿ±< $<ÿ¢gö|é»¶»?å]ÝÙxPÉï0ðeâ91/žb�©Ž\”¸¶À(´.5Û q‰Û–æ­Éyœ‘ÂòP/$Ú¼3ö;Î$¹5‘ìHb­!ngRØ�¶™»w¨M\Z4ÁÆ®ˆÊ¬6 Q·‘CŒš‹÷—"\ì;§ÁP€(«¢’­þžtð7¼O«ÖˆòŒ»¾Ä/˜8'–"‹º“Åêº8,Ö›£‚ÑÀ�.bâÌ×a^@§*¨0Qójy“T×¥q²žDVHÞoaµ¼Ø{¹÷jïõ˜ÿáù³—ðgöÏþKöÏþ+öÏþköÏþþ³Ÿº¿Ùöú¨¹’½s—$ôêoM§gâDâO0Å鼈šqpŸ0‰׸rF8ÜýØÚ±0ÐRÄ�v?ñzxXl¡™w!­¦8¸ ×íª GÄch€p& Wl²v¤âþ5¢- {ïÀ~¢íV°iV‚ a‘¶üž�Ѹ°Õ“•#ЀNËvÚÕ³ü†þ°S‡ºÓ“I•9»¤éª=FÌÓ;=æzGz6Eê`Öf˱J¨„²7<©_6} 0­7ãÝ£ž87F �Q0NÜ%Íý›‹ÖpF¬LÇ÷Œ-Ê]p¦zá�­gÚ²¥âBf”Èà‚‹¸¾>Ãr»òJJ#Sëouß—¾p̬kŒÓ‹?fTZwã˜ð)ï’Øš|�Ê:ås¤L|˜Ih{cŠýæñÒƒÝ!¸�)‡ò¢¾píúAC$!mZ=–NwzÊÍUš‚¬ †¬Ò´FЍâ°\,¬ÉðoØC€¾åѤ“˲#+ný�š~ªg )n‚ÖeS{ŸiÝIUÓ%ÚJuᨠ8h(ôÂÞ½XŽl�°³_¾¶ÿò5þò¥ã·/éׯ#û» ‘G¿·ÿ’ýøW¹Šo[À´Èyw¶°ö,{-r- žz©s,�ÆR3s,û½|LKµaØ™MÈêñJ^Oÿ“ÂnÕï+p€žñÝV&´“îh7¼;â™3~q�‹•¼)gäñíwÆ ¢PÇ êÔé!†ÏHèþ´DçAa/v=‘Üc|ü·Ñù^ý0 ò&S陜ƒ}ú2ÿ½`cð ^x5àlEžZiþÿ0?Oë X1�£Ü’÷ bm]UX«ééŽñ 3rai¥€‰A5b:œ¿«r#ñgرã–иz¤/ŠÕ{ì=жÞ=ÕÌg%q÷JYz¢�–Hz»#N±�ÑÒ^FSð2|uyhêcµ7?}1ìÊKòEÚØ�€�†HÕzznÄwã/ΗÏäãÐÙRº“ëзbD8¦’ã)þ{¦Ö… ŸmÍ=>e|“|±=ˆM%¤3˜7¾gRw€²æ`]Z žûì!M"?µe‹$.—›™ï;UQÞ6�þ5z§Œocëèüµë³�U/–qùs˜6q…2ò˜ñ{Á³p j&sÎiÇBæ”qVÜÅþg¡�v�Í2s8¸bÊ:v¨œ§Ü /ñ˜QÉ#ƒ‹—™M ”Èm¹a—÷Z­¤5ëCy9 kWõËwé° )ù¶5ËÃ4q”«õOsª: (Ô.ñu4¹¼†ï6yx&)šJ5`ÊÛ®—cÓtŠ¯ÔˆPÂæ˜óR÷v�ÛøØIÛ»R_rôo¡§áÃS–ÜÏëY`ê5ì}èц;$^?ŠÃþ¶èW©�§áÁ*ò ÝÅ×Fn 6Ùåc'ÌD†q\ù@]?\�¤Q»²=à=¶[ûCŠN‰oè}QALAa(eËÛ¤  2>ä€øÇ‡`- #?©ÂĤu" …YßÖªRv)A`æÅ¹kÀwÈ ¨e4Ò—9@#>õºí)4y¹Õb¢ú.Lí.Œ·„¡%Ú°šº4*C�x‹ê�béÝ£�šûßCw�þ* áÓ1�ÞØizŒsÐ׸Íz›XÌ&q#Éü3» ¾K0äã…ÌLÐÁ-‹õZ1ˆÎÑ‘Øú)V¸&s³Ï˜é[Ý@å5S›ë¦ÆºN¦HÛ¬õ‰’þÖ’ñÄÌv´ÜËiw/¿·—ÕíZí:LÁ�jsšþ‡Þ©FÊ—¼ã£“îlûGÿí{ý?Ú÷Êq‡+OÐ¥]³Š,‡¾L‹¿vYt†è˜ «Që³v=¯Éóò'�îŠ^éÛŠ ŒFºÍuc^h fñMé%ù«‡-z«³Ž: &RÜß¹r.ÒvSŽô! P™Áâ .-Ùûœœªþ† •¢o˜ëf$<[ƒ«ú9½ðuaäÄÑ ôê¼zþœ®ó‹ç+ý¨¿^�ƒ¹cèÅ2xòây…vØ‹—K8T~ŸêçÔs¡[ô=¸nÐ*ÈÎÜ=jü;$PÜ+{ÊoKqÒ{{5Éljޅöé#Žå÷­PK@fX�WWqÄ“©°¥›?ê߉‡þ³B?vO§ÐctßhbÇE¡ž‡ÿR¥7¢ÄÔÒ%’ÚíÇ•�Bên$æ•Gêäþ ú�Tö¬Ê“Ëlì*Y÷ŒrrÉ›’Ñþ°ÿ2±”ÿ+B ÃÙç‘0Ãwˆ€1ºœ�eº^·NÜ2}±N EYмnŸ=5P;RI\Ï÷ðÿ0‹ëåóç/ö£ùö÷Ÿ½z d¼(Öñ»Äî÷·®fc‚а'q�ÎY…™8 £f¤`f&y4-nj'Rr\æqzÈ~;Þ…G—ï˜2ÈQPH©âÞ·ê ÁQs'ØÁ˜º’Bl·…iÔ!¥äC÷Ê +nâªb³ Ó©»¦õ÷Ìh èÙ T+ò®¡:\³ã DÖÄáìÀS ŒÌOÞ"p‰…S·›æé÷ÍÒ€ê… {HH«{§6âJ8L/'çL…(m· ­É°ê‹Çu»â¢íSn “%à.j)ÊduA™;èœ X^Rª§âÑÙ.Ü0GÝÛŒ““𹍬HOÙ©*ïû$¢ÜƒbJIh 8­Cèv°ÿ)Ÿè¼‹­Ê�÷Á�¿S½é ‰Î ûå:Ëí&¼Gìåô;+pé}ƒ‘öÀŒîø³#sô€ƒO!¶ƒôñ¶ªÔøf²w¸GÀ¨ÔÅ.ðâr€…ƒ?вó&·~˲ÍÊÞH‡í&Ô ¶Ôj@;™o\ÊÚju‰m{·s-®r§ø³;»�o>e¼nj´Ìý(øo‹â6�©‚Ž&°s_é\â¾h\Yo~,1‰ô�ÏÆ]΃¤Næíx%ÝûíᔘtCñ+ÊO’ìcF÷À»›Vú/|T€(ñ0On!7ûsÙ”‡ gvW“×l–Ôs�Ž?—½Û@�7Ñ!…ŒÞÊâçÒíß,½=9î4ïs÷Ó} )!2g,Óú°ÉG€þPEg&*¤'}½ óB‡/•�Y9²�ë؈9ý¶u™@ϵ�4÷bJÔ€ÈSÍêb–Üæþ±X1ó�]È3ú. ê¯œï­=‹]X¸KÂ|x wy<¸Çô#î‚ïRxÁîÕê2´¼ÝŠXHymÄŠƒÉxgÓEìÖñõÜŽ6w_ð$çØ�øò Ч·9lÊ.G¹ áã9öwDϺ•þRY…bfc8wTz mM -G}ìš·ZÀÖt½Õèþ&í§ïÐ`Ûú.©K"mõ²±®ÁÚzð±ß¸š(ü¶oerˆqê‘·�s»á_Z³{œ0A¸_жü”ÀyÉÔfš ßXÎcS…+h«£sj:1R&fïN™Š<„VŸÌo}µ¤b·E¡¶~E#†'‰õ¦ûØm—šµžô:§iɆ2þ{Ô j–mÒ/fk¯µõ3·u öÉÛ8å£ Õᩚ|´ÕŽ¡â /ó«ÛßH÷€�ºv�áˆHQbå,ô4«u-Gó(b?)†8Oãa’-‡—ŒWÔ³ÚÉZç%:¯¸Òªác¡²$’öacO{yc7†18—¬Ó�Öh�­sç0v0³�|TøÌµnŽ?JTYDØ’}Ì Æñj;HZßNvËVïy>lâa{\kkPY)>2ñh¥Gá])"<†ÕhÃF®ÓZoŽ·ª |èNùÞ�¤1|À³PÌÐjï,sìJCÊë‘=šãõOS4¹ãT~ÅX»¸ï¸âîÕæô@(U€6–¨(�g¤mð';ã{Œ�·Æ³Zƒf‡àZ£°ZÎ GÒ˜?@ª¨¿�9î²Ôá¤MäÃ"ÛÒì6™Ï63)`ØgÙÍ�qȲYVDÐ&3Šklç౑M½„PQ›Ó޹—�MMëýÑÍ&à¹=Š:ÖØœŽt'ÌÆyS”å°>Lh%Û�ƒ#È·á);…°©/ÒU,ž<¹t$gñß_:Øp´ /Vµʥסc_&$æ¦�äàÕÂ.Ú +6Û©î�å£Gea½´Z��èn×~õóÒa9`ìï¾õ430Cȱ=@R)%«Kiã9&MÎtdÇC�ÌsZÛÔ{í úÎù“ï¶äñ­×ÓäçCÙ8ã´]+¿1¨öq,RÛ‹+À3X2mÁYj»æs �Ã2^û“Üî?l‡ :XáÓ¡VácëÍEŽ!}xgÝM€±­uMh;ÌW['öå_Ò£ÃçFc æó;y¶”gxþÖþ§|Šœ~fчãà8¯©K袺Á,u;FƒÌîýÞL¸>ïÑ£9'”íªý‘ÀÏŽmðŠÄAÚnâ–Ó’M÷•ÍÍP)ò¯>ÈÄÀ;ÃãþVÞ‰�øpúÆð¶2‰Òä�^LÂ:{T^©¬kFml Ð…Ù'˜@ÐŒÚúÄ” …zа¯¯1_aK¿LÌ0=s%uAJ_…}m™*X§ðF£ÛŸ“�œ÷+µÏc|hjM<8ÛIPdi»@Å∠™Éc<-U ~SM“øûшI«ÝºØEIeÅY:�\MÚòÆxk[_ìbJ±u„·e³æáp¥Wø†Ih‰z’ž�\ µ*·¾ûýg„Ö:ÔÁñÇÉ_½¯=n6îqiPø�u´ã»¸s‹à{ ÕßR>èv—±ZëgÚ/¸ý±ôd6ìxD�톤STž¡çÈ…ÉòϘnñ7lnÈíiî_ÃQ›gÏ`æ×Áƒá¡xzEÐÁÐ3«Œ�[Üxƹ-“AøI,nŸ¨{¤Ä~oÄŠl¯,HUÛú=Ʊ;ÇÖ/&kZ°“‚ée¦µsl%Þ#Ï?<ÿT £I‹whƒ}㠔ƾÞyÆ"s´]ž»ìcçöZvéçòeýÃi_@ ¨ç»"¿“l¿09þwZß–sѧò9žWsìž„ë¬ÚõA�þÖwZö7ÎË]SFá'j ®„zï;­Óó�-)uÈHߟ&=_ýò2ìoLi¶)Ü‚c`ÒË@Ö3kÕ§D@ÈD+̧øh¿ D‘£Í7÷–¯MS óøóîM²‡ãj7“)2vE7œ7ip\Sž®™¦| Á];RÄAª9 ží§gf*œ²+[töè&"~+«±5Á a,²­p"¢›B²BýoX±[›GLÀç~á®Åx´„1*‰z $íÝáƒõ(¾4Ö�WMâ1'®bäÌ{)ºAìÎ(êè|J`÷eõôVŸ�7AÇ>eý“虣¯¹¦ˆ½ŠÑOï•ò¤N´wöšñª�K˜-‹ï²×`Ê»0ˆ—>oˆÆiçÝÒ,˜m¼M-/Ñ*++@»Kz-È™a ¤¨qÓbá=)cÜ�q‰Í8={-î¶ýÁ ¸Ú€8ÑGèµ.…Ò²1‚¥ÿƒÌéoûĆ�wˆošfßGØ­�ë!fk«¦L¶äc•tmn´Â.)I�ÚòQ&9sY´.îH–”Qk¤ÓÏI½X"CC‰I¡ !ùúßEEAÚ8lˆuW«]^ŸËþ溠êÝp½N7»k(Çó®GU,P™í.“ùõ6/ËvIбr® ³]¨2ÝÚ.%ˆ¿­Þ5òýÁ›ÖÏÒ‚ä Ï?×ã‡çûz�oaÇ+ °}T`oÊf}Ë‚¥DøÍ&!ÓŽr8W{£1(ó=ãaq€ñ…1’†\Á[ 4ú!”+áFàHîŽþëÓa‡P1C( Ú¯èØ2L¯jšÌ°�Òý_†“€šÑ’Ƴâ<>r ý®=õyƒ[}Ê1ë•)–A–è«ñr+ ×i?nׯ&Ü{æñ½ñ^ßô•A©åC.åÔ¶ýŸr5@К"Ön3µ=M0¯ ãÚûƒ•Rë‘1mòSÞ­q¤p¹ô—^µîˆ§îµ>�¡Æ7Ø8Êh¬Rp®*&12h6wS° Ê+k ÜbbHpX€DÓ]½.ìB¬uXTµýÙÄæYÐ °µÛÞ0!«öÓ¹“€'½Â×uû¶—|¤>ìÓŠPBåY«lÎÅø–† ¼ µîõ—0£€ƒR\˜,·“€´ªúAZ`S°žZuŽKyc@Õ$íßÁ ÿƒAÝü¦+$A!´6ODè ¡„K�©:Ó”VEŒv‹ðo¼ðø/ˆ"‰—ßwîÁòAÞ¹$ØPÉ{` lñÁ$³ÐÏh€ íÌ ªm�žÐ—"ûǽÞЦ­ßóÒ(~ëh×É%¢´oíâ™IÎw½/Ê4�*/ÞöøQ¡¯ïôF¦�~ÝèÒÒ'æ]ûØIg¼Ö(~ÛHJOháã—ö?jªþE»<]ºÊû•oÞ—ï5#dªÙOÿa!µ!ëþÖùƒe�¥¶Ç‡×~Ë;ð耜‹¸¾9.÷-”ýèðœ‹d¾90÷-ôúø�Üu˜Çš%òóà`\;åý‘a8\6ïDõâU&⣂p�i}KømBûbàx¡ &ÔM#4gº‘spš‰îÃ{ÓQ©v061UªPKö‡û°ïJŽ}gèÞA[ù/þp_ß‚¿1úwêq­ˆËDj§ÖÎzh<°E}Ipú˜H ;Øžâ61A£œÎWì‰èÇT6ú&÷*×Á% �aV£»6§œh±ø'm@h6"Ü6Y³dvHœ>Õ�ë^?7æü½4LƒL0ª�1ÈS‹¿ÄDDâXÕ–õ‡'�ºUÌòº­”Nsv¹Ùæþe`Àòô»‡*O¿g�Òp�|Cx²ßûòø¸ä#Çêßù†Pä/OwôAÃaáÂÁLªæ±:Y->Õ.SÝÞŸª‰|½ø@êmn'(ÿ8±Ÿï#C¤&°O2çUÓ·zÖ�î|é‹�B`“‡Cíª'<úQ{MÂtÇ!ýöÛ!U_»´Þ¯PeT •ÌîŠ6|ü¹*kóôu‘±ìje/Ÿ�ÔiÈ»PÄ?'ñg¨Ò¨–ÅçüMRÚË@1B#¢ sÀÜVÉ}üÃèô`À/EG+Tì,ôÉ÷ º÷‡/à5[y@ ('ÒëŠQèþCØÔ…\}`L)›½°8ûS*£X«è¤ÖjP áV€EÊ©)ׯ×_sÁcx]qŽV® ðÑp¬F`F|ù•uwLfÇñ¶ÙËËÎ ƒ`rQyP ùÚ6ä9;&z1 àÃÓ˜à•—í^¼ú£5ÎyW&™†h,§ÑE?[·Qµ<õÇ•pW€¡USï@„›Ë%\ Ž»é¦?Âúgï¯�-*¬Â²ln4\¹RìÊ‹çvòÐI…`Ç•™ € ¥bMn"»†Þ†+(‡œ›\=5 r ñ™.„Û½ U©é¦ ›6 }ã8•‰å±‹Š-½„2=¾0ñèºÒRŸÏOÖù€íX3“ó^âèß’é¢íÅïíâ�“+AFfŽÖ°uº×8÷ííW.Šídõ#uCß±µbtI¹Ù¼w7ïú1¦ó??¢ÿÓÉõÉû`r§)K¶ „ÞÃcT×:€aoƒ þ|f�Ú}LσË(X½íÖë²Å"42#Öi B±FÊËÂÜw̱²^ðK¼.yÖÐøßÈÁ\K7DÂPË N'°ã{a¯¦†z¥epðaA VàC¢å†³æ•£<¡ãûH·)¤A¢F;Î &úÆ•IµòÊΊ©Ê¾‡X5Æ,AtÈù¹©ïgБyW)€©ì½f<´Äxì"¾W¬ÕË‘¹å®ªPƒ¨õ°_“‰zù­…YÜ� k�õy¹®ä“ôìÚËTuPÏd™†)o~ô›Þa è·�~o˜Q»Äšl¦ö^Ñ_½º¸@¹®¶MÏ<ÙBqQ¤M– D´ç³imàæM x gs«š´~ãB?›^¼ÿ‰-ÁÁ‡³ï'ç“£“‘zí$?÷ŽÝ= �V’�Øiìj á»�™Z9œð㺶4ŠÅÖÍÐÈYkîÌ¥…V†Ã'izžèyñÅí S5”A&ߎƶk–öê¹#ãˆ=Æ,�[ŠÂtÏí•>7ÏwÕgïþêïÕGk¦˜Z/÷A#ŸÙ@7ˆÒñÜ Îe³ö Š’²ÿVòø 0ûÛ˜l¼…ŽjFñò’*• ‹;YãLo xï»årPãÃÔñ�Zn‡·ñ4¹w‰ !�‚gÔ¸yµ\q,"û&1±÷èð¹3ùìö‹=:± ^˜Q7L_‹ÏsB¢ttžr4ùÜþçžÖ�ŠžÕ‚Í"Ñ9< §µ%o>ù�fqboëùsR"3ÕV5¢5»Àp§?Éè]@�&½”ݾè‹g®V™dÏxzGrPË t;0y¡z��N¥"f+0½»úþµ¯ÿ¦½E;8pñKäèë~Çhô޽ŒæÓ’ëøÒ ZdM�†+Œ@ój�£bÔîT˜)RÕRo÷ü—Rp‡Ì´¸M�Û3¤é.ßhž`¡“€Bl…±0e×:Õ›ˆîpþ¬sQ e·f¸¸54oº 1 çi«Ú¨e¿aÏKÍZ Y6„0`¸ ÊZŠ ãð“,ü2ŸÆùÁNžäzƒ„|¦e5­Vˆ�+Ü6€1æ@ì 3�À-´‚môÖ¿$õòðäèÊî$–Û„[ÓjÆgî;œìÅ� ðm÷Â'’¬ÃкìÇH¬Z"x[Åìd„Q‡ZÞ%ð‡‘y—wqyb½¶‘)½ˆ™~á²Ö"»Ú7¢ŠÆg6²Â"» K;Þð[ml�-ÌÞ<Î#xù„&Ü÷âAR‹4ƒ°aë)$ƒl1Œú¾Õ½Ð2\ÐWÈnÎÿú“ \±è/@öÖƒ’UR‘µèJÆõpFÕ·vŽ÷á¾ÉÓf%>Í£3|�Ý'i;º÷Úõg¾¨$ç‹‚DÀ¾éüy»é ½ëzÈ;L@ãMÃÞzá¸vß%'œ-òf„ s ToßÊ‘66·ûmÙ:âjs§s¸f½ùÛ„›x–¼��h:ídš.©jrN]ÑÚq{àÊM‡äXКèÅ3«Èz­u¶†%•õžÖÝ{ÿaQÝ̽ì(ë€ÚÙ…©­»;%%òQ15[¨=Ës„±ŠY/fáš]·u¼€Ø3 �*fWi2³}v÷ÒêR?h´Óq0Á‡ƒ»—{¯wÐ{è\Oɶ—ŽˆßzÓ§u˜Ínêõ °÷½m¿Ùש'ä÷Œƒ7×—|Ì {¬qL~{i¬Þ˜ÉÕ6æ²\Ï’ ò4êÍŒ²Áí8¹ï.ƒþœ<Ÿ{è:¦Ç§$€* u&%~€ÄÏ3h5"é¢ú÷D ,lš®¹{a>[2½Ä?Å©5jqȘÌÅ4øi‡mu�ÄÖ÷¶FÈ‹YUU±=íb:=~^~V3Uԉ̒€|èÿ<>ÿðìôçsc·Ù&WâÏ÷(2L`áÅŠšbÂøŒZã4‘™öÒ‚ÐoˆnwÆ�ˆ-zµâ:ìò¾™-(—z¶s{¬ÕÈYä^ãó‰‘jcŸ|ž¬‹…ó˜›jNÿKõÌfQgŽžÉ_­ëÇf$Þ è½�柸’`ØÍJŠÙâæï½¦Õ7îðÍ'<Ũ²�æ0fMÿ_dÄÃ8�U]$&H=m¹©ƒ, 4*Ë–˜ k�˜2–:‰Ôª÷…™e$2î®è“SÛÛ7^Bî$ü÷瑳̿eš¢OÝ"_qq³�?ZHœ+È&ºÑ»ö_ÁYVòÙȇsë„ZÜcã�]óÍ,Œš8TK³Mh 2Etm®qÚ˜³[_–-’SÆ$‚w3 ?c²›þbU°e{Ã`zÎd”Ì:SÒ‹+eˆÜ�ϰÁèg ÊÑUw—9|½1’R–‰ìPÄÇç{­VG„nG¿¼;þügzìÔ°™j#1iÔ7³½�öÔ’õOŒ�1íÚêea&¢^ú“Ñ!µ=e7ý?H(ØÓjã`îá'—w¯ƒVÌ÷™wûfÖ:ÀÖÞýdø>ˆiཿïl.uºœUîÞÊZ�Öqë¼±±«²Â‰2bDí†iå'£¸,‹rW3Q¼ùÍ+¨Sh2Ôw"Ùg§‹ËoS‚Ì{Ùá÷JpqŠžù8øª"Ê(O¼¾>†)[™*¯LaìÅ –áà¯8…ª`£·9S¨�¥¶ÑUbDñr™0‚‰ãà]Xc4Jô1�&�-PÅu“:74£à—x>Å·‚éôŒT±9œ¬¸½žMÎBà �sÁlàÚvëF7ØDå ØisJ´ä‡hÃl»dqˆ9v$~´¤0wů2«œì£„Q­µÝ†„9L2¸'Ìf}C;'Æ@±¢ å5äÁÝŠF\¨‹Fø-gFÕ³‡Iáå¹-hÿaæÐP顸¹±� ZµL]cJÿÄÇR©)§®§Ã¸èž'÷‰hôì‡çSY``‰§ÀÅä! tSÈo'k÷·ˆRœøôÎý] �ÈDŸÁ½§©B ’¹þØ„…gÓ<`åí¬5GJ•9|hrT-1è�·¨™¤*‘‚}î½#&ò�ïžž—Çõ¼×íAþxWX„p�>²ËÑÎ&eô×Îé›|k?C¿ÄNe‘ôã�+JTpg(`æ—Hg@:uôFDŠÒñ© ÛëeX¶.ÓÜÁ—q[Æ•uFXãm³'Þ7Ê[Ù¯Ó3”šüŒ¦FcÛ—®¯…±‰ÌÙœûŒ„P~Esÿ�×ÌîÓ>üùØô¬ñÀ¸/"ÞÃ:>É_±]"¼3wø«æL}. ¦†¶¿|ú®]W˸Ý;q FÁŽŸ ýŸu 5&E!Äh[rO‡äwÎNòò^`QQö/ö(³*•XÓÎ~ëjR?¥ïÈ¿ÜìdäkÆ…S×J—6„�5üôû?êY¨ãx\>}È÷B_ ?éCŒØ>U]&‹zôâA¬9Ñóÿñ?F:wGúÐbqƒ?àL¯Ëÿ’C‹9üû~þë¯wLn–‚AÆõŸÈ\—#¦(Å+ìî3º ïÃr†ÿ†ÀÙl*nÍ ½ ¼˜%Ìæáì2拳y<;l²ÿ…ï�öªušÔOF³ÑS9út‰>n6øì²®`h>( ïÎëÊúæ9¸¢/á5ö½ÄÞa¯°7Œ…ÔK¶Œ‹E¸šáìâfÖ³s6­Ù{�kì�"D4{Þ'ÌÎ�]ÇYÖÜÏ&ܫꢚoÐøHgÇ«$›� Å"›M¤_{eù4_#û¾ü<|¾ _†OÂçä·à;ð ø ÝY>ÆÛö_ŒÉáÌî×ÙõþèÝ»ý,�Ï®§üÏûUÅþº?::Ú;?ßûÈþa…¿çìŸ@üÀüI †Á_DìŸqÐý5xBi+ä&ì?Ü4ŒúÝü÷ŠPõ0ÐQãß¹Ûr4f'ÀÔ ª.a>3ÞØ3ü¡Èw³I�þ{$ÿº¤ßbšÓx¹ÄßÑ_"ú Ï[³ë¿=§ß†öÇsü üqC?^Föƒ þNþà×qQFŽî¶…è~ýþ×r�_¡=,⎟Ôãœñ²ñïž³kôë“òÉzýãÓ§¿þúÿ=ý�ÿçÙ³ÿÆö¥)ñ9c2̘üpuö§ª\Ì’ÈguÉÿû¥Þ»yýÇ?½zñâù«Å«—üñ§½¿U{Y¸þÿPKÒV1]Ä"’Fí Cimunify-security/assets/ui-app/assets/static/nav-root/manifest.jsonUT ëÆ«jëÆ«jux è‡�–ÛrÛ Eßó™>Ml˜ë7óôåsø|�7›8  ŸOR}|ÛwûÛ•ˆn.1hDßh.º¤æ$È•˜¤@%BF@& r$ÑaÚrÉ ’cŠC�Þ’ W)ÝЦ�=$B°4Ø$È•: ´»â8¥MzcI�+a"H!ÁíNêY‚æ1 r%¥I {Ôu„)¦µ Akúh®D°À­¤ )€¡à:mç$È•4Ç ‘®ïøÞu%"=²é[s%�) € iKBÐ÷×J¤ßä?jÇ  ÍZ,;üy@¶®•šV{©¶ål•7žy•CÞÍ'Çà�?Ì'kj­÷ËEûå¶ ÈµkÕõ‹^fk^&fÕ6°±Ä2›ê+À¨þ¶h ¯… \7ÚäÊ6{¡f£L½Ÿóº>:ï×_Ö]aW&n*qÙ†q7WêÝVƒeû0²™Â%uöã¼òCëwdv˜ Áoigæe›ØxWg¼%Ù”ˆxs=/‡ÖìŽËLÂ_Táž¾dº~û¬…1çs¶ä-Üù¹û­ÝùÎJoÌ\&¾Œ¦pûQw½lóQ÷³gꉭN¤¹ý<Š5ü¥Ñ&ôãMÌDœÐ�£NèÇ�˜‰< {`&úD€~ü €™ú1(f¢P¸9‰"@?ÀL4Šíñ-g"RĤ€™�J>¶,ù…þ;9Ý ?PKÒV1]¼˜pß–Z^^imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_it_i18n_txt.71f131973ef0b990.jsUT ëÆ«jëÆ«jux 臼\mwÛ¶’þ+¬>4öFq›îvo¯s²9–,ËŠ%Y1iç6iN/DB `A@Žíæ¿ß™õbg(§Ýsú%±„Á`0óÌ Þ´WÉbö¾u-§¥H?¾®Œ.µX>³Æ¸Ö‡—»ÿøãý‡ýƒÒWó½÷ï[•MUÏÒ¿*þwŸ€¦}÷Ã�?ýp¸§Ûª-÷_þß�Üûñžÿïþ‹¥°‘{9ó:uÊhlß¿ÃïäËobg•Î÷ôþAUÊíµZûïŸxa¥óVGêÕóç/_ê?þø)üû}ýþÿªµú¦uØ2n.më ¿ýV¾j-×ß~nÛ{·eÛµíþ�šíÝ}>˜‹êüZO¬)¥u7©(Š=×Öûûõðî½þðB}ûíž~öR…y˜—øØý•„&R@÷ʽ7Ý ú¹mŒIã}#Wlõ ø¨ª±ÃÄ÷ÝÜšëHËë¨g­±{­®ÐO\$ʲ¸‰ÌlVIwØz*Ÿ¶"g"as¿�ÚEÿn=UO[ÿŽ®•›GÚèg¾· ¦-EáeÔzú:>T¤`5»�¡ž¢vW‚ëgòs[<°JhkÐŒͼR ’CUOô…>�ŸJc]õòN›êðNdYb¹6VUå7#¬ø·Žò\y�*¶"*€JD™ŠvN�ÕÒB íK®óÄC‡TÁíž>H�×®ý=XõîûÃV« Æ?lÉB¢’ |D9×_çýÏí >9ɱîj¡4È"gJ+§–{I�'·B»_Gi*«ŠëÜ5:•0‹â‰ ¥fQÂP†ú~6G·ðYáìsëËif)Ó)À ¹qiP_Z¢î¦H… \÷;›=Úm­òiaÒt3è/p¢J³ê©YàtR‹u×·sÅ+õÞÀ×HUËlÃé¤pVF‚4ƒ,q„ÝÊ¿P o– Ê·²r€Æk»'x¡J ²š÷æY³9·*Šâ;à9S…\C?D¦æ)¿ ­Rp¼Äô›P32™š�³ã|S…�aƒŸºóФ¼�\ç‰èÎÞ$æ"Ì”õ>k–:ØõLÁT ©¥´Pʨ÷t¤¿h Øô%0]*y}óä^©Ê‹BÝÞŠˆôòK��ˆ¢’S¡JÖâ½T"B:Õ„0yi"ÞÔ×Á¨P©Ô;ð›nѰ…Ò¬§uMQÈ\„Pò¹­á/ŽllGÓ=¼Ë8Â��Ü‹®Çy.Ÿ+c5ò�)ˇɉU "0Þº9G�p&ÙfVeüXWRK›ýòI¦8SÁ�tY¸04í‰f#öÂè†!‡^ËÕˆ�*1'�úV"Ò–¼fÖé|d4?}`U¹�Çèxî]f®5Uï–œ|U_¹¡Ÿ=6hì¶\ª‡�*Í SŠÅT�Y*™ÂüYj!ߤÇc–GE·œ+ËòI¤½5DàmÕÀ§¯ ~®T F”±‚TÕ!¸‚±9÷Š/Š[ÏWƯc—YÓ´è¿T�£ü�AôI�›u0x À)€ûOHÂÎá!líÛË&%�k%]ËL7SJ›šbE ¼AL`å“ZÈXl´: MQg%IZŸAàñŸØÈƒ­Clåzüjô¯%dEŶ/:GçúÙ$ÐWÄȃÀ¶0¹JYaë^à]ÝmRìZ Èã\Ÿt‚-i3eeêDõ mj>ÂæMÈ׈'ذ¦ u³¡¬�E%–¿j_°é‘ÃÌ]Jžó˜tP™Ò@�R�ï-ÔÐÉM)Ûw  w����Í n¿K"ÛÔ›úµG_¢+´çòGxlA»fÀ¼únƒë0½Ô3ð”ªf3gg>c*‚|þQf,Í©"”‰ÁO�û¡(¸ƒâ³ÚªG97EÆ×aÈœ–jíLV©UX�aœ…È9k‘ÈO|ußï.ÇýA4˜|û©–Xì©ò«L(J8¾^X¯¶¸CÖ‡)‚&búç'WÓ’²¾ŒRÉ\É*Bªo¢¥²¹)¨ŒL`!X‘4u¡«�£VFÝÁñÅAàý˜H“HŠ,C´ Â¥U£<"Âfª¼,„¢ïC-�²Áš-rÞ¬óekGªX=4P0U¥L©„\¾\þ+ãÖê΃zôG$FHQzJÙÜ™tÑ”>c/�'h¹L50ÅÔx7 pÊÍY‚r�+9š<|Äúñ�ëTI3G/PåU¨GŸ¶7€å#ód2t�0dÈKlg3¶0ª¨*y;¬\(´r¤ýõbª «¥ï-™êdÄ^äw/ÑqaAªÁ™à¡&oaWsÁ¤ÈjPr§ó »(ŽO¿› â0ÈãÔ`ežCµ"@7`Q ä7øäE�*š5� A´»ÓB&è;hußdúU¯,†Lª$¹h¤—�Kó¥ ט0‹Ú ôçÞ=ÖÁƒ3p;Øî°ú]ìë+öulâÁVÖäöß a&gJ�FcïðΔõº’9Ÿ¼ ,^çÊW€�JKÔ®®pá��ñWQy,N2Ìn;‚ìˆv5G½3Bj€bH˜’*�²L² 1£&î „¹à£�¼È�BÃïð/ø¶^» ²¦*�iæœx×¾Í6çŒa½aÆŠY³ a{›—UÁø�LѺ!�ô2ÕÀ~½îÆ…Ä*éPȺ¯“�@v+¿û:u3œvlM@¤Ü–fUzà×!—Ô TŠ|!ÑÿG_3ã¯Â_œõaëË Ò†ÌfôÇ‘óÅÈ+øÐbÁOŠ/›Ö‰ˆðáÝLP%vnlú<�Vr½Âây.$iòC~¿äaq¡ (8VúÞ‘ò©žIŒ�+Þpk“†F1S¯6†Ñ `/?­«Ü|0"5ì;unnC¼p–¶y¶RÈÝ#‰»’šJnТìÀR›:N®~'J +” Ý³õ `k¢©)Ú{Plìïª\CÆü"»ÝOoÿdêÐö×§²÷Vâýçñ ¡ÿ•™|QÜ/ þþÉüu£<¬V°ú…Ø”Çd¿sRT|)ÿÆË°¹1Gb‘ ¼€¬iõ¶™ªJ£Õ”öi‘1ÄR{sxwtÌ4¨“­EÇ>ê±Z[(<퉎¬˜ªè\�ö„å5ËçBc@ÑHÓçÇs*÷"’QGØ©ÏhäO 56¤F$ò›~S�ÚGl»Å�9j?oÀöo$Ö© ˸£ ~€W9tîpó{Œ ( ‡~T%,'�G€Äç²±Š=¢xËËâ§Ôú/6¯Tˆì_>¥?°0B²wü9—´S¡~#ûuŽØm'S�N£ž½•¹Y†¹w:üðÊ îHuXèu„ΠȇÕIXôud‘+¬þ;,à:Þ~ÄJâDСÃ"®ã‹\åvNy9æV(š2 Dâ ¾óšR‡Þ,Jc`íž�2ÜRé? ¹¸AZ±iÁ%:c¶‘$ èŽ)Ô2L”EtÇhá¬Å RÔ󏿄ª|÷± óŽU8ôé° ý‰… ;³àîÌ}ˆ¹ãªk€ô3K $„k_Uaj,r(êE첨íÒk·Ûì]“š*z&�—Î? 5‹[(ms„[—Åä…,ýtZ`Ô…è)ƒ|Ÿgñ¹Õ î5w«ñJCIñºË‚µKç¸Ù“£%d8âs¶kÆæ#’°Àí›wY¤v1¦y4j—Ej7D†.‹Ó®)ÌbJÖ첈 “¸§*]6"vC¸ë^ñÒ•÷a(vwYÔu½à�ÿ¤£Æ I¥ñ*ß  Ÿ]UZâÂ"óhBÇl¨ëƒï×éì˜ 3}:0ÅfÖ¢ÇÐy!l�µÙ1–A§Ç¬]¶D]Ñ’�ùdQä2„ÕëT½ÔCøÇÛ==¾²€b%Ì·ÇúE/WŽö{{,FzV9+©;ŸzK‘“ô=6(õàsI£Ÿ°~t¢4¦Ê@ÁÚãDý†Ö8Ùá_'¢øX'ÜÖ$1Ÿ3 ‹BªBU4Rx%C¬;aÍ´âm bò„ÕΉ:%}6 öÅÔ ÷öÙÔ}!sm¨ØCý÷Ù(Ø·²Ž©ý<› Ø8Ù÷7€®h†‚†“á> ƒ¾—VW“fŸ ‰ýy@iŸµc a¨–)döÙ@×EnŒÝg ÕuÀê³á®ï•&,ö'|3hªð%Q°©90ˆz¿{�Ëÿnú¬iAñµeYÜ×z§\û ’{ÀK ¼Vé|Õ€ XÏañôœ*ã>{�b��l` 3yÖQ°<ñHÅÆÌ`}h>eÝç’`tÿ «q È „cÕqÊçkÄ-éé”�æ©K™SvŠ—:Ÿ×ÑmÀÂ릕›XXĵ³°TVH²ó€…Ü:ýŒ¨x°jÔ¨°‘"Ü+Ä“‰¦ð‡ÐZÕ OÎS‰ÇÔŸnŠ X\¬øYC#IÆâpP­§ÏêàêõÌkV{¯a5MNÿš÷G%gÈe¯r†°¹¨ær¡ÂW_›Õ)ö5ï§J”eظ?c¥:«”gl¨:S6Ÿ«ÛÕøŒ WP9MMŒglÄ.jvÿÎøÚË,Œ¥uÕ‹ ZqDg�=±´Ë¥"ZvÆ]9”B”ƒd¬¥·kTQ'¤eÀ™¿×ÂfÖóëÊSÜ,‚’ØÚâLÜŠ�+=Ù 6¤‚!›À† ABõ�-M $†>ÄÑ!k†¡’éÜI]9I«»!¨b«¢¡Ð‰«:¥$CÖO†²2”f‡¬›Ü×üP9_#xÈÆ­!,“äbê-­!†lu<”nUy Y�ÈÔ:b?‚Â#\G±ÊÁ*34³�sdŠL„Uêˆõ1¼H&µÌ©¦±µC@8^"ÓŒXoAÎÍE• ,AG¬/,Ÿj.ŠÉX#�D*3ÔØ¶£ŒØ >‚ †�¬ãŽ çA‰½ïx¨õq�9bx„KÀGlp�hÝ2b}z=+EÇ×±ÄóNI@×±‘>h3„Ô‹ä‘ð”D‚`,˜Ñv[èÿ#Р!:G±ø c(�®=bÑ ýñ ÛÙðí⚦É.êF²ªT€'‹}è^gõ™FæKAâ0fýc,µÿŒYÿ{¼œÛ…q²Ú ǬŒUNo#Ƭ „ê°83®áǬ�0äÆxOAäž(X@O¨#êÐÒ°p)–2¤´1‹È±,º×˜ÅÕlŽ•â˜EÄXy4ö˜µFÐå;¹*5ÎY¿;©fšku(Ý�°V˜Hû˧Ù?±�µÃ•êÀí•Ì„5ÆD”LF"¯ 60�¨B•¥¢JdÂÆ¤É&?NxÙ¢†×„_zR �(ðV eÂHá5ZNøJ“¢ÊD¹T(Kd¬1ñ|ÃàÖ :È„ t±zÛ|ÂÆb’CH&&¬›Z^LX/žTcýø†µúá(/\°Fâæ“×*”‚|�iVÛ5üþƒ´! \°°¾Xíg^°Ó»ð5¢cV|:�°¦óY¸M³eÐjåW@ÅHS‰ùrHÞ¤s¼e„Q7f³6, k1«¯x)ÃR+f�+�‹’îI¶c~[ ²'x@GLØPfYWß1»/E1W¼¯…†üw#IbÖ}¶Ê*d,RÊ{1¿ƒ�>墬uØàNšR.U�1_—cUCq0f¢BÖ�Y׊!5âó$à!‡FÚZßǬsÅ¿|’ÿm¢Ä,ð<´5Ál™NUI¬Ù¬Û+FËzC/fSkŠ2¼¢MŠg=3V!Ål<�¯aÍ^ï˜%;¶êo?â⦠k@Z$üNý\'6r'ùD}²ÌD8ðÃK{u,Ç”—°�N Ø ‹æD¨õvRÂb5¿©uüNX„&æ£ !.aQ™(XF=z¤•°�D%á èj” „¹ˆ~ jQje! C¤óЛÅZˆU™@ŸLÌT�±K<¾ˆÄf6‚J¯Ã,XÜ$BßÖÑø’ ˜—)ñQ;kÏË¼Ž·—�{1¯Šãµ‰·í¡°Î$^> [¸t0ŽÇ.á¨ñ.º¡FÖE.­¯s×%;ÙËÛ©\ƒçŠ?Áà †LÃrøªa9Œž{…Ï=à…­ÝP}\±ß+ÝB½€½b4v%mØì>͉'àï÷Ø>3¿b‘{¥¤Ó´yÅfØ+¡½p©·¬ÿ¿…úBa9ñÎ4Þ6ŸáCë¿X7=3•Á7míŸYEýŒOZ±µa-tc]¶}Çšú¬ÆÓ;˜ïVûÒïX·y§S1½¦‹ ™¨æS ß,Ueìú�Áî—eY¹`C—àï“=çèþ+:†2¹�xkED^G&ÏqKoÄ,LfèÚ4^=ƒ|Ÿ zcM—àï³þ�g=ñ¯g/Jˆí‹ú"£¥K= oƒ×±Õ‚»†7½ágCf"lµà%ëÊO“·o‘9ˆ ú«„¼À­é²ö½Ð�7 ¬’,*¨ñrÐ`ÑxvûÐõ�¹ ç!”Áßñîa‹:¤»ŒÚ/¦ÒžÏè»ês\ZeMu£j…Ç:øô–£;‡ë§,�21,PW�[ÚÎ8þYkbÂQêçö\,åX^vIx*‚Ù æÒ$Q±÷3IæÍäîÄÔƒzù;˜x§šñ\=­~gÓør{ýtE•áâóöëíéÍQ=ÒŽ[•3ºú˜ *¥%âßôhf üÀÇ›w<ß=ìñVeà+�ô¢.Š�µf؉n)%ƒÒ³á ÓmσöBÖר*©´ •oEᓳÙLB~qá»]·SûcwôäpQÝY¨hN¯K·|Y„[|¹Ëp=}9SÞØ=J›Â×1(zmWS zÙ¡ôµvHP|ZÑL¼z`A¤Øg}xuG¯aÿ…,$ø‹ÀÇáV.ñlŒ÷d= dSkÙȹ| šVA*PžYwpópq«Â'ÖÊñO^×Bd, ÐËl÷me´-m„ŸÇq¯î&ã-&ÈUeREaܯdŠF_l^Ò‰8¼ “Ù[a5>ôàw{¢l�Koª5 "¨PÂExQ¤C;™¿ ‰ Ÿ©9Ýž®/UËó"�ñ<’ya¥–¦íèxuÃA‚×ÎéêûµªäŽYàO3(ú)�6J³^Øú©Èj~÷^¡­dÝ•Ÿ¶\„nÎj5¼;¿ò—ëf¡6}ñeÖ=½¶£ ïÜ:+§,ÈÑ¢SbÌÄõXý¤ÁAMPZ¨2¨fº÷ÍnýÈ/qPï·ÊÍégbüU†GyA�²fD÷‰ë_høò÷Aè÷6¾R¶í_ÝØêýçe[3j’M›¸öÊ?}+ü5†­ÈºyÛ‡S˜)Z­¼äà+¢û„|ïy´ÉÄþú­Ç^xl‹ßÊÿ´÷®Ým#Y¶à÷ù(öê+»“’ì|ÔCÝU9²6oI–J”�«zå,-ˆ€$´I€’²•rþ÷9ûœ�äÌêê¹S5s;e ÄóÄyîýœ«=q$>!mDjqÑŸ\êÚvøÑ¦žá)ûe¶?ÍY»FæÌÂÇeä�0W¤&b“„*¹>‹&‘… ÄýªZ; 'vWZú% p®è¨}­kNêfm��7Åù›8C|è¶ÑèZ�{ê?µ¼/¢j½ù‚D}…ŽZ% ËÛpËVO¡°ªŽ®G/üMùf–4ù êÙÚQÕ«éR¡G>�sÉR·fÈg•¤KÎÄ_.Ó[öÂ,V·ˆY̤~TŠŽHî®ômšt‘ÏXC�.$ d¸¼ïº^-󛪞äW)}dòaÑY)°�ç&w<(z“6<¡ÿ›.0âÅ*ù˜_ãp-IXÓäàtL§æ^yç�–wæÞªxÓFYã|‚x׃”¨±éQÛô[é|IVÆ•–£wÎÎ=| n8í{‡Ö ž[žÔTp�º•š.ü!KèHñ¸/²ºˆS0«ð�²â]pSÐëã9]wãI�çåú&˪ o™/”m¸½ECþÜx»cÒUø¯ôÍÇ¡‰Óг+\ßý·e—Ο `õÈ…+KˆRö$_1¾Ï¦+›ŽßüöEòªZnæË|Bó¼Óø—(L+²ºq³Q}c HhIÅ ‰lŸZg „­KNû‰aB›&�ð5uµ¢éÍ9Œ”–Dÿýýo+@9Ù*Õ¢¤Í8SÓx±2ö�Ý 4(Qòn§Õ5)òÃdµ,¸IÕV ˜iJáºõÞ™ˆÒ©�½³Õ¾°Þ&~µÔ¢nì¿ —Ù¢U н-;X–¼õ±¬w™?©‹hµ™d‚cdž%ÇŠÑ®’Æy£,s†poÈ�Ò§fZÓ‹çË…Y þ‚�C>-3Î áÖð#–”¶®Ÿ|ªgêÖ©ø¦©˜l,ÉÔ�°ºÿö—Ü/•ùêùºØ «Ó÷¹œþ’c¸—C½Hé÷«2ñ>©ÛdJ~EMµVËs$½íÍd#±’ñ�nÈ–†irœ“¤ ;np¯rÍõ}²¢¹äF©MÜî#¯7ô§N.ýÆ5¶3wb’•Þµ�“•¸$Û(ì?œÏSZøz&º»||î¿å*¾£«hS}H#ýÛLŠZ_çUØ÷ñ–ô’vàÚþ7ZOh‚×ÏU|_U7W©*eÏ:¼¡ «7¢™·ÙÖ¯±Ð±¢å”^ ò¹Î‘ZyH®ÏÞý>ä?U)·’ܓڇgãÆSbáÒ"3’;ɘØ@u‘Ï‹iu[… 9ÖÒÆ¼Foæ$’»î:ñËé{mÒoíA»ŠÙ½o�É}gP=¸°JI]ÂJšŽW•ÆännfõÜÔ´ @@J?¯]û]#?ö{!oðq; ³ú—O@M¿½OŸ>+dyåOþi:ýˆvô«UÛØ7ŸýyHb/Ÿô=€V±QÝ×uñGz"( B±Éñåùx)ÃäüŒ~�îŸ'ùd²³¦@ËŽ{žÛ=°¤¨ÄUtPž6ƒ·1Ä• ·{ÆPZù^ =CoЯîù÷EeîÆœEhî.¢ÂœÞ.õÞ;òm Àì%vaf߃3ÈàótvuGb¸k5~¡Òg·0=Ê‚lLmº·6bT’1åƒQEî±7í.|õÍèöFÉ7 !yöfÿôy—ÞÏ/`2›aw ÿ9n ø_Õpÿ£ÒÅÝPž,þ˜ö¾áì΀�µ6{—ó)"_ÛkZVcçûV%«ÀI‰,âaô˜ðå»ä>®=ä`Ñÿ>t*vg�=u�În¨·"q2wµ‰�²S”–dÿ¦æ¨z¶ƒûT“Ê æÄ ºc½y$ ¯6 `1š³|¶–ò¾14ô„Û¹X÷¹Ye¶é$š�×Sì*ÏÄmøszdVp^Å%³Áo•rÏç+\^7év‘ÁIS…tMêùçeªÀ¾SÓÀNóÛßD¿Mëp‡ —‰Ÿ­o³$±Èð‘ϸEÖ>ðm,`–7]S[‰Ö–§õ¨œ¯–-‘’ƒ"]L6§D.rÒ¢y¾¯&*‹Vå'oý„` ý@s¡Lv=øË‘}tõð§II•@c=å¬X‹ŠÉP‘í0‘~ï[/G“!1i¾Á¹cþÇ+ÀÛ•ÑŒ"Ó€ý– ýëñ½®² ÿˆåKÚ961M`pó1ö÷xkªÍ½!GQ›j¼ŠÁ|ÈÚ‡q€Ó “0ðŸoÙ*üÊ´õôt¯ÔØL›¼>–;2&•÷2×Dâ‡�|U8¹nî'½K†|×êuhô}zšªöé1ñ7·¡¼wâSd^+¦Ñ•¥ 3ö†ì!„©ù²aËñÕ­Ý35½è<!ñI®]npRë­8\¶­7ì\H»ÂRÚÇ~APÚz·úcÏgš×3�Ò¼|8­P¥_ï9j�Ûª‹"â}ª¤kÌ ˆ§rÌ9F â‡T›kQóÆl&œ1ð<Õô†ÝB>-W¦a?šÏJAMGŸn„¸EêÜ#[›DOZOî0¼Æo#Lûòg¤‚•a9ÃÔÓ‰õBR¼6᳘~•?d¹’ªþÂIr&CȬnh<†‚ãéà ¶·6žà3§nÅâÊ®FwqÔX¯á4¶=NdW<#uë¹�Ÿ°\Ó bŠðn9ÓœRÂé¿WÕ*,+öO“Ý„é*8¬3ûGMZ¾¦Çù2ºåuLP÷4)TÉNnê| %˜Cb7ÑLÕ! D"+k-1™òx¹DŒ®‰º-þ\ܧöqº¡ÒÛ<îS4Ý-R(}ÜA»—FvmÏDx ‚�Èßà*l–Øðo­‚í/¾<[ tYÞ†S_½Ý�\(G�]¢dÅ(¼8‘ÛIVÄK>¬ß~™AÄ…¥«$>qÊ€THƒ“%¸|Ž�%߯)E׊LØÆÖ N,2‘©#v~M� o¥ÓJØZà¨È‹û<£[r„E‡­‹‰ .­½NÞ|QÖ¢<¾Í/ N«¥'ÌÐ1Z’g?)¦J[XM&é=Tóµ-«Wʯw�È´‡e+æ»r`f¯ctþìÉœó"–R}(¥—4i…•±çi˜¹å5�èù±äüÍy«Ìµ7ô³C‘à«ëÿÊ'ÁYSñl.ašˆ˜¸È›Åjà0°[uïñ&º ×6ÝßeÒú k™^/â¦ÌAUÏ]px×,s•P¹Xaíã’óÆJ®œWOªûC äm_?÷Îo÷9«æk‹ðÿióLE<ó1„Ňy·@Z×"K"×oãa¯î£¨{}�äìg«‹ÓèÍ {ìðà#}©K%�ÿ:ŸV›¬ü³w½¸k`¾ªoóý¸¨#ÙoCëækaÑ[iæ�ËESCèñ.Žú}Y æ}XZv´F‹Ã•g®:‡ô£ügþ%«é<ΕiDêq‘Oƒ·!ü«2I�x•ŸzOÔÆ›c¤,EvÂOok·4â=““g§¯ž[¥9ÚíqfõgîÈ«‡e$K)T.1 Gè�r ê¹…èsOü•)Ì+¤.‚Ý,ª¿kM—�*ãFÊE—臱·³†˜ŒÊ�“uëÏת¢ƒýË“NÍIà°È-Ö±|ÁË®kÉgöâã |n]3ÑÅ…“Hx�QŽoަÞûR;ÂD-6¤Ì•Û·‘fTÞVuZËu¥{×ÕA!)¹‡–²ÄÜ`\JügÏØ…ÆÒfÆ[Ã÷.oìIgüS 4‡·U¤äg­«×™ñ”�nŠ“˜LŸÞIh+œk˜‘ô‘7½Ò@:ë]áº]MSî}vûá/Kž yæ¬~Wj„(‘ÒÞØøÔu¤@ÎÔœ FèΘL#® ÍÍÆÒUu¸´rÛj²Å*CåIÂän¹$snw÷¶XÞ­®wHrì–·Ÿ¶Q²˜Ò.Ü�ÐtïJÎÆî×_ó/ü£Òmƒÿ}÷ò›¯µSïêàY2QñÏqàåŽ~²¨š¿ß…üÛ¦éÏÄ2_ÕÁ³¿ž(òb��ìd‹m‰éTf£ƒ-­ËH68Ñ I‹|$RmP¦KO:F¸l–oWõ­7¾É4«·éÄßÒºì äÀ.&w±Ü¥ e._I§ô;Úv4ú+ùÖjÂ;wËÙ”UÞ)èBËì= ¯ƒ—J‚Hä-+ÕÃG¸,öGÐ~1:�ú+l5ù•ÎÃöÜ‚tžs(¯Ü¹«>rL‘·Aló3Èl)E|kgÇ£)ò;Ú¶pD °/¸Äõ±&'¹·ÞWNÔ3R—+ÀVSaeÙº]g‹�?ÍÇý}!BÖt„�• LÌc²ü„äI˜È™+Éçýs“ÐÿÌ’B÷m,D{ÒìL£žºä*W¯ ¶JŽIxÎN6áx.1üj¹‰J«�äTÆÒÌõtÙúÌ™ðIÔ"Î^%{õãš`w—ï@éÃÿÿiÂ'‹ÞÉ0ã‹°@ö •®€ËV&¿µÁ§�ô 4ÜòŠù¬[KcÉ6Ì&žĽ/uóUÝÜhÎ�6-X5—ËÙ­HÛ,XÈ•˜º¡é´¸å æ$¸Çu«"¹¥¡«êž1�°ª‰æÐÝrÒ‰©×�6¾œ#5ƒvIžW7K$Šï$¤´ÚŽòæ"•ŽV,«Æá†ÁBÊÃõŠC÷‡Ã e– :º‹B�U 1&V›ÛÿÜ¢àÂúZ"I£š~ÃwŽ{LQŒ±¢�;KûäjaÒe1-3 ¼@óæS¸Ìï«©´G{“.8ÉåR³kK3‡¯ý°<% ŠÑ x$ƒi&J’-Æk¤@§Á~IÔ¼Fµ¨ÈÅOEI§ædK×¾ÒR\%AoÔ#šÍR™b/µ€³UÍÕJ7S «gäÒÑ· Éù2ºø”p.³T£:³ö2’ …»AÕ9u¹õˆ¯íb6B§Õm‹zä*”¸œÐ—_ ÉÏ8óÏãiµ™@ãe�‰/•…R…ñ½Øì ®Œˆç >U^ h©Žt¯¤BÙx¿ æBϪªb·g"•kµb7¯fF.Þуt•§ÕãÜ¥Ëd|t¶E»7ºPšÝ‹;©GžUSp�‚¤Ïœ›R‡3S}"ž øùe`ÃuK£æL�Žs=ïŒ!ÆÜC)8m\Ú–�Èþ2kœËÙ'!qC¡ùT®S¡ù�*IÖzCšK1±ÓÅ¥€\Vv“ríüQ•Zè’µ9>g(Óù©H½žr Ö~÷¯œùžògÑrë^Op_ÕÞ¬H %�6Á5xu‘_WÌåEÂ)øyògÈM%–Äïs.ßÐÝ‘—y¦¾Hì­`û$ö¤A¹&+5ûDéÆ;,‚ÔGé£�AFíDr+íy^½;'éíQ1¯Âˆ‰•×Ör‘�añA»Â}ȰI<õÇfuñݰXÁPäî•5™×‹‹ý~J j—iœ >À��Ú¡Šë��ŒÜèSjÈàG€07ù~|íÁzA„#]²×„¯’Ú„ÜŠšf��y™ûF- DJë“ße¶ÕŠ3 §zEÈ�ÓB¯]ÉÎ�­Ž'“Ù 3ŠQgLª+¸t÷ö–“qm©àýjJûX,RVpŸa’Ü’ƒ\ CWÌ'—/zÁº1²Ì¥,ó�¥7SÆ÷ m,),cÃyªw�ý¨FÆ¥q¶žÉ׈8T :¢Û„Oe]q’I‹D>ñ ìCÒD¬^¥¢%5Vwlá ­fã¶þ)¯«í,}ØÓ‚1½¨i—¨¬PL©n]¨(ÙP‰ŒòE§Ãe7Õ‚Â[àä¤(WŸxé¸|§Î¹b^©ÍMO6Ϫ= «hã0±”�^­ÓfÕOÄDò%tm²Up£Ý‹Öír¢y?Ô´‹ï\i±ÙÊ{V;O&…Ô “•= äÀ—ÝP‹Æé òžâ)ÍonDÝ•Aq^x·€_ŽéÌQá/AñX:³t–µ»ESÿ�¢°„eTh ó첚b ¡û:4!º. F·WXï .èL¿tÉÔ`{ã¡‹¬)l ÎN²Ÿ©�†íÒ"rD „}Zq{®IÊ÷_WÕ-_‡³\Åœ¢4µ.®W,s¬F_M¡ë éÆË‰ªTÑLjͧ‘!Et s)+K¹lŸ¯{ätÿ„½w�ÊX $ãìʾ€µ‘ûY`PÂØ/,ùeì4A2íÅ«í÷œD ”"}W2¤prŒöêaMa)Žô…¤{ΟÀ_4A­°Ð”fsT¬Y –½ü‘…ÁëÕ{®–Ò¢ò=ö&ð—n#`ìÆÚ>@ša-iÃ¥°<ìƒ …Ç�ƒv:"3º!ç$,ˆ@ ‰<�P"Oþ€Ì@4áº^î=^·æ{�T}F)Ì]>ùp]} ^qÀàÄ�›«C¸J>³Ñ_"Ö +äþ<`S :l÷ož��ÖàîC™A+*M`Xõ¦rÖ{Œ¥i[í@…öôïÝ‚«¯éGŸn¡N±”›Ò»]J†á¶*ÒîbN›0÷u%dëᤊsC7›_ºp)Åë­N¤ò³r-ØÍ#Õ”ìÁÁíÎ<4'˪ÃMåÜNöˆéÛ¶Þ%¶“­C3�ÞŒ<Ê Ÿ¿°ÅWgâ‹‹¸¡Çµˆt£+Õ;·)ùG‘’\ß*8’Ä;;6Éë¦Å—¬ÑÏ©Í`…u´¸ú¬j¬%C àÚ9®êwÏu»Õ©.5l²}ØŽÝG‚äxËœä…õpX�\:”UK()¤Oõ9’©É沸Dûï“g¯É4ƒ5þ\AÉ,uµ™ëþ÷ 9â¡V„ž*D q©Ê£OsRD%NSJêÚò›"qšRÞÊ9 ]hªJ‚;[¿`Ï_:ôqaì4xQÞhE!ÿ!À™RÐ/ zxû}œ ’`oLØÏ¥N¢pm©Pb8[°tf`AE¢¯ž½ÝÜêP©X£»HÉ΃ÉÆ0ÀͬPçÆ^ ÐFjú9tõx†ïû£ÃQ2z{|vqºÿŸ£³·£düîäd?9ß¿¤ÁCøŽ!ÇÄÕÊÇÏÄþë×£³‹·ûÉÙžý"§ú»ÌÊÕ¬°vøLá€ååÅþ=¸*±º†)¼(´ @àáŒä™¸6•HÝ¢3²È�£@ÚaÛÉ¿�0ÂÌDâÃö;·øÓºµÎÀ¹eñõi’“bV$±¦Ñˆ‡E¦5…ßL4 æ:e*Tu/‰¡ ëUg8„ÉßýjÀ×ñJMpøyMÌ×Õ.ÊKŒrR}¼lýçMŸ‹+55 b€n¼\x)ªlH6èZ 6as¸pžÎ¸0ôÇñø ;¾Œ3¨€…=ƒopÏõQ4†îN®J;mÃÄ¡§/VÆd$™ýaOt§p²ù¾íéçÜÆyü¹¶¬ÎB©“^›Œ�ÒÙ[ÙMéܧ¼Úê׺h±b³åœmOs*p)CHCJ9EýM ÎsöËýdƒ„¥`WëBp ¯Î–± 5FK9ëéÕ* ZιÓܹ'­/78*OÓúCX‹Û×Fý&YñV;Q Ó"ʼ—Êê=‚XúiØîø�ü\�– ³#8–JJ�ÂT*ÀuL7G‘2æÜíÛԗϪõ‘ù^î›ùRîôš`ì=ø‹Pu·%`µ÷x}ŸíŸù¢ÖIïWÇužï |ÎaMJ$ŸÁÍ;+ùͯÂR¸iÒÚ÷ÍQCG¯ó¸`¹(È|¸÷Vç,©4ËŽ¥d�”š}Î)� ô@½œ=�AzŒÎ™ô‹\µ0$ºÚ£Ã ~¿¥ÚýH|ð·‚x˜ôïœO7mÌð0³£j/9«wDE²±8ž¤)A´UÉÁSFéQÌ´Ò‹ ƒ·ÈTó9¢º°$žÏbð¦¸]ÕNÃðØ>¢çò ×i4œ -Ó‚N§p¯j²c@K\›¸ˆœ„Á>3 pfíªCœ *ÖnÞñ—'ÂàЊø"œÎ ŒmøøÃ›ÑåÑÞ€ÿ3¾:Ù?ø3�{üg0|}±ÿW:‘ô›'o~ß¶¡N¶hÕ¡ws’ ¼;à8ûõ¾®�÷]ÒÉVºv%EpL œÑÒ›/ª´ué’Å|a†$qŽ/ý#Û(”äÌú meîAC¶Å·ÇIj‰·èÑ1P¸~~�F£ ‚/íªœ>œ‚¿-¸y4C�-* d!'£4&”·¿Ý>,öò‡{|5Åm%Ì  ΢ZpUx§6@â£bT/¦ŸÍü=ÞÆêª^¶¹nB-�•¬tŽb×_zzc´À¢ñ[Ûòú~Ó7™V«peþÐk~…-è 5`G¿þð´½)˜B¬e¤,¨‚5¥ª=�dÖ¾sa!"æôŒ1lÍðµÏîBLß‘J'ñÓ<2Ê2�,”’ˆNÃÕ�\¯¥Ê’‹�U--súÒ’­Þ}aeÃßçH˜ …óZí|~¯Ùe’±'_8o÷לëcM�ÕœËÆÐ凧´£Uo°�¼Q2” Îc‡wס5XóùEU…ù衪3“\/àù|`ñ) Ff–]V£Û’Lט¿„!úRKæÄ�f¼ fÉÊò6»»¶i'LRZÛ �I£Þ˜)3Ye-ƒwW±NÊ†Ï ⲎD!·šËHþÉJ‘»ø�ÃŽìñZV»…ÄÚÓ™L… F“+R[3»[p`:»n-FÌèè\§¢²óŒ³‹%h�zëÂYÊ6…àgãX ]æc.¿¥'—«¶-a ;³>f×Wž`Àx©èú6ɸ¯^û Iö*´ÅX?_utŠ;B tP6ÓQUwbNwØ Æsé}~¦°W¾šeqlš}ÍËÒj[IOëÏ�>ÆÒB¿ÝÃ�*ReÓ ‰k^C­ÈÃ2Mö ñÒªÚ¤å<{dxr^• J¿OýŽWªÛÞE^mE¦<]”¨1Eö·m>2×EpiVÓB°ʇ±]¯J\ðAžsÍK_S#Òt’²ŒÃTÚŠB#Ù*ó‡ 8È7þ�MÅìzãùÁP-Cµ7#ñYÉ/Ù57(¥@Ô_:kÞg7žÈñLÄ2 ^6Ö%=YsS$es%æ¤ “$ŠGB7iµâsÇy`+mӳʳmPÀ´*³àÌ».ÌÉk<]o£*·³Á–Ž&PkžÞ‡JÐñªª=-è®é? f3ÏÊ>j¶Ôw0dX×ÿÚÆl6Øt�VXç)&E…ƒDau• ¨„ hµ`ö™ËàáëL/yÃ{„‘�g„CRžÃÕCºöÊêifUŸ=röé£2C:–UÞ;.‹[©¹…ä÷RX¸J<·‘UΈ7TV6£Þ¦O}eœŒ.´ó›61øÖ¦žøÁÂ+Ú*«y‹Ÿ”ô¦k~Æ昄Ž"y EZùsŸRÖ¨ó8Tž¤ O{©U” Ù�Gø¿,?„ï2iK/ƒ·¼Ê Á ×jž�ä\ Ùï%òË)1™-–ãÕ£e#–K ¥«�”1þ/†Ö óÑ4Ëæ ¤B2`– ÍáU°šÃ͢ˆùÇN“ºjÍx2Pú"L‘xýèg“‚þ ¦ÞhÎY`¾ŒQXÐhsmÃøVmaYaîH±¨S oì=ÊÌ\Eüê¸{§»®zîš6®J]“<»J#µÉSqXOb9+ü‡û£é2(OÕ©)®or ÓŽ©�œŠl!ž/‹ù<ÓËŸLU[êD“õª2¦/^8Ú¦vå×»!íÙ|»è“ÇÞŽO®Æsk¹%µÊˆÈñln±¹¢¼û ‚þæ²I¢•*“Þc–„Ñ®–^„ÅÃ¥:ÖЋÝÃW�ŽðIô:Rôí¦?r«¹ëy©Ø46¯ZOQû’�]eUweãÁ¢¼â²¯ˆŸm]öÞœ#C9ÂÓË2"÷pÎyÎk’ƒ_û™W³‡BnØ+.ûŠšV#GÉ3Sºü¼Ñ+5W\8îŒÅY¬¸Hî‰ÀxZšÌÂMLmÖî¶ÛÞSn+Ç0½àñ‘�š¹6³ôÖ+•ÿ_>Cí&ç:WÓ¹Ùš„Åj6K뇽Ç)îµðÇ•e‘ÓK› gnÊŒfVÞ!^M/£6²‰ËêSEª×j{¯Íã»?r,×^n|2¾tÞ[“Í£ÓfHŸšË&¬ }[ôYÝFtôö¤YAÈ~”B édð’õ³íP8Áôæ&ìG%s´V­™ã‘‡l<í=îÛjÊéô›¢%¹Ç3½ÊóÂFTøú1±R^CeÎ]�òyNCMz º?4¡hÀ³ 5Ú(Ä(T_\øv¥WZ*y©~u©“tµHMÊýVÒT16øÃOÓEЫK¿'‹¬–Ê€’½¤š=ÁR î¹Ë*vèpHbÆ9�j>{7‘ù8~˜Á�Þ9HYmâ] U1)|?]O…©Ìó¬Í'¶t¥,Ä vàƒzøù 8£h½³­Z¥^æCq.tÂÔÉ-[Zé_+ƹ.œ'¼Ð£Ø’ÝãA[(Êþ5v‰Çö ‡(•"ÛEãP�-&Qp¼–2Ex‰Ã‰4Ž5¶éšïçì«RáÛÍa狪űþ¼[š´ªÖ è‰pu´¹;g-E½Öm)!×vÓc´P0Ê´f,Þ—Õê -ÇyÞ²9Ö"FjÓÍ�ò¤r7¶cL÷¦ºobkQ d„/÷ö//GïÏLC1èJ_jz~3&^J§ç)â’aÌÿõ(¯CÓÉ öášf“ME*wèH| £ßœ N¼ÍÊ\œKƒa2€Ñ½öýc•Ì�~l�ÒRÞëÃ}Z\]43ß·e �ÏJ=&íüéKsýXîÞу»ÿ¶‹<òÝabþ¹œÍ‡É¿íÌïæ›ýŒ'ŸÞK"¿F— Ðý÷ïGûž)õå×ßž½ÿÚn¾½Á'^P×mDŸ÷¼FØJ˜©Y¾¬‹A§¿7z¦Óc- µÃ˹ßs¿•oõZ#¾ò[‰»¨…ÐkMבyoЯzXéIÃy6ûGãË}•á,ø‹ò¼ÅŽ ‰%ô @ÈœŒ5êù1~x]^E79*Ô×\;áñë,Ô{\T„Ã8зSXø{æ¬qºi›çÉnÕK›åÓϾL³Y¸²Hó€XUw兼ؒÚÄBš“ÞvÇ5ý KbªêýÁ(~I  ÜäÜ!ú¨æÓµSwýøÐ/¹-–Ïr8cDs ˜íà êé·ó2 î  ,Lôn4ÈôIí~ØÇ¶�5ŒÑ»”1eŒFÀ$íC;çt ­ãŠY5j¹E ŒgÅúô© ålÐä8Ý$ÿ\åÿóWx‰ìoãgË®Lœ çãf\•CkåEÜx½S�«Áý`#C<´ŠkXÀ2)'5„ FMÌ:U_�î-{É4ä°[š�b+I:s¾Óº`ÿ-Cr„0Sö¢­JÕ’ˆdÏe{"´ž)ó²AVœÀ6/¨;¡ƒÎô�÷Àd²3è  aR%÷Þ«¬cÚ´óïÙ$Œ%­›nêªýÎh‹¤’Re0¬5-FC|Ylëô¶B™ž†]w�|:ͦ³´‘PžOÌ®a¼�$¶ßs)¼1}å�;XL�^=GzÝ·'çèCý’ž’ô4·o·Îº¢Û&<}¾ïÇÌ¢ ¿®–É»kû†�Å%+Æ6¬Ù;€áÍ/Ç)$:TH~Sx›ûChã+âûyräyúN5Ua‡«I\Vi*5ZÁбÂgÝäƒA·¸_Né÷µÕ¤ï¢ŠóuÞÞÁÊå>\‘¿«Ãóv ðìéÃŒÅ'WK_ìÄÖÑì�ÈË=׿¨t´_ ÍÛÁ¤¸fŸt’j¿_ÑÃÄÒ¡‘ÂÃ’x^äáîäÏ�ÀæJ£ÐáS5fíøño½ó÷ÕUêHïœåFÅ÷ÆÕjWé¶zÒ¼˜ ¸Æf‹§9n<íÆÿK$�ÔÄÄ÷ɸñ9w[w[‚úP •QÐhä—ž4‘E¸�xvjàù_g2[’T²Ð<;„ýa±<ˆß^HÀªÑ Ó„�'áu}GZBµÑL[ÜÇÓ0€½nZ¡! K*‰ßÍÀœ ("EIäCjØÒ�D[Òéܺiò-&înŽúÖýQ»�©µ{*¼ô*šü†‘T§¹’S­½LØ0Žâ•®©h ¹¨sŽŒÀ ÓYS$Póö¢0NxV§ž&ɶ[ Þç÷ùº�9n  ­;´ÊÉÁ™–ŸhMñI,œm 6éÙkð˜äãhQ ³`c€/εOŸ¬óÑbhäº~@ÒRan*kÈêŸËœn}Φ™Ú2V ÇÌkqÄ*âŸÐWfŠx±|+ЉfòÔ¬öŽ™ ˜G@Р%Ži‘·r@ãûß6 x O ìÊÀ�Köߢšº:ãÿÀ9�d!%U6‹T“Fë<¢[Ð_8'S„š™�榯¯‡PÏ‘€ò¥UÝ6P�Cœ'·ZoËÝh£�BF§™T„UZg0- â‰ë Á(Ñä@Áy]æfü'mÁ¸/I~æiy\„“WNr=lž±!‡xz�€4ÙÖ{%¼¬.Ó`±ˆ±7�+c;ÙPR eEïØ2°Nq(³aëywqâí¼^9t²Ñ²ý0®þhRYâàQï„íd +Ì|to-9Y£R¤ßB’ŒZ³¾F^æŠTÑÆ™)QbËÝ`> hHéÙ‰r…Ã$¨8®=‚sËä—ç­ ]Zéy´>óMG”™%CP(æD‹xÈY¸ÒÐÐs¶ð’¼Í—: Hv˜ –K²¸¯ÞYô ð¬·Ýˆå[ï ºbàWýHè| º¸ò{ú�µz_è ‡í70àpÐW²´è?aÊ1R„¼ºP~‰ NX¼‹¿¾Jqeø¬*¸ê…&Ó~ŒtùÔªÄú� ›Þ~¯YÄžSÓOJ£Y±ÊÅä ïf²]Pn¾â “ɤb3—FJ® ‡9‡·hêÛsÐ¥¶P}àÁîæ71$®M”õád¶h?š§c°èÈ •ŸBÕœr•È3Ú“?Ý¢ {.l¤6q¯$ž~'ÏõàîU‡JZÍm|i4ÅÅxH‚zU±ƒv1ÕÏ­ÈYŠÖ‡4�¢'ß½_c��4”� õ¾mâÂlªÛt($L!fÒáj”�– ªoÑçI§ÅïM…ç$RLÜ ËÝNL‰<ýØ@>mêpqú x‘r[ºߟ”Çú»ÿÅRŸŠN\Ù2äÔAlÃÓ¿Á!h}`f¢{ÏLÎ=ª8˜&iMµ•Ï2�Ð@n…5¼£J–5Ýÿ›{g"Tçe˜ûæKF Q ”RÀÇJ@ ˜õò—B¼^Í!wâ¼'L0‹G°fZæó‰}i@)šõRæ*²¤‰ƒ*‰O«¹ñ4ï:ÚËB8gjäqžOèö>Š©%_-v´|ÚÒÜh÷7Êý±ö`¨�´}jŠŽ2»82 ù”IÌŒ[R�]ÝVÓ´5P�Y¢^²éçÑZò‹õ%gU¶s^°Þqå˜\Tg´;Vð>µ Pž‹Cd’‚¯_XB á•L��öN”I‰çªXg€´ôC¾RUA‘wtW ™žcUnUà�‘ª?f¦Dg 0$u\¤Ø�f[Ç ¤o_|»§æp’LRç÷Ó,�ŸQÆ”ÔÜ=¦q®z•…²?îÄâÜZÎ'fÕðÐZ¤Óxë\^¤œN†m¾�+Å êáð¶ GpŠ¿ôr¼ŠÈÄà(üP˜Ù†Še³gBØa´+ ˤSDZ¹ç•wö˜DIü.\ƃ÷©è5J�{�îÎ¢Š¿&UBk ÛÿQIÍŦm¸ÉHìô`Œ˜Ô )n^<#6²0ªç€BðïÂ/�_§ÁOë¨iyQw‹5x5Údlãl9än12°ÚdàWŠÂ¶`5E~壮I;}ØGÅÑ�:¶g“hØs�M§Ÿ´Æ Ä W îfæ¢ÿ; -ˆåŒªÙ <+–HìµäÚ�ë)ÎñÞú¼V²tZ>1|tdb›ÆË0½ßóBûbÃy6¼g±71G=ï]s§ˆ«‚6…]ô½��Å´†4ú´ 3O>øÓ_aè§O: )é· ÿ?½<¡1«Çˆ6値À6£™m3Bdpø[†E ]ÿ"Ùy¶µÞc´¨ÎDùíZ2Àÿ¨-²š¶©¬úÀÓÙerd!›#[7:`ã·U`ÝYS`\çóiúMÓ>Ztœ/ïa£7šî¤é’­~¯Ü­q ¡ôMßo) vo‹¢mð!ÍÛy~RÝ.Ž«º­: 9g¦‚ù�5w)sþÅ(Æm/Å›«68èMW“%Ðci6‘ÝZUû~;³ù˾“Dë=N‹Å ”}ÉÒ¬³" ´0 Á·Â�­0̬ýetÄ†Ž•ÒæRÊJîFK)€£ßpÏ…¯ÿAþ§ÓE~^�~ý¾]‘*ï‹JŠi�.ÁP0_3¢“UõS žÖR·Þdøm ­ÖZ»=/ØŽ66ã·À–ž>0Ýf« LÌZé[TJáºø°B_Öj‹E…$ŸyÖ€§næþ†¾¡y¿i'fuÔÆ^¢"1,å!s~FB1:-½¶9s,<­•dkUÜ-ÏÎÊi˜tIšq (–ÑFK?;é#S<„aè…l�­¤aN;¨®ÊXZ(^Ôr¶¥mim�>étÎäO§l£š‚õ/œ6Ow6×6iöÊÒIK7Û𑳰dÂüŽþ_Á¹»Z*ÚGÆØÕ£óa2SB’UÙôëÈm‘ºDœÈ¨: u!\Ý¡`þñÕì:¯Ïn.‹Yx«rlþV\8)â¼cï'ò˜ð-…WúL`VÑœÅ=Sã mêàihLvQ8Šk'‰~�m�³kÙ4…Å’¿xÛ¸–z°ûzÁ/�æˆÙÿÓñ¤)Ø7 DÊ®­k�'ýã2²�PUµ{V›I6ŒW0¼C�¿©˜d&| ιDÑÛ×jåÀŽ­œd’‰´sWö„SˆbëV‘‡}ø‰ºéúxR„ýÜg 0û@¼Ías¤ õÝìÈ'oEjñ÷ãÁ]jcã57ï/è´‹J»²ss3¡Ç½oWµëòw˜÷õ“²½[wËE;v¢�„¿1-Í�DóoјêÎ�Ò©1éœE§¬�À¯{Ñ“—tüßE#…�þõ¡ˆð)Jm‡–2ˆ0(…Ž’¡UI·ñ�!é‡/p2 øpPEVdäªÍ* U€ÚT?;|Z…�  ˜‹ß¤€¹%Ž�·ä£úöòÏÃØ }‚op¿.U�ý()õ­¸Çš¢:ó>»oZ7x°\ÃÇÃÑxÿÕÉÑáÞ€�Œ.÷/÷Ó³×{ƒ‹£×£ñåÅèó΄>ïìà€þùçÑ i—G§£·ûî »ÇKúü4O¯Ç<òô¾¸µ©rÝwä¬ëf)_€ç' �E·ÝÇë¦.£ü¸øÔþŠ Z¸wÚ¬½$faÏNüŒô²:�ç»Gùª´&í ©í_O-¢J¸µ\·¦Ç]V-5™–TZ£éõu¥U3J´n°ã7ýç<Ÿ·—pp�î`/šË Ám…ÜSôD‘œûþN>î9J0r3€gŠä:]Ý}rþæ¼Mhofð¯§ðÇS]&k¥ÈHÿÈ^µÏÛXÜ/àC¾"4[/ç¡»9Âæ±\W»žV¸Ë¦2»H§¤Ffµ¾#÷¶00ÿ¾,·ƒ6,\uþ×j5Žx ÆyaV™Ê=éµ× ì+[U'gï„^.-èkÖ­×èT,Q›ñ&Ï<.®·Ìòúý2}lSŒ ¸ByÞÛäfGÂÊ�™*{�ÌÜ\p§´_yý"H­Ú°6ë_œ¬…¶ «¾æaÕÂí1›/¤¶�Õßœlk‰¶¢µÍŸí^ý<0…fAa! ÙgNÛ©oÝvúlݬv'µfE»]ó}CinWÓœÿ8ìú®M=“·•qþbù£x¥Œ­³q¼?Î9òð6 †#ÉøS�Uv^-ëüúÚ�⸰m“• ™Š *TŠ–f§ì�²?ÃWKªºrìÕ»êãIÄÅ©…Yœ€_²r5¨ói•fÛsÚfá ‹û|Ç…ÈWç’VX]i¨‹ƒY‹t 3|gà—‘ì¸h”–$PR,°é— €ã_Ô?“�7 ù>"¹û JóÒê•[Â`œñ–-³p`þ´(Kãx¤ÅìXC»ŒnìLd ­&GŸîPAËØƒ�ûoÿKpIãéþÉûG-š=t~vyôör´rò׫7û§ÇïN®öÏÏOFû—£³·Áåñ¨ø°gP‚�zÐ]Õs3>; V¯ŽÞ¾½=:º½}¾ioó[R/àØ¬hRÙf¿|sq´yuù×ó£«woÇçG£ã©ñ½Fýîíûo/�¯ÆgÇ—±ñ�«›%닊ÀI~ª‡t�^“Q�ÑÜßËäºZ–ù29ø_ÁS´OÏòŽpÏÉ‹¨bÞhÌè³­-56ÞÌü®Xܵ7Â�ÐÍÛÒÊbžÎÚÁÁð‡ý—.aMJäÀu·×| mz3×ÒÈ+·ôŽ™£–Üöðd´={®³…‡yÐ-ÏŽ1mm†_[=¥WP©ìCð‘˜ÛLµ_fqF²�ä¯$^¦—°ßUU¸„f<ÉÅ,��Š|_DJêäQ(ùs}Šw6pÐ æð—fy–•>¿«ãIíC*m‚JKÃñäAš�¾âõ§¿#�Ú^I¹# Ž€_‡„}O,WTÎÊ”¯7»Ø¦W ¦QÒæÖ<£pd¤äÑØ‘øôÄ|'ÞóÛŽ »Ï–�ÍçôÐs ½pp«;Ná'¸uª;ÆÿÞÀ¸”½Ð˜œÍ aÞ~^ÖUp$–ÁSl wjlÃLg è´Nʳþ&ž?!eðSòÊÇœ¼m·k=mÙͽù}{nCãmI¬¸õ @µ× F–´ñDz›Ÿ7›ÜR׊ErüMrŒÆˆ’Ìô�ýÏZ‹­=U¿ƒØ^ïÉÎzÂcã}_“¢GમcAaÍ�Þ—g%?Д´J'‘m¹+#­æÒ�EÆI-Î5˜š®}Æ@”ªE­‰ â©©›¨B/›7dÅw&)âBÊvåƒùŠ1{ B £Më¶2�ð\æ5W¢Ûœ>"8˜Báy‰Œô‰ÏWp›Xùƒ¼‡kd+µÑrð'|ÜË0îËÙååèèí(yù"yý*y}AÚâx`à>íŽÊ€AE^_G"ÈÚÊï ýà-|› 6IÅOç~FVƒ�³xÁox¡#féØÉmŽÝnÎælûWaì{‡ækE »â¾ÐMï®(P½)Y«Ðìùìãɯ¯_ •&M~Ë?ãײ<çu>+èæì;ë›bé¬ÜÖV0™=N_k¿Ò™lÿÆæi$ós ŸÛÙmX&ïºÎ?®„ù³ä4IuÇçÙ’ŸV�puN»½²~)X€l/ý§]õFÔFÙæ|í„ÀhU¢^™[náëD\ r¸ªIºŒ—a'Ö–VxÌ€7éBP1·88ÃuQÃÇL� ¡“…\ü´7Àu;ªn<ÐcƒÙº2Ôïƒaê¦foàf±³ÙlÁçÅ�¥z3ìægh·Dhî?’áX}¤�9Ñ\sSæâ™aÌ×:+€ƒ\s¶Àj¡Ì^œ/e݉i–Wõ¬ª¤™:�uy`Ü3o#ˆ6ld¨S‰@!hN Ò³§lM\„©¬ó&'\ö†ëkUiD¢áÐÜôóî´8fô[Ðp§«Û°{çœþ²M¦›$ ´8¦ø³�YiÁÊ}»»ÿ«¹n}XÊÏxTîç§ùoÉ옰O³é¾íãKý{íÚB°¶ÏíæeÕiUxÙTÂh° ùU6šï�V¾Ýrsæ€'Mf‹¿M�ëê§0˜ÖéÃø/'.ù�äþm>åŠ •±Ö²!¡}}Âå4ÌQ9Ä*yF²mñ!É'“�ç¾·×`‚rŠZÌÕâ)]Ý&ûAËž÷§ÈƒV >7oÒš Û<;sn^ý£:ò½�|>y”ˆ¥]æXïrÔÖ¨þ1m¾(õÍŠé}w ùkؽÚFP+1¾ò•¦•yM7òYúž.ºD¦ÓWyÛx[hþÕÀžc«î¤¶�xO°-B°®¬…]ÊÖ9‡ ª�uÝ©£ÆÝ™þ»Ì<ÚðY¬H_N#¸5Mݬ٠Ÿk‹µZ™ò»´ÁS?0yIa#A2€C£7[G¶vñ„ñIøæèÓˆ£ÙI8CÆ"«KŽL@O­ñå/GKN¶š�iȤžFÃb¿~Ø¿�DGPFTI<Ýpwzèq�Ü>ÄA÷UÀ@>$ªÂyª6®ÍK Z VXФf=†‚C—±k—°¸Ô ¿ó Œ1C*ô¨=D‰“íËsƒŠö?ˆFwW‹zwqGýÛMï™â áƒm¹+vw;ÍÁÇ.é#Ém¿c%1ýzºç;ºú×ÀÕš²ÁÔç&=à°AÏæ-²2.‹3~G]iQËÞb@¥ÕBq´'ý—ùÇãÀNm‰,N&È‹Nïí ´Ùm¢…¯ˆÃ/j†õçĦ©Ácf©”äfBN¾ RyDKÌ8D�(»qˆlÿÉ5f~÷yè±ÝÐ+ûç£dr„Ì�W«ÜâÐ÷ÐÙœøáÄ÷JFÕʃ `ׇ‰a%DTmLk°#F!¹c^y#«Û!x6®H#l uذjC:ШJ‹îg÷$' ¶4ðÛ[º.$‰ð—4·‡7Ÿ_çW—9Ì“g¿yNé$TËIãzÚ`¹^ÛyÔò@¬wΠ¦¼`È8qÐg9šCú&–±ÏFá§îz÷rhc´�d�LîIÏÚ"Ba…É—+è´N—ËVìá1ävŠÌ¼�pæ´rЪ[æß¡ç72 ·éWvÚväm?eÚå`û³òm82Þ”V`ªm -¸3ä™älz¼üt}�Õ ÝÎ#wwi–({aó,È{g�¦ úûÊ A–õ'¹�cÏî–Ý+yë^aé8îê_¤�ðÍ—‰ÈMÏV± ­±�W-‰‹y6âØYÀä ÁϼTÒôªÁ:b<¥åºnhÕÝL$ÃæK‹Ú¦¦ËZÎf&ö"¢%ýQå-*Д³Üw]ÀJ’1A¯ÊŽªpìx Øøÿ½šf8쟂Z<�rqXW.@zÑcã¨Ï?¡iý .)¼jmçØÕ¤!D%%@é×êVp¦pY ·/{®šÙè€ö¥|ËÔawéj–×&QÉ�"»Õq<Ý�;OVu¬ej/ePê|CµÀ”OoÇ�+N¼™fzmj ê ±fe79@ìÚ{Œöâ"oæ$ëkV“tü8=<£#œïy]�igÎı|= ­µV>ïNaïX�µD›Ü}#ò†.™Êëg÷HQ‘êÕ;ƒŸ7æ`Gï­¤j™C[¡1-ÒðsAÀ[ùƒxÒl�Î?ƒ‘ºåÚT/¡>“+«ÂÇt‘Šgc0w¸Ž×}VÃǪG­wV)65OÜ'ÒòÀ'ðO!�,nF’_!“3ÂÀÕô&»2ÅÃ#<ˆ%ǘ›Âƒ“>'ú tïNpÆâÇÃ¥ Ù&®ïRk=„’Ÿ;R€ªè'I~¯¸T+Ÿ|àœé5±vÞ�´j‹\L{ÜÕmé�ÁµÞä°·�ï@ßã|@,×™€ÔqPä° ‡(t—NS¯‚N¿Ô.5ÖŸž¥Ÿ$ì»aFJáIQ½å¡ZЇe^Þ2/Ç_‚PàD"Û—8Ô&o̼$Ûz‚œìE—4lŒË� »àÒÓÞYŸ”'ö¼K |ùÊxScâ½:aªÞé$;“gºWŸw÷,²ÁÝî.»ÛRNl�B›€Ý(z�of¼ÏÛé4·sºµY@3Pä Þ/éôµ¬ð&,^¹¦ï}hZœØêœ3pÁ )Ëç€Éî>?ÂWK‘§S¸”½•aØÒXOAüyiA:×)(Ç›oKº¿VY��Bm¹£/hæ‹»î;J·TÛ@.yÇfE“4Ëi�•e TŒÂ¼ÉT`™�:†z-'^çSÊç1ÜßSÔ6ç%g—2JSâœÅ›µUêÙ&ƒrH0‹ÑC˜"a`º=¡§§Ý«q¢µ×PH¤Ÿ6DýÁª²³JÔÚø±¹‰ËWßíÙç¤uÓ¦¶Zƒ„žA�;©tá'ÏÆã£a}@}u³nö`O2ÖËl?ËŠ%Û¬}O+Œ?6#KΆ Ãòæfµ˜¤�ó;ÁSŠùnÔ{&Øô¸î媳AP–žúŒCˆïæ�šš­±]÷{O±ö(\õ!ÍŠ„ƒÝlN û¤’Öuþ“uS!Ti¶Ó¶'ÐÐ óÿd® �«¬o·åÊ´}/Ô•å6ú#íb¹À™]À.ZûæÓ¢Å ÃPÈf æ¼Ñ5¤é‘Tc\-AæÓ±‹O˜Ü9`÷ÁˆËŸä®q84ÆM=ƒ¦»*•�å·ÁW4‰­ðÛ×/r^¨ôˆ^ÿ®åuqfhäaËr/þ6’…–²îRègäŠ ºß…Õ"gšü”þøéÌ$Ùïà ô¤5g"=ü‡¶H•‰[ËÊbòóðå‹àSnR~±6ü—Á-à0÷¸Ú˜+‹ú Ùìv‘_7 ¯2Ïi24'ÖGÍ3ø2¼3 ô¢šJ=÷Ëðv°m{G'ò¡à†0«KoÜë©ÉÆùÄŠàd�]¼>zûŸû{f&l$ ›|�«¼e·æJ‘·X'(éØO™ïWýýÒm‡8‚¿°æ˜(ÿ‰‹3®— ”‚;†—ìýûÑøl¯¹Í×z§;;gmÌ!ÖØà²"©z’ú‡~¯‚ûààbt9: nÙá»IùNÉ£xwícQô„+®Z:]V^6ŸÌœ?.pdÕ3Sõ(P�ipÕÚ…ëùuòÌPÄ›ïûâyTn]\œ]ò펒Çq(çÜ•`zŸÞXËÍ|Çn{Z࣋KÙ‚�N|c;‘z_•L ­ßÉ7¿÷ÍwÏcbóíÙåèxtþÚ×�¯a£ÍqhM¦>ìújÂ…œù¦ÌwMS1Á;z{|vqºÿŸ£³·£˜¨=,)†Ë¯h³Î±�º•ª4”,vQ#N¢3Ë"¤ºµÙ/–<ŽŸ¯ÝéØ~^ö4ªÕ+dE˜»EÔ¤iÚà æ°CÚ8’Rf¡I¶ý’RF£rÈ�?–ਚ V.>{ÑpoŒnE÷\©aYS—.œ´9ìè›:×�ËŒ¥_ÆiSœr%ÚófE‡6�“~g›€½§o2œŸŸ -Üb·­‰äÖSÂ뛘õíÜмR’�9ë}¼×Á¼KÌD­hô“’m‡†¬Éø´G&uœÂfîìÚ’EfE²FJ•1òãŠZ;ß?z¡‹W'<¥BIFç¾gçè3,r>³Ãê>ŸTKïK<ü)›oÀ4¶õG;ñë îˆFõ•¶È Ëù?vtÇ—¿Ò²QCîV(X,ç̾§@¤›È¡¶›ÍW9Ì ;�gLwÎb¶œ¤ÿƒÄ¬Pù¯uç3hûD„Dc ÐåZ )l·[²K…/\µ3`3ßqmê#m"�:^XüÐÌ�O;&]-Zó-­>žH½v—Ó\¥Äß6†Í†)Œ?¿,ó…øüÑ')í^‡aèî%]!®(œ;Šì›_sº}Å»,>ý]æÚi&=¥ó¦ùíYN¨H¨Ó®”à¹už+“Ð'·‘Ôгî¶Fâ®I³m¿Št½ýÜóæÇ;OÎë–W‡¸òÍÅÄ(9-U&&Kí½Ü.‰ì+B(ø[_ê¯TÆêFÃÏhk �M¶Ô´m„šÖ®_xöœXü„Òž:Á–Žgíp[Û]¡w‡�ª3gãçÉë:8ás²îäØIÆ…óA°s¯QÆöã–/J6œó‚ÀM%Žýã¦ÏaÃÓÀ/a•Ü7Ø5à|pÛˆ£`°±‚a/…$|Zm:î¢ìlõ8]ÍìÞÖ$V÷äðCY},¯èJþDêæ•�ôèaÁØÚRUi¡“¼©Á2È™n*¤Òñ2Hm“ŒWѦÐF%@ÁœŽ§¢ Ÿ¦Ÿß¶Ú@FuFë¦Aƒ£Vùeh³$~¯æýUM²Æ†±±±ÿMºË˜_z°ÎÇ>n�µ*CI‡wÙ±jµí$Wmlú“>e¬CÉ \( s?Þù-~,­s4V¡Ñ“gnƒº(å`j0I]ÁW¨¦&ù# ²üÞ+Q𻨠_iH¤¯¢f Z C*Ñ|š.î®(Áé½F^¶ ˉ™z«¥Þ&´gÍú$³ÒµÌWÇp†£¡ñbtúN‘Þ v´Ê7>¥­¢¼™Ò5ù“9ø¼¸f!`7fÆ`–I´õ„D‡ ¤ý,1†–9ÞjL2mÍmjn‹‹ýƒ‚ Y×× Ðnòõ‹äô•JG/#„U\U¡/ò¿ô¾é‘oï<×öé¹™š.Fo9ß½·;T[òáŸÖãb&Ò&¡7Ž;7öMQ Ñ[à³07CcLÊNµæµkßÑ9<ÌoÒÕ´­„ÃN¥�‰&š†ùwàùî×ô§ocî-ëžGcÝñíyT•JfXhiñªê3Úf/2½ÒGû=’�%î»)L¸•I�~CÀh?R0jÅ]ófd|5s™]ÝQ_s^7 lÄ)ëyW´Eò—c×hZJðÐæ�r}¨•WþfèQ—t)ý4Å- Ï…¤p²Ø ë "QMâÚŠÞÛ56 ‡=<Î}s!úá_qÿ,fó àöBç‚‘bù»ÙûT¸×m!A¾Ù’–0p�T®•·©u@ HpÔ5@¦0.SŒ¦hö¯HA•ÔÂTÒ>@™¦¶óÓo"ø1š‚’q²ž½¤ ðÅËo~ûÝwß|n Ö¿ï9hPn3ô5�åi £%ûÊácqd:ÁꪔjbÅ:½Ï'jÙ³'¯§$S9CrV,—骼½ãˆ4é´ŒmÒ®ÑmÀÖ ßÜp�ƒ nq˜>tlC\:HyæNš"ÿ"y&¹æÏ¹…zÌ­‡™²×@9ƒÃlÔŠЙ¡Üµ@ƒïÔs˜²ÐõÁ A³5—«ß¿!°_—éu·«Ê±X[Z}×ω5 Îj¯‰é+vƒ&ÃmØÚ½Üt œëW1ê8@ý˜ìSân)ã´hÔÉúˆŠsÌIžŒV*‡'•ìpè�õGÞg•)ÅíUÂÉCg5éÌæŒÕ†p 1.\É^³ÅêZÀ'YLó°ÍA½(ZibPí]æ�%-,#SùºJ_üo­==–�îu”%Z¯*¦Ð=f˜Bަ7ݵ—¼�¡Â‹Ž@^]h®âÑÉñsöŽã WÁƒK²,»›îõý�C€–·;5=3"s”Ò…*y†Ï;o:ÎÜÁ\ê›»ª/„Öó–SU¼ôV—§cÐÄÁ‘ð2êQ½“(?s!>#û�ÿ‚™Õmo× Ù�k@ØJ*šù zæÙT^µÞ…Ö)2]™¶~Æg`$͹;^λ'Î:±´}³œg­¹WV 9M�C…û¢HF�'½¾ v›}éÑêì 0œì£ƒ#¡{Òš 7´‹ 6¨}´+²™©CK "Dör&”qìsö$¶Ù¡‹•iN“. †ÖÒËèˆ¹ÄæÎXŽÜ¾k·9_§RÕ95[—Ý!�ý!¿î"ß �èÀ:v )w‡Oi\O–wþ)ycš�ŒÉ„:#y™b+›BÇ¿ò:ìöÙQŸ,NÏß‚¹~ªë» §è�s«>FrŽñï¢Þ¸îÛÜ„³ª³ÅQ¿Øá»’ˆ÷E½ŒüŒº‹ à^Ã=ãÕ?B31;87·¹)šàW1çúèÚ'€åAL›~'˜Ô}ñöS~A‡ÅÇãõõŽUÊ{‘ ›Gm<·…K�r�¯^=ëÍs�ò Æ|�"À²&ù¬‚aßë&Õ¿AŠÃ©ÎdáÌÈŠ/7ú£SsÆR]I¬b²Š�é¼ÈúMʾ¤8¬å¯mmºù Ó‹ÐËÊÙ3ÔèL Ï"‹'™`häŒb<+AñI*^Pš?˜†ËÂDø J¦ù‹ÐÏé)ŸiÓÓQ�¸¬JO¤µÖ;šÓqa&Éa"…�ìŠê|ØÍ|_¬ízý¸Y0÷&u>ÕÂBVFïs0MgûïIs¦ñ¶�üøs¢µ„v¼ÒÆ€AF/+Cc´†=SÜ�ž""·=jGöJ!¦`÷ͤš©²Å`2Âèc†�…o¶à*È¡ÉÔ—UP‹l Ýg@Ú¤°ñi‰`N�×4¤ÊvÛ¹ QŠQÒeå�e(ÙœßÍ=�kjËÞ“Í ÄÐ èÊR¯8_��úM/¶w¹g€Õ^[UFÙy p¬h`£‚ËnäJQš7\KZ[{{+¹«)îZ—ÞÏe­†ê­QR–­ug¨Ùð%°~“{ ze{`jdžGödºñ±vPõ7ç‰+oºjªU=ÉøN•a?Næ«þéYáÅäù$œ¿ÃÙžCÍãkÏD9ôÚ27ÿŠÓf1}û>)ôSÁp3õµ1=¢+7h%¥ ÔhçÞð7©Àн R¿Ó‰fXäê §Ê~#ížyóU½¾f ”\K¿ùg_}z.¶RÄMf¶ ‡Ôiûë–Õd9tÜD¢Ú¸óÇówSWÝÔk#^O..–åÜ^–*,daMéÏ›ªúÐÚŸÃÔæ¿mr’´l�5Zµ ‘ÆÛ}ÑÙô„†,nC©ÛÀ Æx½•4"”2<°€†mŸ,#}î‘ñvCyÒ¨×/lÉ`{§Ó+¢ñ²�j&Ùì¦p½ð¯¼{$Z*þ¬w³ü»QRN Ï ŠBr ±ª\©±%j/Š#iƒ¦ âi—ÛÓ¦O†ŽíâÍbpmÑ·¤²bH$ƒòzšë9ÒôÈ{’’)�mù0B¥*ÒW70W[Fj y�î=®U¹¥C3zGe�øg~“Í0d£êËjûW‘ÎûôSq\*ް…/ïu3O»õÝÅ {„-Bƒ|ÑŒÊô›LÔjµ¸2%B}†àUè¨K‘g¥²cúâaHR™�¸uì[ŒÝ€ÁUœfCh`ye¼t­'ã½åàÍjÖÜyøz‘Qp˜F ód´ý Ýòk (––vlx0+Æ2¹Ý‰[ì KÁðF]NãÕÇùÕ„ï=Æë'qJu*¾x´+¦=Ë › Rö`µZ’–•g_<†êš$eÞ'ñ-:Ÿf"ŸFÇ£˜æƒBeAç µÖ#×2ç…3² `ùÒÁœ@r\p޵öÚdÕH(°¡L÷qÍżÕúßÉŠ¬“çSÀü¹ë9²†9ˆ’û9F<´eœÓS«?DsVÆC,f3P©aA#ÅSÚÍ7R$ `AJ6åχÜòœ—¹ÁL‹F8±ÌŽ^%öqÇ›�=;Õžxüò™hÝV —ss€Ç“.6 ×cÃ/áÿ²‘²aðë.µ¤äm¡åªçbKÉ«‹ÄëvßlãH Û­¡ËyùeËhŽ­¨¢6�Æ…æ“v[`]DÅ+!”n[L^ó/îº_£J{iƒ•H¾åû;ôêF¿ÁQødÉ")K{‘bئbrÅKšzº01Ã}²(1Cþï!^ŒÈ�šÆ¯YcÈ#êíS$‰è·1µ¸øé}ÎÁžò6è�§ÓûÔeÜ ‹bÅu«cz±…&¼QŒ¶@#íÜþó|È—Õ|žgL25!ýˆ Ì,ø"þ�šäkÒQV,–™ôa&^˜Å{j ™9\Ã"””ËázF�RÌ:§Þä“ÛÆøxËket^«Ã*¶òeጭr7‹�Äï3}G“&Ó>nqEÈ�%8wôdÌ…bXvÿÁÉÛ�Dž„KãíÑxüîíRUÊM&OM‡ŽèÙ¾k²5áÂ=–<“”=sÃùê?:W¹i‹«æ@s´×èNò…‚ö˜[þ,sÓ“î•e’^6udZ‚«T%šZcSÍž± ºÝóÒä‹�ÎK㱟‡JÖÑöH-Iº©ñ4<…²Cl=›½ÛÀV½þ/FÝ芚 I[Ûgí#Ü*ªqb¦�“J?ãQ$ùÀa -W�x‹öH뺸×*L¸Aä„L‹òƒÈŸLã7pwÒ_‚ÞWÆ}Ö7áj Ñ0GÁ꺅7]*<­M¨ÝJë�b4�)¢³€P)<^µN‚s8õÑßÏ–?[Ìì¶‚-tæM~Z...ô(&.«ƒjþ Tz¡6ŽÙCNO*èмÐI6hÁB.AÒe%„ÊÅ|? Ö*¿—;_ï|³óíPx±û5~¦ÿí}MÿÛû†þ·÷-ýooo÷·›ÙÛýö÷|�|-:t¸£®ïÔi€à9A Ë—ÍÖ…�Ëéa"4ðl•^­¼uÀ¼X•fÞx p…Ó ‰ÁØ?P?Â1ùXÿØ–@†AŒÔÛ<Ï2Ìn®'µ�îÀ©„‚|$¯Èà‡$a-ñ,fŠœ6Iȸì~Æ�®­Åny#?ì$®P‹kϺ¹oK”ðshdatKÇ# E‹ß¸pØŽö”×:xÁ„±r@;~cYeG°_+îbµä£zíx@�J�Ñh¥£“ÏÊoF0±h-î T®`ÿydžJÚg&\êoå—šwÜ�B¡ŽØà‰jð$̺o²&«�eøê8w‚ìu�J!uîÃêC‘_.ÃÔB—'êÃCœ‘Q¯øŠá˜È^kÔ�Óf–œjkâDœæœ-fÂÒñfÀ½·LØ�Yø&÷µ}02°w€õ­ãÀŠ�RŸü�}Ò‹ËÒY�&`™«{\�dôqKmÇ1�>~Ø´UìKeÕÂL,´BV{j^£öœˆÇ,mv•j³,—Óö�ÏX#ý µô_ÿÖ§ãÔ0ÞÒNò‡3º+{Çæj®k8¸+VÌ ×¦4_ˆ$ú$öÙWȃºþ]SdáO| ]KtOUe�øI-š¿.*.Kd¸çžB¬—pòA=<ñ´ñîÅ4›¤up�Cm0ì�±ë™É¶Jþ‹l£‡® óPÂ+îÎÜDîy=ÊCã·Ï'7)ŠRSV‘.ïb5fHù)Ì3¬ç5šUyóªŒfñËФYð~|(ÿ}ëRK>íkKäGå’(é7Â4ÏÂAGê*'%…ÚŒïÛ;&ŒérS| =I#B µÊè&ò˜ú–õ9vdEä þ™ã-»Í“?01ͦ¢×Wmí3:$=”x’·¸*´ãÿ£":óOñ_Ҫ߃ÿ³c¯éÖ©n'ÙMç¬]gÙ©´Òz#˜d³�aoyIU1ÿ^Ö³ˆ©ë)ŠúàQDd§­Ǻ—0š@ÎÌ×ÁãàÙÀT;IÀFÒ¢ë,íߘºz®š‘gIˆ!†Y£C Ïö= �hÛ¨ð]êAžV~§Ñ2·ïÓbcö¿k]³ŽX%ßIPÆÇårÂz†f1„š9î�°¥iMÃWï‰U¤=4~1€nâíwsNxÒûœ2a[`8ú§µ¡0G¦…Ã<}rà¬k¶Iÿ&u-õmy„ ¬£#;4> Aˆ�Jû±‘ ‹:ÝB2¼mvÛîu»rUjäŸR8Ó˜FWÊ;$Á1ö½�t+ È]*8ëdáô-ॻql¯éT(«I…ý›òÒÓy°‹Ocï*�eÀm“0°Ò·IñńŠêœqIÄ|×2fhÜ}Õ¤¡±Ð?°.üš“Ò›ó�r²ß¡2´±†ÀPûøk75Ý¿ì¡íaè.ö¹!@ØcFiÑ8É’Ë0½Ž »OÑH¿–°v.¾·9×lÛÙšP2bÎ T͸X�¤�š'Wó\üC<ŠÜ¹ác|±È¦:‰�úàlÚ,ÿîa0 EPTȇ: ö8Ù‹ÿôþô*¼Ô¢ÅÓÞ?©°ili4KEawçrhRÍóZØ#5?L…£ILHŽе £�ó'”Î \ïÝH‘J Nñ “ÐÚ,¿©£´ÍR¡5½|ßZXÕ-óµÆ*ù¸hñüYñ½Èî®0V©Ébfý”±2ºœ�ìBév‡ñ%æ íÐÔ!ö¿yñ‚ÑËü)îõÞb˜|çÃË»äí„—/$|_~}÷ÜŸÖŽ‚˜Ì}£@É$,Ž%CUù–D]”óÛSá[ÕwÝ�l •«h8Žþ–š£Ýv”ùô”A‡ÇÛü–èŒTA6Sÿh—pÛ‹o…#†a‘óä�í1 ¥ˆ,Æ"¢#!i}éÈwã§èŸ‘‡¿Sä!œŸÅëï”(æýß�ƒ06ç ý‹‚ÿ“ýâÿÇzŽÛÅÛÿXÏñ/ŠSÐöŠ'�ØýåF"N¶ø+ÆÇ柟®”#©�§z¨.åäÅÿœsòõ‹/÷²ëßïíí~ó5¶4Î7EعeÇÄ Õ†­[ØÔ+aϳ�Aƒï× `d1‚G×üº[ï¶s§Vïñ!¹‡Çö¿!’ðO¿ë?ý®ÿô»þ�ý®ÖìïÝŒ��ñe®Ü÷&‡NÈÑMÚ£ƒ‹œ6œ»�Ê])øy>L¼Kûºî’?ÿô«wxá;iZ­ã"…•nßIìîJ)o„æK׿ý· nÏûߊӘw´6 ²è¿‹ëy5e2Æ$†Oc]»ŒŽ…{óž gЌѹˆê¿g Xø¶ ¥o3.Ôu^ÒŒ-]éøA'ܺWÝÅå¬ÔôÀuKÙXä2÷q½-¨7ƒ¹@÷cÊËJsÎn… ä¶ ?Å–ØùÅ¡ÝÔtãpê¬ ÎñŒÓX¼±ýX:¨P.BCû?÷z’šbŒý÷_ ÚJ,4ïùtµ0OŽÊ�Ñ[.!RÌæ›56ïó ÁKï;q=4lß3×!Ãy<�·–—ÄTÄC•¸¦¯ÂŸé VP–y�h p•¦¦sÜ8ŒØ€fõ}tÿÚo%®ß}úËÂñáUT>îOHéYp:úu!ˆ‰³o~û‚ó=F%�C6^aÏÿAœî©�!�OÊ ¥ÕŽº/³G;ßL)À‘·9qͱ87Î+ó æw€ë»·] ûµMÇL¢>ŒÊRa©Vœ?`ÊÊ÷Ël¬h ¡¦þœ×¤;ð¾CÊu&p'ã|'Z…w’cR?Rûfv|ZœÂ!Žjq8�~¼šwNM©n„$%�ŽãµSû¶`*ñß@¶ßîïRØzI“(°SE8n£�¶|˜Í:ÒË mîÁÐ ýQ5U…]ìŒÞ/æ‚f4  Ι8’áx“±²Nw¿Î*E'÷8¤RÖûÇÒ'Ûöa.²ÔÑnkIÈ�ºý: ]ÎÍj:õøÄýh°ƒËFsIQÛ™ÿÖ&/{±½K'Uõ¸4@}Ûyš�H<¸¥jÆ/�¸{ùmžÃ*x¼Ñí³ú ÊwÁòZn ;ט{�RøTM"g®Ñœ‡_ÌÕ·ôJˆ[GÓ ±lö`ÆóÒ &‹Ú²¶µ€Ms@«òè¡Ú4‡¨<·…�±à×ù|µdAÑ,Ùø¨GõÉZ%šXÛÑ�B®Ò…É;IKï�ôD.�³!–BxŠ&k'æL=_WÕ­˜¾¡þFÅù `ok -{×§Ð^ëþº�*7£ã«Ü¿oU)ß|•>+w0Ô¡Ûª#“XâM¸iz’~ ðá{ƒÁÏÏ¿tv–nÐ�ScÛÖT_05Ðà‡Ù{¼.nPŠËÇë* ]hI¹ÃežÔkÛªš¥,Eg\lÑ`Ϥ:›âkO2ÌPôëGàÔÊ7v»m. 5µÁ´¡H!£éøƒs6ØÒM÷Ê´X‡äÞINXí0à÷´9§éçC�(®=OÍT¢ÜˆˆVwß{Ì%ª o{ž]-«+ÎThqº/•yÙvISŠ�%UºÊ"@À°Xo2¢È?fiª hlMï-qņýz«)[SŽ,Gœ ~ïZ7ßúQügéÂLá™ð;1Îß:Ó¾v¼–9õšˆÎêMJ‹ÎkÓÍlÅ;«.„/¾ñn<\Æ º sé—=¬¿Û5–`;½ÆÕ¯M-CTºí®6ÛÙ²üv ãöy–×V-@¢2žÜÕh”Ï Ölÿþ®7-<÷mý6zOjyºe^ãºr:3}ëÁ4šµ¶jÿr@ÁÓ¾œZbbý‹×Ó§õÓr‹Ôް¹c[ª¸½vLþ[¤0�YN^Ô!õ˹§¸»¥‹¤6×'°›Úd’eð`Š¥ïð¤b-äÜ‹«ÙC!äÕ¼UíñÅW%ÏÒû´DQÍsש¬k�7zcÙDr½)7jßÕÞvíä'nµµÝ%{€…pU_¥T/† Ù탖ËiT /ÀŠÓñzÊçbæ£5Ø,wKÌ…£-~àܤ¿LÒU$Mà‹+ ‹ûC¹×øâ^I ºiž¸ŒÃÄëë¿æ¾Ó=ïÅJ?ÌÃ4÷ŸnùÈ;EÄ!íü +vþ\%W”9C@#ðÈy´m>l`½Ü$´bmÔù…wž�_ÁÏõš¥õªÍ4ì«=wEx¤_Óö�Þ7¼ºg/rÎiy£ b‹j7{Mjô´ºeÒ¯FÞ£óë¶´tà^÷`�â(öq ”TXî¾%È ou§"‹Žq9k]¢ÍÇ h–M\¦ÙÕÀéöØ•B…\Í€€ôð%#ï‡C‘óôVw¦��16[)\ç÷2ÞrD#¡æŒ;;X2È?)ö#2û�«z&ÙY� zÓÒ—ghÞðßð:ºZ¤4g~™ÑyëcœïpsÌÙÆ”eĽr8—cTNqÉ<²ª#[aš:_%�‹î7¦f‡°›§óã]ÄËÛ|‘“O‘ Âñ°`À®,W(³"þ µ¡¼¶,Ûyëjµ.ÒyÇÚ\Ø%©èö Óf8вÍçc„Y>�†jÖª ZWøQÆ=V ŸÉ©T\R¾ +—øC®µ�tOì=öÃãÔ‹%Çß›ÑDµ»äëÕüá¬ä(šÕ„š ƒÓ¬#Òà÷áà�å†ÍoX«1œ6Æ/5_Ùû±´ÉWÃä`–%_%Ä‘|x4‹Π Îǻ݋›Ï~ˆø“°ëß²OéZ ¯p¸{ØRã1qÍgÔ/”´6l‰eÚš÷ÓKˆc­BÝl3©×�ï(õÖøXê ¨Ñ9-*sÑEHÃ_TP@Ÿ8«{@v¹ñåå £q}\Ó8NO¢Ðî¶Œ d˜L+HƒíöeÖ�ÝLŸ™“•¾ËÜëdcHÂ0Äì¡7zqÆD ’†ËÈÑ“$äMYÊŒ4š©n~ _ H¸o/«m–ØAp…¦¸}u²ðg•ì�w·xw›ÓÚžÒæ¥3Dü¸¥FpÉk×G�ö6ï¿�'vÎ^_]�ã˧Gƒ?¼]­Í¿ûÄŽÙvZ;&-óç‚Û‚Nßdèå} ƒ¨w‘[,­…¼=uŸÔ‡·áÉîõFÜW¦�ª{ �˳Ûz/Ú> oYbfAŠ\mFh§z4â½C»åxè{µÉOÝÐí�°{èß žµßvÁfü•5íáCÕ|ß{~" ÏÓ^ZЀYü´·Š¹Œ2º�7ykÀîT ^o ×UŸ­³éh6-ý’$As;½okÀ]šÍw¶5ٮ߻Z©'a>©ôó›³T¯}[Ó`Tlä©]3�utòc~½l¾~íúX~›�<±“¶±p'c¡—ãT 0R<Ú±ÖÞBÛçûô³}‘µ©^k\àõžÔ¥ŽÅÕ¶{­mpa×xJç:up ÃnÛRÖ×Ö(ݼ“<3€Ž� AWÃÝ.Þ�Ö®…µ/Ö2(ó�Û†ïq{fãÜa5Aü‰¥TçÍåVRÔH†Ý�k^ÁÎ9Ïó¶¥aé?Þ574#½öè{ î+zQ“pNt|ÊlœãíƒÒúû€'|`æ§ß0ý mm©Cë¾§Õ9¯ê‡D·Z[2Îùf8¬ÙŽ[µ~mù ˜ Aï7;Ì’áÁþ.­Ñ%x9Lò&uZ÷ÐØœ¼æÅˆI±0š±<k/Ó{èï6ÿ¶g –gÍ4UH?Hᇤ`ý¿­)sž™É‘õýÔS÷m;dõ´/M¨~‰‡Öjš¥XåM·· ØlTÎ�†V_®Ù´X4½ZïÔ¥ýa7Nhoncض™hÇ+¼ìeõx¿%÷~p“NÐb‘–Õ®Ež¯}^¶ÚÇb9¹cQÄWœøâÍ ÕuATåM^ÏR¯%j„ôâö2Ñ¿bÇÊåÛs”,´ Ã�ȃ<¥÷y½ì~ÑEMÝ»j¬ÒÙ6*pžfÏzMÿ ¦ÆEÓqŸ¼GQ —Á�Ú¤›!A¬lnÝïûšÕܦ—iÒ´lAÀû~“-&vGƒ–Öñû~Â6©ŸiæÙðÅp9||±‡ú'ÿ¨knøÞÑÿª;ÝILiKƒŸfRe©{\»ŠÊ«!ôþþÍ“¦ò²wËâ:}JÛƒ¯*;ô�D’àwµ7LãƒÌàj>ˆàÕóžú½p@bWæ&ǓˀZàÐ9×Ñl½ïŸp¢#±Øê´öµ^ ¡~KÔÁÚ'A]W ¿ÿ±<Ù$Ëž„ã³  ™,—œˆ´.öú+€kãmœ×uuðûNeidr�M¤× Sü°6X®fŒŒ) ŽšOéåû€ædæŠEj¯×È�¥^*Ì™„:/É^£ÿ²0Ò×dõ¹½tü~BÔZñ}›àë²Ç¿ØŠï¿ì6yg˜:“ü¹:+-m�à&®† )êb)00FÇ÷”‚I«[ì™ÍmYÍ"µûDL•ea)F§y_µàÄçs”I ÿªÖËžc,Ž¾áŸžúÿ?zê�Ú£¾z‹EÔß[o²J8û¤0,°SS!ã’ì:½ø¦%ã]�7e�¿þEŠ Ž:�µ­’ÇNêtKoE~ü²ÈA´AÛ¿þÑ„‹_F¸xn^_ìÿõiQ„f+�#Ñ>0/6œðm¡ �«I½"楅‰©/Ÿ>¸øâÝ{ð‹^m�:7õZéïBñF~QìÀkv£�åɱƒ–Æ~QìàðW „Zi÷zGÖs?¾˜ý‘~I|`¿eŸˆ5ôKâû¿80°ÑÂ/Šh(`ºõ…Á€ˆfô¥Q€·+ÀGØÊ¶©K/¾(ºI¾40J$�Ø\øÖ’—Ør­6l'QŠLSAW-ëüúZ´ƒœ¦LË-™>Ý‚ÒäõjMiAÈ ú¾=®Ð1¸/ 48umjÌË`Þ}ßhƒéex{õ³3mŸj[•ü ‚ ¿F”¡ÙH`rzÄ$É.óLÈ*yFûÕx¦F+Ÿ;+Ï £¾G=倥Dè´³Ç~ybSvæa�Å>G&‚T®]1ŠQ 8á¿Ü£°-Àñ°žø¾g|âô—&B ôŒHŒƒnþ'Å"ÆÖßmàöµMÃÝú²èC£­† ÞÛ"uCì¶F{Äb��ÞO ÙãÚpö¸„ø/ñç,‹©z¯"Ž”`Ñ÷p‹ïNú…a( ±R‹yÛ?ë ¯»ƒ¶}]Ò ²wŒ#´OŠr˜;©Ëü×ïZ“í_®½�òã%ª´bùþû6ß¿žÙ +->DÀ`Y%PÚü}‘DVîâ®úXu¸ÚEÜ…)¨1ü˜‹â§ü«ÁŸ_ñåÃnØAK ŒCëå—Q©Ä%0ºUÞÍÁu»÷W¢ˆz$‘0»z™a½û-¹x’{eð>4 -ÃÄÃÆvFlX®*Ö¹¨ãü­ ƒÇÇ”Ê=­ÃÃj€HSß„šRT¯�LÎÌgRˆ’Ÿòšsú`ù6¨W% ¦ `°KÖC%ƒ¿0¯~6ôØtQ»EôAûqNÜ’ò¶¥Ü„ƒ™8K-÷kŽ&ÜÇj[ÖÅ<­g¬ ŠŒ´¨Ú®ÐËÁýé@K .¢].bîÅ—øèžN§† ò:ƒ[;+,—Eë’žð“uÌ�Ö5䌑[Ò³TXÀq¸†Ýšlñeô¿‰r*nTvÉøè̼ýÛÐÛ¯E—­™#ÄÞ*ž A¹•1²¸‘ߵ͘Ū@€Û}¿�¤tÑÍ:Ñ©º)²'/Fý‡ÖOê !få¸.Zwë{¬¸>­ëm†~ÿà/ïFãËýäìb"vÅáÊà“——ïöOަf¦—´rÄ•2ãHÍmý„ðí×�uÖ%Fp�®£�¸(� A­‹©ç¯‰oÝÓ5YŶn¦�æÛIäŒnõ„zƒ.ÞFåwÅVxDpPPÏVÐJ½<Ðx\5»A’�V½ø U—´ÑÆQÙ» ï}RE>´ŠºãU-Kº.e‚Ûà�� °7LpÉmóYêŽUp=Ïs%ËÜ�AÙ3rÂáê*ÏL\朇ÅDP´œóùVôš¸ŒŠó®“ i«Ly_�‚¦ÑYVËìÝñ«íd#moqÇ•Ttc^È?cî3@­œúÑ XÒ‹ Ýã³òÀh•†m!ôE @VRÇH)ZÇà,Þ�ÇïÞ&£ñ»“Ëý˳äòâì=ýwàÞ�È5\=©øêt0VS®T^ÖÖ"š¨E†À…XÍ�”ÉD!{}<öŸræ/™L«U6LîóL‘¥¡õr˜e:=€§ìº ò2:ÜxFy³¯å\ùš¦@fŽfи�Mµ—¼L*º–ѤI‚»ˆÎ^òv‡¡Ôø‘‚ÓV>ýC ÙÔ�ØÒ˜Y!ö{×ú™xStÓj/�„ŸÜ8‡’âÇáÍÂoaMâ‚ylcà¦/Zê®_±�•Ïs²âÒ Sç'íµØ¬iã{,†ÛàKSHe¤˜„Ë�Çü÷1ÿ}ÐRÂýÃ�›0Þ€8ŽQª¼j#’Â\-;_Õs0E´<:©Ø«afïWšœ_kô¯ 2[+þõÕ•ÄGãøJÌx"@‡LOËÍ.úmÙ AÙk·^ôj”=#Ëñ‰×󫈆w þÂ93“ûc¼|1 {y„äûå ˜`«eºòÞ<äß¼h¥ÿæ…ÇDþM{/¿ñ{Ù“/½/¹ù°‹ÅýP!uä™Í8ï‘åüme.‹yß-—è�4ËMA}�©€Œð {\ø‘Ñœûxƒ]›P8Ë›pD2Æ£Ž¥·ù¸ø)Œ¾-÷‰àº0Ö«<Ô"^}PåÛ WtÓ$H§Â|‰|9 AB:J“6^– H¹ ÁШ¼,{É¿íx@åôWÿŸLÂî¶8“Šÿ¹ F÷5êm*ÀmOúî(ÆÊbIf<~!5*ˆ>ÛyÊ~3d®µá¹�†Ob<'�éÓLGx¹™% ¦c©’ôÉ™Àý[Ê9÷�Ëv¦÷Ò±•9Ýcœ3Í:F:Ò¢2éâç<¢ÑÔ 5Ôc°lÒ{ÂÆÂ'ŠvcTÙT,¶.USÜi?‰¬àðóv«1µCœòçÄFJs»],Ò¦CäçL©ðTM¨e2YÆà·ïE)}f¶A `²r¹��øg#‡~]eUÔGª£Öå …øf­B*Ñ=�µ€#ÿZÐÏk”=Ö³\qÊáŠGgé§1û|O_AÖé"| V÷ÞÖ•wÛXˆC™æ`þC±¼;^´Ï,Û›e¾\›[¬ÛÙM‘Æa3ù'Ó¾ŸzïË‚kô^’síkÒA( @JÔ è#ÒÞ˜£ö£0ôÊ]‘Þ5Ù6›o4›-¤I²ünÆyZ‡ÑÛ€Îæ�MÞ;*3¼:ŠSókšõ»þöQÞ>ﯽ´µÖ÷ÂüÑì%3ÊOÇØ‚I¢ûFr±m·œP„àFhoÃò§|UÞÞ±GØHÚÅCÌN¸íUŒh¯9˜?é`ŠÒ¾öýøS¼@ÑŒmós @zk ûuV.�„ÃwÉê¦ä«•Zº’@€Õùx—’ð1�”`z “W�-éVj«jèv®”•K9¸¼DøtÐÀ¤ï„(âCSŸ`þ²4 ªÕƒ#–¤+£o}ñ3€ž«uø!§>ñÁ¤wA³ñ±"�†z)? sÏ!ì çÓ)XôúïvQÒ/|¥0Wì4¬èjÞc§ ~šÒ;^Ñ)Œ  &ÿ+ŸÐ›gÆ_€jø}¨¯ðmjþƒ!}´&“j…† Í3I‚ÄgM£êúzZÜ2ïyµ›Æ­˜Àò.) �c’,¯µ•£¬Ï^Ä· vˆ‹£Îï�îNˆ÷ “™ª¦Ü·ôed/nÈÒ\ìÒ0„äIï°¯3QT'Æe× ð`|,�­C‰ÍªìŠþ}•Îi·Ïó ‚.WÌEžÓ^ž§dK^Ýô²jþ—T›„ÙWöjt%ÃTÂíµÏ­&÷_3�Ó<�]Ý,çW€m%*ÓÏ­ÇåCœeš�±Vübëµ<¤ÿãK‘(wó«b†°íòáJrÜÁ¼©jÐEÌ,� =FÚÂNrÎpÿe– †ð܆¥?èã0AÜ´®=/=Çž`û�aGOÒòêŽ,ÁšʧA4ÇP…ôC¹�¨wgãä·;›m”ÕÕ‚$uÐÏ~a(s8goÉZÇb©4ìÁù»d<}³“Œs°K­4¹#ùËÑé»Ý?¿?úÄXmZ¼ò •Ë‹BCÚ„|å³|3U;T,ó·\xœM¢ Tv`SÑ=\i:àÕ<-Ñ�/‡Šô0~Kœ±ÞÉɽƒc·—@QÚP;“™“mZ–¹J'“ŠX9m·Ù·O‹�Hâ¸ÊÒ|F%nô.ë×Á‡wŽkìç9–O&¦ ®kKèÄ´ç‹êjró·/:åLHD�ÿ%�%†{ª6¡5¤ÎD$Y£üÒK9pìQ¢õ{ÅY`ÈX'HL½ Q‰ÆÌ>nùÈ\Z"Ígi×e¾þô2LÜñ´®eˆÕ!±’Zkí[h'a!#V0·²bŒ:ÑäÚ«b9’È×WiŒÓ’Wª’ <](MßRdé8…$ZŸ‘f$AºŠ®è¾�D&g] ÛJ±d|zɬ}ŽÙÂ^<�ôÂRö IÿúâF/Dº°uÐhjðÛÓäOJ.hD¥*¸Ñ� ”û™]66)_-Ùã°³µþåbþ[;]ÑÁ‹  ˜˜–Àˆ;©µšVALâ774ÌÙæH¥÷Zo|#˜ä|¢8•Çt•YõD/&±N¯CÊ€cocÆä{W‹8ùÓÈvªô.ŒµÕ�$UäQÓfB†ðãÙ¨õ¶§ÁÆR×$[„þ–9v¶zK·K{.…µ‰ÀJöñ>Ï4§"«&+Æpä&Xâíry„þ¨!ü” âS²³!³Š!§xà|ºûÛ-aª,mó¾sOrQÄK~Ø2ºd§WV¢ ß˜GyAùQºZOðiWþ`¥˜7cüjƒ¬Šh¼‡œhé!¤¬"TÆï–&OA®Ù)ïÅä€ã®Acö`]Á¢ÍÂßÐt¾C¡1ùe^¦0òry,Nä¸Xó4nûR®‡B™éÕö,ÓÅ„¤kB¤Þ’s:ÆûôœI7ÉÖõÞcusjÆcß`r·¡¹RÀ ¤íâZ”¬(fý6‰}|n®œ ¢œ$ÄU%ÜÅËUŽ”T䳱͗œŽ“œQÏó’c¸â5¥râ”9ªç¢2ÂiÄ�{ã#]õ�|×èã›P&ðJŸyñó²AI×ýÜú˜Í»‡\ˆyx�=¬®Ä¡™ÂiuåÓu¾…ÄGã�QÎÛ0QTn„„GþÔèHУg?Ÿ›�GZ ÈÛšŽC´é&yÖ§ë5�ôÂ{×õîJ>.�µ Ê›±u¶ †õMa5‰Ì!ƒøžÝ a¹vðk!‹‡Æ:˜ï„ù™é2ðïëˆÝ�¿qôÖ{œóØÞÖ7ªdã41íEûç`ÐÑXLÓ&b°¨©TîHí“ 0ñ`ïe7©œ˜ ÝAb5#lìÛï~Ý- `¶‡ÝäªR•ƒZR«û×ozá$—Ùì]í^NW"ùp™½ÒbýÒSÔ~}}¬ñßÿ~÷ëéÙÊå‹“wïj¹M~S¯þ®“¹ÿñ4õ§ï¿ÿî»Æ‰¬ëº=}ýÿOöäÛ¿÷ýéka£âõÌé¤PFcûé“•…³:Ò?ÖL±�¶Öxõúµ„ZÖá«Ouõ¬SÝÖ‹º:}R³“§Og ‘_ßë±5+i‹ÍY"²ì¤¨ËÓÓ0rñNþúƒþË_NäË×Úó ^[G�þHD¤€îÇâ�øµQœÑ¤Ÿêâ`Nšïl9¬ü>ª|$F'0W±°æ>Òò>êXkìI­-ô_‹H¬VÙ&2³Y.‹Fí…}Q‹  ;wK©‹è_µúEí_ѽ*‘6ú¥†ï­‚%Dk‘9Õ^\Æ×£³¼°JÏÕlS½¨�Õ¶ŒË—À¨a%Z! ’ùQƒH:,ôy&VÆùë'AÃä�'‘¦ÓŸkcå@åEc7C9~­ùËÃì•Hˆ3Êà u¨²$“B»×s –+j¨½P'ò,1Nõ¿�JŸþÖ¨Õê ùFMf%dà#2¹û"¯}:ýTOác!¹±;™Z* ƒÃš—BCê'�£¹ºèº,k&‰Ìs®wÛèD¦–„$&JÌr3êmøÕÀhð…Ì£TFsëVH¼4k91­ ì‡ë2„æ ¶‰MK`nÛï4ö…nÓí''p…J³‚�6’:J€ %¢w=ß,/ÍÏ�fB'ØÑ«…ér]X‘£üH(@i%Nr\î7²PVpb·2/„]k–Ç×w„Âá ©ÌAÏ–F¹¶jàÈŽ÷?Ka“…ZïP>ç‘ #K�Ï<››˜^fÚb9E Ñ/òü ^a>¡ûÀ$<¯\÷ ‰¡oa7sã×Ëõí£L èl· vZD ç\�E«[hžÈ6+þC.çΪT¤0ÉZÉû®ÊØ î1AN°©Ó®Èr96¹*ÔZ²úïè5® M(¡78á\ßÔ¯”©Dêœ�u€M‰BegJ³V×Ñ`�è´X²cŒÌrj%N;ÃÍ=¥ìâI‚p6çbÃõ™˜ÔŸÁ¿)è"ˆø™²¼Ë[µ¤x63Î Vµ[þ eÍNy§¤õ¦• ~ž_R‘jiMï nOx' +f8?§§˜˜n%ç2Ê�à¹Þ²jf‘,†FóËFƒ©ˆ–žXÇ W¤æ^³7ƒ¸*怙E9¸%¹¾Àº¨pÒ„x•¨ÃN¹€æŠuÄh\S‘z'°n– ÌB{W%»s1iŽ4ÅBYv˜‰´‰´žÄÙ¼b KXD �Öd¬ Xµ© `ή¢GF>ìU©íàÄÄ–¦Fÿ«Aб3} ‡š¡·ñ€©ð L]ÈW HŽò„¿—#'«D9¬�(ïeª«©À'ÊØÄ�go9˜ %ÖhÅ:³¦oм(2.¯äX‹ÇÖ¶r=~3ú·„PÅ»½Ï:G×úåØÓç4�†mfæ*©ÈxņÚûÝp˜¤Rl(JÆØ²ãòA™"À³–@ÍMlÞõ�XŸ³{Œ [:0=ëóê˜ÛÔ^HH–A³ÍƒþJò´6AÆá}Ní…¸)ˆ‹²îÉf%ëOÀŸx4ª~œ~h†Y"3û¨= ®=ÿL8ö�Éõ™È&94Œ¯˜¢4•2OÙ·”Ñ Ò)$˜Óá…ù„a’ˆ2c1@5@51øih  4ž /ÃdzŒqta²”Ï�kR—(JÅ«V‰Ï,HFCt\NäCUM‘¾jž÷o¢þø›ØA4F+V«¯Ÿ±?>ð¹É®fÙ² X)˜õDLÿÀ¡%TÊ«ùÈð¹´O s¹‚,PvT7@�Ž �Œrb ‚' YhSˆ »¨Ý?¿ñ|‰µq2 Û”k¼*æ:Y´rP%z˜�N ‹ñ/Bv¡h…`Pr –ö�ÈÐR~+ó•LÔL¡=ëdçNaV¶\™³ÀÁ¸¨Ã„ ä“6*Ø¥lãíùÕ@@+¦Æ}òÚløŽÄÔ*Z«¦…¶²ƒ˜*úaPˆi&'h£àehç¡ »ž?9:hjEŒ…)=„ú´Ï'n€$¤M£=zòkW|‰>™"rÀà‘ÑŠÏGòc£úrôàÃxdXé�ÒH™Ê™pYÑBç ifãɬB½iŸ6øªN`î({¶LB‡R”Å­£ÔÎÑ1Žxäás´G+ô~Ép'¥œ �Ö¤VÍ4•¬ ûã`¤ÚJð¦tK9 í¡…O‡´ˆ(tªç´¡Ôöö|t_i²‚ªÁ¾È¢ôC~ÆaŨ‡Û>8uRU1~{ŒJçüŒaï™Çïa@÷sF‚ÁUŠ{üÙ0GvNÀÛì8)Óÿe¾¥e«7Ä'ÃÍï–Àï^ï×Cáóq¿(€Fí`í Ú/ÚÍû•’.±óÙ° �.Ÿ]mCyàÆÓLe`j­MŸ�¦]hÅí!Œ?”V-¤€¨M6È:¦ÊÌCWd��”‰É±\€²ž‰1PèñûÉ{ñ¦Ì¤¶© ƽýÈ¥ x§Â‡ûK½ŸËŒH‡›fmaq¿a‰Ý¼?Û…–§/Ä÷cy_ÉTÎ{™H‰Ý‚>ƒÿ3Ñó€�$$§Çß2˜½çQïÏ^Š�vÿÕJvs/ÿiëxåÿØB3…ç©ÂŸ½”ÿF%‡9 &ȸñàý©�"çsþ.a&4Ye^@¬��*>¸Mí³ÝTå+£¸.HŒö®�œ­Ý4žšç¬ÏÓ)8Hô2Í;÷RY�Ìÿò�¼²b Yÿ­VÞ#4»ìˆ³¹Ð*¸¤êñóPGˆhµ„�:J›}žê�ŒÚüÖ忣ö!ÛnÁõûöëŠñ�þ§ Fq%¶ðYmó†Ÿc.±Z Š˜­£ÄÒˆ¨é�/=Ý„Éáa&µßV¶€ˆâ Ï‹›Rë?Ù”£ÓoBäÁ�ƒæ[v„Gi§BmJ ¶šUËä ÖèBÚG97k¿øV‹%‡(ÒbQØzžAðÌH±…�Ù\QÀl±Èk9 ¾ˆº"Çò¦Å¯å2U$¿ÖÏËÂJEëfñ³€ãQØ~ɶÚ¨7‹ÖXàÆ¸ƒÌ`´ü²°mAŽïÍ¢5bÛ� I\°¨n™L­ý*YX·ŒÊÊz„ uT⣃”pŸ =-ç-+r…§h-ä :±¤#ž î–Ûz…‹Ý–)rçÍ£õ3K dþÊå~i,|[ÏÁ ¹Íâ¶ ããöý+¤hWÛHÛ$àöÞ]INÏEj»� ÓÑE›Ådã–3oöõèF®pašy ·YŒîQ¹³�ƒElìÔ# ÆâµmBê7vFÊk_[µù€$,xÛ •‘`YĶ!ǶÈ7ê·Í‚ å¶Y̶Ñ(¦¤Ù6 ?¿”› :Ö?¶½ókßñNM1;¥E°l; %–ü^�¸�¸ÐöÂB�óho³X…Å®,ÍÄÂô™’Û I‹:g}_3“ËãÎYŸsþ^á.ºƒsV¹ç ÷¥°~V{tç%{Îjç¿%5ióœ�"}œê°VÖIÄ<ííð™G^¿æk$�9d}¨¥‹•ŽU…•Ô�õU�|åki¤`½U>¯Êƒß.k[]¥1’—]V3]õµÒ=brC‘aôD uYÕ`þ‡õ~¯ÞÐ_hÍ �Ѥw„]Vc~ø®´QØeÅÔµ"\ è±Þ²'¦åÙD��í7+�Ï ‘†u‘=‹>—&aUÝ“ÆÎ=¬í9±Ø‘Y™!‹‰ž£ót¹A ÖWö³=VŸ=5…䪠 Z=Öö@˜;�÷X}õDðb=Ö öœÒÌÞ¸b±©ÈÜ uÖcc· B* ¤2èÓ{¬v{Vå²6äN!&v6’‘"ÈÐɾNïU²(Ûp ÖJ€]¼+@t�uÉ@±ÄFÖßúµ¼l©<©XWÚs¯¶ ÖŽ. k}‹Ð¢v}ýÜ ‰êî³ÀCƒ÷‘íµÏJ¢ Ûg]ÆDZð›w[Vùl «_DÁu‚ «k‡Z0Ås´ø> Ѿ±‘•uß–Y`Ÿ…%.£ä’UF¿Ð%+ÅK¨ÊÉ\²Rº„HèÝeE C�v!’…\*Ÿ:]›†|Éí¥X•nòŠåé*Ô W¬ßºRŠÜ]Í|Åú.¼Öf64 ë½`5”\ñšYúƒïú‹ ¬Ú–ø˜};”#nÔ\±ënˆ±„Ž‘±´E|Ūü £�¨R³NáÊ݃¹a3ë B&Ôr+/6¹�âýžTl„*Llt EOóHÁ¦1 3ÀÈÀ%¥íXÝ ”L…ÔyákËëÈb«¢�ÐhV�5•¾z°¶3�¹)Ä.k:‡Š¨ÂdX¿6pr9u–ê�›Vd™© X}ÏÔ:dåe‰u2!% YÉ´¹›!ëYW54Y*|ù;dÍ/ÚI¼l"¤a³´¼…ŠE• YÓB´ž‹<¡œaÈÚm™æÙ|!2ôÞCVùC‘ÈùÌž†l €œÍ|Èšù‚%$ûÑ»–²T7`ñ:d-~ˆ…¥÷¥CÖST Yóß®LAxΟóÍÆ”gYf Y€…ƒÀ 9d1ŽÊËñl]Ä�…ù³8le1Ms$t!eÈ"º§jMžrÈz( ÷¤¶Db¤|ðrÈÚà3�!뻆æ³È�e9b g$–Á°F¬ÙŒœ\Ce)2�*¤cma„ŸÓ½Ûk”V€^g&ý�k#5ŽiÄ:À(ÝŠ¹# Óc,¼Ó\âÍÀ÷äF,$�'ç4 Ê‘\QJ á†1k×crÌ>bÕÿ“ðåå «úéôö2à Ÿž:ðée²qÃ6Hëà ò›°}zÃ.ðÆxÇ,ÿM+`ì(. õPÌfN^k± }n¿ž˜O ä2íŒ.×c6¼Ç4A.fÅ»PçÆ¬ÄJÏÅŠŠØ˜ßA¥$®“ù×01ëÀ:yfÖ!‹�Ù½žx-²©°)àú’r‡�$–YKz–²ÐØ‚¢bÌ(ŒwÑ@Ïa¥aa,¦l5æ3|LzÝ1 ®Ø,Ci³FCàÔTÎÇ<ò‚¦ö¶ bÖÎPâ&še$6¦âY'Š6>b6,w2Ô:lÆlè=ÌÚbÖLcåcUÌ:ú؉Gµ­A'G &Î&Ù‡jħ°þ�`A÷í'¬?ßÝyÎ÷ ßNf1aa=1””OXHOÄÞ X¸NÄFí{ó ‹Ó‰ù#æ„EæDAM][¼JÀš°ØA}ÀsؽéX€NèA>"¿C+­‰Å'LóÑ•ÎqÂ"o¦{ü€ßTx²p›8|eŠÍ¬£ ßoÃâh"ôcÈdoYgz›Ø²�Õðí<øâÛÊýž<±B5�G€š÷t¿  rËx{V[± ~HÆZË­u!¦Ý²ë¼}œÊ}$ÝñoÊùçYt'ðù©»ªª:ºÃ'k…= `Q~9$'wl¸çöé 쎕§Ø‚'ö ´én—Ë�Ìúþ»½Û3ü¼ÑxØ‹Åò�’…w–wl¾Ú‰ö†õ o ZTè\º®pä÷ßTß-€Ö²|erCO f…ö3¾ÿÅÖŠ:jc ªçÞ²: þžŽ7‘ˆ…éÛr?ü-kGoÕr*¦Ž.ç|S1ŸW¬UnìöiÅñ‡+Œ£¾p¯Ôá¥Â}ºWáÿFç�X'ø$o•ï«ýÕ ¼1¤é-€€‰}‘¶7àÿñB†JïøüUöŒ®˜ÏÔÜÙí#ÿü8ûè ÜGKãg„/�v…÷|èÀ*j¾Ç×GtU|èÌžãÛ�ÆöñŽ'žŽô_õ4Êg=õÁ>Ýš hŸê ±–#yß?Æèâ`ª,²Úçz·¾'@9™¿MÚ§»aJÏ@)å7á}Qå+yöÊ'ïÓM3LväbèB$€³LÇÃz$ûZ÷ Í3}þìýÒ7‡�Þ¨t.Y{=?|ø”Ê–­Œx,ìd“BžZñ‚ŽN¦éi¼ã!|#ç"r©ÁYrÀvªf3‰ïäýWÇnÙî Š·ïðgèïÔ_¯MÖ�x‘ÎO‹T&—`Ž0Í€oš@ü™¿” “E#‡¾x¹™T9µ¾^@Q–)ÿlݯÎK舶r"»ÅW#ÕÄøv„.a’!×ö®:—× «÷s�ÁßoîJð%ÕŽcŸÇ ã O[¶üU¨ñYúH\ùÑndâÂ09>mW»¼^ÐÂd)V+™G‡4‹,^Çq§AI÷QÑì–&Íe‚š^îÞŠ˜î¬2}#¬Æw+» à3vÚÇ á!å& Ñ*QáQ’W9ä-Ê?Ï{„ÒSø|™~Ë`wK|�º¼<‹wÄËÛ³Èë"rŒ‡„�!�.š­þ ?¡{õt·ÿ^åòÈšðy¼¡×W_)ÔÑ·ùAœMÃU×ÝšK!îÞ`•Œ c‡…—Ÿ«Ì͕Ƨ Ÿê÷ÕLîúëÔìI_£¥þF|�ΔÞQÓ½_á7 !åà! 9Wô„üÙÏ¡Tù~…z¿QÅ‚~T#Æ_Èøª±ö �ÿÁ�½ŸAù nß7ìuÿÃúÁªYÔ&Æzì%ijàŒ)ùYÄx¸=�†à"‹føƒ%û6ξÂ{°�÷O^Ekùxº}ÛrR{Á¾à_K(øOéÅ‹ÿU˜jùlÙ„7Ä Áìø ßý„j/7iê´™IJã¦�ð›ei OE…}ûdá…Ø|ÑÉäÚ{×î¶‘3]ôûùΚi{š¦¯ÝI+“ô¡)ÉæŽn-Ê=K $ 60!‹-û¿Ÿ÷V€Ud;“ì½Ó³&–- P×·ÞëóPy(\i”1s½èRçЗ#´K±RÖqay°Q¥á%èü(`‰íEJв-htÜ€˜Çå¢C6 L?ÂtYeõJ)ËOY�/ª”nßÄñ5Ý>Bº¼ì¨B?AÉÿ\¦Jàñý4&‹Ð”?ùŠª¹¼Xiýz §‰×ü"áï€t®Œò�Óü@6Ã/¡¯´íJü ?ôéL•“’hÌÓO£¶uF;ç_ª¥¨61ôe_†› Ȉ²³fbŒÉÀ,³®ª¸ø 4ÿ–ʆøÏEDãÄLŽg0BgÉ듊ÌbªYW· Xw3¸nñØÊéòš3ªWøšÝ­¶Yè72bÂõ”‘K)ñYZs²©"{PRN‹yƒæ­lsŠ&¸!è„C à”•úZñÐH Ê º ÍÐ^ƒvÃ+Üy0[ÿž- ÔÛwâÄÚ;ly*õS;hݽMË|ó“ýÅ®eÛ‡j¿Ö¶*ÞWÐ È’8º„Ùù‚ݪ§·ÌÃd±Í+ŽÓwWtAs!ÍË|óhŸÞÌI–Š}ûüÇ'£úïhžø6—;㙋Ml5ö [@G‚¢ ÿÔàù¼Þö�Ö óu’bLWMÛµ0Äa pÏ(´ç"‰©ÊèC1‚ešsæŽT5U¥(HÉ N$‹òLÅMX°‚dž?»ÚÛÞõ…Äߨ·sFÅ×´[°î–ø`ð¦hÝx§Ô¥>@ØÔ�¬9{èÄ+`‚xÓºB`‹'}ÙØÇ :¸IâÕº~ð†´nY\YÜ#4¥ZÈÔZ°­ ‡EœÚ/Åæp•6/8FŸñAÜ6ÉÉÎÕ¦š[P šëFíq±Q— Ù0RýÝ•æM(iX,s�o7UœÞ0rC!PTëÆ¦^<ŠqXWa’¢uƒ(öo]E ?ÀØ”,#¥UÔ/¸°7?toͧkèUÿ’—6[]LòÍŒBw ìÜ Øjn×謂?ZqÌù:N�OþõƒkØ9§Ïìµú%× ¿Šs·—çAܬ¢jÊy¡žnÈíÅúü›8!r™_]†¢Svœà©Õb jɾY›[Õ}a dfC Òc‘V[xÝ ´$õZZÈÐV­ ¤TêŽ:¿ûù¬.ÓQŠ›WÉÌRÕjäˆùHÊ/ꮸ1AÖâ嬦ôªÒÎ"ÕÆºÀN®1Ø%•ÉQi½Û&wwŸÕ‹%ˆ¤ÝË5‹U}=žB¹D4Ôcó ²Œµq†W0‡ò¾zô0ødoË'N{sá?uê‘ÞŽjЀÖì÷¾žÕUÑkBE{ùÇ™Ð7e…ýèœÎã0ý±Q¿ÚæÎñðça^‚ë+*”¶'§‘T²;#¼÷¢àé~ïA.¤pY^œ ƒÙìõ08;…Ÿ¦Çcø_¸]Fw,R’¥ˆÍî-wf–¤‰äXÎs…— 4«g¼¬©>ˆú¡pP¼[2„良4�ÝÆV–³s³7$RÛâÐ{ZÀÁ+YrÃWŠà€��¿º¼†Ë¤k•þïSÉ®ÝW샧ç àá�¯ÇÇ;–L½’‘£P¡oàÔûŸ¶n[áFonH¶tYa�­uÁ| {ßîG֣ߠÅÐû°‘×'ã—eó¬ H`M¢Ô Vèñ`5ÂñlXkA@Ã’×x�žÆ�}·4糡ØägõyrrXqX¦0A•ÓQß²bPuaÞç€ÿ:>l½·O¢ß9Ϊ½;Šßº#êüÞSF÷%ãF – ý“ðGæŒÈ‚^nM Ú†K ¼m\`]_ý‚1ŒŸŠgþ<Ðà`wËùI.¶Æ§_8+0"·—CbÍt§Åa1ÍÖÕ¦%Z÷Æ9‹¦t•“[6¾E g*ÍX’ÁþÂÛ·a Ó¿§p«R<{ó¬¶7ȃK“ºAî„5_æœx œ\UL|ÝÞ:i¦õ¾Ö}Ø™Áä�‘xYm6yÖ‚,­Xßdz‘óU4ñµM`¿äŸ/y¯Ïr±Ó8æL9̵ ÅÂ… Ij†îªµ S0\7¦TŒæ¸~áÌí=Ü´íˆÕº¨â9Û‚æ#r©œ˜.Á%¦aÙ»&n·�š.Y|tÎsÃÐl�ã<ÃÜÿ=Ã-´Ì»¸j¦˜Ñ pÁtʰðñÕ3𔬾Î@ûŽ‹£Ä�©4Ø" ˈîkÒð'Éwü¨:Á�µ %ýænª ¹,‚I‡wÎí’AÉݨ8š0s‹4;½–.¼ž©„´hÎG¯ßN¢ÕB™@W¥SpÐo(·T%Ò©åwN»& ºÿÀœ-6FæIƒ3#IÊKZV\7ëAæØT©o#éÝó¡øêÉrc�ËlYއUiþ>Þä»+^敳¯ÇÇÁ〘uÚ],uN(RfñÆ{JÌàK…†h÷E|2ÃÛ2gKŸFúB=ÿ�åµï‚Á1iV>±ô6LsëãÐSЪ ï ¯u®œõÜŽá2öû…㬠ßcjŒJ'éí>PòïÑŠàÀ�F¿c7 >Ï´%m•Ž[0–ñž[ºÏçÑøêÂÝ…÷êÖA~†Õ#·»I×h¤ˆó9Î"�Îíƒ0Õè CÖ§ÓI9O;;Ñ;†h¥ ‡ÄÃàÅ8Õð¡G¸ŸœSL9¸¤I'™í� ¾†¥/;� ¨ÐÏ'7q´ÍûRóõða•ò-tCi£ wƾ»ê0-1^þ“ñ²t†QŸô˜ v ¶úOÐH.)!5o°Ì‹¡i-q¾ðøT¾ì–âµpnc^ ÜÆ5•=ÆhO%/B²N|Õ û\5M°á¥Ög¡›¬êœÝª 2ÒcÁÙë³Vá­ošàA?䪖÷°��g¶¬$#/.¦Ëñø0+×OÏ]àwWÞê‘Æ>üN]�±�$/ý†ìŸbm’ðÝ[hÎãß8FŒ[¿A[!§„M²¢ /ô7ò'¡Üàƒõh¾uºXdw5îüñg©$Xñõ@wUËõÁ°Ï|™{îqõ¤ºg,¿›?^Òàyü¬-·:jw>…`¶¦¢>LÎï¡áÀ`oâ�5ªølÝIæîXWÅ2ûeÆYEY4 �Ÿ®’òÞêzJ7ŒÖ)-e£o+ôuÆE¾Ïäîc­UÐîw‰+pÓÁ‘„ÿõò@Ê -Im±q +ùz˜Ä©›Ý8ä†ÓҖ߸÷lq¥i–áqkR´]è¥â² j%xpüò¡Vͽ]‘ΫJ¥I¿ÜnÜ+“?,Í0]Aÿ²p•Pâ£|‘ðγޭ‘Ó“Õk ‚"Ë£×R�âKkÚ¨÷Þ‘«¸ÈÙæÐc]O);ÅgŸ¶£†ˆõ Ÿ#ŸÑjkt~RÒ{¾£–Ç÷bçò;®ÏÎwŒAýÀ©>Ô¾*oSÊ«<0 Sræ3ˆ¼g@çŞà û1ÉûþòŠX4°•Kø5ˆ k ÛdS7…‰nλxLÖaõWÊ>Q7LI×À½8U´è¼öaXbõ±‚yR¾nSmN—¤®`U)ašqe è$„(•2\Ž Ü}p+ú«Ü‚xTVD÷ŒÌkq„‚†äWR™ ûÉá0³Ë‹�ƒy,$Ž›í:þ~ïø¯˜9Û·!βEžõyl·5 Ö´û‚M± Â%ÜOí #9�_Y j=â”Q¨9·„Á©,«5Á£sÙ«ŸÐ}„>"U¹Î÷(’ÃðÙ²ÝQ�jóH4ìx{sW4“·Ì=uÍ6,ç†>,÷üö®Ìñ¹7™¹y@Z‹kæŠ'Sé5é´*og­<:¸«4¤¡Änßgˆ¿ {œŸ9-Þd™s¶|’#O ÆB7 kgÓc æ¡Ù"M1ÍXE°—Þ�ÿÀ¿ˆé/eFñ]þþR�·Îk ;£ç©Ù²û¥(žÇ “Îè¢[¡,TÇ1êUûüÜW×Ϭ3T8/R�—«Àåeoa BÍÍI��õ ¬Ë`ïéÜ1:Çå>—”GäXÜÀϰfÉÇ9I[g‰²í&~�Jt±¦«�â˜C¦î‹'AÙ¦’É”J~¼L6×Õ|ß~œ-o¡)Sغ�AÑ‹s"ÏãgÏžÿ+ý(<­�žã?<}þLºó¦p3õ¹&Ø!0’O&yýߣ¸|ÓOD ë´*ÜRá5¬¦‹ò «:CbØÆ@gă1`2ŠJ“�ÿΉEü�ŽþWx¡Gñ£¼XZ½_¤Qñ$À6ÍcÆ+yŒSWnÃ-$9þa ÿ› ÆvÉߺD‰rt½Y±Ÿµ†q½Åœ€¹ó’ 0º»$U}x·‰³7xw»ø)…�1€ÃÇÿr*ýƒŒþŽ‘Ç<ã¸&Þm×ùGŠÐÒ {ö5Èä,AƼzH~ò£w Œ™¥tº¯a/¢GÃÑ€êPò>d8•y¥*Çt9â*fÊ–”†«ÒR¨ô �³9-ˆ*ÞH •óʧ¡JÀPŒªä [ûØíf e�°I©-Å/� CŸTF8™ÂDd�™ ŸHlÈ&öB 8N~a·¿ |"_|{ ·JÔ#¥ˆç«Üí<é-BCHõ é¶õüc]3BÕï]ÿsP’ŸƒaVÕ–ÊàÊ¡ È”G£Qô"KL³ûžŠ©8ÿAñÅçR_�/+¤^ÈQ�l­8n»› T‘(â�xÍ{çΚ�ü õ–FL_¹Ú9^Á­ÑX°ÊÑQypbpš,iÜ¢_QÜ�g_U]�öÓ‚)”p©â2p†`l“ûZ¹øM�û Lî§äˆüjƒ• £à 5=cŽ)(ʸYCÔ,eÖª‹¶A|KP±$à _ÝHÖÝú�$@#†žYT 8O…zг•ÉŸ"º5fcS’mtYª lF$‰ßçƒb4º„¹=¸ïI�¡ˆ� $ìÉ´\ÀÏý:>$ Ò�p‚©DÚ ·¹FƨåÝ»ºÅ%Ó”ßÍù‰šŸ™’:¨ÜÝ$xÈaï×ê¤e§äJ 19~6xI™ç˜Ð}CG.¤cÌë¬1¢Ú^ÜÓ”(WqEA"¦˜ ‚^M�é}n=‡j©TÇð@¤ù²ÅU>nŠÝaM*³ÆÁ^]Ú`Ë+�ˆ5ÛäOó"o(?ÆÃÜPùŽÿürµthů6âï—Âf1Ó�U)ÚÙXNX "æÆ— K㢄û›¤¨0[QPÉÄ"òTh¸iÅSÆå§ÁUV\ݬRÂÞ2ɤ¶°‚]RWð8¡�!WÕâ‹;@€©sÆ÷�HŠ@¦€–BÁ±ú_mÌÔIP" Lñ�!¹ „7¨åYÉnÌü c*V×tI�$ÇfFb-ð¡(YîLi°H®È¬†¥ÄYåªwÕ’)¢ÝO¿ þ�kjQR©9Óº¹Êéª1]W2Eœ!€•¼:ýÙ ´wÏó-ï2 2�8ø3’ø¤+£÷œù¶¯±F7eœý£¸%ïÕ>UÒ0›¬ÏR &þå„ÖXi¦+0>hEQ4,ÙQü[ȸªT5b€å;…&×µcgñMR²°””ôY†Oa‘ÉJ{²ðèŽ —²Å8y ­2žä"³>° í*ÄÜnt¤ ÀCu€»çê�\ivf$^u-ï+Þ…!æÛdQÂ~Ù‘5{° 2Ií¯ÛÏQEv.Xkí¢z—76ÂÒ„…šX–JpöT�컯ژnñ¦¤êüYwtÛ&½Èì’¤ uÓÈ>“Ñ‚­½ÉGv]«×i\†ÁöÚ©hXfId˳/¯eÛgQþ®zöäÙ�:£îª%øpXe:”Žv¹³³R"¹³’s†�s˜o<èÅcoYå®Ùm-C1×Xª%ß*mpÁ°ÊÄ¥½ücB SvúPB#ÇØT¨>9~svxúe«‹o¤~Ì·*ìÒó\er¿ô™ž³:à”4^ä‡ü¯Û¯þAyÂâS7†¥NhõƒMÀ#[÷%0cJ+Õ„—�'oÆGÓÿ9>ƯOÏÇú«”+éÊRιF1loýb9¾AÆwXÑ– l¤™€8µ€lîtëXʺ­úLI[€’#ö¨…þaNN�ÏÎO_vw¤RÜ¢‘šÜ­¹VÚ‚ ØM†·‹N‹Ï)}f&? � TÖ?`·åSƒ�ÂZïl7ùf9sƒâ®”«÷ýLkB¿»„gžÌö¡L;©Kv«~šò¿>^´ˆw./7®茮Ef3G»(в`%SbãV¯RüY)¤Žš[)ÎêNHt¨côâ'v�Ï^cP‰ÃV�ŠÇzÏt›‡ýfŠ'µ‰b@0w”V±ÇÊ”;ÅÚèý§­vgƼæÒ>ÙT€¿3K£òúH­½%­ÃÕúSÉ_Øøµ�£Ö€YéÞùU3O1Âk¼|Qá¿§ÌÀžtˆ›‹¬È÷Ù�ÿÚƒ*‰3â…#E5ùQUBŽY–8#ª£˜}¢ŽÌG4ÜsêÁ&Yy¨ÈåC*’ûìjpš‡Å·òGnžÆö"GóHÄVGö¾y/ËßÂ?FòhçFpLí” ·aHF<9&Éo`÷IÇ\—¼J<¡ £«è*¼É‹¡¥¼[Ë¥Ì\8鵜1žÃ­w¥Ñîê2Pký~ì^£íXØ+”n©çË´’qa·gg¹0¼š'¯õBÇ”Ø+� ¡>¦§:߇@Ô#T‰ûêá4Ëù /Á«îQjzY$ºÁÿ”ÁepnÌÌä¯&#Ù†v@²†GÕ ­j…o× Rs)R…½(»î4̨_k,ŒÝP;°#Ô÷¦g¥ÉBMÖ%üÄ8¬ïo&ÚhÌc”‰D�ƒ  "^ÔGA*èBp Û6ÏAZçø©õ…øI!«µ„º 1…³t{ŒôšÎmuL`rÊú“ØPDPË™2ö¬3p'ä ®¦^ñÏ *OxŸ®D‘Û%å§•”ŸæÎç­Ñgx…ñK-†yï–¾¢·WÂ�Äw—³@`Á‡¥ìx¯ ûòñê˜^é=Ð +“¸HóÊ©/žTó¸Ï$Sm£[ÿ5`]ß~%hþ^'DóØ2R–¥*F�ܱ:€§dI¶'Z­{@0ÖhÍÖUÄ6##rCpÑ4Ùb즨�ß?/^<ê­áy]çXK»|Ø2Õî1è4&<j0ìš £¾¹5ÈÝ=Ö¾Ù@Küù2ÖƒnaËiŒóßÈõËïjämõh¯Tñ�wÙÙ4¬�> Eg50/äü4%Øès;:¸8 ÂÝyã"΢l£í;ã-¯±B^ƒ²µ£’s£~�ç3zmÜ ·W|RÅ™�þ¼´nøQ?ˆÑ AíÄTõõ1ˆ¬Fñ (™ 34Lûúr]‡K¶ ?V®¥;* €cWçfº+rMõœÒÏË`³k øèFÉE�$n­å„RA0�xN)™ddæµ¼¹Ñ§@%­œ Y–ó":ëÀˆ´»ÄbO1ðTRµMvÖEv|dg.jÙ½áz�ƒÏ3òfnÐ챊n½>Ïs7i¢¿Iv²ÊñV/ ¤•­�¢‹|ºD*s_øt‡ì–—ô†0[ÆSg9,:¤äB‘OjQ/(�Ùo‘9ï¾Ðâ[vƒ69q’Qc­_ëAG¯ëDäcB˜'M;ˆ>vÙ+®e•§flY— WÁEó^•¢ó�óÚ‰­šd²«qÖÛg›Êšµõ’³F¦ <#ð6bõ¤èVmr ëÚÞ¢wÑܹŸÝ±y®’VvŽFO{Á¬¶õJ_7_6&¸£oÔh®ãŒ*ø¢.t}ÅÙªsÅs›i´Ø��mlNXF?êÑX«Ç²n¾…âL¾û°Vîœb~½ßv¢PÝФ¬ãyÑ udÕÈT=(7ä ç»…(Ô˜˜Šà±º»Rí×ëA›ýnùVÛxÛlËæ“I†…À3èŸ`ÌÞ]�ûÝÕšqãBéó¨¨2¼ÿ�8Nü¸�0�dòwºmIÐáþÖµœJ¶…êü_¢3UÒ�lÎh¾óÊ`¨¬Û‡ÖñXÈÿ<ˆæÔjCœ™W7×Enì×Q KI—þ¦*ñ"ç_æÆÕkæê„[ÍðCône'f`NÛ÷Ö#Ðá6z„¥ßhµe‘sIÆFÐë£Á%ãÄcF`fö\½Åö¡Ù bnÅ&‘ãéiížãT­�F„& ž6,C@+·zÒ¼ÿÍö{€”!—v\ íSu6,N`烢`%ë™+XNùØíhq@ÆÄÀ~ø ‹0YMÛÍ»Ûðé„1b¥ë†ºd@C×1öU¦†Î,û>°Aþ¥ÕPˆM|³Ôƒx ¯Z·¸y�‘'ç4µ ¶àŠÇD-L5}À²=M¦›•n¡s…E\…ÛÒRùžJÕBMtá#ü_Z:~@ÂJW:>O7,Vü[8 ÞÊ­”r.µ�Ða™5=ƒ=¤*ë-ý›¡£dï#îÔU‹p¶–®Ê¯3®ÈÎ|�î ¿t–㸧\MñûœêB›¿ÿä"6„{vcÌ{,Ü»›Ó _züá³FÑaœ}UͰÙÂÕÂÅÑeèñöóhñA_ ýb@Nx0 ÜÁÜc1®¨%”½[·gWÁ?²¦EOgÉzíN8,Â%çÝë©­ÁåH"džùt×}‹“®S)·¤½k„¦}pqï9´bØ÷¶ä[ß ÎÝ„�t‹ôÜ—ci�!'MÊMÅ6«ñRé£Pƒ×µ|Ö#CjÒ™4¾R«|õÆý‰I?íŽc$kä¹3ǪÎI.ÍÒÖ¹}YFæ(ñ/£Ü Ýãx4É.IÑóx �¤Û<ö¢´_]cý¥çúkyMEp<.(.ì2ÑûELû‰ËËÕ6á›ü’A|ŠÃTÉ£à�*~Xk�´ªKªhqwè\ØXa%ÅQw®Ç8[šuMÏ•O·×£h7�jÏ™]ïÃÌw�8x²eÌB¨ C0ãK¹/¾íäµÐ;$žäh0å#eµZ…Åvï.Å«Ó&Z±Ë .J4jÝ g$X$")1`�`f…o•““i¹^›ÁzïwÙ݇ÙzO«½N™õâÂuÞÚ¼ÇFÓpÁ+›Âm>°ÕО͘ów\7ÃtÞÑ A/ý§,á«+ç]’\ ½5»îáÒ&oïnŒõ !7¤é÷BKú”ÈeWÅ­ãZi­„Ð{…KÄÙ®å],Ä`œóJòÖÀ�£æjt§t&boîåf2A›¨ÒyB59\&-Ù¿L- k¿á\cÔiÐÛ–NÇõ1…²ŒtdZUµÎsEîÇ‹Üw'a±Æò=ãÛã·Òüãl»B�¹{q£W+“ƒŸ§‚ù«U¸Þ:WÇQ v¨á’C“‘i;¼•C®Ÿm c¤ÐÒ½À„°8èFEäZ¶µÍ͉Ƥ4§RNbKÆž@S L¾Brðû6…8¥z7‡„>P£ÖðVÎa“͈éåÝYHš�»qèöuöÔÃqf”ñíÞ9k¸ýñ¹Pi_O„óšé»Û6œ%¼….±vÝ4Ru°’ƒyË�*¦ÛCºkEÂnójf³8nÙòfoŒ¨ï‘{öI½þž¸�¯åi¨ß¢ì¶é}¾ g,«æñnügBÒBê�ï´@_íiÖ9öýèöoùR d¸~9É·Íç¥7ò…ΑêçS¸£0C{,Wá‹�Å0»6Ø©‚ÝaR´anyÎì‘Ú8üåxkäcSˆ´a¬ÊVRà;&‰o¥íäLõló(΢à�€“HÒ�HÅ.’ÄcvY·!R®c¹!ŠTï±5<5pg�²G3Íßk:E¶¢ìf l'›ãŸ«ûîêb¾g‚¶»òäE—*Ѷ¶8Íj�œ2/X¢˜uaa¡‰W%$Ô:å2Bë�oYR) "Qùrs2˜·dE#ÐhÈtÕ®rÝþ�¢r…î£wž®±´�S8O|Ô¾ˆÿ #<Eº*b 7@¤GŽœª¢¿ßê�Ú=QäGU°§cËx\[]°µó<èÌzÂ’�_¸–QGøê[ÔnO!qbUêϾ{Š2Wô~*ññšëH£OñJÿLf©¯œ@‚Ð�;J‰¶® ¤¼Lµç2ä¥`ô6»-ƒ‹ã7 é©´7Ï�^gY�Öl\•à® i¦/Z©‹š2Å#¿ z¤yX‹÷If?Í?ýL¸ Ê:gÕÀïñQ7]R>×ö”(y¨_ŽYÉ9f©~»sk›È=©–Z«'V2*íxØ™øçH9þÝ g 0¿3�¤Ù |´Â€ž¸£Ú_“x{-t ˆGýK‡Ê#cvÔ²Ñðs{ŽU&ìs”çkö)µÄ`´AÁ•yWúrDŸŸ?‰.¿(N[‘‚âŸèb†LJ÷=ƒ¶›1ºU=±ªÐ*ÚM€±DÉ“‰¹ÌþWõNfÖ o*“Žæ1Ëúaw6�äÈóýe¥Ö˜¦ïu «kÞ£ˆÒå@„]>\ŠßM¢1›áUéëjX>ÜÉŠbÏÁ¦¼òæ‘ÂQ–�ƒ.0®…˜ózîÏÏÊ?××¥‰ÿtÏy”ðv}»ús¤U8ü[‰6.—òo«}…rm4ŠVžhorÇÐ¥wî5u Ð~笷@žºÞØÙV_9£™ÄFÔ0‹|˜nËÍÄaÎrt³ã håÕcÚØÞë 6_¾ÓT[8ìÈÒu°­PµuMmiE±¸Ø?’kl Ý{²%01'”1Äygë;ÕqdVáÁÀ�ûÏVcøwhŸÂ‹²ü ‰}çĺ¸/��ä¯Ñ,L¹˜œ½ßö+Δ±çhB*#a§–H¼„·™/8c WÞÜÑÃH)Ö³k…NÄ·ë4ÁVàŠº‰µi “õ�…[¤,åó1„ ÜßHû‘/þ¬ÉçÈ(ϼ5N Áa�xþ+Äé‡^0d/é+ÉâC¼!í8'x1±âåß©1Q$]Tc‡HH`àl*˜ ²Ü‰[AÅß+8Én�]” kkfµò1X ‰Ü‹ôë€Ê:$Y2r»éÖ0‰¥ô.5�A°µ¹ÿ” ˆÞqït ©¡DæB®_Ãrk+œ;Ê¢e‰§�—ýдÖÔ#oF¦±y¬š¼Mà~ÓÝV›çìnƒ%Îqžq•¢ÍÑm¡IA3IÃe“‹gÎtÌBÌ©f™Íñ?‘…¥ü€¾ä� HãI˜&îdŸ#‚åpÈí�É �XÒшö$Žz‘_„Î:!w”ïQà”T Ê¢ea<ïé"Àžªç�§ÈC¬õæüˆ4[~¨_²"ï½h솱À�“Kî�(Meÿ„È<Õ dklI;Ã_ÉÎìH°;0—Ë/BïõRÑ2p+g²0Ê   ˜;z„H« „GI¾Bµ�énÏZsçÆ .É­¹ø6U¿@= �Ù±CˆªQl\æŽF[1Æ®çtù.<¸Œ72R÷¬žb¥À2¬ó= ˜²îmÅNïÑEÅ)xûÓ=Åvá$Ó,öÍQâ çö˜jVŠ�ÂrE€K×£þrÀÙΓ ÿ¾I›aé!¶Ÿ ÙM½¼ÌÃs‰´”o|ðÇoJL™}O3QÄ5*¦¼×©Ù0{U“JƼ5ã°ÿ}\€+�}©ŒQAï4*[ÉÖ¹ûÌhŽúá)µgñ†/h§Î5ÛÖ uU?!´�Ó)�OƒŠ0°h/˜¾ /³Áp±*Û�÷äx†|Yü Œ]£0qkL8rîU\À£üŽJ€oÑ»›Ñ�R’.ÂZ ~îízÖÛ†·á¦eì.z…·»œ¨AÛSZÂfCìË®•çâëA;ª¹Æ-´‚Å”@Ì«2Œ-›Ä� ù¶Aê‰AK lH<¥ÔÆ£¨R½Ô 8"[ôh¸5� ’ß.ÌÆ˜ˆ™­oyêÖ'  ©À€7ü)ØÅ£léŒ^Mã¶ aüH8HÞ·ÓM#Ÿ•}¸UoAR²Å¡;R¶KÜ“´¨HT‡¿-�Ç2e–±ál ³l#ºîÊËpïŽîÏŽ‚í|æÿ¥�1¢;+v�ö_�Q ¨1q#Qì¨ÌQoST�z NÄwe¢ÌÀ�4F_²™öêî¤Tf˜ÄxL�Ü5£ˆâ¬‘Ö¸ ëÝC‚÷@cWr{GÁ t—Øp¸S©ë|‹½ Ô{fx#v:êŠb¬§ì2j{{àS™äãTÞÕ÷ÐÖé�ÙxÙ!:n|ᄼ1$�ÙF™Y x:_70ºDÀôhM•0ê( …F,l'‡Bn,¼&ÏMŠˆ² Ns;‘žÞs.¡ç “¿fƒÙç> Ù„eIm½m‰Ui‘ð�e"@ šÅE¬8sÑx;íԙ맘РÃñø(Ï�²ùuž†CL‰{/®  ÷¿åÿ2¸ÜmA6¼VøåY>‘œ}¿ùøâÉ‹=CS€jE$ �üÕ0Šf«5�Ðàâxÿ!LNÕ«š™Xª@”­Ø >Æ„ÎlqmêrO«LBC@;`Š¡<3M°»�ªF¸Ï³Ê‡Çäìó›Ì �9—{·k9�z0,Ÿs¦n—xÏ*iî1¿\X`ûŽíìün¯!«ÊÇÒT�”õ¾RÖ�ÿ}UÆÖxËÌ4Í*쬾âh8X×äÒŸ†íZ5…V«Üåò÷¸†Ñ|‰p ýxÌÏ" }÷ôoò ظ‡Ÿ²708‚ƒ¡€#"§B' "7ÙgÝ™²Í]ÍÓÙØ ÿ= ¯‹Ñv^ÍÏ}ÞBB_¢¡¢ŸEè˘l~¨H|îšiö-[5ä€._Ò¼¤RÂ3¼3¤†#nÞì™­j¸–ëÃrtÔ—Ú…œÉ^Ÿ½�Á;(j í”ö¿×p…»÷lj$ˆÁ£éË_Ä´¿Ïè9VaEªúíÎÿí×Ê3tqÂÁF€ÄxDè‚�ÐÃëΉN50�¡Ñòņ@cLæú‘BE>1^�”ó̱D2šäxné$Mµ¤ã´0ÿÕ®&ï¾}Ë ãÆ ²~qÓi2[¹¥åò(ñ…­RCXB>jJ”sYN‹·Ùþ€ËFï¿G´@×)m{„‰g¼ƒè¿I¸¡_tµ³·5»j¿c¸ÍÙ:tçÑQyѧ”z' µô.ê·XÝ+�¸¬û@Ø“G' 4îéCÜIX¶åa’nü¹I(é%)1™i+['O+ §lÅ'}€­*Ά6ù±äÚ'ŸÒF2™CÍ÷9h†Ù{)uIÅ÷u6 Å¡åü¿7‰[âOqêŠnàë0ŸÕИwWp‡x,¥×€+óŠf[K=uMsk5áº] ¶èpcçýgAä­T¢ûY¸ÄÝ -©›Ù²“é–œt \¥sèÖÿvE•¶æÜ.Ó†6ç´["Ëp †¿o`sñ È®¦ +’¨±ãèžìÇi¸õföÔ'…ªþ½©Ý„°,”„&9®­î¤($9àÔE!˜•%a§zkHí÷)"§•hõ~åËò0/Z #'\rOD…¢ îEZ)xãxoù',º64ñ…la aº4^©âÊmß�v~Ãqôã¤\!©/%JÓË.Ò›-)‡KÚ•îmI¬3‹ýR£æ×¨‹[JJ,Âó ûdÖžDÀîÃ0-ã³"oúiP$Âó@ÞÌï§:u4ÑOe²#V;-õ»KÛšØ��#ö{º%ŠßV‡Ú�"Ÿ%ãcvnËOo±¹g{ðRRlœ¶&\­£Z|=}ÛÕ¸¤nwªÅ~´˜=Œ¸£,ôˆr~åž! òq~)\“äHr³ÔyÎ5xx!zŽ£Ó,uS´IsÒˆÂãòµ÷ÙxZïˆÆ¥…E"z JSƒÕÈ3_rǨ·l|éJžöÜC7aZ9Ÿx :sa l¾|"mmYMcçštµÃ¤B§nïÆYQ—b¼qÁ9²"ê©&3˜ž Q¯Ï™t課¯Õ´wðzo~ sDžÕÃßeÕ zqzu‘¬|[–LyV <’³–íÏ¥ËôÓ°¹×÷uÎ@•7“tOa tʤ'ªV™e È³ž'ø�7‹ʱc«ØŽ ngÿ‹·‹ÝÖ=_?%Ä5þªù¸ÿøm‰SÃeí±�õ±„ß_x¶WÕmJ‰oÐÊ ÍÝJÿ뜈¤ÜÇ㬀�¡o>E°.‘¦} ? Ú�]÷9ÝÊÒ×îsjAu¹ ‘%h;FQö“^’ó5е-ةܚóÑ2¨Ýyïm Ûû/Íɵ÷lgÖwò—vÙ ƒÁ·Ã ÷ÇîµÇ¸Ó:4�Ú¢v©°<‰žÅ{få·n˜s?Rèy¼Iv­Jß4¹7ZT¨‚÷í“V JfË;Y­üž«MàÔ -àÿ–µôKøÛ‡ÄCÀ*•7Ø ¥ ˜.µÂ–à¯ÝCÀ"J…zJWz¸A˜�QðŠ7¿Ñ° ·`d`iPŠG3Ÿ=Í�æ %Öiƒ1Ò‰~SoIî�fV òóÐ7VX` .Zôì…c r‘ƒ<vB²LÖÈ–8;p‰†wûÓÙøåÑÁþÞ`zòzürz4½ïŸ†G§¯ö篦³‹óSdÇÌ8 Î^Ÿµ cG¥C³ÔÁŸth*úܔƎ5É|ºQ†ö1®JÏàݳoî·éKÑ㺪÷˜è’ÉšbåÚ¶£Æ™Mƒ­)¸µóDB{ÜŠø®ˆÿ’W3�?É�fíÆ¡Ùðt�™²Gê¹$äúhÁùç´XÓR*��TŽx &/a,!Δ‹™´ú÷PÃó{¥RÓõuM(<›$«lÞkªžÝìÓz€„Uy­ùŠ})’~Ù²ßΕ¥¢åå’­Ö›í1hSž æŒƒ§ä!Y…æŸÌ^ý4PU}nã‡ÚÒÏ·³Zë½ôIûÕÕZ3µwwÌÏ5…¸U 3¾`�²ojшA1ós•ó/Ég7T6ˆÇ$D—2zu×d8ñ‚'qÈ:R+r)•€RØ"•°Dp-AQÆ‚BFÇäTÒ?¹ä­Ï=�<ò8/uE[œñæ W=ZÃörfîðþ°8òÙoAÓ\V8P–ðÈñKzèZ'I�\· ¯@|\1NËÚW§3´0Š¿µµ~Áð¾»vz霸•Ûý�/:¿'•3Âï†7‹Ü�õ3£g&½«¼œhY±+/Šu?v„èåàòn|ò÷…”Y)éxÒ�ÇG¿ŽÏZ45xèìôâàäb:>:úËåëñùñᛣËñÙÙÑt2¾˜žž8—Ʀà Ö9Ç;RAkMìè'ev:�†/N^MOΧ'¯Ü×í øX\˜e¾àšØ‹×çã‹Ë‹¿œ\¾9™�L¦‡SÐÚ{ ýÍɯ㓋ƒýËÙéá…otåi–ó…Æ4wá¬å(ÀËeÌóMo‚É¿OÜ$n𬀬¨æk«òê¹–ø¾ �›ã2¥�€úW”ÆÚú U³oµ´ÓÐú:)¯Û›)+$¿ÛØuOtƒPÉ”i;Üi»\‡«®I Ú3�ž¾bK+øæGðµ>¨íÍÛ�;>†0ËÕÖâijXl¨ára[dÓß�9Fšù¶gg-óŽ à¤´wzg¼mE“e¯VÝ«Ð~¡ F]ªòOã,òÓB‡vp·5”¬Åuž»+ˆ,ÅJ?‡r2ñU7–‹| ±–ï´‹39è!æsüw%¼Æ ôCS¶oeµ éd�e"Þ©‹q-Ó8ôW¹wu¯¿;%öZ�A<âõ™m�‘R­WT͹JÎ+ù•<ü±z' ›iÅ%ÝɹôšvÜ1H› ýŽÕF2{Ú¡§é9“^ÊˆÓ ¹¯ØË=]©Q–ßÛÓ)KÒ¡ÿ]7a½öB3ù,žµ‰¨ø×9Ä}ü‚ãàØBÒŸ5»�†ÅÙÙ/A¤ ŸTµÚÖ¶]&:~jñmÀÛ —vrtÒeDL­�`²I}ÃÿÜž¯Ñe·Ú³$™$Ë¢A³¼;{�wGhÄÜeùLý¼Û…ïS�£Ž‚×á2$ X*¡gÌ‚€GU‚­gò!›Äºd÷—nZ‹Âú;£ï°·4_t ‹jq�±ÍÌnÛuZ-Ýn¶3ú�äc´¸ éÛµ‰iÁ£>y<îíG¯ëz:‹p2?Oú§ZÐÇïG­»¯'ým9y׿«üèý|ÚÓ½ÛB)x¤Â.QÜc«îlÔo·éì@�ø4Ú­P‡®ß«mù×ô°ÈsCÅog¿sKž-ãT±Íè]‰úšÐæ™U¹Ü—aˆ×+JÀ:TÔ Áƒ5ˆ§à Þ,F`¨ÌÏLm ÒÈE¤ùí©é›^qÑâF’šö½»“ÒE»Ûë°€sG™Å‘)¸Tœ˜OGo¶eŠO¨ßLÛÚâ_Æõ÷xgVûƒN¯i@dË7¼ñ{}IuÃùÜ›Ñ%¯YY*÷;šp ¥é˸mð�Fø~ð©ÔŠíÝ€?·ªùºê*¿nôðÄ?7S¥†¡Z+�uÜÂöW¹fQWu 3B˜øi*°¥BüQMLC»ß#Õá<Â¹š’¢Ž¡Ù#¯6 xõK†ÂÒ9*¿ÜnÁ7:r'/©(œÎ¢ŠéùD»©;‡ÞÒ�#=3u’�‚Ţۢ؎—žpÖ”rw9I-«bN�TDÁBâ]QI½¢ó3r•„CÍ]›Û¹ÂvЄ>ƒf);;Há%‚£xô. 8üjb—ž ÅS”/�oTiN8‹¹8tŸ«¢“d¥.HÖ ÞþÁãª,ÊøqxC ‚%¨�øÞ•×õÉñérÿ ïuÕ³¾±ß�(‰î^�Wj%mA›&`x =hÑÿNLkÒ,†�•YüñбÃÛbÊñ?²ÿ¡ì´ sllÝã ®&ñ M�rÂÝöI—é©%§ éò 4={nÊàÑŸ‚cá /”;çÓÎÒ~¬7i–-ÙLJé±ÀîÏà²ä–fª2g’]ƒ€¤ ß�º{èJú˜l×èjó3ª»Œ+ –žÁZËÿù³Ò)Nr7Ð??zêe r�×ÈÃ’ïDþkü~-”_óÍ:îæª ½N3b¦œŠRM¨D¥ZßRlFmmÛü[R"�q�@²Ûv‚· skI¦\Ú(Äj;ÈšîgÎéæ»ð“#îÞ�_8L‹¿ÅØ=8³kb aDRÙRaÿ#1ª�è¹sDGVXÆ’jDìœýÒ�Ùè=* �¨¾öËà«ÉʳoágÙ Ž¾Ç5€7†­„GwÒj÷¬©”`�Fk=Gßžž-¹fF°¥é#%B¬`•3„”-—i�8»w®Väð–ur^ŒµkQò�ÉmG¾Ø)3Ϲκ½›ú[µ±L¸Cš��EÒvÖÕ5ž?Þú2y;’"¯sz‚vñã9;6ަAtØQ.¤¢§6(˜E2$`'£Ÿz£¬½Â<�hzµh�Êìr$ ‹e�¡$ÄUêÏ¡1¥vp֙ǢëºoÅ×Fœh&š¢úèˆpÐÅ«1·mûþ€áiGÏ.¸1¼�xôlHûç!ª¿"2×÷µ6pdÀ59V±Ž¹'S:÷ÀYuþÝàÉ Ø³Ñ¹ ß)w�ÛoŒbes:€ÊÕÅìÛ/9= î•ÀÎ$çáp¬Ê7ßv:j ³7¦J»"¦œ‘ è˜@—Š�]%e!é™dÆœ#.ÜÞ�·GçNx•U£*sFîy±C,J­°‡#ùˆ˜ë$Þ°^o™4°¥B›´Êë ã<ßÄ¢›äó4YRð=´/=¬<©÷´ÔîT¢Ɖ½M iÂá[J‘–ŒŸwflŒgúÄ ¶ÌšvökÜù~è>»_8�hâh®bä0#XmŒ¢-£Ái(¼83–CkÓTŸk$žž YïÑ0u±åͯYoôÞ�LtT2]󢼚rB Ïîñ7.Ó«èRÕÎw™§®Ô*ûb‹uM\0™"s5Ó¥‘³ÜàÐSíŒwmÇVƒòþ¶Ñr§„œÖ‡p¶@ƒ]Ëþæì@mìnq/>P…ACâ¹' É™V¥}Æ)ÜW^7·¥nÚYïÁ~>k¿ øutVbõÃP(k?wöǃZA©|¨]‚9^X…·ïï˜Ï>X# ’¯³ªÒ +µ([ð§Û‘&2UÀ!"°Û7€Õ¬´CÛ7ήAÀcICÙ%�›cMð}^pËAl}­97÷ê}� �/ŸH¾±¯ œ ·@Aý-¨mû°»SþÍžj6�±TÛêð÷úªjŸ–.êÂ’ºÉd§1õ+éçí|+\{zÎ í¡p›¶–ê. Ê»Íbñ¡ýÉ Å {9(÷㜸—‰äž7Ü §®‡ˆ9`L&m†õÄ,ýï‘p¦Ôœ,-BUœ„i^î¶?r÷zÈUzÕz“kg¤vñ(_.įSžÃžŒËëî!×”?µÕÚc´¸‚¾÷¡­ÄšÔ3ƒÛi'tŒñܪ·O²Ã[¼žø°³â Ö‰]¶…àèÔ›�ÃÌØØ´­ÖÕ4hµ µ8e)•¬Å™iÂòå\”i�)' ìO”¡Š& „r °Ê]bi<ÝÃâ¤Êêóá]Ÿs`9$VyTÆ ×Óðc;!ÞC^zž<�Í&„M”b=Â…—•¦ùý=.«È¢q%Ìî1GrÙ,Ñy°a&ó+LV%}Ø:› ‚@N[sGj-‚•D5Aý|Ö±HÑÍ:N¡’ÄŽæÏ®×�JšœÉ2v… ®bYÕý0µ@¬`¢Ë<6.Ç©ˆRnÔ¶°˜ø µ\Öh,¢Ä®¾Ž ǧºeŒ•Ííð8Â�0§cÞp³ÅQ¶vÌfdl¡%¤ÂO 7«ów‡›À d_E gN²æ­Üë;r W,�f¾÷@#Ï�{HQ} Lcù8$ºËߤ€ó…ó%uS´~ïÿ«ìxA«>'gXbt®¡ð Lã›�<,øExáw®4$>Sþì]õìI¸xW=yúÃó—Ð]4¥­¿ý ³‘ïjê-&MR?ׂêtÿÿÔ:1èÐ�)º¯x‚ppOŸx_‚ݨ&…í4)4¶«O�›Ä¢d[Çfàªɸ~êÜJ¼ èa!Ú"¢§tƒ3üÔ½q;ˆþЧî�¢®eú»¾âÜ.²ò  ÝȹŠfñB�÷tœ¿:8™LÇ{jJ€1M2zÁLÏ&¨�t¸­áR®j|qÈ„”ëV1¡Pn4��–Ï~æ«je˜*z`÷œ_ôï+3„wݨs%(¬•óZýrî‰Éù»ÛEt1�œîµOüõäBǃ¬¿E+†«­•’¥õÁŒ‚t…JAqšËdA‡|ŒçÁƒOL‡ØC¯d;??=ïîú‹‘¢«”´cÊ|è-„éQmQËàÁžN9ÏÃxÿ-¬¶ìή®=§Àakg$oÆ”šžÿàî�û|½�Îz¬ï3_Oì/ÙïlA†¥Ê�Í7E¾ÉyJÈN!?=9<õÉóýƒ³7çãÉôÝmôü$Ø?hqf".QÁCPYã_Pnw¼éTŽLžp¤3X5Ø,lÄyX’² R9V'_n8³v.Õ¸ R�s ü WΦ£ƒÿ‘ç+ÌíÙ/ªu˜ªÏ­¸@1ˆã$£@¹ÈØemwö×ñ!tº(øŸ1©lá1*Y! @ÚèÜ�D5BRhsÕ•13£FLà†PPǵx@U†;A ÂÅÈù !e+”±¢mEþQX©y•ª,u½ås¿�^_TZö(aÃR›$‰9~ ú¼E\OI*ºÛœÔc6Œ‚ž?\YQø–&Fxy©CŒÅPC,‘ªF˜Šj]wj Ñb‡­ ¬BC{“ ¶(Û�[2Ïl‘)mÔV$ÎöJ{qôK«5×{ÕGÜÃë��Õ´¶Œ‚vDÞ(Kc««ä1ìÝÖ�È�,oö¨p�"yW&�˜µßRÏ‹™ öé[©‘â—ï:.oQ²X9–Å–ˆõtÆöû@Äp-™�{s˜ˆ—Üæ²æwë³Ñ€I3&aÇebõ@gì#kÑ›¢;¹áà} zH¾\o6ërïñã�׫E9ŠoCTOF ’·M›ó#ÛÀ:†�lJËÅž9.ØŒ/9ÄØCÄÑ,�ˆ—ç‘З­-½›%Œ®JêÈÑ<˜îÏ6®{ñKôU”È–U ‡FØ«3R× ¥6N ºÊ"ò¥ËA!·¾ËR&ïcԭγ:—êVô܈äV��†Ù¡ª 9gò&þM &É)�aÖHF¥Q©Ð–É«–9š› �q�Ö¤„Ï;„rç¶7‹Ò¹9iM8ÏvÕû´6Á9¬Û Næ.2Ëà°ÊM˜ýÆ1U‚õÝ; P)ruñ9\õta%Ìm ßþU`Áž��‡:Ó¹î‡9y$~�ÔÄxvcÙ7„?Õ;L“ü |?¿Ujch~étï ì¾óK�<êÇ·ç ð{i™*b6ë¿û@/¾ñbBƒæÊGlAo6a'пÇ$BÈ1�/*’Öv5RrÔy˜e—•«Íú%VWsÐëz_ákÝ© ]uÐK°”Yʾ9™þJÒi®¶iv kåm–süþì¸cU^ñ§X£I"¾gi,G Yp?\iF– ¹0áyì Äe#ϯ}ëpï õ®î#f>}ýtkMÿ¿cÂߨ�Õ§¼ç•Ðbãa™g°¡¾â%Í“­½Ë`"vúp_­d–4� NTæ¦'Æø@-xUÄ[\ r´èòHÈ2±� 1¹·ó£ÅS†Œ'úWhNv�7u?ůãC4öþvþ‘׻ΘÎb=9ü�å³K¸®o“¸¼T6}“qγų¥×53šm2Vp¢1¹JAº1KM¡™˜þæ*EPÉmpÞNöOÚF¾¯TòÆ÷jm¢âˆ8£ÔªÍYœ^®ûë8ÇÚßA¥ÍÐñÿÍfÆ|ŽÚ=ñºddE±�›Y¥=X!9Ì#­8ý”?ZU>‰£H4BM5Xy¦xKÅ×ê¦CÛ„£ÇRíÔL¸:r¯†eC±Ò0¨÷¡\\X@’ûªtA ÜCw‹…„ªP T¢5œ¤ëKX™8¾ßÕH‚o`z¢ÖåBä‡�Jë+w¬ŠÚ^UŒ¿RZ"8aFë@~7í �x÷™ŒdX,%ÒopÑÇE˜jJï á(-œþs=8çDØÐ`}²Ë…áYa—K\äþ*´àºfž:m.²Žë*? gÃY ž= Ž_Š(µ}B¤ ‹~Ž…î4�™i«.Ì´c·#%gb¢@5çŸhñ"iø‡…¿•Ž�¨dqóÖ¨£|‘Ï¿ö ãXVž³Z@EœÌv_FÁF½T8U— �RéWäFEM ¸áªÉÄ«åÄ©…ö—�](Ò3�¥¯ªÐúO †X¶!óèsÅßw2™:XCÏ:&ÅŠü‘UÞ�ê%*f b>ïªgOz(nù«§Õ_û$µâœÄCXŒ‚S*{ÁT)O ŠRÍx‚>3<üQ(Þz< è³³Jåä\õ*¦0>kfõÜtÅ®ÙM�»F¨¢¾‹&§pi^ùÐwqàT…I˜º6h êÔÚ§n¦™ÚPݽÐ~\…±jœûµ�É ïÇW!Øçý&ZMU6Öšæ;s'i¹+«¯>›õ©t¬MË!tåJúl­[–’@+è»Ë¨„™ƒ$`Î&/ó¶Ñ»}å¶N�NŒq�Ätlà½wkW…�àÁAÚ�Ä‘›j:çœY¿ù“Vö ‡ (þÕ6 Ð?¯’]/ç@:RÕ5Ø6ù¢×Ô0W„bÿ;¥’§ÛdšÌ…%š¸QøWœƒK2Ø©Èð¯Œ.Fõ1�;Z§•7÷ØÎl˜Mõ7ÚòŠűáw;sïí�…^ LÜ[ÿ3[ô “M[iȱN­âè�r*Q²"ÙÁÝ£VmP †¯jÄ4¨ GjE”:T"¥-™¨Ï`SnÚ]ÍÞ&!²Æù±)úŒ™§¯íÌõœ~Ž’ã©JîÁSÌ}úüÇ~xþa¶ÌƒìÑŠÒyq½z,WmªÉBJö5hS§Ë.­þYîJ£àLZ-TC·¦9«)ÇбJ½ˆr/[bìQ2)=«£Ö×……å§b�$žå~¸mݺŠRL'�) L©“„‡TŒT$+jÑíÁY`©nÆ3øZ­7£‚QN]tù#Û0¦U¡$å¶ÃÆXP’#¢xUk,pBËØêÿÑ¡7á¼Û;7Î(3ÝFèÙÒ•d§ØIk–¡Z*ÄpUëÆ⑃€BLͰîµÆPgÆ)ËÐ�ÀNñ“�S©­ŒJH#‹|%•ÉBäh;ëÎ*�/(öâH^ƒ-(WUè] i ,È�¿TÌÁéfç–ð¤Y¡_�î@)# ²Âtƒœ‚»6tì¶P5Ü]£è} XÇNüQ¢Õ”›4—`Âz·°ü¯­ƒ›ƒdzO"µ£LNˆ;üurŠÝé ½ê< /Ñ= ¶²Þ*‹¥-ÿààèð¡JÇTT1A(uò†É⃄/¬ó‘ÅÀƒ‘Qâ<ÃP´�ýF1¢¦Œ‰}Ý3!ŒÙ"Ì&kFè*®`ÊJÒ)0FúØà)ãfyíH ðÐK¾—Å'¿Ž‹¨b„QlåUV]ö<…œÂY#·0�!r­éfmÿOëìª^RÏJO× eë�úé5õE8ܬ»W€¼:q�!‘"~tµYGm=‡mßq£¥¯ƒº�ÊjŽž½ŠÐz½‡S9ÞÝûÄ’Ñèaá F¤oö ò�g� ÌúÍt&oœÕæJ ×1*§Þ#$¸ƒ¤kÔou$UPÓ‡ÖgtÊïJ`ïºN\ÛÌ{ÝìÓl}J�¹P°ÿºK>9œ¸Mk ì×-ýÇxÞÜ×°,o‹‹_픟o4r• …V/ãÛàµz_h]©˜š.ª%]`ß"I&JsL²{$Žù–dã†þÀ`¡”xâ£?�cµ‘e‡ñª~‘!=Êü�ʃ~º7)l7IQ‰Â4K)3Ç¢Ÿ½š‚@@¢åÖ·¶Ûã¬ÑHÝ!Õïɋֿp„¨§¬’ßâó˜ªsiCwoe�ˆÕYeu¯½(—6˜U³ÔÞ%'¶p…sg£`$,°>"ô‡%×BþgœH޳X|¨ÌOˆâ»uŽNyèx¾¼²ŽÂÍá:‰ú΋JŒsF6|»Õâ�Foʰêf?IP‰Ô5¦èŽ›c0LW <1’ö"\\þ+Hc N™€µ¸ñò€Í#æ7yzC·�M„†MeU¼`­ÕÂæ�«)Se̘— mo¡÷NIÇuÆ® _Ý ‹Üjk_Ú Vf¦hÀP_“4\�ßžÓð[¿¬Švmnf@ˆÉ¹¢°k M%WX)ç‘úÊ(‰<¨íx‡êJ;õÇ pº îìcâ†ÂÞ§¢6vÁ%:4TݘGØ¢)·„vý¹èî8׫é… w7O±ì§SdN‰Ùí*?õÜ”ñ˜,s*é6ågXVA¥EpBà<5R›Úµ³ãVk’íâEo]ÂJhϽ.*d /ºAÑHyëëõt…q­M7ö®Äô‰zÒ[!S¥xÅcç8£@RÀ_)ÿ• ��Õ $idU¢%صƒ]¸JJ¸êßn�>\b5pÚN°ûòªXÄ*Q­xîëª/Ré䛜½QEàNK¥r¼Éì7(·¶$P9 ñ�…â hªáÎ]ñ¦¬å´ R–,¯ÝÙMäaLòûÏÉÁãÙ=çßø›Ì 4ÌH�v|ÒæÊ£K…¢¤íÑí†õ"-XðGh×°·Z\=Jˆ’W½;,ò:ç4ë†c¤™ b¢´ÓÍ×j—˜ö E¡›c1@ƒHç9†ÓÌ¥óYîöÅœ ƒ—-c'zò,FW{ÚÃ;cóÛ“›õoaN£î#\™__U…ÀÙJK&ÒFÝgï˜Ú¢£=›á·÷H¯ŠZ÷û.n�’&Íÿqœ‘8In6E2¯ü&8ýZ]Ïý4¬ùªæc*§n²d)nRñC®_¨eÃv`á= N–pzåŠj¸ÑM:6×¾®¡6Ü~µG>«Ê=nx|u²hÙ@9¤ÂÅH)¥&ß@I´¦»1±�ÂKAáŽòOwŸ¢¸ÙLâ™ê0ƒ¨¤Ú™ œç·^䢯ùf'¨ž~ñQ�cÛìãÁgàEÎ ,½O–±Ðe;3my¸Ñs+2ÜýòKV͵üÆñD TÇíªÈnXJ>uÙ§·S»ÜÄÉGÈ2Ç3T o Ì}ê^1.�%绢¹Úzhœ!aûô;fbgMØ)z+ù#Ê$•BÔ/ߤ÷H)î�„Ú¾°œryp‹WF�r5ã2åç0 R*ÙÆÒ‡ øiñí.g¿q6í4þ®²Ûƒ›qWIB‹©¨G¤ 6fÑØX™6Zˆ:\ ·ÀtŒ³V�®ê¢Ëm˜É@“(×5Æê›[†ÀU83©4ЮÁªãWðÜ>€Þ>d‡Çâk®@ÿ79ÒJ"ãíÛçfU%gR÷* E(dG¹ÃËm¸‰ð]6úuU*Õë‹H¯‹­ß¡-·ÆRŠƒiK*Õ­b>BLe¬˜Qx~)I\ˆÕk'àÁ÷·y•"®O×Õ—µ:JG¡TsdÚ£JÿÔG›¦øªÈ»™D´¼Å·‘wcò„ÌžñÉ[Ú %,ÎPõí*s‘/è²�“:a.(¹›Öàz]a t¶·’ ?qmDQ Ìòúè±Õc}ÈÑ­#Ù’:…Cö@™L£ÌÛ÷ÙF'Þ[ãsPWuød¿»•:„ÎaiòÞu/ãŒn©ŠT†ó�>t, xc&þ0êˆ{}Ó?­‘/SYP⹊”Àá·ap<0Ö!3q¨Â©ÎtÿêtÎ*;¥»÷T3l¼;ÃûD̓K‚þS%ÆMrÎ;’«ìi|›íÅ>º¼Êá:hÍvR1öG=rÏd|U¦vœÈL¢³r8… X¼3x¾S[ª­»KÖÆ} ñ¬èÔˆ1_;Xºi5†¢1ƒ2n^ê9Ž«*/U±aŸAœÇRÃçGMŽFDè“$ꇎyë:-÷§‡(%F˜è<ÏAy»TÙÖƒóÖ�Ö˜çٲһ⫖CóèÆÁxúè%öÌ¢ŽçË—\‹5÷q@Ås !¿Eñ<>$ŒV•º”|Ä.7 ®Ç—×— ŠÖôk-!›Àʉ/'f× <[¤q¾Óvm¨;z5PNRÏ« ¨{qô£ÉçeŽªÕ׌¦A\–v�NÑ1ÿ¤¿ÎJp/‘é];tÛD¸; $£r¿e®¾JÌA3TšãÏ61_1µ4Z—¶�òé£Ã¤‚»xE¹@hß]÷ m1ç{ÁU¢~ư‰Ÿ{f 9rMÉe«^/šÃCÓ|“hå•+"Ë1_ÉNd9iåÚèyÁ¹£M=V‘Þ‡·TËxWMùß{زœjÄLåB Ø;±óÚØ·Ž¡ÕG5Û ñƈ­‘/\>1eʸßòqQ¼Ià�åØï¾±üY^ß`I[ÇâÛiOºà#MP­� UUpï>‚ʵö”Ö,¯ÊŽúó¹p¿àœ›ÄêoxÈwóä_v°ÕоàXÛÃûï8ÓõLYÊŸÐ5Ò&³Ð}ÒÕ0ïwÎí~£Cî]>¾[Êð:Ñ”pF;^Á³ùb(G`*tª”3xñþôË à.¾ŠÂÄ…IÒ°—’R:ª›|½Ž#¦ýdY%‘ó�e¥Ãd Ø>D¬,HÚCB-F°ÄõwMÕ• *ƒã×kúÞ2d ]EEGÞu¡ ø ¡Ùk›äØZª¥ª‘-QöU½Sè¾�$ÅþÂÅõÊÇ¥1VVfFIEÝNþ)WØ¢» u4¢·»ßœ‹ÉÑÉ(°ž<™ž¼zsrŠB�z/ø¶°"Ý‘Ï · M¶Í”y*xÀ…ÂrkÙÃ¹ÇØÈ ª*°yx`“Vp™Ìx8Eu=×—A8…xL�G¨ 4Ä¿ë5ÂiÞãÐ4Ÿü<È®àzÔ¬=Û 3y¿Ý¿ Ü¥ó÷„¯Óѯq‰{³ULÈÔ&¯yt#µ$êH.wÀL`Å`ÕçpOÄÄ ÁØô‘ä,)d2´ZÉ�©àDgù3“Ì™õ0þ+ *TI²ØjBê@ˆÏ¥šûs™°Ø(¯±äãÃÁŠW‡M3™Ë­ SG¡µã_R\›ŠhC%PZ»�=KþP. D†W­‰@}»Q=S²øp‘Oòõ–ÙTÝÑ"Ôø$á§rùV.ád* tDÇÒºu¸Ž _l˜¬Ç‘»rXA…>==½ÊO?ß´gðßÞsøoïü··÷øÇÝßì=~ñ{º÷Ò; 6àO7É"Ñc–R )DÊðŠï¹ØUÚW^AÚá,y¡¿Ù¨+µBØ4^V˜-MXå<…´A¨ò¯Bñ5Æ+åtÈ]ÖÚè(Ù ˜râ1±�ëñ¼Aàý«�á ¢HÐCa[‰Î)—LbBïš'…�3Vd>Ãèðv)gWüÃ(°¾†x˜‚…vsŠ,àHK¥i~2Ö7Úƒ•æ^è+¿¸ß –`„9±µ¦$èPJPÏÂÈkI:¶›j€!]%B±d5ÕÑWF˜ u•n 3·a=n¤˜#mB¢Îè\­„iÕÌfîËä̰¾âÉóÊ–}î*Dyþ!‰/6nʵ‹#¾ãðÊ¢ôhZ‹Dàv³½ÖxÜ•7D™'a!J–qNÆX¡B‹7IìLm|KnÔ8ò\ŠDVÞ«†³.Ÿ³|sê›b*àd[JMµä¬ñaåZš?j¹‘_Ž8GëKá+eŒ!€—ÎÄÄCxß]“tŸ…¼×ž8k×I¬¯«m¬¾p�7×µsBc9»&ÕÓºœ�c9×à鵓¿þ~ùÂýËôËgžß>ã_¿ˆÜïâM5ø�û—¿£ LÀ÷ýÝmDÞ¥0€)[Æ¡,ƒôlÙ6.ëégÖãžqª§slÛpúFn=þ;󸓅³ëMkÓ˜7¿Tïã|Zõ³xä½Ïî[v‹:y”ÓØBNB¾jÃHoݪ¥>Gì+s¿^ÆrºPU‡M:!_§çJ1ÞLĤxö£ýJÇQZ�Àø?=YÁúã5¯¹»‚e…hÿ~•šUƒÅz�$ú~¼»�ÿ®&Åð7tÆM;çèÌœÜï÷hOý²Dщº»D…zHµ^⪎¨ù_þ5I£EX8××ÙH�+¼-´˜ÑÚ�ƒ¬ëîܯj´:¤Æáã¤úU Ô�>W&?Ó1êñ@yPò†›kwêrµáÌ||€t^Dƒv*¢¤™¹%fH·–L7$Ayaûè<¥¤EüR|ë}ëB'úòkðh¼ÞäR"£›ÀYϘΔؿVaêˆ$µL**â«äÖù˜Ô�ò5[VWžç$™ôZv°ñ»~hOuÇy:ÀßΓ¢VPƒö¯Ú"µu`ÁË”›2£Èw(ñ²Iî$çÞ�Ã|üB ¿HØUœ¹+ÅÁÐZ²�…¸œÍØ!©µØß9àÍ~4Y|Є]¤ xT­qç€MEä-RÐ2éà¨jH**뤘¨;ÐÕÚ\5æ¹Ë}(õ†Ôü:®ÐÓòm° ð¤øù.„Ÿ{KSÉ¥õ‰*^7¡J(ä†_ù*¡ææ€¡éwø0!Yn4ê…Œk¨¤9%�K‰Çøí÷ƒ¶”w }–V¥zršu8Ÿ8GÇð^[Ágç§dÙßt´a:ˆU• I�÷cš, ˆ)�³ šÅEC|èÚ@ùÙk›6-uì¦ðèÎT“üƻϿ°×$>·/½ Qí %e-Y=ÿñ e‰L38Z3`ŸU‰Û…aÓÕàöýãøÈÀè:ÃcfëBRU9»Á÷bm?B;0òµ#Mþ·ø:ÎÊäFwÔ}õÖ�Ïü-:%É|UA>Î"…©çjëÏq‘Åé„výkÔ�2è5â²nƒC�´aâè8’4ë „z53˜²¬{h%hkáPFK~—%iß3±ÖØÔèðôÍ1&lˆS2Âôæ’³  ÚVÓsg Ô‡¡lkÕžŒÙƒ3Ñ,S¥Ò·—¹Û‡¢’êG4ù¬MB ½N2ÕÊXAñuÒl» ã­óø.SŒsÐ…R~pÀã%rálÅo G�¼Ü '‘ÛáªJS³9�JM Yy“ohB$µÊ9!ô»mÜ&;;ÏÜÞ»¬ élcûÔh*¶F�H�ttœ»÷þ±ªÈ´+qæZ?‰c´î®ä xœÛrSÐÖRŒÄe¬f>¤º ½°e“ü�¼…ç\6ÚÕœ ©¬AßTt‡ îÜÝ®ì`NàÜ ¢t[ÂõŽ1AÑ[´ÉæpíŽx`P=W,T R›„"^W2ÑÚaG½HÓøF@²`¿$zX‡Å&í�bNC­¸†˜…c!m^€]PÃF ›¨.ø�9V”ð&bŸH( ƒWy¾Lㇾyï‰#¶`—uîèͲ†²º3(ºcw cìs?mÅýáÁ÷ùƒxû)š=?€=¢n‚½—­eÀ(ö{ƒÁç‡ßzô®ê�Qª[·�¼¡ º‘€iïnž,:Ý»y¹.Ï5x6З¸mÐkuÌ.=¥•Û°B6û dŽ<À\äÌl„„"*EÎÃ`ªðö:�âó4 Ï»ôÀÁ]ëQ\gf 0ä'—w½ß݆OÇtÑjÿ NÛu‚¬[mJìÝÅ™Æ@]nòËd™yDçØ¸J,üÏ)>oS›]Fjæ4ãØ´©­TéNDÂ2e|VC¥à´~Ÿáù"C³æ®\Ô.•]¢5yí!ýZ&Ø4Á 9ÁWa’ò"µPÍÃ�æ;ëÅ–8½—i¬z;ïu ÙFç@z´ê�s×™¶ÚÉèt{F½Z33ðX‰»µ½nö ó=»\ûDG·÷eÏረ7P€ã�€Ðߪæ¢ÖöK'^Р¾§\‡¬§“f:ØÝ=»xe)HõþY­ù‹Ìõ&äL?k cìùœ.­Z?¼ØT‡îãߨOŽ]Ô&mwŒQaJ’ò;D,–4,� ¾s¹Ú&|3^®[ù©ºó‚áM˜¡ÉöÐt5êÚñçz]…ç-û¾Þvûv·Ú—á;&´ç†¬íAÞ+$€óâ2ìb'Rìêõ=ÓrU�)ÐtÀÕß!£í�žjjPK#v ×+!"'&¢›\¥ç,ÂÊ+‡_Ð�ºþa¼¸¦`þ�/$DyQê‰ ?ê 1lrzA¬Þë$‰‡Ñ{*`:…ý`ËÞ(ˆ#ÊI…q©Û�»¨®h…_gØ�ÇStµCZ ûš°Ø(;ÊæZÇ366Q�ž¹ôX¿Ij”œ†nò9וà¯û5Ë…(};¬¨)d›"e!œ™×¢ :Þæ_%Œ«b"-uMCôʾÍXM~¾%õ‚…3 ,u> ËëyîIs8ÛU–YÝ8òœ±£ºjцäBM¥þm/µ,·(/ëär•G!±¶nˆpÁ]‡Ë\GãõfGØb"uƒëJƒá3Éš@IF«Ø·(÷SÐFÁvçd±»ñ‚,¢öŒ Æ‚i›à³îå4O¯C ÀãÓ³ö')ãÌç 4 *fud5镘D¹&Ó,Å ¹ÉnЗBI^2”–pFîýÒÇk�gÙùtŒ¸xÀ �ÜAMþ ] ZÒßcÍvÔÛ–<ëX·ÖÕ:ëZ£sµ29\ ®´zOË·^Ï6x_Ý•7r¤Hv�Ìõ”€.Ó4_ƒÞE%ñ·ÚpÁ>MIûXîÝõCU“KBG«ËúQå×ÛÓŒb{¨ãq^&Þ®ƒçàïÜc&r õÌÙãIºÞ&¾�ï½Ë,ö§a0YEßO† 0F£-¯(õÓCw’¸¼úDã[jLuv@áÉ8!'Ôœ� /ñ»åÞ€…@i`˺‡© :)hmù¬£å¡í‘³‰“”˜œ HŠËÆzñ6™ralå5¬9Q$†[wð@à U™ó‘×—ÐQÃ&±mdi½¸8"̱[„ƒ àCzäÍ«²Prmüf�æ(tx�só\]¨ùÊO9æ#…Â_ GoÈ[œýŒ‚yßšöã´¸B茇îG¬,ºZ)šÆ ùêø§Ü�6ù#º œè­’½öú#‚þ}Dz÷lŠ|­x=¯æ {­‘é#·¾€OÿFO^��oY÷¨¥îîÑ׿UuÇÕßÿ²r[]äöñgÃ3Ü„C·/I÷µÅb+ù}c¬ äáGè"ïõ†ßõ&�ZŽ·?ü(ä+¿lûº*–p ÙÇ =õïIÊ«v˜­­ÇÇÑdo97�k®>}|ì¦àŸ¶÷niY$e³!ÿ^lkÉlIi+qŸ7i㯕”>¨Ç¬BÝë�’@c7l�ï¥dÍÃônæÚ‹<ÆRE{£XeK™¤çfÃxöš¾]O¶j꫚àdÔGáM[ æÆ-ê/=’4Þ/ 6#Uݤݢ¦3îÝ Åâ»Ûʽ»WÏShéèÇx^2\aϦm|ÃÝVîÛQÝš¯£þ¸OI&€«s;Ö½¶êú�>�í^ri®×Š{Ö»ÙÄ=;Ö¹ØÒ~¯µö¬t³‰ûu±s™Kôá>¼‘G”RÒz¯À­½ˆ#¤õª‘Ñ~@åuöÊ´µÒdñÇGŠËôÑJáÝ:ùU Jˆ!¯ 6`Ö“uR”݃¿%…7Î50ïGšg¦õ.ß�Mäû&œÜ>òvÜPt™Hž¸¶“zR€ÜK8JY·RÖº¯Òd[ñ,Û�0PÓÓoõÕô8_êÐÛú]è�…í½²Ãi®°E½E³Š½Zµß×±«ž/v;Ãæ"ti�¡¢ @­P¿Dñ§vqO8õ�ȇzÙcŸÈ»âoÙy^ÃÞ>ÂFZ÷ŠjÀ(²;ݳåY­BGêÖÃÔc1è¦Ò|Ѿ8Φø-h§Õ°”V˜öN©E;ÚqoÃR5•óÉîm[öµ ¿¢ýNe|wüæàö6 }ì´ ‘÷qÓËŽ¢c炾P‘À–®Â´DÅSËÚUá!Âò@^àm÷1Ù,®IBѽǑusu]\vjˆঠ�¨å‡GRèõyïÝì½®×éöÑ+=ÚF2¦`R¨àâù„Øt¿yNÏ%ö«b:Táê)ÝË&b„ ÞïÕkÑ Ô-†‚ä�¤‰ Ÿ 7û'{˜KDB)âÀJƒ»ƒŸGÁ‰‚O‚‰êw/!ŽÃ&÷Í"ÇR«!jʽšWŒ&vãO}�²óò ›ÅTÀPOÁ€þ` ŸócŸö\Ðw·ó«_�×56—¸.:Â\ÔXuR;± “¿ü|�]€Û'žJ×·ÚÀ£ßëáQÂoažJÉ…––jš{—íH+{D­‚ ?Ayÿ $õׯ4šl\mc“'€C@¥ý™ÿÏ—|ÄÏ(ûso]Óý]¥z¶‘Ö6ÕÒŸßeGíüïÄú¸Tû\‘Š`µ]Èiù{ý5RǺëɲ—}WSý¹S{;£Œœ*iÅ<…ÕäÃ@xŒ)&CŒ|«ÅEÀìTµ o¡7BU`f §8 ße*"nÖ[�qM-4AŤ}®O}èÊÚê*„O™)R0sˆÙ´KÇþó—]ro2f>gµ Kùx­Ñ‚ø…"—r�r±ôQù¾[SUÆŠnZ“®ï0 kæhÉ#?ƒnòÏTqóŽÃ�sü3@ñÏEC;Ãf‰F8bî§àk:û l J–V#vŠJ€”ÌèÈènÒ²ØL»*ÅúÙ·éf7Q‹·ºU~Õfž‚)õ1Ý/œbZ“[A@ëÞõ±¸ÜúdõŠ­8›xu>�õª8›xy4>™ØÝðDS~á E-ÑI‘çM2Q¯PмUêä„(/k}눨üòÍC)=vå—½Û<™Z{Gùî=")-}eXÅn=Ú©-ºw\¥µ¹¯ ¬L¿MDÅÙLWÀ³Ê¯»Ö¸_ܤµ™¯ ¢¼n_Ý{EQZÚúº0Êëo?q´ñ•�“É×ELœÊ†JN` p[Ô ñ1ˆ_6qÞ%_0A¦Õ\|Y#b’0î²¢œüÒ2�(#I'Îr~Äf;CöbÙhP‡üEH·«)a¤ Aþs{L¦m�_ ±t2”mŠÇ/ Óœm|¦¦<54ž¯‹ÕœÛ �ÝÜNmI¿p�iâ�0†r~¥.%}(ýÄšt¬$Mí±­²a5:ÝcÅÑU 5ÅÔ-ñ�én`ÛÒÜÃ]1žýÝàNóýî8; Z‚öpr€WqºaHvß—ñ/ºð¾;pd¾¢àc õwÿ ’½F7Xéïh¤Oôá WÈáÃúÓT  ®?ß`�ž¯Öcbj=ZÅíð]ùÁ] v*øàœÅý6‰?b–uy�Ì“Â]ô¤ ·€ÈJòÒ–Éoñ÷ƒ?¿¤)“¨•¨ømÌp¬X£R(Ù6oÖ`—§{wXc§°Ëî@t¬.Ÿz}C± <$Ù*Ž’pC$5è—2V�‚YÛÉÿâBWæ µºNu:¤jhg[§=´ D­=wµö’J òZwÙWý ßq¡»ö©„Q»ÂšrkÄeÕÐs¨V~p°i:)äÕ%v™ f¯¿ò­®ãùp‰ÍÂÂ!„{ÜœþÊ¿ Æ×d¨f|D Ø™‰zúÄ}_!`N@Șª^z‰ê†™çâŸ��!§” ›*"áh6T.­ë}ư;; -­ëª_B½.d‚ÔR©üky2¥ŸY¸ý,D 2˜œª·tÎ,MNÈ@:r!�ˆ m­µuGMüι n�ŒD£œi¼Fzç÷n´\'…Ü®X|.õE�ÿÔò=½4®É�Ï7lÝ­/i§-ÛšWÛ7µÂäôøì||Œ_Ÿ’*·¨ŠÂ‡J4¹x3>¨ ª͇¤(–C}¾»¥ŠA[rKç�ÄA#ÝxußQdžµ»a}­*UH¶Ë=þ(ž›@sKotéõxa”P£š`OV¹ª±@É (ÈcoÝSs8 E7¬5s�ݧ«‰")?´J¸ó|ž»eŒ{�›‚‚Ž>1ã\xõ1íë³½)zŸ%GœRhªå…šÁ“_M*.þƒo¼gQäÍl—8g5±ldˆCd:¥�õ¾­2gš]áÂèÀ¶çáëw7¡Ô]�rMUvp‹žó_�"GA,:oÝA¹‡ftYäiµÊ&J!Uì!Î*¡„¨çqY¥›CfÊÉôä20Ÿç³7Gã}Ü7êµ)’·Á½  tœ±2¡n…o)N§¶h Ûëq9Ä0‰‚ÆÈ ùÀy¯Øxͪy<$|ߟöT`Ã=Õi -�Ót‚½yîd'µ _UV­ Iam½k)e:õ˪öLÒ"Í5·’¸ì<™Yê­’Ò±>&Ñ2fLQerpœmF,){wýËGMôÍ»ÓuÕ8Âjßÿ Ló6Ž¿EþÄýöãÙá¾ÀÍ�¼eK½ÿ‰¤J,Â5Ø›¡ë‘WE¼Åö~Õ FZÝMP–2ó.•‹"v—»Ïè÷3úý 9à%zIr2!çÛK¡¯ñO†a±QÓÑ‘ÌäèÚ¿Ž÷UùºÍ#*ð^WÅ©YüÏ¢ûTĤêÊ·™øo:³!MAÙoß2ÆJ«ž)O@“ä£A¡Þ}ºB@¹\0F‡ÿ�³4üÍ^ÛÁÓ'+�Ÿ)bÈÂ2xú$€-Qñ¥?xêö³¨çÃ@ “Ï^tÝ‘çODQ”:{þ¼ÖóîþXÝù]go~guĸû,¿ÎÑ×µ5%.<�Œ·t·B#ÛuÛÒ]$ë¾§’ÉèŒL.ü Ä¡eÄ´ÛD‘,E‡PœF­ �ĬÈt¬DsÇ„~á2ž%¿y´é+£½^¹=ÒohÌ j�ˆ]Âì$G}Àƒ¾ãf%²‚HÄ#®˜¨�ßÈ ò/ Â)?kôF{ÁŒ,¤øµýWbÒ!¯ Ÿ�¨öÁ.ž/ýÞÔÃvg>ÖPˆˆ~Ô|˜üŠŽeü —šgZþÀ‘� ¨>�&ÛTÁ½WWÉû\ëàË+Mš É͇.:H†j\uÇ»¦w´Ú7 �„7?GôÕM|æÁÑBº”ŠUç„ È (î$PûÒ«ÞNPÁ×”–J;±åpŠndÛ2¦ümáÓ ¯zÓÀË5^ Ê9s^ý69G˜ÝHƒv7çF¡*×ñ"¹Bö¤]ò oûºñ;Ÿ=2£©“6ix£La·»æú@Trã«pc`_ÎÐvªŽHXk“_=È"|{ê§ ç71b�d5Cy·±ÆÈ{5·ó®Ó,Ô{æ?ÿˆcþ_Οü—ùí!î]�³Àì2�vo§ô£ã_…b¨­4Ζ^)—æÙR ùj} PhtDoKÇ�ÉOð1 §^ÂYL÷Y2"&²¾‡þ”òBuÇâ�= £ŸйU[¸¢�Z$†– åd,¬#Ò«EWìx>q×¼8G5éWÛK¤_Ÿû7žv"/Ç3�ÏÓd‰š1“ãÁôB¯�ç!áÁdµ’ä#‹ulëòꤻBþuã­RI âò#ìÔ´ ")ÑÀý|¦®ÔÉìP#÷3äåÚÁÇ0LÊìe/.Ã5 ž©Å%®sÃV_‡`_Þ¿ þÓÜȆ”¿ÉFˆpäA$¨Yû΀zÃðóÙ0GMûçðJñ¾Or6Ñ÷µÜ¥„Öý,ùõ+4•ˆÕÂõì’€_Ä á¥œà‡ á‰”i2h£n°Òùûà›ã žÿþ;ëm˜ ‹‡wñvBÕÿÑ~S�zºüAý"°=—ñ¿ÿû g‡Úÿˆ[-¿¢SU¬ <ò3^µü÷½øógäÕ,þˆ� 7¼cȈ!‘˜—³krñŘ>ñür—á¼€?·—`àÃÿ§—á2j}™/6 uÜ\FÉb0*a²6—ƒ‡ �Ä@ñ-x:­2d®"ÿîå*¡ô<¸á/ï+8aååM‚Jdy‰È^Oç(\\ Jß Õ69ÂGÒÞ›aC#ieälãÝ‹v Þ†wá5x‰_©½ÀÓA3Qä8þ _ü-ÇIRœ“'%ÁÿMáabÊ Í Z~s$@[l*ü¦IþÁ>è§�ÞQ°bïé�¼E¨p]ì ^ï­VƒáÑÅŒÜ+a¡Žöûû���ÿþƒ¿â߃ÿÅÿÃü“ú•ïw�4LODðß0hy7wŠöMŒÁݽ»« 6n›,ø·’\ɰ,×!‘øW˜´*#�޲ʈia…ÿ"yð7øë¿E:ícx�¿•¤”áõ5ý’“<†½ÈIð·ˆ~§r:†ÇÜ,nÞãcnìøÛ–~ÁBøÛ–~')µ0˜¼ˆ<œb¢9Ýbžàç?È¿#9;#NA|°fUšÿå œŸÏŠ?ýøâ‡‡?þ¯‡ø?þWPþ+°Å�A¬ÀÞs~ôDzX\&OŸ]§?7·›Ñâw/~úa…Ï®žFó?½½/G«pýÿPKÒV1]?¾4Ÿéðaimunify-security/assets/ui-app/assets/static/nav-root/src_i18n_zh-cn_i18n_txt.7b61c92cfa54d74f.jsUT ëÆ«jëÆ«jux è‡Ì\YsÛH’þ+\>ÌJkÙ�³Èá��(K–-Él“¶§Ûêè  1ÀA»µý÷­Ì,¤˜¤<;Ñ/´LÖ‘•ç—YÇÞBͲ/Ãï*™Çòoe1/âoÏ«²¬‡¿½Úöã?ÿùå·ýóåâfï˗ᢒ¿çvXüþ?7ÏeAÖèf÷" ýýâ >¨ö_ý÷}µçDŽ¿ÿò[\ Ô«lYÈ:/ ø}ÿ¾Rõ²*†e}£ªáÃÁråçƒê@,÷ïólïþáÅM¼xÿ½Wå\UõÝ Ïf{ê Øß§1êKñÛËú/Ù+ž¿ªi¶üU¥ÇYî¿4MòA®ÛýU}É;T/pÒ‡ƒ|mNœï?ªfØâ¥þo¾¸Š¯öô\õMU~êûàuU•ÕÞpÿYâù|v7(³l¡êÃá³êÙpP—ƒ¸úº¼UE=øûðYýlø÷Á÷¼¾eñ¼ÐßW¹^Âà[<[ªÁðÙÛÉû«‹ºÊ‹¯yv§§z6|1l /žkBË�¼c8SkÎüµÖ,9¬ÍB_/Ô󲪯îcfqx§é´<ÿZ”•ºÈõa7C+›ë¥H³äzé;±u½ íÌÕgYz½ |áë¿=Kÿí»¾¯(g*.–sfeéö‘ÞðÙr¯x!ËeQXZÈ÷Öápx€tBÃ@Øzx¡Ôðaÿá U3U+fLé†×KOy@‰ãXfü‡ƒ¯U\Ô§ËÙìHJµX0½Ý{矄RÚBÿ&I¦Gò•b<Fõ-µäVd±§?•ԟ“š'^æKÝç¶ü¦¦åñL[Ó3þg#•Úk<¥þ'Z¼»»w,Ø8ÈÏËØ’ 7W(¬'J@ö®·ƒ|¾É9iôû"H׈ oìéÛ�I¤b�{•‚Yw ’&6ë~Š +µ¨µÒŸVåí.¦xJªÇì€ïM¦°„£¿‰¬´õ}•Í‹xÆ(]ÛFŠ2ø[&ƒG6Ñ™ƒ0]&ÐRú´<ãUÑ—–fcèZ "…¤O= Ôƒ¢ÛÁ.JÉ‘û”ÁDàËX[WwÓòq‚ÒNA6©ßpWsƒ–˜>æ+Зl©u;p¼�&ÔS}ËÕ÷Ó|Æù†@é ‚ÀJVyx°PEzÏj\.ò:ÿ¦­ò]0ÆÈ²l Vi„ûƒáÃÃA\k_�,��åR † ­ƒà^\è&ÒÖÌò‚ñ‘—�ªº1ØKßrD³ÒZo1‰v-ZîÓXæ½ú¦ª»“øŽaJ"QãœHO�åçôƒDê)ËêZ—˪¾ÙÖÜiÒ5¯ò”£Â÷:Þtp³‘'Àé=K­‘]ø%r½nËb'E–Õ6œ–§OX‚ÕEÅþ¢Êìu,o.Ë‚ã B+;Ú�‚Ç ±g1¹YÖiù½`X-Á×*E›\ôo`1>*·î^ÇU͆©~oÏÉ0°‡mïE¬ÛíX³v­)Z‘ÔlÚ®=艉ù‹å.æ _�Ö×7yµcX+j‡­o–ÕbÁZ-¡i~«&y!Õ1Ú‹ÖÆîõ ”ıW=¨Ôc?mí�¡Ç„¸¼m1ĆÎ5MÀ…¯QòFÖ¿•ieF¢;ê"YKµ‹• RÍÊï*-žÐÖŠÀ=-´)«²È7®ôˆ~CI–ËTûÉ囚�à× øuS�ßËâ÷¹ùf—ü¨óà}ñ|Lí8ÐR\Íʯ¹ÜHì¨ß`Ð ôžÇ…ÚKå~éNóJÉ:Noó�–~‚?ÁÏ]ŸùL-6†Ž1üж#ÓßèXwµ:éÐÞâ¨&}ÈÈ[ÊÁÌ\mîßïži…}Áâ7uùL«@–Y’œœþ²Ôê—še:Ý™Þ͵¦êE-kwA�i¢só{üä�®þ¿Qd@JäE™V䃴§×Ð}irý',2²©H¡H–ªÙ¯cò¬”ÿPé.̳ÎçÓþwY¦jÝËòrñN ÔM9K9`f‘‹.×ô@ðËR ge¡Ã÷íTý±3mœ�\ì~Ê|@ ùüfÖýÑ}Ö,ÒÚ2•ÆJzñÚLãä_[6™—�*DÂWåæüct~òA L„Ð\£.«Á’ž Yv8, Z}!L¯Ãn#>@Åz ôlñˆe‹�dS’Ld¯'@4ñòpn äŽ+VeÇ�q³(ÔßÅKÕBVùqyà(¢LëpÝÅÆq1'w! Iàc8ÏÀ±�Ä|¡Ðy€ H:Њ†ð( qPí,nt¶¿ OyI#?3æšæ¬¶§úùqd!° t/Œ“UšA'Ði‚P´ÎRhŸfõL&o~Bî–Mb»!\A¶:y¿¢DìéËìñâhéaH¨”بh'35Ǥ�,·Ùô‡ïk,ö��´K»9@t&¤éç…VÒÍX+ü uqQ‡÷Ëzg.õÐö²e m6ëSèÛ¦hztSŸÎñL;\ýi-EWžª,^Îêcnyñõ𾜛X£/.¦RLd©p5a1aÍõ]¤3sÅØ[ؾ|Ÿ2ìÖh©KG±Ç™- P”užå26ëÏçGiª˜¼¥g$ÚÙ’Ç2®ÊF€*Ðã2k§}ØtÂÐ ÖCG亶լ6ôFà L¨«vDuÃo]ÉS†ï/�› ðЈÁë4ß1iÀ ?§A‚½�Œ5v“"¬à h¾Sr›ÅÔŸŽ«ÞalíÅ©‡ý!�<Ñÿ/˜…?A“z¢û‘åR„Ý´ÐýþÔO^d¿°½É, ¾�Üæ ^ ä3ï³|¦qþñÝ9·[á6`+Ì$°M)¨ÎܨXc!4x5<,þ#Ï«“‹ØÈi7ôBx:-ËY�sEáÆµÀ‘jîë ÀÌ6âBµ­ŒÓK¾šK+ƒ•RiXûØ}l$ïw§0 íFwº°6 À(RÏFŽdƒ½5À·?øô ƒC¸+!Ðm¢mùÎzt_—D?Ôÿ躛àüg^wCãúº{€å_7�”?ղבֆeÿßÅý'^7#nHžn5œ”z©÷µŠlRìæ£ÄB¸˜$á aƒFaµß8�Ó+ôû¡E5˜K‡šêîðþè„™$ a0 9$mpÕG¯|'\ÜÊ‘°•98‹O¦èv!‘Š|ÈY|�%½£Ómù‰¼)ýšžm#O¸)ˆÎK!=ó°8ž¢ÃT°»f vŽÎ· á®$Èîèb+aš í ÒÅÂ@!åè’C�ˆ–³P­wx¿•$Ô¬!égN °€ö‹Ô…äíèÃVù„°¿è« Ù:á6݉V_†ž™€'¢Žî)CL„u¥ÀE|�ûG™Xœ% Q‘PÓnìÏÛ¨�$,xMÿ¶• ;€=§£_·Ê2„% 4'ðCÈŒŽ�XôàÉÇ=ÓVŠ�™8 .P  ‘ =>fÑC§K ;˜:°öèg 6 S3ÆtÌX¥HR¯a±ÙŒ:fìŽÌE[(îcƒ|„„½ä u@¯Ž4 Suè‰òøÍ¶E‹ <æÌ‰‰Dˆ \áxoߟ¾·6('3¶« Üm§–Òš:X~@1¶«‘&(ˆíû¤­ÐôŠá4î…‡n‚d0¦¸xÒÙDÒ0‹7p i¡ßz%m1ŠV%¯QÍÀ¿//è”Ú“š’17¾+‚’Ë1ã.¨Q¨ŽŒ£0#y<|,`ë˜qž¢r¾ nᘱrZmè•�§)"tø…•j�ãAAæ�1vO‘‰ ]3b,¾±²,ke?qeÀü铸NP�Œ T�€AsžÉð~ÄY¹cS7`èˆ1WªDº;°ÛØGaÄ…ÌvìÍÝ£ <œ'TH7c´¡ÄfŽ*˜àÛe©Îè›Aâ~`ƒUÎ0f,D·ÁeÄ­ï‡�ÕªX��¦ŒÑšš�Y;�Ñ¡kÍ�?5F;âl‡B7*À Ïãh�‚nLPÔÐk£Ûè§À>˜s*F)xægMÈ] Ɖ�¸˜‰Ž$LRÕ‰€193Sž9Åã;dr#Æä„‹š …¬�0qÊÏ’ Ä ãé5”ŒšÐ š2šކtqŠ‚!B@Ó�„N8M -,Õï°Ñ�N¶r完ׂækÆÃø.&&„q‘ Ç_3 Õg$£h u¾æC ]" qšMdÄ2iB�N«zc3qÂ?¨Oƒ{€¦ˆ$2PÉȯ¯˜Ü)çzœX¶ ï”ÑáG¦ƒ�œ2šDaÖø$oÍ3�rº”Hѹ2?h¸NK'¬H ‘Æ„ ”§ŒŽÐ…C¬ÎÌÈ„:µ;ÛÌBOAH9càhèdv7œt!›˜F0ÑdXgź£Yž1‘Í,ÓJ̈}LŸ1 L© ñ۰쌃 È ƒ-Ε D—D’8"á�z�qÁ‰*‚.ý8ã´Å†]èÍ>cB”o+«A€MÓ1¤Ñ= +5hHˆÎ£Ÿ13Lqƒ”’ü ³q¾@ mqTwø5iS•š$6ôAAb¬¡FÞºöŸqþÂE׋I'@Ð6e>㢬MîžFåBçYJ¢mp±ñ±¶¾aÜL�gÊ�Ðù†Ë)R'n¶�)Ž›Xû†“Ißÿ OŒß0ì30�οa� ¤D\g°×9]]ð˜>b¯uݶF+ÉtÎ+£òÕ´ 8M+3ú`‰¨ø9ge-ÝЈqÍÆ?’cê-T¤xž „dÕ°òœ±5/Ó‡”º$:gdiš´Dξl8�Ó,Ž2î6wÕÝô-ç¬%èÚŠ}Ë寍žB>nzË¥½Ä&2:ÊÉyøÍÀ “6ì¼e|c½nN¨¿c¨­Õò 4åàaIÒ8ü›ðºIšŠðމBûh„µ•7þÞq… L %™ò™ð;Ž­”EbÁ šrJKé?Î@I³q¨Èª/4³1lõ] ˆPB‰$&œï8ß‚ú x%í)¼cœ(­„<:€EhÊ9N¬¾ ‘É5·ÿŽ�ѤE¦ž�NoEp ñÖ�pm û‚�A&Y£ÚF¬€î –“ðDÒŠ£»àÔ·„ï ªA952`¹L´ Å-BPªç„BÓ',ªøaÐZ�èDw›ÒD:lMwBð_ã<Ë%óŸ 6–à¡�Pa9ÁÁ50©.yÉІаR,»à´¨·hÓô’+ç¢}‰ÔF‚'ä/SD¨Û4å°±':§BÉ%V±6ðç’ÛF¡J² €3—\©Վ›§,lÊø9jDUSÑ"C!�}Éx8êp§YÏŠY^rt'Ô™6£+ˆ—Üž 6 …FœKÌàŠc “OhÄ8ÃÐÃT×Åó—\r…û‘�.ûr«Oì(k·pPVùÀ„yƒêŒÆj´ÍƒKç¶vZÔNfM¹2Uûœ�Sd|�5ÀÞ}Ï|ÉD”ЅÙ”…˜]ÙãBŒ:`õhÅç\qŽÄG¬FÕI’´©äô$}ÅȰ¡ Sú¹b¼C˜àN¿ŽAÚzÅa¡þØýjÔÅzµ/#8�zBÆÌCSDdŧ ÙàhÄ'Ñ*eW»bl*ð Bá1ú­¥..��¬]q%L”œÑ;ZÄ{.ç mV�dt£1W�! ˆ[ fßdÌeF›4‹?¡bB•f‡ãq6æt ·en2^R×Ç�13BÏBeˆæ¬ �¹8A³ÑöH¸�¹Ú ­Šx?æª*«ë¦Žhð=Þ^…Îl Œ™XBC·jc�Ûë»7c¶‡¤¢i(éY §ãí»h¸¹Ê Æ}‡쳄zÔ¶œ:f÷l4j¬t�9ÜdÔQš“ºéÏœæºÂî"šßNs}¿UA!hÎ.?¤òš‰=oø�cí´0éCÃŒ™S)Ù`¯ìö#bSŸŽÑ OØã]à]?ùÝ˜Ô‚î ˜åúpqE¥&\š�Ë K¶\Ÿ04tè,î³N8Ñxf×`Є«§’ýÓG€ÙÆ„«§ÒöQ*’V�iÛÔ,‹ #&ãFNÛç+Ÿ°e|Üé&dÝ?�ƒf.Äm¤Kt3}²5«¢ù½ �Å6eÿu¸>áÎô@—I?Þ¡˜lõQ†<’'×Ð�KòIÕé ÃhgL˜Ã­ë ãªHY q±Ö0ÙZÈ]Õ.v “bÊè(I‹Ñ´s@1 ` Ä@I“Þ“•“¸ñ ìÁdë6f—uÈy>7m×h‹Ð3S}sv�¦Ü¡>zÅ Ò( (ýÃ+>`ʶ§<*›™>eë%F79šÚ¤ ÎiÊAB£„«§\é‹Ï�UL¹�ÚÐoËjª3SÎñ’“±A YS¶ l£}CÝJÈGe-Ά©i3+L«Äp Æ +�1噲[vx†2ê)W‘A2(ç‚ÔšrÔ*³Gù;é‰É¸<c@ZLª5Ü )û@®Bõ¦\Õ-€Š•Ù©é»ê�L˜ÔJ+{^øó‘;GFMÔõMðýÈÖЩÜ1�¤ Œñž]-6L«·t$eþÈø"l}äN™åäT’�Úÿ‰ƒ!Ü& ½�.ÞR $°áÓÖâ#N*¨—CÞöÑ>-yD£ËŸ¸<3¢Ô Á³Ÿö‰‘[S„ X“ûÇëÅÜOÜNkï¼é®!¸êOÆm ûÄåzdN·ç0´�èŸwÚtp¢5އ“�u=® }f«5�ÎÒþ�=…�våX‚+ü…‘˜vY[ÓúekŇöaLqèWâcÜ|à̯Œ †)ªF¿ìñ+ãYDêø×+ùe(¼-˜Æ‹›¤Œ«®òËeÕ^ãßq ÿïãÍs9¹×ÚÞÔü¿ p[/Ä«�tdvvÍ•G<[©]·W¦áp#]ïåHs¸É膳ÎH̓׿U#ÚèÔF®u,waQ ÈFéoÒ†8sØS3sMŸ‘òžç²ám'ßñÚôÇ1W~ËdÊßÝÔ8:Æ»›ªB�úÅm ó(X;hÿ-+ÃvöBÄùí²È³»Ái^K¸‰ñ}õMÜÝcOA™žž2S<+^ËÛDUï³×Øïá /dž>eˆ!½ìï–1 hŸðèfƒ7:¨ß´äjK)8èÀϺ^u©û”5ÿŒ™‹)AŒƒoâoêJ}?ß¾R ºŒNIÛÊÊ:.ÜÇÉr¡*îni±H /‚Cpº\gÜØòê^s÷zÃÅÛ ¯ð%wG†¤­·ì+¡Û,IcÝ=Bá�i˜ó�={ãVÙ=÷ñ®©×åsž~UŒÇYy%$UuœÏZ†þ8;aŒò6ÞüD } 1ºZrFXÎpl|JÚp¸ºÜð6Â#÷á…œ,S•Öˆ vÜ~ÁÑTÐm7+Ò”�nCß.5 Åì÷mZB\0�½``2¾(Íp™ôHò�ÞØ"~®ð‚¸ºM�†·è[à‰‚mmû‹Yy¨ ½¯ÚÜ âà7ÞLH¼ÞB÷bèÍG|SŽI3霃ÝùçÕ.æ Îre›¥Ni�3�jÇ âsÂG\¿€òòšaE_ØÂ‚Ãô·ñ|®Ò-Ú÷~2y=êîu'îÅx ÌRƒÛ2](¹ñ÷@dí+/��nÝvïÅ5�+-ˆôs\ðîcjtµPú«�ǘ—ðêèî¸Ø­R&xJ©UÍæÆ=õAA�&ñ#(ãö_æù±‡ušÙÍw?`$œö�”Žâ¡yGô{¾P[Ù¡-O4Kòð2úãQžÂŽÿmï]›ãF²³Áïû+°å°§ÛMIu¿Ð{Ù”4â;¤$‹êî˜�Ú` YV±PSIªÿûæ¹dæI™@QT»mOOÄH"�D^Ožëóh¨¿Ò!:õèËýõbõCQö} õUMa¬ Í›,cͦ$&Ýñ 9H,8WnâµD*�:b™‘r½t¤ £†]°íÎ@¡lÞ‡À® ¹F¶ØÊ/‹Ý "—^ðh}›NH1´‡$)k¹¾/"RmÓ~WàÕŠV¾E¿+¾¸Ê/Y8…¯ºÅ_W®¼ª¼Þ”¨cN´,6z²AÍä-_'X#b-Ôµ~ð€˜!U¯~C3ŠXsTcçàßð•—�P4OVéÉ2C~–ïvù­–(÷;¿E‡Æ4uBžÀÁ }‚8½“ÖTµ<×ÅÎœßØ‡Hührh0PâÁ=D±F.S?G‹Š$ÿÝ.(Á“�gèäêÆý•ÁdŒ€KP3E!àÈþ�Ǥü-vÉb޹z­%f¿Å%}(�ä ¨öA…€ç]ímÊé�¹3Fýdé‹ ÎJÆaùÄ<ûó¬ƒ!LãÀ ×d2“m5šÿ1Öhç¶V¶h¸',sÏR3}áófOL�òµ.üá/O(må: ¼ðËà�®èn†7–'bî*>JAF.Vg „ZA¦wÜ•ÌqXè¾èÏá$�Ql/ ×4¢éfsføºÆÒÀŠû#»]ûlêCU©öHŃö»Ôx‹ýÐV0© ƒ‚C¬&�\ª_»’ú¦Öc¢½Á„ý¶…è-]£˜ÝC™ÑºEú Á`•5ž£y¼X‚#áe¦.8¯[ÖÃããÖ“�ÉôÞv…ëþ�æ”?G[·3×}vJ=W3o(¸o7Y¼»�½~ÍŒÊÏ3|réõÁýNõº›Åv—_ob�×|Äa€ÙÄ r•ÿ)˽àp³¾ÃÞ@O¯X«�¾u•ϯb¶?j [_! ®§Ã@î…ƒ#;=è‘Ö“%R(´Ê¢¼wôó7 ×Ê‹¸`«t´Ç¬êx·­å ha*Ž:ÙTè&’¢«Ÿah‚�h_ 3%ÇaÕ0ˆÑè’rÂר�¸zÊïèx />ó%=lùõýn7Á<³T5lKúna"ÊvÂ¥åô�òekØR1Øà¸~1÷¤ _¡ã:èaf¦ÞʽYüÒÔ.à ¤Æ¶kÜŠYºÛÍÿŠU³‘ ¯^)Ÿ*.†0žç�ÖëÀ¶~=Ê·Û,i.l›‹Y4OHš�=¿¬4¶…Áÿòý[’——¯è/oß¼e@tvqçð€4ø…¾]¶_Ø#Dö8‹ITÂrň§4K°Z½‡Zzw`4D¡’>L›R7ÈÛV6LBl€¶ aó *')íh öEù­<>m°e¥Kƒ)®a»Žo¯nÔ•ß•±‘²N™‰túm£:zŽò×(èü<ªé£ƒ2QÒ™q熕õBtÓ(îl¢áóZ7òiEnD¸#CB„I;Ψíè»W'ß×x£1–ÿ¢;¤²¡-×W¼’µã 8�I�éçþ/5ô3ëÓâlìOñ ß�2¨Îå甂‰>u=ÙF”°ƒRºêÔZô�}Eªü�Åø))h‹óg1 Å‘šYÜ-u¡S”%–˜€.¢á¤…ñé"’÷óu`8 (þ¦LÒG>iã:Lƒòº(8àj6õ/'/K­ò³ZËVûã{L ª‹3bœA@…HVR M¿T¶�úcåÉýÇ]½Á»Æ¤RÕ)¹8¹íº‡ÔÝû”Å6oŠ�ûë<÷¡}ãÖƒÝ1·,]콨öòQWK p±}™$d•ƒú�ð¼kHaФ>>¡Iñ¦&#l†ÔzÛ]¼ÛëÞßo÷³�˜©òŠ�´‚ÂtèØ·ך©�£à›Œw±Ýî³í)„Òã:ˆ³NA¯*~8žñƒg²eŒµ& I»Ž¼�øz7ž–â×�¦3Ͳ:)î ˆíWV@ÌWÛ]èÜh”Å‚ûÈ„­Ú£Ùæ,åL �Ò„8{µz«óM ùp(J¥®…ÄäÄÈ”š"ÎÚŒâM�vU²ÕQŽ&`»£–ëìr\FœÂág2α"½9–¹Ódtúmà�“Ρ~­×Ú°×2!¥âb-夛t†ã5P$¢‘q†²ƒ©AšìÔIÍ Êœ@Ù�ѬKñ(ú‚Þ´«ú i°¶Gz^pLÌ#Ûí � é¡×i¯?u��¢ï=Oß)¬Œ!/M%…0¾…4_꯸~‘8`‘FÓ*¾©î(Ó}£Éñ%æÊq•ûܯϸ”yJl=£žB¶ï°�؆WY¼9[­÷»šœÂPeÀd€@)LÇ d¢!Úô¼�Ç kcî>S*bŽ…/Ê{¤È­ål\™‘Ý“G›ºêËÔÒ„_ud_¡é¨‘t¢¿áV0w÷á�ûÝ._5a¸+7ÚÒ¼á,@gyêË}äÄø$«r)ÓLô1 f®òPê’ÈùRyL¿}Èîê¦Å r}ì»A¢�G‘:ÙN-}^’ÖU}ÞÍ}¬SÕ�]RçtÝ£:á^öZÅqU�#Ôé\-KrÐÛ«¨Q7ñö¦nâÃkç´Z€¯Û ¤±6Èc²ÉøH£ƒª£&NŠ«¨e+¾'ç«ØÉtT­P¡§>65#fÁÈÀƒ Êfò޲Ê{ŸÏ'—;—ÒÆ*o ZÛ¾¨@ГÓëÕãÕþ»ÈW‹è³qÂÖ×uþ>¯£˜Ï‘7U˜"Ñ|K§ÈaâùÂǕ͜\%¡Š<92‰.•‰˜mÎ^Ö$k M9¾¯]%³ØXÙJ€_C÷� –rKšØ°Š0‰îƒ�ñ*ÉÔ¥o’˜ZÜ—¯ýìèY§=ÕÕ ñÊ'÷Gt{ÛPsQwiVû€[ÀgÙ–ÆJ¹õ#„g%ÕÆ³%:¬¯'X^£³øõ¶ª^0©=?Ƹ} Wbà¾G #‡ þínpGÔå7ÄÑÒ¿eí¦4Àö†¾×0Þдû*ļC½Š7—Ö–êì@ù£WwWù¾²Ÿ¯N.ž™±š¬±° ¶²�/³]èëÄ SîæÚM6ßd[OÂ#>äa��_rëé6óYgú»XÚªv€s‘:Öîá´/jÚCþdQT#‡¤tŽø: ¼Hµ@”£GE“sNXK‹ò'·$Ë[>å³GÊ'4˜ý4I`ZÿZ#ì+ü6۩篽Å+b"ázWh‘xT�,�›Ì僊nÙˉTdßД{¸W–Àðt²JAÂ{ýnè©7=*psOÈwòq‘}òíSuô{݉°VHõà lHÏÊÈbF§Hi£†à ÔöÐÓ1ÌÚø`’->fésõ©å°›|< «PÙeá›¶)_õ¥lhØÅ;"• mñö 8§¾°…¼î¡i’•¢Î—BÔ¨1`|q°M|ι¡�‡òqofZLïõ#V³¥× 4Îp±^jZñ禣 æm¼«”­o_!©¤¹g¦LN1˜�ûÞ9TýŸYâÕ AF±C¯ëç 5¿GM–Üщ}�ÚÍýÜ_p\î“Üó¿Ál7ž�]<Û†<'¿–)œô™H.<éõÉÌõiˆê ˜¼ Vå”®ŒÎ]�ct¤ŸÌî|{Òœ°©ÎMCòáâRÞ/ú–› *}Õ6|E¢;U\‘GeÆ©oyí5ÈiRÜãOM”>ê÷ÍBÄNXÊ&C c»ƒ|ãQA“øUÜÊö¾\ï7×ÙIHÂÉžJSïÑmC³K^©ŽŠ$4²­¸ZŸ×ûü91y‡"hº\°‡ð€š¯â|s«d‚ú¬‰ó, ¼I¿]Pah·ê‹âå"[ú¬¬×dÿªssЫMmWója*¸™Ëuœx3E ]«N3bóÆ#Nk޾»øñ{c<zç ŒŒ)Ü£?Þí|Ì\]FÁ…ÙŒølæú‹øv`-\Js1KÖéÕz͹>¢¨ G³/�Â‚Š”ö]X²s ´¬2(Èú@ã¡ôÿ çBêÅ¡ù{ÐIöž^Rm�¨¨.¡éþ*�Ÿ cßj#±Aã²ìún›Ô(�B`�Œ¦›D‘À‰+Îô”g˧l±"Ú+0 6½ÊV€Çà³OÄ!�û É6ÑR`È[Qò�?LóÕ¨¾|ŠŠDͦ~=;_µ=w^ÅÍ�†o³4°”¬œ¢Óê_¾—fõœy"rboˆíçÜ@kµ^ùê,ñº.(3¯úd2ÒÌ„Q|™i\ù;Äkñ ò4t&:p锨˜È;è¥ù*ÛîÞe[u{ûñ¢ÕÓí>I²íöl—Ýž²o_©pQ>�ÝG�Cõ£[õH|�m#@ð‰fPµ‡¿¾[g?´ÒhJÿ„º•¦ Q�K´ËUk²­£h�[2Úmî¢øZÝ�neÔ¯¼‰9š¹mnšŠ4V»ÑCn³qŠ�¤8ÇvO`ßVñm&âœ$|†¾C"<1 6s;¡CÓxhZÂ]¥ÚPsz�{"¤’í4¡ÏÑa_.‹-¿;]MôP#rÄŽ&s0¬Ø0>û®Q®éÒBÝTІ¨U¿Ù/cœ‚Ì爧¡@¢iŒêÁ7›ŸÔ±Së¿ô|…•Ì›}Ói0 àÅOç'‘ŽŒÈʯþ|ÄÎèì娶eÝ‚Î�©M$˜nÿ„6ƒçrT P1`¢O�í2~Ä…™ Zç"ˆqB2 íTÈr=l–!ºc–ºc“½œy±ºÆs„z¦i•,½ÎU[æ ['ßø�†Ý²'ô'ÑñwhÒd±úU¶}N�N)º¸wÊð{»É?.¼žNAÂÔêQ‚9(2ÅE”ôK}‰ŠÜúsL7ô‡&·Føµeu°I yɽô JfobÊ_¾TýUj ¹s%;ö”!Ú°š…³lFÄ—ÑÅ2( cŸ‰Ôµ3R½»e!º.‘€dWÚI2[—pÄ»²²šÒ)½ ÒgZT›xêóT ²îs—lê•™ô0ÒÏ•ZØÕ‡’¡ < ©Ü éàf·[o�Ÿ=»^ìnö³§J?[]~¢™Õv©Ù³$ßdÏ(aóY·Ûûü+ååîžôà¿A§×åþþ´©”#ú#|³‚¹ïžò'¹ûógp•n-¶Ñ*ßݨíÐ:êà?•¦ñ8Î㻕À.øà“%èë5£R?Qvç“|s-Æ”,ÓÍ%Y¯UcÏ]ñLèv÷l»_+&0^ªŸ©]«F|EߺºíÓ›Ýím—e–ìNVéÏñf§¹JA‚¬‘k4¤ŽîocõLëU-¶-% 蟗7ôoºš8¥¶l2JlÝá&ÿ„I¸ä~ý•a.Ç#BžÁkƒž¿O ®½Di£fož./D›SÑL6–�—0§¨Tã<ê`ŠÞ8Vîê” ™ÒÉ9õ" Ñ©n&”B5Él”s½Î½‰ì”FV ÉÍ‘ â*‚q}™j²^ÃIˆ>ÈÆ_¬ ã³HŠ�6‘×!9, ¯u)3RÂQÖ…’[”ç=œ:Ð-¶Š!œXjŠ0f Ñ”KA 6DÕ&Ù߈®ù°;ÕØbOË}Wêì•@©EJ¥³yÊ¥Bc‚žôˆ#•‚H݉®âàŸôql¨•hYÍÈ”ž<О‰Ñ 3ŸV-ñþÅŠv.ñ#_ÈPîÆ¶’º±Õ—Í 1ÅMö Ô8ï¢;MÈ{›ËÁ²–òwø "rƨ� ãÉÄM~’—° DžSâˆ.•F¯XŠw-ÎS \&Š$ù#'À¸�µ€¡•}S£hkÏß»¦„Òj4²è¬è¢]\ž.+š :þv0GUÅd;éyŽ•G²@ŽöœQF2ÊAøÆ°—Ì宦¾W¬C1^mu™Ô/Ù,r½Šœ,Ÿ�çU-ŒR$&¥DHD`‘Iô´3™¼ó|h¿PД÷ žp­rL2ý]Bn£ù£øµ’Ùãè—“—¦u)xn·® ÁÌ= øÁ¨]3L·ÑÆ„ûU×"™CB¬·6s^MÎlÊqj^…£PÂ,BáNF(zD o}Üôý —kù1»ƒ2,ÆŠÀÍJ—D£© Œ T1²ˆLªå²$­÷KƼ‹[dÈ2¿Fà(‘¯…²÷’¿DÛæ_îrÀ"=ü’³¨!Õ¡8} O—Ÿ”²¼ …x‘±ú2vœ¯H½\¸Ì•&Ä7$ö(ÞÅÄœ0FÈÆÂ°¯poÌÒ®þ‰,9$AIxô[Vƒè™¬—F—/ÞhUHFè�RF¬ œô¡êd’Œàïc R§æýJ%ܦš“T„ÊìÕµëv–2S_0t3ã¤$•LœL›·ã;™î*(C ®€ ) µ1 ùn¡ôÃésJC#vd›2Ë–‹PhÊ1åâhL‰ÜíD÷Þ�&£Œ¬ŽÕŽuGÈ“C—× ~žI–7‰ÝV”QP=¦à«‰ÿ]6Ësðâm#,ÁÍ¢?g›U¶¤ì|¯²Zè•Ò7³U–B�ú­ÎZeûÔÚ)X_® ‘+%ud”¿¾^EZ¡’Š�”ÊGרü¹£.Š%Pb„”T c1?Þ¸�ºµÈaä3)ªêû`˜Ô“^»SõLÕFªÑZ¥Ä]ÖGõ•¼»CL¶>^™IÎ<ˆQJýd„1‹ÝŠ TÅ)$%žœ-Æ*”¼îp¤7*t?"ýÇ·~Òàe¸xtCTÀ¡c‚ç‘ kœ‘Û³5'(r†“èId¦�q°…/C¦ab4£ È (|µ² )<´$Ê 1Šl§þÀTO�:¬÷;öTra#ò!Æê3�ÀKà %8.Î'M«ˆ­Žsjõ m|”¤Å•Á%‘K¢•ñ¨¨âÛ,Ç@é6Žaù€Îiª�ÉA·@E²¤Hóž•Ju›Ô‘A¢ívÜc¯|¬<#4öRqøŸòüz ÷eyVlÄ<$³7uJúÄ. …ü¨¯7éjV›ð{—¡cNßôv û-0ë€Ô†þ¤¬ÖTß9&<Õ›î˜ðdV\õôNÚä\u\GMb>Gï~<�Ü£Á©fzú|Ȥ& m {Ü\�v&&@ [î’z‡H UV¬ç Þ­Ò8sˆØ$_¨¼PjQøBË×ÏCUeJcàIµÅQå}¨¡Ù{m=·9ÈF*zÛ0vÂÿ�©Lr Ï_ yÅŠÙ±óÈ ›Ýñý¬®|Ù81aâ&K>ÌòÏ!y§k£pãÍðÌ¢\²qé/x[`À·G(O™þ l‹`·Ì¯óç p™ºSQüÏ—mPçCldЙ3éw½w´¼ÌÔxðò‡™­pqêÑs׋%�ôGIü�"=ƒ~Q)W%!`:À�jQc•þG T[†P&‡àejÿ¦U³dIáBF?Î<٠Θ$w�Hh`&yH@”ú0—&‡s…–µÉë.þ6}�6j4“6±L“I»¢FÍq�yÁg+W¯�Keñul˜LÃâŒN²Ù6èm$c.Ð í.(Ìô)í¶n»;4Eó`¢ƒUøéÌÖ{CIÍÌSŒÂ‚õ2ßüäaD“k)ªŒ!–ÉïWÞEå�¬@Zz5Jþiu½‰!S»‘”¢Í4D¢x msò³)�Echœ÷a{b´4IÝQ2­è’$E¼¹8—2�rÈ+ÛªM :õâóz±á|š¬¼ƒ„P„•].óÔä„°6*ê8¶ˆ÷—Ú­©¹%)Gã†å$ÊòTs´ÈL¸ÈI À,é[›BÑ�¶ ¡ Ì=pF];ȯ€ì:„€c'Aç}¼ßå”õÌs%œp R Dðæʃl�Ú§OŸB…Ò|ž¡�O~¦Ÿ³ÍÖ»Se(§ìe².‡dií’›·à‘ BŠzRÇ!½2³›m6Nt¾BT…ÆÉù�޵„ޥ¼õj”™¤;ÇÁʯ,)gÔSïžÔr�»Y¡k½iD’ýëv·ÉW×ÿ6ÉÕÿúÌüÐÇøZ‘>‚>ö³ÕÜSÛh 7Y¼l°Ù8¡€–Å·Íp£ÑšZ\ ZÓýŠu„êyv½®‚‚M:ïyRDSôZ(×´ÜŠÏ_[Ì·ìgI3@T#T†#ç—*Îü0’à5P�Ýy“‡Ý¹Åc _¦“GG¢1ò«X­T[ô5ŒÁƒÏõ’ôâöäc¼XzòÁŒ’‰“…¯ƒ®7AÕxf-T+F‡I¶Úf€ô©,™ Ô2Qˆ–a­½@\›±ÂI­E£ßw[eŸ“,Ký@9Ÿ^"n�YKä3…Ï@¼‚�påqøßìtLÅÃÒ^d–up6û)…m/òg·^Æ¢‹OïÃ7)eB{¢&Ã9ÝŽXÈ4[»ŒÐæ:AÄØ¸—Lu.™J&”]^¾Bï¸àeCpRËz¨Y°ô™Î¤o”ž REs1èõG:m¢¼Š6] ÁOfóg•Îë­²6ÃÿbL‰ %UÊRG˜{ͳ@ÖØ>ðú¬úTS”=в²c gÆK¯uÄ.ò? í íâbâ!õ°áØ{Á𻝼t/e_¹)Ëc/÷† `°.Ñ‹u&ú¼}°É±Îãǽ7[vÜqGü{¿w¶ºˆ7¼äÛ�/â‚çæœ/OÙœÿàà^ü9^.RnBY±V@ŸÉäâÀ6u9Õ`‹h”.V¥« Wok»x¶ïásÇШue!¶2Kò»Ì;è.ÎÚeë8„1$\<;Ô�ž5Íå/7Yvò³GòˆîS ½enýçº_Eªy§à˜"ÏŠpìh�0$w©ct?•7t «<â4}Iõûûåòk½þ“D{ �TºQ¿G?@kúïéÙówàöc0ÔY[¦q¼‰ª–ð|ƒÛ b#ÚZ:•�§Ý§½§ý£ˆþÒ~Ö…¿«ÿŽ»ê¿c(´8î«ÿŽ�Ÿ Ë¿9~Ö»yKŒÛ^2s)›ÉEîVpT‡èÕ�·¼TëÜD�Ôš´ý¢zÊtõê0Ìü¶|¤é²?ø d¤‹Üƒ-ˆ•Pzyt�ømÇt妭£0:#¢x–vZGé&_£çÉGéâ ,š˜î7ü&Ò)‡?ºÌ“xÉ�œ MYëèKµ[”ã!?ã$uƾ·LÏ)U—]£�ùŠÈ;¥§‘¦ôm¾ñ‚ÊQäFDN9šer™U3êd{¶Ï¨Ma$ñMZ Ÿ:T‚P¬Üá^õÁnk ;EåÆ^ØÁê@g=ne:-I©d;“Ý#›Â ß�5 MSB�^¾to'qÃ|Q¿Œ\U4íüh_lP¢oý�îÚ$³DÔŽ#Ø$£^‘Ò\ŒøEGõAG°ô"†:j½ß¬sŸJbУ ÊsdaQ ç V_î7^\ÃWdW]©öþœ(èkð›e҂̃µäî qtÿË«³÷/¬ûñüäôÏV„ýéÝÉ_ŽùÄù…— ÷‡ñÒÔöåb ¯s$— Íæ˜ò®$÷·êšø(Ëe1gÖ€mƒ+Ÿ¹R;mrýS÷þèèžph3YàÉ‚àZíèÇÃ�Çc§‹Õ<ñ°=u-Ï‘—†ô�ó]ÐâVö;<º…AZ»½Gä�±�-â°Õòî"^í}åì�uWêZ™¯ºÈ!�žˆ“vÏ4×�e>Þ¯žX�Mùv^Ùb ÆK0¼n;“…;„0‚xÃÐJÜ_û!Tð¦C>ñçÛ ÞÜ<êä~‡Xè*/«–!o¼É2ß{Ôú~6éîaGgÕ¦žš‡l¶½,=ýH*¥–[Ÿ²¡W¶A½èÉ¿aý ÖtL’>ý›’¾(ú̉^½xÄÏ ¨¦úbT>J9DÏFua‹AfU¿¯0´ä2òQ}ZŸ ù—ï3 ùß«s’ÝRìé’‹@’Rû2 yGçãÏ1Zõ,ß^¥X2ËÜréWæ>}‰´q#ÃGQÝn?å›ôm�³Ùv˜Ò¨¼haÖËΠ“j›/ΓS[¯×çyÄþÒ¢@lÖëwyîEö°…6ÃqoÒ2äTš@+Mßçg׫|Ó€¡†Óþçˆ\3@¯�sõßÄ«ëìÌçc‡ äÚ`+²�gg¤¡‹’'ÚbÕY½·„»ÈgÙ9ƒ1Y ‚‹�sdÕ˜#‘ù4Ì0©²ƒÉÒP1EÝ� åÚÈHg~ð(‡U<›ôôT2„ÔW=O°DõKÃÁµõ#�ïóöT-ú²‹Uß„Gˆrnä¶¾Ogõ[Nf%8hÎó…?)14„ædJMæLÿ@ŠKÔ°ÛØIÕp½ p@¥kA†+Ñ„ù†ÃÊîóru«á~‘µABðÔl!·…/äc×[sµ„P ©Ò«Z¸O’¤k¡&oft‡È¢2ù)NÁ‘ÐþáÜÙÃz;åx2‰™±&W¯)+{“oË¡„5�4‡.À»LâóNÝ'Ë,öíN,7¦:¶£>¸_?ÙìW sùp¼e™yßd¼.V�+W#B�‡Ñ 4i¿ÊBÿ¢ÿßú^$?ˆéEÏK:+½Ý¢þòï}Ï,èÇ­tVh½(-¨…ÝÍ&‹w¢dŒ²ˆ#âÓ⇵òñBÈŒ[»(ÿRÝráX¼¨ŸðRÌ·¶jÕŸüuŸí³ô àÏ�ÿb•ú(ûeF5‡�n¡WNcùêIšÝÆÞ¶äyЬ7ºZFß» »Ší‚æå㽺V¹y]dÔ±]å][?ðBѲUè°c]‚ü"ol÷+µ3âùCRQBdÝGÓãkß7mÔ>ª«‹d‘ƒ\Pæ@þ.ÛH¯öÅéÖ¢£Šó6¦eOÚ©N­|˜5„ò÷à{B±sâ l !cÍÑ–|ñÅ*…ôwc,6%[•8]år�á‚_ÅI-,%•�üüG� !Qf¬]S<ŠëÃò T»|¿•dݪœCÚ纩E0*ψ×ÈI>¥ÆSä( ÞQ/'�ƒ ãð¥ñÝVn™…þY þŸ·`l±òN1-¦E÷`«0†‰à¼ãŠC᳡X<8÷R'ÕÞ%ùŒ¼çéÊî%]“³ÊÈÅ®!îètDÛŽf®X£+Ãî�«ô?z¨ŠíV@)”›X©Äññý WáÊ—³®¡õ•'$‹£Aºyñ€èµÏÒ«ØgÛ¦^ñ¥ââ/Z5\ÌáÊ%‚xK#Iñêý�/°éØ’Ee»Z¬×þb–j´à1r ˜¹Ð"_Õ™$ŽâÞÌH÷WM'[0d=tº»²ƒ©¹G©&'ÝR<œ’˜ _âʤ, uë]`iR‰ÎƹÇp™á€?F'0gÒ×q¯d|ô®?«òàL$ÒÆ¡c‚�ãU\»˪Ýz+-³ð±vÍÛUšû£/-VWëM~½ …* ;ÑÂ:[¥ÍꊪÞÖñvÏTa>RÁ/§�¿îjW·w R±`L» ψ«ÕÀ² ÷Ë.Ç*uÓ5Ì©ð�f+_.óO—w·ªómP»¶RD†Q»WY–†BÛ†¬Sh•€[ÃËõç$A…ïU‡$¶ŽceÐuôsÁÃT^%."J±”eC8Y2 ‹�é@£ËÉð€³ÙhCÜ[|xÏåS?ºYÀUíKåí�iÿtum‡êD@ô 0ÆAfž–{þTíteÃÌß;kœ¡YÚÖw“ÒURÔ:úZ$9þiòZÁ¨Xe› 8²7®èñ/Ëcêäè.ߟƫË, oH‘ ÀW©FÎælÔýæ]s›cO¯/ýÃ#ÕK_°ÒO¡™ac¥ùmö1ÛÄË·ñ06¼ôÍ(¼úªî½U§ö‡?Dò`EUb´ îHÈjŠZGúí‚…Ôn0Èž þÊY4(õë%ßQ¡þù4ŽŒßN~�.ŠB2' õ0UBúdëÙ ¢téÖŸ®žÝä·Ù³~TžÏŽ"ýÏÝíú(úç§ë›uyB91§”Qÿ%#D 1�øÔ5u©ðu ‰Ô!üŒÑ>Åãa÷’y�ã^õçP.â —tµ_ÇV~7vÏ™�·èùúøauÈ4Øfm´Ð'µýM6 �êzÓ`›Æò&ƒKÑ }Ä[ù~±zÛÜ÷T‹R¸¸iìÙ‡M˜ß~v@'¤_2à+»ÕèhN‹¾¿ú©s_!MñyˆeÕÁòP"èü65~¬eò;¼+œÜïM2q3WÜ}œÞú(£¡Œz¯a͇Ó†-¶aÖÖyƒÎóâI¶)’~wZ„gŒa]܉¬@Á¨*1– ˆˆá$dr;´&}JboSé arP¦t˜ÁA>T6!ðDÜÉ ¿ÁPæ5§ƒã,ˆx |¦˜pY�øõ´�òÌI÷¬\n»‹ÿ¾ýþ¾ýþ˶ßZ þx×t° ½Ê7‹ëÅŠ²³ý›¯´½d%%Ñ–WšŒÃ²£ÔÍ&¡�º WrMkglsHhñ%9À”îþÜÎ#Ó ±ý®MXâgèäR¯ä!á<ïAÑÛ‘J¿�äú"YÎox—ý®§+³)Ó3‡4XÃÇØº´òÉb4<‡IªüÅdéÔ¯ÏÃÒ®M“ã#*ï6u^áçĦ'«T=â™ œoå¯ÕͰ‡Æ[éâù¶ãçdR4 �ÏsêЈiZ&Lx§…à͉§Ð»|Pè0ë†6�”§Žyêøô¿7„ï!��šK"}Kç53_Ü)bƒ/è+éõN:Ò=C®åꥷѥYÐüäCÔ�v¾rŠ6§j¹ õÕ• g5Â‰É ‘p°Ûë†Í×Ù&P¿åÉ÷ÀèÏurkDÐáЬ Ý Duü¡q\êNßä�òE)#,› Ђ+á”þ‹•Øx3…[S7­�Ÿ ~EÜ„òî-èÝÕ·n!AÕ~ñAgVö÷uÒ�ªúƒÛNEo"G3ß<ú–Ï›ƒ/>d>½ †Ê„ªßùºy�)¸d­Z¬ £»íî4t så/šÏŽ} Š4•ÉXTÍܦà Ž™ly’²ß®ç¯Y7ªA¥-‰­®A·d•©”%íÙ§ "Žéz—OijïÁ3¢ä!o±¡ÙÃæ[(W•üŽf(A 4ìf“»ž¬Oé-p g˜’!š©WKûRÂ’hd2Òf„)ì^’¤�ã¤ÝÓš(ÝÞ´u™&7 "L:‰) Ì*—Òƒ˜g“ªÌcÍ–{#qSä´Œ'ˆ‰Ò™Q�y†ý±–åºÊâ†�í  Õè³°« ÒÑw˜EÆÒ#º®4q[ÈÕP½—ÊXUòMŠ©‹âµg:ú³•jìCT˜ÓJªÍlYîÅIoÏ¡ÝY%Ù-Òãp¢-�¡ùIݦÙi¼z¹ð%è†o‹¶` ºÈ,Òí1§ò¼ÏßǾ:øî0 ‘P0Ô cØø.)7`6šš;JÇH>d»Ÿ6¾Ìz±ªœ2P_:¤$ƒv}z¬Òqv'äë†@Ó‰ä‚Ϊ„Ú×�ʔ̠ÌÇŽ7 Ùšœ}é;E�n‰õ2«Iõ¶”?”;JØ¢r®þoï'<ˆãbôƘE“­@ñz[—Ž/°tl0ÿÁ)i(ý¼‰ ÕÂΠ©Vg&–<-QÕ¿d³Kü¥zð:ÛñØ}3ÏÕ£ÈKç ý&[®^¤Y¥wÕe›Δº #bÞdŒèlLÏ[%‹Ô��ji�[š‰È>ª¶T -â�ómñ {Üñc{Ïù› ö¤ ø äIbÐzû“ŸŠ«?ïƒÏ8í£ô™´ÝÛaÔ�Z®ç™iߺ¤T´Gò¯ßúÝ)Ò #(LŠÆù¬¼Æ®Mð÷ÒdjÀQã䃚D&–ñ®=Iسì5¢Y�a4>lP­}XjH,:GjîäçÙÜ�"=Jn·a‰szqýrò’¾©Q éªûèÁÇu'Ï|-liÊ@§®LÐiãN3/VµbågKòè^(+ð:óÃòR"ñX²x(ÕÌ¢Û3–ðÙÀ:µ‚¬�RùoÕÀ»[l}È„Þ/Õ±Šg‹åb·ðVT>sÊÆý´åHëi¾Ú©=´5þVP NjÏ€å ‘ø…šÏ)¨S¨v‰}Ä®s<ê·-™éåy`-âàu‘›ñ#U~‡ñ(¤®£Y;NºÆƒ! Ãú±¡yþ¬’Q瘋¥KÆt«¡ý=Î’¶¹:¢{"é™%])as“/œí.v±ߣ Rõžùp§*ÑIŠ{æsœ|õü<îØ­ ­$N˜¥ ti-Á«¶\š×‚Ç¡—Å&W…ØC;Ýñu\Ê®ÉkÏÐaÃtܸ KÓB–�Xšæ}–δ¨IÒ3[Å8lyò:K”òøÂ¯)sòŒ$éiÐA½×¬._LW*|°vƒž4êf‚Txâ4¶;:eˆÆ×¦u×ÇÇ @RS×¢ùO;³ññ‘Js“pv²ÇlùõÒÛW�›Ì´q>)y|מt5P¥·ˆAÈp,Y% 4,!·4±(ü¿oA5½Bü!;9Ïs_þ8¶!ÜFŽ™²°'³û”Ý”ï‡î»S.çô»Eúí¾–f’WílôX÷:˜öqš^"löY þJ3{©¦yJ“<Ñè-kîU»šö?±rqèSº�-‰×ˆ;u¹÷A WwªÑ畎«?,í¥t@}Ñ ;g3=êç}6–ØA�¤Q¢±©‰Mg ØÑD¹tS'á‡Z«@ù7mŠQŸ­”û3\Ï+–§;%Üy²EMÝá/xómIP6×ã+® )L†[ %ÆxUúŠà #–¨ýGox£Ž·�Ô²²0ÞËlËÛó…7oŸ×!éA»—TN¶donJÊ×îJT/ïNW_¯€Ø#êÀØØ<ÔÖÈ!_x¦ˆËU3MÔìå:ö¥n�â(çƒ0‘’h+ ­¥ �®iL]�Ù®ÁY O!™�ì—]¬’üv±º~¹XîBY¬ýy·­ r£ ‘9Üc%­�K¢zàÆ)Ò"<”× �ÚV7í³ƒá´Öug›ÛÅâ/üßgŸ%]�˜Ýá€j–Ó`+(�—�6 ƒG[®b| ÖŸG'¶Ì`¿M0 ÷supRl•VsV‰C•�¦M?@ÁðÝ��>ÓÄ*k<+jÞu]ÜÛøŽÉ%ú‡¼Ðž|TŒ‹È©«s°…á1«â`¢xeJ¡d«%áå.,"u3“ÝšæX�_o�UÈÙ æ×l”â�ÆõÙ�Ìþr“߀ð#º2œ´‡¹2D�æÊpðùÄø…Bp°Íî¤ç?®Íî4ý ÑûpF+gâ�),ýöû@‰¤Ÿ½€H²HA¶­kOÆèù±¸kœ;êY•ßïÜ/ƒæ@˜W4ã€~µÉšmVpœðOMx¹h=B¤>ÕÁbÓ»çÙ2¾óf™w¦:É”ÊXçÙŒôÿ¯ê¶T& B¤ÖóXé(Y©–&Âä²m‘Ƥ!Ž”{´Ü¶¦.ðè6ËÎóëíË|ÓVƒJ·ótdÓ†ÇC�¨K~±a;Ѽ—‹¯÷¾æz“§ûdlS¨ÿ9÷0±~Ž·æN@H§ Ìž‹Åö6Þ%•�z?�!¯Ý˜²Ÿ{:…�£~¢š�vÒý(àÉÕ(%N¾×æ`LZu¤US@j§öI¯ïQ< œa/ãå6{›oèÚ j±7Fo¹¸mˆ‘J“jª³ÒP5Cž‚ʦW-|í”ól€³n©TQØ$m #-”Ó©ô§˜h9][jî¾¾Uªï† ÊQ]§ñ�[CåK¤õh‡/õ@”tÕD,�}BX?NáÂ{ªõð]¸&™ÈCw. ÂáÏÒ7«¥'1ôàOy@‘ågµ„{¤/ö1N†=2 ºÈùy”­>.6ùÊŸÃ6êÅ0÷ãq¯% ƒ¸v’šïc¼Ü{‹äzT³éÊ”à-Z“¯þ@“•@¶ï7^¨xY„$ÁrMú…Zs×Íû¨ç%t^Ûæ�Hû�ÄbÜã _Z”„AÐðq•[…z�¬ö·³lófþ~që=rdÓ"œV1Áî­ÿPw˜™+)pŒŸqMÐ}Èï«K~zwnÿç�Œ§M¡�] À¡Õ¡ùˆéÛ<Ñê/´‰½”�°…é ÏÃ�üøg­G�v$†?i8ç�6«‡ KÙè ¥yïßõâÓÐà™<  sŸI¸á¨ç?òª•Éd¨óDœó‰Uz-Ä$‰i…É^lM惥AEª«6À®}w^Ø0%ïÃ�‘x©:ܲzçQÈ7Í2sêóñ5CÝ�ï@:½ñd{N€{¦sd’›H™¨��íPÑúvv@;ôl�°ŠˆÙ¨b0ðÐú¹à^}WÏÒ!wéá³]EñZ¯Ÿ¼_›ké¼Ítôp‚èÁ³�ì]J«„ÿß:E ê_^ÒÃ’|ˆ]ù¸G1%oAšª¬–Û�‚TG¹‹S®S”wƒnw6uKÒ–¹Ç^×* Í ·ŽÌ9 VÅTTÂø§@ÉÂ)×wÎíPá P‰£·È°*5dê€9WEH{Jcáˆ,õÑýó³Ë“Ï_¯a¾°¾�z&‰,ãj0‹`€23ëv‚Ùô²Ô Ý0)*ÖQ‘ºD]¤ì�å¢Á¡´Òdq‚ �Î8lù]]Õ”-Õ|ŽÛÀ³¯dkrOXÍ” ¦Eq+5óìv½»»Pªµ0¡br“,ú"7ÿ—¨\ÜmµIÛ÷Ó”ëñ} JòÆ›å©Çl� ?áa`"QéÕd´´w]à9c�5QÊm<Ë#L°ªEØùÊïAÎ’¾©©RÆ*›õ^‘OkŒµ¾¡À–+…v(�­vÐÉP›Ä`ZuJ„¤'GÄ›ôÇøY«í£« l‚8lLœoIJ ’nHr8›rZ]Æ®ä✠;ƒ§›±ºæ#ïIL"œôÖoâõë„å�qöŽ‘—…A‚²;Œ JOO}yXœ¹…ñ8ÊßB4Ô¼1øªpÊsÚYo%ú»ÌAΈû“×i–®¦Þ»89ÿåäÝ‹C4dõÖÛ7ï_¼~vr~þ—«W'ï.^þt~uòöíùÙéÉû³7¯=­a¯)ˆa‰ñA­ÊŠ^õ­Ë7§êCW/^ÿéìõ‹ïÎ^ÿÉ#<&=¼Êb`ͨÞ¿z÷âäýÕû¿¼}qõÓëË·/NÏ^ž)»¯éýôú—“×ï_<¿º|óò½²èIáÁבœ¸V<Ûo³4Zf׋]4Ëw«l�þÓ©ï ã}Ä<:ˆ™ÎOí9ü0¬{ei‚ ¿ÁÆÐ�ð®¼Ûøúf±½9°iÛ_©`ú$£¤Ôôvß:+#ïa²¾DÒ-C›·êÏM–.6J ä›ˆ¤C“U6®S,Ì5Ú)ìÞ–]ãð·ÂKÊ«XÓ]ï¢á:…_ö/ ÌZMß=¶b‚�'óä~Æi–V{à�¬Òw!Øc ñOÉ4.¿óMžûj�XLzPYV^Î-G£ß­ÈØ­GÝŸΧ¨s3¸Ñ‘8Õ„Ê@n �X� �„½)‰ÈÎ0Žß�ûÔÑÞöf^·B´zJKxy·Ýe·"¿ÞÑŒo6‡Òl}¨qÐÎÃ!®Ô!ç$Ýꉞ§L¦ê¾ ðs` .â%«)Qÿ9„¡j8'…¤Ç•ïëx»ý”ûðÓ¨°˜ëN३·!~‡;˲Š·,Í.géÔéÚmrÏø‡(_ûY¼…¤s#§;eÀ— ÞËP’rF8Õ�F Êú�ž¿ŽŒuµý§Ànv¾Xí?G´›Xiv€ˆ àÖрý�fM�«a�ÃBŽm2L†Ú›nÉo²lÂûU~©ÿ^þò¦Y�DH‘Ü|PI4e¼_tzHVD#Ýb ÙEÙkª.âá¡Ýä«Dö›�×âÌÑ­ªlºè„^p‘šë hcË'UÕ¨»oúYÇø"Ù—m‡|Ý9ˆ6#T:+åD]ú,¸ìÓȆãÞÈ=îÕ ­ž û—=J�ªy…üECxR 2,2Èt÷g¦ ÙÍ®wߌÈÅ•|t€{lœ"l¦‚Œ:í?ýØ2WI]GäA/î£ël÷§Ùƒ>®®›Åß|~EŒ$¥;B·��Ã8ýu`çŠ%-c}P'YÈþ8:¥©‘{I–nŠžáíV!ØoÙ‰AîÁÓ?´þô£%„Ð|ßö¤ý†‡h¡ßn²Û…Rìî°l$Ÿ£7«'ÜÊ–¿¡ ¶ó‚Å`ÃÂ>'57r�Îõ¡UhkÕ€¨?è‹!Íû¨ýfË<át„&K¦rH^0Ú”£ýq{Œw¸æ†zÉõ~ãݶòÚ” •2é?¬<»µÜÍK|Ÿï7J$^îªýÙhýCÜiœݧ‹ÕbG©.šLëˆ�*§û-˜µ+ÍòÛÿh‰ lÉ)rjaþ—ödîÊá Pò92Š~R[¦ûpz©..—~ÕE†ñÍÇŒ«e·­Ö§Å*Í?©]ç3¼ctêx‚N4Ds§ã%屈ɮ$i�ˆÓôe¾¹m€^é$µ¥Aw)ÉX~æµŠÏ ,V‚§YëÔ ßÐŒùRÉéy'†A4ƒ"^EšÃh0˜èÀ w&�ýò+åà”ü œjÏ«ë@7ìz¹¿ör6öÒ®õ8¨MôMÛn9SÞ€»iÂÓ@¦íAq%‹Šé†•ª¢J¿Y<‰«ÎDèÈ~îK£8’ǰ(Å‘šr¾Ù©b‚ä`Túk�“+üØ›ZÎØõuˆ' x’�·wÛ¿._nò¿ù ©#‹ \ѧ š}tqwùç&þ8è`Õuf)W„õ ÕŽpHé – *½^ÄhÖŸ,•RZhWÇrÜ%�®µ†:¾_B¥_.ÕÇùU¼I³U–RæÌPôåüçùš6_¬é.˜Õ]xjÕQyÊí¡Ù´‰>´(±@7ÅߪwƒØ¯º”w�ü\×�"26|ÖÕ¥»\þ˜…f(2xO?´¾˜Ý#{Omø³_+[p3[µÕ³MŸX(0¸Íz•Ä¡±­T@d{?´Øí·ß$7±êR`Ý–[°6¦úˆÐ’Å–f|K§öúJzªÜq«×:òÞdß|”VŒœ¢Ú/>ï€ë%=÷儺„†C¬†²DõÒ¼ U�š9ÔA<Ë¡a/³ÍÝɵ7Ì0±³t DÊV@·ß‡iJë¡ÉÄ¡S�þÊÔhÉ\—` P¥Õ>aûË0èŽ+±XØ,ÝÁ¨ë­ Ú¹”/á�ÏÅÙ<¢"e§L }ÀˆÙ¬”RØ­ƒdN�è4 {7<Ûo7϶7ñ&{|ïí"ÍžÐ�øt{M«²ZÄô½ö:Èÿ]÷ªø¿Ó®7гHÙ{^»½±]J¦¦Q©çÑ�êS8}Ì Ó|¿a�é*ûô²â`‡2QÔû‰‰r�¯ñ§•™ “S–&Q‰¨ôM æ<ˆœ:'¿™×@ƒú2uŠ}Ñz +ªÕ/Z©¢é~Šžü[4eiN2¿+´CÄ0Ñ—(y „"ÑÉÛ³–@Lz¡Ã×_BZäh¹%Þ6>%É6NP",i@tëZEÔÂ2IG¼“ꄟOôE‹”(Z*%¨Á¤F—̰¼>Gƒ^§Aw¦.îŠ~ÖÇ.þ8Þ¬ÄÓ`æ…1î’€ÚŽOHšxÈd2«:İe°pA.`}yŽôc ±ôË«‹g¼«ªv¿£g�3íR[GÓ¢žÃ7j»ó–-é—Á¦áhèèó²'àEý´Ø%7àìôì&#>Ô߇i‰ÝàѯÚJÀàè}ËüýIÇ— B¨ðÒ½€ ³oÖË3ít“Kœfæ¤U÷Ôð}�&›ˆÚ¡6uȤ14ÚôPɹæ¸Y/vG`®®ndƒCz”–7.øýÂŒ`Ž™÷®ѳ̗A^xw6kg‰êàÝ/‡O+ ´àŒ“ou1˜ž/±ÇÆ6°Pk¯©oš:Ø4ô]¢aELQ+ áò% eWÒx¡Äeg•ö_|åB²³fÚ`CN雘Ó~09·¨àÃvÐ<Äò–§�AÜÖèÊââål¯ftÄ�çÚ�Ræ|1Ñž,õg\ÔÓüÔíc’•ÒgÃRã½!)¢åøe}7CÄ£_%ÍídYŒj�‹ØÃ€FÅYz†i ^ /P�žY™n óh ÿh}/ØHȈ0�~)ã;ìw o­ �Ñ^:Ù¤[I§>ˆí_ Jl‰Œ¨!›¨-Mù–X¦…EƒZZUå[ñNAÉ«Ÿä×Oƒõ~3¶ mدGñ~—ÿ0Ó=PצС‹¸Ò-‚RÎÇB4@ŒÆà}®*úC«ÝBi)“«l©þ´WÊ=Eò¥¤ƒÒZÐëJ06a0l×XŽq:�PdÇúj·É—(¿jg¶5ÞÞé`L亖MíHÞrªß;€‘>¾ô†*%†½Á­™¡ÑËM:àÔ…‘®�Þü¸M—n[_®òKl¢ˆï9¨mÔ‘ñ5_6³.&µc©Ã|0ÐW ã !n¡¼Ôå´-LÔ ˆ…×"Rž,á™ ¥J(ý“æÈ² Q2†,ñeUÒ~UÕqØp¶T)\3}L—Á‰¦R³YIíwQIžÃ3¢8Bn6XÕtœfÔ:lçg«]vÍHä÷  Á]-çé•F,j‰‹'n™Ð?O/_F2Ò9ÅüP:ȶë5‚³®9·©Zy:š1`âD_ 6ÇshsÄÈ’XLV‚# ÔM8ÑóüD ¬B¢¿ãÄS””M1®5j‡Ç/ßÓéF¹ìà  TAÈ  0E�d…u˜XÔ͹ó¶‚ȇ¸A㻥œcÔ¦1 em¦>ÿÁÿ†ú`Ç}ãWMñ.ƒ Â} +|™™X‰'ÁK­MéxÂ�%y8åcEU;|Î… £FÞ¦Èÿ‹¦øÿ<¿¾Æi­ú�ÚôÙö¦É¬4éŠÂÜc’@*çRËÐT–嬵£tâ³ÆÏå~Ô‰­~Ȳõ©Ÿbˆ$%IÑ!Û³˜ŽÜÞYU‚�ÈeËÎÕN5ד.äÒ,óës¥’,íMÒ¤„]«ÕWÛ¸ã$Äá-½DZr¦'(ñ¬ȾßBOí6Kª^R¿‰Ô¯ö›ÅîÎøËó­çé7——/N-LæªÏÞ|Ú•ý±¸–€É|’¦ x1>dFÑÃ5Jˆ ©ÇÓúµE’iØf®t ]šoµ˜Y•�Ý€ðU´(éuíW }�X›­»ëeÖÉ�NŹY7Qze Jr°2V÷5¢‹ƒÑ�ëb´z¬p ¹�H"cžïîÓD§}È6Ê‚= ¢ÃFAø€ÃqÏd²�{ò ¹<”…â‹ôúnÿÙt“òž¼ð*CªèÄœK¢å€º(}Üܪ{êÓ]�„6ñD}âûóÖ‰N‹cöêò’Ÿiݰ‡¼ÎȪâàåô¿¢+’Òhàs, C“�(°s¬µÈ†>ÙŽ¢�LLbSnwñÚ@D£êwÉUMÁ…!)',Ïpg$€›Dnk N¯Z{îf„eºèÁVÏOü‹=eä òßب3êN;äqÒÖ�'±ãÙxœg„58<BIuPñ;žÝIhÒÓH 9Û©ãÙ’ƒ9Fܲ޸ØaÏô}­šYòì@5…+ ìžÁð2Kô‰õ¬Ã(ÅÉjwî•~4åL;;2‚rItE¶ýéIúm™µ“QÏ$ŒrÐML�Ú˜¶l;·‡ÞþýlÒ�2°†Fo‚mh÷̃Ï¢=Á_;­½¼Í5–Í”Æ#ðì?»�bbîì¬E “8•r#¸š‡½8|½¤ÖHöÒ× GbêÈYsñ@Ûã>ºž¡Íå©›ï9?vBkß÷w×·‹Ý4î®çôZ�RÛÝž­Ýèá)åÚ"aÒÊÊí švÔ#l ¼¶£]·£ƒ(™Êª€ã9`(™P)Ç…CíÔ”Ê>yo<8î¹Ù¨¦R§�*Ivê9pq0\‚µ@Ù®�¦¥½èïoê…ê´8Í®“Xj °,¿ä›ô-äýã”uþOžß.cúûóÍ~/Kõ ¶“êl‹ \QCõ å’ªyà,ÃIgÎNß_NÀ+geqD®U ìbIž“Ð$ 9�®ƒù{ù‘f¹õ>é|Ô© �0Vo'StÊ«%D••Q=ò\4y¾Ù‚LLâ”0aÖ´#¦[�I�È[‹€¸8¢iÜFÒ×^^Ù>o´RýU�r^¸DB"BUh$Û8Åï×ú%ør‹È�—�‘Å>�V”®:÷=׈J^EŒ´¨©3£ë�ѵ iJŒµ,Ò‘*&ØáÙÀä�צ­|’¢ :ST"p%óúä)ë3&8/ÆýÁÈ=rÅú—){xX^š-½;¹ˆô¡øZø=*ìp·›åy¦3ëÀ-VÆýåþ-` ”ÊØˆ@3dœöûZ�—C¤•"SB"&×ïfvWáÈ¡è5º@­4*/ìßOZ°2ïï© U6‘óhûHcÂÉxÎ(cnæÚG_S&겚ã]()†E˜Qn{_®ŸðŸšk#r%1ÊÉk°™Zå ʨ“3ÄÛÎ)"Ïa÷#¥|Üñ|˜è…·50B ÙRìÙ(7pG¢]Ýš�K"i8Ç®ãÔÁa¡èÅè=ÑhÎaˆ¼T12Ê0œ'ìyž'G·X}æß‚r>dR?ä^P„(ŒæB (9üMâHÒ�r°†ÅÒ2Ï,^¯Úö§åákß§CçÌ®A rgâЯ¸¬E}Ò©©¤ÐU‡òǰš\Ì!·I¾'t’X¨†Ì¡o‘°Î½Ç›€ÝdÕ‚ PøO†}<Þq»p‹L+2ÉÆ;LЏ�÷¾Ì7Àa a•a�«âÝÀdÍÝ-ºbªÙ€ù§M“®þ „eŽè›Ýn½=~öìÓÍm²}š}Žo×Ëìi’ß>«æ­»²P@&ZàJ“_� ²+u×ùª�4?Áç£wü< ‡Ýy!ÕÒøÑ=©�N»ñ8úîìùå÷FúÉÕçS„C n.=©$z)šÂÀ>B÷¶´S®IæaK9Iª[¦š{yP.V€]�vZ† ãÆ‡™9ÒT*•uRs£ �žnqžu&x<ÒÀØH‘|ràË9ۜ˕’¯ûÈš'[w _{0pý©"ãöaÂr\b°Éƒ‰8õ!µ8Ö|Fƒ‘{A�=óîÇs%§t“lSŒÛ#„¢g²¯S0ŽÈ9u ó»cüF·�þÅý-ɵsåOöyqû<ÿ˜%ùNâ×?`*\1"9 ±B]•:ÐݺÁ¾Pø¡¾wÔóÝúG‹5J/ß¿ |Þ‘;žÉ©iø N¾ k3€�HÝ&õ™jj8ä̦ñ»™‹™w¶Äq>9ØÑ¦mië¯s\]²S%?a¤«ìž“;€|%'XÙµIK2ö/¾;Çeê¯/ªÉøö¼xôa•Z]­7ùçE¶½Ò¨‡Mv™Äctg�£�S †­”U6¥š>„>|¹àvÖÉ/âϧÏxÜNs�vF#£IåÔÖ”‘_ám£Œqe:E寘À^YeË«õ!º'W å;H:©öJrØ'5É_[$cBµS� É«ÓfíEÿ'þ_boж£ê—tÊΔ©SfìºóÐ ÈÈ,žºn$\-Ç}%K&âT‚âÌ¡öSm§™”fÜÑ/Ù,úéìU^jç”å&pR®z�¡+†Ý¾Yií®V=êNŽ­ÄôÀ(�w½Œ·7WjÁ³¬‘Ù!*Íö$ó7•wÁÊ>ZFÂB).îå¤>Ì#"wBiñ*ÜД¾Nÿ/â$e‰;N1n9·P…ãvÛd.qk‚©ÆaÁ(õ„å7!³:(È}îÐ!” NRFiˆÂzˆJ_(ðz!eJV£’šŒ'ä`FÝöÅ�zIÕ�fÍ(¶ãÞeÝ/| {ï‰W^›KMަrK <�æ®3Ù�¾Vңʱ•ɸZÅÇ8²‚ÀædÿØ>i×ð%'G¿¼�:qyN®ÞNÛ‰”“!§Óae‰¬ü¼Ì'­n4A§Üˆj`q”*0t½ürÇJûœ½—B”IjF]ìf¯‰þ­=�Õ>Ÿ‚`ü£ˆ•V¹¼úF-¥�£œÞjú-ç‹¡†ÄÏ{’6ª‹:Ü/²O¾Àai,Ÿ/«ãQ2?Yj#KAíækdI*Oï¼aU¥ˆß9d½sA8dÔOì=Ù0êœE7“«ÒZƒ¥"»�‘, ØGÕàxdÄ9�n­pq㽩æhuæ%šîùäðî8ª‚,ê¹2 öËpɰÜs¼·(x ˇ�©?Tä•ýeè%Ný&z¨Vûs Œ-©Aõf@7ÎâǼ¦^Úìä,ªº�xjƒè”î…7BNàüj„P} NŒºH(?K JÛ+v”Å%i¤H�¦A/65eãµ#ñÁq�ìà:5ñ¦î r0-±–Ò³,#Ng@Ä‹ÝfáCp§DÑáaÞnóÕbçcÊs‡ôñÆ£ìŸêcÓ`�ÿ\Ù79¼Î·‹]M•éŒÐr¬'TwÚh>Àì…§®g•®O,B•øL¥xdÓÕ–fˆòl!‘µWêd8À™î¡J¸ˆ�µ>ˆvàdÑ*ç_:úš@0Ü…3gÑwô°ô†õÄž)¡Q”ஞÜb lˆW3“¡$Ô&Ù{Ȩ8ˆ1^eÓu¥F†Ÿ¼— )ÇÆ^'­i2À¿#k�›ÉP+Ïu%î~íÏj…2Æ7›Åõb/_.–Ùöy|>MÛLv_2ªRJ¨Þ JPÞbÛž»ÃµÂŽž­Éh�ùæÉÁÛ!�ð‹ø3öÚsõYÿ­A£z9µ©»œòMƈ˒ˆ>³f„žK¤l°�Õx‚"n3*Ì!q� jžO²ÂÄ‚’ÞÏ:ñ�!ˆêÛ~#| ˜Y_nò[¦— +¡ûÓ%¡ט6LågÅ�ÇİMëÖ½Uæ¹Æò CËÀO¾ÙüÇ>ÞÄ«Ýbå;Oæ-�_­�.f3» x’¿Sí!xËÌ�ƒk¡„]ˆ^p§�ÖÅCh@Øl:;‹u€†ü�z ig–jì¯5“ÃpWçQJÿ5¯ñ‹å¼‰–ñCEŠ)¦;Q>%ìñ…cJšãý uSL É‚”¿8•~:)¤jPÇ¡v°æ"¡l¡þû}§ú�7™OP›oc —I¼:]ŒS}as2äpD¾0ñŠÃÀœÍ�YEN‰,æqA�ÌQòÌ™„ŒÃ¹t|Ö²:GÔX$-í{p\”%!Ù W7øÃã®ÁËݺÉpÝ¡šÓh½ßdOæ»uîµãv·‰�j$r§¹Â'åœcÛï3–,Mªâg“L«¤²'̨ œjåÓ*§p0éYŸ×Ò‹›Ç­r±ç�®¼’GJcEÈ»«Cn6ƒò\ñ­X·ubÐa›Mö›oåœ †ö÷Õ]® ‚X8l§q-:^¿v³M�ÅCö\:�ñ>:ÁÝ:ÛlÕxeÚÈËWúµhª]ÀèG£ûp<Ÿá��’fÞà­„è “TXdŽfa2ŒÎnërÌ,èJ—ž&Ù²„·ç�¨Ý¡úmE4°1 '–!â Õ?3eXô—n_4Nç”øg£T )v–võ\8›J‚ yN;ã�ö踨ʟmPã;Ú¥¶ª;L (’·‹¿eï²x ÀP—ÅÍY{ã:;u“ÜÕrÁ—ÒéM¼ºÎÏÖ:$mØÙ‰üyD§Dr’†G!.HFP-Lw9޵Ëj-9•§FŸ!8ôûUߘׯiÓÙ“)Öò8R¶0çÕ‰\9Îõ)S ›«·FÖ$JT;ºñ¤p©ôkÞéi»ËÉÂl|â©ä5":w†Ÿ¦Ð¹Èuw.¬¾‘«V¾¨@ÅØÃüNÏ­†½�Ú eÈßm¾[ÂñØ Ì‘�¡)ä} Â=ˆ[.pMÀQx¼§Ëøöäge<*î•7¢§£Â’šÉn!�ÍûœmÑ"fëbþès}*Œà•–´Zi M%¨lçz¥%“hfp^-3þ´ð±±%/ê+eªßl é¶$BP*RTÔwSÏ,ÊóýLM¿²îd ¦(OÐ/g7G´¾!eÝšT²×ŽÌÞ(ÙR&M­òDŠB½»èpÀ«$ò©ˆB‰(KyûVÛTÓªª¥fçŽæ¬�’ã…ËV³vv 1ò]BmëW56uJÁ|w¯Î½SiGwRÝõ%u)�EZoòz#—5Y�ò-‚=#�¯›b@”Ò“‚»T©ù~“d§ê¤ïoi~î“õ¾ÑMr zOöoŠ\�!eöÉæ$� úš™1,êr@o“l÷!ß`4¡øªO ]Êô5ª(Ug±Iò Ìi”/Ý,®o<ÂGÝÉ�¥’³…8{öæ±Â×ä·Yúš»Ëü“O‘êcr›Üdé~™á•Ž "µoähìÍMOœ 7Õ1…ðb½ËÏ÷&¤-í²ÍÇ8œ·ä¼.»l\·iìq|RhŠoóÕγ?®xÔ£'Õçö¤»7ÄþÏ<46üÕ>�/äu±Y±ÇÏq¹ñºl?RO¸.öMÛ·û.» û¶Æ_M’èÇã‚X—öeËVJ–Ç»Ýf1Û‡Q „ƒÀ p°ˆðê{"l£©È‰ÒºúytÇxn+¸=,A“TÕ{@tÄñÚ*²¿ RBûs_`~Š&a-/à eÉ$v²@zœzÀörš™ï-Y‘ÒÀ,[¬í+BAÆ–™<^ðü Zú,ÿ%=ôKM’Î,œ+g’rgXÒšÏÒÔáuö¾¥‰”²fkA'œŽFîiDEÐ?´Rä$Å%r©«Ó‹—hYk`ûÊPß| ºH?0Õ¤RæT‡KaÜ슃ö‹Á˜l€¶#‹€d¯dÍ“cúk¤’™)dèµGzŸùvžÜa\¾~àˆšÌÊTbÌ v™u¥Ã†xñ9Kö»&ÎÎðÞ�w布xFÚ{PÜW¸^<BÉm\)¡ŠÄ—¬‰m„úÝ‹�`›ß.1%Ê�!Yd•Ÿ¤©Ñì*`�÷S9càƒü¬Ø&‡ùÄ<–óEËÒNzk¥»i”RMfoâMÿ€ý¯ÂóÊ饑¦*U 5\ ù&¿m!’×ǼÊó‘»u*òÖ=bœ'ßÕê†.’ª+$rß1¥€¯mù^Ù»šœ#YØw‘’¼µº6Qñ" “ä—*&¬äñ” ·jˆèÙéšg€�REÝ—J9%5Ór+›5é’9(fˆu0QÁR•- àHÒ‹#Gð“ù“˜E™Kõ¤¢Ã�äµI“�(g’uMW èºð†*Â÷«K�\?Á‡mÈéÞ%Ç¥ø;ú�ÉKL¸ÜíA¢ýÌRBT0{íîÖ@&ÃVóÕ<߯Ò::ØôDlæ3§â6qiò¤P‹§jÆ×§râŠkiO»ñ\Q¢]V3#[mNµÔ�Š\›¯œ(û�è§wç…_ýŠ0úE²È÷Û+ "Ñl"Â.¢84öÃ&¸ŒÑlôñb–/»«�û%8›êäEy“Êú:'ÝØÄt:—ŒÙ:?t¾Ÿœ=ù:iàXƒ“!YrÅS©ˆ&õ³¨�¢îÖRvÂfs¥l#ȋʮ>­¯Œ&ÍO<¶òA�e•™º¯ž"DÓ!+©Ÿ£fƒÏ÷»4Vg¢ÑàùÞ5Y%¿õ°å¦”}i6THpºRfñ• ©Ô„t ¨Ý!�@嬱hz]xÄ?}U2V˰â×àªi4%:ÞÌýv—ßbëbµØÞÔLNÙ÷ã&ƒbÚš^\2° d—çËÝ“€Ï¦‡×;m8d;âÊ´?Õ`q‚Þ,¬Úæ $dÏf˜uck*†ÝQVwÅýzd§é‚n×—µJF“©:à–=p å·ØqI.'9m”kW;Iu§äroê®×6©Á“dö�6Ži?¼q‡Ê&üñÂ?o¤Uy³¥Õ}ߢ`9\š~±z¥I°!``í*�6­¾v4(}y-nQåxX�ôéTŒ`¿Í6�eœÑóHÒÍ׿o+Åô44–aá©x´}\’/ƒ^7¹û¾�œÓ“ÖDÊ5Ú:Ê7ïÖi.Çà Ç�yP½µ‘¶dÓ¦¥Bç>I”Nv©Z¸PzK�%ˆ.mÐM†³é$GÔÒçëu–^f›�‹D)¦×ûEêeìc¤t{”7X!JÞǦ˒ÀÛðÈE>Jê M¥'ÏÇ85„¢VÝ\{`ò¯ˆÞ6ä'MYpV¬5Ãé”TÒMÊ©Ì�0�€ä‰8¹¹õs�h;ÉdÙ$<ʘ2cÄyèLŒÛŒòÙÎ_P·¶‹Ý<"ߖ̧ óuÇÈÓ|ôúÍë"œnRü|h:Ë]å°úŸÈ-¨Ã:rRšÎÐx%„`V�È€ÂÍD¾|g¤ÓhÚ¼cÆuë% ¡"òÞ<ƒP~–Úõ™ ¨r9m”.4Ãó>lguÕ>÷ëfŒß×¶îÀØûÂç˜V?P»<܃CÛ‚ã1ûO„m�¼:Æd<©Wò9l04V!µñµQb‹™l×Xœ3Ø5ó‰ÉÖ·¶U…*£Y׿û�†…çùÖ+S‰a¹ÙzŽéí³ÕœþéZÞKLq9Â~H8Ø28å/�SØÒ¤üóÜnµ¦Ë`ÊZ—¬ šY÷\ˤ ѻϛàÂM9€k*âb"ÔO¹2&Ÿ×¡[ òîé;#€bMZR4Ä.uFf›­–„ÿe(b¤"®(·Ø;ÖçƒÎ� .³(�wª¶‡š²¸Éâ�í•"éì9Gµ?únƒ:ü§•W3‘ uJ€° XhÎyþa‘½ßUW]à/£÷ïϱlÂ[ŒÖÙz,Š{b*ŽævÄ}6X4 ¼Pƒ,°yF³±ÃSГW=bÝ‚,¨†?.2OA‚%Ÿ€#‘úT�јæ“N ̉Eòq/¹U¾{ã_)¥§Çf¥$ gañ'i9ÿzÊ¥™U›n¾Xîp·m³x“Üüè©8P*õL› ,({ÈêØ`˘“«ŸCKx§|#³:4Ïûb•,÷>óˆSéJd²Î‡³Ï�ÈkjaŠ+U9«ò+°h+%îÐs˜ýu/=sB8øP»ÑBÀÙùâ³/6B^þ¼â©�{'¨„AÒËÌã `íy¥á ‡æo¿ ÇèSp3KaY±]ÿºÏ6wWᯑ.©¤5ø[zIWk½N/¨¡Mv�yéoÅvÐ"QRØ.¹É6?ÇË}V»Çå¢kN#jŸÅëizAm6¸ å6Üd·ùÇ,ø®„ºtÞUs;_ln½~G¡ç‡_xvœ1`ਓ½Ë“'PûæÕ¬}[*žä €æ†'œ_sâ¢Å#ýX¥®=YŽ)YÒá� �>].¼õ™Mz]A ê LþU™ƒ©ÂŠß¯â�ñb‰¶mmŸ8ÓŒ1XlŸÈ39ŠÛDØ‘é$AÂúжŒ[z>!µ_|ê‹ãRÁñÈ�˽‡6~Zc¶XãVLVžÓ ’�ÔN éÛyžÅ‡¶DùÄ…5µ†jãV*Pôµ« £¾v�Qáúȶ5HÅ‚°Î1�1Ûk�« >Üa¥š¤$†J«© Â#hô[Ôo?·yRsÖshÕ';% +Jîúû¨¬MÂQ¸ð¿,­g�M£ÖY‚áTvK"ý6Î^ÔV>ÆËj×UU¼PjmE+„Õz^ØÂeT^6@–ÉU³º41|a�ÁÍt mRá)×ݨÆ÷ÄÓÃLÈÈi`�½•©£VOÝ Ô …5;7ãÀAR B7“º&ûÏ*š`øs9`­Wž€{•zŽé!8TÌ­j]ðÖo”ÈAŒyžÔÿîùάٵW~—¡ß~J|E_¥Ý$b¹…¿{óÿgzóÏ{.¥â2¨AFµØð GA›MlBYÛ)»¨µÐ¢€aAÕKb}K�ƒžõ ÝK*·ñ ó�Ðk¯+Þ܇‹’Lç?z¥ˆ­)ícŠ J|Zæ×/>ú3ƒÔÄCg4döÌd ù³ÙÛ`eäÕäAtàšG,KÏ ¤¿Œ|Œ!÷¢@JônœîCÊRôI"S£çÈTFÔOqCŸ`g/V5TQœþn$EãÒro²ÍÂk=Ñ&vGs}]øŽí߃•¿¯`eu>2îÒß6޹X7z—È—H“åß(&úß. ö¿4–ÅÿýâA�×Tû6”Gè°oÐ8ÉmL>®±ºëÖKæûªQ·lþaû)þ»Jÿ:Ngãããg=´“|�½ZøÜÀ송tHBSÃ..5ku…®[ U ¬°¯ý¥Å–-,êÇïͰ¨Ñä��ŽIut?Bæ7‹Lþ=jò÷¨Éߣ&ÿ3£&ÆÃh§Úêð·Ù 3écÉy¡+#1E×Fdš¨³Ù¤­n™ _?_zp.6õÒðﱯ&$š3†Öó18.&Žíœyj6ë£;jy?ö#£P|TвÃ{�¿üÓ&X6ôíKûõõ&†Ä�u¶¹ðn?C`kP >ß/n×¥6ú�¤7«,:…â–ˆK’Õ¿²xõd¿†]š­²9Òù2¢ÑiˆÆ‘4¨É ›MòIoIò­¬ç÷ë:£y¬½Ë PèÉ#˜S Ú—š2“šjeAâW�ðîYV�Dâ°é4¢ª×åò¬�†m½Ý<3¶Ò‘ï �C™³Æ©ëìõNÏ@ôœüüC+P u²R×Ôb³ßFo—û­~òlUë+¥lL‚‚èg„ÀBõî¸M^t6}¬iÈöŽ)Ö¹i€2ˆÀÈ*VÞÝIã��bí×)ScÉÙÔjJŒÅËʸu¾Îá„x t,—>Û® m¿0Í/�Œúè=–Þ M@w’×ß×o£»’¬j§]Œé öâ¶7lcáÙJ ’K&¹»Ü/ª½y'Ëå“ÅêI®dŽ&Ä‹¶ð0¶U#©Nö;eü*¥ÇH¨è‡øÀž€…½Ýä,FÁ¥äçz“Ýd«íâ£é ? 2åÂM¬Œ–2”Ö�é8[Íéd•^æó�<þÏÙf•-OÕo)\ñ*Þ¤ª¯éÛWoé¿d³È½%P1¯f‹µÇ“‰ÖžˆjG31íΰCH…²5¾‡¥0V³?϶[ÕÝxy*ª§aGó MÁrqÐM1e‹À[Þ«Å!¤ç…ß9²š:Ð*€„YŽ�>ÁŒø?æþ|Ï(B,jH(*óÆ+f4F9ÌH˜%¤ŽÄ�Ä¿ÃÿS{%€åzÊ“=@ý‰VRiF°EQ`ÉU¥î2¤8gÒ¢'‹ž§[³7µr¾_.í‰ -4íxÛ-› Ìgv³$tÃLušI¿mĨ·aÔ"Ö¾ãVë×ïhÕu^©Õ�×RÍÐíht¡-àÛÜÏ׿�;Qý=O½jèd¤ÜгX£&I¾_í�7Oçî jfìÂZs©ãÓiä4GÁ¯ë´-'QÊ1Ëæ!H†Ë�ɉUòDJG»­9¸Ð¢eêC‘øþ‹^�²ybqÐÃ÷Ãx6D=˜ ªy�uòÎØ£Ç÷¥Ô@ 0K¯vùÕâzåïeW!Gæý …k2!{÷*õ²Vq“æn/­³UêwÝPuáçU½MñŸÇ\èeŸVXí�eZÝ2„V�khZ…”•†|Ž<Ioó>V-5;šøÝ+À®o°DÌ›Y¹,Æï.ÛŸÇ‹%­rQ8#œô:hÏ œ÷C¹ö“5¯×�ó°z?ú„SÙ|ÏÛÆÿº�71d!yµ%+Š<ýÛM,Íq…ç#HïÚäu}¦ï8=ï‘‹æÀ¯å›Åõbå#“ iN±A°8GÊϬÕé\¨‹õN&­ùáÕ0坸¦¦k¨ú¦3œFƒ‰ñ� 7¨Aó� ™ÌF“vqâ!Ñ¢ �Jþð#»+‚âËn ÔÂJ[7,>ikIÁîð¹ÐŠ©€Õ7ÿºWºÕöêönAÊÕºÎJ#Á+´R;‰©›Ô]Ny4{ªö4JÜ¥&Æ…¦ë¡òå£XÝpx‹ò,4?´1ñJÊ7Wq�¥›ÛÕË·¼óDtnH¨(Â:[fõ÷–åR[Pí ·½ºj:e`‹\Žš”ÎÓLâ½75 mÐ_á�}·¢ÃO‰ú˜¯3"«Ÿ{ÂÞ¤D0™jkí,tB,”¨Üùà!Ië&²$Î…3o?ë𜠉³f-§,rˆ˜5ÂU!QÀ�Z6³ Ñ-a¦Üºž³Õšëü t@|ºÁ¬W¤Iʹ‡€”Gi/Vš7ø˜¬ö•Ÿ9ppšÀ”Ò;%J•ìxÅC­:(£ÅƒÅkæ]™—o#VáF=6¡lT‰åX7v’yzbJïiÔi¼½™åÞ´·¢}ÇUÇs¯ìð)ˆ5à�‡ÐKã8î®ÌUß�«ãŠa¯nóØ‹Ól‡¼Ÿž�Á5Ga!–Óâî¢ãJ^S¦`Sf¬HGÅŸb9‡œ;d UÖæÙ.»}™on)cúþ$AþA:ŸK=…w¼I¾5œ£Ÿ ŸMu¬º‡àgoëÞŽ0oø­×¡/¿3Šñ,R0õ–X‹‰�g«%Üü÷³¥Ò0¼�æH…�:Ýä>¹Q¶f¤©$ùtã‰EUµ2ŽÒâfOâU`1‚½�ŽÁ•anÔàV ËÁkµ?Öë˨÷›} ä^ТÛNhgÖâ-q®ß�RÙsjç7Ö0 4µ?d¾¸>¾8è¶£=;ÙŠI¾¾{³Â| Æõ,AG�� QÕüÂëÜ‘Pªµ�(Ú[u—‚Aê‹áÔ6´rs®A ŸÞ¦?œÒ__G=ÎÌvŽ5`pð)ÎGœ]©¾DÒáµ~õR]h¯ÑK=#º„+en�íö@$ÛÉéüìV/øŸë1k�SQ§X"àèôòe亯%*ŒùûéL€öÓB1R©ŽÜZm7õ¦Rî¼|í݉>G7ùÞ[%kÐÏÌÓõ×&+Š�áàÆ�—çuLPxÖÂÚ›ì§õ2Q«áÖ}Ω~_‹Rkù}Ñ »Æ9ÔnÝÔìbrvO:IBeVp¡=SHÎYϾKúï‹ÚHÁ€ª¦+P¡ þ‹úQK]©Ovù¼N}¸qòÞ òÄò}ê4ô釞`Ú|ãF‰,lÜk÷ðÒ1®æÀÇàoÐ~Í-.[;°çܲ�7zÐ(P‹h>M%5ÂmèQçÞ÷1úHß'0«ˆIMšŒ!ì¡�­ÉÓ¿öDÝ"Mz"ß ùâåKN( Eo=‰I ÛôQ×°” ÷¦]ÄÜoÒje¯À?>Ê¢ö�ö¥ ­IAã´½‰ï7?j#r×ÍOC¹ýÂN ¶¿ð Ñnå› iÈ}}«þR©‡¾¿XÓÜ4j¯½™âËŸ²Ù– ø %µP�þhRX�+[~ä1y¿ˆ¤KB¯aÅ4Û]¶Ëyó†TÙò!{K‡Uí­b“�ÚçÐÖâ²³!ïÎ*6üÈ#òøBNO ±®~e±7o½1¥��õþ£ìCÈ�y ¤¾z?(rä==Pµª‰¼·VÙ§'ó,V­dÛ'·&÷Ëóõn¢}­ŒÊÕ… ݰ‡T-»©È\¡ ¤qÇ›d(¸W• û=1К¡¢{ ã€ÈÙsÈí¬g…Ê i[YJèðFÝ…ñVÉŠUª€U“CÎPŸÂÜ˨yšöƒ¶¤ÓÿF[’?s�ÂïSÍÜåà++­/n¾qÂc·m»sšì—Êvt|øÐšYèG-à0nhÃpâ4¦f8 ÅÔ&4iFÐ V6ã·¬e+ÆZjE5#zÍ52hœ¦¬™Tìœ2kAD¢•Û¤YÂW–­Dš¢K¬_§ñež4Zë&�‰-uÔÃãTçj)�Uo£uˆ³¥Ô,+ ;^p“x†òPgI�£Äó¹*Æ!®’Í\ÕG•(ÉvÍüÔ‡ñ~Ñ‘þ^f  ê ñy¼Ü‚Ùµ]ÔªŽ²q‡õl–a¥KŒ½Ý~Zì’˨�PUëõêÃhÌç}Ñšjh½Ì¶ž00�ú—_6¸-ÄëõòîÉŠ‚›�NÔ9)˜p];´³ÍîÀædþ�Û[½ûøö ”Ï?ÔÊ'dׇ4á �W·^úFûï8]ü¨}”Ý·16€L½DŠæd™SüZHh�˜mqrÕ5L9½X­eQ5okÇVÏŠ–1„pÔ9ìã+Ö~6êØ´÷ßäHÇ#|·õÃÂÌe ÿh}/sðë;óë÷î"b…¦¬|»°Š((vÃT‰õÜy¤Øùödu‡¦u ÄP¥o;m¿~€�Y~–L¶·š6p>—Æ\#£éSÕ¾«i�-·3*µôð†Ûö¢:ßihwpIGÉâð}¤hƒÈÏÂD{;GÇHÜ4Ìc+øL© ’a449jÖ¿©›ØÎ_�.NÑ;*·ç*hY"Ã…ä3,‘³%oZw‡ŒÁ> Lïtf=çuâ…ÈxÁ¸;œm�¶eB Ì haJÎ…ÒaÓC‘Hñòɘ`�FM�®=£Y<œr²e¦–ÛävC½‡P½`òü—a�êõ±rP3xÁ™ãá0w¾¼¨lPǰ4÷à9WÛÔú@Ø%| }�ºeR©tÍÈ,aðRiÉêðÓþ=Âû÷ï7ŠðZý¼á×N•áI”ÔSnŒpþ%xY<è¤á7‰Åw/…ü®®‡ëþ†c F³ëâu5ÒÛYêG‹f;­Öõ°6²ý ¢Ùß"‚ý˜Qk¡øcÒe³`µãöæv6Œ\ËÆh70ï‘ëo­þšõãÒ2H†ê)7YÊj=ì“u‘ÆÃ¢ÈMƒŒ¿MÌúÛÄ©¿*6]tv >­dÓ`t“ÐçA_¬Û:E‰¿vçŘ%ÄìdHÑBIÀ™ƒEj›øŠ¡á¾×¨)„0•ú`Å~6‚�Œq›xMÜ Ã[7?Ätì"k Ûçà.Ž&àÓ-œ­ÎÁ-ã™TÒ“�ßň¥¯0â_á[–`¨�¹|‹)bP§SeŸ¹T2 Jˤc´seˆ€½ƒè“åòسü³g\ƒÁg´­ªÉ.æ>ÛT`†È–ˆ2ÀiÌï¥ÁŒ†Y†y¼ŸéuFä Ú ¤xü%úßf2 DèC'Å÷p”= ”^àý ü+�U-Ô+ Í�‘Û Œ8¿@C‰×»ä&öŸBrF+ìåMƒû-MZ¾M6™‡Š™¢H ¡NBÔå!ˆ0ðš¡¿Àž¼j¿ Îâ¨;CM… Ë×ûÍȃoáY»ÓóþÌê·›4÷C¿Â�o¸§ ÉÒ ƒIþ9¸8‚׆:£e_j^ÖÐ;Ò’,ŒV§}ëÍ@F ÐÞluÚ(­1¡´?AgbÇç{“¯'Þœzouû ^ëöKïõÚÞürû^{9éNè�ãê•ÇÕ¤ƒåþ�tod{·Sʳ—™‚�üÜ]¶Ýeï³Ã!Þxø,XfwWLËÜ@’ÂYo?ó‹)ÅOìîÖ5R ½i0Ïš´î„�FÃŽ¾ßŽ’T Six¯,ŸçÞÃ;ý–Ù2 ‹@¥U€B6›Ñá'ªä{üãm|�].þæ;n3PU)ÇÂÞÚZŸ§òT‘ˆÀ|UGhå^ç GyáLI‰á mIyòÑ‚k"Üø–˜·ÃäâeþGbŒc"ÌݸE&ÏÜ�ƒ Rå…ã~*è 5q¥ü™%¥Fgyˆ%¼‚£2Èvým{zVMP^ÕMSW�B5R’>-׉þL·Y& ÷²zROÎýtÞU}dá¸5iÇëšMÔ¬³î0ú ç&ƒØ�Gx •?Ugô³�ö‡BçÞ‡9Ä‹T-l#²¢N÷õ`tË l@P_l£yeg¶DG70‹Ø¹±¼…³­2švÙÛ0ÐSŽFép4•ÔÏØgh’¢ˆê dM�ÓîP›ÆÜ¹ øó>c6 cHÓãQòá Ò‰Ò„�Ú‘ï•[À kŸÞç)È’ÛÖÓbðÜ {b¤ü¢2mýg[�òÈi¯q&S4Àþ‚¸´³E[L‚ٟؓwÍQp¸‰~ ôr Ê0N@ôlú6þ|‰¯‹áêR¶Üµ—›^lBrêÛò-¼ö~YìnNÏž¿ó-´])A*Œ¬7sðnA&Õln‹æÛƒåŒl>ß¶9Sƒ#{3± ”SúÎe¶ù˜mÎ|غ¾ï”Òݳ•BDʽ€ïGD½¿�wZóm¼ñ±XšÙ,5ðb•Bg42ŸŒ¼!ƒy¸­KH*ªm-ЂÏÿ¡¶`ô¯Ô;×™�Ï/á”ø¾T¬9Ô�$8Bã†�mÀØà2[]û¤3 }® ăAÇKs,÷‰w�âÂLI’žcƒ²×> úo<ÐÅÊ}åÀ~áá?¬_À¡ã;€SA˜S¡!”O QÀêÔ_t¯ëNV QþtïŽî5¹Ì�²XnÑÉ%’ G ¶fé¼eî¶€éˆóœ¯È‘yÜr«1…Óa/¥›3¾Úþj·XÅúW¤ƒk­°×nñ¥æ½ÂZF·¤¼m�}Ψ£Žb4�®�¨h©©Þn?å$$V-"›p¦Zýl¹¿^`׆½´«¿‰œµ­©ƒ– ÚSžäØ×A2vÕD¨B:ÉÕ?& ÝÏž·€æ?³dg9 ÑE�4�P{\ðÈ£5ÈjÂ1ë-¶xZ2¥%<ÇÂ(žŒt‡]jÍ ‚VÛygmƒÂº‰Üü´õÞùw±cëMu–è.}Ëž&e“ûpâǽD›å£ôëÑ'M͘lçÊXßjf¤j˜çùeŽ~•ÆîöbÏßæéÕ6K®âµ:¬ë,YÌÉl¤m¦ÎÛ:Nn²«�]Or<#óÅ–v¿�`ÑÇîÓ~ä_%’ûdcè(^|{5ß­¯€ (þ¨N&†6<6zE¦òj¾|ÂÐÇ+ñ7d¡:é¬;›Ùå¾Y_-n!�hwwE¾=4ÇmN8òä¥ëwM-ý¸7ƒ}<ŸŒ¢·¯ÞFgܤenGc°ƒšNâç“A–:�÷þ|67š!dÙÊ\@;B8gI¼ºº¹[+ý þ–-+#{§Ùj÷æ2F6�FÓ`Û붴ʯ¶ÛmV �.//_ô¢Ó·?EúD«¡`¬:ê) ˆ1EzÈœHùÿñââ§gþù ç8)mæ²Oå‹…›Ígµâ�È)鯑¤—ú,m¡Ë¡/Ôî–ºlòåÕ:^ù"ÍZŸ�¾2×[Y ‰{b­6Læ˜Óöw+ÙÆJ ¾¡­+»Ý~Þ~‚¼É«4În}llNÏË}®”,<{º}˜ÂÙx¬Å–¤ÿê‘ì²Õã"¿Jæm*¨Øi¨ŽKtúò?¢3ˆ“«±õ´®&»h—EUIM%4›.4…�Çãd±¸Ýoð¬×�]Ÿh±õ?!m´46Ë|´,âdr`iæÖ{ ÜùH®Ã«>šu‘&f6‰ µ'{d1 ,Òˆf² ÓÖ„SO"]µ¹‡NÉ9c±p@IéþÔÃ_zq9uêb¤Î‰®Æ“PppŠŒQ Å*¤ê’mÒK‡Z´àìáá³U“³sAtrÙ=ÖóÐ4ÜÕQþ×JîŠøÃCRä9a �û¥Úrp,Q¥‘‹S¥éP¶NmšfBêÔÜÉ5<÷å-l»îK8褜Sÿ¤ŽÒÍÁŸq½É¶~É`l‡ŠÏÓÆ8¬¥sâÅì Ûÿ+êµè•ê•ÃÑ‹`»¦gL~ ©¿ÔMžmHæß'ÑWeYÿü‚„:¦OÔçMÔJ*´ÏçHö·ÝÏàùYx¹•Ì·~K¾´ÍëÀ!.¼9¢EäÍu ÛÓßÞbjÓ õmtqéáÁ¬ 4p‰Ü-˜¹HoZý¼ vÞÏ0Œ¢¬“E­H8›³Á»“®Ìí>Úm¾¿_=U{ˆøþ(Ûh©é�¶»Í"ÙµþEÿ"Ú oþêŸþ©•£ã¸õÇ?Â^Íçø3 ;²P�üû ÈlñßÇ«_ýo¢Í¡‘£ì�÷ä[þÛÍ“dÕRºVöiú褡&Α¦Á•û#HE(ýhœ”Ÿš~4¦³ÒS“~ñ©Î0m=Ý®—‹Ýw­«Ö÷¦k—7ìmô9z =£pŸô?°7æ7óî�þ ~›ãûê{ýéküþ‚n›ZÕí[R{zw³%ï~›üHcnCüƒ²ªðОøÍ¤oÓ¦ò�žü�|g`ôú�Â?œ~èéÞTô�g^7Óå?õ×uÿüç�ÿñŸcþS�°£?ÞÑ-vºßÎ7) L8Æ®_Ô¦ÿãîß1Ö+Ø:Æ¿Â2A®¨Z<ŒªwŽî²xCïÍóÍm ÊýùûãÖ«WÇ··­£ó÷—ü÷ãíVýó¸õõß³‹‹gÏŸ«ò¿A<ŒúÔÍçü!õÛÀ¯On¦XZz{;Åð>x>Uÿ•ßYêþ^H„$Ä©�”mEá¿3xñ­8éî‡=m  æ…Á`0èÙ:IÙÂ�ÙŒÃGl´þ álÐø—I3‹Xñí§þ*4/QXlYPÉiðËx•¦å.rèåQXFá_ý²Œâ”µÖ€¦Ó(^¨y‰–,¦i׆ÓÁ`]m è:Z¥ÕÖèšÅÐÓH°`ñ‚ØÓU8A*íÔÙX«„u’4æ“Ô]Ó¸ÃHH(á$!1™�ˆø$ 2'+rI–dJÆäŠ\“¹%;dMž‘3rCvÉkrHŽÉ'²?ŠYºŠÃMÂR˜5~,NƼÔ= ?1Ñp]±�„^JRw�ÇØxÍà{7Z,£�…Øþ–³›ýpB— p‚ƒ°Œ±=–J4g)ˆŒÍÖD£&fáòSbØ�óÀ‡ï“Ùqä¯F¸¡#ŠI?ÎÙuÁ^³©ÁCÇ’sºÄYhŸgW|yÆ‚iFŠLÅ0þl5Æ!åŽ °AçÞéî›ãý“sâ{‚;°'IG<ð@Óô™°¬& 9€²f3“|')PM.Å×è]Š~&\Hk ?¥QVðŒ¡ãMØ+a—§«4`)¹Búü«RÛ5P5ƒvÙ¨äwëÔ${ÈNAŒ²©<ãÚ«ˆç’J¯9So”WÝTí"Ý1£Wˈ‡iB^WàT®EìqÞ²…S>#Ÿªƒö¥ØKº¹ ì–MV)Hg£?;§vJ˜³áS{ÐEUÃ’O;©ºÿ\õüöXþ9céî*ŽAFh…¶3*w³€- ï,¥qj÷‰åók‹ç ›—­È^Ź«ÖCßLõާómÞeÆÍtv+ïýЬÜPXVµ¶ø%¸:¦{ ›w%VPR'µ�‡L“¹ƒ¢C×Ó‚Ôƒ5§çÍuR LXÝ‚ƒû"¯@5—:„eÅH£©Š©ØUGiŒ‘`®ØAÍŠ‘ª%ÌÑ Ø¢A´Ë»jG‚¬MMŸÃ=g-hjÓ4­Ž¬<ØS>° eV�Q²nÐ-ešï*nÝ.=MÏB:¹zFc©EŽ´ úâÕýÖÎùŽEpݳÒÀ=py–ã(ÿsRò?Jmà#9îIâYÄbŒ¹,)†ø8á¯�‚Θg©>mŸžZRè]½pòç<Šù”@ð*’‘‡gMr¯Æ_ãL“b÷8‚naU™—;´EN4 qøDÒ/]þ”N¼R¦¶-Üè¾~=__ãó¸²Ûø ,›™ÈÓÞ¤ë%�ö,”Ä®�k‘Sw$öbYd%éNš"Ø@õþ¤— doLã^ `M+4^^ªÝ$sªŒ+Ôšï·ßÍ÷Û¿Å÷Ûm|KCMîÈ95ÐeÞu{÷f‚·šÿßÍÿ‡¿Åÿ‡oóÿ]ì·pßμE>hÞ?·„Iî!pû6 ‘e´´ñà7!ˆK;sšTÜÒ½{£ œĹ]Ÿ»"k-ey¤²�ªÑ[à‹Ó¨ÅÉbÙ¨EsQZü\ÖbÂq Èu³E}5HÿñоpES€ŸM‚dø�Ài9> BWbºFOA>¶¬$òˆXáìpºDõôL¦¡Í,ÉC¢ÀaªNaùÁE˜Tº]ûG�~ch?ØÚ×H $>Ò ñâ– TèØ¾6EclϤ‰.äE¬†Vu\+ÂeŒ)–tmKÉ.³Àð@³°·û,œp �¸'D‚üDNÈ[òႈ³6†Ûf?¾€ÖÃiÀn3´¦b­¦œÅö•_8ˆŒµ‘Ï:ø�¢ò ¹¦�^ñg˜ÎmKä,òqe[×÷IgÎ}`Ì"—°R0?€i§¡•ÀžÌì¾û»c‘hI'<]#%Áq<áã€5 pÀÒ¶þ·ã=é˜QSÛ<î/’Îd5æ“Þ˜}áñöIÿu� (ŽTŠOM*`øíq �ûÇ’�@�Ô)w.àl:‚¸¯óÂë+ú¦vŠM:ãªg%!¦ºœM²»0‘b8û^EûØKeéÅ[Q}‘pÈ¡êÑ9=�“’3–‘�—è`4š¬©GíHO Rž\1ÿ8òi�ˆƒÝÓ4èèl��Uy Y�Nùq´†Ó¡>êa`©€+'F<ëU›pu•œÚ®„-yÂ|Tw€£Þ—€#ŠpMù¾gBà‚õ¬û/îßW‘ešÒÉ|/Zȼ�—zOôAEÄ 'zdÁ°Ú$*”8 ɨ*"LkÔÃuÙ—#$,#…`÷žçãà¯_#ß§V4�Z^öi.Oô‹ ®ÜV�±�u¸‡¯÷Nÿ_¨ÂdùPh—?â(<¸œW ø¹Æmð°Dã–W&%VÉÕåçÎ’ÛÝ´ G—s„“”²»Q‚+DY9n_:!µ™ÆÑBºPXç‘ü 3/ñ©-)J=ìvå7˜ûúÕRþ {œnWùuøÜ—IãL�I•Vá¨è{Üxʃÿ&5çô‘6Ã8Iœ°Ì‰Üx‚ü¬_]ÊÚ7·ø0×ß2Ážo˜LbÆÂ׌ú,Öž32¡S>ÔÖ©o¤D»øªuCšæ>ÆM˜Õ8Ä?Ll~=œžÆÔŒ^DžԌ㔼_ÎNÃ=)¨ºàòŒ‘@~Ö }±EY­Yå÷¦$ƒ(<æ“8Jirµ¿X¦kwÉ—Ì~[§SM¸m¶ O%é*É+ÑV6ÌÖ4š|ÅàÚäMÔJ+oYî’†,ØÅ�t„~f'ŽéÚ剸ÛfÎSæ‚GÛ‡©l›yO€(=â ,RßÇ64jÝßbîè<Ò‚Îj-âK{�¦Øl§îç‹×gê°öÏãÈ_wžt܉ÕSY«|¯ê|¤1§½ÎåY0ëâgg ÙC„C„ÿÇÜ€…³t> ïß×äÀ©ëcxA¸GÝYÉJ¾èÂ2gÔ°­ ö©CøÓÞœw9œ·§SpBÝ.­X|Ž‹ðûûÞO�á˜|BÝt7MT�á^lÜìVÀ2Í{è�‘2p¼àš”Ë/©"‰/E÷¤ÿ´ºœ „‡h!1[€zš§Ïò…\æCp‹VÓ°}l¶ ÷ó� Ÿµ8·M‹CѹÌ|¥Þ„ûlGÞµVœ^et-©{ÇuY6jÛ’6+}è¸BöCãQgR³p$åJƒÇ¬Þ¨¬ðäYÝ€€»]³Ðè¤0C‡«´g4í¼8?>RͰêÌhb7�tð4èµô‘6«Pû°îÒ%žÙÄ/¬!>Ûž¬’b6Zé¡–þ×í/š'“‹ñ¶p­ß› yó­dHçK4£oåDBwß(öÛ°»Õ]ý[CÖî+¥çoAž4'gîšb{C®9»ùm±’š�רÝn‹�¶¯Èo"s m4­\ ëFc–Ìíê�bQ_"qÐÔXـ˛ò8AÇI¦ bì�õe ‡áœÅ<ÝCžDòú@êLÞe9}-÷¼[·È�Ñ{gN o6-[´8�¶„¬£ÊˆÉ¥ÚÖݘiwÞ4šÍàìÎȽªKø—ûÓ†eÿú¶•k (S7íL[?Z~M °­()2ÿ€âŒkûÄ6„Ïï@ŠvÓ¼wÍù½+çüZ¥˜ûQó;ÿwšŸÐKÑî* É‚­¦ôrÎQ¸×Ã+@K&8ßbjr >ŸA€ÁÃYÒ” ,Óš¬ÃtÎ@ /`Ø‘)4øCä’\dn•k‡”`¨[9Oe:Ó·e†W&÷‡ÊV±êAÁù�U©Ò³¿ÊôìÃ<=;¨fä“U ¶�QÛnp0³¹Å ˆ¨�š'åÂuYð÷s±¶ÉžbmÈCõ£VbR®�ÈéÃ?V8ëéF‹<úŽì­ê²˹¶—tlÏè>®ef+y r#LF�ŽmaúBüÆø�¹'V‰/ë™ÚëjÙRž¢ýÙ-*ݤeC°æÑRÝF§ü–ù£˜Ïæé°?’W“ð°)þ¦Ÿ…=ð]‹d(o5GŸVIʧò-ºyÝöþ–ÛpÅQö e$J•à›]T"§îݰñO{)]‚-ÍæÎ è‚(Ƴ1µûB‰}'së‹ð“†æj^¿h9Ý0®ã6ìMTÕ…ÞFäx€)X•bÈÜÆ¥¶YÂéHê)ÉêŸRò¿/oGEZï"x„ë%¸dZ„Ÿg®ó\÷(O7Ó9ŽŒzµ…Ðq`¶-³Üp?�ýþ?Fs&˜ßi´ÌÍH‚ËÛàâ~§¤gÕÝ‹©ÏWÉ�K÷6Ò|ZV“e,˜ÏiGb:4ô;6Ð=a¾4¥dØ‘µ³ù£jvi€»4¼¦É9„,Yö£»8 .ªÊWHs³VV9ª¸¬ôþ],R›OU™ƒ\•ƒª|è*�ª¸ÕЏ;úª}ˆ¥Qfiðk�'ä²`ÂFgp€"›ÍgAãÁF +Iî03šÒàQa*奰­]I KY5ÞYAÈ_£Œíè5ËÃâc²èêm¼ªë•” Æöðf¯&]íOJN@®ðyÌëf_Ü,Òš$›'»_iU×å©‘\&ê·¶ÙV�oÅZUÄVà\AEZúeJ~ºi�ÕXÁB¯¬‡üº&™S£…miw'£ñ­¨Ûш“ÆÿðÚ¦tQö‚ÞªæÎ£ßûË[‡›(:©¿3.¶ìß6߯ ½¾É~Lf¾_{ð EµáÆ=§>8`¢óþ{ ÿõpQûGÇÜ©:ð'´Ã‚í ð£ß4x¤ Ãà÷6¨Î�‘ àéV¡Ú€†„Û­†'@~p¢Òn¹uaÞß7‹tó­ÀQ“Â-ƒû>ä SèFßÅî2 Âaf†Lé‚ë» Bp5èF&w$!�ºóÞüÎà à߆ꔅ- °Ò5B�“ÚCpˆøÃwÊ)�ó%"¥‰‘ìÍ'èÁA3Úç+5$ªÎDÖçïâ¯ÿÍrœšT�êˤH† iÜÁ÷›TmSabš9‹ Kɶš:•á¦<teµ¡o[¾‡ýs½6ƒ†áƤ†ÿ4WR"-p‘Õ‹èvó´È;�u{ùÝ5„/œ‹ÈoÌDé÷D*õ2kJcñðSã`ýþÈÞð.#8«’ñÉ‚ì“}‘\4O~²‹„vN*¼K*,òR' ÿj(.?v0õÃåe¤ÑU�B®+‹–qtÍ}æ†C8œG©E¦2�7ü)3µÆï7XR(jЙ_¨c®]Þ-)š¹†0—õOñ)Bu°*¤(3î¤çÐt~�%Íšr‚òLO›æôÒ­³ziV¯¢²‚¨ToJ‡Dˆ.âJå¦Vhl^2�ŽÃX�’&Ru1Ñ¥RP¥˜¨…Z¼ÊÉ�G¼ÌÓ¦"U®“™fÑaàuiÅÀm‘~Æk)¨gÀ¾á ´ÓXãkŽ Ë/í L˜=%$± *µ¹4@F *ÞRÅEK“'¹ŒKK¿î±ÜH~Ø»î ¹é#˜òÔ‘/g°^}†Sâj/ÉŠõ/X€@]å7õ…uíÎJ>3‘øw“DT£��Éœ%ê9bƒWèvy骷¹ð½´m7"ôy!`¡®H½®ÕVbÇh-ŽÂ‹Ûz²YõïVŸ'µ0PŸJ8ʶN4FqwÞ$°‚Htu…ÓÊÒÓ¶9î@yÓAYѶe¸á X%®Þ,¡ÔßOúX’PzÆU{üè–ßèåƒñ dÅ[¤å…~<hyë…àÖÌ÷HÖV”bWg[€†Y�a êø�zVœ¢Â3Ç~ÉÂ�l®?¹úúÕ‰ð¶þn÷úíà�¼{¼ÛÕ¯·î5j/ÍŸb}Ï‚;å ø%ÒRògèJ$/Ìð`�¥�i´”T…ÁpèÓƒe~SüejYé×þ&„ÒÂT;3*2¾°´7ˆ’”ú>Yo3û¤áõÇ6Ë£âfiÂéá—¼Y¾UÆ�ô»KLÞWKL$)ö'ýà½zý¦úoÜ#XÞÚ)Æ-P¡ù$´¼.<Å×ÛA è{2¨½ÜV]5W• ¤¶œðt ç.üH ß›3Éû\l Õ²(ã½>µ<7EïžÐâÀbÙIzŸkUÿ•(È{Gš63¯áZ�XßmÏÿkìâùÒ.ž»xž‹�N´/ëy‹<‡6<ÚþÏÿPKÒV1]?zó‰šfgimunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-angular.min.bdb623fff3fc.jsUT ëÆ«jëÆ«jux 臕WmoÛ6þ¾_ÁƒF¬Ö ÈP»¬I‡mZ4-, PZ:Ë\eR#);†£ÿ¾£Hù=Hš‰Íã½ð¹»ç.×+ë`ž¨$~0ôfô‡PU[ ós¡ ŒøÈJUÕðÌ6âÙ ‘ ¯*Q[ï\ŸÏµÝr:mUá¤VÔ±õ¨µ@¬3²p£ñB\qÍ \Ž ¸Ö¨µ‡ölv³«¹ã.}£þ…‰I�jùðµã»5žWà^iå„T`.k˜ƒr窼÷ æM-ì«TùÓè¥ó¥Smæou!¼˜ ”]¼õùÝåÕ'.ñËá�î–íƒlc“­]ƒòq~0º|§Ë}¡Y­!Ý—SÖ¡½b¶î:Žá_÷(_7âòÎ�—²ô˜ìX hݬ› Ì,/¡AÔn,‰¢‚ÝÞv|#•‘¿¼Ã¬¢åÌv(³ƒ�ó�²l9¥M’ŒôÄ#<:Ëݪ=%޹"E.�цž(bà¿V°D�B«©¬ZÓãD¢)6Æcëäë4M[Ž¿\7Žî†¶!�hí°bDó:  aÞ¢ý �FX %è»ñŠö؆]û¢TÕ®c‹å{ý Î}M®Î ½ªþÑê» »� } I´éG�åg‚e±�UøµÆ%‰G[×�.…QOv²odë-vèƬN'R•TµuÍ�ñ¹n•ËŠýÃV…ãêà¸)œ ÒðaÈH×uX"5C,�;ª´Ä¬û¢1má*¶¶mƒä„¥#LÕúö¶Œ»™´©ý&›+Ôú  ÝA~öKèÖ��þÆô2ey¹@½·žæ�%²F7Ö+Œº¦µ³^—:Ž4ƒízÚðsÞG‘Þï `Ú ø'T:­†{¾‡¦ñÙO‹Ö ~ìrÌ+¦Uv9¤‰Û;v(ä/¢%•Ÿaµl(`|2À$Q/‚5sXÇXça“Exá—öù¯¿ÿ6E¾CT58↘6çj`0êîï©IP¿‘ߨé |-|ÖWÔ2ƨº¿·¬ëè)¿žëì”0Å!°tíô7PH–Ó`5Û ºCÃ�6_‡FËúj=¢�p<4xøš0[hY’ç¼Ôó8yþêÇÙp¾_ìeù d÷¹´€E€�ºÀI°õ×@yUáxhkøÓ÷æ¼iðoï¯ã fa,ìJTIÝY¥uƒL†Ó*¼"Ièð1õ]nÜHúþ,÷Q¬;~pçJ?tÍàS±rö:(H]º{oδŠÒ Œõºƒ˜ _ñ8¸û?ã¡<Ý1YcÁ J‘xO¨ÂsuD�íê×c®Ëzv{p*Œ…*H¬r2i]ï D¥~ª�Ÿ~\ÇY¡ºŸÐ²À[–(íP#ú:¼Çäb)$¾+>€ž™ûûãΤ%`LzÅ�½e'Ðø�b‰eècŒÕF–ÒÍðÎBÔ(8fB_rD‚W˰é`å¥äo­tK Qפ‰»P\ž.VJÌeAÙ6œP»”á.€”U¸zõr³ˆÜ¤²ïLmüÊF-÷…ÍpÍ:ªà›L·™vþržç""åמˆÖEúŸS¨º­p.B~Ç"Ͱd‘)âÕ£;¼�lÂ|ÒûÞß(;�ÍËî—6wþ¹rKú8  °±‡QI²ÝÝ|/¡úñ.ÀBIìtØžÕa�`\ç*ßÛHüíÄFNpv8ì_´ëvïØGŒÙ¡ ¿…‡Aµ½DÙx$ç8–ðÛB†1 UåŠëSæÍ°`¿šaîúY¹ÇqùÙÔH�HÚŒ�ι‹Ð:�ktÚªmô8::j¸ÃµãCåÀ—§÷‚ÝÎË"í=뱡¥S<èçO ‡ŽŽh<7Üt¬úÿD‚êÑDH±=M¿I_``®ðäGœ¶†ÛÔcÑDEŸp7裂ësõÃÿPKÒV1]zo�3f[ë×_imunify-security/assets/ui-app/assets/static/shared-dependencies/datepicker.min.c926943f5449.jsUT ëÆ«jëÆ«jux è‡ä< wÛ¶Î%ÕéòY+�9i»­òçå:ŽÓú6¯Åi».Ëñd‰¶ÙÈ’'ÉyÔõ¿I½)ÙI³Ç=÷ôœF" H÷ï‚�N·|:fðà×.´™îxî˜þw–}õ�¹½}§‘l›wM}Ç,4ÏbÔ±•ÝÌ�ÍCí’ÔFs×B²5ª/´y@7‚ÐgV¨5¯M#$&aÄ%> ˆM<â‹LÈœÌÈ” Ș\“!‘}rG:¤Mnȹ%}Ò#ïI—‘3r@NÈ)9&É99$ŸÈùLÞ�·äò3yG^“ä)ù•üBþM(%!%&%Œ—Ÿ’€›�‡‹’ %sJf”L)P2¦äš’!mú4œûî" !HiyÂ�lÑ­6ØÖ‘gϺ$é~}½eC‡v<×¥VHíS/`ÐarèøŽ¸u",€FlL| $­‚4±“–ì0tt¼éÌs©žrã%�° ýœNÑ,¨lž@“xTñ;¤@ìŸtÞu�ÏÉTPÛW�œnõÜO — "’1€3þJ®á±{ üt§ 5GR,Âó{Foº®eÎ0¤‡ý°"ºOCjeôƒC€1Áß“yˆCTÄ a@¢¼ô¯Ø¬O°”VÄtž{WÔ�”ƒv&̱ÉÀ�ߘ¾}FGеÏ|DºF�Ú!X(¸1å<»!p,°` ¤“R«À>«ÔÓõÜì‘îñ  ºB ÛW}P‰* [ ÔÇy�Û¶9C}ö�rû|°ß>ïNÎà¹OÞCã”Ý2·ã9žOºÑk×÷=¿:9•Ïê*t>ä:;Ͻ×79AŠÔï8…'o”E=ÆIïwÚ§]ò'f0þ[zGΑØi»Ó%‡w|Þ=#ŸÐÛ¯»ƒý“Çd/z{wJ>s˜}òþ¾99ê’·Ü0?Úgg'ÈðúîT¾ü /g½×oÎåû;x?ìD¯¯áu¯ÝyËGϲüTû´š sþõ+ô»î ë3=5ƒìä—úÂò ².ã/ù7¼ Æ4<ð,ˆxvסSôLЃEûÓönö½iv J'4¯0LÁSš~ø�…Yh«Ì�9Ïìà‘œîyžCM÷ÔLjBDIºÀ‹`Õiû~>hø|@Ÿ�Ç`L�x1]š 0»X0D ¬C#ßœÒÂ%çMÁj˜3¡ ¶¿¼o¾ëÚ�N·ß?9ƒø7÷ÀlOÎúo¡é=(Öæ _£Û�C@ nåH�©´{4ùÁA¯{¸�ZØôèþW$‰žÅF˜½ãÓwç9Þ–—„ÞR œÞˆq`Rj‹ÈÅN{�·Ý³A¿svrx8蟟AÛë�ƒƒväøhtB‚�gíc´etÉ~÷°Û9ï�ŽNö»‡1$�ýÞñëàa¸Ô›XW¸1¢­ f£n™umÓ¯=í²1¼±Ok`>`£Úö&Ýܬ ¶~›7v~x)þ§Â ûhZµÑB_#ÏõÚ6<ÁþB'Yð�Þ†µ�|«$Òuíš^Óu²³ ª<ÒVÔ<~½™í3íkÓµhm;OŸrM›™¶ ¶[½™Av`QÇ9mzÒ;ô ´N 9²fÓkšå9ÁÌtÃ�O!Pà2æP”äÏ< þÛ5mÉ@ܦ�g}¹Œ'ãîž“Q:.ÒS°öìägà/Uô`Äü <ónNF#Ȥ¾Vá9r?µä1÷Œþ1‡Pnw€Å`W¶š–ŸžNfzÊ41¼3÷}Ð6æ+VMâ�Ü£¢*àU^"G® ‡YWZ*A#.Ì> 8RÎÕ·ž2È=˜�„UO¸H]7 Ĩ�†‰‰ì Ô®™ }©ÃŒ�pÙú›9£�6¶yF†I�H cÕ!¦a‡hÂê¶Jwz^åNê®Ú‹˜f¥3Öô%˜SÆ!ÔNLxc®Mo+µ£K÷Ñ4åË7Ì'qÅÜ~À7=çáî*w×õpX´Í:®J¾w£¦§ZÀù5b®íè–i•� °ÊÕm`f Îõ„nQ—?ë*@“ €Âz0Ôp¢DðѬê<Ù’XgØ", S¨éÌó6�9­" it4†u�™+ð%nÏåØk¡ xn}è3;'D'îÝã�*yH©RŠ´ùò”‹¢®EWÍìújO‘Rñv� HQÊÎEBmýY™ùôâWF¼SѶ¾l‘D0IâRI±0’B=ç…3Y@Ô4wÜA�ÄÅÖ þL ê|žÔ>¶Û0ê×NŠЧYç+2Æ·C|Ñe�ÊÏ¿|qçN r#‘^ ç;* ­phK,Ýz¶yÇ{[­V|ƒÕŒô86Å’wHíá ò€ý¤i•å)Íjá*ý�Ù 2³pÿ2罨g-’\c+T÷µyLøÌ‘Äó ZûþÅÌËâ°b—2²;JvÈ÷"Eû¾n‡t(yI^ü(¸Gêý€•~Ýš(í–½‘F0ææ&{pZ�&Eó ФiÝßÜS÷Ô=¦½"KRèwU)Y•Ñ=�覃Ó-TM•%jjšJÔ_à3g¼à=ާH‹ÖGwM&P¸`ê kûoÓ…ü­Ô2#ý?£\A§Ÿ‚1Nêb±(øOR¬˜¹T“PªzÆÅïš3Ó¢ý÷¯«Kp´àzŒŸÍJvŠ¡š™XUV%ºäõx½¸À�à¾(ð ·âýsogÔÙ‰‘´¡3÷µ'‘A¬!ä“HÄ/_ž¬žÿ/_@PŠûÅöyÚ”ÔHHÀ}�¾ò*Šu4E9l�ck©v¼Ø˜r²¦/$ßÈÃx=ÑËe‘�9?‰$2/s2Ïg÷ñ�´7ÁIDò„5m«xpOoIK…ý-×ĸ'å/+*%+¼°™�‰y·ˆ$ßÝÍÎ9Èo¬Òe‘`�F&Ê€Ìi%f‚I2±YuC:ÄÕh„˘³[Š�”Ú³OôÙ3 ’Í"{v ò¹y)¾É×1mü=ÿv)4ôE°¨…“y@Ö·2�¶œ™¸f¸eÚ6?û~o·ÄW+ Ád‚« “«†¯TšbÙ‚,H�&Ïp݃Ä㡦Ž¥h<Þ!'ZI|�ÜM�Éu&ÏVT¡f’%p×=ß» ¨Aú†¹]ÆÔ|¦)Ý_'¥x‘�kj›ç;3ËÌ1»TƧŒ’ùåº%½C‘Fe�Š^ú úŒúô9O<Ÿk­¢œ>˜@IŸ�‹¨"nZºãWŒÔRÙP|—,p¢ “Èwƒ-y”kâ=@SO2ð̧oünnAh‡xºh\Ê—]VO½°ãé‡ln tãE9}ð-+ÕØzÙøV•Çžißh°ÌÇ1->÷åK-×ÒÚn4$WÊ>,¾wWK}¦®\š¸äcðxP”)A^#Д`VÇšªáªÃM feÄ©meЩRëcÄ�rÖV†žrÆ*£OöŒ�Xd›-úmº,|F»Ï˜Êšõ–ÊÇ0ùoåªÇe¡¦˜í.òi„rÍñO¢˜¶fl± O­è[�¸{4¤¸8gSêÍÃÜ\í/[Ì©'ÝŠ„,::ÊsÜÌQ‚<�·¸Ä5Úe€@íx“ê º_w›ZæÎ¢Æ±öäÙ€K2±V_f¢Æ˜¯×ÃŒ�¡ÆˆV"f¶8•©N…¹¯áùFüþ½,?ÍŠûYz’•+ÇŒJ¡œ.ãhŸ–VæóP¤ ‡0aRèÁáå…Yß¾lâX,£ïm�ïÐ *—hZJ‰Ùææ“ 8/,{’N%(Ÿ¾*1Åü愌ï-â³JŸ%"6Ê%®”­Ì(×´ÅÉ\…¡®&Ve²©“’Ù'G6*â2„ACÅv¾,V8Ezƒ-¿·¦/s§�j\‰Ÿ: ¬P\z^eùS±Y]I¸]Er(S¤tr¸—_ù2n¹õd ¶åô®šˆQPE“³ü¿¥rK"IZæ,n¦ÏN»äzß:+ÀÛœ¨ÆÔÓZäÎFÐgà2y1õØ9Ç÷ý^ñ–ê¹Ovvt Z|š€Þn¼¢æ?Îa�ùB®+?‚XÓ™òH|'jþ»5Þâ½|±LFüiTqëñ’L¼€ëà¶UP—„º Œ…¼&žóCÃÿ!mŠÏ6Zò¬‘Ħ -yÖHd@†=iDyóLŽ–oÖâÒF“I’)CKž5"ýÇÐäƒFr%‡¡å"pŒâ´L¨2òÇÏÒÞohé·¸�£%ÏRWÅCeFÅÉ5Õ!4£äÐÚ’xüÖ?Ì£¢64EcÌk“y�4žÔ¼†â4LjßÐÈžêŒwÁŒÔáÊ%¡·ø³!m°F´ÅèÛÖž°Ä5ñÓtf�à8©ˆÈ%1¹M�ð×),0”ïÉ58<üáQ†;¿¢0a6¬Rž|G+|AÄáðKr¶íðŸÁKY¼ýÀƒ‚)>ë *‡‘£ûωÆlNN1\ �›ã_-q„£‡“×ÐÎñŽZô²'¯¤)ÄCŽdqO© Ž]ÝЄ`ãóaä ¹ÕôVY©„ܘˆˆ±MKn…–¢qã»7©Û6ÑmQYk—é?š_{á¡d Ÿ�¨Z6£¢D—‰ æF%’Kò¥Ç?â; ²OA¬ïÅ Å¥ÌøŽFáv\Ùa�ø’§´åqû‡\ò„_¬ \8"_¸RPDþöF˜¯«ÿ?Tß^þšë!O@�ÙœÃ|þôu7}²£ÊDûÍÕÎe6yûZ•ë�àP_B4žu-†a|Ž?R�^Jð‰+�?õF—„߯˜ÿ+n3,¦Ì­ódì켘Ý.;<1\/¬):ããueª›`úbèù6õ1Íô|Ö“Z�§�v|x$¡‚m‚‡:,¼„0�¦«xåv»˜P6ž„F£É¡ã7TsÝtØØ5: ›Ñ5c|1^lý°ýbçÇ—ðÿóoâ.Ÿ£fûFÎêûLW0ž0Tç##Š.°oK÷ÃHxtsµÒò¸åK/² yÚæÒ¥*àìJ²˜É_Ž2ø÷^HXšjÍ—‘Z€LÃ+ÖñæŒ4%>v³Ð`Íý¤žy ý¤)-Aô cÏÅМ�h㉃H;óÇC¢?ÿ§7cæÍaà9Pþ4Co†œ£54šÂ)¶�o"¡øóд®Æ¾7‡¤“�—²)‹Yã³=2§Ì¹3˜;¡> ›SÓ3·\+†QŸzŸãu-%¬@Ò‘çSRÚoâŽ^Yw´¢.äJmhZ‰z^~éçs�gð4ônѶÁ] éÖÐÒŒLièxÖU¤ÂW ÁD±*iRàË"Šâ’´^¥€4É =ä.ƒ¯ÏÒÝ+9(Ð.g#sc{cÕ|ñ¹xéô<É€¹âa „·Ù<0^½z5»mÆÓƒIe±y5tË�KÕÀ_;3k—Ê©„´Ùºß(ë°ö€lD3#g£‘žF¾UÍc Ü±(�[�èVHp-§ªYùûë:T5©ß.X9J'zˆö×°ô‡ÎÚ¤ïéBŸ›ûŒpçYg¾¢àWá;�K¢ÉcNE¢äµ¢äãíáï1å\›àJ»zÜÕ侊Wg1É/ž,Ö.qRë¼­.u’1VzJb†mjolçM"Õ¡ì~‹š¤Ì4E÷—ÍôÉêÉsÌõY'À”‘}´– #¯6•è‡i²,²ÅÉä*ПªÊ9Ìù·À_Ûì#þ¤Ý¯¨V«¤ùçìSädÊû²e_ñÚ”«Þ7ƒPöPÙK<ÓÞÌ´Xxgl½¬,Ì�óEºPƒ¿Q¥¶×d#‡Þ6yÑZg!�Qéúi„lt›„lVxqLwé²;2hYñ%!‡oHPV2;·z‹Åj}u'ÖÒ¼ïT­Ž°i¥n)¶®…ù~s›™´Ô&† rEéÛbTªŒ&‚ö_ëÚ„s7ó½±oNÿiÌ-’ý™õ-AL«ðÕ<¾¾ü×”Ú̬Mð·ù� þG_”í³”ðy±npüÿ�p>Ku¢ò–ˆ¹ !—�¸~HÈQúŠõäqÊ­E]VŒ\¶È-xDæ¿Ûm07 áFƒÿûO{ßÚÞ´±5úýü ÇÏ.¯¼‘½m @åºy�@IË%…”¶;'O¶+‰Šc¹–ÿ÷3kÍý&É(݇R°-ͬ¹­Y³f] ‰mÔ>¤Œ‰ªÅp"Ì/ʼԙ^}‘‰pá³ëFà¸3/ßKÒÿ/V¯´ _ðå½Õ5À,RéNyôÊÈô†uе q›Ýoêª;U³æ|)C^t¶´©®˜/àæþ~ÓÅ;ã<ñ–ß+¥Ô‰ÞÏÞE4÷Îd={¾„¨×bÍi¹ÁUœ¶Ul¬ÒÒ$›\L�‰’óIqÍØÃEXàA(•~º*Š©àê6¼MÐûò" ç)2ÌŠ"YŠ®ƒ[¼&u-RÑ… òòPŠy¦/ØùŠÃcE`Úa"EXb¥ Ö’ ÉöôÖð-Á*Ô}� ò«•†á˜2êJ£ðÂ×¥WKŽ¡”+ZP†¹$êù—É-\{3%ÒÌ%Ûò®ÙZGT3êŠQ©=Šb]�Àæÿs&j–®èNx¬g銺s5ןŠ;FsoCfluÆÙ�©d94ŸGW4áy†U·ŠAÁ·¸�Œ‹W¤&>T~›ï·Ô²à³©•V_†4ºC±Uj¨Ï"gÈÎRç pÃQÌí70sA?’ïbæö!kýà©UÈZßèËj¿&è®YlŽ[á�<$—Ä­¶üA:–ÑwÿT¼¤¿ÈÛ}‹ øK:‰‚®ä·nM;9¹qªIGÑÚ ÒA꽉Io¾ï©$pÉ)Ä™mèLŒÃ!™(ý ö^eÖ«íø^ŒI�ìN�"¤ cGÒÖwÐ…ÔÕ…º�:»�BRGRÚ…õ4»â qütX˜À矇Àç’Àç…ű€‰Ê �Åd ‰´ÁU—ða14�l' œ& Ô}þtZœ#-ž3j–³S «60ï âÍ<× ZQ2å»0¶74l6ÁB¼ž¾"»?° “³Ò§‘á܇ZÓ‹œ§4êh’Œñ|Â6 ¾eÑÊÙÏœÝýÎâü-Ùsˆ��ÆC$)ü¾ªQ јœu­9Ì—8›sÇŸã̉B‰~?$ܤ‘2–*;!x½•Dë™=q©¥ŒBèíÒγ)1ûÎc×yÑsö`M‹L»AÃê}L»ÁŠÈnÐëê†33oK¦eS5ô/€|†ñªs!ßP™�X„¸�ò8̇Su·óẊÓdJhA2Uó¸žuž¾ÜÝû]‹·K[Gð^;¯žxiÙà¼eA~Ë÷ÛªsÆù 5âÙÁ�3+³ i”�”9àÓÀS½Ú±§ÔýÙjùcÙ œŸd¡O™ t¦83fì(±¡dº2�<àŽú„áÒˆÐÎ�¹eG®ié\ŒåH[s=­•62 P < ëCr†¾>¡üPAƒxïëdÁ FAªƒÙ³d' ŒV—qKáx‘:ÀÜ´"Â….P x *dÈKª¾h|ĸåÚ zœUµƒŸs^C_&þФ䙾'û‚Á²Ð‹é#çAi.�Ü=}c«U¬�Mg ¾Ð×* "irsrB`:U~üSr qôj�ûiþ¦‘3š¦’Îûäú ÈõgÇqž4~‰Ü£U‡cr~v[[=ÈaÚ?"�÷}„ûózà¶{‘÷ÏuÀm?Ð`þ´˜:ÈçëÙk;�SD+ O´æ?®£ygã¯.ûó�±J ”n,ÝåÇV— Õ·JûN/0ö÷ZÖ;޸*ªÝúc½ÝZ¶Wz§^Dø±9x\BRIçviÎßÁF7¼ÌÒ!�¥�)ݵ×ÂB¾E[{Å›AHL‰õeD£››ß1~oÈA¯åụ38%�±#ýTW %­T(F|öÐ'RfH0Ÿ¢¾X•>óVaCŸ—ÓøÂAãƒ*"¯”®—–"pößs>\LàtÔ~c0؃%–?_Èp�6Þö¨ aäœևlj¯Oäâ˜z?‹{ ¦SyU/ÛG_#·«ŸÝ0£O”‹Ž[ã‘9�s™uȺ^ðœ/YÈAhîs¹íËŠš‹NpXäA3?˦E³µï/h!Úã äß™LÈ-€lï€2ŸÎ;;•'Êu3Ú ÷r7.×ê�5†úÀÙÿš$ïYdêàÁmΠʾ£æ@’ÅZ­oðhø�àÙN;ÁDâá1†Z€¹´bøÊ»°¦ì·óÞ$vmoÐ[ Xí¨¹sNž™Î;˜±­²M:oÉÜ-Ú-XQÕoÉ”“P;*tt©v¬_†CóQ=2h$PÿæLùõÅœ8¤YQ±Äˆ¨´¹5÷¡ä¿óuk>WÒ'ru•Ä´˜gU:)[‹ÏŠ{O¯n¥é4 =‰¿ìÍ1PMæ@Tò\ÌL ŽÏKØv`IzcD©¯ Zaá.'а3€fEoRîõšu {³EèÙ$Pi5ø>˜ÁCB(¼¨Ø� � £ÎØ(q'¥¨—&üÏø˜œmüI7L0iƒINˇíºMhSîQ‘ÐÁ¨=Ìûû}rèt6º‚ZÇK?þ.éÇ·o‡éíÛ­ÙTï  Îä"? ö@´ÑåÒÿ¿æ„Œo÷¤ ‡œø£áSÌEÁä¡CaÇùŽ2N‹÷z×”Ùs žb„¶-ý'ųGp htÕyßW§nÄyÓIå‹$ éÂi8óÐOòpï%sŒ•mè� ЃR‰»”†Í…R´´- ‚Š®ë‚`šŠïT8Á˜¦•A‘Pœí‘£I%Ä™.ÍGbÝ.¬¦ÔŸ²HÌHbƒ�Â�»†­(j7Ü�˾<µ™ØS™n 6-€sË:žÜ-ø´[BÏœú ˆ¢jFÓz‘5.”€Œ äDUCEsQšq®¤Ó[·šÓbÔÙ©È#zΕ{ ÜÆLy®vò–³‰Î>LYÐúÒ’:‰ »üNm7[¦¯'f=À|%;o ±¿T�¤zŠÛå½UR�;un.f^ÏHݸ°ê;³Tßvhð'&¿WM|'|XUDÓ¬Wÿµ³MŸdãx”×Õ5¦)³R4ó¬Ð£™ƒ‰9ž=mP>†ä$†v�憿uKoE”~JÂM 7K c#m7æ;!Ó�@wç w<{Åþ§¤¦Ï'u�LC˜ ëÒÊ_ƒÞx7™îÆ0gw…:Öž¿Áü$Üþl%›Qô$µÍ_ô\ÉÆü¡v£…Ý“Ð6-ñ·4&姇|µ"-·"­gAÊ­E…i*-G«íBý& °…ù‚Õ6êÔð¹z»|1fžËXQj~ àu™Ñ7þ2™½^Y=H&N"¢/Q aä )õ`_*"ŠA7ŒáAñݨè·o·b*OnCzX&1 Ž¥NaÐB1UÔ$|–©Ê“ìeS¶ïÉØïBµòZÅÅ2«HŸ²#ìB²!Ã4pL¸Û·0^·uYô¤ŸÐb“uëØj~±¦š ´Õm5½€W5Öô™ò«˜kz @4ØôuuE²Š§§K£bÕNØbj.Ó-aEÙëþ³=*"ò·ÂîrÕVH#FÂŒRåÛLûIVae{ÀèH]sÀÏm ¨e¦~î󵾩š‘æR‚ƒ\�m“­Ú[ŸÉ`Ë<°ª´ >›�úƾØå^K(H+Ë’KíÌºÛ ‚n «›Ò`DggJ­5‹<ˆg° nípè§Æ EØ<'»'m‚K E9ü½»C~ Pm¸&¸ÇsPJé�:B ¢ŠÍc\MRCØ¢ªŠÌÎA¦.©Ð¡Uñ—]…Q­1áý’¶[d”}Ë×�‹›§É.�U€èïû²zwãn,msåõÝ3.ê*Ë™s´„z¡¹`”Í3jK­ ÷×E•ÊgŸB©¼ºÆx%mð™K,6ëW•°Ü<5T ¨VÕ³>jª¿–S“Â’b3U)UnRõ烅µŸµ’ñZ*Q©Ù¼·Íæ"M‘¸ÜN?nh#ëê-�áçSøqUÜÝоjU�RK�²œ*Î�k¬G÷7UpYÚM©™*(4yTP°]m”z~™J(ã�@ú{ j2ñþÞ¿ØÚƒó·u.µ5-"ÒE¡†àQnåŒsåg amΡ”çL ò·'£ŒpJ!­�€Ù¨�söX¶<-óvÇZ» xŒÛØ l}LÊíië›iŸ�ÇÆT]àëȯTë?¹Jßî1[zŒG£¶)F”r]”F™CLÞ‹º¥Ã¯º%õ6îfï6‹H˜Eи¿£Ž‰ÛÔ~U2U…*ùD�JVP=¡ýÁº§ÿ^M“6Ëè?Ê÷¼&Ëwf­Q®aÑ¡I±Akûé&Ÿ0ºÅ«1ñ9߯®2ñC^Ugâ cpo�‰ê½Ut&Þ®VÉ6׿Â\Áh£NÖ¬ i÷º&ª­]y‚I”åצù¯ˆŠ ŸeŠ-ô@gÆ´“A‹}€ï%UÇŸÂû¬Âv‚Á�«¡ýÀ)`7–ÍNÀ¾ ¯Ì)xpvÃ^x'¼{îß 7ÃûáòíaømØ#/zÔ¢ œ€üF™-U‘À¦'Lö‹ƒšGx8²J¯þ/PEäXL‡'¡[¨\y]©ô2ä׿fh± uÕ7 °PI‰žÇTjÕSY-Ôøzt[lv¬Dëš—§#óŽí[‡qÀ*ÎÀã }Y6Ë5e…+ÌH˜:´gÂQsl¨Ïj “o>ú–Ê�ð‰8Ä1¥›¸¯^²{!!-w±Ç˜(æ%»ÆB¹õi•FT‰WŸÆÃ&ƒBÍÆT¨Å…ZìQ¨y§ƒkMè�…‰@J0Ö©°ô¹Ý*§–0šãtëûøæ³ºö}:÷uV_½·LëY»·¬|�Þ²¢¢·ß)½ýNïí*ºJ�õ*[À[¢ž²Ó�» sÌö•ᨴÈâjÈÿ­oëJšÊC‡¦ò«ŽòSê(5>¾(ŠlŒ«º3üç¼Ãy› ¹ÿ£÷¨ƒ©‚¹"ÁÐŒ�«>Ó ©ííA†9‘ˆ‘Æ;büšhâ˜òF0“EÓ8µüFQÙu�¢f8 öÈ’Ô8ºÅ9@Xe6¨ƒ¾šA§Óár8xAPXñøJô5S¹�ÝË×Õg»³ä´Òº O(vƒêHö2Má�#W)%hG¦É¥«3ì† J¾.ÏhKf¾ãÔlo- ¼¯´ûÞ�`!Ed½BÉ’Âëê"�ú=d?vq=ŸŒRU&èª1¨±¾Z×Xù9ú_g¹¯ E•°Ôžô¨T\Û³2 ·¢®pÕ¯Þ íúŽÌa1¾€òñöÀ‹E,1–Ië‘ ½¢�ø^lpÉ‹ƒ*H­ ¡Eg¾ª<ÆÞòÍ '¥®Ïn©u­)oydê\Zã©Ì%Ò«œ2•]‹œžï ÷}7—Ë;«%ÇPyO)Os�ƒ%¾gµQÌÓç°$·GE»Ç„rî8ØúQ]îÚPbêU ‚ºÄ¶—]VŠËö’*YÖ5åq� èz¥d5än.iÞJ’´K‡$͸4€´@—Ýpûœ‹SƧÌ&é­€õ>ar�Þ]x«'%;¦¼EÊeÌ7˜tnx\úr„<Š]š0ò!¡ hDf âAe£´p‚Ø�†×¹6�á$óÆv"�A<ø8»"�º�n£×ml’¯¨€¤‚�æI<ÊÞ~… аHcRžnH@†›rØuÍA>‰�ùSJæ¤l¬³óK3aÜñiªÃ_8HU€­ÕÆj3±©””HM¦ÙôÚ½�œ”K�ºÐ§K.­Â¯TVÅ;mI¤¤0‰Ž@‘Å(¢7‡é•ÁÐÎ�±R¡£%Á*à>lÉ`JÂx�A³ˆñöÝå3°I½P=óÊâ M Ó¦t|™`˜CÊã‚͹“�ô5T"F•¤qCâ£`æëÏ´.¨=bOG´EíN·ÿ%:‘E X9:(b1[ û¨ó2fñû9÷èï…$½'^ —Ž#êÒ�rïG…år@S�VDª¢éƒuï©®_¬nø�€Ð‡&J•“ÃÈS²Ô#§,�óvP…ýcÝ×µòƒ!)tÓ“|…£Q‹ZIÊKB˜ 1›ºõRø~œg—ÔÐïõøéõ9q!M[½®‡“E(Q?™õl©+Šª£):šØ×¾ÐÞ8»ÝK1ÕD–ˆBóú©(Ã¥�ƒ�®3û›•sbJo ïòl1’÷*…¥ßˆÄQň?O:ÇnýÒ,µ–ʃ¥óV©×̱F¾wÉ7aw2ºYé½TÜ™Q€`ZZä²cÃžŽœÜ(ÙáÅ3ôŽe5âÏù\a¥-ñœ™B†1´Ä#|T´D‹Ù-±çVK̰†µ”B²]0CSìýÀ.1%í¦jªdS€Yä‚KáK«/£TTæš"ýänXs/¢ûŒ©½=°ÍªÁ žZ5ìÊæì ª„Ã\,qîK½úº ½ÎQ��S¾†…NçZ\PìrÖ*œäJÄ^Ö<×wÆš’Nœ¡v<½ÄtfÛ[µ~gPí4ÛË`;c)K7É—½ªô�&c±£åñ®�ÔÄÈCf XƦŸ ÖUBÍ{è&Õ,kŒsÕµSüœ+0ù»fӃ騼°Ìöh 2Û¿� ö¨D[Ǣј#iÒ˜¶PG¾=,}{o×f)ÐDB†«€ãX¶h’ª–šgYNöVÅd6„§Á(DMãËðñ¨`=ñ'Ð{F-†¾æ+9OÖ<§ÜhUás£¦ò£:׉FCÙkþÓ2t}"±Å—´dwš¡‰)OYìÇÅ�‰ÎþÌ&ÌrVIlróWP~öõEA¶.µy¾™‘Ã:‡íbšP¶‘Éù㣔" åh÷l9ÿ1åžQ\?>}‹–+ón¨™-+H«a¡ÄS‰Ã*>ÖHC²xîyœ¹­bÍeõç ¹' ÖL븣_žZ(ÿy{£o©ÏÙ™/'þRø+W|1M�HXÓ ¯@óßtió§ –+Un��/Î�ðmBˆU�Ñ+%y™­ØS’çì@¥û¡á8âR˱*÷ÂwJ3*žW·V¢c‘¢p“Tcn‡db )» ÕaQG{Qnr‘¡te8Ô¹qõî(1E�¹ChéP~…ŠdRžˆ#ÏÂpOÔÕ ÿL˜ä³â€0=×#€÷?õhœ1#Øèh”¿ïŸ�‰iŸÄçéè:"ÇrÐnCaØqÐ÷M'P�Cñ­”§“:U \kÞqPÌ&ñp˜ŽO£‡“«üí¿FQv’‹²X†ÿí¾kDn'ј°­ŽŠ`Š!|2J®úñ(=·S²Qòè8mLÿ<žž¦ãhó›©{Üë<èÝ»óp“ü{÷›F»Ñ»?¹2ûOMf1ê5z�ø¢ÈŒ"šáÆŒ³ö‡tXœE]Þ¤öTjà”‰¥>$ééY±8ZÏÚ|ˆiKÇ0ÃmŠ.t ½.éùms“|#‚?ð”’)�ׯéŽÎÓáp”ôOÒÑh¡>¢uÇq6ʦÎ.vªÐY1�Ç9˜¬EÓ äNAïaw˜œ¶æû1iZŒ®ÑŠ!l"vçȨvF†H)΋6={œÕqhOâñeœƒ^×Äݤ%ìølRf“,O‘‰Ÿ& Ï»dH­NÝ�-TÖR[Æi®X�q|™ž¢š±z…ŒEQ ÂbÿÐY�YA®(Ýþ(9)ÈÇQ¬Û?ÊH‘sòEÌO|”g£ 6®À+l“£ao³8x”M �!+J ¦C®©y}eïÚ¤-¶+ïºãCsn}åÔÙôba�Iš±îÁ$Èþõ%LüçüoyÑj°6Ú÷6m8æ˜ÁÇÙ­j ­¶àlýë8L ŒH¦ùäÅ“<‰øACºß¸±³¡QœÍ�DQ ÂHµ<è1Ðí×A[æL„à(®Ö&»jÕEé­Z×Mh]~›6 à”¶g��®ú|�•}aoe“µá¢û ¿ÊÆúGññûÓiv1Ö)ë�›€+d\Þ8-Š¢#tØç¤_üG6†"BÙ‡ä0!ï§ÒŸBg S¬]è°8°4ZcsRå žäÞóåÃEБE8fµ!„ð Ç®¿ëÍ�ùù§º\´WúÔt67Ùìà—Î�Vú7§.›ÛŠ˰ê±ê壽ÃíG{OwwžüôôÍáÛ'o^¿xqøvï yöÃïÍ3ÛSs2eOçÇ„gµs2•ErzMZ苳O”œé ×N:´ô[Z˜\^:Ó„›€4ÕèÍá³GOö^¿ùýp÷Íëw;ÛOßÜŸP)ct]ÀýˆÜc†áEž<‹Açp=)È¢(ï4`Ò�T¹b‰]k1¾æ|Îm�Þ B“ÉÒå�ïÖpÚšåLýîµàÖ§£ì(½Ì†ÉHóråV"L'æ×äÂ6k׃1~£D¥¤Vϸ¢‹Ó„m‚ÕºýAÎèÅøT(ÑQ/F@pûaÅpx<ÊòDZÀª†<áxLýÔ@K®YˆÖßÂ~@bL§È.ŽÏ~I·šÚ�š-RÍ4ðÚ°Á*0[(óÝõÅS5íz”@_Ü<ÒÓå²5лç°6ÐWGµ7`î│":ÛJèð¦#¼¡™ Ι ]ëÌtøeØÄ¡óÀ5îR²¹gé8ÍÏ’!D‚ “FŸ“�× gTÅ.@±™&¯Øˆon6R—”P„¸"Ô KkmU:-�æOÄ$òªN³‡ Š ëSÎ5Šõ›s<|¶é¨¨5ãÓ«´±o#0‚_YÏÔ§0Ó²oêF¦rb”t&gqŽÂ`{Ë©Ñð�ÙW€*\7˜&‚:ÆÍãÉdt½Kv�*'F›6ÍZ!v|Ý•GÖìºqœÍ5!Æ„¹D—V13 å"Ž‘Ÿ,ôܳ­7NÚ—£¸j³•…5ýïk3z* e4ôU~[Ì� ªð´¨¶#ØKV3xï0°Å«„D:*ÖID´(Õ°»F€ÅÞ�¢ó.~}œâöÊ]J½ùõ¸8KÈ?'Õ^�ÿÕ9jˆWyÅ¢6µÅ„4D^ya@N5�Öù]!ÿþ_óÚR˜ä´ÂãÁžâ62ÉfF@¨Îm¨„ ‰–¶[Þ»žˆ…ó©½wÆgÉ4…@²`Ag§S¯}ç¾êxø~oOÅ5 ÅïA^ ÂϘl¡)SŸÁYÓŸrE˜°ËP­1¥™T¤iú5ËÐÃÔÄ}Jm¦¡©3µ†šQƒ­ÚÔí褸ÌL7K˜ßiœæÉPõtL<ðš§%¢ ó�ˆ£‹©tôê=&N%n~š•Ž­=”NZúºw¬²˜C�Ö{ߘóº D†€¡­S5¥8‡`®m)í1ùg A C5…\È•NÑÜ>u)„}ÞjÂ�Rà“U~9]ïÔ;RŒ¹�S@ѱ~­Ö*óós0ÔÖ\U{~e&xÕd]нö‡´8k“ÎÙ9w¹Ö©½®uD­U6céi¤2ŽUŽe„?�É!¶Ñm©žf#ê5nÂ.îÂw!�ç®b·nQ mæB,í�¦ÌD:„èbüpÐ^MàÀÅ<®Ù£Â(ÂžŠ¸gx–Ø%PÈ3FßæÖ‚{Fá \ùJqÇ%RJ=›¬‚Ûâ%–µŽ®š¸ 8šEJ^‹X\³&žÃ–1�¢c<Ò áé¨!€ë2…†L*ÈgÝubÏ+ƒÎ]Åùb $sÙy”ï’Þ« U½Ló‹x4º±6œ«¤gô`†9&_nnš“)a%§×õ-3l_LS8œ¾m—�(ªî˜h“!x<‡AÆ‘bŠÑôèegGÙU;?‹‡Ù‡¨;¹jÜ!ï‘¿íùgzzsÁ8•û’YÔV;Êôî±BÔõîRwZ}Ý„kãaz‘G÷4%P»Ž®MRX³b«–®NÖWÔuõ”à3¦Éüö¾TcÝݼǵf¾ê AF›¬iR§…Ñœ¹•s åJpªeu„æ1„ÿˆ¹ È7„ò65-Vå$è4ðO{ÈÃ#ƒV÷â|ÜÿƒLQzr-t{h Ó>JŠI2ö6�·5÷{ˆ²€Øí%ØÐÿ.(�ï–áÿ·°Qî3‹¡jü'§V›-éÃîåYßVÆf—ÉôdDúJ¨×òÁU£šqlíÝAkчA%+�‡îlvYúûü®Óc� z©¨û¿ç áT„*7ËܲiJ P­fcDåÇñ„°t«–6ÿ™ZešçåíÃ…�\àŠu5Ošü ôÜ]òcÕ5Ô¸INz½MyÞ´•ÄTÍ„ø#Ú?):º|$$Otvá`^¦[¶Åá{áÚUǵŸ'·‘ÃÜùÉ–ë!8‹¿ršï£õÙ‚à™`9fSN`±Aì�‘[Ë.™áØQÎŽSÇnlDz¨ÃÏA‚í3“Ùökó"¢>{0Hž&‘Gµ�`hóJZ€ °k�‰×‰66t Ø+Ѥ¢ƒÂõ‹ »Õ@Àµ�¶3'›6:¬iBÎÊ)õÔ0gH}‡Ò ‹¹RŸ*&ï1&\ù¡*Lùl0 ;9¶µ#ô)Bb CðêfòÀ ë X@îm1Mâsµ â™ã9CV1G[9¬š··eíz³bZ)š0å5¡ ßZûçñtL.�tÓð8Ûf›øOEle•¹…ƒj.r=HýùbaÀ‰],è¿ÑïZõaç >†Œ 73¼Úå ú#OÒÓ Õá¼ïO_‹“ ˜c�1®#ïI.ìBè Ø�`šÐ]aãu†çÇŽËú`H¿¦`¹É#;¾ý±HL*1uä ¢GpM~\æh®K‰K�ËuqðÌÜ¢à49 )%KªX×Aµ™ £ª ^6™IJ-O*NÖJËÄ`„®[u}Ÿ›± L¤E�k«Ã1µc)Ñ 1!ÍA” ¥±D°p�ã~“¡Z­b… àèéÈÏÜÜZƒ1ÜlÁY³ppòsUÄìG±5 ÆÞ$³k“\Š{�¹™n°™È奥NßYr­¾NŠÔ„Ó ß8nÝjr!=D¾žY*¯BmšÂb ˜Fq8O õdÃïó¼YÚ@Y�ñáFEù™©ðb>°+ô‹ŽÓœFSþ¢Ñ fvN@Ng¥u6³¼±Ãž…¢`3Ðß 9>ÖYŽœqg+O:ì—ÒL©|v"Õ9LMú ~’-r¢ì¥çIš ' d¹ Žß¶:¾j´ùC<²ë ^Ô(!P6NU˜P)* A _!€‹¦·0mþÄŠ�‹£¡_tÊà¢r˜¾TÛšžÓNß<Œy#ØMC½÷ñ™2#¤<Žõ,:s€ÆÁÌä"%ƒÚ6N()Ѷ™i£|žÅùcÆE„ÀpN‰4ØO¶PüÍú@˜´é{ÁLAˆ~¸ñw(€t¹ãB)aÐB)’üt¨ó[bT|,ë]”�‰!êµÉèä%*²¹Ì€ŒNØ~N²ÉŤ ØÞÓõ( %4A¬mó„ìò’íš©z5nT‘q‡eB3²M0’ƒd‰{ñjû'¥ ?Ñ�_èÇÏôã1ýøM+U°4U6à îÄE+9Ð�»Í®)v.Ù(œØÐ;SIäx,#…±ÍSB#cÓÌLÔ—¤_2§ õTyHk£h–ÑuÌÝ`\�bIðµÐ#_¨Ïólš~„­:]‹‡ï˜· <š»w–›£W¹4Èc«¾—9™v eؤ½ž¦§)Lgy{\G¿>µM“VxÆšÞ&4}œ#Ù#$_ÁÄ—/Q†<¤O_d-M.£ž˜Öwߘ{ß´¥ H$)îP[ø8âWÜX10-Œwé ‘Ù@®%ê„GÊ@‹ÈÝ>I¹Ôx%2aâXe?÷gNèo„q ß~�Æ![J|H¿þ¥óÐQ6u–+ecÜØ 7vÁ�U¸, ”B·”©ÞoÓÑO ¤ÔËÏÒ“‚~=OоðYx$y¤þ/ÛSB@Î) ‹¬!ˆ)Q´ŒÌõ+ÂÁüˆ´´–H‡¼ ›4�{³¥ä/P"öÝÓkL� `¢Eÿ[ØöõªÒöuÚa›«Úðõ’Àêrï¬s¾"õ�ciýyA«Mt�ö² írÙËnóúÌ^öª�vŒn‡¨éyQ?†“f!26 ö2~i†Bª¬„bÄ%jНÍðZ>½–OÕKOÔTùâ=©œ†üþ\py‰šôS�»ô)â*©WCÑf¨Þ˜È¤á/ÒŸÕ¨#èm¨jæ­ôDº*f›�T±�(ž‹D7°1-›fBÁ˜áj2d¾SÁ[Ø÷AqsóÌœ¦ïu ºß–tÛ¹8¶•w ˜’adO�{¹SæpÏ&=˜[Á§ªLu»ÔT·ë3áœ/âØ© )|+´n;–gãÌȾ#kÂÅ:ô»CrÉ9:¤ ”÷,´Õ R}<4šáŽhúUø]RíœÃ÷CÞn�U}6ÍÎчÂí­ÁïzÍÄ*¨¡ HQ^üð5YÀÓi|7|Ê×ù”^¦žŠsÅôê³-Š—ë¯Ä}Oúûé·ü¾Þ H –PpIg’46ª—ÞºwÀ“2&•›àb,õUûbpy"^s9a:¶ÅWæ£Ô̈§óC.Y¤ ˜4ü†,ÓËæo‡6§?›ºÎ|ÀÊÚv©VE3nO7.ð5®pBö”Ÿe£ásšBËrçÓ…ÎFäDA_¶ødkÐR8{¾�ø‹ LÜö.cN´åÃl¼"`£¼õ ×ëí£÷ ¦�€a‡æ¹ ËQ´¥PƒÃ.aâ%Kkçr†u(âJbË>©Ê'1Tõ¡W$¦�Ê&çe(*ó ×_++aÕs£š®a^Ï’ú^Á¾�.[pŽfÚ¶ U#ŒR•¯ 'ßîM{RÑ¥ò£øµÜ/ìI”Þä.™³g‰©ã”…·Œß¤$Ú\Í?[ÿn!6LvÒì›Jk¥?öDAIÊ‘ä\êNE)ÁV%sRA¦}Ÿ•ˆ(~ºu«J¬â’`÷q/ý%wµáëñèZÓ‚í‚�¥/¦ÜÔc¡wÖé�¾Ÿ0ôFì x®hXÌ“PãyxÖgObIE*ˆRÌ5'é ,F}¬Ü6Z} Cé–ÍÅ­( ´Ðìz©P*ßô±ðâ�4³PYÌxun ×�·3[�µ"Ð#s?³'Bcå”ÚŒã\+êSââÔ¡(ñ§@/Ëu. Bi³¬_¶ìu€\ßôVá¸P­€ãn;^C\A×6×)ÇÊ¢„Û¼÷ñнy]›¹réÖ£îѱÑ@=So£ÉTÚ´:î˜�Ac¿,ÊbØî©ÜT_TDûn­á –HI°’àó�|â&ˆšøáF*b@¹Å™<‘ »€>Ư‹ íD$$Ê ðŒ¯�`Ôp’ÿÒ' ÀÁ�6²“FÌí&´d.„WS“¸Dãù ÙOúhqB¶Ä6ö’j 9Ñ|:n1“�.«¦Pvåå\ì!ÚÝ—®€Lï½øåéá£'Ož¾}ûZ ¿t–hÒ6–NøÜW1Š-ÜZáÌòóõ›· ¼‹:ð˜ ë™�¾+f4£™Â÷â¶—ri× L¦¨¨VåqÝâÅeÓ¥l¡6Ä,Ý: Ê´dz8Gj8žÎÞö«ÚÄ÷ífè@‹SÁi¢ë8“yv9Gf9žUî/E|¥Œ"¾ªÅ0öØB*fι^ÐФߚ–É%¹ùªPÉ£·×î!u;Á\ñ:7Üc4T¤_Té"hϼ‹ªßGçêEFÉçGé —‹¹5Só̹Kb*ú™ÌÝ< Ê,rО�Z<À“×-â°Üãá°Ò™AÝÀ%’b1¦Nž]L�vEY˜™zöW3SEN“U®g†"¹/=EUp5A¥W‰VTâÝ_0þ‘ ŒÁúà î!®èš’Œ†9f|Ÿ;:†¼VÒà·>,Ȭ4Jz$å¾IgZ\$©P—Î[UÁ'ÎâœÚ×�­œxi~‡3V˜tB‹À£Á@/�’ÄÂ" „©Ð§Ã›”ì[h—|lfÞÈ�<{x¿Û ðu‹wƒle¬_•Ö g;¯AÊÄm=&ŽÞs³w´¢óICÚÈÄa�Ó�€Ð”vP’SO-B'É"Í©†þõuÛ/ Â>KùHg�Ÿ-¢Þv)¥i‡ÂgB=üºÒÒÀ"¯‹•hËkƒ¶˜de/;=%�Óš×0Ô2¯ÅXv©ª{ygJÓ�rJý5óTôjß g©¼˜xcÉæ?7!Ì{uq~Dè"žYÄG;�k�ÞÜtÑ/¥baCœ®Ú|óƒûp¨ª·‹/ü©×›¦,Q­ :²*R<¬ôhCó �ŵ„à�“M€xƧ1wªrµ¥[‹–,¶:ºhØ.³Š…0Uޏ–½©ÕFluëµsÄü’jº-i7Ø€ìW­• ¹X£ˆ˜Ê¡Ï t&ûeïÛÆÝ³vï]ï¬}çòÎó‡ïzÏï“ÏÍãv¯Óë5ºäãÛo;ßâGã΋»�Þ·ÇÝy×yH~ß³Þ½còÆ×î�gí;ï6�¡^�ülß�?ÏI•ûÏ7ß=$…/{½�/4zݳÍËÍç>.˜»�\ þ r1žY§€”#O·4_á›$¼Q/óËSG´KÙf`¸\$§ ó/ßÑ‹\”«îÉŒ AQnn ÆÍÔr$´T/;¼Õî‘û4§Z¾Xt®9YÉî ÑðÄñìθsBƒÐA ˆ®$ÈEóÙ$K1%Ú:ä÷©,$ÛV†/ß±S–AL+ØF6T\žl­|˲†•ìkŽ˜KNûm¡Ï{¥Ê ÷ æE/^ÿ®‹ÇÙ0Ù#„üqÈ×ÎÓO_>}µwøêõöSYi¯¼Ö'±Ô,‰&‹Þê8¤Ñ[�|2"—ªýßüö¿N[77û­Î4^[°…±Z<þÎÒšüñõÎ0(„sYŒ–„‹ÉUjÞ 8tôîÌ>-ÎZ‚Ï9�'hŠK'¢GûÎw‚f£Ùšóá¨Ñ:|buy|ІD ¤¹ój÷—=šä&‚TÞÜØ|Wsïéo{�Þ<}¤�cœ¤ƒMå[Æ0M§ñuçdš�‹"­Ò‘õ}ã!”ð89ËFÖ3 >_³n‘„piµb^+žs·�Ø�2æáæ¦Ù„eÆVÙÚ‡Ð?Â#i†»"«Ô j‘»-²‡o½úáé!Nùá.™ÍW{M.BùCS²zcþ„C®ˆ*ð‡šÓF¤¡Ø ›bº]ŸN§Ù¯ê/QA6�è -“¹r¨!³ˆAòÑÓìb"¢�ê4øG8Ë&Ô3 UÈjÝy”·Kœ'È¡k•áRwBõÐB½L™»i6$z;c—Þ™þ–‰ ¨BD—,[š?=ŸŠË¬N•›ÿ0¼FuÈ®DES⢠ïœ0¨2;bÅæ¨¾�ApM–>‘¾úaÁSØÇV6ˆï»[E”h]R-í˜6R>±�Œ‡ô~r–ލµŽ�ä;Taj=x«˜”*§”zz*µd¥ÊJ)¬j¯<6Ov¥C§:áýj¯ÕuE„È‹CKØæ©ðÐ�yŽºK²€ß*ͯØÒ•—$”÷hËß™¨¬^¿Ør«Öamô˜Èrª_A9J/.Úú£R´õ¢Ò=u1�¢E]«Áï0RXY2!<'PÞjM$)*H´ÐTWûÜöe‹çù@¿MÄàÇÅàið‡ÐB|”GèãZG¨ùXÊg§ÒãÓ;#¨Î€†sDÇ ’b†Âvª“H35Œ·<|ùÎ÷d4¸.?§yÊ~§Óq›¨8gì Ê²�¬a0°±Ášõ—$œAÒÉØ)´E!om(Žgô™6‡ ¶:i ­Z0Zц ¸å3Ót¸¤’OžðßÒ&ݱàå‰ß fÕa1³©ÒŸ.vt«:Ê»€JOˆc1-FM%¬ét‹±$�êqðó­[)D~‘O~¹uk#m�/§˜Dbò*Ö2­ÈÓñÐ*°¸"Ú”°]9ÏM@¾Á©é†’óc­H0HŠ�Á¢ÓǯÓ—|0}ôÛábj›ápÁ1\$…¤É O¡p7µÒ!ÿÒüRBs²ù¥Ûê,h‚SÛ¸çsØê(¤ ¿î.`·ã©Ëmxܯ5{OÛ¶G»•Ùìè)_ {íÒT E¤„±Ly“xDMëÑ'ð°Ít|ñdà Ãu¯™»Zhseëlçó5±�ÂÂt"ÅZŽíÔ|cŸÒ8‚é¤p×Çvª3VÍt’ÒŸ„å$pu†“rÌ'bÔòk–ÙqðiÃj’Oœ_˜�ƒiÃè�5Ï¢°8�Hw:.¼Éò(*3Ç‘È& n¤GùØŽhåj²)�íoÞþI¤œ:ÙÇY0j'ƒæsÎÚ<Ë�Ž"lp¯Û =½†�¯•\â¼4ÿïÅ�nïn“·¨¥jVjhšUHv ÃñVÉ=ù¤äð“ÉDphçÃã6Lkû浉|²¯&d\•è4²öØåJÆŠ°Ù„"ä5fÌÅׇ4›Q“�ÍÒx)Æ€]rþv†j."cn…"+‘Vr”­#·&‡›Å4Ÿé¼þ’A]Uv@w7C[ÆN`ˆÈÚO\%Væ…¦5çgOÂ×69PQÀà´wvºšrÂE£â}²`wõ8D_üºÊ¸[ò«"ª]_Ô„¿eÈ œ‚C ³M°Cµ—S3ˆŒ ‰uÞF:~ ›¹-4æÕ ð0„““k r›‘A†]Ç‘õH1s¯Z¾•}®¬†Wàܲ¼S�óv5§TS¶µåhßr/†Ê{±22ƒ“k©Ä<Èׇöå”ïÛ4ké\†lŠÝâË 2æC%ñzFV~†Ó8tœ±°£5×RëZé`‹œ×� îÈmÝ牃]ÞºY©²i³Âܾe*šŸ-yònqÎg«CC(�‚ hÍÅåìÖˆJR黊àý0é°ñ ~ ìu×,ïöÇ6©ë§û§ÇOWã;ë»ésnøé~D?ÝÒ"Ï¡Èúüe%F ŸÙp%€ß=.¸M²Þ óG]ó«Ó'´¦Cn…+mŠñtز]d˜ؤϼä�󲬨Áßú¼rU¸)̮뗫݇ÎÈáÕV¤™9öÆwŒ·LãÉunûU>°Z½sä2Ë ËU®Ñ¼ç5è EWðmÝ­ôm¦—ÍÐ:ˆ?}F}ê>�YwI³=Ö¬åM«8ÉZΟ²Ôù$;ülájÜ+ó° J!orÈ–—.B¾_¹ î6f«kʘÚ3¢Áø¶|Ô6?¡Ûç\Ìým­®Ôð„�dèãLëöÆ®lÖšs¸Ö ªŽ±ƒÄ¦ÔNåzS»I{(¢Œ¥§ò¶loä¢óD�7Ü(.Gduf,2u„ÙFûèòõºÝoæÎâ’ŠŠ�ê±O8èÓq;%4$�hIO}1#3LªJÓ“e“ø8-®÷ºÝó¼Ñ»{·sWüG_¥Çí£äcJˆE·sg3lt;áøÚkõÏ1ŸcÔmÜ›\•9Q»×_u§VdzütmT ¤fƒs¸¶Û?Ä <s{œ‘i!*ÛW&rLøìª‰gø>kHŽÞ§E›œ¹Ó6eȱ~ßzÀ–'êöë5Å‘È7š&#´ö!ŸãÉ(ûÑ>�…»jS”#,ßq°Ùý¦Ñ†Ely +GÖ ð®M˜ÞQÏS ^d/â£<&¶_d2–QrR��‚ÐQJ•ò}H |4a†¦§G1XüßC*5ÔEÿ(›‡ÍÐE1"›‚þ˜ÄC`¬ lŽ—ýK–Sµ�û$¢ :û(!¦Oxø¢ÀÉrA^o„)÷eŸ†á(Û£8î¨}ž}l_¤äÞÐgGÙU;?‹‡dÂJÖŽÖ�þXÅ/œ†e·iy‹ØÝ¿ Y6áôágo¿}žÿEMïszt°$CìõÐNóŽå¡a6²…î‚Ö�­6ÀÈ�mß76Òs¸Åc¹5™^g4j;*ز<–Æzæ¬:^ǺfS+.¹¹Û׳î ù/]|{ö>-Xóº64ðQß5თ¸ÿ·"†>?1†xgzM¨â<(ׂ%î#ø¿A<³øIqÃ=¿ Z,vï)gPéä-±Œ]lsyø• d ¯OÅŒ  úeš§G)äZç¸g)ÜeÉbÂE®f}.HÇp%jS¹Ây:f½;“+ÚÄTCmW7®Òéø$½š1ˆÝ.�Y7ʘ ؤȲÃ?…ßÏZpP'ˆ§C&bFáK®{Ù»^k¡UÌÄý=ÇLK¨Â|&†MT¡ÿ™Ù‡­eP©‘W™¢³™·žGs]©]_JôŸyJôŸWN‰þs¹¶±,3úEm³ˆ¶c\„C†ôŸ¿„ éêПòÿb8®ÚYL �\<™Œ®¥{ ]¨C‹ìÒ4tJÉÐ*‰6RK8µýR©l¿*VóËú¥"Lþ#"ö*_*3+K¬/²ª1bŽI§íhý¬#¿ˆuþ¡Î:/º$?|ò%ù¡bIž€ÀlTº&J‘O´(äö, ïËb]~µÇ]+Ã�¥Óäƒ0ô@ƒboŠ_dFGh={ÌÌ+9%ñslUnmóÇœ*h·¤Vù<»LœUCõ7ò¡¿:iþ¨(bpnÑ_lu† <_‚rüZM+­rÞ™óµ’I̯å¡ëc:mˆÕÎóK–8X:jü“u�çØ¥Ú¬8õï…¢žpBOoLJVƸ´®ÚZ¹þÎB+�OÛü)$$ðòeýÑa\�SþäºÍlŒð!¨-2©(h<œ\ñ¿VX_ÖŒdƒi¤èöQœ'·]gTíÐF@Üú:-FVüÞÕ`sG{Љ‡Kqáì„bkþ*há?OŒówbœólèÜ…¯N_fË?]þQÌ]Ô$ÿá¬Í=ÖÎèÁÖÝKÂGÅAH¯ÿä÷yø!ÌÃ8< _†ï�™thš!ö�œýÿóÿPKÒV1]¸_ût É3eimunify-security/assets/ui-app/assets/static/shared-dependencies/progress-spinner.min.f33726165c0f.jsUT ëÆ«jëÆ«jux è‡å[ysÛ6ÿ?ËÙd¨”I]¶©Ñ¤®ãv=“ØÞØíN'ëQ!’Ð�$-©ª¾û>€‡HŠ:ì¸�g:im xxÇïDß.ˆxMN&¸öIýû“ØÅüÈfœ¨hýÙÃ@@±»1¸83îé#Îf!áGا@L™Élç3,%܆‰Ò8ó<¹GÚ8öm±Lã�¥‡D #NíHí?`®DQ„l„QˆòûœD1÷—!‰@­ÐúT\L¼yéÿFäÀûL|Dñæ9óæ?ÏSЀ¼#QBvq0p²€™Ÿ)™]ø6BPPÌÁØu °‹2Î)Ýù”ºŽ b1v5ùÀœØ%+TT(…<:§þ9sG6|ü€£siy=‚³«Ëgw—×WÃ×ï~z1¼û忢L™„”\ÅÞˆðΣE™Š�éþ@¿w�ÈœØqD¬œ´±äš "‡7¯üxq{;¼½¹¼ººø8|wñÃÙOïï†×7BŸÛágçw×QQÜèÛ°Í‘â >©@É=ꌷõ}ÂÕû~Æ]q4ŽHcIÇšùš¿~­Ñæc£uÜM~úØ#a€mrûó�Z•'‰K<سÛóH3�>LTdš[È4©6å¶ Nj¶¶]øŽÖh ÖkÀ'±€*‘9l�Á/­Ñ/ÏásàiêøÀ÷l®ÂÖÓgÁ¸Bï<`ß&Ú†Êa´p‰Ø5M_GÕN1çx!9&ƒç`Mì� '‚I©Á\m”V°ñaû’£VeÑŒ:ÑTÒ'PÝÊáÿˆQ!à•ºaÂÚd^X÷;4ÁâÕ*�ÑDšíâ0L`å±1.C`JÃæ0…ÿ#øjJqH|â‚Á�Þ§"ŸÌÐrŒp6á$ õ0ñ8Ý!c»‘΂4-�ä�:Ĺô-•3(�±PjaÅ«Fcí ±€$©8ܜٚdfM¦aô¥aÊPŸ ¾*nÙH9 ‚2†‹‘´ØcHUS ÕÁ`PÅ¢ 1CÈE2ÐôaÍhÐŒØ{6#ü‡°‡oUêBLµŠ§&Ò†Ø�ÉÀH?ev &é€ÏXp–gç�zUú,T#¯_ó …´9„¤n“õ4¢2lm‘ÂàIr”{Räe†¤d‹2%²%¹Rë)A®=0£, Jàn)ÒØ|×Jpd øß ±ŒU˜¯Ì½2A 2ò´éá9¤˜ä‘úì: �0•˜)œ UÊ@Kæ9QÎ?7Y°’ŒÂb¼•y¦Þ¾-!vd&Úç2Š`I1•M…”÷@7 È «uæÊ“aëM¶ÌäÛ꾤eøWC1”.ùJþøuUŸ…2;[o$¾7—µ2²Åï ¯]˼vð×J}#6Q/ltp4,?vÝU]ö+íFÁÔ£ro€Ç*Œ 2ìd’4 ©eP¬½)/ÈXÿã�a£RöÊE÷ñ@’žf/ò¤PÍÀUZŒNö‘"/o*i{A¥ØAìRŸäÝ‘¶Œ±†(„%rôWŸjó-´mŸJÙíþ gúwL Á®‘(–þ²èœZóP7­È.89¯ÔÜÿ €¤ƒ×Wôwv&�d!·ö”s¹ÇÐ�)#@MY�AA³ $ˆFAÍ a(oj„G"ÙBYWuÚ$mô{˜‚aáG¢›Íç!åg BÌž|þXRV`iÕ´C…j‹¡ç֥߂5*2¥! *‚'–}6­*¡B’8!Í$ ï‡EbLEÉÜŽÞ$íHîýY71%t2�êft½=¤¿“"ý·{è±ôg]@gcðD}C—„CEyY©å‡bëò#‰.J ¹R‰J=€Ô*¡—+/ªTâ^7DÅA ´–²þYªü¥"1k¥p'; Ê_*Ê{ 5{RQ!ëXjჺ‚®=`<:ž Zߤæý6 ‡À|�K §·è�t*¬ý!!¼G±]ðÑè%|ÕD²ȈÏÚhU†¹ô°)u"ÎoÐõ�$2ê PަYº¨9'¤æž+ÏŒÓ( ¬££ÙlÖœµ›ŒOŽZ†aɾ_3;“TÇØ ×BZ£O8¦Ô–má]ãü´Ùãc¸=˜’پ(ko]¼ØGšši»4¶ç§œÎ%ãH0l#ÕŸÜOœæÉuAÞ-g‚=À‘=}Vu¸L(Ž3T�?Ì  E)*[êY%wgÔÐF:¨…N®z6‡ȼÈ@õk ¾]Ì#.Ï';OÁpžsèƒ0vã„{øQº“¥ÛÛNÒÝõIº³ë ½!&×á_wÞïV¢—ZÒmhÇéc¯¡�¤�Ç[Öžga£�n¶AEÕv‰6�TÊé^)�Ÿ.&ß,c¿œön9âßÎk N²Æ×ܸµHo!6¶²î:ƒ<ûuyüuF¾¤x¨¿É O¼É 7[ŒÝ@-H/۴ͼ‰6‚7ã²­èxÈ~¾MEkÀšW²{$÷N´ß}&‹1¬ÔwCyÉÒ9ƒ³YFl 9ËÅ%°•Œiížá� ˆÞË®TÚ2–f«Ù}µÉÕlw%×VÝdë8Ù>®]Û1’µ�Ô7'»�dm¯^nï8Y{\7yb&kOêåžv’µÐ¦×Ydœ ”l%uScG4Ä:‹£å˜3o ­M£…Õ<=•È”>÷ÖŸ�ÕÉiñÓ©Q¦…},~ÒŠåžäl�+¿ùÓE›Iý ̦ˆeÛiùl@õ×s�ÂO‚¸´h9¦®kñÉCû/ÿè ’Ë²àrí�Ò5ê�/u½ÖN×ËOk5{±@â9ެލaý› ”¬#Æ@FRWè–¡Ï»lf%çßýò•'Á*•¯‰‰â øª¿™¸Nv;Vù4z`’H 7žfyYäÓÌÏmÞyÅóó—`¼#¼+÷`[¥ÔÇî¾X<”û¶Ü�ñ7ÿ$þù¢uX[¬˜ÝÞI³Õî¶N;¦y܃¸N†¹B}y G¾PÑrêÞ§^]›­tÛíÖöb&3J®­2bÑô UN[Ø¿HYtpý•€h½ Z/ˆöK¢ý€è¼ :_ˆõ½ôÓêØ>ó“‘b¶Ûí¯`ÚÔè}¶­�\Ïhœí²�8¥¾åÛÐåã¾Æ³:Á¼¿ë›B«sÌ·‹;¬‘¢Ç3Ù¹I{n=`®lsòJÌê;�8+¡Í ñì;Š&ß´q‚ÐR’• ¤é^¨OaKesÁqåsË Ê9öpxGæÑjÇÞ¥Gžâ5îãà”K¾œº>fqº¥ûÚ�góÅ›Úúû˜Úþû˜Úù ²Á–[¼ýiA”‰†ò õÄ{Ø�²3úcÖì(hÙ ÁÈeöçꙿ|a¸�KsË;(Ûóï¶�HîÅË$Ÿùäñê=i۟ѦR«ûŒ|÷Ÿðÿ\¼2�•˜Wj%ß´�Ïå OK¡ò¼Õ=§ wLÓ�s.¿ò†ÌÒßLê="Å?½°ZÈ.ÿ¡Zcµ/‹o¾ÿ„†�~2SI^Ûž.ûºæ´öíI�9µoOfù‘¾<9-7Sÿ·ÚÅÉ ›ŒkËdãCë“�ìû­–&¢T$To±ÿãÿPKÒV1]%l�O([imunify-security/assets/ui-app/assets/static/shared-dependencies/common.min.f4e51f6198f8.jsUT ëÆ«jëÆ«jux è‡ä;û{Ú¸²ÿ õækí�B mw[òy¹„wë<š&”íÁ[°©-’¦�ÿýÌH~ȲݻçÜûÃùú¥¶F£™Ñ<%Y \F×Y‡Þšðâ¨cå ëv»2œÓ™íPeBÔÅÖš1Ó¶Tª=*[—f\æ˜3¦œßN†‹˜Ä![â›dFVdI*dNdCnI™ÔÈšTI‰<�ÏäžÜ‘)� Ò"MÒ=w(Û:Ö£Kðv c™Ói¶iýI9`h¡±tJL›Lü~cº¢ÐènÓXpânõŽZ¬º6‘Ùêt¬|ÚæÎ~}-þ”`–. ¶ºåR«ú¹Y!vˆ‡“µnÍÅ ÑlÅtP ;Ê™l¶Œ0pæPƒÑÎmÛžoA”€üFŸ.È*¤ÖßZÌ\ÓªãØ'ذ]œH‰›é–Q²„Á}jÍ©C�{XÑÚʸuÏH%$bº=Ç^›.Zg.ƒÛ©;:¨N½gn(YÅJµVµ†ŸË£~¿Ú)_.w+UŠI6€ôl$·q-Íé´h¨l ]q¶³6Xlf5igd�†XÑ5˜R Lk;¤�^«4¬uûmÔý×Þ�mQò^­ízJ�P?÷›ÚöŠV¼ ¥ÙZ÷ޱ úÁXmQÔ©$ªiÍ[öÌXÑŠÁ è„}!¼ bƒÎ‹°ó–2Ñ_Þ:µfe{Ž´[)(½ÕÖ1VeƒÛ§"ø1  ÓÍ9Æì �ïÁfßè fT"A{¤ê£P±Ï»ðŒÊ!@„¦~«ÃUU Ìk÷¨3�ÞSÂù£멽*”909©‚ƒ">3ð¾O¢wŒu*úÞǃ¬Œ6Ùí¬íj•BÄç¯ÉÄ$!ÔA�Ï·àÒ(xéu‘..“[0£@ЗiÏÝ‚%ƒEÀÛÖ8ÆÊdI¶ªcN[‰dõ˜;`ׇès óƒýna!õÕLÇ«?tW”~yB¦(¢,Ss^`Ŷm±¥Ò‘À—<å­žÕfR‡¤l[#ûª5ïCUyÊY�zhBZÁ¨»ðí_1oMæÖPÜÞÊ`èãŽ}ï‚˧Хº®_²½„< Îà¾gìÊv¾@vÙl‘x!!ÐGæ!쯀� s ›@½ F4½öž¤Òm¾xÍ�ḴlÛ_L‘Ê"dx}´f°£~³l¯7�/-¦2íäTg¶å²Œ•±šu7à–ªr®hڣ蠺5’\w¡*º¢‘1”ð‰~’×uZ[DQ&…±•uW挪9B5â7èq^›œ› ÕÌBî]«LšiÞ|æ4!�£í½Nµ^M¥¬oÛ¬b¯KscÃbìívjO‡Œ³×ÎW”ez:Ž=÷Q2_Ô@ƒ½=U½ìSÈle¸î# Óê€Ué–Gíjg¨‹Þg@{¶Å‚Ä— ›s>*Ó~\‚ùlç¡nóUÈ\,ƒCxeS•ŽÍ2æz#Š�+ÚÞe3g€iºY¯Ì3=ÅC€ŠJw»6Ì,9fãØw`–§Ê®úÈPÖB›Q®Síƒ?!1sNçM« l<ßUöÀáû2ú'ŽUH[;8®~†Ínçs³Ó6K­æMµ(ËGÎ4-“™�ç¾ãÔ}�õ3ôƒèEíq•;[”¤r·XTj„OôóÜžé¦:ô›+�¨~Îhßgý¶×íÙÁïõš{ˆ’ ¨­ ‡.j° ‚ˆ g®‘•úÕ€­¶·­ž½€Ú)ZD8Ó½õ•=5V|©84„#‰"ø+š·ZͰ¬1ŸsܺT6öMJBɳ¼F 0~c°ª^Ûwô0*JÕ0Üey‰iï?!רÏ8õ�,‚¬¡¢3KÔb Þ¨Ù²ØÉ±Àݘ=³W1}A–¼œÃt=AÛvØaºÐ)° ¶|’¦�À±]j8³åA\Ñ-d•–:÷®Ì�'ŒT¾:Ýo¶îÒs@Q"nž�wCâ„Ð�Ñ'†¤`ì!´ï g®Æqø~ kÍD·î¥Ü§çâ8·˜Q-‚aL->wî¿�ûÿ4)öŸHŠ˜ÄúOdÅ ´tDi…ú–ƒR˜]Që–-ýòÆÎœÅà”W)KÏù�H³˜ ¯L¶T•SE{þÜ:>& ã°8øL×­"=†^Ø»ñ­¦š× yZ Ç€zÌB ¿ÉY‚faµŽ|úÓîSqwt uZgÏŸ3QÜw;°i¶N�)Tk:¶Nò“b¾�ÓByýJojÇ~]Égú§¼Ìyþ\)*Ï�PnR„×cZ XW¼µX²¼ôý2qô/­GÿÔ‹Žž,­£Xiu`ã—U¾X¼3zû �#ýñ×¥^ïóEiPýÜèWkA]56¿X…åt”Ó£H9å¾­¨›˜¶uêuˆïçöšåêã‰×5õê¬XL§’M«±Å"–î H³¶+r«XT”½uÛµ*µ@_¸=? †ç‘çÚ¡~(�ª¦ÆëõAlHšê�ID(ÐW6V€5yyÏp¾âöH¼†ƒ5êÀ¦oä¬$Wì¨Ql,¥X £Bý b÷€<~½8þóдDuâ¡žŽ€eÉmëùsZüãè‘í�­ý¯BòžHŽ —27 „1Á;‰¡è¤®—Q'Y냽žWý•¶´øðÓ+fÒ&>V1‹5ôïæµ‘¦Fó—8·TÛ¸3K� o´š GA*…2L=ðÛd ù)­þoHiAÞR”§’nŸaTãéNû¯ËSaÚÁ%ÊÁ¤É >]¨OW~R@ O¿åбU ;�ý—’ ýJ@˜ÀB'51¡Ð�0`Iæxä@jç¯2ëAÿ`û¿ê¿:íÕÿÒ^=H{õPF/Éa&“\ÝOr�hjóµ1ƒLt\ò9ž�·ÎJIJŸ$¤õYÐç}Î៵øXìÜÄA§çÑUE!r&âWXŒJÌÚýûtøŽ‰ÞV¿mTåwuÉØÆ-´â)ì[² (àânˆy#Æ„Mtÿ¤ñôüÿþétr|¼H÷ê7õ Fjñc @Z)!‚wýUc–®�Ç#(© bsܳœF !žåß~¨Ø†ö°Á>À†Z¼<¡ðbvk¹Þ÷4§T»ÉyV OÃñ¨L=0Q1N;�i†ô#ÐtÅÉ8C#V¿n�ÕÐÆ å1J…sÑt=&_b¢FBH0®‘Å,¿:†¹‚d?Xá1Hôø¬ÿ BôYd_ s 6ËÞ´.�`K�ΣàvÔÚíÆ°1%Ê9üáï'eÛ×Ùj;§®jÁ3 i…¾¤F]˜\!gíéu9n\Oý�+ädªãÖšôÂTbû[_ÇD„düÀ'T„½G¤ëJ\ë�K´wãÒŒFG’¤…€¾¬- !#™ãdš•л”þFÀZ_+xÕ©Ùñ•4}‹Í÷‰�‘›ý4/mbCØ0-C¼‹×»nZd¾ë] åƒK†ƒ/}Ù ù_çS pÙ–¦[®qæ—½«˜#¼ðþ•?å·ÊWiR\^Ç„½¼ÆÜà ^2+]ƘÍ9³Ö…ä-î|)›³G«ãÓÊFÆû�­QZ¤´>ÈxœÔuÚDÚu)ÿ–„}Úõ4Ší¶ª±›´A¹û´ûÝ4£èì8æGHxJû£ïÃíkÓx§Ó@§ËÿÆ/mv%Ss¼n2Wtzqw0‹*�_€n;áÅ ¥^£ç@�z—É™ôZ’Xß1“½:CÔëzÌ/θêú] }EM@íÒª?ºˆ˜#î•äÙ}áÙƒxÁT“ÔãH�dF´ª)uc�ZØÝA4î·ƒA ›aÚ„CI3 ãÁu|,â ÅäèËàÛíšÃNšïåÊ1D)‡ý´)û×1`RcS^qW†õwx“Ð @G¥FŒÜ+=ªLa=BŸàÔG×Í´þëQTˆÑõU Šû(U�Uɉ.„@M‰°šÊiðÃèC û�%  Ôʵ’Œû±Œ4ªe?¦>v9=[Äq{ØW®õjèÇ�"É£f®«i…å¦$Ç  ÝHùIBkKéþæñ’ =7Ùó+ñ7ä’|$ïÈWòžPÞ[còÕ»öè_Éœ„Km+Øùˆ¥³©#.qô UÇ&^7 ®†Šë–…ÂNßš+Û¢“ ì©üSîù«¾ùŒâ,~˜¸óWÄù½ÓyùQ[*ΡÂ~O¥UÇpqdˆêB ¯G؇„w\£Œ§84óùe\A¦nÁ0ù’­;3~åR¸lñM~úÆàí}p;ºBg&loƒ³²$‘÷Y‡‹Ž®;övóäXŽ1ñqÍp«èÔ½yËׇùp_(ùOr£y·LÇÔ—RÏMtÅ{Wvx×ÙõKïoIñ[Ú�œHK 9¾Èᇰ‹Ÿ²0c¢ÅoûýÑ6]|/†8FfÅ©f怛YØNRŸSŽid©¤d3#à)?¨Ê0†sΉe3J95¥™cen·˜b2X³Åϳ¦�ƒ¾X ÝÚvhö©DÏ#—²±¶�ÃU‰Ê"sŸMv»ñDË®� ÿ0 ˆÏ^Š®ãHü1F‘¦(Œñ�ß¶ÉO´‰|ÚºH]Þ\d­ã;€KºñQ!õ1ûññËØå†¨Èà7W±ÆJee7.á©bñ¡êÄ0û1üªÞÈÜZu›‹«žl.·© éEyÑól^Ã(%Á¾íæeÀùLs 懵jòÙkùùâ—–Î{¤PÁe D¾ŠEp‘A2-V±(�ÈWqléÝùXyG)¯ìøNØBµwç5ñÅHo²o¸ôoQí}T2Û߼ɌðÅRa:©ªŽ²ú×úoöã�Bsß?�¯-+-mërVAÞ€Ö…¦Ñéxy‘ömŸ¶M8H1ÝÇ[ƒô å�2�ûÕï¾Ã§¿Õïª}ëú^í_ßÝ~÷°þøŒoîeÉß}Ç)ßUùªª3ÎvYŽ×¶¥ì•�>²—m Þ‰ÍB­Ö ã‹–BÖ Ò°pfÖ2ï0 ÞÞÞ¬ü:I�¬ã°„c6©•1œ*cxÁ4güªýx€SÀ— û%¶ý `r�ƒ#¡uV€²Ç0§Ôñ Ó"?y^D0Ðìn¬ `°*@•bU€)ÇŠP-?0(ªü½©•†>Ò žEµ±Ý[x%=ÑUÏU5Vÿx!f'–T®:îœÌ�廵þ뺪C“:-̳¤’zA*ç„ÖÖïÖ(¦k«* y!Ÿ%•Ô â:'´Zgüßð’U3ì ÎM€gù#Ô'Ø·loj'ÿZ½Ûª¯h^ÚŸad·£ÍG�ÔPÂû†ÔP?ÂUó(kèÐl“nWÙkŸlu-yæÔ¢'�ÛÛù£GÑ“A£ÎŸ¬Dw;ê*Û P¢–®‹Á±ú–C\ íë›åOÒýúbPmT·ûVŸyù/«~ ÈûJÎrk‘áu¤ñâ}¡¼^·>¥1ý]: Ax6ȯÓóKàŠµÔÓ‚2åÕ¹Jõ} ‡åC)<¬ÙwY¾lDÙ"æ¬6Ô†u®½Q` ”ËA©4 jMãj½¸ˆk…È„)ôà3åjUR²SÄg! äúëÏWQåwv>¥¶‹øt„÷5–еä)1ÍìévÂ3Û"&qØ –¦K�o+Ì=" ‡?õÁ¦ ;Ña†mOÀ®õJ ø1é3âÙéuë#¢†3®cw¬6‘&æ.çïÙ±¦ÑF(�:p»u`ðRsœ±åâRž#q³ž¨6Šd*æKó™5©&ù;LN\?‰,þz·¯¡yí¡aã<,*©]ÂiqY ÇN+ó¼ÅÛs™Ë¯)o R�Ou#¼§ºÃáïPvŸXëÎçãÏ;ñóûÌïàsñt�îà<æÑ£ÿVG24mOɹ½]ðˆ0JWP¸|"é\$+æjÜ4VšCb’Ië©‘”£¨îH×̼f`€°øô7ûΘaÀ‚G…m÷¯1 &;mÉMg1˜?mX{ÎóÇíF½�„I_H¼°…XÑÆªêxmþ”ºXݪöÉHÜ:ä™Ö$Æç_¨hüqQ›ÿ…êAò~® ²wU-UúYÝ*©Ëµ ±:þR4Nñ/! Íw=~¸9uÀ‹‚?Qé¥%ï+W®ùˆ’”<ª«_uE“J.ä¨ÈÆk(º_¸  #Õ-no)�› k—�¿Êu 1·Òs}�/±àv ´ˆ§²%ÑÑ(~eIxêµÔ5ú­ú$’—Ôo})¡ ìq a-U£ñ×J\P¸æ^oèa&åJ�‰ššè$ÿ°:¾@/å§¢/Íy¡-ý VçVÏÝ…x‘¥ò<´²óÃWöD=V'™”pláïD™!±U{mgÒÞ¾ðB¾ð,SKÙ1¥ý¶}R‘ÚOìöݺipÛ¥&˰™Ü-KbÔÒ­¨þ¸S‡ì5ͼbÿPNZúé8V‰¯#»ëø1¢åŸ»UKŸ žGÏ£þóh«S'‹pU¤XžžÍqËvšýÎpœÏ–É´“ku£=ckò‡È™ðù�-mÉúé ÔͪBg‹Ã¹^9ßíT§r¿2·d¼ñPÙ÷9£¾/«ns)€É¿ƒóÀZõocW®Sq{�F¥Ñèã¿ ¬ü¸µŒu�cÚ¤~�ö“¬_ÿ°‘´%Õ>N&|ÔÌ-d'Ô;0ëŽN‰Ò ëŸÔƒ­úÁÛ�~Ô¶Í��‡��ïI$4�¢Au§êü±­ïüLö«Î/ôÇ©:o"öâüHpíÚù'ýúK5#Åß"Ûz"¥}“ÌøcÑ1Eá\tò-0œ¸#7ÿM%¾¬:ŒÀŽH†WÉjì×’AöùìTÍÓmW-Fôü1ýëûµ˜W(âðqô8&ØÆA-yÒÀq2™IÉÖ`K¯aâ-—Õê"gŽR‘¾†_˜/Üyqħ܋�Éùx˜�¥þíÇ[[0IbŠÖ–Y‰z:à<ÉÀ…�ŒË8Ëíí¬‚¥ª Î©œ›lbâa\YiìÇOK®Ü™SéÉü�>¶0¨¯’§ßG¸s’êO‡4°Û.Û�|3€š7—n¦âr7u"u‘¯?sâ$�΢ù³(!®Ã^Ù`µIñ¼’µm´#ðE'sq"ó]'™zQÈ^ÝuÍû|¤,-d?·Í>êåDUgͼ¡Ä.óxý[ÈaY›ÕK5dNïVµ‰ZÒ^ˆ {˜¤Î¹üduäü{ü‰L饺÷ð“ìS‰ËœA´~êþðf¹¢yZIfieÌ ©xZ~4/Ogê5N\y¾gÀrïdïÝ~æÇèbϾuåÚˆ×Q眔˜¤ø à„˜øPƒœ? .œ×m+D¶ïXgM)~ªu¥ÆNÅêܹóøì<â{ãíˆf¨¡ÆÆm�VŒjN ߯*u!ÆRæ3á!–U‡3zB\m@,·ìbÄ·ñÉ—ÚOÔ9ÍצtzQ—©ÉUEƒÅ~ôD#³Ѽ‰yUV7ó�©¢ÁØõð•U.ƒrFަߣ™µCSúÉÂn€°¥µÓ_®[l»OÙÝ;2÷Ó§‹ý”¯Þñ÷øçñiºÆÉ[ûYž[ÌS ¥ªùAb›fþÄê Y´,$b=KÔ¥¾á·4‹ê4Oæ µy4]N¢W4ài­V\gX[¼Nä½Ûô‰Û õ”n»´h'v„ N�%O“ƒXî~ôYî“þ|: h·ßXÕF‰à³>^ûHÄ_šܧƒ‰æ®Sú¹ÆTW”¨å œé‹,ãÁt'ú=šÆø_–:}r±J-L-ê OŸ4JrH_œQ-ŠíN�©–èý¥;Sëzªûº] Ä è‹³ãø’ʾ©ÖÔ¶­s³ZᦠÝe*!ëˆ�öëåU|¹†|ã&Ÿ&—/1¬.I�8g™'‰Ù–,:çõ­3«Ì••õwû:9©gúw%Æ$©|¡/}Ù<D¬NŒÒ�$:{9�¶f[øy¼<í§Ä5 �F?)Í™eп-C‹ìå %âüså»îÀmFÎ>Ü_jé?¸ä˶ÎRk€�ÉÑH”Y:\Cîʸ³öQáa¬Žy×ÖŽñÉ‹\ý˺ð÷¢ó 1›LÔUÿ²�‡n?á“JÓ¨åÛéŸÔþYÕÔc}B`/D¢ôntô·G_�ŽUwšŠ›íjvt#ʸï:Šäý†£†�~ÉàÓÒÝ‘±ç_Â$ê—JÏü…ú±Â‚B.HþŒOÑXJ;K\ö%Á�¢¹m4Ìø|e{ž³ùæ;ãEz¨€ÿ Ë“$˜ Rðަ[Cdè.¨ÑÛÛju?QÜ<˜åêŸDÞD9�Õ M2¶5–Yx�µ™‡«{l)$†�ÃÈÑ–Ûçì7ȶ5™¶éJ뀙¢À/ÊÒI2˜ö(DˆÌ‰’S”Ç×àQË~×3HË�Ò.ò¶5rqÂE;0NiþY!ªÉ�S²MµÔ>Å”–“(¹1зyE»&"ÉT›niŒ²ò'suÛúf3µWÀXÅ&ú>­,¸J.eV1 •ºª¥£ùø¢r}%®…¿�àe_v/S<ÍÅéÍ}]ÏÄé·º˜‰Óu3z5&O4ð¦|l 친õi¥SêõfÁ[ ²ÄÒÄI¿ä¥fž/iðfÛÙTÖ 2çÕž^q`‡d.[ú£¢6õ‚¯g²{ËÍŲ¼ê ßâY*eíˆ/f•+´S¹Œ‹ñYT9å] |Õb¥|€¯œgø`"þCyÌ¡aRÞ—©ñ™JÃ]ð,˜s™*_X àÛ~­‹ÙùØ9±þí­U¢.»û¼_ú#¾gÔ[¯ð'�û*ã(Ñ`UþJP'¿¾6àéuF×:ù4º6Éüy£N¿äO W5Ë8ôn¶^¦\*-¾Ù¥Ò2ã÷eºæ R \”¾ejn‰§ƒÇo[��/ÐÕ˜Ž ©™Yœ[aöä7‡NOÙ³ v|û[ôÀèôT;o;ÑÒÐøÂ•Ç¶xG€by¨Ãçv£Å`¦ ÁÙóñæýÅû¿1�qXY()+Êè@¡ 4Â"­÷g)Š'g~®‚ùø ƒ’ïŸJj‰VÉY0óÏ#øˆËž¯‰xñY‚‘rÉ»¼â;ëÚ_ÅÒZ%‡Ä~É‘Öímncì8JëY³)^Í)iDî{é3(E–bÁ#ñOFCÆô(­e(¯—Õ"¾Ê¢=»�¯®.>‚G™ŒÁBÿìû1ö8²Xc=c¾ÐJh>D¸í?} Ž|“yÕc:xÀzZeø4p'�-'çÈ©÷ó/`öÝ(hö¬&•°“MUŠ~ÒlXýt u½Öë²ÛÅ[ûÅåž.���]DÂWi†4£l:ãÖû¦··Y·=*«KÌ\§;Š“�•Œîj•+ Ú[_èÔ�ëbÞm2lœ¿ÅŸäg%?Í¢1Sw'óK‚ê]<'R�•7Ò_,ÆnMï+6Çkbsª_6AH¹‡yqTô¹»^àǼœúr�ìIÀ/ÚÇËå:(ëæÁF’êì vœ: v¿‹þÉ ­ªJ|UùÙ«wN̯:.ú7�‰ý“êDå!^%†è¾)¶b—³êN«LQªÒ±Qè“5-.ƒú{]û³$ºs¢…–ûÔ€~Gëh™«Ú>€ÍŸıZ’¿O¢húzö*òsÏQ*Ag1Aö9çz#ºØíí×@…¢ ‹mè{6~w£L$ŠÜ ¤ß•T–Η‰—Àâšr¡6¯ËJ–uÉ8Ó,áÎäBÎ‰ŠƒUȘèJyØ•™ò±¯gr³ Øï5”Ø“kbÀö¿’:¦‹—ú9Ó’›Êò\u5…’ƒqíîÎö¹ûwC)ž[«ý«J©·ZkvKV2¥Ã³i¤óܱ¡‡ÎM¬OŠ4ÉÞ†-"À m‡¾˜¡7ÐBM6¶ñdxׯ(ÁpUê—»ŒåV¥UF–Í�‹JÚê°p«“e„OöP¶–n`^é›fë“—{C¢ÞÏW•g«DfbÜ[EO¾BEÿ£À�ߦ'¥º1Ož‚–\Ëï—Ù@äXÉ(-¡¦OYÉ*)¥¦II!•SRF Œ’B:ëŽRJÌÜQXAíç4bW4ãOòcõ"SO¡€¼ËmŠ\¤9ß¼¼˜Ôw´¸Q¶HqD&Æ*9¿kIú�ŸãŠ'qšÙ$ál~tª— ØÑKÐÉl™¤ƒïæ�òó³™Oaã˜Á»£w÷R›‚DmÛ.`£ß£¤ ö/ÍÁ ˆÙtj€Ë(K (cÀ?Q×ÏM׃ôF–¯È 2ÝÉÈÉÅiº¤Ÿi¡´2…^ó³ÍÃÏYÉTÂD6còPWÖvµFÿRËР“F—üÐFdö¦j_ Éãk›‹….ä Îꔪ«Œú7�Â`*Ñ8v BªVÝü]çî?°‘¡5•iS¡—ë$.¬jZ�g\©ÈL"Ðà$e²íf;ugšé"… -îõÒJ&3 W«bJÁy{n¤ö#½<º¢%Ä{�¯ëÓ¼’;¶rc bû¿Ç³åÇõTujtù1šN£)K÷ùñnÜyÊGÚ””\g›¿7“+¸ë(Z©ç7-Øœ~T_]H4lRÜà$Ù=S\ÁªHºƒÂ¸D<富ðXoŸ'3§Oû¤"Vñ ʤÜ�ÕÜ�œX‰¢U&lì^® q§|ª˜ªA‘u7a£*ß™ÈëBÚÜ2™ø\3¹’ ß/ù�ë# žå÷Ô×ÁŸÑ×_\öjD¿ ¸¸bÿ&k (³BV³æçÑéš9€Ô~–mOM•¬b:OuPgªhÙ²:sË”ª uš�,E•bf�à¿�àçn( @?WZôŸ®i½»e®jkí+-wÓó(±ÆÇ–·<‰6dq)惒%ÉÅ6ôŽë¡¥¯Jˆ�KghÓÙV„h©›º^S+\ßYZ«ê8¿¼‰èî®”61ºXDv·š(,º›,¹&r±M49XCÙ<ô‘ò ýë†%S“EJ+ß(àóæÙ®nVª:_…þÌV†¾ÝÛ{¡_¨p ýÿªä=ý¯KÞo¤§e‚ôp]tBnBhÊì[“QÏ™~6{6íc È ƒ–s¶4{îéA-}ôèA™•RâpˆÏ8+—KÒ÷£Ê¸b3Gåã’̉h�¦•ïÞÌh�¼únGŸˆfÆú•é†ÿu;'žl¹©Y¸c›_Y�FbèmoØê¹Ã:ÃVÆ´°‹‘µ¸±^™²«(!ËÆ<îëûA®‘aïþc®ª|Í6KÔu�°”Þ«#XîˆõüœJÅÖ²Á™�q}fš:¼~c÷�XÀÈZËZ<ç[²BlQÇæK#mÓI Yöv‘iK÷NÄ{ x¡b~ð�Lòé”cÅ…•)¿µU0kÕî·~jõWzQŸýÂö`�Çt?×ÔZOË“ooÓ�Tã§Á7´„"µÍ$)o»þ§Æ‹/c”5bï�çÈh�‰=Ðh[œT =˜+Ú/œ�®WK •¤¸ÿ �°üâË×Jï°Lz /¬IpIîg›$´.ñvY² £ˆf&IB:+czKšÀ,õERçVçHžŽ¹zw,ÖÏepʟظ¼ü½¢!ë}›Ê¾Ü<èL” ÏYý<àÝ u]&•2� º–bÖPßhFÿÿÍhóÐ(©Ñ¹‹ðrdhïm8�½°î÷dËÁ±ØÉ‹ÁÍJ©6¹x••³Ö$$µô¬µÌSü¶¬ò4 [ªeߊàÜÚMVŸý¢¥ÆÜœÇ0)u3E<Òw¤í&o¬B€1Ûc&%w2cWžÛ=Ìà ­*´As~ö¾ÈÏqúmìæ•±›vÅ_�’ÜÏ6Í~]Þ3Ü÷ù®]xÜ4�üÎê>í]”?pßÑ 6?PW"û²WH¢"ùS¢âó†‹u^šÎc2ࣚé'ÄØx+ë¾RÈã0¿i¤?oiKæß5 öÙ êûÍ:]îîé¹0-\ì3wù²}<È`/á×÷î’³­Q&r¾iƒ½¾a¿ÿë÷Ö�Æ�{ë‹(UÈ›{n'Äþ–Cã�*_ØßváTÂ\ÊÝ®ÖõÆõùN0^@¡êçŠ7°L#Ù®RQ“ø³¶‡71M þè¬üJÖë™×× ̾õ+Ô1=¤U#6­¥žŒ,Ô±‰ï=º”Çkλ˘=oÜÂÊ•<î[þÞBãýWØ÷¹ôuïeÿ¡[bïK� y¥húqjßdo4ø¤ð{#®ïy ùm¼l3Í:Óþ”ÞqG–>E‰²~'*Z+q{»ž¦k)Ê…b¯ö�QÝâ»”êL*2<Q¯—#®šº)¦ã¢M)�úÉZ޹^¯€ñ~žæQéÞFv±'^õÕ=ù˜d}ØJÒ¹ßÐTòrcnž<ú(dpW¡ûÏèëÿõ[(×es/ß›µIX>Ìkå̶⯔4±‘EÖ`Í”o¼ÒAQDƒ sŸð{šóÇÞE­é6ØŸµvãðQN© en„míw»ó®Íwø€€8Y=cÎ{¸ì5n5�W3Ù [­œã{TyT«ñãæÑÚÝ©z¢Ûn‰ÔÙm™Â¹gÈ™Ÿ”ÔnZ¥�ùUè ÛHZ,Wé³�¿æÀÔãòvÚœ§}éµ4»RmÓè>Ô­Ò˜ñðøDJøÒšZ‡ƒl¯ŒcµÒºì´=bu·_3†•õtz¶ëgÉ$±n2JDE2hë€gá±JÌêÌ5_r§”9j©68d�û,CJ¿ú¾ÞëœÀzHãcÊ:cj¥§êã+šTƒ!ÛM'�±Ž} •îÃ=« ý¹‰Ö°Am·’Yú§;—ãùoál®,ìû‹èáWˆh‘6A”BPñ!ŒÛÞð�T|•Êé—”ASy|IÖÎxñ9™TÈëaê\‘ë?pKM�A¹lÕãçYz“›Ù•ã¡�¿'´Ly�=˜’ ú~&ÆfÏf×Ñ\vFïMÁg¾�üR\p»ð*äx¦ÉÑ(%‡ASHòÌ|/v˜óK:�íž·ýf¼ýÇÛOž÷öÓp�þ§¿~cûí§ MÿwéGH?BúA8ù.Â6""£"£BáˆÂÝ2v;-„m„„ždC»Èݮ‡ÐG8B’ç"ÜE$ÜCØáH«ë"D•{M®lo×Ed¯�°Ça¸ìu»yCDÂ&…í&rÚ-Îi·G¹ÊvU¶ƒ]„Ü~{$a!@G �J;ôrRÇm lrF8vZ"WÒr:> v€V'l!DvÈ)Ýpëº{‘Ôl!äNu[’½‡ˆt·Û”ŒC·ÛAØ“#Üõ$Çgõ-ŽôvÙå±éí5bTzmF²'„èu‘ÓÝ“ˆ��ûÕë!£‡�êy]„èWoˆœaa[’ÐÖmùŒQ/@URŒLo„vC”å7y 4î5<„ܸ:{.÷@¯‰Æ½]äì6î"ÜCØFPôÜÛ�¼=´±ÇHy œFö¤Ï^7@½ž‹PÚE§=é´‡N{è´7D»C)�®{èºh$!ª 9w(=6|„ÜÃ!z8”ÑáôpˆÑÃ!z8Ü•âèÖ:D¯†{ò¸1¬ÃÂ.ÊI‡˜…C™C ë°×”ÈBÔÛTõöF�¨‡ª¼B0ÐШ'¢ÿCôÜ—~úè§ß@¾�Žú2e|tÔ—Žúè��þøÂšþž‡ImD¯|p©/ýñÁ¥¾ôÇG|é��óeÄ|Œ’/£äK£är}Œ•�±òC ™ð�Ì¡= ¤'zHO‚]!W´¸ª`OŠ@X2&°DL��t"è¬'9ÁpW"C„¨ÙǼ|50cGà�øcþ‰Äµ1:ê"»ÛBˆ9:Œº>"Õ„Öȃü�ÃGàðh7#Áaä£.Á$�JîPØàr¡à¶:1õÂ6S/]ò¨ÑŠƒÁÜFÓãp7äpO’ööz 8dêQˆŒváÙ�Â=Dº€b9è6<©ËG¿ƒU’¢Ý�Ñw›­.BO" Ö\š<†"_0j£f[ò»ÈéJN9=Éa"RؔȮDÁ¦�|_ò�fÓ—ümˆì2«QØ”ÈBÉáâîvÑÚ.KjwW: eJ¡€…ŒT ã¶y( a.tÛ]ÉáIï¶¥‚ö‘PrBîbG†«ãºQAg‘–äì!"dé �ŽŒQcÔD;ÌOn'è d¨.´Ûíp3]�ê2»RØAÄC‹·;”|ô°'8õ\¦gO¬×æîö:añîö¤Îž7äP*è±~t=©Às™àžàáíqÏcEZ»�½î°%‘#Mb¯�p„�É9‚†lI¸¾Ôï7¹¼ó€þ0˜/¼ä³½äú‚ ^ò…}ü¡‡PÊ QfÔC„í1 A[?DÕ ‡¶rÁ@ZPp$‘Ü ÷„.·JŸÃrZ’þ…œá^aá¡dƒBà þá°…°-!S&&}äû’ï#_&cÈ6…’ ™‘ä ³a(„¨ 0¶š Vr†‚rô‡3H° ì db7]wáž$²ÍEaa¡”hJvˆ+) }‰p‹.X‚þ ‡eÓí¢æß¦ Ó!2J„¡ Z𼦠U3hî!ì ävƒ]Éh#‰mV’ ’Ä*£xñ$Ò•W %gˆœ¡ä ‘ãKŽ�_r|ä’ '�ÖŒÍ[·»�ÆÂ6‡°Æé’v‡}[’ÑT/�Š{’Ãܹ+b—þpŽ‹IF©Ùe¾ë¢ƒ»î9¡DP¦šµÀÞ-ao¯ÅjÅka©çíIN›u·×v%↲ڡpÈaK2xmà‘PD¤ÇåEzXx—¥ýáò�fž²ñ¹ÎÛ?ºwî!;èqVöº á®Döv$â!ôi69»®­Û• †ˆ¨ÚÂÂ!Â!w¦Æ÷zÌZdÊ¢–Û^¯-‘S¦×m! ßëùÜ¿ÞHò™u)lK9¡Ô‰D€z°Ë=OÐôZM„-‰0Nž´æñ‚‘BáI,4=�­ ÷hØC6۞Ǫ’BÔ€Ö^€ ÁÒ¡F¡…ÇB‚ltæ#úÓFØ“£8C*Ìó�QãëÊÀ C£Bpšñ ¹– ·»� #Ûi7L¿+Ù¬ˆßÝQè #b†-ðn ³§Ø�ÂÀ]Å´Hò]D€17B‹ƒG¼xáQD„u¿¡ïURØEèIR€0”QD¤'¯+¤i1íÀa´k@f¸`}i,dñM¡'c�œ]Œë¾d@¤@€…{ÚÁÓÖþgû.X»Õ€Ü“Òv-† ƒ(¾Òƒ 5Ï{àv8A0´ÈÕÄ À®�Ôvm~ñ,ÎmihÛˆ‚Ô¾§Ð �hÐÀ 60"²0ÉÔu‘í n@'ØEØñ¥z€î`¯‡zÀt FÈí¾5S¸1”‰ÚDˆn€Ä#èvê`/g5´aWu¦““W¶¤jBà@/øØR$ªA5åTÿºV/‡"v€f Ùm%ÒÑeÈÒ �méP zຑB Ì3l(»‚a¯§R{'­]•:<�š²Tà ’™s».hA+r„܆؞Au¡nÀØEº˜�ÝNK"Œª,âéÏî;¯P+¿ Ç#Ium•8Ò|äzv*t�ìqѸ1éÅ0¡CD¤ÈhXì ®1ì‰ÙÖ–9Ù�ˆëÈ ë*ä\�G·Ñ ­š0ÃÔ¼ìI=ä��– GŠÌM7×õŽJ͉íÀVJ ÅlMŸP¡ˆXaˆÞ…ŠlMߪ1À�i1¹‡H»µ�±•¢V8T…C�6$HG©U?ãlL²1A{íædÑÄË^[@PX”1Hä{ü¤��íõD8ȶf)„´Š™ó‰Ä–ÐH&Lò]¬ÁÀ…ÈwÛñŽ,ý¾«fd]KÍÑ,¢ed¦ap‰p"ë Ó±®fŽPr Zd듈‰V´$ ¡�ò™Ì&ážÑÛÌ\l#¢*¤©h�º%Yú˜å~K"jÐv!�ŒôU|° `4=(°+„‚>ÁÎ4É7%ƃ·™Q2ÒC^he>‚µ7»uΓy5Ùü©›·ç©è� æ\ÐÒ�ÈüRº!ZTP7Mèh0ò¨ ÕSdÔìÙò»%ä`„G»Ð\-dÃZÁ@µ$=±‚&öЦÇ|;ÚC�=ØC¬F{€‡6µß|”aÆŒÚÂ�ƒ#‘ƒ#È–QGp{°ƒÐöšêŠNê¡El�ØŽgÞ“À<*¶{¶L l¥ElÛ±!Ħ�dd�˜‹%H3Ò±¥Õ+¥3{܉uTª]÷È $µÛ²a[Þ»úÛã¿>>SúGÿé}íŸùPî&±¯È�töÓÕ•>äߊ”;g·ž?ýÿ7(޾áü?�Ó‹È:ÿ?ºûüÿ5ƒgçÿGæJÄËÿü•‹Z÷&ÉËo É’ÛµHòòn’4…$/Í•ˆßÒeÞëÑû—‡/GïYZÿôìõûׇÏGoŽ^ŒªøÂ!½¤^w^o¨æèåëãÇwÔ¢!êz�žo¾Ñ¯�0ËÅõ#¿WÅ/Ãéû>*ùWŠƒÄ¾¦?ùÈžýÃð7zP`ƒtþ9sËrpPRùÁ_M’Ç-ì—uù1× ER…o>ûµI•û­šÇø¿œ˜s*í,ë«ÉØ|嫸²áD;ÊöŸø„óùo8-ø>Ón‡ÿ–:ÍÖ—€^èÏóþÛ?¿›íy,„㟎•ÿ_#T_|Õ'iE*Õ*äÆ ßŒer#½½UþÒ ’ž¬hVöiµøÎˆëW©Ã’G=ü'Dñ‹¯ø¢ëÛî®Ån7Ñ`aœ^Ü=N‡^Fë…ÙŸr"[yIøZÊ•OwÎÇ‹£ëäå|F22å{‘éIô®¿–¡Ô¤;øÕ¯VïMûOß ó™ªÇ¸Ã©¨úéËTx¡ê'CÕ_ ŠP¿9r|ôbGhŸ²c{\ÈlÞŸÃ~ý†^þº`'ïè߯w_{üAJÏ~5={X>Ÿ§ywïÚÛ{æ’�]eŽçQ˜ þ‘æg;%ˆkê׃ZΩ9»Ú~ôh�ó j$k_»“±¿ ÛøI˜yµÐ“�¾"~·1}`œø)ÌÍ›ú6l®—‰q饿Oºá§$H˜íç�Å[C�_�ÃGRƒü'KÎ ¥öSLö¾ÈÎ_AÕ’ÛÛ¸¾ÖòÎb6O�Lˈ¬S à½YìáWÜÈ-|Úôm2�PEŸo>¼ƒ7³‡"Ó¼[y!);g£¿xì…�ÈivipЍþO'»¹d ½íZÏâåaµsºäÚ;Ä&ki•äI|°íö¥¤k6|ÑšyV |°^¡¥é¤9JæÓf>ýRX_”®í̶�|å¿X^]‘Y£ŸYßRO ñ|¨"á:]no‹oçÜ›¹~ù{Ø*†øånƒû˜A…‚¿ ¾¹ÿ;ioÊѽœMK±Õ^½ÕÇ«oØ%ÿzé8ùõŽG§ˆMnT/üÙåå,Ñ^Æß˜��±‡%E_>ó^‡G¯ž¿¾:úùxôêýaP%±Fc½à óÏ2X‚û‡%°ßù·2ÈŸ�^ýH�ÞË—¹ŠžÍ‹æÞÕ•û÷å~:,)öS\µ¾bý{Îc9MÕ¦ÜwÂïøðè…ìÇ]Õªn{§¹ã6³Ý·()M<èu¦ß슒õ'äÌ+^üi)öú’Ú²öºî\Ó²fv]W¤ç¯˜y>O泋 69¢D·œ&œNg“%{3ÐJMªÔÛ}³ÓÓE”¸Ý“†ÓxÇŽ:Ž�Æ(άƒb™¨o§À£¸ ÷r¶ˆÁ½ùOJõ„ lÀœXhí\‘zø§ àÓ‘ôw}…)êx=3Mi«©¤õý©ªL—¬á}'~Ý©njó’ɹX`k˪OI6ãðÈ~hØ^¯=”3‰áçÃ)­äØ#A–¸~~AR„Ò ¬=ŒÈ„ðÖÕZâN­p_Ï£èçñÅoð–²óq6ýLëƒ2pÎÚ§)-]�ÏÇÌLzźjïð»a|‘Ò’ùø‡£Ÿß�ž�ž�^¼ÖÏd'zIËpòìp¼ŸùSˆwhé±6w#ú"Eþ½ŒæŸ�Õ'õµ',ZUösR}÷¡ž'ÌŠÛçϵ¹qv i)™U-Çò?3ªÕz€UëXUÓ¢~²\`0Jˆ<e”_E™¯j6c�Kª-«VòElŽL–!¿Áó›M1œ��½RW>ÊOÓ­M“„WÃéìj-_MGí“È ­)'[Åy�lÏy&Äôsa½£7™µ÷à�UY%ʪ$n´°¬Æjþ ”X‡º:wá&²ò�⺘“Ïús¢éQ³Y<”Ìò/�üje©…$ïH`Î,¯zõŒ~öÍOb-6æ¹ÐÎùœ}®f/„Zýñ¿ÎÓôjqÐûøíãÇ;üñuÍ6—¶ö/¶¶s>[¤0B`¢ýó|®ßíPôZ™‡‰ÿàï`>q˜kÕÃçÞ÷£÷ÏŽ¼`ôÊœ.^Òˆ=›�§Lò›»•Ô"�7}�è8O#ù]:Û�)=ÔÖ°~½Nó…½ÂȺí�=UäŸ:äH^gfîE­ÙÛëÁÿ{,(³¬¢~Åôç8=¯UWëÚ mðsD_ª_¨'š0ýYâ,‘x8HO­aJ˜Ò$¾!~î�¡6yovvv‡¢ò -�WÌ�Ò\Ìp‹Í©rŸZuyÒvµz‡Y¤�ó/fËééÅxnÆ“F¨–LJe9-QOqþ6/ÓYu?¥:ÅÃéÉÖàƒƒÈ€ä°$¯Ìªk†Ç“i²=9‹ÇÌ8�Þ$«Ç Kh¯>ð¶æ~¡˜�Ÿ¿ŒÐ{ÆÅù÷ûr”ÞoDGÐX^Ñ‚hz76àôãt3.â°‡G"*ÀíôÞÝ�‰u'‘ó!�÷¯·á�ËIÞ‰÷d$ïÌn›zwžÆn �³øÓp ŠhÞ—^š>ñÓ‹h<Ÿœ¿ÏÇ— ¼ýTÑ5ªUÖqŠ|eÀ´–Wùö‰˜Ù ‡èÎf¢O€¿Å©øýÃëó¨òâŒÏg/ã?H\0i+fá]!t>Ô´ßÅi¢ò$¾<{Z‰DV®‰·I?D•·’³ãùd Ï¿ýP¯|àS¢óñ¢2…cª =§¬·…’l—ÁÌ­®óá'2®¤Dœü®d±¸ðe¤xÅ›à7�Å´Bk§h§òò"â·€/Ç¿E•-äÐVˆ×Éê O<—ÌKÁäã2¾˜.ØE¸z¶(o‘ë§k™> ý"bÎ$ÏüwÌ>ÊH’¨‹ÕgþËÊ„ÝoðªÈ¼RÓA�³ÖÌÞX�H“9�%Ü4“µ/£98#™DGª�¼ £W A:‰Ó’¢l8mÌ2æ wµ ‡(9 h” FìH”f¼m+§Íys›l¢�³í’ÙB¢R±ÒO�ƒ9ÓÌ‹Îé8÷«¤&òÉ/f)9ß‚î6Æ �µðæ9Qj¾s5�gó8ý|{;ß_�ý<ýüóxND~i2jrØo»­{tßyNɘÎ.¢�k*Só™‹÷¸úƒåT.Ì}ÌŽÏÆsB,­¨'ÂN—•—ã˜fR�ø¤næ;±¿ËÆ»p!ž­jü«;•×Y½‹óÙòbÊ~ð×àxžÌæ$¢*鬢Ri¢WâtQaIK2ƒªšUNãOÀÔ©Œ§S`iÕ1Ö.9iz�Òã§Ôç;4ŸâÓ˜}Â?(Pì¹É)ÒRçÜ“–íÖ·ÒrœL+,‡heƒ®W!©¬žUtwa'$æ&c²* 8`ÑĪ\esa§r˜2$,g——ìpŠÁ"J£¶ÏBGÕÔ•:IúYuãú<žœW&züÐ% oCoÖ=Ù›šÞjK¨z!4Øžl_1 ªÎÇ%Ÿý©w”�ˆ[gd,Gsˆyû,"'5ò³)ÜhN mªÉÄ»d¥C»–¡çe¬öí‰É:LLòL€Õ¡´x z™�UxfŸ]—z±¼:ª n”L¯-弡ý5 ’�T#~Ž Û›gò½IK{ã”áZ¯—yÿš»Ž³—)Â:‘…¥]ŸzÝáþ§çÉ·¾`ž˜eÅy’µ¹¾EÆ[`Bó@,¢c"×IG&¼"›Çmvvô촧 üjTßÕ�)Vÿ­Ä4ÈáµÑFÈ«þÌ�w\›&ÎÍ —îÆ˜üûÚÛãÕìjɎ†;~e=±lûð ¾ÖĽžÝ?ö ]Ãb—ÅTs& IÀ—¦÷ÙË/ö¤)X kSt¿ÐÉuZ³éåt]�¦Y㤠H �ÅI]ßC±GPʺT‘1�ˆ °—ùœZ½¼¢"2ë†C›•Ý„W߬ðH|ËéNÅâšt|ÆÑ«6¶c3½Hf°cuEºˆuŠ4W[ÔÅ(†HÑæ€REl³Ù¼0v3?Ó'9´%þ‚V¤L*¤G3Öb‹ÊÕl±ˆI lˆ+1ŵ)q:» %Êèh}LÚI{rNƒðT[öšãûo“Jå æÆ<ºX¦Za‘ÊK MÃUõéV�åƒ�³c1WÂ×§óÙe~¿1¿�é]\ÔªŒÁ c�!ð®j½C(K’Ì~Ix÷2?ǰ,Õƒ®÷ÒÀþv5#y¸èŸ¸mg·é´º-xzmÇmv�&©ƒÝn‹RNg¯át)Ímt”Ù  ×l8Í• ˜Æ»•ãYûÃd …‡ßç÷‡i™tŸ}qžŒ°?¬^ŽØ¼"›_4Œ§Ó êÏ Oõtp³"nµ:ËÆ‹äråæd òbð4Úf®zù£î‹jñYR»Y¼KT‹k^¢µ®yá ®…Æ\>Sˆ/ëŸúj§Dù(�k#]jq,[)O¹K«ëIïóÜD_“ábru”Û’ > ©)o’eÉWfƒA=†F–>s Ù”“9b²Oã‹ ~ñŒ•Ça§zHø(„Œ 3Çò8f1íÆT"çÁ ž¥Ú¼AdPu�߯«õ~­´âZ›ŽU­ä �ΆBç ŒT•’ˆ]lc9µòVi1öL†Ñùø÷˜YrcÑ‚ÈÒ„œ¬×¥wOζ‰iHÔóGEë\Ö”46^¢FHŸÏ�ˆÊÜ^¯t!R1ƒ,0š¶Óz&Zä·�Rí“c~ÓáWÑ5Õ•F !J¦Dd·¾Á?A>zô@ý"äB~p]½„\/zß·{q4²Êz©ì=èâÂ{"©zöMK5O±4ÿ\ß™/“£eº �æ%g´’™‹›ï›b];Å�¾ÂMr{|qa�Ÿeb+Ê=Ç=—-x0;a°b/ÓUÅÔ`çnYd{”æÞ³©šJ䀪Õ>¯ò.П«}rµÎê¥ ˆ*ïËéÃj�_²š=dà ù`µË““v¢Ö¨¼²Ñ± ‘Àì2 †‰¶fmR~=7T:U¿ïâTë,óRµs]å+•´$ݹ_ñub>‰Ç ¦YyFÖ=2Hs±¿fÂ/;Æ*íf�<ê@Š4ìŠ�Wpº¥Î˜œJüáÑ8\²Íbzž»…ÃÓö ›Ú‹+—4™î1ŠŒhZ•ª“2Û ‰VúÓ Våûz(� ™Q�Pã¹@ Ü¢oôt@‹¥µS¡4eÝ�L‘�)Z]È“©DÂDü®¤õ(XQÝäÏŸ£¯IŽ�JÄ÷| :ÇeIi•ÖpÈý÷Q±ÓøµÆ a]ÅZ. èÍøh:Y]óÍeò'ÉŸ1ù_ÍH|*ŒÄºIÊC³¿ÆÄdu( ‚&ž²9«¶oÄ>xʦn]½/Uné'l*V¹4Ï k²Âb»±fY·îì7�²ü‚)V罟=+_‘|õ#bIþñ±OäˆA-á�°�¤êwñsãZÒ¢Ÿ?�n²VÍ7¸à„ø{¿ZõJݺáfXŠÕñÇÅ삈Píc&e& Ê'éð“g,½²Ì8¿ê¼ÆÕ'•µ²="f<1ÝRß'ï=ãúUý«ê€—úÚ°Æ=Ñê¿ï‰2@‹²4~æe*�ÙÏÌMsêqRµV½ÙÏk)¤µ½”Ô±ªSήTYyU½)ƒbZQQþÃ×ð‡’yΊDZ(ª(qðµÅ2Å_ë;àú±˜Â=ü ¯É˜��÷›¯ßð>ˆú¿³ªÇã3ù‹U³�ךÿçPKÒV1]á‡`"½2Yimunify-security/assets/ui-app/assets/static/shared-dependencies/tabs.min.aa00260496ec.jsUT ëÆ«jëÆ«jux è‡Ô<‹VÛH²¿:¹¬4Ûxìd33׬Ãð0 8Éfr9Þ¶Ô6 ²äHmÿû­ê—Z;@fï9÷dÎ U¿ªëÝÕ%ŸßfœM)‡ð�ºŸ�ßi<žE4ýÙO&“$vˆ I™ý>¡0$¤Q¥Á®~ž&)§Qš 3–ÎYš•h«u[† à Xzó%S~N¦,¥<)ާq¨„I\™ÕOXꇥ]<óÓ$ŠÂx\Á:¢|”¤®a›Ã4¹ôW¬wÅný$`™sAÜÑ,ö±“˽;g–±µŒ§¡Ï�­9Mס$&!IIB|’‘€DdH&ä’ÌÈ” ȘŒÈœÜ�[rEöÈ!¹&}rFöI�ì’.9'Gd‡|!Ç䀜’ò†¼#ßÈGò�|%ÏÈkò–üI>‘÷ä_äÂ9aœPNbNB¾•2>K㻌qà]ÖþlcÉ:¼±º÷þ¸{Ò'´C°'Äà8 f[»{=Rè´¹¦ipÆFƇ)ƒsχñx& ôéÎYÌ»“W…–Ó)NB#|œñ錋Þò/,8MbèÏBvÝ�}:Í€Ä8Û/�âlŸq&09ç l|«zï]†Q@üŽ^zô“+“ @}6Af2‰ê^sXFŽ(¾¦0 €ïf,½=Õ€öüÎ8îìd\G�FL›0Þ3:ŒX@†@¢‰†î%Q’’ËR§³p:�™ipŸã€Ý�)@Žwúƒ³Ã^ï¨;x}tº»s48íõOOÎÉ[)·¹CÆ&g¬Cp„ü ®zB5�ðHÆÜ†‘‹J t {¸°|­›vzB�S­Üu�®¡ÃAâϲ·ìö˜Æt ‚Ї�gß寳ßáE@:ŸÏ† ¾¡� ²+Bκ(‹i2²FÎá-‘#¤+KÇŒì ÷úŸÈƒ+2€Ã+¡9€§]vIça’ªY‹ëŸB‡ŒÓ” ù%9�·„#„ïcFR4òg¤WLÉ;õF¾áèë�û—ÇtJ>âÛU8%ï0Í(.öÇ¥á)õL. Â÷Z<ÝÞoE;�³P�âOx•–©DÅOÐ !ÛM’ˆÑ¸—¢å·ä½i9™M†,Õ Åñÿ*sáƒA¤Qø�õh–�º£’°˜¥R³30;åQŒ#§OA¦A‚ǧûïA¬ûŸzÝb?Šý.) Q8 Y ò¶ ùÜÛÙë‚ C>žô»g‹ Ân˜Ù6ãAÆÕãZÊ]0}ÞÝ‚»Îéðäí`wçlÐ;=?Dºgƒƒ�½þéÙ'‡po˼ùZÂ;66Ê^“¿?KÅß6_,ˆo÷ŵTï9�f¬ÍÉ”¦t’µÙb±eÐÊZ­ ¾±6þgÖ|þëKùÿiš(“å6½…D'à�ÏÎOàO"|àtˆ„FSEC 6À‡^'Öëa,»\",f7¼GÇaŒî€3NS²>Ë솩ša7 n?¦t:s ô £ò �5� d¤ áÈ­Ù%WæÅm’1'MøçÄãM uHëy¾¤—à�âp܇0Õ7ÜõÏBúàØ*¤’ì:~ÑÞ9`½õZGtÈ"o‘#>ÿâ°dó/@›¡S:M!£^Á榀Ͳ%ÇŒïÍRpXÝŸë•Öb›@Û9- ¸„s‡üB~õH±_¤ô(_9Vü¢Wf¥•S–�Ä0±,÷ ``ùŽ!t`�Pø±t� 8(O:b°Ÿ¹-O+k•e™ÜkÚ€Á "¶‡(»b©Øóž'¸.œ�´Èön˜Þ]¹…|¼ ùïá7 1� qŸÀ�ÔrÉ}NœlJ!\ýÍs_(fý÷’Î’¥ÿÐ#ZMÏ}i^ZåAFë~!#NZð¯¤uÏ—Žø•ÌëFij("­KFAˆÕ½ïäM—l ®‡ÿ ᥲ‰A*óÂ•Š”å�¿U…¬ÈÅb›�CCGè:“ÀßnnRÑ:$id€»ÏY B´N§CË{Ë Oà€è'„tB¹—¢pÆã=\MQ„pñð@…�Ø Ÿ< ÁZ\íÒ´Ÿ¨'®B˨P°ºh¸ÆFâ]âCá·9M²0ÎÐ@Ò¿·4Þ3ðñbÌ‘5"�ù¥n~q8HeÖ´ ½U5‹$Z=U'A Ü9¾ rÝߣˆÚ� C8&®[½66¬Ѿ]´Å„“`:,™íX¹«;qzD-í¯°uëÝ!ŸŸÇ„ò�µyd-b#¾)Ù±©[R”è"Ð!¯]97¦ÍÚNœÄÌA�‡ qŠr»YöEàn¶šÍÿ"kMøÏsÈ$Œ¥Ê´�Ö82³pF!¿m;ŠVj^�ƪ‰Ÿ2ï[×ùi­óJ웬‰G±Ž¤¾¨�ò§ëÜUO�‹Åš?†þæ�}ƒ£­Ûl¼x)‘j<‡‡–çÈU‘Üzá2m??”xµ›z:bÌjÙ¾µÿ,f`O·„…[»·rzdk#i>Ó¡è$1éêÝe3°`â5ö¿ 38F$ïPõâk‡q>vz*g$›"FçņE<>�ã ®œ¸‘êæË×k † èÄŒjLÃ)sO]»K˜Éæž2Œ…Fc-=¯‘ɬØ�¹.ZƒÃëºèzI³Ω ‡b%„Q(L¥Í1J}e«vG:lŽd›DÍ^Úõpí¼{ÉêÞß‹¶€‰õq1A¾}ð½ir[  �Õ±1‹ó5«ø›˜6 }‰•4ö#ê×äxÖbtý÷÷×à”ŠÎ!Ð9m™R†V“£>œÛ3–%ÑœUN:Õ‘"G­Ó7pHúÞˆTõŒ{•€¡Ü£ŠšÝB·R˜°¬n2õ ³·SÖ¾æD:�ï>;Q>ã—7ÀMáM.ȈQ ƒ>ÅYãK`ßÇÉ…XÈŽ @ ᙬ§®†®¹VÚ>ljµ©‘rOI‘†H?˵0ùg˜ –�Ƨ�c†ÔU©3[íõt*ƺ›¹�<,–u;Ç\2¶�D1ˆg�µ]ÕÁŠ8\kpÅ6¯šZƒ\Ën_=À¶€®}«‹8z‚“âyºñ»œÜªÕ,I78y³2McÙ4bŠ–°+ ? á�ŒQˆÖ�èm2ãÊdŠã­r†*NÊ#`KÇ€â`[ÀÛNÄSgQ³=•ÅØû{§&ò“ u�´,¾§š ­º½ÔÛ6·KÂ#vKmË ¾­bîvÍàW+«Qj’r7µ£Êvl!-KHÝžÔé\-‹’ðÏNÉ'x„ï€c•Ûµ~tÑ@Ñ5ò÷=×¾ß0[£6“ß¾iØ÷ä‰5~(<èsâ }Ö¾ÓÑbûs~¢w4œ’tms„¯^žÕåK¾ª]=Åk)iç9ƒIDýbeiy»”ø)›h/A OÕC·*zæ¡]È-T¨3Èc�]Š »¾‰tÎòã =5�J~:¡��]Ïþ¿H�?™ÖJ� ¬•Ô�•‚ÒB^‚Ñ9„Ó¢H£]¼ˆ­¿Á3½Ýy©.òÀ­•/è¾bÀŽI%D£„rœ7¦!e©†Èâ&?ÍÀi,€°fðn‘JÎÍyB MæGYû™S˜õ"¤G�Å®ÎEI&ž1N'5Knæj+®x­�ôuºD[AXwuþXÜ\5Iå*ÏÿnDz¨Â)M)Ñf�¥‘‚Hñ' 0×´lžÚ�“¦r®e`ÏIZwQ]¹1³3¸Bºj.øUòô÷bª­Ô ˜} 6ðÜ}A| {î#Wtn¹-’`çjRÔÄg †‡Å~ˆBwÍ/ˆ($�ç¿5ÊÂrÇ“i»¹…þ—‡ çÉŒ)¦C8ù‚ŸÞ  èrÛF‰µ•Àax%×m™ÞÙ+�zÃÈQÄn6‡4 ³6æ„••+•ž¾3k¦,ášYe󯬣!·m:ãÉÖ·M‘Ëm·äºãPjרlZ…l·1�„þæ¥×ާ…ƒÄªºG­ŠwrrA‰œfˆy ŽßÅÈÌZ¢þòõ? ø©ãX¹5•‘»¸Ó,Åüíâo„Ù•xíç$ œ¶óŒ]ûó¡*HRr}±¨ýrfnWöE^+sú;»ƒ½Ó“~÷¤ï<áúzŒöýžöŸ½’ÓT±«ÖJ„ë3{ð™Váà�EQ½eI–=Ë/w ½4™‡K3åÜÏwS jïs2ËX÷FÔ£�a¡Å…WL½˜%z†»íìv�J w˜•îÚ]óNêÝðç<�oæ+Ó؋’ Θ°T‡>šwç�äÝ_žžërŠ~H"Îk%B^áÈ+qé¡�¤è“äd·('ç('ä)™<…ǹ¦#Þ1%`uC Êòâ‰�úæ8ÙÌ‹%E_êµ|‚žg ã`¢˜[br³Ê˜â�€‰e�í²HÂEAì8î'*®É4ȉ9×e�W¬±,A€‡|+ž”Ë‹õC¾�'Ãë:ˆ�èv  øù­.ôXšƒ€Cín2:á]j(ºø|»'[pïÅI¹Ñ¥‘[X5ÇÜÒIb­¥EJ7 ®•T<«™G!7u&�õÖ°[«V ”Ó"ö¨EV?ÄâÂ'¼y¯Ž\çu·�· ÅœŠr&¡6ÅhçÐnª€ íŠB°ŒÈØu°8묞3Ðbã¢0Tƒ=EqyÆ‚X Ù AàYåK&±ÁRüë0à—?Sù—„ù *þl•çÝ1Ì«CIÖ7€)=”š«;‡üÛøñ¹ÏîÂÅôÆ[Ë|‰×xáýy)®6&²DC S³ñ§#è8Þ¢ª]w+yXE P°s«J‹Rf¦4‚S› -ÈݶžÔ«“ÊÎò�v0q»¨_Ö˜ŠÕK®Á]í'þl"nÙõ´U‹HC®¤×�%ƒ«Xñ !ŸÐ «±öÎ*~¯8ÐÙ¥µåM›› Š,Åc†S‹™4âûw…®’æcQ®‡­ç vk{53Eöá\Å®ÓP[6u¼öjSµ|«z�¶o8°Ívç•{'Î||ÛÅï'F Gð~ßôþîLoœ¶Ótˆ0@v—�(ô�PAF ’Tù‚¶}i%¾uÊ:ñ‹ 7¼ÝÛNš$ÃŽäÅkû€/y\¢ð‡"Üþä;ã�jª:™P=1Nó ï@tsb¬ïr†¿áwß¡‹Nÿ)âØå�„´ªd�] q¨÷^лìþþjWmÙÁCéõnÙÑ&ƒ:`’ñf_ˆÇÝPx㬔±{^“±³*ÞDéY^|¼1Ž)?. –T惭¡ÞÂÜhXÛªq®Æ‚íºRçʼnöÎÈÍ7ÛX��…ƒðë³Ó÷½òWAÍI÷C.hßøÄ~}¬À²ê¡\›P2Bƒyéš×<˜sòkLéØ×|9ÒqR³ž.Tƒø€L&è3»dÁܾå}åÕ�³!£üc(¤¦AËâŠÏµN¯c+PÓX9Þý}µÙ�g®¿mÜdJ¶>ä*ô³n“«Q\‘ °Û}í{# i‹EI]_«ÀKø!VõÚ¥ÙâÃUqFÅ";¡!ï‚ÍÙ¥PÐ 'ÈG[í°Ú�Í`|üá Æþäk˜ ?Dú«®aJ ´ïb´2rÙþìèìJ.«Ä|7íöW Ži°;É� 잪Â×)vÁ¯÷Ìwm'vˆ©Žn;æñ &¯Äã“\Aëªt¢ŒÓüšÛ²Å(ÉJÐt,N™¶U%EêˆãmSä ¢^6ˆ…F‘(v7éžešö=ÅùëÜúWíÖ¿.uë½ÊüZ•‰^\Ù*g¼š±us¦Z‹Jºo�ºu)éqò+É*»Øéœ“—Þ_§re Ð*G~dÖ’™¬jqM4± € ˜ú ­Š–Vܰ®H�v‹éѯ�I�’x¬qnpukÛ’·¶ÍÇܪæÃbîÒûÉ&Éð½Òý$Æ_¥›B`ä�¯&zÆ;¸wSù)w{½iŽO¯ed£è¬>®-€*uj]Æó:²R“Èþ ÛQøô¡¼P¡Q,RìŽ tÞç)ÑÒwÜ8ãBƒú<³³Þ¬fb°+óÓ:lÉ!�Ù4²Ë( 3°€CM%ªúÕEEª_.¡0yNtœ(åg³ˆ¥¦^ýt¬žãñŸ`s:¡zÕ?]ÒIuVC_Ö'ëøz·¢v`d¿MëÔÁ�¨¥—•‘™ªIÕÕ¯Ùer�3uO} h�’|—Õ ;X\“½Ð¶+ês,Žðdz®¶¥°dU”ÌjE6ª©$P|–«[¬b[q_¬â |P7Èè”zT14ÞnÉ»·WM<éÛ`Y’óª)&*Y$ñ%„ µ:þ¨¤Ô^2ÃËM›¬òóz£,µ4…j&XH”¾Í¨�‘”ŸÏã$!íýDÍ–Û'5Z{þXÇEÞKA9Ë›‘ÅBÑÍá¯ý$jSV¹cA@ñ³6cçTΫÎS\uqPá{ é(ß²Û ùßö®µ½m#;ï¯�ðl]²Ò¶â £¦Žíµ�8iVÛf�ºDB"‰dAȶ–âß™9s9sHB’ÝòCbÀÜogfÞ÷=@ í¸³›±AªSdh�¼HMÕ0Ã@ÏB4bq°ìÑ{JAâÉz©xή“\»Œl—1åím²~­ ÇÛèWðúÜNŒ~^š@é2Å ´J4¦ ©H\ÊPÇÍ0«²¤™NÞ¥šßc±uãó½Ã_^|ÿôõ¡¸„�ÏŸ~ÿüiWÝ[7Q�Ÿ¡¦«qˆ¢½…S=€:‚å�“�øp9%7…”à•ôÓ~÷_åuš/Y¤é:r|?—Ë�Ü‚˜Ê·¶•Ö–w™ÿ¥5ôšv)mù;ð G¦Â€c¹`øQ¸O¨ÐèR Ux^ÙúæêíQðíEðí)…Oyß^¶ ®2w í «D´íÆÆö@-E©� ZŠÓ‚J4Sê#EáìÕâìæ!âd&í ©¥�ä ¥÷lֻθè™i,ô�|7ËrÓv€i¤ýĪ:ö}�ø?‹b|�Fø×:kbIÇPú=¤€¢ÉçFdu¤2(t$ÿÀ‘«KX¨©F ’ú�’¾¥™bµQTó>á§ ñÃØ¥ޏÂÉ …è}UÄq2d�gtoÛ3ðÀëò˜�(Þ—$¯ö· wÌúø¡Ù<ƒÛ2–¤å\„3ÏI—Ë¡²¨z‹UMð�Ä5Ÿñ;{ÁÝ@±º³Ï²4Çß�Ïžò'Ѩ€4jЦ¸-Eûjmª»`YYc'Œ5xDýEx¾>”ZŽó€ÿ:¸ÈÉ� †,æ>²–<9±Jüî3˜ðPP™'ToÂçÆCjÒø*MŒ™p‘Ñ=´/¿�æ>Os?þ2ÐPÖØòT•}ã]“ücžücÛÈEþˆ|NH¤�P}Ô¿¦ŽJ¼Å\·?ñ1ʻӽZÁ Ûë�ýFÝ‘ E™Øþ¦ffÞ¹ÎÔx·ø¾&ŠëëÜði�]•øÂ¬äs÷-¯„)'“étÆEÍ^“?‘|=“�Õ;ô,‹¾…êeÛâ�j—ŰZåò ¬n-A¯#åü/~B}úé3†RûŠöìBK±'ª“eÉwÙÒ[LNk~Z“³´7H[Ùè׺z0ûØìûùi6ËeäóœX.㬼¢>Šhƒ4hD�¾š}\îY ìØ�$¥~¡$h’±©$Ff‡¤Í7ͪKŠâ�û½‹ywé¨NÔ‡ɇü謨2µ•Ü“ÔXìjÆ\ƒ?.çUq,Å»RÐ&°[˜„mœÅ£‹b’Iÿ!­îÑe9Ÿ–élZ°·BíÁ@d­ÊfÄÎ:9=gÒ§#ê¨2-O޲N�éÞõº6)²6"Ùc¹9š’Pü�²d„y48ÊFg' ó >+I}ÀßJn–�é*íÕT^š&Ó¿' ×BrMZyÁ#¬ òh`&|Â]�¹dD5ÎöúPFy�õöæ’Ø _ò˜Ø§uMnmævjº|uqƒí»¾"›¿š”Àš]ðêO˜ÔãYÃ4ëâæ[��²Ö0 äf¢œ2�ã¤ÿpœŸ¸›¦Aê�jõVÈ"úê¯q¢›Ôkkõ÷È_{Žà0¶¢¤óéy1æ�O;dÖÙ¡ÿõvz>-“Yy/é_üëÀÈC©#6¦šŒ<±v.Øôtšcæ>räè€Ï… »Ž™ƒÄaè›V±œlé1Ssw�ä(Ó¾ZŽRÙP;LØ¿ÆÊrÏc?íØY@‰@ñ}A©ÚO`ñŒ|÷ŽBjaÇo'8§Ð-\o¦•"Å>ñÍíhÒ>éžLkó7–¶Œ’ó!¬¢o¿u4ôŽ+j÷ÂlEKlµõãd'1heKS˜AYI%·÷éTDöŠl1‡U(›WÜ´Ò’ùMýÒ³•· �ÏËìŠÂ˜—‘%ù©HÅíI#ýVÑø •ô|ö⹩£!Ÿw» �ö×jØãá­†�S®ÊáÔDz–Ý8š•¤×•W‘¸){©nÊ~å·Ä š*üÂ·Äø%ÜkŸ«[bü¸E®*¿…#?̇²W™ë1HÁ’ò5S±=&Í�Ádj¶Ï�/þç¿Ç÷ÿôÅ^•SïÄ÷£¨{@þ1�R¦M$„M…×H·À‰xÍÒ7ƒT†.‡xa”öV‰Æ†À¼™”ñš%dQŽj O+2ef2ÿïf"Æk–ˆÄª¬¸äB�NÜúÍÊEKTÜQü;}…Ìà?AYÌ,ýÞ�«{÷r¦Ù·Zl,¨«˜dð:.±åõµ§'™Ð:�y¢xQ l3Ž]KÀ’H%‰Û Ù ‘LNåpÙ(ÃÒ$BÞ�83+ð‰>“x¨Ê*;°Dü,ddGÓ÷Rà.@}v¸þ±¡pHˆéÏÇÊ[1~¬æ J/G/DtT_…RŠÞ1íêãá_«û÷}N‹²{÷2ûñ�ãYªù7r”¿³›ÁÉp˜9�s4!ë)�Lo="ü"ÁO sjËÌGªa­Ú%ß›sŽ�Ih`@µnÎÇÎyv1SÓ¯ý]w ø)†H‚šo üޝ8¬}áîØËHGÂó§ïaÒt0TÐ�3 ì9gYH§�ÔGòÐÃ4— è¿tì*Ò(óÅM™¥RÚ*㺾¹cÛcÅà׆2ne;¾z 3‹\‰qe ,ŒÎ꿾îQ$¬ø˜ž"‚dɺøsX%Ž�ˆ]lúõˆcHaŠšy³ ;Ò D’`ÛÃéwçç²#)Òú@¨ºÍ1!VŸ•Q ª²λ³âp:[Ã\ŸYºrͬÜl@ÚºÃP!ÄÜ­¾É9J{@fÅ.�¦ô-ÑÝváZM“ iÌF›\î’y–þ¼w/8Z´¼H4ïêƒ\uölÅe  Õ=õ�ÏùKŸ?8Ö$Ì93uÓVœWœX^ÙÊzÐÄTÐÙz‡œÙÑø&SºESbx�–èk“ûkvZ·5‡Aa8¸$U¯È8IØ  ´¹|TªðRFñÙa@?•ÆhÙ®2%“¹J7)êë²?ÆÊºvuïÊ2Xê;¤ó±Zìˆå’çyÓWhCŒ6*;"ëç{ä·sè“�D–“¥gòZø›%TÓü!Ãó¦á®òu‘ÍD§Ç:вCÃ�Ö¨>qÊí�¡¨�j,éÇ’W@……ã'Ü*—Ø2žß5gb‹"ŒÊ%ì2––r;¼¸£ðÅàóÕÎyôÛ]J¾»6 n¾`#;ÎK�!�ÁÓÄRbýTO€ÅCªvŠÎÒ›–f°�í“îS1®ôœ–¼¶Ëî/ù�=çw0U›62�8ÈrZnÔy:ï!f/¥ zÇ;ÇØ‘uziÒ_Òb>Óæ* Û!µ †Ì)ÀDšm¥æMT†|uPõË»Uÿ­ªÇEo޼‰�÷xô¥‘ö3ŠƒˆÆXßF§‘þ»©�Bc;—Fƃ(nÄyiàëÐ80I#ã��ÑÔ¶)Fùáa£Å2�Ð\~2ôpÙ™?5ËöSñËG›s˜‰Ô‡—’úPåò@÷%è6ò;b|ð>â ÂŽðšªm°³àŠdbtJ­Pë$X½‚s`ô)¢¬Ë‡^’Áð@îYÌÜ«ƒ%­°å]ßkçöìÐÃ~Ì÷8  z~}­ý\yº«òÏzºkÊÙ¨r7gƒ™+mQ6þ·jÓý%ßymHÚ˜©ïZ§V ¥=*,ìnA49ùËY1ûóÕX,'¶ŸNÞÌŠoðÕªºþ̰h[¼9½D6ƒÉ¹¼2åí�Ô¦˜¼Ï©ïNA¬ˆ#bÔO?–O_’�áùÂn hŠhBÁä¸ÇŒØ?rIvöšº!ˆQR 1ld&BDozÄÏyÓ®!Jü_º(q•¯"J ¤‰/�3ñXQ&Ʀ�dV�ËrÑ©±‹ ÂÑüâz ü#Ð;®}vPÛÊ¿ÊKz BÔ¯ Æ;øqJ =îmXnØ;RÆb¬RUÎè"ê² r„ü®v—P~’Ì3l1=¢‘œUžÌgÙˆ~B—\ö.ÀîtyÊJ¦4Ãâ°A«³Pç°>@øs¥ø¡á/[&YÑ ô™övú;Ü÷±èE¬ßSÇ`[€ è�¶†Q˜ý}†-¥ó­å¬”m]Lèƒüº³?…ÓrE$@ñS¬nMÌv°„Ó…6ìØ•Â€�cAbNIL—“æµLUî‰_¢ÎÏûâ#Ì)Q€J;¢8ð•Q7É8§ܧ€Õ÷&Óªcå¹kÄr?X6`¿²uoù=u-«ó·;-$·‡Ì�ž÷ž‘s7£G/EM&UÒG*2I°I…Gè;0’&øg1ŒØßŽ1ä˜'¼L"Š×NÀ~J™s^�ï…Â"¦ èßd±=–È_Ï\ŠJÀŸ’rcd~8IÖ'Qj‚AÄgh}ª²ýzYU¢Ô®kHÇJÇjG¡à üû#ô{�ƒñ¦©êS8Ší˜Ø M#�©�WŸüU¹arÆlbíR5D.º|²¨¥H,š³ÇÄ—Ç$×Éüb:­Ni/Î&UAº^F,î[q§ó�æ7'evÅÄh=ë´ÉMDÌZæ&"†HZ‰Yºõk!2¹ËU|1�0 UíÞ 4¡³àxâuLƒPëë§ûÏp�ö$¡ÔxZk§Æ… ¢Å5¡lJv3v- ÛLkÍö]¡ukR\c­ d%¸ÜZ9Y¯ßmÐëŒÛ*»qþïÎ 2t%ùWQok­XgŽcˆMã ŽwÐu‹ˆ"0\¼[ˆýqÉ 8ú©Ù>ˆ]ƒÜFÈ-¯s3ÝšúÂúÓ«ÕÅÍ#/Ï1œ/yÕSL:·Q|KXŒŒ6‘ݹ§SÉÕwVNÉéKã.GCžåWGӬןféoKdƒì'Ú-|-¹ÓîÑ;¨æÖÁãEö1QG.¾€nd^Öí&Šé¾fM¨»Šrž¯eÓ©Ú¼êb®Âõ1ŒÎa_›B@š‡.dàŒµ¡�’/}ŸÚ‘y}´³[\Ph6©òkóÍò_Â;�«\Ð!ò|¡Þ"cç9gçTO‡}<ÉM—)[5·É]»“¡è‹€;¡1A3,e� 3ÝEÐÙ‡Ëu7è´6ö»Ž=ÅÿPL€»òb@|Jp5âòÖiú-“ôyÚ»óo*AŸÏ�>_ý–¿å>d»¸Ýt¬^Þ�οŸc¨Ò»~¦¨IAß¿÷ÞAjd¾Yò©´�#ÕD0q ·h¤Ïý2µzšHà@ ®§5ÃŒÄCÅÑeEC{®Î&œ´J¯¹9*7ïüåVý MrIZ¨eüÕtÒƒèFi$þÚœŸ÷:{ì¼I.\Š|xÙ9íœsÍ6êÃŽ¯=¥Z{Šœ­=0`̉UèL€j|‚–:�réS|-Ù´R¦"W„h–ÏÒ1UO¯Ô0ÙF~‘ÿ„:NzUÆkî Óàqq"#ô­b èšùÂHòN”‘m…8ÐsXÄFMˆ¥¢%˜ZgIt?Ë…Î#uL¸XÆbú�Yk–»ïŤêLº”£ïÖ¢´òJSg¸`§¥’OÛ‹ó�¤�ÉŸK®!–'ïüÆ¿+ÌÚ²†kcïþíQºe9´�TÖ�ÿ]LNì8ýÎ3ê XÇÂxe®e ,ñ¨/Ɉ•ÀEµw–_=™Ži¿§.æñïBºŠ=ëÀv+—šYPËX¸®]B8@ý®,²'Ê ¬éûÔˆúÀû‚ôÄ4œ¬¾„1iJ!¡©¼ 3§Q^`69Ç!itœQîÄê9«9Êɸw62’ñ©i×›­ˆlõH¨Íå[ÿ�ÁÈ_«eœ[šêAÓTsì®ÞϨðAªÍ+›e­™ÑÄhnˆÌlË£`oP]UÂaL]d‡{ÏЄqóÆA©Œ~Í úWA�,­åZI_Ò`6)]ÓK¹¦Oóá�U§”[ΑZÉ'ùÚ ü½÷Ùùe¾|S;ànÙøŸ‚«w'�‚®I|*vô¬³ÛïdœòŠ#Aï9åOCš(6§æ€ë±CsE£ih?Ûw„é1IÄ„ªU_­d儊™åp }ï±G)& =ãaøóX|04?`Qñµ—Ñq½ 7£òÑL5Ì¡/©›@~„AüÒHgU#w©_m½¥®ä-•ž˜IzFSg©múF%غFݺFݺFݺFݺF]èú,]£Ú]àÿ½¯RÝÞê•lõJ¶z%[½’­^ÉV¯d«W²Õ+YY¯dëéÜl€­§ó­§ó­§ó­§ó­§ó­§ó­§ó;ðtN�ø7vL®ßT˜Å§)¬íŸ|õ¨�nÊ�x6öèÎï.’ðôÄã bº%Î}]¦üTöºöºix‹9o´ël�û[W€:{]Ü 7ÿŽKõ©5bóÂ5´PÚI°}à ëŠ÷)Pø7o�)~ÃØÅPÑú[©òöÊp×ÔþO|Dß Í? SÇ)¨(Iÿ\¡ø§ù¢†Œ† :²`3Œô¿Ç•«ÏHÅ5dbé”Ù�¯|”e\@°rµ7š^�nXQ�¸u�bYq=¯E\�þïUšb ç~ 4‹³¤ü‰‡oM<(Œ˜ÈFB¼alh?„ u૾â…�œúÇ�ë ]j°©:í�ƒTu^W|ü3í#AIßà›y©×jRÚPŠ]G¾*Ø«‚¨¤oSøöPòɺMð´ø‚'w† ÉP¶`M"h§ŠEèƒ07º’[Ui¼”* ­ÉºëúøÌ'a|æ>À3(xæ'ꊪ}DãÑ““(îu;} ²0y`ê�ñ K!ið÷Ã<ËB«éð,Ϩôù r€fd%ç^rf׃±Ñ™èA”ŒæÁǘ·BüŸ‰¿~s[jüë¤Ú’$ÿ:I· Ëï:”h]œ_%Ò–B¿+Æ6dú�ñ¶ Õ Á~ˆ¸Õ~g&[P˜÷7Ö�ÅÞšˆ áÚ‹¾M9c­¦?¤{ Âþ�Ð-¨ûkå¾Y‰ÿº¤B§Už ÖT[bÿÎo^ñ¿I²·(ûïÎÎ�kÿ7Iöðì8¶–«xðDz†+€F‘Õ�'wøuU§æágî`½ÏvݘyXßG€{qkè(zÔÚÞTðÍ]ˆ±ûñMBÖ\‡ûµ×¾Ôôû `-!ÊÉ�Çû³�Ë»ÈÇEÖQvö¿þzö±»°ãV°ÅÇHH‡ lŒUn„`š:݇#Ô¹<ÞëgúüØKÀÑR3à\nå#ñq¾Ñ!ñØ8$¶òeÛ~Ë‚< :~P+>e£žL“GWìX‰|âSQué?5|�½ÿ™ç.Hφã¿^{‡kèð«GÏ”VëX2Û$¢s�ç‹U;˹»³\LÇÎÎòúäÇéøò\(_�çKוM1ùÃ.2H·_€°2i„Iü.>‹Oâñ/ñ»·Z ç�T³<.»ÝÁ?ýPKÒV1]#+Ð.¤Kimunify-security/assets/ui-app/assets/static/shared-dependencies/amd.min.jsUT ëÆ«jëÆ«jux è‡uTMoÛ0 ½÷W8*PHˆêd‡ ˜=!(Ð6¬—Ã�Q(6�¨�­Lm×ÿ}tlÇÙ†^$JOÔ£IÍÊPç^™š²f4# À-k,ø`kjßÞasчƒóP}ˆ¾Zkì%™îî¼ß»d±Ø*¿ ›87ÕÂÏ=¹ÉØh³YTRÕ‹Âän�¿‹«¢¿ƒ‘vvŠÃžâ1*¿³æ¥g¤@?rrswYø”…¨6>ra¿7ÖCÆÚgi£Z¬Ép‚p¯ìЪL4�,µq¥ªAL¬ÜpÇšÎ[ñÀKAœ·ªÞ!üa¦Œ,×¢\Ù¤Zs‰¦I,/pv‰IUIo¬•‡X¹ãL%cJHD‘‚váb6O�ûéF‰GÖž9ËA¯y$Û£[Ó¹�(™MŽ‹ò™“oõ³Ôªˆr©uäMÔ‰Ô¿‘2”%U¢F"y”'Ÿ�y>É�kÖ„xÜŽÒó„¨5dÂÆ��ÁÁ-”2h¿:jØY‰mQ÷#é.7¢i¹Í zbZ>¼‡R,QÅeª¿@¬¡Þú]ªçó^v)`­3T4ŒÐ)‡B¹¢ aáy‰ɘÊ3Ä È˜î3ÈôPM5ãåÕ…u‘ ‰1wöÀv-J–öêØ´ÏÂø$Ô)5@›ñᆟ+’Ì–-ã�ïÁº$px…÷ }¬ˆI»ôf@vø9»)h~Ï ø¯³<[Øco 5ÊRý6\’'ÀrÏ—X’[Þ”†Iü%cx)bÍqôgÞ•Œ ቅKô4ž\¾žŽÉðó\Óeæ=Ȳ»˜þ&%u®*`Ég•Œú5oEÝÕRÐõ5c˃$BûŸ(æGð0÷¤DuΩ{G»¼ŸLÞÂ?% ¶ÃÏp@ü÷Õ•WqHÇ)ì8¢K”}ßÜ‚ÏE8q\—?Öú9Eø|?>%‹2a±¿Ñ«<øo}�#`Åaì�Ä^~.²t9*—Ë,gþ±h;ÍÞù ÄŠ ñö_‹ö ú{I V¼ §ô×8<s$ŠA ëÖÑdbÓä(Œ§Gßõ‚W ëРp?‘Uq/G4™ÁFH¶Ä„oJÑšV5݃,�Å·eÎEÕ¿ D𻑃JèÂhN×qÖhÑ&^ná–^7œN]g�"„àxdØ@º§µJs<5XòVó„LéΜÑ+côTxž(‰GüQEÞÊ©qMÕ]ÆKê~æ²A�õ]–qA]xžÓÔuù Öµ06vAR* fÄ�’°(:ŸVu¤Ûë0�&4wÈ'ÕwZ÷í‡轩CNUßH ›—¸®MçqÑM³|Á�ñô4\Ð"HéC�1ïLÂ?/—SP'AZ& ¡Õ{zë{\ÒlÖ¡ƒz$*Ö@ì›æ4DÅWC%ꊹ·Ôñº³,Â>9A$WæSúùlæ:¾ãõã™Ë~ìy²u}úŽº=Â<Ð÷ñ${@¹A2rµ/°­] j/\¯ÏqY„�7tDÙ©µ[¬“GLd»ó°pso`µÝRmÝeYÌÝÔó­¾ûÈ$iGFùN ÍH§Î†"Ñk1vs“vbØH˜FFëÀ}†X5�\ ÛUD…õÄÄa û£…ËõP™ø_ˆ³4p]*çSƒî–ºz~-D„ï² p…¤ÓÚ‘‰·…ÂÔæœW!‰•DŠI}%k¬hNV:‡mn²nBÓ[6ÿ±7`“Þ•�B[ÝÑÇÂmÅk/ÏÃGnþܶ³Ð½G QHüö’äk¶×†áÓG$\.áDr*Z`¢œw•š`!ø¢>½ê;¡z Eìæ8gJÊè·L›â´gŽ ÓJ!d&ƒýµv"â\<�V–„nnºÖ»y4FâüEÙòñ¨fŽØ�tEÿZò¹¢jh/s1ÑbéÞÜId§‹ºU‚(ÔX�0ÐI¢µ(Á3ÎkœIE!Kx˜Zúr®µËIx0{©W+T<›£ú€h"5Xñ%N¨.NzÂLª4 ûô4¹ò¤óúä 6SÙ¤5´=Ê¡}Vú‘*fK mp|þ[8>57\pÑ<¬™#вnL X·`"„Bð ^4u©zòÀ…µâ²n@ï³xÚéy¸å~.ìC·Û-Að-÷ú79 ïú|/SØ_$5w“z+Ü!]×yŒà ªöAk—œ ðö. ™ÖÆ“‹o�c.¶o™®ÔìA«»[l?Ï4�8ï¿‚XU­F¥¶ð®8HqÁa€ù0Iµ_�â2âV‚ä'¶§¬*o…¾(²®äj¬0Ì WºhŒ6�J§|TñѶ�`T4§Ìcó<{èàHžmp�ƒ0M38KųÇÎMÆæ  þGOï:µ·» tÀjž/é«õií(�WZkç?;Äï\zê›íŽzn:ê„[“”dWj¡|0a]SøÜ•o·Õ^|ަ®k  ìËÁ�÷®Hˆ3’  ›yD프hö”}+*×$¯Å ©´LjK¥ˆÄjøÆüT[Œ±m¸ŽGô�.ÐF¶ú*¼‡ïžyþä ^¯jþÔVAûîô¿àHãl1ä‹n3cjÀpŒ¿ìÔêùÒ…ýz_§Jíø%Çwæá¢Íóó$Žjchk ‹[‹ SPÁèÛ\�ð.·¥š ¹’ˆªAµŽÉÍ1†:@S÷’ßÞ¶å¯qÜÛæqÏ][Åg™)¸Q[Ò•%)ò˜tM[Ó7!iQ¨!°-8ü[-Ó•1Ãø)‹S®G*´’Úcq <¨5 Õy=q¥ùË}s!�ib†þµÕ±ˆJ@Á(•m)pËO¥è¥Ê(å\'µi:jÂ#8f#h¬§FÖ õu«äÃZ¢´mNФ¯Ã¹ [Œ_t�Q×|Úz— —íÕJ©C)¼TÏP …ž„N³íÝ‚epøZbª¤\.)æVÜùmj.9„c£ô.«­��X{XR`­W„Ù�]´/:%ÐŽ¹ÿZUej-c¦ ½¢sœ®Û‰×—-YÊègƯ Â�‹Ö$Ü”ÎÂ2aüÜT§úŽ¬Ñš€uÎ¥UÇ‚$ÐWv¢9HX½ëYÔÂÇõÖŒA­¥ÖAÖ=báSf˜¯k¢ÍF¥ý´?4Œ¶üWëûålFóFŽÍèÑÐÞ¾ m?Én`°IÏ¿|yþøý‡! 0Tse‹†C޳·EƒðË3¦ýÚýÌ“€ ~ÜdÓGÃå'.Ëñ¾é6§ElìŠf̱ät ~q&º�·\Ð1`8ŸŠ Tp€²y6åqÕ%Ø_•\5/@”¢‘Zæpx2¥ªùi8–O¯‡{‡òñì|||v:’o?�ÎNÏ_�pc·/¥M5ôªÊ50ùÌ¥«Æw,Ô õAÁý’¹ç§AAR¥‚›´ØHMÏÐÆ5ÚHjQJ/`PÏÖAÅwjt�)UO8&P[ ñÔ8†ë¡Œx T³g“OOë™ä‘R_¤R¯CŽä ³¾Ò0��åÐL,xJ(² ý°>ºÚ«ue ÁFìo?<çì�ãÙ÷¯†´rÓ,ì¨Væy-õà3sàÍ65^žžŠÚª#¯}Âì.0&ÿˆÈÉËÑòÏï{½:|Q´ØG�ü¬¶xØ�eh:]Û,×BE .¢r÷¹föL³´–Òþ@�Cw¥Äó¹“,Iðuôfˆ¦Šo“¨A@TòêñéI,R5SñZBEÞý÷1<÷g4íšž7(öÎ]ñ1_TÒÿ¯éª)úNQô×ç(Z““ôˆs™Þ¥p¤EnÜQWMáâ~F±YW@ðDxÆêkQ‘X‹Ž¯ACÌlGÄÎÙXȰÑUœÖ(׳›H|¼LsBhw“P¿S¦Bn§)QÜhãZĪê#X4}[cšj±e¤²c„ÏÝŠ´ìó£1}&†âYy,O°‰Áxj—ë™àz¨H¹ÁX¸\#y]y5Ljr}°wr²¿wÞkmÄù±Õ†P Dõoñ2¢*ý'p]†©ÃÛùEvOÝPZ ‡´N9~jæðUÒQúŸ7‚A�LÞ ?ËUÄŒqjÔa,�/Š9–†Óª  §ê+w£„’›ä 8zÖªâc4ê‘ÖŽ”’É•wåÉ:`�µÈ¨Ê¡Íú`tW%§r’r‹ Fô8•5*‚ŽXI/ËÛa §%Ÿka�·[5“d)—I›[I€T§Ž$½ÍÔ‘ÅÐu ’Á¢’þ[OxHŸ‰áNQÁ¶´³®ñ}÷q½ñ?©'BZ+Š�65ÅJ¼cÜW- »—ßâÜ–Y®û+¡2cJ"Š>)?%5TËœÖwók7Ú—eñã¯ÔšÒõ“#X& rñm¸T§fšE%ÒK�p²äžNåG°�üUí໡;s iÔÒÛkžë¸Vk\;[ÝÚ²™Ìwðd”¬"ZË:ñ!™(:‹ï† Ú±Ú;bvW|Œ*¼•�¦ü °a¾¾@êJÈÍ�Æê¢Å/žf¯VEõj÷#™�e´;L(¾¹Nåñ’FàðæQ�sQÌ„Ê ƒ�Ý~Sh&ÅU€9E‘^ë´tãÿÏçö*éÞÇâ‹W^‹ž‚g·¹i¾I%q0ÿ¿^®¶§m$¿_Ö©r7@‹zÔŠ¢4\�T”J=U¹ž›,àBìÈvZ(ø¿ßÎ̾{MáhO:õ‚×^ïŽggžyM/çfGís׊r ­0ò;†FW XADYã>6K¹SNÕ¤ÏÅE˜+�Áb ¡!jŒ(ºÀÄS “;. ¼KNcOB BA²ˆ°{ƒ}H”1nÎà·Y›sü l”f_¹4Z“éaÞ6ýùÈÁè-ä…éuœÜc�r×*ãV1×ä¦T¯òú:�ê‰Êk�Ï-WZÂSiHEÚîÈ ®”9|œùáÂjÁÖoNǯÅ�›2N_€É�=TÿÌÛôÏŠµ( á£•Í\+›¹£l”B¸´à¤�¨±–¨ý2äK×ZzÑ(‘ص‚Ü“ ÛΙ·Kæ�â)TÅj Xþlvšð—K¾;3æôðï±lû¿Fï/õ§X6ô>ÑÒÐèA´dÒ£qÊ�¯ ðÂOá«óBô®à4öiËØ«-“ðé³—\L­o9µEz>…òÅòAF‚ÿ²ݸ’Œ0°u'¥“–2KwÀ¸†óÞ!gUÎ%@¨¬HGYAR•c^skµhfønv"¿‰ ˜¸ãQØðÂúå¦Ém> Iìà$)7–£Ñ=¬óN´îLmÚ3ázõä‰o9ÖŒŠÞSË+£Þb^wŠlí j¬pQÕçr½.ÊNk8 í/*!Ý­#ˆ¹ IäŠå +ñ¥HqÑô\^ÚYGPxÆ�I󜫨 „DRn2R¤ºÖ·þÚÙøÛ ¢ìl,zzù[ßÚgä 6¯‡N(¦Cy>aÁ‡â.rDZãµVÉ:…ǃHnÌ뾼Žâä½Ñ>é~4ŸÊ…§.N¸ÆžÑ—x¶¹Í Ÿ¡‹QîèÏÜ7¾8L¡ÿ¤Bsx0‹gÒ7 ŸxgÂC™�‡Rãç†Y‡Š•Å1ÓVñlwÏ=eèþàIŒEd³¾áù› Â*×íŒãÄ_Ü ò€f±ò×bòJÙ•×w:‹îEC�Þt/êÃg­!›U ED}}·,öc,É&··ÚrÎ��J…o­ô[wÕâ;µø–¥Ë@X+—Õ8h+�¬Њ[ýøÂk_õèG½+ÝsP¹½B­lÔC?ÿøÿNÔ}gò$>jÄb{XÈøž ¯�pΊåÚÙ§r±L-–ù+‰Õ2¸Xñ.[å‰.Z­ˆ”[]í˜zæ…VtùªjÇÀ$Ž6ãb¡ï�¥ÊŽ=W…�w…Ñ¿î|vþA.ê3ÄçþX$ЧB ó;6í½Aï«åƒ¦Þq“p^ÒxŸº?u~ð8qרŸoÄëëÉѦ�Ñäú¿AÖEd½è}P(íÑHu¡‘ꢉTÁõÄ_¦ÿBáÔkå)þðîxï“h~ÈÏgŽàÒÓ“ÉÁè(ˆ¾Ù7'“ƒýѧ£Áá(PÝØæûÙNPä9ÿާF'¶ÏŒó×W˜ï©9ã™=#$ÌŒŽï7ãW¦ª0O˜êªÍì°šstUxw�(ÛæªáϪ´)¥+Œ+² jJ”B“�¸”M‡ÊŠÚ RU Wtz_oú›©iâ 2ì!¿ÇCö˜Àå'±õf•`§1˜6}Åz¸’”W]Ö:» 3*Óĺ]w¥oUA³Úg§e›æ>üà“pÕv†-¶tÚrý{ôy¹ÒçåªÍÈ13Ò%|p؆Æ?ex …º˜fØiü &�Y—PÕU ÖuEÜÙØŠ3PâHÇ'íêø çëžæ§(ç—ÎtSŠcd_M«%§"9&4òŽ1>—GyzÀe@ggø‹ü£Ÿåþ¿~�¡æž¡Ã=P‹sÁtÐí­å©±‚‹4ãè%ÒïM wÌ÷…A»*³µÆÛQÂtïË/VoÔ„ÕmmSæ�Ùòtdô<Õw\wX'80–০žÞ’"¼•n´Õsv§˜sLˆì=ÆqoÁRÐJ¬Yœdö_Å"%ó�ÙY2»¶n„‚¥æeº}¸*«|Ñh|ŠÕK-cô Ûܢ܋t«ÙK™Ì ²ÒÉÓä뛼#ôƤãü&üÔáSeP-E%~�#¥jÇ£?ÿÌ0ò§½#3Hü޹íh›„4{ÑZM_ó&£)&<2xmjDÆ�ù©ÒÚ‡Ÿ ’EøGUë<ÝZFWÆ@6™èü"^úÍlè °CÞ[5ï=3îLÛmáôšß4ˆäò�A"ë8mY{ßoÌc2Jôqnœö•Eéó¶#}i“™ä÷€Ý�¼[›§% 2%�2Ñ{gÀ"-‰>ÂÝ<•Rs _uãg[Ûl¿|þbûeT ê°ì½ [à¿Y7èÝ\!™e˜@ž ¥:�t†è 5‘©V IeTòà '#Ñr$Úã‰ÆZ!MÕy�fS'Ê�$¾ ÔHºw*×N-*srb“FNlâñh'†Ÿ?fEmŸPäh$êZå`ô' CT>Ú±ïYX5ÖQù<ëî:*Q®ÜUäˆmà åûÞêgvS7xH¶È3 @Á”¥ æ˜wYNãB¡¦ÔæßþPKÒV1]Ö†´$k…bimunify-security/assets/ui-app/assets/static/shared-dependencies/material-core.min.f38751e883b7.jsUT ëÆ«jëÆ«jux 致; [Û¸²üõæ³á&t熺\Ò–]^hw»,—5±H´8rjÉÐlÈ¿3zù‘„Òî¹û¶4’fFó”ÆgS!é8Ìé�ÁCî_xÿóa‘ÆùóA–S�TÞ“Ûçq§3m¶]³„5Új¯Ùxœñæ IË›,7ÛÍLÁçŸÿæÏólBóXf¹¨ÂÛ96¯óì^ÐüyÌÙ8–0Z4§½¥ÓA–Pá]ÿ¦àòe0ó AׄÌÙ@zÛwq¾F #œ“Œäd@R’� ‘1)È�Ü�+rMîÈg2%}²GNÉ=¹%û¤GÉ99ÞΩ,r>T/E÷¢º�døZá•0xÞçQÕyžÝRN841ÕDD$‰ �†‡YR¤�'§ÄŽ"1@÷vúWû{®9¾Và{,Ç™ï¨ê˜8[/O2N9>`ô¾ÏñDpfì»è•§3 ì¦Ã)É`¡þŒë�…ØRωóôF,MHP»Gû‡»çûÇGW‡Ç{ï±ó�'}2ˆ�’ßai’âT)Ãd§ôfNªÌI€ä r@¼‰oéaÛ’d÷üMž�Ï9¥ü”Æ ¬>r0çY1 ç² TŸy #^ƒ„jfÖû€„þé \o.`ÈÞqïýaÿèœ ³›H1ÄxÙ,WÐ{bD‘\ÃËçTÈ>¿cyÆ‘^r³|†.0qÊþ¦'±°C¨uœæz‡™âð!•Šåçq�õÅú t„V’=×ò:ËRó“µENÉ©ë9*Æ×4·õïꬸVbu ÏÇ× Jw(Ju¸}èSüþ•ÉQ½«·jûë`‡(GçýSrŽkžìöúäžF±¾²Fó_èt~Ièg:($íºÁ°Uþ ¦¿ÚÛ=ï_Á³Û;?>ýØ}F®YÁåÛ<+&ñ5MÅk ›A5SËY$ífìÆgaJùPŽ‚YJå�h(³Ý<�§~ÚÇ*oqÔÞ†¹|„£ðL_Ê�Î6ÝØø½ ‡¸f«U>GQ$.âËV+ÞØ0æ`-ž›‡öœàæj¼@d³4=É[‚%á Où’f¬ÜÆ÷ úŠmpÛvËQ8Ž?ûm"7ù ìŠlNÆì3ã½,ÍòÚÔÁÌ€ R�À5úÄ/krx­ Üw rÄDx¥çÂuÃF@T‘òáAÁ$ô&.R©VÛ¦ëQTÙjùµ7ýB�yŒ¦ÊHs¨ÐB­—4Îî¨ÿ'XôÍg³*.„~ÅDq’ØY(Ž­LÑ`®ˆÉ‹x? C O &ú™,ÐQÝfÆÏç†Õ{L Îœ²É$­H®|”áIuP“ñµNµup4`‹€Ñt<…¨Æ°õN“”¤û»~ïçy–ŸÉX>‰®b’d9Æ·ò"µXP×C¨”IœÃ–½Û¨tØHU¥f},ˆþ`Ds jv¨ßìG·Š|ØË¸…Û©¿Â6ª¿]^¤©R}&*¨sP˜m�mÅ¸Ä š�_´û„‰�~ð$þWfªð~Ÿƒ9P"y ³Ÿ²ÏLT&…µLó¦`|¦_ rîAD—º�Uà9½_»õ}½š-™N³óŠg’ÝLË©ãîªUÂI!F(£À¦«qœßV¦óƒe‹,§£½’Ž v?ŒüåÈ«€R0_F „ zk ºÔ1( ¶ÛµóøzŸ'ôsÍÔFíGu_š1 µ7Z™ìlv - 2n”Ó~Û¢�_�äΩã¾Ñ ‹Ý“¬‚›Ž’esh‹˜0NEÃkE˜Y™50ú0aêïBA(,?}ߟi÷Û•óäJHŸ’?ŸÍØ|sk3…yÿ$ëpÄeó‹åÍc@ŒUº¶Àû‚Oz�v*pà>æ¬ ¼yõ¢ÕZ5M[ æ<ØÖFk7ºð¾óÈÅ’¶™)Ï IąLJ›h;b•{———äLCVàÈZˆˆ)ð.·-ãÖþÒ^œ{§VF„í­Ÿ~пƻ�WÓN-’l Ûàö:ûì‘�æ–, l}4J,Ú9%¸Ûõ¾‰‰}Ï œ¢mŸßSf Û 1� �žZ» ož�UŽ”“BÊOÿ_¤T<¨#è/Åð c\DSLbHCÿWS8tš­fpŸƒ ûfJâä.æº8;BïØ|’A¢A;¾ç#�*â S y‰à^è5?DF`ÙÅõ’€d^’7Q¥Q5mKß3)�GÐÒSßëün…�ï½T@™­¿g( l íÍÙùîÑÞîéÞUïýé‡~ä Šk6ؼ¦Côî·ÃïI;lÃÿ[¤xóêÀ½~¯Ð?Õ9ÂòÁ핃w{_¬Wî, ={·{zòlT£æÀ�]{„Ð+ò;*<ò·eÃûzLJ'ýß"ïÅO?ŒE}E•ãì½�¼­­ÅÎßöÏU_ç¿U_mѽ"·çï­úä>0åîÁÕäYç¯zïú½_Îôž1_íªˆÁ;NµFÁø¨ÅKh²Ï»^žeÒ#71Zþi5­Òžg½ ÏÒù®T˜œIû½DO­`ýÃU’ ýˆ™Hçö ß›f×qj€1ê¯bˆ4§¯³dúŽ G*‹…„Ô�ö„èáâTøÁêYüGVÃ}¥ˆß}®T¿Œ›Ö¯ýôݻֲþa:¡ÙÍÚ"];‹MÝõõÅÆ yÔ6Vk*ð8Z·Á>ùà™Þ ›£O|ü$lrDŸÄdyÓ˜í’é)Ð{-â5Î’†!ÇnÉž2ù3äH÷Ý|Q0õÒÁúÔ ¤dÆÆ“,—¢{1&ãËyÕæþþ´(Y‘ý$ÕÄ'YÈy’¯Nwm£NŲz¨ã‘wVå^•«78][hDÓž¡Z9V<+iä~ X+v¼­é›¥/ÍqjÓ „ßk:êK€çÀÕ$'{à)Žó#ˆ +[ ã{�}û°ªr720Ù4j 4ìH•Í*h®Cîª4CWä²ÿ'ÍfòŠ;Õà¦(¤ÝŽjðäs‘${Ï1ò†œ—«�e¨!@öGc°¾Y{§�ÁAÃFUÝPÑ“—ê�Æñ¸²0žÅ´ZTŸ™ä´¤×f�¶¥r0Ójñ�us€P'¦Ë¢ˆÛ“"A  ò1žØ~´Â¦Ó~4gxÙÞ¡]¶´“¯Ú; âm|lÛMâ Äyk…þךп9>…纇Á¼~O9c) < ¿DÏÿ÷�döý|~·Ì¯¿Ó=WÝÊ/4þþ‘l;ðôûü`ËÆÃfP ‚�`çÙóR_~Ó¼Öè±HÉÉÀ�Çñ¨½Í_Êm¾±° ~AÂ^9ÓêõÉÙ›·MÇf­„±… ïåàM–ï11Iã):-V¥u^Ê™?”“7 ª]AXA«�èFÕo¤¬Ö­ÚLïôøæWJoA¦•ù�@$Eõ<÷ ÂÄ4Ä©ÎÙ˜¾Q›åWŒÌÆ8´ zýx.ѼxsǸßüÎÁ|_+¢ÞoÈ•pr…âV»ó‘1Á?–�Jó> “$žv=ÁCÎÞ#ø¼èŸ6ð‘ |Ú„nT02üû6ÝÃHÄí1ýôeµ‰,QBÑ@l¾™) |—˜h9}ÃrQ&'Kmì<*ÆÐ%öù‚¬Ö,¡>,Í)¼`þßÑü&Íîý†Ý%M3»Ñ!m< Káz0¤Ù¤d WGfn kî´Ž?Ž�‚´Là-#|.³õ¥¹ì좨9dï5Ã2,Ü)q º•7ü Íø Ð>ÒI¤ö ë gÈQžÝ¯©SEß;R‡Ô Ü]ëÅœgrMO³f|äÛгƙ=MX Þ¡O†"'IÆñ$Îq Å¢S­@(¾"Hgë;Zëzêþ𛥆’†3®“à@Y°ùþâðà¿:[�-üAÿ×`ÚØ@H0aUrQk9õ­Ô6iôAp÷Eö¯Û�Ri.”®¼?ï•~ÆDJ[ 2éÛ~#þ`y–÷k/\†eŒûÞ¦4ƒ<�a¯Äù°¢F´ƒJˆR¿„’ ‰[4Ó7d½QVõ0ȧsèh[Ç`¾Q:NƒzèFÀIér©g6Õcâ(>ª›w.X Å´ñ1ãbÌ5w¤•ÖFTܾ&ªñ]V€2µ‰ú-‘Û‹�ïµÛÞ† B‘2 ps °¨Ú‘ªÖW×d8}U h=ö ´jiV€ ›¡9Õ¥í Æ IÝë’Još2aÛðÜ’¯Ï‚?­È‚_¯LjïÜûòì3°G2TÌû ÁÅ:‹î'—œ}*‘ÅŒU.1Îùd-ð¿mx|´{¾ÿ¡ßˆ’gÊ'tg‰’ÛIaÒ'’èP²ÚÑôè:+ßkQÑ\wãæª›íU£ÅÒo€Æev;�é£ÀàŽ‡«×yÚð¹:"Wöϳ¯€ŸÿÉÅÏßxDa²t,˱ÏÝ·‚~uòÔý4¿\�{0ð³%Uʯ¦UÊB¬”ÿAjEjÁ\´ûïù%qg6?[Êc¹H<`¨§rV»­øÀõu̇¥Íðñ¶4LX.§�­R¼üQõCIðõæ‚.çàWè<•Né©\Ðú³QvÌ÷Û…ûc�PG>û:ò%(Ñä?Àö�ÀJ° ÈÂÉ•aÉ>0ÇþõJÀ—S²”WÀf´€K¢o¡2”ç Ïܲá�<ªë8Ýt`[.É(rWJЩ€×'…tÜ+ËGd6'Êèˆ^…;†Ä_Ï�øY…ø[­‚Sùwä]Eé‘ «î±#+“‹7„Gë{F™C8LsšÛC;sVVÈð6t×®8—»N§¶Ìäò£b8ê ñJIEôb~'ô¸�~sÁÐtØBèÔ´è†Szã‘LZÏ�Ëè3D]p×]o“øö"ÇGçÃré),Å2<}üzOìA2Ð9Äì|ó$ED¯\^¯©Ê %5ÆPh`û‚W àûXéC}EE Í}±Àh¹Õb%(�^Ñp¤–S+cЭïª!71h”Åc{@\Á�ª¸\T¯'±’h¹£k¥xÐ+"n@ø<]ðKXˆ¦‚®Õ&D(}ììñ/.ê#./U ˜öJ€�ÙÕ¹@6Òl/ŽpQE‘-†ôé#œ&¹.Ñåa5ºËP}‘óŠêu[9·mÙÃ-O„ºÆÁ²cÖ‡…|¡€„¤Õâ¶�êvnÚýÚ22:G˜Æ±N›üm�»ÅM%†œ¦þBKvy;©t âNŠ·ÂöÚ°»µõ¡Ÿ™t �@ÆIò˜�‰Ä{a[r æSºÒZ0­#×[LÐÈâSJã;jA'íã3³Ô»4J5®ÛEͨØÇCP”�œ/±0ea –¿º®ªˆÝµ£-þ¶6㊉Èh‘@EYæ+G¢Ù×Ôä‰ð~¢6Aœš"x]%Å!o}­ Ë+5Œ¦˜Ã¸‰¨²(;µÏ­5R•0³ySÝØS0ÆËÚl-[sÑ×Y¡Š•z)SÕŽ©*UñÀ'•~Yèìë|›…%TE" ¯)½‘<¼g‰=ß"�¦ƒ[›@ˈ²áH>ß²¶2ŽX˜Ç +ÄÃC³nÖ’ãªNÕC|-|¹ÉÔ©5å8w€x.¡›Xe;©ŒÀ–ëLÊl\ž÷¨Nñ)—>ÿŽoˆïÀÌ+lx€…雚0’GtSD ³5� iä´Qgù†©X,rçÛi£PTE ¹ÚÉMãϼ€¤à’¦)UËEÙf¼áM>{®VŽòf£æl´õ]£]íAÙ¬‹¶Xhke-Øu<¸ÅòžèªSQ¢"ó˜ëÒaKkôç³Ù`>’rO°äMUìû©Ýñ$ºg¥ ?( F=ÄL¢¤²�+,Õš¯Ç‘ÇAE=0‘“‡¯-ði¤žÈš{ÓT±¡ÕÒ/šW¤Pê™é3M’‚-ãUèU ï <ì|‘ø²†ÿ)LÈÐ&,œà7hl¥«C,:ƒ%õ kT!]õZÀT® Uñœ•ºñÃÃú ÕZYªØR«žÚ­ôjÖ­â‹9qeœ‰‘^ðÜqÍ/ÐÃ*¡`³©1"ˆ×¢_ôJ¦+«+Qƒ22Œf/—ïó¤+Iµ¥§`»KA–ÙNåì 2 Èú¸ÕXv¬¦®˜7Â4u†¨jôôv™J=ýR÷Ìø±ŒQ?4¦ÎÌIUV­}T#Xm•zØÙ$09�¼¶ªsS´EÖå“bUŒÍ–‰Ç ~ÈÀrc7M]| :·[å±”ñ^/….ªã�@�”?u²™ã]UC*K`T{\LÎÁpƒ‹ÖN±zaÕÇ8ªî~«N]Wü/Í$z�Õ!Q}WzZž~"ëŒe=ˆ«‘oE9 ú� ãêAó¬ë(ñØÜTý`-ˆéËŸj$´ª¾@ÒÕ‚®Ü6ÆÆެ•Q†³O_0)£–qkÑ è¸ b?µ±Á±ÑT+ÅwÖ.uÕÖH©¯¯´øÔ`»%·iPݾR«‡—ß—DVšVZp2+¥¹Ëæ‘òm«ÐÂÔÌ’ ±.ý –h,1†:©ØÙQ~c@™,µ¥�@¸í¯G†8# ú2éN§V»73—M¨M´©¡Ö¾.ÍRšžŒeÝyà¬OœÀ9¡pÑÝ‹óàVÔõÐmÄÙiïó l“¥ ªÕ[-u?˳{?x¹jã_íöv5Åu¼gm<ˆËÃs»ÓÈ+Ìgõ�‚HäúoÄ>}$KÐI[ è«�òÚx9F‹ŒÔÛJš¢’ðåéP»âXuq~¢¦ cØšo^Ró}ܶܨé¥òÒ‘\yyŒêù¼ngKÐt½"—û’‡³$vª1†s{0ݘq,Š+ñШ�Ý^_â"•[«{IØÀEL쟪R oòlì/Sü[:Åû³ùrGXÿRªaâ·Ñ‹V]"�^-xÄú±zBå¿lþ[­Q}êåzM�WQ'•37}4瑱;x+¤½3;Ý?99è_½=8~½{pu|‚eÜõÚ2“r UI¯ù~B”5èÃo-5†eìÔ,µ§ ‹�Ðþ�-+Vµ5kfsš¨˜f®ú>QÌc¦(¿åÑ OÄbÉÙ îèÒ-ìfsQ-ÛÏ×t¶µ›ŒpJ·âó1½Sæ»å|élnzòš@¨œnlr:”GÌùðX}è¶üs¯òÓ®ÇÉÇYö´Ï.Oˆkk¯7—Eâ��Uˆ/Þ+Ç6À•ØT�¢“�™=¯Ña¤}#zsº•�"êÀ€á#q»ÚÅ4iÉæ”¹fPÞÿ5w彉cIüÿý‰µ«1jBk+e’ôL´“cÓ‡´;BŒ!†¸8 &ÝÂwßWõîËÀÐZ�Ôê»Þ]¯\×ûùª,O$P‚Ð34î86‹-Ý­ØZ%d¹ysÒ‹\26qõÉE¸R&è̽ÓïÄ;šçäëÕ APÏ;Ë}­6©*lÈo«ë²�€ŽmÝÆjœÁé(zP&í:R̼̣¹Å¢ªŒƒ¿7:ꪀoî0R}äjT™ÙwœUpöáü[1¯@£¸­V]ÓIäåÞˆ¢Å4�X¯Ì xMÍ€N„\ŒëH§4x$$E˜Ç±‚tŽ‚è�Ømà�ÀU&ÏǤ�1á¹I¯÷8#/ÓÙsL1£º>[ÃfDÎàeÉ€Â\‘�uÔj„üÚ‰A¶Í»²�ð°)¬)Ø�³äQÛ1 ÕþU§&v¢v ª ÜËÏ ã°KÖàlØ%¨†á-ía$­¼ i®/ó°þãØñf€Ê©ªˆD½f“bü¼¦P’w˜„L¿©§W(Y3�z°¦�à ‘ =žƒJNöL}¢a käë&}£DL7¶·Æ’›À`·:ÌY´�‘æ\Ÿû²˜t_ÌÍFjñ“§%;ՙܣ9Ÿ¦�ÙˆK¢Ø±+j°€*îPÕoå�OxGèèvŸ“a9X̗墂‰§†Û¯ðÆ�Uãîž§Pä¹/ .7颯KMÏÎYr[«yøÎWv¯Y#‘–’� *;µµç÷ 6·ÖгmÀï!§a[²Ð“v_Ú‘üö×{ÒQl fÀ–WÁVjµxÏD·U ¿J¥ðÁ:#�ÃÌËÅl |¡ÅüÓ<Ÿá‰O€Luð/¾E {DBs¿ an$t ÂR@T˜¢¿šœƒg¬Ï,Éï¯j¢è ËX^+Ѷuav=v|ÆpR<ø¶û<Ù…ŽàåEûÙÔ ÑzÈžÍ?îçbò.ˆ¶3È*¯xMµuu8céF$]„ÑUæ)g`g°%~â‰âAO#}Ì“ ò·z—‰]µŽ'7�æU/¤½Þ£àÕWagX,FóªyG¼Z ,…SL{cò ½‹O¼ ¡ÔšiÒÙ‰ÇÆñ¹Š£Â:A£Ä}‚ŽU{¿%@åØÄˆ„+9S-ߌ77ö}9C#ì0qØjRTÆàiÞgƒÂx[©Gö:}ŸÖñÅ îIM?“uæçiÀµ;,†c`¤8=õ䘪KS�0[.²è’‰Ùä\¶é\bÅÓÌ_µ˜*“�×WMÆŠGË 6¬µêÑ\ÝæÏ<÷¯‚”©Óò2‹/!KþüøòrMH Æù\d¨³eÌö‹ª&ÑÅaΨsӯܴK#ÉÀâ üÍ%®�0üùÆ SÏ-û-–böq DpIÐ V默'XêHÓÑ x¢èWЉR`3mLFNšXª´Ú·3T…˜rä¦*ÏlA$Е½rìmWÆ�V‹ÍìŸÞJ¾³-IÙ„R!b^³”¥j£Û&jçNƒ�Ü0Usþ¯E®"wÖí êðJ€êR÷‡N÷_ !ÌIìÔ{Ë÷1.³;Z œB s*å�ªæ ¥È€„éþ„xþ ¢‚˜ð`l9 ú?BÊXÓž¶Z´Ò½Fäõ]méTú€.œg•¹£ŽÿÜÚÏvú�“]NMɰ6ïeƒl–3¯«oSWÔ©ÛUPì`ÅÅ�ì¡áÖ ¹šÅ E¿êüTN‹dòÁ¸<ʧ{$¢Oì¯Àõ@ß#�þÑYÔ|Û¬<~è÷�áM(l?‚ô«¡Œ‹P âÔáUsùÑ¢M!žFôe‰ù+ ¨øµME_è@C¯›¹]_ÍÍÙÚSìòµ½g¾¶wÔ×öZñµá´&ÚàâtΩå�¹> «•ä ˆ§t¢`:ºnâ�‹˜;K÷Ú¸/¬%‘táî�št S(ôN+�Íîâ§b¾ÈÆãgQ§JèlLÏ^³÷µ|Èï£ ¡-jAaÏiUvJ–¯v›ÖÔ¹V ªÛiF·l—2†k–wqÐ~¶]�´¦°}!]l{Pó[5nUF=uú¶…£7ªsêvlG°êÖõõúutPìž^[žbQîMô «pBwêU]#Jî¯?•_7þš÷Š*^ÌÁG‰‹‡^ÛÔºOÊßãrþ-¦nÏIYM‹44šeÏx"]ÔedSL)'Êë�™äÅKTÙ#‘"£û1tÌ•?’:‚ ª¶%äk õ&a£Èú ‚Q`ƒ‚Q‚j�óÀZ;åñŒ„þ{'<4}üIš¬BŸ¾±4óéì1c-1¾æÈøŸyŽQÃ=R½%s@M§Ò§—Ù Kôý¿¾K氹ܬŸ“úÀƒ§K¼jÑ+co|Ÿ®±§nýz“Å´º¹éä-mɸnHžüÀ”  ˜b) †ë«27Œùz·ùÍ[�‰7­äö=›úh–Ùç5k¨íôCHͪ‰áíR·Cжm)B›€ašó²çχ¤ùjê»NËÿõK@¥µ54ëÛåisr¸î±yò—féíÆ°¦V5¼«´ÓrwÑ2†0…¯ÅóùxEÞ �Ö¼Á¦«—{vp3ý3Æ`µéÅ|ɺuªo +Ñ4L0Ã@oBÅ>�ÃÞff3k$½g¯òTM% Ý^T`‚×­¿¥ 3ÉÁ+0lþÆ„¨‘Úé©-#±�fK#…ž‡ ·Ô‰üÿŒ].bêÝÂVÆo Iúø=^e"·Ìue¥èTø~/·Ïq½Ü)Çõrç×a £Ÿ£~Õ5Æs\/E:äÇêh©€ôE×€Â‡Ó nê ¥86¨˜ }'Õ‘z¼ù„‘SåÞAôÁI„ÓO³ éÏ•›Bœëûâ|.\%l©nÜØšâ»aÓp-Kö‰s Iè:d6 gn2z˜Ú¤â<:œuRKÜÀ°Çï1hÁi8_#–±‰6½p0#à'Àv¨'Â]¨Ðô?¼ü…Ö ØŠÁc ÆåÀóûõ¯Ë“jÕýM ¥Xun£±Ò:ê ­Û#½¸®úTûP‚ŒÁE)h�oÓ±)p†œE*Î÷ðk4N©êä*™¯uˆ™v)XÙ#ò¼4Œ!2.\ñ'U ðÞ 7Â7X Š|ŸÍ%Í"å>�ÊdLb€WÑ ¿¢Íäê™r�â R@\" iQZ:£XH`Aª|Pal^œŒwä¨U¤Åq!Ï^æI~ììPÂq>Ôâ›tÛ¾¾Zc;ºÐ2<Ü’VMŒ9rÏ~Hs&™g¹q,ðR}P>Gt6ìÒ‡àˆßÈÔ‡("`ÞªßvÑÀïX|D ‰i‚Ã/u޽O’§’¼Ô[.¹vì¸ÇÈ•ïÚØÓ¦ ™ ¾<28û >F&¹Àxú…£SeU• îÅ.šÂ7+Œ{¸³LN9©4�‰�@ºZƒ¥¥1IŽfMÖh• $­íã·7;#§ßHäô›M�Ó/¹ õ|v>ø—ÿPKÒV1]®`} ±0Yimunify-security/assets/ui-app/assets/static/shared-dependencies/card.min.184ca3e28bfb.jsUT ëÆ«jëÆ«jux è‡Í[{�ÛÆÿ¿Ÿ‚PGlÉ«t½s] js9çq@.)zF@9VäJ¢ÍW—K="+Ÿ½³/j—/‰–SÔ6î¨Ý™Ù™ßLÖˆXÈÁqü Á´ É>Ǹso¦3¡)½zHÞc>ð.ý€O©C¯îÓ8Kœ°çŸB¼ù:ñQ–ƒŒ�ͯ@)üSÁúD è¶Ü9J<ü˜±ñ±¬`CoCÂèמX>¦Aუ+D¦|m0¼iÖ‡ÙGD ‚go±_Pì•”@˜&9µ‚élð'À)œÎf³ çúˆ. iÄàÓ†òb~È+´Î 6Qrs÷0õ®yøIg€)S\£eÓC}X.w²<Å(Ššøâî¥qqc´ìdü‘fE·Q'ßÏGÆg‡;+™V]åX5Ô�_‹ÿ™™¤ÏŽ6¢ˆŸ êÒE’V÷Í3(23}¢Q=ˆÏJ˜ùgVsM•“ûä4{ܲ°pÍi~å¨*?ú4»òW•]8ŠÄœ”òŒÒýŒÖˆ"R÷òÝqœýÿWrcbˆ¸YÅÍ|aÁsMŸÿmX2Eó)ïÞ½ÜßýûíËý�?|óðíÀIðÆBõqÛžøÊs+Õ�>M «¢tæW(Ë0"(ñ¡ÞÿSûôñ〠0ÇÁà�S¨ö¾ ÿ¥]ÿív�ü©Q­ùÖb�Cúñcd±$?UîÅž0Ì�7¶}h�ëÇٴŠa‚Ë]h¸§» {‘“ã3;`;óä*Íé¥lb,<¾˜…�êQÐý„€ì†?~&A˜,óãæAdï¯_ÑW¯L�8˜ÿ"i64¤»iA#P•-S>N§S¤ajK ܳèNÈvÌÜÛ½Áñyp€M/K ½sUh³Ú¹¼O x=•0N€ý(÷ÆÎšY=ràø‘Á6Ž+�™Åÿe$•Gƒ·x1´�¶ÙáÜêätaÐç‹+eì>sXkç-"¼�°® ‰4ñü4*âd2O·nþ >ðæ) 0qaäPŠð<´€cË>Kó�³¡yŒ73N6a@WÞx4úãd…Ã劊gšfÞhá…_‚Üg[ d…�E–s49ü¯-§]‚ Þæ^˜¬àÌE'¾Ö &YÂ3qñr/�m;|CÉFVîŒ %�5\¤ÄÇ� ¶3ßXˆg‡½¯™+uàtÞ=JÖ(‡·ôpæH&�Xº${y‘Šï›ÍÒ@Ò™¸æGÐ f¿uèsäX’´H—`ˆQ JÈ'}®çc†•>21DÄ“šž7Ç.ƒi¥þÍuŽEHr¨ «0 ”Ù.sÕ~mš0$*óuÙP*¢ç)¥iÜ%]Rœµ€ëæÿ)Á¥Ù1ì»aÂ4lö’ëŽ_»o"¿}}u}ÛÀ "¢žS"M¸ž ù—_v`e'Næ#¹‰¸B¶õœXè4'§+ÏØÂ¿êDîò„ÇÏäãÜCî–)@õ>Í#Æ;{r†¹Þ Ä“ S'ï~tò“4zÌ�¨9á9•K@O¯˜RKöäGa:Ú=üÒ,ÆôvÍ�N;ë�³+ ÚxŽaÐÝùžé6¨"ž¿ÚÙ/€È] 8ŒvJ�ñêÈåÕ‚QÙŽ©,|í´œf˜x~»jg`Ó œ÷\V€Y•i'§ü$Røæ”>‚ j½z ¶7\[}G&$H¯v@eÒŸDË$?0“çÌL޳`3Y‘«ßÊ›âÊiAÛ¼D«�³"A¼ýÍ\aį; ˜uzÁž"JýÊMîµÜ­ªrBˆyA8ͥýÇcž<ì6°WBÉ nãí,Ú�MqÈËt“p8+t™iÕ¹g£Fïíeäߌ2õVŒ?š¥ëNVüðž¯H˜|8ì4u'霽çs!-_Ñ|W_0"ZôOR£¨Zed/f/xÃ�ôì¹B­Z/’zÌNZå2yìÒéU«EÑßêô·uzÕ[‘ô×7š:üCK�üít¾5ѵ -@µ.Éîž"ZÑÿŒ5Û©«ÅƒggKø‡–›ü°lR-Ò º½7³ Vå¹_ÜqqÔ®1å‹‚/ž¬·Î½kÇ7[ç Ý>XcG¾Æw"Õ¹)ö}[0Ec{…Ý<šÚ+e;^¶WŠæöŠÖª;Ñ”+›X²½ÖÞ”Q2MÛ%o¡Xö`yQiÙ€ˆ½sÌR”Mý˜Döcn.îDŽՆ ¬³µ ŽR¸î ‚p=èhÚŒ[ø¿N‚®^ϵScÔfÿê\³^PϘç~ÿ–ƒæ,•óW½�¿º(úW-Η9}Âñ%•i™ôÿÀY)³²Þfe™•µ˜ÕÚloï©Wšçh…›p%d �¹ÑžVÝiVY§ƒœ…rÿFôü"Àæ-€ÉªÂrEul:—ï‰ôîóõgê>×¶"X˜ýe6¨7“ù;§ÿÕØB¾SŠš^SÃÎ\9mÑ;ˆæE‹OÄ™ã„KQS9Ž«å˜#[¤Y ?Þ°õ>¹l§�}ô®’>%Ý©QuWçóÊú§îï´ÎBƶw`l/JÖmK`ˆƒÜ‰ÀPD¦M߈Qg«lzémÓËE6½˜6õúš`§½Š»Ò® ¥½(û×½í__dÿºÝþ³¿öؽ;ÅçBñK0Ö ŒûÞ`Ü_Æ};ç—³�øìÀxT¡q¯ÐØôFcs›v4Îþ‚j'š”`|¿”`l»Þ`ì.c×FŸoÝv ¡‰9�ÆÏ‘Dc§Ðxè�ÆÃEh<´£qÖwS»Ît‚®z*’ÜÊâÇÞ?6Z§A£ÅêóÒàGP§Î&ï™ÅW0ᄽcvì3}öߪ)ÎW8L³ƒmOþð_PKÒV1]ÃrõHÝ™:^imunify-security/assets/ui-app/assets/static/shared-dependencies/paginator.min.9eccb30bf204.jsUT ëÆ«jëÆ«jux è‡ÅkSã8òûýŠŒk�²wdOÃ8ëÙã1ì¦ 5p[uÅQ¬°•Dƒc»l%À„ü÷kI~ÈŽó``÷*T°¥V¿ÔÝ’Z�˧”‘±•�!…‡D¿Öþ…Ãá$ÀÉ/�£PCjKBà=yü–ªÍc #)>ÜM«Ž(ºR�5v±( �û2Š%þ=´‘Ä£Kè ¢dl( |íéƒIè1Õ™1Ó&)i¥,¡ÀFwŠ“AQ¢¥(AŠÑyÈGc4B4@whŠÑE7!l’„³”0 ‘:×*Râ2„]f ]�Eþ$ s¤BP€`V/üâ㻀 Àû1ïÆŠàåòžÆ—$ ÔÍ¡ó*º'!J éË”„ì˘rò€ê˜&bJÚxÂÑ÷'L>q<�vÈ1aá%K@IÃ'èùƒ’‡/¡‡ã”Çû áá|Ø$FÀ�Üq˜jG ò ¡ó ³C1ýM£=ò%Ð¥0„& 1�$Е4‰&¨ @Œé# �iÊõé£AÞÒ ) ß¡ñέñ9(a9ä|2¾#ÉEÅ$aOè±è8ª‡yOuü ¼Aä‘xFœ¢Ç˜å�­K�!>Ðí-¶µ¥Së¿“vçã®ü±Ç0/— 'Lo# ,ÖŒ„hÈþd *4#�L·ë­Ž/¡¯êlqÍFaÊZÌ%ÖOtÔ£¬[gâèÚð&VG‹ý)=²H�sÑ Áìâì„ØºÖ‚á¾�ù¼�ûV•»ä¨ŠjHØÑ$I€{n|ºÑ]¯Å•‘½gè¶lÎ#‰ý±ÎnÀCXAL“0ÀœôM‰œÓʨ„¤ ¢Œ`‹]É>®±‚&Ž¢PLKÇÈBBk‘ÒaëÖ„/ð�\‚=êÄÊ7Œ¹±¨d˜7ЮÞA—¨Ÿªiì¯2ݘƒÚ;ËÕ^ã{™eà8&8áFókÝrÍŸpÅ톮yQ%¼_Ð�”™}ÆxNÃé# úäôK‚ˆ# >ñ{¡£%QÄ´¹ O>€>÷}aO˜+š†ðÁfŒ¯Ÿ•cwµ½ih–ÑŽ|§Îõ5Ç"þ¡þÍ š¤ä$ãõtnt!ŸV‘�Ñ�°ÑÙ<§÷°HïøËÉÁ¿O¯nûW½þù¥&0§ë À͎܉>Ðs¹;œµÀ^Iè§­£Ø�0©^è“G½Ô Ÿ‘Û¢cžVÀXæB%@i+Sès‘š_eî(J¾’À$÷p¢9ï"§/wWuâ²UPÎ ²òݤ^@'ßá6‰ÉÛ )PEHÞ²LÆIìþ÷xÉÞ±F»hmf!ë®p’Y`(ëp¹7]ßÀZ¬ëÌýÌÙ3^Äݬ÷b‰vÔ>ÁW¸`Jmu¹‰Äé(za�Ç®l¨h‚„›z%a5ØË ÈCb:�(®çjá Ϩ6[�KPÝÀÛ¨b{mÔ<×7¨Aïl´‚é¼WM ¸³y¶–±F% çGÙÚÅòUÌJ'w©‹(ÑuրͼŒg›‹Y.ˆÃPM&‡ U‡¢&)œpîân8 ‚w.?—×|Fö‘…¾\u$¡HE‰4ï‹þFu†ðÃa_¤qóÅ´VätÝwí }#ãJSrÂà3ý1ì@“èI¡PÌ‹5 Ëùèl·  ;|'ÀG8=/š³5º›oóЉ¦×­¾Özßç¦EÆ”« wuR#}Qéz ys)yåÄøf´Ûˈ•[÷·S1Ä/™âï8°‡åÂ.ÈU qâÏ®½µÕ~WRAµÂè¬ÂaÝFÔ¿°Ì‹ÃøâprkçH¿’1îCÆpÚóz6º8™�š>® å7[+Õ-È‚â5ùÀ ظ¢ ‚"PWõŽ�yóù¢"d~y~n0‹ùòã÷:$Õùž¯ &‹�(c¹˜ÏÏõ¨YŸÐj>êצ¾ëö�³[ìM–e´šÑ¦pêY�i»®»�EùÌõU Œ­­5ÃâI:ª�Yê•Fp¨ÖE6“›nú`RêŽ:+H[¼KŸ©ARc¶þeÏ;-F§jÞr6Åuà̱þ8T=åÐp VágǽñpäÓ¤ñlT\åÂÑè)&΢üB7ufâŠÅɯ\JÁ´âQËÙ×ä­”RËŸ´…-�VkЪ[M}Óš÷ ZS+À*› GSß´9ŠÄý4È%ãâ,‘Z™^Átˆ§t(JJL±�ÔÐ6ªd2S–͉É2™§•=lÄh£Ä ‹ù"ò¦\r榔<F£µv«ÝêìÀ<"o"€ù3xÜ’Q×'D©eÅe¸9¥3{×Ú±[áëÔÞiíæ^K~lh2mÑÞ¶ö·[vçû›©‹ïÙÞ\URœvkïtßÚý$DjÙÛ–ýXÌkw¿_Ÿ@œ–½ì™{›Ë³™�ò#È_f¦�*-={-DžRö¨¿iÀ(Jd`”ZÙ‘o'T7Ú]V·±±Xkès²|ŸqIÃa@.óRØÕPOk>—04#«*x¡,¤R²´Æc¡X( ¹NݼhCí_/n÷&^ööq³t³}á]{Ÿ¶­ý÷1î]¦t±�J$ù~_£ÎÔîüþ—['Ü›;[!Ûn=xà³÷óèñIF��YðàŸïgv.ÚÈäáñåee]Ÿ¸yݸR¥­ª¬¨ïê¡]nm²xgå]ävµmèù€†Ú”G¦¯,DYÆÉz‚9Ø-§mÉÌÇpïEW¿Ùþ•XÕ”Ök.i÷×]Ò~Ê/i×ÎýøU¸­Ü…/nn¦�2³øª ëµ7Övqem/ÔŠ­TGa*ö6ºªÚн²¾ŒDýÓ‚ãä= †_/èyG,õº¬0¨± l¡ ‰dwÑ•;W�(ÉR&H–0^UíD¬¦ò Scd.ÇÂõ’*ò6u.+ÑlV °œóM'vµF*wú˵ñÚšˆ¥(^¦…*·/×ÀJ3æü"›€Y‡åG]b�Ë âO½Šyu}q9]ð÷“PŸ�»ÝþgwLÃÍ n™vË#Ìr¦ïÀ¹ººcœÀ03ô€Áù5Ïj',¸i­Ä\×ÎÑd ±¬+cg†Ô²³>›^u@¦°ý%c•ôW9l»?Š´Íª1Y¶mÝt7!à‡¨b …5Êx)™íˆù§AÐ8¯$+�<ŠÉˆUQÎg×ùÚÕ8A‚‡¥4ò¡"+'\àƒX¦ÜS�$bb÷¸ßö žoŽÀ„U&°d ýMIëÇ8G l’Õ“•²G\ ©á#NqzAh&—A£³,Ñï¤Q@ý– ƧU¢þìÎé ¯ú#=§�Ýq¨W:ÉKÀg/½58lÌÞ�#¿1{Ÿÿø/KÞ6^ˆÑðÛŠR¿(ÑóÂ:žÔ?¾AtÌ“òðŒÑùhtÓ £$«!Î.¯xûÇÿPKÒV1]“zm:[É ^imunify-security/assets/ui-app/assets/static/shared-dependencies/observers.min.6ca1c95412da.jsUT ëÆ«jëÆ«jux 臥V[oÛ6~߯põ`H(«´†2Ô,[2 Àš MŸ–ƒ.Ç6[™xI(úï;I]lÙ]±—Ä:<×ï~^ÒÄcqRœÄ4™¥ù =¾OiòH«Bo¯˜uKìé*š0jSçÙZ¥t'eI0aVïÑKvII@"’�˜LˆGædEBâ“;² 32%÷dIÉšôÉ� Ș‘'ò@NÈ)‘3rN.É1ùF®Èä�\�OäšüN>“�äWòù‰|é%”­’è9¥ Ø—voLb˜K;Ç££ë³Áù8#fO =Aô�0ÀcÿâânxL"—Úòvï>Ì_àá8Hà!x�Ë#‰«ºé8~ t�–øæ…$†ÞÁ#�Ø` iØ·b8ŽvÎgg±¿üúeE“õ)ì~‘Bh™C÷ÝŒ²“xlõ!]‹vŠ^Í=?~:ŽdPH€Ñ /M�HÄG#šrRJLœ¢±—À#ñe›ÀtÇ% î ÿ�Î½Ç N®V÷œ hSÏ3xާd*šÒIðÉŠHî¡wÞ` t¢k²D†“Gøû;YãßÁåˆôáá|x> Cx¸èÿ4¸;}>'õv}AÆÈÑócrÿ?ŽÎä N'ã»þååè3y€×ËáOÕû ¼__È—S. ŸÏåë^ÇýCr†´œŽÉ9ü?��/G§äžÏúGwgƒqŸã >|Ãe~ž”é šÓ‡`Iþ€¸@ßuÄ‚ðhÚB}rÌ{ ¼‘\ð·%ù„àô>Tt,(¹††i¢¤ü� €ù,Ggü­\Yéa‡Ô‹.Tj¶&¿ê))Å�?€Dý #¥ÑB‹@_pÓê=,ã b 4»%ô�¬íj`ç™ÚϧÃ_wýóóÑõùÑàònp:@]»�> ÎïNúGãÑå—î˜Ï÷ûIà]Ò)M(,ÙúÝ? _¡uè§Ý_H�žÀ¢Ïbùø):IâÅÕ$¡4º¤žO“î=• ãx5™§ÌKXfIIBñ#­Ìú[æô& lç/×Ú±zj=;Ú”€±ržEoàþ‚ N/è¤ñ‚Ú6u?Àv$ÁÂv\7•OŽ³ÙØAg¹Jç¶n sÔgðz,³ÁÆtþvÚ|¦'ü­~B)b–1PÒhÆæ[ðwiG.<ï6æS< £iÓά€cYÈ›Ìí÷ÿºz÷~M7·µ­³ÁÕ(âÕªI4õ,&øp»à_@ûï©¿Þ]Ð4õftżL�¥øý³ hŽŽ?Ý®Ž.‡‡ƒãÃ/€ãîârp2ü­• ¥uc?Ž®@×Çcx¿jÌã”Áô!e;Œº{½IÖq'¥‚ãÉjŽP0„̓´s§|©Ëˆh�\r݈>íœ�fzÓ#µT7Z…¡ì |ײÞ1úî�lðÁˆ£R‚jˆÔœwÖ®€ËéJ.‚©Ý /:¤ÇjeœdGìaO O€r�:= �o4³Z.[/i<Ýav„}jR§~m(Rv@že³´ ]psJ{ŽÀX±î^BV�ì<¬g³‘4ƒaô¬€Ž“¨(Ie£^×áZBÃs<`:ÎÔD’ÞŸ 9£—Â~|ÛlZ¥yÎ!×Ä8õ:ÂÚm'毥�¨]põ.(5§n=ófÈ~§GÛí=×uQ‹M¶«9} Â\f*ðÇ4åAg2BWŸJÒnÛ ÀÒxØÎVw²h6Š€=,‰×vyeJÐ;bds£žõÃÐþzóÃ3¥™kýð¬¤1³n¿:=P:›k)()û‘J2{ìÝ;Çäõ‘ÿ`ì‰é6lzÃnÁNÀߊý£Ôé5òæUëmИ xßÄv²zQçvEp&-sF P�–<‚™-M -ÃO¿1$D�v;-Ú}+ÿoÁ4¤Fãò%4/®ã-—4ò�P>ìt«aàFÉ©˜‡´Æ…D.íp‡‡¹@¬(°ªÒÄW cW^‚¿ÇÕ*ÚíV±¡¤‡Iük«Ê¤‘�ʵ;%ع�ýõVÑ3Ô/Í^¡ûJÏ¡,b>s+­BLµ×⹟O¿�¦öÏW•©êxÂD|ñ"p ©¢íurñ䟵$ÂÎ心6 D¥ûPT= š]Òk‰+#ÝÝ%¿½‰Þ㛽àQ Ú¶rômTCÞ´ÛA• Yhµ¢v{wciµïZ�jPe„\ aCkŸ í¶ó,ØôðbO+0úè?°¬îWpyÙWËóšÃ¬*s¡wOCPjEv Žºl6�ׂÄÃd§$M†ó;XðéÈÑÑ€Ö9•™��ŽäL,˜sü¯ÕÞ?þëŸSoâši Äñ®M7›”:v$!Å_Q;Ἧk÷:Ò €¾ÔL·LâG·8Ò§SPø¼öb?3,©tSJ€80¯kxÌ©%ˆ"ð!¥‹ºàcf�ãÉóé¯ä:*Ñ=ÀýÀl'{�ûk—æc#9¬„Ùþsüçl÷ÿ`°þÕÁ¬ÓK%Bà €Q2ÉHJI†r~£‹T§¯( ¡mˆ‚éîîW:Ìä)ñ–nKÁ„¼äõ‰®¯x†ON²×éÍ!6+3î´38»‘0`›a[¼Ðmí©YÃ0~¢¾Q¬IÝ›[Ù9‡,¸ùƒÈÏIX‚º]/¡õu÷™F¸s~úÁ;3¯»¿—IH¬‘\$Ô‡ =‰\žMûAÊ(l (0õOE)OÏ â0Z1sy^Z‘-t'>{`±`c':´EF‹LZà•£Áo‰æ{‘Ûç¡BÎûܯ@æ÷“ăhWÛ� t�}ØÝ‡H½¥´¯´½š¶ò¶C†žai À$C XÈ™‘=lþÑÚ+ ácÀý*·|”`<¡íÕaZ2Œ¡ã$ø Ýrqpiä\C™cûU¹ªŒ¬“=Zµ> 4Ðû�½2ÁµâÞYEù;[£V¡:Ë`Ií .u*ª>àò c«kÛ¶�Pë}ØØß·€‰(‚ Ç)‹§’D1œŠO*eRÇ–©»ßKulù^ ºÔ¦zñ{—:ÿ¡F€+e7Ám/÷ƒ%©Ï)2ÔØ):,P _C8—y)Å7ž‡„ñÃXFO�Éî=³¬AûA%ÄþOP¹Ã±Ú9»´ùõfC ­²YubnX4CÒ.¸MCƒÆÇ@п_Ø`ö¨´zL½¬¸^#J-oƒHOWKX\QñhZd-@˜±NIbý¾:Y�0û|%¦){ ë#ðÊòB0X;cI(ž”yâ)�SÞ}Û¡`Ö¶ÍÜ-L²uq¦ªµ¹}tÀBx�W'sÃ<���QWòò1üË¥€E¨Ó®¶ÇÊA®‘ Ò9ÀâJ»l%K*©C'/ ©~ âUúš‡MnÝ8"+a¡¥C­¼ó`Û Ý7¬àéߟºŒ½ûÆU™S+5)°ï$HÒ—0~Ë©÷"’Aޤ x©w_±U҄ݺÑ\Wea¨ ©‡k>Ȧöhw�ì×5üÛD½k$Š4Xy]ÛBó� hfGî–ɆÛ[…ÌÔ>ÛN7›{̹´¦;`Þmn"Úí}^ˆ„GuîPï&¹Ú 8ŸÆ fÔðN×fÜ%­ÝG0Ü5îë:j-¾+±w¦IŒQ\‚ö ,IMFŸv í‘'™|¡¶“ÿvJ\/;�RwiH3t¤à�€ÄíÞH;þ¬Ncž·ì$Ê]V£ ÛÆ)†œXBVcžk×ÿãÞA£~wkg>F‰µÅu¶¥iµû¢4YƒmSâºj\æö@ |ž­˜¬É hŒ­`µá&½íÕfb®àÿnÐ�Â¥xŒ#ëâo Nr–ƒZà²ÚLâÅ’WD3mª4˰¡Ü\~Õ³]g²ùÆ€f"g¢,QÙ¼Hj¦ìÏƽ)Ôuuõ5‘.ýÏô�ð¶ ×©-åh6Ëš—ú²ÒV(%E™6¾ZÍ+óV’ÞÐ[ç™Õ«_è9¸hx|ç²[U¯YÅå•f)Ú=nu ©ø�iŽtúÜ5Z3,¡`-¤øÌ‹À&I¨ÓÃÊ Ÿk+4ò½¨"J,`Р‹—Z*‘6Ÿ$ç©46y.o‰÷+, §hVàµ* '¯ÁÕ/`‚l—À¯íl¥Û,9Ï|~»ÓéxÉŒWít]â»Y¹Ö2‰g‰·°¸7Aì#ÞQI¦%b̉êfúD…‚ç=–u£Bísî¥F=U•–,àù\¡YQ©Ö:[-¯3M�+ŸŸÍ7õú‘³9 Õ Ãu`|b=ä’NXÚn—[tÔæd0W»m= Z0xGH0Ã@¯Ï%ŒsŒ0¼û{Ož§ê)L^›V¦³p .Yç\š‚øèëA¼è¡k½àÕ² BBÈ€X”&DzxŒ‡<…†ŽŒ% èÓfó®3~røm¿”WÇ9µ»>zG¥`áxÙr°æïF]+à«¶à%È ÷âÍnÙ%®~~ŽUx¢›‡£«v»eòUX7R ‘F€÷yš†‚�2#i·ðh; þ¶– ÷Oqâ«÷”Ÿ'òað†�8xþŽ2„ºå­ü Ʀà ÕªcD‡©åˆcdÖÊåÑXpÇñq³)óàdx98ý†:Єš_5FsŸôÁÝsPÑ´0«ïe ¨9g¨6iÞ5ñWª“<²D8äoV8©©Á¾}Óz¥Éù÷øÀ¸ ¨ß�ÍæuËó^\Z™õó„N-GÌñ¢èo6bqLJå ³‰¥èƒŠ%–UÓ`:o>,Š›‹¾ã¡Pœ ů?šhCZæ çñ?2ŽGxâŽï\¢”øïòáêèŽ_@ ÒsïÜ^zI KÀ»Oû{… €ž¦gbœ0rC¬ ¹Ý<'c!j%îbZ†æ¯Ë0‚á4ánöøhN'ŒÄú¬jNŸ1í••‹r`'›1ŠÐ Ú-Ë} Åocö£ÉÏÅuòuÑÇí\$ñ"?�‡!ʰˆËñ£èJ¸)qÂgçŠ\ÄÌ ‘¥Y£–ÏÉk­H‘„õ=)¨3�š¬+à�ž8:ŒW�ë'ëjHmnÍ•R¼ÁÆ'ÙM8’]¼ÐqKv°ƒÇ£·Ñ*ÁyËWóq±Ä¨ì€éz÷ÍÞmWWXjÙXà®1”é¬�£ŽEu’øJ~Ø–±º@`0!‘ÞZNž¥© æÂvÌ2³j™©ž :öHd‘€:¤ÕJ3I­{™^lÐfí¨­–dHn¨& ÏMMâX£ä¿ ;˜Ÿm¸ ãR¨Œ®¬‘¥Ô¸»Z·9TŸä½F¹@Å’´—ûòkà`Q·]DÍ7o¤¾î:ÙÁ Â�uÆ.j±,©(Ó²ÁëMºñÆ\U{ô2ew÷or¢VÏ_ň¢ãnºZ_{¸x%¦.h.Ž„b¸öªûÀµ`ÂΰÄ[îz|«raU\kT÷‘-ˆÍù׬œø¤™4Íó(#˜S»”G�•PÁÖ¾¹’°jª$@êZï4êœóɺÙß.<¬òÂÃêѹ3'b”EVzƒÂmi÷T ìlË¿+PîG” ~ˆ½bñ‘·Œ´rŠ�wq¬&¨–L£Q m&‹\Ò©–§iiÙZ²–ò„8\¿i6r8=Ö­Ç%mŸ]ž¼yxP!BœQþJ©Ä1�¿@š6MÒñ¿„G9ÕŸ2šÈïz0$«’VJ[åÁL¾!Úç‰×1? >Žyy§Š±ŽÈbAã|œoòºxsÌ ¡Ç°°Ø™¢Ë°ê¼¨Bg «(½?¿ÀÕ¹âO>ËÖ\îíf(¬˜!_ýÀP™��òé)î*Æ© Ñ`¥¬ÖHé&J7¤$• AÚ½¹±Äw±\�DŠoY··„W¸Ó®¾»xS’Ö-16´ÖÏ{`„gÝf„~[Æà1Ó2ê[2ý è)®ç<»r+ÍèQ�¶P›PŸêÓÔïXÄ”ï%û#�qóßêÀ~å®+P>-ÂÕ'ñg1ÔÁ¯jŒñx�ê(£ŒÙ�Ôm‘ˆ&ì â/Fgk7i/‘[¹�ò"áòX\�Ë$4†êÖ‰>*V×Q �Zç;yFÛ€ˆ_-} ;”~æ¼J� ùT}LwÇ? ?]_Ý�/ûwøûøî žÇƒŸ¾X#šd„£dnQ>¶ćª‚ËÃøhwòXþÅ©Gòâ•žŽ©«äL)ˆøR“¾XË4iØ^,€%cojg¿Õ ŸYZ[žšu˜ø)<4V¡@¯•âSò³Í­Í?{ŒS�àƒO–:˜¿YIè­w—^ÄOÌÀ6à/qÄ+¦¤/s¶ „¾MŒ˜ƒÚm©Û#çPZ ÌÐâ:4¥ß" mäfõ§„É^ØÒzK`êõ§‘(H-×…¤YžrÕA÷˜þ„¼PáêäÊL˜ú0ePÙŠÌ0+Ôá²§ôе–â„w9¿›×ã‡×)?XH—a0Áo¦÷qβÔüowû3úw“…Yž,Ì^LÄ^Ok’6ô¯LÜ*¾¢ñ(«è<¢Í†LEÍ|ï™»¡nk?Çæ©.ò¹Ö½øéãëÇ β.ãÖÔc~X»€:j!óxófN¿w*9kÎ1ëÛï(ùï¿�~Ns‰š¾þÜûÞ¼ù$N¶Å-0”âÕ§`ÚÂ|Ä’ã~†¿´Cùõ&ùx³w‹×ÄmRœ÷[¬p$ÎÕ?Í…-ç_Œ€àñ[(à(åÓͬ“Eø48 3 0İX{ù3ˆHfƒËv}\$² ” � ÞS¼O�NfŸ!b D�¬9€ŒDW²ÖƒÕkp™O—3p&=ÇäšÁIáL#é,òï­°íLþß¿ïvK^‹i ^÷0lãI(À*œÞ²AÍúâ–K^5ýÈÛïhÓYñíHÖ�Nç)�Ø¿3ñ“ô=³�¬w¡Gò <’f{|–xá½n9J–#±*US �rzÇOU`3v‡Áíp/·?pODi§mWàÙBè�Çɤhä¦Ù{ 4ZÕÊråb«»Ö.»º{=^.‰G ÒÃ^éÜõ?ÿö‚w¤降ß"ÇÆÙÏ—A4"QtˆR£ >�äМ‰ƒ½Å¡—˜`rÄy5Íp’²s©€í&š�S>ƒ¡oޏs¨i&l†ï díΫȚaoàéĬ’tT† ³�l­$5qÆŽÕOÌØ˜ rµ�¡¹8LÆûpêLÇ–ê-ä-+{Â)‚¤€TŒt/âsÖíB.CÀAEø_iIšÞKñ4Œ2€ ;¦è<ä쌰ûVýâ€ÿ™±q^w´`�!i7):3¦êÀÔC—.¾øü*™Û:›Q8ìdz�éœMr<½2Ûßìš|ç–aÛÇ%¤ñˆ´’¬æãÄÈ,¡‚{ÑèSZäsPÞ Ö¾ y½�ÇÀw×fBn9{¿p‚ecë'‚í eO™+jY�%5¼«ç‰©LQìu»þ~�P#Þé®�¦^¶Þ ppÝ“ZÓîÒo­¦Jš«t^C ßå§�9*ððò¶dËv*Ù§åà¸üÇbÿi< ³3«Qð½1º—4¢_ Îe#n៮µ®TŒÝÛˆ3ÅX €¶ñ‘)ØþîWzq»ŠM)çp²hÊaÓ~�¡·þØ2ür¼¶u޳G¥*á ¼øE/ìj˜f r<”m‰é@Àî °Re¡y™LÊC>ì-¶ƒ­`; ãŠ6~×QµbtW¦‚ó¦*Ñð-T¢;¥Ý5Q‰Žu5&ˆîÈ¿yÄmZ%úœ’júã7ZCUFÏ’ ÿúÊ1I6< ?|Ãr+¨ó•g?’­ìî²¢U+¿%ÆYÔÕïê ¸ë:vPÃ.Mµ@œ�³k ÍÜíN<Ü@�Aqgæ•EÎu™ÐO ËH2~¹…³ kfÈÚÜŽ¦~ÙôålÆ;x‚öUèÏë¯H>0æB:¦E6Ò)…*š93MäYñZxæ©;/fGos¾«�9ÿ³34éS×�8ÏOŪ�¼±jU;æ¢JUkºñ¹ÕLý\Dòp™­ÄSÖZ6p£Ô4¤xV¯9"ëíX 'ŽOOF^OŸæFä©r÷ù"ç¡0?t'âiß߸&6 Nrjyèd>›”î�(ÖÑæ°®S¤[(Ì7Þ×Ñ@ÅEùBµ·r´øšÛ˜Ùœ”¿�(“ä/yùþøRé‡àMÌa´¹¥3kïÔ»n/¡¿Žf Øñ*ð ”߬Xå^+ßÀá3´·˜íÏU­øò1xåú«>S–D჌*Šhi"kÒ£"¢±|ãã“�¥¼)£§™�#hÆÌ®AÇxðüÜ݈-¢œ?i;† V•!??cpŽ’ee†ë5Åø²d†ñX>“ú²¢«{�³ƒøžš{ªTkÆ|0¢4™¼XÓ±q¬I¼j™¬�F1»-¼AÌ7HnMœmÌÌY}€}\D”‹!C˜çùåt.7²h±Kùþ œŒ1§!àÃhjðgÝœ°× è«lm…ÇõPY*MѲkep�ˆ¼R³“Þk!k>>gSû |‹I-26ÈŒu«Tç!�¬Kã fÒÊÂ;‡Ó«v™Î“¿ ÅÙ‡ð‹÷‡äåfK�lž‚ûŒÇ×AAçYwE‰V§‹š Ü 1k—[hc.ØTBåEz~–ÂæÿCa76 ç©–ßÐg]*u,Wª«7ùã|¶¯r¢g“›b¼‚‡bB�ˆõQc£#d¦i¡Orà}S:b†ÅÚì`ÆÈ#9N Ì…LÔ\6•s_ë.9—}=?¿{—TfF…œsà ^E^(�øª pžh¤‰ït@e‡™ ¯·B2«¶‚ì0óò>2Σu£ÐOuO$¤Ö�¶º� ºÖKnöÛh×O2ÿ&v‰*Ñ0pG*UE8>Q׿Á^•¸”-Ò®©¸,¿ïvã^ß;Šß�§kE!ZõÀ%tÉky–]¦e\²sÞnˆ$&��aMÖ(Õ6‹Qd!ä?袾v ˜e½BõË”‰pvÝð:èÐ=¼¨s¥§<mUXÖ+’î3yŠ ô]c„z(®šsô�1•Âc�9¾!ª‡¼D†]&�›¦hUAR ñ\®Š ª2U©_HU¦®l¸.Á®JOdÆ$8¹#\²FMPõ» m‡Éãí^1Ž»½]¡²“åߨ`Z”u”ðhöÚäý¼ÝdÞ§zãMÝÙµ•�T$<†›eÊÈ’‘”UŸ’© 5|,GUX¦MO]?ý£7h¸‘i»ŠUƒÌÇÏ;ÈKN`ýñ#ý5ÜÀåÝj·+`è9Zõ õ�®:ƒNàÒúO>ƒÒÛЖY›�W^;\5�ü|UE^Lm,áj©O)×ÎêùE¹É£´ep³±KÑʸ7Õ‘ zN,À‰ÄÏó ô}¼³›:!ŸÔÚÑϘÁæ¦9ÅÅ&©àpó„&ôÁ” çl%œÁ˜¢ÏîÎû÷Áäð¯ÉÞ§Ã=óÈm“b6º$ã—ì* ÍÈO¦G~àwþ( 5T_‰ Ø«—:Çe‘‚šp@m†Å¨4�P�8~‹PÂX…Æ�«ê„ñDcŠ$œ”~Ù­¬FM b&Оڮ0Y@?TßȱÈNkn›€ÚO²æ @QðÕÌß7øŸ±^_CGùm8p¯tøPRl=csµL93Êä¡N”ÔG‘°¦Vy:”1MÛð¶ÃQ颥fèùé'Ýí'oênÿ¤WüÄë4ÓPµ\‘ÕÀØRîAÏñóE¼6·-Ìÿlw¸QÔm)—¸ñ<:!·ø't¿É®o0|»d¼¿}9Ÿ^ݵóEûû †Þ¼­ðGh…̓臷÷A⾟ÕÉÑÎ3§›~I95îUÑú;¤�ZÐbc\¥3öþ9ì…@†7¶Æe׌ãkÍþdÓŠY�uŒœò&Ê}>}x˜?íç³'»É°(¤bÀ±S²Û´™>[]Ël®ÎnHÅgÆ.ÙÞ\/c$I‚åõe«íD ’�ò"ãFþô²Èç�°éÖKœT‚Ô.¡¦ïi nØš÷à##Ï’¦[Y+à_<]¦ŒPWië×­_¯Ù•¡o(4+ˆ8ð;.¸±¿Â ¦¿íF»Ýh÷7ýÙFø›=$ßéÓ�;»»‘øGïÃu£�ÿRÝz ¢ëe®þƒl1ÄfGJ;8U'¹ìhÑG*õ].…°À#@~ª>‘úG}J“Ð`šJ/L×<4ÞÛÐGçá Å”<Œw$&§xvðš„�³Wg²þ<Á™Ò˜ÎšhL6YTJêiO·ônÚ�½˜t·e¤;+�ÌÂ÷RF~I]HÎÛtã› ¼‚®l­ëìä{¥˜ÛëõžøØAt ÇrjÿñPKÒV1]šP2þñÃW\imunify-security/assets/ui-app/assets/static/shared-dependencies/tooltip.min.da561be58fbc.jsUT ëÆ«jëÆ«jux 致;‹vÛ¶’¿"ót³ä^ˆ•Ót›¥ëëÚNã³ñcc5'Y¯�C“�…š"´$äGþûÎàŧdùöî¹½- 0ƒyϾx*�û9½eð‘»—Nþøgñ#_Ð<Å<¡MxžÓæïù¼»r‘FbÊóy}ÜŒ orþPÐüÇ(cóHÞAÑîîS{ì†%¬=ÆïižFÐÏE”Â(»>¹cçŽs*–y¶*¨ŒEpYGÄBá‹èŽþ‘ –ª•¤ÃaTJ‘þÆyJ£ì¨£‹ƒýó#Áç,*Nx¦ŒæÿI[ 9ÌgR90áw4#)®Néœfâ#�’8Dø‡,G˜{J ¼üX,ñ¿g \¥ðyÀç žÁRøþÄèÃQG‹ø�8?qÐC*Æ :LoŸ4ôÁŒ¥ |ŸÞÁË´Å–vxvðÇÉÑé„$@Ö"”AcûÀ¯a6 �Rö�žGEÔ@Êh®(.È<ÍEKX´z|²?9>;½>9;üãÃÑõäËùQl ØoT»÷}{ß'Xp Î”Ž«5ä¡i‚OÂ+Ï¥4àbyƒ‚hN£Fåìö–æä¾  &gòë PÊù(+˜”È9üTvÔ:ÁR�Ü]HKŠnRÚwÌ�t‰† ®}¤ñRÐÀBz+ᮀ¥×“³³“ãóëãwû|˜\Ÿ�#›/®ßíLÎ>~ >‘:ÔÅÁdz®/&÷'G¿±PÈ-€vÆ!Øâ8»'ç\é(ÏyÜ•Þ8 ‹Á~xé F ×ÑOÞ<›L@¾'y=òƆàÁ�4 iŹŸûU#,4š�óÃJ”΀¦ð¿z¥By�H6œÄ!}ä®ljÚ†Êg mŽW£çCE�ë…¿‚,%°¶F ˆ†0w¥&'³œ ‘Òà¤4t�>C—áðõùdzOLJG²Zäüž%4¸ ]€/{¸"à*ßE1„ž§àCY£ò“kˆ\3þpHA­ƒ™Áró-ø2žÑ,yoÇv�JMß·6}-=éå[B§Ñ2C¾Ð¡À�œg�“s.2Õä~*=�| ]@cPœïŸ}¸>ø°ÛË�çIl7_DM�8í�?ÃkwµPN%Ø¡¶¥ðkðyºi•Ä2d f¬ð¯ÍxYÔ�@¶b' › ¯^¹ÍtÃr@‡IðÍf¹H@Îí†-8O¯Æ`À)d1ÝóQLîÈëlì·6ô<¯¬Ÿk_œ�‹akÏgæç´‹ð¼½à!‡9MLBEÏÜ.ma¶LSIM tLI› 3.±[ ‹ÕŒ4°é±=ù5ب9Øe¹8ç,ƒ`~$ÿuN¹8žžRš vIŒÕø65vB’S�YzìPXÀ ÜÌšL{3;!7«ÀìfvHnÖ/w«6­qÿzÎÁ¶?ÐèžZ [û*ç´(¢[Ú&OKâ ˆ%-‚äë�‚sb�¸€ÃšƒLÕïEMk©Í<ü,„C§"¤�Á¤ã5'¤vì„b|#䀣áÜõÇ!; ÐW¯ÔOVhßþ‰ ”ÀõšZàn©¤n‹zËÃ'=™Ýþ7„t?_fgKQ‚}•œº.úõ¤ssVÀ<-xzË|ÞROöq1Ñ_[1¯Ë;p‡¥±m=x€n¬-×úœnØJ¸>jÝUGù,;'�M:;訕/Ñw»¢?7¨µ°X+N„T©°xÈŠE$ å!×÷˜yòLD 2C\Q4¤fú§)yˆôÈ"Ìõè”ÇKH¸3d‡©u0y8³®MF,�ƒ†‰ÙÞ8z熦üÁi ['¹³ÛrZÕžä3™óÖ&Zo™ÐjÛ…˱Ú:‰rDôVÇE!ržÓ){ 1Hjâd8ÿ� *´�h)¸Ó²GÇž£™�áå•åH™?%Þâ2B`à.J6\�Ä:²Ê…&¾ý&m�˜øö›$~;ÐZöWS^ ̰¿ nÅÒÅå ™µM¶µ€ C™ù±,“ü[P—¹-6yž_,o´á×}C=3Ø.1@�ÝîOA7>iÝq�Iu”id$³¥'¬‚?Wÿí8*o«C <ãžsGŸnx”'Né’9cåS3ä¨ÌlÀµ`´ƒ÷4βC…8 òQnv«�óÑ(Ÿ°9åKa=È\].ôx7ƒ±j[K¸À–A}ª@Ñòš2¬yk,ɧt„É’ë^2B¯¤Bè+Ec ]ljü‰Ç]·SJ³[1 GmËô3ú(\¯3C�šB1o§ž òëBQŸÎ‚/ô·Šå¥«KeèÔ[±©â©ñ‰ß¿ïÔ}ÿ¾.Ö{:ÐÝs– zy¿ÿ›žCátìÛ¶“kjL®%Î)˜›®è]ê�{sYÕÐ ë?¾G×7iEÁª—Ò§ ö"ì×îGB"®cò|¦çǸDu ´>?£î¤Ø*C° $�¼lgàÖ(-³¬’n‘)lN½´7õ‘¯�Ye´ÚÚY?Ç ì•ù¬¨ÒC¦\‡€Ü�mPÒ>P)øímZK‰7¦žÚwIÚ¥v‚UzeÏ�«íìlL¸ÚÉ~í@eKqEeOõ`ÑâSÍ{AþŠ9e·(mlLäÃVîNoÌD#õ^½rù{`T“O©×È@+d-›Ò­ö'yHÚ>ì®$W½,kAE7Þ<›_òþ4¥�È.XŸÑXÐdÂû3`¸q7õ0÷ÀÄl‚�7L!äYæ~õXõeY¥iA|U+ßiì‡T²Bê×ήšúÔÈÚܾTNV½¼ÀIiFs{Õ¤-¶�Ì5ë;Xæ¹ìYê­”ÉB �\ƒ‘óˆåk SÓÙB"ñ\º¿�.Vhõ™^¤õÞ8¦è¨:˜c&} (ÜK�°&ÉÙt 9†»ò}Ÿúsð‹¾¸ü²¦×›FizÅw Ôü*½+¦lu‹ Ê:¥¶¾Ø±~äûw'¹cÚÀ0âßGé’n Æ�nèØ‰n€ÕÎ`¡êÀ÷ W*”~œ˜¢°¢¾Õ’=H»NàÜp!øÜ)á‹NñRTm—Ò©ÀOÈX=Ó?wD�¬rjûk„eà:2ÔÛÕ6�Ýeðwë;BÕ³ŸÎsW�àZŸ‚¢Ô,bÈØ—úzb¾¾˜Ð¶BQ”1#·ØŠ²,{çŸ)+É>… . 5ò¥)�ºH7,AI¾T€v;Åo»×?.@»£Ñ‰Îž[ QoEìç&1¼¼Â(Ù_ ¬z=ÑÚv¸ia5*Ö~Ðëy”ß½ãùÁŒÆwíhÀ³!]DÅÝÑ|!žT¬¢î®G¶ïí¬Éê7ÜÙÈÎn·zz)¶iê¶Ï�eJS°‚0ã ­94�¥æÇšÊ[…h ,4&bm%”šè ByJ§q‹=jm4Z©šF�H�€. ÐEfõ¥?wÕ`e5Œã>¨uZš{�õN½—d[7ñê•“‹Ôž°ò{†lø’öh««ÑÞ�j°Àp‰ïi'B {¹7ØîsÕŠ,¬ÿªX¼1‹~›nS-)aëG ÉS3{a+ 0îƒ Á”Ÿo6®¬_V�m­KžV3}צXuûª{þË–SÅ ö?LÒ¹·f�Ų˜¹—Žì•h‡�©'ªÛ¦Fu¬ª+_µPUÅ�’ó_½ªýz’ÚnÚŠõîóÊ+0>�:Fâ½ígêSÙÜ1³ˆ;F¦åOîÚþ >YÕäT'«r6»E�ƒ×ü�Ö^Ž® Sc{`jÌ�S‡üŒ&§¿¿”�¢}[®¼¤áÚ™Ñêµ­N±æ …üüçÑùXKüìñÝ~®h7»‘òª¡²é*F÷<ÆÏC†;£±1ÞË«qµû&}õDC5Sl㵘SØ�&)Gì}µ]މ˺+ˆ¥=6À’=Ý÷Pí«òŠ\:3JS‰Cí#Û~´€|yLÓ‚àë·us¿AoÇæ 2r¾@[TC¯§4ó;OV¼r,† ³(†§•?U?GŒ_kêÐfã‚zB¨¢¾d%êM~�{ÛÌ`]»ýl³ýëTû¿Ü¬'¦¡ØT)ÿøì¢ò›fpÿôðãÙñaÙ‘l¥ñ=M÷V+Ñ\êùú,ïr>—Æ„�#í5Ì×ÏÖ~kïe†ËïßézÝ,·P¦ftlh丮¯íӬퟃ'T¯ðư8“id=ǧçLp#æg<‚浜ÉÑçÉþÇ£ýæ„Ì·}U~XbB–ZüQÿù@oî˜h �ðoµßN9)>i vdFÄü$�no‘ß¿»õ-aÜ. Šû±º¤–£Ä@O¢Å{ÈJRÌLxÊsÈǰٹˆ0¢;e‰ïY¬Tö–£×¿ü<�â°þ˜0ÖãêßúQ�~h†ëêÍU`»,£ö±ª»O |& _ªÁÊä”Á%Þbkµ4ù†C3ï\‘v[·w‰™¬-µCWĤ$�¥‡z–˜y­ÌÕa/Ì([€®žÔÕ¡­‡h Ð Ím¬˜Ôgâ4 a¥N¢k𕜖[WÅAJŽ8ö~Oý¼*K�£p�ëêõæoQjôÙ¼Ÿ{7 �àA|I×|þÑû Û[Ë]?Ý,Wì…Zø~ýÓ|ÿçÔnÜê"Z½cöÏwtkrta:{ð%·ûßÖú>ˆ·õBÆt;ìügH³`�·Ud@d³z ßc¶°HÝ»Êèƒ Žê�綌͘™zî>™·Ì�§mŒkïËŸƒ}ò/ZW:Ïïþ©}QúìŠSY©?7÷ÏuØ{rêï×/ŸW»÷~úâ9€{ó\å3ñDÞ>·âÛó 3ï/ùàw¤�ñ‡ãD\:ê­måRœ+ðj¼ûB Àn÷)®¾ªvܧÀ^ËÏߘ¼y-ª÷æ²Ùðú„¶&e±2u¾p;»[WL˜}Cà•„>¢ùï7}�0¥‘ö¦M Ç((ë–ÉhðN^iÇwR;ó;ãó~o{:“ïÆµ?–àòešé¿Ä)/èYV»%©^qÙ °jˆgÏ«ª?ž1)tN9_Tز¯ _\x+ý®R®Åà¢Óçc(¥{Ò섽ȇ­ì`§³m)¼"—'`¨»îΨ½*Ù°Aoîõ›D6 {‰l@$ Ê·'r·}�ÈÆ£ˆæûJ%Ÿ²vuÙœ·­gJZžy€ vï¾Õi=þP2k®àVëôNˆúŽ«l5×)²ß3hOìëwÕ(DQÂ^öÊ·Ax•ä Hò•lë¯5Úõ]ÏóL ¬V–×–‰(X Žgò=ÙÊj޲Ä]Y[Â]‘j[n¨d`'fòõ¯ž0ºˆ°w'|³±NìÍ þ醾Á.úÎ ÌÛ[ïäFA[¾†uZËÕCµ²k¢�2M»þN�ÖÃm{³Ø�ØÉŽu¯î�ºb��JÔg k„ap¯ã£Á£Û¢ºë“¡4Q “J¤|:�÷¢s(hhr�ÕdU¨¶g ì;£BÖyx�jþ\ð椮cñ “e.?(0Ue÷ì’ tݱ×OÀs—Öf� ­ ?ò•U“eÎ5†éJˆO[½ìQïʼníïÏ%¶qãÏù6)媿”/ýnJ¥I«vQÓï&yxo ¦N�ï"MyD Ëjã™UÆ“% H�Š*ehèØÉ—pÚ!=FÑÅi§æC»H[m";aµ¥-ú@·|³‹:ý_J§y JQ^ö”ðg›¿¾~ƒOBX"f¿†¯G£«ÕûÿµzIå´Vãù¢W­Ši|ßLÙëtPÌÛ±Jþ¯%ÍŸZ8¸ÇÝnn¡Ý}ò‹G M÷ä͈7áþaà˜�eÏ 6'S%jÏ“ŽÃxspZS–�n•õzÂÁwɨ‰�|aW"_Ò­ ‰ž3¤¦ÍÙh¤»=ºÀünj#ä; žúDöU}ò�ó9Ö"õDf7�¯ÀË—W$¡qZoÈ=žö ‘¦‚BÅ:«2U§ñk(�<ëþU¤C~"Z�jñXÿŒ}Õ¯ª:ÒBq}],s°êôWÞ5KÐ96šiŸDZÆ¥íý$î{k÷‘ݶ•T¢kнYx�tO‰oö×ûë6”ÀÜä§5kqkÏ5Šá®¯\ëšÿ‡ºR÷©m$ ÆÝJp¬qµß^%÷˜_vÉÅCÈ”lÁQ4`{ºÎÿF¸I³˜¡v&þ©BvE¤jÃпú}R_=ð<Þä4º 俇QšŽkƒ ·î°UªI2Påï�ñbjšò‡áC-‚({z{ ¥ßQj°òaõGðƒ^š*M\U $ 1d“ƒÝŸGób€ÿ�—7,ÞÐo ”jDø�ÿš °"4Ï}·oщaó/ùËϽHý7íniÕŸ²GšŒñ�R°ÉŒ áøÛÜ#} þ£I'²4k8ÌY<«6�ÕÄ¢æg¤W ¤{ü•!€e¨ÓC|‚Ý·as éGñ,"íµÉ¸Iy|7Æ·Áð§×£ÅãØ;º)x éwÙ¯ær¹Ê/‚ÝÇ…�æaÁ›Åãà-üž³l(SŽà î;�õOH@ô´^þú�ž×¿ßŒîgãþ8,Ø7ÜñìÄ#Ö,ÿÆhÁ``ì6 Ô+•~jƒ@=*[uN·�¢tw4ú—±9#~ ¾FŠ]£±vá¼°�ùíMv ÿçééa%lY¿e<ÃK]ðÙ"pœ±¾Ê¹…ÔÌòïsš°hPÄ9¥ÙöÀºcš@š’bò2P/^½ÕæsjärQpe÷Q1V•eW%ú­q%™:d¶ ‰eÊ~½µ#Ëñê!9`[γ®d×)BKáÖØ™� k­© ¦¼Ä²$éÕàEû�A[$uôò-S¿¶vL¤t5—W1ÁÍe«eZyV ã(�]iPƒáÀ}=ø7ÜËóÆzk´Ãíøó JòØ-y³Iû¶;·ÔŸæ¹•ÖB;  |¤"ž½„±Cø�¢²L®úÊ0»”U§ Û0L ÜÄ�Ý~¢jP‡=ð26ðšBÈ{ë�{ú¿Z®¯Åi ˆ¿û)‚˜ÈFšT�k‚¾¨ /*JA9úÛ´Ö¶ÞÑœWŽpßÝ™ÙM6ÉÎ&é�”–k;¿™Ùi²ó÷v¿U%2© ¤qneœËmˆ‰ Ñ:DŒ7¿Îš—üŒíÝØk¹¬�k'y¥ ·Áo�'2i¿nª¢Õnr [RŽ®PSEfãÆÐ�{,i7…SÞ›#Vk´Æ&p)FtÁh­xc˜;-{�;w›ž¨/Îÿ¡[µò~{vÀó¬º�ÂuvØîïGK@L�6/”±È&HI4„¦ùh8kÜé<Á'-sOçü…ný�…Ãv»ÜÁ;Û¬ve{4UDZ�pYmˆGPð�– ÆÍ.Ãf0ÜYX!Í”{NÙ(0¼dîp §Ñt7\kØÇ�ãæ Ò²<¸áÊT,þ…£aÚ*Qf½8«Jç?òJ6¹Ùå÷ëcvÈ �«Á—“§qÏzÆš&âÔëByøƒ–‡¶Hc<îk]8qM<sÊŽ«ÂfOš»ÙSDFwuÄp¶�yó(Ë$–ËöQ–q¨ŽM·a#ä‡ ½õ$� Yj}¾aÄ•|ôØ(äÕ[_lÕ¼·¤Ã)¤W•¯?ûÆÖ¦Æ”cl�J`p§jDZ#EöÎϽ×o¼šö‹/†¬.¸J+€ XP‹ >)o^žÛP™³ÝŒÃõŠífTgˆêfÆü�k nÿüfÁª…r}ô«Ã±‰ði!·š–N®6òFþ”_áñÞžíQ‚…D…ÁÄé“PKÒV1]ZJgçÁ]imunify-security/assets/ui-app/assets/static/shared-dependencies/platform.min.61901f70edd7.jsUT ëÆ«jëÆ«jux 臕Wmoâ8þ~¿ò%§\Ú®tºQ¶G·ô„¶Û¢RiOj«ÊØñÕ±#Û�r4ÿýÆy¡PØî.ðÛÌx^Ÿq&+c!‹4Ì9N´çýEä¼DQ¥Á ·×Y¦¤÷ú³BRË•ôm°ö c5§Ö‹Dw ”¡Š5ØB˵‹RMÿn›ÊÄFãËÁíÅõÍ—ÇÑyh£‘ü¨%S›N®æ_+”á¶…ÜÜŒ±3¥³3­–tùÂ3ÐÂBC¬ØulýõãìpÒÞ�Óþ¶ÄZߎ�ÐÊ\`cbÓÓÝ¥Ü?ômd+ö2tò.E°¡€ �9h “”0µ>�‘ÇÇ^¯ÛÝ,^^ÑþKL†;޲™~ƒ©ˆp5J`­zq­žüŽz*‘�zªUéƒSIE)ðyj 1çó$û”rÁ|„©SÅV;‡“ãðØ•Dd*×_ £éo/“Gõ†æô¤ÿ!À»4dè?hó“•.’“:ÀÀF2/¬ ¥yKÝJÇ?Y�HXv&`} ªÕ¨ò-Ïqw¿Äû¼ÑŒ ÷�¹`1|Šñ=§Ëè¦h;ø uJ„["ø0&Æ ´\º®!A_çÎ8sR6Om¿ÛEíHŽ;åm4Bª$i%™~º9¯ëá R²àJ¿ña�Þâ‡k«³ðJ׸ ÉšYëg‘tOÂÇÌŽèÔ�ô¨�4Ìu‚È{ƒ0°©¼ö<×Ê*wu“K·*Fâ®C�£ûõ½ùõþNÙŠ`zÿàvÊ£È"¸`”¬š`Œä±¸l3N”e[½Zóƒ½e$­èõÜ´øóÌÁþÃN¬Ò%%–¦ÈÖ=)©À@tL­®.(»Ú”›è1oºìˆaÛ®¶¸i:nò–âTùo·‚~œd¿áu7Ñ©%Ïÿ&»wôzG>°9G¼öƒÄ0Ì�6^=˜» ÕÜ·7£óáÕí™áð‚¾cŽøû‚Î.GWŸ÷Ätýî’K„숦Ze®7ð ×;äöO“ žnLjç�‚õ%_‡gŸG”ä¹€¯0ýÌí{š¶2+]¿{Ùèz²öÂÇ)b3н{›ï}™`þÉ\ Ôžhüu1º^\ÿsÀñ3®a¦ž_\�qì¼?¸:¿¹�ïK#’iÅÙ�xeÇøÉàbp3Ú—gÈŒhþ¾¸­P•øB±œÖeq_øã÷¡ÉÈC˜õSLàCCXÿóêU‹] ëw_‚Ã"Ùe¨ëõe쯭zÙ7!ÞŒª®ú[š„N¦8¶�¾§ñùä•x¶�ö�ì…&ˆëZ/Ö?kLqPçL±ƒ*·ÏvTؽd ÔdŸÝñ޽ˆAë7Ô2½°šGIî<ª¢rèaï²í¡GS OS…��a7lË3øM(JðQãAF¸± ºóöÙâñŒÌÝ~çØGYdSpÂstÚRi†SMWÕ(+Z Ø=q4@4uL¦˜fÜíXÕÿsµÀûq(´Û[2Ñ\æ*î(AóU”ŒF¾[ö3Û5È…a\9�ð¸Ð&±Ý1AQÓ8‹´öÔ®â·ú}ª‚)®\(m»ËÕqx4 +†Êü<6RYWt¾ÆÌÔ¤\‡÷ 2(jHã©&í~pÞ~žðîF‘pÝŠZ_Ñ¡û÷\¯¥†�¾\Ã"LìÜ(ü·ÜÖÞí¢õ:Û¾K‘5  Кˆv¸�jÅé:•èÜç4ØÙ.ã¥TMù‚ˆ<˦p­`ÃeŽ)Ià1¨bõÓµÐ4e&Œ•õa¶z€$�ĺEDˆ<^g¸| È›ƒˆá'^*¢Š��!o+Cñ91Hû•Üáv÷û`B¬nä†]0a¹•¢IÜ|LÅh$È®V;IÏ Ò6QT^—dEPˆ% ¼ƒã5ÄÛ8{Çnnñ¾ØÌlðø;Tsþ/°·ã:ÑÍ2»½+^ ?ÞS¿¢Ù à'x\ׂSÅ*�× L?MÑ(G:4cêüt2î¢�ž;’•�\ˆ¤ô¼�©±2§ØB_ïuÕeA e!{* ˆ©âÏ^ÅC@èå–Ó„»ÑÖ·ðôñøEÉU)Ið`PâÔ÷p#yB~†ßrd-�¹aëB©+ºà®íÙã²Ç qMöbgtÚ9¬‘ç5,à‚]EÛhOk<]´‰8ŠX—:~–÷EØdFGEÑ·Qz„ØôÐ3K“þtLþ r�ë2KµNl% W »óæ”1¦Ï;É�4÷^c1LÚ!T}›rÝIÏhdÍYTï÷–òöÆ»¾àem.û ñßEBHã­m]_Õ�ÈÛ”­»…‘^Óˆ>È2ï 7©§Ëõ¦<æ­p=ôÛAϺB‚éñt¹Ik¿ Æ­ï÷äp�•½'\ ;¨<¬Ü#Aà:�*ú;9µ\a'cK—š[uˆØ²«XqSW+¦«µX®Ö‘‚O)’¥gœ ø‚˜×ãÀÙ¾‘3T…÷³çSo=.m%¥¤¨MZE²ÑˆÀ¹qEK#;s×Aý=wðaùAÚ¯›Ûñ]�Êr­ž�ƒ¢Ú a‚ÃcŠ/¶åèq¡5_Š{™(¼Ä“ºL˜š™i¤Ï!‡Ä•ÿ†œ}¬gk.€_ïU.þ¿phlØü"ßmº ýj”Åá% bÃ_ðÌŽÀöЉÑýrãU±ó¯Ž�F.ñzwfËò(×;ÕØÖ$jR6_ .¢òŽp•¯Ö ç‡Ú§StàÐPY±µÂ‚W­aÂ�{˜©Fm‹꘭ÖfÛ–¥1é¾�¿@E•˜;zR£R+(´T†@¿ÐÔ8>¸xÜ÷°–BGÜ; ¥]/(§²8Fc×+ž¶ðSòL9Øï‡ëW½`5ê–«P`%;]½>ì�ì 02A«¦æ6û&ŠàõµÓ‡Dß{2­ô˜¯Mq ::¬ësÃn,t›G?±5œõX€þ]ÕWFà2Òñ{,Ê<ëÎQ~û•‘ï©|õ‹*OñdmܹIêìÔ9æò@ÇÅÀýwWŒœÃqthÚfÌë´ùj"·oÓÎãMôÁ€D9˜¹AÚ4åªh>4ok9ô�ºÏì�”¶=`[5ë9GtëHs6(TAQ-½æœK2µo¥#ƒýîÙv'Xü0‘…X^‰÷nLrY|âÄÕÎ_ùøí�?,¢˜ ü,!ìt½ßKTz,³VrÃâúKõ7�Ðþ˜BvÆþ€2‘ ‚Û‰l R«€cº_Ii||hÙAôÁÿÉÛJj5ˆ ŽÌʧ²z¼œ}º¿žý6»¸™]ßÏo®ñÿ¯úÔvëÔîw^ƾ…pÓoþPKÒV1]ép„È£Zimunify-security/assets/ui-app/assets/static/shared-dependencies/chart.min.f5b7ba1a5f51.jsUT ëÆ«jëÆ«jux è‡Ä} wã6’ð_±9‡´ Z’-”i=÷•tÒ‡c;�t;ZDBÓ©��mÅÒÿª ÉNfçíûvã×"ΪP¨W®¥S¿ã…{3`îhžE2É3Wz�μ[¥,’H:½BÈy‘=ŠÍ¥ªrÞ£ n ˆ¬¤ëÜÆBŠH^¤\Žòbê0™y½(ÏJ¹•„VÅTÈ-¶4è-+G§ÈFcµr½^ÕB‰ÝÒ™Ùs5 ˆ Å2–#6Û0ÖÛÆ[ƒÜFÞSAÃâív# [¬¬Pî%§e¯ÑH�Y(o’ËC�ŸÌ�¹ä¥�o³X<¸|-a¹Ìü¤Ê¡PÝŽ™Su§Gz6fõ”ƒášò™;òz†J�S0*Å)â±d“|e˜$��ñëe„Qæ7Ù`BÓ*d&î–X™Ô×s²Ù¦¾qnoiÚÝÞ:Ì©& „©“Å<’yá æ½Ö¬æ8™q�³2�X—„ |z¹›Á”Ì]îõ§nÆ8Ô 0zÎ-¨S3Œ2Ì\áÁÔ»©¬ZÌm*ë6‹†>Y.Wž?ÅXËåŒ(f¨—�r"Ü£!¨æyP]&Ù\ôŒ¨±ÇAxˆ+ ¹éGyš´ÒƒirS˜êû3„® …ä£ê`ð°²ð°¤Á34-M3CÓ’hšyý¡ “Ä žˆÒ /?ÞgE>…\¨I'˜ô–KWS?óŒ|½ '+Ù}ü¶P�ŪX …‹Qn·04 ?¡­I ›?—&ýr–& 6}yþfÐS´u"´*&·@ö ¯l„’•–Pýí7�ª%ð‚ÑFͶ×H�›ø³y9¢0UÍ„dUë3P¾g�u‰j©í *J¼!Lǯ=‰º E=–+`ƒäÚT¸³TLè /Î¥Ûò@�ý<º¿yâz ©;Ü6ô~�úL)TŽìãÏÉöÕ(R~™ü)Hôa`]ðYhIwÛÄnâ=#·4O]…﹜øoÙEØÙ½b¯Â‹Æ{*=ê_|¼z{ýöÓëÛ·Þ¼ýðöú3û^íµ�[ì¾v ¿ìVÝÛg¯°4·[ìREÊdœÕìóÖfÊ/òyãÉ𠱿Ük‹}œõ²2¡¨à,¿w,…Giè¾Æ‚Ã-÷�˜[ž†í~;€O§ßÁO·ß Ú-o7©GìÏzĶ“òÿனiÛx°ú�™�z°©'|’º)¼S þ'S�øšÔŽŽ’Ò–%(ÃtR9@}¤ú’Óôô§I¦ð†€Š²Ücà:�?¸…t«—/lvÜui°¬ì_Ö³!sïÊÊþ •Ø6·¤¢!Â6ÌU­ì�ÛÞò£ìyb7„J�zîU€¿_—Âh¢„‘æ/ ´`Ûò�BºÉnÒ(wK�ZÎU(æ¬r.©¦a~Úô»»W;;nÞ/<öȳq*‚œÅ‰2ƒlUwà÷5!\·Uñ–éRÇkXiªs›Âÿ´!áà7^yß\4¯êŸk"»ò›‹Æä×¹?׺ÓèJ¬VÉg�2 è>ÃŒÓé³›73�¥à˜@ kDà!2�]9X+ðáËe JA…гtggrÕMÿú #±Š×À*³±ýÃô6l 0ñ+Þ9³¸ 6¡Yyjq&¤5ÊÌ�•jC zú ì©Pc\Z£ÙJC§™Ÿµ{^æ�ìì 8Ä{?Ë Kã ¥9 ù$ÁÁVäü.¬ža»•qFÓL NÃ$°b@ê/ºBUÜ­óÏ@+_î0™PÇ µ”Ïà·œ$#‰ßÊvÌ3•4¨%ÞOëŒ/ý[Tò÷’̘dSÃÁ‡¾i& ¤IY_@¨f¦Y¶³Súª=0¤Ú ý4ÙÎZ@Ö| ÛkM\°mÎcÄ[ðX� 4Ѫ Ö0KiKæLÜo] ÙÓøßYÕÂçqŒö§e|’j,Á¹RÞè¨È§€ƒ!!C U,FI&âZÕݲù}ß¶ ·¹Þ*PÙà½ÿ1¥<Ï’)Çbo >5½Á°Ø0"‘ß@·ªŽÔÆécãdzÚÀÞFæ‹dÓC÷} çáÔÌ m1¡œ3WõŒ¹.*ibü4ÂHïÞ,%©y�OyÕ²ï¤&pÀÄÑ E2ž`J$2 ®.ËdÍŸvMaUJWÀ`ìujBäO!6œ @•¸¢Ì )b]ô1¹´DÀÙ-)Æ8(V`¡¤`ùò‡¤Û5É‚ ƒiD ¯Ô@1&™È|ÅÇBþ\ŠâªŠÒõz1ë,üÕ­DÇwnÁ4Ô‰†Kúeð�-eTû"y雼øÄÓ¹p'–ñ0"˜}(1ç} dŽ,bÛ`‚M’ÈŒ~ë¯!F^UÆ$F3 Êf¦ ¿G¢v�±�An©^Ï—ÇE.Á*�°Û— �D”H¼,||@²)Mþ€´SÊ{�© ¥.05ÁÔ ‡²v#m€aƪµAá’A_ÿ>Wqþ€ñ…ÊOLþBåSC†ÑµëÀK4×È›`¹fÙ‚X–VA–Kô�,ŽlVʲÃÚ­]Ї! Í®¶ý2—¬£Ý‹=˜7«šU« Õä³5`ô">¦ÀP¼P¾‰súmöÓœÇßU)çÒ$5%ö¡ãé’VŽ+÷B¿ë�¶û`6@ÍÍ·i*Gé:/çÃ$ÒàëªT…"fAÿªV¬ìõf !lkuT­ªsÐ3`/ÓÐ.*½éÖ�íʺ‡v™§íÔê&w-Šü4O2»Q»Y�c7ºŽ¥Uäi«O0]Çö †«¶ËD9XλçžiÝdW|PeRË&›0«\çÔdyý0Ëì0ퟰ& Ýœ)K C»ù„%ëÆMáBªCyêwñ�:4FQ¡³ ÏäV\–ŠÉÎÀc�sk›´ N„Àq<„É�ZtÓĽ—áÞ¹“2åýåä~¸œ”wÞoîoå®{Óløâ·xÐðÜ~‹±×¿ù­dƒ†•ñÍÓ(û$ÑýÆë{}€ù›÷Ͻš_Ÿè»–Þn¢«‚åŠ? ¹·ßò¾iw­¤Yî>eð¬¹ÏNšä¤ÑTºÉÜ@q�ñçÀÔÌwõ¤u4ûàZ:„–©¡dW<×;P µªvJ· ¾¨»�?m»�‹'íÞm²Q9"ä]‚÷rÖ&ï ½G® 9˜±~� ¸t¿ßË WìAB6ES7Ba8ÂZnxµæÎ‹ì'0t¿ÇBGvH¡lmÍ<–¯­l` ݬ‘£w….À•˜Tk/¸9ýž„Y3Gé dÜdÔ?.Õš¬°VÂÕژؕ$뻀‘·W‚8Mú‡AË „JO@²Cz' ÃB+Õ16A;½[»B�Ý´–йå²Å¸5/e½à¤UÓú±�늛ր‰›6þt^ 5òma�í…Ð�rc Zø*ÍþGUì\®-ƒí¶ûÈYðSº^¨{Ð ³ô‘3d–º{â¦;@÷ˆŽ"‡ƒ>Hò¦zÁØ„¼j꜒#WìHs P¸Z¬ ´£ Tè¯�—�êE…*L„œq. 5þ¯žTJª{,‚G` ƒ!|:Ø¥Y9xZà!pb^|uØ—ÀIi•€}œB8ì×À¦s‡ý8ãÂaŸg*âd>uØÏ�ÂMB™óÀ𹜂Ä?æb#*á)/.!ûâHúsþ™ P�¡HÆX·;êÆD“àamqAáa 6\à´(”ý(â�Ó<‹)Å@Y*‹ß»äZÈÀ9æ�¡è@ñ‹û Pêvx°΋tqŸç1ax| ½Œø{‰µ»£Áþ�à°}ž—º£-LÉ£kŽˆÅ�Ó6Ð.ºúˆ­�º-Œd£4¿9<8銘Ë$ýJØ#>Q‘LËzGíƒ}LXðÌç«! R�‡_¿Ï. §ÐÏÃ&üÂ€Ê þaöç7Ø öÂvÎ× ÿš@½xxtˆõ¦|üFr„ÛjäëäNPõn÷pØÁ\ášöç8"€WÑkhùäd¿Ag>Ǫ6å•H{àŽ““Ã#Žñï Öñh#¬Ÿ�ƒãý˜Úú™zÝÀF©«Uô'�+hq‚zàN£xßañùlvIlœ¨xùu� ‡D´8™äÃü£8�®ây‹ÙhØÁÿ %½ú¨yv4â#@n”.å/ç€^§s<¤2óË„ø¸EPÆü²^å8’ø “¼”ʱšãkbÍøée†1æÀ…§^·ð2‰rDW¾»‡QŒG#BÆ›ä™X¼¿×Ó…¤¦ÎáÉæÇeœð G)Š»Q7¢„1tò‡°Hݰ¶f�QKC߽ٔy_ÀˆŠÃ7ñ_Ë Õh�º˜tŸQ_�¢qÈà�èõh”+.æ8 ¿ µy‹Cˆ¨Y¢ø¢8[èÙþEñºózø…èïãÀÆNZÆŽbvžÆ|xß|Ñì}h!;~ÑìØi ;œâŠkŽ�"�È}Q ytt||r‚Q‚]EKyž“µ¢”“_¨�ðŸ€~¤ÉT(NPaj¦H¼¤—o›bo¦œáš)¿ÀNâHcåO–<<<Œbìè'lÉøIM¾!ïvÝO³y1á ž\+†õI#¸ ÷�€Ÿh¾ �Qo|*gÅå˜ Œ@@ÂO4ã6NäO4ɈOŽÀ†��&q†ž&ÊIûäz7½”Ñg>%iã ~ÿzF8�bÀiöý�³ùhDñ!pÇLs£ãî>Œ©fèÁ¨ÌÒ9,Žy+ÌgùýûB±‘ ~Ðcˆø"=>ÐO'îï#ï) ƒ\”‹a‘£êB¡Šbõbñ‘äjûð „yöA)·ãáA· ˜‰À�[G,‘Å UbtÀª™âxØ=Âh9€ø»‹t)“70-ou;�£é�¹ÂÄë™$eâ»CÞ¥¹¯g`‡VO*+³ü^‹X‹AA…B\ϸƒÃãŠ2‰‚"† Š&)>*>�àëRµ@«ŒbR™O¹ÌIî2Äæ@íŠjUÌÐA´~ø^"/ƒÆ*UòžÆÊiþU›(êÌ„Çaxw¯ØˆÓ_‘¹{i |Kvñ¥\.ÝKiŸ!ÕÇcÂÇkç”^ËÍdïdµ»ŠF&+Ì1„^yZíá„G}& Ør ½­êäYFgðx¸…_ˆÎ87gïäM>ðzyH›Do3 ]À“�íC�É›bÞäggíÃô² tLø·“[k\�]J_<+ŒÈdxƒË$ð706¼/å ”Éß¡1¤ÎÓT;tbgLg¡Lg¡Lg¡L烰> ØGË?€Æ�9ý'úýÅxÈûµ·_9ëÏzðÏ&jwïoü}ÕÞZ‘§¡ßjí·÷[ÇývÇ?éìÊ í·ºÖJ2¸Æ{ÿÀkb2ûTW;htûr�ªÕ+Û®l`Ao�À0¬Y3Ñ‹ÊQKFf™² É7î•xd«r}[õþ?f4ðg7a¸�.úà°m:hþ ¸ÃàN‡%R¼i´10„@g`m�ý"×\Èþú“ÀczL‚Ÿi>±V…`P[0¢¸\Þ�œòÍóÍ}³'}îƒSHu¥b©B*†@ ¬*Le}ââ0‡çyÔ¥no4Þ^�L¡¼Ç¬ãÂß[.®SÐVl}lm#Û°òŸO<\œœÆËU‡ÑÄÍy¸õdo`R�­“» t›ë5H³Yy± š¥rva2“CŒ+¿0ó\œ !‰®ì)?³(»¤ì²ÊÎL¶ò¶3ÊΪlt^�^%Ð+z嫺 È·_E) ùÖïòÑ:UªO­�Üþ]nžçÕ8E«²†:OåXÓûIHœÔ²C�§‚B�uÒ3��`ò-ä¨#3]üô3äD°}´;”7ÈÑÈU …‰ÎôR-“«R׃q®[§QZAHð¶Å¾ ¯jA¦UÜ¡°vÿùÂgŶð;Öß!}uã+ï_ý‹’Þ¿Ìú/1“\MÄÃßõæ½�¯Y9ž”éßÕ±§=[_?ã#”†�"­U†S\|kp–Q°SŸ¤©�Çj@)!DÊÕ7øÉÔÇFŠ=SÊû×ê,¦Éƒ’ÐJ7T”° ”£%Røê5ZsÜ@­IúÝ@0vvóf¬‚ÄçÍÒç, ]—ïaØl÷yàòFáí¹í$y¸¯¸×éea»™²Î¥tB�llø]HWÉcJ«äa•<¤ä¡JæaI¼á¶›¹·‹0�“•50«ÒÌr\áZWJÈ_{n.Ü™õêOÒ�©ý "ÓùV§ƒa¦ƒ¢xÒ³‘ìº*_`Ýf‰{¿c�›Ù¹«™aîPçæv.Àü —0Иj¨Icn�+(6ú=áAî‚k_s(éú]s3²ÁЧ³ ·÷Ò $­+0ì²âù‚¸/U¹q&'R±lÔºs"Œ¥ëïïJéøÂжۻH¹šÙñžÊWæC¡€æ3pgÿ¦ñ†n<cÛgZ¶�Ù 2[TxL–‹ (ZWöá³– `fƒ+±W®i –²‰õž/Ú®AŠ_¶[är½ Í¿J^'ÚÖÕe\ÇoC�›€&r‰1äcÈáÊócé­°öÆ¥a,kåÿ³4 ~g§ÖÔF™Ûû2æ²—»yålë%ÏîxyÁ%LÝL]4[.7r¿+xœ€Ï ²Wæ�»uÔÖîèg}ºàŸë�ýõ/ËøÕhø]Ï×ãí·=ßRÚ�øC>{£çÇg“ký;Y‰àjƒc«>÷.¬›Õ%Aç0+÷LÐ9LawÓ¯0€+‡áó\ž»§òec_çÉ7ÑŸººËP*ÐÇÁ�õ2ÜЮëÄbÄç)n! o�ý·iüwqs„3T*I‰ï!�¾ŽépùË<Í‹Ð!ů�B ¾£‹åE Þà߉Tæ?uоÞU¢÷¬Ä] :x‰]!o‹LxéÏôuN<5øj£œ«­*‘Š)0` PÜQôÆ™æóRLó;<Lá|ŽG…£4‰¾ÂWæóh¢sê•((£áÇŸ&é"p¾ý^¤wB&ßú æâ[¶U§`ä¼Hx �œèf)Š×>’?îñ—r‘ŠÀÉܪÁ£tß qàwvؽ "GèþO E… Å^l ˆÞ\ÿ•tÓzžgW³h­J�nZ0²ŠÐ1èó‡¤ �Ç$�dàĹáã4�KTU%P”òJàù`»‘(�Çâmv—”ɨB�˜r(ÿÎË”U °­Ù0Ͼ'R mLÊK<+>`‚Tufé| ME>èÌ ø>¹UR‘küN)u�r’ß¿ƒQªjÄ¿?4ïÄkÍl³ë|Vç‹2*’!ÝUÞ^3p¾(Ý�ÛŽÚò–¤ûÎdy«ÂzÕ¥ªˆt(’øIþ:Æ_Vë—êÀT4ºÙàÜ: ÑÓRI×—ÔQ‚_ùxS Ð`é\^þ»/ÉièZ+ Á£ÈæS~•ƵuåÀèÀ{yÕu”ì닸††kêÖŠBº~(Á�Eëñé3S=±-}š¹úJZž�¼%5%%ºÙEì<ÞŽxši³Ñb]gŬX°ÖÔvÛ \ þ�u±@ÚG ÔMq“Õø‚ôW) g§‚—óB\‹ôÞýû$�XߘËÐ’=+i?=÷˜uŠÂUÕ)ÕK¥¡’¨´”ƒ‘1/†|,`*§@å' ËåÍ §„Û¶qÑ„ðy7à)Y(ÐX)ù�@Á«“ÔaŒÐ…N×/ËNXÄb6g#Rœ(69M{“F/ÆÍAKNLÝLŸïìlã¼Ì�{^]i¹”Íë;ΔIwì@ýÆáÜ4�ƽ€ŽÂùM¤ †áh¹ÌÜÞãZ7‚á“(@ "ºßãêB)øGÐÒøÌà¡ÖeU×ÇÔu}ƒ#¿áÐýA�›› 0*…^Ôã'Ħ/ºm^à2ë¦BÃU_\sêWK‚É^ÏèÕ ëÖ—+À_Ù-ñ0JV7—h áŠ�®iì| #…<çtbÇóÌ $‚�׸ê‹–’ÈѸ„a'E.5�J0¶PGéJŠru“¥Å¡™¨'š8ÖC âÉT¡Ip‰†¬­Ysñ 5&›C”,l¨ÏFSs^k�Cw¾\¶¼Ý�8^ñ36nL¼[æ-«L×ï¯ß¿{;.×✌×ܲm±€²o×JX—Ê«‰@ëæäÖÒ9%ék§`ŒaTÔ�³f¬è c AERëTWT&Íd3)š¦®º™ˆ=: [ž÷XÞ'2š ã+@ã�•>�þÄÞ£6ý‚¬/Á6J“YI]c46"ûìÂC/¶ˆ(yD ÐWpVK¡ÀôÔ%Ü 5ˆG—ú¨ƒöÑuî&�ê€øØÛ±²>MŽqð°á;\å¥òÿ¡ø_vµ@ '‡ˆ�`úÝö!ÔOÃQß>¨¡4®½Ýt`ÝŽJÑDirh³¾7¯àß¹g2dpÊ8gã:Ê7¨<`R—eƒJ7 tãêßtÜ p˜ç07T¿®~º¼nßv�(Ìú0xvKè:’²ÎnÿR jd¼¶  m¬‘–6ί‡T!íÙÃ@Ø®¥¢vŠÂño0‹Š¼,©+uï(íØ·ª'K>é­î›Ý4þ×F¶¾fÿXbb©¸æܼ :æåÄJâ­Oܪ­r}"{+°’4%M£<�_Pò�µðÍðLó¯¨W¬lÄÆù=º·êw½@‚•Îpsq$› ÅNAE mPtq†ÙÌTÞâÛ”2Ÿ6¬Ñ\kKKœÛÂTO7Õ#hL7ѬÔ&媉�ÌlõXÐú�|Ns¦k:q}¢"ªÿFâ‚”€3Mâ$1®ÿZg†…ÿЀb¸¶[U+¡g klJ²BSÊá#IÏ÷„Ùv¸½]ö«BB·¬µŽ€zOúSc1±ôÿ¿ÁÉûgŽæ¼ þ)û`sÌÚx/šu˜Ž/T|ñ„2‚„Š™øBÅìig"Ó².À¦5tJí‡L&a¡®â@“JŽ0Ù`À’ñºiùr_-̰õ?Q™�„|W[kYtÐw-¡=ðz¥[<ZoÚ”°R{Ú'§]œMd*…ÆS‡l´õÎSp­¨H ­SìLi¢ª¤I×ó½`Wà¥w0ôOÍsB½F#òâ0E›{ ÖˆG U\õp-O¨¯�ÚéŠ](º><äwP”|§˜F·@YeÓ )žÏeä4cbŒ8ä ´õ«%˜Þ³3Þœ˜ ÷W!'`|�'ø,šQçÑl̬ûxth]4süÊ9Oé.pÌ‹üáJŽ"�gò.±W`³$ÏUÖ-üG˜Òl”ì>ÈØ$€#Ó>à+ð)+³ E*Ѫ´ÂuŒ°+¼:li (™7¹–ÉXÈ2Ò¬Ô'ÅØZäŠ�oÀmdUq5@%Þ(0 ŸÉÜHY��ƒÉ½ ßàx©|´I]+¬` I±Ð"žY ©G.ÅøõÃÌÝû/W­H.Ýßâ†Û~óáëõ=wö°Ó% ùçX1Q+‘üÞ%¾Ñ’`4›ˆ"‘Ëy^åÒ͇)žw·šý›Vód ~é �‡`ë5”™Í â]ÇiH¼ñ€ÎÍH(ïô¾Y?ÅG‚PZj%Óö;»¢g|¡°Agö®XæøLH–ýõgªhK–V¹@U…g)=ÊÀä ¾u6ÀÛ$gøD€�ÈÍ—–2ß” §Â¥‡_žyÀåÁÞj¢n= ÎÂad”¸0«�ÑBÁ4û}«Û'0nÍ)´ ®X ‚õ|¨"*Ë~%n±vÑúW¿@A~m¨ ¥†¶›@ë)77$ƒ©aì'ûDÏ�±Êð¶;�±{ï¥xÕ)”0Õ�01ýSïÉ> ÞMIêcq k·ª&¨6 =¡¾^´å6r^f8o,ðäb–§€ /2÷Û·�.ØÂŽlQÅ-\µNF‰ˆƒ-çÛFÖøÖùù¿2ZÁì!`«*ͪ€goÀDHµT)P¬Žàn�ÚQHô†Bf¶°Ö½©q¯K+zŽS�Ùʵɲö ˜Þ¯B—š¤ž êöq'0ôêëoÃÙrð:_£j¹oU–‚Ö€ ¸ZÃ[¹9¾jP_BÜ\ÝTkBá¶z|&ñšPõÞINOÇåú9Å›|ÀªÇ»Ðà¨"âÙW±H8q¡�¶WW^É\¼úˆù7É7…np°Y°¨€Jà——kýˆG�«ÃTÔZù»__¬__ö^ß”ÞÚ[’_©fxã8xhL2ºH2ìFÏ{|¶LeøV¸Nµ¦íà£A5×Ý\-¦Ã<­Ö¿®ùx8ª]‡ÝVÝÆµûÛ2Êg¢ $»-ò\^©XÂêõò’ÝŽ…¼æüç™íˆ Ï ·7ó}_ôPV,‡Šã¢ÈnÎôK8æ%¼ÀU·„]½žJ¯Aš°‹ò´z,°Æ\Ôpؼ«žú¨–µˆ0›7û7e–ˆÍÕCsô%�ížžU“ê=®¾›bHùÌë¿V°1d+ô¦^^ö¨Ö{~¯„Ú+È‹@o›]Š®›ûUŽ^z!ú’@/̃8G¤,V–K£Ï&¼4mý‰œãë½5T?,¿Ï~Êáþe2½µ¾þ|‹/ 2ºMü£Zé – éxjb=YDƒ²ÝZÙúäêÉ®mîj3|áòa�Ì©¥hÐ’·å|HœA/µHd1ýà»�+b•Á‚/ �—¦rxf5ºÆŠ˜îW[e™÷×üÈÿ~”kÜgî·T�x†ÿŒ‘«/kĹ…x±Žiº •v›á{÷î$Rê'åUµå’Rš<¹ÈºÑ`V7˜[ rCéb&hVô4!H ôî‰:¯‹xÔ¹Ѽ(•+„Ï*“~kXïHžÿ{žd®Ó<Y�¿øÆo¡¢òPeÃü—Ð@$úŠŒ˜þRÉD:" s,3s�e´�i½� Ã1Qs®—%&Z(ÿ‡ø{ŠÞ»\?-»³Cä€Þßè¤oÌéõ�õÔ®Pb¸:"ö`… zTø®5^©—t‚¼m|ÎjC%u} „"@ŽŽ9í^¡üU¸³Sàs£xVdµId�·fkZÚB†b¨?1õÕ7”�¬4�þ­,SrØ¢—º…K߈'b(ØßØ ¼FÉxnâ+}Ú1ø÷¢Åñ µ0T�ÝìU% m:MKÆÀ5OÔ‘�VGè o º ¥”íÍa<ØPí ·VZeèQµ7“ñ1°*Æn5u\©Ña”úDc•ËlØVó%³Epï¸$„;”ªù2JpN(£º×üJ˜C`Ç5î”ó²JÌIì8<æ3<ÒᨇÄ]µÏj6mŒ š‘¸(U�8ªJZ®ßÇj�¦Õëå\–Žªßìs7t—½‡~¾¹�|O'̈qª7ů+|·ÍsãO_ï/èñ^s~¹jáÝÚ‚Ñ«£ò�®q^çž¾g I\ŠÚh;ǵ¾Êèp™§TŽÏ +K?Õ«dùÊH¥í¶:rÿžž$NìBt´èéÁ¼×Ïhnh½6Yñ´C%ÏøB‰D‹�ãRªy¨pBØèC£ðEP UŠåëõ¬Þ@ï"à wû=(’å™_¬*,–LQ|¬LKýLc¬Ï€�«ˆh¨;IšÍD£o2ÅGKOSp# o�„E ìÁÓãxÚè±2:Q&Ü…ác¿“ÚxäZP|æeæ×Woß}ü°\¶E³}À^TDœÊÊZÙFyä—_“>h ÊøZdrôS“ —hjQòá™c\’êã{Ìøn>¾èn`z…¿ƒ©E�Ôþfmîi#²Øs‹FŠ‹ö© õ&¡:C0ñú­ˆ¢£Fë#åî„Íá72ªgVˆ»$Ÿ—ÁãC�ûÍx쥇fæ?x Â_¨”¤,¼ËÐêREóÍ¢*Eµx÷{¥\�µYô š»Ös§à›¡Uûˆ-<ý¿6Úú@IøÁµÔy]õ?=Àº\-¤@©‰)Äñ­µ”æÜ¤>½6�qj¦(²> S9²ïNÀ*€ÔdàíÉ µÊ1«èOú—.”j¶£ð)ªßë*ŠŸÁjû¯Å•ý<(«ŽÈ¬a¤ä+nÅ”Í6íÂXE„˜Ë _߀¥ X‹}` @däBÐ; ö¨@®ÓU¬¨ßúÎÖ^bÎ!ÆŠÓð¤ ÷÷ê·ë p¤|¶ûÿØû÷ö¶�ký*ßT›‡å4ÝÝ `>¾äÚ8qí¤Mª££B$(¢†m)¾ûY·¹ d·{¿�çI,b0 æ²f]+>¦6ä=…\#ÁDÁw”ÿéî”W8å¸ä ƒÖ µ‡€�²þMóG¥âÙ¥škˆÃ²MGsÔð\Àâ/Ñ/1æµ|Ó´~®Êó.6§¿óÏ ‚Ò,ÆÅ1R a|WÃ87>ÑŽ SÀŽäA �iuµ=ÿjs'{�Óïÿ}ÞTÄYLªMœoП°f#�K¥�r ÷?¸)ràµò„3È,<ó[¥oyU,“àÖˆ�ôÃÙ@RøÜ"E_P çCê:ÑÕeÑÈý”ª>7VŒNU<VsŠnýCLVÑ$GÉG4úFÙDS É-—ݹewTöë!é‘:Oîôõ,²²A”áÍs2>¿F3ßrëD‚’å�XCóòr°{pÝ¥¸�qÀÇÒÑ)©v Ó"í.´œ¿ç_‰üRƇ d�mΧ+Ü—֑Ü•ÒÌÓÌ“þfž˜fžt›¡ÍèÂDýjƒ”PèCD€ž{Ëb±E9'àÃãC8¢üXJN¸¸ñ³{»Ž¡å7ÀrJ#ë­G:�Šªö˜ƒ_Ìv¡Pj³ÒeÕ‡•UÿרþW„Þ]n’G²Vðt¸h"ŸX xŠ I¨BÉKûÏ1^ X±]±ZUIý êÃéׯaÑD•åD¢ÃS¤ÇÿHa Z#1$ª‘#…ašªyŽW•¶æ¿È0¦ŠpÞMê2¿ÌïÔî]"””–ÊržÅ¾U�†¯)dMÇ=k:“fùÏ�þÒÝq&õtáÚæA†[òCO,vøôØOÑØ�º‚ŒMÑVKàû�'é­n=½^y¹%z¹¥J¿:¬p�Í{Â.­ÀtVêZ? [™X ©óº‡LرÞC’6™­Ç‘X³GÚ'~�E²ÞõPj*»v1=Öã‚AIÌ)¯æNÜ !0—f㬣¿&–ýCUnæú;-¼Û ¤5v6à>Š�¨`¡zë“'ˆÑ)'F!mŸA°bO5,'wQä±EçÔ7¨eL£ëDùI¥£¢â¤2JÌÕ€äÞˆÔlNFS=$r%�À'è?¨å׈þ‰€2ö›Û*¯>ߥŸx3Pý�¨,»¿×ô ÃPðŠEô†@ØólT©Ø|¶ŠõG£#h};ñ",*r¾§)å�ж´'?%uyg´3;Ä€Ø éø½N^cü†$Í„-�û%=}/éK†ƒšBñ(ZøQ“½]·ªÙ,ÈØ8%ÈI‰™ú¥|Ê#D|E/L*\N÷ÀÞ„$ÙÓ™Êî'ÿ_ôB †â„´¹E!͵ÌGˆÚ¡AlH‰CñÍÉW£3ì±Î$„' ˆ\By„<ã�kÀq»­æ)hC;!´ZWZ¼qjÊÓ§Ó9þżmŽ·qÏ E/$.þŽÜ5°½vì{Š¥ì‹±Yô½9‡ïÁoä)R$ûð» í‹ÊØtˆ¬GŠ4~£òÀfk‚ ÉJõÊ+SR˜½Š7vj³´%�¶\#B 2áÑõè»·?þ ž%é �l%•\™âÜíÛIíJ/Ž<›°í+tê’pfxÍÕ¤aÞ“Ôó˜L‡*¸Çí.Öó¾ˆ>†ÑS Ï#Â)NøÂE çR£Œ7, J¢RÉÕ¡°í^ráäo_g[c€¯Ç 9YÁW|_—NiýG=¥ÌpßÞzuÝjrÔÛ¤³Œ©'±ÎY]Ä륬3úIé�4µ_§*:O»Ûq°LÑÉ=¥Jïþë2-Ê´¾óª\(š$]ǽS2Ho6EYÇ9°ª&]a_ê:‘›îh)ßáºí �³AçYåÎþ^heWI¿M�(g¢ÉÝ]%õ‡$ÉßÕ:�ÿÂÏ;¢«Õ¯Mhjüfj8“o«Öþ$­Ò¡d®�Êù˜Î_“*847a¥}¸³Z¥öR®ÿ]åàq=: þ�F¨„�çd|³ÜlVh,` k£=ð¥œKߢJŠÊZ»ºÓŸrƒ|ræ|ߺ‰¶˜úKIGÔÈ’;¹•n­š?üxÌÇÎëJýºÌO™„ôKz°¤&¶ÜƒÚJáûWlPYŽ¢LmñŸ5ŒÙ˜Âõ0Dñ°&çË?dç‚ý ¶Õ‡ËñXmÇãÙòøü£�½í†bCAÿkåÃÅ/Îð¦êZçÔܨu¥n1!Õ%…­ 鼋Ðlu{Ÿ!¿R`2Èà ¯õžîÂm”J ï›«TÕ¨ê¨y´˜ÕgÑ>¤n0=)ªÑnHÍd`­‡7ôµhþ ¾æ6ʆÖÅŠ ÷òèèŽ.—¿nƒ>P°X� j¼§×ìŸ`—÷% G­×¯òج äüÙy²]E› m „¶÷´º| Õk'áC‹Á�e4™$תßR ˜¶ž6"Ù#Ñ"õ êý cÑ(íÉdRX”7'‰D‡�@ÿÀjb�– ‰(¹oÞálpn´.rÙW)º3mð!Üx—nfd ¹î´ºv ' Óš Xý² À’. 튭t ù/�<Ô'Ò%ë)çãÓ�Ô(ÎÛª¡x+,c‹Ö,¨ÇgÖ„âÄ'#(†j‡¢G  !r™¹¬C‘oÁžþ!CN­�‹v·„Ž-C15rVL2_àž¦~Àw�NgÛ³ˆÒ€Ï¶v’gg‹ÕXwv†PàÛ¡æ0Ȳ¨Í4„mw ôp3} #ÏÃ>ÜŽ�gpÖA«ÊŸÌ7§nS`°kVÃ%�ÌH‡_‹¨3^DI³<Û¢Ö¸SÁˆ’�Y-nŠô+ç8Ûµð?`pZ%Jà>âÍ[!V~�ÜWks/œòI¿åÝå"©ól¿qS¢œP?s—õ ‰í^9§Ûmê À#´ÎÍn&” p.S„ÂaˆÚï‡Â1ðxœÔÐÁá]Yi&YƒømóœGN¥3*ÁbÐ�"Íe^ÔÔ³ö>OlbIy- `¹å¸šYnÓFVÑÓj¸£wa•‹�…èÐä›·uÛ½ÐJS¼ mÞ’q"›\§­Êö_ëSÑÿÓÿ¤©òÇ¢7»"WÙn–„÷¥öŽž´zt¤kH'¸Oò|áÐMòâÃ0ÐVƒéÌ~;0âøË|ÎDš' tZ'7š°·“ Ë]mKŒr›ä´Œ$kó,~ o�ã ˆÐB«ŠÉeL€/ó!ü¬‹:Ξ¦f¶Paa."]¶õ¤N)¶< È| ÚWbÆûM±!W[rG„3ˆ²p*X65¥ƒ¿†«z'- c?é¬@ÿ9dä�‹&†^ 9§UÖí4“Ò¬Þš¡f-Ÿy ÌœL˜í³òRº8“$q¤Ävü=8ÏìNšBg`½œÑw§%„ÓÚìŠp§ûŽÅúûáwÓ(âøI• ŸÕð#šÉäž8}t6ZrÁgH½ä‹BRìÑQb÷îüšô‘Ä„Ýd}ü»î: lC›oßHéJûÖÙy²i�ý ,}@_AzI™,·‹d¨Ó+�"Úÿ.uíÓ©Ö¶ƒC…_f@1Ýi¶éÉê´T:Òš žø–ø#ßO¡Â°y“6oª?[t ©ÙG¼k+ÞµU�=Eñp‘dèåÅ!#èí\-Îè:¥a�Xg’¥ËÆ�¹1cwi4p ³–<Ú]E–ĹõO1ºíPxn[ËŠÐx÷÷wäòPM(¶èè *4lòÑQÎ7çùCÁÉÅ¿ÎÏ„«¤´/®G(5bÊõƒÿ¾J}ü·ÎÙtž^̪èU2$œo²„×ä©uaýù.b¢V¸Á£Ä”Òž+diWùýýû¶êþ^̲…ž’$&Ø®ºðï‹ûû‡?Å¥Tâ á(›íìaèLK|‡(0z­›Ý—D•}]µÙ!šúãu(Œ—ŠèPuØå/»Ö)#4r[ ä�OڥLJSéåCýÓCI_›…ÅÎ…³ÖÜ!¢BD>E÷÷ ¦5?ôfÖ[ 2�ÕE â�÷S cgÓy».Ж2JNÒ?�ê;+Ñ SÒ]¾tLÑób!^ƒ\�i rŽ?u˜[w3Z; ZÕ°f¦ ¯as—j ›ÆiÙj <²4Læ|ˆ/ˆLkRx®F×÷@IÇAÖXcmÜNšº@�[­ÉaPgKµ"ññÙ™?³½³oW¼x/SŽn±”-?¨÷‘S߉’n™(½L¦‡0.P¶-“÷ˆ˜¬47z‹! äVŽ[ßbáÌ3VóBÌjÕ<Ç06t±ß@‚*Œ·EY'Ë—¬¼~•ÀmÁÇ/¸ó_n­&gÅl4ÊÙˆh4‘àÙž§—Æ0â qá>¡Hò"àa%žÄ�öbv0‹MDb~à­Â2q<¼�rÄ^³‹”P¼ªÝ ‘¸€w¦qE1?CÔÎ#³.^zoàã# â �³a2Ь*Þ µzñÀtN(Æ:Y:*0;sGGÖÚÍ�”¾/, "üx‰UÓËN+ aK©Ø‰stìPö4ÌÉt‚ÛõºÚÀˆÿ�™žî*Ð o8|øyÎÓJtBtû=ÄgSXÈUôQœ¡Í*쎑h³SÁ�Xâ«Ñ³·FÑuÂaéé6å7QKöU¨÷ü#æ€W´W°ŠI|›V0ç1ÿXt¬ÏÜ3òK—Íä³]"Sýûû”ôÍ?ŒWǠåopÞ¶ä ¶³Úsów@• “°¤Â%Æ”o£áÞ�  Vô#zïP|ÙÃΖj‹2å&‚ ÜB/§@ó°[Þ`glsïTßsÖã÷íõ(ˆæzÅì�ÚC‰‰7¢¯ÓUíB¡}Ùi·T‰èÐ%O?Ñž Üü‹ÚÄ¥S‰ÏPÍazɲͧ9ѱµ(­´´”IÁ»D–M¸(µM¥�/ü¿ÿ.ÕþMJ±w}L „+Å!0µú65|ó:ì0UµæŸßÇ?ûìó¢¾�È ÐÁÏ7Z%ÞHxá¶ÐóÎþàÃèšÉ²1àÔGíª´ !_XÞþÒ€äkU ~{U8 ãe§œ¹»ûZEÓÅ[R(uŠ_ ÁÞ+Nr”Q¹�·Ð¦Û�j»A·¡êe²ÐÙ(ô­Ïǡթ»|�®‹FÃ+V8éaíº-%†²YK’‘ñ¹é-àŠ@ð.…˜GHñeiëd,än)éà­ÌŠ�ý×d× )g©÷Q« n^ÇÝWûÝfÞ¢;íZ?‚É1ø¢[¥9l”)ˆˆâ܆¡hM Lß¾Œ2DçäߊÈäd›¼sªÜyUî° ú•N•Ò«Rb•RCFïs:P÷=Íôˆ9™ê~)‡¿¿Ç c·€ñ#Fn„d®?=Ô% K£™Ž[H(HÁËÁïÝjDsŽŽþ:´W´þÝmÆÛ…»/ÖÉâ]»Yo©ã‰ÁɆüU‘V¹ 3ÆkA„CöúÂßÝ’òÂÙ@rÍ 8y\uWÚH:‡+E¢VAÁ \Ñ …n¼úõž�#r'6¥AÊÌ-þ v²b^V=#IãÌY ßÛÀ¡+½O«/oI]f�‚X„WCTˆˆò¯j^™ŸÖLªÓP„þ” hZè‡HEè!¼(ÿåTqÒ��µê‚Œ@Ú;_âÇ~pYä8§ƒÑ{{ÒØìëFýQo')×  ¨m6Ù�Î…bé¾�ðtO=0r˜Ûéèÿå—°Æ€ÚF·Þ9Ÿxå%�dÏl¼£ãc6Žl/…’´ðô‹ôARLkwO½ ¹Ú¦ÙòÇògÚÆ¦P‰¾CF̱¥Ðî¡Q%fWÏïÕ]¾EB]ÿ¢xL˜SXèö¶¾iMÚ8ÀNça…ßßç$Té7Áòÿ‰�\4Œóvq••}G¬°†®T #¡0d�a¿ˆÄ�ê’¹B°ö�'ÔÌ<®L#þ½IªÓoËŽ÷ÿ‚Óæ6 Óíc"¯p/Wàñ ?‹/-_i`°dIÐ` Y±@å&q!ÏPàc’Õµ3 Š6¤AP«¨FíT�õy=>euí©UÊpçS)BXrig 8(raäú"`Õ&rŒß*Ð|I�J?6ÖÖ²w_—éMŠ *¯‚Q"£P\b ÒÝß¯ŽŽðÇÙê\¼ s !§aû©ëQ�z«%궦D®²[ò¹YE ÔÛê�Ü6¥]˜° {ºµúDËÀJÍèÅD"o©…`Ô‹À*ú>¾‚R(f,Q‹.&ŠMɳ„3l c¾<ÛÂ'-ƒU´DD”ó%œ]çñEH@×¼¤²óÕ…Z ÓBR–p™9ÛMk¢ZŸr«?åÎÿ”ÿ´åÖ€¶,Ð÷ÍX#ºäôÂqi/“�éãŽX aLÉÏîôe/܆¡Éº_$›H¯!è…éì|­á‹¶ðEË •¡zÀù¢;ú1­‹óMXVb™ùª YÄ×´».,VJ4[óB³°BCz)>A'è[$5••Qòîñ� QMkÔ¤Åz™ħ _§ÃŠ€Y'jò]é'”DÍÀ æÐtÌ<è›8¿N¾*‹ýám—8£å½œ8K¶v>ÿ!þ!´¦£Š¨–¼W?…1ùçqÏ"üŽ—)ãôµGˆ¹tJÓ‘Š/�v࿊`Âoâ[ûI—蚉Ò@š¿Šoû¬ ΢nX¦NÔeDKŽŽjR3�pt´Æ - Pr`ã!ttt˜LÖér™ähç²<¸™›Ô�Òî„€e'éÌ>3D¤×?¾ýö§oÿöåå·?|õíßþô+ïê›?|ùõ3ïf£èÙUZ6]Μn't;Uðû%£O„é …BÒ÷s… ·ù²2Xpô|Òï¾PÓù<ÝÛÿ¦–¼…‰fš˜àVÀ¨nµA$‰V祷ÊãáJ/ãàþ~ñ4¹¿_ž% ;©OgÛ3 ¥‡†´CEÿªÆèô•Êu˜¬²%‹Kp3Åøt¶eóÐÑ�¯Q‰û͉>ܸ™£7c–q% {�'4Ë1Õñ)éQ1AÚ‰¡pl¤¦¾ýx£U†F1�P}ÚèÓíYÎ=|„iÕò«BœEá8sÃÊb©WJ†M‡é|0¥æ �›_•Ÿ§2“á` N…u«¾º•­ÛXGçqgÂÐ#PgoÅ`t¨—¥okpÔ�Õx‰‡œÍwCì© {`&gó`T¥U�(ô c{ ðñ‰€Ç§:¾bàø\-Ó ¥*´!#{!zÜ(vMµuîšçKÛ.¥UDf0rw|›’w�}ìGŽÒ—Š~Krñf§^U|�–¢ 2ª ÃJ{ �Íí4ìoݹê[­^;^?feÙz®ù ¶�^(Ò¾aF+z?5”ØèDïï5•c®vo4÷de‚Qˆ´X‚[G~²9£óC€³ˆG%ãbé%‡ö®™&÷ˆ8Ñ.vÙ¼à]ˆ¨Ÿ¦1 ž4ü®¶ES“´d«‘nJ p\÷‡ù€Û„f1ëµj´øµö½nqðQÌÑ—,%½ôÄXm¯N…±w*µjÐ ¤ÔE-\õq.Á–À;j ªÐ¿³Þšä�{ ¤pM3\(Z‡MÃnÚý¦*F�×J‡§WÄAE‰b¢«ýË` ôOI�¬añȤd¼zèÙm€ma2#«Ú`3²þ+á:—]2 ·à}’*m^•arÝC ¤×*ë|¶¯ÊïE èûn 9Ò¾ynxUòøg¢rÒ|iOp�£^ÅoÓª“ªõ]ú•‘­o\'Úÿô²^ƒèœ7.Ú6Ÿ-•Ûµú•7“t‰©‚XðÎx~Tû­ÆÑ´Ñì{áÍ@;{HotT"·ø­˜@'Z£Bèʱà„.ö…Á–=’bmfþ–0 ´˜žõ(lÖQÖ¯>½ n@𚟣=¸¡ÔÒÿTJ <À¸™ÁExNÔÚ{\¿³Fü¤–;§NFŽj �ý3MžÐµM[Ñ0Ø�Ý�Úû�¡†Z9þ^æwT*CýæU™$¿'C¤»÷®Ìú,%²9SöOã»4þl—4ÿ”¹ó¦&¶~Ї®f3ë×ÚóR=oydÖ¹ékïÌ!˜^T}Äœ Ô.bcùZ¶¢£eÃŒ`@ñ½¦Pb‡òB¦ÛÎ[Øb*·y P¹Þ�„ †Ÿdñ·®ÕT#k=�¾¸g`5ÎÕ¾ÙµÇ�fNÊûгùÑtþ&%¯EgÌ/íW½ÆŽŒE­¾vDчé�q�÷zìpÚ~ó„á&ÄÔë>ÐŽ€u¸ÆkÁáŠýFrޱßy¯~Õo] ¶®šÛjÞ ´À¼í¦9ŠžíRD`tä)úº¥ƒÑ@°~“’f_súØöÛ¼¬^Š;ZëC¦2zu3®T;6ÛßëÔë÷NGŒVÒ·ÎüÐ$4:Šh¤Ó%mt:š*}( „;ŸøÐ”Ž|›ìbçùý¦M6f†‰tš—áõ:†÷ÿï^ÀѲJ´¸C²xv z‘uŠ9§1»@KÏ”DL8UXlꘙŒˆeBÿ­ ®ñºP)•ãz)ä“X�8%$ˆ§•Äš¤y•”µù ØÊc´™…ùYe4Hé*Ðæ$�ö“Œï Cã®L¥é?1ìüÏt´>Ú9õ&ƈ�¯-ð,Æì³x<jŒ²…ÆÉ»�—è!ug1y+ÆÇáºv1‡õ™yê[ óÃÊXŒ”3PDîR„­o@£ü%ÊXÅ[wÍ~nÚc÷ æÏ†iËÉÎN³ôP§Ÿ'CFê[Ò)÷ Šnµ†Ž>•¼öýuÅra8@•çô!0Ú4hh¥—¸Ç Qï$VeÇ‚ÓDAØäûzKAézÆå5aÉgSÛ�áù µ¾æL7§¿+›�kå¾C®w~sþL ºz]·µSuj[{ËNr�´7õ±Ã�ÑÇ�ôcâŒOr{TÆOfi»…ÎÐ 1ïþ9¯z;Ü~hªÚ¯ºp� ¿J=š¦Õkmô7Š,–qœ|v—ÎúÞë„jPÜø®„‰&¾+9Ë)B ŠÈmk»ŒÁÝŽ;b¯a �ÞDu�ØEY›êzœ6’À«�0^Áê¸>t2¹”Ži’â>òßúo <:ãï?óoÌ1Äùå %.9./¾ª†Å8Æ,äSU�£FM{Ô¨$—#þ Ñ8¦„ïƒ‘Ï x/Ç“ÖÄb,dõHC?a¼dÅ�hŽ×Nýߺ7¨‰|Ò&Õ4-riKN©$v%Â55’\g1È¢s5ÏÌHÅÁSó›öe ­#ôèÒÚhMJÓm…N³;˜CRÆ…™‚Ÿ_æËpí#P¡Y!ŒÉP6.ÚŠiÏt{퀰<ï�ó«­5Ƹ Æ-Ël)–ÙLëÎ}ã 7Ó‘5nÙÔ¹DÑåy.�*­e6ÆÛ ‹fLmÿ†~ÂKX¥kçã¸eÿ=u•Ž?:ÂÆðXµ aÔìó?8_Í J:™ûÛwéf“,M°8âX-È[áL^åˆsáPÆ�‡+’Šøp*úaø!ÊaøEzáCd)á1Ío©Ä¹¶°ÖÏ-š}:uUd².Êôw 0qÆÚõ+8hž"Æ|1. l2A BSãŒQç è7ÔA4pX=óa  _ ~À~âs¹þ�¥x×€�1\e>"¡�ÈõG¸bƒ™›þè(%g V­<§1|CÁ”è`�¾èÐÆÌhe­C,ãöœâE8,οI‡ N+\àÓP]C±ëL{vå ŽÐú4®íx+öq$ T±÷J‡öž�OÉ‘H1ÚŸëÈ·“I"¼¿5y÷ûúM9€ÁWWߘlˆÊoãòf äjØÑ¡-Û:´mcŸñ5E¨°3¼ú*Jf«³d”ÎV6ˆ7i¯žzN˜_:ÑÎÁ|‡'&œÎë$^†Yê±Í[$ÃÏc^ôY6qu«�‘FWA€½M44ÎD`è*` í©Žü¾>¥s[uÍðË¿£Óª¬y`Ôc˜˜�œ£ò[lì·ázŽÙ àK®' )ŒY&æú"䛃oÌ€áiSŽVUÖ>oßù�f†n†7Æ­t)ŠÞýªÚ•ªÏW¢M´ÆÙÜdŒ¾Šnl@*ÕÕ1éÀñ!„éýÐ>ãß‹ …ìŠv¤¥d%§@uƒÆaÖ/Ó$¸>©šÖ4}¡t¯�hí^›‘¦ÍD¬HÀ’G+4Sa €b So\›]² :+ Nù¹ÙFVÖ–r5“BøÐv½=s¼l‡%æ¤ ˆÈTÀ–ãߨ¤¦ÑÏNÌ[¡ÙòÈ8KC ±€›iéTÌ—pÖùøX¬}í´+Ïpk ˆÙY"…>¤3™C„h9sOâžz¬LÞ ß;¯ÌÃÚÆPwz/ F>7 �Ó0o¢åël5ÎÂcN@ÂGøaÍi6±Í•ÔŽ¤Ý"hy O&ewRÌRÓOk©ó¤ª\_´øþþ+òlß­2pÈ© ÑÛˆç‡øÃו™›ÐRž¯@Urv˪k½þíÓ0žŸ"º<ìÒ뢼{�”HŽâëä˜zj¯aÃî#¼Æ%¯ïJ¬yÚX\Z"­9JØÐØ÷4Æ(²ð‘c–ã!ã±xšic�,F&IEɽÔNšÀîMá4HYqíø§&„€ng×°È�R®¢ëñªn)5ÆpeFØ…ÒL„ܱS:å'ß ·œÕO× ¨5Ø5«´&3¾‰˜¬ç«�1=núÔ4Kpí Âm™K3[¯ƒyÏ£«ÑuÞ¨e´ßX½Ñ28+w�+ §-|M‚hÚâ`AŒOLs³óÆ�®›!:ÄÁqãÌHV7ãhyòĆ$y�ã€MÊĘöß9E¡ŸÇ.wXY´eÜØkSOT·,¢›Ñ²�Q»¡µÎ¸Ä�¥o`<Ž©Î÷iž��SïäÉìfBÊr™¼3tö.™¸ad¡ä¤^Œà³[ûÁå2Zh/•ë_¨I²Êˆ‡üJxq”q>¡çmP§'Síó¾æÜ}úä2�ó¾M�~|KPœZe‰Nvã¼â%]2a2„Eg%²¿`Ç<§ð òùÅzfLñÖHnÕgÚC[fân�‹(ŽŠ±Î]Âúʦ1jÃr\‰¼$i1B�èLC�À³ÅØ, ‚(;yrœiººXoów–…*Ç1Ý>©„ø¥>�Š»eæÓ[Cä°â©OÊ%µ—Q` ð3Ä@XèÙqß(`f@ÿý°a8Ž1lé}|’KoK韞˜—qŒ+ÑôÖeãݳ×Yúå IÜ©ÐI"y Ñc  Ç ýëä‰ZGÎpë ™0}ìäUF��µ=ÉSÜi”G,‘&õTÒN,ÇkìîÆr„?eGÂÈp"‚=>œöÜO¬ò5•P.e-£3�O¢9erÌAéðrØ ˜kÇGí4Ê8s°¡]Я0E¿¶ŒW1];ê ®þG;»¹Eü`w5…“?+o1…“ÿ1‡>Ⱥ.ÎÓ'a¯AŸL,5`ñ!×ì=šËËt™@÷9Ì8Ü1Ý¥‰“ž$öå w暺$áÝ<¤!Ê®’ë4Vÿ#) ª§KöT]ÿ�¼ÿx�,~ì�š-ƒBƒ¸ƒH=�Íá1§™QLÞθ>7å÷®[롞^<9OGè�êö4VçO$Bõ£:lŒdù# B¿Ë=Õþ“>#x˜¾òßë{Ggö ÈLC•é.§®BÊÑi�X6&QˆUG’úð‘¦x–õc‚!”É'jînµæîîQÍ]Ÿn s\ÅQŸŽnrGÆ*£Äô4uÉ„þŠBn0Äd£¤ú‹GÃrN¿Êp0Fƒ`Ð|„ �‡ºW�F*´G´gγڳªA¨GçÐÒ�•mXö€¬Âs­ÐðC6«Ê2JfKÒŠ-=­ªªÓè0·NX2IKô(Ev´Å8À|^ôñÔ“/‚°è³cbjr(÷ªeé¡£b‚ÊÝfd;FµÙW%(ã¡â1?gÏiÆ‹èaO¦?72«Û7ËÊ…Ql«Ù¯| ®?V’X9ߨôïb¤P¤¡¶(à0û°½‚sÌå ~âgá è&}:A™lÿ>SÐÈJ<ÁϽ<Ámë`oÔ]»¤Q›l §=AšY�nÂÝB€[±,­a‹¢NFà�è /ÑD³sÖC|�ðǹ1‡ºˆBŶî/ç ¿=e¿j¤o¶§Ѓž Ò>w¯žhy㌥6 ;Ù_Q�9B/†9Á_ZÆΰŽDžÛ¶7àþxòŽh�¤²B c±Ñ /§¼í¹}10¾˜˜Jô¹oŠš–“µ5=÷£ÂJ©0þŸ)gŽx‘–‹íÍ*)“|‘ì}láÖ ¼W® Ae0ËðXüñkç@žÎÒ3G­²txlðRh‡7®–V2'¢fÆÓ¸Ï[½Í,…Õ“£?,äªÞóݳÚÕ„ †‘Ë2ä#“[j§G¸m„ɸÞ{˜²;ÿ΄¥¡~=éYfž×¥¬M`‡žÛí> FÎ NôÓ?ò¦«ÚÄ Îºm>ÂêoR�gXg´!$¹©uó�JÃVüÛb[Ã>ÄcTuÒ¹ÃI”¡Ú ú{ ýÃÌís'ßy†© §av²Ôi0CGƒL- V©µzA›§¹øJ0fÞ o•ÿ•sôw£Ú‘ôúKxͲû¯áFé”à7&%øU7'P˜`÷æÄ6\¿«aröÚæªB�N9J´Ô¼(ÐáI§®Ð ¡ ͽ 9s/ÃØz‚€ý ¿RápŠj?gÉ%ÇèðRS¾ºÞêãS›VÈ«¿‰V˜Ümê7ðó™Z¨m ®¢ëá[.½ÅŸ#.ŸUÑp3¾Â�GÛñ-þ*¢ñp3¢Â~ÞŒ°ÔlØJln¶07Íp¥ á6Ò+×ÙµºÄkIk u×£c¼U—²&ßG룓@ÿû*¾›gß—P?81kB‡P^Z?¤a�yÈÍñ{ÿô¸‚‚jÂ*xûjE£<ßs0�_÷,eÙŸî‚îœuVãÚjš\š\1Ÿæ©É;D‘aÞ6é9ä,äuÍ1=oSE›Ù+µ�7ò+¡M‡³G”æ÷÷¢A¬” ¶•xE‰|�OC°ýθç'¯?MØ(\:ƒT`#„¦¥…p 1Åd�bŽ×H÷…u±�2¶*cá»t\Rª­e´ÐŸãL5�SìÌs[ÈYµ…œë…�ʲK Åét$lCÀ8›õì<ÿÞàn´ÃÀÄ¢ ‰EX»-vžAÞùæ‚Ó"g#w[¡qÝ-ø••§ÏTH0œòië UÎàÅwF0\6³k„6‚ÏêQÁg']WðÚ8Ò€Ÿ¾”“*8*HÊioû‡µšF��ʬ‘`æÇà-¤ˆºYÏé…ÖÇçÖdýضJö5&lÄ£hÏ­ÏtÕìÙP üDû<ÍÇ!w¬æ¯�‡æ=°+’ üD¦ÔÝ‹:tŸU•DðgäÕaö»²nY�¬åšTA1èyÓtù¦Úf°ó#uÃw 'f¿\Wï^®Uûk#D`—a…5¶µŽË¡"¨"PbòˆvUp?øåÚNè8œ×í÷–QüÀº‡ hë è[Š(¥¶Føl—½-ÝÌ�dø�Päís¯Ôzâ%�Ç}:#ëpý„o¡>)òÓÖzHó6óUvBC°o5÷íG]à€€÷Ÿ½½½C™„ºô°ÈÁ@ã}ûÀLèA âš$¯XE졬l:÷k%ãn_¾‰~^óëý¸{W�,ÌûûÂÉ}À^k·±á-‹J2>µæÚk�Ý®Ev»vMZתc‹¹Ôet5OÂ]£î"`¹ÎWèÂ]žo/¢^sÔöB]£Òåj¢[ìݼí×–Ý粎` S�!¾œ]º®÷ÆÂõ ~Ý)¸‰¹7®ñÓ­¿5te| ÿOoÔ6ߥ†FJá„BZ³já¾hI÷µ´¸xTZ¼î1“aŽÍ+y²m»V—¸Tn£´ùxÛµ‹b¬œ„dxÀêí×bÉ+ƒ§~Îн­¬¼©5€õþ(÷”\°«sëÌûqÏÙú– 6œnŠRª ñš™�16ô5;—‰µªÂI›1�“ƒßC-R8—›ý ¸Ùߘ›ÅC æd¥Ú>s�¦¢È¿J€¼ëoŸä‰³ÏÝÆž²ù4³ÚÇ›Îþ¯%õIùé²ú^wYZ_%“+IZ� ƒû$¿…K†c1ì?�ÚÎ öÁ�ü`¬Ú`VXoOηnzEŸv£ßÌL2•†²Ù¯(B«÷9õQZs fÃÍó4ÁýÊEñ-\~Ò´†jOºgW:I]‡â„õ¦ã„Ô¨*•)\I÷\�+VõÑ0·úüTlNÖ¡nž£%é¸{ÄÒüO:’³8áÏ:»!Çm¯LwutñŦnî*˜Ëîre0`r±¿}ÁJ)v'¿HFÌ# °@ÀÇ“/Žßê ÌH›ÕVÈ¡l !¾VŦ5ÐãèCAš[£.n6[L°‡í/�^éÊ{ýe$S&9ñ�ö¶¢6Qѳ<—³ÀûÔ˜zc6ù{÷y®.aõát¶�®É{%öTïP°A¦6ö­PœF×ÑÂø‰Ü�ƕԞ~yêéž7®Î:µ:ëkÃëþ[N7M�/9×ܰڹwÊö¤Z½õ1ÑÜ.-ù’ŒFB¼¹õ£1ÍŸ?ÆYà‘-ˆŠe<Õ_Y\"¥q�ö¿ÀÑþ>Ú7ú>–¶Î÷ÿD'5ýt�”Ö'yJ¦�RL¡¶ÀS¹Kzò—ÿ¿Žçÿ¯ãAþ‰£*­v—ù¼¶X¯£^uz‡iδԫu•qö½¸{ÓÎà ¨²L« &`GöÖw÷qR|ÂΣ�Bãø½,÷QoþökËßþ’îh“§çþ5lï¯e{§ ^;±ÓOPÃêÿÃc¬?…v¢:^�-ï[Q�Wâ†;Ù;ŽX-1 Áÿ!L"¦7+ùm°²E¤r:MiE�Ö‰�Ó@*$esë%ÿ®*ié ,0ÍeV0˜Ìåj›eß>ÎtÈÉncÎߤ÷,5ú©ùø~MæñüxÇå}¼š«ª²ÎÅ10K11K±Ï,ÅF³ÿ ŒûuK†*"ñøuQ¥XÙÆÐ©Ö¢ŒñXÇ4¬ó\ó’!p•è %w¦ä¸JÃÑöK>€ªeBæ2£–YfèÓ=lL¬ÄÆà®†ÃÍÀùìëð¾.ñ–üG"yëÌtt ÷‹ÙΠd‡G(4H ÿñÀ‰ú0�´tì;_8ø­'„ßyW˜útJP71¹Hír6èy·¿´}g¢õqþ�©†š¹°ÕLÕfW¼j eù�ù²[àóä牿ÜX×™Èé¡N{˜ºÐ¹òrçȸ^†9TDèKñû&9ùœ®.ë‚XkLnhgl™þ�úÑw>��½|ƒ\•8éÇ_Óh'©RàÝ�V#A®¥§KN~B¿—oL3Oçs××oèÐõ¨fºÉDåé©Ý÷¾«0§œ¾&PNaê(âøn0&g§Éø�÷÷ÉÓÓäô N8¨) EºJœ}˜?–Ç´*ãéçóäü‰48NÎuÛ¡ý9NL,ž[<�NA2²Oe+ Ì% ‰RõØ+s’„0^®·ÿÒ~sx@rFO0>=vÚŠõdŠvp ^»\Ÿï¨žÞlo¾*cúЗéuZc<4ÕWn–�7�y»NÐ÷˜M‚"ÆR¥² QYq—i½¾ù¸¥qB°)> O§Êù˜/qhÌØ ûxuÿ„ÿ|Ah^M'²Ñï-“,ˆôFÊPBþ²°Äaù# &xÔ\ˆ"M›À&¾IÚ[ÕÿNòc�á¢v¾Ç0ºûû¾|›ö1¶Š“~ç›xKÖ9ÎOÏkë$ “ù4< È?åšÿ^nxŠa3å%±ÐqO7ñ¿ŠR ‡Ëy_—NdíVÕö.A×* ì¢ÆPˆa˜ÇIa,(ˆN™�ž�§äy<Æ\dëÖã§ï® ­w;ºã6ööMÒ %Œ`ÍÏLs C”pkéX}ž_À×�FÔJqŒ œ�kt@:É¥¡+»iÓõ¢ëŸ:'ŒG‹<—ŸØd/ÜW~L£SôM3®÷0xcøÆq¾í#Æ�Œ2MªLVˆ ­ÿÏÑË[³sý“ ïfwèßÊÚIßNgÕY:«p:ÿPE˜çC"<Êà�TÅAXºé=é(ô¤crÊŠ(ìÏ Ú¶›¡â¨³"Ƨ³†¤v™¶Bb8»(’¦ï£1K=/Ñ šJ<„²v™øé)ƒ‘Ä:fã28ÆhEá�}ZÛ-`¡†y;«çèE�ýL£˜:˜RMEì þ3:½°ƒ¢ofÜŽžµ0áâjZÕ°È�‘Ô°¿®E6C–ÙCÍXÙ¼Í/�˜€À™Æ ÒC΀›WðEå‰CÊ“S,DÅlq6�KØâTÏ#VŒ–Çi Xœfì è¦Õ™­aTPHX¸Û ãîö44ßÕt˜»¤Õ®S,}jðá§'Ã%e4 5Sæk8ƒ@ÊñØiË*NZ«Ø¯ïàÕ�ù "ED¢ñ[p–?Ó7#Ë:™˜–é&©:ìÍi>쇰Èõ2®ÖHí»�…SåÈd!ˆî¬|p¤yE*˜Á@mâå}šøó�ñò�¨Ä ž£Iä�•Ía–ÌÕp™–%ôSÚ{K:~éÔ)á�q^ö¹r†‘ÒÒýýÚT$AÜ|–Ö§„u5±‡§dDÆÞ,$�ø#FÉpÀе(‹ªzÆe¬&!)_ñZ]–(¯ÂèÊoéwy}Ÿ|ñ…:°ÿL'ÿýE005uŸPæ×&fï¦Å8‘55 I„¿æg·*®7¿¦£ùÚ_ß­ôOÑjØÛ!öd»Jì^º\éa‡Áiù¶Ö p!CW LK2 Þº¯p | ç�”pMº’²×7Î.l]Çò¹_Úôõºòº-_Ò[SOOÇi¯5·º^÷;îyFæTUdÒBR-£”1Â-AŸÖçÉÅ( ñÏ8µÜ`;¶¼å™Nן˜Sp èFq–ÏŠp©&¡….猱GFÑMbã![+>3QœxÂìâj!2—EÕ*#�yþÄ8ÓÀ–Õ8l>f1lw˜EÄYÏ͉°5^!AºÍ‡ÝÇO¸}ò$„ª=m㉌Ñ£(?KæY8†>œãòþ~ý4a"“›Ñ Aì%�š*>ç‘">µ”•‹É.¤Íº}ëi™%ç\ò¹Üá¥PD=CÄ$EÂÌù¯>ìOƒã”ŽˆoÈ=xTIÜ•íDf&N³k«ÎıüäCFƳ8®dWŽP˜7‹±žËýÐÖƒ2ºÖºÄƒ,Ϫ“ue4±--J­´wñ»—|�ꘈaß÷kPõ-Z¨ë['ª6YK3ÅÆ{‚�0¯{íÐ'y%Öæ•ð{E •hž‰v†­a²§m°²§ ׆õû÷N«PøM·aY?µ>EŠŸw¿Hî|ßþ0)Óyj¦ý1ÁSOŸå~Ó¼ÝeJDäõŠˆB ]<8–PÁöm�ÜTŒ¼Ì7è¥ý¥(‘ú¥¬)¶C/ò¨)É L~QÿkïjsQyÄw,1ò;®‰Rës˜+dÄ1£Î»Ü©ôªýéTØŸËj{�I–�êöNû±ÖñqG =S¶ð¿ u§$ðWôÉKÓ]“öOԌ脋ÛÏÛXÄ#¿Ð¹¹Dͨ¯5P­N ÛúhYaz/˜ÉÞHù÷c!é�‚WɽӭÝnÒ½¸šV£¢ÓÍOŒ¤p§»Âi-=%$EçÕaª¼×"¸ é>uúhís ÂóÃ}¾AZ’ÓÏWp¿zàyòK*×�R(0$Š“ª9F‘ÞÉÖ“ qS_kì}j*¥V*·�Ü}º°Jh/Ý3¦D>:*jSšj,*§<Ø‹-k¥uN8o0AuÞù$Âdó-ó±þR¨�Ðy¯åP ‚g”3t€ÄÐ9ÇI%ŒÞmõ ÅÑQú´šW!öå|‘Â@ȧ ç%WåJ•œ,°áÌïD[�®��69¦À&8Zt�b±è´èÐi¼%GG—êÃMz9q ­�!¢!�cíëqðbç÷)£òß? iöq+ëÉ­˜€ëÉÿÂ4wŽÃ`ìþ÷ñˆ&éÍãäJžûY¬å»…îÞU”ÒèÂÚEÆtç ð•ì¹­EË�…U|³É³-ø9½ ð6L<~*„L”s�œ–� ±$d¤+éÍ‚2‡nK³5¸Û/tüñ÷.÷¨ë,¼KýßÛ@¡å& ×z �ŽubØÁŶ\�¬â ˜¤'U�/èßYÔ‰gÒ:²<¥ÉŽÝ7T�Vy¾JMrã•ýImÕºÖ¦qFTÔÉÆÅàa0#:ëÛzC!êì€Y)&õ-ÌI/wdë¥ÑajØ*Ë×mvXS7ŸN}F<ëçH«öS!Õ¼Oðn5Þ´)½sÓú^JÖDx•L-z·ëJ+ðydß=9ÑÖÇÁvdCÿ�°â¨/‰:O˜D‡VzëJ€}¢\¯@8mú(yï8÷�Â.g߯ʈ Ì4äE�®î^³3â°îäõEݾ÷4\ø“èhÃè· ÚuAÓKñwM‡ÚwkUè.¸Är_l|Ì}ÀøvïžøMQëx%ÄäÑ—Š½zWtoe3ªÚkõ8�ºÍÁÒ†C•?dhyì<Å4óD-£Å0™h§:ÏY±®€ððX|äWí¯ÛZ*û…þaê¯mšÜwíMg § ÐbO×Y1ä´nu4›:FV¸r–®ˆ=hxq¤•†@ü�DŸn÷÷ÕSÂ9‹N5.ˆOžüôlD�DƒªvÙê4÷áöd˜¢öw1úÓSL½XDT24L¾O)×¢O%Ǩ^%ÃE0N4A£ •펞ÏL<*M�Ç ™šÇ‹Ñòx‰®%·ÎÌŸ!4×/Ãaû£G N …)Fí©Ã5ã“RŠÇnñÒcºqW¬t2*f�V›ø³”5²;½[å‘…Ýb]v�Ëôï¸ež^q5Ù»b¤“9 ¡0¢"öè¼,K¥b<¬ØšëÄã.t=×þ‚&ÔDk}.+̽©%;;*÷{e}ÚÆhÿxï;€¥]S¥–«ììn-¬Ò²ÂïÎbøS)Þ: JÊê1Âdg£•Ñ“ãT¯`X!Ï{¶kà"Ëe²\ÆŸmix:as*‹ã\ä¬õq!;3_má ÛŸ/+=•Œß×öÚ´½pÛæ‘ë4­ç€Ÿ †ÍéÇ«U«E0Ô~¡Ö¾IÖq¾Ì’W,0ãâè2^†µ äÉØÄˆµŠJËgé 9«Ðk]H_‡Y³oÜ:¿}`ÞZ%Öt¿·•«OÌålqÎ�©»@‡zvõ4¨Èúð)£©ÆÂ÷ f™@ûà!ùq²>–(öXƒk¶Ž�][ç¦ÁØŠkG|÷Vïl N§Ü0ÀF /H9ÏæÃETÛC&=Nì\,àÒœ6K¨—hÚ&ŽÌçK=ó&�d>_èÉ -亙˜ò“'Ê<‡Â{‡£¶@™‹q TàØ.Œg‘ŒãÀ@òy¼¶}~9^?ðüš0~ Vljô°2 óäÉÌýdÈé¡2_NΘº E¨ÆmÉ }r@5*š¦½ßvÞ:ÖB³·¹Zx…Ϊnå@u¶JÿóÐÑnÕöÓ¥?Ò�Iè«ÞnCÄ«ÞFž»º§Ö^–£´÷àÔw̹éï2Ùë¸ÃÚnìÄߨ®Ú±ñKŽZ¹â mµÍ2vÅÜõ©hWr»Ù£�0 u‰Åw{8t-ÇõH*!·4# $g)ç¢7Ó'R½è÷ b\¥ã±JÆc‰yH8hÚǧ` U67°íÁÆÕäJžC­°Û&ú ¶�aVÛ®JÈ_r¤Ó³Té&l²ò¦§ž“ioQߢ ©m�Ô¬ƒN„'¾¯yÔQžUµQ˜èïV]ª;ÿ÷Ù þfäЙ‘WÁ¤´L&A­"­¬¡°ï¯ s’!׃\Ut­& ð‹»ç×ôÏý=…f wÔõ"ñ‘e×uÝ"‰níþ¥ÐöÖ›³ÕËD§Ï¾$(}x꒞‡WÑ_ ‚‘ò6“ë|êe nGÑ�¤·é­²E Ž›™äÏ»F‹Ý.ÀìâÆ¾·×·ê}ÐúÞó˜,vè§„7Ø5@›É˜Ò >…$e�IW³Là~"q¸ç˜šæb–ê0¥Ø˜€½EµTöÊI/ü€éAåò} Þ!–øP¸ï˜à ^òec¢<˜1ų›yÓw„£ÔwÃW�áQß ?H6Ë*Œ¥At�o:Qjµo-m%rŒ©?Ä?`ºžn:¼Bk³òFÔ/9›Þß×OÃFÌQ¶™~}‚ñ",á¾E'dÐ**_M‰4):×ztÌœÕwŽêc—÷Ó] Ø×fΓÄŒ�Û Œ?òßú³Âÿ›º&]rÇE¿}¨yJÛ�dì¿¿ç[æ§ã$$HFŠÇ;öæ‚Â$(hükÇR“Õ"iY·Ï0ÊÙtž„5eFy:�׌j|úæXã×ÔOÑ·»6à¨NÂ6t¸ÖÆW㢀æ[믰'«Þ\�ÄTeåpÝDqš éz0(´�[ª�·�—z×Ñw¢ýVõ…©¼RûÂ1f£'z5J¢MJöHƒ©v5b!žOU«D,Ï÷Èž¨˜i9Ë")‰�ÃÌ=íϨ@«$·Ô!pÃ[Š--yyœ>��«y|’†å “ãê,>Nç%\Ç'Uã þý#!¢·IÞ�†Ê•xxX Ðï& ã�¦æàýÚµˆvÖ#9«´ nådp�½"?P™Ø øù…\1(ÅR®žûí¬:ÅÜÖì2*Äp}‹1A&Wó%°3wíøKt^ÏßG¢·ÑËè.|½‹^G/¢;µe†xWßž†ïáˆ: _©úöIø~? ß)(~« ôµ‚— Ê^H®óDÑ7‡•BRt#Hb'D%s"RÊÿœp©ú¾/\5­sØsx\ô8<ßïKY�SzCÜ U¯Ä¨{ªa™Z$=sHºuÝÚ� YÝÝRÇ·l›(†¹Œ1A–Ü�®›ÇFõ12]¯¢.‘r§_}t§Ý.÷¾øFz dÉj1×óg¬ 6ÊKÔ¶@™,=ƒÌõS?÷ª‰¸ºŒ2­H¸=»‰û6ØÝEÙùíÔwðq rõÃô}ö¶_õ}ŒZGèøë‡(·W¯]�È‹(á}þÞcQóðl©w�´¢Þ(â¥'o«ènùr>|½Õøþ0–ï(÷ù-üºqÙã¨EXÔa:B]Ön÷ÔÔAò„¬»@ýZ3çX8 ·¡›ùøÅñËÑË“'¡³PóñO-Öi‚ÃÎ~¸Ón§ÉþÃv1öGaŠù�# ²¡ß0<¿Ž_’`Ò‰å³GÅÚ´‚³PûIÚ¯pÉUpÉ:¸’ôÅF?2Ê!Lî+Á?œURZ†È{`F_¡ßa>ŽÒ“'œúaFwd?Ð�Fžz'OÉ(„Å8ªü§dÊðF³”P“‚¥×\g!Üß»CºcGvé@✎VÐ4Çñg)/Ücûâö4OªÄiÞ ~9WZäEÛ„ÔDú8tÍ/µõ[iA Íà¥DC+¡¡¹¦�b¤™%lÝŠß“ÏóÄ€¢w,]½ÆkHuªÀÀ?ÔE©®ßkÉÒUµ÷Z±P‚xÜS¬?ꨢVi¾$€Àá0A|Rš¤ #¾=�¦V}ôß”�•‰5]æ�F�Ûƒß`nõ­ÉEç.h�k+œÁ3¼µõz�Æ`2E&câN œ+$´zÂRûQeÒb:(’‘<„¥<[(®«–è¯[²²lTuUé„ÂO^ǘÅ®n à# X>·°.îtP’@IÂ%Üªî¬ÆíÔs.ö'JmªgÎ 2E  :Ï/fɤ…7qtw° &·§êƒvNÅ×Oøú ¥rHl8³y¢–GjóL-ÕøÔNsVÛÁ;ÈÕ†8Ú„¶Æ£«\è׉_ÐX©ÝÜä–|M}ë:§‘>7ÕÎhhÒ{XýJ™¿¬úµòÕ¯´sŸz·9uwŽ9{�†>jÑÚÛïÒ_¢¢§¶^ç*Æ9H™SÎOE0*(iá¤p¸v* •çN±ÐQy°Œ2x±tx·$ÞnqQT“Öžq‘WoÕ'zÕƒ�£[„« Ux‰]í‰]í4½ÖwÁ�@ÿ$óéŸoÕCR“öXîùhœ¥°¦Ñ3!5� ®�O“œHªn{]jô±;“ÄA ò/LêËŒœ�=Yì ¡M‰=hœ{´6œkœrçR\Ýl�¸ŠÜ4 të�XÎݹƒ†ª$eÓƒÚšqÚÇ©Ç�Ö„®«qt*Ù´}Òþ™‹÷ 5.¼wx¡Q`¥§Ì3Ó8¯1ÔˆÝè8å»ÍX ® Ju´Q>ø¸_Hà ?~Eퟸ?¶Rw�Ĥ’ЈՈ5OS '»‚覶q“G/4>岉˜9¿“Ûð&Bܨ«(ÆsÝñûƒÂUâfäÉU8éµ}uQJꢊ g×ѲW=T£›qÂJ«ëÈgk2Ò£™€Nž`Õ°BWô²™m±“ìÇ™Ò?¦#«½_�¤#«NGˆ_XuTu:rÍãQb:—MdxÛt>~>ÓÉ�e¾Wz¾¯{ç{£ƒû€4ÂðÎ(#//&ØWSs9SÙ½‹Æ‘•�öeÄÐø2³Ö"ø¢óB-/Þ£ÖýÁaµ[_›1V¦T¸8[ �W["»ß4@&ï`«?>qt¤ab~G;teâä�7ðïäw…>¤žIÀûóvT'‚|ƒW ñ�Êæç»ß1=üDœ�ݧ~´|bÜ ´3bì.ãÞu†+%=/3ãÒ4áùžJ|»ÙgÚîM'OéE‰ðÞ^Î ±†ë#m£j¾}9P•6-øÇS²çx‚;È8çé…v:N—÷÷õÑQA,Xˆ™œIMT89g÷éI­�ú}Ò'‘>À;ÁÊâ¡Á€cúì¤EØóÚiàÐu�oÓÇ^Q™pªøSNÅ“šhß2¶ÕÃiÄfQµ“ó 7 ³XT#Õ‹b“è€I :¬C%Sb'„Ô-€¾×Éý�Ð�ÕÑÐŽ3lRÏ®ô´z­ÿ¸² ¢ô~[M9�à4]§U�”îÂ’†õW·§ÑÓÙ°ëc0H—ƒ¶åÑÑ@CñÒupN<ƒt-/K‚‡E_N@T Jh Õh0Œrá¯ëuY|8È“_¢¶b8à¡_Iu�Àwz|=BÞZ‘@O�oCö ¦aŠæÍ°gàÕy:ÿކNôy” L·dP‡/‚™À2]öñ‡�Ž|§B÷$K …œ:Y~ØG–Ùd€¢G%€•E„GTZÄp>“iÎuâˆ2@;OaF`~ a2LÍ™s+0ª È1i÷:˜i¤3ÊIztä"Ÿqms]©€MÔ¡ÂzUÓ3úbȸMgñ6�ʹ…f% Øó6ï[›ÎjIyµTÎj™¥8Ùðfq¼ÄAQÐy*þ®>¯.`1Ê=ºÄû­NËíß0°H1¢î. u—»SÞ ®@Zz}�ß{¤Š¨b5ü=U�Ic L(¿†%×Õ¾ƒjºl ½÷9†VWáÅ£R¬k1¨+­+¥Qì´ç2îáåþ€jž·»ê¶ã÷î¢n{8™L ‘àzèÙ 8P&(ÌõÔ²³Hõ ©ö¥·ªÚ}¤Ç 0ÿG<«?�ÔÑÈñœŒ.=F„þ£žâÁ ´ß#wº½¼/iÉw>  4>5¡Qôx^žY5ü$èCÊ÷éeÄ�ч>ô”,qfÔsþðtzÓß3¡ÜÆsÚÓ€�U~zÿÄöºÇœ%ÐO½÷ÿ¿•KyÑ™ŽÖ\PÊä¥q§ñó)/ÐåYV‚›‚&c —ûè]w-oL¢å›–û*ú}¸ æ›ýÉ7oÙR}‰–/O´¼€•¿�DË 7½Ï¢'ÑòµI·n¢åkJ´¼Á4ʽ‰–W¨ 5®ÿw-_cƒ³ÍC‰–á&Æf.Z‰–WcL÷<½R7˜YÑ&ZÞ¸‰–ðE[º¯A#—�&Z^ìI´|»'ÑòB¡ÉB]F©»9ýUT¾ôßÈÃl²*ï¡‚’*À¬›]e|:CÃél†ªÛåð¾µô¢ív< æLÖPÙ3o-£pOJ1\XûG¯ #kÚœº±MJ^6‘6ßPÈþÔh¬Øq¦Ï¬‰¾Á€éÛçîþ½²ÿó0£½vt”·†ªö‡J‡X}u+My8:޳sã©«`<0ËöÀà ë�M"£RÛØ†Ri‡fP¢§ô-zH¼�ÕÜ; °AvHªÿ…¡Õ¶z=‚Î ÓP6êÖíë+·¯¸¦½ú�˜½•ïÚ•“ “„ˆo=yˆ+íú®=½.,«ú¶ò“; k‡”6}STMXêôú�ƘWè]eŽmj½N@ê¾å”­Ö^¶[3i1“UDÏS MxÊÃÂ0šäÉÆœ‹€wæŸsy÷8ŸHòy¹1Ö5÷í/Z)Ÿúø“]C«Vª\;Ç &IC¸ ”tõwövÏ›ˆÓ=‚€tøÎèð0˜0@Q Í·‰q€M’†pY¢ë©§ NÇ � ¦êƒ`G*T'„\SL¨Òh¤ ù¨Q”ë‘PÚÉÝûçÅí+í#U©5_~cz—XHUúT+Mü˜ìÔ{B€rõ#L(Ml­ZD‰ Ù—~YL¡É‡(CÐhíö®Šo’p¡Šz ‚þ² ¹`) Gêû¾Ezw¢L-ǓͦÃâ`!�Ãd¿x(o¸�,R<Ô±ûè'¶K4õ­ïã3×�X`¬ìÞ§)Úý½°î¥!룣/ÑÚÂ_y¿°_ÿÆcЙ ¤zó'f'£Ênùt”àÜÊ¢íæ¶Õo{ÆÔ8q“-$àb¤ÞöH*Ý#‰4@L˜+C˜aËæíœ*§ LH?ɾ¿?e¾Ï¶kþp¼¦(£�‹b� ܾf’£P¸ˆ#}�±]2Ôs½œ)c ûÇÙ¾¹„/Ê]�ýx¨ÙXgê>!²“΀z8õSÊvÉ�Dý!SˆòØï$�q[¨µ„‡�%Ð'¬˜„b6øW„Z‰ùþ(qö ˆ‰ kŒìO`Œ‰Z$š)KÌ:BŠ+Αùå¤R7Iv¿‡œÎ©^âúù*éoÒØhvL1ß`Í?To®ëkN4 Âñ錴J©ð£pW SLF œN"ªdgRóÓýúÔü´Ÿ�j>S¹é”pO3䦧›É9dÞæŠÂé±q…C·Ç'íæ”†òÊ%ÒÆÂzèäÿµ'g;wtÅxµå@įª¤|/lcÇ£Q¦óêßú¢ÝÁ¦L–?  Å„­û‡tƒ¿ÍÜBôŒ”K¶3)ømÃe±Ø’çn±N³%Š Õöª†ãG-Næk~þ¿ûšV§Ýïñ>ô?ÿîÀ/Òñ*ÞOû[…~gú;ÿ↼}´ø0Y¶hÙ¬±à7ĸ†gkõKe5(æß ‹c[âþiÓAÔ %ôÎzûú¡á…7ýŒ À<„Ú0>æaà³ÞÎÈfé�“ÛŸyÅ2˜Š?™S•7 Š»þ$ZÿË)ú_&´ð¡Œˆ)£j•Šx�þß’½³Âàp$óÎüÅfþòÀ‹ v0¨,wËtÎ!ôº… õX2¿P`#=IQSž]ùflSôbÞzšc4 t+Œ¦ç24¿ cz=¡xÐîM q;„2…íÀwM.N2HßHm¸¨oqjüáÐ,Âß«óš"/ð$$W£š]ïPIÿ{MiÉ�ÝR¥3Hå1ú€†5p†Ø“.“;Û�-Ëç9•5¿†ÖZåáõó:�—œ£€Ë`Í¿˜_¿^8sÜ ¬»S©©/¦ B.5g²¿>xØzbüãç­A<Ç5À£Od{ºžTA€´Ðpez…~^ÚAؾE{aÀ‘çÏ« t€ÉÄ¥�0)爚w"‰„§Á€Çi>‡Ht©ilú¬(µ ìWY±x‡6>à!�­ö;r~à:²Ž¡hG*©õ�þ)„é½Y Œ½Ä:HØXðU?�E ¡2é æ1Ò1¼6ÿ—NËF€�[¯ÒcØ~—4��$‰4+ x-v9T+pðd²g.Žº>‹5 $"ÞCñDæbv®_¯?ù¢Ï:Ÿ3Ô<‘ o§ºBBprJ`åZ©•=48è𨗞£š·\®ŽÊ÷ã4Y½N椣/ácœhûXsq!îeÏ�áÉg›²¸ME‘§/¢ž”Ñ.&V9üµ‚×Ò¯Ÿ+Å.üºjΑþ|WÍ0p(Ò[{ŸHànªýï¬ØåÎõ=œ u7þaºñÓ�H7þUF¥°…HPÉ”Aöì�I&ujŠZÒ„^�?ãÒ�ù>„õHØaiõ‚œd8&�Ú‰&<ü•€ÆÛ|™¬Ò\`nÜ·H°0ˆÖ°¾ª‰] Ü~G›ßþÎbUäÞd¸¦!vAî`q ·Þ)ÏÈÉ.q/R÷bp;°/�½ñ–„PçŽÁˆAJ§=ùOɵý*ð`SÓ94Z+¢îÝ D¤ PRC!ìÂNêâû⦮€|“­Õq<*[ºtÙ.Ä-éøôYb,²aâ¾D£Vô‹5¿ÕV~Üé0)Œ˜Šôƒ8¶@>ñA–/iéô�¸”}¥}¼nµÇý•òÙÉÈÆ(àÍ„Š„•þù-vÔ¹ms%MÓ4ÊåáÁg»ºùgÀ°�¨u{×nïC ƒûÏo¯ósïHˆ]y€jÃdyW2À=Íj7"Y?jÝ]}Ƙîà’–ß%¬�KB€½4à åÚ f�gñyvá?°@†}DWý`9œÙ2k€ÛX@uøg}Á9¼iÌþ能AIçÑè ŠÈÛ &ÌNÐ^7ü Ý«xo9Ýtg2Û3“þpHþGÍ„éñ =ûÉŽKDÊ0ÄåæÔ´k8¢CÔ8(…%] :ÏŸÌJ„*©¿}cv5Ä{zèXàx™Á _Hƒr¿«Üë �™v€¾ŸgÒ7$¼”.á™(Y`µ[9s¸{h³æqÕ3eãN‰KPÖXitJ)�å:×KµàŸo“Úê,—Þ¸¯s�  ;¦v‹Kn�‹š ±&rTÄ`p, ¶Ä�䑈rŽ*ñŽ‘;­ÊY1|d ‘)V¾La0?x·ö$ÏòÇ#¡¢_0Œ9!Ä5'î’ˆ˜—Õcà!‘•Þ=”à6"÷´²ôI&ú6ÕŹÜSo5•®Óú*�£6°ë{ÚÀ[ÔÕi·a¾žBª5ÚӔܥÖtÍvƒ&ÎRÆa+Y‡û‡��<Ä Ø â¦ZÌé,²$æqÊ5nÑ®=Sü€ÆþógJßkdý[ÅšÏhA1ü÷üüŸ†¸1VÀn³­Ÿ~¦�dN3E††þ‰�M¿‘qh&�fz[wªURïŸ�" *÷Ib¥îÑø¡nh,݇ÖëþÙº/¯oó|'‘.g~4„]3æçZÒ—"’nz‡8syH$Tôz‰FÎÒßZëƒì.G«9„ }5„”3;=zU‘ói›{u•ê;-YHrÈ\0¨ “À<˜"SSè² ±æb}¨élâãá‰E!$ºz÷¶9ù'(#¸·j¹U¡>½÷Ž9z÷Öø®Þ{ë/|«qžŸ•e|7Y•Å œmz|Q¨Ð©}LdQÏéI‡Ã:®Ǧ>8T³†l Þ´‡¿æá÷“™ž×ø�  ËéKÑNžÁ�üK}ÑÁø!¾±Ð¢k‰PÞ°’Îî3HFéBí4¡A¿²íÕë2Y¥· fÜ�®�Ò§E W–DjŽoÓ¼K«·V¸I0"Fº©šè5)ü¬t\´¤ã=´â¨"G­hï‚.$�Ì*¬¥0C÷÷˜Èþ¢Û1þ2Ú£ÿi Ö®˜È'£U5‹Þ&PžFà Ÿ§Ã ÌË– †a}e@1ôÒÏšû‰qÉQæ$„-šÎ£ *MØ(CbÆ9`d�â€@¡¡£è-È@U€ùR,H�11eÐp�³Ê#ÒÕ³ #O#â€ã“öZÀpE¶·ï…Ü[©§¨}ñÌÆá Öˆ0À]¦ØÖˆ¡¦V;Á½Ùäè©P Q‰gá>ü�cÈhRÖw¸¢I­i<Ö˜ÛBË"éÑÏðTÜMµ|ê[‘ ®óž£u勹:ÙŽ'½Â)œnr}½FÜ  ÷E'JÙªÅÑP‚^ø3GåÍ76ä� sÒ‰]oÉ· h…2vÇëÈ.kP4+sß$Ð[Ìà³’%¯È_:…¢{‡¿û„—™Ö`¦®aÁT�Ö޻ؿ8ò€ó¸;^‹ó:Òž¼Ôó»oñ°I‹©É/òÀçÓ à‘H·)º},•‹À°ÿ¯rÔ\~ Åe¾‡úÓ’¶I¬ª†¯òÀ÷d5æN _ê¸È¼ë`¶º’‘GÜH©í >Œ$G{”8º'Ä3ÖÚQè¦O§÷÷˜È�⇪QzˆhÀÂÃÛ–ð`ù�ׯRÒ€¦_™�¾Žö¹ìô¢ bËöD)‰3ØË;+ÝVÉ䀲s|HëõÁ·/þk0*€; þëàf o½J–l0H–lý¾99à1ô�"~.ðá2AŸ(°ã¯ˆ£5À,ÿUÖÊè\EͨÅ�¡½y¿ÞšréÄó'3beä×jÙÒsOâj“Nf0rÞÅмļ@8üž�†;¨KÄCkÝÝÈ1Pw¹~�xPþyˆçNËØAè«7_Å) öA]0�8`o$&ÿ´ƒ·é� ÿòóDŒ®aýÀ¹['7Œ2{àl�K¾sn~§ä¶øÌ)Ö[ÜL´ûI®Ü]hÒqÙø¿`Ìk1/Â|žž°ÇP¸Wò 6ÄU†Ô)BÒ€t Þ¤xí´Ø ÇÂÝé´{u®aÙ¨µ0Iy1xµÛÎÒØ°WD �ïckœ×7¢ 1Ü•€Â 1ÖTV*£ÉÉÖ½D¯(À[RA:M[n—Û<ÇàXª174 ª<§qx‰¨ƒâZ]ëÅ�4¡[“5�î…/éküH}€W·IÏÚ“âRø¢uZµ¼2*2òNTÚu7tŸíº�è$Ôô™sí¸x×fÎ�UèD>αUè£ð#N+½Tbt‰ÐÞ­ 9tºhˆ¹^”É«:gEýôÅÐâa©“v”Ä(c2³$¯¶¥`2¿O¾}‰;kég‡pŒ?Æ›µF @WÛ4[þXþÌ��Œîü@òÁ´N5†<]U­l3í¨�!jèHŠŽF.ƒÚ“š®‰kjAýßÄWiŸ>¼�Œ5)²‹Né ëŠÅMÆ …LÕÒĨåsG¨ ‹¹I+¢×’ÕK°jâ%�—ïG+Bß’ë¢D†A$MÐ,'Ð#·t mʰ’¡·®é2ʆ¹Þ&ô.G÷žSäÑyöRÅ|Á3ŽµÒ©¹wTu^ +�äwBÚM\4²È(Á]ÖoGQ¬#¼f/¾51¡ìüÀÈæe wéSá⸔”NÓ(ñ=%:„ÞYk:z×Íš|ñÐù†l'KØÒvÑÝß‹ô@~t;eÿÓß5™§ K"ÀÊØE·u˜*Ýc(n>z5?ÕQsk¾Qgâôíiÿ�Z¤ Jöd@GØ…€!DÄ�ö”§‰Åç®£ÄÆÉ^eñ½©11„D—"^"Émn*Q�iÀ}é|@n�ô©‚·"Ìè‡÷s^&+ŒáXØ o`¾[œB�ýI>$|Öëo~š¡UËuƒ­ü Ã2%— -‚b.LòÕðÇA`Ü;"iС;/L|;�ç½S§ÃUIzÕ‡×þaQÉš¸1¬©ë¢ƒ±jB‘´ æw×øãWÚÜê°%XŠ5!Sç:¹OaÒzÇ@í{[ ¸‰ÃÌ�57ªZ–ÝÂcQð!Z-P�þb¬µ<¥c�¦Çh0IÞf(°"�–®¤:CöÐI=¸ÂôrBÔVELôNŸ#¾ƒðÒÁ’ê©>`ÚªƒK7ž Ð,?”ÎÍÖ³k?ìã�Ç�ê{%l¯3xßÅâÓt b»7D�‡¦ß!Oª&ÆÊ¼Ã9ª½õíÌž’î`S{ëAD#×;ÃÓ¹oëåQá\C¡wÓe±­01rÎÌã�|Ÿ´5!ÉGjBL&ÛAõ0uôxÆ}që±*ÚõQm‰‹Ø`{‹ëãÊËæžñt/9qî—'˜dOG¨Çµ²�äÕŽëgQa/µ›í‘ž9y¡ÖƒO=ðÒ78œÇqg×�IëÞZ\.›�ȹƒ™+Àû‹ìï�Œ’IA•éÚTwƒÉL)€³'0Æ�f1G¼WwÒ$&è=âµ(õ›]öþ˧TÆÅ OkM_£›`µ“=|‡ƒ÷2]ÞOæ�è†ÂXY­AG’ø¬“Ž`é7q¾DW¢hÆ­3Q$š(-i5ŒYˆP{ß´Vº&Âtk¾É�¿0¼‘ä}é“Tw=ê4½»hŸ, 6T�goéÆ�a2õê MÌÞ‘iäèèðp¿â ™ [®�Ÿ·yWævK̘µv»f�<¥™N7¡·¦=ù9OQ¶|iµKè»/¾¾ÜCkƒ`ÁA¸•Àaå [Iç^ÁÒñ3õH:LBà˜Ø÷¦ëè¸ ‚œæÜ4•éÓ†ù~Ü{Ø^`Ýì̸&…óé…˜HüÒÀ #Ø#ÃÉžê\jj@rP¥À¹:„éÔìù;RÔçénËA騲++îÕ:-5nЇzèëóÓ ýQ}þäBf~~A±—>õ�ÌÇõï5¶Îjþ»ÕJõPG} êÀ{‹�êXŸ³hJðUôÀzŽ;ÔY^ÙåˆÈmŽàJ[ÃbígkØêÖ•Ũa#~…¼=LŽÑÀ0~U—ëuRBRì'¬2„føjÌpøÐèÚ��®»O9üŒdÖ9ç\&Ê2³‚ÂßßzBr_ô?@ݬh^5sû­†p ëþóžƒYúGÓ´·^ÐÕËuÏñ*Âí¤áš€uä5 ³�›Ý' ]pOº†Ö;7¸Å øRÛ(2®|èíé�‰;ûºu™’g‹£þ´ª´Ã¶~ô航°©ø:´y}aã\æÃ�«à$%°d3±¼h[¿ªOšŽ–5ê¯?ë(_UEÒä4ú½žž%+)‚kMº'~ø‚ý¤Ï½`Á²7ŽXjç&¿#MÃ}GW Üå‘ÂÀ‘Ûñ¶!�ÓØ#-ì_Yø%œX�!›=¬æN‰¯ƒ¡"v`S9õ²*�[ÕAu–CÇ\¨ùóêbVÃò2Ò4Æ(°dè �> ÝÉØÓóCŠçòFë#5]ùcæ·¶Ù§öwÕ!�6µû,á$>š:Ý$ÅïG�<=mÞ£mI´fPéËE–n€¼Rˆ4 ŠZ—b�ÛB¨_­©Ÿ€iÿ[Ä�‡¯@ƒÑ3¨ÇclžCŽëÂßó©€2�ùZðz¤]¸ ’Þp$·ãGêÂOj þŽéJCþÈ}¾š;{=ÔÀƒ#}·¡ˆK¤…¬AïK¢ÔÅ'Rj=ë¢õ[·™©WkÚ2Ÿ›¦³zÆòÓWEùªX:ñ¸zk}¨&„�‘ÃâíÔÅËç¹ÖãÃ?Ö9 wû¹aB@mi‹�«Ë#c¥Uœ®¯�1š’/û:è)^Ï j9:ò7]³4¿o9B Ü Rç… †pÍž>ÒMÖ¹D]rz1|©Î&ƒI›L˜¡xÙÅ‹Gu´€–³ŒWÀöUÎiÈÖfH¨É½6JCxJ—ØzÃ#úLKšŽò±éch€.,@?S¤ÒUQÀê¬#àh.æ‡úWx˜È/´I»½JA4¹¸Ì~Ö’Ÿ‹“¦.®¯ù[ÝGµzΓFÑÑî°¿\¯i¿ ùæ=�[æ÷ØõKçÌò5ð,0aýêhòÅòÔ»ÚÔ¸çWCãø9{…î Ã\§;0#‘º¹$ÑWB4ý#‹*%]7W;9YÃT«jäY¼¤†Téàb©»¯GÞñ!zà@ÔOÁÞF$¹?ýñÛ›øZ'òöc؃°.ph~ó=WiÜïÛÖÏURúj­}ž*Xû�)ÓÏ„ž¼oÓnµ¥[2::½TôèÂ�8ä$»¤‹çCÞVèÒU�Ä[³q°ÖxA}-ˆA‘l~_3ŠYÔZ~ ¬$•GÊ�!J럕pZÄn� £Œ6 °y~Ýwþ‹�×ÒIxïõ^Xèˆ8å? —ìsÑ ÷óŒ /ŽÝÔ™Ù,ƒjzäÕZu;‡³­Mâ$+¹}M]m“.9ÎG{xJä@Ó®“úÅ�´y°~xy#¸´ŠÉM �[ëµ&ã‘æ LG0ìpK€Ư@\•S£¼ÕžÊöì±5aAãŸm~ÆL~R›FÔ�àizZm£à¹„�l,e{˜£ÅÌùÜ a©¹#9„Ç�s"¤6ˆZ †UøF·ÎÖ+ ˜Èþ)k¡ãÂ}Åæ!dýÍÕÉîèLh™\Kë ³úÂ@u3ÏÑ« ¶!z:LZ§£èøüB'˜©ž0à„ÝËWÑ‚ÐIÔk¸¾\Ó÷Q5žä‰Óyˆþ± ç} R¦¨/ȯ“eÛ¹‘]\»¯7¶<1Æ’ÍÄ`ϘÐÐAQ´B­M0ý—*Ú ù"j,[²³°¿Ï`‘¥‹w~ 3ŸÐàÖ–Sl{ù¸ˆn4ÕÑ‘E¿=ÔOÍ«y¢Á`´Ånf ïüqÃÞ]¾i«Èi‰ªsÌ¢�µ´?)H|ÿö¿s_sCë( ¦¥Ð¸,keôÉL¼—¢ÄÞtÈP¦ÖMïðÛ4v8Ì Ê2”¬§©ÞMüuéÑ–YKÓ°WÇ”óîÍ)GZ=ÐB¨·¹Š×9q>Ëá[t~`(6fIë~gøì—9ú[ÚLb~Е›q²RtU~—ñ“+ÉâÂôoâeº­ÂˆCn®2�Ÿkå'å ±ò¯QŸV¯q‡Lâr1ä,;Õx­ÒÑ–ßÓ|>ÄÚ™s?Ã{T_È�n<ƒÏHa˜UbÚF5ëЉ’û1ï*é®ÜœŒBÉWçú¨·Œ¤øâË|IÎŒ¹-§ ,¿°^vCt’{Æ=Øt.,q‡˜Ë@é®Úp(Ûíð—!.} /‰å6>enÂÝrb$ŸuHÂî6LGõ1õrQ˜Ó]Xé’*Ũ8§�ŸLœG•Wæâ½ƒ…㬴Ì[ikoM-`M©¥›µËYÀ¦cJ-²�O§óŒÖ!;¯¢©ÉT��ɳ¸²’åpHOŒ«pŒ†Kø½¤ß0™³U4¼§�u}\Ÿ ëQ„×xOGØb Ó©Étzª®�—ãôämp²Äõpe£Íh¥®àÕ›ñJ¹“xk§íÒ�ª;;1ï›èGd¶j©®Æ7�z-Ç·êü{©ÞE7£Û“Wêut5¾<ù ^FÛÑ�zÿ¾W?½»“—ê'¸÷þäû »û°`l=ÚT¸—ê�z¨K7A&Lýõš’Ãθ¦Îšz ÅW£gAãT}¡®¸*µ‹.ç?ú�@½o5üBýÔ×ð{lVýĹì^K(¯¶“[…_³Uøm[r>ºk5ûRýØ×ì�úQ7©nƦß)>òJÝtû�ƒ)öû¶õ‚W0N=/¸ÅfÕ;X÷ä= ,:Ðxh‡ªêÇÍŽy/Gè_av • ­Ôã¦R‹�jž{ÍÏåö¹×­çw­ñ¨¢“³­w#j6ór©ÓCN R*¾ú¸<:5‘²Çj1ÄÓ/ú,K¯óÝCJ>‹�¡6¢'Ç¥âkl%Ê• %‹ªS�z�ZWÀ&f�ÇéEZ.àÔv!±ÝãJ §]bRxÄ$VN+èþ–¨l1c~qµ&nÝПQL¤„SÂ_#çe1zMi;çŽðocÚ)Bm "¡t LqY¼ÓŽûÏàQj¿ÿYN¾ gçÚô&T‹Ö*[?hÄç�] Nèm®vT/Üox“”Äó¿ÌEp‡ßÕ�2ŒE•Wy£�«)Óå¾*¿Õ˜öê:…Ýõ×XV ¦ü©0ÂàóÉÿLN�B£wz«}Èõ›’²¿ë5áT^R�_ª×9Œk£¶ùÇ?,Jl÷y“ÞäËÜà…—¶!©ªíÆH &LÐ õ…꽑ÐïŽ]å^±Nùí:kØ+w¼WîlšHŠœ�ƒEJBÜØYÆB-‰µû„j'KùíÓI] ½D²’çj™òÚ°Îo`ñïP­p‡š µ/÷¹Ç¬=ft¡¼¡Ã\ŠíNô§JÎŽ›ÑüŸ¹òåØúl}µ‰i~ §þ*ʆKUŽãàiôúþþgŒh‡ƒ@]G¿O·mÕb´µ�ôGG×d検&$S æj‡¡H•Ç‘›qȽq(¼qˆ»ß̓¯þW¾Óô²¶¹8þt< Ü!2:¬F92B‹hXŒâQ6*ÃîâÇ�Ìá¶Žø©#s¸a ˆ,GÃÍ|=^†Ë øC|¡¶“ê]º�ýx�‚†HY[˜â-JkÐòi.`tV˜9Oú 0�¡=qad‡Në(îcÛ}ÏêðÐÁ»þ[�B ™qôõp q‚a§q.ÝqæÈÜXë Cñ@]C'n`^åÅ-j‘†ñ$¬r\‡5t¹P—ló\FÑ5e,‘5£®õf£«•wµA¥Ñ=xf ãp;œú*ù„á\ÂpjÙ#bá\{µ—4ê”Ó|kqøñáþ½ƒ“uzŸÌ0,f;¦g«ù*JÃô)vô:öé&^ß¹=�®@¼:½L˜Áªp`îè�M”6—®Dû¼ŸZ¥‘K®Ð}Å^i¡NŠ�NrÉý‚’%‚_âÁh‡þåžìYîø„¬™ûû4˜ÿ-¿ÊQ]û¬\ˆjw ¾„ƒáKÂp€˜‡×Î<Ú9lC8XH~;‡Ê…ƒÿgµZ :B¹°ï®&3Ô—,ÈÿÂŒÚÔ0jSÅÌ·<¬yÂ-´½zƒvÍ?ÈÃA«`ÐÈôÿ8¡®Ç#ʶO^ZmóÎ&ú{Ž(›–‡N®q¨æ]s;#œ6´6à sEáZüÌÕ‹’4o7ŒlvT!�â#Õ ù8�š<2»/­8w®Cfãè9rGí¤y@¯ƒ£`RéãÏ•õcj¿ÔKJK:Âã& ¨Oµí þ”ó…ÅÌo>ZÌä¸TDZ¢Oî¼$'Épl ¿™±ï;¥4~ QƤ” c ¾IoB ÅsÄ…Sì\uûÄR@†}úÀ`e �I~¡ç§{v>¦zïÃïž¾;Þ(Xä_Ç�_†NdLgŸ ÄŽ4“]“µªX¦ !mäÛ´£‘Œ|íûèé±÷KqÞöŒ9#7sÛmc;•RÝl»Š.7.Nfî÷¥9“O®,57#F�=÷¤4ÁƒEtx(¼Ã­í#(S”íÆ§Ø` “W¸‰gùæ|D¼@:åfA>Íì�žù€ Å³E UOs‚UýC¢+ã± źšÍd&¥P*scÐ<¸I)qÄÌÏýÏa>®h.ö‘*Jû"ül¡DbUÓŠñ Ôç8JF§³ø,JÙ[ÆÌÂyü‡üb– «Å NóLs^nE�J…û•ü�¿c�OøMýC�•$*#y>&k1œóe+n =Í¢8@ûsª)ÉÖRÚl-þ+J·ù‡ ¾ë,ž—#LÙB @o$Îôx‰�áÐ3•rFÆu,K–%BÒ¦eU·=Í®Ñ~v´H�× &B7&êðEƒFå�kÉEtqÒŸ@kéøôeØ‹&5tçŒ+Êzãµ^D�}Úmù5LL(0*Œ%#Ô¶"uµ«ÞùE¯ß�#!é§Kqæ)e"i]­™)…=‰@W2ÙJ™g™×ÔëE˜€™Ò5ˆðgAxÌ‘³ v’3fI–âRÅ@Ô>›Äµøª«ñ£~N†[Œ¥ß˜ÝZK³‚AÑÐJ£+#ùŸ’„{;�aþøA‚ú–§ºå§ôœ�¦@ëÈ7‰X–>Å©Y.y¤@{zÌ(uíTÒQÛi×±N‰Ã—ÄŒ˜ZEŽBo0Ód”"ÿ¡ÙãÃBÔiòâ¬:’^†Î«ÑQÍ‚êä®`OR k¬Ô¦ì�jµ -†Å¸uìá¾ÃU ü«—,ê­²;O/HÐÑ�¦6«#ÁY>)Ù”OÖiÍ|6ò÷¨e1 þ7Ààà >Ê1XÐáðµ–¸èm]k~EŒƒikY +oþÁMêÈÌâ®ñæyò{*zPÌo¤ú·]8� ª¨0'’>aé7/yü)Û9™à›O— |ÙŹHs&¹Z´»t6MÕ¥ÍØBïÀŽÉ€ó°ãô[çüøì?²µp’od�ã©euq¸ÝÇbÖÝ-úw²ß6â-Á †yŒsõ$™kX’p}f®+»(G•¬T¨úÅôÈР™4|%¦RÍ}°ÖÕzÄD±ÿ{¬ë¨®Ú°Sx ¹9K›¤ò@Üf‰c­U„@NTot3bOއÉhH5œý�5CÉö0ÿfÞ‘åáWŸMNïï‹ÄøLSì{œ<¡ü†žšÒWRºÚN_×éêÉÓŽž¼J!Ÿ^vËî8f�g©ÞÄMíZkbU;ÄÊÉïe¸Ñó�+�ª`ir°g¡ÃÀcŸBÖ6)kM ])§ xTµV µ´]Zeú;æ¨ÏæpBÇ'O€§0 Ó•æŽB•®×œËjU£%ð�˨ gÒ1&øKGKWáZqF+ó<^òZR¨êZÂ[3›ºpFäç®ã#†Çþ2QÛTüÅS9ýš3üPÂ!±ã„ãh+Ò?áK £aó¨×qáÀsÜõ�ç_¿…õäx¸[ʹ®“i‡?#à"¶]пSÔ—•\Êá¹…ü�¢äxÅw¸SpK~ÐSߣžüŸ¡œÇ)Œx…Nlqÿì’ÉôsWùTµVL·Êà‚ÓU÷záÅÑ%%`w)³Î˜¬9‹{nG¥Ø|�ßs{>ÑÁ?ôMñDnÃו.‰7´Ú•yÔ¨ö@¨Îæ·ÎeÎ l%÷¡ÖkìSúMN5zÎyÏû/D Êož&þ‚$Ãî-µÕ—M¶&0,™® ¿k|b eð‰OÂ_8]&Wº3Šf/MíØYg7l Z œ‘l?@¥í'ÊÀLï[î>u%ïqG³ç±ÎÛ®ømMãìóßzXB”8Q³‹Nùü3EG죣Ã!ñBOôÒ2†1F±Üßÿë2ÖSOs r�wRÓ¹À!!ê‹üî¢6.dÉäü¿v*~Ýo§º=DeÔí|œ„SÚFwTpÇœ¦“[ ü¸Ú(�|˜Ã�`Œ[ îÝá¡ÀOÀ½5ßËí �O£;Ö„Óþ~Ái×£X/}À�G2ñ†þ öîgÌ»Ž%&˜¹ÖSeN'ü�'úsÿ¶=äÃ?*jNxàY‚º?Ÿ«²¨‰ÅEnõ³ÿUnUXÌüG,¦=üüpŠz óì=É(ϾWÏ õÏnÐÞô(SêûCxÏ;f`ÙÝHU{À*�aU;&/9ûš û‹H¦¸¼JÜyJM2îïKC ð·ÝäöŠnηIø—œr�–Æ­N¤ë÷Bkú¹&¾«­Jÿšü¥éØ×Žàºž\Wã`©�`Ê™©«”]~:ÞäžÎVn1ïù˜ë 8_j<Ÿ§á0¥ëÆ2§6(åVÒØše Ï9+Ÿâñ<. éø�Ž0鸊K¼î9ûCI_ì Á#˜¿ÖˆÚ8p©ˆ„8:ïù_¡¸‚¿ +K#ééôž«2I@zØ]^øëå%ãeX#aøe®•BøM®\ò~–+;bá?rŒ±3Æ_s�3ݱ§¸R²�˜t8N%å”AÕç,Š€Ì9P;ö„LWÝRd}Ø—ƒ ¨ƒˆ¿�C”8D/¹ h0TˆÜ=X:Ö/5ήaUÖëTäc8áA&%Æ’1CúÐGCåMa9y@‡çÐôS¯mœŽN$³ï+†HHt8ÇŽ ýæX;†Ô�S”f0ݵ‰JJNóü*ž—6Ü&_.Væ0Àa³)ʺ²Cçëkóþ<›H éE5<œþ �~ÔéMb œwÚ>¡z¡pä,Q.ÅpÛì±ç*¨ÒÞ »”ð;I ¢v7ä¡ S ’ü~I‹n ‚é‹uÃùà9nÃjè¹säÑ/ïqr(e¶ŠƒIV x3>%¤ÇõÜ»]"àÉèC‰€÷A~ØÚcÄ3§Á,ÉkR‹oÏ"´ ®�Я‹lyÿÇã<ðÑ_ÉþKÑ&³êCZÃJ©†q@‘ô´F¢µÞa¼öl°Äl0�ï§UbŽ#2\Á@XÓOËæföt£*·š± .9³ICn³¯`Ò�úgu}5Wûýð[¥Š1' H_d2-žF&äMCÂ'*¥�o@¦ã'Áɰ€Å?O;·¬#Ò;·]`"Ö]ÇçÙh„ê÷Í…x¤@³‚›u¥ §1ǵr¸�Çe0:%êÆŠ”~•'\VÔºŠnÆk�RCü´›Y¯ÊGÐ�ê˜õB~ÝÍò“èJð�ñÑqš]è·^î{ë©ûV8^ïàP}ßÐwÒë·Ñ*ŸÂê½…^\R/VÑä‹ck¶¸çÁñ�{3~Œ¡€; ¥jõtKÎN+µ¤^«ëÑ% ñµ¶c˜Q^_¨¸®ipƒÌ®Ê$~7£å¡iow…ä<Ù'º3�Stf’AºÂÅpËcƒFÔ;øq ?Æ—ôéL}quf£Q�Þ¬˜¢’2Vb•àäî8*ÃèÃmzOž¹í¿²³Õ|¸Š2X.Efâs”ÁèF4¼9ÞŒ %ô<ºqñÞÓ¨`[ða5\ a¿.{€šy„oCªb„M¼ž!€> 6þI�Ž®Äz‰¡h7º 7 <Ãuªž:•ÔiЧӣ£”+J ÚPrAž† ¹‡¡c~ä2ÚF…�r¿2³§çNÎѰñÿÏŸs9L’å�=x U8ø¯Ïv‘hþëŸA“¸Î+<Í•†ÞAƒç)A¾ -¼ðÙÊ9Gް¾À$ð6éç€\“t6ö<úµAüAÞZ0kÕ² ›V…æÀÉdŸ<­gÉxlµ¦˜Éƒuɽ^òá�‹»  AÓ£édŸÌ‹®–&|^Ñ)LÊ„Àñ¢e)™ã%H£æé¢:yÑÏ1)Ìá©>Ã�>ÏÑ´N®A˜ö�¨¨ªåê»�AƒÎ\®/D²÷ë¾ ¢ÃÁÈIW³½�à"@¢)$†È�ì'¦„?0Xb”¯æCm”¿ cܵl…7e¥. By„\"Ì}T4æõžÁ²Ë�¤àÄõJ{zÌq±~“µ‡kjVÇ<Ån4•2¦ìG§›á� ×p N8Š$ÆÙJ¥Y:’ù©V1"ãØx¡ÞŒ.ÊàŒ],z ¹Œ} fÁŸ�L• ‹‡¥šÓÖÍ5(,›‚{mrñšîgŰ¥_v�ÿ~GIú:þڌӎÂò)? H}.ÎÃŽS¿Åkn@Ôg•÷-ìÂ"E # _ a#p$…ى煭Y © 3ÝWY×CGÔáèÈ9XsÌ=”÷xÆÚ|8¢÷÷Ã4".�PxŸb°EúÔýƒˆ:¬Î§¸G`dÂsý%JK¢HÃW‹wøwo’Á…³žbØ@e'kÝ™,ÁlϤY~fü�r›üie~¡vä©|3º™ãLûpéA@üæ¹á�ò8—A@‰Å°¬Z§«z˜q®“böiue�:,…üÕ}Ûµ,:�F€ëšB�«t€Êî³u*$’ 'Ú­!6_l4B“~†TÑÌžÕgÆÄ&†@4I¬užˆÇ 6¿¦kô˜Á 9Б߆9p¯k8Å�–QÞ­Œþ®ùhÔ‡¦ gÉÙÉpV:-ì¶hküØ:‡êX±Ð¡"Vðª8®ÎèH{¼Aü¸UQb¶²’_‡kŽExÝ8¢0Éø�J¾žâLÑ̈‘ï.ÔV •ÖPCÚ$è*�¹½qYÀaV~\•Hðž«\_öUŒ½™°‹AªPð¤÷Qr{ÌÔÎÈÙòìd�A¸~BÓiÃm&Ñtžj‰]�Iôj”]‰ªýî‹�k‰¤‰À9}V9áµD•»p�wU¹Gö¥¾æÔ" ‚-=füPv Z+½êYéy¤QCs‹%Ä›t– \%š¬õ¶Îõ 8hÎ<%oi`DP™Ç|„¶T6”Æüc÷�SQÖTçp+ª ´-W1q¦­“Ü:Qï€]Ôç€ÐMg¦§†€ôf4odýFþŸôšø0øUQþ�’G'ž×*NxåäÄCÖ Úü3PYØWZÂ1OP€‘Ñ@µCØ„“0k4’ó‚t£iH§ýNøDÓlš‡ÜxAèüÑ»a‡É‘> A’Ñ2Á¤,bšjr]¦K´h™ßý„¶4³—p²¶´Njâé�¸ Ù ^JÌîWeqà hÓ Ì8ÞBÊ ¼3ãå÷@jX.V­Ó8)Å÷Îã¹דý—3 ⎾1Ó;Ó€…è.@žÊpa¤§í¤0&vè>&ˆü"tdKij¦{UàNDZ}c4íCGÍŽx°²;ë9e²­×=ÇÅØà�_¬`ÒæyXàös�íë.cX QÝ‘ƒº¬ŽS¨c(8-ÍÈ¢’ØD8]ËŽ·Ê.¾Â˜¦E´V°CŠá2Z7ˆá²Bï?Ï#EÆËíp¨;©bNGn;—–¡ˆ>KwEך²ä\äF˜ü kAbCÌO�9+¡›‚à´ÈB¨¼ê¼xAŠ}=0À^i±3k<›�2¯1­j‹ïì¡–‹G[nÌÃy{<z¤y<Òöôª¤LÔvþ7þüÛP–Jir¬£f ”AcdÂ0�¬–øFuÔ6mP{ÜÝŒBè‡3?¥7 燳@�>Ã,PM"ïÉ5cdCTªê/%œÌ”–Ó¤/Z±@+Ý-ú×T¨œãOE~޳ËP†óuNný•(Tõ¤Ö9t?Ô·W�~µó�ÕCßY¹ßÃIx]wF®ó }¢¼ßmc|{ßx³è¼²ò_éø˜¥‚æUýdØÓtcÙï ƒ{ŽçòUqû »LƒTì–�R ×tHkóèH¦ñ@!™Áñ�&5‡ðTA¼×7gtEÚÙÖ•óZ•ÖÉ�\8îòÀýh¶÷ÅÇú°]ÆË¥b“%×ðÔ7iýSü¡nƒk‘ƒ^²ü^ì 8/‹íõ:ßÖnbšà¸bßQÎ*¤¹f�z5œ/çÝøŠBV‘moò·éï‰_nœîýbŒoº®tPú÷ŽË]Ý læ#ÉI²ò*;M÷8îu½û.o@¨�"r±ÿl·9´và÷ûXíÅû¾º= I«p€ë–>™VüÔ«Z"ïN1™m«6¿Ó—kçCçÓ½>9#éu…}j�Qµ è,,2¶þ'ÙÉó›CG\w�$§»þ´ÞÀ N>n1:’h1D™'%%ìÄ›êÜ®qA*¦¬7œ"]½ôQ nÒå2“ŒKôdÙFcàÜ^…^וÍap¥£ääÉ(‡³?ÆÜÐ?aþœš^ˆ·ÞMŒ ždç™áF.F×£'ÇñSJ�·EkåÜ®žNçÓð4¸ˆ¦j‹7—£0Ëç«‹ˆc†¦3‚©Y8&êZÇDU�ò_]�b´^/³4öÍ�,àÿ• rOÀsœ b\Ë�‰ŸF>"Su ŒÙÇŒ»um<Ø|ĸ“§ÊvTÑ@¯yœ V½’Qt©‡m þŠk\�F �V¦8è…ô• :| 6?½qÝ€^ªM€3WÉÀC³½vÑÄËm«Z¢¤¢ôˆ¥OÜfÞQ°‡8ù3ãzÓDŽ㓪öäÂW”5:aÔÿu ÒŠ9 *¤AŸŠYèŠ8±=µ�*çÔ·öðy~ÑQâ%AŽX XåäjC¿>½Y˜DŠ.Šô<ÂgJ>Ú9¤ì«¢ü¾.‡Åä–¤RùB�"ù=ª:¹ïÛt‹Î!>no„ä�3½û•˜/9í/~%\ý'/�ï…MÆß8ŠÜ±Ú÷Ý\Þþxn¾¾ñgY{ÑÃ{:†qÈ5™´ÜÙ½5t `½’ÚkÝgx€HÍb�S ’‡“4ÊM#—]^ÁTÈòËôýÎa¦œµM¾Pská:ĽÙ0-G>»q˜+b` ³�º�z69zFî%<³ëèvŽ&ÜÚ%£¥»MS8²˜ß¬ïåè’õ,ÓƒÝÇ°ê¥nJ±"ª‰¬}݆Z¤C½h /ST²¡;º–�£«ÑröÀ‰ó^½¢$`^õ{RRŸÞß/p„�’Ô¿%où<Ÿ{F½wÏ(õΛÝ÷ö÷ý½{ÛÕü†ýý6ÚŒV£´x^Gד[õþ½›•(ÑÔÝUy;…GáëÑÛÑò©� 6ôØ(ºS×´nàØ£æ¢‡§Ž+a ©Ý—£»§Î|@³ÜÈëQ¢« ]Ú÷Л£Ç&V?®)Ûì°m³@ç(rÈÚ€H³¡œÝ|}×7ˆ¶Ò@´Zqš‰V‹9íÓ€ÍÒv2ñ¾¹BÛuå�œÊoÅ0ún §Ô/BäöÊ%ÕJP3oçÊ_zø„sÍ�jC©êwªs<ù _££)jíÄ\~ÃþÚoÿúæ§''OÜð£ÔQôØøÅt¢zÁMyCfØÛ×Ù™Ë †çɰ¢L)Éh…•¾Úèèh4Žss‰WòOÃíø‘�§hZ+Ý£ªFÎ*à ìÔ Ì`†]•ºD0�-¼f�äĪ£§”1#æÛ„Á¼1ÓG¡> +D°ÔYb‚°ÒZùá.ÙêÐö”Ïj=9¨hp £0 Ã×�z©Þ°�††×áÂa5g"h? ô³DE²ñÑë£Ø‚á;õštÜÎaó†v*:„|#5©"ñ›R¢€7º‚1$ÌØ2}— {õözꄼÊ�”Ð%B©CjšÖçÜÎac�" #!än—�ÚÆ9ÔzÕ55©±‚JñðLäð¬¢;¼�£SÛ{™àü±S¹°éÎc2b2÷¡ü Žb¤,bTrj µ°<†&˜Æö1½ï�îò>hA߀ñhΚ¯¡.i]®»Ò£`•-·0Ç:�¢y'ÂFîoÌÖQ6r^¢_îS×±Ö|èQï?ÓuN’-ö=†^/FKÌgO(GâVP‡ˆO?“RL|¤mf® �Û”!ÿ’j­É³Ì%¼¾·°²1s^_wû5e¼Ì\fµ,³—Ym—™Q„ËJ›'4�Ü.¤34¥,\ß®áYí8ô �–};ëö‚ä8ü££ß´^­5)üå}‚5tu:KÏ´áf6"�GV”£c)¾K^¤9}Yýü2~¯@£] öÝè›ê:ôxãZÉlÊCßeÑ*9eތȧÙÏNÆ!h’l £‹üûŽéÀ:בӜ¤[ƒÚNÞ8ݘ$–sž1žçCΦ’V&>�¡¾3‡è.;¹cW?¿ë:K]Ov5s€q£ŽÑcÎó(Um“…ú¹¢¤•ž1o¥g¬ŒK¥8Wž;::Œ1 �-ÌBWxYê:�>¤îs&»]ê>×°¿µ®dRÜy•(~VxC&åWdRæA“r&—:õæ{±†wÝL¸*ä¾/†¤…bËŠ–ÜRm¶m‚Ùï:Ñõ…=L8¨ß)A ìBÀheÎ…%ú»Î}·ô›lj`)ÐV½~‹·®ÕûjkJ6ŸëF\ïOi iÙ(0ﱯð‘6LZÆ`‡Jq$AûÌÍLÜ�˜pªJÏL(D �„ú� IDW±ܬM3¡ƒô}xªØˆž&Ÿ+™þ®�ÓK)‹˜§4C³¼k‹¯(q=%Œ¯ð“uêzÔ]çÊ·ÈÒdCYß|¡UU,TSú@¶-hêÎ'†‘mÿ85r÷)†¤ºöŽ<¯ežã +Ña�+‡u2¾U¨3Ó¥©¢9N.�ÅÚ7Us²\›�C×|ŠÒ¤¦ó©à ÓœY±‹Èd!† [ar.Y]/ø|Wæ\ ㎤‘XS‹&"<¬u|�)'Ôo3I´”aî�ÈáË;Þ=�´ÀcîÙ„ †_ ‡Zé¦õOÁÉ•Ã2ØîÐ'¸s÷Š-±[œ©ÃÚæ² Ïà'æmš@He£ˆ›xt=š-yêlI½ iºƒ†B5Þ`èá bBßš½Óª¿§ Ú ŠÄD½HÛUÏþJ¨ò0æÖ…üè̶n:¨m{ÿ·-å—²ÿŒÙ…KóŸÛ­÷ãrÛŽ:ß5ň—O0J:çŽðóí¤’ê<-�è„ÀŠ<R&ýö1<�ùsr‡µaƒ5GS[“¨Ë{ÏJf}&M·ƒEè|FÑV(÷rìzÊf-u³¯Zfµï³òÚvòÖš‚v›T;íU‚±çä“â7Ž •\tÀ–Uªk¬%QH “Q�Néã7–ïÑÓÏ|VO¡Êš"¼ôE4ž|qü€¦Ææ^ÂOè4Y�ÑžˆÍ/aÆTç×pm�©¥¥r‹¦qàŽâ\õ°ë{Äé–ž:ó~ò¤5ó(Tè¾åºo…í[lûV °��+à%´­Xž›" †Všk°·%‡„WÈÑÌÊ6C#lêÄQøä9ÌüzÕ"ëúŽXW…s­ù·a\?´×ÃþP*d_?ô²¯É~ö•¼©\ö•¼½©ϳbñ¸J*´<­eXl­Y‹ÑM×ÖzŒËõÛ{˜Óu1o<–Ò9èpé„;a&a£fËA㱜cÖâSåDÔœè“äsóJ?Òî`!`½{ON©¤Aã÷¶ 9û{¿{oH yM‹áíöÊ]ÕöJ–D¯ü²Þ?MlQo Ôâ>,¼%| ›ÀŸ<É”Õþ¡©5ý_Ìk^”7q¶gf›ØÓ/¦Óÿƒ™}YD;�ʘ¡¾Ø-È�?dÒÈFSƒÍ‚j—$šºP÷ÉYJéÖì™�î¢B$#C "Y%an‚ä�0˜U# ÆEœ–É�� †Ùž`ÒòüÊ" %UmT({ú/9T#„gD�æœ?lo®@fxýãÛoúöo_^~ûÃWßþðíO¿rZXø8›Fl–’¯²KÎSïã*T>ô}Ü¿H›Ôv €E9C7²’âQ‘?Æ€PûTÞ3$�Jg ³º vðøõñÐð$FWscMþ×i:½«Ñðv|gÞËoùå8òîfÅÝÔcÎ}ø©ØŒVÇ ïÙ?ËÕäiìKƒÊtçW_YcË•J}01¬�.7žê€¦Ô÷†PË¡6=Ý™›™{Ó™èÇ"&‹Šž�ŸºŒÚ£�žà (n_›£p9¬éxl›øìR" +}AMÃÕ.ñ0â.-Ü.ñ0q‡m˜çÕÖ%{ˆÙ•ö/»qöÞ÷í"BûHuÊ"ùAv˜ C5H¹À“£–‹md‘f´pfm˜Õd™³hX޲àäIËÞÂ�J×â˜æO£x %˜Ÿ=ÒFQÕEHéé1JnédGf�ÈH~ËÐëŽiq¬>:ÊGÅ(~šðXaºwz›ÜãVDîGgW⧸còy@]ì€~Ù \N'wâ¿‘˜_}¡Äta\£Ä¬Õ³  Y¦0}Z ­S¡H¼†5cÁf³@”NnÍûõ/gÚÕ�ÈMn&×Ϊ0ŠÚMg@át^eî%qVúÍ¥n;Õ `T(ƒÖ½°8ÜK`{ëáf¯4ìǼû¯»Áò„ÇÄ“_Ù°;‰É<G•kM§–qD ñ„3QjVqÓ‡„°ÃÓG¦%wÞ z‡dl\VãÈQ?$ó|”÷öqE°Œ�‘ÍÍ*,ç×£hÚ^#ßt=ŽÖAèÖ»ømÛ`”·Ÿ¹î¦+¨ 7Ã/Ãk�£EË2N´ ünl膬(c/v·�Õìk…:_•ÌÌ[ðsÝ™pîŒEaÅàݤ&sÒݺÀWÀë�_(âÑœ¸Ç¯Z,E «áüÔ,fO�…,CÕ·QɧÐA´4”hžH‘c=èß>ZZàQUßi…ße �}ŸØà#2ϼîÓ9^VV»(%‹x±N–Ïr�¸ke”¯àxý‚ÏâþÚŸ!ßßàG#¹J[J$ê¨o%©¢­ø V‡öu7q"¤¾*לž- o«Àœ¨¾–:¯ˆ �Wt×-ºõ+|zÐQ¼_ºE¿úZiä­ùÌï–[ÃQÏMdT¼›4‡Er7g�ñÿcHkÊ›Kà Šì}b«·U‚�öH‰mL¶³&|¥7j,^ð[Y�}m¯Ö ž1nGý�Y²(:Ûõ "#*SÞiG"zŸQÓÝÅæL²­Î€øÖè&™7n§<Z=b:õ£Á¡»¼�ªoSª¨UÙI†ä;7’ÄKT„Páø;6£µÅN²‡”Ãz…À1 'o'ª©Å\ìÎyMéJRÞ€�;Ü¡ Öû g^t ãHpŒ¸"X }•{Wuc¿Ÿ›-îÉè¿#�…ù—�n½Ÿâíã{¾Ýv8`åXK“hÇmcn2b¥ñ}.ü@Üɯ0 «f/°GÂzãçÈo ©§:|ÕeÆ<çë×à ̬S[ô³·©Jë �¥§d¤Ï4±{hÀ¬Ì×7^_eü¨ÕÂU{—˪ÿ–Y/ý�þG ærE�Цè8Éù©·—�¤ AÎl²PÆ’’Ø{̪U[ñYÉaø<ö¨�±D%9�/ÇÍËÄ?f§Oñ�¨áRyàEAV¬È±�è(ÿ–ãñ1ÿH.žæ.=Ä�,‡™Â¨JÃÁ|E!ßzÖCVJêœ+ÎbB%VîÕ°'L«ZáU3g�_«Ñ¡˜î)Ví9Àòþ³«è°™Ê5–>zn¸‹�‘5yÚÉ=[t&æ,{Yœ§ÆÆvá|cÕÇ„‘Ê‘g!¦�ËÀè>1E.”¾ë03ºŠCüœz^ ÿžettK l-a|tÙíxß?•™‹ü‰—7>G~†•]CI8`o|éí�”‘ØÞœ�ÖaÅÐ|«ãNø‡Çi•ò6äN8àðT݆á°e“;‘ÏDòД7Xœü…`Û˜©B춆=ÏÈ3Ûa­)ʼ±^zØá¢ŸëEªÜà Mô"Å�CÃ!r#Èõ—yœ¹¿�¥uª�,‡=ÝfW-J9�öÍøi]°³àI¦Öšðš*ͳåA[NÑ9Ê–=Á²'~ÙçXö9çYiµéyŠÌ¯ô\‡;Y9¿+اVx/­ðž¹ÂûÚÞ"¼£ŠA;[RðjXéup­q¼6êF]©[u©îºre>^FÛÑ5ÈÔF$®æÃM´T7Ñf\¨ÛèrT¨»èr\!–�VxgDwÆtgTê*ÚÀí›Èid9rÔœë`T8B+Þ]Ù]™ZcqZàe«´":xmÕet /ÛD7ðïUt3ÂÎÜbÇñΈîŒètút‹csnÔí“ðFÝ~^©»ÓöÍ“†áóð®qÜåû’t²²27*j‹¸3sÍ-:ħÖ!þÖ ÛÄ#¶_ô­¦Ü,ïê4s<ïöÌ� 0õt­ßn¢wTï±æME·«/½$ÝbG.‰‘/´¾³D Bg,~ˆt¼b†½!htôמ�—En!¦è5a/ÁÝ´«Ç:‚�º#u?½Dµ�Mô¾.�RçäÄ[ðJf�qç1lœ\-qÜrdž±5¤ã×µ‚™¿nuegKçûæC÷jŒZW4Á¢aptÍØ¬½q@‰‰r"üñiש®ìõ¨+û�Nàà*7bg…Ûl M°A³“'3?)i>¹ÙýKr÷ܸ&zÐc½*Ù ª 0 §=ß7Ðm¨ëüè´Â¡HnNÔ¢åc9w#<üð"¿bz×÷÷§�tÑ ár}& aKà�Ȳ®[%æ ÕÚûñ"hÏH%qZ+G T?A&áÒ:•ê�*ÿ+Ëž ª�Ù#óF(ª‚ôŒÙ!�A€}!k°l R›�ÕV«ÝIô{ _€¸ý›Ñ)¾bü_ÿö¼†àé3WxCÙÕFá1½k—>ÜQÓNª°oØ3èW€huöÁ>f(  Zp´g;[Lõ�îà–®øÄ/”g¤òM¨–,e.YZ#°`rnÈ�8Ûȵà!„ÃL£aZ1íÞ"¾å œì×Î9Tp'„yPïÕ+õ�ý7ÜxÙ½TÒ2ª¹Gá Ÿ^öcørž>qÛ´‚F"®¢øèH8Ø7s‡‹)æ@íF0ª#üwªPUüÊžÝwg¯àd»ã4 WQu~w¡ƒ­Û³wáõêúr¥µ´^‰¾:si¡l­¿�9Ð îÔ5~çÖ10¸Ó‰)PßCW?Dº©Ùû³ÐÕ÷ÁfxyþþuŸ˜aoX² š{x-ÊÈñû ³;ŽÀê3: �X;»�ÇÈïp«†á~ e§öø ?>ÒyþQFÈõ8ðWßéç|N0'=†ÇùÄÀl|ç“ú–uf1-uë˜WuTƒ¦š´p lé0õ™fêמ´ð)¦>ôJ³bÊ@NËM¼S´òNÑÄ9¹ýlÕ‰w>$å7-0 ²æè ‘»Ò›¸âQ6^âCÉä·m 5ëtñb[JspŒ)úw´„f2`óŸóhd=^íÑh�¯¯ð¼Ì#?î3¶ü\_ëÜ6½Ûù -F}ÔW@‹}ïP2ú‰‡Òšè³ß›@„H 3Ð\²ðnäùŸü¶£NôlŽ©Œ5¤Š]Âw¤Yº¿Ï­¾êeq^÷j•¬;d¿HO�äOw´ù$Z¹VEBÝìðh2猚4JÉ­†1¹kf—‰ÙïÒàl2�žÎ§aj‚çO¦bG¨—ãMÕ:~`º¼SÒö“bQîkOVkŠ‹Iþ5Ï×YqgϲÍ:Ö‹­ãÖ‰D+¤ÆU߆÷£ú ÏÆlõ9+m›Èº¶ åè—âeï+tfRt=£í§s©¶óKòæDÉ Ñ[u»Zi½™ÑÊM¡xÃ�÷%nšœˆÌ{ÔX]·ÍZ“€v.»Á‹8Ï‹ú`íÄò’ƒÝMბMeÜê�ñ¢d×ÌäÂô Õøyt¸%ÜgƒT¨)׋5¦<^*ë SÂØœûÙQ¯šÜ`o•€aCªM :¥ptO¶öáæÄ §ŒðPŒ¾Ë‰ÖÁv²ÞÌû_u:óxA›ñ¤=ÓæË»«‘ÛVŽ÷N�¤¸Ä\F0Œ…ʃûûX›‡Êöp 8ÙK÷÷•ÑÛqõÒÍOÒ´Í0ðæ¦·Ó}zc't§/ �û̆“Þê ñ!³fõ»žÕ4Ú_%¢áâp´ä,bÀuPgÑtÓ3I’ž?ÕZþÊGhís�çlÞÎ*“6‰ ´1SN“[vúqÇÉßl|ô š#£úsŽë[»Döè+Ûó·B9φ/ 6›§&Î#%Z)�’ƒÂß0ÚC|«M¬Gì‰Âp’¬#’ãê�Á=@Ú’úS` öö!©kÏx×%蘆4Ïz(4&3^=º”®î^g[Ä£ÕpÜ2€„*­LF,8Kø„Fm¤Í­gÙÕÀ´éƶSN7é‹›�™Í(3ûõ=ï:£òÂeˆÄ‚— ’žÆ�f1Y¸aÃÉnåxrŸ"#ÕI«^^_ÅÃ)E¦M'Ê*«ÃÁÿ³Z­¤ä«¾€'Wç>Qusø'eêâú§ŒºA·ïjtž(­‡ �Y´ÚyÖ(õÓžèÏ·d\è‚•O»[VÌÕ¯Ðá=òÝBŸ(kIú·$ýÉÑ4‰‡¼õÔg <£~Ús¿«’ÓŸç+µ`Š=·kG<ô§2x*ë©2âA¸[nKþõÇ)¬˜3‹‡ø›ü¸­ÿºÅ �­ë+§ Ì÷I.>|9ЩWRôHÜÔàþ'nþ2 ?˜Hê¿.¥­�;ýnIŠ®LÇžL§°Â­ËÇÎq BÏ#¶ÉcðéÔ¡–›šìþa�Ó¹ÎéNuX³â&%Ã@Ø“ª#æÜ1˜Ôöýý`ÀP.tikÑ%I`,æ™`’3s„¥çNñ…D BTôg[–Ù\�Gã_="ÿîɇŒ!²j?8*ý�â®{†]Ø’Q„ ¹ Ô­çµë}�ê >j&e O>ýïgF=°Ž X¢¶ckøOwã$ž–¥M!; W½�•xzk´074¢mÌðî l„ÍÐÈ8 iKÐógˆ©Ô·ö¯ÿÃÁs gI¯á,1†3}0ê…j„9³„Y>Âäú‡ã›…@;„ÒT(\ò.%öÀ₇±'4z„¤¦Õ¾MúZ©tíeºÊ Þn"=k(”Ò0±èƨOJãèiÜ9 “*©¨%â/CÒ‰>>P$“(­¾Â×&4y˜ž3q†?�S«ÊP9tÒ¦'ŸÍ2�}pCä:þ>½Ikã ¾ƒâ—É î-A ¹‰oõ…¤UÀø¹B’„I{‡¤aÃg`81égek½JóWñ-ªfƒ:…=ß9K9ñ/JT”Øz §ü¨:e{._ïÓª)xiTqJŒŸð%m§vLpš˜¤m‡õ‚�’Jû�æÝIÊ£)‡‚%„¸¦»2ÏÃ|RÑ2APÍÓ »ž�)ÍÑjæKQP6Ñ*:ì)$�]+A©fùÐD_ãòàîË6Cý–Þ*@ÅBýiºE¦Ól«q{�ƒ“ö$y}ù‰ÀÍZƒFK× †ÖOgàfmw�? ‡R¯â[¨nržUßäîóVGºaù&çéãÞ/qò¸zÜ�$L¶áSÿj…O�“WnGÌ Z'DlAH.ÚÕ˜òz€)s d¹m^3Ú m¹pAt"½2.•`I1�`�¿UT ÇËu´€“‰¨Å†Ú½AÏô«è°BÁ[ü[¢åþbxZ4¼o‚“ávíN2ë«wêmôí�ï]Ÿ¬‚cÊ øöì4Ÿþñèèð þ¿Õª/Ù'›Fɯ›æböŽ·æ"I³áÍÉÛ€ÝûVYn×êÝÓkXvøšwÇoå%�BÈ`„àæ§7Ňáé=<Þ:ͽ=~œ¼G¢¦xù|ø*j½àø­úÐêaþ¼Š6pã&Pð ·GGÅÑQ?ºŒw4˜èµqr†t*%O£ºËqœWrrš|̇ïÜÇŒk×zK™ßF|õN½ŠbèH„—Øû«yÂÈG·ó2„ñ�`ÝcÝãWPºýN~¿…{_ ß)ç=ïý~¯0´ÿ.ÐÏkK1Â,ü0|…11ÞpãÌ_‡0꯼ϡa׃Êe¨ŒÎKAó€an�Ž^[Ï1ŠÑ!¥˜’õÕYŒÐå#õ•{ú_�^Âôð+bõZ+ï0–ƒê·ÈSÁìåÙ»Ùhô2ð[ÞÓ”%Ý0ÕЫ˜×ÂÈÚGG_ Ós{h %Q%¾¿ä÷Ï{*De追l‚ðVZÇœëî½ FÀ¢ð󤻵¡ëxª§ù-¦T�eVŸɼ§}_k)×óZTëq�Æ.G“ÿþâ89О¡íO.ñÃu˜ÀJ�ƒ¦F£H�\ååY¨oŠþŸ¤Ëh°�;X8Ñê¼hG[-4/!Ü´ íCÑ$–ûõã™W"ÈÛŠ¥~ôæö6 ŽýL¯Ë=¿FB£Ï½H$ îËðÐp…0Â|$�j±Á ‰¦W±,d=ò€xVÿ#) 8ð}{ŠË&.˜>ÂVD×E�oí ÑÓ ¥1Õ&^÷üSÍñ…†_{CПð'GäTýœMçñp„5)‚ðŸ.‚8FÉhÇ•ÓÙ0ª¡n^=ûåòí³¯êæ§/¿þòÍý}ufî}ûƒw�ÔÄÖ<;™~qL1JÃ|„ÉûûbˆPk�a:+Ët棷xGüó~xiä]h§Lzs`Ã9KúQ'pý šë.yÔï;©¼cJ÷ŠG§*y $“Á+‹,™|ˆA¬ø'e,­&ŸIŠ»eý™˜×|¶«šƒÅ6[”I»é@�"A¶<Ønêª$Í?w@ýÆ[P~:�N'ÿÄùBꇀA&äm30Às§púÏ›ÚáÖÉ#Q�Õ}Do„}èEðû>„¼|+|9oÑ–y‹ø®lïHí†ê¡ ÜÌiâ£"( %O꾃¦og{³ØZÕ0•sëbãúÖÀÔ>ö|»³ò1NpX[f$u˜‘Ô0#ÚQ@\“°g¨÷Ô]žcB891ë�SŒþµÎ•Uð�,{ð¿,¦î ÿ©Ñ qA7È|ârÞÎáó% áÄ«}O†(áÔ~NígæÔ´�êç‡ø´º2޲𳓔éÂðg¿ý¿ÂŸíãÄ´¤õ«ËKÒ}?úY%¤ªÅØíTvSÖèôéu¥¨äwafùèpú˜öíö¤¡Qð9Ah³›-êTHÜ Fgy@ã®"Ý ÙÛ�p—ÿ†QŸÒHÊ+KʵÀ‘DO¡ )aã¹¥›ùdÏj¡F�Õ»Ãô,šÎ‡ù8’ê"ó’aÎ)Aºƒãî”b´±æÑQN%t³¢‚‚jm$�˜¡ï:`õ²Ú^_'pö/aþ`9ÀÛc÷©iÀ Ë[?U­iÙœ4úû:N‘@:T�˜JwÈRrEh¡ƒŸ²—§ƒ^Íö0m.ýþÒ•êý¥‘”‚1Öxè\æOas%ýAåµ/£^Öiã€Ò>t‚×Ú®ϧ!œûLo+ì»g¸Ç¡ÈŠî°I�~Øõ)ÚàÑÈM“MÜg�/îdÜ$We<º—e±yÝJ�” >8zl¬ŒŸÎwµ½F»N6¦¶K_{(ÖjÎ)6È'¤FÝÑç…É8=y¢Ð⚌àWÖgXå©[�o7¡.ÑÕ�!ø‡7;³8ERm�Ì)sR 7$‹¬½#ùÖšӰúØçW$)rBV{G4ðÀÈv<ü“€áLÒ‚ o/ÉE€M5á³´�[ç6eØ[XÔ].�¿=‰Ã©1 m£él{϶£‘�Y.=ÏyZצ]¼ ‚Yq¾½ˆbí¡.ÄqÙ' ¾ÀÈ:B5ôÁᓨ¿Æ¨§XÀã7æ('d×Et­–Q>\¶> æËð|y¡vÂ:®•…»„³#\Ê x ¡M0Ã'£�tñ&ú•?‹L×Ïòk õÛ`”!€s2ü}xùZOu£`^©ÕúÉ5U§>HÊî l­þgªžü7z8£[)tL-g¬ë"'“lœN2Dã¹F÷u¸!fr×WHÎ�ïeÈŠNÖ>F æ¦I [ýO!ظPœY€R¸ ¦w±äÎbAäëâ,Ÿv±ä}³]¨r�Òó‚æxí�鯈€„C>z† Â"J°Þ2Jb¸qÓ¹Vk ük�–XMX+}kpoÖ“<¥—¸ÿV9y·—‚@ºá“’Ña ë&hŒ]”°Í ;ð;�Öh%¥á@Òð6¦\ÄIÎ Max§39[ш:–Í¿”¡(‹UzÁÆC�Ë“I]z +„@²É�|‰ †*­vª¦ETŽJ‚üÑ/«1�F¸Žsý²ó¸/£Ø‰q/ËåeWÄ/ syÙ?tå¾ì ããF™ ·øWW8œòᛃ٠J E-dWÛúOñÚnCt¦óz%.D'¹YC…/Ú&’Vÿƒ=ö ¶¤içäI8LŸB ßgÿ3 ¤)¯¡4îÍv�jXq`õ– Œ¨äm�!”ò+ªðZR2ŠÌÒÝ(mÍrUˆR)f�³[ì¶XE[¬÷ùÏ„\GÍéç’¸‹ë¸LëõMº±û7»±ÛÞÄò�–½�ç„§u|¤#’W±«ZzP$—�óa{ÊJå æɲð™m¢É=/Ó›$¯z �L6)<R€K+q²x>˜<ÇSªuŠn>¨#˜µ—æFs[MO|E‚yR$�º7íÚÈQ¤T~ÝQrê[ã™Âä°�úõì×,œ¶4 dRÖ·£ø37I8ýt`GÅÖþÈ“öd!¯Ì)¬¨“°íWßÔ×®âAïõ,,= ÆÑˆÃ½X�`dé…¯yôSÙO¬ ò» KL”RLçJN@á­ð$n¦”$/ÍÒú3õÝkWšÕ.£îöHç(ý�`ÀRK‹AÑ>ïM«ÜÐDw=�Ü%¤4¡­ã®a¿F:®l gRÇιԞï'ÊM[K} ñÈáÝìñ|Ýñðõɰ3Ÿ&Þñ4F-}1�ÔL 7þ2eKêWeqÃâÊŠ-O>Xï>ÔšÛ}#{Ž�饉Ò�0B¼­'¡Vãslj+v»øX×NºƒÛÓ»‡»gê'¡~bDÝêJ¿Lg:0 �L¼-3'¸ç¼6 ‘mXŠD•=5Sä(Ø©ö]LJ­w³Eg¥dIMçxå€Ä©e²õ“Þr?¥HÝÚ*˜¢‘»?€A5£½©ùâ‚Z½Ý »ÖË¿Q1´úk´û—lX0óàà Û. ÙPWÁt†ÒÝvùP!^`(º‡ŒÉé‘z¸©‹î#WC/�ÿ×ði�çnS;ZgßÜmÊ㡳Èìé�ÅLeÅOÏ!Òë~FœrjBwÎs8gÀA[67£ûÊñØŠü#4ë&�Û¡â&»3¢àšEÁ…' jDéŠÙ(…î´‹W¡R|ìðÚIitÉÙcä+�~¾£s§R+Hòh1–ÜÛE´sªí8ÚŽ: 7ê«ñÒ$ÞnájÕ}¸ZiÕ*U”úâ.,Ô‡0V”÷�ãaê&0‹*S‹2•+¾ o)^`t`=Œb@ªïü|îô&ØÃtz¼‡ ”c,«B ®Ö/Ö–Û#ÒÂècvžxÖÎ÷$!­%`ø6! úKb'³,¦ šb m8±cøýäÐÑ33�È}¬6‘ÍY¦T¹‡Öæ†*i)ÎAjë‰dÊ;äáç0|?÷h†îýt´ô!(Œ„¬L%ªA À¦ Ý1’|g°eш2‹í–Eìèž¶»»M;2¹3˜”s”3Тƒ¦×ÂÀË[¸w•7’Ì»ª;’µtY‚>»£ 7d É¢þ“wŽjÃÛ‰˜ïñ. »u7QÞA²C ·ÍNŸTŸ®´pò耜F“ßÉ2;{€Ù™Uyæ�è,™ÉßF‘k”λvбl>ã=XX½´ R±¦h.…=iÌ]þg”ýKÒ]ˆ”¬äムÁ>Ь˜^�ÇÚy_•”˜œæá¹ Ì÷sC¡6ÖÍ:%ˆm�†Ñq‰râA†y¿ÃþvŽ"3"�>VÆù8#³ áñRŒ4À2ßÙ|.¥"=Éo »SoÔ’‰zÃøßÎR´°-°Qõ„ç`œy.U ÇbLº§Ò¹‹7å““‚žãô?½I,5Pã>fiÉ©3z~Ñ��6mvíø‡ V†u&ßôˆwŠrÙ�'!ú«Ö†O”ó!œ.g'<�6ÎÛ¢§µ‰¤ÿBu”ô”ÑÒUŽíŒv;`<� Õ7Á¹5ðÔRc!÷xûù¥òþ¹¬¥r‰£<@Ý Ÿ¶q´»�ušV àð770¹ðÍüµä Y…§˜½u_�äs©õ' Èð��JJþèTZÛ²Såó?%_H�'lÔ†¾]åÏú£©ó9´ó!IÞÙJ§òªéÿljACpV`»©'zòçäOúóž4ê7„HÊNsÿýç?ÿÑT„æî`§tû~úÅ“ÿ†¹. Ø»ä®æ±<ǾÔ8N¬j»Œ�HÄdO$"ÆÆ¤æ;rjÂóšQ •VÅßa4pÔJ桱Æ�›šý-3“˜l ßi=Ôs2.äÃŒ¼¨)\&‹:Áªù<•`®LåÈ�Ê…�ìÊØ‰}XP{œ '.€9û}HïS‰– �ýã Z*°%{9�ïxå(sŒY[û¼bk¹ÈŠ/P¦rá)Îrà�F£ÂÉ`ŸðßÛèhbçò7ÜãŽN²è„'ýèȪ@Ùét˜‹­<8‹ Ú½£±Ð� û5kc!ÓýëkZvY�)Ì0p7ú ¹]Ïêóô¼ºxŠÙÑào˜žçè›Æ û˜Õ¯Ì;q¯]r×wí ”:ÿÆ,>+¬²Œ0ÆÊÏË `�ýÆRì @ÞŒNjÊè>éü!ÎÞ,à"åfÚ“ó©”©�›MΓv€ŒÎæNÝ,£bVžEñ¬ÄV€üKuŠÊÇ,J QœTWÐlv1¡Ž¢cœîg–E„E +ñ¾]ÆMÙŠ"Bö¢\5LèÑ–>¦ª·¡<­£lGá™.©#?c©g1a‡æ '… 83,¦etxªz/»i¦ÚÉWëôqù´ç¤ààA'à£Ä‘%îp"Å”øƒ ©Uàœ®†† ýŠÓJécµÿ9Û)M�„$”B”R6,»¤)�Ø 8PÜxìîç'{Ñoã¸6Ù)µ(h4jÈœ·&Ö/üÈÙ|È8Ó¼à·Ò“2ÁµpO‹¡r£�ËÂõ¸,÷x\Zrˆk³0ÎN¤ ¦8l£¯¯—+ìTA ed'ÎYqiÐÀö-‘ö‹‚L›Xô»ÝøHëö6à1ü2U�ã}k13¾µX‘C#&E6ö¨*˜Wá(1Ôgþ ÕèÛs[9æ9V†½Ú®::µþ˜ÎÙ ¬%Ì|uÕó é|d?ÁO0�п›�vzMöæè†i—[?|ùõ3?}·E ÑÀÎŧ>· ‡ÛR ¦\þØÀ™›D¦"ª"gjR™”ùÞÏ õ¤³9nèÅÿ›Ù®l×Í` ÁcÏÉûû ?È ¸s3FÈ·óÊùL£vÓmÁ¹Ð“Ëó€ó»×îY?«Î»ŽÁ³dT£—æO ‚ÎÚ§é,ÈÇc¡õtzŸŸéFðÄ'ô& ëÿš^û†¦åzmŒ·uñö]º™KBþ´HÖÍâ3­(½ˆ ƒ,Ãö!‰.- £ 5±G“®V6�ˆÉ 99Æ´ïšC±'-òÜ¥VOQµkÀ˜Ö$�{¯§Z¨½–øLs Ø.åcׂ•�kkI‡O°ŸžøÜìÑÔáñ’³X“$àÏ-@S²Ãt%Òy~MºÇ-ž5,qV¬úèÅC\ÈIR´?,h´ç™ÌÿÐÏð(ÁIÏt•êáÿµßë¨PÈp BäHëE�{U%VWm�é¬ç…6Š ŠÖ—TQ’À¾DâËH�² NÇI8ÜÿìQ²«ô�f=•ûí§!°Èñè“‹ÍÏ6öTnœ}ް“'_̪èØ£SÒMÃÏœ¶˜(ö­Ès4W«y¸ðô©ý(GØbKÞZ>'úÐî LSàÒŠ©måB2ô…Ó{$1øÏ�ÍŸ�‰$C%µŽ/’Õ&èú‚ôynôÆ5ø«GhØC”ÖgKú¢…‹¥Á1,"°ðà»õ#'ºÁ1qß^WÐÕ$ýÿÕv5»mÃ0ø¾·hNv¬nõŽnÓ`§ Æa‡"µQbc†µEzüî#©?JvÖ]v(j)¶(ÙERäÇõÒ¸üêR"'„“PÏø“üè�ñÆG“¦¨[ ŠZ¬Æ½‚ù€øð"ëôfüŰR2êx·‡—¦[•\kÑ•†«ašæ þòI:Ÿ-;ƒkˆ6‘}0kl{]\â7ALyw3A…£ˆ'Ÿ`È¿–^(ÕÙLðúí �è…r[‚PêC&ïo¶²©§þMËÒºì0M›P½‡Q°wyæ8;ì‚~>·Ýp$»^!š#n ý“ ¢fR&¢{¤ºA½$Ã~üÐ÷hW°Ž V4sif€�¨˜«f%£‚m Ñšx–˜Áeü§æ2]‚uˆ*ÂzI/Ëäû|]µû»e ±yòï¹Ë$c•&g•�ЛS ðÍåAôÌ“}Š­Ë¯G¬”‚ýHhÛ•²ä�Ng™(Ây?�ß~6o»m�˜I°!x8�@¡w…ͧ'4ŸöÓæ#´·‚êaW¿á„D\‘”Z𵃭•5EŽÖG¶4'‚õž µdðÄŒS¡Ú�j÷�ÚÍp@ËÚ­® y­Ëu¡Ð7ä wÇx{YÂãY²{~|çð/¬à%¼­ᦩÞfwU ä=øßZíà‚ì ä„Zt ¬)6;.ÍNဎ$»f…Zòjæ˜^GÇôC´ºîå+VWB�.åЧmRK*Ýbà ™•Ô«Rù:"P¿ÊEŸ©á=Aº&ëË­œÚ»|v]ß ˜¯*èÅå¼;ìw täÏ2hTú¦ŠÌÜ›…,ø~È©SˆŠ^X#‰†%#£0¤ï$�„À*¢ û�ÂàY”˜�}¿/yvæ»÷��挢Y{3 [ì¨XO;FËä´Z໺ª1³&\€Šk˜\–8¾V[�Pû»¢¸`®K4z»|ÞÁJ¨ËxØ0L—> Ýwf ²epj½À!™Öœíc"CMt”ð¨‚ÞûRÊ•ß7ºE{�Û/qÖÙÍ(ƿʞÅÙ…¤ÛI&ÆtNù Õ8ÿ¯˜õ¦[çä«dÆ®¿çdêÔ)ãøÙøÙ!ò3C¿auäjŒÃQ†ˆ£D(` ™ôp‚PÖ|Ò‚ùD4ß ˜Åè4¿´˜9O4FŠÀ‚›½+ÄQ4‰€ÁЩ“:v�‹Ÿ¨o�#>â»G¹ƒ€w½ùPKÒV1]ïu×J"[imunify-security/assets/ui-app/assets/static/shared-dependencies/portal.min.2a05df026609.jsUT ëÆ«jëÆ«jux è‡ÅYÝoÛ6ß_áè! VK l¨Y›¸X€6)²´/™¨ÒÙÖ*‰‚HyÉlýï;Ф¬*NÚb} äãñxßüóç�z¬bü(È­ó{�­Ê$(~YmÿNS–9 J–eŠ˜eD¸[§ä0ᢈCáÌ6A1Ê(§1 fˆ²È¶JæÓÛö6ðÞy\’6¸ÇÞ|™˜§±dÇÅ‹ìo\Ä�«Rä¥ü¸\½gQ™å’;�ù¯aIcßp³¢¢íc\9¿:ûø~~yS-(ÜCX ˜6,î6LÎ'Ù6"×r�R{"Ö1÷î¢?µÊ†WÝ*‚ú‡»M@Lp}°e–•Irä‹ãcb‘'Q¤‘âV+óך‡4ºh) úöuë·TߦwU â|`…‡fîL�±º�EÒü�eÄRz�ªcèny™cR¸´Š �³ }.! ›þ9c™â „ŠëXø¬·ñm É×ÀY²�Âçj=/˜Ü|Nà’EÀý¸VøÌl3šFóðqÍ{zc‚çI @jx@s&P´Q¼1„סaE¼Š3ÒM‘–tšœ¬LžPðÛ’»{Íq˜ÑRá&¹Z™ecß°8šœè=†³vÙ�VÆx,4[�y¬ç+m��yˆLA[Nø©ð²@Ö©.º©Ê¨s–šƒÖæ ¤#Þ¤cÌÏcž3‘ôR�¤lmDÔÅP­ƒaöuSZñWÂm«\œÛ.Eí%Êr§)áS¤t}®„X <>îˆ^?Et³¹–ªÂ¾O ÛþA£Qd¯ß(¤·uÈû´—âlþ€ŽÝ[Lý*RßæøNÀÐDI3 ŽÉ Ãœ8‘�lÏÒ´±È�°‡ õ™ã£Áa{Aµyuú¾ ¸Þ0ØÁš¸³]º ‹¨NlS?ɶ2¹µˆOi ¬>fnJL«6ÚÁÄ'Ïe‹bÆXe".šÞd¯'á¿2þaa)OœÕ:N°!™2Ÿ�—~ȶ«—™ßÝå…`vc­È_ĉXú"WUïvöc·äPˆ7°Dà@›Õƒ;[ÇID`$…nm�œ ÄE‹XëÀããö/Ä0X†!hÑ”¹Þ¨´k Þ,c¥¿Ý{g,"»Ýãk<(•©Ig=NÒîÎ$jà3Ó¾—Ò)‘8§OÝÇC‰AO[˜ÈVb�+æ C݇\fùúwðn§Ú�Ñ0²Î1ãÙlN¨+Óª‘Ω¶œÝíbïòã»wn'Ãu B- v¬=ù9ªÀ¶³WÙVfâÕ‰nCfEµ£�Ô–þ˜(sU‰DÐ8þš±:ñwÇó¸¹#jÄ–ðR™=Ê�óô3DDµê¢ 4¨0X€n�«§{¯cƒÒIżBkÉ=,˹ìË;Ã!c¥C˜ôÊ;[㜌B¡_Ù"¸¿ZæÎ^¼<ò%ì••�² HL3î&ÖºV4ª1¿mqÑ"ÝÊ�$hâ½÷ÃíÉ¢ ^Ló�êæß�m½?Ú÷þ¼!†ýÞoº¾ü¬ðÂq¨rõ¯òä—ß~]¡ßžQ Æ—AÞír—€fT#3#©âÁÕ›}"¸ôó§^~aO´è„ûüž$XâŽf@#[ñ�Ã4§¯i(Îs·އaôÅ`@ÇYÈK^¯q¹µ´ KLè›âô¶{ÌE¶†"çò´Xzä­b\TêŽ>Û‹Ï�ëËÆõùö€{õdfÊ¡¡3ãvér"z¶cVi½ 2�»Ä’ l·+Q/b ëS]XÚ\hnTéCZóopꇂmâgníLr»Í ˆóúü‡ý8[MËjÑÏ Cév²Æ8‡–&<é#¨¨?š�ƒƒŽÆ&5„�RÁ ‰ÿLHÀrš°ˆŒÄr×Oô)ˆI¶µ¦›¹?2©ÙWFFžGôLÆ÷ŒØØÈÑpD@@`0A'€®Áî½�¢;ãRa(Íô7âŽÝNá|©ºYÃìÓ_NìÙê*“µ†ÖN†�Ôç4Ø/ª¶DߪZ=玂Б´iT¿ ±â�4µ òõ×}²¥¼1mœ 6X OB¡¦ƒƒ„V» ê¯nGîhét îXÝ Ãλ­Èƒ“ K ŠºÝâïÇ0vnAñ<Ÿ€Í'ØÌ êLOabÌdÝž»ÏQû*C!7xËú¾|!~7—ï¾w—WçóS�†ï;ß³aYz–õ+¢)™çc´;‚oqé8ˆ3X¸Fq–—‚O·ª£·±G毻EEYýH�Ü&ÄSÇ|9•Àh!ßuRA– Iÿ?„¸Ôqù­q95”ô@bC|,dši0[Hj¦¯Â•iW.Ÿ�+÷ ´0åÒôîP{g-‘”EÖ˜ÿ,éÜU¶øaß´n6¯dÛ±EItè]=W*šaÕƒåprTmO5ªæ…¯y),¹`é û^°Û¨M]xÚæòjž¦Ï«Ë¯Pvʦ¶£<#³’¦ œýôPKÒV1]$•zía Ø!aimunify-security/assets/ui-app/assets/static/shared-dependencies/bottom-sheet.min.a7038420e2d6.jsUT ëÆ«jëÆ«jux 臥sêÆñÿ~ ªIßHí¡ç½ä�åcÜxjÏ3q_ëzœC:àŒÐ©Ò�!Xß½»'��@€=�¼àcowooïq·J$›Ù1sXÄæƒñ Çó€Æß{þô{ŸÓ@Œ R…F"–4¨@EÌÊßg˜íÎ’ÓVkµ èJÌå6T,X ;Õ“f3–!4äpa²M>e+Oø áñòYÿù^D,¦RĉñHÌÑ<ô�Ø”ÖÚ˜'¬‘Ș{Òh/hÜ`DNBBIBbâ‘ ÈŒødN"2"C2&OdAîÈ’¬H—LÉWrIÎÈ é“k2hÇLÎãp�0 ÊHœ‡òQÌ•vןž+ývE()YL„+ ‡­ ~-üyÀHXRRæA9�½[eŽ ¹ŠÃnoÁBÙ›q‚x@‹Y$BãzcçL2Eu'A5l¼‚�{Î^z¡G£Š{ëG¸ ,/Ãg �Å�–sâj(à Ä”…¾´ï¦<ºcÁ¨*etmÄóyœ“ÌÊàî<^°„ø»¦²«œ îÆsWVPœÅŒN#ÁC™�Ñ6Âp0Fu÷»¿]÷nÕ�'Øï�A“ X'tEîÔj\ª}&\©k_DZ˜G¤ «ÌM™Âú¿s¯È× ´;á�_=ìmw×íÜöÈ,'4�ûògñ?تŠúûwó¡²GÖ3�·ôr àÐ(%�²ô‘°%óæ’9¦µÖËÆ¹) ³Ö©¶��ž+M$=RŠÙÝ„1Ù)ÅÝz¸�ß¡Vœ'ÓPê1ÈÃÂ4‚û¤1á¾Ï vï̵RÓHÄ3ÇPKð0ö/³uròËH-‹ O8¸Ít�¼,�îÏ�ì¬@»2ºæïß­»Û¿¾½ê}Kß­gv§Ûí]õ¾v—ý›§îo_ï{éÆ/5ÈWÓ"k‘{½óç“ÔzÌ„SÔiZÊ ÷Þ·ËÁåÍß3îç½÷r´R«í4IÏ ¶”,ô“[+;ÄsZ¦”™T^²ÖÉòÚÖV`9á‰ýä•Â\Ä_ÙÈ�ä;EúTvsÕŌڽ,UønÈ^qŽ1,B 0ñb®.ãz¶& BÖ|ˆìkæóùŒDö¿„¿ßÔâѲ“ŒfÈLÓ´ÜŸ×O)Æã€uQÊçš™s5ô®¦§“es¦øijyIÁ›0ßÔ§Yúâoe HÛ¼”œïfµ¬åõ-g›BêSYù}¡BÉX¬˜ÿújv²=Æ´}µÎ ”˜xÂ’Ëw Cdÿ�§"îN˜7EöḞg\ÍÜóì ì {Øópcy�ZéB<‰pS T©ê¬µàº˜Á„ýÇÜ61�.„7O ~µ¾k3(„À¬r Ä\¿‰ "”uvB’§A~æ:­x‡Êœ7°˜•×ëe[Eøt]vF©ˆRÌ™ÜËhÿ3?9ýéÓˆzn¥¦«®¢AhÊ××gËôrÄìÓç1àË /ìö ,rwn«ë P—M¿:F1&Ÿ�¡»hrF||\„KŒ Š0.WÊáX|ŒÊƒ&äßà&Çð†v?ë(ß ŒQ©mègÉì rt·Cç�:¿àO"†Ðªqo¹[\ØRMÑÇA�\EÌy& ¸ ÝæÃ�e<>’‰HdGJD5 ?ã¡Ï–Ð!7[i‘ƒ´ŠôžåGµ<ZŽ“M¡ü¿õA~øP;Y…rÂàv¿ú>†P U§€íT #€YãíÌ® XH¥±Šx mžM°m8E·Â‡‚Føz"Óˆf\ ö”çÚøΣ0×4gÂÇh³‰ÐkjŒ€ÙÆ·=¢¢”Û§¹Ò÷Rª |„ŒÅ$¶«òº '0wÉstÕ„^dˆ�Äg^�8-²@»�ÕM(/�A) ús0ÁÐ;`(Œ°É:nS�iž�srÿḩ�9i}AÃB�£ÄŸò‘�DµÏèˆö~¿[7›jn2¡£e{(–øÍ/ÎI´l|†ÿ[¸h~‚�x<¤ h#ÿgŸZð‰?ÂÇéGü¨Áj}ÌÑë\Ôñj�Zíˆú Îçœg{ÆÃæ ÷åÄ�Þvñ’IÇÿ@œ¡ˆ}� mŸ' ®•3 „7mà À¥œ“öŒ.›ÆÇé|>YLÚ8�¸�KÑRoŠóEè;`Uó ~6¸ Ñ´ÕŸã„:PM2hsDg•ÔYyÞyèÙÛõcšBsSøue /ÞŽ ò¬ÇÆÎú½md§¶ï€*WÛw蟼íè¤u}+Ÿk‰³¾†Ø5ŸáC"¤}N|˜UýÇÚ fG¤ƒ) Ÿ"®ð)âº3x:ëýë§»_{½ÁÓygÐ1ަ“mç \ÃÒʹ¨LÒy›ŽúwÃydÃÄ&gÎ>c˜F2äh|Åê"aîŸ[°(ê%â¢(H=¤é‡7tÁÇʾÅæqÕÿ¹†~jUp(í ˶`ªµ;t¹Ð÷ºY�™lp¸ =«´…³1$†ùÃÓíâeŽ”"E…fõ ì§;�zÌL|Z̨¤Ï>”üü­à%ׂöT}¼+j4Ë*_‰Ø7�E|8ƒD†Ov3<Ú^ ¢i €ÁŒ'ê9þéozÎßqG˜ê7Þbálv©š¸Î˜ÅíjÍç&Lj#¿É=i$ú”™²ýw̬SZæ¸eN:tw¯ž½#í `LzVª‚ãêKÈà’zØYLV¶åZWùU¶²U{Z• " °P�Ðüî×óæ @”dÇÆí%¡fzzzzzzfý>Ýfy°¤Á<„iï¸ûO/ž¯"/ýÇÌ¿üÇ2òòó$]t®Åœu fJT:ÿ—©ÿΓ%¨3 Îóñ°àq|ú~Ÿ+�¹¨�±ªÎÑ.î†q +E™˜’×øI°.•2.o:ûôwþ•ÎÏ<6< ðàˆèü3B?F¢Ñ¥BF{ð¯ÕN©üßïéîj9‡å ÎÈåÖœ Ñ %µê�1é×0¨ûqzJ&$…yP}Rc%hùÖÖŒI*ÕR{AÃ$î›ÿ¯/¹Rä8‡A] öªF–½Žmý(ÔÿWô\¨p:èß}¶,f^4ëý7îàÿCk¤óKf‚”ô©k²mþ¹üÐëd³4âŽû�t< ¨ÎƲŸõ×_üP%“íá…_yÙxÐÍýÍxì�ìo'#e²f»G·ÛÌr`Õ[×Y”Ì.ïÛ`JL„+~l£¸W½WšÈ˜È^ö†yÐRÙQ>¥~Ðݳ8ÊšÙÑS“dž9ÜD¡ãÅ{J½„ÅáQÜâȦ%ŠÚß²«9·Ÿå.>\Òš½ayxA¿9*P\ƒâ×xM²˜GpcÙ"Iò ¤t˜—Û ì§<H^œÃ}%ô`î'¸êÜ[„ŽÌo— °Y^ܲó5G×'�À�ÕMU‚O{t8¶&í庺G=ማ¡s ÕÚ™@ÚWÎ}¶¶-m\.ùʶ©ìkvöÊ£ª‹�ÉÎ�+I±:p±o•'“…wãªG´=ä·xÕÇПil‰[½dy¯U¡ìÍÐ�j½€P©‰CKËí qûZKF€j6Ç~˜NÓ<:éTòv*) f‚¨±gE0ûÀ"ï,ˆ~± ´N5ªëË>p] ½"êÌGپѲöhkÛ+y–€/ø‚+À=î©9ÉIæ}T°a¶§RçˆÊ*¶Wî¾qY ½i›o�Ö«;=Œj�Øž;}hβwØà‹¡Uî¯ÔPÖò5]ÀÝ,÷Òœ8°âbDQ¸ÌÂlr}÷pì#Ñ&‡bÅíÕ½“›^YrËn´iÁpÜòf:Â÷Û_íWSÍýJÜD—Ütwܵ.æP; ø ÷×¥Ýá=¶ÓÍâ0C]�…¿™�öÅ«9Q€ñ’?®æLy|�ôÚÞݯÓ��§øƒE½Ö–p’é΃¡RSìOtUp’[x5—µ8‡t§)¥P÷I(YdýŠ‚ü‹c·±^w¶Iñð¹xìÓGýJiíôk�VqÏElMêZÝú†N5”Ò.ošLˆ‚z®nX¤2î´:Uº.ÈèéÏ´u Dë¿Ü|ÏÍxd˜¸÷Ù—'©MÿiSÃ7eÒó6›C͆œ-Ø-‘ÖWÃøxò½í”"NÑErŠ'`Ügº¥i¢ä�ëÈt~Ë$ͽ8ŸÔr�8]8æ¨3¨™ ‰Tœ¸/û”„“¾ˆÿÉ#RjŠ+¾¢èf9šcv(=Q%.ëXTÓνU¤.-�ˆÿÇ4 M1+‘<_ñj‹Ã¨Ù’sÑÒ¡Ší%:*Þ X1—@bò)ÆË�Ðúq.Ú5ö…:û³É“ ‰XáI‡D±™KÏ*Ø[:hU÷;¿ uÑïü YÃÍà7�R•z^±ÛÄ6íýסÔˆž_Á®ÞÀ¶ ›jØkŽ¿T¨ÚÔĤý¦ׯRÞ±qåY{­˜¶�n÷Õ÷h9Êp°~rn§eBŸ� x ?Ã/§Çk’-Ë\Hcþ/"/Ë‚l <ŠÎHò×{÷dãH,Σz|Êpn\JÚ›¦/!•­no¤דÈEí%ËÓä²q7,ó�ëHÊ–Ó)å°)üqiÁý¥¶,SàLÍYhQr슆*OÁp¶¢Y1v|éÉæÄùkšö½³Þ µ]ã¤Ùt…º@9¿ùE˜ Néåêcp>Í7›~¿?ÁÄ�?;Äð³Î_k0îÙø{ý5É«î�Ö)—øûûèH†oOæ=ˆqÛ!)èo²’c!‰ÈËËsovQ‹� ‘ˆ>Ÿš,K*TâþEòB ¡x:ƒ ‡T¬–>,RÎò¢{BϾ¡SŸïÏWºòkô"Ì� œ÷þ:[Á•»lÊ’ñ§-ˆçÿgÏiLÿ,®)o?˜z´ôœËŸ&=Ÿqã§Ê#Vf¯¼³é#G§.¹Ø/KÄé…ñœ‡óUÔ›á56ÊwÞ"KN�žH»–ŽÒæ…ÆÜöM˜åÐN�På�ä¼sÙ'Ý^xÙ¿’,?Èó4®AÖËl1öü1”Ëo,Á0{½|úÛ:x>šOX7›x~€;@à5(³Ç&™×ï`Aþ« ×ùaˆ8¼�_ÈáÝê[gp5¦¿Ãx®0ÑÍÜïŸp¬¹0q0¶î2E�è]'Q~׃ÿøwèU.Nà0¶Ó^½ ¿ÑLÅ`0ÈËe5È’E€•_ÁL`†`‚ KKë}`½UãCÕÂ*øü™/óÁÛåÐbF:úïj¸ótÿÜ›MyüELËÉ¿ÃøÊ‹Bÿ•‡ la£á€6b+¸~ÂþVWzëüvŒÿtÎt‡v‘þ5‰`¾DÍðíè!<Ù@‡d•¼†³ l3Â(áocƒÿæÞÙk ëžÐÍãE±yü¹–=WâÄ…ç¢:lF…ÖñÝyŠ™ Ì„µ¹LñÕú%¹o÷ =^¯øqq Œ‹7÷¤ƒ–°&‰c¤«øý*ÏB?8 à£^¯×g=šM Ö<ï vÂ8º³(œ]v�àþ�_ÝX¡Ì©è6  üÕ°ç/i{/îh{؆>6³¡¥>$®{ùçÏû=i Lz‚Ï‚ÚCεÚiƒÁºùVQƃwØøªèBçY_«üÙb©U~�R£Êÿè°- ´ÜΊü}Dª’Nõ Ꭱ©—OìuNý߈òÿ|ŽBñ<+¡_h›Xïü˜ÃGç^œsEAá>ŽWQ$k›r½®!ž r½ƒŸ%^q:�Ò!©ßÃ#ZÅùXôûC0 zò1äÌË€'lãý�ÆKp+ã5“qÌI.øÐ±ìRÉs êX7NpƒÉøÐÏPQãÖtU9H‰ÙxåÄó$¦ÿ©°�Çfš˜+4?{^lÈfFò…S}ƒfÄ_½è=œ•ëÃSR­æ.�L&èDH62ÒØV(¤ÆÞSV+u©½¡ÓÍ–˜äP¦(ôF†ÖŸPJPo‡±PÈ8»j-erÉÃÜpÏÙ1ɾÏ:Þé÷ž°ß»ý¾ƒ×ŒÑúù™¡S†Œ˜œâû=v1-+‹º�“å·2²¿  Ëé ïˆéÚp‘¤š­mYpó§é©Oö0£„_ñ ÔB®*Ó“Š´ª ª‚¿a;ñ"‹?^„¾¥¦¨=¯–­QP¤XêDÐGBjV9­7'–Sæ{k<¦áÛY [¼FØâRr`‡bP‘ÇKP;’`…¹I“ª”“eM8ÖZ}0ô™9š‰/…AÆ?À.3ƒtyU€!"š{ˆ’òÍâ�§óŠÍ ¾GèÔD°ß†µJ´'ÙÚ‡¤z 1*õN½5C<©Rñ.¥àIc'Âÿ“w@ˆh|TÛðT]r�˜ÖÌ÷(¸AùX*Ü×*Š¥ӎˬhBætvŸ —nʤַÅÕN§$Ãn¶ð¢ÈÁ›�"–”Ö®ä±óqÍR®¯Âµ<ÎZø1" c9Kh÷™*ºmŽBaÊãfuJ‘¿+ªOª©õvRÊ3lƒ‚ “‚—×ÒKñ3K‡Åä×¥OMºX“ÁÚ»­cЖáÕSSëVzldè÷bDB|U5s¸a¡×ˆÝÝÒ- jÈÉç)ÖâY¸üQ”W£ËÁd‰�;ôŸJ¬Ä¾9±Ñ¤ÑKÒ2*ëªû«³"•žîº(­C­ìµÎš4 ®þˆš.I¡ÃFËq;K7HP÷ºäXæÄrCZ×[_äêd\e,}Ù IÚ³- ‘dÉ6Z†ò"Ëh0íW=q%i²Ð-£[¢€˜°”¥ñ=bz~ /UkLÿ$ ê±عI |êÞ)4Þ:ÍíëìœÜkŸ\°ö‹¸¾+på®èß,a{$äëÞógñû2ï:n_îÂèøeæwöû£Fž«‰ª­WáZ=uµ6p£žkvV¨{›^ëF…7`¤‰6ÐÅ0²ðÑN> Z¡-�úð/¸Â¿IxŒßûÓ…%ËÔqwÔù¹Ó¨#]y§1ùšî˜/6†ó‰cô¦µñÑšX�.!Ó©"³|ë¶P5º ž]ºêAïÐX•Y>ÛåµS[dmØP•S]"vI«è-²6nú˜@ï{3¬f3ÔTGU�ò‡\d[[ý=˜ã‚¸óÒ˜PîšÈ5ª2‘j•rŸ0zÝö(!é+‚lµåþ/QZ·h#P_¶#VßbÕÆ6#6ÒmöÞ^ @Ï•Mß  †b›rï›M[Ëçâ-^P@8è�ÛÊ uDÂ8t’¨�`à•ÞWÿ&…j‡«og÷±ú6Unõ®/o¨ù¤^è¬ú­ Šfª›ˆá¾JrùÊó0¯‡ ÌKÀòƒe’qorÁ-q? EÞû›¦ôÑ?u¸aY\ùè®A^WçœUí0¿èµS‘¬QŸ«æþa&®�¼a6U�úãÔHæøUZŒðÆKWy'æ3ý›lúÑ�›4¥!5êÌâG¬ï0ô­¡4v]{]´šª§)wϺØj®üªÓ¨®Mõ¹´®çÂc¨3á�ßÕÐ`\ÕfQS/ͤ®2ž¦�›È¬71½çºÇp'Ðv1OwTeûw:Ź·ÒÔ½'Ý« »¥ ?9í¦4·²ýÀÔ‰ðßÕï83ñ»z°ö7ô�¸ ç|d¯«8,Т/-zø�£EE´¨§Šz6Œ¨g†‡zµ�¡¿> 2´‡àé8,ÄWþîŽÆÁ€×�ÈKCÏÕ±äɧ¿o¡ÿM¢L¦„q‰ã7 Oñ,ij álQ¨- µE¡¶(Ô…Ú¢PZj‹BmQ¨- µE¡¶(Ô…Ú¢P[j‹BmQ¨–Ö- µE¡Ö6ô…ªòlQ¨- u«%Ù¢P[êM‹BmQ¨- µE¡¶(Ô…j K¶(Ô…Ú¢P·I»¬-k‹BmQ¨- Õ¢ª…Ú¢P[j‹Bµ·kQ¨- µE¡ÖåÚ¢P[ª†¨E¡þ-4Õ¢PkÛ@‹BmQ¨- ÕŽB�7ERd–sÈ>…ürŠ*ŽN_‚ˆÐ›=þ­3±àÉ'}ÀÂOÒ2Ê5™È*‚�ÊxÕÚ8Ö»¢16•£} D:õÒÎ.´rЍdgç)â¢rR¡ 0g[Ãb�‡i µ ³ˆZIÌ{ä´B’™”Tô¹“_jP�Aáä,©ú<¦™´|kkÆ$Õw‚pm ŒüÂóbÍn+E‘n'ãwˆÍýªô^i"4E¹ì óÐ$.#ïö”úAÐ2:J ,=5ù@æ)‘ÃÝaÛ6O©—Pó‡rÓÒ½ÃjË®æÜ~Z”é ®&´foX^ÐoŽŠÝ�ÖxM²—<ÑX$ \‡Aé0/·ØOyþ�¼½‡ „  Ož†œ{‹0âÏ‘pSN€Íòâ–Ý@8º>÷¥² ¢ê ¯A°5áèh/×Õ�8:è)ÈÑ&‘¡s ÕÚ™@ÚWÎ}¶¶-m\.ùʶ©ìkvöÊ£* Üî ¹3ÅEÄR¼UžLÞ�«ÑÈÓjNõ1ôÇ^@!Ø·zµ¹Ê;{Zäš)OˆCKËí qûbìÃu%º�·SI¡�z£~ÄžÁìãÐîú�Ö顿@u}Ù®k¡WD�ù(»Rðö{ Þ^yœÀà÷TŽœä�ß�€ ©sDeÛ+wß 1uÝMÛ|{´^uØéaTëôÀ®ðÜéC—KÓ|ƒ/†V¹¿²„2ù�.àn†¢7Ä�Ó ŠÂef“ë ¸‡c‰69Û(n¯î MÂ,KnÙ�v#-î‚[ÞLGø~û«ýjª¹ _C‰K_”ÜtwÜõVo»|CX¼*ÛÞc{0ÝeÖ¥&ÈÂßÌGûâÕœ(ÀxÉ Ws&�<>�@zmïî×é¬|ˆS>FCѱÁ´AB þÙŸèª0„¯æ²ƒ-ð�bGxî­N§*”¬7!ð/ŽÝÆzÝÙF$Ä“P6•ÒÚéU 8ëYN\ŽäÂîÐ7tª¡4CÃÕ«×·r�¨/LÕ¤®tüSеþxË“ðH/D­·S Îf”“ª©MåQÕÔÖòìU«–imðËDºZí²” »úÄ KÀ«ÏÌHȉ.Y›Ì¬ê›�=êî“—|^Yùö�¦Q‹\M2à‘]#¡E¦úm3²Õh«�÷= _9Qˆb7ˆß'ª¡Ø Ðqë¬ÄJ5‚Týß  ˆ·4Hý)¶›-rïuÖ¤O37ß]óËßvJ‘«“À™´”ý]„Àu5$‘Š÷eŸ’pÒñ?yDJM1cÅWÝ,G£‡0‰¡BäCÅc½[Áp@ÕÇ«-£f˵é5ÃÅ^¢s¡â­€ÃîêE¸N³@t …:®õã\´kì uöçÇNÃäÏÕº\p¥žWì6±M{ÿu(µ¢ç§I¶±Û&lªa_3™ºN“ö›\KyÇÆ•sÔ4ç»a§ÛÄ}õ=ZŽ2ܬŸå¿òÎh²žsÀ¾¹ò–ËÜý¶nß¶ ·o- ·lO�³nŸ~ëI·÷—1{ï™°§m&l› Û<öªÑ.ðl�Û Þ²�ày±¶ý–ò¼ÝRžë¿1¦ÙHF»í·À¾O(Èý|b¬……´›áƒo†Ð–!.Ÿ³�ðˆÛ¿­ýë¨Ý¿Žôû—é6Ô~Ïòûøže{ój7›Çºy± çˆm8ïì18ÃvCÄz“x~�ÂÒŒÏÃ94YN=z+œù Æø>êÝ�5I±ƒõù’¯é>òîëßG¶Ú$ÞYâfܰÛÐÙ×:»Õ9ðkêÀ÷ˆ6sàÄysó]¸‚/éÂăóÎ|táO¸5ÿý÷šïÓ§z¿R«d߈xÕ'¥„Šezß AÌo† [�Þ†!J·q~ãSp ü¨Ð©3pAD´Çàua§–a<5G˜Tó"»‹�K�øÐŸ)ûƒõ»F%m‘Ê;Ø}¦Õ�˜KA>?«Éù׊Û×s̮掶"\ÌDŠž±ŠLi @¹c©/…©ÔTK›5h¦IÏ®xËNß©¯oÉ�"ï( Èa‹¼Þ•îœwøö‡4—ké½±èòAßâ£6h–©IMÓžUo£µÀ5{L$AõØÍ@�» êA“þ‘î3­ßèÂŒ™ûZ Ý[Z>ï,¶È²·Mãc§Ïó÷–‡IŽod´kÅùéEåƒ(Í3ŸeNËF‘Þnψ¼ s{>×^Zyák’–Ýô}¨¯AéǦŸŠ€é‹:ÓÆñÍOßx|ó“þ!˜%´Ù>û>žƒièís°ö9X�wq¶Áá68܇ÛàpnƒÃmp¸ ·Áá68܇ÛàpnƒÃmp¸ ?Hp˜eÓ~bÁá7ë¦áÞ7Ú`ê"ñµÁÔw󷉿ŠK}£ÍŸ ã?µ�I7I{kb‚Ùø8s–NvRŠÄóH]Ɇ>Òõ?ÿPKÒV1]ÒEª²�%·[imunify-security/assets/ui-app/assets/static/shared-dependencies/slider.min.3675ed49c537.jsUT ëÆ«jëÆ«jux è‡ä<ýwÛ6’ÿŠÌ×õ‘ ¤HJÒv©ª^Çvvý.‰}±“Ý^ÎÏ¡DÈFM‘Z²å*üßoðI€_’œÜO÷Ò&"0Ì fƒÁÇÅcFñ¼—â?R÷³ó· ¾YFAú|Þ=Ÿ��8È.›&8�’$.—/¢€Î’tn•')6¿çtB‚¨R¡w'iò�áôy†n2ß|n÷Ì1�tõGæ\!w¶Œ§¬™K½µ³Ìp'£)™Rgt¤ŒÊPŠ¢Eè%hŠæè-ÑÝ£ ºA3t‡NG)¦Ë4^g˜Á™ÿÙD‹Ç4GfÓ— ~�$âó4Yà”>¢L×¼_Î'8Uvû Î¥ìšjNã?0/¸LîpŒÂ1E´w”ÌIŒcþû„��1`4)ßrBrï —è•çåÇOžû9Ù"#üÙCvsŠWÔ}Y.•HOâÐõØ ÷©â€ŽmàPp…LÞÈ® Âû žâj úÚ¤‹Ô»´gKâê½<=~A�…Lï¹ šÂy°…SˆK‰ Üû�Ì™Š|‘8Ä+0ÿfî^”Ù›FA–½ n<ÓgN»YDBœ^_S2½ë΃ô®Û Ù~S=‰%DYJ}Œ0s@.ã?΄¯Îz×Ó š^‚wÐþRոđiѼÛFo´ÆIªŽÓ|Áh€ÐKèÔ`Р2×�­õfؤ8•~Ò»N|ó&IÏf8".L&‹ÌÀÉî†ó úk£†è‚  ãîT*TdfZÏ7[ΰM§‚ûi0½Åá?IHoMþ�¶´ ˜´¥VvïI¶ ¢.½…©�{‹'R_’l 33f„ªß¨3ëá<ÉåaÉŠª€µÉØø|jö à~gúiã‡Nà:×0#\pnÀœ>VK/9o:¬V}`“²ª?¯ÖâÒ‘#ê:ºFÌçâa�{#þ£s&D—.§@6 ÌxkzK˜ ‡)‹ øïøæ¿!4cù)FcœÉO’ý#¹Ç)Ç{]$|¡YbK ˆ%0¹I|žærß²1ÿÆ4Ãì�G Ñ›d aX艈j$ M8ìm’Ñ¡<½L_'Kè1¾9Š”|€ÙÏõÀ�šxÊ£eš�µÆÆpí•9$ˆÈÆ·É/ó»ëù’À ‹E¢/×ü¾K€�·8v]øm”æö(¹hLl›š¢‚ÞV1ƒªÒä:ó‚ú^†®=Y0�u»310ŽAÐëh™ÚÜ Åøúµ�¾YA…AŸÊþ~ƒô[ Nñ`·¥ù8 n¸ßåZÈçÎÞdIiƒ—.ëwß� (S•0‚¿­DË(:s¬j­a[�æUA�I/XWò;�og”ùüp°IsʱôÒ $ e×U‚J†È‹)–S­áæ$×ph:Rž¾¦éÈôT½tÃ2 ƒúC±ªs]!{¦»|íÀôà é: áv˜†8u¾(mn&±SÕœÖ6Ë…SÖŒVøˆ¹§ÆmÔ·âîØ.¡rÆéX¦êå ¶ñÍY|Œa^HÝbv­•¹´¬'H´­a‹PÛš5ȵ­I«hk6I·¸NÀU×¥=ÂÔÀ\Õæ¯¿~­-W£dë5fü/S¾J÷û°ä#´øÌ ‡iâ9èáoAXá=»¼UWøÇ“LYH+S%Ÿ¤™²Ëwg íõ_6ªmùâ­Ê|Ùn½•±²ËÖœ•*6²6¾²™{Ù/Ƭ„l[æD3“» ÞZU±bdá-…¹z`|å&Õ*‚ß³ü~('¡g„pÐÆ]{`å®°1‡ˆxŒQ™G†þÀ«ÇŸW»¾‰’I âE:*;Ðä~ýŠeLÙ±æ»(€%Ë­»Ö DßF'ÉâP'6)©OÑ”ƒàЇð"w¾rX8XS¸áAo„f4·ˆäÈÆ�:à�q­XÍø ,¨R ¿€Ø�C®ï«ðC5ø®/—öT.V¡êN±æ¡·]¢�@øVÛc+ê–¨°ŠÝÊÚÒ’]•ãùTŸT+ãmȽ”‚5†ñ?ãdRnβxeк‘´[m9 íäÜwq˜9ó1d*ÆM,ÖgÁtlå¶½°üuéׯg^)qªT°HKC­™ÍNRIojòž‡‘›á¤d·Àù‰%¿ªÌMç‹RÞ"Ä3f��w×ôq�ý3”�“gôgþçÏ�9‘«+tQû-qúX$wÛòLÜMЫ2E媭ò*e.&Â+–²-ÿf@ ¢g·n9M%A(°x‡•×e)’f´ÜëŽÈ˜|'T ö¨±ç9b~æ�R6FTõ+*OÉöà!ÂâêÌ_«L”oæ§Lgâ—3TÕì”_—±ÊÑ `>(´ù=O“{FRöF¸Ÿ× QäŸ#ˆŠOVà2Ázý³üÊ»B!žF™ÿúf‡ˆO \3¹{ulæ9!…;5Ó“/‘È^¡Z‰uå^„Ü”@ÿ=W›*¬€¥<•TEøVømôÀr;'¬é«™@Ö]Ó&ˆ ¦Õ�± %3\•É-Ùm�Ñê¤o]¢WL<=Ü”êuÀ ùn ÿx!l¶‚¼œÁÅEbÕ'�_4'�«Òg1º—ƒ-pâxJ˜.Þ€Ç=�¡i±_v…øîÔ9½£éðJá2Ö·˜ÜÜRÐïÿeôÀÒÍüg^jMêö9²õKÐðÙ#}ŽñÜî¶­ÊÕî úV4jf½P. ˜dI´¤xáõ‡‹UʆͽYf˜öN®Ï#L35l&�Ñ™ _�çîµ+ÒÅVŽXETXO|cšÃÂÄY¤§�ŽÊ-w@­a„³Îë5D(d—Užg&�îG•Œ ”UãT‘]zl[Ü.@èÊý¶Æ`#„&P�5Vç’h®ø5DórE´2‰æ%œh°/!¬ú}<Í\Ñ ‹Õ†YV 0ÍJÞ¥ ®ûµŠyçùœÄe”Pı*½ƒ‚Ç€ i•ü†Ÿ{ã1V™WÁÈ;hˆ!œ-¾ 4º]�Ao%ÈåÈA /t×IúAhçÓ\%Ô5ÌûD‚i¡&1¿ VgéÅ ç¹&U ~ݬ9¤ª9 MXlø¢tLįéq6z@¸DölèÌzåŠB Y¡¬ebbŸµ’<¾!v*ÍZ,šê+8ú_i„s øæ»ªl ø—àúõãXóÉlÆbMŒˆÞH3 ÊØð òÔ '1×T)Q€I†´ÁSìÆH5K~)VõDQ0²¥…8¸oúxúú‘wçÚuÉöÝ?ž2Éf6ra0de{VÂØhÖÚC°Òö¬jìö`£Ñí íö¬6ÛC°ÚÙÚïb\­ÇJõ-�WF"5^Œ¨l׬æ�†ÁÑý¶ƒþ3­ÞNÿ™¥|wý·Fæ)úÏÕãÿNÿ3Ð�Êebja•µ&Àj” °ßU#`JgXÁ…DU4iÕz.¤fk:+×ÝNÓ T¥ý SÓ+c2àÚ/õÔÔy56Tø&5©!9VʨùyÆ¥f Ê%â§:�Ø»8|søá”m,Š>tÿ²Ï±6#Zšt * C³ÌРKC4ÚXcoúkºíÔC·4=¶¸á:KÛt–nežy­ª4=3=Ó4õð>q° ùU¬ofQ±Ïa°#¥Þ:[ÂB œ‹}C™;£¡e„¤8‘Q“æN¼zãY‡«ºÄ$u1Ó¿~1!Žaueø†±t °ÇzË6пü°¦ùdfÔ?ØÈ ghÆŽÜ:ƒUDK­ò%æQ“42öÕƒLíd“ "š¬Óâ�ÚôŽ«¾fšé¤~Ñ Å`¸$sœŽãe•4d»©+–±�œþ¢ºcÊ‘�Ýã4 R{aì¼·¾�ñxƒ,´æb9�A#|lõÒ%í‰å^/µ,¶½•Ö«Ö®çy–°œ”FŽJ[sL\aOh‹ Ùkq¼Úž ŽA@qƨ׻ [zàQiP÷èþþÞ.¾òŬ`¤@o„-" ?T¨,�#¥S J ¬÷ó dG…ÆÕfÝòˆšÍÎf3˜8ÇM ÖLG@ˆOelPD)¢¸ÏÙs|¹Xê.ÔÔW¨vzΜÀ8Ýã$¬Û™ëš±æU¢Öì,7¡ìÀgÆgá¶/q ²ë ±ßì9óŠ´š ÀV6(3Ö�,*7¦@]B‹Hƒ¥ç/xÞÉ„,•oXÐ?�Ûæx¯t£Åô–qaùžå±ÎÄØ§|·,&'áê@¸_Ëmw±ÞÂYÔ*¼�Ŏ팊JpWÕï¼Ñn‘Lî×`¦§Ù[<“‚˼RF{T‡-c*Ï2ës¼ 8Ü ·³v=!?°»NÕË]e ‚ª7Y;ËXl_…ÎÞ˜í[%³ÎK¹ö÷Ëßf`Ó|n«VOñC »­NØ›ÕÆì½¿?�p�²ß‰: fÖ Å;Uk0=) ‰¤H�ÚÛ¯ül•A•½+v�½ê)IcR+*‹½d—އ� MêÉ«G| Ãha‚,x�Ý‘ÅG>š =uh°žƒž€<°0%W4¥¢cr3PG‹‹áãv™õ>¹rPd6f»©mÃñßË—çÌð/‹KÒü*ëuã^G ;ßž€ÕzÄ)áÿ€½¥l>ù¿ÊG°Hé Jxþ°Tb˜µyÃ% ½þ¥p?.„Ø?ºMíóRM´Æ7ô¶;}\¬¾ä5+µbÙ^�Æô!XË3l´ÈØwcR4ôêH¨,[ ÚÝòNíuض,7‡8�‘YM„Å ¨Ëbl-ù]@FÛMz“€çÇÓ;Iƒvßú´Vµk£²jÖöÌÿ„‰y×±{ú¤ºM¸íÄ›ã(Ã-IX¹4·ß<�åx=¿RÑMfYs˜4¨�¡š+Øðõëöö÷Í8§kG¿ûyƒU±-À÷Á¼äQ{æ!*TY±ÑÒ ñQ©—êŸp®‹& ‡gšë[Òäæ&jnY·Š÷šdÀÝÂÚ² =mš³®Š€,¬{*º®SíJ …šÂVïk�“æÄ ¿8¿iPlŸ3,b~Q¢îp¦)l>mS^i3ô æ&ïKÞìrÛ‰³¦q#%¥Rw"Øàí¨<îÃÎfŒ!^*ñ€ù)2YB�N�’ «¡–ÖT�ŠSëA�dZ3_2B«O|ᦌGÅ~°œé}qШòMç+³Û$¥‚-Çó›·Øš…!oÈl÷…œ�jª›Œñ�":­xØâ4³•U‘x³ªQ#o¬o)ÁïßúŇ?–\ž¡ŸE KöòHøIÕçC~à`õŒðã�ð/{©gÊóVÿêfì‘ùõ{7U=®;‹äÁ ÐÐ{¦¿BøúUøÚùZÅñækÛÞ‘xÂõ‹í¯U`õô{XˆÐGô˦ËÍ ù¦ÛÇM·5Ø9oy¼˜].`gŸÍÓÞˆ4ÞÓ0Z�ÛC«÷1J‡èåw¼”AÄíîïr‘Bxˆ1¿1ñäÛ*Ú.¤œ× )Fø;I@x·qÝ�ËËX÷(œ+û‰Ý¸ôùïׄg·³’ð†Õ÷T¸?OõN¬›ŠwAp‘¼³ëC}j¿8H]‘7TŒ‹6Hq¼�Yá@^3žµ'í2?ÍúáTÙNÛËõ ™){ªËwø? Í—ºø¥™âS׆º"äe•6a¾c}:hÎâJø ~+ø@Ê#6‡ýÍ1ªGª>œáÕ–‡ì.Ã\¿þrõ”«8Ÿ¬«8ÇùUYOã[p+ô˜¹%>YJW(¾‘Ϫ]h×t!¯ñüU\ãyU\ã)ßÅaPwG‡•D5BlWÍb~åÆ|NK^ú©»Xd*–q“ˆßpQ£Z¾)Uû�Ï·4®aª ‹3#•¨|sÈîTñg¼¤ÅÞ0ׯIívOÔF¾ô áÖÜÒ‘µÕ‡µ¬ç§6Þ/Ro¹5=»%Ш‹G•7£õ|× Ôúä[Ó X?¡hªˆ­LÛ ø‚-�NýÔDü/­/UÕ_µR¨*H«w°l¯Ùp«õ92�G;úÝQ4xú’‰ ÞÊÂõéÌú»`\Ù‘¼vVÜûãzÔzÊck_>å1’·¿^þ²X�ÀøX ß¾„/}e*Å�òG4YNo¹×�ÒEwó^ãå,æ‹j®]Ñdá¿êÿeTdtšæw· 5ž} ­ ½qM¬L_“3Œ?‹ðjd^|«º3kvÝ–¤þ- a\¶lÆÝ÷z’¤Ì@:]>j>PAÂÑ$Yu3ò'›¶$”ŒêoìÕ X÷Oîíjaw‘êa™žQmiþ™‰MitÕÙ�þ�#`ÀêÖ�äñ4U•>^¼Q¬z°yÞ«Ï5®¿u+ߟ`è³îÆ`ý``Ž ïu$Iàþ`±êðqí¤7“Àí#þÇ“Õ]q¶Ò'"© •Ž3’ÆÚÅ졜Ì�aÕ”ÿmŽCt˜CÁq'ˆÃŽ tOqØåá]æwCÞzgÖ%="Z< âû cN'obãU`ÀEi2÷_2�Â¥A“ÛÕ¿©]—Ÿ épPÃ}�½ŠÔæ–Ø9°g8¡-Ûé¨cìÀq·åm-�5ÕI_#ì€Ö̳ûºœ�iw‚ÿ$8uû½—¨ÓG�üç�`µ~w ̼™/žC))s�“{1d]Õ?`Ÿ÷<Ïëö½ªÉ‰áÛšµ² ñÿiƒÚs71sÒ #©TÝWÀ…a&’×þ6ŠÀs0›$$Ñ×¹&>¶¯jòÿ-ïj{ÛFŽð÷þ Z9 bLÊ”b'®\Õ¸Ög @r(z—ó}9ôèˆrÔH¢@ѱk�þ{÷}gßÈ]JB�k6¹œ}›��™%Ÿ§!r †3‰ˆùl¨\‚VX÷Q[{œƒ{±Î?hMÖOȶÁ�FR-Á…L ZF-ñ)hVSr‰­H‘oŠãpäÆf@¦QyȪ›YYÂf2l�RŒ$Eõp˜£‚ˆXX˜ bnÐ$Ïëÿ «~>)VÙ‘45çÄÔ(¹jaÙæ+lÈÒûEùé‹Cc‡ Òç|‘U/Qȹ(X«©Û%#zæbI£‡Gòj‰n0=$î ˆÆòuú=°À±-UÙü[À]ÀGþ@Ϋ™êADLä, z7‰äíús±,R†Ž’D¯Þ޲¬(báwHœOOZ̹×óLzG¹Þf�Žà«Ùl¦‚ï ó�c.¢evÊUºy¬fÈŠ¢ ʲ¬u²;ËíÜáUº¯~ìYÙ”Æò$�=”Y¸ñ7>í$CÐZr…~èÊU+M![¾QȲò˜ÝÆn{vîÓFXåãú…]HïS0\lCÆ|UÖ}›ÜxL„‰¾ÈM:�r<ÖwËÍ•³“Ptr8òšw‹˜~�I�†Ø—Áûb^íWO‚éUùöùP›½¶5f«çCzÈJ�ÉgÇ’cÈô¹Î ÏÇD…¶Lì>Mlßš³Éí¶‰ *¡RƒÑy÷a h¨7¿[v憷@úy4�$d°ÆgWfaÝ픃‹ö(ÐÎð:À’zÛI™—oZ ï¥PÂÖ~6,�.µpŠ÷è¾XŒ>ÓìZ‡ï~sú®½—‹ü¾X˜]zõ–ü“ U¬/àãÒn ëocôü“ÿúôØz8.kÛ6C‹%Ñùú9dçwŠ· »Æ@~åzŒ?¯î÷CÚ¥‘qtuw`°:ÐŒ†�aNÀáç¤#ä­G›t ×þp9‰FxNÃåó¬—Å‘P6xs´èÈŠÂ/¢â4ήâlXû$€Š’Ø*{7<]^¼Ëøj†ú@šï!…ö2\¾»¨Ä³³|9_Xl­ñ4.�Dÿ,ï˺L¢ $ÒMQÍgLΓc 9OL�.�­¿"éA×\�‚ÒI4¼¡ý±ê _ó‚Ú|Î×h¼þ„þ/©–z´•T“‘¿pU² L8x ÉU’ÜEË ÃkÈ5)¬,ŸZ¸íT…X/QÄTF�åa3},ëþƨe ìŠû€Y}ÆÏMË'çà‹â+e\ŽÐ `»…Od¢ÿÇ’Ú‘8A�i¡!ûÉ,e†ç ÐW¡Q@âiŸì9I&:‡ÞIè^ÝÝ3ÅÞ,ø¹÷Ð �“_õ�ÚªA4Sw` ê&tßï}NÓ"û(g8Áu)U�³¢cñ© K…c©UtŒ¥»g޵”χŒv/ ¤¨*ÜN°Ãm§ã0YõŒ‚Ä0ÏgØê$Ò·ìï±è§üì„6i:ó ¹˜®ÊTçxCÁK:¿Böiôugr²O�û3ÅkÑ�¦76ä±H¶Ü˜±`Ów¿ à×ÌKk;Õ˜µáý–àçþÏ¿=£ö„Vvz_ù¤÷Õ2_x�+|Mé Ó2ª‡’–¢)Ô¡ÍÊŠ%ø{ʾ|r:gj�ì!fÉ̬óŠàb¶Vh8õŒðɯføÈÞõC†XË4ºTØW=[+óiùÀñ-mgã°‡<Û—5^ÂÃÞ·µNþ[ã‚Óî,®¿Pß[´¸-âä‹â»?v ßê%7ÁüýD|æûEùÌwAamïâ8Y>.ê9æ‰M~n)ýK3N®;ÂÄõ•‚œpÀ‡�àø”ø^!�ð�ÐÒ*!H<¨ËêŠâ8 à‹0¼�P#_ùq„eëªG04Ò�p�Ñ0;ѽPDíY þ%`ç Ÿ„%|Ì`'|]ÎWQùî—ùó5æ“ØÐœPàU�û*:¸'¡ý 5Þ²LǦx2q ý/Ê4©Álš€qm S˜µ„® (•ÿ’µÒü9†tLÖ�•ª¤7¶Z ¿�Â�c/X±I|7·T.yçì-=vz”¦¸£¹˜WOm˜²š…rõ×Åc%FCÙ'N†±ið(E)âx*#%TÌx° Šå¼;¬‚¤\EÈÕFd‹ w G¤2ŠÈ›Ã+¿]]”ŠN 탯…oåí„›÷ýÛà]¹ «ýû–LÚ§ßA$`w´˜â�ˆ5KÜÚ©F‘aYŸh~YƒûǺÆß¯ ´jˆo¨CXJ—ÄŽ;¨–’¨Œ† �v;˜4³ˆæ¨«�Ø9NzB—¼Ú“P`§{‚gN[ µÕ‘ZêÐJ6Sd_AcèTO>s2Ò%‰|ªLeÅP …Ë.÷²R·›ò9±Ä·LhzGñ3ÀÜB¹Ù0D¡³ˆõ,«,Á8šŒñú5vÿk6fô2È!À_ËÁ+Ö™ƒTÚfŒÀ,àT-¾t²™HûæùÓæÆ�U!Xjc|p¶ÁH«Vo=-Îæcô“L©LŠE›¿®â³êµ‡èSc]AASTõë Æ¸^ñÞQãh Nl¯“¾1LÜnŠÆXm 0Evvá•j¸öçÎàkhÿw=Þ©n&Vôöí̱—ª­€¢?®-ûR_½ Ö!w)»š cÑ78¡|à&s=ÌÆø“}ZäË5€Šý @“‘žp¨îÄ€8rXö˜�.Õþ�®>™|ˆ_;kkEÝ%ͶhÓ%ÚÔjßv¶ýÇš<ÂÔìƒúɯYôÍVë0`¡$@ï.äLxò+ycz�¶É’LÚŒ·¶“!»7¶¤[‚q(b÷„/«G@/z;ûªæÛ—™¥HoN‡êT&FUš�(ºÔ©©Œ½îÂF¬¢N– o}rR_“eZNÙ Å ~ªæŒîW",Š™.ùí7Ìòˆ£LA&ÃB§xW8|FޣΌ% ;`ò¶åb2 „Å4PŠÌëÔ8ßyÃ<'LÚ$k“Žôn¦ÄAP§Ø�Ý= ¯`z#ÿúîpø×þ`Ö°²²Uc`:Põ œUß©@ÕÄhô‰Rû#ůìaÜQTÜÃ£Ë >Xƒ?¥R ZqXñÐ+^ˆì =?ë%}ñŒ˜¨bÂ_äªôyë]eYôJŠb­p—¤±:)HôË]’è;Žï©aj6�‚!kLwoŠŸÙÛ%hË×igÙÝ¿±‘aĸ'~¥W‘Ï@¯¡_ ÄtzC�ˆß'âØñ£rìx·û%þE?Ýdês³È—u·XMÙQ¤ ƒÑözYæôoÍ‘—lÌ¡n’úPè0’A9}Ÿ|˜#÷Ë R8iù—éc®!áÌ8#óg?�Q»À?Eg¨ÝÒ&úþ!èI ®XîÄRÐ~HA™èkBM_€„ØD2]s±Ó c/[®¡€ü‰^ |…Ž×ÈM½Å,cmY¸æÁ‘L+Û›þBÓv<åEz¬ˆ²ÓKN;Õ…W :{ ;c%*³ßO =»ÖÉ -&-G‘�Èì’¾Òd’™þݘ`áEšèżÞ"ì¡E+z®6Þˆ�ôrøb¢õÁ•ë°ôIÏ·õJ°žyvlÛK½ìºGþT 8…¨ &\R;gQïX?©ŽÜÀ — n0�5ˆ{Åzîó(YrŒtK­älÇü| ùÐCöL{\Ô û£x¼S#-Ȥ¯kуÓT¿ Ã2Lç´û§îçÒ:ÖSTóÕŸõöóQ„r>‡êãa|Zó·z\‘ç7Û¢1@ r]q©[gH®ÜÊóhÍ0ÎÍ CÆ;©ò›ñ³H œrÆÈd²]�KoѨÎý†Za�òx © M6çùÛ„—KÏ|B½¼Â$NÕu>9¿ãük…–a>Éø«hÓIñº:ÍÛµ`ê¥0…Üþ®TsŽÀ)�RmS8ëY ”ÅxâšEÑ ÅrW9„-±¥�$ЇAà�ö^bú”²á·˜I“±XÙ®kë>=vñ$[`À{©ÖËðXüåP±øOÇÖ÷ŠÅ_ZbqÚÉ€<±î4�Øm!ñuÃ㾟eÜ÷­÷½pÐèá!hKòÂcÄÛm¨~ÜZ‡}YN­ÃþýÇrú¸à£~»³)ä|õoëÃtîQX´�/ñØ¢‘['³ä«Ñ5ZG/ÁmÃç(ø/PKÒV1]ã×Ã�Ñ‘<bimunify-security/assets/ui-app/assets/static/shared-dependencies/button-toggle.min.8dfec20549f5.jsUT ëÆ«jëÆ«jux è‡Õ[ësÛ¸ÿÞ¿Bæ´ò©’_[jt>Çq2™Iâ4vò¡®G‘�„3E²$h['éïâÅ—@½ât¦“Ä&�Åbw±¯É\ÏSFf�„L(\$ö­õ+'Y€“¿zþý_q¯7·PuÌ‹HâÑ(\â1˜I+SQBÊ÷ã(™Uf6¦8�”wÈg¡`c3gae)i¥,¡³ú8i„Q„B Q”"MP†ü~BX–„‹”0à–º·e&dÀV¨<€¬#Ô ¯£( 8üœD1IؼJÙ5QJ}Œ|TçC˜þ.ço¢{bÁhøˆÿ £n/HÈ.g” †è€!ÖyC¾è�ÀõUÌWãi^pq… ]Lià'À•OÅŸ¹Ê˜¼¸ˆfq\£äñ2ôpœ‚A97>?û’7„Ié®YfžÌaæœ�9G#j¥Ø®?M@Å, USÐàÓ»á·ó_/‡ç—××W_ª$�Ìè ßÐ�ò…Æq@ÐTÍ`ê#f ìLXØ#_ŽI*µå"Oęܜ1ðOb­ÑàÖi8ÜšÂÍOð;0Ûúx~3|ýõææêÓðæêÝ»—Ã7—oÏ¿~¸^}¾yõéÚB!yl…»P:š™y¾ûrõõsÁ ³×B˜›h2 È»$Êb¾øaÃâšñ,´ˆ“è�úÄM¸÷å„ 'n`Û¶3øeÎeÉFÝ£îÊ鄵†ƒnß pš¶ÆÒ*Iæ±(±"΂MiÚI£ ¼™;¿{ÀAFdµbkK¿°ÐØQç‹ ìâ“Ë(j &C>¶Jõ$S;‰a½Ñp†“{É>}%SâÝÛΊs|€x¢ê\õ¸àœåÜõÈØdÄ•ÉÝ� $]Z‰Ë3Ó`GÞß½½ë—eÖç;¿Å±m³Á/LÚÌq\vÛ½;ã?äˆûQ¿Õ•Ò IrQa(ϯçßÔd餭;bß.F¥VZ¶¤˜Pc¹ ³ Ûé™úièq¡_N”«¨GÄil=r_Æ¿_ßD�‹Mr¢|=²}³ï½R®‹’Ü7sW:ꡚ:ùH¾w>{°$ Äqž{IS¾?ßàm8àñ¹X)JR™7…Å•aTµ¶L[m&¯=á¹¢m½¾x±æ#ž^9ì­�à8&8Á!89>&¥û³ò�k¥ ‡>”kN®Â÷!ø]á¬eÜ#»â4Hz::ê9°ü| åJÕ¡ Œ”+Ú�NGN�J¹&íŒiÀ» a?Eâ;޳zL(#ß*á$s–>»ê‘v¸;”ü@·+W¡4_áKO�•ª£+V§É¸ŸªZæ_3¨›9Uî.l5äa-Y‹ /*¡ˆdyvc»œŒ�¾Ü%Á�ßdr–ã;8�­H�²{Ȥ¹d˜ÎC¯œày` Ìý9‚Jn}ÆËå‘,*�,—ù±,—veJ�s&ȘšÈ¦äæp�Ó>)@Â.ŠÎ ûšÑ”@šFÁä(ð%Êj(yd±Ç (¯AØqôÆÙÕ�¦×:ɲZFªÊt|l”´²ž³û ]›4J‰¡Œš£Á zÀÇÇÕè:>>O<¦â·]¥vΪ÷PÏ¡äÚdð ÏàGUž øƒA©V©¨©oÎÝÂXœ5/ÔáV‰ÚuÑÙ™]“^»„Ýs’odÃ0o/±7•A_²«–�Ÿ›Ý´ÚH¿Z#4ç"A•s©e¢²Teß¶*ï—G±9¡…~é\H~.ÅI8NŸŸ>)6éãG á"\ÊÑž¹žkvh3ÌEtaPë¬fža5ß‚€PY –ʵÿκ';coPF* õÙl¹œ;6U„ò§¯!�90{QIñ€–´yIŒþ’DÂAm)�ƒ"9̲lwޤÉ#o›J´uw‡¶Z¡i”2Žå@ jÙR~ÔCͺ‰eß0¬:—¯Á¡|Tut'\½Úb m `oëbh!’Æú ŒÁѵmI7hœ�¾vL„²u*:�vÞè ¢ç�Ø+wCà*ˆrÔœº‹r�T\¨ƒV͵øO i\«K"Kü²�·®¥¯,¤õv­Ü+ �û–ÂSqÑðËSƒò7¬!Oq”°s~˜3ƼCc‚!ÂÀo«&þ,Ád’¾•öíC�0g„9_Ý9w+Ç„ å.h°P¤¿û�g‹Ã[¬4R¼i‘'pp?mÝ Ì(Ïè}Ñîÿög•Ô_©üMà‚Âä5d0ª pf.7¹2}T”vÈ‹\©kfB ]»”¡ÒO‰î>[!G©=ÐU„ƒš>ÉûE¡k¬¾¨Npm[U â¬7~@ˆ*\c7 Y§ÖPïß YÜOÄ}p_ÛéÇ|Î"ÍbRTõ5U´å†p63H¿|«¡qäeéÇà À¨j›ññ\ö�H¢Œæ^Ø›Àaš©8¡ƒOÙl†ªÅgxô>ôÉÓ€.—]ÈIôŒºÏ5#é¬ä­Ð�eŒlÇx•Gk{ôUTÔïåÒ�c0åŽÙ©õºÜÙÏ”tKã²õ€Xwr¶››æ€“?�¬ Íò vfò·]?otÔu„5Þp¡h¾£AªÌSÅêRåÚ7�Aç :‚×𿠛بp|)Ï¥äÝ 1oQô�&] •,/*ú6­Ò‘„p\4 ת§±�î´]ûlkÚa�iÇþŽ¼Ã•n`\Ú¼±\Ç´ ;ç<ÖYÕzR㣟õ̶Bf“Ò~2<â\·aSö­‚˜ãWêÉšaýæÚr||ÔÀ¿x·g§}³­ÓžAÛ¼¥³> §�ËRll¦%�·¥H«SSAt^4—�A)Ï ÖÁ€À›ÅF@�¿4Q€àf àPàR’èÅk²äÔöèùÛeqþЉ&iˆ�'P‰Af,PF½“M0À aÀ …Pð,‘ª¬ÒûºÜ5‰JcÎÊ6Ø %^¡‡ rÊC¢$çãT@ êÃ¥ìÙÅø>ˆCÏ|ÀBGd= �èC%5¾·.X&2#2Žcüò ¶rÈ[ å� øBÙªV>_ív*”ÊØV•ÖP€7Üö¸T�Fºéq-}â4€.eCŽ}”]7ƒ¨= Ò”ô>œ–gox Ü[ZºCáD=æ¾ÎsÁùÄ R÷gPnÿ�Dí9‚ç °‘z#i†ÚzRL‰Hhóðò00·ÐK$ŒYèŠ,�—x>Ó‰,~gd.Žª­ž54RÉ]#€²ž Î3ýÊ•37Ë�¨ù—¨ ¾IèdB«4¤�óìÈÈ,pù½m%9ÖÂP©z[ç`×#W5[× 'Ìî6î¢^�´HBÒtæ$To¡x6Ú°å aŒaÓ:Y!·ý²�ÅeýL“Jö+Íú¥cŸêëWŽ*º³«®MȘ$„CÚžÓ_“G|® S¢Fâ�nLYHv+uÙ°¡â–�µ{.ÉÑŒÎʼ¸¤õ\(3Ø»Ök9ÕìN ¨eJò¤†ÄÖäõÀ?5œŽ²Æº×2Ç68n¡¦œX.K)ªªObZ‡øw;)>W¸C)›|Ðêlª.È0+b-Úm>� öæ5‚)¡“)s_þ?õ7�¥S ­ËÉf"ÿ¼3âcN’vc�²¹ÛëÇQ*2 ›�@`�>èQˆ›`Ÿf© ù×Þf gµñ,@Tfߊ¶à§'„ |ÝQû�;§ñ¤6/[Œ¢'¾»ªwã§ÖKø×ƒm8—–R´¥þv Ÿ´8щú×5Ðô^)"Îå´‰ètõü{aZQœ²6Mqk‹Gî³Nú*”`înÔç‚m6´aÒÐê4ÜD¬ÂEß#áU dSî¤ÆXèvº¯6¯mŽ#~�κI`íâ…Y[[úT<â•�´Åßw;†£bVåH A¼CxWïÚÛÍ�~§]¿k²µ~A°¨åH8�lnZa¢ÒÐ-t*‘wo`µ0$áõ„.î–äÉÈ“JÍN Û·ÇxFƒùNË8½É…ùïÉ|q'ÑC|“Ö•u¡ƒjËÖ�ÑhEîJÁ°­ôa²ÐGÐÆP“B—E±é TS³ØÉ€úS %QÙž#ìÝsï ýö!¬êË�!¯;–Ý„ÕÔÏ l�Õ^Ân°ùáb`¼ÿÃbS7J—O¶aõšñRæ͛’Cs¾5eÙ‹R•倌ÙwTÙ[þ]A‚»½JÇT…—ϼåXáY[ˆF•ö,h?LÛòäïçÕ~7½›êCSÒ8¨BìÆìÐ4·O%i´æ!µd7f?@­ï?ǦRó\š?ÏÉnï³pºR5ÚK� 6ŠãŠRyHo¸oéÝÙ…LÍëV=žQƒ ýí¯3âSl ÝÏ„Îâ|šg2iÉèGA`ÄDy¸ÌàkµÇOúôcìó7Rn·ÕãÄÄŒzB¶¥/”TÎ:,úŽ0ªªV’í¤Q¶&/•Òmµß/?Õ!ËŒú~`T¢zN¼4vû¢†vû²rv¡l‚\äVÁ#¨Ÿ#µ‡T¾(: r$mÂ?8MåAåíèþøÆ�FöAê*_ï�á¤2J]Ù!œv»pJZøÎi_�U÷ öÍ[�ŸÚæÙR~“A!³é¥ÐÞNep“çÊ;%dů¤ÇIçÊ}RÇ]†“ á‚c�|^?µK©Ï¦n¯ÛýKßË’Ø(™6ÁS“”ŒŠ‰OÆ8 X³2®ÛžEäïýB’äê­¬;DÊÿQÓ=A^õ?j‘ñûL Ýèï0Ÿû~#òdüJbùƯ$ôUI<­LŸÓðwãbùiF”Ø :ã¯iS÷6C>Ê>;•;YˆK¸rœþŸþ PKÒV1]°5äoå5Yimunify-security/assets/ui-app/assets/static/shared-dependencies/icon.min.2f75492e841b.jsUT ëÆ«jëÆ«jux 臵;ûSÛHš¿ß_!´9FÚ´•�º­›’£pÄÀWR@’šòø@Èm»ƒÜòªÛ€Çèßïë‡^–!©Û­š R?¾þÞ¯–/WBÒy�Ó)ƒ‡Üºÿóé2�ó7I–S—Tïó°8ݘHÆw0Fó„e¼1žÍçj$ü.ÌŸ7Ù‚æ±Ìr±¹òÍLÊE}x‘Ær’åóÞmž=š»#âM–<‘p�'ýµ»Ô2g‰tû÷qîPÂIF$'1IHJfdI¦dBædL®É‚Ü“rI䈓rÑÏ©\æ|-¨âD8¬ƒ§‘ .i²Ì™\ 2.é£$<’D'ü;Md|›R’Á¢ón‰Ór†0ÜzÇ—4�/Gyžå¿Å|œÒœä‘]Û®²;ÊI CLï•Á ›/2N9>eôáˆ'ñBKp=ÎÏ€Cô�J áRGét3¸q»”T¡²X"„OÓ³l¼LiAêÄ%pàœ=2>ÈÒ,')¼žÅr ѵ~ ”�éÇ,KiÌ?ç(J¹j.[²ÃóÁ—³£OWÍ™)Ìd2�?ròT!sxßýoÆ8#×–·"É™âhÀ5îŒd�˜Ãß{Ä(–ÉLC:AH ¤Àþ¤ä^Ä,Î)¨]w-jŽ@ŒÇ0óhÜ eÀêæüÌ_ )Ùü2æL̼úê iX.õ×Ò[Ÿ Î?]_ýýäòêâ÷ëÏç_O�.®�W翇§äìàêZ-:=\�Àƒ�;$S*�ï'IÆ�c–ÒñUfÅsú)“ÇÙ’�õìª>›!å Â{6¦¹ž?(ü>L é|Іî_ÝQß’é¬�'ÚTµØ»ùÂQý™9Àô±Ã`§óÀäÌ‘3êp8Üq_­eáÞøE æÀkAqÙ2;<“J%gaps@;´sü@{çÌø"u®œÏ ‘°†ñ$]Ž©Â¡‚¥ÕÙ™äÙÜér9°ÍYeË܉ð ¦—K¸5¼7É¿‚¾\œZ4ÇÈÃÛ åKó•ó EšÌ—à[ǼÆNN•èÝ÷,¶$ý"œº²˜2�/p®DXš¡A�£·Ý˜¥Zu~;O€oWg§Îíêð²§4qKÒXçj­T)_&àë=IÀ3ƒ­Ì˜–yŠ>Åýô œjDõk¦Œ^D¼0@Î6��Ì€¹ž•òµà®…ÅÒB¼¦5·evÙý9.}¦p}æ,Ì$*Ô%•Ý“IœÌè7‹�+0»ö^tŠS�°€¹c ®‰¶!L Ž „ }€¤,n¯AIï!EÑÓI¼LÁš¹Däp7ب�È=e9a —²i ú@{x”[È’åyÅ‹x<¾Ô°r1 ¤VV³'ʇˆEœPÏu‰^[ÛmüÓó@Ì¢—`ÕçK9×!^Wkµhô2àÛ•Ç _¦)ì¨C¼0L¬H‹»Áb)f0­8´IW%•WøZèM} ì“G´À¥Ï&ÞŽðU¨3ͬoÍ#щ0nNåpj�,�>R¾�Ý0½ÉêÖþšÜž³Up-h’Û*·Òª�BEÕ‚ãm ·IÀòŸ½È®ùÏJþs˱müßD(J¯l~Œ¨¬OÙ-µõ«ÓÂa䦕M¹7$î8S ´‚4EHþÓ“,æá¦_ð‚ hCêrÚiÓn /À�†qÇYÁã©´R1™?' ‹£Ëó/ƒ£kˆkDjAq#(Œ´FPYÔís@œ¿lê�ƒyù¡^žfñ¸†–¨§TúæûÁ‚-¨wíy2ú°å”¤Ú¾ï“…Zwîá‹�T£àê.4rÝŠð/ Õ@CJ+ šñÆâdg~ƒÉš¡5¬µ±``ºƒ«¬‹êHÒ‚Ö:U”ùdûYMãjB…5-¹ÎöÛ`„–Áüpâ­<4n>=ç‡y¶òløîr-ŒÈérÏïŒË­É ñ™éb“ΚiØüCiP‰ÂQJ1P6¶¼ ]ÒhTSSžc· c… häq¢ü ]å`ã_i�ßR˜†¼8Ô=)ïxúNIè9”I5%¯!@;ð¿÷<}(1»9… ŒOur „™hè¼Zÿ°qc²çÎD,¸“àÐE<¥ÅMÓ ×µ`¦þê|-W?��°d´à\*ãÜc•<¿¤€þow¨ñAXìXдP’| R(S<4zÑ ¥|*g½½>ÿ½íó^¯’6ò‘’¤•ÒînùÈ Jy`¸çP ÑÇó  ò¡·ç·êÔR0mÞ$¸¦¨ˆ&8 ’Ù$[‘Ì­:AÆmŸ€½ÅV5oÅ'Ìpµ¬\*m«{í>Q&/Ø—_<§ž]&«!ü L*9¶cÒ–Ò ƒ,i’M©ª;n†lA}C wt£U¥´CD¢´Ã ÜNÆ¡êSoç­ZÉ‚œÎ³{Zöe<—�]Ÿ¸€—E 8¬F}áŸf4@ëù-W®I CxÌè¬+VóÛ,ý@Òàx¥`À˜H-[ê’›ÑR÷= xÿÿuK“�|ÌwwÛ;Ì„KÊ5µh8'#^‹!$cÚ‡YaÇ8Û°Ç5Èéøe½ØßßÙS Ûîxý=ð´'EM¥¾Ä\i3®¸êa/ |W½š¶‘¿Ðy³¬}¬ÊªÜf�-•;ꈓ[w”›}qÔ¦M¯& $bK”v†.6ß]ÒâXF#ó‚@BNêᦛ1x—ÀÜþÒ«Ôõ™-B¡û$.¶4"Z¡±#ùþ¢ë?nJÀ-u'm—Pix•žð}®»ÔFÂÖr]véÈžº%¯•–Õìy¹*Õìoqòxa3R‡Ñ¢ÓÍhñ\‘ÓH³2ðrÙûvGÇ8º¬t¤e5S®f#]¡at6ÚY/d�`”»»Ü¢»¯KF†ÃºMÁJJB3§ËÉožx!$8–DçÆ,ß¾ûï¿Mâ$ª_*X¡ÑO>=�ù7 õ¿úúÇ;ª]J�_Aaº=4n&¶,ZnÝÎ÷Q�u`�½ã¨¹{L'ŒÓêòË[K¼¼ Ï� 1vžU¤Û|>á¡›g™t 8§ì\ŸÚ>¶Õ¬*<=©N(6†ƒbµ€ßê[»ä ´Ís»/]\²6ÇRcºápˆ 3ÕÐaälDÌûñˆ\aß–£Y zlÈ8-üêò㼑€6B]EΗfd{í†îkZhü%žêø4ÛÙ¶¦Z÷/è$’Eá“ÏRm¯Œ�޾œ^]ŸÆ‹£KW’?³¼ÚŸ öÒ©ÜŠ]bô½4KÔ•bŵJX¥H¡ª˜qèYË’Qì-}l€íËÀB UBl.UÁ–?Çr¦rôÉtŸ 3ðS˜8Of¡ë†OwÑÐMR¶èá"ˆº ÞLö3(o1 ‹<ÁÑe.²ƒ2KSýj_ÕüÎïj=Pé\V¯sÈžÊÈdÔ‹¸C¸25vGä·è®,™o†x£ ¿|Ï÷\â@ð*zóàþð†¿¸£ý¿xÁ_÷}õø‡ÿêM_ßZ|sÀ#ÂÂùŽ,pOÁjÚ5=Š=<» TýaoÛMŽ &mfX�°KÆNÔì;íîzÒ´k–‹1¤ÏeëÊ�r¡é¦`ó¤–òúÍþLdКèf`-3¬Ð²K6 Á— ì'~Åc-7Ûñú{y«£ÉÀÍ*Vèþ¨çWhu±ËŽ—ˆ5R²ŸÀÌò´1ð2n Û'å— þZ,ꚢÖè²Î®„jí«¼Ãj\l1ÒPœ�=ó‰ï=Ë–¢ymdÛm`H9Õhª<'GgŸ¯~'¨�²>K§zÑ<0­`õÙ@df|"‚–ЬÌÊ'ðKüéI¹·%\+ƒŽs÷fl Ø%p ’nÈY)+ï´ËdÅÄî¡‹5è_J1PË=pÀ~_@˜@vd�5Þï…ÕV:|;‚Í8ü.´uKßÐ62êå3WÝÊ©UWܪÅyá¸ìonÑXx0…Ÿu f4¹£ãšGm�­¦#p%9�Sˆ¤•@õÔKU|@èooµzÔ|/ •O°*�“¥×ËËTĂǮ²êxìÖ�ݶ>K.ôÇ·´ô!ÏÓf=Ðó«ªîîR@zÜ6ø{¹¬ÌÝ$¥µú}‹—ë7Á6VnrŒÖ»Ðª@<»Q¯Ì|{i‹S0Õ2™F!LØ ¤[�6©; 4˜ÍNfÙÿzyõi¯×¯Õ7õ&õ÷"(bˆÄî®jØìرÍÎ$‹¦»ªPl3¸uU?·´Å8�þ�q �†cÛßôÖÁ–k½Ú.ßx§7Îë7õ’­±í:ί÷ø¥‘Ól¶lwõøaÕè¤i…*ìNáË5쉺u¨zÉ3ÁĨ~Ûn¦!ާ'ìÔ©/t„×ñ­HÔ{f;ú¼ žYï7qknGâÓ]d– ¢æÒ¢+K0γIP38ZœML�ahîYÙ»�HBÔ ¡ÚÝîcÛWχÕ—*åˆåÞ‚4E»æÍ`KôhäÒYïŒcy;TDZøÅ¿Á;üï½Z…o³íz�¦Þoµ›‰géø¡E¦FŒ­6*­·Qï*Ò³ò>ˆEt(GDD ͬÖ>õ d2ûrÌ^ùºŠQíªµ>@E��µ¡Žb¥¸é1¼"&R7aš]Û|¸7ŠyØÎ»Ñ)•9uù‘C¤Ú �ñúÐKñÕÈ`ÒÙ  •9¡¢tŒ}©öLTšÄF¢Øí·×âªaÝšx{à½*L«ûÈv`ö ÎU×�*ïrÀ¬r6iï!ñ"&ÄæÞDÖîæ"±èîy<ß±ùÖîØŒYŽ_àÞ›–¶UÊèÑמu·f¶$Ã/Aûó¥­ŽÏ «?“_»”Ì�=¡ò‹eo�n/üF„qØ�);îhDf™PT„›gª°gó©KöHµŒ¸<“yÌE fãê=_cØò«züÈ8ÞK‹ê;\Õ|y·‹ÕG½¸â'˜`Ü+{ˆ&vêÛYÁ¾«bQ¨¯‹Ú»ÐÂÕ.c$ÒʰеXÙW}‡°Û0#ð\  � ¾òJmÉ©ˆ†Ÿb×Ú:º DhúɯÍñ¬§*6`ñ‚Rœ¯0Å¢¶Úsã$)6ÇbkÕhaøm¹×j t H}\èZL ®x© 4D‡®yÐ#zQɆ‚ÐGü÷Ud®Û ªrl²à„ÏhÎ0mbØE'¥‚�žð³}<É*ã'2¦I*Â=ðÒðú–àǬ¨e-]ÚëÐ¥Ež™oöá,¯-‰jÖ{‹,r•RC�â=±gz†ûÍAÍýærßðPöz•~ii�X÷è퓽¥Àö—¢9ä`–ý��Û8¹›æxÓÙÃ$ÆaóÔ3ñ*ÔRìÝB!t×Çf[h�*ýûúR.|÷_‹Ç¾º€Ó��”å“4{µçª° Zú¹Fy÷°ˆ…“”-HûªŽo�é“Ì[ x#›Zu…á-…l€b`AeÑ'xU27ïå29ŠðÚ›3ô˜kå‡ðW(¡Hâ”z½=â쮫§LMÇÀ?鵯zX©Å°=¡½”Nãdå;í%�NØcu2ùÁËIîÚJU‰óß…}<­„ýo'gã 5Ó”ñ0^ʬgAë?™ ß‘¤ù“™ð-¦fÕí‚K¾ù¦}ûqý³yÁÇÎP9ÏÆ�¡ÒþÇDÊ�€ÈæfHž¹{�fm~§S’ŽšÄhø.A¼°yÿÿPKÒV1]N5D#7¹³eimunify-security/assets/ui-app/assets/static/shared-dependencies/platform-browser.min.89420d4c46ff.jsUT ëÆ«jëÆ«jux è‡Ì[í{Û8ŽÿW=½œ´e§3ûìž¼¯ã¸ÓLÓ8k;ó–fSY¦c5²¤é$®«ÿý¾H”¬$�Û/÷¡�D‚?€ =Ù0NWíŒÞ†ð�ÙWÖ?ýøvùÙa�dÔ"æûj•ÄÐ’=~fêÏa’ÒÌçIƬkb/ÖqÀÃ$¶©³µÖŒ¶Ï€[Ý{?kqÂHFb’��ø$ Y“9Y’”,ÈŠlÈ-y ÷dF†dJ&d@údLÉ99%ŸÉˆÜ‘ rFnÈrBÞ‘Kò…¼%Çäò3yO^‘ŸÈ¯äGò;ù…üFþE(%œFIFILIBIH‰OI@IDÉš’9%KJRÚÍ(_gñ–Qsgî•9îQBÛ§ñgp™GÛ¡x%<žßþž÷ØÓD0nšÜQ˜¡G¯¬�ëΛ¿ýõ4yèGcÏivÿ‡ñíÔgw¨.=Ž„%ýxópE‡Y–d@âó‹³þôíhüáæô„àW?$ó5H”ƒ†çýã³áÉÍd2¾y;ìO/Çà Ž`ð4óc¶ Ù„û ’5´ô/.nŽG£éd:î_Üœ�N¦Ãóá˜Ì±+M£0ðq"cº KhZùwt߇Y¯hÌ/²ä>„™0’ªNÁø=Ý�…â R®àq0¹¸9�†do£™ú¹…—ŸCú0Œ?e`VØN Uª%ÝDômäß²7äÚƒŒÂ.€r‘d«·~ƶ!3èIUÛì” �Ÿÿ4LGã›É`t1EL�Xhô�Ï#š‘‰ñ=Åñ T5 ÔLÛ“»0�ÐhAúå'IÌ’ˆŠEülŽ+ú�Ln&ÃÁåøtúÛÍåø ÇÀ~Bƒuò çô‘“Ç’£EÉÃÄGsù"¾¼I}Æúñ|ºÌ’`p^¯ã‡ÌO'þ‚þìGkã´ì¼a’ ½Ì"èùÜÐ󎯰kTvÍÄ×ÌïO³5ãŠðîEB±j@yñ2e�…)Ò³Iån^¤S–¬³@MøCá�IFNÐÞÀ^ÑÊÞ•Œn£dæ#ñeÙšd`£ap†%Ù—ŠžŸNOûg§¿ƒÛ¼-ÇO‡“iÿøô —üÇát:ÃÀãÆ~èø�“2@–0‹ ?WßÇ�ÁÐß— ´˜85àðªìyùò$Y½ÛÌ3-ñOe/ ÛI¬Ñ…ÁÏ>�Î? ϧ•¹Щ|^…¢œØÈ�í¯oŸŒ—ȃüèqò»ÇõèÔÏ$É]XXç/@2íÚ݃þV¹ G€ð_@øëRû$9¼DØQîÈi9 æ5N˜Ûª?÷SX<`ÀŒþbÁŽÇ£_&Ã1@PdEe(µ«Ò�ñC  b k–, ¾ ÂÍLKĉßY²ª’ûØ$|üƒŸB0Bª0‚�CThšBl�`…०à�ÁâK±”�ãºà‘ûib?¨pêŸr¶ÔÞÎ@1`?~jØqIzt¶2öµ.ímÄ åÂYÌ]JÚí6g°Ì9L8¨{ƒkΩàôÔòyÈP't¶¾�&IÄL¹Rf?0¯£(iüaÉW  ­�àOhNR‚QÂ_Žá�è™ñ÷®`Á=d0¡¼ Æg‹Ž­²TÍ\FdË]ÏÝ8O-êdm>·c‡°vDã[¾ÜßçítÍ–6sTâÐZÚWø…öÒgvÇé]]»¯lG½‰÷«­úŠ;åR"eÚ®íx?ØÌñkÉyøÁ’ZÙ†l€�}˜Ð=u÷:¸›÷ÙÏrœ¬Ö�Œ%…&"S~mP¯K‚ÚÇ•Š¨Çì¹C8ü™r=/ÑÉ›ˆÌ§�†)µ—Ô¶©÷,ƒÓæ d«�Qž—4¶m1½ÜÝÛ;ÊÁ(r°RŽÎ£„‚¡`™( $D“uš&7MEÊq‹™0˜Üyî:¦0�]ÂÖ9ê_Ó½eêÄGˆÓ<àhL qË�nA¨i-è6—O«âiC¥î²5ÎA¤ŠË�µcDMôÛù¹¿¢LXº­èŒü/›Ët®ä¡ýÚ³07Žo-Ïã›”¢Åõ JÌ=©QlZR­´à îȯbËÁüc“‹SØ=fªsú8ZØ–k9Ýpaó:Ú-0‘eàÏÔ0Xгäµ…K*rZIÀ_Á gáÊvºB–•¿™Qp¦óÊlmHíb +\ sz•6Rh“N;n¥�a¹ŠÁPÐh\k (¤skO«è�¤Ýß§­&âÇ�ÑÚ³ŸPV¡ �{Z©ð=9pÃü(à¡€xŽë–a4ÃHܦj<5–¾¢hòO~ ³lbœ£êJ$h¡vƒ†iuåœU¬-Rêj›ØYŠú`�j‘NbÞ�¿ê\»h´ùn”«ŸeþFÄ<»ÉÚ÷WLÉ×�¢o™^“„_¿ Aü4…ì½ÆÄÐ ‚focø&„1ñQ—“$u-ßEûcŽ™Óˆrúg†ÍqØn"Ø4j“Ãü;QpažROÛŠ…îïÛ•wÓ56 T‚$ݼ-VGSÖL]/@aú©jðe~M¶THôÁòDª£¶Ó�` …T` ´Á”ha Òò ã5§Ô*ªXן~BŸ;íjz¦\_#“Y-\¤ÔRm1^\ Ý'”O¸©—ºj¿~½ºvTÎ�r ÓÉ«Ê5M±ê.]™;‚“(¡ üÀ™å‚]‹H l#ÄND µ™wÅà»ÏótäH<¤8`í }2φo”e7(€)Þ'á¼ÕqpÊÝL†ˆþ¬ rå2§;ƒ¼ô®+æ2‡9‰�Äælbg‹3¤»°ÇE<Ü£ze".LøàÄŒ‹ø) ¸#$—ӯƙ¶þ„©Ý áN¸4�mýŸ8æyc\)‚¼-])dâ/ èq÷ ¢î4d*æ2knã$±¨UµŸ†­äI€Ëœ\{i5½$šœœ6“ÊeÜ� fL8ežvK·4’9–§Œ€3C¿Ée�H£wúætw”l»Ÿ¥’²Î¥™6—ëò@½Ãÿ²?ίüƒEçà®�ÃÛ�@®¼ý¾ãZÿ´ˆõ]R6×"o¾w­Wðþf€oØq ]|8�ÞÂCiðáÐÊ»:Ñ•3ÑÉÉÖjg4�|Èñ(Ñ©Ñ=éõp+Wpœ>½ÚÒü“Òï´–{ÛÜÙb¦‰«²ÅŒ"áÞh“‚¡á©'ð€³·XwCC‘Ö)¸Ê™s9kb-$å Ûøqœ€Ñ§4›Ö,áËVÉ åÇóV9¼mÉlêU7ÅÚwT*Ö¥EIg¡±Ãì ’o•ˆï7çá™™‡{°µ»ŠIrí!Âd½+Þ6 ØÁn±ÒV$é²vÅØT_ù¹sMBOÚ,ñ3”ø™àÞÝ6&!5¼Xn›ê­,…$SÛ ðPYµÔWxleaªºÜn”$``€4UhbNOð·‡Ôq¯Àà˜s]¬P�ùer.DÁDð…LGK’ób$•4Eˆ72ß—³Ör¼ÊQ¿=YÆ¡ û^ÊlS?óWM©­§d,‹z.•õ2‰™¦ �¾[]Ø¿eU»V%S‚ÐR\¢FšÌ¤1Ùs‰yÓ”¿%3o'Ró2æ=¹˜r5Š8¹­XŠr”¶[º&§Ò ü5¸ÿë†á:t@Øûœ„±@’c`™�X°ÿõh… 19�¤s×üR^Jg`p’å¾0FÃvÄ+i(Å$TíCÐÐ!3Ò³Ö{)QîÛójßÓ”ECEýe«Zˆ�††ZPê¾Øw¨ITíøÙÌXku'e-¸·…uU“Veö.eêÐÀÊQ˜W³Wˆn’‘ø˜»-†j;Wß”cs‘ÜÖ±K‘q4öò"™’uŽ`Qnô1„XÁ9 Snû›EwŸ’+Ï«~]Z™™ ÉÙ¤š<”ó-ª � `,¼ü˜ö:‘„}µŸ.GQ{á¯#.ÏÙAïVvY=òà ±Çˆ7 ð_â|^fWãSM%/ÄÇëÅ‚fµ²—ÑS²ë¿Àî8Jf5>ØT2¿Àà-dâ'>÷kLt³ZÝÇZjHÄá¿Ü‘ÅÝ"GÌ"�˘%ó�‘B¢•dxÚ|›QƼ½#ÙŒåÝAFç�À†~T¶¤µŒNAFÏúÌð–‚T9åËd.ö5—!u}ÓÎVÈZxæÇæ<óÒ§�‚1ž¦È ä,Jfÿ™`XBú‰á3’ ½}»$zOTìTeÇ·È!G6KR­àÔÄPŸÀ "(°^íRèbx]ŠO—qF}ØdÍ"ê¶Ö±4ßyKYU ç(\˜Yž‚¸Ur˜Yí$6é’—Êneqôij¬iIRtúçiEÕK£û¦»õØ‚TÖÁ€Vçè¶'§­Ž´8‘47ƒþÙÙq¹g¤UDÀA"~;ž—T夰©/Jzh7¹èOïpÀ¿ñÚOšT ¾yÔh2­Z¿<æ²:ãlÈX£nÜû�×pÿThÞœQÇæíÝØ <¨o`‡m½êYÖ)Ído9þVÉ=£d¡nŸÑR𼏝pC½Ãt>^Ìÿ›ô>Ƈä¤A¿Œåìð×-嵃Q>Çõ˜eÞ/ÅyëyÍ$ð#j^6)h«:T¨~×x^° °Ð§«4ò˜} ¶—¨ß‰KÓ=ÙÝë‰?íYV(ø1…±:«¿âòð®j^D3óMhõ,Ûú3ˆ{XÊ’BQåôožŒ‹¤2¿ðöÄÕ5é/”ˆ8&*á"wxl‡o.ÍÅ¡^8em?a‹«h>ÛÄAËä‹ûæâÜVîõÅ5}E!.óQ§+«í<Ûlu°«*M.RYg$[).$qív“Bì/s“,ýó\î‘s¼-ì?ø!°LD¿+!Bä¬q²\o¸Îÿ{3Ûç�ɽ!«NY¸¶qkOu™W5ê½ÁÑ÷ÀRc§×«±: Z‰C ‘^ÔÒ�ý}¥ŽúÖ1Ñ3 Ìù„b>¦e±Œ!åámÅâ­@d%YÔ˜¯® &*¢N4cUwŠSzå]k¯©„‹&¾¿�ÿ·ƒu–÷®\2ÃÚÙ:­9 ç´/ðiÛÂòÄhüéD·«dÞÎ�rEy´åzýACQyûNq£ºÌ9$xíEª@Nêêt¶¾'ã¿çÕ*z=Ûïõ,Ëym‡½žª’?ò*﫨k16d±€Ô_ ßWûËòö¡pªªùÖ‹-„'�¿÷š«á»éV‚¦§b)a»ëÞ¨áf¶<ûTßš{ºøÞ0Xž °…Žðè8ˆ`²’OÉÜùsnSÛ:&®Ì®°]Ãúâº75[¿øµˆ¢€õ` ëv`fj3ˆ-¬m~QˆÈ7Û?*ÐóÇq›çùíìrS™¼<ÏkÊÄeÉYŸ ÙO™/ïÆÝP¼æ¥Þ¶) òâA|‘v'{}†wCÒ�ĘÛx=³ûä¦�·e„æ¸/ðd›‹2y½ˆm…q­ç�«*ß ¦¡Çü‘„(Ê^ÑkØ6É;'Ä·)Úý  )'Ü)ä“Vy AZ9ü‹Eöø•¥Kp ¬kó÷'O¦tU–/N ë<æäfµKÆ•ƒ1"Ï \}zP† ü%[¹íÙMé ;wÿ.Øÿ]ß›8›Æ? kÚáoÄþ··gíŠÛXòûþ Ðñåhb'¹7wˆvÃ`°�!€1¶/;È3 ($¢nŒÉ ÿ¾]UýÔ›8Ùs|ÌHýTuwu½Ë$GÅb¬µÖÎî©”Þ6û^znÛÒsÛUz ©7lf%8È#è¡oÙÞ éºªçªÃ“±Æûjß“%[œ©¾q•Nѹ»½ïÒ€PÍdÉ»#'“ø<Æ ˆÈ$ºa#»Nщ„jÚ—'½N4Ú²–ºÍ,¸ÚTzôrUv€Õt?~/´GH‰]]ÛA„‡˜ä7puæ&’4„�”fŸ%*™Ó é¢Y2ý‹šÂh„|q‹ˆã&ª¿Û˜“šý„ü/‰Íú‰f™B>5¶ °äz®š%!¹W‹$â8ú)«ìåV~!Í«¶ööñÞ®­¶¤§LBFR °Ñ€vzêýñ®íþxßvœ~÷]ñÎÞï*w…¹~õH?…Vc‹Vû<”S·×l)Gº˜hÔ±Ú‡•–‚¬‰— IR'"pN$Ls5AO:-@ÿ{îf& ¼™h¸ Q¸ª{š7ò‹ —"AÙtýÅ�×_.=ÿYb�ùÕŠ#ŒíÏÝj–€ó@lØOYí`¦Œ…äØK4ÖD“Íêæq}M€“…Ü!Q.�thX¶Ê†E^V²†EÝàu¥5ó³@¤À©)†Y±š²ÀåoÝÖ`Ä·€Ín½±.�¾�îDó•®=®¶ã½}•/ MÓñzˆYz23Šû¾âóé«0cC숾DÔ(â0¬S�ûvntµ©Rº�­ò.×:�Ül»Â3ìÀ»O[ü†ÈŒ¬O§¾¸JIj£~¦�B´©dãÈkϼë{O½åÿõô½åë®@ {ë¨}FX÷}XцtÈ’&,äÎ!͇þä¸*+6æ0EƒÐŽ$u™¼Íò2R„�ðÌŠ4´ÄÏm•+ÉXœÊ[xLkñ|åG ú …zÆÓÄ.tßYsèÂ>’ç34Ìâ±–Â"OãLÉ3� Z²¸&½µzZÃHŒ-£:^ÇcCb �Ò6ÔXÄè÷4î;‚¶±‚¬‘—Ž%õ7•“›‚íÍ862R´` v§YZ9޾ ˆÖ‚èÛ¤–Oï¶«N�‘–´rYÜB9é�òðàÑP•Cä[0á°Â»f¦ß)ÕrJò[k€E˜JH.…Ã6ôJ ¥¸]€®Äå¢K?Ê5-¿ã[¼a+uQÐ./üÛ‰Zäþ€èÜ}‰MA|ìýTq¨ªä#eæë[kêÙ23[Ö4[5Kô!ÁÙªQ$ŠÕçºheÕJ,�›K!êZ~+ZËQ5ˆ¥u�TØÔàÆX“Þ¼  {‹±¿m;‹"‰ñ3«�î.ÅýÈW7V°ÖRÁjc¹ ¹FØ4¶úvð|¥9A”`÷s�ìæp]h…nùç¨TÞF¥¾tæ}7qÊ-qʉÓBhiíéÑáÖHE•N&b|µt<|=آܯ¸1¾ÞŒö×÷�‰N6ÙÉzŸ ̨H0ÂFJ¡¿%·ÇÄïlS‡ßÖc*L@¯±Ða¼¦¢*·á¥æú´ÄJ52Z lQ(b®ãÚpAáÉ_D^\¶º"] Žx Æå`«ƒå!‘ëh N±7²1Y³T•eNÕ|$ÆŒèZ{ÛV'æ¸^©9,.VgúÞ¸Ôšïì´|¦[€�Ÿ¼§§m{ú´…ÛMZÞçâ»wþÔîü©haƒo…«(R’² ù ‘exX@('4µr¸/ù ª¼Wxo‚¿Ca{ËËŠç¨p,é8Ê™5«Ä€Ø v?E¹|•+ýCUAô¨Ë‡ääÿÅ´Ï|ÍtÕ[y”‘0Æ2õ“¿‰©GÿLýäÿ—©ŸØÝ3©ìp0¹V³åCdæÄ�dQ5,¥p6ß…¨†¶Üš0zÅl´Ç Œ 9ø’bXÅÞ+æD‚¼ö˸pÊNœ˜’·6¦¤S£¶†W0Æ‚ Øòà”gŽŽ”“ŽTØ`NÝÊ:q4%9UóÁÙÑ{(/8úâ¸/Èÿe—]&ã{¯"øåÔ_Sõ�[.òëS^\Èmw‘^ÞRôPtÒi)£†û9@äJ ô�Þ:Õ—T¤û7*¤%zì¸/´C‰í÷ä!;I“”N£Oc 5Ú³­øŸ²þ Êð |`¯„röA˜_›Krwðr}ãÝhgÿxp¸18€xØ[û®Šõ^XÏE¹)¯D0#¾ôÚ _úŒÕ¶�ÙZ×Î:sÈ—’\´×J�)f Diõï6l‰uk+UD š;;’I‚ÁÔõº‰Sˆ úÜ–—T€�ó] HîjFÞ9§ï=s!ô¶!šÀ¯Ì!ÔÏbFhNEÐ5ÃÎ2ñ½÷YD5| ÙT· ³`Þ‘]•CUOß™Fzs Jj3[ÇŽµeìKŒmRé­ ƒ>Ž£?‹F´{�O±®Ž|¯xŽÏ¢lº$šgKÜ4s`(Ѷ×ïþ&ž4¢Á ¶‹*[:³ ¥VŒzf-4>ê½ðí üø] üø€R^O€P:Îw žþƒïúŽÁ_ðpàëÅð?ÇÂ1]9’—0ÙÓawf‘ë†K*V:¥ ¶ ´bñð0V4h›Å�¼�Λmç�FPF÷BÛ?ñªó+‰%W“ÇBk—9r¤&Hw‹ŸÍDׄ»*ÏݸCQê�LÒ••†?ÞKÄU7•(üaU‚am3Š�|ÂÖE¸Òùå—c¸±?_ýñ_?þüÃ?ü9Ž×}òÅ ,ø¶ôƒÅÜP 7a V#dºsIT*(¨©6JQe¨=xÒ¯:ç86�MEQ ©«Ž²Àsø�%Y1‘Õ=Ó¦js q¥�¬ję֌8Óypêˆøp=Sà?H‹i¶ é^n”¦_øîL  'Š^9ëù.›ë@Wg"š$ÓÕ™åb<æ—‡‘¿œ»u½bµXÛH:*šÃp©�É�:¤@3A~ ÿ c™UT½È,KÒ¤Iq‰ê[í ,(øæpå< WÒí‹íðÐÜ×�eƒŒªÁ+�–ú‹Äcy¶žM6öSß2jŽÕålP©°ëMR&(/KI k –‚a]ÿ¥Ð:m ªëšA°63`ë3PkwÊ9àÓ Ô¬> ½%ç):u"‚Zö‡®JôAüœ²Ò‹¡â[>R‡Ä…ˆ}†!Á§Øû*ÜšHr CAQäôyQÅd«.&kׯx|ò¦;hý~­FØ”Ëï»ÅÀv·Tv+ó·a˜£·Û,L¡ʸáŠ8È.—’››¥t¨–{ *,‰A€SÕcɆ;½›³\’5Z¥õL²¸ÐLî§ì�]ø)lõÄu>%§2¾ßÉ$Ѭ½ß¦@–P¦/•io‚9â¸ö…0Ãrª¿ u $¶õpt>Tc œšÎlÕñ‚È.Ù‰‚ú-y©®vT –<Ã.Ö'6ÁàùD?Öo[ŸK«�_â¿ßCì�zÎ.‡Ù¦Ä—E¡ú<•]Zk`aà#Mš‡d‘6ž²¤€Ü,vzlNU£[SõÓ4¦8š`º�þî:è‰.CÇ Ö©:;µ¨ç8ßVþóšiéßÄQ-ýîe—°‰–žÍÞ@,³-z¥#+¨·/�u8ì O££ãw»ƒ£ÑpÝ ÷�ŸØß>âС†X ª[þ«HÉ”Cx« ø½bARx$ µ5ì6 âŽÖž4Òz:Ÿ6W§Ç:S“¼²abahJ°hû>M=™Õ¨ÆÜ‹¤’º$f¢;¦\Ë/î¡SÙÄ#,(Á\»þ�ÐOçjÆv¯rY”67îßxjBPÆ|Oó–‰iè}­×BŠ?'[µ¼0.»ÄÅoR&ƒx.´‘W«wÙ\Ão6)õÉ´˜wXlÔgiÜÆ]ÉãKÑW Õ4&ïô¼ §¨ïƆÀƨø�cøw@u]”£» ½ÓM'JG¥›Y¿HÅ’¡E�Ò¸¶óäžlÜyÑ8~|³EÓ¸q!´§²¤Ç™³àîÑ6y)B�âîóhŒÇeêæ_˜sÖÒ ÇðŠšÃ1ƒ6vOCs" G:Õ#éîK@0²j‰¢Â4®€¾ïž|µ�´]mm\ï^[AÛ¥÷¢­ÁSÍõ ¿Ýr¹~÷zb¯Ð“¶+“Éú)àƒèÄ0å¯Ñí#p£ð0a•¿ÖèM#ÓD˜ÐË„³È}Jc>Ü'H¡">1§]Y9‹©Òý£p2/�x”)ib�t5ÊH¹M/<žÌ¶°T жW‡Ríé˜8õð2Z*8($ îxT(ø2eœâ“`te²¬¹±W›gž¶ Õfädßb"`À¹7U%és[º^øH_#áËÈ Ôw·ûiuåGOô…..µ6¼´¬‰§Ã²¯Ñ'þ(ý85¹§æ²ïK�=0»˜¹‡ãb1è‹ÂHÑåæ(Î$ï³r×dì^…Ý@ ªÜuw®AЙd¢ƒÁ‹e]Œ`^ä7rÿÝcÌòbÁ©ÖRýrC X‘Ïg1wåQd|ÁŽg† zv¯› (Ý)¨~Ô²D团¯ÎtªX”S";kUßðû3-F£öÓ�@´6D¿Tra6™Cô9'°.1P1½¥åõ˜gÛ6 ½Æç…D66Púb¹ç(McC‘ƒ¯ÈG1I.áMvW$7£ª+Mõy�2†�½ï`}0j~y› ¦B“fŠ%ÒÃ?˜AÞŸÄ þ'ðícœ88Î,ƒãÁÞÁîúñ€,ÈEr "ó…'”¶Â‚:4�µWh¾Î4÷`ƒ_ˤó8ÏœÕ`ª¯7nôY’nL„HÆWDP…³kù=½œ{ƒ²¥Ï®CVúÒ$ó8–ŒR�„mr^“„Ž­¬5ò„ɤJàUÁ¤@‹¸¸˜U¿®z'•pz†E³í€H¨ú•®z¬~ jÚÖÁŠ(ÏÚXQ˽èuä_…­=Y¬Ý6#ïª|dF�—WsêØiÐÖ/`�j®í"GÞ\ÝHÚxçôφô+‡á«<3íÚ8éË�œDúª/ÀÊ v~xŠà56HRñ‹¾çüÍeYÆÇd~Ö“´ò“:ñ¿íþ`ÜoâþýaX6cÍ$Íq`�KºÝnÊ!Þ&ëw�w )=‹4OikƒK•é”mø´D޵¹½³$ý;‹YÝ-�M5tÜ_ß½8¾=BK¹õã­ááÞèàpx²³98< ²Äz(q×›íç=or“:uáÌB™uzeLq;‘±ÞŽ&ìUügòpó8”“Ö0QÆ‹Aô9üõSÁU~8ôÆéD9�íÜ·¬£ÖoÂôm§øÂ–ÿ®Š‹è$ÚrëüÞZç,JÝÁ ¤üs:9~èoR6Lð“ãjöÞ:£©š§’ôNÚª3^«.«žˆhODŽËÛ‘çñvâzÿj{:à“;UÝá ¯^Ü+®7! FŽ‹$ã©J­OaÂ]FëÄìøu*›—³§;&mH “wÉófDð�nf ÿ~73ƒ r.÷Jå[Æ¢�3™Œ¹¿U¦<|�xLu,hnA”p­»˜ÖÖÆ1(ŒôïkåÝtœ\brÉ jžD#G�è²8d]LMy½­l‚‰‡½OÀ8¤µ_L�²Cˆ; › lªOÀ­ØØQ]æ~Tç%ž�wTž2jÏU0¼ymäcR£kÖZoh€åvh®t‰©ÉzC…‚èUΓқ+ úcýa=hFH×9š‚šbºqXHµ ’‰Ü“óQ 2ü$GðöYªùÍ»)P:Œž|£+º£³ŽÓÄj†fô¯µ”\ÒÝ-[7€BT,ìj ˆ¼�ç`Ø|‘N…¤àÑÛË‘¤÷¾ĪV΀洹͌%WéA'] "ߦ¬#‡°o¬ ûENVûF¼¸?&Al€QRsªXQIÿ±¬¬Í˘ڱ´WIR=‡^ó=b·ö’ˆaâT0’«ÁÙá À$§Àÿ’мQºM¸žƒlAiPçeô[& Fí÷jÊ—_Ÿr¨=œuY)³ÿ–`@c?=ÀÌßG N-%X÷‰uBÖÀû€¹YoŒb§2ª™ )ñà ¦†r»åñ Ì ¿ß¦ŸÉ"j‰Áï ´ ‚I傸Ò]W�]ˆ"Áîê*[\@¨Œ¨†Û’ÊbŒ:ôä5¹úûÖäêék2ylMlÌnp»“^ÇhÆÀblgw°)¹7ýSr\ÛÝì2†ÿfeÒi\fòiŒ®Ì:_ðƤ=äß¶°@¡u½_óª$V­Í5?�4W:þ¤oùìö!�¼Ú÷ÍûAâ+°÷g~€I§„ˆjhû»ÉTˆ —�}œ�š; šs¦j)(Qfs�ROžO0>Á³5dº°P/°f§Y|ÉMPQò3_Ëùéá^/e¿ü´²²Öqæ/÷%Æ0Ï Ó�=´ 5È#×$Ó¥¬³œë]âÔŸæ—á¹$fçžÍòrŽŒ¡ç&ú3çÆ÷ã)ãç�¨ÚäÙ,‘|üVúE²ÁÏ;¥\º9‰lelü霘—k&Qîî¶KçH_@z‚˜ -ˆýçn–ßõë¯ÂeßÛ”×E…’«ê\ wr¡Ô÷ÁБ÷A„»C»4mcü%ù6oHû1wÅqò~¦ÕòJ�Ðêv“ÓtRBà±!ß7ß?×f‡CQC"Qý O½æ{ô¬/2¬R}©*ß±�ŸRÑР±À’Yó«eXù‚Èïž›¤ø þ‡/­B¨ÃÅcÜ-Jcõ÷Y¢ñ›$fLþÁ ^ê7ÐPꧤÔ¯1ŠÕÃD¾ô³@a/ý¾½Q?@¢‡?Ól|e~Ø1àÉŒzøíŒ�©í)¿¥æ˜çUÿ A‹"Ú_f,zԃѓ�ìpü.½aæ‡þF|0_‰O4$þÔ_*|7Éo%⧇2úˆ2Žíõ½½ÁáèåàèøÍá`´1ÜßÚyiŒw·“ëkp€ärü¡ÁÀmº;„˜‚•&»9&m7ƒÇ> uMÂÀíU¥ƒ–TP‘‚³Ô¬,ѱ’:s‘'Œ¢ßªVƒ§£ÜO\Œ ƒÖ„3–aêPÈk©rlCOGžªkÝÌ©£½[ÈLÑ+“÷”¥wŸ|¹óï½Ã�í~Ìkš¦EŒŽ ã{Ô®XÐ6<~’t me6¸#ânÙW^+rGô¨S• �Ù Š ç?£÷Ëð.³f8¾0·³°0�]¦œbP©xXÎ+ÇvúV]•ÿºž£Y)¡\6+2åêHî@³¦onx� [4Nwà&¥4ó«Q®’t`ÞãôX/þ˜nv ïúÙÃC¨,“[Õé©ÑAòÝ¥HÒÔ“ó^eáœå!Ú>>Aß6Zí¨®æ+1{ O<îa#�7ºM=ží’<ˆTZ“ü₞ÝÊ’¡™6…0/Æ4Ó\T7šOî«) sî0yÉ=µ“÷ÍÖ¾y«•0=nСl©5àÑÏßÍ8Y¤sTG:ôì¡#g?2¸gƒ?9ÚÕF3¶üF1äÆ_ †lÕÅÇò†�Ö£®H^™g®äY™¦{1¾‡²µ�rÃÀkýéðZÿîÛe½�Cä‡È‰CT£ö·Þ”ì|…u<äþwÌ}á”^@Kq7óë£$KÄÆ¢uŸ/ö.[¯1m^V9ÅÌsÕ‹¡¹›BVèì˜Êkâ°»?ܘü’kê%âÑ/¿@ænxtúû òü-4£F*V—�¨ÔîÒ½ K•×ÍÙáQ?f´£�Ã�ƒãžœ1URi¢ô¼¡òšCà¹Î[Bí!sƒ; æ` 1vB;C]ýpp4|s¸1A;=è!ãùm1Ƽ�ŽLÑ êIÞ±ð9JzïþF®àß©¸?.$ê…pHÎFžo¨¦¬M½OmõFNŃ–Šo wØÝ–Zæë½Ú£ðO¤0úò÷‰w¾<ñðαž<};/�o8ºû¤ÚøpöÍÁz]"s¨!=NI¸¯}28<Ú«ÿì>ï®>ND–‚v#Ç¿f’'¿Áw¨C»`¾À»“ ÿ×ÿPKÒV1]¢ SM�¬Pimunify-security/assets/ui-app/assets/static/shared-dependencies/zone-testing.jsUT ëÆ«jëÆ«jux è‡í}ùwÛÈ‘ðïù+`ç½�²iÊr6Ù/šx<Ž�'¾bË;ûVñR J°I€ €:fÆÿûWGßRòœÁ{3�îêîêêêêê:ë:Kê¦Ê§Íà‹ß�¥U2™¤u�ŸÉýdØœæuò‡?$øïX~ØI~ø!™¯‹i“—E2ÜI¾ÿ]�QïÕñ‡lÚŒÅo£ô°‘¥ñ™—U2Ä&ëQ’Cµ½Q‚µÓêd½ÌЦ/²â¤9ý>þ5)àŸÛ·ÍêøÔfùÃüýÖWÕÀ*É‹¤ÞIòy2�[UeS6—«l|šÖ¯Î‹×U¹Êªærùöù³—O`šÿ*h|ÿìë—¯Þ<™<}óðÅ“·ðõûOúÛÈ»wP¥Ó kN&Ö«ÉÄôäÍ›Wo&¿Æ‚o>úÇÁ›‡�ž$øÿ<{ùµQôí“ײàd"~X°êlu�-W‹´ÁfeñÛÉà«Ãš?ËÞ…Ÿ—ÅÉÛ–‘ì&`,ùjº€5 HH¦™�oíêCwyÐÒΪªÄÕq’5T´á¢_ø%›|™ÕMº\Aé";OÃÌ‚C²›Üi¸#ª¨^Z-›7§ï`­ON›'Ø5«×0¶ÎÕÌ Ÿ:@?ŠnªK9UyÞÙ·Ðè�LO“! ÖE¸è>| 3’ÝÝäm¹Ì’è#CŽIôX'°:³‹i¶¢1�¦Ål‘'É ÖgÄœ%)¬,d·ÔQd|Íi¦+Ièy�UhhÅ(9-Ï3XqIÞ jX¾u%|/XËk`T— °±"Ï íD±DËN¿Õ{®e•ƒzÔî˜ü@a²½§¯%”Ö¾$ûÀ$ý´Ja¹ ©«¶†`þ׫EÞ O›¾Òv:›QÛÔ­!PD;»×¢O¢Íí•&B{'æM—jiYÈ‚°üáA*ì B@qOó’U¹nˆˆ¸ýäü4‡%’VÈ Uƒô͘˜¦+À÷ØßÇ-nîHOCꇷÿãCˆ¯ÖõéPvÒanŸ‚kQá¹ÊŠYV9¬”Ú|S·]|/ ¬d؇rŠyra÷[qRW8>†Âq˜ïŽa6à‹ËªCSÉ°ÛæÒ"1I÷E=oZÕ8�e`äüs=½O„kÁ˜ViC àæ$ð¤ó¡Ì ÅvLŽƒûÆ<1¸%•ž/ó6”š—Y »”±éý&™åuz¼Èf€‹29ÏÄ®Ud0Á°ÏœdEVáþ…ýA cÈy¾Xà¦X�€˜À‚_¦îsp¼Â ³T Õ_T^¨³&q{ C¯¥ä|Ü|} „³”Bôîw%¼êݼ®×Y½ûç¿ü?›'h€õ“‚†gIÐì#˜ÚãÌbks[%€‡ˆL<'_.�ËÅd2L×lÍAZsï;¥Þ�–Þ’A[Déà^Õ0S1 ™b«ž´²x;=ÍfëE†}6‘ < F‚#|œ-²X¯£D _Â#~¦þ®?†Z3±mÈÀ ˜Pk¼ ï+r:̺pz5~Žgi“†ÞZG¿÷xx? ìy²…C܅ݳÕ{µ[ÑŒúµ¦L+”ŽU�ÅB‹ê€R¢D«ûm öæF#૜¨9…3}vöF„ePƒÀŠ8O0^±1�Lx‘gÝ€ïíýåO£(@`›Ô2uÅÉc8µÔY5JŽ/Qe‘®Í(�  ý¤>Eù3�Á~}²È ÿ¼ÒEæ�JÄFIª¼îfõi¹^Ìô! ):žœfUƒ|Ü}JÛC™ÁÖp„Ûd•ýß:¯xS‡�eBJ`¢,…d†lMƒŽ->y:!†í÷ F1Lç•3�±½Å"OÁb>æiXïÍ~ª¿ÃÀ}ÊÃ'®‡‰×û´Ežjâúãézez3=µIP@�À WùM/QÈó®&tU>ŸèSÿ0´o툆3o½:ç±=xÎèÊåjÝdÏNвgš¡;˜}£?¤pSŠ<³šw`òà~Ïè·®¿§½w߇ ÜÓöŒñC÷^/ ŠnwÏ;m+åÀÞ8‡Õzñjnh=a×MîìÅxÍ’V€½7¦ŸÃÝÿýW}+mþUßÞ�H)T.¶flý5\%·MUv2Ä�öõE9M§eÝì Â+÷I`QÇ–á§ãª�ží{-ÓB’—!ÍÒ[rÞ×­`¶€#�.€±°+¸ð´NõuU^\ÊàÆ7 Ví¡�°ðoÉCÛd áî¬ÌgÄÈ’`‰¤X/_8Ø!Ù7\<ð6p›Q°âr F2šÌ�$ê‰_Lèsb@ß0ét½Ï§þOñŠ—ÿÈ.ë8xRïÀÞ |LãÃ/–×/³lvPTùÉIV}“ÖBʘ§@J¡ øì²Lõ±Î‰½àü†±5nTFaãABÂG짦 „u†úÌ–¾ˆ4•×ÏËtÒs�ö¼NBACš²>÷h Ìàë*«ñüÑÖ>ítá~‡ÅE¾{Ñ—]7Ÿ\@¥† ÇôE�Aya’1œyÖM’7ÉyZÓuÎOã›Q�`;nz À¸âÖDc¡Â\F!–<¡Â'ZŸ#aŸpKóÆ}\÷úE�µÜQÜZšÒÂ|9†-èI ªæÇ /Õ%2±èïÄa‡Pê=°³Ðk'?`6jŒƒîçõo£�0Eù�ÃèU=Œ� èBú Ã@†�…÷ÎØ}ÙËJi>p[Aª2 õ4ƒ³‚cºT77Ì“Sæ�jmJ“³nóß?üÁCÆÐ/ÂÖ´*å™.ô=ß#K¿�¡·‰=VéId•F¦¿z6â ÈûµG � Z!˜ûRLØŒiÁÑÔß2·Ñ„~ÛDé+D @ìXÆ&t áDQR¢´/~„êKEêÀPÂ=€�CŒÅ‚½!9ä UIµµ¡ÙÇ˾ʖåÈÀåò@ˆ<†ùZD]}C‹Hqõ|‡ Þ©+˜]—±Šv¨4¡Áꬅn†�&p¶ÏGÖñ¼«ûþ6å*‹Ù£E–V¯³b‚ !ûY1/;Å"/4ZO·¡{ž m¸§û'7À/ÓÕ°}òe}TtÉú†.,ˆNsíPªããô‚ņhi1b(…gëýü_+VI˜+·ZÚ§»ÞÁ(t»-Z»‰sºoÜÁK=ÿ(¹‰W¹ë ïÛô};}ç×TÖr½Ÿ|¯ HtÂ×Ož,êü&=©OCƒ;we%i}YL>À_ÙO%Z¨,àé½C À§H›\©ÿaHjýœîl´Ã”ÅÓ²Úz[%ß �Ñ¥3qeBÿ­èDË’ŠÖÙ²³[(7â*Ö9öc£fzÍ˳¢É*´kÛ~rfª“ÿ'IõhÓ™R¯Øýk�¶\uj«6{ÎáYù1»Ž $ù6‘Ç?‹M+3 WtÜH\ô�vÑ Žzs"ÁZŸ?×L7ÔÏkìF/R2n ·§§è5á³ktdÓ)6ªnÓïk�ƾc[L•i«²ý\ŤmÖp£Û¬Á/ÙÎÔ¾‡öñ¸!1˜CÝ”̺[ æZ©¡ïÅýÔÀ|íê´f.×C!Î)´›L~[Ì6T§k^Û|†í%H‡6ß‹:áÝÂâç©~qt¨Ñ·)êš?5ï›êž\/ç é,gîåèFRóT5/Í WšEÑÑ(YFÊ÷ÌÓ5ÓrJmLMOÀÆô„®Ïø«öwÛÝMž\¬ÊŠaø¦½.áGÚÐ-†¼ƒ¬ ¼Þc£ÂYrž7§Âf\š–P¸Z£Ã%[ºv|låmߟâ=K cä¬xYL²ºÙÚ À0Ä[õ×U6Ï/‚ÄU­ ,êX¾µÜÎ×F¤QE5�n$t íö©ŸÔØBe!Î[ä q™â¾!²ž¦@u¥£ìÇJ¤ñŒçØ^ì’2ÿfXGËD:y�Î�¤.C߈¡¡³“˜¡"ïfÈE…;¨7•H›³A/ÈêäÓjÓ‚�äñ–Q¤¿þÜ©ÿé– ÛZ…áîí°¿5g@uè!ÄTß¿ù!­—y‘ÝÜýRAO&‹2�MVdÆ5%#ƒŠÙKz”ðæ’®r×5m2É.š¬˜Ùw ³Qrì°ÄàØW&#û?výðBÑ ð™qƒc+‚5#;1™x7ø�š¸2k£”™^îØÝ#à5zò@*éyN‡Çè…7N&výkgD4�ý ß'¼½&;95¬€zZåÇÙnÞìg€Â ¯ÄwÓy“Ñå¸.Ó®Çi9Ë’tqž^ÖhÐayüÐÒm$û*.¾3N†o³l?qŒåÿ—½äê¥ø÷÷{wÿt÷�zZèr‹ 8l×f2ƒy�6ðû‰n^ÐÖÏa>à HôTŽ3žè C+* l¡Ñ{š,ò“ÓÆñwÆe˜R² &gA�ø࣠¿¶ƒQõÈðE´à$¡}Óè¢=*¼È_“ ¢…×âd2xßßZ5 »Ø�lÑ1cWtíû‚¢�=£7\˜})Äë‹C*¶ÕS_¨Q30^º<Î…Œ•&ÈÛ”ü±díŸe-ãóÓ 6äãÆrFÏ‹éGüVP€‘ôcö·Q ¼ðn$>�þ;W}D5ï'ÌŽ¹Íá@�xl×¢âƒqÅk‘y@fI '¯¼HØfŽUIÒ}"Hϱќm¾Ò)`ChØÙ�Ë“ßËqfBW ®›ò©üñ- šzE€aL‹øYr^³1/ÍEm9÷¥ÐÂVø” ÌQçðKòa½Ä­þR}JæÀª×†'  æÛ»{?¹Ñ63Î-îp›(…Wsv0þ�·OEA´vÔëPxN†»ï á ù†|!‘=zt+&)Z�±*!ãɬ(Wì3°@$A�s~®‹˜së"êdm=éü1‚6.^ ºä4î‘ Fö½þ,<Ö/Qι/ƒ �”…Þg®à@C½!>Âq-Þ#|€§¼,ƒþ.96šüÕ ]:Äe�GÜ1±# œüîDËãäîç9ð®®6Ñí�ÑP÷¾†Â[Y…h�7ÒÿK1íŒÑé�SÏóºAç÷£°žÑÞ <ˆ¾ez)ì~¥—¸l;+Îòª,P†Â „"=l±%ˆ‘Ž ]Mj¯ûE–’ådŠ­bÌ# »´›S ¯?%¬XœiFŸà¤�?„]�æVåâr­ÕcšÐŸÈèÔIæ´{Í`˘Ó)©Y\Ž8hÍÑÚã`0Þ¢›j¨[L De‚0±Û>Cæjç»7â/‚âHR/Ä„×Ã�ßë�I+ö ÊLò1¡UZûÂÁ.WY½^4>ˆŠkè –IáábêçV£n…Ø{ä&{•“ÕÅ¿ðqë¬�Å¢ïMö„ÑÖ·>š{ñ9’¬§ ò ;NºOD{{"Œ.8]×ßa×–l3*Ž.Ž8 €3|¶<úŠ=Ô¯ê@ ¹»ÓzQhÈg2ãå _ò¸òøís¥ÌÊL]©H—°B šŒõ–¼)à<)Î ï$kà…)褒&opaþ˜«ï냼Ä8M!S.0±•?-t' ‡º²£? —qT»Ø+Ú²Ftä1î„9©aZ.”¼qèFfŒÌó*]=CF îö6ÝCK`!¶8D1ÿ3‡~´ ÉÑhÇàk�–…7*×A#8x•ü(û¨|˜w‘í/·èüöÙù¢“¥Õ}8[Jã‡?øl]ê þý«šÌíæïîÏfþèPÜ¢2h4¥O‘¥4“Òh¸3^Â?�)&ȘîG�áŸÄP�˜ÀÏ/éîC€ˆ <ʼnR!¸ZQ“2¨¯O :¥Ý£óT©™´’ß¹ñÜÏ�Ç=ŠÙ#”^^_zK”4 Fõy¥ô$1))Vƒ»¹/»�ë03Œ=.Î¥÷4ƒpº@ïS29œË vt¶¶k¬E!Ýh§è.‰S¬0¯�JL§÷±ßi!.~9Ëšgb£ÓHD*3ç÷…X–¡9–KÖœgù®u®ÕZÿ¥Î·pwÉD0G/^÷—É]8ÛY|{?8ôD‰©ÎÞßÒ:{{ g„%…0ŒR—ê ˜ˆ�Õ╌{è¯~�ºE†0¹ÝgÎk¥dMs×Aͨ³/+V™Ÿ”…ùH;½Â a¾HOp§bÍy’7AÀ[¨[·ÞFK‡J½8B­žü±™¤ã>�ýÍ[»Ž<Ãß Y¥ƒD½òé7e'ƒkUݼ…WrÄwË|p^‚•ûê ‚r€ÐöÈ­RM-!�‰~§ò˜7¡ûtŸÞ�¥#æ{+�TdýЧؒó�æ1é“�-̓ûÒ<¸³õÁÛÕå«ã¸&—0³2 (ÆÉ \Å7c%ÝÜØ2ªœLç:fÕ—¬Udµ.tLa‰°«YSþ³Z ‚³ì%d¢[aҚʡ�<ÈœE˜ª¼ñ¢¢Úçî'ä�®>¼G{œ€A‚©H’“d5Ñv»Ä*yiÝzƒoç9ß)Å›�͈‹Òí¹O‹*öÆåv!j³;™ÑŸ[É×^àhŠÄ³>1æÛ•rv‰JÌTÝßIâQrL§IZ.²)�é/MиžVeQ®ë;GÙÖhÊü øXÍ·)êdóƒžE‚a´³( ü¬ò1„:ˆÃà(ž04¼Çs‡LŠÚ²šáí!”H1îqê_hAC"䜢K§Fk ’™ÈA!N�­WhÆ( ¤çºaÿz‹ gXøF©mmØEÏôWš,Ž%àß+ÓTÉ;¡õ.©L4‰fÂCs.8D?¥Ž?ëíY!»:Ds:†iøyüß:[goÖE�!cg¥ʃï°Y’Z™x& žpe÷ÔhhŒ=‰D›’MZE ½hußüÂë-›¶ï…íÑk0„2{¬¾¾(ÑXŠ¿žÜ07%ZMr.4}ôs¾ŒõÈ>F£e2 ð%PŠV:Y¥ïÞ""|¤%³9yDïAºb¨¬™øJbêÁŒF1ê8e#9ÚV:n¦ŒDDÎÕHFÁÞÍ aÔ Å•–pì6„vxè?MÏ2u®0g-اeUa@}ÂŽ1)Ë\sT�í¤ŒºQTiŒvПà#_2⤶gÆ�†Ö*'𻋂®p)«Rþ~`^µ/ Sç�‚¬Æ}¦îÐy²ß±�oÕ–Û$*y¥ApÆ!Ìx«+>¢DwR¯W¾ñ�2÷:"þûÈþ8µœ’î-ëN1‰“2>õvôZ nç…ˆê†75ŠE·-YD4Ü+tW•Ï€`yðJŠÈH-DÚ¨´GU;û>&ø¯ö¥íŒ®·F4ñ³BíƒÐKÕ„Y½ïܧt„’žu�U�Ê¢–ƒ;Ði¹`õ³Á“¼©³Å<†³áÝ''&P+“nï D\X‚D2û+©B.‘wºG1Âà¡4£ëîÒøx……mp ÑØÕHX¿à6w•({ÝHGp=£ åùüÃB;Q¶}Ì쉕ÝÐ|HÙ©¿ãÖ­ã·è±TiѬAøè´ ‘øpøpVƒ%�vzB7U­Úë�\°w>Ö(ñQ†õå3éã)ùÚOäó>€l+iòñ“§ß=?˜<{ñäÕ»ƒÉ³—OÞü×ÃçãèùH`\òE}$×(‰—”’†-Gµ,#iO8`uY(ív[ó9Š’*�›Œ³"T¸Övj¥*î8U›�ÐÕžI=®¢qé,mq»®JÛ•›± §· [o 㙪Yr2„Ý÷y•7ˆñN¸víÛ÷[bÞ…žöË�îdÝpÂ_ÂoÉÐW¯å¶F�b¦®;–x/Üf€%²„m‚d)ºí4ïÈÝÆ‡<÷¹%iȱÄw]^ø²`^?:ͳWó‡–Ã]$äë9”Í’áw‘³>81Üú}K³ØêÅî„Ù|"©%ð “ŒÀ 8‚GŸm‰Ý©ŒäÔrÝß™Œê޵ö)Â�e‚Î:”ž!9‹JÔ{‘ J¨8Ö¨^@cí ;ËÏòÙ:]�dHþ@Ÿ5 @ʬ�`�”q±Ìj3… ÚL7U™NQâ$“5Ò;†Pn7܉')žT|K ø–Àžø Ýó¥ë`V&Sœ�€?(«¬AT ãP@Ë1 ²UØ—f†EÅp‡ÕHœ¯Œp (8Φ)f3'u—–G±%¶¹·$hÌ8dhµen ]ì�Y=MW܈.GY¼‚8ÑüMtLŸR1ß$3ô.9RH:2@ú³—Î|!1]í8;MÏò’.*(ž‚„í÷.~†…`ç‰ÅšwÏÞÞ¥D¸�˜™¡I!m³8μp4ÇíÔHº�rà‹†<„甉”!Ÿ3³“œ2jG3Ìeìóî9J�É(Å­Û’%§ 6 ˜êÓr#uËÐßqúVZÍå D·Z¤ÏÃæ©p¬�Y• )ŠmB•H¦Ç$¦n_K¢Æ�QTJȰ®E$ó£ý‹…Eö$¦ð0ÍÓLb�ü²åd(15ÌÕð±XB‹ZEì³°î©9Šz2²÷\©‚jݨyß§�xÇOf€ÏF'7!LDši|-¾ß‚#¢éW‚*ÇO;ÃzZM9ŽP<¼È115åã^$‰Bâ~ ؼ¿J¤$&Œ‚Cðïý…M±áï;+Rþß2’³½?Ž˜œù–©©Ò¢ÆÃÉ¢<ɧ&¼é)TN”À΃ðäÎ ÿmj6……Lx¤tÇåÈëé4­fèé9Ke�ô˜Íéå2ÿ˜e»�†e®Ì{w÷îš�ü Ž…T\”Õ`ŸËjLÆœÀûgë)÷ö«ãô8[ì®듼¸£pq‡”úwšòŽÈÙ\Vf¼ÌñÈ‘e3>|Jt°›èÕßMÏÓ¼9Jê÷:iBlà<›™`Ѿ^dÿEAæÉ[ÛÞˆ›%ß–Tæ„©*¼@‰ÛíJ¤ŸÚL×q„�­W¦\`òé6ªLð¦ùbM&|ô~]§vÆ¢¬PUYwŽ.@�úǶ¿þ#nœÄÀw¢_ôƒÍ¨lá6¼‚C6 ü±u�‘@`/äW8´G<²‡}?R•eŸÊNA–o1R .¥,nÌW³Ð*žX¼æW)$hŒò4ÅØF—â>Qy¶@_ŸzG×^÷œ/ûÙ`.”ÎXExšˆ LQáãëpŠ šbÙÆáST6â7až=¿fGåx6 Ó'‰�`Y/©Fã¦$ý¢;¤qä\‚ðI{ã'Œ#Cù»9FLâck®�–{™„mbi#ïÅ»äüÛ ?Ãöa#Òk]Ë×E�Û™ª�Œø“Ù^Áä°ƒ�®ƒˆúPÜ€´‡i_/«¾«Ìî�c…DöD+m…ÔMS¢ˆÒÄI¡\(ê³þêdP5?-m(ø<¼”1Î�N›9Þ k´é°‘Úh²™ìG+c‡<ÎNh£ˆ·`UýH{ªˆpVtÝ£M‰‚d{C™åµ²wlÑó�hhµ›P¤Al{$f×t¶BDÛAÍš‡ë5‹”û|¦‘ø\Õ<Ÿ>öìöÕ™E¼úGTÊ[E,Ѿ¦—µ0>0óïVè&H+WX¢MgTø^c½´vÊJ•86éôYñÝ)G£SyS�aü-À+¥Ã˜¤EE†cEÛ-Uê�ùʨráW D‹�ÖÉ.è�¯�ðlÿºÖŽ8q|ÑŸdõt©Ü•Ù”³Ò× áÛöU—7ÞzË›`1w�…Šá2ê� ¶Aüqý{ùþÜ—o(’øð®¹Rþ‡í]šé)‚a‰ÒD©óiHG#<ŸÂy «<}ŸNù›w6•¯Ã'Sº_Ë8æ6‰ÆBῸÔB2¼°É¶a¢aAQÏkÉI�è¢äqÍÑXÄüܸáÁm[ÞøÉªBäç6†%1@®M»x�Ì7‰¼,jl½F»ÙZ+¸ EÈQ {ìó‚Òzmî}‰�²èU�ƒ*fc'Ã6"íÑ<[ª„¹:ÏGÂHu3® A[4e¯L§?U^E's¥œµê5Y˜ÈKÉñyJh�â‰k¢�!Ø/„\’ƒ ‘�Ö_X×ñ2;K‹vLjç–-悉´ØñWX�qý°ö¹#© \ ÒÏ04†Ð[?áÐÀNdF-%Ñpg„ŽI@cE‘wØV€ ¦¥Æ( Mê5ÁVŸsv{ëãZæÒÚ ~øÁá(½"Q\uB `X»ûB¡eÆßd”LÎøºðæœf»ï4jh?�iŒôâókšG˜4k ç‘rhÁÛG¼iÉi�O¨ò-�l¯ÙµÚøœ³û™ÂÈCÈá–¼1»ïó­EÐ¥ÉüEì 'AÊ:¹VÊhæßÔe�É#2M›ùáýÜ( d8þc”f*$޹cŒ8z'þ2)žX®(R½f„yhÃF7"ÂþaÈÆàT²—uúuU�j½rÌÕ`Š•Y´ˆÕ(»m@VùˆÙÁH›ð§2膹¸»“}$Tf€Xú†~]eóü"º²mȬ‘•h6C–æúg¤ÆDD¡M£êv…´o¡:'¥:¥rk-�×o/�ˆ*‘RÙEN7.O +ìíKöB5`¨.ŸÊ k- tÕª†· ¯‹*«ËÅY6{tšâ ÌkŽ¡Hws¤e ׫׫UY5ߦyó.¢HDPd�šÄG*. k­I,RÝH„{?ù>ø÷˜û6 dë?‚ K™DóÚ˜ ßAš‘iÚ”qÞp Ƒױ †Û©«TŠÒN øÒ¥�mýœØkþÙü1“åU£Ò£>ýÕÁ“ýä ›žO‡c)•Å7i�‹ú(™Ráy^¡¾ý„�$IËŽ¡_Mž.ÌÈ\¡V¦œ‰| „þŒi�­––9† eÃ$ì¶pÖ£¨Ã9~XažõY’@0·ŠŒ\K ·¥ÎÚz¼§�Êè H!~ÓíN`Ýà 8`4ŒüØp8[U\xÀ°l(Äd3‡WLD>ß\f‰$¿Æd¶~ˆJg?üìÓ°÷&.Óýtn›pjŒzÁìÊ¥Íá�qò Ê_–ÔJ¦!©#Yä颗/þâQ°§mÁóBLÑÅEl1Á$gcLFAîúHMµÈ·„‡8Ap¼ÝZ)W@ør×Y�ßë¶sÒF:7]OhŠP&AÑfòÆpÒBC“µ:‡ÙC±¹]W¦– D£änìÚwÓøûmBÙä:†íÐS@ÅÂ(Þè»~Úo}ú,}Ò”»)^ø’t x4±c l¬Ï�¢¡Þz2ÖÅë_ÆtÄ:��`…è”KÇz,|­ÓRoÅŽŒÜÀši*:’ÑSF"cÀˆ8glºðÛasxúóaÄLüG%ac¹ܰG﯀ÅG¸¿¸%ïâkª†±}I›Ã;(Êä)(NJâJDz¶e‰d,ª¢Q Qy‘Ê8Z.äù5.Æ‘N¤¯¿~X/òlYíì ?VP, ‚KBìÜÈ#à©“ª>ÁÉ3g¥ tWúÀD)¤D†î¼j.½÷k Ó‹¹e†ÏÓçùë´®1·ãˆM?Í¡ê¬WØÏ¢¤\x˜IUqž]q–Þå™qÕ}–¶E�œt K?vI_Jòä¿5õ†– ¦Þ[WÓ wÕb†¥Ln%_Wí,[ïCÇñ›)geÄãɈ_‚n�™>]Ÿã%Ð"Ö}> ÊEÅ›'’¦ì€Ì•&@ÛHä(ÍQKሮ�x±:1P–f�Ît ~Þÿ2ù?~ƒ�V¯eNAR®˜]ŽÁwn©û5€çÓÍ —ÄÇø§–‰# U5žèSqþ>Öªòá¹]ä@~XVz@ja‡§K«qýKõ„³ÔîëÅÖzýK B*ºþŽUW�«¿!µ�Ï·giÑ›]@íóŒ·)‘˜R¤ÝqÑUViÕä�†â÷CüãTw|è÷%|ªax­üÒ¼±¶¥Ž\-†Ya%Í-ϦÊON²Ê¹5Ö¢æ[Ám­‘np Bʳ�š:|#T`|~#¬ÍdÉ%HÈ ]iî'ª<ð:¨Œš’ýd<êÎC,/Ü×·¥RÌÐ? /DW ³4]¤'Ÿ5D¯Ó²<ç[AÂJ°�v%µgð|!Ðó|šq C}�æO!ð¤ù¯KÎÿÉYë âX GlÖ„""/Õ¤"3iƒAdau¼€.|uí Â5—˘EâÄ>ù·Ÿ9B6L¨�9õÝT"ÉI[’n6�4:�ô³ $l–îñSÃȲ:› OoKé�xT{"M:lM©]ÆòãÜ1‡I¹²Q½ÈÄOB2Q7^SI•QM©G`Nasj¤›(Û[˜ÀˆVk ØŽ;lº¬�D–›Œ÷q¤@g…‡°åYyÎÇl#Í+Jâ ÞqQtí¤÷PLXQq WmâÞž¢é®íe£uÒJ}[¥«Z•uHd8=¼7ˆ#2 ^B×·ô“ا•È­®üù4ŽEM€âpœ£[3íïØDn›eÙ¤hbÌ0ŸjÿÁ=å´÷žo¿ÉW¸çÙ ÊT^e¾šGÊú»‘a9™]dç°+géJ+°äû9ðµ Ò ‡†m™²ŽçÍ%rkqÙí¾‘ëËbq«,_–�è3NT…®ÓªaJ%›ÕY[§ˆ"/½Eé’š#�æ�/fläåCò¶¢«œUÍj j˜ó¯d2_Ì´+|øå¿<šòƒÜËŠ’h£­5Œ×€º> a¾Úº^/ÙA4|¤Ág0í ™^™åIZ¶*µböq�h ð‰4‰».8>-‹kÿª­{£[í&¸†s2”d%}MŽŸ­‰³¨B×'±1ÔîûØèVö²12ðÑía+›6¼¿l3fªz%ý”GÊÏTéöEÞwJŒÇ»XËÒw›œÀȰ‡Û—̃E;�0¥šF¾Ã.ÇŠ5õà6Èàái6\^>-`>P}#¶Ç5òÊù7]×ÀÂ5@Oyý̦wÂÇvS:FÐãlrI›pTÐõ–”t0h §‹ký§ê«ß¬J)¿É(a†š¢Õ„6f~}ìêÈ4Õ�w(I&l\íùðaèÌêR/żÃ;òi¶ÀäãÇëFØH �ܼ„†Çh|œØÁk w�÷$8^–ë*ÉŠ³–)]$äÅt±že,ŒŒ?Ô";|½+’“¤ÑÆ,¶ˆÝ"ñÙ†%ˆ>»¥Ÿ)êÈ´k®7Êk×/Ã=ôØ�çTÍkäE~X&GçM'_íB —놢Ƕ˜ƒJ6"5€‰ê´©R\!6Ž2 ´—¸Š´O„µX{ÊU7¿º¥—º½o�Éwøá0˜ì,‡ Gj “€‹üæ"I'™äSY;*3Š�‘I>à‘Ñi@…ûŒ˜˜Ã¦êwéÓÑcàãùÙƒÄ#»ÙÇq£Qb„æ–%dH ÍäÍÀ·´6ê‚è*ͨé¤dˆ ,†¶ÊÉ0·¯©ƒÁŒ\v¨ïs4@@+áøp¶Á¦�Ù©/6»ˆ¶¢Ä;ÃpR7==&SÅôr””+Š¿êŒø5'–Ôf%øà^¿ÔŽš×reì³<+Fë¨nù’ä·§Y«´Õ™í'wöZáéu) …Î >k0´±ÏPØ%Ç åü5¹›<À‹rtÁ{6»};Ù7>‡ACtf�·yZ‚,êY�º1u]^;E•-Ó½„{pì ÈxOÈVÐÝ¢å#úº/ÿˆO�BP¸Ò:e⑈#±1X޳/ȶ“ÐÔD¨wR�,àSQØ^Ï£©±Ýè¤sw¯0Í“œÃ^1:h«÷‰‚ºr,×�`ÐÛUB½–dŒ¬,‘%‡3–Ëä¯HùºMq g‘ˆ!NÏšàè랆ù(¹;JZP.˜·Z ólöX�_f’u£Ö˜˜�Ã:x1ŠÍ»í|jao‘ùÁ¡8܇ž˜Ük¹ñ½ÂöFòÃÅ¢s3î)#÷t¶‰ÍDªðÌmÚ�YÇjä’š Ÿ‘ù«¸8€�H#Âç|4°àWÉÞ1ÏÁø0€<±öÕ aw|š³‚*Y`@tòÐ qqÉ;äLFôpwNRmÁ؃çVí¢£Rt'­›´jÚ¶õ°,ÀÖšÂö9¸Ôµw’½Ë¤ò”ºMƒQlóŽîRxv·¢‹rø@¶íp‡zäKdWá-‹ü`:„&†F3Òƒ:SÅΠF÷ñÌxü!›6c)ó¢JršÕõËì\[�¾5ƒ±ì“Ñh÷Šš*©®� p5CÓ<Œ¶ù2¢ ÂÇ�ô0¾†Í²î¶ˆwz%+¹®�HÃ¥ ]‚œ¤‰'óîš.AøÎ<ø¹µ|6’0ðé°gÃ,8.¼ÈXF "凕¼aoÔ\ÄœÒ�ÇœGï¬�oÊdâRûi>�^ãáÃ>—›¬Ë.‹A1g‘mk ;qvñj>T�î`‚Dp_F.ZܧU´œ]´ —ø´DL‰~ñ·‘ž[½Ýk_#ª°$×BûL¶3(ùFnóŽ;˜­L<Ù»­9£ÜDzHñâöBš°ë�‘Ãtò 9 võ}²oÔnÉž&±sƒ{Ô…X¯ïŠiºÆ yÙÅ4[Iƒysß ­â·M¹ 2¢øòŧ…ß´#YÆ`× ²†¾”|?Y ž-œ>Ñoi6#  n#‘ròbèj-œ$’QŒÂ?"‡é«� -Ñ�›u>ïÁHZ4"îchH6?K‡Úut%=µ$îsMZ÷é Wó‰Ónÿ[ê[¬F6· ï!¡mÍôcÌ^‰@aá´—ô¹=SßXWÎìl»êF»Üuø�Và#t �•ù+9ýcGÛÎþm˜ëR HØí �^çZº2i W£FÕàÆº":‹Æù2G+zü Ôù-G5¤<ªã(Ä»ä^PÙ@G³ §¶óM8¾÷Ô•~мöÍ rUõ¡þ–£‰ÿeY¨&R{¶ÔwÞLüü›Gàó æ?úª7è3ÄâttE$wêIb‹‡£šœ¶ùhÑçà۷㊓©ƒNhh¿tq\K˜—¢Y.D¦Fê‡äÙ…9b9§x÷ü#ì?"ŸÇ£'�ˬf÷‘i9#G4ô¦+9š±Ð[>ˆ% KdèøIý%;Т,î¨[“E‰`Î%jã=8õ‚¼õÑY–Biæž@w¤�÷jwEÎqfyž/¹Æ9D„q“ æ…nÓ·ÑGV¼ ž‰acñ#Gȧ{ÄgcE—­Ü kZÚNWR“t¨HÚ$ý”#xò§¸lt�æøâi¥C|ƒtKa“¥ù²„Ã7™áDA^‹®%>®Ž¥EÃÒ¦!é©ù15#W¼«¿–­HQ;’þ¥(E>*¦5NnDh°ÁvCtwª[µL¥qþƒöË[Ùž! u–“[Aг^�+a²cqRè¸íëåH×=ÊÇ%nkz@è,™ÜQ(÷UL  )ƒ] àX#Gø†‹!g‘aÏZrñLÖbA ϪR·ZTZæ48ŒOËj¶µç+G›/ˆvæÈ}ŸîÌ{ä¦ã [þw¤ä‘)�<ëþ^i�ÐPdV‰ˆÜô æØ®È,T¬¡0Œs{MbÿB %(KÅ<ýáÅ—ø” ƒvä9fR ‡Žº$íVôÀ:ˆ%"²FöB[ ̵sÔ´~'Qø ?“I¦ºc›÷ö I:’Xx"öÍêLÅŽ;ÖñhĶ©HI¤Ó)�D=²ç!I¹õÆ‹™ø¨xXÌžzºöXã >Up²{Glèö 4’b·ÉÊfm"ŒÖ&"£¼å……¯ÛõëØÌá$ÇøAª2þÞDÜšŽ\Õ!OM<>¬‰‡|9Ö´ð[ïMô\`ˆx®�Üh§Aù„êZ#ØêbU%D6Æ6D'«’R}P#ÑÊ­lz¡ª÷Š+´¨pn]Wqk< Û`�j^ wÑCí!¨¢‰�ºn;Çÿ%{FJO¹¤”®Ãa ‹…¥»i•~ÃLdÂ&’2ƒŠq¦¥ {±ü¤Û4¼ú'3 :¯KK¨¾ðàò_&wö¢ü–!É;!,¾à¿·œñý¢?æøX¯‰GvÏ�à3–ÔD“p=Óm`!äÿäí¹tÀ>žŸC´„XKŽpÔ+�ÉJ8á³-\†ÒW("º|4ߊ­&ÉRP¿8eâ3qd|ÏíÆÁØ÷ÂÝA`ÎpX@î0"oŠ|6 9¯°…aÿ€ÊW£„Y%üìÖ…=�Ÿg}hWUoUw*9±œÊ,"ŒŠÏÎ X½åÌsXcüO ¥^3Ù×P«×YÃ6Dý§ZPj)á5ÇÌ[izÛ§-Á®§ÇªCZú$ì|Ÿ(eßfC MÌy$u6<ó“þ²3<ÜÜ5qø¹!ñjؘµÖó‘Å£ÙG'L‡±uá:ŽmJ¡¦Ës�õÚc‘õÞ{Ü9iõfñѲÅZ”®Ú[TTX™™:=±Xbw?RV$Õ‚AÌ(v4l-G‹%Ñ ´í Ç8ªWñ»ÚYÃ2`nzLÉOJe,Ö&½!²G!¡€ÖW@Ø–ÓØ=ê¸á5½VßM7¸Þ[„ø¢¾Î%$íkYýöÉy-Sp¥çò8 à€´,}Ò4gBê‰T6Ï 23h§ÞR^]¸E“‘÷ÒÆRàX,s%t]5H€žVR‡§y�®]%~€Õ³Ž0*›u¬;nðÍE{´ƒá„ iWEávA(´m‡B©‚ï¥f½q#¦žå5j¢…!£ÈÄï[Ž|™µç2MõDj¶N¬¦L„›ÃŽW.3Î#ѧ¢‘ò™ý‰87–a4ÌÔY>‹ÂH á:ŽeaOeå=Ç©(r?¦ˆ¨\žÉYFÁ%ñr ~ï¼Y.1'„7àô‡2PËHT$\±nTüÊ~p1/V‘ü”7Тš­æQÌ�ûh· •–Ô"Bµ�§‹Ž)Áb¤¾L/C)«I•­éT$2$ÖÃÆ„—õ“¶bZ[-Qaï%º1xsgNƵhâ4l0#|ç@úBõ¶}PcëHïUk[á¥teóíf ÔŒnåŒE¾îŒ!8úÕ»‡ãW·^_³Ú—šÚúùãûWÂá|U»Ùʼnuq-]�Üfw,ó+ö½%ÀfÝT#  n `zZÛ –ö^×±¦¸/í´ î³J»¯¡£æ=.Ã\ÑMOQÛ´„ÕTîiäFç…6òC'°�3õ¡½Ÿ ŽÀ�Hx?>¡´âðH#ziÚï¶› >�}QSÝ—A«‰]ÔILº• æ™Ï´Ã¦Ž¬[¬/Õõ½áÄ �”-Y+å3ÙtÒñ鼇ÂDz–×F=,åqJô°¤ÒÇÑj›¬Ê™&´ú¥L©ßDÌ?¹z5™\qs¾ºóÓçe@¤r[¤«: ]Àöÿ>Bi"Ærõ9ÛÖKò'Ÿ.¯ãqç³_üL©Ø_�)ºæÉñ”çQ—°ÉMÃU,h7×9^9>™ *ÞöÙs�èe]]- y ±IÖ`á�ã ¥>Ïñø6ä àG}´Ð¤×H~G„�aóHPgi“R‚mùƒ¶•ð…F¸gKRÌÀ…qrÉ•]£4!•ö/¤‰J _KeÀÔ®ŽçYòC¬ q�î=qÁsH)‚U¯)ºå6¸ªSíQ°2jXúŽcA„â�Z#›À%*žIã3…ééñ³YÀJÛmH$ÎÃöLϪA±^g%ó4¿}é´x;iµ’�‡ƒöý ÐûÍ´�e›¸6Þ¥ûÍöÑp@Wö^£ÉáØªjà|ûj ¿½/ÛýØâÏñÁn[R,ñ´{‰[\£.×Õ´3º׊ÅèòQã=p¦øg3R¾ ¾«@ ͉0k‘ýËàý¨�ÐŒâ8MXú^[ÊÇxô†ül¹Ìf9êŽ?× ïn:ƽk£P�^Ç%¬Ÿ÷Äþ÷‹çß4ÍJXS�k�Hú ÞuŸ™`(/Ýó¦æðh"£pÊ(¥ò'¢½äÝ›çûÑlw-(_W‹Áû<ðƒŽÂCäšçÙñǼ Ú™õª¿,¿Û¦2>”ˆ“4PêŽ�Üñ¥Lj¤ãàD{N–-ÖýF+Ã?ßåd£5ïOڸDz|¶[ß{¶è_t?·¿ë!úY6O׋¦× (-á�Åy�Ô΂ڗKu­]¯W”ýø’>EŸ&\G¬Î:¤:±+I´Cg/ìOì¾Þ�8ÒÇÚU7 ‚…I1 ýœéî~H€ÄÙ Ám²§E·½ä�xw¸‡áåzÄþ’À¥8&Ä7gÜcëóƒöÏû¢ýgË  6dÛ$´ÐŽ2¶SGdš`Þ"a >Òô–›0Ó5ñÓƒò¼FÍà ±KÁÐÓž Ÿ ­Í°Œ»ÚJi¿~%³ý,è ²Îí±Û1=CÅuó$ƒwS ƒoê¸yáJ$ $¦DïT¼3�ǃì �åÚ�B9-ÕÊ<« -�ÄÆç”xwE½Ê#ò›¹v­Jûù¨ç¹hs‰l[Ilk ÌGa� ƒ 7–wsƒ…ߢÍ`{6Ù)Ù|F‰fIæz%˜-$ì€Ä¦)³˜8nç„bÆâ;9È ¡é”ðw"aÐÍ'@€ªú6,Q棔ÜlªØD/»Ò-pY<£¬//’Ü(¡{½ƒSÊœˆ’º)‰³!4 Oü†6D1ŒñV<ܰ§½îÑo뾎ñàXµú†¶Gñ¾]ÍÀ_ж'rdçÙ<¬…Ìxöžö1K±ã¶×7gR„£¹àZó&¹ü„)ˆtØ=U”aÆ´ÝTð|¬n̾!Þ%+4pv{¬òØe øR2þ;šfÜwݸgˆ8%Á ¡dÅ)6.ì0ÈL�bdùÉÉѧ‚Ð%í(TÐî“ Ú[ɛЂ?É|p(9“Í2°çšöêãLyƒ‘r‡ãã˜ÀT4è:ô;5u?Ø—ÃH”i¿éø§y¥rëyð6¥¤¬*t›"^£�—«³ÅÜ+E/¡Œ�A8,Êt6!¶6¤P=t˜©åe ¦€t•›óßX‹bÊ@ó­Ðs¢Zj{m¦)÷îN�\â¾UÅ„ûÉêì$–ðØ^b»·né&o%�P ¨:qbXÓS Í™yrúN6JY½jV>(‰‚TNUèˆ�`àõ#³†Yù«ì¿”‹Û¸?¼µëã�ö…f¾T$æc ´¨Ã%]›Ýö¼Ì=ñM8§˜OE9ËÆjB#êVÏ1BÓ%ièJÕšg¬À"4ÉûÊž JshÎ’±b3��ùo…�Âk�7ñb÷lÒ÷§á|[¥«Õïr’"†ì"›®'׎l´oB¸c†�ÁœË´X“°¢€sÆ"ð‘gËr4²¡±5:Aªµ-æ(9"È�#¥Oá8[©QˆN!é %OvbôZƒV–u©È³ ¬,TÛ¼Š0­fÉG%zFd‰§Â%ÊÄ÷¤Ò(bÍ=b½®Ù¯èPxE©c5ÿ{ØRtÙ�ø–}_e»‚&w›zglBÈ75Ù ô÷þà8­óéàSl-ÓÖ�Ì ë%s³:90ð@ƒXñx:ÉåêœCÁνÃf,yÑÜ«Bõ’IÏ+\ÕÅdkÐÉÙ#^@Q„®:wÔsVæù§E§¥LGü«ëˆ}Õ?îU8ž„Í—îØIØì†Uªw´4‡ ÖäV‡HGáI®[À%’lrš-ðn鶯)YĈ|gór]ÌÆ­·ƒ×°õÕß+Öë*c!‰gÅYœQ”9]¬gÀ4H^ûPï®ë£vWØÑî¨l�+�Ö8]†Æhïu½‘­×‡`($ $rй~#Œ‘�€‡–¼Íqë !~Zí¿É›Õ,ä#êô^§Db7ÖbØ×‰Ô8rå9 ñpìÖ-‚ w_É�è._hÁq�]Á@"“æZE9ùÄÉÆ…Šù×°¦ý~äJ�íÚµ5øÄqæMÉF-ÇåçH�‹nS||ܵqóæöÒiÚlÓØ(¹™ÜÜé0è¸i Ö;µZHqúæ5#çGAЇŒön4DqòŠ¿ºV1t\ÛP÷kˆPã¼V°‚×¶Jñ¢ª„Ž/J ›œ8� žÄãSÞþ5Ê {ïÜá�óžàóÓ¢ ÍOx =Nšo{Û”Œ(ŽcÁAÅŽL¦CT-<¢`س*™e&ÏvgæÀÈñ|Ä3CþSœBφvB³©Ó´æ@„òøós9Æõ?XYn…ùI­¿$É&âS¿…[&ETó!»1ñB%Âqà#+ßv‘äh]¡ýø¤š_šÐ‰•ï^jûî­ Ø0y, 3[®šË1Q4/> ß³tÁôÌŽ8X2È«Ídçè$tN<‚TSL¬ì^Õç±`™^à©?ª �ZÎ]-¡b4.Ñ­kP²—™ìJDË#§r�iœ×Ó´‚µ¬R'—Ñ‚YÍ_}T3nFÉF,_:ƒCéü;½ñDisðïZ¥¯MÊ£`EñÆA¤M=šáepMT`Šân‚�6‹ðz(¤›OWù˜ ítƒ�÷É}«±ïbÑ~àÝÈíö¾ûb$„ýà[võÞ§ÿ ÈÞHóš}ƒí9 óÔƒ %F®¦í–ÌÁ7Xc×fYDv¸ É xô•æ|£€WL)ëIÁ�cQ‚U¾BÑ"!°«‘ú ,n8 åχº,P!š(ä FJ=tÿK9Û·à?‚Dׇtª³¾& j¸®€õÑ`íOXØUQNíM]À\ù óý'óç'ØmN³b8¤ßdõzÑømAK@šb|Ëá–SŒ¬nH™ŒËbÚ$-'ç)f/+§vaDJ3ÚˆQÉ1’iëIÏSW]ÕSÀ¹I‘K$•G �¯ƒÆæ˜ôŸ¼\Wu+ž¥9R¬£�îëx)¾m8Б¹8k|g ®XüÝË7OÞ¾zþ_O{·6Úkº¬}WÀ4”‹3r’5¯œÏû.–#’ Ê3£\ ²@ºþ˜e+Ô=S(JÓ�ÍCÉ·Œ´`Gþ¸Öý˜ž²\*fÖ<4Ëðv—®�pjÞ95�5ù:PŸC›É–v« ¯P.¼f�Äj³ª6ÀLñvH¹CŽ­B%v9¹Òÿ˜ó¥‰ ŸŽ¶Z€Bäâ—G UPf®±ç &C|xZVŠOk ”n°e• [2äà ñ‹zYMPº`â´m÷�[õA—vˆÑn)B°}.3äüÝ—t•g|Ñâ;~h,cŽ>¦jK0:›œ‘éÅöW¡»—^‡õ^u9dkR’À%´ìõ#F¥˜ŒGm9 ñ˜? ó­÷­&ïXìˆf¢F;ÆŸ¡E¸.^w.ÃuÑg!œÃàÜ{JŠ6G[ÐO°V£«EÔñQ¾ÙŠ]lSëâÜE9Pí÷ÿPKÒV1]kŽ@ÉV1‘IZimunify-security/assets/ui-app/assets/static/shared-dependencies/chips.min.5c60e889dcb4.jsUT ëÆ«jëÆ«jux è‡Ô=‹vÛ8®¿âêìvåÊc§é´co7MœÙìäÑMÒÎ�ÍÍñÊm³‘%�$;Iÿû_õô3m��NêsmâZÄŠ´ÎÌ jÂÈB&r‘‡d£1r��B4ASÔG34BC4@�è= tˆîP]¡#t€.Ñ1:C_Ð5úŒ.ÐtŠÞ£OèýÙ p4 Üyˆ#à'lߨ D]Ò`jÀï=ÏÁ¦û! ‚ˆHÃvp~rvp}rqÞ?»8úxÚë_ÿñ¡—³ìÄýŒYõw‡]dv "�#ÐÆF€]øÓ¹0¦7ÃnÔ›Ê ò �H˜Coâ{.ôÂõ'‚ï{®eú!ˆ—R ýc�6>§y�ñèz.|Ú`:py�„Ó3„nèÇıLQ\L#ÊGºK�ã×pôï)OÁŒ‘ ¿@£÷f`_â!^a‡þu>:ó쩃Ó"ôÑÅádzÞù5r@~—Í ¬µ<„Þ y îµ98qmü€&²åÐs¼MåÏ#š_ßw0êgšm4ƒ–33âý§žiƒhG´íàºyòá(ð×Ó‹÷§ý‹T«Wh(qô‚À ®"�$Ç�TCqà´Æ€ëžãW§‚TšEÓ;t‡tìYÓð7üxfºæi ;¸š˜ô(O8eð\AsdÞat$.>ºqÐü #3ˆ~'Ñ]Ò_÷Ø=3ýôøc:¥óëÞ%:£Ä>öиzpøÿuMõÖ;í]÷Ðg¸¼>x�.àï±¼,æØO#ýÐ%é†SpþkÿÓÁéÇ^ÿàð°wuuq‰ÞCë'Ó!6ó6èSvÔ9â18�cê3¨YžƒþÊ;¾¸<ëŸôN�YÜ"ü€-0ívŒ¢>——µ_u‚¢ú¼õ’¼|©›�ÿ�6÷Þ¼æbOÀد¨´ô&ÒBß÷ù¦ŽÒ`~à‰å¬·P+Û+�ô\[¯×1Ù¯Köm%Ù½j²l Qí·î�öƒ†nn4p»†5&¾aÎL .÷F· ͰšýÞˆ4íö6 žƒ8Äf]â‰7ÃlPªýZŒ9±ØÞ(oÑ?9#Y6Pí&ÅÁ­ ’¢�nRToãß*µ[í¶Ëûãnå]¦fŽdO"ù% æš ]¾úô«^‰ãà˜�4Ôj–€éûHóÍh •FGÿU ï÷uÑÊÙÖú–÷ŸîßÛ2ðÌs¦t Ó)*hë÷-ì8Å=&£9·IÐc›¸ il üÐ_1r ‘Tض€:øËsß ýÕ0Ýg¸31Œ{bGãv«ÙükÑ osðŒm¨Ø[äçɨΓÑ8âב緛£v³Ý TЕc0 ?€¨/xœS††Žwo<´Çͱ[5H.£9[»UkÖÌiä�ìäeÛ˜ÖÝ(ð¦®Ýv!ôè ¼öNyý`„ä Ðh[b˜$æM# ñû¦mSÔÍN„"ÃÆº2½ðn‹€v_UÍŠŠ‡@Àä!Ð\ðW& ðeÔP�µ-�æbž4BÆÜ2vÖÒ¦ë3oÚS{FBL­D¿=À¸á¹¢E®\®D¡MKÙ<·öNÌ‚9)ÐV^ b�(«ç‹Ah×nË=ò¦Öx¼�ˆkÐÁoý‡Žø9ð¢È›Ð–ÊÉqyö(¶×Éúݧ˜Å\ÖV˜nH'mv¢Åè ªSdVé˜ìÌïǰf æíaæ÷�éwà(!ø+ ౢ`…?$a¢º*Æ1±ŠÖç:«+MªPeyÛZÁ{@lÝ�žî ï�PHôHå+TÀÄþºØáBdteC‘^ƒíz9ºciè,ލ×*%Ë�´Ì�Ëù‰7œÇ[6ööx#8žu·lÝêçp †£Ø°öÀZEƒm†c3×Þ/�7o_½zõöµÚç ‡p´Íw¶Áëô_  7¯·_1«2³¾¥¾ÙÚRw&¨¯ÍP¥Y¯¤µbÛ«]Õv7ÔëšÖŒíU4R¹É-C•‘e¹Hâ ¡$.\‘L¹þq‡‡=�× ð³èh> ¼‰Âhh™ݾM¸kì/"/ÒRÙ/柈S÷í2J½cÊÔ—Læ�D|. WÀu¢Èé°jbÉ h•/Er&lŸÖŒ,$=32(Í02]Û lžg™À´É4lÏÌ@7ã‡FÆ&ìM¢�M ¨º<”Bóþz§ÕМç±Í‚DlWA ÖZ?ûµôê(æ xÖLþµŒPéIqŸÒIý±l8ù‚Û{o à˜¿`0˜? i¤xõ,;¾‘¶Ö¢Szø}fºiZIn‰ÚÊèn|ŒÊŸ‘æ 7"¬Œ�¯8ЬÀ3ØÁz2’lñê+#ÑY‹¡Î”Émt»)”ËSf„êóä˜hð4U†$O1b[±0·–ŠãÔÊÔ䈭ÈJ{øF<[�’‹az¾1C” –BÕ;,eRlu ¬UaFÊÅàî—!¿xv?šå�h&®|l’Ö€laŸKeX¨2…‡Í�u3Ò±‘lÅÃJ–û•\e³¨p‡é]·Êf!«Ý`z×&–ž_¡$3lìÚÒÖâ ÖêrV6IrHZÂL¼?‹\VfãkÈ„+)¾ßQÎQêNqæ×óXÎÚLÅòZƒ»•"XãgcêC‡CIPÃgMòÙð�m£m"éXËfêmÆÁ*ô•d‹aOÅ]>zÖŒ�ÖA3̔كË}„�S*"Uå�\åfæR„\CÛ0°‚,“e'œý^ÎX"éß\ó(•±PyÛîmŒ‘]&ÀÚgµì Lq‡Ö`wtZô&…lá÷ÔhÓâÆ&A7ˆœÛÚ¤¶1И�Õø]Ãa¤PâS}ÂIqðsŽ�ŸW�×n8)èn�—H¼x¾ÏÂH¥¥671ÓÝ2ô<âߨð›kk!ÞÍ8Íj~’'T>ÞæØx»•6bimElD¥DÅxŽÄÞœ¨"f€&.쾦óÜâϲñ<âÏRIÄÏf-æÚyf‘¯»[6¿–íoêƒ6!Rbù….xKŸ¸%ãßb‹Þ ËÛn&»áâknúÿ¯ö¥çåý+ÿ«ît»eýù·Äçå÷kþÙ7Ùç1Ô•NÛlÅÏÊöw²Ú×ÛÜ×:]ì(MY�-E5õÈ’ç”›�Ïqäß_º·| žŠžk2+ïûÅuï’¥í_“µçVÎVI‚qö¡úW[Z; Ú¿+~¾ÍbýÆ�ü÷9‹ïÆ4¶ î¿�Il柜7v±Aèÿ}0¾Å!ໜÀwc»=Ì�{<¸#‘™¾1P‡‚‹É‚ÑÀÔ›ˆý A¼eß1öüX`†ãs†KÎmsùŠiè9Ä®µ¨q®‰b�§ÐÛ‡¦;3ÃküÕ^�‰ï€(Úè!?å!ôµØRßÞæ.jùXõv»ÄŸ”*x+uCÆÙ+ÌÆÀ I(ß•Þü®5½.ßÎ>v'›Õ:“WŒW@uJ6œz$d^ü6u™±ôisüÀ¾áz` ã²A øFyåµpÅëb·Ø²ï2%��´&a'A§6'¢¤–dmh2•˜¨%â‹Å«Ë«¾5�¼#‘~Z\Úfé[Rüe»E…D+O�ŠØ‹DU>^¾àšLÛc S98ömÍýôXæš“ç˜VÀÐÚKcà£xÀ’F ^<Ø…Æ õ”±¾ÏÙ“¡ì5nùV¶ú r«³ò3‘ùl–B­ D€|õ¾™åKõØ wT"ÊûúùÐÊáL’e®b”’ÈM¬b:<2âá–#­9TR, ÀâÚEõ–3‘¡?ûÆ ´-Ó±tö‡Ð~ñ0C{¢ Õ^ùõÚ�µ=ú×5£•}þ-`Us’õñz¿€?ª7WßÃ+*âxmf—�Ì!,u@!ɥǶGþ›t‚bÁÈŸÉCm²¥j7e° &¡E×dAj¾Ùz ì…ýt­‘¸JIs•БђÙhñ¬¤Ú5™:GT—‘©xÏæUN"¢îˆ|¨r‰U%õ;Kj#ý±´$С| CÔ*+IÔ*­ž”E”­‡õ?ë–%Ê•VR«­X„ë/[O|¥¢P¥“þ—B¿oí¡íwt2Ô�&4Ø;eµ;5세fã¡ 6sÆ«`ŽڭB��RrRjѧd`$’¡¾…¨"<ñÙ;¾-ô/Ô‚ƒš¾]L§¨ÌU ¿‡‰ÈV ¹SÇA­VɨK<ì=зbÀüWS Ú{IË3²zU¤›à!†mÕÂú«:Š2�.xVñ!Òë�tŸiÏL:,g¾¨!©k\±Q#«Ù:ïê�z5Dê‹D˜¬]ÃëU¥áæz‹jxY¤{³^é8Ql.éMìòùjË™Àæ*…åhý¹›,_ÛWœC.aÅín‘GºZQtâ(Œé ¶0FßP»¯Rýª ”�ˆ¦Ð²=;i³ÒCâõl(#®DT˜ÚR%¸ya£2ŒËðˆ2Nlß7”ºN«åÚ–(L…-–dªT›if þ®]Íu� ®4« 'Eƒãý\]®ý\¸²ŠMĆšNêÄVF¦u‡mn„6¯š !„cÓ‰›ªÈ X±Ór4é l¾ åêû�Œè(€µ‘=U-E‘Ë0¤\¹^|j,\MSâl\¤«õº™èFÚŸbp¥–ІÒ%ºFK®þóäÃUÿ¨w|ðñôZÖË…]ß×,=vª¡!"Ãcµ‡C 6^;…¤ðéàúà2z–ÚY|œ¿¾<89=9ÿµrxqž•Ú!`¬“{Ù;»øÔËÛ €û)ð,@tøÞ’n¨[ކó¢'v]›�صC€˜�ÀöeæV¯ÏyÉéZ4&a£/ÛŸžøoß x™e¿!»¡:žÖ¥N�ìFжèYÞ8.éœ!&G¼|ù‚£0ðä¬ÜðïcWG~§imc1œ×æ€ú7CõôÄ»IxBÉü4ôŽ"o³öHrnDÞðìŽttS¿ñh'œBÀ¤CøÅ‰¼.AY™u#”§×}Ñ€$üÀXÒKñE UÍ„ökï?^_ƒ©u»]ÒpY¾¡Ç¹i¸ž�ÏÍ ~ù2ÛÊKô¡E�> gàGDírÁ¶z]ª4™[‰[ôǦk;øÐ!Öµ„eä'/Ú’©CàH~ÀÒG|IƲUŒOPƒ˜ŠÑÒBÊ13¿áGÛ»gÕ™Iã?‚(^t»ÇTÉÏ3aàv•eÈÆ„Û‚e�4lcyzÚÕTè›{´fÊá¡iuÕÂÓÂøÁèäéiBê™ðÛ–EÜywèíÅÊÌÙYXŸ ™0þvùž¦ÜQ˜T×.;e:ô pÞÒ5‹Z®–®ó/ýJ#cÝ‹:œ„î¸u-’Øà‚ŸçrÇ#SYƒÂ¥Ñ³WÚÅ=iŸ²³À§”ÓPAãW˜3ªfÛýl€^!ðxßgDcÛ¯/£–±ÕЋ(½˜– —‡6P!Z_ „í¹œT[•ŠðØmM^ÁU%ÛÖR?5TâPÛZI‡¶@Cl‚~1jZš'<åvDWKÒsÀÛ¬¾óNÉ|ÝÅ<%[­¾ifõ­qNVV¤xÝÈ„–þή@9¨H¡„Ÿ�˺ãº-•+èŒØ8…<õ›¹Ï›Ú6AÓ÷`Óäé”,nëLÜ$ !�£úIø3!suC—»y£Ñ€˜rJdX/ܳ[ù=»µÌO×ç„JD|Ô£·GRåTÝz6Ç«\¶�YÞèQïƒK®ëÑÓSŸ‡^´C¬jý2û¨J|ä)caþ‡Qƒ^.ÎMý†¶{‰�Œgœ6ž>5´Æ’&Åá<êÇ–6ÛÄÒÒ6•�©2aŠN¿šáùÔ‡›#“›Z%ìà·,v(퀃¯¶nfrÝ̶^7³Ò¨FÉ úP]çVD ÇU¯“â[);XAqüÔªŠŸöòñ“¼¤V>=HÕË·ËŠ•é¤Wæló•)• §�ÏÔF¤Û‡ã!=Oô©ÞGäÔÑ.èé’ ß4¹aÕ•õ YèC2‡‹£Sê8-ÛÙVaÑ‚ž½g¦3UÎÂ3�ص&,5>„õ¾S®ùÑ”y’ç¯Hfúé5pG ;FÏ„ý„IPšÌÖèÎrw0 XŒ%nâ{Š,~è-Ÿ?PºB4F©4&Hù9ö”O"½kÿ^‘^}@åâ“™¤p�›Öx%tô®G& >ýÅ>û%]{$}ž¥|èÊ ÔÔ€;ú�çâ.?Ùš>óÀž½ k‰Æ‘ã L‡3Æ?ŒvmÑVO‡tiþç.n{ïLµ‰ú�.»-Ul…q4CìnÚùh?ŽÈ�?òNº´OéC *Úv„C DIS‰dºNìîÿ2T?¡$ÝÿEYëŠS ªuHF¹«´Ù$]ÞÈ¢À{L7²ç�X.Š&@øü’Ç„4”·…®§Ï¤êl�Uy×”ÓŠ?i§^´sÏó’OÝu»Ý€ù¾Ý1ôR™¤.ì!¬#}\÷N0ÎvHùÑ0IyÂÍ@¸‘6ßÑ;sC2Ÿ·šÕΙ«¢Rhg66\Cñ�J†!ïQœ×êŽ.ÜàLOnIV“íHdï¥.ø§¸’k±¦êOOôó`#z݈¼Sï‡f¡+\cn0w0“¦_<æ|ånÒoÅ]‰�]×Ê•Ñ∳}’)Jª;Õ[­H“Õ%ŸÂe§Xå$ø§ñÂnO�“~§Ø´E„6¸G “” €tó]0ÕYo„Ó]¬ë Ô¿—øª}€ñØ éÃŒÀ<åþÈ¿ <)Í(ƳÄ"Ë쌛Ù_Ñ1Õ;²�S\Ó¼l–Pñ‚>bµ=(ä]cê&b«g\WdU“E*o­UØo_Í´¾Ë7ÉuÚ.ZÊM~/ãÊ›>Èeü¸¼pÄ{IÂS[×£îß…¿„¸©ÂY <˜æðŸžpCÔ™ yêp‘B;à›ÛŽJ?5*=Ž ¦ž’WŽ «¨èQU{àì·XšÒž/2û[ѹuŠ@ ªó"±l£.ßv»¤Åt6Ú‰}t. ‡ô.W5è#4©å×Vã¶ýh)5­†O|¬_é­z‰WðÁÔU[y¤–'ÂþYl�÷¬�÷?Ì:øeéÿun˜�s6Óep'ü+¢BÓË ÇËpþ¹¾,È(Â?T{P�y/¾ßaMüÂÌ@ü�[‘dÔ”ˆ3ɤ¥âPþ ‘̾©Pqÿ-7Øém NŸÌ.}Nõ²² z�»�/q–ƒì��x Žç�Òà,bÛ 0¸£lÈ��Ÿ#ª×éÂo8IE¿L‚0ÊÒ_¡êûvƒ1q¼»Á—�»d{|©xs•µKsshA<ƒÊ䟤�§qÆÐú„YÔÿµwíOm$Iú÷û+LÇ…OŠiöŒmé4 ŒÁv¬m|àñî�ƒ „Ô@ BÍJ€±þ÷­Ìª¬wµZ?v®#&Æ¢ºÞïü2+¿{š-Öy©Fƒ×ÎQVB‚ ¤=jÞYy_ŠE(ÿ½²éd¨ džÐ@ðH9CРnk#!¨7S²,Za�¶QÈD<’‚ –Ò5’šOÝ>ƒêÁõ°R35ôX5˜Þ}µ(çå)d`l!eR ¶t2R¦y LA´|L=�˜ÆŸnÌX×zO«¤ØªÐc¹à˜z­pðíÈøD^‰a|_š1µÄâ5D‚ÿ‡¡3¶D$õaO‚"!�2,„¶\)ŒçËJÍ{ÒÉ‘¨|gp@1Šja2�‰'¸o‚ÿðÒIVäU ŸIjŒl;1G}žæ—3ÑRª”é°í$šòvÓOž"»†×¿› ´�J�»iØ.lÿh?ŸH€d_ݦ^ñ FÓöSÞ%°¿¦xï‡[–«L±^ÜÁm*bS/w# ëQ/ÝÎl³•ôQêØ@4Üé"™’·›Ð;Ü$}œ ³ûx}5·CØF~“”xQV RZÔè «—Ké\¦Yª’`Ǭ0~ZÁu�Ò#ŒÐA윛úŸ™µ¿Å©— ±§GâÁƒzÔªkv�¡\½,y”¾L7R•wì„Èû1E{\ð–»dS~£Ô±Š«=VÙ'éÿ˜•ý-fá$_œ„XÛévb[æ¬y�S–xµb‰‘\Býåä8‹øÑ2ÌÊÆ�Á>�¸Ìûú8=gétv3‚ ŠT¾|+RùŠT¾"•§~¯Hå+RùŠT¾"•ͬŠT¾"•¯HåïR™ŠTþ.�U‘ÊW¤ò©¼“qE*_‘ÊG}�U¤ò‹÷ÓŠT¾è[‘ÊW¤ò©|E*_‘ÊŸW¤ò©¼]™ŠT¾"•7o°§"•¯Håc3´"•¯Hå£5©Hå—œ¦÷[¡ŠT¾"•¯Hå+RùŠT¾"•_¹Ê©üO}.U¤ò©|E*ÿ£G»"•ÿé¸#¿%LY‘Ê_¾G1©|E*_‘Êó5øM¯ï©ü¹Òÿœ«Hå+Rù;^ýŽŠW¤òÿ‚AE*ï‰C©|E*_‘ÊW¤ò©|E*_‘ÊW¤òë©|E*_4«´ÿŽù¤Ùxп˜^ŽÄY¸‘šŽÎ!¤ió†$é«wôßÂ#OàI  '¬Ýµ–tf1W€Úä57 ÅΑA‘ôÅûN|‚G¶â6Oc>ŠoîËGq«)œ?ûáNЉx’öÿG©1LQžãÊ“ñBOÆ û~fÓKÞƒ7Šõ\B¿‰«cB~±9Àxð<‡\ßx°þèÁ£&ÿ�ÿ…M+-9î�¦™ô(âã-„—§ŸO° ~ÖÁÈÃÿZþÃÄÞøŸ|‹HÞ¶O¥­�Ƴփ§�VÚzÖØxú`c£ñäYú¸ñë³…¦ýWóöL|¯EþžÿHý÷ñ÷üwÛßsQeŸR´'~~׳ڳ¢JÜÙ�´ÞÜ4YpD6:îŠmÍ[Œ)U°_X×Ó£lxt#È \ZÌ|\/÷êìzùº‰«ý Í„y�rôEŽÓmæ’Œ–òÀýK~»òp¼QäÝWÌ…÷BœÀ.Qèl.�?Ø�qò�Éó¼p6À+AÖ;÷ãÚ`EŒ;nnd-Õ` VU”y ñß9_x»Ç(Ž lê£ÍM\"Û¯_“dÍÓ! ¥^k &üF•íÁÕê&E…wù0“ÙNk‘²�kœß[G|¬,ªwˆ îŠÿù¤PÀÏšè•6G#, ‡ ÑEÙlyÒµ«¤kåÔNÃÜceYɯ0Al¾t'ܲDœœFò¯ZOÖ[pà‹�¥�¼^è‹„¯QHn£è+µÂ®£h·¦TÎ�T™Ào7¸,2<ɯˆéªˆgÓ{Áë¨ðej˜`Ó sÉÚa¦ð§‘¿$õCFÀ5›ÿÓ§¼uò%~L¯šQãÙC̾ÇLOk‚2Ê¿éå-\?�™6£JhS‰W¨ÜÀÐwî8‰{NÞ=†T®ÈôOúb‘¶U=íŒÛnÚ(¨ÓM2%�0õåúWæ+_ø"¿ä‘#68ƒÖ¬Yõ—ifåmÙšOÁ);ǤàT¢6Å(¿ÈLx "?6Ø9Åh«}?#UPÇ�´±ÐŒ¬Cü-Ùoyïò3æ;ϸ¸nÍ_^3µÀùq`œ€ŠG7°îpöÚ#åN½h•­5êÒäJ¤`Ýô¡¦peu ͥܬ�¨Ÿ�sÑ -ÈG}>ʇ7räƒÄ³E¿riø4ƒ¯ìº¹Sqë —›¹úL«T,#¼ôax]1�þ ¤×•‚:]­ž]Z�àœša½¥)ÍHZÈðyuŸ”�îÌ6YïÊ)y¯t×XIZI.#Ð`jš�B5M!ý$îD È'Åm©'kÉðh„'æ‚4öÙzo¤•&K¥ºi€2¨½ÞúFº£ò ”eÕ1™Ø¿%Í¢ÜÍC‘ˆ‘~Wœ™- �k;Q£mhJÄÕG|CÊêz‘ë½Èõªz‘>s#­ ­1pu’DO&lHx¯§ÒXUQâè@†?™Òª7>Ùçq€pøcýçV*X&c þO¢)ñ‡qYÝÉ]4e‹•+T ñÏöHö¦<•}´"1•j^¸×Ȫ¸xDÜ µo¦ÿ+P{¾£)?ÓK(2bùn¤ÿ0µ*oå÷(ªáPù=Nÿ3TO¾V ~MgŒO­�…)–Õ€Äõû‘ ¸_³® Ë#ömIðÖ°@MòcÔ %¨> s‘Ûlºb?Zô]ÉK­,|µÔbÝ×_E™ÿˆÎ0~B¿¤çŒ Œ«hzö@tºf¤)xͺÓZÀš»~«Í²·4PýšÝ‚m-ìÝ()lÌÖÒð8h6>›dýó— g€Jb’º0Ï…,^4¼D6œŒù =�HâM2͇U$e>L!¦¹òôfŒ@úTØ|ŠüùÆÇ'ƒƒ*Cå§_¿6 �|-ŽOf§˜ ŽFOwu}ÁE?6ÛËÉðØ ’0-”'¤7˪b`[0gÕ3ƒ.âå{)·t¾$vÄh#o�§qPz…Zúš>$%“þCPÒdò7Ÿ635¸F©¸½v¡qÊv_FBEÃYê5Ù1®N�ÑSFôV? ÔÍyŠELæã“Íc¾&?²ìJšv+3è?Ĥ~Û÷O$º)³AÒñÂÀƒ�o¡Öò>{qùIt–݈&=šÍµº_]ï›ê«ÆO?x�óC:Ùë�¶=pºp+æî4?Ïh¥Rbò¼eqÍã8Ÿl÷§˜Í-kè5f ZÊJ¼ àK<ø6 c‘jŽ ;ac^§éÎ$?Çv2Gë^näc�Ðå�ýâT4@ö{·ùð!ûïÀz6L'¶§|³…>`ǵõ�Ûêâ`+x)¸cýÕ]oyŠ;üÓÙüXh¢§Bß¶YC'ÝynÃc3òyú§Žcì:„÷‘Ú–ÎZgÆ;T�ø1í{;dÖÀó rò.:µÁ…¤.õ5kÍά;k\ôÁŠŠTøòSkY‹·M7>ÙzF˜Š¤útÐaÖ$exÆÈ‡f ú¯Ý% šØc�å ÛÒLkxÌOãèwwÇj§˜«ô´Äíh«æ¥®7�ùÈï \(íNm~5ñå»/лÖ7µ÷Ô/¡k'£Ù$¡¤çÙæxˆ×ëÆôŒ]¼Ÿd(úŠ~’û ÎTãÝ3ßRòÆ´¼B-Åæuc˜¯á +�ê8ûÜå|y1ä5ÛÚ.˜ð1Ðý = çF© ªfÄ{™‰ Ñé!º°›ªG0Ÿ³¯_õ8Ÿ E3Z,æEý«´�ZEûž¯h6Í`‚æ£Ï¨œfcc£ñvtÕ{Ð(ÐÛ39èRÛ^pÖݪYâ^ëÊÄ­¥Ä•½2Ë7�íõª|sÜ=®1,¤®ô»Æv>ãÛ¿ølbê‘Nñµd&šXÔ°ËÁ¸¬uKd(öDï8ч¿‘Ÿ6ÎÙ¸LíR?£u.pDúê;躀VðžÚ3 ÚÞ*ໟäŸY~9…U&ÖDTŠÚl4͘™tÊÞþBê½bÕêÖ½ÚÝA û¾!­�àU)›Ý¤OWÓRnÅ´”¼ßïKµxtŸš;1wº¬XS‡ÕA}¢]Z=׺³vîL\æèÚŒ+AIQøÆÒzi­FH�QÚ"A\ç°”f`Lš� ¡hj½¬¶Y¡{Å­¢ÂyMÐ|à¦†íµ‡‚X˜Þ\!IÈo„ò$.‚ŽÃ€ÒWº+�ñ¥ †¢N±²í ;!tMt5é_tø,_݇}\òlÖ×É›QИQ�Î{œCî±å#œ,ÇYëà)A”sN¶¸€ ï°ÅÉ´k/³‚M»vë1§o‘ü­¼î«­Ë4°T«îØ(ð&òX·Iºyìùw(3'ÔDµ½`©YÊÏ£ÁY6“pHV{À3<wÐ5Ë:ã›Ã×Á:Úéų±½XÜ–)¹Øa+z2ákÃuC³0 Ï%“í¬óçå„®uò{!š†[¹]’pùÉÛ­Mp�¤Ç†æŸ1á¢9,˜(ÉÒÈì>œœ[Ê<ø,f€o»Ö@!¯;33ü(¿&_g ìÝf]ˆµùápëÕë÷‡o^ïx¾û�íÝwövß~Ü|óÇöáæÖÖöþþî^¢•áo,]øPˆû\Jñ5.úØ�µÞ×XñVyùøC~98͆]hæ*Xº¯°B-tp$ÚšØßú9!ÄÛPÑÐ ÎŒHò¬7cÑñÏ` “Y¿t½ãøâq"5žñcYµo”õ'ÆÓ·Ï>æâìaõž­ 0Ï•_�ÞÎxær†»nŽÂ/D¤F–&/¨º6§Ô u< < â‰?Õ³%_5w3r{ÓÐ*.ж&¾@Œ­ë°®Ý{âJçµãC ÔLbÛÆ}–º�¾;±…ŽBìpööl^kÄT3,=eõºsI\Âí˜;;ìUØV`?ÑκpÀÜ!¯:™uÕ9fã!f#AcÑ\r¯¦ïŽ5ùš¥®?,»^Ö{þjÓ°mÉæ±ýÜVÖ–8¸‚š\ß?žµ+§,ä\Ͻn¥F>‹½é]\Êj�aœÂÛ1]–˜×&hN�üB*ç®ã´«¬ŽèûùìÚ'Ÿ]û+ûìÚ�A×$ŒÝ|}óàk°:ãCõêf8éÛW²m"ªÁ®}w`Û{vb ÚÇJ WKàè‰D“ÇF[„“ŸùyáKÓTRX)­·Ú†ÕdÜ<ÒÂ×ÚDbØ×¯æS¥(“öHoXƒå�`m³ÕÞmü?ÕÎäliøò !qû Â|qgóå„ ¿|¡ðËMÖ=ƪ1�Q»H§¹å7Áñ¼=™ä0x‰ü²<éHG›$~‘8ïö½ —“üò¢+61]ø,èæÒ‘ÉLß …A£6¢ÝÓÀè¦0¢�X®ª\{ÒÁ© P»Y†Þ“‰+ó�­jëøfÀ¬éeÕ|@m¤Ãpò–±˜ÕàKb��æ#¾~£õé¹å‰d¯!Ø1f¶ªoŒ@å£Ú÷ûX M`3ðƨ$F`iSüÎài|ÅÞ Ò$dØIÑjc”” ÔG'Sþ÷½ЩwW�Y>|¸ËωdzÊŽg�éÓSFi ÌwúÈç£:�ˆ›Æ&ê7˜™8ûŠ“nßý¼K^ØA�ÜÈ댃�6-YO©¶Uø‡ü,óP1»¾È'³M·z�åßéËIz¶ä"³|«L&¾p‰eÉmõ nrçù0¸É½;y›/G´Ç}aóÐNÎÆS‹­• $õÂvw£ŸŠMÐo*ª:€ÎÎê�ƒùü eçзüÏ«ô"½N¯œ^™Š&)6�¯îÎü PKÒV1]¦ßlk„¦Uimunify-security/assets/ui-app/assets/static/shared-dependencies/named-exports.min.jsUT ëÆ«jëÆ«jux è‡MRÁNã0½óiVŠbÉkàÚÈê…#ˆ+N!“ŽS£t�Ç»Tmþ;…&’gÆoæ=¿ñÊFlÙy¬Yÿ*@’fõ÷öªõ˜bËžÔ@ž=�¨It.A¨™õÜJ’´âºLÕ»Rë\èmÁ»&‰Ê C¨yç‚4ÔÅ= 16Y€MÝ;à§™`Ígµ¬­jMßO­Dãl½âÓ‰_n_µÖp:ݤ-Gªìx'8<1ÑtÔüärÑâ pf@iõêVƤêB$ë .Ù%Ž¥ÿ€–çkBUå¥ÞÞb€;°&ö¼©QƒÚžƒÜôF¬Ëï°Ìj7É×u¹,™ÒUUO`ÉÙ(’2étTð mdøÑïð’\ú”Lq “Òd¬§zšuá°@ñ8©Ÿ¬v&<þÇ?ä >œk1ÑVÕEðjR–%á ¼fUq”<Žu1aÂ6a¾íÐÛMþ¬»Þ¿›^4W×׿Šà#µð�ÞBz#ÏO÷Ͷ¿ásðÄAíª�´™áê PKÒV1]*:ÿdR.ÜŒLimunify-security/assets/ui-app/assets/static/shared-dependencies/zone.min.jsUT ëÆ«jëÆ«jux 致<Ûv㸑ïù Š 1F«íNžÄæxÛÓãœöåØžÌ®µ: MAÛ4¨€ 5n[ÿ¾U¸�àEîžI6gŽ[Ä¥PÔ…øeÁ¼BŠ4‘~ø o6‹‹"]òH®Òb8Ä¿#Ûöúº(y"ÓœäE0Y ^�¿¼ÿÂ9êŒdäe‘‹aKÊ£*¢X,ËGÆe1Ê_ÊUÈ?Š�ïí;0÷RîÉzÜ„O‰�¿¹Ìåóš�Vqq¹áW"_3!ŸGIœe�¤96ɧ‘„?$4h²-µ˜Žâõ:{�2Z­@¶áŸÞÿðß¼¼ÿÊÒ„qØ–#¾,3ÀæécÉx¾á?bw�ïÃþÁþ»û>xŸò|™1ïóçã‘·’r]Œß¿�õ¼Qš¿Ç Ÿ5¸±w~v ßïîÖøöÃ�"¤*_xs¶H9õ¿£øq~¨Âø1 È6œch@³›ÌF°'°™�1OXhGxÇðá��cñ`ÿ…Æm5$•v‹‹R0ç§êÜŠÀ¿Ë9ó‰b˜V›Í°aVú_~žÒËÒ–={IŒj*-4ìØ³@×yö¼H³¬†¡OÒ‹’ Ï¢\™q)_VsãuŠy.�¢„E,ž½Í `|5Ó ×0†w¶ðžóÒ{,'hó`õæ¹Wä°.p+SÍßÌŸl©QZZ~­ª 8õ‘|ú²drì²—ÑÀ>£¤xš!Ȳ:Ö�°¨ú]k5ÆA�‰ø>cãÁMr¾H—¥ùÞß’Ýø]$ ì³Ròï/p;¹þ6|bŒ{ Ü ,[3,§1M×>åéÜCÕ‘‚êO£Á¡_ZÖ!àD À�Âð±áᣆðÔ*cÏßãdË2ä:˜Å&¾Qqó´@ÔfÐ?Õú6‰”Œ¡%`è°VQŒú�~%4š�íNV¨ õõáîÜ,WÈÿð¹¸ë¡ZúÆj8ä{Ψ6Ë-êØ$åM`nÕ¯©\AjrIìj®:œ°é¶ ÓNŒz ?ÁCnÀj3#Õ’!L«öÓêÈ2ËškÃ�ECôë›5K<ÁþU¦‚͵9éªrVkr0¿�7"^; ¢™�%û¬\‰Ó߉j¨²TË\";3m­µ_×Â%å -¶–!X¼4µ¥†€.{ˆ‘(ù§2 4 ‹Mo �N“(Ü ‰r*ÈËYô¢·|F£1‚Ù†R<¿ìÞ¹”?å¬BUAÚ“ƒÿ÷ ÏŒŽì"`°íÁ£Ò `J!úrÁõŠaŸž9«˜Ï3¦OÑp…9]¶ý.âPͶ(3&רÓìòË‘'aØW°¾ í=ó–ò¾WL™2- ‰`^pl~"Kد¯·D¹:{~è�þÆ’ÒPtê°†Ús+$� îÅýë+!òðûx8¬~Ÿh�!¢jè](°&EÌ‹aßæÁݪ?ÎK.÷öwçÑux ~ØG§‚uæ<–ñp8Ð?FiqÅDšÏÓC(ÀyÎ~â‘æò]l‰ÇàœüæÜ�]C¬íÇ•BS“sŒÛ©ÉéPsسzGÆA½�Ѿñ(Ë5ÌVd¨và¤w`O{ ÜÓ;zOʉåJzåÛkèf–kñ§Ã›Zó¨fÒJC5®i¾‘uчÌ®¤YZæž?KûT|H}ððÒd…®Ý&0>�A]!�#¿ç"]â–kÆ÷‰�¯×UQVÃHa{ONaGŒš�LÁskœuqjš eÈŽ}úØÝ³ÊFhFR1‡b�ÖÒWï º,Ú½²w£ˆÛp¢Ë (sŠý¢è´�©Na@ÿùŸ§‰È{”ª_W¨´£¦Z—V‹R#‰dÇñ®%hþÍENh=vüÓ'ãÎþøÇ»ákE³[@~‡òÖ 2ðcÿ¿U80ÊuŽý¸#/mv¸¡¨e´Áì²eMõ÷³øÍïgð·´ZW¥Ý¸Ft"ki³6 –Ÿ¦E¿-Sá»íYt:¡Ux"ÚÅGn“bbo�ð‰˜ö`¯”>:Y”o‚rLˆ“íˆR¥„JšE/xvcß§9ÿ9.Äx§ü©”šfYôX`Ê�ÃÇoÍkò»™|VÄÎTšÓØ™î˜NÛ‰Ž+ykm‡�ÔÊ[ºèÍØ0ëiŽ�v7‹èåÑê¦ñ>}ŒëßÌ üxߤc”òf�äK•œ‘¦=û»T£�J£åü'h9äciûˆ3ò$[J=Ö”v v¹C�! Æ(£5Üâe§ÙavjåÝ[¤Fx6¦M£å éÌj XÏ“�y.ªUc_g¶‹tgB ù¢�66Xœugsp [5\ÖÛxbK’zRCw¨àèÇŸëV�hcXÏÜÊîlÙší"ï4w(hÀpÉè™dá¹ìã*MMs`ßô= ² À¥Èmï�ÔãÒÔ7­yÂ-’jµäòQ“œº­‡ŸjRšÃº“wðV—ˆî ¬Ön µbÔ$¸ƒº$8SesªKBÝÚ!Áà’Ð�R³jañs×lÔ¸õ6_n8=}5FÐj»iô¬±pa ^_UF½^o…Úè |öá#w!ã$ÞÛÈ0ÚfÓ×× W´²]"#ß„j¯ m2RµLƒÙ³~F–»Y´µ@}ÌÕ VÌúÙLîf zR;ÓlèM5<8m9Ýcƒ¦1­ µJd�ÑaNôÅu¬¬N'kÒX×1�‡�צ­Þ—®�3É�±l£„ÇòÍè¢2}‡ÍÏŠ/ÑÀÃ5cN@¬/EµïÆ·¬•Íè=žA�-éë66 SÐáàÙc§h÷wdj?\†UÎ¥eµZšµGÓ3­ËbÕT• 4°YÔ&Ø–èYÚ¡±OÊ‘à“ÐÞ>ÈŠÒŸ8q?3Hç¼uþì²&â ˜ðxL‹3Ã5¼ð4ë Â>vüŽ˜½¡{»M …ÕQWmo‰ZXoøïãäa'¯öÒ?ÔÜа—ö,ÝÆ†ìLrîê9u†Õ± d•Fl¦­ì¡`êJ�ÀÛ8ÕSv�áÉ™u¤í°v«¡6“]öî·mZôœØ<-!7ÓÙ~ö{ÃävFÁŽOØ”æêŸHì)ùÍ?îwYú/\qfá1•­P×ÎŒ{–ÁÕ…þþ Ã!üÍ�VZ¹Ô+3áÄ|TýþÑ�±R¢n¯ãB>ª~C{Û²dc¶E¾„Àœ®z#Qi£\šÒ¢•vžNj¶›;°ºDå`|à%«æ¦Æ@%‡õį́ÈK0B‘Ð_˜#ŽbÚHWýÄ£T·T¹ï‚òîþ[I´¬/ç°Ýf¶îŽòPß�êt'vÇ#•õ�á¿QY°O‡ÒÑ6}—‘N·®ôa4i]:öŒîXwúU{#„žïí¹Y}÷>�𤝹Z1³«”üA�‡�pÆçïÞí¼Ý•îm+‚ûÆmë¿sãÞXKqÄ7Sc¾½šì(XËd×ì_%+¤ËãF¦›IµSJ£¿ïÎÊÁo 2gÍÞeÈfª_ï�÷ç:ƒïõÿ<öì­A� ^8påb¯SÕÚ ˆ0 þ⇾— èßã{ÐŽ 7Ÿz›¸è ¡©€É œŒ¸ùE«.xz®‰L¦°¹�2¿‘p‹v°¾ Ò)ss·¢o†´ò>›v›* w îlŸ)µC jcô÷›Ë‹.>/Ø;®�FÑ«¿õnè“»§T]ÛÕw/ÔJ縡Aú$*Ûu”~ÁämúÈòRú„>a‹©÷�Ï9~¢™€ß³h2¥ËhpPפ=ú¦½|}e“§)Dá�‘`Ež=±`ŸZZëUNæÓ�+_­!PŒ›ÔÆ”h•óÆ&ë)0ʾS_‡Õv/xÓ Úÿ™™lïpø<ʆÙö=Ý¢¼G]�5XêŠ@{?´C�‹f!ÒÖ·gû¡üÈì(ÐhUzz"§Jëñ¦†ãT™ÍiÕµåWp~áš?æÆàƒ¦Ý~Õ–�ð‰ˆS~ àpK·ªnîÖæž/.½»Ë‹SKïÛ6ê4ò�í¶òé¦úÄλÈԸ깉|­{Ô×U䛊LŸ^F~e²}z_qõuù•yöé—èeK¿F/:K>N©)PBç'�¨öAaºIþø‚v)‡ÆÎE×ø�«|ó È~¹\I=¹³Ä ÁzÇtÉÁ¥9Î9pšv«Ó|2ÝRU™dî D¯bŸØQ—¶Þ%e ¦ÚΙ\åó/à`R>?²vô ¸·Àçýô•¿´{Œ"àʪŒþ�iqvz)NçËž~`/ ÄRU„ZE50¶¦ø¤aû×Ñ#?1é�°"éZ6ÏÊŽUwg¬Ùs$Dü|ƒEÃoìÜq=;‹X`½V6×ìØ?p‘f’ çd{—‹¥Œ�ÔUömnê<ûΛÇ6iŒO·ƒËô‰Ýtdàyëc(ý¢»NÊ8ú†^k‡öÔV¥÷.psSmLMÑ1Õµ¹Q² @ Xϳ*ŠÒU¦Ã¡©6}íS°l1âßW[Žj%jlÞrKPõ:_”;3+æ¾\@HcÚÕý+ƒØFq‹›Å@Æ¡qäÇó¹’�Ïi!g§)(@ö˜?±V{µª›ƒ˜Ð¤Ó˜‚µŠ|)JØ»,ò1˜$Ÿ.:ã|pÛ«-_5Roj¨Q“ª.M{ÕèuOŠª1§s5ïLPVâ©�XéÝÇ f{~¨޵cg6Î9W]—Ñw™>Û =’àÈÜCØè”¤?hÊ­ýÄk\m;ß„üG`Kþîé)×g>UOø4Z©¨Üó±@”8¯[^U¾  °®ËžÑåAßÈWÖ—S…0àçcfû¶ë×\<0¡•äMLªwÂK98\`Gû†€y†ÅùÆO¹·$Žç¸DvÅ éáПèmöLËp³Úr « ,ü\ÚÁ-6˜½³ÑÏ·çŸO3†¶†€ÉÿO,óÖ whöo:•lþRGï¶Fõn¢/ÖÁ;¤wý=þåÅìêúòêôúöü=ÝNL­�©•TmÊ2d�t�~–a€ÓáP ·¤1eÐÕ!"�Cõè¼È|8ÌkÏ´Ü#Ö¤/!*�âgÊ–„sæ9üHòLý«À‚Å8k¡ÈË—™5j »÷Ù y}åˆx{.åÛm-W�‘qóàCåÞ0;3€€³ ‡�‚8zqãÉýžxRÅün³†šâ&Ïï‰=­�–®7ðv o Hø$�’—9H—ŕѪå)ÎJê‡%1ʨÈå´¢Ðj7ø@@3ÞMÊi˜Á‰ëŸ�Ã.ÁíWw”5#·pä_Å4Kˆ˜a#z„XN²)^Jõètˆn@…‡‰}ƤKPq Ä…}!µM‚¡ƒ¬/Š›uØ6HPø"û×(3DyÀlUtu«&!PȦÍ"mü*4¬<*œ8Peêì0µY+礗‚Éó¹¶¥‘AhÞ¬ÆÖù2°qxæû@ôQq楛6 ÍJéVÒ\aH�ü%'b tŠVSâ„M1N1â+LcÃ&ûôA R�Y\줰Lú1·Ë¤f™ÐÄ\‘ÒÏ'НMaá™Q¿®Å=¶Üģ儩 r–“'hŸFœbcû eôÔÅÖŒ„Å&UéYƒ yIbˆ?÷U <9™ª‡C<¼'ä!T]Í®@Nö§Äð¡gðãAsÔ_v�‚?šCÿúæPøó—jü\k¡q·âM,½ ˜Ý“yîe9SÏgnª:|Ì «%Üwr[¢ÏMàçÄÿïóÏ?K¹69,¥�A9C¨¿† Œý Ì"¶ ç!#ï}­—ƒÁ?ÄåkŸ=�þœ P�Ž&†7�9–A¸J/…êÉ^$äaPƒ/DR¶ç�Ð�½©{ðviì ”*”Ú‘ Ôc¶[²‘¬·Ž¿Âü L®w´2HˆZ„%lÄ‘Ø/€�²%•ÈE2Ä*ì¸ &$qÄQâÐΠà*#õ9£Åe¡sc(60& íÑ4€‰èLÑNšðôÀ#NbA Ö þgÞóäAAS4p8¤ç$“ÎÛQØe®¨îkŠšà¯VE™ZÄÖ}oiEZ×mWOFF¿˜€½?›ÿÖ@ÃÞÌíxÈJ…í0îÕ°°4WD_6�kÊÚo<¤z¡NF„•bWÈ€3 ¢ÒåB11¦‡ë 6)»ª�ÆxÑ\!­JõˆKœiÿ›MÐþ}ióŸ>AfE”®£Á‰nÞîBgÇ®­ù9¯1A†.“TžR€“ ¼lGK|B‡E™nåœýv¹üó›³SÏiwÜŠtÞ÷õaŽ:ÀŒNûNÚÌòÁùÖÄ7õ6Ϻ�#}÷<\^ùV8šïGáàF: ‚ r|iŸÖÆ�rvsô·Ï§³_¯�®®Î.>Í~¹8>úåÓÏ·èòœŸÝœÎ®Oÿ~z|{vyÛŽN“›C-ñÓäP!¨œÍlañ­ˆ†o|y'aØö½·v^, •hŸ©‚¡•n„c*à¬#=–Ô=ýV�:%ýتrØŠY=õ/šì…Aèý�I„ß¿4$&"%ã&ÆL?…êæ wƒÕÃÏŽË–Ân¥ pÉÍó›³µo¯\#§Ê³•Õ´d“¸[jž—‡]«Wäæ�x_Ò·’(w&‹iا ÌqcW ¶j'´Ê[ãSv¥ÈÈS¥]ÎëµÅW�ˆV’¢.V§ ÙÈJÔÝuó“Ó|aöqB戂¾4ûøPáƒ� mø0·~ðùŒŸ:�eý‡øÐé¹1ð#+@ QŸÞê\ÄÛû @ìd½î)×ýÀ8±7‘Õ…<¶ ¼„W´ÜtyÔe ^Bw×°·£€—ý¿IP˜:ñ"¾ï¹ªòÌÝÈÜt女 ˜”‡½pÞÿ*åàž âŒ.½±¸7�~Z:*v.÷n�«4÷]éþÉ| Cnõ´R›RÜ›ü©ò±k êV  êƦÞÃʲ»ÒTo,!ZO@A ÔË—ØÕ°åjÌIOã �†Òð³v¸¶ÀŸÙ´.ù1«ôHXI�ÞR YL“¹œó ƒ?‡¬·èQWT/jK…CHè}ž�DÙd‰Û½Ô¹‹{•ä‚Ñlò0¥j†pøR´»%êÔô1­ê·ì·J¹6>Í-e· cÏ]@ä%}i¥Z—Ö6øÇ%·ã¸­V§®A¸Ö•ÞAGc1YïíM{ÿQœÖrQÝÌ�§DïÔ&ÔIËØ¼jiÅ'ÿWÛµ÷¶mdû¯…AÂSÃéŸdgÇVoÇk¹Ý6ª®AK”ÅZ"U’’íXúî÷<æÅ‡œtï] ˆ5äp8Ïó>?jžöÆIy¥P0�ÆÉBpqÜÆ‹+å^‡+H÷h1)«b=¶OÓe‹f =|ú`�Jz0�¡S3D,Š¿áØ‰?}:'ÄÙúÞ 8«B/rèúF&»¶Æ¦ÎwPËu`;mŽÔŒÈ~sœ^v¸€¼±¾UDÊ÷]«-÷š�¤ÈPy\–S¤:E�oL;ØÇmdròÈ„U%�NÇQÖyô(ÈØ2·+wàajpýc¹½cÐHñI]ýÓ|TÀñWdw(Ä[Ws:w­í8�¿‚$•q¿‹#÷‹pvé­ý<ÜDUǼ.…K4,Ó§Qæ²×ƒ‰Àíšyˆr 2 ‘]ò­LnÊ(~ªRöÔK�¨møÏª?‡¨Fg~&àԖΜѥ·(< ²@ ÄþšËí#Èà'÷÷)töÄeg¨7nFöD?s)•É·uÃËæã.y×jjŽAz¸ª70b ‚£±#!#Ãcí@Ž3Ì�ükÝC4¡GûÃ9<+4?xóòfľ·7“|šŒßì< ÅSl¹&y«7�QB"ΆÏFÆ;B Ðâ7=2P�ÄÙ³­Ïѽª‘§ I9J+ Û@µÆZ]ÓÓª2|ÓGtïd±Ð4´äÀ>®‚†a›e+ðHáì(y,Ф�ÿëc–Ã1ƒ£†™|Za":b„ˆrÖåÿÔ¥ó Yü?Œ QL@k>œø551p‡ ÃÍÜáf02rœgp�@JQ¼Ãƒr@ÝPêÐãøþû‚áTŽ…î{ù•®£`�ÿp3�À×¶—#ñ’f/¹£a”2Y�¡®f©jÁ01)(tÉšaa®’(ý±tM±J¶,G)Hþ•tŽD4Ë?A¹‰g‰r5´míÅ¢¶µÍ9…ä­WþpŸÃÒ¡4LªjáÂK˜§ˆa¨(6ÃukDˆB±Â$h·.^°º¶Oç ª-ëiü1Ž0t†… L^%ô[ž6Ë(@¡/‘©ív;=4·K²{[ê^[ăµµq‡®ùƒà¡uÁín=Ò?Öf‰´“-—©†o¨ojܶ„ö†2Ž3S–Æû™Ì/[»½êûüäQm’ÌöW�!éð52�b (°ÍvbÍyA ˆÐÑÂŠš Ø…¢¬1¡AË~ü½D6.ò}¡£N8µP¤Ssˆ›ø~Od§1Ôü§A¤o-WÉ$MÊ}±¤ßAêF†ã¹NJIÈÑdEÞJéç|H 6…q}ç}þæ£zÇQÜ)¶¡Ò·šÜnMiqÏÆþ5Z’-ê–kG)ñ†N(ð{&‘h ¦¬6¯ ]i3#¡†Y•Ô,켕IÁN™ ÊààÌ”2 âSóT¼:O…ž§¢5Oyç<å0O¹4B%ÎJ³ŨÞ«¹úæ JE ’™ Òesh|tidóKh«ŒÔ?ð 2þ%¤Êô?õçdÒ ¨¡K.2¿ä%U¸ÐÖÊ+ãQ6|äƒkyw.²ÀØ^6q²ÿYEidN”FÖáÁ†}K+UèEÎ_Ùö�$—Ç_6)§Š È8 #xÓ¨l¨ÑûC ÀŸ‰Ò“Ä °ïþI Ðäï͸ã½jøSu{Œ9Úï3šš¢fÑbO¡vánM=ƺ¼Ý~ðsŒÙ$ˆ2jÕFU-.i­´iu—„ó]©¸DNÒaY×$²1P^æ÷êJ‡æ ËÞév¦µqÍß9UH&�,G(i€tY׺ÇU„��ŒL,iÐ�ííi_9ÏÓ¯ªêi “šàÄk”ÆVÀЯØ_oÁŸ pN,NÆâŒŠs*ÎÇ┊+*®Æ5ªôæ‘îš+TË”Æ<‚"Ôp«÷†@‡O@¸ GÆŧv¨CA†¶óð{¯ VÒ„7PR$!ØuØ ^mH“· ñ¥£‡-JYI`¶¥±Ðh‹hEÅ4øQb:‰>°€:ØV TEP·†®5 /%H›×sƳ3]BS©Nöè“õùí¼T�wQÄÚnGžw[WOÿ'•¬ªg-©Íš;ýÉëÓÿzCjú�6Ä5oÕi:›õùOØ©()5jKX<Ɇ-[p£ìùn‹ I *ûHAýÈóËåÕÉÍé‡ÁÙíà×ÁåÍ#J.%ݺ:Ï87.¤«t€N=317S`TÛ,ÌŒ`žÍ%\«9]jø¾W:4[lœÏ «3G音¤è¹DG–ì¸îo”˜8uZyK¯7µârg@VºöªÕ™ÁB�¨9Þ|ía|é­–MÛvõ)¬©+ |­É[E)x$+˜ê©X¹~š·{ êc¯w‰!O@i/MÈÓc \ÿŠELé�tè é÷�6{•²¾w—ç‹$®…0¾è•PR4ʱaÕïj“4rÄᤊ}ýmßü@ý@¼8-a¾ÔZÞÙ Z A½§¥úhÉ’‡?jBòÀ„dƒÉ›£㿸×êÚJl`*Ÿ-˜J×R.e¯÷Œñá­ xÞnŸõ$âFöüÞ³=pfÁŸAÊx&© x¶›k#�–nÆÑãvëÿÛ߈Ï�ºÂ/¾–ô8Zv´}B6ÄûêŒ6Ñ)¸”FÏ#?kŒüÚ?C×ÿT#hs’+·…Âó¥UË7 ¬àýèÏqôÆ}%¿`—ÄôòJþy˜úŸûŸaW…pÂ,ÿ�Ïâj›2 ˜Î·f@reù—\ºìHn„Ë å)uìØÑ¢�CÛçäq>C„a ¬Eƒ6Ö§‹zŽÄÈØpMÈt×h‹dØùgÕéã@ø'°’zÅÍR^r µ/ìÐqayá ò¢6È[~ªI�§�˜÷ÏŽÖ‡�]á ¥ XÎú+5 êá ¼"/`œ·âOñE<À¾A‘Í~þ£xî´=þMq À–QŽ  Dí€vM¦³o$ÓY'™ÎŒ» v²AÊìå�§.ßns{êÊ6u/-+ßKÝ™�~‚MRµé´Õ'”Q�EMä|”:‚ÌJNX·ÂVV†ðlàøm~\éã·Ñ ÇŽÚ†ê^ûSQ$û•–h6(ÑLÛÍÊJ4Ó†Dƒoç�ìqÌH-àÁ¯F³Ãz:Œ–|ðE‹èpÂÞC\9µÅ^Ÿ¸ÝN ,üßÜ V"�†&f…Ä& Â,œ¼·<†©l�²­å¶/…òÄ8sÞêÛ‡ÇiÿñvRb°ÉѪFùd&þZ³ª›!jm—çˆö[éî72U�W.:**ïö”ÌÚS2³ŠÿÌ’R×ñ•¥£pw¼žº9‹þK½Øqì›ÞsmÏ{HžK¿Òšwœ¿¿ŽoÈŸ»ÅÔÓ)Š[JÁ3eìF=Êö£¬ÜÜ»öÅæÃ4QFŽƒ*˜b@ŠåU@¿@§üˆÓƒ,¬€•⌠ ^ž�2{lÜãŸq÷aHC« aHŸGñ|Åh8¹anŸ­Aîóñ‰žÑœT©‚S¥”ïCÍL�fq´o)úI9 8ĨÚ®mÓ©!y%ô¯´�Q%†0(OŒÚ 3õM¦'L®œ�¨Saò3–Æ8¡­?§_¸õµO£?‡M¢ÐXæìµÃyn~�Æv ~­ã:ÓÉ‹(ÌØ«éËM`¡þ…•²ÊWçËe2Ma7^YÃê뎪«ÑOcÒ9QÑ²Ž—zÖÄonLŸüf~·ÊÔ¬FñØ8"à·Ä|š¨ª¥¸Ä$çèî”dϲã̤qOæõ˜^ Á“ ïȂޠC/8Î(�ÖÈT‰û£i£q6ÉÑëø ÐÛ ††ñrïÐ÷ÕÉßPi`*軘ŽóÓ„>ð�ÎÁŒ¦Aư§0áþìiož;I£¾ŒT;$Ï?]t¡8ø”»˜º1�¿»†èl»En¯�lÚ¦2š1‚D}ùŒ²¨DN)15€¶LÁí�ía‚óñøˆ‘K,(…Í_j½ÌltÊ¢É�JÉÑfHÿ´ ƒ°é0ÁS’>ô¢«ýìZGºòd�C–P镎¼!üú¢*é“D˜ôI‰Ô<Üü€îÖe¼Ú÷äúŽ%&ÿ‡ú¾3tÓïÝm·�˜žN‘D%åøž…BA‡¦ö¯VúCz<©·yæ|ÈHäÊÀ=Ð�ÝDQS©ÛÈ;Ë'$SxÂþú“J‚‡‚ýå$ǫһ|ú\¿ò Vý!ä “ªãjýÒyǵ�qñ×:q.2ø€7Ö1ŽAÁ†œîËÜ‚9øžašÉ[Ûmó†MÞÒ¶ÜãV’VïíÎú£>a,š{:©¬ýñn ì!ú'�žŸ1|¿èzêÓ ,æ*»Ú‚4òLEゃç÷ÎÏÞ�cÏù§} ŸVIÖ¸„úæ]ŒécXºAé0fó]ÂSBŸa²“»a>y€7Œ­LÌ 7w®r£¼XÓ¤tt‡üÿÓwŠ0~§D'Ó¡JÿRx”5Æì:¿f�FE�L¯2Aj¢MÄøDZ-R3±ÈŽè€u•.Ü—fÌîXû¤éhrÔÂO’ŸÄćüÊ5À$ù`j˜/�|Q‰e-¢áÝÅÉéÏ·çÃÇ"*¦�Zm£)S¤õj§cÌ…'ˆ2…%Eàd$“ªŽÔQ–䯵ë¼Ýä;¸h‘–ä%» “denìãÄ21U IpÁâ"É\¿Ÿ`�ä);Ø£œÃõ&È‘ü.vrCywZ||OF¤~¿F1’¿Á¥&ŽTr#Ç )° ßzÇS-¬ ŸDb +‘–ïŠüÈU8€ßÓ§ðþ^æÓ$¼7׿ n‡7×áZ¼?¹òï…@„´Ûáïß}º]{ðþü·p&NÎÔà-s9¸¦Ú±¸|ü¤Mçõ{éÎD4$ zó±Ã„æøð«Äùô±rÎòKìP%¥òÅñú•N(}-S9ãLåãΤ÷¯¤*gyPj€DRçtåÊ”‰#©Ä´ªc"á¥ìfè¿{ÈÛ”…¾>Ò®#ýPée/öZ¡G8ß @*¢ŒÄÏ¡§¡) ^§ƒ ”*Â1…ñN,$¾#ŠÝ 3lOõt±g¾4úèÚùºè@^¶^Þ%…“%f1J:²×Æ¡ý�(‡¦0JmÜÙéÔÌŠ¥è@_³ å™–gëϳúJhgR³[ó~JŸ�Ü5ô¶Y  0?*’þYgô£caT•Î;ê)†u$Õ$ :¨ýtWªZúz Ú½ÛnA gÎçrÕ†Œ‰£ÀùÀ핉.ñ¹;¤%ä¨õ¢¸ŸË4°ÐÏ)'" èK)08³iˆË)¨žØCšRVѽn{QMk|ÿ�¥øÜf¢¹¹£Sf§@ÏbÒcÌvyËÔ—ÖÑ‘´’ù³ÄÚHô­:D_%ö ükQ·ªUö1 /³öe”„º²Iˆ)ï]X‘BÁ�X„‰8jY11hbí"-­aí&c8¬å¡¿>L1*„~ÅA„Ö4t÷ã_’Xð/Шg;>ÊPÀãÃC[ÜJK†86ç‚cvêµÇdÌégÐÆ5yî uLF-”7®M¼?£MYJÁ¾0J k"ÕÑ2"¬z"“Þd‘Ä…^âYÜU{ÍPÄÚEmñö½¿`1÷$K—d.!•¢ÑjO×)—÷&üh<¥Þì-ó/Vz†ÂéWê?&wieáòÞ§öŒän’w3 µŽ37òâÈ(Ð&&Ö¬h,\\,=Înj|Œˆ\AÖEà3— ç+[&r›òò0œñ8vœ±ÓÕóšfÒ§¨8²~]ðä8eì/¬ ýU¶ƒäh¯Qxœ£xd]ç$£Ü=${Fñq]Ñ*}ºylƒñ|­¡œvÔ \½éç´jßÛó*Úë%§„¾þºÎšûš}Ÿ"Òv<Ýטs_ÖŽðÜÑÆw¸ö=:Y—U¾TŠ{ù-a?�üìÈÈÆÛ-@8&‹Ký5ÀïM³7ÖÐj„xÄ9j<*Z=öXðÄ�UFINº¼›–]—ãi¾j\Ñe§„òoo�Õß3ƒ¿}¸n~;iNø_óH(—‹a®Uä-ôLá{{s®vûê±‚Š·:¸ãÖ±ÄÎå=7wÍqÀ eÆÓg/ø«üê¢3/Aš vU͘½G�×F3 Âa„¿ä£¶4rDÅ’Ö j.”±€²ÆÉ]^ 'Nå]íÆÐbG#Ò$u¨L²é×:¤Ì¥ôÁgMGw&¢c`5;‘wßc«�¶%b],B•p‡Þ[–ü3ã0’iˆÆ1ÈÕ KÐ÷|¤ü³¸ "ÄeЄ ìGêy••O±VXPá¾uÆuP²¨êºšÄ¨KšÜiì‹Æ²Ü˜©t¦¾.m~v¾�$ÄJq |+Ð*U$çZæ ¯E ñûs™óîÏa÷b}p0eý2Ïb­]J9‰wv2qNŽèˆ ÕRäGg ] Xi– _n>ÙŒ ¦M½y#×)#ôt¤��x¿rHnae•>6(œjå£ö‡£¬xñú›”¼p�àΡá™@ÉT¼ "3*óÕWèâÃv«ÕqÓÐõ o·&•�(| 'ÕZŒ0V =· êaû�jc™À1W» 7f^`üV«ÙCD 0¥«W0Ö¸CøøãÔ4ÊRRGˆÏÓ¼`s çAqøœM(ˆ‹Ö‰+R]Ã�MÐâk¿\_„—(ç]«–8•÷p”û$©²åG$!ÌØË‘[Zã¹óÈÁ�Ã|(�Û†I´qEœ$'ÍŒP­Í8° ÖøNíc4`hK;²[ Û딄Úñ1«Ñ‘Mê>\ŒËœð Ѻ®ï¹?‰|tˆuíäïø{¦ÄXde}¼Êù# (æã›ò^¹²‰REŒ¶-ä;3݉èÄ.ö¿ª±Ì™”Æú«j±œ«Y‰�A’i0�Ì�Y$–]ú`²ac·ÛóŠÿÙ| 6×XfN5ó.T¦°�½ ,ôœ¹«÷öê$¯øXý—–ÄÐú¿PKÒV1]c·{¢ÇïVimunify-security/assets/ui-app/assets/static/shared-dependencies/named-register.min.jsUT ëÆ«jëÆ«jux è‡uSÁnã ½÷+ܬ�ÄÒ{ªö¾UWYí©Ê�’±C…Á‚qW–ã_°“ØÞ6˜ÇÌ{o†û²u�wiY�wÈT&"„ÝC'_ÞÞA#×q­µ”!wª†ÃîŒýa�Š¿‚*A"ÿÝ%d-€*ò?Ã"s2pí]*Ójô�7Á£Ç®f×'LÉ+gÚ[®•µ�&RS„š¯KÇV×¥Kzé®òļœS#˜£½)É&]6®ÚܘїÒØWx®šÆvc]¦BÕÖà0Nª¬|SìÅœAŸ<}Ž´ÌœNĤ%Rö+øÚDHÐèíÊñŽ�…l#³£ žÃ@)[9×MFdí(uL%®«•ÐÔëÐõg–íì(ËgƒV¨�©UÙ ,Ì t)ò«‰HBO'x þo†‰›NÜLê�rhÒœˆÕî¿fÐ~œyËÆ‹Íæ‰ÜtztÍÐG½™’O|ªÄ§ÜÍ“±ØÉå[Éh�Õ2q»Åí–Üö îSƒÅôRÏáÊyÙO–Ü!›Ö 4óØE°åSþ¦äþÔP±å€.>6¿Õ�âzô¯\Й¯ýÕÒ€Ôéà8]R&ÒaàèüìÃÑõÙÅù͇‹“OïOo®»’ŒŸÏ?˜ÚJ'�(*ü–q§$oLS'ظ´™UÜ5ÂáÌùj9%v0‡7AS6¬¼™÷­©‚Ý´S�,�×KÊ`¯X3ïOÌeÌ��Ô²tò‘ài Ó†@ ›�g—— Í»÷oŽÞß\\2¯ÐœÍb÷˜û¬'²¼1�?vã�]:d¥™Ç ¢ÞNÍ‘àÓ,Æ—Ýò«ÕÔQmÊ==ÀÀ’Øs‚î¼)æq˜[ÐÉ &/‚¨ÑŸÁ¢õ„ûG(Q|Å[O”/E+Î`Wú?Èú6ðœØñß‹Ä�OÀ@ôøü1s¬óëÓ�è=[yyt|ŠŽ˜bÐü½ÀŒs:C�8ä)ÌŸ¿»ù|ôþÓéÍÑññéÕÕÅÇø’ Xââ[òÉp©þø‘¢®\2 ×ô6*d ·s=ùÒýRÀÇÉŸÿº$ÅP7!FZG'V‰Ö‡<‰bÔÁ<"{Hé/�þ‚Î0c@Ð8n8·,5µ¯CBîû‰l4Â3ˆF�…ç¨ÛkÔ�<ºMuS½OM–õ§¦ëšËþ=ÕÜÅèÀzHŒ;îZ'#ÇÔ©öøÙ,±=§Æh8¶°¦Qc>zm=t†cÎé»k‹Œ H[¨ÑŒnc®\�ÉÉ>…¢rssoc bnã5±*œœéäal™eºÙ„e˜;2Æ:�|¥3RAvb�ÿX9.�­û�6$0Šmwl‚»Îtó~´ šFŒP¢a df⪋±º²ÓY&exŒ ÿÖµ»‹>,ë3€Í‚€qÝÑKP¦ œ{or8'üé¥$à|-úZ’fÀk'i8®Ì�§2‡è³@óž§ô]Ó K UL!bÄ•ƒŸJ+aפ2•…`§*kަ*ë BOu¢¡üeR}y^ÞÛøáˆW®™ŒEÃt•$¸Ã Ñz^¤ŽFS¹–ˆˆÚ¼ÄöWÖÜÆ$ãþ«·sÛ\ZæUý|¦ <…L ’(¨�~cy$̧c?ɇûaÇ?sCŒu2sáÞr–‰;<ëvìù+CÄÿô‚ì . ÚUû�Æ�_>ÓëkêJ�s¢2òVi²áÄMwì’MCZ·{Õ2Ôd¯Å¼P›Ó6ëEf[mêò×b«PŸÕý2üÓ· »âq’Aù¡Xò ‚»X-§¨iW•=ƒ@~™Ëj¬Æ‡øw~BP@IR »>'ÈÐ÷^Õý&xl1Þ›a·ÍBP•ãVÛ€F˜l±hˆß=ôƒ§ï vÊèÞ¤Šòý�¤^ä›ÈHs²³­yÁ8 ÐÜæŸáÞyS�CEBô]7ýîU#P—¿6›þÚ¬¶º¬Àm»guló >¯{fû§/ø;cr/RB²ÐWªËÕ‹<{èÆ,é°’�¤Í(¦Ý\ƒ!@ž_e�5·Dƒ1¬Þ]ä���»^w!#ý·uùk1�ÔgµÍòR…ÛV[‹Ú ¶ØZ4ÀëžÙþé[‹�1¹)¡|k!¡ydªÿL÷®*¼~±Ã4Vçô¥þu²ˆ²‚ËŠ^¥ÞçÊK>¿Y9Æmas'Ötk½eEòm¶ °Øbši„Û6 PE†[í?šà±Å¤v÷Ï ž¾Ù%Ÿû’$Ê_Ò�ÓŠ|GÂîyÜÙ�ƒy~!4ÖˆpÜ»îBrˆHH¾ãþC ÝÖš�*´Ûì<êò×bF©Ïj›å¦ ·­6µl±Ûh€×=³ýÓ÷;cr/RBùCBòí…ßÔÅ®ú öü2+‚h¬Ãð�ïü¦‰<22Òïú¶ ‘Ž›ê3vD½ÍN£6ƒ-æ•xm³ÞTb·Õf£>‡-vM0»oæú~cw\îGb(ßqÈh¤¸åÕSôx¦°°ÔÞä/ÊÈè7„�P1n¡»Öo6 iHˆ-«ßfÄ dr’zÇeÖÛLŠéÖ}»fyÊ zvy�‰ÓÍyvf"Ž�¥ŽêJyv ±ëxöaæYY]Ïn HÕd¡�— ÕÃvÔ”ÏDÛŠ*¢¿4¿õMç¡?Ü}gišîFs¯ÀOÆý{2½¥nr6\ ´±C´1Ÿšá%Õ×£;l+ý>£ä®-ÐX‹u_ÅüÝóýÈžåÐoD†-ëÅL“ YèÓ¹—€Š,Zü—øKÙ˜¸ùäbk{©÷†æ'ûÐ`9Ãa¿5!®íx�Ì­'µêG™{O €š«#™wv¤j‰ðrJYÙ+”“\¡I°ÜLSi o¨…©.I¯oª‰©Œ¶d$4ÕÆTF[":ä™8\3�LUœòÎÞP/SYør®ÞT7Sk9GoªŸ©Šµ„›Ë%N¦Å”�ÎK¥7Ï• jOU‰ÛÈó+iš§êô©aôÀŒÿŽåöÒ1_´=êdGi˜ÁOb&¯'Fƒ_Õ,A!)"É7 ƆABg�-R€U8ÏâkRXŠ­&¾8‚lTO5à½ÄõöãÕ¨ã<º›å{{ÇênÐVög9 Ù-_àÑrHò]ZGŽOË!𜺖.³½SÁ.Üs{‰«!Äù9=uÇVy°0BÅ¿wK†LêöðL:ÁÊŠt"Z+¤®-¤•¸¼YPVu<%ºw×—°œ&°‰oÌËÆÉÖgÝf— •¾Û.qW_6¨w_Ÿø½l¨Â{ô²A¡ÙUoaqZq‰{-êoV–eÚn°m˲F©”=’¨K% ZÖ2IøæI‚–µQ>ËP‚Z•ñ aQ(E0äö¦¤¼Ëýr¤<�†W ¤*s¿Ð�LL6F/5Ê–Vca¼ÏzÊYõË„È~,1ÄźF:7þI¿�ÁðÕÝÜ�ÿØÇøÝ0ù’äþú�¤¢=%U’*´…7­Döö¦0™$-MU*ygÒ.‘Å3q”M癈JäõLe|&¢‚L_ü¤›¬;fúbRq'%&˜ŠÜÉeúæèUÎô"5íµfKäúj¸j§úà¼m7!žæIÅpЧ:IK*~=Eærÿ†?y&‰Éò�»ȳÝ2É‹·öòpñw ìfª>ÀÝÄø@ÙšßQ˼åE¢w®ËK ÍD¹©¦›Ú2S*B*ò"¯š87º-˜Oæßv] >ÇPx:!0~m)wô‰ÊîãbºÈ +ai�ª„™G3S]ÜÍ^@‹c(Tk¥D'ëÔ=M†·ÃË_"ò –v Y‡WˆÆ…î�†Ìðì,ÍTà6ÔG†…ÀYÑÈ�^�CÏYª°—†,Ì¢žo‰Øãk‚ƒü†K�xo‹Ý~|�7#{Ì�ܲò³î±¼ ða¼DÙšb‡ldÙGñ4“ìëÅ«×_Güaa ÛÐX‰²®ÜCФ—‡ ›tï©HÙ#…ÑËaÖêtÿŸƒ:;¾‹EÈ ï,+æ8ûh8xñºJÐóÈÀ ø8PµÛþ¶TÜò6X¬ºôŽtR¯7àãìq àåN‘g›,Ó¡ü©wL`4ù[6�ÊÁF�¨Y¤°“œPéá; \lqÕêL;~tØó)V†ˆÿIæ:^Ï ÓU™™³ëY¦'dKp£®l˜ÐÈ ¯tW@Þ+ Á=;Á ?ij‚u›´+û�èÚ¡_r‡fÒ£ÿ+Å‘$†Ø´üYÑ»‹ê1—…©›vôE^yû ÿO±þI'’‘¶™8$†iý_Â!¯1¢†FUìšvi&äèy_&ÕP[‘HŠ®Y‹Ì”¾7&uÅò~Ãüp—û÷6¶Ä�Ù6ÁÎÊpTÓò;´€µ õÉ)š¨X3mÊ´9ÇN*ù L%箩«“¬É÷ 6®ûC7=ÿ�¸x É+0ò]Ç_R,ÂÒk_Å—$KÉAÆ û!1ÎXøêqµ%>ž­ ®ôιB‘ÛÛ<§ÏŸ“Áÿ®†‡?¿òþ¶lóÂ�½_öC�ÿö@èLáPJ úð%äŠ5 Øš]tpÐCÂeÊêRÃZ¹°æ0c�‡ê0@õ"¹ÌÀKÂCýêó;%Ç Ôuîæ€ãe;/Q×Âî–¼ÊXrjh)"!»þð>‹åU ÁOy¨•^>§=–7!è$A <œûüƒ«ôÆñ9ÈŽsi›–Ò�na·[Û.¢ƒàs’¬ÝaC%JÊRà$£µÒå=,Áv«§t…È·îò¹‚»ü,á.¯åÜå?³P½ðW{ÌìÞç,?mØ4üâ‰íòƳËvà_¥ þ9ó0´�r,¶1S½áe¢Ë¯˜zƒ� ߨ†}ýæéU¬{›ÌìtAO/’ª—P 1¿ö¼€RHÀ»hTSŸ’šúgM¥rNDSŸžBS¯š×ÔïIMýO\S ¢ß3P[ȃ¤�Ò²¼KÊò�*VO•‘ˆÕßý›ÄÇoIMý­iMýöoOjê?$ããï{>B*h±K¶Êñv8 !×±E.MôÑ…ýq”2’lÁ¿"B'¹ï¸J—Í\ðc„.h˜•öŽJ½®À^©°ùUÀ*î‚:ƒß'?’Ù„>²ƒVªz3ž¶gX�ÎÀ€lâ®l£túý»J{‰Ø�ýá' gkÎaö4$Ðë¤)°Y™�.NLÊÆ][d¤Rä5¦íŒrM»0÷ÈuÙ²O—ñ ±ë¯Í¹Œ×ýúÌR¥û!EdöUªíB¥Z‹*ÕrU ˆ"�êÞÒ܃‘J=Z¨Q�nÊêK§µT çª ²=.RÁÒ[š>mÉíáÕC¹� OÒÃ8Oº¡Î;˜ Ú‘_›]×É¥´¦ôJû©Qì§½®çŸåjÿŒAë/ùÇ7ìøÎ˜;£-c¬<¦kSbC“¼TÐEî@ Ð^j5³ z&^üè[ö&bÚwìMÂT}ƒðl#´ð’v 7v�²{¨f:ö5Ž»�˜”dÍ«žydD{‹™#­•%í�Lî÷ïK&B3Ëc™)‘ZX+Þ96T¬Á �uq|9N#ÜAßz ¡^†ªÆO£j¨×V5ÎUuä0°HÑìjd3jöˆb4l&�°G×7ïÏ®®oŽ/Îßž½‡÷ú�äx/°�OtAž£Î¹iœm/OLž ‘7ã |¤–¥ÃðA|X‹Œx—ª¼çLTŤhã]JÁúèÙD«ubøÂÚ{tRËüçj QäZ^-ŠRKaÓ½8µ ˆ5žÀ„>èíÃDúøK4Z½¡q¬)ëùùs…þ…¹},Œ�M¢É‘mãõ`Ü*a¹ƒêÚ9ÔhH3ªC†U`ù åuûúÿÛûÖî¶q,Áïû+ζ›Ü¦4’‰K:ª´ÛqÎäL*©.g«f&ããCK�„ŠD©IʱËÑüö¹x‘ ’àC´²³Ý]] \Ü÷½¸ˆpOpïòãO?]}øtûáã›+ üÌz…h3¸D£ƒ�~÷ X‚·'þ¦ìLÁ/WZ´‹Ú~ î·¨�GÊ@mÖ½ŸÃ°‘ßrQ ì®nÙÉÇ6ß*õ÷-Ì�‘<²'™ G±^�æÄ^a;µ¦šhâ�&|•„"äæÿ í@0y_¤ª˵3e€,È­Ì L!Æ89lI84瓉e™œYavß(RË 6#cs;½2_W=\l6JýÉÐàŽ»ÎÜtœRõ »ûïõzŽ7ß’ü(‹NÖ<EÝ\±j!ŠU‹ÌbÕdµQZËåzµ³·É¬e‘(V%6Ì%ÊT†·¦k/ôZ ÃŽU­â}µ¬;ZL L–ºÈY÷ Z^ЮïÙ«¬b( ]Póy‘Ëüü´a�H d룫@vh/ðî&©g™¥2Û�sÏ|rá“=E“%©§ÜËéÛbM4a5*íjƒ±R[µâ{Þˆ2ûÁã’�úç¿®Ð;ÈUr;Ž;í˜àN'ˆŸ­ñ‡±'Üì®|y#øî)ÚÊWä›b¤#]¾ã=:AÀŸS4Ùƒ]täH\eÞÍD.¡ê� gڥ˖Øþ^Þ‹më}{Bå—<ë j7±Ë±U‡»Ã—äv¢h“±‡–4š�ØýE¤¥?œ b§£ß·  ³G±‘6~¯9:7[®¿‚òL§ÈE÷­Äá€c@Ád1âÛëù>fåIµ<µ¾ vš¾ÑKïC_/Ó÷�é~¹ë\sL�kÆÕØÕQœó97ùæU<‚öåT{¯÷:T&Ó·m5β†àïá¾°¬#’v~30©xéCœvQÜ ÇËÈÝÃ=Œò™RÕ ¬úÑÝnæž3gÜ�z¤�c‡fÓçÔ§†bÇŠ¸ÙÑ¿¥C|3:xâ;Ö%o‹—Ïw‰mõÒi³ô íóô|<䄱£—Ž{ïød&·+Ð�Í>eq²˜®· žÏ)ŒBÊërP>f½'>>»Nk’ŸÉÌä]óòA˜äEÇʇE—^.‡à¿È)ÚKdÄœçÂÃî—Ì£Yiï[¾—8!ÉŽØŠô-—xãc¤8á”Ì‘Ò1…`1h _³²>rSŠY1äxÖ–Å�Ï ê›äAQ%ˤETæ[YVä~‡§�Õo‰ïùA¾îq?óºÑRwiÖ£¡�ëá5É¡S«ºÔ°ùY·eªä“:XÝØë\0šD£…[Usóú¼³œTóãe«½ødU¹R‡EikòsX­ùyØÖÝ…4|9-9mÖÒ˜ìÕJ5T¶¹è"ІÖÇ¥ ÙdÝšC“¿â‹Ê .σžÿé\U�·­Ôø4ný+Ôu†Ñ¡^ݳþ%êy<.•)ìË^C°”=ŸW±çq}n{?Œ Ú†-xó&‘=4ñ«ß~6»N>Ý–‡á’+#g�¸l�m§j”ËVgý?Üs_éCvñw÷÷”:ä|À6?Ÿ$¿ÑTi�ª÷ ¨“ªØ%“†4o*e¨‰^‹~¡6¦mÆ‹ ȶš,ÔůÅT¡>ª‡%øçOö…ã!8ƒò)B17ôÅ%½ÍFöŒòÃ\F§Æb|ï‚‚‘4Ù°ï:A¿*î7�c‹öÞ ºm‚ª·š4‚d‹¹@Cø <V°WDÆU”Ï4ù¢Ÿ$Ð+o÷6õO/˜§;47ù'°÷ž䌢Aú¾“*¨‹_›ImT[� VÀ¶Ý@]Û,ÔÇõÀdÿüoH„KHúJq¹z�§×Ò—TXÍcé£Åc7—`(€çGYE‡Æ [#ÁèWÏ.r†Ð »^v¡Cý§uñkÑ�ÔGµÍðRÛVS‹Ú¶˜Z4€ë�ÉþùS‹½!y.¡|j¡Á}`â¶…}Ex5üü`§îÓXœà5Býy2ˆ’ ÁeI¯ïóûªC>ݬ,a[˜Ü©9ÝZnYqø6ÓŽPlÑÍ4‚m›¨"­æMàØb Ò º‡§ÏŸˆìÏCqå—4ô¸¢Ÿ‘ÐK†ö•Ž(€çbE‡Æ {ßYHÎ ”ï9ÿPp·µä£ÊØmfuñkÑ£ÔGµÍpSÛVŽÚ¶˜m4€ë�ÉþùóŒ½!y.¡|†¡Áýô‡_“žò ôü0«êÑX†Á€ï}ÓDÞ0:Ôï{Û„ŠÇMå{½ÍL£6‚-ú•pm3ÞTB·Õd£>†-fM {hâþ|cX†c(Ÿqèp¤8åÙSt–{ùôõÙ'Ãd�@íAv ¹†kkù™,¨Qgz5ƒ=EMœMé+IBœ6¿%×|.�3Ež¸UÈœ˜æ‰‡V�ngÐ;ƒ?¬>¶:‰ÑøEGèQìz‰Éo†œäž‚t¿ÔƒD}»>НŒ©[Á6I.ùÕ‚$Ÿk«E^ú,|pɯóÕ�•NNë@KFƒ:°©L¨BË\×.¥Ä9*«³>L}Å.S_ÅK_NÙõ—Q{}¨å @nSЇªoiûÒê¢ÒœÏÖ©­ã%@j«x ÊKi¸>Ü ®´”~ëƒ-¡Þú@õµ[ß�:ÝÉ$ZC«�·”•§ûeAåé|Y ‹t½$¼|/ ¬H·K‚Ë×é’ÀruY†¥§Ãò—ÊÍ$0•�–Ðð†R˜êô—Ôú¦’˜Ê`KZBSiLe°%¬C?‘‘û5“ÉT…©¯ì å2•‰/§êMe3U¡–Sô¦ò™ªPK¨¹~¹(Q™V�œ8:¯={î—žüCþ”wÃäS’{û�&£Œ’¬ŽwÒ ´…›Ö ,;ڦ㤵GÕrÞ™c—ðâ™0ʺóL@%üz&Œ²>P�§/>馫…ž¾x¨;‘‡Ò3EŸŠØéyúæÆ«ìéUl:hΖðõÕ`Õvõ¢Þ¶ «yZ¶˜:wK”¦TýyŠÌæ|ß~BÉšø¡àq8ÐG+>eÒLNíõûÉßèf²^À‰Obx§lÎï)eŽpÑÈ�ëâR‚3qlªñ¦¶…„È”²�Џè³FÆ&ƒ7ÃÑÉüm×äS…Õ …ð3ÆÖRG>¨îì÷N΋z)r�~Ê„€vÜõ&Ó/ÝL©¨ä=ú:“ߣNêóô99$>î;Û´Yû˜žzwîüõr 9�Eô3ÚD8ŠŽ·Ó¿–ëßÍ.4Á‘*ŸàõGÜ|ù7¶,žvh Ù®ôóPÈè„»+AÑž“Q¸ÿEeÈÉYY²A樰!;XYØŒsþi³Æ.©Ã {øå‹Í9I˜€¸¦_x,�£&–B*9!ÓÂo@Ά²vI¸Ã­Ã›ß9fߦÿMú:ÏÜu`*<3E—IÆR¢¥Óñi²õ|@bŠfÎv(†gAAìÙ~Ò£)Ú=¥U™ÑõB½¤ ÙÏWŒþ«Fš¤´ôYñÝEõ�Ë‚TM/þ!¯< ‡y?â©æ¿ÂéÄfÛ:[ן¬7<óB P®W8§¸£"nlíaÂ-qÖ6|Ç–å—Îj3<Þ,ˆ¦Ñ�ÆøAçn ÂtcY7Úˆ¹:ì.�‡uØRî _¬·�þÖö›ì£/ì40Q¯˜õf`ë@1ƒ’á�~áG¨ds<§õç¹gão—ì;5Çödá¸sôˆB‚FÖn‡Mã''¸ OÞhÃ^`kDž^|º}ÿîú“a»èk' Íh˃}¿3ÇÀB™ßñðI�ðä)X`¿÷ŸÛþñ«³™3϶.mZOKtðÈCÁÖs;áóÀzb�Lü훉Ljwfÿ?GÁ;Æn4} X{�æ[–eß¾Á»�iíÒ#OV› ˆ! »Ëõjruó)x„ÄzŽm–¯=øù³AØLøkÜÜØ‹µ\y1°�¸BòOºÉ3ñ8ÿ@A. +iùž=œ!èDðPFígoM�¨ÿ–50??mØ#¾½õÑÕ A{Žw7–-÷æìyC裊C¹±Ýù%3µë�ÄOöM–�KÙ0Ëñ‡}LoCò³a(lƒDGøèÈ”œ~gŠc™I4¢·fß²v¶<. ©¿”RC¦€ W®a›HÃ|üÊÐ ³:SèM‡Êý6|±ó¥fØzJ4¯àá¼�x[ÂB³�ì‰=µ—Ö“¿Ý ù‘�ðb°»d.<ì\n=2u±1.ŒñxÌ: ºZ¢ñvîzŠ>8+tt”öÚØ8sd Ýír©ÐdɆpH3˜$±— ¶RÏ‚hl}çyÀ[ŽÁ/h–”Yºí‡ù€yµ­Íy{žö°°ùƒmLñ=hQÿ)Ú@BI!‰˜Ÿ¿ô.“”–Ω}Ø’5]îÜâ1¼¼¾zuùéÝÇò,†™‚˜ì„s™»T¦)–6~æÿD¬çó%/iÒ™ê!rO¹íï(|2QLf±ôá·oì‡GµG_±qhÏ0±¥?9Ð{g¹EI ô!íÉ^‹žb1àè¿à9+m rTæ¨Þ§sÑ?HCSꉰHŽiGŽ„x�ÄC¦G´úH M~û×¢inQ„CP€3n@Ó÷Q 0¾�¨0Ń ‚dÙd¦¨µ]x³D– W~}ë!â‡%t]Rýƒ°¦œ5,m×^%ç ä‘­€;Füi\§×äã¥-1— :&j;µUjdÐb¶aËl™Øâ#ówþÑ%�LÁOhó3‹~ áÍ$ [‚­òkž¢’;ùMi$À Bˆ³ÍÁÂ^÷C('ÀÃ腔ߒ�Ýéým¹õBýJ8½µûi½…8¾{§B$'‚N0‡´“l?bÎsÙܰ�_ë ö›Š¡N‡)ŠwQyÚZa"eMwb“DëV~ö¤×uwË8G<1_ ¡¼¥½Åbî·ofžÖ¿NºAé§*ò€7­WdÉÂüLZÝXœ�‘—Íò°šà,ªŸœ;HæÑC”§Ä]4¸ˆæ“o æñÃPtóË`wÏR»M•5ªÁPï2©4 ÔÍ–uëfwYu3¶:Øz ì`ë[¥©ÜÊÔ¾kOr±ÈðÖ¤:ap)ÚYÅ£ôzp^Iéø,¯¤¤àA4Û½ƒ�”5Á�-È¢`j¼Ä“/Y­•žuǧ°¤%\)܈¿õKYªÞ$ûÈI\Êd%š5± 3õ0ØJ³aiUÈRpx†SEÚƒ”†å JZÍ 4h‹�Ë!MÌШXúªMW =,èÆJÑ]$»Úã«{Ëìt&Vd㛂 Zµ¤…‚£#ã«ã¹±'¼}j³—ãøËjÕM99òoÃNK†Fò ´¡kéý—aÓ9æÐ ÿ2laaC#´»�½Þlt9µ‹Ú°ßÊ*ëGÒª¬Óúò:íÞÙá;”zWo 7À¼„{ÌK¸/£nh]´æi*ûÍ5‡¿$~,éÎÅ�U•I h]®¨ö©m¸ów³jÐ(.*P'ÑŸÏP�Î"¹S ˼ÂuˆxȘäS7’I¢Ñí-›w³��ë%C�¼$ÅÓøÛÛhC Šä£bïwú�ãSøñ�$ÂA€™"bæ�GŒ(‰þEf+Ð /ƒl…!(À?? z¯NìÁqï‡Aç¼7°?ôŽÏ;ÇǽW?ا½³ò@v7N°Pâ¿Âh*Fåo™²Æ8ǵ7þº<Ïx7™aò;ð!ds0ö&àãRoé.›ôۤΫ³§” }ÿÄW:>n!Ÿ ÊÕ¬IÙ›(p�%œJ•(³o©ô ]ñаÉ~x¨î íÕ9Lòš,¸Çößí—Ìè’puàžÚ¿Úgj¸Çuྴÿ¤Ô2KØð•ý[¼ajQ%lxnÿ4$0ÍZfaËK?°/sÖjyË[ƒAz}K^$;c¼JÏA[Xœf.±©×°B†Îì�³þ‡ì–/íÑlùÊþß:RŠpž¹gÄbÈ(cÖ2½wÜ è›b„ ò‚G“…©¼×VƒT­k*@¦sÖzðRµÖBÀ¯ÊÓ.2ä†Ho\šrWg¥Ôžõ>0ú/9„Ü„ðþ¬ÚÖ­œ_É;rKÞ©Ui åÎx�~ån×Ò¢‰+¶j ¥Ï‹.ÛªÃvžä4v„ç´_hþwÞ¼J¼ç[øÅýòûG³ékÚÛÀ˜Œjຫ’lVª˜|ðë¬ÿ'%<Ö5 ëU]€4GA—aؤèÈéž_URžùðÐ’N4Fä¹!™U Îéµð<Õ$º¿Jr;�,„þ×ÐþHqö‚wâçJ’Œej¬AËg6É» iRœLQõc‡~ñf³DÝíf܇‰t7v>–Ît“'ooÙØ.d�tŠ5çç¾Ò#Yñõ*àÉCpô€?î6Ôa僲"½ÌYö¹FêHÉŠS�ôP£ÝaG…¨ÉA»èÌÝî¯+4ÅNÇŸx¹Ç�vL2Aü¸±?ìˆÓnß¿„8»YÙîÒqïŸlYݵ¢|܇í•BʼnØRHÜ€ÚS‚ ô‡Þ«ó“““ó³øKÇó@›¢wZ8E¶cS˜£Ež×7ŠþÍì[oТçÍCïÎûFŸ, “oö)‰éÅÉí!/fÿW¦å3Yí¦†$;q@—Wž£þ<…ù@W}LV)nªâð”Öœ*2Pœð££è>Ûè:÷”ü”p¡7ët»lŠ$ߨ}ä&lÿ¼ ùœŠÝ9Oiuº½Æ0í³¬Î?wޓ߉ÈAª€óı•Á·_ßó_î:Û‰úä6J~q³¨[ú{›E=Úug%cMÝq£¸�Šƒ0tOÏH¨‚P]'ûÌþ5ÆÎ ÆŠzÁ®"SBY=S´T¥/q'O‡éRnér­Ïç–£Žc[V“«Mñt•ãi‡Iùª]”µRÊV¡R+óº<ÈËû“D—?¬â*nYÐ0褦úgñ|[9AÈüâ‹­ø¦„ÌOøs'B±ü–*–Á«3Ø2åXÅ6‰FñÍe}ìëbÍ�Ñd&8úƒú™‡bë—36º¾q-äðùÝiri'ö€2ö´XÝ¥,LMr”‚‘T2–¦Ò¦ôÛXª“~É‘bÓròw¾åÊMœ ­â'm«WaJ�ý\˜>d©T(F7ANqA³Uÿ¿ý½Iªª6U{Uºu1!ú‹:õÉå©ðÛ;Ë›ÿ¨„eŒ®ÈgºUteIzÎ °ó?)YŒ:•oìèk† & ¢Ì¿78Þýõ zœyÎ ùiž½u¹TºÒ¿£zXØ›¢¬+z’Ñ^ý¯ÈR»Øu7œlïð¤{‡þÀÈ£©ü¯wlwÖŽX¨²b¦�¯4êF"@øåyïøOé™QßÚ±7åp�0U̵²1x&8qvæ­WÚ¨ôN&™hJ§¨S÷wÁú)JÓ º1Á"/39šŠ—Â=.òQjŸœ¥úÅýLÄÇ9_’éƒÓHÒ˜§°R¡~ò2I`I¦Gš]€;�½�¢ Z"�ýþ$Ñ!MPW‹"mzԲЦ§”,t´èdPQ�"Ž»™ÔIíÀñÒK9qÛÝ�÷Îÿd«K_ƲÎR1K%2ÎSY’ë$…GJ=Ë“k–�ú+¿CþQºÃ~ï%Q©R¤×¥ …IF—ZgpÞ6,¨ÄPI¹þö�J”'eÖè‰44‰–äÙ¥MÒùP¶Þæ|b¼â�’×ÙÿÀ© eÿCføÕç‹h[͆T�GEÞ·5�HX`wX*ÑæÆÉpïôýQÌr2g[ûÓ¶È‚ éÉHW˜Ýî�žB%ÖOQ¶Þ25¹²‰O1Ùû!ÑR¨g‡¡eÊT¶´\ &'�³þáS(˜‚ìþyˆÉô%ÉQdü�“=T~Aí¨\u5¼ñ�+,‰KÓ�ü?^…°uçRµª}72å��Òj�æÍ“¼—=(-k^)©æl'{+î¾,^sÄæ]vÀì-¤{U9A®E V®â¸¤Vêu¨‹¼´á$˽·ƒJzŠ¡R–%ö3à^jÙ­²ÆWZf+£ŒYqK£y«ÌTávYÛœ%'ãøŒœ¬îä„óûdüwL±þªùó¸#9%•�7¯ ¢ÍkòûRûøcP¤ób‡\_ýzgJ×(ÊÛ¹ßP n±_R>Ïže&úVÎSÚHÃ÷8u„lOÎÃ�NÉ[œC&„×änÝðäè‚w»£€©¸:v_p“Œ«V`¨8X�ÒB¹!3äá¢+ðø5ÍY‡1emȾ×;­ÚúP[äCäÒ!«Liÿ4›ÍF™$E|‡“)NŽA:ÏAA4Ã’DJ )2ÚèZ°/‘¤µ,E ð,”ÔM{tq�{¶èrvZ]4ƒ €ÚsP ¹µÿ�õì¥Ø)%üôôä䥾û‰Ë”wVÈ1«|rAg9SÔ%§@¢Î/úô?oß¾¥�û}ù7Ùu8ê}–ÄæàE‘/ ˜Þ—†}þݱ€îŒ;ÒýžPb}²pûHÙDGÃŸÕØ÷Q›Øþ”uX×oTä² -sý·%.k®F7Ïå’AƒÍÃÅúy–$ýÓñ€ü·ŒÕS2dÀÔN‰Jq¨‰Ä¨Ô€Í¥G:Ã>_’¤�o³Á){€2 ÓÛ·Lë´¦U½~zôœB(•*iˆ¡�Té9Ù‘N›ZÔ$m¯y(©’6Ïš0)l-Ž?GÚ”�Í¡$O °œ-;•ÿFeëéÕ¾�ùý¥ˆü6�=¤ˆ ëAIdÃ(5—f6ƒX�D´=[hd2Ð * Nj!ô|…õ7›¬ephˆªŽ°þâ9…p€ˆçdG#ˆªšÔ`L=”)F3ø6: iÀ› wëáù½OíêèÖ³ÕÌ+â»§éážtìY¦ÖðühÒÍ&•b‡ˆ5d_ô:°éiÍ5Ì�‡|¿…íµxÙØô¦* OjJ¢ñ|S•v4œ8æ qÈHš1œú�çÑn,yn–4¾Ñ¤]«ì¥*5/‰Ý÷¾9EŸægKµ°;”´°‘$qf¹±8Ta{¨À¿µš´á»%<ÑrO©×ø‘î7(4�íÌê]¥‰�Oü­7s&¨ÛÕ}s²×? ?^W–hq @‡@Ñ¡ºê¢Ai¾”­n'¸4‹¾cõêlåGŸùë ^j²�ÕÖ2Ø6x©¥,™Ôä+»ê¼ÜYôY”Z#gäÖYÔç£Óµ8©"å‰�ÉŸÎæÝ¶ñ‰œ¹ÞŒ_Ї›áklvQøÆ0ƒ«Œ~“N3 }ï¾´qOšOÃ^l–„žÙï6éuK“¸og\žç­øèVˆ±0¬©Ü­ƒ`½²[ài ùòwò¨!Â:Ÿ§Ø{ÁòF�Ȱw¶Áš© ¡c÷ç¹gão—líùØž,wŽÞ ±û;k·Ã¦ñ“¼‡q>Òa û[£ÉÒñýÎWüD”Ož‚ö{ÿ¹í¿:›9“±¸dÐÄÖ“‡‚­çv\ôÕÄß¾}Å3݉ Œøßü ša½Á¢,0Ÿ‚Ç ~Å6£“\Fÿù³aØa�¿½[ ˜»zðÛ¸±Åókéñ�½XûÁE�®Ö‘ð0Þ9ä) )›ÛÛèÝ�ÌŒô¥ïãëàqIy#ÒèâÓ퇋_oß¿»þdØ@z' =?8÷¤³a >àzý›ú]ôoK¨3­'»AžÙëõo¾]‘ å-›²ìûÖî;rÓ<Ó�ñ‹�‚§’ ¬§% :xÄ¥>„€ˆpLœÂïÜò@æo‚×£ù€-Ë2ƒo߈(MK1òdµQJór½Ú€»—æCBšD"®sO%��—n�€à5ž;Lc2 {E�¨ïÅÄ º�6k/¸ W‘@nìr€ žË˜ÿì­ï1ÈÙ˘ŸŸ6ìÑÐÃöÖGW€¬ã=àÝ�e˽9÷Þò©oáPnlw~É<ÏuÈ�OöM–à lp½þ°oƒ]oˆƒFödƒÀGøèÈ”œ~gf c™I4¢·fò+Û'ê ¤þRÊ fÙÄ]íÜã1W÷ë«÷W—ŸÞ}ü@•þö׋÷ÿ÷êöâòòêúúã/†2íJâ™kš¦5þq :e¯¶Ë_À€Ü8¾ÈAi§Z毷Þ�13æýq ðd…gÛKJ�a ½ÖV²9Pñy³Dfè­˜�‰ç;?Þ|#>¯àÇ(x1ËíA:òƒqÀP>ú#G™x†?m•-Ãß =‚ñXy \¢�ØwîOæ:$*òÚRÊr�aÎó\0”»”°˜^ z/&ÄvëÎÿœ�`Í-5g ‰Åü8Eä~æGxDXuÏŸ®]&Õ1ÿø´‹3 ‡¯Hû){E§cÙL`xC<[‘$¿á`1¦ÈŽÄãqˆL(¸}[ƒ|�ìÌ�~\d¯{y]^¿4êè„þi½…¬j:&V#H¿õã ÿF,®„L†L—è-) ÂÄŽu¹Â+¿™r!“ÄÃÁ®O›Ö·oì1øE\ÐXÃзOüH >v©LðŒNV™BŽ„Ýp‰ƒó{ÁúÂóœGÓê��œƒÐƒiãƒPc~A³K¯Øƒž@ÓĽ¢# $�‚»ƒ×‚!2¶�5Ì&$'¨ºó ’AýŠÑ×w ž¦°IWû¡‚íæðrîü“s‡)!–¤ë=oë~Ü>èÅ…;ŸëIÌçä&hu¦Ó«{øƒÈ¹`OÆŒqÚP±?alz°@ Àà)‘2qï,·àØBR¹º¾õÖ«_É+ߌµ�¾:Ádñví]ËÆ Lwçù?îPq¨26Š~üB(ì <ɳ©‘ ¾@ Gžðû Àð(�MàÑ$þÈt‘ä ÂÖÞ%™¾p\ß0GjÀôø“ã:sä½îMÅ»\Þ{hµ†_M‰2\¶4“NµçB 4Ó�‰s„t™QÂù&tÄ é0QdP#(í˜wºX.“�‰˜ârÉù}ÍÝ ù¢oí•’�ÖŒ›¤vT…ž…žˆ' D’ íÃÜ-�;¹–|2×oð0RôÚâ¶1Æ»Ý-Za®ST2!�Ñ©GÚ™ÄÓÁ? ÝW’gÓÁ"ÞrжLDŽBÿù†0= ×dÞB ×Þ1M$ÄÏ4›!…f a�GuøYEüQ6TÄ-)tÎï 4˜]ª‡æD»½�ÓŸ’I@¬�ñV"bâ]¶;Š )ʹX*<ímð™Í„•XVf‡þÄÃwÈ4IÔ›AÞCfYAg=ë`âl¡U‚Ë%š0#– FUBq†2pʸâ€MzWÎdAÑÅT�â¾KMž¤x�ÐF#ô‹m.ÌXVe=ª»D³Ár Ab¼>Ã;ÓÚ$}ŒÆ^‚œ9þQNÜ[9þ�ŬôåO ;Ê`éuä,V¸šé2F¡ñ监mzB‚ýÑÑ$4Ãoß IŒÁ jÔÛlý…9¡ñõ–È� a0 7g#jÌ|¸¤-Óê¤Ð^»ŸG´‰jÌÞm°žC*ó1Ê;©=«SÉTæA§ ï̘�­ÞW0½\¸Ó+0SöXˆ.H¹ŠÿþÍs÷õo~öÍžËDå¬]°EásìÉÌ[&|¢:'.ÁŽ¡ÍûúZž–&ÌrÄÎP]a0Éyåçǵ´B§š@ü)24kPdÑ) ™W ‰ǯûÃî ¢7†êv3¾Çâ¦9L “¬ÙTç~�§5‡aÈ‘Ì#Ž1õÝ’÷¤Æ‰\°D´‡$y”!Å×Eì%”ï’�,”�§$•:•Œ¦{ªjc~Áy‹­D©l*jÊï\Rƒ·Wá<3Y8K·ý@gr–²Š­[÷Ü*êžaŽV?ùÊÄß·ÈÃÈ—j€ö„j-ÊÆ:=šûÛg–}|„EýWnýÒ È­[¤Š¿Ëµ3ep,‹T´¸¤Ç¤ì«*ͼïÖR]6AUau–€ý•?ôÏ¿�.�ôUвáè s¼†m*”"è¥Â ±Çi€‡ï¶à ºg•)F±˜a…qËÚÙØÝÀ¼~È/�3è¿ ;–‘gáÃ]‡†øË°ó¦¶C#ï­a‡ÛU ñ—±³aÊǰJÌ>†Fâ´•ËâRµTqüÛYõñ-ÞEïnSï´kç‰f¢JÂ÷\\—YnoÃrõ¬ü"ÛL½È¶ZO•îéÃü§õt»kl3¼S¹Yìþ®ìÍ<#ÌkžðŠèP¾µí¹½±oí·‰e36�aS ÁòFÿë¿PKÒV1]œÊ´'V N:aimunify-security/assets/ui-app/assets/static/shared-dependencies/progress-bar.min.ccc5df63f89c.jsUT ëÆ«jëÆ«jux è‡í[{s›Æÿÿ~ ÊÔ1Ü.$¡5µ§×3IœIÜNÛÔã®`%Q£E]V¶\Yßýž]@ ôˆÝÇL›‡ ìÙóÚß9{ö}¼�9›Œ ¸`Ú'õL‡Ó³#/bDEùûñ8¢ù'c S®‘NBÌ}ÝÅ„aqѸÀÑ¿�©„y0 ^!m0¥ž Ò˜>W§1QbÎ�«Ý[Ì‚0¢(@Å(BcäuáSFç1á Fì~ÊO'=fžÓ_‰|pÝŠ0< ä#Dáòì–P~6Ädôbæi4žD‹ëhI^ž°øÈ;¼‡‘ïrwF=<‰Á1Ï.&â‡(“*/&SñûbÊ“‹w÷‘? Éå5å Ë«‹ÓïÞž½»,ŽÄ02f=�ˆ¡nßb~*—¡ŒÓŽß�¿=¾<¿xwýöâÕwoή/|V$ó€Lz�¼›Žû„½gÑ„0~¿¸BdF¼)'î’\Ÿ3M†×ï?\|ûáìãÇë“ã×o.N¯�O//>ü¨"_ïz°¸\ {e^�½>þîÍåõÅ{1í£Š(¹SÈ„ºÞݤÀ’€Ë˜°hÈH}ÌŒ0òäÚ¨hÏoŸøçÔUYq °Ç#vïú àŸÙªø`mbëa�ë0ô’™'—NÃ0ÃÜ�ð÷˜�(WÓ{_“—Äœ¤¾"fL0óF®ª. Ça/Ö¼Çq"�M…rõGAl^“�ŒvÈ Ç ¤N„ »WÁ«b’2QÈŒêÇʰȉ¨€˜°La�#J8ÒáO€äIo½š#&äàtd™€(Ò Ò§Aü.Š&ÇÙXï ;¸Åá”ô¬ô®? û>ÿlÉïŒú=±:4¥ þª*°q@!˜Ôt"‹Æ�˜þS?$¬Çz_Ï­/z½5žfÔ‡„r o†„ùèÅ frÌ`EVW¦tÛHi€tÊq@cÀˆïa@ai–P¹¾N=-0£ê/^h3ùBõ/ÔÄÚÂÓ‡‡¼»M6¥š&ð°®6…ÔæÒ}®•—@]_T8]-ÜÆj¯'Ö”VAFWb¢¼ItòÉOC~šFî¶)cÔÞF‰¾(ñ€7žôM%H¹ËÂJ›óû q'( … lû´¶{«WWhÅü˜sA»v(ÊËŒDP CåiH¨À’Á½U|†gp‹?9î‹Å [E6’ÅvPŠÊv5Ñä{ Š´åå ð è0^I° ëóÚ ‘�‹ÆcÐ?èCA¥å4£Ñ�ŠHüE�á’þ:ìW€2A)Óô£‘û›(Ü4õZ³Üj {î‡$•QØBôÒMÐÈÍfû÷*úb÷¹Å°)5Lìp�(†cw.w$W•¿T”l‡ªü¥¢|¸ª¹ ¸‰C(’õ4ðÊﯮš¿*2›DŒ øÀã÷©¾'\h@0D&�±¢WÏéÎ3ü•À¬Lo¯Â+ä/ŒÝ( 8h YƒIèÊu¾O¡.# ÀÊj�4O]¡O›)’ØJåG\ÀsOª€^,…6I‡»€ÒÄ�ç’p©¿”~…àP*‘äQ”Ù%Q–nh¡ôãš…T?¸U‘õ8bR*ÍN l]«¥—µ Z’V1”«§ êUÂH�'<Óø\N*©ÑÜI„ŽJó“‹©G4ûñԘ߇$I/ØraQ`Ï•Á]±?f�q^smŽ3Ï*„Œqiñ ’‡œ$"ù›r?`pÆŠ•²d”!¸�“ )G`inÌ—BÝåã4K_Ô`l•ys‡F†=×›öÏè“ߨ‰,ÓAŠÿÌ–e·ê5qÕè8m»£w«Ø;Óvö�P·j�ºcÖÛvÝ‘2yßqšp_! Ò“f›\3Âá\ c…/¶³À6%¶ÿÏZ Y"- -Ójë‹zÓlîå¨z£U·…cìZ£-ýÔj;íF)vÞI!Í=WÃjJRL³Šq³i7Z�5×oóÙ* n€ðÎjÛNÛ±œ¶Ä©Õi¶�jœÖöò½mÕë‚k­ÝHùË­z½eïÑ•ñ¿M!õÁ‘B_4Úf}•r‰j-+ ¹n«fÕšOPç 1³b²cÔT!`7;»¢f9VM®‡å´,G‚×iJ%œz§U öžb;µº-¡`wš�$%6ízK„¡iY�ºí” k8-ÛjÀ:7öXsZ-§ƒôµêv3�¡m·š5!’f«S*°UkušO Ò-» ÔТ;õïn“FŽAÉðvœ”Í“3h~yþ1™4uÞß&›>ÅŒº#*’“05[ý‹Æå¢ ۚ̀¥YÂh>‰’¾—ËH(›gÝ»Àç#Ñ]:(sÉO….Xמ̔8 _aÃ>†£Šü ã Ò ŒîŒ™›œ¤º«› §y/à÷JͱƱ"þ—,Ò²0Y|3&~€•Øc„PS_Ñ@#�ø†JH<ï�%Ñ®©T<9ÅÎý †“æ½Piy?Œ¼›îºMÕj÷#æCˆ�²†<¨¸r�«äJ$.…ŠÓU‰°]˜!'ÅÍF™²_0ïcïfÈ¢)õ!&s7ùe̺B)#dqѱۖ�Ö5îHÿ&àÆÇ78aHÜ) µŸUsìÊGñíð«Ù8DõS¸TD¸‰3mÓ>T`€Æ½Ãç÷èèîîμ«›Õ,ËSSwVÜ”Ú�NçHŽiïbõP¹O*:_ÆÊÆÞ¡øÊ‚¿ŽR“¬]8,{¤w8׈�‘•Û€Ü�D‚UF–�Çâñb©{‡³·ýþ+qxäð ~zóB¢x0Œóîå/&~%Â$¸úYÕ»ÿúlŸ­"mcVOSA@eߎ( áæh™K"ÞRle•¾“@\5=ž–er-µ’j³jV¡¶L"×”NxÔƒUª3uÎÂ'rË&2´kØ Ç´›p¼°žÀ·hzÂÙi˜møÓ±º™/d’ÞEL9É£~÷6nâ–�RÛ ›Œî_oÛ?Ç6 á¿À®">6k¾õ(ðWëÿÄ•ÙØ*(³í“°ãáU©r�¸&IBήôê4‚ÊF–¼wf3‡oÄ¡ºÉŠŠµòÏ#¬R$Ýzq˜ÝÏ´g ¬½üðì‰È�ï=¡?ñçù¬ú?Ík©¢Úo;·ž'�VEù³T®Æß±jÊÌ)¯žÖP¯<dö¬.ž.ûÖ3I^Ê4]Yˆˆ£ÑŸå�ç™ýk¯Ô ¹âkå„r^ÅÄŸ§ ×ÚH– âh0Ø ÔJ×2ÞO*™K]ÿÈ©Y+¤ù»ö»÷¹Šçy%×ö‚¢ÁÛÐvJïÆ� ]ù¯bÔLG¯è’åõN›#I?©š}Ò”Þ <Ì£tBÖÎÚ§…UÙîHT8™rÑ©Õ"ë–á0LZeÆ86F`¢!Þe8æ®Bå[Ve#OТØÿË ÿ³ú·;ö”A†½ÃõAE£6Aª;Ƴ]A�”=à™ÎÑÿ8e4&³MÍ×”jÕw�\ÑÖL:ŽÏ'#é�nU½°<A¬ÆÁïâ½ÑÉl2Š:n68õ(Ã~0�·Ú�ð„–¼«8ßk†ºÛÕßJ&5’ûz™J…ÞL—“7p ©+;øÛ?'t•vÝl¶ìFí` µøàÇU »™PœYN«Š~íc0W©·Ì¦cwìúö9©N ³ÞnÚMgû„D-»i™µV«ÕÞjFöA˜«ûXžNù óÓ™{ú Sq?G¤³rÞ(”ÎeÊA&9Ô—’}’ïåË÷±¯Ö{ª†]1fÅk²;�Ξίx¢y:¿Ççƒg°8Kü{V¢GïäZü¥ŸÚãx¡^!’ÿŸ[C^ñ+�é £/¿6o ö,„{¶e-_î‹ùÈUAÉe@5ŒÄ«Kâ{kÅ�Ñ$û>×t¾ï·¦¥ïÛC,”¾oŸ}Ó0}Ý~ †¬O该““—ü#¦Íƒ±x‡:v?EWÂk%BT$”_¥ûÏÿPKÒV1]Óú—^-~-_imunify-security/assets/ui-app/assets/static/shared-dependencies/form-field.min.8296e3449a30.jsUT ëÆ«jëÆ«jux è‡Ä< WÛ¸Ò%øìeí­’Mh»�p²\Z`ËÞ] û¸\5¶´u쬭@(Í¿£§%ÙΣp¿¯{ÎâH£ÑHóÐh4ÒÙ}Añ¸“ã��Ü¿ðþ¦£iæßFYŽ=düŽ?~{Mbâ–M’�³|l–«²öužÝ8ÿ6LÉ8¤$K Ëg©?ßfœ‡4Ë mv ínq^|;ÉÉmH+´DÎ#Àh–[Ý#�m8«³Z㜄‰ý%ò‡Ó4b}âªw)ô}=¥±ÊÉ”¢ÀC |�þ�¥¬öu6žÀWÊ�¾¾�Áá=L²3 ó�G÷PóÁwûiN ;«“e¯oHÃ÷É„† R´pÌ)¼ Äü™s"�GGY<Ú=?<9¾::Ù{ÿvÿêüÏwû6X`gÓë"Ê §E¢€“7„ï1ÎGNçc(¦áGü>¥$±« Öú&Ìq|Š ò ŸH¡°¡fÅÅ ¿Ê²‡é»œÉ-½·Á&¬ŸœŒF8GSø.(Ì4ºá_÷ F#^¦á”_ÃO!°½WP±wòúýÑþñ9ºɸp–‚×Íí=Ô*º‹:€OpR Ã%Â3�,õ5dð@ý‡¦zº{@pïM' ‰€Âø Ié~žgyF‘uDŠ‚¤#& y–¨Iê]Fø&KbœäðJ„BGZ¼Ü÷Œ­P +LãVÄ®…<ékÝá·®3zÓ*&8"C‚ãŽÌçÁv¦€¶^šÑè4ú ¾ÇUǬÇ'Sš�”€ù0ßÀß×ð—âå€ðû~@ù.ÇC2cà ¡M5‡²R³­×:ñ)"ÁCo“nnâΦݭï_ŠÿËaø]ä“ UïÇ`®Û½íÈÐçMýÚ¶g4Ì9‚$¼Æ `ø>@6à$Ϥ9ñ{¨çÖÂ"Àl6ö·Ð ê¡’’\HÙá~ûA€¶6A¾Ä$Ó� ˜Âtpó0£þV°]¡†+�ï “ lO:òÀv\7Ù4‰ß²1°rèÂ÷@h ¬BA9ØMXH~qóR>ôÃØ%X ô•å2‚Ú!Uàø6L#˜†šé“§£Ã¡‡6hç†Äøÿ=£…ùGœonÈsYr¨y¹oó²�]ô=G/Kf~·òD7ϳ [LÞ�œs>Ñ0……ç«HiLn=´Õ5„ô4ÃÁCYp´âHß�¬ÆtÔV…€yKŽw¡@ÕOèÆÂÞ¢¹8—�11ÂæÅœƒ½µ4NLF³FõÐhTÏã�O¢WÍCl6q'œ6)[ƒ6TW£ W \Þ# ðþ0+X#]»†t­4­ÏÑÖ‹–l U՚Dzç?×íù%ÚúnaÏÏWìùoW5þXQ5þþ2Õø_jÆ_ëÎââe¨ÂÚ†)<^·ÛʪeuûrÅn]Ýš ö«õÍÇóîB‚+‚øÄÆâŸ¥Wz„‹"áBXåhïª}ÕsiM‰x¿Ö`IûIq…÷œÆŠ¥yjwCú Œˆ· þB“Ñc¨¡ƒ|’q e€ÄbÎÈ¿¿€ý‹V�÷¬œ5uuÎIi—**§„õ¹ê­b¹Œö/ÐÓx|O'l_º&ÙìÿÎ{tÁ·má^]^²ßŸaᾋM€*;Ô?/7 ÏµÃ_Ws6ÖÔ¥V.4£³]�ÇwE6ˆ”ä… ±NãJµSy‰~Ó`Lò.ôð/QëÂ÷¥¬.Çk–ÊU‰üU¢(«õ�D%�*g„öa‹æ_pZ_©__F­Uûª( ‹¢õæ�m²Iô@oH!ÅaF+d ö”)¾óéçÏo@ªmb’;ÂÃ8S¬#2þ½ŸàþT€:D,`Õw¤hˆ©ïÁŽ÷­˜Ò7Á6¬ ­¯]¹"ÿ<`õ»çWû§§'§ŠZ„·œ 9ª_„‚åSÖ‘p8­$ð.Çq$f²í=ûêÙ3ÃÂ�4dtî eí˜î–Ÿ0'a;�j˜P°^\‰ fÏÜ/�cËDä©¶W9c5�"�ˆ$¡§x<Š#¿T9²Hon²‚S À‚Ü�fcA-L7LOéæÌ!s %ÆÚªëŒ†¶P1�ÿ·Ð÷øç+’ưÑ*Ê_¶ª.ƒ~g-S„íO爰H_Ñ qŸÏчÀ #°1@ë[Ø’æÅ�ð/&¢¨ÿ3šxF ¶ëëÿ2¿ q•Óó‹×1qåRH©%†R…z[ÀÀȺbÉT¤ò_Ïž­-_”>J(­J·6×ë, åü}±”¿þJ nŽVH«�N“Ä…â bÈü¦Á´™­0Á¶À'^ÐW�(á*¥â Ÿà‰4^˜*ëõîtÿàðÓ|ÉEPÛ/R+9W¤`ëÅ`£7ëÔ’?Ï$Ϙ<Ø`ݵ%ˆ‰fkòÿÄÖäqlMjÙº‚#†ݹ¥lÕÐOÃÖØfkâ°Uõ–h¶¦t ùhÅúÞ…9¬¹žbhFY¼¿¥B°eü]pL•s¾j ÍPUÂŽ®X�§ÝÜ@7a'X”ùÁœugÁ¹}Z•¼c\÷n+ìÒQ&7×øOG'éZ³{­—KGÌø�Äô¦ä�©ƒÒìè6leÙ"´1uˆC`Š�£@¶Â@™% G&�l”ÀˆŽ³ûÝ`›ˆS0æ™–Ëà$;A¶I¹.²dÊÛ‘è¦FsG7ØÁð9ãlJ}ß?™R ‰k±hÁvãÁ¼NºWä¿%x�|šž€Mk³+ÎÂ�¸uÝ‘‡êKæ =\g³¾w�å`îÀÚyó SRfŒÞž"o°þ¾%£îÆå·ÉœµFí®Íp¼e‘«Ûæ 2NBµ íš Ã%ÝZsËaz‘Ämñ»^glÛH:ªÚð!UQß8ų _ß9¼ãþ¥P»�x¯ìH¢ 25Ip»ò¹ôP^Wc^-ú‘+XD¶ÊuVZÓ¹?í§ñ€‚ˆkK·Ph;¼Ç·°#nÜÄoáç°èzÙ$Œ½g¾6í¨HÔq8†u�°i—¶$¤04˜ÀêætÆñþ-|°~qŠsi9ýÜÅo×9cÌ(¨˜Ýª£Ü¦Šêœ­?Œ ?˜k6”–f92Þš ½n¡jl.úÿâñ¯k(¢õ ÅÒ‡HÇyœA‰ƒÂ#¸–9y ­N¹Š4ÚC�<î6 宣<Ò?Áâ'xÊ<þt´;¤8gYC‡ è«‹ÙßSœßëM‚ש±lÁ6ÝY²�8Æ›ŠÓÎv&Ž;Ûíéd”‡1ŽÁ3ðóAQÙôfÃ;¦yÔA烜k­/“vŒ„�½iÎ!^·ðV[™µ¾iÝÂèÛíš°„³¾Ð £V·óýË õ¬õÕ~FCðaŽ“·VëÛóÖÖòáÿ¡–GãI­–ëü<©åÃ¥Z^“¦t‰nAí~eŠä¬õõGËÚ?`G ü ‡Eü¨sTÃU†®‰C?ð0H‚´„HÁª7$yÁ6ê5öÇÊ'ôYjÄ�0‡… µá¬°ŸýE¹_"1Âcpl›ò!œ!‘ׯÎì4‡>¢GIщnÙºˆ« ã\ý€¯®²²˜BˆJPS©j"Ñ fƒ$ã%R‡…ÎìÕ?–'}{xè7�ªsÉÊ©´uzÙ“P½j†q ¸0M¢¡ÿꤒ,±™¡ òÙù¬ýnéSŽy0Ëäð®‘üP=xìOL¢<޼˜úfG½ºñ¤sׇM¼ÚƒöË-èŸ~÷l`4ò½ÛŒÄ­ÁO-ÙøÂhÝmhÝ~Év­ó]ûÞónw NíôšDíkü‰€¿Óí¼| V’JþÑÙ‚-î%ü7WQœ‚®}V<.¢Vйyâ=£F"uóÃn‹E¡[waÑ “¤ÿ¾Åt†eÚ¶` Z_Ës¶lx_w>ùZIe«I¹’´ÆS`¶tÀ[aËL2•9¨,ýSÄÆÜ:J6ÕÁσ“Ó£«ƒÃý·{fT·…ÝÔ_ííì¾{~uòŽ¥-Ÿ•�ƒâ¬eDõÙà5ìx†$ò®ø× l˜äï­ˆÒUÓ ÝHC‚ÐjêXVµn0óe<ƒ¯×2‰«&0Èk>% 'á4¡ÅNǬóÂ)ͼ2|(�±Î7ó¹œ"í|š:Ï6“ÃΈö¼¾ÁÑG–´Ãfá�0çÙÁe 'Æ4](KÂ¯Ž¯¬ÿüùšn»�V¹Ì œ*,Z–°¨šzŠq¬R[ù œðpÛûIÌ2²XBÄu‚]1^�1qF>Õ„o�êêP*W”O�‹WK‹SQ7=u8…ô¦õ²¤+¤¬¦†”ØZ`u‰ÀT³ªBÆ”UÖm%ø6cùë¤báC§\a(deÈ·Í€Î�”y#dÁnª"Ðjc¥öYDþd&9Vã–·j ²§}�Ê}ÿå(‹ñ C�J®ÒQ–dùÀ›äÐ.¿W»Cœ¯Å.ïYD¹òÊýxQž‘•áo(.½¬âòè¥íË<ïAÝѧØZxÏF”¥EØÔV�© °†ô£rH±ˆZà˜‡Ü#¤Nµ²hZ°ÒrBVTã‚M—ŸvLó �Á³:hf¨¼˜â§;5yéJ§~ÁvY5ÛxÑÑ”SÌGÈgC�gK:>Mf;æßâJÓ]Ù±ô°­¾aéÃyEã4` 8Ÿps�ŽW×Ô ÜMc!^5Ušñï*õ|-baù%¨��iéê¤<}Î:`8ù˜Ês)ÐcZÉíß±t¦Ï„”µbR`ì}nqž„÷'9‘ÔE§ï¾(sYZ²¹´5fðm}T¶½‰%yÆâî…É]x_°ÀD 3�@’4ÉÛ´#¿ÎÁU«éŠ’5ƒù³mpBM´ó,ÞÉooIIu'–ªÇ}‡y‹øÕýa\èªe® ÛHÐŽ¾LÅ®”è�Û0™*ššk:2ÁþØwD(h8cYê\ƒ"öé¨ ›ªÂd¹iñ7ÔRÍïCÉë�ØLľO?± âd<ê׆%jÛ›‹È†2TÃ5 X�Ñ~¾È¬<¨Inœ@$ƒpîX_ TK‡¬¬°t…îV–Ãy½)5ü2—œjl‡mEêÍ6�+võXÍã� L„i¶Mpêy£•°ìêÎk¬… Ó ObssÃñ-T¼t66ºÊÒÑØšès9v0þìbÞÜ”'ûNùçÏÕ.{5]š‡Ajžôª±Óh�i6%X„ð¸4ÆmI§ölò-�\º:?,RªzK¸òök­³s ”Éö+[ç‡5ˆZw©x)d² ï‹£v=P؆ȩ[sqY}JçòBÚ.÷ ä�4é�(WAí¨K/bn]UàîÜØÿ7ÞS“mÕº#÷ZR¼o(gè§#z£u¶z©n^ã ©¾6 ïŒc<Ž4‰@U+•¢f^Ó‡í¶)µqá”W3Ï )ر»0�«a‰sÇîAûܱT©3 �ø‚^ίÀÑ” ;\­ìÐMã®:Ëâ‹)þ©«jUÒOdh÷=žÈ;¯Í–Ñ©,üdCÊŒq“Ð\Wz9ZØ9C“·ª°Ê#9u©uæ°Óqåª(;ež–²ëK�ta(öšû°þÂæÀÖ¬úlQ«k«�§ä9ÓàârÛ­ê€aÏwsH67=öÊF:*OiWhC;“iqãw:�¥À�IØiz-×"£cuõ2몃9 ;5þ�ve¢<Ï ‘9Ø\WXpqML2—ÛÆ³�wäÀ1Ë&ï;1=-•XH€ˆ®7 ŒcWW)�©µÕsN¤G X‚`Û1B0Ÿ¶|°³‡ “žF#¬=Su¡¥62;qÛÞGÚš%7ŽÛe—5Ï;hÛ^óÀƒJ�dç>vÊÔy^`â.v) ™âžg{Ù¤Êj½Þz¹m d ÝŽû¥%®f.h<£šð*›òƒÙ× áûëø#NÞwvº(� R� àå4)�¹|׺ãµ{`¹{Þ¼õM À>|õ?Kæ“Ù‡yëYs:�õ‰|Ôö µº“H߇í*>0ÿI[òßlº *Á­£ºî?‚²à 6�4ø0¯2xÅlnÙLžfe ³†¹1‹ýÀ\b™×>—¿S^uš]?êö‰3%^»°•“+–À¥êå$öZ¡÷Ëà³Î;iY–AÞÐê}X&\rõ¸ô�Ûš«M¥ì²€H„ YfÁvŠ/#­îý½©ÞŒ¯@Tn;]Š/‰—ƒü¼‚2$O—çRã¤ë¬ôD˜Ÿ­{¶õDhíýÏà±èì¸Ö£ÑY®É£±™žØ€'7-K¹r4¬Ì¹z]•ײòtQåá¢Ê¬FSÊÚáÂÚèiDÇ}žHÐj\š'Â\ã=•Ιîåá´7{OestoAê^ÅM².À>&u¯Éq‘*ÊrøêbAý¥×°h3‰iOÔGçLbI³BÞ¡#ÎIBàfµIÊ·Æ´ЍÂǤ`N»Ý@VÁYÎ Ër”ÅÕ&iÖ¶^¾<≑ùÆ/Û¹5ÝêY[ä!‰t$~w¸<€^Ô,Ó¹©eømqcvRÝž”�ü©Ù¯œn�¦·á8B4&Õˆ±€Ðé ^Eìä£Lžˆ{waž%²�„ÔM.o†Dk«2µ§)ͦ*Õ ­yee  À:�0v×�ê: >(½¯ªeJTH(Sä8U¥(ÄÜÔ(«Ì[èÕ\ÂsË<Äç¶ïñ?*ÿò摼JUÊZß+¿=ää®ô=§ÀC:0""ˆßáÙ$Ëénáä ƒü‚K¼Sûï-�#]—Vê.ƒËºÔãßdêqï‘{¼õ¼L>·ÍÎõca:�Xš=ã¤å.góß´°*ø[2QB¢�<¹|üRÞ‡æ6¼þ¡®ríLäxèïðØ$X×ðŒã\œæÎZ–³môµˆBkyX± Ÿšš6õc"ì<�U?_»ZyÖE]›æKAË × aJÆ’Ç0äÙQyë ˆ¯ÕhÜ/Ê–¯Ã/kͳµ6^x¿’Z^PtßåOq4Íãàb(øË2`Çb~£@¼,³h€ê­Ðö˜Û»VÝuLc[×S=‹�>¼ºk¦F/Ízkéù“(°RçíÁf53™P÷&oÅú5(µ2sk·—*¸˜ÈhÑ�½&¶Ö4‚Yê!æÒ‘éíŠ ¸_F³ÇÜ'ù½ñ».Ú¯y•„tÚÀ^fFó�­{ ï¡l5ßCIô­Q±¦Ùï¹ë›þÚmÌR-¯Y5­¼Šªõ�‹·’åe•ED¾”P5ÏJlß¡=ñÒ‡«lÛ5Ü÷hTJõZyRÃý€þ4àš^Ôý(¡*�ÌòÂ.úc•glÍw+>æØØÑú fAÑÝ«ÜA*!Ÿ£cò˺{�~5˜Ø[øžìÂÛPŠÃ½Š ”�}‡^ÅúâT³0ô¾GÿF/µ4ô?YŠêÞ›j|ÊÚ¹BgåßÈ}ç©<²í‚Ê=^¬öl‹`õT…Ø}€ºÚdé¦Ù�_²)ÿâg¾‰{æÿßò޵¹qÛø½¿‚ñÌM¬‹èêaû|Ô$“�vú!ùÔ™¦s½ÉÐm1–(�HŸíÓù¿O/Ò)×NšX$±XìØ],ßAøt¯’®k­ËV¬£ &3á¾|É %¢ûѯÉÚ @Àž€Zšã ÈkìóÅK‘®óyÌ Nö“F ·Ö„+3ÛñÀ5]( XåC–’ÓÉÏÀAƒE†CY1Ç[\>]üŠ(>Äÿ‘íFòˆBþÄÀð–ЦÞUÃyõqH¶‰ ï/äÉdÏêÒT›m¼Êîªx—.òÇ2¹Ü>Ï4¯Ø&5S.Óm—ëY6j1›ìòû¥œôÎsŤf#奈âh¶ LNò‚•Æþ÷ŒxrqŽÖ�2¹EÂofÛt�5É(_#$y�¦d—­È®5êåËþ¦©á3Ã.r'žêŽÌžÐbÓ¤Á„‚mŽÀ҈ΫBú¨±GÔI®FofÍñYuK¡˜ãs'q†K…”I±)2ôï¿“˜Ó~™aŠ%“42’£�ŒGø:/bú“‘@ámœÎîw8á�¾BNäwM;MÿI¯Ëx¾B�öœ!tÑçOÙíC^ŸZB±HwñÙ¥#vŸã›“œÀ§mÏÖlã—l!Ý/Óâ'ùüçu¶ÈÓÉá^‡ªÉmN=¿:´Ä$!ÅÞ ã"r@kØjÍÅ.�›sàýGë�™™fÅV»/l’üמ=-Ñ@}AÄnìKªíc!àÊÙÆ‹Ào�COŠPƒòÏåãÇ[Ës.ôË—í2+Ê$Â"8h“š¡:Øâô6'GÓØŒ‡fº;þš•ðÔ £dÌ"{¦òd¶E¤ä?w”ÎÛç×øç®Z}Ô É!©´S^×`ä'xŠ–úlÍ=1®K£vZZ¹ gl�O?mAqo«¡ÄØ�5$™q`ç¥å}­Á$p'Ò@ò�O7ݸçE �ÔA哨յþ›$¹Í�±�íõ¾]mæ3¾Ô3@—#D(–>”œ�Í�%S¡ÕuEG)í´W¨(aˉ„�Y1^ X´ß6„%(°~c­ `Rý¿=l{�G×o)ätNê8é:ð]#÷âüÛ ¦Â“‘d…Ø’%jy/WÞÄ8à*Ö,ž¢65Fü§¼ÌoW­ä5×_h¦ï.&¸ä “›1 4î]ÜmpWš¼À7­õ°.Œµá¬=µõPF²;d™.ш2iÔëôG×phläO§™Àˆ%ø°.Åu$/_uÉ�ýuà­Ó:Óƒ^ž"bÖ¬TR�Ž6i“º#TiÂú€#Ñ:}ƕ¬^ŒŸSCÃÆ–ã02 ;x=,JäÁÁd�rêëmGn¾� ë”.¼<Þ·,_�õœ“,Œ¢shVMÿóÏ·ÞJ%û=D5®±j…1ôýÐY�÷²oÕôx¾øA}³ÌV[DRüò+ Û ?’˜M0ñÅS^-c6O“lÅßõŽG~ƒr˜Jì}ë'{ÛvL€‡+tD:A”¹*G|>…¸L’àN:«kgIxøòHj¬‹5…«Câ¬*³; zÈ··ˆ¨< jfñ*Ù£}ÉûÀlC!-Sð€Æ.}Bs&p6SÉ#¬ÓÝ="9–•ÉÍì75ù£ô„Šm (�]O†žQ :<<±‚ôm�[; \íÊ;1å‰SLù[¤‡- íˆÁQ•ZÞn¼à‹�dFé -ÿ�øOËHæàîk¿Žp.NçGëûb/lc‘2+Ý×®ŽH$IŠ‹ø:íë÷‰ãcaì°<ÿή擈\V» é¸Y›m¢Ý‚C»Âv̬ õÖ)tâVb“Rw‡ó×(Õ„§ñzó9N?!'Q‹/Øv*^_…ÔüBfð �]š7¶!¢hLÏó…¥Q(óν@_@¬a¤õ—�¿QD-š8;H@G6/ hÒ¸J ’0ŽþÝ8sÎ’ïÚ#éMlÝ�BÂl.Å¢5ža‚E®ZÂË•-°«¦t]›s梒®ÁGš¯m‹ÂØC=†ì&xïòoÊÐèÊ�Ox¥.tò€fÏ€†WŸîdû¢ê_ÉÝxˆ¸×—ÛgöËE;DĦ^ÙjýzìµÎaµ)h�ytØ„‡t¾õ ÃvøõÈmb îs×ÉWâ¬7�H^øÁ8oñ7Îó2(T8(sìA ÷Þ‚{ã¾=\ê›NHéLDNûR/ ²|öìÚ`¯oüVuª-Oÿ§:h �Ù¶ý@›Ó¦–ÝR÷�\ÈÖv×ßâ½¾Ô/á]» kš±8U 'À.s—Nú Äûë`#>ŒÈ`µ"#&FIÛÊ<–U~÷Âãw 9#ßfÕS–ðV¤ Ü# KšLêé…lŽÃÿ¤v@ù¢F“Ié} œ'¬tOw67#|©Yª”uðÁ' ÈDÊÖTËÞá'�’Ãïã˜]÷�oŠx]Þ„c™:\|—$ß½HÌ+1|?Ü);1Ý•5*éM”çGöÐ�wv&¹œï�fFi±ˆÎIÁ –øQ&¹« :˜Äáêö†ZI$ÿÎ‹ÅæI� 8o6É#ž ç�»uÊ®;Õ76ΛRÀ�ÔÞ²¤7؈¢ð§fxžÜ¤pȺ�D&ÁÎ'45Ák{Á~npÁ³¯ •UEå·CÄYßTs†œ70œÅÕ Þ¡%=d×ì|¡&ÝÆm9ßìŠJ€ƒåXêÎñºcÙÿµQˆpù¼X»»H„aO³ãƧA3ŠÌ¤�zuÖÖùô4dœ"sÙGFôWœ…¤6Ä(:W.è™›]€Yê³€tÃÞ‘ëGÏzn'z�ǦÏýÆ£)Èð Y8u�¥ô¶Ü¬«lÆ&}ž Q¶â ¹ª™,ϲHgú7Ä­“KÇ$»TYàéï:³"[­òm™—@=˜3Âpc©§•mÐ6�n+‡-” $éUKò)L ᕪ"VWš ·±êt•rõ Ĥ¼½RvwÀÓ�Xº]5›Ä16p1Íèí™™’}Q�8Ñf�)4Α<Ê:}_Í2—mÕ ~ØL‘‘&)ZLO’³•ÄD&U) ïJa�‚òzšÕ‚ø™c¦ƒ)’‘A¬¶Vš¨�¦ù”:Êø»d�"¢±Mz?ØôôÀ$¼v:™—Îà•Í'iꛣ™äKðšN/¦õÿ`ý¢ p#�žu‘T§NA)sj©‰ÓßèòR€>Äìy MÚŽ;iLÝzž9l¿ SR{FaI¯õd"Ìò™`R32A­ò…�ªEA=/ ÓìX‘½¨ßÎG¡.o?iµ�cÍÑÂ7pÚ½Çq}s7ž*Œ¦âž]y| f¢«¥­#e‰Ä¬æ¹ Š/Å2,*­äT “ À"õ ® Á@*;É×Iã8TšXÁذ—=*÷³ý6 xWS;zMz“5”1‰›€ÆAß›Š�ÑC–ô‡øžê_Sˆ³6µÑ\§kC/OеœZÎyazzÜÓ­n‚Œ¾�B Þ5iµÅÛ íŠ: ;Ð9Âót—U,BmÄ¿ùνd ó5zåƒ ‚]±¢@«Š’ž$²EÌí}sîH8‘Á­¦^PŠÏh»f¸÷°Ú­Ä�Æ Ãõé— tt&†EÐ܆ëÄw@µÜv“ÏüÒqÄÝ»ð¥�ÆMŒZp„®»ÏSG@wšävÝ¥ë|õâ:-á&ƒY“æØ Ëš=QcƱ!ýŸ¨pT‡±GâØßô€¾+r÷Y0åà^«§Ð�3ïphÂõÀ{ãÛ Év€›9Ùqð뮞«]ûuâˆÝ3±cÖò zá¿æ7£&Kú ‡;xv� çjox"g1B­ž¨ù¬ì!§KÔq°>®Ó‘u’æp\é&å¢Ýà‰º+ýh´Äk£± Ÿžõaš:®í¾.�HòŸâ7<(]Ç”fúoÙµ˜R‹‰±ÑÑc4ìbc 9hÓ+�Ðs‰‹ô¥•a -©|£#Pÿ>ñ/r¸6 î;B£tpzñéç! b8û�Ž‚ç:è€ñ£$÷YȘÉ:ñ§Šsܤ'¶aôâ«ÇNô$ôÖ�ø‰eÊÒGP, M1KSkÅÒÞ-ŽÒo�5GR,«­o,¥'ªnÑ”8[äÏ­¸ºå ‹¡çºع”º_ÿßø}ݘa¾' ¤“ºšÂÿS»­Â çS¸Àâ$îÛ¸«âO6±êb —Î{WÅ¡&�×W˜8=o´p$œ»Å¢—\8Žó/‘ø–î½8Œ´�ìU~ª’7M|ƒ·cøq¥‡bx ’Ç…Nn¬¿+Ô ¬¦ÖE? ªÁëâkóÝ–žAb÷ Æ@è‘ñéÇ¯ÐØta4ÝŽ Änsø187=»ëÇ,ÏκðBÞèì¹áOm_€zú‚ëB±z«£3Ñ|¶ �´Ww¾ïÕYvÐ ‚óâèkʉàyîŸÂ$&XxB¯PÇAã0¬?Š&î²1Ži.Ïì£bj—Éž'ßÉÀ;«ï뛂™$ÂaV¦ÍÛ«‹8’6¸2ñÆw›Õ^¹Mg�/«Œ_óÂ_j =Hwê‘"�{]ÇÔ顨úÈ?+MÐÆŒîá2´¬ìÉE6›ò9¦{þëͦZânïwé 9 ]/Q>H \ª>OWȶ’Ël—Wê6>L¨¼È曩(?oNdóÇ ¡aFÍ3)ëá¢ý(̉@0F ÄLµ†ÞjaÊ$=­Dˆ³’ó8XUF¡ö ëÀºÅ%VìR+5RÛ¦k'€ÅÕu¶Ä~± š 䯽 ÁØ}¨^¶Ù�dåûÈû—$šúq"—Eéµj™–$Æ =E&¨Jœ Í6mx4}eswWfUüœDüö-CÏ´$“SÏPñ:G|�ŠØ­;` ÉÂµŽ€=èÞ$a¥óOñ�áXÒe¼»'óÔׯ�Í„–ü¡£ ã�ÇÔPÓÕZè¼ë$%dÝ"õXÐÒ†‹º\ŽÖåL|úÈ–»ñ¿‹šøN�’øCá�ilç4Ëjí2]~7TÛȼ.[;5涨e‹µ@ë³¼¢�Îb@SÓm9ßåÛªž0¬e·ZÅ›à:/j˜Cèê£ÕÓ”¦&[.xi°ÖU’¦-^Št�ÏI&<�Úpô€¥NY!ÍADY:5�U†��©W:ÒÊYµ•V î#juÿX %XÏ׬XÔåWm„•j¿é¿&• w´àØ8Bü%7Whè\ÃÔªwZ�g€¾ÛƒÂT׈j _S¯ *®Vf«l^9º˜)šûæì&o¾˜¨ÏÍ׺ƒ|µú±#qÒðe†4/ìß!k’,/Ñû˜ö¤Ÿ™ùÁ/A¨•ëWëÜ(š+^h(’Ç.•²|„9]p–3Ÿ|GŠÖ×ýÆ“‹+lçYj†£K³,1ÑìOuQüƒõÊj°ê©Ù§Æ3îøb¾x@Š~¿¤mÒ²bû"Õjô"ÆG�Æ-[iù¶hܧƒfíŸ)ì?�ëü/ôQo$xTÇ>ðEZâò}SûÈeþ)µM’:°‰õ6i•}WSÍÇU¾öo£‰?]97[£K篟²ìÁùc‚þ^Œ„Àk¢<ùÖ>E= l‘W2!Ú%_åO`vìA¯Z9~C‚; ¹4ÆãÖèæ.çQ«¸j°h™r0GV•&Çê9“#ÒË¥•ð=p ÇØ”žå��ãÖ'q ƒ@Æ–ì �yÖ†JÑBˆÑ·q»NLÌÃ’¯ÃÆÂ ¤ífûˆ«H.(颷QÓÔAD Oê™mÞíÚ´®C„ Q¤Oª§H�^n”WÙºLn‘à7Ö¢ÇÆÈô™85!#xrkbUâÍKó ›C’ªµÌbbô«úŠÅRÍø˜ ³ÆÄ¦�"ØhZ¸À–+Õ“ŠÇ¾ ïŸÈ{–iÄ¢ù²î…\­!0œ™ÉìÂ-_=2öñª»¼_&Ùºö"ÑŸ�Ô7!t�Ùº¯£ÁÒrÀÀÞŒ¶Ï€èîÓh¶öTOSs<&eØŠ‚‹<ÇÛ!�c—õ<~Ÿ­£øý{úô/|á÷Ìé+ó4댞RÝŽ-.¯* ¤ÁVýÊyW¥ØÄi‘¯IÀ­Ô–Jh¢s ó}£ñÕh]FøÿóÇÛ|ßfŸólw>º¸F#ôÏÅd�•ã¥QÒÅkü®ß¹ w8üàHl D5»X�d"±éª»#°Õ)TüUˆòùXÔ² ™#ÙB!EoÖê>Y„Á#Ž…òL¬ü9·óâX¤I®8ŽV]ù�h5[Í nƒ„ dCg1òÝâc(<ÍÆ¹L²} ¾!ŸˆÖ3�ô³ˆ&D(Ư??d/w»t�•QWXûѨBýoçÄ'!g|ñy–æ>èÿoømÑr!ûéôM3Èùॻǂù½²_11~7¿›Nð_—ï¯nÆï3=V—]°º¾öÀj:š\N1jÓ›ñôŠàuE~¿¿ºF¿MØÅ�ÐÃÎEhFkžÍ!NPº�¯^h?°:‘T*¹�* pz©ÑÍâ§§F0V'£F0zýÔ†yx)?вAä3È¢!Aê%ë““\2`¬NFÖaôúÉ: 3˜¬ÛÏ|ÇV’pi8Éçì휘N±OÎŽòÇëÈjá� ‹bøC5‡±¾ž’s²Ü±±\²øçÒÝ ÄAãSUàˆYƒ;`è¢ÂÀöZÞ”,HÁªeáS¨fHr>„o–ë¤[e•‹t×Ýäzº9×oNÌîP:£À­¯wÓØKÈÆ%pEcK'n¬:QG;­Ÿº_� ¬û�nHõÝÑVAË7˜ò^¾ÿ8ÌŠyº-ñV6&Éd¸H«4´÷úºhhöKV–é}V~|Ò¢ÿ–U,[dôŠ˜U�Ÿý’VG4ý;fÊÙðS…7µÒ²Œžª=͈ÝW˼¼øïãhòîê.�ÿÈ%÷¼ìwYõ¸+¢"{:¯¾|yªÈv£õfñcÆþ¦ÿ^dwˆ>¿Þÿ²Y<"ÉÙãìœä©Bµ[çÅ`ë ‘lvçû|MÊå$>Ÿ†/ÃÏ�‘ўΆÅ×Á`ö—ÿPKÒV1]O®>÷L£._imunify-security/assets/ui-app/assets/static/shared-dependencies/cdk-dialog.min.c05ce39af4a7.jsUT ëÆ«jëÆ«jux 臭kSëÆõ{…Ñ´Dš, ¾m’Ž< 5Æ$L ÜI)ÃÈÒÚÞkYëj×€côß{ö%­d¸ÓÎs¥³gçýXݬÇ ?ÇS¹{ïü#ʦ«4Ê¿‹“ùwQ·»vPFŸpžF[àeñ Í[pšó(­AébA³:$ÇÍys¼Ži‚Àó—/¬9<& ÑCßÑ%Î#Nsæ< w²ÊbNhæboã¬î0ž“˜;½§(ïpDEb(B9JQŒf(A+´Dôˆ¦è ­Ñ Ð� ê£9:ë嘯òlÃ0±àÞÞ€‡‘û}àÓMV).�=Na<ƒñ‘âÙ€f2E¬‚¨I(ª (¯ž¯ñ¤¾^ c�SÌOi ¤%Ã/pƯÎc|3‹ú|Bõ)1L9޾’r­xŠ9šp�Ìk°κpºXÒL,+GÑ`·x!ä«A©Ç6¢aôd4øíbxy[™ÂÖð|Gðó0‹£%É 41>Aã̱œxÃA¸xº†‘ÑRàØ?˾À°^a0#i‚žB¤[:ÇZ— š£…Ep¶\$§âX7s²¼Á©€_NÛèÀüáÍ 5DcxœE °È˜ÿO¼®£žÀøÍj,�8‚çOpŽúðD� f‘\:J o¬tãŒG9ÿLø¬x@øÇ+ŽƒÇÛ˜Çέ‹÷6v7'gýóÑÏ�7ƒëÑùùãÍíuÿvøóï�W×£»³“áõãip;ºþ=¸B|–ƒÖ�(¥SPObé§9Ž’uŸó(ž�’å9̓ÓÂëÅiÄXçzÓ Œj%˜ Ûóa~NS:‰\ÆA´Œ2œÄ”ÐÑ `ÙqÏ“œ.ýCk@3!Lˆe�R†Ã½®>“„ϪÅ0™Îx5#âQ˜­ÒT½F9‰N0‹s2ÆÉñº1r�qšîhÀ@ÊQZž7Zq*Í/t&$güôg,Ϊϑc|Á ÅLŠ£ì2z"S©æÍ8*Ïéº Ö~lD!L],Y¥ÄO%ÿA€)%ס�†s’M;œv")ÂŽK'VâíDpdåa�H \£ãÄñ@…œR'Àe9èÚˆØÁ/01a�¸¦ z¶sõ6lnÙõ=�X¹*°;ð 4,ºÍ£åi$VX‡\ÄrÏ�êWÍ…<�u f8žã<Ìô`6ýø’�éWZ:Î0²·¹ �=¼~íG�1D.¬þ±Ñg8±´àQŠãÌœ¼Ëz‰íñºNýºÂ+Þ?h…‘\¿¬.]‰ç¬„èäûå|9Ùû´�õ^\h•F̦¥y•ã¶‘Šbi#ðÉøþ?Ëi{Ñ÷¥¥fÖcîÿç4[k¾à•æt�Å7"ÓÐ××m΃éA^¢ÞddÚmÏ>Q G Çz}u±Žõ,KðKxЭ»Ÿ¯2 Š‘÷UF躮VeÈ—/€†à†O@ѹÈn3pGÎ8]åà©=´c|A…C ÏY 8�â®ëÀ©ˆ88Éö£$Ù½Áö`mõÂó–ôO.—ì‚§ãõ€1ÈC°ñª�õapÓaÓ�úD8¿øÿYá|]ÍózÄØ±%"¶µe¤y†ßY½Çž �›–o"!¬ æ^7ÿ™$ Ø¡&†`¯7†¨3ïÉ©‡jj# �8¡fjƒ×'û<ÃÙµˆ^®çsxv]á_±QG9£Ênà$"&ç­Ýõ¶3Xâfm׺0¾™uQgö ~…ßßà÷=ü~@�{•þ˜¾1ËCÞ­R¾{É -І‹jÈIO°qzBK¸ J=2qQöÀYÂ�C¬¢“>2~ÁD�-• œ1B¢¬> ~�™�Ø>Àûû.LóÐÎÂjîï;&�©¶ãJĹ)ø ÷T¿ûá½°Iݘ&k5–°G|£‰Ê½lçG-0uœ;¹ü�LÀ{/Kðn´Þ+J]Y©ÑòÄ«b‡únÞqÍâ`¹:`[&úA—€¸މ8þ ã.¹,MkÈß4è Û³A? ‡ûö)¼Ff#4ïà ^*ı#÷Ø4óI«P ð6l5Vå…Ž>5e·ë#‰f /T@iÇI¬æþ{uøéÇï'QÚ fp†Ÿ]ðjCÏ�jDõ7QµãVµ,ŒKVyèm\îŸ6˜þÞŒGô÷÷P®ßßõ¬%xoÖŠrüßãVïäƒôk[i´ˆ#^,ÃÆ*xfXæuîFø®`ˆ˜v¤,¸¿wâd~ áAl ×yx@O?ÿ*ÜnUÀË»»šRߪÄvgèG}ÚÇ*À½:žtä@0¸ØÄ¿ú`J£D-âyÂ<ê‰añX„? Í(¹Ÿ  Js�sÐuPí INº‹`ÎòñfAÜa ú>mU9I *m‡$¯¯ÒkºŽˆ«ö�x°¨9¢,·ËZÝ`¤º,¯›h²`9’ÁŠ·:÷‡µUZ0‰é3lodµ 4Qš€_/\®3ä,›áœð¡_D°îT!> Ç) ºèIðùImÔÌîá�°„’q�å7dТ`Ó=D·èþ9ÙôÀt§M08Ëg1'NšmÃÄø:CŽß¦!ð„°Ú:§4ž÷d 'èþ¥§ú7êyA²ýNz‹è¥*@Û°Ý+ > ¶ ?p¦F�tÐÐ4,ž›m íÛ­V�îHè¾·Z0IŽ·sÒÒ”âµ×f/ BXV#d(¤9^‹ @V¢\{7HTÕ7WTK%nØL! œ‰$-›Ø¡JfÇbx@‘ t¦lóú:65Ø2Çb‰•Çš­$kÜ'J’Î!ÚÈÈ=ÊÉ”d�+�i”'Žˆnž×—öÀYßÿ½]d[”;<&²Ev£––mbÙv-ûf-{¯+’ÆÝ­6·Õ1d´V�Æa�Qw:e16ù“ÎZ•õÚqw¤ŒüÈ·¨}}u–9�æÑÂÙI«¿Ê*êŒ U©‹°AI"~†_8H‰„ìórBlBš9^Ø~j™ÒÅj™ÈN#ºm·¬Í›xr3=ûRCPIÑÃ…?ï,!‘7ʃ`¤}/ô‚Pl_•g+qj®ÕÄS³U™ÿ¡ZPÕUÓÐôlú1ç¡hmÈ;H¸—'3ï&†—š ”û‹5÷¤ÛoL8‰x$Ðn$Úð´ÿÛùí£FŒ.OÏ~®&(®uu¡ .[ÉWÉÂ:°ÏìÀó÷¥CPT寧¼fpÐT÷ ÖT½�±÷ÙÑ$oTeWœè몲®{êî‹•­[û0e«œ–÷ŒÊdË6y;ʵ:{?M¥ÿµ�oÇ¿ÖQ éù…$�0è:„Éá‹h©»áµ�‘òÅÊÆª3ú)Φ|¦ù’êצ¹^°sÄ_’%vÏtÜð¼2BÔôy²Bì§œ¹ËÃ�ïûmü†¬ Ž�Äpá™ >ÙJvœo_¾ý ¸p,EÈñú,qÅ€ñ¦—µ;a(— kB40ñP&yøìRÑWdÍô—M[@h/ ò¬Åo›K}ƒ`ßùÄÅ�©§·Eaj30æKšÕ&ŸætÑgŒ0Q[Ýâx–Q\»-‹Éûƒ (Ò�±”M¥,\쨜çfhï°”¤¥…*š‰õTl=;¾s›û"‘÷`Ê!’×%ÔtöÖ�!O\Ð�Ÿ„Ã0Ä^óFAï¶ÃÄäÎ�jˆ©:ÁlÜùUí�Ñíue†ó�,Ú޳譸¿Ã¬·ñv:‘b[ŸË<ˆKÝÍÜÍRgÆÈ. £dÆ–eÒàOS:Ž@¸~ŒE¶ô ÍÉBÁÓt]ïpÕ»¡º¹�xVnU‡Â¼êÚZ°|AÖÝu€í›l”˜ë{€—ÏJšÏ*UñÍ£€ý¢Ò TÏ*�S? X…iž‘Î}ÔE¸É€°¾ G:˳¯™¼}õ\TM»úå»lÔ¯ãò>¨éwdL3Ò¦!ñM{}%¾è`”¨�•£àÔîËìàZ$wQºÂ)ª¤á¹s œW`\<È‚õHåðŽZ:Ëö0Ñê-pk¯¾À÷$8}{HïŸ3ðÉž°p¨½z$u|å2´M1*ùF…ì€Ý+YQ.€ttf.3q�']cFS° KrJ n!I»÷b‡_—‡,XpÇàCFd™¹S�§4_ˈXuU<7&àHL€ùÁJL¾ êQß´äî/¢Ëdde"~¶HekÆÑbýL2©õFSÈa)‚™¸›g(o�S†?Bj]&"Î’w¸JØÑmagÜ)=¯Ç«AÑw€€ÛRu±J¤Eó¨¥8 AØ27ü–¹1ËܾX$å¸Ëæ*…+u„Ú"I ሕÖcA]Ž0ø 0›¶Q[{–÷„¬k?y”;W²ÜPýíW°wXx¯¯z•òØóêØ›'CYéŒcùIYЇêtgË"a?j!+¼¢-óFmoç ²Y:šÈ‹×ŸºæÂFaÂt ŸCÝ7²,wWíOh>&ïÊ“ˆ6Î÷æÖÝ´ìFÎä4aqë´u}m£Xí“–ýâGòû“ ´%Û2ÿòä5Ê×$†�;¦fÙ"_¾è¹ž¸Ö!YˆÌ\ÿ”IFcÀ�Å'�èÛ\}�®™|Е"ꑃƒ*lñ{òУ"KƒÜêÙ³«[Pî�úº¢…ßþ~>lB©þ£Æàèu¼·¤ ‚¿C¥»¤Á[òu ¨„M@£‹6Ñ4Xl—‹¥Qá·Š«�äWßZ]4o­H㲦ySCÌ¥ÏYéŽ[n¶ï£ôÈê~Ú1D­Ïq•Ší@¦Õ‰ð‰E>]V‡éñqmÌ Yäò:î…O“IÍ‹ã4à@!Ç0½üW=²¥z¬6¾£„úÅQD7gÚÎ|Omò]¸`M¨†ö�{ܸ'æ$ \$ËdÖÊHcÖŠ“ˆ»‰Ñ}¢Q+!œ„$ 1¡Ä'qÉŒ¤dA<2&sòD¦dB–dDHŸÜ�y&CrEnÉ#¹ ×䌜�SrN^È'ò;¹$ŸÉòyG>’ŸÉWò�üBÞ“_É¿ÉOäÂIጄŒŒÄ¬±$�‚UÌ8\ܹ+š8Ì> ~gbà6|dá04|bA2œs\AB0Áà-›ã}°k6!Ì>á®zbDc€Ÿ8{̸ï‰ÁEŠc£4‘á|€X—.bà#î�ó3`+;a‰¤æ&~³éR¬ X'0G@b ÔÀ =Óȓȸ‚úðñCã—Ó‹ÐK}¶!ÅãRX8ç/<8á1}ðÙ5_,|F|¾èߎGW·ï¯G¯H„4‘h‰›OŸ�.ÇWýëáåíx0º¸]Â'2+Bß0_Ò/�CR˜»a$ï£0]œÓæÇï�ÏúBL™^/Ôé*Œ¹˜ôЏå‘ÈXŽ „:6s7ö@'£ÁÇ ¤pêöoŸø!¼G¹;²¦ p@#©Õp%>%°´Ÿ�*oò‘2‚Lô…Ôœ°Øe�Gƒäg¶¼ �‚¤=Ã4õ¼>¨ Ü+ƒ«v™wæ‘!ŒGl¥:UFp”°waè3\E¨¶É’Üf3 V`«úQT¥íŽr¡®BÈÿ-�àcèÁ©=ƒÏq2JNħ%œüTÌÓ@ÝÞ9|�ⵓ<š°\ž~‚‰›ô¬(—âð»u Ÿ=<.ùŒ’Ë€ ò>…òê@Ωe”ïPƒoý«!ùg4†{á`Í"à5ù†>^�û××£Ïä+‚^Þ¯ÉÔðþ;ò‹�›Ï— Œø}Á \ kZžÿæ/ß�?õÏ?ÇýÁ`xs3º.ƒü[éÒéèúb|z6ínG×_:c”*ìÍàzt~>¾¹½îßßÉ`ûŒ€�¶öÓ$ æ&a<ŽA¯hÀüa…QgÄ6Vן–´(sîŒN÷]MaËg&ÚZñ‰y|'‘°Ì íÿI�ÞüðVþ„­iÊ‘ �5­nyLÓæn�»æ1<þd�#rl‘2œ�1BQ‚ñ/AH_»\Ûn|PT^±œ$Û3}$^!3`/‰°é/ Ð(ýS«†‡ÉCp{œ¹üØÞÆÕ°±µ±ªt/¢P¹2óMuN�}x¦µ.¾)r1±¹GvSYÛIÓà!pXn™F0ø4ŽñûØÅOçÀG«ÆD�,èO<æ`l�Ž1ãžÇ£J6MÀÜ<€°šÛ×öÑ ü&œÉz¤¾oç}æ=, BÊúZLÁÍX›�<|„âößÀ¸Ì¹6�*©wg¦ñwZŠ@rb®Âuy²ìaë0Xê±K}öÅ<²ÿix5§¦Ñ†ƒ~ª¥-çÇ–>/¹;7ï^LãÈ>ú>nAôÈhTB}Œ(Àñ›¸å¦Üm?°¯`Ã@p[øŸý†´Ž-±¨Nű áþt€/€@EèÓ("~xÛHÅ‘BÒ­m͘sÔ÷ÚJ™�(uAÚ¥f&3Ûq˜‚�O"¾…¢;Éf×W±2N`ž°ßI3eY0‡šb›ÕÆ" ƒµ{L“﹕˜\[›viƒ÷ ©Ÿ´%) ›+Ý'î�ó :F†°÷„â)–`×ูÉ3°‹*xDœÒqŸò(VáHçà˜à„<ŠœÎg€Ã쬜ϲ�è,ð¸‹A4ÎGì�bÈlÆ@&{ç¬JáA ÜX� ·¤¾dô´{ÇrôðP²~> YߌÁt B/F] `ðU_ ÎßÎÀue±©`2•Ýà–�G®Rд‰·.Ïjœv® Û¼ÎÖ¦ÝëPÙö Jû×çsª·Sݺ:/6­-ʶ«ÎÈ�pMÆuf‡‡ÌöY0Mf½Ê¥8·Q —ºÌ4…Ê9?šì.¹wŽ4êÒ©.Zmò+ÿ„ÚÏ}Ðëm÷þJñP`Ê£@8jy8”¶€¼¤sæƦb'0 „8$ïajDn!ñ #À— j¾…“¨!¥Ð±ªZ¸?™sÄÎ'{xquû…”í+*NöÝã1ÄtK ¸t&Eë¥í”ƒ†ëˆJ#®ÆU\-„‹V–7Ü÷œºí2¾�±o¿UŽÈ *v‚ž}Ó?í_Ÿ­×Ù‰šõéà ´gÈN-ÐËêSd‹8㊚J@š1ÿ§²×³€C¡ôá1Kzcf�g±eCÀ;ûÑ…iÙñ#_\�Ø£ádJKcÖ9¨nfKQ³c™p<€&1çGISɘVnÏfs ~%½›P2"!:Eºm`4æU¦uÇîeX²QZƒ BLG¤�I.øÒƒø]Ím? �ùQ,aøe{.2ã#BšÃC3ÿRÑ×X/qÀ&aÈ”ã([=±¸·Ä ÕÓ®ªªxP✴yÁVÕl$BÑãi fÌ}DžàÕI™¡†™…½‰½T XÐnƒÖË‹O$[š#ILIÄÊ,"µÏPºz/Öcß-t�n‘¥´„®—|Û0Úa›fž Ç¸“|P¡�˜¹wÊÌ&H} æ !j(™}�]X¥Eñp´4îCt§YøL£¡ÄßÍ Ôu1à õ© ¶)+7¡ØÅÐLceÆÛ`Õ�»R¤dš!œSLtõ `¶^Ï™e–Ó OWïdéfUAªf"õ%ÃÌ;íƒõØ>ˆGûJÕz15©à+é8Bp Y²€å‚u挃mßâžm=j@Xç’À)¸¨IwsûRÒtODó /ÎãOöö“¯€9íxF½ð¹s´xi½UÚßÃ�hú@umX”‡-ø ãÿ„?Çøá¸èøï 1ÿ~¼i‚zcuŸE@q|tô·îœ¾´gŒOgIçÍÛ,^ºOYfÒ‘^¯›U¤Ûaħ<踢ÞJÂEßEL|8°» ž‡ò…du„±Q�§qèéŠ#ó¯¢&a¤»PýáŽ4~Ýê>b£1ðÚ"�耈™ív­¤R…³6¶ë=‚¯žÎÚh‘"cŠ‚!WkÏ]@´„óNúÜCæJTêÕ‡êabîÀѦníÛI�x×öÙ$ÑÜɸ…^G6³Ù»é+÷|“$œ7o«æÊ;o½y ½Ù½mó” ½V1SC �ÑUMh7UiY©À®1`°¬øb£ó†x4¡�dèh¡sçBœJÜò;l¢45@ ò”E­ÓJ?EÅU…ò'ûÓIïôIo!ƒý�²Î)Ûž�„ È }šw’épòÿ·Èi¢#§ÉÖÈ鵞T"'ƒT}®<¹r2Û]³Ûî ÷%D� 7�î§-›;håG y_¬ókÉíǦiZÎ�ÏØ`˜CÂ; Ïy“l”7ÉZ¢•o �ÓÃÕ`î[è…[4h�ÉœôZ¨¢�+Bøßª:÷›Ýº �¬^œA€OøÁZ``X”ò#üVaão-·Ü0Â[‚Ý<¹t¦ÿhh� Pá�Y½NÝš…á£mXªGüÐÌÂÊ›‡íMHYmÇêE—Qì2ö irš©2ªzþ‘‚1íîLMÑÍ«(Ò¯0ÆW×£Og'Ãâ5?`8¶q»¹Ç W:Ò鋇BK²õX<‰z6æ55âª0Y®¶¸Ô„«ÎÊÎXµkT{=¨Q(™uŒ”ûÍÚEXÀ‹¥Ø@ACªÓ‡‡[;PºÓ��ªÏèÕNñM¤ãëÙÐ…'*l‡ª~�ú,rÜjÏJW¸]�ˆ©ÌŽ]êäÔ˜’ÍÎi�Rß_žB¢‚-ªRù´Þ¿ø¢ªÜ »4ÀFÇ(¸| ˆ±�¨ËëaÌ~fKQ) dt.j¿«ùg@ìùÎO£ dxDÙÕVÄe.Ù2°RNç@×}Õ–› ëuÞf@¬º�©[rã|ô6LÝ0ª8¬µÆå4U‰)²·¯—8F8™e‚I*Pjæ«`"%¼”¶1ESÅß«�èt²#zº²Ýcª14ó3ŠÉ7ûg,X‰ç]¢WªO,-ñO'kIPn$6ÆÌã ]ãI,«Ð¦š‰›=�¸îÀÁ™ÉìG¶„sçÝááÁG r½.Žþ|xƒÄ >>j4d-pbÚƒ¯�±ª"ÊŠf‘. ˜b—T†'�+¢~ªû}OøY¾íg…QXÝë†&{뢣kmpùžJˆwW²æz^Æñ5^¸Àº�Ri„al±'¡¿B³MÌî$0Ûî#ó.B�ú…fò¸dÕ—N¬»£øÆKµFKr„ §ÏBÝL«‹/�ZG 1Lõ'å=Gi0J“Ìy_>È–w,‘ŠžgÙ@g�mZŒ÷�u0ÕU�ŸL{ôŽú»>BvuØtTcúÙ®n×U×(.gZ­q+•Ã’�„«ÌáU«v¯c’~/û§¸°Ã†–­;¬øQfòÅ�P#s—ôåÕÅ ˆÑè4 çB„Lù%ãXÕóVŒ•bhÉää-> }EYmuLÅRõ\9£b‚þE8—l¨(ÙÖv£gs¯ûlÖ—È.JìIl À7jä,o\;£Ù,EZ'”Y®S&û²§›[¼ˆ~²Ûì±6¤*Õ r>£±Fk憲à1œ-Éî(-övÙÔðJ��G7øH{‡Ô*_ÛP?÷Ägma�$ _# U�_í’í]Æ"וA‰]¹Ö|.vrØ$ …g#àMÁÐJwš°‚'­ÒhY;t�d6KYí�ÏÝG9Wv8]o‹HˆÎ•i½ŽšÎ Êåk–%`�ÍzL„"èD°¿ýµ]‘9Mf¦øve77iæ^ÅÞ›mÉïì³IbãÁù×ghú²}2abàV�,‹áçC/îTþ^åûöÇoâD$”i lÃmØ«Ø;1t÷ùÝÁ³Ö”¿xƒ):àëõGb1mŠñ­9ކ0VFÕ3ž’©« Ùêcö>0G±AÁ{Æ*�Œ÷ð—XÀõñxúOÌâiCž%T> ¤ ê¥€Jÿ~ŸŽeò\3KXHe E(�H0Ì_uþ%-(«$�•çOúy ,UA´ŠŸ‹O޲x„ #è.:>¸‘wë5ÇhºW*ÃTPK¸\ˆµ¿ª;.8ÁnÕ€1:C÷‰Ó3,ÃRUSÛíV)è2?›¡9”ZŸ*l0ýÍúNÀ±b¢þú¥‹??¬×‚øê�ö‘0ȹÛÉB•ƒ¢GUv>‹xˆ(G÷ BáFÂÜ+ë‡mÊ.¾ÉYà±—õú¨)Îh~à¡íjih_µ^ïI“v©»-íO¢jt‘mzX—A¹V˜•^ˆÏT­ÞDüÎþªÚ] Ü5‚tþÀ"ñ8ÌÆŠ+°�;|ç=4��b&Š &Ï|.Š.ÓXWÈsæg²Ðk¢¸}n¯úþFSÚÞy„gÆöWŠ–›Ò–ÂΑƒã,~¨Hòc Òì«‹¼¥.ª1Y\U/Ôôj{6òm¯i¡Ø—Re‹Ær”¦[„Uº‘¼ƒÆ  pôMq;�»F’ùðÃCYÊÞæÞ=_ Œ`uç¯~‘±xç¡û¨’•Îv,ŽAýgºŒuê¹¥ˆwTÓŸÕèì† ç©Ž”)À³Z» 8Æ.:•¸ k1t9÷ÞVj‚M‚~é[*t…¥èµZ-Ý¢‹…¿<§qR(X$`&P7 ±c/ª*—Ù˜–ÈÏd§»ÍîË£^—-ý™Za:6+¬ª$»=ýš.° $sÈÐ0£ 3Ü‘xœgjEÛžç™pCæ„ì–·Zy4¯<#“…:P\§¢°Òþ y¸|7¨óð-GYœšÝo�6•Ê˪ÊtÍÐbõ¡–z‰ßÁãÔ§d9qÓ€fQÞ«ÿÕÑRãD»‹þ.†h üûqÅeu—ÛZð3(¼ø&ÓÉM5ú¨c¿ÍÊœªfwYoKÙ¶KdcÝÌJ8�Ê«kÄÊSýæ{¹–æ¶m |ﯰyH¤ ±Om¥¦šÆu—Ø3ÍdÚxt°,ÆF›š’ŽâÊüïÝ]¼�!Ofz±L €¸ø°»ßÊ›ÉNELY�sŠM¶Ç™m ó�—íWædaâÇ2îL±“ëx,êk !~G®7t+|Õú öUË¥BÛ‹ŸÒÂY=�ç7Ÿ¸ÃGäùÔ»ü$YJ#Iínd«ß{ÔÚŽþ5‰ýŽTjãð‡µl<Õ½A=Óy ³"Üðãñge´\ÝdU€Z †B"³*=<ÛÂÂènäÆá” àƒz¤`b`:²ãl Ý-j0“Þg¨n|T§{®ìA—y¦ +x—”u,=%•:6ÝR÷­�\‹¹˜‹D=:o%X˜ÖA'‘ %Û÷ë]Ê5ɗ憤Ðug{ ¿/Žìàl²‹•á,Ö~ �œºdxJ�|âBǨf%Æ_,ʳ'4<…=Î<Ôq ca<·%†éÀv‘_vµ °�CSó…È ÎV;ªõ‰¬ú‹úYÂÝŽœ¦èÑù}wƒ¡I—uš:;L4æ €žâd,¦ºØ©�Ë?g%�©„ºþkV©èK¸¡Þ×+¡n@‘¾ÝTƒpU •|¬õ<_ZÓ9™ÒLˆv¬c(6Ö+Ó®7÷2ß˨¶¨‹l]KBwsŒÁ>[{€™ƒE ’ͧv›>égu]÷þ´KØýiºíÌÜ©%˜.™À­²§� Ùäcàî·¤W½†,ÓÃñ7—õòÔŽ=f X Š ÆÌ†]‡®iöÝ#ì e^c4¶Äð|I¯z…¥HE é¡<ïlDCzÓÝ��ñåñDx!_ÍåMÄ?žË/h;;tO ‡€ü­qSÆÉù ÔÇa ¿aW{­õÇʼ<¦Ó¯¶jEª‰=,h%rˆvÇËõÙݧC¦wÖùÂäùÑáTÛ"’ÎI¥bTÊ㣠‘bûwáw� ÞŒŸÙ8äï8zE(þ~ä´¯CÖú‘çpP д†ÖaŽi�UJ7zÒ®R»è@m&˜5ìrœÛ�0ÿÿF,<…¬wѳw_h:�{ÞN‡aÁcû̯:9uýäùª]?üxp ® ò?¸ ú-Uý?÷Mµ|Nc{Øhöù<;Eè–W]ð�òÏž]õ=lÝßÜJ…ðìG±¸�'„‘ì<�‹ºâ¢ÙÇãåOž/_às¯LÀ2�ü]t¦+K¼¹~Gör¹'sÚWÅJ;›ùóM²ß•DÞ‹ïKE>—kù@ãdO˜eÆ=TùUœ†“ÆÑȽuɰëD‘ý,;))kÐȘBq,Í–ŸŠx8 ÛÞÕR°Á¬È`ÏwÏ‹ÄÍ.‘vÀ<‰*²·—y6÷TXàq¿UI%SäÄ2E¶Ž)r²?�Û�Ï 7Û#BUÿswkø'Û¯æŸl#þ ­Ô”„BôqQa¿K@ ™KŸØšã^ê´Ÿ•*ü)œßÒ¿¯%á·ŽcPæò*’±y*oœ $©C¯åƒ¦#7ùÒ6hC—Õƒ1at½­Û¸ I@ž ".Þ€„T�Ñè h÷å ˜Íñhø© ƒéù uhSñdÃçæ;T~qP·«I´&#âXÝ‘,Î�“£õ¶¶yj+Š´m(ðñ/ÂKؼg~VÆæ H®Q…ŒµïÕO%ª�LMÚ1Ñåêx|<ô*Pé—0z °+ëv" aš¸¹ì6íæ~³Ç0Ñ�q®ßÚÏeêõC³?Åš§™VÅÖªÐÓ"Ã.�B§ »sÜd•“É5­uÓ)’Siy÷7+­6lÐ膚„Jè�f)ä-Ž-\üDi¯Åþf^\õ ÔuLãøÍPKÒV1]�g¨QƒP_imunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa.min.1ef7e0b9902d.jsUT ëÆ«jëÆ«jux 致;ùwÛ6Ò¿…Ìæiɦí=¨²Z'vÛ\–k;íî:®-AŠTAÐŽ+éßܤ(7I÷{/‘q €ÁÌ`.€»;ešO2ºSΓ> ¿ Ÿvv:gw%§³—gPœ³bÔy¸û²)dt’B�ù—ÄWù�§Eîó`áU%픜¥CîõåËô#VœF.Xp‘ŒFGŒìç$e”EC2œÒᇹIùÝ� ¸Œ8¡yY1úò—в»³j>/�æœL(?˜Ï�“-£s]=ã ¯ÊèDÔßUÎéšËhÀÉ «§EÁO6¤Yô€äÉM:I8=/Þ²,bœÌ>=/ô·)Í£CNônaš,&ˆVt�ͳâ†Ö6Q’’òg°� ™¿I>ž§3½ÄV�Šnù[ÞæY‘ŒtÓ²iæ‚ýJJžÀ^Ÿq$�L ϧI>¡Ñ)'•˜ÀÅê ÛÐ=æ« w“°N®ßÓ!ÇŒÒ?©¿¸ºÞòâê*Ê«,C¢uÄ¢À%É¿Î3¾Í-\°@sÔ² ôÒÀ¸Ô°ý¿˜þ:!,į„C= ð‡h¡�…¹V¸¶’Ê‚+°ºÙþ�í7rg{OÌ" &Y�3Ò.øî ¶��wÛy®:›‚k!DMÖm7SÝM ³§ ¢qd-ÀP½y ,H)A'Ðö?�ýǃó«×ƒƒÃ£CG´d6¿8þéêlðöôùÑÕóÁá‘…™Úáσó³óÓƒ“w’™°�0•íÙáoo�ÏÝ‘7²O´×ÝÊŽ·'‡õŽ#‹ðÕÑééàÔá–3™»ÈDÍu¬véH™îYGàNv�½zqrõìèùÁÛ³£«g§ƒWGÇŽ®ààkÍÛ¡¨£e�OcO·{qÌïæ´ƒÊŸ]Y·ë•¢ÐìS8, /XßUúj)ÉWQ['̹y9Aâ9«†0wǦ}K—C¡¥pX_ã™Xhe6É|NrBÍÒy'…õûJï�è8Íé +æ”ñ;º¸I²ŠFìL5ƒý]g4ÚÚ#€Ò8�T¦~ËR®Ê« âùeL _¡V-bß«r9õÈÛÒÛ›dÅu’�OÓ²o‹Qämš�ŠÛ¾üÓ !'Pó´B”4÷ñ'Z¬‚ðyUòbvtCsNÒØµ½ìn�8ó8§·�Â÷@-yd1¢ Ó<åN'Î^W×ÀÐJÃ$}„ì…ŠÜVµ ÚÚÇ7E:ê섺Â~?jRþ|ƒÔŒaTß§“ŒgF“Ü7¸ÁrN¿mD‰rlqwæ|ksˆº`7BªøâÒªŠDŸ"Ü‹3UíUaFó Ÿö+`;;J€é~Ûy÷Y° ‚,5è¢âá”·öÜqx:ö­L�á� l‹?ö} L™yUNk§¿üŒY¾“³H¿hk_s¦Šaoi†þ­ÅÙP‚¢äÁŠóå’‘-Ü É-c) @!_JDÂ&B"JE>ÂÄñ;`,¹óé�útçQ|(âG½â{Ú+¶·vQì<º´C/ŠK}"­·Þ™�ŒŽS:ê€[P&ÚùÊCm çpð¢ŽèjÞÏ·½ŽyñÎ(íL9¿xw×N¾/ÂMv)Rh·?,F`%ÌxnJL �×ìb϶¿/ÒÜW­À~ÏsX“ÕD ¶ê™�W~¯ó»Ø±hùGg„[^ ÿÊÝM(›ä{ÀrpÐrÌL–ÚŽ‡Š4q±mʮŠùŠf%] ‚ãÞ&`Çþã=<êfĤgd±”¡bûåÙà8Ä€'Ÿ¤c0' Ðrbà>λÒ^V˜Ìç&Ýtáb±A=9X&,É<f½ à”S È»[m"xXÉ( ½)xÎa¼rFàè¾7  ¬xvÀ[ßê3¾¦Ïvö{ü‡½ßÙ 4�ð»¬òâ—�g‚MPÊqÞíúN÷Îþ%ºTî¨siÛ÷.-R‡M=»×£ßs…S�‚½¤¸ —A i£¿!æµ³½©;¬~‹w—K?£-w˜–R�çA·»u\k1…m†¬…¶;võ×®�îår y |õúz4èÓ÷¤v ¸ÒøÂ±¯ÚûgÅ,-iÈ(èµéV—rY#ÿA£Pib´˜q:ª†Ô5„$%•ÀQ¤]Û.7�:¿—[l„'4ö÷Ÿ¢‚Kf¡ Ð_XÁ±lâ8gàý_†\ ´¡K4;Û©¤ø&b­o­qæAˆg}ùFŒ¯uú£ÿ'`SõÔ|4�hÔ} Såžd@b<ýFòU� ØD°¤‚|n¤·®¡n`»ùŸ»y´°vãsœzf�»žä½ µ>Ð;ðÆB©WÊ œ%sgÂÜAP�€Ì¯ë,_l¬�f’eHH�##5JjƒÛ¶)úÒvSí ßÁŸIâ'ª „òQ¨QÝIxæ«Íx-ã-WpúO”- ˆþÇý|Dþ't_ Ïþ¾\ß \e§ŒÕ(÷p”aº®©ïx¡Ñ5LwÆ)+ùŽÚt@7ði)6¢)¥òÓ§/ÛXï'±ß@Ñõ•ð À-G¬ÁÊO;”¨Ì53žÇ{ä·x¡äñ•�ñ�Ýìô³;ÿ7bÌšcš?XC.$Ð-°<^!OÌä¸Jns�#cqxÑgÀÜŽpW�!¢£1î1ªfªr†Úúà ×G<Þ2@*=eÄRˆ�3Š{lÀ?ÕðÊ$�ŸooCÚ¦»IW “mã $Ãx‘Ž¢”X>Éó¨êO£Š�“@e”#`‡Nyt a+YSA-«ÞµêÇ¡«ë»ýÚPGY­ö¢¶èk톡E³ÛÑŒr Q…ÖœÃ0]JÉß8ÅM~ëáà:"׸Å'd¤¡A†í:ée<Ü*ãÄ—,.A0×å°x4ˆð� ¸çd±‚_Æe ÂBÞc¿uƒu)–°°ÄkÇ’©ÀI “3 §I9¸ÍuÖöŸe ã ¸Öz7¥û;Á?%Õ)d¤ µ¿×S´¸ïÔ|”pªp�•µ�ôid_76@˜lRÊŽÑëš êÞ‚ü òÅ9Ì 1J¦€�”Ô¸¸‚2—œ2þ`§+ m|YTkŠ2àPèæV�vN!xÔ¯ÚDö Ü’†TC/×7cޤiÒè~Šmj=>¹>>™ ܤӰò‡øíÃÆ©OÍчP÷v#Ø3 6‰#E÷ؠ͘!GqîxLE¼ŒlÑa¯üO#¯£ÕnšBùøµV×ö h±Ò ¶¥a›ˆ›uµ»>J/½"xצ6½òAF�xÛÖÛ@^Û–;£ómÛÀ ;^ÕBïMLÁ¤›Ñü‡I3~,íö¨Äžƒ~­.I3WÕzu“\Ë%"!c±\ÖCÆ"çƒ4¬H#ÍõuV€a˜Ò-iüÖ°‚,�±Sä’¦ðCx (án¤v^Xn® D*ÖI5Ïh6ŽÛ2$ÓÏñ°(ZÌÒ,KËè }LF)ä*u�Œ!²°à ±O¯$ZfÐãO¤eﳇ¡h}ö(¡Y>s”ã2¾ÔSt¾òjvM™ã¶-—üûx¯y"¿–vògG³ëõy}õ¼±8ØS±¾Yþ—/Xþ½¼4_ºô¯_°ô·zim»¾tñ?¾`ñïìâ()_¼öŸµ,�±¶ƒ�—gÖŒ…rå¤YÚí‚ÈÖàt ŠC 1¹ä£rjsl�`öfƒ£(ú+ÙO6\ï(„23:ì¯á„m#’‹}ÊÃó-Ý$ÐEB�Z÷RAú‹ ¦ú¶0]ƃ!âHC—òýÊ—¼i HUKÓÿ?”´Â_çY¯¦,Á Ûì{�F·ûWûÊ·V«šeø—¶ 9(äžI_bÆôç ¿ —Rÿ %»]LY.— «f�´á¿?Ï]2VÌ1•ýZ-rÜ©9ÞÍ›Úy-Ù5%µañ',.ïÊå°ƒù\Ê p•ߣ�R·‚È<ã¿=^÷ߊæÄLÍÜ“3‹±È–X%LÈ×Ã„Ü ädO‚ÍÒÕ_.±ékÙ¤ýÙø�¶°xá…/$ꕸVªâÆu’¹°÷ê�ºì H Tž�*ÝA_Þêê…–™pDoxQd ·¶7”eÉ4ú|½UÊaKi™"À˜ÀN0aA�ŒDÅO²C‡,ÆO�Í&tB«ªv,‹f'2É�ÈD…Ç5ù”±l»÷.Ÿ¯ÖÁ¬ù4>'M!i©CŒØÂ‰Tà°y‡Ce­ÂVÂtžè?„óxóC‚Æ „q:”�ý..ÉÜ=ŽÎÄÅåŠP_x¶ß#žîöœ+|Æ�–Ù•÷±žgjΨ>L4Ái‡ßpÊèûtYÀ%ësñX§b˜Š8Olx­A ÁÖ9£˜¶;¤ã¤ÊÖ#à'Òbb0¿>ž4‡û’pJòæšÄÌ#tÁ©B�‡B?`×_yAm�.fâO§¾(ñ¡…nWþ]‹Äy„A ŸŠðô‰©à°’‚k;ͲxﺪhÌ v'2`€* •–üq,Fa™ir‚ÜÞí]Šç$= ŸÞ9 ~ˆ÷ਣñhy«Aå%U©H�VGÙÜûlƒëô³Å.ŧ /8¾nËhV¼–‘^»,j£5ð“+Üp¿Î¼`™ÛèóûŸn—ÊÈhõ[Sɉ‘"Íq|0¿‰}ÀfÎîøeBYS‡âå§~}dŽ!YÈÓ ´²×»þ¦GKµY<ÐQøîhãÔò °ËÜÁ™PLú=¦z.ßtÆàÌ®P^€³j×ø–ç}�ï_sÊüš:IÁ–l´ˆ˜PlCo€&¥éR¯CÝÞÞ†QNºi.OK䜣­¸sw0³‡>H<¿l»ŠípT ¨�µ-Ý a=1…|\‡�lÞÂß@U#QÞ‹D,QY{�äljKnÊ ¹¦RâjMÚM˜]ô‚æ ŒÎ³dH7MâvÏ­Ù©Œ,«çÇýfúa_Ø�h|̸ó®Êтͣ$/|/qÞýI­ ¬Æ#ãµk²9W hý9à8¥ÄuŸôÝŠÆù½x/4òr©Út»ºŽóZ%|ÿ£åǃÝü­Ìªx„+àܪÒxÜSM®ÄÙK­)WIm”¡|ÓáE�ÄUÐDOÞã¶Ié=§€`¼ì΋”ÞsÔç”Ë�Zd™ôÈæ=Æ!ÎI(Ä#Ærž�qÙ}Wnïí/› èŠÛ€¨“ÆTË(æy=áÿÁ_a¢añX\*j¬+]�±™Þˆ^ %ù8ãè™_ÊË0{gîd­›¹î¸‘f†4�‘è¹ZúÞézRü¦ÅY,t–Á¬sÞ_ÛY¤n²¥Ï½–C�ͨ˜ÝÜ!ëÊŠ´rÀ5é¬7oÛ$"[U!ƒÛ€xs]›ë×'4X©õt``¥Uáýÿ�ˆ¡Û\ ¢Ÿå˜¥oÍA zÝxÒáG<‚N±‡ˆ­Hû«vƒ±§¤üð¬1Qk—š¸=C+#Äþˆ×ÞßY% Î]Ž?þ­Á�–‘#Þr`SðÆ©•È“n÷oîÊÛeD÷‹a±ÉyTu»ÅNZ»~ˆíÁQ§ÒHÃàk°zbÄ<¦8°`&n¢-€˜àcÓ4U Aqk7‰ªå2×=èäMy^ÈÏ‘€Iº*³Ì¹ª¿ÆNª*âk¢Èõ.ΗTH5iì¯å“™c‡gçuÀf÷‰cý#NjQ®þ® ʘ%s.‰ò¾~ˆÕ_Ä]KqZ[&.j‡Õ¶“*–·"pQùY±/e½vùŽ«éGÍ*OË× ýæ�pý>ƒÛ»ŽæMñãÚ»î ñ‚ˆ�¿¨8¨x(Òµ‡KÁúÛ7×âæõ@«Ï#®/¡)æü „@5¼'"KéU4ñüV¾/–o¦Iïp�ŠzsÑþZc¹™NQnŸýÑžyùQ7‚¶nÃÛÑÕ>�Lݵ1Ýz òê^�­ÁÊç0+‘,“—à’†PSB+£N¨Û¥cè©]\×–‹üº1C5ÞÊDÍ¿¿bÝVó ţǖ­ël¾âiІm¦‡:͆*Aò:1Xƒb�†]ÇÉOcÓô×�„¦Ãz5JK´E=˜_ù5¸ Ž¨;Jꂦ �C fÏù˜£ñF±å¯•h|ÈÕ=H ‚ Q‹õÛ4p.G ôy'•årlg½5ÐøFÓ¤ê5Vƒ‰" ûzGÊŽ½õ5‹)µ¯Rós÷m”NäF �É…Ò‘–O§À‡ÁóJÌ=®V$Åú[áeQ žãDAÁ˜BG&…ŽrÔmÉ=/^Àa¦¤%öHÁ#€ãå¤:aVô}›5ÈNQh$Jh.ƒ b_²2S+Ëy„9Ÿ^pé¼0B3j“ø¿éæO]í>ƒ:òóÖñì·6Øcûš4Ö¯IQ?€Pa"¢©(�/.ÜDh#m >ÁG ˜_ÄÞï^ÏÛE¯óÓ"ÝÕm�}}á™Æ{½Ô~¯‘noëè€_¤—=‹�Ÿ!†àwcyW”×í„y‹kì(A~�ÒÉÑǹ_/u¿ÚIlìGOœ< ºÌdv/–ïÞ-V~pñîò÷Ûûáåî„xïÞ=èÊïËŠí˜õ½‹ßw/·wû^T‘Ô5áÀü¦À¼ž¼SVïy߃m„½^Ë=ápš0P–…ù€&èÛïá ó™[Bp²Èé"ž¿ë¹ýà*> ú·Ò3ÐÒ•0%­ŸvèSÁÒIš÷rñE‹�_݇‹Œx»ÎB\\‹èËkC¼Ó+6Ù¢.@D£Ìàx}/)p¾~¥¥øHT�o03G^‹ó=�Ѻ´¦ø 3O�@HœÓóâo ç®ëݺ‚•ó X¼á&9³AYÀI­ŒòBñ\ñ”ˆk®=¹Òµ†S„8DWEèš$qd¦ahZ0Ø$¥©Šp“Œ‘ÀYüž“)üÜ{�"nM|dɈR¥`H.Ö-˜{¼’‘ï~û0ÃïÃ0ëg3f÷|ˆÔn*y<–òß­|hy·ñYø'÷½n¾ó[’=·Ÿ…%ðûžOöDfQ»þyD^ìOvÔ5KÔát“>‹ L&ý?Á``* qGH•œ„,ä×ß*¥;‰fx BÆZr?o !pm áœG@dq8÷3„W‚­`äÀ6ü·•ë{mÂïý+B„¥=8îe=)—VD°M0×+½RDâ^r`TtÛ¤ùßof¹&j[¸—d5£Ñufçsæ›IÅ8<®:aXfŠ‚¤Ê}1ígkCí¸'D“Þú7¢m°R:Ùw¥= ¯ýu�®²TnÌ®Ëâ¬,løý‹Æ¯ã§m 1oªü`Œìi­ô„oƈÎ}‘=ûª «„>…ùß9¶>߀dŒ�¹oŸWZ¦Äuº•Eí ÞˆÅYûݵ©A!>`…'Êä8Ê« ‡"�¡ñZš8qWºÈ‚áõ´³ù* Ëz§ùç]O#N)žR‰Ô+1XÛ»Ýçdbo,zŸó$[d#gÞ´žbª…¬1fF°}Ë‹Uf´#�€ÞWZI›ÞœbQ¾ÖâU @%Òa�ÁX§lPÂ,;Ï´P¥0 ¡XC·"ì;{½e;Å`Ï/yš›VK ÕºK$(Ks¡^T8‹K9_´ÀÙ-ó {•åuq°ÑMÌà¢ÂæJ,ô,£óÞ3™ÜMwªã ^²s-û³�»(--Ä$[$"dšaav¦*’ dRÍiö]‚–¿_Æ£‹c1¸"‰ƒgðA•¯¦Ã²\ª‚njwfQŸdOé¹Îc†ÊæEŽ XÄÁÝ�ä·WÈðFV^Y€3à0æÞ­ŽrÜ2Å ï…ߨW©.÷ ñkÆãUå:åéiYÃã“ÖrkÚjy�4ä¤m A+P¥Èân>Àöì¸æ!î çZP;I–ámùÉrñ#¹öýœÏ£e’À4� œ³}U6,»a|Sf�wÏ%ÝÕ=»¸øü©)Ÿë»€eñ.Ž<«ÝÈöo�-GÀÓ�ýPKÒV1]·mܰ:Ffimunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-layout.min.5bf6d9cda318.jsUT ëÆ«jëÆ«jux 臽[ësÛF’ÿ¾ˆ½£�õ’�º»-@0ãØJÅU~¤lå’+ok EÄ À †’Y$þ÷íž hËñÖ}P Ì£§§¿îiœÿÍkŠê¶dg͆ž•tWoÅ÷O£§Ñ…wæ5»F°µ÷·ó¿|�Og·<ð`îw£ü –Û*E],ÜûÛ†y�àE&üäŽrO�ŠpRJ ’‘m™Øòjß0S5ñÜ,Rm¨X]×Ï¡íŽýºb© ‘æùç5ÿ‰VyÉ8áÐÆÙº¾c½æš×õ¶ïëZüLyÆJB¡­¢wÅ-ìºþ…—¤€–[&Þ`G–?ßl’AS¶bÙG¹n!v?jª²U½¡Û[ºfM» ì˶‚Å–òpo½&`D„{Üx•¾»ù�e"úÈvÐ&Å2Ð-0ß»ûêg^o»»õM]6jO?×§ÓiÀS-‹£ã>¬«˜ë�Nñ’5/6¢æ’ƈUÛ5ãô¦dm†¤Š6ÛfÑͦÜpda«'«Z»»i ȃMŸ$â’ò[˜¦MT²êV¬ñø±Ùµ-ËIj{ÌÅbæþˆ÷m"þýé¬Ñl ª�L.¸¢Ùª¿³%M*¹ñvØÌt‡œ-‹ŠéÃãùÒP #ŒšN4¶ÀNù%îWÀ}Ü„a0ëœ#ƒUs�§¾i÷ÓTì6¬^zJ¦S¿‘ÃQ"Aa‘™«VzÝ“µñÈKsž^´tAðms§ijÛ'æ9ÚðZÔ8lfh‹í‚!,ÔmReG—WÀú£'¦ âTnY\‘NdãÉ’–ÅíÖþ¾ç…ÐÏm3•†tënœíº½|Î9ÝEE#ÿC[¨»Ý!áðw8 øÛJšû“!³”سùàH‡ƒyãÿ½iõf-EÃ’×k»èª¿4ȯjÝ{×°¦´}�ÿªþ¹GÁ¢®7µ×l8£¹WÕÕ™\¸Ln­2ýoõªòjž3Ž]oà�îBäŠtxµ<�Æ[oá­èó¨w´£ ôÖL¬ê<ò�bçˆWÊ £4»Ð#T·�`1‡ÃÐ3éL+J‘¨?È�QFK4>QS þNΞ„Ú“øjL�VAC‰ÎÃiO°f!ñßÐ�p8ø˜;ëñ?öŸK¥;žÿ_0‹)¯ÂJÀÓßOþóðÝÓ_”t½ay¨fø·óH° ÇLí-¾«áp.ÚŽ;ª} 8GñŒióÍèõ¯ÄÛ*½§‡¯DXV]ФcËçÕdªZh†x¼eÁÞnðŒJgÖS|eÃÁ�‚Óg�t³eMÑÂJ`šõl?œüƒì["tÏ�¸~�‡Ñšn‚àxf>g†¤=²=f$aª×¨Û.)h ”ë{ˆ>š0Æ)¢cÁvÚ½Î8Š Ì·o[ÒõŠÅ1Y#“ÁL<žëÊ%%ÉZ:ÙÑs_Ty}¼SLFê”<Ó´ ôÎÛŽàé”K>3×F÷ì!ðg]4pšº¼cA \' Ðæ=x&¯3)«ès®J†�?ì^åÐq8�Ó#à ˜îøyq烇+òðYÔˆ]É¢¼h6€S¬ó‰zSç;ĬÊ_¬Š2Š$Å¡ÊL �™5ᾞÐÅCe*$ž Ø7 Oh`�’_è‘Çïˆf²Æ|w@ÎkÄ¢ ŒÆ7 †�I x†â ¯Îv÷јiNþÉ9ÔÑfé‘EæT¯óÆæ PddDIƒO;•ÃE Îha0ón�kʵƒŸˆ;à·~B¯¨{áY¨¸£@Û%;¨7¢ cÿirÕ‰À©�£»+r–GÞ£¨z÷´ñ¬áÈAŒ´uÚ¤`¬)(¼BKDÿT2 Љ¬Ò=¨°Ün||@�ö¤´ä6àJtŽ_aI6t~³¾}؃Q7äw!YN§÷ÁU:ˆæD)g£û†íJpöý@GtrëßâÈn<Ë1MâN-ºÛN§«ÈlX²J\”jì÷Ë`ï(Ì[ iP…Þq•dÁbP<DD196Ün¥zV¯"†ªaÀß)ó>¨l¨vìvõ$àuÍt±~Hʹ¸ßKÉÞq«œÈˆËÚ†‰ëbÍ€´SFÇrd×qP´(”ƒ‹©$d’ w\K7s¯’MÁ²ÿÔ@~–mRšÊY^p´¼ˆ—1bBˆ$}í„Á„ÄÞ¥ýÌãì�-<6NJïûgéDÿ]øü„3>±cª�5DÛ6bimü±ÅÝ¡U‘ߤY°•Çé×6 ˃Ƣ‚&ºk±ãüsò0a$—¬(aë [Kå‰ñW‡o±’ æa³$p© Ù³ é°!ß,G……•w'yH£‰‡ãü �äÓ»e° ÕÆXZ€'‚ÝnÁ~}HcæNË,cÒ�S˜¼ öU²¡&yQW ] Î1Ú©fUoË\æ+1Ïᨢí×HYî6xãz=-ª(l•ÒWÍ )¶,Z\@.`L7zLj¾Ó{Åì¤x„U ,ÇŸjOoëÜ„*|aO»î»œ�Œã±Žó+Â.Þ#~ûPÜ” å±Û €H [¹Hø¥0ÉHn’‘ÅœKó%«} óЊt)ÍB#Õ4 0fq@=S�q9Ë'�éž�Æ:Ý3Ó=‹* á[Í’×W¿]ÿãí»—Wөކ̈‰<ë¶ÂD�ú,ÜÛ*-ȯÖM§¯‚‚P_3Ãkœ!T ú¹Âþ [V6L²¹kêØeýÿHh“9»*göüÿØ2¾û„™• × #çgë`´÷Jàûá¿9tä:“Ãa$c„½ÀOÀuœÆ^2çóhFNL=Á2Õ:·[Ò)Ûˆ¸ô+•ˆ��ê+]ªzr@«Ü+­å!ê„ÕÉ{¿7`:fŠ:tæ*ÑNû)<Ëeqë{^2C‡Ñû¯”£|4¨07GÝÉ\“>‹>‹‰î ƒÉ𕑬!,ZÑÆ¹Ê ú‡5ëã±l¿˜IWgÜ[’kù!¾œ²y5ûªI,uhwœòáwÎÖMõÞ9’T©z7¸½- ÀñÍT“˜_,fì±Ðò Ä€�EÜMAŠÐŽï�²ĸتó®=ú^(úœš»¤º4®XÖÚ�"ÀYÏ«EW÷âÞ¡“ݧQ©j)fê_G÷½ß¹ËŸ­XÛ©ûuR:™‘D_'jÓ0îQòà¦1�¢¹ ŽS—Ô"Å–†×=X½žÉÛ% Ö VÛÕ{w;K2é“yWy+pœù{60‰—Î|6)­‹Î�Y¼ÿ©·êíf+K�©—•5æå¼ËóÞ\gãË¥}«Óû´,�HLì+ã³ÇãíuùDÆì2¯©¢Ñ,’ü©Ã^‰êj)NºB o¹Ìã0øûajSÛi^/ll;¸»pJ>=ÕÛ{ä"íG²r÷¢eT^‡WÝ]‰oë%é*P—”SE¹l‘„«§!Ýé–¯Rӭ쨖�áäägßD|¡Ó˘]è­ÞG6倗f¿Ëª"°ls¾h{ù‚Óª ‡´¨þæBâ²Uk«Ø<Ùš™ŒÈÓmHP׺ ^¾Ò¿°àL½¶)x)Ÿå+$4Ã@ÂØ©ìT3š#oL޼L‚2ÍÆräåq޼äÈç™fˆÎd}–'ÆÄ8y¯wˆdÔEVWÃÉ,R§MÔxO0Wpíd�ÊŽ‚TeÌýê©ëU6r½ª‰TKöošÇíÍž9á�a{lÏGÙž¶/“`i«Îzl_³=·l7|g’ïn§Î9­´Ø�:ˆN‰4ÙÆt·äè¾¥ûÎнK‚]º£{wL÷ÝP\V ýäÿ5«×2ÇÞ“˜Ù\kŒ}M”7‚¸4·]À<´S£ä;;Dþ‡1ºfźœß�Ëé`b ÔQ%ª`kÀæˆA0 |©/¹aFm˜AS¶ÖÜÌc4îˆJC(§<ÌSºoå÷T*�©FŒ£î61­ì£M¿ Ì#t,!}°%Œ¼+•‘S—Ð5^ÝC•”£ä°vŸ˜¶ÓÕ†ò÷¨ñ$¯Ñ²:”j�Èíºƒ{r`1º©0<*qo‰,÷‰]ìûðrxuÅ]>UŒãfRY½Et%ÑØGO˜š�Oíû2yØíüW÷C«tÞ‡Æ7€ý£·Jâ}¼$îm&–Ñ\��“‰ø ÄÂïQZíÞ„‹__9øšpíë&&¿eC:볤�Kœur<Ã{¥j±^xð Á5¼Ãy­ƒa¢Æ¥>1ì…zÝ�Òn/Tõ?TÐd%f*:šÞ¹¸YARbÖØDÈ¢k‚_…®áöª­±<öþ˜NÇ ÜûP]~(:ikj.ûã]ûŸe!¼¶?’6õˆ•1C©©`Þ &ªPèƒ6Y\�)(º¿q+ÉlÙZÕ}8ÄSSb`«Ñ䇸ÎîŠzÛèÚ%ù!®SÉ&?Ã-eëö8r¼'ƒ%¶œ*\ðë½>|0Ûsõ´˜e©}ŽO•²mCèvúedø f;RjÔAÎYæÀO§=>ÊX9/ñ»ÏÁ”™û6;þ€F_òS�ágØèæ²¶=¾Ó ¬S·XQÁN•'r28æ¸î•+R„TNBB„'ÊñKCÕÖ+SôªóÆüë×Á™Õ£¹fÈϺbÒtMž„ñX 3�6íOÁ M±�Ù닯cÔp²!Û0ïsî4£¤zõ¦“ Ȱü¥–‰™y;Ržª *Cç’£7•ô6%Ϻ³ /û߃÷ôYÖ„W®Íà�Íø<ÖJFœ: ns &Ú #ÝÐû|Ð\}�Tµ‹®ŠÝ–æÒ^ÝzaÖ,:-²å”: üSgfâÌ…?«?±™Un=h,¢eÁ!/áXÄ&Ëo« æòŒjkþ¾n)›C®û)Z7îó!¯ƒÌõº#Ñß‘‚œ©ˆ¹.…dÒ@ ÀüLb�Ör�n´èÔö©}fùTfû W› ž̗"jbŽ|xü­»›ß O½Ð(ÒO«t¹bKžM™°¦ÿEN+D~3½óUîZ’PÀfК§·iLÓ(‘äFcêQ™ã"XUÊÉÛŸžÃxk!ã×5™|F” P¢Â,·ìé¥ &°Î µZŠWb‘ p "€ÖÀjé|µ”¤¼E² y2Ä6nà§{«c÷ ’–Bš¡×Àä…ìJ€E¥Ðõu³D9;Z?X»mÈ)D¢ÚÑPuŽŽ�RÐú™Ïï‰Èq5é çCË…ìâ„ÍPôÜ5ºÍ¦ÄÅõè�Üàx­^+®aQÉ?à4¢‰tuRR o[0¯Úhu›bÒ€ç 8½³Jg)è´sÅ–"»WŸ 3f å–îL �°ÿ Ö«†HK-Nm$Ø(ìù>þ?™ŸÏWi~t¤ããìK'¯ÕŸj¶zÀ ›Àüª˜³‹ãc«ÁӫȬ\ßÖ 2¤BNDÆ�åë>Ñfƒ˜” vdûicTå}+ÃSÙÈB¶Œ²2'Q;.²SÙzg›²/«W1öõŠB>Ê[ Ïaëv\¦åR"¼#û¸˼›Nï¤gy�Ñ;ËæbU:Á¹3'ìG¦^ë|ÀÝÂg�Ä�‰Hèfö“ã¶8†�Âð7ØUg˜õðð‚8O²³¶@•»¾Ü���o ‰š‘ó ²9h{X�*“ ñ$£ ³ä±À3‚çI Suw2Œž�ik7YÝæ•4ÊeCfU©:LUst™¥ue Â…¾r”Í¢:`†TjÏÁ,ÏÁŒçxTZÛy¿«{–Gøc¾r:ÝO#9Í#·tµûG6¬Ó¤) ¬¬?ûÍo›GìþÆs‹Ox²èP˜ wÎ'ŠÇ è0ØÁµ@kÌzµ=1q®�°i '!ŽÌ~á§ØŸì8»_TAlˆú+«HïiÞQfsêÚ ™°7µ_Ž[Xôƒ…зHÄGÀ�pUrî¨áºB5ò‡ÏÉ£jùxøŒ˜)F¦Vl/™æeó΀ 5-°Î3ýñ'3ì9îSµýË/Ì9‡Ms>Ãq?ê§í‚¼ÑVz©5v­Äù¬¬^•‡P:8³á‚ŽŠø+„©ÿÉHoH7­¡U2Ù,FM̨+{®Ó­¿Ú­ñ×®Ph�=¡T_o«B¿´z«ô'žv¬:!\M/ãœWGËØGAï�?Q.‰æB%Ä|žâΓgŠþ�ʸ¼yá}X&9~šl}yØhü¬¬¹˜Xp@¾:ê±!a¬Ä‡b©ÉÓK±šB�õ rmkz€¹5µ2�Ù¸XS“Ê çV!'þ �‘¨¨¶ª*?3]` ƪÄZ6y˜t©ç±.£³-å²þÊ©¿^Ò3C‚…XiÁ��uCTŠ¯ÜœZÅ×Çd0x'MeuÒk)ÿ‚µ‡ G¶AÆÆq)Çý(æÄ11Iuô³ÂÑÏvýÌöãmòyAN °4”.™í:þÒ«jq�Œ«6Fá¬päöq!¸ÍïGA겘Áx±J°«²_˜UŸWzß]Çÿé­º|“ÂèG²%v_œ ^�¬R¿,nô§#‡Ô ®BÑOEü(5äÿôTð€� ­uBk]C÷Û�EËitJý$E|)´é��þ9’ÆÐö‚¢·'ƒSp:!­Å¬ ;²N¤ªóE'é"Ïóes5 �ö@�¡RÈÅɱ•Œ~4Õˆ"Û”µ–âÊÎÏä=۹߹Q�ëzÍŒìcîȸ?™××tx| åªc¿fÕÂÚe¹¤"£lwû�¿Ú$9údnÁ+¹®ZYóOíeê÷t.Ú.JµkEv�…[ «<:�á±!ø‘"UuÇÛI|nØ×м>PR¡DBdÐѽO 3ËDC­ž¬ä)Œ‡êŠˆŽ'èµÀ#ƒíÎÍþ€µmÌ ·uùç.¶�,ŒŒ•1©ažÝjzz«¹"k ÚYh cR LXº0aî^=ÊÂZ=Zô¯c©aáа®ÚÔ°Š–g!†eö?”{| ð"^n-¦ áfx`C>âßûXë÷߯À�O_ÅZ {°ø†}õ²ûÀøVc¬@=‚�ßW¬ƒv4Óü�•²(gÿ«Z+ ±B`ôG-i•Ž™]:F è0_ç¸þÐÖŒ]܃¦_ÕQÚ©ÅI…¯ˆ@mÀ�ú‘EÍkº‡–À#ᑵ>h X¨ ¤(—æR^_´®AÖßÀú¶¯ë©U'޼úœNœ&®ÑüÖ š—Xyw´´]¼1# ³–ع;7‡é±ç7{Õ�ø}]Ç­wz(ó|3Ïõ‹j¯5H˜AÅÙ»U·zü˜ˆæ¦ËKzYÑ'¡EÎB9¸³O³eî³­_s夳”Çø‘:WkÉþK›ø ÀkáEo�•EòLøB~2Ï@„ÖwsUu§†Þ÷G¨;‘S]B´ªÖ8ȧ&‹I¨+¯À×úcÒ˹“«ÃŽ¢ÚÔjÖÅa”ƒºãIfä‹:ù™„m²ª(ý,DÛ¾ƒ�¨¢$ÒøèŽÝ5îÀOHB—ùyØõ…,…Hý à+š÷>`ª§¬éÄ ´Ò5ÂÆFr´ÞÌ,U™U™íÔ“'GG�¾þò%—Ö>Ô¸’XâÑüí]çÖÐòÏ¿Aƒ(ÆÂþƒƒ ®®t€wöõŽw¸Ä�cU=Fa)ðLf¨¥Àßq«¿VAÇÚ27yŸB�:"2c¤œà5Þ]¤÷›ez¿Ö•‹,VtL_�Ðþì‚ ÿ„�ÈóõUÛà§ê6fÍ=¼âáEæ~à>.)Óp¼…—”÷cÃèñÆÅ9œ^5ò4¡2Í:rþ†«¾=êÔ,Ìÿbaþô•ey°#°!Ùúµ‹Êþ®ÃÚñþÚ1¬ c{íx¤½ *Θ‘YxÐ~[ <ÇH,- Ì” �Cz +œBâ«6ÀA¶Zºx¹ª1¬!›"½õoŸ^Y2r›^>Ò×e$2·|´áxÞ:)Rƒl¥»§gæ’xUŠ7Z!S‡½ŽåÝà2÷,ÄÕ¶` Ë{jöyéL8íóXs�DzHíª½¹¤[Yú”ÌÄÃRÁëÓ÷ý:?þû -ó"¯dáÛˆšâ]ÔÖ_€Qx?WaæŽ�c­m�V3“ý“c¼ÒSž<ò!Ã{rD·%kÛb¿ÙCg�¿Ï”*#DX'O€ “‘l–· Ã(nY'QDõ"(€:Ô)OôâàÏÀguj|l\`lñ{ÖI2 |më 8ßúç”›ë%ú‘ºØÛO�Àe1¼ Uë™XqcQ]KcÛ$�?³Ð¶¹Ý9Ôõ2°2€®(ê=渱. =B@8rѲIr|ì ¯ª:�;V—!UËÇÇ1ö²«ƒ²Ü±ELÎFPoæNT«uí¬àë4ÞHµOíK"V–mÔ%f³+¢Œü¹Goò²cO΢¾C<•õ,,V¤eG¼ôvxh*Í*Ò+<ûè"y ^®ÑJ¸ÓA\ÔbNt-ãÎKøñiYm±X— ·¨?2Oä?g˜¥×Þ-ǪžrkAÜyƒ`º¦â’Êʪ/°Ž¨«íÀšÀÃRÖÁýfcš7›ÉfS)ô*€õ;æ³Ê[þŽ 9ÌÄv˜ò²¢xè.ŸžØ«+hn6‹�‰agâÚÊóöëê§ãi:ÍtêYxS`9(Q‡>äEDc×Ê‹¡Âz.$•rŒ'ïû˜‹ª S�˵&x DÀ¼¼‚\–òðºL�åõórý=bç"o­k0éõ)ÿG®á.&½èa+÷ëè“äVÅfª8-f%NCƒ�Xq½anÜcݼ8^Ó½ Dè ˆÂOîGD²�LTÃZ)ÀÿéîM»›H²EÑïú¶N·²�¸ìê~S&Y:`LA1Š*·›9IB²$k06¶þûÛCDdDd¤$ ιwݵXX9Ÿcσ‰¥:ËÏi2„áhN-,¸…Œý·‚hIw¯œ»°„?±Oh‘äè\Ÿ#ö°QÑÒ¸€V-“žƒS tÀ^ÙK ÜÅÚÛ°9Å¢Q�¥5MÜe {ŸÖ÷>%î25÷>Õ{/'”i¥&…« `U1L 2Þ–ÆN.am[²ú­ÜØ© wª…äÂ8'¦yMzj>Ì ˜ŽœúfõíÒýv2–ŸLÊÒxïÒÓÇ nƒ·#û‰¡ZДM1A]¾e Q“®¹‰õ]³‘¢i#¥ÊyΊ©E@ÒÛ')ºCéÙ‚ÄUßQ�|0=Ò Æ˜å5̨Ë4§0R¨€“äÞQÌ8¢ÌÔ)vqF¹‰<½ð]$-Ö¹ì§÷¤gT”Ƈ?³½æ�ÛïWzúÌ«§¯›QÐAâ¼këãUH’nË:\Ø™c²¨/Û0ž0XýPWÐV*þi€Ÿ)(ìí}ÈÄÈ.œ†Ci™}¶g<ñ§¡èôoŒ;´`…+�Ô&ñ¬ÉÀP$ÀB�¥hõ�lȹvO[±((µáqxŒ1xõ(ƒ¸U’™°‰ñçŽK@¾©ˆû®¡œ°Òg߬ýÐ2‘¥ý@»bÿl=H?kp?µ0¸±ìdó#^ö²CÁÙM¼i*µ † qz¿(¸ºØ% hœ¿£óbGË•f�WÄûÐì G�½½BûoPƒ9¹V¶µoS¿·xX²Ë-Ub\· Vs›/Pk|†¢nÑôt÷h…¾&kƳ4)¤òM³â£jCJdxò³²y'P¸ƒç2`­À@×g7>­—BÑ+抙Ý|Oòý+ôaÐêf^]YŽº²$ãƒùäÂrïÖàº+4’)H€2‘ß#ã‚ÊsâîiNê;áŠCØhN†UTÿöz¨ÀÃCè•î¬õÜÐZZ.&Θ®`¬ëžKþƒÚ¥pdâ+)\”†lQ*Ù¢tàŸaNô[�™ 1÷+S^°êSø¢aZœ_w_ŠmåtfIâ9®o²8 ™iaqÓe‚ï�¡³1¤¢‚¥fGEæ2gc Ü3pI—&TÊ$õ˜Óÿ¨Å9|Ê6îÎÙùÚ ëC­…t3jM.5F”9$Ù(šUšµ<¦î«ýú⃽\AžvþÂ÷Ð;¤Á “6ù*XzæuD„�—†a/œ†W ?¬ûûÿ)0V�]sÎË‘ì"yŒŠ¡qr¡ÉÆìHVÝ⦗ÉXš—:>½Ÿ,«àç+5·+cnWÝ+ƒ®ø›%ÀR¥è+§¢¶ÓÙ`q¬œ††0mà2…¼°œÎúRê+÷ŸÆö]–Ü€‰^áû¤z¦ïy¦Æ½`™¼—> /:E¸Dÿ+z²4t½†a¿‡a¿WÞb£zÜSé,'¬�÷äÀ{Ú[nUw¼È¬ýJy¿JYm8þé`ëÜöú«Ò5òé/?48ê�{C¬U¶¡Çm;÷Ô5SŠZ`D@Ë*ÈV!œÉp5bOŒÂYqïÈ$÷3¢¥‚¼V�ï@¼\#' vf”‘(n¾�¶/Âþ#Ïïî”Å«˜1ÐSˆ._&æÖŒ„8H—eYÌ$sèÄ 8º"ˆµL ëÞë�êÓæ”s…��ayHO0™é�ûÀó…­GØZ>g:�3áQì ‘ÙB•ÐJŠT œ]�dPˆÐGŸb5 $ 0(êëKâ"_vH‰+’ ^ PKÔ~Rj@í3 V·¸•^Ò—GnšôÔ²MR�G÷“©Æ1¤–ðü¥0ÜV¿6Dû-Ù! OeÒ’Ë.78®®\µzìuBBÇ ¡�"9ŠÍ’“ Ô—_Œ/¿(â‹ËC›v¡Ìu¬-E³iRÌ/Öy»È¶T€èÕèc�Î WK’"…ôRÂ( ]—&ߨLp‹è5Ř*uJwªÇ$< Ùm¤zZ°—'-‰%ó:–T·‰5÷`$gÙK¢¬à‚TþÕ ux¿ÐÐ#V(è¡€³&.l¼™{"Œ¦¹Û:Gë7>8ÐhqCé�dˆâš¾¶`�;Æñd[ðnëýú4_g2\z .g§Î†'uAžø ÐfA."`ù¨“;£GÊg‚ëÓ© ò<ˆónlj9 eû¥Ñ,jøõ"£J>÷[}bÎj’y9+Á3”J—Q’ådm+­yõë,A×0uÓÎ�”wQ�PHÄ`C8Ûg ëy‚Û‘ñ,î;Ðl¨¢„ƒ˜ä~º_KËÂNu2±Zº&Z~P„ÀôÚ(Í–D¦6^ü :ØføÄ'B³ûH(ºh¸�NÌø~Ó¼Mþ�Zv—ñ·)5¤[«4X]äØïå‚F—�ÍÊH†:K|ëOz/èØ~>—ߦT»Ð<0Cifï9i‘Ù8wDøÃ´LͲúËÐ@ý §+Üö¨á™i<ûÚOÓÍÓµÝI3˜Zo˜|hÓC[!¼ø.+?÷+s앸màmÃqyî�68.¹,B…FÑkXF®hGF4ù° }“íøS0¯k¹á[ãXZJPaöвԶww)q8]±LƒlXKÄ”¤ºÇ„tÀ2­º£u Px¡t�DªÜ/²Q!fRµ¸£Ô»Â'Aœ6e®yT4a=v}/ùämPê&(K#ÙŒ²‹Þ„}�^™.õÃ&á#;B-ÅñVOØq™:ÃÓÐ,Ð{æð_‘ãˆhðÇìêÊç‰tRøy£ï€”´gtˉ“b_³T£=“¢c±<ÂXЇ™œ:ü95\kf*Ã#‡ø|1+{žÓg^£´ 㬻Dg†èÊwy ¶¨tü]øD¿‡(*Ìš9ws�¶9ÅkàºD "MÝ%šºC:¸’w�ðè6ÕK‡AÜZ£y¹V–ø÷¥0Ç_Xx—Ü÷øµ-<þè_Mêb:4-Œà;µÄ6àÝ: PÙí¹‡L$2ÇíÔå2ÈØGyK›Wî•á KcЏ'ußdId´×¡HŽ~î`Ø «nFƒrÛ¿1'ÿFíͱ{èø:>ndÓ[2‘¨°"ZÇóÔv.ûÅ…ß'<±6)Û¦°ô¤š2!­6¥Dάv˜2LdéþÒR±ú¥ !ÏŽBrj”ºñs5a˜¦s ß»w)ȲQÃò´iÆ<sÆ¿*>⯣¾´Û€üRå<D'Ûb@@ÕÖTže¤Û M2e@eÕ/÷+‚“&§é¹�&Nº�“�#( ðß»wµ·7ÞÛ{ïÍ6,n ú)I%#äB¼•$ºm’/¹RLˆBDÁ‰SHí¨ê ‚G2,Îç…˜šF# ™;òp"22žì¦^'w_T‡"¡$ñ‡W€µÆÈg¼Ê᪴P•Êà[$ȇÁ@†–+Ãvv{8˜9^Ó¼›wØwñ�2)õñB-Éœœ›¼ü×3Á½gZEZRþ½2äß+%ÿ^5˜L-'ÃÎSF™ø½�ö‹ FdâÒ+„Â�uÔŘÐH ®™Mñÿ•�Oéùô+N^”pê™fEM�ƒ@E3_ÙžoïuÍ_áãÑåQc;�Žï�C7ÕŽí§ž~ƒhèqi™«©�qª}…�¼)G'O"ËTÔOcÔÛ(ékKш-EÕ-e×Ùöô¡aOÚ–¢ÑÞžl†Xá~ÍRÔß`Oߤ{É}Š€ÿS˜vô¯`î—Q¢”`öZÈäÀ/YÞqü}Ü·Ž+ÂÙÁž¶OdlßZˆ~åh)ˆß»l‡÷iá‚®ˆ2#¦Ò|EüœÑS3�_S Ø6Q*¦.\lwÒðµY1è·ÍCj`òX§ ¡dö€¬ä`‡Ðáó~š |J1f®â›ï¥â ì‰Ó7³>ê¤�j5ÂÔv�6f Ä ÛµÖ�ÒN–õ]¤¾7ÛXÞnÛ?o†íû5ØþÍÊœ¼&ý…5{ž£tÚºÕl¶éËGŒhç�à’Fú—ïíêî鹬/.mmf‹Îï×à@™ƒåÃFt¨’&PVÛ�¯ƒ�X‰´ýnÐü÷˜½ö×–±™�Eg4˜/vàTÈšZƒbnäÓ).¦‹# „¹Ït^�“4,£‘P4Ùçw8ÃÑž‡Fa9£dœD�ÚõÛ\’&�§¾ ]4r¡Ý~åƒ2€afd;Vjë?š¼òy ñ“?3'`‚€Õ¯‰5"ž  q!Aȸz§Q_-a5*Œºeè�_Õ)÷2¼ÓͤtY—vÝå諜€õ;Öù[|£C¿6I*ï}GÃÒÏLLÊFíèĈÎõj…Å óX—§ëø’àRù€ ³LÃWFN”J±Aã =ˆ› ‚3¢w¸Ül .WfàílãÔ_³*òt´Ï`�håÝ?`q¢ËF\`r P27‡ ²>±£Z¡`šº·¢Vê–µ*uþu�zewˆ©FeE©ã£ ˆ�ly<#.0ßdìRÞ:Ò“ßöÏTÚ5:¾¤4+ƒ5¾àyºgwœš }[÷üÀpwV‡bȌٯ¦OÅÍÔ„ dÝÝÁŠH™dƒ{­A�RD9 ˜çk£†Ó¦ŒÐitKG!Ê,“Ol{6(Ô¬˜‹WãÓe–óyl†}Q^¯Ý£ÊŽO+ëžxK ‡¥_‡ˆÝ… `W©‡JÜ®õKIÌFÿ~EЃ�Qà4 [»ÀXï(õMX˜íã[&9y#Ë€üYÌ&Ò Ý¤)‡MqùqÌ*׫òÀ\à  Ö7¼¯ÜÁŸ±Ê³·2Ó×až $¨=Ý|•`/«°.õ‚yÇËŽÞä†Â1ö&{u £àvº¿_@ww‹Ž".=åŸÐ3üzÝ^„x#7ruzï^Œ/LïN?ù …ÈÀÀЀ�Qï¦?2%Á݈ŽS(³Â9Êô²âÔ|ç"iÁ9¡´4Øß2¤ ™aE½*„`®_bTà'q$㨰b: Ktû,];œøéŸâ¼.¤ä”#¿÷“)¦äœÔƒv,ÀŠWª²ìî•7\[êë¸ ±fÖª:Æ0~¯æu ŽK©§™[–˰ˆY³àgï(l˜QÓéà‹uêòŠ©Ë‰©û<ç“ÏXÓ lókªD�yÐsäórÌŠ^e©ÄjÒMþ3n à%C äÇ6}ÄÖ¬F4ñMlµƒ[°T™‘D–®àÓFþ‡x‚°äätk|ÙF¨ÉÜ¥´ì”: ûûûH£É™�Ág0Ì;í·“ÉÎ…ßÀ‹¬�SÉø0oÈÇìbMÒ‘íÑUr¥‹¶è·]RÜû(§4�µv#ÖÙ»Êî sþMÖ�û‰¥äç®Éç¤Á¾ÓâÜd)Õ@ZËR1vG£9rè÷Ó §‡Uå§2)ÿ3¥¾ò<–•冲Oy¬ºžðÝÉvû�8|Ü×Õ�’Núá:^ÏÛÄ;Q8Î^M·ûú•æï;˜íÞ§äSèW4÷{™­‚§õ•îô�¬»�™:ƒˆ­ñ¦ÿ䔸xPéÒ}È9ëœð¾6`j�ö0ð:f¢^-N*·4ºÚÇ«ÛeŸ¢^8‚ÕŠR'‘‚ö Rµüy¦&Õán¬u÷™åöüd»ûÌmy�ñŸ¢.D5<2ƒr–³v_DüI4!b÷>.0Ø u�vݶú±/êÇ~¹îè¬á´ï„idĸÅÝLg²pth&«í—­ÐðþWýë2-u8“LŒž£ÂL(³É ì³Í=�¡š¸»ËºÌ¼¤’�S–­*v;ïúÐOª]7(~²ª:äOñ.ƒ*¥²hw3}Hc³y7‹x­e#[x\bTè±ð�/W¸Á «ñf~s³¤Õ.Ž´–µ¼a¨'ìŽ5ÌHãaÖ,C»v¼ZîÀÐøòKp]þuéìhêØ¯Ó-Pn«!ùÅíŠJ� ‘Gb¦-/Qˆñž.fb€ÅZÑ™ÕøIt/²&“ˆOùIuc�@75æ5Uóš:Xœ!]Èeá•}V`ý-QQ¾í¼åƒ”ïá¶W)z¾ÈìÜUtI¼{E™#êá9x¼Çá‚l‰kýâ{xL¾íìÂD§*o8êüº0“hCãµlœ° 3‚p·;ÕÉaÖ �ë¼æ&{ݪâr'áÚ—,&·}n¼*ë Þå©.ƒ¹eêMLŽ{� …�~\P±�ZCM¸Ê”“9‰%iÌè`L¾|ÿ”ˆŽkÁ�ä˜ÔWC¬ÌÊÏõ|ûUEµªÀãb²Ã…ªàW;¨Ò÷ç*}C Éõéû �¾¸tÌ‹¡–â¢,Ä’‘EðØ;×â­ŠS0ß¼U•ª�Ê¥¼EÁ~¸™×%ÝS¬³2ˆyU…²(²b©m5†5‘í·²{#«ì<&Þ(6j���y‚<_ä=¨…:Û³~�®ŒRc‘ŽýœÊ¡Š0:¼ß”ÈH„-ôyF£ä ò²Tæc©í޽èE] G–'_�=ù®’žöä»bO¾êVp%s>¨ aO¾‡(˜KO¾‡¶' dÙ Ìu iO¾“žåɧJ¡”Uý»¤/Ý?йö<­Úf†‡¢¹‘øt¿�Ï;BÚC´ƒc¨Fí®TàK+‘i%<=�ÊšïõÙ(üŒˆ×)ñQn'ùi}‡,?ß–ä§÷—’üŒ3iáHe�ØšÄ-*ãO�)lÜdoóü0$ô“[îÑ.¥ûáò&‡:ëO_ã‚¢vœšÒ‘/êšt@C3ÐP ¸ckÊ@ÚóÜ”Dª8¹L¨BnQD››Ýf½Imm/ªqÍJõîÃQN VÎ*Ë\Þ4çdîúfûðýFïùmõM'®UÎÇ8Sú7Ï1­²Çõcš$l«œ>L/í´>}ɰGȶ—ÈÄ>U¶œþ“3]é*..ôõ  {ÎLGN™È´kÇýZJ ´@lŸ(Ä‚¥MÉ©òMÉ©úM´"k ¨“ùÎ)§ü;l,‘-p”[6à˜ íP«-ìý0úÙ&ož„âY‰¶žQ1§¿ �'dáBÎXTyï—U:Ñ•pt˜(¡Oö.ôØ. åWryÖf}�úØCgùj¬GKÉešT°Uv-]Z¤/K‹äû“6gÇzײÅqNø=Ml¦SÀafX[¤¿îî:ø•š�!pbœ÷Ù€8%jÀ€§Ãxz?�± ÇñÓ:frHÜ–r YOqZM¹q©Ž”¨É„Õ3Í:Ÿì@O¿mƒ|›äáS=bWûAZZPs¤¿~—¡<Í·Ió£T¾•eõ�"ÚT¦û\·»J7�……¿¼"%†“½ú<~ÍnÅ7/H„ÀÜ€lº˜ �8œtíºÕý¡ºeÃw‰å§Òêý³áyRX—†Åô9m ,ðL.ÓÉx^ x,ë<·?Í'ã¶,ÜV/´èD\}ýzúêåÁT̰ò@Õ j#¹úp;Ÿd´œª©�êµ/žÇyQŠåh±±»qc&¿8±ÿ‚Šãõ'yÔþåäm;\ÎFQö©|&¦�4¡¸pj˜¿~uª¿N'9zù©F,ûßÓÂVô›m<:y~òödí~];†w[ áÙÚ6¼=~²M+Ïí…|—×ÒŒBߪ²;o;·T5�ÔÙl2Ÿ?š\ˆÁ Ô¨U9ž9€Ë@ŒæxËê_êk"²nk€�T‘³'Õêå�åk1sTtà¤áÜrà€¡�ÌÌÈ�xwèWÁã�Á|gV\.0 Ö+É�ç *Ôv0g£eg´ÝmX¾±5<˜OGƒÝÀw~º¯Šûø;È"&Ð|pAôýݛ秅˜e}ž@gò[w|�Ðs°&˜`pA©œš$&C�÷alûì+éï°D 6”ï•É-yyö4ÒšîÀÉì=ÌAb`+ <èrz6=XLžO>³c8ü�à<é�MÏ• ’xµßñøî®}}W¸˜/Šün>{ò�<«?:OÚ€0ž,Ó7ü Íí. Ýëù¬<žL†ƒÑ&m6ÞzBŽ·bÀ¤tÝÝíR�ÒúvÆZœÖ‘�LýR8ÌäÑä­nKñjòð=8Žò9 }{SôN®§�vçßwñ¿þ5ÿ{Ðiï/öÛÁ¿®ÿ‘wÎþŸÿ=j°AP¬•)Ûç]8 m^íÞy2ÆJ¯ LdÈËq  ŽjÖÂ[<°C}`K>ÿpêÃe¼DÏ6ŠüðäM×ø-C—íµ¦¦g ‘—¾ù©¢·3* 'ãÉçñh"ò×ò-Ó·†íq^½ýnj¾×|gb×rY«5SÏgŽ:—´cÚy䯙±À3µÀ³º=Ê5Ͱ.½ªíḚÉm‰ŠÚ¾= VÏ;Ëð¼,ÒÉ ^õ¿ùYÈÍ„òœÈgkò\ʾ6ýÔb"E¥Ì¿A{(´æûí�íýì€X}¾·wö% ¤áËü܃Aôè>w–KÚ# .¯)d|¦¾]û¡ú¬>^Q—]5»·å†m*˜<ãäû¤€Úb¬0I˜Ý«\-ûub¯håªDõI\ïЭö~ ¸æö¬-žGÚ9X\ˆ¶ù}ÏÌ¿#Œ‚õô´§=6U÷xU¯‰³v6NXÜÃGÀQU&„Ú3מÐFX–¶ÿî8ë£Ø·@6f¹(ïý¿í�„AÞØA‰žŽ±—ï}7Ž�QØAnd‡z3 l?´½+~+TY˜QûŒgXWì·ÏÛ”iæ­ácN_ )RÃð^+ø0–·?’@üñctv¾2ö†–×ÈçLQâ@¿ž´ÒÕÝ�ýX‹ùxÐÒ@v©nçÜÉYpæ#ªÃŒ%ü*ßö·ìÇ· ßšªÄ·j&€\½±1»œDr„š†ZÉg©q¸vÑg­�À‘‹íFŽz1ÔõR \ø/P5œ«ðõ·f©mÝ!LéT$o|%MŠ˜Òg1ƒ9 Üù\ô 4uɹ췙ìÎw&Y¶œ²ÛÉ—h;Za8Ŧ¢�6œªPFÈNº¬7ÂH*§ªH6>MãNû_ã��vôœ‡1É!i¼š=ËxH‰@ÏûGV襂æ”rá»h€ìüðNПn‚=MÐU†.?*Ÿ$h–oLÅ –WƒT¡††ÇÔ•ÖÂ,BÎÕVÂ5z’£QÝJˇÓWLµf0ó†g !�@C¬í�kœî£Y§‡lp¨nCipà"‘¼õ•ÕA4X†{{²-ÊÇÑ«Õn±-Ôõ\3Ä/ô­^c‘ø¶'n©´#¤PïXöó‡&Z?݇¢³‡çX�G6iì¥\uswÉÊ­O$‚pjÔ'šòÂM�úDãd*ë±¶’Ã*Œ²:cŒZ"ûÒ@ìe·Äà3w>e¢KÍ—Aÿ« AT²Éì!ÖÕ�§ ÆÎTrà ³ºQá«n¤2R¦•™Èp4 \©˜å NdxëkY ^ =Å}V°,OAÓ‚k‡Nöø±¹(\+°ª� ¤�äk: G*<�ñ˜OVïÞ3Ý­ŠCvÏÎ]žu5�¹Þ=ÎÊjËWöùÍèühu–œ~ôt¶èÇEnO¸¡œ<€Á̺gY(αš�Õ%Э{¥iu}¨*ªOõkĬ¹¿¤ÕÔUµ?XÝ‘[ˆmA¿gkÜró¡Ÿ“¯ßþQ�ƒCxNca bíW±Ü)ü_çÉ#n% Âã4y,6zMã<<-6pø@z�…d¯ŒbbAºÒ ã|IÙAYщSË¿àá�1«šÃÔ×|S¬ã.ôV8}Ë|,jl�o56õWi6wˆ;ͨŞd‘¿A3¢ uÞ=/²ÃE»»Û12áPž*(£eùSJYβ"‘´5&bÇPTKbÏö’¨®ƒÏPwR&YAòI¤)'¾?´Â%#¢û 1¤‰‡#+¢ú„½ñ˜ÙÎ�i‚ìÓG8‰§Æ-#¡Féðäæ›5Ì®â&í¥¬Ð‰aJÉ\¼%�3Ö‚(7M^ÖäyŠ>´7‘5VÓ¨§PYÓ±gí—ÃaËÍ&¢R5äf¤_`¥(¤è[{e|{ÚhÜâÒ>´K kù,�ž©8÷`lÑæ·µ€^) ‘Ï0œ²ÎŽ£ž�Ô’–¦PÅÂãi©šª§ÅD  t'¸wÂÚ;áhæð-WŸË!æEõÜO]/DíƒM¦Zn�9µSj¡J¼‡ç�õó?…=Ù EÅeOÆ�¥Ð˜ôqrýÉr”¿3Ð{î2•w]XÍ+X�V'g ¥.{†ÍHÒ_k§ljgGdwÁš˜Ì`¼ 3õ öRð/U'_¾¦�·¨.Yl§í¬´œµ…æ©ßWÊ´v„�…RÞ»¢˜¹²æ˜ª%Ž=c¨íÀW%E²åPjÈ¿4aZ ™aM*k†â ˜«±6Ž2s¼�ëYEµlÍÑXiý=YàÈ�ÝÍw)'^ªÓt¼K k Uh¦áJX:@¹ƒ�ž?±Â¥$ÕÑ�á#äÀ'Ÿëéy:�*ÑÝph@ƒ/PWÈøÎººçer«BL= 'é ÷`<¸ æûñ =ݲ$ÃFGÎí\9 w³š†Ø"w›´YC–p»Ú†·÷÷#™²~‘ • ”Ÿ’ó)™œc‹ùë6;mœç ,”º aé¬{¬Ð¤:Vww­L9˽Îc?dŠ/u-¦&ȃíèËXø%p¹ae¦fžöÚ4ckJ]¡iÔH[Jwkf4©ßV=ÃÐBCÛYålñÚÿ,%Ë£”n¹ÜsúWå^ËbYÉÁùZaÔOë¬ÊÔ¥±;r¡�~<�7¹£§µsÓ@B�?øöÃØè"^G#†ÍÜbÒj‰Éjná¾%*QëbH»¾å©«S�M•‚í]ÓÊ¢×¹ ’‚ðÏì¯Õ?·aªý%nAA¸g�|8J’÷øVçkÉÁÝtâWb[ßÎëG¼£h.g9] �¶AScb/¥|`w6!+¾x=ñÚÀÒºVXc†-£w4üØÀ0l”tÿþoëû­—vŽ¡ª@EåêB ©ç»Õ …JKäÍ*×1áÊ�URcÖêäS¯9ÖŒò‚ÉÏPÊ�äRç~õ;}¯Çƒtºy!ýƒ qÝ9âd~f—Ƴ|½òp�Å\ö¦tTžñ)r_Ÿ^ØRþ®Õ°b›ˆ‚¸R9ªaöQyUò6ï÷ÅÒ,fƒ öË'íX#¤}îÉêªâŸx&Ŭ[™û_æ ¡R C%³’4V 8nñƒÜõ†—=°&^÷ _6üŽðÎ*nÙæó«š§ªÃRê¦| Xƽ#@�éÖYsjµ×`‹¾t!-¸c¬ ½±{”$‰¹|Uä ®é7r€aÔ–9¯‹lYÐý� £ôøŒ°;l'ùŽ`?,wC�b#ìEvF}èØÃ¸6ÎϺ«öz ÙЧ÷\æBr¼Oål[ötS•�8‹µÇ(žµJ=\ÒK‡@Ë02F.Ä©ìTM³ÓbJ1šßÈXð`EÑ+¦Äf—ãʶÒ[ÖBµ Ê2ÈC÷”ð˜äÑ%Ìabû}iåw6³Ñ±ÉaûÍ«nbjz³ï„Å­C˜Z/é 4Û"ÀVê8H™n¾Aø®HŽÂ“4ü(ä*|_$uÊñ pü 8W|’Í>Iéï„ÑÚ“Ñ%^;Aõ{1öØ?_²+}jª«ðw»»—)Ñ” I¬/.Š| ßÍXxñÕÐ,ûûõvNB<õAëuüúþí&a¿ d÷CÑLv[‘î®#µÍT$߀ÙñÖáý¢ ÙnjÔkH…Rä!g”kå ¡&�̬y‰ oî¤K»d<…‹=›‰Wåkíj ,Ö…iF‡÷+äàŸ³ÙK}ÎÀ€hÔ&kLNWYRœi!íèÜÔüµ Å'0ìÇݹp� óøY‹ÅïY·Ô™¸ãëÇVêrÓ£ØS4žÄF‰*5¸= /ŽÙ¸K�à¥$³ü޽\ñ’5ŽN±ß@•šúQJˆ@?ìä¤�§ñ%C�,¯û/8Z[9õXÎS46½�lQÿˆWW¥QØ&ÙSÁ‡Sæ6ƒTgZºbR›¯ BÏ'(Lbfcͯ0Õ …Û �bî`µpbª*¢Ó1?™ÌBj¼np©´£­Ø€©Çi¾áôžM4Ñò¨ÙB!°ÝZºKbÊõúÄε.ñW)ãäF„%Ìë¦èà5.·]cXäŒSY ä>hšÙÚU/åª×¾l™Ÿ6mD[ûðŽGçC„Oi/¾:íƒ4yþ±†Îü7�ßÙ¯Ÿ9ƺ‡÷s‚UM8c2y¶Ü–÷lÔÁàbf¤6Èó#“ηÌÏvÓú—Îð"W‚ÈkÔi;ÜòÊV@™îîdU¼ÚD£6ÑeϺÔâô¿çd;`û€íŸÿ³@ú¿9/Ô²‰ùK¿gŸ‡iWÛ*Éÿêÿ0É˽ôzÖ˜$µ$ˆ¿ý߇xµþ� ^•xý Xà]¾߯֯_ÒuvFƨŸ—ì D`YU¨äB\üÌI‹IO)âäŽâ:¹·^›éì´½dm—dTt_a ³ÝàvñR–¼G÷q1wqçx9YsÄc’¯„øKmq)·¸T[ÓÑ•IÁc„½1¥wcŠ˜b–© 4BqˆArthïVøË:ï¼~ûÉ‘g6ë“yýѸ[uWè§_ǘd�ŒÉKªÿt0˜?&{V1©4\ƒm™–L3-ÕÑ©¢ý„«li=˜ú*Ï;•£BÕ \…ÈЀíX�´‰¾™:mÞþý‚*x+<�šD ÄÌ•'è j);ú*…rƒúÓfÊTÍfc-}[ðÑϘQÁ’j ~O/¡õÖ)ÿê*¨J(ë+üê¢~‡~ý¬îE÷Ž"ùéÏêC¼é’™ç‰“W:5õ„F“°•ÚgK½µ·ç©J¦-¸U˜q•„ë}¦±H·‰A '‡í®sµÿë¿Ôïvl ?=xyòámÒ~ÙÆ<1oÞ¼z“´Oð÷ñ«¯1yxÒ>n¯‚NïÀLëò KÔnbÝzF¯E£Ž‚”CüD2þlM�¼fIåJÈÆP%Ò KK!�)}Ñ]�Eåù`~’Oê*�Š㘔õ˜MÉÒnÌ^ÖÜ6�$ëzÔˆ­J�ˆ!Î°šæ›©×G¬Ó¢µu8:ÎD–ÓEmJLÚ Þ$—ANW$—V�%Ÿ|"ÛrÃl×9gVë–šë–ëOäîu3Ô6ËuÝßýE á…c~áy$«xûs˜¿ƒÉL‹lQä;cwp8˜eÏtQ‘¸/]¿+—’½q»'5wIûõ�§e~vì1Ô×�…y~V±ÿ~"û9nÛI™Ä¦¤†Þ�—“‹éâÆå2žì£‚ø`LË8Gê,9EºÌÒ¿Ò×ÉW¿Z.^•oĸWx;Vì÷–B¬6Ã7©ÛѦ¨7o#÷ «÷x²{ƒy(Uâð¯µ{*—Ä×n‹þ°i�ê%ýÈ”{³O¶ez¦À€:í¤™R½`h0.'<Ë‘“þ,¼poŒ £ö‡‘¨4œè•›èTß7óðÌ©Á1Žf ët<Àèºy±x5~4˜Ë—ÑG4„cqÖÎH¥ˆn‡mN]¦oœÃ—üŽ•KZ¿hß=¯ðm Ža{R–pý>—Äú8?»ó~`**ÌâÚåÈîñV\…­Ç¾3n·_§pi)Ç­Âì«°”³¢øRtnÅ2,¢!|Ž?p££A²¯YôIý¢ˆÑh¨.鵑¾šôz£"ºP׿÷‹q4ÎB²5sê¶QŠ™&ÒÁ¸x0E¿ uõ0°žž{Ñ8µoüŽ¥H/3t††£¹ú…?òâ…˜FÏŒ‹·“h¦^¤tEòßÃi-�E.Rø™ÑUõ›&ù¯©tËÓ’pZ´!±nÑuÆ?hº/ðî t6 ‡²èžЇzúRý~7^ FÇ}D=yt™Ú÷Ÿ7êу,”XòÁ"z˜�Ð7ÎiÇð«$E�àÇu_,a©^ õ£ºÂÕx‰WS1Σ“,,#aô,T‰þ¢ÇxþŸ"§=Å ¬ ûköf“åôáMô, ½ñdVœHäMÒp0ç5yž…#ï¿È èó7ü–~š†æ’¼Ä§×Ñ+øSÌzEôFþÀAÏAâñþ=á»öOhíµ|ý4ãè7yAkr ƒqôþÀF=ƒ¡ü&BÉt¼G—pÁÞyoŠ9¤ÌÑ»,œŠÁì3¦ |�¿g‹¥È{f+APÝ:{F/ cÞ³N/£ ¼:‡Ã:-³aô;´ºLGƒy?ú >,úâjgâ}ë9ø}ù¦˜"|‰³hóo•Fåï5ƒÉÊ3�cke Š uò4Ä]­lÆ‘ÿ»ØãÅÕÝ©òC¢o3À�Ó<­; È(ï@ ““·[Þýš–í*z v±m<TBó-åœg£´ZæFá»xšŸ`�Ccá@Œ®jíÀâµ|bB^ͺ±Í|vÿg¦û!·§k=Û–º†¨õƒä|³®&Gåì¥V÷œœ’T šú½%°�$^¹—†&bŠœÜÕ˜ïÈÉ{ú-UšNJ På¨4ÝVm]c Ò•Á48>=¨Ðm€ +¹£cöcUSy�žzÉ-d_Ê�ªDaÞø8wvÿ�*%È$R…shÀæFV¬©ËÑu[bdßÄ4òuþ˜ZÚžN&™&éÚ=‰•ôÖÍÖ@ºƒJj •1ÂÞ˜¿,Ûµ³ ¨lÑ’”Uûª¶€=F—PÂÔÐMU¬¬¸ãî{¼ÅA’�y»˜<4=ÊÉ|ÛãšcIk÷0î(óC©`¹ÙÝÃð:_LXŽ6R5c·bqh6h¬GßU÷ß F¾²Ám€åkš4 fµòáëÄ×"/2�7Rox�'¤ÏÎ[@r=ž²s]à(#Ìä¬Á!«ÀÁ)ônšº×!1ªs°ZÑ—ÎÖ8LÂE]«Úªmp‰Q–>›,Ƈ÷s�M)×Ù”ˆ;wBÕ9,ÀÈpê,vâ.¾;1ÓOËØAÍaw;ä?ÂT¯o‚&ܼ¢^Jݲ‰»ÃCƒTOnteÉ�i8ÛÍ)OªŠ÷1fK”+WUµºwVt(V?/’ÃpZÑŠä",­»Å~"þžÕØÜ°Ÿä¨ˆ”ÅØûªþúN;JïîÊ̇½Ìøö½vT»×iG½ä"®Ýðþ½£úƒ·#X#Gg×.Ñ|\û¼È&ðÃâ妓Áx±ó·ÿ�ŠÇí¸|ž! ì¼í3b w&ãÑÍNZÀßâd‰ ë~¯Û‹<£Þu7\;8‡Õ”ÃÛý¦áµ†ÕøxhªN=Æùííõeyçÿ}vxïÿ;ÿáGL‹{ÈØ8äRÎú]2,L‘i¡<BUškº‰µ±ßéFÿ:àŸA7è\ÌïæwÁÎ�Θ½y?™žžk�™,ÜF‡æñh"�)Ö /•‹£¨éÙOç ¦.æíè2é[ËM·ŽNþñwûöÞþ¿Oþù÷þªì\þ8váVîÙjeíÍ¢¶¢(¶ w„Å€ù;Cöc¢§€MvþÖÞïï·ÿ†;³º@5L>fÜ7ƒ Æ—÷E| Bü´s‰+ üDvvåyq]kükøÆ¤ß=?¯[bémB3úï)ÌCb“X+&ŽÑx }‰‘3ñ¹%DÁb®¤\¼…˜D)T¦$À$½.f4�ŽÀëÎùþ�!ž)Gº”ì‰úݵþ~¯r™¬öÖ_•5¼¥ºZ'V‘ç.,#ªg –éIÚ%…­ÒôDxµ‚ÝX5üšÖðkÚˆ_%w3´íÐ@´=‰h[[`ÚËL{éÅ´wí¨Ÿ\ / ®Ýû|ÙbȰš… 16›0°ÀÞðë°Ñ蛱ш°Ñ¨†�†&66ºr°ÑÈÁFWÉÐÅFW„�†.6º"l4ltõã¬Ñú‡<Æú’I¦•[õ÷ö¦ï þ²{]„-‹{íƒ`|�@2šüÏÙ,Â@67÷ûñ –KèÜpc¡�ÍÔ§fa�úI-Õ�̪b•Àk¡SAƒü´s±œ/4N]Î DŽ;ðÍÎ|ÔV¸F1¿òS« ½Ä%A×w„((EiñȾ/�+έÛr'âGn«%úÑŽòÈ›mGå„ ¤ù û“…ù¢e$4ß#e`TéÍg8³\hó¹k`âwÝ»õ/,� ù‘õÀüN3Áò׊¸6–‚RL*XÍ Ê';ÒMR€It@¥° VÉîQhì¶’…M-0ä¤JW°Ô%Ô3'CÜ¡j»úL½êÖól·íwŸ"Ç4í”0ÔƒÑè�ýجn+£œž‹Nû_c›ÙÔSÑ.3MçÑ,Š8K¥Ü}fÁy¢®²ýŸÌäP·« º]ÙCKžçˆ/1· ?!“xáb“�‚ÈeÄçÒðó¦3LGhX!$ŸÄµÝ€Û—ÚÛ—[Û’ªÍ«oCjof•ˆ-Ãé¥F¶Ì|¦•½FW¼hòq¤øl\ Ûf±£(%$tçhr˜é. ;IÒ²+¶~6¨‘ô¢H~k²Žð$`©¨sùîýeÑ©[­D÷v9EbqÌ€kòK�F� lÉüÅ”3yJw—‹äWú�Kœ<+ø“_O_½LžÖÐ_Ê,§tŽÃWÆÑn‡_Ò¤�¿Ès¸>€K˜~f4o‡/s~ثǮPžÒ ¼g«¥"Ô�}æ sK¢9ÝSç1ºAa¦Ê†«ÐnƒŒ9W¦V»¦¬œΔµ Àpäb�®`[|Áë>(oɆ…¬Ä‡²¹e,ìŠyhTö£F(è|äTïÉÛÎí æNyµa�poI±mš½ H òX$ÙÐŽRX”¤„¨–Ñ«Ïc�˜¾DÝa~Vž'þãôÇùÁïEzJãÇTR{{ú2p%úJK~î×¶„=žìè§;0?þÉ™RîrŒ¥^w¸/Tð¶×ïÍ®³¤q²3.—³V=0Ëø~ÙÚ¨û´]5)Ìêt!ugikçURƒ*p}b*W„¹¹ŽK†sLGÅu=·he±0Ì�†t›sÍNUS}Ÿ«¢¸2Ùò0X1››­uyàÚŸ‚ $Ùe–¾Tm}©ªêz�[^ òºè׬"@±KǬ9¥Ms*Ý"¤µ",ÅàXWÔ´¤¦Æ¤k€‡¥*¬\7ˆ)¿Óc*f7HüÂQbnq8”С²’*˜&%™¯ �ÜJ¶_ÁO ºÌ!¿h4�¤†Vo¤+¾Ê%[±q§æ,l0îí¡ùgÈÆ|‚k43P'Êe9<˜Œá�ØÕx—íTâ˜\(C•%ï;§ ö™PÕe:N_îÅÚ›½VHÆÓŽ�U] LœÖ±‹p*…dÓbÐÔ­ÅРSk—Ê$†}±·w!}Ð�Ú-Š– <Ýlè6KêÚá£ækñ¨ª2J_PsÖCJ)  ôØ-¸ðF-4€ùÁg1?bÜø,r¡qs>Ð6y˜ 'Ã7€ûauþÖ\ŠÖUܱÊgÉ‚ò”áP'ü1kêÄ&"’ùÞlLÚ± šý5GÔpmªZŒÉµG«‹wé¬Tì—mî&¶:tî`A`-©½‰VrÞÆ<Í­Ú͉Ç_= ¹&4m‘@ÙÌcœaYc¨?+ôáãjÕüAÂV袙è UëÕÚCCÃãʉÿt"Ö@lÕ‡a¢©ÞòäOÌ4{ÖVwÚçA_¢Ý¦ˆÝI'³Åñd¼˜MF¨Jï%ÅÁ|Ð$”s—,ùòsà?*ò à_RãN­Z›{êÍ»;ý*ž<7Ö½Ó¦‡í°5ö€©ösõÄÃë/ÇèOÉ@o;Ä·çAxË#�z˜ØÁ:å#®ÖQ¡ƒ×–{8¦áå¬{ÉÇݪÀ,<˜e³fáåYD¼ …Ÿ¬*è½ÈXdæã¶FXÚD-û’÷4Ó¾Ð$¼®4´vV›¦c­])g×�&™!ÐU‰p!a¬J“ŒrBÞòÐÉoøÐJ“ ñ–©1J>`'ï,ï9~pн¡�àˆj*²¡µì¡Nc°ó‹èX¤a o®äG/�sÞæÃÃ�ïáwVºŽä‡”naæ�d!ø·Bt.Ø$ö‡B‘Xªh�êq� sWÔ’½ÈLyFªÝÃH€„Šöhá¦S3œó,�j ÊÝr&Ì”å*²ä©ð�ÈtXÀR95?9¥‘UìXf°;1r¼X3ì)EL øø}^ ¢Nçk2þ:Xäÿ«RE´¬\ÌöMRË4ù ÅxÃKsò¢Ì<©g]¹C]€™ª…¨�Èì8ØX/I�·IúaQT ÿ,=w ¾tw‡Î©À!Ý»ü¼�®²õuîÝ»·òp ½½=laˆl*±y÷Ï”PJTÔ@SX¾éý4žÂz�QË@b™ÅjT¬5¦²Ñù­¹QJûƒXïµüÁv¢~j^¾‹E1'9åòV–ŠM¤åi]l©$TÕñ;áéçÁ­ôFÌ�ª¤ÅH:$Fi2 彤uľ‡G‘šăýèžý#üçytöÏëìœó[?Q•«1&U üƒŸüC}û�{ _É�þ)�ýt¾’Œb/…Ø|o ìv†dR,@æ;å4´¨kžŒsJÏB�Èi R;6d}ªxñQ…zÝ“ˆ5W:jØA¼]`ŠO¬P¸Ã,0òiRÕi„^tëàô6픪ƒ•„òƒ² ;úqD'èŠ(cº¡s3¸ë”Îæ/`Ïù}ÅÇÖ“ òL傼×::Gp�LA>×¾Úˆ#7„‚¡ÕÅe'ż³Ñ\€ ÜyÍYo �11‘Ç®ú>ǧ“2Éæk‰x’§�©xæ]�ß¿îHQ æ7`Ì[@™óð#™³§aΞQ­ŠÎ%Êœ¥¯å�slÞ|ŸUO“?�Xdï¢1Âì³ö‚:÷ÜcÜrVE¦…i¨j™þœèОçÒVì§¶˜™u]lŒIT*}†Ç)´¸ßÊ1Œ‰ð`3³3‡ ŒlDg»¹WÅõÒ8»Ÿ›Å4UMLŠ;m à„æU~GÀ@Ãå,ù~-QÍæ‡‡ähG°�e‚':†“{ÙLþÜ$ ™O¼ËQ£_ו÷¾ ¦É'S•Oû=1s˜=7yŽlÜÉû“7Éûœù4W�¢è‚9Ô’aª~R>‚‚·,2û©úMy’auƒ^×”•'¹¨î`^ždŒ×Ujµd”V¬×œ_…ËŠùïbÚž¤u™i. _{"ôå �ùžY—o'ɬz�¾_dc—<ç·qZËŒØN¤–\™W4ÍÏ|ÇL¬–,ÝÃĺיúIS~ÁOŒ8Óä†Þ�ÉÓ’/æ•™b-¹LÝ'U’µä~¦Ó¬%é’ó¬%Çt�™Ö’Gô“Sª%¯Du�+f^ã’½”q®bœ''É>èv™<£Ÿœu-yÌà•_Ô/ʼ–<Í”´”üJ¬g_Kžá…�-™¤$€òâ=Ϥ蘼 b#ù�ÿ®MSúY­^ë%¿t�¼Ò¤'3ÇÁË´ä’WÑ’�[åDKf¹¾Dø$ÌK€�yõœ€`�טú,é ù‹F5Oå�j©^ãQ]ñå4ùœKš€™Ñ’ëÔ¸¢•»VÏU¦´äJHª¡ÜP“›<Ö‚I‘V4á/ê)%LKÐ%§LK.ðeÎ~–<ÌõoÞÐãê å‘qÍHú¤ºCñ˜¯ÍôiÉ/9S³ò7�ë×<– `DÀÏÚI¡¶?~,æ/&H‚Úá-9Ásq·~üñ?vØjû1Èx÷æy2»þ4?X^äxü>¡ÿÞ´ÕúÿPKÒV1]§ÿ(‡ Û3^imunify-security/assets/ui-app/assets/static/shared-dependencies/grid-list.min.59600b43bfe3.jsUT ëÆ«jëÆ«jux è‡íksÛ6òûý …—fÈ”E÷q²Œë:iê™ôq±§NÕÙ4 Iˆ)’G‚–…ÿýO>D+rÓÌÍÜøCX,ö½ ,}±)(^Žr<'ð�›ãû ™—q�…iŽ T¿/ A¼3F·0†ó�¤Iwü†DĘ"sV&!…y“Z[£,ð  9 ©áÝù#‚rT ¥(@±—cZæÉ¶Àv,ÜIs1öéèÅAg$‰@ á‚$ó×€„™^ÌÄTË€Ã-ƒœcøMnj‚/H:šüâ¡F€sK³Å?ȨÚÝRʭͤcF¥í€¯ÛŽ¥;ÂÒ=ëNÄŽW ^Ó·éÊ´�dU�¶ö×™9Þ¡ÞbaEKH{•D|ÂÄ–åšÀc;O||bÞ�®Orìñyh·ªÕ‚iŸØø;úáÃØ÷‰V¯öŒÆ ½õGmy8ôfà¤LMÔ{ô»>%ÒáÐjŽOè´öº¶qÔíHóhÒæ¡öi ÷î„a'’yÒ’ØO-É(nt{uµkßÜŸÕÆ$ßaeÚÙakH¦à†2ÄT•gËV8«#€±ü%ìc€çN™ñ€€MãçÓË«×oÏ_^½9¿¸4,Ë{Ð]á/!c)œW,¿�äîc9 éòù.ùð»�±åòŠ™¢¢|UcäÊÌ!FfÀ¢ G(ÑwÊaŽP�h„Ф„W~A71îáx”,-¿’oc&†«‚ÂL( ÿ(ÇÇÿøz„~+e Ò@â&øDi™DŠßHå|QÀ¬Üå-ž�³í…Íз@x á2ó;K1Ø;Ö…Œ¹¥› »%*€C¦f(…&uî¦`¡,ï.Ò‚žRÊfÔ�泿0ẏ‚P[ÔEäñ3úìY›˜P’¨'LCê×@Ú¨-Ó�:bƒ*KTˆ°²©p·Ì­—JW¯« ^ÉÒœžݪì¸4'sYv]hÆ#á0f\Ü1fƈ[?H—g;k™h ´Í ÄnÆmGÅYžÊ¢ò%ž™]¥J»€â…B¨2"rg@ˆD÷á0�{0@$3Á·NÆùHƒ“n#RÅ÷&NÃ[Oeu7Ç17îjÔâõ>ðঀXM±—Þá|§+wA¢'�åƒö«½ÀA„s´h–¦P•ë�g1^{ALæ‰M@Ü…—8÷˜ÌÔýêÛlí�ÊÓÜýûl6ón DιG»ùü&àUÍ�¾üÖêÒêeAÄLÕœoÉ.s1žQwìå|£ñA¼½x~w/žo!ÌIè5�áj¯_Iš/ƒX ä=vI²€Ó=ˆ >x̫߃ÈiÀo¥\¿¹Þ¿3%›Bön«‰ýØ2>� E>ç£nPÒÔ»I׌ÆíMš¡6ŒnCz×Ï!>�ÜŸ¦ÍX¡ò ¡oiš}ÔJ¤qߤ”¦Ë}Ðâd³•ÜÙ™�V°ŸÓx:xØb-*›Û5Çõ …â½4„OÓ¶;b­!í,' » 5_aõ£Äp“„z’b‚zˆ�†Ud;¾Ì±éAÇ$+HáµÃW¯ù}lw7¡ ;dÇs3[à´À�)¢ý¼J{8©€<@|ð%¾îîB|’ÓCÄ'S±p½N¼ö”“õDö�%—weAÉl£ðwrŽ3ш;*UPYàæ¥aûR€ T£Ps7êTªš{Ö®¹w*î*™ŸÎ€Y½œ'„ßBȃ\ÌïƒZK¬—¦³•¦ŸTwÎöÔ�Ò‡øEPŸ�±âK*çŸ%vÜ.8Qnmá|æìV��E“Ý ~m!(N­-?Zzmàÿ0(à3ÇŤ¦â4ˆË‚jKø ôª¯ÂœË 󫽦NCŸT^.öTŽ;Ue«öt¨=�ÑÞêóþ…_¢cV›þ '¹dA3å(WÛ‡ÚõU¯©²TÚgªúVšêUÛT|ÃyÏJ®�¶ù+ÏŠÞùY°\)ÎWæ|õIœ¯qÒ½gD µ«ÕŸøL›Ó•âtý`NןÄéz§uÔÙÇ©‚ÚåôG>Óæt œò›˜�ôoûä�hhšŒà?ëdrjÿ+°ßñtzb ŸI‰\ô]XóËu]¦oJÆaÉ�…B‚¡¼ª)YÃã2©«/�¬ï˜;˜ô‘¼q›ãù¢k}?gw1?fܲD¨ º6ŸniõÅÀ°‡)ÕàùàéW–uÍpìÞ‹I%�}ßÇ'ÆØp/M�p0ô ³$¾kK¡ë'Gm XàÛŽÙÅw]5/…¹"÷¡ 8ªe‚ ߬ßlÇjÌyü°œ¥1GT&Þ’’:€©·éJOa>UuHU²Í qïØ9›G‰oÀéÀiuttbðÊÈp V(Õ·]R»]ù 4 ±h¬HDº4› øîP{è›q7÷ZH±y;wÝoÚ.Ô= ØŠSÄ…¼½ëàÐÀZqm�;VÅQ°Êʾè'^¿Õ7…IÇêúôn)'Q×Í`×¢Ì0ø›ÑŒ¬qʸ &k;‡µÆz×Ýš=£ÚŒ(.hï\Õ5ðê¦b 6úµØƒmW¯¢¶íUlßzªoꄪïñ¤�÷º£#®Ó>Fk¿îØøô´‚b S^sòÙÕ³`¡Þ‹éuÊùca¹xöL=�fiþ*¼}Õ#>¶ð¹ð©ŠU¼Â^n´—« ª=ü–Õ:f�›>MŽÔ…½�_$bÇ�tseu}Þ_p[kÒ.N&—û £�z×0äA‡c¹Ï8:86‰û~RÛk#í>ÁF:[vLe��4„Ùc&M)iSië¾n†Žàô "±åaÙB=º÷ùúá¤AM<O­£Ö€3ÕÖø¾a�»qBt•ê|¥2z®R¨S{C{RŒw`ÜéÉ{¢LÑ6›¦ ?‡«2rpÙH,a‡¼8€Ô£n•&e°ó‘©J´éÐzzd�P—™n•­¯¥FÎퟱúTµÎDRô '[º¹Õ×ÙÒm­vO«nw:¨ÛÛݲ:ívÑŠޏDÛµ£\2Bqqb.ùu Í¶§­'&TcO‚5¼a£‡Ÿ¨ÚE/€óngDˬ�6Ä«ê.p�ÌMäM‰Ô‡·g\°¨1ò¶æ¡sÏrƦq¤ÄÁ&-ù¦€¢jâÓ}ì�«´Ûq>ôq`8®cˆNd“/µšê1pˆÎÈH: [ȘÊ«À“.oü¾w)ó(Õäg±è…íôÃÞÀönïÌËim�4èµÑUR4. =Ê´Ï ºÛ^Àiá:^™ìø1Kp˾ãÒßÕLÈÔÛA¯œXp„_ÀÊXmüurÛYÞ“z…a5Ö€¾´símtCþ™ú”'�‡ÌÏþÊ~w¬¾�cŸÔºùÔö÷Ù=ç~v÷W]3–å5#wqÍxÏe„ ½nÍ;¾5ÏŒXµàýwöêÊÉÚò]£~6�Žs¼K/{»òo¹3€Ñ°¦u›šßòôŽD8/~æd›‰!7Ce�_­a=»Š?«¦ÖaÍýÏÚ·ìÚ?ví»ö�]ûÇ®ýc×þ±kÿصçõ :S�ªó7ªÎ{ Öeõ¬ê�@d½z^õà$y×»XÍinnÉ’Õ]P\°¿‚�Ó]¦Ä>:·<˜h.ÛÇ"…°  Þßþ PKÒV1]›;êl}Î^aimunify-security/assets/ui-app/assets/static/shared-dependencies/slide-toggle.min.0bb5fd380b32.jsUT ëÆ«jëÆ«jux 臽ÅÏ»žzpé×Ú?ì`šøvô‹FXCÙïIÍãüÀ· 4ÇQøãè;ðæ6ñ æ¸w¿ØýþS~ ÀpäÙ~…vB9€¥0Îç0rƒôI8”†Ž�¥–ĸ“Èsˆ6¼·£Aò�‹l£ù(Dš¡9z@ Z 1ºE4F˜$Q°Œ1.bë:�’Œp÷,ø³�«ðÈ�!X烹ßðyðóôätîQÈa„»'^D'ÝÓë³`‘øû%!üâ8œ/ÂæÀõw?œ޽ˆae” ½?ƒ…âL8ÝK�€¦OpçˆÀòÆ áh)_ï‚BÙ¾Àv<ó|®?O/B7ññ åWd¿Ÿ»ý~tþûéíÑññéåå—o(NGÏNŽ®¾|»Dшò��»qøø ÿ•ÀzÜï¶ï¹6 £"J@�>Ÿ]]�}ù|{ñåä÷óÓÛ«}=-‚…£+Ì›{�^pe�Ï?¢™9ý0BsùóÄ‹í±�¿y‹…�ÑCiØE È|£69fªÁWŽÆ|ŒÏSI㘂á�aèc;ø… ‘§"ØðOGlãRä«„±{a¥ ÆÒu'�ûѵ?xÄ™i7Cy·s§cDŒeÿ'üÓOºÛý¿¤7x{ÀÿÅ>žƒ>\;"zi®w¯¡þÀ@E°Àžãxa;øòûozùfGiñýpìÕ€é¤-l2�ý�ÓÀm&²'‰ÔÙO‰6Ñ cÅ%÷’û/0ìÇÖ5ШÛKÐHЦ/¿ýJurúéè÷ó«Û/_©ª]j(À¢kà@Ìt›$œN}lºxb'>1Ã…p@ËEÞ€{XZ†DCÛU~²tcô«¾t¹.]±ù è ¶ÞôÑ ¦œgp½2V†�Δ|­)£fÙ|Òé#xS/˜ZŽ®Sb€gÜyÖ›ÞÊ:¾Ç�c®:QB™âŠBf^Ü�ôô�ýr¨EbwDV+ʇM.éª9ÓÜkhèØú˜tNG½!—é·Q Ïô¹þ 3REB‚Ì­Øpi`¦°RC2vÒÁ�nÜù¶œÞH8Pvî9;�_Åy ¿ÝÂØŠ"k)ãà �I±ÈõS$HeÎ2Œ€ÿîÜŽî>…ó^:§%÷±LLŽ3j)PJNŽdL{Ô—ŸeLÿñ7ê¹ÏÏ|Nx%øÌ]™ ö�Ui_!&‰ˆd,ãœM¶”Iè$ñEx:"uë9üŽÐñxd È0à*0£_—«tð*L@l^:œn(yQ´r€úšQ�ø>ÿéÛcì c�ÔH³'ë4~ˆØ}NoçÀÓ1pÏã§Ü�L¦’_àˆš²ÇGHNŸ ã"NŒvã3ð/®ñüÜhhÈå%ÂÈÈæwžŸ5Ûq@ÃÓ·A.ŽÒe¤}.üÖF£QŒÄÖŽŠ;;‚M�V[þüóéê�òªì®¼üðœF0=¢’:°!r[«KåÊïvwÎÿêecDozF7NƱqë:ÝZí?�CÈ?(“ÞfÙsöóƒžÃN·³×ÒN PAø›{1† 0ý{¬]2Ãw[Ëâ~YÃôÖ&i°ÿƒé—àƒm„Oj¡Ä$\ˆkpŸÙ«‡È#ÜY§6›ªñ¼’yìa™ag¦’’ËÈAIÛÁÔAÈt‚Ép‰ÀáJ½~õ\½õ2Ãù_%‹Öó÷ŒÕ-†\“ßa©§^^V>of]:UHÒ‰0,$�§0ÍXŰPÏá¸yІ˜9Ê'FÅ�î÷4CüÄ+¬T�Áõ¢QqX«à4aÖ—äi�­ÄÜgl-©#²4ú¯†<×ÒqÀHnhBq[Ì(>Ú1P:‘™ÀEš œ°Lê-ƒ!VECV¡¥±0B,­›»N1µÓ¤—a[uVvÎ?kb·W· „â{Ôê–•ÈÂMÁ(Ón5|~Ö·4ÔªáÑ`vÌ€PÑÖŒó|©%óêá”û:ˆÅÔ2ä/¹R0Nó›%H]na¿ŽrÚüñ©” UýƒbÌ*Ž} !Ý*ìD ‘1§ƒ\/ŒRäJ'Àk[¸{šy{Ô v?åbÇ:h·Pd37]žâ1È´âÖ5H?<š~hë�?®ðÑ;Cé�ùBéÓŽ�ðŽ(†8H¿®Ô?ÚÍ º÷ðÃ? N¶´ªð&:«@‹dRhýA57ø‰Öõ`ãxX„û‹Â€°À¹Ì )ÞôCÛåH J\RRcÚ8ñ¢˜ÀÊÑ,Œ™h�ý¾ÚÐÁoR ï�êYý>»þâ‡D .­h (¨)¸¬åu2¸¥ò¾ØŠÍET± ½8Ä�A•û"\°ñæ8)ºÚ™‰dŠr'+£4�$õà°)hÚh3iNK½ÃWLpAßÒˆ*SK“Wró-–ôÿ ÑŠ¦Ð|è@.òpK“Wsðã"ŒÈl(å?E`#ëâÑW^&G±ˆCúõÙMY„µ1 S‘V_¦¶ð„\ìø 0{èž*Îà±€C­„ê•õ('ö]`ìZ‹Bº>Ù­A5/øÃÕ†Ä$y{eKF9éi�2 aЉþ*L¿½%‘Í¡Jãèw÷ÑÛólÚ�×br2ɸô:ý½ÿÞ¿7³þáýà�ÏiÛׄˆ’O…2StÂÁ›;ƒ²…Ù3h'23¦JGÓ§µW‰ŸØÅ\G?KPºÅTŽöáÔíÆ=A¶®éÉ™ÛPû†~ . ýP\Ö5*õ·àí¶íÒwÁ»: ïÀû (È-Ôû=t‡PÚ<î57\×´�aׄ™õûìY–âaV½ÓÐgOm¾ŸÕ}Ë4J¯6»K bž“ðŽf9ñˆð\Ià`}` ë#pÁû›&ÔªÓÀ„‚†ú{<¡ÏžF#RìtU2÷Þ¦t*B)Ñá†hš^•�]óy“"  \*ýÊø^Îíhê¦�'Äê Å/ØÌ±ì„„Ã…íÒ2ƒì/ÓÓ†ä¬VouM›Yño:JBH9šN*ðÁXÙ}a½Ò"`Yeé˜P>X`“Þ"öâa:Â>|˜Áf™ì¡¤ÅçWñ¦ŽV±Š…×q.6Àì׋¨B´,­ €z_úñ:D×)]UªLææ“ŒƒåŸIL¼É“éð’È*Ü]3¹°-MЧœW]¤¨,]¹ JÁ²\È®®=ŽC¼Îp̶یl×Kbð¬.B�ºÓÆWÌì}Ɇã‘' j?Ý4•øMc ¡Ú )1Ö¼ëÍ㎓Œ=ØÿáAŽÓëî£NþïP§o ÇP¢M£0 \“ÅM´„ÁWÊ#õRáà2”||½üÚI¢ˆˆÅU.“þcÆ³È îRu¥N*!FFZí½{�¤vQë’òްÏÚŒyvÜ*°dH[ NE#Uµ=ùy¢^–ÝI…›áƒç’™ÕïõþS1ß²xâ†T·Ø3Ê¥�fñØ}òÜN4ÛP °ÿŒå‡ Rï•�€‘¡´-MÎ03KÊÖPº©ŠâæXÿÇ»žÝ�¤L¢ÕLG¾,´(¶:6kË)4v’aþøsÕ ´eÎØ%µáÎÛ0�ªŒ …æóhýñ?zÏPÒâ nB*µ¸Ãzb&•ªQöT*Ò ©¥³ Ü•Ip ¹ÙY6¯¤¶…PÛ¬´a¡­Bm'䤒_J�äÛ³±¹l®kùÚ2o›ª(Q5T¨TÁ€·Ú9Τp¹$²Ží�Í/ÕÞÉ¢h–;òƒæ )H饔­Žó6ðÙzZªšœžÆ#K›Ì“xå&€J(HýK7áŽb›·KµQ-·H‚«}»¼÷š, Ní‚YÅFÊ™P;SAùPÕÒº~˜ìÑ Mø·Œ£› {}$å­÷e�ð¡’žƒ¸j¥)K&ÕºT¸ŒF1©ØÔç:wÀüÞêÏ´u¸ ä„­Êó:*²uÙ¡èÁ—ëQ¼¡³Þ¥o.3®Ñõ+hÒuE¾@ðôm;z9&ZØÝblèon,HûKNVŒN¦æ+±Ôª•´½shƒþ¥ÝC›æõæÑîU]DcÃìßç$Ú<-Ø"�þ{Ål¼Š«h÷0d qîæ.¶`KùLº¶-=43†uÅm°ždá½£šg¯í»mâÍȵ~á©j‹~gñ�Á6O<8…ú~êF]ýÍÉs︖‰u­ûÍ sç²–°Ê*7'&µ¼–\ƒ–l÷ühÝš^olùÄá54g3^Vy6£½»þlFo7jAKÕT¬#¦rfkü¹W%^ç¹�|íÇ792Šï¨9þ­Å$ ˆ9±çžŸzøòv ÐdŸáPhcÈæ°÷<ÖÏà‘ÍggZ²ï1苀맱�P˜J¿/(F´†y9hÁçCÛ©i\Tˆ¬ü�ØØ�»!ÌßyÀ­½0g0Û§Dg¢øn¤ü¢W»#õß»£†M¬ÉÁØ»f¥—õÒ×ÖÖ}Ør ~]y ι;Ãó¤¯"?YõZîÿò—¯7MîÅÓô-›õXš »â³Húª�"!oñ‚¹š µx%T+æúƒí¨¨�[H=v&Ô&%9·øœz=SëéVô¶fu5§“4¾?¾1žÊk³Û ‘ÌÐgA»Ì¯¼g¼3&ù ËֈʃìЍRü6:©J(ÿ9‹·­þ~ƒpþ$dk€ògéÑ‘ž8¨¬xN™†. qÖéåù¬ßNÿùûÙ·Ó“ì€ãÜ­±êŒÖ+Õ­WéhÑrÍYWòô$qB:Nä ôü«ÊJSLÄq78=E81tòü|+×Ugòµ=QïjÍ™Q(w:�¦±ÃUæô€�(ô?³ûµô̘¶óZÏ èYÕ˜Ãor\Ð�öÇ)5§r²µ†®änŸ¯ÛãÊyfçÊ3½æ¡«Üy>·Øžó•js½àOåd~�XéKõÑ}•…qZ:—Ë»Üxy—»,ïrËåysz¬¨Â9;²}Šà¯z/å )›+ÃþÇÿPKÒV1]m¡ç•ÛYimunify-security/assets/ui-app/assets/static/shared-dependencies/bidi.min.bbba85baa284.jsUT ëÆ«jëÆ«jux 臵UÛnã6}ïW8DaP£ì.PlaCp³IŠØMŠmÚ×5hq,³‘I—'®©ß¡$ËÊÆ(Ї¾ˆÔ çÂ9g†¿î¬ƒuj �¸1tJ~äªð%7¹6@Xÿ½ÖŠÌ]z•;©uÉžx ëŒÌo¹HL1ÃìØ€óFí-8ôlGÓ¾™Ì\z«þ‚Zð A1@‘¬ELáöf Êݬe4f&sì`À%àÏý&šò²“ãæZšèq[ë½ÛøÆªYïŠOZø*ÖOÄb¨ëû«ß>ÝÜ=T3Ï�{£îH²Ïµ²n 3GÉõíçùá0a ž’’\<ž iÎ…Î ÛoŒÞJâV�ˆÑÚ¶ä¹Óf×wÙTfÔ&U•$ã&Dž]üI¹ ùã"ˆmXA�OaɃú[‡� V_oÂN†ô»éù|F/E¹—†/Âϰ0áîQëðY¯Šð°âÌìZ"¹XY³Õ™sxU!ˆ=2­U!½ÈZYC׬ZGQ\j?ú¹&]­d1}{ÊcDº2ý69à`·Mø˜�AŸÖø._¨Å‚PPýS%ƒDÜÞó£‡@öHéT1þ£Ÿ�¿_H5íå!JxLðùY¦ÍŽZ•S½]Ço m`_¤ÆM Br´¢ŠÏõÍ0Ók��có9_Z�ŸÛ=æ¨2ÔbJIeµŽñSÞÇø­$ôyX^h“i“ûCi�CZŸ�àÉIÒ7'é}GeL˜¤¾Z§Écè+Æa´KïG¶[1Á–úe U°”÷åB´M”t÷äŽdÚ‡tDùÛ¿¢B¹Z•°HÓ†ë¶Á½¨wqpÊH°HjxªðbÌ×m¦ÆœžzI/ºYÒiÝp�›ÚÌ�:G×Ãa×È£Îp)N˧I¦=ÉlÄ]aÕÃd%]®�Oî¬kqhËaÐÞ:놕-¬d&éK‡xÚEÆÃ^"Cg–c.¶a:Xj2{ ¾H³,sé®”uˆÀmž}ÿse p­óÁ“`Yijkð*(=Ì<:­0˜¿J7ó…ZaE"ÔÜ–ÎT�¦øèñ°ØÇjó ’ùcùË.á]ë—Iµ8¬Ñ”¸(“¶È�}Ÿxp¯oó,Å2�ÓP‘�éWÒÁ¹Ü Eg”/ðÓ Îë'P%B4”óJåÒûÙªRÖ¹Rõ¦)®´ÿ$vC;;ŠÛ-¤±�¿3Ý{xýz˜“ä°ƒ#j߆¿ËB¥I!ÓÒà"Æm6›=´�ºlp——ì°ÿÞÝv˜f2ñÍ ,¡� úÔ¶Ëmxu—4;1\IOi»ÝÙº^¢ÁaóñM·¸Ƨ0ø2ñÊé˜çóÉè)¯Ûp€(*Zz4¬¿æ‚qšrºª4#5�tò³×¦ä椮9 ]³-bg×Л(Ý0Žãv‡"aURf¸!ˆ>ÙW[Œ.® £bG"iJÎX6;äuŸÌöjŠ»»ãÇ •]-t~J}oÃ'F«¤cļӽœè~¤_ªÛùMû·�=C^›å½ù6Ȩºíô(à‰Ô|Ô‡C8��ÅH£<TåoCRÁn�‰Ë{:S)��ñâ ÞÑßh[Í®(¾ßÎoîù¨A^{”¨U·ŽßåõÇÏŸ2©âÃW§‡@Mìv’6ú¶¦pö5vý¡ûîþ÷ã“Ç*´/`")hÝÁ6’ã@Ñ4Ð)¤w& œµÔ4X°hÞ¸tú¢AŠž¿ûPKÒV1]—¨;u×]imunify-security/assets/ui-app/assets/static/shared-dependencies/coercion.min.013a86266a88.jsUT ëÆ«jëÆ«jux è‡m�KkÃ0„ïýŽ(F¢ÆéÙF¤Úc-ô’†F5ëT Kf%…£ÿ^Å�4”œ$�v†Ùïýh49ÂNÆ Ò5yzç•ÀyeÈ&£µ×•“FSdñëPVŽ”{� ”Σî,¸è·Åúr8æ/ Ðî ê°Éà•wPœ‡X7]“Þ1¤Í¤]Š%mZxUF¸øÅÒt”—¾ùŽU£�v_Qì…¡<:« `�ˆâX\–¢“þ#—¶?£¾Àb�›0ÚžŒQ ô M è®h¯ÔŒcš’Z( dÆ··†íñlíJ@ }.dMOfΑ Y„ŒøÈ‰©ÞÎݱS'kõ±íá<’¼Ö ©­º:ya�¹NîÏœ"RW¶Ë€ßÿmxÂr¦\Àä~ïKþ'­óO{7g]eb‰Dóõ¦W�œ&Ùñ+är¹m•tXY¤Ã8&q7™adœÇ e%¤©Î[o¢)„©vñ+o~PKÒV1]ˆi²†W±[Zimunify-security/assets/ui-app/assets/static/shared-dependencies/radio.min.3fc7f593c694.jsUT ëÆ«jëÆ«jux è‡åÄwIJ¡®éóI‘ϋѡü÷W‚o.IÂóAç0š½¦0m™Í“ÚäQøó 8¦Hiÿ%✓ñ%Oa}¦wÑœ6ø’TÂÃ~¢9%äÓôc^"�Ç8˜‘[’ÌGø”ÌçF¾l>óÇÇqˆoQœÅÐúÑϘèùl(ãm|\†hXi˜Á¦$øm’DØ�?§É§ù*Tϧb6Æ©ì0Ç�ª^°ýOÇ÷ÏŽO>�>žþúáhtöÏÏG&ØÀ>½}ÝÿðëÑhÿààèË—“Sd>d+ ¸[^ |‹ §Àœ¶-À5:Ý?<>½ÛÿõÃÙèä3ÅþeônÿàìäôŸ:u(qÞ™Ï-B”uϳ.Î;×ÃÞ ˆü,ë\-dZy’Úg‘_’¬›%ÈÏÞ®ý¨ÀC²\Rü q?$ W ]IdwCƒº÷§'¿~œ|:;=ùPaÝB‹yš\“{cvst ΀ÄS�ضí ¹w4+¢œx;½¥ƒnf¶PŒo:iIÏû4)æ <®’’–î¦t â‰ÈÜd.l_Çž•&In¡‰Otç�.g ¤s K"Ì|L’z–`AÖrÉÅ{°˜‚¸c†d‡ItDÛ–™ìÄBì¬YJ}TÌC01ÆÝÛ"Ï“øôf¶³¤“FþGŸ“ŒÕ0f7:\á3š‡ÖO¨¯‡ø�|¦&à`,AÔÌO¯IÙ»$=¸ÄÁ• ˆ)I•ÖÈàÝ 1{ÝE/â4%W)n…úžÀ>fŠÁñeCA#¶˜Üz1Έ˘ûYáë«v MHÚ6þ‚Á�ŽS3 &]¼#~bXÑäNQl�ö¦[Ä%!`©9•…„U¢yñÂ|§�mq¡.*6’ôȇù)' Üe Ãèd'L)5utž6ïÃcf‡ëáŽ��æN*Nƒë¬co“ÞÜ,O´Šé‹4î”?!ÜêÆ˜²c323L>ô_Eoï§×�v õ,Qø_X?<8v.ùÏPfÿ< ‡Þ!Ô Ì<0pX™ ƒùcUNØ‹ün޽ÄÒÉÌ“ùû9˜’gÑŸ2œ¨g¯âÎb¿,$õdz䓅¤ÐYHºZHÇÄ“µD «o(-ŒI †§¤Ë¥Ã2Õ‘‘¾õ3@x ³ÕÃahû6ËÒ�è™�Y€È`…iÖÇ3º›¾‡f�C–Û 3«ÆFÑÌB£ÁÒq$¸¢lUš6ADJªø¨5te*UšÅ›*ˆ2~Úáíl<ëPŸU’×4/óþŠZnÖ`s?^ÒnœädrLJá-¨¶8›ØÅó¦—ºÏÖù·…£c’x0^«Ð¥»u�·JB´Ãq¶ÍÝÖ.T^d-›'ýx£Dòá¡MpUzÖ¤žš³´©l–cn ‡mÒQ†“ù®šáÒÆ °ép#Q/¦'×8MáAšAµ]ŽReb¦ÈÐ"RDó]F!s¶Ç¥Pþýß aBs“ß |.]ûïe¥œGi¹å,²bŽS›4[Ý0Í“$(²� $Иë9HiÑCò«,dR¦'çÖngw÷ †&`=ÖK =Í®)ž%×øW6OÚ@±?ÐÈ©zŠ]® ŠÉq’Ì÷ÕÎßÐúd¼ÓZØG±´ì\lJ ;F=P^&,¾qBÞÔå×e/_‰/¼[¥#Z`u°ãÕÛÁ3Ò�+ß‘UÕò©Õ)MÆõÚ¡Õ㵺8MäÛùºÒË׿Ö]ÿêµk'놆Ê�&ÃÒ/ ‹H¢)–*—;}Q£&¦yÆ/÷™äXýEwB�â« Ø`4ÝÿmW3 ´ÓsôŒ&ò;xƒ`,K¤¶úÊÀžåÉ\<“xZ#b#ÁÛíBs-P­HÆ÷e›ãJ¨ïù g¦Ç(‰Ù–õAD`…À3bÆÝ“õ§>�™ èêãÔ/wÎ'v4Ú1UwÇ@XtÍ a$XU˜ú%‹ñšðªþ§Á~VV#vIŠƒê:Ó€²à‘(SÎü≒''±Q€È�Œ 3kݬ‡ØkMF*¶]Y¤ÊñÒæÚÖ‹mn“è¡èpmkCb~Sv oñÆpïžÛ÷ŒDT�?Oñ5IŠL’S¡Æ�ÕSX*Š:WÇ#¶(�ÇBdײÔŒeH ·j�hq$}!á;¾ym?©ô»A×à ÿ§Àé]y"ÁãÞÄî¿ iÌ¢ í)zí ½ô@– Æ€û�€[Jqv ÑìŒ?ä“°-'bJ—’‘4Ë�/U—¨IhV¤~Jü4çõÎ-úì²ØB–ê°.J P�ñ�ÉZtpÞÀÇ€+fÞ\–Mb”ij +{¨VÅ«+è ëcdTè+ªe4Á>8fœyç¦ð�cˆµ$?¤êÀp¿ã€ÕúšoÅñûFÊ÷ªP>X¬Ñ[©"@¨v"cÝì¨é84A!V~–Mî�ÂÆ •Mµý^lM$ôdö¼º¿l]À"ò�Yª�d§›JÛŒBtg§èýsZßJ£Û{Kt™dÌÅñzzκ9õ¨�G³00¹Bøvž¤ù>63ÎÕ.Zµä³(2¡öù]yºwkœîÝ//À½m¥cæéº—Úõ^i×MõS?v—%Oµyë­¶÷ë¶ÚnÑÏUÞê»qGz¶õÎÝš!Q÷�–®ƒu+™_™^¯z¹žÕã:a=Mq¯yK2˜Í-U]S–ú¾ÍRù™5UÍjš/¡ÐW`ú¯Ùó[ ”6«»£ŽdÎl±\ÈÒî…(5"åPó4O2ø¥Ðhh#Pæ8zÞÀ6ßl#´ÕšD ÓÛ�0Å7ð*ÞŠšÍ£ùiù<…¢8¥!M>AîDøž†ÃAľ’5€?¥×sدZg¹**0™YȈa�•¹Këvþ(P¥ˆ�R �Qi¨˜É_-¤>K>A@lð‚o¥šl,Q<gx_”žNPˆƒTí%D~ªr?!æÄ¨S 9°‹I‚£�ž[ôõ{CmPLZòÝ� +Ýœåýz‰¬€&ÿl.j62 ðX G�F\/]Qˆ°�TåÊLEK:´\C&tz~á¤Næh4öƒ+iâ°Þé NÝ€¤A„ë½$Ž�^næb -Ð8ëª]J„™—Kí9ðsz\ñ’õq8KÉtJ�y˦ÒEÕv€i™„CMØ�+*kK'bNƼ‚¢²dIX(ЋJÝSŽgô*nI«+ÎB«¸ºfWMVó>·{tµ®-ÔC}ÇÞ/{ŽýR<¾¬Ž.=×ó†[éÊ«J꽉9ŠÃÕt¾BRi^Ñ„¨•&q㨕¨†röñDý(„ôc ”ý“øÉ±�µ ·)²¿‹ þÞ†¬/ײß[…c5–>h Ð¾~¿ Yê•Ýß[�C䬪ì5@S<;‰l÷�A{<1\œëB™:�]HèÀŒÔ%$bžmT‰òÃkŸâ©Q[ÁÃMÒ-)w~6�r.îªÌwæÛj U�¸lÍau\Q#¡ ö¼z%|»Ô–Õ!›@fÀ']U�6Å}­›µ4æH«UÛÄS3ÒR ë'¼rÜ»¬œóú —çñ >�KEþ #^Ç %3½%eBÖØò¼2ìSÌÙYÁÅ+Øö+X‡ŽÛyõóüÖéüÐÙsE[/Ã×ÖÉ—–6Hu Ïiü‰§ÕÅ| mrƒÒ�ðL‡í<»§G]¨lï�ÛMÓ9ƒo™aÑäc¸–Pì0%ì¤Ó±JËþ«º¬™Þ6�f¢:̤öÚ° öD«Û…Ô¡?ÊJãZþc†Câw ncwü8ìØ0IÂcª�yŸíÎ8‹?“¬uëóüøÚÏÎðm¾|>…ð¹™…W%Ø¢"üœ÷Ùøˆ¬ðé‚Û:ú ì?S㤻ØPvüÿ«ºýY¤ÅŠ}¹æÎ÷Ѹ'‘°¡áVƒÛ·2Ýÿxq®UÌ–4a½,µQUaÇOrRk¼ÕÞ×óÒ¶Z‘•ÌÅE™-tøåþì¾õäý¼‘þ rö.i™÷ý5„‘ñm(ÿF²Þžâï/åg¦öIv+-`�C]…ñøQÃ÷—ô<ÅYöGñò�ÖáQgðÉD†jd‘ðœ¬W™1™œ�µ�fk¾EMÀæO¼wù”æiëH¾¤?7—çã�ñèê~xÁg!LÜ?ËÞÙO?Ìsõ rwzxáEã°�û0Š?ßÒ¥†/½G�÷ðz�®Ï/÷Þûð›Q|7¼ˆF·=åð’!اñÖ‰’�(œ¬ ­VY AÊ©ïu½æ…ï$<:i5í'¹0ÆYmCti,Žm ×ök†ÁQ�§0eŽu J?ZÚg ¼*g�ûŸ…–d¬ú¸ÈŒ_çˆ ûÚ„ä¾ïôÚ2bWdádúÜ1våñÉ3H¸=) FñïÀßFyž×�|ÎL˹ËņÖõ#âü÷vëÔqóÃ쯶¹�º‚Ï‹ Á"ó"®Ãƒ«�nM­L§¨õÄÖ ØIÄ÷­×]­×lWU¬ Õ]%ì¬L×�±ã–�WÄ®kU¶K'=`SÝiåùs@–zUµã·3·¥)Ár°ô?9ÇÅÉiß…½>žœxÙŒ­T–:½£�…S¯®•}n ÚLŸLwŸ’G"Yl»p|L€J³`–ª¶oXs©b/Æ�ËW^›í>$�­ŠÛíâIŠe–¸Ü0Éݤmi”ªl»îD^B°®8‰ 3R_ÕôSX‡�•m°ª‹¦hx^­åØ�¯25®mí莛Bq]£3¡eÀ�VÔ0`tInˆv˜Óô¦Nx4Š­ÇïW—Ÿ‹üS‚Á]u¤¯ �Ìý%»øQ�Üi™‚rÃø©€ÐEà’UÉœ–Bøj0€}DßbSd0(°4ý^†êø˜©Ð¼?ëõJO?o­M½ ¿ïõÞ#3^ Ù—�‚ŠŸ:¨{Šóf Õ¯Ú Z+Ý>÷ÿÜ ÕŠyÜTA–¬7fÛ¼™HÚY,TØÕaoGJ¿11x~&Ædup½‡rš˜žÖDa1±ˆáósL¬f^ǹ¶Õ/ò� 3 ÍŽckTƒ b>«¥7 +J¼-õ¸aâ«}rñÇõùÕpеWødÄ;Ù1û÷Ø2Þ«xÚÉÝe“jA”í¸;:�6;ñ…(—0÷ôGÿÌ?=s‰†ôvÝÆ¿�Ñýà|ð)Ú#l ¦uüV ýÛKÍ[ÓP0eAë…$¼Ù" i™ÿ†>Á¬Na` \–y†-ô1åX€‘es7Žéá§OàŒë4Î&ÊyÆ‘ �™*eêdÒ9<Çw½ªÖgM©Ö‘þB˜øQ’H 0>‘ÓûZ°V9*_kyO`êÍ{Ë‘ÿÂxASq*#L›`ÒÄ7 *Çýˆ=M7mØM±Û�ÊÖ »çîà ã˜VTEc¤ÿÍ¿PKÒV1]…®ÕùS_imunify-security/assets/ui-app/assets/static/shared-dependencies/text-field.min.78b6cd7a8ef8.jsUT ëÆ«jëÆ«jux 臭YëoÛ8ÿ~E,éŽq“Ž`Cí¥y` lÚ Éî=zAV‘Æ6[‰Ô‘T✭ÿý†"©—%7Åv?låáp8œù̓“›g© › XRüþ'ïï[i$^ÅÉ—Wy©™GZt. óùb"¦œ!]¬?KûÏ+žƒˆ²»?Ë�óŽø‹‚Å wùl¼BÂ�T‚ÆÊ›?Fâ@J$a„A"’’‰IB ’ͨB°�…ËÙ§¶”¡ÂQJÿב”ô~ÒWc >äšKBIÚ›d¦ïØgˆUô�a(å☺Ȩ>WÏ©ÀU”†ß •JT£´Þ]}˜µ÷Ë+žiï(Ž’+cÁE ž@DMy_d ®…¶šz&Q½ð–ó"æVºS­ëÕõí¿È ¿nЇJ�¿‚gÕ-º\ŠŠ„ª[š)𗊾ÀÏLѴ˘áÒù‡³Ÿ¯.Þß–wÖ f5K°‰Ñœêà>Tþ&7¶žMŽË`§øë`iÖE#| ݳ¢rzïP…f7¶ü7g*ûáAq $ÖF2dðtpå¥]ÑÚÑ…?銛RùVð' "09HçFCr܂ޑ?]‚òU0G™Ôí¥Silie%Vˆ ¤`­ŽÒä(*_Ð4…ÄÓÞ _oÆ8ޤЄò&¡v£Y¤íø>Ê`»UÓÊh«èu¦"ʤς7£¢€%^¸#èðpDÐá¡ß^�ñG@zÇSQ0ß÷ƒðµœ2<Óß ¾h›™Æˆþ TžÖ·�MNÊÿ›u$GIò[ÅWbKè}Q~’&pjò‰¼©®ÐîÂÝ÷j˳c"¹GÅzºŽ¸F‰ >cМJ ²±`™IR°´Ò`fõ2¦~�jeYJÅó+s eK�ôoÄ0zšN�>îp@F8dy ü®,^bˆoÙgøG”M RD¡›Ùò;ÌüÙwbwøE¯ÐÛ:‘„¯+¾ž­”F TÑØÈùOqüÃ_ÿ¼ˆâ°�×,¬0œ} ¼eà;FóZer´áµÍ+è•!‰)^CÏ84ü1ìîK`A4eÀAœ, jˆWxž-�‰€(OÞ±™'8W^‰ç µ] Ø{{déòíb,ß‚1âGXÔ7êJq©]éäWéŽUÞy‡<µkz;§.%÷� 4ìd,è Ï¬ÃZò§€µÝ1‚€þ1}W÷Oûf¿/ú~O\…çü{ш'ûy—à @¶A ÔÍBà9Ç’J$^E» Û™OvK-Cá/ïîŽðªé�³MkiÖá+-BÎÚ{ë &ˆƒŒ²�X"ýÚ6Þ ¹”-¨ƒÑB]v-|��.WˆŒ²’­%²‘lYɆЗ­;’�éhIú’-¹’ìXP2„Q#ÍÒuÁÅ´èwˆ!o*‚‰Íâ-¿¤ê &zÜŸ3·†i50Š`£ʧ fðž2:ÿE" ™i‹µR°½µ¾~Œ ’ëfÉ\;|ä498&ðfX6Ê;UØ)?`7æ{-É«öΓ«G¶9kUúÜÚ�;j¡7zùEwè{rLÝæ©n›GíÏÄ„¯œýþ¡éèk©ùh”ZûNZU,d,Äw[ÔÁ¾²cª{Ìÿ ,áO>¦U Ïö‚iNsðÿä/)ü¾ƒN-ô]÷2œwêV³«ÝþÖ x÷/ó�bTJÓúvÃíxÔ°úƒ%}8'}�; JÚ{­~ 2ï’]rÓ2—Ýô؀߯ޢÃ�a“ó õ•�SÄß{ž€?9 æˆD�äNXç\RÝÁ„^ô yŠÉ۫ש¤4¥ê9ôV4I€5k\`ê=†ÒjŽîÇþ)ôŽš ”Ðk(MòhëÈmÑìb‘ò§æü‘zˆ?˜Ò·œFyŽo׳M“¦P÷ §g)Å-æ'žg_ÃÈpópŸA$ 7±ài:œýúš}´»°XRö–+ųí/íÞ^uzº|÷ñâòÃ?‰ ©KŸ®ÆÒæñ®¨F:ZŽŒZè|1 XpÌ�_ãô映ý!ÍÂ_¿é«Ì׿vÞäv�¡GP²e‘£?¹‡6 FÆ(âåW›†Ö ¦�A¶[].&áÞNÈ…O-¢Õµ¸9�n–ü½RÂcwõ±|ŒÒæ{ÖFöµÔ!ûU°ýîG"Æœ ˜IÏùÙ â/{«ãh•+ˆ€ÝRÛ/¶åjY{ l'¼ö‹d²?+ºÁÆþ®J‡�õ�V\¤¹gI袲Û'Ò�¥_´”îér¯kXx©•N}¾ÜïáíQÖm=td2Œ/ë4¼‚™×aâaX`WÊþ[`-:uÓ¢Keðf�Új,îMxßò3tŒº¶¤�Ì0Eê¹/¾&_¶¡©ÿ#ÖM|¿;ï¾'íóic^4ç�N÷•†qÕ ÎFLðŒó¼¸ÿXxý,+u“vnùþ3Í5øÛ­û*Û=]—¹#gо‰ŠTé ¶Ý>UÊ»¹™ÝƼê‘t£§|3EjÂKf´ a>éwTÞ(Ž%2éW”ÃCÐO¿'âcÄ–àcx|ûìcý=gヲ]©vbö¾Œüí·ÍSÖÝyŠ–™«¸„uj‹¬�¯¬¸¬žÕ¸ÃÓYÉ'9!ÕÙ3Þ"°:Ëæ�"ÕØíä³TWÑ´îK©Æ«×úëW»é 1KR푳��+TÑ~´.6ôPa»ŒÊÙ÷Z�Ñ5£ýº#6÷ÆÓØuäl»Yg|PXç\¨S9"å®Líž°vª|ó­0ÎA’ñd$îr#y97”}Þ3µåÂߨ»è‹\êy·ê­ újþ»ÿPKÒV1]³ó&W2`Yimunify-security/assets/ui-app/assets/static/shared-dependencies/tree.min.72617c4ee9b2.jsUT ëÆ«jëÆ«jux 臽YÝoã6¿¿Â«‡@Â2^{�¢…}êÞÖ€qݤ·›ë=䌀–Æ6™Ò‘”?àè¿¡(Ê’¬dÓÍCbyf4œÏß�ô·ƒT°é X1|î­óÊWiDŇ ¼ÿ €C*´XÔ¾o(¾ÄhtÆÐ/1ˆ€ÅüœE(äHd‰ýöãCœ€ *Ò™w™ò\Èïè¤:R (g¸¥¢£'Œ" %!‰I@R‘5Y’„¬È–ìɆ\‘»¡• ~” ÐP9¸­*U>tGáý úx‡@¸„ÕicXaHW€ Ka©©ãÞÝ|�LǓ»ëßü:¹ÉŸ ­«ù�†!ã+ÖÉשŠ@‘øD%A]â&^­" é‰ú%Ó2Ru$Bá;fBGu«Ÿ?+ŒÕ"UúyÆ“TåŸ ®ý"�ðqo’˜×äßì&< ‰ÄLi Í_câ0 Êäë›ÂôÀêPH�Ö, ñùjÕfÕ�Þ°=ã7t1ã!ìÉÒRÆLÒE!I�ò…*4có6%+Èë~‰ã(ÿMè"Q‡ºØÅÆTÑoqŠ¢uÞy¿ÀšnY,¾¥‹<m ˆUCô ÉŠÞ¹Ó|šds{0ŽƒRÌ;X¸ªsã¯Ý¥«s5Ših”xÞÅ…«j1†î’ ©Ðãêü+›cîO*ÇgÞrxxÙ`Šk%5ý0@B"9è“-Ec{$/-éÖŠW°I"Z=çAo‰8˜}OÙ¹n�ô¼ WL@c^À´�‡9‘êéG§kCsÄá�‹‹(î³níÄV2—ì‡4b+~‰¥·‘ƒW1ÔôA¸‹Ex¹4,ÐûKýݨjîEŽ d�¸\ÄJÅ›Ë Õ÷±:AÕK�ÁÇzŸ:dj»sRvgðvG¬IÑc“׎¿ÉSpgî�ÓßO…D õÙfd¿Z¦¾Ë+Ÿ_6à‚ZeO^5à¬'›µÝ÷ru6¬v­ce‡­q¶—aE˜wY[’p§Þú²™eˆðG¶Ñ(�QKIB’†cf‡ì¼á‰8Å‚Årá�ÜÓó[(}$3g.A¹\Æb3-œ¶ó|Uì}e¾39Ù'”‡zSîóR&¿øÀ}–Ý-Ͳ:Ö§UÌ™ðÛWËÁcˆˆÍ»IŠ€+¼óÕ�ØPSYs4ÅŸ… |-ÿÄ7>™X˜TJ‹Â¬�è&,÷Êí{^W¦ àI \l¼Ÿ�í¯Z�2l»Ì–Eö¨ØÇA,&4X»..+=T¬;Ÿú¬+#€ë ©qZâɹ_©õeßïj0Ñê÷}ÔJõâY…#ÝbŠ)ÿvn!¥²0zs® Hm¼�£De�ÇÙVLXhÕ�®õrÔKXE9»íÍýw=R_$—H"Õ5õ†êï~­”t®Ôû÷žð1cìVÍuæŠÄC[âAYl(yߟûª”Ìo:t`ϲfœn‚‹V(�zknT�v›‚´î–F)˜û-rºKÑLŽJJ‹ml!—¼âv¤ÚŠÝZÚÌu Ê{V‹Ö£· 9#—óÛV0¦=z±Ü¢°Ü£×,²�]Wï#Ôuö.–GÁ…"ʭ̰NäzSd]ó¹§­äzK~BÒ� æ‘ÿžÐâ|¾ždù�uƒ\.l3Õ3=|‡ †Ýåž›ûx2Z«þÑ`Ÿ[éµEÇ{p�b]÷Žõ²4§ù§ ó¹ûûzð³W×ós³žÅ¾RÎç¾gøç ÿöPKÒV1]ä@sê©-žèZimunify-security/assets/ui-app/assets/static/shared-dependencies/forms.min.c5b9dc689dbc.jsUT ëÆ«jëÆ«jux è‡äZw;µ�´}®ëGK°Ì†"UòQ™ûÛw7@êpܾ/û!Ž̃Á\§£“¸¤ã~”áyðu’�gYR¾% ˆý=™9””÷¿Uò¿WÅ”– +Ê*¸ áõ,²´ÈC̓YE7*V¦CìÜ&å%)ÉII*R�„ddF†ä†ŒÈ”ŒwJÊfe>¯(ªî¹Ýí1Ââ½´¤Pt ­ôX|˜ÿF9ÀYñ‘æ$‡¢ë¢¼KÊÑ ½èã)V&Q ðã”fפÈý[š³ýIŠ}q€é ë¿+*ö1�rÐ @¯Š"£I>`0Ž«£¤€ÂÝàÝ£ Ú-JÙጉVŽÆo‹Ñ,£ºçä >@K!Y��¿Ì¶^ÿÇßNf9K't¿,‹Ø7 0| œ TZ½+‹IZQ± OgWÕ¨Âöƒ‹šØ,»1ØcÊöŽßú#Á°�ßiN¦ø]¸ c(�$Óú‚Ð{:„±wum4fIUm\χES„ŒÐhÎnÒ*¾,i>¢%-qæxÍ蘼êQQTä‚�=Öûj^«²³b6¼¡£^ai òc cmÍÇN½×Qœ'(.û¢€ z­¤üXu„õºf” ÑR4#e{i…¼�²„›¤`$A¢º¸t( ÄÜ\'ÞÍr¡9½ ÙããuR (þŽ” Á‚ÚɈ×Yº¯Eu -€ÑóÚ ×iNµÞ…sö0!¨]LÿdƒÞ3 aÅà¢yFÙ“z¾¡ËS5hpÈ< @vóZ¦ŒŽ²‡pEQ˜>>N€Œ°�©ëdB®i]S07.¼ìsÑR$ó@^ð¡£Äo\öX}{ùaðæýþå`wwÿôôø$ 0u)ÔŒ?$ÙŒ†CZU ÛQDn{óiYܦ#Ú½$`÷ïAÆÒ|ÜÍÃ¥ý`&³Œ¥ÝÎV½#ü <™ß!x«í¢²;ü¸ž¤ýy“ñ 'ãṓñ@*Ð\lfã îì¿}w|zxvx|tùÍûƒƒý“Ë·Ç{ûZƒv‹É´¨8eÜ]ã¼€IŸ²,�ç‚pvª(wÒý MkØP/uËóq¯³MòY–õz­››a{CÛ'òѱÞMõá_ Sû¾¢å` ä‡Q7¤Â½JòQY¤£�ð—ÑçÑ«˜ÑŠ¡0oŠ;Zî& avñŸ«ó¢}Ú“töƒ Ëvš†àáôv— g£Œòø;­ƒx|\0æŽÇ¤hsÓqƒÐfmc�#,a¤óo·°ýܸ]wÐÑèô©žôê¯ò¤+`?�ÿ|ž³½j7‹-F�ü{Óž¡­c (II“Õ¦Ó3”OkÐoÌ2¤k4d›]¨á%`™0vûŸn‘%YíÙUe”¹=Ñ$ƒé7²[¡6,@kÑäq!Á¾25h~ŠoØ}šoPm l=& ¢†W|ù8€/˜óâz e™<ÄiÅÿ,°#[=ˆ3š�Ù�irÏk²Óƒ9 òÙ䊖V‹ ܈”Ï=])÷t`´ýÁÙñÉ©¢¥#±t/µ/A§?í¶# ª‡|èb�ö^ýö{ñ|›¼þÛõ‹H~|ùEýutž¼ücðòï[/ÿ«ó//þuóß>ûüU¯ÿëå?æ�õÿ¾¼ø<ìw‰WÀDŸ}m .Ã|½¼˜o‘/·k«>ê{m®�}öâÕŽž�Ck(,ÁÒëp&OÌ$Ξ5A’Íioš”=ÈŠ„ihéí:iu”Al¹¹™þ7ëÏ'iÞå� r–d]‰P×]lÒ’°ã¿”˜¯�˜ä¾Ëÿ¬&æÎ"z–íö¡è÷Xí8G£Ü”ŽxŽÔG¨®ƒhpÞ¶vóøxªÂÙ¯hƒN’4s8r™f3¬³§?¾ü’ú$gG|úÞˆoÅ!ùé¢ÖþÐß¹T˜ŽÑFÛ˜rþ”N?b§ $¦Äâ·\é@L(ç¿i�úaÚC‡ókÐÁ ‚н°p è ÓÏ{PøŸ‘à… lÐËmù !6[qBÇû÷S²¨b®Š§¼×„¤J”Õd¶q®„E-Ò¨˜ÿ\Íü4ÁìUn8öN¤’eÜ$vóº¶dã7Ï¾šš³¦å5•ïíèsý)üéê$5 'Êyޛתž§šö“áMâØE =ôçqSXÝ¥à¶jÉñÆNñGúP…4’|–òj:úVäƒ4w&É4 AÒ0>ÿ§á¾±ÆÐÐt«Îo´ì´Æ².4fÊ€»Õ’fÍÅtZša2õLž uÆÒâÙOB1*ÛËþÞœ˜þ�!Ž*ò¤ÿ�?—&eLIœsï5æ¤;ž¦SŽÃ‡Þ7-ôþÑJï gEÀçô¢ë ýs”5çø×´ñwgv/Ëäθgõ]Êóäô{´ß ƒ@„EÁÏÎ(šqš³Ùˆ¢,wŒÐ’áÿ¸ŠÓ߇ÚOq:\­ù9„E+ñ4žÎª\�¾¤¦±B°-5á¨A'LD9VCøzZfï6Àú[ã?4K­ 0ÑVͱU£ì�U}×R}VŠE¬¹·@¸³êÞÚý¦¹°ýVý‘KW£þ�U/ͤUûѪE¡ÓÌðm£„±¶Mû�V ²–Ë“‚ºX×*[ñ““£ÐIl[X{çD{ÒiêŠ|œ@Y<ì&Yv• ?b] ‘ÿ÷f…ÁÁ‡béÔ·?„Sš(ñÒÑšxéÈà¥ùÚ˜ÔàN)_À­ƒ+A ®J¨¯ƒ¬` 6Í×F– .nÒTk¡rHk¼%ω­5= Ö1fuÖ.<¦Ö¥«1%¨ÁEáž­5Vi0gùúÕÀ~Ï"Óó$‚#×3ú„flxkæ0,®U¸¬(3ªiòX®6âW+­4#]}�÷~[°"Þ¸§üN¾ahëÆ…�¾Þ„‹ð#ca™l>µþø¨y“8m-Âõ©‘ \š-6iÑÌ8›FN{¼K°%ÅGzÜ€— Û^”…à—Ó’Âè-&h·d³RJd&RÉŒ�ꛤâ[¸¶ît–`:ÈÍúQuÀå*œúà ¡¿L˜éLb@~R~ˆ1�6ÿiŽsˆ <“rt}�üó½Ñþ—€­*˜êƒÚ}¸nOdå!’KÊñ 3¨•š X°Ã'_ˆ’<™PëóÖNïô4Gc�¤š€”¹;:ÑŒ;»ÜuUgž‰ê¨D÷¨¯Y®Œ¢Dyß°k­HÚ¢I´w¾éoÅRF_"í9¿ƒÛz þÁqÄ­à\Å%ø¡ç¹[¤ÏV£ðvû �D9�]ñóíýTªVm§Âäσs>�q>~©Ùxt‹ù°N7@ÈY €b«€PSá€p>ŠzÎu§’³@Tr;•’C¢ZòÔí]ðCv.>µ±[-iʫܽzú6GÉVîs0òúy;%s·$ï+´æõý-‘Òÿ�@cÛ_,Kï¿n¦÷9+qß+ l™ H[2ñZ§îÌ®™j¹À*%%¢n$d+¸xˆR9×XÊåB”¦¹U.Bö '_t >–dèWíÌj«wÊCŸ€”ÚöU‰XU+ÅŠ1²½õ<¹ªÚåêÛ²˜M=©Âr¾Àn—6Žâ�;eXÀw¥òñQqÀ?¬6t�-š_þM^£M´¨ÓöüÏ\9'S›5ë|ß% ü<<’|¼Û?Ú;<ú6 3øØ;<|óf/0ûCfä61‘zÑ‘mÕÅ̉›~ºav¼…84êÓØ kÛG,l¤¸67;~êgs3(x&ÓJ6›F¦L�U0ù^éJ«Lâ…´o'BsˆôT.4b7eq‡Ú¹‘…Û9ˆ8N~ž^¸•[[ÛXkúë~Y|)#ãÝ›4…!g‡HM‹à·×ë¥ç´ÑâkÞ"h»<È”ÂÅÅÓìîCì{|—KYs—H¢ª#yº¼Èw‹,'?åQ[äjߢ׸¬í'²\6¥ZÖɇ֯·\nx^z1/t«Ïf…¡OS,MºE°´Ô#�m¾O!å'Be£N˜×†VùúDyDµt’½�já¼:’\×íF;6á3i6Ħ€™x,Æó-TmY„s¾ß¹€Á‚{âXhÔ–ÐäÌšl'È:¬sûäCZq3"ˆ«>¦S5ƒü°0îà/ˆ©¼lg UVøÜg²·`K¸){XÆL‹—ƒ\¸·º³e›hÖv-6×w¶‘;�vµnåБå£Âø5nP¦Žÿ.PNWƒ|3ñXâ�ˆú<EHxÂ]_csRœ²ZD¨ÑÜ9Äåd"—�a»%aœ9­�û2u&]^˜šŠÃ˜ŽZJ‡;3aRèèˆ ~“l8Ë W—'®Qê`ªØ �ûßHSôÏÐãÕ6p¡Ü(q<+)µgɨjÕ|�*Ò¸=ú”°n‘�ysâ’,“¹‡jO¯ú3Ö…‡7í¾”Šò¾ûÉù+7_Úf–Äi ¶Nm�5ñ–>Âó¾­IAŠ´Š—vž-¶D¾G1ïί Ra!×_�WrÏ ¹ÄštÆ-i]/U´ùJÊ´¾.�‰g¹¡>Z‡oÛÜ4I²¡Æ¦(¥w ‰’‰ÀÕ‘ZжÌnÓgßĹ%y¦3t“@xæ |Ÿf “AÈ#nî©+—t4R�‚A+j”æ#L8¯muò÷]S’ó}Wu °ÏÎs¦?�?p¡n¹ ,VH¤ˆùdm.ÅJ…SV/„�…Ò/ô¾â¼ƒµ�ƒNøuœK´Å2¼5ÆÝZQ4Z†•§ZAà·7±q¤¯L¨øc g�úU»ÓºäÈ�-'–,Q-K©'KôbV\ÂÖQTûž¬uîEbÝw"ìÓœHmBd5wfYãpYV;ñ8r—u|tç0£Åõ†d �V¦ÔçJ¤rÚ áõ>†ßÔ¥Gþm×nÏOªPåqGr%¤¶tñâ�”8• ã¢æµÆ½< Zjí­jȤö(Þ´�qÁ¦}%gXµÁ6 £ZdÇá’g}Ÿ¶aKDP^—Üò¸Ðˆ—W¸‚f`£�Ó˜ƒR¡ä}Ž'WFn�Š´²Êø2m#Å ïùϹL˜~¨ãÒD“6W½œÐaQŽr)º­©ÂFs—¼9Îë[ÖSïƒÀ´œzo0D=F2:Ì»¦- ²OÕtù;èYX/H²»ä¡²Îí:§�ðºE¯pC˜u×ëƒ<<Ó{vï BÝÓɱýf‡Ì�éùz|T�ãñsVãûKõc ;²^èBr}äÆËUÜù1½ËÇéÂ×Ot‰\2âv ¿¸EÔÑ~wÙ,÷ÅÐÑÞ¸D)ûÈOÇñ�˜Å ã,HéÝYÁ�.wXs<©b«Û"DÃEtÞ‚³ˆÒÅìSÎR·ëosø³k|Æjf‘@œ¨·ˆmw|!­`FV‰Ša=ka{Ë‹e.‹Ý]©§±º�ËóÂBL´þ\)ýél™so¼µ­zÇ#ŒûJáΛÚלÁ¬ø�œÆ[]r‹d…ëÕ kPi9¼KÎ6cõ"TÉÄ’ÊPè•yƒ¹J…7^wDÌ+ŸÚŸð޾¼À@ÄÔGQ7Pmš‰°xxx„PßAÿÎéÌ]P‹ý¬Ç‹0'>d{ß¹ìÛob_E@É…cá¶T´3À¼lM]ìgFJ‹±R&dh.LUlß4™l„–ÏÞáwR-9&×´£VÐe/×7qѵymBü*Q Baã›Â&»³S¢VÙ´ùÛKÎÌ=‡@ WRéÏ#'µv´\?Ð6où’yË�›ÎûZã‡el©ÎøZ‹P׊M,îoΊà|„òu!På6¥éŽ\ü¨Åƒn O%…RyMÅ!ÓÆ¼Ãüà,˜ðË‘‰ µ9�y•Ц;x"û -+¦r��:¦¸E—ÆÃY‰ A¬õ¢Ša]낊¸‡LšWEŒ;Ê�ñ],ãÆhÃïaôÓ`#õÙèãñm;ÛþÝY£ÎÃ\qñAY-U^ÞÓŒLÇÆVNFqÕþv1Ÿª²cþš+ÐP£×µ"À˜ôsÀ({â ~ùøæð/•ùÕHÊü=3Oã1Öö6Þî¦�·¬'ŸwÅõ‘áE<<™à™-IŪäKKD¬ºÓ§ùÍ /}‡Cìh¦¼z7gýí 0¼1Á¿' Wgø&yÃ3ùxp †UwáCëÔ†—á[‰ n"¯—bæ­«y!Q^}š%¶�£×9Nr5š¿e1»¡r¼½ \Né›� ÄØe´£ G›I>~]‘h�ˆàBA}¶xz"ƒ´F‚�'òb™x ™a�±Á ¾-†ã'{?…#•Þk‡3¢…F‘6•dÁzñøI]C©e1Ú9eüa ²p^ ŽM×än­O?�Â%̑崿tªå܈ KèRÓŠdüžèиA7nùǨæç-øþºw ÞØŽ-r,·ß±ÇÆD %±·¶r®Páa6ß*cÃ..ξ줒¥Øæí1“OÄê°ÀF¦÷ˆ‡ñ:]ŒñøHæ#î5ɾ¿:‰4¡åi¢ôÄÆnufÇñ¦•µ#fL† 2±¶U�ò»ËˆgÒÁDu2§õˆúÊŽB„�d,3#¿dÐ"µu/³†±ÏV01ëxåâ«FÖ‹Tð“D-+PÆÎ£­2nã¾þ•¡Á[AŸ‡ÊÓâÐÂÒÖ’¦Ù♼:DœÆô—w“í�†3_°ëŸÏF)öª‰õ·z6@ô3NAê"ôiZh†"Ùh¨}ÆæÛjIÆÄK±aS�’c® æ?68î7 �W ¶Kô1¨x)W¸?ÆEíDCÿRº†­¤×4­Tê&8Áv*õ4cZ:“¡�¶· i;>Úˆ ‰–宿fÚ-:œKI%¼Ù¤¯þë¨ÿpòRq l ¥yÙ°�˜óîó™�}˜]ýŠíD°ØNêV°ØNÆNŒ ½ñÔ¡¡äMÛŠßÙ,T(­€BI@óŠ†æíbÝË·Dyl|XêŽ6UÐØSÏÖùF-×qÎÁIýV”k’x´+‹B+e²“ü^$æ”—j‰B+Ù$'™¤%ûJ”`˜¸g·€§ CRjQEVج(+0>ÏfEAç"‚Nâ„ÎK¦îÜõ«;/5ÈÈ1T³wp`×âê�rÔ¡CÃO�©‘NT\·`%�’Ô@ ~ácµhDq%6»Mšmð;�+Cæ.D¡Dµ(‘‘ ŠMÐ3|äðRê¨èÐ8ø$Ðq^d-äáÍï�‹+r ¯Gìúíz¯,©íâÀK¸sDt¨Õá•TŠd"Ù¥•²,\Hî“´�ï¼âOéÕÎì(|)_à ²e¹±#‰OZVûzUç’Vú=Ï=k.^�Õä.P—ïă½V ÂR/—ZûïWÝK9uD±(> φÚGÍñóŽc«°úý8Ra;åÚÒÚIÕf±âÎ\Ž‘°Cl÷ã㜨™#ºÓÆ×Fêr7�Oî$Ɯتs­x%UÖªðà:,UãÇÍÅbràºÂÛ)naб#Ûò(ù̼UdËœ¡ø´0åW Í»Y•wVƒÍmºq›M2—EŸI^Ëà|AW×Ä.”ˆÜ Z¨)”ab ¢^4ÏžÝïšó�dØ‹œ³)5YO)ÍEV¾PÙÁz,Ĩj«S”ÈMm–e•œ>¤<¯Ì•]–áÊþ˜WVÐfP¢Í0øßôuá—^+Á—ÌdŠÖc—Èoý@C'å uíI|¯îìÊÓ\#}Íýö¬»fïò•×O:²ñ’HCäàL+1¥‹å™R«Ùºæ›Ü\k#¸TqN÷IQÍÊ Pß'µÿ¾¬!„þf¥KÃH�É Ѳ�Þà—b™rÖ‡ºë½bÑ×’‚b}OG ʧ‰·¥$‹¥ ÒVeaéÍFC…TãZ>nÜ›’jà©T <­­xšäV·õ­ÊÖ¶t5/j:™º–¹UÔ²e-oƨ V¥pÙÚÒ+Û�³ZØS…!ÿaÈg†¼­NIÞº) %ÄN€’5¥<½…¨Ÿlï(>qöæ·£téÞw¦€­ŒbSX*tæY¢Ó9ªw\ÿÎ*±Hw <"’#Xíe©¤.yÕkwŸ?'*&B7Ú#û{ û,Ä\l³øÛŸöG°ìgäe�Ñ­ŒpÅlR”â*Q0P(§ãq«$ü7ÿ�"ív̸Ü&®¤gô4³%ìµ÷u‚÷&û)U`}(QDÅGÃ@Œ+†÷\ ¬ :ïÜ `›sú\ßž@±ôλDE¼Kô˜Š�`&@å3¾ZG¹UN篾«:«‘Á^¬ÌY†è³aµ‹3·§SŸO&lî!+„Öê÷¿'iV{/4>ætxÚŒÄ!Y á^VøK�W»¯;IÜ`-õ›#¶€­ ²¨.í¬{å\¦ƒo±øÍ�t¤Ò“•ØÄ&ë,oÞô/·Tæ‘ï(?³FŽÂƒïKP¸W®Ð)öÊL¾Âé¹ ÓN Ä[`l¶CvåRªRT KË®�«�_Ë}¢çüDe¤ÿ\œÙ}:lß%Å_“÷K=Ñès>“tFÃÒ<’£uAËiUþvqH•y"—¬gmD'»3Ü[C°ßU«ª3V›°�bt‹½ú¬Ø«¿ŠØ«�.öê£_ñÊHjHZ¿–ÜñQÊkË‹PŠÁji”Ê´.h9-”*-uüdòÊ_ã �¡…O>ý­¢a…~c7JŽ‘ÃÃnxCvzƒ’"ë!ÚvL6Ä�DQ­5�´qÎb´OôbÙˆ˜’Ó†g[ðÌîtêߢ#É':™¾‘×—�‰ö˳³cû�sÄoœ‹üƹh$v�¿„�Šcæ÷kÑ(£ð5ir.#˜[àa’](g+`_-i(ȳ™±ï˜nEcÍØª¬u@TOAü†+䣆iËqÚ1Û¼bš¸ê\Å™ya—Q`ÿ�ÌBƒMH^ýK7 o:{VáÒ]OW]U ]Ù�:!“×B#ÒŒ<|(É@?Räá#*“)F‡y mð—Â@6Ò*7~�·6ñx“ Ë,9©î2dÉ \7•iYXð'B'î¸�õÇðð�gÆf×g�c7{ŒÝ{ÖÈEĬËérV}ºñŠÑ”mÛ‘>VlöU!›=BlöˆTv¤Gaƒv¥?S1?Ü7k lbTóüÏÏá0?ÊA'¥«ÌxÌÛM¤Ë|y ¼*”˜ãƒŽ¸ Á-DàV’ê& nµ"žw<�ˆ'ü©ŠOv×I¸WO>rj:xþJxºñÚ¬êëÄkܤ:^+âµ q?#(n¶i1�(Sm<ˆíôh$…@Ó…¸.ÔÎ qðãµó#ë~xhGËhbTQ??›X4oéoA䆖¸ôà.¢hȱJ�ÏÕæ 6_=þK…ƒ¶=�*žûÉpõ)†"À¸:Í=˜1Í�”• í>ȵäSo³§ßÓ·”¿®§«õçë>P„ÿ˜8D\Ã!B× '†RB:`yú@Ò/�&q·$Òkðì+�V@Û&iç ë!ꎴƒßÛª®÷ñ¸ýÉb~~>¼:ºG"­`žxïà Föé_éÿGñî:NÈUO–…Ê&uÁbÝS© YIjô©QóÄåK'2¨Zi‡’£¢„‰‡1¬²ÈÁDÖ�¬å¡ŽF4‘zÉÀðµKQ)Ÿ CoZûóÛo-DcSkö(ë8�¬ãÖ¦óœ::ãøÀØJ«-¯9Ó\Ò,µ—„4vz˜Èg�Fk¯½ŸBöQƒúëq�C¸Îûîét’Ù9Ún1G› R×ÑæÂ"‰ü‡›0B€Ãè‹3åjãj_ØÖ 2Úýw›1Ú€vèG%¢}\]XÿÄ6Ñí¯vAdˆÐq àr w¡ìéèqî}Ù#ŠS…!”4ÿ)ÉHV ã�ç3ä�%Tz"²�À ÈWë[Ꙙ���`‹ªðûä•’µiÓ4ügñs~Ú|r7–/³õù¤e­¼Â©ãkæ>Ü8ʨjŠî�$î‰ÛY»p/eîJ¾UU÷©"CyTÈPVqÞ­àL)ØõØÂ#‹ò4ø@ÍÀŸíð31=TU¬ÇNŽ �àH±Kߊإ�‡]:Ïg—#vßÚ¼Ò—Ãûi“à§¿ ?Å‚xº’‰lN`W«Ãæïóð‚ç`sp\­V—ôD%–wš$ü|éeiÃ9âzZ¯ž/PP g z÷u�²®ÍDHiiFN.ao?`õqÅ×EÜ+ì7áBÒs¹à¤wu¬S»K^Ê Ÿ]BÙ7]jj�ìWn1¢q�…+±^5‘!ó¥‡bùëÕ ôdK�®Æ):nzk�J8ö".0Ÿsõqp3qÃîôyÛù�¨ù©X\1«YrºÉéjsº§‹ÙO¯Kyqë‚–?Ä¥üÇr·ßÆånß‹�ss¹ÅåÞü0.—éàªpºò.rsœç“fh¡EÚCw|ìó”˜`ã­ñEyÓü"œõÍ�⬵9뛉pÖŠþŽLY2C€ÎÖÜOxèÓ*T#}²î¸Tª£ŒºÂù(L‚$ûE‚vˆÅ+œãFžÞ‰/ì‚í\1OxÊ3ÿ+¦÷ ýÄ=] mÕLöÌ.ûf•ÁMŠÒ|ü ⇶?é)­E&Ÿ+‚�¨@Ÿu¢ý©�)Œé�‘ÊL™”mg€Ÿ>b-«ÿŸc#à_VÀÿ¦øW à>µßp!ËjMd¹"—×��Â�1#/ªÜ:®æªV%î¬ÖÆ�Õ¬€Þ®€¡JÀ;óÞø:¼“Õ]¼}+õ³Œb™>“Á#=&B¦FÃÆ$Ù¬£;TÁ©7ÕqjSŒƒkUqÙäWKƒ¼„ïf®\7jƒëF>©W RŠÔ»L÷ª]'Oÿ ඇTJà#6‚mµÎMâ-ðYTÛSD†Œ”×Sx3¯V'ŽD™l¥Î4Ì$±�憫Axxr=¢˜{HîhËý”»îàj“²ƒÊƒ"­»Veì‚yë¹ò�!ö¿ª¢‘ÍA@©EÓmLø8æ#²¡$AÛάgEJÏ*³9I^'j+€$F=מu£—ígÏšQ¯m�Ä^´o×€'å’'ΕBÞ—±6\Ô9©Ý„%Åî%ÅlIqvIqfIq­%Ű$bÕÙAos�v¼³Íƒ8ˆ8ãlEÓ�5ÂU.[šöˆ{GÓ "è´*ì~ ;p!ÞÏ-2¸08£ØŒ·Í£«Ò¬0ÔÂ>g§¦'#ΖOÌøÌd¦¦ëÛîím¿á©Í&d‡"72µ ²j3¹G2¥pen«®/)@l†·2yŽ"”£ê¼Ñ˜9é’jDgI‡¢— ªÐ«¹ìkåÒoyðª]7¼�P¿Õ jÉ/Ûýä7öIÁ�'¾â¶Œy왳¢·îõa Ž·ssdÞÝûñ‘¢ÏÜ‚vƒ Yâ6ÌΖà5ç¡aŸØgÿ˜éjtž$Ž¥?�Ñ3g$¸9ö+ã [-Ò¹È]/Ù‚¥Ñ𜰠D~š®Ç*¬¦KreÇs;³)8+3k'ÙD9ÉÊ1ßX9—–¬ñÜÍ!�¯ÚÖn¤ŽÉ<$Ì)ŒÅÙʰÙñ2ѧ,¹½¡Œí鳬˩&ß6Á+Ç(ð«_èò¾âY¦¸/mÔÒ1+8‚È«ríN,^lôøˆÞݸëBrœ/]tú0Q)s]—]‡¨{¸¶P%ö&r+'·ô+ê¼2}éu•É2,Ðùà HÔE�Ûå|ÃC*¿ºôµ÷x´5/YƽÁÅ)ï®~±½1ô­ù¤À¬Ïv Ðã`xuXazZy2à¬zz€yÉøè8vµßÔ«²ÖâXAħ|ìâÝã�#M­ŽjÀNÈ#ø|”˽ôÀåwŒÂxq›À±�e7Aù¬éEŠæòž´4%Œ($”1í9Ǥ/Ø­JÒÌl˜¿œUøZnh×~÷Í|ç ü Äv¯½Yç$5YèC�YA¬¿ �_ðÇ.bÔäUDR׫bHF¨]t µê£,Ue‘è1q}”ÆÕp˜4P€÷â5¥éྱ¨ÕÝêùní¹ïê¹g=ÕÃ&�Ý<÷Ô»&„^ÆòvÕò.µNIŸM—ĈLŸW/3Øm43ß™hg4Äof§ »” ²K¯‚¬ÂA]ꃺ,dèT‡qɯÇ�7›ŸV7ÖŒ®]7 ÿ�1¿ð¢¡*ÛßKH|r%Ç<‡‹¾‡Xèu:÷Dz;¥+½a)i¸‡qâÌÉjîìIÈÔ«¥€º¯­€Ú6’4Œ¤²é^ùZÉ�[sïÜ߯Î݆WñFìNÕßï7³Ûðû¨‘3ØøµZ¿6Á�ß$!SÀ¦G¯²î¿þPKÒV1]uÅL¨?}]imunify-security/assets/ui-app/assets/static/shared-dependencies/long-stack-trace-zone.min.jsUT ëÆ«jëÆ«jux 臕UËRã8Ý÷W-R(NÂ2FÐC1]M]CVÜ.áȱGrI2 EüïsåGl†žÅda[Ñ}éÜs�PeE`�‘©CÑ37A’pkåV1—K;™øgØÿ·ßg•J�Ô “7#\eÔ`÷øS¤.ü`éÈ[¦ ö±9UlA ãf[í„r6,„Úº2 `¹TÛª€jžÏ*õ¤ô‹:÷Û8%Áé|1ŸžÎOOƒ­·…no¯Â w®´ËÙŒ·~¡Ô3ïpÛ†[ß¾¬`=;CƒúbÌŸJgÁFdR‰É¤}‡|·¹h?Á~é0©1µÁÃåzPˆröVÂ(IR#¸ß_žŠ$A€9º_]^}]ýyyuøç×/Ü *¼õýõ÷duyãíR&NÐçµïg#*YŸ*��¬aƒ0FVaB›¥“;aß•L‰—à7îDœô@¿{í]±!õÁÀú¨æ"ýâÍë”»4÷Ð:W7¼d°I3´bI)Ó§ ½Ìº/»ÔCÚóƒ?ï ºwhËB:å:Ê(°£j ªa9VЙGâÌô,ÀPþ/ÚaãY¶ß1+›·«!ì©Ú¶V*„IÛa²D(ŽdUö%Ã=|$Ü ·Tá¤*Ðg¼¯@CM4 ìÖ1MØšùñw]ðÒŠM€ÂT+@Ëi2J�‚��‚K· é-e, �( ž­<¼'€×fMY“s”¨“N&i¸áŽ÷o�Ñý~GX=hqßpMHDZóf¨@®;ö_602M¢ý· HÀ0ñÜ"ÇDèu¢u½,c¯ö/Ò‡�z™î¹ÈŒðÀÒï\m ÑPçc´ßC1ðö£è¯€^¥^‚›p€Zë(ÙJl[yùêlD7&)«ëáùPp{ˆš¾ÁïKv ºåù| Ù)ÜÌëy óåÖ‹¸50]0†¦@#H(ÕFü}—�ìöÚ‘„»¦²Ù�{Ì݃=™��%o)³ýn�ûû ®³BÃÕškëŠábrúZ~‘¹ ŸøH}ò#Ƥ7~_'1;š „DÿPKÒV1]Ž¿×w”¾gdimunify-security/assets/ui-app/assets/static/shared-dependencies/material-dialog.min.d78408ea8fe2.jsUT ëÆ«jëÆ«jux è‡ìLÒ‰;H“›Œ¦ßû1›ø9Kâ¬:4d~”Œª­ABÓ€UCû4Is?‚ÖôöïLþù>™ÒÔÏ“´†ûŠÞIHKíÀM�fm‹ÄÎâ¿ØÌ™[³Œ¶²k �¼IÂY4—- ¢ƒ'б¼÷îÍÁщû¬ÜAïÁ5�óƒ CZ$쬽—L¦I Íð|KÅ5壧3dãh$f_žSZ�䤉Bl`{áÕ>·º½$Î}ƒDÆ(@ÞF.Õ#tÙˆLUƒ‰‘ôrk¥G³É€¦')šc^QÐ$~ �'Ü~MxÐ{:pÙ_ÃsH‡À×FÉxþ4£é9]¶î�Y..½¥Á,§ž¢ â“�­W6#¹3_0{š¾Ü?Ü}}üËåéÞÛãׯ/OÏÞîžüòñòÕîÞÙñÛ�^É`¸·ÙNÿgà4H“(’ÆËhÖDIpe; ²éÉÛã÷‡ûoö_Ée%¶ñžùÞ‡…Ó "?ËZ'óIžÎˆK0�|̲6¥}«x¼iêÇ4ÚÃ!}K6�v^úÁUvÔÒmÙP† Y†Îµ‡LôŸtEã óñe£q®¾NüÛ¢ÿEçú¦@ãç~?žE‘øêCtܧ "6 áË»JÏk@£¨©£ÒöãGjþ,O^%Á &0di–»8ÉGJ3 Å �B°ãMg©¿üq|ä_³�Mг«°ÀvuçµÈ ¨UÑúÜ·&aà ñ».x)d——õFè÷åv$‡íR»G-z›Ó8ÌZ£’žÁ6Uf€¼à̳Ä‚Z³˜Â¥J8§9·~Œ¬a?¦7­hq aì•ÆàF~ÄP˜ÑeÀ§VÍý½è£žJðÅ%Îg· ³Ážç–f$OŸÖ�¬b¶ƒì9ž…ÄhÊL Ä�± õØÂY`' Ñÿ™u¶žoý _÷ÌLÜf÷÷GŽJ@ñ9A¤è=ˆèÒÖ[:tÈjØ´­¦öÊGÝ­‘�ë@NÖS=Œ!ûØÆò»½1 ®hºnT™îOPÑ:¸¼(6Ÿÿ›Ì(IgaPG0™ö+Xè’¢*ìy~7¥ÞÉhDQˆP«œ[ñÈ ëâ‚ ©� }ed‡ñê­|qò”ðJ^��QæuTTø S,µ¸/B=¡z âm�M¡£_êž.²øK?ƒXrT8ü/}ËuÁh /^f%7œ¥›ÕS™å£nŠÅú}¶ƒ=+æyÝê÷Q ɰÅv˜ÇÚèþ˜}mk’YÎÎ̆´2`•�ìÔ-�GùØÝrœ4wéÿjÐ…VÈYXˆ¨óIE�£Æ¨5Å�Èw <Ó~XmÍb Êaß:J’éî²*~¨#�ÃÇI–K¿”PTyi;öÑ&e·@ÑE–±I*¤J¡`fç£] [æÑÎÎNw»ãu ·,<Ó` ð|[áW80Ø¥Zî»D[ÏÆÂ<�!,ö±î(oDý%ë<£Óeœ­GìU₊¥NPÔS4Gv KÙy¶-EöFÿD!‚©æ»yîcÚÒ$Ûõɯf�õÉCþŠGÇ1”"yšÜ) ¥6‚2¯Û%×ÇÓ§|ÞøœÌrÛÒDw¾±`T½P“ŒQ]‹šÌ•õÙ57õt–‡Å’Âþ…üõÍ|%�IöWA#¥PagKý¼Jý µm´‹:-a^³,oûah¿$Ÿ§Àsã³üU²¤u–`fˆ` ¸Ò4<‚›aªeòŸSž°ŒbM˜D×ÔvÚù˜Æ:÷UÄ6p\èó@·Ë‡è³¨ó6µôzðÓ¦’ÒI¬þŠJ7rñutþþ!7ñщ@ãÓ&esm6D®ùbIÞ‚SáÕÅÆs"í©Q„fµ¨R<æu_;�ÅdzϞ>çG"­Ø £ó”“p»[(Êú,ž£í8~¶ôÖŸWuõ ¹Ì¢Û-Û…™ƒ¥µ|¤­�µÔƒlþ*Usãܹ¥l0÷¯ÏÇ <–Ä—Z1Õgl&%ã+š–Ö°rð£å¤Å잆–«­·dˆ›pO.§ÀÎ×tWޤ(R”�æWA?¦>`VÉ£V Iã'<Õ”7Œ($;¬Q¾åœA©F™Ž@¡|ZÂ;�¾ÛÚjý«ÕmÊ_c qH˜Ì-ÀšñÊZÄuÇ, k¨y™RÔJ%cªuª Âí–áTm« Ôb�«R®Õ J“›Mjž ÈQ×O“Y6T>ºëð² 2ãe j Ú §·dÙP.ŒÚR•ZJ#¾ëÞ[5—ªÑI,ZG01 $ wœ²ø ¾™/¹uÕí¿­2‹ï}{Xª£äƽ“ß¡tQ×T¥›H½�6׊¥ztqÓë§yta4>bjTCæ9½…•j×ã&)Ý©%Í™OÐR@CPt„‹ëß[ jÝI¶9sHý,W}s£ª €Í·`YÀÂÖ Øers<,Œbñ¼êÔ¸ Ø¼¶.×ï\ã" |»ÃWJ°ž0¯T +·,£in,5£dÔ4%m>ÆÛóãk?Â1ào–>Y†¯a¤˜.ŸÜ˜ 'ã?$éÉ0-Ä\÷ÈÍ\ Q@†�ée™qøZå§rB“\(v nXŒæ ¦„-t Cx†å²¦Fð°œAè‘ÖßèGœ©7­ð¡Rr¿½Á�Š n�äy2ñ´™«¦íòÔ›³�ÌÕz¨øE‰ô”  2FÓ¯ˆ‘Ps˜Ðü0¨I%›îãœbíüJS1¸Êp­KÌ¡2é±³LEô�&¤°™ Æ^…öfl‹Ù¢Ç®0°�˜òyjÍ ¶eƒ�}¹E<’¡ÍÍÄu¹Œ#še&yi�îY³Ø4$1\ÃÝ©×i¸‡³,[ºk¢¨*?xñaÄö³'~”à¯×ÿÙ‹ü*´É⤑~gÂA >h,u~ÖøÆzl/ê!öE5¹Èq?�Bõèç`¤ƒô©IMIáð¸>�$¶Ï_B¨"õÂèKÕïºT̿ݤþÔÃ�Mª|>‚6VøÚ~Ä6DÐ¥=\£øÿ[�â1ž+ÖàŠ†æb^<èR*ÄQÖÅ`v—¯/”0\‘a:ÕEE­Šh¨Grbh[V$:åN™nÍØÅXS00 o,“êhL,êý±»†Þj1h"EÜh^r'¹­³êèñ±^à¯bH­̽Ü(lQrÑ:"€0-õ ¯9ºÛøšK5?ÝÏrµoÀõ|[¡"ji.)Ô_¦4½JQs4ÌÀ(‹Çq¸É *¾ÑPÝDrZµ¯Ò]ÞD¦·ƒiáåÊ­žlœÜ˜7‘ܵœ­Â;fa]+%Ä‘ø&³x8¹&s®-½ÓwŒª[ ›ËÊ—h¸¯²¹V_¯­Òò»¤Qj¸Ø>WE ØA,+1NФîÊä¼úÅaµ¤Sš78Cóº c'ß�Á•b]cMªb?t‚ híÞ` ~M,ZÞhz@²þk˜¶;øãöõØ'b†€øÙK¯ªÕ†q¤±§A›0¼ *ö¿´ÂNo.¦ZTE#[šç`&\ÞUj|QÞ$Oר¬m«fc?ÄM_¨:»XzâæJË}²ül©ÔæÀgñ¦ü‡øa€ê>“``έgXú¿0Am9½ÖC²HýG§ÓY8¥¸ælP“ôZµ 4‹Â)íK?HWxDkÄwû%û+ÈrÒºCÕì<˜®4„â6™™PÈÿ­z1'}“yÅ´¸ÞIë™xý´ ±I4„NwèOXtWǟ͸úvˆ´Þ&°NH+ƒ”ìfà·C§Ç7¥×5×€ loCuzœ0¬ ió8ì…Kð›5„n$�g�°ÆÏ»¸‰y©q”Áá £ÎÝ­m ÷06ØuA@ZuÕ^<ßÜÔÎÎjmMñ8ßÁÀÍ£µVFópí•Ç?@‹å�Ôfyð—hµ�v£^ˤôûãÃÔ[]Ш³X+l\}­ ×nø©ä «•EÌêR¤Ø ©½�ïÿ�Ð Íb�îŠý¦Z¥"�Î9P_]ÔèŠöǦq¸†*@ÔIj;?Ʊ-Þ.ö\|ó]µ¡‰jKµ×FW«;L¥½’Çrµ!Žóg؇úçEÃYÇúQG‹|*Žš¿«,¤ïPÇÚÄÐCöã€ö‹£{þŒå˜Þå§�²]¼Lä§1Êü°L¿8 ­BÏK_ û >m:�3eSjïÙ6ëÿ\œ!ÆÃ�âfÇ!»v×qøYIþƒiy*¢Æ»8ŒìÔ'ÕŠ#x b3>䉷 ø0áƒ_ùQ„5¡ìršŽÇ¦X;Q' Ú!ÅÃqøäÌnš¸®1óBå`=ŠZ j)†Õ¼ÜÙ•;Þ� Æ\Ñ;(}R³h;³Ó*MŠsÒaïïmÖž¦|I»O‡>Ì XøÀ9#–äB¨�;ì`Ó ñÓÐò¬I2˨åð#/\Ë“6B:Í>±©ià±Õ¶‘¯ÐÛL=à½u«(®†PP&cÓO ­9dEò¶:ëö¬'¹ènÞm–•é¬ÝBs<[(ªù¤3¯‚á¼…ÿ-tUÁô¾EÅXëK‹Š×ÁK‹Ù4QœÈí ~¥Í[ÅAgί8ØQì`÷âÈ;~ZxŠxóû{ÖæßÙ ;9ÿ#»/Ýv "�ÿš¤ì3*!Šðä«@™'SÄ(ÞÜ!JhØA•NE'�¶‚RßËŸ|p|˹Tf+º¤ N¡È/ÀûDàà 8ŒÈ8´ðÃðD]t¢�3[«Bˆqb jÍP�=¢9wâª~¹]/LÞ0× ‹Ṯa ¬Q‚Yv Jb±§¹¢:o–Äg™Š3¢ê®•~ùÉþ…ºàC‘º “1ãëã•H‚ê”jˆyW\~ðMû–·ÙìïžíZ³xÆÇ¼ 1lßÏ}–ä÷ꀃW»ï^Ÿ]Ÿà…J§jl¥ Epv“©¸$0ýYÁT¹H§ “ܩͤë¦åå ¿n|ƒ�˜ýV³ îò±È|š&×,¤ÞŸxÌ'óÎý 2ÀÊ�(z¿.ø’¬õG¿#Ë­ßæ`W-¬S„üjác꧘´xçN½©­ õ–gþeËn~M¯!ïEh¿­Ñtm¨W‹¿:�K ´‹]»Q¤B­�#ë׫˜ÑÆ4T'¦šuz+ï® Aá…2õ©d--MÜT–©êUg­ï°…Gì-iõ£R§*¥¹W…¥>ô ~‰Y?#«TÔ?¿ kf[*œÍ (�°ð»íëG6Õ}O’qH5â&¨y³R‰zÿZKúãò‚i+Íš3ôˆhß¾NXØê8Ë£â%?¼ëÇ%1ÂrpÙcg�\ˆ}èL´åѼÝn›{�â8!ؽppõ�ÃÇý½:_HhñÍü�ï¾[üL…‹jCq5R¹Õ.B¥ß×™nK^9¤šÐ½’mª|EÉÀ�àÁ”­M W/w½'"¯´’w[xOºE‹Áê{–bÍÊÓ^Ò¿ä“{@êC…sÒ{Müן<}ªýhØú"5¢¿û…Öü¤z[É»õš<ä~ÆÌ6ŠÛï&UWË O(+ßxb‘Ò¥'¨~×)º4}ÉK(Ô5&[«®1áwR”9Âß'CÐOm+@Zå룋ŒÕ®iSâV]õšuψº_DÞb[8uìÁ¿Î‚0¼39óæ Ð;/¡°T‚‹MbÐ�å«»vÞ¶a ¼÷W¸7d P €„ÄÍСh“m6#0HSØ*j ý÷Þñ-’–bgÊb[��ãñxñS±Êq.,�Ä‘Äkš1K£"€fcóBÅÛ]Z|?€ä½_‡¬$I‹èQf�Æ©ökœõ* ŠxçQñOpÖIôAb%´N´ÐúX5;´''S`Zqó™°í2‹j³Ô¦­ ���§q<À5°|u ¥œéºW°Ö$µ½);e˜JkˆvhˆƒgU½7�VMê4%‚9�öènŒžR´[Cò¨Gˆét9‹é4éD"唓¬ ú;¯ tß“n†T¹ÞÊþÐéoå›&£�Þ`tÜNGæN²ó3óä+Ï<¾‘2ËÕÜ:vme�\çóAåq7¥·oãçv’Ÿ&¹žá§½óó6 ˜á§¯<䧯ØÉþçe?ÀìzÅÓؾù�]§gƒÏP¢?…dôп:Ýê  CÇ}ÇGàPËŽ@yÏuÕ\i7”¶M¬h}¹÷˜`¼äÍuUf##ËÎ8é*Y¬œô†4× Ç¡»¹Ü: ®_ðu^@7m�Pû¢ #Ÿu½}ª — ùÖû¸× ½¦ïOBnHÏáå_ô{_ăxH–¬n™ì0•ÜIÊaØàèÏê_µÙQºBý(ú<èjêÔšB9„Îè‰E)Y°p‚w³ôQ(­øÆ ú Äꊋ5âóàþ´LÉâŠYºHeÄ ‚bôà•*ðÌàtq}³0¥¾²Õýž¡ÃÄ!œlÂÁÆî|9ñ›qÑ·æí'ÅÇ‹�?q±“¾3z º_j´®[Y0Ö¸W gí<ê™Ç)™ïœ2^~øPKÒV1]&*`< )¦©\imunify-security/assets/ui-app/assets/static/shared-dependencies/overlay.min.ff04e5e40e8c.jsUT ëÆ«jëÆ«jux è‡Ì/r³¥ÄÆo:.p9N-8h_d1™åÚËû?«Å—1)ÊʼN“´5¸(Iœ‰¡vç ^�‹WÞWäO–ù˜Àì> ÖÞ²Â½Š”é˜x£Û¸ìa”¢ (G%š¡ehŒ¾¡-ÐMÑ­Ð-š£kt‡nÐ:CGè�£{ô£ÃQ‰É²Ì×&@°jøEMUkU(�ªðBÒí]‘,3Œˆ¿>Jnxk|�áa¿¹Å99™§”nlÂÅ’Í·$üáTRkL�3<p˜Ô\ù7èc¢…‹"Ãq~^R "+”¨ž£ª:Oïqö!Ζ-TûAYÆ+Ý:«å‚’±â?ijø6-J4…®oSLز/ãÑè¶¢íiu‰+r’ߦe‘Ó…šho†Ä7øã,…ýÌá×$Í趯Eº¿ç$ÍÌÁ70Ét‚pŠ˜ýg”µÅüœéP/ƒ…AÛ%žSå¼�@t!9‡Þ‹å5(xÊø�îy‚÷ð<ǰcsÌ1åËÅѰûgq˜ÓIŠËßðªþŠð=/ ª1Áÿ6ÎÒ–õº(ÓïEë9/ª”ö?"ÙùXrÖt}¨ƒÑ¸È+Ò{-}xÎâªê¬Y[¹ƒÅð Â0Ã,­Âo·º.Páf­‹+—ÕëËwo/È*ÃU´&Åbèy(Ãk™V'9U„$ÚÙMI1^RÎF¸Ž ‰Ç3ØN�<¥Ÿƒ�ãü‹Á~ðöHd" åƒ�둹@.zró‘cO!ˆŸTxÚ:wÒ]R §¿Ø�ÍöÞ ´QÐðÌ�µÑQâ÷·-œHCñà€¡{ß‚ ã$ñ=0çýiV\ÇYŸ» ë¬ßxA›[ƒºNÒÊfŠx,?¶®‹d¶\ìUOE”†•a*�r0ûíæ‘C¼RÁ–mL ÆŒ-œ2¨Vâyq‹·îíî®o¯»µâÈ‹—¤è»4OŠ;Ñë?Èrô0‹�󨵂<¨kK§¶vqO#ĘZ˜4¯ºI±ÙØ2Â=úÎÞ¨CV˜(àµ2ý2(ƒ{�Ó錼ÂáŒ=Àä¢ãcš�´ßÑ¿uM|ï�®�Óî‚@L„§+HÓwe›>ÄHóWY±‚²€ùôs‘ã#—™LE+ ž¤S]tdºsˆòe–I³ˆ©-Œü zÅ'Wê'@Ë,^�禒NÊÆÝ]}Ia¹Ì}Ÿbi�â3€-Q–—È�6`­Ù Æi[çö^·-^ÛL‚u‚p‘.°?÷}½Úî´V,•4J$T>šHÆÂ<¦á�h‚#�’DüWHf%®fE–tµ¿ÚÛ—/]‹³Ÿó#ܪtÉ ”ØÏkÌg™Ö'M3z“Y_�ú[v¼ro|_—E?¶8²\$,’sÖ@ê᣶¦c4ßÒ5ìZWW¸Ì¼Áví‚©ÄfÒ*Î ÆQVTØ6WÒ`|Z+uж¡Å2µŒÓzòPJ˜.ptÅxŒ‹©¼.)æ/™WG4»€¿`¾x3Í0Â’¸—±¹:¡¾€RØÞ-+2žŦâ'IÅw?dvM;‹Mcü4³û&p§ÓZªËW²oèu9+�¼�°FÝÚó€%AËr(û¼EeÑËHÃ&ýöNº�2¤Ãb™'�”e)3Èc³¬™bÄô0­éè©Ò|i�F\á� ôЄcÀó�Aý5�öÂVð'¸Eð‹ôßÿkÛô/'mÕz'UëòoS­4šE(9¾ë}âmc*.ámW¾{›kBDĦY0©æ8ð�°F)–Š0r1ï¶/Æ…S.0°æˆªº"bŒ9ÿg9øÇ¿ÿs�#=�v¦ö!š¹ ü\òÿSVÅñq« @£Õ•‡§lÍÝèöÒeq™¼D°O¤Õð²Ù7¢Ò'oò¡Wñꀉ§)”¼äUyèRÊæ¯¦l6ee Œ4[Ä9ÎŽèèHæØÿÆã›¤q”u…kÑ i–"ô§ŸÄåM_ö  k /ø,?…ühÊ q •4|8:c5›ð¯ ˜ FX¯ð™½bÒÃÁm‘&½ÁN‘/éWaà‰ýbPjœñ1ãê¡_!*…è¢Ès^Γ6ù6«…+‰\ Γ¿aQ| XEo¯©‘2œ”ˆ�fq>Åz-ùsjk$·|±È/Åð*úòÕ¶‰¤Î§gù1†ÁÅJù0áÑjZo’ØDE™Uy¸XV4« ÒÂŽižàû³ ULüª¿'Ø\EËìØÇh/@ƒ(êB—á|Jf‹ÚÂSMþi‡Éÿy#|ªŒðéCF˜sõsß�©ˆVKЪ†V- ^RÜå´êƒs ¨d¡‹Ì6f˜fX�²¿7J_Ñÿúý4ƒMT˜YáÌÊu…KÀ ©ÿj ¹ÚÞ†é‹ÝwÇv¡À¶}ZªçÑu‰ã0ÈB"ÙîCþCÕ=e9e³ñ·Îs¶$�ü€�é¥QÕ¢èÙ²%}OlÆsS¹I£OkGÑÎÀŽ3µ^ÉšÓr=üé™÷ž®CŸ;uh{üƒþã§•ì³R²Ï�ˆt„ðÿ†W×E\&M8ç¡ÏÒ¶~ïÖB”¶ôPžàvæµË²*JV¨~S]`Ò©,Š”Úþc[m[½Ú™[4¥W¢+yãÔx …Rˆ§(„G-hHV , ®÷þ¶Î!m]MuFÒt™ufÕexЍj OA O†Gl"�ª/Åט¡r*®Àç|îSôro³ÙÉÍ2k@«�i¾ÄQWi›Mwỏý•QÇŠcìJÍØ©çÆÌÁ* K·c«gçµÛÐmm{UñõuwZ²¾9»ØÝÝq ¼2V¼ãŒE¯1?ŽVçk¼™?#O›×©K§é¬Ó©‚=’„n3*V¢›R‡þ"¶ 7®‹.ÕÝ6*^ÞÿØ@*½ ]°±å–±6vsÑdN'S» ŸÓÛÔµSÄÖÄáFŸÄ…öð)Ùòú;&zñŸìd¿?ÑÉNÂsÁØ¿ß W^øûã½°0HG”2º'þ.=ñ³® -§»=½ù&L9jnÛ÷erÔ༎¬^_QÞ=Zž™ŽÁ)¬FëEZ¾nC*d”<Ô@o¤ì–Rδ:„Ü\Þf³j®V´NêÿZâru�3Liv�eþ!MF¿(’yÜkz_QÏî!@6ïë�‡&Ñ`ÄϨƒ‘çÏü…|m¨×±¾_IN/Io=Hù¬{ àF`#û8¬0{P¦×K‚AÇ›+ql=Ò¹±e¬Ø¥]úbÞÑ,Íðýl‹ð“UôÙ�«èÏjà3¥�ϯ�J"=ôL*ÝoîjVs?�r¤6·®TMzVTD)&­ou�ñˆH¹hR+(�r[½eÉ7+ø5¼h&«îN[Ųv‘§s6 :æåú$’Gø²Ä(¹®�î7ÕIÀʪ›÷F-„ÂWF;�;Úír½¼�SEçáÉ»óË+×<¯ã<Éx<ïè•!£5ò²Œs^*¹Ö0>‰º©,¿úô¶ ÛU*a$íÆÊ]�®°ë¿ö‹, ÛpÈÊ“=è Td"OMTv5à=3r·í7•Af±Ú†³ºÙ*Ìà´K;�ÜiZÃE\6÷qTÖ%/.Ä9èî1,TƒXÞ”W×?EÀæÖ�“†Mh¶ ôç§�Ð~“‚_-ÍËñ>±G~ èê·^µ3L[hœÒ OnÍó@ºZÚÎ/¡\û{Aû4• pݵqÜ‚ØI1�f¦ˆûMx,NYµã ³p©´ÊДö%<Ÿ‡5áÊo„³kœ£k‡›€ ÓjrçªqQàuž(�µí“ÙjÓ˜õ tìv«ÖÖãI×éE-HÐ#™}ઈ×vwqóã!v>�Ùž—Å<­ WEFc•�̰~š¬� 3QÀFÒ¸ÓžWÞ•ÒF·X½.sÖ©ŠûÝOS(uLmÝõ2LˆDlZÍ©=({ò,@?>œ†€á#0�ë°ÂbÉžó,¾C²ÌÙj%’f†opqôTVHœr7ü·ydj÷6ŽÖåXž²ñÇ‘Ød¢µbÝtŒ‹ù`šN3¸hu›ÅÿV·³.×µ�yÊÇ5¹™u‘¶ñŽRtil©ÅœØ€ZW­-ÏÓºjƒ36 ÑY»¸d�pÁˆÜ|‡##†ÖÚö¨ë'ê9莅G)-íDQRÿ'5¹\uOAw6>qDFöι ­î@žu†z¢¿eè툣jÈj›¸éAl‰º‘j!­3Ÿ«ø¢AMUéá(…•­¸vþ ’=VuÑVå¼€ªm)o´ïÑ×òi=�}2$á--;½Œ”ždƒiž IêHZ¶v+¥y¤¨¨0䣓'k-q0ËI*Kß&½ld\j´KŽ”Òî«Ý´‡×qG„ß¶�d‚!ÈÎéÚù%>»›·Òþyšt!�íæµ�ê`Pñ½“h0˜dPÅ~â)JØ #›¹ò†^Á¤W·bzw¥NZö~5+î¨DŽœžþ1u1wÂõ�=¹Û®nH5ü¬}z_°¯PªI¹�[Û´Ýšz -ÍigÏašW¸$‡xR”x+j– wPó�³W¦›¸›�·Ìy.iLQ‰ÿZBær Á-ã¹<„ÛÎ"KœÛ3šµs=M²çyœšþÔ�Q±Ò}Ý<Ñ8ê"½¦—Ç$n�c§E‚» µ�0Y6ßZâ¨96lÓ_¾ï`ÇÚÁÐïz ¬SoÛŽ�¤wIÑkn¶$¹ r¼âà4AÜúØ8Ò9†¸,zÌ ÁqpC Ú4ªôÏÁ€g½¶Þò òáãÍæË×@¼­ËßøÙ!A0j®^ùé¾-N�T ÐmF°˜´3\?ЦÜ8 Cwþ{)ðÿ° ´§ÛG‡æ)}·ÞNl¥Lí1ºá•‰•R#U¢#H²˜bK\—õ{òM}£©ÂÔY]ó‘§wØo÷ȧë-"vNjûyE|×�B`Ê ƒÆŽK©»N Ž±¿Ëlè¼Çý&k<µŽùíÒ¾L}ú×â%x¸÷п¢þ—ƒþç¸ÿýß¾>ž½GB¿¯i)\jåŽ m\–Í=تÞv!ºã¥uÆ#O‹Ô¹¤TÝÂ:´R'G°Hõ:ËaqOÃáH¼‹2�ï¢ š—ÛÏ—ÕL·}ç´)Úˆ†iYÜLÀæ��/kà Úÿ5Ã÷àÿð1°ävÙŒ’ôy[Œotôr»ïâršæ‘o.Mk×tÛ¤ÔúŒËÀæ)M‰+Ø´ñ®ŠyÄ$o¡ŒßWê7MÅS¬å†Úªì‰�Ëá €“ß¡ž¦û]-iÂZooÉ/ œ7²F3‘æÆr69Þº‘&íº‘ˆÈÀ¡MëÖ—’cn�4>¦ÕþVæ{0 }ŠñTüÔ[¦Úña›)Οƒw=—Céìw¹¬®ÕÉ XXñ¨ß‰’»Tïñ¶OÙeÙd—ÖTvÁ…Ë¿lÕ‰#Põ˜ábÝ�ÑE½Õ€T‰–F] uŠ�œ|ã_0!t“`v+Ê‚9Ä w—°eœ|Ðz›"&ksÀ™jk¿ý562î®÷í”ÇçMf»ÐyQ¥ ±•õ7‹Woîk ¥vh‘U‘cq¨«0¢WCruI¤¤oÖt™¯`MAf6ÍXŠž¡Bà]c­W¾÷@»gà8 ;kuÿš?f^¥ ¨\f ­G¢’›­>¦ŸK&†«Ò�#…Ìú©—-üÍ” Æ9LF1¶-¿Ÿ¡âåý‚¿±–ò?,§÷p†4*1Ò,k‘sdã%ýT͡٠û§)ÃÐßɵ۩°œð–¾¸“áО—™þ‹Ö òhÝ€3¹FÒa,–ÆÍ�¾f}©uP] Þr&Š;Žú{ö{UE“5¤¡µK^Pú¥ÝÎó/~ªLx'> ±9Æ+¤}ú )ˆhÕñ©\$ -’ïL±M>¿K:ÝxóojÔ”"óHhûv·µër/2ȧk>˜qÉSœ�vXÖv2m8¶»û_íFñ ë+Bâ]_xoÿ“Âà‰‡eðž~š¿!x^Ñ_.+’NV"+¤ß" 47-�ÉÆ[ŒÑGˆÐ^†Öáªæ8N·´È£wh ÑC VFwx¾tͦ±×å…Ý#Tñ×ßèÂ~À£þm^wxÛºü[‡Ó»§5Î*Ü3‚ª;p ÍwëÔB+íf`;Øç³±M˜kp$õ÷Ø«ê5ºv€Õ\è°�F°-–ëù`¤*­EY™Œ¶‡wd·ó­SÎJCó/=ñra033�’ì]Äö™Ûi <>mXÛderb¬žÛX‡§¬YŸãOâeFÎxÖÕ ²±®W#®ô¬TA _ÕY{]Ä„�·‚%’v8ÆêÔ×C¶NM‡|=5·.ÞF*ñi‘糿øÇˆ*†u9­Þ“ÌöÅgG†| ý.‰ÕÍœ†€U‘xEV›p éþù×L^@Ì«~„ÅÖŠ¨½Î«}ö‰”ç2Ìxñ�!{%¸1”OAìk* wAq³u­ï‡ZÁêVtjQK¬°2×"^ÉÞïcI¬¡Ú¡ÞoREBC³c0”]ö¦Å+Þt¨cò—�çýtk$¼N·GÂÕss‹4ÂVß àœÖ4ø‡¡9 +k�$=´g2êWÈ»÷̨^u¬¼`DËÆùóh ðT>�b†´—Eƒ~ŽÆQþ¼à{ì§b¯ß §DITB_=t‰mÈÏÂAhâ>f˜dà}�…~Ð4@Ë-`Ó7”h-~Yʯšj‘õpŠºsŒ¡˜ê‰ ˜;E“”@¢,aä7³Õp ÝjVªù,$À-(˜ø"ÚöLDÈ¢Šœ†ÖŒÑ©Èƒ0¬Øü˜öÁ¯{”GÿÝþ�vD?¸-+Îog죟nz@rþi'Êwwó—ïÇ-X�*ºÜÝ-_FJï@¨âZ~º®þF32ù– ýæ Æy‹HíøÙ]ÉQ–З®±@;®H�«ºyA’j’2†FÚ�Gìc`óøÞgê)TA ó€’]ƒX„P %RJoSPKÖg_Pì<í�õ^jCûü+Œ}º‹�ÒFÐÅ�¤o‰•¼”2¹o6ýœÒä¥+:ØoaR„rµ/•ìÏOII×…ÇXÿpÐ�þ‹2ถÆ-<Ó—ÌZ�öa0ÅáKýòôP­5šÝäF5Û]ú»#›ì©n?æ´zEÌÊ oVÊ4˜gH·ÆL! ¬ÿ!ã�7u·÷xÓtº´%H�VÂ~KÛêð›t«èˆ�‘…[QUw@09ÀÁ™•׎ž4÷´b·"FÅ—²vü0ɾþJ’ÁKY§K¡¡kV&5žh“Ù5b¼þžÓ· —>XÎh9þú«JcÞý~PË5œ™® ç mDÞæ_Û·+§™2¨ÅßÜßk4— ½Ñ} ÑÔu$šUÚä—cÔ}Üž´+l“w½Ýv•Òø�"µ[¼ú•ln¢Ø¯Çvx×ßܺ†£™nm]’jíÙg´¶áÕ­�{-(æ cPº¶f¤5–.ц4³V%P]Å%X˜6½Sl$VÛ†{zµ¾¿ØaÍÛwàm#T­Âè|ÇxÍ¿¥µóœ”ˆM7â ßó;¥Ö2�T`�¨×ÙaV48¡TšnHõ¿sªkœ^¤¦vv·gÿ<<ü{Æ‡Ž€1è©~V2i9iB]ì¨q‡55Sƒ°Ùµ9ŽÑ'ÌiyÈ©²sÛ†�„Ý5í'Ïí8Ï ¶I¸¹wÔ �]’ö‘ÒO�æòQöQiÛ�^š?èI*ãB•á[;y9aŽ´ð&‹w‚Æ÷”Ì•šiS­�å2·[»tq^iKo“wÉ«µÍ6ñ¡µ’‰øÐÙˆ?ÏHÜõÙ„©JÎõ32V;5™­éR�ëì~�¥¥Êò–šMGËf<1iBˆ‡´bÑ;]`Ƴƒ\  lýXç €b¾Ãs0Œ)PW ¼L’¼³$ÆênmôΨÎr™ÞòÖ°~ÄF�*e¨œQ`½?þ ÛÖçwƒÇ›«nu—ï} C�˽P¹3ÈýK)uÒx­þ®onMÓ†ÿQíM –›—K Æî²³,G~=a»�?.�1ÛµS7a4ê”279· ÑS 4;(¡å©Š õ`·fwæ ,YÖ‚/œ‡—‚˜ZUŸ­9N«~èÓÃKm�7M9¢õº=P'M{6fÚ…~?[Ýef`Ù%_ÑSZµÞ»Àþ6Þ„·OM¥/h¿EOû-í(ãGv¿HJ‰Â;€øSÑ4;ö„Ù\—¸ÿ©~X�BÉûÁlœ¬–v UôÔËN>TU ï•(\¹ïÉjhìªDÍ«•v;ÝŸ’™ÛŠoêÆTHå®VÕ¼„íZ•‰Éèh ëfù eá]±T^ºÏ£§x'˜[öá`Þëj~{ ¾;°e¨O; [LU‚Ÿ Y*䫳Ïèûø1�¾)û‚lÝT˜Ê^›»t\Ñӳƛ‰ÀÌ[K!lNZSÉ4FwhÇQT2ªD¾êCœ·ØcÙº½ÎƒÒß•y`•°Ó£ m÷îù ³ätlgdðjï ðLŸz™0÷GGÞmRIé¥OwáÑ]ÝE'Ýn»ØDå‡x�oîPí·Ïá¢æç&xTµÓšJº@ < ¨sïÈX”9D! ÆYpšð*ÚS†W}± ‚5u@²—dÞ…+^xFÒYzƒÙ«UÆlq #—ä}ò°å,`ã‰IÌÖ{q³ÎßßêÇ|ì+,‡|ƒeç™¶¼xCwWØ›¼»}†ðŽ�ïCú}i†.ዪ*ïUyÑrgŸè‰²A­€/p¨‹9w‚þ�FÅlq{ó³†àµaOž˜[‹9û^­¿@“SýÓ¾!aõ“'°¥©ÁYëÉS®fë¦:½^ÎÀO^EæRÁܶî.U7Š^£Õ‚îÌæ(jÃKǃ%6ž—eϪº-½s>5­èeàQÚËB¥I;~Û5%#vó?Øçó§¯Ož¾9™ž¼9ûáäì§×ÓgÏ_�ý4ýáìí·ð€ÝÛ¬x¿Á;WkðDo±‹Òê„ÖKŒQ ‚hn»"-B#2÷ðc\„vÐ暑ÉOÖÀgÊxmé5×¥Æzzòòéñó×ç‰öê-jkSmû·´Õ–æÞÒTÛû;Ù^vuÁI|eÊ|ZCDØ:ÃP‚ºõà¥Èû­i~�“©±2"ÉOMÙa*7ÑØ´;'•’B¾OÖê…û´=J®à̧ݭ©ü|ª tyóÉœ%¡b_XÄ8F+0Rò»ÂCì#k< Yq…àÔ]¿×|Å0”ùǵugØÆ@ln×/­ÐžY œM`�“„ßBX�™£�æ6U�ø· �då(ø§ÓëöŽu3ç1t ‚ÏÜ‘Ÿ7�ªÉŽÜ®îz¬HÜn… ÒÀër>ø¬‡�M_"ÞN’�Ó 0†O~¿/f†N7šM¹(çV Òã;„'ˆ…ID�›Iï�‰ AI#¹n‚æ¡È)ß÷UER¯eÐ>ÝÓЭHa­Rå¢ ë8íÔÅÕøÑÀ˜ô•fÔ(IýýÛ'ýC©Bæ·Î[ð¼Øïã3¯ô�ûû5c\ó<æÄO½ïÚòa^LÇ}G-º/p¨ [ÎaÖ¯àŸ[õÏèêèÖ[zJf€¿>ܺžž­Æ—å||™—S4Ç�»Ì3än¥Ð¤8íÕ']«ï£#ÛÀ/XÕ È¹\ºéc’‘X��ïOpɺ ·p®íöVËmŸ*N²¯À|su”fåœÏ—«ñL§«'QKþQˆt¥Ÿä^ºµoIàAþà9æsxŠ©?OÁÞùÎþ 9ü‘ž=m«8T£b¨³Ž�‹‹É÷A¼P;²'²5Í1Èù Úy'eIÖ„jxE°Çõš ÿÖØ«ôÖO<DÔ�x(ˆdÒ¨ ¥‘#C™÷!�5LÆã°)K‹ò`—U9*9uõd\ÐmØžI³¿ ~Ï„~î H¤/Üý“Ù�ñ#—ÚÓ߯— £×Ä&€h�xgâv; ×6+/5·gJÙx3ËF^Ñïµ�ÒÇë6BÎa7y0¢{‹ï*ŠauSk¶ôÊeÁóú„ &là†s.ò„ñ÷ä 0/çÕ£ñø |­»¿¦È U‡œ(Ç&¨=˜t¬ãralÊpå}åk½©ÃÂë—àèí›ÐC0pÿ�¯h‚�O£±Àlú¶]£ŠPZ©”Xoq,…U´`»)Î2¦-YkÀÀMÔû{zÙ8‹`C°ÔbÀ¦,ãA/ÍdoåX:²ÙéÏ)¬W³ ´ŸçØ_„»b+à+ž#Cû§Ž¡T þ£ñ12òÈKÅÅ^Z²µ­&�AïY’Üb}St²s/¶ÛÓ�{¬�ŽwÎÇ×�ñœ›uùòá@Ä_EäÃçå_î«JWzoÀ";ç»×r´>££UíVw"dÈó¡`R™)8dÇz Ð*©nY€c ( �éi�†*Ä*‰•3CÂ}WQ •¦„©¸Ó.¹0ÈáQ4nÔB&ÞŒìÞþ¾u09|Á¸‹\Oõ2£—»Îð™`“ÃÌ%KîÂ};€Œ�ø/?V„ ¡Mó7üxñnåíjÎòP¨ £4Vhã-`52ÉÁ“ âÆå?»¢·g½e•‘Öé2„WÜãç4âo$½-Œ× Ë¿1µckqô2µKÀˆ SÐÖ±EpôöGþ,wPÔéa*iè><ØŸØS;›á®·›á"kul¨;DZ–º­Ä°è;À¬­W[+Ú±Sfç‡Ú ¯e{ad0å–Á¾¼ù¯´dž±ÜIQ/VJí,q÷7æÃ�”,�KkP$ýAf ýTñ)c#ý±—Ûùd!£’eU ¹Æ&ªŒMHçèa¸ † Å`N”"¹V±&Q¤x¨i�¨ˆ ‘¢¦“©Hÿ=æ*Khx^ôò½Í6\/lQžF)³>ã$ŠÝc�Nsº˜Ü]”å~L _�‘¹}ýGIð™Àxí9D)>’;¼›ë'¨ÞWW¢ëUô;ü7)øIP¦?aŠ�3(þ„ª%‹ŠÔ5x-XƒŒ©òHs0ÜØ¯IÁuE™û£PìœAñÇš¯,%Öœ•¬˜YIô”aY˜§B+9 M¥l'¥Ê�áÿMºBÆÍ2çi,eæýt!Óf_.3ÿ7Ü�À®Yfæÿ¬0»h™™ÿéº -eæÿ¦|~Ð'"ž˜uÁ…N´xw:ÅG¥GÞ®+Eîï.¯�ýíÔ�LÜýO¼%\“åè²oð‚³¼jÕ—®@v;)n› m¢e¼§kÕ)r©®+wpè:¼dš¶›]U…i+nª7˹¸©¾þ¯qÄÀ=uÚv’vR/~é¹^®¶ÖºŠKÕõ ôŽúý¶x^ÔE=ñ¯~M±Y1¥µ¹:zßµÕb.>ßÜ®*óg` ÖC/ÍÞ8ܪÖ¼Ú´ôzvCð².˾A� Z? éE‰¤Ü¨DË’KO›*'_•ŸÍÁѼæqº\Ÿ*¡�zŒÀðD7ó¨¦NCß.ôã­DÌIú2ðE±Žšx€WGPâ&oòN⯳çÂB‘ð®÷;#ÿ¶½2ÈG.4ð3»¼§kç–øá ³�1ü—Õ–µ±0ÆRE£vøÑ5ø‚?œ$HgŽØ<4�•íðSõó¯5ï·íb ‹$ìfùÇ©ãØ.IÑ‹bš¨>Bg29ß¿ ‡IÀ‰ l�<^SmMµ�!�áq3º,¿QXz#�ëÅ]WþyÊUê¬_êÿ3wþ?ó‡øÿ¸o¶±÷vÚ+�v0ujýíPKÒV1]¢ÓúÃfo[imunify-security/assets/ui-app/assets/static/shared-dependencies/select.min.4eb32d6c484a.jsUT ëÆ«jëÆ«jux 臼< wÛ6’Eæëó’ ¬ÚÙíÝ>éX¯"Û‰šØrmÇiëós)–S¤J‚vIÿýfðE‚¤d·Ý½}»kq0 ƒù�ËEÆé¬�Ò ƒ©{ãü+ˆ'y¤ß�Çï’GšFÁÂ!%p2›%± Iiù{%D›î“t¶wÏhZt`Àlœ&QÄâIµ!88XTa#²*lœÐtÌ* xÑ1‡–¬Úô@ã$¤9D@úå³þó]2§iÀ“ÔB bÓdo‰{ŸÇb —zK'Ïh+ã)s§û¤-N HL2’’ˆ$dLB2%s2#9™�;rO䑌HŸ ÉùBÈ%�SÒ#䈓+rBÎÉrM>‘Ïä yOÎÈïä-ùJ~"¿�wägò‘üJ¾!?J §„QPS’Q’RQ’ÐnJyžÆËŒrX‹¬sSæ˜û´ÝúIƒ¨h8”«O˜„«ÏaÊ&,&�´¡AAO“0‡²²&eÚ) GHG¨�Ķ1hÄŸå"]%4&c?Ò˜ÏòKB BÛG,E¬Gü=œ#zÝ~\Òèþô8”s*Úæ96]3úÔŸ²(Ä®9—@àižÄ0ŒB8ŽÇÁ<ƒåEÒØ>…Õ¦G”KÞ.9¨�,DϘC?A1¥qŸg“¦©Na^3ö…ÅG, F½`ó9o®ÁWÁh‡ô ™UC’kÈqš&é%NȤrð»q’ÇümšäóÁˆFÙ zL¥ˆÈ=bL(—Ÿ—b£�'� h< TyįÞÕÝðüêíÅðã9€Áðìî¼wq|vuמžÏàé—»+UJØæRDO†§w'ƒãG„’/²× ì¿4(Oà”ÑT7ØýÏ}¡ØRaR4²Û?@û4È …�eM�7r�Ûçìêø‚|ÂÎç½þ1ùŒó oàÿ�†ŸÎîzÃOä=|~LìÞ=Ø¥»»nØþß|ÿõ/ÿTg†éìî'9Ø÷ˆ�ÇéîT¡ª÷qºžG^ï‚%kÔ·cè.l Pñºv[>°�êÔ{}ÒyFæÑžGÁ˜N“(¤©·^›9ÎÿÔÿñœãë¿0Iµ¢°�rZžåLÍRLÑ&2Oå!a~ûäÆù6ž\Š]Ò2 ¶xšSçÖ+ˆåJd ÜÏæ‚í2§ä590¨¯7¢¾&3 ˆ@5žì�¥c„ÿ�(×\YM×ÑqÈÎXÖ<ãÉìJŠº:²^¬ÚêÔ¤|wöË 5±d»‰kð¹ý<OÂ1¸¨13 ¢ÓËë·n•ÓøîêôC­µºx!{ù~Oþ«ŠaxC€ïüK˜9ŒoÏÑ‚´Cˆ|œRä Ó±»¦˜RÁ»±HlëÊÈ ³U£C¥XûNX¯#º'ãg�2Oi0k#!—·y"BÏ[{žë@„&Oñÿ?›àGˆ¾—ÃØÈN]SôŽ„]±Mµ× &R¹ÇQ�eàKöãÀu@p{³p¼—‰°`OÈ´…2ßËòô§ØÛÕŽ[‘á Ð‚«)° êå8Û6B¹À~b$ñåÕ lP6Mž0…«í6�» ‘ _9’msíÍòˆ39!ŒÞK€ >Ö(ƶ؀_"Ð]­â<Ьvˆ•G kŽ=�-šÀÒ¬×r!îÀ�ÞÜi*IW{KœoÁáÞ£Ãmh—­ ðüb1dxÖ+2B²´eó) æÈu°Cnhø¶åÿÐzLP<1m�íMËtK–‰J{:;û ’·±�¾)%툺@"3¾èì};N6"´ñ­ýö?=µ=P��1½°ì¸ÎÁëýYÖç#6Þѯs‚ jáÛ¯IëÀ³G9hå@Œ!)M]�ßGò‹i�VÆ.àâ¼nDyë‘úûj·�ÄBlޱP¦O­Ä-/¥,8ìe*§s<¯ˆ¨úTd®ÂJ¸žÿ„z[%€Œf�EÌU û[r1¬rÑž� ÞšÁë- €§gX7á!èlÉGÒΈB$8‡>»%yFO‚1ÀE§O×ùR¥w1ü[쮹Ðêª<#N\X™Ö•*Í‘žtp|ʲv–ä�£@Ž%¾1jñùzMKÄdàí�c�/©?uçîÌÍ]A¾J[ÖDÔwÊ\B楇¹ƒ”!P¤»0ØxJSŸ+„y€®CŸÕ@"ö  &³I?–ÄKž3óÓuKKb@[`Œ!×Ë`K°#­û ¶\iEKާÀ«•öÛŒìû”BÙj¿RÓ:« R-“P ¥Ì·ô˜ž*¥¿ç,­ó§á‡‡¶ÛcýRG“ȹoÛº‡wx¸s x3´ câ_l;cÚ„WÓp1‚A2#dV¾Kì>bXA=”ÅY}èSô‘`¥ªc5c‰‘70|4· Œ“ªæ­ÕQKMb¨2ª¡_½·ç¾»+¡,cëô•šZ€±Ø�ÕÑPŒ+›Íˆ Þl_+ ¦“k§çÅsLiÑQV‘ŠøHUÇÙˆ(ÆÞLÆð³Å?Ñ̰šZ³P�g%�d¡Oõ6ÌY¸Y+Í�)͚¬·ÌrˆÜš±)TŠ~÷â?ڌ歹ٮó”>²$ÏÔlp"ÚÁŽH¯÷Íì*È»»Ò.@å5Bˆ×ÌoÝ­hs­ïR7³gì ^B>‡4€—+Vq¨Í8F[.5TW+ÚÏ)$‰gc¨.¸*¨lÚºt›…“<>˜�T‡´Ÿ ¤AÇÜC ÏYDÉû‘Ôi³Y j‡íP·Ù±�mh4£ªˆrê6™¦j#8#¤'i2®6O&‘Ù¦E&fÂu¹Êբׂò�N‚x(¾�fóy´ÄET3|ŠišMÙÜ6�20T¹*ÉwIʾ‚Ñ0e°ADñJÛÑaÊ&ÓþÇûIŠGïrF½M¤Ъmï­·°Y± ›v­”MÆÝ¿�’pÑú¡Õ‡{* ‡ š­YEŽX†üÍCëÎ^†C]m&~ûf©=“,BþfLCáÍwwOÝ:”ÈÝž',vÒrp�KèF‚ùC¬5Q%¼�“~ïî ýôµ×� ÊוSŸêú¯V•°P­�ì…€¢g§ÜÔ‰IÑè­74˜@†¶aÛõaz„ù8}³ZáŸ÷òÏ™üó; DãµüüDb¿ºe…ý‹Û,§)*c»»ÁîîÎKÏF¯'zó Â8�˜ù®EÌ�dë–Ò7×ëÒ(£-cª:¡"1½2ÝÒÆb–æˆÎFbàï!¦aÚí[U�v ~¹¬Xdr@ÿá­×� P‰ ‘ˆKmZº�ϤtñÏ{`IV(¼•R‰e“H”Q52‰�LäÄ>­V;¼ˆDNg«Jß £§ªå=€�Ï8昧º¬�Úµ¦¦#û,™Q•Ü–BÂj »ÎêPΖÔÒòÃ"ÑèX †õ8Í¥YÂÒÌD*ØåÖZ“ê…@!¸G‘b8[ô·¿5¥%°Þþ×,q^ !ý¦%zIgp'Xr7lù¢H´¿Ñ¸ *o¢<5þµZY²bÏ1Þ?U&¼je*F¶m�á¤ä"ÿª;C"HrÚ'ÊÐêÌ¢>â*WP°ä³)?¬sŠß:0¡©¢‹I;å<ÂÑQµªÇÒUÿh•KÃâÜ7ËÆFÈ£$]ÿÖqáä„7+¼A“#ÑÕãŠ{aÙ±ì»nÎt—çÔ± ]W–D�Àu›OÁF–äR«Ý©3´†ÊPQ<àf�7 éœK}·Ä(Ǧ޴ðíM&·<Är³\âͶÌ-jkÕZF³z9‹ÍM½^š �™ø‹ûŸZƒ”‰É\¢à®+I¹fʨVlys÷.?¬¬2Ÿí™ýïrå˜KÛêùN{�½½h§­7ð¶l´Ø÷,]—ƒ–˜àª¦{—: 䞊Åvº<]è�!+\êŽv'å£&ÕIÁzŒç§ÅÁöΞyšHLwnŒ®\ÌkÖ•èÛ„V¥�L µPŒªZ˜4VÉ¢¼IoË„ãU¬»ì�ÍÏS²± ÕuÉÛXÐu­.W«ˆÂã…ʼn÷k ýš¦±R"ïO¥KªÓ "ŸPÜ€s`öãü]ªô¢(y™�¾ó›¹7Žv«Î-hK>Jºe˜WÏïx0æ¼Ù¶—sÅ�ʶ¯²|úæÆMîXrv/²cÍ2E¹-7ø¤ãÅDtö$ŠÛr·‰¸ýµ…a“¬Vû:¼¯š‘"–ÞÙB¥Áæ¼ DA³n×_MöÎ¶êªÆk—¯¬à¯z>cjÒ´^‡ÖQ‡ìãRu/qe3šŠžý qg£ŠÔ jY­k,§¬Yyä]Ùë�ÛØÄýL6¹Óböx'ÆJ_¶˜lðIÒ<Óv£YNBH_x`¼RsØClíòW¯JÅZÝ|³ÅËäÒ¥4xX¯ŸÝu2W}mËþµ.�€9°Óš’•ݱrJµg}AÎð‡ýµÜÚ´~¯RŠ×xë�wk�ðÍ=¯©ví’a5¡C©Š>‘Üúô�¾rZ9V½0°Æ<䯠*xDöª�·*ie5>Ø~U8êz¶Qrâ,ìˆzû–“Ο¤ºR�ÝB\Þ«Ò†„[¤‡&ÿ•½š„(bþ†Ãq­(Öõ ±©A5°Œ^B¡WTéÚá3 ÖpþjbòV·, ·s/e#­æsÚ29o &I õ#&Nªë±§:�Eùi’G¡�ÐI”U]*„;…½ÑŽ_Õƒ`[ê�Z¾йÁX/oÍßcßzI«Ôß9¬VêU^ô„úu¬|ë^Š7­æ®ZõR~=´ž» ›û|—3q+è9¼I»v‹÷yÒÇfaŸÃ=Öƒñb<ã òÏçz|Æq7½ÓÜ&.^?Ûëée,è7®õÇxL •”r3ÔÞVT鎞]�£ö‡riý9ô!Î⎺‚â]ÆJ_z{ÉÊ]bâÜP‚5ûŸðYeñ.’BÈ´éqšAw!Óø¾ÊaÑnmåШž• ‡_y[#žy‚zAV5u«�r`w‡’Š(V0ýfO¼BM3^õ�vâßCªT¯5×kÂ0Ë:ˆ �›Ëê4 :·¤xðÓqŠß)Y.h(>¢/‡wýË!:í8ú—Cš/Bvœf¸CJE­ŽSúpˆ RñÇ!Æ…éiªWCŽi€iU‚…›úUÇF�>´jÂ:N ä��•¢Ž³±É!v~Ðqìo‡@<�/§Ö$ÿt¬kÙ÷vœò—C¬«”ºÀå ’ CñcÛÑ9 n”€ukéø¹§8%šunl5Ä †Ç0¢hžÄ'±¢êgÅå"…p»öÄË’;ó´ä�x9 úqÆ)]þQ_yJÿ’ý:¥JH þÛŒmŹ|µ“êº7æ!ÏŠïwŽ¿ˆ'ìg}ëiÔÞé�S#‚^ñ>e`?ÚÑ×ÖÛmˆå&9:ÐL…1bû~b!Ÿ6^MÞÝ­ÜF³›KÝŸiï8AΧrÖ“ù7ËDü "?ƒŠáÃU‡Èï_:Î(á<™@Ú²† Oæ o ˜ýV²}c÷*ؾmx=@Ù 6=ÃÜ FÐi §•�*lþÑanÍE­�^‚EÅÑÔ …^uɸ~}[—â>º]4öñ|¹š6•Jî/ˆ‘·†ÈÕ¹ —. o€¦§ª êz/¹pÛ\çVå ¹8å�ƒÿ˜J ZÜõ¼�`þùùïål.hTJ�¢Ôh]ú«d}åK¥ 5§Š˜)Vÿ]‰ïšZË_ž¡\Éû–—7êò™Ä¶J¿ÍÕº¦êüÿµvµ½mÛ@øû~… `¨ Hž�ÄM#Á(’~Xl@ц dKN´(–!)qRÇÿ}wÇW‰¤ì&mÚT&�<Š<ïŽäc×fš Ó]fWtX©§¥qm{ˆA2»d­óÑú²ùñpþ¬¡þø\Ö /‰gCø•Ðoåz6žÍf`ÃNà¿äã8ZV£r¹_2ñü9ÃXU •ƒg=‹B{–�qqdþµ{»n�­µ?§m™CŠ�Ð3m[¼2dýOœ'gô|‘“"iË�QG!£XPF”Žlº` ƒ&!SE/¢—�ÇɈt^B=\H"_F¥-ÏdËÅ}ŠG'¬o«|u�ãÆŽU¯¾ç"Äj“ Õ9$…Ñÿmö +“žpiÿw~X? ¨*e³“òÃUÉÂ7³Äѵw�NèÞCSx4år�Öaœ»sD½GÚ´7Û5y¡½ºµv™ð8Ï�1ç…ÞÌÜ9I{¹KEdg¯Wá�}ºEi‰ ˜ú«qLæuY€™7å:šÂÜ-²eCÁ„�xøء׊G²Yü1©°³¿‹jȧ:¯þrÛ£³^[ùï°bRÕ`ÚwIÉþØ’"½MÀëŠ@¸½)ÿïêfžh[B·ÂoH‡éèáTð&"�'*¬ajÄ;²Q õåÿ>y )ZyOÒ+­†ôx�¤Þް 㘫þ*Ió‡:B•e_äø²=˜‚› ÷ÜB‡L±C]º¾avö°x�,˜WÐe»‚ �æiÖÒìœÃÐ];K�×eUô…į̀°cUŽe΋€ÆÓµ·½{ÛÀÎnØ›Áóöµ„‘9£B![õ� �wB°É“ããѱücÀ4�ަ„ðLÒ¦O–¸nµ/' »=©“Gìé�Ò=–.˜U¬Úƒv#êªaƒ®(« ªÂêಢ]ÕìJ|´AW-–÷µíú#ý¡ÖuæƒEW•ƒy[oV ÷I]{+Ë·ìòº9¼.Vk�(Ø{1¸ªê€=�j@�AÔÇ©¶G1ŸÃö¸b]ÃßËb~]‚°qpÐsMY€6eP°ý<ÒºånLHå°½H©Ûùµ-´]©F—UÉÔÉÍWÜV¥XÆ\�8J<>�ªŠ‡’[—PTÜr§Za�Üðû*£I£Ñq…øoÜiŠé¸,Æ‚¡Ö�‘Š©¼®æ,&F T�T¶`-æÏ«9>N´>õž±Žî…>Q^)î-iQ¯X6æäùÅxEŒR<ÛUs|+ଅx*$Õ¬8®4XñæŠV]ßø²(Û[(ÌÁ »5Îëj­ëBv³UÒAKp®¸(Ö®Ðmj–QoI3 iZXĵX³rU³÷úgpYðŠ›X�[óÍ—]Õ\c©•œá�1!ö{P”n¸«°êùÒÁ•WÒ�ÐsWÍ‚›š[¦UB-Ô3Ç�â}c~0ǺåÙð�® ùÒÌc”\ñ_5ë p ~¸«Ä�$¨c+•q Kú`úsÄMMƒ^ÑÉÔG«–˜fÀ×Å„ßçÈ‚]ĪèUc?Î’™Ã�ŠêrÀ\H‹zj&u© øÐçlUðký3°®E–<—$ËZø«âý pHHðÖø~nR°Ìõ·Qì•[®n7Ž·&Wmú¶—Õ|Û«+¥êcP4ó¥Õ=j*2ˆ˜cûS²¡5¥K²¢›ÓÓùn§g{½AŠFÀ9jZ�%8¾¢Gi‘j!Ô”e6Æ6AôÏg'5iSb„SåKÊ%E:¾ìXq­Ô½ éFJKd£ÿVÔ–¤&K{¿Ê€˜f™îSXÕnWdë _&«d²¦k¤·f—àD´·&Š<|ˆa¼Î¹œn Vj Hc÷Y¨5ôÕiÏYÖ6ø r!5 ?=]'œèzÂRøŸ·Æ~Ù‚y‘ݾ…¯¸—¬=Ò‰a0}§û©ÂAWÝFõöÔh­Ö`”¦Ñ pDõ›jÅHE{=ž�§ÇN *V‚&3•J!,pŒ¬Ã-„ÒU×®.Ð…aM«¾ÄnÇ2<ÌL6Bí£´™07GÞ�*•™¤we! #elÙ£íéiÒ© Ò9¶K#zà±ßΆ°Í:ý²ÕæÐÄq˜ b9Ì9ÑÂô–½¼"Ž­Ž˜eç½^ë ìÎ 53i¨‘ªGƒ+Fed™’Æõ¼Bƒ ÄŒ9:i8^ÂQÉû¦÷ºn.1ñ×,’)ˆRÆÊ‰8¥³½ê¼ rsûhô®Àæ•}JÅÝšµW'e;ßàÒ'(¿Ü”2ó¡³`i♩w!Wk™.û¹-.dÙrØBi4ôú¥t¡†{Á…´)äí�Ü 78èÅn—\P/«‡vÁ1Ý‹™Nõ–í˶¼óbŸ¤»Ýv�sõ.T.óô´ÿ»Ì*=[¯YÑI@Z5'º6•¦OÐÞm’íÒóS•jü¾îÀéÚ€‚hNܸ¤'NO_¤˜kÕÓ÷ÏX6_Ý3‘ SÐî_��î9(V’ž™=¥n„½§S�[T¬t –5‹±” ›i±À}š¦»öF®ë¥ÑIèÃ�Ÿu]q'O%Ú¿0Óyc.ÚîY]Ã8éØù¨Ú׿ɴ™åSмºàüäÍöh"ÔË|âÆïWØBf’±jY–é(Uë×jì㬭7>jë^rk–¬+Œ`üIJŠÁ¨ ßíúý½JÃc�Í©KOdoE‚viv0Á ÏT&øª˜ÓCõÁ> œ˜7`Zû¬»ö†º þªCàäÉV´×¬Éߘöà.ã&Üè,Ñéó µÿm¡ ¤7°™r‡®·þô?¿|ùJ‚7r€ƒn×F~¦#öˆ<£}@™ p¬{% 5+0ry. ÚšöÉw´ŸùåŸdµ¾ß@\ô^5pg¾E©¡%h6«Kèlm—Qô6væHªRrþ¿É`2}›½-ggi²šðôܨhì“Ð~ûÉÃÉ0ÿ�€ ã컺-ÀOG³”ˆéÃYêNË_çú8 bÂüœ3׿ÇHuÀüåmcU¾_n4ðM'ÞÕEäLO&ù[~SÓ‰¦OÅàÃì KIv6y 5ðÏgç•´d•rtàñ$ÆRfÊ— ž˜[É5)¶T~—ZÓ úY&z¶f!ù�”¬.îà—ún9–qE�r)PŽÕ»TP>}4+‡] Ã{Øüó™575´ ˜Z¶´N÷¬FÌGòÙÓn•�3hköu\=¢ V\kX6–�‹óØàh“‘ß,¿ÈøZÚbN†—¯�©B¥…Ð!€ï7¦ÅjÇk¤ÐíÞªÇK™>É®Ùõvè˜2S>£ þ Äôìý_¾ã5ÈúƳV†$ŽX!h4ú/žq2ÑÇC 0½2oú‚¬“„ѧÈQ𢹷Ãüû#L*Sqù íÖYFa´ä1ƒñԇϜ¤ØÈÅø-ô|°ûSÀ‰3àŽ§jqP¸¢ë¸ªc©[øøÐ•þÜÃ0PiR+¾Šþ�gà1\8ÚP8=år̆è{Òi5K½o*@ÄnŽ—ÊŠ„3ðÔÛ ?`McÓ¿™Á© øÝÛ¡Qމx»–·@õ ÔŸ±©ÝŠ—©¢¿Aûq¥‡8=­‚­Ù6±9c€¬xpx†úð ÏjŽï厽f‹ï×I»}û–?@#•âÇ~�)ç¾,‘ƒ­Â_ƒÞc¯°žËÝsú}†WÁÈxª²47ãï3ðmâÄËtx9ý3–… @$†KAMÖ±u]À±ÿž$RŸtÀZQãCLJ+0#±$)3‚¡üõá˜Þ• lòʱõ™vtŽ–¹aïE¢TzŒáDunÁÙ F®)ñÚ«±~¥çpà'†ƒ¯géù‰ü�àЛEÿ ‹Î²ŒÁªÈ3D§¾Fþ+cCŸ»þx²þ�‘µ‰x3ÜLºis&OÄäÁ‡™ÝBa^ýè`„¢Qyd¯ÑÃxýÁkò(j".xõŸGõÏ4(t-G-죯Í«AÐé꿊ê_³+ÖEœ~}œ“ç˪.}ÁÄ’Óí`H¿U,?ùÂÁop ;Q¸-2ù•ÿP[Kì)ø\¾fpªð?!v‡x¶½Åhø¹BॆàéT˜È•1ÚàaA‰Â…C-SsM8tÝ"9cCàßó40i1«d`  ÆÓ¿•KÎé¤M®�¯Pÿ¦­ÊúôVÕ ›êX‡mLuÕÌ;®˜&rúÔ‡£©_b©îY²Oèù$ì%Cà3}¡,–âòA_b.±`ßÈÀ ·1¸P.Ù ¾‹6{gR-û`7¼½ìŠàÉdJ³§òÛÕ|vîÏf·k DÿÜÌÙØÑcűÝ€­Â¬&`M€¼ ‚LÍZÅ’Š´©C `{ »Æý'ýí`Ûw»cÓ¥…€.•rP°D3€¶V¯’3êÞêˆnƒYáQ@@ãW\€X¡fd{«H•¹Œ¤_mÌ'f„Ô·pdlÚ:ã˜ZÊp-»üT¤ B•à§3qO xåô´Ù¶ —ÞfVXWË@nçOIzs¬W½ ÚM,¹e/%0U±×2êàçœÕW}Ò2ü—?ø lÁNçä¿(˜Ë”úO¤Ð:d—méĪ(¶fJŽÝFæ#ðQ†³ïJ·R¶W}"¯�C. TµîGcÔà �´EoªårnüO‚ÍÉïrƒÒýÇ»+,›o:ÌNüâ'M0 5m�Emû\rþ F"MèbröÄŽŠÙG@9�ÿ”š¥àƒP¹šçø<bAÄ}%[ë¢=;S<9Κ~#[ x/—¤Â`ˆá¼ìhÓÁ2™£�¾—‡è3S/a€üCœVã˜â!�¬ŒH}ܸoUè\)fåô€�G# ݰÑaåU2ŠYÌg;{èE<æg´òäK,ñ’N›³Þ#¾/ j&[œ6ÿ’ G¹?Áì ã˜i¶Ssˆ5Ýœ9'f¼!íZµ�ÙϽ·àÀÖøÒ�.WÅ(ùÖS�rzj?m¬`îƒxfòrßÞ£Õ\©©š¶h�1ÂP}Ô4áVažÔ�0qÖ ÁoAD‹”îX4ReEYb¶/ÕÿÀÞãÕcºý,©Jæ_Çá6$ZÎv;¾’Û°EúrO†ÑžÀ*@îVØ“­OÞì}ÉGÚ²�Žâ‘ƒÈ©3.™}þ›kó;#¢2¦Ïqk! ZwĬ+%¶#ðè)Š?½ÓÇ…]ÏÇÔ…Ôh‘�Ì„SÌ<y°5ÏQ‰à×&ôJTLÿѱÖ5Ô·ncusâ¬U<Õ6hN¹mèñ`ƒ6úS!–Ðõ=îA?P/< ‡lôá|¤[}tAÏlÆXÜ%á8|,EèR›Ç3ŸÆ+nX"3�ifú’!� soͧ>xÆZž�¥äíŠI¹õ·ÒÎ{&>¤àA0 `æªÑÇ6$(Õá§½¡L|tò•‚Ä-üQÚÚ±ã·q¬Â'æÎàWåÎmeBºîôYe2ÇvC´t•ë—)ë;óX�OÌGΓí^¢Êǃ”M÷�¹ Ð:ämô6 `do$óŒ]ºmñVÈÈ ša€ÓŸÔ.̨} EgÔ­ýL¯ÝBÒØ&KžŠ¬â/VkqwZG�Òbëg,¼\SÊú9ѲÇ lVuÜAè›�ÈA¼[×êZäW×.ölÈêàj›HÿÁ÷‡ý¼x –å®´¬S·oSó53i¼v‚H5=æQÌ£Xlžßãe啼Åð2q©õ¦7ÂhÁ»±</‡.JÞ¤¯¶»ŸJ ­®v-M""˜ƒ9ê.5yË�‹bÎ5Égı¾Ûm?}J‡pêQåMþÞ†/ˆÑw›‚&ê5^ðËrÔYŽÕápK�åPå´yT¶94á&ª§˜q¯çì)àêØ´i${³ßöê—è@ƨ6�Úá”j–wíGñ7¾!P¯C´…)P¶ø€ êѹ¥m&Ÿ] ÿ=�2kJUJ"á5%¶™#uóž´ Ó‚^s žžv:9½µd8ªz&“‰\StVRÞȲû§Ôå±Q8ŒÁöKCwÏ»‹ c§k¤¯Mø�§ÖYL}ÊàOa+—‡nüïÌ�z3¤nޏVí‰ùÈý[ÖãÙc/o«/ú œ�óé)û# m€yüäÅ,cAý;°ð‘Æ0ç± Aþg²Ùa‹ÇS²„] Òàm[svF–VδÆÓîvË'Cøót.®ÃR{º4qÖ,¥½/Z)CLº{<Ô·tZIæVIôÍnÛ¸mИ4Oæ“{FÑöJ8ËɆŽÎ“ùÀ�»¢P"ëÈh•÷™8rGKk´Œ¤–�!j|C´y:œ4”®&£|ó É«iƒ)©îÁÝ8„•ë³RÀ³–¸ ÀÑßãa™zâ£w¤#6¢ÒÞOF´û(u|€Ø¿ò"„ûâ�OÁ·*åìçt]0º£&ûúSF¤ô›`5Ÿy s,ÿÇ¿˜ G¼YàüøWÆ­~Ô‹ {Qýô`Z‘n<ó0×8½Þ±<4xviW¼tˆD" ên`Z†0Ûál¯êü›·Îä»Ô§Üž üî¬?è{ˆR¯Yn_W@ã÷)™‚8fˆ¸¹q‰ãã2¡æôMøYÿ¤V�sºKœ-¹O¢:e56ÏLÿ&Æ=‰d,í}œi-dVÌÕpjEÞdòw·jÕ(ê¼×k2S U3¯7%ƒÁ® 9]ø$ßûµ™'wBúx”¬/Gt¸ï³Œ™å£ñ‘oï8í_Árñ‰‰�„&{q![ïó�N¤7ŒÒ?åà›˜�GàP§Z—ÇS­jJÊ”å óHq©U6VЦHô6{uþîÇd«ÕÇ¡`F™.Õ¤{²¯²R¯ÞaÓðÍzÝvÐáùÅ…Û+Æ¿ÃÿRÔ$¼¼û®¹LÿÊÿÛžä œÒ×0tFM†ê“&ú=%|§“×2§s§9†›Ä»ÊßDïÔœ~0­Âè÷ØYÙ¤º~Ä&W&!ihw‰{{mÿËfAÖ�{Ňê±n¹ð 9ò&ƽ�­ÎÜ Â7—HÄøya4kj–Éá:4ƒý¼k[Ÿ)ún7�í‹õ€s��š�Á°;šz1‚¡)¢%y4³,é^]�Î¥èÀ3+&3M1epÛa. åE¹‹êô«¹ðä*Ø/«œ­ý’¯Õ‘qͤ´) sCáÿ>kW2_°íß7–SÔ´Vïù×Ìb3¥ò²Kýµ}ksÜF’à÷û"cB˜Ý<Ïí‡nÃ}–DÙòÈ’-i×;ÃU0šMPÄŠDÓ P2Mâ¿oeVfVf¡rön'£&P¨gV¾øÉyq~^rwVÔôº\y>gù<£_Ž7s Õ¥`ð¯^£u ºÊ®óbØÄ˜¿®ÙÑözˆ»F„ñVyAx­-ÖŠ×܈_;ùc8=õ¶8:‚È—â³!%2j!DÑ–ÜâÉÁ¢u²ù¢}ò$èú.ÁÕ Ì™ìü>ù­;u–ÞÁ«Øa^ÈV𦹸áÕÑÊr`ùÕB7Ã…2ÏóX^ŠUÅ€NZ—àDàd>ÿ߬¸v,�ž ÓÑÀr�Vh�qƒ�Årý%]i4#xyœ6wÚx$­Ýæ8v÷ú„lDŠÂÆ„ͼoé¢û©ÛqÁï«h¤¯…ñQ‘Ÿ—M·y]}Ꮃ-¨î®(�8·—UšaUÜäøÜíøH9ñúo]ܺþŸÃUpg/ÝŠRó³HŠû¸ch2>…vj_áËh#FçJT . �é#íeêÀIZÏZÅ6ÔåPÁ½¬æÏ3pÓr_xЏ\:"(ÚØR‹+j‡xûôá›ø‹I ¾¤c`’æðVøÃÓåbZjcmÖ\«g;è#)Üx‚¥&ü~#'SÎÆf‘О�Ø×$žnÿú $È7W´LààÊæ+G¥ß€Ì '€GþŽ•�ÊVC#™ƒ¯A-¶Äš¦º†ÔªÝª¦.Žß~î%¿ý'웹£Îz‘fuÕžoºgþ9£ÝÂ~_WLDªòyÆ#-šö;`ÕÈÕùúÔÅÕ€2p8+¼W~.ï7Œ¾qVÑ.çøÆ©­;Ä„¥�4t½Iã0ÃôHü`¶ü›{�f Ä7¾ä ³[ˆ4÷b3�ň·´"/}LÃ�¸„äAü×3+5 ôzmR(ÔÓSR”A�ÌiÚ-Ÿ�jŒN^e츻ü,.ôG@�s­ÁøæYtb¹˜5gKÖ¸!sÔ  É//,Ȥy‘€0Fâ¨Ow8x+¨`?}Ws“¨[ü‡hñÊ/SF¾ÚMbž‡±º¢¢Þ$Vã´Çne^LšàF°hÂÖïŠÞ©ÈÒ²Ó€Ó¹“@ô^A4CŸtƒ_VÛÓ~š�¤Êð§ ‘zþ—»ŸÊ¸lýbå�»póV1¢b­ƒ–¡ ,ZzÍ#Öˆ1Uk  ÐÖŠ&ÛÉ@¶eëlK?FŒMáÎyýêÝÝÌ}K»é�å+‡€¶©ýàýLnËv „z DC6ÛiT³W��”4ÉOGŠPt‹gDß$ý_@¼R^ôo�ÏŽÇ™€` ž|0½î†ôÚÛ›ÚE 2*w›Òv‚=Ró¹G¨2, ØVtƒ…Q·«ß{šŽr£í+o^Ú(;AëíöS¨Ð,B‹QÂØâ!�h…Þ™CZ—âø6y‚tެ„dMÛÅ6ÐåmqaÁ\­xV¤¶p6à[4—&dòÒ¬R×lŒ¬Œbn¥Ú 7ȇ?Ó1¥pdK2H³:i�™Â¦¡,±OØ4½ý*±� òG]};[W[ô/ggï­.Ï`ÁEwÀœtàï9ÜÌêb­cj‰¹ÄQï°Í_Ì+ìL¨ûXÄÒ>ŠŒb�5¢?K��s%ZXñ?ð\<=”}9Tµá‡Ž@:Æ#±ˆ-tHg‡ˆ’K€ölsèbGÈj÷OQiHóÞ!ýñzsuûô2Þ?WÏ$X0óÃÆZH‘i/ô¬»Ø)û¨úPvîÿúà_ûÈa˜±#€6ÑŠ¤³çd"ì`lá©IÞÐäýLÞN½cÑÍLÂ5¬ïèd«£"ûì5\Ì¢ž’ Ò\q-×ÕÏÛœ£{ÁÆP÷9}Í£¦þ†§/~QG˜ ±z Éìíu?JÆ#»JkÅ(d|ÿ `TytpØ%9P?­�3Pk�ºe7±“×n¡¡”e;ŸAö#‘ïîöìŸ#`×™uÄNç~;ümìt…WÆ4“˜jÈ Â žuðŒv´q½žÙø›8‘™’ Dƒé0|¬J»­Àµ'ýY¬u3œ} å9ÅDù0âØål|(8^ú»XfŒÿ…»£»û»{)¼¡<*nt+‹H˜tå�;XMsèô¼‰<]ð�uq‹ÑÖqs yrp8Üž[!'�šóË™I!£ûûû�‡j‡—vD(¹»ÛF¾õÎX6Á&¹£‡qEÌv~èB %˜¶^m6Ÿ®¯˜9Kl»Q ?s̨�AÔÚè� BFÞÊ­ˆž£ÐþîúòræÕÅfí ÖaÊQ @³”x‰£_ÔéYŠZ%L7,tb·]ÀŽr`˜oúñbs2XȽ½Pnª‰>d.$öðþER¬Ñò\Þ­N• %a•Ps dÈ5aå;Q9~3¡žˆâhwf}?ÑÚzDÀŠóùn†,®ÂtÑWr¯öÌ�¢MA8 H¬œpª…_|³0=;Fké·n �ïõ¤.Ç$éy´'J#½6ƒÐdÔî‘0G\<›ûÁ+ï#À¹Mž èÒx'Ù<ACñþãµÒ›<ò¡Ü®â5itÇé~!iƒÑ ßš�öʃôåÒÀÄ~ì°,B¯Ò{>U©ÁG/N€Ý ++³z'Ñ âá”dçyYósõÈq¯îf�‰�ä¥ îÉíõ•7½¸�!¿ì5x­è¿ƒªƒ¥L«a üñˆ„Uðd³Q:žm¬ÙÙZUÍVœ'RB‰ÆìHq0¼^Yl›·ìß-“’ Ï¦/õ¼E¡;¶N”��aþ�v¯sûÝ}½u åÈ#$BZ¬ B‘^«` ä¶T©²M.í/‚i¨ ®³ŒÒšò`Ñ|[ž/š½=ÖÞ@·�JÙímlxÛWíb3rõõ6 ºq$l,˜ø®”õ W J�dr°¹3Ó™­¾ ê/¿ ¼ Úù®6_²ƒYÑ= ÙÀñ9––ʪ¯Úüë6$j`Ù-ð†Äw"VÈMÃ^ãC«UÞ÷ŸÎOŽ!v„Å ÷}Û¹ÝA0dj¡¼ÁyeÛ(|»Ë—ƒH€û¦…7莄9å‘93þãçåÙP¶Ì©ø¾ø± àƒ.k5²¬�vý¼ï9ÇíIu›Øe<Òל~»[œFLfÍ4õç“ÎM¯¥ÛªOe™�Sµ8UÜ“÷:q—Ð%Y~ µ[~T_äñêyL¥"¸˜U¨àRPEè�¯Ì@R¸úó F jï}}ÿÇ+SËäiTå­)sóžªÜÀïWºÎS[Uç­)rõÖ�úÍÔŽr]ÚЯ}‚½ÙG~<~¦Š—\"B—]ÑYº>E13> ¢X×Å¥�𙩍›E¾nßV—G˜ƒûü¼6¹åýo ɉæá>Ü¢‹Ÿ¯0¥K]�R®ëv~EæœÇ‘9k†s]xëÖüR¥ˆþ­:XoÓÀ.´Ú]¦ûáòJNƒ¾Ï¦¹»+Ba«3¸/3¼ëï™ßw̜׌ïΠHD›§£¸§åîÕ»>™3>­¤¢;Ú{òayô§ÿ±ÿÁgÄüðfžó¬"&»dÞ&J áÓÍ1õØîÕáÒ¾Vþß'XFÜ ,X?²jE�~Œ©žH‘ÚúœèTa³zÄ,‚±äu©2~ ìx }NTp¯Ûk�^¼äãyÊûUÈý‚©ÿàH*ï¾�ü ZªSÍQ+Ñ,›}=, :çø.•¦-ŠWºå˜#Gç®KY’8#ÇOD¿ðº*.¡.ÄF?¹ò=èy´Åe±Î‹SHI½Òmφmÿm?Š r, ºwòë°ÄŒ� ›hŠÏ%§ˆú¥ÊN‹ë\ÛÕ´)>¢/¾”çË£sŠ“fÁ}6çª8+>»íY{7¡“Ë|±’“àŒ¥ oĺž H²fŠJ‡û©U¼®Ù‡rˆ£ú ¢ãâ]q£ó¤dîª)o²cøÞoˆi™ïÊä¥)n²wÑ×Å™Ïkù¼hA;÷øñG|Ò*iê}ù—ì£J öÐu)ÞûUkîï—È£B7!ÅuÍ#‡ ÀiÞò[u ‹°ûË|Z’•ž�cï€Êø„¬¿x Z‹ b‡eã+?ж¹£z› û’)�eïô¹»5�S�·eÂÂÚ "ïÛÿ^Æ—¤ì æ1@¨•)(,¬w¤|P�ùžÆ+‚× •=^ïSœ`®hY�}‘<ûu·ÔsÙÍÊ×'CR§ð/°®C]!Ï"u§MŽô u÷ºé,~�× ôè5Z!Þ3ɈKÁÕþL¬ºÿ¢ÙN‡¯B¾SñUŽ“Bv¬ÜK,7ÐÝïòó�ç†Ü( ˆQä˜(ÃM&Þæ‚úå|n*"Þ¦³‹³ã„”{G¤Û™Ù&:×Þ,$Ø›õ˜G­|¤ø9¸ØÄø=tñÝ̳6æÒ0£;èóKÔ€ -�4Vƒ�-á×�7wÈ*( ø³xÆ0»¶ô?À)­¢äF\ù(Ÿó;ŠrEÅ ÏÄĉëþðrÈŠxÇž�#@(úCî£F>¿cA¾Øö±`xûôæå©}C/ÜUì¥R{œÙ,ÈàF¨½_ÿ&%ŽûAŒ{ï‹™3×�¸ëlîÚ33vM4¹¢p�`*”÷’8"±òÎ-ÔÞ_ÏOkZ%Ò`t�:Ñå°iÇíÊv™mšP,‚à/D‰K? Ie“Fz7ÙJ¹EIâ‘IvAŠF@®D0ù<« ÷ÿ —Ù`š€zäÑ›f±jÐ+£&öŒÈ‰9SŠÈ�(ÜXOmDe²Î6q¾¬®\ùMqÕæ”-ôXãJmKþ´)çyq‰#æÀ?ñÁoêŠH¨ó>´±Î¤ÇP¯‰æaÜ.ÞBN_U…)f0N‘¹x¿+ÙoŒßJí–w‰ô Ñ|ô€®˜ Íð7VÁÔõ€Zæ{É©wwýÒü2® ¨îÃvõ´Æ——«æ4t".£›]UŽÇ§]‡î2jP Ÿø Šîó›;º?èB_gF¿uê È«¦¥xØ42€3S_ðjuíãð‡}‡ áþ¼óeñ-–A4ï!»t{¯ý/ûROÃ;ø×¾qýÂÅ…]õ§®;„û—®“A|Ï�VªŽUõÄïëêt·xes]ÀÝâ-˜ñŠß«òx-( Z½<�;8qSz±Ù’šhµŒðÁÏ›Ïü娥ègàï-4¬NŸV­Tž™8uÏûâ×±®¹§Á@ëÚñ0s‹:>n>S‹]¢Ì/«Û‡úèGŠ£Ü {LS–Èñ¶¬Nî»(²íbfü%ÙÁæ•Ø:ðïd¹5/g-+ÏÌAL®rqë $¦yD&4"ÑQoýŒy蘷ÎO�Lö«“v³= .ÚŠUO¸Õ'FÝë!(À×N€Ž *Iy¿ا)%Š7žÁzYeO+Ö“ÿ6ÎdÕ§Ì^A…ÇCëúyì¨!xh·1¯dEé˜ÙÂëZñz…HuØÆ Q4X]®i!×Yñ÷ ´›FùA#R7Sâ’¢÷\¥Eë#“dÿbß|ÆI@_;¥c½�¹õõWwÊÚ~ñW²¿€„X‹äz“¥·ÁIŸÀslüņ4LP~tÞkâÑç�CêlîKºÃ£!qèéÍ¡X»„9¢²¿Šìï@ žå…ÿ3Ê9xE¬ú¨ ‘÷ auæÈЋ ̆šûyUn…H»éUH¤·L™+°0'O*îíïrŠÑ|7¹_&¾õå7ísqÙþ¨šd»‰YùdœøkÌt!uÀÔŽ»ÐQ)m”S.§‰å­O ðWñ r9uj<§ÍèM~í7AÒGå[¸a7¶çb ë\Ÿæ‹¨ ÜŽ!c·á hÜ*@ot.¹¹¯Ê7´³Ù¡ì²| ç¶’?é…¿³i÷0«‰rûn‘£–¸vÊÆj8w´éy¶h¾•£h€–ø-¨öåÓâFk¯A°=ª?€‚ê¾q·\luÖg¬E..8©›®îåd'’Î9H•�|†9lÚéôX\ôpi[A¢ºC°õ yvòª¾A_¸â©w�+GÏBG„L„]ØÒ~�[™¬2d½$Xš®í %†²yÎ ~‰,Ð|®y ”"d%Ûàÿ È)eûÚÃN#€®£¡^Ú‡qz•h3û'æyàÒÊåQîhíè —™¯•±o%ö½‹Âïã|[Ôí‹ÁÄæ×=÷7ýÏ œ‚LqðÛŸèÈqø2”§2zIQ Ò|ŽŠJ�CÈVÒ;t… ¥§Ä£úV£ú¾O ‹[2ù×Ö‰�ÕG¦³6ȃӸNk»ð‘¸&ÆTvX”q¤�Weu’Fûoиʩø!8:ÒDž¹>ƒëôØl‹ŠG�¥àîagÓa¨¼¾•ê‚åÑ: »Ö·õÇfuArƒ“ ^6n^DÒ⼺SìT/0'i"ÁþÑߪq¨®éè \˜^3B ³DÁÔ»¿µ†nͼ‚À¬àˆDÚÉ9n �:¯>Þ�€3ƒ¥<Ü·H£4Ö+ü¯Ÿ–Q"<€I!)¾˜=½ë_=jP· SáÈ ¥))™™Ãi‹§Þ{<Õùk½‰Lˆfþ—«í'šû÷Þ¢:î§r‡ ?'’=~¼v\¢AeF·wø-îè|ý•îÈï•#|«mewW.Ò�ß\5ÚÚöAœlÇÙ’bïªnÑ¥ c�Á YafHØèš ½,¼Í³Ž,Y–…(ð!Û”üöîî�c”\W\Äœ&دÿÿÈœ.KåèX s!s+&si2ç�ù{ ªcøóî¯!Ó$_-°•°³ñýXªÐàœÂ 39Ïzf¢õÛ®~£@Ë8GvÀ¤¿OrÌ…Ió•‘!ÔŸéJŸgtÑI~Ø•…¯zœE'ÁÞ6ª6Hß³FäÞûà.s{ïý<�9bwŒ½€œRŽþ—Ú_9� ѧá…�Å»· Y%ñ¡6¨'CX±­¯›ÖñßJ�;J ÿ§ÛUÝxÀàf0€Ô»{¤á=Y;›Õ_]šzujIä{¿è)üâ®ù¤`ƒ#°ú ŠËV³È¹8üP˜W�·Ž¯±ÂÞ�Jþ†\…ǧ«nUVÅeÆ«€Ä+ E(°ÝI�Æ„…êÔÝRú/Gè qš�aÙç\–XQРçÙwòa7 ,¨”­ R‘ ò錼“ôš¬ži–í“fžâ>Øì*,ƒœRHE»<˜?9<¤Œ†S½�‹šÆ=±ê¬¨Äþ?«Ûp÷H¿‹•©£æÐ{­¡±ºÎQŒÃDÛ¤T°ÏÈ[‹øl£Ù—¬+‡´!Ø‘¶ÅÀ2>¤_üæXäO ‘æD7ê…»–Ay`ý¢QšË/ç•C!uÕé§�âBÕNÙ…HjùCÈ ›É}ÈkD̃׃3/ùÎôèHð»^¯ 2Í,4r¿B¶dqfï¼×'j&|è>ô[pذ–EJ"Ô#÷Ò4u}æ9Y]@-œ×z-Xklž¥–tMœ™vZÖ¨M‚$¨iûôˆ ¦ÄloAN�#à¡ÕQO°š—÷�£K©·ŒnHõÃt=?°]ÚÕ !ÙæÆfДÖ"ʲw³wPÌ 3Jx„{ÆÜæ}}w‡5Îë³SÜ‚ DJÍH½ ‰¸sbu´:ýþp£ÅÇ x‡R™"-€�£wû^+Z­«j¢Lx)3‚/ü"L²·�>L[â ´NhÚ´4A‰]3fÀGà„ÅnC.X,®î5¹»tMÐìD�@㌙:¢¢Ýkd1Žr¸†Û<#ŸMìˆ%„/EŒ†ÉDó¶¦fžQ4ÆW4ž¸i»h92¯Uu±"u>²ÝÿV!�m…óáÁ¢.Y ¸#ß�S-¬S~œˆ«ì�×öé³Ñ|L¸î+ûÐ ?£¯.Z9Ay4Ú¨ �4Ö*=�ɽݼ‹jÑèkÐØQ"ݧKÆ¡$y•2XFžyN<ñTË!£!qØYâ�w&ö†–W+�Rß3Þ°ï‚rï'î"’u—Å0æ$¬åÈfúìòàG¯ºA7zü )ˑ֫ Õ“8ˆ Boõ©wò¯ãá”M<ÁÀb‹Ñ¹PèÂ�÷Q ô[·†*òch¬C;æ QpŠæËÑÇ·�×}d*Vax*cG±OŸñGsòäñ>W*…X2^£‹¼+3E‘Mv¯XÈ«¬�Wø¤^¡U(Áí¤\$øŽJÞÚl�ÔÜvC='uö=ÆN…ÞÜé„;ëÈ&§Ó�pþ�äà`µ‚ÄàÞÈ�MÊÞ4z²êɉZåà„Z½‹m]žk^VñÙ!à¹5kõ�õÈl’Z¥á¤*ñ’rC‚ ó¶r8œë‘S ®1Žÿâ@§n+ÑÇÉ×êu׿¥ÕÕVX>Ç'¶îºÚàñ gS4²”¿»Kci»†¸!ø.&I7 ý#ªÿ1ŒVñTûjex`°–"Îd¯$ýÁÚa·‡Ðw÷“~cú-¼Ý×9B2®Uùä€ï5)“2“Jÿ¿‹ÝY'¤²Ê{OvCù?ò¤4ó–¬ XÎÕ·÷°¨À–ÿwN^•lêXÕœ‰Àuç‰gPÜŽç¢?�¸h)ï1¢{àÔTi’Fë0Å7ºíÍ-#άD>óˆ-V7·võf�° (<†yj—RÓñ»dPMº=ÈT¤SŽnvök\3yTƒF©™Šb‡5ß)eÜ´&‡ÏÁzÚ™&‹ý+ù×à}g,îÕp2=†: ÷Ú99Zã]„ÎgýÚ–+¨ya*¡ üy.^˯KùuLTCVÕà˜+â|­Éy a±ÿ+p jXóC`åÙ~ZZíÏe¦F‡bìÓ­:ïÜœ>Žç¹ù~ïÝÞÞâ8è‘ì¢ ÐæÚ-ÿöý³ˆ³_d�ÿ'ï"HÍHF‘’ÂäðÓ¡ðÏŸývƒÔ¯¹äåð8;œˆÏg ¯œ¡®ÙmüDÀì½?u†ŸÝn½ßô_pÓO²éi&ý½›8Èc–cl_?é¾&¦tò€Ït9Áø˜ ŽO-¯uB§*©Ö‘$) �/*¨/˜hæ aÄÔçßVþÆÞ ¤Â‡€3ød®û‰±Š, ^NÁ!hÈ\™¹ iú�—¥�Ì[Óùøý«c“J%S�u㣶¤kµoìlÞ ÅOÃ\Hpî#-” 1;§ww;S ñÓ‹Cx@lÀœÌ?×2 A³-.Š�“ó`m\0òñcþ±ó8»×þà×V�ÕY³7YS¬÷Cª _õ*Š zŠ�8q4Á¶’– õu)G€ÿÑQýŽ_Á�3µ@­ 7–jg–0NÄ0 ÝÝ]é"ìj”òªh©ÈŸŸ&¿ài�•·u8Àùš&:É(Òô‹•ïý ºŽ€˜eÜdçÞ“׎“‰µgŒ‡‡Êœ¶å5£>ÇÐ^3Nfªfp3uÑ2%ðVäõhÀÉETÃ8—ÿä8þ?7õ×~ÎókkÖb’Ñ™[*Åš$„ÏgùÀ#ütŸÉ×rqt«Ÿ |!<Çj 3îm%ÇIö‚ó 3+{‚:,!ÛO}† ÂàZ¤Å¢EFÅ3¿Ší}cûQÀþC˜•­Š¨0¬¢ôîaÀ¤íþ&{VtúÀ&dUB.M)^�!§Ž›òsÙ¸¿TÙs-'_ŠK‡£{ËŸ>~ü³º‚4ΟÒY‚QpýÿiúçÜKnâ× )ƒÀ÷ô>Žb² æ9G’R†½#($½Üw»ì£½—KGøÝ³6zöAoÌ+àÞbœ„¥`Gœ±:FM¡1HÝ—•77Rt \ð+þCìv$ÚµA¢�`<@�î·EÛú´zÏÙ„²z_2 YœÛxçíªü&ò§º>“ ˜³ˆ Z´ek]�xŸ_P`8Ù9½%ûe#Ž&�¹ê/Ä)li«ieð÷j l×Å3G5ÿ,ž{žzy[­.(üÒ²,Ï_Éú”;ÔCô…¢9hh¡¾çr�ÖhÙ6âßàa(²W<à¼Þr'Å• ”Ð16HÂò&Ái÷4a„ÖžŽ·¦O šÊ¬ré>ºiÖþ�ÃÏ@µ2Û"�”¤‘èt˜�µä&ý˜~A?R+ìäÀYÕÍ5Wÿñš°s]Ú»<v|¢4PîÖRˆN›�ƒ;¯¡Žæl…:¯‚óƒ€ø�E§Sb£qäN¥ÏÜ!±.âß½‚ uûóQ ]ûàKy•’]´_>¢ïHÉ!g´H�¾˜ÙÈ�/ £†á÷«^ÙÙÅS^T<ŒÑGMîò‰Qñðg)ʦl1’V»Q8PÏ Z›x™&\j Œƒ“ÍZH¯…sÚj¨ÁܼmYZË·k·Ó¸Ê2zà&÷#LGT‘É0u¨=ˆu9Iï–>eØbÐ&4*yÚû;Å4'2_¬JpB­�xtƒ…Þ!i”­iЦëØ66*$4hŒ_~[ Ãí52Ãí@H’0#ýHõ ñyS£*¤<ã5®¬#¨[_ð/=áRTN¢Ö+NK]¹SEGÖuèaq‰¬ô:(àÖŒFO?>ÝO™Pse2êTU´‚+ŸQ_7åÚÈEqfB±‡n·ÿ¨È)»Ï2/d¯� õÖ §¸œ‚ûŸ†îp\ÔçÎŽª�)?é^÷¨+ÜÒ0Å1‘=÷ó]*sŠÎºû±8΋CÍE0í+ÞgiØ^ŸpÞÔÇ�ëÇ�¯h‹ëðò#,zYÓºˆ’J”Â×@ Ïc.{ ?)˱eÄ5&·yÙ•ªÿã€�kl²UcÜ�Œ+8á A«Tø.ƒMÿЉS(Uq9TþÒÂ�9†äTÑÎbéör¨·ƒ¯‹§ÙùIû«˜Ãíp­¥è3ls'â19\¥˜”Q¬rj�°´v2ÅNãs!vÙ°‘8 ÿ‡é‡M:â²2±H<Èã—/ ñç�ÀÉn¬‰ Ð ŽEþ�'NÏHƒ9 ‡"í ·  íäVË"üx¢…‰£œõöþ'0œ½V¡µVéµ$ i¾ÄÝödª -ÄHO¶ÜAj?¹ ç@ªª´Te¶àóˆi|hýðüêúD—´5aóª~È‘§óâ,„Òóê0¥œÖÒ Zp.„<�1�òÛÈäíhz!t>ÄÕ㽌Ñ£-·z¯ž啳[³úÔwé³4HÝ@Zô¾|ÞóJïïɯ9ÑwЇµ>`^”~&5µ�‹Æ§»¹5 ü3(L…W§™M˜`Ǥ�tëÞ³ç·͉�§?“-}“^rúL5–F=È]?—]ë¢ð¤JJ9tÏðФ×9‚ìIqÝúÀ6„Û)Ú»IB³¹ùÜ´ïãKôO\Èá ¬t‚¾Ó>»Ž?�’N"p²áû›«*´û!òê§<�€”aìP„Ç<.CõËÝoSºüK¥.otL U\“LóÅÉ.T,«Rðpu{É$˜Xá^§Ts´ì"[ÒÓµ¨)˜íHfG%КUþZq9ņMŽðISl%/ÁÊÉøBûõฅۣÕÞÞ‡k+ÊNük"d‚‚w­‰‘–a3¨ën­6­(ÐXcÙåT%:”‘&ê:È�^Q™”Uv½ÒÚ8~[z…â&_næ ÿ<˜oÝ?Þ瘹y1å$%+L&và3óR œ\ÛNìü�vÌøYy @hôSª‘_L»å[³Øq-¥2ÉÕ·$©ˆNëN¿ý–ÕD‹6h¥ÌÀ´h�F<¤œüº]þJxß ‘+]Ð÷É~ÿ´ˆm²Ð4!u‰µ;œ/³á!ò\rzßvHÞ™%ê"bìÜH Šÿ—¬›‚ Öç•ÄbMD:Ég¬ð3C(ÿO>KnD’—jòtzb>ì.ŠbQ[…Ùx“ÐG¯ýhësÊl´Áª œ0qöÐÚW…E‘J?õWÊ:É"*¦¦»Â/$Ï­Už8)7ÛrÓ�la¼Pe“Ga@÷|ë÷ÕDàŒ|¡Û8Nê%º¨„ø‰‘¯¡=ne@:5ÅÈM¿'á$vËù~< �½cm®Çÿ 9÷×ç«í÷]6c„#G´>” oC‡E à÷uêH(€¬}óÓŠ\Îiüll¨a4!Õ%th3ì f4˜€ñ^ùˆšPÍ4‰…ô#¡í-ý£áÐÂN�Þ˜ršé:ñÅ׃n&> Umºî|[ê5eès<½ºð: ]û[µúÕÆp9© .GœKúJ”S®M¡ëU8:HaxÝȘJAaÙÑ6Džâ*ƦuÙô,@¨ |{ éÞÔ´?~jóé W–"7K;ˆ…^7úö»áÓc%{–mýLZ >A6{0ÅHâ›I~{4ºù¬¨Ó“ɇæúxsߦNÏY/>ÝÕ½‹ÿ'¶ÚïÐ7šÅj»å‚QTâ¢(8ö#fÝ%qË�ÞÝí^qRYø»Ï1¡9D°ø:W”¢ß§>'MiðšnÈW ‹.c(q×Ùœ¤r ¯ªµº#ôÔs·ÆšÔÑ3R%˜§´�Ž%Z¸cXúIëÕáÁPùw¼q´Øß$æ#¯óêP½7©?¤Ê—ï¨Âg”-Tê*#£.µ$ƒÅÝÝL h?ÝSí{·Q/¬>‚·C4‹afñŒú©ëSŠT9ZÕ,úŸÌÅ?õ–™w¤-±í%†G%‡•&Î8Š˜#'ñÍ%m¿auÕ¨d-=Éÿ(Š¢JÀeuê~àJ@b]) Â D³1Ufœd%ãLÑâE[¢<Ÿ7Úð&öþV  ¢é9÷�fÆŒGeTÖ‹�rرúRĵ}¿ñ™,ÓF³¨2I’”û,Œ‡ä[$H'y`V8¨ÄRá0:%ð#ªDwY O1òQ?RÐQÅ ‹èyB›jš´#mæèÅÒªO¹ÏjÆã×wˆQ)ÎRøY2Ué‡ÌWpLX€«c>/¶$X²üŠnû�yD¼C¸qñp¢…e•êØ�Ó†PµÃc€6@¥#ÐÔ§§áÎP"K]ƒ稯±­<$¾I+Ü™…ÅÌZØ»„"{j[ã3zÈ1ÇõÌ�™ UšS¨È½QLê-Gû™†Z¢áÞõ•â¤}/ÿx¹œå_›Ï‰¡+> DÓLÛ‰Ô÷‘G0v íQ(F �µ¡‘kÓúRX\ Ç^€e7ÿ‡¥ ¾ÒQŸätª);Ù €#]ÆWhÝ”(œ›N[ÄÆ Dúýß-ÀS0Ýâ9ê®X…øÙqR\( W½3ë¹…ï´$ãm}¦�ËK%?�ºË‰·�¾xÅË ÓM°‹­àÈ6MOXýc¬ ¶Í—º9Ý|a÷™otJ­ò£îC/~¡´!\"ÉØy«ê9ûÊ€MqV_\Ì1±To=ß�ïºÓú²Úž¶»=¤fÈ6ä5PÖ!ï;³ÁÖ ¬Òêè*¦ý„¦HÛùmFà6ðš^i[2†œ—¿‚Ÿ½v^¢Öyq>PEzGŒ5Þ¥¤?€êä5¹â%I _K˜RÈ=Ôçª,OPÒ,Ú{زfƒ…µ1ís_ÿ  æÀÓõîÑy!¯×¥ÍGî‡Bɤ1Re\)9,z™9ùÍ�%GäÆ}w€•4ñyˆþú€ú{}|îx¡X 6ôåä›%úntä B5. zÏB)ñ>œ›b Z¤¼vÿë¿PKÒV1]—ÕI ý¨:Limunify-security/assets/ui-app/assets/static/shared-dependencies/minified.jsUT ëÆ«jëÆ«jux 臬[ëvÛF’þ?OAbs¸�¨‰¤¡`xG‰=¹Ø‰=cÏ(ˆEØÀà"Y–ø@ûûd[Õ_ƒ%’òäì6Ð÷®úêŠæá—_þ¥óegœÉWïˎ縞£¸æÿ§ãõý¯Ü#×í|—diÙyY—³q‘\uħyžùøƒSÔ6÷ž§ã$+“°3«ªE^¤Õ¬>wÆùåaÓ÷Ð,rx>Ïϯ°ÔáOÏŸžüòê„')óºÞÔýð/Ýi��«4ÏDeßZu™tʪHÇ•u|�B&2;.¢Óu/Iuöm"ú¶LÄ¥ý;пCýû„ûGG(ú(\ …B  ¢À,}.fñL�É<Ìâaœ�õ|´ùhó±‚�|Ós* P °3… ]t °l€ž& 0Y€žô ç=˜l€ à|ŒbŸCt¢Ë]†èòSƒÄ}P×=]Ò!]Ò!]Òí£gßC�ž}ôì£'ˆìºG(ÀÝ>^0ÚÅhÐßõÌ÷0%ØàzXÜp} ð1LqÁÜp}3{S\…qà� Þ¸ ÀE.xãè K€À)œrÁ),rÁ"w€qŒ§\pÊ‹Ü!¶4ĸ!Æ�oî �}.Øç‚}.Øç‚}®¡ç¬÷Ã!B.dȇ]H‘ F{#bä�íØî�íØî�íž‹qÆ�c$Æã<0Îã<ÃÁ8ÏÃpðÏÿ<•6z`£6z�-ÜôÀ#O¡¬òÀ*Òä�c¤ÉÇ·Àù5¢æ»XÈÅB.r±�‹…ÀiœöÁbÜô!�>˜êƒ©>˜êƒ©>˜êƒ©>˜êƒ©>˜êƒ©>DÔ‡ˆúQ"êCD}ˆ¨öûТ>Pà+Ì0øƒ0ø�[ì÷ÁbÒèL%†ƒá>îƒá>îƒá>„ÒÃ}0ÜÃ}pÚ§}ˆ¡†û�?òçöCþäO `PƒÀ 0( @�ý ìW`¿êct±‚.Vý! Œ4 ¡ h(@C ÐP€†4 ¡ %  ý b¯€„( D! ÐP€†&0¡€ L(`B `PƒÀ €( @ *A *A J\A3¨Ã¡Ëô„‚žPÐ R‘‚JW‘ˆð¢€¼(àE M¬Ø(hoô( GA‰+ G= è ›° ›° ›° ›° ŽÌp½zD@D@D@À ÀR,ÀR,ÀR,ÀR,ÀR,ÀR,ÀR,Ð6 RtOd@Vd@VÝ`@÷X€€T5K°@±Q0(ð0&*'ù¸È‹ªŒ¸Âµ—ò¡+«�çà5XM¼mõÖ®°}Ë^qe‚v�RA[Š© ±5Ì�17R9¥’¶QRÁ”�SI‡šq+• ®¦9.xj¾âÑ´� —Ô~㩼äwÚÍ9§½}ä’ú]SÉ8áwZí÷§y¾áz[>çiiú߸™†¿àihøk®§a?ó6¨ý%w§é>pIï﹞(ú —TÿŽÇÓ6žrI‡üŽÏJóü�Kš÷'Gïßò»k;Ó¼8‰Ç3ù&z)¬Y:™$™eËO‘õêæò<Ÿ[òÑON™Tò*/’ªJŠïóB|²åÑ‹ó÷ɸrE^åÕÍ"‘Ï¢ÔÁ8ùcô¬×{Öjû'µ½¦‡“¢È ù½ýŠñòoÑ7ÎT¾�žÓï¯Ñ ýþ+zA¿UÕâôÌYPfË¢Š~V©g/i‹‰~Ï_­«2]uý�Ÿó*ê~qw×ýb½…Í7gšf“§³t>‘iM{½¹+èØ·ERÕEÖt£sñVÜ.¥[ò–>ìôVT³´D�«x^'á`i;ñrió¯m�î˜!™EÈÂ>Îz½I2Oª¤óÇiq&ßšN’ê«nýÑë½åŽåeøV^ñ"jχْ¨¨N«3Úì�ö±ÙÖ?D"où¨á'YÅa%'I9.Ò ‹%!þîN$N«6*ˆ°KYW«%:“„•¼,òERT7Í ªHאַDb¶{Aáè16Åj‚Úf¢¨hÿ#Z,ÉêˤˆÏçÉHÌh¶76óôÍÙivÖë óuYœé0t€õ€ðRIj!ІfìÝ“ë�¼}yKõr5A<­¨-£½Ùá[ó´”ã]GK“²ENŽ¡›T¼—+:“Ì¢�t ͳq\‰/ /®³†4~IHºD&×h¢I _ÝXL+RIíº®@Hb¸­·Mj«µ±…™òyy²:=Gû:À'òêÅâ_RãnEì®Æ!8£I^q»3Í"›EW°Ì„¦Ÿu·»;S©ÙALFÚÛÝÓ¬lmmóÌßè�FhÓŽ¨E[Ì„t*2Æq³Z®WKøÁnö��0d\±Ù)ÓûÉx3ù™Æê šÅ„ÕùÎÍý_2O²ý*xWL¹Ó³†¹ß’‘í|Š^¼Ò‹ÐeE§f-¶�åQ{,¦åƒ–úU#ÒX9ÛX9Ù\¹»ZºÐLû£Y>“Z´õ²åqItx¶>2¶ ̺:ùC_ˆ56l»šùuçŸÂèóNZv²¼êÄqYõ˜xg­¤µˆââ‚(œU¥3O²‹jÖë­jN�Έ�ÕèF´«lÒ+IôâÑ>Ћ1�!á³ÉÊðH¬%±dÉ7 K ü,»Ü3Ñ¢MÄ#éõòª×£"¬¼¥ýOÓ‹š¡{$ÉF…é4V�‚¥l)_ ²B-dUù«ªH³ kMúNS·Vç?è¥m‡t&Óüµx&­ë´šåuõJ@k“sf˜^ø=p!‘À“U‹êJþFÙ:²tQYÉk*ÈÐEóJ¾¢b;¬ä;žaÇB¿˜…˜,d ~”VK�[ÉÓ¶\�VׇÇn5’“ã»»×Dqk›N²HkÉÛ:+ã)/B§&©·óü<žóª-�ñ+ïœKr:ÆÉ$ì–²œÅ—T.å->[²öü(2:Þ•Ÿ �•æ¯tœO¤˜âjc>š§.p©m¨Ù8"»Fméå‚(r¯­Ï']ÏlÁ3±.`6<¥…ÆEWë™:xÚ<’&ËË9ÉF8®—ÚmšÔ°®ä}KDÝå.M–Õgnv©–û1œóøïù„„lrä>�Üiòìòœ}xΊ¼Eí;sP¿T;Ïœgv÷Ù{&gþ¸XyñíY�ë#çr&ò‚œèÂÁ1È�.‡\éÂáÃhÓMFyx3ÊO¯ÈŒÅÛùPà•×âmÓ¹)8"»}Ë:0JNçgä¿Î$Ϫ§ñ|þCÂ<QJ*iÎ6ñÂ�Ç–qßn)&£yxu nF–c…ÖYöÁ\HÊZ‹5 žž—̧�½ãifÚ«4«“cZ\Î쥠c\ȘÐ@ýh³2\H‹Ÿ-ɬæ�-H_-7#ÐjÕuÆêÄ¢›‹”# ª$—–�ÄÝØ-¾w³QŒ9â=ožâšþ®¨f@:ñ´¶´íû¸¬Ê6ÛûÕ»ÝJ4,šùHÁì9Äæ^kKgLòÚ:X6Ê�sB¡Èí-{Í�x±˜ßˆ\®\“?K2îSmnE¯ÛøHVÓdudWä§9³¸lABX+½dÙH¸Þ ;Ͱ1Á$¡<'?1Ót·ýÐ%VÚ©é*Þ|$�ÈácU«ø¡K®gÑò±—äQ}ïåŠÉíh­+ú=�MGD¸\w]¤•y÷ù*¸ØΟ±|÷ƒ6ï¶èÅLäìlï›ÊÇT£*« “‹`³fYN¹˜§U{¡|‹XQ@g}²ì­ Göfàß ²Œ‘ ªìi iYv³wÆ�H£[>-Á@C€ 39È«l*S{C€¶¬¼½í¡ ¥FЪ A{ŒÖ)§q´áL0‘ùóù#ÜL57åP~Õß`ik‘URi«Ï¡µqÁF‘­ü4Îþ»ê0Ñ:— ¹õ“IŠu°ÎYû4xÜþ®�C¶x U‚׫‰sÚϨ‹ËZîv·† ç�ÙÛrûð¶8±«½­>¼-Îö•ëÓ“› Šp^éeZ¥W‰õ˜6eÿª› ÿc±6?ü®šú’‹ÄôÓ~,ÅIDQÆ4®ç•Å{È96åÜM2Õ“LW“L�AïrEï<»")éÀ- °‹”“ÙiGË?éɶیåH Î)࢓ë�ïaŒ{´Jü‘j”Õó9ûs!w{à}í�leÖÓíÛ›k@s•ÃydöN8�_ÕÓÚ|¼Mo ÍÙ^/܆º&o»�9ŠšÉ]+�ú¾†ÜîðóvãFçlÈÔJ:5žÉóÜ‚´–YèÜÏ*|íŽV“/_�Ù!ÿ’£_òwök”¶VcÍ’–/›£½˜îq]µ1”Ì'ˆ¥]ó^ï‰MkJÁdL&wÏÄAcQÚ~Ew« 7Á=-žoñ;štNc‘Mn‚SA]�ùè%¥¨:ÎÆë=róÆYèpÙ×~·ç!s�DßqÀ@L"ã¤,IϤÎwI–“�×½^í�ä–4CIÎ}¯7n^Iý�×?u®†Çt‘G¤5JØNAá“mŸ�ýõˆxGg_û£~x øñ #·’"ù.90±ÎJfQì\jwñðdr‘ü~(~Ÿ؇œä¾�>çˆZÝž’r¹luÔËcâÖ¤|¯HnÀÈÊâ«ô‚ÙlI¾TU|sAxµh¤«w Šûä%§É*çÇú&"C\…¤9ÑeOžÖk·]%±¶f�nì¶Ñ¼0�Ö:å·RZ•¾!m;–i…0ìCÞ÷ï›4Ä>o`¸©aáöo�U®Ù,5&•,ùª9™ˆjíX�L¥‚M%glWôÐãÐSÛR{:6 tÿ“@ðø?1u»‰d¼SÏ‘8Reå�|5”˜Žd]&Ø|ï" 7ŸÞæIcyjM Ëœÿ�Ê�kœ�$&™ëÝxbƒ®óÏÝšõbC£§¬°�Å1öƱªc®g}‘ *F%½†¤/æ£9gÀ+�…çž{ì�g �G [쒯Ƒ¹¸»\D‰ÎO'áí’¼oa5ZË’§g¶þŒ(nM]há"¦%/óIæ#kQ‰ZÈNX¶,nŠôbV…Öçß µds#Ôú³7B-iîƒ~Î ÖrOlÞí?ޱ€él½{gæ{GÆ£H&ïÞYìyž¦DØœâ"gÛ;ydÚ­™†�²ÍZ…ýȪùtZÈû©ëu´x´låM2F[±üŸ½9®ñ¬ÉeØŒÖÛÇ3ÛG‡u’ªƒŠ ¯Æ'ÅÞ`3XÓd¨“C‹ï‹¾‹#â güœ"Î&ù¥`µ�‹¾³VS;¡&…‹apXDâbYaAfÂ~gÔâà =ˆ%ábÏ‘‚�ðÙïo&S86�å RaMÒ+Ra{¾°s.JJÒlSˆÇÎ$k�“ˆE¶Y•§Rô'ó„[‰<ãѽþÔFŠåqºøFq÷û»ÂoÙÖ_¹£“2}þTÝöê7úUZÁÉ}aF³c^}ãÜñm•Úä>Ç­€qº�!²üÌ|h+Ï´ý’’YК³ 1_Ø9‘‰YgË`Ù-ØINæÓK£Ì{7qššæðøvÏw)²U›¾OÀDƒÝ—I´ùUÌj¿é©G‰³Ñ#Ûx•­ä–µ~nF¶Z³ÖKK}‘;¾2€†FÄîðOP1o'”WsA5fH)[Ä=½5ò`Kóhr ca}3f??/à–õ‚QšLVaãý7Èh÷­­Áww©„vç¥-[èh¬„ïnÒuÜîU}�Fƒšüô¬3ãêYû´7¼^ÜòÒ_ÑÈëx;¿–ÉLŽ1~*KvNÇäèŒ#&É4·1VÒk_ÂÿÁc˜HŽ2ðõ�":’}ó}ÍžŽ8*‰²°¼Ããd^&Ú�|ËÕíÄ÷)_²Íí$®3›[V“¤¤Àx³†3Y[Lºý{Öœö–gOÛBµf£n{c^×¢Rì¡é •¨0÷ôjÜâãL™?´�§/~ùþùÿí›o:Ñi3¾ûZšKpä)õÇ=ò“KVxr±C+^°g»Ý´ ‰ì‹ E¦c…Ø!�UüûÊ€P“ÝDÍ&;lëÏ¡Û1aß®L8éJ3Mb#�*ŽäÀFêìÔ:X7ÉbSóá¿1öw!NÿmŸ}iÿnJ닾Ep>³ô¥³Ì\óÃ,ôܱÓR¶ZʦEtcڙŠãxyÌß õÕŽz´Xµ7ÔHî{yK;Ĩˆï’é׊ 7–Ís‚z4kæèÚ^OÏ{�Φ‘]VBt3ÍÆm>I«bT›™ÚjfC»„­ä¨õ­ᔸXÎ[×ßb‘K =ÓFä^¢+ç}žf­xÖC²$¡eBŠåñÃtÿÊÇ‹&bß–w9š[6¶Y•ÜY¼3>W—aÿ¨êi9ÛòõAtxìK»§iƒLRæœz7‘üê «ZýÙ� %ºä‰kV®æÙ°Ìmks{òöù«×¯ÂZ¾üíÅ˓߱lë€pú�B“ ðôÊêäk›ÝÉ4+tòWš¶ÌÝ{U[ÝJ}�¥•£º7fOºNƲ–cI¶€ÿé€/'kÇwaö~aLÜWë»ÉàÝ�9Ë%sùnr¢/ŒLÖ¦ÏÉÕ�ÜtÒ,­Òxž~"_@^G³õ•ÝãùÝÝ�¾–‘ŒD™G:´yŠ²äš´ÏÌy“Ä~Ž6«â…ˆÌu~¤ŠM?–\›Ý Ùĉ˜s+æcMrݹ×fœi<Ž'$urÊýøóx±l9^ºÖñ‘%ñrK¬Ä—IÎOËè’E‘ŽaÙ|fÛÎ&ôT~ÆÎ®¸ß¾�a¢QuZž…;w‡NH¹ÕWÜôM®\)ÃTãµíóÝÿ±vu݉#Iö}…Ñî©‘Ú²�° ¶(™ñTÛsØ­©êƒ«§wå®# ak+��Û°¿}ãFfJ)‚þxB¤RÊT*3òFÄ�»�SàÝ€ ¿²3úvY}]Sdƒ{‡Ù;Dân닾–;Ó^L£; âñÔŸE´ ’0£ç0±ic˜>JÂÿ�G‰+ÂU•µ¶ü΄Lͨ‚;Ö'áv2ñÙ¦ăðäx¦3R&ý*üw*½È§—Ò ùKøš»|�ý™°0Íî½2ß²nty«x:¬D4Žp<Þ¹TÏNËÛÏ/æUÏo€�‹<¤åO « ¾ÓÜ«·çï‡rolÏ-\xÃþœé»´×È è*R`ÓæDÿ*�ÏÒY%¬ !- ŸM©Fž±23_¡× é½p8b>š¿Lþ‹ÇW3£È²Üeø8—Ä\z¶l¢tØã‡n•mç\jó,ãegˆ@ç`°ÎZºS1)NëáqF/9yc“¢4Äð��&ƒpñyÈÃù �ªvX¿'Ì iP§9пç—‚ì6±”ΙD ;~3¥_®ÒV°éjضø¼—ô‡‡‡÷fÿçsEÐêð›-Ò´êñäì8¿�‡øa&ùûÒËP¿úÙœö kè‰"3ÀĦ5m™.>{÷ޤ 5ÊO0¼JÛ•Ò\ú)º^óæŠ9^_Ay9È*Òy®;£ùŽÑ 0$h=`Q¥ÆÑ¹å²®\lÔÚ‘³ÒÉsoÑ$Í ajOfrL�xƒk'œJs;sØb7ö4hâ0šT¿q0r±ù¾N²<¶x†¸Ï$ÜG4ùx8Š j3 žÚRâÿ%íšÉU½3qCk³ÁÂsl‘Œúb”Ó{ß°eÔs+Û%öe½Þr./çg­³úå¥c¹õ Áß/¨¶Q40SAÁImlãS*ÿþ(TDu�³nH÷•q¿Þ�­²M:›«˜pÚŽ{òï˯9¸ÿz|bGé-3_K'è¼0›y7Cò´áÔ¼ÎX00ŸÜZ T|ßS·"%?3Â,ÿÌß�i¬„ø� îc\^Â䃟†`�Îóû ü™Oû.|ÖªèÓõ—î?o<ã“ñ¢Jøüñn»?zƆ6 ÔùŠ t‘[�¶[Šó‚�DÊð3;a-RÞA_úî…K^Bÿ`“04«2)5/‹öç\š”–™Mœ/þ#«]’á6ôŒkÅÆ ¾ú%öŒŒ­±2-Ý6wü9æ;“çá#ìPøq"l'Ã.o’.Æ':2Üu}×\Úš]VG�&»"ÊlÚ¹ESËv` ÍØïžgÆJ˜ì2'. ­Žö°n¼UH¼­Ú“~X2n÷žñ«¡ap£/�º¿Þk֗ɶ°Sað“ZdK¹š2æ)„>9!Êv$Â; Wß|#ýõËgzu7ãéìõC.] äT[¨ÙÔÙ2šÒ{qöŠáøû¯'êïÊÆë`�$ÆïŸ‘LÿwÑçÏÆôÐÌ1Ù61;F1b[F;Oý„Æø'¦‰Ko—z�&´¡µ6õç`ö Þ[mb(“²C’õb<ÍÆ£a4‚ó<7tcã_¿­1Ïæ_æ²Vî Ž:8Äc?‚iº³u(À56ÍÄKM#&lv°HÙ}…ǃ(%ñôê“x‚0Ð"COŠ9š§I ¦‡ñ/ÿÙCèÒû4g^¬:ËGLõÊ:&¹Mãa— |Öó[¹” o‚Žn-·êQúÍ•žµ-i×]»&ßúó~xŸ‰÷µj$„ÛAÄÊr²î<èHzl ¯8�ªEÇ\Ÿåš�-Áe˜ëµ6‡vO;Äux´ M¼�°ExÎÄ%µƒ‘ó®5©��®¹ÖdxA«! ö‚vÊ Éî)wø¬ Ú1L=Œâ}ñÉþfY¬�‹— � ßGìJ$QÂß ÷f;I•ÓFÓ¡6áÐ�µ7ù‹TÞöU‡6xVjžQ‡ÒÁZeˆÄÎË�–J)#Ñ�ó+ع²ÅHÉÊ]gû)Sƽ¸¤pe¡åíÐaè ܘ ÀëÔvº¨„Ouà›sXp¢MJû8—@ Ù�[Mƒr�$þ+ÍK¥{lu3eN&±ÔF¤‹…v ó"aa^$©;AÁ”æ``>�H &&ßèýS{txhÓ¬³Þ4´ZuÙԛʉê íi•fÙªòŸ—]å³Ùö¡èÍ:‘îÛ‘Yç˜ïYß¿÷Â*{ŒZ¬ðø²¨Ì·Z™ÍæxXÍÿ–l¬åÒT‡pܵ ³Y.“Œó ×ZU³Âôe´›b'×É©´>œ•‡M(Úiœó†íÄãвÜÈz"µ@ï ž9‰»¤?¿‡…>±ç¥á±L𓾇7vѸNõcŒ £¿ Ï*&È <ø®=íYh›d'ÞÌ%u£ÍPY�Rµà.d6G¦Ax #oIÒÇB¶»à�È(OcQn+Ét*‡öBÚêø‰¼SüŒ¼3ü#÷ˆo¾ õHlR%ä Ìä©Û=oLRÞþì…�ÝãšvÌårÊÇuZKíë«n»+�+�ËekîF¤…wg>x7ýî½Ýµ_À†B�ÐúL%Þ‚}ËT°°Ò—H ¸€”¸ƒSW™pÚüÿ\þ?xÿ›êWüo¸©ùÙ~°„ÁgífgêfލÜR•å=ž:GŽ-—£ÎÈý¼Òéêo2JÑ¢CúÔØŸËv�X\(FF<‹…È�CJÞk±ŒMÚŠ…碰 ÃRñLS5Ø ±AO¶vŘžÌ³óRpÄDtÐvƲÆê—Ø(qýΜO–�² î tq¾ÝÈ©„Dø"¦²I%•«°)žó¢%Wᥦÿ©F˜Šu_Þ ·Ðℳ£-a’)0º‚•§îy‘¡&PX”Ãè*5]ªÂô..˜©� ܪ�È)Œ wö8JùWƒ^²DSïø¿Äû¼5dllóB2Š%x…»eÇÓ¢~9ôú÷$Âæºa?`áäç¯éwfÇ F~šfݵ¾>œpò¤=X;ÔÄ¡‰Fà¬ÔžLCð99cÞвÖÐRÊ7°AP¶kõ�8S‡Fâù7Ý[  l!OŒëôu(¯¯árÙßɈY+çº%'³îh]Ÿ.—µÚ“9²t%!²ígŽà€Z¥±*SL»�h‘V £5!QO³%&Ì驘0ȶ6ÄÌF�£Y,“1%ácD…¯LLŸ«´M\ATÍ+´'y&•sj=“A°²ß˜Î¾òĉprC9xë!álÒ\]3Ñq hs(¦Í3TJˆ–ß-$Cl$³>/€Žt[tZD‘ˆèóexGùxþñá]ÊUMñ¿0ÿ× ”þZ¸Hª"É8~Ë- îcúþî\k ©Ž\Ê„92ÙZKؽ ÅGÒŠù$¥øT>"Û÷=ˤl€Ïÿ¼ûüÉPѕѳì•�ÌÉñ‰5cúgÇÁ“Ÿ\Ï@wÈþ~ˆ!Š¢H™‘�-(P¨ *�ô¿Î¿¿¨×�èçöööþä‘€ÓÉÏZéߨô?NE‰Òy]*ízµgðm6c¼"mRf|Ë>ö�{£æ LDW,—ÆÛŠÿ½ù.-ØüÆÙPzÞ°„‘öãë×ù`XoâçâôÌøKÍ£K Y(Ê螢^è´ øÇ·Î†÷§hö$ ·Ñ¢4Êé1O ÄSSÆ„Ùv¹L˜/@‹eª…˜¦|Ê ×P]52cl� »Æ"½gF° —#wb½hû„d…¡Ó1ZtG#šçã5—EÞÓ1œgGzɇ‡N&;^Í;›{új^s*üÊ‚;¤/Ãh‡/æÝ’æªÓ´ú8€ã5[“bnª)ôœSµ2»Ëe�Öf6²ùòÌŠŠ½]Wßìv¶¼7õ8½Þuþz4ª¨"ßhE�4ô“ÊV2Ͷ¢Æ(ª´§·¤�ð¢ñV4çÙqUž%EkÉLKŒškÞæÈÔ2ØÙÑÖþÎ'iOñ~JŸjMTK'ÌeCåxbÿ>\§i8~ÁêÝ"à!=ï tþ<‰YùÈ{ÄßyÞrµ(þ)�#/)å;¼­Ú!8€>w‹`æ¤bÞK §šÿɱ‰Fµ~îj™ð³€[½†vÄßf�R›•v>ß±öé'5Q5:¦ÁEåi3™#Æ^�–œ @§[‹@ûÛÑÔ³,ÞÕœª÷Ç›ìù“ÇpŸ6óŠB£á0LBg{5\¨üÇ¿{�ÌüÅ>-k5ÿx³™î¹£Ñ\GýÃMþØëîÓ¢ª¶wƒUkÚ4>Äãi4ÚëYõªRë£É/û4�Õû“ÚíÍ'³h¼ß„Öªîn½"È®!3H‹°JUÙ�l[Çqй*xnF|p&Íð5Où@âe®IFÌÈþ4@úUä)غ7½b÷ ¡f„¿|Ihïÿˆ­Ö ø<î4Hô^#Ýe–4Åîz×ýk‰v�œ{RñUv;Vð®ÙÓã­áÁëi YíÔ§Ûà aN’áñ ·¼ÚD)Ð=Ücó˜x90€„šþ¢íºO渃¨|Nèã†ÇY³Þ„T³io³*xZÿ­¾›‰Á–Ëò¨_™ÞE>Ê`?=ðô\�;Úk¦ó‹ÆË\—gFà¨\N~]¯Ðeg«JÿºJ2ä\*¾ÅnÂ…=Ï ípŸûN2AŸ0ˆÍ=_ó’Ñ2Ç =Š¢}¾L¾NomíôU •¾$½©¯¡WóËÉî8klwLNØ!(E*½N 4S2ÖN„hÝí})dæÃL«÷•É€$ñ¯‹ÀOX[<ضN¾N¾¦ßù³ƒþÏîýwnÿ篓ûïNA)‚�üíÝF$]‰ý�ÙÇΡ" Â}éuoî@ÕËŠ»wßz7>÷¾oO/í~¹é]ù܃ꘗ¢ÒÞ�?|¹ù^|TŒÚ¥)qŒU ß®NóÉõñgdŒx¦�†c´ (}¬çñ“™à¤àJ´ ÜNÊ.¿é˜¥ÚíôÌY¿~oÏú¤À¢1ËÕJ,Ëåùk…-ëÎz¦�]™á3êà5ŠE’pÌ�Ç»™ä/L×x |9úq˹9°òÕ«3/€ÖÏøêµý*¹ŒžxêÝ+³¶†æ£ý��ÿ‡l±iÃàX«gÎ85°8eáÝuhw 3÷™Ú5ó…öø…ýlYøøDØtבּ™K)WyØù‰ û³µ*ÓKÞ½{Øèߪ¼Ô i!ql"‰u¿‡âŒks¸*•ÜA"63:æË<¦¤ÎÁ»¦£ß&¯Ì—Û–õe!�ÙŽ(ÚÕT7‘YA³‘„Ë‚Óz¶U’¬móªJc‘Ro´4Fb>ЩÊkÞ,ïRB*<ˉmüõ¯ùå˥߇nS•'Yã™tkS�öPî Ô²‰€šÏº€ü¡.‹IÊoXŒTFž WxfΪ!æu`½ÍÁdó½`µåR¬QùÇÏI˜>¼°›Ïöo[jÊÔRø»Ž)²ws¨yÍ/KãäÐlš�OǺ�¼ZYœA«<Ÿ¡¨mÎ%äÝΡ†rº¤›dnÕÓ2øXi4µS|ofÒÖ©œ»Mi:mÖ%t>=…§/ó. ò©Í¢Bøw}ÍãìÏrR{”ù™Eò:Èxñ•WïÄîä0 Þ×—ËàŠs$×ð¨Hi,ú2·H´–Œ‚|ž‹~EÅÖ¤[ПßKËe@Jï–P€ˆ-¯@“eiέ7Ü.¹Z½JîÊNÊÏ�6¥br)“ú_Èï�6¤YúT}�´)ô’‹3©—œJ£4žšYqMh%�å¾nRSž¯¼s‡ AT¢“矣›õøðâ E K~í Ö±75 QßîF;ë2¬6ϹZ5§-&AB-d‚‚óÔÕj¡‹ï¬*fÕº²öJ�2^ñ› ôù&»�Ce[æLÊXsï‰d½:‡.%Þ‘ƒ9¹¶C´“÷“v"àÁ泚]ÅÜtßÍ5²„ n“Hˆ`HžrÀe½¾�Ûáá¡=¥²�/‚F5·§vÔïEî½ÔGð/Ê©n”A|°éMíùIK-¯=lœ³«�lR›Æ?üE4ž�™Ä/áà€S\„‹ zêž=Ì@§R7šZdL…väÝ´%ù5 ¶FShlf{± 8ÄyBËÒü[�B‚oÝÂ_P&íE§ê+Ry“*‘‡4Ñ âE7fmÓÈK*e– ç—Ea뜲@È’Uä‡Óí¨[롵Y¡îµ‰å¤zlNçÀ>èê#ÙC†�)»M SZ;æ[X‡$Ÿè:ëhd�Rˆ ‡Ñè=R‹¿N >bE�½)ý¤ücµ§GGWõ¶Å_f›t&HÆ‚ \_>£Q½G\ó˜!íªÄ6ëÝØBH:¿øóYb²ÇYyNåà80!»ìÌÆqu´¥åø|2GùTÉ/%·àÛqò˜o"@({�ü·èú䯴nzÂí=9÷ð†T™+Z;2 ÑÄ¢E¢l²5N¥¯B‘JAø“²�¶9øðÔ~ë* íܹ®†Ñh¤VŽãZ*Á׸ ŠWÆÅ…Ù"‘¸d¾±$�SÄœo 8<›Co¾¹`¨5RŽ8„‰ÕN¯‚¶E@æððÞK´hûL-ûµçÜ"TÀ…¯“ZbüôO`ˆÿÆôªêðd ƒ!Ùìj À 1¬ÕÛsZýýûwïD“#*æY€„õ…ï{n{Þàÿi»æ´‘mýWu‹j…ÆA€14^’ñÛqyIjŠq¹XăàŠÅvŒÿû;çt·Ô‹É�LÍÄH­ÞÔêå¬ß¡÷ó:æÛy�ÿùÝ89Zïú‚ä§·ò–”ºíU)Ã?|_é"yiYí¿ûæ6ÂèbcçÍé,xó휀Îí-¦ü“Î&u%ÛvƒÀ3W©ò%ÅÆl*‹8ß®øÓzhHIGj¶†!“ÀSâ�Ú®¦o•{긣 ÌSÑoôîyãhÅØp¤l>C›À tø™¸kþ•ßò ~Åù~Éø1Å:Bï|83â ¦Ì�É£V“?ÒióœJÍ�[¹ÐÉ(ÖT\÷LqݧNŒ½—x†&þ7%ظÄ27+eäpl/U_)¥FnS±¸�üº|H~:il'·¨¶»ì"‚sÖxº_./¦Õ$À¨] @âQàp]-—׬»Ã Á™}±§zº\^!Ã%P›?”i3ËB#­¸{@*uI4Zƒ ìÅ¥_©µ\²imÊ.yËræìzû÷ùc¡æëf"„±u,_ïE$ËK*Õ⺠ÿk÷‹Œ ùGµ>»Ðk÷XÌ[4;x?Ù˜]i4:Xa(­yrÍO�kvcqœN§öw§°MÊ�›:gDãl{°Øóry‹Ñ™�åì³ÐOå‚󇯱Öï…ŒŠ¿r^bñ7þ"ØÕt†ßî ­hq¸.`¸•ÅdöÁâ×<ò‡­a'÷­5묬”¾¢”ØÚ°ö–²ªu¬²è Ô‡†�'"�¤Þ€¥m<ÆqŸžñ.‡ÉŒs`Þèšß³›€;�¤Ë9u,ã[Nµå/ø*F,Ÿ“|Xžâåô#{ÞIT ŠðãÃÌJb�øaM¡™eÕØç)ÆY¿€NX΂ Æ„q0_£z} dB°"µ‰¶Ò¸×Á™P]p(Yh�Ù`ñ �T�¯±G¡�c™& ¯+ßâõ»¿³ØEF…:´sÍÇ–Q`Œ0¦)Ñ‘ý`èÛ,‰ÉIÿíB@¾“•†…Bê‘¢e…t3Å Q¦å„9ΓÎ;xNZrP,í"4ç€jÑã×.tɸ‹‰ â˜):†ŠÓ5äš¶–¸VóÈšÙÚ(%ºH�!l>`š."]n<ˆ¨ØiC³|³¼a Añ®§ú¸ôá)j5„A2¤¡Ä8°¡`.É ¬Œ½†eÁ`oð½ç|ÀLJÞB ŒJ–žºé¹UžW1lM&ƒû.ªKЫÆ'SœÐøm†èÈYØÝIC3jN~EaÙI[62¥}#)éûÍjØ|Äc¤¤Pf œÞ÷¥YãwÍ®l¾7îÊÍä³e˜xV<éØàÇÆ]Ê�gåÐ+Â$ÕKÙoI‚¹EØ)ÕYÙj¢Á¤á‘9Ãà,�–S ]üÝ„™Ú梨Qò �çÀZ<ô°pX<ÈÈ…ŠîÊAE¶ë9ŠJA�ê9S®ÿz_›Æ½U0fƒˆkfÀbÚÓæ 謸m«‰Ù6ÁŒGU6~%jÐpuÖƒõ:kîÁ:ƒ/ K¨2'k&·á݇™�‚à^(rwC ™·‹º×>È£t»«ô�Ù §oÚ[eìÁ:l"Jg.c#¢ôa^=8„¿•RB> ‡BÞo–”ãKÖåî/®ÒÜat2Úysßý~)âé•îPªBÊXÖ•Q�|i•CpÛMF Û³Z?c ߃+¸°y»’“>zeâ€&¸g¢G “{>Aë™té­lñŽÏj“JÖéWÄDÙ¾~'Žš¸¸šÿ¡I‚ `�ú¼±Žü')å¤4l/C5°U;ýꤌÕZ²aŠ ëÂy![Ǩx�¨&H §ÈJ¬$îzýxrv« å¾~1!Æ`:acÂ?E§FºÛqîR~Ó佯º¶Ì`zŸÆ”¸Ë9ó›Í­¤Ló`ËôÑähJ›HÃæ¹û¨"åÞ7·ÂØ's]£Fݘ¯«žFß9Kò Q�qM¬€ävw°Ë(*ƒÚƒ¨AíþaÌ 6¦�Ñl@`O+Q&',I[�·o‚¿(8ýQ§¿Ã$Y ÜVh@ýQœÞˆì6ô'¡�}ÿDbVú|!‘*%†ðÂq!÷Žä€ñÃm^Lâ0Ŭö‚N^¦xNÑ 5L±'¼FGÂ{‚BqR)Be |"zl‚z'‰ôOAYT8€dz؈=gZ¨ç„Í–[•çr+�æ}8kZ¸ML$ ¼[£u¿ªïÇ5Ý›©:Ä×þ;ÌOts‡wÿž”f�6©�ɲ“4ƒj&*Å`)«fbAá�ÚÈ‘“Çi)'=Ns oÄF5ä™[pbŒ``|Â2Åk /ÿ$†jI摊N~ºþ¡2nGm"NHJ’‹Ùp•måʰ'aGÏ’Nå K"8ÖK¥zÕ¼ôYîÆøìEg~©³yšO3‘L…RÜå H4ʫ׹js!uÔ±‚m¥°:JŽW,:ò÷PþdÕoÎñD^ž… F¾¤žØð¤ ž½×œg�’{“S;[W å1tB%{}tÜô˜/ïM†j´b‚xí µ·ÈÌödÐE•�4Q‚UºbÔßï=*DZ4Ø™ékÁ.c[;�ÍÒ"ð‡Nž|9:ýüGýøìÿþL&´{÷ûká N£Søwÿê´ü™¹ü™©cF)ʰ,½�¤7„¯ü³iKª¸«´ø[w«EAéCz8!Ñ‚` 1ÈÃ�H‹_x¡g ®CA0w�† Ó«8Ådâ�ÈÍ( W™ÈPÿjiŸr¡&�d«SØÙà!Fq$XŽúð”ý æ�ìŽ�E‘�1±—Zç`W ÓÌm¦´ûA A ÈG.|„̵†µúË"R*s?åŒhŽ¥ð ógìÝÐúD›ª .ƒZ ŸgÑÚ·b©2 #ëE*Šõ#0uÅolöÇ.ðõ_åçÀ·ž5@Îf a‡`\³ek†\ì‘Éxð�Nã ÅT7ˆ®0{“½‹ ½°¨S ZwÒ¸NŒ`Û¬Œá|ÂÏ4k4ÓsàS*c$¢B°ÑDÕúüÞªˆl îà :p�?�-šú*„b0r[èþ”àÖó©;ðÝîøùïOìïNÚú4ˆx>'`„Òˆ<¼µ*£Ä§‹›³Óå­?èÀi¢b{Û�°#õÉdè~w[fª3ï}Úµ7@ð•öá(”ÛÃpŽÚ4[Œ!ÁÄà}©NÄËrfO†eùx¯kQ8˜¡lH‚¹²&&*�ßRº6W\Z[‹�C‘ÑW¤˜…¾ó�ÃwQ¡d©7 óöBß‹÷ÉáD·ÖIŒ¾£ûˆ9AÊŒ'àß[°»ŽäÙ=ã-<¸×2òã©æ ¸0›®ápÄðä­Ì³åÀõS&Ç'Ý aG€‘À'(0n¥Ý Ù©vÙˆ°¸`¡-*^yûëˆçô‚ýy”JMvo„ä žýPàVôÏP¶•‘¥_Ä"ír¨c‘ö¨ŽÚ¨ñr/°g�½È�~!ZåE ¥Ýò"“±ðÑ޹7íØíV=eQD5WŸ)Õž±Uý�[ øJ.ujÔX¤ŸM Ç"� ö} ê ïo°@-?K¢¹ßz¬Òðù…”þ²LëPÉó„cKÙÕÜ›ö]" ºÿ\D¥kû—¤Tßf½j%œöºÙˆ^ÛpDRažW¦9 ¡i–ÍY7Mý®Ä"r…Ÿ�â8×ÚiÕnø°ë³¶o Ë¢ìU¦dÖŽ ¸¼{}<µƒøcéé.¬²â”íC¥ Ã�7Ciep4ïv]«{¯–ךàKÏÑÍ7LqæÒÂÙHÚhÓcBz ð*–#°3AÖ7§ð½K’((öÁFÞöE²„WsXPßY‰ð�†+Oô`¹¼("; Ôgu¡€sÎ�±¦È{×�åËWêäºÅ ürm�ùJÉ<Šž¶Rø—+…Kq…60ü~Ñ&æXD†ƒŸˆäwìõ¤ñP’߉©9¨ü\Üñ#qžJ�˜1ß!ÓIsÖü6pŸøOñ=•ún<ý¶¢²ã_t­ü¿p‚ºò?€aújñ?áÇ”—ü…€5‚ó¸˜{t‰μYi�4°‘ÛßOÍà�VyìâÆL|V­–RpæÎçÞÏ�vQ_å ªÙµMu|˜5ò÷•J®°œ5rpa—ÎQ©”–ˆÔ!;ðy8nn(þ,Ÿ\ž,#g±°)ç~Ž—0t§ó…lžb”ê53?ˆ¿ äêRî&2Z ­Òœ¦^ø ™’¶¸Dú•Mi¿ÚÞk½ÌÜs)j’ÂÑÿ²“P@™! Í/‹²¢©à-C{°yZþÚíâl¤1.i­éüÉš�ð­ôY«^A­ß'É(é>M¡Oà }"Y>äÆ:4ÓôÐì JÐåÃ1v+~™B1IÜÅ=sPë:~¦ T=Á¬Lˆ?‹ÇTêNRó—·'ƒ¤RÑd4¹cõ,ñ²N3Cy¸Ìiïí[êò²y Û+úe-¸ø‘J-Ø�6Ú8–¦t°s&+\íÆŒIÙÍ‘®üIÆC1L Žàs�±;ÜÁ³å�–ì4˃�œX¤+ΗË;‡/s‡ Fù(âa|þVO¥nØOäË¿¥Ruö“#™4ù�laÎâ˜va{ø‰Û®È /�ÎÙ…ƒB)_,DÒí0è�™Ê0¨á� n}Uå Så�LÓaRp1ãò—sñn/C)› ÉS½Ù•V|’J;[>FðÊ’ À¯P~P–‰4Q�?ØM–�y¹”òß0!cŒO[7û¶­wôعˆZõã'œnðôOñK¦ÖЬš³�@±……øƒê8XcêxÓ*’�Aƒ4 GIà0Î œgà׬ÕŠø2ÞWê¾ù¢—(†=0Þšr ŸÇÇÀ Sd91ˆŽJx«`…¹› £±cðä;C;x=¡h{ŽMÂ^0 7§btJƵ‹¡î/(•ÛI€«!\uÀ¹$�<<7ƒŽÆš”Iÿ´Íf›úåò¹øËås†0Ì8¸YÐja§V­àmbmȤßÔHµZÍRCŠ>ˆ´¤ÒŒ¦þó« aa…õ «õ ëë/íVÿ~Nn’[öÕ©11òŽDnïm®[KƦö4˜ÚȉLÍ)�‹Ü]}¥×� [±Úõ,þÕÇfî4˜¹‘Ê aåùܯõ=V»ž³¿£ú•™:5fêÚÔÓ_lœ¬Sc²Fš(™M »5ñf•/`Ã? wk} &ƒyÎuçû0¶äܓ҅N2¡±æŒjR©utÍ[Ñw· Ž‚a2ÿ²0}Ì}ôpwBœÉåwFñ(ävÎ{Ì’g^{ìûÀ BãvKm‡w˪0ëd2ŠÛ"ËJg(ß4m#�sÉö‰K&�y4¢a3Jc|ûŠý ‘?W¾¦<¡$ëIf³5ÕÚŠÉø úm(.šòf8î+A—ç—9Óp'§{mÝ«bйŒBº–>¶3~Ææ=ÁìJe‚f� уS•wD.O8Ic–ã /3tqp`9Yþ"fH‰¡ts†VŽpWCƒ—‘‚fb3)ÃàÌ–K´÷?óºh òRcS1K�.( „wÏrJ–ªï¢‰d¼Úé­‡öˆÝL†?ŠœÅQ¯ÖM/ªÂ®u> �ÎGÌgg–õqX9Ì›Nóá'ÌKùzؘjE„6û8ˆJû˜S, Ð+JY˜�D cª¢T¶ú�b€ Û>åShc¿Èý <Á·íŠn¥â/§hÈã—'¨w1òwyWæŸ`~5ú�Lft¿v®ôñ…÷5¯ï¬™0 ÍOé£G¬Il€l.šøÁÚb�9@U5‚÷ˆYFîØT;w�šR7§Õª8(· Ì;ôq˜V¹ÚúM\1La½™6V<„™6oã[Q1—й‘b°p ¡N;3`>ÑHA;~pkÀ=:ÓZFOG_”Ý´PÃ=̈¹ù±)™MY]úÃŒ¿50µ6‘9\c¬%Q+ÿö.ë·gßNê××õ¿Žî>>½~øvvúý†<Ìh×ïÉ‹wBõiÙ][ÊòºRÂ7UÖìCeÕBV+*�_I�Àe£’¾‚2�¢93˜ òžµ ïIYÀ ¬eÒ7JVW7{®GïÈÏàes×¢»‡ŒÜ\¾ŠëTÊŒ:r �‰ö96G·#³]ˆÛTêÖÈv…åZìå�_ñê«Å¬Šâ.¡¶ÐÌîXʦö±8eÉÛ¿®NOÔÈßÖ¿@ò‰˜c<Þg8¬¾N\¿‰ºò ë¼iñ;t’9¯Á{86§NGnÌ7€4"ŽäMŽK2Jßí!o \R)úNQ ‘ÛbAÞ–Þø‘x=ô |�Æá«02Á°ã Èžá«W5oܾVÊ‘†!˜)7gx‡h¾>O®­+iÕü½µOœMÍ£g3LÃgqϬ„ 3o+©ÀÄ€¬îýâ[ËeŸ!=,íŠ�8·ìHÑ ºm^´juÖ´Ö÷T œtÙª9Ú\ º½o©ˆ†�%NÐ{•]A¯`ú¬^/ZÍU(”+ ¥/7ÒüD�ÊÆ>¢qþò+£ýÇåòÿ�m=Š+cul®ÀÈôHU�à»@êâó\@2oÃé³Gþ`Ts‡ŽR/˜¸Iæ:4¬¿Ç÷IcqÝúBvÿ˜�MHˆ×�{£sÂc‹×¹Ký?mךÜ8’œÿûM„W� @$%B‚h¹­Ëžnu4µžÝmiJˆ¡$ÕÒ6¡õÛ>‚ÿØ7ð|Ëq~YU@¤(Ά=UxÔ;+3+óË�÷vXô¤_™Tú„[–…úûœ v¸Ýp-Ì[ÑíáúY^)WáMö¸XÜÁ9ÌZSÒM%B¶Vл‘¾´T¤¿¢daçZf©ªz¬W$ÒÇ“"ŸÎ·¦6¡QCœJ(;í‚sç æ[ºdšïüò'Ê¡iAÕø‰«Ñ óiîœQöb‘!ªòj[†´Æ£µ-Êm‹ö¿ŽÂŒ¡FØœ7µµ-é|2Á3%‘�­š1Å"F9ž.)ZEª&Ò(¿éög{�”È5ŒËÕ;�ï¢5U+@:’T#«”Ð+‚ۃpÀ,÷Oè0¯ «„ D[tÝ’OåÊ=&3rÞ<_¹§*ãsH,çÎöÙaÐï²:õ5Ö2šÉJ=fé÷Î…ˆäW¦Á,ýåù{qk‹¾òœþ“e¥ˆÓáYE‹ë“çlv’�ÑrŸHÏu8öY6+éÖ”‚ ê¬QuÇÁH¯ïW£bD'*IÝ€7…­ròaf‘Zåþy:ÏÕͳ>Ä“I<�hù_O…¼]ÜIæ³h*„ï<3MàÄò¤e åËiK׬vÃÙÝï6�½¦×=wö|§çïö[ý~ÿ7$ÎŽ ¦Í®£ýãâø.H'ÑÊK8„ǃzÈ®¼÷ÊFþlÑO¿ƒš%2¥wЦ¢»Çæµ=1ÍypÓ|°Ú þÌÊ �æ éÃOâ§0¸oÜú·�{«Œ7ÊËqÕ�/J®Žû^OFšìÉ•îö*êóÕ ÿ]ÝGž?69iF‰´é�&y^¨ˆ«Zôd~wep{Ä7g1>f‡½æGÎ�9?:: \HY#È,ËÝAÿD¸^‹Ù¼Ñµ[…s÷7ÓŠQå:bð~9úÞ�ÅKÔî/†gMZê0]!Ƹ)Ý u:¼†¯X.¥O¸xÉ×(—�÷¼ŠÞÁŽÿ¶!º3_ë*� ‘D•S�:¦…‘�ƶ¯U¦Ø$Œóª³ôS†èÉñCÄáŠÊ@>·CHwøµãM±!¥Ké®»=ïÉÝPÄÔËkHW"NZ³@Ý̓Wýƒû*�l¡!º%©§ œiôæ¶):¨²!†AN˜ÅŒÃ:)]  ˜—òQ BD9-EÃ4µùQ ò(…žüÔ4J 7Fp«2i*"•!�£,ÅE$á†,°iíV›Æ) Jì¶´JšL¬‚�¿§L™Û_.¾ÖÍVûO.Ûömôøš§  5m"PÊIå0ù…á -ÎQI.–ÿtÞk¢¤Hcæ¨ó.#Àôk\ø(Á{òöp|`e@–fJb'T­AJ4ȧ?&œ±2øZzÝÞÀø…Ñ 6ÐæáY¾ñ‹¹Ñ RÎéN! nV<_…L)�ç*ß—ëB¯âäZ²z¸ÜŽÇSѼ\é²±+C5õw…Ë{ëª"˜�ãxˆ½"ظ\æ6ø¶,$±•sep-!ík™Uô½tPƒìœ±?^ò%½ Œð‹ÑHÆ¥qp @%Z«ïíÐPø™lÇøÞ4ËÒ&FŰŒÜå o L³¥;�cî�b ¥ïaè^±d&œõÛ,˜ï§sú€:Þ�RM´g‹¡ÆguÛþp�wØ›ÍÃò3J^T=÷„e½¶°9@lâŸ;º#q\pU¸a\;{*Á4nÃ马 �EºªZ?CI7¥í£56§öXað�Êð½`I‹™Ý]Õ°±�æ—^H‹€De/<+8„Þ%†ÂªÖ× |+ì±µi²Kln`©Ÿüêtx>S^ÁʰT«-a&46ÚªŒ‹+sà_Lí‹ú—‹áÅô²>¸¨_´‘ÑFDè‹ì’nà§aÕMÊ™šíËºÕæ˜/cA%áØWKá×9ÏßðÉÒ4¬Ss,…VË‚³YÅ­Ä0–ÄV�JŠkàyùð²ØÔ•"Àð"0“¸ÛÀ_ƒ#˜­Óç°Ík•£'žÝƒ|u4ĬU&üÀ½ W^³ ƒ´ë�áXq¼êXnRÕª�³:’^"Mtäa¯ÿnRÐUç½ÒµÃSÎá}!’îIÏðî¾�9áhÁžáôíWÔwª>y¤Q{498’]„Óßjþ�Qø“¿�áÀ€Y¨o„×׆ý9ˆ ³æ,ø³ýôy?¾e!4Ï’ç`džÑøña&’ehæ¡ ‘-EL÷ØMÐ7ÄYAéÕⵚyL3"âàV?AoÓl/— Âbfˆ·ižùÚÛÙ€u4>ˆYùmÊØ¾p]aTr"¯> «ë¶,tI™]»5?ƒö™Ç‹Å™B^§oJBótŸ-æh ˆmÖÄîœøjsét—†chŸÒœ¤—8Ö™ÔÆ «Ž¶†ëÆGÏ­/§—æñàÛÒo:6ÜÖïìÇà¦-€.°K_ƒ‡2 çšå˜5ê­òË(?igAW§GÁ™�‹eµÓtD9‹…I튴o1}˜ÐÏ™°QO‚'S~Ó>/„»¬�¦�Å©É:±‹8¼þ‹=§m‘göYÉ]àܲ�y‚¾Êç¿©æ©eky˜?–=ÜÙÑòn„Õµy²X\Yúê!*k…ÙÎŽ<#“iËþÞåadÞRTŸ×‚ÏKû,»Ï1µhú$PwÒ®Cr2òì¡eŸoÇIúߪ]_z5îîÉMŸw:8àv{Ò·#p=oO8àÂèäž3˜°Õ`6vkwÑ,dèö”Ôáu8 K¢íDöƒâ ¾‰¹§ægFãºÑ°¿Å‚òÝÿ&v¥§@³jÓZßær…×Á“œô:î%¢:#èq0¦öd5G¸÷r˜ ˜?\®=#JnüÖ¸øH áÏ)¿EêIå–r�¦ìˆÓnx1ÁÀZ^ÙIñjK[c×…ý̪u’#4úg_å1ú‘vý©?m�…@Ng=UÌÅïœ3TÆôéî*�ˆgDÍBþÍs�!m ŸˆCæµ9FÈZ95¾3,¼JŸÚ ƒäŽi—-5²|*û£ÕÕ ¿Rš€É #æpCYjÒ,í4ù.‹¢ßEþêž@›`ÚÀN@KT£ôUà”ʂזÑ^™yveÏc hiOOgQ2�iN2· Sȹ ­ºì±X„Å~¤¿¬mLÌ.ÃÈ!\,J§«5–LùÖHAð#ðç[•+W :•,&‰V˜R€ëE$ˆ®i:Wx½ôŒ˜‡©{À›t ›BØË^W|n¡=ÐN*oy5¿--k¹‰÷TPLË~¸`÷w¥*¹ß‘à@`üJòìt¬9÷‚GlÉeËœ`—Mÿøäñ_ (y][ÞáýrUí©¨ì$ÈJ[f "›Ù$‡<Ð�€˜�$¬¼ …K›Y6�‡hQ¾‹iÉ8ÒÁ)k!@Dä�°êÙ—©ÚX3}cM–�9˜hläSp I1ÜkyYÙá©?©‘'Ää<ñnŸ3Jƒ¹ˆ$>I¶¨g0¾ÉV÷´Ù ÷'"‚‘ ó›Øå8�Oý4¯Ø RL3)ºK@XÝ¥¶¸ñÔPyÌÙ±ÑL™ÃBŠ„îƒFÃÏä…Mäø),gs-ƒuïLá¸ëƒiOBk†DM|)Í�[åçÒKi‚›ˆjD$Çs�°±D0FäíB‰•Ÿ§Þ�88)�erRcÅ2T"W^p�0@””XIKö6̤¥zðby"(.EWÍ0ÈÌÎD_d3.é³ ß=�_r FoFݪ¦–Ï2¾¸^ÚŠÇ*íBéÆLu Îô6Ÿ-‰=ÓA·Iê�Eš(ˆózªú¥jÌT-c½½@m=•+�0`²%<ü*‘!Ÿ[&³ùg”ƒ”›Ölú‰¼°ìZ�vþ?ÚfIûÉ‹Cmoã«F3e Zà«é#ÌШ]"¨Ï�™~@í�Tû¡�òÖ.mâmýWä¢ZÞ÷¹–7v2(Ù Ÿ@¥5«¾”2îìd¢nì|óºX%èȪlµ\úßHØÔb–—$OýµYP¼(ª} ù�m`|Œ×L'å0ð ⥠×TðÛþú}#*�ûÇ‚†ô“ZS~´"Ý<è‘@R;Ç™K šf $’´z% H±ÄCm‰s$�D®=è�’bÀm!ç£!#‚ðÜç™LO ÄJDmÄIJ*>H¤"€$<·ÖÄÑž³p%LˆxUÞÖˆlQqn�Ç²È ´k ï 0¥ÞÂaÀñ®…yÂ(�Þ®ñ«™þM6SHßð±Ñ˜wä­²îñb±ç:5Í[ÇŒÍ�|ˆÔúpü«¿þ«ã~y‚£þØÌO˜�™…¥Æl߆ˆçàZ �\×Ú¬ŒêÉ]Ý6]ªµÕö¶:AÚí‹àjªzü>ýúj}7ýJÇ#Dj]µ ¶¯‡&1·½»nîU&Û4¾Ñƒ£#ùZ{‹Œ‡ÊçÁr9füÛƒ"üçVgØgß{'[<ù�î}ÊÉ¢j3xTç a°ë6að�5Z]êËßÝr(úùPèäÃ"ÉÑëUÔ Pl ²4·;Žt¯S•2QIÙ�ˆDÃUžö4ÕÛ4ãçubqëæ¼í½A8hï\åºH ]X‹ ¢´*=Ïñº­N¯»×ïì;½=w_Þ9\w§éEMw¯F#®4«'.mÃB¤¨'IQo�5)‚Ñ¢­Æâ;NkZãqŒŒßõªe#Àêäg8($JI|ã¹ ¯Ö´˜qá 1'»ž@þƒÓæ®çÙˆ S7½æ\yÑ=¼¬RzQ mù‰ ��©¯ùˆ>bnœ³sÓÃñ`R_£v™ÑL ›ôÿÒœ¶Çí¹U×瀾#Ž�ÈÕ¼Zõ©Õ¤MjjYG#š4äô©ÜWpRÓz‡«ûtŸÎÖ�²Í›‡°äñòåƒs¶4ßšmTÔJ ‰‹ÑXd$×Áu24&õÿ 80~æ‡#bЩôP€À„r? Òº™ãvdÕ“† U¬3‚èÈP~ÔS¾ŸÛ3ŒuÛ¼ÛÆu™mÔ‚»*¾›OÞžõkt/Í.TPyȆ®Ý%Ç«å*RR‘>¯ùZPJ§#½nw·K$„fX4@¤£�šµ�4_Þ‹¸6L“núƒˆk#®S2I ‚Ýÿç¯Að5/ÁÞʬòHŠÐÑ®á:'ë8&§Â19å31¿µ–íoUðÞlëvj¿Í»Šok›RZ}¡ulÇ@—bûöÑÚ>¶ ï‚«;õ°âÃßÞ×NQ¹�H>¬�ØV¤3I‰W|�UcM|7³4ÍØl–o »97á›� s´nÃ|cËÇ®¹aˆÊ¬`•´� ަf÷¨Q h)â˜LŒ¶¹- Ñ–WÆù¨Ž-+õÊ1þ¦©0Ëèqš =÷õ© v„)ÆH@9Žå�Ž¡zVÄ‹¤;uħçgÑÛq=W†Yd¥H'Fûð W¸xÌϺ¾â�.ƒ'â‚#Éò¡…ä†Ð‰£–¸F0fMÙù™nÏg0CÊ-ŠÏEJ·~›¥ô•(‹GkPx¯¡¯Úg^Å701Ì5ñ`oø#ô” /3•Xç\lNP#êÉrp‰2ÇÊ$ü³i¼xàŒÒä!Êà‰3ä$aþn–RŽþòÊIÒxggœÃŸ@g9N¨» ÚíÏÍ1Là‹N§ñ|Ö°¿�{ßópÏõ ªQž‚ïhÿÍñf;ûâ5‰2�Wh±•åûû@…§µÕéë0ò{hÞu± öé~·[“6ÆKÚgÆÁ™¨“Ú·ç¼o‡sqÒgލÒ1̯;Ä­ŽŽR­Îjý݇Ù4:Mf8 TgVTãšC»vlïœÔåè#tí\ñ%]5œGº´Äw¾îåÀçs¦Ê]qrüc3Ÿf8 <8줔½¹yjG+Ѐ@5„gÁ½<2ayDÿΖPCîÌc‹–µÒ`ØN?Ê+j®ýñä{á2|úñ»Ó�§ç¿¶?� OË9'Ÿ†§?œ}´ñ�áñw¸s~òýÉgþT)C ätA}ÝDpÔD1ñtŽ#•Ç�Ëú¶êg¤3Iuƒ|g&,‰Ð:*€ÅQ|Ó@ޚǰYýÕµpûÐ�÷¡}…{‰šÕÀ©}Z²Hì‰9²‡´Ð¾•Oí7a»�òœÛ °³ñ¶˜nO7·½’.Dj²è~ŽØÊøb4B˜GÒÂÿÝœ<Þ›Æo�ƈþ5êlÃ'sEÎSÖöa‘Cャ0dtw @„±kd�mž–5YQ9ÈÐ'…u> $×€(—3w«½\Fº˜]$�Ο^Œ/²wÿõÿýoÏ/Ïôßï_žÿöåùï^žÿþåù^žÿñåùŸ^žÿùåù_^žÿõåù?_~ÿïÿóü|1'‘tŸÿö/æãh<6ÞÚóÔ^¡˜‘$MÞW¬ô(ëÇíû¢\¾ã¤÷6¯U)ŒAKĪÇÕsÞ0Ïk©§µ‘�ZJuGã`s Ya5(w‚ÂŒ`gSåM®v]½å‚æŠoæmÝ~Y“³®öòk¥êË<í0#á“i­aûfPš¬ƒ­z» PÅjRR—�kùãmv°çéÊ8�\W¦F õ²µì O ¦¿‡AßqöÜ~ßëvö:N¿ïnÁÛÿ!“»Jéý•rÿŠ­ì'~s›rW†¢lY_­ˆ”4ä¬+¶¢[ÖéÍöõeJejÜ“Öõ':RtêÍ¿‚Ïd‹mpBIÁ´<ÙÙ™´Tt\â“Ýö”h½Ñt «äPL‹lËÓTñ·VÅLå¾ÐÁÅÜÈœ‰`8¦f!„0C·³c4‰ZŒÙ bÐ$I{éOß…=ççŽÍ|m (õ>I^÷¿ìðI0ÝÙ™~´û¥Ñ¼8�혺h Âçå&د¡'h0œ}ð{ž—§Ýr&+c2Vc2©ŽÉMeLÀnj: 9&¹²v¢Ð‘,æ½ §‚�Ûó]˜Ao¤U�Nˆ�‰šFʽ’�¡;ÒšÃdi~À·2(ºBñw7…˜ÿ ëç¯ µæ“¸dM$ q±ð"¾%Mˆí�ÉÅÁ´F"G!{} Œf¯E ß!!ß…×�Ùìõ)áÙ"„†ÛòºQÃw�è³/òwéFGÞðv;]{7v£†üŽ×"ò Mò’ͬ Ì)y¤ÇÛ«÷›ú$_Öª�äŠÇò—Vž7¬?¢ãn¨E²î$�*ÅnƒZêÞƒZv5ÆÔˆ8¸bv�I–b+àˆÔÎq†íÚ=¥Õ=éx&€ßgtä9R�ènuã,õ¹&ñw6-<ì¾’ ñÅ'¡È0„/VÌzVº˜âÏ)G*¦»Mº&:g±ÑÀ)â~ÃhóФ,ÃŽø$Ï<¡UwŠ™ý€(ñCzà˜„d×±ã&M!¯~z˜^ÝOæiûزè­ú1}}Øhº�ÄÃø2ÛÞä[ipki„, ÍÔ†µ5{3#áZ¢fñ€$I£ñ¿Ì]iwÛÆ’ý+"çDÓ° Š‹ 4Ìql'ñÄÛXVòAQ|  a‘€”Iÿ}êVw på—7g^Þ±ˆ½—ªêª®ª[ÜzÍ…Ï›2½zgGb(BÔ`ŽöD¼çÖ}(ñéšÍš�ø j“ƒ›L‡fÁ˜lšj6› 9’ ÓÓRÂôPçîý~ót5¾YÊç2–€¤ç;Ém×mõ èÒ û-Û’Y>¡mä5Ù²ÇÃéx±u4réQê_wo/zv¬Ê\ap’'øiýÐòOèúXÄô‹Þ8çáÀ_›4xl£Éþ¾�ÂÖô6ÿ¥ö¢=?­ÞW‹~HžÐËè]^æ}V¹>%+ÉÈä7Öëù+‘ÝíFì]=p4 ½Ñv¨‰¯ð¸«—8ÑÞˆÉôd_—ݲö>tÕ’XåöþJ€‚ D„Ÿ ÅS‚íî®Þ’'§$ÕpH²PžÑR'›åÿµÚOå=Ío¿yu|ÕñNŽ›Í§M»©  Ê "âRg,3Á˜B‡OT7®fyDK_f^ŽÝ z½þï’�ø}¶a¸*”~!P‚Í©ç5w¦£™I Öe::Ñ–ßnÝÝÍž»ø¡…WJ  òÕ‰¡‡,_f.\j³ç-Ÿnd©'’Õ4A²Åw³.‘i D² É ¢öyÈ)lt­-/à|;w'ß‹ÙiŸBlÐ2f=köôÉý„N:³y„â*÷ð¨Ù9:==nŸtNš‡§Ç65쨽Ÿ 6‚[¥™LŒi0}�_¿!Ô2®€�HtDût¾ò>Gò!î|‹K쌴;]K²žö {²ô<�6ÏF–m~/É/·±‰kré‰×á Ìæš»ž¹ý1G]ß»[{sg*æô�x¿/¥6q`9ýùcjŠž””%¥Â|$º ‹¼ÕÚ½ $K2nŸÁ±$Ë•ïê›,—Îd»ü¤‘;%‹Dö…Zà-'ÿi¯¸YÒÙ�J:{5É¡âqUÚ^ o‘JL–›÷ãJad¹À)½ýD寫Jr¤ß²è²’<¥OÓâ¶2N�—¹"›Ù lÝÝ•G¼À_Ñ.Ëš¨Eww(ý6·WNëÞ‘Ú}{/cßý»´kR8%€˜]¿Êƒä;¶ù@‹Cæmzk›&¹qeñjr‹íÚºwÕ§^ Gá×ëñ$Ч%)Í€È8çÅw¥É"¬K—–I½CZ·t2Z9Ý+è`}õ¤†^Ü£ÐÖ®™à£„>ŽÜn¼�,¯2>�Ûª<¶=®¤>ÇâWÍ’“|ABpâöÙ]4‚îàùBF´ú´2ó<æCŽÝIoH„ ¡ü?-3Eß{>êZ¤À\Œèµ¡¸¢™šbÜæÓK×§r!1¿wFmNT);yà‰ƒåä>¥ã#}` ®Ñp'Š�Û:)ëiž”Õ�±Ç¶ôõUp`_¾H"–ÅA¾|)˜¾zEN tÎå™ ‡•EdKZÉ9¾@h  ��¦pU:¥½o’Za5¥&¼Ý]ïÙQçÈÒÙ&Òô¢A<VWwâLuBÁ$ÍÆcj½ù2P­‰J¹ œ…š‰“ñÃ&9V–_%¡ú)’A@¢U/£œÌ¶-aåw¶d±©‹Ç´â¦Ì³µ”y¶‰2Ó„2ÕBE¤¨ók7 /»äM@ˆÊÊ-o¯nühe½:Ñ5%Û%…רF ñQh¹‘õÀã‘1Ä«´½±WcÝÓ^Y”S&YxqÙMŸ�øpAe†32I}…}1²³Þ½„dü¥ƒ øç²ãF�JJJæãTÏ·¶¨ ÛÖ8#'åÌTΞҹ}4BŠÒ>Þ‚3Š^$› ®ÊIƒ;òØç>À2KªE´ºlµ›ÏYaÜ›ãM ‘Œÿ›¼®Ò˜q²Øa½ÍÓ~ˆà Q—1x *eÀ‚&­ÀHÒ?Ø[D-» Š6�$â… Ç(ïGz*…q‹lÖQ•ìÙRbë+?í'áÔLoÛYwG)-qÅÙ²NºZ?–ЏÜýˆ¸ƒØµTP¹˜Ÿø¡e=ÜÐôôá¶§b)B�qóBVrRÁzÄŸ¤OAYÉS}Hgáò"1öÔYuá’#œ–7æ®jzx–«4Á'‡Û­(«â¨jŠùVä'K’X“»¼ÍRSÅ`Óp4­öá6”¶’BË”—C,Jsfœ7Ø^ÒØ6Ñ„Ë<=òR‡£”¾çyFYiŸ.ûCMwžòZòv–ø$“È5Æ;kÐaë q2NíDý6Rùd›Ñ_‘~«Ì9óÔf£®"‡ÚTKoZ¶YåÈ?ôSÿíG�& %ÿÉ€‘^s~‹é@•g g1¨ˆe•Äkv®Ðµ-ý‡t€ÇuïÌ÷Æþà_íž|KÉ?Ìgþ}ÝÓe³IÅÙ¢ñKÈÉa.F�gV4GoJàè­TÕ`;O•XQ€,gµà=J—ÇñõlºÊÊ*_1 ~èMM‡eVwß²޹(w•$�¯÷7£pì“ÉË�¢ÿzºJk/_ùŽž¦ßÓS�¾PV =­DÎ$›õ‹5€-(s¶Akôà`®¾³•e¼�’.K]2|„.ù¸î¦Äâÿ@ñ31×?º-siyMö¹ÀÑF;ê´ 0Úi’ý3t©‘�–‹ã>øvD»½ÛûßÍÜ@Í¡4ÕŽì…„=Ù©ï)°@àm±Â•VÓfCAYVy äñcÌÐJxK:¤Hâ{#Y*«ß»el&•`ÛòÏ¡üs$ÿË?'–åR8 Óq¢êrÊ쥧¢ãPatpi­¡Be›kÀ´�Å Îm¢àÜ®4È7]\ƒ«r5O-ÆôàÒ\°3ÎøÇàÙðãpløAìúIá€|àO0Žôòw\Ü�šñÑ­{LÂÔ¯Û×îçÆËïÏ>:ùùÃ'û+zý߯_~~óáý—׿‘½g¿§sgç?¾|ûâììÍûŸí/î§ZD|D®OܾW(ãõÁ`–s÷ƒýÖ}eÿè¦F@ûït4ˆû¼Ýjÿí20cßOSû7÷Ù-?»¿Ù¹µšø}w÷÷†4ø_Cò!f¦S` ò Ëþ•*G^4 å#ñAÙ!€JÃôó¨ ÝT�à'Íd"U”-Y#£‘ÜÛØøûäKßÞjø FnRH$0[Èãtvø{Y#¾v²Fàô›^�øi<ž™¿ÑHÓ£!˜x¡¬[3ë ïîN´¡V7ò~�,Œ~á¾�ë>º3î@X@ ŽßYÏwCGp´ ŒŸLÍ�R¼ :ù-ÌØ©ÖäX*ÒÜ1ì ‚^ ~š"öû#jÔNÑûu‹C"ŠÁÄ:Úö©�Ðxq°+ÐWäȺM%¬dþÅ€N’°Šâ, ª`&YƒO‡þ5°óÀg¼^‰þ& &jnÒ®/ë„ÕµÌI¨„Ô5_ØG-+�m1ªìëb—¾A]K‘*¡¤ûWOа”HSÔùO]¢Áa ÝÄ<‚—Ò,Q³ˆª‘·f65[ZjFQq'roÕ œÄ–�#³´ö•>Ò‹:‘÷^viõbºÝ�ö Ò×ó¾ì¨Çw v@üƒÑÝOŒÅ��ÚU‡4-PpßÈ1gRçRè©9lŒ‘ò¢òÆr —†¬‰|æ1üÐð4Œ,£>�²óR„¹mŬ TF2-ÞÎrl%¾²|³þ”ùpt‹.η‘ÓWˆ��¾ýg¶s²å� vÂ,õÇA]ƒ4REXz¯—œ¤¾{«¡>ø›T �¦¨ôÀ†|¨^a¹Ì%Ô”0‹©g¥«NFV…H..�[Ë·Ö†·ä­ToãÌ�k­ó"%G ÈïJºlߣñ*(MÆQr’ ¿¨˜9ô8+{›¬îk’·Ñ_jc"é µÑªM"¹ýÒÄ—ù¨Vl-nñ[²~åÒÚºÛ;§\”ˆ4M…¶Å@4FbÌH¼uÏKº7‘@ wžŽ�rTz0h™ûM|“�:çöG½pÏIéÝh&@=RE±Ù0€%€j¾Cô7Wzÿ@Õï]È€˜'ª8頻Í{¨K󶚪6/,Š3my¼pGP½ßL&þ „ú†N0R[qê“;ÊUìôû•Z�È45~R½ ó`ÔxG·xCÿ%-M‘?&CaÔP‘›×n“lƒ[)Ycyಈ©è÷4ÐåüSjñòT­—_/²Ë®š+ü¶Q«Œ†q£’Á]q[ZE|m $‹¦a\º€ï4Sý%ORj?ïÕÈŠnŒèzòÅîîZ_2ÎI³Z»K1%Œs瀅NœÏ2Yúª ÝÿõboïúÒäv f� v(®-›HíMÑ„òÜ¡KÆ�ÝÛg½°ÔßOŒ¦õ9ì_‹@Bt² Å7•ùœ¾ç©?¯{bæ .8¸óޤnœdmÛã¿­FMäºÀŠ™9¬ÈOuF|¬Ò¼ ÓÌ�ü•_KÃÏÙ��p‚Wž±ËŠŒ² êA8ö,̧†n]ˆ±…ˆj⚥w˜ßY'¶Âêê„.©Â$… Éd¶ 3“L—o¢.ýcu«„>A™?¼…ã�0îÂÞWõEætMÊ™|P�2Q–ÀSY?%že<ʲj›u“üÌyaKLÅ7K†R*n®9£àm³gZòEý}œíøQ<Žvrª+"ÛW¥�å°/%ôÓÑs©7¸ §#èŠá4X�'¨ áßøW×av62?…•òhÑ‘Çø¤ðýÎÍ��h þÑ‘2°ƒ€†+-â¾A0Í2–6®R?™#oÔøÝ¿ú5̪WHXŽŠÝ…×†è;£ßJ¤“ØŠ‘]ÿkæÏüwaŸˆÐK%ª= …ÊÚ�pˆ«Ë4p¡aŽ^±éóZ©Ø8Po7ìZ·À‹ "b‰ÉRÓZߊtaè°7–ãÑúÝßã*žÌÑ»»«»»ÉÝ*×nzµÙzô­�šºùX»”G|F²qJ¶?/Ì)6t�¾Œäb9W½ÒÙ×…8¡ËŽ˜»PUž�ËgEšTàÞ(Kø3=ú>øÚ³!V¾Ñ}�XNŒì[d˜‘Nä'ŒÛÌ!¥÷,Ó]zm*RÁ‰£Ég¾%w«JD-Ê��Õ8O²€…²ËÊñË™tk•å-â §—DD51T;Ê•÷[F™!Xžè\@ªÏ¼’~yklÉ;»²!ïÌmc;Þn‚+�¾£"¥þ†ÌÂø†t0u!¯Ñ÷Š´ˆ B’hEÍáKoê]…ã0[¸K2™Tå’ÝŠ‘[GJ‹Œ‰Œ x¹ê#ê?zƒ�|_È,ÜÜå]U7æ½BÓ Ž£mZ¿Ø5ªV6VhÝR§Vã T.u[Ý~9ÐO>º³½=j> #Ð�˜«¿dV•�a~ÑòÊ‹¿ÄòÌÞß'¾Œ„‡4b.ˆe§î‹ ˜T/Pi%rÇÓöóM‘�!wRˆ©*Gžri™ž+cñö*ñßD�qcšä U>_ ÚÏUe_;ªVSõÓÒˆÊÊMÒi:VžÀ‘‹P³Ù Ò¨ÆH̰u¦Êd)‰ç˜}2Wžb„& æ!M¸o±Ë („¯±µ–‹P»�¦°ÇPË‚ôbyÆŽK{-;jÿy¶ uÑ¡ÅÑfÆ`fV0ƒWb†eú�…g{Ác¼sg�p I8Á#IX°&_3>tÝH,SF…ûiŒ‹Ú´Õ|�!)Õß E>8 ’u-^ª§‚"tÑÕÖS=­K|€‰{*+pd‡²sˆßfæCb¦†ß좶qòPx;ÑKÒ ‚žçøñWxÕ‘/< 5ì|�’w’Í9)-úHlK!š¨þƒ2…°Â4� s¬ÿ/Ö¹’ nªŸWœû7®+ÁëJð˜u(NÙ,uêÁl„cö•iG­/A±älóÙ#ö·I·jå%jÕ þ•Uk«Ym·u=L•.ß‘åÃ}]ò¥þ>Þ!»ÓðäJ—Xý¡™�Æ”G‹å¹õÃaâá¶FŸêG')8/šFü›)ú~•¢5Ðw[t?¦y=¸Þg2ˆÖ‘ÍÁP"˜D®ßT�buCPRAúp=@§óI–£.}>§Õ+ÆäNõäŽÄTOnôðäJËj�\Tq‘meWi³ŠãyÆZDŽT¸Ù…•�2«+…\5PA�,L—9tjXDºê÷ÈE†Âs¿Rÿ¹Í\aQ§Ò›Ö7Ä:v¾!îºKŠˆ_l¼®k”ÜË„µ4ß„-ZAFû#ŸV[¡òa©ÿ„àU`î‰Èí¯ÑòA²Í«1¢Ñ‚�Ÿ ߣ´ Óv™ßË"û“ŒW¦´,-«;UyÞ•SÆ— ¦W…|Í��Xå´ØÞ¶a°zÁ?U);mMØí¦’X‡:úTÕòS”Í•ühéÏûXϗʺU$C» CW¥¥Ùs c˜{�ºO?¡¿:fkT5ØIòüdZÕ?1ËÜZùmÕçø®…;¿»l37 ¿*1ïU‡Là{]X¹#6¶Œî€ñï³.°Œ­ÙéeŽQÀù¢}IÍç-� §f‰·›€bª±Js‰VÚt ³6“¥­Ò9‘\4QdWÚËWì䢥/wÖ\¦ÚúžÃM÷Ð?�˼¢^ˆ‚>îv¾.¡ÒD•{Áò›Æ$d²XŒý=«;SL‘°�êçv Voál•˜¤S]U-½–ÊãGnés¾–+%ç°|ÞÞÛ-�P�šÐùAû¾’XÉ•Íih©Ž�Œ¬�x•½ò¸Ò—Pñ4º¢ôM²I6å'º¾áê"Ì•Q:T …G•ô­ê¸pãá‰\Õxó¼¹?-*Œê¬Â'Úöfn­•0Í.’ËGØP2“3â° Þ‘PjBÎkwJ6ÖŠ-•˜*!G�W±kâ˜ÌjáÎ㸗\ø—ˆš  UÙ˜ì‹Èê©jDÇ+²Ñ�¡pŽì±åxîêi�ˆ©×ã¥à÷êXœ¬®î\tÈœ> ©Ú²šPàøèFaÖ—¶ÿf£V³‚Ôÿ©œLÈ•Y™›É™'ÿá†Ê<ÀïÉãÛ”+TNPXAwËÑŒ'(z¿U‡îl5›nÅKùrù§Wåˆ;\öÿ`ïâ›èW¤YùHŽ}„Âñ�¦¤§ é)ß‘+ÃÒÒSª´¤§èdˆúÒýõRM9 G.`ýµv£´:Ôy§iu¢òT•OU㓳ªdÁF!¦—«`ÉJ3ª|– gnJ<…UÛ¸E‚Ç,ah¹�ðY½¢˜žñ¤ GïPÈA2 §\�¯´±ØCRú–ìaIÀv.I—Sk%>+AµûfdþÁã˜'}á Ã|Í­îÀ�Цu/1P¥€�˜3hhÙwwW›‰¹U¡|à[sˆm<C<“ÈD�év<çÏƺª¨�ʧíXaKécj k:8‰‹!5„^j(‡h©IóÔ�Æÿ1OgØ#åîðÍò ]#ïÒŠ¼ƒ\Râ )é_Û†-Ö´[a,µÊ¹=Ô4ÕZ”ëÆgã†:aý(W‹X™§s,ÙL§é¨,Yî!’å8D¥-ÙLÖq@”J[èuŸÊ½c¡×�Ç”ãSŽZ*>¥¥£ôŽe”Þ‰ŠÑ;‘!zGM€�0‡rª'ÿpªN[fêtPZ‰SuP8ý³ûFÔ'¼÷Žt�~C¢©ÛÝw“]Ó…³E”yßd:ÍW²Â?*Ø÷Eu@ù~‘‡9‚ûKyÌõJ?–ýªTZâÜ=øó�Þ³‹?ÿHÿÔþã‡Ý'{ÏÜçÿõç%ΘÇOžØoÝï`hÿ(ÿü.ÃÈÄ[ ¼µÿv'�woÎÎþ—¶k[j\ɲïóXSC§Ú ØÜªJFVPux º‡q�Žã®ã‹lTËãÐÇô·ÌÌëüÖ|Âìµó¢”m(jæÌ�•J¥RyÙ·\{ï³_¾]7Î?ÿåoòW*ùzyýµV»ª7¨øo*]�§¾Ð“sä™þërù�å²¾\^-—›LŸš�œÕ‹¾,—âí¡OË¥GÝH¼BHw¤—x|8«38f�ÞòÌR85­¦Hò{`ƒÒT“šùN˜úL··ÇÛÛ÷ëv`›«�ë‰ñr‰'úØy²;MçX÷ºþI<"ü&•³0èyAO)ˆqvcmMd}{Û륳Óáð¶/ôx $GDq‰SUw8Vh~£‚½)M‡Ä‡ßÉ?èÙé,éÞ=™gÛγOæÙ_³ÇŸÌãWÜm1Ï�œºá(g©2×sÐT§6âMÌ1K°ø"3ÇP­ŒN˜3Ús:ð›O%ð¸¬"D!~‹#¿b’sx-�½К-,Ì}­`Õ×krµ€ª•œžPÅßÅWù Þ‚ø¬° Ã}ô ɨ‹4¾ýb±B39KFóX=Xå··»:�‹éry¦l‡ÊÜ„Õ~‡X�Dù“ÞV·=¦™�·“t>ÞµïI²®´›Sä|—IÓd¬j…Í©ì·ÔÀð ˜÷>w£)õ ¹&šú7‰”µžÁà XwÂ9´szt(.xË)#Y‚q)’å²½\vŒI€>³^#‚1ò÷wÕúa¸Öî¤ý@²ÏÏÌ*�¾�=Ì\Á�¹ˆ^íí¢l ==S ôô©[V£Í9Ç¼æ ‘˜›ë–Ç\´oÄÏg>’t‹{¯V0ϘùB.çឆl$zÿ£öt+º´+x¯‘`‡ŸÖÏÁ\椉 -s²D�l³yiÐrYr6v~×c¾jmVÙ$›ߌ<„oG>jøb û¯ž ü|'DtÒ®v| £“¹Ëc7FÕ‰͆"�»Dû½N7©ÔÈ{Ôï5Òõ^¸(I91²h[“µëµa b, Uý5 @\,ì§ÛÛ Ž£úÒÈ+k eR¹¥j©øŒæ$ß*9˜%\&î‡Q– ]�G]µQQlyªÂ3ß�Û3X4¶&q7N ×’üû<™ÄXï¯âÌt¼pXâ]ÎqÔi¶¤Y¬¿Œ¡ç©»SuwêÜMÙ€«½í~ 0­y»YÅ ííîñÑ�’ðs%$ª¾¤ÿ\«I]­òô ៕gÈf ¥7áÈgì¬��YA £Í�â.<…ÃÜQiÝvôÂ_Δ’§po¦zL÷$W…yT—VeyP×öé3u­U˜käXÛëü™„ضx¢a#µV Ÿ/õ³Äž'–-—(H²xUMw]D:Ûžð£hOï<Ï'a ;±"®—Ëóåò”„ýårî{Ÿ©\y%ßÁœ�# ç×å•l�„QSÇów$…Ô|Òæø¤è2¼ƒ †MpisÀ9$´–ýæƒý{y)¿ûÒ)/Ý*hh@m*zA“tº½]Ó´œ4Ñ6mÚ4ÑšQS$þ]„ßå‚>©>ˆ:¨?4¹;È#  ‚¢®ùæEx&¾»=Èu§Šç…ZÆD—ËšËQARiD;ù&v”È~B‚ÛòŠWE�(âEèÑï Ù yQôI·ÙȨž©V'u·À¹|û�ˆ $„êZ× •Ëu= ±bшlQ‰„–áx>£ïÔ¿dƒ*’xŽHé¸TK57AÎïbˆŠFLÜù*×L@E-7ÏJ>‰t»Eçñ åïKà‘ ÅÖ2bJö¸O´ÞVC(ÌÃ2² ®˜Üvö9ý “2¸¥1ë ~²5jÄ€c%'FêF eWI º9nlÚÃp@�CyiÑ7iÃØÃ’$çuÿC»‰Ês¤� ˜*Y¤ÅÈCýÐ…X¦«È 77,¡.Bcè*ަ Ôƒ9Z eÎÚ˜°1:-¤IìµÈë ’ûé“xê¿t¢„0aÝ4á4óN™]ƒd¿‘Ôæ¾nìài‰RÛÅ<„²Ri@©´{' ATª�Ð}f¥)uÄ]%é¦þH$’³šyØuÑ9†é[éušdµ‚6/®˜óÈ$Y½Íü¾ýš‘Ü eÅdô‰"ÚüñQDÕú¿‰"ª�?R‘kNu¬þc6î¬ÀËLš©}½7 Lah·á^³Ýmíù̽Âõådž#6h¸ ó$K¨ƒ°˜ ä¼ò¦€Öê?¤™È"ûLIÁD;¨B}ü±¬Rè"‘Õ^‡é £Ü'6¼1~Å&ÎÐpOÜQÊL€ê>Çž¸;‰Ì˜·î9ˆð–j1îmMS”�˜²•Înc¢·mÀèô.ÙJi>èE™ZPx=üíá·V¿ª�Õs¡ÅÌ1ªÉ¦Ábl[î‡Nt±)‹Eæº"æô2X=¡L5ÒKñîºoÈ€´�g¸q„˜<°Lha#ÊÚÚþé»îúY2¥�$9@±·çihYÁ/ªë®†ê½�¾õø`ArþÈiÈ®›ÐdÍ'|ë,é\Y©ÆÝ-cg¥–Æ…ÁžQzMZI±Q>VÄ縔ŠùÀÎM™çžÏ™é[]éýMÓw3ï}8Ügµí¿ÿã?ÿËÛmÏÄξÁv9ä©í »»Â Fíjs� ý›VÃR”£¢ÍpŸ ‰MR GÑ,˜ÒIÞqóøîMH1íj«ßÇ�¨^\K“Ñì4в…ùƒåM0íU;Ø¡Ž°\Ò™át²“²Ží¨ýìҤÞæJmŽv¾¾ª„£Áy¹Í‰|N²7‚ŸÛ­‘o r£:®†ƒhsý,`g‹[9öý“££ý�ÇËeZ=:>(¤jEÈ̤!�TÄu`Š>¡›ûÔÆ°zôþàð€šéòãAL¢)~R½}?îpÅ¢Hw¸Ý““rÉ/?;>Náïj²ÖB¤K5Vk!Õ_2º./eíòžۼÔ8Ö§ÖÇô�Ú±Ò íp¬½e€{»ñ¨7ýkBò.|�¹Ñ)ùî“)�·Â3õ�IéÇ;ª c„ `Ù}.T5÷0:kN¦ˆJ–Ý.—O>‡àWÜüªdUkkÓ´ õ®³¸p…›og;P¬ãûªe‡•A‰ø|gô¢§Ñ # ZDѦW¥~° éNbÆ3Éòb|À®}=~ 7ø¯y"m“Æmlø`/�§ˆÁÔîvãñŒØâ`>Ä<Ž'ñtñZ\�œÑzs7þ‚¿=úá5g-Dš±GÉÎAó‰ØHŽY¯—Ëœ:¿5qÝs�ütsíuº‹ðøŸ5)¡åî–rƧÙâì4þ&˜OITΠÚÝíír�T5«:B¿m7£ß¯Ï4[Xr«QHRÒÀFÕ´â«`¸ÅlÉ¥ÈÅ;{¹\>2 �…ßj‹IÑÛJ¦[£”¦}KeÑ›·Æx5ü-›i+œœ0­‰À_‚¹`Tb²r¹_­"4ÍäßÊ¥ýÃ"“* éDT^oUÀ}�é2AɈ½cŠ:þhù®±½…ñHìKFÝἇe ¡ô…ƒ‚Ò%[(þ9Y¾*ÙeŠ¿&f¬oï׿•y*“cÅàô9ËQÉ|3GÕß²u®ó¾"Ýz›Í‡SúŸ…ÞìúC÷¤ýþüÉž©«+•.`8�aÍq®Ø‚ïºpj£-Ç»êaì 5þV¼ ÉÂH]ö:Ó1ÁJÏKå#’9¤~¬à²ÉNL±ç×íÔöpê0�¨:>ȯ”²Î»¯YÓÁ{�©:@R†ÄP'WÈT/Ò¯v0î 5R„D;Õa€ÂT–B1‰RR°ÑPàØ›b¿9i `@säÛ 1˜ T»± l=!G³5&`À*ÎB…×3y¤²pŒ…±6epq~4cŽÍ±“»†&¢DG ­:J…çüŠ?¥÷÷g[A8Ug¨8´rÛŠ�œ»%ÀgÒЋn†æ$ ‚ô¹õòáH^ÇuõÛ²Iödí?ïs ÙtB¶Cv´™»a ¦ëæ�—ìør¨:ykÀAÅiì ë9ØÜ<)“æ µA�~ÿŒtfžaR숰 ÉcScÄÐbX§�FÅ ÓÓO}*¢ÑYb„­…â‰TôÝ·ê/¤Ô�;ŸJ¼�^»~£þÎLÒuF«‡JhRq'R�6úT X‚Lø0jDßêeh`†c‰Â?k"åã5éôÕ,GèëH؇-xtUwUU𭬆†¥üÞ¼÷Þ³œ=Kú�“µ5<¤§3ÛÃÑä §P*s$oùþ0esqîJŸHYDZ?wþDlòæ�h¾ÛþÓo­åM�Ùãò¤ù÷jëÏUo@Ôjý>•o„Vkè ‰¸—DÑŠÖ˜¶¦Mýì…C›^W;ß{¸ÉãàÅcÚ™Ù€'²«ÚÂ`\ÑÞsÑ¥5¥=,ˆŒh;Å;OùHl›’­‰*øÍÀê 7Uþ§\ù@—žxÁ4¼möé%e¹Sö[Úq£÷Ûóá Ž%ÚnðصJi1¬ÚȰ0 Ά$€À!Ÿ„‹(mŽwÊ aŠð e?P%E}•Tˆã6‡TbãÔøÜLŸ_EÇ¿¤»*VÞÓ7ª©«»îëœP¬ªŽ ³håt¡5Ï`‡ß<9ãý 'é¨k»âsœå!ãTŠœž«ç^įV�ÏG´S<åÀ÷˜úšÄ¥X9z‘S²²¼C}›x™¼&‘ø|!4I¸5 Df*oU¯€/½P^TТæâÖè÷ZI2ºÅt‹ìÕoÖ.Ú!ºÙËÖó¹+ínºØÞ™;1W¾ÐçAÈ×gì»/ŵJ5H\Z”ÌsÒnË$ œY2Ýs“"0 %¿²ÛFů‡×=*Έz’ Œé×€~aGfY+;møÅ:Ì ÅÓ�M6Šç–s_XlÀ…ºê\íճЗ¬ív¹ÜÏgæveeŸÆíÉ›ÌìªbfgŸÿïíìýWììÖÂ>ç°EÜçˆ\'Ò+t”¯€ô؉‹ ¦y‚‘—RZx ªÌg�ñ)[—V5ÂÂã&�&Ç£÷÷d¼b>ž¼dÄŽ_‚­íCj›‘”Ý¡—ÂÆê¡·ÃrIâ4$ÉVp P¿Ë˜’ 'À$ÿ‚pmÅâÐëz�â;�®yÞèøÞF|¹<,„´Üì±<Û ê¢Ó=Thóó¶ÚØÍîïF>þœ î]_dwªeºgoíFöFä|“ù"9—}@_ä˜ÖÇ@LÍÙ'-æ�gÁ¨Z­–*Š5‡Oš(’ ƇΙ'{sÁE¨ M�å‚ç“’|� �®uÅ€ÏéW†v�¼„”Ï/R©½FÞ½-Ôr{äÍm‘‚bFÞ“*a&qO߸`p  ™¨ïHåU¸ ׉ô_‰ ÅPoPÚN¸Z—ž,,AMÅ)±µž’h��6ÌðÙô�·ÒÀCª4`¤(8oD¸Õ©ÖBÜž Í©†yQ¬Ë9ð¬p•C7éG`»‹£i󢧨GÅ%ê ýx%3ÿ3¢_›§ß±¬ˆÉEÍ+yÚ4BJ^K‡ds‹©šZÚªiö"G³ç¤<Îùxˆ•G’ <Æ«Êcª#òià”LOÞ“ ù�Áª‹�ÖENgÙ&9¢¹`dæÖ9ðÂÉ[GtúÜÚcçá¹U÷º¡Êvôiï�s½ áDœKq¾q1žoZŒçë‹‘šxfÓ±ÄJÒ§ÞO)ö“ŸÛG¨Ñ0‚s„ƒ GâkÃ�š�V@uÙîC¨G÷P„z'湊�°ÎB{ˆJAϰÑá–¢+Ñ ¡'h°Àò^‹±û:Þ �,ÒvºãÂï…·xlÓ„³¨Ó¶Bk Qò^ׇaÞ|Â=÷÷”TÓÓ“Ðè¹;tEÚ©n Ó”'ÓZEùü‹xûG¥ç‹‡y§0Ì»«3ÙnŠ�¦B¥ÓlòYm°wWìÒ/¿õúê‡ñr…Á&v¼`¸ùS…g«ÕÜ!§Û+ô÷åâþf« Î�FÕ Ü!¢D¸4þTñ¥ñzÖµŸ „€² Œ]ºw5…{;C¾¨¾ßW\s}oäöá  I ¡Ù¯Öe’ï*²Äaè×)dÔ«oW¿¯§ùôƒ ]û+ “ˆißW¿‡—ëÕWÕº[¯î¿€:ðb!ÃbÆ5Ö ×0üVv EÜ�$|Þz ˜È·"!±ãƒr÷Ý\À¼ž?Á×þ€fþæS EÞnÑ“pæ˜uçýB 9ú7)�ÁË’æÐó_³Aá¨Çí�Jsત5_³%}ÿÎã¦Ð/ÅQ/g“$_µ5a�¸áHp…ìJi•,*á x�@¡ñýeüá3û{YûðBo–Ìo½ü•²:È®Â�+nè\0;£þלÐláé뎖]9wF^ÿk Pt ¯Êß1ÿÖñëŽS�îs˜aºë騋”ûyA÷ƒhlÛÀÞÙ+­qƒí¤]ã¯éÔ€…hÿÇ‚Ei'INAÆï yò´™…ÒûÄ;í÷©¹³wÞ2�îê§`ŠŒÿK€ìb®’¿á»ÿÇ*d9H 𥌧Àk#v 6^üÑ«ÿã:<½ØÎÕ� [=9c˜8aÏ¡ù«¦é©GÀ~irêè,á_Ƙ9{ sª°¤# £ÁÜâ#õ˜OY‚%¼Àþ¨d¿�Y>w9¼2¢úuo#ŸŠ1›Ð¬ŠŠ]–ñ^Ù˜CþB@nÕðÿפltmïUk{» ÿµá¿š‡žíôù>T?ï© @ª²rÚcŒ†Î_]¾q @ÁØieÙ$(Ïl .•®Æ‚° $´Id…c ÷{#°úèsÝJÊÙp×fûŸø®d¸Æ5®Ç8µè?Ô#G ôD|d<§cxì_°ó¡Õ �*A&t=�Nà‘ÄÃa›^RHÀ¾ƒe6§£ªéihMÈÛˆ;íŸGk%v�±Ä‹ý73ž8·?XŸ‹9©m1:›Éä­ôÌE*¹Ò×.-¿ÿfo÷Øž¬§0÷Jyæ¿71#÷}³ž¾š¨oíøEŸŸÚ(ÌÆ®¿á•!\É•)þ�•´�ïÃ~›ÂÇQ/gœuyS�KLÄ]‹Ÿad/þÝÜØ–? Ù b·–às£“xßè±–IédÈû"€Ì­&a.æÒå²ÌçƒÿxßE9œËq¡Øù2Ö¼@o¶ÓXá«R}'¿eëP@(HÃØšë „µ²d3‚PCI%±yWw.¤T[©ð>%ó—ð¶j¶äq¤õRGZÂXIôT. —¸“΀jœ*aÎ+ÒQj̘2׳Q°œgí�·ö2{r‡Ó@�¨32ŽLBŽëÙÆ�Ý7`}š&çH'»5&Ëö�šsÉvß1Çä>d D>>bR·°‘¿jÁ&ug‡°µ|YhLpq/˜ ñCãÞ4Q¿ë*‚× Üœ 0~Û½3Æð¹2þÍ,t%¢�Gw¶V9�îl=õB£:ãŒÑêª,°�,FÎÈUEÞ�Ýc7ž0äôŽÚj*Ђ蜬¹+ÄÑ­ÔØæ–ðÛÙÚ›áŽØ ÷ô¤.äg¯uÓPÎé ìJÒ“Î ,¨BÎû†×ÊÆ8³ûu²‘Œø­¾ö$'­amš]¤¾6I] ™¡¼V0»me“iÅ%1�,4¤«|'@õ6™c–•d>¹`–ÔëÈmšÂ b‘Uv% ©L²ªp–¼F Åo‰‹,~K‘ÍI49('Yã×’­� 6$š CyŒ‡ˆE�=Cß�™P6ŸÊLøíÂô£JDÉa˜>�´3¿`f‰ÞbXø­M‰q²YžÒ@ÕŽ2™â"y¶5¿**´– ÈÊËÐ섨³ôgu–eØú±¼ än•ÍSÅÂä ¶¹\6]hF'þEØO ˆ ÷D‡¯èDP þòìM¶”žÞ\z¯ØfÖi~m¾¼Ç-ëÄÉ3ޝÛ�eß²ÙÏôìݲ|‹ÁW�=Ol>¿¥5œ‹°ÉŸÓÖ™£<ð2h ó‡™�'Nâ»y³àZµ<6g-‚Ȇ`*•�mOƒ N„Yô·¯2qÜjŠÐzr£é-½Íêõeš\Žº¾«ãJSGXzGànQ„¼/ñpH$ÛÈZ„Õ'‚°cÐðê“w“«,ü†ÖD¾GÙÖMvÀõÙíÆîc°D®ÑïÙÝCô„yFCFÄ'Nó]©ÜÔj4-†_ð…VÈ6ùP2YH>£–’Ë�‹s‰*6&Âó÷±3@èRêŒ&"sQþÊ0cÀ-x ÇC}¯\îÙDK­±Õ›N+÷Ö{(ŠâG|Æ�{s…�\u´ùÀÍ{Î|¤*v…cTñ‡Ú¼V6st¼c"]B‚Y{^ŠÔ°ÍVŒ—ͼ–¡c‹äÈúÒQŠsIvžˆ�‘†Ùº‚et™XêJºj ÊŒ{ìL„œºýT9^U{—Ú₈ªc¶åÒ¥wK"&C×­6=ä%1_î+Ÿ¡ÂjÓö�\R…#�5;9pàâò¼6ÈÕþUÒ1=˜ŒüáËDb=̵³’�°»‰êêþSåšÈë¥Ç—äLjy$¦2nÏòž-Ý`Ã#t÷~VËÉQ|¶ùTüÅûPNM:ÓñÄ…% s7Gqað©H%% $>‘Ù˜&/ÏrèÞ‹gÿsöƒŽ™Pò<+¢¼ð{}ÝÃ+8%¹Ñ”l’ÔK¿¢–t,w›{šöBñ«ª–؇µÚPÙóö¤V›�×ÎMaëìÍß:a,Ó)àùoVkÙÊ£­��•XÐÐj´7­¦imæ±²˜¶©Vs曲jµy_*_âÄÒMJŠ?ª­*~§‘Åç¶”èÜžAæ~eÆ)¿´USø~¦¤qWijf¡L÷¦:H8�°á†œ—BP ,ÊpìÏëÞ«P(a[$½—6rXPÔäêGÊòØa”ß@áOv¿/àì\³ã¾ò;f1c½K_á½}Êâ\4Cæê«¦Éº8Ã,h¦í¤˜¬ã‰Œ_Ñú ×_Gæ—êbáX(²´Dâ÷æ^£èY¸'= ¡kdÊC“%ߣ¨}ÍÅ …ày‹¼#¢`Ñ÷0AO/ç0rQ‚K¶b Ñéд÷d·í¡Ý– À”ßgî#ŠˆöÁ Æ,–ÀÜŠ \5Y4ëpw‹’?gcû;»äk!êPˆùDÞžìï4Z´z˜eôŒmä ‘ÍÔChéóöá'Ùú`Á|·e%Ȳ·›Ûësoo½õCPߤšÐ=¬T 2’[Ó†¹nDô™›^7¦‚Ú0jþd-&´\$±HgJ¡†41U»÷Ò'¨�x‰Lz9EÍIP¡ÖÔ­GT8�6ÐÍ&@\ ¯b{ÝfÈ=ÊÝ|áaöµæ‹`¿÷ð©WÁ#¥FÖs]`=s 6B�ðù©bݧ-ÁôÚaÏ-eŒD™Z)!&I(È�CâŠ Ü ¦kì¼L/w^©÷6fœ=‘q”eØv 6×ûKdÝ­ÂA„m@õKWöë¾nÂsð¼å:B¬ þ�«'€Ü‡6¥ ÐÓˆ�´ìUѤwb£ª¿ªŽª~GuÇYÃnjˆ`z³-£ê`?" §Ä¿ã²iµŠí5ÌŠÍÍ¢»æÌíYWóAÉÓVx^ݱª%†Š2Ý’WE}!µ[l­Sô®�ÂZÌ[2�>À×xFÄ\ÄŒçÇÇ[]ÏÐ)—™I9¼’š<)Sp´†9*)žú–›} Ó2­Œ-É¡reI+J°Ér–d²ÿºü£ç¬÷¯Z�ÿxá#YV²…% �ùP=bb'/v�‰!K y*H®NLN >ÌWñ˜éÝÅ( üw"<¬ckÌÕDöZM±”ŠØ×Î� ï7á?ä8@Áè…Öar&Hùh.ò,Ø`ϬÛÛyRõÌCNTAùt ‚xa­¼%ûZ8/la§¹(·ª¶g±`$Äv×à”-Üí)~ µÍñ[xX艰€{º#ଷ –Ýô1Ž€!z*ñÆ�‹‰Vc‡ÝZ­ª]c¾íغ�œÉDu/É­õ«ç|zç(ñ+çײnÀL¼_•³nÌÎu­vG�7hRÔ†|( s¼O ‡èœj ‘� ÷oóUj^V{ÞÈK¼ê®è‘ác¦C¤tü õ#™ãÏ ßz�/hn·@=ö_¿G¥‡Ð�uôê×ß^0�ò'1;„i–™¬0\“oå-C?9݈n·ÐÎ|áÀÅ—hF:ÛŒ ®ú1Ó¹e Ð2ÂÅm@ו¿ÚYKø²%nÞÕ šŽn$ƒ•µÅËÚâå�ðæ6B$<ÁêÚò© ùæÊ#ÙÑ –¸­d. B ÂE‹ýCÊÅ(‰D–ÊæK)áoIg½m^üRÀÇø‘>Ïóâ0?É�äÄ‘ ™÷⛬ƬqÅadâ×虸N:&?RoÏaayš%õeìlu?̾#QRªº»rnFVqÞ #MÔß)·bà Ë÷JÝ�ð°�„8�’F(nĺ«~¦Ì�m‰š-2’‹u Ú¢Ì[Q©Ì¯¤èŸû¤.ø°×õàsvÔVÇ�ý/¡v¬R6Å=â£Bɰ)g 6ôîTýßQ­6Ö_ŒPÁQ©ü7:¢*‰ãt®ÜÖ×€ôŒÙ‘æ4q›´5@rJ.àY~¯}]¯[L]mŒûð+xæ‰�G—á<8t’vdœ�üìøè¼0¸þè\5ìÜ  G’Ì@W²\Ôcu¹ÒuäyŒ`öJÖˆP¸Mxlø=8ZÉc®îšÌÙ0„dƒUX#eEù�¾ ² ©ÐK?­n]rÉZ�Òœ@ ¾Óˆ×Wsv‹/б;h_'ODìyÐ}˜Ù#G(ùY dÈ±Ýø«ùÚ•5 N‰ÎP¸ hÐ�4æl’MÐÄç¬úñ±ýàô”èw¸P¸†þ8eu†ûXîØ»³µ ÿ(2ôå9HÅSÏÌCŠòÝRØtãT ½jˆÌqñ}àb îÎÎBuéX¾)Ò{BµÅ€ô£¼/=ÊU$Ï­]"Ùj ,躅Ö8Tw›xâ“Êç‰Qu°YǹQv/CtŶÕyÎèÔ£ÜØÀJ×Yë´lVq ­›q£SUC£ú>áÇÙ§ð11PC�3w Ç F5ydãyyB*nchÇÆ-"œu�l�[Ü"$^Ϥð&¯}y¢8®o­!G/ `�ÜZcôP7nŒ;kd]³¶ayV �==_0Í*Z{Šõ½0ÚKb&ŠC¹ß‚Æ&– Ü 3”u}UM‰Ò Ù&¸ÀóJB”rC9r9DäJ‰©/D�XQb«á æ3ÓX%*î1>W»FJP’úJ¶Ø}œ²çùç`ƒçl G 7"/G7À;D¼ÁF2ô=2&28ÛT ²P%”¥¤<§ìÚ�:øÖ@Í»3±¤§§ßÈvBq�§hh TldZôHV=åÚÉ$‚ܬQ©Ì³Ê±�E¡õ<7zÕE„mȆY^÷2ApA!–Žª‘ZX ÍU�¶ÓV9&“œhgþ�à v$09žŸ1ó—ümA±9 ǬB¢0�;}ê'¹Ýv/#îÙrz1ú~˜{FÖœoÐ1þÎl¿�~~?´ðÛùØ\ªÂlS¤!k5˜Ýì’Ñùeæâ¬|#‘…oH)hI„›Ý¶¿¡­ ²Zj%Y8?YìÌÀ¾éHÕMj L(P`³[ÎÆ‡ó£�?~89¼8>=ùxxzr~qöáðâôl:õçÞ31µ,bâÿ~”Q•t„Íʶù0®Ï0«¦a¢¡£oP*^Ö©ä ‚�"°C™”¶¯Ý!RÚÇv€QÇ©\N®`ÓˆIUMÕ$ײèÙ‰¸,Go@-Õå(?_¨ür±#\úú­Ð�-„ë_¡ Ô�™q”C=^Î÷éši`§Ø%O6™jª.0[ís¢mê9ÑšZN42b3²³P®,©Ö|$È0·?‰@fRƒÀâÖL¶ll2¸ývš{D_jtî^ÝvnëuÓÀÀcãÆ¾¿¼½²è°g"&@wh\cÒØ³�m�p†oõcZõE9DÀ¤Çbcbá�LÏ|½|±åóºÕ”[ñj4*'äõ=Ar‰ß…y}ÿù3ŸjZj²lʹ“¿µ«cŒûÃNËô…‹�ŒB²‡aöa¾¡t“ Úé±fš7ä-™]£€Þ Å7…bd§ÅYúªTf¬(*‡˜€ˆ O”‹ˆÍQúI6¨%)\™ê#ï©¡º`B·t„@³��èWa)h;!(ê‡M©¿Ñ¹5îŒ�Æ=�ÑÛ¹_YcÌ7:1z0mÝcH? €¿¬Ë 'ÜÞrèQ"ÓùÓ*§Š'Š©÷`C�é¸8­!�û1k-ùƒ-âôe e(?ᤔ™Â!dŒˆrEf“œƒ �“`^�`?$@ýÊLv:#µ£Ë³&N§ ‚%h¶VêC× €à’,{ A¢ï5~|á�'#¸« HdᎰáUJ†À EhÞ Ö$˜!27ìepû2 T­VV‰f wr2àlíÂOç³Þf(£Ô *U\ûQUõ Bká°h éìÁÌ‹T°Ö;tÌaÕhGëÍG&²ü ‹¬|;ÂÈ·)ÂfÁw—ú€\ß�ӇįÔx.v2UŽŠ=ðºI;ºô0Q™®+ϪH×]R-�6Öa'¬åϺȻF,ê­½m=›i“#lÙÙkájOÂ3vÂVtöy™ê‘$§0•rEþØ¢ fµP×€mDȧ ýW;þ¾×Aˆ¢�UaÆ'Çè[9EAKxÂ5¥k7Š-}©8�%%傌oôse89b.–Ü’ðÒG�K³Œ %� ãXÄt ¡ØaÆ‚ƒ'™Q0´¼*«Ye— šTêŠÞ~ÉÒ[SHo;Ôiîë(ÏÍ0Ìs3,!˜s2jë½å¢#j ²½÷×ny¨Ë¾A‰oÆd€û’å-êQØ�v“~ Ø7ë=89zöýz ®†ÆÈ etïà@øÆMÝ[p“�1\z¼ß£ít©=€ØÁŠë^~#ß—Çë½z+{(ÔÞ­ë q¬¬ï+ÎÑ"‘JÝZÒÀÿ+õ@0ÄÕ-÷`Y¸è[(-©Â<«Œ/ {bi –¦Â&Ñ¢ËV“dû˜%¦ ý$‰i°Xâ_“­UL¢$-IšG·½ Ã5BœC–†úèIE‰“.jdÊPø’Gš¡¡öãNDÞÄ÷@!âNZ("¡¿-ÊL�êõt�ÏÀ¸á7ëf¹ä´õ²©2ÙxkõSÀ|fø©# §‹y(5a‡Â÷—‚o!‰Äkti’–Œ=’Š÷Ý~=nÇœ§ÓîO§£ )ËG@ 7Œ"�Y8|UÄD¤‚7÷‘zw¿ßqaØS Òt1GV×i'p!Ç:]A})HtKæàκ›"r•LO}¡´F |æ”yá HŸcÕ1ž±k>vFªÍö-׊  ñ«-x¥�¬ÙÕÑíÌZÍ-€à±TÇÕèHx#J’± Ò®ä¡}»=Z!éÎË–®þ%m/mi0”:Vbf?ƒaÈÅÈ\ëè+iŰT¢…Ì)w,μ¯â_ºS0ç$�f[5E:pÂ4+b…äÕ#.j›ª69KŒ<E•5:1‰ˆ^ï½ãGŠ÷…^n¨!“kn(ó@­i# æ y5‹æÒ­VÁ\º)ôíÛ"¥yK††ì Ði¤á\rmù�]-ÚUî€sôlb¬ÀÿbÅvzƒçÂ~�ôçä–“>ÏØIü§kä¶D8Nd³Ï†F›��fîA­šøÁÞ´dÊ¿±eÚÏêe°©™%­`'�”ÛI³èô~ºÄ47PÈRæ€ë;ĺ—ýBË@,®Ú¦È»L`KŸixÓr�>Sô ·Éôjõ­p s©ýT]eŦ 3ÆM éÆÍ†�¼t²ålvˆÙ¥YÃT�ŒA™ñt Ø:03dTªÕg[vÉû(É/³¡.îœ0Ú8˜JÐ¥©Ö¹4ïœ�s3#ªÖ7òç@…·;VdJs¨7�¦†BLÖØªþä»–ŸæóÌæ®8¬Äç0^¬©”ë†Å™D¶Z©¡\¬¯gšìEÉ�K~”Öè:æ5#ý¡,s±ÌÕm-ÏçÞ½(T´Üx¥ÚC •4cÕYÚ.ÙæVÉ�@¾NdÍÑ„³'´�MAYCm&ÇF1±Æbê“gPézLT¸œø(´ŠM^4�37…Å”˜®¼ç{™åi�-�9ñÍøpñ©fGŒÞ‰ÎTnkLºN‘ýGÅXèfFÁ¾ù¼šÈÒ5‹e_„,y�‹£Ò”§Ù9)mçi”‰ÆÃç&•½ç’åÞ TÉÁ0;÷Þדô4ÍHtL"óÎ ¢)tôíÓ©´„F}~Ÿe�n){ÔèQ8‘•R%¶GŠ1~›�œ�p#åâ—Ãc�É¢²·LŠL¡ù^ÕöeÙËFsÊò:ԢȨBS̲QËZUºª9bI>bz÷Ô~áÜÊæ ÷·¸V“ÂÞQÖ]Œ7ÃBÎ@Ju�u¸>o厜�ùÂà‚ÂÚåk—©•V®¥�@›z� ]>em³¾äÙË[¸&ä¸_Ÿ¹÷HÉGbT·ÄÑ…Ž&±\í#¹Ú‡ÒÙx"9Â@z« éñàs/�ŒÇvoÖ£ìÚVñ$Tå‡#”¼ÎéW~ 1xùz˜çl­ �ŽšÍÙ¡}ë8Ó…”±ad`ðžpÙt½¶Ç ¶�Рc¹ ßCzŒÝm¯�‰A©JáéÀüf‚€ÎeŸ¹³gñfÞJ§y•kz ¸¦ða)pqÒÿŒÕ=VWöxfU÷KWõ’³ýâM°àJ§ù¹�ÈÕgvˆ{ò>ˆú™EÀËçX ϯ[â+օîj\î(:r´ÓW¢7_^Œ5ªÂDð³Ó(òa äC·ë#£zF½Y ûkÞx’ܯɬ¡*t-×0I²ïŒÖdúžvb ñÉœÅG·k¸xFÚav|ÉC\�%„8ÌüÑØ÷;wóÈaŒ ¹ÌÁ2§àD¶"¯Gϰç2zò*Ë€N>“Åï=ùl‹Fv[ã¼j”¥zx쪼:¥H¡=Ã)˜‹gG}ทR‹qe«TÏÄœ.K¼23ÛU?‡k$Žš¯ž{Èœçþ“Ô<»�ÂCQ1£±¿è�–X—W+ævcÏìTåC9¼3c5×j ¹rQùN¡}AaPxYHÔÅ1'lj¨ hhK@B7Lù«¹dkÜnCíŽL&/X1 SœOƒrç&‰¤Þ 6eù¢aÛ§ïÀ=�|n�Y÷©?øjêu“ÁƒŒ¬J»BYrü uh,úß »Á+U_Ù^;ìz¯‚¶÷ÊÌBÔŠÛâ^ Ú×äèßA1)b&ù![Iô˜kóáÑ*:Ù¨IÍš°óºè£hxx¶ùCe»ƒQ‚~‚i_þ8<…gc³Â+ê8â»Dy«4Ì›�ЫDóÜ,eÞ¹h»Ù`khKìw)´‡ Ž–Ÿü¿ÕI�NVŽ‘e¬ö#ÏÃìÊÙ®ÞMPZC—Z³-~ZÅ ’‡LíÝ[a2¤|"‘H×@þ¥Í]SWÁ0ÑSJ˜9JÞ„YyÅP´v2‘ËèRˆÛ×!S#ǯè1”f@³_ÛchOèÜËÉvbW•Bô?¡ÍOhBDøL?¡Ïvš”»¡wÐ`©wÐp¡wÈ…ŽB:³Óu/�üs—©UÛÓ„IrXñ�´ÑÅ„NS(¾¹<³D—yü(è>7%ŠÚL*˜§RÑí ¹ƒO—�\™Ö|ÖgÙ‡ÑH˜}T|D:ÚdÌ—¿Óa‰))u°é-p°YÌD É–@$ºHOê"Ë…E©ë"…m™è¬£+$)ʧ¨£¤¸ß@g_Ó*á)<¬XÁˆkxÜZÄ€Ö2ߘ簜¯íæBPuª7Ž÷3Ú9ÏÙE XQ" aÌ�Ž *eäåI¢µF(á°Áœ<;:<={ƒ_=>¹8:;ûðþâè å3‡sr8™x½Uz+i,ël‘ȶ%‘5·wÙj3�Ð$ie¤æóµtè�jq"=F@ešIy‘.&/0õ�š#i*Ë� Ï"£•ÜR✔2·ÿ›SR¹wÊ|:*'#�Š¢È(òât”¬ÒÓ½%DD6nÉ©H¤ln64£lÔ}MTòV�ʯ`S�ÚèZXn;¦88HÔ\:X""bËo“?YáR[¾�ÙjlýUÒY úV©—-9RNf9e?[F‰[5:âd‰6„ŸÅ",_;î§µx¦£ÞšÜv¶þÁ9fM(ƒÌ²öÔ0 ÿV¡íÒ¬- vCóh]nlÖÐ|îªZÍed˜¯+a\ö¿ ËH¶îž»Þ¸‹äÑ%‰¾|VkZQÖ—@­M±PÊEU}é0<�X^C¹¼&ÚúR‡…|¯&Ï‘ÒÁ\ÑiD´ÈAãÌ8£H 6ƒ˜àü­Ô OeÙvqŠlOõ‚›#Âïÿ[œÖFÎ+¬ù9cééc‰x¡ ײ¤ÛÇóÖÚޏt�­f…¥¤¹pðX•úh|÷ 5€­CÆ5J»b”¡ö™§ ý)´9ó0°‘Œv âOEF@áhÅ%kI™ût‹Œ¿¥(Pîàðy¢ÀsÊçFFH`� ìr Â]Uý(ÚîÊV!f: ®­ÞoXIV…ƒìØUq!ü#¾”kÄè LhH[Dˆ>ƒŠ8H°½ë2�W¢)º8± kh% �Ÿ×R‚yU[J(©E‡ lâ ]‚SY|¼$âƒÑ¨ Ãfk¡FW&~™mêeѺY�ZR 'CnÀ”ŽŠêïMÊ0\«,éܾG‘¹ ‚‚Ìæ(#zÛ­Õ2X¸Š[ ü´1!À àÝ8"[_`DD}jP;F9ÉÁ¤©Le€?)>:¦Ÿ�q^£o¥z�^Ü 3ào«šNzŒ£; º¢ .APWÔHFŒO’B9�OøAìEh‚Rî;ÀµÜaIì”{œˆ FhG ok\d…a.Ó(iØ¥r =L öû ùØ+.ð8ÍgØb©‹”4Ù¨Ò† à“ãŽpþñö„ƒ‹Ó³gkö–A60DŠ¥V‚¶'+ÌB«¥Ï‚tÈyp’»±!TÃ4KÃgÍÒÅA‰›éè)ó„NáÞ­�"°/ŒìèÂèD#úaqñLÂ3ˆ&¯�5á¨÷%S÷'+ùã}9ò.Qc|!â^›Gܳ´½|dVÓƒ|“ÑÒ\DDÁÿÀ˜%_hÌæï>sO�°ãl5W‚w/øœ·Í|ä9« Ks ×ÕcHl�Ô¬ˆ¡2±çÄI¹¶e¥¬�e²ŠrÀÛm#€fXp4Áœ™haŸXÃÐvŒ—ˆŠð©}hÖÆ/Æ$Q˜¬íR 5KdÁ#»¢ãGŒ`!ºº®¯“©Í[Âe )±ÕÅ ù9 I°ÂŒÍEÜÓÀk|òBRÝè ¬éXv-IF ·}üIÂÀˆ~BŠ lræ�{½AˆB>�“tû�?1)"Ù£u‚3VÓ‰Gç‡+ä¶„ N+Çn{kKÞöì0-\âä×ó³©,)¤ ò­©åÄzu­þkìÞæÃ<|)yÃD5ÓiB)NÐAtuÒkmg´·q}òîUÒ¢K�°2ê)ÐVF3¾žô÷M¤G¤�Uó< xúÄCãOûZ_8»ĵpÊ=¼àëîißP´;ØábM«…ÿ“‹TrSü‚’Õ·×_(óˆ6²\ô??¶I6ºÏÛò5ªœ?Ÿ°D�ÈOîÛM}è¼H Ù KÍa”W�9MIÒ–ÔntRL¯î(þ€i½ò@YJ(ìjŽø9RTØGj»¹ðÔþr³ô˜öu5 ËZžÔ•%b)—i1z©Fy9E/‹õ›•�gƒûb;,÷I½sQ6†~…]#D�2¬I³ƒ¤�’í 4+C8ú³ZfX‡ËÌñ7>y”蘿ý™ãKI1 T¥Žš3“?“Y»¤xf²¶IóÀïg¥¶Ö—â,þ$!wH?c�¡\Ô÷ ¸«b`VÙcÕj“ýÍÜzñ¿êƒ5ç:†w‹4}ïú@²øj;5&³Ç#ÉÚÈsâd- ¼Ü’y¥~„ –¹†�g´‹ITÄY\£�Ì9@+Ï :+´ñ+tkbhwJ=Êžªéåá*›‘²�VâšÂäH´S}—M†å»’;rÆŠñ’. ��!ÉdW]‰ÕOapXˆŽ‚¢_…ï77áÍÑO”ýìàM›ÿþøEs¯±´ÏðÌ ñüj}íyƒÈSE/Q ¢nþPž\¹î°#-Ù[-sµ�÷cL-®(‘èÚ�N5ŽâŠ*¥³C®©ûTÑtšïZÅ"g¦o×1ÏD}¿ê¬Õ:®¿z˜Ù(+¶?�:Û™NÓŠ�N§nÅv¡ÖŠÝïž8'm_ tôÕ@Ç®ß6üuÇüÁ读æ #…ßõU¬óÆÊwz=Åéƒ.e‡$+J^½zÕÀ9À¿¢F„fÝÄ_#¬ùS#œúfí¿�°îS± ÿn6ÍiãÉÔ¬µqœŽÔ6⥚áng{{svgö‡¸f mMa S£C›;h^¡¿}ÛHpD›}úÕÜÉØRúƒ[7úT=òpŃýšgRéçõ#N¯Õ~àåÆz]Œõºaü76 óÁh‡ë<ÖÏêU0 bÀ@Ú 3X�Y2“YmíFNÏw…qˆ‚ǪÓÀÜ�9ËT­kDñåª@¡”ÕsÏëy½µ3'è…ãµÜÝ7]ò¬ñGñ¬w‹.€ŽÎuqUYMö(�av­žk'ßµš[»[{›;[»„½¨7¥ZLœ ê”â3!"s�fcwsw«¹×Ú¬É~À6šÍÆævs»µµýÕ›­Måæù"3‹î-8÷,˜ jñû³“ŸÔ¬°²,÷ó ÜExƒdÄwÌ\¿gÖœ¿dfÑiÒ‡pèÜxkÎZª®õ}Êèâ¬_õXtÜø>7³’Ãޜӕ)Í×¾šï– ònÕ3mzdÛQ­F) š/"…å·£ýÏcŸ©Î>Ó'³ÏŒ®Î@çpÐY*˜ßÿ*úb ‡™W”Ö«ÇL”ß[ ¸ËIä¡èOùÁpÅ)( ±}~wîøJ_s/þëò�ž³þ÷Uý/@âõ�juÃ:Ñ‘Ã�€Ã ½¡¹±!£`0(†ž�)»zfb(‰ùV®@÷ä2ýÔäÛM$qpY‘—QFï.ûÜÉ,¢<åÕõª Rrd5P`öíõ&¡"»g`pS¾Sx enT¯v›�6Jáæ~k: ^Áq:;ÃË‘G~|Çò*Ä1ŸÊ��^l(�Ãÿ+@ÂjõRêYQÜkè.3‹†õ©È"�¨«a-Éj"Û²«+Ðd4|éÞN®=Þ›ï•M^+/øFa˪Ââ_}"¸É¦Èè,=Í8m‘hãšâ§*KFbI_�åRJø}=€‹Ùúlubuê[ã°çµ#‹ý±Ûž…‘Òm:¶çAn°-É�›Ù�ô@Š‘8¢bÀ8Ö$â%)Ħ qªötEÐq&ïéEެŸ�Ä`7ô0‡¿Â#§-_FÃC Û¦kÜÀ®™®{U¬²ÚÖvË(Ûé:ôç¸.<ä]FWùŽ¨Ýº„Ã]å6a›}ŠÔm Ja-RO¿ÖÚ(jãµâ²ÖˆA�·oï¾DD‡í½&ÿiÍ[> ‚·—>«Vb†B#CóÝ …ªe"T-¡j¹@B=ú»Å(…­=N.‡ép¯e4æ�͹‚¬[üÑ„G">ó\,àü»?Ží#„´ˆ½è†ã´­3\ºÙµu bez͑괳]èü,2³wöy¾®­÷p…«ý“ýÎ83­?áÏ©i�ÀŸ h†RÁ9Ì“§eqh\¯=@�0¹#Ï Ò‰-üèã’VØÉcg¦r%*“ÙÅ©EU©€.Š—¹ø ­QјìË‚'5Té[B•~´(AèL�D£õ–µ—{Òw\§çmP=Šs„ 3ʯeI˜÷ÒòãCº­~RõÒÍžµ1ó’û¢®Oȼ¾É÷ï=sS$ø™áC€N†ª!Õ4i,0i ®­©¢^´Ož~ìšálß"Î6nÔé†l¸<.ÀsIÙ4bC|#åo„è@Ž{ C7TlÄ·L³I™áFˆj®Ññ G½ÓÖ¡©´KŒØMˆ’܆GÙW¡¥j+k5ñ)—¿BKׯ!dõ«ðÊGÅYçOqÖI”ºqPyD L¼,>ÃY’jµ;蘒á‹G~Y~/WT-»ö§ÄüÉ>еƒ8¦šâß«›é…I3­(�Yãik=‘`BÅo�häÑŽÈ$‘S[òT›*)ÅŒ†Hi!­GšKÅ›“¦ö‹´Ä ä”im¢/`à³lSûÖ˜iX�“’…¸'ès¬#¡`‰2³¸™žÖÌÄöòfzz3#^¨òbø”Á °��ùèåm”tè>ÎíF�2¯�Ô6[å^„³'2r¤¦¥‘왕­·¨=d—~SÃÞš]£ù �›‘´£É˜³Ëô òòflmù¬z3ÆŠÇö Vµa�|Ò‡ãšA¤¬±‘ZÇ‹²³»Ë0`æ£FIIG°/JæÎV{�ærBA$)#¯Á j5'^Åx]ÁL@Xðïž+ÅϰO?Ò¼»|}é_­ k¶Êñ÷v¥·ÜÇ�µöd„Þ6GèmŠ=’t&˜«Fí–.4æOAp. §#k,Í&XµCC­ŽCl(ân’'ìêØ?B‹©¢À~‰ É•"¯Eù r^÷¶ÁG"«ä�XsÔË�ò)â=×Þl8Ò"[/¾–±*ô‡\É)DÎâ®ðÜÛkpð…ÌH¸â|8ìV¡»IdáÊÒD^>Ѭg§¬„9lt‚ý¨cz—�š7ó«ªl )�¿—¯³• 0Ö53Æ�Âà­2v›-‘¢m5\Ê8IçÒÓNø~ ÒœYû™ÓŒŸg-5<€ЖŽÑ²­™Ad[®{üæ*†þí½mÕÔïo$!ø`Õúx6P•Vg^¤ÛÈr×÷ÌDïôœÄQ xj¹þå?“­nÒNŸŸÍ+³ãÒ;™vè:tà>kh‰ÄÞ�€!ü†ðS39Ke!g)Í26cD�‚Ö§zö’ƒmu,:#²;ÇÀ<�¶Ä/ _7,΃PhœIŠ(áÀ’,ä�ò@‰¸KYGk·ÀÂ3 χ/�Ïg‘–ÖÄ.Ÿð!¹râ™@š�9hˆ6}Ô]Ã!vÕ7Iû—´eëáÜ«w_¯5LÑ7|®Wv±‡ÙÎ ”¸:¯VódZƒ"–Ÿ3•’I_Aº| ¹h�PÌÁû¡}kOHê>è k�zQ¹–p*W­ÛÉt*Áæ2 ;Xsm©‚%éõùëŠ[‡4ÆÄ³t‘!#*[dj¹¦ž]d›…EÖºÂf":))³[1|�ŠŸGÜäNcT*Ðbÿo¤{ Nr Aý¯ò\hZˆñËõ•ÞÌ´Ò°¡wþûH¦4d2’Éñ £ž8ÑýO0¦b$ÊÉ8w°âÒn_ühó�Õ&µ4fa(©±'ñÑäqÉ\ òw'­¢lë(�£XŸ£lÉ•¶‰&/X-^]°=_5å@“SrøF@É^ÙçXÈ;pæ �R“¢í±0æ²%¨ ,W] –֢쮒z[êh»ÊEeµ¡oUfèòG߈g©íµƒ'L…®Ö,ܘ¶ØoÁ„ õô03!ZM$¦xÏ¡s&kW’õò®�Þ¥„¦”/¥5·œÖÒ§QÖLOˆZž×•™‰*Ü[2Wnù\¥ì²ú¬‰)a@ú"øÙ‰g�º÷çqÆ¢x:•‡sÃà9k¶2ô©Å&/¿aþF>pJáR"è/f8?kU}Yàð­Jðl)�ëå_œÀçX/d†{ö ¤l+SEý’žŒgú0Î'8—:”MÝ ÙšFƒšR›|l¬Ã�kË�ûç^² “²×áû/·¿@°:W§iÄ2HÌü¼dPÇ%¼NÇ2D?Æ|‚ž¬ŸäsV†uüÔn?¸ \¯!Ãyóô8ô¤_>±Bcü~ß‹¼@õÑÏËò“`š�1†¥8¨`õ Pñ©HYÁF�Ö/Ærùy�`ëŸå0ÿòe¹ÃüòÎ~Û¸}µŸhóÑJz“/§C¢Äé³mòiaúªß=ÏE_Ì…ó„“Ró´|R–…é»Åh§þ3¢�¥Âá25&ÌÊ£�(oºÒw8ê©<õyAùϧÝo”/B=Š„[6ŸPN}~J@ù·æ�~„{ôq5ô7/]�?sŒò(iO#ÀR‰Æ–Z AæðÊ'Á;>£ëñ?þ3„¾þ¨)´õòH+Úr¹§’-¦z÷$˜IO^ÂüU&ú”Ô9ÄÐj ÞmI Šà©#ƒfo8ôÕQ‘eùˆäŠSÖ¸ÛK.ûœS©%£~ Gд*±Ž0 ÷”&&’¾_~_ùòÄtžNpÍÌ š,ý Bj~.!-VTÈã×Î.3nâà})”¸ p”ØObìør>*x¥/3Æî2c'µ`·jUÛtÈ÷E%*#G"DÕŸ mŒ ¡û3â�Ÿ¿÷Ï #~Ùç|×w—íú2z<Éã›WŒh^qS+�ï�3/uâÓĆy±¸ËG{Y,®3#F¬‹ë—Ä⪑¸‰ŒÄM²HܧÄÞ�ø:±·ÏǾeìíqìKóû¯'HÅ÷ã±—D¾û¦ä´YróùÇÎUå+Ü9§Ó'ËWrˆŠ{"��û¬±IMº¤Ë²íûŸûŸ“L‚Úê·Øx¥óõæÎŽ)â8åŽØñ¼6`çÓ–ûø—'¿q·'QÏpŽ„IAAHÔC6¨÷íð•Ýè†í �7ìï7¦Óþ+;fÃlêOØ´›-}ÓÞii\ˆ„ · +Ž…�uH¿iO/ëxi˜l~R,×øšÒÁ ³¿Ç‡¶AØÜÿ‚A§&v£¾š°9ʇ—“zýÊ$%®A&M¡}´� c&2A5 ™Ùf[Uxb²ï×jüLÎz&W3ê¼9ƒ›¥(Ý)ˆD ‘Õ :ÑßpÞw€Þû}IWC[ Ÿâä?±]rû…ÍYqòš…ì£ü^îÜo>LT.6RIt÷}9[órSÚ%…WA)¦©’Lû (�>3žù2‘IëL8çÛ2¾Eúñ?àP¼ÇãR;¦ð‹ò—ኵ´’+/±¬ÆX%7Y¦ã€ÜY Ÿ¹ÁÙ»{¦È[';h�ÒÜÇzKŸ£ -z"s`XúÈ¿¼ûO©Zsš8HXÁ;lÖ‚Ç"�pNF£ê‚… }7²Žä³±š/…�¼…éµ0†ÒAnÓ#6£äë +*»ütnôÝw^2 {ÐTv®J½YaÎTÙ» Á&˜u6‰}!'<ƒf9Þ )jHퟠñÊJ­˜`íJ’Žg;QŸçœ÷èw1æxl- ë…âét“~5¯Èy>¡milÁ#O$>ç•ðlZvsVŠÃ>º�Vá<÷WêéœN–iH’Ä}óŒhIÉöYdc/›…öîlné+ck³ù%ÙC¥¢Œ;†Šè“Ö4/«¨¦©^­Ò©âÌJ¢H’ÀGŸÄe¨ë�ÿ¶Õþ�‚!g¨A=¬gvñ8Ù®g9(<8²c!æ��³*££º³—eU‚æÙY«¯}L2Œ°±- k³ ØWWJßÏ÷˜Sï3ìjO¨i!Xászº‚]\þ‘üüÑÿ#Z»ª¿X(± ùb€.òN^WQUÀgeŠ ::Ñ!œ„%Þ…ÄÆ¸çKqÆãíw$°2®U$›l3©Va¿Õµ*©ïìŠSÈy\uøÖ­]¹®Õ*w*§?B÷�²ûM¬RziÙ‰½öà,4N þõtz7�ÞN§G¤V ¯UÅZx­QøÁ5ç^œ(`ÀZ¤.h |ÿ=»ZÅP˜°†Eí=DE‘ôxýn˶_La‹ºeEÊÍæt:6FV†k#’oNßݹG�Ãi²z1ôÖXDzæÇkAˆIéI5º_óÔ^€X%Ñ:pÎ5G&ÉR…Ch 4Ó1]L7ŽŽà×¶ÿÝVwgë‡ëz|é\µñ˯׿Û„"uûÆhmo×®_½2Ö[?øµØýUO®ä4©¨«¼>|sôãO?ÿó_oß�œ¾ÿ÷ÙùŇ_~ýí÷ÿ8×nÏë†þŸŸFã œüÅIzs{wÿwƒ`†vv÷^Ö_ØUX�ÔtE¸ý��Ž�G ¦KØ—®l5 îÁOB·X¸ Úár|îe«­)Ôõ´Ê°nJÌR½NBÑÖÈ0¿<$íª+•x†®c¦ëß,]<×Á/ñõ�mã"Š ƒ^¹áWpÄ«¯ƒÉt:˜N1U76<_x5»iÉ-]¢"¹(éšiŠì=DûÊ’èwF 3�¾]…Ù ¾kšB'Û³‡D‰öæ‹-Ó|¶:õ»a�8~¯¹’Èãµ0Mb¿GÖ®ž|‹è M†Y°(€ºG†oílÖ Çvö÷÷¦=óÕ«½uhè{Y Σ†š^~gKØ|v¶d‚�í-á1��‘NÐyÙiP�0„­VKd„ LnJ>Ñ"Q…U+•ÁŠb;}ä‚>5k¾é_WµZácFH¥øo®®7;ŧœ(ˆ‡ççgéÈ{ëÇI»aÁÕyr?òÞxî•”±TJ ò¡‘ôs,JÀ¬êW¼ñä×á'/ Ë¦õÆIœ ˜Á¸OY2Çâ©ý¬?_¼{ »ýa8 ÿ".›)ø1ŒÆG#©Y”œ{øD^öÎëùލö�?öPnç¬a ëÄ{½XІ—ðK4ñ=�!ôÎ!±ìÔûQ:ðƒì‡¬ãü—ŸÞÒ*�Á5å×ïá }î ”TFç—ÚXÁ5� ôL…),ö×)ÚÿdNÑùÐód5Þ]﹟³IÊŠäu˜º¢• <A&2ªñÄ�ŹÇøj�0M ¯-\*AÌ ˆýŒ"“ßF‹ÕóÖÜN+_s}”cB{™\O„ë î“XºvÎ_©ÂŠ,Vìe|+u˜­ÔÉf±ýxÛRÆÜËœžñ Üå-ó–e-\µ)Ű^zX] ²=‹.ÕJ½+zäQ_õ«¬w˜¾ÙoUÕU7Wo_›ÉF-DÉÙÙn1L’³Ë 9ÝF 9MÆÈÙÚ47ú’ƒð9G5ArP¬=°Ðαð28#+$TrJ•@É} >ûŽJà¥÷ÂvöÉ&TŸ?±®-¾Ñ·ë#ˆ>UÁ÷­C¸81s8Wq7pó�ÇÞyqì <Ø.‚ÀU ç¬zFŸ¼è#ìRžÓ‹�ìõ§@ÞCjn¿q"na}kâ�¥Ö«íÍÁÅÁÇ÷§'G�ÎÎ02q¤kµÖ6þFi.OѬ, <Ü[oìÃZíP™ÙöGåê­ýžl‚¯áon<1­_mÄ�q?a¶¸�X€Ÿ�{enÏçÆyO^\&Wã.ýq�%Xç±êªôÒ9`eÌ/(œÆl¤€¹ßÔœ`W¨Ô<5" ÿQ•ÔV6q¡-šŒÖß·ª ó„¸kÌcßö¨w mH$|ÄDRZ~Îö؃ã¦=@èDvÇÈè™GóoÙ¹Âi¶ÁZF‡ÐDðÀÅøÝ�„‚0�–=¾ö!mvz6�V[íµ&ŠÑ"â—jƒ�¶È\€–Š9µ¶á%ùtÅ‘ÃQx‚‰bHŠ_’Úvùy:…oQµ‡:Åo Åhà~P—Y;íþÝ>|Ä­Íp‰‹©¸+>LáŸÓé!l¨.¬Ý[£oeÛ\Õ:ƒÎÖj0Ít¿V;ÂÛ<Ù«S�\ÇPg–fú0‘gÄx¤ÚÆÈ¾€ Ð܈átmìX£ 8½á ‡rükM° / úT°H¯¼»5Oƒˆ¼›òj‹6þ(ï}/-( CoT¿¯'õï«æ÷¦¡ÈÒ�� ÄÞcôI8÷ÿæio?ÄíêñÉ›£ß>žÿ‡y·å‚$8n7s�V‹/ÎŽO~ÒÞiÁ;ÀNöaáGîð^ˆ‘ùk?�œþüûdz£8:¿�onò×~�Â`ð&t‰Mæ¯ýzv _zszøáÝÑIöοSz�úåàíñ›�‡?œ^�É7·ùÍ“HÛá­×Ë_;9ýH{ðöíé¯GoäK;ܹ“ð]Øóû¾K„²—ß�¾9þñøðàâøô¤XÉ®üròc˜Ú{<ýp’=¹—=yžN&dGÓŸ>ÿðþýéÙE^÷K9b8§Ã¤]§‰6ÅÎ�>\À´½þp‘ÏsCFÂSšÂó‹åA "-=|þûÉÅÁoÙS-­buÔfëׯLV ˆÏ* –»J³NÞ�¿?8Ì›¤Ã�ëûžýÌÁááÑùyö’ ƒ_ð•BÃèy½9‚ðõÎ�É¡%þâ÷÷Gߟ¿;¸8ü9{EL÷¹ç¦˜™Hª£ÃgÇ¿gOÊéöÊ”ž]üzzö¯ì91É×@ùS¯�²U(fôÃÙÛÙvBáL3[b>ÿ�†‰ƒlÁ§óWþýáVÃÑo‡GGorjk‰é½€“e˜*m¹8~wtú!oͦ63xÒÌüí´¹99}sô‘†Q¾)æTߥ˜ýè¢&>Ìs9ïx— û,⣟ú{©·ZÂI½Éx™,Ñ„#x‚Ìl ÈLÜÇRp¿–‚û ì·B`?* ìçˆ%徸8ƒÁj²§„d¹í EÐûÕEÐû%"(ŠÒ‹¸~繤xdMŒ0‡ 5\kb¢ÕƒÛÔ¤c¨çÎ7ÇŠÌx lä§Š¤~Ž=¿P øû(ÀÀ1è V»«ÕÄñ™ƒìáx7ñ¢ä^ÙÈcë�J§µZ¥bTÞM§ï6nÌ­önC•81µË«Á—Ê5·Óéû¢€ò¾{Ü>`ÈCèpÚ EƒÞª w%ŠŸŠŸP×Äð Â!Ža76ƘÕÕC×6R{|é |aâ{PÏîX)H‹„¤ß°@iÏØkšF€x'a©�gg{�fw¶÷VH €£/MÂõ‹tõì5 ÎSÓ†üÆñxŒÚ¨Äƒò)}ŒZØöWI] ´Bĵ¯Üx¾ØµèIßo¶t7xÒ§»Bš#:�n?‹”ؽ0H�ÑÄÓsO„⃬”ÂÎâa9ñ§\£­—sLJ™"ÕÞöI¸¿Ñ ÇŽt|á¸p€à~;YˆV%—ÃL2e&é &ÙnF1kC�wnŠŸVƒy'³ lÆFΉ˜c=žr/T Ä7÷˜mn ®¹+Ø&j¸Ž„c6éPšix•aÇÄh÷X‹ÒÚa%Ê&~œ”(;M¡DÁ‰xo§ÌB¬Oð6Ïú~°£÷ þ‚ ‰¯>•‚µˆ—ž9à¢7P¤ð€ëÜmü-\Ávίá⽡�vïœè“õ+”ýê]ı7¾Ý[Ûp&ÿuã0OüW2�þ n*~럲²Ÿ¸ì, Øi³â¿l·hQ°~Æ2аþ…?*ìwû_ þ‡Ý7~çˆÓÒOJžõý¤ŒYÿ†Ÿ?+±á9ð¬N¢b `m+IàÑ „,Â+á´„°,jnäT«yAˆŸ”¯¡û t–Z‚{%sÍ4òz$ÀGÓÄ.[-ʤV��…îÐs?½vbß=÷`ß-Ñ/Tâo#F †©öãr÷ 7Ù„£Iã=}n$¤¬¹ŠÇ„r8‘3ìzžâ ˜Nw+vðˆð)É#·ˆÚ‹P¥´²4oI›»-¢6<8mϺÆŽ +¨Õ‚ !7®é§ªTˆ¨„·kxÄã_«.Aäd}€­8ÁtN•ÙÖÿ?oOÚÖ6Îí÷û+·“±'"Jiǩɺ1¥À°tÊpMâ�´!N$ÿýžE’eÇ¡í<ï{ËSÇZ¬åèlÒ‘Ž:R|ñ&}C‹XÀ[¹  ·À`Ÿ_\$Ñ…žbàn.iáxù�fÀN6#‚•ô‘ét_ÉÉàˆvpI½êUz’6tÉGø¾ ÊY©Ì#Dá&el䦋-jG2ìõÑiq�_qY¤+ƒ‚‚:xb¨�þª“øúxÐB@"ŸÏÎçµ%°ôÍu¬L%Zé+9U ¨ £¢ ÆýI§×ïçÊ¡‰¼U’ Hè¨ap¼ªƒ¶B( ^ZáÍéçQiHªSRÒeFmÔMPg+�ìèYqÕ9\ØÆã샰¿Ðé7ªÔ¼vÞq(PÃý> `Kì®ÎeÜh`Ö�•‡tx>t탺²WaÚÉÈDù¶¡o3À“ƒ¸ ¹ùJvþé‡xLRë�ó$ ¿ò]ŠiAâÝl.$¤Pñs‰ÈHU⛹ăèâå�ù˜CxÑÙ«Äs² [Ù‰}ÕƒžBfÝü,ªC™x÷`6ÒF›-Q /Ì¿ëfÒRQ†‰g¹ÄŒ`à [Ù –˜ÃÔÙT#ô0í8›¦E &íd“lI‡É·Ùd#ñ0í}®Á–äÃä×&¹uÂq&5Á×›å‡(#Õ@}s »j 憥Ëû^tíø4»Uø¸W±…÷ª]‘é‡+ëùŒÙÈòh5Ÿ%óª‡EQëkvÔfïÊš‹ÃâLä:DÓðÌy&CœöR½€ìÎÉ+ÈëïùD‚ ï U&… ™&§±mØ—z^š›¿ÆaÛñq™“«UQ÷T>\ÁŠïI_ýNú£ï¤¯á†%µ†ºçÝue3 º’´æB€Í¬i¾ã/"¨k¶±ßã†0¨ÐuП_Ò%4Ïú�Qµêuj=]ŽPßZ ƒ“Ñ)¶±áíŠ{j¶É8�”½�S*¥›å»›qŒ~è9S"ólYÝÇD©Ñ\ª²1Pê`.'š­|uã¹t¢:Þ¹àø�HP[Ô25õß*yGñ"âl(ƒÀâ/XêÍ­+ˆ!Êõ›�[�sû4ÓâkjhfE¯!Îóê;pr@œÎ º£El‚Éè8V¸·•(Ð�Ú¬kØPbœZÐ‘Ì ÂZãªé!`:q…ZƒÉ5â^RNCÛPŸÔÁƒ(lï úÀ)™O6¸Æ˜¶�RަõŽˆ¬€V»�VLàÿ-’ÆÏ6å€Ô;toC0C3}-jF–:¶=ïB@û›´E¾·Mœ¥i¬výTž�Û½˜™…ß÷ÚQü*AS+^ÊP#�r¡kh$¡lî|Í©B:Ͻmvˆa÷Dž*%Aü\'¶’É�|0ªN¼Þ?fý‡l j#EaÚö kÝ9òfO^¢ŽÊŠÐÑÖV”H¶¢èï­U…Ú»¸=¦~G³Ö"Xàžž�t…{ˆn's¬ÖV+´B�¼¥ü͇,XšµSivã†b´Q^-ffy…\zÕ†¶|„B•Ý+ÛI°ç¸;ª÷…UywÝSQQYJ7½Æ½Gf/ÁbAª5P(HœÓ…*8_uȺêÐ=ßSú:?M4—‡j~,.‚3ø ”åmյ꿸¶ @ôq¥™ÊgÜEË"1ËG•ÊÁÆï«Óé;zY›N÷èå ®‡Ë9!õ}uÐMû�T*•O»=D½œpÓéÓr�X´!(û(ÖºXÆÿ¶uW%Lgõf°+u#¤ÙÀ~욦R<ä³õf†ÝŠWhK2.…¥Z½a‚Å®Ðe¼hgÝu‘î@à9/j^L{‹_â ¡$óÁ;;°:;˜y�øY¯á}D+ÍI tu£ˆTÒs:* ÀÄ(Q‚þ»r·j®9fÛÑïêžJu¼kùÝáöËRísm¹&£‘tÇ]çª78‰ë$fîrÔ3ÒKù¬Ú 6m¬âSxð3òÉK:'³NˆU/Åiûº¿ž;f{öÈ›ùctÁí'³†}‡›(â±ô±©.�NÅxÂZš¬£ŠÎÞ?zªàïžÊ˜Ž�nd¡m+xò³·Öˆ‰¸çâF\‹—âP<Ûâ@ì‰#ñNì‹¯â‹ØgbK¼ÇbGlŠâV¼¯Å7ñF¼ŸÄCñ§ø(þ ­�NЧD ÀX_ ô&úRt%Bq!Å•m)&R\Jq.Å�×R¼”âPŠçRlKq ÅžGR¼“b_НR|‘bWŠ3)¶¤x!ű;R¼’bSŠRÜJñ^Š×R|“â�o¥ø„À}ôd•¯áQ>�”‹õõ§3èÓGY3蚺t•ö|wõV‘¡2l^èkW¯³-ô‰2…²{-öˆD&ÑõßÙ&º®l¢x쵦2ŠâæóôúU¾uÛ¾2ÕÅý=të˼F¸ o?!7{iƒ—8"‹åŽx—±c¢Ít&#dsxë*z@èôcHùÂ�a|-vÙ†§ˆ�Aph™�MþÏÛÙñå ¶ÿ¥Ž+‹a<ôÄŽm=ÜäBÍQÌœ8êö:PÇ-§Ž@q�Ð{¢EñšC2Þ‰¯£d ä '¾ñ×ã�úþMz×ú¨Õ�p#ïÛ4ª�¤#>¥HèŽx,Ÿ¨S§â©Óvu©¦ÂƒåÏíeñW°üOýÂãìõ¥'t UJAnxM¤¾›½ƒI=´ˆBIu:Áš”ü²ì?ÛhþqòùóçÓ¦§Ëh µÓóÉ1—7®Ã¿%üY­ŸV§ùˆ‡Ëh>Ue“S¶dÆ•ÙY¤®¾Å‰H�uÖ–b¥ ¨@DµNtxiå´R1�%<ªCÞÆZjÔáÓ�d�Iï4£Õ+‡î±iá¥fP/XA*ÚŸ T\‡¬» „ÕÍïgî_"öš+ëþS Ó÷�ð8]sÅ_Åi�²÷BåƒÜ¿ž¹+uÌ!¥O9ÿö�åÄV­¸¬Ý÷f;¤$ÏèèIö¶0Àë× A²´ÂšõFðÅ]}¼./%©WYPBfÚéFHÿ¬”{Û8¦ ¨üÈœrD‡Uªä7.öºÖЮ€ÉFû½q;©‹Ìß)0¨ºP·†÷áµÕµf<ö]š¨¾!ì¹›¸|‹Ëxc(nïÒ×UtðY­vJ ÊÌS €mGgÓ«²ø%Ÿr]«TÎ\NjxI°²þ[RÝw)B ç¸~µ*¢j•J©eZãYuô—‚Ht6Öu”8«U1w°Qg_ÀV‰ 3>[³zV�1¶|Tm³Km¤Ñ\n/0-¬ï òâ g¯žú×kÄ€Õ¿ÅÕV[xAÕ¶N:§ŒùoøR�Åj<¨TÖÊÁ`:ípÃ0 ?¢éÄl~ÀperNƒ‹vdª�)a�ÌtKÕ-/#«Qj�gv*íf :Kx¹Ì“L·;•J¸Qoxã[.à±´t ï£j BàËÒRxŒ�#˜’$Ñ{îÑÞœAn}|,᱋‚¼>_yz\oôž=mô€d꨷ŸôN›ÔˆŽ¡tIó{¾«F ØÑóDµ§·Çd¿Kf¸Q`¥BØR�®¹kô&§0œŽqÃ5´_VQÖËà«+—ñU׺…wü‹¥1ÌÏL‰tÖx$ùà1–ü”ˆW*èûOËáV h>ºÐÅ>£ÉÍM€�41àÏÇ3æeD¾ CxD`ѳ'Øéj™ÒóîΉSMªÎ©£—p$-á\àMÌ]‰Vó;§äø+âWçWx:ÏðÝÙ çÿÂszŽÊ*Û�ó€Ršô¼£çŒs]©\˜k™R|z6èÐózžÐóógú9¥ç?ôœrQmYxO^N\O·èl§ç6=è¹GÏ#z¾£ç>=¿Òó =wéyFÏ-z¾ ç1=wèùŠž›ôü@Ï[zºïeñm|,^ƒst¥‹N1÷§cu¤!ôU-ž¼C‡N”0²ÔíÀ(ÄjÕJo´~�K{@ 8Õ°K̽2ëÝ£½SžG›8Akמ æê ³·Ëó)BšªÂ/œ{ŠÜ„�ýGv?^¢Ö:LW€)]â¾›|\ÃC]—„þFdtû5Ö¬1g¿6á*‰ ÃÑè:NÚBu[i't¼Ô¼ÃÙi¿öm%ÝI œ´ë0/LmFÏ7AÕ‡®aƒd°éÒL’‘p¨G!`�¸#©qñÌ8lI®–9a4N.NE—:K/Éê\Ž�‘Xc–®‰ÖåÞ4ºÁsÙ@O ½Á8šMª€é1Nûmseé�ŠA}æþ ¥ÆWÙ¡XgIý"Y@ñª£:�òçk%àcÕ8iõ˜ êè×z£ÃaÔê…}×+Cw‚äÐÂŒ&­ ˜pžA«?nG£­$j,!óÈMïyãq°>Òƒ |“Ç˳Õ/=ÒaZy÷ÚÙ¦T*y¢³žê:¨1fÐAQçòÕ6»Á–ôsÅÑu«ªf;çv.'D½“>q?Ýê h Ýà€2Ôw‹ð§.v\F?˜n°™±P—ž3^DÓi4÷50í4hf¸�[gÃ1¿3ÐÓ�ј߆ÏðÅ3ñ¯MD@E=è· gÝ@ÃSWÑh˽ڦ^œÊ„’øËðòîº�•ÊÛ'èÙ8~ ?¦>uƒ¯iå¯òíQÞù~ÇA0–žÅ+"ójóŒÈ¼jÞÑ�æý|ŠFåFkidšÁ¯É4o“:ø_o#ø™2Æ©»ÿbÅø›Nä3Ã6ûÿ“f#ÛtwÄt—…©¸„ã§¹%Çýçà•¢·Úg¤`“Á;Þ§„’!¤]wz�¡„ýì[Ägu…ÉÔkåÿÊùÿ`zCÑ{ ¬ç—µºS�à™Š2Α®Ü ®WÖãg=-îÆÀøH²¸­ w2Æý×M·´¥Û¥Ü×ÍBÕ ã§P„�ç_ãþHÄQ3­$ÊUf¬´ÉX)“‹) ê’W”&Š]š·p,»1ž�tKÔ ÕúêŠPäñE�ÍØåIƯÒ.�µèœ4A°ËŒàdA;�ިłÛ�œˆ²»VzÛPÍù9!l ÚãPm{ Ñ%‡˜¨ ²#�N{ó'¼½tµºÓ'j¼{C³E„žÑJçÛû#UžA•A°+õbƒ5gL±¸j¢´§Ûé4Q«…ehùÖû@S+ 3o¬?~üÈ,°}j(ÊÍ Åf¶ÒD(û#B¦™¥_5„)ät©³<–me…ã˜ÈÉ/R&Ž ç+¡‡¸ø*‹‹Z æ¸Ñ 3- ~èëEbæ\º[næ$iФΧÄQ�¤ÐÁ“‹'#rägzS$l¬za))¬™ªYëˆRª�RÕ5ß- ˜0s#Nê§8kÍÏD{~¦õ¹®q‹ŽYÅÏá67,�ä¼™Ðd}‚úÅ+K¿ dNBuB÷3˜iHõ^Âtúq+ì“ù¾ÃQEzi™†kÌìiLÓw¦çy6\ä%–)E÷ˆ0I!—\äHÃäå ˜G„†ŠÏ"°ÕÜW÷ Å[ÁapsÃCm»F˜6ÝZçé{®<{Þàù7TÈÏ|ã»…3.K7Shc†3;®Ò4ê^WôÒY  ‡(œXÑ C*ZíÎÔLF\¤ékÊhxT ^ƒ¿GˆeFÆó¹@jf~,=#ÀAõˆÅ…´÷Е6aÒv¡Í¢2}�V¦™ªønv?véƒô >6õGίcÔTõWA½Z}âøi�›±�ßTâ5Ë®ùVZ�Ô9U+‡¸ ”ÃÙLòö ¢‰ÐOÈ(F‹ˆÄÀO•©F�—‘çe—vÍá"áŠX"·N&™–�•C¾—§|Ig­Ä™Ië„•¯ÖØÑHà—Ž�¹ƒl fÁ;¢Uš"óXB€"3\Wz™bg‚gÂo«èXi¬ûJ�ÅmUó¾àËæsÜÚ…²rSét „׈jf¢@s›/µúJkÏP˜ŽÒê5¥�[ਫ਼o¬ŠñL^Ê�üünJ]4P|b~夰•ÊJ°’JøáÙI=„š¢ZÕ»�Šë¡*ÔÌ=‚W3»@ÀLªb�ÌÇ#n4• )™.Ÿ‘JÜ·àM“�è r/ã™�•a õÐÛò²¨]¨71AލêÐêQøžüØ D÷%.Ì©²zœsõ€Z5l uÐ7rš!Êõ=OÀØ«[¸+>ðÑHÃÅ�U9M§:6u¶Tä§Ú‚ÒºòMuæIÛ^f̉YþM Ö•kãa;”¸Ï}‘í%½ ë’Ð,f¨ÑÒUÀh9Çã´÷/™Øç^_KW%¨SÉj3cdpû§-EZ¹E7¯9¾Ñ”0¨Ù*Œ„¡9¯ª�Š �Y‚cæ«"±7äñ‘†Õ!Dè|v:gkÀ‰kÓ˜Y¼” -Í$•¯qšJŸÏœrcàVçtÞY¬ÅHq"—l¦Òõ€ß%)¿K€ßeò(Þ—œâ<�A¤J]Ô…”ÑŒŠ2ÿgº`¯ç/êBº �ïBVÄe0–X‡�¯Wàûm_½'Í>~¡g•Љ©,/@ðy›ìÄ«iyÉ5¯¨I}6!ŽŠ øÁìêñÍÉ-›Ñ/ȹ®<ûm¶âÅà “=ڕö \]-Ñû™Vž¡¶Âh(»÷ ¹HÃFË9ÖŠ2È U¬UjÖª�7_ÅbPº¦V4 eš¼£›Ì{á4˜gÕºÅMdæR7$ÿ!4c`©ÉÊç kit–á=Ûx…•'ÓJPr ìyY^ooæ[È!í¯;a+lGŒØáhQ×µ$¶zÿÀê}öKê{9í»K*ñ¢¾ÚZq¦»·¨6g³�¹Tp‡³7àÍ÷Ðè,z tÂשE·„¶R³; Ëž³¾‘žy]¼¡<9^�S,¶Ù&¢¼"È2ñ‚öZäyÛm‘›|� gŠ*QÅ ZpQ’‘”¤i”¿Ò|–¿R!J"˜¢iA@G¥iNÄ!9s!Dójµ#Í­‰�’ÄœÀHgE+K³•È1Ü@U=¼¹HyßdðÚò�-ÞäwL(w±èv©·�_W—yœj[�ß�/9%f˜÷6›9•8‚*aßý Ñ�F¹ŽG˜6+m �Éœ�‡•3š‘M“õðš û&±•ô=èæƒcáXº‡Uƒü´áX’>ý€7µªÌo(à(•Í”iÆáXÒÌjíŒÕM €£$�ÝVF&«­:±{úc–É~¨‚Ža¾ù¬Œr¹TdÚ9@Á´cpC#·½#Ê%ã?÷v³w·aÌÚ„Ž÷kgq*-nþ~Y÷ÓEš~’ÁQ-‰®â¯Ÿ¼Ä]Ûî[Œe·&W½Ý×xš0ïˆäGÐåORçÉ•ˆy>QtgŒxyü}yåPóÁcð•ÿZÞwV䉺[Z�Aocc¼b$õdo�µ(ÇÿWݵ-·m$Ñ÷ý Ž˜� ^I”LiÄÈk:±s[¯í�Z¥" P¢e Š’e¦jóGû°ÿÿÑöé\H‚Š·j_öE€3˜Æ`nÝÓçô†&LìÖ°;Ðnu¨½êHoÑÇeo­fAL/ÌWÝ’é˜q>ùY£M¯Ec((…œÒìT!NŸ¤F kÂ$ËÕêFÜ�ÞÂTPˆ…Hºw*F“ŸÍ2B>¨=¼fPN1Ù•²Fàb·(×�ó’û>í*�‡]Å‚þôe,ÃåÌ­!>jTïW$fÑ1,d[xbi-=´•Ç¡Œ¨üMX¯îàv8Z©�ªûôûÿþôÏO¿S�bW±l>im>vË2üñ/d¤!ùÝ7DˆJʲßжA{HŽÎç¹Û»Û{[íí]ê`%ñ»½ã&õ´f¿ñvºÕjyo§OŸ¶zøÛvá?ÕÖ�×A<~Í:•Ix9MHü«Êl⃹ L‚ScI¢Š¡õ£±¢ dq€ƒ ú᪙x_‚ ‘•x:a™8•„ "®%s†Šð%mp·’Z@>ø´0%¯"&¨*£TOjžWÛÝy¨’¯Mm:ð—‹+rÞ²-ããt¯TÒÜmµhÏvxè:IM㬇Û;;ûvÂiÄzEð›v:Ψ‡Õ¶Ú“¦Jj[{ø‚â{¹ÆÑVè¤J`F´§7–BµÆcå±óGáÌÆxX*vç0RLíC½³ã=jW«ñ�Þio¹�ªUÊÓ¥K¯E;úööŽë˜°»4¥Ü–·U�탷e×$Ø5œD¶íŽ:åP¥NT¯Û¹Îô´9¶Éé3Ю·g ízà ƒƒLÚU¨Æ:èe¬VOÕ­ecŒÈ××ú(}ÔµüjÕi¾ôâ}iŒ[Ý÷ÔCÐîéà–]ƬúßÖƒÃ+¥¢zh7Õ…öá´`ìO#5•Šé£"Ÿýðœ³eðm*:ÕQ«…‡Qñ1 ^…k+K9Ô¡sƒ~²¡†j¦oÈqs¨'5¯ÝõÚ�›ú÷òþÅ.­f5ÕÓÃúÌÞT/ét�%kH°×|Ik÷¿’rC›½-¹»Óº ¡¤¯Ùàìø°¾‡>˜g–Ø#œÏÌ×�³/u:_]+`¹©ý[`4Òca‰ŠÆô�±šÀï1Sº<½Z5*°;AÖy.)+»‹ÿ¿ÁôöC YSÀÓRQƒ¦s œ®-h:FÙát. £g‡éÑmoËÔäÛ%3À¦·owazCC0zcGg†‘´gÀu/M—#ÃúÌ´¢Þ^œå‘áu ¯è–ghE÷Z }µvç�VçÚZZFaŠ~–æq~ЧŒÔ;¡ÿ9Rï![Š7Þ/÷'¤ÇÎwZ½^³µ1JOT&¤(Ø'ÔÇòÞ¤5ÅB‘4GÔð€ƒÞ;�õkeŽ~ ˜;J~ hݽçý¸Z}\PÝ ;i~ãk=iõ�ó+]æ8Âo(åË~öηt{ÕýÞùYO‹€Â/(™-‡Ï%!Ëáɘ-‡/äGòûŤ.˜$’Û,–qš”_Ä{‹ð‘a¢%Fí¶°‘–pB&ý¤îta®ô×ÊRªÛÙì¿hß�7·ï˜vqnÓ>ôtba±›$+R'Ñœ'‡7#Ê´Äï_¿Q<s’f�íý…Å…@J|†[&—(Q-H$FÞ pd`àÆ—Êþíø#íO©Ɖ¾³6¬Žµé¹$ý—|µKWНöèÊæ«Gtõ®v{tE…auµVp<¦²q~Že\�ùñ�úóå‰Í8“Ë|ç]I‡ŽlÁ(†Äyç¤c¯óL�Ð3¨CÑ.+¸²�s€¢ã94©ÂàËŸ‚b"5}ý5� O»ä3­ôÑ ÉJÓ{ ƒ&ƒ”4|ê²lýáûZ¨pÙ6èºcI¼­ô§:}þÍ1I°ÊJgG÷^±1v™Ê,™Óø½ø¾›˜éjFY»¹=M¦ 8Îï½€ÁŒés¡‹f£¸+È�Ÿ©´ìn ›–kwâNL'v xàÜ1˜ƒU3,ä2Ç•¹�² Qù16ƒ Ì¢¥ÿn޼dàù‚Ž�|ž>mBÀøA0Ã-Ÿ‚ûž©eZ“–u¬ÿDG\ŽgéWá~áÆ†$9ev'¿*‹¦/’6ð3Þ– ¢AWdÍ®x´”?WÅãÜáC÷”‰­Fëäž™sãèÀ„Lµj™4&½ìIãìI|Ìátóo¸®÷9d›ì1ÐâXU+Å‹ÅÐ�š/î`‰ÉÜI¨õ˜{ÆÒ”¿Lœi¢^(ðÓ‹T”ü´e mpé9qºÏNoÒGQÀ™X I‚žæ9}[ž`xÐ’©å¼0ý°é¨‰ ^o­yØTfžO[ºå��öW1$gZèÖy¯6ǙȟulÀÖìÊ‹¶Ï;–á:c`_6/¶ºÅ˜ �dßÌkPz/1|I¬÷ ¹¢¹ônpy„ù ^EÒ23þ¸jÄö¤þ@ŸÈG}7Xî¸IÞecÌ–A#k áÔà±¶ëác—Tí¢ÿQw45g33}~®“”3ÒȲ“B;èGÇøðÀhv¡oa."µk?^¨h®œ2OcÁ-f½4™(…ÞØËÝL⢛ ÎÝYPäÉâÔñ½…%@Î)H „ä.JEéÏo¨{D5–Z*“šhœ7V€i„”LÜ‘‘’k›ÎÙ ?ª€›üÜV¦¡hð.5ÕF+¥örÅPŸÓúà‹­2GÓp�—?Y¤/hA_™y–Oµl¦Îq‘RÂ+¿>½:¶,üü¹ƒ]N. Rj�2ý,1Ñ%2À\š°PDÒk ™-Û‡øEòræÆš‚æWÖ�Kìñ¤”þ�fä|úããä¬Tšç3mö'Ÿg³?S¤Ÿžå|,ó…ƒÝÓ{Ãqµê«Ÿp¤êCoù‡l¸•kÓpQŠWOg‚³°±9h #ÿÖ¦qpÞUØäž‰‚×å8ž*K ]çO¼58`MBíTÇ#ðíê]Ç¢¥è½ èÕ¼©Ïf³:Éê´nšÐíûPéHZýúÕÓúž…Ðx‰sy:Gªåð¦Ó1õóŽº×I掯pœýñS²FE$Vp Ã'0QJMë|Gb”Œ’‹d‰9ìnŠ/æ1Ç”/lŒÒ\x¦Ù|°‰!ðù58Š„ô”Â>üý]éþv0bv† C(�X­v;'åêœü9IÕž Bª„^†*5cH¼zØJzŸ�t Ckñ|-RT¾$zfòYÃ^µÛ²ç ^ˆ;\¶ˆ¤z¦K8®Ó÷Þ—S(ÜÒw“NâP“ºŽù‘>Æ<Ó”94,µ«ŠÒ²´låס ²,#Ù=Rž.tLJÞHÓÜÜðWŒêa#â…àãGcäñƒñ$ R#g[ŠšŠÖ‹6=o1@ª5 ¥´Ÿ‘ ÕªüoBAg±´Vj\ÍëÜÉòg2Yêÿë [''Á•É–ÃqKyDmq«±P|Â4îìU31»'nã×Ur Ú“#˜|^ãB¡ µ›ÉÑ'»Úh4p`ŸË|¸Ör«Ë›`öX£EoäLX„#ÑìèKóÖµ„°.éÇÇs ¼”û3CÚ(,1ö,½e·¸Ã|"ò\~úÙ;Ï6£Rº'=³P ëà;¦)xПPç,÷˘cé)Ø"eT  ]2[ éâW㱎÷ÿÒl>¨HŒïi} v@ùbNÆ“Ào¼»j\ .ÿPKÒV1]ɧ|Q£Íhpimunify-security/assets/ui-app/assets/static/shared-dependencies/platform-browser-animations.min.30c1ceeadaae.jsUT ëÆ«jëÆ«jux 致[‹SãFÒÿWŒj�’jg ä.u‰ý)>0Þ, Æ6y „4¶ä‘¢c¼Fÿû×==l j/•ªdѼzfzúñëžñxÍ]´S: á#µo¬ÿxl¶Œ¼ôÀ�Sj‘ry±ˆY¹ÆcáÂaÌx}íÁC¯8M­[bO—ÌÇJ›:kÉi‹‹4ô…Õ}òÒ– Œp’’�ÄÄ#>‰H@–dN² S2#kòDV䎌É1y Ò'gdB®Èùƒ Ɉœ’GrNžÉ%ùDNÈ5ùL>’wä'ò#ù�üI¾'¿’ŸÉ/äò_B)”0J8í¦T,S¶áTÀÎyç&_≳î 9iŸ±?¨/¼‡†¸¦=&ñ#…»'7ÖïËïþýõÕ’‰pAiãnMW’¨ãËË»³SÂg|yw1ºèH ¥ËóãÉÇÑÕ[=(�¤íEćÂO!] ˜ï%˜Šõ$‚Ú+ÊšÒt,Öýy3þ  ÞO©'è%ôœÆéâ£ç‹8]“%´$º®§IæÅŠÏ.~ô'£«»qt9€5'ÐY®ÿ“Ç‚ˆ¦d³ßb`Ö´4µ&þ™áÞ’$ }¹¾a,�O8&ÿ?†É˜FS².&îƒ`Ä•\‚…­¼4¸¢S’·ÿ2ß�ý뫳ɯw×WçÐñ fS™†b Ã}dUPô¢(^�AìDøY.åd�xœ³`2wEç%[¥^2ö¦ô'/Zâ2ÆEãWTèuAËqMË'±À¦‡¢éAÎVž’.¹Ðov”g =ûo÷ôÓ0ÐõìÍ®j“7û]Q/S_oø*ò8%(… ({TÄõâlrv|~öÛàŠ ‹&ƒñäøäìÏíûÁd2¸Š£Úvh8ŠÊA¹ÂŽ•¸›üz9 Ô¶j,Ò0ÂÉHÙ˜�¸´r£zcš>�î\Cåé¨=\LÈg—æ …E�†°ž�Ðá—¹Q&òŠ}i_µîüTŒÉù~r5úy<¸s~,:ÀN¯âv»8¼DH{û[Ñœx)§ý8~ s‘ÿ³h-�ªnì{XÓ±±å'Ë0õ'¿B%§.)ó)ù¹ÜCo¥Jã—’ŠÉòÎ6 ®ä¿e§iˆÌ£´ñ3}È›¹j‡Q¢Ôã"Ž“- ЃњY¥¦]À)yh2vãMSítÍn }$h'ß ³¡ö&Iã§0 ÅÐr»r17ívÛÀ^Ý·²ä†þ>ôÏœ®�Ö¶RÚ›˜·þÜø0F¤Kä6ŒàËÜ6N�Τ°s‡ˆyÈÛÐ�Ä©à oƒ'¬w÷³LÑ z)Ý€Ò‰Ðo-¼GÚ_¦)ôº?ÚŒ® £“Å ,i߃�lðž„™e¶hÛ Iüу…`3±÷» P±ˆŸèn{–!O<áÏeN¶«•ÂÉÔx#Ú!†Ú‹8 ûûå’ž¤?ñ„ž™r„ƒˆ.rÊj±¶pÅË‹ä *!�zË(7¶ã´·FRhÆ‹nfç�®i‡‹D��g©‰|š Ïó1Öø: Øx'«›z›fr½ Ü n?g7ƒŠÉ:¡®ëÊÍÎhaSœ`Øxîñ mAyT+yÁã‹§-3ëÇԛɹ`AßKã)¹>!¢¶Y«�M f=õݱÌJU-íXq°Ö…6~wØ2Š�ö‰Çé§”Nq=Rn[µ=êzôå%ç!X“t 0AºÛz€1–C<Úó(žÕ±¤øŠg[s e9’º£á[ 83þí”mOLݸ$ß4´Ä/$^Hj!삺þ4ëXs€Ú�ƒƒÕjÕ^ý³§³ƒ¯ Í"Ïs.ëº}ûí·²:E!{lЩž@}ìöÍÆ/]£ CWÆ×%[,²€ §aÒo†Ð”­ŒL©{ð�þhxù�ƒ™üQ‹¬©{Çf(%ÞmÀpÜ“'Uå+µ1µ«ë_•|ýˆõãE¢ý³EL’%8c+…øÖÊÙ�¹†©qš�7ÔBÕº£å¶%Ù'ä¦Püã&�ÒÆµ ÍÜHȘJ»HZŠH nã ‚ cL‚Âș†íD‡@0Ý�{¡¶<çºqz†°JÌŸ¬‘(NXF„5.Ô.P™“ؗ㎑s)‰ë›¤ˆ¢¸ Özw¯4j¨wŒ¤hÓò-Xz¿­ò§ñ€—p7ívL¹WÇoøMƒÌØ¿ÂdŽÒþî*ótA9rF{ O)Zìt*úàt�³¬iŽªñÞ>—.lÆÉŠvH?·ÇͰ4÷V$tK‡NbwGò@&k%�DîëÂF·ö º| @![Çkó8mìî¨ÈâŒÚxSW–sIu�]=g»z`~–�R b †£šá˜B¦q¸=SßÌdÈg {  w á[€¾öŒ£úbŸ4nòIASdš454y«UÓ€&·¿7xÅ¿ìûÆ…ïׯÊǵÆôû‰–OTìÜvØkŒ—1•žðÜÑ®L#;[šhcפHà(�q�‹Es~¸%zõ`ñbl/è�¸}yAÔÝi@”y¾oqTE%T*Fôˆ `ÉæîØªóÀY÷É¥ÛXߦœj‡:pQ3šŠ l¤&;Ê|lÝàJo•«¯$Øe¦‘m¹fá2.ÂÌs…µhñ˜káU?›Y®+Ö ZUZ°ºšûþRiY%÷ôáë£ÃU’O//¾”A¸e¡a."†JÚ¼¨ÎŒ‡€šfÕÌzQŸUP{.½“à»þÞêXïE×m~ ÀºŠöAjRÉìÎV ™J¯´ê¶Ã™âÀX¦ÁŒì¶Ë{t;ú�IAApÊm:÷ï6,ëÈ$u>ûv!ó }Tas%#õ³” Ø›õ5ôÑѶ·ÜãûvÔ>õø¼ná%jŸ-0Õè1�(cäÆe' k[ŽÚ/uëY¡ùö[’­2ü·.+§‰ ËØ~1_>…êWÌR!cYYy šŽžZäå©Ù5ÞÄÈ Wd‘Lã–ÎjWà÷÷÷ ¾ÿl;íÚ —Üñ#$-$_>ǰﯙÎÌÒ %ÍgKÈa­wšµ@Uu­:ÞJL[¶¶õigm1ý8Å$© ¯¨@本¡©d¯ÜïäžïÛ_ËÇwwò†Ä AÚÝÃäŸ]kÑ{%«ßN—ìû¥—böÈF\�²äÀáDŠIu `œ2ë?–¼‰éÃyÈÛ˜"x(k2â=úWá»7äõþþS­Ã=¬ÓVPû°AqCZïÎLl`n`©¬ðœ×#Œ‡‘qo<¿¯Tè áùs—ìÍöÓ±@™•5Ðl›ìà-ˆ} .a’r¾“ ô‹¼TÓ5™É”Ä:µ›‘@¤l‹éöî¶}R†Ú3Jë¯+MžX±ª·EªCw½ �€xÕ©®Ü™‹4øÅ ¡ª+l¤TXí¦U\å++ªu^õáÒ€&ºR�+˜xGŠJiàmA2€®ÿ¿)Cü†2¼+©u½²G˜‘âŽùÊ*�YÃþŠ{‰Í¶4®Eß 4°­Ž²fÚYÁ´þL3ú Ðâƒõž�ÊÊW‘Q×pûç¯#5Wµ½B}tíÈõÉ-'7"s‰z$;Õ„7kZ͇d¶ïdÕx8Ok—"`µÝ-”Tž‹€‡®ƒÚ&>Vò»Û¡[QœÊ lg×Da>ÍîIÁîÝ»:ÍG&ŧæÁÞá[—¸õ¯\ŽÊ‡.%ñ©½Ômn*&h|)ó¥�ê¤9yúWþIöMjSžWÔ½±¼HXÄÂSJã¾Txð‡ÏÃ)>û îÆúý ܉ç?ꌤõ;bº‰÷€ŸÏÿžBáT¦øeù{¸ï%P†ú¢*‹–s:ëÓ ?-rÎæ¦F~[ä:ÑåëHÅ+¦‹øi‘!eËŽ¥ß—bÁ"cv3ª¿ç±ÿh‘ŸC6[ù6ûíÈ«&øø‘®‰Þ¹ªóEa%2AÕàÖH~¨*ù u™¾/þ�‚ÜRwGCîp%LrdàØ á&¢Ø$’bµ\}/Šà¼MLaÜ€VGýb¢�¿\¨ÂÏ�f„x£¥àòÁœ|.®�"ãê;3ÄË|=$EW¦ªíì/1€ìâóxESDý@’'Q¦�†Ä\²Ú–i·Cù†G]ν¼X�t dûûX\&²à”˜Û-±ëŽ™·�À P¹$Npóð¦I`D@ŸG�}pÌ–œ6üîÃ&5åÊÀê†ä-{à*¯¶îó„bNŒ:]¶E„I"ï]úwŠ÷‚Pà`m±CÜ/7—‘»{ŠÝMfN.®p°jlNÝMIœå¯ÍS½�ª±/�Kõ_Њ÷//ò/áÀ—\:ªÌ�e«=1 ÄŠ� OölõÄ‹½¼ì1GvbÕs&V q=ëa®AÚ”p•g ½­ [¼ÕA‹�G¼±A—!Îs€»0‚¿w…b%òJø^³÷ªRl�G <ħDuìá'`;� :§0ЭªpA 後_zø…VÐð—zˆáßç!†…‡nyˆÀ^Ëü„ܘûœNL–\ÅÑ�Ÿ²üš§óGQ]z"[KoT3²€00ì€ /†^ãPýy÷emë2=ç�üÁ% h"o®oMì4Êo¥@pNÁ±åô‡H_&@:Ò^oÀ¶NâŸå>äö³|¡l[é=»‹þÜÝ;tr¥NAÔññU©Ó›¤Te‚ä½ûtûÖ?Ë™°4#ÏúÅÇΤ!`gFë•К­�¥ì]u\¹¬çs{š‚aXÅéãXÑûLSþòb×7¸7·8U]“ºŠ.:á¾¶[ÙW–›5P˽£<—6˜ îrÌײÈ¡4 {NÖÛ/þVsÊÆJˆS´œø_ý¡”2qêÁi­g�,+ ¶Eå�êžË{¼Ãzèî*Ïu…£Ýƹ%´& ?�7ú© P— Sà…Œª2*DùT7/È#–ûœ6ö¹%�e½˜*«nhKD’×u%;©[`D‹Ù~m×=¯É‚ÄM݇»Ý¡ë˜’„B¹3Å!ƒgÀE!›uÆ´DîcIÓi±º›Û[�ÔÎwàÙ¡±à«PÌU‚k’zŒ‡U[¼aú'R�sj~€?@˧N fRý¤è¶Î8¿nêÏ›Lýˆ’£¯êÍý"j­½ùQØúu‚ëÎê‚ ÿНmJ»m·ø÷”Þ•Ý…Úwdv‹#Oã=Óª¤\Rû\:+u—¯=Ì$æ{�¹W„Áo†jv£¿”êÝ•nuË1©Ò5”ïŽÅà-X “ÂýÎfò hÙézƇƒð?G”*´^åFBçîv/Iî1ˆ¸ÁÜïí½óòb^–«åéÛxmœnnó‡ì ÔäC¶2Á¡õnnÕƒç¶Hså°Îeà�”bbu.e‹_YÜI˜^ºÚÙ¹§G2%û¨�¢þ!¬G³*OpÉÞÎ+G¶NÛš•¥ÈjLÇòìøpx§•W\¹ä˜k £DD ²Bl½TÜa©lžã[ðiáïnåã9#H/d¼²s̃ßÞ"*ÈSÖEl’U8+½•Å•a¸~eú:‡«ï»Q^`±ÆûŸ¬'*sn[ø¸ËÂ5m½F#,{m‚"9ª¯oåÓQꎙɧ蕛1sæC=½'Â[0ù²3Ûás) Ä—O= ÿ…  Ñ—;&¹Ç+|»‰è?³î³&î7,°ÖKž½½dÁ»\u¶ÕV(þ'›0dúbkù÷ûËØ—çW?@�jŸßÑÚhÚA« 'Cvnù¢OÔÝà³ÁŸËðI½5û@ñÛÊŠKœ“-ë]µþׯ>ËG5Ã^mÿ ¥Z`^ë©呪Ížâ•àÃõßw ×_~ 'oÃg8†Äc”à,0úÍžþ×_¾LÐèB„I·ÿ¯íj›ÚÆ�ð÷ûÅÓaìÁÍ„~¸¹�KiK¡-ôúJ†KC=j+×iƒÿûiw¥Õ«™\?Å–WÒJZI«Õ³z¬ÐÜFÏÓõ6|,ǃ¯ü`ê€7®^t=ðlÕ¯¥)i2¥ìU!u3ý@•VÙÃ…yâºèUWFoª6z1ÕÕßË›‚tñ…[‰oT%>ê–Š>¦ 'S9pôÒä»|š|Õ¿¾.ª—’­iUlOÆ—å•<`>ô¾¿™ô¥ŠÄŽNÇ®�Û@8]‘’#VU%x~Ìš½¾¨,{5„JtªÊ…!êLaéìÞ$C„Õ¬ƒôA à†¿SWEœ›ÅRM4æ)ÓP}‚n9ßärg6�…§ÛñÒÞhÇfVGáLûíYF7(³lÎ[¸X}Í5 €úÒw„ƒ«¯¸.èõ}5¹.kWŠ\R¤+? €ë¿û>6×–­®®`‘e½=­…2á�ŠàƒåeHïI©ò»íÃqc®r'ólq~MvE³X›#i··u›¥Ø*ü:”Åue=/Ñf1«ÀÍÙ80Ì+Å­³#äêC_gN¶ªÛÛT!2[:*ÛPµƒÅPêË€¤¤’¬ôL9F—)¢ªæ3èbB•DuÜy-›lOŒÚ1+ZÇlø † ¶uÀH’—ŠùzyIï‰Îe +•†Ó­®òcŠ–ÑÆ4w“U,Ó2e™¯Ÿ4w9Œ‡Ô‘a.ÉÁ’c ¸êrÉ—³“69AIJV‹eòÄ䉷Ó©Š.ôœ.?ý€JI~RhÉúd$ëä.É*‡lÝfA råX¬ £÷ô¨”Cð¹¹½�5A¿·sªº/É?1§{ó<< kʱ´ç�²>üÐ]ÕûQÿxŸ¡ ��íÅ´zLòÔ9:*¯‹^—OX×ò82LjqÂ~apØž*ªëí( ›¹üï§OjÆ"N‰"k¸ ¼¢0%† ÊÑÃ~2~%¶-©ê“¡LM´§»ljH�= H´SSXŒv�,ÎZ m0½©IÖȃã!u©o S=ÝÜÈ1³Cj’ùƒÒmnúS8êä�œ ã0¶* P¼c-ë¯!¥'<ÓPèF+ÿäh%…¹^GpÿÄ\ÅyÙ¬¯Ø¡Wu›8Å 0íR€ë³55øçèÇnromu-�ï{Eä•t½P(Ñc£–â~—dZ½äi’ ø�xY°q ‘±'¥Ž1"ÅóªQÓ”´"ãÿ}æÒÌ™ŸÜ’á9A3½®éîpzv3ÞÏóÙÍ£HB§/—Øÿìt¢<¢/W¤çå¾–šÐ  …]¿–ˆÏØÕ�£ëgœÿ@¹Ð†ù]!is¸ŽödœvŽ¿çtHZ|§Ý.M‹+µÏ^„¦ÍÚÍ'òܘ=I±¿…þ̱ò-úб9h‹û=æš«Ã&ˆ¹![ñF{½ÔS¹Aê�t0+€¡V4XÊæÍ+ÕójÈÍ7ÏÇ9:ôIcJx b”D_T‚­!ñÕŽOdѯ4IÔ†£·{w÷èÚ-tàDŒMˆ}�Ž{„½ê‘/ŠÚMbÍ€+A»©rËuNlЋ)¬èz–ßgÈgs�}siëÜ :æ~Š×«måìù ©h7~}ú¬b³±_ÙÎ'’Žit?k5²´Ü@*Ãû JuzVåå¹Ãº�r±ËùóÈî™~!Oû´ k¾ Ñ*Ö!&Eã¼I«Ì]ªmK�=ä•é@Ò‹Îè··�Ö7më´jÿ �tåz�‰2GJòŠ5 ÒL‡½¹ 2þbÑ‘�8¤÷.®�–mhÛ ì'?¬û}S/òz«†jýõÄAq¹´¦ZMµlÓTM.?�}^²ÛýDX¨ø—æ¢óÄÆ–�‹»!ñµœA&Çž)©�` r×i -pê¾õ°È÷òkÀñ÷mŽ?Øå�>‰(6ï¯,¤¿o+®“Ì¥qž‚R‰{ÑV–Ÿ Rò?:N=`ë :CÔ�„…¨�ì1[±Ñ‹ƒéGb™›÷‘Xúæ½/ HþMq®3ª6ÉG¼r ÅÂwéÃ¥;\¾±ƒhc] Ñ-Efåb»ùÛPKÒV1]ÅŸ‹j>6Yimunify-security/assets/ui-app/assets/static/shared-dependencies/sort.min.bd840d67decc.jsUT ëÆ«jëÆ«jux è‡Íkoã¸ñ{…#ôi—v�ìî]!W—úòè½<çX¤FN‘h[Yr%*�:úï�áC¢^vr=ŠbЇó’;yN]: ‘˜7ÆßÝhž…nò/N¨A´oÿþ/îÞÞs½Ï‹iâqTï¿§Ï^ìÓTï_º°Hà† yòô­2îF€²J¯/—€JÌYy8l2kmd)í¥, ?‹ý,¤9Ñ·‘:¬ÚÁz\hô§8©]&ñŠ&ì¹ æ!Y—ãÃcâã®Ï¯�¯ª è^OAt „ü‡ú$T�GAŠ»óÉzÆJ®GY"äKnõîÃ,y )É ïÌe‡\Þm{Y!MÙgê W¢É¼2‡nPŠù¤óí”{È„·ž�Û|Ü�Ò€óó>…ÖQrmÐÚYâ.�˜1|ý;£É39,aAèW|8u¸ÜJª§„>Q/cÔ.@­53�³ñõíäâêúöóñøèøêöôüúçÛË«‹/§øu2>¼¾¸új�oÖÈ&±Þ³scÀºý4NXA]Ÿ&`Æt¤Ðö.LF¨µfæÞ.J�OcN2øW6Üÿá“ø;§ Xœ€R¡F™Ö¨:LCº„± sf‰áù`‘*Tˆ."'–™$ñãe,xˆ,N˜¡Y§µ®ÎLhÊÀàùÚLm�ÖhŒèH>bðƒrÃì5ðP±:¸õ…‚áçe\(“³3´rËj�éƒUý?Q¹‡T’VI˜{R;„¨ö%Ô§.4$À÷–ùQ6°ÌO²ù׎iÇ‘oZ¦•ƒNíwëT�•±•ô(J+× „6¸]c_Á³)«�€a?r;}®J7Œ>Q@×¶çúnäQs¿> ‘D~๠¿ óÞÌ!�±Ë8†ýþ¸Áß-^‡<Ï…4ïÁ±¼?"¾.Ý7ŸŒùùúöâòúôâ|b�ˆ>öè ùÚY˜¡é…nš®A­G¼Õ»ê�vÐÈO{×k ©ç+rÐø„í°E�¢™È�<­€�öÕ š LÜ®!~%Mdå˜Ä§k(Ë^—¬I2ÄÏ#gü5-"ÁéÌÍB&¢{Šq»Ñ1#–ÔA&�¹+ ÍÃŽÕbHp_énꤾ3Ã(qŠ©|f�院½XuÛ3Ù ð �Á¡Ðã @X+ÇîÆå©ËŽƒC¦ÖåÄØ¡±_lá@þÚå®,»ŠŸ ¬sP‚ ¬x¤‰µ¾Ó…ŒÊ\‹…m�Rà«¡Ï­¼7Ãf �0ŒÂ“³ƒ�.óƒ‰PïÚÙi“vuâ8Ù œ2 À,ún„d È{=°.ñë8lw7€$ûrL0Â}y «,]˜†Q‘ 7%O_^J¦jH2ƒø%út13«<°Þï1èG€ i4g‹Ý]3q† n’iÍ/x‚f*µ_ºÉ½–±�ŸG©ª”®¿ƒˆûxwA2‰ŸÛá Q_q- ƒþÀ@Â]Í\ÏÑó&Iw„ÑöååÊ2«ÞÍW9µÈ”ÍKWཚx°™@vAD‹¤Ü\³çµ¯H &€¶ yþ Ø&V¨:<¡š’Eœ²1c8ºGФ ªŽs÷Ô^Kðí5Så¸(pÕœ©ÃÔ˜Œa9ÀDäO†È£¦šÆk+É.¾”j#h©– ºxoI›øœæ$æEì¨4?[MŸFùë iOK¬°ÜŒº 4 �UŽŸF ¨ëØ2žðX‹X祢I€)XqޱG‰âJ%^ÇÎR§çÿxoôŒ÷·ƒÉõøüh|ut{øËÕ—còƒ–â±V8®‹nÏMC è7�¦”A¬”ô¸©N@=°˜ÅÉÒ6xJ-úÕ®ž,3´rZ3éq›îž·WL|ЗëýÍù±§á1È�ylYS‹h‰\É^AróÐÞÿz?=Årš6ë•äê¹Ò[Í=^Oðo£·ÿv‚õ  ®f¤H0Â÷YÜ—‰®|J‚b‰fO’­f.`ûÅ<ñ�+sŸ>ÊY8„€b·’èâ[üU0nD1•ôâÀ¯àJž¼ë!'„·:Ñ)7Ä?•¼)PÝ™Æp™ òó]�‹*?/ØX&ì7jå*K*]Š‘€“™7�&ÔßÿôŠxƒqâðÔÒ6\å©¶]Õ¹}Ùáæ5%Q•UÝÆ^Ý·mõة۲Q÷wØg_ßèv'½×›Ïz^iÐ(º+˜:Ìg…u^/5¹ÎWkÏÝPnÆPˆÁï!T `“â ÐÞ"#§PêË’èl­W2�òôBá͹ÓYk^åáCkbT= ðXÓ>#°�ólŸ• DøÔ?�ÐûÆÌÀX]œ;}Óèxõ£EòÏü¬ê4b¡AÎTLÿìl;ƒè-—¢|ºÂT QǼuÉ$jYJO$¹ß@�Ï�²î”<þZ”�ç¼ìLecúê%Áª­mâåcûô¢ŽÌV>(ΤèªVIåô»^»‚1„ªb½õ´ä8¹¢3‡’’N Àâ0[ÂffN"{f±—¥g1dxqâIJSž!Wv¹Ià &ÜÑÄIòEüxª’±Ï@‘³³'‡Ô �³Î úéEQo`ã¼aKUHq·X÷¨‚Äncyni<+/ˆ°Où)cL•úš.éˆúXtˆsô‰,¿LcP;Òîƒ*3\SbT·ÛaTݲD–�Q⨠•²WWÞÁRüšu²ÉÎФÙ�Ð]ÓdÎ�kuz°³ÃFtÇq:´Y‰eQø¤úÚB’ û`I~'‡ êÝã�Õ^kW¶�²x%ÛA4oì¤"=ý`H“_ÝŒMĆ9YTîßÊ;wSø¥ UU°i�n¿¼˜ *üO©�ðfå®c:x…ÒÏ’x©«}U¹‰² ž'@`³ß„RÌ"Uê›�%¸×‰¯à`éý€{…ìtt…¢i^³ d [ªoY<Ÿ‡Þ-.¡Jµ§€\!ÄŽ í.P+|»»ÊYtÃÒÜ|3#=åa ²·h‘<þªÓ¨&þ“>ûñcÔ®�0¯ðcMÕ…Ô>}¤p°Âs¸Ï*ð€¯Ð²VnÁ¢¥¶6ÓuNê¾ÝäçNá%¸õ)�xyQç�­Ã°X×±½\ú×?¯ë&¤œxß° #Wã5]ü5o»L)îuêò,]ž-šìWÎ1�þ–±Þwh@ÞaÈ­T9�­´1E;_®êöäÙ·ÈG�ÊÉ©êS²#py|a œ]¦±¹×ÂdqŒÛB 7 ND€ò->"¼pÌo…“å<)–ØéVûrÙ|Kj©Ù²Ã…k¨d`½—ñm¡bæ¦üÈjKë¾l¶à²¬�ùË[³¥uwTrffÍ'ˆYz�«Eky¯*®*�Ý´ ²×ù]°¯#ýqNò5iÝk#œ$)ï §xMvšÌ¨í Ü�³�Ûw·÷¶Í©E·EÛW&W˜[½µ¾þºínâ¬~5[H*¯v8]Û¦\5¯çë �Rúðâç_ÎÎñz¶år¿>;œhùäök¹å6ÌcÝUl'¥ónÇ[®Z�0Š7RònçkÛÝNãÑL×�‚ã_\þÀ›?Ü•§võªoo²ý®·1æ5µg&B›è šúð7*÷"›1ªoÛê3Êœ‡OZÆYJ©8po_¨+mWOc8†�ºõ1Û1ˆg+ûȃšY¸E$50Vˆû3BѶ®üìߢ™uÉô‹Û5ĦMP›æý\yGy[WÓ…€ßÓUN´ëçÙâŽNÞÉ‘Ö@£mÝFõV®zýÖv±öY©ß[¯×`\™ŸI4çOq"6)ìàžøÔ Sû#y@�þ�ðtí£©úZ.Æx©Ù/ïΦ¤k¬‰£—^Óðúœ­ùHŒh~:ë@$€ÚÇð�jÇÐ6úVâVª�Wj[@ø-Ö˜eàƒ-¢’VxZÜæÌÆ+ù„Ägn|Î¥^Þ ­âýWÛ£‰®ùŒI¾UR›Èùþ ôQ´ù+Myê mTåVn%�¬Ggâ°l@bAë§k�.†¹wüQDÃ'DYÚÀD#‰A\íÃÆÏU�®×V�×�åk+®Çˆµ’Ø£'òé »"/@~œ$Þö?‡ø½áØ }ÈçÙž…ôiäe @ÙRíFnÌ£~"Lm�{}|€‚ ™âÍ_4·£8Yºá(ÎXØìa~S[i:ðüû>Äš»ØM|aÝÔïuDÚ1扻|‚õ]œ`Ç] l^Úi~ooõÔóÄ;ÔÃ8Œ“¼1_yîM˜%{ä �&ŽÒ¶…^­!œ‘í¹¡gò?àÍ~¿ÅÑõ%Ù��Ϥ÷aõdõÞ÷öñç]¯¡¯u5ØÏßAö¹¨”�*2m ±‰ªfkœØ/+aP³¾|CԜ˭f½ èÆì= xÄ· šË êkŸj;¡!?¦­’ZÞ'·¯Bnø“N›Rªm¡ è”öðß÷«§­¼è@´‰”ÚJ° ®Ö\ ãËúÎõîçIœE¾­+èH1tX0”óS u3o—2ÚͰpMIܔɋÑ&Åœ±Êp$C—´žý6>š+'î ‡ß)ª‘Ô-䕺àÞÁ*àXG,^Áò|ÝnUcáZç„¶jɪ.Æ–w¯•ç oaW�Å8IFÁAÜOÁÀײUÏHç(O:uGz§s¦ƒß¿eß‚¶·ÏTw±KãÌ÷%¿*LÜÌ®òZ½ÃR |Á­%ÈjLÆi£DИC‚Fõÿcïße®½.þã�}óePØù2Ð^SÁ—þV >õ—@êSeø­ßöOsâUÿç >¸ÉWÞùª®¡OÖo=i8i­‚—±ßZ«ÿï#‹à“¼íh#ˆ¾mx'¦ºpÇ¢øó”K,O }J²Úë<±šA�J|ãý§ÿPKÒV1]GBŒº\imunify-security/assets/ui-app/assets/static/shared-dependencies/toolbar.min.45ee94c67f00.jsUT ëÆ«jëÆ«jux è‡�W_oÛ6ß§ ,�ʵ³¦C¥¹h›f@Òum×—,Xiв˜P¤FR±=Uß}GIN,YvÓùÅ"ïŽw÷»?<~ÜËò‰fKÚ¿ò^¹,ÑO¨ÒÌÃëœ'b�@“Û'… 6U:ïí«Z Æ.7@ùÌÙêBRR°ÉÑ`ï­¼¾æiá€óŒ‹D3Gz·¼TI)X�w•³¹�ä|Íå¹JcËKbÏÿÆøõÜö78H¼ùýüÏË‹wŸêkÌÖŒ––E÷,Ae}ÏfZ­>)%D_ò5Kàhf.´VÚË ¦J‹ÄüÊûÉÃWW$´-{’Þõõ5–-uŸ†éœùTcªæ]R«´³ÍfÜLþf‚åÅ–‚í5(s¬(¯ŒÔhËôW9=ýå,%tÞs¶‰’låÛ¯_ó ®÷e®çªûîvXÊ%»�§_ÙMÁ¢0ÄYáógÊØWÖ:úlÌM¶.”¶¯€ìˆš©ËåËÞ.η®ÄÖ� ‰A´�† *SÌÁ…[¸¶ù>WÝF¢h霳Z._¥�À.óÞJný-Ä[™ 7¯ÁXÃôɉߒhÆèí^èý­6{o°™Ð&ÕÍÄ” C5_0ß÷ƒù‹ãçÀ¯>H¬ö•&—6ÃÓ‘P¿ üAœ·n‹¨÷™àã¼zò¾ƒì[œ<M;š£iwß:º´3ÓÎ¥m»Ä%´?fŠÖºÆµ�ú³{rÒW´#´ñ ÎñY€OO/Á,²qŸùÇ€hf2ßLŠ$í1A Ãz‘š[püpQxmÁ|&@zÚ|¾æ2árÙw#¨NGˆÉUßô·2ƒXÙ7.ØÜ9ù[ËýqÙõü�÷—8aT˜èß9˜¦.DWªlQäAvZÝ´WèòÅ0MÈþôm†g�¿ØØ�p¾x“誡·K­J™D`Ÿ†»¸º,#�Ð:|` ÔÜuá0<&c¡ãuÜõ®N¼»@Ùl°>¬¬ŸÖgƒõ³*”ä\lF ´ÜB®4Æ9Æ nØ ÿ—gvA,Àµ0c|™Ùãì;Œ�ŠÕ#¤V�€h†”ЄBn—�i„ÞWçD/¹Œ¦õ†¦0ƒ£šphblHš††zÁW¥ufFF ž Y±îÅ©åuý1L9IÑgÚ à£lšPÀ£<¦³ä€@5̱ˆ–Z»ùÉ-Ž[&È‚‰ïÐxˆ¿íÓá嘙ÀÌ´:ŠÁ¾ò]Ñ®ÿð¶�ŒxÖô©°›™*Jà|$yBÃEi­’P±†Ü+¥Íàð¤ r“FOÍNíF¨³3ny»œI¾Éß3/"¶Ó³«„舛(l/ÔÚ•šËú…Ò‰ë=j$q÷J4E³gÅ:^ñÄfÑl:ý1vBawa+Áy1|)C�ÖDÐb:^e°lʉER­4)âƒE ½LˆN¶Õ[¿¤8ñs²[ÅèìùóbT�öð ®\-¸¸ïu³Þ]ø”X@<Ê\î‚•sy¸yýO¿ûVÕ0ôÖ Ô»�'¸$iÿ©½ ø¶7%Z4ã$(BÍ»ewÜŽŒ(pµZÀY…ày¸€BÈ 3¼Hfwm‡4n�5i«}’ a¡ï·_•¤~¹m’ÝÙ¹äûpw©¤*Õ[%ûêI*:® zÏàA¸½qï¦|¨XÌ]ê=;SIkR 6TNWP5ü™~£Ã©¢� Ï{¦îó0OXD£@ÊSª‚0PA§¸Ô0æRÕ”/•{£ê’ªªWQô�»=ZWOJh=¤ÃX*^†ðyˆ`L�M¹¿?Q.ŸF‘COÞg¸ùÐÀ³×"…ëýª\åÕU|¥ÆÊ…áŒäÀKHÊ?|ÄœrõAÄãlŸ¦é8ŠñÛäô±¶ÌSô†]gÌø'`Pl~y±C¸Óܬ·êÍ–“óûc`L(‡ùÁvi>Šsˆ‘\Ìå甤™!”eêT¤œ!–%ìTdîY¦Â9ÂÉ¥¬@ô' ¢Ó`‚ Hf¥:Wø¹t‰"2•0÷ÁG ‡.·’¡ãI(�NÝ{fwÚH–|_Õ�§×Ó²xôm"¨D•x™¿ƒØ…EIk´tèÕÅì‹ MýÇëv¥_ÔFs&\‰‚�§bH? 0q¡áÂå¤�ÿ=Âüònòµ"ÊïÕ¨Q”D¦6¹Ñ ãg®wÒoçw®ÓCYk‚øÊŠ $V›„­®zÉã⚑̃,”Hˆ\^Ì€ÞÍÚ�pa2ìXš�€×<0�L.++V5)@›üRÃËt&ÕSDÁÌA‘uó(°O {Ba#|Èkžó5€yjÍ1ÀÁoGc¦Nã�îÿCu¨¿GSv5™®$. ?ËG¦†8ô¤K õ÷LP ÷@;©ÐËž. �8IoŒÂÆ3»Þw†é£ÓqÂt)G ¨àÉ8Mûr—4¢è�vÍô5G`|2U©ÐÌ‹š�§ª€`ßJô˜ƒ%}MqÊÎÛMåqÁ&©(øŒ(øŒ(œ à:¹+{µpñÇîõÀêg÷ Ñi”r f8³ðû±ÆG.Ä.Ä ±$ñÀŒ ü=0úx!âÚ°YdhgccPˆ“¿yä!faÍØèpð{ˆŠj#Μcž†ýÃ2øJ�ÉÒû'Od7êU€[�.ù0˜Èi¤ºqýhŒo4Ì–PRrŸ`cGÅK(îͬiÈ0ˆcbgd~Í÷SrƒŒlœ£g„òÈœpx‰,5| Ùr©x ¿�@Qr ©ÌHÍËCLjš‰Í!˹+õÏX¶þí:çúϨsêA4-V;Pó‘‰åY˜ˆ{š­g·t­�Öš•Ä¢SCÀÄHIPE©Û¹¯Ê¼$P+e òªÈö˜ÿ* n£ï›À+b×Ç<‘ý3E^ˆ_öÂcžW!¿ ûº¶Ò’fþÊJ^VZ í%…UáÔ¡‹È 58D/ž¾‚C—g}ƒDÏø}qb Ëç¦�ÊôO%þR@>Q¿VfY»(γ \þVš‡FšÍ0ÆË”5Þú¬é4˜Å+•̉¹ }' |ä( :±ø#†:ßJ/þ䘩'y–† £”¶fÞkdê°V#ö퇔Ùëªø]ü!U¤õÎŒ¦¨…Lú«¨ŸÄÀ°§F"~Ôeþ‘±p�cbk�j´TÓH5ËNÈ5¨£hMŽâiÖx¬j¼>-±ÀF|žÝš0ŒÊ8ón^Óî\GÄäwù>‰ §C‰h‚RÈ?(‰2K슌ƒ¯ô$FÀ¹";ÇS2¦p08“<Ôâ b2Á±Ÿc©,®ìЉfÄo§dÎ1´L#Õ9ôémÄä 4iç`BDû¦ÐN®tãïjðÎ¥ 2@5ÿ“tÐ 0~&5C*&JØÝS‰#5!L2uE%^Ie—ô ËuÜ~Ħú}×{qÝ^¿_ï÷ÿ2Ø÷zkýþã`€û�~¿çöÖ`àñMþ- >`;ÿ ¨nïs¿?Àç7^¿¿áíÃÌë÷=ýW¾!øÇsˆsɈE{Mš`)¦èk®÷¬FLÖi¤ýÛ×}C ÑȸEéãQ A�R"Ö¯l �  6¬iMä!™#¾ðu£Ôß{V¥i…¶¤RVVØcÈé[, ×Ld 7›æ;o}1•#Wy‰nÂ2Û"•$öù`Û誋«clÇú�.ƒUñVIûë5úaNavFõÙ¥†šƒŠ«ÔÒf`�I]ŠA¤�iòz lÊ;×lÆ^b¤D}Ök tm˜ç2ÖkºÎ_l¹ìÇà’áì�ÝB¤K³µŒ8iÓó:N½€w˜ÊÎ-¢Ä˜>ŽŒ´ðLœÓYפAò3Tâú”S9 &4‡)�°Þ&vaz[P ¥‹€í…b;Çc“ˆfÒ’(<-DÈQZnr:ÁŒ«%‡ÍöûÛVzI’¶ÍOªŒ�äPå`�´SMÛN|—ï¦a´ËWWS ÓÊå:ˆ:ý¾ÁQèm8Ë(R¶)+ú¢?´¤ ä†à,?ÓÄ©×>ZC€8©ydÛ¬×. "JZ3HµG¦F5``Ù©ñº¸¢V}‘Ð/Á”’,ÍÏÙº£uA!‚ÆßöûoQÃñ Ðe]v¼„Ik ©YºÙ:ÚÃGAÁxa9@”4 E¨_‰v4™GÃ2±´T MIÑxuœš ]4�Ì‹2‘nª_ Á§[ÜQ…g =6f8CÓâ˜Eü=fÜujXê2}(7ߥ—”<ÂØŸå̈A/p¬ß ø‚Ø Aíô_3)»«�Y o¦—gz ^£bEᣧ~Q¸°vèòRÀÀÌÚà!GÁpäº Ž«þ—úò³J¾`�›ï/õ"^¤v+êí‚�¶ W`š�Ù�‘Mê)]p«ÍAi÷–Ÿe²üÌ÷ßYåÇI_’¢îJÖ3Ë9F¹÷�}š$"¡ìÊîmdšþø¼ôwc%•ˆ8ðIJæH]׋./œ„[×ͬW†N†ÂEéªë›*æ]SܞŰ'?1{**4‰ÁäŒ`°8–`›æ._%•eÌKjë¦!t¯ qßܼ!™9|«Åì+AØn¸HÓ¥=>Ð7É쀹e6KáÌnÂ­Ž ]ЂuCR¢ÆÈ ñ#¯Ì.‚®ÃR\ R�}ÛÏ8»¦Î�Aäò¢‰A"¯cÍѬ® X¹öˆ€@{ç™#Q�ÝMi�í¯nNK<ÑOkMHjA�ºj>{©!¹˜¹«D1kñ kqÎZîÚ_ ¼­µ€›¸�Ò>Ї1Þäq——�¼k"­Cˆ³èBˆrUf×TŸká´™FžÒÞ”·Nƒs—Ï÷óãTæˆG¡¢’¤DºdtfYåu9,«ËZ³¢"\_NZ“OŠ‹<(›žÞTÃ*Ƈx¶�¾ªOÆ�¾ùΧfG>^0vQ6v–{·¬Ì9¾Y0¼ê(è´DKÂ'HB$ʵ±ýFs—+g&zØ 0þò"IiB&åùAµ0Mxå�!æÔmÌ'º¯±”¹û†f#›„þÁf8b9G¹(£!tøîÁ§êµ¯èð9�÷˜@ñjI{dN�¢X³ˆfiå;YH2Ý´˜bŽ’L²Lf˜ÒžŽ [  ©Ë(¦±…ßÕTÞ]@IŠÌ^^ FKÕj€x’C“cú«1"-ºxHQiˆàŠˆ¼PôëEcÀj(j&¨ß!Óp®ÇoÊqê”qRÞú¿²­<•}i N¢nœ×ÒµIZ˜ØdíÜÖ'¢TŸ¤avlò©-Îf}´´ìIîÑøM#»4+/m‚[iùtõá­�í+(„_Î9ÿÓÒk’É·ÅYMº à.ÍÒzy©€fvîyϰ4¯WÊŸ !¯žV]î¤�-‰4^^fÉØby1aÌ-•9PEO HqnIæ3×) ¨ËL�,m#A�ã:tÌÔ{}‘:Tæ{);—¶ÉeoN�\÷!µ˜@õæ:•/”8$öJ_á¢=š}9Åo |'}� Cg1§~ Àgº�� «QÆ�ïã±ßxöæ$nüò²€¦ÿœ`•%úü/Ô8�ð+l�ó Ȱš)óhèÛ ûM€Ûg iÚ‹—×XqQœ‡¯®ÏOoŽNŽN�ή¯n®>:=pÈ3öå;Îp*U<^³‰K:‰G¦8íìüæèòòü²2�Çk[rÍÜÃàŒ‰Ÿ¶ÂµRF$즛¬�¿w³AK'9Z=Êî÷¶I½^/Ž :Ùù·GóþÄW}ùcûÙœºÌ¦l†G5°w eGæ8ñþ 4½zúöSËÙïm�¼,še¿CKÇÕý^{ÊwYٙNJþZšWàI¥© �¡Ì”{_ìÐìÃéÈöHµ€Æ¸B²4kîgçgGÚØñÁ˜úÏ×§'ÚÎñÁzßõßOŽ´Gê' <¼<¾¸6þ¨ øã剿0ø4€Ë£«ó�—‡G78²#E8ÑbÜÈøj%F m›�Of½ßÁ!;jí³8¾ç±0�Ã<Ââ@Cã†àGx¿æ�ó[¼²©ß J!w<ßÜLD¬â››ŽnKÿ@ÄëxýR«Äœ¼±'cAdÈñ¢„Ì �!™uúΔè+¦‰^úЧ‚©'·ó%G†ô)“$s-. wUêabn4RWºŽ/Ûésç^‡.�ÑïžíéÿŸTÄùtFs¦PloÙÓM¬¢oÛ>“ž]j;\ǰ‹;Ý3HНÙLÈ“#ðŠo%2Æ ñ[ôÅw¯kêŠÆL�A™“‚9 JT–ÂD½êàPºÃn—ÎC£Eµç7ûnyª¯Öš ˆ‘M¯Sp´ Ë›â˜zµ�ç8ݼáVe|­Ù]µ¶æÑòT“ÄXÇÃÜRr‚}Äó»ëÇXúPc×TûÎL󷀆”ŒMÿéÝS)QÕ�ᕚ¬9êP˺ •/yN·ŒÊÔßÏêÒ½=�4‘ I(›+4o-hÀ´½R`4|÷t‘1«Ïý%SK’ÅÈ4§mÅ]ØvÖá܆T~ú¤ÌÀ […ðP®]#Y$ZP@‚äŸòRà[©ŸÏ P>â Ùøca¼—Ÿö÷u?á¢D¿8¤"»wìAFzÂ/ p`–óÃ�vèVÛ �Á>Gf‘ð»bWvÈ‚÷ÄÀ?‡¹ëo ‚-~³W‘“ú;v�M–í7éO"ì¯(>2®Ú­!‚'w»a<˜ùÍ­vkc{½¹Ó†óóz£ÕnµÛëÍ-¨[›­öv»ÙhAÉÖÚÄööÖ6úíÖöF{kk£Õ肟íím ^üfk{w·µ¾Æÿ«Ý"²×ÜXuùêæúÞÞÎîîº7ðùÌá°Ð ñ››…{7à<€ò.†‚-"#Ø-÷À·Æ*Xí67÷A�«PG¼s´Ö|Æ�móÑ\·Ÿ›Òô²>Î5ˆ N¬XçN}´8Dd ×{ç2²p2$‚DuAÃ)DÚSXXŠ€µØç¤ÝÀK2F˜?J˜ Naˆ{€sêÆdêÁ„S8ÅO<Ü©;$£Ì�áP½zìø'Æ?þz 6Ö±˜ )þ¦ð"¼ÕvoÍ þÙÛÇ[Å>­�i€i?|1•›íUŬ�Jf}4Û±>L�구TQ)#$ãÁ³QðæYã¢WSÏxÐßÜIôhö½†"ŠÙÒpÄ¢PP^%¾œ“&5ÇÃ+ =v<œ–ÝÊV6_é“„Íàï'¤©þðã ^\Ôž51•I$x%ceñEcåßÑIH Ø�Ð�²ÈMb¹¹î/ðöoGay‡¨ù)fáþ—Ýɨ¦‚û_|¼Á4?Àb7qÞî}鼎±÷¯Šj÷-,—/Õ‚¤v)Ëöbžµâ Ëù <çÃ()¤|Ï¢½ÝË5µ€ŽžÇ†ÓWH”´dÈ%öZýV›ð�­Ók`}”‡™5fbÒÞÖ<ZCîlǹ3º˜kæ—™º�X'”ð •ën§á¼ô:êØm5ö{jE¾ü¯Z᤹ÑÜÞh4Zë;p°Ú]Ç¡Ïò3À·7v `·wÚß´S`Æ‹„Y­õFcÛp°2Úí��õÍ�­íÖ 'ÿõ{‰®�äˆi¯¿T€WÕo§wwÒUýöIÑó»;I•}9)””Ü?Ó¿´™«�¿R)A 5¶ZYÎƒŠ…¿¼À_±²Ò„¿x=ðÙo7w¶v�Í6Ÿýµæv£¹ó6×=ÒãD¶t‘][øj¿ÐU¸MùŠíÄ…³‡�&ÞÆ(|cðÑÄfô¥Ë ÃD 8‚�fÖ8uO]l·c (‚³ì�¬.wwÕ ¤Û½vkMŽïÒ¾§ Â`9 éŽä…ÏüÕ—Áê®GÔVd.Xa¡ÎÌ«Š´uo~�)ÍåÒ’:q[Íõ­õíÿcï_ÜÚ6šÆô_5ojA0—\L¿$! mHz!4ȶŒÕÉ‘dŸ¿ýÌÌÞf¥•mš~ßïyÎùú4X{›½ÍÎÎÎÎά?Úx|™Xd N.ïÙˆ)ÇjèÆ­(™±Z^Ø›:R’PR“é•• ξê|Ò^m†°šœûöb^w–­–8Œðfölc –0ñ~)#D]~ò Û"e«™™1§>ð”$wï¢<†$ŸBÍ Éüz“Ú;Ø%Þq)ô=Ú¬ˆ]pÛ;°õ«ë|6€¯$á�….ký’µÔO'¡,ouɇ[��޶UV�©osž¶Dk Ç]“»58Ó‰³Ákÿ+ŠþPtö>é‘v­ç¿.ËéÒaÕºtx‰m¥Ñ¤/Ï×$ð/À’ãK,ØG{T[¯ ®Ü Y¥^ƒ S ؉¶÷š�õ~(®òŽé1ÀGºÏx1Ž` bŒÚ#}þ¯å62êR�ä·D�$ �)É¥­LÈwÅÍ£�§Æ9IwáWÞËŒ/:aJÒ]ñ)¢Õu wU@�NŽ•­GGØ%Ïc5Þ“ÚWÚr×øè~Ð îÇâ%cý&�ðBN*w;-�]­ÈÛc<«ŒFrÐX³xÏÿ *[]¹ŸIUA» Ľ«Õ„ì2™ÝÈZÙôf™÷¥–ÙIžÿV5î¯ùG&éÏ’œ”êÖ±žÿ—ªö×ù«¥ÁÀâ­ðöGkzÞ£R dœçÿªêÿ{þúsªzz¥$- ƒ8{¥Ú‹‰žÿ·¢ª?ã%Ý«ß÷¶ßï¾ü|üûÁŽç“ªöU­CØèß´TœZuÿw‡«±îÿÂò@ÃÓA±ÞêþOXÓÑñáîÞ›BEbåB=èBj-ÑÅ5âÞN¡ÔžxDBØÞC³ÇöጵÔÔ¡ xšx°ßù:Ž`rQc6gloªµéŒV‘Ü Ð. e)jXØ"À˜D€¨ÇÕ“ôÔÏá{?¢ßŒè:#»Í² 5ù, ÔØzçõC¤×û€*©pæa™˜¾�âqF¤”¾;BRü–‡DÁJàô5ô‹ÈNÊ5Aû‚¡¨J|*b™Ë”QÌœ'Šg#Ý`(®¾TH—4éë¢p!‹è݆£w›ªwâ<ÂgµDÊŧ,.wm"æ* “ðYUÒz‚ ô)¢á0Õz qÛ±Ü öS`þñÆ=ULLþ-ÊBÌ×ÌŒ ‹tRR†3ò>øÉbÕ0­«4>RÀ�cÁ Á �‡)�WE7uª5€÷Q6x™ödݰÕxDÛ  X� ,(Ï5ßÇ‚°L­‘‹L�­L¿jå’n’=km¢üA+¡w‚4ëKx]8EÐK.��ô_勽r¾^iqB“�üEA:Jœ 'q�¯ 'ñæÇ.qÀJÈäIHC^êÞ‹FV®¿ÐÑX-‡ŠRz¹ FjTÔëÄQã|™‹_à2«(GK°X`4¬Ì�˳˜½G«³¢€Xº¥&Éu[Õ*™\*F«ºª%‹q¯"?,ïbæŽ^ø’ÍZ\u4äÁ/ál’VÔ¶Ÿ+ÃUU¹‰”8 LE=F�Ê]C SQN�w‘©rºUB÷ìp/_ØqCœ¼·!ÊÑb› U!·�«X‘²¾Ç þ"׺Њ³yYÏBE“P³te*‰ôCru(†ãŒ¾µµ³+ A´º¨F™„Rߎʠn‰ÚÑv— læQPcR`Å]ìâaô>)fÒœ¢C›!‘oS°2ËÉ{Ÿ±–cÉ1/©Æ·X Ç’µÄó=˜Ã»&^ù(&yzß�I3ÕêúÙím.ªˆ­uÉÂù\ƒ6v.R'îÃl0Ò4Â÷ k”‡s¬ãqi‹æÈ¬Ó†9OÐäQÅ"E}ã†JL‘õ�«á�ÿW¸òu£ÕüšþyþXOîhÖäú©šÞøöVv-•ýLÃn]†Z—›¬N*=n1ßÙ\ó=Rs« §WÅ×e>ª©˜‰"ëÿãXòsx= K¤ÔÀtÇBÑx+jn$Òs)[áù#=—ƒs.iåýƒ©Üu*ÿw—8Úʘ5{ƒ©³÷V¾ž4U»çô¬õfÏZk±¡i¬¦­ýX?ÐHÏ35Uh¦¥•¢Ú‚j~�Hôã¹æ±§æ¢'¢ÃÜEê±-TŽV/áGÍ(µAÙ’ùçóµ_&_B%¿š5iò¬ŠÍµfÆ”D70e¾Ì@Š™+·Ãó{zú.æÞõÌåÁ¹K;"sî‹z�ˆâ¬@L@*‡AVÚê8Gå8#£ç6(ŽCÌüšBz²lX&ú;ÖæqG–ž²ª2k®/TÛ`ìå§Z5ç¢,WëùzjÏï>µTp‡h¾6çšÜó�?›ß)±Ç¡I¨Xß³Ö´TgÖàKkåw®7µÊ¬xþ¹ž‡þ]Ùsyç2ר÷­=‡È–Ðér�åê�×6}²Þ‚WZ»$,ŽúÉê)[oø(Â$³gµUX±•‰ ¥>Ýxusç½[¸×òÐ4W؆ɃS@¯™û°]4aÇùL›^ CL|6³ISe:kâRiÒ*Qù1®£7*PiPU\’ôãé$]\¢Å†ë‰gjšÌÃÛgo}*7A+]xWسs™H+o:¾ÎÊ(cþù&±”Ƴ™¬ãiL–#7ÓÅ+ñücÍ|©ÞÇÙ°8ä(j 2 üaØÓfÁó¿è:æBK “Û}÷ªZÒ†YˆV½ÔNEx¾óÉ�>Ÿ(È¥ó‰JP’UCé¬*ã!_¬Îíªup˜Ñßßq¢yi®žg!É�:Ñè~ÙÇGÕ +V·±=ïa³Ð"Ï?г½7m¶õ‹›5|œç<àì©iÃ"dÈ>þóa•ªLÂdñ¬�Ý“ 5º‡¤Íó÷ô lÏ3(¿ëaø>׸lß�ÿùx¡ÞÁŒQÚžŽ~Å1“=[�Ô»Òðp«…ü†tK*—{Yëjï;çUf]m_ïç?‘¹ÉHlUjåh#ЊrR£Ò¹æõ}h„#,šj¥&61Uø! |ÇL;•Sî|~לóˆïA¦]Œœ”1Á1/ï­NO9Ñ8«pŒÉ)!�-ý|¯1ïpáõ*» üMOy"õ¢¸ˆBŸ=س9'üP-d ±WdZù¶9¬¾jžoÂ-%¿Y‹üPNŽj–éóìíƒ�‰˜ŽRÕž¨çäÅì9ñ#6+eÖ¡85é@ŸþåÌD"4Ì+Ü|1Ï$¸âA”b&Òr*D}ÇÚúy³fð…s±É֦ňùf´ÜÏ¡§ôÕÝ%Ñîû¼‰ðÞÑ ¯jeª?×D¾ú®û½ïÓ³)]Þ•µeŠwwìήJwÆ1ׯ漬föxs=ÿ•žÉýïŸIyË>×líÿ‹ëß7wÅ[óòÔ/ÍYoï2wûw½{Ÿ>‰úž}_Ïá½;kTÅy…Yˉþ <ËJ-¾–û6Ï\ŸOµêc~$H´X%¾êw¸½ ‡³Hâ=»¦ríS¬Îóïéq~]}Îþ^ôŠDàë8Asr•"] üΡoàè÷kÙoP© Z¢¹â¯ÿgX ôrF,eãÇÄçæ{>\ù:Wj-„�ÛÞn¥ û¡`5–m±Éùªùê™X'«õü¯ç>ÎsèħÊJÒ©¬ÆdòlÎèGû¤’˃Êw�BÐåI0kÝ~ä•V_âiXžÿQ l?„-y{©]K£Þoí”7Òý1>+ú+Äç—x 2O&ÿr¼|q¼¿$6zñB_òaJ C› 3oò[$ì\ �ô’EÔG4OFïPħ7©ý%jÆŸiü:ߥéΣ“cE‰ò4Àðù^ø�¢3n�˺ØP%Ûg ÷ àÉÂYÓi-§6žÿ«FÚ¿ Ò›«PÖC �ô_ ÎKËM*;*zÿ,áþý�.|‚s!ú] Õý�,röàÞ ž€ÉLÜ™4ží=ø dòù÷¬‰°ž/µ¼…z¤¸@ÛÚL`“?^x°àÕ1½[ë»5,¥&Z5DrÖ?ß@žÿ·´Ÿ #ÕúKà{¦"æÇ<Ø­ºŸµÝ ¡Äý./{ƒ^ÏžZý»×Ùn+/9…éÎAVg~ÏÿY�Àƒ6ÅÁ0E}J¤;K¸¶_/¡0y €€|­45|S¡óËö¹öâb¨]‹ÎØ·›‹z'¨GÀ)ÕÌ>)‰jé$¥•äùoôðý>Ïðù�@( })�}1ñ Z}™{ ÿ>ØÜ£¥dBUCÆÓ=ÿw=n¿L75^z9&Ì3¿„3å>³ûivÚRy’^Y¿è.þ6­‹š¼Tõó.êK¿Í£2;»«‡*uSEë.þ¦»øÓôYD§LÒ«:W_O™Û¨ÒuÕ\#ñÓ�®§´z£¬Õ·.¥¢é—R³Çs·_Kåù?…ì²ùáÇg±Q~Öö«º‡6O›ñÈ keCËç,Kž;^e&ePY^õ ó3›·sæ-¸ òÛà´x¬Ú Œ\`ZY‘½×,«<ŒÑQÎÕ£ uöÂÓ§|k¦Á&eAü¶xáfò s~UaKØM‚Éß­Êÿ“;ÿXç/jµªh“wä®~y¸Um8r·¡7U!R¼ïת�ÆtxÎ}Ÿ ÚíC ¶g ÿ%³p"•„j11“âSÚÆøéá§·Ÿ|zø°^òyö#1m ˜}¡Äè̬+Ì&.xx AÜ[ð<ô~¬o ¾oIÂÖ¼â…Âǽ:óeVó’q>çÛY>Ë4ÊI¹‰Ã!¿žÌ)OÁV‰Éöuâ³´æß6ÛÑ|ëk[Í¿|iÕ¢ù«_´0ÑüÛçF%š?û»{¯ww^‰ðÿÅþþ;ñý;¤‹Ï_ü½ï_ìŠÐo>3ÑüÉýaïåñîþžÿák£Í0¤nY ìÀ ÃÒ¶´Ú¤g�ŽÃ‡^IwñméŽ`{8dqQÈÆ¤„>{ÀØLBß¼ÕkC¿ð@­ÙÅ(ó¦©9–a)¯kŽdX a›ƒÐ/kò7{POI ¼y�y-}äæyè3%ÜfÊÙš¢ÍËR”Tm^ë²QØ ›W¡ÏÔÓDÜ7Èc«I5�p€Œ J󨄵ÎHóKè š¡_ºXoî…¾¼9nn‡þë˜_šïà“ÇûÐ/Ý-5C¿|=Ñ|!&L�ï+V㿯û¬e{Í{:%/qž^7_[Q˜é+vH š¡ÕÞ½û¼óÛÁaó 0àè«Ï&ê­@W~€7Øø`£}²jþúü<Øü;ôõ>ÞüÆÍâö›ot gf›¿sÌ5åÁ°¦æo€H´ï7ÂÄî8Í¢ËèÏGä@c²ÂUa�f†ÀOø’Vø†Ö $ÓáËâÜÀ//¸F«âb}.9Æ)k—ªR;û6ªUª�"dTJa÷v´@ Œ]í2‰æê†24Wæ’ÑÇ<_Þ:²°Ñîj s9)=!¿C1ëÉê]fi¸êºÆ†«ïTª@Ë»¢)éßß4} xç¶}WÝeͧ;Ì•ã-›Ýú~VgÑç⺰”ŠÜ][7låb³ÐGoÕˆ=\3j&ü²ú�Ý�p>vÂvh¦ØÀQí¤zJÒ)©sìEÿ”ÀÎúh[™o¹›;íJt°©‰º�»u�YÀyqYXÏÓ6£yÖ¶ºè›³3â†qvWŠzè¢E®VO\âto‚”núno}¡ðÖ|¨–�µÞ…i“¥¥`ñŸÓÊâ(hèÔ\FjšRÈS‰'FPjÐdâÛ·UÍ?Bÿ¯ŒÌÂÜ¿ Ò27óÜ�ÌA6S!’Žpcï\JF‘° • I§¼£Îê$Þ™ø†c!0qîçEÁ‹mGž‹\Åjñs# Hs¨‰L3Ò! Í ÷ÇHÎ m-Hÿ™ôÏ�“¼™ä~?n¡·âÙ…&Z|\s¬«iŽà³ =@É �t5{¹±ý|ž·ò¼æ=Ç_âä[üÜ«ûý¼u3QŠóJõ­ü Ô½•nZ– /Þ¾)ù•ФitN÷÷Ó�²hy /�M«"N Õ´*u±yî .s­'A•ÔâD¼[cU+U—¨�¿ã$VÐ�Et5éݪñZUzB×yáVMPVhÈ0ÉÆiKd Ãt'ÆÕÑs(Íëa�™íÖ]ƾ°T1²RE‹TŸ ‰1 Š9wIqµI)§ÜþĤ¢¤·(P^<¹¸½-ÌB]MΖ²•¯ìîoï½ÜA¡>YW¯y—¤ãm²�B¶dÉS6½dϵ£x�Y¸ãŽëBÝG?¹‹±ìêí-ªgöa¢B +|¿ùéÖÔY¸ŸzØF×ÇhV–ª”w0d<ý7ò‡…ïeixóä½ ð‚¡ÎSÒٗο+l=¡wp�q©|ÓsØ#kZÅDiÇr¤sr²èBƒ•A�Áp;¾¥Qr–’nÐa$ª:âC~«”ØÐ…/Åw ËÂ{±�ØÃw­¯¥þJA9’û-«“ñ¥Þ›çä ×�‘MÌoÖçr˜2��ðñâ ·>Ý„ ¯•[Q»�:šâB‹‚¦K¹®-#¡�¾¸ìjª[¯ ªo9›�ߥÉܯ]"×}|m–>ºHUÑ´W;ÉNYÓYãX:k'rŽv„ܽ‚“fѼk�4X+€õCÈBM^,j"ZÇÆºê®‚ÒÄS}eÂt‘ÚY@�zqŒ£Ö0¯¥ªâoyݺ–|‡×’¤)þ3fV ƒ…Y?õß ï´Š5TX!Pi ¨BT¯^õ-Êæ&ð‚¤ c!æÿÆÊpÝŒ};b;=Sšéd2Ž£¯cq·¥7S2 uÕ¬-aiir6a=²˜pÉûÜõô£HørDp�k#¹ô7*jQ¨Lþ*Ÿ¨­Á¹Ù(×é-å:]á°l½gwyg[ejWRRYº”“Óé»�k²iUÚ\Nä@¨ CÃ3ãFëÆQùÎnÝŠÕ|�³iŠ‚êØR ÈÂ<öú ø!©î’×ô–xƒÔ*—(‚Þ½x³&åfëñìxÍ +{=ñ„Û8óŒ|R/�y¢a¡ óšv€æÈ:ÔYÅäÖîݰ~(å(XdÍ”… Æ^‰JzI˜-àó ˆ{d.Uq„±êC©äY�ù9û6Åä,sM8õÞ½ sÍqYº°om®JM;yËûoŸ�aÓ|H¾�å úl¯ ½�_?¿ß9~»ÿªåõÅ:÷&<ÃñáöÞÑëýÃ÷:�ˆÝ.ìŒÛÇ/ß~~µspÔòFÂÙü«p”Ù™°%-á œîÓ F4wò‰•3e#4†�N§¥SóOãյǛ⯕Á› :÷�Ld™ÜÑÇ7SaAúT@Òª’ F¨ Í.Nnò¦À ôyíĽ)`vÐÂþ AïQÖA&M-ž]Çù „àÛ$ËQÔ¦ùµ ˜3ãü ßEdÃt&h•qz§sX™�qîî¶JœÄn »í(Á3|c*8žñÎ ×æ½vgÐëó‚^¿3è�yAoÜôæ¼ 7ï úѼ ÝôãyA?¾3è'ó‚~rgÐçýq*hÚÉpé»ÀéÄyHÞKåuwµ3Þ ôt²Ê³Ý ì<0§“ÅüzÛ�sUÚ\f.W¾»v’-W¾»v-W¾»v’,W¾»v,W¾»v’+W¾»v+W¾»v’*W¾»v*W¾Ùtªb…©´¹ÌZa®|wì\a®|wì\a®|wì\a®|wì\a®|wì\a®|wì\a®|wì\a®|wì\a®|³—n' ç1×6VÌxgÐÕY1ã�AWoeÅŒw]½™3ÞtõvVÌxgÐÕZ1ã�AWoiÅŒw]½©3Þtõ¶VÌ8]^�‰�]ò“<Lfaþ1 ¿¹€èÄ© ”ªáË4 ܇p•c*˜êÍ»JSÂŒ¸afïCº!|Ũï�9¹y+ÇôDÙ,h…,SÁá=Ç8Má(Q5=vŽ™#ÄP«j°X–»€s’êbž»tèbž»t’åbž»tãbž»t’àbž»tÞbž»t’Ûbž»tÙbž»t’ÖbžYä0OÒp ATÉSÁ ‡¥ö¶êde˜”s�Yæå\aV†¹A9×–•anPÎUee˜”s=Yæå\IV†¹A9×�•anPÎÕce˜”sÝX¦ƒŠF´¥¹ÑS%ÎÂ�–*q.ntT‰s�p£¡Jœ „{HUâTƒ—/ƒyï\FS€Œî`çàÈvW°nÔqä»+`7B9òݰÍùî Ø�|Ž|w즈Ž|wì¦�Ž|w즖Ž|wì¦�Ž|wì^öŽ|SG�'± ÆÏ,¸­®rœ';ÇL`;WN©ŽLšY¼òFG'În�ûæF&Í�Ñhè$€:q&ˆ ·0…Ý0«Q–eæîPµ1ÌB54‰€6YÜ&Sçò*ìO‡fðÉò‘»›KÖ^¦ mŒu9G”Ræ(¼=íæ¿�eÆÑ=Å~_†»•�*d™ÑºË`õ¤Îž»q<Ç€½ Ý ²˜i.‰ÍaØß¹ÊS*4MnÃóMÜOÒoAÚ;4èebf�»Pùþu©|)a*˜‚Ø(Šål¡Ð¥B´då™! ¢çLÓ!Æç¯ŠÙ¦5Ù˜rµ °3ãƒíÇ‚É^‡A>N�ØPÎ5ƒœÂÍ &Ò[ú) «òÎà\F×sAwfœ ú(â^€O’§€-eš¾ü±�±˜g*@Ô´×[õ4¨ÎŒ3¦n4¼ð±Š*2uþ\¦ãÿ”×ÃyC&Ñ&œvfwd›NnD“¿Ã·ùÅй™°ô¹¡’È4H”a.P‡¡0•þ!�Ú4–m¾’kå©M¤s›Ñ¶yÛùöÓ9û[Ì;]В޳\=’¬šäR¦ùAÎhsUÞéÛ J‰àD¸ÛO!yªü¬"k <£^ßíÁþ ç{þç\=ÿíä­‡ËKµ“`ùïÕå§§õ‡çÆÀòKm?W½\—¶„øƒèåF«·³æI¸’ £nX[õã:ŒStQCÃ0".^j¨¸SóžoWZë/¼5$)| E¸¹ |x›bǹ|¼Z~ñgl"@2™,Z‰2úÅ÷ãÒà Z¼ÅçÆÇy]=Ó\ðêKÞ)Yåö{Cí±a)¶z“Ë0M£ #Žlݼæ-¤LÄ»Ká�åŠuÚ"=ܧ¶«Z2¨ëm™'öƽ„iTn•k«¹žtéÀ§¥•µóf¾’�;b `j²º´•ñ%/Z(òA¬'dÍÈFÃ(¯y+ž|a}üg¡üdUšÉ¸ˆb 7N•Eþ¼;€6‰y_S¼"Ÿ,ô#v÷‹ÆÀƒ¼u>L:ÁðÊ+Ÿ®EKÌ%g?†¶;‰ì¥à~Ц:â�™óp-W[«"ŒN&‚шôÀèGBøÞ.ÎvTDÐ$‡+M<—�ÈAEŸsSÛÄsâ“Óº³…XR¶ÐؼÑ&&ºB­ A— @{Û ábŒë;\@a>`¿†HÙi4 ­=�c‹­üþýŪ.çekÓg„1œ‘}ggÁÃwþÞY�/§R+�áB7Ž/â…‡%\8GFZâ{¦ý#Á*ÉV†Ï¬Ñ*Õƒ¶� ’ñ°g*¬’/ }A‰fÂK³r'©­²ƒh*HØó.4oáÛ Œ•oœ¢Œ7ž#€…~«�ÈÍæX  ¬‰áj3ôõNÒÌå7æYmf2„@šñDb Úøe œ˜(Vër£ëz’'?íïÕ¶±Ö* ‹cµ¥\Léu‡Ë ×Ü– ½ý4¹¨¹�éKx�Õêucñ ]¤Ô[Ï�L’íòt :×ýŒÙ(BSq]L]-5 »žç§°Ž"øÀ¿¤µºUî´®<‡Š1{¼¤¬[` ™®im£Ñ÷åTÏ ÁÀ(i²7_ÑØ”-a™�ZÆRêËZ½(Çû¢€Š¢™\ÈÄ�*dÃ)^NêÐ3À` Œéì‘·åMÈÈE¬÷g˜gÿjSÔÛ[²KAœ›ë�“$oB¼s�mjôá9tC¼É”Éþ´½‡�kDÆ}8|×Âó|‚ÐBZ]ÿÊ’x«dᣠß[âž•´}µ–¥¥1ƒ«[Ù3õö+[ZR¶Q•î H_¥ÙF38D«ž·67מ>º?~ÖÚ|´ÞxŠÆ¤Ù€ xf‡†”­ü9–X[½?‡²�×7Ö –`äkñ2�}ö¬±Z_Ê—)ßÒ£ÍÍõGõ ÔÔX{ÜÖØÞ„ˆµÕ óüù£ûë�ÛÆÓ5ÿÑúýø¶±ö„2aùM–«±v»¶¶áSþGë˜Íο¶úôqc³�Þ…t‘'÷ß®m¬úT\•rB0žÐtŒÝF7|–©Ñ5Œbv.-�Â"4©m'LD è’à}Žm[#/Uð]ƒ&ÔŸ=Û¸•„º•¶W›éóçuÊ¡#½–×Äì�Íû)ä_Óù#ÈAŸìüŠÜC², }�x?‘ ®Î)ê_ |ÔøÕz–3_±M)p%ÏVÛ�¥Úr3]oâß-�­½DR”õÆýp«>|©?_E$¹m­ëÞƒöm¡ß�ç«fË�ö*Þ¤í/_í¼~óv÷§Ÿß½ßÛ?øåðèøÃÇ_ûý� Óí…ýóAô×—áEœŒ¾¦Y>¾üvuý÷jcm}cóÑã'O—z†¿¯ih÷ímø¼õh£¼õ½>!‰‡× aL»2™ÒP;vŠ"¢…“UáÑú©ÙâÞå'á©ló!0~¼ýôéöS|û)½ýtïá¹ÿâþ<¹·½üÇçÓ8vàǽÓ÷Fþ+è₲ñïæR‘á�sæ*ÏÞ*)îNxT¼_–vÑãF(Sq÷”��….=Š@RWðÏ™×VëWíŸíê?KF“ü§âˆžÒ–û¹zÏ%NØ·ñˆ8¾åC²ÇhSWŠ!8 Ìà"4 îf;£üÚÀGŸs®Å=�¯BQ•£eŠ­=(½\ª€& LdÃÈkYÛSÔrU9s4Dìæ’í­�{±€åȧfTZäA*m<ËIn6Ci¨ð3c·å,ñ‰$Ã=pˆ£±|djÎ4¯ ‡¹0Õê“(î�@ú]£"ñÉjÓ¤ºÁ./X8VŠsŽë|óŽºe¬—q¼y¾Úþ¨ü %•*˜ )¢f=ðªk‚]þ�`ì¥ ¯Uc=gc/7f Ú*Y ÙA´LˆFSÌá̃“ú ;­ú¡¿ ¶Y\…�)ß‚�¥NÄœúiÍfÄyÇ 7*Œ›Ý°‚²]ÈÁ)äMµ>i­=PÃã¡zlÊÖðY¤==.F'ÃÓ­z²Ô àCa÷piI´šå¤e,~’6ö¬‰í69¶Œ{W„éÓIµõˆ™ócD,Á]X�k¥ºø˜æ+pTñsuÅ`�nâ‹TbÈíæm®¡ãAlÍí-u´îêéyÑl’Áø¡Å)nI‘“ÆðÙ1m–+_ÔSd¿®Æ@M5`ÔVþ,³°øˆ%Æ�ˆ´“œÀÆ £µ¸Èl˜%\n©,“ ;îYgøâ¤êö΢öV›Û< ãÕ›,^8лˆò¸w“1)×äÁÃ3¿äúµÞäN^­â Tž¼½V%¿VR„…DÉ,ñ –·G›íÙÇ�eïËnÃØ•£æÏ2`Ïê…ã™pý2ÕÀõŒú̸x²€7‡ËŽêVpCÙóWõjTï&µM©úÂ�W×g9i{ÚØÌÆ­ÝxIP[‘"áÌÉ‚H‚ÃÐÙ¬]c5�Ã[q•;ˆ÷Š“ðm`õfÍŒ&2`îŠØöŽ|JÍš�ÉB=Æ�™ºedÜ_/LõÄšê²##W¶X 5äè¡Ö GÍã£cäÜ ­…³Ù(hê—f¹<¸sÃæq»`JœxsøJ0ÙO¡‹s¬²™]´FüÏöñlå_œ ïrËSÀ ŽÖ.§4>I³*›Rå£g†sîL8ATy„�¨ =q§Á·côÁÈJ (•rs}ïÆŽËî~N2d昶 ù…,5/Ó̓mKsµ¼W6¶9\p•ïð®(è×%˜ åB’@,`à­ŽÓwk„¼šófíŠ3Üyi€òbÍBĬÒ%kvRlO³�$ý»èYò˜dŒ‡Óò“SWºÎÌÃó•Œ�Wsq°+Yt9Þ—÷%ÓŒ,L#Jßm<‰ß¢ÙúÇaåaJ†HW^0(Á9º_šµþñ °Z©V;VHžîƒoó¬‚in�J¤õNŒL[`×L¯O¬HS™Ã TjU8Vc#' ãøÁInR?›â9ŠU³8瘦Tøt"ÙʾEè¸6\IdÀ>èð�³ƒá8kf-oÉÛê¤aðeK%¼�b‘²¬Rza?€Ã@³òRA'“Ã*€<½Þ”àÀÆ ÁݵÛÿó¨<ÝÁ£ tÞ\à4§gs ûw9>3@W¬…XÞè¿Ã Úwðù®­¼Âš]ɶA;G+qÎê\®ÑX™›beÂ=wfI9[€l9™˜ÂJøÊþ}}Ò<ÃÛ÷©g„IÝŸÖŸIa÷u:^››Ý’~Øfð[e/l¨Ãæ¡©.Ù|QtR,¥õq�ž“Å E­Õ­è™º¹ØŠ€ŠÄ%ß ¿wyþdµ]S×:t§ã�ŽŸ’¼›Ÿøí¹àAÁ–]²�M­å'Ñ)0@T™%^°¤ÿ‚ÿ1}�øU_ý¬’¨ÐV�ã:"(‘Vþås¿V[YY ë­çÞ=ØÉB8hµó¶÷éÓ=¯éá¿O±Š†È#R‘zÍ3È{ƒat'ÂNÇ‹/r8(e¨Ò>ûñÞM<ùñ¬›Ì-‚‚–€`X—Z¯rsóª‹~ȵH”d»º—Ì™JÆUì+º}úY·•ðVˆVI)�Š¿Eì‚ö¯Üòò6Ÿ�.¤iÓ¯oD0!9 b„Øçó6y9A‚zÖ¤À ùb1 þ¶$ŽgA]�&ÆgÌü¹�ùgî‰áM^óð±Ç%ìÁ¡ç‡LUóM¡}¸Ï‡5¡ÌrEUZ½¤¦Y^„5Îïø7 ÑeÕêÇâÉKÏ#wP¦À~ ‹!S£*Í5ºÉ ŒŒŸ"ñÒ-ý�z¤Ô;0'^7©¢7Ê'žÌš9[¿zˆžŠÊþ̹¤=̹O«¬~ ËÙ€ûÍš…sT‚Ñ2/µ­ü”צä«ßHn3—Læj“~Mã> Ãk*üÿŸjXXŸsöˆÜ¸á²»…®ºN�Ôéî ™Aé,ããŒîôrOº kYô"ÂŒí¼iMoî+“«Œ ¿TN»Oï…£¬íÉ÷öžŽ²(på¶'íÑ=NL‡ ¼Gª‡Êª»}-çDd,Åá­´-2¦uº0Á5'ßQ³qN×Tá•8ÈŠÇHÇPóvF±žŸdª§ÃR}F|PU£ˆ!³pYUí/€„õÜMÐIž?Ôíè:Ú�šX~$[ƒÛ¸jŒhY^j™¼4‚ý€‚1ËM)ky4mÜôjs {~ØÕ=WöÀüÄ:ú�4_w#ìŽ�ùºVVÔ3ÞUÙ“q媬ۑÝí Øí„u{(`.àsš‰��ʆgAŠè¿„ìzL,DÀfb˜š 2«~0$O¯„ì¬nAo&Ùü]ø—Š})ý%�ÞA².²Ë.¬}œ)—©zû, Ÿºì‡_4Ÿóu‡T.úV·²¸<%ìtÏkœMʼn!œL¦ Ä!D¡Âh{M5.Ȳz$‚4 {;—Òºb3Å´ccÚêô³Ÿ`•âECÖjLϱõ?ˆ@!¶öãΨŒ;r°hr ˆÂÆÑ ÍtDƒéFJóü‘F�Á ¢áwHbV�¦Åh§ S˜"^þe UºƒhØKCMþ´AÄLa ß@{ßNó#-IH÷Xä�Ñ•nÕ˜HòR�åÏr G£W ÙwÖ¼°ªšWØ©4ì§tUU®®�Áó{ºÚ‹lHô­Ü¤…Ùx„ëœ ‡¥©-Á¿ÐðÏ-ø¬àn-Ê�ërýÊrÀ4ô"’O ÷uá˪Âoñw©à¥.x}—Ñv2¸¶Gã8ºpÀ¿Öð¯îßXö´ê Wó�² j×t¥kúö/Ô„FçP§ TÍ7]ÍQÅ–Ø«—_¨‘Gã ¦j¦¸þb×úKg-†äûåï!ɰ7mUszþ‘îßÎ,Ö¬ØÃ ³ÃûÇ»œ•º»»œºº\ɵYy—�òîŒîÊ\ž¿£»úÙÙÕŠn–Yâb2W⹺ öÇé <žÿY7¿3 ZìH.pZï&#\ p\>Vñ²#ƒjÒ†b õda‹¾wW™k|f �çwô¨¼œ¹Çúc$Ç&Î÷þùV«Ô‘ÌÔ èáŽJû¯fÕÓϲ™‘¬´É‡®ëº1Û�GÕçÑF×ÑF9Fz©owÚŠÈ¡0X9ZeÊF�“ÃEL�Ÿ/Ëç8^U›åìr“e‚çïêO'ÇÿÊ9²ª�åD–ªR<ÿX·ôËÿÖ*$,7õÐÌþ¢Ûz0 3ý@Õ‰™XPÕ¸Ýî¸Ü,ˆôüh�–qíeöuäÉ©0FC0ŠïuòºL¨eõÛ[©�B_º“0™c‘ÙÈõMÎüþ}ýžSËè¬�ƒ3h]†ò±’çÓØÝX|0tÚM L°šÕ}+H �‘d†G)ªÂã eQªÊj­ÿ/ÕÊb5M“M±©·ÕµÿðâÅ=È݈�£[[Îaj†‰½©M{”éh gš¬¶êº…Äž=wvÅ¥L+ 䙨Fǘ•¬£l–Ž.È1ìx-0 9ì(\£:P<}aÂD‘Ží™¢½¤N¥,î8y/t¯%¹ƒ9�XH2²é†òjµÿ޳<¹Øí©ýàÝëÝžy3õZVN™*ŠbÎÛ8”'|Ͷì£O„¢uýfxR3�%ôdï ¥©‘Ö Y*9òAõ}ád/^é‘*ñÅVEFTÀZjˆl/“aE®n2„LÀDHH!{­É2C>g€›œ6í>i;ïþ±lÛº÷²¥Û(·“ðßWÁŸÆ¹WW¡}¦ë9œ¾o›{d—TêS�)ÌH�ÙÆË­T{%kß‹ùŽÀêrÆ-³N1ÄËVv‡IFWU¥(û˜D½‹ïwLvp^<Å²î¾šó ƒø)GR]ï”J÷ÿÇ*… �Rï=ÉNbÌJ“æÊ6•ÜÛÔÆö�Ï…1j:Ëôk Õ ¹õ}VË\àiCà€o&[B‡TXÀ ê³gÉqëyvŸ¶d |N«÷0³4b”ø¶$²u® ÅÙˆô]ãð‚޹璡¢v¨•C¯ä¢¡ŠRlja]�n1[²Ñ¥³F¼â3.¥Ú®™™c ‰y¯K˜çD+6Œ[ÁpÕ‹(3Or²•&p$?µ8·ú”‰½KKJ…«GN�ÇWk<ø*Æ¡,� Ë0Ï,–�sZŠépŽ•2äv†º« 7÷ªÆ‹iŸQ.çj™øt‡‚ë‹>sÙ¢¼§>s�¸m.lΚ¦Ð��Z>“ vCDêu¤k.Tk�ˆyÆâìUä•óù(:™GÂÊÐ&ˆ5k¤#„g½#õ.Žwõñøƒ5¿®5KI3 ÊÛ"iö89w†Qè¦äz)xœì¡ËØ^)ZYŽÅ„P°•Sñ<—ð±nÖ1gЈÝþ·ØÜ ×ÛÎ|'¡°dÀUs\à‹M®_̧ÁWlyüMti�н¸€0¢uÓê>M�“Íýœ¿Ï(CѨYED¦ŽM9•™³h)Q² ¥µÖÙó*õ¤é6ŽŸ(ñ@£¡óL`®hÖwÑÐŒ;º…gмEdë³Ð÷'yLEîÆVê£b…°Ž‰zr ”ò™T¦ÜRÑFŸõÓ[ãš°&7y’Õ§qâĤŒ?Ó”»ôðùÙÖœü…á. 0ž£é½#<{¨ŸŸMfn@Lç�Ñ¿gí«‹á½›Ù½�,´¡w–Š©°µ<|º’Ÿ¢…ܺÙFº˜½„8eÓ.n?¼Ñ‹¯ö_ÿ~°C{Sš$8y“…“O1†{yoò)>…ÖNØ“’Ì—â°¿µ7[AÉußA‹�ÚBg-&ÅäD´û 2À¯aR\Wfzä-ZñwÕQVö[/ ÛÕ`j -È?— c¯ð˜î;ëƒ^æW�B^·ö> !�Hœ6 ¸­6¾qÏ�8XýFjØs(½ X¿›�¹�³‰�ù ‘Iƒ4Ÿ¾Ô`¸ŠïP%ùÆéäáý‡ç¾w?¸my§þÉC�‚¨h,Â?ŠäQ’‰ð3 eês �cèÔ`êoSÁ;¢Þ¸jãlæ=™0F~ÒÀç ¡zJõSÖò¤´ª3F…Ïÿ¢Fχ¹óÂ+eb2�õ`»ó •ýËo–ÒX¾LÊbõæ?gµŸ2½ní÷sšÜD½&vz“­�KâÈä†[V4JÁ¤øŽr(QžŽUoeNN·Ô‘Äæqn˜¡Ch 'òx>`¨x�ÕèÝ€’ªMššÏD‰Z�Ò/ÒŽÕ)mÏG+)J2Té _Œ ¦kj踮û÷¬¶&Þ`+.²sÏÏý“•••̇?±1æP“œÚt`u(uà׬v£,{�•UœÐn‚bã¦÷áøõòo"êý=£Ÿ¿q–üŸ-î¼Ûy¿³w¼`¡ÅB šVðüSülqûøøÝîQ1ƒ¼1}µ}¼½ðÃîûƒw»;¯ ;гó…Ú”çv4¸c^„ ™¢^��# ¿ÎÊ‚ÔhVD©Yy$FÍÊ–t²pFJ}Õ«3Ã&ÚÌF°*jRÍûSaz ¥<å•Ç%û<  ÓÇYšVWC]/$�f«ÂðC"¸Ã�_>ì–j¯ô5‘½ÄW¢õ;Wj,gµT%%Ç‹• ‹:b ¨¨/ƒ'½èŸ§²Sr!“iÇ,õ¯õHðÇ­ß.:°–buÎÊb·øK­võXîtªÈ èIù0ÎéŠ$+øn×fÑð͘[Ú¥éͼÇj (ª³ÅŒÎ š†§ü³ºO-t�ô}™Õ› 72Di�À·êº3ÓÄbªJbJsพŸ©—«@ë˜hm¦…AÜ™/ß¼²=Ðc?ÏJ”4L²Ì'é©~²¡+{Èk µE§h ¾\›ø'�OïÃe 8NB˱¹FLN+pÅA¸¡Éüõdâˆ-†‘vûb6§ÕG¿‚Á$.óŒu$É>Ó‚0H$q‘r»KÞ ôâqÜ7ƒ}ƒ/¥5cú›RÇc>³c4æ§6Æzyž¢u�n�‹%Uqþ±×ñW’GD5ˆ¤ñ�ƒ:•ø@uÛ;á§<í©¦Õjý‘É“²FƒÛ[ç¹Îºì{£�FçöÖƒþxø*MsÊ'ö¸å8"âLk2¡�Çùe“ö½káDW:-±1 bk`òäR[´½T«k†òáÉŸÛˬ.?ý|ŠœégO1• pލ¦áùCùµìù]øü4î÷û=örlÕƒf|c|ºE‹?C‡œµaÌž&�¬ìÜhê6{>๨ÈýûBé\ˆº”éY¶˜:d€z Ð"Ì7öĤ^Øc¤`™ çÂ:ù*3MÐ�É4a8¶ž5É\²ˆ” ôcqƲõ.m=çKK&Û¥u§|3qðØò•ßM¦5§ƒòØÜhŸ� Iëú&ïôŒ.g‰ä3ƒ×âi ²¤ÜÃ9è¨ßÞâ»R½çÑõ4=èõù¼]É‘€Ãâª�‘KÂ�.Q¢Va:ÛZ0Å=�á<Ã{z<©ßlß¿±e s ˆ¥2¯2Ë•Š8ݨ f+^«¸-èpªî3"Ák›®|ÙA�ªu[¥ÆýþýÂ!_áZÕÙŸ.²Ž jxÚ é±³ÏPðHŒÜ"3Nk“üciÛ™~ Ÿ)3¾Ÿ…ãÄû‚ ‰Ö3™tëYœÔ¶þù©·tï¡4 r›ûüº° 츋ìºIDý¼V/Sܘ±w-µ¸Ü ‚l£Ó›ª,)h�D&g�‰@ ÊûRX8‘§.¤zôFHí*LîÏq�q|£„£ê]·~£!üvó+Ï?†�´ïù_ðF2�ãøKL8ˆ[›««þžØö�`‰œ|Ε�Jß|!écá�¸ÇBš+uÅ‹ê É×ÎÕ?•;Iü¦Ýå±È®ã|æQ]d¾c¹ð)®Ú–2ò„‘ã›Dª£õÉñkñëññ›ñ�*âWÄ?©ˆÿˆñZ Î {éJX«JX¯JبJجJxT•ð¸*áIUõ6CoœAT Ø[WÂZUÂzUÂFUÂfU£ª„ÇU Oª¨·ø�Å9¢ޏ5Gܺ#n÷éˆ{äˆ{ìˆ{âˆûxÊ4]·õÃ~ó4<þỹð̲Fô.fV…•ÃÔèé6;†µ—±"–?ãæ…Æ[Ð(XÆ@¾�]ï›Ïv…1õ€O*¿.ÜÓΜ•ÄUcî%aÿ˜/ˆ·ut$.eâ.09�/ú¹lkD‡q� 5„þVøElªäŽÏÍýž3f-jG8tÍMÉÑö—inø'`ÇÄÆ+T«¶\~:ã:>á àì·pn…îDÆ Æã¶¬é·jæ^éÛÀ¬øÅüö6B§N÷ïK~è @x(V¯óë¼}3wBqþ!ÚPvD…‘§˜á  ¹»Ô&Û�²²Ñ‰ãÔ¥Ž]`°ÙxESI¾Bz…ëÖ·ê¡`N4fÊíÇúYrPQ¸‡~ÔІ�–³‘*Õ-¯Ö.?}Ϙ‰¿þ[ñRÎÈ‚rÁT#ò¼DÒ`¡°BnŠ´±S«^e?ʲI¥mPñÌæ¨¿e®¦ -^†¯&©ÜPN�ÞXlÝ}ðRÑTŽq�à–v8Meålªz·Ib˜›-ƒž,AÈcïÅ[‰^<²íã¡+*Ñ£äù|®ë¾6¦œïîÆÙ 8 V†Éãù?å5^H«ŸÜ”Æ…ûaæÌ"4£­Ø{·®&Vþ¤¿Ü²i†ËÛ#>öo¥!-Sí]miY–´Þr3YBBEû ~(ñŠ86Ö¤z{!‰YÔ>�ÿŠ™'ÌÜ¡mk^ñ>:,ß™Rj‡�( JŠå"�ê׸uòðÏOÙƒ{ý‡'ÏžŸÂÏŸ'7“S ߯ýp{,ÿ}ZAô§‡Ÿ><•kÇÊG$šQ›“Œ¶kܘ�+?í··öž–×i«V±Ã�ö޲ùñ# x~\Èò\ |ðNHtì/„qïtåŒûëfjf¨‘‘3ö­_cû¶ ÕÖ'J~ËÅgæhȉh€� É&?ž.t…´%[Çã m!ÒG2²èy}ÑI†+ÂqÖ¤æY©hVÜÂÃ(aóBÒÓhþÛ®5µ2uSéÚ@g[9Ýyîr Àiö£sÏÿ[[6û5ïÕÎëíïŽ?ïîïì¿Û>ÞÝßûürïõîOµÂ»¹ÖvBw}oâÖªÿ{Üzêÿ·«þoqk}Íÿ þ>òÿˆ[«~˜¶6~7ü þ>òcøûØOÓÖæ?‚¿Oý m=ZõøÛð‡ðwÍïBž'þRû#ˆÙôiëñªßK[OWý øÛðÏáïºß‡¿›þ%ü}ì_§Ð†5ÿ ~ÖÖüoø³îáϦ¿?�VÍé÷³¥>ý¼õ;Qžµ~Ã[†Vk‡Éu;"xò­m:å­-ª²(”Iú} ëJõ_hé';ɰOŒÃ¹‹£c…Q«á’ÓŒÿÞ3¾@Q_FÁ›œ5íŒè<ìÅuI}’Òåƒn?Ód@öcU«©+‚íOÕ#\IÆhH<|¶ºU¿‰——ýpi‰”Q¹'긎s][^ÖÎÙó•lÜ'‰Úª/7êäi ‚_í÷kb8ÈUûK ¨ö n}Àà=_mÇËa3–FJ——'¢!Ï€„Ä-#C(´b+^ZòChd†íi×€GgìÀþ/-MØ.v óH¯•ôþq"Ž’¹ÖfÐUG²<|†*ÂÄÏ�£EàWã– jÃÁÊC¼àè (�r Úê£%òžù½]Z �Ün ß7ª$JŸYuQwYéÔ*-yŠN`BÜðõôćë> ±2X¨²Ô¨Ûþ)‘P’õ*ôö#¨ïAªÔDöJ+¨®¥Q9sg h,i.�Oo^G¨@·§�m;–c+”'ÆJJ.>ûc²=Ÿj{n½ö—aæ\œ’5õÅ!9äÀ¨ Õ8NÈõ»tËîž=;%C�O;à»ð2zþ»´lªñ×íýݽ7d¨Q~ »Š;‡‡û‡d¢‘¾¼Ií]J`¹MÅ÷®a|— xjÉÆ“|&‘�kʆðZÙ¤+–Ê8L¡µV+¨�gæ-*[Y�ÕU݈•4Ƀ& 5TP^ø‰Fãߥ'¦ÎÓÉÂòóSÌ@è û¨$‚X”M`¹ržÛg¾„òhº/VêÞ÷jÚ�#[f…ŽI«øL<ª_ª379NkžçŸE1ÊW' ¤0D�¬`m;­IâûË ñ¿àbì¨úÄšbÏŸ Êò‚d&Z—²7‹Ì8€ÃOBÞb邼þÄI|}‘Œ3²3«¹ñB‚Ê-¥kŸÌçÏ2·Wˆö¤œç8ç&W…SØÐ Çóº¨hyºŽÏÞÒ $l¥Š[Y½™µöS”ø±Þ}û…—V®øô«­Tq/mýH«X9×þ|| •™!œ¾½µym[ILÀ”D¸íŒE/!iðÍó•)8¯†è4 T8©ÿ¨<ç¦æÑR^ ½èÅFý.þô^ ÷yèMo!(úÏCôû)¸ „ú¯ö¦'Nr蕳ìÖ8sA¢¦>_ŽÆ—(vy.'•S}ÁVùV4*Y%Ç„FÖ<Ÿûųڽ›{é¤vfE¢· -€þJçY´b‰ÎNÔ͹�ªè§¨78½ ô’è([?«rÎètŒÃƒýJwI“úÇ4•Î2Y뢫©¥G âjh�h™õ<¦ Ï8ðÁÆUÌeýNNd�èÁ/9©­ôé#±UõmÊjÚ ñöÿuw\.q�¾¹%å Q£­ñþât¥xÊ\•7¶ò g‰¹q3ÍÕaÎì­OÃùn’| {ÿt¹T.•ÿ¹bc€ýà¯à±I·½âñŸpÖ„·VÜAQ* Ñî{�£sÆ,j»––Z!±VÈ+rë½øL‹xôŽGž™wv5FPï§ðq›_âAì¤~|Tf®¶›Ñ­f»Ü’f͸Ho‘–œ/òÖЉ†|¥›Þ à1`ˆíÓI‘•h•ôÈi“ŽZ÷à¼Fç‡IÂ\„˜§g÷ï/¢4ɾ ç;(C‡öts�¹ÒÀM§uR™NºÆ¨íZ§9úðчh5„JEri«¾ÑÉNÅ�Ùíô<À1ð`vºå™ëŒ·g _mC“ˆû¯át=|øƒ|Sðáð]‹¸HæÍŽwÒ›“äeq»Îê�¼÷Á\¾tÜ!ôÖb³+ Ä‹”НÇ9=T:6Œ²OºmŸ V,Á½Ø+äÚJ—ZôNËôë}0zƒªM�8PÄXÕO™´©�>Sª¬Å&¦Œ®«+awœk²^KüƺiÙê�÷ÁÈÿ _L ²Åõ¹ñc¯ gŸÂ‹p`S…àX›ÒûŒ3 óNª ÚP‘Šý¨îmY4zwñ�±�œNJ8µJ¡2Ù-ïËe5y¤JX†e‘„¹!¬.¸J I’!ÐT†n&l+X…­ Ü1¾„'åô“üô´åè9>(ÖZ’ôŠ÷¾enC”¾`†²Ž•»–&@‰ðUf^KÞÚž`�œñœu‹»Þ~ÍQgï“^Ô�wþ‚£¸œ¶º:M”æRî°qñ©»£–ùœ¿ ¥ª&Óf ϹLf£…&(9‘¨eÒ›¬wæ¨çZWÊÆŸ–*¡öFTñ4u{ëAoË�ÑTöì¯(W¾äÐù$Ó<€ÉIMÃÜNYÆ4ä¥`ñ–/¥;y~§—¢·“Ln?ÉrÆö9YD&x>)OÉД @~é—¤ìjæ•ß_iáÊ­�™K°âÓ/û¢/I­k>‘�ÝôÑ­ž|µ]"°\¦Ò 'Õ«šø%ï¿A|>†ºv“4N›ŒÃ¾òÅ‘<éJ¨Dçì‚Æ¼ÓBæÉ™ø I<¼6Y2ÌcÕ»ËaA? “7_‹¼'%’,5p/Y jµ nxÉH¾]›¸Ì¢K8q@ùqåÌÞe­'"ýTÿNýŸSÿMêÿžú¿¤ì sj«×ø™¾ÒîKçoN›gûµC»ú°na©þœ®¼&�`ØW:À«Át#†½†Nò|tHh² Þt'/`è��Édxt@gFñB˜º=êÂÈ¿7Ƨ€¨x{QG¥�©Y¹ÉÊHÌ+ä’¸ˆKÈ¡©Ï�)’¯¸²n\}¢wé¬;/¼8TŸåU'ä&¬²•½©2Ÿ¨GþŽôz$_0¾ Óðß{¤j¤HŠîôãH¥¹‹ÈYû¿iÀe3÷ÿŸŠû¿åÌUÝp¬%�TÝâ l=¡;*|Óú|y63_¢^3öåÚh¦~w‡ã^¸K$ iF¾0ÄØ ‘0ÝSÎ�¨®;ø‘\°"¾rÍÙþÅÍ0B-èC):ôá#¶Õ�þ(XMSSŸ*u&fpP?ø[•nsávPƒú*�ÝNÙ›ø–åd¹æ`øÍh$8$®ì[eÄ–¯î¥>.uB¸°æ®·jÏÿÛqë+øºôŸâÎ×ìètñk‚"yÎkä–?¼Iíoq!\Q«vx¸®ÖÕû0zAü dÀî²Ü0±™QÃħ¨™¨µ‰¾ îŸUÝU°YõJÖü*…(+ï^‹Lo ˜êº�Ü6Üî×l÷ƒoTûª+ç·æq4EˆL¶«Kò0M•*„ÖʯtTlµn�ÑUn*Ž MuIœMNðªøTÜãkf}í›Ê{ß8RmKKm«ÖkË“m4¨"íŽs­X&K¦”/PªÎ3H}!Õ5G•53ËÊsIÛÂÛ>:ö¨üð# ;ˆ´Ø®\ Š„èÎXD¢(�úJpøæ}�He Á&XmýW*‘PÉ�‹Q~�l“ç'ºÜpj9Ûêìq°«¡ì¤n2ãÁ¨UXHôü¡®¤k*Ϊä`*í« žäù] ~|×!e/ÜT²³=/ÀªZÍ ÏëúGÓë¶»‹m€l½ˆ¯&(ƒ">µ’úÁ0£p:«� Þ‡ðfšxÏéÆLcƒÙ�…ÑS"L1î–o•YMSr„C¼ºãmã ž?Ð�ëÍnšõŸ·yܹI4g[%«e®ÆRŠç÷tk/þ‡ò(臕ÃYLôü ÝÈóYÈYFMÝ@ãþÅ8S©hßÏáuØ+5LÇzþ¹nQÿ§E8(îVY)žß×-»ü' ÙÙ6Žy³¦–šRF; l¦nâõ]WHdhžjaÌlíéy6{G#»m/äÃQbG®uã®îJˆÅÍ"Áò x�FÀÿÁP[M)&zþ•nÏ·ÿÉ�AV,%”[D žÿM·æèîx�¢ ËUo6íÙ�ÙѨ÷(…<ÒMÚ¹{“ä;Jí|Ž�ج¦YlæÁ~ç°£øùŸ¬H$„£: ûÚ³m�ò™¤×Eœð}ÔgݸŽiÜçH½o÷¢ï£xœÕ#;Ú‰(Ò[ö ñø#¯Dä*=‡·À §BYRP2N½ø Ä8èà¤ADð1KR>¯Ú  ꇰ4a3Üæš±<°ì¹åø€£Ùæ5ÚÍê9ø ¦ £§àå?_á3øA gõ«½$/p2Öó_êfìþ6c/‰÷ z;ƒ3’Ý+ÅówusŽÿ�}Œv³K�´ÀvúVÅ�Ã' ž¬›÷åÿióp÷/5QEzþÝ̃;œ?éd&O \%þ@CÛ›¿Ód%7Â&Bè—·Wõ»s©;Õb“7ã%óNI–ÛU­ì^8Ä“¿²Ù,€}¢-U*�¶¥xuÆÕ£éì¯]V4I€.ZN„ÆÏ ðx›!™{Ì©¢ÜTE¦J}±üjÌcß‚§_}—YÒ¹»Ã8FgÁx³nœ ¨Ù2ÝHk,8¶¶¹ŠXg੃gç¿óhÛ#[:~ÏQµ}ý‡¨B;Õ¼eËBïvßc[/ø¥+,Û/aJ�f‹£>ÙY%WU•ˆëÄ*¤eU”à×7SUð5Ê=µ”ñœß1_ö£i>vÚÂ`U_ü+Ý+S6VÅ7wóO¯&} èQU»ñL^‚-• Êû¶6Ù¤XÂLÝ”í¥N´Â{Î:±éÖà“ý&8ù•€ÈƒçœP¤ùfI¿ëCü%N¾¡í]èÉ‚j;©œ©ù­(q l?W� >0ú‚I)L;±(T+l.¬¦—U5qK%%xŽÝ‡ÁÜýG0Kƒ8ª‚¨§Â@H¶©«˜&×iö‰U{=¥#®µîÚ êl½º™ VáyU…Ë”£/E‰Upù}L¡ff§dÕß©ºªáãgTçÞÌjüò?U#e°ô/” }ÖZÝÊž)ý�­¥¥¬NÖ Ñ!¯Mëo–¬ýãL�<ƒÛÿ^Ì¢e–+»ƒx�x¨Y“ÿ³¬‰e|¡bôûa”±”ö\ jÍÁ¸„Ul‰yˆêQ»q*G{>&&Sz3¬äX¦WÏÜÌlÔím,D�dÖk>HµÐ�uÝÜÍ?¥Ù¼Pi”ÊŒÏ÷£Q¿TBÍUU)¹»6ÙžÍC™ú¿dƶȭ�š·îOýß`¬²ÂGeßÏ6ÙË�³O¦û%Ʊ¿ÄÙC�eæSÖöœ|XÆp¾ÀfÙRf|ªP­=…133ïàÁ¾«Â ®ÍTXbÐLun6 ‡Ýň¡}=+f7OÃTÓ"AÝÞ¦TÚSD!ÖÓ£yvÓB‘tu�IÆ¥e€µZ¿§+ïv�w·ß}Þ>>>TY·ãèB\„2oïí¾'k‡F?´§x@ÏW:ú˜tÐw©õ 3ŠB©W|KÍbÖ$¡`Ì"DÝÒñÕ!oRû�YÄ*5‚«÷îWNj”&D˜AÞOÀ¹æDØÔ׊lŠR+Ÿ5kÏ�K@!Ïß×xs¯òJ´ÔHqÁ–—Z�ÙÕÅE$IYýêÞÏóïé&¼ž2V~â-ÕzGùµ´ fé쨦Œã(WãÄÚ]¦b»¡}’ŒãÞŽ0 d°ñµnýW¥€"Ú⣓ï}Z–<>FELÑ_=Y ƒZPWO““–m*Š¿›ú=b OšÕ'5éæž\`T€ì >|zÔzN&þ}+œ5¬\yëy \/(ÿTÒP<Ý�HËS'Ù©zv®ˆ� =j’œ?0KX‡{‰!Z™. ÷ÛÔÝŒžÊâ\Ø’oaßÒÊgk ø8"[Y@ØB³¡t– áÒðü"Æ8öDýü.nï¿EµDÕÐÿ%]Ñv �qÙlx€p¹±?GV`y¹Ž˜$ü*ý‘-ô!Ù]JR8HËæ1¢…é¬(ÎNÍò¨]Lù@Þ™D7Æ­®±�G¯ñsã–+luOƧ[–ã¬_ÐZF·´ia:§éÓNW¾¥þP­Vq‘gÚ5ô8M? { -þ¨ë­Æ]kU³Óâ裉uG…ŠWøÃÛ õW±±FäôŸŒ©d|ˆjšÜ4¯Ï#{Ñ0a›bêì9CCŸuùÂ_ͬÞÀ Ü_#.Ë9Ë/FÊ@νÃýmeS¬daÖÌŸe>|'\�=@Õ¦•tõ¬og:cèbð� rç*oìV�}[†öí\¿læ“Åâî©óÑþ©CÒP¤áÈZ¤Âù l�ð‡o…¿ý›ÃÌ¥|î*Š!-Ç·*�^'B7�¼N"¯wêô=‰nẼ †Ë]ÿŠƒ˜É§ù~¦õ~fÉ‹l{SÿƒítR~ûHántIÞ¤„Iÿ ­åû�¸‚'y±À�_fqµŸÉŒYÉÈNT Š[�~wv{š×F2Kj¬ø†NÀͬ*¢{»Û…Á 3ÅO|FÛ/Ð+í=QÄ Œ‡y9é-²õŠ"µV%“c‘(ë"’pj-Ióè8»5ETÏpås[˜�/ZGñ$ƒ“ SDnÚ¢ÅL�Û¢ªPö0¬)´PÚ¤SUØä‹L±! ì0!‘MûQåbäÜþJæ}ˆC…b¶cŒú–ìÜ–vÑf›†Ó7¤æHÃL„’™�ü¨(göåB")ä*à„väf+×{ª×(®“©Š‹YcŽx¥Û±Øx ‹Ñt=‘�6]üÔóÖS´àÑ:¡£ø©8˜üá±|š¤žº‰dæ}’‘Üq�Ì?šÃGÛBxÈ ˜ <–£Â·cEjÝ‚¾ª0ªx˜/ e…ˆÕÜY5)yí”z”ƒ�E¨|Ú™ô ¦½sq(Ãt ëu'<Î}?Fá78\Ð0‘ §#�VVÒj®½„ü9ÅP”.mî@;¼ –{Þú€ÿçµ´´8IJsyÊ\OFÕ¦ÂÇW¯›‚�’L(ÝÊ)Z2w¢ƒ®)Ï-88ƒ•£WpÁ3mÉs‚tàe-ŽWèAÕ µŠyÆAÔVW°d¨].ï*‰p>�Îci�ÐC# k•zH¢~LË'ÞÊÂq1E{�ÿï-£Eô¾¥Oêß…–GáR·–¶²€)m³w«¹´²+hÕòžö¢á»anô�m)«»$í©ºOþè’E‹ —¼Ejƒ§!ޱyPçÔ6\Ñ¢¦Z\7‚i³JBjãüýû©Næ)CHY¬¹Óºì@Þ½ ¾FöP¸¶¦¥×X4|dùœ¦j£ù)²# üÍZ7Ô}4�ÝdÅ=´×#AÞÞz1Z¿b®^ÄxUûH˧°Ä JóWñœÇ)§¶ì?Â;†Sbª¥c¸_søö¶fIÕdúímX/<Üs6F›.ìhyåŽ&nð—i‘ÜnÌ€š’urÈ%(Ò�O†ºH�,J^³(4Å´Àà*ê”DÙ‹a©AS8Î}‰Úö@_*`äBþš[Z¿ì¡‘|Wdk<Ô›V ýêÎç¨Øëº|ƒê€0¨‚ 50-`b;—£Ø;nb׌>lÑ®ìÃòœ�BL�±)ЉÆg~dI+> ïd�M.ÙSàÏBN�QZ‰CV×JíO­=*«ãM™–åA?ê+AÜ fEƒ.öu4ùÎûMh8q,\Í;Pç[Ïë1Goœj=šÅ«. nŒt¯‚É€“ÜÚq$+D™f¡Ç¥†I­7+tâ(Ø”¼@Rdö"saWÊ¥1vŠ%E±“Øæ=»¹æümá‡Ug ̇3^ÿìTfÙ1êldGN9嘓�êƒÍÍî³ÅnÛµ—yª¹f±À3Í(3©O¦ýò*ÈÕ�å.„ªQTã¡.5ʹp‰b5ºHST1½z¥µã¦)‡(E´¸Íòëa¨ã?¾£XÔ°*‰ HÃàvt\}�ȤŒŒ{Q‚µâ·Î R;@2¿�jäm—Œ z�¤w}Û º_ÎSÔ*…8¦¨D¬ñ6PUFç0Öß™ÊþU}ˆÓ”Ì�§]~£VBr;JÐl¼b’êëáÎÑþ‡Ã—;ŸE§ƒÑ†þ¶Kæœyi¶~T'ËNØ“õ豇ïl·£4铯eo�_ o/‚8ê¾aûyÞaQð.Â^ÈøDxKe5Ë´öŒ&G£²'€H�YÜÐ-—½Œ¼ž¨=j&¼ p!œ¢[vqèH%çø·/ƒ3S'¹Â@Tõ‹ôê Cœòô’Ÿu¯!¢›�p¼;¥Q‚úÈÐ4ƒÁAÀVˆK »9Ê‘lÂŃ€ÑÄŸ�öd¡òK2:æ�c8öQûÈG á‚þ^¦l4x1à•))g²û@d„“ù@`ŸŠ!“ï�‚1ìcXnÇ£C1ø³Œ–xÕ×2¬/Ÿhb<@¬ä-ÓV¢!!¾øû×øb´,[@ß,Z6ƒ¾ ü=Õ6”mB¨tÂõ€Yc–†p¸ÎÖÃÚŸ·Ÿ²¥z­ÝÄÿO~ˆ5øúÿÝ¿µÛZ{ñÓZ}¥¾T‡ŸÛÚrûd{ù�`ùïÓ“Oß>-Ÿ>®³Ý:ñ?e§·÷êÏ'Ù ºx™eÇÒß;lÇžgü6Ÿœn…-ã<øKàã.%$@Ca×:êõX{áCG,–ÉÌrÔ·d–ZÞ–½z» –È£žÚ•÷2„®®bd$µ]sÜ•µ`TäÈЈ»Õzq�µôÝ^ª¿ �GŽñI´´„Vè]˜=„·á ^]𬻱®V É쬇ã¡�k"ZËfoz/³¬¬(k¸�·HŒT›ŠÓ^§`0$Q"C£Þ¥ãbiý€[§KLæ-‡æ5W}åg§i\îÓµ?ÿ 8¹ü-ì|‰òåzû‹ê3b*`o�·]¯­ –Ö>eê÷úxRR¯ ZÏk‚‰ú;¨E~ Hq†¶ßïݤ¼’ù|ï&’�`r†]˜:¨úa·�ûÁþ“ê5-iW6…UµÎÐ]+RAÕ²v¾ä}öÐ706êŒ7«Ø(6êÒcœplƒ|Š<$Zä·[uk5m Q|PoÊ_èß[§K°˜U»É—Ì|ÌEZTYXþ²ÛQ[vÜ…@z|ÏäÀP¿Ï¨o“³f"vŠøÛæ!GÙWøòCø[ªå-H@/°èBg (K­œÏd.'ŽEÀÔæ0}´ÓB³ôÓÞ‰k<ËØÓhéä$ĺ7õJ|rrŠgr×: eס‘†¡%©B,uøêR{V¢ÎU°dh`/À>,e[¡à̱=dkOFAÉŒ0³ʽº”ŒŒ~F}r*RS{·²Öµç-ƒà5Ô£#¾EöozßW�ñFc=òàHn¾”ÝÕ­Ÿ¼bR—®Zÿ0„ Ÿ©ø­pi©n›ÜI·2ˆËO²¥ðAz*Çý!³–¨¡ÉE›òÖs÷›¼«`«cã™ê(Dçpî‘^K…î”í-[Ê53vó”ŒjèƒÔj”[ƫӖ ¥ÊÃ)*qP‰BŸsê¬îú´•ž¬=È—ÂÓV¼ä-xK™ŸžP0£ �ô ÄZs"5î‚q ‰c8kÊÏŒ‚¾q/#”Œ9Q'µPÛû:Ã/'ýPvŠõÆ€a5)m78—ûÐ`do-�ù ¾O3 ŠÅ"Sr§‘DÔû¯p ª²5hÇ.Uc`rzjo87:œdh3·æý—´^-TdPª·Óòô’.ÝÖNË3 ®áx?%ƒ|=9=uNi]Vã%:]«Ó‡\Ë}˜§iu�‚sH¯“Nެ Öú}IÁ1ÓQ©t†õyñT QE Çì›sT‰ÅÞ ™tø›s‘ç‡@é•PCÌæm¢ÀO¡e2m'Àu¡EOb|Ë–žj7u'Œ‘’Uíáý”ì3­ y]�’škË#—lT3¬ã%7–ëP,C¾(«ÁË> MñÏÁážñ=GÑQ]P7\‰¥D~dÇ…O'ÀDzŸ>�°QøéTDžzuùFè|çjTóþ¬yKÀÔ½¥Ï01ØVÑU‡®ã¦hÓb_Ñ`®wv‚$ëôl«´£}û´¸j2lóÉŸM8óךðoåA]œl2É _‚s¹PW%:À‰/ÑX«=„Èl8©ž+M®½o 6›œZ”µ  ŸN¡4XX?ù©AÕŸ:ð%§Ò5IîÒ–Â9ò4œÊýØ":(wÚWAýùr£®–áŒÑ-Ê%Xo‘ËE®FïWìvHÊ/J£ðˆ ß #Hìyx²~j´÷Ò‰ÑI¾‹ò3â,?Á³ÕPï²ÝÖÃÚÂíóÛOK·ÿŸZ{±U¯Ã‘åá9e·q‰Ejù7QìºØgc´ºœ/T] �ýÃÝ6FÐß¡0u6Æ™ìæ»[x"s,££ú,÷·—_ê�>¬×±EQ<·Æ­ñímVhÖV²„Gäq›\NfzópÝîä–ökÜjCM½ð¨ØÀuToŽüf�njIéDT<>”™¿ÝÀ¿ Ê¿ ü^ ßmvÝ7”u� Ñ‘9ò½â*D®Tu$³n0 �„W‚šàÎþ°öéD¬€O§p­ÏÌýi…²éC Î?§Dµfœ–O–?}ƒ“mí gýtéS]r%§®åÙçÏ£Áò½ÓàÉçÏgÖ'ï›rË:¸´$!žÐE¥t× ¾“焺¤ýèÉR~*ÄÄ—muy=qHî¨+×UiVöu3/t“Î9ÇAëáH¢Ôr ¨´¬9¬?'§ÔqÿäSvú -±+ÚõO�“-Œ›À¼Ü@Rýæáytá�\MÃKÑg-Á©Y€8œõºDÙ&d`ËÓä?…Ö ZÞrFÜl7Ë ^s\Xq]q‚òüsˆ&)sM›çj€ÐŸê·â«Žâ3ÀA‰?}èvÝóûâ:@n‰½`éˆ-Ô [奕tÁ“®]I”r´ˆ·'ËÝä¢ÅY ÿcb÷ÂÎ�»ô¶¾£ uò°Ùya±À·. |z(–{a8úô�GaèÔßÁÁo7Ÿ?^¿ÅAx(2R ÙŒÏ© .ÂÏ8X'Ï?}Êþ?K'+þMóô¾?}:‚V´ïy°¯[LÓñ¢›:´«BËr(öb?¥íO1Tó¿~zS� ÛŸP«d4ì%?À?qÅV{$ÙzûÃá»äÚƒ6þçåþû÷;{ÇÿñümkÔ÷p6`Äß(ZVµO½¥úçÏPî=–{ñnÿåÏPêÐ*u”+{ƒqïf/˜àwýÉß>}ºùôir B9è¾âF™´1j«-†?ëõ3Qû‹@=7¯�œx7À–N¼ÓÓºÿJ5}ûóîÞçƒwÛ/wÞî¿{µs-ÚÇ´£�÷»å¤{¢Ø»ý½rÚk«#¯d÷¿Z±û2ö£{OÄÊK�AñY™)‘¤C[*‘TݲR؇snØB¼JÄÇôð¢phæ‚#‹Ã³3ìîÀ�ÒCÀ:¤´‘ÊSx¿[ø!!3>)kýœÄ§[ô¾÷ô\nÖµU<ÂÊ£³Š —õÉ™.µÌ»ÅúÁy?â5¾ÿGïGüÀ[ð–‘èäèºÜ�[EC6æ ˜Ci厬*Á~ <”ßm-‹wcˆ±±x76<š�‘£0jCRsDN±kÉò²�’�y9yƒÅø‘®?ÆÓ›Þ‡­1U Œ]ÐRЍ+j'U‚ÊIð=Â3bÔùp‘¨^7ªCË`¼ÔP@-îÇïâ5Æ2ªáwÛÎöðÖÔ›.¶m‹¿àЩ/ÛðôYË`QÁ®ËG<úŽÌ�jz¯} %gï¿BÒ€æq!®‰q¨\lè=áÆGg9,Ë£�CZ^Ý“´PâL óVpÿ~`�Âo¼¥÷�ßx…4²“tiéJl4Þ3Ò�g¬-å5yBÎüH ˆ€]¬ê;Á¸uŒK(^ñ*tÁƒV£$×øWÕÊ·†@-Ñh\ý¢A¿­Éæ>�uó�aó^01÷ðö†vX¼�}Ly ¤vév‹8<£Þkxh˜Ï˜ð)P½vŒ½¡ÆVüL²Fgô:<¦ðYûÎOåñbµ>¹ Ò…7�ÿ{àÿø¿þO�ÿGà‡‰éIžHý1èã"ÝCÈ#Þ )"Õ2ç4u€¬~ƒ+Ë |qVVhãZP¨Žäøx+œxò‘ Œþ‚×Ä+¢lƒF_ž~‹r¢H ’ðË@˜sʼ§'†ñõ`¿7Ò)l&"öÝGvˆ93§…Ìê)š;wÄr«‡b¡|GJ™WYæ ±¹èöY¦)¤¢99IÎ_ŠÖ ƒ€o‚²UÂÃí_?ïü&̪€´ªtôrû`ûÅ»�Ï:YW*EKÏäÛ‡Gýjûx›ìZ1è�< […åf GéŦmç°º:ã\øA×!QÛK\ŸèùšÚ¤CÒ‰<*P)uRjŠ#Û«Ò×±©V’zØÚ€$I»�'qk�ÖÇ4ΨÍG>ÂvªgDݰß+º÷.Êò�¸G�“ߪõÊÔU£lêJ™+¤^Û…4_Â$ )MR§x„•…ú%¿ =Þ,õXæÃ¦>2Åtk_ªå"ê}Œ³aE²µžð…D¬ä)O×Õ¼Š2æ�-k5ÈŒ¦)ÛÛ gãr>”#´kÔß+ÙJœ‡ÙX—³êFEðPÅA,DŠœ²žVS»{³p®ñ¨„tE[�Çc¾‹Ô' áM*eFKN�§ª(¹wÕ%1mmUÔiÛ½K|jÕZÃA’ÙÒhÑ´ŠÉ³¯½ ×ÖË+4fÍáàð‘gOêÖŽ�¢�6\+¿T­•ð*¢'ô�\/&l0ˆ&E"�ž Ìb­!™Uyì +ý0 qœ6€ ‰Ä7aþR(f£ê*­;JÁÐê­´ŒXXgˆÇ"9d¥ÆiøZŽ ÙAD(F–³xÕ JežÊX©fÖ5ö®ÊÉ·1ØDÐ(ö¢®Xbމ›Õ~±æÊ~ÊU^­ê/aÁC·Êµ_&_tWÄb,Ç›üǨ…˜^Ó@к,DJÚq1Êe¢u*(ñŸÞ—k{‘gË‘`°¯�ÿ‰ÄAGî£u*ÿ–Ó%–2�‚Uò®’ß*V‰BâÕâ"�íú6$Z:¨ê½ {„zbfdªû «û©¢º=Rã¤Úö¤F'ßJ^…}ÒMâã¥sTwe*ÔöÖöGEmoó Q~Èv“Ú­Ø%é“C³ë‹Èé�7üêõF2LËZ‡å ‘žˆ¡y´éÛqÐæ0AË£‰4/)f“ÖÑõE'Ö¼Y˜ !‡ãÓÐ$¡þÈ,– Rºv!ˆÝï÷Q�¶¾…¼÷8ñG‰?Hü‹Ä?Oü~¢ÜÔ'•ï¤ïVö ÔÒðkSì2QÖ‚ÇI+ÁjZC¬©ÕMÊ®£ æ1…‘huü!ƒÈ9{l Ì0UhýpÒA 'ãäTš:±ï�ù–=á¦/Õ¸0Óæ}‚[ÕZµ§^zÏ lRñ—Zˆ½Ø˜˜G<6WÖÎië�…]ZùÊËÔo”:tõê$F:*ý*}Kj<ìS£è…{ÒD.dF1ìfÐÍ�³ ^ €)Þ…b0õ°’ó+5œöèú¡Â”+ SJ‡a ´_fÖ"… Ê4Ú=‰@ç¼mý¿žg»Ïjõ“qÝÆ ˜èªP›šî¨Àä’ßvEmÙ°¸LêxW;¥ûúîu¡XöEe‡ƒ ;BT¾ Uq©Œs—…åù˜rߤ•¥ög”ò¥ÈA$ÑçhƒÙЄ1wJ’Îa+¡�þaÛîVKwÉ•~,r÷c‘µhd𣠀D z ¡b2 tv�ÕÜ ëE˜°˜Ò(,€•‘² OéÃ×;ç#TŒ�RÑN‰~g,Šw�Çj_{\ć0"Y…Dª”³ËGÈ�j¦&$gA… ©nˢݚ$¼½µ"Ž‹ýÐñÔóC,,ô˜ñí¤²Â$£ÔÊ0¤–õ’>IÙÄö¾éÜ\¬¤ñËpgûêý¡` ‘À] t‘p#ÛG‰å…¯Zñ<½ 8‹¯�t´vÆç2ÃQ²ã55fÀw\­êà/�žø˜�^ÿù0—â‹�jaOã ÿ5`Ø2jpKÃ6µ¬ ¨–Î7‘/jn �=¨ÞÍÐ\nŒïJ}ù�‡…ZƒSl„«ÚU¢Ž-ÕŒ¦K°mhškz#à üŒBjÊ�[=´¨õÖËýÈ�ýÀ;ù;ôC�©4ã©#Ë-Èd·>u¶—­RÜäÁ‰`¯Wè�< ÞiM\ЄŠ…žëbË Ô–5]ûb^übêLÀM€®£p«ÓÏ'“ò¥[Ï®ÔÌ–])uôΕ V©X~ Zùy–YhçœÃ}…‰óÌ«…­†RbãˆHâGavD$#«˜L™ñ£ˆÇôS\â|#²ÊoÊM§{ ð¶é}_kóˆçyA š.¡»iˆ¯ÏQ×kÖÈ©AÚ2W/»ËÍe˜Š'¡óÓQÉ� S‚n¥“V¸U1ò..W)ØÅY4-i"B5D¼³H'«x¿)¶-R‰œ�8§;÷´˜’ø‚ò·Òº™493Qwß´Ýà˜h¥Ï1I$ÿüúh/Â>éJIä)5 W[¢¾²íbaH…vn.DÒ¼ª± ÿ#D"’ŸÏƽêÍÂZŒ¼9$•’«¡)¬O{¶û¹²ú†&"˹­zyD4:ˆ§Ë$dhµ K÷=¸‡›ðB’.à&mùÌÚá×´ì¾þ„žco/ÿA Ñâä=Òí¼¶Z_ò–½%n j¶õØÞ@ÿÌ¡ç­ç¹êU8ÑÏð¡ƒòÎ7ŸtÙ†a}yft²’Àž:d¬Çïß +™© aêÇ7BÀúñ�ˆ@;9$\Å`ýÏ‘õ?¬¿¯[ø9_ y³LmÂÏ‘¼Àï»2Âp¦nÁ0(¹«•®àU kU ëU U ›U �ªW%<©Jøˆ ]uŇ�¡¼ŠdCW˜YG‚=Ô-ês€>†Mà›ß#û¼l8Ðy¯Ðà�5XçZÙx7Æœ#ªáˆ[sÄ­;â\Ul:â9â;âž8â>rÒYèŠ#ºQ¿V¿^¿Q¿Yÿ¨"þqEü“Šø�¥Ýàÿç7k»Ó�bo] kU ëU U ›U �ªW%<©J0s‹d�};gÖŽ_«ˆ_¯ˆß¨ˆß¬ˆTÿ¸"þIE¼ÙÒeÕw±�ŽøµŠøõŠø�ŠøÍŠøGñ�+âŸTÄ ’Ä4LV‹�bÄZ1b½±QŒØ,F<*F<.F<)F|d{c˜�n͛ԶÀ0l“�R¸ðÇLd1z[Hù™È¢E>¡¯À³ˆ™Šøc%b„H+@FˆÖV/-ÐÉ^A™ÁÊÑËÃ݃c_W+"ÉÜœªŒ¢Ð蚨�‚–16»o§ŽÃƒãúµH¤"ŠPèA�E;®”‘Lƒ’ªF1RH€sÛé÷á¼Ø Í +N$}<‘ôå‰ä� Z!…�Úªÿ»á9 ÷ ó¹]íf ëa©•BäS §§JØIZkò^äeâ|ˆø¹§ÌÉ�ò�r9²]ahí#¹¿l-6”wíL«8:âPÈI®Ätâg³`Gc®RñÙP«b@ Ü£´¬œH#RNÄ'¡XÍ—¡ö£´:‘Ú’‰§Ò¯”X“;I𢣆ÊaRO9UµS§MÒð@)¹Ò¦F˜7ÔšLú%1ŽÑÅ·ðÙ¸°Ú”· Ax�FV÷cD�Z¦no-ÿ£uæZpa½ÄŒ3‡YsA€º·­™9©¤Þé,.æ“Ê^X&­˜›žÔzà»ê?BÇÊž°Z‰‚ 8’P`…|Q¨Ð"…PšÝÞ.F÷ï×<šSU„º…DýN>my+Â*†”£l¢Ûf¥ÖŸ¶7›�ê[qK: pŒkàKUã¥2hs²íó•¤N ¾ÛaJû[5N�î {ê²¼ŒFÈiœ~IždDú‚˜4#–óþe˜¦@Þ^ƒófàgã~?ºj&“Ö1–ñ‡­ò‹©”§g6é/¤÷ï£àNÙhi§ÍDzLÏ|ƒ͸\ÝD_·]„bجժèDEüííÉi]0tZgG<И©BÄ¡kƒÉDXnШe†í€<8ÊcÀ2ñÅj¨j|:Aƒ~$ç•�JÊÛSñÜ·( !¬ûòŠÂ~HŠI°uÖ›'§ ­Ìé´¢z–cZõænª¢0Tÿ%�-”*'F(G~^†C¶]f…ã†b¿Ø¡¦àðoÊv�f^re]Äöl:…3ÙŠu©™…3¼ûÖ¸Ud²ç–±ÞFÝeWš1ɾJ.�tædã2‹þæ~rè -…t‹ ¦g©ÍI,Fø¦_òxõ-²¹’‘ýçìùjÛYeõ¦çù9 ·Œ| íj¿—¡1l‡°WŒ±:ÁÔbsÎ@S$E¡ 2¸d@�çKG}>_’y7KÄ´ŠÝ²x'Z±]oH+öËâ}iņY¼=­Ú1‹—©U[fñnµjÏ,^µVmšÅ›×ª]³xË&çÀÒû*Š#Ð@8J$ê¾ýº#"Û){ÉZ¾H¾„±0z±—8ÞïÂI<è¢Ï!zÁ«Bs½á=H£K<Ÿ˜\ôv¿+2ÿ^KÒݲÈoõt–ìÙЭŠ�#R´xꑤôVäãùñE*Ã×ÒâS>¤Fí:zÉN_Þ¤¶—ã|ø«Ùí¤uâ]’‡–¡ð"Cž_`U’g™^Þ�ó|Šƒîaðu 9ðAß-âI�w*/ZÞ%79VD„ST¼:Ø'‘\¦„9dì¼ÄÔ¶še�3Þª›]²˜O›\Gc+ïÂ+ìü»D=€y_z.©X¢�âÑ—¼ç ãžz(‰b[õr6_Ð9T¹`"œâ£E…Å}‹ ´öƒOÒ­™× ¡¼˜®ZEY‘ ÙTe©�MaEecTÙÝj‹AЪŠLÈ^BëªR¥ŒPX"|U™l2¾ ‹¦-‹yïß'”•�7TÏ „íl6€ «.�Z_³!ÐR©„ñA­ Ù€Ìb«„v kp6 Z©•0^ãž D¬óê–@ô-AÂP†!t‚+JSâ$OæY'mk}5—PN/¹�ërrKç ´©b ¦ê(Ù V IG”�\§ˆ&è PyæÝPc±¥²ˆîXyT¯VL—Š›§�Ú�òP¿-fO–ß‹HÞm ˆÒˆ\½fHA4^²X/¦ÃR£á¯Ò£U¹ÁxþûDm,¯8y;û¯=_]nøð¿Õ�U4­(÷¾ûŠžÜÞ)Š= Ã/­Un/x¹¡<Íã±P¿œ“/²…m�Z}¢¿n œ¥%çy‹Ai¿‰›¦n.ª7ê¶'Ù.P©”Ÿsˆü=Ö­¼o(uwÑú ö=”A/-ÅÐ@áÖ›Xó'™}eù0u%ãCûTœß˜Aæ{üM !t€sÌÕI]¹äbŒ�ǰX]Ñgr]e6úêñö¢n§´TÏ@¦õ& mÊšïgi],Œ?b±†ÔÒú&�äï…ü=—¿¹üMåoTXuP«Ù½S|§¬nyÔuM1»^y"Ãf)ƒcK”—IëèÆ¦ü]¿±lÛúcñû´\©ÞÓÓªe*ªx´^*úË8̈µUCÈꆎ¡HоûÕÌÚ|Xå^ËSc ûU¤hwX€ûdx¨[¾þd©ÆZyøÅn=râ¯,·“6iÍ}渹U·1w«Y.ö‰ÏG©^‰ë·5]…q '÷nÜ29=óW=aÜ%·Oi×$è¼Y0¹(kxÁê¢/ÜE‹c¦¹f8OßF…¬ï·rktˆÑ©¿P_°ÔŠÕ“CŃŠÌ©3sTnb šhq�r«hh¡¥¯“i³k=|„Þx ŒX/Ñ2��è·kèÙ—SrtG¤¶;?ÃGÀV‡rà¢]^çæjº*¶×┑i"šžI r �Ú/Ìx/Þãd}�ÇÞnLj—‰8õ|í/áßá9ƳÔ[ÙÂ�ÈÍEË­ØæØ"ÃÏ‹ ˆÝ×Ú°Œý†»­¾PBZTY§ð 0VõÛÛyr.áû´)“a˜FÝ…,Dá4‰Vë[t­íj#l£$°##Ô�ÖXm,¶j±áAê÷ï?z gmé;¬Œ_ùìÊÅ˰ǧ) Z˜Ädó5)pg8{±´£<¶d¤-Á\d¢1uÁIJ)¢}5©Æ-C x”µ¢B\¶ìÁR.?WT-�â<<¬’ù‚á·A/ 2€»d|ïåtõFð_“ gW, \ÂqzØŠN~âköß’û ŒN8âXÑŠÃÄñßriô~gó™Šy3C,–±³t­˜?]k1<¶ȹ Þ›Y‰ù¬8n¿ÑxlQ“ÀpäçÎ#6…»š‡ž¬.? –û§K÷F+Ò‡šÕÎÔ„�ãÝE/CÑ 'Ÿ>�ñq+m°[¡A€Üo<*ºKÛ$“ï̤•¶>ò¥Pè錊kc'Cì¦SµÙ"}»ÖÍ„^ ÃàÈo8­ôB˪WNÈ–›pàc¶TÄHÑ ­Ã"Bj3tryËk{ªæGë‹ Øö�W¨Í”/µØh@\Û[ñš¡0ÄNÆEŒ–ew›¡�fPæÚriÝËÝ–Ÿ¥ü30.ÈgËäæ.ȺÉp|“Ã; ÜÐÉ=vj¼ã/˜ïqIöeú¬Þ¿>k]ÁHŒt¨¡wúù)6Å_óâ/SÒcíˆw�¯¼ÀÆ&éûn¬£èOgùÈo>”ˆ¤ÑXU\õ/±`˜¯5»ßXSw šõn¬«¨G*ê÷XEi¾¾Ñ(Ê/´µ»™­òõ@ˆ˜i‰­¹V’Û„Lçe-!>BE0ë:×ó?háðÛꊔ�p­)kü¤1…sÆá«ÚŽíBH^à úèùou­U¼="jéž ¸'§"RÛ gÉ‘ðϱ*F:š{‰ÕIòC–²ý�r’s<àíññp&ÔaYÍ+ZN‰µ›´[h&¹m­ëþ¸PþN¤£3¤¬¹@–V¨¹@ô"&›Ç2{Qmè‹R¬D]tO˜êõÎÚ�>ólÛ™Ñ.TAÿüÌ®‚FHø/ãÖíÛˆŸc¡Q(#�QC´R€øçmõåD¸ÛcX¥!�œ"p6IšK»¨S·Ðà9­j'HŒè±7P£ˆ9÷;##†þ´a²jÑ×,‹¼‚q¤3@¹ªþNGÐÜgò£ �ÜšZÓþ·”Mú‘¿: Å$Ö¨S‹ÅYi^¬‹¥••–ê‘Ê(MX¤m@"Ø¢ã%mÞk"ÛX*³è…²»¤ƒÍÈg$° ËQP?|œ èe‰þ‰‘Gâ �.£Kì‰Éïælk€*÷ÖÒÃ{ôeCO£}7­Ië~·ŠÖøã–5‹Ý€&»@V†JÅÅ’½táÜ’Ûc‡Øq›h §îú»FÛ6WZö¿]BÑÔÝ/ZíV¿Ò騹5GWN€ƒ÷¼Sÿ$:U=¨Èé@jlL¡Ö…šp_x[Ú‰j‘ìt²ÝÉ€‘Éq} »©6m ¤ È"V$Œ'§>*‡A�'¨õ•Yç1ùâK¾&cJýâ8’2-~Ý›ð$%¥TÂ�Ô…yL…êO!j„}�ÏµŠØ’¾˜0WL¡Ê\r.¼¤í‘!¿�Å}€N„žqŒ6(Ó¥%¦Êž %\©Ã†n”€Þðç†5G~÷šƒ‰4¶5d]ƒÎt ë:„1È–Fªí ËÎC{°wðá0¦ÐäÒSåÄç]V¾*¯ ä^+](¨–¶ ¤J�^dsmBÞ‹aa»O¶¤áî?¨[÷-ÄÃ2�—¥ GoA’,PëŒóÌCä™ÏpsRúj¸J›¾²Œ†¬7Q{Åy«–´ÉëSVo·³º£­@?ÇY=û‰å™æ…©)�à,ãÓX IuPa¦ÒÄN¦xòIyû2Ù¾œÚ7œ …[\Åk˜Å.Îå˜qOR£ó¸%lH,Üs"«÷l]°*,䵩v]ÊöQŒ) L¿¥Áè��YÀÌF¨{_$oš<ݽÚ4Cb2}L['h¯µîä+Š4SŒäD Y«©Š�畱-‹°7£[Ï¡x²òÌÞ¸ð7BoÌz$"¡û¶8½??bhôUZ¶•cz[ÔÜ”©÷ïÁ«1rìf<± åüJVè†#{<©Ko½äMºbcæ6ŸIýÚ1Éz(hX«õº!ÖƒÇLºÖ62Ìh6U‰ia¢K\!Lá_á_oú&ÉÙªG®´&|ÙAŸP\4‚q¬ß‚lAÝŒœéBªèÂdZû‡Íðij†'«K+el`�ÕÜÏV1Õ{øÐc Ábrz—“æb.åÃìXnjR¶É÷¶Ôàg.¶·Å/©ý^-EÙ±r/xÿ~†âˆøÏÚbkµ-U‡Q*Ì�¦õ¦¨cÛÒ¦nÜ’Þúòv¼Ôh®N&$mý•4ãèÀšzþ_µ8‡a´@]PN¼IíW|úÿ«e‡øï 5,¢OŽ‹}RÏFSÇÊ“�¤2ÒN¾¤0ÄmeJ/KŠ[8œ[LJ+â’õl2…ìPxG¢ŸÒ"H;iÐý,´3!,Ew¥·�_!©!¦5Í_B„öCyé×x‚B®1ªP3ƒÏX?•6‹:ÉO›¯’É9²çè�Ù¾ç£Vë”ä;û¯ é\ÓÁª‚JÐ|ˆeV¸>DP¢]á`G­G¡%Aö¥ÔÍŒ;Á,䯙'v¢-«ŽàûC Š,™‰lÆV �¸2�N YÙyÛ¸ma\q¬Ä%S¡ðÀ�<¾ô]cU4è˜?wå‚Å Åa[}žL¶Mg¶ô8Ƚ› Šܳe¡è€qò_.Žm®êìËm}I'<«Ë×yÅD¹u·9[à/õ¤¹J0uEÝé?zò ˆ±4DÂÊõw«UÆa¸Š‡)‘åOd߉ _„û#¤.ÁС¾¹¸È0ÄÒï,_QãkfDÒJ%E …§ó%�D;?&OÄi5Tu«ª'rªäeÈû(ˤ¨HÙ÷tßO ±ÓÔ²B©=<,Ý=:¢RÆÕx–>£í‰ÌI²wh/ðy~ \mœ } ¦ÔáUÒö€x W@8ï5ψVˆâ²uæòx?5z©Ö ™7€¥*‹�%˜Bk»8 \g¯ÞD÷.ÕÙv‰›Âw÷¥|¡ï鱈t4ZHý"UÈ¥]�²ê‰\ûŽ›ø Ó�ž ¥�zõ€í§î«É; œ*0ÿ/†ÑWýÅ®KÿÚpjà¾�ãêyR %å@zøÐxN«@­Ùý,‘E{°Uà(6Ú^ }ò…w^÷§‘xM¬¬q¿À[YëSùUœ"†îb·,ÿž¼»œV÷VAÑ¢ª·SU[Ês&Öþ�÷Œ7ŒÉ�guΗÁÉWœtÈ¢�å|Á®Jp jŠ’"# ¹z³C'QÍÞ&‹» EêcÃTÝFG¾$1sÈ*H|sîPE˜Ä4a(;|ÖõV‘iT�«ß”pC %n¼ˆ0.Ã…` ¢L(ˆÑ²4"Š…½¤xkkµ”Ž "e ÍVöײ‘É€f�ûkzwöÑm6¶á”ØV¼ŒÔøæ–Ü ¿­ÚyZÀ½"�*샂ԉos-®Â0ßR{„Ä MhŸ ™÷Òàrñm¹¤E˰yÃÙc,éK¡eB  l€60PñLbNÜ)ŒY;kÕ/Š¿·VÇ%’K:.ívÎ�k0‚døsŠ%êJjVq¯Ü®’ËÊ+# i.X'ÎîЄé²_.ú½Ô¢$ŒVšm!¬—ÜT® !Ôgò¢TOlÓdsJ+k« ù`ëʾ9€?eQª–Œ–>¬Yß¹ ›,G6U 9MªÞª'O…Å ôç¸Nb—7_B´á%ÔkPK x~gwÒT›B+�ôœŒ ʧ‚°¹‰Lˆ˜}—ÜYM:âÚ "�ªØ—”,Äg)ÚË�î߯¸žÆùÙrÍO¹‡\ŒxÄWAV^™Ð ž”‰²KOša€œj~}ÿk¢u‡üZ­ÎŒQNÇ `mO?'ãƒí›‡Çe&œ ”!¸…€Úï¡u;誗@‡ÉbiþbùÄ�Þ;Ö]ó³M–ŽQQXÙŽãA¸ðc{åGsk-/Ç:áÂ8:²è…3Ð<¥”�̼èR'²^̾Š|¼ ˜Šú¼â5sùîÏù¬W=p(^ü™NežƒÐºû´eÑ‘òm–èroÎ.“5ì´(6˜{¤Ôc]s��æ[S�iá´�ž�…6¬A9B6¿væÝÒVåAÂ}ð0>¢ù@$%´7ÚÿY‡îKDoAC²AW‘Ç<¦¨7±IÝ­U\UIðÀLJÖu+µå•u Áª#µdâš�)[¸fka¯7;-î}῵©‡R¿¢ðv¨ŸöX/ìe6ìuâTY£–-ͽÏúnñ…²eXÅä~©…ߪsªñîçM™Ÿ±çMU/°,>Š 1ØvL©Ø+e5^6�¯Ï©aÝ@…¹zÉW—´][heû{ÆÐ5/¾%ëVÆaJÜÖÖ[›5µ¸ZÊÿÏ’Š1ÕF#åŒØd0W��’‰×éC“!ëʧõ(‡æ#®Ë'åhy�³oñ]›òÛd½Ñ,I‚ìÔslò3δŽëXTÁ·íxÚ=´Iîålg…Iʯ=Eïrú�!ˆjA” Šý9´1€Á£Åp>_^2tP4-ìØÙ”]Ι_Æ}/‹2çf>Qç¦)K—¯ü™¹MõÎÃ\&bÇAŠ*¤Ö…‚›4–we³rñ Ú"˜µjüi5˜§×’JN“Þ°gËìhðŸáÑ?Õ†ŸqŸTvÔÚ­HÛQjgTL˱¤‰êxñY–cª§)â�S6i‰žøœ²JeÅçB¡zò­”ú]*ýK¹ƒäðI1‚âBç¬^ØŒÀ–ãXá¢á[3'[cžk:§¡ŠmÜs­ŸÅ7 gçfÌ‘³ÿá˜'*3ÔZÈ›Õfzá´!�õ�Þacùøu øJÒQªVÅ4ÎÌ¡±™ú^¯Ù�q/TôQEj ø/Ñö_+o(«bßBc 5®ã$Ýõ4Äz@ÅÒOÂSeW‡^U5=Ȉd] ÞèÓ¨ãMæÐŸÕ�Îd*;l›Ç Ò£BØ[Y`¢¸Q©„°¥r¦ø�ÏÌ–Zgþ½N°¬éá6Ék(.þáà:•”zÆT­3Æ­‡Fºj®#Ô³ÖjÝžÎ&»-}qe?*fçü‰«À9GVd®î3æJd¶¹i{Mb¤�]Î:ÙØk2‰ôt„®Àg¦­mæ…L£|¦·eÛGÇžÿ·¶„òsX—f ï#ë�X=ž@Ï�Í ÔéŒcYF!3R͵Ô5N38§H£2oJ/ДIͳ¨ÇgQã ìnÔ콤â+À]ˆòü7ºå¿›–— 㢸٠¨äçDU!_®eéu‰™h”æGÝ€¼t“IÆe®rÏÿ]7á—YMæE3bø”$‡ô>Z�Aµ�ÁÙ#SïëXÞ#3Jiu£‰ƒ˜4EyËu¬çÿ¢›ÿÛtÃìÖhÒ¤šÉ&-cÃËZë¢wl:�¾œÍÇÏÿMwá§yfß7Š9ÈàS4 }Ũ¾‰ŽÊn} ¯yãEŸ¨á,âXàNTÝí2ÙꇎõüŸtþ˜§âíj`�ÉÕô)¯Í"uѰdSc2J|"äìÄ=9¥G;CÚàíyqžÿ‡îM8¬Xä:1äÉ««”Ö­*eœç‡CUe^ª’Œ_0v¡TòKæªÜ=6™klâꆾ@øoÒd<²Új¢=?×ÍÍœÍÕ“,›Ìç•\…° UOniÕ}ïtSÛ˽ñüLw$®šjF,î4ßTÃ�ꬩ\GK¥ X”b_ONÉzÁhçheFš�òéͤò«G�[ÏyØá*‹;æÂkC4À«';xAëÁÐMõüF¢C`ž38$~Ä*Ð ( Uac�X Š-Bz9µÐzrÛĆOoÑE2í ¤† MÌÞÅÂj)±(³S”ÌW6„ö&SµM±l¶ æèžXž¬À½9 š…Q58”â#¢à1FIª5^ÔŒklÍýû’·LŒé$I(!Ü‹�Ò$Op'G¸²•`4^×ð�X­šhxÃHçQw^‡äc5½öüh¨Ÿª ['Þ‰Ìvz‹<'ÉõâÜÿO�FÁvž\D]ù=Îa1:EÌ‹qv-¾^¢Á‹°'Éðe2V $.Uˆ<³‰€8ŠÀ«0ë¦�ÎdD”!ß+�ôTèm�$£ñH†¢œ0Ä7K�pé¢0Šyt¡üDï_òÖ�øzŸôI*µï¢8dÁ£p ;‰7)r?� Í�iç£$Ã^˜Êˆ$Û��BÙ¯¤RªÝ$W�‡×*4 �‘ÎUˆžŒ¨œÉ0, Éaò��,„ØÈBÈŒ¬h´‚m9Šþ–í?‚Á_Äð½®x(ŠYh/ùÆB¸Úýÿ~¡Z„ :èºvIq,�.ÐzhÔó£8Ó·Çïßù:!½°›Œ®õ7œ4äç(È—ô�ÐBOÃ0î‚øÜŠ!^ß�…AÚø¾…�/Q^.PŒÅ X¢ÿAÓOþ�˜ ‡ï¾þ>NF°Û$Ф ˜§a]$—+°"e£ n”�$,'‹•Y¡}çCyª#-]˜SGÒ0��µb{€ž“/¦ì‰Z«šU+$ã€ø~K´ŒàÀ8Äù^Äp?éŽ3¿+VõNOJê{Qê/öÒàüœ‚!6 ¼…vû‹±žhiÖéxë$ô‡ÐG?Ê :ˆJ‚8ºý‰{,D+„º&NÈÑã«î0ê~QhpGFÄWÇ0"]<\éw4 ®õlŸ¨¡–Pº0l#ƒ2Æb\w꼈v½ÎP–Á¾‹¿Ôlñ�ÎIès@è3¹T‘²õ=t;ø 7½Sàñ6"‚÷ $*õ@N®}øI/zAøΓ\bL�(*ßðCÆŒýp:è%ßbú ‡¾€Ø=&AOü {œø†}'0aÙNÄ¥bU û 8}Ê.Ó·ì3}_$ú3Á¶‰¯K�Cß!Δ\È£`Œ!& ÿ"=x !fUE+d@¶C­Ñm‘j�ú¾deÒàÛ˜<<êl#ì–çba¶4*@ PgüÁUò@¤1ÀWE°·&€"×—‘´B„ !nnôK=Rè*~ˆ9HVt,É!Áw."Lg#¼<ºUËóäP~Säx°4# é`:ŽyPV}‰ÂAÝßo¤a»•´l!Ž-ÛBŠ-b íh@ä–Æ"tn8$3XþÈÕŸÿù"4Ê!¼H P ì_Fi>†@:I�öhüÑ)]§“úA¯G3•G](dСŽßéEð/ñ»ÐbEÞ|´î÷z~¯û=àœ.ü~tŽØ�‚O\ý$AdÀVŒ?çÈ@ÂùýK§ç_°ÿ]é?.�̉í×O;~:ò¡óÀVøé¸s g©,¸€�C̾Ÿ]ÀìúÀ\%0Ê0ÃèaÖû—Aêë¤Z„ûÿÈõÿ‘ëÿ#×ÿG®ÿ�\_„½((;¢i„`‹¸ÞaæàT¦¾èñ˜Î,ƒSÕ9ÐÞäµ % Ji8þýO2?È·®;A÷Ë!6e±'‰‡°ðq�Hò‡ ,úÅ *K¼›^�èS-¬oX¢þ# Ö.-ØE\Äazf(÷³Àðg¿óbÑb² ¿Íìò¼éꯠ"ÿGvÿ�ìþÙý?²[$»E«(ÉyŒQ7û“B·*ZC–ñ@ �R> ˆi8 ƒ\CÀñôº¡›\OLÇØœ~˜¾–ÒÆB>h@e[…h&üÓj¨•ã …ü³X 37Ô†Düê&IÚË|ÄsZ·ƒ øƒà¼ ðiا?‚›Å(XIÙØù@ÄàÔ¡‚OÒn2ô¡`|˜Š ‚0öð‡v�4¼ô¥L)£ÐÏI×Ê'ãö(^õa�¦Ûž†ÅæÃù›¾'oñ÷»íj0oæ¸%Ò.Œ#^:xÀé‰<~w‚,,$Q;DÌ�ô®‹ý}Å_|Ü+ñ¼¨×9™ �v1þAÐG³½hM‹öx`,Hn\6ÑÇQSK'x [ŒS)#˜²|ÒïQTû ‰ÅïÒx8¤¯l�|C*7Êr¢iø— B»GD¦DÙò$¥zÆ*�.ƒqÔÂ�K §qžÃ**p=%·ÆíL8t¡ÏXtˆXøý>Ì °ø½—|Ä ‰A¡ô'МòÓ�&ÔDî2È µý0£óp%ߢ^>À\r¥ÚÙÅ…äÞ°Ø\¤�Hƒ½±�ªêƤ! `!S`S�†Åf-&#ô ì*“sW¢/.?>ª ¢"¶ò†E—¥å�#||™Ôs¥ùr\h‘ƒ£¡TƒÔGÃÉ@}*§N®¨~RÉ.a}?Ö±‡2¥Ž#þˆ”Ž‘Ä ;hâ´¯îO€'MP‹?¨i#¨½@04JèEÙÇë¥B=÷H º‘Kâs¼0@ùloEÿEàWì·†}(ð^ =¶ÆGUP”.²ìÿÿ³ÀÓä[ƒ1(Im«Äìà €£$ ÐH…¥òú4üÁš?X÷þ`Ó<ªÀäA~Q\šÀ¸ m/rM¾h¹aðéçµ¾ �Á5æÅ›¥ol²‘ÏQF®ì7¢ÁœTØ¡þ“ÁPv’+Ÿð_/éêÁ‰.ŠT@5?÷;¢5ÖA°Êõ¡ Ü á¢[Œ24±]j3ô«uµg)S�ÊÄž‰0~¸ 5í¤#†s)û¦µÖ2^ìÊ‹OuVU¡2Hä ¥wtOfèËúÑÚô];„™ÅηÔÚ`ˆ�^¨ýÂä]ù?ÀŸwÒ±á� ™L…Š©Ê¡dì�Ø…æbªn,Su?©ùy©­­ÿAÇío`Bä¹ÂDopòp¤Ù+œÚ`üÿÐÏvö Ûüƒ H÷˜zv†QajÎj‹â5o‘­�Eõ$¼aˆ'ØŠµ‡"Dôƒ<í&]Ê!;4j(„¢`X$½?  ÕØØo„Ë„ÁþÉ΄㠃Q ¼x èz—Š” WRÅ!‚#ÅžJ}1ü É}ÜÔ ØqÔ#�ŒnðÏ à°éãQ”d@ ºC8Hç@t?Gzm­Œâ€C骢’g¡ 2F®T$­P(ç/f*E°¸rP“q^¦‰qû�\d¢'ª\±™j©‘2�›«+þ‹ÁE]”É”÷ÕQ)R %Î(¦î¨~õI!ˆŒ ÐR¹ qûSðe×q·Š8àòö�ÏŰlÃû¤7FE’â… ª:ybÍ4Å!´6=}? �ÄÜ�ëÔÌ q® ÆjPúâ&.B›®â¸!–nicYÍ>�qŒ*J?*‘X–à /î*P úœ—(:Ýеyeš©¹;Øï÷ýºRI\ÿej9ÂÜüšâªK¥MÖM!· –9\ ‘t­CÉêzèñT¡8Ýå9Ë©vjVH^YvÃáð 諃ßÐ4´*¸8?#‘�/Ðð•ÿŸüu’Fæo¡k¦N7#[ÑT,€÷£~Žããç.I€ÝQSN>*Ï8b¶K„Âñù:fÌàš'øÁ»ÌàYp^³»s.‚ ¡_-ìGTâÁÙÆB×$E…tùa‚n‘ÁPÙÿ›¤Ár%!C¥Æ•;•\ãøKœ|s,±K8#)A�½AHwcù¡ÙÇ$U–t8`™ü€ÄË¥èE”Wg»â@6J²œshB^Y!$rÌðO[¨YL~ŸÁde&!ÇÄcwE¾n£(«RBQ“8ŒFA>¨h'ÌKV™”u ÂQÝn�ö ±°R£QVÕ€~øbˆÌ¨]¦ÒŠ|äitåH+ÈpÝ9²H�°•_&Ã˰ô«¨ß£‰!À-½µÒ3Z]ˆ^À˜¸Ò�}É©|91MFxVN¾•’^÷Y”Moÿ9]n]ÈþânÙßÜ-ûáüÙßã,‹‚øÅp\žŸ]<”b߇iU,¾I*§$éÈ\r^ò÷åÊRôÞó¸'8ûî˜ÒÊ©?%E�£a¹qÇã´[RÜ-%EüŒ² –óX\«V¬¸óŠøÈ ¦NS"•ITŠĤ }cÝw¨Û�éb¤‰„‰ Ò/¥Ž\Ù—b”¼j,Dˆ¥&ÉÃw±@2¼>Wô°\R§ô; gô25ƒ_,ÿ C¬®ç�ºÞ`ý�$Ûqï ˆuÁ2‹NÈmJ$(Ì,ë,OŠDEðˆ"®Ä’:‚›ž¯U`Jv}Ñ�3_áJ‹XS×Ý•u§5;‡ÙG ×]"ŽX»êqVÄ[•r…ŠHÚ#;E.ÿ%¼>Kg=¦G6À UµÚ×>$f]Ià4[GñdFYoÁù�Ñ‚/ħDèÐ)–™|Á“:xÁ©<” ´ã4Kô;õ“¡r¬W´bŠ¥Q˜ÕnH½éiMt;×ô´Ø»*¤ïMÏÈÚ<©Ÿ¹šžVU÷|d`›žb =Xvá'ÄÓ×µøc8l‰çèZ«– ëÜ©ðIîg§õÖóšðš†„ð ‡/{¡Þht‡úI^4t¾Š•¯ï>“t$°Ý ~¦Sæ‘� ÝOŒŒÏe2'µ“ØOOÉÆÃ0Êé!´µRô!xøÉi+VQzõ­€¥ÛñvR§Ñ‹Ó»ä›2r£½àðf;3Ò í—ßl+îú9h¾Lô#è4¤Ó|­“û5´»§ž4Nm«tõJ $œSÔF ÏÓ–¶2fZd~/$5ÏΑ r‡Ójç”Û¦�# ÷!B:%òÚßZÉÁ••\YÉð¯>á¨!¿:Iž'2�²Ü¨ó�y2˜Œs ‡ý—º™@̽¼K[[…¶CŠo%ˆ† 2Z¤ødüæ\´ØIxÚZ\Uv†D7”Y‰|`;dBÅеr`ÃТ‰1©$FQ´°FF¹�Ÿ26ʧ<�VÒn§“({É;Â.ëZŸ²¨w¤r&� 3•:œ ÑŹ;2g ]Z;S©3ºãŽ–¦s]ItEäLùVl¤cKÄäÄ“�&=Ô]¦g“ø…'á×Ü{{¤Z‰Qo@)Eâ'=‘ô„n#)±áŸ5ü³Ž6ðÏ&þyä Å7Ê-ÞRâGJÚ)J¯âà’Ô.ðb^ÜÛÓ·”Ĉ;QºíòN‹¤LŒ ‚ŸÖWº¤T—Þ)Á˜;q׋i³�TN§–L«ŠMïh�n½+Ç韗í&C7Â^²¥R±?y�Ƀ¼–8¾RS÷!AÖ­JX˜Ë£%?m†QEï{S§¹GÈ=B¬ÞÔùÑ9�µ¤�ieÓ”MsúƒÊ¸é¨ ÌÔÆÞLw8ÓAL¥@s·Dé5M¦òTƒ@ït‚ÜÌ€iÐÍâ›äž’á=Ù´,tuašÂX7`Ü·ý|¼óÛ1棛’92Ò%‚3ß�b¨¡ÀÎÑËíâ UQZ¼Efq‚¥:FUÝPå~N|2* îŠû°n LCbí‹Ù‘T0gèÆ[HÌjƒ!rnÖ¡!$’È?@¦vlf "GCäÇQ®œ¿B7g‘˜ö±6xtìÇöÎ0:ozŸ®º°{m¿?hz÷=?¸ÑïvÐç!¥Â¦·ÝA ¡ñjcö¿mÔ, D \SÊFcý7�ÞæêÆÂçip)à`êp4(óúS{tS SãÖ‚MØ]·“s¼® ´ Žú ðúŒöžÔå3[} ƒ¾ùÞÆó7U {tŸg¹ lg]ÕÌ�§]„Fö¾©èÚ&T‡ îqX 5Û9,*Ñ/lìïPàR^“Áig 27`p�›¸@g”vLÌ‚h8Á‘«�íE�^Š Sè[(Fl}R{ÉxˆÅž‡&þ…ž“aŸ] ˜ë0Š(†Y†a'ä—™âk@Æ^Èñ¡å`©È¾ŠIôxÁ0b†úŸÉ§¡qk­÷ ÙÁã‹‘ø à�ÞBø,3ü5±+ôò­êòŒÓËýƒßqr‚§8�£kõýR¡8¢Ø# K½5  = T ¡§|‹nÀ˜¼bß/ t×jp€¿xÙOY ¤�»{‘Àlš\G˜øƒxµšË±‡ñ²—ä29€âÐ^u ·†„�—¤¾ôв_ucªx7«#.¢ Á¦ ¦(Àé ‰ÂPóSœ¤ÇC"Ã{ƒ�Oa¼’ ;,2¡gWƒ“Œ¬ È‚·œ*jOr;üóo¹ÈᨰKš£ÁP LN÷›5PkTò�Óáõ+Z¿ _/(Af!í£_¦&lJórÐï43åT05aÔT’ËsŽD=I5=¢¸—†��70Ÿ§ãPµÉêæ]šàKÖµµ>àuÈ9˜ìNÕ'Vè¥\…kDÏ…þᕜŠ‚ iÒwe¤í]Š2a²ÁûÎôùòØó1/Q]XŒ u‚ÓãhÂ˱Z‹ëÐks¦+È®MèárLàà8M{ŠdîÕOŠ`_^é.Þ?t‡78?圮AÉ^¯ñ*Håz(”  ÞP“ƒRÂã0dÑ|Õ‡V$C94«€1œû„4M;1+£��aX^E°aÂfÞ †Ûjî@¾€X&¹¤�’>Åý�¬L؇mM ×€w÷{Ь® ²ìoĆ~æùçú‹%Ë} ½Ëí d¼Hä6¿†»e"ì�•좿¸ÕõÌ÷+¾Ÿtp�• ž¨éa½(TŸrËÙrEüV©•I¾óu¬0xs•ÆNïþ 3M1¨ªùo§iòM´ 1£;ª·­ÐIdPøÃKHŒ 쨡)¹ÊK’4šßÅIšØñB0¸& &BXoà=îÃaôÐjE_é6QÐQh×ã~`àÚFiW,àÀJ€ž @% • O�ÒMØÅS´"xqX.ˆKÍp­YÀÔj_Cô¹|¥¹=ƒtF¼B F�16À¦T‹6±d¯€GyiJoªÒÃ”Ö p†’ÒCÒ¨@M¨¡‰ÉÐJ¨#Ú*VhÔSÀ\².êˆïirI!»áO×,Õʧ k�[êî�5ľlŠá׉ØC”F¸�!^-ÀbmŠD˜1+)4I,¾Ñb‡:ÒQ¤²°ˆí™ ]^wgó‘HRˆbUÛgi¼^°á±Bx& 4§J‘;ª¾à1¬Ç͆.ì¨ã-öü*ÊrÉ­¯®#¬(ËMpçJ(©À~½#÷h ñQ|›,öµFÀÒ×lòñ„ø:Bs8åiêª$÷<†!ó%+DR¸o…Yè5ŸËÖž¤ÛCŲ­’6eÀï�ç�€òJ��uX¡¯ÍxCè�áFaˆÞ7½çÀ=åôó&¸¸PC½.ƒ=FVä “¼4€f½Q§>¯­aXŸ ˜]3šK¯¨5hæ6¨të͹èrƒçç,ð†2ãoÐPo˜2–è °1Èï¯&À³¿ %›¿Öë`¶! äiøuh¥Ë’ø~ŸWèq¾Ã¾Ã¯_MH–‘?�ƒ5oð‹Ùwž­DYâhÄ9_®!U™a4�ÉL@–dë—й^ÀÊS+ü†Ñ×` GY a öÂ,{Ž®Qªš,ü~»}¨k€½oƒn(ˆô  õ¥àÛ*ù~ Öàz{«$(¡À‡P ÕcäÁ•¢ßFà 9¾¼S±X½Æs ‚‹h˜³TsÈCŠªý‘¦Sù6I£¿Ñ…îí�‹Uˆ‹ª“\ Lè-Û{Ö !Ã��¾�……àWÞÕ{MPt÷'!úp(=ØÝ×ëVë®ÙÀ �»zà 1 €ÑßÕË Éç®CäHv/Ì7½Ñ°ƒh„›e6[[‹ê çŸËDÀB]ïJZ‰[Zd¾wõ¡¾K.è྘›&§òÊQÄ¢ø¶C–aMøÊ íÆhÀŸ’N­­>ô�ºæ[ç1‚�ÕGP6ÊÍ÷®Ù0Qü°ËhÌÆê#ô†$hW£r8dC…³kŽ•�5…ñ=ƒ�0(÷+˜øŸ ª¯o`PÍ Tó#‰Héâ­j`_¤›¦º&¨ø'V1@ÿÙË~6d&çç`4R]„‰ý™òõGV ÃDÖ0¤À?ó†!±ø™7ìD¼3uá鶘gÀ¯æôóŽ :×15¸èôTS:ŽEyâ- Å8½�!›ôÎÌ„† YÌR ËS›KðªÚ>-RÊ;Æ ®÷0̆ۡ‡ #N°ÛxX|!<†É>ñȘ¯’Œ… gé§«ò¨âˆšv¯ ®?°3dv B1Ü ”õ`žŽ êLÅC'Þ²ØGߌ%¤º& "�—a4ŒdO×׆ÝPŒ–bqì³G¡%�ô‹ ŠœÄøó³ U’uÁsp�C„,’ÇÄ.˜»¼9ˆ<Iø¶1•MÔöí°Kz�b¯�ö�â ™xç‘Åÿ\·ЙT í((Óù!hC‚L÷‚ �Ó:ÁÉv§‘Á¼µ,ƒK ê2RC Cˆ7A^Z�’*žÀv7”é!„Ðy=j—ëÈö ‚Õä†J)bÀªJ°ŽÀД±™ ŽJ³ßéÛeÍÜKÜ´@v­SµîŠhˆ› ë¬Z?€5XŠ87ßXBó™AÐ1%>’$ I1™ `1ÎD®‰Š ߈VèÛ(ð�þN1Ø8 ŠF´­— ÎEd˜˜¾�ª¥›Y—*Jÿ6QúhYÛ¦)\×=6J"»Ç(÷3` 0%�ˆRñG(ñ3Åq2øV¹ŽC‚wãEêô)ûf¨Œ òt*W¢NO<2?™‚<ý�6:¸«ðÀ;ÆÆn š(–?P,¿…J¯Nšøý^rfOñã½Þ-aÙ¼‡�t|a˜óU4½Ç÷÷±9—é{oÎ¥ €§ËYªÁ¦2etág.ôðLy�ìðÈ|¿çC�—ÿïÇ’É€î{ËX’ (ºÇXì1Ö/Y÷tg{8Tç>)uzµc�Q÷KuZ\‘„’Gòaš�bw©Ø7yn‰!À†¹Ç½ä¾/¹‘Öî%1ÅÀ¶®à\w²‘úÞÓg&<¨ÄA>†>31{òâ!»(^(Qˆù�âšÈÅ®Ðõ(ªJd k(C\:ŒQ.©1Å[%¡[RË*Nr-žSÁËÀDìYw/8jJCŒ`^�!Š­?ÁŒLd¦"±Ym`>&³Òa–ÊØ‡nXLñynX’ÉÎZþ¸�ÙB+ðÕ„L™’´CwÇ=L“}°º%ºÔ›ü²g 1 ÎG®e$Oy®²T„·Éް„¬gò}�IK–»=4èŽ#R–±äV�° %ʬž�bñQ°Ì×at¡8ãå**`MÃÕ3®ŽÂ.¶N.s¶)„X²ÌM@f樸J%¬ÀW’lžÇ,×LÎ�‹oNzpßiü ¬ž»˜ ]¨È ±„¬'¡qœÁuËx!±j+åfAÀ ‚c¯¶�e8HCØ€”RʲQj® ²¬«�A¾‘”>âºrX4UºµPT܇& Ù…µ>›Îv‰°ÆQ!¨é¬À)qAe#?ìiqj�¿Ã°’˜/_ Ñ¿·Êzceá½éÉŠB¶jÒ @lWB²4îdò¤»ö„�OæÕàv˜}ÍÆ�ÐD°ì#;¥è´ê€'2pˆë¢"'�xËÖpÇïQÝÎèKŒ/Fj ¬¶'OŒÐB&5šO”ÐòÑ›g/¨š¯h˜t¾ÑlˆLa!øÕ„U©Âv�ÌnÜM¤œ‡‚*'o¶T«@‰À(M®L*³rØ 8á±ñm…(+¸Ç‹x÷¶§]QKaOqô°(÷w´�èûZlŽŠ-ûJlŽª%Z¼Ž7XûFµ¨�ôûŒkFÑæ¾‡ãDîqøFƒÀ§‹&  g2¸0�ý‹¨›ê;WàËöùy…¤û£0®PDISì²Ì<Šá˜N ÷åƒJÁû|ððŽm_)_á�|ß å&…”´<@MÁ})´îã¼4]Mãê:*ïiù7)=U'‘õ‹R‚Àu’)9 …0‹Ðò§œÉ²x僯£”‚ÕjÌé èùƒQ=`ó…çë­I ?Pß0±xpT*£W@<9’:³]¨¯säyŠ�aô¸Pø@p§ƒß|_~`nþ­ve 9·dÊdØ&lÊ)Ùã.æÕ„LC l€š•êšòœ´…"¯aU( ¤Št¬â1ü€+^®R3•ÚåjŸ«™ªæá¡�6Ø¡<1áË -EÙ%8î¢ÝA¦æP÷—ûÇͽ}|0G¿04À³þ/fað…Wsp…¨_x¨#qøBÉQžâ�N/í| ” …bwPÃä*@eVRîªpJR?úO1¬C@·�ö_ë0 ÿß.`[:êJöÓÍGiã§ù!†µ.Á&eWp¡iGl?D^“(™¥Ìú””€ F¹•B\G#Ž¢s¥†7—¤ã&ÑÈ�û‰x¼Ñ�Møˆ³½È…}Uؚ̜{Ryƒ‚–Æ\ƒ”ᬀ•(2—õHPs-ûªGH?Øq^ÇLæà«‚V†ŠsüÓ†ÌÂììö´aŠÛçz‘wTZ*Ïû´µ°ã¾óš×€±“ ]-b*g�P¯­k‹ä.=÷Ë•^"…�ÔP!½â#iÂüp‹Œ¤@„øÑ– r)ÁcXkJH@ßZFð¸còZ,²€%0eJüs þ¹'ŠÚüsÏ”·DXÔ°Ë}QÔŠ8’¼ÊªSe0UÒG°2?(1¬‚�ìa¬ƒ�9®J>j¡Tû‘�žÊ Ü4Q|½¸xÉÃWVèc˜ªjVTT2o:dËx×ée· $¼c…¡¶p 8%+Ÿ9}¨LG!Þñ«Åc”ƒ¨$N� |KùwˆöjtØ¥S –_”ê½Â%AÉóG¾ÈP=÷#Ÿ;T°øÈOžáWßã…à¯ÚÂr`Ü¿Ù1W…ð¯¬È8ÿÊ[€üÚ¯¼(¬þ�•@2þ›ÄLTwý�—FŠý/�¢Óßµé |ý»Ö.Ç—À¿ª °~7ĈÛײַ�0¨rZþÎZ„”éwÖŠMDøßy+Pr÷»Àxóû‡fAßþ`§%Tøƒ±Ȱé§Ô hòZ—ì1©Ìh.i£PÇß¡Q/Æðú˜‰Wä) 8-óo2ªaz8ðN)àÖIð¹¹äbQR~�nÍ3º;*@WN”].Ô€ ÔÆ‡…�ê*ø¡4—‚ :`£Œˆè]¯eƒaØž@tmh@ÄhÀƒÚ žjfEåÅ{@-Rï¡Ñ–CX BZ �¦�‘“ž u)” É�¸x!F>^Ç£¯’έ¡“IXdP„ž"— ¡‹L5šxh«·Ç 5T¶ �Ÿè˜ŽŒyªcº2&Ð1òD�„VƨtuL_Æôt̹Œ uÌ@ÆÐÐ�듯 ^Ê3U'Ô²æ§j&gj 9fÿ­v£u”ðÌ, 8_]H‚‘À¯y£ÝTÉ-å¦�VA ©¹SŠQ„z�ðöGøPflP`ð¥€r†5™Ð& >}Ï„wÓ�ÜÐP9=ø¦„x:êe2è;zµfŒ0v)‘ãû+ê[vB½SòŒØu2ÅpÀÙz¬Ø‰d50]™!dÁ Õ[fG„�!œMÖ&p$×Èî°�ziã8°›¿P^¦&Ü ñ-¨X8Oñ˜ÛѤ õ¹!¤Ö6�Gþ- %뉬tþ-ºÊM°Ã(n È™Jj¾¶ö‘5µ‚�®m±øêÊbºæU¤W…0æ`w�x¡wE& YŒ¨"À'4W…0æPŠG8¤FVAAHWbRýŽx'窧²dù$øM”Ó^�M.Á®�Y'60ƒæwEøŽ y˜ÔéÝç0ù;Ôd Y6ˆè›åɹlyoI±%}´r±®^ôXΰ�SkŠm¢Ì}hrÒ“+žÓx7Ñ�OÊ€>¡¬±@[:}u†_k"õéšnÈ`ƒ‚ë*H™“®(»‰Z"døZˆÔHH:––hÃDKäZoÐ+>Çà¡ nˆàP‰`*ƒë|+CâÁß[q½ùHä}ûAŸŠ`Oà·RLùHTûAµ¢'‚ª�ªVtEPµB@þ(C ’�z$ò~”€‰”€‰&”�ñ)&e=(yÁ ª§OÁŽ<íŠz{ªÍ›"¨Ú, ÷$,1W= kU4k ÆJ”¨±s"Mál®ÉÌr¬ÖÅÐq»M}Ü9 Ø1aÈÁ¬6…âÞ¾c‚�Î,6ѵ*;& 9ƪob`ƪo¢}cÕ7”}kˆö]ÊžŠq¸Tó!¦òR͇˜­KX4ìRÎÇºèø¥¬gMVõ`jz)ÎYWxÿÔáÛ*ŠÆ:Yx!Ò*='ÍõI|IvÏî(™öcZc©²¿Š †¤üB†/‡@÷Úܽוço¼È€€æîP…Â�TSå ‘C•�gÀ°Nàôf�'1g þ§q?\¥¸T5µ›º:O€¦•ºÜ’…•Õ1¼©ì2ûeب\•íÊ`&� àïsfØXk[]&ËhBðÛl“kxjéÔ†MýB¯KbÈñáÑ'�’L ½‚–LØ&ÞtC`GÎߺP, Œ$qÇ�¶ó# †V¨;Òö*@íswXùøíÔ�˜;êNGk5 úŽÈ“°o™(Uu|ª™X!™C3 kø°TËù($³˜s2r¹‰„<ýØ0†«£„2!δøw°îpÜ3ý #Çò½¯ˆ¦Ñšt=…WX¾ü‚<ÿwV¢È¡ócL¢!D²wñÉB—ïExnE[~™ºGÄéaƒ‹2]mbì1¥òŽ‚Ê®Zµ¾½ëê«“¯ºê& À»–®–ñ(cêjÉì ‰ó¤êê0Š9ZÈñvÇ¡ÒSÂKyíaÔ•Dd¨îbz}�Ç\ɈH†h�(Óe ©|ò­òÔZÚ‰OÊ!dD“ j0##�DX“QB÷ø‰'ù〤çcMUMUÆl6ó¦ò%ñXe”âK$ÛÔs#£¡)!—ÜÐȨ€ ¢‹¢%H7¿Ûs8·×ÃnNÄdm ÏôÞjq)šâæßP- Îîš¿"Þ’ŠT\(ƒëÑ@2ûîY|)´$5JNìqrJau Ù ÓsZ,-ÎX<ÌE¦nÝÐpEøJÝP°'t£ð Ò3æä�—íY�Ýõ£LNÆS¼Hë1ª‹6i��-íG"2ãÁscÂ¥SçÜ„ ޝ1ÈÓGÍb:¯ð©|Fâ jBI̘‹®ˆNâ+þK�2J½a7Iôu:»QXN Å@¥è¶Ž;X/qÂïá'#)(W"3oÆ´g|ÅC�Ę'D öLr°r‚yê%&Œ“gnÕ×è–â:&ØKY—ú¨©eu©O9L—`Éô8mCÑ)D¨1B”Ì ªKà|q;NX�¡fý†8ÔˆÍ_ø:>Xÿ7sfzŠìSïo]&ÿ�³G™yÝS eú]ÊäCn#ªƒaµƒá©!üjö7 k ]€c‚» ™ šm€©�‰)\6}3·€Iý_Kž³ÅEÑ![(à‘Ï�Ü\C#õ{‚!Éû<¥VÓãõNLÄ�k³�ޜʗs¾6 ñ¥¦z®#o•æ ZY*Ø›¶~$"‡ 8g†®®|¹»nÊ ¾ÝÖ1—&|¤p(•6™'5ÖµÃC8…7dX¦ËV©î]�3 ͵/*3Ÿ…�çë…Z¡~FˆšÒÊ$£D+4¢|JgP�MÒ*q)‚}’[¤éqY‚,ÑáR\ˆ×ÄPU‹>CÅ{!’SP#J_šq•†�”¤‡_/yÃ\j0nµ±²"ÂaïôÒyJ½3¦–±MÎqŠi_ºê£E/%äá§R˜…’Óðª )‹€ßz%ÀÌõ=ä~„ƒ~?’ÊüýÎ]¿o‚”<4a,Ίxihsÿ/ öÿ‚Ïa ¶Ž†L>\rÃ\ª¤nânÔ�“¾@ ”mô9Rà‘¬ŸH ߌÐe–…!)ÞÆ»ç>ªÚj¶I? º$>¹BQÔ öÕ7¥Ìnà$PxƒR»2´)S7eø‘ ?•á'2Üá5mC†UùG"¼. ‡2¤R˰‚&kßPéODxSÕȰÊ/ûòX…|‰„«4õ©¢åëx Í á>ßKðJë|G’©']i´ËXíqì ‹‹†±(Ë;Wœ%* Ay¦!¢¸…3@ñss¦D-ÃsÍ!!,cѬA6¸$wà͹±Êà³<NdÄšŽPÝÙ m‘Lq®§d¥¨´uÎp�çÀžHÊŒÏ6Î ;‚ ”v%ÄàsiÙ7À{èóá_2€0cõ´Û›G½Ôˆ/Š‘G”é�+£ô2¤%鸃œó„Gžsc­+öɨPÕ†„Ã�ë±%ciú"ßVœž¡'L©ÂÃÅSãÞtžâ<hdˆ6ožù0èɸ4#¥âÐJ¦¦e�°ct[žˆ¥²ÐcJðÀw¯Êô�¨ËvbÇÆp?…Ñš4è°$1"?³£ý„èNR’;6Ì3E ”;!ju] {© Bàõ$÷Ò\0ÜCþtð­M¨óÙi…ðà‹ CŽo,Ç#aØBçÀ:cO»�\äJ��0 ’äKÁp..Ž4·‡å�Ù6Ü�#Å=AÕ1{q›THÅþbxƒÉ_zÆÈÖÿ_¼‹¸uþŻѧc>·ò¿X; Ù_Œ‰8œ *Öu•8T–c¾p j�1¬Z‹ÅYk‘ú9OåÅä*I2¾‘*tô‹ÙÇ`*¿ð® ÉÖ•. d‡Ûy©÷Rx·Æxß‘ç¤'e–IÛeqFêB&嘉:´zX¢ 2³fŒÖ¡ìí¾©‹ûÕ¦¹)ê³¶MŒ ÄïUБ6ÛúòÕ�±!B‡{"³!M¨I„!“QƒÎPÝû♕�ØdŒ˜?Å[Ë¡6u²‰V÷‡Ì" ‡É8Sú·:t!‹Ó<cã(¨æSbË’b úX”å!ÃÍ’ý/óš°KAÍÆô„u0ö¨ì1Ú†¾ROÎ(¤—0@ã9åK�ò)áÃS¢œ"2dêkT3ȽAzÍú–¦A¶Ïþã‹Â[®“ "¨¶šø�v\žФl¢°)$_%òÊž¹!Vf�Ö`!:Ä©5 r‡Œ×¢Ï}ù¤]ñdh»côa°‰Üli3èB˜kŽX5__VŸ²ó³-ÀÔ ] 9<ë¶¥C;§=F,ŠaoTLáHñD/Es¤ÐqZ‚¾†»�äË®P‡ úNœþ¿í½ûCÜF²0úûý+­?GZİãÄšŒg1Æ1‰mƒ�aAÌF‰�&’†G@ÿû­ª~·Z8ÙsÎwïÙ‡µZý¬®®wiB“uzâNœ¨(À§„'Îâ€N¹âu½gcB7F"äLbG€º3M¯€Á(µóŽÄÒÙ”;K®S&§1Ix.‘òƒó*×I=…غ�OÏy¯8·l,4[°øgÅDˆ×)€íHx�é�„òÏ3î|‚r‘³9î¶PY£¹ÊÙÜxÌU�ñ_U0*¾úÇ¿ŠÀV²´ñÊU¶zt%4AeP®2šÐ£ €(;TQöd‡v®Ôå*Ù=êÆßô¬ÙcOz;Œ£¡YSÊ~4k@9ÝÊO+dFªÐÖ3õ�Á…wbAà´¥­{LO*v6¦ÇÎ{ÊËhªTÙ©ÒñáX%4ârkЈ=$ri&Ü"_r”?Mˆ#[O�5å•ЦHbõ”kð�”r®¼_cߪ½Ýôb*�sŒº¤<Dÿ˜øÂâE–«[�z‰3ÿTPû© •ïAÌÇ¡»P™äØ1n™~`�ÄÏy²¡1�m'¹Ù–jÌ‹Q.¬SQÆ ¸æ57,†“¨‘ˆQcÂBõq‰V|2ù•Ûtåz4ÙÝ cŠ�?î¢æ?OQ lûc^‡›î>~,›*•Àå™/s �X‹yô„=ñÃ1Vk \ÿp¼®y_²'ññS½Šñ±z# bQÕ † †Ž3ÿ ¿ —šSúx–ú Ü =Å~vþZÜ8™s•ŸL~Ý9¡á\eLPu( „zÔå¸Áç >[¥ Š VQ˜oýQ‹¬ŠKÕÒczÖ�ÜU5ÍÁN^¨ãÏ=yäñǦ.ruÒ1ŸŸÐ ë] òåR@@1mô@@køÌÍcܳµ–œüÁ»¦HT´!löDŠü�*4|‚쪔=P^‰BÊwi<’ã3t·)¤ðÞ¦E¦š¥°;ÊŠäð ÝE -6ZÕ¨ØDHøz8"£0©y†6…†8ž"C­ÈN”ïÒëŠG8u¶Ž¸SCàCQ ƒÿ =p‚ƒbÝÓcq¢¨è¯ì5é?PL¿Y8ú�žJQŽ´ÜÍ—ô¤ûàHENRÔ|2àæ+„âyÕ�…:…_Ь�± ›±e.…ATWœ‹myŒ÷z!ÑðžÒo™©Ì@yð(Aì„üÙÆˆãþýLQXÕ§ŸgœÁ^EÏÌÄ›p+ÛUµÍ4hB’&�ÉžÒ—ÉL4u¢¬2aªDãy69 Ÿ"ñ>­aß²±§ì»T=2é³GsCÌÈ[f?”kB,QëÜî@Ð}_²g¾k_ñ×rן²‚ú‚3¶xŒg˜0RÝØ„²ÈUÌ0�Ž€›ÕÅÇô (f´tÒ?QfpƒÇûI²‹ìêH|Žç*léOð^1‰_Ó{ëY¹¬SX¤“8�µž°}âñ¯S͹mûã5šÌ¼Qn‘ß�é7Šå¥Íöfó|,ïxþC&¤¨ÿÐW)ê?´Aâ�úCoÅÓ˜8EmÄS®{޼ÖÐdEÈÌ*©Æ©þvë�Ùµ¼Fe*þÄ1$m�Yœ!Y[g�ÂÔƒês9¢C¼øELê¯Dt!GCȠأ³%ìYÈÏžðï•üì +�ò³ÇzàM€Æ–¯f«{è….[qªø=E/%8ÃV¹à¬Áh>H¼4¼ êP:ØcöCœ�Ù£œ%¢€ ÎP¹VêÁ¥X¬ hIÉ,VV‚3|5É4Á~«Äd8ä„ûé”R#ѳ‚E$VK]r„#��X:ºBŸ×˜ë±x{"²ÓµsYà€´\ÏxÅ–ä ;Ó%o”ÍŒŒPÜþ2â´¢Ó¥PkâY“BaY®LVqÍ5qÑ„¥¸ˆÞ*!ÏSzTgiÕRòP}]ȃ�Jßì‡ (P]\Î Â�.œÁ™éçÕ¥¾01sa{ˆHÐå'òŒU’¢’gÈûÂNj"t%a˜•ò†Uú±§¸�b˜ÉO"ÓŽ6§bþšj¨0kD,EèP‘q(Ö‡DÓOYƒJïe�1¯`tS…ÊŸñJfÉØXjtu–熛ÕñEý’=ñûï)%`W4-ñ3¶ Cx�åÿ î”#3܉¢ŠÕS•p·®¯sTêd=Fj¥Sl†OÑó¯šjìÏèYEr{�',â�, ˆ™£XŽP<œcqÇÇ¢Muy™Øé¯c­ŠQ¤6ÿ˜bðk›ÿŒ}$èÉñWìYØOø\¤M=�“£ç§¥óÙÔÒŒÙhÑzÌÓo�Gòü*ÐÎF‘Z›„=«1|ÍBõ¨ÅzBSÁ£|5~Æ ä',ž�&¿¦µšiëˆ(×w,Æ¥­/+“ë{¬U1ŠÔúŽWY¹œlèj\Oø³XN²òPøŒ²™ä uáúþÉ�×Ñ�ÀñTÄTAr²…pIjÓcð;=  äå�ÃøEI&œ#‡PkX„Z… :þš?rÇx`qÖxɹzÆÀ~êVƒC_âµ-.ÊKÜæu&Ä�HÛR‰0HX¥Ô·"ÜÉcDÒð¬dåkô¬0òX L c¤Bj��Ð/ñ{øKæ.ªžÄ{aÏ9¦¢Äxøež•Ä>Fò ÆH@²€•@gzTλ¨X­ËYò§ˆóãÔ:Bua­.F\uû )Pë�„`]犇xŒê¤47WaƒÐ´p®‡ ‚±Í¥°çDŸØŒ6#Ýé”)¶¤A2Es%²y†Á•Föu®ý�ų´�g%ÊBXiZί1÷» K„#Õ¢ûàXu°@l®¼/Ù“´fJ³½uä.Î5pE~á\¤éÏõ B ÇùŸééŸ"\ê.´ ._Rd‰Ë�¢&'1‚gøœ ‰ ¥œ¾Ðk£A‚æB R úhP>z©}�ˆïRXÐÃÜ.•V嘢 ¨¶—\êm¡tìJaˆ =‰c³¸Ò&ù>ŠwÐò÷ЂÉ_iÃÁw%-ù�¾Ò‡€À~¥e*W ×$øÄ�ð§ÀVýO=€M‚Ï £?U›1F©‘w Í?µ!âÿ)q(Þ,ºÇËÚ×ý©�÷ÿO}ÌÈ{ÿyÁ ‚WÑ2ýÏ‹\<�½&<͆ð�`îÛÁYÖÇ $ÃÓl0Îâªê�d=`=’|RõÞ–×ã"ü=ÇЭ~Öa\#™SúU˜‹®ê×ÅïI¾w5K†uÓ°6Î3ׇªv5LØ· ൲Öì)/òwEygéŸÉd{<ߺœ•IUaJßaÕ4'󜂂ö®2Öd˜¯›€uÕ+‡yrÑ;Î|üóŽ: °J0(“z^æ½’õ mûAˆ•Î3_4é'¢™z¸0È’ºW à®öñW>\äß$ý,ÉOëé _^V}&ûùÁ zøðËáp“ƒU`¿Kú}s¯Öžjïè�½ùUUgÕþêÁ2”‰ßaÕ¯ À×Éî,Îû°ðÎ,"¿–aÝŸÍ«©_AçX7>Ÿe„%_]ø±`aƒ†Må2>úµü5=:È…¾ÈpaXãGs–Ø=™ôÆÀ~Æð«ìy®˜Ñ·ùÈÛÚyåE»5^,ý“²8Û„J›Å$�&ïHíÞ®Ùèïyq‘÷0c{}EÍ5^o¥7¯’�j=ïá?¾™$ãÆþ|àõв‡E—ßL“K|®®ò:¾Ï2ÇK:NÚ;Xù8ÇýÚŒ«¾ÿ`Êߥ9EÌ�EÅ.­…úIõøQ�‹ÎšlZx?¬äñÙƒy T77¢ÃÃTÇf‘Ÿ¤§ð™£ôææûœ“%ñ f¯LÏÓÁ„×pÞûæ&8K®ÒþY<óýdø<é�Å÷µ¿Üܬâ¦xçÐ ‰šon®á½/ª«ÃÐòšlb¤k|³Ê~R ;þ{ظÕf wªX€5EÑV2a@?BœòQSDøû ûÍ'ŠË›”ç ¶º•ãp’ŽR}A×¾V»¤UÙη7?âç‹+h-‰½{�A[*m3YÖÔåÕµ>Á>‚¯"®ÇSy¦q>É’-„&<Ù L¬äl•ƧÉ:Ø•:ã½Îù�ØJ?NüË,Ä4‡A£°ô5b`cÍû³$ùÝ–ã †‹G¯2ê>Ö¦×5j!$BŠË`ä~óøq×›3ù v:?K6'qÃ,#wý'_Úõ‹3 A ¾àå/‹1žöî–r»gÀ-›YQ%­¦à¦•Qåæ&?|htPë{×ÿð¬Ö©î·e1ŸÝ»­GÝmY¾Cc‘³±v€›Ä÷Nå0Úù1­§Æô¿ ¿}?>ç§®Ú `Ô«<>%´ /n;ì“ãä4Í £ûëO&üÊö‚¦sÙ¯Û-| 4×@�)n˜wAÐG4Py•Ž\z‡·oЊÑ\`„Zý:8Uõq¾‡ëÿ,A‡b_¼ÖÇùT–èµZ&”wË;®�Ç"|õ÷-o¦vM~p÷iTö<Ü£öÇ>^ý+[¨·M8|áœ6² Çï–âd;±{u¿kÛq% 5Ïi® ˆú×Kº ë›l~Ö]W«ðçFíç�}ÏpIG�òÞWõI8vSt_C÷µ’šÖ‹FÑjFT-e ‚o°µ’wÛ[öÑß¿­6Ä—c°”8tÐ…-è•í!~\¸ù€:GdÎb’žœÀ¡ú¦þ{£ÒƒºÄþå2¸i´dÑ2ÄjAÑÙº€YÜNîÅua-…,ɲl‘èÙÉ®=»…W³�«jÞ}ØØƒ]em}U ,ìw_„ùçíû^fí˜Xþ´ ®Ýs�’Ód´•¡,=‚?/·6]�âÃõ}Ìãã é²Zg%šd¿‹?%�ÿƒëªÑô erŒƒ}Ÿ&UïlŽËtÖEZO{ÞÀ;êÂ@è4ÊÆ>·N5e”ŠóEÃßè*Ãd´ö4Z[Ÿ)ÎÈ¥î¨ÚÃRœ8“]w-á®uØ´o»'Û ã÷×ÐÂï À£u*H³fÝöÂx½Æßº9d9±ªs/ø�eûÉáð¼I‘N©›Ú·G`ú5Mƒ#ØRU|ˆ/Pü§Ó¢úÜGO£¯¹¸À„Rà>ž!@b]Ài)9GDÔã¯ufDíÁÈw³ãb÷ªÿ DßódÏ+~ýWMÇyO¢Ÿ§Aq¢PH€î’ Üe(M[Þ^ݵU©UnpO¾t žÌi‰½[ZÓ嶺Xyeå×Ëlj§ÄgzïkV߯‹¤^Bà˜ÑzkFÔêæË�½�}g«÷�ÒÁÁóŽù\òñ2sQßœ—77—å7ćTßÌài"ŸÆðT=Ÿ—Ý”ñ'�#wõ�Æ%œøŽ%²qœZ"7Þ ¢\XZt‘”ÛYèyˆyF«Ñš šöëŽ+,š¶¶éšÖ�-èET½Y:‰²¿‡ÊÒ�vPNÚÚ%È:æÊ¨¢–knêL¬Èf§<:ï g�oâ…2lcü5PÇó:a |ë(;ˆLàâ%�|ëÇvןâlž¨…¿}‰Œ¥'$WŒ1¹`mI 8Q~^¤?åd3|ù-Ló¥Â›Uñ PtŸYdžmvC ÈeZ~Âi@m”h®÷?lüx¸·õÓž©cäØU„RË Ä °¿AÄ?ÜÚÝÜx¿ñâÍÖ¡hBnð-m¬6‘aÔ1LH,ì_1ä¿ÔÁÄÇ´å]oó»ÄR‹G¶Ùòú€e"C‘”óš²o)—Î UÐBø¸Ú «©Ýjh_l«Ž{ÍyÁ˜l¥ì¯V}YÇø6 Ñãg(D»¹yü„kŠ:d…+ \ý¢~rÇéÜa'\‹Á:&‡ïBá ço í‡yQ#Ù!®è�–ÐÑü²­Ò_{®}ª¶�è£1XìhÛ}Ý­£$$S«ýôeyëÀvNQG´ÁšÐî-r´"Y�ÖÚ�ÒIpg‹5½šJ{ž�ö^p…Ü@oÅ7w½Û.E¢c·žuµ~á\›Nc=ÆN©æ´>¾²UÖÈnÑôü;.d±�©\l ´X7“?䮆A¡B½D~zµÀbP(‚÷jÕå�‰×ÊT®•iñôÕA×fÝ¥û6dhú_‡¥Áj÷¶lôÑï¦�\qI?c!Öm¾ôn`xk]p ý¹—ƒá™öøÖïg,òWÆWÌüŽSÜ5¸.òbñàní»}p“t—ÐHK)FK€Ç-²|~¬Ûæ³{¹Îº}Ò–ßWŠTj¢›�lÉÝr$sØüÛ üZô7‰·JC¼Õ5,)Òw�¥\,Þê2¨þ¬16î¥âľX´GŠÄK®µ{{%|9 Ùó”)Ÿc˜Í"éÇ·9�øÜ2­‚+RS-–ªhf+š�¤K�˜˜óö=[ÂdÂä %Ð AˆÜ¡M`çºÍFª™ÜÜé Ó„Ñ�†pëºc‹]m Ì{ôÈCÞ VU('œêî. ™‘Õ#÷Û¨Æ%±Ž–biù•’éqm騟[g®·ß60̘Û_‘œÜ²ôv‹Z—cASš™íµ„„,­ÈªÐ*µY‚os¡%Ö © #á%çñ¾£!Úb0§•™aÿeØeé³¼îl¸úÅ/iiKД@±–çå7h>X3¼,onfòiO39ü}ü˜L�ƒÔ—ýºµ¦¦í¶=ø‹¿:øÇ�—Èø±‚7’Í*K´–ÑNÅJ)£c6Š>»ÍZÀ€e‡.»S»×¸¶ß<²‚Ý`h‘¹¾&¯Èv½ý[XY;h\FS÷èíÙ_ìß}€:|‰`DßÎNd»’$�trÈe·ÓRÝHÐQk›šÃÚÒ!‚ÀÍ szSu¶µ:=­NV²¿1ÿKGÎ�ø°ò¢l·¹§·‰/SY nfÝÕMÔy><‡“’|3¼ÂšÏ‡3ö4…§crKÀÿËö_ØþfiT~Ÿ9;º,GÉÊy¹<+£DU~§WÞd«q¬å¤TU7Œv¹å5­8w´{Ór´k[ʽÉ8Õ}’f `üÃŽišÏæˆWè/w„Ë'PÿjhZª¹L‰~¯H£š`5,NN0ŒJÝg?BŠèV÷ñf"�ŸåðÄ~peæÝÆ*Íg({�£Ö«H…9<±X‡0V Hi>LD¤+kxuÁnL’Ë�u/ ‚ŠL"� ]ؾ ¹b .XB]¯PH8 ¯Ÿ²ó%­}˜+”ÚŒºjUA”´MÛ(ý<,Ô¦+è3cµ ¬úe�$’¾¹àakGÚá�ÚÝŽfÚKll7‚åÍ< ¨Ð¥â x2£ý�ù_¸Ý’Ñù ™%f#C !ôC>‚„úåå0áGy¸DÛH>ÒâEô–}?mÈ�ÙO×lã‡íùŒ¾Í#çhç–ëGì=šÿ~³vA<VlØ�pZ~«|û]hÕÀ©o³‘Ï\ýÉC×ig» }ôûýÄ,kÐ1�}"ïæGúá²Îi¥*ßPX¥–¦‡ó[dĽ‹Ù™É ?Ôìö°ø{+°˜~Ô]¡sÕ•2&0GÍwå›ö|øÀËÆŒJù­!>¾ªé˜ˆ¡ËpôŠm*‡$h]r=­]UÛÑ„(Ôø(×ÖVy«ª‡“%Ý’ÖÖžtTZ{¬Uúº«ÒšVéiG¥ŸUwϺúZ9J§rU¶ûZ×úúÊZ°[W#‘ Ð�ê[øÉ€.pg&n0pëÐÌž»¤t‘�\¾LOÓºB‰�¥ 3q·ÞþöZ·�: Ÿ°QÓ­ Ø»×rþLoݺÝ^‰PpÀèx(¬ut‹ý¯ùðaõÍãA`Öë\¡L5> &¤‰k~íÄ×¹…àiZÛ¥£jPHsï±�ŒÏ=¼íunw×´—Þ¶�ç¤K–ŽÑ«À…ˆCwñ2 _ÕUáÚSK¤Õ»ø:JpWA�X—§N¼íü<ÎÒIO‹B"<�*Ž»=4=×�¸©?8®gšÐYu*¨}ζʨ;/ŒÈ=8®tÜc6BÞ¬Ýr/x.�tÅøÁŸœ‡Èd:P%‹!PßÛ+f™à…/2:åeרˢ¨ßÁVµÿP[ïq•±ÁI5Ïj/|)[ÜqciEXIÚ*[®Î#9¿!½9|=Èüœ»´¹«j1„Žçi6á„^f~©¦æÂ£ z*ÎxI=èZ3*Rgüâ(†+B�l^ ä^iF„Q‹ÝûåP¹Xðé0ÿŒõ'KB„Ç‹Œ³Áê°Uxsó¤]hZR‘ðfá[=ÑãÛ>ÝÊ'Î×Ö_ Ñš"|*ÒɃTidXèÚMB›ŽÙݹMnÉÜnõK×’}å*|úùÝ“a˜cFÏn]_!¤k/ñºcäw�Á¢=²u×ÈîÓ¸Ýføx›u,ìýÇÌlYÚƒ¶Œúi %‰À6ÄŠtZ¿Ñη•Ju֜䡺êXõ}­Ò:,ñ®·[â5ñ¡äüÕ@#TuÙª/&[@·k��vü¦8]Uÿ mp[m¬áÅÊ"(Ô£ZZèr› ,âeRaU£D‹}qq…^Æ$R­˜i¡QçcÕB77™ìpíà°Ñ$CHà0-蜟ߚ™a ÿº±´©tgY òtI¸`|ÀUv(®:ñ×·ñ³nQÛÓ�=ûîEÖç€æ–LßªÕ %‘²½ù±w†ÉMO“~ïmZU(§ü¢ù¢ïJÃܽÎÖ?c3~(üZ�†'¢˜ªÖš²!�§kImÓ8ÉTãš®u¯éd9¯i9)Àà6ÀY–Œk9øAªXr–@8©¤R[5—·¦ÉGÏB¬?áá€Ð�–6…ÆÜm �:é"„¢‰Á#uJŽ…ê‹jJúª¤ -¿#€…±h¤¾C#u”jDóOJs<êÄ_jŒ!Œ •tížmv{}M9’!Oû¬ ”¨l—ÞܾZ „ÃuµD�/½Âý\_ î æÉ½‘ÛGè«bVS!EŸá`!»e(má(מýÇGɇHƒqPµÿéîk}ûÔÕ«Œ‰™3¢0 BŒÞs'*À$KM±‹qõP÷¯TäRÖ#÷� .‚!ÄR×Ù]ç_…Ž´7Žó¼`ê+ ë7éMRL“]a³é$éA«qïé®Þ)^j)MP>|¸J1RÇSÀ*p)ð‰pš©åäQösàJƒ~zšeò*-«úÍ 1 sMe�&”0}F%¡­ÕÑŸ±}?æMÐЩüÚEº;‰|‰;Z�Ý Ç”¤”ŒfÍ—ÅJ2ñÑCÿ߃ƒå`ðè4ü# ¢g®ï`†‘£´àµ:¹ï⟠Œ8­8â, [V E†(ÃÌG(.`°Û¢»­;Ø‚;CóðKѵ׉Øë ÛÖün46زӔ|¨8Bû0ܱDÁ¶æ8üƒÀ0™Ò#ڜ u°øÜ_Á2‘-;šGªÙã U5[j¹JÂV�D81¸ JPyÕ$$ÚG(­>ÌÝ$;¡~e³´€—775_Qn[å>楉ãŽvr8ÔHv†½ñ¼ª‹³^œOz°– Å—UˆTÐw�ÀbBQ~¥3^ã\^ºÖž¯r8Ò'¼&V;Öë»nï°X@FÄ�tCöY_�é«_`M�T…‹½3f"¸„s7àóáÃJ«Òq8¿Ûq˜Ëã@»:yqµ‰8Ó³rX*Π‘PÍ—á/EXщAä"·ë!œáB¨(€áÇ›­ŽOqsËÆëá%Pc&ÄjMúG1Óš'-:Åa)%�Sø%Ù$KˆÔâÞçR£èÛGtÁIú —Û!;NÁ‚u«­Ó„õÕ¡™´€á C^ÀÂVŽc#µTKŽý«qÿƒ]’²q#˜7ÌOÛ¼ºñú½íºw_Aÿ³™‚�ª`\³8Csº+8×ð‚êã+8ÿjÃjýÞ«¢ì�2P>)àø'½i]ϪèÑ£‹‹‹þÅã~Qž>ÚûðhZŸe_>b�¼ûøð> ±+õ4®Wp-V0ITšLVÈRÖä¨ɪs‰Ik.—3ú‰Fヴ£6aLˆoåóáê \Y š:ëï—D‰ù©IQ�Ò>‘?p#:©QÊ,31« ú+ÅKwWÎf‡&žãôjD6‘ýÞ}nªéFJ÷[>ã2—ò�=‘››ÔÆSKîÁç×s4ÅÎR@TZD+3MýŠÕÎn\¸O©Ð“&Ö\kêLºMHƘm¼çéît‡1îÜšC:K?©ûÚ »®#‘£±››5§TØIEvJ1JIL2]õ˜š„Y¶Ù'ך×-!™ý%›V�ÖêhºÎîÝT^¶i+þ]\Ò¦.‘`ç=m …Bz‘<_•»¯Åµ½ <³y­t Õ"‰YçóÏúŠÉkêÌG©.ÞÞN£ ¥a/-zq¸þ40ÄÂ7c×Ü7»~­‰”'tîã,»¢Ûó}™œ§Åœ”ûíð9ëkÀsL�sÍ31è·]Ó–�×m` ͺ÷q‘ä3ïÜ‘…R¬[ÄV•1· )J4Ó’ÖIJò³QX·�_ðë†-Z¼ˆ~Š…ÂÃ}¡Æ„ÆÃØu07"ó äç¯~�ݯˆß�ÅüÖ¼ää;Åw¹ÐM!Õ™›B‚ûÕ¼ÚFG{‚6­XÄQÅÉT´(@ñ¾Þ{û†($|FY|,ˆ¨s ‡ ÿ:A!Eÿ(ò M¾6²¢NR%q ÔNÙ÷îAå¸(;Ö… í\çÍ‘�0-^µÅL»m…]e†™œ)¾©’ýÖË•µƒˆGåQyGäÌä’Þ¶Dµh :pl/“„U†F�5z+¨©‹ì�ûÀIÖ-¤ ¸¶­“q�2“[ˆÌä9þD¦åú8’D[¢ÍºMSÐX,U›GÒ÷Yn ½•"oAuDµ…qî'*}¡á…Eøð{uyˆ˜ÔHfÏÅÍ1š�âÕGE ]'·†\Å8%ó–j¸‹Å ¸¹ñÐk�‘Õ•¶H…Ï}è ³Õ&/ÌU£Û9`�”Ö鿆“Êfdþ&$sáÕ|O^e†ƒ]¢Iu“ýDAî�úêó+FÌkp–í×#ú÷æ&‰ýû—ûñÊÉêʳƒå�Ò~ à C9mÍ”±·§ZÐ(*Àf~�À÷÷ü| >Gý}Â�c>)ó%ËêGØ#M²À4óF±dí«¿!³¢×ÀL’iQé…Ÿd¸‰�ÙÐËOßól4?NÓšmOå…¯™Øg7©ý}¶Ï =Eš~^ÂíœÄð³—鬯õU–xAø´Úûõä×ü×ò×ú×ó_çkO¿^…¿^M(íÚê ý‰ñßõ¯éßgôï þû%üû*aî@L+÷#ȇätëræíÿûÁõoYsp„ZoØ‹ëõ°9 ½S/P¹»¾7k$é¯}}šÑ'¡×ó„³Í·ÙõyZ¥[éPô:ëï/d°h—†Šw8u,ÿ¾Hü˜Áˆ‹Â8.™MuÈ?B\œf$6­&&ç‹özk_óKªÞpøƒìH´|f ­„Œ‚c�Cìt §:JƧÚ*r¤ q“þ9†ÏéŸQP¬3 Õ†7Â:æü¡@AlŽJ£”.Úêæ&×oWnP"R_}©ø7éÆU\›QëÚŽª31+íÿ «‡Z¢³6ú�E(P¬†?#QJS2¸±Ÿ ßä·ˆKaë¨_<´JÒtD_QöJ³»Xð’ÔúŽ Š˜4Þr¦H�»Uî �ÖI«}"Ö9$Îdþ“ÏG½™HÅš¬Âô?ë§œŽ¼<éfìd˺?d&hîKš îQ²€úd3|.[צQ½_Â%"pâï嵃™”> ZMƒAŒÙÙ8Ñ ¨¨Ž¢ŽQl/F×þÎño@¥öO®PÎ ¹>÷¯¡$ªÂ?0†ÒÀ–`-Jö«ƒ&dhßïtT�žà2ÝTåxRŒ+ÿó&Í�tAa"=p|ÅSrvœL°*ü.h7hC| ¥JÐD ã×Êüb]ÃtßIÉ,LÐÕ*ùŽ£ËeïÆ[F'"^ãÁg>�d<ôâ<ì�¬xÜæµ·S ª¸"@Ý—ìV“¡]y÷„9N5ž&g1`ü¼‘z¹-FŽ..=Çç6}ì¨Ò0’îE1Ï'¯‹ ÃÀ-Œ‘š[P†/ç«�4wÞÊ¥é1…-�lˆ™ vÉèIºÝyW/R mD~kK«hàËN‘0éæB’‚Ô†ÎEQÖÌóˆbšá`P¬=…᣷%µÝ;f�#¿”£"#I€"aü[Üc£ëA[H@ä5>ÍšÈXH=¸+z§E-ô þƒk1‘&8BâNzò°|Iúñô<ÁEÜBŠq£²MÙÿÎ5¤.ØÊ­áÊÝo•2£$g‰?ÿ³«#èÅî )bÓ난,β’£O+Ô[HºÔê;»ÁÕ©º—¼ùR!Nâ«&çɧU¬üT$bEy�Jg0cÙ14õ‘ ]§�ö¢Œgo€b-ãì=¦v§°ŒÞÖ‡;<5¾í ©aYíõS‹ÚZ»ò.kgte$ß½ÓJ•ÚJ•ÿÁ•‘ɕB‡É=Næ ÄÂq.ÊÛÂ8,ÄšeÃÊXžåµp¬›rZÍT¼� B`:QcEÍ•c‹vBýs‚g›—A'¼•a�–ðe#Uƒh#A{²V"ï�`t½°”•x˼&¶ÍeàƒX‰Y¤>L&3&+Yé@Ç)AÙs1ªáF£qem´PžŸ‰ £1¬:¹$SO\Á±�¡ŠE„.úœo0i‹2–^i _sô�›7&�ß‚½ÁC#±CÕ:Úˆ;€³á”¸ × ú±} KãþE\¢B½Rtù×퀇ìMÙÿqãûíwßÝ÷kk@w?HÐ÷þ?úÚ¶ŽC5†æFäÆnØXIIC,N�`P�†æ}êöÉ)�ºŽÏhÊk¡Ø°T§9»H�LÂKº;=êºwžÆ½áÅ=ô`WÏ€‚žMarœŠö\�MÈ{Þ¿\gð;­È¶šÏ°EhÀGZœzGÂ{Ž`L.évÜbD¿l¢>us­+cP´¾Ñc/.“Oîš]©ÁÑHš;@)÷D€}:à€ 0帅۷@gÆ@¬¬r(Ù5v ÒÜŠA šS•F¦$Z½ƒˆMë™Ü8ÿ„ÇÐr)Jt¹H‘ _pÝ�Í€‰Q(¶¢=EP‹³ ÎÜÄ»?qBômôŸ$˜„Ï’ Á#ÙÌë–ñE´B[§„, /'É•¤ªBI•È^¯÷Zõ¹WÞð·Þz¸U#'â­hWq¬;j*ª�,qd. ”³tÉŠ×ôgt£ñ�òþtGèW½„Ï!V‘JmÆ™ 4ö�ršZêÎPÀÊMØGûòçA”ôľÇ¶¥¢ªT¾°úC•E½› ÷(îãIš¡�éØÓŠ&Þ£ó‘T'¢¼^‹¡ñíRÌ4Rè¬Ä1H¿ß/Ø·5~[™¦ÏfŽZ7~‹¤ÂšKPlÑFYÆWdêá‹ÑKX C¿ª…,ÇNÙóJb*nr©r%Ñ+V¡øâ¬8O^\ù¤ÅÅÊü™ô«J ×>j\õ–އ�þíïÿ;z4úÇÁr=Rê¾x,³š 5»4·p!2Žh7.l 1�2}°y‰¼Š¶ -ÕByÓ29¡²J••IFE¹*ÊOß9²p˜c¡•ºÁ€V#²j)P-´QÉW )¬2¢Znq_ë¡JVQÐÉÍ�N5rÖÉû§7�zh¿VŽXÎÙâÃbÜßÙ{½õAîdáÇÁˆÊß}{¸¹ónoëÝž"ýcöŠhúHØÚ¨âÍÛï¡v–æ¿c)Ðôa5M¬–*¾ß}½µµÇ¢õdH™Öœi§¤ŸÅx`„ÑE‹*5 áêÁÐS�^ˆ¯©Ñἡ_Z!õ4\oè‘¿¦ã+úÉŠiI†O ”~y�_ŒonàŸáuˆøG™SŠØrdÖÌeL °{ å/=s]V®`g˜Ë°ˆ b†eÃÏÅÏů“eÿ¬º©‚уGáœJ*ø5c.n@ ûûûe¸[„ûgexŠÉä<8`I§cuœ&cÿZ]µ‘áx[7¦´$QÌ'º1þs=K+€¿¼Ø¾Ø,æÙ„.ïø¸Ç>ì�tQ”h†¬Ýó_V��DL%°¬èÖ`‰H8“ƒ2±µ–’y95 `Î*dº5Œwvˤuu�œr¡OXJ+웼5ábÑtᾋK“%þ\ù)­]Ñü> óXô·_Ð{é$Ã`eý½í·¸^�ž¡e¼}‡çM‰A%$ébú–Þ½}»õr{c??;K&)ÙÒ%ý×;Ÿ°�) gjãÓöÖ�ïw>ì ½ó4¹À»ÎÃÏÃÔ8§‹l#Ô¼å™À Ç¡b~S†„z‡qµx¡]�á²xp.Zÿ7EÐð%€ÔBèë‰Î�˜?ˆwUWŽ @¶»½Ñ`àÒßž >ý$E‹\´XZzË43”M¸Q ^Œš}4Ù›­3K“›ßï±ÉÂBÊÜ7Ê5B¨ùºû%·‚.úV0K#ˆ0âç=KÛ¦J3ä7>ÀhINâyVG­|ÌËd\œâÝ?‘½# N®ùx&•üXÝg8;!/ šÆqÿÉ«Ÿ<Æ— ü¨#z¼qu ß}‰Qbëæ’—3ws®ÌTè·’&y‹4ÉÍk SÜ;�Ï®+)vND’HN¤äÂ'ó]Ñ—M<|8“�"ïçó32?„&y´xušÔú+ ¤£è+s0õ~­ÜcX#2U-Ge}ƒP$&àƒq­,j£Ý/kKBÆÿ6I"È…›š°,ò\r…ÁŽþUèiÎ}¥s’æõ‚pá6"å³t7z‚ÖážTR˜4Ú*˜y=äÁ¬hsUmâx‹~~�6j™ÊxÌøŠº=p&z0”27ÿ:ø§ïUEl´–<ŽÖ„í e°½' ´ükµŒ¼÷¯Õ£ðÒ*/¨ôK�MÏægø¼‹Ïñ À>má“hàè+’'kò„Íq;b¸_†ý~?ÅÐN̽#¼—M‡b${¢¨h†úíc5Vš&×)“ƒÃšmñ�H5 Ör\OƨâEŒ#A#ÜÅ–:É¥Hö [©´ð.W÷ïµ4{½tµ0*[]F&ô§†«¦ëþÃР•H¬mÞ^î²iüRwŒ¡uMž*Ó"›$e”…Y£à%‡,9Ò¼½Gìˆh1b¹Ý…¶Y1WZ(Þ�ù­s®áxÜÿfcsëõΛ—@3ñËGµ1ñ¸å tä]óåÞÔ&Ñ�Äœs³í†×=‚e͇Ûc?+ƒ:‚êov6^n¿ûV £ü»†ÁÛÕ‡P÷œC �ˆ@úw €ZÕ»O‡¿ÝK*ë¶þ ¨“®ì1w»'Ov©q»­±DÒaâ^6@0— XrLnÑ–WÚ\çÅ$!ßÃãÊG¯Æ°Ô\»ÈŒ2‡óûº–±îàèh·ÄöXOZ­7Háâ Vnþ?Šñ-ûõ¯ ðûÿ < ßAC4�ÈÛ÷¡·|yÁ�ׄÚ ^ŽÅoT±¬î5\kð¶¥5àT;·j2ý)‹®I%ÔVò ¦l4?–™*ÉO7YúE©À—¯ÆÌñÙLΑæÛk_çäï Œ@cúß+â}†áOÉ¡zP [níSίF.› ŽÎâòwr…`�öâ ˆ·8¯²¸FU ˜×xQ%ýÞû,Ab¡L�w"gÀ°†ø�î©}ŒRcù0µ'·ªä’¤ag¢¹@ªv ¦Ä®�ªUµ&¨%óáPí`Á¹ 7³ªÇIù¹¯¸f�:Ó:^R±¢Ø†ó8°L{ظ†E߇�ÊtK—~sã=â¶&*®Í¥¥ã@Š-à»Y<þèôíÜ_;€€oÒ{ãcã+¥¯)(’`ʪS‡"‹•K=a)Â*`+€Óÿ)ðŸ ÿã?s8èá M…`Xâ››±qÙŠÀ�ò€ŽÉÐ0eÁ=øa¬_„ý˜°¿öh˜Güýä*û¼E�‡—´UÉyR^ÑJ¸r.÷ äBòOarÃ2šðmj(ýñm-$YCZ.�þ&?]³«å¹Dæ:­À_Ú˜XbÝF$D»f¼$öÙµäd,vFJ¹íÊ·cÖ‰]Ÿ@šRòQ*ÜÍ%ƒ5ŠeÊÒp.úÝ”…cÜcôú`0;V«¸'Ñ#ƒ’hIï1–©s,8�Ϭɩ%Él�Ã�W�ˆf0·èJf)jØŸIyá`cìz/­`ÎtœV£kåI�õÕCHùô°Œý™55ð_M¤‹Ç›}�¯»OÁCÐTsÄœ"¶pÃãØ¬X¸3Zq E˜CcIÅ0úöÙ‚Èô¾û+õ¾ƒÈÂ&áY+0�fü˜Ò 9$2>æÃò ^|–w »žÐÎhÚHkÄMKð­Er-)b³Í±ˆÜRñEû�-lø±ÜSn¶°¥X[»Ô”J¿é÷¶„Ø<îyo™”Æ; 4²ˆ`¤B²#‡m¤G¨ûÛR.³LŒ¡WÂÈxÄ­édŧ�‡^  Î*‰;�—­; BÙGKÚ°4rµ_4gFâÐß1T™ï#ÉsÛÆ;Úf!_Ѭ“|pP-o¡ìÚLIÁp;L“ Šœ=êóô6›OÃo-�ÍQ9ŠF�Š�õ¬¸›¡êÖâ¤"iɰÙfî£öM©ÅÔl%⺇|LMĵÕâYÄà2NÊZÃÌh�©'9êfŽAE:KÍ��˜ k!Ø«š!S[ 5Ò"3T€®‡R 휚®ÉvÈGEXÒþ‘‘­µÐl�»cN5ŽkÑ­.iÇ’ªµ8R• ä9}_q'‡ T2®„G¦)¢ÑÐÜír¯\'öR æ1:2¿(ç™·;kWäÿ‹Çíš.Z” ³y¡ÆÃ¢w;<ÁÜ•`ÆCcªó»q cãQ)Ìf<‹†5bE¸X†hnZ×ó7Ë%ÚǦÒÈ^è÷-Û|$åSô�býL‡çeß3�ãT²ÄKÃ)†o—2ÁéþWF3â L‰Û…iÛa 2´ÏE¡»ÌLZRžÓýõ”Ê&VŸïs]õI½|ŠË95?Æh@Œi–†F¸ %\ä¶Fl¤ò[CgEÅÉLý/±ÒóM÷Ûk"Æ÷ØßDP”úÝ5ÀXŸø“ÝÀî0j8å ?9óîÅÑ¢øk}§†buŒð’,ˆõ.¿´§!zûòïÚÚT�Â„à‚ »Ì¬°úW#|ª�‡È¥è˜ Ehxì%2�ÁjCÒ�¡¸M �¸xÇi0š ß�#ã݆önÃz÷F¼ºt2|3f˜|i8œ<|H~µ¬Ú„Ì$°ˆËœ'üDóƒLï¥yŽX�B“R˜„¢¡ãK¾¡¼nÈdyü mzÄ`ÿ»vZ)5¦�¿uLúCÌØâ”tž œŸ ÂV€XÃghê÷ÿ‚Á›báXž<<%,!3ƒC?¾<†Õ‚bM†éÝèaŸ¹H×Χ}Ñj�Gr-*¬Äíè5ä+¯L”ÏH?‰/x¾²6ràßé3Ì9QKuÎÛ#gÞê Jäpˆ7HH1„Þ¤H*•Œ'¦&È9Tó¹ÞÓ£Iñ9èúo™D)ì˜E»!OŽ¡s”%ã÷­V‹ø½‰Sþt¤ZóþA6M8HK…¥ú©§d 0Nެúݱ@í£ì$�n=ZäL» =ŸB·Gä¾7|@îÝGHÉU,橊é xüZ~8?0_(Ò0]wim¤ž£né9ÐæÏR!8Š˜[;Ëk5l‹6y¾�&SòªVæýùqÿàž2’ ‹;TœÅ™l„cWk.‰Gk ·3Á]Ühi¶´GÖ¢Éà¸rÄÆkÝÓÞ^n ¥ë<¼/³ó³ÍÙ†ÑNÎ!?¸5ð0­J£ØŠšóô£cÐÜD> Fz®/1Ì»üî%×’×’ÃM¤zƸ-:æŽH‘€ª‡ÃæÖ›­·Â[“ÿfþ•{[oß¿AÏ3ôÖ^ãï žzÇð*{àð*®Jw_ÄÛš¯W>*â ÐM&\Ë�¿M•¹‡,f<,Ň<oj*áþÍÉMH%œ.¹NµÚ:Kk`*Ð ™ ‰æ90ËEvžL6ëËMàDkáÍv¨z»¹¹>Mê�yúÇ<ÙžD'hQœŽçUÄ[oxó“¡ùe_ûÊÊ Ç’ë ¢€³ô,)§�&ª„˜2»äò®ŽèóŽ0EÆ;²‹Ô¬!-rT…ãú2â Y‘h)d R¢¼\q›d}¹­O¡�azv,c9-|ÉjUŠB3Z–©Ûi_E¾ÀŽjŽåÇ�v !2˼×§Yûóu7H;}ZTn$Ÿ˜‡~�ž6t\>Ž)B]ÂwD’­¦mÚ¢OДÕÚÏÙá g®GHxƒ(Ñ÷2±ìd»LM€Œ&k¥æ‡Ï�S#îÁó, ˆŸÍ$C�×ÎXžá�Ä2k¸¾»ÊjÐy"–—y§Zr”cµ›äh$ä¹$Ø;î[/½Uæ«Qc•’ ÿN);EÀ3¯E^BCÄ7¶Y^ U>Y±…H×p�Ó,1› ®÷yȞУ³ã¸CV$„©ö‰ŒÂsy„ò‚öF’#FÜÜìÀÎ@øŸxh¤“±(°,ªòó>h”âOP<=HCºéqâèšDÀRqAz¤vU~Z´tö4XŽ8q•χ«ê šF›ovv·"ÌÑqÖ!>Õ¾0æÇ—ŸÎ `¢³¸~?T5bÁ Âav¾m\ßg�ÚMI2(ƒu�ÔþŽ´rÍ�o´ƒäþJˆŠ¸¾»x»aXBˆFéÿ66†&öz,ý?5½yo¶ß}ï…/"ïÅΛ—‡{[?%þâ•o¾ø°µo·ÞFÀñë�ÝíÝ-QéõZä½Þ" ÓÃ7[Ÿ¶Þ¬AÙºU¶e�­²ÇPöÄ*{e_Ze_BÙS«ì)”Áà^ï|ØþeçÝÞÆ›Ã1¢ËvämÃÓö&Ü›mœÁîÞá6@||÷}ä‘ï!›ðΛÈÛùðrëÌ+záûÈ{¿ñaãÛï_{á‘÷ÃÇ�=Šë…»‘·»÷aûû­½×v>~ûš÷²ûvã ´CDÑGXJø«¿§ç÷øü~ëƒ#³÷bçåÏ‘··ñâ ,0ü†¢—âysëÍx~µ³³'Šð÷Ö(|-JpE¶>ˆºød¾�¢äÃÎ�ð�½Ýy·³û~cSîßÇÈûøjãF˲7Xh¬‹0ÇýÓd·DfºË^üâY ëŠÔýì5J‹bÀd¯À×ð‚ˆl<…æÑvÅcMLãj*-}¤Õ4:Ù,Cû½¤(ÐÎâ#Ðx"Hc:üq wøÍÍÑÞÆ·‡˜åâH¦>ÅÌ@g0fІY�ÒèhwoãÃÔM›#+d|»ãaÆ�H.èš·�Ìç¼ÉA²„èÝÓ®o™v}0Pt¢9í§]©iW0í²{ÚGDC²T”‹§\ß\â”[¬[Ø:zÿ:êáH†DÀü-»Ý½�·oŸûh~w5oÍ.h,Pü ,¸lØÄˆ`lòb:»’Ve?9ÀûU^MË�Þ£ç^tôü›GXéùïÊ€ s¸b$G�XTC8°x�8§ÁŒŽw4¤Ø¹ÈµÈ~æÞ8?Bc™µ01cÏtVÜ­AŒWK¢åCAN}Ï驧 H]’ß4&¾þaì?e¦4¦…'éJÛë ˸©“öNËîeRÄ5ÏÒ÷C—;Ãab…u\œ"ª±GP£“;yºcVt=èáuZ…­éJ“Ä´¬ÿ¡@iÒËdVO£ÕPcLDÜF’3ý9Ö_íÜd4Bcr½œ ˉÚ@c¢WyTÞÜü<&óA!À Í8\‡+í»ú°‹ßŠ–,L;ñáI;¥è¾nÜ1Ã-³Z´u XЉHaVjš¤é‘ˆ;o7&E§#µs²ûéÁð™ÿh¡tX JÖª×�M~ŒA"`Ùý¸{˜�—·kéb,†xD؆Y,=?2eÃG#]Ä߈U-è´½¨Ôº % Êï©ÚPFLÐ0îl�2Ê™±¥å7Ó«ÞܬÙEBUG¸C×[hJaC‰ÝÕúsOX{v´¤ò1vͱ ºrX²iÔ‹gpÏAKëÔÏ¢+�¤C©#´ --/Kú…ŒH)*©OˆÏÿÄg‚\¤å1Êò-1Õ<ëpW°%`�oIµ£l×\Ì`HÁY©š®U£h&b¨++ø€8u‚¢ôùªf+ÞuÛÆÚ³JþXó#t3Ó¨ÈpØJÃ)Ú’™HD½ÐPIho¥4+»gb£o{ó£i±©³!Gï@Œ‹-úeW<V°ÿ±ó«Ìá)†6™æZPЗ©Û¦–Ý˦ù4Qè!ÛÌ<é÷S4²«‡Ãš ¥ãs¤.½ínû ؤ÷²+á®d©Ë�,àò¸Z—Ç}ÑŸµ¯¢ÔôÀ¢”¶hKˆž.,ÇOã`�æ(€Øû�7œ'§ÐŸwƒA´óT·Üg¼sIW±?õ ,Ô¬__¢<ÏLÜÑ IEŠ66±ÕåU,Õå~©‚ Ï¢7ÕH`ëå¡jÄØ_|Ï8bÌÂËpFƒKÓ<†2à²Y,".‘6Ï7•6kºÒ;;YÁÁŒ îÕǾ¡ V–úhv] x`½Z:\.Qbc­�·UÛ·A�¯„yoÓb^qW†6z+=Y!­1ï%vœVŸdñ÷�O‚³}$E©G=SßÃ0c,S,�Q„å3f£º^ê ‹¦Í¨=vLw�ÏÏŽ1ÇÁ‰9jq´ášÉLzÇI}‘ÀóIZbÄ”|‚¾¾EŽÎýUÕ÷øuÇ,ƒèÞ~°¿îäA6ÚsàXNÕJäýk£‚õÓ²†2fR5\T*fRµ¼`¾`°Õ‡æ Kƒ‘h8ºC4VŒϯ§ŸÆÃG¿Â÷­~Ý=ø'N€ÿüÕç?fSþcÈÿúÞÍ�x; ~]_�N¹ì»±Lvÿ¶lss,ß=ébù8~ …™÷ñ[L»b€ÐN…ÁÖh¥í#Ã’Ž#Tókp(øØß!§0ŠHææ¸†ßç”Ä™ò+Iƒˆ6[ÉYÎß“d†.’ÌÊ—ž'°øMr�¯ø0¶'¯H-L(¦qÅîê:V6Ò_‰\Ü«p¿8KbLå!œ5Š!Ža˜Ëp<¯êâl{¥�ž`ûB <¢ñð[¡Ít$¨ðn¤Ö’ù$µœƒe9›íö„‰cÎMdÞˆ"÷‚¨ËA7’yW`°»/1„¾>6ËÃØã�vùžrö•�tèož ¦ �1enoȪ¤¢Éš¸`uQ—º¿7êQ…Ma‘ë²:¶››’]GƒÚ’«ÛªN|þ2ñûƒJI„_sL²r9帔7Ë5×.ñšô­™rløEæs¯ƒ‘в+›Á2<Úã¡(7¥tÿ¥E_�edZ ëMô†¹zp¡WèDtD9I7¹Œ€Ì­ÄJÂÀº/~Ä�•H¶ÒDNBî0�I™j™VI¬Mçb#Q,6�­ÛùæÆç»;¬¤«¤›†LœÜák™jŒu&E³&˜…¹‰Ö‘˜3�Ðê–©½z–ûUÀ`° U`¿›W¨¸—Àm�×77Šæ+[‰IÛ*Ön³È¤ËšÒ^>ËB1qs ­QLCÒaE¸xû˜&�…:U&;y2RȰ4GJHù¥¡,µÉÊRºšäš$žë9 ö� B3ê}qˆW1¯¦x(—׃ƒˆåØ YpÔjDzvŠ©“x¤ÿå5¬ ×H| âƒÉû¢Å•RW ÒI™Ù˜«Š.óN ÅC›:EhggßÐ5½ÜEÄÛ˜÷† ïr�H ñ‡ûh¨¿ÿH§±?KbôhšÖ<€›1�á¨EEˆ„Ñz·Õ¨ROèòÝJ[$eÖ–¥õwcß” )“ëz>ônàŽ‡?ÿú—'°<�Å)en«N=%�/çmþÒy ²ÛľsÓ¹¸q•îɃt¸?«E œ¬°Ùü”ù¹ÏÒ/Âÿ¥E<”_ezšæqvˆ2€(®md/ã_CI„jù üc^ãfdAkZžÌ£Yí· ;Ä%‘]WaAøÆ^wjaP|Åþ‘ a˜=R]ûù<è�á*|•Sj ùåª~™Œ3󮯓ɛ„‚J $èb씃)&ò‘§O„+¼®ãS²)õð¥r)•V³ ¢V]tÏCù¯ï]ŸU§/Õ'Uã5Å ¤s/«øÙƯj[’k€ªH%Di#È„�ÇÛ‡ã5×LtœvÌ0C³eù/2á៓ùÇÿZÑ8¾Òldâ¹atpÍÙÜ÷HwbHT¥hÄp¨C7�‡ÌÖ»˜ûI‡²J£9Ø!ÕÅÑbµp©ÂÎà,Yº»‹Dw6§Øè- Ph1ŠWíÅêÖFuy©ß—‰8¤%FÌ?C¨¹²¶høÚ’:QD¡ýDɸ|®Õjµ"‚y{T›{T5 ?€ñÈšPŠUɇÄ`MP gºH×n±Ye‹×:êÕ.ñZØÖRb¤J7å‰ÜÐ9}Ìþ‘.…û-eˆ�ˆó/æm‰„mm*!Rðû³4'@>˜JP,ìí¾öÛ¹‡—<Ùà¢ê4³e¡W�|\òËÙä}e˜}0’X¹L¤ Œè”6Öpšë¤r¼f`Ý®ž [�3º°r« *`�´ªï±†Ž†ÛJRSçJš+áÏáßmrá=£¼Bªå²ýµ©s´ö¢Ú—Á_o¹åÙ£Ñ\Œs‡¾»šk¹\$¾0×dŽ Êp$Óoo=hÕÁ�Gˆü;3ã¹Ì:¹ï1·Iï çs-Ñ›w�:/¼ð°îs{ò©X*oRŒçHµéo_ò2|\L®ôw/àùz˜Í‡û^Ï ½_sü§Ä kuŸNçÆý;&ZrHãã´¾H1ÏòÄŸ!’a™Úi4Û™ }®§o3ùå!®wT†ìÀ8DiHI£8œÆù$KJŒŸ wš>|¸4ŸS„—ÔWjN³â8Îz¬E”¥ÍÒAe@_ =à,÷pÿ×¼Çÿ³+£Dd\•`´T¡›–gC\ìaÿH%޻ޥ#Ù|(rþ°ø“Òyç º�Œ`=·s ù�ì”›w»Ó¸L„ãȧ¸ô�w™ ?¥~ÎÃ"ôŽQË—ˆ@zŽ�=Ç�Ḿ¾ðµFú>.IpŠÉMÏð€\(ɧ4¹L[3% ðð¡ =8ÑãÎàÛàzÚŸçÕ4=©ý³@êø¦ûÓ.m×OÉÈxKKòSâoHƒ ýX2èLjX(úÀ#Mþý�>&p2«ò0�’©D>28œŠpýº&Š>3(ó197à ¤vJ¼ÃÏ‘4c P²àáÃsMi÷sø½ä®®†Y퟇Óð[ü'AxI\éi^I’ ÷’§N©}<U�ÀsÊr´Â'ü¾?kÝ÷ÌýQ䫿/fŠ “ºöi#w“½Qc* ·öuàô!9©6ášH¤Óa#óÙÑgq^¿/ŠLP†gå˜A%YÿŠÌ}Ð,Vá^iú_¦f!}s‰9ùÑÏÏ ÕÚÇ*Ùº¬“xs”cŒÙŠE²°j8矋ñVCî˜yˆR°m=—à!?obˆ¢˜ÝJQ†>$¼OjTª«øÀ‡ó&;nóäf8Oº@«ËÂõ o;½’[²4Hldó2yÅ·y7+êÊžŠY(c>~€Qž'öZuÜŠ ¹C±‰déº:¥ðý8IÏ“ÁF]Ä2ðÀðm®‹yš¥HyJA«ùн#cY.g<.fhPÀ‘ž|‘zð$Í’poLP·;?�]f6¯oÿÑþ¿7V~‰Wþ\]yvðè4ô½`þáíš�õ�iÀŠ:Å[Ë÷�cر—X¸²˜ÕI†ê/ßÛ[†âÃЗ²¯áóëö|˜pF1 Ä*ršÚæÏ»@{³t–„ˆg`þt÷ Ì§9ž(¡ËHÙ�xDHú:�¡²äÒpxÈÂQÐãë½·oDl¹®ÑY- 1•N’Òkæ'™”êzcE†É�¼5Ärs3ƒ>/Mù_ŸO§xZÈüR“¡žVÌ>–�/ÌåJ!–S){7ç¦ø"e9V$öƒMc8…ï*.™ºN'Ï?eN'tõyˆ•ØÂW~ûë  e˜>JÿBÓQZä^wã„VÌ!–ëìŸ<_»¹ñþé- okwe4§°\:Z\2k3�’øžù¤*¢^»ŒÈÄŸy(ÿCŽ·5Št›Û�Œô~™œ„ä Øè{¾d,Õ�•5ëÂ7Ûº�{—ïŒk!ÀˆqíCŽÉtwóxVM‹ZÝÑ@ŽÍ�µ�¤. ßqÁ i(M­Žö�d_ Çâƒ"@e ÆÏÌ:ëá\ÔÉXA±U³ÏÉ�½<ü‰ÙeÀÃ6�m :¿Zw(úÈÎðŸé� ˆZ—>Åxø2k90k€ÄT΋:=¹Ú¶.§�•Lðj~µ zs_'åën¡]«AèJffßpm%Ë®x‚X¬ù-×S¾�S¬‰wStÅîlE³ìß?$`öêíê—s篃˜ýf:Œ58ð°O€é š¸¦‹©WÍ2!m|J)m� íăáÈÈœnÓˆBUýi©B“Ã0›¸ÜBÆ:ŸQ:•™ô"31» ó!ðEŒ_nÖí«Õ¥ÜÖ|-ô)$ܳdºÈÂýèœ˺JA/aȰŒˆ ¬„@ìkÛ.#_#¸_` ¿ãµÌá‹×›`E>m1L®Äx9]†$ ºè �ðUJ1#ÁÕÜ—!ÇösšUŠèj¦Åi} è3ÏÖÜàÅ�›»¡GŸ¨˜ÈK%eLÚ·0… ¶cVðư�ŒmtûM´˜•1M¿(uŒÎ°þh¾<Ãü‘49k­x©&¸²oPå8'¯ÚµI’9½Ç­TȘ²u‰Æ•Í}è'QŠˆQÜ(â#,Œ“ tT…! XÐf~—rm»Ç“'xž¤a”ð[JíÓáê ý¦¤ËËA¾ “|$#D�‘GYòX�ïb!E~/ƒÈ#�™]e E•Tf½âv r™ÌnFŒ’€ª9ÎsFVY<•‘åb,û!%Å6V¡db>s9G}¶pùÍDv§h.ó<©ðÓ;aJù‹E2% <ƒ4é(à,r�¨{*»àÑC¹ôõ}D˜ûDß2©KÕjL¶3‘íœ -ÜžÊÁ;ñe NáTœq(îB«§a²ä%` xçã9.ébÛÑJðUôÜ(±sP>_ χKäÔ eD¦(�¯(MÜP®±d&°t&Ÿ–N«áÒùÇfWHVœw;ìÒÅ<Ù„4KŠTYø2÷Ç"cŠ W:ZµngÓDvkí32œu"/黵�  Q±|A8Ó$KJá¤îêpv«-Shï/ ¥T ¥ðÝ ^YØ5ãB¾P?Bò§¹R°ÃFám-�+XAä•@,—hÏ�š7vß’¤QWå&JËáe[8” WÉ7ËA¢Œ9«á%²¿mѲ8âÄÕ"~„7mê‚l’XS»H ­-Äw‡ˆïæn  ñˆ`þ„TgZÎ[intQ4=$/S@•KKÂ^p¡o‹xWè©mì+åa®vÊWy´1÷ex¬q’òQ’5;ôË[ª­³j_ÝRí1«öì–jOXµµµ[ê}ÉëÝ6‰§¼Þm³øj A,®÷µƒ%sÕû„¾á:¸˜ þJ�ûÞ_=ˆÊÁáß^‰/-ïÔ-¬š}+አ+®­&#ŽB0] -96’¶Zî§[wáE¬XjŠÔ"´Z=¼g«rÿ¬fáøI -°AÉÝN2®sÝò�YòÀÖî×pe/¤}jœóéS¤Î‚ÚNÊ zÒè.”„5Â_ÄXW03ÊV· •Û‹¤šå‰9MsÀ¤FÄ·ñ‡`í ’Oa9Þ@šYù‰�½CoU)² HÍcK¦øuÙŠQqi2.rÈ!I–1iùB†§u–1ü—Æý°ÛV N|AV¼ˆ!*ÈP^±<È ©'˦¾ÏwðL5ÉþX^wº—ÅP¡¡-–½ÃspR,#nülÞV½9¬ÞÌ€óšF?D•…Í uiߺŒ+[¦•¶a¥«´mŽD&\&W1ëwX¢iaC¤•‹4:[$0²…J–ÌI,këó*Ënã=¢æ|·>#N˜ÝÒõ-æT¢³þ."!3Ì œÝá<ýz¸Š'*³Eÿ�,ý—¢,@~/¤ã‡hÚºYXp)óX…h+'œ‘÷kt×6m©gB‘'€ƒ°#O>Ê�GU”2’·p@çïÆ—G|‚»vwv²¢èt·°“¹ÝÞ‚©çéÕ­¬fýy¬& ûC…îk–ÅJ™½ÚÎZÒÚew;[¢›ð8Év4nLjFªAbØ·ïmD¶f̲:ГÄVÊ¿SÙ­Xh`ޏÔN\kÕ�¢{¸+Ër;�£†v ; SÜ8�˜´ø«‚ƒU°j8¸«†ƒA°j¸x«Š‹-°ª¸8«Š‹°ª¸ø« ²U éÁ+7£íÚ÷|)èWÕ«¦Å<ÃÐV=�Ó£àV9\«e�ò÷&i ÷JvÕ÷¬Dgøé?;Á·Kù†¶ÛÜ êÀô=${”ÎkûµTZVÊœöC»Ó‡Š5SÍ® /àJÚÓØ/�î,êÓ·êV¹ W_N™Ì(Ü´À@ Œ/ö“ð'Œ–ƒ…9S:b”Ý¡ùL8•ªhnÉ­2,úŽÚœXŒ1B J·t†š\î ¨,{\&ÀÈg¨8¦/‘0*yšñ{hÈ4‚Š›³b4ô×.zû�:á!®áaV½Ê1r;g+ô˃è5ËÛ]ÖÛÖõEñžÐÈ‘�I,u_k†½Þ™~�–¼Ü% z€¢€YÂwuv\dDï¨ØE�ûºÇ½�ëiȼ$Þ%"ƒ>ðêi’{2ÀÄ~u í¸EFâD`5RF ÇÄ’Ê”’Ö¦ŽùnKnR|'*¯Ô©¼|‘}¸}hiתy‰"¡!P°W¦§§Ì Õ–£ª£�»â|÷¦ˆEê°¦ W¦µ´ôqZ^n,j°£bc�‡f¥–Cƒl³•·Mr¤½oävõ…´õ¨½“.ÿ ‘ùD‡Õôñ’ãð¼eƒ¡âïaÙ:©B‹ÄÕNXÞcQzÐvÉ´l�íƒ':Íç*þ­YU˜°`¡ÐCÙ¹MU*™ŸõVÑ+Æ” sa4MÊ=ä“’åAJ†|pÎãrP~;ÝÅü¥nË©j] Ô¤êËWšýEDLöË‘ÇÝT½ÈÃYy|^u(9ù¨Ò'–ÃPoS¤¨Àih Ø€Aè¯ ªeØy×ÞÉöÇXûZ‰RÊù:�Nª2ŸåÊçûðaâ"qSM ·jë–}jžUã6ãQž8$ê{Ä‘‡éHÃRûaú: ]|Phm£œ‡½ÐªoŸ¼Ã�U\^Ñ^u¬¶Ï ¸ŒÞT&B×è W5ö ¹Óp(‚¬ôžÒÝFµ�Œ+í·tã³Ö¶�ŒY—=m¨½1e~ήz§ºº_Ä夒–‘·N‰$ ¼YióçòsMyA¹Ü-Ï�Öí2X|ù,£}UÓ¡´¼vx} ÞÃ�]6ÑÞX¶sŠ!í;Ëå ;ê~u¿š®yÂÕ¿-á»Å÷¿é<•r©_§<ª=?êföPyYÕÚÇ=þgXÕÜ"ÃÝLe?ºë ï`¢ân—§h+OŸEUÓrŠÒbK¢_SJå,r[Š:‰C2"—Wáe_É’%†*ûó*©ìE@ñï'±ðš�ì·”…#¦á¦}üƒQˆþÂòÞe9QhÞtÚ)A”ºÅð�²S�&2·}<°ì'ˆ²ðòSnI¶A¶SL•Ì4ɰ‰ºÀéº( qz%8`N Jà_�jæ° ž#¿v±iÂÚš;q ”ÆJK:agËé“L®ÓÅ\¾ü}Na±µì?^¸#ƒÓ™Õ3Œo€Ÿì¹?I™ìñÒý¶bQ:Þ2s˜ñ‹G`ñ:À0$;‡¡4îÐ’£0?3üvjZ’ýµ‘¸SÉ18är*ŽsõDX0x Æí¼¹L¯ÂâÊH8 ü.fwé4¸å`öHÍæ8™7' QOU�!)X,ž3ž…JNÈC¯Cø+%‹ÐÉê%+htÙ‚sšÕ]¦É5�'óá¾v<ÖBía]x¬?<éEÏùçZ«¡U°f¬Û�í‚'vÁ—vÁS»à+»àk-.ß•[�Ý{9àlÎrÈ›/y¾6Úg1‚"UÈï/­8¹�Wd¦rÁ‰6 $3GóHâ¿1Þ³ø¬•¿¶\Jìyo´w~'´§-ˆõ•hr‹3N�H¯ábÄÉEæÜ)â½ * –ikt¡¨ïÃR1¼U Z®¦^%u&í‚…ÎELéÝùÐ{ð "Žþp\_>xàñ¼.[ókÔZ¤ã‹4‰nã<…~4·æ�qýbÄ.MQY A.D ØÅ5ââe‘ å5 çU–d¥N¹±ÌÊvT -02ÙŽx˜.FòTU;W}‹Û*rÌŒ«b:2®ùÄ Dkê�ºšáª4òŸ¥<•ÌLËekÀTC\Â2MïТD8½ ̦¿á„Âì$”f`à8ÿá­Ù.u#˜Þ¬L 4âŽÐàƒýläâÒÜ�v%WljpÙn‰wŒZFìäý\ãxøpI¾ÀéŠßC$]iVÛ€ƒ€`·¤(Ê>‰‹ ¡Æfq6+røFKüÛ°©°˜5«ÌGQÀΙjàܱ,Õ“¶kÿˆ’aDõP³‰®ÜqÀ>¹’á8SÀ]ô˜Ã똪‰vOYèö#¥ªÕ×¶íNØ–ê[äÜÙRí\ÎÃtÆ$ºC¢Õ%Ǫ {1�Ýùòj oR£SêËμϱf�™pD@´Ê¥p�BD ÍÂp’�½ªl¹yCg7IZ;„ÐÖ8ÜØr`m5Qƒ x±2£cÚ¼ÅG†1·,†…ØNfÚ©ÃÄ7­�Y0"ë[ �Gµ¶eÑ-ëbŽÎÍ݃—£@y0ÓOºhNÀ  ÇavÀ}ívÎ?ï³ðPÄ8Ûñƒœ8m½ š|й‚«ZZJµn]¨-¤½æqŽº£s9b5ùÚõæº�ÐPfq�¡ˆxë8—>è¾þni1–+À®D›®o¤DÏŒn+ê…û]_˜ÜOÇ…N$WežÑ'³Ò¢mЇͅxúº…}IÊ"Da% ¿ˆGpœ¾6Š.KøbÌÅs“‹ÃÒ[N4åòrÓg�ïéÒRì4‹ƒ¯]/&GWµ¨ì‡ó;n Ã…Æ›ŽJNG-‡§£–Ã�ÓQËeÌ鍿2ètTsu:ª¹ ;Õ\Æ�ŽjŸ´Ý9æ|é𺑺¨vúGÌäR2C §Àˆ’çð¦á-9¹0ôQÆÃí9J]‹!�}Ê‚>¥P£žÒÉ k¯LÏÓxnï*šÍQÜô¦KOÿLd:8lµÂTPâ 3ø‹8oÂ݉˜y×Þ¹œ; )ÐóՆؚ%s\ÄWÉ 9›Õ¯ë³l¯øðx ¼P \‘‰GÑg»Ô/Gä—û-µ‰æB²œEé:ÅcøXfê�~µ½1[K@+–ótR˜¤º¢ì‡c­Õ˜aÒ rɆE¿&˜Ê¹,†ÅÐOæù9�p>K‰”–´3»ÏÊÍåÊÍÿÞ•›ÿw¬Üp®V-,Q¹‰ÉÄqÙ¾.7Çz:GT›‰×lUׂ0“Ö–×là31¡©6�‰ÿ™kø§¡>¶èÄVí«Ài$vӭ!x¿µØ~3åü9ÐÆƒù�øo12^T¹˜÷Û…·®xi®xn<:ÌO§EU¯<¸~1oŽÂV4fx†—ª¡=˜»®“hú{j “j~ä8=T»cÂüË!B ”‡ñ»¨šø¼òÐF§$×á?æ °VU»2âì½vÝwpÝc,Ã0¾�6ÃMÃá�Ŷ ®sÝoXkùJY0 Æ$-‰�òHûùzŽî�Á�²…P9yRSѱö²"žX� íËÞâ�«"žOU`¬zŒæŸjÍd5•¤ßÉ7„Ûo�¤eU�î BOóq ‚ŽL)ãèˆL6�õ Y´þŒm—›.^]Ýk¿ÍàÛ/óè-¢I¹ø¯þ*ZûÓþ ÷7[¸¿1O>x@ ´ýMû›ðý�­ý�åþf´¿c}õ´|‹i�÷ÛÙ[wPÛ,}ù~!jnö–‰ÄJÊŒRä�#ß××ð){¦I¥Ö…:¢ååµ_’Ï`zžà”ºfƒ ¸¤W0Õ«ÌM"6 És]‰ v@r�Eôºh‚Öj–ŒÓ8SnÐ*›ü 9—v\¼Y ªLô**.ÞD…u=ÅNðŸóa=ÈÐXOÀû™Ã¸ÑáøM ÞöþæÂ¢’Û—î”~É#²j)™C•Ò*lÌ’¬í”ï™YT‚N&:5Z?¥Íákµ›¯Yê3Lp&sV‘¨î=2ò,…ê‚F×dWü@˜l�ÿj,Ýdp�¾Vž"H†]åõ4�»Ç Ä‘ºI2Ç$ÅZqT*w£Ù­íˆ[�TK;ÆÍ|/Ëáê @€�aÔÖS”Bб“3¥Œ°kSF'áy0ºX‘%lËåeí ï}7|é2¸¾9’ræ“‚¾¶Zþ=ä!¼À²d¹s¹`Öý�óS4Æðe"zÙ¨0eá± k´²WF49%îqµ‹*Ô|øÃÜã¼æbSJ�†š?™'È£†æ ß!ÑÆNyœ�ßÐ,ðh»&i\ùˆA S §oÚ·ón‹ÇDgÙÿêlùóá:€¿*Èú+zçÄ'v!x¾²fêÄ0¾µ8‰�R'ƒ#à‡2Lˆ«¢[ΤM„nå0˜‹P•sÀç1Txøp¦#ÝÁÅN$ŠÈ…@<¤„QS…:¯F<¸× šgoe —Ñ¡ýÊ8e²…cYí´uŠbýìÌô³cì­ ýµ5Ö;ŸçCw[*üÑ]:v7ä\‡îF9;Ý‘ËZ™,c�<|>¢Ú‹ü½vÕWL.˜ÌÞQëos¥ˆ'ûBáu0ïÃý’žæ8Zfµ¾‰i³æzÌM¼�FIÜ%�ŠŽÅZq9˜w  úÜ?‹/�¿sy ­áj¶—VÓIè«ùÚ¿ŽÃæ�@pv.0ö½¤$>ÅÈÀr\ÄIŸI®àææÔ!CLñò2ï-N؆´1|=Ïôp%lÌDóü‘ûg¨‡ÖâÛ1ì=b(3·—Iͳ”¯tásä-Üš÷[vžá*Ü:LìŽÿÌC;+…®C�þyÂ)ÎWi–PŽÄÈ-уŽ�÷BG$¶ªO‚~’ŠÆP«#”à –«Û–ý{xÇó·hmÀ�hÞŠM&+�‹ë3·#•qíÓØr¶ŠŠ°�Ø8k†ª�Še‘*´Ë—±ž) 7™vsÂæ³H"˜º0 y°‘„_)EzÞRx7rÁ¡ŒÖ•’ÛŸ0ô`#Zër0Ú Ð-‘ ÔMÔ\„¾*DÎÜ®@ªïù(µ² ë‘ât˜`Z¹Â}Ÿ(éÔ+æûý!9 ”��Ù2J›†�cVâ¨0Z€Ý±Zä~1OJ�ùNvx0ëxVÍEß*ý­3rsœ�ß')•ÛÑ/˳±²jß�é³X·È™Àe?MÏ6«j�ë3B Tæ‹ÎÃ�yørކPB�8¬”³¡C1\™žù�¶ë2¤��rX& £L5ƒ¼ *¬'Âî †‡È±æ¬MÚ¹¢ïà†BTh”/™ŸñþŒ* =e”éô0–g hÇu G@ˆü;0ª£uþ˜fx "…8E¶“gW£'ð^µû£®˜²JÒ¹­…+QÍ &`jÁ’ýú á¿虞$à­’O‘êñOS §²ºÔ-ú€1Q’¨¯¿7CA²ŒÔO•tü×S�{�.ïÞÿˆ}‘ ÿáì–ð­¡ûPžÂzäWÃ:dàP±µ9¦A¤xbujÿ[æÖ¿p¥5Ž‹j �–Bô†Ì!³dkpðí¢ý\ŽÜ6 ‡s¤–î<ú†jÈ$KãÊSû,-u …¾¹!û®Lþ˜-;1>…z}22~¾õÐ'ÉøTKz¼óTÿ07œö^§<ð\eÞ±§UüÉR%÷=`…Zt  ÞÉw*ô`Xq"XF“FpAúåƒòÎBóýµƒ°6{x‘·Öú�Å„îòQmKMqmeˆkkC\»´” Ýö/óá£û£è×}¡rþõðøX`A³¤äÌÇpiÍŽöÇ\�r9–\Þ¦J˜×1ïÜš´>¢�Ö¨G9S…ƒZ2®ªµÖˆ7m Œ7'J[íY h6ȯ­˜ùf²tü&³·¸›´R '“¯“&zº x‘ág¢s )&ýP{SÚ{£̤¢Ab‹öª@Þ´L]�—-F!ÕîrIóQwLÊÏ|qÓÙ5™ dzAâ{B“†á8“84̺FõŠ™ ƒÎO%w>ø-… KÃ;á…˽£÷H¹=͆)wÂɺÆÓä,þ@ÜòŠÛHÂýv6Cá�{aä"N}–_�…Eââ:$…ØQkјÑj8IffA‹ìŠí‹Ÿ!úX“޼LB�Ô‰*ƒòiLß#\É«¡Ñ®R1ãˆÑbS›…FëØÒYß²ü�Œt6&™,˜¤œÿF›4N0¡ ŽFK«æ$MòÞ¯±Ô%®t¾hÎå‚9oçH9�·‹áx¯±·¹Î™–ÍðS~ß�­Ú EÈ“í<Úâ\ü9çUBÔEtoBO²×!‘²5#ÜÄ•…*²†«¾Ù”•šºžÎxà|$ü< Íøh´`"–Ô:IÚ½é4þ¢¹-@âÚ4ï'« ™™êr6É`Äþ ‘!8æøù³s§©–ü d�Ùt+À>e£x‰ï=€“íA—Ü®ã·cÿÃÑN&ʬ¡%Œí'ì—fFæc.ilôÇc6ïcÓšr&Ó”"ˆ´E›¤hkÍ™Ÿ.<‰'3ŸPˆŠŒ)Šb6‘0–;Œ$¢Nó m\c}\ºÞ>2Õø!yéEÂwoDὺ& vD¦™~wÏé1ªà¾SD1¬6͹®“²Ì>‚QýTûR®iʃ™¡<ДHÀSé6]5whj©-eÞSÌT:|‡$Ä Ù‡Ÿ×›„¨ eFoY–‡Â¥ -ãk&!à_ûÌä³£uôoHã £DÑÉo÷%Œ‹kiþpsÓÙù†"oÄ–jE\ˆ!턚 ¼nTjÁ÷3]Õ¶Oéáðá-�†b¤:Gn§1<^Ò¼—¹­»I€îÂ|fÌe�ŒÒ= ›žŸŠ†)#u¹ëz¹–ê?´JÑï"@:¦8,5r Ññ‡ M›ÞQËýÂ?* ªa£má°+¾ÕSØ¢à ·+¡Ôl“=ÜŠ¡Ö6X9�|¸u�fâٖЮj-º- ½k¸\+?öD&1·Håîž(k"zÕhçûìNæ(�†(žhHOþs-™p 2÷qÌ ´LØ3PL}àþ¢…JèÒä¦f·ê é«P$ð¿ruN-{5;šˆe †i†’ý¯´h¡ªÉ“©k Õ6ˆÄÌ V~&DrC`Y$‰‘Û5é ¹ à.Lì껵˜(…p  (í<òÚø¯ôù¶e&ú5Ò¹—3EBlG ¬ãŸ9E!`”jDßcÒdŠiX…×®`\–ŽîJ�ÂâY£Å=Æ"˜æÅæiÅ.Ý>èeÓÿ­Hsß {”Ð4€;b�ôz“9Öî}·½×c<* Š2ˆq™¦¤pÞQ“ÓÈøÜJ²[B�T[¶ 3ùDËŽ§FeOÝ«Çúª•ÝÛ[Ñ›h}¿¥c˜ŸÐÙÎ�2${A@p¿ ሴ`¢Æq”‘ò¯†ÒA†BD2Ù‚+,“gr(IMÒ¥ìi™.÷Ð-fØsœ1¿Üüó{:Û…ŸÚ¸Ž�qi�á ¢õw‡Ñɾ¹¸WôÏq â'>jcÙÔÎ †�ƒ­c 14$PÔ£zÄâKýž9· gÄEŠÞQ6 ]Ee(z5m{f‹R’™Ï Ëa=ÃLtšdº ûH”Ú1:«NåùùFY·Ý&iÈ ø™Nížæ ΡÅÜäÚ»ŸÑøXÁƒá�¨Ý�¦èíD{3â ü\]ÛûeŒé„è ¢â?¸æ‰�3ÌÑ�ŒÊ‘Ƭô4è=í xzè×еtúg;„�ðÞ¼ò�´µÎ�KúJ*A˜j×ð³¼ e¡ƒU‹¼p=Ðñ#¹tɹïÃeQ‡õ�š�šÂ°)§77ô‰ª ÿë|uý«/¹¯|�ã 3,fMâ{Ÿ¶>ìnï¼cÊâߡ㵧ýõþÚº§ç*|ÃîQLZ¬ùâãB�ê(Áf6yûìVð=oØ ^sì-SB­y€!­û] w0Fc?K«ŠbÛ²LŒ¤Rcé<Üwò.ãšÙÒ@e™òŒ ©�ºDª3•y¦Z#v�l Ã¥%ž�¤=‘šÄ1Ž!,Cá°6~:Äèwˆ§R£½s�0cŒ3ÔHÙÅÛÙÐCáº~à¿V¼ðÅløèßø;="3à—3´f&Ÿ;–É'^;l,°p%fÈ®ÞaÝ`pñÞƒÙ`IWä$û(©¾k\W�'俽_¼MÊÓd¸Åô˃“:`{0#PãyÕ5™xv/>•£‘…ä. £JX‡Æ½Ékæp0ÌÄðP_`,Óó—³8"8>|‹a‰FáØË©.žæ^¦óY®Óû˜�³¢J&½cüÀcá)vf-?Q¢B¹pãù@û-r4¦Às $³KÌ}˜½Ž'ÀÛßO4¨ÏѸ\î±ZTW¶ÂË^ò§ ø,LõLf—\|¶2ýiu´•1„-�€kîÞÒ’ï: ´ ¡ Å!¡å—?P†^Öƶöª ˜¶)§<àba:ÖMl9Á³BC¸Qæ†è‚!aG½˜�'Æ.M' <ÖZ«½Š{䊕.6“01#ô)Î*³òÑèòg�7ž½iIºèÇŠi¼õbŒüðá’¶Î�„wûÃR¥Ø8œ$³z*’­Ówq¾/±X@/�OÇ*ú‰ë`íÀytMp»°Ž&ôfß&qŽY~óÉˤ«Po™–gZ¢´D4JVÍ­» #|Ç6¶êUS¹åã²€›„[õŽÑY(¦è¥A#�§XZ±¥—³‡qjE–Èý‹¸Ìƒk¼WеPH€:N³jt"sèxÓEž7ÐÛó�p9{ø•uðÉ>œåv$–C¥ˆpÝNGšH’ø¨<:ª¨&àã쥓¡ÇS{šÝLR˜9ÿzR‘°Ðt !Kœ]Q¨†Aí ѹ vÌ| y*Öq®…æ¬M›\Mjd iÄìNx§j‚°â¡jɈy¼òkVJVR„•¸AËåaÑ /ûõ�j.‰ŸÖ¾´¯YÀà\ÄH xplļß|d@¾†µŽà]b!=a4ò™yH~.”Ž*“geàì0¹GÝôò‘SZ›?¥T7ô&™¾×óŒÆ‚.s�i` ìÄ »ÛE‡á/÷˦ËW­Fˆ 󦓿nÝQ6�{;£,ê,�Þ, ÅDçn’gä$sµ-ã+QxA´ð¢´P"ƒfÌ^Úëê_¥7‘æ$‹zh ‘ÅçJes²É³åhîñQTZKe’,ûµ)”­Fkê.,snˆ¸Ð‰{ WÖÉóa5HVVlQÔD£= $Ilµ–emâ€7@Ù^[ý NõŒáš1ÛÜ�$j¬Å“´W~+¤2ö â%'ZÕ™í`!Ñ/ =ÿ¢Aþþm4™‡ˆÍîýë_ÀWUzÉ ìÃ�}0¬1Tû¾¸qV™d�=ÔËë˜ÜìA¸øú`XQí\Ö®(|2=TËkX"SþÈÁ¦ÆXc¢+¸ÄAEú4ãA$lå_9&§~qõž¥Œ´£ üÞ‰�¤ïËä$½Ô²¿§Õ'ØõÁi^”É+´7~s"KÇqŽÚYÌ5¤ÏJ© ¤¦5Ë(ø°ávgÄ ²QiòƵ&­6ù� )ïX(F ʇªduÔ¿�ûï7>ìn¼x³uørco£i”"~ü4ãQA^ÏzÉ%44©z;™µnÕ.pÿã,hTâÈJ3·êQ=«¤‘?’»«P¤Ôóýt–‘¹|é…¯gâÔÿ6z—^ø#üaPì…Âoº!VæÀ˜xá÷ðÌÒ¡>¨_œœTIMnƒ†zˆU¯KÇ׬’v"Oªà‘1Óˆ†J=:‘„‘°ÖoC½" ðzøÐ7Nl*SÉv�%·«ZãÔƒÙê|‡i‘Ó0«ÓŒÌ­5k©ÈiÃ40ºŸÔ…!ÀŸµg`ü6Ö ¯§,'ò 3Q\÷�• OÑ™ÆøT¦®ÕáPÃvÂ�hÿ 2й1� ë5v”zKÞJ†š4p E¢6¸¾ê·YKÕÑ�õz'¿�—@Oy"ÁµÙgä;QÁo· ¢œt:+W��œ ¦Q®>uQ'$žèÀÊ>®Û:ªƒ6Ýç3gOo1Ësc®~ÀˆÒ•ÛøÏ®Þu 8À‰ìlÍ©¿Èeª)ιã;�þÓI¥5ÿn6ôfS/üEPŒõI¦J UÃo@qf¨šÞAæ”O�2'=„�aõTŠUtR—¤ • L©dÉïù<‘ ^ô§ ó?*)Q½Ü" ÂùÛgt¥dq¦øKˆÒšÈ†ϘOð7 ™'ÞŒ¼Ð[–ïPŽr3:L ä9u×+Ôi‹{X H < n™h2íŸÝ©ûT �l©Ó ˜ã’:q�’.!êk¢&X@æ®–\jÝ�Ký2ÓDë(º¹³€ˆjWåøMŒT!“b£òo¥· ŒÊé_¥Óÿ £õÿ�Äh×�­ÃvM…È(Ÿ:ù?¸u{{2\u“ÿ+Zú!Zb?øß”ÿ�KéÒÉYÝ-sbŒ“O¥ùï¶ Ê+€ +=·Ê½|Çd~ -/špH" CÚÄ…E“´šµ„U�%¬òfcïÞ½‘ÞÖè’Š·rSj¥�ƒ}¡K¼¨¿°ÄX”{ÞÀH0ï’ÄH2RPý¥q"rë¶ HËv¡€-­ý¼KD&Y›;-ÖÀ¹­•Ü1¼žvés$jŸ-%‚í¯L wNàîÒ½ŠOÐ!zëuâÎðžR¹Ò�•ÿW*G£ÿ•Êý×I倿³T.™þ_#tëý2[$q+O‘𽛤­Û%Äã´­ z±’¤p¿�ÑÜ”_¯½ {°ì?½Ù~õª‡“íñF)ÜE/­˜Uq6ƒÍD«>81S^ÚìI4U v ûþW&hÈÓéÿÊ»d‚.”üÝ,êF½tݶ±¯v9/ œXé;[@È:é@LH%jhÈ9@"ñôQJrV²ÏžóOÌÕ¹®ød€Oç'ÜÖÎi7§ÞN6J‡wÕHi6"Ü ï´n8!}é\îØâu­>Êg#‡rÒ%œUÙûn•Ѷ�vþ?#©íX&Mlû“Ü6žrû@FoÏó Š¬ ³Xˆm³.±mËëc^Íg,ή×%ÿ¡ÐüV¡�NƒÅ‚à•Yæ L/Š1…K™SpJ“ÏÏù„aŽecZ¨e•|qAÓfS<ϊΚ¨§GÚÎß)8 ¸èh�Ñ‹ó§½:qˆF AãÇaúöðî. Ã<€�‚¯ú¸-õÊ�R¯ÊÐn£¹Zû[dh9yC3甼¥ÀzÅGÀ !z¶ÕÇ^˜IIÛø3x:vV^žzÿA~•‹+§Ísy9l•=_Ó\åôë(Fî„;à ü"@'° …£`K˜Ù~mSøõmºôöHWVt&£˜. ;Ú,iÕ¢´0*Ý\) ÚÏáJë†{ ]ÿwrh:K[`X¤n⣸/zâÿ/ Íü6CãDE/ óÿÒp‘ß¶Ý@m¹B1 ¬7ð}‡Ö»…Ck3h_|3›šç”ÚW'õ‹.£u@-ÿ8ÁK§mfÞôñXDšNú?Æ%êÔ1æ$wгÈáÊÏH9áŒè žœCÆMÀo9-€ƒšN!ʃZ6,÷AOÐÆFdXAÿ¤.úª$¨õ0 ³)ЂiÈTu’F x�ƒ: ¨Gt€ò[QÔà%ÉÈÂ0Õ}w´È<ù^~)½£é 4pIÚ’y9ÞTF ±f.vpÚ½ƒ·ï›$D cÝÙŽ=¸ ÷v�œ^ K5�(¦ñ¸—0ããß¡´QkzÝ®À—vhs�¥VÞÔ^ÁP/s.¤uFÏi;Ä»òçe†ªܵO™¸apÞ0"~>!»\S5ðë`_˜‡ ò“ò¸±ß]÷ÃOJ?íTO·uÒ p"ÚGKíÔ'‹TX\yŒ:%—â¸zLÌRl–U9àêÏ”>©å¯o\£ÎÏöõz}„„È¡îRŠ.Ã0ý•¢Ú‚Æ7Ù�;L¤Z4úй«Æ^Á5�­š@|k;—ÜeŸø‘Eîiß ó|Â�ç�‚PÂÇ"õþ‘PÁ)1ᆮg n†Ô½¸Án4•¨Ã-éåª�mÌQu>h>'0¼3¸£–»B w§^רìû.µˆ”Ò´0�ueHš0ÇÑéÈQFÁ²Q;ˆŽ¢¹â¨ lH×:2¿|…¬¡Hoµ\«¢âîX·�ƒKˇîªCïbˆ—é¨ê×ÅvÎ’­QM˜G"#`Ýzk �Ô ˜µ)»�FGÄ ²‡ž „Âùw�"âÙ°/1~xô–uÜŠc!‚«`ƒ�ÇTŸ2ŠŸq�É0‹§À©%«ãó&16‚ûÝuôI>W]k�’FãÝz‚T8슙ïÄ“ÃÃ{›=¦œ Ë¿@¡&>ÅaD¢K8w·]ð9©¨«zË©üv¨a´Äi°4ô“›ï2;Áˆƒۥ˳c¡ ú®Î™Îà²6˳)/glÀŸZ­jjÙ-Qé·3JKÎ!AÛó$·ΦŒÖ­C†9a4«Æ£´?âÄ0Ð…djq)ÂÀЗ¶û½”æöinn¾GÆÀ^[�%w%c G¹ªÑ̇ ŽYÞg~©‘P¢J™bkÆh+ö #Ñ—piaŽ£©Že�–€Űç005Žß_p‘7¤±´.øbS�&][…,šteß’®VAÉšùlˆGîqY!¶´h:©Vg®ŒŠ§Å°8±ÈBt"ˆ½!öv`Q_—Ýø:q\9ÖɵJ�Ð"žÁcóB-”Œ-P"p`èøæV¾uù‹Š�ÃæÏ ��Ét`õd\Ć$*× E/µ[íçÒ,]ŒUk@Ç÷ÃZ·›¶2fÞ.e�h Òâb«ý’<êñoX ÓQ.ùÕ˜_ iñŸDf0n|£ò ´‡ÿÅ”~ifûZµL z‹_'2sÝ+Sùa­‡ v;Ó’&À}G[Pgƒ'ãs'JÙö 2E„Ò…Çm­†· Ð#·Ó¹˜lþýü`�1Êì’©Ø¥Áå¨US¾ ÃL5/V�ךY%nÄ‹ŠÙ­†2Fqò‚d¾w¸ÈEÈB^&Äv­Yoä. ª±Í�{¶I!ÿϦí�ÿ2ý—O,ì¿L�D¡ÿµì½ø’e3@=ãpÞªGö³ à üÁŠÞ�¾-&s¨ÿŠÅƒ×øgÓ›ø‡å€‹âÃã=2Ã$$4 ¿dŽ«·1PxG4˜iNÆM’Î-©‘Ç3œ�‰T1Ç0ã2ª�®0�ŒÒ(KÈé´x »Òò�#û¡/«î/HCñ©ø¸ê>É£T�W‘hL½(Ô‡»:ÙÊëÓ®° Äó¬>˜rŽBíŽ)Žxÿ>eº÷�wdW’"×´�qhû•Ñ9 # .Åö“Ê(3È¥  ¨½œ¯­ êt4©K®Ä‚ "�â©Q5'Z/ÑÈ~V”ï´dc#yún‚y…ecêk0P¥Ê‚†ÉA¸LJ-]òD„˜¼ÉÐ*”qž´76tÂô¡ä$UT„ÕÕÙq‘UQ¢¢“œ'Y4Æ´&„þ*𳑰‡™‘|Ú Ïyמ‘Öʃ�¼®P¦›³ŠafáÐ×<œ…S ‘ŸNm²Š 5%ú„”fbKx˜,µ—â…�)Ãã ?Øà Du:¥NÜf�Wç ­Ž œ*³ %ÀMsÁä×�ü}mÄó߬F„ ËÑ�y9ÒÈ £~âïÉh>ìp9±m°£îD#h¡mjZ`X}TÃ�)øî3!Ê„êgô4ÐÑì S#¤¯°µÍüÔ‰ÄÚ ò 3ñÕqÂrƒcaÓêvAµ—X­äéãØŒî²°`šÐhd8Û$ĺ¡…´ULä¬QèƒqÝÞu8Žv8+þZxÃfqß66™Z?ãú,LŸ )ÄŒò­óv]!fÓ%çú“£-’z‹1‹½2==eËØX›ÝÆ2ü6$²…5ß³{‰_EÛ®âw#÷vW‹\Ôk¾aº'ž xhcÅ‘]З½±$—»Ož�–DR?:¬#dûdb¨ºm¢´QU˜H £ibAÔ£&z¶Áó& $'¸AÊú©Ú©“²<õæÕâå†8@•’ˆ EEtº¿¦–�‹˜+œÅpÔ¸eŠj ä’;C€h[Gº/ïÇ �THz}ǪÉòÐÝœ÷äíýZ-? ,76hpà²ì€Ç †)º(ie™aÝû+J$0°vÄA*j£°]†c¢—\d$6×dž+Ôä«Ï¤‘n$–óÕüp•-ÍÕ s9ý±oxJXó#½^CIÌ�¨eŽ„ý<³¿~Špº¥xäð.¨taǦNáÓ7ÑqŽ9¶Ž—’ü�Ëzé!¢o¢~-N´¤J"�!`=KŠ–�WæI‘i~dÕ †ãk™2÷áCõ[Ô¯µ4N�h1ä9 Eœøo¬Y˜�“;Z"åŠ m¢ºáž[uu7ütèc®7M`¥M³ãµô¢�]Ú²e¼ç|”GõÀÀżÏ4hˆjk�OŠV3¬Ü#àé‚êVEûTÕ ÎN»(S-þ‚WûLjHâTûÂY½#ñÜq]ý/%ywJR§üTþB ñÞT¨¬»SZ¯MŠÔA²ÞJ�r¢é\‰:ߦnúIpØ"’r`ÑEœ âÌ¿ ¦$Ë/è(Å÷ JJcþ)¥Ë „E‘€ÃØâÒ öœQͬ ² B©VìmfËÃÈ ãBMÓ‘%:�Ìu O“VÜ�Ôã‘C›—OX6åLTщÃó)j?ho2Ø#ø<\5ˆD]4SIÑLnŠfJM4“ꢙØÍdÍ}%æÂ;¹{»J ÄÍ"÷Ù�BXŸ;$ÖÅÐ’�®ï?h—8âoèÖ}ç´ë9È«’i±FG©o³nOƱ6µu¤íÝ:Îí½Dw>m'—×4XmcV�)kÁ-#øˆtØ�BbBþK-™(µu,Ø‘JËzš•YÖn�dSøwº±—ý½af·Óuå2´…Í[íÅP;]ÞrÃ+„Ú}äi¤íN´Š¸è”šÝ`‹ÎÄ °{w¨ª�Ä|m.½F9*ò7’*rT¡ò ó66PêY%“²þeòʉ®îLZÝþõb²Êù½A¬tÎñJÛ‚Nb b\Áw óÖþ€%|0ûáÝrnäC"Ü&õîI‚‡J"Df®Æì¯Y£»ñIò×v¶`ŽøGeUð9CVŸ7ònBùb�Õ'À –:¨f©ÐØ13Bý–áòÂ*\¦È`j0qu˜K�«ž¦â™‡3ŽoX�ÿ€4é&¦u­$ÊIÛØA¤æÍ!F™M�[dð\»7Å�ª†3­Šf¶sA[H9«¾»v¯\Ö:q‚›Rk°s°‘mþ/eìk&+ÀOåMÊÖÃþR£>ì/ᮬÐùv焳ùö·ì/·$ÙêîTÛžÖ·b­vNviÇìoÅ�o÷NÛЖ8]'HŇ«øÕGØZµ¸¾¦6©u{•õK¼¶®tÄR(¶:`£,ã«>fé¨ä¥%BÊ®nëßw�)6ïnþ£Y¥¿Ô*›Pm�ç–ïðÓ‡ _/øÆ<ÌVóÃcv‹°X:áÕTй—Ó¡·¶Þ_í¯zÊÚàbjZ�0!XBžw2]ä‹#d¥ñ ùðÀšÈ†v§ ü¸ÑT¥›iíW2T6Œù®ÕheðǼ¨“ ºwh¦IÊ/pDf™®E`kªÀÓKsh�»ËŽfµ/ ØW¢˜ôÍjb‡S}F‡SÛNãA®4Έ =2ðó�öÂ,0‰—¥H Ew{$ÞåŸÈ7^XZ%1ï´¨jYô—Ù}Å™¬ ôJU’�È ø`¼ü=�íx�ª„öAoàš+ã ¯7aoqŒ0ó´¿fÀ̦caB¹ãü¼^/àr×DŠg‘R�ó ÷Ù+ÞdŒŽ§‘·ö„A§¹Ègiþ‰GEÂáV�°B‘Á’°‡¹Þ_[÷ÔkÊ�Ä)…_6J“wኞÄY‘«]Ñ ©9³^À?LOõ}êz 48€�HðÂÖ·† ø7âQ šËLù\Â�ïÛ|.-eø“zÍ€§ËÐØCh �®&&ϼ$Pmfi̬5¯*ŸaªÖŒQK©lQ°z0ÛY2NãL%CíWõUFœ¼Z Q¢ÉÂÑÌñž¨&£aY²¸aYM÷d0­ð�}Z*òÙA6–ä<�ÐÂÑr°\‰?æI™j-ÊQò^HHITCä´=e† çirñC×çÚKÞ„^]5#T×”P ¢À ?ä¾zO]ÃÕViîä7V¹Žz²ô$_�3öñN¾ ¬óiRŸÊR%ª«y¤ò1*8W¯ù\ÍByWÉ#°O7�7Qö‹Â_:­^åE\N$Y7ú[”U ‰ ˆÍ,‘7ÕZsÀÓ'ây•3…™ ­óøieoÅÑežFâŽÃ 2Ï"ªÀlœ•Öì¡UWbÍŨ×,ÕªÎütû ÷Ö «Ú?¬ûã¢LH—(ñüöíàLÓPñ#¥ÑNž`"E¹qô¤ß;¼�dB±'ÞzÓîiÔ+ù½Uò¾UòKžè%ZÉÆÌ»NDÔÿóÿPKÒV1]Á:¢ÖfÇ/Nimunify-security/assets/ui-app/assets/static/shared-dependencies/system.min.jsUT ëÆ«jëÆ«jux 臥Zk“Û¶’ýž_!1) Á”ÇÉî½E…W×qœ]»ÆvÊ3)Ð(.ŽI°%P@�µ’þûžÀ×Hr’Ý*{D‚xvŸî> `ð}÷›Î÷�ë­6|ýòºóŸñå�ñ(|Ó�rjD.ÃhW>vxÈ™‰vŠ›BÉÐì÷AõƒNXuð\©\}ô9J—Ælt2,„Ywñ4_´­÷A×w«ün°Î„Ìò©pj¯ãõÌõ‡jlãÆóðÑe7My,äŒy3ƒÛÛ êõBŽ2Å7«lÊÃ,QDSÔ?žôzåóå$r è˜X¯j?f¦î-Á’.£>b¤ ®›‡u{¬;.ŸžàÃzŠW\.Ì’æÔOíDöûËsê)F»Ï™êH¦Ò¯LŒ¦%S×ÈŒ•ï±9s±âIÙ¨ª”}TUžD‘/’u§ÛiRVþgýXµ 6i ö”0]½G²|°òœç*¤ŠTVUQ#ÓæE{6}Îòt‰¨hèâfÙë=œfõQEý<þ� ²5ø%À/Kó¦ �#KDF<1Àíöƒ:QÝ…¢FL1ÁrX´×…îXµ^–ÈM¡_ÍæP­žXÐF ¹€(ÌvÃóygîj¯Òi(˜ ç¶Å�W#9Î&é*)ÂàÝeÀÐ î2Å;zçb.¸êÌĬ#sÓQ\ç«ÏœYOQ�‰3áÈ-`r;ÁX¬7¹2�&VQ¾0Q=¡“Åj1ëi¾áz¿ß\?:•aÏ1¤¦îã8Ÿ ±ÖPnØxKÑÐv¨!¼z3¾™fÓ%·‹êuì:Ÿ¤u ôÞšº4|¡„Ùú–Õ{£i]–Ojqä•Ç3c^ÙZ/Q9“á,·ëT(©ÌÊ; ES0eKu¸_ÂE8Ô„¶‡¶ñ1€6jbF»¸Ýt¬ÿ‰üˆf,-HHö°åG¢¢nXNð_²r{ÎÞTåIÁW³ëóÊ=y[�ž¶�^æÅjÖYfŸy'땉pÙ¹\´,¥�ƒy´›æ ãñ}†`ÅQü–M?f Þ1™ZpÓ ú¢0�EêÌ—_}Õ.:Ð"ê´¬hj!*k ²b·Øapl0÷£CJC'£"ÕX�ÅÄJ®(W[ **�‰#G¡›ƒ¯M}T¸‡¹Y ¶CC¯gêYfÚf)ôøÁ¹.Ÿ‡¼r"èoVY¹uaLÂ�s¹Ê³Ö‚Qfø3Cÿñ,^g›p±nWE‚Yªü¾#ë^fµð­  ¯&#y¹ô|è̾HßÜ}àSOÏ ·8І¿õz¾xÆçBòßÄ«Ì6,Øo ¯ „¹Wù¬XñàÙÞ¦)*­…&`KÅfÉe6hL¨„Ô&“FØ!ítÑQ}' ,Ô­Ò2 è óC2ÀrJ‡Ö躺@§@]ZcÊãeÚ}ì�¸{yÒÇòˆ“åˆI°| ¾ðQöòEëhÈWš×t^ÜÀi« SUSU7U�¦½�ß¿çÚ­Á³h¼¦ÍoÑÁZ{¹ÅOºt<±x礯ðá´×›á%h ü(Ñ!B6wÃIC$ª©ûÕªèÀÖÜdI Žg9œäƒé’Ï9¤Ž¥”ˆŠ9"3ÿ§…�ƒn¨üÀÆ …¼=7†+ÄÀNYª6žL0ÆvÈfHÕÔ!‘áæÍV@uÎ8ƒðRX–N¢¥¶«ˆÙ 6…±­Í4`UÑGÈ $…¸#IðA%–Mõ¤(¦ŸÛy"2?’�ŽÎõ¤âç #T,_Éaå*†ÏF“ý>ÇI. ËwÿNÍ"�g)wŸ+Õ”. ݉Y"™H4“IÁÖ‰`/’)»J2¶Lº—læ•Êxõ Ê§çåóòaã¾mÙò`]5&ÏUEMÿ `ÇÒ½úš³Øôzëp71à…›TF¬©èÒ7Ö=TiRcb$6ò4ÓÌL—�ºÒy ­t©C÷kJ$–î¹{ ¿{h¤M3%Cƒg©Ï0°�³Ëúlë Æ Ç×è¬=Ôç*öÕœ6£¶%AÀ ‹gž#ø^$èþÑ4Ot�Àò¼µ@z„™µìR–vIJ�ÛX»¤™º/úï+ü¾H=RœÐU«3@#Â`ÖÛ�ë�Ší Èóu¥©GÖê¢ÖC•Ñã°Üóþ—µ®) ªÔ5¼b 8p¯Ï³ T-Ö<%±“ÝÉ>E*ÈsE¥‘úeéÖ²´�¶xÑ’�5ñ*¼ÖU”@‡ +ZC9ãI9%§PdæÅšK*¸Ú^óBs®žâK §JlLÐT—c¬‘ÞD6¶ùTÿÑÚEl I1Å9/A½ñ"ÕjZòG·ŸP†ƒÀ ×Õ*Öô�hÔ,øG”ÈаŠ3ãžÛ¬¹Ö`�5}úÿíTüDÿoöFP ËE­çŸñö'ˆ†”y ã mtdÕ$½¡)»Ï² ¤µÃ"R„e�Uè´äë¤/Ô±—ïÐóu’ÍÈo×ÄsŽÁ.é'òrÛU©Hbê´„m2­o°bgýøØ±8ÑvÁ?¶øRðB‚¯Á @ŽL¡;Ó|Æ0'pf[PÅ Ûà~Î=–¾¤Ô]Ê‘ü°ÀÓ±K ÿ@H£9lõƒ[ ÎVvÁZéüyPXó0lµDì×?"ÕvÏÈJ…ÿ}óêjø.}wÖ‘ª^‹ª·Ø|Ürö¾; Éøóôåõ›×ñ&Sš*CoÍ»¤¥Á»ÿ€4ޱ‰KÐR¢ï4A½VVV*À“@2ªIá #ß ‰í÷ 5úOS[°mÒ‘ò29/¥ëíú._±»“5_ÍÙýÉO¥©°ëônDõ’l,[Qø¸wÒxžžv>ap—i>^*>ŸÀ¬žÃ3.Òç1½[ÎÚ] Ù<1ä*‡!q×û›­Ê"ÛÖ²0Íoƒˆ¨›Ù·è(EÚ<ì�|Q9¥7´ódö…}H··ƒû-ÝözNN±É¯-Ý¿ÉìUº¹â0J‚ì*Íâ�ÊMN^y˜6SV§ßHñªˆ‚ç6kjÀ3“àýÆÇÀèˆû( Æ1þ¹گ°U5rs8�iOD ˆ¨õ\MFuÔ{¶ßoB 3ˆˆ]µ©}zÜQc…»B­DB7‰:ƒ�� ây‡ÚåZ¿±£¥A&s¹]ç…"Ÿëß4¶ùx•ëIÛ´úB‰…u¾È;�ƒÎ{ö’}DT`¿§5F‡gàjã0tÀÝžB½0¬k¶½FàEÒ_î9të=‡‡ æÝczðº d|\oñÛM˜â‹”ûÝk¼oSdÞ7bÍó´ÜÊDZ¢uN¬mMªÍÜЖº¸c9NIàK�ýîH)uÎhÁd“�Í—´TKGùqlüô|'3¬Êð•3ÕœîGÒ8î©í¢R£0^ß¾ñ=GV¾SÛÑNWaý‡’áxu™é‡rtæ�¶ ’ÑÛ¦•ìTïÔ®Ý9ÄPix @`�ëü3¶+¸íˆ½'öéð¥ßdrŽM4ýÖow‘QùE¯7]ñL•J~±œH*M©=R¶Ùp9+Gò[ PŸÛÚý•H\zxº—v*”[Îã¹r<6u4Öêò»´ ös:ø#¤³Ç ¥¸„_E£ÙçÌá:î¿‹Ãóp*9Z+ôÜ\‚¯9²ås_²~fœú\é$ÐðY�œ_ nºé!L»ý¥ŽÉv¹Ãñ�l#±îGùrƒ¥ÓF÷Ÿ€hèø§²ÊâHn ò0˜:§þˆÄØÔ¾›ï÷ÝŸAصAú` ?²‹ßåG™ßËŽ�nв\ôóþEcg&QÑ —œßhk$pƒÁ·�jÊ{•ÑO�ýë­|ð©o�«Âƒ Gè‹=ĵeòauµu^&S b9–`]Bz’€LÁž •¤ŠØó~/ÝñXË'µöOü.³»<ë<85»(5vÑ�Ö‰ë`‡w�â×6ìϹE!oêc+î]d{·W5w{gN Ù…¤-LH’Wªûµí¡‰+²;Dœãüʹ|çTµµåÓ3>A�\ôyæÚ…”nZJwùtÄšÃ5nT›kÈn—™~s/«óÕv…~�½Æ#RÄŸÊ#¯ý>#÷h&§³Çs\ Jð€-øQWzðw蜤Ƨê”óUP ®Ó¦ÓÜGÍa~”)ä¬`ÓJÍÛ^¿ö|R¦ªbª™ó~œ¼¡Jó(‘iÎ`~º¡V×¹ƒ]‘ŽÇv$vpÎ ›b† Yó¯Ñç<�ÖCD§ÎŒXÖXŸ?Þ¥™©åª2wb· Â,²®ò1¤;íõ2$kÒÝÄðoȆzŠ4cEš÷zôGGù�ø³i¿_îćÐyu¡´ù/›¬œWÌê³=ÊßiW?›ø´}^)¢ð}µdV9µ�?ÄH¢¡;Œ‡;À(+V&ÑìýûBó_ü+mÇ «™8ed'3m™}‹ÌÐ>†MY«÷©§ ŠÐ•3½Qbfw«Ṅ¾™­· ÇÙéŸàV!�ÿøv4é߯áTëýÒ¬Wû:—ûûL¯£p<úv�¾}¦\ã;Ì“ø‡9Íêð€ä`V.Lq�Õ#78Àí€uqÖ4øƒbÎíSòeÅÃú4?ÿmŠ™Ùð>4%©Ý|3$ÐÛCç$,0!”zc­„�°hÝ«wÊ&¾™«Ã0»âi4±]ÝWB(QÕ·\o %$¡xù* Ç^{e†þ ¬¦»èÛ ,—gˆù-ûö¾GLØŽ&� Ùj"ø(¬KùS6иý5(Ôê6¼Õ߇£$“(ÄÓím¼ÿq+oo©¤Ý^îÅšat{K_"4½�‹fÂYÞœñÖ`ˆ0 }ùPì÷t�ƒî(`eõíÐß3ò þÏòõZÐÓ³ëëk³]ñë%¢¡.W�5 NÈþ¤½¡mUqñUQTªßñ»§ZóõÝjK[åäà×ÙÑC�¾ö ODœ)•m.æs¬ÛëóD£“¦•[!+t'Ô‘êTñ©‹t;è¸&bp*ýþ8ô ð§4¥æ¼\íú"Òùo˜é‰#�Ê7>TLìÎEh3‘Ë+?LŒ‚�ó"ªö©"QádL¼0˜¤ëCý=ÀQrà�Êh3xräÄíC{ ú³ó­D»Õ ˆž�]ó¾Å �ÕØ¾Ë3ªæŠy¸Žùw æð·|‰°; -¢Y4|úÊ^÷©½Ü¡Ýßç)ïÎmUGt„êeièÒ^ýb/&°¿M€'žØ#Öã{‡2Xvs«ƒ<¦„öZr¶“‰b/ʶWõ@É^O¹¢|àõèvk•S-·ÙtL¦Æ££ ~*W¤»r +�t/½«’±¨¶év–mÐ>Ûú~1»¢ù‡—^>�Xu&tFÓ’äªe/˦¶":ÆÀŽÒ?ø2ϲ K(É 6î.Ì£:!´çsK ÂÏ%‘ã«„’à�çˆ#LH¢p’1üŒùOÚßÏfó,EâhÿSLïÓq8/`»qöOa÷é-95§%*½~€žãEɧÄaûÓ8‰à÷éM÷åŽÊ¥?6÷0T�¤?‰›–­AÈ·zË\Ϙ]ÍmìË2ž¸›ML×ÎB Èk¥Ïcà e°dÜ‚œ@?ü†+ÐÚíñŸÄoql¹D_ÊX}#5�f4,9åü$öÜÅÞ\÷ËÁ(ý©Ù䆰èÉ{™{K¹Ìwa9í�iœ¸±1ÀS�õÂmp„ÿŒS· y�‚,+6ƒlkË-‚Œ¤AÖ:v¾'Ã$É@Ð(ˆp~+Ú\Ùä'/ Òžh5ðãZ²Ÿ[7xkk°ˆ¶5º­ûÝË—>>~þk�‰â<�¿E �Ä)Un™»,Áf÷¿’‚¢Ïš¡ç&jtÓ»åœÙã ìÉKή\üt..HŒn]á/•.д5úŽö=õb¡§~p*ËH£0—Ïß� ã “€®æBÀ/½�á.¯8€{¾œó&—€›-Œoÿ‰èFg®ëzÁ˯žwQ]€Rk {_Ÿ¬@wQÁ†ÂMÝ�nì—Õ!_¥Uÿ ÷ƒÃW»ßžIÃüìèÝ¡C^ äE~Óm–§×_a­Êf”Áe0Jù£Ûê—×Iv¤h~¦nxË!ûÙ"-ƒ�nߣä �ò‚áC'��‰²ñ}a0ÂU\EÞshÐùøhïe¶8Ô”{×µ} Ž!#øŠòÓhRË¥*Jw´Øu"ø>—�}ºkœ4+Ó9‹´žÃ³/¼Qf飲”s»4øh yà^îåÙ¸ï#ܱ (Áàå²ëÄž\†Qôšu¾ÅUÀ´®d—8@ÊX:s§N‘$m�JÏ7Àô¾aƒÚÆ‘ooÜÞelÛŽ&h¯gk•«Èé,»¥æBªÊóü…Ë%â¶Î”D´é8 ØßCôÌ\æ†Ðξô<“jÍS«Ât ³g¹â0æTÈmfã€9vPõìÈ4ú*^(=~w@VðrÄkÜ�QûƒÉä½ìí ‡®F¬XöüÂ2‡ub’{б8†‹l!BU`GQ�´ù¢˜º¹WáU—@Íg 1»3U�¼Ö°«“p‘0GáññŽÁV+¦a;‰^BÄhK¥<ÞSÌà6§!êÑ4Œ2ô|ò H…»³9¨î¦qB¡-ïÏÀ¬Ü÷Í�ÊvQ:/W KÌ~¾H�Aõ€ÈßåáW.T–M/KÛy—.íË}!ßg-á„ÿw0y'Ý(™:º¬7´Cº?ß,xã¹MMÇ£ªÐøží¡©E÷ƒ Óu�zV‹u°Õ䨣¾`s`ÀØC&BG¿©×B„kÛwò,+¡ˆù;ˆ‹yXާ4wÈ©[_·u+\%NUü*la ’zV¨a’AË)—š‘K8CÊ-º� ÆYÍ£—®A]ó.iLÉѾkPÒPLcra|”Æ¥ÛPÚõBët v[…wkˆ.Šq�¹#âV´š5Ý2šòÉè® Ó®·KÅ’ZÖAç– }»µåäe⪡& :Ä+€˜Kèm þ#ˆG,ì"1 X_O9ûÅeÌpÀM¼ÊÊ2›1È2›2¬õ†â°^Ù'1(%¸Gbp8v½‘+1)ÊøŒÓç8*§ âÀy0b1b¤¿ÃZëEŠöQOˆ¿ çåÜõrÙˆÕsóÁ‚-Âù�ØFd920ËsðŽÁ<èÉ»¼é[-À­Ff²6µ=Fë;œÜÕ«å†ï3lô¼5ËÓÔ ‹VÖcÙÞéÇò¸\\ec–wLê´G÷Y™2™këç=Õð‰¸Áã£Ûu6„êë8Áën€¾LvÅ>dEÌsÐDR.IŒ«ö¾VQjÈgª�$L´2•G¸öáÛ`; û¶kÜDLVU+HÒ’_ÖÒ¨p •‘S~YÙæ?V¯"ꊕ×»—-Ò(N¯÷™.੯üy|Dû*z¨Õ'pˆxø‚n¾Ö.(„�ø×ù–5É¡¿ÕCyÇ ªÄ-¥Áu.@Å}ÆZ�E}|½ý/»ó66_q�-LÙú¬†u9p+?ëC´qÓ¤òä@vlºjµþÒá¶>é—>á×~·õ‹r[¿¬á¶ª›�µ<ù"¥Î¯íb�ݽ·‡u¬K•x|Û•6[§ç[,æ´~”ölƒ-Ö¶²…Õ8qý'†ˆÐ°Û±aðûMæÙÇýíÿ…Ùõ­3—q”‚¯—8ŒÉÑv¢‘{àFÖ7ÉK¿È>6gäl8Y6ÙÈé·èûÝF¡Ùhæß .úEqÑ·%¦Ë4}l ­‹¥ËtP•.Ó7¹3Ñj¯Í¸0c=�‡c‘"ã!Õ ¬ŠJ£ã4y0©¨{ ¢¡n 0oPYn‡,¶¬oIÍ©ðUÛá"!’yya–cO31£©¹_Â# B3¥3v�êX –$ÑH”6LÚ\OdÛô=uni “´6as§»´ËˆW™™L[Ö[³7Ëàå‡<›ÅZwE–Ü¢=ZNiª™¢uŒ7 [¼ô䜸æjËœ†³ {Ä"K£tG&¹L8Žcéâ’ªîkL%ko¬êf \U@£fkèÎ��«Qd°º÷=¥QqBï@ Puj—qaÔ¶~ ÌÆ©!`ow'%Í ¸àü Pd7ƒëþá»g_:z³Nßb)<:¾iš•ç™|/ÍÝ.�Òg |t…\Kº™ ¸Þ Ž[êqN‹µ"…�6–‡C¶¶Ø­ï×8ˆÁª6p§Ëb‹Žõ¬r¢/JµxjM¦%eÊlÄ—{ §î€üæ‘ÕñàVöBMm)TùµY˜ßl„\‰0U`6Ʋ°Ò¾R£×v�Ûu—†`ì.ÌLk$PêóU¤¶ŠJ�YŽ'뼯{ê£0àÂÊ Ñ7Èo UÙ)nDY2,7éû(£´§&sìj§o-ëT›™GʳòZ%±|‰Z �y <Ð_u„†s¢z,ÎyR—›U»ü± ÜàiͶý=¬u7c¶:ž•ÙË.òŒ0[¥¨â%S5lŸ––Zi=}½ªU愈I†¥Mm¢ÏL\QÒ¶ ¾2û�®+«ò‹YªB\›,ÜPƒªXÏ2 "!<ëQ­¼íܰh\úôê×ku!²ÈÐsN8ËŒº¿S\W›u*æ^pÕYaç8eÖãÁwo)m}¿ënÔU£�OU½È‘}’MÿŒuk6"Iƒ|äüæøÎ‡UþÁï°wi�øÃ2­Ü–üÍ ×…IâQoÇßñ~z~ïý>\eÕP‚tóB€)•b;ø}£‰¼·3ü—÷ûúöÏÀä!{†hQÓo…ºc]0A±G-×=}û|°Ç÷\È&“ÛôÛ½¾ù÷D¹ª‘׬ÒnHGU>ªv•LÕ™5\”™S×Ò,¯ÄK<~Y �h€Én#!dêÇ,ãI[fŽÊÚÅ^ûµ5ù ÇD‹ +a‡œ^ªØl`ÐÀé�Jæ&ƒ‰/ý#�x;$Ñ+º]:¹Om“HÅù,9èy=�…¤ò”Uø­(޹LyP";™«ì$xˆM¡1ù@Øç:˜Žr?V™À&s-ù'ÁækTæ^÷×WÚF][§Ñ¥¯Ë‹^Q­º‡F<´ù:Ö:Á¯Öà;�Hûg!åO"&IaZPX µÃ,¯‘nZ¶‡sN¼R‹3ö|gÄj=Vv –üJ×A7¶ˆ¯VÈdØ*ßÕéðny雲º¼d•uév£ßÉû³›Ù(Zm]˧ȒÞý*Þûû]*u·Zš Õ­©V„«�Çó*ƒ}C[ÊÈÑtœËpe/VB%®ð6²ÉõÐ¥°ÃóZÆlž’HŽÿûÖ94Ò±Šž@¼«ï8ÏŽ{ÿò=ãÞEãEhvŽß+¾Kþù‚åÿnœþËS¿vEädz¹5"¯Þ$ù_Öíáâ‚àï_4¨ßfE²ñÄÝÙ™ÕœQA»oÉ?<òbKhj:lÂ}C8+�. Ó ²“,Œ8�ùh¦H`ïç˜@™fE¹[–¸”²z- öS g?÷b&x ca/Ú«b‘;ü$€-j×Ó.KO»KļX eð$¦:¾­ãÙ4ñTêM­Õ×Ë Rû[¾Sÿv*’±/ÀXKØÛw,�ßã=•×ú{*¢+Ä+ç¡YB0qõ.È/–7WºRGØ©¢U¦–ØMB‚©;ðf'È·œ9˜¬FRì%˜±w§Þeo½ÞÎK‰ìà &îñj•t†A\j0 »V†ˆ„ÍŸ�8À(ޱN>eþý€8Q|ë�Ù1áj,iÔ…Þý›ÀüÂc7»EdÝâ« îßLLióûòä)-šîÏ�·º¹ ©G&8šU7}Å~ÖÁ¿J²ñÍp.ª4üœ&Ì”*ëÁWûWwàU}{H~™Á]œ$Ù��Úð.FàwDÌ,§@ƒ_'ðùÇN†½;zu—=‰@ ¡ã—Ùb<µÍh²×RÑ^�%¶(�~,$òB5¥V�³î2¹ØX9/zÈpyV’ìn­ f1 áùÎè_F‰Ÿf¥{>V¹b0à@\|çi²ÿÌ4¬ââ?2Ó¾ å<ŒP'ösÉGÉ&`!_Ã�Š^ñ$;¯²$>ëì‰bÙÆ@T#¨¸¸Ð”>ÉR®Ím|–µ˜í9¸ÿ2«=k’¿ÊhÏšäß`³gÍó“q9&ŸD9žb+Þ+T§`(è4yŒƒ¬Ïd\/¥pšß×z— ³úƒ�Áp’Ð{ü±Á¤ãjé*P¶ð 3n *° ¨þ'ÿ7½EŸU«7êÿ%낹÷˜1–Íoæö0�¬¡¨Úø@U"تor´P|Ê ýT¼ÑìÂÃIÅ;¶Z qÈ/²~‹RVpÓ`†có]—K£›Õ¼˜CTÊè(9ƒÎQ�–ãB’)SQí¯ìGÃówŽx¨Ï¾¨Ä¾r…Žëù…ȯ4):ËÃñÍ^«pÇÓ^ެ֔bPü#«hT‘+®cóÀ`=»å¶-½4²å¬Dr˃‘þmGÀ—m¢„a*ÂRî ʤ PÛΈÎ}Ì©v%Då—§úø  »‰ª‘5>—dGÃ?aÐQ¥Wï¦êEPjq2 Åø¾~¡¾`¤O¬^œ«?¡Äúv‹ÿôÞ:Ïtqk£Bâ Œö{×uÏ�ô 3Ä¥†2ÿŒ÷w§Î•³%é9ðÆ9ï¨Ä¸åm@­ÀH÷×D«Í¬“1Hо¨¸©ZŸÒ²UF­ó> 6¯‘d5�¡Ÿ±¯Òá{ȉ¨;(Œè Ü•¼­kHÖ^™^c ‘‹°Š¸£/žZVR]´ÿÜy«]ž“îÈUk¯â‹oït¢b_D„æžxæ_N"‹e²€Nýœéö¶QSÛºNüKâÛ;øEª>– ¿ÏàÅþã—‹@k?\ ¯àào@ª óÞÎ�¾Äz½ï1gsÆ6DoG!˜À(£�Ôe# =öÀ5#aé‰ôú äúu~Çd|_»_fZ†öñ�Árøq•ÂJ™ÎÞ!”_eQ*�Â3§Y{?µyŸ+ëç ‹ÅKJ’+Žn ³zI»N–ʧµßªµH]EpÕq m"¡•Eg»«IÚ~‘Äcj­ùà×£ë†5„ªJÅÛÐ!ýIœFÖCî�s\Zóë6 `ÔÙÃFúÚg$šº³6Õ ÞØØÚbÄæLÑ^dËŠ‰”X¯ƒ±/d˜œh²9n±¨cyÜ®[,`P Ë^oh|åÂ~íK¸ôý1ŸšÀÂV!$¾ŒÆ€‚³ïÆ4?¹ˆÁóE)2K÷¥ø.l ·N�S ¹v@}&©ªÌj³Tš ľ$â '@*u,èš]Ñ(¢ZÙ»ù5Žá¨QRö½%ß?ߨ8ŠÀì�ÿ¯»+êiÂïþ M\‚fŸHú¤Ûƒ/j4¾˜>m¨˜Ø%�IÓÿîÚ2ZÀ6j|Y7zŒ;¾; w•º¡öcÒ?hž¬ß&­PÛ¾sÛ9¬�¯9áÃ&*ë“=¨ö‚ÔF•·PeC¨rŒÃ‹E•æ *#Qµõà 1L�kWD¶ÀõSÍ´ i~ªЉãS<-öÁ sëð,ËP¶Ýl²ýúVÕƒ¯5ÎÒLJ¡chwšJ4ë´´`Ñ,⬔LÜU·”(¦(°©ØÅ/J8 ³@”¯À*^�U¸VºŠLvb,ì|p!ìÙ»o:'L íÀ­�ËzDUX…®Èy´ïqTL c¾XæJô?8E×ONâ2W#vÉ}‡L—º´Æ¯1ó÷PÛ5[O5{ 'Ô �P¸/Aoª|¾r¤û´To_HÖŠJˆ?û¹»�“TNÉæ)#ÌóD§É!Kº3Þ-¨¶ �ËY…qäãuôutù©ò’?§ñnС:+‹´ªÍUÛ(6®û_ŽšHÜn@2L8ñ4i‚.�}‚y'ànÄSâRdï PKÒV1]Ƥ�02qimunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-angular-internals.min.54102a2f063e.jsUT ëÆ«jëÆ«jux è‡mQQKÃ0~÷W”âC]ð¹!¢‚‚°½‰°,9g ½”ä:]ÿ»ÙVGe¾„ÜÇwwß÷Ýb `ãÒ'°÷�‚}vhÈydÀû¼‹�E ÎP.P°‡o0AyæñX¾š{$íÂC Ý¡]-¡ikM�O'Ä{ã1R†ê/zZ’‘¢J˜.’oÞ‚ocUQAÂúfœ]1®n§@9-�’›ê*á’u •  Ô “'½ VÑᦆYlõL·míŒ>0Ê뇕¬�’xëMw˜'R,ãèûݳM‘Ê_ƒû=›ðL€”ÑHe¹uÛœ'ÃÎ*(Τµ·;‘VÚù—«-#žH—[2ŽÊyêÕÿq;’F© ]cé…ÃtÀ§åë‹Aãé ?p> é‘W?PKÒV1]õ¨l É3Yimunify-security/assets/ui-app/assets/static/shared-dependencies/core.min.a5597cfc37d1.jsUT ëÆ«jëÆ«jux è‡ä;kS㺒%x§(»ŽŽæ]b}( a†s a†yp©àØJâÁ‘=²È„ü÷í–߉“pwï·­¢‚ÝÝjµZR¿$÷f‘dS°‘B¿ÑÄãÏH#êßË d–�ˆ´[¢cîH/àº4æZ±F$…çHí`j‹#œ�DÄ'1qˆ} ˜ŒŸGLçˆÞ”0Kš�AÄÄÔøÐ^'LŒðtÌÆöÔ D/üdŽ$À‚!ñà_Š’çÈ^ˆ<¤ÌÝl4¶#1>=xÒ_Ø!qàÍ…�z@ú…KÏ?Û|Ä\bbè‰H.n {dN,Íóì±1DîÃ@è>“ ÖðxCoØ­eYC#rƒȱ-!€V; bßmð@6†w‚q{ÂÜF(P¿rÖÆÒ†ÁËF FgjÆ"ïÒÕ%aI§NÀ#ÙàØ-3˜9¶£Î¿L¹èÜØÝÝ‘uP��ßZ ~J|C È®á4ò‘fYr²`#JG!}$„=3½Hý‡&)R»Ñþ€)³C=4ÌŸ�Çu�44ãíVÃV<ö}`˜-Ba§LÏuoƒ RôÝ‹ù2fq—Ðó%*žàEà’AO‰¯E·¬è–¥¤Üb&¨ž=v`Àÿâš‘.Î?÷aÚø!£ÌŒ`5%¬ö/éiœè?ÕI:°§' fÉÃäÝb‡šFMûO±ìPRù‡Ö1RŸÛCØmö(» $ùújH6€1ßá»»ßcPq*³Á@h\�8<ô¥î9j”;÷Ž.²‰˜» Äf°J‹\–AÚÞ³„ kJ�à x3%ÓuÃú+84uÃ0`%$MÇ ¾ÁÚá®Ï 3‹³‡Æ‘Û'!�“>ûÁq’y vžíÓ�½…[Ûô7¿êe®º!L7F¦ðF`)”oÆ<7:¶A< "¾Ye#£ÁbA”òþ(ŽýŸµméMYËgÆeDËv1ÛØjãêÒú wT‰Ú0�XeyÆÏ”¡áIÀ%¬Zú=Nq—¾-ÁMè§)�Ïl~$aë *V3ïNKiJ6jbÇ’»»ÚÐö#¦ívAœ`·Ä7_¶‰;‰yt³%Ó'Ü8àfÒÄFb ˆMö+¶}0zÈî^—“À÷SKÁ!’"!”º‚åªb*çLŒÃÓ¾iÐnòŸüîc�ŠÌâ_ŽnôÈǨDæŽX¹V76p¶õǘxF¦ø�ÒMY[W"ޤÒsMø‰Ãÿ)c·±}vc,51kØüx›žª¬ãðë9ä̯‹l§ý FðµÜÖ®-pØ~Œ¤�anç3]DŸc3úàe-€ÀóK±gwRÅ4=�kbÊèé&�üÚkM6Œèýdê\L«øKÒ÷¢‡¼^^Çž<õíQDc™¡”=ÊRá¤pW¹»ÄõA0`ç`œ´ÐäÐñ0…b=åŠ.ˆ Ø£­LP “lÙsäM˜*ÛÐAŠZŽö h¦ÚˆÊYþTæT”àÉP1ÆÅÒN�8ϜʱWªQ�ÄB0îÌN*qY±‚Fcx¹™ŽÍ2áíÓÚŠÅ2³K?*Û£³q�\µr*¨ø;*H¾ð{<ðtT=U÷«WÞb¥]VŒÚذ�7L N9ø úbÞÏ Àï�8QK¨VT„>C´¹‚"b¢ŒØaX„›œ„i˜\ÀÄÂ’¹³¬‚«us«Šf½iTõ¦—�ðä%©ÓRÞ›ZŒü4¹ž‚§"l~’—›oƒP“?=ÝÜÞ’H¹„_#½jzâF”7€d —Ÿ=aTÓ0©$t0wÊ@ˆÓ�Ü\«ºDZ‚ÈäñMh�T2æ‘™F;Ù,³Ê$S&iíÂP…~ u hY�ø(öm‘²å–o\í URã;`úœãúf€—i­$)�¢ÓQÕ¡rnÉ#è*H -Ó|ži».ê1Z®Î̹ó¢Sh œ@`†Ñò¿`nˆŸ§ªãciª�¯¬ "M^07œx3å˜eZl�õ„�˜’‡1÷𳤺ë<'b"`Y‚ôvˆKC‚€é¬eg\ÚäY·‚áD¡»ÈwJtÄ’©%ïNsDmj•o ¨0FµŽ) 5:%×IKæ/“–ŠFÏÜ”VåŠ÷ ƒó "´T% ¢næBj¾5Á.~õä-6£�¬—0ø^4¤ûò£ lÿ‹ôüˆžM«$Ž2TV(+y‰rt†…ˆ¬¾“e¯ £\عø¢mMšž¹·Æƒ¨WçÁhGu&Ì$›/û/GDûS3ÈxŒ§’p࢞‘Gë&{‡¸7×)l@¦ øM7×BT6޽‰2 _™}�ãQõõdbúŒ�äØÚ#3Uø WÙÿíÉŽ*7VØ>Ÿ’‹H-Áj´Ag™KŠT@<4ãÄÚæ�À™Aì‹iIe%�xÖŽ\”+›-ÊÖülVc¢í‰Nè‚IÛÅéòg%ŒrsEKÈ× œxR-¿ó«È*K‘5„u;¥‹Ìóþ(H²Ù¦­qÜî±/¯Ò×3œ4j—�dŒFnþŠËÒÎh˜B` ñÈÃ�CíT<½ÈöIQ'®[ëÆ|<¶æ¹åˆùžž=dטáÑÏ™·€ Ø &5¹LnN}ý&sTôÂ!q”GƒIÉëÖÎ&-÷Žnùœ� ÄRýûHw ½%Y…ò2Yþ)ww¡‰9š|mœ ¥¡½\�B…HF¢DÀnUÛ Ï¿vJƒÈŒó trêï |¶† �#{Äè>¹‡UNµü´O#(MäZær:a¯bu½?!w|D_¾|‰7¸°Ar�ëej'¡ù3º#r�Œ…™{–Œ¹!Z#cÎîß�qh;›e¬;ø_'á�>ΧºïgÔ‹˜/éÿœ€›ë=«Zôrú5j,W³Ÿ-&¦Ï‘3Ï“2sSe Ä¿!!Œ{³€¹güOXœ´<[ÀIànP9çg ‡ÙØÁ�É¿3¯@^+"èãl†NsŸ¶ê¯èU=â5m×#ÞÐûzÄ5í-!’‹TXØhºk0xÐx;Ñ5u–ˆf\Ž™ô,kžgÉÙ£»ž(O‡UN’MBåk¹[ C¨ÜT$9�,Ñ@ö®ÀÊ.¼½½Oï7â_ÑÞFükz´ÿ†67âßÒÎFü;z±ÿž^nÄ ?7â¯iw �wœNu2¹õÕó×”�äQ•N%ôx+hˆYmQøUÉÀ9$ ¼;YdÇí#k¨Ïûýô¢vœ^¿O‡‹ÒmÇYåˆ%RkFН‰¬ÕC¯P—c/Òñ EMJ,ñâÇ¡Ô ZÂO·Ý’^ù^kd pY8ËšLûåqìîîìH3�²Ê|z‘ïÁ’º– ¾õzý^ëäK÷ìê{ÿK÷\#ÚXÊ0‚�~AÿK>z1'žœý×ci U,H4Î0÷Œ»Qò-[rf"buIX�òD1È­Ô ¤³ #`ç2K. �Õ¡»öǽs,£˜ö@]»Sqº{1ç‹sv¨QüjŠj ²ï- ~'%­®|½–~[‚giM¿“¥º7ÏÉaò•ÙÓSùã2ª%_æUæ®ô Ë*•$–r%Å_J\O*‚µªjb‡wf£ÉBüè‰;³F £ ÐNú½]㯆f,àR²Åèê r®øjo�Ü�xÂÁ²†[ðñx£yÖH®Ù1· Mq@Õß•¤¹J¯6Wyʜ¨�Ý¡�;xlÖÓ9Aè¡ü ã}Â*�$c@¦ÊUÚN…²—ð#¢ÜqrUèî¨×ku¯Î:íF«Ûíti2î?Ò�þÎö]ã¦õªqY¨¾€�?lÑøoëÈ‘±íßÞ¥�ŠÕ0—Á=㘠ãÿì"¾{† â%¹\G†iÅGšéQW¥irÅg±Èw^ùN¡FÎŒÀ,è5rT²SÍ’HÅ}°ÒG xi,ý áéBK›®S² ÖŸÆÓþ?- þ¢òmãŠ-b`ÏnØ­ÚOE£ËªùÑWšu \ëKÀk™uSfÉÿYاöÇþe·sÝo¶N5†¼0hhà ҭ�þmÿÂØ4’4ŒÂ%ñr¼Ò¦cœpFFø I€ �0$À̘<Áز-°%#É�ûùí_Uõ­Z’ö=ïÙYb©Õ÷®®®ª®ËÑñ¥œqòEf|†Ç@2v•-á‹xÏ? Lˆ’Éxù¡ŸvîX¼ÿÂü)¿W~¡ñÒ ÔŽ·™~ê¡5ÚN˜>`¸•ad ¤ºhBL%(êª_xWÐÈB¥IóUëDiP�p7°je]€gš÷ú…rÀ¤|Û¯ÜKò¢W´”^UØ>ê¹!ð`á¤âƒL:�¦£p’ðA%}�ç”|“Õ‹ü¤;>‚Oú¥±ò^x”û^[-Àwv­Ç¤ÑÕò÷ N}0}«Etø\ £|KB/ÉXKÔQ{2l3Ž3Üá ™É‚Z('R4¤��Åæ€È©î €½ÃW‡¤öqtçrp•>¯\ßž§q |à%rŠ„ ƒR"½è¨O€V+¤D`A+[ÙSD%r‡ØÑÌÇêÓj… þÁ‚ø?¸þ§^c½RÔF>‘vëÑe”m|Ž6ýé 8? óÃ…¢€à°oXõ×Ô?ж0ëlçü›Ôºù3dæHÏÃ"|²¦7ÿM7ÄŸ@w¨:ÿ�‡ Z´ƒ£‹g¯öž_\4Ä˰‘ŒÏ€Q þ¼�Cµ!þ ï~LîŽg¢(By XXÒª ©÷Z0Ó™‚cø¢µW ¤Y…½ÒûŒÔ‡Í~O ¿tÀÞÃÖÚ²c-À…Š€F~ÇZ•¤:�¬Á ̦8açC\é˜Ò\ä·\¦…ï!q‹f!¦HNcæÞmïºÁtM­²¹E�j46÷¢àô³ž´®/ï@$ëÚKô  FØl>òñoI›ÍzÎõ4›»òY¡¢fó>kpà¬Zï¼£}9$a»“<.”:e'ÙÚ²|Fþüª7„̧Քˆ[–t–ów Áp5I!N$vVL³4=Ö…;‘m6 38zQÿ¹÷÷y§2q—\ÄÝ"L%½$Ë0àuÈe‘O<šñ¦–6l"ôZë×18í.-­†‘¼M,RlT%Ø£ÂkºÏEïå¹"C£^Tœ7›)ªdObÈL ¨J=‹r¼‡`jõ²Â_DRLÈÁBk0ég{…×&¶H½ìøð õ|"oX.iÀ¢*uu�æÒ0r½Ull#ùLÊ\è£LßÃTH=F$Òód¯q¾!ógäf£SÈÙN¶Ac«êb#ëþqzrÜ2 ž°&ÁÆ_¥á§k¼c±>5V€½� d�€Ôõ[ÙVÃo ‡Ô»s�®Î‰6ÚÈ ˜À ,üiE/¶Ì´‹”– ÖРF�a*péBy…Ìœ�y,�`p³B j^ˆI�”mÉd2;?¾jˆyQ%=N’70KDyÈGI7hŠd‡Q$+o^ÙpCDCȃÂãÃdПçÀû_½«68ÃÏÀ*`ô‹ìÂqšDDèàƒ"t&ýaúý �…÷�ÒÑoг‰ìYm«œ®㛸"�’)³Â!k÷O^¿)ѵƒÙ\Òµ—nÖƒ£·¥œÃ8“9/ÜœoŽÞ–Éjº"ļßݼ¯OJYá\•9�ŠÐ$yB$õg·´¥Œ¨‚ µ$+Ú/Bóñø½ù`OÖ…&¡å†2H·a§Ã��q邹qÛNLõ�™vrN‘AÜ�ÖQ€?Òíÿqxo—ñÚº (‘n%ˆÐËe¶YFW¾JÂtk‡¨‡¥~·e‡³Ç‰®Üv=éeçØV¯§òD!;ORîd[[Æ/ ÛÚ"s!ù0U<û¬ ÌzaŠ%ê¿Ö¥S*¸µM^ìw©”åöÐy ÒrU˜* ­ÚÊ%1gü¿'Ïîûòç!þ0IÏùð¾ÁíjzÛ\\ Ž"KEË%®£^%‹¶Õ÷B~/Ì! YåÙ Ôu忽cP9.OöØ,{ÆÞ§º2]Xð€ˆ¶åò”ÎVD¥ˆ0¥¡årW:¢)¤Ú�Ñdg2snŠTÂJ¶É¡•…Aª1òsì2�•@)¶ S¯îÅuÀ”È9¤ª®©.£…ž<¡¤Ø¤ ¯i­`âú"£x"âØùše>£ëŒñ29£Š·µ§>mÙ ×�Rœü˜´‹™V0:¡JûÌÞRz[mïÀsNrˆ|Nkž ¤y�tÊ·vðœSÉX];±ÚJß2ŸÕ]ú=‘Ó±W ±­¯LnSF"E+…ؼÊ5/äÖ­sÁÝĉ*�1ˆØ_¤� �ðeê%A'ÚÚÍÑf["(M£ô$ÆúU–š÷tßüÒ:±[yhlmj�ýÍ�U•B…%�ñï˜=™¬pŠc‰ °Î: 9`X{l˼63« W(âÝßÔå–ˤ«J{\¤ú¦´$÷;öð@ui%J 9iàÒæ…C›Ãt ÊÊÜ7¾ÞÌW9W^*IþFoÎj›Z„3µggêì/cˆ¶ 7Éå~3£·,Ü]î43Ñ@—I‹fs“&gcTnÇ m‡#K,ô¥°Ž¯ SгöŠƒðQ3ë.Ä]²/ðnÌ Ô\ÉÎ ”Ëw1@öb]õ¨ó'‹Hm›~ø¶ÀJ» €ƒ`O~v÷×U×1Õá<áЊ@ïaÿIŒÒß´×4âB«L`Óòf€°•Ý; £ s·‹àh×ÏØÊì¥MÀ8›”Gþ.X^ø _e¢î6V°,Î×Μ TÁr™[€ýÂ76ÞN“Ãó[Æs±ãÑ×ÞìD¦W@Ál*ÀO4$vR ‚–Á�zé¹ÁÅõtORB Ÿ'¸™dòÈË4«„ГJv©S½˜éø&_ÌûTƒ9GÚ²ÂtKîU™m¯Iw'Ø]é�êtMŽäX-]x_JRž½‡�®ž3ùv�¿¯=à2;³j~¬7Øþà•[¨gj¡^ß@t@­GÍ�»©ŠXM•ïYT®Ð"ªZDjHz´\FqŠSÞ,ñ|D,§—`C ¸pTûöª$=è6‚$Þ`+R–pĬ2qà ‚sÙ‡¢×†±‡¸=váÈl4н—‚פ|næv±ÊFhr·™qÂek 2ô ¿Ê|ËÓsõ¤ÝýwØø÷V´õïÆ¿�‰&Ç•RP‚ˆ ´ @p‘‚‡¯ð*‰IB²ÀRÀVÍaózÑVÃ��B Î£WŸFÃö£ýÍà„Ò@¶ŒÏ……wøî—^ú^Æ¿&¿({Ês—ÎmÚ£0‰¯†×èÍJ £Áï‰èW»Ž/ø#Œ£êQP˜C>¨ë®ªã¥ ¨ñÆ$Râã¢í9ŸS6× ¿ZìQN8YÌIáT¿™ÛÊ8ÊîÅ þQõ½X˜)ïNÈÖȧn1)ÙCUð³\^£ï7Æ·Ãç}¹œXa� Uª�–Ë«B\¨¶“hÖ§oòIuOêÏÑcؘóñ‘1 ÈÔ)+“õ‘ËvPF a{ÒmÁ4öÏ‹Â'ø‘£�42ÈnÓà9ÇåhÔý«ÞiF‚Κz<Ô¡ô��ê„j�bô ã}+´ .Ž´#EÕBôŽ˜FÀH,"à$QxOô£ð>Ìjø #|(æQø›˜Dá# ÃßÅdn‹üÝ—ðwW\Àß{â;ü½/Žàïñþ>ûð÷7ñþ>‡ð÷wqm´Å1üÝ_áï®8…¿÷Äü½/àïq‚�y��yƒ Á6ßR›Ï°M+:|1DSv¹ßlVµ{'Ñ9c¿n..AÓ-ò‚io†Þ} ­G¨�ÃÖôNäð#Æüód4x¶š1$<ëŽ\TêûÉ2!i¦™FÔ”»õ`g·Yô]ðÍië!6ö°)qËõ¡ŒQË'êÃÎÝ¢wT8ÊiÿDáéÕìs:õ§GÏ�÷^5ØÕŸ'0Ø5„^©MM¡ÙTTlœS!ÒÄyÉ»Ö?"buÍ¡å`áç‘îßsòÁªzöð3 ßY•62SÅœ¦BjÃDù)Tª:íUÝiö‡ïU±Òç#)/Aý*ý m–ßðÏÐÔ”´$_ÌÜVxzMUõi¯ìt{­?å{Óïý«üú²Ñ¼&G Ê/³ZWaM5Bk+ eº”¤=�Là*YöQu-…Œ’ôD¢ ¶“¿D}œÚõ$2iй»,‹»ª(ÉP¡0-`ÏŒzJ¼’fUÑ*Ckyÿˆ:¸ûÚä\Ø’à‘tU)éÁÀ~�¬ b¨"bgf½¦o"ðt[k៵R)A­-h@Š÷.Ár·åðxndº«gkI¨…ér%æ¸&/ÊÂqÙî€Ní>µßKðB \øVøXÓSGÖì’MÂæ(*{£¶K¸5¤±¶¶'u-û¥¬ótNž׌¨ò�5/¿1° ¿âßNYøºn´ìà*�9[?Ñð™DÕAïO+U6Q/ê¿×HvzgQçEy o¹`µ­j5_㱺—i“”mmkŽ3S#×'4N$a†æ4CržêQ�Àÿêü­›ªpP;±LÓsý(¤bš_3-òSäs²®oÑÞÎÿ•áý—àa÷Ú†å-Mõ³<¬*©É¹X;MÕ"üc¥$ïÄöúZmºuY3}×õu{G8 f X Œ$‡5³ˆQÀV%%ò¾JŠáÙÝ­´ÓU]ívÛþ“6STÇ_Ón7ì­YÕò§Òþ¦Ï,`™ª¼ÒUËš¹’µÈ)�$†¦w|zxÖðÅØ&¡úÝ»³£ãç�|e“ÉÚèðgI¨D¤­Vëe¤,~&‰¦ÁáØ&ÏáDÙSp„àÏh %KÁ—tÌ¡I‚Úfúmœ¬!p&æ9«´ë�6ì¢P(Od’òÓÕWõtt}ãÄl1"*¤QžŒ½<Ð’§�# ^¡ðŸFÐ¥é"¢/…ª“¤ÙÄß+øÍÔo!£Gx‘È|­» ¯3aÈKÀ«•ï+w�— ·Î, Ÿøøù’º*�!K‹gÖ'S‘)ži¶H¶e*:Rpgz#‰3fÞè:œÄ�ölD$—K솈ô`åàDA÷†&¸ÆQâªÅïS…¬ü礅Vd_" O7!+à%ÜÚ•B·ëËf™þ"÷ŽjŠº4µ�+Û Nª´�íDØ£º½îêÑ�²ŒKŠÊ¡w”fá¸ðmbYmER ‘ óI¯Àð“ꩪz•¦¹4Ò2½%OªVI,©10À® Oã˜z0îêƒÉýk:ù ñZw5BõEJ}0¨_¬»ÛÓ<£ ·˜Â7]T,Â)jÌäx£‚¨çkâ-šÍ…Ðñ©œ�÷5!ÙB�ƳùT…ujˆ¯°§ÓHyTjN0Î× š%cž?¿¸`º†oÀñ©› œö/ 7®z›�u$+ñŒaOÑòfâ àä/:m%ÞCòËqC¼‚‡IÙ¶_5¹NYÖˆ:>úÅ5t(&ÞTìºÎƒD–6©ªzÅdËLþè.9ôŽËë2HM!ží]Å{1* ôìˆØöùV3.`ýPªˆà_å|�×ÿÝ$Hh<öÚ’/êý�d²%ÑçŸn“*à¨4÷rÛ®ìö#3íJ&Ͳö®®Ÿ´ráab¢x‰�ìðsåo*eKèÍpÈÛN‘—®NVo mÖ¦¥1Io�oâ� R ±Ç¿”_]š¡'}Ri”š�Y.·UR['éÚИH¨ZØužefv Øþªpí¶vÈ̽£Åº½c5bøÅ ‚ž4»¤Ž²" ¯§ÏÐoE°—ɰU⳺ù:$O¡C<¿Ð.Í8W›¦ÅIR ˜í‹Xd®"k•êaâ&ªMÝïg­ú6˜´ KU«EG+VZ—‡1‡±ÛK9úÖµ]˜ ©6Sáfšf�™\i‰ú 3ã1Û›ðå\üB¡²AÓ{#µ1T‚R2S3×l>´ºÈ„ÊZ2K 6ë×K�¥ùeœ²Ò™ñœu XÞ=ÎßP»˜Xv�1YY Cé 1*«.$åUSȺ3¯íºÎÉ"+(ep@`\;´Ž–ï)èA”B6­/)·®W—ç×N ²ôÅÑ•»ª…*CÙ™›–zHᙹ^Ìå­Uom1w,™Cs›åE«"^F/o©ÝRŰh¶êïT5[‚ähçQ»zt08Í$5ó,>gð¹Ôœ‚&s›\™¨ýú¡×tÖ¾îÄúqÓ–¢[òÒ²Ö÷×få}=sûÚ›Ú#}—ÔåÉa‹Ô’8yÇ&½aÅÆqÆdè”A{?0– àOb˜M/C�´Œý PlP ¯ñ�ÜÌBè`* PHÒP‹ç{t.vÚÍLÞnÂÇÑÌêœÃ¦+£^¦'%<ÍlláÌEpLJl¢63Àr¦Š*°j)8o¶vÀbn�‰ædâéPD¦z…ñáT®`õh  Ú}/ äsÔsº«êc[Á˜ äÑq(&À=$WIÞsF}ÍG¥´(Äc|jU:™v§Tô@Æ/L·wª I‡âѼ˜ì§ ¨­­ù�cíBZæ¬ÝDXiy#³4Ûpy+@3*žð=8!Z3ç#‡••äMå #ñÔ£üòÆ5‡§(J"ÝTOùù,«;ɃÌA¯yCØj§`‡ ö VGË™| KEQG ´* @Wõ¨NVRZ]QŸRn–yy†•ØV{ÃN&o ãò´òVëI»ãÃî#ôPlo›³yÜúj|ߥž¾Ôb[g™ÝI ÓºsͰì³�™+¹håõb§Ð{—ì¨Lÿ{v@¾º%ï+–÷Å-y]ì~ç¦ÃÈ"vûiFf~†Ñd%Ÿ2[Ùw4‡�™M×·Ì.ªd”"« L�Æ›¤ÃdØIgÜÔ#Ò,jrNy]Y�¸NÆ{£B9u‘ñƒT¸‰û“ˆBðÆ:Wˆræò�Ý©ióE ¤‹0í,ç�…²ˆ¬š÷hϋߦ€£çj2³fsúD{IS:üú¸MÌõ>rîØ«‡°>ÓDZäðcNü�‘¹uÓ-¤Dû¿ûûýßÛ;¿=lË1ø[‹­]_,ÐN�I;Ô>K¼ûò~T2NhéH‰×�ÈÒ‰/ Ø*ÆõŠk¦ÍùÓ$ö29s÷Òî6&ø‡$)Jc`‘ž<Ù¹÷˜ú Oat "-XÙÂ¥ÝÐÿA^š&©7­–¡E·”UÿUñÌhdÕJ;WK©¥óeôq¹¹£äÖýä4"‡Ë&²“_Ë(ª/ä®ƒŠ”³SM/š‹øÇ{»¿=ü­É^’:0�3 $?‘âÅñdb™N¶Äžl¡Ú,uPmšr’-KM攩ËÅi¸ûà�ÈÓð�åÔ˜Å,RR¿7Â�Ôe¦Fò]Z§nZ¡Õ†¾(C3;â#ÑKñhßÀ‚ÖˆM`UÉçÉ %ú©—ÆÆÐÛðɘw2ýótͳXq ÆuHÎe_ÆJÓ•w ÐeÏÝ(%N"„ÉN±Lp ݤFÍ.ÆYH?ꤰ‹£^¼…²ì^?ËŒ~Œ� øöè)˜¨Ê º ©±!2öé»íû�š‘”ÅozYSŽ�õÝ]yîl¤ÀãÝÓØ˜ú梚s]3ê_Ó‹ß±æ2õb‘c­KÙ®X¤„&ñ0X¤v}¤0ÖbTþÒ†^î�ÉK'^#Î)V),#Ý>:UF«÷RŽ·u9î˜Ul/˜Ó•¬êOêÖ⤃nË©®?Óì1ù`Ê'U�2Žõe�y²ÛÊFc*Õ ×-pg)ÝuÂÕx¨Œž„ín.8KƒmÉHºj`K�㌼ð'™FuÇxl 7”€�ž _:\À cÏxK)–ˌú»;ÜŸ``â•q·Vñ¢�Û¤E½b ´…X„¦oQï(:7Â8bé9"—�028ØåÓP~é*œD½Ž1%Š¥ÙÜO¥Am×Kå9Žû"õ¦xGç=Zè6ÇïH'3lÈsFòYnɃ±3ø€”`$E«Û+¤�«ŠÌQMÑ¡ F5Qg‹u]Ù�`ÅÓ X�xTÌÕˆ1H¼ÂËБEø«Ã�­½*߉ �f3Kƒl±ÚdÜkN¥8R¤j]šÍ::-[»-ºG)9£ZK,X¯¾×n!ëã˜N¸('F„h¥i¸xéÁoš1t³(sÉž\²è‡ñ“'»m1 Óît« áSÀ¨¦¤uŠÇ£NÁ9éïhq¥ß—HÇSÅd%_Í..aý$Mo‘ÙB–m6ÉÌ¥©,Rx™EýÝõ;¸´‰g¢}ÄÅjImÄ šž pËü•ÙÅL;Œ²o6½^Œ>+õQ< �T®%õýŽÃÊ8äÔ÷©Ç_}¹ùHž ëë“p„ì|hutŠ˜��ˆª¤r¯Vyði6‘VÉØa”𯏇³«Eg]S© µ>Áip Ø¿òÑS| gøð}¬�ÆÍdÁ×Ôä4­Ü¼Ñå(M»‚K*·oIíÅÛï•+GÒÂ8H‹Á…iQ®ÜÆ\M£Òwé˃i˜“ƒ+bÎì4?Ž%ÿŽE�cdz9rÇ«œü[áng- ”’Þ<º{„*«^Ù6¨j¿kL©ã�ˆDOlcµrÎ ØÆnö Eå²~’¤J'½bŸPâÜDÅ´×2 HÑ‹‹™ò£î*¡9‡xý&‰Ã/¸l¡ÜkµZJ‘6)?Ñr=–˜©»RnÚφJF@UÕtÊ`ë…;�$ÿîU8ÙƒÔï&½ƒô%VºË5+™º+™°ñ‡ÐÛi”;Ê åE=I‘[:Y»¨À¹³¨'Ú]YªööcD¬©’î“|XPŠJœø=Z@(HÒ› -@*Rž1j±~�Òò:Åë×)6,ïmë¯ÛqJzÇD;·Þœœ�½?¼8:~vt|tö7¿m7wTÆk àIJåA÷-,¹³ùÓÐBÑãš»«ã:�›té:* ðŸ;lñ+½½ƒåÑ2œ—Þñ{m¦–óGé’…Ÿ�îC òšh ¤Æ,áoÓuYê/u�© 2½�%4Iàeáÿf‚sQŽŠûÅ'çSZñ!³NØ¥Ó}õ%yÿa"Y@Jv±RŒÑK·wÎ!PÔ�ôIÄ<�§Û»LQ3T@™>„ dŽÐix¶Z‘Ì G'0³6(M›3¹ Û†Óƒa'Ü"À]¬ÚÛ2òã­'âÉ“DŒ‡Ù 1{òdǧÛÿøñcé¥å–¯�ÔNþ$ê¦ada¼¥ýØþ¯—Â'_Þ_ì“‚8¼û?ºOó­�§[½�þÇü?×½�ùÇÓó­�’hû(©6øàV¡ ËùÒë½ÿñüs,Óûx.ü®~5y>ú­ÿøý»"–èð‡fz{Ûÿô·~Þ¹8ÿÔ©"@â—ÿ¹>ߺ¾+’ÿ&»ìêÕ™>zwEö¡5ÿ³:ÿE¢„”þdžxWQ5iìʘ´„)‹FxPâ5Æ»Ö[ù²ÒÂK«œG¼”’È—ÕÅÏxŽ.ßK†{–Ÿf�$„ m (»Z 0± JÛÛp—³‚Èý2И¬ÙÄ¿›Š´TŸ0Ij› 9t¤oô"ÊïQ:þAêyÐÇh<ٹϰÇE t¯aÿ�4…zÅ­"Ê¥‹»Œ=Gæ¹ÙÜLÌËÊã�4Ím“vlG÷êªUuÿ¯ÞÐ[{u.âUØPÈ0ûA:ËO¨÷“•çÔ;I7ìœ�i†ö?VhI>b7=ŽI9L31¾�P Zkàmž­¦v ‹ ¬©PöŽD!™¿*·¨šm¸ù+�DßtÍ'‡CÝôÎï¬{c§ñ>6ÀÓIîjÎÀEÞ)Ò¡®Ê¹‰Â<ÖÖä‰PØ $ ÀKТB•`má:$ì«©ì;‚)&ÝÂÕc¯ìÝ8¡æ‰�µt QºNí€áÝ 3x¶°!=ë7ê…}í–)¨@ʼn6P^E2½>öí“/ØÄ—g §RK9ð²]aÊÏ›" % ÀaE«ý3 ÆkX2íjö.÷5K°KÀSoY·Z§NAÎåe•Î*¸)¦76Éwåûì‹H¬gÌ ÅØ�®pn*óš,žaQ¥ *¬…‰qEAâ Zع3¡Õ•½^UV’”ž„ì’kÅïL Œ¼ß…ïøt¼–~½Ð*ÇgÊlÙòb’Òø¸£Z³ÒlèœUä°xZ(Ï3p¨â¼á¡~Ïè]Ú�Ëi¬tÜK4K V{K³å£·ïtáU<ŠÈA^²¹V¼\:ö.…Þ‘O^+©á1c~.víÙT‚G (ÙqÄ8>IÑ�>É»òw•�{‹ÙLÆ®JŒi»{û�‘¼›Õû¹ë\LÉ DË¥¬…Å(–Gö°?ïާqãù�Ææ9M,φ€ý�ò&ý*…M*Ò) ’ÈX,¨Œ üªK™_<‚\Ê%£Æªôâ‹]øÚ—_M\Y�C'øâ>²µ”KÆ©U9èÅG+f:x†RÁÙòŸsP>ãå’„ÑLËqÂWw{X¤åz\qÍœ~2¦E*^#jº �uÞŠ¢"åŸ1ª%ýª1“±N\Žq(tt߬�k©)XÕ8®D ’ëáMjfe|§,`íÒ"GX’hú‘‰Ý©ãˆl”+éc%fmë+ÑÓ°¶’UrC7aa‚�ú¸@k Oc?’Á8ÃLþÖç{_˜g-GPë»Vï“-zdó”ó럪eùÊ£©V!…GKëê’d.§_ŒÍ3š9’‘+9õð.Wûáµæ^¤¹çD*IÄlòËLKÐ7 ÒÃÅt%ÞQl£“fúaÛó„¼ ±›Ž:Ñ~dßeSŒ8*ž“îËú锳èT±w ê"²ç�M‡xðô#YÿOÍ#V€u1’]T¾Ö0$ˆéS¤û‘a†Þt+Aÿ챉5fC"îBÕØøõX÷”%‰í­ÌmÂ.�Å9Ëtꥺ-òsDt­ «C×ôºÁ‹:¸ bå; :ÁkŠxM(ã#eüY\rÀ|)N#'ù‚áÅÍM¯´V›r¨a«Qy3` Ȧ_ bõÉbfw6‹;rt¹€#Ö§ªšf· p(? ã:ê³(Ž{?vŒ~Ä’~¨èZ+Á¸t`±W·,pÕa¬xɵ˜FY4Žs8[¢!ºÐÁˆ®«�mríù«�Ë\>’G}õÉÇ CŸcµ¿t¬ô:¡vWÂ8äç“*T�T}ÿÝéÙÉk}-tzqºÿâðõ^C\“ÿþÆ`‘él[™Mæ�]@Ÿ\�_´Jö$Ý&W`ù¶ŒÖùiÒÎ(¦>Ó“šP¯×k$ã#8ÙÇøs.ðýYšQþÊ”Óïq1˜`L/úÀ^ùw¿ÞdÑ)çÆà×ã÷�rL¥áÔAn_K±ï��jÍ¢l ÷Œ‚ˆëЄ…|+àì-¬@§Ø wíá›(Uõ!§d ±jèà&Ú‚¯ ÈWãÁsÏ¥L`¿Ùèž_c"<ãÎî#ô³û¨Æ�÷ e4L›Ôí&©h$í`#Ë* � Ó=¼^zãÅâ[Œ|“EÙ)îîgØÔnC¼Ž«—G~£¯®lÌ› ÜÏ èÊB¿4VÞë˜.`Ö4Â/,Þ 8òÉò¶Ÿ,ono/·áa{{“ÞîÜ‹/ðÝ{¼|âÃóÛãÄï¶ÛŸïìÈ_CÏÜ ×1™ßÄD(Û„/1ÔãÛ+]˼ŠC†d^ð:ßëí«|>Iùæ�øzŒæMxÃgi[,Hž'ɦs¨«±S´ª]’•´R¦KútÅíÀž28ø‡d<Ò[ü}�>…Y42©ð†±d1Ïs⍠ÓËï | ¢šV5Î&цR nôßû2ÊÅ(]$¤*çÓÊŸ▆¾„…Ñ7G1�=Žî@éµeÂ(«Ž¹šeÚ•³­‡eEÁBÉ%eÍä”'¡ý®Fq˜uâÇi'ÖQ×âsGŸK’�$ü;Fi‹6 Zýút™feºò𯘄|fÒÒðgm¸äV«¿H¼ ïqÄ!` ìŤt)Î…ß]?±®TL Hbf�3°q€Æaoa,>Äàzø�õ2¸q«‹0‘¾niÚ¨öÂb'„WèyÆ«}éø !î Æ·XúÔSŸEÆŠ„“óF¸« Óñ-F·…‡R]U¼—dU"|?PØ•³+¶ÁÏëíu^àTçO§9áz€]Ù3t eý�°›gçÜA‚ÙÁvE ¶Ìæìê9.‡ B{=uÑýTÅ=‹d‰~ñV‰c±Ìxýa÷Ó±qdKþE¸]âTú‚þÙí|3þÜ•Ñæ¦1ɤ¯uv¥˜•Ý×�ØÂ§R¾á‚®¢÷K°_�« > ©  ¢šѪ:S•úÇlƒ$õHêv¥G×x¥cŒe\‰ ¨ä'Õ9¡ î}žü>Ç#h¹Ì´úƒeѩΜy®Ë]iªŠyb•8sw� ¬¦Wº1‰ûåÉœœ(””ÅÎÌJ;G‘¡Úr1R–‹€s¦,A2 óâúEIs¶‹rxé]:ãÊ÷¾ó=Ï�›KëJg“"ôHï˜ýZï˜ÓœëRkO¥‰t2MPKæw�pÞGzØÃ¸ÄÍåsë!]žÊ~‡„<Ʋ3éJN%í~ÏɪoêêI¤Š{Ülû¤xÏ‹ÕfÚ¥Ké×øi*r?¸' EÚUŽHÈZâ²=�kö•ôÞ�ñÝ‹„¬¥ê4—ö‰£¤2«õgQ'µ›0µ š‡í®ó6‡³�ŒùÐs–÷W�*BUUF¿.J°ª”4Ï�÷ç0;È ¥ŒG€ôÅíž“ýúªöÓrÍÞ³Øõð<ÊKG°.p(ÙìRíCã<‹¶2ô8aÐÑ“6Ýó£n ÂzmÊÇÛÏ¢®QN�øUã©, zF�H¨bòúî&LôÖ‘}ÿ ÅD¢…s™à!g&ü¾Y+�?+E™Ip™P¼©eí™…úŒO*J%ª€þÅd(÷DºEIôzf„hÌš�žÖî#Ègò0Í"íÍài—vžò,‘"vP О&tHø¼2‰Ã¨è&4‰´•�$@` ™�xT.`w'’Óúß`÷"vš6ÉߪDÉü|�þ„Ÿ¢½ù½òžb‹QoÏ$ìaBÂQK³ùVo‰{|¤ÕÓ�з2<×#"mœ.s\t4§µR$ûŠ�ÃÒ5õž¡<ÜkÀS®(6£Â÷xìÐ6’R? I¨žfoˆ©EÜgjchÒ ¦/j²&.+\ãíºÇ¾Z7³‘]½à³UùÙŽ9g Â÷Èå1ówd£½Ü(ÏŠz(Ñ’3íÞvü•ùöøF#;çÕ뫨ÜLT×L‚Aɱt´!k"Ï>‰6PO¥áPbM#É…�Äû´Œ”‘wü“•ògd+¸"eÃÈkð\KyŽ'\7·î�Éô®~Ò¶wäxê${t÷íLÔ==TÖÄHìžd½íˆ,ŸóAF�$ÖÆ¹¥fHÎ1@T(Ç£ÑN')ì\czƒž#ôhÌ�"kTá&嬴UÝD:Íÿô¬‘ûL"Xq€È3$^%h1—’òpas×l"%ˆ›‡T¸ð™0cb±æb’‹2Ä[s“cƒ÷öÎ8¿´™fåù’ŒËNîýÁdu™~Ü×î:Ñ‘lîÌgþ/Ê.`ÈxG™7—,’‡˜èÉöŽ6�vC•'+íþ­lB½¥&ËHmn ßä‹VôæâMÑÿLHúÀ¦æÂ¡L uÄ>�`ÔQ�sŒïŒXêÏ1¬9IÊJÍ‘S©ž»®ÓV`ªbÖÊe:ËÊb’m¿¼žÇÕº~”óÀÂI•�îO½$0.õsq–‹ã<üÁx�¯ª3�\ˆÃœ‹Nk(6‚±L:q¢Í$/ôSË“–Ëg‰œÌvHý ®Ln@É[þÒ)éÌ LWÇ(ÏÓÉ*Í8Ó9:î�Hé­‚ÍÏž=`ÔqV´¥-ëÑ#�äm1õ¾M=É=t„Ù‹´·}üþ¨™ðÊ ço¨*L�®€ÑkºÆ7&~W¶kF\Ä æ{»M»¸ñ>B!A…éÍÊT}�[¥qÝ�ëºé7{·mõì�±EŠÖð•{¹„y>8Ò_Õû�8¸i íù„¼<γô‹Ôرv“6­—­‰’pR"~�~„³‚ü¸ Iò)YzÛþeÎ21Yrt¶Ù×f§iÜýYk}V9CDY4K/#ƒ8°f£÷Ïœ§æ22Êó”éWØh0SY†MðêÁaË­Ð~Šg¦‚±F@Cv.%�DºøCŒ. 2Ññ�¼ÂÊ÷vÑ% €šº'ó º¾n]¶êì=¡8Û8çØZQ@ æ�%—6äoQ0‹Cìø¦ôK;uIÉýÎÃæ¢ûL6ž‘šØÜ6“0ïrx9† &‹„cÌØ™>ÿú õIއg=*fŸZ*f¹ó#ép�ØVöRCNý’6ÓÔÑf²#£@0Jv,sk&¦ŽhîƒXJMÌògè & 9˜6?ýÞÐm4$Wª€Ó^¢FBù »ž¨¨ùâ€í+w7\³ å ÊUA� ©c‚MF]JÏÆûrϪ“©I«\”èÂéšt„ ´Ù ¿ ~QÙ°è¨îgä##ü©Dü舌¥$‰×ˆG¨×�ŽÓù%µE*qz’ `£ z¦ôüyØ™dʸþÓöï;m‚¯ªÈìì«G£>3FgÒÕÃ"‘¶¿C�š#Ã�S¿;�îª6åÅêÓ¼Öpd€Fš@Ác�¹§xó’ïÙ µÓh°Èââ*,VÖøAEŸNû#Ðmc¶@è„MÛ›+˜óPÉ×TÿøåvV^EPäûÊÿ´Rÿ™o(3Ã8*P¯5ÆLW/Î^¿jèüïnÏO÷ç¦À·_(œÊ¼0%>Ü^âÝ[Û£nÏþ6ÊÓE6ˆd1{�ÂÅ´ŽNïST¼ý¥I °=/�œäê*L�&ÊØDº á}’~êÑjjTŒ_?½�¾-bÔýéoä!°˜ÑJlŒÓî\'Λý@^ªØÎ ÃÆkg ËwO;’vìÙ_¹Wcñ�n´µDô¿Цß['¯ßô3àˆåÉ£gY:SÐ{¼�õÝI1›6TA]É0�~+zI†‘Zÿ—õ[¶tV¨�û"šÂÎ��6Æ0gÈš¤Ã+-GÅaãñgHzòX"î'�慎ÆVAR=â_Iá ¤…uW¢ ¬ëf«¾“�¹4;cÉqŸ-IÓé-òWý ¥â´®5:œÞ„¥L-Š4†_h(i4b]Âkäý$.⟔a›jƒe\3éæ‚§ÒrIÐÍôýl€”8�Ø8¹ñÕÖ�ÓðîÿxÝÍ/ýË~NX%ðÑÆ±¿ý³½ýûVkû|+Xöþ§|¼Ûý×ùð=-ïøþݘÝPM¹ËýP/ªï·fÓ²˜âmœ¸ €vy5uô¸W̵J"Æ£¨%¾�Ô3* š;'{£5Uþ8n¨É¯xm©5� ››f»9 ¡· à,ûâ3PéTL2ÏÆâûç¬g¸üéã,]ÌÅp(†…˜Æb. „hQ E1JSøÔ‡W,—ËrÙ\àò wMT%Æ z‰§‚Z³(ÏE?+âÁ4ý<Fâó4|ý¶H‹H ú¤.Q&†ÑT ü&žæb÷§éê¿K1œŠQ<^dþèbØ7(6Ù“]1¹'&÷Åä�˜<ØWü Ç…ƒNr1ëÇ ü™ º…Hú—&d5æ’îùb6ëg0l4ó‡‘4Ð4AŽÆ#úŸa"ûƒ,M®f¢¿Æ©ø,>cøOñ˜æ9Æ‘¡2Ï(Ñ ºšàíN>öåë硘ö?ÃwêP?û*æñ Àñ}Ùâó• ÙN=ïÏæ"ŸõÑ%&("Ÿ÷¡¯²_#üI“1ôü3üƒe‹g@gýÁWQ@Ë^ö3�z@)¥OC�1/¦0,A²r¹’Ÿ¡NU2”�ŸdÑHÀÙŠ)´€^"Ä�àÒL|NÑË,ýt:@� HÏS�ž³Q`N‚Ü”þæôÇ�b²þ  è*™üõØ¡YPxMPú=™¦¾£>ÌŸŽ~ãñ¤“x8Œó1¡¨"Îqepòl6zBM|…ÃA­åÇ?‹þç)EØÀ3 ¯‡"Ii"“ô{UA%Ô7¢ŽÀü»Ðu ãÓï9ýÁ�e‹)ú¼¤6Å¥Ó)ÎF>éã{üSþÉdêüaÀ€Êf ЉŸ…ô2°QL 8’q­ µº‡y)KF¦½”ð=XݹÆ"q»O²Eë2DÈÔ"�Åõ k�kƒbV™òy‘_ɧ� ¡^ÒéC¯˜7ÙYýFãS/j…囌¾!_°#(~¾Ò yÈ—8§xuê Qæh[]¾“†ò `—N¦ü€6‡:ÿhš~/Rù<ζõÀÀót›M¾Iè¡ç8ÁyTÙÐ n’fÅ`Q¨þH˜±�SÛïiti>¡ú=ÍÒa_%Î’c˜¡ˆ½Jß.„ª(1Íb}t«„ï‰j™tM'é÷›LHs᪩˜#’ÖÃÓñyõtÍ,t¦¨Sõ°+W`n0fË olY5ˆÓ‹ý¢ß nùÓ&Ÿ gýü-NØì-öFú^¾˜¢MñИ–K–=•,µ`$‡¤¡®¦ ¥H(EïDÃÓtA ‹™ðy1¨â:‡vÄÕ¢™�$!{uÓˆâ|Ò_;“Îa)ò»öÉt|rpØU¶º´£�>ÐÄ•Rg‡©"šQDóhÊF쥬G[`LnNe¢’6“ñ™8¾t;zs�•Ñ% ÛÝŽO«ŽÁÞߟ¦°�€¬Šƒ”†žÆŸÍiÝI˜;¥ÈÝVÚÊþ­x@­NëK'hz³r¦Ñ±ªÄ!S0J.© Ìþ´Ll}ö�æts\S®cú$Í�7|á&±°$…5í*k°&µ×nI 'Tv@±0Ú` @Í�&•®aȈõƒéh[À•TVVaÃ;#Œ}Œ>ÎB ¤1Oix ‘‰‡�‹ ü.þÝøwuudÖ'0›íƒ›_YŸºµi67ÓÚd¯<ùwkf¿<èp\´›4;e>^LÉî³(µô>Rá�f¡šñyx—Øgèm¡ƒ“ýw´‡¤£“ã‹ý“ã³½£ã˧ûz§Ý’­"Fx§`4Ü(Ò ½®È©n|Ž}5¡ê·²æÙˆó�� œZ)@±^«OŒ§PLÅ X°ÞÇÅÁ£v{~ž>{vޝûòõ¼Þ‹KÈäõþçã¿¶ÿwc¹yîß3k°)OKˆ»M(×hµÛ†Z§Î¦¢ÆÿH£ù¯Æ/þ�Wò¤¿ýàÁîïý-7}ÒÞÛmû[2¸ÐV£ÓXù¶™ËõÍ”ê/—¼û˜º=-x¯ï>¡Ä1&ÒÖùάŽ�¦Üš€îÖQñ}~Ÿ.—$ÑápºŠ1,ÞhtÈP+;Pwiø@ AÁ0½6îf+Æ¿1ÆTG¸X èˆ\¯uÐwS†þIIJ±æâ†.­¾ÃyJ¢­ÆöäJ›¦oX´cNÏÏSÒ2eÚ®^ý]k³ãÊwïŒø7Ÿ»8ý̰1�wF�˜Ô¥ë\ÝÜrì5Î_¿yµwvØ {Z�°V¤�ª#™ÉKdÔ�Úg�ðÃ%œL=¦æ™©ñö§-šl´õi4’BJ¡­ß%g …‚p±ïÚ£þrý§g¿:t�R^ݾãÍùì—+~÷¶Ôo”�êJáð(õø¸Z1™©¯ûíáéÉ»·û‡¶2,¢v¸øÕÛÔ¬#åÿ]šV3w×ÿMN÷ß½9«´­äÝ76ûÀmöÔAŠŽ7¸½õŸ¦%íWKI[·fƒ†ºÂlD3àcÒ$¼a.jð%vÞˆ�Õ/’p¦7)qýºÂÏhb§ò¡L@æêOƒ³éŠ.¿ÈÁ µ×@,,-*è÷®¢s3¿ÙŠ\BH)¼±åØŸVm�OŽÉy!>HK@’¢… mé¸Aœ,éI%ÒJW†ô(“hȉ#%pP ÀžÐX,�…aMw¹uáë)º¨8<~ôöäXú_=†Ó|ïÕÑ?‡oAãÛúï@f½¡ ŽŽÿ8Ü?;±%lùÜø2 K.Ÿ]œýýæðÔ°;o§×Ê�~ø‡¤W`áþp%ÿŠ˜8Üu¤¢NQR°qœj ³LY)ÏIÛê“sI†Â’”Ë6¬k$îEåòki—¢È~!ý^ËM×ä}5õ0,¬/ä‡Q–δ#ÌèLv‹{GºÌÖ„w�t€•õ:�¨Ö+:ÆQ® }ãþçŒl⸷):w¦� ¬ iÏt¹ÄzSMg’q½¹­L›ÍS¯ÈyÈïŠB¸Õ�Çu¢‡– ;éJª?Åš©w‘TÌðù¥ö�©U¶ …Í"$GþÖô˜ã‰Ã7ˆÂô)¾7›êò+^.sª" œXÖdØŸ¦IdkJ•&'ìUÏ©¨(ð͘—ÐBlà周Wa dKS›õ©[ýáC«áe*›EÉ Žnvòæfíº¯ž¸ L2ŸJÉüœ[¥•bìzø¬OŒ÷*iVàôL}?I÷™H?#“Ix),«Ù CÊufJ0dÈ£•�‰FÀD¦6Ø™©�€”Z.Éuy¸ñ;‘w­ &HQ ¨<Ò…€�çÁU±BU–ë˳‘LJ� 7T)×k– [‹1‚“{¥�(6�~r{‡ª&É^çˆ Ä&„‰µ�[%³P.ï&¹‚@G’wÒ*á_”•½ºPG"=Ä&z?§áÈŽ[êvì£ósûŽŸàÖ ¨‘’cæv¢Ùü9%Ë\˜•Ýô66‹4søƒüD�ÙÙúaMVµ´Ü/.§€«›CÇâþ“Ž9;æ(9Ý?yshŽÀ”¿o�к…Õs<÷Äø—ÐÈߌê}9µ–éÆŠ÷o ×û·<¸ÞÂÿ·¶hÿkJ~È“Ë8K“…/–Í5Ä_S}š £#ðlJÇ8²ÎäÌ|¨ZÁ#*$¢žHá’¶~—%:¢¥7lf:¤ê¯¬§j‹ÅH&=z}¸¨Ï©û·¸ÛE”5¦ è9 PŽÜð~E‡n"„íô€ìSßLE¶ÐA—ð+º­$,ÚˆìD6´§4^ô¯jQ£ îdFêáÏ©¯´’Òš`%©”©Fä|I´'?ø<ÀlšD#ò9©'IŠm°™/ÓaqUãpe”È¥p¦²â8-ìÂW§³Mø–_«"¸×®•�g”I2ºêEX·v�5 ÊŽH¢�ˆÅÃsæ“nºLŸË½q?—§L]­L8ÏpËü¸½ÖDŽ@ô­zˆLõ «y•-’£DQ¹F>VׄQ�Íäz¢AKm$Í‚ÍKF±ž’ ¯!R¡ �2¦£X¬VY ¸_XÉmo¿8—]é$!…2Ʀ�i©�D%<´ ‘ñ—·„¤‰ ^cÔeMF |ˆ£*h Æõv¾ÁN=ñȰ>QÛ)6þèaNŽ’SÜ]xRÁæ�¸|ÏUˆ¶*vЂrìÈ´'ä'’yŒi¿ŠêÕEÔ0Ìh¸þÐ ´J¼DWúYk¬% 夆5 •Arl„¼¨÷mï_ªp+:ìr¨€« £™DÞŽ€ñ¿Wâ7îöWª Å äIFò*”ÎÄ+/-:2Qv�íO‘Íçj %*AŠƒ$pܯ«¸«Ó¾-`åþhœÂuÕèÙÙ�»²ÞH$=púÚûÕÕÕ4}²ÓÓCQ¯¼" uþiU·›ÌV³x´äœNŠ2ª'“ö 3Õ¬E·f^¡ü¯b.{çÁyzh�(&ã?ÀžG-M`Y·£ €cï+µûˆ¼êG’„4ýþue§Bm®(\—!!ïöÏÉòU¿UDuD’@"ª•êf“^ê1–‹Êc˜ÈÚ¬+¾¯]òÔ„Mò‰%ýúÇTèÇÈÄ[„&+H%ÒDZyÐü^¢ovüª5k¼dóÓѸ\­[xÜëºu?Wµ¸Kù¹5°19x÷ê�Dº¶†$žQy)X£¨;*HÖ雋ã“ã}›R6’Á­óŠ÷J¤ÞÜm}Ã�Q§*¢”×è%ãý|~Œµœ7ü.™Ö´¤a?6´Ž¹ìŒ„€Ãã½§¯.NOß^<;Ü;{÷öðÔôîÖN)‘ü¶Z÷ Îó0? FVB`çÎÔM=ò~¡w¬ôÆ@6æ$ˆKZ,]93åªK|àißÛo ƒã5pnˆáB³sÀ擆˜ÀÏçQãEDZè/ZÏÌØ¡9Ù±U'ƒ³ ±òÆ âÇ ~w5BK3ø½„ŸAC\ÀÏ�†ø?À5ÁOÜŸñ@iˆ}ø�3èÇýÇIÈOÆ“ WÒ©==[X�)b6TÒ‘×xg‡Ïß�ý}ñzïíK<„0ÿ¬!õ6ŽñhÒa´ë þ+?®¥NHáâÙÃ…! ¹CãÛ¥—Šø<Ì´MÂRb)`é»q�ŠZïƒ9|Lƒ¸ûiyç:^}BÍlzªbL4dók „‰W‚�O†këµ¾½âô*²ƒ²óÞ�…b©'ã·ç}®U‹`�Ð�A0Vs#àj]’)˜ë7 ³¹`Ÿ�êÔYÌy±ø·tÞqÙïjÍò�Š“ßR6&HµöZøhJ½òä«; ½ü`zù�»àuÝ?7Qtž:°V²�S­¹Óÿ˜6þ¬_ÆXêlÖÿ’âÁ¦Î¨V£aªOqRþ´s®ïæ€dq>µr°ìúJªÙRôÅ{`4Qv%þ4”Ås:¨ß¾=nJò.¼ÆÎÃÖnkgÙ¦?ØQ~ ¼Ú³“wÇû/÷_^œ¿úÛ.•Q¾¹æw¾/´DëŽGÁð G*³½Û¾Çd&/áèãña¥Éº�9ì‰uŸÓ,8p>J¹V¥T²MQÀz̓¼ 稛¯o¾Jm1ò¼?ðža0ðJŒÅˆñ–þ,žE饃 ÅáV‘ýHÝú6Óá,. \9szÚJÑ ‰Ëw'î6w~• P�ê03Kòä�¬#NÇ!$Æüˆ´Æ%¹¥�CySW§÷Ç€Ÿ?¬¼KNöQj’�l“buB¢ÈÓ¤®Ü.£òqS† xðãsˆ2&Ã=x‰mسi(GeGs�}2A ©Ð­ñÊêìsJÙÑ;l †3楲­ÐÃÄÖë(ÁëUJñ_ϲþoÔ}Ë'éb:ÜOûS´8§•ÜG§=Ñô„*¢j¾·‹¤œ 8+«Ê4Ë›ˆ<,½F_E?ÿš»^ö1®|ŒóS:_ÑÒSÉTß)#)y·0ðн›úd* ™rM†Óu% ¡ðtæÇÊÀÍ?¨díš•<¢»^ü T£ðñ ²JLK†síd­‹$’t`[À ™ý~Aö]!U¢Ííéå F‚«óŠ`Âé<I©Jè ƒ÷•é¬-†Í&}ž: {½7"5ÇÛ�&ÜDÃçJÖ*Ü`Ø‘Àl�n™`ªÌÛ3´•9Âa ¤à 6KXÿ×(S¼keu¥;òŒü¹Çù>øÊ- °‘ø.—t²7…>oÌ7uSzl~'d¬Å¢5ê�ÎÒ9Á2î&ŠFYN”%4- »‡wÀæ›×(çn˜Êo�ïÙ€X¥Úé@,xuãwÀº–÷��#Íâ€Ê(€Š¸rÖ#;j›D”0› 2Pd6º`™öá|W.ôâ(®á”É81Òú 9¢Ú±¡À3>AÅTñ£%Ø\CßK³Ò_ªù ]»©Ô–�Zºx(�“4‹.’ñÅOèÍÅÅ }Z·­±é–§{Ä•c/iŽk³­A¼¸¾óñ1°(îz ²y *ÄÝ@]ЊؙtfQ,¢ÖõÛ³Ù¬ ô­ —Û}ÑÏåòiÑh‚‡6MKF0Céä¼1ÃóW�5•þþ¢.LÔEퟶL~õÛ~Иõ«õ�ª@-!õèü@½R— £Ã»ía·- D]/ZÙ"9Yè(KA¯Œ¸Zh¢ EthŠ»凰=2ÍÒmÄùQÂ`Þ:H\‹ç PùIO7t gë4Lý’¤(·Až%­Jã%Òäwê¯SÓqZWÙ/×SU¡B°Äö+f$訸ãfù�¦Nëç1Ñ,”l4¶2àæÇÀiãÿ�=š¶t+±ºT Žñð¬’ßÐïó"y¾ègÀ§ßÜ{7Óª %µIÀÉqKÉ·ì{CLúLÈÑœ‰1P¨®�¸L“ƒ:&oe‹ÐMK-ShkK’W+1@Üžß–ÚÞkÚRÕß°d7X>Ç+ŒRçÆÿ´±¯× åùV,ú‹øòvR¡[?tèr°î ‹ v©‡ÂW@›Ð“�ƒZͪð9cNþKõÁÚ|(¶í{­TçFnéF>ëvVêF6ª–…ªcŸêÐF%˜^yz_­ÙŽ¥\ëwŸWƒbê*±Ñ �Ót®wçw³;�ᯨÀ}pöúó€1ÓÂÃÍ.…Ò�!:©J‘Ï‘„²P²Yˆ­EëO¨k)·ð0n‘N‡¤\Ì» Ϭ¯ õìÌþ¶2 ùއu§‡€]¶ˆLgU� ÷kÝ Ké àä)ßTÞfÛW£Xqc8¾ŸÖö±ÜA)‰¡íxË4Òá.›T7»43¥Ø/©û¾²Ù7Ð=wÜšÇóÈ›z>ßèû®7ýŽqͪü&¢|ޅɏ¡ó7rS½¨CªsgŒœ<�†,þæ±S¸NS½[ õsÕÁJpUN¯èvQíqàûDÍ,…�–Ĥ,ô1RåúB:bÒ\mü©5Þž%a²Ò<ʵQ´ûI¼WG¸E™¢]¥¡nË•‡ç¾{µx7ú ˆ¥­‚¦F¬“☛ÂÂB{Ñp¿üyE7ÃÀ‹?�€5g?Õ62l§½«¼²Ëˆõ8¬u»õ]Üû$@„±/^©›ÉÄðñ׌ËfXÉŽD7M7Ʋ栶K…áH;ë'¾¶ŽJÇüÒ@ä`;kF¡m:K†®ƒr†u³`lB%Ô‚QFz!Ѽ˜„m}hKÀ§Ë�Ï $ø—n«0¢\ÕÖ:t«iH âŒKÉêÞÆÔo–må˜à–za&¦¦ß·]– nÓk?¬øÅ áéwªƒ®g(¬ÚÃûNøÒy|‡À‡�àŒme§#'‹¡öFåR=‡hÍ×ý¤?Æ«ŠC¼0;üÓ‹¼•f'¯/Þ¾;=¼PúôV…½Åü5A·=ýi­$ÝðeºZ¨o®Š é¾x<ÞÇÀU¿À¯Òœ.Q†O]%*¡€†Ñyøe ’–º—Ðæ«Þõ(-9àRZ­ÖKt£ ÇÛ,ÊŽò½é÷þUþ*¾DQŽIÝϾFÃ8COýp>âÉZ�óf’íh^±k&¥§ nußxô –íË Û¥þA?Uï ¸zÐÅþ‹½ãç‡% §/?^®•äÄø³U¸öK?íÍúµŒŽ?÷à»W ”˜‘ƒ‹èý&“°MÚžÛ¸ 2�â½8Á³y©r�d�6§o3Ï û-ïì™Ñµ^]òÛÄUyÔ<ÅRI߈g©ÔL9§Œê?¿ <­àȼÔ)m¥÷na¦ÉŠ›Ä@ôu·FaÔú<]Dó,jCª‚Ù°ý2#œÏpç~{™ ­™<2°ÙÜmßÔ¤-�Z2#2}ñ<ñF>Åð—£Þ÷'G»9�ß+øÍ© ò_)3H™ª”¥Œ!e¡RàY)&Œ(g ¿‡ðû*þmÔû �}ø=ƒßüÁïn¨Bmu)T0#æËƒÍ‹ ¬•cmH=õùqø'Ï+Ь5•âæ89Úy„ÚÔ±Šso׳=¼ß”rBLú…qÇÊä4ƒ'ôVš‡ÚWRŽ<Œ}%Åõõqw{'(Üo/3�"…ðpF§ÕDèØËÃ9þLüh1¯'vüŽ� G„³”“y¥Ó‘`{ªkw’ Uö¼©Œ dâ]“VŒ�ò’OyO–—¾’œ*Ñ‘=ɇmð@ÛÎ;úÜÊâU?§|åP€�¤CÄ<•brÙ$-Z05> ¨é(Úʤ/´FA,xœ!*:M� @‡…¹î=éð¡ È\™ÿ‰X¾IušEa_ ƒaÝÓ ›KýäF—Â4Š„¥>ÓzË'?¨¨GìùC\L åi®ªÉ" ³ýé©Ìª:ª'É–äËÚ¢û*3/kæµ-¶ï«Ž ã°Xym@? ×J-Ã¥@œY$�†(,xt&/Wá¸cÌÄÛ^˜˜õžú½�‰=¤Oø.ÄÑûeˆ~x™éÂs÷Xi3D½½c¸XbÕ×nclm ªI[õ ÅÒµÚ4Üd*<ÙöjI( ES»}� ˆÄi„[ø‹Ü»͌d©pmct44R—{r5›êˆ<ˆèvûYâM»»°B©õH6@‹»a³çR2kƒU{9FÆ,®PÃC$žŒV©D…9äÇ+ “0• Av‘ø™î/t/Wíß vÜ@â4? ³ý‚b›øïHÍ�u�j.f =ŽÌššíD�ÓNd�>g ÇgÚË蟋(‹££ º)ÞŽHzOØŽòoŒÏ%£/Í"‰ÿ6ËÈÓÊÍ“rßcž„}¿‘¾i9™Ñù•Q"aÌE2Byéý1s•ê;Sï<b2�ÇÐ󼛇÷Û¿? ’Vš¼ØÃÅ"Üj²|îCcD-¤Ò&)—A »)ZO«ÃSœS™£›nM¹[™FJz7²$)'x¯ú‡Fu2JÜwP(¦;\”¡uJ옢=dájJ9#NM鵜…Gb×” w*þ“O¸ÁQº  oI¬ Q³Âq7†ŽBïMù£‡Ln¤)ñ¬ï`!$xQ³Ùh‚óìhô�!ç˜)¾÷«§�ô õØ!Sø&†õé¤?L¿¤3<>Z2 ºL°ñ!Òjà:÷I­$FNƒ¶GUm]¡GJ¸díºcÖ±´Ðø‚Lì)v1‚õQe})]Æ×gñ/eO_œ|¸Ø?y�š¿âƒ$ÍeÀjVY­óqæ) k­¨?æwÇ3Ô*_Y×&�f)QNoà¥Hrzé²n<;zuvøöboÿðÍYPýðö�™VJ”2Qá’NʱÔu¿ã§š, @SßvÇ„ñø�t¹§gîLWŠ’+c—ëIå³(1C°’­ YÈ×·H4ç™t¯W�VYFr#•qãQW¤›÷ñð“ar³j5ͦÊ�A) ’j¦UŒg]«t$ñ»è‘Wù†,¾†=xdÞ¼§¬¯ac!é¥D. t’�Vñ£ÎæT3} ‡! ~×ûŠ5&pr¿GןTØî�‡Í„„K/ÑNX¼<»auî5•4ÂËBÛo]FpÎwåû±T8IŸn£nC <ƒ7J›õ5BÁO˜°'‚†Œ,€1åGi¾éÀD꾞àkÐБ®Ôx¥Ã¡'Fª|)!ÎJµ*ôÖŽ‹€÷c@Á™eZÐù|�…Š"¯tµÐí"²Q2!u`¼dõÅt¹Üt*n67Ymh+Sw»Q[ã”j\lm­*ùËÒ¡ùkè_$÷ Ô«üX,$:Ö7a3”C_Æ´1�¼HˆJÍ”×Õ~˜vÓœŽ(…‹O;‹(šLå°³ïC£”¨2B*нzņú¸YÈ;d‹—Ëôr!±ÞBT�èw*ç øK-U$o)%ÊDG­'‡’ @ÁÔVòÉ@ñN¾�‡èÙÒh„S¡I“p�já€0±_ÞHÌTV¤JiIª¤¢¡(#íõ…R]5ça-OŒíNN`ýX¿¤FŽ–à"b¸ÞÎg¼Ó[-+mµ¶IÃme¶^f·Þr9êK£µ)©æg”2qŨ/ií!§Ô”ûŽ26yC3yQY &B“ ßAšˆ³ÍûìTSg[ øì4+ör¿$@042$�BϦÙy�ŸÊ½MÒk4à�zÂ!<>”„+´¡6RíP‚y¦òB„BqÉñºè'F6ïP׊¨±>8åOõÈ ØRgŠ)…U9³¯ š~HÉ´®.δ‘õý¯šíŽcW ½1¹{'zÒî0±·½-¯î ùHr|±&�ÛÆn@S>í•Ó@ÑRMé�#8dÔ:–Gœ ³(6ÃâD)ƒˆq‰LÐÃQ\:W} Fð^3&¥�µšX[ÉU‰—a&¤±_u»„¬WâxÅœ*L—w÷aQ‚Ö:#ºcf¸¾œ°ð”d™VËwÍbv'ŠäžïÒ®-q‘™¶…¸A=Äê/+¦‘5}Ù¯ƒ´š<SJÿgÀ™›yºÍ,a`MF��Kó ”nÂ�¦„Pp×>ÊiEN'¢-ÆeÿNŸ/ px°4µÌ‡P‚ü3Þ+Q|7xx@×uPû̳SÇ££„Z#QÒ�ä;¨@òjÍ=�aн9ZW”2@‘Ö€RøñU$ÑU $‚Oýt¿ÆMê÷!T¯ÝsG_%´Q~^º:8¯¹;ê—9@—Äs|úºø6±hÖå2„Cø�áaqR4�&±*ÌÝa†è1)_튾ܲ°xý’šÏetÞ-zÑy¯�‡Q@)HÕcü2yߴض Ø«.¥ («cÚ炯ޜdô‹0Á´L�|-% %Õ}õìæ?3}Sz´úžv¹D�¾ŒsÒÍ­î+òždµSË«ˆzèG‘}Ó�ä$]—áWçäG÷WA¬áòñÎT?,€JÉ ý¨eÎ! ꚺב§êê©’ð rOê¥d®»Ò•@Ljò~—õ㱩 ‡‹!ªì51 V¥î‘ù �œ£á’H¬>u‚*:¦†²JP#†H ÔŒ9]x€Ñpîa‰$NðN‹»Ï3#ÿšQè]vçÊîc˜Ô>Þð8�±—=¬Gê2;;xiX¹ôcwý&�î›Ñ£lõB¡ÙT˜Á|g·Ô§]çúÈô.9uÇŽŒu „ÁÃ"¾r©åDˆL\)�¨Z�,ŸL7jÇl#,� [3Ü~ ^3mÔ“~�6*pu–IŸ_ÕYYï+®×YÆK†È±bOÃu좫 x “��ºÖ3Ü›NÓï§tý!‹‹Hò´Yk” «sc7F„Ðò@c¤g�ÍÜvd@þŒÂë$-â‘T¿¤”Am‹ÄxFÊŒ¾‚ Üóv‘`d,̧í‹uº5ó(P÷!SVi¶i4;`9K¨ßž«‘‘3s³D½âU¬u{¥‚™õ"׉…@륂Œ`À9-|‹;&¿ŠÕ–¶äø={ÚÓØSÝ(ªLv[Z¹K*µîÔg°aÍôÆaÔmYG'@ _«´ 9ET$Ub´ÛaÕëøgä›k 8î£s­ÉMüj«¨ÔØ%½m•†�¾¼ÁÀ'åRøO,TãW¸Ôú­ZË'ý_ÐZ>é;Z˯˴ˆL¿*¥GqŠÎ"C•DþZ‰æ–=.P>YϲøèùDëî ¡’†ÏÐû˜ºKäKÉ€…·hgõ¶¶ŠsŒ¶ ƒ±}³@?2½®ŠÙA„i`žy&F”½ag0y}!BW“aŒÌ,©h†h¡ù"¡Øç¯�˜n6¿ô‘Eáš$PƒÑ=jæ¾nPªsa>=ö{»Mªˆ3Ò‘Ñ'%ùxÕ–éè+3—yɃ\ÞÕº¥’eÉ g²TY�P§Ôï@é Ge˜@o0ïaÚ%-nG‹�nk¨æ/ýòÉó,ª�[‰'±”¸dä—q¶Ç-tˆ¾‡Þmzo¢sܲH(�l—ˆ Le§ÿ[³²ˆ¡ Í‘n.rü% #�öÚýzüNÜ"ûBCy·¥Œ!¿¾—í0­׺ÏQ -Žû’Š*¬ùk Ú¡ÓV4ÁĪֺ-…›°)2ŸàñQÕ–wx-Ýy‹Œ8Nù}7Yß×0/t#hì>x†ø·™šƒ„æf]_, õ£Ö‹Y†t\Y7Ãð¡‰!“±k·CJ}vÄÓaUÖ+´'J¡]rYŽN{²N§=Q:í ê´c)ñ'¾¶)ÖÃXݺ”¬64²ëDaœ“òêâG½×]È=ÅÉ"2ÇlÔû�3õ¼v'²`q´ˆ¦�UÇ;$žÔ·‚Y|…`±Ë¸÷²Ø_Ó†q ãxÃLU&‰ë¡TçhGMÏŽ¿*‘÷¶†1XUõß0|¤Ú¹§ Æ=7’šsÉ~yn¤�ÛþÛÌûßÔAP°aQÚGg±@øÐ9ʼCæZ"Éèh[hª¸Ü•ƒŠžV2kô<÷ŒžçžÔóÜÞQ23&�¨!»a©žâZæ¢m59—aÏÑ©"êÑ­¢»®®ÒÏí‹jt†ª+º«VtV´m•‘­Ò“åRlš¤Ø�þÛ=ñwB «š#I¶[û™ –w6PÒIp%>£à(/ÿ£ÅgÀ\IŽuì5$E«‰ÝºÄ@�ó§ä,U}ÚÜŒyª0FùÛv÷óÆñ× D M�ÔØ­Ugæ˜ÄdØŸ¦6^�¼=ÿµ¼^ê/—©e#SŠëò’I©ÀÄ–ßJkËò&®³ŠûíßQjýº$r‘ëø�¬óU§pXcõñ¤¯>®‘¨lê^h%a^6>²TŸԪΎŠ^ûþ¿\6†ñeCôñ u~’jE­(ôçùbJ.§Pµy”“¾Y�&;€cú*ý|x?·†Ó�ür,•Èß'诘ȷW*¤‚‡.WG5Ý•¶YÝ¿= ì>ú){®ûÛ�‚I¼æRßJ�ª2Ïñʧ/È.X/ÞMrÚìêuG´K±e“.1? ä|Kõ>1dYкFª€Š¹½]‰Yçkæ�k‚:ó1HÕ]­µ[¬ÑX¥Kmåí5[×äC‘9ÓkEǃPØ] ûu¶ÌÂH§aZ½§³ªòŠ/RѦË‹QIuÔj,®†ç€…y�‡§[Œ"#†ôU.õ#|ºèþä>Ó­cÜ’·ÀEŽD*ïõ:Z¹2.ËêÊûÇhÄ÷] Á~ÅB°Ï´G ©�v‡RWš.”˜z‹ŽªÒUîÆ}oŠrRżmÛ VŸûP9lb[e8Zyk¤+ŠI=0A6Hw)ÿ HogW4þ…KÑPHÄ£‚`Ÿ´cr¤Ù™…ïo""H/k*+}õÌ?,Hé§×HÆÛ—:ÎóEá9ç—ki'žCêtÖa‹²5&æ×÷®2±r0㌆D7å(ͱ�ìwÚ¥ˆr±‘èÆ@?nmeç~ðHêZ)‹µXuår_ȦÔ*IÃx¼³v,GYSp”¸9èÓÇûy5%)x§ÚظÝl¾Ï•‚” "´ÑðQ„J•}äÓL,Žh½qkÁDæ7j„3%f’ƒeÖšz°¬”ã�€ÑQ̰+³uTÊ ¯Öx<Ð2,ôÇÑq† ã’œŒ©¨S‘k½–¬¬íÊp>ÄÞQê¡îU^RÜÜB TÔGè«}±h6!ÿÂÚlÂu…ó²F£�!±Ðé ¹ÆÐ×1eú0ö oÀ|�ü=ðÐ8šÁ a‹fd,zôÏI…`/rj�ãž—éB¤ßÄ•xº€µÃÙ"fܵŸDO÷ʬHCüi8°ç–l~»(“ûZ3Ä¡/ÑÄ€ÀI�ó(zE¢™L¥�x(Ls�E—qºÈIŒ"ÑäLh£É9M™’. qz4NæÉ2͈DžYx×'£ÿBveôÍ\äf{¥�•L€n{L`,J}ßò½5]ïvíá¹&‹¹‡V7ùq¾¶6ÉÇ ?šŠÐÐ�ÚÎW{'FG˜¿¾y¡¶s2@Ñ¥;xTXFÙ ˜$ ¬Ég7æÅaÊK–—ºâ L¯›u…åJÜLüctÿè3n�ð÷Œ"oHnž‰_ÿæšWjžÇd?%­P¼em ülæf oµ`±B©Ô+˜ƒ¤z¤b¬:ER©­…zür£ fs4èV!ÑâÌ,CIXB1×:¶ (…C©Ö~6—¬FÂ[tŒ>û_ŒCÕZî–…eŸm"æCƒgࣇG¬7ÍgŠòôY3�0KŠÊ¨<’¦MV•Ùª á•fUÉNØ žeMˆ—‡fL"5ƒVºË}ÚŽ c×`(À´<¨Ã¥n[j>U§=Å«é¢R±ïK-p<ÆÉˆ¨¯½ì–£…ÂRšo¡Ç^–KÔ�‡Ì€d½J-:žL„ªé@.29¡QE=žIòÙÕ+�?Dc$ã£dËQÀ‹G¾/ÂðeŸ´QV¶ŠÂú=9·szï´U -fä_j´“=Á.mo3W×Ô£öF[!SO-É�ü{…fФ‰ç Š(ãÎ •LÖ¸@k[|º*º½s`0*_ÉË2ö |-é¡CTz‰Ô) ¸Ÿ„J]%°/'¨Z•×xÍq%êÁ©;©ÔílA÷õ¦Þ®% H,û¼o¤t£°×¨Ø«5€sÄZlØ r>¿T Ð üHn‡bK—ICH”J3ðàHðƒ4Ûoœ³(_#g°üKw¢��p7±6H6pÙ<ù?W×½d!R&ÝR–‰™E�JQŸ¢zþ9\Œ�NxrVtaºEPx¾ßšõç*²Õø7Ø5i@žë”׸0Þ¯ÆÅ*psY*ÖäŒØ�¡KR¢‘*úü$^Œ¸-· ²#bs–3_þnŽò—…Ô"T�ê´ETÅë™é iø­Á'´– ïæ@_SØHÍË¥¼lv¢alŒ sŒ¢ÓyG!•i…»>¬x/AÓ¡^‚:íU�(ý‘½uÖ¢ŒrøtÜß †�¤žIãÛ¢�vÌkä Áh2ö)Ò#@¾êµѵ Nƒá.Ô¡éFÖÛ•jÌßøì¯*Ää=d@¿¹9i[æårÓs\%… ùN)ÚN+Vž(ä}3ùâJƒ†Ë¨Ù ËeM´2fÍUB’Ôm‘áo$e±0r kÙå^©Ãç=«I–Taǹ Ć‘Sõ(ÍL†2Œýêè,mû Gþ‰"ºlB×”=“ò`#¾(ªÉH3–›^BÓ�W™"˜¶šÉôaÁ2,ÕŠj a�NP5¦kDn«e0sÎÊáèjT2êàF ³Qu)Œ Á¦mUãµÛÖ„4­µÓ¨ªlfªÕûX&lí@¦å’ia^Œ8¿«)YVe©‚]�·Ì;äwV—rÔTqiª€ŒË% µzT3rÖ ]QŽN¡}”µ¢VXn(qø _ƨø™ ]‡–1�ŸÕ*Hô‡:ÝáUæYéJîtRK?¢}’ŸÈyZRD½ô½ÞPW2dÃ7�ÏÕ;ƒŽò­ÕksIÓNÅ÷ÔºOnü-é{ ÆXiŸÍŸûKrãêw£­}À®[YpgÀ wnZ…+éÖ:â¹È¼]TqÔUÁOêoÅN�‡N�®'” ^+J†l½÷à+× ?¹¿5uª?«TOæøª‰~øÝmŬ¶‘û¾è¯i~þÖÀi븶-Ñ#ÝÞP‚¼ÿ ¦‡•vç†[÷E a. #|1¿¹#ðÓ÷·FN¾®í4;×}šØ>�eŸ&•>�åO°Ob½c¯úbüK½‚Ÿ¡¿5w:wzcç cÝÁ+ÛÁ™Z¯Jg Vdź8Ã.þæ‹ÙÓEø™ø[c§§{·ö:4Ó½½´½½�½½¬‚–ú {+® ¿ØßG¾¸ø?è/ü\ù[3§Ûk¶j,ÝpÂöÏ5Þ\ƒ„Á��%�4ºCuÇ Θ+¤†îNnؾÔÒ œ±`ÁÖk[[�Šv¦…O¬µ×·ìfjqNé—:…­ŽÖ¶Š×,#ªJ·úšµúæö5µ<Ý k:ˆ­Ï×¶>„ÖçT�ný kýË/îbêÁ8$4YÓYìÅxm/&튪ԽøÂzñö¿Ø®Ô“Yèçê†ŽÓ ·¶7WЛU«{ó–õæÙ¹%©G!àœË[�½ºXÛ«KèÕU­{õŒõêý/õ *¹Ðu—=; Ç|ÿ…aïŽÖöî;ô׽{Ïz÷j=íóiIÄÇkkO麔“=¯FJZöb6oooì�mœ½8:Ýxu²OA XÈ—;óõéÎõLX}L>&Ÿ¸¢Ö‘·ý }O4x�¸‘GE™—j *ÖʆÔQ‹†'¯7T•Ý(&}˜Ï(‹Tàö!*ý`|äœu9¥Œ¶ÑO†Úºj£Ÿo¨;<Œï£ªó¦ñ×hzµq÷7>•õÕå´‘î|ÚÎëS%qïÍQî·6^\ ³¾ôi—C퀃st¡M oƒÉÆ ŸG¹Àþa—³�,’¦^8ÅÆ�Ú(Ò�>ñá(ëߘ÷1Ìu‚M/rÌ÷)Ÿ~�ç¦9èUB…Qj°IG‰2b V¨ºÙÂ%hlE[�ã´ˆ‚�¾öµ�oôa2Ñ ÛÆ0ÎçÓþtºð9Âv¡‡ó,ʱF¬× mLú—8ƒR�;01£ŸÅùŒ¢ç²MâéH‚zxk-¥Zöî_ à}[-_ãœE^øI`�A†vÛ»@µ�É2G¹±Ç™ÝØ $ˆ}ú–¿s­X¿î'Ï<¯üOA£±úÔ¡»�fsë¯Ä%w)½n•…”Z6îF‰-}è%èQ¢Îz.S—ÜFŠË (á lœl6î\ÿ‰7«Æ'«Sh/±W’1W«Uöùô+ºs�t¡ÀV‚#rç:Z=¾‹éOÔ,mÊ,n4˜>ÁzíÔ²™JQTlklè5R_h7J�æ�Ußî™2ñ`¡ÒšVâ�G‰JÜy¨íõ¾þ¤¿(–FÕx¼H¾&é÷äI¥´˜ê]`�Ô¹£†Ÿ´pjÎ,øÒÕâá«Cô(zq|rph™HÒ*úcÔxtWV ÜÖ«Üîõ¦{,ŠÕžŽèòaÏÐ;+KJÒ°™)™ÊZM8$‰Abæ@ba ‘fàìð/gøè2Š»…v�*ÓÊm´ñ[^J{>•»Ýg•+‡­²~Õ5 Ë4$·­.:dU ýihÛ…tAà[EÓØØh(æúѵs×6>H@„)à=Ûú‰BIüîo5‹*–ÍæÎnS?–KwKµÉÒ² ¬íÓºýº£~1‚ú“°’Ÿlº(5bD%Êeè,WZâäÉ[:ËPfÛ¤ !Ø“-tnÃ$ZÁLM‚ScoŒ…½¾¢?�?O)¢©—”æ Þ£­w•¥¼j mw€‰×Ö‹î¤Ú4B]îÉFLš^‚>FX&“ýt–nŒâêDÏR @fÁÇdcã?¤O})ºŸð„màvhÔÒ ^8¼ñ6ª±²'9Qæ¸Ý΢)‘Aqž/¢œ× ‡x¡õËÆUºÈ6ôuÞùÅâÙ@7¬ò>‘E²,’*@^°ýóÕF8Ô$ÊÇ2ýññ“%&°Í¸È%)‚›Õ}Ó4‘�,ŒD‘ÚV˜ÙõŠz§ÉÌOòs”ìk5/8äñŒÇÀ‰¤“æµE„r?b UÏ%!ò6þ˜{ŸþÇûøq¸åÿ6òd±ZÞ¹ž/VðÖú�ÿ‰ÑŒœî�Èö»Îø›ÑÝr‡ÓVЛå„:tq'=¼|^q�w[hÏè:±P{¢—ˆV«•�×¢ø¢E4–÷|䋞b'PË0³.Àe%…—‰�6ºÄ�êAÖKÝDG±¬do:õîz£eâ{‡ÿñïŽÍÕGšº¬k¹ÜÑNÉ@YNG/ÇŽNÏÉqµQí@‡Þóêv 1:y‚ÑÆXäë?<óU©¦á‹�‰hBñÈšÕ\7hÑkñ+ÞYåÝ@�˜Ô-"Ý?ªS9S‡ñxÑzƼ¡ÃÄLÚ§ò[ìA6Y­Lˆ™dÜpU^ŽŽš˜«nч>³üÔ 8Ã�g#㛘Pðtò¡ÛÕè¨S2ŠV’²­¾l6Ñ�žÌÚ•>‘ÑÿLûÉ H,^SºMÊÅÄÏ�¸tEùè¾}]ÿþ@[p‘Èê$¯¹k¢Ò7› 6õr佑Ÿ·v´-,ù„w&N/:;1^:B÷¨l®MvÚ¥°³oUFÆä´ cQÆÌq¯ž"åv^{æŒÜdã´O9x.• רW6Ê·FÏ?y›‡î§È–=s§IÇ~p¡°¿H¹ON”ñ³i°Ô; &ÿ’*H°QþBJˆYš²HoÍfÚí!jÎA$�žK#¦2,Ó@júK!–T×ÌLq^Ö>ˆ,.L¬Ž ‚'jü&=@þèC®°¨ Ãå Ãß°€;5(ºKŠ‚%Vp­PÚñu w�²1³ß¾×LŒSuíãT¡·ìå1û^Gˆï�!d)²T®ev­vNÛ è?ÃôªnìåÒXB‘séyÂÜ£@:æ&4SX=r“ˆà/³ÔDõ…R“…ñ˜:U*wõ‹ç®"tQ剎x€$ ~Є‘y¿~ÐÞ½MÞó(“EBâ™ ¦d¸ÑOŒH#N´ "�ÂŒd+#wWæ$Ú˜2eŸá­k âØX8ˆÄ(”MºõÖ¤¤­5ž#ø¥þ3 íû"WÑÿL¼�ÀàC‹>Yò÷eÊèÄohêзö }™fòɦ¢ªgyÔÞ`±<¤RwdÂÐ(Ó$¾·ÈÐã›ñ=mž�eü` išþyg˜y#f“5 ³!XŒ:R ªÓœR†hPñ!ö†0â3š;- ‚ð{Sè«/žFÞJ¼È:´"" ã¯�‡•N%¤gÃ0²8CK‰©‰x—aÈoi¬k¥zQ¤Á#RÆÃªð4B7u°[7Ñ“= a¹ü² “œÂÂfsD#vhºÍýKHÅÃÞlq„^vÞír;™ÜXÙ%rõ­‡<ùÞ¢ *ä0œ½‡¹U÷ÿ%ºêfþ€z…w Ìå9‹]&X<¹œ�6y:ÛÉêR¹QVj掯¿PÙÑá#Sž™ü-±¤³µNž¥œO*fkÒz{ò Úâ*)‹ÊB8å—ùÒ£�]5 Uʵ§}ºë—&Kl'*̵œ’!Ó„bhƒyVQ0�òšÝQq8´&1ùÞtŽŠ~ ()9|.c]â(šlÌÈd#þ%üc/ø æ™j̳ Yþ”†v¹%ê™Ê±u/;•bÇfó5t¨7AÁôtÇ-¸çÞŒ}ì3С« Éu�N>Æ:íNàOt¨¦$Ä-F0ÖÓW¯¡è7 ‹9gÃ1JáÂ1®|é­{}&¹}oçö¶QU'CUIÂa– 5Î #;)À!žÅfz¢GnÜðʺӃ}ÔTá(𠇺a{¢ƒfÚHu1˜„S±ìTnm3;ol§Rí“[ÛaõÌa@àÒ‹á�N«ù0t6tøÄSÇÓ('4vƒÑ0ÑÃd¸ÐÁ4 7sv0irªÄýf8Vµ9þFÝW¯ëµ¬¡Ù< ±p˜ ´2ðNc`˗˽ö#dTQ!=GŸ}=Ü(or,Ìc›Ž×áx…ȉHÃõv$É\ýi™‡&äËÏ"ËG½9`zGö|&¤'G¤1ßí¿ŽúaPÜJ?H�?ç!z¾Úd®¦.‡tŽ£}›a¹ c8¡Ñ9�¦32#J 1b%*KX iÿÌô3!¤D߯ p¯JHI#¾çoATÆ%Q 'D 'TfFã„+Ö—™�­�¤vSÌ亴ˆmž~®|Øc¸1»y.ØÆ”²)´}òp3–ÛG혟\ï^'§¹bµkàÔ^çc�ŒS;ß»"ú/Òô_‰óEvõRå ë9%ñE¶’(µBÎ_)‚Òv zbª“Ì•n¦9äªÇ€ëTY[À\1)Éç_*ƒòÖAæŽÃo%| ¶婟ªðD¡ùbŸAÅ�ÏMñçôÀêBè?ë{û™²ùñ%þM¤©ßVía‰?´F÷OÑ‹9…¯€59*Z%"w8ýðGßSž=G¡ÔE¾×̈9_.M�C”žaÈX1§ eCc\†&4ÒR‹ðIŽÞG‹^f–êQº/0aÄ0žpñ^Õ.˜Yi—»Ö23-ù|M­Ô„KJ�ÖUöqHRŒ”$¦$—´‚#ták€ßvÏ-i dñYýÙKIPÕDÉl�Çø’šØ©ÈtD:�\¯ükïªuq!#¨¿¦7dý,¹¸X.¯|ú€r/þ!ŒE} ø0Bo[Ò¦0<â¢a3ޝZ§TÆ›K5¶¾1a'‹ç…2'c1“-2ò"9n}}ÀkË©JòYÃø ÉÆ•�™ÌÝÄ¥Â;‡ÒM®4®°yÑ"ÇV—Ä܃pŠþäµñ%Š6Ì>Evuh`ÏŽnäŽN-0âÛÞFé„8c;œS+©Ä{(Ñâ&F/@·�Ö ¹Ê£œîCc› Å~Sˆ¬Š­Ã…•¤¦±'ÅW9@å3•¨Qv†ÖºEÙÜüÉöNMxMÐä@mÛiƒ‘ ¡½ 0au %mßd_¸‘É©CTz­QzÞÞ—‘@+ˆõ¥Ïûò–õåÙš¾ ~¬®}.û3Aèù *ГÛû4h1§> yŸž±>½¿¡O¨³«[Ë~]¡Bôø…è«Ûû6h1¦¾MxßÞ³¾½º¥o¨O¬[™Éþ]¢zôìÔ£/oïãL ÙÃŒúxÅûøŠõñÅ/ôÕ¥uK²ŸßQYúâ•¥¿ßÞ× èëwqA}½ä}}Áúzg�âóˆ(xrk]×VÌÚ’’æ´NÒ|‡µõtèÚñ=~¼óÛ2züx×fùÉ¥éÅ“';¿ÎþíáoLË�çØ]2£üoì‹·so§ýðòOž°ê?8=ئL¿7‹R'þáMìð&þ, ¦ä�eÜU‚9mI(š~2FäÖ7üí� obaKËM×06aôqÒ„EÈ]M[ –Ë¿RèÊÀÒöÉ54M1ÉÄ.5ÑAvápv{SŠ'VPà­ðéPÊj”3(4�Ädœ'z"qŠ,âlýt½-3\=Ù¤­k*Ú²®)Õ55uMu]Ó0+ZP!$»S �Ñ[˜b Y æ-ëô©J*„0@OPás\’� öÀ^PZyƒœ,¥îy<\ô§ûÊÉ–M9%é§"w€}«°t0U0ÿhLù$l“E4õ 'QýÂ[Ú9jBW%rn ¦*aXBfÖù¼–:�æ"ת1‘"ì³.,pìßð/Ì€QuzAˆ._ ŸîjœJÛr\¢Î$öÉŸÆE’K˜uÿÁx7Á;üKkˆ-¥ÔR꯴2‰ÌùŽºðþe4ÑîÖW·j&Ëe�“€ø ð¥³óMo³j8®×eÓÓÂra”öÛßÃðoÝ“aÐ_£+ùW¾’6¯þ¥¤•¥½t°Sµû{Ø‚„ü�RÜ�È e¤Y¶~pËsWè¹T§�´�¼Vnï^š–+Á ¤Ë¡Ç Æ^LúF;ØÃغOîívühkË:&€"²ž�xØl®êàêë{%E}ªS–w6£Îf7tVúÒ²]öî?€r¨äöÖúwü‚¡à·ïÝkf°¼@~ùò8ü½½\fOÂû�šÍìqøà7¿:ԌƦsù,<ÂW½r*[¡ú.‡Ûè.þÄø'‡ù›†¹Gþ؆ÞY¸ãÈ�sDÜüàw܇šœvîÝ—ûò¥„#{³@/vÀ¸£ØíûÍæ#œ@G�v¥OÁßJaêý¶[îþŽ,¸€%‡9‚t<®Sdþ`p8e «>¢GmçåwÉÁY­rÛB¼|–S׿ -ß�o¶B)ë!õqXU«ê0/_;y‘…>k‹ÐÚœi8°’�§uKärÅ�3Ž yGbµ\ �¿ï¢C(½hq' ß%qáïÒd;HVVû‡"&2½3h}�«;…U>gêsQê|ÈSr–uAK3Ÿ{—s1@ÂÉ.{­¯*²Ò´š›@Z]A›œæ�¯�aÀm£&à¨çÒµÿ%f¼ñ_ø—ßÿëþ\ÌňúÃ�,Œ~½?Å/ô§Pýù;5ýqš²U¯—É“ ?‰}«áEÆsOrÒè=†¨ßf“ü'ä¤rñ?«›ü/PÛ¹‘çÜËñ toI”Ž%Æþ•Ç^Õ‘hÔ-¶Â(¨ºáÀÃ5œ{¢g@ߪ9+ObmáÄãž×Œ[ÑërÀiíhS bNð¯X]%vð‚Ô¦S­íCs€Y÷çt;×lnN°NŒ‹ÛóÝiÍíu0­^5k1SA†¨©˜àÄá1Jg›ÒXÉÈŠ£`«ú†žÉ°Û^^Úko[ à_?l›Û€nÚkŸëàöíDZNŽu²#ëKŠžFm ï iÖ@zópÀkØOÔ¼ ¡&úÐ×Q×[l…»b€P¼0‡¾�Ãðýs_š™`.Ó ‡û�u¡qØ÷o e}¡0n6¿  !>NÌ�Ûk3n�µz«šø\Jwz1 ôS9!�4QðnDÕWÚ—’r&ý'ÆØ©²>©�»#õœu?IÝ%©([¤+d­Q^Ù6)ó1E6©Ÿ–=!µXÐÖ'+«ìK8g#lÑ^M¯ômæÍž¸¨;Bý²èǼŸ SdŒÝÿ×ìTu‹j…È)‘ÕüªJâ›<¤Ö`ööçtcj4éà¨Ú$µGé†+³ýL›/İ;£ ?•ù!Ö-Ø×D¨ÝÆùʸij9ü¹š+_ñZE$RXIJjçðQ¨îÅ|ê^¡:ÞoÉXÑH-—E/?§S™N髹g=ØhMÞXß ”¡TbrÛÔ�rî,n©B½Ÿ˜z®ÓûãYƒ2?OSáÌBOr·r‚ø|¬_´Û»K}J}TR”½²^[Ëî×5n?íŒ#…oÃ:ïl­[ŒÇié¤ë Ç� vÎÝ.9}Õ#L|=a+3axKZ…a\�CXSÇÂ$–7èÕsBç6Û˜Wý¥Ú¡7»PÂ0—θ%7�Ô�'…à¥IÉís0¢uú÷Þ MñʘF³IIÞñxeji\~èÕ¶NQ=ªŽÌ«�¼ìv4‰[üTè6WY±½ÊBåªø¼S±Ýλ@?©Šl_eÁ�6±ôÐKf¯ÑŹ/ˆ0ËÅæf‚×%[[1 EÔXY ²�`¶K3,ª tF0Âî¢2îSÉ_mH§ ðˆx—;˜.0Ðå.—T—*œ�‰†dÀë5ïž26-9V^(ä ÄBÊJ0÷ç9Fƒõvš¿{4Wî`R¸b€Z5ê°22¢Ë®šw#€5 ãPÜP=òÊKЩ D_ �CÝ�|”dõ‡CÚ.d»Ar¬YzÙ¤Ž±kŠB‚ÝÌ܈6¶~Wö2x·úù-­Õ%›“ae´õÈŸ„FÝ)™b¼O¢ã¼ÆfÃ{äj6ÝHß62��ô}qÀ9©i¤ö¢ø/Šë³~ÛØH66ôÅ kìõšÆjo‚¿âMðúìºÑ‰mt.�øâ5kôÍ �Ö^õžâUïÍEtãW¶ñ±lüÊoXã_ni¼ö.wïro/f\fÚNÌd'.}ñ…uâí¼¬môøç‘4/Ô´™­$ú0zË*yf6ã|îý�¢ø u70§âáÔ{g»™"?xéÕÛ)öª²¡LÑÃrQúîQ»eLguUP·š;k7…©êx]U”Ï­îé�`oªüzS•”×­öç­€mª>½­jÊïVÿî—@×4±÷+MP·™oZ¤*«ù¬«)eû`Ào1÷\Àc¹þq rVá�åþ³lP¢ÌX©çµ0%×C¿%\ ZPÃÍ@Å#|ÜQPÓí°Äj{y+ A�¿Bü–ð—àjþuÈáw‰äi J[€áwz“US’—kÐQ"R »¼I&e àÅðâD’ e_Çï&u«9,W#–¤Î%2VUZS•^ÝY]u¤Ç%µ²DʪŒ×T)a‡W{¼®ZRÇ’ÊU"fUç7T-‰Wÿõ¦êI«JêH‰œ51½¥ U¼™ÓÛš!å(©ê$¦¬©Å/4%uœxs{¿Òé8I�%±`M&u—hÄ1ü°"}Säÿ¦mÛ0L}ÖÖèÿf[®EG,-:Xã‰RnN”ü¥ƒ��瓰׈’†èõý†hÌç¢×Ø{ �o^ÃóprŽŸx‚N;…$L>ƒÔï3øwJUœ.Ðaákr[x¶À¢!>O˜/‹1g¿Ðy‡ý+™]>@‰\>A©D?CÙL=Bòá#Ó࣬ˆ*¡ ¨,¢ì”µqN€Îÿ¡:‹ØS¿¨{4Ñ8�Çðï€êþ£�Cy}ÆÜ}¬oožÑ3vãî‹)¦/ÆXC4Ç:Ö’^b=Ñ@×´ègW²¶L=B•ƒ‰¬4žòj#Yx�a±î""±µ�Ê'hE'BSòÑ ø) ›º��rPO£QšEû“,¦Š÷’$Ý8HgqcѶè=mÌøúîðîõóõë�¡ØP�æùþ'6l –™³Ù>yî>oütßàTêzg%6®Û«vß6þÝ/þ­S0G âø÷ÿÀ¿-ø·�}€ ßÅnû^[>ìîà÷q)jâ_â_ÿj·þõ¯A =ÿ?T²_~hcÁ¶!oãÝé¼ÜiàLÌtŠ+½�iuv¯ûŤ5š¦iæÑcÿs.-{)ج=úÖY×ÿôþ§uþŸ�­î]äØM0%¥K(ïgPò‰ÂÚ+éÿf2¡ æbhÂ;P#1,…¹µ�_ÜãÜùÆ/UÎ&:ˆ…ñÝcîà¢V>ŸÆÉÑñ>Ý¢ÌÐ!”`¹ñv-JH²ªçÇÑÉoíW÷àjÂzKÃé]NZo¦‹¬?Å>óð <+y<™L–Ko2Á#ïZè�ÿ¢yË õüÙ Åœ¢jM"†TË ã%ôX‡0zE9³Ò�\C\N|gí‹^Ñ’™Ž†aûãƒL"/HÐòÉèC} ÁG7Ifç(¾Å`Œáï�‰'葞È6 G¿ËïgñÌ|Ç™¶ï¶<ϳ«ê(ç“Öd8–<ÜÁÉu’x.YrÝ7¹T’̵¿È²(\¡¦P¸ƒóËSÜ<²úpç!Ë%ÓÜ|èì4Üù�åÂ':«ÙydsÄ‘ê� �”&}ØÏWáδ›&óÙ-îâ\ÛwµÐ?Ь�;#ÜÅ©6¯�•w Ûò¦-„±î´€óÉ�ŸQ–R@/Ä×Åw|EßáײַÀ‰¢²~Ÿ„¦ÖƒÃg{ï^�] —íW‡GèkûÝiÃGÐÀ¬Ÿ}�²À¸Å]‰Ï,õhÿ]cETÐþ¤³YÞϧ/Žž�ÑÖ£'9ܽ7o�.÷ž¾}õ7íc7I;ô J¥Õ3LÈ>â©}5nD¶?&á÷‰E㇄پ¢éÏá�¹ôê=UˆDº›ÞF£8:Ê• ÐC…·¢z†uÏ*(¾åQVHºàHùã*Çuêf¨ê’•Œ´Óî�œ4°?x‘x([gm;<¤õ>Pi¯ªÝ�JARo>Scã«oÝ`N§!º/H� xº´ŠÊ6ŽLKd§µÒ¹¾Èéþ1éŽhŸ)�PÜúp"ï/¤;rðˆ×PÊ w‡Y¡šˆ„»JùÌF$ÌdL®S<3—˽ ™LUŒƒ EÍ:¡deçËzpÊŽ¾Mïá}íäŒIÐ'ÎË)öv¡¬ê‰ª’ÉÄ¡¨Y UQùÞ«‹qwxÜÀ“‰«ö[WWY½¡›@%ax_sïl"Ž'8�•b!ßëJ3tµ1¿„¤DTÞ‰ã‡ÐÜ—õ{B“îr¹$‘ô4H¤¾ªÕé±ñÊ.ús€š6âá}PÝH†¿Nè�_Ì) �ÙÕvä¼´ãì×ãv÷á‡É§é šÄ0¹3ûH&/¿µÉäåÉ]u½Ÿ„mñ þX¬ôÂl\¦S‚Œ­TRFFõc e§Va`j¤ßPÝ\Ä!ÞüC.=B Çtü¸ENþ‚´fJ�Ûø…vPºÓ\(¥í@ßðÀ´,$Úí‹—œ0öy A­ALîz}À7£0öxRªn„×çÖø~d·Ï3l@däD±s�u�Ùõ™¥{*øeªh,RVE‹m¥_&Ò©¨5¤¥õˆ•‡¶ÉeµúÉ`’fGÀtWÌ÷êN`tq•Å\Ͱ˜è©¾B1ÂÓÄRD °$Y±:Vjfõ¼~ž ±¬�íDtâˆÓñ!ìã”È)ðþéŠb]Q^WQ®+ÊÏÃQNriŸŒ6ñ EÞqŽW‹%©ÕbIÐ/+¤qBF³ÍTë}7®ó0ÞÚéä�ágÚɹE7ö©ªc >wÖ‚kŒZhñã¶ŽQ–mÇÚů¹÷„5ÛÕÎðï5cÿÚYÔ˜º�£k4õ0Ð(æ¯Ò¡AÖZ^-“ª­ó@H']Áý -9³±Ü“¯ÞN}¹—­bé@ßY÷ñ—•Ø ~â’à£3¼Òç{ÁSþOC\O6 ˆmb¥=“¢ãÒ{aS‘úaRé§ ¦¯—¬Až�¡,5–¨fâ­�{xÊ�\þ¬­CÄv±÷“NŠmx7 ÿ7%_¤â1¿ ÅjTOH\m•Ÿ5˜×Õ×äÅL1:¿”øõ1@ÌQåÖ§'ô éÏ8¶.б5¢¶‹ /e�¬ ÄtZL¶QÅüÇÄïT;Gžìâ;Ê+½Àyլ껯e¥ o}Æ•¶Î”g¢rä)#ø/Ò{ß$ ï�>­k®]$CÑR]ÿ›šðÞ,â)·H·“)ÌiÌLëéhš¦•I�êƒ%îRS©Qaüêt›MwREeOÚö0}šPK¦ÿ:÷iw ðú;³ýþ7SØÔ^&N˜OJåz™àµí¥Š"9CíL% EÓ‘n86¹ZÌKpÅ´‚b�(êÌ`gŽ™3 &烊ß›†kE‹g6,ü4üß\µ�d¨[PãÎЪqžÍcøÊ'˜œ§sOÆŽ‘OP¤êd�ö&.OfÜ×Wel£Šz$ÍeXýÃ$¼ûq1�†:׺‡ÿ‘ïwDZø¾z×s•9XHøéôúá Ÿ{ó�§çÿYùXòO·^U¥xÉÿ™½º }U£—SììåœØ|J½+þ˜`ˆÌÖ›Ê?Þí~ü¶°V ù—¬ù»ÝÞ¿þs^3º¿(ÓáƒvûîØBR1®WÏe§¯‡ç\ϸ^ïõÛ\äUëÕ�pZ¾=¹|Œ²N‡Q‘ØäS€ÁVî\ÿ1Y}ò·v·".®U~¨òEõ��@…>~¼ûñã0P¯Èj?A»Ì¸3!5:ÒFÖpÛ½QT£áÙÿšÔFõ•Ôõ% V”VŒ BÀ=—=6žŠ2Dò0ê#Þ0žk2†·c`¨;.e”9”‘Ô^D‡z¶†Ø·4i¿ÓhHZ4Ë<>ŽnåИŸÝYH¦ šÀÝ´ñ�J†oÞ§wƧ5;Gûï6¢X+'4‘`Ø�tÕØ˜AJµ>Yª:bÝ@¯"�Þ|iÏ`c:ò¤ØŽçëÊqÆÿ7ò ìøÐ;fè9IQw'h“Ï])Úk™£1fKuwƒ4¸"5ÛA+ŸÄ#ta„Ÿ‚‘–rÚ&ÎQöÓZ$²DïœÊDt}·Z)‚(èky´0ÕD3 †¬#gópå¹ç¢4v#*횦�ïO¤� 6ö�`«ßAãQÔV(ÿ§Ú�Zx/C(ã ¼¤ÃKùE‰ºD?ü6Ve3yØG—�"•èzaÌ-º�F[/ßÄ;OEÞ½“éfRý:Aÿ%𝩅Öw¼Ê¿¶>³¡ã‘ü©§�ªr Ã]3ÁDmΰ'}‹Ÿ‹x\ñÆË§yèϽ�É@¯DeG �P‰U‘XtÂdíBæ*¢É‡ *Cš'‡‡òä"í‰Î´ÙÌÆd{¸PÞ¼¨ŸmÅÏYÍŠ5øVdh£ L�:a™,C3ôùÖnGó×ún:§ôŸÛ%ÂePC¸$á@.;M¯ Ýr£ªè>lïlÃéÝ_†1ªïÓN&\D&Á²—æ�Ö �ï.½Œv0œç&#ùY@{ °�^ έÔn!úLe�‹k=ˆr̰Ú@aH#WCÚ¡�y›l�M0F�¹‘Ç�éæp#¨Þã÷d¹í Ña€éÒ°�ž×w«C4øŸ´¢Ñï;~L;jyTÝýÏ�ëD�Pİ(É U„±¶B~V¥Z¹…µh:M ¤j‡Ü¾·­­•$ÍýÔrMK°&yê¶!Ù®qž‚”ØQK–„Ç"�Ç„!¾3_ m 1$•_òÒ鼨‘[ MIŒî5{åH=f—6w»¬p„̆ى}�”€ºÇü¡Žˆ&é6ù¤b½­V€ÔÇ„®ÕÂJþ ;60ñA0tw¾Ê«ŽÓ´göÍlîxF[ŒÝ }‚…€A‡ mCYƒŽw5éô|"¼rƒDƤrÉÒ´Û°"ƒn"½p€ ÝI£±"GÓΛ{-(ˆ{0Ùç-˜Úœ£;Êö �XXL®ÿxÝ ô»ÞÇï[HXß�;; :u8B0µÕH¬QÝ@9蛆ÄäW§H®QžÜC™`@¤joDÒaIœ1S�¢éE³¤ÂFøÑ¸Nƒî%i}{·w½:‚�@“æúÞÏ¥�*‚* Xᜎådcu>#ô­`ÎÑNZÚü*Ϊ†eæ/qð �žOZE”xo�)bŒ†^A¦¿ÀscGÑw’rý…zËÅÕ¤6®¾æÔr·”Evzþ9¢ë—ŽoTE2/jÛFJš!�o$jp˜ q˜LøFV$Xh”¿sïNäUkÁb ‘’¯TÈ"ìÞ0ü<õFhMf¨¤îÈöSªÓ Év¬ím¦¢VŒV˜”ÖKm¨zÊ]Ñ!4씈ÏÄŸJ5üÕ¸žóýÏëc{’‹¿iùg¬Ê­£‰˜òmd¢á¤£Íæ,žgi�kQè¸Ñ ÝM`X¨¤Ú›ÍÍHÅ™5dZwRé™õަ@$t�þÊ…*ƒH”*E?’h´´æM£ŒÇd_�wcae‘†źý­9C@!ðÞw¤îµADÇá�öD[|qÃ6£éдx…ùXήiA\‘¡u},¦Õ¹9rßj Qmµñ§¢[*}‘*‘v= Êž!‚È:—Ä$õòóÙ@êŸâ3r�ïs3#«! ™GTÓòæd¬��vÈéL~+9/çÑÄÿK7ĆԷ†ÿlŤ¯ÉOó{e‰•`EÛÒsÚ2…¿¬Žñ¸|�Â÷%ì3 )‰;+§ëj {u6ï~ì)Pk«+ºþÇó»ârí·¥Ç>JÞ£¤FwÇâb¬äT¾÷~ïí…÷æÕ»·{¯–§°—÷Ï|ï…?]ßCIfÿÙ¯½ÞÞö?ííß/ηü$�µÈèhçÑñÅá_o.<àÿua-6Ÿ1ßÝ�ptîãt# ×]+Bú¡fEì† SƒÊ› ùˆ¥h™Ž}¡xi¤´n+…°.c”/Jbn ÃT‡*£íGÇ.™ÈJ{JÎwÑù2¼·«÷éWCêe:¸—hx(}7 £sÉÈMÑ–§�NØ5§2DZÚSÍ*/# _æ‚îgц¨ òŠ£xÍË›–‘GOjŒ­¨¯%€Ìä&B×ó'Ožh ƒ²u-0þ•vKB¨SÂE7-œüG·½S¼Œµ! šMºVMèb•´3ðFX••–BßÉ4Óî’ñç_c"ß:gfëhpñfdÚ*c÷B$—¦§3‰…™*7adl�ÝD³Ó!Ò+P¥}ÚiÞÀÞWÊc(±Ç�õgÑ�8ú¿�a:‘ª²ž¤ÿQDRìW%l®DMÆ´OR‚Å­ª1>nÂbÞ·6^KI[€’·xÕ@‰‰PÞ¤ÓØS7¾‘Q“®�Š'ã\êéë¸l4§)‘ZÎ]J›€‰÷“eÈàWä€}ñj²µ%¾Ž™2 ÕXY˜„W{]`¸1àÉÕÝpU› HHIX‰+èÇö«ÉöŽx?ñWFbåI½{ê% �kܤ NWÙ»I×AXñøËõ)˜¯Îëäë]�ÏñºÄ0 —cáyÚâØÜ5gËeŠra³.—°t´òå…‘R=wÙð[K‡}8·�-zb&^ÇÄÝcãàFê ®ÆçŸM7;Š>¥ºÅ¹¿"ïžñ9zˆÛÔMWa ãÇoÌÓ¼˜géÀ(ØX$Ô2@�o’N‡`{A듽¹‰zOmïœkL%ò,çäÎl)ÝR{­® ±ÊŠ@w{ sÔïF’ó´|ÐPØ9Í LÿB ?Е½ò9!6ú²Ëá|Ö×E_² \²‚ îÂ'Q™úpû$e/x³?ùêS ÕÃmEßUEu$¨{•œWÊÙ2äæ¡ZŽiùán@®/û?Z@D$¸pÅj¨ùÉ:ÈÜÀA}bœ‘~aNâë«LMaZ¦JæG�–¨î²+‘’�’‚ŸoXhÆ�ÉÝ�?·X^+Q¨ iÿLÉ�h0C.K/ã¡ TˆâpÜš/î‡;íû�üöŽg•5#>8ÊÅx"×Í ±I¥lOžì’—jt¹Ü„½¹˜±]&\Ž¿2Œ¶&Þ 02Ê—1ù I»ý ¿…ñ;t½5ïz“Ô¤Å;ŠÑþöõXZàY�å*Ë]´:u¼Ù@^”Wú»¥FüЈ¯1Z·~ò/éÍÏÃLäôãÜ™®ËnG§ß1ÅÀ�‘[\¬Xމz™H¥�fsó æÇÀÚ¹C5ËQçïÄhÉșĽ 3©�4–Ž ¹’Q„jVi�Ñ7jü9œoÆ24ô!Á;\/í>oÇBÒ· êÆn^‘ÊÚäÜÌà³þ H³«°_YôdüÿÉÚôÍÚô}÷Æ †’ôÒî$€¹ìoæwT·ædLp‹Ò �¥:-[[\Yàõ¸J‡hãe{ˆœñ"—þehI—KvÝàÅÝ™g3`à_‘"ÙÛJÆ'ÉFYzEÇójÜÊôiú5GÏBN¬+Ñó8ŽÈÝ[…J� ™‹ÜEE7Ös¬ ŽŸ_¾ØQ›5cÚ ì畤az Àyœ˜!æo£<�^FYH á“uD¾ŽµKôÃÆuNH•@:šÊløY4ÅÔr‚BÎú¯Ä>AÑ.:õ èP^‘Ÿ¸�ãë‘Çã×ép1�ÞF£†x1LK_ïŒÙYýtìè›#žýII2ŒÁ«J­pCÜ�ê ]rnNCOMC?ÇÀ®è" {D£ÎX^Ï0.QäD2Ò `pùú9M (ПïkD„ ?*,±ÿÙ&@U]4ë„CúÖ'Ø×g P4õë:À™º‡Ù½£‰È4 Sy•Õ»V€¼ ÀïÉ·8æ^ ûiá~ZÛ׆—OιÄÅ~ŸF…‡Ö½—q–&dƒšËåΠ¿',¯ß�’¸ Èã®zvcw?Da¥ð8B6a5F$¡Òlˆ½ry¯„6X–ΦÁâÑQ¨)R^;‡Ã)H¹ ¼ºä‰4ÕÇYö”ê�‘푃Õ6Eoâ¢ìž”? P¾³@y§”%€œQqq‡ÅJ:÷[¬vŠ›N`Ü1¶3•�óÎôäÛúíQêÉ/Ávi�™�DDùŠ…×ð*,*ÿw�÷\&ZÒË©GBûèó‚Äþ롹£º­öÌ`+[$‡6‡f¤nvŸN½k ÉdâŸeðA‹$IVÂàÛØ»6Ó (X?ˆ„xzíp‚ÍöÊ7Í+äýOä3ST( è#/§§!§5~ÝŸãF>Éäqc�:u6s[ØÊÍ7Dz†>ÖT�Ü(zDá«)žéRbJ÷)êr³Ý…éêiÊÀôZ|²�éçÙ’¤!ÌÐêü“tuÜ©m7GôļŠÖfR8ŒQšžŒÚg=Ã�;ª/,¯UýX%[†´L¿Ú²�£�®`:‹x 3É��pîy×Eú5J‚ÆB ”œM Fr#�¸Šÿ)_xM�@á`ø'ÉË luaÃE 8ÿŒéñF`Þ{±ÞÓ�Ek¶Q� £Æ,ó˜bokJaîm…S+´Fo�©üçâºäjø3×0HW¡ñÌ›"ëõ²­Ty°–/)¥da©=Û æ‡ˆæ!Ç�ßqfƒ¤lj`L+&\¤®ŽÁR™C¢ši%ê­lÜêXø@g²è"–®%hNp¿�²}’#³Þñ3;ò;»Í o(d_2·//�¾üI}q=ÐFÝ^†B±sT±±‹ªc¨N3ñ1�­ãw¯^Y#=»¦lA¬)ʬRÏuÕZ\)L…D‰<Ñ`ûžÁyiÕþëž™2ªOÕ¦L‡Œä««½Mv9¸P$OÛì5ü+Æ+ ß(Zò�äN]žŒ)ŸæèÊL3GüA´’çͨ"ÜkX][ÀNC@k‘™¦ V‡ 蜄%§×q‚[ƒ¤%„Šà êIDÉ ?ÏSŠnéλLРÿ *¤É9–KÞ1Ö�­z àIÅ]™™Ypý‹®îFVî† )»’›ÙjW^ý ƺ^•ÐÙa-˜ÿ º‚Ò¬Ä\U0¸–öD¨ÐC¥ðäÏm'¡:%[iáí”"�òb6èh¸ë£1”ý0yb 1‘ñH)l3“pÖÂ4Ãyf4Ëå5;T²+FÓÒd¡Œ`Ê(«®h!ŠND(§:•7lº„"+£çWÀYäêŽ-n6ÓR ¦ª¥ë‰{‘¼ò”µ¦{F²áÔ�fŸÓs¼‘M{²Ø9š†Êš†ax=ì‹­`´\Žž„ínc˜ÎACcCÌë²6›£NAйVþ €$D'X˜üéçþàkÐGrz¿?‡¹‰‚¹ …¯áʳœf…_ù‚E‹¯6½ Ê)TZ,Ýv «÷í�€É’r�K‹D»0ÚƒJǨÙÜtQ­J¯ÞB2…hƒr ÿÁÉk]¦Áðøôª"ÇžçÙ+±4,œ ³‹îa4H³>R[èXÚØ¬¥-û¡Ë_ä ÎõžŽbí=44„òM?ƒ +PDœ˜ÏYm?€|›¬ë‹û±[N¯¡?åDdö³UPÉ›áÓ ¼*‹–Æ@qnJÂP?h_€>K»ãŧ¥°uÆ“ê6¸¢t/¨º8WÒµÚ˜9 äñ~®¸p^•ù^S>34V 5‡U¹£ÚrŽöèÐ)Éœ~^SeºV«§Tš+ò©94~ƒ¿£ßà…é»Û†ä­ûPïrÙÇ©Å×bª'wÊZ´'sò�‰óM™¹ÚP¥GÜ…±êS_öi„}ê‹A¥O—”Œ}‚–Â^aÂC±Ð½Z8ƒæýB� ìàÊH5=&h_÷Mº?¦Ólˆý‰~¥”,ûÃ[.‡ØCLúM t¥Ipûˆ^°—Tˆ{™ªí%÷άú9”s8Ç>ŨÒG™¬û].çØKL|$úº—ýÊ„”û IÔS*Èz:«î­ý›÷ÖåU™¼ˆ,�,w¶rÚÏ\E\”¶–Ñ ÚJ£mUêãøàikGÄÝLŽý—Fß ¨yøÈã%TvŸ¹ä·Õ_ŽH[— L·vE®Èé6�‘¡d#��5rtÃ&eÍ\`Õ ÕÙÐbëìÃLïCµ©)ÚÔdb�}¾qÿ±æ¾�È”^÷H6ˆ{n¡\Øí¥š¤­E�BFÖè~i�¤á4ÌæÎM¶ÁréðÊ•‹È?³Ô˜ªY«?ŸÃI‹«©’;â/V®w°�ƒ*1�¤âˆß+›—“]Ü5·¢±Ê5žr´šBAÊuHšh1[­Úͬ5�çÑÛhw…wŸŠ÷¸…V'#¤°«Án¯h”¶=ωêä¡©Åd-%dY.=ó~ˆ<¥ógöŸzxÁŒ²#Í&¤©'ã*Åì´M‘ Î1tªtù‰ˆ‘‘=õœm‡•#œÔ«ŒBã·„Nfã«çŠ^»ø;–ÎSãV‘õ“&~F^–àqÎùŒ!¾¼Â8÷‡ÖbæÔON�qÝZî´†W§AÎÛs×±C˜»]lÓ¨h@›9C¿Ð&¾v�ðWµ9-µ‰ÊƒÁÔmÕ!+¾®Á}Ô²‰8-OY”h_»ŸñWµ¼¨´Œz Á¢Ü¶CšœþŸ­éþ/®©ÙÒ|m÷J\g@a/dŒi;¸ª\âDÀºyO:¢CUx¢7Ï=_ žO®®•“.ƒ$Ÿ—«QÉxYÏßIü<(me-»Fc4%¾Žfqq»<†îË2'ÉôJK³‡1Ù˜wÖÜîéf¤¸!BÅ¢Ô>…ØÂ$‰�BUá4å0W}ï›#C:¹² �¨2G0ÚjbxpE×fÜY“3ÓÅùjÖŸ¯ûÜ’ßgL¡Æµ¹ÌgD.òÑGà"‡‹A䂉“‘eXéû7sÇ`j3Vy:‹Ö¶ª>®ŠTêt­ËF*˜M›ã×ç³ßaRðÏ "ÈÛI4¤ì±ÂÄÅo œÔ¨—jå€ÍÐ_ê\bDZ´Ì7zÆ2?•tv”i©�—† êÒÆðdÅúJM•г߄/1c%6Î{ft‘B­×‡)®Y��ööιP‡uˆŽüüU’ñèê$Ù7{v³´[7k§§Ù¼qs.—N©f“—�+X�\}Ѧ÷oùNE‘;L_d®4Uú"A»¬AFaÊH¹#ÉcN2ºÀY¢9^·bPF‹ƒO0úUáÓòPØJô ‹¢÷£=Zï‚U]3bL{9*@‹ ÕøÃH¼Í= yG"t…Ÿ(ú�Œ8Wx�?QvõŠÜ/Ÿ\éËÝ7™Ê)¼8~~¡­£Ž..ÂgWTø,‚yz‹n©ß\i:äËUøæJ¼½ emúžøËÕíjÃÊd$£%Ó[�aù‡3´ÊéÇI”iu %°‚n„ ¡ÿ<ÏŽ†å�Z[E«Àfº-*!c•ªëòÃÙçh8Œ†ø½Š’ªyŽ`.$fZÿ�Ÿ¸ëí'"Ù)€ƒ¨¨�&÷Û¿?ltK‚�ÁÎCiÞ1—iô'ëš+Y¥)“«¡÷Q2Je²OzÜʰ€²÷€&7ŠÐEïGäøûÈ›b´7L§5ÃG>LHŸðRG±~EoZOØ׺÷A$œnãho~P}¡ï![Û›g ƒ¿¿òZežÇ±qIíÁ²KÎT®0„Žxº ,~InÿÊ#½·°]2.zƒèܼ°ëÚÈqE—¿Êr·C/®¸ˆ69vafŒ¨yÅ`I%}_œ+#ûÇiÇÞdÜ‚¬ó:G�+yöNâ*IÞ¡QÐXçö ˆ{V ëör ÓÆ4­JãŸ2Ÿ$DþëqÔú,�~mðX©7ò^Á9‹:qþ5öÀjÇ•tªñC³ùTgÁº^Qð3¼[¦kEã̪"ox+Qëf$7±ôÄIqî)¹á\ƒ¢CšÝ£Å¹¼Ъã�GóTvZñÍ¡ŸWj˦ûpÞü犭Æ? `_: ¨·ŠÙ„_?üú'0Wây¿þù øujq§Æ¬èó "�ò¦Hì+±©B¯¶·¸Iܲå’ëT²Ô}é/•–ú(G¶ òóÛ+ Æ=ut>ôV·7¯Ä güö>ÙzT½á�Ì}”J²D;ï¹Rª å�£{0ž#½J«jÏ!‰ )®;ûÇ•W^°Ê½w³•®Î,œ0Y[ùس5èæžEkŽ8ãN¤U"I7 “@6Žd£¹ÄK1sèX·HߪCÀ°™xÎÒá³î�ðŽOº¸˜†››…ò ./¸ +¯ôÆ"@9XiS<ÜVƤO*KÔrùPõ·Tk7�jxìça$Í54U„Ô£N›:­ÚГR"'mYŠox±�ÝË1Bd+âŠS23zCN¬nßJŸ·q·¬þì{“}úÔT¬»´N¹DrSS›Ý^Ü]5%I³ÆûK{Ñ)ˆô/´‰îoÙ§V»»ÝëÞ/Ô-å�¡¦%Fa¿Ë0Ey ¡à-`æGhT:‡%íÿwK:¤XÄD;äGh¸’«D+„Ë�JÆ¥$ÇOÊ…¹ö%-ÇT†§9CªZ©«_(Ï–ÃT©rÈiF%ÏZT ^3Ê>Gº""Â;¢Ê‘ ”ÅV³ñö ”ß/úÃ/ åÛBZ1”W@O×k´ €¦!º€ºÏÒòGÀŸ©÷7ú3ä·XIg$¢„½‡h¼qjC›Ú9ÝV÷Rƒ,Íó(?k¯½±Â›=èÎYz ‡(I ̵ékÎ0ªxÙ…|/ á †º »‡�hlw‰%¨ƒëÚ 5†.�Öõxwý¹™ï¦<–©är÷ ¿ë­›<5Cýá�›·­ùÈHRR¹:¹ôÂiñcM#×Ú¶:¶f8o§éT%ÑU™£©�¿ŽöI+ÙFÇ£g‚ž€¥Ç¯ŽÜZ½@¨Z]BIWePÈáÈ%*ý_•Þ¹;³2¹ª)±^ä XâÜ€i ã�tJ †§Î[@æ's#“ŸÎÈEŸ/nÏú=%á1Úµ"!©Ä›¨øôæª{_…Šª€wME0KÁ/7—˜ænÌ-ï õ‚0Ø™V<ÉœXÈÃ~.–Küýp%ß\5›zD¾ ÖÚ�ëö®Ã{!û›©þ2 ª¯ Q¸öëÊ$ hx†ìºæ"4:x’§dwl~g%Àcêë>‡7yJÂ|è¾” IgIœš²²ŒµÐ¦ôd™S˼ììè; uQ˜K u¹¡­‡rÞ»•š44ÐÊêþA]ÄE©o®ô‡÷W·æÃKù�4ö¡çÁ W%î8X°áYé�údÌx¨�T¯OÙƒqTê›Ô¸_ã•{«"רҋÇã¶Ÿ[GÒ¥87j[©Ï ÜõS!½/7ãlÓ˜.†¹Fh&‰)׌Ûð.é#b;lšÉ*©IDC�_vb†�Ó~ ¾àaæe[&VŠlB¢Â³’-i6ÿI€Á“kÿ5ÓÊ j°¨¦èó•=zç%/?i•èâp(äò…ô¬t-±x·@!^E%ªaÅ «g>«ußPãHлš¡©P©.CR09d$À¼¬%o°�êQ ê0øbŒEUär¦¥^æÚyDºÎyD,�AgRÝY…v„ã‹5² §LNWÜ$d¹HZ¤#ªô«xDH'’6JLQ”ˆo €#©*¡g…¦¦jVöݶÐ×ßG!aŽëÊÏ�/A2"X…ƒüÔ#É$(B!˜ܸ²²8]'WÞ}èÚ}èZÅ _‡}L§ÆÁp�ÀÃ>ÚL)3)»Ž’x]ÓskˆÝG!)HI Ù TƒR"“ñû÷+3ã|P•!§¥šI–ìvX×(Y"E*“4’)«ÏJâ½$ËAöÒÍÿ^ßàÒ¬]ÌÂki-ÿ‡„ÁÑHÔ~8ˆÈæ)îï�ààöL»ÁÉí™î¯oÏt?xs{¦Á—Û3= ÞÞžé·àÙí™ïoÏô>xåf’†]æ®.xZÔ|>Ð6¨ÁóºÏò– /à‚½µŸÓ,8¨ù¨ý\êj~Ï£à�ÒÝYoðnà|&GØÃ"*OÁqêd‘ׇA\Ô¤î¨Û+ºìOcSå·Á _¢y�»µV_‹B%Ó„\Μ¼Hó¬Aþ �NÝ•<›CKç8MœÆ“þþjì|ßOçÐu˜÷w«Î”»Í¨É­æ{Ù/å›/Š3­–lš¹µY/:ßnŸí úG|ºŸ�7˜÷Ñ‹³×¯‚YýGô' Ÿ_­ù|úþyðÞý‘‘´r£ŸYV¿Üùœ– 3iFÐÖ};L†Á¨öK0¬M6w^²ÖñÍ™°ú«›³3÷;ª€?SHº,®Ö~Ü ë?îýõï£õïÃõóõ“õ Æë?> ®Ö|ÌÜ�€Ud u¹?¿Ë¶sDŸ¦.(&Õ<ˆê‚¼¦0~pf7ZSÚ™ÞäöL÷‚ìöL÷ƒôöL‚øöLƒüöL¿ÓÛ3= ·gz &U(§Yžº³Ü^¢§‰à©K®kjðUÉCÉÒ˜Y„FÎ\,—WJE=•‹¯‚A(é”öñSˆï…ÀZFñx‘‘ l³-€g$׌üò¿¶áõ~¦žßA~TüާFæ]Ìħdܽ{^’¯Ë»ˆax­/ù'!ãýÂx¨ëæ•úM†Â3_ð™N�gû%—Õ /F?oPÀüƒeT/µóÁ$šõó j©§.Q/òvTÄÃP™N` Dõ}¹ôÌ3©Õê ¾ÕJ®@|ó Á ÔÌxlo§h¾cå�26®uo˜îQ §›œqÉoBMý0šçÁ„œšÁùƒ-G-Uã½·ôzR‰½l¼�2˜œí•_¼.àì¨ñæ7�÷míps{cS×iës6²î|q1 8ôê¡AÔ¯ýùJdr^sôÊ&çÕ˜ ­ŸØ8ùBkݳæ5Ó@Êͧ3º”øõ¿©-öœW‹/Júõ[zû‘ú,Ñ>¤#9�ð‹jj~Ù× ™Nf9B*ºÅF%ÊÊ%Fò¨¤^`*ºŸRàÑ4£SM?ø=ʉê|a½= ÿ@\\‰BGÞÔ©¦1Ç�r5ÈvMï»dÕ¼$Û_ûÀÜ››¨5\�+•ÛÛÃ\¬©¿d}hW¤6­ÙêèÞW* :ê4ó8Õtju‹ÈíNŽØse^éâ"ÆïK8£©Ìu=k3|{]AP 6ÊÀºŽÍå{ZÐÈõÛJ!Ähø yWZñäx`÷ÕšM0õ6‹†l��É(@m¹$¬êÎ Ååw]CõPOùÆ)u—Ö½»¾–à–þ™6:Y¯ª#%bñ²^ãk§¸u†®oé‚Hj«°ý+nšÀëõcçóô•VKû ‘H·6ª­íVDÝZ ⨑»R6Rälž«�I«¶åR!å¨Tï…ÿÛÀÓ¯ìÛ‰6þ?î„›—º$j%Ô•9•6†i”SH¼Iÿ2ÚèoH2rÝ ÏP^Z|êb¸û §w‰%èZ (è û2ÃPf&FËŒ[ W#:ú×1©äz³¸¥½™ˆËXoSIÊŠWŠF^G Ìê "¦Ñ ¢‘GÍ1 –O†'Ýø·™£oÄrŠƒ4 >¡&'NidT²�ï2úŸ6¶7X: s2®>!D“xÞÈE¿y)ºÆºÌG¬é�Ó“ã–ôÝ�®Ñ@ƒàÆxZ%”Ì"àýR½ä/‡Wjª5þÃNˆÍB# +5³àgüD)è2³ð¢Áeæ°3fER1÷ÏgaÏÁŸ›b>õ¨|†ÓÛAº?‰_éyoL yÓÒyM eІ6QMœ›Ó̦Ì|ΜÓ83‰g‚Ìó™„Øë2`|ù€½­¥m›öæ‘Pµsr^ 6Ub›BƒÊ’å[Tcœ†!Ø é,¦´Èè\"ºoòçƒüiœÈÐ8È9Á*²*¥jž¤u[,ÎÙf{Uc‹õw…¼ÒìIeevL/9•%m°aKÝLk%7ÐZ £-’ÿ7”F¬ØN®Uk)û‹[iKgÔÊÑ=§0±qgÈ™3ddóhÌÙ/R}/ÝMQ^œÃ*逋Ô;Z ° ]øŽ×oø{}¡=}ý5 ‡¼“:¯ˆ€¯ä Nýã)Ÿ˜Š­¢°ËÐ+ÖÆ^MmÞuYÐd#�aTŸ¥üÍÊm½emy œ}Ù„|Bæ]ÓŒl¶M-õ½þÛ©I¢Oñ,5�„»Zˆ(àeû9P E–W˜*Ðϲ7:·n‰onÊî$È2\'\3NqƒLy›¢‡ç]G—0㊂�’£ê‡ªD_Ç˹³o4æuvìLØÞ›7GÇGgG{¯Žþ9|Û )ñ7HG ƒ¾Ô ²qZ¾¯Ý:G—ŽÏ@V絎é‡4Î ÌÉÿ¿¹koйöÿßOS.®TÈØl6¹3«LaÀ6 †ìÚS”v˜Xñ I#ƒ¾û=çôët«‡ÇfoÕÝJÅŒÔêwŸ>Ïß¹Î*‘‹Wþ¨îÝK$Òe+Ì‘2ѧ­ÂO˜ÞÜ`¯ªxQuÝP€LöV"–n[.s;®Æº`]´á¶j›KušTÕ»Äeu0GV³Vš§¡ÈÒ~\ÐssáøÆ™÷ Ü÷½ÂÇÜåÈ‘fÖøW­ª,Г$æu+â3„íP6ÕÇÜ,uØf-—yÆðuü<��å�M¯´n󡬥ÜZØ-O’W¸bnù6ðOˆŽióŒÌ°i£À¦�©ÖJ[EÝkÜ8Û¤¸>@#ë%ð6Жܣys¿(tîÎb�¹ÿðg{;-sþXþ~ñ°òç +7ÃÊW MU¦†&JíŠîÁ©ltÂöéüáñîÎá~r°§ì!bK¤ÀŽÝw¦ËJ« '¦l¢Ãþ±<2‡ýÓ¯ÙÍiº¸DÆ“ïáVÀÊolè?–ÜP·_hŸÂ]³ÿvçìpœìž�œìí~Jv�÷öu÷ä• "Žfw»Å<}²§½³Ó½^+èÔødçèôpg|p|tª+¥X_6H&ŒÞ·Øql¼ŸÉ8v¥ÀDÝ[À)u¶.› fèîJPߨ8n% |³F"ÏÚõ>¹HÉÓu�:¼È,ÔwÑv_§ö.cÑãÕS;FsÔՔ䇔Glb„áÚw&$ÖêÆFÐ+HÁIà™<:zxZQ’,ö ÝœútrB[ð(â’ÐÔsXÁªb…p—¿‰èˆ‰—÷KÔLËtPE+4X´q U\™O$ËÊò!�{õÑù$›¥áÀ‡&Z_æØ‚\6{1í5,J� 4@fF~ñ¢Š¼Œ� —ÙFÜ*ZΡ‡õÎV…;‚<;†:feĵ(-㬉‡ºwdMŽ6fUpÿèyD/•e#Tä¸à…n]øÇ>­ŒÊ,¾'Å·6�+µl¢’ViÔ=s¥X¯5õÁ®Tf¥ó—¯Ùë`A¢Þ$<Åi+C-ÂÒx”EíUús<!÷ÇÞZȰV0òˆè}Û º‹Ñ¯˜xaP‡ïhNUÏ‚³Œr ü¹ËïõíÔiý¦q!¢pÊü¾ R«6@ÞµµœðÆZ]¬Í1µö5Z:x®ðW÷i‹Úé« æ\g8ùEn~ ¦Î@iïÓ`!x”Þ Š6F/û ¹"#üwÔGÇÝ‘öî©âëÆœ(�i{3wÝÊcsþÇÁ_6ÒPŒ�ŠÛø‹¦L‚E•”3q ¶„ÞVyÁÛØj(�fP�÷Um!îÄ,_¦�M¼Änllä|ö~^„@“¾rìEN*[e™,ÏÔ-@§’nëÜS *-Eq»"òX2üì™!uªµŸÊ‡žAã€ÅK%y¡„|¯Æ9È#ÞKF¬áÔw)2¹ã.'ª%H;¡M¯õ�YË;sRž‡Ñz*O}ØqdûšÞUAØ9F*ììcPJÜúðž~™´#­xlQâ,ÆÄJÒ_t}{ø¹@gá ¡™è#­*a¦¡jÐIhþ!l·l~„)ö(S vR ϸ�”õx…9>ðÊÕo,05k.ñŒù¸4±1Ä)ƒ‘yX ë|×KìlEð4¹F-$¥ Ñf¯.Göøµ“Jz  ̼RÙÙ¡½jﯥ~V. L2£þÒ—ð­0¿ù½­<ü�Áæ7ÍÉÎ �¢¸°\ÌÉÁÛßÛ/i™jB»¦ý;ÖnñùL_‚p­µŠ«„s“둦†* ºUÊÓ¯ªÂÕÎÏ5Ažšé(8Ó�Àwñ$G‡¯’s8dDGd$ÛÇiýÐ ³ºkVÍ\Š>ˆîŽhÃ@{C-©:5¨M§ÛÕ&¦#:Âd“M ebVu•Âi°ZÞÐY]ØÐræÑw}¿›Ò¨Ç±ø¬3†F[Å ˆkšŸÇƹ¹ùØ‘†ÙHçÈP`Ó´”Q>t‹î!Þz AJ©¤éМnÑ“…•ΙjÆš½ +"šÀÜ®�üQ•�¬É‚_P%›"µ3o Ò:Èüd%s1NñgDyÊJæ,xF²º›‘ ])Zýu>¹BøUÆ�ÔL!åpfH� +Áƒïd»Skz‹~u{9i­\Æh$·ö@Ì»Ô}ÈÎ_Z[Oq¶˜¼Ø]ò3™ZÞ3T0Å©p³f�ƒvº•R¬ º/ %É%£ ÌúËÈMzê2M{æ´Ñ„YòðïQ}”jÀN8!9K;—¶Ê×)  �±lâ^~Õ€�Ñ€Z‚Ûn_|±¡Ö ºh”Ö�3£oËâÚà*ö¢›Æ)Ü¡½ènU nY,±H{ѵU°"_³K¡k:ÉÅ««ÔxØ)wŽ^”Þé·Ì¾ýîŠ=%9§ýÍÒò—Y¶@Z gEVó™2 ¡Kñ2ý�ÍÊgΪۿÄП]µ¨—˜ØàŽ â-ÛÛ,G§ù*•&—“¨„“›“ï«ÍxÛÝB[ží×ÎÓǪי8ø7¯uÕüé�[]oJù~mŠ&†µRÔ]Á-·€rßÒ²èÙýsáë6ùÁ4ºSÀ§xcC›ï¬�1T‡¯µ±¾}˜Êe«ZWŒ»†n?ô.89$SôŒ}j•*AЯºóú¦¸ �¤Órœ]§Å’Dxñ&­É¿b÷"°Ö6l]j�ÆYbY3èëÌìvÐŽKRÜÞ( ƒ4þ+ÖËÄõÙ½²l~PÈs`u8åÆÜag'¶m§3Ö:ºDgä} B̺0™*ù'¸q!ƒZÆÂDs·ú"�/˜LËÊE8 ²0 Ó„  ™jý­¼±1¬ol¤”'®ŒáRWãæGýé9±j¢( ú X3ù× èBdÈ8Û<¤Td—�ª|PFj¹0Åx â¦$o<]†:î,wŽõc7ÖjYdí[�êÊŽw†šZ¬~ífJÞ¨�m¯©~"oÈzöתµÖÒÿWõ‡›Åò xè?`/^«6zkr™ÎGÿ-÷lwq%¦fŸK>[øÅ¼y´³€ºÐûÞBÔ“°]æÏªbU1 ΛkžS­“Ì7xþbËé~Y|™…ü3nèŸ_‘){Òžºoì©ûÌž*­§ã¯èl‘Õw½h_ÛåÇ^—‘IŒ±Rº>ÿTkÏë¦ÿÄôÚiþÕbÁ>¬¼=TN¸Ø8¹r£û�ÐW™”ÕÐ�ù6K¥c0žzȲE‡]T‚ì·äÕŸ]‡TyÒ^b8ÈÇ%A¿ ¢«úÚ`~coA¨™² Š¤Ç/Þ|ãç˜íÇf›�Ÿå�fðÌH#óx�øJnSl'ò¬õ"èIŒ§ ¹Þa¬ÿÎááñOɇ³ÃñÁÇÃýäãáÎýµŒ¬Dqûa¹¨³›EJÆ ”ö„•Þ”]”¾?F& £cj}[ß�OÇ';“ÃÓñþ0`ýÞ(t1íx —¹A÷i| 3ή˜6Ðõà(9ŒJÇæç¿ðg“+ÿMEè‚¶¶(¹´)zbiõ€z„ä „ïm#Õ[§ \)§ �ˆ�†8ÞÂ÷¢…!v!‚©‡Æ ƒŸ|kô€þÙ¶¢ûŸ–N”_,eÖïtdÙÓêÀ²¦Êù£Ä•j QËFè-Æ´ŠõЉŸQ)zJýj¿‘úêõìá!³M²r¨:,jÒï÷I�šj×ÂA�A�ÿ$Û50CçÃzTY8€©{Õ`ªk<ô¾ ¾ ï­‘ën¤ÎÔŠ$dZib‚5JÙÉ’ƒd3•À\„N¤,Ôp¢;ü�…é1;†fD{�) Ñ pWɳv¶ä3ÎÞ0G�Óf¤–]’ò%‡½|!ÏYÔu¢afÐw%pAAù_ÝFßY]{µnêÃD諌l�Ì�cÜyCå­´¼ÜV)cÅíô”$/ŠН ™ôv†K«Ëº¯¿Ì˜GXݰíÃ�5ÒA·˜ÂhfÀÔ ôÛ}ûE„“§Ø ŒÒ„VÀý€vþÆ fR%?U³eñßñ ú©Q.ñ+Lƃy¡ÉÓ•þÖßÔ>O‹™<×¼^ ^+ŠA|'Vµ#½£�Í3ù|‘ fq ¬ÐÞš¢®4�µ%dMuºF’Îa<ÿn‚*Ê#» ÎRCËHÁbH©N‘mãì‹”€¬¦²‰n¿„èáZ{v¯Ð×aZ”1üŸ³7éÚ7´/�‚ÝÒ2ë‡&°—o+ÒþúHNñÝÊýŽqp­§Kµ¶ô¹‘IÊ]©Ñ2Jqù¯[áŠ÷œÐ3\Nò Ð‘uã°ÒÇ@BÝ-‹h¾þ~ë�D5W•FokOhä³yXöV›p貘"WM@G{!Ÿ·sí9¬50šÞ8”þ{Ñg«_!ÉÚn%u_Wjr·“�{Óö¯N¬•’/fMþ�oa[K:ìÒÌ-šýÀ� ýâÅÌæ7!éd³çÈ6ß ÓùíeLçã†îE&›Ã"¿¡vFÒ3ÆÞEÕ4öJ:*)¯˜V�ú©�:_"1î~gQnüŠuïßšKDà#Í)C꺌Ju“köo¥‚´¶è&ô(ú2([Qi¿_^ bn¬¬e6¦1©rŽþ©ÁÌŸÂ �| ¢Šƒ;I/{Ñ7-ˆ~ö ¢.�Ínvè=šLÆÙŒéÝùuÿ$o€€ æ'AVåÓ û=Í@‰!bïy.ð†?� E|q0 ÷x¼VM…ú1kƒ}ž5a'¢;ƒ¥8›£c �¦a9fp-ÌyÕüÑ= ÃçÙg‘8F«-ç6nA}»¨M]Ú*Ý™áý::ãp?´éâŸH|îšd1BÇ5ºJ1{¿Ô¾2NÄõÖ³2§ ýÔ$àq ˜ðø¼BÈœTøüJð÷Ì8°åGg‡‡èé“E¬J\QtaaæS4¶Im@´Œ+ûJÝmlŽi9òjªaTuøêé<2ö…²‚ Ç2ü3ŒOdö_T…Ñr´B‰µudd‚ú;ƒ«_U-æ¯ü‚cÇκⶥ0ƒ„Ìs@·Lм�0Ä+é¥N1:Ü’´ªÖ�¡Ý£)•o„Œå#m;­õôp¾fÈÚVî¥QÚ¥ÇL Ц@hÙ [Uh¶“j!w¹h¨–U‡eϧï[7!Ñt»D±%FöîîÔㆂØa#¯wÕŒ Öxñ.ˆ £Ö R‘k“æþõM}w*ä^r³ÄœÄOŠuún±GÌùߤ…žßFvŸ%!k%ÆŽ'ÎòÑn�þ¥û÷Ósöï'³?=¹µg‰Ù%gÂ…ÑÁ}™¡ŠM%F­™òíÃ"ºF•4z²"–F–ú“‹I t›Ä›óMвÊß5¼Î¿5ìÕ�Õ£‹Y{nNãÏ\]üvL€Œj5�P_‘ ÿ�3•`�8á›2fá¨PÎdäw°·öê¾n¥]ðu Ò䞯M’½Kö÷?ì�“ƒ½$‰ó„Œœ·e'™&Êû /0 �9S–ä�$+LcB­)†m‘«ø÷:C`.Ì•ð =wŠ×ÌïM8'bÊp‘g{ûŒUøaƒ*1Ä� èe„*M”„S&kp†€Ù§ácq¼õ©P™P„âþõE:‡iÒÏådɯʃ1X>½X^‘”j ?ž«sUÖ]®v-¯ÚUp¯èH×tû?FF�bÒÑÿÔZ´eÐÆ(K›Gæøù*pê÷�f€T ØêÆu‹Á»+2í}º¢hWQùá™ßu[|xøÛŠn¨¤¥Ì ‡|„S”» ôæÅµâ¢ &ªÑÉY=y·1×R¹O*uVÞç–ý&¡Ê)ˆÞ JºJV3î@« Ò™z#Œ$§Þ´Ÿ“Ã(d�•ªâí­ïÿò§?ÿ‰ ¸Egè}Z��S8Ûý|Îð°ªaýãBa)wá5|>Ôˆ‘Á2†Ù‰aÈÜK`�Tq­Whï´’>#l.yÀ§b‚£LŠ¡¢z©‘Úîô¶êŽD¡OhfNh÷HTË!sàêX‚�˱ó€sŠÒfÓOEᎎ÷öGNYs:ð´²mŽ‹ëŒ}«Gµg©UQw†»l³Õëö‘`œÜƒˆ>$Œá¿¥?}¤r´Ì)Zu ɬÎÁ†¼×9BìÈ"ä°˜Ù ÔIÊ+¨‘ƪ°“2jK O–CcU4Õ1ÈD`Vˆ)J _Ò;ƒÂÖJÄX\Ï1£¬+D?zIÒ£;ÈzX ÕY·SchG•î¤ð#.�1Z qÙZ›W© ;Ù!ñÞ‹Ø(�c‡½Wé¸ÙÎ(B;\®ð„Ëeq1Iñì—“ì\‚Žg¤Õ�NöZÕ¿­x5Ùæ€xÛ@*–Š *O7ãÝ Ÿd›õëíóp³šÔ›ðI=Y ó/ù‘ÓßPä4Œ^žBm©N�È6!BâîÜH«ÚÛzǽÉã;ÎG¹—–î.ÂhŽOÎ�ö§"‰ßj„zƒO«aF ‚¨pÄ46N.c Õ�‚bfpk(’–÷ëâ°¸MËÝi…~ŒLçwÀ9(ê}3Q!Zºg‹%ÈŽ�@ØCß¿z"þ†‰4€%q¢Eš/1“Ó+±T¬g}úl´êÅà¾÷/Øç,aŸJ24Ìî¬á5w1%#¶Â¯\ë…˜è@ÿ-ýF ó�4ˆ½A�A(M$Õ#¼Œ)Dv8C`©óÆÕ07‡Gp©¹Iæ�š†�ð7Ë7qíÞØh�SŸ“SÄ30(K æ¾å-�£ºÊz¸CÐ_pà¥w{hª4›¼H´ã樊R]^LñÓmãG°ÈWW©p1×>KM`/PDà·ôpÑÕB"ú´¼/ZäõŒšÖô'®D ß6Š•! ­Â<ö7B{ðz› ùëâ”vqjeÜùÕY~[NoðîP,ÐùÈ~%'í5Â+”úû"Äì(z$e™©b2S¿ðá¡wQ‹tê NäKAJ뙤�µ©×NÝ;ªÏÈX,Ü$£ÂÏ¢dáý2 2C_ ‹ùUGVuâ–¸L¬FdLÇ–ºcä³p¯üh"j`£×Û)+Õ‚)†yí}Nµª*ò aÙím-A¯iB¢ñè•È;¥ú` ¤°y*?¡H´ïÆtß}™ åE)ˆ–³c¼ò¥îKY3‘mŸÓ`g– §j”ˆ�¸â_âð&�;Ð­Íø€u%(wj±š˜ˆ9†Ã•…„�˜Ôì]‘¶1q†–Ñ`NŠ«MjÄÄ…9ÝÕd—-ÎŽÙ_ 9„È|Ú>g: ac�%‘¬âïT,ýˆwýˆ|V —’UÃNåŒíÐP'¯Íâ·é03wJfHxwJ&¦ÎÞõ³ˆtK¼�©ÕÂuF‹ø&‘–&\>(�œp£^– €#R"<9#<ëåÊ—¡NcuéÒC5j~Ë"„œûjËø�†j�* !£ƒ`Ï«nÏ«nç*ÝsïKÓó xl¨_ö—‰Œ: /KÔñš'1ÑëdŽ€^ýà W\YSò(褧œ'‚S›'çqý¨øÈÔ*ðW‘H }(-B¤ýb˱ˆå%ªYÏæ—„¼& š¶Vï.¡QŒô*‰%ÜY*%æ;¿æH,£™[dù×t.0[DV.ùb™¯|uS¦MV,«ƒú}:�ó7™çÉxš-ø“é|ž‘kµ[T¿p¿@”ÁNizè–$DÂé¢SX=wËgsØ0Y­b,;�·_»_ShÅ›»·9b×\%­ä/êôÚ„3ãyÑ&Aš%í¦CT‘$H™BŒÇWßÃ~Ó®øB‚áŸG’ݲ ×V$ó> a¸ƒ¡9˜ëùÃFܨ°BºÐ¼MA†F/RÅ·x®Ja*Ϭ¢Dn…¶êõkèA.ú}B�sMìõ€"qƒg}½W°–°ÜÜþ¦PŽ5ê^¯K´â¼&Oƒz•%[oóó¹–æFpü?˜ƒ,.7sõ0™�m Aô¢ÜÜÛbâôdÜ×uÛV°@²k|-ÂV-ÄG½ÏW-¨}< «ª°xÉ«+µˆ§Núܪð.Âê õùñTFŸZ•É5]]ßwžå÷V�ÖAZq8ºgÑS»]“hdž]^Jy±íÈ™wW´NôÓ²÷þ�ô™ç¢Õ “ ž þ4ÚØ¤†Q¾WÎ EeɹtLÕòçä”0ù°×”Nä2…vdY,«¬ìPYµ—Ç#ìAâof‘�‰]R%äQýNSç9'Î+ hÕacaÃÔ#ýKë[{ɱ÷Ò­‡5¾ˆKצÑê¹U¥—³J$1¶ïdžùåIz˜ŸÕ|Ï*ÊÍZ–”ûñ–]ê¹¼ÓËÙ¦Ç9¦¶5›×VŒ;@SõÈ�Rüš6¿XYÞOàÕ¹„ÅR_ûXWªà}%À9…§œas6kq6ÓGΦÈ+»$N:åÅ�ò(X}OïVöÍ׳ò?éΓÝ%¶«Å ¼¯q“`‘¨n=ÔË1eü“=´©I1ªcßT�“k_†{k¯#Ðe`?‹K#J`P]ƒ*Έ‚Â[CøjÁYš#Åã*`µœÈ3ð1 ‰.N[‹|9ã•*ùÎ4(Ør?%ÅM�ë>e'–)Ø:ôÖúZ?aÃ÷¥8iú3ñS|ã+Ω‚þˆ?´ø@oƒ]*aZï¾óq~¢Ú¶sôÈïä·¬Š&+Úâ#·žGT¨Ý¡„›p•#-¥=E¤0eGÝy‹ËAaµ©÷swŒ¾�žÓ>ç§ž¼¯9û÷7Ô¬©†¯bOE�°¶òÈwóyoÈÁ3Jº‡£ÆÎz¶…¥ù{Ä„�0LŒ™8¥"Aq9K-u5.2•Pb¯Su\«ÊM É×GÀQ¼‰N’Ч¯éß ¶  q*˜ãøMr;ÎþQšÖš¿íCä=B� TßÛ¹¦«ö‘qf)׳”«YÊí™ÆDdj-Ä~4[Ô8W¸,åé ¬y×”qä2D†iðH —¶Ö¡î–™b‹s^umêµï¨Ý¬Õw‰ÖŠõ'N­K…í½Ç)ÏÈCÅ=ì:ž,›@ÎÓne>=ÜS‡žM‡Ãbè�!2Gså2Zùfµì¡ÿÙ_­¼­�$ E5eË9@1õ3O_^¢‡à�ösºv´¶ÚQ�Æ©‚³•ä©àÐ<Ë��ísÀxKìq4»n9÷ýÞòÆ-âE—añ—¥5ñœà”ùO¤¥®^Z#ªˆ4JFƒLBP m8g¡+ÈŸ‘!ë„4d4Æô3²ZlŽ%XÄòRc²ạ̊Ι¹Œ±×Scm ™8ÂöëÔoe‰U‘0ƵŽEÊþ…bN5c„�ŸrŒEaâ©ô¶"ʹ̑óm—·Ú9HÕ.9IÙ¸·²—Þ�0›­�œšÍ6.vÔÞ"pç發¬€µ‘kˆr.¯—ŸÀûÙÜÖ‹N­-Ã󢓊p†¾³ç4þë~Ò7ÝxxÀ 1¹U5˜L 0Ö<ÍèŸev~Þôª%7[c£D�•Ñg‚dÙøÔu?´YàmŸsì,Ö‘\¬\¬:èÙz»ªíkÅÝÑÓ‹xôØ"Žû"þÖå;zÖò¹Ëwd/ߘ/ßÑï»|O-, 03täõ’iï߯I¬V/:•ñj¤Ú¹O[ YØÛ§‰H=nî´'gò«,¬ Îv1xtØÐŒz3ú99×¹/v:„îÅ8 ; Á´}^A}]ÌãŸjØ|˜Àu·W·L–ÿ+Þ î%5Cò „½hGoð=¯nÅ…éš§¿¾¹£Ì*¹*•¢Um€¿�õEÜKvy§¼Ý=?šºü(ÇS±X@†¤DB§>¥Ô–�蔺7‰íÝQ-ab'Y¨1…-ò~U•sbD诸W÷6�“ÍMËè ƒîhÞL,ÖÇ©v¾ˆJ…!c�‡׿¦2�Vç‹“ÄÑ`N*ª@1²0ç;*\1øš…£7è%lô˜¤Ø©ëlQ¬£9O¹UÄïó O³ø—W÷eûðêj,¢£A08ê—a>¹NÏqqLÃE´¿Äø Wì´69—©4{=-S¬QÁB…º“co´„áÊr–K ô]ÆËÉôâÃ>«b˜Òe¸¹Áà–Fž©qpKÆpßO–çÄBkMnál ÜÇ ÓÇ%ŠP<…£ ƒ¿Ä'U¼à7ìØ�Uügl B‹‰# Ñ[4–É&«ïÐ4uR&š¹Gj!.? ý¹±1#µ-Ë–ë8` jM–ç£æ$Á¿67…V¨Œg‘ ºX°àDÝÙ¸©8J¯÷€^O.¨Îû6¢?'åyœÎE.uƒÄì,ªõý.}�¤ÿda³èýD�d‚+ÍìÔ�cä'®‚Ù#{¸G¼PFh“¥t–+x(‹ÄF(0ž¥À¡<šWþ�Nò¨�?Ã(—ð=®[f€Rm_ÖŒE"uòiZ/Å=Þ© UZ»W—Áûœ®�£úÿáá8£°K¨½§npHÿ¢Mwäa*?ÓË”õ ÕLÉ”(’ÃTËENªsÜšeh"Õ°"¾X0½³Þ#hݰî�‘‡‡7¸8 ܶù¤1�5¢±š]­¢ ·`>†<–“!Îd—jQs@¶œ*ÿ²‘‰ø·|rgºp'ºG°B—‰È'¶ýƒúJ†cd}-ªkõìÆˆÃU�Bó$•VicC/J«¶Ê¶®ÖT8ìõÑ@¹BÜJ#̯Y–Ë›:��á1fÉ´­=<꼚Z=Í.gÊ‚”D”Òxÿg¢D‘ �ÔVçUöŽF·±á>ÁˆQjR Ó}­Fí>ÇIh=åM— àͰ"Ãê1ýð¿Û¨'KØ-K=ù¢ï8ÊÎØ˜��O˜l‡= Gýxå›j¹ FæîKÝ?ý2�·{Å56£­_ö•UG_³¨×~OCH÷JºWéOKE8B»Úóš,Œ…1ºã]È┡2&´|“DOS— ° ç”—*&¨Trì»Å5¡¢”Íÿ,a�F|SÃF–NzÌë[d†`Br×·fnÂÝ3ÖMÀ)&<Òñª»«~†pÆwEÞÃt.ðFJ¬|„Ÿ©‹Õm&�'gS8™ï‹¾ÆœÈhj�|Óª2&G®,£�‹L“½PÊL>C]êcv£ß#¬ys$ó«·êw¯Åÿ€†þ×ÿPKÒV1])B¦Ë húz[imunify-security/assets/ui-app/assets/static/shared-dependencies/router.min.2a288de38537.jsUT ëÆ«jëÆ«jux 臤[}wâ¶Òÿ*Ä'7Çœ�%IŸÛÓ®››²a›„Ⱦ6'k@€7Æv%9,KüÝŸI~³{Ûþl½ÌH£yùÍȬ„d‹g3¸ýÑú¯Ìbßå‡ã�3 ,þå³ÀŸBób¦ã0ŒweÈ…uö4ÆÒ [Ö×V,XMHî�¥Õzry�‡x‚ cˆÁ‡9L ‚)Ì`O0€,¡ #èÃN¡]ø =ø·ð�p7p×p_a.áO¸€3x ¯à |€ßàwxïà5H L—H< ¡WÂXB,Á—0—0‘I˜J˜IXHx’0�°’°”Ж0’З0”p*¡#¡+᳄ž„/n%æÌ•ìGNC¾¸pǨ+˜cOdÚÚ¨J0ÉWܽyÝi{ý‡A»wÛÁ5G8X­ÿÒ &>ã0ņ›Ù‡0`0+°6Ä€í-Š|o¬ÖwNb”Í1�O8`ðèEæOa�³n‡�}¦ä„K[º|ÒgSÈúß ƒNû®ß¾¸ë_áÀ‘bã˜{r…Ó%C5Xæ]ß—7ð¤÷U-æl¹Bœ“ᜇK$ÐÎÇÁ’»ÑÀ�²7®Ó2FyçƒÐTØ÷±§_Ñs)Ô5Ì»FŠ[‘ÿ�ÇBš�§ß¨NGv¾?r̽HâÐîw‡ê |þî¸>aÌÇfýLÍC_HÑ4HûnK {ÓvO¯º:}xÈ9 ;ƒáéY÷ŠÎíUg8ìô‘âce?vÜ!Å!h^ž�Ç 7å÷¾ò‡¨ÅW9ý×SëC ×yÏÌG.màÇñ‚4ø+é÷>w<ìcƒ&—ÆàHµ\/`œôñO2Ø9ú\vΤµ^™àÉãa@„3YÉÆ¹ÇÉ;<1eþQL¤Kz8ÃIœM}ìo‡‹M*�ÃUD#³wxëè7�Œï•“RjÎo ÖK‡èúÚ&oñ¯̆®x¤ðaS^•îñòqÿ†lF!£œJŒ£XÒ¢ŠÏ—¡�gžâ`Þ®(N¡�ÔêÑÙž{þ„£Kü=óEU2z¯6uËÃÓô�q�g½Þp0ìŸÞ>\uÃÎ ªÕë|žÀ) O(�‘7¦âQ~ĉ~ËõÉ]I‰tîcqHâÉCa LeÇE§Êe¦÷Ê«bÜ*òÏã24¶só¦ÛïÝ\wn†%kðdêñóÆŠ‘%¤ÁG¨gW((A�›Â)FG¥A`˜õF‚ñ'~bêÄ#¥®>½LQ&FñéŒÍÝ'/äi÷D-ðúvø¬ž&”ß ;žR‹' ¤gzAk(ãó„MñpŸèQ’ûTQƒ3Q]Dr¥ßWôy+oo©é§¡h€\�X›ZÏ{í;Æö‚ᢑö®ÉÕÒ�wó4¾`è×ö°ÈBËiaZæŠÎú½·ƒNc(9PY²þ~¢XœNÜ ž¼f¡?r¹`í0|ô²8ð¹Ð]š×£µ\…Z_‚8BŒÏˆBNn9ôÉlŠq›­ª`ë¥+æ[=wÔsëÊížE©×>v{7m:/‹ûІ‰¥'Çók7B ¤4?B8D§‡_•®x+Ð >Òž¨"`A¨D£Ÿ1šû§é“o¼ÐÓ¢(ót‡ÇGDEÊâ";­¯2§¾�H+S%¢øASä‚ЗV,7öewªÔá­]º\¾õ䡽Ž]t ô仂€šá~Eo’éÝ ÃäØÄ’53iÔ×Ò^#sÔ79 o]î.pÍßh�„oÈ»@»ˆ«æ¡l>p0‹ÂÞkÚãÍ÷ “6:Erèn‘ Ê\ãÆšZŠmKçW»Ñh°ºóë>ö¢p²Yº½^O¶è)‡ù÷ˆª©Û”Ï™û·ÖšÏÛ¦©ò×È©)”(äøOUë*Íæz˜nK Ò»â!óÂ\PýÙJ¤ýqm†6O,ð(½æÞ`î£Ìº)øxÙ˜a@]ÆÉ4™‡ç!ö+î“|л�tpà%À²�ˆñ#i`©×ï7–-*¶ü¿¬—‚=Ï �B&7çžêK½yÓA¡nˆ8bœŒ×å3…¹ñläÜ#ID#†y…¿…³w”$š Ï 2¶FIo\#äÖŽ9ò–H·#m:SŽ>! 0£k“}ôx¼‡äN&Šz NmêuHñáÛîO’‰'"ͨ�ˆbi”‘±žOBFÈãÒÂn ;8(¾&Ú=£Úì³EFÙ8=æ°çg%?:ü¤‰Š]¯76f¦¤(�̇¥;Ÿ˜–†·ˆô u–†Èåðú*›cMQ°CO"Š­'U¬7i&ž0«  –ü€ ”Á8Ž£6ß¹ê(,|Ó;ïà´ÁÜ�„KÂ_ÅYEH¹^pw¦xá‚^©$NI}ˆZÄJb³–è1—GŽìD?7­t¥ºU6­Q8Y™—=7ƒØ÷‰ö™+Ø%"ZOjµ¶`ŽÀ³ÈdøgÌÐ_1_¥+¶5Â9zv"�U–ÙÖIYuE=w=øBœé·d™s‚"›ò[.òXCl3@÷ÕJ‹#P)ç�»H+WÖ¡Úic¨ÐpƒˆðTQP´ )«BXÇEèDÐbMøJ1rh"C Ò| 'cöÊlMw>%[pÃC*(…‰f}�ëdõm·©gÑySåÏÞ˜OÛI6¨à±Ð‘3gÇ&Ê�ë-oŠ 5¦ÞœÒ®(K™ØØú+ËbÎÃÍﱺJD•Îö�ÇGǰwœÙÝ.¾Â8`Y³\V·Ë¤+EvHäª:˜©•Öÿ©Jº¹Jº›*©”m¼¡l©ª¡-:2ÕÛ˜9V0{éFÑKob5õ·Ô”.S$­j8±;I7ÀŒŽ9\¿¤eìL€§òeŸMsm¦Öy(TتyÀda°j Œ){K],0…æ‰ªŠ »¾ÁVèQÎq�éSŽî2å§mÁÌFéà,Û8Ñl9F·©ùªòÞ�@SS1‚‚ã:†uê£\IœN&lBÞÔ€€oÑÝEóåqý?ÎQ™n_QÓ”ƒYó0<—pe§ÑI:UâjɃ»ì,Rtc“¥ #ö™‹p¬ÞÊ—'Õò ÞÀ4=l½j=h¨;eJ¯™¾eçK>„¦mÊcÃôp†¡¦ÀÚA‚YRàIÊäJ®)UÂÆ#[ÑrKÇWqZ%• SÑlK:x(qm1ãåNL[q²û”XaKßTý². y6æÌ�œ”q JÄþ¤òq³Ä±ö×¹ 'Öý'å{åIÃgÁLÎó-{Íüh9QôÞ£ò "tS祴EyÕb#‰‰6•`P²e*&jÆ|Cv¸8Þ˜»ÊÙ›!�ÃÓ°‘RE0‚Ä^ O2�)?nýZµ6¤'ÐüxŸÐº��h ‹o/%·2ô‰üDñgJtÁIç“ï¨g¬ÍAbTÌ ç.¦ÖÖönÀ?ÅÜ*G3åq)¿(ƒBÕlœ2Y|á(R‡½é,·(Å¬àæ‘H’TXeYFURlI¢€J«³ž¢Õ |˜£Fœ¹}´Ä .4sœÖÔÁšÁ:?;~ú@�e Þ¨,ÔÌŽ[™ÿ©ÝRÑnêø»`@[î€bG»?ïè ÿ1bðsÄàW‚Ø9sÖâiÖ´æ¶›‡‡Ëå²±ü¿FÈg‡?bŸ_æ˜_V 9þå—_U/ò½àq÷ êÅAÕtìÓ°Ÿ)…Á›4‡bçºTï¡ Ì{v0ýùð;‘²•Úæá¿Ú½ëÛÎSSK¿X0eΧ‡`Fjòra~3Ý4Öv“¶.2´ß/û^@•8 ­¬J8éM‹cŠkeâ§rÃÔõK0­ªQá Ock¦‚¨`.gh©ˆã'kP4LT´ô» •U™É 9IŠÜfƒi!‹qЦž‚8¾k{)¦#((¶Ÿg\�BºNXD‡nJX%p¶"¢„‹˜° ÄyÄ™:|ú™�š¸"Ñ «g§…‘tŠ3úë=4ݽ,ר¢ÞÚá&Yƒ¿¹@_?nèZÆy¸@è…†Dåg(�jŽ�=³I’zÀÜiöx{{•©³/•ûì„Ó1ù«Ô ×›¥# fDŽy²‹GÙ}oLK¥é&̲†7Q‘n/H§‰,^Ñ—+ù©Ó—+›ªG_¯T©}²òMm£oWª¢¥o´ì�ãÀµ¹‚Õrq7uÝg6}ÐTTtˆ•½øõÖ%óØ2³³lªm=�ìŒæäJMÓ�âN£”SJ>ÑèƒA=ƒ@�¾òÒPõ—£Ò`WTrw%§þ®Ž]áj±kÂÎÀ~//ÞÿqôäÑoP™/¯*Ýé7<(ù>Vòt›©oê¾RgéJ×é©Ëwîlå¤SǦÔ@aG…�'™^ì.רI5^¼Øsö‘Ý??SÌhî•Yј.ÐuC)[ÊgäÌŒ!]GìN½¦œ¡ŸZº½¤öuLaµ)ë%|ˆ‰z3ÆåC1²´Bå©¢lÕäÒh]°/UÙU��Àm±¹•Qù¹$Zryܱè“È`f!Ž_EäVe.êr˜ä«¼"/ÕŸ^þx|ôïbŠ=?cSÄá–Ež9OJµó¼9 pÎÀÑíX¹¼ž·'%àži/¥%ô™bðÂjZ/X+õÚ¨Á=bë2àG­JØÍ�D@ •!b©Uulf4ù�ñû7#Uã¯È;vÆ0+Õ7âô“ìH ªHp¦%‘ÄדrFœ•¶ 9°Þn&•x†è*¬�fÈZ·´J†SâÀ·v ôqsqo_Ø9"2Éï9� ö޾{“[ù­ áQõ¹KA}*ovwwå v~/óWSÕá7 ¨ÿ4ñæ‰ß°²ìyÊœ�–ëK ,:&úø´`ÒÅ1÷¦ô_欭?FâÎÜñ£©JZªº#züòÓ_ÎU�_½Ó莻¾c{Þ‰�yϛʦuŠ�iI�ô½Ù5’t =Q‹’‡nR�Ø–˜[ãÏS“kúé3}·Â…Ö&B9*uÜ¡âiN±=‰Ñ—~جWÛõýž‰)2¡ {4ßM4²ïÊøs«›0^/–ÂC¸¦ÿ»NC=…�Ëß›ˆˆÙ‚@P03_¬mm0¿%lÈð*\2NÀIŠÈ÷Å4ÈU ž+YÛªôv¤¾åÑWtÏÏÖ#[MH  òƒz�#õR/H·U�×C€0V}å�â@£‹ÂˆvO9¯Àd<¤îö¥‡àxŒ¡ÙRl½__SaS­ ý®Ç$i5‚VyÊÊ·‚©Ë̉ÑÝ®ˆ¼pä Ú)ÝâKlóÒ~ƒôJr{O¡³NÒ£ K’G´¦Çî“ì³Áô“½ ÝÙVH$Oü;죤ëáûçgõ Ê%ËáËÂÁeë=qÅ1¹Löþ¿½oý�Iü~Ör^i›Ù�›­šê:Ü lójo-Ui£Æ–LJÅ£Ëúß/#"‘©TÙ†îÝýp¿é1%)Ÿ‘‘‘‘ñHÉÔK^\¬É I�óäpör ê$*‰®¥*�Ì«&€­[.ñ2ÝT›Y‰z™‚®ªQÞ %ÀR=�Ùˆ4fîþ®ðÉy©Zþ nbàQœMJåPÔQ_2G¡oøÈåÄQÏP‚Ã/ {ƒë[qýö'ž¿¹3â·àŒ8M?äÉ{El[�0ƒÙÊÙËn7Ì&ü™{ïYDox檭µfUï5ܤ¹kO}ßÚÑe¹µ½Ô†é“vb¨={;¥pç«:Üœ¶3ÀFš½Tôõ°z…æ|ð'hˆAô�¹Ø�àP­m:KæšœEæ¬Ðn ^xüã]8b~dý•ëÃê6¢M?:�Š�F6Eð¾¨�Td:<¿ÿ è“�c©h×J~< ö~²¾¸HãFGè*ö‰î¤­£U“I‰ÄJKÙÔÎ\Û²ê8»ØŠ •£´¶òöí|)X0µCÚþ}ù ÊBã­ÁÕñEq:m{=d¬r*<“ÕµQ9.rŒGžgº+2w{;G;W4¸¤‰†z½°jÂ’»ÍòÑáò ýù8š¿åe^ô–™äÏøÆ˜»MKWµ¬‘óÕ›Pû<6ÀJ¸Þj=¨¤ÚëÇyÕWþ·HyUö@ä§"Ÿ Wéêì|Uì˜þÖÞ>s·(„àÑd¢9¶·6mÓrð Mסœ–uá“äe©}*oEn[Ì‚9hû¢IŒD¯¦øoû(þžÈ·îĉþY5�Ò|ãª(þ·sw“RTû+N £%›íÆÆÆ3nF_Å$'=¯z{Øäg88¬Bï£ð±å…HÓ¡EËðb•¡fn~Ÿ¡8âÃé lE>œ(Fð-»ãåò)í"ªZGê*An¾Pü˜¢,ŠNŒ~JÑ \o»Rµ›�âW!TˆÄcê]OhÄÛî�É;�'Ž@¹|Ȱñ8ê6øæ6þS%@�ðtm‚ÿâOdñ_8Ÿ€\pßÛ‹¡fŒÞ� ÜjiòŽ!—Ó=£%œí|ZŸÉöì¶€ßIëntÀ“àx²ÒR68c…>€× |€[>*ÁkÒ·‘‚*Ü^s!žü‰ ñäú ñøò…¸¯â|ZäþAoqý(Ÿþ©ö¸þ5Cm�~8ý”¨|£ß‹sý,ø³(gì×<Ù^àÁô¿YOðX¸–ªU—Bqhæu*«<´í/Û=šÎèI÷F®»úKq.ì3G|°³Ä'êš™6S|7¯jáè¡Í·rå£éÙ™�Õ°R�‹©5oßWSÅ(Yç§G>–sÃ�³ˆÑQ“²o�eÛ¢'µÅ "tbÞêZ³¢Î´y}‚àM24¹Z tf†À…~'PE x�…ÞivL™±Þ'KrxŽï¸ö~{ôÃj�Ü®z5oúÔ¯ž5ÖFI›ÛS\-¬¹õšQ4&s|Š‹kn¼ÞÒ£Ž¿BæK‘;‹tí¾ þ½/¥3Xð5bÙúú6YÔ÷u£õyÀå€1šv=¤å7E©ó˵ÅqÕ.¹˜‰@1öÄ;ZÆæy§Û>½1k\=´úum+/P{±DçgçÓ°ª¿Ï�FQúºô¦0-‡6ÑìT6нƒú�¢wè–ØûL{K)ZY­ o$ª1jÃß×jÊž¬§cäòvŠ$*à’”Š¼ÐãQ�ÇÇôœ˜ZΔŚ׭¯ÛŸ)ªIÛÑüSVY{ë;]öO··®½Ë?]ÛMà÷~7B/FZO©›"ÿûŸ×Ÿeù¥,ŒGþÕ!ñ Nï®(¼?ø„÷¨ÚåSLMó»Èò#8t¦êˆ›p•Íï¬î#§b™8ØÜ½>lîþðYp·ŸÃ’‡%‰ÃÒ½¢8ôP€<g½,‡ûJøó¸ñP½ÀÃ’±¹Ý t·ç‚0³êà|M@2+¨Ç´—Ú¼ÑFßß6žî=Ý1fÛb¨_B€óò‹¢ ¼H²ñ=P ì§¶×ümàÀrKú!3­¾y¼ã5C!ùt;¶·ƒ{û»ÏjÄTˆ¢ñefÜPxè)Æïln¢b\×±ï‚ê>Þ§n„¦øþÎÁÞ‹ý{;Ñvj¸AÝU=“�´±_>Þ��Š£˜€:²¢�ZÈý¨s¤˜¶n´å¶ûÊ!ŒXÁ�ž‚/$ïv·§ _ÇJÿ†7Ð×Ü�ÿDYèá5wª’…ÔV‹ëD³þ} 5¿¦ÉÖß6îllÝIŒë¥âZÒäÙþî“íý7o÷^>Þ9Lòä\gSùMqô¿ŠÑÁ·³÷Õiš`8D3ô¿ÄÅÖsˆ¨Uƒà©ør× TjŒM”<àIKÇÉÉ—W«ÉTÇóÿÔl•V,¸×¶”ÓoŠ…Äá~BmN¾ë)ÝÕüm@ób´•Ðî r.Žj\\›œ€> è/¨­³ß߈�™•æÃ ü…néÍEùOMìÆÌ]áB/˜±:†áÂy5wÉ'�¬®ÿÛPäÊ„4”˜Hvߊ˜zCqë–³›*�@C> yñ¢<[C8·4(òTIŒ„D¤m+›ŒŠ!Ú{CéµÑ¨ÀÑò!hxc‹31˜X›¹µÈÏ«ã»ÕƒšÁúµüžÆ¾Jl@êɼ ï‹0_ÈÖÿâb­¼¸�º³µÐHam‹˜z  R¨ü‡)?,€T;õH•“|íg5¨£z’ õ'sMXc/;úŸÝqèc"\Ї¸I¸m‡h/]p›ÑL6j%±¥4 ž…y¶TÈh q£Ÿ`]ÑÏÙz4�¬pƒm¤ç® ‘ssÜ™‡Û[º�°u¯sŒÎòÍàgøç´I�”c‚À©®SòJ¡‰ÈÑR|U$uàÆ�:Wˆµ¬O†ªÁ4Sÿd ‡bÓžbª¯ Ø(gï…Ü;6›”Ú�—®ŽÓ/Ô _�3S„´ïöÐÀðüìc.½'6®ÖâL[J4ƒB� e0žRXï [%ZÈß †BŒ…2½^_J;=3¢ºTGåw›'e%Õ9Ä^»tuhr(å®z¢ÐÎ7%øà? Wdñ•ö»Ú %Å{"zØ£ªÇžP¹� |ˆ8ëpSpf~ãþ1Œ6á(µN…c+Î5.¸;M)³=d€ãø˜2†ÈÙB†DjCGŠš¯ä\M0ºÆ>•Àé'mºÕ¥áãïìþÕÛÅÁ)õ†P¼qx+@ò¯¹ðž¢8na$-h:“ƒùÜýÈÈ&U#$ƒ™À×lœ/Åd}½ò†®^©.r²�²+? EXz*TYEOÎ*"–1óá”ä§DsymÝÌ\þ¨Ä7—]‰Ï·%êâÌ<ô¾�I>·S9—K¼?¯I~“<4Žz1Æ‹‚å– \®ÑËçn³º—&ôb †Ìn[ºž ˜à™42Ø0¼Ë}¿ S2`L„ ÇŠƒ„•³d6–6¦î»›ËK׎ð‡:ŒßeÙÆoUQ¦Éz’ ‚ïjÑÞ�FÛØ)¨w&ß¡ÆïÆ7—µӾ$Iëó º¸”üòœTo.»Þ“–¤ŽßýÓÍe9r/ .D5/öwÁ²{y‡ |ß™æë|næS¼‹séx¤ŸÅ¶§›�l­ÌBGɉn‹�ñP>Ë�1r£Cò1ƒ~Ð�Ï:GßÚV¦¦¤PàÈ.¦^x52 Æ� #u–ئGj4ŒÄªX­—Äm�Þ�]ÏqL >êÚŠK'Oà:¤j!Ì4ažÙ;%ñÛQû-iX®?¾’Æ7¢ñ¡A7Å1OÉF­0ók¶¶¶º5©P0OѲvô“Ä®ÇGQ¨OGÆeÚÁjâüY½-Ø9q߬Ãyyk¬ZELh!lèÑæDá¬{•ºM£áÎÈøgŽžímÈêz“+×_þ÷¿nþå$OþoÂßýuû/'EZöòοBÁ›þ»{X0ç~À{Ç¡ð–ïb…!¯ðmE…ÿH¡Óÿ}çï¼ÛÿÈèå¿ûcù6½Î›þ›÷ä$\Ù{¼ì$­¶Ã[Ôáf’± ïYµ20 :ÿe‚ËØÉ@.³4uHÕ�hª`ÃÃé*�CÊ¥Eí}9úËýçü%ÍÆÃšÜú‹£I‡�ú¤û’Yæ¡BNÑ=í‚ÅÛacôa‡>ŒÆëìå.½Ô¯ÈùHFu‘ yjx)ΦE©(ô¨i» Çêh�’ɳ„T3Oãák[ÒV‚çB€a¸Uh�“¬çË?%ÙØcÓîÉpNµ`T¸ížÊ6¤Ù²ÅegÀjÙ¼Zº6]°Â_T¢§ªÂYg@× Àj0ÁôbˆíM£3EWü.„õ1¤¦Ú»0CEÌAôŒ>Å%a­ÚÚÎð5Ãh-Õº11è|ZõMõ6¤P‘³é9˜È­êŸ4¨fž±! g§I§£®Å3SêT±_ÆÕÀyFõ…—:MlÁ%¿S×]\D5??mb}8 Œð‰VžÑ„MÏ¢ì¡ ‘ah×]›X„ƒTÔÙó!ù×ÍÍïõ50i @ö%û¤_œ Žå SÙ}å¿ä ©å†vq ÈpO[Æ¼Ž°]¸#Œ1HÙ`eCoÚÂ,x’ô“„Q’­\ˆ†p!÷Z†HÍÑà¥'£/ÈIwÉÉ•æ¸ó_>ÇU£Ù½ÒhzAbî`îIò7½�Áa…ÖMef£^C¼�P?¯äh1‚Ëø:B3¤µ w¯ë–oN6�¨>Yâ³O–˜ Åv’v+Ý}H9ò: ËG†÷ÆûEŠ [¯«£Ãüâ�`çnÑ%7À£JçH9@'ÊqZ0%žÿ9ó× ž±È–«P̱9*FÙÜI3GÅdr•!jã è;—+· 8{€×µÝ ̈¼k^¦ u¦rÑ£¥±§ãf‚öí-š½¹C‰Ü‘H÷bSjBR»µE×ÿ–±Ûë6­ Ƹ„c£xœÆÕÿ*#øk”ÅJfîNÜ­ç×@EŒ»NjqŒ\…ƒA)‰&mmŸJ“׫×JÖ1pÁ#‰w‘i§i8ÃÆá2U�kä‚üq:¤‹AÅ;ºBÐeq‰«OÚæºœWM[ÁÑ]i1õ¹»ŸkÓNU8³Ý=󖘇•œIWê­Ve“µÔzf]ë…L?âùK·ÌÊe°�ö£LYPI50æ[ TNÔGÍFµhT«Š‚jÒ\†¤ ¯�ŒX Eu )Z­³‚ Ï=¤áöP—nØ/l,|1jˆC(´nx˜#û;ðÑ7š”'2-rø4c)T€]%’:›Ö× g >S>ø’1lø]*Ö/ß„T ú:|vÍo9òœ¼J5ÿªBäw=–F ƒÇiØÖÞ¶�kM\Y_Í!QÍ�[©3A9–̆a Aá�wÑùR76í¤Å‘h„}æL¨¤÷ÅXb˜žÖìÄÆºôdëS�¡EÛ3±Î&�dèŽ_ªƒZ?ããÜ¡É}‹[·¡@fÝæJRÝ4ÙÀtÚ¢£ÜÐ_1™ÃÅO«ã‡WM…µY€4þÕC ©§Ö2A�Áx_W§‹Fp ¹‰*!…#™VØù¶•?�>eîÛ#¬)(*u3f·>Eª\��MËy x9ÞlÑ¥›O1ooݪ‡ºH#'èPä•¢¹¸ÃªŸŠ!Nªº=*b.nòµ�¹Øü7d.ŠQvÚúƒ¯ažÅíJ�]BWK‹ï£·ÃýJáo›Vð)Ëg£)˜+ÍDm‰üø“L§¦¼wɧĬä•B6xt•RC¾ÎAñ.´£BOaîìÚÆ*î@*5û³½á{|ÕÆl[®î JÄÃp”öÒßR„¨z·JÐ5£âêý4Oƒw”¤(ƒ \´,ËÁ}s‰j·€¢ÜŠ-(²ð¢cšWmMËMôR²^�m�(aµÅÌĘ�õ4¶¿wnäÌ~%w³e�ÀÑEKçŠAè¾ $7ÜÈúºÂ û/ÜvÁ]•c �Ç$³(,©!’ œa= _ڪ䱴nÀú|â#óÏ*ïh�5DnF!¯oq'ØÛJhà¦IÆ¥>ò  w•þåxqFö�=z ò)@¹²Cuµ}—"P†±)FK5ŠØ€"vF9ØÌ5ô£Ö4Ôÿè †¨^ù“3ËЃ)œ;´­@’Á‚ª½]e™Žg­÷ˆÚIUûN‘3g�¦$.Uã–¶¿BL"7Ÿ©nB}˜®¯ÏÔZ†tbÆJÏŸ‡ËCØ~3à,í°Ë[£;(ÕºË6(q«­ÕÿµÒOÃo“Á¯öáW¶­^�Ü€”¼Œ6‹<#CÇröÕ¹uês×ζÐ6�*¹+DÎ¥÷6àUgD&ÿçï&�+CÃÌ�‘W1Âi—¼ Ù” oñÆ æš2cÄeèh`¿¹�ó‰oœMnÔ'v –Ýmai4ÈÀ_ƒ##¶).©²¹ð§èn]� ²ÀÀû1­B«›>Yж7/Û·ÖåèSÄrÇOÐó®PµòГú–¯Ãù–°i¤ö¬:5ð´ö1­Ax|Ô1„ÊËëÝ,ÒAkw'XØ8ÈH=•g}ñ sVF6ƒ0~k›†ŒIG½ ”Š8iªT0íÜ]õhIFm¸úl5ÖìP³m2ʧDâR³Ü¤ù%Sáü•©1ÅnlŠraäÃj„ÃÛ! >*"Y("9Õ>‘¬-‘¬Ö×§8 iâï·‚.§ÔßèN6è|^R|³[YÎV}q�¿ªHz8”¨ŒÕ¯P… Šƒd5 ÔûrÅ&˜ùQŠ&çØó£Á^ð>ú�ßèÃN$Ic�¾¾þCHq"½d/å‚i 9mŠÏ¤ªûµÏÌ©˜¶îZWPJ\ôóKò_­ñÌ/Òú%u›Ëýn­ªÃ†8ÕêA€·bˆs³©reql:•º©0ëTñye×ê�˲‹j¿´˜nÜ43jsµZ§ƒÿ|ÓÞn¶ÿœ‘åHP1ɱó{¾z~ݹ¨v·!íリR-smÆ�“ÜZ9ìÅX^>h|ç÷á•ð?E&©ºIòçvŠoVO‘97ÛI*Þ¦®Ê‘�Ï YØ,﬜¥öø«C5“ü�ûë?|ì[ Qâcq~.Ä^Û^¾~¯º[TÀPî^·]�þ*¨�ýØbøÔv^'ùÏvBMyí õâyMû“Íí_#s£ÜíûbV�”ÅïâÏÀûüÅ6‹OaÿIÞ”6÷Ÿ �ÿ�ºl+ÞSÌ>^•tý¡ÐûOra¡!/ƒ(2¾õ‡jq:ßVÛgx[3(ý}5”þJ‡‘zë�Ó}ö^G`‰„VZH–*^ý[l—‘§Ï Nñ¾ÕÑo¡Pÿ©Pø[?þ+qƇâAm!P•Q{+Y1Næßû'…��1´´ÀþÙ`;ÈzÄ.¨“ä•ÐôªÚÚ¼|Dæë�Á3µ£™ÅGS—Ósµã@1† eY½--3HC2 i£ÁÑPLÔÿÈ'=ƒ2LI¬�$ŸÙI,®3‰¿tà úgMWaa'pz� ĸ—?y:°?µCÿp�¡Ç˜“?ìÄ?ØaÏË^�®t—UèVXÔ¦ž„ XÒ6¼#Á(¼Ú`œì½ s~#|¹FËÌ¥þÅÆO©Sz¢hªÒ7;yª—äs;ëór©5ÚÇñeC3T£õ>ñËè"¤‡ ëtF¹Üs¡£˜°WÖ§ äø3}„P>L³Ž¡sÕˆ÷°í{” ÉOìÀÏ¢C™QÁÚääl•Ô=éf0*ã<žù×D–Ô}¡]œ™š‹#…­ëlÌ2ó›×éK"9´Oì Y�^ëj"˜:4lÚœjg"‘�oN olSû�yLuBãóK7mÆþ«;£;F+0è뤌ÂHd:=5k46^�LÇS½®oÓYù£¾M �oÓYéúìug2 [?ë$?³ú9¾ŸÞ’/#º¬ÉîÕ~&w>��¨ƒL@ÒÈêLç =�~Ú‹#ópûŽvQ7û�·vPš tØ+7+´ûÓ^lêAe‡ö¸�u£Ó+]¡=Èce´öVìÞasB­ÓXkÊ èÙ ~ ÛFvíÆ}ÇÅÛ5]r¬˜ �ÿ y ´¯õàk–'A·1¦ƒ>(­{^þê"ft¡í˜ˆaR;0Y[=ƒ÷^Ø�o«z5ó¥Ý•`éEâ°7'‹’²x@¶w-„ðüKçÜÔ˜Žƒèú°F|ðŒÅœZ7YMßç^Wæ6üfÅs~…LØ�µ°j�éüZN 7*LÀ'hY‘ÿVâ�7hù»® >â¾³yì—þéã»v™·Ë6‡~¼^Ê HmR!‘Ý)AáM‰©Êü¥€Ë8?ØmÛŸ¼&ùR¦Øîd-ÞyätÞ~hÒ#­ÛWåTå Üdé/ N/øCŦæ4Ìðá°³#L”UИ䆷ÿg€ô‡ö¾Lõg0B8M­ž•ÌIþÞÓÃsÆÓyVå`�Ê}ÏI¸6/EÇ�Ü|‘¾¹yÍrßšWZI¢ïÂ5�¿ˆÉþöx«fÚ:s¸k´9Þ8/ÎEú¤!jrô«€«ŸñxÚè`ÓN ÷ç™P8/}o­Ë‡g�?jÎG¯8®ìzáÒWì®Ë�WÔmÀqª°eE5~îØªöh[QѶšGæW•¬z<¾ÀyZÀ¼à!™¼ÇøIœÒ¯ðÇÄ21de×—7ðܸ�Ü Þ=@D2ä<À+Ÿ°o#é%âì¼ù¶Wž~Kkîh"�éçôôËô[ –ú�¢Ë‘»ö–?�¶†Ž[Æ(Eþ¹½5!WOz$'žŽØ˜•·o�чp›\Û–¨¯mÌNÚZ˜3›U8”.iíK°ª4Q T‘þÝæ°KõgøIáW›ë AøUد� &DE٠Ƭ…·ºÐü>4·¤v(¦OÖ�*Ð¦Ö …‚%ëÉs’Z¼S.M›H”ohy¼ä¬]A»óY×ßñ;ÉÛ•H3ƒ‘!Ë>£Ùÿ's?Næ¼HõŸDÕ~ B )LSP=3½2ãæ] /ôhU@õÏ\¯ª7[ø¡9èj�ô2”0ÉwìFÚ½ C*�u«¿ç¾´pY|<½Oª3SÚhˆÃ[·$Dï[{íÅ2³µô�ÍV P$üÅ¡9þÚŒ ¾ÐTð´‘ø–eü­)Œß´o Ó‡«•G*w éÆœçO @ÁÜ x œ1Ëà¨!¯šMîƒD— °®ôú(òXkù±¬t4•¼¶V³k&ÞÒÚhÍÐ~~p}}­€ð[¦ÌŌٸ˜âY(9R±kIÅÛ¨êÓê ™–õíÔ£;ì dd½4Êk]j‡ ƒ‡ÉRßÿ�T–±:ñ÷4C£*ÝLÏÊÌ䟡F^½{d\?LËq_Ç7ÓOÆ’£ü\Ȫ„]d‚c«¯2£i>_4wÁ¬Þ¾(óe¥=)‰±¬:º?”S4ó°²þþ»Pã×Ã)e�g¿ï‹ãà´²eÚòd¯¼‡£®-¥(k¤\êC ó˜ø\T‹š�ÉV§ÊáÚr".êC9�} ä3€©´•n•Ò,ë�5µÌ,ØŠ†BöPðØÄ©"æ>'#±¨·Ù…çì¶²°6®óäus xïtb%Ø¢ƵÓß§ÄÙ}_Û©Œ4Œ8ðª~‰q쥓�µ¨Õ�¼Æ8="¹aªûÈ`›ˆCìJ‡§Ü⬀ƒ×@ZadkðŪx]óM¼máxhMHh²j¾,ė؆¯þõæÃÊܳðÀ,Y÷ꌺå´ÑnHïðJM·? ðͦÝÈ¿ ¬þ!ª©h«¿¿ OG$v»'þêp"ì³±®ÉØóšqÈn’yÑGG:7�–žX^^«…?ãU`ÈMÐA\0Ý–Y»:_¢ãÓÀ¨lrSyPå‘ó} Æã¾³¿�ò JÐ�TÍÀÒ?Çb 'I×�Òÿ6~{9/dôòò>Ú>Ÿm>Pµ¾:÷^=8:JHž»MZ2™ä8ñz°„P.¾6WŸé­?µAbž“<ÄÛAâÞ$9ßvª>Aþ–žToâ+p\Ûj|‰WàšOO¬ÁQêXáˆbðU ÎO[õ€ŠLô,qÉ´hIþÖ²Ç/1äð®¤,;êÇV•»ŸñT¬ÁaÉ$ý¼9Óo¼¶¬¥ ÓŽIöö¢t®õ€Ÿ®°ª¸O¢P�)& Q˜µl¸ÝZ/ eYbýù°âÛWŽR_ç{̛ه}Uæ ‰LÐ3ÍHû4o ﬤþªI�D%Û €pòN2R}?n´›QŽq™!cìu®¨,…?²E'Ën`d6ã¶KÔ˜;�a`pˆ’‘í‹ õ!@>ö'â;™>àõ­S5käÃ{ ËVÒzxÞõ´Õx£ë‡,qv~ªzUÃS…ÈzÆ ¦(�{‹’ƒ3ÊopÙxZ›¬oÁ­Íu æÓ6÷xêÌ=ž–~b(çgÎ`Va²8Þ ˆÀ¬¦Ö¡©ã�tiV3Ås]à§aÙ¹Ô•­ksè˜ÛqÏt1gÝ}~ ÷ù,?)ÈúÆYvÆi\©×ÒòÄô“–bvÁü¯|³vɺ#ã"ÓUÆoqTMYˆÏv6L¦Ñe BÂj;2 Ê8ܘ7ã(£ÇFa™—­MЛ–®¶¾¹¦Ûì’TYöÉ(Üì Oñgß:}ž}…Щ܄ÉKÆn•àD·r¬Œ1ˆj™ô ž”£¤< =rŠò„\J\Ëû\¦0‰ì¥«�Ì�‡×]ñAý®$Qªe;z:æ1¯ VT ëéV•©G¿—éÚVŽŽ•z¤¦VsØèma¤°Èm¸ß-êŒ@›t¾é¸!™In$·RÌËÀwô¤œŒÖÀå™rŠžREp6Ríƒ�ÆÈa»¿é]ß©ý­hs‘Gåµãm?Š©ÙÙy”F¹C›¸ºGWWžÜ¶˜LÝÕ¸§[Ê0OŠC›�Öƒ­\áU=ØÌÍqÀÓf¨ØZoÀj‹·%t6ëÍ<`1³ÒÇ ÅX—³Æðî[˙گ ‚üàŽGY?õÜx¶<°9>•�³[Œé|6ŸÔ©E·¤Ö Hº]†imª©;ÀÔ9,Ö××ô[Ý„ziŒ;¡‚Uþ¼ƒFÖÚ茀ùûW¼¦…—ÌCô®¹¨R³‡÷Îã�·VfrwÆìÉ~fyŠŒÂx( Õ»Q[!Ö»ÆÇ:Çæ|·ÓWðÁïʾò¬ÏNx±ƒ7÷>ç™ä�,?þªÇv‡óäxV4R!âÉ7àkº�SÆw!õM•¹ ®ä—©¤” æ6Ø z@#0Aî|T[Y»cOɺ¡Û2“&Þv6ö©d>â9·aêu2|Õq¼ Üå �Ýšm¼Ù€DÞ+1/^ÜŽí1n ŽÚ¶ŒÉ®U$Vü<2Ï}�d¢ô“L,c�m—óÝÆEsh(ÄLé2pÔ§ÃY�’cÁLB‘_�ú ÍsËR¨0õ§9}³a­ÕÐý d™+ZÇÖ®=q¿Ý–cÇ—Á´iz}ìÌL°ËÎæÐÜÖ}¡U·C7fŠ<ÕÑølÓ�óâ}#¥JôŒœ611~—4a¹;áé�=4sC䛃¹�¿Š¬Úv†1óxD�:Ë®kˆ,q놨³ˆ{ú�U Âðܾ‰ZÜ{W Ò¾œ1¹IMNk rcæ®x¬¬� ƒüÿ`ÈbD=öÓ¿º ¤PÂ÷vÈ%óÉÚ&z]e´-°B×9CH (»‹bâ…Fz›vZXD[ø~â§‘ýRjn)ì=mú©àe40>qÙHŒŽ»—¸iQ²ìÊÓúdŽÔ´2&«uÉîu%ÑŠš݈8ÍH묒y;Œ]„4̓iV/ª°ÛÆü2·oAu¯rÁ›+£}‰ü¥´�SŒ)‡Mèsd^ª_ÖcKFGί-xñë�îRL#â`R?Œ{Ôð¬PZÁk^Ù_.e£iíeŸß‚cþ½F`~íHª 1…F y ØÆŽUT<Ý‘ViL˜åÊ/�åŠNZ ›]hå±ôBÀʱËo„*Õ½c]Gñ&Ú>/Û=Z*™ø>ãoÄì#¤þÎÕëíðeë͵BAœô®ùJ¬éÏ�Ã* ‡ùt�WûÏFK4«õõ³÷�*þlúšuTo”mVÙ$2"a‹Iß-)}whF"º¯HtlJÎÖFhsD©¯Yé=É’d¬®ªÄV4LêOI�këhÓʦéò²î´Õº19·ýŠ-õ ¾!%eP\…öÈ—0Ð1APÀÅ�z'^6H 2î­È¬ð�™Õkï9S3¤±~:ž:®ˆb>C 9¾'²|†Ñ±¦–Ö™_\£¿¾Ž#qÙ�ùe™ÚzNíWeúLUøøD‚)tx…Éw'Cø¿b>šÐ r.f»<j$1ܶùÎ?VäëÔˆDn+bÛpfþ¶„vAåÉRAwè&r¨x?MÊðK‚°R<:F£Ço ¥µÉ‚&½Ù€ÊéP§5´„;ÙØÇÖ¸êK–]t—]Í}pyE^ÍÍj_3S„±ˆô?{Ê(îü¢¨—!Å0˜5�ñ_+’›ÚfGß}º{¸»ýøíËíÇ/v’Ìé�Kþ˜üEÀ4œYJã}Úƒ&ÝÊòçêKMcÜÁ„ÝT�=´<ÝD· t«€‘ÕVÕTctg�(..„À=ô�{¾,ÿÔØ8‹ÐŽ£ñÌ”eíÝã>jè¾N_†a((sµ0(sPò€Ý®ySç'H»ËîqU䱓­jÛ‘4çä&ž9FV€§ÂÄÃT;”˜Rw (#ÐS˜Õ Íå™ä¸xF¡FÃ;SHz–¤¶f¹†#ÂPÜ 7t²�n–ô-%);Õ)&?âî¿Ú†"×àQÃh¼› !¯Ö¶ÓóóÓo&°Ý=�p Œ5Œª2¯ ªXurùTä]S1ôágEíÎÞ!m–á©Ú5-„{Rf0¤Wh'\ªÅ“ú¶y|Íûœê"uZ ¢d\1¤3I�±E�1hƒå5ÃllKwd¹”dà.€!È�ê ‰óøXR–ã8”.'ÎÇE1GpR’¦Þ©1ý)Ÿ£ÐÙ=Š#1Y±nÔ‹¡œLÛ“dz Ë5ï‹®!-dzªÖ‰‘“Ø{rÛÒT®í–ìãÈtÃ`?!êæøØânuëuÅÈÁæ00˜:?ªŽG:΀01µÒ =ór(mR‡�1$ûPë b92àåâLÌ A¹i³Úñ—Î<îMŒ¶é)ÂÁ\¶­ÂçuL²;·÷0zhņÏ8-ƒ˜2– éPV’RëX£t ²O£ç)+©ú wiŒ&IA$ßá=˜­0 %A€ì Ž_Ò°x:§ÇZì|¨‘ëàÑæÎ;›JWðIŽÕ1æÞ>¡„i�0 Lr×±îmàÖióŠë$¯±L†eN…†¿¼¸x#²T"H̱ÉL²ì°Úá�dçzKÔãñ²�fE ,:š§cXJ“q¡CŒ/á>uÊ)iŽyµ¶Ln%Ø\+1ð±T&^W‡kÑ Ö Œ+9f¤ s–;¨ÇtVêDJP?1(¶¾þ T;[çåÆ5ºÊ’sP&“¦k~þ`ÊÏË©¹"c§Bwj­µ¼ª),£È·¡7$ ]Hò”+ Á sLnMÖ iÕM×€ ‡„‘Ó»i6V)›¼¬‡4FÆdþ kµžaŠ… L–³‰}r8 c«&BàH§%ººl~<«M· ‹ˆ'_–®ui‘p´èâ‚ØšÉA²�Ž;C¯4Ï|Öá™]¨뉪 µñb±q|3-Ì…eåLñ!©ä…��œá¹kue·TT¬@µ«µÇ+"|¥‰§2==­¾¸ÈÐk:�„Çg’ÓÊ©vöšñF’]‘ù—&n< ‰yìZG¦T…X&==M=óD$ÏUR§èò9&qÞŽ¢ï/�"ï•Y=%üÔéµc€Úò¡1¿è5åz¶/Éh‚·^fˆ|ó|¸ õ'&/{ÛšâÈéóçXµ¯@ ÑÝ‚7`cÛè·™Ïæòb½ìCC¬’¯’‰;(btT:ŠZ‡I•ÞÑ5+é=Þ7³<ç1ƒz!#ðˆÈT›Ÿim}qWPÅí/ÕGÁUò%Å WÛJu1¨!ÄRÖê |Я‡d„Å—bÚUqœÕ#óðt³Ú¡e´]¦âº6$:T“�8.` ¹^u>““D�A?ÀQÝa ²Ð9ØÉ‘'ƒc|I¸=&jiºË¥»‘,¡æ§Ž·`õ©G“UxÌw'KÎeq6•ßè¾Î…Ý„kLº5t8~ÚÀ娽Iàº*×$>+zbL6\EŽvíÀ®8õ“¤1ÊXXïïPðM¹ÓP?Š«¬Ö’ç›Æ…Dkl Ÿ€iR²ÅzݤYþÈ!¼v޳6õ3€14x{P{‘pëJº^ü m4òßÞˆÈë­�_=¨OÑ7c*­û’14QÃ…¬Õ¨:n£¨‚GwßåO¥Qݯ¹}2…�M~[—³ ÉÊ6z)Epê+('L½AQY+x§lêö0�Xâ=6º¢0ëúB{ˆÓîèg‘Ñ+zQ侚å4T¥|hAXù,_hw8u?X†â4žÉ:ʬƒQΩ¯p6Œ"p¤å̩⠬¶é®ôŒ²>tïƒ]EÅÆL ¥›�påáÂpIÇaåòùø¥’AHð†Šx2Цå/]<ÚŽéUto]Åh©÷ÜßUs7h=£×™¬ìý¦¼O®=â$n6ÚØÞnL¤Æ=•74äÒ©†¹üb,†À9ÈÈ# >7)9¢ÿ53 fvG@LŸ÷¹ŽˆÀž'­3@bJ]–íÁkˆ%÷Ñ„OÚ3ø3ZA¨y’)(bÏñ ž¼˜çº; äi;o!$¥YæfÌ,[)‹%€/¬9¤ïTÑÃh9U2·/aóP8#Ö/ÖÕ sðZde2ã Þ©o­ñÍ Ð‡*�‹‹%[–/~mçí—¹WG%­G$^uõÕÀ©û±Æ™†ñŒ7V�ŒÅ�­ýV)¸‘ÓY#æ/ ”¨ÆèH#]PCº ÑfÚü§Ê[Ó&ïfºš¸ ¾¿–õj¿­j�V©x‰Ú¥uÒ\;o2íBÍDUÙ…%cÈ9BL1k“?tKcJ~pq±ÌõÅEZ@`ð‘Ή`Ï»þ^Ôù×äG �\yRd¹{>g_Êg²:²ùFæÍPdB‘Z Cú#Ý„îê�à^¯‚6a+É„ ¬¿s0’Õ€Û_dÔg”&ÙѯöNXwTOtgÎZ-7”²R_GF¦ÿ-±Am`EzçÇó#Z¼µ)š¨ÙÖž�jÚŽB‡ám“÷¶ 4_¯¯ãâ,”ðÖ‘é°i¬Js‡å¾™è­[v°ZÁS°eÑQ—æMh·ÏèAÇ�£1øeŽzvµ95yL³vº0æÚ$ǧ0¶¥!¸>L("UÛV¨Ÿ&û{/w(ÛŠ´�™��ïßè„.ft’,ðJL?bÆ.PL‘Úþª‰âÃܾÊZ/â… ?ëI»‡yLUOŠX2µl×D>ê€O¥Ísù¸¨¡$4­‰|q‘«Äžüè)s(ø­&$ÆÇ—ZÛ)çÑ^Ø{ŒsÖíÈmþ»±F�ÃÂE%C…'.Ä "aa%”ñ3Æ›0ÜáJК˜W¹l;L�[4ñq=D°fÑ"”Ëcž8•û>ï{Ôêäh·N…�¯F&쬑†a°Á4õj�ÎUß©Õ�W\� 5X 4])¯‚l§þÑd;µ A¶S_–qÎ’±Ýˆ}–Ý4NfòöŒ&²ž‚øáÅŶ”ÓoàçÿÂ11Å›ÐR›ÕzRͧb»þVÎèøÈõy�Ú…9C0 ƒŒÚ�ÑÚÖÐoU�‰êà'N% R´ÇEk3 °öÎ ,n�·k¸ôã!»!Ò1:ÅlŸNqA µ¦Ú哽}0Ø=uø¬oâ\êv¨Y4p_!óààñµscR@.<o@¾Ž ò&ƒØ^�™Oc»/>-„B⹋Qå<§�Çk9ûqwÞÆÎòò°�8Þ·¾# úd!UÐy´{%±�bîD™ë­ÏÁšŽîÇœ�ë’71$Ëݵ-uÈÛ¤$7¦îÕH@=´pFœëðü4>A8jOœWrÅɉ�ê5-©A ]¬¶™\gƒ•txl7W_‰X“¸*ô·ÕàrwK·(Ü-,oQ^C.½ñ!­ôæÈJ®Ù»SÛ¢Þ ¼¹b¤¶í`z.l‚ꈌ¼&eƒ:M¥æÌß w;b3þ܈RÃ×RÉ�jõVçHƒQЧÜĸBfG’ Á¼iQ„‰a%šyFj[Õ†kÌÓ‹8µ¹M­CEÕÖÄLi¶rZ¿«vÙ´|„ÁEc"êÀm�l¦†¹è Hþ!µ"/ª{Ú\.r˜w²>s®Æ*EìúVØ åNÑëÓ?Û½÷Â'êd*ç¿ËûÈ€Ù{�O¹âÊ Yè4×ZV­)¿gÕVît ëìÏ]Ë^‡0z9#Aô¯+"¶wÐ_$�>%,Í)V‡Xaˆ`ÕŽ¤N ¨¼z’`D ޲�YL ?í£__»2{Hú2\÷¬‘{ep”Î"ì@i�yÔÈÖ‹óÇ:G‚ÎÌ£)ÎO§3 fê©mµ�ÏL¹dÉ·âô«ÍÜfáœâ J î”™®\"ë© á“Â�Þl\RWjÈZR$Ê´+�ñ×MÆÀˆ*Î)zÂsð;õÞ0'Ô(¡óÊz”Cþ÷,S¾¶Ž*NJLøŒ°¼ÉºHÑ“ÑtKª6’äÍÈf"?¬‰�cÀ�Ä·éèÝCfŽ£xù? Å3͇Œó¤pYÓìõJψ›Kèj«¡Ó ‰zøf)/..[ëq'ŠÑG4êÿYÅqâx¬ÓÊM†AÄdO5Œ¦‡^Àä@¿ ¿d5¿€vúrïÕ¡$ (,œ0¤…"„¼î’ÔÐb]{¿`ï—*ˆ!¤ØÀz¿À]…´1À‚®{ô©QÐqI¡/ÊÅœ7�Áz#Õi] ÷ê}�‘“0fJ7”¢:´Úãø '«f×:Â=!WÑü–]-£‡î9™§õ¨shà…ddÜUTÓ@†û>µ”=åð2BܘÅc#v Iêm�Cô*@m*ÅN²»ðMZš^Å^C…Ìs©òe{^\gÏG8rL Nn¾ã�Åù\ý:ÄÄТ '‰2÷4)mHú c›åwuÂ¥¸â2Ô 8Sgw¿ò(¤á,=)ôrº ÌY‡ùX�íAйÉÅWã"z¾jlª˜Vù&˜eÑe{ó=Ë&7ήLO [˜÷@u¯º«Gà©lT;@„}—:³+X†Ø•Ù¢˜¯ñý÷ów 7Å¿±6S‚Ä1òےɬ¼YPØ ÖÎŒ{ ”ú í`Õá zk™5G @¥½N6ާÎJ¦¦“~âÍ÷ˆìèšÝ…T–7 ×¾tÚûáK§=wé´wõK§¯ž%ÚK} ò¬^¾_¨ó޶yCV±“0»àÖ(I3­<Z Í °êƒJ’‰­ÌÆc¨Ï¢H[C¨†ûj0C‰¶·µÐÀ“Ñ_êÏ~êÏÔm7¶—›é[�l¢+ФÉ!§ªIþ¬¶Y€k›0üY'´ ¥ 7Z]hbÔ´œ"‡I¼Ut+&ô5/6÷¥šžG’»:K}hÑ5]úܰ ¾o|ß^ŠÕ ¦÷éB/í[ Ú�õµ³½|üa$ù¸Iž®B’ý“äít^¨éxI¬ÍV«ã؃õAëßæ…¤‰­Í¦ šéNž)?à„o°è™*â¨ïNu½`ä/ìÈŸ:qéšñ±Ú"ûÞùi£\,Ç ä6CYMÌüÖY–*¡ €Þ¦1d¿N®1·°O/ÅNÚ”��iÑþÛ{{Oì>|±¿}¸»÷Ô%ù²Ó€í'E«Ã£I$Ÿ\¥Ÿü0J?Y�Ò÷W¡ô‹®n3ÉŸX̸opši:Ên¶æÖ‰�í™P̆�£×&c÷(÷Pî_ŠÀ»ü^»p07k“/D3ü–Î3ðx:þâMøâçðÅkÉÜÅC�ÂN{¯mDÖßë�{{Ož=Þ9ܱržß³bŽ1 Œ’¥çââbËþÎÆªòþÎýÝý�{‡»OÔãƒíÝÇ;÷ƒà®~1è•gaD&îÆ¹ÉÇ£š"�‘@à2P…w×BÇÉo£v�¯sÔØé�6'£Ä<$9|¢Ñ޶ÔúI¯Ù`GwÔ7öœ´éïµ¢D¿CkÐò@=�Uy=HÄW…j3k—“ARœ” ŒOò³©"Ä_ÉC…½f~+¦v›ßu �Ä÷·¨«·&Ÿ¾p»‚ -vá­há=Ý]>S k"ùO xcȤ3n^ƒÜÞ%0.tQKú:Ö¤œù¢ÁÔ$c½Û({GÀÁÑþ ó}ÓÛ˜ùμ¨Ï«ZÌm`¯Ic¤+ÅŒÝLŒùKýôäתÆôÅT1Ú©tÖ¼›éã:°‹³xí®/Pgq8­?BÉ—Æj‡ P#Þš÷åââQmPœ*æý šb§·n_©‹‹OµgªÃfæë5ln»P!ÉWxR[Ë�N¢°›éÇš3¹ìÃ3ó!r5íÏ!RàâBo…ä²Ð(^K½ÅT{ÎçÀNöòãñ¦:ŸUêDQkÛóÒmá7¶ª¤jW_x%E�a» Öx>Ž�µ ÞxlBsD7ºªºW_f f¶'n¬í”V´îFLÂÖÖz­Áh§ðܲ¸kΛø»™gìt:^_?VevËíým¡¨‘œ”°ŽÁäÑË'óv¸6˜ [TsWŽw­Ø¥[”ʼ·¦«ËI§4ƒûÒX9º/\A{»–[ªll�.½#ÖÜtö°Ó‘øt�ÏTS×,g†;D7¾L{þîEIfmón¨7t–ϛ˦}GI˜ "KíÊîhšÝ®üjµ+ॹ«pêò›¾<侮1 uo{CÀBðœÎéC`O´Œý6¸²ì„üùEf_!$ÝÒgFãàQ f³™šBæ-ÄScŸ¯ÐPеD¨5¤|Q"FîmÂX u/ØèÇ,ˆM�¨™skBFº5…ÔÎü‰ò�ÄÒµïh£“žr#ŒÍ.ÐAåAÝ(ñ>ÞU�"§ ,&¨ªŒª0=©9d;§Øêº%d¤èì7ÖàüT²ÏbŠ~8Ø™‰[s$'Cv/¹6J,ÔÛ‘:%_ ØÚ>²0Ö†Ñ3×̺ãëµ¥ce€9ɰïÖÚ²èþFî|:ª _ž Èb^7eãR.!¢E…F…Ö¾£ÁE>ØÂñ¦VÜÐ]‡¢o ñ¤˜ÉªQE™i ×Á7�iƒË•¬jܧp©ÝDà CŸ¾Øû^~+J0¿¿ˆjõcÁ_Z?½ÂˆF••‰¦—»^Ró¶ + ‚Œt�PëpBÛeèè":"iq°é°-k]Ô÷Œ­ù°ói1==¬!€ âZ u¼l Hxš¶œü_œ‹zsÒž€0 ^<=aS×f\FJµCÒR ¦Æ~véæ{{ê úÖV§ó“ŠºÁ&�eáìP[USöÞht…{£ÐüŃ›ôŽ^zy[ Ñ„iì�í ä!,P »ÍXâ\÷xÃx!Q2+†#ÿKpjâ™&®¸…zð¦ºç}MuZ«ë¿ Œ€ˆ:B8žU]yÅ;’ú(j"^Ï$¯¬v‹XÖµËØ¿z;¢mÿˆÊ+5:††‹6àŒ®‡ÿã%—dY튰�P1(3}Xm/ñê‡í%^9{‰WW7Y|ÈøˆµPËX2+ZfŒ¨d’¿²F&/{Ó1xHä‰×÷‘Ó÷»å\|Ýnëÿ>~YÎBªZÆbûÔ$`°â`�wáƒÇ<„¥Ê^žÙ¿.E6+!w™mûÉ�,àâbbbÇäΩ€†ÔäNžNÏÄx£©W_„¼7­­ÊJq›åìC%uÙQ2„¬..’©b©ñw+H„µö4N}÷0¡î’ö$j])`¡ ÈÀ(îõJì?­š½ò©žIšl&xn÷}oL Õøzju0 ýƒÔÚ¢ä�›¨& hO2ÐHèE³42h+2¯`¹µ&U½Ã™Ü ||\”ÙèÇ©�6�¸/Íà¨Ñº—€ bŽö àŠš¬U£>-f®ÛÄëÒT©¦±â²¬Q¬ˆ· Š'º¸�J–¿¸¨½j]‰›nUÖד·W&±K omu«“‹ ¥=û‡ßû(¯O‰?[OL¦%‹I ŠØhs…˜R‹oŸq âx´ô Ëš¿ñBz4Ž¿:áñw¾ª‰7“ò©uU’f�);ûÐFLf¨C£®¿¦ö…!˜qjä£<�‰&JÑýˆ`/ƾvYxC¸�f$ÇPCR€ŠH4¶½”"à ¤żV�«&ÆÚc\o6‡l £à…s®ìsQAiæÃ8xf�{êA|ÍUqV½‡_llä˜æ0¬k>tŠÑ3«½¾¥ùËŽ¥9ÝXª)w‘¾ÂÌ$«J–a ²Vwkç¨ùem‰�}�9w./ªqi__Vök³ñ8ØŠqCzU1ÊjÝ7 *NKÑÈÁË¢m¡Gj=8:RœkâÎõ�L&ù‡ªn^NÕ÷-ü©mtjž±^fË­uH:îuyjnŸ’IËŸ “ô±¡€ÜT˜í«‘§¿ˆopíÉPèçôTÿ8ÍTýBÕÆ�n·S¾^@åë°˜µ9úøÕGu`‹xÖ�ì�[Pš_Ië“ÈËDŸ Ýyålß%îwÒÝGIøJ­F÷Õ/“X@ƒ£¤ûRU�½üeÂ�±£Ä=*°(h1cÀ±¤…9–óéiU ßv¬ÔBBôe]РuO Ó¬P±ãŸ:I˜�qørßõ®°Ö=�8õ¶5Lü¯d®j• �E§yßF9ý(Ÿ/4g+†ÞDN™[Þ^-ûGÃÝãh‡nlçlÏŽ÷¶ó {ÚÜs‰&½ ·Œ3~׬;°ü¿óvºöpßÃI“%uy‚fèN –yE£ 8ÕΘ0?«ˆk”›T3Úyù!ïŒY�™ö;¦\� æïXcÃêK;Ä*ýþ Ÿ² Ç‘�Ì„óh*b‰3·x/Œ5$Ë¡d¸ä�fÆ`ÌV�at šÂË c‘ÂÖEíð�sU™3Ìà«å ¦šSvExÿÓÝ*ù÷†a– ¦ŠÎä£R‹í?Â�ö!dô6ôê+Øš>ÝÚ×FSåóÓóõõ˜šÜך~˜j¨Ðj#Èzkasn×6v·+”�T£\˜Ùh ºÌfL`ìQ Pî߃r)§+>W œ£_‰¸È+ÔCuÿúºÏýM3®Õ]¯>ŠÐ!‚ayÜëŠ.hì¶ÖTiEW´}L,>›ïè.‹à qV F6ƒ¿wÜ&èrÿ}%Z¾Ç:”X;L÷|¬ú¸�4üâÂÅ ‘°§$¹ìTRû1DNu{éƒ'dÂQ=8¢�i=>ÌÛ\ŸÓþõà´¯Ãò^‹“&„¸/äh¯Ðºâ$þþcô¯«8hZ#ÍGÏè8…Ôö…ðÙg�Þ8ÂC³Jßà.½Îÿ ™^ãøè—FTM[q_:^�ÿ„ÚÁe3ÃkOïÍOï�›Þ›«Lïiå5Éߨ™½î¹ˆŠ 6c³´jùO¬¸@±–k2ßt]Ç´{#ÖÓœA+ð²á&zaÏ:N”-¦iÔbùk)p|,s­ÑL‘ŸÌe*JͳÕýælA‡\)çåUÅàKêc¹¡×RÖêÅ¥ÇB³Kû4zž²’y“¿ÃÀÍ„ŒiÛw™KKPúY¶jx&ËCÕ"�ÂNÝó@û†ÃôS³)‡¾¸(;Q­Ên^?”•^m ì³� åF�]>Ó @÷±(¹f®øÞ¨E�þ”‰jcŠ÷R4xµãG�7¼<:Z¨ÓÀ½1²©ñWííVŸ!´@`}D†8ôŠUI“³i¹˜ž&Ùe*2”ÚñF…1þ‚bì]¤%Gô+¶±Öú‚å_EA÷‹Ôw¹¸|G &£8`ÀŸÄ¦U¶8|iw¾ª�íÀëš�ç—ÚûÖxCúàêïùÑÓÒU}QzUŸ–PW§±¶cÔ1æìíïïí¾}øb{ÿ¾b•Ï @GäJy¶¿÷r÷þÎþA’í5®›¹„nð:jp.ÛüU�Ÿ±Q–|¡D¡1ûU=ióÈ÷6aP:fÂ૞U®Ž9zH]¹©ÿ�cˆûY5ý-OH398)rGx�Î L5gF¹]{xEëß°u˜|gfj�oŠ?O&¬ÊãÚ5Ei‹s¡¾Z<šÖƶØÛÆÁïcÓ¢^ð±ü\¯ÀýgPcÜäEÁ¶¦ˆ<5à±PúxÞ;>®Á(· =¤þ· g× +Êɯš&ÓUòŒ¢‹Èûl#<û8øßDwõq��tˆÆø³ê#ƒÔW0Â:¬îy¡ƒê1ìŒX�nÓx Z ¾¯½ÑØ tP´j}®¡Êmë>T» É&×·ª?)z46 M{î°Îªy”zª­¯°NЍÅ�j~/¥váÒc–εK0Èý.á:û|ä¸sd4º«=íYK#.Ü=­fÉÖ7Z¿Š×Ÿ8}A ÉX53tP°œ»Oww·ïþº³ïÂo‚ÍGš¼TôÐFåüš&[Û¸³±u'�5¿¾ÿõÿPKÒV1]""ý}‰]imunify-security/assets/ui-app/assets/static/shared-dependencies/material.min.fc80fa0defcb.jsUT ëÆ«jëÆ«jux è‡ ®,.IÍÕ+JMÏ2Š4¢cu4ÒJó’K2óó4J4«•J‹SŠKŠ2“K”¬‹RKJ‹òªS+R“KKR­àê4«K4”bJ ŒÌM!dI±o~JiNªg^JfrbI~‘cA¦kEIQb2�ž_”�X”_𗢤£h Y[[«©iÍPKÒV1]{ ×�ÌjYimunify-security/assets/ui-app/assets/static/shared-dependencies/menu.min.9b6d2f246065.jsUT ëÆ«jëÆ«jux è‡Ô< {Û6’Eá×KÉb%'ÙËG�šUüh¼�µ�¤­ÏŸ"! 5²$e[‘õßw¾%;ÛÞÝw»ÛšƒÁ`žÀhÏ—iÆæn¦>ûÒú;ÓEH“ïý(a)µƒ›ïi¿¿¬÷ùK|‰zÿ [úQÀRèOî7¾�b–Ð,JÒ2üœÂ✆ÍE£ù¼‰:Ž’Œ†å^*8à*Ò:옼Þݲ$¤��Ä!Í&Q2¯÷§~…!SëŠØ“…ðq!›9+k‘²Nš%ÜϬÁ-M:„“”D„’„ø$$ 2'3�˜\“)™�1¹%KrDÉ.¹!÷䎜‘=rJÎÉ>¹ #rBÈïäyGŽÉ'ò+ùBÞ“ŸÉGò ùL~#?‘Éäò�A²E"V)Ë€s©wY&+2÷PüÎdÇEtÃCF˜»ÍãH0‘á÷ ¶ÈöX¦ÀÎ386]ÂÈ'Îîö…Oã8€cÄ ƒ�“{h(ûâvíñqÜ2ÂaáŸ,Y~i")´öoaµý9G*IlŽlfgl" ìÎx$LèÅe³6ŠK/2\�®ÈI†Õ}D‰B{ÎBüs<=Š‚EÈÖ¤ÌXÂăÈ_¤?±åt Ô-oz@oØE´ðgiF“ì ‰æç~˜8c4 ytÁáÑ�¨ÃTW›Á©!ì]…ŒŠÓ5 [VÁûxz=:;;ùLbhì�|>ÖÍkhžþøþB·§Ðþ°`šdóùîètŸŒásFSØ5Ÿp–ÀæÈ-Ž_쟑%|�ŸŽv÷«+a÷b,ùyßs–LÙU½ ù\8¹�ŽhBîáMi|îϲ¶¶Û;–Œû̳9ÃÖÏüÙ�É´2`9ÕEÆCr­ Q>öá3` ˜U¤H¿çb�§t²3Ç!#£Zw@Nàd ÷ˆf F?ù]õíJ[Ò&$Ãw?§È;Àr<”ʲüSIŽO¥)"¿"†h®Z ¨!˪s¾à¦>EI{¯¸”1ò³üZ�å8)—ìþù,mZmíÏÃZÇoy¢ìèË„OÉO°�‹^Í„?Šž*‚o`@€Õ£!ÿÂNiš‚&£þ2Á¥íiuÂ?�9Á͹´ŠÈyÍ£+ÂȘ—Cƒ¶Áô¬ÃØðÒ‚ÍtçL,º\ØXëj`;³ÉœUÿ9{þÜî/z;ÿùZý[Ð9Kcê³óO?Ú©²�Îì…Îî+½�Zäå(»O¬8 —St)¯6í‹Àvœµ"\á—Št=à.- ÚG°“CØÈ¡/ý“uuE¬ï`œ›­"<é\Ö@¯, Vì<Õ;ç6Ÿ3lX¥mʲÝE&2Ci;ƒí\ø­Ezõ †úTm |3š.«ä΀„*tÂR0¨L®Çœ�¢‹×èì>“fú>¢”Sê4ð0E5w¯ÁX!ûI-k:kDZ-?äþM™˜'Ñ’ýZ2×#0à.çd(Ðäü]*"FxrÊ ýï³*#Ô¨sÍÚÉ À£ÿŸR·hâ¶)g_‹e¿'‘ŽUì�m:i;kP’�ÍJRÝCcévm‹Ä1,< €�bº‚ÕÃÎk¿Ðø5Ø,‡å¤ò©d¬N0ÍÀÊ�ÁÚ…ˆ¶ ’…8[°ñð aè”ÇÁy�— ÙS…„P¼ñ¸ ºWtiص¶[Z!4G” �”£ÑÅ58·�×§£ãý쮓5ºáü6¼°G¶äà t ¿:>ëS™ÒNÂ÷“Æ[h»TÌë¬Òp t6ã©{­O2pGª+€ˆ û†™î˜`v ˜†BwÆÍò|Èu—_�ñ†©Ć:åSø ã{ q—Gå¥j}3>�…ðOýÏúºS;é¢Ä‹ü­Kƒ-ø[×F(g-Ñ)ÃÝÜÊóçìm³×•�OœÚj Lúû(ÍöµkrbóÚÇÔ\P²ên\”xM‘˜Ž&D¡~Âzv;a-dÍÕ_»~läY±ž�²,‰–OÇæ&Öß�45;�ƒ6XŠÈHçpŠÈó­ƒjóÕs‡xb3»Î®b`�,¾ ãC°{Ø™6x<Ðñä[«Û·<«g­çQ�/mÍ! ·Áeþ�‰OejV^"0D Ãi�Mè"”b ù‡i�Rå �\å8eÒ±/0S7§a6] V‘"ün'}¡`Ç�­ÛÏ jÀüñLã �’7 C»Ó¸&]—íÔr`%m`,,Ô°ÿÊÜ�‰i6°/œì’]é+ ĺÆV‹ì-ÆsÛyx°€ÕàcÞz™ó¬¢¬l“]x ¤%7Q²‹ŒÇctU�.PÖUý+ÐB–%óǺ(g„Ö´]ê—ø=Ûõ|�i÷}Ê¡L¨?,G߯5£3xð™S‹–“�«”F÷Kš·öÃc¾Êšµr?MyóŒh&ð î-|ðçqÍÝlÂËï4ìU¶Œ™ç3’j±M½K­×�+2¶�ÀWL_C~ÊôIãÑå"à>Þ[Yjî' SßÈÏw8&¦i‘ö©Ì¦¼ñ'›¹ ³!þ9ê>CݯFÊÅ´¦�À�l§%¥*E)èBÁqJW «dtÌÑ&bWÕFæqˆ¦ !Ì7Œµuë ¤&2¤@ûf7ùÞ-©¹$¡ÔvÚàS¥»]­ËrNM¯AžÇ»ªÔ[ʼ½AùZ!PM‹ _<Å¥5$¸xõ8¡)§€ Fá T÷z(f`)Ѻs!3û�™>ÆÄŸÊžçbË ˜¦Þkr‹rö’H;ŽòÜ&¬]4¦25�››”rR‡MôÐKRîål(ú´Á”}W¦s•ûÞBÌñ.‘±z�^çu§ßƒO©6ˆ¿i˜â_)?3 §A �¯Dà‡¹ØŸBTßm…HÄG\d¸—ääu§G`°™¾ËiS`{S®Gj‹Fø_Êeéw=J!�hÉÒËéP3Y*'D.9^nJ´Ì>íW°e²CÌuÉÎ&+ÜRá3»q�R$S-r”«¿xx¨˜‰†�i;Sqƒ�¤JÒ–:jB¤ mPþ€Å�º0ásTÐwî1À’“âšðаòu··Cüêå¸×[ƒOÂ<ª¤ôÄϓ鰚díž_ì_i–š¥ÕÜʳªÅ†T ŸòEŸYœw@qÖòŒ¥Q!`žTÑ8Æ É¤Sêªò+“L¡’!)œg9—*Ò³hcÚEÍYFñX¥SkÕ´ÙRFM·z¢yx°ËM þÉ®îlYŽÞ&q›P>’w«9^Õ”xµk!—Ÿ€­5!—-uÂy„‰Öè÷NÕ ¸›ÂêA檤#k—‹DõƒX™U¨wÕ=‰äIÞ£a()óÖÕ‡PÆL˜S;0•&8kÃÕÊi¹<i¸<éR¼5Tk™zO òq”²#¤]µRâ*¹ià1³ï¶MΤÞÚ®ë2ÈfbÙdù �#ÿS&‹iªÊÄ+>ŽTø‹�@ì©$V×L\±Â€OlKE7ùU}‹:¡Õ£9oÝÒ«€1ŸËz¢Q’PÈ—B7ƒ}ßCx¤>¹€Ð]Yº.F%|òÚõá¡>R\ò«çÏŸáŸâu*Cù+1�;žì:†p;ÔH$ØÃÖ¼­Øï[HðôØV6Ö ´¤4ŸÛx’Ê’å2²·îBg€ï(êõªñŒò?&hzA%hký¬‹Æ|]zTÄf­T¥ä™ œÛ…”žˆ¦ä¨z7Lh|H”:o S1§i>ô5µÍ”åÀ‘�FoÇÔÓÆ¶x.µÂ¬M� FB§àí(˯[0&YøïaÔ¡¦gðÙpˆ×ð'~x(‘R NÀÈ‚°ãôqD“Àrˆ ½Á ‹‚Éë–×OõØ~`„ Ò‚`všÐ¹•?I?Uâ•ÐaÙ5»RÑAÛ”ÈíAžâÔm¦Ìh³!>t ÙØ&¿y@c,N;˜$®¥@žDß^eÖÕ·`úžAü ¢u¡�Úí¯Ž%£ÔÛÆ91Gö>cBž‰’‰‚cF¨Š”¡‘EB%«Ô465³ÕíËàh¼¥y‰®Ö´ÜD*c�Ýî#;XÂ7üç7E„¥†NÈ ï×пþ'ØÜYÜŠJ›Úµh ÂIRÙYç•båªÝŠ Æ€?Ο k1qNSqÝYÁC¯Åª 1:vêQÝ%v÷Ȇ)C!YX�EtÀV ¢TG9Õå!_NÒ�å�¥u5´ôX 0}%•€úhŽ�Á°Êqù�V†TWÀüQ.€rüéüxj¹_.n4Û¢_åÒ××JHŸ6GFÌëF½[žIU¢hu½šßºòTOSÌyš%}9– d�Á†:Øèå±HI™jñ‚Ì–tªáªß-\@ÛFmŒ>ÍFÂp‹›5£�èlµÍ”IFÛ¦ÀÛøàR…—ÚÑcᛈ2>YžuÅ™Êwí¯¾W¾þKK%„{,]Äcpñ£ùÍí5ÃçbÌ>ð·øæU~×$ÜÔ7ÞûJ³–6'!#¯o÷UÿI ¯Ôû¢¹ü­‚ËB#Ø3ˆÊ¬qóF4PˆM¨Ò/K�ZÉß €{ª¯ÿusÁ6êëq�d½&ø”%ÇjʆíUL9´!3ÿ"FeÅ IΨuQQ»««4-’—¡z—•*V+ÀÊÒJ­jR׳ZU=§T´j&UJ[­L+Ý>柕ÈeÑ[»»´ªm‹”zÏ*5,RÜäxEÝCÑ täÒ³òOkM"ùÃ$ઊ“qÿZDþÕMk]{OQ)×ùCÊ´xH¹n}6¶¦IZ£u“wv¿˜‹•Jô4|óÕösúÿÝ~>µ‚lZ{2qJ­lÌÓó¿_ U¢g•kÃ^n« Ûiš� …ã›jÅ7V†«2ð–J¥-UJ[ž­hõÙjú5ÏVm¥M‘)mê«Ò¦^QÚTª=ÃÊ[¢KÓTžÓ(Y*L*$>�™Ï'Ü—…NxÝY”ø?|ÑxW¤QQ¥ýן* ÚXyÓѲþF*¯ŒíE*’æ+"]ß9Ä"6˜·ôHíÚm#~Q2dq^oÓÐ{ßwz,@ìJ„])ê›1x2©[ák>¨È@ÒÚÛ©ö¢slé’…k«î<úÒ�ÒûîævÓy�Ò¢¬%t)ŸÝ;6¾áYâCNCv-ÜÍaWþLÌS¿fHè �ópé�¬ÙÝn¥T©“$A"v¸ÓîŒaµácJ ŽZ(å_Øc³F>íA0,iÅ]<2'KÀAœ^æîIä)(§vbReV¥i¾©@è¦3 âð*¾@ºÝ½ãA6óúýlÓ{ÝÞyÓƒ6úÓ ¤i]dQ~2¦·›ÿVÚËðW´ƒqt�ÛÆŽq”€�éBÏÀˆUo ;ðEZßV�>g€qÊ4‰"€±0J6O�ÃÎàŽ‡aW%4^þÂJô#o{\ÐKjR±•,lòæ.ÕZ€›X–*WK(h”JÂ:mÜ6;M£��~|¿nªA®Ð“�ÝbÕ$,”�V�ñ©��©çËÌpðû"Å”¨ÐV˜Ù•©pq@ª>2·¹-è†l’yý¿ÁašžD •ì2' VØ.í¶Ü÷ Ñá/’Ž@óhP6úXÕ·Á˜Ñ¸(ïÕç—LÇŒ¢ü¯SǨŰ×û��”jÉ©ß V 'Wþ¨¤–¦§E™Ä î(R\u榳…í¨Ú@¼zÓz–mvó3·$ ¯ZL ivåà«§X ž4©¦pÔa¥Ï£×ÝB�wËS,¶i‚mݬZ•¯n„” ¶¬¨Ø€u¹])°–•jÌ*—ónY_bݸò¥y=¹ZiYÓ·×S÷á¾|³užçÉK®\eÇaäß:KÇ èÄ ŒbZÖ ƒL\/ž!Ú»,‹æð¡N°í@ öh7^>ím²´*i‰œ²zÓ2=­…ÔµÐØâËk•ø«ª¨¾Üy„ø¯ÆXÑI«\£EdE”ÙÅ :ž|Z=æKÔÏ´+¬¢½ÌË–‘~B?Ttõûf›BµM3�$_3oëo)ž¶[e1ÚvûDŸ'¥P‹Š}ÓßUÔ¸©68é5ØûÒÅbò æ_í.9ÚA¼ m”û¡LÀç{¾úµü.Ò¿Qî*Ĩ%eTSØÛÍ‹wdhú‹|¿x*{*ëI2w©¸¥éèíFCPûùƪbNŒÊæf¥ÉÒ¶æÛfÉ{@3ê­òÛlï²^“V+c»Z?V%o‘i^ 8©Ö¯�ïž�|øp}~q6ºØÿñ×fýš #AÕÿ+�•_�·"º>í^œœýz}zvòépï_½]Yo7~ﯰE°‹0‚óVÐX,Zå¨Ú(1�k†"ÓŽiWÕ‘D°÷¿wfx+YIÑ'íò&—‡ß|zþÖßø ž<p�úg„GÚ!úÍ<ðVO(ã¹¢Å�3Yo)8Ö¶û"ÊŸs�ID˜Áv„À?ëN}uþæ žž=¼~™±_´™g+‘nWЖ¥˜@á×j¸”…êEâÅp@|´3�¾J˜“'#ašð1¼Y7…Í•+¤0×YsºÎí‹*áK�XîMip±*LVeÞW>¢4uvƒü8Öq­ CÙX}j‡&CuNÁG¼üì¨ùþ¾+Æ»Ô&»Âi¦¼PIXODÕKy‘RÚÀÙ$/4qHàÒÑÔœ}ôq}[3ÂêÊÆ\|ENuGãʉ½9)g)¿ú¹�6ûè�¡¶Töf6sгµõ‡Ça‚öWZ$þUy¿÷|xv~áz_ïˆO}?MÂã$_÷nd9Ýž•8M6^¡ú-׿mËŒŸY¡±p&‚ ê"UñbЭ·¹]Õàãßšz¨&Hesõ#ÔœÌÕ·Ø9›LµË2[ã¢ÏÖ²9šª/ÞÜ]‰ªáº+´""Ýze|M׆Î*ëI�e;�k2ýïø�»|@Ìl2bÀYg�ôÜ àšA‡$.ç»út€øÚ7Ù“É£)À›´Æ©’ÄN‰`ñ& P*ƒz_Ƴ�¨(œ ¨�d�*çøØå®ÈœY¦b0CÑ®›ÛÛ™vì!ØôÊ‚ƒd2 +ÂÅ&ß[ûè3` -£Ë9. YSàj%]¹}n°{ȉDŒW„¬«{z{ÖËéT­1‹Œy,úè^û§`éÏf›(�@Iá‡1{Zèõf*|‘BÐ�N�´7@ã�åjO¤¦„G}çdqm¾ÄñÓVö4Úí+З-&Ÿ¥“ŸÐÝ:}²êN¥4ÚÊÿn%‰\J–´pÒ¼,­DW8®¡¤«za’6Ðnð~ø8̦u½F’냖ÓwI0WHkGËãhw¼¿7'RõòwUõ­¥|©1ò²]s°Íá }ˆÖa  Z‡š�ïH‹”èF+a|ìÌXIoß!ž‡ÓŠòR›±ÒØWnVÊ›ÁJ« 8Ï[=…¢˜‚ç1l]y�45¬qÖð�p@œeú+T]Ò^kÂâ= ü“™vaJœÉ<¦ÿ%a®t&KöîDÒ²„ãô= X(lå Ò—:%º™Óú´X?~ÌÐÀ‰òKÀ•ÙõGg õÎ=¤ç‰@#®ÅOI(v*˜¥¿…^9á–Ü‹ioº4âcnŽI9úóÀnå±F"3œúZzöŸ7ZV‘4�öׄ6ç(lËZå%NH«ó÷/„�F¾R˜§MµÙÁ(ý�ß…Mä~ƒì¾‡&Ó3%Õ0´âú¼ñe‘Ú†dàËeó•te©×I÷ m*‘øÙ7užõ|¯–º‚5âCq„﹫i¯� \±o óZy�0a� àFÙlq¡vÌ=1æÑÀz�û±ÏÅÚø\Ôe&µwTn¸\ËÊÏÆ ãª.¼¯ ”kä)¨y ù/veº¨Š”+´é©{ú­Ü—ÞrSK%Õ•!6ê|qˆA ”Ë5I¬KˆõѲƒ[]f CeLõ~Ä/Õ£ð»\±ÆEÊ ×…¼Ò̇”'0 ˜™†Üc¶•T»œ°›é¹ªt%\~£¥‰j‚(�»$Aìòº¼kHˆ¼ç5“O|ÌôªàýxÁáCSÏ.ø¦e&×4•k¶/—­k™¬«1¹ž¤+[&+ó²�`ɤÎ/ÁÇw6 + §’ò"N"U£¹ÜIŒON<�:!e äŸé yxvëÅäêž¾’áîö ƒ¾sÎiFÅ@qóÙ’ä @¢ ñpíÓÿiw¤yÒòuB‹÷Ã&¬Nâ ˸kõJè$±oRñ÷§Sôñù"]}¶ œãéÓUsŽTxW±?œàí6vK*¬y)®‡æÓ 9y´…<Ö�ó„×QT˜Ü]«HëÆ:JßenÉ»L§‡Îµ²k®=zt,,ÿRÁžç'ì[â�ªœ9ÖºÚ L„ç»P9Á‰C�¼d ð¶¿�qCïÛœÐLàc|ã•d´ øm\´4í{šÂÈK²‡ÁHå<p»Ý ¸ýS3ºïÇÈ‚Ì=”œæf/F÷!L�ÁžFdha¢¿ô¿MàPL×Û{e¥�%ÿ�ÆV<ü‘¾d³ ‘!¯{"“»�PÆ|"›ã¥© ãvC˜?ŽW‹f±Y /Ùé$”—»Øeñ N/×’7Îìƒ*Ž.Ó›ÙÊ�«ä£¦à î¬ýv]‘rÇåLIé' ï‚þ¼+hÕ˜Ãâ¨�(…M–)Ј¥Â@•ŒG̵«EÉß:‘€v_GŽ£�5CðÌ>gÌÞSñÌ>gÌÚ'dú¾rPpn¨t†~ÒYAµOú,l�ÏÂÐú,lÿGò§¡&þ0ùÓp]¬?I‚ÿ~ð¦ÁFYMN:JÀò-ÙæÁ¢>ÜÂx¸ Íçìý&Ѧ3IÉ7o®“éÿbG�æIÃâÜÓúS2·æKË5Hïƒ±é‡ ^^Óß!½d°OAwe½£#‘ÐOÿPKÒV1]>=|D‹£Ximunify-security/assets/ui-app/assets/static/shared-dependencies/cdk.min.ec26af3b5158.jsUT ëÆ«jëÆ«jux è‡M‹= Â0EwEyS%R‡ÁÅÁEÁB—Ò¡„k)h //~òßÍ$n÷Îm?^ð0Œi΃UO‡ÑMá>òÚ. Ju Îʼ8)x^x¶BÍsäB†vÑCòß×ý.{˜.ÛŒi(ñ† ‚úWèEÝñÚž.g*^…(ªvfcª-i�RÒºY}PKÒV1] Ÿ5\SÕ[imunify-security/assets/ui-app/assets/static/shared-dependencies/layout.min.ee2b6ecf34bc.jsUT ëÆ«jëÆ«jux 臭VmoÛ6þ¾_¡ C@œêdKËPצ ° yé–-Ö)%�c&©’TlMÑßQ²d+qÚd뛺ã=ä=÷ÜIg¥6�ù .8.ùà¾`â¢H™zK.]{N®Ð*æR ]-.õòï‰ÌA1#•¾½?O™™J•¹)™"6KŒW¹…GÅcãN®™r€r*(£ŠJªiL:£9ÍhAÓ‰S(Qi0xC|X‚ÐPãŸ\ˤH$4þ«³7ç'§'¯Ðq(.!6,B—ñOsÅÒÞ^Óu(�±M~ðR)V� �gEd£¨j6fpÄ hCec13Tãò4Ò ®í©C�}†]Mp¡¯xNg¸H ’¸ Þò hކŒaæv‡aʼãfF‹eàŸÂðtˆ™†¦þHaqa è=xXÊ´v¢WfƵÿw1Úy¶;eq¸Ñòë˜ss³ðêúnL&“–ëö7�)Ð1O*Sæ,joC0—ƒÛ*HE* « q�X) Ó"ºtáM�TmœyˆwsÎÀLR0ÎtÒ¦U�W „¡àµgžw¢³Òh K!,Ÿ2fâÙ1$k:Øïs½¯äk·µ5ç"‘sµ÷—;��Öìçõʳ"•Ü:áÝÁþë÷77·ÌûG‡'¯½­­UUl6|JæþŒi„óZ¸‰Qe5½¹!Ó0‘q‘�@Ý)@¤`Ÿˆ«M‰Üy¶¶ÈÔ_fîÑ©�íóÒ`ÇE¨âÚja³X˜'±ÖÐ΀%>ËsÉ«O2õšø€i@›•Ïeþ°µÿô"³i;?T¦vªH&eåÔõ':òèÜgIb¨cKOÓX5™‚JÙºaåÉ PÞ�:ÙM�•qä‘¡äx#6’úo–¬#G›6pºçml�\Éë/ÈØ¶;v�¼D/‡ª,ƒhuYjxÉ¡\%¥q­ê» œóUU“:èÀeiê†aˆù¸Í?mˆ EV�ìÄ â…Ï«š*Èä5ܲ6mÕ�xÜ`*—FÞ²�Êû([Ûß7Ñ?R¬zèsŠƒnúòÇUkMp*Y.çdãdµ¸8¿¶Ò0Üè T!ñ6‚ØA›c×ñj®Û;%kÕ¾$¶öž¯e„˜ðy Ò½Ï~Ç{–¸ÁÏ>§þ’U¬®l4tj4„ß/áÈ~´{^3�x¨xËw>IÂýœç@b²�}³|Hð�ÎÈÈ[™Úcúóûš¿M#lé«\rat€%ìÀ��²=`ØE„ôÛ µµ(^ÛzC—dدpØ Ð× ?ð�øÎÀ‹þxõ�íÜTy8ƒœ¡ï ú&]wäúßÐÕŠÃÀJD¯ÁC踷‚óU!0[Lm©¤½'üµ. Ü£¤¥`Øè¨1Ñ–ô h¾ÎXÞHÕ’ˆýµ2#CÙ¤It œpËd##Ú2Bñ:üÑC«¼ghE÷Ì*À/Ÿ¿�¦ÿ=°Ê~`•X—k÷7«¾ñužr:ÔE±Icg6ãÅzÛϤ¦Žk1ø^ʈU#î÷Rm¿£ìÌ*½ÉÀƒšÕû³ Çcà’Œ-~œóÄÌgw<öÇ{ùÂsiïå¢ó>�Ðå0‘8ëAãÝ>ÈʴȆQã§£¶wžõaGL]À0j{gosØx»{¿)n¼3jœ¿a$JéžüZ\‰‚¶îRN.•QŒc�mÎnCHjψYxÞ[«ó Âö~zà-AâWn÷¢áÕö~=êƒzÜ{Ì’ô7KŒÿ@~Gä:Ä·!´!a3ì×ÉèS;ê²æö8• @¾i‘ïA~Põìt±=ùî_PKÒV1]¶B~~e ^imunify-security/assets/ui-app/assets/static/shared-dependencies/accordion.min.265d3d09c637.jsUT ëÆ«jëÆ«jux 臥VmoÛ6þ¾_áðƒ!!Œ–ÈP·ÌN�`mR4Ù€!3 E:Û¬eR#)/�£ÿ¾#)É’¬ÔëöIä½�Ççî¹ÓݳҰ $,.¤÷@~Žù²Èbù}"$ÚÚ§k”e$š ®U T \>}QdN½EÁ­­þŽ FJK–h2ÙÆr¤)£Šr*hBÓ‰]H¾S 1 >´]uÁ5ÿâî½kà”E@!˜1i„[³¾æy¡©BÓ«-p}µaæ$TÜæÆ-Îh}.îÖ,¿ƒlaÔ…6ŽÜ,?ˆ´È ¤í»yÔ¼Á>~"ƒ˜”"©Ÿ»f šÝ�ö¾Ô­U"™�¥œSx‚¤Ð6.þ.=’Ñù$Alõ(‹À#ÓÙ¯Ÿ/§ÓÛO³ëÛB9ü=Ò(M×— &'5`ûþ$Éb¥FñÎ:Ê"ÑBâqzÅTðYéXÃt…yÿ„:ÆÌ§™Pp™e—.¡m=K#‚I=‹ë‹ÎÈ©<=­œ7E¦YtrQ.1f»Á ]G-‹R5j¨r®¥ o÷:ªñøÕøOÚ;9÷ˤR4®¯[_ø%_Þò ‚}m`œ)8Ë ˆâyALü&Ç<�ç¿c˨4Î,q'ýYœ¿ùñ‡EœDí:©PCè=xy‰ýrÀ'e2bÕº’À‚qhÊßÛéç˜*0ì†@Ýü!R3i%d>§Ì0G…;‹H쇔X¢¹�ú�ê:Íéb PÓ� ™°e)Ò÷�3ðv¹…Eú_=a�a|Æåܧ]ß›}’*ïy‰`@¯ÜiìO QV†(¶î‹�)B 6æ)¤ý:¬å¶#Ä�-<°eH»†'Qä´]1¶+¨÷.԰˘3ê²2å©û“!²ª&?u·Hµ°¢Ü¤u§BÕŒ©<ÖÉ dÀ…f‹g¯2ÄûJȰŸÚ½eCs©;#±ñͰ M9|‚E°‰åú��Ó$k¬LKÝ”©ø1;D­–[Ô£†;µÄѸÝv%Ê*³æ…5v‡AEš¾úäˆ P¬ÝE£4¸úðñþÚÁ¶0E[¹hKRGí®°›Ñ¶æ°&+–¥Ø WM'lêãä‚öÀi$6b ¿qöWwP�Ï÷fÜr|¦çGowå¿2eAf—žg€6~] Çã“^mµ[j»â¢(Ò•˜Ù’�½‘iœ~EŽÖÞ‘œT=Ó‰á^Ü6HÏì´wú-¶ªî¾¸ÉeU÷}éA§þ*´ƒý¼ý° àÍ£�=Z,—Ô‘×)yéƒØÙVsë¸×…›�Ç qźÃì} N®ý±9¾=r;˜ùæ Wø^o”ÕCÌýœy½xÓ}Lû­ä˜ z©ßwÿ Ýâ+C÷Œá¿õÐä½6òîô­q I½"´Æ>$õ ç²°?¬èá˜÷%Ô($î‹Þ5н^ÚíwûÛÜþõ¹ížò_gÿïqV@¸,�ãôþ¡ÍwßZ[ù`"7"Ldý¿_å1/‡Š™ñ/ƒÎ®ªpâíâÎ%Ôă™|÷PKÒV1]Y‰.ã¢]imunify-security/assets/ui-app/assets/static/shared-dependencies/keycodes.min.80231c429683.jsUT ëÆ«jëÆ«jux è‡mU]o«8}ß_Qñ”HQ„IB`W»“x ˜bH¬ªKo#õCJ¨t¯zûßw†R¢Ý·3{Îx<ǘŸÇ®}šÚï{‡É×o³Éýëó]·yžÈé›ózl/ŽÝa×9ÚîõðüÖþhï^»ö÷Ӻ雜8·ÇüåŸýý¾=\µ?�qšÙ|>·Ó·ýýÄÎÛçïÝÔR]Øùñå©�LìŸɯöÛtÊr~ûØAž_¿äüø°¿ð]wxdøÔv·ßaÈçQleQËÊ™-¦3 .£øÊ”Q,�YÐutéÌÂMnc^-¼ž"Úl¶*­!òû(ÖE]é âuG~£¬eÔ�”8ŽJc3_93Ï¥¼8XàÑV®háñæ�´M ñâ#NôMÌ’ËJ¯z¼Õ9n¥š2™Ö6ª*}ånÊAµUj³ýXDbö�ZR‰eÖkÔT—\G¥ŠÚš¸’I*EFVpð%U“ÈLÖPÏ’êù"+  ë?�`}üŠ”ê-d„HôQªèøŠZ‘ª~áö«O€IÖȱ"U‰G‚ˆD …B+:~šZ#sëLãúp åueÆ™ù¤zÝHS+]Ø<ªàš|RŒjî€Oª R„¡ñy ‘܉O'yŸ•œÙšN¹DZ[@t<ˆ”þD ¾& ­5iä€HjYs7‘LJ@×€HZ�œ1 èP@ ÒØ" ¸ù€4 Ëi|D_À$¤‘ËÚ’ úëæÊÆybqôþ�¯ènÂÅÉ4òSmsY4'ŒWF‰¥a ý1×ÏL¸Sýè„ÁE†c’I¸îÙ”pŘìK¸ÞG&ܳyЄ»³4pÂ]�ɼÉjUfŸñÃÙ‘ÐXHž*W±gG(e¥4Œ•g‡HÔN%¨(Ø21;ÆCLE§ ÄTjºDL¦+ÄTTê#f¯¬SgÓ1qˆ¢ËZ.ƒ0*{¬,PÚ;õ‹_<Á¼:ËN$W¢*ƒÃ�¨ßUpçÐvGÞà›2D;�5ùð" ¶ “øl öæ¡�l Î÷²E²hT›åcmŸ’ÙÑS"Ø7ÃC"Ø=±Îó>õ1‰Ì#¶êp¡l&“Ñg¶MTjÿ”rÛÿ;¨¸ZeÉ(Ô¥,¬ÍJÚË þfæÑã‹êÿn”ÒãûŠ3mä7ðUl2i¯�}òø&ѽdsÏ[NßßñgúÛ¿PKÒV1]—UFWšéZimunify-security/assets/ui-app/assets/static/shared-dependencies/badge.min.57bae3a9c91a.jsUT ëÆ«jëÆ«jux 臵X{oÛ6ÿŸÂ CBi5 0lp fn’¢»è Ø2#¡%Úf§×H*�'ë»ïø’%Y‰7`‚Xº;�÷øÝQŸ6\�ÄgdEá�¹·Î/8]1f¯ÂŒíÞ Ç{Œ0úã>9ÙtiaFXH³´EÏ’¤MÉc,–KF –}焽Â)…­`wæÈ]i(_\â•NÁÉ€ FCáœ=`6ˆ¢q„CŠPˆâ3FDÁÒ’æòñmS�ˆOÓo$„…AÄ¿¤ ^èƒ|žåR Çðx­eäC^Èßéê&‹Š˜T¨©.u }¤é%åx“q Ü`q¡NÙ·R)X†å¶Tl.Ö$üƒ0ÄÀž ˜pdßÂxÊ¡äM–ŧX–&6m±Ä.g_n®¦ŸÛœX*Ÿ^ßL>_Ϧw7³Ë/ï¯î>ÿú᪚#òHÂB�q-âD ÖÁñYqƒ$HÝ0Æœ—•‡î4ZàhEFÀ$…x(ö`5 �ðñAR®@E˜Åu:*±¦Ü¿SÄŠ×lÅÒ…¡ †h@*©+{ ,ÆyW›!+}V¤ÖhA¤J¤ìÝ7I‘�QZ¤VRääþG8a$º¨ÙJaDxÈhnÜÖRÚ`)ÅMÑŽòËK)^Ó("{:5U©3µ&ý®�ªÂÆŠPHgš*a^É È×:7]ý–¥O¿’˜$p°�dPCÂPðÚ´aAj¨L{‚ÜŠÙ’…Ì%kÅÎÉ0 C;"GÇš�gœÊ¥�ƒÀà%T‡æô/ÉF"Z$v=�‚õË—ö…_§°Ç G'–ÜSa�p±=x”……<*ÐB¯¢|"w®==: ‚ e€FDgK×Y�8ûî¨5Òθf)SEõ�,š+íènh ^•®f©<›k£Bѳ«G€iš®”niv8<ÚW4ºûÄÀ¨dR¯mz.å›»y^ Ž•é�4‚e›Úz›2~¤SH”Ú´>f�Õõ†iLSmv£lΡ‰%*Œ^_òn³ÎºYï§X¶³›VÒ(Y¯‚£¾Ë¸Øá7醰/ñ|ÊßB¾©qhÏ’®RÈ•¯”Ó�AÇü ÷EªÔÐL‚޵¬sxŽS\Òmm¼cz倸'�u]Àuhä û=ˆ½(mV÷ê.’Þi‚öØBª-¼‡¬õq¹wr¦Y–Ov=ÞÖMD†ÃîRçNZT �RP#]êx{ðÕvª�ó|s±¦±„FäØ.[‹MN²å€‘? H½Úª· '`B×Ô£^SÏ›`ê³"�‚ÓˆLô€ãº®¼.{·0¼îQ…Wyòo¼Ï@¤z²™„Áý‹’œŸ;NuïCx×;ë©Ôáð¿ ëþƒ:|£�±6»oUo',ÿŸRF¤>{OMo·¶¤ä>× nš»ÕmdG«›h�ºó¾3Dæé�éÄ7¹Ç˜êiVù`n·îsì Ý*Ÿ‚•g4t î£Ê NjޭœéD±'ñÎ[ÅþœfpÛ“á}Öm»>ó¬åÁCF£ÁqÕœië=Xµß΄ݬdžõ}¯rY{¸%D€UõO �Îñ¤€Xló ØrŒœÄ±{?æ!Ü:¯þ‹ò68ƒÉÆ5§�NÃɲŽë‰0ÛàPŸÊ«¸€C}¢ß‹ãÓŸ~\â0hÞ[L�JÉw—l·+Ï¥FPÿ�ì NßÙ€;U@ì¡CrWõ±É2Ò¬Ýê 6³ÓC¢1ú�¾Ç t–’¥ÌS«À-eï¯7ñ�«î­�r@Å�ù­�d—ö Ú�Žæ|ÅÀ8=VÏo``…$á»[ `šWž!¿Ú¦¨ü”÷O·1S˜¹Ætß{¢ò³—–4¾­ÃzY¯pêÅs¤° !¥Dø&" ‰™ —c7GöêÒû`H g¹j;u”†œÚK ˜£F7-ßQ¥ñ�·9’lˆ~‚W,ù‰ª|Ø`¿³S¦ñó¼BKhN#�åíT½NׄQq)‹GYÿV Îaª®`j½©í_yæF^þ[PÊ{K8É¢Þ¶ß’LçU Òô[ïb�º%MòŒA’ÜfpµçÝóè-$MƒIò쇿PKÒV1]Åt¬§o Zimunify-security/assets/ui-app/assets/static/shared-dependencies/input.min.0847ebe85fe0.jsUT ëÆ«jëÆ«jux 臕YmoÛ8þ~¿Â> ¥µñ‡]ØPs®ë,Œk“¢Nûár�W–h›­Lú$*�ÏÖßRÔ›å8Å.jj8Î gž2ó}"éÖ�éšÁ ¶¬ù|�F~üK~ÿ%4˜à©Ów‘/W"Þ6é’>ËþŠÑ(¬Íˆ˜V¿qeR%l}Ø›ùÑ g1�K Áñó·Äz$ö*å�ílê¬4¡�DÆ,�ÖèÉ�;’0ÂIBbⓈ’’�lH@¶dGd5Š©Lc~H¨„-’áCU˜ô¨«L§ï„ˆ¨Ï?ÅbGc¹ÏH•�ÛšÊyºÛ‰XÒpÆw©¼ßïhB¸G뼉GI ü÷à¡´ã£Ó¨ÁäÃŒ£Šp/¾SN"XGÝ÷,FâŽïv8ëG0œÓhEÌ5à÷vÝ&]€ô¯~ÄB_Š8!iSÅæ·ì™ñi‹x.Á÷dÛ@ÿèˉØno¼E†ñýâæîóÇÅÍlúá=Ùé57plÊÚ‰à2 3Y4fÚ®€gž.Ѫì‘Ðg¤’ `ȇ�'d×GÙQjÛ*'t$CÇúû�fV‡%ü²“˜cê,÷,ÅçþédÔ¶à?æ”/¼`Ä£TB-òäŒÁÙY{ÀŽÆÎn?}¹_|ø2]Œ'“é|~÷Ù"œþèø/08Ù{Ö2•ReU°¡Á÷¥x†áŠEû†§ØÖ_#!öC&Ô/×ßb~“t¹eÒzETvfÞU®àÒ í ò“ä ¾ã4€Ó¶)Qù¡½a‰»éÊO#Y4Xª@€ͰócÊÕ!yò„ôG,Ò�Ç4�¯ó³õ¸&$(o²Amý±Ê2ðªÔ™t ü)“Îò>ï„,ñ— íâsýrz–T™h¡~Nñ$Ðô®+„½ž]ýôºƒS¥\JØŽ“¡ìdo¦we•ý¤Æñ¨Ç)Ìã˜þ/…¬`?ÃѼ· ;XÕ!´! FRGËñx…áå&p4ªžÆò„:åáñh#AÎ í3ºÓ�lÜ2qE® àrHÞx/' TØ�ËEHoý-¨(>ˆ4žø ¤Ìè\¸{Ññ¸1QÓ'&ÒäV Ul•œÑL-ù/è;»›÷z©§ü.• éX÷[¶m;à.ÚÈi? §O00>µ­ïèbëŒË�¬<�dNc8~¯[�w—%ïbñ#¡qÁ¨•×nô,í{Ëó¼ à0ȤGõù/š ¯Û [%©ÆþÆÝB-d»ˆ^«4ÐÆ÷µ }3g O'-'ãëñ Âñ+£?f�²¶ŒSK{½Öw·ú÷°:.Ôû$ˆÙ’ªÐ?4³”ÂNãâó, ÂÙ€Îw<§}Û8‘í= ûV¶@lÁ/«ÇÏÚœH±ËÇŒ¯/™Þ¯Â÷BŠéVÀ×O…-_¿lÈŒ¹Eñ6a“î¤Ê¶ Lçi™Uð»*s=O'Ì’’Ñ®}Ÿx¾¼9JÃEE™QÁûtöSät#¢<ãdªh”õî¬_ _¶P#­CX«ÔgZ±—*óBpUÀñÙ9r§ÀTƒÞè,2‚–eцœ/êyÆ} Ý ÄÔ¦Gleî)6­°8E‰zÙ¸ÑY xM¼V•h,á  ¸§ìÊy‹PghÒâ ‹“e'ª×º¤ óñˆ�Ÿ5ÚÈÃÞe<¤Ïw«j×H®2„á¢hö^mB›œ·ý zç‡&Xðêóš€`!“ûüÊß�ã§î2¢šBZÓªkz̚ʦÿ9î WUËœVbµîD“�H£ðƒ¿¤ÑM$|4‡­Ê­+E뵡O°Ãêy y¸zU�œgáñH‹jw<ꪬ¬‡�®MóžŸ2ÀûàoÀ/øß�PK'kX‚Í3T U¥ÂwûY¨…ºåk¹¹¾àÀzìú1óû¡¶ÜC»ßã¶Õ�[ôðUðÿ’8'ÁÕg€ý“ˆ•¨_XV~@ª#f}&¯Æ£QýÒÓìFªÇîgÿ§oN†àíÎÓ«_ûçʼêI.ÚyVN;Êõ¿¡y0ÒoC0;-ôsÈ˼Üý”WÚKœ©{k \½†;4òûeÎ♡|ùº¸jãž¼g\Z²~…Ú‰;®w/—D`ç§—øÐ¹§g Œ^c)]Aä¾°ˆ‡Ã Ñé*ðýòÁʯo–yÛ‚¡õHÊnùt*ocÕ„Ìü8 CEfë|]ö)Ë#ÙˆD¥5¨8PLýmä—֬℅ÿBýl¢ãÐ:!YJ_<†Ó¬ÔñáCK5¶Z!‘U4´Ôª¤#nXÆaFè3>¯�JÞ?üùë�x/½Vö[YVÆê®H÷=dŽ9­%ŒXáF0ÂÛœ…Kò®$ø–°6�Ýó”rGöD¹J�Ôœ¤Å‡ ój Ƥ¯’ó…¬:l[$KÀ¶¶¤*»f€ø[A•RLx—hK'æ%O‹‡|‡~Á~Û"ù:a üü컞¢Àá$\—ô&Ͷ>°vÅ}„�«I!¡“�=—|XÕG#Šõ ÑANaè`\G.L�,«lFo›²û®¾îسAa„lx'* Wg[îtæ*(5dïóŒBØ£o3%�ÄX©�ÍVã^àûèVtù½»fDã|¥¬þU ,3£˜)$±öGïQ¨¶4¯L›šü­ÆUÍ3¤i’%ípb´5œ=H&€{"F5‹ˆ¹&5÷L' p}§¦±ï53ŸÃ1¼æ/‡‚x!6–ý°-³è«†j£·iQ|J³GG»æÎXâµtxI¯ÝÜc'Ååå,,0Ùðm©Uýw]¾ym–ë/òÄ� û…»u\«SääF>ºõîl5 ÀËKÆà~Ã_žDËŽÃ2±ÕË(IÊëÓf5ØÛ7Ùûa¿Ó´6hë·F½›4­œ”Õ‚ªÐƒe] ;`ŠWu&#”¿’«÷)߆»ôI>ö&€¡¯saÔBž%•‡�š:Fã[ã.ÒÉÝÞ¯ìñÑ:iÛNÜ´ÿñfٷʵ„;~§‚Œv€À¨>‡t;„¬Ãr@Ý(�Áìù9Ûº?Šî‘²gÂ~ø‚vbÆóä•ú�§l–0lcœôƒ±ß¢îÁÒ‡Â=MËù­Õ™Àq³NT·râÃÜ+ëŠKÚ>I»t†g¯Cä�\á ܱçg+Ê+;¸h(h?>Ô×ú™|8—§/ø‹#ñ CJØéˆ™=Ð…:Æ2Ÿ¯‚ï~¿1Ÿ=ç’ŸRhùÍ¿PKÒV1] xèYS²�]imunify-security/assets/ui-app/assets/static/shared-dependencies/checkbox.min.70e4785f3a16.jsUT ëÆ«jëÆ«jux è‡í=iwÛÆµß߯ ÑÆšCR’ð0‰¬¥Õ©m¥²’ÓVÕQ@`H!µ„ÂûíïΆu°I¤�œó²ØÀ`æÎÝæn3>=„^ô4’wf`ŸáŠàöè{ÑÑÂ!�9Á÷�€ º%×'ÞrÁß§«ˆ]üäໃkǵáúÀ_,}Æóö#Ï2—!ÐIf$ϯ�l|ˆ#†Ã§(îÍàÉ~dNW™âtIš.èÂÅÇùß^¹8FYŠ<À÷ãß®~ÚÿãÑÕþÁÁѧO§g(HZO÷ÏOÏ>!gBæÆÖÍÔ¿?ÿ®€û'Óul3òƒíe(t&ÝQ‚B/4N‰cFÓA çƒÓ�çg§ï *•bexåÑ= Ç›¾ªªÚäÛ;MC  Â1^ b`˜k†aïxè oN+Ó~kcG½£É€³ödÒ�t>±Õ…z­º*�nMA+Â)¢ѵö¯°‹ÖöÇÀ=M ·ßÃ÷öì°w¾ž2T²'vÂÒŸÿÌ 8öã#µòœ_WøÄŽuÚ÷ç˜ øbJÆõXgчÙN Z¢ermqsDl·pÚ:\�«–†Ø8+c?ü€Påó'Þü?`x&&¿Ml-¬(< x+×±‰ÃîM°Ûï‰O¥Ðëwú0ñV®ËPeÿÁ`¢˜3�ã™ œéÉPœU�XKNp¥ÇWį@Æö„¨Ò:´®‚D·/(9 rK0�©n}Šòd žø^ø.Ø·Þ} C?`Ó{…)È`˜÷Å�7ØÜv¥-9äÓfÁÉÜÝãã çQföŒ/Eôf½` »`##nt'K3ñ‰©žöøÈ)sìI^' ¥8þóúë¯�âŸco¾OÄBüΉçDªP¶ðÁ³N²d¨Ò4ªÎœ!EmæÍT™EâOé⵨�­.úüåK5Ïc«J…û 3¸9&"‚ŽªÆ‚(b"Ú)*I' .œû¼G‚M"ànèäXUÄ)÷�"–ïžÁs&åÇŒeªFAV‚xîáw¬ ¢�­Èt¨;šQó4+¢ï†ÆH«\¢} !�TS„1j©WWNÈœû¡\¦v6ŒàÆ63j�ÎÁZ3¼µ.KΦ׬[¨jñ]àD˜š�Äò&+þŽE¸{êqȉy®µ Ù�Üp¥#S[F5A�̘/z%Jˆc¹” #q�Ö¤ÂÔAØÊž€n&öñÜ àöˆ9duŒŸçþ» |§4Pp½L$ç™�æIsýÇS°&7cJÁÈàóS*ªæ-£ßyN:ÛPÌ6ª›-�ð£V5[Ý\;­(Ë-›Fê ½üb¡ ±$nÊDˆe 3&A Ukg`5‡ ¾ŽÅÖÆWƒÑë½™iM²“·³?ï–ÔŽYe‡‚í“ü(Èf'å0u=,±±�n!çøç i‰E¬ŸáK0ijLÒ]]¢= U=œ×= ᡆF/y¬„ÇùŽ¿’N`À‚Àb,�áú¦Í henŽá¤$èaTœ»#Hš2od@CäV#Švh¬“¼Ý¸PȵΊSHI(—(ŸÜçzÒ–lwÖÀÆâÐ œiv��6ñQ™N0̱ ű$ê†"®”+%JîVA¤š`(äOÝ’ ÁPè_  ]á ®ÝPÄ•‚r �(�|ZµŽ1gA€±š”ÄwFóêUŒfh­@bÆE^^'Þ5†Œã�¬JÍ1ëxƒ¨°ª\eJaïÀþ(h_T£î’jÔþº\ ¢oQ ¢ÕÃ…m¥De» @Ü0MÖ ­äàèdŒžtÓ>WYì†ñyÞ#‰Í–�£8™‘ͳWÌ]aÃer]STÙõ0RJâxæ[«0‰úkIÞ1–ÄõoAÊhÇ|Ï£gõCX,ìDVÁ‚vÄu™b±š‘âô])Ëe¢sª‘}IÜ‹ðŒMÕØBõöìY˜0åÝj:uo~ �#5`,ÆŒèô/_2xY‹\Œö!M1/T۸²µÙÍrf‚dTÈ3î´‚ë³…ïd;;ðô()Q½C¹ïA1Ämò‘æ°Å~}œl:©JdN‰ÖÞ+MWèMS—[è" (¬ÅRP$Ûf< ¸C!v)‰`d/rû%Êå%ºöCŠ:<¢’=TX‡ŸLx>Ñëw@(GXˆNF’Єt;G*õaVß±‹›Æ!R×Ôœÿ-5qGKÛ 0©' Sƒ§ 4%\'y+YàjËɈUÌDÔ‚EJ}£•¬0MâFÚöKÍrZ\H#‘\5/qÌ솰]ú—‚D±ÛPÄxW|¿ôƒhdK¦>H…Zåv`SAÈÝ­zqpYäm¥kFÞü–>¨Þ§DãfÈÆ– ʳÜ�ˆÚ[¢‹D߀t_{æ`ذƒZŽÅãŒ*^(É RD—"K#b*ufxò²`d ¤0ÅÕ3d:/´°áBD…øe%ªÛ™°,•R¦�…+ $b$‚ÛM)ÉaÂâS飩iÝÌåÙ 5ß\¥g¦Kb!…„öï(›½Ao´ ÿñØR¿vl{Ç€D‚%èôŠ$û ¸ã’Ð׋B(†ÿ? û¯wÐpÔ;ì½éÑðmô¦7õ_¿E»ý½·u õ¥]KiZ8÷ØNf%Bå ö ™˜“Çâ e‰‹lÄSÙ-Ä^øyàÌçd—-m:L¥—´`R]ÁvEn|è)EN¤ÄzFxAŽfàv©Ú2ðù� Xõ�4u‡ßìtÀ#‹†,t©œÿȳ빲‹Ä¢Ù-§³)FlÉU!ÄÊb€D#ê¹(Œöç NÏ¥Õ¹§P«¾âlUˎ׼×ëb/’ò…KÓŸ~ú[=Gß %¼�+å8D`ò)tÑ¢·ÈHæÿûù‡÷•D…’KZÞ‚EÃDO‡OU'ˆhÄj†ËaIÇÓõªwë&QEõD”Øó]<«âYXiãÊ@%ï !ûq�¹§C"Kœž‘a$BÉåø¥Xʾ5É<%l ó¤ ó!H™ <„“„+jÑ-Z…"½ªTC<dgEà>uŸV_\kjÆ•ZÉŽ~M™�­ô ÆãcUøhjˆ>¹² 딩ˈ^Žäw•êуOËŠ0=à·¢ Ó§UR,­ëTeφ5UæÜ¬âžp1 -x>ô¢´:¥u–¢C|cF˜q aßT”Þ!QæMz,í…уKÿÒ'ª˜�×ô»À\Hù‚_}0œŽ¿¿Á³€•^N{Kõ=j¬_¡½ÁW뢹¬ÛfxíÏf!ŽŒÑÛþë7;;;oöbÒ!Í"8×…�7¬ÕÔ±ô)þÍÏ2@=ò_„zC-¤ q |óU�$ú!¿zÓ}µ¦{EÄ¡eºø_ê@‹Ù“n¸¦˜– ƒJLK•£"ggP´F¥¿Ë0!ÈŒ!ÿ²œèÁŽe¼‹üµè0�tÐ3‚kD^R~¢Lî„{Vä㔇�Owï6žgH"è—úìîå:Õ致^öTÄûÃÝTʘ—°’¡¾óªH`G¦§šÝ€;�•>…¤üRÀn¬U9Ya@™ ½E­é‘Ë¢5=�dÑF‹v†OT£t gÍL êÄäšÁXb/2(îŒúo¾BrÃ2ÈaÙÏâV°ìúÔõ­›ñRì`Ø¥øxæâ{ƒä®Ã7Ëû1!*t~#‡d-VaСi|çØÑµA{\cg~±k ˜7 Æw×0�F£†ç3… ýÀXúqzã[ða�4º,â2¦~ù‹<Ú,k¾LÐ' q¾ ½aY©¾ZÎÓŽëi®ÎTl÷úùÌ—å­ІrO`ŠH•Õ :¤Κ¦Ó 0¤¸ Æhyß }×±{Á|j‚u£ÿjü±8«ÐxUÍóDTæà¬È�;i€»xÑ‹Tè•K'<@=ò§–È tGˆ.ãïØvÌ„X{=Ó³{*±ˆ$%®Ðè™´0ª­¯|çLd…¹Ó»5CrÖ.Þ´¢=3¼)¼9¸5³¡(Ý´…¬9±. ëùÙJËÒR‰zô¾îí.ï5®0Åæ/§<[’E¥*qBM×eTê‹P¿V±š¥FF�¬÷�5J›³híùˆd3Kyœ)î­á�¹ã�a.ï Ë"-®¯¹}æÇ½ÇsfH%Vt0Ä‘Hô‘%×à¡aÑÜgüË*ŒœÙƒ.–oÎØA.”×SZ7â&a^aÙŒHÿTÓ˜¨óëLfÈï×ÕùŽ{q8ʪÍ8=nVêØ{;X„=ò¿4Pô_‘@%®Ý�¢`ÒØUnã€ûiævႚˆAÆ3¤ÁD–$ÞBw¼ôdAFŠoêTua‰P¥RºÒ9žç9eáÀvúC¢.uylö¡°2©Rå‚Ìp9‰˜$ñ\/¨rµàcµ×iboPů—Y;íKðxŠêU�À( <]¨~|.¨î¥”Mw_ÐWCÉD÷öŠ¥QÕÅqSØÿ4.ÖD2‰Ñ©\× C¤7³ªS¶úÝ$”ª|#r,ÓÂnÈ5 ¾㚪1ÏA­–k©9lÀ¬¢Ô²5ÄŹaJ+�9ÖPãéí ¶„Y#Ë*À¬rtÄMRÒèítÁ®¸ÓopxÿÛÒ.—Æçð{*” ÛŒÌ<©²KY 0~´‰Ö²ÕLÔ6*ÌU½ŸÉÇz¸.?gŽ'È Á¦ËªÜµ(HBe‘7�—¦MN_ÁU`ñtÉaçrôä$Kg;5"…£¸zkªž?˜ANªa20:¿a­§÷ÚtÓzßôF¥ ŽÎYdp�]$�Ø:<;Ùtšêl 8 ÏÛ ¡›¾[[ÿë¹]Ί¥iB›îãʼ¤>LR9ïå7)æ~®�û|&®y·ë å›âi"Õ­ó´•þwŠÊÕÌÔvVÕ8ªÂ‘®%’ç�–øâ– Œ*Æxéi-PRù+l-ÛvKÀj¶€ÒNßÒ“%ÜGê¼’Åï˜+1W‘/¼8ë°»¼OD1Œ•ñùÙX¹—=éDHÚš ÊáA'Ρòlð92"€¬"wt�mÀq.Eø>Ò}`þÌõï ìºÎ2tÂqÒÂ.ÙÀ+ÃMÎJI !|Ü„9€>¬fQiÒ"·Jär‘èÇv&mRº2W)ÏÁÚFw{ëb}<÷´apN,uŠ'W&RÒ©ÈÝb”-èïo‘ª>�§>gà[ñ^ˆ þ’n4‰PEcw…ßÈ“¶Jï¤Õd–¹-( ! ÈÆÅ!BݱÈy 2B+ïmPk½4I‰û‰ÔvÌÒ[Ã}RöÞ½‚åé´myŸá[™©u‚‘‰¥ ç ìQ@O‰ +±K�J#�Ï�Y44éõfBØ(ïÊ’ýÌ8¶çâ†Qåòþ’önËf.!q£F.�ú9M\óêl¿kYÝr`åA¹¤@@öÀÇ›ýýçøøxwwgçÕ`�¿'Gç¶¡){-àn–)õ\ñWQG¶ 7Ÿ�züpҨͫÛm‰vuXµ©p—�ήgöŠé #ž»Bšy'ȨÜÚ<ïZîCmžw×QžyÆ5I†ÿP®‘büDى܎n²ì'9Ë63|—ÙB�†wqŸÇÇ£!ùwCî³£6ur¢gS'‡Ú‚QÝêÆÉéê\;ÊJ¶ô¿€£m3ñu·MŠÒ–�[vºÕÿ^\oGFRšüTÒ`G›ÿP®xà0|r¶ú,tuÎÏ™ëiÎú 3~çÝJh|Áü·³vrá[aÖ—Í‹·BRWWÞYjmLÇ—pîO@ä”[·'oÛο5"¿—` £kÚw>|–ÙQì~ü+Ü¥´üÿ'ä¾Ü ¹–A ýAÿ³1zÜLxÈ_˜õ¼­AŽrÇx¯ì–ñ]{["¼›ƒmà›¼ Ä~šü¨¬M&�U,>®¦µ�jQ–¿d�=à¿då¯=Zo‘½ œ/j@'Î2Ùm‚³eHÏ h{|o‡f«ôçYŒå&X/ƒõª¶ÇýÖ˜¶)NWØØf1lÊ®<Õª´#jÃRØ‚åÙ€ži¶`}>ƒ6hƒ6 ‚g[¢íØ¡Ï ‡|¯£…»îz‚ÇøÓl6wVucоªVi£`Ø`·rX�T¥óµ‰ švCµ�3¤sÆ%hûÚ$ýOoœH�Ì%}7‡K²]òj‰ò59®€º �CÓM›œ6ð=(÷¸ÜT†ß¯xwﯨC_Ã`¯Â,ýï½pä]צ¥?q/>‘ÍÎ%ç_%Á½òßyüÇtUóx±Œ ? °ì›ükTôÄ\´Æ"1|ý½.«O ¶<iôÒWÓõ½Ù|d7«cÁÂÊ#¸m,þN‡d/á'îKï)ÿâ2ÿ®òÆ"ù/$åH°¬�Š[“#”í‘ùÁOò2¤ÿ¨²EZç JÆeß²Yñ*–½ô »ô5jâUM¬LBÛÞÚTͱlKlmøÕV!C*¼ä;›¾º*þË%ÂÙ/…#”ý˜ið�Èd¾!£ ;ñ1ÃßJßq>;úç�'gG‡éWÀ3ßpdßp>“}Ãù,ù0�³nøö…ø·tÒn‰×M“ïa”>r²å/çÇÉǨMµÏ€dé77Ú~˜ê¬æ;¹wß+ôUé‹&Á�ôÅ·JòZ÷6cZõ÷ÈGÜ“±·ÿ Áoí?hPV“Ò÷Þt&Ä{Ø$ÔÒM¥öXø¶T â«õ\‡±LšŽ÷‹t0ûšˆ¨kÉ”JT±‰t(hûЙ¶Ï¡íÃicž”`ŠîÑ!š¢C‰ qCò øÿù?PKÒV1],[µ—ÈJLimunify-security/assets/ui-app/assets/static/systemjs-conflict-patch-post.jsUT ëÆ«jëÆ«jux è‡�TMoÛ0 ½ûW½Ä»6(†b=l† vN›vÔÉ’'ÑIƒ!ÿ}´ü§M°nFÙE>>>r>‡åÁ–�K(´ÝH ©5¹V)A®^ vø«V3È­oK„JÔ>�¿9™º“Ÿ:U‘ˆæs¸'{mev²Ø+ÚÂý×ÀrÒO�¶Êÿh‹°Î0W×�;[wD´W&³{±Zù°õìW­!ÜAwÔ~/¢Yk°µƒu‹f $ eí ¶r‡ 9Ž$9ë�ͬчõ”ókà¦ÒÀ�‘%úJ¦x< è{€"bžØ¾(OÊŸJÂeˆ÷ÙÚŸ ¬½#‚�«S²NTÎ’¥C…"Ù/¢w›²Û¼6))k Nàwü8¤ÚøÆ”)�¡·z‡ñ5hBV•>Ä íS�®¨K4ä“DpL|rß’×iž®¸éžÈ©MMOÞ29™ÂäÃ$Y ÷:€¾Ë¶Ù:òñ±­Ö—M|à¹5amÕOåLŒíÏÎÄB[I°—*Î�“� ²\~,!þÞ øq™ˆhÈ­@zw_s˜Ù4Ð!ÒÚ9^[ÖDñ·Œ¸»»k²rþ×4;˜ÜžL¬SŪ—ð1ŠTñ¥Ã¦6íGÖƒgŸÆ"åfjzŽ»¶#b a¬ñ†FNŒ›ÔÏ}»2¹©Fnð¦×uÝp%B„§Í3¦Ô5 ­BG }‡q:ÒHkr;ÚiŽ'¯öF´�ê±8³9NÏ>f¼“ºFöÒæT î®å¿½S„€n.…ÙÒŠ*¤>¨ÈÖäß ¹Ì8„ˆWqu¯AÐÀ“GEa•º0& 5·aÆkÖÔ…ƒÞcfÍÈUEíäF³ªÏÚš5Ø>L{¯C›<.QšCÉUïkFÙ`*!SMå”H[›µÕ=‹xqÄ\®Õ•IÒuø;„Óí�õ#ËìÿÅ#øö»ôÆß+GÿTùèPKÒV1]Ïš¿0 Gimunify-security/assets/ui-app/assets/static/load-scripts-after-zone.jsUT ëÆ«jëÆ«jux 臕VQoÛ6~ϯàCQKI,{Ö‡i %f iŒÙÀ€…ËH'›‰Lj$•Ôsõß{$%™’“,Óƒ-QßÝ}w÷ñ¨Ñññ9&ä³Ð@2!IVêR)‹”jPDdD¯™"Ëá£Er€”hQ#ÓŠ<‚TLpœ?†„qBóœ9MÐþi Ò€H© µöhJKIB“5¾RªDÍ4HRÐä�®šèYÉm½‡dwDðÊA#R¯—…„Œ}ŸØÅDp¥‰J$+ô‚®9#©HÊ pýS‚ÜÎ!‡D çy0p¸AèÛ&¥”ˆžÛWhKI·Q&Å&Ø» £Œñ4°fæª_…äìSh„­�µ–ì®D†¢t¨¶JÃæ^ Ï·XÃÁ/ÿi‡��Ñpâeâ™·ïDº�haäx±fyÚÌÅ=T,¼vó|�§Í®~iûÛÙt9�Ç¿__-¯oãËåôfvûçâ&žõ»w8†Œ€ºÝr´žmÅ›OF#{rÖ:²çã«ÖM:YÝb¶Ún¢¾ïÊ#ìðŒ4îÏ@‚*�˜ã¦¹·¦8ƒž�·î þpäÌ­4"Ü:®ê7XuwôºgÓ왥¼÷têË"ìÏ™ <+ñ[`‹ãòyoiPõ†QÇÑ‹ë:ê æ ¡ŸGÍ"s»jÒ³p±ê*Ci1·w÷øe=ÀVÕáÍg‚�W(„Wsïúû‚˜¯èôÛ»�£\Õêx·c¢úæ©4ôâ×;k×$ö±Ï·êT°·Ë&íâkGñä¨ ÍïOPK ÒV1]8imunify-security/assets/ui-app/assets/static/other-root/UT ëÆ«jëÆ«jux è‡PKÒV1] ˆP.D†nimunify-security/assets/ui-app/assets/static/other-root/src_app_components_av_av_module_ts.41b373dc9d127c19.jsUT ëÆ«jëÆ«jux è‡ì<‹v›H²¿Â²“¬¸·Åð�dI>ÚìØÏÄ�‰óØlÆGƒ¡%1F $ÇãøßoU7 ÄC‚ؾ÷ì9×y¸iúQ]¯®ª.Z\†T£À±"q¿RwòE¼¥× Óºù9ô½…ÍhÐ|?¯FÛ_ûöåJ’ËpÖúòE kl.cËŸ/|�zQ86WøwîÛK—Ž£P¼"÷=m¯£ [¡$’Fÿ¼�ä E%Év‹’{cuÊ[ðîWú í¯Ì@ðFQ«×UTU"U¥³×•È;½ß—ˆ Å~o AÑ‚â^·§@ƒ#(êj_S$ò+Ž hŠ&ŠÝ=Ö`ÊŠƒ=7Àq5]Ý“HEMѵ�DN±ØSö ö–M¡@é5kªê0€�“é]M—ˆ‹ï÷]h°ÀÚþ ÃbÛÎ8Á¢ªô¡8Çe›°nlÞs„±£a·%WGÈg¸ˆN&ûŒëUá5Vşíô$r�-Öÿ‹ýnz­p(¨z¿�þªÎ°·º‡Øú€@¤Ðý+›HCPÿºªAí5b ß@îæUDá oýNG"?ã°}U ü„è*"ö »�>4¸Ä¶ƒ=i²ô¬Èñ=á#_ºW_/_¶Î¿ˆ¿-m¯Ëÿ§.�ç\FfüÕRˆèè=¥Ò(r¼iØž8ÔµE�ç:.œ…*£ÀôB׌¨Xh�í4"Îͨmͨus퉪Wµ>òlè IDC€óÓþ‚Ñ݉Ñ`á³i¯Z¢ã-–Ñ{'r©Xè�ãÙ*ƒàMÖ&ÏM÷Ö ¨<¥ LW©gû�á™î]è„¢$=¤8ü”Áaå"ìÅ·-—šÞrØdƒˆDÏŒø¯&#Þú�½hnŒåÒHx;j¡èÞ[®†‚qoù蚥ùŸ š9¡ì:õB dŽèÈ ¬ð8w Gô!„WŽÅ[s(&¦5J �qÐhx‚Go[ôÛ7Cʳ’íÛŠžx@ _Êv�ÈÅV3ùÀt Ö|1Ê÷¦Ç£‡‰ÂƒÞ÷ÑÝ‚ Š“â¢Ã!hFoÚ¶Öm®ˆM-7j]Ê-ª°„M�,3°¡¹™0t ®$SyE¾0B¼õM›µ9a}oâLÙ3É[™aüª½rBçÚ¥íÐ\Ñöõ2ŠÕˆ8ñƒù›À_.بV2Bf8¨‡ÑO�§i˵œÅÓ±WcÏœSö>÷ kˆxj¼ýd¼;_gg'go°‘N6D¥CU'“xBÊØ‰è¼Ø6™@Œß�ç°iXæÅƒL(n‚ž›$ò}7d�Q¦R;Å¢é‰DX^Ï�Çõ#.6,¼m¥ø)�Å7OØùàåØLÄè+Z æ†)?3Ñp&­šJÑvV"Q$Tw81¢_Û¢íô¼"v[Î8sV€+HæíÄóêR«;…>ýŠm{[ôÚ4eŠ*·âía" `{¤[G1¼î“�ÀçzÅVÒ«ÚJD4Ã;Ϫ„2…c;¸¨çóš80ŽÝA@×øß«½^U-YpŽXªÖxëÔkî� ¯r›çà‘„Ü�Àn�3�Ê &þv�ÞKpKBë““Æ´m� ‹©{äÈàÎ WU*±ß¯d·ì<ò¯Ì<%ÛpÉ «'éHƒÀ#ž.ü Ú±Ê_ij,ú`Œ·4`²DWªEë­8h¼h­S‡åbúñ?Ì “¸Y!ùý8 PÏbƒKû¹·¦½2ù;µQlÈ¡õ¶Þ‰!ãC¡õz¤"×eGb ùÛp@z„nØCɃ$;áq@éG`t ÍŠZø‘f©Nú[ô7ßd�܉ìš×Ô»´´¢ž*¢g$}`hÀOÆ6”O/LJo�Œ³mÓy±8-'-¬*j‰ŸÎß½¾xwty¹u1å»]Dz(l]°<ªæ¹h�]Æ ÐlO0`=#;¬ÂÏò@LÞÉcr,‘‹dô³é™ÿÑt›‘—\@³ØAFZ†ÅÆÕP}œpøëÄü�+3&L¶{¾‘²’ÿ ïåOä ~�gä«ì’¿à÷µ¼ wò/äù=ùY¶ÉOò©ÆyƒOLQ�KùtN>Ëêº @ T¼\X«¹—€E òP{,ľñbÏ¿0ZCÇüßÜÁì�jù“;˜:PgŒÎp¿ƒ ~ÀÚó« ÝíA¯\AYYëõ:Ò>×!‘1úöÜ4Kúd0ëuí«zƦi¶Õ3â½¹-¶MKyÀ5ˆh® j*˪a`!§nÀwXy Mωœ¿è;úËÀ¢W¼¢GæÛ]2�8±cÆeÛ§,8Q^ _ðñgoúopkFº.÷oGr“ùÒs&w°åœÀœ¦ [ëèojü–-†y0ö¼8á\>Z¡º;$*â5í»´“ë„õNaË3§ô8ðç%-éÁ›ž{‡3Ó›Ò°¨](‚ÂО.*�ÓŸº½b%P ü ³•¾“†¢È'{M‹þ]+Æ\ù‹· :e€§Ò’æ£ ÔÆ‹l‰›àJÌù(À 0ö°PÛ¥ŸXƒxX5HMù‹{ñ_íÊA4ʆ’ÆËÀ%^å«1°î>Ì¢ù~r¢YK”åE ¹jôû÷TögêxX\˜Ñ ý߇¡Í÷ÑÃïñÊ;{»:{ЙÁílÚÁÙ%ÀÈûâ5¸¯`c1ÑOõ' <¾üéüÓøäôÃÙÉñçñåÑá‡w'ï?�?\¼yg¼>_oŽ^¾¬Ý°u€tvFÿ–?G²ÃÚøxá.Ci‹˜C¿Ò.±Ö5G÷ñB†YŽR0¼wæcs5¼‡!<Û ìaná¬Õ+™µzUöŽ¿’ÓþÞÒuTdÃ{lD�¡Š�›>Â~ ––Ä«¸¤Ö2p¢»áÉ0Â0"9¶zû�DÎ~¾­c:ö{||õJ`Çÿ/Üñ7”M†›ŸEÑ"þø£“¢¸ž<¶oº†?¾BÝ4úáÞxxéù·€Zë†F#õ÷ýxÝTæòõÝö‚d¥ïƒee¶Ž•ž%þv.sÍð:Vïè¤F<Žòk~™À^£Ç¹ü.V¥E;°¬õÓ|5šŠ\ãˆOd>YÌ^íØŒ¸º"+‡Þþº¤Á]Eœ(7YÚ¦‰ 0#uˆ‘·1þÄv€pgм`¢¸ ­“±$ÔWtS%ÃÖ1q‚0Bcu"ð™+¢¥‹Ölè²èyݹôÌÄ-‹O:.ð£¼Å¼ã°¥8gŽ &1H a~L8LLŒ "Y˸˜E‚Â1äIåo(¦E¨-ÓaТ¬Z| þ2âd÷¶¡˜}‚V 6w€|nÝgk[嘷YG…Õ8(¼Ž §ȧ`H‹Ù‡›ÍŠV¤Ü4s‰¸%YÆ`™@„B<ƒhõM¦Q¶�¬ý.Z°¼¤r‡çŠ0þ€gñËØ›"oµ_žŸ^¼¸îóÁvB€çn(\ÃF³�U £ÙPPåÆÓžÆuñ 3Ù–Ì•áÙè †ö­Àaù1±eR½1–å4ƒ�rfápæ`Á­¨ÍÏj›ƒPvÚ¹¶ÿ�×6ÚæAõ©ÚÆJ®©G'N”ž"§žrÃcãF`€‚B ¾ŒCž™ñ¬@.zå@¤y&—qšÉs²®f¸Ü™c 98eBÙɺé^.˜²˜z'ë‰=ÉO §ÛN ã󰪳BŒŒ 3ǦÆêÐ ìVwŽcøì a4*9jøö­zàïo?cÄ3>Y^`×LŽFĸP׌Ñ<ã‚HÖB>×ål=ž\ˆ��£ŸGSÍ;x`«ŸxçMr|.—Nô=‘„æÐ îu›Ð4‹gÔ‹ììJaÇÝ-EbÂÃflIcàNÔ3Æ4‚›f…ÿPÓ}ïÌéÑW 4ššá³Æ4öîÆ°`Në�=+ Ýµ³§øË“ámó/ýI„‘žgf�h^O�ÁO>:£^è¬R9|Np@oj¦ÖH­u‚¿ýk›ø*¯£}ÐïêðJJ3žŠ1˜Ê¬§C—ò$',´ãÜGß �ËêÿX†¦œÆÃÀr(2&{·0mÌù Š ö_…ŽÎ2¦84Üß®„àÚÿÚ�¿X÷¤Ôí׃ÎòÝåÜc¯L×™â÷€îd¶¹L�æ ›† \€µ.€«w6¼ÚH¡eü¡e–ÁÅiÇbâ$²ŽÞKFÌÐÿïG‡ÇýããýtÕ3Óöoi0¿Ð‡ŠL¯Í–B„ø¯ÜÉRÕ\Õœ_Wò)k*Œú®co@á/L S�a¢AÜ¥ÒˆÏ.»QP�0Aذ´kÞ•¯&&�K'®)!†DîwAýMÀuGœ�Ùðù˜c9€ FzÔ(ù ]åšA¼ü ˹õÖ›�0V޽V9UÇ|è¬mº‰«J¦>§(·ÑeƒúL�¨ÝXºôpeͪpÇn³97 ` ¨9šj•¸î6Þ‹úŠR«>H�DÝ.n5!ÒK!ÒË JlèGl(•�§MÙ½ %\v¯†-�¹’ø­'¨´˜–Ò礞™ÿ ¬¾k1‡¦ä·=\…ÐQÊ·½~ÙÞ•a¨Í½‹�T½w•è�J4³j›Z~À?M­w2C­³[¸ÌU…ÚڅӪͼ„‘²Ó+©§ð†.ůÛ!îÄLʺV0žvhÒF2·Áý×' aä4†ÅH®Í »ø%fÚâh4Y•}ï$EK’vb?iÓõSbqù‡ù¿_§•ý,ßX_—±�©sf%ŸnËJNïE"q‚2X³�ûjÓ«’(ÉÞEÂÛÄ·#¥Y —4XÁûäž$ìÐõ—vRߘ”\ –TäoÐ�—xÚë/£õ=Ja–œÙê-—/Ùüò¢ØÅKÊ—Ëk¼â‚¤×�JÁ—-."o¡EÜ&å÷÷ÈxÙ±øSŽÌ «*I2ìø%Å5Í\)tk:Qzk“”½Ö ‡å×"°ûœŒ økȵ'ÞtŸNH9œù·©)¿�)Y¢ŒìÙ’^ÆÄÈkeÐW�_ä%ã¾ÁJ�¡HX<ØÌ›»3 Œ­›c?`—¥á½Q)Fãt†RËŸ_Ãöõh‚~ÿ’ÜPõómĤ£%™0y(e-/t7§Éí‚áU–€ss!µZ_˜\¥„KE1½ŒFoù-šh(o½JÆ¿}Åý-Üè¥) Ãéûö¼ü[h± U ¹6P°ñi@*¯0÷¡‹®™†·NdÍNq™ÆèŸÆ+VéO@•ˆÒ°TB7‘�evNs©Õ¡°·sb™0ø^±)1¾ÏŽŽ?Ev¿ÿÚþCGz6LÏOe,‚s’WØ-s.fr±0˜sδ~ùý4#�ÖR]ÝÅ.¾éI×]E¾ý¯ÇÛøÏ^ôŸ˜;lõ›ûþ…«ÿ‹ˆû?ÿøý¿ÿ§ÃþŠê¿Ï±ÿÿ'•=úþöÿ×ÿu»ýí_Û�þûùïþ\Éý¢Ö?ó£Ï¿Ü üŸöÿÇdÿþÑñÿ<ù‹dþl{ö/žçÿX§¶ÿðO|òg�°í�ïñ}Í—ÿ#÷aû�ÿþǪùùÓðß7òæþ·Lüó)ýŸÿZœÿÛûß› þ³£ÿá�ó?žõŸRã¿\õÿøÿÝ3‹üëF„þVù»ïôïþäö¿Üðßý§ÊÿæN}µO™ÿM¯/oóWãÙ+ Þæ†¿ÞÛ„ú¿.àù¯Yð5!þzû?Üó7ÿ´jÿZ¯‹·×0ÃߌÅßD×Tÿiý?ÿŸó÷›rýÿ°ÿÚ/ëµÎÿ÷�‘†ûoóÿçØþÿx÷Í?!å?áø_ûý9uºº©?ûý§ýOÙ¶êÿø»öÿHÿ£6·úïÛ’Þþ»ôýïxÙÿúwÎÇ«>Ÿ¿«þgopÿcçª?»‡’ÿƒ·®úûúç{Výý-Lè?ÜÁôÏöZúÏvÕÿgû)ý ›؇þŸ¤×?GÒÿ$­þ…øùÏUÎ VÿÙ�/oÿÄÉÿÇÿŠÿE§ÿ…Öþ3¡ñ/ÿŸ0üÿ£þu#ÍíÞ†¿]>¯�‰]«ÿkû�üÓ©Èß®NÅÿ 2ð¿µÉÈóÂàÿž‹æþ ñÞ¬ù¯–‚ûoÿ—ü?«*ÿ7¯Óûg]þ/ÿzŸÿÅ‹÷þDvýùÛòóÏ.ÛûÿÃ…wiþïšý—®Ãûë «uIÿýßìK÷ïþÍŸ}KÿýŸ óê¿ßá¼þ·¿ÿf,Šÿ=­Þ¨Î·ÿ°oÅÿFýïI¼æö·D Vùa>¾Â‚û‡ß¸Ç»rôQ'°d®1òùöO'É篩þùBX¸ÉϾzÿƽO…?ãûH5ú3÷ßCÅ ýÕóçaÞ‡èùÂdžLk‚èÕûü÷g}¾ä;TfÂPÓa®ò¿M þS{/™_Òó[ôû0 þgjÅó>äš­"BŸ ª¿‹Î™)yák›?ÒlÛÄ’ ¦ ?lÕš¬&ž$Ø�ŠÚYj¯Œ 14�âXqOF,ù”-þÆO"jz>üÃù· !@*C>!z°@ŸxWç�ôíÙ‡ù|¥ðoÿoïqöyíÏü£ •¹Ô;Ó¿ÿñþƒ}|½Œ–A6$�éB�‡£¦c?{B§ô¶0†ÊĦ¥h·ï²•ºcâL�Ÿï…½ö?C‘ƒÂ1ž,ÛKSY3DïáÔ>˜x;b¸Æ„ Ü¼ðû^û‰³õ—úaŽ2Þe¡âæ)hGÇ�ÅïÎl ½~ ±øõüD#Ãü*a�B¥â~¿f,ÛðgéZ}9ŽÓ¥ßXV+–ãÃÕ!c²Ä?…ý•a_]j(k&&_„mà�Ö´¾óÍè>Û½S’E;Å×s@Q”ÊŽ<}W!õ6ùì ²­cùõ½ò‹~F‹ ÏÉÖƒ¤Í7,EäwW?‘âÂmaíÂÕÜ'ÅrÙèEÔ‹³SauŸ¡ßä옼D*˜ÃìžTèMšŸ«Â¯b+÷>07ŸŒ6ÜÖCR¢ÂRż~غäl@M„âDÜמw™,/6uÂó0o†…¹vºôƒA‚_zB ϺøEhG¹­EM»`‘îb�¿Ûùì {±=[uÀ‡¨e¾¸Ÿ”†˜Wñ[‰úžZ?ŠÈ´€AL‚³qþ!AÔðš:Çt ù™Ûä‘€›Éìb`ÎF ì×Âá�КsDB8+$ïØsÖ�£’=?e�†ý9Íxm^™¤ùmRžPEßIÞå†D�v×�p²òª |–ÓT;¹c··Ÿlâç| ý„À:jÃúÓ¸Ú�Ñ@.–BLl©ÈÍ:§�ÿøib�›S´QÕ=sb æÃ9[8 ½Ža"Ç4զǘê}Œ4nΆ"úÚÏ EZ¤¤AÒVjf±¯OÀ¨@”MøgÛPË%¾…§¡H¥5UKcVXË4�{]wˆµáÅ•Ã�0‘D°—4+óqMÁ:™O^èMÈàjD‡ìHàVZ”^ÙÙ4Åi¸ûHf–@ÔѬðiäE%AÔáQðW‘߃ÅÔ­mØ:›;í\5Û$ –éñ{§xþÖØÂ- "P ’Ó¤§Æ„CꆠÏ“!T„M:‡'’+PÉìnÁž†6 H ¤êæùžz/³í[4î.ë¤ÖiB?L€-$¢kTºšÍÃâÔŸ.J3òqÒÒ@íU¬gd13â¼~|¢…ƒø:ðeýYÅ"AE@®mÝö®$€é‡Ë€¸8Ó‹&’-ñ€:§UxÊ¡°è°®:<Ñ'¨Ék�3�¸ó`²Kû¢«�`èÐèªaš+Xjxp mEØm•^`áÏpÞâàõ!îÇ•[\÷=¸RöâN-=Ú&=GAÖï©Bû…eN;YØ&9î*Ï 1w.%D[|„@HÖçGåé)aT‰ôÕY�l[Ú½v>‚ér*m[”ªQ Á‡°(_+­î þ¿è­ ‡'D쀾+îø&t�x#ÿ³DøúK*D�&ôwÛiíP1¥qíÙ§ÐX$l‰Æaµ?‘�öË *?§cR´‡þ°—�Ð�{{yp¶G5÷C‹‡…¦]=®è½CÈ=.7¡�û~Y«$Ö×ö<½¢2,y€¯íÙ°.§ÇÕâàäפp–W™àiá�f)5ç ç’HÞ“ŸÕ9 ,^hþ¥ªÚ @¸¸³+ÈšMVȡ ‹óæo‹AljÑzX[.m$;4ï¿þÿÉœˆ`XäP£ ÚŠÑz󯝆¹øIy‰GD`(À3™AÔb‡þ²f¥eí’ˆî+“ŠvÛ�ï/ÞuZ@Q4¨†è¾RðRÇâž•6}.öÔ%(ãX÷î¼[xo=àËâàó¨•Þ)f=YóÇJA;±åm¿·?·s÷ø ™év7qœ3ŸËÖ °D�[ó–ÙU;¾ÑècˆFtôÎÝÍ=ÈJsÏN•»ÊàX’I%É“Û :]Ýì£Íw{.'¹Ù„å—�u{x7N-Ù-ê.ÜcªC;PË­ UBüƲ�m{�R„Ô¡�§ î®÷"2>}íx‰VxqåËÞ€b74oûN‘»ŽÃÍ(dÒCQ¬õ´8$é½ýl!µkMÃ’ˆŸ�è~Gh-ðAGØöñªP¼òÉ`G¶ºˆyc_} 5d³è^›Í�¦e Gâù…ñ£ý „ƒSø¤} bÉ6œtO·´t‹‰kµÔéS:ÖÇ~–øAŸ×´F—µÈÚQJ2åḬ̀¾pÄ“k|”äâ©@>+Î+ȵİÑx03C_õü³tÔ&uÔ3G\C<ÂÙ9=bqàL÷ÅüeÅŒ‡M“ÍÏ–®mKßfk7+îÒåc¡`L¡Ã.™¦œv8É<§�‚&ó} åíûäü]KÌmݾmÛ°NÈmÒ¶ñK"&@[otlÎÏE-ûeÉ=%Ù,åÚI)Ý[~ÙI…ùÄýÊßYðb@99fú|Õ7¤ö_òV-F¢¸�üt¹Å,ÖTŠª] L†&«�¤GÏêgá_S“ÀÕ6f'`J£/«Š¡Çgj}Ié|&ö/öp ¿ @иzl!\œÍ½fcç:¢Nxl‹ß.\Rêëës¤÷‚Jf^Á ‘�UÐ_täšÉ:âkE$�W�¡üÚT€|/°¼Õ+Ã;€T¿°²2|ðlB>·=Ëy.e—pÁ ¨Â›}óèQåwÈ%#>$¿á(¿É¯ÐØw!ÐÍåí´ÀÎ� iìŒ]ü!èkã Eé�ð°*äÍ.-˜/ãì 9�ç½ Êñs‹Ø�á¢Ò´�pèõ–sÓ= ›WèÕòwefËýšC„ï¾óe™j_J$ý–�n‘j«ÊÿE³-‘öLjטcÇ`=YsÝv¹oÿqŽéj[[±m÷^bmžÝ'„‰l?•ÕUôp£qÚ,Ä woº{¹â ehNó°”ÈÁ”d.0øý,§_NP†ør+ù™ÀáIÍ‚>ýˆ«Mg••³“¥ƒ�k¤©)Â%ˆú�˜ª?Šó3\BG¤<ÞšÑÈ¥›…—äXx.7ƒgVŽy™UãüŠÓ ɘìÜ+„ZHB±ˆòØ—syT�0ù™ŒÐZPJ, s׊_±0̯+b¨âß“H¸¾R>ÒÃHGÃÃ[¸P- ~šj»„¤ÒÐç‡�b†TdS¡î¶C|àq\ó�/%<:oéëµ}pQWµ¼2Q£É=­Šf'ªZœ;‹þÕ5Ž]Y%Èì"¡r=¼!{¹Ói=]5øÙ%:]»ü¼Ž猪’>N"aÐCnªEÄîtꈧeÞA%Ñj®zÁ7–Ä•Vš~˜(§"ójŸ¯œ25Jü™˜ (0†ÆÒ79|Ñ`)7Ôø€|Ð[�ÍÙƒ¶4h’À€~ €  !#høgv#<3)-üä_ƒæ2üL°E˜£Œ‚Å��»»¾$÷¼ÆSù�þô£…LÆh¡&r+¨,>{õ¨òÌÄ¢Î+ùšú|£¶iÝ“3¸Ó¼·RéäåxÃö¬k{|�Cðp eÀN»¨˜¸‡šJ^@ÕwÚüo [Êì+»Çí:øà´m÷ú˜3,/k„bªó+ Šc22àº%¼B†…šwDˆùìì´Ÿ†=îô£|pøË �lLÖp†-„\aBOžNÖEð®�R Õã–‹TàèW6všw¬Süºò‰¡3P®“Yr†¼ûzäb  áB´�VŽBÓö¢ŽÛ7(¶‹)Îðl91½ýï -6¹Ë)h1�jÙIö)'¡ý‡A{©B{ÎB{íº>Ö³«�ú9§Tƒ×·ÝÂ3Û×ðÔ,}Q"Dz~—¸­X€ 뙈†f/ "i¨f~õ&¸ŽøÈö­¦sò$l+Þ‰fc„㲇'ò£/m_á^îã°Íñvè_ºÎfto½’:»Ÿw÷­„çô IÊžöš-ÓBB4Bç1רF§7;ÈìËÂ� #BçãÏ&b÷çRÍÁ'º”¨Á–püb6y²Ô#|PbÀ¾®uÅÐ �d7ooñµ•üóÎÏÊŽ¾Ž=’ž�[ÿøuçÍÉe„üÇ`Ÿu\èâüPfÖÇ›?{ïÃâÍ0ÑÙ~üý³î¯C±ø9Åóùhïw*~ö ˜ó �?ßWúÆhp–Zcû¯,É»9ÔÀ ¯œÅ(pyòåÆ µdÕä³Vn_�g¾Prûä3UL]þdبï[\%–»ì¨R™ ¬ÃDʯl\!ZJdb¼šÌLdW ÄÀ×�"wÎŒ–Ð…jkâ„lÁÊ„Xî†*ÙXãËðà U"_1æËÁV1®a°ÔzÞQ¥‘œi–B—¤¶gú4”ÔüPTVÛ“û®~:nîówP"^ÕùÔØ7Ïé­=4="øb†‘Õ êuÓkËGàD ­En^“’m'1B :–[ ¦«¾oëq9;×ätØ–®Œ²ëhÌã‹ü^÷(²üMÎP9ÿÁluø7¨ë—þ¹XWº;hi {m<¯cFx"ûm�sS%$†=×çÉ[ÂTZ6X÷h*OÉÚ]'k꼬üA£¼>Ï&Ió µ,ü™C”–“¿%M`Ò‡üAµÂø …?s‚›·BÑvøƒ@¨¥˜±9…úèÂ/R4ÒÅ·Á9¾[¦ØÜg£öÔÜVñ±AåÅÛÐ’·_x£±´Ñ?Lb3ªÚ¸§Ûü›´”Çô!~#†ÄxÓñ¯îöÓäXÿ•X›ÊóŠé} ‘VhYx1Û¯éÊ“ÆÍÅ3‡åÞ¬r»ÌލË@Kƒý+T&D\;Ô&�x4J.}à~õü“¯7μpõkš˜Sö4(ŒQX³…µï¿&‰¿†X0Añ´úøËöO5Í Ï™tq�5X‚ɬƒ;øvxîä@Í]¯Y+Y/Mâ‚ æ*¬jR†6а¨cJ4\ `àkB»Và7ѵ-É]„cÀâÚ„‚Pª^¾žç1 #ºÙëÍ©`æ¿x•(¢ˆöòŒ~GŸ “˜^ ¶;“½¹d�ÕhÚÊ£·ZàþOu¢Á[¤Í�áo@Hß3pï·‘ ³|?‚Yšl‚SV HûZV€‘ך­ÇvOõ•iNkûÞzjö.E[¹ ãXÙ‰án(ÉŠ� 6‹� Jøå�Ö¢»pz?”E�,ɧ±Þº‚Éã¸R#-%*Èš/7Ë[�*_sKÛºÆ*ÒeÐCŒ®þ“´¹Û;]1òU]íAUÚ×9n}pUóÃR[êK"v ^Vá¸(´/þwœ£=ü-‹<ÜÊ­oΉäH«�®miÈoR P™ý.µõ«wg€°ô—†ážGÐ Þ5¸ƒq·2Ô"?óûf7³+CD45y„!ý²MVñ[þðâ#þ˜ßC€”ì�°ê FáíGø`÷§š¿ËÀ ®í[Ô¨¤qÉ–žÄy<�,°S¡…­ôYHUpWÜ4(ž½ä“0b]…>ZV¨�„'\keGÔGyVÞû«Îþð@%µW¼û7Ì´wô{W‘pÁØ÷$¨€É‡çœJ¹ó)u݃ MˆÒ£„E+ø’Ö¾!eá‰ÁÇ·Óg-xôW‡®˜EÚ�9ÂÞÓrž. a1,S›†Ô9ÇÔÔåDÇh¤#Ö›…Ó‘¿aN¸t#¯²›­Ñy¶±KoAa�Äl¤iû,ŸÝ7"‰ÑD÷4}mZâ¤Ë/ }�Ž0ĵPYù{Tô,� ,*�~ø¨õ‹Y›cD–¨S¾2Êþ‚¨9áCÙÕ…­ë5“g؈}�‚•ή‹yQ¾Kgá+¨FÆ[w«t.y1ªÍ –0”F++C¢¶"«Ç‹xøpF1ÞW/$\N-ˆ=jý'él+�ñ… Óc¿°�›¬ó¨Ïà"‹{ªÏûHZ›¬”çù–>á»Ø‘¤dÇåÁ²2žçŽP�ðú%CšèʼnêëÆM¹Ü€ýt+`Ô4z+#HK yaÅT10×0|�–§yö¡/Ðoý4 ýËôwm"éC‚éâ9V¤'gHHÑ‹,øöûÞÌjTÓïòÓ[(úÊ$šöÚô8R¬~Œ› Lüwö€pEf’œ\"ø<¨!xÚfi"‘Àðýþ$þ©~à z»¥å*}¤?Ž.®¦””5Yr8M�äé�4‹C4Ф0*?îB~Ǹa ˆtM«-jiÚh}µhžŸ:Xé³l_úÃw]+AÝ¬Š¯¡Cyäõ?«>ì^o§#äý™Éßcçuõd ZEhÎfáaÞjñædAKè_¾ÌC2©ùç<:SÞß‘¤Œ·œ‹®Ïå†- ±ªàsU—C+Ô}> àqy1_úx¹L¨4ê TÁkîïËó ðßû¦šW%ã™wõýÉ#Ýìd¹E;!—‡tV^�áqùŠ�tÚÍ™>|ý|fÖ�v9 �4 ·û7Rœ ÐDaŸµßö/ç@#khú MECç“ µqŒ/ÐÐzîõjÓ4&Ú¿0ÓÈ€!E!cÎ�n˜–ôˆ³�DþøeŽPCÅ� ×Ë�k _,®ÇîUÅš¿GT‘çpÁ¡ÃÊ&RM+§\ÿ�'|1Ù,^ßO”"€Ù65Ú¹?$ØgC1ò 0`@pÂBnÍø‡_JÇnŸx‡“1Ô_µ9ßsŠ&¦ªÉäîDIíó1ƒ žîX@�lMEHåp’Œ­xp„Sœw±µ6HÂ&t$ћꃋ9Tó±ã“qºp- »j&“ÙÎ{=Éû¯›IÛ° Ý+¨!MÐo�ÖÝ]ùµ½l‰�òA²<%êº % ÛÐAóíøa74£ÔÊtD2¸6!´�¥Á °&áÑX®c�>0½ñ«Á`I=GlzútI,“&9ÖÄúŒ¾‹Ûœ×æÂX‡¬T®†Ÿ6¶ó'ǦèH§8â ‡ªd|“üw€Ž6rÍŒw‘ŠCý˜úã'X!ĉƯNë—5ãÏÉ�Ø%RKZP‘£9¤NSî/’† òA5ùg|•58ž�‹CóDz‚÷•úådžûÆÊUƒŒ•4š¶œùÇEãI0ˆ»èñAæ°n'¹ŸŒZÅ&™y³ | p'`£gbùi‚Þzמlê:õ•dY¨\›¡Ý*šÀ<‘­sí6jmZ㤮,þ€ò ûì3#Ø\ˆkÉ‹¹&-Ñ=€ÒYdKÃçgþL¤éðvô^DÍø‘¯ Ø–¶{Ea‡þâ›Dkó; >}8O¨ö[¯FîÃY忝¿á“ÿ}B_¼î×fæó/یˇØ+‰sÌÂ+/ëÊÄ'='¢ðdÏÈ>zU&x´¹ÅNO ¬ø#ëËõ^»ÊK%‰e GsÑýUcºº5¦´êR~¬cº­d:ùdLÑ€à®Ï =²ˆ¶%khhç¿|ÐC ÐĈúþòʺ‡ò?¨Sñ  Sz3œæÝ~S~ô‚à²d6‰\”�×»¶?A7^žõ9j'Ã1“�¥Éâ Mc;ÓÓ�eíbùš=0°A W‹‡GÑû‘†GJ®Ã¿ «þ ½ê6ñU�^¾ÔwòCýô‰ãS§|bcßíÚÔmë×Ü"°7bKFG¯¿{µ‚vš_�Þ˜{ÁØ`wXÉÈæ\éd ½%­kó»–ö�­…i_#eÑÚY ‡´‡Z”ÒÀÆ$;‚ ²�ñ_â{$œÄç‹ìÚg�ÞâÁÌš¯ë_/¯²Žè_J½$=ß&Ýð›ˆFmª«æÔÆ«ËhŠ]K«¢ŸÔô!Ô uzÙI¤Ë‚ÔÑç�™1Cjä}ê ¾lŸ)í·U-¸Ž>`J‹‘Èâ¢_}—Öœ„Ò2„èÏBþêc2;)í ‡Œu|�‘O6Ö\ßµw˜5üé¡¥‰®~)G~,¿Ö'@ŒŠ  œóöÃéÓp¸ýy�ÔÙm %˜éŒ¾v@™ ts�h¶‘š‚ˆìÓ¯¶9tryªGíà%Î_- ìB†?ð‡ÀLŽ2Ê¢öKÿÜt‘§K„à/lÿÀÏý�Í/�¹ >‹.¢k’ä°Ã‘­ð¬fmˆE¿Y )Ÿo\¡‰§plRà@F3³QUÀ½‡EêúÕ΋½bV­Þæý¡“!” >ú¸°l……ÔÉ8¸î|ŠmfÚ¤ŸÓ•䘆©ØÒMî"”–ss~¥¨´‰”Y“%½úãlXJ¸e~-Wù¯©õÂP9åéñe;~ˆ(ïJ8k%ŽY”üe‚»"%H»dÜxª•´¨´'¾ÝO4ùà²êÐÏ�š�+y g¥cè“oI½ˆ<÷�t=HCù†Ä2ƒ¬-]3t›ÊZ2D%f«¡ñsëaèï ‰§€(±F‡EÞ‹Øaã>… M Ž9a>vœ�€]ø6¥ò9ÜØ«b6"I+"*uÒ– üÄÊ—¦–g¿�ˆ\“;�Š™–�þ3¶™õW™Ÿ+W¾ ¤|T®ë¼b Ò¡Bn;»>)ôÉ߈«7óIºH½lužÓÊQ´P<ô£ @ HÏnו†B*­Ô\µÏ·FxWÙ˜2¦«�^4MÙýêô—æâ4.�¼Ô÷qEÎö3R3°ç_p Fò¤ô“Ôek»Ç¤¾‹[$c÷_‘±Øæc&Œ! ÄN0˜fõiçÑËýèý²Ï—O |¬yîý¸XA ÿLÃÚî<�®q™âP&”:æ¨Q‰öË#€ÍJc)Ü‹,Óç¨Émý¨ÚX'ÚÔÆÑ`ª×CðÙ $|ª3hCÑÀ×zƒ¥‚.g‰c,y™ö1J9| œ’¢«¿HÊW_‘«tÎIu²"<‰Ô£6ëä†PHÌdÙ¡•{±ÁðEâ+¶�øjNíg’z`ô¡,(9L°3ã¸b¡øà5‹�øÆìó-ù�þʹXØo™h€ºÀ8'¹Áà»å¥È�‹N5L¶;‹€›óƒ€ÔòÁ¾Tó+ŽØ™¨›„ù(Í-|¹§[§bd±•ðüBxaÄPtcxƒâû¸ŒSü~ò€‡šh,Ü¡ wé0Û•Y’1™¨ÁÑ e”ªrŒ“õÖOöi¼Š^:=Sý‰ÌšÃN�úÀýsQ8?Ê�ÿãùöÑ;¥ƒùÜWnä"Ðá­Ê5¿À¸ÄÇ”÷¿kÉ,è•R�– Oʳ>èЦ BàÎ4[ÿ|{ò¦4…ø¸4e–IÙ©ûˆèÙ}ŒŸŽÏûMUÖ÷GT4ÞÉVâ» ˆá ø|xhÛë¦ðdFf$Ôì¤ãˆ�…µÀ‹¦— ‹M—ÝÇÏU¦E÷«û5A5ÖI÷¯u^Ýû*AåéfÕ€_5´JwØæ9Ÿ,¤§Ý¢ȶÄîìëxè[ëÎMRJë=Më·¦´~fY ðºx4oy•=ÁÙ±^ó'¸˜u?º»×A*>\ª…ŸÏª±öä�©Ó'4EñT¶8ÔeNû�…ÿ³= ©Uº‡³{]W“äÔ‰9hÎÛ¨8K+Ÿ-•ŠãYp@hŒ$!¶=ŒóñÍ©«ªçAÝvD©hÓH�*/üK1ÇþÚA¿Ê‡(�ô �/ ¤•o9± DnÀª–ú` sVs­Ä´i…‘!kVFDzFÞbbñ# •͹uñ«dhl/À9¬’´ø�¿À Úœ¶•ûzÅ>˜ÅJüT*äÉWðåÍK¡Œ­€…¿«¸Â%IŠAèëÄ|jO–/MÛ‚„\‰ªjY ÔUŠ*–vÁ½’‹y–ZçIçèFä÷qøâ¢¤�v¶ÙA¨[¨ò¿a—F™–°S`_y fºãé€z >`Kè-Þw¿š‡@y®ˆÏ¨EÒæØS›•H8×#\â6¿ßáú6Yñá’wf�,ŸD{œ¥hWEÃÃmî�߇ð#“��ÉÐn ?«áÃçŽ3‰�?%ÛÚ«h>´Q:Ê0r�žû­ä…­À ~ú"]nÜqÚåëb:³v›6ý¶‘�3ÃŒ”~3�sûÌžY °C!&6à TB%–Oaœ¾AjÉx\Ï1ܲ7­UúK>ÙSIñÐówh¡Ì\–ßáX' «a_ШØå|^ðÈh4,&l³!žxH•ƒ?J^«™x Ï‘c`¶Ý?Âð7_‰ýKŬb“Ä~FG<½’wW±Tñá|ãœptSx܉H–û¢ò47�¤V”ô œ!]£˜ Ó`³³á×>T}t²XúûeÀ¬¤hÞ‘RûóáÏ|6•of&(¸üH:.ð¶jJW4òsC¼&,|¾ T˜´;$]‚Fy�©Ù„-IfðD¼ÚçÓÕWƒÆÑ‹“C&ÿ†,y�”f?Ìæ)aˈ³ÂÔ‡~Bé£aÇŸ_—´çS­¡7™m¾ªø}i³ôãfh´l=ç>Ãá�X àØ;ô…¥&8IepDÛ°½•w±‹åœqìrÊ=]¦z?ùþ@ j’M?t9w5]+ÆLq£b®‘'s/®Iê„TýXÑ^~FcÛƒy§�óž›eÊêeÑëËìÀ¸ѽb`× räZ#h‰SÝIþƸ¯#¦zðcÛÂEëPºH3+kû¡s·ÑBh·„4,¢OAÚ“á/¿Ÿ˜*ßQ&\Ä7»Ý &‚ãgbœ½šêYÚ®aˆ8\ò],¸%Šd< ¯Šº=O¡Xòc |ÔR 9uá˜qQÌ%³úhdà¿F"‹3ZŒŠx¢„¥Ìß° °vN@k°ù@¬ÍÚO0m€¸r¶~%n$Ì'^±î—îÛ7tâ¾°1AëB5ÿž.÷α6�. sH}­þ¹†]•kAåIt£WóÆK}¡Û•¬•1¬±ÆH15;zbÂÎäpC@;Ê“º“"¸ù Åz†šXyè]îz~þhÎÚÆ²bœoà¢!5æC¯r gm>«ƒªU‡–ót"3þ½¡ßUÆä¤)1À¾ýù…‰,À&úIàó±º(5WF{µt4Ç °Ü"ÿ „òj0èh*z}´>²€Éf~xrcÎNÒÕΙùyë €É:`[ÉŠÑDÓB¡ Z�pi:6wÎUÄýUÅíüô.G0nÕ�\xÕV$‘+î•Ê+…VS•Ký4œ\ÿjæþ)Ò�0OŠ_ H·JÊüçm*ý˜÷R ±O s÷ýá ã[‰ê,:\YR²j ¶V{ƘY8ã�kËc§œ‘ñ®�­è¶ƒæ›Ÿ¦†Æ‹`B¾g–,¿/KÒ‘Ø4« ¡{ 8Q§w¯Ã¶Æj�¯0–@ª}‡ Ì=æšà—ÚÉR85¶?åbõC  Øˆ13À(œëòIhJ7‡>C÷n¼Ž‚Aî;ÞFP§=0þ 33†e\îÈ @\øí ò£ý]³{…i2í\}ƒhAaˆ#Ëm|ÈRÞ+(Oe’‘¡Œ`s…+ü–´Gað—54Œæí3¡~fl4>xS‚Ïô tËV5g�³½+ôKŒXÈ /ÉzȆ2uŒo­¹«!S.’lÈã»7þ9•pnŸÂ{N~më\æo¾™¥9›ãÓÏš aÁœƒ Ô…ÏHt¡&\£Ýúµfè¥60@]¥Öü+îÇ”J8eN81Ç_~ ÑÖ"(rph?@�¶£ çE†^…q•Ù=®mxóÂ÷]¸G¿éjzô�·ÆƒE Þ¡òéW#½ÉV<¹&›Õ/TsV…ú½«™Â Ø�·]T¬àä4ã€ñFÔ/\К?5}Ƚ‘cÀ’d.ÚE‡T:Û¥ÏqÎ+uÁ É~¹)èFe„s.2TOkŽ4û%(v¬ =ü¥Y*AØècçVµÉÇÝ9‹;ŽÁ-G¸PœšZùªÒÛ T8Y…©~z’ÝÆ¤qö{ë7÷òBèúÌÊÈîÇ3‹ÃÀ¯q ÿfÇs¶ô*šˆ®1¾ÃƒXUexëkƒà©B\úÐgoB¦‚�H¤ËC–Jæº6u¯£7%vÍóƒšßLÅÎA‹5 :¿¸eO"óÞò¿GÊ€Þž<°œ‹S1t�“+h�eÇò}ú†x™.‰oe õþÊÍOKß‹!\9Ð?¢|¥¡Ãõ'eIÔ´šGK€¦�~?B…;~ÈÁ:ê-Z­y¿-»¨;•Àɾ"�¼ZºÑ";ÒÅæjçÐ9'î­æûo ‰øíûx™òoÂ_t„a?J&…µñUTŠsÃbœðµ Ë·â¥�-©n¥. ÑôtØégZ+9w_Œæí7ŠíHºs•1h?ÙîËÙ*£…@_(±†d¨Ç”½?¶dß>¤ÀQl{êÓ}ö»ËÊÃ'™\Ý„b M§_i~–õ+ÚÄö;˜â*é‹A$�W–=D´�´†��sõxê© Jy÷VÔç{•*¤ÿj"‰Ú öÕÀ!Ï>à†ŒÀöT3¿4˳¡â¬¦Q¸Ð Õ0 2ä-·‘ƒ+¦gÏÑçW?EeOû çÜÝ?I¿úäcMå²þb8™ZÇX©,qøGjð²Í«øþi½þ!Éó”!ëÒ]êîòÔ²!Aà†ª4bìð‰¶ü=|4œ›,ŸýµÁsÖSÙø+ùš7‘ C0T·5Ñõóʸ¼¨-“ ¯šxaž\Å4¤-¶-*ƒ›.ÖÙ(*­§Sׄµ¢ �´�*BM0 nõRn"•‹€=KŸðv´C†šrØòJLJ‘ êF§èßn„X.Özbýù gvô˜¶�Ðg5ÅΣ°IÏ¿Ü1ò•lhó=‚y3šøxçyËâÃŒ-ÀîóÀÃnÉ&Ä>¡5üX#çù˜ò`´BDFqþ&¡`…RA5kNûF„ÀÚã« ¡°8Çï;ÈO' ­ÿ£.íú·\Õ�ù",{«ouµÃ°Ù¬ˆ‘§å^„ÅP*oôW‘A $ ähˆvtL$Mò³–+-/nb  €hxcZ1t4B™¯KCëžDàý9íÎ ƒÑÇuð÷�a–¼í _žDQPÓE•B�Ñç)릘ZÆ%u€uZÀaÙ \4Ì| _&vÐð¯Ö|°Æœ�ͳÎf`;xÃEx‚?«@ ]o9¬‚Bv/yRþ¹§>‰n—8ѽk!PâìG†À�o&O¡‰;}ÁV¶žìðõ×`yq>ëWn`Ìò™‡SqÊäÌ�1øöÒíT£G=ƒ»ÏM/Ó``ˆ¹½$D%-«Ó—Ö½þÜß’™8äŸßQÚl,zLäçT¦{egÁhºüt²ìa}óZPt”§·ŒÙµ\Ìì'-“ʪd€îæ_``ׯ¨!pÙ-Ê̈%¡Þ‚í!¡·ñä%F„8 ˆ�G›ÄGBCËS ׉@?CH$Oi.µP‘š¤„j�Te@@À1‘³œ9žÃà‡:w!°ñæÖ¢OCÄ'^Ö *¢+†X×6NœÛºP{ÿÌ[ÄŸf½ž|ÊbÇñG]´çWñü0 Û/óêGk«¿2°:—U’)¶º¸9ÌdÊXh�%MœÜ'†ª“駙Ж+¯YM‰Ü úå—¢»áÒÏ&.#ÓŸ6üóy×06 Γi`ÆÖ3�;M +y7 0²hg2ä"å—®B¡2Ø*©×e§°ß¿º`Q­ÆÊu“ˆÍOr�æ÷¤lu¸åªm,Ì*¨TÅ7Úž�z¤Q�¼•PdlÄÈ­œyâû I<ŒœðýIqà÷‹Tª¾|óÿŒGtNNÎÁ»Qô >øÃ›\Áwãáaè±afï, ùÔãlêL{œ$=Pp¤¶Ñz®ä¿EÏ,föU@û&@ð¹I´ª…|à?Jó5âuT×ïéáw "²Î ‡£ËÎçÎß Žu‘yr³E—wÊ+žª_üØ;:›uu‚ÃM´�ûQÔ»àþ %N›Øpí2’ NSŸ¾ýþÒÂ}Žøõj€ðìèúÀÃ�*Œ…£(B®)‹ÆoW-µ&Wn7‡ô±A˜%–6[iÆZ^6„Ô³±Ž…1ëà4~¹�ª†ß«zk{ÖÅCËñ¨2…[‡Ph‹1XyüRø#ùkÁIV5+—£>Ì3ö¥çLnföqÏ%u¾!ÁaVBg¤éù’-‰’{ÉÌ <F²÷hË\d6GxÒl°€ý†È§óÔ�j°;pŠˆ �3.i’àÞôó¾nE“v)›¨(Jq.¨ú4o=(‡Û~µ‹v­¹nLsª \`~�"'ädè5ÉêO¾ì%º0Lâa([Þ €%J Ñ�X†KÒ<ò< �Ø4ˆ–Ωszpîo¥ÿÀ•€³8ÍDËÖím?ÕûÂp,ØÛ¼$¢�ñ™“ß Ù`Æú¾¢£2Ð'Ûñ5¸ÍØÇ¯C²jçF°­³Î%¿:ÅWH6¿k8qÚºîéh°²z`Áuжî¯7ô§W�žRîé¾´ÃCœ|^KµG×s[¤"ǹï„}¸.HÖðS‚Øpn×®¸]§-c°�=YÎ&bEí'Ñ÷V±ôCÂåG{ðØ2y½;U~e‡1üËJ¨ ~�pÕhHؤ ‰. JŒm°Ý –:†´7¢2Ä´Êj©‹]± @eüÃÎô¿>íï¼åyó“LÖ5“pâ[θ¾ å£|˜²¤o2 Ϭe£5„ó2ï#=c>™UÇlzÅRþ\GÇdRÐùVäð J" ù먂zþÚÄl†H‰QöýKö£r‰»*A¹ªäÖ«ß©³š˜_fŒ=¼(h~��\Ž—|åXŸŒí´.¾ÊÍÌSeTÕˆóÊ-î>—-Ì�&=», ‘ûí`—1\ÿ’9/>úõŒ#s6ÅzµÙK‚j²¬ÝÔ/χ¥ËUË…’h˜oH & üó I#JPM¤Q¤—!�áw o¼ï°2п´M¬~á¹YxfÕ:œ]…ÒRv0€*Æ@qf&ãnô@ó0‡Çðv°Oô:P 0ór \�´#8l#ýΰ žÿ¸Ú²OôA�*ÚÆ Zg¸ÂÖ×;ÇÛ$íuQÝqÔE?}ìŠ[˜„¡×¼�ÏD;§¬6Ú]ñRI6‡OEô »�eVÈ*ah )—çl•ÛÔTG– ’*<Ÿú·Ÿ+t­ô 1CR¥yß’eµdÐ9‘4¾¦n ÔÑPxшï�æˆ /iú(1ñ§9¾š�$ñŸ–ï¿,ÊëÊyyc>•‰ºë%À‹3 ZzqK²q”Õ¿ñîzõÁÌÑfç£-kãVòP4*ê´ÂÞV M®÷ VÄFo‘Uê›l„ü­éÌY"šq²âŒajº}ÀŠ™j¿ùæ^Q}ƒt”ÉQ4—E~«ÌmùnÅ«fö‹ßß4«¿ .éЉ/µŠ Ë…aUÍí•dDßÙ…�"4ÛÚÉg™ô,ba³&¹I\êOÁÆÞV)QÕF0?Nòݺœ6V›¨°ú±æ~�3`ö¾l©Ý¦m¨3¦æ%ýòAŒXÅÀ­`…÷„ÎQ€E�V\—Hró¸Y|K½ï0M�¬v�а½È÷Yÿ;ШžíÒ¡]!yGWKY£×7ŸtÑ[McÁ®0>eâ“ïN|>LCÒ*hžÐñã,}²X¶Ë‹,’Vè dÆÒUý"Cw[±x'S.St‹äFæÆÞý”�þ^¸fC–d4C‹Ã …>Ð2Eç˜}P»ºÝ$7#¸AÝ0�>'}-êg ¦½a’ýmØ:+#–+éS]øøá;Ep* h¥'YWKóP«]Eœ¦% Ùnæêûݸ8h¾ÜKÇíë!¥ÑÍ>™G¡æ�ÏIVRÕÅÌ¥-6:Ÿ{iY¦ËÍÞ÷Ò- TžÊ¾1 d4TóàÁËÕ�xÀš~“þr™ì [ÕÌÇQ‡m]Cù‰vW¢)y.Îg²ü_üBÐ�ñb;š:?c6.0€5/â­©�µšÉ~»×Ð ø ‘.ñ\�ë´Ð ‰4’.Úη<Ä5C¶y/{®P½éÆHF�çôç£†× ;âZ˧à†W®Î/ެܝˆƒghšc^qµªÀú) (Ü`×Τ÷AîØ ´! ¾±L“íÝÊ=()AìËãQ#’$ª3 EµýÅ+~ã»VªN£¹6Éý ²ÕrZ»4&r�˜U�”³Ö\Ó&q6r=7Ùc8�00Fù $zø¹~,ŽšÁ ÊVéš s³ íûàdAU×,ø)Sµ_‰›çÁ°cŽ˜m\>W`Ï×WuÖò'Ò®½SkN©o«a†Yø¸ušö‡ëûÔË̬?ÈæY5uf––ÙýO§&é Ÿƒÿ˜!}¢ê»¾²CÍ Óð¾S SâX@"ÝW2ÁÚH' ÊD5.´Å@ïÖÙÑâF땽nžÍÝ…×=æ¤âEÚº«º®v¬VéHÖúàŸ�Qnu1�ØÐFÍ~l… Ý¿µ­£b¤´4àƒ.˜µæóÊÈõdȦ¡SzP‰NHK8|�XÁïÇý5û,Vr_ö/L'¦ø7 Vë& atŒTT½ºò ªÍîîxØ9¹è:ð— ¹ó£�— î<Ó/Ú›!!ëNÙ�)KãÙŽ1·’ LÖcENli³çWhÖÀí³çsg˜Tó˜¢îá×»ÍÅ‘/YYr{[…Ñ4`lù!‰4)΄EAh“‡£Pû§À|6s±ßšÔ †•- ßÒÃ6€4ŽcÄÒsàVµÀ�NÞìo_wBÞÙ_¡(ØÏ p€öìDûÙôsó»àôR‘­L†�<ä óm| nõ¥ø¥‘)Â'3 ±ã[„<@ÉÌΛIU‚/âj²Ø´Ó×y,¤ÛâÓq®ßH?g ½ùùšÝjï¤âB„O�7e+)ˆúø²Ùb; E•\Ægr õLnãRÃv׿ fT½é,‡Š›i$Í7­ž¨_¥¸; ðmõª² ‹ÈÈGk¦¶ÅÓ_õöÖ‘:Ãê·°l°ÒY(ìÖ3.nR,áoÖ­µD�×oáú¬,æmÑ©}e¿qÝBvµÒy¸õ†Æ®ky¥d§b:ª}dz™S%˜î_‚d‹YÏÔW„‘8›À<¿±rF9ý޵ЬÓç®ìoñ‘'•saÏP¤}ÇOƒOld�×|,ßÀ›®Wà…r…l’ŸÇ^Jõû¶§ŽóÌ´p×ËÔÿ"ÑÅ^e®Ú à÷¿Üð¦ÈÇÓr(‡ÁÚ%?Q²çA‰›�Gú†WØ_£á�TˆWìÏó#Ù}hT¿*…Î-F‚ö"bA¨•y¬G‘½6€å ,}¸¦F¦GèÅŠ·c‘`a³Fxuó\þ…¸“)”ò¡yäÑ–QÃüó›Ž ÜRåNTóĤJ¼–[OpPE4nëKz[¶ÙKñ]ô|4?„1<7©¡¤O�î™ø=‡{ÌÉŽ€)\üZÛ+3:ÿ´ÝlN— =d’��ô…[<™|TÊ1½µwiÙ}f?1ñHK\).ñ5`ËcÁ±Ís,´a¹t0Ò#5 Ôëºqc2=ôDꔼç ÷¥CÄ=ÖVÊé‹ü#µA�Lbºä4±Û\&f�‡�†&nÿëJ5c¨YsI]|6_yè!´õüv¯¤¬nã%•`ÊøÏa�œúèé zå/œ¥å�º˜ĽðÉ%ûä-\¨VRË6‚è…�8ÍÜ¡Y±Éòœ… Âü³ðDz‹Ø,fà1:âøï>Fu7s ’yK¦Á{H-V©Š]ûOö E‘«QÖ6e3a�Ïê¦OU/0“XØY0=+Ð!`o¹þ}C©<¬­ucëX5Zè$Z�ž�ÊF‘–~“S—Ý1¬ûw+X¼ÊÚŠÈ™ò"àËîìö¦›•´”€”ƒ$ȘýÖ›\7|tPèÇFnÌÖhM)É ¤<Â^c¨9»‹°èa¬C0BXb¶È²T¯Q $PË¿j!‰¢4 •if¬sµW¨æZãÃæ¬UÈw<,>Ù\Õ§#>xS« œU_h¼£d˜ !dqE“Dc.)%‰‡x«Ë€¼‚rÕ' 4RìΰÂênäÔ—Å¥üŽkKVŸFûáÑPp±OÔädëÉ­*q>€]m«E½=ÇO¤=BÚö6[<îY�ó¨6×ûéÓÊ �úzüº Ž9mòŒ­ÿDƒ±X™¿l¢¶‹ñ=Å?i5◔݋Ì*zþ$úì7•¯eó“wÖÚ�‹ƒ2*W�¦ö8Ù*ˆƒ´vùSkRgÝÂOèÜ?$j!y ï¨Èq¤Ìñ“Úý‰¼�.µØ»Ð+ˆ²’D5lÂB«ÅÆÅ„‰Þ»Ç] ¾Œ³všïñ™0±+¤6%øÍr6–v*sc¸f6ÅØñè¿n ËYc!%íE ÎYrÑæW"Lù¶«gn�¯oÙ\ )jQõhe�â>½ñ:DcT¼ðȺdBôX|ûЇËtl§Å“‰ƒ»äþI>õ& ûŸR%ÔžÀv5ZÏ>¡¡íùsË¡BÇ÷�Æ¥jGí·ÐôÓ»ÇÛHÇ�&0A\T:få.)¶^i máS˜fUŒ~m_úÏ=^»Þº~ÜÍdGÌäÜmêsG¦›³qnN©p`×PH‡çwVß”_žvOÎî�ÿÞ£jmŸ÷ï®±ñ,¥÷MD\ûHñX¬í¯¸¶Žòb\ë«f©á ÍcÅ>’ö·õ»w}ú]²„9 ÊašX“¡|�ø3¤®˜¿ì­x6†8Ž©¢äØ¢ùKˆhéÖQ«£D~]\÷Ö™.!Yq:®©°Šàª\Áí|sZè—GñmØžœ¯Ÿ»R-jÇ e˜,¹�†ÏŽ;|=<¼·¸WJ€aB�šCEX›Ò|¨‹ÿf§Ø@± ¹·#ôœÙ}4åN¡�& ez:¥f#.ú(¸ðù,^ÑàEVX/Q~½Òç7þxÝ’z>·B¤ìþÊõðÊf2Jk´ƒ»üu»©»Î¿Ø æDiîÑ7_¥OÂÛ]ù‘/¿XGóß®³žŸ@;YÈ~Ö¸¥>ü¨É]�—ù3²…Sjž¬êhæÐ~Û¦+[Û Ün §yDçø˜`8C+Ô@G,5(ÍŠH ³ì��~ùÔÜÐŽ [Ò·¢ žýY‡ÎDãœíÇw´W� f3Ѧ…\ûZ3HrI Ô¥žH6ꆪbÁôJ9HQú‡h~Ê ­¯ÓI׿{°ÜñÆï€a<{öˆYH~‰õÓP©òE™Y�¤;J‡ûç|6¶Á‰ÆµS³J¸Å o‡¾�ÇïŽ\Ã)WP­�?Q£õáiŸ!¨ï) }˜zbãD‘o´/5Õ�¨H^x·øê«|k/¤©T|S`Úm¶ÐôéPU§1{ðÀ¥ë& “£Pwc‡¦f‚Ý-úAjÌŠgB•]º£[HRãv¤®³Ø·™>"„ÐnÂ4£ò—å^ãdúsk¿;ÎÊ2¯ëzHø³`¤®´œ„›Ú‡€SH«Ëth誗-ÅèM+°”¼�‡Æ¡á¦x&ü „4.9¤èéU[/un\ËWn"Iðì+EÙPYÎÄù+¯{$Ëd,?˸�/xXE»Œi\pK;/ âõ��3�ÝŽ¢kä£#ABN¢cˆUæºíÍ{AKãžCNmfOý.ž”/’"#˜øñB�ŠY NÍúAû£¨ýe?¹Xý„h†á/]“ç»Ú!^ÖbÚ€L:~Ÿt}ü8U€‰›ƒá×?€œæÎ?l¯Ä�XÅñ:Rð”}xúCÒµ��âñDÑ™BtÁÆ{É >«ÏmÖ�`F¢™:Y*#犢¿,lUX�wä„mT¢š×i}}U»< Nõèh?P±J€ÒAÛÜ/cgIê²± D" ö(íëåÓÞŒ>3ùh)ð6lšÀF£ ŧÿ›CM|0ÞŒ ¦U|U¸ »Ó�Ë 5’•̶áÁ›'ÉIÇPCÓ¥­}rúZ¯ ˜™<ÅH²Df&’Á‡K“–îàu¯(­Åwý^s‚¶î¤»­Ä¡þ@CV)ä®Ú^Ïô‰U�G¤@þ � ƒµ¯7õâ¯v‹ïÞ$+d°îHA?e{=˜TOþÚé¸Ó>T‘?TH~£@_âø©>-)BW(ÛÊ?Ã&ý‚ÏG!ûOÿzïC /þæsìÞ”“8—Q¸õ*þÅG‚¼ÂÖ¯%²Ø|ÇœYZ^ §.Vm*½ú“{Îxõíä2ÙŸ�ƒhØ­›vtšÄGæ€AãT€[µFTX’€()”»8Ømù µ´fá˜l{v\ã™e”cË UZ ʵ8E¢:d§†ÕÀ�Émaü–p�9Èu¡îh .ró¢´“p,›šxŒ›¾Õû˜�,²Ë8ß9ì‹ri$q#T¬,VøòT¢=µiõ¤Ê®úpYª¹ëÊ~íÐ0g¤ivNN·6 C6£¨ÎwÛ)Ž8Nd8«×GB½_WÝÜ#ë õÅ'3lN¿D<s½sgd®,óž¤G†Û*êX×Ö¯›÷2³²ë§ä­Ð‚®oŒî¤ñ×Jî3(“bŬù\qB�?wAÒèg�-îVeÚnúSäÒôÓ*ãHÈÐ1Ì+�¶Þ]L ²oïÕ®Ó¹=´÷ öŒ’®L4w[FuŞæ±r w†¹j& C6x¡òØ™hº$ì 럖ÌIï¾É�5Üå2Cöp?”²vO¾gÊbSíÊïqi¸·šǾv¼m…àèíä##tm‡ÞVœ½ê Zö/ù$²Çßæ%|-¿¯*2ÄCÄs©�uÃ1ð¿þœ¹T‡#…‚ E‚ºáÃÒ•óU½‡ëXú£ËĆ.ÇØÆ§ÏÁ†FFd÷ýa‚t¦˜Ó<¢�P_!ÏBu5ßœ rB¹@�$Çïdƒ3=·ÕàR:üD…˜ÍsÁbMjòC¿)*…U½Ò=„âIÆ®üë‹ÊŠq vŒ@ÀÑM¾²éKWeo‘� U ë•4û‡˜ý%=|Æ xÜp¿¢í*ÎÈ s°ÚÊäέ ? Þ�oõÅ«ï­u �:Sѵ rG= óƉkèmBG{÷y¦UÒ¾sMrHòþ£3F  õ¥¶Hd¼¼|p–¼ù(Ò8ìî›zpë_•Á‡Æó¢02ÜÕJ¼�_•]J•óÁ-ûÌÉ·3î·îZß:'eà”×áVqó‰tJï½€ÃgÑŒ±¡‘QÜÏínÝ—SUïø76˹-ñGR­!úãC�MvÍÞš½-ºgç$^ÇC�̾˳nú¦U;ó&Ħ½Û˜ãë—m}¡‘ aöÆ» ªß½¥¿7­©°Ñÿä"¿4î‚ è­W×of—ø ¢t�` IB… }¯üH³­Ð&oÈ“1�ò½´BŽÉÌ„áNMnˇuðA‹ðľ‘¾Œð‡„�ýìîDȤ¡cïÚ~ää~妫Žÿ‚*Ô(–C‹ÜX÷ÝØásѸ02·@'ŽÒ³$k�Ho€4êBÈ8TõÀ}µy ºå¯9ã§3*µ¬ýï•dßþx‚̉ÏCÆêC<1-3ý—ágºªe�æX>õoƒÁuèÅÀòȲ3q»ô+ûÄ´½Kˆ¡yø´3®Œªö[k;)âªRèBãýÍ~ª+Y.2OŒ m¾äcµ”} Æ6ô@sé®ñY#vÌÝ]¨>’™ÛÓŸ­Ýx=LO\ˆ0¾VÎÜRÑ;¡?&³)ÏX�Ãã§(ÄÍï Þg^w½áWÊÉ Òµ÷5ßð›ô©\¹Ü¼ëo¥ùBPd? £kø¾¯£……óóÁj d�â LxZb\Qò¬I ãÁ—`ÉàK:Q{d¡ŸØËþ&(‹lIG0> '8ãù²AH,oÁH8—Ë�_‘þZðWÛ>Γ&^5Њ’Ï` ú63ý„¶:˜Ž2ž?Ó.N>W¦¼^,!9Ì!Ã÷@'³¿%n³§‰¸e�¬ú£³ü{pÆ^)¸5z½ü+ô��@¼åµð›sF€¦FK�ðÕë¹÷å ÌüqæÑ¯Éqžl �§’Ï›Oªc� � gZAP'ÞÐU"ЭqM¬6Aúˆ–?ë1ñ•=º¦€×5¨S•¦×ÚÃÄà?›eíamßÕ-l›ü鵑ž$­ñŒl¥)Ô>rõGR?j ïëŽ+†ÌǾ²s"™�·Eg^h«¦áÒw÷-˜Ž ÚlµÔ­êj�·¦[ä<¿+'0QuyPѳŽ…µ"¤¾þƽN„ú8ã#Z7•‚j(,�`DŸ@o훫†e¨9¢^¸¿á•ÒCb¦:ð©‹ «Î¹ªÄ‚3ð!¸EЮ�¤´Âê*Ëàuýô� ädЋ©šh2YtÁ{o»xš›�oç¿ t£ ›gë«üôùČ̃?Š^:=Üë’W$Ÿö<ÆWë¶E!;^ìù™f˜  Ö�(…²Ñ1€óÌ¥n¢1|¥çüª;h‘ä°: M�9©÷Ð�gõ!áÏ€0 ùÔQ#cŽy¯¤4?øÉ¬äè34BФ8’IÔŒææjP›FV_{F%€ö[ËËož©’Ž­ÏŒÜêêe0†ƒ#ï‰kEœÐˆëû†UçE½>Pu�Ñ�´3•À…ÑW�aÙ¯ãašòñu¨¼FÓŒ¢„òÌëg¾+7Ô·œY>»ØRöJŽ›»í¦“œùŒƒKªÄGk§“¸üÕ?AÝ}Jöõ–!§öåçŽ ôhˆþ’.Úº“Q{ŠM¤èâ¥Q™ŽyÁId0.æWÈ&®juaiî +]˜¾ÂÝÑ £wck‘' a1,'år¢|5>¸s%�‰¬,µ¹¹Jï=Š´©žVÊg{•@¢p†cj,Ú9×Qµ3Î ïÏ –÷$H'ðÄ}•—œ¨úÙ§š˜7SÚ6|EŽÓ ¤ÅØð]z|Ÿ²@•Ç×Ü"Zf®H7ºö«q&}�èƒè•ë­˜æz Œ0ØJ_Vvø<ð�0X¶§é³mÖk/æù²HÃÞ´m¢Ý±ž9ðH×4Œ� ÂR/»ŸZµš‚5TnD&^q 4&íÃ�uÚÖgÇÜË q±¬fÐöúò†ÌS ˜Òv«DLåèoÃÝ$ó)mU»ˆ¯Í €îÁ|7wÀ{Í¿¤ëˆà©1^S å«tÔˤRLx�Žãs&S_ÁËK�¥óxð–—(®±)[0Wžè‡ø;¥Þð%ûoâ±iÿò62�šˆ—ÃÌ@—aJ2L)y!&º%›s~J‰U[&ßݬ �ó ½9&¿%qK¼—§ÐrZüK v›93W, ®ÖHÁöÁÓ#1'§nè¥ol#þù7Y5þyñãNV߃ë'‡Xê›íŸÿ¦3¹ÎQ µû3Öæ‘ôÕÿ7Ù-ŽAêÕÍ^%¬ ˜¹{)è›è�ðèî^€.ÁPÅŸc=ðÎ äp krö þB„ M_-ÊÐ9>,¿Ë¨õ*ÂEël™ºVDÉÓkï”g­Íxʹ^/þ£Ë9]ýs¦°n¨I!µ‹3rL _Ç›Ût°r±�&"[Wl \ó_ êÇò·—x¹~ð GOΫÁF •Šö 'ÜD7PiO>}ˆP8)JõnŽÏÊ�!É_zRu«aÇ'ü!_Ô˜«ó®e'BÛ5Â3Œ ýê {¤¸Ý.-±tŠÈ(²QŽü®È)ˆkCëÃS ­w|ê�Ê’ú„¡i|?ýW½“ÖXÇ·N™.Uíͧ‡< ÜmÍdsvpÒ1¿@ß´´ ÓCË€ûØõvÉMdë, ÖP>SªÊb[SrDÍÙW´Ô³r×E z¢-‚–Áð"æq[†¤þûõRò¸´Ÿ�=ýÁxã!AÑÞ`úE/oZ¿žY«¤ÏÌÍlh‚î’;“xÛëçŪ�¡½‡^^Rb¡iþø*)>ÿùôUÚü�]Û�ì;ŠõÇ�–eä¼´##[d@úðîŽ×§UÙQBJèɰÍâûÓš ÐÀçŸYe?“2Ì Ö7ÇíµÍ‡èe�ô½¥îÓU XÌX´3=x@Ïët¹ G}ÇòøÀ¥Tx棭>Ô•Q­FBâÝŸFbèï”_�ý~oÁÁ”ÿEáð>º"�Wóp†KZõ)ôÆA6+rá½¹¤ÆÆˆÏŠC7_“ø²xºdŠà½ôTÅŸ ~z­Î•õö†5±SÆÿZ>{Š)9" 6VÉUà‰nï*§;·Iˆ¿;é¢ÊŸP¶Úˆà3»ÅXP�üéÚvÀ˜”¨5@¡îCžÏl`è, ?£�Šd;v˜íÞZIä9 Ø: ÃûÏ|ÜiH ˜¶çÀ‘vÁf XX-ቾCçÏl�.oûgp|À/¹áìk<—ˆc ¯dÆàJ#ýþ O±F×b››ïø ãÞYcï\nÑó ¤Ïe‘�¢‰‰y=!ï›Óø²dF›¯dÿÔ¸g硈?3¢PšÉíÞˆg;tZ>å1V¢/SKW0­äò) â2·M�-¬vÈü~÷cF]áûäþ\…Õ�Ï̼š¿€ú<ýáþ” ‡ÍÏÞ�úÆ&YwvCae7|¸Ó«XqMž7¡] +Þ�=��»÷8‰…F¸3�“ ¹<ŸY‡Æ-~Ð�¨Wtý±SÕt2‹àŠÙõ]XÆË³‰â¶{E e­éõ“¼Y¹Š/2L$Ö`Žñk!mäËU£à‚/û¢²ÃKƒK}>¼æ7Ú”ÇyI%|±½¥ƒ{úá·‚Žáôhun½ßclaÑÀbO¢}�¾Ïýo¾æ±à˜¤mÎÖÄWôÙkl6MÏèŒ~¤›žžôŠ"Üô)÷²à�ìh¢õ�FÜhÄ›š„2ø×)ÙÓäɧÔ^áS#ƒgU²÷WWT?‰§~g�Pú&Ö;zDIìuÏ͹»‚gM?,Y(VûBYÊLÒ}N=®ö6RöYÔjNW=Ýã´:š3îÒ €^ÙJ÷|Ô-Ѳ7Zæ±;3rÁ¨¯|@ÑIúÓ´ `¡š„Àº;øò×�ªÜ ÆP0Ù‹6unLMt…Î'q“¥Ù•Œ¤ŒÆÈüÁ¤&_]|¦®ƒÚˆ8ØpÏÉ×l#ºæ`xrÞ}4‹EÆè­ÝÄðj”cö0,Ïs±0‚#µ¹¥…ÐÃÉOÛ==à+@¾ *L!Å’‡q”~?†Ð�¿G7 É ~æJüh�›ƒÙ3dOpÍG°øÜXdpŠT@©´^ƒqXG[¦'/Whî¾QH×ñ§ø­nAßïPT$Á¶A„ö]"ðY 4ð�¾bZÅo´kÀ6cò»—Z<¤¬ ÷‡–úL¢ÒÃ¥lGt0—<†b² '@I[õ²ÅRQÂÓþ:H8×hñÒBñ.„ŽS ò?ÃNælìM ã ½º“t­p¾ƒÙÇo™â¥Ìõ/ï‰&\;;âÃÀ(Ú¾•Ã'’ïÆjÇ¥qbPL779ƒŽýs VÃáÏÄí�ôÁvŒ/࣑°EÔÕüøjÆØ[3%e€i,²É¤èÉæŸ e›PO9mDŠN4¿OÓó+¬µ°‰Ã'‡ÓoÙðU÷–|Åó7ÀàÊï22#5M¿–�댙]iåk5ñü¦&Èh mÕ–º)]܆ҩƒ�Úo^Ôz¼Õ’Y¼í±l¹„yš(÷çÿ·^Ølå]²¤‚rôeíú*e•Å g¦š‹Òôæš/(k²µ$¥ÌæP—'(Uñüî#‹Ì�9©ú•/[&!ˆxÈ“YÊ]²Ò¡1€FM#®O| =�éuùø‘øêr£P_Ñ´<| Ë+¨ÐÔ�g9DÒHÃy Àr¶0z>º®Ó<,ƒ�/_Û&¦|µ}>ð0@¨ƒ…§iF>µâO�ÕTæ¾’8–\m×5wIBrâòöUû×~q¯”*\ØHœ¿Ðen J¯`yOù �øX�zÀ²Ó›7_œxŽ ºÕLæEžq\gDâ<ÖC�-yq�:Ûfõ”£TØï+FZèôlžŽðqÙÈdš¤×`Ñ;5ªªÌQÛÚ»;¨2%•š|ËYáÒ<@ÈÀ-Æ~�F³û6Þh u *1`žØ¡ˆÔGP˜?ä@$±†6�’¨H¢ L‚á?w˹”‚·ÖiF˜O0xí&ç5¯„¦}J@•Šcj”ôX ‹Ä¦«9­éaÖ¢ä4U ¥é2b~óî7edº–XËhQf¿ E`ÜH#ÿK…K­l4€º—S¹ ¹YÖy„ƒƒàV0ÒØ{I)ÄæS‡T˜ÒRªd(;7¸%æ[±tŒb/­·„LÍýΟöÛ��HÙ–6P9/þ ëýë?ر¤P™°±„Yš›´�ÌŽ� †ˆäÖ¯{Úî6§$㡪!£Î%„ XÒ±Üî*¯‰?¤Wõ扵/$Ñõë“’õÄŸ¯ sÐ?[Í’@KÖð‹IƒŒÏ"ˆÂØÏóv® nBJ‚j¶‹€“Hk¡Qà´³ºðΑ¢Ûä¸/¹dô¸#uá­²@v.“Ò†'»èË ‚ºDg!WmÙ÷A¤™®Õ,oìIùaþ«8çyd…Ež´Š—[[Z Ž\õãÒŠî彉‚)0ª9�Û7b*ÓÙñ{/„âõQûÛ}rØF4äú¢Ø%E춪K·áh箳6ýš þ}«óGQ‰_9+˜CÄàÈ11ƒƒ¶#aú*,cµ€Ï`Òé äuHØ´ЬÐãrzñ¹>áòú°®/ OJ.Èôc[û”‡ü†X1š_~ÜÄ6Æ‘»_‚ðÐkˆØÖ?"hZ>–ȯ¡¤g´JBJ‘qÌ£ìt|׊ Y×45¯â݆|Œ�/YüÞÔÕ¹Ò� dÆGlÖÔ ¦FYðÐUxØÃÚÄ3Äé98ãbÉòõa“ÜÇ;�g™¿_*™šöK!ÇZ�®7{»¿ñ7%AQû÷𫃳ϛDýd§�•àùp{5€*¸ŠTýBN’›²Ž3[†á¦AòÓk(ñ%�tWÄ*›F"î‰4”Vù!UKO~ÉùŽK3‹_¦—1u0¶_º!öQL•9Ú"+ /·~s¸ò™Üõ:ìú³"š€P<ÐSâÇy˜•ëG’Dª )¢.ÃiHÏò—]anj_Õ¼à‚ÞºÑþ«­à¥gõu£OFãoÚ¦{8ëU.ì:ï¿i:×7œª9Ð}L�*ÀÅ‹)DzÀ³|ñþ€œîȵéö'¶“‰Ù”x�1¡Ì±èjŽvñc&C¤;œŽ¤–à+d€2®á>4%¼ëD_CšÐ¬Ÿ¬å·X |šˆ œ»þÎ&ÁšM‘&-÷ø(M�ï§§�³þÿqtkŠQ} ä´�œ3숒s~ú¡g1ŸÓ¶"BÝÿžÓJU‰™(B$G°à+¡÷©q–ЈRØs8ýÃGO¬ö �«˜6ç? ëí¬ ¬¦‰²�EÑ»¸·NPõ¤TJfú§î­,»ÈrÔvé—Œh)þ7Ü{÷³€‚ÌuûÓ$‰’GÉ-®é‘‚ü‡ý[¾n ²!Œ \R çwÒ‘�ºîpiÄÌ�™Oþ wᆗñ¦‹.\ГeçyÍ—_Ì^ØZ¦+~9Þż´¹‡Úvົ�ýÌýpu\ÝÆ�îwñbœ{ʲ;A“v7Œï¯÷î]Héé<³ÃÂh¶ëhÖ\yÌ‹ZŽ›1†«ê^„l'‡ÚDÝ+œ3`Yü— _Õ‰>ÎÑ„‘ªÁ¡~�áD­x[”ªÛ 7³d7ÝÏñRló)béZ ÷Úü=ˆœ-RQVD2ô±…Öã9œ~d«Aox3/Ùûç æº½ "I®‘ëJ_>a•¤¶“åŸ(õ•ð†í=_޲Ji"V¹Êe‰‚³—òNŠ™TÒt Bu×2gY<®x)ùà²6LÅÜÄñ‹á�ıվl=t fQÚO³aø ÁŠ’èJ5D,¸#?ˆ!ø·;|aʦ £wΟ�;vÕýìRù 7ö!ßäú|µŸ¬t'd.À(33ÃÏ—>gVñ¤Iqá£ÕºXÅ�="[æoT�;yê’vÓÑwÄï*Þd ›ŽÖÔ�0†¼Ô??‚“[͉Ï~aõmØ íS&×àÎÈYê—Ñ+—8yuQÙ2ƒ=£÷�êØÂÚ7v¢Ò dÉs:Ü™•Pòù³•ÍGO… ýúN4ÑVP¬\̸Å9(›n;Á�Œ £ñ)äû-ùYä`ÕÆcþR&¤¨�u¥‡Ú>ÁÃ+txœ��€*Új¼)I€r-Äß¶BZ…ñÙ|Þ.WØÀWò3S|K->d?n(9�ÇY_"ñºŸå�&£§[¢Üцۣ£´Ã¾õº¦üˆN”µÀÅ2_:ÕÜ�Ê”3zÑ8}m2×”)6ät?çô¹Lo°¡èœÝÌÄšU=Ú?ç$ÃX&ÕÅ@¯çÖÉ»øUùÑkK±`χ@+ldEÉtGœµe{*ëÑŠ €�ä–O�ÇQÛîõ²f¡¢Dv6{=7:«u�sai‡”W„¦×¿qzźbb#º4#B^¢ ÿBi^·B¦S÷®çZJ3& ]øh�›‚¼Ý»¿oÆ€ÕY´‰Ðpç+ª�/gâko¡q8Gxô*˜sX%DE%o€¹�69ß¹§ >q½ Xz_Þ(zÝÁ}é¿ìÙ̆-Ý‹Õ_Úà1lÜzu#ódïatG‘ÿô�ÌÝ¡"h…Ž+kRËÍ»´Î=%0àœÄ5×í§ýjÍ7¹ËUm•25c¾qÓ‘·³ð=‘f.ÚH˜ÈÌKslB ²tÄ/X#‰Ž}ÏõÖ* ïØ:¨™3 ‡ä��Ú~K!À ¹Ç;ŽYæO¶?; ’Q"±ù³Ú/2,D‘K‡^¬Oø{° ¦‘6%EÑé'1}Í´- ÑRÚ[ä*`Åòg*ùXï%TKxÔÅš T$ZÖ|iÚîš’ÌŽ#oèðcÊô/ÕüN½~4g!ó¹R%€b ÐP‡vÙã¡2þZèåš.¬’øÜ­öñËxKÌ!¿tï±)–ÞV×·%\׌€ÄŒú7\¸¢°FŸêGwE®Ð¥W©º, ?•‚_Su­Ô…“,E´ |�S|Q̪âCOÀSõ†w$oƒ�ÇÇÒæ4˜v­©ãŽ:‹ 9« ‘ æNŒÚs ˆ×Î'Q‘Éó'·ÐIøipNhéÙK·Ñ¬e”hR?Òѧƒþ›–œIibt�Õ‡Xeóüî)éøŠXiÜøbºE‡…‚œÞ>ï7õŠ Ü\ k~*IÃâ­jFÞ¾4;T ÷½FLú3¾tùx>!·ÆZ$Uù�؃‡Õÿ—LëÎËQlg†ì¸=GjaAz?R}ÈÕødôÀrèõ'„%øë*Ïèˆ •côÕ}p¹ìÚ8œÄnL�¿Ã‚¥ð oPk\jø°P6TÖ3†_yøß`MßT¤Ã/Α_‡$‡»šCg°�kÙŸ/‰¿„a#Ô³ÍCØh]ð…JŠÀ•®¿=ì.Ï�´;~íøB�¶E“\­ø˜Ò7 AƒGiï+D©äðdÕn¥›õ³!Â�V°~Áû”\’b?î)6G8 Ýšq¤ƒi>þ€U7Bëßcnmtηõ�Ç3_C?<èøW—·�5`+ÂZsb¢£þúɪ¼#.V:Õ`£;0ú»â3©ñ£6$ñ¿äÕ DƒÚJ°éÍéÖó¸Äåp/Õn¤pýê!$}`†æÕ;{ÜÑïy"¹h‘®ƒßÁ[Êó§ZEîI<Õm …UÏ&Aè²É¯„Øü÷ Š Bwà«Î×CcJDm]\°~ìdªkyG>C§£MûÈÉo "8@΢&¾ß¹U‹y¢ý¶¹�Ÿ9ïGJ‘�.Ÿ5î+¯ib•6†Òç>‰€xUï!3ÐðÆ. Oãñ€ŸÊå<Í»ä-->Dz/å þ›­Ö±KÛ� ^ ã”ïíx¿ŽÈç­»´Û˺�V¢ê6f&ì¤D üÎ/³qœÐÕ‹j$b =·V¤»ðM]›WïÀE×é,C¾R®©t2ŒTŠéôôPD§G Û8Uœ8+ôÛüâ"A�ÉIqs È…ô;šdþ÷¤ê6¡qúÉ|XÀƒûJQPÞ:»�YÉØ.”Mvø›lÎ.8 ™§¾ú ?°â*éVЇþ'ؤTEžäÕw'�p‚Cå~ˆØÆ’ ¶É|Ã!WÁ —zAóÁ‚*X@uQËúû"ß·7;ðªðYÜtÕ‰€«ô–­ö$‹(šg 4}Ñ?e‰bUöµêB×?ëÕµ'�QÖS_=“à4.õ®¥’1P�lÁYʧ,ð0ÞÒ�|ùë¢KEÆg7ËV4©>óL¾éXÔb1ž M¶µPw¸0C0(¯P‰sÏC‡÷(5#^¾íR‘ÚÖè�Åze®>x ×?äŽàÀîä0!©y嫦�}¸ÈèÚbJèK­�Á`ü-³Ý§7§ô1gPˆ-[/kÿ²¸íZÁT‡žOÛµ ÑÖ>Æ^:(íáü-²-»‰” “ ó^T V5©c®G¼!DÒñmZ©çâ󋤰_æbN¨øX”Mh dNcK1‘Š!¬WÕA- 8âprÜR¹fd&d7¸œ! |‘Š0Åoä3Šy/!€ígEh„{u+T>\¢±rÏAx�LGêsg‚™·"=Þýjhö| ¬èšò�;µâF³óY;Á(_¨ ÜHú ÑŒÓY?ðDO íM±2µÎzª›ƒO^orõyB’2Ç a„u\—|-ºãJ�±w�~”þHÜÄlIÐ4À↱Jjñ'xÝãÉÂm ±(qíÀ ´‰Ô OÀ>©Ù»¯FB¶:ºžPÅÎÑ�+S6êÆn�Ðç}ú2¾ê8.“Qþ¦à×ýÈj"`îu xZT CñêÚ6P¸ |[´ !tn):Ñv‚ÁŸ’È:zœîÄ;{óLžÈY{ü¸Y½_¨d� Í&T'#s#|h ­*!©�q“,}ufZçÌ#u/ÍñT«5xMfHвâ�%?]:íYŒMiì‡ØÖ‡ü›£N˜ØJä{ wxð¼2¬M“±‰–1K¡°°‘ÅWYoΤEû§ޝ{ÉþZWÐ =é­àùSø‚‰é ¿ùû ]J<0¨VXºTþœÆÔ~T IøA!9º·]j#%Åt[M/3ækœã_Èk¢„ú'8›žF_ ?m§Šuþ¨˜Í椱ñ.Ëá:ãÒÑ>é\Ï‘1·ÌùÌDÔÝÆsPXÁã¤W©P[ü>ŒtŸ ; »¾T"ˆ¤Þ3çÌN-D¼¼’š,*¶+¡ èRJ"Ÿ·BpEç3J¥ÿR˜¼;¢ìP1,ƒùT¡Xí6•,†ûp•OFÝ”ÿ­ ^ÍßMk‚iAÇ�ñÃÕ¾“JGÞÞHIÚOÈ?(‘ÁSC ø­S†Â KÝÉÊ…-ÇîÊãt…ÕX-0{Ù ûº¾¸ EŠ>yeœ±ž•ágç,�Ã{¦8«˜(.@]Q¯³¨0öµä(lyùÒ/Ê6µý0½»‹rëÇ9¤pÎ æš³ãÉ’àªQÆq±¨SĪûÍbïlƒþå…ðÉ*ôø�Z£˜GåxB=ꑟ’ÎÉ � Ùä¦ß2‚!¦nbiÛÄŒ(VS€‹ì+�2«§E=ÎÇ€_­Ÿ)ðÓ‚¶”—ìéXÂ# ”IÍò¡j‘�¥<4dòòT–2ïg Ç¡�9 t-w­Ha²P‡géï"=O7Ø7â/ÚèàåT²‰^»þ�¦ùx»¤ÍŒÎO¾ŸE@¤½�(ÞÒþ…¸ÀØ.*=ÐX~^Û¯~ŽI7ä{väüish¶ yVÉ•8"Y .� í±è㹊ˆhÙ›±ÀðsÿµÌé‹x{{�éÛ1q:èã‹ùÑëÇ·dðñýVÎ0Æ™L`ŒXQq–ž:(GS†x¨Xs{b°;HlˆPýÀŒ­+oGžø‰âŠˆYÈœ&{ðª$'ÇÁê §ç¶wj�¬ Ì…ÚD>TtGô¦™§-)WºIËZÊd- ~‰Ê×.­¡`–åàÒÈwF¦Ðà[ØäQ²;až6dŸfB\¬2˜@¦îp �EIç¦MôF½qîŠÈyo'Ÿ�¯À »gXøô9ÐRü•íò·óލÄý઱´¼EÄð,�õSÌcÿnšîP¾�m¢Wš�a|Žãƒý¸°°Ú>”ŠõšfÁîÔ}ÚÜŸNàOôLSæ4*÷�ÐßëÙÐÇ%‡ìaØ®ý7T¨—½øº†Ì0g(+Ì&hcpN9Å€dØå4ú&î2Þu=‚»ƒÑS¿�Ô¾–…9ŒÆ–Š÷îŽåó—¯F^�xöûŒI±fò¯è•šR!s¥F!\r‚|f�µ¦S%¸ß¼¼·µ@…ì&A—BšÎs™c, ¥ß8·?F çÖ=Ì ïlÑP<0„£T¥†iœ¢°‘~§ru¼¢B0û†Ø×<0’!r³x�ýÙßí#á2C3z®ê2¶ «ÇBhÓà‘p&¬ÅÙ¡�6­H$©ùýnmG�š”ÇÙµ å$ÜŽ„ `~zc±Tƨ6oÍ÷XÌÔG¼ ©8ÜiÚ÷ŽÊ¥ 𙤱GˆNqùÔÕ›'¢«¼ê ‱,L2Ô³«¡RäÑó2ZrÞ-aÏPäÈCñmvõÁ1ÏwÃ�Úç;ZPï�Ú€×4Þè­ä;!¡­Ƭ¶ßüðÑšâ�¶v܈4Ýï%Ú÷8ù©-7êË!–½ªµÈ�÷í#£w%_˜Q‘ãö0)]ÅŽ¢s˜Io^™üÑ–Ú ê!ú[v[õÇ7-Ù1²j�.³â—BU•ïuF�’ÄÀcaМ·GsÕ6&Ò­gNh ¸kâ“¶«µMàôDç˜ÙÒ{†¯(€·Ä\ç@ÛLîår†·³åDBoÍ«Ð4'Sþ õ­y1Xa�R¨bóÚT˜’�ò(Ë#„¢ï˜º¾¯Y<:rÉc¹y—fö¬�Çï0‡³ºÍ}SqÜZñà 4�byh¯•Ôˆ¦] Q·Gj�´qI,_#Kæ&c-+ÁílûoS{»£6¸^̯îl…¸Ÿá�r£$/EÂ?ð>†Y¡�ˆH-A¶>J7ò˜ž¹t­Ž•@7"í‚·2/X ¥œYdèfM$vbq˨&j ªhæH®°Ýi´ÀѾûî@Þ•>)4¿å>žCKªBý­çF9xô}ô 6³»PCþ Dgv]éÅÄJKÍËŽ:¹ýU3¿K¹^/ldH ¢¤.«ä»ØûÙsCh¢4\ƒk¶0˜Ê�ã�®7N6$éÕÝùõ –:*{«ìr "þÔ‚ ×kìøÈNèxÿVQi ÖHÏà¤{¯evy®ò#o!Úqt�²´~ò$—\ÞÒq ‰8®ÓÙB¡ïtg¦1_ÿû51 ȯ‰÷JÕ°™ýõM�ÔâC,Ù²úA­9…ó1â ýö×”S÷qBÁ°YÆ—~Ã1µŒ^Šk½=ˆjÞupÁ­Tú~¤I 3(†^N G=ÃÆox@XÙéýu٫ߌ"üÍEQèD¹�V¼#ÑFnÎçfQý(¤º¬2¡ÐôZÃ]<A�¹øöièea5àäø)‡³�£¿þ­¤ËjÌ*ü¿†ÎÇ_Î{ò«ÕÁ:’õ,âÚA“è1Š " ¢Å\;ÃR«]ò~ša8ðÈ…N«ýq@ýOx0sAA˜�ÆèýÐA߯‚ü­HùÚâàs¦Y¶86ý’8îBÊ~Ùj®Ó°%½2¨•¦\À¶jvTƹOÀÈ·þäFÁ P¯ÄïÅt™‹%Œ©^Nxé×}ý¨Á#ØÞÄönœä¯t�1Žw?j­’2%YžWßi÷Xñç*òyw $ˆø…âk÷÷}¿ðL�8—¿• �€•BÃ,½:´±€‚_ˆˆzPhV‚‘lO/ëMÅïo÷"Ýó–ô3�ûB¤Œb·÷‘TIµ_À�¦EÆ?ÊzX¢ð J{ërF)!za•© ~@àøò®¨�Œ˜ß�)–zx}:’úÕ¨ PêÁK?ZŒ†Å)F4„…·ËÝÑ©z)ûÈ]åL<ƒæöqÒŽµ •óˆ Ì&A±PºãX±d�,'¢ÒrtP߯ýBy+¼üþq¬]s‹;U´‚�á÷Ù0<½‰~IŸêø»X:O~Ȩ³f[�òŸØœÊ˜¿Ýu�•ðe{±£Å‹ªŸE2¾ê'ˆA _”©b¶°S�Azr†¬BbI†®õ£»ô.F2šdóg¹0F^ß�KâA,ði‡ZSÕCrìö¬îj¤ÇÚæ¿ùàåÓ{€çóôò~àcÞOS1B‚Æ�çENùгñ2œ�¿¢^zd«O|‹9òÔø*è¤aÏÖ®‚Õ&e-'aXßÃB"g­d± CMÙæï ™³ï+« ï5ºÄÌgÎ^L?¯À£7Þ—óJ`~¡ÚR³‰Ñ�ùÌ9+(æejq–.‹%G/ü™ ä¿Ù•@“ê⟄)bn„!¹M¿¹ì–Ý —Ê FBï¨ß¯^²H0HŽNO¯„¯É5„N²î3š êAë‘uBu“íåW·¶t#foHÕ|Ô¹�‹SÄGÔÀr"±ÁOÎÑê&B�NA||ñ|t>¸ë’kÞ|7®oõ9üeƒ9¦:ƒÒ€çG)g“¨•³–fÁÑ_�öS‘5‰Xkü™!ˆ X@R)EcÝŒé7RˆR˜^ò5…m¬<–ŒNx�¼&sÈ:9¶¯™õ?]P€…/1;�)ïv8£Ð$‰Ÿ-ÎbŒæ†Î â’-'»K`S_˜ÞørÑi\_ξ-øv“œÅKº …UEÅôG!üv±â4ï0bØ…ü­6Z%ïCé‹·º_±)˜´»n»ii™Ž´7Z!P�ávÙ1¶Å`\ ››r›´ˆâ3·¼ôég�ú<“r=q8²K+þÊá N¦¯,twÌÚÔx©U±Ê„Δœè<ô3ÖñoŽ]i¿â&çÎ­ÜæÞo†`A[€Õ³Î¨ ;µPëÛB$XôþÈj£$4¼ìB¹™ÐûëÝÀÓEÝÌ÷í7y–Œº¿,´·´–š_)v€ð‘`x�9èG!ÝIiøts´¹–¢»)Hq—ae$X“B[ÒŶTvQgS“*³ÎÞß:ôÅòùAMRfÎ�¾©³xüÒkŒé�ÍgáÕPgKQ¢»lÍÔ¬»Ó Ó¤ð{«¨w» ;�½ò¬iWÈÏ/È%¢¶–.RreÛ��æ„r¤ñf·íÕäðùÂÒ¥vh—¨¹™½[:Œ‰mm'ŸmIµoF×Uè{� \Ìî×ãxm@ˆ^j§ô/¾hEŠ·éÞÊN^”Тz|èO$ü¤¯ˆÂê8/ö>Nî~\Ù&ˆWe*9ðÕ(Ç}mˆ*ãŠå£š¨énTÅÑŽ·žnYàGù~Ü[S>¯ eHzoòð¹�I£‡W;6¢$�¯È€ŠY hÒ‹¢ÕªÜ²2êù¶t>éÛ“�SÄ75 6½ó(¯-nŽyµ) Fª±Xu\Ë�å BŸ~eÙÓš  hoñqñªRÈ Ýäi(ÝÃ(żXh-bk_‚.sÖº�•ôEä±B‚)�ðäk”xmþP«�>}ܸ¥gD¬U)xEó8$6掶IF/«^ ;"´×&‚•ú"Âé‚€›G=äE-éå„aFv§™1¼�ßѵ/à�Mž^Q{�½'Ý(fô—Ï(Š�¿rL¹x�tÐÉÑv,�pu.ŠÖo×T­;=xx†ár‰˜!âÍЇôÆ’Y•Ôq$oìh#l �dÖßHN¯ÓÊi¿…®ß¹Ëõž¶0òãåê—®í3›/}Ö6uë퀦]óàþ\$:¶ÖªÊ.°„MçËGG™VÐÁÑ©nñ¹4Ì6“?KË·Óf€N¬�ó…¢! üæÁÚ QЄ“‘}ç)‘á–�¾¸Á(> ó²½J?2 ô"\ÉAïœsÑ^KÝÃyõ«õ/WH m÷]»ËT˜øc€KoðÔpA )Œ_ËmRŠêmI›¤~è®Î ¡l@ÛÜ °üèDA–e$�—ÜE+¹KT:e Îa*ý)Ò÷Êby­|w·}´ä)7>’ÎÕ¢käÄ̤ö*u�rÌH|ø=FgTóÆž×8£ˆƒÆ7ÒáˆÑKiÚH_ù~GiÏÍÐÀß@³_ÞÀtá)Ùœ7˰´>’AÍË╦ ®¤AñÑOÛoäNJ¡€Ä�ãZ� y£I…ótVÅ%ŽÐÒPܸϤxãÍí«Õ»ÃL¼$Õ°�ª®¤Óœ]¿Ò~²™ ž ÅDßA•1Gɉº–Y°‰�‚Ýì.ÝU:§'g·„M<�]gD²\T}ÑåÕ»1i þhÅš$ºø=Å´âw™¯,ˆÃÌ»T¯nÂZ:¤æíH¯a «ZZ¾ÞƦLõSÙ±þ)œaÿ1[Í‹òÃð�¬T° ðÐÜPsÕK÷ )Êqrô¢« Ñ/FS½<àñ!£)N±YEî;ŒûX_êÅä)…êPGªÒxƒí¬�…¸~kª¾Ú×0®%­)ûæœù í@ðw$L„Tm¨e­•.œ#.Òb8›ÕFrh§ê+Áèö5g©úµwÚÝN~=é<éQ{+ýKl|6�ÆëMVߦ•vf™ [�¡ ’êí:©.4ŠÀ߯†ÓÓ)¾ù]5“íå"Ömê(ï©„Ï;mýi#`Ei2íñ8áßT3Ñ‚?´á$ZÆŒº_‚>‚TN™xÏp<€�WÛœõ¦#�:“?,ÙŽïšt‹,c,z{ÓCv/* Ú‚ø£©‚ ;³éîBÔöY+¯keb#¨;äêB÷|à5ÑûUØ[B±úáFIs°´„ô½n €`ŠW´F CÆ�B5ˆh‚­ ¿ÿm¯¥aÍó“%ÄœÚΛZ�60Á‡ü­‰Ó‹ö¾”ÑÛa!+280ÐÏq Ü\š•Ç’�Ÿ:µÏƒ¡ pYÕÛh=¢cFÙß¼r‚”wý>®Ãö{Fokí0Ùq’§z(U9ü]¼“ÈZÿ蹸Êf§sæó0}6 ¶cíõá,½r�S�’71?e�ø�¬‰ÃL©{Y;Í´öy­s¤òÜ;X³}�]’Ëm™OµÍ(O/S8Eq€ðÓ>�”~½)߆ ‡ÇÙ _A‹ÚÌq›ÔXJ Ü%“ô;Ršø±­ÖŠ/‚z FŒ2÷Ét»3³Ó�0ƒƒßŸüÒ6‘~“êsÛÎê÷×P@€°\LV¹16±!®5O0SV5/T•y@ùÛŒrÁS†Û*ºÝt±Çä©ï‰�,tþy~!9:¡µföÌZ|¤¬)"0À7¿MåØú$ÀœÌJ{ÌA ÂepQwEA_Ô±ß�Þe¼ø'K�Ë‹,¡Þ’}}5¸Ó®G}¾±Ï±ó&D²y¯&Ö²¤…n¤–RkÚÎñ«â­â(L´_¬ùÏÁÜN`öW‚[óüºö¼Ð¼ÁàG½GCìÃÖžØ:n5¼£vZÅBÀ-ÈþÊ Å´ÙÆÔµXôõ— •.“ÕU$î–Nðý·�Áv‡•‘q °‹f”Ü×@Ú|Ž,ƒ.#Ehf‹þ�J"×!O�¸Ù!èžcÄ5JF0/×Ê2îþ®_Öt,g-û„Ÿ—¿x”-ô‹ízí—»Sµtž­{° nFÇ Í]°NëûS_.¼� –XÄ6º±ê³)13Jæ\ÛÊyOú”DEä™é›o=æ±·Ò¡ì…\:ñÐ)tÔ�ØN!ÝùËü¤¢E_Ôr6ª·=2riŽÇí¯†r|Øæ fÏËÊdùÝ‘ÑS2‡ œ�È*ñâšîdu)2� Ñ9“°l¥Ž®è”] ã!ëþœÓ†fe4ACvdì%W×W¶qÐ`ÝÆµ¬â®ùK³ùPKF�Až Ä»‡Eœ|‘P0j›!,ÿ›RR¥ÛÔÝÕþ‘‘g æ#oÖ&‹»¾{kÄw; $}Ê€ ��¦;úZx&�€ð´‘!ž}ÄÞ†Hv«qQo±Ì,¹Q}gËí»µùQšpæÝðƒx†kœ©§òJ’ûâw †+Õ/µÐ9c‘É®T—ÇùÜNgÝsÞáævË¢ 5£�ü–Ž5¦¦›?–Ãv3ûËX[þÞÙ!4‡÷¼Œž |)TÚPýòg¢ŠgáNkÛßÛ÷!ßx�p̰Ãâ]ßoËk)}¬�.Ò§  iÅÏ·HÊêÕ¿lBí 6öùþº/ö Iï¢ìîLOn ýAAÕõ(=± èc™‘º†¦çíùEœ»T£I„ÔØã¼¾ è ׉W?�*‚vˆëäðv‡¢œ¼÷DvV�_ª f@äŸ@ ú¬;V¥�ˆ—–c³[ˆVÝØ§õØÁ²÷ªù«˜»ã¿ ê#ÎпòtÛÞ&Õ#Åõ :c‚?ïžKÉ׬/ÏŠûI9 §~.²;ó�耲T…ªD‡jÆ7ÿ`ݦ—Ñ¡cZCµE©ìÙ¨�+ïs­`ž�šN¬VDÞÓm#$l‚óä:(e»vDá¹jSŸ:½Uœ 2AGHð— æÛȨ‰ùÜä ¶~Œ„©ZcTé qp eÜ+ð0õpö2©úë¸õIô¡Wèe*ÙwL6BAÄk–ð‰jPüQÅÖ�.ìsê=A5®Œ(tѾݤ¨£îŠ�Ý_üÁχŠë'ŒÒ;-ÞÀÆŒ�kå¶ž@ãm£·›½dtÛç‰ÔŸÝ­ïsŠ^§nõ ãA%�ØWâC¤ëÔG¼O‚™@_wi U4æ”ÊÚ9>ObëJŠª z>(è­,ª™â~î3Ì#V½h£ « C=65uÓêEÂçñÅø¸â ’¼Ë…?ßâoü{>˜´W{‡‹n­ ²$Hòø‰éi Ê>Úðe$l³È \ï[ ÂîñJ†¨ýF¡ @òã>iã8rIAâ=ÑÄý'b8)¸l4în ÷tE"œÂz—”Ç‹æ{ f¯j¸Å.&¶ ¤Ö.F|0«„d);…Œ¼Ãu›Ÿ#c·ÉÉ fX$�‹îW› Â19ÙìÜ''«±Ð•ò^»öùµEa¸K³<ç\86¹$›!Ú`?¹wùõè(è«ÐÈà%gÜæ^Y2ðÔ@áU|O¨Ô„Mø;(ÁJ#~BtqÏEå„Gp6c¢ÇvãNS¨T•´Oµ§;°æ™4J²RšŸ0Ç'†N·»T'MAgÃd÷æi“KÆO:%/�]ÈsÙÁѹ¡£dçàŸ’´NðH|#D¤ºlGNä8¶ZÈ*¯¨–Ÿß,!$͢ÕÝ(4‡¦Lð�ÄÞù¹’×ÿ-Ý€°VªŸòÆòQÝLâxÒÜͲ�±ý0+ƒç±ÁÒÁI¢Þæ)kFR4vÑóóg[+r#7ó¨ D"–+J]@Îæâ$å–ôõíLí*À›~xˆâ8>�m£n~�Ó8/¿�«AÃYF¨ÅΩ-1,0·”'‚R[Â¨Þ }GÇú3Û¨ìÖ©°,V{ |¢�†2Pσ„íÚRªã¼/õ»’r$²c%±hsæóu� ©Å î3B qc…רýõì&s�Œ_Žz;ûo:õƒ(Ú}žæì“~²®ëGÄÛ«ï…»Ó®=4ŠGSûõ¦…RD©”½¶ûùba~pJ-Ù÷„R2éƒÎóp± b÷M8i!‚eŒ´Ä¡'AÚDùðwlÕß•%ÅWâ¸ÝÇ=Æy;ÝáÀO|6)ÍŒ=¾¢þ€K¦6wzd—7©gµŽö’–ÔÝ•úÊÀOž¿�F2�¨ÆLâ;/­öIMZ+ÖN/^váíÃÖ¶~§+Ëë1/5‹~Oq÷<ŒqßíØ÷°½ã�žñ—š’±çö¿ï ¢Þø"¶øJŒäÀñ1�¦ÎÄå�<_•M‹Ôr&ÿm3/ÁÜ­†>2š(Ù-ãTš�ç­¦8¼FN@!ŽxÊE­]HÜ.Ý=W°+WÛÓ;¬m&]=Å<Úú+Ë»<»Ÿ5E”—ˆ¾¯ ™†“ßÖ‹º¬xQFD¾×n‰¯óY{µýÎ*{B—FóÖdy¹]ØÿŒªÇü‰^i=CÈ%‚Ðhò5ðzñ¹‚vó²tЇ^fhð¡-ÔæWˆ jûkMźô 6¿¶‘ÇîímRå¢&Å}ÿõtçÎC>Ä´Soª3e­uŒ®Uð;6M³Î�ê]Çf8¬kÂ*Œ‚S Û.Žº�ÂpL!pïÇWåŒRw峨/XêÙøÔH<°ÿ�¯µÀ¹³X2…`ïr i›å8ø»Ž»}T×Íö‚s(fÿ þÛ1»Õg²)ù©ÉB.eÔ去O5:lÏ0A¹™´ ‚Q±vÏçÉG5Ô¿{olWÿ„û$ôM6÷CÞ¿Öг+W~l@ν¬E0Æ^4Oð¡]ÍåÕÈÖÏA| %yÈÁš˜ëª£})ë14µÁòÝÞ00¢ç*‘X¹ûÖÙDüŽúÂ��õ–)ʬ›’cqt̆•]z}gC7âÈe•S¡ïÕ%PuvÄ Å'öi¼‹;c_”¿Ëû5œ×“&?WÂYRä³óÍdôÈÏfÀ,ôþxb÷]E¬k”ýˆP�Ke6JÔïY¢K>L Ä¡"À›[û(Ÿ}.Ž §ð^æn¶lp‚š’ŠžÎÀ±Ks¯·Gâ<C*…w׫Ãé­½fæA ˜èû L¶¿µY¢Ã"á϶¿ ¨£`ô¥ÐŽZ®‰•븃@ÐPÞ3Rµ›$�š�d�ÎgÓÁËy³èdØ í Æ+ãø×á7]†e `�âÔ,ãYÌ}®ÓÛÌ„¢è·ŸS¼‰5RôÐú¸D:†uPlïØ:Ĩ8ÖÙâÀ/¿v™O xüAr°ñç.ù�ß.|]¬_S,>ðçû�§5S >©ŸY¼ÓEd&,ÿzÂû#ȳ>{Óå²pÃçdV•›^û¬µá $ w¦Ã7¯ö/~ðÞ£8'‡l°D‹€ö§'eñÆ%TÝ딚Ðjå={)|�… SæÞ� ‚xSý‘È›K×ΰ™†à˜’ãnæ¶»T$ŽøQOH§„.ÕM6µgÍýC¥jµä}bˆ:1×bÅJ8l²Š)6ð¡bsç® ?z8¡ˆÒz«'Ý$Ñ{BÄ ·O$Ó*‡WÂÝ2pl€á*Çgz‡R1nI6ÌÖÌ Õ xÀšØ1Ú1Å’|hÕÞXÄ[VÇ;¼îHÆÜ¥,üqV$�´’p ²��;²-ÞÛp²–o«:�±Îº ceèéæÂ¹Æ…ê H`æài+Õÿæ±.]×Ã}~fŠ×ò…«[¨oÉEh4!è'BZÐQäµìe”}O»Ç}ÃÖ>„½˜”Ú [+áùa±Ü+߉3;J[ÕËŒtgHåß³�åªrë€ÝҤؠ\)LÏÈBÐØRgW•ˆÛ6®®¬¥Û¨CEiì+–™'›³á>Q3Tè�ôB›˜¹õÙ¿ëx¶LÎñá 7S“ê¦k…‘è¼]Q®ÄÕg&ƒu±îpó}ˆ‰Ê�Ü5ÌÑZm–åóEñ( ÃpϹW·ë•ADx.y²îÆürˆêÎmX”ÎuÞ�› Û©u»CÂÞô>†‘�Ù‘¸{‘ü€�»-ýJy~âê-p�^¨5Gœ¾‡Ë¯�é,^mÏfÿú#±XÄ«w†û5Í 4qÄècPá:îw¢Œ}ƒ¦…[©è[rô_ÜOÂ0É™ÞÈ•n·ߨèý©ðtìU¼³Ó¹Ÿ¨ËHõkÅ<ÕÊŸ´ÇS6 *ŒôˆÄP0ÈÄHéIÌú›x2”¾øQA(ÐZÓ(!tÚ¤ ~?a¾[[ïOXø€‘ÖJôÀ¨¥�E®//}̀Ќ'õ#ýTÉÎ~ô9ÑÑIº¾¢D3ÞÓßaÏfP9CràÖ;ü“AlʦWxϬG˜.ˆî"äñ‹¿lÁè³iP§Äî_é—ÄOÃlÒ–l‘ÑM?e?vãf¶WOñ™€’ŽÚel)kuü÷ š{õ”}K¯ïH�¦[³¤ &M¿� Xü 5ÃuÙǺF)ˆ³ÀÁ¯ U Ñ‹ø¢fêìy¤¡¢º³EŒàÈ/ÞHЇ‹J¿2U`cÊÉã9 ~wêf–ÐC-B±Ö„6ð°,¾Õ„$Yë –ÒnNI‰K×3k[“×Òä¢*ä1ù7—‡ ߆øÑ>ý¥("Œ/¹C„�ò³H;�Ó€”?R3ø2Ô°VØóò“™ûti½vfJS0&a¯”(ù: t+#·^Ñ‘ ×ìƒ9f§\REéI4xê=ÏÎþ¾‰/ü ÛOÚý3æEQ…i`'ȶ;ù¯i#®ÈŒ¹XbIxƒj7y¡›DdÖ˜p.:w÷’g¥ J¾ Ò"áy|­]õ£"Ü$íô¡X¶6ÝXâšk7^ü¼ G˜¼ð']ƒ{ÄG½_ˆ-8Ò MH —÷@º"ˆô´ÙÔ%/ ²é4kçïÑYï/,[8d{Äçñí oÊãÆÕ>ô Ò]O4ƒŒä§°#NÞ 3ƒÁ$^Ãeô‹%«r…[‡R9M^ëò‡¬T êü�‹4WwƒŽ¶y{¬Ÿ§ß!Ô9ªžÃô§ì“oü�õmãxû£;ªòº³TÓg3¹ü¦Ó£÷L%ríÎí€È82òé‚Ï\G…F²ï³—C¾cJ_Œ¥ƒY>TcÙ"]ߣÜEAÕÄäG囟¿‘:IU¤Š¬þEù"¾Ã^t™²\‹ëøOtKK€àÙ´l„f”$SQdÜÞ~Tëõ—"G©l=�0Y‰…EdÁdAÝ6Z\Ï0ò4YŽ,%¿±}dÕãö8°°Y3â/žø6°$uW‘šý„ñºUqjù›W× xšýnB¦¢�#v6�¯âB •rX§Ê ‡ŸÍ ¡™3Ázu4WšUr° ›ƒNQŠÁöï¦^Oîk=ôÈ+ë�]”nÇ�ÖX‹±žût,ÝO×¥KDz•· à†E¥¡ŒúíCá­^ÑÄØ#±ãuØÇ}ÍÔ³ª&@𘓂æ£8{ØáŠ·?‡íöƒSDN¤ƒe¥ûý¨/'SŒ¶ÉÙÁìWîæRòÎÄç§‚üx8ç¯_Ñ—;A™E„äºèóE>&_ÅÇKf�^2ï+u�)'t±û ”mq¶¥†¯;�!¿œ³"$î[Ì`Ê&ðLäW0<–ÖSÝ{˜¹¾Â@üÐF9BøÛNF4"˜I�èÖŸ>úrÙÛ „¤f¾ hÍD¹ŒJˆî–bq"”_axÔÚÞìÂϳk5“²’G`Û´šÁ›e9ôÛûQf¥ùãitBÓ„�®d6Êñ Ýð¿#‚‚ø|Ãföù#’�¨åü9i#c`TJ¢£¤%UqUúïh +Ñß[”j&‘ Q_5î´Œv…Ä_~—ñ/ƒÐ÷hŸ4^0%óµ5p´ðô’É õ×V+…¦€K !þÂÛiNY4ÓÊRŠŒ¿«{)%óÂÆ¤`H ÆjXýQ ©¦·§0F'Òù«€£øÍ#òo}À?ìñÅ>M_ds—ÃP­x£´ Âs¯Ùý˜éHÓøEÄ!bnÞ^Z_1AAüÇO¢›¢C:­¾°pQ> ýõz!K8wÿ:û¹�Üh¿íØá½!Ø ?¶�õë¿âj#œf!áûoß>cJf‘5ûØFù�€R¸Ÿë6ɶCÎ^5¿‹_ºOo$—Ó�ä�<Yµí(-ùv;¢V˜p¡n6Æ”êñ…ÝØ€†�ôû6?åõÉ7ù@ÙX\7‘µØæXJ׆pH!Œêì¼ÂP~­#ˆ2IC½OsH)@ †)/Ágzþ¾W*ü:î{˜·ð[Wöfëðø$UÐZQ’e¨ ÷Ééœy͘š("ÕŸ�äË鑦†ÉW²¢ž¥Ê09b2c÷-[È,×¶¹à˜Na×·�L¸rVñ÷6ÇÀî¡‘ãS°M¸„D‡å@³üê‚b¯†À>€øËËíhüœ‚L€4·Ÿì~“‚�óMb9å{K§PÞqne ŽBY%¬¸Öïz1ñ§‚²`{›€ÞjåÞ3˜KØ y ð9s뫈;°‚˜\+_ƒ> jß5ÊÝD#±©]Ç Véw‚Œ²d'ÆNQÑA·f[€ÐWxÎ;ÿ–ü“V{†Òìª)l�oM¯\/#¤¬xìøªf�厗ÇÐÌÌš%Ü©ÕyÙŠ{Ç �˧�‘ß"˜§Ž£gLñCLèõ8ŒbÍY\>°;VÕšù/SH#ºÌu²AE¬œÉAA9¸ù'�·¼2À¨h%Å×$Ô.ëø6ÔߢUôì0ðÙ0´n´N‘†ØtV®;dI”ÄÈrè#½ûw!4�YwgNÑßã§ eI¸VqÖqÀ6RFNSÓúþ¬h­´§""9ʨ+EônŒks·’ØóLJ¥Óy¯ž»ÎS;RYä<%ôh8ËŽ‹åIe+É�(·ÚÃJ&�nŽI-ÿ³CIÄh5U ÙàžøR†Ÿvøxš:�Þ¬¨»ü^ŸPåQìŸÄJKÔÐì~ryÙÓ¬™â¿Â ö6Ñ 5·JG°…éám·-ÞÕ¿î› œ© à 8SîWT&xR¶=_†@?Ð £í-¹§¤úY˜ Ï„Ñ[˜á�Jûîc�é?˜ù–ÊÂÈûГ„7 ¿ÇÍ„Ÿ PevgƒÐóû¥�Îô„ Š8­àÂH»l'ju1xÉQúë~ƒ<~@pãa­c ¦Çê ~ß’åêùÄ.¸àü�Ú—¶¨–˜¡mHH¨¼± ·‰ý)Qr#fñVŒôÁFéÛm‡«b]‡Ã'nÔP„è€!ƒ%t±�`3ê¸wó7„‰¯–Sé¶&È«¶¿®Ï/ ˇª&²ê=¦ƒ%Rï¨1ç%|—�+ óƒcæ93NeÌ>Iñª"$ÔKß�€%ÞA Þƒ_’Zo}é|wŒ&¸!ಽ6hò€Ó/Uõ>eƒ &ÖÀ7éèØ«ó¨œÂ{OHs˜sˆCþ}›ÅÑ4>¸ë_r¹Zµoäá sü™Xµz™eÒf"¦×L}Pê·‘#y÷Ë´=ppwZè×  ÁŒ¶÷Í]½þ’´7™«C�÷\é×}Ôè•íÚY“­ìE#VŒô*ë Ö§よBct¬\¶Ë裳¾V¦�.û/4h¹-ødt «¢ÃŽå˜ÊUm;ÌÔja¢t~"ÝÏÆèq~ `s@k ™ø<ûЧJ#À÷ßò{Š“#U‹Öèa.ÐO¿K·�jk‡¢†·Ië‰ýð:£žñ’å ±QÄ # Y¾¿LzÜ.#x>-0#µM&Kfü¬”á…/µƒëVœ'(Ôá@CQú²£é)¡;ÑÚ-ƒV¡‰ð! R¿1RX£H_´R+»ü”°š†N|Ô¡qˆŒÓ½úþhø;•óšÃÞÆÅa= �mÂUØè$›º²˜´«lnЦM¿>0­<@¡ sñÝ @£3®øù> ifú!.ßwŸ²‰8„øžO^vsöߌ—÷˜6Ù5þ‹à¨g+ ³¡¨ ‰U¼ù¯@�¾碟‹CF¬nÞr¿™ª_Ê]ˆ×u ŸI›ì«ö wUÄyŸ³"òÍc¼‹ä—CÿÓïl€ÿsóMç`­J ïòòŒ?é‘ðV÷òhz~ˆñLJ­§»Couÿ”ýwþȬϑNÙÀ-å1#êTIøò�ø ü[îÐJ"Œ“Ã^ëDÑ!5²ÂAõê‘�ê„Ìw.IÆÙ±áù UáyðætüÓ2?øÐ­½oZ?s1‚ÁHPàÊÔ¼DÁúÝÕ ¼øãÕ‘þ±»ÀwîÇìŸIùÉ.}þMÛyKeê¼uÖrŒÄJG^¬¢DEŠ2v—>Èw耸¦id­!·#ÐÖåÚg¥Uñ�ó­pd_¾AJ³ ޽àì³ àÄ1TjoY�Ç+e¸¸ÄgB-ÔШ4\¯ÖÆ‚åÅ" ²ñdEÒ=HpuCö⥶N:W�%_‹ñp&„,0ÍpÆ�ò »[°3Bîilt0Þ'=®l?Bsv^^Ķøvˆù¨Qú%2½Fº¬ìúÂwì¥ væ�Ám‚Åë5"ýNŠèß××ð-WÎ%dJê•r\ÚÎôiY%¬dÒùŒÜû‹Ñ L&ï\ï©ùEKAhlj…N,W¦ßG­³S »þy»”ÀDÒ#¬y ÌŒ×=T:%|¬·ÊB �,㕺DZø\]¾÷Ьü»%s®3(z³5òP•Õ¯DLóqt–@p�g³ûNuÂ̇&�)ì¯Ã_!tè¸bŒËðÆßš’ȹ4ïoþ¶²¯ñsþÂÕZ"üºZ±Z°] ÇŸ¶p|®ü4¸€AÈ…– N+Ä2ÀReOúÀ@Ì!Z¤Ï©5ç"‚´ä0'®‰B•ƒ,»„S7ÃÙì-~º¹ øÈUÓ@×K¢ýò¾ ÿ\}‡âšÉ�B3¿²bõÄx¶�±¤£‡i2Ö*ãÚu¡®Ÿo@ [:µé:÷@ÂcߨêÆ/~0=*ﭩɵ¾ÔŒ”«ìÙHCÀTpµÝè_«¥m2\øb7ÓØU&ã– )¿ÿÍJ<JMrÉfm\ŽÉ挩Z!óøqUÆ® ýçàˆRüÍ#›í<­ÄÞt«»<›Ÿ jj8/ ãäò •–Tý"í~Ë�‚sSÂôO|£¢Î`Ñì½ lgÃÄíIwòâøüø‡’uÉ\qoíy³|÷f¾ÉûöU?óÌžœ[d;‡Æ#[@V[z-§\îÈD@…8S[ŒT�fó­Öö }‘Á‡òsœsaq…?ŒÛÜ’Æêžm‚$>Ö ±}ÓÁ†�­ð6Ó`–\ý‚èyYÓÑôF« vý­–NÍ$c´ÚÞÕ)öÀ=¢®R;Q/™~C>SZJ¿\ÅþL³�÷wÝvà~CÕöò†‡¢þÙ“Ò_:¹¢™kÅ$n�˜áEYP·Ýwª˜Æ}&#ÝÄ!¡˜)ˆáÏ#Œ½Þ´ä)~€PcØîˆ9ju²*#ØGê¯]›v±ú}²%QšÊÓ < 4pù•ÉѨoh ^¬Æà[ c"ÜÒê"kޱ0¨O¿Œ’Ÿ\$§íïòsÒm‚'ž‘쥓�ú€Œq’ÏHGœw·nÏB³¼Tˆï·^\P¤Ûî¹{!¤Ÿ=?‹ß³ÑêÊÕMÁ”U13¹Éå‡CkYGgÅ:Z¾5ï;c*Ô¤CÒ �©7;)¬âŽ=ðó¾½,axqŠ‰ê™ fÞÝ _žgH²–°8j¢ é‡=“ÉÛß)$úÀP“^~‘gSËÐíŒÃí$)Ý…éð=Ù‰¾}žò8£Æ¡´Ù$Œ!ƒ~ÎÞžGg,Ú#_¥'6�&^¬v¶|åZlj�õ—"‚X~Pü -Ûô^õ–Û¶û)�SÁºÏtk©þ¸�™Ï&1k�ñt£)�žÏž÷§âE lÚëzöL¸c¾}kN•6û…N2§Ú†ðe^a*}ÚØMÊȃÊhÄÂ!�ëâJQÞ¯2Bø‘ßÚ[ا阜ø×¤úD£Fœ/,<ÀÔCæw»B$÷:™ï˜à 7¼„ËOK FŒn‹û%ûÂñçÍîŠMÐ_3('.Ùj¿J`¯Tô(9I=h ŒÍãY„QEG.�U}•?Š©ÂÏ+—áw>aP&—�å¥ôµ_TÂqYÐO½þò¥�¸Gýa&˜) %Ì[=±XG^Ú0H‡©ãpÇY\&`Ôª¬<.çZ[k# Q{ÇÓ‘Û!§ÀŠ+ÕÎ-‘:±~w^ÎvïÄŽ×òö—=xi|ÞˆÀQ&}ôìX|–<ï¾TÛkds{ô-P£ šš9�ñ¹LÏrå‡è|ès yj‡É[Ïš|]b´Ƨ¡ê¯Ü/ù<€ ²‡>à�JÉ/ O6è$›ú'æ�2/+À¥õ}sCGæÇèO}Ð÷l=å€íÇ3í!<#®`bª„ýDRÖ®Û7Ú€¾òƒ¦*~d“Ly°4m…QõA®ãç„9£‘Yç´ºZ¿ã»ª°$û‹À2€k`‰�… #6å‘Ù»ì|¯»´T".!K«'îˇ3~åR2|’’´[,‡çMP…ÑÃh7q�Qž¶qÑýû&Í„å›Õ›¾ìí�³�¬×êÆ#÷wáâp¢K�ââ¬Ìø°MÁ¥n2_¶Û”†Ž¨¤Òñ{á‰V—†m#Œ[U:þX?�¦çBÝîTëïsµ;kRVÝõ9<ìê¶pân7'P>.òûeZƒzG5óëœgøûH±Âu©æÆ5†¿üÄyòÌAH­÷дŒqsPÂc󙉘U*¯îLï§›D/"-_9×MZÖÂÇŒwÂ.Ó)ošg %�©úM’áßx»Ó‰C2L¿±òœL{$±ä•ÞJ$ý’H¿ã|ªkô³Ëû‚f5b«�éÌ‹ö›¹V�2›æÏÌ´#O8•˜’rfd¨}‘‘Xú0(ßÌ8W:o»ymçÎħ$PਨmxÎX˜£¸VßÞH�°ÓÅÕ\$$¿,f. ~P‡HŸM çد~“êf0„l§ŠE­Ü 3Lˆ†›T\-ùC_’"?„šŽÙT·o�žgï3a*Íì‡É[±ÖŒ€,ÜÔÌ”!k»®d¾Q¦œæµõË4)r ”í=ØlPÎ.9cª�D¸T‡V^öÇGÇ\\î³½gc¡`1h`Ã6½û`b£W§åp¿˜·ª1Xg(ÌZBÇ1мx]Ô„ bÓÛQ¾øQYs'U´%å<"íCqÊx¤’i9Ÿ[ÖKÞ˜1˜æ8Ÿº9Ô9˧n~Ò ;­Öš•ù“|­Ò%â/˜zÖG†c§�ìvµŸ¢$ASÉø!êLøjÍRÕ ÍÂ{Hך*ÝŽ�ë#{b.Dd<ùùÌ=ÀKëHÃÊ2v|ÕœBž¶Õ¿œÜe”Ó"£©ªCùz³MQ% VÁ¿kï {‘_¨€îCæm'0ÇèûçUè}�ÕцålçórŠs´LhVp2‘OEÉ¡Ÿ%éÈXö|%‡úÎ |vY¬j~(Lµ��]ÍÛ½¢Ç?Ü”·%�ÖÓ#”íÂkœ3�Âp‚E™ÇÓ»å|‡|$aóÂ*¾W ‹z ýB1Þ‡ò’àHì²ñÚôÍiÀ«7ÐY’Ú*�ŸÌo`v�ÖQ›Çk¥ÎªD�Sš‚Ûr/Bä¦WéaÊßTÞ¡áXfß6:Üü›Ò�Ñ¥è6¾(*ûä¶EkSñ8X4˜n4ûÚ�rMêOX ©G�Áa0µÊï:ëÆNjšHý™ÆGˆ�š�ÍÊåf*±¯à/™úAU©Þzžþ„u¤šlM*ôÊñ1Çõî±²dû0þLyNÆx '¯ÉšŽsÒ»”ÃHò·ô@j_6ü=ýß®5óëk:1¾Šké‘ëx„BM¨âa?‡ÞN¥î¯3ø[Õ·18i‚‰–gg qÕmÖý·Q[ÿ¤>§`�Ô�]˜ý¢mú�·\gÝD„Ž]fV8~BAŽi²:‹¤Õ�òKj—úÁ캼í(ŠarQ©Î>žlCƒ) J6 °|p½ÇêéïfÆy›¾ÈLT ÛìŸTm÷=Í98ù1Ôâª#§ß³Ç7�� ¥pñ¥uV•ùæ®/—g�>óÝÎ6~h1©~‚¦ü饭.F¤J:/”¯òz®�°m²·ZØë§¯<ÛL<–¯QC·yq-1:u� @ˆ�ÍîoS‘™63ל¼ê?;G'%-ä ~¢ñÇ”R“Ÿ"7: g~ë%”Òöδjgp2.‚$A'‚–†èhQk¥à}+ûaΫ܌cDÖ·Ff³eW¿O§*<�0”+^/³õ«V󃋌“f`Æß)«µs)±ûp¯È’À}¼EZå5‘Pc^&Uа‰óLµ­‰ âá+L=© IÊ&ø»ýZ e%º¡•„+ý%öÎÓ¯G˜/Wzlí©å:"Â×6aÕ‡-Ë_rùˆn�6ó¬ÜJ±÷Mz]¤¶;î6‘áØþ‰/WÑè<©ß·³oA kñ[Ts+ø¹ëx< ¡²ù@ìÃwSdp[‹ é, ~cSåûª<µC`P:žaùõ]ºS­Ð &óTãP¼ì±`ûÐS„�;ö×Õ[©h¨Í¸ãóØç™wKO�»X¶Aµñg®ã;€ÅHÞDÃSdG¿[K�‹°ƒ‡•ÛMúsP“^9Š~$¡Aw~ü�mEƒ—r#9þjPW? m•+&W- Oª LÍœminè ! +þõ;ø§=ZëQ7¿\…4®7µ´ÄÑjæG­EIV_)tú$õ°XªÅo}22ŸÒz ôê)Aø• +H‰ièYTtòŠqY8IÕ&±y¤«=Tå•™z ¬}¡Ð9³¶�êWŠÁ_‚IGû§]6öAÚªóA<Ôbi³ý_ÛpWørK7n`‘tz .9“Ü~²tyLª ˜™~CÑ R��šÞ²ß·Z¶HþÚ Þ<66Ù—·¦áBàÉóoNGËä~ê2��ì?àÛR>LtM —v~“½ßƒ´´Ÿ�`�àqíOíK ‚Âh|ìð¬ø•¹ÁO8jüh@ãcÙúÉÀùøûuü6ØÆ›c²ðR8ÉTúÉO3Ä:éà7>øÇNv_à…•«y æƒiÿØÝWÚÈnùâ'÷„å`qù#Ò‹2M3qn”º¹Ö«ßê‡f4v>0WâD3lYÊ<€ðÔ’öý”ÚG_å´øn*}ÏÖ¼3!^8(<åtmd DÜ7æä~Ë.¼OÕæ8ˆˆç‡;Š[r€LËkWÖ‰:6Bªߺú�­NV¼Øé²):vH‚à0ò�OîX  t£šGƒáþE®vO¦Sx}ûÀsÿÖV×xÙÁ㽌^ù�ª9gS1Xçõ ²*[eÖ!­ êù”çÝ1 Äî´‰ƒ|£8/ì‹RÉzÇ*uÊru€â=˜÷OSçµÌŽöµ’…*ɲýÊŽÌßÎG¦òH1Á˜Œë·àá¸õ=qTÎZ»Ëiü@lÈ72[rv8£_4„E,W¼ú\j�g‹\ä�Nú›ô‰A꣩Ü3«�i�ƒ³#_™Ú´¤ý¤Úz/!D8XÒ¤Wh8ÓNÙr–ü,j–É Ó)ƒ-©L4®Ülçõrb^@ß=W¹@ÉvYˆ!BfGÅRzàæÐÙ>˜äY¥ƒÓ¶@·)À›¢I�u0”8܇—7nÛºO?»àüü›î§Þ¢´U D¯,\Š{€2e´†o"v¬×«ƒD1fö”IëªS7ºnŠ~¡‹‘J õR nd!|^d,™Yçð’ð57\Ü[�fî& ™Hb;a"éçdz �ONê.E.�`{¶ É W´ÉàÉ´Ò¤#÷:XDn“uÇ©íUXm.©Úw½Šxd Oµ›]бãGS9 ÿ^¾ê ü5½!é±Ôa¶„Œ_ó¶øY^�Œ¾Y,Û‚‡o©ÄGèoAš†4ãtfÌßE.€ç‘gŒ4KâLb Eæ—Ù%¨el—Ø)õäo2+*küïk ’á×ëáÛ²óêî@%åÞ†*ýuî”tܹhª:ÑàŸ}¼qþª_��¤ÒbM¢¶E¬Ü™Øþ<¸G< èץ㙖?†^B2#mðœ8^°ÊO‰Þ&ô@ƒÆud^Ÿ…ùiéÂ8+h“ìùU˜U7£ÐÎ$ûFŸcu=!µNÜGÉ»ÀÖe´RÎNKàå ìFq™™*´¢Þí¸`58–ßü�Š? T´/u}ã»Ci1ç—%s}ÂÔ?ýaº¿R[õ{^ޤ¼’`'ú‘i:NI•:‡AÜD&ð#ðü°Ä•]Z¹>lîO·n°¨šÂmªXÀxp‹ÌH‹�.-Ø<øDw…=|fu™KŽS~(!4|eê£0�a}£=¦ÃGîéä�3Ý)ÍüðI· A�éPxñúûÌ8å¸ãÇPüD² B7+ñC<ŸžºBx!ºÑ¾Õ·Oë;ÆÀ¦Û'À��)N€íWëKÓOàlT‡ÿÍý#RnkÔVµ W÷S@�棓žË)_QŸ¬^ºH°¾¤mAÅX[Ò¾­H4Ìü “�xÉF=ìç¿7ût5Øü0œº~ù;÷«Ô žeÍØ6Z²šPF,2áîFßÖ¼¿ÿ÷áþF³}’‘›~#ƒüamæû¸½ F&+ws0µ:r¨¯GvX?Á7HbWnä­(鋹ˆ«m 3»!'‘D¼éŸ6æ;Á©¦�f4ŽÞ-¡Þü㇈`ÚÇj®�?ô�"ή¢ q ?AÅ7¥Ó}ê£�—E‚ÑqDÓ±óT®å¥,ss…t[zj_Þ?ê±t®û õ•¿fiÌËUÜòƒ‰A™X8G£ú‰+f¬e†«·êy¸Ô•º+ ÕØÊ.>õvá£6¦®,+)ƒ[ê�@wô&�ÓMjME¹¾,NŸªÊg_Äs/Y�J¤Æù„…}µÿû¾vX_ÎäÖ¬“œ¢-ë²$Lb¿Î FBÁlxÖ½F²§›oºË( ±›þ¤3xŠs²KœoŒêƒ¨6ÕÁOÍ€¤–Èðà ßø©™¹ô¹ë™Ò“ 5®ªÑ4N&mÖo€e«A¨§Ìê$b<“¿ÖÿL@ÔÔ×RDuê’¼|±‘@)I~æöÖx‘~p¹AEòò©¹)VsvdUØì£¼}“·\í þx®|, â ?�Å#á3>€>áN¿^²ÅÅ"]‘ŸÞ€‚xä«Á[#Y¯öRD™ºp¤bç-è£÷»Ï%[ò�̳aLº–ˆg¡¤�€ç'^£kñ™ hÃK \çôs’O8O>•÷Ô›IÛ{ú‡˜7uÕç«È—ú�Â&ŒxümTÆýfÌþRâʦH"È ©õN ºÑ=k“±(þÛB{. ÇP$=àªòËŠ?‚rëU4cŽ#§dŽ’£ÑWc´Ë¿ë0áZŠ�o¸¢D6’õ† 8]BÚò7' "Ì.®ÀÄ­0¤b1¢'§Ý|¬ü!³ä£õÄ~†â+�o:ýuœ†±½fmÄ3¹Ø�Z>€¢£„ ã» dσ¹#e^ݾ u�1(�?}û­‡§SkÁAáôâ_0oÚN'¢Ûçµ§â¶µðw`•G›{w¸Þ™Ož´:À‚~mrI©\Zzƒu| ¸À~+†g¯2°) lçàXÄ£éö LéÈÙŸ[Ã’°©�?ªò5àL1˲v÷-™á4@„)5”Ý{ÆðåÉtÌxÝçCé¨OéjÛñDb8’M Ãøy å*R´`ã | x•”ü1Ë·/øÇàì!ý*P08Šž;šHÿ�UJ*_aŽ;U³ýû7̉‰6LKåEJo„�A9o¡°õP±­5°QPvuž¦ñ÷‰¶1—Æ ›]TÏÚûìš“ÀÜ?ž’¢JbÓØ’M,ïÛ%—´òK©°[,#²Àéýßz@ Ç­96JéÚ‹6úqiH —Ž~W\ž~_Ä€Ò‘ß¶Ûcé¤÷5˜MË/rŠ“¥`ÕÂ/7ú¾„ðõê³òòXø¯`7åE$Ü�¿¯Ãþr=$)„—˜)[0ÛBÙ”¸Õüµùµt˜Ç<´dOñWÚMõëñà5Îûò5˜¹ˆœ R>7„áê6²ý½å1˜Ru¶³Þ�³¡¤kò½é˜:-Âãßá€) ¢BªmYrŠ¢ç“ãŒá™ÊòÄèÆK&$ÑßÁ ÖwE.Ù_=²¡gKIbzò†b�oü6š%•tAûWôðÚ¾i$1iŠÕ $3‰«2‰Ó#Xzhá].P; ÊwHÁ�îÅI�‚€«&ƒ\q¦+@öXC`‡BLIG~ôˆ�Œá)žRý~)5QfÞƒî,Ž%úD¼rY±‚§>ÛtBˆ* ú<Ãk`Ä“§QêÎî Áô4bë,€ö+ÞfÏ`³úc'»ãòñކy†œq"…Õ#™1§†Ëß“ˆŒwˆÐ„Q))fä+¦Ü ®^„;N#'}pˆ7)?„èTKY¶Ù^¤ÑõŒ1´É66ÊÇènY2”Z/ºÃ\êVwFƳ1Ö3]» s›t&?$-Ö–¾"ˆB»G¦sô€Ü¥b4¡YÒ=å–`¦×*³0¼ž°%û„íÇ^íþ6´LúJ‡­É¼AÅLNX¦ÁÁ«p�ÆW#ºL6OZ`Qù€¸Ë7[/ÜOÚQí-¾º[@¿ ç‚hûù�ÚGrÀø‚û&x­;›œwyþ{€Â£-Ž�^PUy‚ç;6BQ¥à6½lÕû¹7¤![Ìó|¾·T’öH‘¶—Áä‘Ö*îìòthùSs5ëÆ‰ÆÆbÄö ©]¢ÑÐtxgfSê±CQø¿¸{f¯q°g”‡™'­5·¡OLþ‘ué™+CŽ -2úQF�;—E‡Ñaãk¢{¾’W¦½Ô ºy!Wƽ}Ý! ùc/$2¦T‹Ì‚ þn~zž/ã ¥#uþÈv7{b{€7ó窸ËÏí³$Ôõ¿"ÆGhxHp�- £¡6ü’ME+Ä%Mó%Ë?ÐÓ�û鯳檼&�Ca¿?4ÿw?ýs !’eCÀÌL˜T8Ä$—Æ�‘çVvv~Õ¦3¡º!éÞ|œÛ ô5à´õ�øNä$‚’}ñã i¥z3 (5ŽIÒ¦¯8¡RR‘bᾜN.6[8¢ô§3Ý2[¾Èu[›L1ûö­ÿ ÷ì‘ä™áVsä+UT@âû)Ú¥³~òðË/ƒvû‚³�Lå®õY'ÇÇω`µßðÔÒÜ�:4p4ýÄ>rTÁ‹™óË6,g ·›¡2¡5xx5n2¨R€z³…u#4»0Ã~ˆ=:s%0˜Eð´¯Þ�÷Ãd=:('U½�¨æÕç=Ú ÎÁ„Ù(ð79±ÅŒàÎá 2þì›7ª²¿—öVá4×Wª¸o@ôë­Ò0eÎýs×tý)Ê­åê–Áûþn…<ÙÖÌ_N°J݇™¸¦NûIÞ—�0iÔwv5l¶Âæ¶æDÞöÚõGl¯ÍŒT-òT*̼ÂXŽ·0Ç…dÓ²l²*1§û|ëÕh&H±ÀÃä,Çí÷ŸI= q†+Sä—jã˳õÔ¦ó�ï,U·R%m"Uj¦°ÿBÍÐö!–EšW›´qáé^KðÕ^úie>Œ>ÓmÏxÁ2r�UàA ¥•ùV„”üfØÜüŽÕwcÈ~Û l½LÎûÂèw&D7³S6Ý Áp‘1 HVŒ¾W…¡ˆ|€×QÙTFðÔêâÕ¹*èFî߇–«Qp€GÌá>Ñ—pnºËÑ-£O6Á“¦z“Ð÷p–Ðë·X\О $^_þè…þΤû‡)(â¬Ü²°ÊC‡µdÄÉð*™Y]8ÊÛöPJûùa“¹ÇðÂŽà;À|Ðd L³h™g3êÃâj—¡\ˆãYÞ“ðµ BÛ¶™ðMûv‡´ùë(¢y‘Uí¬_ s†äZÃ#?ÈBóÒ�Û“rM@³˜~¦Z€üï.í0TZsLÎ_`‘Rcí>Å‘Z�=©¢La‡ ÅtWD–ï/ÀCF¸!m%¤ÀŸ¼¾¾Vû}T§g 5êTRÝèç4»§‡ „re§ÝxtÚ˜–¯ðÑâÓ�f!6X&‡éLlKÀ_cºí;Ziì21l>\öABO\̧5Þ»Hb³µf8ªÔ@ý`Š-×5Sà&þ½´BU~¸Ý#'JÀªOGSÙoý ExB¸ËâU4Vã¢;°ÿe…úoí-ü\ö\úŽ�ËFäÓzÂQš"X;îÌ3‘�kD_w1vVȹÚ*’|/ð~¿WWŠ\ë~Í*XL湿{¹’oöF»Lð®oŽh¥Bmc¸ðQöîóÜÑ Ôña½u5m�Å%ݵøÌ “"›jR¦ÝÁ_žµMƒ™Ê6sýXnlç'XíCrßzògbƒÐtþng²P j>ê«�ªÁ­Ìmß-㯹€á“GóNþQ�ûh-÷·m¤ÂÈÕ‰³´Ó÷�Jl9ÿÐ¥éõ_�¢‚}„«{0äûT²MgœÍ¤)RH¬ÃýØÊâÔç),ϼÂÓ“ž$÷³——Kå|”l+råÈQqž‚ÚÞܪrïY{è ÏÔh?Ö¿¬šqüZã­à[Ãl«DJ§­*‘e‡|•ÔÞuf™Zagºè“& "§åÁßñ®tç•�À6jP„î8,öñEèxrìiü'O«ì§é':>E =®fþ˜Ûr±ŽØ ²¢´Ó]F.h|NùçÊãW_I^O¾Qí±÷5ûï 8™™AÑÀ|4BýõR¸*_Ÿ®„y‹Î…­u :o±e¹t±�{‘säa| ÙÚMxý oPù˜« Öø�^A"˜‡o@;—‡×½UN(�L³ò“Þt�ʨ³Ó+Êί”1(×ÂRÕù;=oŽý˜nõAR�p>Êi×{WÔÈ=©vjÒWHz"w9¯Á ˜Õ7/9 .­›çÆzr^07¿Þnw¹I)êD‘Ui¯èH_~a�: *iì/™±E¦vn#0[§ñ+rXƒ›T¶‰©«gcCM:^ó³¶#³â�jçoaVæâ²#Ä;xATÙ§ÁؤÅ!…îöÅÂÒÃ`3…ƒŸtM 2å'c÷šà¡ÕõÂ�2~™Àý–õ~šâ£¬_‹˜¶@>s�ÒNýà ­›84Q©«V;–æEh£æ¢T-ãxvÎ*,lž—"†¢D®‘²l„¾‘O†Ø õ ½«"µ¤e�Ê <‘n.:ÁB�+‰s^Ó¬ì:Û²û~;þ­jFĿ᧠[ÀWõ�ü¾¹ ÆZíy»å¢Fn}®:�›+뛽Õ0ÐÙ§ÃKiì ß�¯“úÐè ¹z„E}]€Õ*P˜p²ž'*ã•Ô ô GtÁå­Fß�ç³ѦÈ0iµtÓIN"faÝyÙ�qaÜâì´£?V¯HL•©¡”d�eƒÕþaT“ýáDöfIFTÀ=d*D‰4k�H^/°»ºÁq&ì67‡ÄÒ[Ã×¶ _Kl:)éàqçÊ4™ªÑ-E‘‡âßk\ /¾äbÑŠJ�&þÍc`GÅ�É@h3”„ ãâ ès=Èþ‚@¤FÙ8Ú¶ÚY<³¥�ío†Ë$Ë  ZÌý=¼Y"S³U5Ð=üMöRÓ±Ší�ÀÿR~Ü’Å”�G,§ià ð³¨>ýq_KÖ=ª ./ùI ñÔ^Q°žÙcÛ@|’þšâ\Z0˜G%iyºU†‡ ��/jŠAºdjbŽ·<Ñ<Š£¥u¨Öhxž,BÊMÞ¦KÉÏØO.3'ç’Ýšð6_^¶@ÞŸ+Ö¹±e`Ï” aú�¨ž5â ¾|œ¢fV„kó†±rÒ�HK>ˆM€Ò}‘]×Wcœ@ ·i $³Ô´Ã•H¿Ì�¯. +Üz1ÕŒá‡3õk<ž™-ÑÍTÕðaè#'1ä49qgÎÜ'õPs´<šüƒ õV´òœA"s#�ó!¡1çÁO×�6(zÛ˜j�tXD¥é–5‰Ó„ø>°™Á~'Ï ˆy’³Øž\3[±|e Õ¦g4 ­è9áO,³o€Þx�pìz~>ÇŠÐ7cÙiz?ºªm®ŒN6Õf”“|lµôç/þ}¬9³½ßÐiðTœ 2}öͽÇú\Kg ¸P¬‹‡!Ñ\NA¤eg¶ûñWhŒÕ¯KÚ´+H† ëU‘ÆÈ~±<¿3"ø:”ϸ¾].}ÀûhžOfYb˜ê£æ Aù£ckcâ _[&uëôœŒI‚/�Ðñ¢VFp¸á Ác Ý+ïZï- «å¹ÅY½‰ÇÏæœD© D›ùß=×ãWL½Øû‘éX)ô{fYË»NË+Mksž è·>…[Ç,!Žmýx\áÝÞ(² §›É Q³‰=J…+Tæ\ X š¸G'~Õ¬-±w�" öÄq×·rì#;ö-C³ÐûRêçK\ß»ÚÏN`à1#–±‚ 1i��”_ U˜Rô÷/|¦ÍÆ¡n«GÏ…~xah‡Ú�¥ema°7wrÄþÈC%x†—‹ƒ Nœ0å­èÃ�’¢q &Š¿X[ç$SŒ¼É¢Ž=;šê~…Ðõ•EÁûqÙ`%¥sáðÿÖº¦ÉøÖªè‚!Šþá±)”z’Žn{üÛ»ï½xGõ‰ÍEù@ÐÌ㚃lLs˜^ÓÝ{äô/&Z?ìM ³?~ˆ”yŠÆa`r» YY|…®�þb‘&«Bf­íþâ§íëxÀ†ÁìYzõäö¸"ǯJä²�€|ZØÔ¦&¾¨ cä™—µùôdÅqäÜaV_@ÒD{­å#¡ÛŒÐv_,riªŠ!b®ö�ù1“Ô½\CoEaô‰’ÁëÊT]åÀÂMàzÓÕmaŽZb&O¿øêdÌ&˶â!M¾ß›²°?VÀeW­xPzÒÖ#è‘ÔG¸Xy°ÔÈ1|f,]ï:_÷žE ì ‚(µ`}�)Ìp 6÷L’°R€Â…î$6ÄéãßkðäB\³ÑZ‡v¨==sc½$ɲ 5`Î>1êwÑÀèy©ÂÂ)dÄ3�6ÿ®n~qÕ®P•Û™ÜüÜAø9͘{<<ó9Za©gîiz OµïœlÍo1Ñu_&Î4pŸl-}¢M«´Š/ž x.ÉËÝöXµ÷¾\‰uîÆëâÊ‚PÒïí®Qî’„¡[쬒ÖAoòÇVñQm'¹Žܼtr&_Ë)·u{ƒTÑ~ñ ´�Zt$L¶x䃪1"Ž‘Â&×Cä_¥¸u½ âÑ·ØÿXdeÝWðÓÃ0?;ÙGPƒÉA�.(¯@¶ñ@ðxu@k@íòëˆh{ j3,3T4þHAÕ¤<ŠcT-„«&ù ùy—™ä5Õ“±�Î]ÔÚY RA&Ìéß§X×ôƒð ¾ÝO4‰©‹çÚºÒ%Ð »=Î÷_¬»ŸºÔ¹�çµ±ÍÓ^º™ËŒ ?©Çã�FÆ®� ¸Àª-È<%K|'P§Ù×ÍÇ:>u/ï@‘˜Ê¡"NŸÌrë箼ü‚¤•N†ôsQ,�ÉŽÍHtwºæØ™(õ¢M4-JÉÓïÇe8ž.2É!¢HEÑ"X+öË…Mß¶ýþæÝub}ó+|×ÞÑ9s'­Ò§¾ýh2·/L—ÉSõÖz�´ iFªÂq”VçPÍÿ'Ù˜Îê+Rjý±@7Ò?PtçVì;¡´Exžµ“¡¢Æ^IMÞiitÕíc©Údó�{ÁRÜ#`HÖŸÎï¢*dΦϑ”5.¯-Ô´O´LüÀKý¹mÙDdüPž‡¹GÁùÉIj} …o›ª«8Ž�¥T÷âÒÏBïà÷Êmyqs'²FP•$r0‚ÙæÈóÉè¯M{vù™n‹ö|í³»²Ç¹ôZ�ꤾ•ÄŠ¢j�¨$³Ï\®N‰ÌÞIÚxj⾫ VáS†�¢1ž6 ¼�ŽšÞ‹õ“ªœ°_α¼"ý JÆÉ÷/ñ[ô�µ˜µø2–DÅ®^6w÷V„�+šb±X5a¾?e¼û^H÷÷%ÒXÐ¥žsÖ®¸C¯õ|I™J´ü»Ä­⊫ÔÅöm:�ŒÓ¸·ùó1·¯¼¿ý}„˜|b*õŸõ¿­tÓ)[~+´Ä„MTúc¦×~Fi€Øv÷¸ˆ¬H¨ú‰z\ƒþwŸI; ;.í<­«“´«Ú4ëF¥Í“¼ Vum}„B§£‚Þ¿z…ãäD:‰…ÍOÃìø(ð‰utF œ·ÎZ'§Ð#qŽÞý΄K_nùÅJ'ÕOðjÏ̆­?=æÇÊ@J‹rQã&ýw‰€>ù¤ˆÆÍño€™_1‰M°¥úäÉ1‡ dÍB}•Ö‹´LߪÒp^Ã$"DÔ­`ÞñH`Œ+Šu9b¯× ^$CåU\#{4‹M\Î#KÀAM}ÖËB1+=iíËÝ5;ý•뮿ðz·«\gFè-¤õÞ‡"{Pt(/tŸG.~Â(—šm‹Ù9Óç�Ðݯ5MžK"Qg”ydú(M`CÒ5¡ë �”ê·ä…¼»^:HA‰{Áú'êÛ—†›xR¨hŸxÀ¥8‡wt®ög÷‘Õó/ç¾Êl iSç­4È©( vG&Rj]™ˆ¡©� å_d¬lëg¬bœ…E½?Š{T¥ßòF¿†k®ŸÑé‰3©o8àw¤_O¯~idç>·jËwºD´oçž¿|.«œQ~!�•·±{¦U“ϱ¯–3•h¦\Ü@V�š- š¹zh¶ûiì—6A‰`‡+oVÅ´× ›ãT—¤`K—l€Ê8L©óШ§d4¤Ê{âžÓ€|Ói´ 1­xÚ†Ž)?ï,”Hv©%HæáAf1\,-)ôË>/ÍE�gFÛ N ™tš¶~:æî™Ñ‰ñ‹„g’;S{_VK¤nµÃ´ž+-ötwÉ‚¦œRÓr ªüæï•‰åo‘Ÿò¹ƒ±�£ÿI› 0ºÎíMfÛÔËÑAyÍ:úGÃð¬dÄþ,®†Aâ–.XæZ tü¹ãÊ�ÌÿØç£þtÀ±0ÝßæPÐ5ü[t*_[yÆÊžŽc² K„Ù™d7�F‚d†~ zoäfqÇh•S›††)À©C�"ò7¥ÃpHCƒS°)™Ó˵x´:8n µ¡ÉB÷ð6#†J¢YI“¥Lgö›ÃäfÕÏqßû_Ò}hßWcPƒØ†Ôë~˜ žÜöâ§�˜Á¾côƒÈgï²Alw8az†)Ž™ìäûf�>.€ªËœñmo L,¢Eލo:">"pD®7òú—Ó­0”á^k .?"úÌ™½7O8x�~�mTÆHãešC›D”û9{Ó6 ÉJ[éë½�BªÙéf¶Ô´��©ÇCÍ[ŠÎ ºíÏÐi‚B 4™¢�ßi>ûA6V|­Ë4Š-ÃSßG£°¬ïøÉUF‡xJÙ<Û½eIÚÝð´ì~ôŽÞËÆ´Ãù3˜]â…õk&ã+äÍ7¡HÑB áU+Bš;{õ£/Ä=<¦2×ÚúUÀ–Ã×ßô«v*¶dFµnÊPYZ4í“ ñ(< µÚð^"¹l˜þz޵-ƒÀŸa¾ÀHbƃOU²Fym©ÍðÌaÀmß0ØÃBÙ{T~€æ�}'¡ ·.ºh@A=�í?ñ¶>_WR8ÆÝPå‡C‰pÁÆ{‚A„q‘Þ ÝH!àÑx™ÒWÓ�‰;d�J±¥šëB¸¹cÿÐZ¬PuB�¹[œ p´aÛ§tt/5x/‘�#U‚9õM@Ì>¼±}w^]G”ñOòZ`²)s~ËG ­^„ޝ%Ê ·3f¶ X¦’²–¥ÏcMî2U�ƒ1£‹Ñ”Ó³nDË ¤z¢Ü¤2xãª^ù²ìͱ|²Ö¢¿¶ÐÏ6¿âJˆ¤P}ú r ¯k+êÚ=¯Wòµž¦56ÖøJ‚<ÎI˜ÇP'«,M§ßÌÅáÓçÓöU“Ò“TtXûe“[…2ÐüÁmqèb)ápÁÉòÐó趃õ‚ýùßШ¤Œ'ã%—õÛš“Ë7A›ÜQL\æ@:ƒÉ1J»T$×ó³Çkj‹ã‰¨0×Y69À'ž|¨2(ßævË#–‰�˜Of÷îâøµœñVÓ8’”ûšÛ|ÓŸ—©ZB*ޜσÑj6àMå^Iqj*:uS0’ÿŠûÅnÐØ,ê‹s¹‡´ hé(ä"pá4à<¾Ø�(œb™÷,X€xÏ�xˆaÞu}TÝËÖí�€?É¥YH˜¤ÔçÌ¢I°õ��ý¸ÙCg ,Nrw¸/”ŽÉ¸ô„%‹ßƒ?uFx`]‘Ç´T¨J›uxb!ŸÑT�ˆ ÚB€Ôdµ¦/­Æ»ýAøá|ˆ™Mb™ {�6PßYBFgLè0X3$ Ë’8ÑQÁt1 äöÌ2ùvàŽ*Ù~D¶ëò›»áÔ}g¨ûEêÒȯ“ÀØ:´(óIùyº™‡ü<3ß¼ôÍüøê�xƯAöùîòœÄO¶ùÃÁ“Zk+, 'æžMð©_S¥£Ø¼¼ˆ¨Ç1^$ÿÄÀ$´¸ ò†‹!>€] œª“áj»×…¾ø"á”êÝøJšû¬#¼JÂñ«*ðùøÁ£T[#jri…ÚÅîæÆUë=;aE?yJÖ$€" �j„äšÝ|6s]χL÷<ƒeP ¡Þ_ L/€‚�²ŠÕ(àd :§Z¿·<íó ~.=H:ÙÉ1@zèÏäŸÊBä¨ðòPÏã øë.yfÅM‰X‚n²º\T'\&#>5£;)Ʊ0ñ™#7é~$«ûwÿoœ_ƒMãž]#>¤Ú nŽ‹ýÒËŸÃrɔÙ)ÿC1û€î˜\WŒq´ia�÷—?î a+»ê }3Í‚³Çë"0УÙo–&Î/$í¢* RñV2¶‹U„z6 qe!5�’è…ô.3 ØîDƒ—¬q“¥ž_E‚$°$iLr‰ýxŒl¡óý§iTkxH¶÷æ(×Ñ�Ód²ÿv¯Û“Ä-kÌ…÷2õûÌ2ðÓ6ÅñÆ®‹Îhi_Ë Wƒ­¿Œùv®ÕÊb–Û°=$f~5”�wµVIJû hÈH®öêZCJAöíøBY*e»ÑJ%N~JZvв;¿Jü›|e½Í<ë š7JJ3ì¨[h†ºx¤j|ú¿=œôBÉ@qCd.Šp» ÉeQð3dÂ÷b«VUa2�uBh%åñn¿¡Åbø•/jø(ŒåÏ)¡!IÈ%I8 �ð'ÿÕ‚™§�„!æOº�œcßè°va«î,C÷°þ÷?5Blaßö+FÁ$úÒ§þÒ‡¦[Á`£Yù P }Ä)à´àNªÈÑ2CšŠOCÖâ(ºDºÒnœ!¿˜�U«:>~ ù´Â@õsê‹‚ Bgk¾oþA‘49 º:q&øk;8pp¥ ¸)ä ã9áiˆ;¢¼H'¦Gí<#B¸÷—H³gV‘HÏ[u¢Í@ñ‘Ëkªk‚¶PwÀ+L»�£å|S,ŽÅ›) e¦ötûdÙ#`TáƒöÓ¢•h6 —�”v3üíÄDÚ„š­¶œò�¡*¯õ2o£¼¥IðÕ¦qZ¾c°ëÁÒ½ÔŸ=ó¹êý÷mÐþL;|ÔÞ‹ É”žhß¡¨³ (|¬N ‰sˆãMB¸ª+Œ2ña¦V6V¤Ã€n5±­¡�Z•)÷ë ö¸•}@ÄÅú\0=D‹��6| .˜ ´ Z­WhmÛÈÁ;PrÕÊd¹JœÓ!räé$•!–ÁX3€ù}Ü8ÐwqÕ¥"×ÒòÀ®ä´8ßšCV/䣭çFÔŒŒË<¦÷ô¡çŒ~«K·…ƈ4; °|îï éO¾µu=ô'«ådŒîflùˆE–<ï¼RkŠàfްylá«®ž{Z |S2'óWtò uÄ6û¸Îíy¸.¹ÎŽ’é]R“²ªÆ ÒY¦¯SrVMJ§º�N½øÛQù�0x¹n¨uÉ$²Ò¼Dº—{œHåÔ-/r÷™^³øÍ椆²‰“›åÕ9Uäâ@À­CA‘{îÕë3×� W¤ o[ Œôæ®e,K냶7Ø�ÏÏ/:8ë\#yÒ–xQ{Ä4šøýgîwaˆ«_‚š,¨A?vvNí»™ÊNg”Sô†ìS4[Ò´¯úp)…âÍ#Uá�@ÔÎ~ëßœ–m4=žd¿‡>ÆAõ„6ÒS¿@aRÚc&¸úÛeY±§cÙ²Ò¬¥¸b¥íãBPé�$O7Ø;µíªöíL—Ýñ3rWT^¼ZÍ"üž_3Ï~rѾ—¨;ε:M6ÈÐ*ëŒÖ�ýÜ1þHTÔÙ̱e�—°ƒ­M;~ñ�OˇE9êDœ¼¼»ž= „0H,2WÃy½UÍoÿ¥Z¢¼æƒªùæ×.¨à ðC{³À3ÃdaŽˆ�>©?røuÏ¢ªI[8Üz:6[Œ@ˆ$´Ó @ûŽ{£×"þùèØ1l N½gâwë5d4 ºyY.GB{ òc>D h{•3ñk6Y¬59 yl}‡€J@ç—tnv„�›‹ÇK ieöšd ™Ä!d·×„áô¥Od¿ÜÚóZíÉõ°» B;�oÚô�Á+˜zö!f¨$µuå69Dž%ë59HÊýHÐÇ )šF?`^‹K¤ô—í¢‰ÝxØ´q¹.—ᮑC‹µT&ÌÙžj4�¿”%!uÙZLc 4¤‹á鹿x*¿àñãƒÕVã»õc¾Á(Ì÷ÕæÒŠ÷T\UÛ2N®�“ª8Ô¦›oÇySîíŽ;]SA@t|J¾š%'Ù>�°MÂ>m›Àí��ÙäűíœpáÝ{É%G—�ú¥4{ ¶sY`5ê}™òwæÆl¢£ kÝ�Œt+ó¨q¿ÌÂ�ÄóÅBé ÇÈâ“þÝO`Èí&1ÃûΡß_[æ¾ c&ŸÝä]‚ž?ÚÚ�TÆÏe.Ø¢@ÂÆp²µÂS§Lòþv*t¶¼ˆ+“šâ#óªèç[ˆÌtléÑÇö^g L„škØ÷eâÝT¯ Y¼F»eŠq™_ÐÆðÕ2Á*3 ùñRt ¿©Ý¡‡± ±ÎN¼óÊ€æÁåšwX#-Š6úÏýÝ;Ñ»Z �õÓ ¾Ú;UýHªø_<�ǽéAGCÌ?-ª)º bŸÓ;ê`ÝË6 &𬮂N·�Á¹ e€ðš¯Fja~m3LðlÛÕ#GØ�á6bÈØ�“…ÚK¸ŽwÓí¾[ñsá_þ)’“Ò)ân ß�u bS¹Ê®Ý„ªÎাÖÿõÀ)Æ©…Ò Æß`Ã;S\€°»VO~ MúJ­Ñç¹ÜšS�%³8‡·…þ«D~ac!p’”J:_õY&Y– +6ÙfrŒîÐlbo›�0˜©� 'Àœ~ëC!ßAÑKì¨ö„TZãï¡“Xhæc¸õŠÔ!â¬_¤C!�×·yÊ��Ô#Œ{¥êß|Ëh%î ×`Ò·é7&g(ˆG„QBs×þbêìÉ=Ú9A| C#ל nqóArÛž*§‘¡ãØuiÅYSc‘'®Æë‡O?ÊÇDjžÂŒîÆ&¬2tw¬P‘~þú‘‡!.è_Ŷ¥°Åx“o”*ÆGSM "úœÔ(8öfVí’9‡‰�©÷Ác,˜ÿä(óƒùÊè•Úp”‹Ø“ºfaøuÌêó™í�ûl|Ìz²Wôæ·OCÕ` ©/O±ýJtâÔÑÇ¡õëÛ*_�ÄñçG”¼á[«A}¨:»š^ª].³Z�$’6lbK‰sCþ1VGàêêÍÏYŸ“ë¾ø'ìML^³&�驺˜xLM¥bãyáø�ÊeÎÖB· ¼Wk­ ‡ë¡ÆPQ.Æ&KÝ<Âî´?�(«+Ï(8ŧ+™FÆDŒy0KôÞö4* ‚?À*O…¹¼ÅÆCú¬#­Èw ¸]cǧ2áyçÔý-F¯Ù7“ꃊ$T¡y¹|�]‘Ì‘t~±a…¼Âüéü2œ!–KâQÑ P%³öp3 Ì±ÑÐ74†f õÜ !>p í– oõ'*‹¾¢“ÑW^–dpâÜÔ#È‘?w[óªÒøH|°‹�wO¤ˆp#¹HÃ&¿†U¡t]þžu"4jÙ½xØ}„¯ƒ‡ùŽý¬ˆæ°b`‘,˼öÃ{ï­Âc÷ºïÔø'9h³RŒ/  õÅ€6ã¡oBŽ&…8ÆQÖNÔ¨K2)-Ëý9â 'xÊZÅ+P{ÍD'5K8ˆº@*~üÇjÕOEz£žBƒœ!‚vO­ØÃ¢CËû†£êuîú�ÏßëŠÁê‘¥Øl·¥ññ÷U�€®$E~q /{‰¹Q�(W¤YÊ|i*ôˆÅÛP‘ÓãõKNÞoƒu8œ0 ÎP>ÆÒÖ1Î/8“î(€‹CMØ‘Ö@I¢Cl´¡ÛÇORó™ã(á¥ê ždÝû‚GÜGÉÇU!•Ìèg-né¸ Qå¼VÒúöUé@ÄÕó’äìGU"*Ç‹Z[§´¥/ßT  ö¤é¬|é]!Ã�, t€$ä�eB—Î7ü”Në÷“ÃCFdÅ4©uDÀu�Á4<`/ºÎ•ÞÆ{%–�#õ"�0Ô°ÎjébîªlnMÑš(ýŒwNÇØ¡ &·Ã8*Aü[ÝÅBgn¥Õ É1�!„×5×Ò1ýK{1Œ¬tÞ3}Çð}.Yæ}bÕ Hs>ar!uÅ2�zæ�x-@Vª$öYFxg íâv�( e!ºÇòº§&¼‘9šÈP›Õ^ ëÏJµµæ‘? ê † �ˆWСӼÙWÂŒ«¦1b’�šÐ`S)‹÷_‰B¹g^w‚)T*tæEˆg=‰V¢ 9üMóöÖ"{KloÀ°~@í!‘Oâ¥ÙèÀy@8@äÑgn| ª„—¢�æùt.8†V&˜…§pö%ëœ`jñ²^Òˆbó Åî ´|k`ý šÉ¢ÝÈ8ì¯P/®‚ÂÕm”z޽ë¿Zzí<“²FrÎ_Vé9q…™¬ñ¹›x {Œ04m#Ørôëd hÁ+&–W�û¥†cÍOWÒM<ûtoØc—�=#asTò:dþIw[~÷q~çw 4’›ÐȘc÷ÆNÐRb7 áM®;ù¥#ûRó]l07˜?6•›§ð™é"¸ª –ú¢‹ù‚¼?Ö9¼>•äʃO‡Ç0H,²Ó,�ÙKÄ C¶_p—§¤�ÙØñ1û�s/ý >Š|ÎY¯±59Z^F/ú1b7³  ŒŸµÚw9Ù$¹Úªòø)��aQÄ9êþ �&MýD.×%gªÏ¼%‡ËsŒø…WKß‹€;ýx‘á况­Ï–\¡¿Q4x7MáçzEuGžuϦ'�U¾ŒíÀ(�GÂ7ˆ�Hß8ˆØ‚>¢^–¿”Ü^fæÙü“žЬ9“y‚I1°¨d°Q©! ·òºfÇ·Š*$W�Ù–´;®:‹Øe)ÕnÃÖð¶LÚ[±3˜p²æÇú7–IU?°Òæ")ÇU|€ËÙv$ç÷õ±ß£R�8P7ùŠÆ6¼Ø‰º¡$®.Àñ±S:Á¹¸êlù¼œ+åò~©`vžß�i$›Nf;ˆÄE² ´¶d>#áa¿Ôñê–GCÕMp5ó ­ _ë¶C³\Øú¯÷o{ÑU¿*,�>„aâ?·Ç˜ð¸” ÄÖ �«îŸ#G˜ ù{¡A5tA ˆ�]qɨôºdY½î:¸x¶~‚J ~  ×cÐ8XÉ7©¸7JfÛf(ßÁ[ÌD—¶�VžΚpó›âäÞØœöCÔyÀ,nAmøN„n!3|‰ñ>«(ÍÑ^êw6Pš.R%I‚yDöÓøÕ†,òõZHW°ü\_)yLjî+þ•BÉaÔѴﬡ/¤dÂ}¥åØ2´M»J�è¶EnÆXìg>J_ÚÝ•ýŠô¿ÅÜCnÄÞABß j𫌿黱QV\—4ˆÇ¢KxÄø=¦õFe�gf4–!5ÖzÅ0¹!=W´é�;�cX›û\Ž&0çÀL†äÀIG$UM-²€·,‘¡ p�´¼}@ìçn ` KJúcù 3˜¡5]>¥›¢í«ªobýÜG.'Å¢ògNýyÎÊKz­.7Kõx"IV“°>òøz'ìV-6@©Šâ¶¶RÆ5ÏöDz+þäÍÛµe{ð,} ™ØM÷|žmGÏ»4˜T“òvõ6Q¡ú«Š1\pk»×´8ý“¤_±N´èñ‘C–0™µ¶€b†Å玽?–‡è²Ñ�·z âfÆlhÙÄ2¤s?QiÂŽ@‚gcѶ»ÜZ¦(›H¥ÃpVµ V”<¨ð•p|Î*‘hý=N-cFD1¥Ï$Õœ«JÐ%Èç‰gOzVU‡5‚��ÏBÏIBâkh»Hæ§Œ]C¿Ý Ï�ªÒ�ᜢÕxÙée¯˜þ®Œ¼tj~vi‘tÛ•">H’ßœ2¤ä äÊéqÇq¹�¶C)ë½Zîĉú®[ËvàÓ³è7/úðÖ……²HÁï\ç^:µÆ×Ì„½~– à�)¿ rš�˜6÷±Oæ=Û7¿Í7;>(~‹TZÆ,×ò&Êï��ådAha¿kµÆÔögwlW ý)+Z<ÃÐ Ühò?(.aãOšáýG G I¯ú{Lù[O‰:Â]59Ãá(rËå[mHndLöHóËȯÈ_%Èëv©CNüçàB›~axTïC8.ægrÍÏI|øP€{´‚J1ªc@’‹�pÛÑøM�^…i‘àË�Þ+1’»ùë]�H^^%²†¼|]�×'#˜×©·„ƒwA¿UËZ$ŠsñÂÏ�› s¶žVÔößH®ûùØ öÊê=®”½d¢ V'ßϽÂtÚ‘K�o®ÏBâ{l"Šë€ÞÈó*��íQÖU6Ô›mœ£q°¦X4©ä‡káðD ’_AgVPøÃ«¨Q„`û²ó"ç6¨(�üf– X”õù%“ñ·ÿŽx)"Ø]ƒ¦åŠeÃöç“ÉBQ½DøƒC5ÂÔvg¾ù›/'óôŽöO}Á†i‰öë¢�ŽÈílÎ êâC%š”œ[àÐ#œuû qCâ¢&Ÿ»ÂðõoY p¼1Z÷üð&Mzìgx‘(hD�ñÕDð¢Sæê^XQ÷øx\zIª…U�—0j>‰Ÿ`Q°a÷/´_zR2äeð[¼¡/Qí>TÔ&y›…ᑯfÃ4~±R“åé¦KDé6BøVøŒ-MExåàÖ �<ö5)»ÙØ=ê•ãÉzïv[æ0 Ø@ÉЫ¸ÑŒB�K)TÉèIxÕ$¾BF§š¥8—=ÞúÊïhP@Ì"b Û§–]AR#êüfEÅÛ-+oèwéƒüàäÂpűÐ@mf" �‘à�é Šº8UICV"—8'UÜ�P®‰.oqĘ�€…«ÿD-ñN‡†'¹?.`[QÂÄmü Ç<¿�Oñ¡\Í·Ö£VæÞwq)5�Nåj—¾ïyIÔÕUÀ›¶‹p0¦e¼À¬—¸Ô °—ÂÓSŠ{J~2Þ‹j�•Y¯�í¿Ç‹¡ ñ~ÇèÁ�¨žÐ4àŸ¼<óÅSË™Ü4KIpfPlŠÓ–D +Ú¾”×ëò¦Kr‘þ b+ºÜ7̼¨3aV-’[7¹Ì”_«*™Êjø$?ý�‚aºLª‰Ñ6P˜h%YŒ^*�Ktf¤L2�—JdŒ2¿=&SÏK"7Ж‚^Q€Q(Á¾œ©=)�ñoÑ2›tU×hRÒRâõG7LR-J™_6/H*ôJ}8ßÑ1a^%^­p÷aƒˆÄ²zäêtå°ÿvùD„V*BÕ DQ>Eq�/ž—¤9½ß¤fcç”|°°®ç©pð;ÉžèúìûT©à±š¶)�z(ó] €Ûß"€{À›Ö�³[„—ˆqÒ7ÅVË®æm•·ˆx«œƒpW~@T "`I뀑ÞÐ @¾(€ãD¼l…^…Ç¿+®4·UÑØ¹e�_Wäw½SC¿9X¢ñãk6`Ã×ðÜÏß)U&«Ð5ôE;Zs£»ðª É«5¢§ËyÚ@r—¿p¬Ôìm‡«åì+#£&ã×8ß-%ÇÒ3ID—·Æ Ádœ, ÊÓïìW�:¿Ic "MåÚ¦¼.*øé#�Cqà$�fJ£%HØd;%൨)[�Yxƒ<èÊl=™Ë݇o¶�ÅÏÐéƒ;{á­V I~xHBŸ€q¹=ZY?4ßü½%½g�%ûñ—Eo˜øK:a Û»}[Wðw±Æ£bfÐà8ø zÛè©�ÑR‚f4„j< HlîþÖ³Ò¹]vÁ’Ò3ZÒÅfoM"í¿œF#V ?^{Ž4�{©=Õß�öLùãñ:ôr«™µÊ\r8ƒ�WëÅ —ÔpðNC†ÆuŠtwb«}!÷õ…›7ãÊ`Ù¡F„ÅñA—�h^•r½“Īäjü8áìDÑÖMv c·çwfón¦ó�ë Fvl$§À;'%±‰¿‚¤QŸÊˆ�Í”8*ŽrV2#넬d÷À5Ö—ŒiÚ>օЃ"ééÄ'Ç¢¢)$Ùx€pPô_SBDnÙ.ªp*0%&ì­ïFÞäB�¢EИ±ž´_þè´’‰õ"¨Ì€O¤¤vž!òÆ·‹ÒZ¼}Ð�Ò�6¿ñÄt‡Æ IÄodç7¢XŠÆAúÁ�‰;2zt»¾¤¢VWoWù9ÚÕ|öMxúï;ØD»¥M?Ÿ8•–­ï´xÁpgB£´0Î��?vB©È$f¢(-âÞ;ƒˆ ”ˆÔŠº: HTP׫e«Pu$Õ )󡊽);š¶!ôÁð…‚‹·³²mz‡ðbCX—ÈoÊ•%ª^Á±‡�à3i~¡Äb]˜Ø}Ëñnc!%©-Èòj¡ºîVâÝ_¶âf£Žö¹�¾7Á‹8èϯ8l:œËâKý€O¤Ã å�™æTm'^&ëîkëÚDZp|àõ–ÓD¦è8<ªÒÍU]ÊG¶äªJÌÊ¢ÍKšAæ¥nj!mHE9”Ò�¾,\d©¿W¸ï BAk¥¿£óÀ×lÃ~£ÉÍlËøÄzYÐ.E뇧¿l#tX2ÈÇ_‘òÊæ‡$d BÍjàò, 4°Ô€’3öº¦´ ¿Òº‹tùŠýløÀî=¼ÁùeÞ²úGø­Û¹@„8€r‹&ú4%œ˜Fbz{íþ×I…EŒåEsSúßÛùòÐ R‘Ï:ã¼À�Ûºrb.&Õkµøšp}ʨÅ~òà gÁ”0¢|ÊîƒF+ªš¥Õ·H„ÎÊÓ›�Äù•~¦îä¯Ë™æL­( þãroÔ7å˜4 ¢RþE\jHØ ~,�¨Yð0UHél'0–ÿIÓâk~gK™¤Ñ¦�;r~²à„‘òÏXA h—þ ë ^Ÿ'Ó~eH™ç$Ìti»‘ ‘ꌊ8aéþ‚È™ýzÚ¸çØƒ1´½ÏQ.qb8ï´†–LŒÎˆ¸ІUâ_¾‘O ˆ¹4Z=ÀÈÆyÔKDýð·.Âåé‹úL%©?ð{¹�äéYÍóê ÛXQÞUü:™Û/Ç�;Úˆýõ¦èjµ¶>À”س;¢É!.‘¦éE¸ÏÈ0Ø8*Ðéµw(öÈò“SýÁ:êHJ÷™ëQrù«+Rv¢7êGeVh�L—þ$C™¶ }4˜6Ýsœ|8Bë^âßâ_œNHŒ§•#¸%qo3] hóeª;ìý]×Í�á¸OoÎÀ±£w °õ˜~=¦€*]=˜‹† Æ;ŸÖõŸl8Сé§t žlŒt !åGÌ€ÛM·=i�Û¢í–,à xz•I¥þˆ°>~M]„ÍœÄiì­øèX/lÎÒw®ÙáMÒ±�{xÚ7éæß\¡•¤]4Ûf<׋†�x—ƒ�AÃXÔ£b /ž£y|rãy ª\Œ¯ï‰®�Ç£E»EÆ‹ÊöÈCÍí¯à»p’ª0aĹçü„¸FM™â³‚XÇÍ|ùAÖ9I¤–³Ö1®á!¯’Ä?…Ú˜Ÿ#ñèv ”$n²¤¢ ‚›e ¹Ë¤ˆn�/ÛšÄs·$QÍPu0m‹Ý…ªg"äÁ®–÷Y äK®ÙîÞ<:È=CÁ=l MŠúªq¦!Ä7tã{Öj0av¢É¨ˆ3Ýt1ñwçÙ'™“hæOYd¬HÝôcr¹ žW9/f¤IBéiÚo‹w/&Z×DÒ!w‘Ç$��É#ÆôjÜÃ'=‰žè\|�ê ›Î»`än q:4ö4’¤xš¿$Íó5…¢¤¨N‹aàÝw tŸÃ»ÄñA³çÏŠ,S.A-º5NA“ðKVf®Ž N±9Ëñ~×o‚–Ë} KïS¬/e>o“¶þ¼ã¬Iö+6:#­¢nä or|Ó²}[Bn¯Ç@T@$Ü?9o¡'N”yÌÝÐã-l›Å—Õ‚• >sŒC…L?Zâ]·DÀ‚Á,ù™é ÜN…熬¨ ¸zöËá†ø^ ,¦J‘{bˆM_ÃVztw#¡kÒpnø ÛUøÉ϶`D�¾ªB;Õ Ú‡é±XËMÕÆÖ>sÅvcÙ~†Â“þzd¾ýeö«™ >jõl‹O-…QÁ¯Ÿ÷Ñh¼7p[Í; oo›RÓDï>Ð�% /¼i.¿ª¨%‹ß€lLó‹ç[pÃÍ$^gYÀ‰‹—% –ê>½#„4ßY&é3\ø„P@Nu¬Êë@§® E°M}�IýÖÒš%¶• ëÚHꬡøi²=Hxg|Õ:2Y–ÐÔ�2ñÚ àÑÚàáå±@JEgÇ"´ØòI…RÈ畨rZ;¬‰ÏJ¥°D±Wì _wuøÝÖ�GôÅíMã¹ÏšCˆ#±ç#jzr3�š_ —÷Ý࿨ǽí�]¾[¼Ì§eæ‡uã1ö…âóû1_½Þ¤7{†D}˜=º\Êð‹qxuyÌg宨tõä*!ª.™±0Ú "SÐc÷=žLtÉòÅaÈ^{øU|õk±Ñ£?†.Æz¼||cÜ9|ÚŒueUîóÆ«,ÝñˆBšZìâ9WY‹éÒiÄf¤è€òÜÁ§[ýu¾ ¢ðö±:ˆ�}ñ×�ôýyCè¶ÒÔÕkã� ¬ù/½8ï€~µQhÁ#Ye²7O¢f®OM»d»b¢�­ºyc‡}ÄûîýQרZ`Úê-¨õ XëDZ–™q<¸Ævïò1¾;›$Tû£6Ö~P7L|�c/§¾»t1o{ª‚b¸Âˆ¿÷)>½Y€ê¢ã#dõ«B*jþfùÖ×—ª³ ÁÅê°Ð¶`ÍÓê*vdqò:‹)cð³¤I¶7fª)bS\nw6…Í8¾+Ã[<³”ñÈwV6\·¬—¥$[Ñb–�h;f8Û|ëY xYÐñpg�ÎA½” ³õY4yp‘óqáèU†¦Ë´ Wä©Ï¿âoRÞ§#ô¦èßÀUG+Àöo7.š úÓà@á$iB½÷ëÔ.®ÿãD&�êô¬%Ùòö¬Çû”˜ÎÖ@+g˜ŒÏý·�1™ÃX¢ n(I§!(ïÿ¾‚æ 2Iµ ‡M]¾KVü�Ø0îQ¹0ªÀ5{ ®TãKì~9ý@œ_Ä µ€Ë'o/\~õ¹]VÿKýtßL$k¶·xºðƒ*l dÉ^üâ`å1@6™˜9èü.]=‚Ô>Üô:¾ÿ!ùëÖñÙr8ÀÁñÜSê˜Ü¶/JëvŽ#Œ;³¼Õu…Ý~°(,»·t?ÙE�›¶€eÕ·Z"µŸÚxÇR`�«ë¾)>»KsŒPBC©rœêŸ@¿qžýŸ—YäÂ�}ç™©× R’öÿ�ÿÞ:šWMœNÎfòž&3Ø,Â;k˜7N©ë¹Ÿ'>#¨‡JrWa_¾Ÿ8?)¶€9áÆÑHAb%¹ ¿:Ñ×3ðáIZd”>JÞ¼3 ¾§€ÇëÍq „ˆ*&© 𓡃¬íuyàˆzëBžz hLW[fu[ß§½dù\Gø3Yo-}™�â‰i&b$üÑ�Ïýâ¾™Jßs÷ÁEò+çV‚ëµi’8C•Ý}×þQ,gÜ‘igßgŸ3YÀ9]� ú÷¡´ÆÛ� ŽAc6 ¡P„ ÒÆÃE½\BBÈïThŠ1yǸZ�;Áüþ6cGJF û´= ä=5$}qú`ÈßâG;If ;¸tDdO¯T»ò-êâ®?ºy T Ä·øf€­Ð•ð3ì �wßA¤ORnR6`b´ ì*Mdr´®e2dÑB1úv`%5º—àw5\‡Õb<ò ~Åç=I¢¹ƒÂÑݶ’ˆ¥„ÁÀx|¿ùap%ti¤o¥ ÔºÝ~ðÿù¡Aæ€x;*<~7^Æl šR÷Q»Þλ š‹ÀA‚//(“(à^FH8¬‡8Ör…t曂O!ÐÙñd°h\H76½åæ²öøGüæ{ñ¼×L‘!トÝÖÔŽ�^À“^RîªÝ΀Ø%à´ Xf¢àB`oþdÚ?>N°¬J`åƒ,øNfÇ3øk¦Ò�4ñ1hŠevùX çÁ‘qpp ÞH0Мô÷Ñ�žºz�Ù¦!Rö,_€ºÌØLþ×Ý<Â'»'ò£Ð*Ò¿}© x«‘ K�¸3šiÍÉæÝl›å�E¼ä`m ªñ6”ùS$ܸ‹½eE ·lyJ)5J'(s2ùZ˜mè;xo¤ËoabìÞn‘¦r)u阆ùB?ëÓi�=-°&TäuŸ2ð é0¥nÖ ê¼å¢À—<ÁQ0Ú™Þ×Òó�/Cê?þ`ÆÓB,¥’š�µ–çGŠ)•Âë¨,l%=ÊXQ cÛeżП—Ã÷nI¸h:$IÈìùYkK¼ÿ0ýRµ #hÆ!r™|œ£Y–{ÄÇA4J/z mMç§©Sô¤X«Ú‚±†«2'?\)ÃU� ¯¨æè;-Ï’Xp}”Ü¡{<Á©~#ìc¸'??îá·‡X®ïzÜŠ"™ÈF“޶kKþ´4¿- ’Ïvˆ4²ò±pïåi=™ìã¸æU˜^o úg]Û`#pÞ…÷Rt‡avñþEÇó/Á"ï õâþÜ­:§Å¼7Ž5!˜üõ@m”ŽÂj¼àùšæâ‰cUÎÈ .i$™ó°°ñRd†+Rï¡Ç¬)ÎVOûoº�Y&H9CPLW•¾dÒz:L¶§‡`?*:úg-¡û qg…è ÆS|©ÛKDO«:öOÏi¢�0 µ“Ÿ véà+Æúî¤ìc)«þ Ñ‚¸*©fqÍ×ÌX€UL ÆÙí‰.ßVXžhâu2Ÿ¸Î¿úÎÜøè»ËÞ§¼î%Ásí³úæÍàÑC²jù`츫Ôd;c@àŠbaM�7Ø$ÒÔ—Az¤ê#ØË‡Ðv8\}<ÁHJ<¾{\¤TP«Ñ¯X%¯±�ÄP/åT\õ ¾¹éÉŸŸ:É9þŠo‚'Äðb`@V¿2ïQ˜ÏÒœ_¹¿œ\û[�$Dc[Q"òFzÚÅi� Ä’A Ê*‘2õÓOýO¸Ú1<¥1ïÛÐ×]ºëI-Ù&ÃDó.�Çì7pÍ=G¾“5o°‹„×§á¹ÊÔ«o}mD„ˆ®0d‡{c•¾þôTb¤nÇõëöS@¤<É&ˆðÙ¦[׳‰J)çÜ‘2 ²¥×ei~²ì? ”A;?îý‘•öþjÃöÛÝ'°‚4´Ùµºd¼’-ÎEÅùêŠm‚` \ÓžÝm 5ö¦¦’mx?«ÂÒ «%²¼f.Ü::®‹µ«Þ:_jptXÙ¦–5ìr!Ó²C1Ä)1ˆp�þ[—Bê¨ZÍ�tv!K7Qe˃ÿ<æb'?B9;܉ï,¸) n¾šÕ‹|çGóKdŠv®·£Ìoì`"`2ëþ×bÃ=m)5­ú0q9AûaH'Ÿ1 Ô‚Äå)ZßÙ¤ª(…5¨�w�Ë e¤ï|üfy什LŠåjZÛyLíÝÞ 1{ƒ>?é‚E=#Ý{âdõ‚liÿ,(YâJGD1Š �È…©d{¼–iW.~œÓöˆ‰2(öò£HÑ.¥gÃïvœyJ-¡�\.vØ6g/áâ8F|YNï‚�FØ™ §_ )šénm?’|'½Úg=‘ñÃÒ¦½A¥þ8 €§g¶¤®eö䊪xºçö‡äUa¶2Ú0tÐâ|—øéžÎôp™m‰ ¶š/wV¬ú43»aIÁSw"åú‹Ö5ª‡ÚñoŠLqZcãƒé�Ï}EÄgMž5%–æbÓèàLCV¿õÓÙ[ÇÓ!s ãW"äM#º™|€{¸­LÙ¤5FM¦» A F³Ùhnƒð½GoÔ[° ­0S>Y´"É|V#J‰C¨^ˆGœ¢Ê"{Ô¤½CͽN_ïäõÊ ë¸Ü¶ÙW÷"å&A\ Ë�~à5(×j¤;%±&ÓöV�ÏÉÏ“ç°} ’`%1ºÄƤâÔé3IJ=`ó�¥sI¤ s£3$Ke­�mrɧ˜ ó�·Ë,)ýáüu§8�ú{ÞæD§¼�þ3*I‚Ì…²äÎ)Ÿc|†Åä)†˜H&ŒWÕBúwl> Ùm«8•x!ã<£–© 9”ÈãPŸ!‚„“¶RáÑW¾™282äМÛ)•ÆdüTÈÝt†qÔ—�_ßH¹4­ÄašEîu²Ù\ÞñÅeÈVÜ \¬¤¯Ð�)b@úMJbËÊÿEüñ]kÄc¦�ͪw-ghÇ^„ݳ˳>6Ì}‘[w�8| H³@**+œg ‘ƒlit%3Ô«3+Cœ·±�iô%3Õ+"+yœ— Ñ�ìaô$3Ö+$+Sœ�ñ�œa $3×+úU[œño0ºƒíÕ••Á-­Œñaiyg,BHÂ$­‰Ž/”)y忬MHÂ’­…ŽÉay•g,@Hϫ̭iŒaa}�Ê¢ÙŠ�8„ZËãÂR�*¢Ù‹�„ Zó£Âú•G³!%‹¶Ö1&…¥UF³8!¡c´f1† %•C³!I{´V1Æ ¥UB³(!ŽP¡8obÙàè�fò>@—΄B8çy^LÕ8'pBQÅÕó ½›û’¥�~™$µÔ¼¢Šæ•†z­àŒ�.¸9gJî0eÁÐ»Žš.¸×"tê›aß;Ñ3:ê§àúœÙ)9"Ô�z‘U0)Î%äüœ])”�6ʈ0–<´ŽF*Ø'(‘d7ý» —¤M¯aÊN2CðfÎU¾þ¶›«—íâRø$'£P¶’²à~‘G…|žó%ÐXâ£%#£üAËKZ­‰Ô™.gª!e“aýîåýÒëôÒëãSÜ,ñ tŠ#1 ½Š¡ †xà9*–0޸¢: Æø *‘0ѸҢ æ ðÙùJcŒ–nÁ(9ëSŸ¹“oVf(ããºsæ*˜"Jü»c£ Ö(JõÅ!àƒÚCIv'Pü©¤|@U(1ÀÖãÄ_ÝYš’ì`ÈqfEM€ 0õ%1Å®?!ªêsÒ+¥$æ Xp\GQæ ð*I1f˜Y\#XZ Ðü©+a¶�ù»æ•’"ìóœFð¦KæÍ{þùQŒŒ Ö).¥c`{qR`#€ø”:`Â�Ms,K}¸?¥cÌ9° ¸v°Ì@áU:”bŠ÷E1¼&°t@aøS?¶ÀìóÁk_ßP@:(ݾxÿR1ˆ à•üWÄ÷@*1é¥D™)˲­:޵­x’ë¯%saoú�,mËŶ¥Eì9wlÖ¾iû¡¿Ú]ØÌ¸ ßòÔ*É«7a¾ÚtظªÝߨý’ß ­Õn¦ÇÕí–£VÝúŸóœÛ1ï!=K×¶›¿o%ê„­6’öB¿MokcD•c;Hl ›ü{׈mn—Û¤oKÔ¶óØV.µ£Öú˜äi»Ûù2ËÏT>2=Éàj á�ã }{x› ?‹‰¾íÏÿ9—o›Ó·ãºée�ZˆÚZÝE;RìsmYtß.½Í)vÜä÷!y‘‹ÝÓ–}ñæ¹>”ø¯.‡¹uR­…óÕ-p},ñº.§¹…Q­üªäÍ7}4ð².ǹQm„ó×-4}2ðÆWr‹¢ZáUΛOú0à¿»åÖMµÎ�­=|½=šR“À:—–Û|Õjø:{4¤f�ým”™ÜÚ:Ã7Ø£#5¬£q‰¼Í?ûšyTRf…u .I·e´vñuóh¤Lë\nóOÕ¾võ”ÙaÝ‚KÁm­S|ý<Ú)“Æ:—ÐÛ,ZüZ@TQfƒu.·U´6øõ€h¢LëP\:nlÀ_õ»y°�@^ä°Pª}¼°O@Þ¦�ýÔuÝW‚ò‹Y›j>ž2ûm’bdà’·À6áʸ;3?…m¦·×SÖĸì-Áˆ f¶×xö·ó¡F0 4¢ã5˜Î^Y#âúF° ´vÐï™gB2‰y Œà"‰ aCô¤¥Ñ‘;ì!oôŒ-bG,a›~#jêIllŸ PIÆv^XJ5Ðï›| �@Ä#sŒæ2éMöêÈÞciÂ"¡™,3Û9«pÌhî¹þTH-F}¯ïƒ*³‡û3+ø³¢L•9m1}–Ñ@£¿Ë–f8• P¿FdæV Í4„'A±4ªFô 2Í8„;@‘4þŒÈÏ­"šyo€iÔ�è¯À€A …p(Fùˆ¬Üª�Á£9ú“WXs^"t×½F¤(Ä“SX}^ît—ábBd(ÄSPX{^ôÿ#RbŠÉ­ (+ºãpQ"2ú“ ZP^ô_Ñ Dz@l1Ù ÕåDwÉ›n‰ì€¸bòAkJœþ_`DZ@ 8Y Õå@w.DV@pò@kJ”þ+ºƒHAÈm�~íÕ¡0 k†‚f@¡ 0JY¶êêžDÑ×¼Ež_n¼•©—(ðסñOkKøk‘®„ù%÷'¾¼¬žÎGônç–tðÃ~²¬&AŒmMºDÂjœ¬îNGôlÿ$iÛ¯ \ì9¾á æ�hÙ.>¾“¬]·êdH¿¸»ÝRT뤖ùœž<Þþ°ýÖã[Û’77R+áòä"§pPáa'å^5¿[ÈÑwK$`ëöDÊ–Þ2 �¨ “�ïý°‰’‡‰¢¾éÖ�µ½uzßa»¸÷ž½×ËŠ¯6 ×&‘}„F[&Ã…2\oJkhDßü2³ª$e›Þ’ÖØˆÔü ³ê$‡ eœ?ý�Œè—_nV�ä¡ìÓ[Ú‘ž_iVa䣌қÁ‘œd÷[üé‡-œ<;úõ3%bõp&ííOŸB·è {~,·�©á9>hŠ€»Z²s!.s^Ž1<ÛNƒGwMꈺ-m9K>üfjwìIï¼Ù67;ÜÄú ?¸¡g¸ö2 ��U©_õ„Ûé±ý-Ç÷è¥pì-+̤Þr‘DØìRèìdmÜ1ŒÍ�ðã§k)5n-mGÂaqØI"¹[æPäDdAÆõ»Ouežš‚osWùD166îUÜ¡äI64ÙD ´púx†}Ùz¦×ç·¯Õ>®Õ7¥4ü.©Û¸~ªl_-–– q(¡¾_ï,n6•LÊ7•U.ëa�XÒœs ydè,øûñNx¹�Ÿ²Ð)ΔE±®|Jâ¥7äCà‹ëu *Ðáä)&%¬ûnÎÑN £‡Ë4Oñ­Ú+ùûFŽ¡XÃ.J¡’ýüòË"kÍ"« GòäR;>_à+©À,ýr·éQ:º�–ë¿õ½*ú‚o:ãgt†^ ùÒ1\tò)ò.pþtÀ!8+ùûüT¡+¶º5v{8Žê«2ÜÒd9!¿·c;;¬qÁÖ)�“>»çn‹Ã£z4¡jÕ~¦—cN.˜߯®v…¥*ÓÍh=]èé�7ç$åf7yÙ¯þí­Y‘y¬¸3WÑWÑÜÕXHî&œúÏR6Ò_]nˆ�ÄsÓÆ†àZôã×±š¯±�zJÕ>KæÉ–£MÏ/{ ž­ï7J�Žº|@‘â·xxo:M¿oŒÌ0÷v«L]IÞ&.Mî¿:ØÖ�ŽÈ™{tߟV® ìG¢ÀiþßÓßïÄZ�·f±‡Y~\©3àâ ýÍç©ëÐóØ—{5ô¿<±�™”ßC¥à÷>8‹.8û>8Š>Š&D$í:(YÊŠ\A”AãÏ/çYŒû•¶ò¬%ÁñÛÇãQÅ5]øsµþz‰`¸‘>;$qÖâí‰!$ª°î‹{Xµ £õuÐTÑÒäkn¬Ÿ/YÖ3ÕG4n`ã¤M®|Å‚a?þ–€’ûfÜÀ“wFÓ:áÎæõ-)ûúÛÖécë°�ðdñÚâ»ÊF®h«µÖ õïú]šýyo»ý[�ÇÝóIGÏÞdZ+çºä‹ñ ÿšKŠ|ñªo— qe§Êjßó–nîÈîgÓf~Hƒ˜sÄœ”´Oôm+ö’ù‚æ¯êµ˜¾~î•ÒÇ,~œ…W]S�¾™:…ªÙ\æ’Ì\°½vj©�ÝCÓ\ÄŸúk×ȶVâó=t¾)rT?y¨©{3Ë9`Ôð»•Ý�x\ÎÚAdÙmsÏ�´kóàga/×|ƒ…åÀo&ÃK+‹˜ÑWÙ6Ë—n¼‚ªÖ,¨y7z¤ž ½$8vêYäÉ/'^ð½?G8gÐP'TI¾è¢Ô�Üu“ƒ•n+JØÑä’b›Z¿`² ¸ÀÑüÒ ³@‹#°äè!Jd^p]ß¶•|Y1#þa_OØ7 ÝN×{\ùÐ&û§?zÇN1ˆÒ ã½±ôÉq5Å»ÒmħÞGõ'1g…ø'SÇ÷ä lâžÜjÊkþbêÂ=ȸ;Ýmbã�¶¬.þkø-�b ~—©ÓîVüû(6¯ø]–j_åÌ®äøá@_2<À¤P»ûxš–îYA×öú"Öær^NdõcS?Ê·U¶ÛpØãO]° ^U#Û*×ç$Äù1ªÕr×-I”ƒ_›yô¼×5ž£ƒ�,<˜— ã�Ýï²£7E 7†'ý÷ êA?qy?\úñ÷6¾Óìíc’]Ky×Oã}ÇTÏ>¤ÇO‹RB²�9¾s(_“f²íú“;k”M×ù­³]7re­Ý¢ñë|O¿ŸÚ ¼Ÿ}'x-´µòʘÚç§ÞxƒwEg}àºèï¹Ií±ÛÉ«³-\æýJ_¨ÿ!�‡tSn…Û"Oè]'íY¤ó˜Êú®�£…}~vJŠ'U¹ã‘"´»Ÿñïu‹Õû×Ð?¿½ ÑÛ*<£,YÈô”cº{yÈýûYÌ—…#ã^z¼L®íuXÜ´±G÷‹îB­1Îf÷�Љ¾¸iã#Wù@zT ·$Ù÷7¥¤W5Ý×ÁlÃ/Š�„¤n�ü»¿ÝIX"úŽLÎ&ºGƒe˜Y™8–‰/iKêtí}N¼³Mó5'ïdÈDJ#®^E2¹³o”+žéèQmX¯†ïÃ7Qž?@×íZÿ| ,Âó#U ÛÜ%Sá&ccÉäPÉdíɨ3Æðõý{C�ÉÕ_¶´)>¶§É�Æ­ãíº¼6{´ãílPãß¾5>ÕÌ%Z¹#¼«4d‰{m“Ø¢ÂÏ;wPuRqµœ¡ÖsÀœÆ_»“ΫhwIv;“çý*çµÑp,ú­duÅvˆŽ5Iç²9§÷+•<Šf$õrÛâ~éXä¤T¤€âÏMN’yI(%ÑÞzÕø ¯÷�[WÃô>dmëÏ{µ”RL(âÕ;°äµ¹ç{à˜Û×Å p|Jœ%j ]†Ü±"QaªLlŽP?&žkoeÜ\…+ó‹¡òÒ(�¼Î†œL/~¤Ô°þ¯wÓZEñéš?uÕMï‰�¦Ë¿× ¨-ËÙq3¨­Ïñ†(ÖD¯#aœû[ ÑÖLv’8¿WL²¼ésï~D™Ü5¾v¯š¶¸³„€u>67›G"”^ WÒuêÖõñ2 -4?x­zALôØoþ2,„įÞY”Ýfƒ'= $3h•gO³—ñqÅo×XÛ€*~@ÁÖÛ�@·}kXˆÛ‰â�ÆœÿváKܲ·Þ22�8Ísü«6Gø‘á: ‰ ³òy-g ¸ç˜Ç —àkŸ‰®²v¨‰õÑÌY0y÷b9"FbΦ}Q&¹?êò‚ÓÅl´‘a{^>ì:É«ý'øÔí­Ç-Ü�pYÇðŒ£Ò¯w C£b|Ø|;?ø†œÁ(ïcPŸòÅ@僗*Ø+´#ÛñVÖXe›®=}o4©Ëî -r-(¿œ_„Nø^Sd)ÍÑÚåG¿X�5†Ç<~eœyìÊ+ô¢Z’X ¿9µgoYå†>” þÔ-¹úÔÍ—?Ò󅼦”óÅùžQn•ëÜ0�íÊÆú7u“[x\no¸ÌfôçX ç76C I~u¿1¯îŽ,yjMm=ÕQaƒâû”ß+óÕïÃJ³òÇAÄ D�´ÈÏϲ™ŽñA¦þµÃ1Ž[þ±:ncF Gî%FCÂŽá÷àaÈ‘`8ß®æM4 Ôž± ùKŸþïÞ"eÖ·¯Ç]¢aUÅÒçËEjÎÓ�¶‹Å‘¶³ú‡Ø[rO_^®;˜-<­ù(ÞÃúÔœ×U-œMc nî½¹üb/DóÇÊshmx&ÄÀØ+wæ:`¾ì½Ï……zÆS”Y·Wç¯tç©øÜÌ8¿.‹ÇªmÖÝ5âùžbì|¥À³5­$]%!bÓÓ„šÑê./Ÿ¢]4šIm%U8Õ§·qN¥Ç}Â{мÕ…µ¼™2…©eI—ÿf>, ý‘d"�?»ªý#±eIZï‰!È5O:&’S‡¶ô¢4üFÍ,[¬lDl$ÃùÆøç[`P'Zg¹±êµ—5½éKQ¢Ò—a©™ãRu�އŸ˜òßä£Iwé1‰æF™&V„þÉ]ÃCùÞ⬻ÜK,Å/­ú�©E;AÖÃï�¿dqý ¹ÃίT]žž†Ñh)­ö'Ò;QiUª.“!Z&™`ÀIž¼5çì¶ÃÙ7‰§ÂC¢Vˆ�‚$‹'rÞ<Ù¨Ïÿ¾înü�p©üßmò>tf¡Ãg¯õÔÛˆj£¥Õ_Võ0]¸LéÚ/já­fl¡Ô£{”òU×Vç=LæYés¤;KS*û­q“›Ú‹… ªY Äk 7 »!Âû }ô¬ õÝ­‡h†e~^ ý„$`�Yij—L:¹…á ÊÆ:EcÑJ:¨Ìï)+t0À�¶ðkí¿½\î¦BéH³‘¦/ŒíØlCOº^hp!szQ”•QÄ+5ø•‚ �Û›ìE•ñ¡£"BJ¿b^œ3)I³†“–6ö+lö‘ÿ1÷_½’ß· øU®îÓ´˜ÞõUKƒ7‰‡Ä©_ð‰÷�0šï>dUýû§ó2/=¥Ê³3‚`fÇÚkå9$‡¡Pç‘È~v�§<æ9Stß# ]˜¾÷¼Îß(5;º¿’7.|`6°ˆ Øw5¨šß}()¹O°¦§Žǧ2è_l #›î¼½Tìt³6ÄåË2ò'—�F‡'dá‘¥Là©V!8}ó>ìCWïje@Dh¿Q^ÖçâúðÍšO™�;¸µ^…2ºitÈûËÊÒ7uU¸Nú£”Ú)!]U¿çE‹èŠ Î‡ þ´Í0ÓÍŽç×Û|¨Ê“/�‹…‚�"Ц;q1°uØ?JBS é+ /àÊ€¯é¯&Øz1ö¢µ^ÕI%¦–:„aãKˆ¿]PQ>ð´íQ¾±´‘‡ mi¸$ /²Çÿõް¶HBŽ.y¤MÏÉŽÂC“·(ÝìlžŒ gŒ“OLƶPhâ?À†YÆK¢i×kGHªcB¿Ÿ•Ãadr,øååàÐU]â²cû²›Â"Ÿ ¢ [±4iî³ ® cÖEIë%&Æ£¸?€ÔG2í’FxžÝ ×ñÕõnèºmÄ!?2Þ¸Ko#±e\…T× 'l­îþì‹0ˆÌÍj@ï¼ ÆÀ؈gæ¼î#ýÕo¶!¯¯Ì@}z¾«–„‘ev>œ„¯,Â1-Îñ–¤åSeXì­À3Í8¢ŠEŒ©ü5÷ïk¥:,ÿyì¬,¥€œ·=$J㘎ܬïÓçØ2Ô™ؾ!Ôs☇û}ë_Xʳ>¬c�ÝrU*ô’àA|:Þ{ÂwŸ–íÙž‰?´>P)„VGÝa7*5û|g]`<ëpèEA=d€’Ã$Œ-—[߯ޮ®ýTÀÈ �aùŽïÔäûGµcZ1ËŒõV |qf¸•$‹*’5 /-¬)¬Á *¿èÒg]\.>«¡†hv�ûá›UK~è¶/ZOÒ+¹Í3Ý$ Dvÿö«)ìñs�_·ŽÆa'dX„Öµ†GGt; Ò“ËL}§‹�¨ÈGŽJŽƒd† št�hD¦ïý�ÚÄ)Ä*0ÿ’ Y床cc¬ &ê&~ÓÆHƒ ZüUVvýÛ{?>÷ꃽÀÓŠ<3v{^­ìYd’o%¤«¯š©ÕÖ�� säø¡®løúŠìB!ý2:rëËx¹î} ÌÖ|“¯ÄYEänrßTb{R§¾ ‡qz'ˆ º·!ö^É…©Ä°r¡®»€ âÕ$ã¥3>c§Ü<çx*×è¬L§S+MCa aÕàø2‘›,�O¶Düô(@;=?ÃíyS5¥ǯ¾h\�Åøe*w —×èGëÐIiö �QCë+y[C^}?Ýhp“‚HÙÂÉ#ûñ®&Áå*bq7êÓÄ‘ôÅÀ’>:͇‘!.ÚHšœVœ¯ •ÐÖX.J,y�Fýê-`¼ýòëºìiõˆ“â a¿]¤ý¢”+¤¢ö¹VO»ï³ìK!2G0ç%@Y2X8ª(¯Ðy¸ƒÎ1Yâä^Πµª¦ßËtcÎ*CsΊI|»ÙÖ¾¾:U´½©Ÿ‰ƒ è›F�×&´pÌKÉ­²eô/\ê<§÷L59‚ ÇÜ–1¢zÏÀ±ìË“U¼ñA™Çj3Ò£Þ!Ô†.箯)Ã!îx€¬Sñ™;D¾ð¶vÙ×£,(“ôw;ôða“Àô„7ŠŸEœ˜Ý"úœh÷m0Cæã¯JvÆ|iÓ01zäëþ%ïi«r ‚Tt+ˆiÌP×å¯e¤S¾ß"vàß©�s p’™MÜ÷û›-ø•”Š1[˜/Ùë2¿[ÈþìÆšÔE«B&ê †üà�|™¿ÿX¤¦bØ_�¯žœýï�Â0'ò¿²mwÏz>íì��ΧÌš<í FÞ;?ý.@ÃtÍ�qí 8 ‘[Å+”Ò³ Xb9æ%)U«pJ¡ÃêéöøM]t²7÷ÚT’$ ÝEº|à|?"9ªÀÞ ò~ �ƒÔ¬ÄìK~zk�Kí™üH4¢�±`¨ÍBzµ ‹é?1"1Õ›óÖUº·ËÀàÓ;q8aÓ+Ë'šã3ÐlÌcm— B�¸Þ3óÆ´¤‘§nÝŠ æ�ú¸±ÑÅv†È§F ãBty¡¤?‚Œãm«IÓ4Ë·Í@�€L#tÛAyjºz¶wˆÌ!¼_"–�X"íB^ �¤Èå—ÁQ"e‰T‚eÒ€� "ðB~ó4.¶­’Ä“C®]€NÙ£CŸ¶i0pdØ�é ±$º‚p0ÐàN7 Þ%X9_ˆ^íè¢S¼ µ‹nNZl{ÅC—®å,§ÅH·fjp S”¹[�ùipu]7#•¿(±¿Âc�ºÈÖyýõ»�@0Z3ðb�È� ÄG®¨Iù�Ù=óì3ùRPÏ�λœçf“Ÿ¸Š@è Â+°�À(³P£եñºí³‹ø¬ß"/„ǵìÖûF-@Dâjò4Úáu ‚�&o;!dŽ|ãá£SÒjÁV5{Ç¥Œ‡ŠÚRˆ~ý[p‰M2ßæ 2‰Ëun�“CÓbÙ*zG.”Ô–|å÷ fËmQÌ<£ýÌôKµ ….tûÁˆGd›àQ( Åñ'T­×L£×Bôœ8Ú• ½æîŽìíì†ñNñVÆz`Þöi?'„õK‘Ü—>/óz)å5+ÜkV¼WÁ¦Ö袉â<öÔ ¬ò!»Ë!¡ïÅQŸUˆªYˆ>ûcãÇæ�% JQ¥ôÑGïŸã�Ý?6,ùX°Ãäìøj))'Ç¥   Á½Þ½¾l½>ä½~л^ñ»>6»Þz»¾Þ¿¦íÂkÙ)Ý“ÜV°ÛXMôw§ªîûäº1ußC£ºº|ÕͳŽÙ¯ÖÂçgàc­¾;erTá÷·ê“'ÕÚ%ÅËW‚ùýFfÏßÍw²dâîä÷X ¡¹ žÊ²ä ½»Î“p§YM|_4Ñ—‹ûº]&œÃ0a*cü P½¦¶©NL‹T//ÑcC9zè÷e¯crÀY-禙}Oj½Ô‰·‰ �6M“g_ªdb£Û$ÈÀ ®ÍoâÇlU™pª|úP{@˜š”5lÞã<êÄ«Uo¥b“3¬çÍ[l±�f\ÆJšc|ñªì÷ ã&øÍ*f»—Ô¯ÖkTÁD@WšÝµëvÎAq�Ìzl—íÊC@ÅÈõ}d0 |ìòœÁ3áñc)ªL9Uñý˜Ð‚ŸÄ»ø²a-ê{PêŠ5Xåå–ø“ã�, ´ Û/ü๕°ïèCðC§—c€F€®Ø£kÊ/aªeÀû푦 ¶Ð„w© åÀ·)1q?Å¥Ömûu]aR5[r�M}k;>ùP\Û ¹\ W°mOÕu•Iy»mßújæ¶Óôr�nJžx˜'× &EKÚÌÀP= êÜÄ…¶é‡;5yŽY®ú{Û¡„+Ûš¥§µpÑçe?¬ §G—ŒÑÚñY÷Î wCGScaÜÃS Õ·51îZxÀNœªÜ1ÅG¬úÔ‹¦—aëñ ¯/6ÓÐ5½¬Ÿ›œ¯ƒfU=“«€™|»%07 vìfs{ᡆ5ì(è¨8Øž!p|@²Ó¥YA…î4þÛ9Ñ·Ã=¯*Œ9�–Œœ�ŒžôØþ±Ýcýdž ¦¶Ã.}ŽÍ/»E5_8µVžÆ'þè9Éîhe¹ t»Â—JmQ¼œžJÕ+xšqܰ)Étpý,=«0—JV®LF.D¶ŽDöþ¼òç"˜Í˜˜]?/çyÝÏëåflfމfN‰rÏ*á\…¾0SsÎp³ uŠp½ƒè5çÛmÚÉ‚]›ëôèã나®¯.¯7ß϶úžú~²µdâó¤ŒÄ“`ÕMÞÐ6{Ùï+)]3šÛ瘲‹B™ÏL OŒ7{!2Ê`0Tž«°›aK-Ö$žk<2jÝÔóÕÉÔ‘¹“ßÖ„‚–°‘r²D¤ªqGè€êÉuÒ’+È�á¦åhlÈgGÝò!nQ/v’¾zKš¯´zw@t…jªea¿Ÿl€ ]Ù¿ºËÉ6ñ�, UcÉd?o1ë€í[$ç­cQ�ªnš…Æ~º.¦eo§nQ‡•ùÛþ ¼›À�?N.”]ÖË|gJg¼ý~²‡ –Ï/… [^±¦ðžà,ªuËÛWISGŸ1!~(L˜Õ/ðŽ<ôIÎ;œê� jÐÀª+Ox´`òâ¼ÁoБ²„V^ ˆÛ¡(å�Å÷,1�?zq(ÄÖš…¦ÒwS>¼ìB«UmÀ\wùvóD¢ëÚžªÆU郎2›n€âjH½;æåâµàbŽàÚí¤A;<1àvª8Ϋ^"Ô<)Ïzթ뉓òB†ÛæÏ�ac,Êœ!Ц!}Ìz·y&Ò= ËnÛø0…)Mݘ `k.hCÄKh"‰C�g@F ©H2‘hã-‘D´&3—ÕÙè�Ã1èOH’·Ã‘…ÿÆj£Q0<“3U¸nÀI²à*•y…]‰ŒÍ>�SÜ5j4[a<·G¾LŒˆTƒ±‡„ã\#’„A‘‰¸@hc²ÈA'=§� Ђ~X¡&níŒ .Iª\¾¶r}Éøníñ½ì U~]Ó]d\«³V5.·%5Ékp©På´¶vC\S³6Ù./!µ'Φ pT•Ȭ÷ë4Åvy½æi$¼$U�($’÷dLÉàƒÐ�¤:ƒH´�³%–¤‡5ߘoýQKja[„7ä)áaS�SÐ÷‹Cv5$[) ˾ïâR"\ï‚Gk7Æ©¶Ízù½§êúð^×õâhz޶W¤Jª¶¢=ò�Rƒ©ÝÇ5‰myÛ@-œ§FŸõód…”�#Wï:Ñê¡ MDc›ùš¶‡1v“‘îo�´LšæpqJõáO@�„¡j¥âÙöìj-Wò(/$v|~8ëmt#s —=ÅLRt›6íδüîß’“­ã‹¢Ç&ŒÝ8º Õ ®fê½X&’¼·Î¾ŠXƒƒE‹ïk;5TÆLÎ}ûÎ2“ V ¾]Aë×À ’ÐïîÙ0³¾ýÞÉ9ó3íî’¾ø¥¯‘ÀMÛ1™Ãç}øålûY‡˜ÜjšD¾ïbó|܇n�·FU9]B› Ä*ÇíDænNuRg° ~ñÖÌK ppá/ûUË­_ë°_óh^óã]K5Ôp|~ r~vʃ¦¢åЗ™í^‘}HÞ×óçÞÈgÎñºâûݼ;нÉS4šzãç!éæ$—¼ÅŒ%Ùt\O}ÜR¸� uÛ’ÎH ê%—�&-]orȨžÞÃÖ±+^(0)h˜¦;|°èd Þk&¼ûp _t¯ûZ7þ¢îûLW=[(êÝÍ´ÕÜÇYwó}H<ßâŠób/ü!ÒðPÖ@šP£$kœEµØxWþ ŠuHðØÒåÂÁÅÅLSK5©‡®ÿH,ܰàT¶5–}.(åO3—ÏeÜ„í³ºOó1P½³(]á¯bÁ÷‘¼g8 ϶ÏP¼y·ÛX‘ç“•ŒJeÖÑX!cä¸IÞä¡ô€v°w`«�’òHYͤíw6Ù³VÆs#‡Ï|tu…Û˯/¬jl°ÚOòÙ'o°»O M0RÒ-Ÿ„K·F Sh)�ž5¡ fT5jOÎưӗ\ìékÜŠ}†ðp�¼ãÞïýÀ¥ß*Òò €³®ççÄ”Î^û�*’¼ã6ˆLå õò¾‰ t–©*n‰”óë³{úí÷Éz/Ã#ms3Ü.yÅñg‹.føÆ-ê;]Ò`i?íQ€·è+ÄgÒв|Y…ŠšùUÞô ¬üÂB‘Û‘ä\S=Ñ¢£þpdÍýz¦;…ò"Î ç!Üd?™a}øêZ%ô.1,à §2Ðò*øŒP~ÀoÊØø©ðrmrÀÒl¢1}³‘¾û¦¨n_ÖKâAÖ ë«_©i¼{&ò|ëJSÒ¼R‚'s‡b^ò˜`@Üñ®P.HC Œg£ÆX§ü¡f¶Á×-߃üÈ {™À #‘¯aÅg‰¯ö•oóÈ1†Äz\C߯j}¬l•˜}ײO&XâôW*±ï/‹°°Ž½vV¤ly‚‹bÈãXmM9;%œDq陬I±Ö‰¶‹,¢6 [ŒÁ3¼Ì°}E•"3§ÉÚ»` øùPBxª%;P\XE%èUC‰å™Ü‚Iàt]’,ûSÃõY¿®¬Œ½¼ûtæ�ºVä4âäô:òéã ¿Õ(MÈÉ+«ê§›œ0†M•®GìAc ÔS4™Ù#DùP¿×È‚Añ˜PÌÇ8òÔv¥P3Äë$ª��÷»PÄœìNŪÚÌ4ù•uÚfÄÖ)–Ì€i²‡»90tÁ˜�ž*ÊÄ—ŒfdÁãÎìÔ—Núûx.OòÁëê C´r(ùE‰VeÚ�rÎ>ÕWlug–²×1¦—¸g“ÇØCØ€ó�Kä1•¾·Ü¦%“¯J‰çØA  |Øä—&e¢ÏªÙ1¨„è·4M˜ —ÒÛW1,øa¤ù sL±@äÍ\z3n¿¸~°�„ê8wÜAÎ�›•:aÉX˜|Tíqбñ&œ™öAÔí|Yü®ßÏ…;Ú‘ÇãK’ØÔîÀÑZó=¦ë+eh¿€˜bs:rW1Hߊ•·[?YÑ…¥]E Ë\ø&;0�tõ5P4M�Ÿ#x«Z³—…Ÿ:­Ÿ×.mã4†Ô'î Œ/μü#@ØÝýN/ V(iøWŒû²(iB7QÂÓ*Ï”Ž>â?zõÖÕ'ô)·æxÌgÔÏ9ÆË ÊàP1á‡õñô>½¸ï¢#Á£±so—‰HŸîZÿž˜ˆ t½-¾  |‘Í‹jy” Œ~2²ïÄôN´tL y%üt-†G2R÷K÷kSËb«Ñ³ö_/qøß÷þVr8õ•áÅÝR‹#³0ÃæãÐk}ëCÎwŸyÚôФ*Á½ŽÎ{{èÖ¦DnÛÝ/.0Ú :?PYã(Ëá' lðEY4oy—ÿs5Ëë`d`seMÆ…Û]±Ñ vnëÑ�8üVì¾ÐÕ1eÔ a*í_²ÑÀ…–‘„õ,Mr�]˜údÙáï! õ­GcŠ'µHâ]½ÎïW_YœÂ‚%ë‡lÕŠžâ V/Ùb"¨”ßtR*/íP4ré�‘mŠðf*ˆ{`gñ.œbR·�”å–´Å=/2ìóT`™Dš0ÃBu'f6fߨÇðàò!æ¶>í£ä�ò}v_B�TÒÎQîŸLû+wåà ì×# Ž÷4é·ÓKSýÛII¢QìôÔê;¿¾¶€ QoÄHc-ØëÂÕ>2 )cæá�;÷IÓ°P”$³Ãò…Ëφ]ß 9�! ºhîÙÐ û¶oÖý´ý+Dt‹M1Z¨<¬yO®°Æn6ê1ÅË‚<¦‰Š’U;Æ�4\/õ©Ê¢&_²Ke­ÎÃíѪ¦&¥•ë=?*ZÕò‰æCc»\$ä›V`Бk z‘$^BÇù–Ûö m�ñœËHdsöTs?¸Ê Ü„’¶ÉT-)¬ &`˜>"p@,ŽîZ¡ ù« ³¤Ô¬­T¡º3dê!ÚV;!„·³xF~Ó†©Á\ãã%úà&*øJ©–¾#½‡Y¡/´.×Ó‡ÒtJ¦#„ÛJ…LA ôï}$&@¸’ë”ÑýÎ t¶÷)œ§D�CZÅÝжØý%ÚF)¸hG}…¾áš¹& àÅfõÎZ"�A–Õ�@X 3žÅçÙp.àƒy¾å‡�•œ½ê÷[TÀؤ´ÃZó>Ô¾i ÜK¦ÿþô.[BÖÌóÌÀ¼m£�+òÈ(­ÊO¹²dÔ ˜eS¡n•´ ]߸Ç\mk½þi’žÅáH·¥ÞÔû`C‹‡|´õÊl€¡�:í×#Ó�áÚÀÈæ’† G3¢þ‘Ka±éS(kT`a�5y­ÙúÙv߇üiÕ‹d²RoH²’a¶w#`› ï™qt¶Iû¸BŒÙ@­4ì !|(”Þm. �mBºÚѯ/ç 'Éh�FÞvl¸À }†…Tÿy<>AüìÁ¥qf_þ"Kn1C×`¨âéIˆï™8ðÑ6ùDœ3qy““Î8“Yåz�¿{?zoè-1Ù©ÊÍŽjñpü5°F[½þvß/ùÍ-d¼’Ö„œÇ™.w¼¬‡pû*žà—Ý)êxb0Ù¦¥ÅñaOyØ€çŸ7¹­IMåý0†Ö1øsCyJ½'ð’Ö1¬¼q6s–ÑÊf»ã#'B÷l‹)5‚JÌÒ á¿(p�lÐu�$G O»%˜/â�ÑW¡–½ä+•jáפN¼VhÐ~¿9°ýÕ!~�¼t#ò��eD8v/U�hEyõ®Zé�w¦Ú[ïd¦šÚ]¹Ü  �ÓµI¬öÎ÷¯ß=íâʤê�¸$âžH¼-ê ©OñmšÏ@]qÕ4VØ#oÀ�-²ÿÃYöâ¡· äáýÙÌ4HA9ʆמ[÷p˜z–%Ñ­êÓÚ^»›ZƒÉæ‹ËÁù''Ø„¬é[$ëp†ß·±¨9pï�X99•yúÀßÞ_>RœAÏÏ14eÖ†IK9®§¸�n~Ù£»ÑëL“9f’Hp|}°/i ì,úYMŒJê ¢2HÝM%8x�@¢Hi1HjàzxK ò¬bv2;§p¾Â=lïæ˜åbð«šE¶ì»an“›x:’¢Sƒ«Hd -à$ƒ&YL锯ÃÖñŠƒjùn#âèç´ò– 1¸vºãB®mI3xëfaeç]ÒÈY§æeæ)[‚Êø¨S–ßǾQ>ƒ~�oÅMú'VÚ¨cêö” þ�´œæU޳Nóéç ^•u.ÜßLEaŒØßöj㪭©÷tö2ë$Z× le¢$Ùh—óV¨«¦KuÑJtð‡½ÉÓœÞÝ^µPù1Æê»+BX ªÜÅ…œ©�3ÊLo°•…bÚÚ ÏÇs½VN‰)¿NÏjM©3¥��ÚŸºd{Æ¢•ø•E1ÝÜLú”¼÷Œ#ìSìÝaÁ½1r}:㻺լ��35«?kÂøó¿?7šqö¨%ÏÈ®ÝÛ5Ç#ï Ìoa0ýìwû~»çMÎ¥ƒ€¸x÷�T¦›x_ �.kY’Ò-¡À´~S0ÞãBðï6iƒ¸G!´Ý3j÷4º œï9²t&f^†å'{dVÌ”zoôEûä§<ØÅ%Eî¡&|ÍCM4B ãèÃ`m)/ð¦{¼‡!û¾¢%H–I�®÷EÄñr|´=òð�…¡7_žN l‚R)Ý£¶C§6V¯ö¼€ÈU ž˜EŽoFÛ<ø/«0cJì9ˆ  ˜‘² .ƒuƒWYA)§¥ËTŽþ¦s Kâú¢®òV©ö,ïìêûéekz[ÇCD jð®i÷°V�ê s�A€¸nç›Ф·“‚$ræÁ…š¦Uµ2&gT´‹[qØéÁ6ÌÌ_DÊݨ-Û}±Ð³õËÞ¶i„…t+‹r†GÙÞ Èy•d› 0–tž]L$«ð‘4c8Và‰#¬Eíùç÷u±~!?éM´Ç\ú�bزÖP%Ä|°Çgî;h¨Ò£#|(˜¶1ª€�^ÜÇLíY0C�G°{ì¡çñæô€�rxrŽ˜¦�(亦Ê1Ñ:ú-•Ç€–ï¶«J® 1A\Âîé0{@Á@À¢šo3äyÔVWâ( Ù†»è=ðVÖÐ&«)‚ä›5Å4�cû™„ƒPÞJ‡fgà¨D»¥Z—áG@ž\˜�ŸbÑ"à83–°C&L ñyf�¹æ…ë ÔÇ ›Å^¥ñ²é¢0Þ$ ê/`¯G lä Cl �Dɼƒª ÞßV£ „Ã…,ñ°ÛÁ2­HиÉ�¯Ê¤þȸ o”tÑ�¾;š1¿tƒžðn€‚ðÙÅ-®sš„) Wñ„M¤Ñ¥a kZ[“^¢QhËny=nGŠ}yÈd”£kŒ¿Àã*’û=›äqÐ#7žÉ/ü"#ôT_™‘Ô‘ì裤¸áäÈ�kû˜°µÜ¸€)å%ö[eò´™ÕBP¤ÂÊgóƒ<3RÃ#qmH“ž±UÈш@“:þ­ª"Ýkîy‚…µ >“‡7è†"éD”’ßå@l•©Gw.ð…i¦×læ“MZߪP{F¡ ?ðàüùø°í ‰Œæçޝ¶/Üñ:Š.Œ�šn§6¬/Ž*Ø¢+án:ˆ¤³¢$Ü9©<Ú?ð� pÀΊ]  mKŸ©|ELØ,gÁB"³$3ß@= ºOg ¨x¾º0¢©–Æ[í¤4r#®ð \º›€¹Ûùa“‡@g-XTªDÞOÞdFªJ�àDàÒ�C[0°·”›ÝÞn˜å´¸Ú» ’1ç¿­/X{ÜÝ‹T<‹Ìfv¢)2Å�[~/?Spï‘ÖÆƒTí©¶‡R= t¨ 2?E"9$#8(d葦Ä.48[•·ÍÃݩإN„"=4í¤LÛ‰†1|øýr¯Ð¹}ˆÑ ߯86¶ùÎÓi�Ñcàߢîâ…È�n‹ÔÞâ� �Ôá'ô'6¾ÍdqÓµ¶Ê™^7Ö;”eÛ�jyTQ €ý°ß É:y¸`˜ðáe·ÅÛ¼í<ô�o£4ßšy³µÍ¦Óðq‡]c¡ä ɯ94"GD„\žµBéŽ+;„A‘×÷]Fù1™ÓšÆ/¬~¡rŠ[¼xÈI-œÞ€r·üºW7ƒ*‚i_hÛô„l|É‘ˆÇ%¾Û�â|ÁͰx­%/\XaQ'Úzµ-L?�ñaE��Ì ú%é�Ø«${Ùd(T9pBÆ6YÁôƒMP9Û‚CÛz¿U= r’ØV+�Íñ�ÖfçðhQ¸”†‡Š¥ß�(02"EFHÝf È*?ûŽ©˜­@ÃE¾7ª§Ù;F�:²‹G×7°*ò"Åȯ’§ ‚{6Ô˜ÍÅ¡«aݥ܀‘>ó‘Cñ"Á«×g‚rARÆóN³1§|h×¼`í‡ 9Úƒmo“ÎøÜAÓã yÒ>ùYU£i÷n©€ÁÁo#…p9—mÌÓ›P‘HÀ˜­ÁŸQLÇž0zmAàÕV„†YÀ¼¦—åQ9Œw¸�ÑÊœ–p” AÏeþOoä3©Ò~�€‘Ë@v|¨êïbµËºÈ8akıš!×™œcãŠF°IcW˜v6|¹»V3Xïh&èÀGæîóï=ô)èVÕèÃâëPû ^½ S±„&Þ,À0µ¤¹ž·‡ŸÔ»$9›Ãö*´@òzÇ,ÑM{AYfÀ‡r¸oà*·�ŠâlW¸(á»-�ŸýþAÄXD"ƒ~4ýB�ûR!OzDGàS°t[¥@J¾ã:µa„y¹„Á㦦Sà3‚KܹEys¦^?ªXÝ>´]´vñHY m=D�$YŠš½&ù&Ùç]§òn†#§BòlŸ|„-©¥·ÞVƒ0ˆÚ|°‘]Ê[ý» -ÏXâ`йdÚ>˜µCã¥Æ' 1†* žôV�71‘ëè‘\Kû0WÁ=¨.¢Îa}d K1JK~&äéÊÓŽøh0paŠ„m†Œ(Kº]üy-¦‹\`û’ÉܸwP}Âí(̯“Ï…Ÿ&££ýÉÍŠ;Ž×Âêk‰~O#ßWç_Ël×ÃÃt>!b›fà%�/+«Ì›…¼³Á¬YÎh{†¾D»mdüÐM/8ÔußéKuüH ¦ðáüƘ7ÎÊÆD¼­@½ d†­[ÆÝ�5zI:»¥Š™±ïÀfõѪV¤[µÓJÙZåb”1×.*Ø x1é‹ËÚ'êGv]3¦Ê_E¡¹�î¿§äÚ¸ ØÀzôP˜uz†Ý‚0f¿‰/Nø*Ù$æ>‰hÑûË�À²èŸ+ŸÀe4dN©Oe¼ ì“*,ý ‰f ˶Üõ¨÷pìKØ'!€ UPÇ{\80®.Ðó�%ëNäÒ½+¤Ý/_þ=Ò3Š‚$’DcäúG™ äbñ<²»èl±ÚöXßSݵLÝ�·;sp ~ÿñÛOMAý uýˆÊðŒ*jРÖövO&>OŽø®Ž ά؛ðæY%%> ÍA�zPŠ'ÚxqGu«Ej«Ö·¹½S 8µûŒ†.× nPÍG¡¹�;[[SŸ7n+ »µ¿P;J©”ð€uj¿†÷å›o²±TË“YpyaíG¨85ãïq¡¢\36˜ˆSµÝ§ÔUŸ8&XŠ™"eŠªdæ€sºaäDfÖN®£z«Ò‡Öy©AXù ΫÎKäjxÎ¥>“ýj(9nWþÍ-ãùO¿*3DÎ8_]Õâ ÁÌûh›Lé!F,ær[bož½kþHîCû¤›Mò´ÎAøÎÆ–³±÷I!A*”Tæ¯!¼)fÎ~_Û}3šÞM¶cj›Á4SM’ So#ÔÜ3‡$3_s¾dÙÆpô ±fÆåŒ7Dƒ�ßÃ`¿éKmE+¯cÞC¥Þh¸g‹œÂÑ;Nüùûôgj/VÂùâà·œš/ä{™f(} \x5Ê7Kžz›Ðë—Í|�jhtë>ÌÙ‚à®÷{ òfaœø‘ßþœÐäv54ëMݳ)v²Å¿ûe|áç2–Ü‘¿!Ü÷õã“âè{öž+ø>–1— ’R<2=žíˆÎ±ïš¨m;°ù€¯8¼ ÁNˆ|GŽ~¦£! ‰Šˆ­ÑB‘5€Ôtj’f¯èÑ–˜A:¤±¨wŸš?âuh¤¾M‚ÈkÈ`CÂJIÃü�rF;r+¾r?¿ëG)X� ~ÈAîÕÚjGVÆLI߸©cÎÍÓ×-2âK’>­G>ûèk)~û/ð¾pÙi¿ä^ ¥ýdÆ0è43zôò¾5° 2ò“àÈ<ËÐ¥UŒ”ÛPÞ\Ë“»Åñ]ËC+^ÐóVîª&k-ò=‚ßÐ(GÇ¿c‹½�&ŒâSš ðfæÒI"ç™þ¹‚j‰`$e~Ø(üˆ#gn=4LÂ$‰Ó{n?h#Ë’y �ÿâ7ÓÈF3I ðhw슠²<å¸1ߺïÜÁÈÀ �¾aØw‘Æ>6é JóœÆWL¯Ùuø¾ª¿š<Ž¥d_F^ào…µy`Ã÷O”À™5K‡{ �4f8³¼ÁÊ"ä4ÅÔæ,Æ#ž¥{ž&†ÒõsÙ}M– ºJ³¯ûc}´;mƲ¯:©•>׌Oþç"ÝÅ–„×0]»«ynxe@ìa8{½Üih'òï^ɰ7÷*½ë)¸ß%è ˜ò„Þ q$uÒçÅïiŒ7 ߨíë�Ià lXó8æ¢ÌGÿ¿µQèÓyïc°�!“Ý€E4⦕eeÕ ¡Œ�4ú +çÊz$�ÄÊAœ<†GoK�.‹Í JB£t ü!iF>19ÞϵÞG[±}6¾³ʑՉìd6EÃ8ôjg"Žf}„BlAŠÐÎL "9¿;²$Õ=;Y_R¸ {¥¡ï£óÂ=.ðnÝ$Õ ¬˜{R”çx?¿Äž®Y1$3ÌÝþU‰.]_Å�Ò1¾èskzÑÐ“Ç sˆiÒx#tW÷jû�Òµ êñn¯çgÞ#A´ShΈV`[»/±}_7šÂF¼|Ð].•X.†;°�¾HUæ�|ÀÝ*0ª‰‚ Éo‘�¡ ¨Î‚Õ žû}£Ïã”é´,ÓÇ)ðWZ*Ð`ßt£­<©1ª{L1 wã&ƒÚƒ¯€åïpIÑ™·_¨Ì�â…+ð\=— ûîB3Ë—5^‘BÒ)ºâ M‚Ð|ûÅ{kç´,‚ Ä1Xøe•ŠÁèºø„Ždn”&�p:"ä�Rˆ¾Æ‡ÐM©X>ô²UvPCÊÚ=°l�–Z펰 a§ê’lAI+ͯ(5yZDxÁ ètßôA]G” BxL D"ax 0(_ŠÏxä�Á&ŸmQ9 nsiüØÜDìÚlÊí 5) *a®Êþù-­I Ro/(eÈ/îWås3¢z�å¨ZFjòº dXèlY²²Í7ÿÅú|tGÜü°¼¦�ò1#®uSàäšFˆ�7óáÄå9«óí�x¹ŒÜ´�ø—mŽˆˆYàB`ô04OÀ2~þK;Qhû{È�7¢ÐÞV™8Hl¶Oþ$ºÏÛY?�ÀäU·{ ñ&7ïÀóòí,è�æ-ÔÑ‹>Fs¡=x„É.oß ™};²_‡ÈG—­Ä-}Ù·”`L¤pˆt®LÀi–JkeÜ߆ó§ yOÒ,d ãt£“@Á=åJÒœ§˜‹[²øv]¢gÏ1…’äEÝye%ª…nw¤w³@§?â{¿-“‡º¼(Îdv‰|\Þ €iOå#'îÙŠå¦'ðìD¼?¡O7:â^$>0Eáí‘2>óüž_øA‡UðÐåA:ç/ÔÉ�Ú}í¦“ø=Rt�m o…'°hÈS£Ur�–›Ó«õ"‚QÈE¿°w†ÆDÇ û ×ALp`© §3>�ÒÇrŒÑ„“®h¼!h¿õ·ÿJßïlaì{ ýB'LìhR€/²ˆ_�V'Ñ|šÔÍ#z‹l¬‰pPŒ±HT4²,f"ç¾sí Õì<É”_\D²Mº»ƒ]IÊh$­&‹ó;svBS/Ô$9.¦÷3/Åç�òlèbm”�ÊØZÑŽ-Â�9@ ß”}93¦¡«¾©pðQk‡êœÔš *˜#�rñ[qÌ–ÝI0¼D?¡Æ@íÁ%Š´�,ý”¯hŽAˆáΓß/Ö÷"»iÝoËÊÀ:5�2Ä�ã˜%Äy˜{H±ˆt}.À Ñnj6×®ÚBt¯›KÄd³Ö€ %Å¢çsb/P„ñÄ—A\À½;ˆ’~HÓ]¢\§5ßjDð¦*ú /á³*yÁžíüÖfV1NºEfJ¾aCêêÑ=£š�N¬ŽSg9š.ßwÑ‘‚'ÃNi»¾Ÿ¼‹@ ­L—ÅÖ�\Í Ó4‹3ÝÛY뿨|¥Ÿî= ¯kj,Ò–wdìôÁ�j7\´|¶:Œ ”Ø=ZúWte«fY#ïpp1Ë&ÜXºfùºýˆALIÁÊç/‹³”Û§¤Òß?µT–ûÈÑ ³Ôa-+DñÑÕJFQ{ZÇæð™O=È�1JnI ØíÉC2¡fQI4y¡½0:Ëû]äü£c²%Kʤ<ñýfP¥AUD‹g|Sº¤Ñ•EÑi€C¡x¨iûÝj9ž­ýN�è^ÒÑp¸ ÈÄjf)ý@øÖÔDŠÕ²©® ‹Oð`ÍÇwÉʵ!€iP&5xz5•Ƽ`ÃÆ=LØ!z'ð j<¸ìq;1T ¾×zŸjWÔN$ö‘ƒ¯¤±7 d3ÕÅAôê0ë›&©»ë-…:îN¿ZM²�º'°ð.µÈïZÑÃ:¸µäB°%öð-�^òϾ(¬D”5—¿Û·Ž„˜µ9¤¿eÀùÞwMZ„`Ì�(78Û7ŒFò䄯áɘ瑯.Kèp¦‰ÉLŽÝÿù§\$[W1¯äi•áûE¾®¯Å{�ˆVƒ…g`”‰ï°ƒ§A5Xû´&-H¤^ûÌW.~Ç îîßã$}åTj´9tÿ.ªpR¾�Š„=Z¤´v\Ž–ï5ƒöC–2ÔWD±ä‰Š£k(¬vìOÓ×Õ½N7ðs´öÄó7—´­ ^;OHSfDey?˜NF˜F.h:O¾xó#�}N`'ºµj!lËRòÉ-R?^„¹ïx´DuïwÕ醵´©L£fÁˆzºam™ªKPmˆù†‹¾¬ÞÜÓk|ÉÔKÊëZ\J,ýÊÑ“¨__ñY±9ñ¥Îh„…ŸÊ]ŪˆêRc²¿d*__yØYÏQΟuÏ7¿ ®•ª��·´‰½¶>(¤OÈÜHƒ>ñ€nÑÙYaÉ"ØdÆæ×}°‚_—§Îªù¯[:K½O†~ìÙÕrX5È~¤UààJô˜n¾‰0'3Qņj(£{ú¾ßÆk³Fñä‰Ù–Ô£³ˆæxJî÷é”�¯. ô:RàV!ÐÍzÕqcä‹íPø–'šÙQ#ÿ"Ho´ŸM/-ONÑ,ƒ©ž.-Óülþ¼ Š#Ò�Rt·8–fÃér¶v$s•L TX¸L›Åñ),íR_CVSÚpb›Å×mãñãÏ[sô6†d�GB!N:¼è�Ë>pCþšæù¾ü>A×ZÛÍ»Ÿ|a@°N͸ÌT·„sȓѮ{þr±¦¾ Xpqüúnt&ó³ÿðT# H:ŒßÃõâXh%T2øz¤§Ñ%œH©5õ�PÁIÜÄI™‡V:#MÇ,£ ^r\ÁµwD.�$kÝY@ôj2&¯ ýa5R$YFäï Æ^¸9ó¶$¼ù)¤²üºö8M‘WH©ëáƒ.Ç+L±æqá%ü�÷�ræçd�sË­•ðDÔý(�ÐI6=øðâ¢s\?-J:4�ƒ$‚ZÎê/>b³Rý{avŽÐ¸’|‚V>£êÛçþŒ£ý·ÌºB‚ í+mjðå•C<–}Ý—qœ>VLŸViXþÐé0òͧ¹ig¾¼­t’�}÷Óß§/XþÄè82„=¨½&,Ìšö�ölK™ °x ŸFÌOæ$–ë­ Íû^�'Z?Ôé§…„ž‘ìhÚ�6;?lùÚ Šò�âR�ý£õkÙ=ä/|‚-ÿÚH z#E Ãp¬ràö· †üfü¡Q"ENç5¾ûc|´xî7‹,îÃ�–à™Z>šò;>¬ ${ðpÛ‡ëHH:E/Ço¨�VÔ”# Ðº†¯A"Ô‘¬Ç'à…|ŠÒµYÀãʆ™ÌXÒ_kpnXª\ƒ²X×65@¼)ÂWŠœ‹˜öM@.zïŽÿ];ºôš¦îÇxþpA²Å'{85/ùu#8‡ëÔðÕ¹6æEˆzŸÛ^|?ürJn»­,÷k¼»¥@z´7|ïÓàÛãgÂ<Ï9Õ×¥›ÏÁjèf¼}öz“‰&ߘ ¿l²0ûíh­jAêuó·üÕL {-Ñ6-;lj‰ ¯�ô Šc‰†›F=Ü©[@œ=½ìiŠnoq_jbÛ0vºÎ|w2�…â/U ]Õ7¯JÓ[çŒæÎ-ñH‘ôVPë/õ‰$—òb_ãÞ4¬÷oó3"äÀ¬xlŽ‘-r¬¨wëÞ6í婯—V@ï´ä¸I \±åòŠglê…¹j”u�möCÅLWd’í[)&W…§x¸<ê Þº´½˜¯óÒÉ·¯£˜ÅUw�Öy61æ�¾™Ó> 0±U¤tÊý¸5:LÝ+˜Ý?$5³I©y¿ZSL{ZîM{"wsS»M?Ù-½y‘ýÊxµÊ·Y^¾Ž0Úû%Æ58{î‹æ^Q~ˆHêR²5…šG`ªÖ@ìX²¨¦|WÀ¤ê‡¤DÁšÚvZŒ˜r¾Õ†ÞÞ�/©6®KÂþêgì÷­åe)þa“ràÖZÖX¹œÝõÝ‹°ð�Êb|TH3‘3˜E[-�Ö’ý[mù¶‰$z¬âäuš†�e°hIÙÁýª 1í‹TþÿZµ0nͧ #>ã#‰ºdç�¿áÞ·Óq£�Ê‚‘1å §ÉÈ®W1WÅj«B 3DR|šø°63xz„rV$U‹ôŠÎ@‰†*ÕÈ·¹Z½óÔ«1¾�ÃLµ®³î´û/&-­ðèyhM&L@¿¥:%#àÝT »Â7l\.]By+î÷�ºD§Wn I©©3ál4µÓѹGÿž–‘$Œ‰HÊ¿`¿o}1þàívOÈhPõ›÷S…�‚ÙQˆ ^f5/¼�ˆ¹Jwè&¨­ºASD¹> "8’¯º™c6ÂZt2ÀN)Û¨ì£Ðh_~¿â"=ûâ“€•8­ËÚÈýêM%ù®8�UU`ûáY�]p‡Õ§¨uêJN•mƒ°%ÓZ Ô÷ÛÀ*û»ëó§>Fªeš{—í¶)\ÞM ÒPSÜ®ìâ9z�n/øxöE€à³1ð |û3­Ž­JÒ>Á€Ù±soÚÕÇÇóª¯Ë@GÝ`Pei ™:ìQÑ^¦Ô‰r+�lÕ¨‡Ì`˜%”®A홌öd›«§s{“ æ·kÇ•¢ô!¡­$½­Ev��^×ëæ\ãûs˜ßÇ ßs-e_Kì‚tÕ®¡,5@EÛÚ)¦Z3,˜œªù¥×?CmË‚ø�ð‘ÇšÍyŒ%¥æèíûdIxSû(Þryhýá¸Ë9§®“Ô¥;ó ±¥–Qé7ßWq3ª(û#J+­ò½·X'¨‰©•ÁWὑàáÛÛ>e¦ÕaßÉdwÑTs(}yC‚gWlƱË?íú°&€ ¥‰Ì‡ˆ2’Å‹ UGÆ>¡œ‚¹LT¾]šùpeϦ;/LW2¦>¬BäY«,ÚcÜ\~,œ�“4•ô ‡0© ä8u{ø�¬Ú ¯$´_H jª~©Ê�oPÊ´@g PžBp[ÌAáN¸‚¸jÖ¯ßgOyaÞ.E²®mk¢g¡´}´þ7Qª° ¸¶‰S?󊋾 ÔÃYï ·ìà)Vß ²N¤)Õ[/JÕ-_=(ô3ÎÃÕ~ÅfíCYÏp—$t/Óâ‡~ xìòä][õ¡ˆLü÷”ZüžHëU‹ÝF6*júEtÜ’e‡ŽSè0x‡.RP88hï±vOhXYš¹F_;gЬN—/ª”ÍÔÃ@sB!‘/>Ñ ]TPEQx´×>䘄S AD‡’ÒÀEWD‘ÀŽ¡Z[vHîlÉa¡Ë±:ö=Ÿ “¬0q[š#½¿�ûž¹‹»ÅÜ,½jžëQ›1ÚÑ^ß,��v8O?�›'H•´� {G«Z¬'P¡Aƒ†DÈ÷}F¨ä›ÃðÜQ5Dßô{c•ÓæMñµÜžé)�÷ÃY-âIư@ï Š/å§—QrEWo+ª‹ª$}žŒ¦¼ÇŒþÓLW÷©¾Í¤㇞·�~3¯óµ3ü¶ÎRHŒýT–¯–SäªZP„êÏkÄ•üµeWíSJC[-¹Èö´6ã{@ØïÜ'ìÃ�,\´®¬Ð$l] F3t`@ ¨›Pí4ÍÓ‹ú~à(KƒoocׇIÔ-Ò%�^[·´ÕÆþ8‹…—èo¶ß¡rvć HÂöu~œ4f¯Ôn=p)DÈîý96ÈÞĦþ’ Nhµœ\›àÝù€Ñ5@C‰]òdÒuî÷Ç­\'_ï±p&(8`\:æ­þú„D\òÊqQ¡eɺšpä2CÕi–ñjN…úéiÈÝ .½ë]=œ)¶[`)j76!—®L’rLG}¯»¶Öñ{®�+»_o0`µ»JÄ C'½3wH€”�ÀÚ(yùê­†Q„–‡ÛŠÐ…Jbäåjn& ¸ ?^e�ôeK¬ ÑÅߟ”­ô4f>ggŸ"Þ®€Îß”H¶Œ)ƒl+sA£:\à"MÅ W°Ùœ61‡û¤r¿§»¶W3Ÿþä—ÉH+þŽùêzÿþž#Û!^×]��9´6­Yo¨liPò™×©$Å—­Œ^æj6¢yrIu¸ë$‹Áf¤ÄëÎŽd“ÜÁV#d€óÏ<µ’úÖYz'\­I”·ñvgÜ~y¬&ø«Nr›÷÷ôªŸ×þÞ�fS8›SÅ�_W;'_,°T:¸’ñk5-Ãòw²‰¯6oÜß‘i¡aÚ ±Û0È”±ö}½?RÒ€¹“Ñ�N�¦Fv·ÆOS÷÷âìa¢šëgêßן÷šû_upÃÍ6cáüF–Áz‡`G–O1yÉNÑžD¿_Od1fì†õžž¶w¥0Ú=o¦4õïaŽÐ¥ –Ælé-d@B�°~�© Œ®öUÍIº�3“i+`´OD¬b–Á,&Hª§Y]_ûw­‡—uØSÏ`Ä®ïÚ'Þ"HË]8/‹èò~ߨ'œPpÊAÿyíÝôqvï—ÝÔ¥“È”·SÌgû¥¶ ºˆ ¬§NåÂ;ˆn‹§[«ui«?M°(<Õ(Áý aªDx°¿%ÂPÜ~ƒÐºÅë)Ð2tÜ mÑ{|,4‚.I:Ö6 XA—K€™’ÆÁ°Ñ(lÁs1B_"…X™¸àW›F·êôËïûaZýѦ%›ÒÜ-æT ƒõ³¥Ø®­Rû³rrÌp§“*ŒG¾ØRoYKoEªW™šéÌÆRÌv®&wzåDjk²E¬XÏÜ~NÖž“xc6Ÿ8Ó«Z¯ãɉkŸŒ�Kpõ�7TÎ�Õ|E�õ >ÿÒoÖÙ*I‹½ýt‚'ô«fÐ6·•0ããsàO3¼T“™®lͧJo/‰÷3RêëËS ÙÝ8¼ÛG%�SCµgáãÔw‰+ÛñûÓcWÜ?¯Ø†º´{g†pO‘ÙË6ËK�ëÞòßËó^aÈj¼¼t]´Œg ûuª9ñ÷Dõ z7ä}':ÞbŸUîm¶¡0ŠöyY_5Jv®Ö¥±ÃyíZóÒ¾j#âuÄUêðEUQ#^~?Gß7:¾¹©$bø:/s%V}ÞÚ©ë¶ed¥÷§;||†!óÐÍeP:µrŸÍÜ�; †^Üú½¸RC�§þ÷7~B§¶×5pùncÉC¸å|qÑEiëý,wìÄèîÕ ³±È®|¯ñFè¥6JñVˆÕcô…ïðÔÍw#ê›àz½ùso=5 2D_´:–Lûe·t[˜¸GvƵ�kIy[5¥)]å}”rQhCÖ¬Ñ ;Mä8´çRŠeˆ�þîÅ'Ò W}LM5 Ø­}¡…Úžgd·ü>`OÏeZxÞš”DžIL(˜š‚êÖ† �xâûFíGºt°N7KI`·{“É>‘@—àÒ?ïÅ»ÓOò{4Bé”ð·fvÙn2 ƒØ­¯1x´yoÑ׌yGR%¬€C_&ˆXà—pOÕ褻=÷ÁoH‹p##Ê}IÝK£Xž®µõà…‚ZéG±ƒ/ü€h½ð‹ciò¥³È,À¥N½•¬þv1 ì¢j•Àý†¾@Wsã 4Ø1n§xöÄ9°Áû{ÁÄ´ë/+7¿ÎJCáK0ö±TøÀzFÝ̸·›OµNöÏnÅÈS�î«O;Hê ¸æ¹ò« ^ä£`Jç·œš¢ï)æéQF‘Ó'W[.>ç6ͦרøæÙ«ˆ¸G+C'ü`ý§Šf‘¾üW²=Á-¿½{Tw®½¾cÉ“£Ú IÑW*°fï?¸÷nÚ¸Oþ6ÈrB‹hMÚ�ÄyðþÍ}k‡UQÔ%ÞcIÕZ†é„F¿�;Qzo -UVIè¤/ù¾?BƒÉƒ–‹ œð>ƒ±xë;d +NþéàuÆa’çi Sí_'�r@^½ú8¢^#3v1d, ¾×Ôk…aàë^Î÷/&îú½$P ²a¬j…_/ˆ…±,xü¤YC-kã 2P¾OþöFƒŽH×X±-s*öP¿äcñ¡’†à9ŽÇ_.Ö´$zŸ‹nM®÷ahÞÂd—,…¤²×Þ¥MpZèg.Þe [C9.¾Ëƒ¢t  Q8L÷M¼F¡ |Ȳ�Zt5Ó~‰nJJ¨›àŠ’ð•� zßoWpù}mìðp)_ÔkÆJHÜä&KÖ*KbÅHRl²YZh<š 0™ØÅà•ª2QrÐ'ë¿ø$¶!¶»,U€µÍy WgçÁÈ0“Z‰Süˆ'0´Þ·‡ó®ìX Ÿù}4ì:ªÁðÞwi­mHxª)ã~2÷4=Ñ:` nwÛÔè„Uæ¹�VQ3G³¬É*¡Þx~gI>šã*ÔZŒ�ËXî€*x)€’ôAÈÚ™Üô £’qŠEšÕñÖ%ÙY\r?¢Â´Ú„¼Aræ Üqñ·�ª·+FµÀý½I•†05ô58R¹t¿Æd ÇC6Ib:•·�ú¿ß.Ç�\€>»Û�<�ÆSý¾§ÁÞ_ä]éCŒíïÉŒ¡"2V¨2œá0-Z$ÎjØê´¤ÝæKû /=+ˆÈ›ûÏ-oŠ¥[AÃÚ¡‚–Uµaú¼ì7,¢{D|¹$Ž^8娀ß�dÃéÙ:T×ø5`¶F´ Øo‹$˜�{V‡e7[á{k/—­:æd�1ÔwÆŒg¥Þ»”8F«ñâ=–I+å…K)Óù;Ãl­Éáñ¾ÕNÄ™)?1kÊê ¦ˆRßšë G(Çîë>ľVÓƒ°£I¤]ÞˆŽPü Øò÷�EN{¼‘/ÿ¦‡U É«½üÌèª÷Û¤M´ê€lÔá��ŸüâMZ§ Úîc™Ù·f—YLÿý[ð6&tôŠ×V!aõoñ¿ê4–K¨™“”Sç<Åý¶YE*r]ˆÀ²A9ov"AÌÍòÞ¾Z¶‚…¾"µ™Ûõë…±ÊûjÞ6Žbf‡²˜äÿŒ¹`Ëþ¨-“æröídâ‚aÊ…³ýe+3Mñ¹6OÉém½J"o^�ìSãË|ƒ{cmGµEá|°�'¶$9>TÌeÜ©~L&ÑA?zÇR0Ç}© 78rº”)Á<Ê¥ÊG߸ ­ùÙðqϺ8 ר×ûÕX øw1¼KàUC¹¿1‹�w WUÔÑžl³ô`+e~ÏAƒ%Ÿ1Ï$¦ÆtÌe^¸MñË‚/ÒóJ+›DYÙVüB¡ ¬øœÒæ©¥±ñ§å™©™„Yõܩ֒  Ê�.öí.JÂv|Ö÷á�3ĺ›–…_˜{tù™É7«ZÎÄfjT·®¾Å6ë:F˜4�ðR:M,≺‹âˆ/0úT»D(�¨b�á”ñÔHuY‹˜×�3½ÓW9Ø’§r™Á ú[ßU‰ò;¡þ¢úr˜X�i#¯„Û%ÿêéó¥©Ù Ç7b•:Æòl¶µÅÏm ÅóÈk`¹ÛŠŠ—çÊ@¿l$B`ncMÖëÁ/&Aª-‰\¦’ŒU_çJ£œ@œ=:&W”å¹þ_|/§@ �Œ�Ú«°•¡ŒÃª=½üãk'è¹pˆ9�ƒ\’RªÎ-¯?s�Ž.>Öú´žÂ'ÿúEQ¥½<�N½dda‹«u<¦5›3œïWÁ?¤�!O†#Ý:Y 1ØSÕ°wø*𩜠�¡Ã\ ÈCùüŽõ'2K y&}/½Q1úàå"䋬ê©dœÒʰù\#æ!¨‹7Aqì¡rx0^T –xy(2ÅŒØD’SE&ÃDŸHÒí$ht—¢õë [wöU_úxÜ™Å$®ÏµÌ$ýÒÞ)“¤ƒîº–’`íx žIìãI�‰Ø�Ïcí(f˜ß÷†§!T7Kû ÃŒ"ó>þ<’óï#7o©ŸØù=­Ó!Æ·ô§Ò�gƒþ×ÿþ?ý·r\údû¿ü÷s,Ëÿþ?ý�ÿmøüoÃÿ­‡í.“¬øoÿ÷ÿmøoÿí_±¯»ëùoÿ]Ü·}Iô"¯÷žûïÿã×`]²ÿå¿íK÷ùïy²%ÿK2M]�%[=à÷þsöÏýÿÈ>ɲÛÿºoåÿLý�4Y û¿þë§õ{|è“"OÖ}2ªÐ}ÊjÚþzË{¢Ã†;þa.4þ 'nÒ@<'­ŸžŒÉ”ÓŸ�C Ç jÿóke¿'”*R|ÆüQ&zÊfÿçq¥ð�Ê]�•ÈW�»ëù!mA"ùŸX{Sƒ¬?×O”?^ûÏ“¹«ª²ñqü™NÎÓÐÁ–'ÿCÏ|ã¯Ò¶Ä¿ÒeÃÏäw�øO¥Ú�‘ô)ÔËçDáOÿ«i‹ÂÏÉ© »>çw}õ§6íŇïøHg`¿AR¿+¡({d¨3îËþ»>û«dZãÌzÿœŠŸžóÙò׫:þû\Vnÿ¯õÿý{B/ýOY`Øê?ññ{nëS–þSÖ™a½ÿ”oe�ÿ”ß�?üO9bøó9é÷ß¶Õ_Mötù?eáq. ÿ)+ ÏàÊúãOÔþS¶ŸÿŸòûñ'5ÿ)GŒ\)ž3øPª/xhLèoÿU¶;{û¯:¡Ï"T§ù@ /à¦Çlº×âúÅrIèܹ¬vQUî#}´š©ìà»*òßöÙÅ^qhtÙw1‡KyèÀY/Tÿå[ãX9~_ûé\I Wz#|ÿ«Šw±ÔÁ©Ër¾÷1Ê6¹loy#솧T¾ìwâ|Ї'º½¸ç�x.óÕë³úÛ?æ6ý2RdvS¸�ø†í‰t&}ö#·LV±#eL°Ã=³ó¤†o³´1¼À˜Êúou9Fj™œaoæÉKÏy# Lj3#´ïd†Ã~Ûï)?õ »þüýüËü\Œô¬Åùœ/+LþÇ�ýXVbä÷Ï?ü«�þø…˜ø�?…ñÖø�3�¿§]jÿio³íŸ~ÚìÆpçïzòï¼g¼ÛÏæ®ß2Ñù´ç•ßx¿ŒýÚC?O?¿~{öß~%öã_‚þŽ_´×íãɘg¼Ï<ä¿y’£ŸŸ�áߌ^=~Ÿvùïüg¼O?¿yÖþŒc|úÉî¿ëD¿ÇN=õÏ|}ýøsüÿ0ßÌÍð#£ŸÌõÇ2ÌŸõy®»ýì‹aEFÔŸya¦ÿ·þÿ™¯§_ÿ¯óñ€cb,[qO‡l®±å7ŸÀÄËWâ½"6·¥Ç7Ä ›=íĶ֧,ô•»3«Î46ײQËÌ ¿3Võ¬­—2· ,ÌËaNE’mcf¤g¸•H?çñçÉ ®?~ûQÎÂãÊetˆ!lîb_˜è2,Éä-Sœ,ý«OmÕdŒöi¯>›XgºêÁ -/›C˜Wõ‹�›qZ†b؈q¨‡#Icž ]ñÓPlýWøfï󹞣0Û0s]œúÆX‹Ørúø*›{òÅê§Í°é0~×%+Abã“{¦h}êŹ f6™ƒáµgŽy¦ °_ýÎüæ±b ;GYrä˜J±Ÿùû�SbZŒ‹ñfôVꙇ ü9ÿñó\çñÃ3\Æköã�´ùÔVªXüäF�žùå Æ¿ü#Yå�e¸ò_?*Fýí�¿åÇ>òé·O¸üo|qÙ?ÿé?1jöw}Õêï|þ-ó??ùùwüOú�ý‹þÇ– ù›‡§óË"žë¾ÿ]ÇcÔ'nóªê¾þüü)?Vø…Ôc™~u?¿í¿}Òœ¬ðÇVO~{\=þÌ¿8Ãý‹ëþZíŸý‡c܃Ëcüâ]ùßË�͘Oõëïû‡÷ôÏÿßòcí¿ûò!<4g¿ë ÿüñvIýößs¾òZæO\ýµúCTÎñØòß'�ÿƒCËÌï:Ϧûƒwò?\~ì¼{êŸ<ÿïJæ/Þ•Ì_¼+Îÿ÷“—þàÝcÿàݳÎÿ…rõw>ÿ–ù÷ÊÿàæÃíþáËïn™Ÿ¿?œèñÃþ8œòÃõŸýãï}¶‚øãpÁö߸ÿ[Ï3õpÚßþüqÇ¿~Ž»ýö1ûãpâëoù±ë/?Ø?Ò?<�núIž¿õOùþHÿÖçáGñùÛeï_0Û?ÿÉŸM`?õìŸýñ\gø»ÿûwþ훇[þY§·ûs¼a¤?ø,þ³ü/xÿX‘bÂê/^†ÿæ'8Ùä/^þµÏùÑ?þIõ'ûþå àçOü‡/â¿ý'*óƒø?ú³Â?\οí<ÿ[ÿâ·ðoÜOð‡Úÿñ‡¢é¬À¼ÿ´{4ì¯Ìÿ‹›'¥=Ô®ø£ÿØŸÎ{RË\e0ÆÂÙíwŸýÅCþßøùý{Bá�èèw¾þoŸý-?öß|hÿpXûwüõoŸ¼þÙÿeëdÿ¸÷Ÿü¥þ‹ õßqõßùÊ�üì¿zå_ý/ôšâéwùËÌŸñ0¿ñ‹¿�ýBóÏü±ÿâèZÕÃåŸþKÿ®÷·üØþ¥þÅóï8Äê/ŽˆÿŽ‹ÿŽ ?iÿ'~ï/`Ü_ȽûŠý—gŸS…?yðý,ÍßyþåÅßR0©�õ7^þ–kü�ú“1âÏß_ËÿQ,Õ_ì¿yaÿáèÓ„ýí£Ç÷Ïû¿ÏÇsÕ?qð·ü³l¬ã®Ëëú?ñu2ÿç^ÿÿO^²ý磙­Þ£ùž”}V‚Æpê»kW�uŽWWØ´ÿOuÜï¡Ë+¹“Ûj·@ð->¢ëôã•yg+£wO†T×ú(?„Ô�àþ8mŒ�²~²Îõ(ã·‚¹ÐêÂl¤hËC¾ðŸkú•ÃýŽÑÊ(Ýïå¼�Xù|AûóÙæwR t•Ó³É�12ÃM�~Föè‰çŸôÇþ>Jzâ×=™?Ÿ�°ö?s�–·>ºÿÿÙÝß7)Ž${¢ðÿϧ¨©½÷Ü®KVJ€xë±Þµ½ H @̶�  @‚9ýݯ{H�dVU÷Ì™Þ}̶f² ¡xópÿ¹‡»‡UîÝœ†D†ò@¶ øÓÇ.ÈÑìF²K³¶¬�iÚš;]m#�›UôÏ!�£|ƒuDAÝOum––a¡Ç€\t¨Ö •üF7?ÔÓ¼ÁûÍL^Ó›U1oúX±-U¿êÛjiÉ_éò™Ù½ÍM:ß5æœU:iµ•»h'Ý Y5•É×£¬”FýHE"Ã=K¢V`U{7¿|Sî[ÍšshÚz*ßä�IWõAÄ%çhOÆ>77Åβ:dã'ϸR0 A/Åþ,‰*+èÝR(´éN÷áå®BéU �Rw ÓæB³Ó™%t9Óm™4{’•¶E+x£'*tÔŒ­™NzCh“i]3©ãô{éÕ<¥MV†ò 7ð*WÉÍ”Ì̼‘«¬é–Â=IÏÌ5¹šC}è‡]xF·:Ê8•ɸäqÛËÁ¿ìcªß.¥J9¦Ýaµt›^¹]ÿº¸ìo¥ò�§íѱ”AÙ%•»€>߯–†í[óدõȬSêõØ¿&ÈÏVË– D¨š)Bªä Ý[Rri‚• ä­ØéèÈVkD)¿ÐÒ¤+A^ÐæhAj­‚ûHr¢ZòFSªô…˜šrÛNG$姆%ƒö-9 sè(·›©Üt«�c`ã8D¡RÄõR¸'‘ÔMØ$¶ú5y ”[3é�•з�•[îJnµ;4GJèNèÕÝ™<Æù �?ÒoÎÖ@\ÃóÃîžÝÝjÆ» UëžObÕsK‚ÑVcéV>t—ª7ÅÄÝVdÞÈÃz¦ý‘=ž¤ ½Ž†ÆÊàzJ•^¥‰½›HNKäjg¿qíœæM÷ppA;³ÛJÔ¢ýMºãœx4åË¢»Jr;ñ’›Ò°©dˆ—¨�Pî‚62 ‹ÝEýE@kÊÀ®é“ø°ê3“Ž``å´3ðof`”¤ I­�‘Z jë'J^†µ•õo‰Ük”` kÏchž¬fãþÝšl̼ÿk=pG u%»›Âg÷V.ýp­|x~ˆkˆvG�AtRá¯ÃêÞ¶~>o÷‡„k¯ <�Æav´ø~Ó¶�}g ÔÛ¤ìµÝSw«….`}ëZ¹6·Â)©š¤®–o&|nÛ£ØÓ‚ø`„®ÚæÚDi0ÜSåªÖh@g.‘,4®Gd!S¹'9¼iÃúݾdÁZ¹Z)à}"e@à9']÷-mœzê0‘åÞ€Çç€çŲºŽNðüP „p�6%~­cÅš‘™š.ÅÈ?àYrƒ²ñ¬'ÌÇþ€þ-?»d½a3ËéôŒ÷aÜóïˆ\í¾» ðBà ìó ÆU1R—ñ½îЪt¯þÖX;|wm^ Ú¥ðûªÏÐÌ{7WèÉiË*ëЗ��7êéSç<%N¹âuÏâõRñë$ëv{Û½ßÖ7–œu””_‹áª·t¥}Ø G7·4,N»Å7ˆ¨oodß…a4\­Ê›Qý¶øÊžt'5u¶»õöœ�¸ú¢£QcãЛyiìQX2>Ü�s>Lm"ZFø=`"\׌÷#“šÀs»ã}ÛRv}Æg)i¯KV ×pæsmQY“,Q¤Ûx9iK–߃H’BxðFíÿ ;€à~5à³TDZe› ”TÏ«óÊ¢Ý=zê<ᢎ� ˜lÉK²¸�Íù°dr�wž•zf.ì;ËšÊ�ÂÀ{ ’Ê–OA?Ô=àíð½,ZI›¦rOîZM¨×.ÖS³!A[¨¹ë†Èëõ]7sAJñV7’iežÄ»°<¿ÔÄ®�FqÙ™Kos++_‡;k¥'8X¿tê$K”3!6‘3ÒÉd”è·N-K"�L¤ ©z€D‹—ÄPî‰Ä‘iŠ5d9Ș´©ÉÄí�¤5¶Sºù(K€V'@§ð§çò¦“ϼúUãæOŒ›©u3_SR§\Íj­WB´J†Ü+óë¸.߆Ò^n“Š]ó…Q#,qÙjrâ“­ÙºäãxžP/•3 ø˜8<.ÊbÐVD2�i`šÔ’»¢•j H­²tK m(ÿ/-éòÎÊå±íLJrè„Ì®tZÜáØâ]¤æ¤Õôf­&h{4g[ôÆíPÊ%f'dÑGÙ ÄdÝ—K _�>æŠê5 �Ô°}j¤r9åÍ`êÜ"¸1:4Lê§íY3¼?Äm—UÚ^ 3Î C»©*uHÂe«né�+Û¯\Iå”;ÐkA…4H¥iÌHªÂkL¹À;­^šv?àœ$ÞUÀSbÛÊÛü4³hÔÞdIqdŠã¦´%WÀ—B_"q·+¥M@uÃf×pÎO­\·ìšÈoú ð'#4'0ŽÔp’JO>±º•ø¾nJêmdÖÐFùVRäu«:0¬?*¢ÿ€§Ë[\w¸þ,Wa8Ï=jD Ð6ìh _åüƒoP¦o�’ÏÐQâ (€õYc Üó².qq¯B½ù("àV�7…ý("}ª;ꎴb$€½e¹þ4LÎ1 Ì0+ Î¥²./§Y,6$êÅ OZh'¯@AÁ­#˜_Y,/ „BЛÒÔ¡ šIhû©øp‚4 ‚ƒv-ß!o/§-´¿9†ösá!àÂJ…LxºdøNê‘"k2#bLºYbs"ÙÑ ðŒÒ¦6§‰B¼Lýóìf'´ÊWÉ t1YJÝ6-ý([ÑRI#×°¢¶j7i7“|´ .àN³3®Ÿgž‚¶A˜c«ºlÐ#p¬÷¼ç+ ‹TÀcÀ•îͼÓin›yæãì K//µÒ:�¨;‘JÊp=—¤}Ýï·=P—„¥3]FÆB–…rAC]DUµ¼ùevžûµî€’p5ºGN�M»½ 4ÏOÝnÔ�xÜyÕ�Êìw︓©í á~ÀÇÐ’6“AÚ”F„7$:mSq†«$Ñ� Ajüe¸ŒNVš÷Êád�™¸NTIL’È ÇNgÖHV­�3뎴¡ÊUy3ê`ÌN€÷Ì*®åÓíÌìXLGƒ1Îm*[/ ×s+¡?7�Å=xT>†„„ˆ¿h �@.…æÊB˜a/ãêŠÐÁA÷æF0²z)̇Hï6ÛÜ Ãßñ�/oÖ‹Á´¶ ‰=”Æ“`×­XCjw�Üü¡¢ûõ6wj·ªZÎÐßpTÙÔV­Ú¤tœ —õmmO§&Ý-á»Áþêq!�W£ L`Z[ª¥ò¸Üõ¢,¦jyn½þ͆ƒñ¥u M#Ѷ³æ+Cótå,¹Ù_·2n›rɺ´Ús·ª\]¥V!˾·äý²Ó«�ËÆ–»Œwñ¥»C¿æŒzTlŸ»”*îö x¨W\¸þ Ÿ'WæŽòÖ¢ÀH,]’�î¤v�`áJ$A[­‚ú¶’¾Fxäq‰œÏÛ¥�šêl�΂1ôU´Í´É¦°^ç<ÝnW#‚©¦åÚ³Ö¥}¬“Ä3¢sÄçf¦ÎµßôS¥ÆÅ¾Ò¼Ä=ܽBÿ/ µúQ‰èÄ ¸¿Ç“Ѐ–(Á"T·±ÛÀólw"†É ôY»Ê–võч4RmþŒº}Cê81>ðD‘œ…z]„zö/®eöÙ/ôéa­§¨–ÏqüÏ«ŒnRÕ×Ýà8š9»rÓÓ´·vW#>Ô�sDýi}ÒuìÎL]�è&Ôú�΀ðµùl†¥–ã¨vyÕã§±fƒŽ8v•³¨ï̃±šOù¥bªÃ±Âe¨3Üåõ_:©RA»»¤ÕÂ=îíZ²‰gMiÓž\í.iØë"Úƒn2“õ»Áúº�…ÛÜ-Ð=èDa<)+Ö˜èo ô_†q0òµ¦ô+“pÙ—J|*oªBç8S¥UØ^—„Jvô«ÝÓÌ’½½®f�íŒ6€�û“—dþdÙ¸ÙŽ}ö*Õ<ÖÑ ~Ûê ™×²ˆ2ÔLÐMÜ/=€¾Ò�©r@-E²ä…–é(ƒ–ª(£h®²æý<¦©ñ£y�ñ»u>0é&YmöÃòÐ…¢¨ÐÞ3š�zËV°zÒ²"•¹K™”¯)o·zæºÛպ⭡Yc¡ÏïCî$I)׺QÌü™Ø—V„vªçD±Æ­D ÊAô@qÌ¢:ÚÌ%f—è€\Öï4ˆvŠ›<tö\~ŽcrÓZË�¸/Z0>×KÝæ—®l1» Ž›T±pÜ"t ´©�¹à§ÀûtD嚣=ðšI¬®\FKw›Ö§>×£œÍc)ji-å´ºæ*–;Ã}+#‘+ÿ¨k‘ž× õ]úµ·í–¨¦;¡òÄ òt¶¥´";´ •M†)s»ânìkw(£œD<ðôÞk ÀÄà;ü9õs~Œ:›ÄÖhY·úC*äê îXç¹óôà©­lVI¨Þœˆ­�Ñ¡î—H«§¦y;p"6‚æÌÎv¥+W?xÛÓ�ØõõôJ¯²9/ã¶4Ú K7n(pɹ´§¹Ï+ ‡b^Ñ~× DË¡^àÜÒ„µÒFž¨Y)gücü°Ÿ"þKÍ ÷Òd÷ñ°<ô‘ǤZC¢œûÕˆ„·ú€t4n±ú˜ç4Æú$ÐJ X÷Æx™ÙØàÝŒV@?öxÇ^g~ùÀÈÞÅßõÑÅK \BÓ¦)Z¾§YB+1PMSÜIÈÙÿß±3éÌ~ü¦;c›s|ºZø†cmíõ.Ù·kÁ–w¨¸Jã‰ÆËíå¹}>´ÚC´»1>혌OdkQÓ �)QèM `<]-Ö—ëKbåöb±‰eëšFñOöÖgTç*MïJ·e¥EgëV n2iòi'álë1O¤ÎÆMA÷k Ç­s':"®9šë¥l½ÝÇ×X#ÐxgC›çó­rœBO²Ò È]§ �å|�ùD õ™¼�}™ò35t‡ šî�t´iIa :½ädô.Ók­�‰ŒáÈBÐ5w Kiäjž9rCܲr`*N`"q ÝÞ•‚e�ª¢Ù%ßÝÍ:ÔT\EseÀ›4P·dÜ™““ir0·Ïõ-I“¿3¨mº¡ËYsJ§ÛÁ­ª� m¹¸]ì+pY:QèRÇ}…Ä‚Iš-ÂÕñøqÀÐæ mÓšDM meˆÏöxr[_Rôë&[2Û_Zaý’½@ŠWÓ^»uk®S à+jÊôÇ÷‰ÐÜ8«j“¢(güÅS�¿(¨çãþBÖ^k�·nïø(®DË‚­D›H+ç“ïl°w>�6žûÞeA¿(|‡à}ñ[yF�çÈÁ¸ë€Þ—V²$å3ÓQ¨94�“×TºCEæšqç�¿»4ÂÙŽòs ¨Ø¾.w�<ó5Z&§Íå*׺NÙè ý0…Ñî 7Æ`5´ÙþVªo˧¹6J@.:»=O•míäïŒÓŒÃ½!è?[/Ö×xD¬�<CÑsµØÊ"à'Õ⠥͡‘F@EfG³‡‡}ˆÍÇ®ßa’ó›+�|Ÿ åúšLÝVº—!߯¦J¾`;µž=\Mb°½2=ÍÇRk¿,_ ]ë¶Ô;yê*5WÁ õB¯ßªÒSíîô+ðdº<`�x¦…ÁP ã©\7âÁ<,íZbfA ²—’ ÈŒF²v#[™Í§™ÏgnGÎív…]Fî5HJÙ"³ÇÂt}m³æ`â}ÀÆ*-ÔAšeÃÖ4h÷?Q†°Ž�±#NH�d�™¨$Y*è i Ö†í¸UZÆ8�‰�ô‡­Ä¬9£Ys¥fÍ^[ ,†Ã‹=ä»MŠ­sÓ²('Ø}fÛ­*;;¬ý«Ëö…™�½À Œdîä͆7u.áÙòÕ}« Vó Ý2¯ãµ�qâ9và/�n[Ûw9.Ï¥&5FájZ�®ƒ±Ó§U�[û‹åd¨–F˜®¢5Š.gµ¼ý„zÌ C‡ùù¾L*tS røœz’Ì™VŽ¿ÐÇÆfsQ &‹F �{¡½FC†çk39_çç¸Ã&âäy ÊVB¨göf€÷¼P× fR¶{ØúoL¯­o`þCΓ<·ˆ(ƒ¤VWõÆ¢rš-ÏÜiXâ/�wZì_µ,YËíÖ8M+•¹ÆÓ¡36µœÚô`?Ò–ÉX´\‰¤÷B_¸0/¡î)л�þ!hEÿܳ‡ÏâbY¾µRE×nG3â,+=k’q}[öoVu¾$æ¸äêP¿¶²@O6ÜåÉFÍ‚‘l ”]¢Í·gèϦΌ¦3ð¢Œ{Áilî RrÌ–ä\6K‘yI›E›$3e2¬˜yIþä±ù,«-PämgfXÂÚSÀ¸tC�wV¼RSyØXV î¨� "ØzØ)��8»lÌÖRA!i£)Üö|ïZNAg_ š’u w�õiü›²uÄþ Æ(T‹œAwû€zC`’-ÈOZô°§Hô®”ê¤Ó>ƺs\…¶ HrhÙz¿¹ ×™7ÜÇ!Wä¡…n>¿”&ýãPmj“�:çxncÑÛ²QkY²Ôu»M— ßtJäx,mÃÌUH´´W0ßýr›ë t—êGôÕ`0+Mr:© gLŸˆá�!È1™¤‰è¤ 8I’,€¬VÚ•2ɹ�^~÷)0 îžÞ \T馸Y¦' K�|¯²-…M› /gÖÄ.0=.hû+kÝcZçn[nŒï',ûi¾.µîxDò‚1´Ò‘³Ë°6÷"îx­Ð�òý Ð�ä sদTáø99§r#9>pbÆÕV ƒ ÔmÁqG�ºOíƒH\3I™� ô¼|¼�Ñ…ŽgÒÝèR¥uášdÌ«»Ï}×>x ݧ]hÀZ1VI ÏAÎ7ŠöÉ 'º¨'» Q\<�ùw[»þÊØ1¸¢®Ð„3!cM1ªC:”8â!÷èst…þ{w›í±/Û·à¯Ö÷È‚ës»~É÷›Ê©_í·Z˜.Öï�—I¿ÁâzeÚÝæÅC zžÈÉw¦³ZáˆTº2þ+�©Œq�#§øúÈhš¾k2›¢ ããm¦íî‚kø‚eˆ¢×A{ Õ¥2úy#_‘‰/…VÞá-SÇY¦ç›Ô°”#pm)€·‹é„¦ÁxI®K¯™ý!Êq‹`{'¡~sɱ³Ÿ@3Lþ!Ÿ�'Ö 2<̦æn×èÔøý`6å…Mc!Tô¥6.ʆEìþEHå‰;:ϸÕv¸ooÇ›úàÊð£1¹k»40ìÕ„ho‰vä‘js,NšV’^+ʡ隀Îà;42šœXû¥îÉÝ÷ ?Â܇ GòÝjhÚo{‹:Ú¤w@Ã6¯FóÝY[ON�Uào÷ÕA«^ZS#©W,mÍÚѦæí÷¤·à¬“ç^{¡Ä•#:X¤˜Ùñƒýèz¤å ßÛ[Ô1¡í0DZfÑ8ÉÄ‹¤ÛßÎbfÏbkŠÙ²€˜�R&±=¼çýªªb1›.AƒvŽºž�º¡'†ë¨ÕìÜ®ÆpΕj@Ÿu~ßìím÷vHÖûÁ¾w»Õõ•Nµ^gCìh®!Dgí¼þï.Q³tJ2Òƒöa̧8Þr½ ýjš áhóÆÚÿZùfŸ mݼíÌ’·ÝäV0Æk7lÎ÷ºZ™GõmehÔJ×Ò¼ílɼr§�ŒšýZsw¾6J o+ÊŒÑKÞþ޳‚qýR‹èA Qj�–�O¨Öì¨Z“œ©zëM_Í@Ï'¾¦X¸ï÷ÚYÊô@®ð•(ðzÄöQÍêùÞxwnKÌ19‘r{=¡Î~—-1XõæÛ­ÙíÌ­†ÁEÜE”xÙÀš%×ÈR°¦nÕaL•;½ÝžéαỻìûœÛ¬è¬µ3-o”ÎjúvPß$“8ÝÉ¡6uÆ+2›ŸFžLZ §1˜¹åÓ|R1<ÛÑ—£ 59_¦µF«7o%€L»Dê€6Ù=æm_ÈÕ«EcWJM$%G�&=¡¿BªÃC‚#‰L"91»Û[Ñó÷fkbs8Êq@®_£_êÝß m20¯¦5£%oïT{6Wms~Õ]äÁ[h·Åë;Oï´RKÛ�«‰`^�ã|Y³Þä“a{E %E{`ºá´ ËÉGsq¼B§²à ãf¶¯Öì�Oøj…~â~%÷µxg[1»!¼÷°;ÕõS}q¸4y§ÕÌj±×(w|­;ˆê%o¼( ¢S�Ìò©±�Ã΢nWµ�<7‡òÞ8«£ýYžw†NÙä cäïc’ówX5‹6û’Í€Ÿ»À×€šj»Ù=Q‹AªÒÌIÔ瀟3\¹½É×;Ï÷P…¾#o4Çö·pm™L=£+,„EwQ=·ùSô—!VHÚƒÉæ°�J-]ñ÷ïqçûßÈ©¢=ÙŠ<55�e&6[Ü€ïØÇìÌk ]Iv.“1™ßeRaÇy`ùÞ��2èjÚ¿/s6ßz�y¾¬ö›ý"Jú7�¬7ï0ϖ錀�~PCÝÇ`Ðý,q×”[òbŸ€LÔ<É!ÃŲœï+Þi?ß+½¯í7;®å7×~Ù9�§ž&ËñLiL+–9Ÿlâ±2 ¹^5¹-‘NL"{ôKÑ_ò�’�B[Ìš#t’o£Ø+Nž™›ã5)¢ÞѲd¥¦�ÂZ=¶©””M ÿÓ}k�½5ã ÖòÞ»oŠ)ùÿ¢½Œù›ìOÔNFÎf¸‘tLo§íÕúÜ0b{4 JƒzPÖÜnv;Ž;çv¶²ù½Ô‹øª¤\°)s»�ÒñV<¨¾J»o›fWï®Ö%F½C²I(*Æõˆ܉èÙr4Ò`0uЦó…—9ø+|áe´›8 íX w]=o[�?ÄZd¼,mg�¦ú :‡8wƒï”-ÜOv5Ð÷Ð_…“¼¦‚c@3ËèÄ‘E~PÐjt>ð±ßÛÎr_-tžðèôZ™/ÍÊçêaµ …U �¹Õ¥ÔìÏxbë”íÓ.¹+×ôA¿ì1ÿw#"£Ünc 9ü/FYŠn ¦˜Êè/>°ö­+â5j�DÊÜ7;΢_’JÕ¾¦ð— oç´FJÕ’žMÝþà4j§Úe&Çu¸ u¬–�ëW°D×S2 ôØD£D64»}QÓ-/"pÈâ‰Bͳ-¡N3#e©ñÞff5v<ŒcûY WgæÝf6|÷9µÂJ’í®Ä³VRË‘dG±]¯N; ðcQ´Ó¿pjdÁ×`ýЉ½,‰iÿÄ­ýùtÈG€MXœ°©èûî–ìˆ�þÿWC:j¸Ò‰%£D³ïv1x'K~Ò|ï`_Ñ—E')ß'–9•MàÔ¦eßmåµbß}TÌÌ¿·½Š¶?ýÊÖ ³ÿ•9B§\£Ûœ‘NxSËVrcÙè’ñð”@ëÌ´é¶I¹@­dT =å¶Ù) ú‚\ú¢­e3{1p]ª1zàÑŽ:�ñV0xïÂÚ-˜x�¶cX]’ O>´Öc?1oo1Ö7k¹º‘̆é1hNhÊgtqc§äÝõ1G@8Éíèƒ@2¬æB³Ù Àƒ©&ЉlX`¯‰¨¬&¢ašãŒh"1囘ñ3Ô%Å"eàÓ¼!™GmhZÕ{¬Lë˜û2]àîçëçºó!Ëýõ»}àá¿s÷ñ2GLn2Þø~Œ;C<‡¶3‘h3§ìúUc:¬ðè¿ÏMwÍcoPÛƒ=§)üUkûÎ:J‚�¥d3St„a¶L_z³¦n�È‘¸êÀh®—+k´o¤êõ[5¥¡ÛÉ„�›·.i–áÑ�gñúñE” ]̲VÄËdf”ªqrÔUm0»ß¶_[‘²Ëœ\‰j�ž(ûŠíF0¾ )õõö˜L� ÚÄìK«&èä ˜¯(5M?“:lÌu;¥€‰´6cÐýQ¶—oÝänÊlF}‰á“{ÌTÒx–í8Þ¿=÷kXñ.ëÍÌYr§ð‰„y¹9ׂ×2_Hæ�]`½œ|AN`Œãeê.žÆøìÌ“Hœϯv½¡šj: ”Ìögúäjµj´L¦8ßKº¯Ôp‘’Í@i[Y£WiË©²“2}áJfºR `ti‚)¹@‹jN‡vB»£¨  •B�M¹¬p@ÇJÒ\÷Yá¼áÊkއ»oºç$·÷MêÓFyÚQå«:ì;^¹-Ì+G`!5€ñ|¯LGgbZ€'U?]Žöæ¨sÒí,ˆ(Iê°t8øWøëÍWˆŒ|Ó£º{¤íŠÀ4d®„ùG òOÄøÚD;¬?+6º¤SÞÈN#Mw¤ÙÛ$ÕAÍWµ›5Lö’(芘mÑYi!j� k,&=+]j4Ý# –s½;÷Í,þñ´èÏ�6¢îdË�Ý{œ§ó!&ã½t Kºe®qùÊcße=’L±%[7P¦«gí´;«1:ñ¶ËûK¥y¸ÄâQ²ÄÃ2»‘éj,ÙiO¢I�&~j9ú¥Ãw¥N¥×^UŒ5,ÿ,Iæ[ÈüfÖM:\Ñ¡y£C€ Q× C�L:9�’m1´é ˜¼†p\óîç¥�1oSMñŸÏ‚3I0ä¸TŒqŸ,³@�„ù1­ûüHS2ôEÚgõä~ë¹>êÑ:Ouë)öÿ47€z¤§z0ß«ðy+|>r°û�ºDÁzîöÊ‘…û²ò£Ù$¸Wƒõöoe„ý‘­G= Ïõ,>ÔÓû¦ž!ÿ¾žnÄêA¡w¯§<â¹p¤³r#}¨ßÔt§K€“®Ô —×h¤V›—äÖãÛ^3RE'" ¸ö·)¯õ�"Z‰øIûæ:`ǹ묈k÷}ãP:sç'�ãƒîô1¯Âwt’òwtšñò€Ò%]ºûµ€.YŽ Ð·º+-+G­þôƒ=L¡¥ÖUH-ÞL]áÜZ6V}¾ùÐa.uþ£Í¿_ ËÜ>ŽûëOtÉâøó(úÅ<¾£Kñy�4§—Ác©„¹#ŸæqWЋþVO€.ûïê™ê õp¨Ëk]²p¡‚.¹4eõpîq«Ó¼iòF—}NbëŒãüÝÚÉûÓõßè²ß4Y=‡WìY9]>ÕÓ»×s·ti?êºôžû£Zy=Šþ¨g�y’žÆmJòþ8ÁÓ¸¡Jó7;*ÆmðVO@Æêaãö\Oð±§õ¾à÷z ½¦¨Ç}ãü£ž5‡óSŒ›ò6?Vz¯Gì3:°òþŒt ¹ßÖ#|¨G`õ°¸ö~M$Ðó‡_dkÄÀ�M)Ê¡–Hbýúæ°ÙGÿÀhYߺû@„ÝÜ/’ù»’Ù±´ ”íÍRöÜ~Y²‚Áú”ê>·@ÏxŒ«ÔT±Ä…5æßâ‚dõv,b À£49rFh×oä¾’ ã·vO±,¾Ë‰Ê'À]¯rê.¼úÖñáHFêL.›³-@‘qv>îNµãáÔ\â¾c€ùýI°F[TAt #X˜]a¡Ñd §Í]Ém5õY~Ée–tè®9’¯ú\âæ­¢© ©¢ŽøþŠñ–}3½²}-¡Œ§�žÂâ±ò@ûžW�å?¹çJ°<¨³ŒP^‚^\6r~õÈõA¶­c8iedHjD�˜ÖB¹§\gSCð®,‡íõ¬zK— 1R9/îw®}[XÒµÙÝi(fD–´º:'!ÏôK"¹›5¨ï“^@9Kvƪ•¤âåžÉwìtׇ¶eJ+ªwæ:¯N‚�N.¶DƒùÚNz×x®P�|Â=ÊæA“ÈX±Ìºh™>¨þÀŸa±Ý–s'»ç7É÷9ØØûLoäñHŒ÷#6c9(ÖÑ[In©<ù‰£M�å”(üܵ·}DÐ1nÔ.|ýof�Qý “ +‹á¼ÁúL˜Û&[×/bz&öpÁ_ÌA5=Hó‰h‚D!ãY)KÝ\ ªsnö6�‡ƒÒÌq¥Kd ³µ“�G‰f*þ±=².kç04×­Z×_¬âzgÆ×95­tÕµ;·vB6¾·yy4s%LV¤ÃzZ„Ó1. ƒòÝ• ߯ÜÜWÁ´©´‡{‰‹çÉ™¿N[¶lš:èVrÊâ�í!_'×dh yÉ’ü̘UÑ!s»È=ƒzU¹'\ïcÎÆtøæ×]øo1Ì_ཧ½cS=Ý>ڡî³MÊvÖOû¸w›”öd›*“Õ<Þvìíwº´©RöF•eO#uÑÏZ¤ï†¥ñæ88{õÚ9í.ÆNk=ñú³}|Ö'ÛåðÜnØÄÞŽ¼ÊÁÝl³ãfYïO”½m+­±D\¡Ÿ ­­Ú#—›|Ëõѱ]Y+ÊÞw†B zâf^»}Zɦ\÷N�«‡î_fªÙ ºË:æy ]LnæˆVªZO9ÊÌÿã#æè¯9œŽÕ}ãH:õEýzZì—#Ú±$”{}×—”’�Euƒb^–Ôì‹Ó™²Ê7 IK…¾4êw‡²™X¨—¬YîæÿWŒsÚ7æ®õµQ>ÊJVé×wd•ö©$¯´Ù×9¶¾E”v ð9fp›[’ŽÀÖ1ç[&8ÒÊÍéÖ¹&ZýQÇk†çè¶7y*Ñ5¼\Ö ˜¿vè;š½‘M[jöñöþÓ~Ê-aqø…þ~Ï%SÐ[jÜ÷”Fû&ÖžíC€yë>�ï=F‡éö ãi¼¹ õÒþp5U%æãýz1–¦óɤœùÚnåž›7Üm™Qj“þF?Ûëf$ζ£t.T' ÅZ³z8vwÎQ7mk7K{�É=(¡ǹjÏ—X¼€œ1ßáÐ!G™hSä¸h/'�VmíOz­©&g,Ñf³b‡r·í8e…PUŽ4ÍQ;ü.¸�ü ó±œE~á[s3qŸ ÏßÅl•�ñ0˜Ÿ'ÛëꩉóO>³ùšz‹•Ë}jwf`Á}æÛϱ¸çÝCެ,±2E•ÆÜY¦ýzåê*ÛZVÐ$�/Á¼6�¨°ÎFÇh¡wö“Ñ&—7óšÛ›BKÓJvñ¶·Rsßråà�k·™¶&Ü%iYш×½Œ«þ�‹#:¾Ô·”„³ñ¨/'ÕõxsZM6§±0©(µÑÉwÕ,��×¥Vm<å.öΛPx_LEx?±�ÄSY¾Ì·ùÀýd‹DÞ�v tñX1ΔVì•oz»’ižy ¶å[c<PÍ/ëÒ*Szd®*R¨é2L˱ƒ>ðÒ¹ÚjEì·9q=ó‰~FÛw{Pkÿ–ËŠGè¿;òéà¶§ ]ûZ÷à¨0àÖRÛ—ãJæýú>5y¼U`€µMªÛÉf3ŸlÂYM¸ÄÊpüOžz+5j½ŒßÁ«Ò+ÆfQ«§ 6âi;]mFeUÛ÷&ß_xdDçãÑ æ¢Á\@Ë3WpUZm¼É6;{•]©5õ`.¦¯jdÞ6¦Ò´gÃÜ'^�¹N«7¦nSaI,1¥Löbà‹$mÚbHÔ6û’…ù+å6 "I$Ó•S]´Ê†Ž�MÚƒtc¢»Ð<Ò=Žûõ»^Î'˜M¦�{‰511¦}Ï2“åГ­Üýúr^hJmïÐ ½ý5–Î[Ÿ«dÞ‹/VNýºKÆë–¨ úCû5‡„µ±Lá”LL¬&Ó« j•C¡Ñ?ÏB_3ÖŽfÕ¼™ðl¯$,>•­ö8"éÊòÌ2Oˆ¯sûLF$«)UmÇPÉ´KHÖ•Cæ;˜çæë˜ùƒì0>Ê’uY7‡Šjݬ›}©;IÎìÈäMÀwµÕì¡^¶—7å¹b®GŠ�ç•)áÉ/G2hbê>OÖb;"ºÐ…ºÚxGª‡– n3L¸”´iÀlÓÉ[²-–·ÈÌ}8-f“½°}q+• |€1a,ÿ†�X_2n>bÿ*Ú�iÇnyÇm« Ù¬[ýå¦q¸4–ÄÝiÜŒˆh×´»X•Z)Ûö'ñò°•ƒðÜ’r\øÏÀþH‚¶’ÆfL„vL"'5É ÅÖ’›ç”-)ºÏ±¬r ”,²ž÷…*ŸïkúÉeû¡|•'ºm†Êµ°YYÚœxÓ†:0;âÕñÈqïp‹%‹S� ½ ÷׿v¸ÙáP Ú ³;E]¡7]z©>¾^êS~),ËwÛªX)ðÚ†«†–+bÀrU¢nH/•…î59h�ÊDè�P>k™¨A³£{¦×9˜�¥½OzàÈP�»ûlî¶Ÿ`;ãy#k:ÆÚZ‚¦*{_¸¿ùÈ×öØÊíº3¬Ùèàþ¬­ Ì#ÃÍO1¢U%Í÷Ùq7«Çþã�»ºO>8ÖX)mšg•Îçã`çÒbÞ£×£®¦ÓŠ]™U¸’°¿JõÊynÕF£yÓîåf³·›ËÑÈN2go:’Yl«ò¬ï v–<ž©eÞæ‚×)_9càsçýÉ«ÚÝa=(wj “éeR/·ý!9;|¹{Õèb!ÖÂüôÒ�Î}©Er;UÓ£‰–¡[ÍQÇNˆ$Z°Ø›’s_Í.�Ôj†Õ5üîËÁ´×�ž¶.òƒ2˜>F~EîzÈ#ˇœA|'dǤð½¸ca)+ÔÙ*M3êÝôlèjQUGW§ví´\ÍJ€a+'Z̽]©tpCcégÔm¸J‹[^[öHËÂÉ®Üj»óVÍ;ܪ`ÕK|ètæ~šçé•‚qB;nž¿T2ˆš×Rà)âÙ4Åž·Ñzô¡‡‘‚* ¬1ó ¡/ã ÌzÈölصÄx½ëÿÀ“�'h%Ún4œ@ðÇ-ën)ˆäèÅ´½.%‡I) ”Þžå'�1èHÙC–�^ XÜ0¬k ;Ë‘kÖƒbEÁJ€Î,ª¤ó|×{> ®?Œp}̧ø‘ƒR2X•Ê‚_®©î“c{K;çóÒ 3Béü¨ÿ@>Öõ/ïõ#fŸ`| «ú^ä&{_¿-S�}eŒe‚ú£R9…úO R½4ÃÖ)- ­´hª¥ò’¼Å ”¨‡Il©m‰QG¶üÉ,­ºŠh[ä”8%|ÉöGI–#Ð�ï9è'í¨¶3œ“I�f†<;ßÏ(Ö8Ûókö»˜ó°ZבçÈ;¶ø>¦ƒbl1ã÷ЧF_X�YyÃJú�J“>üvs@†— w�åÔ¯¯¦�&s¡)Z{5Š,5âBݶîÊ¢<­q5?ò67Y–"n£Ë“Àª1;&ONª¬DÄ÷WÇÑÂDÑ`´¯×�Ø8Ç&éù±±r*õm)H;BK?~·ß.upóšûNøo>Ô¼‘‚Wå~­®Sÿž—¢\¬×¹ö»µ ¯ÒMyºˆ›ñl¡Ú - ‹ïÓ ƒr{pݪò’µÇý •v­Ðæy¥B7‰ŸŠmŽŸ›Ž<4¨@É´iˆR³$ñÝNWÚ•Ø\˜¿®äKUË©2ù`á¾d¨©»S,·¯ÛI_YàY€F„�AƒúÄWÍ´vÏKS3oP¥žl>ûæ¸ù=ï&úÉ£�_3ŸdzcψÅ8 Èó¤Å\ÿêùp±X̤%w®âygµ�I1LÏ=ÙÃñ¶Cv- ‰f‡×#cÅ%�R nŒ–Á1‘))ws­Z*ù5~�g¶0}T+ÍÓQ„çÙˆyž€6%©H‰Ö �#hÚ¦Èr ã9e®žÇ ùOü7ß«Ës�ÉŒN1—Lßr§úbÈ•�¤Ù¨_¬ŽÎ�,%]tZ£>¿êD’ƒNŸí¯^jUêòJÊâ*0�³+6Èðuë„oRê4 î™ßó8s,þƒ q½`ü·>�å&×Xqή$Zê¸êè²eငvÐRR æ‘Pôí¥Nã±Dx¹9Ô­˜4‚`X·c½v5'ÚUž#–QËh‹bù4Ír&¢]¶dàņ-9ånƒÿ´/{÷íc9îÖúµÈ¥�Ïÿ ÈÙ²0Ûh]{Òg´‡L¢fUfù=”¸3tâAð£6 éÁ’Žˆ®*+¡H{­‡eÒN\—(*wœ… [ëóƒÆÊ”Jƒ”÷ý�^7‰¼4Ð]uúY¢’±Ö ó¸�Œ‹yÙ´\ ý8 ™ ˜ í"w›ÔÒ׸íØá@Ér;,üìqÜM�3&ÆÈ@ onUõg¹¹Ë÷i�DP ë—ø Šìá©`VU/+óÔ–øS/Md˜“©­+€3÷Æm±Ÿmæg›'»n ¨ôÒ(‘£m·Ý#þff­Ërg�ØšPnº ÇýFÌ�ö«•~rm©%¢e�0®@J f�úMDÝ>ODF@àijàôA_êh¶Üƒ±˜ˆ”·ª¸f¥Ü?° Ÿ3XÓòÛÜ•¿Á CSúc ¬ÃÜ9LŽ�voTåg{£OFÙ~º)»³Ô GëHHÛ‹@fnÖ¯W§U[ð¶›ëÒº··kb{™Ÿ&Ý€ü‹$ÓAC Tà7EQw¹™,þæÃÞšq÷©¸=åT)rð >$‘ŒËŒÊ^°¬ÌúRTYG-{= „Þ-®õÜZ ÕÞ0•½ <§Ôæ�®,º ò}º`@ŸÑÿóÆüaeÜʘÌèÂ'ZJEKÔ-íVv¬È©t•-} S�66˜û­¹¬8ðÁÐŽ‡ëºa2÷œû‰Åú8:—çChßáI‘KÖÞ Q�gš!6`rtŸŒó¼`ßïHÙ¢ïú˜;HµÂTi¡,í¤ ÝZ“Qm$ÐŽ¿kYjµ®w2fµùX$ñJ†1 û5¸×+qg�áX÷�÷²TNñ¨¶ÿÓ´d9k_I±õ¾$aÏ¢ÐDÛáåÎ2Ów¤ l²ð�£éʇ–Lƒ€èKh_ã’z“G=ôi*ÀøøÌüÍ’£�¾7æÐ9R*ç~ w€§X^ q`džYlüYÖmÑèÝŸ}ä!ò=ž_ùGÂâ߯Óç£å»_ò=N‰~ 9:#f0QŽA‹5ŽïP¡U™ |ù´‘ñd•ô£¾¹8T{·öt²º%”¸m`„†½Ÿ;ë†^êÏì¬vášC<×±:=Nv”#Q¶õ*á>Š=w¼µ·‘~±}²O{¯wèk4û³‰|í4“¸-·¦NyRj•J¼åÔzo` óé_SûBJ¨dHÄ„ø<)évÓ—l'‘Ó϶”ô0í*«DRÐA�t¹6)sZÇŒ�×tÔ¡.`9²ÒEgkˆÝ=Âõ’®d•^�+`óiûšÞcîó}¤»,Èý6ì·<�σ$sÏå�?—û„“Í“ÎòÐå˜zfaËÏã­nþ¤°Á’Ü«ÆÆÆJƒC2Vø`-•êN® mõÖ>m—º‹X¦­‘Ö¬÷ú��즊æZ»"·ËÖ¨}™ÄÎa$ÞJÛ�Á öûQ5•×½aÈ £³ÝÌfÜ)º,oŸDÑÏ6À8J�]‹N-IKïêhC·ÍÝ2õ‡Ë,9ÍnÝ­¤ ô6<¸ôæ®nƒ¦³Š-Ñd%ˆ&”F‘hÅàgIîÛ2,•óJOyaóñ㺹?æ€ËmPÖÃF“û’ùo>WóC~¸7ý´?‰ß‹eÌ7-­ÓªºWÌy¯Ëw rT·[·.,›º½iÎ&í ׎0à1ÇaJÇÄ>Po^ŒìºQô¶[nƒ�ÒQ¦ƒp/ÐÊN‰j˜KnTIäÉzÚJEŽeÌÃØŠ(_Ä¡JÀ+,Ò¤Ò¸©yA‹ÌG‘’<|á‡�y‡Œ-±Ì÷þ='.j=ò9O»F:è”ªŽ²Ä<‹7ÌÉÈ“<_¶cÞÁ ;gO$«S§ºCJÈ, ¸Ër×<°5óÜØKA>f €» .ˆ)Ë_$w¸rêœhœúYt?o¢Cº¾XJ-Ì#^œ?J‘tP(öeàçE¼”9ÒY «¿3lSöÌQÂyµ— $ 4©Vêuf—m�T‚lR¹aî$4ܺ)‹ÁÄÀ#¯FÉTÛ Ô�·EÑÒÄÔ‚LÇsG:eË åe ¨Æš/³iÅÍ iï~NÚâ¤0ÒŒ÷xVÎínÒ»<„òÛÞ\J,S,øæÃÒEó=&B{ÄãÝL�œF�^g†,$m;9J‘UÒ”¡-�Ì‘º÷´v9ºÊ+½®ð¤¥.†9îqÖ¥T÷Í®dÆmI�Eä¸Ún“AU¶Û-)(OÖ*È3Ú$�®tK|Šü äQDVZælT +•TÌdM¡gEOœMhZh5Ùuä6µH� ívaK`˜§�9¤nMòäwv—£ç½ÙÂOÎãÜ =ñI^;c ´=×]eW *™“T÷ée4­�Imì4ŒÊl¶YŽûui6j§ËJ•Œv]Ê5? ëm¤Ð GgùSÑò1ìXÂ\5Bcà†è«#r2¤QõÌ�@D]­(iÊ´y?û„8µ\íI½4ž ,^JÇØýã±Zž XêÍR)väc?ÝÓÞ­ÞG;�BHßê:¤Â£‰½C¤ŒèAb€œf¹AqÏP ,ô/VIš �1!©/‘‘«ˆ€‰4…±ey«®…ÿlîã ú–ûIc^Î!`#©(Å«{éß„KiéîÎíJ¤Rv¸ã­tQØ¡¹î¨_orÇÌ!Ó€í8i¡‘m†®þ$!}™€îŽù“ðŒUY‡ö©x'¦"S§ m–h:íÎÖ*ó'éß�žÏ—`ñÌ-:;9½$•‹Ò¯š\Å5Z¡�·±?²¨MyÔ¯ÅÜ6tˆ×ʰä1ÿiÈ•­ƒçn�Â<¡¿%úéÙ$Ir?*ƒFPø)¡zþ€oþsžwˆ~zoþšô½¿¦4eþšÏþ€¼üÞ°1@·Ù’›‹†‰ûû"¹˜Áà»è†©'Ì=˜7­ ké@\o5OÌ*Ä¢Nº+ËÔ²d¨gA¨Ù‘©]ù ›^C“|_aPØ(�Þ0֫؃ý«ó�Í6+°`xùúœ·0î�rm¦£Ú�?µS5<\ø}gÈ·:ƒcëàÍZíßTI6le©^ã|_ì-o Ù4JÍv›Ùog0u³-O•ÚyI¬pON§4ã‹ÜKÉü9÷’Jø[›Û/mn¥�„I]õ+Ù™ØÞl›ÊãÙ¶Ì/wì¼;ô·Òlßä⑚5�Û¼;zµÚêP^6Þé’-ÓXZÞNï(=šGñЬӀLéUÛÄßé#ÿ ó¦uÂ&O3rìa Qžóå‘wú‘ßý§¡Å,^-”º�7¿žgì+ÝíHÆ[nØ7l‹¹—òø½/ŠûQÇS§äJýñAVwåñeBµp}*­ä²>4íËÒœ‹VgSª s­X_僚õp\–®AÐYí�Ú=.އ*ÆZïJv¹5Ó¯]½g›¶‡Ûùjºí—JçtîCoªzý5ˆï½>¨ž„�|jø,¯q›HÃ!‹ßÄ#ÝI§…ñ%�¦À|ÂnatCÙ™õzåqRø;ýÝï,©…<«Ó´¿ë‚®%ÂrZ×ÚæCzrsòs!`<S–;ÃRÈRÐH•×1­Jn#ÂÃTždê}‹È’‘™ ¹úCâo[ç¾Kë�z¥e�nÞ,G8%Úá"$R×Êqe~®Ší¤Ä—¸À¡KÄùY%j‘È,0;ÓŠ�9’™‚ÙdÓ®s9.+�#Ôôê$l6¸)J h@}´Iòú4™tñÌ . ‹ñ«J æçʼ? †õe)r§‹«ûÕeÏ­†9X¤0^KRœ£�û�0äœm†öZè@i¡ßÊ#糟a[«çÒ‰s¥s /{\õDP�é d‚ûjPÄ''Ä–³Qf«“~'Ees ¼7BŒß×јýP"<¯P"J‚�™â¾=°TŸÅ°XÛ|s}·ð%ý®&¹ÿ s¢žtǽí÷Öû¾³¬ùþ‚á>îYÊÅFÂ�j½‘Líº+ŽX¯r« eÀökɬ¤§ý3Ý9ÅyqÈè8€yÆ?´ ‰Ýןð£+ÎU!,_uþWºÔ8â‚Z½„r9,I}Á¤®Ö¼q7�Ü"ÙX^f¥– Ê8ÇòîXAÿî‡é?ä‚Þ`þ±(\Zx¾Œé~âé³_)fÖ&÷PZ‘x&lŸBÆcíÇ1™=ö«­ÜoNÊs3q‡X𠻿jà+�Kœ÷_Néˆ l:uq^/ÄÜS;%s”gz@Dlâ‘¡l3ÜÀs.E¶%;Äø&� ð­áücŠ\Û¢K´Ï c‘šS°qVžÛ©>mñ}mXOx^|?ÂÅ¥xd&;‚=F=™ÕGMÌcˆùñ'sKr‚>JJJT‹Î±}0~K|ë„�#ž^Y‡þ35I¿Ÿ—öÁf‘û4Ðn�ÏæùÕÞ|ßÞpgJo6Ôë û�¯û¡ÀÓ'ôú°ch÷½Sàß;²m ‡ú¦¾ð¶GÎïtºÕL³«BåZn˜Æ5ˆ�f¶¸Þ@¿‹ÂR79ùW¸××j¬’yuµ?LÂê±ßè´Ñ¾íŸæ7iÚ²�i«ë—ýÛ ŽÛƒ]wbòå¥3U–úe᡾-2�rÆð(Ã_2&øÉq¡IG�£2ßµ;Æbqh H‡qŽýÞc>Ìç‚8T›84´/ågY$çŦ2 LJC†é ŒÉÖMÚE>|°"äï~ÆjLEúáRUgçè²y�§òµ4š©ô´€å`X.³`#Ï"CuóDW Ù‘&ƒ6ż'D•¨ÕsEw¥c¶1ÿó[& [˜ïíz7¾/ÝÌ»OéÃ^•çÈù˜ÇŸù3ƒ>Z6oÕè±§‹zd&‹ …ÔzN ù‹¥ž.M¾þmþ�ïæ€øQN/ÿò!‘æDÍdz šÀ3í`LÒæ WDÆÛ·‰)B[¹ûÿ\Rô7¿æûC¦72šõ›ß9Úbåásd™ž/Ìï§´%Jœû¡ûÔ[Ö'¨'õ†+΢®¶?õËü©/Œ°� öÈ,�Fäî÷Ù½ ß'ùà÷ù1ÿžmuÏÓONr~&;»Ö�v)0vŸí·_,«É&su)ä,È™ä,uÁÂ�ÿ½¬Î}6ÈPÎ|iѨW[—ƈ¬ä&·náà©’ã*Y¶Ÿ;÷³ózQîÈr¥üÜh´ô ñŸ°s…hÑv6a!ϲ�ášÂ�û§€k@ƒvŒ:ÐŽs½t1W¶ô°ß¯ž;E‰r Ï}ò‡sG¤´ƒø¼;ˆÕ…�ô+‹,l']8£zw·i÷ù TÆ™9p‚š :†qåe•8;J…ÇY�fj‹Ö-•2óÝY�§ ‹ê=ù3ƒ\¸²óØØþX§Ôï WÐ-?ø4°q­œ1mŸÿÆ'úc Æ¿i@]�¡<�èR:î³CÐáÖ|>C’8öÛÙ’}Ú8{…}Nŧ³%ÕÞ ðÏj#ªa¬¡0&«@6OÉÅ8wfÝ[gñ8[rä>�9yÞª¡Ðn¯Ü1…ç»'ÿÏ/Û×KÖ¦@;¿§÷VH¡÷¦÷üäsqBû9ÎD¶˜ÞûˆS,¨÷FÏñ,û �ƒ»ÇÛ1|#¾‹7’¿t¶Éë!³=T‹z’·zªœaa=üÿ"¡èÏŽªô››B�Ǽ†¢SÄ]võˆ=îêäõPÄ/êõ›zä~QO3Ïß;y=Òs¼‘R-âúbÀkjXôÇ|‹rÉÄǸ‘hWµ&!�v¾‘lv¤½añG�sš| TТ†úZîJ$Rá U» V;kf¸F¾nT’™Ï‡Ir;gáÞ}øM3š,0 ‹‰fñ­�œvyì4òý<÷rЕ>”Ö€soui$n'íŠ?l¯ÛƒJÒ†a²ÆÓK)™ÊÇ•³:òÊ9‘7[·ìw-©zªAì©q¿O.·a«Ñ­M讉\�æ •y[u¤Õ4;^žì&ùx¿ÙMdó›8Ê|¼Ÿãâîq”â Æ[‘|¼{ÏtÚ�óymw ž‘SÔ#<ÕCJxv3ækÅ;“óyÛUŒËpˆø–·½Vä�»Q‘ÓI&åÔ–Éë>ŠPÕr(êÔÊÏ¿¹I…_+æTÄôÔ™¹6Òå$�KtQ¯Ÿï~¥»in?¯¤¶C®ŽÒ·ç( ÕnfLÚÎÏeÇ%‚tЧ+àyïÀ&§«Df\üp”å‡ëϳxC:ÿIoŘ�fŸtߢ›ÅÝVt5ï8øáç mLù¸«µ& } ± 3çó�Õ\JUGW¨¹l‘Òc- þT u¿á³$�¾ÖQ>ö9°Lз„ßó¿¢m DôÕÕîåWבÄÜ�2ƒúÂÔ"1t×êH�¯c9\Õ\rªˆ¨ùæŸ]ìM—'‘1Út#kS•õJ{U“­¾”�Ücj ú�샣c¦/Í, žLѯ<Êõ_•…Èþ~\ˆ«˜æ x<îÇXÃ�Égíîp®P.Ûº¬Z�3æoÏý‡1X_W|߸’¦K×éÀMIS¢Ì‡8×›ó3åþ8ÖmÑ"Þúbí*£j®¶v´ Ù”©³œp£ë•�­Üx«3¼bwJêÀÈýXþFÐçRžâ¡£”ú=Ùòû’åhˆñü>ùÕ-ö¹Ø{ôô.ÆCW1žpä³|8÷Ø•tÎ|OT\ÛW[ ÿ¦ŠÜn~�3}¥¯ü59†ãQy>Û&úéeè» òü €g|‹~dXÆÅ4€ G¬g›ŒÃâðˆŒ95BùfJd½ð3®Qâö[zY¸²�gy^ÈÝŸ›’Ñ­ÔOÛL~åyà=_7Qô$ý 1'êÝΊþºu÷ËsO0¾›™=bS©óªâ»ÃÓ¶+&›�Î-½k|Ÿ_àÙ(ކºþ3¿`þ!Ô¼)7ÿF®ý òŠES³èh°Ø]òvs de=ó Ãz([”ǽf§ÓÑA¬ƒ°±@Q ôž$:mŠú¡jáyÃ2ÓÎéÛ9äx®ËAŒgø».˽:/Ú…gž=åÖçúxYJ�'®º›¨£‹ç~µ¿7ú ·Ú�X{ZÈÃŒ{>Ó›E“G{ðLkeY�’"ŽŠ“g“BgY –œç’ÏÏK9æ[ibüÑ��O€º¸}T[Á­uº¸'Yì8 ^¥f�›Ì{ëé°5 X®ƒñ±b!ºoò7$’™ËqòÀ\q¸ã‡<èiÂPî`h4ÕÌBîð¹#X´Wà‰"ÿJ‡;yËrMö¼ˆy@âÀð(î�0»SF™C~‚ôea�X�Ó‘¿Ináä>ùès[Äî=ßpŸc!ˆ·º&Çö•L×-1˜Uò¼”ì‡J„çÉŽ�~M­A p¨í;”ðä”`| ‚1Êò+u™Ê€ù *žCÎú�v ‚¦½>{3žGÏO Hm"¦~:÷ëÒ¸4ÎåõílâÙëžB÷±ï€1LìüNãŸôÑ’ï~æ+ìÓÐØ·�:»9·Òé¬LÇÄí—–‹zå("®9W+IAµµ=¨ÕoùIW^×úmh߬„;¬nÀ‹|#;ÃVÛ]6,Ð"K|Åh÷ós‹ølWÇ}+“ˆCkè5%Ú)Ùø$•ÙþPŠ|`ŒƒÒaã‘eJVÈ <o%h';¦$ÃßµÙzNpü–ì}*wÍ|>AÃ÷ƒ\Ãÿ»9½Ñ&âCéªÍìZòÝÏñqfÚÇõ~öÎ=?Üÿ^.Ð<¯“Ãü8X>ÐÐß(©ƒcÍÎ;f~së§¼zy½æÁ;Õ^º4'å6wšMq¿�¨åÚVòix)µŒÕœ;O²i£:Z­?ˆV©Ç_Ûd¶öõim^_Äd±Iö·­6W›�5lÕIÖU£qu/»4ê\RnÛÎ ›ªâÅ–m±›Jw\.gi¾^ûo¸¼ËNFì?ÛQ­vÔjžgà~Õ‹x’”˜x&j[6öÁ"”‚ü,)Kð,Ž‘‘òF~Ïr]²|}yÎ0æ/].bΟâíbí½å¹ç½IUmhzòzV6«­Ö-™&µ§ó8D£Û×d¶ÚÀ,ë˜S�Ùh¶ïƒ±‘xV<]kûš¥zrEUð¥V¤ÖÒüg�“!Q0þ6?g–¨«Ú¼ëv ³¸Ô¸?‘€žUæßâ%Â{ªˆù4‚®˜3ý æZ•ÍÆø–HwߟýnôÊÉ­ÇÆ%~|ý;úfç(HźSk\eLF¡Ø++Z¿,+ÑaÑ §o=™4;V·ºZ^�zC¨·“!àæbž·ØF¡±R—Ä&Б‹t —-Ñ —°ü[O‡èÁ[p´q""/…=ÐCL¸~¯™¹!¾/ ºUìxÙ¢>9ц#Àx½Àk5…kYÀë ¯7ø½fâuL:¹YíÑ|õÈzþ~ï€g��©�(7™\I–qñÑ™ ~’Àº•­®%Ú7=�’¥p¸8#L*eîp3­…çÐ6ñûÙô0ufÁógü½�çô©�€ÆTKà{•=X¿¤‡�ÇÁðÊ•R-à¸:5Ю:(qœ õƒ¾ã‘¥¬¿âÌ"GôSŠ(B5Q:ã!AÀ"w¥ôËüھᎼŸÂûóïyø^T-Q"aD‚Ô ‹ë“lö½|"ùïá:Æß7A/ •€´-œ¾û¤¹äš� |J—â>·#M�ÓAÏå8AÆ#4@èÒª�Fã+^©sã‹�§rÁþËz>~÷ñ`ýgõÉroÿÇëÞ ¯}à{T3ïýcרŸeªO9.Õ%·&ᎫZOýéXyÿáùw×z“õ¯×i~m¡ÐGé§#½´±½#2@.¡ÁµJ»À R M†þ}ýôw‚ßKvNOó6ô7ï\—-x¾/ ½ÉpM)2Y~î—"¤§ â•Õv*z˜¬Ø ñËèù "ø¤—º!¬¸µŠíµÛ®ÅÖS^Ÿs$²ž¯§®�Ñ �P‘Hýe�¡v‘þÑ ð˜Ö>Üv›Y Ç'7῞ô)­,Xo‹×_íýŠCÿ‹¾‚[µ€"d4+‚á”È©Èæc…~!6ðuA^"ýÉX?üøŒ ßYã¹ñˆü¾Ï…9=äë�­/vmè@?â Â#Zs­®©™�'[OÓŽÿýLxÒÖ•ÐÒCŒô×EGii†¶�»ÈKTŠô)ãú±ÙžK†×“üy‰_–JdÝúaëSòÙSjòƒ¾U¨ùYNO¬ÿŒþÙúzÇ~b7%õ¶ê[füM~0¦Ö×üD¤D3�?ÀúörzDÜRÕ‚ñéÆDŒØzaóGÆ%à7ùúîÄpm¶ˆaÂxŠù~Up�ã&Ì>Í|ãl&Tòˆñf,C*žÿÎ?œ~SFÿq‘Dmô>)hZèå Pg¬dÁT _³…¥.Ê+ýjmŒ•·ñ±#òçÎ�dædÄЭö¤¨Þ»¥­þºE,Ç�ly0=4Ñ Pd­ï(ÊÀ)Û£ÑfîŽGûÙD)/&ÕXOÕÑvZ ÷Þö”ÌÆµ‹¯)W¿j—绹°˜ìK­\Z " ➺ž¶Ò·í•ð0.YÑ´=Üãñ¦¶šn÷g7­/㶺ŠëƒÍþ°ˆÞáxlWÎdž˜%ÇšyÕsg[?7®­Ë‘#©ß‘2s¢f͵qM.æÍoôù®6à[ÃQù´t+óã¬Ú­.ª%À% ”³d�RLòÓc² $ŽX˜¦E^’! e�f,ÓQJdªƒþÚ™“z$¥"ÙêpÍ•¸Ö:`Z}¡¯’Õ@46†LÉ%ßJÖÑ>j¹¸ ½ C`^–2 #ß×bï :nñ¾!{ß Yéýâ}{Û'7¯UoU0Ïc]ãXþV¾ÏyË& 7!ý[…ëTì‰cAŸ£n‹m�“n-«nšP/ìé‹‘s£4WPPéAWR½eýòžh,x€Uï+l«ýHÄ5yCKla¾Í:U̹JÅ9iG’e‘è1ˆ"�_ ›�tÃýý ª{¦ xUʈ!àO<é;äðŠ´yrµ$ MAn@×è4?%R�'W"µ‰Ù$7<|ËH]κ&áq¼Ý$ÓTJ1H¸Hð <òïHz<~xÀÃ9½”žP�0?j“øHQM'Àÿʸ‰>h•ô€oZÇC)m¡+Ιˆ!Ñš@'hÔ–�¹Kg�3„Kå·!²dGiBú žO‘žC*x(ÌK�˜z„T,i ü”$w"‚–á“ ?‚|8Y’–y Á¸ù�WRÑ}\€\ÝâTiï¹<ó‰¶ó¸Š±ÿ¸ø¹±¤²™ÔÊ©´˜sN/–ÄþÑœ±ø‰ùqZ¹ÝÏ$芉Gá,¨×Ü ~›ûmº¸�à¢][ p9Å¡^ ýZ¢\GÿÑAý�ùy´-%b‚"õÈmôs�ÑÞ}Ãͪ®…CËöëk¸Ž?7‘¤û¨ÿ gæ½Å !BÔ[lÌg+G@´ƒNÆC܇‘›èÉdc>V'ÅMoð-ˆ% cÌÿª$¸¹:Ç<Ç“wôäœUÜ<Æð�ÿ{ܺJpËÐ a�®®€[ÑèÊ%ó” ŒžPŽ=--ZBz šuÀu¢Œ[ca jèT»²Ä6Ñ“üXOë¤=Ð5Ìç0ŸGÀw†�›.SbÄd›ŠÌÙ}ˆKÜ ˆ-\G&¬?qƒúäýd`=®;¢SíÑϸ^<,žÑ£È“ŽCN�XÅM‹³%ÖI'ÁC¹[¤#�K*¡ˆ!i I˜Ô:³$•˜>®Gƒ˜1¹¦†LžÜ‡ãŽ�t벌FÊ®KÊèOÑ�€€žÛMIÕ’¤Û$®�žN„4_/µ@Ú‘^ëZ:�^‚ëìDzÐ9¬ë¾œóäDª�¾ø@ª‘~LJ©ÔÄäUããÌ~+Ë4üÊ”÷´Mê©£³´£»¹LÕîf¶³áó(÷9¡ �Þb2²`žº)�Xš ‹L\¦m\üÀtºCRÕWõö¤©£3wHU_æSǤc]9[“�|u›ÎlšFZÇš[´êj�`µ{ºaÛ‘8o¶Å ¾ˆ{Ò>Ǿ˜Ê�NzjãHóiz“4×lZ|IšòÝ‹Uå±²…Õ�¤‹ÛWÑL]vúó´äJu¾à§#+®µ±¥¹<àíY¦¹rlÛ¸Êyp ͉\ކqÖ?+Rä̲aOé[£¶=š(^4jdîJ‰üñ…Î LÂlá¨$r•0X«qûvØVß�Ò0S5Á]eèÍ©F£½:t§V¶±Ô?õÂMUu­idoª—LÏt§¨s}ZÍv‰ºŒ<ƒî=õ˜Ì†Ùe©rM¿“]mèί™àjk²˜Úõ½v–«�»ê€ŠÇ+±£÷üp°R7úÜ K#Ô�îª$š-½æDÝÕ b „Íx5ªž»¯Óƒ±—··•ß1²t§‰þÞ¸¹;ëºÛrOVáµmðqv]GmKÞ;« ×vÓýv°½¶·ò!ÛvÚëçíÌX{­bÜ ~/üT:t¥Æ’­G(í¢%£g(ÇÅu|/—y™婸º_¿ËÇÕÍ×5ºª#Ýb¹Ì¯óö|WB> üJù!–ËüZ[¶Z¬¼ä¥�ô‰%W?§k(í~óÊÊK^Šk§¸-[SV×ãâûqq=)®].?£{(ãâ~¼ÌËÃ2oß× ”l]`Y|áòûY¿¹dåË —#PæãärJÆÏ°¼äeNÇAA§AΟ¡ÌX¿”GT‰%Ö�„üû…ü?¿†ñ*³ò’—ùû¢\žCi3z��NYé\òr\\OXû¢¢þ(—ßPÆÅ÷ñ2/¬_Q1Q.×±,¾grTŠr9 e>.(Gòvf¬½(Gš–ÀŸuV.ókm™_Ã:ceÞ�¸h\´?.Úú§ûÁÊIñ|Þ�¸h\´?.æ1.ÚíŽsù‡eš—y»ã¢ÝqÑî$ç»P2¹‚¥•_kl¼œOVEieT|Ÿ¯ó¤·$çûX^òøü••ˆ3¡2XÌNî>Âr™_kËæž•—¼ÌùQZÔ›ë#Åõ±ÄrP”Ã~þ=¬v ë�ý>çKiAÿ)Ò?û>^æåá^^�Ó‚þS¤vÿÂå÷3ÄwX²uÌãUÈs,­üZ»—A^žŠï‘'–˜sä ۃ奸F>/;9N’�â9§xÎ)žsÏ1ü'øO.ð•Œë¿Çõ“—'6�~ñÐÜõøü:ͯ™œÀçOŽsþ&Çy¿ä8çorR´'Áöäå¥(q|å4ï'–¬ŸŽ‘ #3¼rÂò„¸Ë4/.ÆÇ Æz°\å¥(±E.¾—‹ïåâ{¹ø^ÏÇJFX"½(fqß,î›ÅïÍÇ÷ùïÍ\^c‰ã§¸])p»‚¸ø¢‚ò¿GÜž_°¿PBÿƬLó2C_p,‘¾·h‡[´Ã-ê÷s=J&±dy'ü\.b™æ×yûü¢}ANXâ¼+8ÿ ß1^~™—'<¯ K\wXÅuš__±r‰%Î?лíÄùϯO(w±d]ùuš_gˆ+°dõ"þ¯à:oõ°dô„å2¿>!?ÀÒ*Ê (Ó¼dëM)Ö›jæã%[_XyÉø”í¢4‹’éyXâ¼BÙ+®ŽÂ²xŽéyPŽ‹ûãâ>“Sª™ëuX¢^‡å¥¸æòkFX²v 9}bÉ~/äô‰%Î�!nè`ÉÖ –XŸAr~Â<ù‹ÒÊKí^yÉô ƒäz†!çxÒ�s\dÈ9ž4äâwrñ;9—7P2< %,¹¼dxÒ�óu‹eqŸñCÎùC»h_[~”ŒŽÛrNÇíMÕ[,Ù¸CÉð8–—¼dxJP’&¤çú”ä í8·3@Ù+î÷�cy)î³÷¢Þ•ßgz_§¿NѾN1~�bü:ÅøuŠvC# \—Pv–yi¢~Ù)ìX¦ùs=\‡X€K±L÷u˜“+m Ö–¬ÊÉž\Šëâ=à(‹ëQ?ÿ~„ã司�Ëåí‰ú öþh™·+éçeJòçÒây!%Ho·è—[ôË-úåýr‹~¹E¿Ü¢_nÑ/·è—[ôË-úåýr‹~¹E¿Ü¢_nÑ/·è—[ôË-úåýr‹~¹E¿Ü¢_nÑ/·è—[ôË-ú%ätÕrº‚’ÑUGÈéª#ät%£+³ÐÛÌBo3-Ì›Ûa%>o¢]ÞkZù{M6ÿì~·_”ÈçM´Ýa‰8 ËKƒ½¯‡üÝ´r:4Ù¼³÷ QŸ�rÄåïgú–Ø_,/yé¦y{VÅï€s¯Y¹ÌëOŠv¤$ÿ>eÏ9E?œ¢Nѧè‡SôÃ)úáýpŠ~8E?œ¢Nѧè‡SôÃ)úáý(ô&,Y?œ¢Nѧè‡SôÃ)úáýpŠ~8y?zz¾^¡drËâ¾v/ƒ¼dx¯§çóe¯xžÍ?–—¼dó%Óó{z®×c‰z=–—âõú^”ë/½(×ãzQ®¿ô ý¢åüËK^2þØ+ø6–Å÷§â{Æ/{QnÿÂñxa‡Å˜²1‹ Mó¸Ênkð�æáB¾¿O‹çiЯŽÊJ³ßïã~]±·Úö/í.‹Ï$ûk3æ¹ú� yC·l¿–¾ù äûqdÁsxN0ÙxÜáX:’(Ìïü‡ùˆtT ] ¤`¤QtZD?BÇ—oøÈºI"ËØŠÄÅÔ ƶ¦ôÝAÙØÏ5û41×3Ñ2�µÑÖ÷ñÀ0¥5ú� ¿¡HztÁï¦å¹6ººÚ�>^Æâ8¸îþƒ~#=5‹!%ä—_>ù´Œ�[ïôÓç4^.?ùëÿÜýö?wûû.ãäôõÿ{fÿÿþõÓ?þçîÓ§ù*Ùo¼ëÏŸf›Ø�ò'ÿçîõ¼ŽÞ|ñuï ü¡ïN‹ÝþöÿùõŽ]°�§…ZÅ»Ÿùß¾üöÛqq:wŸÈo_~úò’’_~úéË/ÿýþÆK’Oäðòät<û§øøyY|ùÇ)\%¯Çø|Z!/ìj³ò»d18y§Å/‹ß|oGàý¸Ê’×ð—¿|óðýâõâm΋{ÇÈÅ[m¼ÙfñŸÿùÓSm¯;ï² ð¥ûÌ}þõËË_Ê_~Kà5+?oÔÿ<ó•Fméù¿,Ï;ÖÁŸ•Ú-ÒŸà…äËO½¿}ΟÌÿ»Ú­a4>ÿúÓüÕfõ|yùÑç×ù°oëÜãË/~5_,W»…Î~‹��ßÿãG‹ÝÏäÚãyý™¼µùãLüõâ?Iä—ÓOÍr¹Ùúò2ÇÏe�¯T¾üu³8}Ú|œ©}(¾×»ÿ~OÄx»�w@g¬#×ýú‘,6 ìIòóßþöÙÛï?ÿúëËráA- ¸õá5}¤Õ|qL”ü xÏß$òÚÿõ˯/ó…¿I~®¼@§“Ÿù—Ób Ä{Züüh=££ò�ÿø�o…lóFñ/ŸWÕ:ÿ5\lö_7«]ôùËOå—Ï9ñ|…ÿ¨}þòÔµ_ìæ‹�¿ÂFÞg½Ç¾‡Q~½ýú_zûä MÀURùîÜìq>|µÚüò"²Ïå:~ÖñsµÙ¬—¿¼lñs­Q®_þzïʧ%yêÍGj,º«ãXôÉûüRÿ†$O‹ ¿†î%‹Óiµ ’WøÙùõ>ø¦·æÀæ›ßUÈ»9¼è‰©÷»Ë¾Xôï–9ù–Þ|uDFt)VÉï­°ÿ:YþÛ3wR+×rZ«¿°žâ“0˜¾wœEvêÁ›�Ÿ}Á›ájÔò5KŠëåf‘Á—/Ÿ×çä´Z^¿Î‹SºXìðû‚Ü:H~/Ÿƒ¼ÆÛ|~yºÍXãny÷§£·K�Üáó·ïØÅPÉÊg¤˜ü[oºÇ×íuü ï{ 1�¾üÓ_ “ò{ þ�—È|uùü³Õ^p�"GXþ•—Ï j¿®`J?¿”´Šªo«è�VËÞ |óÅ~µGW{îê¿øîý¬ý¬|ù©Qôä ´ø§&cÕ5®õ‘IÜ©òßkO9çMßvýΛ¾aNï)ù_éœBðÍ•—%y©¼ä ¨ýhìË0¯^rÝùTÕ»Š/¾‘ ÀO_*ß#Zo~ñvþâ»´‚¦„;îcìaúüéó÷zEW»y™‘UåipO+h´ ~ôÍ»ßêm~;NÇx¿8ž®X[Ø/ù�:a8…—ÅwáÛ—×U¢‹w˜Û/ßY÷µ ïù(k‹Kdï.r~’ôuöBÉ«é�tXÁ/ƒWs "õµ÷⾜Ø>4îJ­__’Óuƒ5ý?O à{ØÿýÍ;®¼¯›Åe±ùå3t-Ìû8Y1qÿé¸@ÁYä€ûus:~Ï?}ú/Ôóò ß…_ü)¯Ë›½õŽÁj·—§Ÿ?U+û¬hõñ´ùÓZ ïú_Óêã*ß5û¿òÂ;‡ÿøËO¯vsàP_E|ù8·À1ã ÐÙ_ñö,>�âíÏŸ¾ �aûÓ&û÷›õg“Â?19…|ý_A"Ø×?•€þ‰¾tõÔY¼û ŠéÅKòß±š/«dªÙ×Ä»,¾ÎÎ@ »;Åxó90ן?ñð¿JëþšÇK~øûO¯§8Þ$é�¢]ßQŸ_y~€„Ù!ðÜÄÇŸ?ý·%ûW<{„¡ùzŠ÷ðŠx³š*ï³OÿmÁþýõ©¡_ïo-ÚúéÓí+0îEöó§VëŸoûj·?ŸþŽíÙÿ¼;…_A8}õÃÕfþS¥™¼I?Ú¢~¼øéẅ–Y{ðÃ×ñãˆ@oÏÛÝã wiö¿¿óÖb8î}ýÝ�¡¨Á78l¨ÿ©j£|Í+ù�ÎþQSÿû§ÿ7ÿõ¾ÿš¬n‹Ÿ?•…bZؽ¥·]m`p>÷@J~xì?%P|MÇU>õñ u¢¯ËÕ ÇŠUÄîß©¤<ÇÿýÓ�zeÅßwÞvñÔ¸t‘¯”Y¼™ÿõ‰1?¨©üDù4vŒ¬<߇1ƒ^Ì?®¤çUß4ÿCCùbx¡G³huúz†�üšë��Ùûôø÷ýoýó1Á¡ÝÇ+Dcý>{›U°ûº<šÀÄ,OÞbÎgïíùfy–?|Á–6Rê_¿CàHÚ9‘¿øŸ0€wš�dºšŸÂŸ?ÕïMF8ú•õò©b­Oü/¿zÇcœ~=ï þr§ïZÿ÷oTͦè s#Ôþ-JÌßûXäß›÷ÿò«ñÎ|±ôΛÓ×ÅÖ[ÝÉj/·þ�jüÍW6Çì!6ÝÞqáA-aÁj�£–üÆ"cjÀü1ùß™÷¼b¦&£iðwŒÊÅO-~¾¾ü—ðDf÷V|ù§Ùȇuø¯°ÿ²!OÔùà1ÿ’”y…ûËUðw|ÑLþßa?Hú ÓAçïäíïÀ�|ü&}} �]ß+ýïßéÕ¿Ü…'üõ-÷~k[ëCÛ~ý·`¿‡äÿè·ßÕ…ø?ÀçÿDƒ~·ÿ¥*åGór*N½ãgd_w‹�í‹ï1ÃJóô@¨RÜ{ÌÍ]dÏ⬠©ì�U>Èuxèk|\�XúùÓeqTímÞ=€mùêo¼-�l5RðÜr§?Ê-¹Ï8'—¾o=Ìqð;ïç@�_sZÌׯïíW'�Š·»ŽÁXè×:ï÷‹£ï%‹|¯í»{g¶OPç+——? B]h~yqÙýV³Üøòbç{ ÕÜWðs¥ÖÊ_^úø¹Uãác”o1Ô+_^.ì‰&_ùòWfÈþ4$¿üí{$úgoÜüóËÃúýó†¼<íÍýü·ˆ¼žmÜ|\ì~¾ÿðó –¦wòábyÞl>¿9tÆ?Þz �Åçß^Šçï7žª Éëþ{/~~Ca›Urú¶¾Ç«Ÿžy{ùöUzß‘3y�‡¿¾Ï;õìç ÙÍí0˜ùäçÏ{ïèm“ÞÑ:/Ž×>»ÙFè[5ËÕf‘ÎŽøªÿIýú¯¼iðš[m@eGbx÷;Ü;½.~úœý¿{ûýßýMþþá—ß\oãùy³øû)ùüåõ.v?�^g ›ÿtz©ÖjÍÖ—â.ùå¿“×Ñûßšì§_�|ìS<�w�üÑB{lCýp™=žx{m_Zx�áaøý xÒëù±l¾·ñóöŠå«ñgQÂCÈ}ž«1?°µ”¼=~\bb;ïÚøOÏíÛïŸ?>fôëß[óù²üÍÄVê<ÿn^íÇ�?Né¦)õ6ïÆÞ†¼€ò~þBÕ§‡~{ünŒóí4TÐ ÿ»/ØÏŸ~-޻ůÿÀ²¿ùÍÓcðÛ>y•�ù»Ýs†òÛû›Õ‡Yÿ®”y‘^É»åÌFÿç¿å·ÿÿ$€ ®ÿÃUñ]©��PAù?o^Ò«wùí¯°øßÒ†È�ÿ-uÿŽhù_Zÿ¿#q.03ß‘8ìöó�?y¨þI†øqÅrÞ @ý“æÿWüæ·ß¹óc©×ªr}fŽ…CP"¿½³È_™£S÷�£´ïû%Ý ¯ÿÍ¡ä·ïù™­vëßsùŠ�øû Ùñôäf”¿úT6Ð? É——÷ß}_spç×M@ÿƒüõ*~¾1£V �fÌA¬, rq½;$�B±fŠF³Á×sÇ1ãŸsñóΧ°põyyöùû±ßûŸ�V/2JË�û~Ï—ïå3}~yãâãýó]üþþýØ»ïáÿ÷¿ÕÅOc[¯Ã켨l¦øZ fsÀ\ÿµ2ÌòˆÍx¥Q‡gÆìy¡Êy™05Ph5k_^:ì¾Uo}yi³GÊ�è‡SöÊz« ÏØóõòw¦M å2¼òÿbDÄ×x†,Ø;yÞ³ÀÏ ¬6ª_^N Ö´VêÚ-òßVà™~nT+ x'Åϵj¹RË Í[ü°pÝW1Þnï°íeð~³@_üÿ;úæwñ{=—ÿìù•¼’o³úm­�ýýà'ùg2«y=ßgFÿÂø¼ÌâøMôö?ÿmC~ý¯×þ`:ÿü³D^­—s²!‡ÿÙ!¯ÿ ˜Õ먼ã5¦ñ:ñóš½ä%%/„ÀÍ èÀ¢^'/¬ƒ/yM�u¼:¨"¼<^-¿jÃaÿïzw(Û¢ÜöìÖ$â¸ÿ<&¯ÚËö¼9­~þ ÿÛþHÎG¢Õ7WEþù浑ÅëðéGÀòëË�¨§K^àe§Ó>~Å]ïÕ~ÍñÓ?@Ì­üU|N£ xEüzy Ö_•뵓ô’Àø˜ �eèîD_�/»×Hû׈yÁŒFUòÚyIq™ãZ·/*Óð–.ühgÅ=ïQfݼ¯gòÚÿv•¯ðÚ\ìÎŵUtÈëÉëßAR¼R`ÿ¯*ð}h«üí ùí�‘?#.x9áB9½ÎZ¼ücËðäê·\èífÐÂj¹ú%§ c@˜T¾¼^EsÐ?ÆE¤Â·Ð¾Û®’Å+(Å?ýíG8uµóavŸ?�ZuÂmµoo<~†jý7ïú*x³Ù¬õ$áêò·É×ý£Á/ŸÐð¯ßâaþÏxXÜ&o]/Àð{D¿ûgô’ß^Ê•rµöíd6‚ÖÓdÔZ�*HðÃ47S„Me¼‡Ð¢,ðÑHø™ þZ¥š {ë÷AåËée÷C`¹8œÉ))âGò›hø½ëøÅ9,Ž—ˆÚÓ;8ºûƒp“gÿå—_;ýúåËãÉŸèÁG„þ¬ó"ÛFy½cþó?ÿK`‰´ãô—¿äïý�ÿx¼ë}E¿~ùkÁ`Nÿñÿ̈‹Ó}0í¼ú|D:}A…¢`WÀÉ¿ü—t‹ÕÄ5EÝâG_z¯Á�¿ô_�)ÿ±V²úSµ’ß^jõj¹ñ-×~Ë5š¨Éÿ5_ò«û}‚ñ7RIPãOÏã÷i÷ê¯þŒ3õÕßÄç9hx¿ý†/£o,È{cAþCoeÌ&çFÿ ³)M>"ÔÞxÎâ·÷í2þ@?ëâË/yÓa1Ð×xùå‡�ýõǯ°óå÷}¹Sðï?VCò Ž}œ™ Ø_ÿ¹ß» ½~=f?­^Ÿú d�ªôO_«�¾[íxÁÉåã1‡Cûèõ%^Í?ñ_ŠÇ€²ò=Ð|üÿ¨IÈ(a™½&çYâW³c(?øÕ/‹ÿÁþÿÈ}#^Èën‘�~8ì’È«—ôf (.Hç?ý—–³÷ÃE™1þpQF¿³½k=¾˜t®ï~þ|ðþùÛʶ‡¿]¡6[¡ÁÓ -VÒê!«™\¯óÕ Ÿ/5�oÖkùR+×Z•|¥ÁRU‡}Ëó�;F‹ß’Ü2ß) ¿ýÆ–eðÏÇŽ~?t4¿7_ ±ì±&FAù]å�SÔašwy¶z½KÚ\j|yùßÐß Vûøë.XíÚ»[,€02йü$?ÿãiP~þütñù… ÌÏŸó(�ßîñmBßVný^€Ûˇ ßðlëÆœr'@ö•\�SeúÑâñ«x1_=7`$¹›{äóÉ;§‚Ÿm< '+¿µêþ\•áìæðÔþ¸Úz¸+ñ9<.–¿;\9Û}7\çûácìcù›¹‹zQVùу÷—C»÷,2ëÃcoac»on¾ ûþCõ·ð¦ï·âIõûml°6~Û”¢�ÍUßúsª/?¢¸¾_ †‘ý ž{ Ù·Óðö;ãø1 ¬ÞúòäeÀŸþúáùw1\ßiËS <ó�&a(U…Moýe‘3´ÿüÏ;±wÙ ,‚¹¾éa¥ oŒÕx‰_�þ`û#¯yŽÚª¿´ *Ær™pýòåàÏ@à çþò囎ük�\<3ëoúò¹ôSÑÆÓïµ±õ“ü½FžŠFþ¸�ß™ú"¨í};sfñ=2y„·•_€\~ßVôëïçãæïÀÀ>¾(ñv«À"ç¸Á]‹4 ÛQ°±¿»ycepõ¯tññ‚¿×¹êK¹öòavî‡yààocö¼GÜ�ÿŠ6-sûb=…ÝÉïÂî>¿þH�|?¬çÎC˜¾âîWZ®4öÙ'€ñ'áî X8¬—w‡Ó»·`¹Þ|‹÷ù[”/¼¶'÷`ÄÞ¢›îq[x¾ ¢hðüGoÇÊ=샹%ÞÛY½|Ï×ý_oùÓüƒö¿EyצGKÿœ6½—à0Í…&ÿq~…‡7vö5 ½9úpòŸê@Ìy]‘[•¥7¯³vÑwô]XB®ŠàA�lÅÇÞ¾/þy^ÃLlÄ6Û$ÛÝVˆt‡GµyPKÒV1]¿ÁÎ�Õ‰`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_fr_i18n_txt.4008bbaa6bef4e03.jsUT ëÆ«jëÆ«jux 致\mwG²þ+³|ˆík¤µ³wϵ•ëÍ !$@D yc''ÛÌ4LÇC7î$¤Õ¿UÕ3É58ÉÝœœXS]]]õÔ[O7Ï�,f×rºé§SgôÒø\Ú=kŒoüün÷ãÿûãÏ/ö—ÁåÏ?~l8›þ¢^¿Ñ¿Ìlüéo€¦y÷íßÞ¼þûÁsÙÔMÿâÝ?îüó×ßÂ/¾[ ›Øw³ S¯ŒF‚wVú`u¢¿ýî�ü¾a´l4hÎÆ�üÇ»Wß|#ÿ÷ÛÇŸß7Õ#&Mß´MõâNÍžßÝïçÂ�_ë‘5Kiýz?EñÜ6å‹åLö£üù;ýÍ7ÏåÞ;e ï<ðQ/¾+IB¢€î{û1ü|`÷iÒûfx2'Í÷_±•ßÁŸÊ Åð9Ìåsk®-¯“#k�}Þh ýÌ'b¹,Ö‰™Íœô�—þe#ñ&vRûä_�—úeã_ɵòy¢�ÞÓð¹U°„d%Š “ÆËÓñùpßy«ô\ÍÖ0ÕËÆ~c#¸Üó÷MÃj¸F34ó½•èr¡ßÉ}y³4Ö»ww‚ظƒ;‘eÓ›kce_9ð0CÅ¿qø« ^Úä§ù*)DR�Œ)ˆ†K )tXrã‡Ò{³s\¥z.÷S´o¾ÓÞ½:h4š€€ƒ°{[à?¨/ø %~ò©kÜ¿¸of²�^róŒÃriè5ÉpÈLiåÕJÃûæÜ í�CQ¦©tŽ]hðÆ* ‚NDš—7ìèEA ¿¾Ã¨Ë$“ ÑH ^˜•œ˜V¾Æ é €Kx s­¤ujÕFÙ0éïß*Ìç€O7<~—®4«´mNR'Ÿ#±ê ƒ÷¹â^/Å´:Í‘E4$¯l+]R(­Äév[èÁÄœ…€P[³Ø½è Á"Rä2(üñÊKVçVÍ•Ån&ÅOáÛW¯ßš’xÌg*Í8Lðòïm—‚OL·hí\è9Î'“4‹e’=øa Ñ|Ý %«¾Iyá¿ÎІ'o×sÕÁq:rN¬I“‰Ýh$hIˆ@^KÀ°•[šv"¬ä\Ø ])y}¬ –õøJX) –%uv, 'GÆ‘s³(9Ò+³Ž™‰p“,‰xÖ¸¿o vÊàë•Ú±s÷ñQŠJ³>ÜWRÃc-,ƒ¡Yà„Sˆ`Í»L€ÝIPʺ#Ö5&ù ™‚-®t¦,�Gà'Q3 ô9Gè‡e¢s,p3«2~Î+Ч•™Âe ~¾Ž´:·5²g‘¨~atÍ„ý i¶H11ǵ¢eÌ2«)ÍìH¤ùÀh~áÁÕ¸0 ƒŠÑã<øÌ\kŽü§›2Ú3a-Ì#|’…Ä­�ß(F{a}MØ1Ï,`8&·§ƒ�²šÅ�4´'SЯ÷pó`Bê4ÚQ‹*Öú\Y–×Ä‚6˜ù‚r²^Êæˆ Uµ;@ÐF~½òù#ôF²mø>!n<þ›]òD7sr–¯Lò…‹ü†96NS•2•ÿ�ªfPƒÁ_Õys�ɰ0é'™�°¡Ö£·œük`2¨SîR³Àj}„%enŠŒ¯Ç‚.µj‰UFCÊ\Lä ßÜž_NŽ.’Þ(ùëØ·GvrRl:—¿mÆÞˆ‚‘ç«•ªM⦀ ž>Óß¹L(bJz;µtCÃä}*¾APÐô2�_ÈW šQ<ý2HW�¤¼ÁªOC)M`»×¹Ø�³}ENàFgJl5k%ÁàqÍ–€!eÏŸ å<‚7)¢œzgI* üÓ‘c¥j¦hm°¡ÝC ›ª=X®j¿œþ+¢#ôФ)›à'm´wÈØ‡—�šµ„]‰_1Ñ{ÐÙ5;Z4¬#¨ô—¥ ØêBïâòÑ]Ôò*VÏ/àæ›ÖѨßûáòèƒåƒKðõt€9„sòm½0œQý)0MÐ2tA*qÐÕƒŠñ‰ÕQÕf‘3{äQT+)ƒcñLÞ¤’æE†)”.øà­ ü!¶ežæ»ï'‡ÎA8¹Ý[!{šw£¬ñøä¯� 4@º”é§ÒΩ¯OP{l >]0Nöx³"Ûp+U�ñbZÈ º3#zZ‡‘ͰVC8 ø5@DY=  àK<ØÁcÛiσßIì€m$Tî` àÜb ´»#ñ†qßx¤yLÑÆAÂLBsUøÆt¥çwfY¶UPeðUÅ­;“–P�(@ßVPç—m'à„ŽaúWÄÄ£4ÇN;Bõà1òcŒ¤=#H Á"OX�Zf™dµ×�½?ªè·�ô‡H™ˆ•LÁó+o4SÄaø †Úímµ£·ïÞÿ(¾œ7«åøG$wq*Vvn&ô“vLTG™ª›Sn'³︕”aýÑ$OäƒèUæ�'Ò•>Zo±/ùîØ°!ÞÙªZçñ§Tø°VçEûcjúÿ©ã÷@ë)è ñT9´©õ0ùoµF ¿XvÅÓ…âë½­¬Hqþàn¦ (ÏZë›Ï�á)î\a(PK•KU9? kË]Sò\È…°�ÚJƒÔ×#TtMŒ)¼bEíog5£„‡ÞT%UöÓѱ¤ó˜ô²-nå‘ j6ôÚ¹°¸5¸„–�¢èC»ûJ�Ñ’l) C¬¶PÇV †ð ‘5ÙÊ}Éó'%Ï‹æ£Ö}QÃî*Ãc¾Þb_-b“ÿë(sçŸµŠ’=­b+ëÿ±U-ü‹Øb_-âÏ0ÅVóg­bËX“C—=üÎKáø£-¡hJf&>ТP1®)M?¡ƒvÀ¬µjE5±’øhöß>¶qíúàî°ÃF9�KÕÒỾPV€ðŠ)¬6Ä­£Ãc–×lž €"M—ŸÏ«y‰ôIKØiÈ’öxÒyPEA}– ˜Ât$û€}«Ä’ä¼fgø¡FZaáÃs/øYæ’^!Ÿf«ÖˆDÄFJB %%Nê^j©˜/yx-â¢Þó…)­éŸ5;Ö‡L“!Ávø­´SÂβ_É’­Cެeh y"í-®mnVQ ­;ì-hû³ÅB±%ô¼—# ‹Æ–,æ¥1Z,[ÁB'!’cá ±l…b.,)°uÂæY³aAõ}KäV¢.H,NaÎò•Dë”}AH X�~Ôã©5-äb�´,¦[Ðú„ŒðÓ² Œ$aXÀ·L¡Vqé,âGbí@hµACS*ÝéÕj‹Å~+C…Û¬-û ?±Ä�…{+‡:7¢ŒÅrËxw-4¹õ#K@kalp.®‹5 GÝâã6 æ6LA¡¨Ý®ñ‰uQÛ¤Æ%Ï$pÓ󟑞…2ÉsÄ_›é%’0-ÊIJ™mVÄ‚öñ hŸ6s°åqc1Û¦ü|žõVåq�öÙî•›OHĸ�«!×f!ÛÐ@B²0<.œElÛf1%Ó¶Y¶ dœäô‡$lÌlǀؾâå[îAžÇ}Ž6‹Áv°ÿG�ºë‚*¨)içÒ_Ä{›…k;_/£ºY˜>¶²O1 ¼‰¯ÃFÄC¨×bNúë°á§ó«Â=E´O‡5qGhì+мÖ€¬SʰÛamôœD_Á¹Ã'™bÓ!’±Nwô9/émð_›8obr?b]Œòv¾^z¢`¡ƒvíó¸Ñ�dl;rËRÅGlC6>WfI³w¬4f]"`ít¬²_ÑHÇ;ýðXŸÊì}ÌëÈc¹6Ãe[;§�Ê _ýÅ€Mb°¦ÜLDƒMÙí³ê;†Šœ8tÙ ÚSz±ÒeË�2Éî]j\u—�£]+u,º,º(ž±sZO— ¶Ý°|'3•|XQTì²€éi¡6“˜~»lXíæ1uYwÕ*3(‘‚�”]k¤.í×eí×e°ë²±²”®ÀÚñ ±¢<ÄÓe“ü† m“ ›«DAXCwEo¢©Yy0¦¦qȰ.DUpÚ¯¡®ÝËÂdu i$‹ÍžÛ¨€5DÏ—ÝÔ)«ÁSicD8eÕs å-2¦ÇS>=–ýD.(¡¿](Ú’HN�ÍÊö”õåS±¤zÆJv&õ!|Ƴ3e繺­Úñ36žAm65Ù%8cCpQSA(=Û,†Þæ7ÏX€Ä&'Hf™Ë=é÷†T»¯ªMæ3VmS¾††À2…!! ‚'ETcf“×ÏØhqf®©·ÃÒïŒ ›Õ‘�‚z¡3¶¢9·âS^j»Ï&ľ08¾ÏæÃ>虆²Å©OîõCJp鳯ê+™æ6/©Ýì³±mlUÒúB§Ïj²;?È HÂ:U_:ãs,ˆû¬S}aŒ¾ò¡ÄzŸ wýp#ŒÁbÌí³•z��—F66�¸&ų ç@ÞTkd=‡«X Øp50·XiFCÖ_†b¡b-:d=fˆïСÿÜk‹"â)ªtȺÃPÍé ð�õ�²ÊÓÎL�­è�õbBaiÈFÀ!´�VÌQ°p®6¸�€$ˆ@‰’â�Eå0¾ @²‚õ±ö²Øª¨tÖ.¥~ }­²r9g½ï|AcÄZoõíõ0bÍ1ŠýJ9b-22ź*/Ÿ¶O#Ö8#¨V‚ò½Í"¶Û•´F¸w´\–{â#6^�ħªŒñF5…‰ úˆUTŒ°#M;ÖÄ}A¥Õˆ [UÜ)Ÿ e‰�µ4¾Ú1¸ù„1lÄÆ’tV®|A0bC 2 sÂÓˆ À"–#ÖÙGóX¤þÀbá›Ò  ”Ú‚V¤�‹š 6Tqþ‚Ç!m ,ä/ªÝÙ v}×€sÄê˜ÿÐ `=¤ xàéØê¡Ù, ÅÕŒùbJ®ÓœÞt# ›îÇ0n̪lŒ¯Áß�kŽY_+=Gw@­�ùÚXÑ�üT^P{C³am\˜Õë¬1»4^‰b*,uÞ§ÐO ÄšÚ©1ëR�ËüELcþºŽHúÒD)wx¦jš—o*"Âû˜…ÛØ,ÊžlÌzÝ’+ÞšAŽd¾r/©X¿@%Cïå°ÓTѾɘMÚ€«•È Ù”ÍÊ`u.J�¨zÖ[ÇëØÕ�Ùø?¾·ªÜ!šì|1 ö“Ck·«á‡8šEÜÄâ•Ò p3Q…,Ü&oöâc6hNHÁ×q-,–&Bß–Qû’ ¬—Ÿl¹KÉZø²R Ì—;›ÿ0Á³üI|§æ1éÇ“â´;.¼Ã�^Ó%ë±_P±¾siC™è.ÙŸ‡[j]7˜ºâ_÷•g( >\ 5#‘Ö7Þ{Wxw~‚Ñ`½{q_º¬Y®Ø q%µ¼…"•wU÷z‚”w¥ð,²ÛÞ#¶l&x:ˆSð lá5m�^±)úJè <Âí=$ÞCG©jà8ø@{§ïë�;ÀÓ²î|fœY!ædÕöãOñª6Ô´]kã©øÀ× 3[½!�¡ÿ‹ÜÕ6ûÖ·>¨ÅTL¯é p&\>5�Yñ¾ÉJ9c7wMv_ÁÛ° ¦‹¯Rªö9<ñ¸Müš£þ¯„®M§Š˜Û¤xVUtÅ=3…—°Ÿ©"�îÞÏî‰(Mù>gkŠoù)âI¬ãoñÄ>]·+�ˆÒO:EgZÞÐ-ìxàöDÇRÒhûž”wa:©;oÓýüÄJ<¶ A§|m�ñ~1™LVÆã­:iWyHmµÇ¯z ˆé³ur­G§¢rAˆä g­‹G±æ*%; ¦:,¦ÒžÏŽhà}+†¬ŽG¯z؈ÄðZyÍ\¯p…žî$•3áý§8lbjTW£štƒ�OX”XÉ¡¼îí’˜¬.ÐæX4š¯õ¨­…<¬øNL€? [n�HÅ�©Åw¹å�­Ú/6¨.A•CÕòÉEŒêë ¦ëÃrú]SòÀÛxÒ°•K‹ÿÓé=º‹µåü::}:â½Êæ²æÊóöͲLz¡Š�ÂØUoi(ƒê—¿«Ø¡'ôí�Çúm]Ы<'5 �u8±Œ/Öñräl&!›ù1Qï<4 ˆØŸð�ƒãDü$�\ݨÙ~TÖeË¿äB¬b ÆØ�)‡ç«ã—`°Ë¦`€ßó°B`º"Y®2*k‡%6*#_Çë5õÄñòM^õj¢ �­óÜՙʚí%”JÔ|ß…ðQ~CÔÙ–šõWzP/1oH‚qÈ |æYÍbj#Ž@ëʳËín ‰`Z@’‘Ùáò" *™ÏÇã£v‚ãK~šF¼�Ÿ9™"D·;ÅXb2ð2{/¬ÆkCìŽJ(ïãl`“Ò9Ú 9x’"eL ©´øÍ.‰€’t3:ºê¦RE_HQšß}åP0Šþ•*áü²×Ä|ž¾¶'½+ºo@× ®¡ùÚ±ÄNuqëUw–šÛÞ¯ÈmiáÿÚ{óî¶‘,Oôÿ÷)Pœ3#{’¢—t增ª|´[UÔR¢ä<ýŽÞÑ�ˆ�„40±È–åüî/«{z^eugR$"Ë�wý]Zb•!I«šI×<”s‘5·iþÇøCx¬û¹= ˆ¯vwcÝ[âX®+A+‰·¢sãƒï´‚¹¯Ê¢ b±\N#šƒÝüšÖwˆ†2$”/î”’N()RJmþ TΗ¼Ì¤�X}ý¸ÛÁ³È‹9ó‹ÁW $ÙFu‰ùyœ›‰·?ˆµVºÌdóÂ9:ñrƒ%¹eò™X$d/!¯Ç×�Æ6„¢(òJÀßêוÔÛã[¤Éàf+3_¯K)ãÞåB\Åu-™MÕ›È2•ÏáŠ<–v‚7¦œèqM×$>G»GsŠÀŠ*c-ëy¬â³Ì)t–’®2©çÎÅœ¥|Ü‚:œ´³†×µ"N8áÞY¡º&EKÉx®ý¡w­ÎRU\‹Ö¼^’á’L G€yô´Ë’ húRÃ2nîåe$©¢®0±}‰+œãÊ2D\4—|³º›/J!wf*LŠ‚û ,Ågû%}{±¦ºÚ�»6¤§!(2y*’+¹›“­³ÀjÓEDÒCÄ:ú÷?<�®ãŠ®ÊID˜¹Ä@äU󺨷÷ôT”ç¯H²¸šE¾+TÞTt9J—ðâ‹"Ã-¹—#‚7o‡]æ_ÑUçqöP ÿ�T¸ɹ*Ù\6NsI¸KJôÖƒÎÙ*µiµt‘mU¨)�¸K6×4u*oÐVH¯’RSêPwS1•¤¨k±¤ê£‰3qÓ�ÒVZg^œywŠ 2ØTv¢¶�SF�3B4ÒI»î]•ÈCç ÀøVæücƒÃ 2&ûÒqšü»ËUµ~âÆ¸{à„]²À¢šæ•²ÛK,jl°(ÕëçL5"=Ö9!9®…7Rɱ-Hò—ƒñkMSçž"ÃÛ·Õy$—©^Þy.HEkEñÔˆä¢$‘WéØ}L Þ(èN�e+™!ØN ©÷æKº÷eÔd”Š$‰C‡Ùƒ¸Êà��¬»C\ðIÅÉ,ÔK³â Ϥ–¹oÁÁÊ!Òk‹G‹KT "À˜©€ ~¢ßë¸L&¤É×Rçô�ê-ý„eÞ'þ©âÄGÊóáµ¾U?.IÒ~# ¿Ñ ¬uŒ� —�ˬZ׺9erUÜ\Å,}öœä}E…D­îÛ&B”è„­QiøÀN¢™³õ8ryï"«Ðª«y›%¨Œ‰[âÑ"˜‰µ fïdî>EF�aŠÖdWÙâ'ðÊFUE¨48sôWä?Ž-6 »èãÏh¥%.D¯ìbÈž‡õæ1Šnÿö]äÊæ!/+0õÀl˜¨äêÙ½@}¡®ØV$0¼6Û'qm7¥.ð™�r !£Ÿ&xXúìÀ;Rk„] 8 ±^ÐeùOYË–¼ùUËy�‚&K}ñzÅÙ‡¸Ö0Ðà�qQIÆ8”‰hñPë.$Ó¤px4°Ø¥EñQr É7ÎOÇ€é4ŽNOä§Ã£é)è3‹Éx]Ø—ÍètîÍ7dA‡p˜¬Q‰,(¶-*bw�ó­ð}ˆ›$JL’$hÍGl š&E‡7Á»Qø¿ÇFRŽ†Ï­iE.¥�^î1µYצÑZìDzÙ%Ýåé=Þ^�YoDFYÅË«;yõmáÿ�$º;ÿ½ü$±½ÄKþÉÛéÑÓžýÚçgSös¦%ˆÀ²`Õ½Nõºîƒ‹C¸7Ò8�¦ÃêÐlHm];âÁ"€&#°>øÎžu1o~úVBž½j+¾%·¨}X„c,@¹ 8H.>¢®š–¤¿Ý#yѯµ\¢Âí’5G¿ö\ ´HE3ôËøÖRØ2©>JIS?ò©È•¦§Û¦u)R6ºhC³ ëz½lZ�ô_§�¦û1°Ž‹¼ÙyD¯wÀ�CÇw l &Q‚—JÀØ=år¯¯šíÜ· @CÒ§ó©Ý �Õ/#�/÷x[^@¨ƒx!5’ñºÇ€’Üx�ÔQA’«Âï%=Da™1횸ô|©·;PÝqçÁ*Uú¢N!£-Ç 9źQc~¬šëà\g&ªp—àž¹DaòU•²·Û¾ëù5¹EÒª’çsŒÚC äò×�ºÔ€®öw4ÏË:t&Ž/22ö9]u!ì=�Ñ ÷gè‹ò-V5x¥N%ËìAû›ÃîÕJ6³üNã&Ÿ4xçø$£•¼©éqÐ#pZq2åaÂŽj€¹Uð ,y�Ü�õC "G %’,4·ˆD ð«¤ãH.ždARO¶”æ’X¶Þ9Bw¼š!pV-¢Ê Ö+c*�aëc�òOPèE´Ô;5ÖJáÛJæŸ)…LQs—˜ÃI¤�Ñ6[Øv¿1QvDÔrýCoÖØƒ(n¯âÞB* ަg6o0ƒœ¹ò­UËë"cÓågêxâŽìû¾‘!ÉËë¹»ÑØu)9õR¹$Íg¾åZï}pëVädBYUjÈx}‰¸<ÌWMÝá¼ð.J#è‘BÛ»ÆN'� W›.‹È2&%k'q²D#˜¢cD¥‘TâK|Úæ 3ªCAî|„î†Þå95jN�—´ŠtŠõZXí0RjŽœàuy�Á8CîF <æ¥TㆹÆu‘ø $˜¥g¨¡P—ÞkÃnBW¡;(`}÷Àå%ÿ‹ËŬRËq RÎn±$˜Ÿ8÷W8�ÝÍ·R6ƒDCwÞÀhKÜEïÖ�¡gmèÞôž1üãqU8¡"_ÿôÓ×ÌÌÛokjþH­9¥Õn.n–Wñš¯oå8 ÑÔŒèç V�xª×ÌÏQyѰz“Ÿ¨N®“ÚõÚ>H�âJ^�^mvz=‹°Ò_-!ãË~«ª sQÏ Ï-WR-ÈØtZo$½x½ar§›Ü¿¥>”Ø‹›k@,<ÁïÁ­Bñ+ĦÞIñwjIÉ”U&¯2lrXè¸?ÕD^–ñ­Û’A¸EÓ™AžÕä>R¼p{IÌp %¶Š,)†›ñ^ýÞÉ2ÿá0ÉJ²/yMùÁùíÄ‚]lm°Ýì*æd Â0ôå‘2€|�æ 0JïÓ&US5²Õ:óîÑ ˆí°I[dùƒÑ\5¬¸|Ã6P”w¥!&™ü9Ž+®A5RÛ*è‘…�‘@ÃPJƒê”¼ºº°C«µ?³ÁÛîÜJ¸ÂÇàLÅøËgGXm§âxD¯›N ”îW "’$Qíh1ñEÀÈòE·Sb"ýqC¼´K;T;R«Ú?[{Ui;ÒUÊÙÃÌõAä+Í£Ocí´Ý;±LIìÇç¢Ó·§�LÛ•žìÑ=ÐHV¾ðK“W—Uk Ø 0öÌ>ÞÞ�7!RmSå?oõúg&Eí*¬°íåªÒ™þ«j»¦èÒhü’ hd^Õ—ˆé ­UŠth‰ÝÓX:6m‚œÏy±G…[¼4ëæ’4AþØ=JÕz•ˆœ“'Sþ;X²Ô¹ £Û¬¸ÆµeV­øîA*2ï-Š&ª€ÅL˜„ѵã+­‰—¤âŽ*Ó“¤ŒE ®)ü=Xûˆk@}DOŽŠ§ZNHÍÀ\ 8š×µ?qg7–¯ÕNP©0‹÷pVømØ8¸Ú´÷k;E­ èÍÎcXcЯ֒áJêäí–ìáœý=%-ÞvxõT[v .Æ?6;~3ÏQ£‹°oo=×e/9÷}ªÍSÁölÇŠžè8*¦è§#Î"í#èšÃ�²fêJsªjpeb®DvïéÜåˆ4òmµhNõÜŸ+^‚n bë e*93¤SÕL°½Š,-À—QI;8µxv%’¾�¡b<ø­í0+5|©êM8ëÅeÌIcXìJ.~‘.îR?é!¨gQii:xˆ÷Y©QIf°·~a< g–%ò;•EÒÈŸDï|>.�¦Ài_Ÿ‰J^iá„»HL r�låùvÙ”)哨¸á,ly, t¦Ò~!á:º†¬üYÊ@ß�’è’þ„ðØ¡Q(­:ñ†¼ÿIZ­Š_–ûg)Ô÷©D™!�±+�)€šTz‘S.¿±ÄMªªä'„ÊŒ@lL±2¨ŽhàˆR+�‘ž§8¨lµë×>!8}�øV½ÚîûϪ(k’Þ§*_f'º«k©i>{v›ÖwÍõD²‡gùíÇm`0U&iö„c<£€�g/_~ÿßð#WñÛþþùó‹ï_òÐ.JïaT/ể2“&üÊ´p¿Œt[îBBÖ‚¦ô3�ÃÌ[¾/ß’·NÀ[\ÈþD/tƒ1Eeü˜ðS ÏÖòÃCŠ/¢ÁôLRº…TI¶‹òÖšâ"KÊmÉ!n%�=# —g°¾Uý Ûgò;I€r®è]W%fìßÕË …hGœæÉ;@ž½ö^PxwoQZ?.¥T³+%ß3’'’þÞ‡0GüFùs³êW".ÀnñÝ¡brW|@/-’BHL+E¾¸£\aä€ôäãläžû;yùƒ1Ã�N±µ+™JJIš1ß`FPÈ8a¼\U*Dו åei<råR Ç€¹c¿’.i A(ÚGëÞuš£;D_Ç¿N¥D—« ¯Œ1ú?昫eü[Qú’p hŒÁQ00)óCº.mt®ªì8à$ºy£ª‰§ºyášq'-E�ø(2–&å=¼Á•+ªT’RQµcuóR6_dh;ËjŠ8) óÁ0)Q-Ð9�ÎÃxºvXàJrì0ìÏt&SÌ �™Ë}‘‡Ü*Dj—o71dóºÐ /fäœ*hÆ€oDò¥�6|`aºR�—líYDz?zÂäqÙqúãè�RSSÉ^�BÞª—V¶Ï¢ø/5Î2€÷iÙð¯P˜+s²Æ|ô0"]Í]\Góý“ј¡ðø1’Š"”¯ø±ÀìQ (ý)GÁ)|\瘷¨ØŠ= ¤E'k¥(Á`¤.¤Ö(Œ$;$P¾£ÁXÖ-¾l|ÇYm†Ïšô³ª¸®ê²Y° ؤQ¬äM%°"¼IU3ì$»VîÜ¢|Xq¾W?½uR ­�1ä!Õ:îç£ÿ¾>â¦3:óÙ%âH|‘‚T‘ª("òœu¸¹ñL\Ø-ªÓbDôw¨8•‘oÛyC�ßJ!Eª [ˆ�„7ê_è©;%Ñõ³ ©{,`Z0‘%ˆ <æÒ‚X”»ÞH\°€Ë‘¯Ó ]ˆÀÈHûÇ0adI-¡Q¿aÍá”ßâ«uœEÜã& Ѱ„�ζd’V¾Ô³5–iù.cøK±6и±gÈΖ¾”SÈî£�^ËRÒBh¨IƨN²Žµ¼í•Äõ°ÌÈúÑä§ša£ ˜ÖŒ&d%TãÄ�JÔ|œ0ô‹‡é.AÙÍÝÐ5XMJë2»l­2Gíãé’Ti‹ ÷M–ó�­.iÌïÌ`Š Áð 9€½ÞˆðcGBHúÐ ô¦6=-×¼ž¤ÜP¢<#UÔ¤ÁÆÈÄ?²6Á© ¬àÑ^'Î4ԇǿ,ÈDÒÓk¡­B1•¸ø#,0þt˹°*AÍ+ã�§n©ËÑ'QÛIüp9ж#\5-ìh±+»ó5Ð⬊e>¶ÚX§Åž¥Ä/0Ñúkø$÷…%äÂàgi.Ï«$%Ê÷#|6ŽPQ YêÅ>w°sp9 È�gÕÉ”[;É�ÄHAÂ@Û5žQ)%€²…÷à©^ð=A[ Ôh�W[}לn�l©.Lº¨¼ñÕÊ·Ï/;ãÅP¼·R×¹¤5ªÌÍrnªÈTEFfã¤Hjm”�·jj¶„è�ìŸ8>„ªIméPªo°kvæ2JR:}Ù 2Ä¢Û!ƒÅ³,<¡ì[Ê è¡FeñôÆV�œr‰ù‘©Ê³“ujÒ¼Ç4@Bõ@´LÜÀµ¾\G„…¼) %2#^Ço0ÒÙ_<lü­ÐÄ(5åŒT†{Ȱªf" †¬yŸfi˜¯ª„ úžûÛVœF’ô„ò€àB‘8œ')±EÌhäL–ŸG¨¦{ÝfôS`ŠÚ~Ôâ^p3âòQ:õRR|*…!ŒõR¤«9:ró®<+…u‡j<Ô3´c¢‘¶{¨3ú ¿áˆ,ò]M)šB¬ÌRÚtdÓN‰4†JKüöë¡Àe—xÚ½àyXx¯±b/åêÔ õ¨ˆOY”P6êšcð:È]…�X=™Lt€ãM‡é€=G@Â#Ñ·÷¼€e‚Qœ ÅPI:EyÀÛnÙ´¶ž[ƒ=U¯h§Y z+ì»ö%ñ¶ÃéQ`YhfZ1²SR|È¥H T«ÁÄ'Çoú.zò¦”k—ÖO5Â&¨½kk¦}P¤7,ü/Ðå$ ¦‡vE {ûW’µ’û0'êüù-ãuic.ØÖä˜:�Ì®(_�nAÉ�1D0¥%YLúq{鬀†`ºó>Å{ÐsðïÌ'8ü�Ç‚9‹ à-Ж"(9œDZò*—y@3uÝY‰Ûë'HÜÜ�•šTÍw¤Èø]¼¤8±tIü µÐ8�¥Rw š]8šþÝÉáY4ÛŸG‡Ç'gGÓóÓãy´{r¼»v<=>—¿É¿ÎÎöwÏTŸ�™àaw:|­:8 ùôüq×¥^ÆŒ­§•µ('UOò.B|–דº�½”b)ô9Å(a¥ Oœzªt�fÍìâïµéI]^~ü«Gõ¿žñ·#¶(JyÉ¿0ê¤<† 8"äAÐs¥ì�ìëè3 C±2V²¯»9MÎwߦ‹Š6Uè �^«+jæ×mÀ¶ Wn>§âg "Kí”YL39Æ(�ÿåuÒ¤.$|°ŽöÏÏÏö#¬áñ·“‹³èhzx|¾gJ¿£m}mAGõgS³jz/õ�€Ëy’úbâ2hâPoÄ{¤ø9eÐA×@ºÁpe¤DÛÁE Šñìðà±í¤äÊØ¯¿-‘Oª­› yáÇ…I¨³ŠC‡+Gzt 4ݨµÊî3$Ë»ƒ´à 8VˆâðêÏ>á»P¬˜]ÄäV®má°³¤�¦øá¼ã¶!lŠÒi>¨P&ÀÞ'‹¦íßÒo2 ç³4E± >m+%õyË>xŸÆÄ†9jÚ‚÷ óî è‡n:9I?¡¡Ûf<†$#}×y©R.T!ƒ~°sPçý"”3ü϶*BÕ™ûf†Æ�X_°É€{bkšßC0$æ„jb�´‡h~ÁµD;-ˆ¦d­t®庋Ñà±Æ�Êò6~ªlHº×¢*@µâñ¥ — ¸·Oˆ7¬CE×É«ƒñ<à�uȺÃO�= C_7þ’+Døw¢å0’Á®ó£¸|ïn§ë½!wD ž1Ûë”ø¨g�¨.òâ8l¹ ©ŸÆdK:quŠÆÈñÛ‚ÃÇ ¹KK1m~M RŒ>ã9}Î.vÇ?êÈT¹É?Ù‚dÑêOgž1#ùñ;ªš ›ÖÅA)ÄÔ[/ñTjæŽó[ojt$êìð½µ§úôgBI¬wÅÊ÷Éa.M˜Ã� ŠQ -L0Œ€Œ“ä€R¡š,›b”¹‰S®¦pÞqº !0ž V¾­aA,’lŒ†¿{¸w†=t‚ì3âæNôbòròýäÕ˜?<ö>Ëv^Êv 8qç•üggçÙë¿ì<{õ“Ëø**æ(ƒ4WÀN¼Ä5Ëê…—×N‚%˜øÙŽ :Ç+”c�ð©>ºð‡|q'ÅqÅ9 •Tâ·C¹ÈLÒ"€Æ�1ƒà³?2FÂÎÑ;Fc´yöÌhLv÷æùsñ³þŽc)j ¥#~–wé~]V,âlg4ƒÿŒÆX¯egô†Ê¶X=;qWˆû>7Î@ò@ìs¨ªÛÌ­ÝFu îuà“?X®ÙD-?†v|[Ÿ@€Šðcˆ—ýùt†ÑÓG9²”.âOËnù € iå·Kù­…jØZi”†!k ‡ÚE`³@e- Ub%QÏI0[{çã"ÏŽ º¯Â£�±S«&^¦ü­à%•¦@ªCôÈõx¼¥x€CB[YxìkÅ×1Ÿ ‚$+ ’ô=‹E"äBs4e‹m˜;-óãm(qô�ªVF—¢o?ðšÔÜ~ç1x³ÛwZ¸þJÈ�<ÒÕ�zVs‘�?‡~èXn4%+03�ìå_â-¸–oS,Û1ë™PG  -÷$’§U7aX(3äE¾ 'O‘âþ)º‰9à^öçÄæº=`럞�£W¯¾ówàöSqü ÝJµ-ùú¬C}"y°Æø^­9Ñ‹D­ÑïìÂúkb}˜‘-xKT­M×&çr‘ {V—"J;%,{0þÞFäF7›'YÙ¦in~r>�‘¤â.¥H—Õ€jÄ–0#’+PÝ|„F3 ¹µÝlFÅѯâzŽ =ì³cÏßþëÛ[¿ýWýðö_Xësg<‚½s+h ¾˜AxžšPæ'™ÊúÑeŸßû“ß1‹umÁ@ò[„¿ÃfC*-º˜³¤~ÑÀ´+„Lçôe\,­ÌÉçÈ4~¢ ÚªúP”Éi·ÉìÈ9óƒàæÅL1�•ÜÓ½)œ¨ryiÕ2Þì/Qšã²¼òá³¢ðÃ§Ä H¦!À3#Œ4ⲂN’óâð6/ÊNhY7P ÿJ±¢€�ù0œsɤ®«¾/L !*ù焌�{oƵºíáG;ó"‘ÏLð=r¡±ú”˜5³B¾•Ç[?ÅÈ¡¶9¾þ½IWÚ¹@‚#Vã¢À=Œ�H®;s»¡jZÕª¢ê ®,*þ°?]ûÒä*ŠYÏT*8"‚‹¤È– þ×LÃ;›–“k¿6C8]ëDv“vÌÑUµVRí$¹g¾qßdAp õµo¡{F‰ƒ’}öœjÖ“}<ãšÏ¡áF_ê˜H9ò¤XîfYlª¢yÿÂFqžCKÑ�=u1Œ´Nšt¬r?THºž|_Ø”çl’}™‰�–1^q0¨ŽëV¡$0öÊ„§Ô�FÍCµîÄò=žæ�¾Y ŒýˆE·ü&FH1Á1ޏ2×vÙä fxÖèy‚@sƒ$ æÃk©FÎ 'Âbœ£ñsø1ÉFý>‚Sic>(¨/'×:£[óÕ1+Ǭ"kèëQr�½î½¶Ÿ¯ïJ×v¥Fê÷p¦$¦|ç~hËSŠ¥ †ÜqòºðsY ùðe<Á>@/ÛRdjD² X  %扄T>ªS øÅN{©mP—ps(×›‚س…1cµh÷�€ÁæÉ–-}A&a«&§AS�æeÉ¡1ÛR$ɉ¼ÜžLJÉ\ÄÆ×ËÓÂæ(LÉ +à@I™´8P$ÎkÕ^Ç"`òzÅvbÌ”„íÒ…^(’·Ê~ UgNFÁù,OÖqÎ.#AK?½Ÿ'‘¨5�¾ÒZì0ýu"¯(¯D”`!Ú£S\SŠ yítÊÌ–ü.]ã“ûS§°í€Ósx-©¬YuX¤gqTÅ’¿ßB’{me*õð±œæW(õl“ëRºÕ¦ 8èh§œL1²=þÈÕÕò!¥ëýÊ@ xmqš³EO¦*aÿ©Ó#J^W˜ÚäÒí5y©�/ƒY Ú0‹ËbÍž©vôë]¢›� ofÒ­#¹š#á}¶]íaܱ3sgGÔºÒø_9ßx »UnoM^´Q˜ü¢ªY.ãòaç1‹¯ý±Ôè«ZÄ«´n2®¢˜ÅU r»÷2€h{0Ñ�\á «bGB›™WK DVÓ¼ë(ÎúZóö›Ãm5]øc—ÁºÝ¼0jF#ñ«¤qtÅ›SYˆGJ­¢ñ"—ÓÒÊ:Æ`ì›ïžÊïÉg …Ôñv§œ¿²ˆ³ìˆ¡«’ÛÃÚ9ÚõÚýbÙ©Íuü±.–FŠv1¦y�¯ŠYy€½Ž&F”V9T•’ÖòÕ)#z-£Š‘©ã†.F0©ei�ÖnŒÀÁpW^¹üSÍ!4ji�£ ÓÃåy§§ ñ_u‚= ÚvoìŒ6Ä!ð‡_IB‘ï‰Ï‘Z`(xÓ<¦ùi‡R¯$–×�4Ã=;Ô õ;ß5e� |´õÒ®C€eÊ„ö8�:–€—Jí–ª…µ®v¡¦8!—3E£»LÛͽ12¬^­kK$î\ݪhàʃú ò] ¤. ØòBëi®´dP–C0ÅJ—Á�jä^SHï=—Q•û½)4Äz^áÛ·ÒÌã*]‹XË”30 8ÒÅ»¯FVÌÃYVEƒ…”¦Á|”ò aPÄ�!j•H Ó煮£¡.Îߦùês9Y€€9EEäjѪÁnäE¥éA~BØ×-‘cö!2„Ê©Ii[ Ö(�«*)xW*ëSaIA°®·œ�a° ¹jdÿØ×¥�FSYC7{ÃsDÔ10ŒמK˜s©³í_ïG+àåŸ]b° ¤ §±©-rC¥±œ“)޳V6£=ê+·û9‹ëýîÅÍuÂíµq!:«É$ÕRE¢ÔKùÎS·ˆŠ>Tìàà„¬J+®,Wm élú¢±2kIPV „‰ª•+e͹öÎ J‰ÂA��ïò°s¨Ã᪢”‚M²E™¸TºÏ;¼Q ¹)¤ÃŒ,É™÷FÌ'ß–-¥ E1 ÚBÅòŒ™ "{ëµ+ä‡Ôª=d™¢GäšœðG¼üzrÂ÷á™ÿ·Z²îü¥Ü6�AL³a šõT{5“TE È}µ¶­UÖ\[…a¥:"¬”K… ’¹ #Šž¶ô—ø´é¸�Ls§Õú¨]ð�>ç� �Æ …u5QƒTУ0Ìßbô©y�ÐJÁá‚�.êÈ5„1àb%dÿû!ÙȦ'�Çð{& )**ž¸õ €?òž`ì�!L5 GI/ëð5ôöUlPTò¶Éú¼?`£@H\tPû(QWcòž¦þÕ:ÄBÒœ±ÚfÚ“ê•Ô�(†~ì€ÙµÙé‚JZ#8‰]H*Zæ" Žv°BȲä6ðÄÛ¿ÓYQxð[ñ&tô¶~‚^~Œ¡“—?Œ†ÇáÅyÁqÞå8ÿ°røêù+yªWlšú½!ü¯µðÖ8Iø«&§¾‘ÏH~*ŒÇ®ÄW |ÇJ™°¦V‚2SçªVDŒŠ¸.#�Së�š@m¦Q€ç�–ƒ7|qâû¯Z]_ka“›mÃÿ?c�ù+?#Ý ¨²H:I޳�È‹Û`öFVÏа®�Üré�Ê™.ù€ì(_4] à øÙwâï=Àã¸Ç°—x&LK·>Ko²ºÿÖý–²ß¸ú²Ž Ђ]V³4à4Ãú!Ë”_ P§lÈßV9±öF”¾ú5tR*´-.k�J¨ÒPx*›’ õ÷�—X\� Á&+D¯™¯â@ìÞ–¨à7Ü€º@³c»ÿþî“;¼É K¨À7àù–|½ßzÿà¹LóÛƒ4«Ã‘\3¨¢©À"¶ Ml2Éͺë÷�(]ö¸ØKÁB�/퉋þ„~†ÓžÀ/CµÿB/{GôÿcÑÑ-Žý¢©YuSb¥¾o^€0 ‡ÄxåW œÜ“ÿdW±.¼ ¿ô*úÄWh¤!Ho$+ Gjá•õjxw76é†Bñ°~ ÆÓ£êë¹CNž.àË´àRÅìŸJÞ#O­-h U¥ÄÎ;вÔ1ÿVhãš mP6¬Ôæ‡)ó¦û´jbª´°Ü Ç‘~ÛXòÝ ßB)Z¦kØ7›©Fë[î Šè̓²Xâ×768p<ÎÞi»Ù¼ÏÂM[³¶îûÍ÷½tcd¿~ÿ͔ý¸GÖÄOtÆÌÈfK²ÿ1�8¿+Ö{ærì59l ^ÅÀØIHÿ›W“u íä”üé6½Š\birbdŠV¶u9ùX!à«$GßÝiƹ'²ø!ÈÞõp1¦ì+Çé*�e!ïŒ4W�ä'Ûi¿Ãháu=r Ú´BXÜN¤[ùâÓ¼Þ�³â¶:(ÊŽŒÕÝ"4Æü k�7�BmYGœ.Õ0\ˆº=¹Š| ÅõEšü™N“˜ÙgÎä:J«%Ôò i’üZÃ/9¥çŽ\ÎÕ|Ì1á38Vå¨9Ò�ªTÓ&w&é8Ţ̣þÛ«õ,À¶ÄY%N‹*E+ËP‘ü‰EŠå¢hs ýÍæ"^_?ƒ:$ aœ>­®]çÝ}¬G@m€ì+mwY$I…SUª­ƒJÓyÕ6¸O`‹¾ [äžÐÖß1اÀ€ªï{…é©9Ð�ùíD̃…Õ€Vô9¾Båé@…ZZêö¬å9Yd„z)’“<ó†�©Ýž¨5Ï‹ö#V ò×(Á²H¦6*–5“d––EŠ¸Ù§Ÿ5×É_¡ŸÀ–â¬ñ»!ãŒÝ¼)ëu_±¸–¨¯–¶sY­ëÎ]Ôõ©¦Õ‰ßPt˜QƃɋƩõ ÎòÃÓC0Iª5;ò€ÈKq HËŠ§"¡ÁAŠŒm…�!¡4ðcÞ,¥~ursž.ý$Î8S(aÌÏi÷�AxxŽ ú·ýd±h$ PŽì&滣€"gw0”œU -=÷QÉ &?9>û‰)³‰‰úÚû$åt»9:Æè¬–(›~õ2m¶,] Ìî#x}´åçóPåx)Q>»M©`ìä|àY…_;y{ùñæÅl{OÔi)IQ3³Î)`£.á=O·ñ9óPðå õ¬¦`]ë­Ì³™q o§¸Œ¢²øû¥Þ: Šv7'Zy)œÁ½{çßšs?…º´þ5c·±ª%y $=ËHØ/‰X>D i­moúE(k9DWga Ú3í´iQT×úùŠÀ%»²Ÿ˜úä:^Å®Eì.�;€(H]Ê,ðïʉɕ½OðҘɡ’E‰ƒÐò!œ ÓL]Ç2¡J«i~9‰Þ� s�Pθ‹¡úƒ®ÿ¾²ó5²Â«™]X…7cVd�@~Ùá_¦‡ÑÑà{®öé �ùKÑßå�áÑýM�õ5RÁRþK(¶d-v>PØ´MÎXæ, ÐÑøqïp>}=ÛßÛííϧ»ç‡ï@]�g'ovF;¹8;žÎçûgP†öÊÐÊÿüãþþûál¶3:ÇÏNÚ®ºÌVtuBsÁˆïÓ[NWïþ}(�è†ýÚ´Ô*!æ[DïQ6¦ÊqHC—,àEŠ6ùéÇîv:“Ñ´éN~°’ àRQ)•*øhé(œ B}*’výA‰Àøäò,üC99þß!«‚ƒBÏ‹ŽÄpoX(zW9ùZ# R,–Lìþÿ.Ī3 #��½q°/x¨ 4I§fÁ¿¬ÔãÞáLú�Ê÷'†ŠèX^”,òÓ·§]�'õ¦�{‰5)8ƒó¾ª@½ÓyŠÂiR@¤¿—ã/‚o>Kæô«ÿê|f=ù �h-Τ8›� >:ûÅ‘÷û¤Hcu÷3TüiDé½EBpƒ+*‹#ÕVY‚j0ÖE^¡+ç8ˆ f%ÚdXì=¿eÎ�Œ3`?¤TŠZ¡×$[ÊófY…z1NŽÐV§?y-…QEæ0N�¬îг�­[em.‹4G2•"+âdÜþ¨2¡ üU]( iƒ0’”�”йp|Š®Ý ÏŸI=”ê†à©:Nãž:âô¬’ª¾©=ãmØ”1ä.Hý¦™½×Aõ©(:g k'�ç‰?ãÓõªJYqó›¢<ì¶IŠ"áyPéFÄ{}œÿ»_‰Í[�%²ÝÑtöëôl¿Cn”�žœïŸNg³¿z;=;:¸˜]MOOg‡»ÓóÓcïæXibm,©\24È}–=ÏOve·WûÇo�÷÷Ï�ßøïv”f dI �–‹4ÆÖçoÏö§çWçÿ~ºuqßß»šŸœ‡–a¦ RÆjHK`¨¿_7•HäŽÜJmòº¨¥4íþ�]ïy›^7e›àcÎ)›IšÅ&íÞT¦vWWJº¶úZëgu—VwÞ^ÞÆKqI`7àš¤Nâ,‚æè[s;ªVñ²s4ð@`(ðÓRþ·I ~­¢ä+×Ûá?…8 æ^¨þqÕÍBwõòÚl‡l£–ª£�!ø.Z׳îÚAœ}G‹9,_—ÆÚ™‹m%cse<°©û�¿šæI¸çhn'ª�`¸[ïŠÂŸç¶{W@¥~F í÷i —ŸE«ak¸wúå£^š]'3‚˜6Á1‚/:5Ðu˜NɬRZ•-lG¼ [HЬíšgî72Ôˆ *‰ mÍŽ–Xbµ[bn>E’y/GL Wö3ÀŠQ‚p‚ãÐ|û�¶`¥Ð¦jg– y�3Ç_´÷H=@èú¹ º” ª…×ä¨ h&ùˆª ²¹­•7¥G’ýϦ‘·¦€µ�H]Þ Z²Q�Â`ñ{]¬I™ñ-r¡`;ƒõZw½<Ú„û™e?’žµ;;î’ÿ÷œ® ;©Eñ¿t‡¸ØH³÷eœâXç+Uøhf(�ãT;�­Å™ÏNhòÖh ìH+¡8V}­¸«2V4æÛÀRá.>HÒ pHp¹2EQ�u0̹4lAË Fóiãnœ$E¹ìEƒrÃO’~s–yê8€âCžA C$£€d¦r�à*HZÊ(YÅ on¸y›¡²ñPÙ¨ƒ!öùI‡Õ Egc¹]eͭ߀vŠ¿pðI‡Þî,W üüÙÉWÙÖ3¯m]eh€�ýŸo_ÿüÅÖuN˜i™×ÙºÿyôÝQ�s¦<4dœù\`-¿×7£DÛ‡À6“new¾^ЙxÓò¡ú=;(‹O~HÄ£‡ù?ft&oÝÔºŽº}é�©’\Y@ÔPSaQ¢ÌV~Aø~²ÊWÔ‹ÉÓut[èOkÌ8ýX@)O¯RžÁv3HP7ºwE߈r‘œ¾=Å­ ¨_¼ª$øyön?"³Eù#êî.µÑnLd Ñ„­w�(*¨5Ï=y%qP§µ¬âªßgÁ�5l¥Ñü¾ä Ê *Ë^‹®ˆ4ÚÅw#:÷–ð&táP±õœÔà?ŒŸ†ÈìHÌÜ_Ï•m¿ØœO”6n.n65R‹‹;ð¿�~%©ê�hë‹®´éŒ2th !NÙëNL qkS#ßÛþÇ�ª“™?æÊ.0Âñ`$†ÈFÍH/÷A0g¶åCè®™Œ€G÷Eù0½ 8®ÎÈWÅl¤*j[H �åwT¸Ǹô߇ y�î­+W]¶€/¸vûš’ݰi’ó%Í¢>Ž—BÁªHBÜ}¬Õ5q_’¥à{pÒna:ÿ BØHñ讽´ðóqŽôe*ŽJâ×¶²X|Šž5Uù¬º“ ñ,¾ÇÚ˜•” ¶éŽ™Tw|‹mñÔ&ƒoMº¶÷º—ôÔŽŽ0Éq9¬/Ö±sÊ[ŒïäÐ:,ªyZ:ðî΄“\|8ðN—;v!Vp®ÁçB˜Ù#ñéx[æ·…¯S¼w>Gû�¯‰n…S‚Ž>ëb 6솈Œ#n9ÓòÙXªhû¯Ñ‘Âs5…>�±YË6‹SÀ ަ§‡#+½#ÄXË:È*«>˜ˆnÀ\PZ ÷ê„´Š&ö @¡±9ÇÈmÕm.‚bê!}i%0V º«�-­9[#¶q©<ÙjO¯ò$Âðð§TH¶û[+øÊ»‚N¤&^‰ú–Âc„ ËË‚‚ÅdôÇÚBMáø[n½ŽÅÒ…“Pãµ<�vy «ÆXö… ·…<‚—•Qœd0K¹O~ø¿rô*ô^!mA¥hAÌ’ºÈ¢Vé±R,Ä=‹‡ÁYq<€°ÌæÎë ° HT|QÝÊë�£bv/r•Ý$W*¥¿g!NƒRÎÍŸÝL¸&Ú�€ð‹§6­˜?bLpwßtöÙê ßÐË#[qA ¬{Z¥¬o#Ø Æ�˜ð(ï1î¿Åù|+ƒcM ²þWbˆ>Bi m§2üA•z»WÌ»–âu¯,‰aVìSÚ+Âx¶eéÒô²n¶Ö~zÜ%—üš–°$}L—Í’ù"w`1Ë&“z‹õ”ý~VŽ÷°ÑQ‚‹±kú“£BÊùÄ"$° =üÚ™X„*ÂÏYZh8�°¯·i{�Ï �}õbÒ~S¢„‡¥îÀè‰"à§ýcë¤|VÙW>ºo-$I.‹œlŽŠe]6­Ü�Uwa Œœ©ÒáN¿#ÆÔAÒŠ²ÎüÝÛ2E©\ ‹÷Ý�æP£�Œ!ïq†eÉÁÁðosXÄÌGÕ9qtEP‘Òk½ü›rËPÍ!c• Ÿ8sÏF¥d«k/>ó �’YØ—>+noq @=“4+ª»þ%0ò¢¢À®ùì©hýFܲ„_%º(8ùÔ¤ŽöLT§Õ›4ÿÔ©7(V»! ö7àá¤òÃ4­¥:ÿÊŸævtØ•íÊ�eöÈËÅ7�H~㚘Yq;“‚@6`µ ÿd"bK>_Œjˈdp§Ü•c�ªàb$ŒÐX(÷Õ×Hþ[:ÖbLUàÉ“ù|—°— îLy,¤Á'VÞ4IRø&°Vöá4ê™sŽ™MUt-É(e7ïú±] wÖù¡^‘´^!õT­¥£´OX3–ç°ç²<´ç‘ò¼ß­újªÜ´î¦€›JRƒÈs;‚ ص ¡ÕÍÁÈv” %*–�î¢!è§ Ž3˜£SÚ³oÐPYÐ�_Wá¥Ä˜’:Ô¼*µØ@ê¥Ðåo¸üXp vIÑp…ÍÓ¬©Ø­¬N§¼…¼%ëDA¾Ñ[ÕÜÖ§¢*'*õÀš–q;ÉN¾7¸"82Ñ"AŸ10´ò¼ò’)Ý^ÿçŽæ”ß§ãM(.ód�Œð.ƒ½¬8P0sÆ$ý1DÅJ‹"C8¾h:.ÚÇ%Ào îO^ɽa¿Hàb©ªß¨xþÜ1Q юʼ"0¾”DbJˆ|ñÜK „XÁéQ%Û V…Wì…Ÿ²l´Ð–¡Ã\I¬X¥ kä…—[4½¢Žñ@` ì /ýiþ»ø:%3=<ë¥5Ï{Ú'Ùÿf/é)¢‘âß=Ÿ×d.êxÕJ¬VŒM…>¶`¸fë’o”ÆQz�Øô�¤›C)TA&K×`¿§ÁÅòØž0ï°¾ÿóÓÐ51}w8ïÍËŽÑH]d)KþX¤¹.E†D­†kFãöºp�NB×ËÞþë‹7ÌO®@l4a® ±À¸sQ÷ -³ö²k-Ú€‰ÚGiÑܺ•ëå5Ø€J‘&‰þɯE™œB ì8ú[Q,³xí•�$Á1E�^bÂ:ù?1ªÂcdœö …ÑÚù€{–ˆx¡Â­ò”–‚½N•`lҤءҖ0jÆ 6W“ËÜ úpq,žhŸ“Ž˜2•›qÊã‹jûÔ·¨5¹6âEÉ–ü äM9ÐYQV¿7[äÞÀÆkˆ1ãÖÚÁÂÙ’®×yýý—ì¿]�ãëÿÔÁzTC¾N¡:E¿·4*ÇEk ôê�#ÑŠtewIoÄ+Ýú�ð±uK• ¿ŠÚQÌÝ7ŸO'H”ÆxP”€½=À›ì¬�›öæ†S÷ÜpÖ tÆ”þº(ûR ®[|”„/7º«ëUµóìÙ‡»å¢šˆ�1|=‘›ò¬k-f[vɯ(}Ƹ·d?¥LZqEÖ�ìr¦ph Ä|%zƒ[˜„–9÷æÑ4Än'¥|"j6® à?nÉJyÁ¥lça3 �‹xóup­j+˜ÐäKŠ �ÈÙ`•!·Efw5+±tOKl«¸þ�*j † ¢‰–n@çG”¥\Yx š‚Í{”Nk ä¶lªЏ¹Eâ‡X,8prv u<.5ÊcM¼XùàõÄQ2ń֪Åí£3Öà‚³öÞõ7î"…`/³?â �ˆœÙF7¢sÁÌ\8'Q {f×1óüªa#Åò:Í%ëcqÉ­V‡A4ñ�N�Æ,O¡àRÓèÙëÛNtôzé�qžöÜ)> \�}Ú½ò¦�ér¯�Ü¿¨mŒÓ/^Gk½¬…2 9iH·&ü?íØïðL2ªWÿÉ3=8ÿ¦;)»3¢@4†bF­ŠVR( žx¢Î­vŽU5Qîr¨H1éW©ˆ¦ªe½z ÉëäG…é7Ь?ÀG¥áŽ{²ÍÇøŽE`XòGbH ÌÒ ¿Ã�PEó£ž ˜ÒÁeÎÆ¯áôðâÃŒð#†Å*é°BI4Zæ‚a0”„’úlx˜!£ƒÆz\½ö­—ØUþyëÜ–kòs6W¤™«0Žñ¾+cÉWi•Ù¼‹O᥅Wh%2Iú™hë»(½Cä5m“iì×öž—7�fc ¡øÆ[Ia¸öåÝ͉tƒ%°Ão±-¨L6%âPÙ»ƒï`ýŒ}Ñjè@íÍÇn1‚ZC.¶åóaÇq¶´}çÒ¶I´­am3�e¡¨£7¥x€P›It‘“P¯õÀ“î6¥`îš{’Ë­ ,*�³Àƒ_Ç|Ió*D,ÐÁGÂkÝóZ3H»µ «„ë„Vn‚´²¸ô\F“­§K¯hïi²ž¿Ï‹ù•¼¢?¦¢ºRÈBCy¶À‘¶œª@ðàÚ‘óá6N`"(•Y–.\Þ†Þƒ%-K%•#:ÑASŸGñÇݽãÎH!Kên¿ÖîW.4öâp.²«Õp GçA(›ðMýMJ4sªWr©ÓmlC &mt4éx¨�§mF‘J›“2Ô*‹«»+¹sBl°‡&X <õiB·¶S3HZ` Dëu­�°Åm‘ §ÚBg&•³—D"÷g�i‹§×vGX7TØPlPïw‹q¶É’‚Üì1–“µAËÇ�÷Æœ²Ô(¤VüY’<¹}:zË©‘!Ùå¶ì| ñ@¼\$Ú (Üè¬ðHðŽ£—Ï££Âk9ÑÙô…e–ÉÏÄï  {c¬Ná:ÜN[�{¤öM&™e+T(aƒ“ybg£Y}ô‘ßz ÇVí"dPá¢[¢¯–�Z™Ø*ÛÄEöj=ŠIô®¨Ø/‹[xï�ñÈ€G?“ì½¶dµ¤­A†ÐBÒ�·0 �z/a X# ¿mj�Q¼C'ÝÙÓÐBX>L]ôDç'•‘똺l^¾øùe¤°.øOÌM ÷1`wЗޠd©Ñ |†©«‚.ѰJxí!tàƒÓoRHK‚Co܈ÂÊ«áh:&ý›A‰3(clLrm#):o]‡‡E@J”[s­;2™Ž n ®\‹6£Ö"‚µ Yk’>A²eæUvoçM¼¬{BîkÖ•ÃÕZÝUD¿l@¯£½‚kÛ€ëÌXbçši¿-è$[üƒ’Õq­�¬âôu1hêqÀ2„7Ëát@^�öûòQ•ݧY$]eçöN�^§ áCNÜ&ê—€Û™’GŽü×m¦r+úçדsàÖ–ù„ÆêÖ‹(F‡P„¢Ý$ßÌÒkl !Îu™°5ñŒ©ÎÓÚ_hbÎŒœ‚â`«“|Ϻ|ûÃàÜ}í€ÞáüSOËdH˜Iý­îJ’jˆm—‚%‚vƒò‚:‚T?œDÁ v‚V[a(q)à#:9xLD¸Lc¨+F$ Î�Ö¦ëØ ZxŠq¢'/0$ëûþüçïÿŒ•¢Vx^óm ÀáÞF)áªu«^F^Ôˆ … (T b¤ø„A"™0@rc¸[~Gþ?Ä} Jè,òÛäõO¸öŤ/Wo† ’BNŽŠÀV{ñCO>Þq­7F4‘§ò æˆ<ÅD29vì3¨./À\k×_-€“¶O‹rp¬¾€ÚD8ZÊKä`iA�x hÝu|ÝoΛÊÕz¨Ú‹ÀÍÝuå$Ú²uòKFÁÑJŠ.òÛ—ò³ƒîÑn¥˜éVLCŠψ0wšçƵ<¤ºÎU:2Ìu1ïkôFh|€Ä³»"¤‡¾\.,ïM\Z29>á-�ú¶Ä™OÊ-‘ë(,+’Y!L½F£&.VMîÀ{VzP@ÄÎÑ”£ò‚µF„Uus q7ìU;¤�ÛT7¶U®sqí‘zÆV…‡€;bÀr¸ÛrP¯ä"Úœ•äkÛ7õ*隇Â^jË}œ¦£OÜ=ÙÈá[¯ÜÁòÉï 8—d(¼|.D†×¿2›pÒ›®è.¨>R ¤,À7ÎajÝE ò`Ê’äâU/Ö”®‰½…9§(Šëu�b”%ËØœ-+�&ÞIE¡Õ×<Å��~Uå.ýeƒnFb�‰¢ßœ:2Ìóè÷7ÚV#ƒ²w÷[)ßÛ˃-bÿÖD¹£·ª ‰Ô)õ¢ ˆïA–¯0@“¨sâXò©WZ@AÜTxðë2ú­ÿ# DF;-e×͵ƒä =9L•HªýaÎé ²7ß§%WÓ‹)ˆÖJ±Úq�rnæwe]µ*ÈÁW¢juf,^CèËé_U©]"LV™~g"΀MÏÛ¤âO/T´Xz³�–ÞAýÅWS Já�|¶J…*цø˜ÈkÔîCêGßc C°×£­8ÔX¥Ïˆ^Y:Hµç@aÁá¼�ì<²Á¯3y©”ìR+ø„%’K•(¼€ €ÕÝʱ¼ ~Q10¤.«€Ïú]ÒŠ7ÎÅuˆnA\þ ‡È/‚ "WZ‚þ(8H¢œøá¼]u?:³íóG¥¤¤�Õß7ßçשACu¦iå¾hš6n'v¸1¾OU°'G°g¬R9аrê¾ww.#`#¨E@ê’Ĉ‘ —¸¤õx\¬šÁ ‰›¢Ô¨ò£kÝ)|N¢wÊ.áRÞÉ2î‰^i¢ÝÓ X-ìÇÖd™ü(St^•ìt¸¢ÓÆ £TõÛ»�]^åŽ�G¸øò•=|vòÏYRèøÛ.é!TÞÀŠ^ƒFL�MýE¼�ЉÛífŸóuë°›m[…õ—;Ña‘š�TBwg¿_†+€7¤?‘•œùrïã.o>¿…7È6p%±×@ô�F DI*à&¯½$t$•uÌ ¿…èo1¤û€T/L÷[q YžILpSƒ G’ÕS8ŠÔà ×�‡º xÁ¥ø‚§@À½ªÜÊ­YϾ!ôµ§¹v�AoÇÐ×Q�PA¹Ó¾—ÂÜE.¹c\×ezÝ„eJëw€ Wí�Û…zuù8ª8ÈÒP n8!4÷TïèŠyµR± µ2ÄW[•o$ì’µ ôùžý@»¤Ã÷Å'0d¶á· ¬¯Ð¾~•Ù¤,û³;7‚_m5ÿóš xFCïó nòºøÄ¥Ö{¯ßT­›�b½,ÖÒQÅ”FpïuÄ`©g8$Ŭ+Y•lB*™2ú·Ärþú×Ã¥æ ²᪺0²= £”ª$`á%Y¡óvÛk‘4±9“h?SUö´•HhM9°ø&1�þ61ð ƒ"6>Ï8±)rÝÓ¢‡ƒ™×Ã^RuŽEAàmÃ,3�§GÕ½ ìDîRGé7æì+u†eéÙè‰kRnïJõÔ`BnI5..Sâ}`çlS÷0�œ«V5<Í·öåcòZZ¦J‘²PAaßÍÁQ"àëI4¬[)2v\:Hí¹“M&˜z®'·ŒZEïä¼h–�BŸC»„"Yms{2ǧw®7¡ËSü¥—PphÅè¶&rõ¤Üœ:Q6+ªb¥ Á&v:ß\蛬³�u:ˆäØ1^ù=£çÈusƒtck‹Ñ² ì âŽp¶¸?ò&%äê¦hò¤KSd#ŠcušÃg.‡Ñlý¿æã<°–žªÕ¯+Šà_7C�z¢Ñj¾jÎNàÒÅÙ ©@ãà(h›y§&(�»}¥‡ÌõŒŸÉÁ¹rç+¾|z˜X†Þ¢cËõ›*çÓç8êk@š»®({ç;®vd|3òßa}%yb¡côÑM·_ðìÒ³•\¡“ ¦î1;cØdÃ0Q¸%�8ÓK+[ëRëNȤ†îxqõauµ@PïH*2àý£9Kõõ›ÊÀ¾æ¡EHBvZ ”—òX"YSò¥³+®«‚k�~%©êZYM× ‰r­·RU.I`Wò>¸Ò¶Ú®;Dy>ó:eæ„›FZ¥×~Å\b86¡4ö[ì7pÁ9§j£‡}*ƒ?^šª.–pŠê]ç$ÑÝÒÞ­’»à W9Ÿk#A”.—$jÆ\\Ö.‰‡Žme0``—'”Ùøt¬q5ù8õÖ‘­ GLŸ±™ ÛåznDï$wÚ¾<¾0xÒÓ1…Ìÿ|‘ÍÂ*:'l"TBÇ�ô¼ŽËî;£k¾RDÿv«zTÌ{mÒj—)Ýß„{ðÆíõßs_Pķܨoê|…͉-ärµ�(ŒEɺÌa”PÎyΰˆ·óm™IWö bû�0ïø¡&º ‡pçùOâŽ(i¦HàǤm7/~�iÀ£z!|Ë`Ï¿ŸYLõxÖ¶ú?€a ÕÁ~-ÝeU|¨©P˜%¹SŠ[0²væ àB¾X³€ŸËnޏÑk,q2cu¬ óÜŽÈ»þºX­D2'¨€�ÇÛ&M¼-ñ�< z"%,Ü7é=ºžü¹mE3ÒÕF}¿/¨r¤íƒ�\ŒßUû6O ¿êpYENу/î–¡š-§èß …ß Ðê+Lèwah· ¼ìiªÌd^,¤ƒ<1»³ãI4�•Mcz±{q �Sh¦È¹4ON¥¬qè½>cÝo×™§¢'äÏùª³ç5x’UL~j7§\Ãò•Šà/K¡�¡×êy¶7™Aa&el¢£…†‹ï_‘=3‰®%qûcÌÅJ{ú~‡s`(ã+ë¨ î{Èq{ßw"«»^À`��cë «a‡'ú鼃Fõ LèŸxC¯‹K€ƒÑ9?/…%ÃgȤ- ´ˆ�£ �3på̰јlGÅu-ò”<û©¤pUmç(ªŽþVÜ4÷FQ¼+ÒEª’öOÕ„šëîzìTÏQNã0°l¤¥ÝP~ï†Üc“¿.:,ô ˆ|rÿvêÖ=†cdMÄ´¨†sñ>çµ?¨û|FÈQð �†âÕ‘Šc„É5¡ËU£a\×N>6Œò. ¥$k¼O…7àR Ðn⿜�P`Cro¬Ëí¥@uZõ¹h2VçìÕçX;}ú1yHe©'/•ÕH•ˆËÅÝko8å�|ÚK iàönL-§Ýr’5Eãê-´\­½|% ³šß¡îP�xÒi¶õdë®�„æÑ‹»‘ï)ùµüñ•ÿÇWøãËÀ¯/éçW‰¿-\†£ý?þˆ€Z<‘¯žÃ”®ä;pëE×”¢Ä<]ÑãU÷,C-B�ÖJi—aíQË.Ox0ö��9Šêhð�¶Q§Ú>kÌ'‚möEÊm˜ttyT #yD¹}¥ëã3#[Ÿ×ËŸ³I‚‹ÛÕu¶‹ÜÀýd[jA}ùƒÝ¨ç´ÚÝ$úùù®æîP½.üIAp–=r¾ Ì�þäÁ¤Éw#(Üðããƒ_‘˜îÎäÅWä™÷4lÜ­z´!c¯$zÙ bqÔ¢$Üïi–,âÒ»åáž°Š’6NšûoÅ{Ü‚ÎûØõ…äaîfƒ­ ™¼~鹞±›@1LâCýñ*®ï¼‡eƒº*õÊä€ÓݱAP`�U ¨�êâ/r'9‰bÇ* ÀR6:ñ1Øú\£Ÿq»*nnäu,e@«Ø…œÊßJú÷&μSED€ÇãÄ‹Rܤý67)݃>JwwÕܬ[wÕ£h­ °$ø-¥|ƒ„h¤j)Rƒ|¿‡«®îéE‰v‘õ2jŠyÙCÚé·_jüÙ’ jÜÞAññ*$ŠR@ž“è™T˜AbN’#ê¤ûRá-�ÓiYÜ‹ŽF%¦º[Ëe@97B*?·D-3µ…߉‚é[œ!1…˜â€¶­!Êß$Rˆ™–¤�¼ ä*”ËÒo,­†Jgh»ˆ”ù%c›µB¥í@©x °ÐÌÑäñ½¼µQ—ê~5¹ÇLP­s0gZ c¬)Cê8× ¨å¹™´3ä–€q@î·ÿBŸYâ½ƒæ ”€¯€QC+Œ“ؤHw‚I°#ÜÚM»24ª›=IGí„ÓèSueÃ_Ú pÎø;Z#^×1.Ô©Â1’Ö-‰ ÃÇu.ÆpwˆÝ²óýÁ `tú�~;¸bHvÑ"¸ô /Š‚_ƒ¯Ñ0è®ð †ƒ­E@‰òŽcÿ@¥ËsU¿�s�·08G¡öS PÑmr—»ƒÍô% kkŸªÒ ÇQ›øÔU�æ!íeÂZtþÑ™R^ôÐ0Å„=Ÿàÿ0¾èåóç/v’ëŸvvž}ÿˆsQ¬ÄÛÔo¤É}ÂZõEJZoK‰WÁzTsV÷ªÆà!”ÑÑ þÓnÒÎ òÔ�¯ØÁÃJ©øóÓüËxý/ãõ¿Œ×ÿUŒ×Ú¼±A—.DÎ7²ŽS°öäap¢kƒÛ"òaE@Gî'£ìckÿ²¯¯Û×»ö¾ÚRp®è«eû¡?IDz²›+™ðеX.¯èûWð¥üïlxŸ˜ž/JþÔ·0à7«Û2†Ð�•(�B‚ϯîé{©ôCEOyj‚"ùIHÌéâ½.x‡Ue¶±¬ÌµÈÅ –2âtªÝ•;Z@Ú9z›åFÁ€’2D«¢ƒÕÕu¬ ³4tÁmNxè.@0oɳ�b@³qÒGf Ò¼,äòRr–h'©øä˜‚òü P8E3�­Ic%èË܆l¾Ñy“°×<»191>ÑAᜢé»ïF](¹ëüTÞ|êÉüϠN§ 2ƒh©!ãôìY[ZáÌãûžNÌQ:hläuðçdYŠÙQ­�€†M¯QÝ �¡Ö|�˜MüfÑã¤×¹ Û†Žïƒ”ÿS@^ûð:Èn§‹»ØÉóö°üþ‡çôs˜ËC7çÊs(îè×mÒÚWn€Ÿ¶…< (g÷ï)­”Hô±Ž¾‹V~ÿÈTjuN;wPŸô^�Ô×= =µÆ‡ÀUÈ‹…ª'…°ÂG˜æÉ¼¸©C@’e.²]<o'3ÉéÛÓ1j�ÐÁ Rïþ Wá©ñ† ˯¡3]Òa,-Nƒ±ÊâªErŒóp†àÔäϘ9�‹^¾zöãˆ2·Ï傸]@¾\é&Ú²«\Ûhs­ RÁyKfÒ÷àzö5æ_¾.ü~Œ×Öû—q#%s.—Çe)X‹‹íÎO§GxãñÚY­´=T1ôËÜ.Él0»pß*•ú…숆URÕ{­bÐyA–º›&ËL§^ñÉ®¨)ÕDÙËà< #È�ûÏk´s™ž-ê°º·¾�ˆ“£ÂböåBP­€^ZL8ô�Ç>)^+hÇ|ë0h9Ò$åÒ銜¥½#œ/¤wŠ!PÆïñè.B±�7¹hó H4±³i ñÊ©kM&gßèüí …‚å?½*Dhx$ö¥Ãù/c‡n @ñµ(¼ XA„KEâûùÞ(Ū¡À‚nÔÞÐx*LvV¢ôϪ³ÖùÑÙbȤLp¬I¡¼bæf£Ê2íàv�ð7EA¦zï‚×Ï 0Êp“JL!‡~«!‰×'‚Æ­ë;˜g`úзvÔ)ͶX/†.GßOÄ$�—blÃH] # ‹7'\CÀ¦gëZQI‰�Ñè�§ß�ÚõÇ(ï{kø##¾û¶[ Té…ª¤° *H˜¼NoåØ�×Eâ»”#Pš¼–ƒ3…Ø–A¡fGZµªÍ•a¢¢Ê^ (ƒñ€%P`êºF»òúÐy)šD±ï²¸F&»„³!)*Ç”s¼úî áOU`öW]˜D3'iUºý|¾VZ/,+Kq²Náÿ õ.…J$Z·ÙyäêW‰H®êâ Ã^Â\ÌKæÿ¢fåH—0¼JPîǺ¶¹õ0ÀýTs­*EÝjGÖò€�Ä–žm› EÍcÅ8««ŠA1:‡ÀAÜ<ú$l:šÛ¯CÅÜ-©ÈM¯¿³cÍ�nDpÍoâ4£íë¨3‰ÑwP ¾±‹^Z�ÃnRÓ–K›’@èiÝ7#»§,¶;6Á�=sö6ì$WÓsw�J»÷%#·:Å*­žJ*øCKAÈø–‚Ëæ¨Kc½ìOøÇ~Oßd”bÓ÷†V÷j+Ts�FäAKå-ô úN:;WE~#l§ëPó{ø(šñn2Ú-m5£kõº"?8K¼ÑŸi»!tvY”.éÙÕSý°mJôÐ_{;³w �®4!ŽÚåšlŒ–ù¢«åCJ·öÕªS 9Ô7pôd*e5d¢OÍh“¾ãrf6¼…é:-nÏ݇Äî=t(6#W—@‰v�ååUÜW€ ÇÑ¢ ŽKR’À#ä¨Ö5jú…·!b)1ïE¸EUÆ´Ú¥#­qãeØ…à‹ý7Ë^ŒcF9$4N+ÂP=z†�Ò5|)>äÒ QDµWÞÄqí‡N:¤tÊ<Ùñº1 $ b±¡2ACf)­�ÀaB∹x ÚßY5Fä4–ã‘#˜Gzˆ LK…£åš¼žÒÉf¡?øèðõõ¤rÇ~+ý®J¤‚†¿@å_m2 UņÀÈÓø–Åß ˆgp_HRÖÖVFž±*ÂtôõÖm»Tub:duÓÄB=–b:N"‰«»ë"в®�l3 á™Gê2ñXgkˇ+Íôã Ä+F<ºZIŒU¦1æ) ˜¯â”É×ñôÖ‘‡½KuÈ­È'îKû³ †.�×qï‚YcÙ©ÝÊsP”KŠ9|œ.Paì Ë!(1¹¦»ð°·­ÇåZ…žöœa4ÎiÈôju(‘OB­¤á1lut˜gpÑAEÅ…êIµu…ceTLä�ÞŠ*Š Úbeëw¿¿ù5m¸Ã‘/Àâì½V%ÊU¦¬ïœMöp]\ïØÒÓ®}ìÜ»Óî ;³6©�×¹w¢*Gîãj5¯áÞ|,› +ONÌ5Ž4ô ·{”'±cìKÌ¢(j¿€8Žv—Éw»ãh?çí^T7yìGYãøŸÏ�*�-ÿìF>‘ÑÕ1þ® xö ØHµ3¢tùÑ€ÂV®i¯ €-êì{f[8;^cž³l‰—nd±”(©@^b¡Å9¦ÕÝù%ÉC²’‚µcåáõ-àßXq�:ŠÞÞ* ”žlÏ9A2žŸÏÍð#¾ ³(›…ë·(Ç>7Âàoq±Ê `e *Ó?j€<ûäTMø,ÅÂÛ #+¶1qm‘R„>°ü=k)È:ÖaW¢ãØÿL+Ô/vt”Ræˆú ¿É g».¶ñ²ñbÂtß6Nûm„,߯pÐ ú:>9<Û�¦p~1ó Ò],ש¤#ì×~\r¼aT‘³“‹Ùôø|¿ÕÍW šƒª�¯× Þ¢ïW·‡/ók9ÿÝ·›,5½ Z{_sÒ¤ã(îy‡&[@ûœåwx'?» ŽŽ! ÂfO|²²ÎʈžÝŽIô¨Âý¯š,ûº� ƒùVV'Tö1Ü…ïÅ`Éè8gØN~NKQ:öT}Ôì~$}ج›Û£eÜnÂôìÇ"Iî)õÅàB,H|Û¬Q…7¯ðãV[¥+šg�‚Ý–\è«âø”Û]¡`?¤+�ë@õõu}P0ôv|îÂÉ=vms|êÀÆvÌ|}nz°Ý·v1îZ7ðõ²ñ@µOtø�?ˆëŠ€R¾ÄFV]ïeÓ!ëÞú‡òÉ�Ûðý#JUï$ ‹(ôÓýãN Üébð’A»ùCÛ`ÿù-¶ß»ñíæÃ¹ÁŽ�nAå݆ !¸´ä%ÔѽJÐÅÀ@¥Õ¤ÿ�G K‚ð@f£Žn¼WyËí6ÊŇmUÌy{©Ã*ü‚Z†FÁìbN8va¶—]b­}Ãó]GíÁWÁ¶.Ð5|Âm§b€`ÔœZ:«™FRJ^Kí1Îy{å]7WA>ÑzÿH-Î0ƒñ’wÕ#Ð ¹õÙ•Âò ú|ºúBO öæuô¸Ý™ÝÐ¥ÝZ;ý5¤7�GFÒ-Šb]SSæŒZ ¿®ç ¸F²ƒÇ­f�†(ÕTÔ­dÞ6|ÑE䦩–i© ¾ZêÀPðwB€eHÙyôFkºÏ¬XtmIŸ3ì@vÙ©¢šeEý¿dÜü5z°žJjáôxô^Rû–ΣC K‡ªc™Ápe³SÑìy•uÐk›áåâÞ†/˜<¥¢ £¡í‘||dRC˜ú˜¡hZè £›83^Q¥Ý‰UÜí:¤7HÓÒzq‡üoRò¡¨{°ïÜ%ƒ 3 êJö²’Gñý6gnC™8ÿ”�æ°vÛ+HC Ï„1pøpAÒ‚'"ï)QÖ}íÏÀU›bx¯d*ˆ”ëÔ9ý±JÓÄËmÈÉÛL?#Œ¯á �Hne¾ê¹ÓÞ²wÎßP÷=¤sA„%$Àç~’ýe¨ÍÀî¿CuSÁé+P.íÎ;l ›t­ Úþ2ìjˆÒ'y9~>.Ç�Ïw0‘•«³a¨D0Ç‘íu˜D”3¯ãÀĉƒg­H½Éh Ë€NAxz±Ö¥¯?¶Cêqô]£'8ÂÿŒÀh�ëÑzx7¬7�Óýé@Âöo��9ˆ…+*§¸þþ²Áyèm~8¼ö+ɧΠILEb[Z°v(î/—ùÌ"F^]@m#(®3:cNÏØ.™ÚQªsŠ=Ò*Ÿ….)nW à½`ÊD‰%å­³áà~ËKG‘ù I0�jKòòœD︤6d¿/ã�)D–—9v]b‘ÈÆiŃÀ:R™©Šj_ñOjãZ­±ß˜¢Ú‡\“΂µoËõ4ÔDØË¼MyI7¾Á.°àXZ±ü’ßr Fú££iLHXe‘Ö•x…&9ºëÏq”7KÒ»*–k7ûŽIs. â #¯%•ö®"z»2Q8§0X†ý“_ȉš Dÿr�|­ëd£Aÿæ7Ñò``š@ç8ÛÄy¢ãž–ƒ‘ä“vj¯cEw¦5ÄžUìý˯Ú€¯N[z'´:&¿BÃ|™gÇé̉~·‡7Üãsæ±³àÙììñõðæìp¾ÖCøüøº`zïwñXˆF[h «Ç�Câø«AÞž¹-ø`ôd¦³‚;~̼�LJ6óú #Ò/nÞíë±p7e$"" uûtöóÍ<@î[ÖÒ‹7wõtøÍü@î{¾Âèh¸Ã"@Ó0 óñ:øVîžiמoäñ öô­œ>Sß.oäïYë᛹z¦_íåñË7_ãàyc…Ž™ b¥0U_äìñÝI_ìç™Ù"ä#Ø†Ò ´””7Òtí"Gö3:|R,—1[­!…‘Ý…Fð–]Ð4)^J“ü¥Û›Ô7aò/f“+´€/¾ÜÑ4ÿ>&kD�rVc@øWúšÎ¾©›É×ÛÚ‚ ð;™~Âf%×þɪ¨±V’J†3éÍâ©É*¡hJJŒ—o‡&1ç{;9?ÝÖ •àê[Zõç^^˸,­ëV©÷>OÖÔubEíÆý­iÈ—¥l=½Þ¬ÝoëÈêïn˜k/è‘Ñ*Á`[AO_õØ¡Jþ7{[XI ¿ÂRU+ù½½ ò¯R‡Ci€ ÏáÝ® ÏÀh´Ìx�É|ù3�ŠPÛÀ´áÍ×i ±1± …_ë5ã›^¬$—ž·k8Š~™cŒq÷z3Ç™o¸ßÆ6æZØÀ‘àï1è<ÀŒ,^¨!c4”ê3Õ©>U lofõ>znÜ Þþ]*>@X|uW|ÈÒÒŸ gG©T©˜ ÍÚUúI|7ú{›Êw`gÅzÝ4†œGÌœc¢ºXUòöÞyÓ±‚|”Œgyõ¢ÃöÉFXcëw݆aT+†Ä#¿KJp¿´rÍ T侀ĹР‘q^kœƒQ@?6,‡Þä^©>¿÷õùnD¶�Ï(Gø*LÁ×èž_ù•ü£2K )AíU¹Æˆ ¤Aÿ¨ƒ?§Ë:¡Ö-È%¹šñ‚pÇä·€”FÒöÏ÷EÖ°©7˘ýÚs7(’X–ª¾´l@ëÂô‚éÝE^,Sƒc ]Ê›¨¼å4hlüÜ»| Êv$µP¾n³âšpîÂTsŠ4¡voÉþÈSD…«: ÄK[ÃM꤀ÎZ";Ñ�Oj ÓÁ‘”Õ¡æ%¶28RU4ß?Q 𪴤QÐØÎòê’”êêQ͸p6ªÐor =úŸüºC~S” n“‡}�¡uøy£�GZ¾P…¤;Ù!è!d(G,Éã@™);�ïŸEGÓÃãóýãéñ9\�¼ì©ž»çû³‘JÉÀKÃp«p@„,eËÃ@–â[�ôm€…ˆ9¹£!>ÕIåïrÊ0h˜Îë–G$5‰Ô6\’bœdOæL° þÙ.A'ê”á 'S(ìÁ\9ûàK'ÎÄéh?Ü�ÓC™Vï;Yç»"[gO^˜ÖµHsef ±'ïÎóK [êffðŒ%˜ZÌÇ˵NåÙlÊk-‚š2ta†uÚÍ_ü\ x€Ž;`®²¦Ï‡ùµwXH'z—™r²·Q'¿1•#å�<†w˜ )oé3ú3`­mŒBe]é£!Œtݪ…”–ù®’�U•¤€yÙ¶œ‰ªÉꃾÐôb÷â8:‰`~1;ŸžGçg'ïàï‘i~˜£‰!(L1ÊV”�g£h¨È�ŽuPî/僒#Zºò¦Y¶ ÖÏëÂ[túã¨-WÅS+7 @øÓÄÆagN±œîNô¥<Œÿ@JQekÏVXæÃ?æôPa Ø‡4¹„C¬ô#òzα8ÔÎã°¤dãí¨Šø€t“®6ë=šÁ^áW¨½5ÂÇhŽT>©:À)Ž9ºe¯¤ž{å«R<@£0XÞÏ,xÀý]‘6„­x ¶ä‘ªIW-Já‡n˜ãïsü•Ýë‡+.Ù^S¹K-K·J×c¯ÚUàMWL|ïìUS® ØTøÙ“ëß”9A äÛ.ßêQ5Ã8�h{7Càx¢b *ÔEÅÖC²c4;÷>²ÜöxÏÙ……:Š’RœY‘Ø;>zñ|éµ°¼xNp¤,^GK©ÖjòÂo?Ú3�GPí9/_ù~ùÊíþNA Œ¾î÷}ÿ\á£VXÛ…ö�þûðè ŽçGÿp~\M-¥S?PO�p|Æ]“Êg°FHàù·˜‚Ûú°êÚÑó‡ÕÀÓ«K¦Ú̼è¢qñtý†®©›¡êkJ†߀븋Cìb•Z*•�…³© ªÔIæé§ œ¤™a€� ³ƒR.Dšhš|/q¿ãÄ‹ UGE6’ Ø®ŽE”â%±ËÎo¾²#ˆ[~0¨ò¦j»ÉúN¬ª#ð£ý7–ChG=6çmn9²/|Ù¡¿–›yHP¶˜u¢•¥¯v›"<6*$1ƒì`.è©iyÛpq,zå,T4Í™G-«<œª‘"ìG«ÐØMôƲÔE~L™\óªó®êkn5š„ÐQ©°käZý[¥t±öÅuö7q€ › †“C'~êjÔz!Š$Û P½K¨RRûQÄ÷É€£,‰‚ék<…« Î4´–°È)'ޥʃÉMV/Æ€CoG „Ë ‚Bêû:òI Kó„’‚ì‚AÜ1Ñ݈ìíÒ–·U†›Ô­ ãj&° °£CÇ•üœc…Õ{Ät�+½‡B�gVŠc4ÊFK— „h4“±çeüqŽþ£­Zný¢ÄžM4 ¸gkv¤«_Óún÷pïÌ+]¨ó©Æ£ 6ÖÀÎŸÜøÑÇÜi�<ÀßM¿Ÿ™Ï ‘]8 —Ër�'‡¢nÁ•'ÊCÿÁàÐøDG³DÜC¨ÿ¤¢¾¥ÊlÀ‹NãÒ�' �Xc¦vûyßÒ‹‚ÍO=_k=‡h…!í[ ½J¨Cÿë/вÔ?ýXóWLÒh–ü;âd í†Â®2‘ߨœ\â"¿m°F¡g@ ޛ̰[¨°°Õü¯<Ÿ4×m¾` €‡C¤WÈrZ»}¶Ý‚¢„2 ëÝ}„™¡¡�‰Ú‡»¸?*€åIÓË�Ñ\þ—Ìhx x2›sõ%AW‚ú–ƒ¯¸Ò([xZy3Ês唢Yu«œ'0GJ=¡þ0OÐ�1Ú'έơøÞh¹šù~µUütë÷B΀»ù˜é‡BŠe’‡"½wU} 0,ÃÀš/³æV’Þèÿk¾„EÄS4_Ié¡XV®ÀO¦kðQ_É£;:ÜS%Э~¯TowPÍ5]B• ÈVÚK‰,Y‡òÕÛC ÒÖõ÷$4smY³Fô”Õ­ù¦S†~Fà«:Ø«ÿ^Ð>X<×ÔèCà,LÉt JN …��¸—'Ž*ûÊõ[t%Ø�ÇEus••B÷£,·]›h¯˜wVëc! ¹†»óƒÈ®Ú8BÄU%WñJžÂ•X@ Ô+ ˆJÈó´Šå9¿ºé5¬Sl&%еëšè’{´¤v„äz‚>7ÅΣû—XÈr/¯nêÕ@hw{¥·®œx+¿ê;ÓMí“+CÎl«FÐÁ9ñ½»ÕUº„(ƒúኂŽýû¾ÅOụT"•Ä;<}{Š‹aA2bq¢r!&‘~þ ì½;ŒMù¥:¸‡“!õȯ3*PçWwRi.ñ“ȼîˆc,v…õÉp|°»RÒ:™G?LÖ{É‹«J²¯¯‰_”5"óWb‰« Uµê²Y°7¡‰vO/¢ù|¾ÿý$š§T Š¡6?EÿØ?ºxö÷wGãHò³¦T‘à³Çù–~”j»h%° :ôÐu«:kCªÙ=Y:ÐaV€ú�1XBO0Å’¾WyPdW«8÷{»f˜ƒ°pH­@÷\CפŠ41šôWð@DÓU‹¥þÃÊ­²ª½ÁþPבzÕ:·Pƒft5”ó“§ -®7¿÷2:”N ñ¿7[ .Cʤ[a÷àÑá‰z�ÜkÉ~üGŒÑûýA2Zº«µQàxo/­äR¬måEI…ebևŠ-ö´-o{«V „¨ý•À¾jœh‚@<è= 'ÄtMÚ >‹0[M(KÄŒjŒ©)ÛÆŽ¢7µ×8…§­gÖwySä°Hý9]*:÷I^ÖÙÕ%3�–ÔtÃ*ÊYóù ar¢ dz ߤü©Àüü¢´ÊkàŠ‡{#ª:ç{öÂhÐþúäAêébÝö^¥~·…ÇÍÀÎ]™èÖ½TÒU ª‹�$–bÙ){�QßËõ,Q^?Oáš PaÙÊ–qEðÜhŒÄQtDõ„'CC:>ŪæR!†uÝy,nn|]µnR5wS¿ßÄ`Õèÿì­P­Kd~²B[±”î¶*¸÷É1믢 Ò7Øô­ nŠÍDuµŠv�æÑŸ¢“k)j€8Œ‡Bv�®¦­»&EýL¶Dž¨Î;."üsˆÇ#Æ—Ÿ«Â‡€˜(œ<Ø-Ž@¬i»¥òÕË÷lñ¨ 7ž��Hg“VôlCæx6˜xjð£Ém¨+MeŠ¥­U7®È#Þá Çè"å8G •PtΘ¼:¹= EÎRú¼B¡Q2ØPÿ¸nQ-ØÎ¾¦¸«�s’¹ÝÚŒòІ@Ý…çGï§Õ:éGðYêJâã jà”Ä�_0È^´ûÒiÐsv™öeË®…þøæþ¾öÏ+¬_rÄ¥yª`­‚ÇJµqJ²«Ó‰¥°º_ &ɸ³¼+$¥a9Óž›¥âÓÒIóœD±5 KÙøæ¥Jˆ@%˜áef�u²ŸQW…“¶1¨îÌãÅKù?ë¹q>®Ÿ>Љ$5( ñ»‡8rH˜ý›ú!²M²âü�Q�f¾Ñ_þ¤WÜàw*ÏZrñ \Ûô÷Žøã�{© Ô�NÆå_ÉxSޤ "Þc!‰Q’.1Öä*kò$½ZÆ%ü[” )¬¤W¿‰FþûíòC%;HÒѤ’ëU?]�žêžæwhДÝM « ô4�Ž&ÐÉú˜@û‰·õØå ²F¶“­dÙB>ï<-i¢¾“cþ-Îï%­\Ýà.á£|[uËÏ™ü(ÇÝHóš뫸�Šÿµ¤uÙÄU±¨ øo.·¿À;{�Ÿ=oä¹Ák'ê¥ýʉûÆ‰ó¾ ¼k/šðKÖý3;/Æ".éó«1"Z�|7;ß½}»³\ŽÆ³ó9Þ©*ùçÎhoïÙÑѳ—ÿÈ?áïèHþ©/Üo"Õ þ�È¢õ_�¸3Ô›À�½óxÓHÒ“DƒrÂG·¼VGê_Èý�G'ÃBÙ¤_C±ñrg‚EÄÈ?åßÿ=Ñ2ã;ú™xÆwwø+GÃŒøã]äç¢à—ñþ²,À¶|tD]âøCœËOø5·’˜ýe #ñÝ“ùË_Ä/RÙíŒFOÿøãßø§zÂ'hBñ�Oʱ<ùÙøOÏå)úãIýäÕÏ?¼úóSÙâÿ}úoÿ׳gÿ Œ¥åBI#U´‹³Ù_ªrq•¾ø)¿º)é¿õÇzòêùóŸ®¯ãø‡kqóJ<ÿ~ò[5YÆ«ÿPKÒV1]Y4}cš±6 `imunify-security/assets/ui-app/assets/static/other-root/src_i18n_ja_i18n_txt.c93ae4a618ec15b4.jsUT ëÆ«jëÆ«jux è‡í½{wÛH’'úÿý\îÙéò”ló�ToÏ\Y¶Ëê²lµeWÝž®>Z<Æ$ÀæÃ¶Föw¿ÈŒLd$�‘(ÚU=[=s\¶Dæ#222ž¿ønÃÉßúY¸ ¢÷ÞäÙ*ßÞ°õÃužoûÿ“ûן?ÿíï­v››ïþö·þf]¥ÃYvõŸüwû©øÌÑÝhê�gÇßeGÛ£õƒ?ýÛÝú;âÏ&þø!X÷ØŸ’]mÓ<ãxp·fÛÝ:ë‹Yú_ŽvƯ�ÖGìh÷à.M¾»ûòè&ؼþ˜]¬ó[ooEÁbñ;Ê<€1zìoÙßÿ¸ý—ù.{ø§-Ì–þi]Œ³{ðGù‘´—Ÿûwö·ôïÇ쑘ôËQZ™SÌ÷?ÖjØì�Å?ÓÍ«àÕwÅ\Û›uþ±—±�½gëu¾þ®dØö‚ÕjqÛË“döÇýï×ß÷{Û¼¬¯wK–m{ÿ§ÿýöûþÿé}L·7½,ÏfÅÏ×i±…Þ‡`±c½þ÷¾|ýêÑf»N³ë4¹-¦ú¾ÿ¨_.<{X,4·ÒŽ Ì¶ Ì¿o ’oåFÿ˜=bŸVùz»ùÓ] †Ùßqü6?»Îò5{™n¶Çz†òl~ÙM‡£á/»Ù|îÿ²XÀÿ çüÏhÆÿôÃâ·Iÿ²óFÁ 8ÆhÁ‚l·²ŒÖÛ}—=Šò]¶=‡{78î÷�†ÇÅ$óÙÀ+¦òãCÎGý#±l믾Ôá ½ $ŽÅÏGbqâïñ´XPÌlËì»óÂYñUoè—{ñF“bȹïOН^¯ƒlû|·XœDÛlìcÓxb)aOÏ« CE.?Ía¿ì&,žñ?LL‘[‰%0°Þc<­O2š Š!—ùö6²(®1¹b8͹&&gõ|§óDP&öÊÑŸ G ‰¯³ŸC§Áÿ² 8áÓŒ8µ¹?Ÿð?ÙˆŸÝÄ5ÔÏ7)uöŲa™Øy0ÑËj±PàOb\OlÝgâ¨}õ÷†S[3¾âƒ3›7†ÌŠ=ùñLìÆ›‹ù6Ûâæ?_çË}è=³Íævz#=Ãëuz�fÁ‚¸�ÃÉ(Ôÿ¾"J 6 õIÁ¥˜�èù|9ÚD…X|›ÿà¼câkáß1=´í–¢b>àÄö.*äT/óˆÚiÓTpaàçA¨§­Mµ]ß¾ÍßqI.T¯¶)«Gh“¦==ü(œažm¢ÿч”}|ž.è5:u6ã"y:œ¶,‹Ÿ‹ »È7é6ýÀˆË1 ø0þ|X¬v:ežl>“L6ìùrl‹—6ÜÉGp‘F,Û�k «ƒ ùZ¤)a%)å΂%õMâùœÄ|ya!¶ n½‹ƒBpݱl}û4¸µÓ£B°øã")I×ä#Ž¢Þ�&ß­·7ŽqþJÖiLÍ8ÆCΈqTλ¨iýé àži<É�Ñ™ŽÂrÀež‘óCÎ*óÃÇßæÏË®~Íd˦òäYÝœç™�Zß•´/~À?Ÿ]Þì¶qþ1#/ÿ]x~úi�ÏÁXßQ¸H‘øLà+f*ô’L· Ö[‡TsÌ6‹§SxÈÊñ6AñM’zÞt˜Tè³aQAv#‰QwŽƒ§`Œ¹½I×®!Çâ3»õÆqÌ£*wlÓ%»L³ˆ=÷ªà@BxL áÊUÙx¨O¥‹íÕÞ¯BµöäB¤Â�–Ÿè‹ÿô eV}„?X•Õ¾(®ë7_nÁÅ•ðæã¦E능ï}0SñŠó‘Å™ã~4ž˜ß(øév³eKn¹DëY�îìâ±xÊÄ› ¶L„LKx&…ʈ½éªaYg=ëj¶éÖ®±îµŽBÛ,ÈV­·AØž`ÊF`C­Cêñ�妫ͫÜnáÊNÕ=q×ü¤ÝJ#n¥Áç:Ãxh¬G6M€Þw§gOßô”? †³‚×F°äè`›³ÞÙ—>gR´#"ûJ~SŒî‰±¦âOß/Gì©M—ÞD*]ž ä,BdžÃ6ÉJÐÀU›°Aˆ^l0��E&¸Pøìþ˜Û çAuF6Ò£ñýpÏ¿èC_Ïk®M’ªÍã—#²*œoO9ýw±õ—ïž^ð{ o¹A˜ï¶gâ1·ø ¼ú‰­7ÅO…x›z£Ò ã‡#¬ñÔÎt)aWü=Æ»?Ö²†Ð©æ³ ·á&Z§+þ¡/æ‹X_é:¡ÎÕ.Ô^?')ýXb̉àxØ…<ça�ƒBû}¨ë|˜kêãcÖ²à â3äí°S~:Ó¿µû¥àtö¹O——/k©€Íš * 8hÄ ØXèZ±Á+;u,RƒÙénz›éî�ß«ºÓYÈU“`ë›+¿…%‰§Çwy„ ö–¿ZÅ#-\üswÚ¨®u¨i¦Áˆq·½Ç@`œeÅ]·›Š…Üè åTygø^ï¶ ßÀþ.vSÒ§:Eñ×ð Óe´ò† ã6çpPR’ Äçc–»Åö W Òìúø._IwSa[PÎ&ZÒ»îì„q;ZÉ{û‹V½ø»7ƒ¸aűöU—˜”4%CðîÂë8×7ßÀîÒ—O›åÛ4I£@žGº:‰cfe„BàºpºoH ?äJ�ÇÆ-n¼”` �¸¯æç•/ݼH ‚óÛÇu¥§"zu ïV›e ± bõöð?µ¿½yÎ{O؆(]È��SP¦ŸÅ)±Ôú årñ>37#–&è冥´qûæ§1sÞ'zóRÄ’üç^ÿwT¸¤ñHà ðù@ÏÝIžZ"¯‡|^y,ôä‡V‹Gn0ŠäoáýFéðžÉããNô“³6ÈA'šF/h„f†­‰t‘“ó6_NÃ_{Ýj‘hy¡d¸ýùT²#ò§ü‰>yÓfa!ÊAŒ†ú�.‰—=šrf˜ Åý—hÊ&佬£šŽø²¤w[u›ÿH¿¾(s2(­!×ò#ý#‰WU‡éxB¬Ï \=BøüH¼¸2 Î?J^\¶)3dqÒûr˜ÄZkû‘ ½7ò€ÁtÈc;aÀ½R?÷@Ʀ|T?Ëcý‘~.@N‚ß ½ŠÂ¶ø‘|(BTN«åŠñþH]ðÊÂóçY�þ%©ÂJq 5Ò—¤ Ë"}ÐÓcÓî­ÚJ}M‹ô—$sI¶BO»|ñ¤‹]ïYU/Iƒ%Dn<, „xI B¹Šj å%)�HàÆ‡þ’~Ø””Oq©fX¬î—ä‹+o=ÊÛ–W;ý¹ÀIºq2Ÿ‘jû’äØš;ûœf1”I�'ÿÉ7LªJú£¤ÖÀ�ÃAú/Vê�“B–Õ®Rñ”bꜴžLï¡û ×^‡ÏéØ ¨˜ “"¾‚à_¦#4h6\ŽÌIbÈ�sâj€<,]hCMIôʓԷ¹Z{Þ`Þ«¸^6ø¼c”‰3žÁpN> ¬¢]L3ët¾ zKè^UbÒ±†…_"d͉»xNË”þ,U@ì“çAËÌÍ3Í¢ê‚ó/ÓA´øP,’–9õE"î/É9-mð­�j"Å‚¶tȇé�È'–;YÏIG1xädG€8¡cDLËp|§€èä û Ñ+# U÷+R<ÊXnR‘§¯Hñ|€}ôRR r%Ä+¯hw54òÓªh#ÿ)ó"$rì~@yK^‘"/BîPÂOüŠÔ ´oº´yúk´™W{û…CííG·ÁÔèø×HO¼PÏ„éIÞwI _”¶­ñbø]~E‡-j\¢,¥øe}M{½}3PXë‚NÝ"¶æúõ� h ²^ìé§Œ‘)Ró\ÐO/dÀ•^fëåª:Ô.èÇçU#×=Œv¦c1UUÝ/è§GŠ«çyAaF˜Á˜3ÄFëu=,�vS¡¼ð‡F«–Íí�ŸêÕáR"¦Uà :ù`¨…¢ŒIÆä_£ßÀ¸:[ /ñý6 õ1-ã‚~dÐG±'RÀª|Iêv’܉oµ÷ÿ--›Ð "}FsMÃK®RÍ2ÄÞ[R~Éd)´Š½Ô9™Óí‰|ÛxKHƒ ooiÉ%�†üC´¤A´%³·tÂÖy¤„æ_ „‚?�‚b‚܆yÍyï-�çƒØWªg(lP_6)&äéyèË: ð–6“fú ®Ã¿¥-|ÓÄbè€#ζ ‘€@Fn‚”4§JÞt¨w‚”P9¼q‹YØ” Ö·ô=DIˆõ,N±w´&磳Âáo.§ÞÑ!_ p¤½kªÀ"¹ª;æO"[n�”±p»ß5DúªÃyÒ8›Müòõ{GÄ‘Gº¦ú¾£# È!_ù¯½*’½À*çâ?1 Vdñ¸¾üV ‘ì™êC�@àÈ_4~�¹èµèY RËU e¢— PU9õþ†?û÷ž–¦�«a£±X>Thbø#€…‚±LÐ.þç°d÷.ĘÐH4W¯,?äð6œû½¹_£9$*œm~ª4àr—¥ÉmïxK””Þ&‘}`Á¤î_ŒUì‡ ¼ö6Û-C¶~�<c|9J³(�›‡Ã Îðȶt)0Þ n/a!õ*84$|ïmnÿ–†‹ÔßÚæÅwò- óo{0×ó&øÀ^±�gîýA°be຦knš4 07õ1Mï‚p·ak;àE1»0¤árÎÁ( ‚Bba’-¸ä¸c¯Å2¼=‘kt@T ¨B }�Fúö@á8‰Ë4ÖÎGÕÕ‘,õ�È è¦Ñ> Z¡¯üœÆ×Œ�»úkâ;Û ]”GÔî€ø÷òe`G³;›ëgez¬w´TÁL¡æoXV\ø6Ú�Hâ9J“„­ ®»_oiÃäp”²ŽÏ2­8²‰±E`Å*ÉcBó“êoÍƯÒÔà\x“Ì UŠç8Ýp™“ˆ~+«ÔTìf¼‘°ÑÇC¿°uº%›˜üƯÂ2X­X츯//Ÿ�"ÄŠ5ç£Þ2�7,BÈD2ÈJá´&Á Ô±>ïPâ—l¬‹ã‹ÖÇì³îhÂxGƒ¹Tˆa�6F,oœïÁÝ�ŸøZðú($Üt#\Â|0t­á¸ züpà�‰X“·be£n*šŠ"ÕÇI€p}L7Ìy„|CŒÕš„ðf‚4“Ü(*É Sûa ñjÛšÕ¡�ö²G«Åî:Í$zXk9ûÑE¨ƒpêLMFÒP,€#ñ�â™$ ÿ¹jl«jÃU3TOÆpµ\‡î/`<¸òfÖa­Ù›€÷ÚHÏÅ?÷GóŠžæ‹ÆCСÃÎÊÝMGüí-Ý:†‚«eÀ!÷ež”„a¯©‚us•½Ìˆ¹&û=bâôÇÜÞ§ÕbȘ ÊIL]JÓZ*°äü ’hùy0ü,>Šš½à)c\¨ bX•A©.sŸyãH(>ÒëÛÀ£ÓBƒ;oÿ‡h¹¶ÞmY’¯#vl·Å[½iÄô;=¿´“|O„z. *ȸ?ËÜÄ¿0¬ñÚ£wQÆ“jy´2µL� v‰BÜ“&þì<�/Y´ã¯qU�ÕêáBÃëÆ~•œÔ™ž&§Ë·|�{ŸýÉlìâŠo@tá-VÛè&¸’-vZAHv‘à E Þ7DC;7ùc>5ÙjÏR…úæFAPr®<ÓËÕ"ØÜ\FkÆ2ñI”ÌÁjUýÐ3G7d2­PY7C·j†–UùSÁ<}ÆKù¬Ö;÷‚ŠƒÔ¤uËÚ€—±wåÙO<¹x¯½§ï[Í5D2sõìßçîÖ,eñU¡ µ–22ö½'ùöáS¶eÑ6_£›2Ò3j;j’ #òÞÁ›€]‘ì8á&¿ëû�8}iTÛ#ö¾Êê.½r�>8›ÏÑ�w¨x‚ ®¨õ+´ò§¬FZd"O¨%CÄ�Lã¢W_&ÞwŒK‹y¥Ñl>˜š÷‰Š¥©G7”š”‘3sÐGF¾.ûh’A¤ëùL/ù›z�RÁ;¢V`KgÁ4�åírÁ•‚&Ǹ’!Ÿ“=$Nj´J)µD~¼É¨îµ’\Ú ¦t^nìÛ¼J½>��m�° ‚'qÙGmž/#5óŽJÇœsCqËÆI˜E½d\ ‚ÈÀ°°)¼Áh¢/x]É£ü!R|ÁQ$zý³ò‚í¸wÛ5u‰-W¤#¾£ò@ÛN\IÀžeÃ�Á‡ÄikÕ.¸‘×´Ö@eÎ¥…M½Ê-.; ‡æÒKQeÒ� W‰�æ%3”¥ÐÞ´�–}3T€ÛZQH‚tÁã&ÏY¡8’11ŒžSŠ hï%ó©¢RAq¼†Iõ~ —ïv÷ÊM%�Ç\6ƒäV÷ ü³@µ±í@‡l—Ý«e»JÕ܈ ‰dèúwsº‰üéf›_¯º“ X<è ÄÏ‚H·ËòXN¥ŒENTéÂi#ìAÄŽz|T ®_¿ ®Ô})HÞ(-á*O®é<¬]6m~ÞäÑa{#¨rT+ªê�ø;ŠæX$…gyÊ(¬75¹Íă!² ž¾¾„§þîv×Ùá^5JL}^'`)þžjRbÉWÈáq�0Èbó×¼uM`^j#ÓxP3v:6Ï£q””áz·Ý1 (S~‰övòŽD d»ÕÁo ^u�=wwK/QOM©/-4h„~Ž‘¿ ×Xå>U< òûoŸy€†GËýp:ù\Ï�üJ.„ûQrº5rÙ7^MÉ­Ëõ×`T·›í·ÊŠcç]þý[²¥›n&~.J š|ú÷÷ËQ¾Ù°èoÙŽÝ464ãÀóuöôRŸ°R»¯7ÈöÆU‹ŸÏÔ+;‹@Ø>ÙØ�¸SÍöcðµ¬È°¤Ž¢Cµ"¦y˜8ˆ¾ìMv¤ �S-_½OC0{UÃÄz±©ÿüŒËó�lDb©ž´ÖaÚ6…ø3R /Û}£ Ö<¾o4öuÎ0îÛŸ¢¸C€ 7B”s@­ÇCA”X‹¸uÔý‚¶1¨÷ÏÐtŠžŸOžïõZߣ¿Æ“BY¶;¾Å\íÒÀá’ä©r‘h¯«¾ä‹tÃGFT`MXT¦>)9$áØ¬q›0ñ¼ÌdSƒÌ-€‹§PøàQÃOÞ$Vwgz¾¥ØÀuž“-�%ds^Jž-ÊâtG<ÐïfÄjQWp´Ê©ªˆVðW_ôí\ñ�³lËÖ¨Z5?ŒX ¬,üÓe%š BAÚÛ�ÚáÝf:Ÿ2¤*„À{êBG ´E4»m6ş±H�ÜlvlsÊó5[${�ù©{ÜΛzqÿHf?䩞ò´ö'Cˆ‡tË÷vë¼!™ã^GÔé@ÚÝ¥÷åúá˽!4õtÄmu8ájÕ.{Ÿå³¦�M˜ˆ¥Ca]ËÏqI¸)n[ŸÅ²Žê.ˆcYCì .ȶi$„Õ³õšºzS*uÄr—Ãt2@Π÷àŠR‡b8ë•3�‹øµ <Éh€øn-ðÄwõ:ʲR—CVª¼";Ž›Ú�ñ&Mï4&&iä©AÀåki�N•dµpV»ô•qÑ>rd– b™çº"¸ÓÄ;»µ(Eç\4õôÛ©¬ÙÏšø1RBqñYÛê,SiÞ£mdxËìTUµ Ç‘:b­þ šŒ)îù8F¬Ð¦fJb�=EëÅ`èkXX[RLga |9<„hƒ÷õòÊ|Ó×y�É3¬Ï²ÕnÛP‹Û†8åÀ°‘®¬iì3H"ŸJ�ÛšUÆ@*#J3¿½¡Ç•¿ÑÈÓô¨«Ö¤D³åƒUÏ›õ °;°k¨kMb‹Ã\-‚ˆÝ䋘n/ÞtŽMq‹¶w×ï  €KñŽ>Ùm·yæ*y¤&¨Z\›Û2ù‡yLäüø¡L:t¦ôÁSÓþ}°•æè#©ú¡8Da÷™ÛM­ÊÊH—? ÷ì¶ùhê¢ßå}<ÎýÅÉ!^—ý/E_©~—`àØ5»R=îõ¿Ï «AU‚Ý mÛÔp•}`ÓÏ�„e*ÚÎÀZiagl×Áææ~wÉ,)Cã¹îk²©6'›êÐzÒ<•v–HGNÿ{›áFœ¯&.žï+Ù QÌPöˆæCÁ¢Û^Þ±Ý秊Ö(Ø£¼¼¡IYj&�ÊÍþ:ÅA†-%úI1̇âN�çYºå&lI÷Ðuþ6ÿË.X…–3BÌQ"ò '¥sAÙžw 5š¢(÷eº!/TûrZ¢vü.—,+¤ÑËt™’è[•ãÎz ºSõŒŠ¬êÒ1Ã}íjý0ÁŠ—Y}-𞲈�z°Žnø�ˆK÷*X6¤Õ(âŒJ7‚Œx½‹»V³.•�öÀìÖí<Ê| Q:êùÓ!4zw´¿lº_.‚ZQlÅÌþj%×â")ñ¥:_¥›+ÁÂÜëËHiÇšvä|Ñ&G1Ù‚¾~úšñn::�áAy²$!\GËQ“Èké`1C¯Oõ$jàíU¾³nçÅÉyïqÏœ\­ÜÏäŒKbщi' §K¶uH0SRµ¨yxÖ,Y³ ‘êmH?�­bM&Ê!(6T®³Z•EㆰËY©7Å#áœx‹´8Ò–ß‘"€bI¡¤×Ì1>;uÍä ŠB‡¡)>úêÝ|¸„‡³ßF’à[È•©£(K,c™PQPáß`Á²Ûâó×ÄE2Ž…ë„…DH#B �§C�©‡–¢õ°©Bïóºø`°a'YÌŸPÊ5 */¼±Q쉩èCÊ>Rä®ëuì™'4ðm$éb §X¬ã!glâô°Ë˜ÇjÄ&‚ Åïàyž|'>±ô‹ŸÃÓàˆÞ˜‹0`> ”XΦ¡�ñ–o„Ầѯøx¿`ˆõÖEË2]¡!äLÃOqDÄŠ¾½rÇKY¤ø|ûêl\´Âg£�4]¥4"%þŠ|ºáY¼¶VI}ñâÂý8" µÕá¹äµ3¦’', ^겈88°½É VºÊÓ´Ø»+Å 7È„˜5¿éÏ„êx—Ðw¨²´Ê½ùª'ÓšÛ Ü8]iÓÏæðfÓ�ÔÑfú‰Š´Geµp©åðÎ rÎ^â‹°Ö ‰ EŽËEÃ[‚¯1(Ääg‘?¬ô�ÓZ¥ßZ7Q»Ãçâ~À�5®‹PÆDc[a-C¬ôQdWÂç®S6Gl¥oó]òT/²þ‚ôýš¯vëkvâ’È6›_¨^1OVôÆa¨ßú�C‹ÅO=Ž4ØáHm­âï /۾͟²$Ø-häÏ)z0P+.“6Qˆn£Ð’’|½,äUñ§À#V)R1&TÉPÈàÆ¨GñyÊtr ù2–èâr¹Üô:9Éå*ˆöpQˆË�Qd™�ǼP4FIï»ó'J«Ù¹3;V¢$�¸3On·4Ú)6w�.›Öõˆñ'ÞÈT¡Õ€…µUpƒËÖ¯ë¼åm mGWA„/Ó�:¿{Oäxš�s¦â ·Å.:ˆT*2r”B#ë5©d’ 7ݽ•ü›ÐˆØ<÷eTÅy'l>iŽÊ/§¯îƒ¾dw\}�ÊÞîZ§Y”/‹GéŠ[ik‘þsÅ2üLÊA׽​BÎFhl—\6” £E&2Ì�®]ñŒÄœQ ä ¦T{Ðô`|¿%õi3mlÃbKLž—‚�f€çåùô¤¸&Þ"îz¬ŒÇzUœxž�EŽ¡B- äŠJWC0§Vä ¡t9�Ñf/�ezC9Ø�tHÃ}Û¸ù’gl³}Ã6…‚Eã$÷²G›]±ÍælË–§2äXhè½<éA»‡B²?Z ®Ù¦Ç[:ôBŽT%~}»bß÷ãÞ/ðO^Ñv ºèmób4<ÖQo%.Jo»¾í×…zÑ ¹eëŒÊä•Ù1#é�Ê7±C_Îî¼(VžK&!™}ÖöÌÊ@•Ý*‹€Ê|îöº÷,†ŠÐó«‹GþCn;¸­¦£Jûµƒ¶£8¶ëœÄ‹Æ¯¡1„Ýf®Kíý¢l¥•Oƒó[ü d锪æ]·Ê¦–ÝQxx·ĶK+¾iÒßàK¯×]œÿ‚ÊqGyíeê,ë={÷òDð+.5ñ&Õùd‚*42½³sŽû 8T~y4BÊ&Ä;<,ž†ˆeD^¹°ê,+© rO!Ò , ½¦á¯4çëµJ`²¿ö¯U*wbZhn‰_Y½¨ÞAï³LVˆçsñg# R…ij‰QU2z WS“-*vB¢Î/eï'Á£1‹dȤ—¦9{“¯©öSo> ÔXHÈa©‚ÈRÔ�âîòt³ü¹¤T Õ•|�¤¨ ù5"¡ÓÉ ›)»ÞAATëbd¯µV?^=_FLf`‚mèÄüÄë±r|0«Ëš;s|¸Ç:+êVÒË«SÊQ ã{!¿Þh8Ó7玑TSÄÐûÜûEâCz£éè¸w³Ý®6Ç�_§Û›]ø¨x½gן¶Yîq”¯Ùc(%z<�ÿ§ø+T°mŽùÿ¼áX-÷ÝÚú©I¤âÇ]rÁö‘œ2ÍÍŸ?æjÈ b&¼é»5õ”Žk]Jø9×ä"¹0‘´¹™Q¥ÌÙïuž½Vé�Zn Aå1{˜¯¯¢E¼~X<ã×Å x -æóØlov«B!æÅÏŠR�è æºâ=­6�n¶Ë…p<,X´=É⟂uÊ%œMáç9œ×Âáqt· ŠÏp%#™Êüö~!$ÍŸzóéXýNW…É/H €D¤ Uø&ÿ(²-‘—w6J„þ7g×/øü]įB<ßZ?÷È“í˜Ú=뙦n1M_RQäk¯‰Ìü„G¾ f½òØÂK8ç=a~ =,öZóéo]éÀ%§ÊYmVÝûFT�€“*ÆP†³Ïšb÷}fx1¡¸ùÎŒìÇ;A‰Õ ¿›¡þŒEÖ"û uuö…@ƒK‡t\]Lò§ ã6nm ßêÈ2-½Ž·Ç %Èú“š«*ü.oF¯¢’v«,s”­“•P܇Àÿ¿°/' bX`JËnƒáPür<Ô†õ²8J| LÄBC•ÑÌûÅl+aqÄ´‡�œne‹¦f)„$××H&ò‡õ-»Üð{ÑkÖì#·I^®Z‰  jËyš´ó)§Sþ§Rï\âªÞÖs6ä¾s/”XÖ64oyIŠÐÝ„q*O¨¥Ä'ABµ8Â+õ¿åhó€üKИ@¯ —ÞI¦‡u"Ì.Ì‘ÅÞÇ|öIb)ž$9ºÍhÚû6Q€žæ—½úOÅZë�1âê!Ö³‘Õ¢±BwK1[!~tüÎT`ÊVUÈp�¹&=õ^Ä/OÚ„½•ž; '´Ìã«�BÎü™…ŸBi“Fžãz‘pçMÌÄ#¿†fD,Vàù“1º>n²r0Tè0ºüNbË%)ÆêóJ– ¤•=hPª‘à÷¢ÓXÃDÉnÞh¢�­�_å¹?+Ë ç¾3ôGz}¶·FüÝŞÞ,¡ýü4djÍd¬¸¬lˆÞqœé '€,d䉖3Qà5&QÉ"v$švO%¿Þ!Ü�w—ÖeV¯ÖgŽû˜N.sæ´*¡D™�Ði$r²“±×•õùƒ¶È¯r˜Úh‰€—S-*Ý`Â¥)P*B† *»„_nsÞ×ô×ÓWë½C»ÕÅÇ`ÍÜ lŒ”™ �@—ôE¾€—–•W£ƒ} �«QQ¶MsÑœ:sjp¸Q¸[Kâ㘎›0z™f»O�·VG·ëèîc“çsJ ¹lR ÑÝ ¦”[ËmD‹ «¬Û|Ãæƒ ÷0+À”ò&9”$ yÞa…9˜pŠX±¦ÃC‹‡€Œ[óóÕ{{ŸûsWpY¾:˺¼øt”ehqÒtÄk+€JŠ„8ŠKm[µ‘ú¼ (5³Á÷ý¼LöSÔÝÕn+ÃË´D×Ð!z×$Ãlғͧ&Nÿ…¬¡ÞþÁÁ�‚nÅ&; p³åܱf¹Ç\��Ðçx¥vØ[½[ý�Âç ÈH€Ù±§)÷¢”pï!†òÕwD�\fÔ€M=ÐC&*"iS_ÃiÒ”„ÕO" &Ñ$†ôP–*Ñy~½`¨9U7^¨ ë9ý4ؼ2wS]® �Æ<‡¸àƒHó7ÂÀ{â͇~ufÉ%  C‰+ò¸ aÆ_6ŸEX’òŸŒ¼±ù~@¶íX%޶‘ø%ýÍFÒm‡3{óäe�>Œ¥ÒÆu†}ý…C‚º�À7ŠX¹tåó¿‘!†Ú•b7àëðçÓÊs8wÛ|Žáy$nÆ.öìÆþ4­-»ŠïÒåÍ\ÍÞ*™^§Àgüh8°ø3ýy¯ô^�Œ=ÕaX2öl”±=!ï]}é­' g8QjÃg%KÖÛã»°ã°!BÁÑ�oXô>Ì?Ù†ølfyCßkÞè®l8 ÎZÜ”À–Žl jôE¬'êNýÅVÓ¨ªÔ*E([&âz „ÿ3ò'�ºq­÷;Ľxê¾­-Œ@´ú›ËO4�¤Í¹¢ÕÆzwH®—ˆIz…pù¦L¯¼–h/žÞ3³�ËeÜÞE©V×<¥¢‡±/ŒgªP€B p“e…ø:£!ûp@Ã��çhÇÕæ÷? r éi”M-Ø&÷QŽtB…d¬„¬Y[‡‘»m9„ X53¡M"¤…·ÁZæO–7˜S4l´,t£G¾i5‹S”c:ÂÞ€c`¦s÷ªžær÷¿Í|¸G�•¨&‰3e__K²÷‘"Êþµ“ÅKó<_¿ÛØ‹'0£´=Êq­i@Ë£óGV˜ÄKdò2»p^f=| nÞqþ1»^> ÅÓ&ÉuòOèŸGÂm9Ÿ?(+£Tž ¿²¾ øéÈú�êHÈ«‘»V£³™Å,.ÏßY’É«¡r^»·)ºØÍ³O«t-Kk2 yÃÁ>¶ž.i¡dCôдÅ8.º¹ùyKK†2 v(Ûm!ð¾’²Ž”‹Ãó *lu´×—‘:?Ù.Jª"íß <•¼üOJ �Ý̓C‘Ho vÛªïˆç9ú´»ýÊú9?R婨3«e+K&œÔ ú‰­7¤V©ß)jmðâ÷yµÚ6º¹à1on\ÝËî¸SØgÚR(QŽÕ°$JÍujª)"‹5#ty» Æ…¤§;ÄW‹ÿÔZÐÈ{`ñ&�f}»±_›JPRæmµQ`[aºÿ÷f»Î³ëûF5øûÿ~,\ëÔ‹Ÿ­V�©+WC¤Tœe �jèb.Àé[´¸6?ö=î…@²¦«ÌQ’f³]&µÙV-Ý÷ÕµëášSÃ4nL˜öóaÛ„$gåŠ@Ò`•(ê)1ÁèVve¸þäfÀ- û$ëF'º—›[ â’f¿ ÊZ@Ë–Sc©üXÁê ùõÍɇ ]ÅuýÆÚXs=Û”: †Ñy("36�X¶a¼�!‹Þ»d<±ªn(¬­Ö1$t$"NEqj‘-ú°Oc±}Y¯C7˜ŒÚ,]ÛJ´ À„4yõNe»M 8ôw°R®�lý–¹2°r©§c‘£0IW,7�À#PK€ý`nò�o�JטXF0SëçA¥ � Q­Ò,S¶áÁ Üm–°%SÙ——/zš°îÄ'ª­Vd+)å†b ô-�ÔYÉÎhkYÊCã’/r²+vÎáìN)ÿ",ÿšŽÃ̽©×É7´hk»é†¦áUíGÃ!ÎÐç>?™í–s³2ü¾MÍ4׿]|e¶ßªÑ�h§›r#8XPÊÄ,J"õi_ö` 𣡅¸Ò|$w#uEææÕùb›è¹»7ú†T_°‰aÙÀ Ö¶[Y=1¹þ�ùa&µ'¤à`ßv,íœ.©“[”ãäOv$,@³ä3¹â7 ÛÄ~βó`ýžr—uÛ—P1ÅûðRê‰û±Ów¶é™¢é§`‘ÆrÊçùZ«ngç¡£îÙÁ{\ŸÍ!Ó,gó¾þ`nÈ5>J Än0kZ¯U‡¡Tt|^2ƈ‘_46ƒ®Mìzàg¿³¯Û?×´8wg]á‡,±ªŒ)óçkÆN~"±Üjí¨í‚ƒ¤UÜ/M­§jBµõL® .y7V꛾¿ÜÀ¦)ß®@a âø9iï‹�éö•ÀÕ’V?q ‘®¨>Ë2±®ÞìV¾ ‚¨J^‹f½ïNÏž¾é)‹Y0€¸éÊÙæ�§�÷†�F�Æ�€�‡ð�Áã‘úwñ¿ãQñ¿cst<)þw|üØ·ÿöø±ðg ÝgÃ# 'É�&Rœª©6–##’¾Ž´Û¾ECöËČ鰖è%g¦p©”Ô9RŠEA|ÇáVʱóã4'šÒ ¸"Žçyt'gA7C[ƒ¬þQ¸à¨t}}ÁÌ®�ý£x�¯\¿—ðFe_D3o©/Wzå+Y –ºÈ£`qŒŒ¸öà¥caÿèZ`÷‘t@ _ºÛÌ%ûEš ]Ñ}Ú]§«Úy=W™\ojö½ï./_ð¿†ÏßÊoHÄ�(ç'µÔýq˜³zM£U§ž à÷( ’5+ÈñBBo×0=eÔјÀÜ@l«tÚèMY}P¢SHç�Þ.eZÜî³ób§ð´íy �µaùú V2¹å¾wE|œ§c$VPœûø0þ$+ ÌQYa‡×Ù‘fÎlç†3”>ܱÙ××… í$¤®!£ªƒºu²ß¡tò6HëÍJ£21øæ8]>²psÃ*“ùŽ*Ùùl¦ðõþ~†äëÙhÁO n¾ã©T»eÿý3ˆ <�ønl�‚PÒw¥ù¹ªÍÐØ2&Œ hQT)ëëuÍD'¤ÎÙæ*öÇDžô]!Dâ²NGG>ëÑz“&r2«Æ¼â»ÈéÐPïd‹d&®¤Óבdb&Å[ £Ï]“Jk³ù˜¯ã‹æ`=M(xrt¹³åZÈÉ;&µ˜œ>Bó0X­^æ‘«MYùò.«Õ›BÝ�g�ç´·tC¹8võŸ§ýT5ß¿MO$@Íp'¡«³eÓ;  ÿ“÷L"àú �$Ú4ÅamŒ>ð�{? >“Â�ûqXÎÑ,3a´íÍš[4âf”ȉÜdŠÙñb*¿â}ž2ö‘"µ.Zv°hC3ä÷>/´)ÒwÙ_”Ü'‹�sÖ¦`͇ÿر‹ò^ÜÑœÅ$ƒÉhˆAxû�}ƒ‘ÂMjT§Ê³‡1[�3UiZ–w«#r[ƒŒ²ý[O"/^Õ¡×1€�ÑÉ9Øì+Ñ÷Ô\F3ù°ß@6ì®Õ$ì3óÉ\/Š('_¥9—˜…៿a›­ÝÞ" ’ïúßÛz»‘rJÜ…ˆß…`ô@H)…Oº$å´“È}<ø³,æ( ¥ª…rFàã œhf/rM©á~¯Ä'øÞ’§WÍouC”ê40¶É®H.€úu7æ÷šÍNu9pIì'Åmޭ܉s \Œ‰U‰l™¡È8Ž‘ˆ÷DþÌ`îâ.\ðŠ¥ƒteø¶‡jo¨0’º�|�ƒÛ ¾.©úYŸÿ M¡m²økÙN8¬æÔ´é\B»ûÚP µ)6ì¢s%>zÏ e#D ·H2²ª‘iW§9¸!\2¨,Éþ”ðÚóÙÀSé5m#C@œ¾�M¯¬ Ó&£þÖ™°WåÂB9S à ÝÏ`ÉÞ?9Oîß9äŸ�u {uöxp| ö½"R¾0çr0»x}à|¸ ÕiÝŠ«Äâ«€öÛm¯ˆ*Ý¿è‹dµ4II\¨Òã*Ò~‚ìímSn]]OˆÈas´ÉÒÕŠ„Úiê8ª pªb‹µô¨H•<£½*Ie/WRòZlDA˜ņtºugê ܊ìwûŒ%V‰ yìã耦ð�]À“ÐÒŒ� áTaæþ\Àã1+Ô©ã­Øã(;K„æ¼¼6¿z4SÑn”+ÔÖ©gqŸÍ?+jŒüF)Äy¾“‰"ÍÚ­ö v[9º¡ÂÎè*Î3PÀýÕ4»Z­óëµ#I¡ éÑÈ+–Å.p£ýFU¹£ÎDpi…c_ÀD…ã!Ó~=Û?viA›«åm F§–Ü„T-XþÜê]Œa…¹}%°féÍ´Ò“´S5áu ðÚWˆÖ0OÇ£Hh‡šÞ¼Û÷Yý¨;ħõU.=ø”F`úú�ÐÉ:_^IEé D§„H‰Qéðú˜ŽH‘6 í�þIw“ºzZôn¹ Ö·Çw‹ ¤à“ü9wÓȪÐE°Ùrç:ñQ+6�'¤€ãu7«”×[Q<Ó3V¿ÂÍlaoáBÈÑÖS´’SÖѺÈ-åç ÅZõ:i"WŽþè SM*Ýkbóƽ{YÊVgݫ٠¤*AUŽ}7Ì@{í&kÞÅÁæ&̃ufC=‘5FÅ%"ßñ&åŠU™‰pF8�˜Ùa{¤ìíQ/‰ëî7I(ô¦ìÎ áÆpÝ<­ZhÍBÒm®?"×»R_ÈmÞŒ­Zv7¤0íI­jžF‚'í·Û|wd—Œu¼4f°-�ŠÆÚ�ã@[1'“ÁK’kåæuùHH%8©a®Öâ°é›bÝö�­ƒÅE°åPÝÖbÕìѲRßÿµèÆYð"·wδUo#¥Uëèh%9 =Ì&âOÿ¨×/K�¼ñXèp€Õmä©“ë¨íð¹TJ(‚ ¢#ñ�.Uå†Ñø>º ÿ¾Ì�q«�²¿%άF%‹ ¦¿X:(êxkë@űÈëýšY_Šõ0š;g4ûa2™öœü ÉLæ\Çý cÜÊ Ô4ŠTÙ„:x—f >ó¦—²êöM΃1DQöYãRlåÙm–è+ŠÐ¡kp�ykˆò`ÿ·_Öç&ÎEabp5¹s.ÜYJ]K%ï—-ªÇÙiaÐ�¿Ñf%׆ĭA°²ãn¥Æ1Œë¹}®YºÔI[ׇU³ïÓO$&ébËÖn&ø—:Ô]-+°Lbâ11òJ„z7ãÜ´N\®Ô¦ä+¶v@gÍÅÅÛÐø�ªÓE@”›jõîU³=á™g޼pg`ÅóæÈ lšª´•aÍxc®ñÁš¬]ïëÛhj¨ú[®54Õ& À°&=;l®\ž“uñz�÷¢¤ŽÞVdvû"O¹,À 54´ÀW×DÄ ú¤ :w  �ÖX™{ˆC” ('z!ôñÕ‰,ÆDÏûæ+e—ñqïÃ2­ó”�WÖ¾g·Ü "5:M¥Z­¢Äücî5´ {Š¡¾Æ)šýÎÕbs8ÃÁnà bµÔÐ ·›í©KÝ…§DneHâök�+yÀÿÑÁD(lÒFŸ9íNç7uHú|Ä'‘�OˆîoºqÑ©MôŠÓH5bLÃÄD3â½$úçºV¿iª9ùÚ¯ Ül²FÕW«‚„®YÌ�)\Ï­°Øçº¼Ô6þÍñ2X®†”‚;åÏëhn¤°êñœ*‡¨)v‡…¾Ž·¨“ ·µªÃVº× *DÂXØì_�$®ñzs§[ø|…_XyE�¶«%è„.ßW”œF¢ÄfìiìÜ à²Ö°Úz,ÞUnèCs¦—tU¡Ê¼“•È( E÷3–:äNµ[¿\w^€À ÑÒôhݵÇP£UCô=!{z5Þ‡Y JB5fÅW8lRJ`µ�++»ïÔÂã9›Þ`>×£„pO5‹·ÃÓK‡ãdjÂÛ*ò›F‘ø²ÔÑðøøœ+~4å$ò'嵄ÂÖ ›ùÕÅ×ÑXxz®ƒý烧dÌñ ˆ ÞóYÒâ*2’ß.Ž´H–÷)&°[ $‚Âõº4Ý&[ '—5W+ZèèÞr¯†jÃmo“0 -|<¡4èülõœ»÷~8’7¤÷,+6ú¡iS¢„J7· TžÚú±ÐªÙi�=O©JûÃé7¶¶àâïÓ*ø¥7DÄ/ƒ¡ê¡³é@Dzvìmþ6 qšÝ/$vë=슪§£óÖjª·¿]aûDïÙöÝš|imœøî͈äu×%)…P|B<ÏX4@u%—¤AàÝ*¦!ކ€nœl¢Î6ÇwNPÈšzüúÊÊþFx“ªÕêÌjÁHÿ/ôSâïÔœC+Yè1ð²øc\S ˆ&Á\?À¾ŠeÜ–»hÀ1Ó¢„.li%ª$—Å+ÚÏœ[ÁSïY5Ûm­rõ\Õíclã•íWŠ^³­¤!u‚uŠÐK8^X¬~Jcf ãk„NõìØÖ GF7½�™1Þ8ìV›Eiìêšk4~»‰�·^qï ¹Ã§�Ý[þcùÛ¾hCfÉ@ôD~l×®o :\±˜EÎKšEöýæÝ†¼4“d‚t³Ó)~Zûº�IçwF÷ª-¿FŠÈ’ RLXŒCïÈÓP vä+ºã—4±B}ƒµƒj2¸Â!Ší£÷½bë�¨ï%Æ«gh;’/Y4È4¡LÄà¹åà˜h§å#g�ó~¡ØS–°Œj¬[ˆáPÅæ>å^p@�h¹qKÒÓóËÞÏ'Ïa&^wÎå8µ^”€A91mä‡ÑПÓYg %³·“1̳¬Ó(úu€ÀÛn+ìƒó +ÎÇÕSYà&z?†n`ÄQµn„o(¶t´Ú°í¶xÄÉRÕVG@­x¨Ð�¶Qkz.³±Üî%¬×[`ŠïÃnQƒ Lé6¥@pfCîRñ’ñ¢GP¥ÿq#ÓhOól[0ò¦ôáKó¬ÁDzÖ«?ªÈÐ5­Du˧1S™ûªü×þª ò¶¤Z)ó=Ó°{Ù¢1’PÑuã6ñϺ1츫›�� Ô{QÄæÂ~3`°[œ9AloëÁ·ˆBB ›@‡jL¿ŠÛ7…3d—k*HAã21c>äwЛ�Pâ|›‚ 0¯®ÄG& ìÙ÷m‡¡ø,ðé”!ßlg¸`£\£…0ŒhB mè¿óŒæÿׯx Àe„×ú7{P 2DzSsã>M£Ì~e1›XNø+�#ÕóQ].?b3ÈbMç¥ñÕzmÃ'Ù³tæú’L� ï`Çû*vkÛ›ÍÔ(u«ú‰Ë¯©$=¡�>@ŸQtu×¾àç…Ó|­q\OK‡‘Ç%ëlV,*Œ®g.+T{M0±&;3‡k“ÐiÁÍÃÚì±¼hÞ šr-™p{½umqNÄoQ†ö¬al ó�>·/JS>Q[ɉ#´T”Å…¡¸$c½\l'%˜õœš¹ËÅt=Ç6Éh'�–‚‘òéeÑ6æz¨�˜Ë,ý9ŠQÉÏLÍ€ºVŠ·ó²Q�¥Ïz6jqgð6xÏN^æ9 <Â߀JÕ�‹Å¤¦ßŠ>šã†î&2›·•™ÐöijüT‚bÒ>æÉ`r ¦r"£®Ù-[QUUQèßwÉÖØú,æ^T(þ{^œí®Kןšü«dôYàÇÜùËâ�‰Jå+d@¬âO8D¢‹ÈÅ_î¨ÎÚöÅw^[¹žz$¬­ÏT}¾m{DµG�ƒß|T}’&í¥˜ Ïd=TÑ¥’ú¸ÍYž^½q;¬­eãZÄa¦A's–¥ÅΪM‘A£¨èÔqÊ9K¯oi@@òûI\¦åÙ@¥çò/åÅo1ÓÑ]Ì TÒÇþ…þ‘èʈ:¶"rŸ[[IŽð²Þ§\LC\™Ïvø[½Ÿ±{D4òš ŸŽçÕ“†¾ò ;ßÜ›ïÛ U*Ž8Ø}†.FnæÃƒNqºå�‡Ï%‚ññ]œ’~8£Jä㣻ҡ|Lû�K¹ÛÆÛß2Þ‹"W:NÕ«3¾ýâ»Âã¾iÊxã¡ß?ŠÁ¹,nM†_v¹c%C;´ƒît >|{’Ö-@Gl¨ê µ6Çõ ½,0¨kÊ÷{ÿùø³ü|ÌZ¸ IÑ/^¥‡oÒ-{È“=hºz_.›ò…eP÷„“DíIqí@i×+=‰Äë»_ެ}ÙÚtƒè—kh¨ÔªÙÄ÷{ÔÐìßxÚu1m°9мÒÌöÀ±ÜfÞÍË”L€Å£aØQo4ö>µœXÓ°’>ô­øö·„lpÞ|Wv"¿ÈA»¯~Y`)›Ø$³µ£ºï�ÁÔ—«€B#ðBNæù0J8_ì ö�9²Pùض•Úç�KV«}Þ¹¨4‹òeš]?O[WÍït:h�½´ÆZr„ø‰gÂA¨V¼yëuN¦±@Ž­ bô¡yÆ«¦Vé ¦}“tÙzøšeã™­—é†g¡�xÑy¼.�Iÿ)nLñ>ûähíD¡›¸-A�g[y!¯Õ5Ñ$qžÕ«ÏÂj¤G󟊽(v‹&ï�½ÉûcósÆ6GgÃ’”4¶ùA›¾Ë#'ò›F^°ë;ÚÀÄxÊÁ-ê¬ÓXVVí¢<²IÒš2î½·²XT˪ÆX-…<2AI ¸¢¢«f^¬¡s³0÷ º»ËDÞ={™_ožçë½4Ô7'ï×ó@ÙTij·Xº³áØúC ƒÁÕÐwµÎã]´},®‘£�uD&§(o‹AÖZ¢è:p^53çéfl#kËÊwg`æ 6m£(K|¤#Š°Ì£&õÎåuó§fR‰ €!¤T1œ²U«Í¯•·;±3g¡h’4™ú“cá�nX?v‘oRörxÄ{ê“¥i&ÄÐiðUæs<¤µùðLÿƒy¾Ú¤õ™»`µZÜ^ˆ+ã؃B�+—ËÜg‹u':Ú–ùÆ Š}qq·‡�û üѸ&}j«à¡õX¤â)ç™ îE-¨ 쵇/ó¥¨&kÑn÷˜×ûp€¤”ùî‹ÏCjã�£ì·³ö;Õ4°#>Ø�¹A'H8Á¯³Qm»ßÒ0Z¿yþÒ¥qi_t6Ì]¸È£÷gV,²³‹žú¶ª1® ½Eù‡t�gtUßtÂoo6÷€*�E ÿxû‚ÅŽúÜ`4Ñm†[œÿ7=óû.åg|”|÷šŠ VÓÿ{ò°±c²aù„ݱýá·ƒá^²‰Þö´Œ ΂!·ÆãF3 .9êmÂqôXÑô‘`rþ»l· Ùúuò6]RÂÇóã2.ó‚¡0ñÂ!ÙpO›�€i¨aJú‰}R÷p‚¼BêóÏíì`ïÞ¼(Åd'í·&›Ë]æ¯q‹ 5è W Oo(†j{uûU‘pxJ +ÊS|è+†�Ѹb.«¢ºìsw¸Ì±F²ûm9¯ÈY÷$ÿý²ó�¾Ž Iú÷²$å�¶´#Ý•£{27ÏZ‰ Ë„ÿ¹1Ð7нO©§Õ÷¸aïOf¥ÎýÚ0X1Æ„v§4] Àó0 ( Ú«“5h]¨jc9%Ðzj€Wò'Á8²žê"';å�¸¬jC( CT’8±o ¤ú0¼dÕŠœÝo®%�R0cãú1OÁ†T‡EaŽÇ·M-5ìÉ…T&o5åiÍ·KšK�¾�ŸÍw—dž“¢¶/K»`*�7ˆ‰!7C¶£v²0Eu-ñ©Çýìî¦HÙ´¶sT «Z_ ,hæ¤øNZéHïå2B5mÒ½I'ŒÛ«6õª\6ÄtÄwa6^§vxsÛ߆­RŠ¿ [7ò©`|òžµ› kØÂáàınâO›O�—–«ííya¸žŸÛÈñ!Œpj¤¶æa´F”Ú¯‹%¾*¯^˜Çd�Ð\dﳮݰL`DÓ àÔ¢ÛÝIÝI¬ôÝ´7´u: ©§‘9)}€ÉÎ3‡ÿÛÀ’Â'1æa›+ß>Ná�+‘žöÊÕ‘·„Sâð:¦¡%ÚLŒùš|TsL‚þ0-o3Dœ¼Ñ1¯dá°jý7õÛNŸ‹�iù7»ÏÍ(¹W³¹ ÁlR²ÿæ&ÿø’Ìl¨á³!º}aÙ_³EÄWÅ-'J? ÃÓð€Š,%¡‘AŽjåÝ+sT÷éNÞÇèµÅë˜@�N§üô’i!:æÓ$A' cû”tíÿ:¡ ð î¥¥V]åì)1·+Š¡†¼~× ¥¡q…`Èbº|Å0·¥Œáÿ,É�5�ê½ Ò‰´]Z~B*ooxß�·|w'¯þJ&|Çe¤äüäåÏ'ožu·<‹ï^¼~ûìÕÛ³“—/ÿzõâäÍùów/¯N..^ž�ž¼={ýŠÚSX¾È%wEŠsmœZ„n-©8©ld±ÎË×§Å"¯ž½úáìÕ³goÎ^ý@Šà¸6 ª>•ɉc-Þ#´³*µ˜öí‹7ÏNÞ^½ýëų«w¯./ž�ž=?{ö´Å¡¼{õóÉ«·Ïž^]¾~þ–>:DâÖH?Eéí!Bá–™ÝÕƒìánÃâÞ‚]§Û^˜o3¶í�þË)!Ф/NÁªCòQx̾- ãrá(Æ?“U×!-‡[„‹—Í©W7éææp£:f �†xÅœ~³ –›žˆ-0<ŸeYüwÍât]ß|Ýyz°©%ì@Ë­zéúò4ÿ¹×Óž­$'5çdÁ�C´8jN÷¦qªTiò!CãðØó|þ.”exZ‘•?:Éâ7î¦Ò1‚ÿ P+@£¯�t!¨Ýä9…W‰í:ùÁ‹uþ!%À®Û¬§‡Þ—XA¾½H˯ڕÝ:y™ˆKF78A†ÁP7N�T´)üX]º÷+ƒ!bÄz~¦Û"Êú\d-¹+ð(?)¼6î„|™‡Ù‚š Ý4jöl‡¨#ýʽì°õåífË–mÀ´X§å¼KÑÊTé<é{ö{ÈéÏOÊuY!›e ì=‡öÇ�ß¾hQÅÝgi°�šûa*œeÎP¦�KÅ ­!r UÔ£G�D|³ù˜ÓÝ•T\|?Ñ#Š0åý${´pZü~E¿Ê”â|ŸöÜ­/�Í_W�Ørz»Î[0 x‹ë�šWU÷òBc4oèk„ áñgŠ?†§/_ÉŠšÞé"ßÅ/Ól÷©¡×~Ó%ñÉ^åVÁ×~ðIøïMÅOmÈ5�¹B9…:NÏSÿnXÌ}zwY~©þîÔ²Àv”÷�5.yn‚Ûÿ['-%üßQ�¾ºx h¥·´ÙôÀÅ�:Äê{ˆGc�g)Ï÷Ø­×t ÅX81dùuÁÄ'ð5܆©Ü("Ö KµGíülð„Wv‹œÎBn—±)c©­hߦ~GQ-¯(êbiøPóšBiW½CrÓIŠŸ ®-ž¶IÔ‰ šòT;WÜmÚÕÙÀìøÝýì™CS�8§ñ¨ùc°€sÀAʧۚåŇg¦šÆ´¹®’Q�HA8úÞ\*¥½áà‡'¥X�ŽÕ^2ŸöK]ÒÊÖK÷5ò’?„¤¾(}Úe˜§ÃŠ 54ý¯VQqÞÁ誊nÖìº1bÓ$P­ :Ÿ ¬D,ÊFËl¾'²k ëÛâ,ÀÝ5TŒ¾[\Ç>Mùç¿ïÿðDÝ1�³`0ƒßoóm°àþºX³eZX×wíDj¯³‡ò‹›ž•+º½ ÍÜç­0¤zóTRDãà,RpñCú5Et¿±Ÿ_3ò‡�9þ¬ÙÊì>òù ¤°&G•t@£š²`ð0E"ž»ÉŒnŠyÅÑÆ�‡d‹ V¾©°*•«ýBJûùëXÍÂ`ºÞ­Ù�mì6k"mEtâ 7$û쿈Ž`-°óén]<—[{ŠÅú™¼¼6;º‹Ó,Ý÷ùŸý#éÌìÃûü<¯Ö»L˜.}ô�þ:Ú¾þ»¨òn*ù!¿as†RYLÈKµû©?ó!ÒïÍýý�Ç‹e/SjŽ"ÉOgÎWÒ¨ÛÈÍ·Ó,Î?R†|Á¶P…Ùƒô D:á碩›'Ãï3-IhQ ^&ùqü<_/›‰VªÉâî9Gú[¯\ ü�—¡9™§¼Hκò�ºt'Ãñ|¦«ç¢1?mÚ¼òê 1 d­ú³êz íÁü:A{"¾¿Zì®é|éðóy€7%‹Ó’ÏL2,p²Xä©+0 ¦#XS®:oÚ"…l¾QÔïý­]8*ª­¶m–Ýée jÏj5V¬°n.0‘Ÿ`à#Sn¦JÎË~©XßP ½ÍóÅ–®ª<¬ô±å‰~Ë»Š“ídŒ²9¬ÑÂL+Ÿµåíæ‹çëü¿èîòí†3îâùíå_^" pt`WFX¯�‘L­¿ëê-ê y„„{{ß­Š'ñ}OKþ œ ³µaêÏÊOæ¸ØC¢ðêôß»$øñ%»ß-8¶•Tì"óE°ŽYÆâ‹€ûQÐîóËŸž¹#ÛðFŸÕʵV?,58¼B<ë²Ó½KJÝn«ÝÓµBʉºNTËC0r‡í#1í—‚H‰&|ã(Æ®Ï×PQ{_Y^訋Åæ:æ^Ùvèûþ^'‚– ³ÑÑÖ¹Ü$ÐήÔ}’M ï�œ¾ÁÁë¼�ÏÄ(ë�!âÝ:º ¬é÷™•T>+nn1×ë Æ5Êü¢yIäéÞ».AwäB"Ðç\9Šb�ûÆH“åÓÏ>mY³ø%U2ì� ^2†ç«‚�i ÃÈM=w´Dh·r�Ö(â©VÅêÌêG�1\ЬoO®É\b‚œœ4\œ ÷js.’?†Ø]ä.4Ÿòîîf†?®@1ZvOÔ’÷IÃwÒÔeÑãÝfýxs¬ÙãàÃCžï²Icö”áG›JÅkk/#Ö¡=œÐÐX¹‰È=‰Þ*j~3dnö7|u2ïe«�Qù´9”!Ðæà"'; ²Z”M±[ _AA…{”ØUúoLõQ 8ã–À‰ûøÜ"\]Õ%Å÷#�k¥�Iy¹f¢fDÖµ€ç�×KÔexYΊ}„<»Õå½T¾s …jT$HònþÀ˜(øñÏÀ­à£qÇd‰ÒÌJ8ó῵‰ï2K•k@wNJøÏ½è"ÈØ¢wrqÖû,|Èܹí�¡DfZ�,I›ekœF·¬Ùǵ‡:€‹M¡óÜ÷Çò.ò: &œ§üþ`˸Iü@bÅD&w|æ´áÅ#~2 \C¸ý+5&_@uû£áೃŒ¤$i&^ô zÏû©}lIqœ"v2œW¡^¡xÝ�î`¸ïáˆRª'¼?œ I Ó/pÑ4‘Õ\Î3MÅn…¾º�0]ʼnðuÛÙ¤’š¸âçç�å�i’¦ íz‡ðLÇC×4£: 7w9*£/J7��tú‘h³«'…´Nx ücº�nx Ûqz.zœ˜ë¹ø¢¼'"oõ®_þýá�,äÀ!ž�VÕs~Òû:¢ú–IÄûÒ ªr•ˆÞ¬×IÈXùTÍT¹r0¬E#×2Uo I¿Cï!X~ Í�t!½|ÀÁ6U~�í`GÕcâÇ6žò*kO‘ ÌEÉ5°:tî“Ák€Ó'kë- ¢f±ajãâ[@1øœ�µÍŒ]eÖ ³M].1+rŬ–¨íÊK-ÆXL×VÔ„¦äX÷UQhéZpt”S—4°©Ï„d¨úô„sÙD�o­Æ¸ÏoµÎE’QGÐ*‰ŽÃâ3‘šoñ[ã¦åûâ?}h®[oV^I_lÔ¾€¯˜v%ô²Gþ™…—â—#z(ó4 ešq0ò‚Ò…QÀŠ5.ZØ� QL‹ª‚êò1B¼ÎP»Ñæ,÷ù�ǽù¹M@ìã~V²@©ò~`^]‰¼'$X8ºá€»O§SM›¨pÚ¥I[»“uÌÓ dÖHD6¦CXb´¿"]@óÁˆ“7æ)¢ÐôÐð Š7 T¶`·Í¾I·ãºa4l§�%`9”bH¼ZŠoa�ï¶UÀ[Þ¦6àéÖf(èúâ…ó#h€%,UäÐÐPñ;‰Ñ³¤ÕšÍW§'Dþ É#ŹˆíϽù¸÷�PÛüZ‘G+fF+—6¦¯¨e«Ûu¾¯AãY™‰jr—èb�#”X1”ÈñXçøúòòÙ)ÿÄfÁ‘ãÞ:áöÐÆÌµd^ŸÄqÊ¿´¢¶ïÏEa^2­–.q³ <Ê^Z°<¸IeFYφE.ªƒ¸Ów©™2Õá§³ºL,X¿”ù¿ÒšêvÏ-™À<�MdܬڸtÇLºG{ª‚£!Ò)@cK+lسÑx[†µõ\Xy«>¥˜ª×-{\�¯�’0R·œy¡TÕ ß4gØ÷l�±Å)ï@Ó¢4mŸ†Ã7 0W|ØÂ£mâџŒ}“F*¿Û+óKñSâvÑ4ú±¤ Í�HãeïS™#¯¤l¡‰ É]ã9"Õ4kJØ$™ð8ôp(/¹Çí_Œ9&¤LYö-ZzŒ‡*k·ð‹�&‡Y\Uw)FöHÙjõù@±¼Ê¯¨�æ!á�ƒÀF“†uÊd˜²�L1ΔZÕ zõ<=5D„Ű¢jn6ø33ªÂ£ÚU[Å·æ„:f¦ÒƒŠ�‹Æd9“`täW­j8 ¸¸ÒQ{ï“H–2LwÒ�4gœÆžÈ£˜«ÄÈ“ç– ©> Z½ú´pÈ׊É}¿÷³áÃiîé©âêü“ÔTF¼¡eæT×UZZ‰?;ÕåêUkft ȘE‹ÕZaº�;|†âMÀë½ÏÈ÷ãÐ dØSÎVh™�¾”{­%e-€›fjÛîò1ªÊ(¡éY�fE‰‘a=Išþ]¶çÌ48ç>Ï!8‰Ñì\®éXkŒÀ@¸µ¶èazÙR4¶¯â2ȱÔá–âS‘”•v Nº,nnùþº‘¬£5^�4jêhÚ�[ lÞ*é[Ÿ½žÍ%µkœì„md¬ºë Qš?é6lAcQÀ.õü *gáÂC Išµßœœëâ$ÑÜÏ7"JIãßáŽ÷Ç�0 ý† Uf7—%øu?Q¥´rÚÌÁM)iX ÕÒ™Ä�#íacVW•™Y,K*Œ*}õz"�óDMPsîET(�ç B\›jÚæ—£�J 9‰Dšüi™fx`éaHG^Ç^v” S>DÂYxÙ’¹ÈÿMðç­ÊíÔŸrñ>–ý´+OçlÈŸE/#Þ¾æl悉¨8$z¥¦èЖd?�Æ„YpC^KœL¯Bü®y®«ŸÐ‰¶qœ†ÜG”‹ZÏùg¸ê1‡.gÂù‘f�•<žz ^¼ñ\»œÎ´sì—s¹lm(‚æÑšíÚc•Š/Š©í—>,„oëôaZv˜§ÚmÇÞhT^@Økñó‘³QÊĺ�Б¡�£‹6 ´××—RÖv¹)8ÕóØy­ÚúÐP=Û»¬:áRõ�îæÐªþŒ¦û~ÙÜe½0zøâ‘–òÍÀùN(†‰£ºv—K!i¦ª­óÌDUºÆÐ�iŒ-⸕ }Ï^$¯Ò \0³ˆ?8Þ,iéÐþv™ÈTzìëy¾>Y,œÙ| €¨®G›Ôۣ܂°»®Ù»u›ê²I2 �{7ÛíjsüøñÇ›e´yÄ>ËÕ‚=Šòåc·n3 Bá®–·Œ@‘>D¿…rÈŠ{vUHºUžµPnNÄç{oäç•-,RiœJ`¶kï7œÇ,‚ö@ªŒ¼MGÜ UÏ1¥9×3íÚ@™¸si›Óé2Ü(†uac±ÂÏž^Ön™éÍìIÇŠµüVZRB—œE €|”ÑV+TÂKÂÓÎ0[”·Àtð!]¬9ÿ¸.F¼Ép¨‹�Nî ÊuýtÝ…5ÏÊÚh¯!Á��ZÂ.6Ë M³½«\…Fa!î Ô,;mKXŒß i–‚meï6 €�Çò}ó`„AÃÈ|¼ õÉžYpÍÆªBÅ–¬Ù¬V¹‚2™l]?øîÀZÆÐ÷`r,Øý×zg3¯tÕXa›öÒ­»­Î V8p•�è9µ|š`Q¾½Xç[&ÛÌ3r†{ïÅ®AÕÏÓ|x{&Ï Š}¨ ¹'Ù®¾â¡<{ñßâ@±×9(£ê<_3C§ìizWËäµ/¦ö|‹å‚E†}�gQÉËžÎ8d;ÈØ¶nÍÆ·£5"Íx¹]=áýM ÁŸw˜ø�­¹ ñòÜ<‡ºÞÃTÈbòýÌx]{y kœLˆF§ŠÛŸ¢IS–¸k:áQvóÈ?¾„ÎQ-.kzŠ;ÃgÊS’Ô¸ÀªºóBÖ3m:ôµh‘Bo®ÏA^@ý«±e¼};Vr­À¤Vkå­¢¶Œíé4ù^I`œÓ/ådÍѽ 9( ü Îd‰Ã.Óúü^’¾Ã²ëpp�Mï½fãfz¾nQ´í¤Žb]}¬__Ÿi‰pÚ­Yœ®yo¼¯Ã£bµ•BûöüJ & øX¨)!7%8Ø$Êå=ÂЮմ›[¸S4&Ñ~–]— s\æu؃Ìe�PŸžYjçµûÅŽq·æ¾”²ò§QÚµýªÎ"€!†¢Öd—Gkº¶… –ˆ}Ý{n9s”¾»Äƒ•«˜r4œC�³§šü”,Ì�"ý³}@Ÿô©¸@™´xûs”�ÓU×! ¡Ç(o¿ ÍÛ¦¤†0·]§¾§Ç‡Ý-j犫ŠÏ³_tË'pçÇ i%2•~ÜÌFi£2ëÝ™AvLL[Ã]M¦—C†Ð,õR ‹“³†êºR†’ ¯“¤Ýqj‡ ËÔNwªånT°áS–»…@؆ ß¼¨Æ‚�éÙ»}m;I­�IR¶…Aß!ÁRŠ9ë…¨³-šn™ÇL ¸é“Üu¶'¢idUin):ÎTåk†yå‹�¡¯Q(œï»øNݰP"À¨§l_NX«uÊvBÕ™–îv Šô÷ÕŽ0J¢Zú†7†_èPrà:ù‚r|°í:�ˆÌoÌ+þl P²,ÝæäºÁà ˜Ý!Väȶ­…‘*lCm¼YXý·—P­huPñô"’/ÓeºuãÈÚ‚cJe¬aî�5«¶×.4¬û’”»Ó ]p´c—wèÜŸP2÷½Ò02Áq,òkG³»C�N·Ó¹¶¹FÞ˜ÇÀÆ©~¿÷]±ÇÑ`8ö½âcP­\ëÓòZgÏOF½ìáR@˜q¼ޱ(I œê‰Ý*P@T£ OÑÛbÂÀ�ãP~¨�]f,(G˜Óò·Ÿ%1/~!Ã2u§ø;Š[ÓúX·˜Ùe¾¶µ!%šèëuz�fÁâyº`›§Á­[„èî}M”—Ø]*dURZÐiˆQhD'P£×éR¬â äE‡=õP× Ôå' ¢÷»ÕyðIP‚¨¹ð<µ�Šìª!3Ö­v ®M»@'!`0�C^GkÞt(l—qBq¸«[XOÎÒˆ]Ò2ƒÑ/ãúHÕÂîë= °ƒŸk�&Ì[×¼µV{Á5rûBO=ZVgÁ{;çkö|�/ŸŽi�Ïm½::¬Úê@æ#=l½3fp©žÈðë7Ç5ÏUS$%ØïE(~+`œ×ë¿ì‚u�mÓŒ€mïRãöÿ|,tGÎt¸' Ljç2Ñ©�-˜=òñ‹¥£½–M2á%wœè" zÇ(ïFgVÐ(ʪáb1á?¤7F±šPB¾10=§1Ïx¶HZ >w×—û®z±ŠÂãD0†2t�`�ô\ö¾{öò9y5hwŒDaÃ)JJ­ê¦Cf4†÷¨=hpŽWó:$$d§+hÚÕ„Z-CÖü™ï� í|í¬ùƒG¢9EA�Šà…Q£j÷±î}È—ˆ%v¿ðû Åù³Ù% “Qk¶pÁÉä1[ÄØñœWhU1ÍÔpÉýá®tHRètâ_ûtÚvC1yüùvÕÌà«Ýš=L¶+[<ÙE¦â+-.B›­YÜNõ¡Ö(“Œ9Ú´%“Dgòukמ££È¶¼,e  DÎrÚ%&À˜"A%(«o£­å-1òlR¹ý1ˆ{Û‰'ƒ¯ÈvÜ·S³ÚµÎ-¡ŒT6„ÊÂ�§÷é¡çjº„ë!Ú—^‡gÛsèÑȵ,2ºÝo…/óÏx¿ü:PÎ[)Ü®ØzSдQk{¡>ÙSϸ£¥R;†0˜ã I²™2"µ³ê|À³ 0<¯%éË,<·+›WÒ�š¢ã]À²è`ãD{Öz‘*UAîàÖMÌÓ@ghW5·,SQ0ø÷IVÄÇMØËxó¬}ñC ;F¡/I¶‘&¼,O÷«%œW‰ÚŒ,ß§®õ+2ä¼L¥mmŸB¥<…ŽXív¥.Ó¾¯ ?Cnë/ÓÿboX°à�à.«ÒÀ*[“t ÇÚiö/Ól÷I莧7AvÍz*Ø…Òíýï¥x^VUDë�0æQÔd0Ö Ô^‹âP‡¤°»ä̤SÁ&L\5™bZGøêX�t�G\^Î�ËT—s¬Ò¸ÝiÄaËåÄ,‰'šD¤îÀ'–Ë[5× Hù#žü6†Ów€~¤ÉZ/VEñ•)løžÔ<;Fí2_æU‰�\¥N‡ø2¢©=R é8óÖ�ñ0²Î &£^o›8%=ïwÅ�™²`q»I &â-Æ9QíMzysñ“2©ÝD‚¦"ûšâvz”Ñps“<]Ë“ŸÞ°ÍnaïÙÐ+°Y�µ´û�Çúöm.ýÒÕNôiòìSºq4Œ#^ Ù3^ ‰þ­¸—"²ãM«Ê—­G›ÀFh =ÚvgW¾½aë�X“Êb†2¨¨ÄYžËÌ0e· )Y¯ËíÔ¬7òÂÙcÍñRÑüg_RR]¯á[6IQŒºZç€ëu|ÜÉÖMúX/{T|'ÞE[n(|ßGÜlOÚ3" d ñÉVNH[i�ï�¹˜ñf•�o]¼ºnÿÅ‹ ÍûUðHÓv–™/à8F~z\<æûZŸÑ‡éêöy¿özOÄ¡í_&ÉoŠNÎߟ—\¤­nVgKžÆ¿½mU>dm],p@¡)\;É«„Z­¡d•�â’ËP2„ÚÜ�rNŠŸÌìk¨VØÁClfÝ·p¨’GË{ªwµ0ZòÝ:b§…¬ß-á,î¢Õ®�î>~$s«½Ó‹w=SqRÀkR '^µ¦éqñS÷aÛÏÒ‡ëev¼#¹ÊQk]c«Æ³özjm�s/Jz}CD나ç÷¤ù7?ݳǯrºô8¿�Óµ¯5~¤ÒB&"l¹‰nX¼[0¡‹:˜æ¥õG=Di¤Õn_”£îè¦îìônánÉÍÑ]ýi-q°6Ͷlý!pƒ¬º .½8œ/D¬Üyמ$Y³[âÂÈÏM3|§¢àw8¶åyÔþ#cï]ãÏãa«0¹7vÇt˜Ø )vò´ØtC"ÝÌŒy' 4i>Ó£ÀΛֳÏìTüÁ÷c=;'ËŠ—,Øn×i¸sÈ:�ñò5Ïg<ñÒ¸h©Ø D‹ÜÎ wCÆ¢)ÉqŒª4 «€ÌÅh Š/± @‹-©àP?VI8UijÍnx•HÙùYP*i8ˆ�{N™_8¾cË ]´ÉV£3�ëõ63ä ¯Öö`(¨Ù`€�õÊ“Ñ VsUü;µÈw믎_$ùh®DŒ™k@tˆ”µYM*Ø×'�(y tqhA¼L³gò‹—,z柜mÍ¿îÊÚÔ(Ûº�ê“mFÒ¢G¡0Ya1hs‚âïcÄEØün¿äpñ°Ù~á°¼*±§¥ƒ�¾)]\Ò÷ãOˆÕ Æ|eH›ýùÃçyݲñ ¥ÙVÅOÚ” í,tñgôµo‰˜rXøe\�"õKñ­6}§ E‚�È_é1Çt*KŽk!é·hö-èã×Þ0Œ< gÛï\�‡è¦¬òì‹vÛvÑЮ|.•qäû÷!/¡Ç+þLÐO€Ò2Ѝmêt·½º’Ok^85!º÷ì[:lñ¸µÑLð9�ÍI²ªÔ@8} €&™”@ü•;aO°|F@–£Yp@|zøó”.DŸ~)pXäLDãÂö‚ï¼D²h<C5ãan¦ˆIkSêržä”Á£èÞÇ8�ó¾,¿ã·?FNùàºÜe 羂€›Å<¶ ¼ê ¾[ÀÈè�!£I ¦ü1[QaCÜ[>#1K‘ƒ«®Uv“„•• ¨3—ëßz€P�—¿�ý5Ö ´/Py»Ù4œýB¡àŠ·`8ùNe¦ Us�¨ê²âFÔ:_v¨X4à‘¯Uš.{تÁ2s4¥§Ì aÖ…R^Ì»¢@`eÂB�øøÊp$Ü…»í¶¡øh\Ct4º[%ÔÈi,0›¼q‰øÕDx N®¹PÁv8fa±ã‚ȹu’tõID�M«òåʠͪm`±6¦²ßº4ÿ>çZ}áëÄóÆOk(þ.ÖqxÉ%¢ ñnãì+�ÌgV:n¯}šîƒèäf Ia”{‚1SÉ>‚²ÄL‰/oOLÔˆ÷{^ÿRZÝ?âP¬ô5„@;�‚ámì_üåãà—ØM$”¨¾-üÐÃÉ**³oW¬àÒ©|•ä»,n:Hgà± ÜêØîÊ¥¡¹Ç}òÁlùTñƾÇß× WPÉš“*F°·lÙôëY«¹Ù»7/í'ˆqë»,î«Ó?�Ò|·¹RÚEoµiPðÕ¡ï·Yß~¥L÷9� óEº½ú°[ðØXÓ cë?í†dGà"âÞÚhm°DD2­®“³‡OøþÄ·Ñ¥0rÆbýs�“æ{¼ »|≄©zEG‰Ñª¾éǪ΂�‹Juªi&ʬØÕÇÕU$Z�Ñg®2•÷FèÞ€.ûu�ÒDQC{žzíEö|·�ƒB޵#û˜Mþ‰ˆÌÜ‹+y»ÜÕáÉË«Ÿ®²|{UæÝK‰r=˜þt„d[8DöðÚ� ‰ž¶™£zb^r¿½Uàn ^Àu=F•âÇä»Í6_ŠÚð4K77Íʳm—Wf‡PÛg<ûc›ç‹mJB§4¢á—Ù¬&ðËäwH^™{�(�‰P¸; #¤0ª@�À,*»&€›ÑuŒzošØœ5¦â½Á FlÞsœB¯�átãç- ”®GÑ�ÀÍÇÕDNùpi0n€A‘U¦9;׿�êÖþ`.·Áº…­ÒñLæžH°žGáýéÝ•}õÜ6Zugâ5ª–”lü´�…·o©ß×àêýËyO ›ûòj½ ©‰þðŠÖ¨�o¿°a‹4Ñ�.–;nB‡iŒW4aÐìwËw¶îðR°ÿ o`—µ«c;Ü;§Ýá•ëJìƒËbþæöQûjˆÿ,o£:Ìv/c×sìò2îÃÔ~ý¸ü >°K¶Ý¦Ù5•á�ª¡!¹Â a�&Þ(/»ÝEQa^cžÿ%A€MSÂ[Š*o®«6 �(•m¾Z±ø’­?¤QaN_ïÒ˜*@Pá.æ–®E—µ†bï¸+:®+—¾!"¾À- Œ¤ð² Üo ²B‹D§™hoÀêy“2J¦žeY«êkh‹n¹è­Ú ‰Í 7˜¡²íµ²’šF˜�fÑ»8KÕ2Ønƒè†'ñŒêÇ·t [�Qñ(Z4g¯ž¾|ÕØÝ­ fYú mS¼Ñ<¬Ê7WØpL…¦!Y³ô¥^Ý{õúÕ³ž’xÝfl® iÞ±‹š¿-3Ixž€<©O¥UÞ‰ò†úSŒÞ1EåäØïxì÷ Ù' aËÚ•2·ÕÌ|‘ÞB˜`(ü�órY¢£†—@–°ì²g•ÓÍU=³€Kß°&1©?÷åH”Œß5Œ\gznÐq×JÈé;į~øŸ¢vãþ',ñáNº÷�?'ÆçØéD#†“€wM–fˆtxò�.m†òúZŽU‚ì™è <Ïs”‰fo®EeAª„ò£áÊø@§_vÌK’�XK3¢”À•·m�/»Þæ¾TÜP�h­4§8'/ëöiþ€‡F ™Y–‘«l´Á\ïSöj¯Ñ4+Ðf#$‡ù-�`‰D&›3‰§. D‹SÀ ec„Ôáz“gÐÞdÞ€kQ÷ÑšSêµU:�Þ¿ÍOóÕíÓ¼¸ttYÇ6ÄOÍd®O G&&‘}4xSìhÍc ’Š-‰—w¯Nb¢ÅÌ$™…ǽá£Ñ£ñ#x#†ð�Áã‘úwñ¿ãQñ¿ãqñ¿ãIñ¿ããǾý·Ç�'3a�KG*n›Ýð"¾Ë éØ;áJÒûÞy3ÔÌKvä Ô «4ÄIä"6`h�•WAõ(øk}–1–î4h×FáÞPÇÃ�†¶‡æßñ-ÃŽù†[QEøüxqé+¢‡ª Õl8•±¢óÅ”DãÂ}>”é=Ó¡H”•7ÈÌ/èÄÃå›ÇYÑJtUQÝ.C�¬6&ØKŠµÚš¡ÔÆ@ÓpdÞUÚ°4L•êyY;³�²2ïd¥�´ÎÚ¿PXÒ^prdŒùtߨD³' ǹžoVYˆéß®6kÛrƈÓÅ"ÿønÃÖ4XÔLO$o,á@ÀOŠ}Ù‚•žº‘l~0šëÆš6êp 6Ïß§ìíÖŽ�"~Ù{ûö¥€3¡±ÇbTyÏ€²'L “ïs܈zÒÖ HV�3-J›‰U#£ÃHðað*‹)}}óîõs?ò›úD ®X—ÉòíkúðÆÎì~œ)ï !­…‹·Â"ú[2ßwZåá$]lónX°Žnž�.¤;d¬'ÔÉÆþÔ‚m´/OîÃö-Z[PòaêÞ’ZQãV‚7¾bë4�7—7Â1µÍI´” ã9m›£?¼éÛ>Vü¸øåÄþˉøåˆøí~=‰íßåjcjÿåT˜Àr'÷ß„6hö†½ Ð µ;ã[“Ú·¨m_Õ¿GУ>›§j„2¾5­| Õs‚ΉØ`†äâm�1 ÙÇ%iÇ1ÌfäŠÌ9ª—©„"Îm·Ñ覥Px qàÆ@ÄØV`¦Ûn§" ¢[ÊÃh0òñ·åX…óÁÒÒ¬¯çßsNdÎ=¨Àñ$ÔW£Ç£zv½ÿÙÿ>{”Æß÷{¿| kVäY�@ˆB=ö›BßɳùRì?‡þÌ,ã€?[¸hÇ‹„©Q˜#û¾4÷~;ªØOõNq¬É^³íF®^ °¥û'g ‹ Òë†)Úݤý‰1�sD&„ ª¨pÞ“*b©s [J+~]5>øtó}a7Kš�ö¿í²àC�.„Gh�z£r³Òª©Ús™£#> 1'î²2+E'�† ×ál꼪‚wÜÍ]Ü$J�¦\Æto:{¼I¸Óß­DK·™Ì§–3ñ^ªö˜«â2î0ãSì7g‘²ÓœÜƒÕq¾J3ææ™”Kž'lQ×�8l¤jµ‰G²MS'u‹Qª }�{ïÞ¼,±®T–•ªV:n“(�û,W ö(Ê—�¹É¡K%ƒR"�™ú°%2Üêó*ËZ𗼇.ù<šê{_¾òÝmµ�EÕÉòsz0Ú¨§¢@´9ß}ì'={ÔQÁÍ(_�‰´-Ÿf‚…Ý7_{à $LØgóóR×!¬AU™©ì¬^EÓÕ:o²„;ˆü²ÑØG¡–Æ0®|9”fÀLìhÊ¥9†Ær�iVÍ9¨»²%"Vó:D”r‡w�Àü�Ÿ E2†µMfú�Œ|Kä�­#ø@Ö dËJJ ­Œ‚p¤[ö«¢²òóc/Ù|Œ¹l"|á!3©ª^¯ÇËt™º„Í¿zÐúÛ†¢»h„T@F¼‡Ãɬyw¿Â-¤þ=þQ ´Ò]0'"#!ú=9êÿ®ä({ ¨¸/¿½¼©tÕ0þÙ…åQ“"+HZî%Kk]D=%•ák¦lý·LÓù=·¤!·¤ëÓö{rɯ‘÷UÜGwí�‹"–ðóþƒ‘hRËq•>_j©ÎËB¢£Âx$þïñ¨øÇ¨8Âã8œ?öÓ&ÊWìEJG][ºº«.7 ¬àa+ÌF"Ÿ³øç¤lJVáîR‰˜(çÈŒH)pžÙW]öoR�½‡~z,äéž0ò+æwýžäñ{’‡úûïI¿'yXfú=Ƀœï·™äQƳtu¼6cé[q°ñ[gP�Ê=i´œÍ°º7œŒ ÅÌÌ%(ëË¥w·nñæþžÒòMSZ:9[Žu’Ë�VMs)çÃÄ\(~î£2|Jã{±�Çf_|#½§wkº�öo8wg·º^¼¶`ÅÖçTŸóÇ¢o8×ç?ߥËÕº0@i÷ÒëŒõN9dFOB ÿbAöp·â·•e,Ừ߇øÝކ�K4u(x�¶ &Ì”@SkнÄ©®´P[ˆÏPŽŽŒ*aŽ ÀÊ�Ï€z�1­¶6FX3z®ÖFnF54�K�pŽ˜9büm–_êŠòI»!…™%zïMc„w%kI,Øgê¬ÐØ”îÜž—¬|’Õ9›8RÃêéI踓Ÿ¾ïéŸ×¿ ŒcdDÍÛ\ï¾ýæ$+¼t½Ûô.»�úäYÖ"IF£[Nãa™aW9ßò)Þ�5j�Ä�Ÿ “iòÀ`?K>òôQâ.Û¸i¥ŒÑ" †‚ãQ+™ ±‡Pa…>4 =xîQ_Eø®… SÏÜ€ðÑEI¤½¶vÄ•‹T hÙ•5'æô˜êSð�”ñUþNz?K”³ž3ºãí‡ú%áê"w ’icнï{oX°xÈ=}½‹u._?ãÝ.”ˆÕšÝ°l“~(÷LÅYy%”[NG§ÞS;Ám=¬=€Zð¦6gát**ó„m6Å„Áâ’†Få°\Øóê±éD™-`´Oé€Å¿-8Úƒ  q=(@q{ÃQÄxou³R}öË®Þ}{Ü ý]$¦ùãP” ·À6_=ÉI,U±¢YCÃaávö¸[¯LêÉpMíUR‡ð"¡1óõh-ã…Ò=Õå[‚ú9ɦKu�$3ÊñÁ³a/�Jý Å¿…±“Ýb¡e !9ÂJÏE_–EÌ]+k�!áo%“�± )fˆÎ»ò¾ÙN¦U« SQ\ñø<·ËC3ü^šˆ¯ãþ×»DJ?â*­¦$cøž¸“Ùs ^ÿ‰ ôp곓K‡÷BôGÄÃ@.äTÔõxÂðÃ"XÆ+¼1WR¼Ù¤º$#D�•jF4æú­�kE•'‡^åZpŠC±w–`³™zO°’ü+ï}ÍV»­xÿσ,¸fK"€D Bzñ�'ò™Ô±ýYŒ»Bù~ï‡<¿^Hø xœJ+ìøi<]Õ „èïb¶2oNÕÀL©ë—+ò’)oG1MJ?�ëe¿ qÝiCp!Aê�^…kŒ`²ø$Ó— CqÖoq±cN�J{OÏ £uª>-stPØŒgÝò@_ëOz.Ðè^þ]ö( –ìH‹×¾R3ûüÞõ‹òc{1K å›õ±ôBJlÿ(ßr`‚~ÿ˃ïûÔ–¤7ö{oF¹ió±Ò÷í-6¼ÙÁ]˜^ÿ Áðâïyl3DzÙ£(ße[á\÷�™ò ‰(›Åïd¶?‡Ë6SßmØó�ášœrÎ>P&ÖÖ„ߏ?Ÿð?Ù¨ú[[©ªAÊCOD¨FH‚µ%ð-*B�qÀÛ#ªEuæéèæ8u’yè8ê´Ñê“Ì¢BáuêÀ0â¸ÖOyeÜñgñ¯�f?#_Ý`?·¢8 }�ª>Í7nÒ´Xß–~ìã;Õ$<õ’ÅWÛü*½ÎH L³Ù|îÛb·môZF¦²Ýê*Î3ZÍmíj5ÕŠe±ÃoÜv6n©¢Q!»�‚F3ƒÂˆ»q÷Ú÷d(á;8ÿÕZ6²yνéiéic ó–IëÔî‘M$£º-ƒäzä«d�/ïŘZQë0{¤ ¸‘;ÜÓÁs)¨)ÔdOÎd§©ž»]IÀ½?$}¥~vß…Ýg1ZM4eÑËøÇ.X¼°‰Jå6Þ²=&X3.�å „Aôžæ²½2ÿ¡~g+ç`#Op�µv¡Œªõþ&«Ë×éušT‡æá•ø{h‰«B§…F|«–p��ÄÀfªh¹ !ÖÞRìu!¨KÇ1“…ö8[W3Ø·?�£ro¬ôñŸT 3Z/@ttø`•WØÞ„œVƒk3éÛDÌ×VifiM¤4)]E‹�¯¤R´fÿØFàæjy›‚Euµjpœj«…7£š¼ËÏÁ| ·^DÚš½ìucÌ%ÞW2Þo ‡-{®î«ÐÜòõUP,çv“R- ›îoؾÍ—¶.ÑÔóæ%·î$Ça•<2ûX$Åm¯Ø§Â £æÑ¹È 0½é¨žcYŽW˜tªF9 vTÅ™7æ�)Ïg<ªÀ£‹¤GÔƒ&}¼�îƒ#ÙÜV®¾ó¶¡é4Qº®ÜI(‚&iñnn©þ‹Ø4‘5˜å7œK0›bÑå‚Ä£jTÏVÙõ7œZø÷2ÀŠðç$ñJ·ƒ™Œˆ‡ÅÞ™Ùã(÷¯´EpGƒ€;.Ìn5®âÓNÚR ÆÁòd>R‚› ¼d üV¦é¸9Þ`4Ûñ¶YB ¼)±B¤¾�þ’{ÊÙh,š”aQ/≑~8�è¼½†Éšc­xP§SÈü`é  ÄÁæ&Ì]e�mÝR`Ľ$…�Ë�kì•ÖÙ?Éc[¾½*u“à–;î¯dÁ«e¯ç]̶…úIEl½×WF8$ ‚±FÁQ~Ñ-ý��%–3jY9gÆ‘ªõeÀ#ÐRªSBå÷Å»·å»ãn¿³-[>Ï×K@<¸;‰„ß¹¡ü ‘½†2ƒKÄNùXO{~[¿uvá¨ï¬}úÂÑ·ÞK¯öõ7»ûœ‹"Ù³lÁÕ½»pQ¨§äRZç'˜nTþd¯sRʬìÌY‹a?Þ8r¾bЇQ ^¦¡7Žûå( ²ˆ.ö¨ 7A –ꌓm:4NW=:¸±ëub4ñzšls fÁ~«Õå–«twë�#'k1Rõ•�¸‰Ï<h¥a'pžÖ‰,ß’†ˆÕÍ‚ÁLâà'éõñÝ~½ÇíµmõÌ¿º}�‰´~Ù³ÍKÞ¦ æWksY,9mç½ožÖÚÍ´ÍBŒGI((ÙŽ{°î¿,Üj×\ŠÈ3ª (¨¼‚Óeüý)ÿY¶ekq¶›D`ßXYésñÛò±€ͲÈGú¹ÿ=�_/ í䕈a‡ ÑßæŠç,nŽ±È®€�Bºæ,ò‡öƯE³ÍŠc7” ©Ë<ÆdgþWØDsY1|rêÉœR™�pzù¼W ìƒSËà^Ps�CÍp TÕaÓ®Šë],·Ð_oIµM´ÉºÉw‚¥Ñªª°úí[[�“èÝý‰·îâZe°xI—=‚HžÃ1ømû‰½[-rþúo�J›JŽB?æµþÜ’ÇBL•'ÈÆ”–f¨ o@¤µdX.®ÿ‹¾HàHíèÀÛm¯¥é”®bË‹4Jó]ûÓ§bU ”^³è†Ñ‹6ö˜ ô�‡ž!1Ÿ&„ ¸.Ã`SHö,.ì¬íõoJf›Í™(¥|¬÷[Ü) G &±cE_Ù‡Òžód^Ÿ´£Eòc—$¯³q]úztX[÷¹Tjãט¤�ú¨¿‰‚¬£«Él®×Sƒ×·.¦É»­Í]zxQ&Kôà Nänóá0²u¾b*Nχ|âöÞ/U-¨O]ý¹ü]ÎÝΨ;tçØTsCºj`Ô°¤EµåüKb(Þ¹u³aI�‘–û8ôD;ÀyªŒI×Zùà-”ù‘‰[hIùÍîàëy/»,àÛÒð [(6¶íîú7õË Ñ’B}Ü" ©Ÿ‹ wnÒöVòP`ÄMÊ[‰™}/Tj¾WÓmt#aŸ@Ž¥2ší@äé’h´b Õ‚mÞ?”xèÅ¿è·Â!X­·W†¶ycS‰†z§ +Îî[o4tY–òä—q¨YDzlwÁò!G¥>´Óš rh6Šç›_øÞî; vp48bGwž·2s³]?Üïm×"Ã&ÞÌk_äºÌÆœÿgU7,MÌ÷�†‡Ú„Ì7Ûkáó‘l�U[¿…>e¾ÏoaÝýïÓ’)úâ?}‘„Ôz3_´»==€0QÖ¬÷.‹ÙºwÂSoÞ÷Îóàlì‰À®« .MÈA‹‡IÇçî7^áæÜh]—Õœ1ЫŽ/ðÀ—0@ªñYlÎôíº"ÖÑ—XhG�Þü¸µ“å¾l×ÎÇR%}£}oϺó½)Â�ªBH b‚­É’a|PœK„`Sy‘ÍØ2²óû ×@¹Àj¡Ô`™¾œD(ͰýBô_k ]¬†“¢ÛÎ_zÝ˵+¯»Ù·…¾\•æ¶Öû«Ï-Øg�Õå ¯R˜ÔPÀ·Õ¾DU¬¿}·v—{µì´.3|/øÎš\½aîÆ‹¡ì³èžÀŠCà=TA.Wo™7ý{’èïI¢¿'‰vLm?¸£[H{Ü™êZ®’"*%¯ ]@*;HŒ0ãʒÕ"Íôžë'üÙZ¿BýÒÞ‰€åP´Ûm’iÍ4Z�Ni¸šÚ˜ xµˆ,j¼ ´÷K—í”»o*l·Ä×û)ùÍI­gŠ ­ßr'®â¢eë×Tq‰Û|6M5sŽØ˜šÚ)µ[ÚiË vŸšÓEjýÛë½¶L»N™¥÷ÉÓú†ûhʂ떰¹O‚é·K'mŸ<Úœu¹ObèWMm—ÍyP¾ªfÃuIüü ]Ç6îw;Ú ü«]ÇâºÞ�6C}Ë«a[OûœÌ½30[ç[vË®ìžKY¶é€¼*@Îuuöžù“ûdKvÌ�œ0Àkf>wdNºâêüO™wEy–jNìµ?«ô¶Õº!˜­.õg,­6¦bý\ó ÃÒã[ë*ý¨®¾l Ñèý­ “Y<“ÿÞ”Hz¿Y[‚éž #‡.L©Còè!RE;¦‡îcÃŒ-ØÉ5J§”ÐC$€vO÷Üá²S¢g[M^ɱÄ�1êѰ†K�ÁØ10 nàe.–£”¶é´`½ÖòB?hn*ýÔËÙÂÍbosÚ*µ”š–ŒB0œ`Ú.�tŸ9tºA‡ÒC'Œ*¦Ö‘ÃVÉ£‡Hí�zˆ4ÐVIŸûfvNèü¶É�]“5•Õ2šaü7É0—×*—±]æbË\LwÒ pv“Aâ£TBcý[xM0äÑýÎû„g…ùe56Ô¹Ø0¶‚ä{&‰ê.MîÑaõºJÕ&M´ž¹ Èò*)Ô>r«4QûÐ֤Щ}š6i¢û%¶}ÅÔ5Ûd¸åÐÓw÷@‘T(QÍ)›÷4¼0V t< Pº~JÙGtµ¹É?fÏÓ5 èíêŒÚñ|6ŠÕ%}IyNß&ý/ö}ÿÇ'óõÅ£’�� Êï‹ 8¾²€Â•7êÝjËã»`·ÍOe ö®�ýË«!I Š�\˜ö�’V�Þ3K8sÓ�@÷nnî�ySF�¥:´OcÙ‚@bCDT ÐЭ—5-ÙÜn—ܵÀ1Iq¸;À’Sµ´Ù�Ç‘¼`P “:6@5Õ„ð6�&¥�eÂx¹`Ü�ߣ8è`­Õ0íJUT]:<*+ÆÀò3vOg“›ûvR%þʯF<Ÿ‹?ÔG%¨6¡Õ=Å]wÃLöã£Ï"~^óa\žÑ4äHÚÓx0QD\vàl4ŠÌ•�[uõ…†™ãié6uß©~Í‘ìcÆ)†ñx¶´P‘Ï 8i‘¹8Z‰z£Qõ6%;8’¶á"ÈŸ'ôÀV½|öºÚgZOr¢úãAÉá>åÔäÂÛ÷‚ò«c£!¥eéGÜxêð¿óü{5í”`°(ö3˜= íç1ëJT !ψ˜ÏxÇ`_ÔŒ<;WCΉ+/X|>â�õù.-H~q¼CJ†–løpwû*ÿHI„òT¹ê1‹ øÀçfC´[¯ÉÞºô¡¯po[>† øü³ªËHwÅå/Eãµ´K~³±}Hâ*b ÀØ›è'j´ÈDÝWÝ÷›|ÜD¶§Ñ\:¢ž51R0°K®ÖŒeÏêúš„ÌTÃI®ýû-{†–H§Î>ÂÀ q¦6ü™”†˜îÊôBÞ±¬¶Þ€@‡ª�±že݇ҡ=¯H7ï^×6�”¼ Á(Àý†kVž 3?œ¤nf†¦~,BAlìäñ •Ê%ˆ»@3 zÏÔ-ú¹â¼|ªÞ4ûãÒð"µJ´þÐð:¹ž’†W¨�j4I8µx|î7* ¾ðè]²f›]foàŸÍÊ/Ôïó˜q±·…±ÚdŠdy~u9´òb·ÌN•DPËév‰Yb«|ȬXòf·Ø>§{éMcO4ã™GJ@Äa%H'ÍbL)ÂÑër±¦f<Ë^r×8ɬßw�L¤Ãm§åó2ºÏ:õÑýæšÁp÷irqEf˜TØ©ìÃÜì$æ)} u™Ü8™Gx….¼ï#ÈpbŸ‚åjÁ -qÙšôðÏÄÇtî_©vu"ÄF�äõ™(mÆ‚ð¿7%ÎV´½ê-Ædb˜áú2€Xæ{s—º2Τ—k®9øD�PRI¤Ã(Ñd�âÞ;}™’­é'Œ'«èªÊä]˜ íñ£€nÄ^45´s¦{7éˆ`LxƒÑdßus&àì,<.^ÀðØpð^Ÿ;Ú×ÛRó°É³Á¦‡ÅKo8ºA{óËüÊ]ÞJ3¹ÿ¢7°ho)SY{nòÅnË.ÈÃÓxêëh£ÑAV´‡£æHæ ÚáçhÊâ3tñ(ˆ »ŸG³ƒ¸Þ™z6K¯†ugÕ¹à"/¶MŽQu‰†ÿX/e2ˆBZÛTÏzzšÉ%ÚNFõ„«È¡Îó ÷à˜‹·@¥ÙÇÂsLm‚tŒØsMDû>‘ñÁÇÜ œ([ĻŌ^|“Å` ±Q”Bð3S.ƒO—"‘å%²Ä€& :ê)ʶìš4˼é�î5�²bë d îäëtõsº½9={ú¦P‡-vXt:Þ2îÌy�8[ Sœ·¾X—?³ËšàLHP�¦{ k0Ð/-X!O)Í„&¬qÉÖØúŒ”±ÝAðè"¸¼ªI2 `�ñ†;w¶º âE°ÞP»¥Pqƒ8Aèí³,棞%¨wm2‚ jôæq/yúãÈ�Öjó÷„‚§Rvß›[ ûœ µ}rï0þ”°»Ê´;1î‚e×”1÷ véÉ„(ñÍ5ûÇ.]³ø¥øâWÙ­Õ¶àÔM3s¾àPó” ‡YÕªàÙƒÊGÈl�Ê Ðö¦ñ¿,m¥$Ϩ|›s†tgú¶VK1m§Îûþ~¼ ¶GwPvµ¹ÝlÙRê u_�ÿ�²ó!(ÊýR¡Tá‹#Yâ{aÀcê¶!¨ÕKìÌ� †‡åcÍ‚€'ø&~µM³@ýªÐ–BH‘íKmЪûõK]ÁÐ úÜÄ¢ôžÝ²•LïGµÙ|Ì×ñqíX°‰ÍûâPÍO?[ì®SI ì¼GzéT;â¨òSf3x‘/‘GùÂ4!e¡Z‚oާ[_¥r¡ìϳ§Åî6»ð?Y$ætTo2(Žm·akŽ…'¿h ÍÃ'¥×�vJ7W_]bžÎÝG®éŠÚŸƒjóhW^PÉîçÓnSlÚ<ÞÝÕïrAÂEø†¾„ .B%<`ÛóÙ`fÝvÁaÛ⬈g½®7%¾H…$¶Ñ¾} ÖYš]ßE›ä*Î7W27'·*ÓÐ�[�YOLdQÕûq†OóËž;G%·è7ŸÇW]«B¬­X”&itÅ/†rhD7ìêÈÌ#3*¿}Á,•ß³ðDŒÙ«²8iÕz£GžµÔ^שäª7KfœÈ—«`y•lWWY^lÿC! EžFãîq�ŒÞëó·õò¼6f€Æ�¤™Ѱ‹Ú#y³ºJ—¼ä`{{xÖ«uñâ¢w&?§©iÌ¢¨¤L„õ9ãz~£BÂà0s7¸H·îÂ)ªó®B"èY×XòœW]K ‰ÃkX¯nnW…•ÅÿÆÖ ­S–m__ú=ó(Ô‘šo�ë*GTYD–_m6fÍ{»¼¼|6î�^¼ãñ´É4Ú¸@Vü[®à/ÏÎß=þñ§ó’’•¢2í¾2Prõɸô´ÝÒC,±gÙ¤<©‚À&�È=ŒôÀºfÉV¾åEh<ê´¸Òir{ÅÓRÖùâjdTÚ¤õýCåOÒÃ�–+«Ëbý‘rI–äÈm×�5ÅL‰/ÞÓ<>C˜µTQu›7Áæ"ˆöió‘Ö]Å[æÄŠ5$@ W¼únOŸ®$ÚÈ\nSíÒo‰,[–m¸XMó«(ùÇážÇÓçé�½îé-„  Ç¡wD�–oœ¹Öø·¦üñ-ñîÛ.U‚ÝZ‰Zxxq¼ û·ð ¨ˆï«yŠ?K�.yÓ!´…óÔRëæpI´+@ûº\´Ú­W6H}ë °ÉÙcfáQ��öp·ZäA f_¯J­ÝŒî÷MŒÏW‹ÞÂÿ~çRh½áíUÛ@•K­üª.|"\.­€ýEøÉÄy7jLùB–….òè}a`\¦üÃê‰�¢Ò±?P�5.Ï¥âi)ÛˆÑ-T×IÔSVJÃ0ðÜò„æ@µKK‘ØØ¨¥dœ+Ö'�Ùäz‰ÍU •ºuÐÀÓ$¸lýüâ¼÷oÿc¾a›í:…tlñÛø@NW¾Èý¾Êk,ÿ<<8¿©ðzZ†Rñ˜pÚ\ªÎ’™�]$´ÉòÍïXïìâä噔*ùtyÉ”×!LE@õ·)†ôÑC樂lãÞ³u¡ø]mv+á3r§NÔ¨^Ü�·«›¡¬Š{ª[èo¶á+Xä ê®ÏÖë|ý9øÊÃkñˆ‹§!ôØW®M«Ôí±à­.ý¯m”TÕ?‹aÙù•C½èhöY‘µ[2½æ†‚Øö' ùîÂs‰±"fˆ‰ëØÅV´³vQ]7RÚ[ eµ?Š1òÑìÊÐ�,/uóƒzytM!¶�,¬ÑÅU$œ@Ü!"°®w„‡NãH^^¾ì¡CD—gƒ Ò†«ì—•puŠŽSÚ´…ÞÙSžT·¡âÞv?.ªÜ‰o³`™F§¢€‡ˆŠy£¡NÏ)wªA3ž¦Å…¾v•îÉf¸é’˪ Û>‡LÊæF³¯´ÐþbÓA0Ÿz¬Š~ᣀšÓÛ‹Í8ª))jðí 9uÁ­Äã»0È2žÑ�' )�¥Û\ºÑÍIÛLZD ¦o4Ó#§Eõh ü븕`È(ïlïaïôüRßpÜà|jtPC­ÕV•+’;P Ú$9­Bj'‰@[ªTf«·@YO RµmÔrzÉ\ 1¨Ú´;ág匽9»:ZÏ£P UiN±ºWD*�íD\�ëkŽ $ÑYpô³QF¹¾}Ø- žç’ÅdÇŒ ž{ÒÑ ^œ1Â{JÊ¥ðROU/#.—#S9!Ÿ�R,²Ãõ–šwSElT÷ú*ÍxLåzÍ6tâA�MD4�†¢}Q%Ë5iç°ÖrîÇå�z�W°^˜ƒ¢˜mË6i¤6a] Óáw€}Z| ž¥ã»èƒˆhÚÛ?=ƒ7PÔPŒ‚,oÙ ¤AH¢ 3/ÏÙ…üó!IvŠÁ<ú‹WÛhëRpK¡&àŠÐ òœ¸òâ^‹u$ÊKÚõxòù/.—tr–Usb¢SúŒÄèZr‡ë]S4Ä@×ŧ.VM݉1—îD à÷€ h_JIÀe_Žü‰?ÃÑÇ£íÑúÁ]ö¨`ôbŸ›?áAúÅ©ôÀlïÿQý¢·Åù;ÿò/ý\Äðûúgü<?SØêiñ‘/ˆ-ÿ}œ}ùò!X÷Ö⃱?ÝA˜ÿ?ƒ~¡#³÷qp»�T&êÀãþ~%\°³Ê�¦ÀSƧ"Ñ]Õüâ¨úE¨Í7~ä‰doý£þ£Íj‘n¿ë_õ”K»¼‘IhMrrn9ŸœCŽkëÒî1RÁÅÛ›‚\Cùõ‘üïXþw"ÿëÉÿúò¿Sùß™üï\þw8PQ#å�–i%)¾ñÜù:æàÊÖL²ïûeñY’¯—7c^¾=î¿xq¼\ö�^¾½”?ÞlŠ÷ÿZüïñùùã§O‹Êó�ÚtrS?•¿uüº§&p*.þ§>º0'_,\“/\¿.Gt~ê»bîò£_Ž–l�Æ)³! ö²ÿ=ý;—ã ôyŠûÇúŸÉ,ÒfpÌR^eq|—ìŠ/Wømäx~ÒVþ›ÿHÞhž$7�Ç£þÑRð /a,þ^üãÅê_7ÀQºLñèæ~�çu !¿ÿ:¿)$¤ä·â'çð{ü³[˜¿ Sñ÷[9?ÿ×—/”tX?’ë‘À(fß±£l·Xý�A!µ¾|·þn2÷'Þƒ_¾üýÁÿŸÇ�ÿgo“ïÖ;/¤}š]¿{óòO›ut•gÙÕðßí§í£¨0Ù$ð‡3 ½pòè?7�–ÁêÿPKÒV1]HÊ)´h…imunify-security/assets/ui-app/assets/static/other-root/src_app_components_reputation_reputation_module_ts-_9ddf1.fe077c6faac9ebb7.jsUT ëÆ«jëÆ«jux è‡í=ks›J²ßï¯Ð!çdEíˆzÙriw³Nrovã$'�Sµå¸\FÒÄ80²­øø¿o÷ ž’­doÕF© CwOwO¿€–²Œh+â!³¹rÒŽ¨;=Wnè$°ì«D¾ø|NÃNèû\¹o>ýÇçª,£yûü\‰BûÒ ‚KÛ_¾G=]†4Xr‹3ßË.|géÒKu.�gj(äÎèú¨íN¨:þËÕÂ6W Õœ6'wÒkÏÄ¥£6Ìùí^=¹¶Â–?¦ín¿7誄Ááñ‘¡Ãa‡ýãa·§=³g¨Ä…CÓèõŽUbáÜža Tâ „^¿¯’NÕ»¦®’@PIG¦1„‰—x¨ëÆ‘JNñ° cgÇ4»€ó�;ÀÕïñê^ÿ`.¦1D˜ Do`tЇý.5GôGG8¼…Þ~„&âP×�‚„;À£k8Ý>°‚C£w<ª'Ó¥g#sZWÈ@õŽMÛÆSïéSû\ù²ÔÍa_þËé-Ȭ t˜O=õÎö½ˆ·¼qa–³N}/ž¬j?³Eà2›qÂ7Oíª'_Ãé0ð]‹S˜Ã5‡N­¥Ë?…–¹B¤mOã«€ªêý}º�×ù…´ €©K _¹ŠÅa× 1»jÛ ëôNŒ§Ã¦Ïçã£LC�(R ‹”$šäŠðQ¼Y'&ÞÒu‰Ù¯»î�¾¼6÷Cå¢>¦÷¥ç KÛjA|Íä" -çÚòl¤Ë(A B? !_ÁI劮¢¬÷˜Æç!µø'`¬¦ü9æp†ÁŸ¶hJÊ�¼&=d‡ä°Ùœô,yÞ앾›c¢,1w•¶”WQèa™Qyöï©þ›–Kks™wUDYãìýºš±I¾…íc ¦¢¹¦žã‡¾d¹ørW.F�å‰Móc¹ `N²úìÊ¿5Z9c1�†) 6™ƒ|$&|„® 7Œ—0¯Ú`=Ì`¤$Ws<³ù-òT’†T2¶lš›Úoö4û§Ÿ¤n«rà¥Á söäUs{ò ì‰)¸e'ËaX~Þ×�4Þ ¤(޵ú)»m™= �a¨ íïÌsLAŸ�b qkÅu] µ`Až7âϤ b<¤Sx+‰iîºåýKöfêÿk%”Q.,ˆ`1å¹I¨A†7õ·I;–w‰“Y&®O¾ïrÔ ÐK0rîÑ?ŒR pJ™öu/…Ï„Msj9°ënÖ±¸Û„Å1[¶ Q«r”O„9ýŒ�HÄA q ¶‡DFWÙs±¾£ºõƒŠE+Ï~àÚ ]à/£I L^ÊÖtJmˆY_ø °“[­ ~¶`Ƽ8™w“XÙâVçšÑ…åM´æºÑ‹/¸aÎŒr˜m”~q°¬$E"ñ%Üš¸àIŒ²ÁÍ Æ“mß].@ÜF�·*�q\¼d°Ñ«ëäSE`”Ug'0�"Uº°¦Â$¯AE·HEU4½¦¢Gž‚Š~� scDfÈ[ð9]’m N“ÏNAj½.ëônNØ6²—OÑwiì…ëó‚*--Å�“ø×�þ¾×ë9Eç‘5+§þÒãšmÙsHÂë )ï°¬‚ŒÑ(c²Î�4¼f6Õ\ßrvʲà# (è{kÆ<bR=-|ÈD µ¦Œï2˜…àá:¥Öº†zïRÞz1ncMéÎv­(jyR_Â%†ç²(E±Õ;>g‘f;áÆð0Ç×1O KSyV³`Q'¢1“C$Q/¢òz[޽}0�}í_1D=¿¶˜‹Ör, 1êæÐ_ý<öèM+Ô>.'_A¬÷Þìù”ã7°ç¯!õl'TÏ©}õz ¨­ÂÌwÞ $™•ÀÔpgÀ”ªr�zR¾ ½–w®_hÜÿÀÂN­@þÙÓ"\HN¼ño’ÈׂÏ.ŸÍdÜY&(Ý¥J¶XhyÖLHðÜ…r"Ùæc˜òW-šû7@цší/&�M¼VF\mŸy®�}¼|÷öòÅ˳ço_\~<}þ¶,ƒä –5aµ`n]ÑÏg®ÚÎ1IUµh9‰ì�Mhû96â¨C¸ŠsJü‹1?)É�>}ú“ÿWzRú ‘4’[Ôœ9•(›¶°Â+•O‘a BÃÐE ô®þ'c7`÷ê}„œ¶%(¹e¦–=N¶V›¯åMoÚü�?<µhp‚æ±kúÚCD‹¤�Î-oF_PNqA¾[Úßå«\mÖ`–¥½j0ËÑþÙ`ÖLs°ðXf�½ŠÎö¨×iR݆«ï°¬6òH6W�ÎÏ3º«\\ «~]Òp5Jº)ÉJ§t¦9© ÿ…6Ê+º§ßq"p6¤ÑK#E‚Q`ª é�ÕbìiSÂ&¹¿'s?âÏ9GÚE•/‚}ºêL]z›øå 1ç7 ¦˜â} ófQaIU©NÄW`¶Á�‹\‡y�`°Ù´��á¹ÿƒ�ô)�¥›±J–>�/Â8ÃÈ'öˆÜ¶ìx“4—lW15¼“�eueÎy�ž=›¸þLc‹¥Ç¦+˜ŒþþÙÍÜâªãøx§gå/ÃÎ �DŒÓ‹:9®\‰Û> ¤"AU.aÜ»š�-¿ÄÙmN0% =ŠÐ:¡Å[ü•�HRÌŠwjqªÜnx—!ÆQU,öj(µh[qÎÍ'>,ÌÖ¬N201Dd]¼EøžÿF^)­GñòªU¤õ‚<î“ÐŽĘ̈Ҕ¼ ¿“�çžd§G¸KímËMˆ¯Ä’£xnU%8sâ0§"Å©-ÇdkÒezw¼C �Çcž�D÷Nõb€F  0�Ô³…!ÐÎò-r©½#§Úkr¦ý‹¼ÓÞ’÷Ú»d©ÍÉBãdª}"smBnµ3‹£�%í­Ügâèõ”Üà©X}†]×Úh/ŽaÂs,û½‡\€¬4kxADDÈÿ‘4¤Y –!£óKo†þÛùåôÝÙû_.HKs`aŽã]¢FWLiµZK·zÜešŒ+©S1a4šÐ©Òã°D@¼Cëî‹×jMádgj-˜»µ”³xé-äg¤œ¤3nDx7jy~¸°Üõ¸àZÅ0û£f/¸=i}ñp8ŽðF-æ�q¡`|ûJ\ ¾Îcø†ÂÐFÞÚBÞ£r.å@`' ,ÕÞìÖMhùÑ9šœ/¨Äób\…öéŠÁúÍ ß‡DÁZ�‚7ƒ ×ÉÌT…¨§¡˜åƒQYÀBßЛ0—ñUôÂÿÖñ£ÛlØÄ«Ü%ÍL–B dc@,¬QDá-ª…B¸ÇiÚÜW‹;¦3Yrî{U¢2…òÈÖ“~?�½ # |†&1æ#9ˆD×ú’íÈq†öXàº0Þ�$ö&¸Gbޤ m´~‚Ó9°4]è‚r¶®#&:v«E¢» @ F›‚ÅÜrNhúKÏÉåHT‚ž€Q@§g¾uÀä²%ÈÂUÎòÖ0ìÉQ¯¨ñF?ž–èsw@zQ6o%#Oß0‡ÏG­£dÌ_rÜ�,Çz“\xßp½£©o/#Òj69#»5‹:ñbÃÙÄjý.i­ÿÑ5SÝ…iŽvÃЫÇ�¨ÐŶM ëMþÕÌ�šê!N§Æ¶Æo$Œ x±ZLR´ø‚ !}A‚!•F§öb1'1[±yW£µÝ´Î1Fíª_jH¥ö¥J“*é?)=�/w71¬ùUz 1™ ü‹§–�X“uÞH25kD¾/¼@-€Ôg$Î"q¦X°N>IŒ�6  8Ç€ WçU%¹Q€S0%½H&T6E‹]{�œ^nVJÎ-Àg=›AÁ™% Âí5"e=3Reý­èÓ‹­VíªbÉl ‡6jîþÑT½.cìeb x÷ÅF]DSˆ.b€Ùs¥áš0¥l)ŸLÅŸØEÝb V…î&ÐØLJ—¬Ç„‡Ü}dÂâAwé4C÷ƒÒ‚zó“ËÞA:Öúá‘BZü–!dÓR´Ó-F;‰šäbút4QážZ—fBžžž¸ÓÇÖ³:nFÿ6²>k6QÔ‡ÑÏ >€Þ6^°Ø”ÒìÍQíz<л‡m ýáù�Át¿aôÐ `¨1ì5 õÐ ýÞ•‹ø$X+qÇYɧ‡FÎâ �ðs²Á“ÇFGFñ½ƒZ�†L<�jŽýñQo•ì—ÝP«¤¯MSíƒXá†"8�YnŽýÇ(À¡–ÝPâ(ñh�ÇÇu€jÀ»>�—Ì„A¦ž©*$ØöO�jêÉi°�³™[ïqª“•],¨·Ü9ÕJƒàLbèºI³ñ4 ›º¾ÅÓ€*Wn3Ì�.òU9Í0û0ˆ S}b'+<ºþËÁs³„ÒÊR¤^NÓ¸ª=eÒÈ"?HÞùìf‹ÙÙÛÍʃVQH.w�)žvÛ©ö`’áÏ_¶ÇÌ••˜â–§¬-…Öd”Ò˪̴"åÌç¦z‰_¨}]FœMW� ¥ü†Òz†&ã“°T¼ç׉ËzªÖ2J^.ŠlX­;±Â|®»¾¥ßìòŸ/“œ´XõÂêw'úp°+¢ÕûjcªÓá> sÏãåî�@uâ^xñ} ì!%n•ל63¯s ©IÞžêˆ7Eñõ€šç*r·ðÌþ/Åg ºzz ÈÀË›äá41ÍC0"…›úi(¹µY¨xõÝÙ–ìÁ’ü“G¥À9òÚr—�Àe¹A /AÔrü°\j´¤¼ØËé…�½—•x…t‹Íû76¡OhŸviúb›–vЍ…‘Ü<6 �b÷ ^ó ¾g½­È#ýßV‰¬�´±>±{AŒ[oéÖPŸÜ7" ѯÜÓW¹õ“·`‹�¿Óiÿh¨Ÿ�)” RÄ¢ëG¬Æ0÷âaüvZñ-Æíý¼ͼ�_‹(¹~ÒŸLl#}¦±@Ó*¢¡oPÖ&PG®òµçÌu*6þéâ^½¿OzÝ«mÙgþwì½ÞícwØ¿ãa ÷Uòû¸ôáP%¿Šæìƒ.~–ÍåÍcõ;÷üVè.¶{Ç¥ªEîU·(z;“mò׊*»<1ïkõõ²;6&nßÉ÷²¢ÑùïÚˆ±h(AcˆvŠllŸßXE!øÿ™Åmø2]º®BÒ½¸¿®ioÈíÃúE| ŠL´S±H¿®4ï2÷F~<þ«öœ|Öþ·$œ{"ºóç~<@üj€l‘u™ù™€øWغµ~ü3ê‰-Z�ÙãusŽ‹u_}WöuX·›³òMœü �r]¢cW†\çÄ^¡+aáú|WBˆ\üMÝ’^%ï ¦¢÷^Ò´->‘í“çl!¼ò6’—íì]®ª�y±ïð¬Ðµv;­ŠF”¦Jê/1ˆS×Ï¿[wY¡;÷ƶÛÙ¶Û&ªÚfæm-6Â`Ú]�Çc¯¾ùv�i;âW¶ú@Œqã)�î½\I´¶8iO¿»ti`4î…ñº<ˆñÂþjþ^ýÕ¶ü¼Ãʼn�>¶>Ã>!Ùæ,À¸:åÏ\…ì§Ä.t_ó·t_ó·v_+lÌl6æK0³w ì‘è”ôEëɾhƒL_´9uÙ-éT´¥¡TåD¢ªv@SLÞþIW…žTÝ ðõ�omál<³j?ê ÷ã†Ýn’@vÁÉ·—7J×Tö­Þl÷²[Û(íÜ\¯ØÝ ¶ZMäU‚´ 高å†h–U­lÝrÖ$ ˆŠ] ís˜l~ƒÿå‘“P{q|A`žDKÙösd–ü.øô“ÿyöì ä$ËЦgV@4üùÛñÞ¿¤M)„Rö`jYö1�L†Ú×H[XÁ¿PKÒV1](Q¢zc]ìÛ|imunify-security/assets/ui-app/assets/static/other-root/src_app_components_dashboard_dashboard_module_ts.52c0c93047e50e9e.jsUT ëÆ«jëÆ«jux 臼[ WÛ¸Òþ+Æw—cß*®“f]åcK·´la»i5¶’xq䬭ÙàÿþÎH–í8 лÝÎIäñh$�fFÏŒ}šR-åIès}ÏHi4èéwôzâù7oÓ˜Mb>¢I#‰c®÷ÝÇo?<ôú¦5™¦#£×ÓÓÄ¿ò&“+?ObFO¯/]Ç^TZã8˜FôЧzŸÌ[í{Ë18¡„™î«9³ƒš„Y�AÉüHu:}X.XfîÝz‰ºÌØÚmïÚ&ñ ¹Ó¦m“$ÐêìvÛ[&‰¡Ù¶·w:&I¡¹½ÕÚjš$Bjs§½¤ÚmlúÐì¶;-�0�fs«Ù #¶ÝnvÍ=?f)ׯî—ïæ±ueÅr^~!ÓÔÛÜâ�q6L¼É(ýBòrD=>ö&_È-^O‹Û÷ò²¸}-ÙSšÜÒ$}éÁr¸HKè8¾¥_Èl�ü…ÜÉkz‹›ÐÄIc˜ÄÓÉ¡·3w0e>cfpsžP>M˜Æ­|\WÏ:Z˜òæ7ªj"=ˆ§Ã›rWW- fÆÙÃÃ<3ÉÕó�kwuù-„\I!«…Lâ8quüÄîc„S˜œüã8qð‰WSvÃâ;æêyC p!ØSâµS ½ ¹?–ï�{´�|Ä !qO[%Q(ÉÍ’ŒóÚ èÀ›F¼¤æƒgYD¹öÁ5Њç~䥩ÆçC …�Q,1¶Þ¤ÔmE¡OYJ/¸Ç©º°n½hJ­0È„E&SŸÇ‰t�$æ\ôq>q9Y’ãRIs€ V¹HÜP^� KV/¿žòÑaOƒ 0/å&™ï±PÞ-páØæ<ËS¦ÓÈSóMO¼0¢°NP°p%îöô—:9=ûåýéÉïWç‡?üxLt/‡°O:vÖû{jãËiZÌ» ‡rdPZäÁ<èeì”,`=ÍLöܰ3Ððiq‡#/áiÕžªëµð¦}Ã&‰L#´˜2Yqá„âV#ÎL£iÛ¦)Çù¹à+Õ�pS «|æëV=D¿½¡«@ëêzf>6Ò«òɨ9àvÉ-`nû^tä )ö<åtlèÇï^¿;¾::¸xóúÃÁÇ£«ƒóÓ«OMÝ|xØhæ;²b»ëêº.µdHº ƒÍÍ ¶¿8ÃO-1›Ú¼?5µºJßß%”ÐæñÃÙÇGh™,0ŽPQ óe�«B=NEUYV]Që‰Ý:÷ +ª»+®îí¿Œo(3ªZ•!ï ÌÛðÜWÞþ’>À˜8Nœ¹þ[ã¤êŽ—‘ÿ%�:Ö˜ˆPÓ…PÛi°ä^+�³\þ LRnÜ}µ±ÁÁ\MR׊05þð<‹º™•¶Rn `›—K‚c÷æ-hÆ �ù;L:Åó¢×W -º{b Êr0LábrC¡.ïÙ}öÒköÁNª‡iÁaÉ‘±/v5ªƒ”æHÄ%‹ʼ1…³É 'øYÚ« §)œBy`×â�V1X šŽ nÔ}•‡¡î=83˜Q6ä£WM³&€™È„0¿3ÍÀFeÄ/y|×hxQ­ XSK«Ž]tS(®LP�°>8xŒ6š/Uò� ˜BQ7w²Çtߊß95B@£°ðŒÜCÝ£·$4˜ú°eh¿h]½Sƒ–ƒô%–ÌM2ïI@ÑË =…9ÔÂ’¾°0B+�®¤—³ÏC±¼ØÇ‰þ€[±ßh:M§dû¡ÂÔt€–CØ[ô3ŸÊÏþ7+Í~§Ü¸&¥šS‡gO¸�™Á9H9]7ÅRðá‚àï?!:ƒpÅC_bªÏS»Õí <¿ô&Z Äè��ÎaiO—œò3dRÈ´úFd½�yF!€rˆük¸+XÓ·ì >"ÒyŒS0$ë9&Ö#³Y— Õ«Ÿ$ñ­[ë€7dôTôõ®# ýç�‡ÐÀ‹Y¡=´Xµ;™iÈdîS-{{ r±ch¶¶ín×$7˜–u¶mHá0Û³m¨¯‘ÚÜnCóš»­VŽÒï°[»½m’?1¯kwÚÐë{µv;;&ùïwÚ˜¾Ç^[�hž`:ù ð¾CêNÓn›{Ô?-u�ÞspäTûÛús¾{§Ö Ú„œglx0€­9ŒHä§,äFŽÚ¿Ö—L+�^§~^S1Y1¼µJ¾™]E±'‘Dç½’iJ�ï!“Ù‚hie§l„Áþ§â.‚ú+�ô£p±ÖøØ¯X%éì¶Lò#zîøíÏÂCw¶Á•þÂzÌnËÞ2Éïè`ÝVs×$¿ˆ‚Íö0¼�š¿˜ä­(ÒìtAí?‰¦mƒWþ!nÿd’ßDïvºp.ˆ¿™„rÁÄ3I¥ËBAnÛÛ0=O’C '\¶w!FÄ’œpsï `aéÒGÿ «¼:á�ÚuŒ y‘(åî|ÊÃ1uô³³3íˆh¿ÃÑFÎxì@4ñt2£(LÖsºuqq�÷jdÉÎÀÞ% ¯Gñ4�«�Þ,E'w”Þ8z?8ÿHÒqh�ü5äL¡OïçþÏZ#§Î¨$ÑÎöÞZW^àM€+µ®pV Ƙ€5s€gcð¾ˆ2³€”:%¨\ÈPÀ¼ÁqJ0ICÄõð ºîè@`ûxÇѱɆ‚²¹Y^åbè>¨Y `…é'/ÂZII¹æ‡�a:B×B˜ƒ™ô&9‚à^ê^ÆÚªòEä]$ ÃŒ$Z`%¬Î xTÊHOtCÛX5óŒéÃr/ÀÏz˜Æ¿Âž£òh ìu6_Ó¤T"(–½²áã‡î>sT¯ŠBÀ�JçÃ:\ëÕ¹/vRltayà µ™ÖW'8{eòÀ�x­4V;eó“ ¢& j®Š[<ñXU*[`¸ž 9?PMË+ïšFå¥G}ËKÌ-ñ´ ÁLþ¦�»Ñ”7&0g°É_&èÝû$‰Ç'Â$\ˆàù2®e!¶FŒ<6„|– é…<Ä'¨3wqU•VÌÞ=jç¾ÔÌTLð2ï€ú7++ÛÜ,Û9+è>ç€ã–¼0‰8`�Ç8yÓ¸ Yß]²ê‹U¨kHÜ}z k7¥-“ùšyHaålªô\cc¥ ä¼aASAK·Íl‰Z”Aëbò‚® ›ÒöT´jÔÕÌcy…²-rÕx0€åü|ôðP%½¡áp´�ÒCd†® ÝܤU¯`r§¼�Ã@«kêQU¬×à:Maqr�[w8´»0|  óïA£§KΗMk[þ™Y¹:,!¬½ç†Þ t�®„Súµ—àYÈ=g.ÝÜ©¸¼¸£¦E!é('àã‰Ìα3�ì€^î¥ÀgÑ �b2dM‡!2GtˆÕ«y¦“Îà�fFxG<œ8sß‹¢kÏ¿>òà^µ2ã¾Ápߺ/NýHóúÝ¥XÖn„zOáÀ¼'aI€9‹ï…’ßb(×€ ùÔÐçè¾™N¨öXß4_蟙þb)LU:ðX±¿hB‡Œýáì—âX¥— D¤H3|ò"—ˆþ†y„ÚŠúÞ!†]GÿÏÖuÇß¾fTЙ—€Z_ÇœÇc§Kü8a€ƒ½ œ¦N›ø`ÔüŒÊ±eûÎVDµ-›äúRSÜ·™ºÙÜ"÷E»+Ç9낚í’pâõ"½v±G'×q0«òªë¬ãà¶~¯“�!t›A[€sŒPûüÞ™K›w6l"�µ� €¨ìç$Xs�ç„5(”'Mã�c6Æ�íÌ›òøâŒFQmµú2öî?Æ\„TÐáDiÅгrQHVÕÝÙÙÙÝ–4©�&QîÈ*Ù$‚˜«ÃuØê!@Æ¿ÈÈÌ™KªŸË¤[´K}�üM“øÒ‡5:Ü"F8­‚G]‰w÷:N ó‘N'×+¼ÄÖ»pr§óä 4×éàŽvÀÿ€áQ©Õ%‹Hÿ}Óum³È’Äß^;]H”µüð8p̰WÀŒÍMãì!�É<ÂâS„GÝ#‡­ÉÙ‚�…>•C,ò8U#j�EEXw9ÂVyðÀû“`FTîÕщr*©„h󼿉å×n‹ÂÐyOP÷X(„eì¶ò&æ8õ™yÁ-–qýK÷& ‰&|†ÒØð‚Ï"åu0ד|{›À¸E#æG&UëG\V4.쳄IŒ±J˜‚|-lòXñK=³‘Ë, V1;Ä­8‚ F°cÀ¾ >S6¡÷䬅û@$Uy=Þw7j„ÿ!®ŠTþx²:RªWD×E*|Ò�)v5>-ƤZ "ùü�Â6 ·ŸrÙ3×€£ç ¸P"Z‹À™˜:�Ò Æqð6)�K¹ø9Á·å÷‡�Þ'È)ïCüËm¨M {‚¹s –»]+‹B´õdšF«üPJ^ís˜Ü¶ŒVöži’ÖªQŸï$rå„J…‚€"t¥Ì1ôXï%Á–PA¶e†‰pOï]±á(NyãûÃgçß÷µùg¦i2%ÔþÓ ðï3Ë>³Ïj�Û—Ï0;ŒE­ Á㉣Ù{ʵ,hm{r/è*ÇËÙTJª "*°Ñ¸K<�„ŸrðÕCkZ®�Ò²d€ÔCÖa«RGCHHAÇã£!4âh \@Nd6ô:Z³“ÏRŒõ2‰Ã¢sãŽ^ß„¼1Má4”þR‘¢þVß­é¨)u˵"ž,í Hù- ¥ÀÝ*ha‡¬ :Z«œj£o0U�ò­§ÑÁÂL¿N’¦Y2v¬&G@‰¬ˆiûû½’ìh[“{-�£0TQ@…Ùlå¦$‹¬Ba®!CGn\G±#=&NÅ“`GS¯Ö~;#yt™ß΂žVæ¢y5ÛßÒ¼žZä7²½g/Rf¹ÆuÇÿÊ»ˆ׎„¨¦‡iœÈú¢&lŠ�ümÀ^5Äwmü×6 Æ ÷ÿ'sz¦Ë<:¶¾œˆ™ÅèßË,ªèf¯¦ ®�*öz"»ØS�â¿AvQ$¦V¥�ñXª‘C�¥àë ~väh/¯Õ™F�÷TYЬd\M¬Ç�>U6ËÇ‚ïb|ÛY=VŽ™¸ÜÄZ(DŸ�_þþÈ\E¿š\+äÊcQõL%-ËÌÔûYX¢¡O•hhåé5­f´ò”›ÃiåI8>JÄɱç�°L&v…CC •o¡Â°¿[±i°F€£”Õƒ‹>Hl )XWãʾ˜’àkÜF“¶ÿ‹#šU~ƒ‘G qÔ\p‚eßù½³Ü�̆µ™¼>³¢(©4_«þ•œ?­tueææ;¢Z…)Ã-xßÏSšÌj9ƒ E››µ1 v|Ë”“®€ùæÍŸ×ë/äûHàå# õù¢*Y¦)Œ¢P€ËóW3•<µeòÔYHžr-Ü´’MÑLäS§"‰Z,Faò$ëOE©©.P&^Ïå+“¯JZe“'MœËB¨^›_©ØI`Þ.gle¦EŠ*Ür²õ¬lm1#’�eI�U!ª¤ª¥BU*WÞlÑ—.E_-Vg�§¦8áO¦U 4G›«PÒ¼’Ô)ÈÝ©¢·';©”¢èõ™Á†­Å«áð Ô€A{Šo¶¶Ú»;&b»ÓmÛÐ`»»Ýéîšä–‹·wÛ`J÷‚Ç/,^sñöäV¶òP¼±Ø?L�a»ÙmùNˆow›°£g‚}Û¶Aä•ßlµ¡}!_p¼â&9Eòn·ÓéûN׆ö¹xM²»[ü¨õŠ—òéµÞ˸YUƒÕx�[2wtí¾«Ë&·@Æ�páXб!IBÍn h¢%‰�°»m Á·ø!æ —¿Ä”Ó8ànùNÀk¼l :ƒ®¾'OîËÕG7þ¢”g¾ùSôÝ×KŽBp¢_éPgÃ�<Žå‹%ª˜xÊ/ð!½<òGù¯|D²´–ë>L#2z8™RòË–¼=[¸ÝÌo�²âÝñ <·»Bþ⓬ûôˆ·ðõ‚[w š?œ×bÄ}%ïçwf²ÃLt õBÝ%ïg™ÔèwåKíuåbŒ”ﲋ_ý_{_Úݶ‘Dûýý ™ñdˆ¸ \%j8y²¼Äo±œmttˆ„$Ä$ !@Ë™ÿýUõ†Ð�…¤ìd^’9 hôÞÕÕÕU÷rƒ!_Dã]ö'õàƒ,éðÀ?î£Ùcûþ­f’šgÄ|�”îËîuú|Lïú›2/ëAçµ RÃå¥?ä¥ï+½?>nßÄÉHA åoëaÓyXDMá()‘Bøšæ¿±‹YP0™s~IN7x·@V|˜~/&Œ4�C%._C8ùø” §HŒÜѾlØx°/ïþn_4¤+òX°¨Óãît”ÑÅÐ,‘õ·ê«Ño£FcµsÿV7V¿¥¦@Åñ.è֔ΠPýxPá\P/ :¤‡ÉòÏ”‡•¼ �°MŒe•þ žP_[Ÿ{tÀRÆÓ—;ömX…�×ÑOÏha‰ÕÅÅYL\˜h0� å»cô\�3ÌGZt l(�è:>|÷²‰×Æð�þS9†ðûîèq¤¬÷¬\ÌT3NªI“Ýâ]ŠG¨F¦#û„_¸+&¦iÎ ‹Yã[˜¶Ð Ç ž°2jöm}KŽ#2[ïsŸ¸Ü�I•sãcZ!¬Öì„åŽÿžÀÔÃ(ô—îâ=t Ð uGޝ®qv«{I\´—sÁÁ½…5ÐÙ伿oÝã{ýË‚•½¿ø‡Ï“îÃ’³Ðýmì/@û°nEºp¼xàì‡IÊ�¥„½üšŒ Ÿ*Q`—ºukÌ}fÍ„‰ ‰iÞÔ“6½{íý3˜£ïWø'"û#ªD*jÍ»�5wß»´Ex BšL¿ÎÙŸÏlfã8˜Íš�o–Í7­[ÉW©Éš)6aEG¦œçÓ›{*øç÷˜îç¦×÷c>y45µ¨xl«‚ßZ¸�A^â~Äñ¢Ù€¼g r‹¿ÑõÞk�ÆW8ì�Ÿ7Ò/ZT˜5ß’M�§š|„SzÓ&Zªxs“~ãÈ7 þb¡Ö©^¹Î÷ha(i¥—oå• µùM r1¹ùp ÂáÃb£¯nƒ£ÅÊ’î¡P&’“S4v³�fããß^‚Ž?Z*‹ÞtÃß~`ÏÄ“Ô_�R¼PŸEÙoV©<“ôÉß4u’VÉçEò7/ëåÉJɇÕõEº®¿‘Æ¿á Í¡„Jˆ)£u’m°GùåÃ΃0SOxFŸ´ÂÔ³–Hg±Åº/òfÂZæÞQrçõ¢…$yññy¾ ´ \t_�E d©�ø³–&ûTE²™ó]Ff¿›ê™]¾‡øÒ}ô I+ XLxu�&Þ #Ól!ȃù³·yÓ† o›q$ôd7-ôº‹,Î/2zïaѳš §ž¿ ‹�AfÁpƒg~ÐoŪ…ç�¶Ýí{óŒ´j|uNÿi`ßÍ̃çÂ÷ZÒÍó qõ1“òÚc�º�ÿô½'ÁTú§¥:}M-£"Af³  /%%½"ác¡Qϱ÷û\ã•JËVça Ú+?k�ߤwhæ‡ýqEð?7+k‡ÆhЇïWÖoÒS™7Ôe�÷îBø`ËJB›ù3þIúá8ã·­&åäøxH•uŸ¹ÀWºøaýâ�›Ìó5°±Š€÷@¡�NA…¿Ga€¨{0ë.½tË3TŸÒÙëw{ Pò“T¶v(ú‚w©‚ [ΧOm8(‹Cxqc5_ymü'Uw×=tº nè—0ùù ké¸M\ر芷JçôuÖ¹óÐé·%z Z0,ôt–É)t9ùå{à‰•ž$hV´HQöb¢Ó¥ÈÍS%q ¤B]V˜¥zÌñ«A…3 k>†Jž�êNã%È,ÿM8»¹ ÅÃJ�c��—G‰¾¤¼P;¯ú¸â'Rrã~D+DŒiÌü0i<.¨túÌŽÝ“š%vL øRu³�“ÅËœFYü}òÊ�{�nñL˜Ïm °Çà[Â[E»oâ˜�Ê�£¿Äqx É’š†“% ­„¢¹ÿõ£„ˆa§^®&KÞQÍS©°DÈ%µRæ4õ»ÄðœD4Jé«à,¶£S\-T=AK_ܸêdè<¤“äÍsi[‡ùyä²S�ãéè‚�•°iKá,zÙ˜,·Ñ&ÜäLJÝ�ú í¨ñp;ü§=ãŸÿ=cb0}á¶ï …Øâ]’s�`øOsoqáYÍ4’Y;æqâRphq YJŠËÒÉ„s†Š´ƒÜj.`=@M(؉Ô®¸ü³m;¿Wƒ˜Ñ)ÙÍÞ£. qV"qN…’¢Ps%çáö7»¡óÎcTÎEÖj%Âë¶â!§<$âOŸWq‘x Úk… —7±VÜ)Oµ ·ŒÇ:¿ ´‰næ•ñdû^la]2v‡ÈfDÔ¿ÂG'‰ëKÏ›Qÿ z÷Ëâ€6óUG×��„êÎÆJU#f8N«SæPVÙ"\*¨IËž~>Uaÿ_%þ ,“ ¾.·Q2‡nê†Ðê´áŸÄ©À–=nÌ�{é:mîË›õ!çnÐ±ËØ>¼�úŽƒ'äqŒ›Aâ|…–§E ëæ�ðߘ�a+>�¯be@õŠhít¸àœ"?}—Ïù­œÅÃ6wã–�·<îV>*É…t{Õ£’PœÓ��†Ü§�ž9Å“L¶«jE¾2ùÐMmÁ~Ç¢ŒÜôÜéËpáÙÑexý‹àäf)ãñ¢Âx°e™ôr§ŠSa/k¼‰X/wkôri÷U‰œ*è¾nªûÄ�t÷ý´eïÞêS_éê³eÓq©fXÍ8†˜vºíTñö¼mÐ7>¸þ wè)/J`ªuþÀÛœ1%]ÙûèJ5nîȾ©#Ûpõ¼·;¹EQ5¢Œžöä^Ûj6®>œÃТÉ]TæÈ<ãêDzÖ”¢„�ûÁ„ž¢ƒ`z0ó0œ\V¢Q/üs³–ó rgí�ݲvsâÔ²¥ }[®R(AÌÅY‘Ã?×úœ–ž|ü,Nkàë«%©�ÊŸÑ÷W-R£Ôòµ‡ZItLŒëN«:ä¤N6°ìÞ¹{íšôîhY2·â‚¹Ò!"ŽÍTGãpŽbíÒ�¤.ú<༠O>^-,‹eûd!ô‘:ƒ~¨ ÉdO�®%œ­I§w§{Ï6ôì³ÆNa—R¥¥pùá3/| €à픲 þs7Ëà­º ØÂ%ŽN³•ßtȳ˜Ô¹¿5‘‰’¯ºäŒa¦QÓ-ùœ�å:Ó‡pZ~ò�ê�|àñò»ãm�­Ÿíïc5Ëà;†²Ô~ýk©UZjç”­æ]øÔ‹'—ù÷ãÝ,¸_ù2`]mÔ÷ÖÝs*MúžÃîÆò%{‡:A¿‹ mj©�QÖtu²f“5žoƒ±º‡Kìjá} uVªü¯»‹e!Y~°;ü§q!nf…÷ZL~òr¥k¹¤ˆ!oÉÀjîòŸC üzrñ�3° ᢴTGôåt«èLM¶ŸáÐXíÌ8õ¤·-èQn€×-÷´�µGÇD¼tÉÓ˜ôó ¦X(õÈ ãæ }¹Ñæ,Ǭ|Ôb¤tò?©í�üÃ,rÚ4�ºGLR§3gOüч%)Vª“_ªrä�ÿàtÊ@z³¤Wóí’ïPSs´C4ÜÚ•ÙÔÃÉžæp¢¾‡n˃_© PѨ UÃüZAIè*Š´„Æߦì1èÌð aS@YÔF;ù«göm†LW˾�ÂÇJ´öV ÊL‹V®¥ˆ�¢ûŸÏÂku.Þóµ’¥hßÇ‚^ó¬{1½;CT.M>_í'wæâòU�p^«ÿ ŽšFkâ¹Å¡‘±-Úþõ×[\Õ®ÃT}žê ¸¨�ù½]WWïfЌ WÉ®H_…­å©›Ú’W¨Hø>3.¥õìfñ„üÃL�•' $ñKl`ÚygÿšwÁn õR"†R”'@&†ó\Â?Cí? ÃËÖ]‚Ò/[=V‹Ê» ¶ø˜ûsp¹Àp»¹oC,XÚ@µe%sÏúV-: ›ËÐ…Å<ŒÖ’\�²ª+á×0SÀ'’škRxäXæc´[X÷bú2(A…ªå© ·=Ypæì9~É�˜ÿíO,RT“09‹4Úw†2Ú–ÆÍc¨Ë ôP£�mùúkïŸm‘ßÌC‹;É»o¿¡ÎVvhSŽ#ïÑŸ$Ç`�n: ŠH˜H…k†¡ôø„ÜÒ«ý7”cì;hÏ ñÈÔýIYä»ÑmvÞ ÎåÝàWüT~´<™$bº3< *ÄU Àôº5Ò!‘&ýnG›&ظØ-ÿ‘lÇ¿cî“Ñc>½Ä'Cà_�D�¢+ŠŠ§ìf ÁA³Ûcå4¼d›|$ÎK�ã"Dß:ì$t\„_îÂw[3t(„?: bÊÅP§–)*^þ «C«"`íœÞ`L«)Nîìü=:N Ó`à{,Z†z¼H”FugzÆBƼ“Z³©ÛÙýb¤ö­‚a¢ù@ø| ® lX­NµtÅ©h< aÈÔ�0ŸÓ;~zñÍzEŽm¢©úŸÇ¯)õݪ÷Æœñ9M/®]p ¿ÔJ.´”އúÆ7åý„j[ ´ØAò¦šC£0³qÆèåd²æ%Xø 3¾Ï'¦ìR¯¸Ý¼â)Ï©tÈ#ÿŠI§Oð ¬9åU<ä[ÆÔó'A Ê­cHGÓdV¿fîH§ê‘NöΈÓs2H2{C”�•ùÙ> ÏìkÂáe~°_º1ÎL2�Éã˜ü7¶ïÁËìÌ7Pp)ôLÞá˜cŽìk YìÄ4ˆ(ßÑ= òZÎúê÷%l&ç7bŽHoÂÄ‹¯=/`ÎbÙº�èJÉ€ãpOÅ·,·%Ô'-­VdµÓåm×cˆfÀNiwPz°BèÈê­(‚†¬Ûi¸Îa òc­:‘׬£€*–µ~ÑŽ•tþÈ=ÉGÛɺgš§+ɸöõÅd´ˆºE— Ø•%ê14M8‘¬5ÊaGë#d»¾â•X@N‹¹;KÒæjˆ”D9¬c§îÔÞ¬-µæÿ6º-5ÿzu—ÈÆ�­¾Ž¶ØX.zÛ˜�ìÛ37ò'l‡.{…E.€�w8•T–ò@í—íýŸ¡Ö£K<ú��F¢R9.=¯WÒw’· ½_xªÒ±y5ù‘ deµè?¦�b(qŸ«fÛªÒ’Jk[í6à)+ºÖ" ãŠÐÒí´r(PµsÁÙÝÖ˜½ºC­›BJ‹]ȱ‡ýü.tÎ8ü9È‚�ÿ‡‡øŸ>1V†Y4Šk“Û銴åŒ]©�Nº©Ê-Y„ä¢ÿä=h·uý3èU¯£æ¨º ¾í°Ë•ôIðœ…Süðw+\øôèñ'\} hsàT?ÇÓ‡±)Ò¬±^Ý€h{:7"ºÅXX3Xj"$£48( áïôêªLT¥–¾´q“MúCEmi³vVW•¶ÕάRh,Çü†_hKúàGþ™?óãey®3]+Íì‡c´³@R¯ÙÚkO½ ˸¬3Qs@ÇôæˆþîßRk¥]Èha.¸n BD#ªÒ®·FÍ×Z‚eõÏ’”T]Z…Õ«¾rʪ—§{ùcuß"™V¼ÎccÛ6k9air�1E¤šwÏœAQ¾+« 5â—ÉJºÂZîº/¯·W »ñ‚¸Ùéîaࣇ¿»ýÞ@ØÀ½" ¼8 7žÜa*çƒ œ»åe4¡‘|]¹sésp©üÎÓ P^-3°žeuœ®’Áå&sã­B$6)áóÈ’³Ž×Fm@ ¤ì=»†aÖ�âô:¤ÑÙG”ÁX¥;¬Æ²†ÚSÂi˜!ñúu.ç_ò/tGˆt°Zbå)õ��?ÊÝBz^ oÛZåÛ–ÆBä³*�ßAQ�¯\ô%æO(1Â3¦qНúÏ62¹2 ›Ô 6«Óà69„šæ½Wô\dûÑS¬º× ¬OŸ‚ŒÛ?€ÐŠL\|úÔô¹B…¾A�!xL]ƒríNÈ�3%øœUf\Ã` �]”‡8ñÆÌÑ 1EZ¢`7ã¦�/ŒofJHç4ò©GWp’~‹3h$û…  ž‘”·°öxð³ÅdtˬQŒ¯Üî¯Vd²Œa�ƒþßäj¶¡†l†”Vþ˸Uo—ƒ=¥¼yH9®r˜·ÛmÊö†³Ø¿‚Ô‚�<⌄—oÐ škÓ:æ0O'Éך¢²¹)o5Œ¬WÉ[Éz¸�üò+( Žx‚}¾ ™Ãw”x pÂ|ËnÕº˜TôÇñ­?5X§¼¤‚9ØAuôp’Œ¸ÿ—‚Ê…îI˜Ø>÷ã}õ�q_bÇgpg"•ÕL!6=w`˜V'FþvìÚmó·—Q·×“~ŒÔ½«z%–ôÿ"sä0¿ªÑ_ ÔÝF'ƒ#˜ÏYg&$ÎQÝ‹¾0�ºQ¿XɶˆåÎTV²PŠ,ì°t³dêÇ�¯zO †}„|¼×wzíÆ‰"qñ¬·•’/íX� €´B 0™þ¸}²ÚiòB…‡³~#â+Ô¤2Ÿ9ºÏúÙÉ&,éTi+a ׸�ãg§Ð8ú£A÷ÎÍò¹Älþ¿á-,÷o#u¹äQCüÚ˜ œø…Ç€?1‘;˜49?ħOLjՙò;fš dù€ÿB7d =ššœA¢ÖWHG—€šžXÛ“Ÿ<±r­oPÎÛqøÔÿèM1±)ßUûàä˜1Nê²°RtÖ�ÄÕ4·hŠ5¹<¶‚ýU £ëŽIª3Œf²…ʤË3–LÊ`â^EK¶ Œ:fbP×[DkáU þ¢! Õ wú¼}«90Œ>¯ÍÐT›ÝZ‘áBôö’ˆRGtÝÐJB>�c8©:$³¤*Ô¨N¤ñ�‡«•G«ÅúhµÂ`5ý$« *³‹~·µª¥z�[œÄ5ôª‡m T9ØG £I¢Ã³<æ§$0è%rgãhš/ér—›s.‚ENÐOÅÏ/·ò?¡¢ Bù|µÃ R±®w± ȕšýÿ:ÀC|ï¯(�¿¢þŠø+Jà%ð‡r�ü3ø4®ë1Ô¢©Ïw„În¯ 'Ûu v;l9è8°»;p,2Áß»LrEïõ�|û’~êt:{™Ó$ÝþŽXKü½·×Þ…ô4M¿·Ûgé¹éð³ôì—Y+$;ûB8Ý %òNTë9”~ðîôñ󃯟�>>xw°m%šê@2͉Y?.Wo÷˜z;T¬bópêθ"ÉchÙ£³�Ògmncð¡4O¡–"¶%àÐ:X¦- íÉ’*'ËzxÙÆ¦ÀÄ80S!FÛM=`ã»&¯„>ØUM"l‘>ŸþìO/¼˜VÄÞKœ5-4Û° H¿b�èêØZ•<^XÌhížý=SØË­³(˜?P‰ÚÙíÀ0}¤‚¹7B]Ψvúˆ:uH%m¯;€ uƒ¿ƒ=Ø×4M»Óƒß/™ ï£cË)M�<ʦ°Ûýœf¾ÛÞƒ¯ñw¯ßiC†o臽Þ^›‰î'ÕE·ŠmÃÅ7:Í>Zú3å6 ¶·£8ëT$ÉÇÙ™jóÖŸòë[õJ%8}'Nh’aÂyJ�<äøƒg?³ ïõùŸ¤yK1GG1%ýD§õâÞà­?}>�øáÌð’#EšLfË©G)k-qãœ*r”Ô?›�ʵ¦f„ÞÒ%¬°bØ#”ê zìÃù´y;¹„þ�ãìè^ûŽX>B·V0M]Ùy¨�/±ƒÚÔb µåOÙ–¶á†ÜpƒÓn²%#NGœû‹ùc?BCãô`víÞà½/þ*Œ=e§.Ú¼)îí3\ªÑFÓ˜¬µˆ1ä¤RãC›˜¾N–÷š WjPÃùÜ=òО{Óç41}1wcå/ø¹Í]л–qÈx7ù ñॼ ¯#füJ½p?òÃkÜ![ÁÔ€ˆ¼>ë 7>ZžŸûYÖ €Æ%´¨I›suiíÞ1Ÿ°². DßûJ^~pÒ|âKØGYá^¹Y„ì— ÐÎ/µÐ!Âx…Зs#Kì~Ñ¥; ¯Eú4$ ­Å{ïF-ëÜg¶ÁÆåÂCûåe_E£‡§á$²ýù2ðÏo ò•=”{ÞïäOø6>øqz6sƒ÷I]²ø(µ­}•ÔÄBƒ_ /áÎ1*o›Ý®«MöI^“ÊôÌ€Ípzã9,»ñÔÀƲVìmïÆ¯'3ê¯Î…^~âåbÌW4Þ<*ˆ×‹;™6­[¾-êœeÔ› úŸJýÍû†C³& CÆË^g¸Å‘Ø5^èŠVç Œ¦j{{õèHf5!óöJYÙYP k\€8ßêùéPw#-Vê[Yë]3–n2¬�½=W|®IºYשظng{Öí–G׸^ºýª5®uîíÔ¶f©ŠJÁ�=}éa²{=D²ô òl¤u®Û-"[ã*éµ+¶µWiCªÈâÔIF§Ùë2&2#þxÏ8P½:‚­Äµd ûA¥K²N1ð¼AöäÎäóÐj¦ã¢¾ƒ®æ>(|ìx¯æWDn´%„åA•:­kQ;49 @'âµ~ë· 6‚Ý*mKy»”´P¯\TvÅ�ýž"•—Ö ÔÙ‰w¢‰`‚+ådQ81‡ÈñR¡V�ç.èAJäºÑô,î*è§N¥å”­“â>b§&Ûïð‡}}éÇõp¡ëMÌS*àEm‡Ù«9u; ê \<}õ’¼^íAkèæ<RÆÕéV¹Lí��ýàªÔ¾Oº…}o»uû¾û¹út‚^aßÃÛ^ݾïVéûMkï0¥ Wi·Q*×ã"Y‹Dyæ!þ$�]ῙͅLè\J)(•‡ô9a䯳ó– r퉼ºxþ„æJ*«à…ýXqÈ;˜LàÄ.ðù« nB½`iÑ}Ÿ?›  ¸O;yéÙ>9Å’Pûû‘gÿDžÃ¦I^C¥É¨‰°ÉKÇ»ÐjT)º[z‰èn‘Å�ñ®ƒÿêœLz9¸¡3_¥[ìn¦|gŠÿV+_Z¼ÊšŸñ“YUÉ`4s£¸EíÔÚ¼28h+ÅÜ’àhʇ)Ó[ˆ�hâμfÛî[;R¿i"j�µŸóµh°£rÏYü¿r[ïãÚoyh��p{Rô£?ñã<ïNIœBž\…ÁÔ¡ÞÊì©?�Ç‚àVJo õ^š¿÷‹xKªñªU(RkÉ ln4aGhþ‡U\‹*µBûô¥{•Õa˜Ð•»[è& ÛøÉ–“e¬ØÒ(Ò¡JÉ�+h€»Äq T(ö'Ó9òù,ÞS.%蹯GžzJí-¡j% í\”°9Œˆç4‚ozÕA÷$�Zð麯Ømû[/ÃN|â’�Dd&6ycD$¿hgSYÆ…(ÓF^·Ó‹çH|ç³§TÏÏ\öŒ^Á¿ cÿܟЫ­hr®™ÔÃ(í?K³˜¼Yø!vÖ¸«:x=Ÿ>a¤(±€Æ™âÍ0�ïv'—"®$“\Æi\yö«é¬´‹ +žQ/kŠÆÜ’�…à"ÛFApÑ´Ÿ°ª”4ôþ* @:Ì“qÌ-]V{ RŒ¢-1��ãDŒyP"tiX&‰æ’{cŸÍ–‹fœªîöl?�+„.Ð&+!¼DC ÷Ú8˜£Þ4Ƈ,3;ƒö«w‡‚8„9ST´ ØB`Iä"�¡šç~S€j�{0UgîÍ© bôºüš§‚Ã:ꦤß@㣭ŽPF¶Õž1ê…]‡¼ðÐ'z�¾æ3zë£K{ñ¥]EqX¦bùS—lSy•¢"ÀìVœ�-)UÛK_94µª·‡Ž¥Û\:E7óI#Q,”¹[n{`wèÍGCÑe�AHéÞWàÄÜB_PZ»ÄÓ{ƒðkg¯*ïxØ Wp7¨Ô1› ÖE‚îåõ¡ívÀÞRæBÎvÌ\Û*zÚ²ƒ[Úí!Þ¨DüðUüpïÓߪ`&¿ÓG¯©ªªyÿná_\x ÍfØø£ùð>öì æ¾[€|÷wî2{uµó•Þ“rŽÜãüPô˜0@z³™ùC™ÂX†EŒCMDf2FJ�W,ßÖÙ¥ qµ0ëÑ/€ íTÊ0 ü•¢E«•�–¸¬4‡î|£ËeP«ÙLX[iObóç”­p>�´P…j�ã­J ;u4rñ‚_8sü?X¡´¬ž`~8_̯{—ÿÅçN[CÑÇ1YÝ»v_r8S•¥À9 iyJ�;&8¡‡{Co·§ï›¬™&q‡V ¯tã5H¦�#(¨Av¾óf<¼  ;‘Kiwþy¶L¡FG2tñ¸'zE<�ô袌Ö\À»eqË¿ô~ÿe�–‹ŸqiY²ðkOR}'ˆòÙõ‹WJq|ìú›T#¿Þê×#·èK¾f,ÐfDÐÝó½ó³ŠYQ½Æ{Ÿ-˜~å*•TÏiGH y.S»ƒ+âž?¿ ±Ë]ªOS‘òY1%©¹†6 )<�SüÐV+âö©QÆM)Ÿ}u¾Ä-æYümúS¡=ò·èvh™Æ•îbUk˜®çòÆÐn ‘4Gc\?ßôˆ©ÝJÏ6ªõ'ûNºûOO :*|Ú&â©]5S³å�Óaá-•Eϲù˜¡ŽY6×Ð‰Š”«*êÜ(Un@ý¹iÊš;¬çú&%ÒpŸÕ¦R…I¯íùÔtèöòr1u«‘Rv;í½²ä6üÉt§pӢ腃é9›ú,‰¼�ÐL[T�Ò"võw-^³M–±}xa5�ŸÇöÕ yëÙpò‹C¼ÚwrìÄÅP¿©ÃCÑ'ò„ÆÓs¹Ÿµ‘@ôGL‡=[‹ç$a9)° ¯ ua‹¨a­C÷‘Çw(Œùð£héE-Ú•¦@”Ÿ6úÂ9ÔiÊ=YÐ×S¸óÄ6´#þ)}9Ê=�{S9/)Å@`Q/´ÖÔõŽCOzi€Êl/0�£Ö§4e—üŒñ'jr!(?Ô‹»cS׈⢱CËPµJ·'Ý’›ƒ�y”Ö0a§h\pßGinÞQ˜�þ³’“ȈN„d”Ÿ“ É8îy;z­üøYßjî£å�ëyæÁZ‘üG^‘GI¢œÝìn þ«WD©Yµî{ëPN9Ãd6JX²=‹^÷OÍŽñVº³EL¥ŽÄTâ¸d¥±Á|r�n�§XübÝ‹Çj¨fõ}T^“!ùÁ#=Rê¥Ü<ïroœŒˆ¢Gz�N!ÏJ’tÛeI6»HýÌ”aΰ¦ºej®ÇøÓÚ—… Tv@XåAAŸ¢Óo¸h±{ôŒnÅÍ„²VëÆÒê“«)GÛH¼fÝ«0’Hµ–jfe¸m†ÄÑŠ–g´…jïç ræÆ�B�¦ 3ESJû³Ѧø‚Ÿ]`–ê]¼.›Ô£Š 8È\ïê+Ãx–iÖÜÙ†w™b�áÛtak¯Z1Š˜«æuù²sØ]ä|†SN�økm1ZH=>J±Èó48ÕWy®×Ç÷dšÜèc]$àzA:ÖUR*G^î�HÚq¥ÏT¬Æ:àïw@$˜©£J%ˆm5ðÿk3\óð ¤Ö³…� t®‚ÆW5˜ÿº‰~6“ýŸaÃŽÖ¥ åÎÄüy”7µpk«ÐÈž¹‘…›fiP¡›g[,Nî éœ [Ȧ‡#½Ú;]’ˆ#•‘Zb Š…lÒ~ÿË`ºp¯…éw^¹ÉënRlŠÿñ.°#Îhmn)ÝX<*¬Uá,Sýº `)O…<+Ø"¼NÝrg(‹y«0ñõ;Y�² ³¦F#³÷�{:â?dà¦÷Ò¥Õ³±T[öÚE¢™ÈÅòµ7Ö²�Q¯vÕËéõÖì�o–­Ö¾„wo³Úç¯ö×Ìt'¹-*E¾;?ww»Ó»ì’jÜÅ\¨ÒðtgïÞÍT)oûÖgR�¶³e²[&«S1öÍw›ŠTÊùi ,hU4ÉN�²PG*]# ô¥!SO5©nJÃÒú”ì7Üsš†]ü—/^CmŠ:Öœ}Þ‡æyæF~„Èž[3Û¬{Žšë@äZ2:Rû«¢*;%3äóì®W£Ü€f®‡âdÖ—ø�ŠÏ[ò”+8T¹1×<õ¹ð2M§êP_ŽGI]½5õeríž21÷Ö¿µTSЮ٠]ò¦™‹ú©—ãÛ`Ý5ézÕEÛçl�$4.l~JÿßÓ‹�Ö^Þ3/\\çº ›¸Úíø‘ë�«lÛ]­K’ÜÀÌÀÏ ’Xz4é]»Ö­¾°#ש6°=×­Xn®î¤û(ã­¼¸8s›NÇ!phÀÿu;d§m÷ú–á\V49ê4¡ŠrÈ·ž^[ŒkÎ?;µÝ¦œ˜+‹×uªWWZ¿Râ¼×Yk{Z³�57ª�ÛÈ÷`ÑH Ú7»¨ý±ªãÛwkºµñ¦7sR0®Ï!³çA±WŒ@ÀF°‡ó°rÌpÉw…�âaÁEø6œË:$Í@CEóÏî"€ã†M+ZæL6$?¢3Y¤ÑÚì–«b|eÆ7.S}Q©øµýk ¿¶N‘w…“š_¥ÜŽÂ)¥sGŽ[׬êŽYà�"ö³J¨ì¢2{”ÐLƒl Vº¦¢*Wž³ Wž¨†±ë�^ÕjÔ%`+uUÜŽ»KŠœÆ&þñ‚éÁ –\d{ó«x‹äægH y€vÉ^IU/½ÙUâŸ*èõõ„™çrþÀŒsʺ•×Õ¹K>¹›ŸNa·Â¼t*vl'ç°úýz;{g¨x¬'�~“[t›ÜL�ŠÜE´æztzÝô­7tÇ‘XÐv°œ¿Û¶ãäyæ-²Nâÿ^sbè|o®“ï=�rÌÊÜx·äVXæÙÆ!?bû|9›½óg‚ ³BÑ©ÈÇ�‡�ãIæ pví.ð>|aÄ/zMž(ês\ í0Ë'�ß:óÀe°ùjèhë,ÀB"ÔÍw^£ËlUàJxe²ï>çÌY„KXO/�2½L•vºä˜!©n߸“÷î…W´}lãÐ%ÝbõaP"‚@<œ†ç§óE”¡õ,%¸ÛÆî7 »EÕf¸[êÔ¿#c8ÈsPk¥_Â"§TYçÁ_ëü¯uN¼àϼÎ'3Ï –WîÅnhD' çõM]%Z«ËµJÃOºÕ¬K†¯�°�[D ˆ�•XÜŠx%¬H5D ežÙ°`´!¦ì…'úMÎ!¢ÆÁIÙ «Q/v¨Ô¬P Ä«ðdÒ/µ*°Û7i�Û@FìÛöJm ™Š3”®;·8tÊ,Ýr‹ƒ¶æwoè—Ù²X„U«.­l÷^ãÛF§wÙ5.Ã%„§ð{p‰^Ómü9uo+Š¢þÿT¢òà}¼\vªÜF=ö<{öFyÎÒ^‚\¢¼a®->�ž im|ÏáDWâôˆÄ$ŒÞhá}ðÃeD ž¢ñíª‹BàÓ»±;V‰¸n�_Ú—žÏÝ«“ÑíÓD£ã“Á税^@)©7«ýøªkGWîüô^b¬}‚Œ3/Iòwþƒ[ØÉ<Áø5m‚í1–'Р÷Æ}×<†ñ8�±º×¤œ\ð½Å “ÒÝsŸ �˜%â1"÷ƒ7ER°hÌÐt]ïŸÃˆÓJ@9þIx¾X¢œo3ùðb“P¤�ñ ãñØÿôÉ;öOlÖyöÕ2º„F ñïrH;ö‰—ô4}À@]ý±ò\d!à L¤\߉èhG¬ÑîtJqðÝ4•,‘Dp‚¨ÈáXV¯r©,9/S~ž+@²Ô /Þü Tî /�:îVVkäþù(\YYV?9uoE¢€(Ÿ®`ì¬å87L¹ p»²’�Þ‰‘ü-ßãV~tÇ,üDY„²ù_íÃë•&ÓTwfÉR² ƒ¯¿h†,3‰²ÛÏ¡;}ÒÀåòn‘zx‰ÏöUNª¢�KN? ——Á2få/>}r¿=>^÷äW¾E$GT:£Õ ïÌ0Jå¸Ã»=ЇßzÿYÂW#�ÉÈ2[ Fj™ôt騶mšGŒBӎÃÅ…⢠”…Þ¡EDbÑîw>:Q'ešÉ²�ççSe:H2è“Nðøõ×mœ¦"~*+î•F$ìuÈ ÉL«È,¤¬k…‰Œ.�žÝŒ0{X.sï¦iDó*;D¬K1ý[S ;ž}Âw°»yÏÄx7‘ (Gy„-ì'/ß¼û•¿]xW0Ù¾ôÆi.L­TäÙá/–,¢Sâ:ÁiÛ¡zÛ7fÜѺI1\…i'Û•jç' É�ú>öì§%I~‰5< j‚Ѓ[¦ðY°9+I|²å¯‘¥\'ÛÍ”®æmd•’RcÊ[„¾?qŒƒš¨GXëlRê¶8賸ÅaW \ä~’óypʦˆúR;'Š�$/Pî-2¼/ ‡NÉJ|bš¸‡9ì]3Í<ýÆpŽ(YJº"‚¹& …œ©ƒœÿ-ã�u4¸“ÇØ-ÏX5e©ÌÛ„‹:Á?æ4,ßs8Á´äDUI5/)šÝ‚§ÚgHIýŸ¼…>P’ª-:QxíåõÍS58± ¥’ЈIÔf³ðš‘,©Uº\xç˜(ޝ¢ÑÇÓp¢žPp}(Âa~å‚0E/ØBœñ&�Ø]°!8=›¹h±ÔÃû¢`§5í¤pôó†µ3͸”/—�A:42y„é°uŽÁ€jÌÒR­wdvëuEþ�œåSÅÄjeÌ´ðe> 6Ÿ„)ÆEöž.Ål­M˜æ iŠª–M¹Ö }ÅÔî:c·º)F›àôQ£®"?ÍvÝu}å•xŸ|‡WâX©.`â¬6Èñr ­c¯ªš«ê[MŽP—jËU{S££è|ÂÌPXŸ�K ¦¸öIzŸÔ¹¡$þò/�,`U”~Hþí†FWŒ%+- q�œ½Ü®¥¡4ÝKvÚ¸ÏÉZ¼IÙ›¼�ƪÓÕµÔèù“oi¯¨¥ÕP¿ŠLü�âËMþk—ÄÙ¥\7 F=Ï1®³ív¥vÒTïÊnѤé'M·ê¥M·x‰+]Ùí‘à‹ve·¿Ùú늺Ò(D»U/亵näzìFÎÉ—+®)�ƒÛ«:¸½-ÜÈõŒ7r½ª7r½J7r[�+½áfs¥·[0WzF´~%´­¶´Ÿ?KÕji¿SÐÒ¾Q#ëWòqÙnK7\ÿý¢õß7®ÿ~%þí¶tCMcP´i Œreðù4 ,M(¸SÚN£ ’{Ô GÜ+�Шn®A[Xc´�èÜ·¡rËä²iK x¹¨£:—ó)r;´4A†“å‰t˜Õ‘�Ì9–`ÔIƒUὸCºeWú)ÿ¤Z]¶žf·Ì l]ÜLµw„�©èÔ»ì g„'îfÖ6–Ͻ*•pÎ%öÿ&5él*µƒ£ E&mƒÒwׂßXCè˜áÆË命ßMÀªìÄšF¤]qRÕ§_2BaçêãÎWÞÄóÎ�\”£`ãÀ̺>Ky‰ƽ:jq!,KÕš‚íRù13ˆqNO…¸Ês즫�!h4pRkÉz«d”cÈÎd¢¸UŘÛ:|î+oR�µ©•ÁÛäli&ó5Ì< ¹>É%NYSõ”¿r‚ý_\¼.L�ÙŽLwš*þxáÅ“ËÔ‹4)¯½ÛgO½G‘5)*µòÕßèÆœê7ÉK¼×?ëçÁD;º2í:¨€Öp¯;Îvư»agHž†:íÎAÃIɇíE3÷§SέrÐw U™ª…eЛ µššyreÓ4H{¨ë÷ÿ~Å�•gÚŒzí52šúªÑX7´4Ö)ÜÍîb' ÆAswØGg¾þî†u?Åß{}‘¬&ôùÞ^w×"WøÛé9xÍ|‰¿{}ŒŠŸÓŸí^»o‘%Ͳã ¹`É÷C+A&9ÏøÄê/ÚÛµÐ4Ì(Y:ReÅ ¡0|Ø~Å:5k†nħøB­×ÇÚNÄ.c#•nÊì ¡åŸ·‚Ô+á¥0Õy¿ªþäC@ôø¤NÔü9å+Ï£cˆ÷o½ó'¡ˆ åzÚРò0«ÖæåÍ:3[|ä~ ÂêÇÅLS¹ªö¢÷ÞMƒ4^…¸!¤0<ÎÖó÷î&þÞfÏÏ ýÿ|OzQ›œyŒ.hú»ù=ÚЗYpE (ÛòFt�œßù-(ÞqÈÇ€ô9ÏÕy[WÇö#üåSP7´à~Íà“xn§G¯û HSø€4^ì¼xw´ê†yYmzŠË_]›‡wˆˆÅC5*/Ý-`O*ó°GÎ`tȰ,pã³!VÕâ®ÕqÓâ~>FÚ.©@¯J«É`0EÍ6õ.“`�ÔºÈùDo²x"hX¥ šI´6gª)€µ´›,¤[Tüd¥)1e)ÀJäl{wýkÞ£!Ÿè­=¹'ÁÑZÊq… TôÞ(¡b\9>ÕPÊ2†Ê2Ȳ˜¾Lêʵj•¦šRÙR’HDÖ� CáÍ¢Né^^Ëó‘u�SßÔî«'¿Þ€Ðò0Y0ÌiÔàµ,\•_͈/#I›¹g\Â17‰Hoá4e»ÃÜý ^šª·)Â~é´5¶‹½"Ó…8`vćܦ@)Oö•»j@Nì Òæô J�Bt@§„/s=þOIÂRz=TZZŽbLÏÀY´ɖ\-–Íê$wué�•Y�+±¤mic޳>ifQµ× 9¬Vmf/rJœ¤Ä\‹IÕÝuÏ\O»>*ŒRx DFf*&Ér—­NZW§8ÔñÀ =êš’{Šú:ÃAŸ[�fõ¢í0‡Ïé^gxuñ2œ.1Ä\¨ + Œü®ÿžé+xÆlÞfKŽþÄ��]ö ×Dü5šÙß½{÷æôù«wOÞ>yóîõÛ#²Œ¼ClßhØÿ"sP üѽö 4*j«TüjXíìópqˆ²¶y|{寗£FƒLÄ: 2q3�ûñë²XÏ–0ýÐé­…3 Ñ1?¡èõ‚¡0t6FÎÞXÁ�ÿ‰ý–¼·_�Göyc?"Q`¿!S¶ñRDV›´ï&=xøßg4 ìÖó§¾7›ò§‡ôésÔù“ûôÉÁ26ýÇW‡3š(Ê l�\ö/ä2°/È�g¿ƒ®æ?ìÔ‚Srا°Vì“Ó ¿¨²æ//– ÉÑ$¤‡Ð_="§™ÄšæŠGâ¯t™kÒ1Ÿ%(–t{ÝþÞµ,àÄìiÓ#·�_�pžOÉYLLÈ^ÒW+¶ä}j]¢ÙÅŸ»ÝAñÉ`í÷:ÆÂÏa·O™l¸õÒÎðig··+ðç¦ã¾×%“±Óîíö‡*2®Š‘¡¢üØCç 8ä¸WWp´Ç3ÇV„�ܳ£?r'ïAú Ç€1™,çKj±z^P$Eß~ä]ºüpÁ›Ç'¬+º ¯ƒ£,M4n ´Å‹ÃpÆ%÷ŸÍ×@jùZH-s9YQó6;LwƒnÓ½eŸº»7-2š¸Ðw·¸Ç�|X¾Aü³@dÉÇJÀxÑÖ2çø{ã1ÔÝ~þêèÝÁ‹Ï_=˜‹qxõ3bŒ�â Å ô¸¢¬Æ,«×ßó,Ø„±à ø¤‰Øì'sJé�Ë(æ¬ï×, ™:´]¯+ºŸ!›YÍÛ©‡ª-¼Á‘áUfŒS��÷…çÆVº�¥oVê¡©¡¦²wÔ…sÄÐÛèåÎØ·Õ?ŒœÚ¡u¿âÓ¼�;ç"ΘcÄK�H`s%m E £Süé"œs ºâqÂâÈ­ 2úúÓ�6ÛÇqjFß÷K^ÜdQï’üÄPÝ–ö›f¦f²Í¬»âZÚËÀôuå:åò¨m²Z¤7P_¡B®¸ÀVeHÙ±ùåÌ^êMX¨N�fÌ=ãJ\d“sz�q3Š“e•€qv{ía~oþîˆîįIø ýq¤lÉ�öÆ:ã–Üí÷]¶%ó�:L6ê(Ù¨qKÞÝíá�ñTîΰ#Ë=û 3C5Á"—ô¸ÝZdŽWÍ�v,YbK¿7ÔUA÷ÌÆ‰r•ÌŒ:Ên}ýAr÷6´$ož‘Gj3Ú¼Šì¼F©J´zåèíæðò]Ò àÆÞu �ç ³ÄZ„ IR¾ëU;Ùÿ¥*�?ç¶M&Æî𺊇“Ô\JbÄ?`ûKBß©„.sùIhNpõE峬ƒv2~élÄtùK:ÿ‰¤3ÔÉ¥Ù_T<+µÐNé›ÿ)ù §1-éx¦äUË×¹]TE(ÏvÙâ¨È&µöî!k"}%¼¨¹k4oÖ¡Œ*«Ò°´sŒcäÔ$ñïx;dW.?*Êý0VBµ`ÌU»Ú£å-ß)ˆ*m~qáÈOÕÖ·²).z4AÕ)lyçN[¾G‰· -Ç¢A}ý?%¨ïZ‘þR+½xÀó:ï»ZÆì'_éŸ]åU« U^®éã^äIMÎIþMûqUUt¸Žn‚I1ä.ù@ö¸+WÆ7<‡ØSÑ7<…•þñs’³;Ì}�ÞaîŽCnÂu.¹† j«õÿ"\ïïxÝ^/a¥ÇÅ{Ä!±Í4wj§°rIžÖß 4¸ÓBÅ*Xv•En)3h©ßv±è¤@ô)¹…Ÿ? ?FÈ‘ ™�ƯGž�m§ÿÍu x]æ@|~±ä.ãKæ —zxß� ÿ…Hê‹Âd0Ç)-r”#°c5æóÑ”sγàoì~Œ>à§i–7öF—!kœdÈ¥V.íÁØ‘W²~tðaüüå�¯ž?ýõôÍÁá÷ÏžÐKô„Îòà'–ôà‚ÍÎx�CÛ¯@KIï'ß„³™z“¬a‰«RéÖØÉ’Ç•RÊéÊ7Nñ�{›ß´;+rÏAøÃýÊ\j5èÒä¥y� ¾<ÚÌ~_ÁÑj/+¤šØy<Þ|ª+û?/·4 Œr‹®¥EZµLa*ãÙ†åm•ïŒ-qÆúÅy½X¨Â Uîô©ö  õçÁJ9ñkZ-K·}öŸ'³ÈcüŠlNråÆ rû$%ÝÊ] §³�ØUqò@V)õyyL†“úÖ]¸P§KÆ%M³œF+q‚å…è“Í`õ‘ׂ®€ÿbs “sËs+š¸A€OE‰¥UOM&ª�H Rq»;¬w§›�°çᢵ¤£¦éŒíÑ ^"k†°k)'†3AlW~hè‘S(ª«S-;ŸAµTñÒûh–¸ •§ñõwëéÜPbP¼ƒŸ>|Þ…eî|À,Øå=uO·|óìíÁã篞YV3‘ $΃ì]2§SüOzÉ“¹ýàð½�Š�e )ïïY� Ó½JË”…Õ(€ÑN{§%C`6C¼Òƒ‰i@ ¶Ð„î|3¢žfñ+# Å*�¿Ìâ! Ø1gnäCô{2( Ÿ^@ç�vœtlÑ�VÒNKµ s¶ïG³’ÕD¼Pï2¦%×¢°VOÅ Ód§¹0�é�§R©IưQÔ�3 $UÇ"æO25¡XuMŸeŒ…ÐR¾ÙÈÐÁ©VÜyÅC‹–×~ïÝ 7MꀟÂÖ»R.¨|­}DbÑÑå·7—‰(ˆ…(¸•MÅ«Ý]æwL�†a=Ãp1¨ÙÉ áaòh¬EÓ‡j>èTÃäW¾ÂîHˆøhнØ/±û¥öâÌÂÇ,X �5{Dá^„E¹—³(7.½Ù•´õö4FÜü#9å¸Õ7oE>Gxåï½›wr�4Œ6ârÛdÑžÀÂëèÖc»âz,Xírk½�ãÎ}£ +–{êÒvr+7LUO`[ù§b¼r9-ÞSÞåÌÉåRײĘˆ¶H˜Nxg›µºÌ"èæ-‚ j,Á8]­N¬ýÿóðáW;Q¸\L¼—p ñƒ‹ß¾G‹É)üu*á¢SiÇW~Íi¼ýiÙýΤ=Ùë¶{C¯ßöö@¯‰ðjöÿPKÒV1]»Tt)ç™,p`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_pt_i18n_txt.6c7e16418072c060.jsUT ëÆ«jëÆ«jux 臼\mwÛ6²þ+\}Økod·Þîí6îÉíÑ›eÙ’¬˜²³MšÓ…HHBJ*@ÊvÜü÷;3 %ÊÊÉÝ{ú%±„!0˜yæ™èÀÉdþ®q'g+ýváŒ^™l)í‘5&k¼µ¿ù�?Þ½?<^ånyðî]ÃÙèWuòƒþu•ùÿ³{�i>þðÝ÷ÿ<9=�MÝ´‡¯þçÑ|ÿò‡ï_þ¸60¯æ¹Ž2e4 >âwöU˜Y¥òðØ­•4އï¾}ÿ£•Ynu j��Óo_½²üqÿÂWZ6N‹†OÍl§ã¦mšfvø¨æ�ŸŽ—Â]Ýé‰5+i³‡ãH$É�iÊÃâóN¾ÿQÿõ¯òè•özŠWúÉKD @î'óN¼?5Ç4触x2&�÷[v+„�Ê�Åfv˜-­¹ ´¼ zÖ{Ðèý_Y V«ä!0ó¹“Ùiã…}Ñ2»ÈS©³àß�úEãßÁ�Ê–�6úHÃ÷VÁ‚µHr4^\„WãcGTóꚯT\�¢ê‰Õ}[�e4Xæ' &9ÕÅD”Çò~elæ^= êÆ�>Š8žšÁB+‡Êe§ÛÊþ­XEð ˜ó—{ùm�€˜b(|JÄÆ�ߢD �¯¸Ç‡*]Á³�Ù�<ŽL®³æ·àÖÇoO�&xÿ´¡2™ÂŸ¨$}ÐÐãá§f,™I®ËÞ}”äÊ0ÝTh0°D+KÐca…ÎÎò$iE‘tŽ{¸ct$c à@ ~ÊDB�~-˜ö?¹Ÿÿ·tAl‚…ÍWäS³–SÓN ĸ§FÐ  +uC²™– ÞæÉ.¸ëÙ7Æ–‰J•^ùÝV�×¹À9+ÍZªÒÙï ˆVÒ[Þ,o`FyÐÍ­œó¦€N¼Ç˜Ç¯òÌ ˆ­á@ÚJt¿o®Iæ3×Xé2è™5éþé^ƒ È-À-~2ᢋ+«`ÆdÿÃ{°*ìï¹Z›Àmp[4¸²Ey»‚rjúµàJ2‰CJ4Þä%Šg‡&âæžMP‰Ô>L͵Ÿ4÷ì,ƒ¤½™3˜Ý²s°ˆô@;_Agk%ïÎTR‹j¡XLµ–:>‰“ãT¦Ö’õtO¯ŒŠ‚æ¨�„§��3àÀY^ÐS¢" và!6!Âн‰ÒlÞ*å‰ÀÔ¢EÊö36©Ä�ýlOc1ñ(Á]ñÀÚÎÄèg`%ÙseyæœX•JeÑ*s“ÛlÉ !¢3±*æ å}&ŽæÐÍUð£ýr‹$S©)dj´‡€ôb¨>Q�®v‘CÛf`/95gµŠveàª{¸Ýͼ'¢åÈhÞ@2‘€ÐMÁ¯dZ£ÃežÅæNó®Zr‰Z䃘u@V2þQ@xƇÝ+Hk"Q·¤ºÛ� Zg�?™Aò#ÀG`˜z’L^gä®^_ L¶T–íf*mTÀ([æÖÕôô:Wºbjp± þ²MÀ4p�üìáàJM¼¼/ÑrPØ&f¡"VÙâ©NUŸ[A‰ÅæŸh‚-[Ucee”‰Í"�š[ؼ}f•HÇ2÷6rL`k–ùšT™:ÈÛJhpS+ÃŒ¿’¼x€M&-Ï6� ðÁ#-TãÓ‡•l>‚’y© ±é{í; %1S…éáÆîg®¡Û\RL<3ÈÓHø‚!ÊØ(«&s( ÈH±„OG*Á�ï"¾l¼ÿ„yJˆßd<Á…­«©ÁO#ùåô12)²í _¹4IÌ—€ÈÚL ‘YU-[�,!a¦SÈ lÈt�ÁÕ¸u &߸|vd¡X‡ÇÔê GLˆz2¾\Ù.fvº‡º& ñ<³¯�"Hƒ0&« iêÆ†¯«})í$–j’�~ T¢+©9,l!“já•Ba*fBÝ›ãbÄg”F¤QúŠØÄ=í {ó˜m¼éNЕ ¼Š™É³Q57OG ¿óSvÅœ¿CÅ%}ASƸQ«[(“¡‡�Ó-”ùŽ'ÃA§u�´H!°Âv¶D5V;`;ÂP�æ±€¢Áj‚,�ÎóP¦‰èKøíÅR‰\‚k®r¯À7„j%O4?óª9:0Uð|šU±|‚â�/üf.£%nàl°R�_*¿W’ŬœœSÿô=5€=¶E‚€•šÉ¨—bjÕŠcÉî ø§LLoFm‘h�—�G}x(=£¡8þ… Ú¥-¦Žã};MÕa[ÚÐiõØñREï­ *ˆN,ØÄ7ZùЧuÆöVZsÐ"¶ÕçF�x‘C5´…�åÄ.­/ ËŽ„Ú‡üîþ :û»¦MÚÖˆ±´QZˆ\ÕŒbü ¯ë5>�Òßkzͳ�øÊ…$Bv£S¤F-ÿNÓËMù½çè$Ç—œ$rÆí¨Sâ…Þðå3jýo9X@Qó[¶ù£´°úPú²Ýbwà u}çÀ´àÊsi?B˜¬½ Úm~÷ÌΊª¹Í¢²-ô"�$ê–(³�»0Élˆ",Û¹…_g‚ê–6‹Ãvž,|D�óê,­TÛYxÂ@@A Û/Øv©ýÓ,xCñ|6É–4'™> ,‹â6” (d¹1+šHÒ„…xÛ$uk?Yæm(+••Í øž —ûà÷ E _˜Ú,øÛV8…oÔÚ,òÁŒ"õº³ˆoçÎh³Pn›Ìå>fÚ?óæI„ÍiÎЮ>âY‡ÅqúŽq²(ÑaK·d ôÝ10â»K ÝéÅ{”fa õ1½­è°ð¼–+܃Ÿ%€á ƒ©ÍµæVè°pÝyJóÍ,pCª}˼CÕ  FÂÎUŠr—û¦n~CÉ�¥JȺ,v;à|»)r;,|¡?y½DïüéŒàÛa1è§síy¡ÃÒfÇbç–×rfHæ´‘ÚaaØÉ-í1 2ˇ}0çŽïû¬ßú(Q�ZŸ¥E˜¹&¼˜,ÉWè½>›ÖË.Œ©Ì@¹ƒ¼Ôg=ÝÇ¢òeäbÃÂãeë äº0O¨@Ðñ�Š–Å7Ø8 1ž z»ÏÒ4H`6ê³\N稭`”£K± Ð|ÎFÖ9¤ÏàþA Öô çô‚°yÎ'k°dðÖ:gçz.Qï9;Ïó\/|õ9`bK´Jبز�°P8+$zcÀB°ÌWçtÀ§9`M+’¸ò€e‘©´À§„ (Ûô7®Ê"Úd½Š`ù…ÛËÔK„ 0`¡:°â÷œÔ` > Ýolæ¡éª7`2ȶ«¦ Öž°œ'b¸`íuÉÒç ÖÆÆÛé³bU²å%«Ãë|»b½d ìu®,¬Œ·kíK–Æ òš™Ô Ëd—ʪ™ ˆ^ò¥›I�¥²í’EFX¼nµ¤Êü»u±}ŒåZÑc¬:s/ÕIÆÒ™ÔKÖã»E/ÔB¦ÈÙ—,7\æwpØÌRBQÈŠ¨˜Pˆ-N:â#€°bÙ!›ñ†‚V±C6Û ±øžæQ‚­op‰%‚!NÎóÇ�õî]I Ù]i4Ò�¥²Ðª`(ôoÔ kÆ¡ÂôüÒsÍ� ž¡t†Ê¥!7O1TY¾…ù�¥·a~/ÓYni™2dk”qCÖiÞ–$0b=«‹Ë2`m=¢!ñΈ%Ú‘IhõçWÇ#6&ñ8žÄÃÉÔ [}x.…LèƒË”^’<Ä#HÝ´á"ª%Fl —5 uK‘ ‘�XŒD„ >2f5°FlV€’ƒ~Äï5(Ú2+œ;ḇÀ€÷T:b¹T¢=b9`3/ÌÓ.e†+aeü©àæˆÍÞ¦ž€G,ÖG"ߤ’báŽÞt�´²Åˆ…üK*Ý¡Êô©uÌÑX¤Û8³a46k `‘lP†’l¨Œi—®ªŒë:7 î)ŒÙè«Å–´Æ,=Ž´ ºÈIˆ…ú„öÛ�ĆêžxbÌÂÊå‚:b;–+*�Ç,îÆû˜…ËXyã³."˾•ÕêåŠ Ì«´(€&¬'Hi±‹5a=3‘–,5aÝ21‰*ëÍêjÂúg"V¹8"Ý+«” Ëag*Q«b ;aék²›t'¼+ý6�ÇÞ„5QÁ½[,CFˆúdÓ+Kežˆ&*‹„²XLXãƒûKÔË*ˆW¼˜°¤‚�ä ‚Ñ„¥„ R¶²ñ>VÖ‘2^×ldúeé5ëþk™kUãšßË1•·%×ü{ KŸ+¯Y´_c­à<+]³Ó¼Î‹EKÈN£EQ l«ÊÏ" $[jyç…"!½ib!_qIX›Ê„jÙ�­Â<ÞtÁš�6U‹ÕqÈÆDG鄽V ù�Y*üÎABIÈòZÏ%f½uCÈn…k‘Ì„�åBC"}�Þ� ¯²GÜͧ.ù˜ƒ¡4$ÂÇ eÕ¶!¿&À2‰ ² ÉUÅ",dc-„ŽWQP€Ç`á«ífCÈÆ[ASò%˜jBY[GŠvLB6o÷Ժ؀ ÙÜüy�²Ò«f?U–üÃ\|TUêŸîyÿ0ÍmÿIÈÃÊ—¼SþýÃRÐ6ö”åy\­C/ôÏ~È`û†»/©Ÿúgq>5TÔOYˆOÅî|XôNÅµÃøS·Só›ô„8e;U°>=‚Å ÕºS²`4H©¬¾šž²È�æšj¯7¿Óu/µ²¸¥¡üÓ,§ëXày€äLx#²œæxç›YþßÑ"vÊ‚j*ôÇm |ÃrìMd+"¬›oKßÔîA/ñ^¬ ºx΂Nãt¹%½93pS³ËþTŒ�¢›iï†�ïÍÇ™ÜAÓ-;å[�'êºå“„�ê[¼5—¡—üžtQ¹Ü²Yáèî#h§[ÖŒÞN· O¸êî˜ï•M»Ïl Ð,vo•ÌtQÞ²YùVè\dˆ©7,-¼�å%±ÁYžå”�ÞÔŸc€Ö±{iœ¡+Ž?óÛ•˜ÖRÊT?×,»”¡`~˺GЫÒ-ó¿eÁù¶²·þ–�¡·*�Q™‘Óy™X¸åÌ@BÅûkåŒÝÜåØc…›"˜)ž9ˆ„§øðLcUî„ü[Е.ÅË¢xv/~——“ey>ÏÉ"42½Q©tùw¾Ëò½“éÊâ™'`!QÜ�ÕPÄÓåp<ËNÓ]o:‹ÝZ ൠóyžVwùlZ{—„ƨôe%�A�é¼®ïÊd­�,Z­öhÕ …ªvþ´¼×èìÓRÐŹ†YñWk±Å¸S:7ªót&íÕœ¾tŸš ꃸîÉAÑH•$^¸Âל`WúÞñB‘—œšº¢ÞKfäð:7Ÿyè�ò§æR¬åXÞ ö)Yz;£›1xãZUÕÞNðQÌr°2Àu0AG(=·øâ¨áïÿ¬öÜç¯^ªÞq(/õÏZÅp{ΩF .Ú<äWÒ!¯WÙV ÎkÝݽMõÍÓ§Þ¨x!ÙPî~v+–T33ñxؘ'6©¨¹ÖGh¬i·Èæ<�¯ +9 |ÃŽR ±•šÏ%ÞÜ÷_í;÷»,nNƒôœÄ+<ø(]éq*¤jXBÇ#A)B¨Z0ÔcpÆ,‘­¨ŽåÀ†�eé·NŠéx«ì±zÕ6±xƒ¥^¾¼ÇB¢øÌæØuyä±~Õü!ë® e&õZÏUÙÈCíÜV=жšà‚¦’y Žå»ÆÍÄB¦‹5T;½~é#ÄF*V+ïAD�œ\…a¯€ôöÊš(.N9¡·ÓímFÒ ÚLÆo„Õxƒ¦†Êð6c�<©êa8ãŒ%YäI¾t¼kË8º á^ýI�ŠLy†×¸'‡xQÓg’t85ƒn/lM·tÀŸnÜ)'÷̦#ðt-8Àús‚¦l¦SÜ +çúÙ•¿ŠÞûrדhAº¥‹ I¾PúSó®^¹òI¼‡¿Oá;hë‚ù)ÁÇRÝ ú�’¬’T¡¢@ÅW ­…¢C…;¿ÔRÜÏþ^ =ÿFeKú-�›ã«z�ñ÷8J¦Z¯o¿ÞAlTýeúq–¯á鵋JWÿ™ê“jÇ5zkqüe” õÚ–�ÉÓŽKm‚9þ¸ÊæFÉñð û3'ÁZ~<Ü\¿9h¼`K„¤;¤K9þwjêíSþFM\^¬,ïíî-ä*%J¥Fi鸕Hªçf&ËLZ†ìcVíWÿÛÞ›v·�¤i¢ßï¯@qNOÚ“”¼ff¥ª«òÒZlvia‰²ót�çè€DPBšX)K–ó¿ßw‹@Ù®î¾sªf:mK@ Ö7ÞõyJ˜2ÊÛG/ …¨BE»,›r7c%Y™^eTCÇšµÊ®·+«'a…qŒß�© ŽWŠþ¬ÉÛ”€â ïÓx7±@k~”Ö+ÊçÛ冘þŠ4 sÿØà…Fu�(2ðuøbá~1Ë#]y�gx©¤|o7zG†üÌh-Ñç †‹—Ÿ¥Âg†G=fy�÷:t}+ Ì©HJ{ÀÑ(òfrjh¡Ð’¡¢ÊY±Ý(èë\]Æ› ý²³c´ÁÚð"Ŧ"lþ—Ф;X¿ªK^¬îÝ?™Fh ­i\øæu³•à½)G³u¦ @Á\� 7Å2 8nr<†J¨cm3Ñ{4d•Äë X&—Ð=U¸L`â¥×4Ba@¶¬¨©ÑìÒì&f}V›0&r*“ÇÒ|ƒÀ û]ªúÂ;`•g8]«ˆ0bâE 6õÔ¾ëé¼P*‹JNf# mû%°Ãñ~w*ð׬ ȶãíöÙm¼k=ÄB«t¨m)üÏ£ s”\Â|Á5óH»‰¯e½´Xms­8 \¢c)KôÅ�O£Wùfç€^Ï‹Ýè¬òïhâ;gV—ñÀ2½ß>úlžb+$í,ò™ÅÙuN¿I¨bÕ|cH‹8Ï—0Ép b¸ @9�ÿÊòb…Õ鈦›;~ên%^¶c3 -R¯–ù,^£mÉ3€ š®àÜ!(ˆ}úF”£ÒXëìh[Ûis[ó.m“—èPW1W<„«ª 3Ø·S|”ÕîWq‚“]òÒ·.óaYªªÐ† ÊÔ…“x“ Öו*ðš­ÑQ£/÷˜@WÀø^WÎË�6ËŠt7¼ºñ P}y‘Üu€•- 7¾»B�R, œtƒc°À´šoø˜ß68­\9Ú0‰Èý›lø¶©Þo]§žÔ|¼;ØØšßÒuf_»v;ˆ ØãT ºuÄ8VŠFp;²]¹3m–#"Ò7Š£“â<C|NØu0[»Ñ¡”ÓãQ€o¯I/O°ržÚ/H™DØ�-b1l”ãëªvŒÈ ˜B~—äš®j8dæ_«¥÷¹à]µßŨ»Ã0°›I×�| ‹”Ãàõ8½Ñ¿ŒIÑ|­r¿‡DvDmG“ å‰�ð݉ãË|q‹Öq¤ª¾ ѹãÕãÙa¾’³”AG—[Þùla9=O*ýP¶:ý\D¶#™Φö 6�•¶Hó-t‹vìŠÂ4ÁâlWÜ?ƒRà×׸�øFäMÅ6;Õ >†µ1(ÚÈÝg›%y&k!8¢Ý«ñΈf¼¨å+Š,‘/駈fXYçU–c4‹£Ïï`çÑIù,@‚x÷wçLxúÄiÕ¸ZÞ23´*º'ç“Vª •õÍO’b.Ç&¯èYxn>óù‡z[neæ¿hbNâ%þÊ~¶m><ÿ>„“¬æ}ϬÖvDߦ[�,ß§°4$‡‹º…㹄Kìèb2D¬›a49ƒ¿�OFð_�Û»CQNµ¾Ä§k|0}À�ã9OAE¢.Í7J#‡>µXP XOéˆE²Ÿ®\«)ëLåÕ/^ýŽ®�¶5¡ö\%‰âÊ7l¼h0­r¯.¯A’w-Ðÿ]zʵÿîz¦H¤vVèn�½�<î²äY¼gÖT0‚xµMþuØr�–f؅ۨئY;2�sË9òyø1î{O~g, 6u«ÇƹËrpÐ¥A^?º*AIw6=Û¤®•ª"/̨”ônÄà ÁùMa¨õGSËžŒ(ðNOËê\$Ul1J^ÉùØsˆ­ö¿û]¿³øëè¨õ¶pC/§Ê¶{÷ô»Ñõ{�Fˆþ0†ÃK4:½à�Ìñ›ª• ƒ:Ã')›‘ÕÖ*óÏÈò+R¿ ÖýUžûQÖ´IPÝX�Á´õJ6NRÆùñGŸÆ+BÊ ñ߇Û5FR4 ¢ÿbÙÖ¡cÓ÷ºâŽ+l¦­îö}¹�µŒW›–˜†ô' )ˆ»uÊ^å+r*b «ÜG—f_ï(žSÉ+ÑRù»�›Yí; ÊŠÂitûÖ+Þ,�¬ÍC'Ëqö·NÒù6]µ ¾)-™%kç@£ÛìC†Ä­}Ãkž]ƒÐjïHõ9<¸8&UŒ "䦆.Ü¢�‚€�á€Z ËFdÉ­˜G1&dÕQ�àÛ{l7º¨Ù�võÆ9/�T*�"ç$ÈÉÆ xúiÐWh!ÆÑ=×�Ur�^a</ì9f°Ý%€”Ç‘í,É„ ÜE=2HÞ¹q¥y¾F`rç£yý£ZôÓmjG¹ µ9†«^ÂÄ•ŒÛ³|c/œóÕ,_45½[íÛ‹`ŽIFW-Ñ�ÞÓOÐâÖ×Eƒº™’OM.°Ú§^ú>uŒukä9ÀH%iŒ*.ÆÙz»i‰ç¼õNé€Ð¶˜l1œXPB8O '̱_ñçñ2NØÒ l·‰³ðq¡}t˜lƒ½(‡KU;1‡©H�¬ÄS×í¤ûõÁ´^¦�9PÙ)�îWÛÍ&Ï‚yV¦ç›L!’`–'^Ø™A/µs¯¸ÈBtÎD‹Ö\#ŽkáÎuÖÑ¼Š£ù îÚDZÏg‡¦bà>Þ>î+|zWv*1-8©Wz+øæÝZ8_28o›ÍÑ…¨rÌxÒò’V—Ë%zڲÖ¡]uÌ{é‚É?6Óæï�ž7¢ °Í~S›æZÀŸ—`6{�þ£“èIDT1Ì¢ð‚𠛣GºÃTm‚ÇE–iål‘ zK¡ G¼AsÄÌ™¤Vª‰Ô,±ýj?~¤ UT¨BbêšÝrŠqÄKФŠàÓoâYºL7±}îÄøJ…ý¯(5)ニ7mvû@‹Â�ËÂ�?Iˆ~G.|œóó†o”sÅc©6&Ê ¬§Mø6C¿õýøì,¾U{ÙŸÅí{oJ §ûXvˆ³Lüh˜ÈG4¤HOÏuÁH–VI›ð³Ã·Ç£(Í*ÉÿÄ¿Rú7THQòçð‡•à)÷ç-i¨~–"iw…¹«ÔàŸl¥jeÌßã(­ìW\¦4Ûb¤µŒ9èTùì,P†ý.tâDÍ—?–°Ë¡Ì Í,†i¶ËµŠö‘:¬�ëW•\œ�CoÆXY7iÀÆ;„MJ!szv#”R ú¨z%aï˜SÎÃçt“ÞÈDpR^~$ßönjÎf6ui¹Îu¾Ý®èñÇiFp©=ÒBKÓçy­˜Reœ!‰Ê_ö¡4³ÍÚ8a%Ò ßª!HGû*×9’E‰'«cå¹g•ïû Çé¦Àû„çΆÈ?Û2Tô.‚˜Û‹®7° Ÿ<¹J7×ÛÙ.¼ñ$»ºÝ¡°àvç“y^¨'œóäùóÿƒþ*\ž;/ð?<{ñ\úó¶ðž,ý¹ ¨¬d³+ŸLóêÏŸ pÜ�Ù'GÚz ·±·Ñ74K¡‚3S[I°[I�é NÍáïuŒc‹HʼnÚÉ‹+góeRìÀq¿‚¹ˆOp ËÍ“r»†[ŽV} ?ƒ½c¼äo]by¹{½Y-IÛ]"Ÿo–¼C Ë™÷n‰0šzE*õð~âeop¸äüóœ:ý“X~"Ex¤ŒJÑFS$Rí^ç).J‹Øáãì ñ™b©²$ùÉßÏ1\µ¤³} ½ ÁzúSú™I‚%-ÁIÒżÐô7²ª%Ë 6:ÃÛ1 Q“û�96. £Š¬CŒgSÅ ÂÅ�nÁ†€ÉrÌóùM·Ø‚Š>“�mL0hŒ� cxNä¢u@bºÅŒ°‚º]/�œ]޽nÄ\w#\~¸*0['ÓÖË)H¦¸9ÁXвfÍ€ÒwQ«Ãÿ;ÿ™¼ ˜¬�½ð\F¼ó‰)+ÜŒaâ4žÀå�µ�™Kž¤1&�¬f®Dæ o-�4“�ÐÇ_¨�xo§Ñ™¨Q)æœS “;¾mÊn•fi p½E¶–Žêä0—™Y´–„.ÊÙH1‘º"Ͻ©ZÄTzÞŽ`�®³~às�*lŠzǯ‚|Ÿo7TRYæ‹ ææcýŸée|Ía¥>ñ’bd�Ž¾Î¿�C%¥Có«ƒ bo°¤Š ê#Cb†‹kî|¯äñ^˜J±@mG ~0�\žâ„^rm�«o°�j†H—¥NEæûŽï:¸¶á»¨Šrc˜fµÝ¤KÆ ‰éΛ¥™s–ð\昈;äÚhJS«  [¡¡j1/¶Ùåq½W˜-Í(cpš¹*A‰×’æªP«Ýè-Rî"ó¼ý ‡+å­´„‡„åƒ<@œÒO)Öh.K*ã.Sþ¸Š®Ø-SpÝåR*o�¢Z¬ ŠWæÐk°…Öãq¤Êé(ž�e~Õâ >+mEƒj‚KR¥ä“yhýÖ$7M79‚„|‰ä¢,SÙKOì1î•¢„Ï4À*<ÚˆŸ]ðlõÍP’ØQéE-7Éó¢âžÜ)A1YÂß9_m [ MÛíÛù…�J>ún†�×ñ&šž}{—ë ÝèÔ\§å5Ò5Kˆ-£s4¥3hkk"â�óÆâ�ËSòUlO‚$ö0ˆÑnt�{lžq�ŸV¥¸ ó†èÍÑɦç´P´Q¸•§æ(Í“ôÊ™³ˆFŒõ‹˜êæ�)¤RY7;äìEhâçŸþ%J (㔪ÐÅ`µ�µnbÎEB,2Òçe–8ÐŽõœ&)Ø‹wv®fyŽÆ3¢€ƒ°QÑ_UAÙYCýž7%õ Önf*§$î:oûgÑj�/Мì>­ºÔòÓU©²›|I�¸’Ü‘},°z/å€sôf´Ö(à&Dægød™|LÔ +ÚÉõ½³Ì=c˜¬Ã&­ZesÖvaj¶f%À{72Ý(ܯImænšl’šs¼‘™)TvQŠ0mô#vrã°þ¯0G‘+•ïÅÏ|C™»8[ »³k¬Ót§ÊΠΈL¾5­å&ùm›`jª¨K¨é�%îÖu")G6q�;7Bh�Xx+ªÏuÔ¨ÐÝzΊ4§ekl:üŽ\×7ÛejÒLî>òVSf#²ËKfw&Dôz¬¬#8rÐIúæÆÝí›h(TÝ«mOÔq«ý£óMªKë™}�P_°Ët–C4áÝC§¶È)Ã¥E–�¢P\@Åë߉9J›(J\;äÑm@‘Œ>aÌd.pÀ±ÒòñÝnÄ­‹Ïr㈚ª.¥Õ6VŸ�äj§Öº¢±‰žsœfÛ[ªW£ºªB�*Bž^@Ët/aa�ÝÓ!E;šÇ¥®*7õcÆ—Ã’ÆÈš'N€\5Íùܘ©Ø?£¶i véÊ7ã«Ü EZΛÖÂͱFˆà͈ª«Ü‘XI´¢áÞ¨O‘lVè�I¨7•˜8¯ožÖÝU ×H­·14ƒ»Š»¸b°ƒV–wêB§Ê“–èZYÅ.Ö`„ÞtžlëÆ€_RUã�"-qq—œ t²x#Rqhj Ÿv£‰[ [Ú3�z‚!gÏ]ðCò£Ö0­à‰×y~µTlÇa|-A…eÇE:Û¦V٠׸z,±yN·wA!�~¡ñ톲ÜdŽâõŽ ÐÏe‰ÆI:0i¸¬¸qñ¦±’Š^RiêN0õ�¾+E[[½©™Å�ŠÌº…�.-Øh¿‚3Yù˜< )u±¨l«®õ©ˆÛ�M ›³gaV€ÂÎ@'Õ¬éŽ^ùB=Ƀ嫜Åb–“�v}2‘p5õQßQ­çArµ´õ�B’)lï~Öš?f¸ µçfù­?L)ñd§°&ŸáRYå\µ›%ÎŽÜý< ›#?hw�N@|ÅdT4<ná_£˜°Ã�#+·n°DßaŽ,&!ÜVÔ‚°S{òûŽnžš =ö(¸7\žúÂu£Ãn0Ú z/,S†)1c‘�Áh¼nYÓêB€Jñ˜£Âú5SÓoÓæZª[³ƒ˜01›¼ìð‰�`t‰$‚B'‡O�´moþ ]Y¹Mh˜:�Q³àÑ'Е]·|3è"¬ûô(„´:'íh>ag]ËÖ­jww×ä¡-ZB •‚>£,TSÉ»Ý{bò+ßâRè¶ÐQ^¼ Áz g ØT­4$ƒÚn„�»Ú¢«Ã²æ‘r±sbk½R­Zþ1I†™/=Nî ¨Û™V¾¥S£wÑ£×ÌȦÇÆN")¥Ü9|Žæ’váïÏŘWŽQG™%|ìðv�Ê8ÇîS°¼Ü-�ukçÃ5Éò.¢x(5P6žoÿ˜'Æ,Å_°Ï)ã$üJ¯�|@¨ú m�9yAPýã�`[DÐñe¢ºˆ­áeœpThƒøŸ¤íšC  E*;Ûa`‘—��ð΢âá.ý -î0‘)NXÞ?;�¾=¾8ŒÆ§Ggç'£÷·sCòÃá4:8‹&£‹ý7º¥@ï)3Ùô]‚�gëÇ�c0Þ-Î�OÞÿ'£oðˆ—A+É2u­�¼Mø �  Še[+Öµ˜ˆ„çºýùçÂŒý†‰À¨ÿ+* ÙÕ_<é)ÿúD~7ßÉ8[xóÍÇ 47:Ûð'c/°ÈÞq7WEú—Ô@òj€Àà;©ÿì±ÙÚg4p˜Ömˆ_ñ5Ç¿Ñ UÚø“7ôÙÁß!ø�‚gRKCh §"ÿ‡wþËeÊEóÜHøÐŒ.ÞŽŽÇÿ1:�F¯ÏÎGæ³”ºèÕÙc×…y³Ý€¾*Ö ï'4žòÀ–Þy¯Ä5k+W0Ï ÎV©ATÎðXßž��Æû„´œèt�€€¥6�3ÆQÌôÁX&9w;W* 4‡VˆÉ"®4¶@ÝÛ¤•nKáx`µkUïE-®5_éËßÀp×ðO`ßÐ2HUºM' ¤5·ŒÔ}‡Ò¿>^´\\ÞmüBN‘;/˜†åH+núíR>!Á¼bÚ0˜¬6Êdàš¾‰”qYÑ¡BY¼g{É:Hw7ݵЇ<Ê(ß3*öX'ó'ÚUú©VŸµÛ€ñ—NÛdÞP�{s>v{HüÊÂ$~Ÿ"yøˆBë3°4¨‚ a\ ÀMn ô ‚N¶1ˆ½(ò t-R�IY“àM”б¯%ш ÒÐûÊ %Ûêºxê¹lxÅEºXk¸É_mÃùqò÷mŠ3ÀÎƒŽµ§¶ÆÙI\|ðëŒ#j.®µFbŒ¶à±H'ïöù“)Ïq)±ó~–¿ƒ-šÈû á[Á1vó#‚ÉG)¦‚Œ­³†4B¦~†(xª¬ 5Ž´£Þí<¡¬ãO§¦áMïsËó4û„-óóÁ!x7` ¶ÙÙyô.×ùq>| ÔßúÁ-oP+˜‹N½p¤À¼\´ìØLí!"ýôÈhâ©í+Ž­1$eÆÏ‹„f$ÅbSQB²Öûè!ŽHRÂ\ Q‡ð&xˆ÷û^Ë�ÓÂT³l;Z(]¶¨µ~5ŽFÊ”ÒÈËÀùAZšœJFË|[ø‹HŽrv$n6þsrqÌ\&­x@'L®jÒ¬u\€åþ}xÿë›ñÅáÞàÕùèt4¾:íÿuopzø,·!üçß÷ûãÓÿ¹çùûÁ/mÛí I±PçO× ð›ís–‰…ùÚ>0®¾ðóåCî3ž ?  ìýbñÐ §éºÄ‚�<•žs­èðž�]’½�XB1ˆ4ø:>É «Nžh£Ô¡¶mræ°ªT»À|vÚÇé”TZþ}˜gË»dCôn¢J¼,Œi‡y&°‡áõL[tζ¿ro¤½PwxLPY›Åç̓ŸSf§•”�æ/¦¨p!eð+¾Ö~׳x*R{-´4|cyÝás¦�+Ä&xóœºwNP¯ôËé�aÇè˜Àù2ßú õð-3|ˆÖyVµ¾¨Ño4YL¬o¿$4‘oR¢ßk5É ö5oV3`„œù)†êFÞ83Á4#,óãȆ�9«8©ñ|ØVèõ?>F/_¾ê¼¬j±Æã–étÞp_n¯âƒ­.N°|Q¹0Ô=V¡ò93FŠQW‰M¸ â�Ôƒã‡ZÓÓi†¬m[_êA¨‰A¥d¿]"ö<´µQ+�±{qv1:Žâú,qÅeQ¶‘7Zýû-¯± ÝÀ�…b­Õ,v¦(Ë1ûvJïãœ|öÑ�îü%z�‘LøÓ< q ŸÛîÇfj®Ã®¦aq«�°ÂezÅàï¿k/Ò½¢@Ðý 0°“c-×ÄU414ÜÀ®�¯�\ob‘©_;9uüÛèãÏ4º(¡ÜI´Ûý7N”,Ë�y‘LºÐú _UÕðâàek`‘cGƒÍáWRyãõo€�ûCn‡!ùñ}%«&Å7ÄDš]©±ß]ÙËÂyK®§y¥º›é•ÉåiÅCSKy?ü‘JøL«öFñÑl¬™óâá"±õZ¹‘dVZ3v3•Š¢ñɬ«æY‹Èu¢�jšo²˜qÚ'óK�]‚¥�`: û.'¼�P;= “u«âºv7è}2óÇï ^Oe-ÒV’ˆfO{¡”v uÊPG^u÷ŠzmtL� ÔQ¯hÌm“7nŽûjo¹ÙÖŠ„Õ  �Œê+ËÕ²>œå×—Ð�ùý~;išbÖ"c’ÕÛiM»yT>Öó…•s÷ˆÄ÷cgÆð—96[±”ûïxGH·aœÝaÿ‹­x!¾ÇÓ k|§ó8|Ö{"ˆñ7€=й�pÈìÛ /z=íé1ÁÀëœ%a‡»Þ‘uƒáSü�­Ò¤ßð¿T£I!S3™™JO#‡baŠ�x,æ’5‰‡Ï>¿¹.T¼qßÁn™b.ó)[ÞE.¾ÌQ7ªgïØMÂ¥#�õ~TIÎ[Ö©Ì&€ï 0 b4€­Jv°Îí´,ñ®†®±pF®˜F½ÞPží$˜ØØ·� qô–�fP�èÙBEÑl´'{ìá”ükÊZZÆ™lÄj£l™ÏjÌèTó4Ü9ü¬2jj‚'”—x ±€ ÉlýZM]A°[ôè#³÷T>�yÃ1˜=ÓòÊ¡iõ= nÕ—³·Êáù�Í‚âEvÚÀ}ø0K0õÍØ7AØPÈ8Nàzš¢ `ÍÙߪÔA˜µï)ÿÛįþÐ&\�@UV T™‘¼‚m¸]·¸yϨäl»®Üª9•„`É#–„(~BÞgUÜÊ.¹ß•Ž\DĬ´R¾N ð¿´Tð[R¿3÷ML%YêSL%!%Ps•)&jíöF”GÔ0Ñ5¢…Ì`Ùò¥‹7<››x†Õ>"­Jª«L%µj/Ò²ø¦ñÒ[—c&R&oùðézöå³Õ95eenJïäœýb@®q^þë ýN®4”…HrRMñpÜÔ¥+¾—¥ëu ç“e7\ºF²ó,méСuªØŽ ö�Ô¬ê vìOF”¾˜éýíòŽ 5‹·Ï‡´EÊýMŸiK§‚2élA¾ZÒt�4™˜=o-ðˇ í ÔRöÉ,õÈX©Þ.Q¾¢îSÙ§S¸z�»Nß好ۻ—ãÖzÖx„—IîGØ©?—f—TÀðû‹ŒG·¨utI¿½Æì~ÿJv¼©C1�+Z!¸CVd ½‰ 7ª¼\Ý¥|ý^RY_иk=ÙröÇ•&I!º¤§Îeu+ê¥ÈÛÀ[Z LÎ"¤®›!´›<•çì®÷>ZC^¶,ȹ]=S|)wÉ7™µvÛ¸Á'É^[FRnW«¸¸Û»_âU ñuÑ2.7h—úz›¤HÜœ´_§˜Z¥È&NZe¬×~pÞ\¶›À±®5Pùlxa�·æÞ3×fö;:ˆ?8[±µ�ü6«þm9ÌŒÏ~Ïå4ÔMjÁ;+‘QPŽïbá½²S„n1¹Vz= kmï~dªc—Ë;Ü%-‰PZL7Jj7õ$Z%†Àp…�ßÍán€âc\Íï°á4¬�Í×n­ŠÆ§Ôj� ã—)³a8ÞxËô-è[¦R†º:öOâÒë¨Fæ�gÈ‘M¯f¤G&‰>t9^ä¡“9‰‰«Œ 5�—ƒ2iàÍeþqz·"4x‚rü°vHžr�ýt2ô§(•„]ˆ• Ĩ¢pu:(‡\/Û™H ¦yQ¹tò-{Ú<çDùQ:¥RÎbKºÓ!"iNõ/yÉ¥ßo_¸®J^Î{ nåÝL˜Ä äþD"—ºaèéÌ|€Ö®Ihû=?ì*ŠEïuÍò73©tÛnt$;Wø™ éAײqPÍ�c+XéÇRq{oq“XS¸Ë·ûq6Uªe¿Tb`è¯îœîn�U 60ZéIµñù[“Gë  Õ¤:Ýd@ñuÑ ÎÖ÷ßéfÔ§  £Úÿµ‰¬öôä;ËÎÞÙ°lV©n�“°CÕî vßgúâzŸ=‰®ñ�'Ñÿ‚ÿ#N�'èòÃÍj=Œþ×îúzÝE04û�1À�¨°µœ±|ëŽo̾ãÓñþ˜ê‘´…÷€k4Ëë×èž¹Gƒ7èÞà 2¾(Nè€6‚®¿LŠÖäO{¾RˆAÐÃå°7`’øk—C^³½zTt{p›kwÅ·µFX u§¼ÛtÐoi›­Vüó{ƒÖòóqE�ñ£Þ¥�Ó.ÂÑÕsŸf“«ÞÔ0æK-Ž·<(VÃ/R2Üø�߇²í Â<5:>=‚Gå÷qf*.üo°ns¶‡NU 0·ËAeN nóÁ™½a­úù1î)<á=j˜#¢E¬û#ïa‹À&fÈôJ‰—Ø Šm(¡¨`©Á¸£“;1±w#úì:žç…f‘ã­Åk…ykÊÓ°'qÈIr6uDÓ ve2!¢sÜŽâ"i¤8†Ñî5®ôu^bdc›â.¶ÌÀ<Ùÿ\ÇÿÎëèbz;ù›>ˆï¶e¦jyô hoar©£$}™³êW ßo)Áßñ£¬vÄ&ö2d`×›øF-«xW˜öÇ—ÂEåøÏ÷6–Ôýy”ç‚ãD�KÚ,'+êi�wʦd�÷‡ÓÉwû¯ã?bhâ»^&ŸlÐLœÞ«­gcçßT†qyTx¹œžŽ¢Ðj†Êï[�oÒ9¾ò€I[ûÚh¡E¨?ým§±;‰¸òÊÁaïÊÍ~ø:œŠƒX Á`ÄVhñ h„«Vm©5RfÔBqÕ-]SKFpýCÃí~ |+&X(°Ò?›…v#æMô�ô¼4Þ¦$.¿#££6þ{´5á;²þᢥž“âÜÌ—^�òw¢v©PM#þ3÷-o Ûf4)UͰ¬ZnA ‡N2®/NžFÕå÷ªé¹~vm ÛÕíšUßY¡n”±—…3,5ýfLB‡CÖÀ…¶‘ä®Y?eœXÎÝR©i°Ô Iï¥áâivÓ0­\Mf·È KKIHEAìªý8;Jý9D£RŸÆŠ q#º"O¢°ùEì-, Dw"ŸDÓ€-käÍ öUJ‡<9~­·çÇvWöK‡ä]˜Œü˜¸}tbQͦy°ót/�ª±%§n‚«Í%þy{‡«HÿZÄ–góí 60çÃ0ì W/ ‘˜?©„ËÓ$‚œ8k'­éxRu;©¸ô.‹U0ÐïòQiq–$ÉÆó�Z±ȾçLe/¨—R%‹þub‡£Éw˜ê£ªât(Z÷`ï0Büy`(ÄrG —Í©c¢4tÏb�zK5$¢�é|Šœi¦Èݨçæ`:i¦pT =Bí°Tæ1'ˆ÷Mêá@ú×!)6ÞÞ=]oõ؇øÌÿKk½Kò«n½¦\÷� mn!±�E3>¶ŽE?[üÛ&PXµX¾>ú6ž…³>å$bD‡´ØdKIðROxƒ–Òé4"¸#bZ¨ƒU£ÖU. Ô ¬Àv�Ë]²ý[LR+f‰Ùêé5C©D(³£V+÷ܾdÕ‡ ³—O_îYR�(K%cZ˜Z&iœ$S°'Ä]O1ó#ô¶W½1ùG›Ø)ÉM V3a¶aôp¼8[ío´ŠZ¯hÙi!�ecƒ×ÐPšFدMÜãé6„„€P1ŸYäi³KŸ A~³Ý!fr|ÇÚݞSÜc.uŠ¿ñÖšœç²�^C4ø/štÑé%¬…ß ¼Æè0AgCø5d %ßi��~PG1�ûH3ëÜדÙÃg—PŠe†÷–N°a™Sg¶¥c-:ÞÇ7P]Ú&ô${F`sˆ‘¢(Êf~X�Ì|ÀN@C’¿75>܃–"¼a|óÅcåÌ)¶é'Fÿ´þ1Šû 6ød‡ øvпéÍ>‹ˆ4—ð@ýbÿ}E¬SŒZ|c4'Yå�Y±—¿Ò~Ó¥�§RZ GÏ,gžá§Ynò[´U@[qù�Æ–éLq½µ·¥ò8 „h΄�gšq,QšCK [mš‘cÕ–[WSVÛÅ™j,5ó¨;ßk­¹�¿™`C³5ê•Qû[›®cb߯úOyûìq;I÷º´¶R }Wç6v§ ± Y4†Æ˜ÎWGérαav;üóDÑæ„¶)éÐFøÅyGê´¡iTÍ ¶M ?tF¥0¼uÐKúÚ»*�%îJ³áÈ3ô·×CiËÒpƒW5ó#7ÿ§èc)ÒÄ�^Öª�áÿñ~b'àò×wp\„ôV>àJïl®§šç;5®£-Jߨ^‰æ[é´ì œØäS6Ò^\cV&šI 7“ÚmÉnŒË%þÚtoœºotvÐ!ªœTè�‹¼pb�·°ôó�¯z}xä�Z>·Ù„/é¯ð7ÖÞ…�0‰pGE¾b¦¯6Y@•Ö…bé?Àsÿ[µÁ9wêCÖÔ¦í}�µöõC«`Ó8ƒ;3Õ ÿ�u1px(mƤ—fkê–²Ä9øV©át…ÿNûc»lQ\‘ÒÉ�C¦HÒ´E’ª1‚F/]o ù°jü/æãjß…²Ú¸:wçËúQ¹/a(áJ29[Ý;œH«º’4pÆ’C;ëÐm;¢_Ǹ¯uJçWåQ^´ÔóíçÖš“LMJtÙV¤'Öã ØÚx�…ΜˆÌqb%žosÎmº‘æ…jßlS£ˆÜpù$-WH¤Híá‚&TŒ£ñÛˆ ƒ¯(Î0S°ó×y'hè²Ä:¸ZL"ËaÔ–¢ˆQÄü<ª:²ÏúÏÆ[ŒJ ±T“¼LÉÜï£WIL_Ì#y3˜.ÕÑD/õI4å@K½îÍÖ&šá^„9_Þëm›W IÈð¶G(`U7™PÆãz=¬-~'m4†®©¤‚�^ÍGöµK¹ÈqÈô¬”= 1£À Hhq%=áŒu•®ù7™y$Km •Îm4ДÇ*9Ë–~ž1iMIœª@“¿[oç=1“øÙ^1U³‰ qãyJf­f©$‡™•¶¬9-ñrë�yÅKŽ¿¥bÿ|Ù5ñS3í³µÍA….Û ‹Çž\›½† ½ã6‚Õóþ-JŒIþÓ3)à‹H¦:¿ŽW15+»>¢|†0(êeU·v¬<±l¹&‘çn„®¤>t ­^}×IRãºÐ»„ýËþË­�£@ïØ/Úª ßÏñVÝ¿á‚Õ÷eusq·]¬]0B[Îò`$ÕÍ×­2¸kÜ¥:0À6ÒÃ/J?oÝHçÝ0›e0TP™7'EPõ*:6O—Ú%Sœ¹VJË®-@РdàËJr"üëC`EO\Æ%,"â†*ذIð/ ònt©öë˜�xsÖ âå†ýë„ö�¨Ìg5{�3Q"´ÝHQNh¢ðwKÒë�ASÄìÀØ`QóH¸áŠp7Îùó–г÷8‰?„¬�Gµx«e+t÷ 0¢Ç×hx0žŽ^ì §£‹ñ»ÑÁÙ`x|özop~øz<½@<¢á«ã3䆄?þööð×ñ1è‡Çã“ñ)þ»în_º(tz‡-¾I¯L^+_“‡7¡øCÉ;s¯È/Àt3”5Á‰D¥Û®êŽ­M[?JoÛß‘Ô3÷�öüíZz4Ç�œ¤÷,? §Õ·„ä\U»PA÷ŠqóûÿêqÉ›»È[jKGkÐGò‚3çPºd˜¯ )Ó5*‡³ë6üW¥Ö­Å"”y¹B�ÄËTþhjGÀ\ö~· ,y†{š)‘�%qliÏÿäͤMR7ªêeáA[-п¥ ÐNS2c“Ä´_Ý#ô“$c¸˜ì�á7¥é–zRSŸ�]MþÓ%è–É]{]0[¿‘§Ìaù³›ÊŒ\SÈêßóí4àž ×øëF ÁXJå²�{–Rì¹—-0ú•œUií=a“Èî5ʼn™ID ¸D¢›Bl�ržƒ5TTž¡(þkAÙÔ†"8žaéÃ].a³ÐÚàx¥ø”ZN³´zk’Ú²Ñ噣'ž²ÂVëÍÝ \V�ªß„X“É ÅTå}¶Ûôó@—µy7µc9içxÖ[è³q¸ÊZó¦�}òKEanÕȬç8àG/µ’C|ƒY˜±›©HQÓvJ؆”*˜�k FœQƒà7°›µÂaE4­ÐRÝØHl‘íÆ8‚2Rx`JàÖ§Š2 “rS™¿ù®qqá½Î?< ¦äKe¼/…Zæq²³†­åMö••ApCdp°Ê°Fe¼¼‰)ËÇÖ(�œX00LË¡9pÎ`¼PZsùæ¶ý›v³¾§HNýŽŠƒ�úv¹EX.4ÜÀYâÍå–¨K•Ö¬´#øÐ©ÆÖÝÁ0Á7Þ�NÿÝ»K¹øâÉèø×Ñùa‹¶MÎ.O/Æ£ãã¿|3:?9z{|9šLŽÇû ��ú[nW.†VÅe]¨ß¶‰šžíC»—‡§¯Ç§‡‡çãÓ×^U,JO±†GÞ¼xs~8º¸¼ø÷ÉáåÛÓéäp|4=¾÷Ðßžþ::½8<¸œž]„&aš/6¤6¦ßhÌ+ÏÀ”Nàp_¥›h–o2µ‰öÿç¾ÿPͤ Ô>‡/rϪٜVk[ÛÒÚl[Cëë´¼no†�›·µ�r¯¼Í¼…F@],½‡Î™¢‡­á¯Vð'ÂXpv‰« a{åq¼fMu#u Zv¦´¥©Wv�à=u-/Ø­? j{v"SˆÓà[ž�R·[.Èî2N§ŽS°Ðe¢¯=ùÑ(KÂÌxƒ£øÈÍ]RAqš_繿öæPT(ó¨Ò7i¨–Oë[n pÐ HA¸!’ù-ÈZ'ÔV’ë^+.Ûªa4ºÄrýšÒH-¹«(åNÏúº;TÐN‹Ô.77½Ã”,Ž1o­¨„—sмWãk´Ám”‚ ‚ôÖ’Šä÷*0ýµ‡KÉM÷é ]ÏíPƤZí¥ _¬)´ýš0óf?ÜÃ(sÞ¡oþWm íNeqw›oŠÜ;šüÖ»àHbÒIk|+²þØîF9 �·òhñ©�A§¼�xw àþñi»]¬ßÇÔŽêVý¥=Sâ@öé«Ü5îа»òÒ# ˜ÚµJPÉ¿Ïò©þ{óßMÕª‰žù)ÁQÀ/=g„ÕiS[0Ên €Ó Ýï°;4b:Ež¥è]ÜEÐpÀìkÊ�ÆQ�ø•>‚ ¥ …ÌÔö¥´ÐQ˜;ÂŽ72íÃZ³}Î�ˆ‰L&Œ�óÎn4*i;VNÙ!XÑkw•ý ÍÝZc¾9¹7thj€|��¡'«õΔåØ;FFé�Šï�ãh8ÎÄb�Š‚Ìfs~¸øj={½~½>;v1žŒ¤lý>…±Ì\Û4 H”׳¾bÏbùæ›”Ù ËôSÀvMR¬‹N…‹]‡åÑÕÂn¼JÍá±åžÎÕúÖìu ¡Œ[Áýnt%{»‘pö ï·%e’DÀg¾¼~5Œ�”H\;øS^›I¡V)¨ ÷}&<öÉ©³lG!P¢Þg¯«¥op"ÝC, œ�]ë§É[FËð¥x–ÂéÏtåK~©^ýQæ)ë3û"%è%_�³Q¾H)Ðb׿³dF67*`Ú4®Wš%X+^µw©.å`[€È™nü޲器C³V¾£ÀT©á}ÂExóÀîN7{ p;Íz gçìRs† Ø r© QÈ`èL"'žZ�ÝÍ4ýn ½­ ¾CkW}ÊLlŽúOz£Jž�`˜æaÏÎö(ú qx¤>+¡ ,¦ � ¿&W/úÂ(qËø+ã$9Ê‹U'¶J3S!éåõ±ž2LœÊõ×–ŒÈè$¨A§È”˜ Ž×&¾ZͶVĸNo'üêšéa´"t)ï¶ø‚пTˆ§r½Ü^ùÝJú�¤(´øÇ„)ÕNQ (ñé“Ñ—»Œm’[ÆÎ⬯ø³g9¾ÈYÜÛsûß¿-ôs#› ànâê^ÕÕ‚ù6»ÍõŠ‹{ Ý|Õ$5eQ³º+ÿ¾<*òO~а³èänú·cmÓÌeµAö_)ºCµÖWÒŸHïT„ù©y@âUôh RèC¤6óÝÇâv aä1+Ð ¨ñ ]’sV¥{ï~‰9Ù"_ýgçM\À^WÉäÍ„±84Ìe‚tTÑçãw‡[ìÅgŠ1oÆmÍñ/qŸ#çUø—…Ït>9à\‘ø±|ÁI½^« U«ô<˜²4u2fúŸ5¸T–ËWªm¸‘©yÿ~`¶Q—Lá!o_«Q—Ó𔌵҄:ª´Öq©ºŸ5dzùsGÙ# )ñyl ¸'ý.±IEqsúM$-á%‰¤ÖAêÎ*bw¶YelðæŽD‹o€A:¼Ý FRrìÏÎÑ�¤e~EÉ­Y’ 3õå(Xù0ÒÓc5H§|dnÑ:ù&(îFW�˜ÌœxèA–ßÄ&?H“Å:Èx÷ÝtU¸ÄŽ+b«æ ¢%n¬³~€Õ|´¾ªvQPq5ÑШÝ÷Y¤‡T|¼ˆçªJ©†ÿZJ‚£óSÛ ‹ÿ¼TŠ`È/áÚÙ�7Tôd[OÊkê“ø†HÞJ¸ßwøÖØ-¯-ð–„Ôw«SÒÏtÇÇo[úø�ê^ß;šõ…ƒöžè<�@}S{^CŸZÔµ3Q%µo‹ör…L}<òìÞpè‘mó"Áxq´Ú&t4÷¿IúpUwŒx�”ÖrÝ�[[C.OtÌ7J½ù2’âv¥ù·>kÚ)ýƒJvÅ�ß"µžswAéÜùKt"dÒò3xdˆ‡êó¢ÑdÍ'1ƒš:ì‡!>~v¼‚œ˜Äl=TŸ=3¨zŸ]º:_Y“³KÕ9»¨* ØÎ^T¤XúÛê ¿þkجêšhnx*ŒÅ*B…IwTa“/ •J'Ý‚Q«t 0Æk×$ÙÞi½^6Šoáš¼j†ÂäS!®¨»:‹Ò0Áýúæä‰Ù6¤J¶dàè¯ê»Ršž€�Í…öS[ 9!µ”VÚjt²où1Ý̯Q{ö‰¤„”s„g—E+ˆw¸˜¿ï<óÆ‰ŸÆõi‘˜ Q飉Ò-j„Ï:¯»Ñ!蹩1æ–ÐßcPQsk5M' NaoÇ Þ¤½iµ$2>fÐê+»Ã™ÓçÞ9Åû�Žò£?Š"Í#+‹£·c‹÷ æ�c®,¦\)‘D’�ÙµÕο%óÌ=ùÆèKMëçµMÊè‹Ê+ìT³¬ñh¬m«óüÊè‹ï”&/&¨ÓÏ‘ÎtkФ¦C O]b¤ž¯çuïTçq7¢ìïÄÉa熪sôÒ;G5DLž-V6(hàNW9ïjØB‹�k‚7žÙ‹pB‹ôþv6#`VP˜Qkù™Ð^e’òJžb•„BŠoW¤Š¸1̤íäòEàßfx™ê %·—ÝOÑÛ/–Ó®¾U¦Œ¢J—–»’v.Pi^ßL䛓1U2¦À�ÇöñAîU�«†ßÉyE4Ì+JzÅòbm35é©Îu€9 (wÛ6 ¶R(kaàÊ8lu]]U|Ó„mZãÐsn~Œø•’ÑVi£µÇ.[^ ›,ŸÄ�õy„ëÆÏÖDå÷ðI/ÁîiÅrÐþ)¹1ÿDX‹K£’È ´ó»ÅD!Ÿ©ÕæÊQ¢Ûœ¬‚€·ñ(¿ô¾X=¾ùCðÕ+Ƙ °K…¹óGÿ‚Æ\-A|÷Ò„{ð§ÐÆe é½ bÌG“çlŸ>ûáE±MWìÙ[Æ7E\:¿¿ýéÿèuå!#vm‚Wt£>Áã?·MÕ"çìË\óûðÙSÇWï•€Ü7gë™wïT±½¶_6hUiª¨gÞ�Æ„nQ @3Y“3óÏüÛŠ±Á‘í·ð3ÿ2MW�bðSÞÝ$[aÜäè%S5×GË;½‡'‡ç¯ßßÎãÓýñhÏ$1Q†‡©dQR]P :TµDɤ34•ßÅYŽ521c,«èš½‰+ Gã€ÇÝMüÉ©Î#vÞÞ¡ž_<´Ã=;‚ ½ô §Â}Ví�w§ìcEAr1Þ?ÇÆÜÄvn¨ÿ?ìŸóŸ£*þ.#K‹Ï³Î n›))¼:ÄÝè�°R\ãNQ“¬™h< LÛü¨fÑ#SŸ¿zù42 q�ƒÒòü¼ßà^Êàt? Ô�Öº‹îšÙÎy·Bµ“?Ô:é=V£ƒw°MìöîÑݵîæ.”œ$ÞØâ/øq¥W/~¨öÊ{LOÏ.ÆGã}°áæÐ‹ù‹~óø¼Ö1¹ùR¼êÌ� ¶{ŽØæ‘"ùè”Ý8ç± Ý,ãÓ£³óÛ­Ðerp8y{î>F’æÕPDi|û9¥‚«M·†ânK÷ÐÌdâÊîD‚oÁ8„¾Xé¥FÔ¸íf�ýšÉ“V‡Ñ¿åùj£ƒb ›qˆ¹¢�#b„»e¹½Ú­’£ÔºTô€¬’òüëèHà¸ñ:ù¤l%Ü%o��úƒ·Ÿ(o/sí¶bÞ¢—“AoËÝ÷™–k@(Ð,†çAÔ�i÷&ýN&¡š¡J·°.öÌ õ9ÕSâfÎk�6<�Þ $íQà«» bÆiM¨â€BY¿mMf}ÈÆÕt}ßnDá»Txó•éU&Á„�H§¹¥íçv1 ŒqêÄ 4;t}Øç5²fq­Ã磓ÝCÎîôÈ´DÜe|9�L�Ò­É‘®R¶I­î�MED7‹|ػߵì ýæ„��R„�³tEz=îž�Z0“ξ‰ÆtНFÒ §H=fƒñµ¦áñ“ 0‰æ ƪQ&TÕ±•EË�€EäìÞäóx¶]¾×©ÊD¨¢Y±ÝÀ2ƒRHù*Þ¾ÖYÄб�ÕhBWÖb1 9ýpÃdø4Çñ8wå†9–i©3ë¥b3Ì$ µ[͈×�UæÝF£*r1¶ƒj­]þî°^ñ§w0ŒÅ÷=ž4ãDöB1{¹²¤|â³Æ'š„FY¼V”q’”$8±ôú°r¹’ )�€ÎŒH”6Ë:`w*%:¶]´³¬är_Žòa�[|ßRfU��jÕU%ý¶ãrpú`rõ‘ªçmÑ�(1Áå­Z­—ù^t½Ù¬Ë½'O>^¯æå®º�1kyæÿIÛL¼=?v¬À/øò&ÿ{ø¸ÊR]²ßC0�@–ã(žhÊX�Ü® ‚D䵚KþÂèÑø`úØYU” Šø0é¿ÜÏ7KÜâìý ÓæÖñ'òNh¸öÜ$¥²Ä@†cÞõ‘À½Ó¥Ö̦6zŸ�Eù >J¦Wn:Oƒi¹Ü`3Ä·±OÏÂ8ÁJ•«œ«�´UoñŘðqss¹é Jä ªÌÑØTÜjT(=·õ,ÐÂFza;7,-'Ý®zŸàC¤hÖ“w-´ (ñžgdC4³}ë#‰â¹»„å�5rúû î�ª @¤v凤k$[°R&£“¡ßsþêXÆ9hÄ�õ‘ïCø´6~mðq:·éê ¿­gã";>d6µ<¯M]u¢œÎxöG$]ø–<„‘}/íR­Ëfý_9BøÉÑÅ7]AnÑ^ÚˆuL9¤]Æ)õI>ç³îl9�Ö9Û8Ì7»�§RöS¹Ú¬_a-4Gõ°îö5¾Ö�o¢Ë=ƒEÊx·]�¹ ¼ÍÒ[ Ï�94¢Y(ÇKd2æßMOº‚Ö+N Žó�ÇŒÐr@qƶ°nÈ Þãç K  ‹ÿÑÝ#ƒA@ÂT©o4³Uû?izkjJOQ®mQm�ÃEFÔB]å<¹®× ©âc›Abë€Ø"‹ÞÀ´3ëÌ—µ_ëOçÙi¤%7¢Úð-Všp()#•fJ/²žŸ¸]m�ØWk“aèú.™¾w«†.hÎts—Në8».±Ê½Œ�OQk—ÏíûR;¢��›OÜS�h÷ƒØÚsƒf¥‹_E¯ u‡™ è+ Ú¾Š_I�·æ€ r€Š‚ÔÈþ~ü‚̻댨>d]Ö3àx Ð[d—�ë-¾­«ÂfqV¹ÛÎ�óäðC–Ì.ᆾMUy©‘dú&9â¬g×Xqïj¹ã O8.Íq©‘Îx Ê. ®ÎÑ’ðщ²4¾Ý?8mÛ™Z¯ÆÏÔ[ÃWQÃÍÔòrýµå6�Å»­©Wþ¨,S&HðÖۑ߃ÊíÐd1¨d¦²vmÒ™-}ªøÛ´Û—ü'ºFNT˜Y¾qã°p÷l†›ÚönÏäÍ'êFÙ‹sg[,‘l—Å•3ìØÌ’�ƒ¡ê,)ÁŠ¢„B>QÄŒ§D—=�š³iz} k¡T÷ªèòë-¢ ~[—“ùYÏ�JµgiˆüHjÀ ûýž œ^·Þ½Š+àX¦!y“… ^3w:‡œ�ÌÖþ�OZ@ù÷mZ‚ÈÓH•¬ À¦¨ÂC&EÙÎ ÕuÄŠðù¨¢˜ƒõr%Ý~þ4:yUñ̰8$÷&+ÈçXºáÏÆÀ_©šè1NÑ®dS*¶Æ9u=it!ìÈ1Ø ko½´LU÷¾Ö¡°¤mí£šâÄ¥›»è× þÆaÄ.X·»ðì¶´!¿�ìϧp«ßa—)¹÷3"âÈ`·rŽ‚uG IŒjcB2ñ À…¦�@ñõKØZâU#Óˆ!õv[=•5T‰Ü7¿xA/ð úB#ï·ÏŸýüÜTÙÉ?_cA‘þ‡75«cdsÑ„ &ìFgÛ Þ¥z¹´ÚÜx0u):¨ð›˜”[϶Øn4ÄÇxÑí1´ÎkŽýôØ` Ò=¤çjºíw£ÖH¾&×,­4úÚÌ*h�ÎBŸùyFΪÃjâY×(‡Å-\ýŽÌá�ZÄÛe[ ŽžJ=XbhÚDùèæ?ÐŽñÎ4I÷F=½D–4j§”OØ;$¾¹ÚÁš`ÖêÁdL_å=·öº!´¼�z¤†c ¿ÅvUíIkx+!>¿¾-Æ£!®™Ùœ¿¥M¹gT\YtHM _…T�átäŠkŽ N«Y7¾Â¥˜Ø9B”^R‘‚W;ƒûg™Î„9f õcž#›A^r2,ÉS¿VA¿rý‹TÿÒw7ö[cjB{Ü3Úì±g³7?Þ½õm·(Æ–ÿ&´o÷ÿÎ6ô1–ñµÕmTj.ö· ŽœìßoW·A“Iñ®à4æ ‡ÜÒ†ÂjóR¡è´ŠMcä Ã7ô.Ï\ÛÁë7-ô壓·ýÑ3̯|öâÇ~xñ‘Ì�­�ïQ¶C(ï4¤/X,Á~F+iÔ‰ÉQÀϸ]2‡(š¬>± ·Z(;¨þbJìè¶¥)È(qÕOª ÏQGu­I “üÏÎÉ˃ø®u«rοIr(ˆÓeÒ°*]Q[�´XB8õ�U•JjFœ³–zå‹ä¹øÈbSpêæ„‹…©{6D¤âM<ëöii–w;NyÕ ÖqŸÐ¥…ùöìL‹A(_W0Ëûg½t½T»*C€£"_ Ô|[1¯P4‡eQ-„IÌ‘êBlòU•Q¹.ÒîFúÂuâ‡Î �àXÁ›ú‰–å…!jõˆD¬8$–s*W¦!¸Jý†Ýá- ÔjÁ‚¶ë…ÅÔvµÀ^d®ƒÂ©·þ{kÏGv÷Û¾“Ðûª 2M¯s¸\ôðB± MÊp´ò›YšçŒÍ²<<>zL€èÖ´ÕU\¥Ð@%Q¢ *óýõ9�"=Íøaû=žX·=b‘쯹$¾«RF¸r–�e÷­dåH»ÄÀ*ìw‰PŽ „J±1zJZù­6:ö¼]#GSå´Ú�ƒê±$å€L¯ú$™Ü$Aó8ßıåóuÄ�ëi�Né©îX虤ˆy[�å£ÍºG1Ò-ꬷ…ÚYlÖI[÷Þ§R]Ù2Ø-ú†€‡Àœ‹i�q~Ôf]íÜXNkgßz}”è“ ¬¤H`}ˆ…Þ¬PK[e„žC…äÁ£ pÓQÀ9ª÷¸¥Žuô~e%xkÚ]o e¿lŠ�ùk7„ùBY�Ú®‹ë¹ô’’LÞžo»ú™]þ=f}Â[Ä7u}Â.ån‡éÛ’xy<›b¦Êý&zÔ-kÿ+—:±³mÑAŠ«ºÌmÚÊ öQ'°(î:^ ™c�47…Æ4*·+W¢L̼8;5 3 ÊOÊÃ~Ï·+R¡8ŽÇ t3BÞÖ({u¿S­¨Õîm¥u ÓHiZq\9Ýa ®16ÍrŒm ˆzÆ*ý¤ÎÕŸÒîÞ½B¦Ìîk×a­U½Œb^¹+,ü—+\™.`…›¥â’‹Ð³Fb*úˆ¨F˜ÅòSå2  Þ'âd #´ÍÌ�—,ëÉFÁÓx�&ýæd$¹Yug~mÃ7 î µV›”.FNæ‡à¶‡ƒ¤]‰D†8ÚÞ@G-Ma<¿VŒTX"P'nI_ sHu4r`«W9q 7[‘qhá0µtÙZö*çæ\O•.ËÅ$Ihâºî•€\-ÛðèÏ[º"åÞ¿ìS g™b"ÁVí/ãÕèÝ9�½¼Ê™žf·5  Þ‹\ŒÕ°“ÒÅ!âí˜éµÙ`hI0ļ1E4'¹”-ʺ#¨®�©~y?Öi�rI¥`·pH­m)²'€áÂí¢E:*.jÙýl‰å �𜽅Ø+ºÃ«¡9ʧÓÑÚÖ×LËFøEW#Q©^ °áZ°/kbXˆì³—yÈ=¼êèm0¦ñ Ã8›nW -Gš(ÜS²½]¢]�1wlcj½fj̪•xÒ—‰ôeÈêe£ÖC7.j_Ly¦qý[­³„åÞz˜´[`;åÛb®öéæßÏ×Û€ IPRâüþä-WÎÖw=ñèœ Œs÷U“gK† ×WepEz´•eÀXX"LÞö)ßÑ�;`©×éÕµwŸ-7„,žÁ ©hüä¬÷ ÍÜ,|ñ0?Ð,—ÈôZVØ—�n Š ¶ÇlßùîgA‰ÖˆÆˆ3 ¯ÅÕr¨IßÕª;†àPéVã …Ýž}¾å¹X\—NûÙòRÃùÀ1…�wëœ`ÉÊ’\.~_É)úG1&§”¢wªÐQ½4øò}]( §9jÔ\€.]<@ô®°š’Zˆj®FNµ“ÚõåÖ—y|í_ÐâÓ×0Õg§ñ5®Ê@ Å›M‘ζa5�~�Zi‹¨Ca*ÌW𳯦îU+<4êr€>¹‹ŽˆÒ¾ã›Pûè½îmí¯òmùöe=¯NÓ%ПýS(­÷Ô$'R š�é5et¾ÂéŒy 8ÐæÐµ[Y‡üA™æý€B¶À„•R Ne”€7Ëoƒ°7½?Й' ' LÛ\ãEº“&™� ø·K <¥ù¥Éu ˜Õ’òEE!K­tš©ñ ´&ö˜Y;jªŠ±®ú}z²#)”Ì ºò²‹âG?Guì½ãp&ei�”6gr]½³ëðpÇ’¬)“.ªªKëÌÜßuúêœZ!õÚÞöÞ&çut1~7:õLílG¹”�R90® —€ån�z-Ÿ·p¯sJÝ#�¾éz»Ôž‚@ù¸maúd€£„?i„ÐÝ!Ì\'«´3ÀØDA±È±±£'ŒQoA'+-‰ñ$jdMªö ¯ö\a.rdËØ8«9~ñ|»¢©A›Xv ŸÆç¶>)ì«A˜ éÝc6Öçß`¼âí¿é€i¨XKŸñíñ=Rdj�êýÁèMü[¾µ>Ø|‹Ca­¥jílÊR ¿8½“¼UÊì«bÃe@;TŒ/ r>6Œz0K7µï<úþö±­®»rj@øUÃ,˜óy^¦XðKÞRò¿mÄÎh¿ñ'–fuQäÝ<ЇFF”^¦6šà×n–lf¥ ä5ÌÑug4̤bŸV‰?AWÛ´Fc›z‰Í¢î¾Y_k¨]笇É*ž =6×g’aoâöÀ m¶æ•øô;ˆ9&žYp¤þ&¤¦:ˆ|xà¨#Ma ¯`¨µ´w�¾J9?5׃‰fí&¸fÏ|ü)"åyÅ]áÙ¢¥Ã„tŽW‹\*¶ë eU 2Ю[ ÕRh_œÎ eGiŸÍU�]ÿÌè¢ÉBÆÁÁùWØ?Ñ´òŸhŒ›»5B¬Š p¹ÈAÈ·¦»H°Á@h÷ ¢ZñnÓØQ)ÜnC.¼ÑÙj©ž±\.9¨úôÜ éRK7½—#x˜ßžó:rr¶‘õPRÏqPÛòRpõ„SHŶžu·šq}ùp¨.?ø�ilÎämyþ$­u–ƒv©ÝŒ­Çæ�IŸæÇõ—˜ñ5›Êð„ªh4Þy…ÝrH-S}Í#qñQJlPB˜ ºà5r-Eš©¼íluùq}9§ B�!»ðØ/:ë_µf„è4_ªfÛ•17¼ÍfÀœ™ ÚMÃöûòÑ�ëBf諆TcŒé`\-þÓ`ŽØO—H{mœ“íà g$h˜+ª üŠáe„$Ú•ÿ Ÿ1C³dq] j×5z¶å&_Q‚ šo×nÅÀÝ«0[b¼ L|F €Qºñkß�å¡ }Úvî�ÊÁ]OWwF¦ U›=F–ØD­*¬´.™›)Ú¼Š"s¡¶žŸŒ� ‘ýG—[焬êwH¯Y1’Ió7ÅõIØ`é]Æ’H”Ty÷ÞuG8¥½ýêèœX/_·Ò”š–ÌÓ,41ÛôY¬ƒîÛÐ@°þ¯^¯ÊÌÛ«O³¨ôÊ0`ñŠ™é[Æ"%‡n¾yïžÆõè 4C1mYš‹{…$¥_,%*)]ÿ‰R¢òݯz¾X8Ôæá*œ«!ÑȲ›ÿNz]O±¡Gþ%B£6èÿ ¡‘TA–ñ¾+ã„LDÚo,b/©º¦–¬ˆÙ$Û9Nó8ÁòjA‡¯"±Ä6[É?=o‘Øäk0ψUnjÕÕ6M¼ïÃ/bŽÞ”ù²êË„Ý:õо¿ ÷{š^Å.†¿Z)ß mŸï÷LSFî(¦Ukí))–ѲN‰¯ ‘ñ¦3hñfϯW!…Q¦n)p5_vç(N°ô{Ž~PŠVŠ|[}6ö�OÉÑP Îàéáé›·'NÉ6%ÙˆåÑ=Ü×-v¬??=Ê×4v¾ÝÜAt;bË”#¦RWU…ûR/È ˆ¸™³‚N“ORIM¹I©uœ{ÄM©¿n ;8þÆ£¿…믳¸o¡$gf'Ú×öµ–—p·Í~#P”Ž/�ÊrKw-9Cújk¡‚ʾ•/ü£PNX°R÷Ö‰i p‹Åâà@!ÿ]öÅ!ùráå�ú:Má§ÞŽ#ë»>�úe,Xȉ‘c; 3]¬¢‚I<—%Í4$›ð.Z±×ž„ÕÜÊíÇNDFtCò&‘Ö»™½Uanò°P²)Q-JŽ©‘cæ~¢š›tþá"ßÏ×ẇé=ÌKZ)ï]«ˆ -‘Aº–”®qÊÊ…2^LZ�ªl|¶û|÷ÅîË¡üåé“çøwøßÞsøßÞ øßÞKøßÞÞ“›¿Ù{òò�t£# _pr\ˆ–ΨÑÐNAO7$e¼HI"ݤ%æœm\œ÷š†ä¦³ã–Â�Ò°µ•j©,*<›)¥MCÕh[<Ö#¼'>@wü‰ Õn’�™§Ì ‹ð­Q¡û#–ø9òýЊê8®Ã%AïÕþ¤0V�¥‡\fŠ+Œ�_å“lÁÙ�ì—ÓLêc¤ éUÆ|[8òR«3††ŠÕ…°Û9w€X&B˯ô®uØ@$¹�Y Ó¨ �æà�µäàVšª²F‹”9sœ¶:új�ʨÄi 7,ÒMJµDW)3sP´†@Řãž°‚&½­ãÓÆCŸå5Ø^ç–z�íø@â5~º_œVJû˜ù¯›I•çÏcP˜¢2”çRu±ñ'ý^3É,>CY‰ÕŠd*†áöZѺpÚ6Û%#¿rtŠR[¼S¢ëÈðò»I•7Eð]Z²WÀ…uk}â¹-‰µÒ<Ë7g¡ùžæf¼Æ°%ú\S}‰ì›÷”§ÌžÃEŠÆ´_ª¸˜_¿òæôÁC*DŒÁ=×òÁ»cÒ®Ã8�p¶µþÐ^^7¾Ï9�åôš4w̶òNÛü7Üwƒg×^zrø1üò¥ÿ—/é—Ï¿}ο~™øßÅmð“ÿ—?€�ŒàË;ÿþ6!ßTažzË@̃eô’ž-Ûæ<ýÜy<0PýtŽm ƒ\hÜγ?ɳN€Nq0Íe>rVÃÙkL¯ŸÅÃ|öÀ1fô YÞÂFÎ|[®Âå\Àæd³[Í÷þ{[=F¡©uAc³Ü'Çià¶1Nѱžÿè¾Òqš*è\??]áûã5³¹¿üãH�ùZtèã”ý,‘H“ï |Ì~jH4ü-�xÛÖ9z3/ý÷ÛÔ”"P—*ÝHܪŸÐë%É\�—ª(k¼þkºL@ßô®} F· ó°,3»Š;/WM[‰hIöšÅŸ,Ó™rRózÞ©üPÇL˜ç#íI@io®ýœÉTêgHiFàßöe¡ì€”ø `Ö¯i�$Q¢Ô Sšç�¾§nƒ/^è´ýÞÎÆ­*M—;3<‚î‹ÉVÞ1’Â�^!³÷±eç92 MW»Å0ìî²íTÃWÜEî§ø-*·mÅ~^}ʺœe°™_«âévì8ÙC5„Á'ñ:E•7IN¸©ö{CVz€TÕZ^]Îy…BœÅ*`1»z¦ÜW(߯Yø'�³QšäŠíæÇu%7R¤ýÓ£øßÜ£(hae‹cÞf~HÕ—!6Dáæ=²„ eŠ&40ÉÀ.„æNc’ –—ô†²óÓ@ô‹‹WjQ‰Ïëò 5ùÝ¢¨ ˆž›ø‰C•“)o©BAßWO—œ¹ÊöÀ¨Txó∷ò&�Ï�ü*a— ?轵ݕ¦©íÐÐÕíî^ôâéS¯p§ž5&ÒGÀW+ôSZ±�û¶è’0ÿt+£[¹ËŽÁ vö$®¬oyìUÃÒ+4Ê1_×¹Eý…Ûñæ%þþüÑ:›wm£È=þ�ôYo×0§^«â$„†ö„@ÈðмÃzÅôfAuø,CxÏtþÁ çí#rþ‚^g*S â‘Ò˜ýNè}·ì†3^‘‹‹ÒMué9—©nï ÷¸TTÞ¹¢¼üŒèÖ#]«-®sB³¦žÏ&m–ö9LîŠ sº)Aˆ…pe¨x¾—¢ìʸaï3BvÁ¥N &!ƒF‹˜ð²ÄB¤Çe"£wßÚ’Ãd9E„åÉrkªmÆY‡WJŸ«k[Ï=9?‹2…ž'61h*⛎†L/£ï Y}ø£Ë”+_,¦ùÂ2:•ãÔ'‰kª=¿Adhâ¹ät 3åä%¿ ny;«ê.ÉÓ»WA‘:J�¦ºzÅIoéêÅ�O)¥dœÁ)ÓvÓm¡,—;i¶ƒjµ@�Ê-ëÇ�ÇxÄ8©*1Ǧ¬wPµŽ,ƒxåTÿ‹ºV ŸnLý›¯Ï tòfÌ,žmbMÊÉ4R?Ê’©³úZü«*2µÜ§½ÿÕ¨L%“7“!"³G£5‰k|%:J õ&Q3u:x¯ní:á!¹Ø߀w°›Iùž†‹¸¦Rýƒ�§ò¸É1d÷ Æß87�þ͘ˆ.ý€)f 4ôWƒÅ•P˜ækup¸ðæq¡+O9zF°ÀÕ*Yª�{•û�ûc83¼TDKUlÁt&L]T]Mäf*Ôç¢îØ=�ÌkæÀ÷™fM.FÈñüCI�í%SÖ]q¦æb»\:Tö>}¦ _¼É74VÉ´òŽ•~—¶‰Ç¿¦›B ÒY¥ø,-õÞûlä €ùZb)÷<€èp+!‡½wò0Z»¢X›¹½O•BÃà~!ÛëwòÝ¥2lµFÛ¤J‹KÁÞÂû�ŽØ•\nòKʺhuý3SÍSÛ-IÔ�Bg²C.“à3^Z¹ó‚„3^è~C³"Køä8o²+Ø+ÃØê�ò “x:Ü&JÁ hù¸ƒ �„=*Ä5†{>É=|còâ%"¶Ì¯Ûl<ïô.âtÉëÔµ62Êùiê¶•÷ÂQ¼£Aìb…$æ4Ïk]C¨7Ñc=‹M, ¼ïlƒíäl¦Q>üE�¥Íi¨`6 3Ãb·¶X4©4Âíõì¥ÓfÜÕOak ¨-�sMïÈÙøÅ&…›àN·–´6§I%ñr�ãÁøì¦m:c¶è�f‰©õÎi+X´n·§ñ5¹W0äÙ 4ºùp‡éÏîk›Ç³eÚ„Œ&_qÕMÂR“zSÍ——«»”oÅËu«Æ>Ö7]ôht#Úu’?¶�Lº6ö¹YÎJ»»¹«Mµïi§¹ú^~Øž«l3Þ$]óâ2îâð1(ØîÆh¹ƒ&‚ÉÃÁ ¸Á;Dï©ö_§.0³ç0Ý\·NËËô{eŒ“Šƒ*I€ut¼gb¿`?ˆ‰L—®zïÌÜÈ&£'.ÂÐ7šV’3”~ îHRé±àîƒ-ßxë "‹" ŽBGÜKí‹ÕȾZ!„ž'Nûž ÆQ,6¢~»LàxÐ<©‹»Ëú G{Ïœ§65ö»Œ÷MA >Ñû¦å!ƒÐ¬²½ÏÚy›7¢2zZÀ_1_(SÇ5C/‰²”³ÚÉü€ “q‹–ë¾ã ¨‚ŠKƒIâòz–ÒŒÍJÈqà\úŽ–ivR¡´£¾Ý]áßá^¼ˆ•ËUžÄDtº!ºo4tk< ΑqÌÍC‚ñ/…»Á‡ÎÄ£Âv®e—£¢x` ZëQ^¬8­ì~4';ª=Aƒ Á`÷ñQÿÂÚ‡×1Eàññ¤ýIÊȘü‚NƒBŽT$½–(ñdœ-ñšB¾°¹o¦ªs2>y&YI �Þ/aj2æYd•âÊ�×!g³¯ ôëΩïsø‹?Ê¿¡[Æ\ýׯ¡·¬æ¤c [WnÒ±^çz•r¸–}Ä6–r½ž"Êöƒ!%$ ¬* Ž™ßq)0Ó©S^ƒGE÷¿frÁÞPI ¹Ú»ï‡ËÖ#šîžnþÀúî,£¨  ÿx/�&ÚO/€|Ö?%ûØJMìnò$ôÓŸJ·ß·o{ï3�™Ãh•|¿?Œq�hVÊ¥›úùßp¿�Ìü ÊSO~®%İg �Ù)yÇfŒny‰r¥Ü�x) ”e\V�_mØPQkÓö†kÃfÎ�ë¥Ê‘œ—n̦ë1�ö§G\Ãçd [†øã;8„á�¨Ìûû7‚íÐQU7ÎJ¸‹èâ☀Ón¹‚(G—ÇaºûЀò|Õ[¢·Æþ2Ξ?Æ gÛxÆ>ƒêÈjªv@Ïû; PïDiàŒŸ�G~ù#¹Ì„Ëè�I™ü.º´)ZÇ•ú/ð#SÉÎ&ß¡ Æ mº,Χçã÷·sXÁä‡Ã)ô¤ÒØá#ïP*àW5,üÅÐ{¨‹-yæôÇð’{Pûž[ÎmëËú}zøú|ÔÑSºKÔÕÉáùÉx:mL0µôÅ\iµ­Ïü|ÏÛþ4] ëN/ót/¦hY h‹1Zb;ÆôÈ“;èðï~<ì'¤ç¬�pÀOîĬk”m#@¬a:[!?àüÇi‡yU­4¿ŒÎ‡–ƒFo:18®ér•FàGwhcžfŸm„w£¿ÏšêöRÿtÛqžž³Æö�W�¬ q©òNºæq·om˜¥7Sž–§!¼;—ÛãV×í|ùûœ÷ºß„_×nQ}aGr{¼¨Ùånª¥žn{†À¸Ws–Á·ÙÀƒúUÉyhíàG5+t±G».Bc³…‡ôдîb(Î4Áü¸\øÛºÈv…ÍÃÝÝì\]i«ÇâzV¶þrÿþt¯ª´ÝcQ}+Z»wÏz¬æà È;˜�‚÷ ØáVª]%ˆ†ÅöˆÎI àÁËœ�:-Ý Ü°nXi�©�;š·tge¢ÿÞV÷¡Gy‘`P)ZmÞQvY$²Ìëê›ï–¨ôËúÚw ûNï¡Öœï„îÛÙ[0ZØl{ìJb8.áÐd \(YËv*ã´Èèyé³èº3õ5—6:«þ°D$DµàpGK‹¾À_µ »^=Úqß6a°^¯uÙ,Ã’È´«€v™‰d˼D�¬ðk)/¼tÒº�€EAï£P½ /bŸw°™–ÝÁMí²Ú–^ZÒëQ>�šßrf¤Ú=×Zp.ð1šFÌPêz휞RÎ{¢øoãÕ–:=Äzap¡¾¯UrpµW§ã’ù²«Ú ëh0ïîûÁû¬Å’ÿ¥¯%}Àܑڬ!ç}Y·nÜÖZìéZ[†ÛÓX·Ž6�$ínøt˜ïŸî Fžœ9Ê 7ÔÔŽ¯=Þ�NƒlbY-ÒelÞÃe�Ûˆê݆h<ð[ Í<{ðgØ=ûà ¾�ÍÌ è�:x›·SíóŒ½%ßÇ€ôãž[ÿ@Ó‹Š®¤¡pò¾ä†êúËJè#*ËUûN/µñ�p6e1C”öZW™üå}væ!‚G ¤I- (¡²ºØdÛïõWkCvOvX›ü¥Séš Ò¦�̰·Î·óÍ`&„J,màJ �x»w#=?„–±Šoaê?1¹ôu \çï3¾ƒˆ\«Œòµ³á˜)Ò AÉ‚Ù×#*î�†©œ®ÏÍg¦Iß}�2ÀD9Sh¸æù†´3÷à{é-Â�ä!ñϤFËK àSeb"à-!(ñ¡™„J³©(Ã>_šr±ªâ€e÷è!pj«˜'8ËþñÏ@Á?_(0*Öe$–¬èËC’9=ÇŒš$½ªròY¶–=}" ­­Y&u§I�™ý<Ô%öë]8€qØéRn•o2ëÊ)‚äÑ|QLÃi�ô0?´}ëè8¯{6èLôŽq4^ߟþGãõðj¼pØ)žë4Žaqly)|ÒU¥ñcJ½Æì옛±$8Z†õ 6§Õ#ð®�qud*\®É•ŽèÌ8˜©“w…i&þ�§™îxͤ+TóKÏXÍÈ_¹z@�Æ÷þ²W|æ¤A0 woÜÓÈ,ð¾s¨«_“ñ4æÓô{[Éþ)èe#÷ˆ ƒ'=¼Mg){ɱv�ÊŸd»¼]ƒá½Ü»Ç:< \v¢buù,ì÷�¾$iŒ•*u„„(7¦JbJy‘åY›ÆXÜ‚Àµ¥`6á—¼¦Æ™r<úu¼jí…¯µWÌ ’W0²Ø�¿RŒvA§†}RL]†�½ô5vj<{U˜‰ØP"0E‰Êlÿ¹øB7ûƒÄUsJÃרbõÌM¾¬TÏ´ .»`¬�ã#Da ô·« ïŠCx'Çp‡¥cALÙÔÎã³§Þ K5Q\¡j§Ê»9oH¥C]6‘2•÷BíÒº &ŒÊÓD®i]oý|PMË ¯éI,¬ky©�ßèÐËôðL7ò£×ò#�šVŒ#aps»Þ˜>üž,ƒz-Õ›Ð+ô1à ~¾Uõ²xGýsËqq˜GÄhÊÕ*Áíú ÷î»yÊE�³íÝ©Ÿaÿìdr>:�F¯ÏHŃ °ÔS�.ÞŽŽºö©‡€ C+ŠmQÉ`ê-¾X´”ÙâÝ¡§$OQÊ =îÕ™Þ°úSè‹×eMyëôŸ9rû†©M5J‹|\Lc)µ b.í#nÃ"þ¤dBT†,D‚Æ8–MêÀbP·ÒÌaö VlEZ~hgçùv–û¥Š­IG|ψ­^±â]jó™D3z…%�BêX« ¯Ô‹`¨èu ¦°°ùÛ– ÜH6U%…W¸L´î^I3ñ ‰°dy—æËšôt¯Žo³Ã ¯nFÉ5Õ»ÁÍyÎÿô;\1pÕ”¬•9L/s¸ÚWÙ¾ÖK5­ˆï£®B(‹sUn—›£¬Êéáé›·'h˾=¾œE‡§ûg§çð×�}}œQ6¤_,�@AÏTCÆêI çn] Ùìi9Œð²¹¦4 Hü^êH)Ã&ÛÞ(ÊrÅrx„HG š‚E£år=z³ÜËPjKP£Í–ÁG$Æ„Uó¾)ó¤DI¶ÒÔžö¢gî=“`äü®Ü eÁa|Œ®É•bÌPm[pÀlJ){÷=k5m-¸›Má7h?°y �[Æß"¢|"ÜÛHP¶ïŸjö�x 6aìU6 u‡í ÂÕü‡Í4Œ�zï)cæ¥r^(íúv¤ÿ¯Ñû�U…và á?eœ öŒcýû¶�˜� þøm±F>•ð³ ‚NN°”rg¦¿ùDþc&ꕆIÀ£ÙkwØ”Ömo‚†É½‚2: ¼‡.ÅŒ1o\�–i§�E"EÜšICÏþàÙÓ•×õðþ6!lBPž=�`Ž·Ì7xæ÷�èçcÂÏÅŸ¿ìx²4h»øø‹§þ˜„Ó‘OIéä§;»ý¢ÒíîÎ8}ù©³+?éž ›Ù8“ÿ†Jíh¨xŸ9C/í©ÙÝ¥PI…W²Â(¥0€%{Áå¸GîÖmÛã"]÷míE¹†ó@Ƶ2ßïA’ÇH:£I-“V H"_dWb–¹g*ÀøJMÓO~Á�}å º÷ÂM·GÚ ´ÏMŽ@&<ï§9ª ”žw‘CáH¼bî 6$/)ƒretH�ö¢ÿµë0àoÝÉ9ÜE–ÚÀGÓó¥ßûI�äcªÊ}¤‰JËz€=!ªVIpd æ«í’9>ø#Ç!þ ;&›¸*àûåv�D³šy'ú€×–Ò~ä¢�‚È|®‹z«¡„4�;¤‘E?+AûݨI}ëLiYí]^a¢#:`°)ƒ*ð>AëÖ«Ñ^i+¶NQ³Ì{zë·J˜oËÀT¹»'s܆zméû”’æ˜X~ LÖ¤tjo;¹iǸW®á@.‹¦ÆÛ�íR³¦©û¨b¢®HsÆ?;¡mb¾ÉýCýÎØb wÀviáä`e2ˆ v/�61˜c×2Àr‹P$9:°™U|;%ç÷É+””alû5Ù%•}�/ Ï1IÙ_ÓÍõþøàÜï8$é=0B‹¼t"A…­îᢓ9"iýÇ´"P¦²ëxÀ°”�&9\/·  AÿéOø7b¼ ¢9Ióy¾$ yú¼�QÓK80ƒñ�¥õDÐÖßÔ^•åaÞ Aö§ùŠ„ ãÊÓ®®r- ¦&*t¬,+aZ«‚Ò®yðBB«z‹Åѧª"Ã*r•täóð†a™k>+Ò«XÐ+sÙ£h:úÞCTFP†]q¼ëp ‚�^.À<)5,°�uT¼äSC ‡<˜ÅÄõf€Ç|z«<¹,Õü2^öçYš_⊗ ¶ô:3ùòæ¹×·Lùw¹ã+Ñ”fž…ÙA°_±0wDŸˆnž)Û:^].6ëK„Øm¥<,7&eÂèXþÏǾò(.ös™7Ž.XÂ\¯/Ó†¸7w—œDê§¿·E^ð%-alJ™Dcid7‚ó¼„Ï£†âþ„æùLÔxOɹéð{¦¼ÂÝ=�³Ëk°0 ú›Zz]ð§:»ZSq\¢ù²ö¡ogÓèÇÝfSY~Y–¥òÕìAw~ÛJÖ譛¡ÓÁŸíOÞFÓéôðÅn4…¥”r6”b˜S±- /êo‡'oŸüõÝÉ�Ò/ù0î”t eý�â("<ÅçÛµÏBÙóíïö¥)ÞŠƒ_ßœDù ðœ 28.6`Š€Fž Úò;1Þî~Wï@ºþ‘ân—ð@@ŸN5¿ òÎ0¸'Õ»!]1üƒ)y"·!Ä}®1æäÙHAºZT4˜6N?‰3ÓÐŒ~ðccÆøs—e˜¢íLwIZ*‰²-¶«�±c^ŒÑ–îÀ6ÂTíûVÉ;ŽzëÏø«Ë|–Xrú*2Kö Ά÷Ìå�=éFSêÀrcPÛùœäsN 2MÑÅ€h­›Cì¡wÔnJ6BŸC§6ª*!PWM3AÚ»aTMOš‹­<•Ê­Iv…8ŠŒ‚MÍ \ÌËË9©`¨é™ð+$èçBMj:=ÆY´µ,5�gç“?¦#�(üüÚ³Íd ˜ÅÉ÷Ø['no"ÓÉXé|ŸÔ^£xß[»Ží,.mþäA ;΋ m`‘R¦È6Gìã‰À¹ÕÞÍ+Êž"ãa‚-E!krÙÑç[rWZ�}£M=!^033ô¿Ï _k )Œ,Ô)#väìknª ewѪj*AÉ¢Œv˜²ê·¸‘ŒÙ �ãäËRÒ~7td@Ù%’uÀ“颳ÙmNán�+IêÐ'šF]S¼FsÌc(“Ž'!‚b 8Cgßµ\8Ë8øžAœ©¿¨CÔðÙÓ€Cší×Ü­ìûöT5w=—!¯´vUØ<\Œ ɬ/UÐ…¤ý£M2Î’CÈ-±cÊŽÑ‘fÚW! pÚVIµK^Éàtb©7+è“—D÷ rÏïêÁ]РÆÁÕêzÕ¬iímÛËKî7ç?ilrÎEß`¼ºE˜[U°äËü†| ¾PÓA´ÿîp Àpä¯ãtÖ}B¿/þlæÇ8Ã_n„@GDj›uèHè7F?>“&µiÿž—i¸’ú°·ˆç¯ýŠ(å|´nrɶ_¡•D\¾g-“rBôçš ©Ó"pm< N~rÆ�?ÿñG71m˜ ‹Ç÷jöbÉÿÙ}€0÷¬¯þ¤¹Kõ?ÿç 'ÿÛàÏÆ}—/ègºÈ5…G~Áë—ÿ½§~ÿ \‹?c#ÃüÏ÷ì§[o m¨„$?Hr�IWù%æÅÁáÚY`VÝ%ëŸ?ébíÝÆþÔý�RÝÚ¿ã2ÏðÛ-a:7�—ƒÇæSÓkò9Â÷ð[øl[ÃF.Á&ò¾vÂîÃËçïoãøòý÷%ý÷úï�ôßi\y™èÚap¿›i~¹ÀCN[Åì¹¹ŒgEº„‚õûÛ„2üw ÿ�¯òÙÊ@%\Íàù|»ÙâŸ,*ý QŸè/žïÉá£øAü~¿�ŸÀ`óØ66‹Mbk•†ò" °hEˆVt;ÃMŒSC��½gÃ;ü÷—Ã9á(_ì Þ¼Ù[­Ãã‹©ü}¯,áŸ0—ONNžü;üþ‰ÿŽþw¢þOtÿã¿é_…~ýoÔ{ËÿéOУ üoõyOÏïW…ñá½ûL1Ò”‚xÿ—’\Ù0‰œˆÿ†eŒ—°7¹b8ÃÄ‹ájo°]Iþ ü þù/‰IG^ão%Sfx}M¿ää“aB/‚^Mè”h2<áÑ……ÿ:áU©à_wô»}ówwô Là…þ'Y™bWNÜ.•ªGù0Û.—Ã?<…ýýQñèåÏ?¾üáñãßÿ?�ÿôÿÝý­Ü]ÅëÿPKÒV1]„_G€Y­» yimunify-security/assets/ui-app/assets/static/other-root/src_app_components_dashboard_maps_topojson_ts.8266946db05c564b.jsUT ëÆ«jëÆ«jux è‡Íýk³d×q%~ï_AØ©€aêì÷Þ€ÐeE‚/�,‚dµ»FÁ¤„j ËLv �…ùí³Ý×Z~â( ¢Š]32£òâÞˆóØßîË—/ë�¯_|çõ›WŸöæ­÷ß~ýâ‹?|òÖ{ñ»¯>ýìÿüñë—_~õòÍ¿¼xu}õòå›·ž>ø÷ÿüßÿû'Oï¼ûÕ_ÿËÛŸ|òÖëWŸýöÓ¯¾úíg/ÿõ«—_¾øòÍëßþþÓ×ÿò»—Ÿ¾úýoÿõÓ¯^ÿöÍ˯^þ×}‘ß¾yýÖÓåÏyµRß{ûÅåååÕ;üïþÿüìÍç/¿üÎWo¿xçϯ^¼ùã«/¿óâëøõûè;þ¿>}õ�W¼|÷óß_Þì~÷»—ÿ¯Ëë¾üã_|°ÿó«W/¿zñêÍç/^ÿ§?ýÞí_>û@—º½Ðù»wþüùÞÆu^¼ÃÛõ¾}j?à¾×‹w_öé/>9žöýôéi_÷Å»o^}úåë/>}ãýÓ³_¤§÷y±›ÛõΟ¿úïÿýí—¼úàxÇïñùùòÅþâ/¾üç7ÿrùòƒ/_ü·ïüÝ«WŸþéí/Þyÿ/_½ýå¾öo¿üîv“wþŸo¾ûÙåË}õÞ~e¿JûW¯¿û§÷?ÿÛ/ÞçËO>Ú¿ûüéòÝï~®Ûùõ×oóÁöåþõ¥O_}öúýâ×™—|Š¿ù›=€/¿z÷·§üêƒ7Ÿ¼øÛã?ý¿_¼÷†áØoÿ?ýþë¿ýìýï~÷õ;/±&^½ýÕ'¯÷‡Þyçýý•¿ù›ç£¯+¾º|u¾õ›¾º¾|ÿÍß^¯_½ÿΫýož.ûÿ}÷»ö6_ÙÏ_=}ðêë·_^>{ç\ŸÝ¬—Wûçó/²¿èN/?øäé²Çûæ†ï¿úÛ¯ö#¿zg¿ø'¯žösi°4›}ì}^Ú°_^žWÿüùÕífïÇ÷êûïÜ~/®{~ý‹ÛeþîÞ!o~óè¾ ¹øl=ýé«ï¿þoŸ¿ùlì;þìÓ×/ÞúðÅË}ñæÕŸ¾÷ò‹/^ø·Þz×û³}ü½W—Æ'öêïÅ»çøÍ¾|çë÷ý2¿xùù—oÞzïå{ßýìåËW¿ÿü˽p_¿óþï^½øôÿć>úão>�O>ûœ_í³gŸþéç_¾øxßê˶Oï�ñuöÍ >ÿ>å—ûÓ³Ïþâåúg{»—|ño^ëæC7úBüý‹?|º?öž6ÃÞç_?¬›Wzïå×_ëƒo¿|çk_²ïß|õƒ^ýÍßà‡7ÿ xë/>ÝñÖå´9ï½Öüé½Ï¾~ïßúÂç¿ß·ÿ7¿õ?mfï½7ÿæ—¾~õî«ýà—Wïþ~o–?öò�_b¼½-íg_¿óþg/¿|ýæ;¯?øñÇ?ÿÙ»_}úêõ‹·ÿß߲;½õÞ[¿Ú†ú‹—ÿü§·.oÙ@¾õÞ'Ÿ|’޼ŽKê«o ÷ɵ]®ÉþMù’æþ!—²ÿ—k>žöŸä2sºättûýµ”˵4þeÌiÉÓ¯tì¿øgò¾Vö‹û:ɯ¿êåÚ«_aíŸúþi_Ö.µï9÷§¿H?ìÇ�'˜þ„Åþ:ü�é‚Òþf¶oÚߦ±ìë×¬ë§æÏ±·ì¯û™gÒµšÿ”Û�]úÅÑìO˯¾¿Vü>u]Råxæ=*ö4o·£úo[½ø³ÖýW\Ö¾ÊOe=Ojå28v¹ó’Ö¬6bûAkÕïK¶ßO{€^/)u¾ñòÇûqý7e�ñä[¦jŸÞSÓ3ß2ã%ívûòû_ûï=F;›ö5r×ýê¸äc,Ÿ‘¾¿s\íR¥ñ ûºø¿íÒíJc¯ûwÏHó;ì·Å/ö­Ìm+øÞa.—Ãì˜ö‡¶G¥â¯yði�ãþ@˸¤}s²_ð‹=^ ÿâi?Œ�Þ�!©ûamDæ¥ùp¬Ë¨\�b/Wý®Ý>·—–¾í�lSŸ§yÍKµ_är©ö:û¹JÅW®þ‹:1eƒC|å�¦uô=…åXv…}SŠëþÁG¤ØŽðÕµbÕ§yøú±ÕãÓl‹Ì¿¾§jˆo‹e”ûkºÙÞc)­�¥;÷å±±‡–äÞ¼¾+mı„—Ð^­X0ip(rÍøVKÛ½š/ƒ¿À›Û±qð@þc¥½òá«yj©îuÙ°Ü.Ø"q°.z·ý.6$ùÒ‡±Ú÷ *Û'c›$ß³Xµö¸{¡ãuÇŠȵ$ÿÕ¾‰ê^ì> «çºg,MÿÈÞlƒ¯†¡Ú8í3uß¡aì!ó›û•ö\.,›~¬ãRµ=&uø£Ê¾Ø}­ÙtûjÝÏ“°!²Ý«ëR{”ÊÄîÅêì0žÛ c&Ó±ðÑ=íËÆ1ù5aQl)”ƒ qUŒ-¨ÙtXdû{ˆ7©¼d9`Q· 80ÂSÚý½+mÍÀ:Ù¤ê6Zõð?Èò˜)™ÜG{ÄnF°¦8®°‹¶¿;~ÚOŽÕg§N�ýÒ6`{]iƯ|93è¼|_û¦iùÊ3óëÃnÓ ŒmòÞ:æì/np6ØI³=¦uÝ_fï¼âëeØca¥ØêJqcûlÅî¶‘ñܨò`…­ÕúË?‚’Œ´’ºmßó�ØazöÚ2Åçížu®Cî« ·¡û§‰Åµ·Oï}ÎÏlãƒõbG.Žæ=&KŸØKn ¤ûaûäGÃ1÷,lb{ ÎÍþò3êÀ5íàôW³‹û9cƒÀÛØ¼5MwÂajSÀSÐìÖ^s½á|÷7µOlÛ�cz¿oââ¸ÈíØF$Ù^v«nìÛÙ~XÚ>ŽÛ ìËqG¹ñÞ«Ô}…mn|bí€èX5ubjªNçÖÿ¾Cå{uÖQ�}M·5û2½Æ¯·1I~²™‡ÔtXø±Ú5BKN�ÛðŒ-Üå6ùFÇ/KxY>�¯mí�n6?ûST{:7¯ƒGM·»ø¶×¥m»û6W0?6Zv‡jÎŽý°�t8P¶à0�{Ñ»²k7쾜?�[M32†qøM³f¤aœÍ1ä u¿D¢;ÒìäÀ›¥aöðèø\å�ß8,YÐ N�»{~\øB,á¤aÙµå‹ÍV’»´8˜l-fÚ‡T÷ ¯uðü ?ÏL~g÷‚»gvq!l£].{ÏÔ§÷Ò¾ÎY5£æfÜœ’!–dq|Æê¤\ ‡×>CsaÓJ× �d³aÃ98îpt�C» ÃaÎk›ñêXDÍ\zαÆj—?° DÃkøCØdÃÿ<Öà"%]ÿ<ê²þˆq7? îFk,œvÐ�O>´…ãÙåÛø¦ò¯öÙì{ÒfrÄQWúà½>d çTã“·®õj0̸¯aßï¾�áTs¥û+Ókòwðü‡®Ô“ÎÚÉPÆöõ²‡…–+G’´çSœx> þœ=¦ÆÜ*.é#VœÅŸpõ˜¸*3±˜î£îo|Ws~hˆl—墉-z æVN¾Û ûX嬉²‚å¾m wÌÅoµ¬rMfþçÄd!v¤Óh±Uå6õ¥ºÿõµl‡#ŒˆÏÕà3îñ£c“ð‰íÖp |�í7ñXŦ7;Mã�u²¯‰q×' -èvàˆe=]ÅWšüÊN?õÀÓn$û/öC`ËŒÇÊEžQòM°�xg‡ZÜ:É!·g¾¢ ‚°½0çg"(ÛðYNV*pY÷#»/°}p÷ñöÝüUö€7ÙA8V{[…v~hí öË›‡ç¾ÁþEo·qR¸(ö#.lÃÆ‡÷¶çÑ7ã^4[dŠý²¿[ä¨5óïöiä`ÂBÙ1óðc¶Ë=´GÓ¶°ÁüAÊ6¶ ó–ì# q¹¹’eòàOÝ|½3`ñœ<‚dωΠ÷ãÏ–= w•2?{Ýý6غiæCuŽŽo¸Äw7óßy›cº/5ÎýUŽ�A ö`Ã×®íÇQ¸aß[ _W§•mü.�˯·Ý®7»Å8[¶K×±O»DÌ•²­�æ¡Ôö*Âz”}nÒ¡Ø&«#ŒO>˜ûŸÿüÀÛÙy³è\n—gZ€ÆEH÷s;¾¼<ø÷޳¹óï¬f_áù– ï'Ðf´Ýýñ„�¿í>=Ã\â„mˆðÙ€“Á°¸p’Ùßš“KÓÌ2]E÷O@fðJ¹Ù š¾O’ã2öµ7–ñf³‚nv‚c{Úé‡ÕÎÄ–!™�‚7_ð`f7ì˜<Áð™Fm/\xHæ¸á´gŸ´wæ À›,¹šÅ~�í10�vÀÍßáŒÅ¾7GÛÿwÉÝ÷Rôé �°+š!Ä•‡gv7wnÇÞØyø!eª›EƒäܬïI<¸`q&­†Ã$Zй㒠¼Gô; ñ+¯†í+¯É=¦×Î ÆÍ€ùTo¢*f¥Ç?˱÷ݘ•Ͻø4ô> L𳋛�nc±ÌI…=Á|…{¾­Ë†Wùcì^9éçDây‘§ØâAÌìa`Þoí•P²[†NàžQ2Ô ö·Ã$nönŸ¥ØáIölÍd[ØÏ…&�Ô±Kx23ã©8Þ»·Ü>¿A“›²xÛ±€PödùS,3Š1šN|3 ¾Qö†Ä4T¢gÙÞ¥s aËöÙÀæêû .°ïYwŽðš¶ãý©“ù›ô‘àþÛèa_àhßã‹so/tؾý4~ðì=Àˆd .4„§~㶃o…A¨ûáËÈ«¦ð`oH_ð£!2‡›#øáÛk/”šáÔáÎÄ»J`$ûý·Pú’�»ák u÷Ý‹vÈ•^†71ö�е›è6Úý¸¸‘Èòn¯8©›ðY&pȵ!KèXPæ‹âÒ 7#vøAóD÷×ÍIJÅcÉNŸÒ£;œý™koPuU·«Ž¸ÒêY”!+…°zÜØ‰+�?3HØŽ!öYÿf¢iûI³Üâl¾u#>xfî!I4=æÝ­° ›c;&â Ø¶ í>ÛE•0§ö›0HØ¡�?¼¿£’øâ{1uEDyÛFI,/BZ{"Èò…tpó""MŽðù°|è¦õÐs¦ýˆ-Ôõ÷/ËæÜwŽ%;tºöÇ�ˆ©r‘ û‚£ÇþìãT õAt'Àãï,„=iùåÁªíR8ë{¦üõ|àˆ—7üª úÎûÀÅE«AÊ>¸û¬Â›×}ÒàüÚ xu¶p+û¹};_üH M’!θqÁn϶ £,ØÎ·ÓÐ`V&a™'ßîŒDÍfÀ&‡Ä ­“:IpO`ç¡ fÁ,e;ô'¶Τ‘ÐÇÜý€átX ñåd¾ _oN¬\ƒÅ1_}jMÙ¦ðç)B-·)þžGENÊ×€¿Å¶^X�Cgˆ(zŸ#Üõ0D�au:‚ýž™ Í‹Yè›§Ù/À¿ºNÎmðéFÁ‚4ž¾„îhx¼½5í…½M|­˜ïï«Þp&ܹðÄ´g ª—zÚÛñùÆ¥Øþá¼gÑb-Î\Q mÖÆ>0Æ`¹Á»ÈÜü{Ÿ/÷Ê ÚYæ!ÜâÁ¼-F™\ì…`951öÜgd Û d q ·ßJoß òPÅ’Z°7 éÒ¾ˆÛ[Xnq‘#p“æ;¦ëXÈr"'&?æõ€€JìPJá²à¬=¸áÌ…tnx% ÂAOÇ·¬ªMVe†'|¼ƒ &¬Ð¬x;lý öÕç©hRzD(ö4Hµ¶ù ÂB¦  Håp%ú )P÷SaJz †§º‰è„<öBòIܦÃc±¹‰“'0;Ôdåí nZ*ý–ý ßUÑ»ÛR0É{p2‚ãÆ€Þò�X½IÐMNÞ&Þmgr_ƒãQ¸º8·�ÐÓ>Š2CضÐ2v-6;"G„ƒmñMÆ{ígBôj¸NåÃáDÉæäp…5üîsÂ¥s´W!@¥„sÚ3²�{³x_‰þ›¢4x �Æï X˜÷²\@é»ê§Xå,Êÿ”¿’÷÷+SàxÔ¹à�Î dqÙ•ÿbôåŒqgTÚS;‹ †Ëƒ‚½ýüÚ Ñ—×$¢˜l€ý¢Ø®îÉä�óÍvbÆ~íØ¢§w£ï6Uô‹Ó°…'¢,¬=îÕRàÈØÙ òÑÞ‹�áàÈ,7yŽÌUÛ™öå¨ÊÄùMª†:¹¶a¬Ît(9h>Ÿƒ‚¾?ŸÅ§f˜±¿*?¼ˆùeK³dž·øÁVgW`ŸN÷ûܾFºûL†îtó…à€ÙAN?ÚŽ ¡¤�ÜZàþ%Pg9ôò}iàlŠ}+ñM8ä«úDщó£©{¥HÃ3¢>dâ4ÉWC¥h$}ï*3œÜƹ3¿¼:„\…71Kr(œœÕÏbaº~Ïxà.…©y3áü¡è‡ô�ò·øÍÿØŸò7~8þç>ü?ù¨ßæÃÿÎgþZ�ú߇ÿÇáÁ¨~›q~è•ÿÇfðÿ'oúУþÕ·Þ_ý:ÿ“›è¯¾üþZ�ú�iúÿÿ¥õ¿rþêvõ�±úkIÿ“‡Â_}ý/8jÿêGÒÿØä–ãyÀ<✃ÉBûwòßÎÇ¿ó{wðŸ,DjL8bÀê%1'8 ¡…íÏ×2¦(S»'[Ò|hÄêŽÕÀÎ2Æ®]ÕAK‡Q¶/ê�£Aï8yP†Ëˆ›æhe«û´æ"ÞÜ÷e¢­Â�&qñ´[V~zG¤’0‰%(üõ j$}Âfй–ÆCUffßñE/â¶M¥éݗƧf([ÂÛC¥CÈ’rÉCL ß<‘~�-òC¶"+«Px*ý�wA$FsQùhàµøíI50ÐQÁà Yî–OÓá…T=eÕÖ"D¾—%òï ˦ēõxà|!'øà+Ö­%"|²lˆNM,X#;’ŒÍMy­Ä�m*: mf¶üi(ÜD²�*|\c*°’ez�…È\›™=f†ºg‰œMð™=�¼ ãFƒ»}ª7›ãS—ùû *’÷°�—´é<͘¦<+©›°àÌ×’ˆQ,™ßGGV‚ñ®%Œ‘�)Â�ã—YJÝôEûÃåê”E&åŽf¼á‘�¸Š½/væ æB9Êžð‰`Ü2ƒO`gúKo;ç0Š�Ò(¥Ž«ºÃÁЬgbÞ‹ ¬“W|EU çŸq€ÕNKpí@ùU´#c +=½4>)B|ü¾_s A‘îw8O¢ñeõ½âçšLHê¹;H – D¥¿ Âï–…?:P–:mCn6“Ðn5v ðfÍ¢½ÙÈq'v\ÑXÀ}ÊŸïCÑkHŽDæ_ éeœBGª%7Ù­¶8&ù°¢ð‚½Þbò=`-œH�Ç�18K¹ÕeVgLç={03³¤v¡%’h‹…ƒ› ]{vuòDâ�Ëä›)øøÝ7…-¬®<*õ%²ÉtO,%´xÄÛ‰�¬º­l" áL¾>J<”cL7|Ræì.faµbkå oOž2ž¡"�œù[Ãá`3NÊl*9JœÝ.þ…*—‡eeÀmõ`Œ#ÙZ”;óT8'ñݢ…Ç¿-Á\`ÒŽ®Šr¿ŸÂ`9ßcé}ÿs¿ò®BK='�W2¯ nÐ6; ±tÿžƒ‡ÿä xüçpŠq7+\GsÅøf)ÙäßÚ Oa"AeäÖ U¥É ¾ämËÎ`é¶gŒo«Šaô“Š‹š$,C;�nM4IƒÞ¯ÑÑŸhÒP 2‚äÜW%x�ºõ„£«²Æ ÛØ‡ƒ—@"“¤Öɽ**°äN°‰ñº�^^³Í'U5�X]Ο=†4˱î£�„~õº¼ž YdQ·Wƒc$Vo ÉáÊX¤tò„—� –qè9FžÉ›z"øî-H¾æ90ÛF­ŠÞ:¹ÅuÔÕiЏØ,y(ÌS?m³Ã%À"=ÛF€Óyt[âF´UÖH‰%°Í7Ò`ö.©Š{˜m%VmÔ‹Hm,äê à Þb Ñιœ¦†åpÆÉTU¹5|$û¸D}ðþLµJ¡š¸j_üð-<İÕT?×tïÛÃY(‚4RHRgî³G6fŲ̈žÀƨ‚!ôÑ]ÕB%ÝŒ)Cáa¶[çKqBºoÆ^Oµ¿L&@×TL×t®ù.çgDüçÜ÷íqÙâ�ßñ^":’UH†û•1ÏvGüt,U17‚H}Q±qUe?8ÏüžB% Zû{ƒuaEÕÊðÍ9£†ö?9¼ÛhQ ':ÓÎpMæV­NiYxÀŠß)ûH7´tŽ ±‘ªÔ·Í`(Kަê%·™ñH)«2Ä¡r�èhnJxxWÛ!³n/DY^4¡5‹>jël²Ž,SFÄŽA|G•‚nm1¯INJQ¬–“Ê D‚uÖ_˜‚—džÁœji\µ´{âY½Õ~x¸©©©ò€L%ØH´uÖáXƒÜUÞ,éÑ™<±µÙ8ã~¼u¹IòU©/˜¸&ùɬð»R«&­ê“Ä"�¬—.(Í�sDà‰'¸Óm°x�êúUÑþ#\[ôà¡Â·²WãÍãt1t p®TuÒ,PA€²~�¹ ëL£—qèà*a!çroit´à;£´4 ‰Î%Ÿ>Þ²Øþ?÷å&�}Oz–E6aÄŸ­tz’(÷ Y5_5©5ÓaHSONÙ£‹äq;Ž:>y•’UÍz#¢šªë  o�eMÍP¨¹à'F—CpbožAˆù‚y;4wÃK&u¼iž£üÁwK9�dñ‰À5·Ó/£ZÁÙ\كыÑõ=˜)ÈùPí²¦Ñì•ý¾*ymýÇy‰ÂR¤WÈWúœÔùá)Nœ<å,UKÇ2Û2&�¶¢Üõ“ý° vâpÝ7ÓcIŽÅ4ÕÁØ‚’‡g^Ïöeô´rÝIÜp í´÷ƒkåôY*á�£:àÌ«õ÷uÞ* ¡î&®ð)"0¦IN„½Ë¶Qm¯R÷~ŽÃk?baë(¯HÉ]t¦Y�ê[?Ë[Ï¢”·öÎ@_U‘¤“už‚c^OÔWæÅR Ûdê†Éí¦±$“h¤ùÑòɽ,r»É@»pÛÁ�>³~ 0Me_Œy*–½¯II�Ì _Û顈Ólæ­ŒF‹ÆR›XèÛ.ZM,Ìc¡QÜ[pÎ/¼ˆ_.fFϺOÁ 5’V6L]d¸½Ç°œæ‘OÀ!Ó¹*8ß‘›kwå_:gô„)]‰ÔÏêÓ °‰™ÜÈx.Ÿª•ÿB59Z�¨’”»¤,dàBM.n&)¡E�IWMµa¼S‹*5ÅU¡%ûux‘dF¤Bµ÷ÏbÀÐ5´ZVˆPHnâ íl'’1±ü˜åY™"p•ƒ>ù`r¨ ÏŽ«D*"åÔ,Á;Ú�©pkËð?ôÉ€kË&FÆÂðXœ .èn“éôIM�D ¤Yø'ÄΙ°š^4O×±ô×Èî)?á4„–Y�óD‚Î@Ówç”dÔ …wF‡,þk$U<“»aâ±#© —pš�mר¦£ÏµõÒ¡;W™;W 1_VZR²—Ò¾–HE*XTÐØS¢J…YZo.±À¡+$ˆ^Enj„VáŸ1Ý}`ƲȪ�>�Ñ…Kñ|ªtŠÀz…™É¹™mt^tM¡ú•Ô/?¸9†è`r“d“F6)™r(­»hÊŠ�^Ñ+,ã‡$­IºžÏcbEQa2ÚkG—Å hƒõÓOœg`~ulˆÍì_;Ës„šÇñ>îF5CDìJc:B²±"ð¥juä­7òt3“ÇE¾‘ÀÝb ÝU!®s(WNqÛ`Ö„:Æš’'‘D¸WqÔ=’ÆÕ�]¿ªÈª*„Q`Ûñ@‰ÉÇnU}x—iøì=Gf‹äKÅ4nô‘¼˜Z#?ÅÝ~}ŒÆ)h<Ÿ‚Øíz’B%ÆÜ O�q}ó§ eC·¼Ô¢¶H§)“t¥Jò gÚ1YU´�+R•™[�‰x¯–šD $ xŽ=²zt!]¤×ðD[ÒGgèÜ…øsbB³™yzhgÅ1K/&ÌBv3´g¼‚í¶w½Ç¡ƒ;æÈÔÒZÔj¤±r£÷*×ÜNŽ EM¨ÙÏžÏy¥¶¸ŒY™`¸†Bt,ì¥ÈÝë¬Í>eåAdSªÓÅ£|‰g�·AO¬ªe�Ë×Äô‰Š{lWêáN¡µC0œáŠ5ò§§›D‚`"³ÇÔtš’$‡$‘ŽM<¢éýÁè¢t‚ òB]dÜ*£k­ù ò“£"ßÖ\òj{³UмQTúšO˜�Z×ä ßÎÞX¢s³�Z‡˜:ò•;װ݈H-%üÈgêK4\z}–ø%ø!•v@^ÙEÅpÇÜ]ÑgP…Wܘ ³WYO@�FIå)kaz�‰òц[o©PžÎÌgÒ“‡&V‡g¹�N^õŸÛ™—'9¬�ÎãKS½Oì©¶€±õ Hq­Jïa!¤T—eânâ ÷­•N9¦©ä†x¦ v\r­�=ƒ�ˆV–}Ÿy¤E¬i‰œ\ ±‘ öHÎQ"Ö�yj’Àl<â\�RQÏ4UPo¢zÿ¦_ Š.ÿSÌý¬ª’.Y£)Ä �Å�E:¼à ûýƒ³^HNKt*$zæ%LŒG(ëšÜn ká�Oy#ƲTê™L€¥b‚Û_™ˆò¨\)#‘f?/f�†Ÿ%*iµ2¡Ì%”öh–²Í…§Æ�!�‹«cïd¸ýRÝ¿Vaá•q§ö×�©å“/  ‘;�ÍI¿òz#,õÃ<‹rpå %£:fŸ*,¿äéZŠÀ¨C <3áx5%X>»Õ//¥îè—Qi÷ª²å«D¤¬Š+­ç0uJ~KbégµÏ“æÌkfR®Òe¾šý‡¨?MŸYëî[¹ÞËŠ«á¼µ‚Ù°� aæ2{U™Ÿj…œíÌn 8#0.Ò]å… I«€À\ƒ—KG_VÆÕMŒ6( EfËË·Ÿ*X ¸BåñÎ\oõ3âÉí%Ùþ>ûœ†Ë¦Bs'‡p&åÌ<22n<¿R8Â=²¡,)0íÆÝO Ý`b¾W½ UœÃÆ�‰.¢ph_&ï%-„Õ¥ü=KY»‘%zÅ 8$.°”ô2† òYòܬ&ìóËQ+ʱ‰8J5ãÝCa�ɤM.4V�É“{afÄ×x�Î %Ä0VC# Ñm=ô j“sríq†šI@"Ï£ FUº¤ø¬êÝÜTa…FˆîÄu^}â—ït¢ÔÀkq~–âðú±Á�S_2+týõ“ñÉÕB•ÓlüI¥Î9šŠ%U"±šWÁº²-†L%1ÉÊ%DêñçìDº–t ³ Ù˜©_AeJ>/½’}Ä™pܳ¿*CüzÖI,oÚ7\\sjŃ˜”Xf{™›aj:‚†J~0C»Å™ö$ªgU«±®÷ñÃQ‡ó)䦜Ü"g }6ïe¢C¸ eèä‚óPF ³†�D÷júJB‘®=ƒŸœÆÉ#ª¼X µ˜2Ê:ªoãÛ‰È/bâUÞP—.]$�%w§ªèÆgÓ�óø5Xå`NÁj(ú€Ÿü¹Å póO#ŽÐò*]dWejü¨GŽiª– zŽ ‰! £øc�r‚ôëÍ£Å(Nìá †(·è­ÌÄy)«teD[ìmßBXg-|æ$‰è¹ÅIÚÂxM÷G=hÌW:¡$¿&U�y§FøÌô¬â0ùÄ.åà(ªZ9õ©ÕEÀ¶ÛdФf�mòaŒƒË†«Dèæ»ÐƒÌ´a%=ö ¼|&.½%�ç‘E 0|Õí§uí tûÞè×¶nºÀð¸_:å‘̵úV•ÅP&iö#"ŠMRÔK¯Š©\ØÊ¥K‹Ç"$FY‰·³è ø�ÂTwçüã“oQUü —ñ`µ';P‚ûˆ ¡²PP‚³’dd��¼¸ç±‚ÀywöþÁmŠPDT™÷ƒf¬ §¡wïN»¨»ƒƒLáŸFwº„ص‡�~gCÊEОs!Êõt|/1²eŠm½kó~NK ¡ñ¡ ÅõOQ†Ô4`VµŠ�Ј}­ÂÂü›Êö²Ò#WÙ,Ð7Põb¨ "4b½{‹€¦ÀêƒÓ‡Hr¨Ä¥†ŠFZÁ ÔJ/yÄÆ:¯×#L\îpw=]:¥CÙïihn†ŠQÀ'ZÇ8 ±àgsc3§ýã6@y-iüø15uÑ„D�Å"¨Ä a�?' ö$�š €ÐÎZ¤óaîTõÂSz¾1=¸èšð-¬û¦¼×Œ½eûÇÿV+ñž«šÜJ(ð�.Iá”â  å K¨ƒÆÑÎö¹8;<â‰r"Ú%d&ð´ìwæåÿ˜õë<¨]k°4¶t뗺ģ¦T½ª*­ /£·3½bRé:‰€ìæÁmÐ`¦«”U’8t¥zxmŒëTõ„þt·Ñ‹±/»�¥»…É;d}ÑO•ĪAƒy .8V3t—cM’ÃYøË•‚2˜D)0¥ª?°¡C‰‡<µ$Ä9¬1eï¾8'…ŸÐj«vêRI›€²7™°‰eí�?ˆ¶úmÜr*ý^"ÓéªP˜EàLrrRuiåªa Šü~óV s½ôÿUÜ\%ËR¥ ±MºYš+“uvãÜ]Jl›³”ئ�×t¹•]‚ žxª!Y°è€®�„ÈRš™ }þ^bDNÍ ±ýo´F:…´¯j-à¶_ŠlÈ£zKS%ŽÑÓåŒÌí/p Ô°Ñk¦ëŸí Ô„öPÒeÊ�‘£`*IŽPž£Éñ ¿{.É©0Â6 °`èmݜŬ�×O0IÜ#Üꪸ‡}=”R�H?úÛù‡«¬RP¹ `]½kÛW$æOÝ»\2 =k™œ4éÂ,ô¥èL eD¿¥±‚[üR5V9,ÖQºAe¤ÙUNÎè‚K´$Uu•¸=°Áâ{e=Í XÉÃDoÒ¨n`ˆ`ñIon©4~ŒFÀµÊ üŒ�¬lÇižõ¬ÂÕ? µyÔ‰çWj¡jêÛ)¨ôÝ IɈÐt¤•oòdÒ'«lÏç# Cµ¯A—³E.š»Šè½CŸ �Ìè[=Ý›ÉkŠrhã¢b5htÖHӚǟÛÖ|ò "�ˆ­ÒÈÍ1M#øÒ¡4ÖºQGb Õ„2 õ�p5zd]«Ç%§Áe1Ÿ@.PžÊduêÿXôŒ3”Y�}”¨ó(ÙA ‡c™XeèèØ^Utí”ØÄÕAa`—¦v€dâÛK нѥý;Äê�Ó'E>¢Ô+ªe×á‘r–Å�ªYžÒë©ù4¾P$`¤k3;nê^á·èV:¥<ÖƒöÖ«Ôƒ¨ÆÉHnhÈí="éÝ>•€Y¢îÍ@_ëé˜({…ÕX¥‡“SÔŠŽi‡ï~eÕ¹ìîÌ:äê ÒjM}ÆÌâ u¬Œf#0*Có˜¯WWÛ&Úvˆí:+‹ÿAªÃY×ìô�š4 <¹ÈåÁ|ªâ,)Ź\Ó‡\$–I ÃÎê!¯Cò³m„âÎpñ<° ûÙª'RzÁj‘¢µs»Ñx'0ï„à ^a ÕáPw«jò7 “HÓÅog)}éÈûAêgOU ô±ÂZ˜ É”‹»ó VFh¶uÖEûï2X{$z´òdmàÜÞWY<2ʈzhC%M¬Cáp¨8¥Ž©˜×›£ "*"Hr÷�ŸÙK¶_Ï�¾É‡’¸%jà��&íjºdÈËÎøvÝß=*l8�"“—Ÿ…O^!w ܧ*³–$?’BRlû©$„±þÅNQ°©j ÎK9�{ŸùÀXw»š®pa±’bFÀ×µnš:ûv>Åi*ÃóÊF´?Q’"ÇI´Þ "á#ˆkÌxøeÞ�k$)™Î5ø£‰ÝåZ!S¹Ç©_Ï¥ž¶§#‚ß;)W# .\ &#Öí~öq"N˜‡,~þ°µe ¿Â…Õ=îµ™WOTS¥w£Ù6Ú1±Qº-�PCÅZn¦• ]@\\¶p¿™5väS4¿rl>F�N7.?Nv®0ƒ­\g¨øWÐu—TíÎ*"fs å7Nùšã8 ¼A‚)Êö"/è,O¹/î!ŒºE‡‰”µ©.�Z.Êß5ÊCÍØ†µ’µ*êhòƒ†²5Ò—H%U`�±ÆC#}¡XlØH†—¾ÅŸ•ĸ8¾ÑMz—ì ¯Ž’¯F7Xý¸æ½Epj‚¬a]ÎgV•Vf Z ‡nB9=´5]7«�з?ÝĶ)ÜFhƒ�cJ,‘RÃ(&ÎT�)Q›Ÿƒ"ºV1u vÉ£|#)ŽÅ/KVš©‡áìe\e?Ö$ü1²2 _êJ²äÈaP?6"b�Ìg Ùr£ qT€‘É@ä_’îæ®@„£©–e‘‹�hßU“AjŠ +áYPú‡‰"ÂòÞŽhžh kÈ¿4FãÚ¾ÎX DÆF$LŒ,M{ÍGÁš»»µbœ>£R«È«£Èû8ÎNÜ•Ö6‘zß�0J\)�üF‘_õ%�:Cþ$ÏSB'”×lÔs–^"Uœá2Dñ�à‚†I+á0aü%*�ÉB³Àzu äÔ"/�u`¾ XXç2oOmfjÕ�`ˆAî�ª‹ÇpÒÛW”ëZ= �+˜ ËÁÃü@° ¡é¡ Š]ÖM¹ò®@‚ð!IM¶%¸°g­fßMFÃÓÐÓÈœŽ!-Ö~9¨g›ël�8˜«Ë’ Ún�-„™µÛXŸâ|xÞÄ- >@íž©fñå`á/:ŸX½�Yžj„!�'ª‰|'WlÉÜ CÌNÁ&ÌbC/ÒŒODþR•�ñ>Ÿ.7áf_HT"~ø¤«ÓÇ<" QO^gžÎ–Ü‘NÒ3aøÝCD§9H�¸Â�Š ¤"4_îicÁ|bÛY×z�Ðu?�¨³D`)FäºCrÀNœPÞ16“uB�EIª)RK:³Ô¢�zEŇQ·,žJ'7Xwppg€Y· •�ëMÕýzãŠH>¤!˜_óØÄ¼ñf¡R/Æ%ê�6E% 68qÁaW”ÐT,½«$:é³Ò‚s 0¶IÞ\œÈ*yó«»P‘Š$Âæè%΄ ”õÂé?+«G¨(ŠÇ³¢ª=CÍP 1x²1p±P:÷à •,⊔G'õ8¡æT)ÈwA “ l�꓾~Ñ@ƒYQTAhÍ—g�V4$Kg÷d÷ˆ!PíöðÅ¢9"Uô>ÔœaÿÕn¼ÿÊ4nŠZ‚Ê × @•±a$Þ‚ýš%9‘°%Oüa !È]£H® ³#D�Röe<ˆY‚:-„¨ÍÀÊ]ˆ×¡Q Át�F½Š¹å =žpJë7j¼sÒss0ö+Ý6h°þ²»çìP©Y‰=•ðeéüßHÜ4 ‡èÂDuîÙÔEfçb™´%îIVìjÛÚÔõHþJUvwñ”½ŠÝ„zC,PUaC׃ ¬éV>¹·AvŽêÓ×åFÍE´T¶5¶ÒE«¾F[6 º"†œ7ºbç*�D¡L-Ez4t¤²Š)O•¸)¬Š.mRáç5(ƒW•:»}†›ãPÊÓ7jY½fy3E¾jŽC_ß9š¿ŒÌ’âm&é¥ÍâN4qª1É"Ä–‹ö ¦(ë’Iy.]¤Zг¦q±‡PeXʘ«õ¢Ok¾)òˇ•þw·E„od¯‹9¨»p‰_rÿZÇw �žÁç…F,KIaRq…zäB¸²Kèð¢¦ütä‰gYw¿•ãtèeŒ²™�²¸kÔ‘¤��wôyp¨¸ìÙ”GµQÂ|0Á$1\Ïë m +í×^ñFÿ‡,X�>Ôg9#xrç³Bft=Ž”ž‹ˆó•.v-¹]eºÛut†xT¨³¬“Z…«&ÿà¾I®àjã°}¾qLÇjë¶3cç—Z$� ºƒrÅ°ÙÆMý¤vâT-VR`½�ÍSš“ù§Áh* �Ìûu÷©J?:Ã’ æ×”.ã튃òÞ˜íÏKB¨.©£&ö ˆ§ƒý¶} ÕP ”2Å�&¯¹Å‹,“Ø`\mÑ §†”ƒ”‰þHv¸Ý H”° ¸D=�gˆY+s¯†Y2 ¡¿ïõžáP£‹¥ì|Wï6ïR1Èé ü}0ÏĽªT9J§:¹Ê§„4º�¥Ay©ÿÅRqß¹©Hàˆ î¤À'ÇÐ1ŒƒÅ`/M�0y'•]«â µý“€˜FïÚ1ñÀå#R}¦[yÞÌ¡¬–E ¥c°Ò_ª:²Ä"ÈbivvP)A•5T/ذ£qÖ”LL“¤"j&VrÈfñ ‘ÃÂÓŸb`6®e?673ÝŽ ã<Õ3³p¼säŒãД,D�˜Ïº|,Žª¥9œ†‰qSÉ¥šiÉ¥ÏáÚÊÙö~^¾HD4\R¹EÌHÁËÏä¼%XÓL7 DÎjc¬ÿ“îe>Áþ*u©¨~IÙ{.lÒ S„KžptþŠW6ƒwâÒMܥʒ66¤Ÿpß•:¯,,GÈI-Qt’Üe*%¥@S{³¨n{à“��sv*_ᚈp U€êŠìl2Ã÷JÝ9ý­“ˆIõÓÈ£oT•eãh´h-y ¼°5�\‚˜!Óönrx¨w;#¶É‡´TíÍRyu)bW#qFÜsÁ͇ì§·K®÷†eÆTˆÞx vdÉ8tuÆJ8­Ë×»—1PÍO¨–5tgà±BÏ4)O0�îWi žs«Ã[^€Hã_sþ… ÷(8�O —’‚/d¤¦Ìc™:‡.xÓ£ID¿h×ú$_‰4%2{ˆ¹4Yí²CÐ’žwæZsv�`'˜¹J¥¡Nu+=mRf�¡SÝ‘ú¤”õ<óC › uj°f-‘ºnÊ×äÕá¼¼Áæ˜ê Šq¹¨—]š^4D½žˆ%³2sâû2©"B,š©‚f%ÄкŠrÚÁb«’À×ለ ^[Òº·B"EŠm¦±Ìl$VÕÆÂ@ۄѺò0d7œ,BPA&·Gu‘"§À˜–ª3‚ÙàñKÆj?Ñ7æÀ’žßQ*"+Êø¹4 Ó—æfø¢8±üÕfwÅΰa¬@ZqÔ¸„&J�†[EašÅ›i¨€LçT‹šHö¶…2&Úð‚½‹h±Ú‘Ñ!²©d¯s8ú$PÐ'2í§Q4²ÐnÆÕ…<;XH^èŒå ¦eQ7|Ö'V¸Ð%åáš3(„Ͳ•3R)!äBÁܧlôЂG)>8ªÞÛË„²¶èЧÈO,g5QUÇEÍXŸ zç>’¼à3›´]d2 9ÅÀ¬áçæ›¾É7¢$ˆ�zh8bÃ5·L-�H€VÕ)R0zi´P#¦^'¿¢ ©ªµF:[kdžŒFžæâŒ2‚€ü‰i'`EüvÕæ*ˆU »ÌcºÈP«3Þâ±X˜jèœzy°Ñ\�Xÿ¶´MG‘Rx0›V‘Þj«&Û�…Õ]X"ÃP&g³ï  4—<)Ð��Ý»úèmÀ&H³²Ma�L „Qá§Ô?Óå7ŒSEöWgàKYûèÛçãUµ%ÒÉUê!½“�9Ý™Ìî ¢I%—›(¡v—B,ÓS†‰*þ’Xuʇâ8Zh¼Ùv^¬·#e3#çõÚœNC‘yŽÜLÔÀ£—7£gš‹¬¶«äIÝuŸ²],‹$¨�&zÊÏKÉj¶–¦2�œò³v‰Äí²›þØ;áú»k�ìßÄõ5ŽG?2z,x{aøžÓ>“]^køDËEÅç`Q +¬¢�E¢ÁW‘f¤sŸÐF}âàN_¢¯;Eþ˜<’‚YW¤]\‚×=omd'b�ÂC:Ïu¯fa½Û´©Æ‰ÊøNuÚ+Uè‹Z«§Hv¤:ékN&gJ]é먧`ˆ?Î:Õ&%kÔlÉ Þ@�`1î 7Ý }Ü¢¥µ¸Qeù‘·„1ð ' œ[ 𤆍�Jò9µgÖ1ÑÏÕÙ„6ýñ&­eÔ¼c‘VT€;Má¯PjÅ—æð/eqÔ•ŽK;5®ž_=TÍ]ó… cÒ?K;5íbõfÉÖ‰²”$>®S”œìË”êŽ!�]•YIÚG7ïhw?qí Ì�*[�Ñþ—ÝyÞˆÕ‹•4Ì�•4�¼ ÌfÇã šoôBãøî©e¢ ±’¬švÕ£‹Yˆ‚:+¶pfu*²"—\Æ’#·Õß™ 2Õ3DÍןõˆnå‡CrOß xC*›“é¦üû~¹Iõà Õ­ý� _ZØ¥*å󼯠Ù5Fot¶ �'òOጽÛ5xuùûúŽ^8l;ÈUì�ÂV írÊJªsÇèü 6ÖMˤý¸FseZÅÁñ¢¿˜¥ï#¬HR”.yNϬd´­Ìñ1Ì%ÛA_˜D++‘Oî¦}“æÒ¿êú¡ò�HVÉ–º°‰ƒëž0j–_R9æAPÁ™¼aÐA`†èã¨êv|eÔPÖjƒÖ8à€\ ®~Ævùõ Br-¨$¶ì®Ó{ñèÏfâ*ÑîÊRs4¾¬ïŠÉŠB\D"U6~çñÒÄD¸›e½¨ÊºC™?šnåÓ99’7Þ™(·ÓÉ]Ï{4éØ^8“ê=!u€QV«|°'à° Ú|ÒPÄ)áS�: YSvÊ*’œE;9ÿ¡K„)ʤ]͘šùÑßÕ;{ú#϶Gl‚óá ø¯ S¾©¨?�AFC­7[µm N…YsþÅ›6%ê`oNyÑ"õ û•×]`:&žMw�Àµ�CÀU¬è„Ý�öBn•ھē ®�¶œ­DÌw/Ϥf2b(U e%Ñmz›^cÄ –/9¦FȤ ¿�|™ªéœÕDVf½YsÇõàê¹ôßC”>,Üõôô•]x†‘k[“Ú HcÞ¢rµ^*nXéãD©ùØÊ  _L<æÝS{qÍɃ�5ú¹ ƒå¢…°Ó)13Œ<:‹F]Ü#»ÙÓó_SÍáªÔRG›ž\ qt†R6íq“Ë-Í–¯–†ÃkŸb™úÑ̦ô]ðtŽÝ�7H‰Ï@�!ãÎ2b/  w,dÆb¸�ÙØbÂ.!Ý­þÝÛÚ�dÏg°Ê¼…¼ ÐWY¶±'ÝÅÕ»G¾aaè:(‡µCG·CÚ‚ƒÔÒÛXÎí­êû¦{o¯-Ö;f‹?+öàäuJ(uDéÊ�åJp�™h_Ê<�üÉA9˜�œS5f‰ÔÞ¢tô0ü9äÔBÊ+C1î#6`.êÕ1Y\Þ‹¦éTØdî ]¢z|JZÁJ7+„× åŸØ¿8“„¢"¢Öx™ã•3Zx¦tà‡…Ý;H-¿G-dŒÆŽUmÇ­õ˜QSõ/¡ãðŠ»ãè:Uòìú‹y"{äÅaSœåÚ 'V1Û¨2N‘HGõ`HÊåô#Q¯ÎióT&ÜR>”.’5è—:ƒµIr$òGÉ™Ð)¨òZ×\fA3® ¦#SÞGv1´¦¦¾êª•Ô ¾) X½ ~�¢ëú^\1ò2¦V�£%wàl™*öúï}F’ÏÚ>ƒ—¢˜ÅäId ê߯‰–#bUTz5)KjÊÂXÔàQ¯‹™9-å!©¾B0“ŒOÚˆ)M¡LýÃ"úJéÜ–`±jôÎG-Þ›†S’;&¡)X„¾�Šâ’¢s²HO¥k’Ààh\ˆõsÖ·ÀU@ÏÝd7�ƒ›µ‰JÜÄEUŽ^*ÍMiä"Coë'‹§âŠy¹áÝ’S¼.gQž—¶.µ¨Š¹€˜íë$Ÿ>•8%’ˆÁHA*•¤D-r,†¦¥M܃ÁhólÝBñv íö¨d�:®¦–-w´ÚÒ1£Öe*«2�+|Ò¢$ë9�ªbr)Cå*IFJÞ¢iXLN€Ìâ)+?ÙÈ„©¬®ˆ8Ô”`¬ƒê$N9Ø%(�«ÒE h$pÒòéš’Foùr>_ö°'YL3j3s¨p,)ïRK(ð“›PØ_rF>@ ϹÒ=Ï¢J{6G+$Ϫ0?NpOÈ)ˆáÝ£�ÑT#J¡Ò�C·°H8pÏn0š Š*ÆÀ5‡dì¶£‘ââË"Ë91‰e᯦’9çÐ.å�U­+¾k"iÍ|%|7KæCý>Ⱦ ×GtLÄ ij‡7e¯‡€iH„‚kth2Ç¡MÕ¬ãÁÓá·$ÍM ¨2:ëIŽ ‰€¨Êé›E5—iï×~0Cr=“£5r0Ñ®ÂßGd)ÑžºÅ~þñ@¤¯\#s�¦±Å¡Zq«A�¦‰ž!êRUßž¶áµNbÃPÞ#UÒ¥^˜öö­>ì�'5M‡ ±¢½5ÄI~r8~D’"™PÊÍgUu„>èŽyá¹§³œ’âNhiŸYtSósõ¬T¯Oå~–r nÂY�~7œ½:%%Ôö)âÁM£TPææ«‚çO,Ïæñûbþ;i)k\q¢„ˆ&«ÄÐ|7ó¦mB’KÀC<Å›¿ "zÍßà£IŸ´°ÞÕÉØ¥ðÚŽáT0e¡Î3¶:©Þ^Õó䥮dóL1ÛŠrÄn¹£cÖi·Ïc}5×ó*9¸ðSžŠ¯,OÒØ”Zß¡ƒÔ{d&)äÂ+½t�²Ô*R|¹a²1¯( ¾F}‘‡yÍ'öäù¬kpTIeÄ«š»SWVÑ-àiwǹb¢ò°6¿B™Nf–ØÖY¦·¨3/ç„`×JäqR݉DÇ9 jŧ x`†.דi@pmÙûVO«ˆžMऻ9éh˜}`•p74Æ_È‹âhC0ËAÓZD‚@›å_v¦.©ÕŠ”ùÊI²•é”çâlw.¥š;cm¢ŸÈàÄh1h ]UÛ|²xÔ èÏn$„Gk±RºÕðdÚ�,Y�$bbOQ€’|G1–LxÛ¬–N%Q3}bX5å‰^ ¤Š“¶‚;Í…S#ŽOŕ͓R«•�ÌÔ,˸\Þ†>ÇEˆß М;¡÷ÂîÜ,Ò!ŠZ@u¦Ö=îzÛˆ7ó�#ƒÆ+Ë›¶–´ª8Ñ#Щj8¾¯h²¬mLòp‡ñ…î©UÂjžû …°ãa�0,Cô„¬V‰Ñ žÁÀÌÌE‚¥5òÖµ§°{!0\üá¹l‚¤^½}T•=A�!²ñ5Ô”S¦wØCŸÀþ¦Óy4s3³$�Ͱò÷î%“L±iú³�9Ç*“� L¸GüÉTOâKQ(þ”7A»ïénvfé‡aa�Q2#ùÐè�Rb­6•a¢ö€õ:•'ÆJ×é¦_ •\§6 AªlŠ®ëY§�Æ4ã|N7HâTUh2²SPH“ ƒˆ‰^ûÄ!0-�Ü ³¯$L‘—ÇB�²d;=�H.^I@†Ak¢å¿Äĺª–ÞÞ†˜ÑŒÄ_áOEµg"G›ZáEÝùûÅûÔõËô¯5úå�áNÅ»N—ö/uŸ,¥â I«Þ8°I>]ezD˜ŒÐ‰n‰õ‰ñÉr?ý‰Œ&ºßJ>yéqŽ©°’²ÚzÀxlµ|Ö$§‹xü%ÈíV¼QÛdàÁ-8T àÁ©» ¬üLB=Sô*t‡£ÅTV, !êÂÂg™ôNÒ˜õV¾Ö„µ¨~VHî_äüÔ¼J:͉µs!³S#xQIh‚9bS‡ü$Á6é"c#êý¨¢ª­ÌÏJ™ÊAïѶ®µ±Lب( ["÷?°:¡#Ã1µ1À$]”wt®~�æôlTb¨±¦vI{.ek$óNb'5žEŽ™aStE0È“i@dbME@Vêº^ š»‘�l±’Z  •ë©‘µŽ3Ã:L´( Êò2&6Šh·¬ YI q+k×õÊhfœØŠ¡²s¶É‚Q™H�ðn×l¦ÑÌt«Ô0u;ƒ–Š[à{–¨…Þ1úðß» n“jK]Ç[‰�½�œÏ@Z«ð/ôKè°\«é39�ª’T<•„ì‘M¡ô�”2 > §E‚#`ÚLz;˜ºö�~Ñ,,·b_ãöËÌf[GоÙG m¾Q@çõ”s€b¬F�”Q¾þV]ÿ‚3Yð’£"›i—¥å(¤ä1¦¢0Â`ð®š�Á¡$a«ë0&^u¤Ñ¾­PqÇô´&"/²¾‹ú÷*õ¾Ð•3»ÂIoÓÛ½[‡ÙÀ›VØé4üÕ k¼+œ¡Qó$,/íœö^1Zü(??²Ò,ǯÚ7Þáß®vÈu䲌éÜ0jÀDØ¥ôðšpÞÍ súZdM\åž Ça§ízQ¸@Bê.@¿Â„æóm^Ã>|ŽEãà�e6M©‰Ê½Œõêˆ]eö)$?¼[$FRûrDná8=ÔgCáE‡L±Çù"mÕúÝÎæy÷UIåˆý=�©>ýÜW¸Š/(û\DÅM‘ŸF÷¯–µA³LïY+Á5<•¶8Ìnc’¹–€ €gb,‡«sÔ€¬(+j”6ÕøúL/Ë÷nŸ9äw3³›‚ábÃQMÁ:ÄÉëyÛøí–ÓÉñ»1 Ûv¿Ò�K‹˜™ìN4Iq‘"†GȰF æ¥™ÊÝ!Ü&´È÷kâU°f“½èS`Û(í|‚kÅ–ºlpíÜY\(Òß})ÇÒ4#Áèœý;‚³ÉÚk«Œ“ƒí™"ucì¡ÀÅÁ§bÏ:ódÉplwL¤³¾¡KF ýâC™;ŠSµ…µ´ã‡4…V–¤EʽA_hŽU:uÁ´S|_Åb)䡾ªsë¤×bP jԥЬ‹ ”i³äëŒxuýÌIõÐ.Î:øq?^ò¢f] Á¯³9Ä,Š4ûàŽçBR×ùÊhÑÍ7�`Ö˜rq°u`–je±q*Ž�Æí$CÒs ô§ÄÍ,!0,*0/Óí$¡³ë¤ò�éí"LZ4-ÅÕÏÝÀfIGªŠ:hOŒ#ì!ØÜšå“ͪ<_«eã >›“q›�‘g¢:o;£Q<|ÜÒÙ(„Ú¦+ÑVc´Žy†žrãtÙzx©{ù‰[ÙØ Uåa¶½ˆÜÏìß(P—²õü;hÚ¾s$÷â• û·'ð�ø÷)ÌL¦gIjf9 Øß‚“î†ø<Š·w9°–äS¤Û{º0ÉzZìc&�I�.-÷t!‡.Ô#À’LoFp²Á� ¥¨AÙ‹ÞB®=Sðš%aªžÝÛX¡œ•-qÃx¦yŠu&K}Wª&†ÎRò”n–í%{ÁÞJ%v>pIt�T'n@•èüu„„ÿs±»CçE.êº�ËpÃq’CüyXò6Ï€–ô¼N^ò† ÕK$+˜�, « â3!iÝÙ»Š’ÍðÖ»Nº›üiadvÿqí„æn]ôw;)fˆ¡–7±Õ¹į¨C@ZÊâ,ÁlÏöd#ùÉ……üè ¹÷x‘Ã�SE.ˆ˜í‘ƒkC²HÆæT¸žÍÓk -6Né‹Ù<æ[””q»Í?ÌY£‰××S9MµzãJút4â‰ë8µ´ˆEQ–8©7K‰:JÜTÒuòÒ.´bÞ| pëÃZydX?þÈ­d‚bÛ„ZOÓ#d°Â¦àº*’ýZ þYmƒ-0‚ê§„åTµv¯°]Ìv´C¹Õ2Nát°ã8˜`µ§J)×+ø²ç;L÷ö੼º#7ëã¶�ø3M%‡çŒÜ(=‹$Ä;šPsoEg=à„æßA‘c5˜0\ž¨&ROˆÅf;DÓ¨*‘ª†�àDz K ‘¼yYÃQØUo Ü)íÔ° YÎöŒð„À—ÖN—oFß*…¬,¦‚ TäGÂ!ÊŽž¼ø¶UoíoƒìST±Ôdc÷Œ?UJ4»Ïú½K[T(ˆÁk÷?ŒaɱRYšVáŠaYÑ,Q÷½"æßW·Ö~¥í6éfð»bIîº0%ÄÈU/x ‰‘®R ÓÇ#?3žœ}Ô »Â¸ue·2Æî0#mÀºÜâ6êÂ91+€­]®�{çµÓ©éá8ºr‰SÄ�P™?›§TꆚÏÓ¦çqQLºÂDN�'$Éèܲ•Ë Šê.TÖB�ä‰ÇpŠ.“(L¶¢Ðq{Xþ6� ZGÀýd[$‰S�QZÌÊÙ°ÂÑKîBzÕÞ Õ«$ÙPÊHBݵ˱åÉöê²ÉGV&›4ïÂÔ7ETÏ“®­i$åL¤¡¬¶w‹5Ñ�7±‘¦ñÜÂñw�h"ìYRŽeßÏV 9Øö�)kœâÕ¨Jj±D=bRyxS†Ej¹YÉbײñ@‹ùžým$´ˆËT’,è:š”$“‘Œ`#OVtÿ8x«šÅ¢“‘\ 8´Þ‘äдÒɸ’^­sÐ ¯ƒ"£¬ÈPv ºeb„¨^Èp–Ô–ö‰M>0c"Úʧ*b­%•½ÛPÑÚW6œ-‚‹¢ZÆm”X±òÝ/0».à ÀbiÁ¬VM:£ÿL) OXtœ8¼}¥:ýƒÒ ƒÿVžpþÌ3fØÝa°4&Wá£&ŽÜ¹ 9„Þ ®pšŠln¨|ô’�J�Tj¤ÔPCÎEž!?G³äÇQ‰_6僧` XŽ…³\n- ZYe-R"8å-Ù©ª¡¨ô¦ü–уz1÷'Ǿ£„#8?нç�aš–žm$aÓð­ÑcÊ0µY|¨ ‹ß)E}à›Mô¦Pßq-˜'ëD-õç¯7i´V9x®×Èéèd%Rc'˜Üžé^p‹d‰W\›";q4s¸õÓ’�„‹w‰PÜÈqågt· )³/¶°Ÿ¼³€NÐ_0¶T EN–uñÖ9+]µN´(*ä zK3ÇX@z,‡¬I»§ EIwwíÅ%šÊ�æp1@�`íK¨™Pà xÑ{gu":�ÆÑ}¡Rì 2ÞÄëí, éQÀJ8äð…öM Í1z� øÑI%IjAg4eUá9¬¨lÒ²n”²¸¼ e‚D‡Ž=æYÉJ—P¤“<] �·° —š® Ѹ ð[|äYªÊ4K”]ˆ¥gÕkŠ&)ºcý+¨,6®°×FXHš¿ú9z¤|T±mkòöüÉŒôÔ.å̈æVM^©O°yìUüµÙ× Ý”—È:ÈNHŽôÅAÏz·”0ößè sJ3>÷¨¨ 5ƒ Ù¤±�{€Î“B€D9À’o[«úÛË[hÒ]¿! BËÆô’ò=ä,°²-2zho_.êœù¼éP˜ôšTòå;0¹¡¸šBÏÞ¸ †‚râ=¡ ­Ô|ÃF;]îÙ!5*üUùç'A§‘™Áæ¸�@zšÃšë@Å´\üæª@³5ÆÅ,@Tz(G0”~OÌ/Gg¢¤’‡Ì|D7Ôh¡×nÖ«ú.g//õ8O*:½ž=I«Jû�6>™ý¾NmMzÜû*AéYwçU�²Á¬ÄIº=Ì‘79ÄwJjž’Óík¦³e×›G#5iq•áAS¦eé3$Ì}�aœi¯¬2Üšç˜*KÊÒfyë%$6RxKÔfébTqÊØVóJÏa‰ È)~âT:‡¤¦¢¼²mѤƊ_éS“=—ñPýHÀ>ô&šzqªÎÌqFA{j#±kè*D37¸ ÚšÅd¶j�Øw7ÝôÔ‚ï]£w[‘œ«q«:×RDX’Y¸9U&‡§Ð %P͇Ø6�[¦­Õ~ª¯šZ:©pV¥nêŠÚÕÒ…úEŒs ²o„àîÅbZ…P¡[Rex”öC‚�´xÁEw(˜F“Êø"¢ ª§ ëídþê( ¥HíÀ”êu ³BèTIÄ,t—«Pfµj,�­EÕ ÌØcøïÇ!Vòó®Z)ŒÝ³F^%ŽÎçÁŽ(ØéÃs�lš¨Äô ­|^¦4Ç»¤4¯-3ïÆÚIQ<+ésTbw‰1ºªäݺÑ$qZ ™ð<³j�rê„R‰âvf«Ù P-•<þ÷#n¡Ü`}LÔk«v7Q¬cÍó•S1ŽÅ¶Ët1üŠ£P Deìt÷éŽò6ß�,ýŒ”Qr<w™æú§#èHËA4'¸’«Õ ú3j8�ÿ–jlÙå�ˆPT¹(Y'xx¥Ÿþ8Q˜«Tóœl`ŽÎTŽöÊŠf#Ÿ˜¢ÉÜÖnU\ŠÂñBÎHŽhN@èU)8²<›ÂÉ2Ä) ,K„�¦>ö€�Ofé¢uŒ¢Ba™ñcR]¡—)êxË"2«ÆƒÌ¤tjaÑ Véqi7lpV=‡ž[V)Xé'íNÞwU?š„°P7DàËEïðÍ’Ç­Þ—Uî†z°ƒëÒùÝH]‰„µg¬TœW,~^3ôÞ©üÍaRìQ ÌÂ&y{©ÑÉ)AÃDv߯7”5µE¾- 3iÇCÇÄÊÐøäxë¶òXð²7ˆI''Ò½Ò Æ]{fŒ“²MW á›*6NS2i,ݪ߻üãdÕ¼¹÷£è‚<~|-Ù1¼FŠÄ‹QIJ0%êgZ朖Êð· ÓÐÜ­Þ-3ÓbÍ¥¦R«Û{Ò Ô\4“ï¤fâY]æy/¶‹J4,-z?ÌSÀÌ)*ƒ½lZ¢6Ô“|”a´4²˜é�ÍàØwÚ'¥¾8tH„|„‡W;> T;гö¯²ó¢¥¦ˆêEû¡€8ÎóÜ:Mt0õ‰IŸ=U¬«¿Nð=ï+� ¯4:3àB€y5xÄì? ²|%‘¢žÒIù0’r>JÒ:�å‘ —:2›LT¹�{I�0JÙˉ3VcnŠ>úä©$)×…j |üX¾Z9gbú™úbŽ&' ÛÃaÙÚû¹i÷°zëœy`ßðÍUUõqò•U½¤f¼›J¢¦Õãìs—în4r½cåèGä�Nå¼IÇ5±¸Mµ$]h�n d ¢áª¹}w’Ù¤*]Œá´šŽ²½q '£ÊF‘ݺDg‹Hè×s� 2>:}XSÌå.bK% ©ýg1bì–5w™ÈAîìàªs^’úŒoµŠ}‹sÐN­(ÆÀù••öe’CP…QAöл;‰˜ž\ÕÂí〒v”�_£¹“ouá•^yÀ'5LÆÌó¶O8"JÐ�»¶+…:9ír+x@¢¨á>Ô�d% ,—ÍÙZòòI="Î&*ƒ˜«hÈ]{)³:µ²óNt4Ú àÆ·"_f©B£óO5Ô×Z»œË,u†¶ð”O®dÛ•¡ÜêFö (¬\ý&æF”Àzß ,Û�l¬y#�p*Ñ àÄäzñ¯<ˆ™»b?ž%‹wGXša§ü@¯Yì'a±êƒ?QÞÛ”k.+láq£cv¸¶úÀÔög&1D’»/Oß0ÅMI•*˜Ñ E’Ž÷uøëÔÎh`r¯É³íâJ]£E3VŽ0�«êñØ�Ç–Ž¬<%ÕEÍûÀ^\Ñ>l,†Äó$<“U’—N¯}ïtцô)ã)X4À9kÐ[ìl^ÂÃÄûÉçVÆŽõ?Á„¥¨+�Üè‹AåyÛO^ëq8lœ–Xb‹ÀÐ08<ù”ö×Ç�J¦ÞWR£Òð×ÐW °%Ý +TØo¼2Û)zK!3GÐQOJ• ždÛ6õ^h\ô|b—!?øPº„®€ (ˆ/ÿàªÚuáéÌcѦÉÐ?íxML£…!H8OU‰,kR ™èNcÒnn:a{?XÙ»u�ñš¥ã4¤Â$©Õ«Û­¢xu56Æs&©,»xJùbÓz?x×Ê$NŽó “)îHuwª„²°<ÚGRÃ:#Æ"Ì&Õ•ÑdpI ÇÖ“- U¹£ëËÙNþk'/�ÛèæÌË©ê¥ ¨SÖ�åŸÑJ(S„õ_£¯¨-n�ûº²£çŸÏu¥ W%«ª¹4©äO¥!Y 3DÌÀùb›.àsð§%4锲{ª¾èyßò,RWíB½I–»‰£›O£/& £¯Õ h¼d½Ú5ÝêBÝ¢ëR6#2Iþx¥z!ÍŒ†…×&·?ò‹*ƒ *°Î™%¢W�Šª¨˜ o]¡ì°.7‡½ûh¸ÅšPÇù)å%MWü®¡¤ÊZ4àlö’>žeaøl{3ØË¢EZ³ 7¢0ß¡$-B¹„Ÿ¦Õ �82âç ÅÜÃ>M–“'Ü6sáõ~Æp ²ò‚EÍð“ëL,•�†ñѰÃF–ãÖ YYªÂ¥Q&ðž‹pŽÌæ²!ˆ¹ÔFbQ¶JóËZå3­½£n/ªáQž¾”s°�tÚ7 z_d>•Y^¡¾‹úv+'H±nÌ aee© —|Ét2+‡Ž7ß•Êÿ]f¼©X@Aë Ù­G,Þä– †Ë0 �l¦ �]. ;à’¬K®B>§|Ã)œ+ 0’ =å;Ø«ÏX¡;ÓÈ3Q'O;1…ôãUIu ýóÑäó¨*œwJ=ºËÔ wàÖ¡Äÿ:^0ݼX&(Ü#8çH&e¡�Už|;ëEÝ·šŒ;óí�)(vàòð³ÕQÒ,‘&p€Ý¨`I¸l{”•,@%t­g¹¨?XgˆÅ ‹e>™ðHãælÂ'í©ÔúúX@3Tõ_Y›`Žw´\x¦Gì$wZЦãÙlȨè8ÄÄMQÒhÒeN?ªU(¹i·êåqDfåüDoÊ)”›ÿ8ä§¿z_ÖëÛ¤³:õ””E_¢¥¬¾Wn‹ùÛ³§Âr ¶Aè"-¦íKœÔ|GM{.ÑÓ™ÉÝL•ºƒxm”A§µ“û&Óùe“k&G ÆFn›+f£Ä±±•i‘‡©ª3ëçYq¤Qæ N¯cYeêâUfûªÚöT¯«|º9H¡“X!Ê–…Ô¹7ÐVç™}dÕ‚„J$x¢B®ÉXX>’é’AŸ½(meMïL‘GÈ «i¨Þ”–«¢ÑïCß\Íç% ‘ª÷‘˜E¡rŒJ«ÖÓ4¡aB¡¿™HŒQnÊ 7WRj% <º'Oó`š)0¦kX”FS_4˜•ð”*S‚=½Þ¿D� ©àÎ/ªÚ�dØ’GJ¥Y´†¶Mdá˸ñƲ¸RSO¤$‚bšÜ=8nå  Yqè¸ÎHÙ4*m©eo@+ŒCÂØÒáÇ`gÏ«ÎnnÉQîI„±Õ—X‚— ‹Ý:“gòÂü†Àm‘«µ‘Û†¼ ÎñC¶©Yø–wr“`?ø&„žÆŒ¾ $NÐg´ý}p)Ó1”P+¥Ú½;­.Š#àê_èÍE…é=¥BáÝ�OjÅj>ù8}_׊Nj6æ}¹N#:¸ ~?² /ÑÌ íÃ�{�~KÌQQ9V.ܰXž3D 1e6`ðMB¸w©)Ý8P}�zù•n%Ζ5Õ ˆ¶éAY˜‘Ä6Y˜²"³ÓR¢£V5~®-N(rðD¼Ïeç6Wó<µMœ,ÈM¢Y°’Ç1Jwì¼`$”’ŠÎÊ Ý<³$y)I‡m�W%ÏèdZ± Þ•»Wû–hܽ'} “Īþ ùîšdåójØ#l�mi7Q»É ‘&*F¢é-`ýukk”&² "³²û–à†•Ø”¯¸M;xe�Ox¨û{]þG2y–£ßÔí⦯>õâ%,z»¦î�Kí¢bxªbÁ=ˆhÔLâù*õ@4˜õëµaAcG®-3Äj<$©W”X&„êxÿÚ]w§ý¬`oTV_OÑC«PžJ2zš�V-¢²äYlVÖøÕk¼¬”ñ÷|¸Rö 6w,“=¤xÔìÏzº¤%Bi1nüôöµJ�~.ás94ëR˜ªö*¥"×!6t»D8cN.¬ÊðPdCª&>Μ<$ CiIJÂä! àΓP( `i±X¢qI™7]é¬c›«(¨Hj¶!þ-B.©æîï½}OoH‰¬ÐÄÆ}G¤rõ‚ÿÞ2-·»ÿ±xläº×�% UÈ—z){\á+Ô8ÆO}ŠšãìÊÚ­ü¸3ŽÜ%žã$À#¹<Ö¢FÖ:»T ÷æcävyîwÙ9“˜ŒA¹€‰±£I´xMáø@NrêÒÒY‡ùˆef•ÆV¹Ì9d9šS•ø¤LÀQèÜlž"qTÎÃÆ«°=Ó Â_††*º¿,¶¢ÏY8®Gyî#¬rÊ‚<ë S•.T'‚¬góEôÍÛd¢¥†£§ í¢ð«#€áE+8ªsºÛ��+rÅÌ.ì0·¢ÐçXùü=tGN¥Ýg­*�橉åmL�Þf¸‹8eÃ=¯óøwpHV´†·9…A Èv0�þYj Ó?‹|­ÃrAÜ>}»hVÊpD Íê6ÌŽ"�J¤51âË„2¼°xÑ(¡½’*ÆÒÁ`Ò "M`€÷ÞôøQòò+€Û´‰Øe>‰#ñ.)à%   ÉÚ™egªË—³ç˜ÀmŒ@�HŠù…¨q’­‚A™ƒVuçÙššDÜÆÒt¡! Ù\4ʇïyÉ.½ ÙïÙ>Êž—drŽM~ ‹·4e8˜-Ú['¹¢ŽÚû �†ÅßSz�.ý„s š]µæßDª÷¢Þ}ö{ËÎNvC ß¹+•µó4™.Õ͇ß^ŠˆÎazº¿3Úq]#þîí»ªSK?Í› ?–’ZŸ—ÛÓÒRÞS…6ž?«‘´BBˆ�I83┼FŠs*ëòü—ä`vNÉô!_ܯ„ˆ· _‘‘0K,»ñ\uÓFg/áz ¹„=Ô9)áqòðm9ïSG†ØÝR¥ú ‘«¸}A5º],+ ©ÝôÄÒh{¦uIAjÙÙ;äj[xr³àbHÌz_Ÿ§3ª2$uêQs�èîAÏÁê´à2‹‘M®AçV�9jt° ¾¤S; t£´6IÐ�zoõR�o=† êJKÖ?d¾8±ýâ@÷Ù\XodU) ö„vgøAgË£¨ªhB�”+R»ÍŠÒ™ˆzÒ’ š¹7Nùv殄΋—ä�Øô¬"¢A¶É¸œ~fS3é%.@£_0iõ³OâfJ�xùÐP<µç•  F¯:›ƒüüP-q¨gâ‰.Có¤�˜¸xŒZg{oÑ–Xâý.›“ ­Úã“lÄ.‰š‚ØŠelw)‘Fµó.q«DÚì`I´‹6(×…lÏ�2c_7ôT,%UNØy“­A²@³ÙŽCdع6iÞ¯9‰ÑÚT=Â2$¥V-â)bê°WGRévOª[cá€zWí_ÀK×j´KYKB¨°Çˆç-uÕÌóÎ)‚3ŎݨMñO ²Ê�Vî¡håˆ�› :j`#Ež¯2¡Ú¦>]ˆsh†Jò°�#x‹0îU)T*›”>7Ú=éAж9bu’=ÞÁîc5TQL„:`Î^T¸µ?jãÆ!H]ti«÷†û(Ü£ªaræ@5Ésx‘Aã•/¬ü›!L¸ÑJÙ€ðÙo¼“+ÊbtªbCòHºzص9ºW_ U@/ØrE”'gc*ͽ’v ¼S±2¡5ñz ÞÇÒÉ ò¤ÕP„Ýv‰‰'Ö¨³†ÓûŸn}F”m�O7@¢YŒ¥UëVBÙߤ±»RŽ…•4”y/yzé%ª’b¿Jí0JŽ‹�·€¥u®Ò¯§c‘Ãïº\Þ g�grv1Ë>c‡DR‹4-TWÁ¿ÎPgÕ]ºaǼ²Ñïõ6¸mÕrœeC¬wÖ¥ÂÄ ßë´9|ÊÖ½½GÒJ:•®’Kl)ÔÄJlò8( Ø%jYqØç¢ÁoT_nZ¥–µU"µd9;Y‚ÔÛÄá¬íÉN&“6;¦Z1‘rÉt*›@¥t"ôÏ ;—cÜ£×8˜þXÏ~«§f�yœ$?µ9ŽÃ6Ä4NxžÎkwc©¿%61ˆÌâ©B’��ù°EÕeg°�C;!9)tå×p„A0Àóµ?Ró¶ÉÐ}àYàáÀÀ_õï×Kä2²‚¾ë’B“I„bñqFE‘Uól_†g$|œ`^£Ù+_EY\NV?“'a(§ðeµø¨QÓQè7�“«¤õ"f ÑhÕ5Z–4Ò1e¶§“*Ž7ÔÚìVk˜æså!¿ºê}­uQ.—JáäçZ.³«,Ø Ž“äi¹öï—7nDš€e•"é-Æd$Ï«1®8OÌP,Jt.}IÆ0¤Rî´_uJGÍ®�zÂ=Öv²Ö C�§%�Æ=m(ºÔ‰ÝÄdyã…ˆöF—¯°žl‡XhtÊ=Vó‹6õámC‚º³ŽmI<¨±€…‘šÅb' ’9âÁÐd‚Š«f¥Ž²J ¼z+‚ª@Ûã‚lÀô+Ù÷u ƒl"5ú½{•ùù¨B[ñ½Ã&ún±”›Ü˜% fÈiNC×tp?�ÅáMP†À ßÎ…~_ç—€¹œÜH6>ǹóñoÕNb“"oŸ8üê®SZ’R�p{*‹¦¦ä=÷ñ²„„,ƒr›L«Ó¯�t_sÅÕ'�® ©¶²z~RR ‡k~劆K‰¼d¥­“¬lUqeºu<£Rr’;Õ¹<âI^˜ìy×Ш!§¨TÆÈŒÌ"eÜ)«þ�½HN+«ÖSœ5Üb=�˹)× XAMŽ)¹µJˆy‡z,¼¥Ç®¶’ÈIç™UuØ;öÖ´{ÁQ¸FêL0Á.ª§?Kö[�"Õh{W$Ro›t�ØVŒs=JhõCÎÙå�€ÓFV<ÝHF (Js«æ¼Ü¾fVÊ~�ÇQaÇI¢¥¸Iù±tJsQ9øê%”}›W„<}ÃËòÂyEì]§_ÑŽ§$…H™Ñe$gÑ4CXƒLÔhzf¬ÍÑ2ÂÓÁ ‹ 66}#œt °d%ØÝäpxcE=‰j¶^ Ð5™JÕ·l:ÛI«¾°ÐÝq²¤w2*êÞvÕ·†¦Aý+Á\ÊlU ,­²ÔI¤8j¼‘³‡3U‘^ò?lKgƒÝs‘ˆ¬ÜZ’¾HSÔŽvëNrÈEeë÷Æ„!—r¦»ž�ÌÁ`Eñ—!eþ«Ãó‹Y\#~m¾ò`/ìÎ Ÿ@’p‹±°|S›u0+ÚÓøx⡳\$=ÓˆüZôö �E²&î a³•ùÈ aÿ[JcŸóm¡Ì;sÏz�Œ¼[‘èÔDÊé°X� ½Ä0 ~¶·È𴮢«LϾ ýiA?hjÔ. ’XN2…vJ‘ãðR•œÎâ´{5ïÓR´ñ©K(FÑC`wi#\áÍC|rÊ@1l•Žá3E®h?QûÙb«Ð-“–8S,l!ÕA*ž“EþJRîŸÌê £ÝA£9&l*9…QS©"•H�3ã2É2ãCزÁYe§*� ÌTRmJ{«ßåfŠ˜£U2>Ú15ìzPaÌÍZœ6ä¾®jžÅ…�g *õWÞ›ÎB•åþÍ$LÛí; ݽ�ÈÇðåçD}ÚUʪýW Å&ÃmýßÐÛ¦CU¢¾~FUþŠøm­êú FMÚ=:KY§ýa‰¾*à²ÅO>Ç…™ vXJA°‰úLhJýpV–8 â¨*óihâ�0´7¤¼‘XýWrrÈ2¬ÌõÂi™Ï"©«Y"ÚKÙ²½\™ÆSL5eg–…ÃéxðÓ7X и�r‰Ro z¡“¡‰°hÖ¼®»Eeh¦ˆç­16žÊVéA4€RxŽcysTÝ)ÒíÂ+�3\ XßÇ% ŸàÔŒ`8e5êB«´Æ5•„³Ž�üÿ.ÝÖ«4ºl νÊ�t*ÞxŠä¤+cêO Fž7þK†O ½žÊÃH0\ÂùÅ#§ƒÃ5ºCr�ItY¸«lžïô(aÑ„º·Ôp�ª~i\Äõ8÷AϺÚ]Ÿ7 r­q_+‘pÏ8hn¡�×â YÌpåæÔ 2CÓÓn3]4³ÖD—Ö©Ù³²¿ß`øS¢{ÕjŽB×`ðOÜÍ��|k�­{õ`’HMi³«G?»665qñj?zO>«Zr¤gduÄ•¼¨�“åPFN+½Z›�޶[5$M¤…ï-÷²p˜Fj¤XkÓæ}í‡1[‡¨ûj%cB5já»Æá7¤ì`ñÑé:}¾9¬š¢Nì‡^UÎÚ×IÈ<­CHb´èXlàÒÚJ'xëGÉŽâúSL÷Hly�–Äé%*WCk1‰Ncùª$¼”î£Ò5©þl™«4�X¤¿G©_Šjd/è|"¿„oqu·ˆL²€Ð•è妔µ3ÚGA‡û?U!ߺJum$UÀg‚:I©ž©ó˜ôP,¥ôäRÄ’Õ1$ž—ýªuÉTi¯LçÊx]2õ‹”À y�ƒ‰lôÖG@Yþ纄t+!AeÜz �ø-LºÃ³å+úpA3z¿ôN¤ƒå“È„ž Fª‹QϦÌ<ŽOjV*ܶ%«ŽY’ŽÖ_öJ' ‹Ÿ›$3`øN$* Y æx)EXÂ.RaYIÞ2—¤¹´ÃÆ/ŸqÙn‹µ˜šÀ6ì½±ÀBÀƒj§œ©†6£?üRɃ¤÷„\Z¶WeêÖšTÈ3Õ�¦ò§V¶ˆÛzEèÎhâÊ%ˆì¹AèªÌcuw 0D�på‚Mr-}šK¡YÂ'ŒäŠ\¥P¿&§ƒ“w¬ÂÝ«Å©Ò –�„Ú‰šN™pÄ\³S;RÀ)Oίö5IÆÒ6Ì6ÏЇß� üJjïA©ŒnÙTHoz¸ª<*ƒU6óè@—§†Ò­%rºèõ\•&`ÖçE;Ʀ’ôåö�dðÓ“ héÌ6o•ñX!ª¼ˆ2¨M—Z(gö²rF�˜ ±„‰Æ-†˜(d[;»xÇÏ@U¤7ܽS¡Q¨�¨;ñIÚgÛäÊÚ¼œ g˜Ÿ\’qŠ!Ö/9%·RÎn ÀäΪ²"É‘;<+‚ôêЬ¥`žKŸ'›6ŸþkèYZÑ™~•€� “dV”]Éòi´á.[ 7�ä‡&u`r')²u�vÎæëtæ‰å|Qh{…6 úÙšXјdPõçKE€°«™Â=<Â=óRùÓYˆè>Ê‘¸¥UŽÙX£ÑÊ'‡çîÉ?eûÕ]2JÀ}•‘&J—;ëÄ]¬òÇ„ahn ‰öAë@U‹Xl;r¦j »qæçáã9¨¥�Í—ÉL•H=%Ò^svÖýBå޲¨,왼¦×c‰MÔ58KIÓ„œDW¼Øô”׳W·‡Œ_¦Îýœî%¯Õ†.+íMBØj^w,_šª@&«;Øg>Iƒ®\¢Nä,’@À0HF8ËSíÄN–u°²‚ªv•܃™©³>‰.ÑòŽÐ½J1š S­ªÀ®*Nc%Y#QF½±WG#i-Ýe_ ¼֌ݮN;›ŽÙ€4F²&ÇlûΜ,¡ï"­¦)‚H•ü©"3¢‘DzP¡Ä“½öT,Eå‘hÊN•'Ž0Æ«OmÙœJ­mTÓŸŽ3{˜,X:VrLM�¹ÆZì‚AV§¤‹$µ¤á 5r¹ïª¹oFËÚð½z¶RšÍ[U4d8¤Áí²ô¯‡ÒóI¿É‘¹8[Ô0?• ÒÌ�EWr³®¡G®Îy]¢‘YŸ—@ xJò�Õ*(³àõTœ ‘ïuQƒò Kö 4gc«‘Ì^¿Çù˜*bg *_@çgâÑTæI²eg…KnÞR1ê�¡w�µò�½˜,#9ÕlôˆBU¦Þ´øÛÛÁbë²ÄÚ²Q`¥PåV5“Û¡d2Kh¡ù=˜3’M®ÒM'ŒYŒÝ+®C<”±M,Ðw‚)º1¬À°g€±ØJ¦§ÕٱÎi9xÑŽ’q�g›ºÍ@ ]ÙKg¥›wvèôR~2ÍÔ]'tèÏÄšºø‰I`'ênŽhói4‚>A‡ ÉmípšùFi®ˆçn$Ògsõø5ˆ�#¨‰ó8…Dy9ÝJö÷©LOmS;¸/¹×hèþU”v`õ¬&®¥“Ç ÒÖ„†åEn† ‹Jò ï€"¨‡xM�¤Ò¦Ê×=Î PVa]˜¢]¡h½¢úòéñß@:¸J¶ˆ]{¶ßË*Ù¬ž—¹À½goƒ¦~”ÊgÃøÊ ™v)ÜzíaÒþ€-Ìžf&Γžvˆ9$õT>;«)C¶¨ƒmHÑ€‹öKP¯!ZS•×%Á3)óZT™%ÆÒÞ+C(iÑúHRÓèÌ4B=3ßH€sµ!xÁYíÿª±$zˆ¨³‹<Ÿ¿ÞTŽi”›R®Án2ÔûüUüó{Z-ªákÓ¹?3|q †Ö [¸Ào­ž»«Ûq¥•ý'Óo…Ebš|Ö¼‡¨b•©ÈDoψ'k–ÿ‰Ç sƒ÷pP�"V²:õÖ¨Ýêû°A0ÙóÌÙ9ƒ»WR4›€• m}æ°JS+â»n‚÷M!(s˜¶¸Ô—EWu—Ç"&¹¿QÙîÃë£Ik8IéPe&]ŽnŸg(ÇöÒRÃjrù{À·©ÝøC ש3.ú� ö—Ûéè¬ãtˆÕÃàÄs? ¬qf9Ú­P,¯õX;^=B‹6¢Z„²ëäL;¸x9ÔäõZé§4±‚*2"0…öD޶8¯‚$ç¶¢Y Çßi{ÜTÉõªú=ˆiDµ¨z §$×mUb7Õ©²Ø´Drq­‡zÊaV©¾h«rà)Ô]oY‡t´œ8ìÐ�–_ˆ�gŒ¼ î¹cÌõ¤ÓmŸÉz nS bˆ ô½x5Sèö£µÁ/µPQ�‡'”=‰>e½¶ãg®öXÒóÀBŒ[%N• öX1²ëTÕÌ ˆ ÇG;}°°÷`?›ƒçÙXT‘^1€Š©Ô"·ËÊ´ˆ£gÛ©˜b… Ì!¿ó3µ‰«s dt_#ª€£íÍŸ€rðœHê+KÇ»�TJö˜Ý7™Ž£E œ�öˆ:ƒÅH6˜÷+@³ ɽ¨P­�ÁØè—ÄŠär!#­†²ëT@»=_)ëÄwc�Ç‹ †'äÔ{ò>Idí,Æ©©Ú?ï m�ÛÁf¿Œæ,†!U�A˜•ʈ÷EˆÄí ó&ü³2ʧ4½ãÌ¥ªŒ÷jËT¯ŠjõE†ïB}<êä ]Å~œËDŸ÷ÿÉ™QÊ¡+œ–\ŸúÚ1tµZŽ¥kt¯¹T™>HÊ. ….e#`Ö[4ÆÐÙ¿Ïr³4Ô‡î'îƒÍÞeqÊaEû]FQW±ñÙ/µ…›{¹R¤"‰$ƒzrqP)W£öÒ oðàØEÅLXWô¥J” ::‹Äj%‹Ì£¹Èë„z�ÔÉû¼á~½(q™²è³³£–9X‘…fÙÓ%ü‘Ìta¥?`F!C¬pZŽÓ%ÆKÙ~™pð» ©°-³šÉ=Ñ¿t&ÈÉðâ¯'Оq�í]ÌÆXÞ˧"¬9;óh+‡®£íÛ^’ji�É<÷–Úå…,Ž“ƒÎjL%-ŒþÍÚûvCìoš¥.8ÔÖx$ò}1GϯIX[mpó»È3Mè‰aOœŽ|¢tÑê‰c ±ÂÊêÅ 1lj•ÖÚR^3Ñ÷:¢[Mzö_ùßùÛ³ÿ*ëö ÿÞUæá¤øl’O6/<01ŠR -J›]g*qõ˜hâµt— ©R'!Ó¨Û¶B$3µ)Èu/”ý¥!œ’0rS¶©²«kÓzbäæ·Ü�jÉîµ3ò¬Ž"æZ¤rÇ™¨7Ùé>pæäHãæÀ8’¥)¨Õ±âi�©„{H§Ád/0nkYÞð`GšÌ‘hŸÕEæóúS�y1®¤ŽX^VàQšƒ†r«uJ»€ê9™gõb  µ/˜­’M‡Îu»qÕpd9ëg™Qâ^�§ ù6LJ¹Ÿ‰Û96é¦;µ¡÷£¡¡æ‘58£Z‘ÒÈ€M[¬�oR¾·DAÙ¾„m¶‚ðÆ’®R^aH»Bb7e �lOÞEw3ù„8Çt(G%Q��å—ü+Wn§}†‰ìÂ;f@:)2]'’��.ìa¤7ÝB¦î•H5J.Åä@ŽÆ„¸W;ˆó%Ò |ñ�-ÜÎ5â•*ãät·ø¥ “ëvc\”>UÊI0ÝÄÖýÂSrL�}r:ÝŸöéç:õó1 UÙ�užë O]NJ†½cûK¥8î ©HçNÃ5ˆ.�ýr6šâ›{kR ©”†{ªÇ´�6®º Ô‘Ñ�÷†íò$v߬2"”íñxJE­Ü€é¬3FrʉBl0C©�gDPztI¸©’ï˜ ÛE>tì ág£ ŸëQ¹½¤\=Çy…A*¹Ô+O¢)ÁŒ°·‡Ð=NÙ7xì’�©Øˆä’h58«$¨«òF{󄸉JH¸guÏ;u^Îv�%úq,s§s%èæÒßò‡ ¼ª£¬X\¬ ±¨»)ͱš®Î›ÔÎ3òSúWUÖ‘uSH—¢eb>¤[“†ðºÞ¹Å2„<AK¶£Ëχ4�F‰W’ è$>;…#kñPg(6²X1ÉbûV9x,¤” °ìÀÈ⌠Iå:E›4R[Tm&ÓÖ•uÊSÊ!ÎÅ@YãPY¬V)[¾Î“„d*%µœ¿RÅ}ArhY¹�ª^Є êÚ„h´W/S*AKwÍ"‹d¿A¶"°AÌ/yuS!¨Ÿ23h'5‘½tÛA�§)2Œcc°ö¡2kFÍ�W+õ´Ácjˆ.ë$7ÁhEœsȦ‘eæ…§¾CÅ_66xÆ'pÂKÂ&«Æ HÏI|æhgäj@dÊ‚ X"ÿaÂ3A•0gÃÒñ’Ê9ƒ 5°T»<Š%‚apMšúº’–Jê4Ö³µØ&#…ÈQ¶y…÷&ù`~Ù<À$r/Û©©Ä£ŒàÜ&â‹ÔÙèŒÚÓ©Ú¹´Ve‡”®tgæTZZ§—æ )ðÃæÐy`·Ù‰�ƒÒ¢qå|(0Ì�ø^Âæ=T£–W½ZÊÁ�T¦Üv´ã f×$E‚ì0‘¢¥G"¹t ¦ó C·`3»ùìl7yVq§ÓmL¡Í1&»ïü)AÕ®°ÈãàуOy¶¹pwˆ¦JI1Ю˜AsÈ Ge>ÈŽÚòP†Î±uÉìãL›Ežî€ÅN9Š‘ÊéÄK}.5é­ÌXÀÆ-\3ªâlñ+ ÚzŸ¸³X-³ýr9šˆAÉ;{Q4à¹ÙáBÿL?Ep³ *Í^"}ÜýŒ~¶V‘¦À°¤X¼«‡N®bŠre¢£\{‡Ì·«è˃¤¯n;¥(&cÌÎ áÈÁ0-MÑãÙ+¹ÞTE×-é´ U®(q‘×t_«k¦C¤ñ�™uú®²-‘6Øo(ép“[Á\E—p‡lÔ —Í:e'püòږJì‚WµDšñ]ŠçNa?†òj"GZ@ÄÓìú³ –$éüÈSÕRô„c ‰„ňN="„ô_8ê%5ÐTîL*ûž�’ûÕŒ¨)Û©.îù<˃sæm¶q=µ^Ž$³sˆÙË„µô�êJV“ã–sp‚"9‘¨5Õá#dâ1 ÂÙƒ}MÔ2³!õ" k²,/³òs1ž0ç[u2}gÀöÁGe ý¦ÊÙi¦�m¢ çÞµ2àÐLö1Ý“ˆå>"ã_¥Þly׬s|êCQNÏ(È®%ŠÈGàWq eEÂ-êŲ ”‘E®�;Á<‰påæxªbºŠeežßÒÎ`1vìBw2NuX"Ç!°48Õ¥lš˜”qú:öà}ÙW©7š•»½:]žµµ~²êÌYú% Ñ)ônlæÁÆ~¡L|ˆx°®ø.—ÐàRu/¾ü�AôÈ5§‘yé�#ÚLS‹c]Ã3ÎÒaº)!ó,‡Ì��ž„ÓH‚‡ÕÂAΠŸ<^d—''< Ôšæ¦è(ÂR"n}*=´¤I‘˜©ÝQa\C'| x‡ÞæLd¦b:ÖRpƤEqõZr/-ø-�/¸ãåúíˆßàw§áË×oÔªA£ó ïUéa.©èÚù¤Þ#0uøš«Oª†�9®Þ\O:†D”C Ê�IJKÒÈÅB™ÌÉ3³–çì͹¨W�SW¼I�fÿðO«%O qVÛ ã­To¥$™â %ª%£HÜÇ’|zjGeu�eçÞ,À>Ìö¡2/•v£±‘S�ž¹ÍZükˆ."3>dORHÅù£èL`g«ªV*òÖ”×¹J�yu+¾«C5JlQ~‘Ä•øh3oí>¡L±³óÆsq…z‘æÃó8a¸ùò¶ûQ´ �;è�רÛΪÙõÐÅR°Ì¹œŽgéeqôúSݶðYØp¸ §ofXä[žMÉòÍJ…/3•÷�b×`×{Œ/.`9V@߈£²Ë¼?ê1-{>:8ÿlQn§! þxï¦fÞû/¡RTŽMºsQ›žÐ¬jt`R<åЇm" ègûEÌŠqÜÄCI82óÏ:1ýXî–Ú —¿ –RõiÍ?ƒ÷Î}†l¿ög´ºwáìPE"Ø-ßÁŸäOP+U®j™'Käð2û^»P‚dCuÒŸv´TÃu`W�+Cœˆø£8£�?KÉÕy×]iJ&÷¬Ñ–‡ë�h\x Yĺƒ µI­F:é¡y&œu ôªOäõÆÀ„@ ×3…ƒª²õåª}([Wd¡ƒgnËéUf>!@¢çö„ÛÐk¥% 6MR8HŽ¥\X"å{2˜6pšÐt—ý¹mûäõ CÇq×oR춬:›ª"É¢Êä–c/oº¸è<¸¸ÿà²8)| 4{DI~l°)»~œ/³Þ §j*Çnò꺖~æÒW £jÚæóPs�òÃEñ%t—ëÎì äóV3q…/P##·1ZlzVåÉy"ËE| MPT¼T)©¦!©¸bâ=Æ*íä\\Å’PmI ƒI}Rá¥æ{õ)V¹mÏœoì9V*–Ö¡3}ßFC�ã)5uH*Û„ûE¨ˆ­¬ˆÅHòIZÚï`h^©0YÛc…�+ª†eÑÀÙ©FuUIÛz ÏÚ“¸^äAkÂ%ÃÌPiÒS‚J:,O1åV�õ+f'+igÑo£â�íø&_‘”§-?áÜõ®£c;íàu½9u÷:¦ð§çÖ’²ñžþóO”ì†Ý>µ·E¼0oŸ ¿+A%uZb5èóǰ3 †Bš¨PHʵp£S4º³Ùlaî– P9º9œ²¨Dt‚ Ïùq†â# özF>!�éh;ˆzö¤×þ‚+ÞdÊgŠ“È›·È¹ó™*¡_$ûÏžg$Éã /.1,‡‹wÏÐj»a Ýê·ªY®ÿeT««+T€�ubû§üÀöñ¼ãObfmˆ¾?8ÑÌÉ wdMB1M8\BqÃáš ¼Ý²L!…«úëÃrEzÝÞ¬@t'#…Ô:"©Ãv œè»_)uÒïUéeB"ËnK—Iªªz’(AR'ôBl2#è¡0°+Šñ{SäÕF°©5Vf0vÅ#(ªI63š¹…Š5û�^”B‰ËÚôC–6ßÔª‹T’øˆ!®jœ—3ÄÓãÃ>«gÜaÁQoÓ�Áwo]þ}¸í”K”†È†EÒC}Å›UyÖm }„à2…Á}I|P¾°IZq†Á18ÕV`²-ÄñÆR {¬¡Rêˆô¯â9˜èÎ!fyû䠛ϊIŠ<*é €¥ïˆSaÝÒ$óœrŸQ#A²l¬tÄ^È1 õÔ–އ0çm¸mêgÕ-ç(ÌÎh‘œÃ; „°êô}c‘´25˜³<, iGŽP;‚qöÐ+”�o,(gQ|mÓú/ÌÙÆúè#ÊWaSl뉼Dµ€Z¶G±p!Õ„s©„»ÇÏíé¶«r{]•Y:*ûødÚ®¯/,ðg×åF$hˆ"C’4à‰%ºÆŽ™í¹ÛÚy¼bg„)d<Ì$OOrþšå'k…(cÕVO§ÚH.á&/Ê4'Xëo|]@ƒ'á¥rêª`sEHlÑY!¥;:7Ÿík™–Èðêh"‡Gà-u¶} u†˜eâz4y“…Ö'IaËÑ-¼ª«…6èSF–sJtÕµÍüê̶þε Ž:—R1‰‰(�ç]Ñ­v»Ú+eŽô0&j« dŒ‹:iEs0£Áb³›B®NOj¤ÔÎ*%œz7A\ Ÿ°ÒƲº8ØÄúlÙá<9•¬kPÂá RfÁi G0Œ:'Œ‹² J�.Y-z-ñ>²Ô�»FÅ…3¡ ï ¼|tñ(Ôà+©ÿeùU†C‰{¸&ÔQ„á?ä"ª ˜E “9Cù£.¿!cÊ ùº–$±wF¹Sð±F9�I¿,¢pÊã,"kŒ5¤Cèôê`,” ÆM廤JWH•1Ž·#¸ý*¹K‚VmuÌÚˆ‘¡·ÕKœ}gIØ’³5D¹Fj$;™I#-:@°«QÓÎß!sSùÂ3úY\ÕÀb�ù üš¹±ÈÏäC“ÀÇ,B¾ê9yª¬¬†ôÈëµñ86.¹4êR‘ ¾¤v©…}cNÎlÖ OJ�ôö˜²q¾|”O2K5è�ƒ!wË ÖjS' 2Õ@©'M‡z Ò©Š�F&©EÕ[Ò0ÓÑ’…éTЪAmšQàng„ܾI²PÑk&!à¨IÛ;é ¦ ²:—öu‰P©3kÀ„è` ª5ó_dU%[]¡HX9.¼,)gqµ¿,["�+ÃàKIq4Lj°ßž�yµˆž|hŸ�HkFÜšÑh˜»_JU%úe]CW½àǹO*)ìJ%/‹ß„SïžÕÞÖÖ c¨¦Nàa « ¡þŒ™)¹èfËt2±èÿˆ¡Teâ’0IîI-•g>mó«è«xCn«05KÑ­^ÜÃ$Ãî•EjŠHGý¡ù ¼+Ï%à…RŠø ¡ô²+zŽ¥c’†‘DÇâñKÞÜÀ0>ñt×G»kU�#'>ç«%Ñùßy™g?ë©Ñ�Š!ÛN–΢(³ðêÈïÖó?Sî'Ÿ$¸4îÈì]ñ~Ùèñ°ãißî­7¯>ýòõ^¾ú×·Þûó[¯?ûô‹o½÷Éñî±ÀqäQjKµänÁÔ»ÇÑ�z´‘�Z÷Ûºn<.ðŧoì{W/•ÜNù×—·^þøìÍk»ìg/ÿøå›WŸ¿ðÿxó§¯öGßúðÅË}ñæÕŸ¾÷ò‹/öç>ùå[—·þ¿ôO~òç·>}õ™ýðÉáŠïýâåúgÿðW¯^~õâÕ^ö³—¿·?ÿÝyëë¯/çW÷û^¶y¼´KwúÒ·½Ìž_f/«ö¢œ�XæŸÜ\ñ£?~ñæóÿo—ýùÝÓµéGwßµ“äbyöUù¶×ùéóë¸ÿöm¿ûÜ}—HÉ·ýú?Ü}Ýüñ‹©{jüÛ_çûw³“—ReÅ:Âo7êRLÚÛu œ¢_>¿¶Á ÛNÀr©� ÕGϯã¬ÌoûÝ�ïÞ�Ôh¡-Ĺ(õ«A=9¦vIœgn¬±£J+Ô¨Iij¢ Æ?ëáaûÏϹ?°"÷Qt÷åÆùWw;µ?2ÎÞ�3;±uŒPDZ應oªÅöÇGè×ÏofU½Æó½ìãrßz=;мŒG6¯î^`dz®Õ…U°x—M°²K <úÄÿôüêûŒÙÑÃ|ÀŒþý�Í22¿Õ`ìîâ‘Ñŵî¿íÕî¶ývn¬ÁÃö„¼Ý·¿Î�ï,©•Ù.ïmwqñvoôöȃýàþ‚ævy KŸSôþÛ^ìÎH&?vŒé¨ÕÅÅT98þþÃû ö¾üû¥7æÆ<¶žþþãû1zˆ¥k¼u›')¾ýƒýÝÝÅò#öÓû/›H«÷a¿¸ìŒW,‘T°Dÿ�wõþª†=òdÿt‘Gfú£û/;AÓØKFÕaß·½ØÏïg^´ õ¹U¡�q½ÌÁÈ vG'ypmÝÈ.^¿l~´G.™_Þ;L˜÷¿ÿûû/7ïÏüí/ð³û x�ÆøÕý¬ ‰Q<YW÷.­ «{E´KË\RG¾ô[_ð{÷Îm’ºjùLºIÝëÔNs¨kóTLSþ«EÕ˜¨¦Då(Ñ”ÿòû3pò_Ë,{8u‘TíD2Sy´Ú“+àU!¹A"�‰+¤"A¬C=ÚUæ+QDQöx=i�§‡ô÷îÌ–…uÙÛË,kÙ_£í>°ç¿wo ³zx©!I4 ÃÃ;Æ"N¤DTÄ�Eí?œ’Õlð–&1¦î…ŸÞ?´Êâ\9ËûÇšÒþþŸÉlåÖúÒ±ÖrÎŽ Ø–T·L²ñ` qñeÓM´´©•3_<ño¼OþíŒga‡iãY7kÑñøóß/IÊöHr[õI·vµgßûÑý»ë7ZsÓõ5©Þ‹_çþ€ ÿÞÝ�`Š¥&Ƙ‡'øLWÖ4aMvõ’½HÆä{ßÿz‰Ý#KñÎs¹f'KÙå—)T+Û©P˜àïÝ9/hk÷m¿ü“û/;^kéh£8™Z½e‹ŒýˆùüùýU8~r?#ó‘éüÍÝ——)ïé4ÕåõÈjûåýþSÏ)³¨î…_ß?Ô#Óû_î¿üÀDüä·Ç#�À7Ïk6©Áã�Øõ{wÏPLTîðdÖþ÷‘)ù§û qÕáC¯é³D›Õ\Úÿ,Á|\L º¦søÀóþÃ] U¬ŽÁêR­¿gzÀQý‡ß_èKñw»ÀÄŸßè€ñçzØ0ÿÃOîŸÊøJ�ŒÏÝæ.–Õ0"™%ç,ÉlâHžd0¡�==™òžO޼'¿ÿ½»·0Ët‘MÍ’'Fí­¬ÎïߙႬµ©ùšXÔ;þû÷¦§À*D° !¬B «@›èb�ôŠ‘·ŒóÓ’{L­ù*ͬV–÷0¤óý»Ítõ]dxݤ%­îÇþÛsÇ� Ñ]ÔPŒÒ­§Ú~ÒþÀaóƒÝ¿3übõ�½ë~|-Å„¯õ“o\ ~§ËË—aDnFÅmÞ½Àé{ºÌÀšl¯wJp™H¯6�ºŒ¾/>Ô=ð;Ø?¸7óðƒ�îO!kF7MŠ×Ø�¸KþÝýÈNï¹³&g=<ûÞ…ÒN3C²ìÆÛ1¦îž·õÀ)ðáýYôˆçðá½E2ñQï…àyýGŽÞx)£X} Ä–K·.gößÌê‡w1B5=íã‘7¼Ï ìå_'­>òwÖ¾Œ¿�í'†Ü5=¾þóýU™«,e­LºWçV¬KuùVc*¤‡S2ÞíÌšp?ü‡o<)3%Œ‡+cášæ?¼ c];°wÁfVNleSÆ2îÑ#®špk?¼óÈ+’èÆB4&ßÚ‡ÿxo™¬ê <°·~ø“ûgy`íþð~xS;“ÅöG{”Æô‡wòo˜R�æÇ%àêŒv]+‡0ý�úpÒ䇿¼÷ ¬Ø¤>`x?÷V˜Y­ç¨—#Y¯bã\ZÁÆŽí}¿˜¬¶0öùYMNŠIÁJߨ2-X›ÊÙ¹g:¬‹!Î]ÏZíâ…+UÉë1‰V 8VU!°þ±Ò§¨+ý‚JбÒ-¨C¹O^Oµƒ×#Y BV‚�&•Y§iÖð:SíÒ•DåuxRV–ÙW‘•@d%Y6W�uY)؇­ê�îlU;;~tS5¢œWÃÄšk'UëƒnôR'^º°«Õ‚.•`Úš.Qrìì?¬¯·Õ´¸Ä¿©Ýš#nJ¸éaçêGw{¯¥lÈ7ÂôöH ú£ŸßÙ‚êG0›}ÃÍ7Æ–ÕIŸÜh9û“}Üãä½…³w}û{Ü›�æª%&biªÏûÆB7ýÓGŽ‘ÝÓí‘cäGwS3Añ}‚4o´n8kÐlâƒÛ,7+œË?º‡€%3“×ͮң÷m­N¯�¯¾;‹Ú }üÑý—X|?þþý—Mׯ‰¬{j�£f#êšçù�Ñûñ}r®‰ø!懨íáÑúñ/î—¢+$xO²|‡¿®YýE3±Ê=þ³uÝz<½ÃJ¬UUëÖ¹Ó¤}öªôš“G`÷ŸÜomK ´nJ'À>plÿä. 16`ëVh´MÃ# ýOî‘6°#?ùÑý—8B~rï!5žÃÍtŸÇþÐO~yÿ0ÎRÜ—2ë–û7O€á;ÆÚÐ<2²w±Psa«.™VbãÔÔ.÷Óû\^s¡š=T�Dÿ?½­-wÔ¬íœEÿõà§ßð=­i�»MkXå%r¦aºwÌzä²wQ@[˜�Ÿ~ïþõ\×é�8ø§÷Kú‘LÇOrÿåG¦æî4}ý=t6„{[Ïšõ€õúé¯îgÇKÌŠ¾ýe~}ÿFžƒ5*ô2å2×üdÿæ~‚Œ0ýȲûèî0ꦮþóÑîGÆj}]¿Ø¥Úþß 棿»;y£ïÝ_aîG°2/ÓC¶"[Ó�ä ï<ûþˆûч÷_~àXúè7÷_vU(ƒïLÄRAV©½ß0=°l>º£÷G²,ýð~c¹BŽ?šö}>ôíE÷í÷GHaýäþ¡\ÁÅ»½ÌÜvZ3bc)=âo}ôÓû ?òåû�ogDÏ{À�>q¸þ� °=2„wni÷ú ת°Bï´q\¨qûm¯ùMoȺ\X+¸~dÉþìþéY²¿¸ÿ²u>ÞkÔêôLžc¿Xw-ŠýdV nÚÕ� ,Ýù‘ÝZ+Wk›ã²wvu?+½ºâ‘‰¾;û#ÍGßù‘™»;®>&ÆyñA²¶{Í~±×þ#¸�îÁãn ‚ Ð^´{¤mw¥9»xCýèιèÝ»Mš”õ~h(ñ~ûþٽ鄿ò³{«oš ®­wxJÁÊù\; …¹�<Ö÷ï¯ü€ßð³{†{wï«&[Þ•â‘ËÝŸ&¦ò“×^Þû¥<°<~ö£ûK=`«vH^ýH½GᔽcweÛWÕÏîÑ…N¤°)ìÃ5ö \ýÁr'LØÉUì�sæöó{[ï§Ï#€ÃÏîÍß|d ß§×;!ÎnçƒïrOMèÓ4+÷˜-(l]´ÿ~xÛÿü>çÙÐÝ.æ’>æÆâðÀÀýâ'÷Ç×}º&Aª?âùÿâÞŽ<’×üÅ7Ø�.ŸU\¶s¯¶åigv<òH÷EO� s_*I�]d»²]qàA¶ë Ûu�í:Èvd»ŽãaÚÍ/îü¹ñHÁÃ/î™Azí`Nq0§x­;*&†5Ć_ÜY¿áUåË}b+È1Ut¯äue\k�ûÈ›ÜY�ñˆOü‹_ÞÙªƒl/Xi�«??’ºûÉ/î/çôˆG–ñ½ÛšÜ=¢Né·¿Ì?ÞÛyc" ;H©N׆N~�¯»�ï_ò�Óë?¸ÿ²õê~à$ýÏwS?÷îs{áÀ·.ÜþÀ2úå=¸;(®:ØÕdĸ™Šˆ/Z¶u”eÓÁôÁ ç`íÆ`íÆ`eá`iá`má`qá 9k�œ53ÂÌW_¡Ù»¼ž1É{záüþ½5¤ñêdk42š 5Xµ›ýÏÐ@+”v÷Ñk”�^د¼ÞûZ÷KÞ�žç`úq0ý8˜~L?¦Ó�£?Ì9øå}µ^÷V�o�7ñ·~ygÞ®\˜¶Æ~[?pó¿7·íÆ —y±qtOΔHÖ6VYèÝ3ÑÆþ��ññýºöFUÕgdϱƒ¸&äÚ;Ó5ô0Lß³Ä� g˜ûðèÕ^ÂJ[®ã�ðã{¨Îc|ãÜ\�ð2\QëØex7Üì×Çw§ùx$­÷ñýqó õá½u›� ó}]È S;X€3˜tÇãâÇ÷еaÍõíŽGõžFSw ?¦‹½>p^}|d>”æûøÎ!ËU-ÿ˜öNz¡ýfæË’TW#„^‡mÍGðó�~ÿ\�xÄ÷^¶FÞyÇ ±a"$>†aÞáÀT½?k}ä̺_«�8ÌwãRåÅÆëCpïF-W”òF=æÒYòáŸîãû Â::™¬âÕ“Ófaâá||ÏÉtÛ§�}ÝÙ¬ýaGèã{äΰ²ùˆÿñ?Ý_Áº¸>´�ïáùH àãû4Qs±éê=Æì'+>?êþß#ëêïŸè�…ô«û'òãɥجŒêêè‹ÃC푞_ÝË&ÊÎÖE1�o©¿a~m+w» +j™l®w�°>~õ Õ¦9s™�`q¿úñýŠ2Õ,»ˆÉJoo¦G^öžÞ4½OÅ,öÖ>ýa¸æWwGÏ|$µò«Ÿßù‘åõ�¤Àr1ȽēK#åËL¸™¿ú»ÑxÙè£ç�VÌt­ùÃFŠ6Ç�½k–?ÎéúÕ�¥��¤~uïcz3pÓ6ì¶<<æ5…V ]­LÑ›[ß�ø¿º·lÓäE5ÈÓ}Ãökä×Þ¿¹w“uaÞ=î‚[ƒ+O ¸† K»zOÔåÝ“]óÏ•3X2¿þ»ûÛ†é:bø³¿¾�Ç'ko'å~'žgQQÆ0w¬ùƒKXqý0ìœ ;'ÃÎ)†�“açdØ9vN†�“açdØ9v^Ó25so±±öWèüú>,hÞPÐ[nØ¿¶)š‚oH¢<`s?�dx~sUwå¼8ÊÔ]¡fýæû÷òÀâÿÍýâo€˜¿¹„1   —–ó2¯,Þoî-Þ$ky¶‡#™ßüúþ¹x�ÿòƒû/?pÞþ—ûº´IpcZìá|¼^ç¿éºé7ûj},ArmßE’­�¸ìÿtÏ}êvw:´ÿWí²fÈ�’ç–ÖöÛ#-ÿt»L<¯÷ã4`è‘lù?Ùqóôõ×_ÿ‡w.Ÿ}ðöŸ>x}ùüƒ×ïR£îݨ»¼õzÿûå?¿õÁvá—øÎçó7oþÁŸôÑO>zçò—Äë>øàƒÏßµïü§?Ûÿï­¼øôÍ_½¸Õ·û~õú½Ïß=•îÞý×O¿zûüÒ?óö‹wþüêÅþЗßyóöŸ./Þùú�¯ß³Ÿ>ç�wõõ÷ÿ¯O_}gÿj¿Ñ;ïÿoÿñ?þ?¾óúå_}öâ£O¿új?û¯ùÓ^¿úì·û¿~ûÙËýêå—/¾|óú·¿ÿôõ¿üî姯~ÿÛ}Ã׿}óò«—ÿõõË/»_šgí¿ÿÝÑ>k½þîÝÿêOõÿPKÒV1]™e2i"Ÿ•°imunify-security/assets/ui-app/assets/static/other-root/src_app_components_text-input_text-input_component_ts-src_app_components_text-input_text-inpu-b63fbf.8ee8babab6c636a9.jsUT ëÆ«jëÆ«jux è‡Ä=kwÛ6²EaO³äˆ+J²lËWíIgoîÝ6Ý$Û/Š�EBŠä’”ëè¿ßen3ÄÜ h¶ 'Ñ0‡ŒjÓUÍ›–E†¯3ëQ�–Í*°!ðí2 ‘}|Qùìf0þ‹mFᣱŒƒdöÆÍÞ#Ïmæ[¦á&ÌíGwaZý´Ûå=ß–{ÞL®è3M}š$Ø”3|íÀ§˜&Ù’²$ J4†«KQ ¤Š6³9ˆ§A €ù5¡KvÏÆõ51þj�üË§í²ø¥PÔCu Küy^ÿÚàuy‰¨w-�¨Íz뙉"ùènšö²tˆ†~ÚcöÏnöf›E(óH?$lÅÂÇÔIhJ“[ú æ}%WÈ2ÓzLh¶MÂ^¶f©�êß^¿æeÈ_þžî m¨¦$kÔùÕúÁöð»ý3 oÝ€ù¼åeä�~ñl[Bóšé:Úþ?�ï‚ÈÍDQ­Æqù,uÁÁd(ð§ÇѼYÿ ¢æ®\vÓ" ¤›–±dëeœáédÓ ·A á‹�™½�úøAé.\}߇ {Ì„œP?³©¸„Ú±vi„zƒ˜)K×›©ÉjÒœ!½3é·oÌ�zoWç£ÒK¥ŸaÞ=f1�f¬ÅާÓ9ªÆ~¡¸qáäøniÂh:Í)Š»UajÕpއ$Â阜֔b :Ah>D‡@»60©�pÎfUuóo„ýH—01×P¥¦­@æ|…ϲ ;e„“;)aIšÕÈxNÞ©—ÄY¨õnGn½ãÐ¥akÕõ98 ÷‘ï/ÊOiI ’Nâ:J³ß\�=gÀŸb¡ÏÂUZ¡¸‰Ü€¥Ðsšp0ï«AŠJù<¡¶R;Þ¡®×QG<}Ï ûk÷–*CGí&mnqØ„eRb©|åBÅõ—¨ÞðcUå (¥ÄB=[;§c:},´ÅÔ(ž RÒFS£ôjìÈ’ºÀ ˜¾óJç߇à²ì-*†œ{' qæ Ó€^O® –ħ^ƒuBnqІ„+NÔá�~)|,´ÄDÿÚ�…ñ®”n˜ï´Zm³Ô–2ÈûÂÓ ó11ÂÕûe70ð"«BH•W.L…?Q)åÃÝG=ä2.�d>"…£‘ K3 ®‚›Ñ&é®jГ„ÑÙÜ´¹’šSê³[ƒ ˆc™Cù2ìöP÷ù§{šËVF–y"Ç–9‘�'µêªÿPõ”Äd?éH“ÉÓ(�Og²¹º¡8ª/çÍÙŸÙÛÝÐÞ¦G¶u¾§­aÃøÛÖH¶å º†Ã“-qàWvò÷uUªÔªìºþ­z|˜›z˜{þ|–�ÂÖÖ€�ETèÄׯ•VõéÓmdè¡ 3Oí_œxö›k’f–ýe~®Ðõ¿¿üðó¯ß_÷¿„=tA�CÓ ¹öX‘÷õ¿ÜBÓÌsƒ>8Í«pÚG“—/¢û~Êþ6l ωËl(âŸî˜Ÿ­§½ÑÉ Æ‚Ý—ðKhk:¿™p^=– {ÌÑĵœôé-®³§½:WQˆKúIetq”rE?…E Œ=»¥¥Ž.z/;‰O\Ÿm¡•q|_ôoíúÑPÔsâ{þgÐûn9†ßˆÃxÛ$3ÔC•\£LêÿIÏ®èÝÖ^ •@F¯@otþä°3Œõ>L{i+Nèw>¥õU½ž¶$=ñ*ׂ¢¥�›ÀªnÚ;“(³Ä ½(ˆ—º¼`^AÿÃ`å0°‡'ÊÏð?øèX¢ÁRs(õ}ݳŔ»�Ý9ŽERº@™œ”iﻓ þz¯øùIæ†ÙEyÐÝðb›‰A_kQX©Æ²* ×”­Ö™V‚>í�êÜXFÉÄ)‚e5Ï>]ÉîÚA–Ô„º×;‚ ˆáŸ�¤ÃÞOÆÁÔfŽ•°“,xfçÃó9ÔEÆaÚCÆÁ èRgÐAŠCÔT K°x +1�Ù>"nÐfRCgY´i©�°G-It¢5 8e{Hh‚©Ð <ånÕ¸JP?;­¿‚“û¾ÇÙŒÝAõñþQWî�Ðh4Ü„ºŠ£…9UÐ{ê ß—´}aråu®˜íz_�7ÛП ÝCSRI6iCnôkX8äÒݰ ¦ñ|‹Þ'7Y{)üÕ‡Õ"[^”´ò�~ßu‘e(?ºñ�åê#QøTRËÛ0¥YÍ0I— l­ ?¡E!9œ­:ñx—:0uhüùg²GqÙõV¥y<žaáséé`!²Nññxí!ì>õåäh}RG¡;x}îÖŒžBÛ”oóM�¨&}|±9!TWE5—6.:,Oë²£îÚ·¸ƒœByVŒ(š&õV·.BùvÌ>;ÉlòÍ+V±Õ�?¶q ¾“‹9«Šu^ËzIã•Ròç‹sêZMI>Xþõ& Ë qØ‚‚�Zh> ÷·1‡V9z1Ô>|¸;w¸óRÂôrkTè Ál¯ÐÉ ]xdÕ(ŒŽ}sºSý¿Ì<Óæ‡ò©ºæYÿ¼:‡ùÒ$uÚ› ÊS2÷»Šá[ò�}Ü7ø Ø' 8FpŽF×)Vº(Ç[œ�5…ûRÄï“ã)¨ìç\Úíyf‹{ÖȇS³�\ßyéë[/‚l¾úYß�`�¤ïGp„œ‹ì)_zcø#þB„,ã‡¶ß áÝ �ò}zvvv>9¦·‡®ðŸ‰©¼‚ðà1k¢/aqNѾo!Ì…p NÊ{)åcÞN‚+§}­Íé;ÃÊÿ ØŠ­XTÞÒà�£¸Z”RÄ£”®Ÿ=ÖOÀÛ>äy�<Ù@Òÿr½³v;ö³³LkGÆ“sgP¼á!ƒ�2(cÿ¢"NCOÎÏG2dPÄ òð® Þõø28›ÈŸ¹M8¿¬~Žü-t«ø›]SÐ o®ÿ>ü�ŸÅc}±ÇŸNç̾Œ6›(¨E¨ �3‘‰]/làïè|4ÖùK9]�¿2Ì’‡dŽœ� É r¦º¦–ëx?Át]¹ÞúŸ[º¥³ùµªŠÂ˵®è»p–AõÝî.aýÍ ¶C:Þ$‰û`³”ÿ ß¾™Ô•AZ·–Î2¢ã¿\Sï+¬„MÄ—Ù¾R¦U°Yè[Ÿ¦ff‡î†ZÀ˜„®0¸$ù éáÁdU5¨ÏÑ0û9Xµq:ûÃHêà0ö4{+Ïÿ>q3Þ‰£ÚÚ…«7KÀ+£5ô´§3� öÔN·‹ÔKØ‚šæ£¬9¥;]�ëôǹmÛZ ˆ®§z+K¡¼+¯f³¼©2gM­†µ«u£A†Ds&±y”¦*î®(QÕL)†ŽÔq)$T@YiÛ— ØóY2cMóý-K0àVSå€=nUçp]¼��Û«´Ùµ§øNÆ¥�0¶'$Œí +ÆdƃÁŠ0¥JÝ_“è–�­Kóð$sþ‹Âibÿò÷›ßÞüã_W7o./¯>}úð‘€�}u³ ‹æ€0·;7ñ�>‹«&”Í6ÈØôÕ`wm5›“áମ /¹2LÉÇšÑÑ•"ׄÒ蜎Æ*öÜ�=.PU»ÓÇßÁÖýô05H£·–ÁËßæLvzý·Y<\¡),྄:Ü—€v¼í`Öõ–Ù²¡™!0ºZ"Å2þe;3øöíq'ÔvÚ¡¶y ’ˆ`»§JÑ&Y‘Vªc9‘³@‘ ChÓw|òÏ^95]ŸØ0ŽaƲ‡C~ Ý�óìzš›E êÉ_exˆ© 'Ó•ÜC6¸–AÖ ›Mw®÷àÚ¼·ževðÝ(·¼f.OAù�Ÿ»¢™Pt¢ÍòÁ‚å`ŒÊ*%lÓGiÒ‚sÖEU�Ò§('³ª…”þŽLg2FL‡ØÈˆØ_ÀÈÈ0ÄC«Èü�}©U §¤Š`Âæ€Ô²Dì´ðN5Á ù`%çSC=OÕ“Ñ£'Ï&'“ºžüÀõãb¯~ŸOÆ'Ü)·C3Y<°2 x”2‡ÇqC‹ø¼Ì³HŒpó!”m‹Ì  æ �9àû/÷œ‹¬±qÖY �¬ôñýl.êúÂ5-Jm¦צ½ûðÎõãb¿[®G×QࣚÝf,Hmä,fà7%úWCe"Ü¿uÒÙp,Þ à�7»¥±La brÏ8;ñ gƬ¡®�x¥J¦Ùo˜ÛárB+:\M-qéžýVmósr+–KÓ屆”¼s²g2ôÅ›QpšHøïVvÖû¯áøG¡‡³,˜±=„‹ZÓ¢Bzì¡u¬ RÚËñÝFÌï ¨¸»l£%Í-ÝSÉÏG®À§ 9H¼ž¬ÂÅ‹/úh`ËH`¤˜ÐvëRö&¦<¼�eúf‘�/ó?RjÎcûï6.¶W`D^á´Ô¡6` keî½Y0lÖʲu±žÇÕß-p˜#­—%–ó~äRf»¾Ÿ~1JRà¬)&æ\4vã\yšlKªi4T{“j¸�^ð M˾ԌªÖs3î1Ô¹ã;(z!pÕ¤˜ç{쬜½òB%¹z^ˆ²ˆšÆœºúü³‚¤†êýÛ7Ÿ?|üt´1UÉc‘LáœÙxEà„aƒkÐ{4ü¡Fw‰ËœôZúyæÁˆ”˜„yœµð$=U"fwŠÔþâÆ1׃®‰!7#e"ƒt–EV© Û…²l_¶ëŒZÏs,ÓÉIw0þ‰>—¦uÀo©0¡¹ Z prª-Æ,F‰‚ŽòÝV?ß4'tsäDd¦òáY6˜u1¥BÛ`òEô¡jé27†È ý°%޶ôÿô�þ«ž‰¾D1Ï~Àì‘ ¼Ì%>okͼ»1Eã jœºL*rºE¤šÇ�?•NQ-² œzcr™ûôq$Ó9ÊZ �>\Ö8\ŒÏ ÕýR«µ‘g!Õ Ÿ5ÐRFº®&:(àõ ÔÇ¡…¶~J`˜Ž`€Ô�bªtÐÙ Ítæ}Û#åQÃ��3z�}ÇT&P+µUŠMƒ¼Bí?²ƒÂËÿƒ{8"ÎiCר¶ìb-=(²ßÒ¥ vš/‘ÞxMÓ(!èUÉíÜzߦ¤ð³¶¸MúT3Ïy$û-KÈ Eî$Yãó®KÈÊ~{^${�T$š8Ìk:äµËv¡_Xpu˜XOÊ�éS”~¹*;;U'–Om…ƒl|OC‡E4¯NFGãk‡ÇL 0ôˆ@úëi5·e4îÈòðW /ޤ]ü•bµ•H¥"äº-?â%º¬e¨nª–;23^°e‘¸PiúÏé´Ê–ô0BÿüÉ]ÏÛÏ)x®€C£a”á_ÞÜÔE‘"ÏèOZ^ðÒHÁïaƲ6„ÚhA å<µV=,\²ûJ$úày;vÞ xÕÃQ±c¶E²qƒzˆ¢V^N.y¶Zl'®òÞç&™Ku9*h4ÄߟE¸Š«•šJ*TGD—�þ<^(*:xTý„æ¥0«5æ•ÿÿÄ®¸IÝåªñk9§µ,Ë£«Æyx•¼§Ø]h ßi1£¹‘ô<¯l1Äë¼%f•Œµ3r`9ð»=�é Ò»†Žè{Åpã#Ì@gžÐ¡$¶°ç‘(ÉD�Ú™?±¹l>Uæg_ éÂÏ áMãYò%?KÞÁ²b|Öp¹Ûÿv ��N&cIÕÇ"RK†rñc¡ >¥ê'¿ÀÌ;j[ V§.è'bgÉhØK•+û!^ø¥,Ý­â65¿{·�§y½Ó¼æ Ã#ö*—µU`Ë—µ ­êNq鎜-ªÏMù¹yþòïǽ ’F&!Æà3ÔK8í6»¸ýxV2䲸µÅX­÷ൌ\^;½;I¯ãÁnÚCÊ/à’˜8d€û³ÚÅ2Ä™KsJ3Y]Z6Ýc.;TbµÃWš€ÇL±Q�G•¹€‘û *™bŸz¯–z¯Z ZÑìr› þ£w|øWVÝñÕÛ¸jr‡�ùQBeÙ¼ý‚% QU½¹A¥�J¹kº9d ªdX›n£î9º!¨�°R^Lð8’8ã¶zéòêÄDDíî™Í;´.)zîLlSät¿"×§•~K™”B–úí[­èMpwìffÓÝ>š>ÀË}šàW·Nú¤Xk˜ÕePuÊ*¼vÉ‹ÒrRÌ›úÑ…="K2Ö¡�VÛò£Þ¡”Û·r öó+:ï.¹á}æHJTbøòë]Wùõ®‘ïýŒ�º.®qÍËÓí¢íÓ"òŠ]>X©ørMîù°E×üØn­qj¯×µ¼¶+HÅpøÌ ¢¿õP†&Z[Eqäü zï BFÎN80JØÕ¬È£-gKõ+N­™!1UBqói.å"�£\†ª8/Y3Ÿ¾Ì[VìI·A†·¨Jå]á�ÔéµL„#z~«ÚnŽZ|f0ˆ'9‚(±*ÞA“Ž©¡½¤�ø�?¤2²y­·¹Žnûœ(ΡQr|1HU"¦FµÄ …pL�âY– dòƒò\Nd9_rMV¦†öbìšî¥¼—¡çµk)ù!®M§ðÈ þš_©n¾Ë C¨,̾RÉò–i…Q¬±T»ò± GXWh_4µT«|P“‚føBøÂë¤�ˆ;9AOa,”¢¬±·‡ßÎ�¿ã„mÜä�›h.„Þ‰¼!1Èò§ˆQؼ-žÿõæÌbZ �Ä Ë kÞˆò<« }Bçœ*›x¿^„|§Î˜QC/´»LIáÕ2r½ð9ä莈¾~R•+ËŸ#£rªw�®ö-vËq;âÞÉnªî|TPŽŠ›L»ðŒª]•Ùî|�A[âÔ»£âG&ùu¨�TŸ6t«»�æ3²Iæ·­î�ižÐýì\ wøyuîÔ1½¢ºÅo:gÏÍ,oŽhŸQëRåëE±¸+\ yo8Ìù>ñ¯òL BÊÙBÒò‘¼Hºwã¸ØD×Tr^&^û ÐBb§µ_í£ã€¹¼4‘{ÜãAí.‹‹Ê™µ:½ì¤¢W%#Àà¾H*!½#+',ŽZ =Ð. ;¿Ý �†äÊ› øNåÌ}œ'H?‰Ô£{™ò-ŠìÅ0L§ ºŒzl7+þßzh¿H‰É°rºÒx1kó PÑ-M–œ`ÆöEíÆ©¦«ô´[^ñ´†_ôz‚×Ðáe^Éjá‚®ïÉmPb iì�ÎÄ=u5(g,ÁÎáÏXÝVƒZ•h‹iïnÍäUòL©ZéìÔ:ˆËü´Z”ÞÜT˜/foµ ^vËÿçÕ‹ôÊ ÿê"¾#iH· ,X¨v‰—ÖHõW5Žý‡cÚ«/8*Â–ß ÆOØäzHÞo»Ý„üÓïÛ4cË…aÚãWÌ÷4»£4,‰¼”±'&"å)&ó`©úm5åx(êyu%P�´*³¡|¹0/“UüûP¦äC&*/úí]{oÛFÿÿ>…¬�x¥XY¶eÇa8Môi£irÀ†KI+›±L "åÔPõÝoföý ¤$.p8 $"—ûž�™��ýMv×ýËÓ÷ •³IP2ÈÓZ›°™…È–�‹rÒžn`L©£ÿ—5ÿ ²ÆÞ Ô!bžlÀß:–,G´ò¨ßó�Ë`ÆØô<|lu[‡°4¼]DS�ü=^,yª`¼\¼@{‚Æ­'*½šç…Ú©ñ{³û,Ÿ5—ÙÖ^°­6;Uƒu Ÿô1GC«mÞøÄÀ§¼A P䤳öUÌŠq6¯–3¾\ú>ØEõýÚÎ7!d 6ƒ<ÿ„,ôøû“Ó6G »gU•ݰöÇ}f"H d¼ãÇ.3ú!¸!ìÝ/x•µÃtw < áÚxªbh­ÅAÏ?è9ú$köî¯(Žg9{€v$õ-+ø…Ú}–°�b;n““b€…®œ�S(ƒ¥LùÙ3>„ĵcS§—‘YãÈORž’1ì-k-–aÁœ‹±”¹ B2MFE6-д¼*ëãsÚq§9ŸÀÂ5ßÍÅF¢º?vã¡ Êò±ã4/¥XÊÑÖKùÉ —‡süë<êHvòOhsðB=âÅ™–7ÇÜ?Ö!R�BÅ¡»5Ó�Ïâr.Z«ÇåfÉ+“ Xȶ؄=ZÚRç]:’w<¥Ÿn�q †$â…Ø¹µÄµ^#yÒg-‹Æ-<ŽfÄŽªBDç_<¾­ »':žèŒk±ùܵˆý(nHûë/^¶*p½FŠÈÂW»íÍzÚ¶ŸñÚŽ!e2=ÐÕïŒÃˆsÚš…i‹Ö£CY ’ÈA—Ok^¶1ïë+‚J¥{_B xö̲lÛÕ*Rþ…Ò rkG\½/®†9»*‹Ù#È’)U�*JHÚç‚Tײ}\G�ÆÑæÌ%¼�æØ@>—é˜ãc<@nNøB›à«�¥«µíVï·uÝî77< þ&<¦¹JäZ¯S�ê®ÇlmX¡$ñp23ÍSó¬ߊ§˜9š‰‚&+;(ËØÞn…©éÅ2G¼6yH ¹”t-ÉOÖ�·„IA‰½”�1 •KÀ²qn$ÑqÀ;+}h”�uq¾UüŠÉ“YÕ{ÕZÉ–VÞ ÝŠ[†hÍ“Wtô‘nËFQ§à‡:AS“ºE™Ác��ð,ï@™®ã)/ú´ÖMÀ|÷{�Ø0?yÖn#öŽaíÞ16ŒØÃ4 Àî/ãÄÛ+y$Q}a%vN@CSù¿+¿þ.K·cŠ7€â�Þ[Õ´ÁH#NH·Åqê7rñØ ¨ÀÑØ!„†�2ìäó@��ô(°ž‰8~ÁhNMÁŠ–žòC),÷ú(–¬C¤F #>ž pëÐ`_˜†8=“i×7 I^•äq•|ˆ' ó–É9ºÍEOTj"ŠO*Ìo•šKðäS�™b»Úq–¼^ÇðÏUlĤÂ�+�jlG¨Â ‘±ùQÓ[ãÉ·®¯¢á?¾ýö«VU.cöK6ŸC‹ÞþösZ-Æ×ðt=–vóêš÷HQ7ª®ëª»c®îhp0M“ÆNFü ƃƒAö<ù€²}þPKÒV1]¡QeMâçBimunify-security/assets/ui-app/assets/static/other-root/index.htmlUT ëÆ«jëÆ«jux è‡�SMoÛ0 ½÷WpÞ¡[GΆ…#ºtÚu9´‡žÅVbu¶dHt£èU'iíu—Q}ð=J|ù‡o?/ï3ȱ,&'ÜO� aj¢´.L�F¡´´Þ-E692^J�æÂ:‰Ipw^{*,äd^ÖZ­š¯£ˆ³ö¤õ:Š\a»ñ¶DV*=uÊA§L¼,Ù鸃J %5aoHãw¢¥¨ŒöÑrÄ*f¬V!J‡¡“v#m|îí7üuN‰þZLog7ž¨ÍBhYô1?îoçW»¼ž~Ÿy ±z EGJÎvÊ¡ ÷nÎÞ Ç6E½½Ôí Ø<Öe¥ômŠÎØãÍÐûW…Ù†M¼GŒ;þ¥H¯­©uFu/Œ�áãläÇ+ìù¸Zš¬�§¿v­t ˆM7v%²Œ^ÃEµƒ/çÕnÜ£î­Ê0�a8Š¢¾ûï—ms…²Cé0—j�c ©(ÒOÃ(ÚäRÄj÷ù½^îPTU«^Jå—Öë×î�X7­çCi^«Á—ÂIÈ­\%£Žà¬mîÕ¢)SúfôÁ“àpõ¡oh9¹1‹4 8ó{⃦¶úàlš%õãàÑ€M%ik²º�ÁäøE8Û_ÆÚ¶þPKÒV1]]4%�Þo`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_de_i18n_txt.3c6f788b48a0649d.jsUT ëÆ«jëÆ«jux 致\ës7’ÿW~ÈIgJ‰�”÷¢”/EREñ!FCÉ;®,8rp\ šÒú¿îÆð!¹);[›[±ˆÐ�_¿0À”ª˜¾¯-Õd!ÓÛ‹Òš…õ¹rGÎZ_ûðæùáýëý‡ÃãE(óƒ÷ïk¥KÿÐ/ÿÇü‘©ø_ÿhêûþ§W'ªnêþðÍÿ>øƒ^¿~õúðç;é„{3 &õÚ$8|Àßü›oï´™¨ÃãrQhP;®¾ùág§|pF˜_jÄFíäå›7êÛo=ümTí¤úõS]?Z¶îë®®ôôàáÓq.ËË¥9»PίŽSY®®«ÅÝ{õágóí·êè�‰\†7ÖчëýƒÐ@÷‹{>œ¸cÚôS=<Ù“öûƯ—U?ߺÊ!ˆuèsg—¨¥h;gÝA­%Íy!‹b%ìtZ*R{á_Ô„·BºY˜+ãÅ?j/Ì‹Ú?ÄRû\kŽ üî4ˆ îd”¨½¸H.‡Ç%©OOW°Õ ÔÝšquä?Õí�DZ=š1 ™_ ¨äÄT‚þ¬ŽÕÇ…u¾|ó i™òäAfÙØvgÆ:Õ×¥?Ùî°^¿ö.8AZ¹h”ȵ¹Óß?NÓ™2`µ´PÒ„3YèuœÚ`|ý{°åÃ÷'µZL~Rk U!s›¿UíH.&Ê)mt\>S…òŠcíTår9õ¢n^—iNfNŠ¢‘¦ª,¹™7¶(”ïÂÌééTÌÔò÷�êÇÜUó-+M­ãÂb¡Œ¼Å߉tnïÔØ6 ð2nB#LE’æKéî•è“ò&j©f;sOÁlû¦âØ?í× QJmXÅt�¨P,óùô·¹æUŠÛ¾Uú÷�ÙôsŽ£­˜Y €Éƒ¹Dc«§p«?eÀ½Vy5½ô€Ê3gçÏËúV« P ðJ«ÉP øå±¶+^:=ÓFÜZë1ðÔ'‹Ö^ì…ò©ôJo€L¡‡Ÿêe .9¶�½xR…fVÜÓ8ŸŠßëï_ªˆ4úw*H`ÕR-Ù·)/Áþ%ûöVÌŠÞ­Æö*ꆵ(! g‰D«ºÈ´¥ ¸¾À! wð?Ôx;*Ûoõw* ÂNwZ-Ït±Ç•AmBš²2©Lv&‹R�l©½¾S,~ Dv´¦µOŸêÒC$�„*È:U°0·@_ß+sûÚ°܇ßaØÈ9;¿ã†`㇠Ä8yPwÊ­N力1FÝÏ€¥–�jÇÝÆ hU1µÁùœ5 „äŠÆéŒßï pàå E”ü^}åïã*H±‡íŠHŒi©¹5{¶XãwHÆöl/g‘TLt)¶LÚi[¦9±ÿÀª0,}‰Ô&ɃÏìÒpÄM¥çâé•›JŒî§'+Ð켚ï¥ó¼wÒôŠ©•Föˆ“H$›vSžÍ¥K�3â;ìÓ ÄÒJ…>׎]æÔi—ñypåž…N! Uy=W‰6©jNÁÆœ;=ÍÖÝ Wf¯"\ØÕè?5LØ0^¥î$¤`PTˆÙ…Ïù8dÿ)FDÁ-SϲIÌ×pÔWèn©2³—n†XZôe0i„ U©³F³«‡ŽvÙH 2ˆ?á#7£…£}Ý3ékþX@²Õ|„ãæCÀvâ’� ]ag:e9níVYÃtGß%abÀ•Åywøîú ÊÔ´Óbç¸øÂ–ÝÑîF^{¾ÙÙâI›UH >–“¯•³© UÛ½õ¢Z¾úFzˆ¤2Xªª¿ÑÝQ),•X‘9&´²­îéÕ¬%q™ã¸ô8¢ÂÛ8\ L·�›SدaÀRJ(é\&HN@‡©ˆ§™*¡ét¾…&õ N@Òàß¶‡§Q(=R§HÀæ}`c©Ò¼T÷o¢·iŠpåÜf¡¬‹D*cƒm¨Wܲǚõ�!p�­H”ËE1©VõdÓc,ã¡Öe ù¢„° •>î“$çGß�[èîÌì(†õ¸Í}p>‘;�*³a�<§Úr»T&ÀËI¡Æè{<è,‚íÂh±¸V…šc. †Õ‚XfºÌÍ×_�è‰Ðdd‘ú2øgÉ¡›Ü�æžY ÷hq ~nq$ßY¼ŠI{ª†›ºo�*SS ‘af'vQµ9Pð%@½u†!( ±ÚqÖ�{b1¼P,0i:˜ŸøL4…êÊ\—MžâgëõT§²b_/Y¦XUAìŽ.¾G`PÏƒÇÆ÷>ÌwÂÔìá<ÆÆS:HjEoe›œõ)’ØÝñÎî®ÿù‚ÿË�—œ©õñÕc~Ó­˜AÚ™Þ³Ñ6ÅTÁjwgÍqÎr4QÒM°9ñ•Çí5»à3Ç#sí·<­+�øcYýJeÇç<=6eÅןWÈ¿«�/Âe»ðöøñO)å¤öD'tl´Ýüë ð¹<;¨¢î$L`“/¤(ŠÏ'S]@�Ø\uÙ;„-©0räJB &fã×Ó¢Ãì)8ε�yó¿PPµ3¶¶ðšeÓú6AuGG�Ì©þ*`àQVö¨Æ1}p›a:‹X™ öœŽ T̪ͥ@¸Í>_H÷l©·Édñœ­âs“T°o�ŽÆNN!pî–!ë‚¥ŒªO*–ÃçJ^\2æíƒÍN‡•4›ög“ôþrq6;‘8;Ùû/2¤ôÿ´4¸$kœÝêâ/2Î_+Î#ã` õ,± ÁƒW²äÛpêR•"·WÐfàqœB/ -ÇÄ?Jéb¡×­N§|0ɬsøm´÷œ|ÓW(PVÃI胱2hϵ“ø�ªÞ8c�Îri€%‰‘±Ñá7öz$Tç™hBÖ 1ÑåigAôùòlûQ×°òaEp¹g 7øu·ÒÝzŠË�+~hž C¨6Iømåô-j&~K�s+�º»œ3ææ@­ùŸ(¡!Õ5ÿɪôNÕæoyÄü;¿Mú~yõº�T¹7Þ±‹&'Rg Ù¶Ù`�6l‰z Ûž+w¯fv© nÞl²ô`™YTn“EiJmL0%© É"µ©ŠY”¿É‚²4 RœÉÒ"‹Êf(fÒUËœó¬äNjg± Û€ØÇ/x6MœÍ9�¥ýèÃç¿T?j¾BZÓMåæÑkšCvQÄ‹ø¦-ô]%)‹ù¦5R;U‡vØxÑ„A›J²j" KMÖšN–ºÂb“uP¢œK²7 úfbìh²PnZ_.eÔol±¿Þ:¨g*87Y8fô=Ʊ‹ãìA nµØca›ÚR¼ï)XÅÌ>ˆ�'·X÷,Äeáù¢x°œn#„¸R‹0)4~|k±p]ˆÍÚ,fñó»Òø‰¯Åb¶]@c u¿¹ÅÌQRdoõx‘-8ÑZL­\´ Úžœc Œã,ha6ÙµÅb¶g‹0ŸDdµXìµ,ÀT\AK�$l¬ìÅ8غáù[àYPF°àk'Á7ÿ&Ißl0øå:_’®�Ž…é»Õ"6-�cAšGqOÙ wª‚ÇÂ=‚ü”�8§@@‚‘‚µêi¼0‡‡4¬áN±6‰j=em 8ìžò©¤˜©*Ò¶Y÷j§’^‰j³²·K_ÉÝf�RÚ�³Õ"~$l³hi; !ÊÔfãT²X—í=É9ýÑçÚ."Ñë]gÚ˜ŠÑ3Ö@g”OÑ/%þÏÏ?¼©R£¼g¬ Ï«\l7»±º;sÒÜ®«’?;rB®Þa³~ÇY Ò°�4•š;läì@Ñq‡EBGY7#±:llEVïé ±yÔ r³G‡N'€W– 3o‡�§�¼šÎÚ»£'È=–ßõ";¤â5(:¬1;mÂÆÉNІ€ÛñÃP-6,0ŽuØôŽØýg�Þ:-‹Ùf9ÖÖpT,Y×ó΂¸ËŽ¢1ªê�nÊÐïxÛƒj^“-áŸÛ²·Ãzà! QIÞaÃ8PÌq� ÒQ=GM]–2 ;¡ÂÁ9ëwç�To-}ƒ=g�d¬cÎY½õœ…š‰�}Ίy.5ÅåsVÄkÅ(Nî²nÑ…Þ ý™ÖﲞÑu•ɺ,»¥“”Ÿº,»%�z‹Õb]VÀDÅ_e‚wSB(Åš�p sº‚‚3c#ty¯¤A-vY¤v�Ä4ÒeU ƒ´; Éîºüë²ÚïúuËtÁjïúy ¬z. †…„‡ã¬ìçÅ›oÐ#¯×ÕÙä…uÙ:»\°N|!$[�e®�îÝccXOƒ–ë¼Ç†1¨Å&–Z9$ac,£'’ Úãë9;·ñÆh�…Gâ�EO{Û†¡º£ºÇÊ;�@%r�µöNÁ[‘±îß Kp,fý¾%Wsi¶ ®Ç(=YB Wi°Ï&¸¾¤¦µÏæ·>hÎXšÌÖ7¨š~HɈ}Vû}Œºoá(êûl˜Jœ}ÈÅ´«5àJ-gݤ¯Jës¬gû¬Ÿl´Þ‡TÈÚ}6`õÃG5Ÿ‡!³ÏÖ×}å×U[Ÿµ ðºBN¬ÂÒÙÛ[ätÀêoÅ¥4ÌFÌ� [dr�oÀº^¿SFÍ­Æ–Ô¬Cptž¬3`q…ËL–·T X?„Ê\Ŧ±°vF÷˜Ë{A¿bœ�éˆi8Ⱥë”ùâ}3¸¹ü€t¬Û°Ÿ,èô`Àƶ�L©𞌑ÎÅœ� ÒPàá¹ÇZ>6ÌGEê¬Y,�2PµHX°XF»•�i$ºÿ€…ó«3e1÷Ðø}¶>`1 óU¦ï¢ Øø€.fûÃ�ú¨#ˆYÀÙ«X¦ØÈ4°%V‡˜‡¬› å\ÇêqȺÉP…£J±†Ò�õ�¡žÑ“”! ÀãÔ·ëwÈŸ–ˆœ°!n-¥“³@,ž‡t câbÈ¢XYßÏò€T IL²°‚ɱJ²€jBä�5h²TªŠh—¬Ï]Î)ƒŒXK� �£ð#Ö#EŒ�¾¢­#[¬6åàˆµÆH.‚hýMÿ0bCÒ(×…^,t|Æ0bãÑHÞ®ë‹k¹‘�wÞG¬Zbôi<Ú¦â`€®_P±Ai¤}*µÛÆ‘kÍ´oÞâºØˆ�#Y`«‹WzH lœÀ�4aF¸±n«Pw1bÝx��õã¯{Žc“xÅšþ €ƒÑ¤�+öWaN'7ÑäW|W¦\u`vÅ¢ûj{FzÅ yðþ '¬‰ ™Žß†h—„­…Y@¡h¶]_—Dj£z*‘°)< A.a•F'�YœÎz@¢¡§ZT{Ÿ•BUv®€™�YIa—ë¯I {¢“ÜÉb"]F¸¾€Rs W‘œ¯à`At¦'çf ÿ‰=Fо²ô¢'Ùã\†ò®AHøÊ«w‚+±Ð~SäNX7K MzúQOž9(×öb] hÔVŒ-ù'R×ÈÁ?3“j:»HØ Ü. ê®:LØ$›ÄâLV¯CÖG“Uu™°Ñ=Yâ—Œèc±ãànË#b¼%!â”›à4fá‹gº’–ãKJÒÙôQ`WÛΙX³À[ú0fA=ÎåF °cIG�›€>fq:¶·*F¼1 ÍËÒ{='›ŒYX¢¶ðCìz˜ã°Ébc™c(N—c—cúˆKµë˜Ý€«3½sl'2jŽEÚ8àëTfƒãXêe…?Á—¦¬ªÕk6z^ßâÇDú5kÕëY|¯Y}^'xM2_¬ ´‰xâ�µë5ë”;ßó«³a$e}ãÚ…*}]³Â]—µÌ +Þ�ôøEh2,ÇoööÁ7ø üu}fO|«òãfÏÍ£î¡`@íÜðs×gOâ"˜ÙTíT7l`u~NÉbôF+oèüñ†Íª7Òé7oY?‹í^<9 >P²yËGQ¼$£g=²gK{‡èýmÏÖœ4øÛž>he=}ì{ǧv Fñ‹$±|·>§~Ç:È;=ŸÈÉ’f²Ì'Ò">š¸Ó¥u›Ï>yh˜¥Š¯4¾t¼º<§N“¾ähÿ[œ*|Å|ù4>ìÄÛÞ¢z„�W¿ñB¢Z_ˆÃ˾ÄF¼1þxƒWü¸æ-úá½pÄu[z («ÞÕ¸{|žߊÆ+ïj€^Or·˜¼ª§«�f>}Š÷ÊË0ï»rÔž/¦6/ðF9ûãœÈAuÇþ1[ëK´ôXêÇ;¼�ùÜ{‘9”©Ó•hD£Ò­£\Òã]2Á½ qhfðÂý Ýá4a>QîrÚ¦Ÿêt¶oò�ÅKNêÇ‚¾4ã£'|#ÍSš“ÍKžH:¶l°ÐåÉú�OÝ[¿ïi1tÞt—4—wj¨–ÝçØl—ê�L”Øáߞ岂ôVÐ9�fÒñ7N ª‰“ø orÖâSœÅ3ï»#z PVoïMuçíéÿsÁdÕ¨¶}æ"i¯Ðé-^ saª»¯÷AÄGÑ�}�g÷µÓwÄþΔ·:›)Öõw§Ñ…ÌFS_Ò΀*vÏs;xXƒÒÁF©  zO ]á=ÓÓ)†zîNîc¼°‡¥v-än8þ‘ËIõv¥އiÔà85s2Sèõ™.ñ¾r#ÝI pòm¨Ûhe¿Ú7º!ÿÅw'ûi׎ìW‹ÚÎ5èõ½CfF?V¢ôNœÛç|½÷s;îò÷lŒÖªWg¼ŸÀÐ:üŒ!@ðïO̽Ì#ÀbÿßÞ»w·�\ù¢ÿßO�ð¬3mO“´Ýv:ÍIrh=lµ%Ye{�OÏÒ‰"‰ˆ´,ÉýÝï~U¡ ¬(»;3÷žô¬‰EU¨Ç®]ûùÛiåÏ[®w©b¯×*i¡…·ãñá~4¾Ž—1§Už”jaÀ^$™ªp‡WuRaÛV˜.âSðæbö’CýˆrYèÒz£ÇUTÊ­<<Ý~Çñu\Þ?�úÑÁáèÍåñûãÃ Š°§xÿ¸¦[f1¢{mb’dÝáíÉ3²óïôXê‰Tm7w@)ËÍ<Å<¶ÆÉ¸ é`SãCÁh± [}Û_ªó�yÑ5)Ó ­\”�„ã¯î0ÆÍ[*᣼’ õð!­„·1F Œõ‡"O>ÃÆá…RiQPÅêá!oô÷à�gùXò޼:_dû…¾f)ň—2²ŠáÉo4¤á\Å›äÿèYt/›¼˜G½ï½IþôæÊ0ÊLx¹ÞSò,ƒèd0ƒ N{ °#`Y2 ËÑR‘h7Ý!_é#|_ÎÿAÃj­V¶$Œ9fS”'š…ölÀÁšÀ-¸©T%‰—±œ®b+D×Ä�œ-ÁÅÆ°Ü �ÍÕn=EèsÆ%ʶÄõÌ8$t…Ã!`F8Žû‡C‰B~Ë2L£oi‰ë§óÇ—2 úýøçP‚”¹" �ÛuÕ1~¢/£ ðƒ,­*œ>+G_4ƒ;`a‡­ézÍù¦G äøb­Q&¶m¢hC”29)`]gy1UWqU“(;3&€kMâ’àU¢—Ø|p„í£Œ�Š0�g½:æ@o;A–¾¡ ³<«)zÔnÝ•pvRÎJPñ½¾mæ]C'%^W ¦\I6çrŒÜÑ�²YÏ%´UµŒÒŒñ *ÅÆÔIì^½ÐáO¹Ì¹&øÿãõv}<-”ÊØ?È| ’e赜P�L�úðtÀhæHL0e¯€Û&ƒ^Q2)< ÷ûû ‘°+¼àEÑ<ȯ �Í$Ï·m‚3ÚZ}kÛ‡`å3j¯€‹ìJ�ß½ÏWÑB-¡]ëýÍ¢sºÊ#ÑBŸÿøWy§GM«¼0{éÍVSwžÁì¼°9MÎt48Údæõ^Ó€s ¿œVÕëÓ¥“hIé}ª–("2VAs'PÌ̈WEóe>‰á0G‡ÔÌŸ§,Ùgñò–&HËÜ4¥–+…r…åUˆîm¡ó’†ßµoåhŠZd6;”JëS¶m­¯ œ¹‡ày»[å4Y<šEQÆÝA€ ¸E'¨‚FÈ'Šó ^]â=*áT¤ÖqqÎof³Ÿ>ïà˜‡^Ý!"QéRö›fWo nËu^jIb Üü5}üãüuCî,<[jµök Ç»žx¾<¶îжufî8¬9Ÿà^…àm2š,Ò%ô‘G:,(6O_r8âd”àiÌd溊Ê5-�*6¤³ÌàâBÅçH‹õM™o1¤YÁŠÍL¨!Ѐ¡�ÐÍ‚ïbP4,ÞRÐíWÑ .YÖ'š Íu¾ñ€VZ�2æ½$ù'zhé}âW¼ªÀhr$qÿu-?®H<}¥r¿)å ®IAj CxÕ£ œƒ¨Gˈ»/<ý*Ÿ]Å"·uœÄvbl=S,µ€gÊOÖåa`:i³B‡cÃ![ÂÁÀ9Ž >x; ‡¤ÙÀ�|?"ÍyàžäŠô²’:�’�›J†¯Åc�ï-"Œ@F¬ÆLŸ¢òïõ9mcœõ çb lB¶ž5{!h¡Ý»ÁVœÊ]:Çø¨9žr êO¶ÈR…G^5gFŠ:¢ñ�Z.�Í#¸fè/ï1 g3ûÒ)¬Õ.&ç2ˆ ,dxͺۚ5\ÿØå1)QÓë¯]½—*ÛTwªè\¾C-¯€~ªy«|µýì/}„7™îzÚ²ü™ªî@‚¸NúM¡["ºF/‡ÑÑåy�púÑù[øëøttmÊ›!<]™ ÐÅIf¶lŒ;äY—¡h-0Í è�Ð3èÀb¤Ü tÊŒ˜j¿: RÙÅAº®Ïâ�Á.%ˆ(\ß8â–˜»ö¢ÁeÚ¶‚ÝsÅ4½œ(ÌÐÞ”ëxuµößµ/ÿ7ÈC ÿ5ø ÔµèppJê£×£ÓÇ�zI¼Hƒ¯qè±¶ ¤÷~Ä|:Š»ŽL§»YJh lb¹‰w½v¿{ßЕÝSÓ~í‚¶׺ ^ÈP1XÊ/ŸÔl¥–‰Ò‡¡½ÍK¢[%œ#A$.ÍÏHÒ=ô†¤“¥êiÎÉbØ„5$A^£ÒÍ&8%ÊL‚ÊŠÍw­ã«{§Òòat´ÛQl<ˆæU`¾{÷ä”l³Qí()¢Å�±ï Ü„À.ðOæu-ˆ“—åvôÅëžEÌb (�Õ&ûKÏ€cÝÏóÜ Šó–¨‹BºV*I7Þc€h�äÖZç~§Ö–�_c�>­ ‚mÉ7Н«M ëÀ6x8‡U\môhïËÍ$l%`-'û)úf¸ê$�G¶¹¼ãì’™d+2¬Ê*î2øE\iÿJÝExÀzdv]×�Ðjy&ÖM6]€LÂ�m²ë a„[Gó.›(:ÚÞn=„ǯ¤'âDDÈL�J(÷;# Q=�À yª1ô þÃUÉr ?‰Ò˜Xo ¸à2o«ˆi&{…þÖkBµ”Eqh!éjf�wz½¶¥‘žÁÀy0$/Oªî°•WÆñ6¡ó=Ïû޳¡¬üR‘ K.øt�ï\9z’QÈÉÁï¸ø»"UÜ8•àÛSŽaùxƆx²—þZü‡(¯hxS��sЬ}F–hò… f+üÞt[Þ®&ù2ºæƒ¡;Üç^¡•0·€b>Ùb·®âÖé`@xœ°O_èÚj¼æ…_‡]µ^pã³²’©ââ8[oªOˆ¡Þ±%µtK ýÀøè¦À Œ#3¶µÕÇø}vG¯é»Um#´ß× �~DxHÚ®C”Íò;„2 ß²nÇ+ÝžW+gÚ^Ê,?örSUyò-kÞÛˆhábÂa&yâG·ÆÍÄSmG%G3âÖ‡I¼eUkTwsœÔµºí˜Ž½&úXõì†aúzðqÝu[{š}�ù>÷=È¿B´Ž�èßÓÕÖÓâtO_§ô‡—_Ÿ$ƒÞ|SW@ÙÔ÷Æc¬Êë¸8>M«U×z‘b²µ[Lƒ|-vú7ñàÌ-ÒÎX!à 6| ˆ$zÈúê¹ëåF×.òI£†»´ïé*<-Ñ ×00�ÕçZS¸ÜUüi@µU°rû†[e³Jø”ZIÖà ªÛÓ<Ãøô½º¨Î<ïªÏòqÓ¨Ï27UOð"¥€€P=ž÷¤¨¤‚ÃÊ6 °àŠ•1Tq’†0'%=°Älñ•u7ý~ºîÃa.ö)Φ XY ,‡Hà,PGãMžUÊg/�¨Ðx“1lÌÁm´Smƒ��9݆^¿Æ_(êQ‡wé�öõ\׿yèTüØÔÎ\ü¯”É`ŒWyu£¡6Ø¡¾Ýê/CdBô=b¤øÇf�üœPª_vM>ù›º–G««|ã}÷ëÑiô$±P òQÕbßhÖ;xᱪ‚'€§ÆÂ*zTУG ³…šUx=7£Æ9á£F=¹ÑÜÌ‚ýΟ˜Ì\¢_Qn 1êö†ƒºÊ%KEû£‘Ë\xa¨AyŒ͵H)ÕÞ!òžæoƒ3¸^ˆÞ?‰Q¬ÔþÒÿ{+÷kf*U…Ñþ0F;:»Ç7úÀ§¡Ë˜ä8k 5k×3ØÏ̆—A9Êä€Þ}DŸšˆñ¯Ô1úXâÈ; ²¦™°ÃçâJCã’w…³$‘ ÐÆä§ªwÂ5p‘«©J?©%ýP\8Za@,©_PÍü1ân£ E –ÄÜÃÄ>Ö!Ò=ªºž$UáÑÓl±ø³‚Þ¶ M×aÊÓ€íã+.^i/AÊRÓ¬ôªµìž½j¼Î)fbæáiíˆ6Ìö<ö—B:}>`ž ¯Hvâ»Ñ£Oyö˜ó%þ¦¦�¨sP‹f3}åpa–€î~yKA$úCºkïgáT„•ýú«µËœªxR†õ"”´ÉP¬©K&®€=”¯\Ð#üR0®YLÑ$Ø+YboÈ„'žÎ`rë? l°Á\ƒím¸‹“s çGã”3sxG"¯÷ú�’Ök:¶Ù§.Wâ¿ÉÈÉk �¿¬ü/Üt3{œŸY Wdö›ÞEd¦jº ب�A/¸§2/ü¹¼‡eTm00¡Œ–*M¢½G$€sU’ò€³“2 V ‘œù§4T“6ã¼¶vƒýº’]g“/$ZŒ’‚Ø-›{D¥$JkF>‡âIz‡Êœ²)CÑ!NR¬;Rî4­Õ¨&�í5N¨SvÍ!áã[˜Ýç�“w•ù GºcôÈK•– º.•N,å&=ŽOß÷k¨ã CËÈø×Ù§þEçºéº7{Ñ¢ª@õ|òdžV‹ÍdléI6ÿ<€û;+ánWO¦ ²?á@š'?üðüПRésðÿûý³ç?ÈpÞÞƒª_"÷ »Ë‡òÊ4w¿‚Üu Mø~ëå¦ð3—ƒ¼¨¼åÄ(Ù@)…Å$ø;:€51îµy:!4�@2%>ËA?<‚Ž™ÁÙ›SäÅÜš×t™,™ �=aŒ'¸¨eõ¤Ü¬×Œ,/á; ,˜õ¿ë Êá¢Zq~ùËgÉ{ÄÍœx¯ª­äº†%X�»×;¤¡=þL‘ÈeíZåš–˜xÿ˜<’j¸ÈoÈ[J ìWª ôB¼Âˆ÷ñ“÷Stl-éd3ªÐ–Hö‰éÖYhÔáÔÁRlB®­Ë<{l½Ó‰tmÄ•hˆ’·j9Lr~áKÆGY‡*ª}Pæ¸R./Ës1ÚµKâC_ÞP�‡EéGœ—n°afÂG˜iaM(JÿÅ2"ô�÷ú 9G®`‡AL“"gŒ›Óæ„®oFJ@®¹Šö�™ùRr2) #s@ŒõFÝm8yƒÛ�_)̰r:”Ð Ó¯£“¹ÎEG¢>DôgކNc%x|ëœÛ¾“»‚\\g¼éX|Ú 7 V0ÇJë˜FiÕ4ÿ€Ë¥ïéúIÄ®PÇ‘«Š¯ßÖ¤Yß°«¢P7(˜7Áº‘é’ºÀ*_,ŠJ:Ü‘ô2`—>Ïa;·�£©I.¹)Å^ƒè‡þ.B5§b,D–y©’"_pÈ;¬$œPì-.¯¨ãØ¢ƒ¹�é,bÔ:Sù¬ÂÎÛÌ*ÎÛÑ#¶CÝN`ýû¼Aœ7à˱íGù¸N&h?X˜yÌàŸP0KNaý9û9sßÇ�¨má{Æúeˆ�qUê”!Š{Fɺ!†÷Uj^)‘·!:ã‰ãj^c4.E Â5ì2¨+ bE¤í9Œkë�ñO“4㓉7ë‡Ñ‘uÊnRæEXý�ÌF\FÑ ÿ·Ç‡|¡Ê×k½y¢°=Š0ÂØñf]Á×s¤yN/Ù" ÒMß–BqGlgSš0pdbÎf…ð°ë¼LAPÂtÓø Ÿc؆B%›;æ\ăé¼ßmH靈ˆ™øÏ\�x‹Á´�Êd˜–¨—¦õ|5¦d6Ù2Ÿ·÷›ì²ëŠ-nQ±g¬5¦%÷ ãݼWòÖä ëW´ë\(Âà…ÒnÂ<á�ÎbEH_Ѩठ;>«�P½9U™@Ôøä÷$Ï LjQ“Á¡Qáï÷)Q6†î«b€ANð%!,b8_‡oÅÎßž/Òr�YùcNS¢´|’.9(_Þ�I"‚3=ã�FÂê[$Ï$w•c$’ElØV¸Š'ªÅF[Û} òÉlSrÀïàRaNå5ÅßZ€ –F‹‡É'5N’ oCÂwr¸?3ÔÔ¬ª®9_!;6¤ãJ×׿ý!úŸ@ÜØu=C{fV¾œ2Å»ƒݼvÄÝ2Upô&¿š`j/Ý…šä9àd#[ƒ3† ·d_µóF쾎qD*A«. ÈïAý7@“$šÜÊ7û±T‘$ÍXßõ¢Jñel×J„¨µTÀ—Îq²"{p‡ L˜™TZ+§¢í¬ÕÀÅ…Ñý$ð™jš«MYrvþ‹)¼XÅW*xÇà°WP2êù½¥$u<‡±Ú;)]Äöº¤žI\ Hå>ÁÚ ×“Ÿ(X‰ª`³â[ÊZ*J�ZV²2²ªü"¾–K©¿”%K�¤´¸ŠK�ÉÖ ô>9X`pTšl1RØÚNðoÜ�Z≣ËÝHq4à’Ø7‡ŒF:I¬Xâìú„¹iÝÑk eMI�$¢ÖF7�Dl26Ì ‹ƒ—�dÿ!È .Büp‚¹bJ™¨ß‚RªèÆœJ‚HšŽãŒ ³´¹¤õt• NAÆœ“FdzÈ)¼§…{#ÿ‡w“��Jk±¼¢9’%ðY¨N:� Aþ¢�ªÈA޼Ô‰r¤•<'>J�y>� Í}ù¼¡}"^R t¸ÐCÎ1uâÆ©ƒnç“4Û|˜MFŽxûFiHxTêòÎ ¦ŠÙ‡¦U‡ùñœLöÀ1€ á} 𹩹#³a$çX²\`íHJ©ýovv.°çj|œŒ%lj“úIkn©#�,ÌgÀ ùøT˜:Õ§)‘¦Æ¿U ð±¦[6]ÑÕ�·{‡è¢h%'ï¼81l½©DGQšm'Ÿ¸"i1ô –‡gnëâtYY¯õQD˜b&^¦ƒRAQ0#dŒt?‰<ÏÎ…s®Œ\x]Jº<Íd’§"VªR�“–¥nÅô«E  ½IAåûvRˆ 9†»ú*ÏçK<˜4ô”¸”;c¬•é å4ÊI€#Ëä5b¤[‘þÑë§$'õˆ"þMñsøõ93ÔØ‚gù”±HD¤…ÿ®‘ý5Ñ^¼<á é­AãªQÜýF»®dYk?µ¤·!¨Øž€©Ö�Öº'mûÅ�×BœZ¯¸¡P-ZÌx¡�ª„+½[é\;öHèl±¤jÏXÜb.6Ë´pNž@½…ÙU 3*l—XXÕ¼ý`K�`¯Y;êÖÌešƒzþ:Ú2åÃGÒÄÞý¤5càØ²ác²×BM¯'ùgï£pîpX´ê_ ^䥄Ϊr¢´ã$¾DA[jÕ[Û€j“´[‘ßç@.+ ; ªè)Pì/�æúÚXŒ�²S5]3÷g§-KHÂö䑎álû?Ç2ÐÁ‰M0ÛV½ZöâPœÜÝPÖ53_ºÞ:‡¤�¾èÊœ�n©@éw(Ù:I¬Ç -Ú?—BP9H£TBJš+ü)¬ ݘâ/Ú�À‰L¢Ã”(«1° †­Q# +±S™Ô ãêÜ2¢U î�ds]•C;¿6hymšC)" ¨I“4Rw}ÊÆË®C ‡CU8kñ½h¿ †–nÍîVùuΆ¼KA•|ýÝRæ-ñLû®$Ñ›šH4€4l�Q2 ±[¶+cþ ÁñîÝïpÆ?€Â‹ÉY ºÊøFï£Gor¼Ôa@� ^¡å›íÈÂ8R ùáÑ瘣“¸„í‚ç?¯ÓBam¿ŸµÇǾt¨)…Ù§ ¤¡¦Mít "€Bð4Ãó�½¹8|÷‘f“訉׳D®“ô=B¤t8÷C_}ž*•ìÚ Æåj|Áf•Ý[P¬^8Ê%É%-²£×™‚¿ïE:Xo�æäÏ82ÃΛÕÏÔõ7(¿¹la׈ŽQ«²¸ãNZ4GŒÔV$/é55¸¡É ‘cµY‚&DW AçXnbí‘�_sáô„) v‹àµÆ³ª­�{õðYdð�ŸX§ììöp)ÁZ Ûeš]ï±låOzìŸì Ž•{é&¸V2C“N<Ü�y¤fì~æÝëÌ<×ã¹Þ�˜óI–�—~FòR¥Ñƒ ÝmVÑ\£›€‡¿æ_Ð�êýš€2RŒµn™c}³‘½ÁûžµÑþ Òà—R0ÝË�W|ߦƒkn:€z<ÎNc�EaÅÔ#wGÜŒˆñDXU¸…<Èðéï�$iç¤æ&¶ Þ\Îfú&¬…ë�c!b^_¯2í¡ª#øl³°Ž“§�sdÖ~�·c*8,;®0;ŽÎ‘ñ[ÒOñU1£Â Ýª TÊ^ª[çG…R#QY Ý:Гó—M6=s�˜_ýGOÿ:8Õ˜—Ñ8Z†õn·l3Å-S ¾—âßâ$9⤚Ír9¢ å�h]�ÃP²\‡`tŽÏ™©Ž7“ ´ Ô´÷�.ð˜Q`™Î¦§wQ‡ö—-ói¼Üë�ä×1‚P.F�+6Ø;ñ7 æˆF{ŠØÈ16TɵAÓ“„�*þKÅ L¢A¨¾’ )'ÿÎñ¦~/«÷‚± Y�gÊG‹�¢4+%T²ÛPJ%çø3¹ûx+¦�–ÁL`ZÎZ¨U÷ö¢ýñëãF­q¸njY¸Î Œ [Øá}ðy e¿¾¬ýŒ)â ‚ Ì7…‚hL'«üP÷ n?¸R¥¨¥fÐ2€N¢·|½)Ö¹ÿBýx£(úº ‘^£– …`oŠPv ’Bh•¤ïò„kÌ´"�Ä=Ã(>8·þý‡×Ç—‡À �ÇãÃ^ÿåÉhÿ 0‚ý×Fá‹W£ÿ€óz1zwèòíÛ‘âUÀ�þÒFlÀ©PîO×’0ò7ã!LJ'0¢³­!�9c:ó Jp1Ò™€Î•»Ô´�Ö�ét¡_IœYÇÚ¦ëþâÛ˜§Ãé¹ý{F»Iöz@’w9dd(šzÆ3_5&ÂŽ1C;Q=tw@VoŒñYgïÌ•®1HÚlž-oO±´¥ß¤*Þ ~E1arI¤ï¼²@Ì©¸—~Ö©nq³Px«Æ'ëÀ÷”ª‚ñp%ÅÃùSVêx¹¸0qQZÎûy0u˜¯'Ô´¦þ…àëÌ0d8s÷�¾€Â·ãî™ê%‹7]毤¸�?ì°º\üÑ7 öl­Úë”j"¶L”¬þçl ½ŠÄ%ŒyÐ-="¸ê£Kª~ÜÄ­=èŒQY-ÿø´½xñ¼ïµá_›xK'“Û)dºmY­Ë…‡®x3”¾SÜŒƒ£;`<î–ûÈrÕKSO���í Òý!ÌU=½"#˜É@¨3 [a•Þ ºmWí o5³±ÚY0cnBG³ŠûƒÒü9-WS.à ‘e¨% ¼ÇaøjR.0Õß ½…<¦n =,ë˜Úé勃'0øóH;�6÷&cé‹D}ê¬ä�*é4­}}ù»áKߕĴüò‹6Ý+rÆÜC�fû³”õJaz!K_çqYÞ`0?evRl±pŠ4˜G¬Lh�±àl%Ú¡tøBÕßÉÔÄ”ôªä¼Ý\¤GÄ>ßP.5ÎZ¨'Óѧ=o'Ò7^¯Oòiиñ–†]ä¹»b½ào=4«¡p“ä2?žgy€Ë+"ú5E»‚¯�+ì4ݱŸ 7+c æ{�/e€I¤Í¼÷”[ Ø­;ìG‡ò¢-ëB ©‘gŽÒ¥9‰˜„ð¿ÅG©;“)ÇÊY‰.U¼¢° ÷$_x2 åÆâ÷ Ï‹õG&q†RwJ«Lª0.{È�ÅCeª§ˆN ‰#Øõ´ÜZ~èaŠv+iýºÑx -mмO&~}O§;ÞÑ, ¡5š‘[cnM„øŒQF �ôàe×èh0ÐCÇA|¥ŽLV7¨P¾ŠÁØÆ¡±æÅ:èÞÖaÿ¨L¯qV6ÌË‹f\úµ«&ãháxî‘¶1,¹‡ÝÈ駸OÙ]º7•¹8>­¡0úL>RÙck@Öhެ]”±Äd‚M(¸Êö8Û4D»ç#bÚ2î°ÀÏÞSQ?//î†×“Ú; ¼ë½èSu í G?¾×èJ| Ýä£jÞ¶Ñ?ôð9Ë”Ÿ4Çd²Õ ×…QÔÆÀcþº—L¸Ï—öóHqe·A¾k2ÄÌ«¬œ1ÊzÍü˜}guÔŒµÅ g8©QÂl¦’àÂcóÁß7ÀV’f¦£‚•%~ô/xƒÍ—1½Ïišg ̸­eJu�*Fœ ¼^· ”ûη~ÙÚ‹PÎ.“ ÈUôš"`æÐ0a‚r;jŸÒÛlp@¿?óµßm>:¯ïçÏñSê…¤štšæxz@�Ë/0Ì+~4oóš´a©õè™Ü7XǼX ã—²¬*¶ô\(ûZ²u¶›#mʉµX|'ö¯Ÿ?Ì 3b}gÅS×{§�uq9JV)/bX$r*ÙnôÑûï%vÖriéœÊÊdYëwm,Ò8`lÿ‘™¦ƒmÖ-&X,žÄ£}l‹3�³¿-R�€ãebÖu2æóE¤9JéÂyâÛÒÝža֭Âð÷þ/m!æä"#úΉ•ˆJ¬ŽÉ”ø’Ëx‚Ûõ^Ú¥`ô]lâÜRLi5¥à›º,X�TS8ËœÎf­»bèŠd™ÅÐ(ì4g,3ã[Ð+o– .©^¹�tgjN8¦ÀÆzq ðnkÖóIÑ\CNy÷-¤¤½[«y¨™æ¦�^PyWU’èe­ä‡æºÆ�E¥80†xï~B�\ìÑ(qlP£gŽt¶‰õ±a&‚>ïšJ®âÀ¥¦x2žC?ôÈžÎÒP$¬eóì#ë¼¼õÛW‘H@í—Yº^ûÝí¼G7)eo—јŸt~$¦0Ï‚¨ …®¹Ò!S[,=8"—ÞnXº»N¿£8€(Þ»hÚ­±c5¦Þ>ánHCÒÄ“kX¦U}÷ðyqЍ¹çQKÀnæÎÒ0‡Ã–qú™Ìn#5ZË“ƒ—¿îhq“[n×2*Y”©7ú^ÎbçAäÙ_%¹bÈ÷lš]­1á/` ´çÈöM´siH«Ÿ5ÆßûIc«J²òö¢ý3>�„ —mq(jô÷M ¸Zݦ, à”ª0Šð±f~Ñ#¥ž;’dvÅqt)[vróåð“ÿ¬^[zÛa…f!ÀL¦]srž«LàÑ&’n¿ecëÑ ‡ ÌWr-ý*‹Ø®T¿·òÔvAÏr³ZÅÅíÞýos_RÈ£¬áe\VÈn½B£âÐ]úM)FI„v'ªÃ+Ský»IÂihsšîcn5�x|x'­†[‡­ÍZ`ÝsGm¯o+Þ�üz «-ñÊŒuϹ/SÂ9 $�Ñà-/(ˆ3ïÍKQ³è3OØZ2){÷#IÒ�ÆËå-nvKtÝ(,äˆ`î9;×·æëºV‰×§”y4¦"ˆzñjªà+qY= œß²ÜHwÁL'�¬\X cÑË‚ð+r]ž-Óëj+-†ä#%NãÒkɦeÀ²<¡ˆ�¡íñ2�¯�½Nx�¾-’ I†Ú-ó›ñí �æ~ÙG~“€bÛÚø1-S* Oct›fñb¥Yí&JäŒxm ŠB6Ä*t©‚ä%þ h¡ÕWbXRÑ[ª‰¢êÚÚx¼Z™, »ª›÷C€ß«(5–Rñz n€¶üŠ ƒâ2îþ¨!)’í:ºí™Û5GÑ«k/É;4-}“äÝFh+¦ãH °}ƒ4bjøÈ-<ÚJïŽ7ãÌLÉEìßæ›ý8+ÕÕæ8·,¢(•˜•»s h&®Iknc1)yÉQ˜ÖÀîèðøL÷FÅNȆ=ªž/Ïã 3â¼Ó=•Â~§˜`^X3t. ßAÞöýwÓ:b�ôúQ/ºDÈ;�kjDèÆÍw[C8†êÊw:hÙé˜^µ5* +ö+wþ‘üœ™«äçìÉ"_©'ÿú±âŸô#ý±Z­ûÑ¿׋õö¸ƒ®Ô‡�º€Q[n•ßhèU 2ñørtqi©]¼ÝöÌõæ÷Uë«ìa[ˆéÙû8,ï9Èê+juñ\v°ìõ¸TüÙi`§§H^_�bЧ“‡×ÛcÚÖ­·Ûfvj¼sžµ?Lh|ùöü\7qùû4;oQ‰Ç^ó~Ÿ½;{Iê†6vÜúJ 8/–$Æ0-ãÃß®×2û)…阖:�ô�0dÿ+LjlW¶ÙêÒD!í¦¿ßÇè X6KÍä$í\P <°b Ř,ŸòN‰€÷1Jð–3Î}3�Ñ@ܧ·_1¿K‘¬íÄ èR×5ÇüPÞ†H¤ž$íš#³ ×Ê©\¬(Æ…ª£$p‹<†¬·¥=‡ç¯/v^ÊÓ%@!ÿèuï °µ¨ ¸ZµAT]ËRN…þ¹�ÿ?ÚÎ5J¨k³Xr•‹‹fÇÍD¨'ÁoãPsvZã†jÓ©™Œ µNãÒ>=üwä&&„… D+¥ DP�fJœ,4ë¶—%ÑáѤˆ ÿNBª•Ž�ãeèܶôLÇ‚ûVƒD–È˜ÏØúaE0r•¶’Ã°ÝÆ³…¸¨3ÛŒ·�©?¥F.l²:ħ(Ru1 â ’§m@˜Û€J¶S#ñÔµ9FÌ×ì¿�: ²?ÕÔàµ/ø%zÛVžFÆË\Eo£”U&Ížt{I³ªo0ø‹�Ò†³*Õü§ ¹É 脚x¬Ç–��ÆÃ ;šÔ(£Ã¨±O'ô¥îõË_i@kÅ|ë‡-,z§|1�áFòÜna\‹ûî[Zª1ó˜üÆMG&5kÌ"­î7º‹ö= êcº¤xox‡õˆq…2ÖüRjšt®Þ¬—|Ú¦VcsCÍ+ ɯVŸì0É.·…"[ei*rçk.€$øRõÓ¨&„½¤…hÓÚî.Ój„¶È@½cNJ®®ï6‚­-^`ÌDЊÁ8¡†Å~:ü†G§[8xv0ÀvàJ軟2Oá‹Æe&YG÷ÞÔ—Ìå«RîŽoÎGÛ(N\Λ+ÕEö�8ÕÓ²}°9œÛ=ÛÍþEÛÁBT'„¹ûÖ΃ߘM™éÔ 0)a}N|h{­ýªæÈh™ôH¸ß†NJOï¾RÍÖá,�i¼%ì¸p¶ö•Im‰fhÒj?|Á�28£Ã%~F+])†2'xXîOêÁÛ}·¹…Rµk¿Nâ€`a˜Ë¤á¶fô\+‚1šÑ�“®/Š£ F•§Išú‡‰®úÄI“¼¶�%»G}8’H8 ú«×Ѻª¯¼¸ß8KBÔl<ì ?á*j²€^Q‘”KŽ5YV)bV#F^ßÂöval…iñ+Э§á�x1!:)›‘ÈdH³¬/nŠ;Dq-0q¾�/ãͤ®JP‚±U:& M 7¬ñFQþâdï“�ŸÝ.è;Á-Wã` Ѹ¥ÈOØ?„™‰âI�¾kø-'2ÌËà[juž?š<¹TR÷¼5r� EuJkÏ®XÕáH'ÖàÝÍ ì‹/.Å@”Ô¼^�D§ÄƒsUÉ|BžšŽU(ëܽOå5%}ˆ—×Õ¢È7óÅ€ÒüÚ© ¹[¼@6%Tÿ…)ÑÓØ¥é卿×ÃN{I¾—ŸƒEïáG>¥ Z^ˆ?¥|Â~¥‡ø<ÊÏf„þŽFÌ^�@f8õCÂyv³ú­š(z¹Psk‹kF÷µtXPÙý&>Š¡™"‡þq6Ë$;sz ³{¨wƒ6 èBôSKØŠ¶cÇÀrøzVUŠ5 ¡±…Êô§«²ý°îŸŽ±Š¿}ɧÈü¯€ŸW¼ü¸ŽPoÚåðXYNÓÖ ÝÜÒnW—R¨ëvø£•j8x«À¨Š ëe/�ºÒ-€Þ5R_ pšÀ9bÄÒf dOÒe iÀ[k×IáÀ››R<û\'µ4z¥8’NHèa:%xµ`lß"ÚþlRM#.êl½àd§$p 4¸ü-b\bŠš‡Cc±ü†#f׆Yn�·‰ÒR¯ßeT#UËÙ˜N*.2ƒ |QK]×E*öz Eÿ†ñ«”¸³QR£ÇED@¾§¬#…ùŸùß´½ÀXüò—ƒêžMë¬�È�f¦½ˆgZ¦3ǯmä,ßlSõµ êú…vèYÓØ^„¥MÐÙÈŠú*;–šHñƒù‚²5è¬mÔ™©&JwMúÒX$K¢¯(K±@ji€Vâ$2j ÊêrÊͰVS¸ÇC‚ ¯ÂÜ€üùŽœ]“¯¬#]ÝÒÅ�Wa¨—@V&É}‰ÄsÕùùýˆJþÖ`kðj6*à�E %nóÙ `‚ðÒž�8oLQ™C«hƒ~H îX5†jÀ 1h+ q·¼ˆàw$~nÁ)õÀ\”ºÄ,)?º$UÍóƒcÔ§�ÇJXyñµ�ä¹—9¾V·XS-¨Ø)•øÑ¨Þ�ðª;€˜Òè™)îKœyXåzñôÅžÀÝãqª<�gq’ðv'¨¬°Gý&ºÙ)ÿ—]xJ@0åJ¤��×kU ®e£Äm—ùÖ¥Šaã5þ+e7ðPÇ›XPp¨ÂÞȰ=¨*!0Ø[Hk ÏjŠåº¡{Vžîë©ÃÞMò#o7‚'vš/¨«õk_¾îšÂÑØØšËqü;Tоi¤Ý¶¯¤Ø\§˜0Öb8ÂØ·q„¨-Ü'Z9µš-œýíÙ{éï%ŠÕèÞ\i  UBÙë¹›Ûë FSiŽ ¤ ��»Þ… ¸ÞÚÑVщAÂ� $…½‡£kN_C ö’ü¢çãOßµê'�{hHÒ Ã©umBÞrÂÈÃç7S2Lú÷u5¿�zÔ�?íõÑž°Œ–©ÀÝ_r#[GözµÒ¢‘ûÑc}ëàØv³Úä¼@¬ÂÄ †Œ%Ò¸O˜!¡b˳þ^géïÆŠÿñ[œÉ7ïÝ÷=âñ$ðaö€S ÷n€Poˆ0‚.I!õðFtùhð_]5Íå;(=ÀkFSâq¡7°oe»ÿE³ˆ�±ôÖï’*S«Nî%ÕrʹÏ_¥³:‹Ë¯ïm†R©Ò ÜÒ[IÅ-B‹w„MÐQFu)|€¨µTFP4œ¬øm;ÏU ·w_'7²Ôˆ6åÖ±ï¼ñÜ×_MŠmhi©â]kÁÝŽ×q ð e®5¥Wkª¸c�Ië¬OvÛ¨‹WuÓzË26ë`±�6-~~”.«pÀχÎÉÄ�ÎõÃ�£ö*‘e*c¡Ù‰ã>5fÓŒà—~G–ïŒÒcèö\[+ô*ŽàÌK%½�£SA哈"R'Eã”쎯¨ô•†Ã.¼¡bù¿©$ˆOTÇû0®@Š­%:Ø€\·‘,ø0¹²£¿‡ —[]lëBm‚fÉÒbX°n:¶ü<ž#µ�É l±ÑãͬTu-TcÚ)þb·Ó1QeJ…B®%RNˆÆ8‰ŸA»}58K�rpZ#o=XYd¡-3¥uÈæòîš<"¯9»ÜÑï®jÅÇM+ª‰äê`ôÞQ‘¯[è[è-�“‡Ï~«‹¯Q£¶:iÌÖº‘¨+6Ã,¿]cüê �vÙ±¦þÖ$küvÛ <ãðs çÙÊ�À•Ãǘ!XÕ—Ñ~^[ïûê³õR×fÙ!?_G\z$Ÿ‚”ø4¤¤¡"¡�_“«òZC:PËø6lJ’‘a`š¨I“»ókÝ; ÌÆ‚¶Ú²L襓¹-K—„8LïäPO9nWNP©ÔI>/�ò¢%¯.š&ýH\­ÚÖÆÁÜÆë±¦™ÁÇ“¿ÆÂÓ a‘�Îlð=¹HÔ.ˆžNö†Ÿ¦å f|%»kPãñWt¡D’9êIp 1VO†#Ž.ò�ÔÕ[´PmPq”Jd- "èXZp�ëúAï¬Ü'Ñu/KužÃ=�‹ÑM¢q†G„†I+²½sÀÿ-�xKøt�ú¹ï¤$»À=\æ“xɵÁFçÉSc”ìè|0U S?œZŠcáØ ”�xÃ�Ù^i®Ñ%×´ŽÇâTî¶Ì:':74³7ð}{JÙ-ƒY[ƒ‘`V—ä8óÀ;ã.7p¹Â×z$w«¡Ô)DÃnXÿþàxx š«º¥J0¥5“\:E?J¬„p«%Б4 ïié4´oQ@[ˆÐºQ-1M­ÖÕí)H[¡„;g�D4y¡l¯s—¢/ q©§õ¼Œqû±Óö:мÿ_[߆Vø”õG~nÚj;r‹ý¸ÇY�hHôæÉqZW ¬FβæÍš¼gAܤ×lދЃIìb‹NÓlC¸ÓñdGSn¶nJ²‰ æ_—ñJ—F!m09%û“ùËË€ X0e`Äf¬å"¿9 ˜9?(vüÙJS¯PËŸ¡· ˜y.9QþAï¬w¶í%õcÙª¶õÁêÑÚ·=«·ƹwͶÑ'�k¥ÄJ�.4×è{U¾eI¸ `�søéƒô5]ä¹?ÃéC-WÉS ÞJ “0²h~ÙκÐ:ÜT;UÔ·X… Zuz~Ÿ}&%âʤˆæåÄ*¬&`• ¨$ìµ®ìP#Œ6a.áÃݦ^œÝm2*¨eFjÈÛ4&XF„x²ÚñfsU ¢@F(YŽjŠêÞ´’è«¶–Øn’Š2n×§;ûQ];r´–Hýõ›8eNþöûuMµï‡XBeù;„ßÿntC@¯;Œ™.Š�³¼S%˹M’.)Éx,ßb.N “ÜX<øý}RðçAý^à­û'gÍ×ï 2ñ K Nqiû/íÁ X>Š©ùÆÏuÔµAì³F'xx • ~rŸåcý÷ö»¾CsTô®D™ÿ]D¯ò^2D2BAÄã/{œí«¬ÂQ$~bc´Àè\fN±þÇAS¦CTäYŠfÓMQÔ8@„ÐUF#~šñ—»™¢aÂVJð[z£3ƒiëöË>fÚyj¦êßm>�!<$µ*k¾Ä͇ W±UŸ Ú²­®ìlZG*�)Ç,‹ê�¢DÑ>R�\v†»"* ó W,@#ÛV�ù[Ó"‘yd~x¡Ã‹×£�¡£ññaôìiôêeôæí¾8y;î.�u®¶^Œ¸5¯&Aä WC;Ä/¾Æ�æl™—¤›•é�´ca~¤$ùG  ?…'ôÞ—´Ôü$Y׺_…Þê@ôÈR`y½lÿ½EµÇ¬‚Ø{õ}ïÕË~ôŠcùF�Åïy»Î�@i%ÏÔŽ«o]v9|ªÜK¯ûdz;3äÄ}þJÇÕSû­ÑöÐG“›FÉ^+îÉ›F¤üyö ÉÖµ²_Ìn¢®Éº@f�e>'aÛV,óëxé\ŒÎlf²¹ãk¥�©ðã€aߌÂöEY<¼êîü¸–\Jû9Ø Ö;®üÃï$þ»Qò³÷yÁxLõïÆ…ÿíõ1÷z¯ÇA¯œa´ÉÊA¯/²¿-e÷pQ¯tM—Þ|¸�Úâ½¾µÀörb++óå»^t¾ˆKõÚ5˜üÌöÐÍ~â%è[d£K!ÝÀŽç7@kŽ0Ú̪"ž—32KÚ~´€F�gƈ'ÉQ^¬:uAI§õ¸~è,˜r@脼�kž£Rb´F'®ôÔ·ã~øØ7mòÚ�|¢`ÞK‚é »ÒgeGðAKî-\ô’Ù¹ÖËÍÜo%;§_$2£Å¾³«¥^’€êlx7üÕ æ_޵säËom,ÿòk™Êw³\ÿv”ÛR¤�©” ‰ýTê¡Ñ”#§~b³b¨hW2m�ÊS"xu[þ}yTäw ¸Ûñ_O¤b‡Ëm-^Ž ž3àÚxôα+8…ª®ÊZ„��ß¹Ž6åÍðqŸÓ*·-êpw !sÒ¨˜ØíðH(’J¿w¿Ä�tá˜þ3õ:Fã½JÐ)+)«èËÉ{ÌžF]¥øb,R¼ï¸­»c‹;5ÀéŽø�óV`<Ž‘aµ…—-½ú^øSì^ ®|ŒìÂvvHÑbK´¿Tmë8ƒï{_$QÅH;¦‡pdÕv{;�J ÝipYìöÍåi½u�†ôb†³†/–¼¤b¿ïÝŠ$ìº#Øa{}¢ì©�²T½kÐÌ$)?°sÎu.cÄf_5µD5'ÇŽ´ÃÏX7I%'þ ¦CSw¨´ro,ÿ‹ôzLÁT&!";ë[2Rm„Vº)ŠÛÑ<à’:"Þ`=Ö⥊xßRŒÄ‡¦Ñy…¼N�º’ÈÓŽêú¼(ªl§Émð7•p6âÜÎð× ܱÌŒ nK2ºfbd<®¸‚‚nOAF*�;TÈ‚M*9÷0I¯noÔ|`±d¤Í'›²xR.`ižÄŸ¨È_ Ò€ï¢a¹ v†� JÛÐ]»�¤g&b@úeïŽ2fña¸§ôâ:@¢kÃ]EB:`&%`Cï6�§U�nµ[ OÏSGbG¦nŽ<$öÜèD2ÂdWÓEÉÛ'ÇÄÞØÚº?|ýÖÅÉê€]™­>+²}‘ï-ÐM¼ å7²pêàÏ?aŒ/ð;-Ø~‰¦„�Î�­SNÏJ– LèõÂÜur‘³2*s×BÙ�¾˜"vþšov=ûá’8(Í|t $€ Ûð†ÿšy¥{°¬ÍR r£ŸqH/ùÔŒh‰—†7V·zoiƒÃZ6]I�¾µ8/üqóGA�ÓV@1Ô ç|CÁáÅ´u…9÷.EûÍ$¡Ãd5VIÈ}yˆ^T’#´ 5á’™[û€q°.2Ž¡… ýy¨yâ¸kDî:} gt „-Lw¯�#æÎa«*9&Ï GïñA=‹ðq·LkÕ=ê½ñ<á%€¦Ô"É}D’e†„‡}>ˆ¡š¯xy(ÀrÇ’ ™j �«CtݹÈüù¦ÿDµJ{åbhëíàÔõqª¾ œ4^��©1¡º6º‚…$¥�¤Ü&nú/}¦> ºgÞµ¶ÆJ¦�"Ç–ägÑbU‡FbÅhBó¦~×{Ú-©öú;ÙlßiÍ=P|“}Y@äèØ¾¾´þx|^£bPïêhÙࢢ ^¶Ž�œZ^@ãPUäKb‹¶Ï�FúºœJ ©R%E*ñ%¥` ƒcÑq(zPßÑn=*EÒýŽKp%ªTA„ŒÙÞ�âV«¸¸æª�Ò­¾š(㛊C�ä ŸDsuwCtÜ™»ˆô€ë›ênƒ7•p©Æ2Œð,žY®¶–¥(ò—6L> sμË5cUZWË'á €hŠ#q™0=·ìK�Ð̺ôI¶k¼6ã5@Þ^P¡1�X$¸BX†LWKÏ ;fÁ²6Š£Ÿa�ŠKzC¦Írf…£ìÝO™âj9K®tÊyÇÔ�0¤FEãÚ ¬l@:�Ï4ÔV†õ^ÛjƒÝ˜N:xÚ0U�8pÏŽÄ¡8¬œ’ÕôšâïL*pæ‹ø6ÖSS×¼_w7)#%“d– ™­M�lñTŒ&¼cêw´À,6ÑJo@Þ ƒ<`×ù_ʤ#WÉ4¢Ð½ÏûìßÒ3½o<�?Gó%úPïÄ´ôž]ärÞ' Ýñìs×¶EÀ.íNˆtUÊÆ#ùË®ZÛMyáÍÔÂî¶`“æj<`Ì�¼¿váøZ�8ýð€˜X©|Þ#M¬�»GÕNãʬSæÒtY¼dËO;8µVYbŽoÄú}ö Y·2i´¶ãq …h$¾]’V_Ák)eïº=J5rüKžþEC£^Pµb*ï΄5V*ß}b,}‹Qc� ¨Š ÿ*±L5(Rx!éµnkåœþŽã/ѧ KÎ£ÉæƒÛ{n Ø_Í©rÑ=AKÓ$Ô2�ïFvÙúQ�B«™'ãm9™“ßuÍÉ—™nu€ã¹Vj½B³†Ã™®Ð¬‚�Ð}ÂS‚Ë}¢nb�˜ÅŽwLö´}ÔK*Ö—E—T²Óér™ÏOà*^îÀwAü Êjã ͬ•@•¥î¬)'u|Ëd–*í|z„Ùì‘)¬TSïpòdP+.ð(º•¼O¾�÷ Žg‰Q÷—-)¹îû÷8q KFI’âÃñËt�j¨P`µÌ¸´ οÅ€ÍLÅ;_¬;3'+Çü�%B×�ª1Çæ •”TRÌ­/›åz†mDñJ‘TŠà|èrx}Ž{bìf×YçŠ�%Eù"SÑ™Ú$`ÛÐìbƒíµøÄ«ÏÜÞX”ùoôV*æÐðIC&'‰�2`ÀõA Ï‘ÄÌRÍôIXd} qÆq½I= vp =—쉌~¢È¾Ž~ è�etï~]œ½;{Õ6έÁ]C‘]û@ruÂùds�`’Uõ(«zsq|y<ÞME‘yÁ"D¤%üý0:.+êÝûX±^‘l "n0ƒµæ6Æ#覘ú½Ô‘aâ·¤×L2»²ààÇG/žF´÷I€x\/Qˆó¾>9¼ðŽÿÍK¢E¼YW%›“–Ê^/ÙSkC¢G¿o%Ä>ë}ÞÁsÏÚÎ¥ŠöáÁ �m4sëÅÏ¿ýbïùy}|öáðxì}ñòb®ÌaÉttË,Ñ'Ì6Ý4‘Œ{½½ÌûøìèmˆG¾|÷JŽñ nˆ”*P÷S XVÕ.öo‰ÉÔ‹c9¬^ÁŸ b,AÊ"Ô±¾ÖTôn‡ä+ûÑOy¾ZÆýè Ø¬ã%1þœm8’œ#›ù€": D+¹w3çX,þ0:2#d|6¨ð°©d/ ,eªÆT¬·ÔœcЮ¤Q°æjÂU ¡u¡’͇íüœQ¶›‹oðˆ¼Nv1Ôa¤ù~ ¯Úc½è)úùñrBŒ°$m£„y‰SFòS7ìlŽfÌl_÷…Óõ@¤(;‰j`­*n¸úmíJ› ·:”kuTG¢Ýevc`}[…hlÓ¬ª‹Èã(X¯ˆ^ ­…‘PpêÖŠhÅÝ¥¾GW¦ÞÌh1³Wh0Njœ>E.šˆ ­L´Y9f>Dl9±ªÙ˜ºÖh/V⑚Úà®Ö³œwDýµ†êÖ \Gt1:Úv\�yNñ)„~F>_ÕVS›ž˜2iQH�d9¤U¥lk¯[“äZÉCë¼ ¤ ^õ2FSÝ/ýÍ-¤Öξq#ìä¹óŒ”$[\ªÉJ/¨aQÍ.dòÆú_r‘eåZüu{t‡˜;�kHª;èiŦRƒ£{ð>¿Ž'›e\0š®Ž §0n¤”B8Œ7­ßÝ�$ëƒ6«>“¼bF�>ÿÍ ö�°{áÔr*1AJcÛKíg@vņ">'Œ}ÚPËÃCƒa�IIÝd5ÛÌñpªL!$ÛfL¯vµô�í]¡2¶�om’q‚µ¤óp¥”1{7D”àuè@´1­ºŽÌÂàré]o:zôY¡œe¼™TÆu"‚ŸnY¸-Z¹1SÁÕ\¨M�y¥ÌMÆÎü‰Õ4P¼ì²âöÄHÞubÞã Ž‘ÔRåØ@¶cªÐÀr¦Q-\�£a¿äAÁI@Ìß›²3kº€Ñ;Üf V :ÖþyWtG|Dë HËk8={Ñ¢ªÖåÞ“'7‹Õ´ªÏñj½ÄÀ‡Õ“¶5ð†Bü׿r¶¤šæuDµ,`³Q3²¿ËºSGo'Šâ©� np–)lu}8×/ÓRCæáªÍÿ!£ JP·\Êd 4¹Ô”$píNÃã¥- }:­¬C¬iÇÙL é2;¶-k¦:­8kÉštÏvYXiälFábàfîôd]€þ"ÔÀY,Q…]û´Ú¦,+ë(» °Ì·~ÜKw†!eCíeßz�“|J«x fñfÙï€/°Ã¾¥s�€ú°•ÆkÛ’ÒŒ°em�'¾k€èXJEQh³h„0zeœ¾ÌÛ&öæxx¸]á¾–~‚GÏC#èMd¸!\Ÿ +Ôxö‹øf©ÑtÌ垀•²Vt„¡8£�ÅŽvìöè¹Ïo! òÛ /hI~`¿uƒÇr–ùË 4f¿K^çäÎÈÒÊ�Ž&–HdâK:éÒݾ$…6ç[ˆôíºátvu ¿Î³„è=� =O<EArø8Ö2zt|0~I*…6OX6xG”¹fÕºŽsZaíÐGÊÁ™'hO µ,a)2¦²w$¬®êäv|1 l]å}pž 0€)2Œ~Î(ÌÿFM¯uÉ<-Å0âeºÐEŒ5‹]í¿°µÿDm(ß5À o µíþ§îN�¥âš]Yž`F'"<ÆsÊ3Åe¶•ƒQ6+b.©ˆ–%ùIcrmRGcó:¥$ÚTNMXí,460�ŠÖ ¶cé@D•´kŠLÚJEéµ¾’gb—]MÒ¬¶Ÿ�N¨º.cãM�#Ü�.^ž Îks¼„#½Ô΄�"m])ìÞ]|¶„–3B/«ƒü“šæ• üµ‹Ó\#Ý#¾ ÆaЛ|cR­a=æû½ôÁÊIÇìfÕú0«£Ëó‡Ï(ÐÈ ^‹0ˆzйö"ŸF³Ô¤½¥Nà>¾òë šàØ|Þyt€€È“½ªÖ/épR€‚¼ÂfÝAxÜЄmÀ1½ËÒσWÅf½Öb«¶"�Oqi„èˆâRã­ù9×H_a0÷œ…Á!¿9a@•oÔp…‡k‡CÉa·¢ŸõZG{‚Ým�£J¿u™-Ëo±ÎÆ|d~G6»m×mZuµÜ`yÇhä—E<›¥S8ƒFD¡iÕ™&ŽeµMk�‹Ýµe±~ˆRèÅJä#_¿—Ô1 %o¤l·ó^Õ}0À2…þ6ÛD¡Àz›t"Ÿ¸ùp d‡eË\ë¨ß­–,c`/rîô$윉]/÷¦í<äK¨M¿Ú‘2¯£ñxªÚâ>Œ\QE˜Sc6mZçþúŒÚ‘Ò¦ïŒyÛž-΋»­ ÖFñFkµô¸»á»^³œ+³¥�å7ÙÕºÈ?à¯4ØÖâ½Q2?´¥Ë—F´d)þœãš(“Ìó9ƒ�ЦJ¸]GKÄ­ÅžNãÏûg­V±óÒ´=83R.K ™Z^­w—I>r–^@´½#aÓZ®O×ÛFbiô'ÊÛ(é2žÅí£(ûSü)Óû 2²`¤_&IcÔ®D¡AÛ²{;¦ZYk‰CqÑ N4¦ðÈÒÙ© •YU–œ,nûwÇO0GÎo ”±Š3Œ‰©Ý”ûƒ¢q$>Ã:�.¼Q’ge4“°Ú¹¸‚mQª{ƒ¬å{/ÓDõÉ!‡Þ¥2Êê‘ôE$@óiÏ×Ú#ùAØt�â\ÉÌQ:ë²Ò®ªõЬÆä_Äl^·õ8܃ìŒÛØ�î†?ŽŸ¾Fc £$;Ð0Ãä»îËë' Þ^õD:´´¬J-MŸár¼‡?ÚÂ�q6a$<ÇVÿÃÓèô%¹ÙþFò…úû& o㎜Ì9ä'')ÐlG�¼DÕÚ¢Ð:]<;…ÌsûpܼéMÐKÊ×VöC\Vú öµ¤‰áøÒ+P…sÙ»fÈ Õ–ËµÓB ªIAÝF�žqbî�¿ÿýóß?æX‚YA2D7Má¡[#ùïRÉ€»tß‹ú|h<\r“=‰#C¼&Û,—ÀmѸ_UéÄ ' »²Wü¸2›­«»c¥¿ò ¾m#Mý¬Ž¦™(Á1}„q�)ë¢HWÔ•WÏ¥é\K¥pô‚ÒlœB~&»”qÃ`ÉiP¬�VlDZ]’3ÃWbÕ#ì#VlOv‡ $péœýKÄÉøìs?ËÖ‰€"¼Cü]×ïÁs4mvê2zè‚ø~ן@€‡·¬Ù£äy:5ªj kn,¹Rðâ«STr�ÎÚzä¥<ø¶øë†«ïù îZ�ú‘<*ÉÞ¸ß#¸@ðh34•†QZªÖ£I£u ¬ºÔ $ˆ�é Îg¹˜äˆ°c!Ný½uÜÎP]Yø«3ytQ•Ã嬛¢Qdc x™Rþi¡Oò£Ã“£:*Qdÿ×ùJ¡��«sb!“ލÝ,sžB%’>®½]Z¤•ô ¡pÁyÓ@×ÎÀA=®Uz<(ûkÎîÊh8â¨,¢5.s;V…ãK)lHÐ�yE‚’ÇQÿC#ÃWz€Ø^}÷¬ëÓµÈáÂÝP©û>­Î–ë4;¦ªÄʵ|”Õ}9%^w‘*ß­±ŒPI‹i¿§îSç÷úæjWü¶—ü¨Zw¯w-ð¬7pÍ̪ukò¢•á@Ú…4¤EQV(*ÖŠL=°c9žÝƒz>ÒGQˆ°=X‰1uš5˜_6ñ¿-’ ]~Õ;rC�m�‡€’®�ìJ£Ê U´*dê™:õG[—=Æ«e¾´×urð�î'KÌjØåî`çŽèÈ\îÄ8œ*B˜Nº�eɉ8nØrä‘Õ§¿.=Ãe|Ø»«¹„+k±Øèê^FmÄþ’&ý#yôj½Xc"ÊjmØÈÏ‘s Ãsd¯l!,H‰?R±ëŒ03¨Ì­(3eG(Ö©Y¥ZN”ûží(êpä×瑞3‘Üiä Ù‡#¶Yñôï§ëM7ß}…™e8•ýów (}Yà—®L šˆ¸1›$´6û1ñïZQÒQ™gœ¾5çÄ鹓`<"ÖÒùÂ+¨äôsš?`ÉŽŸ¼ýU–¬Ñϯ¸dnÏœK}ãµ%ðXìWtQè}{ü²¾Ká®|M~Ÿ9&�áRÃê·mjö…'pÕxˆˆ'Ú©àð>F€7ŠÛƒÎãÌÒˆ¸6¼¾–’Økc¹$ã^¢…Xy‰ç4ÏâJÊr¿ÍV˜î”÷”“?i�ºé\Œs P¼î´»Î1ÇÐ@)),Øâ�Ë*žV´ëý]íyªícp( Þ�>ä´Dá—âÜAEÞ»�«ªH'›àþ¸U ÓYg“�êöšå½}F;ÕíZ骥ְÓ*Wtþw9ªQpÍ )HMAeH‰iV×xM6’I>´c¸LEË R†ãµr×WÀî¬ìQ˺GÆ'–¨9>pE‘õQYå˜@sÃe…ƒ"*ÃÕ,nÚsÄV?�}¼CÜÍAª…&„ƒh8(Cfj'‡€r:81S�˜Ô.ƒÆÎLn¥¸6¿~ÒÓàÝÅ {<ôkÜA¦Ó4ß”W:Ä|—ñŽ�¥àì–%ÕÛ°u˜¨¼˜Ï»ßWëÇé$_¦ÕÕ§ ³uŒQ&@–x½ÊNkpï\y’BLi6�0�4x£‹<ʬ&ŠñжUXô‹²ï7MX9)ýTaÃt¼Ÿ¡yff¢4ƒ|SapM²Ã Þ£‘Á"Å4öÌ��î¯2ƒÚ3ddœ]aqac‰ì>å|Ù 7Wëeüµ‡åZ >õÐàWM¶äÔ/‘Ák£4Ú6ÀqW½‚Ú¢u/·TÔ‚NΞ[ý�á‚«—$zn2 HWK”éz! Úo¨hj=Ž1Vo³Á�‚ÏÉ€ý§0A Š'IJ9&»ÆŸ0ã+ŸDÍK@j’¸L Oá�fÒòøQÇÕž¸~_Íû:§Nã7¬Ú�ݧ¼ ¤cg=%§Á71w6c5ýÊœ¨yže_¹y/Õ<¥ùtî§4Õ‘2­ƒî›Çqáã³äÄ4ú3àè|6_r­í¶‹‘•þ@J€«#P$ �ºs }«B_ÄD×X%ñ�G¹üMޝÝû¯q`õÄx\Ë_çˆÚìUP¶5é]SzʃN­žÒîg¶üUÏéÖñ½PÆŸÚÅx¯åÝEÔQ)”±™NáÚC-µÎÝ„OX.×ÒæInàï!j ‰¯Ú»ŸoÒ$A¡…E $Ñ ö %5ÄWá�¾Tn ºá¼î¤Ôž©æ{âšK!Y �Òõc9³ªmîZ Í•p%]p×-ý]�ÝJ°Ù«Œ<¬IÌúôtÙmg§0Ù¨¹ö1ùÁöOÎ8' ‹œ’5Œ^™gÞŸáwr†d¼„¸H¿»Ëh ¤¡�À É'‘¹x­a8„-ËTÌw«ª1âu¥›˜kØ©Ýîë×ib³8jÅWe³ÀÊ]æûùú–Ñ[½}áCªŽ&6õö(ƾø(%c@§ÇyÀ6\c<�ˆ_�/€S��÷løÃðùðE_þxúäüþÛûþÛ{ÿí½€ÿööžü¸ýËÞ“¤;Ái‚ b'Hï`á‡×è`„¼úzÀÉã:„Îó†˜k¤L+‡.q"eL«óXáq¸tšb©)‡×¶œK0©PRn_Á¯‡·{g´=Dß1¬ T!ÜEjFó~>ÑÉTbD!i.Û:|�"'aWéü0õ£¦ì·O¼}~èš›À0žd3þc'B¤gwºªÞZêÞâÔò�©´Ãb„ÿð y;¶R§QW]ñ©u”q8Ò¡å%/Tm~'y?˜²»×#ájÇ9\°:ùŠt­»èî!aˆÊp7Ùº€Yc¾�@·I×”–Žz©kðÙ¢™ãÙüÏŒ„íq\ŽCl½Göø@\ þ¢¢”ü�¢ØMæ¿fq`ä=Z‘X–y¥ <-ê²ò‡óÑ�ƒËË ËóKT—D¶Ú´×î*ä1]Þ‘½*Õá]�×v±Jè¨Ð7ªw[%þ›ó¥)xÛšáwhç˜Ö|<Ë«·¡EÇ? ±Ÿ¾ácÌYä�á/\ʘ¥è΀w”0Âéâ¥7ÆíˆbN²Û¾>�FÎÛå—3ä`ÂMyÀæ»´t—¦î`MråxA’{•"ü^c�.<Þ{¶ð–@~†kÒ{áÿñýøCà×øç‰¿-Þf½?øüçêó¾aô'TÁ*Wx'µLDž{!OfmÓ’gpLÒô‹©Ï-ó•çþ ÏYNM8½Á,&ùEã ã)íh2±,üöçM©Ý~–·T8¦:DÑšP èFâGÍ98aK—¯eœÕÖk“^RgßTÕrŸl‘;Y1Òè‡ífçèn½FÿötÅ×ã� Ò`sêÄI—ãí�¹y±ÿ& ¤É÷=�&hœWü�ŽzÝÓÜcyæ­8ü õÏ¢Á‘I‚vcs;q/a\. êvÓé2™Æ…w÷=]ðF04²´äÕy±žàC%Ue&{ÔúÒáÖð�[î|‰òcó+ Ò³Û®ãjá=%o£ô$#¦ž7�„å·ÈlHšM—¿@M%cè8�úmês°)e±ÒsКèšÅÇFW\ð8ãŠv àþ}/½䬼AáÎÒϾG&d-¬P ¡#4 <DZ­ü–«q )BŒ1æ-¤ÆE‡‰Ñhºê!Z€*n¯Ú^ðW|"r^Ã�°¬�w覅~¥º²{ƒ%‹÷Xþ³ƒ¸pW¨ÙÓ“x�¢›$§ÜA¨ÁÖ…ÀeÈ»ZY ¸Ö³´X”ߦä(O¤ÃqmÊ5¸=$’±š#!åÈÒhEa»G�5Qk5H2È]£0*Œd í¢¡IôCâúIþÆ WìĦ.âÊ Ý^½É@ O—¡º¿�òU ¯à]˜Ä&ÇÆ$ⱉ§ŒÊ5%HPELÈ6ãÙa+PößÍ©Ñ™ÉÆãb"àØ±ù»5yÚwéÀ;ÐÍ Õ÷Ô ‡­Tü�ö�¥çPiÙ©µ�4¯õ}tM»4ÈHü¶‚uXU¶¡½»8¼Y�5ä‹mT¶×míeb×uÀË?8RЧx*)~Ž/ Ô!ð±¹¢aÔBbÇxGqbú (‰6Ç4Âíi¨Kžü|…HºdO¥ˆóµÍKì6™È]«èvý„nþ›xbMëòŒZo#q7‰|¡õÆü³? þ_72åÛ«9p¶;N‹§?ÅN¤»4¦×L*éÈ$›Õ´0klF {Æ”:¶;‘Ó±îC¥èÕè[`š¡ –%s0,©¢'ü ŽG\F„ªf¬b$t ´'›� *z&@N�9ÿ¦A­¤ø­�ÿ®OŠ�^nå�Pöó\é…û§±ð¿»±P0µÊs»Î_Q�âl]qßjieèÓYÃs^[L é¯â3'ÏÓ÷3Ôµ 5~e2sâ)" ŒÒ\#!žüYtÖȳR0öªÅZ#±G”š×£bÄ”ë@±Ð!ÿ%XWÅ&ƒVÞó—j¡[ ?%`޶�NMD{Ig²š³§‘65dzw2<ú”�Ƴ§×öúîØ¸ìG¿KóEôèÙÓ’°gžý°xl¯oÇߣðY ›Tê e¥Y­ÿÛ¢z§˜.„p�:Qšm¼Kz„ÌT)MŸí¶³Lç'ó5«aÈžB¬þâ/ªôö_mö÷3AcïJýÉ´ÇçåÁ�ÝÍaâl~‚GTZ¸Î«l#ºÜ;¾÷OßÃoé{ðGeŸÿƒÜéz—fÇçÌß΀=À½uý+ú5þ»ZÆÿï°wð½ÿ¾ã¯t\�…cKd~s[g3ÛÞ¼/t<”<´“„QG¤<ÒÿQHÊOŸ>ÛK&ÜÛ{òü¤Ãi¾VXâeK2ÀW˜ÙƒÖ€ÒQi½ë N§Ý3Šúî�ƒã´øn:ý_š­—¡¾÷èì|B;î?Ä¥ðO«ì?­²ÿ´Êþ㬲ÆVÐÚ‘_$þ:3¯Ž¦l1õv `Å™Áñ¹6CÊu€Ô\tqžÿ« ÅdƒÑFâ$¸“sÅyæÚ>|ìÀÃâãóO/ú¶üô£¹/é´²!cÝë÷`çßÔ½YÏ�‚½VÅiÚë aiá¥ù 4l,÷G!(¿ÍV5�^›ô”}D’lÖHC*S3ª»!YÌûa8z8� ÝÕ@ä�ª +;¹+dôLçâN邞dmÓÕǯͷ[й=œw'8KÒÀ©6sB¢O¡!ѱb Öqÿh½?×8zi¶ 0­xW­Sd€*4mDïxÉ�(¹£÷ß³Õ¾×~m0†£ó%àèÉã¬Ã %Bt‘ϰðgžq>îÄä`‹ ®ì¢ÞâO=Zƒ–­µ�'“ô€ÐHáÖð”ºò´ä»ƒ,2ɳ¬–Eê.MD¸ƒ£ÜDLÖdÜ\m¬¿]—²¦ã<ÛÓpfQÖӀŃ-[­¶¦Aøöe� ÿDE�¸Î=r�ÕóŸRXÉqGRW0oR¿qd8xÔb(7dhëwžzAU‰9íÑ÷‚B¨ÚP]„ÓaS,…Åâ°J¬¢×÷¹š‰fÆÕ`³s.ÅŠ%ʨÆ9'›J¥!�õ=Ê [ê§W�¼–ûðk?z�\?SÉùk¸6aÕ£Ñz½I,:‚­¹‰Ù�*ú°IÚÖZv¿¼“`ôaˆ—ãp×¹sf`&üh„8’šJß-Šç·^š2šUÀ°ó§{"Áÿ¬‹ܤ<Øõb=p@ÉŠlXݺ¼=N�ÃJQ~µˆ6Èg :9Â�pÉ0œÈëѾ!aEËÓÉ,GN�ïÈsüœmÕ·«ˆ¿Ž§×¥T€«‹çÂ4f›åÒª ëy7–6áÓ!, ¿òN~CâZ€­¬5|Ðö~Î ãå"7u±…K,YÎ V†õŠZ¾ª°½ú¶?S 5Šû™µ÷Àñ£¼ „ Å�ȸ¤w�Ê#šb·Ä¯é@MÇ­ÑiAõ›)™°c©¸CU¤°}Dxµçµ”ÑÎ0øð\ðÄÚ+§Û/'Æ_O;Çj� áEF‡ˆŽÈ‹sɆ*ÔzÃtÛÑ,·^ÉÒ¼nÌxüšXYåå´P;ц¡zЗÑEœ]§ ‘O%ÛV1‚F!ÌÔ#SÊíUžÏ—ê1YÆÒ‚ÁÅ|#_V°(0p¢ñLêö媮‰J /VàÉláÂV~Û‚ç5½ïóGjˆYŸýš:{šùöpgC Ø6éY|½Çè{½Þ/�¿ïyFŒ…6#ÖBqøÈÎêTë„ï'éüQàï<ñ]dÊß›¬‚¡h!N´DŒ´$f�T¿¤PpDëÈ‹H+¹knÉ%æhMF‡%Ë–ÈÕÇ‹x²„Ýc’^¨ —Äèñcèüß%_ž£‚a?¢�;´€:õ4ÒÕS…©m×ßçRtõ;\»EŠøø·FØ»WìWFþJ®ªü ø›ûûxŒ¿¦89�ké™VWI�X_#ö³kL;ôKûn­.¬ºèa°za°—‰ªªëM¤_I›æJIÝïuÀ+ãúò[)ü•µ¤Å‚Úµ,5»þšË Z±ô…/ŸÅé’·l·cÑL-–Œh ãua'Ù3Ćc#h6îš’¿#òÜš©Óýn]:–XºëÂ=¶*³{ÈX:�¾óït[pñ ^†wîêÿC£Ô„Y~Ãî³¾¥{.¹T>|ð+�«ê²‰¨Ï®±JÜ)·ºë¤µïK•.SJÕÅ,t�e«cgȰ1Åo�Ôê1˜¶n÷t˜f’�k—7ÁŽ×Ä+‘:õÐ,(“zOýqÙÖ–yˆ®�“¹û¤5îºt™F6šYp™×òju›ò-l—QöŽN_—�(¸dâêq=Ĥë`Z‰ìÛ»nõ•Îñp»o?#áo¿Ìîµ� >´Ó&Ó±û¼¸Š[Šé|´êâ�•V�*؇oG˜ ¼+¿³×äŒÜ,vÔH䯭®Êñîþ@»+-Õ‚ R™P )lŒ_ )J¬g„·_*CYQ1Fü¤Á1nú™Ë0VJéŠR­V0k`?•óåXÿh?Øò  Y‡áê7I=§Ègü lD±»Ç ­ Á=±™¿©!Þ„�ÆŽNN±ÀZZz�{ö°�&ä‘¥Gv[È— T¦;j…–l¯ýc'òón}rƒ]Fªë+acùi8n¯E”õ‰¼X”›"9�r¯e,ᡵ-»¥­ Hg­àÖ3F°æ1'ZD÷“}-¿³”s8| Y¦e( °SÒí•aàñ-*’W‚µrµÊ“˜ªŠRDMÈÛö1^ÐUáÃ�å$ó’x{ÙZ@²:~´Ý‹¨»UTæ”�ãJ­ŽòbÅáj÷£)©i^›!¡5>öñqÿÎ�ÄÙv>Öñ¹?ØcëÁó€Áp”iH´f ,̱s<…·gK¼ ° ×Ô‹8ƒ÷܉±\´(Í×&Eî=cØö~ø›Ý,ilwƒ5ÿ0hÊÿNP–âlêw£Æ“I¡D70wB綦 ‰æ¡ûܲ³»ìe×îqÅEåw¶7v½WxÃ݃dr`qÖƒ ö¥Ð|Ï£d?2Ðåä:Ê̯R3þ 9£p‡ìÝ Š›ØGìcî»aïëÛ·ùÈ»Á Ð.¸?SüÓ¯À[Cñ÷ÄÝ �£�€•¨gäç`cØäŸ³1¨²Óªí¯’ï÷ûÑaV1 �–3Š[ qÿºœßxô NkÔv6²!ë>#CÛ„Ñ'¯ÐßPîõäcD]óٰ۵vŠlû½)éC7¡É.B!„€”ˆô˜ìãØþø(²l‡åŠÐ�ÜЖíÖ¸ã¶ò#«0 é x34¶CGrÝåå‰hˆ™Ö[A^ŽåIrÔ<´Þ£`aÅ¥£qÌ ³�NYñÈñRe_H^[¤$üG ô,x)1ök)Ø.Õb–bOìÆ £ËšœxœO ÿ€¯zp© ª|@Šìâã&ï¿þ0ºøxx¸PœN)< ¸Â];D‡-&ä ¬5aFªÓ¼*6Àà¤Mè½x¡^7ÚÅÛóÀ�f·ÿ/6]¨¡w}8<�;WœºØeènwß2p~%òï»~ŠûdÍøÐ.ô[”Í¿Å}×ÐÚ“‡èZØ©EØ,‰�:†Õ?;ˆYâ(ƒ/ *gº|LÌÛ — vâmƒö‡–ˆíL¡ÏÓôxIí˜d§+à··­=½*o££›0}ê~ô&·u•ú�&vá{|ÊbÛƒÚ”tù*?XO¨QºæY)YOòXØGÖÚ ^ŸÁn¿M_÷ñum9Âv 7UNªÕd Á’Á¦âæC_«Iá ögê9‚y¢»�ΡÕ}=h�7jR2,c¨cÜØÝGç ë¾vdÈëu¤ÐÌ‹#àüá¶ÍvGlžÿº�övö�mnïà[÷ØÛûC6¸½ƒoÝ]·÷9*© bÁ;”©nCI å‰óe¤ñÎgƒO°“-Öö5ž©›�®ò9¨£²CY¥T­¥úPÔK.Ú«w“EU惣#†êŒÎaªµ~`êÒûÚ2|ª�ndˆ'<àÎ;�&Æ�ý‘ÆÁÀ�ãQ– 0¢-|ô@«qG2C³®Œ£§—çácÔ*‚é¦CþÚéj…äWi�\¸ÄýVoõ{lëC;MÒx¨ßC|ûVù‘Ä»RÇKrˆ›PÁFÇrÚ´Ó$æhnOã¸Àß>:©ža·F™™©ÁÖMYmÜyßN°¯»í¿e?Â]Ÿä×ñÒ×s«ºÉ$73®�ïDÝ(á^;+š�®vT~Ü7î¤"ê–¿Â Û…o.Æ'Ü»B»)†�®>`8¾ªjW¡~Ò»!yxQ!³�^X‚Þ,^–(—i«˜q�Mú¹ÈÁ÷Ê›´‚�£ÑM)1`r×u]u/WÚ¬´Ú)ÝAOë¥*¯’Û6ÀLÿ$·ºˆ×ëåí`�.Áéœã¯RA/'\eÕNÍ<«(ZÅ&^ 0/ëAZ#íÜΉ FsR7;‹ÒGZ×Ú/ú÷O÷(33Ú”fr5ij: ‘lfÑ…„Ø+ÿÃ(> šP>b^PœkëîþIx&ÌÙÛ'5p:fËçn]÷¾ß˜I÷èŸLÛ&¡�’êWþòxǽ=5e&M1‹m÷;™L8's Ìîþådáye ª,è}Áí`Zj¼Äêêç¬ÓädϦ•O5Þ‚Þ&BÝÚÖÂí.[Ì>�uÁÌ`�;‰��N½ñYµ4ú—Ÿ³ƒt«4*ŬÖ3±QޤãRöv—<Û¶‡DR®Héî‘K­BÚOâÿewñbé„´pN;ú€5†y�3®¸nbΨÄ…Ú®Ð%­âÏ銔5Ô(É·�b)ØqÁ…ej¸(jƒ)ß'X½Pªs‰Yp¸ã}è92®; —ÌZĶ»ó/_w[�éz²X­3�®.A&*81ă&_I:'n¬©‹_YÕfAg;ÇÑE…68_2‘RömjtaÕù§ƒâŸŠ_ÛA±ïÛäI“†×âªàRÓš ትÂ3á`íç‰z /ƒžÒ£Cÿá×`ØuˆLßéVµ·)mÎv¤4|‡KQ�L]Úqá¡Î:œ,ïÑÁÒ8>w°`/¯.FﺻŸ-ìÃ= p«Ÿ?Ø«BQOv«Œ0Eð|‚Cìð°¼ÿvïJM>¼]»Wœոµ^_W¿¢×%PEôÛÜ/�NE?ŒåƒùÌÃÜ/ÞßN}�·eçÿ ïK`g¾Á ó�½þ ̯â‹ù ü0ï¿ÕHvûZÿËÎèh“QðwùÉDf}•ÆŸöuT$96±€.Dƒ¸f8Ý‘e gת(A•À¬$5®ñDé’Çx›£.‡¹é’k«Š¿´»yÞ‡�MßæôÑEJ<žŸ-ñcGïÏûoöü˜°° ²íÛn~ Ñ¯êÚ9«l7¯�'ƒ¬ˆÕù)”RTªÈÂey úý3½‘ð0}•`;à_ À"é´Òõš;LŽìîTW~€gÉ®Èüï’Óì�¦Ñ¶wé/;º—~#×Ò¯íV¡õDÄûop)yºùíÜI¿Ö˪¾�U�op"muòðAîà÷ ú|v0µQÆÀÀµ®5,hÛ¼ñáæ4¿aËÀö«9G”`ýIÇ€Û6¼_Ã�Õ¯§ˆñòº~¸gvPG—¿ÊõUùn”Ï•×kTÚ[ýA§Æ×8¶üî ÛÕÅE­0Ïð>œÌ2²’YZàÛ›~ÂòÚŸö¦qã×EªkÞcðùûÎN±w_.ò›ì(-ü¹_u½ „å®È–\¦wêûÞ›—µõÍÕ-àbŒèMm1C�’„”Þ­�h–{÷˜d¨Ááî�a¬®žy£1 aŒ„)„ã…»¦s·ÔŒŸQf÷$�ÏBÝ€)Ð{½0ƒçX¨›�aŒ’îí¹ŸÙÙã–ÄÝÙGU䃃ø4<`ð ]‰‚z{áeLä®ÀÄ–\€E1¢M~�»øýÔ4Ƥ$DX¯Ì)Xbwdá�·§)‚esÉp9¯¹â@ʵà—lì°šÀä~*zC½½â¢ÙüüS¯”¬aˆ*Fƒ[.‘’CØ 4µRfÀ¦\¯ò²ˆg³tJyšFzïû¸Fs¡�Z÷·ÑÊÔ¾Œ«š0¼»úRÝÄ ãøðí@�„JÝàGÿé*榢Ë&Ê:Ťȑ‰6w’îá�•�•Ä ~ä°¡ý4 4ºå³Œ±ˆ –g o g«Ûþ[Ç~Ì@ÂÏ@@§“ ›ÒF£ïs¤÷%eµN6·gþŠ?^~¼ŒÞŒÞž!OÞE U|ôæòÝá ÖwæL°xZÍ[šã8›©kvîÈ�b�­Z‰òT‡lÍËA¼Dj^*9¸+¤s´Ú¶À.bv«°1îk ÂJRÅêZÄ‘ê£mM%£@B#K³µdVš™Óþ0Û©¹Ý¸HËëV>¦YÉ"¢UñbÙºçDð×8éØe¼¦Ñkíöìç7À.ÆqÖ sæ !®Â<Uj<Ñ ¹§@À9ö.‹ð²—£š/_ó ¬oÉRfûe·#–ß Ô�eýÁ yÁ;/ÐQ�ÖÍ–»î *¦`Î4_nVÙ¾–‹/^¾<;G¯�Þ�ƒÔ-�±´?Y˜¥–Ãb®&Œ ÂÓµre»sæjF9™ýÁF}žN°âI´„Úœ®V&*Éa™o’>béÁ¢å=ÍN¨Ñr¹�V¾Iî-ßJö‹F‰ í½B¼ßzyâÐ$\ÌqmíEÏXP6!_�Ÿ±]#�u¯1ü1Ö¸MæŠQTµÁþ¸1›Ù»ïHZe]]#Hɜ؎°ã;ö||N2gW¿˜�U=ür�Ë¢ e F�Äãâm¯AŒ½ BÝb�½0^bÀÏèŒõ÷ozºDU9-”?Ÿ U�é÷^ Ê�SIœÜ^IñŸðr˜@z=ø�H»Ô©1·#À¦£ä]…XÏp­mŠ5V² ?û´ûkk¿Ê’ÿkZîF±ÓF«òtH¶äÕÁgß­J®µXpÈ‘.JÒ²œp«ñ‚*g™5í={ºò»Ö 2zö4:-Iì±Ïü†y–3Ùñ¹^´>øÃ‹¨Îzï=ê÷TÈÃÏŸF’BO¶Žõ¹3Öö!8#øCëþ ß_�(è=®¯Õ†ØÇ-†��‡^Ñ�l�©n×m;uy»ÞíðE‡K2©)2ÙAC°À˜‡øm5ø1J´Ñ€&Ûv‚�¨t$ט¥Z9÷\ÐÖhœÞùUr¾P05.¢ªz{$“ÐÓ„ �îÝ3W:Ëñú }05˜LY‚º@]ÃÄÈÑ.´‰WüS[u§F‰ƒOy±ˆ‘&Ü[¥žö¢Z…ø)ûíÂÅ™ïv«‰/±°¾òÅÇþBOõ[뤾ÁàZ­âËgˆ¥¯¬šK™[eMé ü®“PɤÆR‰,ì¹®;´ŠÆÐ>>G×ü‚•]K®~Y¿ì²­üRã…)CÚ©UûÒ}…S#ßOJ[+uÞ‚ùÅâ¶<‰Zr1ã‡%W‚ÿa%U˘Ãö£‹k¤† ×%�dlÕ^(MBSÙw,¯Ô[Ž­)@Í«ÖS„µ©jÚA^Íš!�^yÉÐàM—“!aVœ• à‚V^쮄¿MÄ´ ~‘#~î’@²Y%"4bTÕ_ᣜ?„=¬âÏc23Ÿ¾4…”+ÅнXJa¸Øskœƒ®‡ñÝéœhbHìöCZ-ö�.¼l×][жdyð ÉÃî½�ùÁž¶³KÒþõÁµzáñ{÷í]fõó�@ðE¯¡N¹þ˜”‹a„î“CŽýPèvŸY^ãï,}/HJî´ÏNæ<.‹™F©á¡ía–`óãp™u·)<ŸÔ­ÇèÝ~PûúÕ^ O¨ãý‰¨BÓ™žéç#¤Zï!NU­/™¸» »¬#Ô\Œs?Ó:‘üf\0l'X§É 5ƒs£‰6P‰Mæñg{i&óH³]ßþ玷£]}Wš/"ÄÌ�Ü�Ü B2âÒyx]HÍanz\>ž„èS7‹¸êßkÐÙ[ ÞÕ^oLÿJdOÖ3 �µZ]ÞëJꚺ~1WtÊS �ëbà|BÅ®bþé#Èf=áܧ{†/õä€÷PÆCµ·­`cëÌõúXŠê&/ážÿªzŒnÉX–ýõr3‡Ýï�Ó¿ðÁä,è82FæÓ|Iù\÷¹G%Ô®à¤0~Üàø ‡0°SSh;Æ?®á5a�ù { mRUuø»§ Ñj•SDJ)¶h©5NeE»KïØ°Ç%üB ɽœ2‹Œ2r$yø"L$oaà ¢ÀßÍ?ލ€ÆÐª�ºn9=½ÔèÃ~ ׃|¬-ß[¥íèŠC3w�RüzdÕ¾*Õô*^¯ÕË^á6– Èt�еWŸ~ðj9ŽKGjÜ4Y¿Ì)r éÉ‹3¢.£O? _ø´ŽWW³j}…p¼í¥éõGbs§ÈM¢s37Š ÄG—纺‰¯z"`±¾"£^ZÝ^q$§»ÙOuþú<:–Ç£»›8›—ªE¶.QÍ©dÉ)I2d‡XKÄéD—î¨×öºÆÄ…1b Ä*÷<†C]-@‰¤�©+µô¼©Þû "¾G?ÊÔÉÃVVâÞn÷—åW%œ¯IÿP¨¼ŠÆãñáóÁþù»ÁK…0û%VI‚ø�ñLÿzxúîÉ›÷§uœP„•5@H¦eI_ðàJá�$À¢d†âÉçvvmDÂ7ŸÂ/¨›W˜Ù¤Täòö í–E¾¼ZÇ™ßirÌJù‹2Í’­c„y»‘}b÷¹ÓÁ9vª¡ÌM �ûþÏå Æ�\%±Z…0Ä;G€XRÕ-\ Ýçà€ú }HÍi~5�ý}§³ŒeKVTgíýupü •¨+ð¨^—ñJ¿x°¿Û§´Š I’�%ºpð¢N³C,i,…åÓåUi-„wQ/!´ÈÇË%yàØ H#\o$¾ò—êyØ ±«vµó0q˨Նàù†À­yB ]A 9•îÙ@à“۫8X÷­ I]Ò»ó•·êì Ĭ" ¦\ƒeDÌl~wÉžuíšÁøø§2RjŸg„`ìÄ�‘ç.ÓëJȧÀ»g«ÝÖ ˜Ñú žŽ9ïÃëÓèÏލw �ƒ‹„DÌkrÉHŒ^¼VcxIÉOjOg]œh¸5žtý#9¯® ¥ß7fa„"ÓãX2.„¡ðR£Ý“Œˆ %q`‹ÃèñÐÉU)E<©V””È1ßÿ¨g€7èÖȹ2ÑU®þƃlpÿ¨¹Eü^¾Å@òx™c,ô}OE^ ,QÕk3K sè.>©)jpÌÇ5–k®@”xûº£CLÙÏ 3|9ȯ7„rŠ�Ó–!êkuˆãñë)øó@«IÄO·Cª Ú«ÞÅ¢™7Ìp·™³ú"Á­•¦ D½ç:$ÍéL¸N—WS’ªPÀ™ÊTå*tfÈ`<>ì“àT++ö2Ñ;´ƒ9ž_ð=>°B¸7�Zéµ?Ûøo“[�ÑÓé>¹qýصk ¸¾¶å­:zð âñBÛðFé 6Ϊ#¶<‡ØqZÒ¾I)-›Ã¸0 CŸ,'´™Ú÷Mv2F0„Ã?+}î�‡Èò{÷ùlæë„O$…ŽŽZÌõô€¤ª¶V$lV<&´D;yn*f�ÝÚ¢‘[«Žª�QM†ýÓñ`´^—Ñ¿D¬Þ•¿‹^çöa�2¸Û°rm¥­ÒyK‹08Ia8 §]ù÷s{*‚¼…Ã!¶ÏoÁÂh÷-¼ì,`ø…y ð7!ðÐcšÈ3~ †!;/±�5xø´YÂæã¡k0&Èq‚ÁÆ0Ù/ÙÚâ¥Xí5eò(¯ôc匦} š A¼¢‚¯ w„WÈ䥊‹ HCºÄ îUWã Þ*á‘p&YGÙî®õ�Šû÷ÏÖZÍ¢ 4Gõ®lô×Ì¡@iþDfO‡ûïÑ,!ž· Ë­ãT:¦™_¨Ö >?ñOBW&ÑË<‰ÕjÖ¡`šèpHçö¸ZMû[ÙDwtD<(Žê ¶_tJülYÓ9Å—¯P»¡Â>i#� Õ)Àï·ò‰ÏøÃŽ sÙ-²}'lrœÑóüÁV«ûY¿z|¯†@t7ÿ'»‡¬#ˆÂE:­zÿ®ˆlÓ¡ú—éådëýéOH„ùŒ¾Ó)¢èåù Þ¹üyOýòË'Pú«?a'ýâO÷å^�4о«kö]÷W{ÿ§Gœšß½~�+ïÈÇÿì¯V{½ÿ™¿x¡ˆ³^7��ÿÙ_,¨�öŽ÷n€>pyxEÿg?ÁŸàQòŽ÷õ_ür*mNs~M+þ¿žr;ú,-ùol{+mŠ…iJà·[n‰¥!ý í~©—=Õ{… ˜þ©ø?Õþ»ì¨(âÛaZÒ¿�ÒÇÿò/�Ò?¥ÿ'ûËÓ½gÿù¸Ÿ E1� ë^_=¦=Øüéží–¸\7J]Ò?ˆ™ ±Åó+¬hÿp"~•îîÑ«ƒEú“.ñßq¼ÂϽa¹^¦Õ£ÞUï±éq¼ [ë8B—Cèþ…ÿ?€¿�Š!4z›�¢õtœCh- <�;OÃÙ¬0èŸ0<¸¸:R“ÿ=E¶]Ü]�ÖEº¼:�Ó«Ÿ€MÀÿ,Ó«Ñf¾)««±Zà *ðÕÛë*ÇÏàüÐêŽþð¼I&¯âˆö›†Û/Òk†øŠ!ö?ľÝùæE¨H)öAàŠ�ófïYÿîþûEŸë³;¹ïõ^¿Þƒ3�¦ì“Kùîõ†§§Ãÿ€ÿà#~F§ð_¤¿i|é–ôKÿõ#ÏïÈo–¤„¢ßzï~¶�)�ÿÏ’Ìñ°J˜Å‰ŸÊ½tŠg6…ƒšâYLá¦xÔR8U)ž�ŽHŠG!ýåM×ÕPøÆ�ÒÕ£M?Û,—ýß=}Üßüò¨zôâß~|ñûÇ�ùå?ÿûÿóäÉÿˆÊ|SLÕ)ðUPß]œü©,¦Wé³?fW‰â«ÏÕðùôÇÙþøÇÉ‹?ÆO|ñoÉðoåp¯ÿ_PKÒV1]-�d3>iimunify-security/assets/ui-app/assets/static/other-root/src_app_core_shared_module_ts.084c4abe8088cdc9.jsUT ëÆ«jëÆ«jux è‡í[isÜ6ÒþþþŠ wW5¬ÂÀ¼æTͦdÙJä�,E’�ØŠJEq03°8C‚:"ë¿¿Ýç"9‡{k·6–-ƒ`ãjt?èF7�,eµT&<�Æn=eáð¸c×±ܼIE 9fI#B—ýõ¯?¾¸4iœ¥ãúÅ…‘&Á•ÇW�HØU:ö6¸šˆA²+™—äÑnu;V¯. #‘ÙÿçcDuF?öêð4~2woý¤ÆûQ½cÛ�®IR(6»m×3‰€bËs<Û$ ;�ŽcŠž×rM@ÉölHC|o·›ð>âå´� †bZ&`·®í4M2„bÛm:@0Q=XŽcî†LÖÆý:Îê1ý4­ÉÇ@DÀ³,�"Ñ œ’Ÿæ£󔲉ÏÃôŒ%·<`}IT%üƒÓZ¦k�KgÒ—¬éçÞE)›Rq]˲ПV ]•°8ƒ†\DÓ‰~{š0_f K±ë,íûú L|ÈGý@?¥Y‹Dö^Ñ`ìG#–ҘǬ^·HJ'~lÖeÿŸ’ž¼>=:<;;<~{6m{5ÉÄ4ŸRœH ×þ[\ný ?Ì¢çWgæcÂ`>Q-bwuöù³4ëâÂДú÷€' ˆoÙaô Æe=¡ØëMT>½Ù‚* r ª�þJ:[Ðet¼]L¶¢Ðw[Ñqz¼®`v0‰ûÅÖlÈ#¶/&±ˆX„­åCÌz’€3Ý´z�Áœæ’ s¹é]ú;IÄ-°$Í% :¼€ù\š—dÀ‚0í¹46íYD²I‚@÷fÛ:b>Ú;rg§¸ë0• Œ Ršà-b€âDF‰9�ØÄànËjŒY7BÝfÝ!F"2 P¿AaW¶   à!Ì9fÑ€Eǵé©j¬š“ ýã’¤ò!ÄwUã�šÖt)#‘S­x�TiYíñ·¨V D(’^ío®ëîâóPD²‘ò?X¯fÛñ½ª‹EÊ‘3½š�ІVÕ �e¯ÖÌ©¤ˆ{5§£žž3a¶~œ¨¦ÎˆB®Uòɬâ܎Õ-CêHAj²©9x"¤zV§ÕÔ� èªá.)ÀÝó•{•Œò/’QPrš ¡ˆjqkNÅM�1Ò�d~2yŽ$K ²ØôjAÎ Kv/€µ°ïXc¤·£Ch ­“@ÕÈÄ�Re¨3HÞ§°VÄù&ð[ƒX&в*ÂVT·r5B6¸š˜³ŠpÚ¹KŒØ n‰LÏ»îMrü ’ù ¿Æª>s]ÁŸ’¾¤ôÈ—È,"èÑdQW*~q�pW ØøÇþñÑÉ?.kµÚt]Uo•&MüdÄAGl§ß×üLŠšçäºqÇr ÚÑróŠ1ÓÊc[–V˜ß¢ß¢çL‡"“VÎeA‹/RÕÝåã¶,kAÝ‘½—>œæªô ñ)Ó &Ô«Ytº’)^\Ûø3›ù‚t®œÔ€§ †½Ú0dº3o58ÈgÚ«éÖzV@ÐÈ„4›DWÊ8Òmw[�2�ì) ɀij,«]’N +Ñ4s-4¾B—®ÛѶY?h›¹­¶åiÔÉÖYæã—˜Á²`óù9Ÿ¼�·¦ÀHíU0õvt¤ì×9J=UÙ=0Hu{}Š‹Ûó O 0œúMD¤»&3½ÊŸ>Ÿ JçU =“+�=�2_ ‹µ>eU» ¯]ÞÕÔ®~�K&wËË·5ßAÜV<]ô¶zÝ–×TÛJ£z²¸©j'ÃÂN*EC÷q:§ïýºI³ˆßC%Å—¾¬¯^Ñ£#úþ&ð÷ëö—- ÍŠGmw‚¤‚Å.²$çùÌžžv§ôµwºÖÁ<15¬Öd‘ã#&÷³$�ã=gwxðï›ìm«Q”Sh‚»ËÐ »¬1KPÇ ²(\zXl6ËÇ—Ó¥GÅ©Fp2îãq¨ls7‹rolº–œX8ˆ¹ÈÒÜÁ=IJnäC6†‰˜4®ýà&ågp0”³l=7�5Ü,N±ð:N0D> g†€¼¥U1Y4¸ü ‡vÙ ~E)mO™êGš­ö•+áf£¢ä½Bd3vNµaæ¥8ÚKqç^ 3àc‚C¡IS*“‡sqª{Û�Ì$b®4`·G£Ã¡öIžÝ|“¿}M«tüx=^AÓ­÷c}Ž‚?ã§Q`˜&q°ë5b¯ÖSÕÏK lÕ™MX¥\æ•éëȿ٠ì�dô-ôN~¢7ä:"ÝÃiái¿Ñ‰ÎAçç¼-¡- +ªÚ¿Ö¬ÕжJk¾�ª|s%˜¯b�"ØeEÐ>-Èk:†ÿŠr�q#ü<à«ø†ƒ¬,Þë²¹M˶:f~_X�ÜxÒlÖ¤-­O?ƒ>iñ+«ÌTW6ëÚ]G¨ÓF»JJ4{:ž®“³ëúéÙ-7èÑÌJáò/3eÑLIasü0e'êªð–� ñ¹çÿ�†Š­.¬"9³TL³n¤<…ì8  ò�â¤ñ2]v?ôþ¼G¬ÿwúᘞ•ÖÿTŠº¬ÂX?“cRaKa�è›Û3r ¤åçÏé×3h¤ÄHÇF2&× ¶Äü´x6P ËXFyO£|»Œò·<å×<äòáJ ‡x_øe°_£jË蛎´úŒÑˆµÁŽâòË ©Î&wÙ3Ñ`‘ëÔ[dÅE”-²™rQžî &<2?®GYöûõ¼,6w€É¬f4Íï±io9¶ˆñË+>Š0tŒèlš;;ß©1¾Û0†KšcÀÞèÆKÃìì,�ꇡ¸» Eà‡W)w>Œ¾0 ¨‹ü‘ÂVõëOÚœ�ŦóQ…cä×÷éþ÷œ·b s °Öùg*ÇÁÈUw”ð÷òW**4GŽom†.Å@7 ²Š‰nﯚϳìÿ}v«�› ×_èù�ü‹¤r;ûÕGCµÙî¶Ñ”êFÖµÛ& u½º̤αò�¸¨…ÿE—§³pÃzJõCýq¶£{Zš{¡¤·Ä—tL¡ÀÏLÒc’ÈK°2³å@Å!=-Ekr–f£Ø6ü/f[ÊS�ÐÖ’5ÝûQÀİö‰þ(e =àzʦ^ŒB¯Åà�|é¿PžæVõòºüq—íì0:`(½4]UÙG¯EOSOJ a6àzmL{*¹'k‚’’ÊêCåp�´â5˜’wqâމ$0 L4ƒâ|V(Z0ýO’î�Ìúŵ¤ÃKй¨)pLwÆ h/ié»’óºSåà·›(e/µô¹-�%BvÓz«$®Õµ1¨¢ñÔCq:–³p/9W’Øvm×$oT?(–&Ù“:pÒð`DÝRFîèyK?æ^ö{Ù¿8@Ý9åq²\uÆXs‚®ž‹ÑhVcõþ˜7×â>¯¨Æþ€‹¼â+N1‚“/}é'yõ}ž”?~20™En°Z.÷C⌠*R{.é'2¢{¨ä–;T=+Ã%'9Ú½L 4_RÙJÐ9–]aí+î‡b´zŠÐÄ5—xœ®Å&rC_’X’kr ;rÃúž¼‡sb(–è!à¬å¤`„ž�°Ð� ì W|ÀY8˜Ž j£8›.ò­„#üµ¤@€{’òKu~|¨>?jà”½7¡>3š£|½¶�ãöHÒ÷M@>:(¤÷vô5ë’\Iú+È$&Lq¾»v~~ruøöüõéþë“óãÓ3¾È>ŽŒj5É€%޲ɽ¤?Î]>=ß.¥A/å?"§á=p ¹«~ý¥¬ÿÊZN7Q¡îrºI¦ÒM‚…l“Ü®HU^¥N¨l°lZy‚·7Ë"Ò¦ŒB†`‹ðËý8)^¦Õ4¹¯§ôåáÔ±ÐD‘Ÿ$âîléâ[sš¬�Ê2¡º´Ðžâñ\¦É_,“í‡"„<ÊîW6˜“äMÔ™u y3ñŠ™c­¹x}0�²õKü©Ï 5AOÌ:ì^t-ä‹+“Kå¢á]Ëü‰²Yäî 0Y�€>½_c>%ÛšOsë©`<-K·²^ÊÒýII·¿ ÝyRN:Ï/óÌ¡¹t+‘ö¿™¯T¹üg ÿöÐ_,ƒ//_Záç<eõ•ùÉ?EuÊáçÄ7ã\ú'9WÙ~‹\À*Du*õAñ(^‘ßíµÐ/È\×µ§ˆêz^×Ò)|*\ÛÙaÕ½$ÂFh–#wYá¼:›xš”=¿ï*g3ça¨r>ôüÚ{–’½ŸÉrêòüö{žº½)gÚ#†¿&gº¹j�Ö–“io3™üÖlÅ:«úîn9ÛÚf³=Z¼Ã›‡ �Š¡ÃÂkp‹Nzåvb›Ct6c�Âk>£fTÍ/ö�]žs8¡°<È,¸ë‘ŒØ6qÚDǘf­ü¬g9DRdÒ\G«Èçé¨K–à$—� *ˆÈ5p=–T°ºXfZ))O÷U¡É:‚šÐ”øô è«îŸ¼©ÛŲMôá/»qÆ£§Ks÷ÿ^¼ø[M§½ùq óîô§þÚ�´©ÕñÏ¿f«Ó A—~Rÿ?PKÒV1]¡V¯Ÿñðcimunify-security/assets/ui-app/assets/static/other-root/src_i18n_zh-cn_i18n_txt.5f2b5aa1fac2e0ee.jsUT ëÆ«jëÆ«jux è‡Ì\YsÛH’þ+\>ÌJkÙ�³Èá��(K–-Él“¶§Ûêè  1ÀA»µý÷­Ì,¤˜¤<;Ñ/´LÖ‘•ç—YÇÞBͲ/Ãï*™Çòoe1/ëU=¯Ê²þöjûÏÿüç—ßö_Ì—‹›½/_†‹JþžÛañûÿÜ<—ýYÿ¡›Üû" ýýâ >¨ö_ý÷}µg;‘ãï¿üWõ*[²ÎËìßWª^VÅ'>,W~>¨ÔÁrÿ>Ïöî^ÜÄ‹÷ß‹qUÎUUß½�ñl¶§Šý}c ¾¿½¬ÿò—½âù«šfË_UzœåþKÓ$äºÝ_Õ—ü·Cõ'}8È׿Äùþ£j†-^êÿæ‹«øjOÏUßTå÷A¡¾^WUYí GqñŸõ žÏgwƒ2˪>>«ž u9ˆ«¯Ë[UÔƒ¿ŸÕφ|Ïë›AQÏ ý}•ë% ¾Å³¥ Ÿ½�¼¿z±¨«¼øšgwzªgÃÖðâ¹&´ÜÈ;†3µæÌ_kÍ’ÃÚ,ôeñBý1/«zñê>Æa‡÷qšNËó¯EY©‹|Qv3´²¹^Š4K®—¾[×ËÐÎ\ýw–¥×ËÀ¾þÛ³ôß¾ëûZ€r¦âb9gÆQ–n á Ÿ-÷в\õ�¥…|o‡Hç!4 „­‡J öR5SµbÆ”nx½ô””8ŽeÆ8øZÅE}ºœÍޤT‹ÓÛ ±7|úI(õ§-ôßa’dz$_) ÆsaTßÂQKnuA{úSIý)<©yâe¾Ô}nËojZÏ´U1=#à/q6R©½ÆSê¢Å»»{Ç‚�ƒü¼Œ�-yÁps…Áz¢dïºq;È盜“F¿ ‚t�ðÆž¾�D*Ö¸W)˜u— ib³î§²R‹Z+ýiUÞîbЧ¤zÌøÞÑd K8ú›ÈJ»QßWù×¼ˆgŒÒµ=`¤(ƒ¿e2xd�9øaÓeÍa!µ¡OË3^}ii6†®!2PHúÔÓÁ@@=(ê°좔¹OL°<ĵöÕÉÒ¸ÑY.U±`ÈÐ:îÅ…þa"mMÀ,/_y¨ªƒ½ñ-ÇA4+­õ“h×¢uá>�µaÞ«oªº;‰ï¦$5ΉôY^qN?H@¤ž²¬®u¹¬ê›mÍ}‘&]ó*O9*|O ã�@g1yœÞ³Ô)Ð…_"×ë¶,vRdYmÃiyú„%X]Tì/ªÌ^Çòæ²,8Ž‘ ´²£ýX!xÌ{“›e�–ß †Õ|] R´‰ÀEÿã£rëîu\Õl˜ê÷öœ {Øö^ĺݎ5kך¢IͦíÚƒž˜˜¿Xîb¾ðh}}“W;†µ¢vØúfY-v¬Õšæ·j’R£½hýaì^OBI{Õ3�J=öÓöáÐzLˆËÛCüg¨á\Ó\ø%o´aý[I‘Vf$ºƒ ®!’µT»X "Õ¬ü®Òâ m­ÜÓânQ«[@›²*‹|ãJ�è§1‘d¹LµŸ\þ±©ù~½€_7õø½,~Ÿkà�ovÉ�:ÞÏÇÔ~�-5ÁÕ¬üšË�ÄŽú }Á@ïy\¨�±TŽá—Žà4¯”¬ãô6ßhé'øóüÜõ™ÏÔbcèÃm;R1Íñ�Žõ`@qW+P¡“í-ŽjÒ‡Œ¼¥LÌÌÕæþýî™FPØ| ~S—Ï´ d™%ÉÉé/K­~y¡Y¦Ó�éÝ\kª^Ô²Öq˜&:7¿÷ÁOþø×áêÿEv¤D^”iE>¸A{úw Ý·‘&GÑÂ"#�*�Š`©šý:&ÏJù•Ž!áÂ<ë|>-á—eª¡Ö½,o!7ë´@Ý”³”Æa¹èr}@¿,zV:|ßNÕ;Ó¶Áùø'ÀÅ>à§Ì’Ï`fÝÝgÍ"­-Si¬¤¯À4Nþµe“y ©B$|qUnÎ?Fç'´ÀDÍ5ê²,é)‚‘e€Ã² ÕÂô:ì6âT¬—@Ï�X¶ØI6%ÉDözD3/!ç–Ñ@îÈ£´4‹€ÏB˜éþ¤”€L}ø b@–_º�ÕÑzõŠ\0/IüY»À?‰â–¢A›;E°lײCäÎw³ƒŠÈ�¨c:‚5/Ó�?~<ƒ’u6Ö'å²>Ǩ±…C�| ËÉçŸTµÐ�Ðb…ã»�/ë³b•QvÜ7‹BýðP¼T-d•Ï¡—׎"Ê´~×]ÌasrÒ�¾1†ó  IÌ �È€$¡­h�õ×ÎâFgû ò”—4ò3c®iÎj{¡ŸG J÷Â8Y¥t=�¦!@ë,…öiæP¯Ádòæ'ä>`Ù$¶ÂEd«“÷+JÄž¾Ì/Ž–†„*@‰�ŠÖq2SSpLÚÉbq‹‘Mø¾ÆbI»´�sDaBš~^h%Ý €µÂZ7§ux¿¬wö@áRm/[¦Ðf³>…î°mЦG7…ñéÏ´ÃÕŸ¶ÑRtå©Êâå¬>†à–_ï˹I�5úâ`*ÅD– WÖÜQßA:3WŒ½õ‡íË÷)Ãn�f‘J±t{œÙÂEYçY.c³þ|~”¦ŠÉ[zF¢�-y,ãªl4¨=.³vÚ‡}@W! �`=tD®k[ÍjCÿgÞÀ„ºZaGT7üÖ•Ëgçß�s»n¶ÂLÛ”‚êÌ�Š5BƒçPÃ1`Áâ?ò¼:¹ˆ�œvC/„§Ó²œÕ9Wn|P ©æ¾ Àl#.TÛÊ8½ä«¹ä±2X)•†µ��ÑÇvAò~'| £Ðnt§ k Œ"õläH6Ø[|ûƒA:8„»Ý&Ú–ï¬G÷uIôCý�®» Îæu74®¯»XþeqHùS-{imXöÿ]Üâu3â†äéVcÀI©—z_«xÁ&Å.`>J,„‹If0hQû�8m°B¿ZPTƒ¹t¨©îï�N˜I’³�CÒW}ôšÁwÂÅ­ ûW™ƒ³ø´aŠn©È‡œÅXÒ;:Ý6�ŸHÀ›Ò éÙ6ò„›‚è¼Ò3‹ã):L»ka–@açè|Û~@àJ‚ìŽ.¶¦ÙÐÎ ], DRŽ.9Ôˆh9 Õz‡÷[Iò@Í’~æ”ëh¿H]HÞŽ>l•Oû‹¾Ê�­nÓ�hõõgè9� x"êèž2ÄDXW \ĸ�pô‘‰ÅY95íÆþ¼�úHÂB�÷Ðôo[ɰØs:úu«,CX¢p@s?„ÌèøˆEž|Ü3m¥Ø(œ9`€Ã‘à Y1 Ðãc=tº²ƒ  k�~Ö`25cLÇŒUŠ$õ›Í¨cÆîÈ\´…â>6ÈGHØKRô꘱AS°0U‡ž(�ßl[´"PÁcÎ,‘˜H„ÂŽ÷–ñý)ì{k£�râ1c»ÚÀÝvj™!­©ƒåc»i‚‚ؾOÚ M¯Nã^xè&HcÚ�‹'�M¤! ³xÇ�ú­ç‘QÒ£hUÒñÕ ðû"ñ‚NY¡=©)sã»"(¹3î‚…Q€êÈ8 3’'ÁÃÇö°Žçà)*ç»àŽ+§Õ†.PxJ�"B‡_Xùà¡8d~Ðc÷™HÚE1#Æâ+˲Vö£wPÌŸ>‰ëȘ@Õ 4ç™ ïGœ•;6u†Žs¥z@ Ë±»�}äF\ÈlÇÞÜ�1ÚÀÃyB…t3FJq ìƒ9g Ra”‚gqÖ„Ü¥0aœøˆ‹™èHÂ$U�“313à™S<¾C&7bLN¸¨ Z鼄 §ü, ZAœ0ž^Cɨ ú )£YàhH §(r!41ÝHè„ÓŠÑÂRý éd;ð WîÊx-h¾f<ŒïbbB©0pü5ÃP-PpF2ŠÖPçkÎ1Ò%’ §ÙDF,“&Ôè´ª76' Œ@ðƒú4¸hÊ�H"•ŒüúŠÉ�r®Ç‰e úNý~da: Á)£9Af�O‚ñÖ<Ó)§K‰�+óƒ†ë´tŠ”iLJyÊè˜]8ÄêÌŒL¨ƒQ»³­Á,ô„”3ކNfw#1ÁIg²‰iM†uÆAPì` ;Z°‘åÙÌ‚0ý ÄŒØgÀô£À”Ú¿ ËÎ8ŠÜ0ØâŒQ©@tI$‰#¨×œh¡"èÒ�3N[lØ…^Ñì3&Dù¶²Ø4sAݺRƒ†„è<úƒ1Ã7H)Éß0ç @ÐÐö°‡1AÕñq7€_“6õP©IbC$Æjä­kÿç/\t½˜tmSæ3.ÊÚäîiT.t®±¡‘U $ÚkëÆÍDxf¡�o¸œ"uâf ™â¸‰µo8™ôýòÄñ Ã>ÓèŒñ˜àAJÄu{�sÐÕ�é#öZw€Ðmk´2Q‘L眱2*¿QM ŠsД±2£–ˆZ�ŸsVÖÒ �×lü#9¦ÞBEŠç BHV +Ï[ó2ÁšÐ˜‹4m�ô�Û˜«­Ðªˆ÷c®ª‚a1±ºnêˆßcàíUè̶À˜‰%4„q«6Ö¸-±¾{3fëqH*š¶�’žz:Þ¾‹†û‘«Ì`ÜwèÁ>K¨GmË©cvÀF£ÆJטÃMF¥9 ¡›þÌi®+ì.B¡ù}à4×÷[R€æ|àòC*¯™ÈÑó†8–ÑN;“>4üÀ˜9•’ öúÀn?"6õé *ð„=ÐÞõ“/Ð�I-èÞ€Y®çWTjÂ¥¸ÜбdËõ AC‡.Àâ>ë„�gv M¸z*Ù?mp˜mL¸z*m¥"iõ˜¶MͲ˜0b2ná´}¾"ü [ÆÇ�nBÖýÓ8hæÂAÜFºD7Ó'[³*šßËðXlSö_‡ëî\At™ôCàŠÉVeÈs y‚p ¸$ŸT�N�0ŒpÆ„9Ü °ž0®Š”Å`k “­…ÜUíb·p0)¦ü‡Ž‘d°M;“6Á@ ”4é=Y9‰ÏÀL¶ncvyQ§�œçsÓVp�Ö±=3Õ§1g7ÑhÊ 0á£Wœ �€Ò?,°â¦Œa{Ê ’á±™éS¶NPbt“£©MÚàœ¦ 4J¸zÊ•¾èð YŔۨ ý¶¬¶¡:3åì/9¤�5e«À6Ú7Ô­„ pTÖâl˜š6ñ´J ‡bܰ2ÐSž)»e‡w`(£žr$ƒr.H�¡)W`AÍ¡2‹�p”¿“þ�˜ŒË#a1¤Å¤ZÓÑÁ š²±ä*TQoÊUݨX™�š¾«þÈ„I­´²çU�?¹sdÔTA]ßß�l=�ŠÀmóH ÊïéÑÕb³Á$±úðqûAGRæ�Œ� ÂVÐÑGît‘Yn@N%Ù¨ýŸ8HÂmÒÐ èâ-Õ@>m->Rंšq9ämíÓ’G4ºü‰Ë3#J}!ÜL0ûiŸ¹õ7EŠ5¹¼^ÌýÄí´öΛî‚«þ¤aÜÆ°O\®G†àÄq{Cˆîð™q§M'Zsáx8ÙX×ãªÐg¶Zóè,íߨSiWŽ•!¸Â_‰i�µ5­_¶V|hƇ~e!>Æ�ÀÎüʘ`˜¢jôË¿2žE¤Ž½’_F�ÂÛ‚i¼¸IʸJá*ÿ·|QVí5þ·ðð1Þü1—“{­íMÍÿk€°·õB¼ IG`g×\yijõð�Úu{e7Òõ^Ž4‡›Œn8ëŒÔ<ˆpm^5¢�NmäúWÇ‚p&‚ `”þ&mˆ3‡ý153×ñ)_ày.Þvò¯]@såw±L¦üÝM�£c¼»©š!D`Ñ©_Ü2�‚µƒöß²2lg/Dœß.‹<»‘ൄ›ßwPßTÁÝ=ö”àé)3ųâE±¼MTõ>{�ýòBæéS†ÒËðnÀö �n6x£ƒúMK®¶”‚ƒü¬ëU—ºOYóϘ¹˜Äx1ø&þ¦®Ô÷óíë ¢Ëè”´­¬¬ãÂ}œ,ªâîæ‘‹DBQð h17 ËuæÁ�-¯î5·q¯7\¼Ýð _rwdHÚzË.°ºÍ’4fÑÝ#˜†9ߨ³7n•Ýs?ášz]>çéWÅxœ•WBRUÇù¬eè�³Æ(oãÍOԀѧ£«%g�a„å ÇÆ7 T¡ ‡«{À Oa#<pï^ÈÉ2Ui�˜`ÇíMÝVq³"-@ùxàÆ1ôíR¡ QÌ~ߦ%ÄóØ &ã‹Ò|—I�$ïÑé�-âç /ˆ«Ûix‹¾ž(ØÖ¶¿˜•‡ ÚûªÍ *~ãÍ„DÀë-t/†Þ|Ä7å˜4“Î9Ø-‘Op^íbžà,WÖ±Yêt‘Ö8Ó©vp̰!>G!|Äõ x!/¯Vô…-,8LÿppÏç*Ý¢}ï'“×£î^wâáQŒÊ,5¸-Ó…’DÖ¾òBÙèÖm÷NP�†ñ+¢sP�¾Ü_/V?eß§P_ÕƺмÉâ0Ö aJbÒ���ƒÄ‚så&^K¤ò¨#–)×KGº0jØEÛî Ê6á}ìÚ��k„`‹­ü²ØÝ ré%�Ö·Ià„„C{H"‘²–ëû""Õ6íw^­hå[ô»â‹«ü’…SøªKPœñuåÊ«Êë�A‰:æDËba£'ÔLÞòu‚5ò!ÖBMQëè �Rõñ÷à74£ˆ5W@%0vŽþ Qy Eód•ž,3Tágùn—ßj‰r¿ó[thLS'ä ÌÐ'ˆÓ;`MåPËs]ìÌù�}ˆÄ�F ‡ó%LÐCkä2õs°¨Hòßí‚<Ùx†N®n<Ð_LƸ5SdqŽìyLÊßb— !昫×Zbö[\Ò‡òH΀jTèxÞÕÞ¦œÞ™;cÔO–¾˜à¬d–ÏA̳?Ï:Â4ŒÑpM&C0ÙÆ©˜aŠ6•ROjD\X½b Ãöà‹6FÕ-ëÏ•6Iµ˜üÒDÊWá!Í6û]6Ï7IvïvJ¾m@Ø»9:½¸ŒŒÌœEÂb>Àä²Ã3*�G‡]oæP]äée–ìA’D…e.I{Ú†uõ7Ã3FQsºodÿYàxZTšA¼Þ)ËúŠ1›Lip¯—‡?`ÍÑ8¡*›™ÕÔ31§ãv{ ÏÛ° yb´†#Dp’(š¡K¯!2à[zØËh�F—ëe¼½¹L6Y¶‚IùvïÚó5Glž~·|F¢/Å÷õ;Õ'§ú^lY }Bº‚ˆ)n~厰(mR9é¸N†½î”qÏÆ)öƒ9¯ºàS£ùc�Fqnke‹†{Â2÷,5Ó>oöÄÔH!_ëÂ_þRñ„ÒV®zÁ ¿|éŠîfx3ay"æ®à£däbeqÖ@¨dzÇ]‰Á‡…î‹þNÅöÒpM#šža61g†¯k, ¬¸?²ÛµÏ¦>T‘j�Tîa­1ùø�L?ìiW¸îÿhNùs´u;sÝg‡±¡Ôs5ó†‚�ûv“Å»ÛØë×̨ü<Ã'—^ÜïT¯»Ylwùõ&öxÍG˜MÌ WùŸ²Ü ' 0ë;Œà ôôе é[Wùü*fû£V °eñ‚áz: ä^88²Óƒi=Y"…BA«,ÊqG?z­¼ˆ ¶JG{̪ŽwÛZ‚¦â¨“M…n")ºú†&Hˆö¥0SrV ƒ�.)§!|�݉�«§üŽŽ—ðâ3_ÒÖ_ßïvÌ3KUö¤ï&"¡l'\ZNß(_¶†-åƒ ŽësO ò:®ƒfö`ê­Ü›ÕñÁ/Mí1ÌÐ@jl»Æ­˜¥»Ýü¯X5 úê•ò©âbãùpÞh½lë×£|»Í’æÂ¶¹˜Eó„¤ÙÙóËJc[ü/ß¿%ùwyùŠþòöÍ[vDg'ðwHƒ_èÛeû…Ý1Bd�³˜D%,WŒxJ³«Õ{¨¥wFCJð éô)uƒ¼meÔ!Äh«6¿ r’ÒŽÆÐ`_”ï�ÐÊãÓ[Vº0˜âº¶ëøöêF]ù P)ë”™Hç¡ß6ª£ç(�‚ÎÏ£š>š1(%�wnXY/D7�âÎ&>¯u#ŸVäF„{02$D˜´ãŒÚ޾{urñ}½�7cù/ºC*jÑr}Åë!iQ;ŠÓ™ô˜îpîÿRC?³>-ÎÆþ ð(ƒê\~Ž@)˜èSדmD ;(¥«N­EߨW¤ÊÑYŒŸ’ò€¶8ÃP©™ÅÝR:EYb‰ è"@:QŸ."yß1_†³€âoÊ$}à“6®Ã4(¯‹‚®fSÿrò²±Ô*? ¡µlµ?¾Ç¢º8Ã!ÆTˆd%ÕÐôKeû¨?VžÜŸápÜÕ̱kL*U�’‹“Û {(AݽOYl󖡸¿ÎsÚ7n=ØísËÒÅÞ‹j�!uµ´Û—IBV9¨ÿÏ»†Mêãšoj2ÂfH­·ÝÅ»½îýýv? ‰™*¯ØH+(LW€Ž}p­™Ú9 ¾É1pÛí>ÛžB(­A0®�8ëôôªâ‡€ã?xp&[ÆXk²á°�´ëÈ ù€¯wãi)~Ýh:Ó,«“➀øÑ~õaÄ|µÝ…Î�FYP,¸Ï�Lت=šmÎRÎôÚ(Mˆ³W«·Ú1ß’‡¢TêZHL>AŒ<@ ¡)â¬Í(ÞÔiW%{Påh¶;0j¹Î.ÇeÄ)~&£á+bЛc™;MöA§ßÑ9éê×z­ {-R*Ž ÖRNú±IWá`8^E"g(;˜¤ÉN�Ô ú Ì ”Ýͺd�¢/è-A»ªšk{¤çÇÄ<²ÝÞКîz�öúS×ù(úÞóô�ÂÊòÒTRã[Hó¥þŠë‰i4­â›êŽ2Ý7š_b®W¹ÏýúŒK™§ÄÖ3ê)dûÛ‰mx•Å›³Õz¿«É) õQL”Â$pÌ@†!¢]@ÏÛxœ°6æî3¥â!†àXø¢¼GŠÜZÎÆ‘Ù=y´©«¾L-MøUGöšŽI'únsw/Qþ¸ßíòU†»r£-ÍÎt–§¾ÜGNŒO²*—r1ÍDbæ*¥.‰ü�/•Çôëчì®nZ‘ ×Ǿ$ y©ó�íÔÒ7à%i]ÕçÝÜÇ:UØ%uNçÑ=ªîe¯UWõ8B�ÎÕ²$½½š�uooê&>¼vN¡øº Bkƒ<&›Œ�4:¨:j⤸ŠZ¶â{r¾Š]‘LGÕ zêcS3bŒ <˜± l&à(«¼÷ù|r¹s)m¬òªµí‹ê=9½^=þQí¿‹|µØ�>'l}]çïó:Šùñy³Q…)Í·tŠæ!ž/|\ÙÌÉU"ªÈ“#“èR™ˆÙæ|áeM²–ДãûÚU2‹�•­Dø5tߨÑ�`)·¤‰ «“è>ø¯’L] ñ&¹�©Å}ùÚÏŽžuÚS]½¯|rD·· 5u—fµ¸|–mi¬”[?BxVRm<[¢Ãúz‚å5:‹_o«ê“ÚócŒÛÇp%î{¤0rÈàß^á6wD Q^pC-ý[ÖnJloè{ ã M»¯R@Ì;Ô«øwsim©Î”?zuw•ï+ûùêäâ™«É »@ña+˜�ð2Û…°N¬0ånΡÝdóM¶õ¤! 0âCnø%·î‘n3Ÿu¦¿‹¥] j8©cíNûr¡¦=äOE5rHJ爯³À‹T D9zT4 A0焵´(rK²¼åS>{¤|¢AƒÙO“¦õ¯5¾BÀo³�zþÚ[¼"&®wu€‰GÉÒ¹Éì1Q> è–½œHEöíM¹‡{e O'«$¼×jpÓs 7÷„|'Ù'ß>µQG¿×�û`…TžÀ†ô¬Œ,ftŠ”6jÞ@m=ì�&Ùâc–>Wñ—Z{±ÉÇ£° •]¾i›òU_ʆ†]L°#ÂQÙÐo¿Ð�sê [Èëš&Y)ê|)D�ÆÛÄçœ*ñx(÷f¦Åô^?b5[z B³á¬AaëE ¦_qn:º`ÞÆ»JÙúö’Jš{fÊäƒù¸à�CåÐÿ™%^�d;dñº~¾Pãñ{ÔdÉ�بÝÜÏýÇå>É=ÿÌvãØÅ³mÈ@qBðk™ÂIŸé�ä“^ŸÌ\Ÿ†¨ŠÉË`UNéÊèÜ9FGúÉìη'Í ›êÜ4$..å}Ðñ¢o¹i¡ ÒWmÃW$ºSÅyäQfü—ªñ–×^ƒœ&!Ž1þÔDé£~ß,Dì„…¡l2¤0¶;È÷14‰_Å­lïËõ~s��„$œLà©4åðÝ64»ä•ê¨HB#kЊ«õ©q½ÏŸ“w(‚¦Ë{¨9±ñ*Î7·J&¨ÿÇš8Ï’`Àk�ôÛ†v«¾(^.²¥ÏÀzMö¯:7½ÚÔv5¯¦‚›¹\lj7s€PÄеê4#6o<â´æè»‹¿7ÆS wÎÀȘÂ=úãÝÎWÁÌÕe\˜ÍˆÏf®¿ˆoÖÂ¥4S°d�^­GМë#Šºp4ûò(,¨Hiß…%;—@Ë*ƒ‚¬4Jÿz.¤^š¿�dïé%¡Ñ‰Šê‚Qšî¯ÒøÉ0ö- 6’Ñ4.Ë®ï¶I�Ò)öÈhºY@ œ¸âLO9q¶|Ê+" ½Ã`ƒqÑ«lx >ûD‚ñ¸Ÿ�l-6€¼%øÃ4_�Êá˧¨HÔlê÷гóUÛsçUÜÜhø6KK9ÀÊ):­þå{iVïÀ™'"÷ ö†Ø~Î ´V땯ίë‚ò!1óªŸA&#ÍLÀ—™Æ•ÿ°C¼*O“Ag¢—N‰Š‰¼ƒ^š¯²íî]¶U··ÿ Z=Ýî“$ÛnÏvÙí)ûö• åóˆÐ}Ô9T?ºU�Ä×Ù6ŸhU{øë»uöC+�¦ôO¨[iÚÕ¸D»\µ&Û:ŠÖ¸%£Ýæ.Š¯Õ á6PFýÊ›˜£™Ûæ¶¡©Hcµ=ä6§IŠsl÷ömßf"NÁ‰@Âgè;$Âza3·:4�‡¦%ÜUª 5§×¹!B*ÙNúö岨ò»ÓÕDõ1"Gìh2Ã:€ ã³ïåš> -ÔMmˆZñ›ý2Æ)È|Žx $‘ƨ|³ùI;µþKÏWPɼYÐG1�Ó^üt~éȈ¬üêÏGìáŒÎ.PŽJ�`[Ö-èüÇјjÐD‚�éöOh3x.GÕ&úÔØ.ãG\è‘ ¢Ep.‚'$Ú>A…,×Ãf¢;f©;6ÙË™«kOÅ ë1wɦ^™ÙA#ý\©…]}(*‘À“�Ê ’nv»õöøÙ³ëÅîf?{ª$ð³Õõç'J‘Ym—ê�=KòMöŒ6Ÿu»½À¿R^îîIþtz]îïO›J9¢?Â7+˜Ûñî)r‘»?Wɵ’xFÖËý¦Z¾¿É6p-ÂûíãÖb­òÝ�Ú­£þSiÿ€ãü1¾[ ì‚n1Y‚¾^3*uðew>É7×bLÉ2ݽÙÝ.ÑvYfÉîd•þopš«$ȹFCêèþ6VÏ´^eÑbÛR’€þyyCÿæ¡«‰SjË&£ÄÐnòO˜Ô�Kî×_ær<"ä¼6èùûâÚK”6jövàéòB´9Ídcx sŠJ5Σ¦èà�cå®N¹�)�œS/’�êfBY T#‘Ìf@9×ëÜ›È.@id’¼Ñ *®"×—©¦!ëµ1œ„8áƒlüÅ 2> �¤(Ñiy’ò€ðZ—2#%e](¹EyÞéÝb«‰¥¦c Ay±”`CTma’ý�èš»S�}!öD°Üw¥þçÀŽQ ”Z¤T:›§\*$1&èùA�8R)ˆÔ�è*þIdžZ‰–ÕŒAéÉí™ :óiEÑï_¬hçß1ò5Œånl+©ë[}Ù¼SÜdŸ@�ó.ºÓ„¼·¹ !k)‡Ï "gŒÚÈ01žLÜä'y û°@ä9õ!ŽèRiôŠ¥x×"á<µÀå`¢H’O1rŒÛX ˆZÙ75жöŒð½kJ(­F#‹ÎŠ ÚÅåಢ ¢àosTU<@F°“žçXy$ ähÿÇe$£„o {É\îjê{Å:0ãÕV—Iý’Í"׫ÈÉòÙx^ÕÂ(EbRJ„D™DO;“ÉK1χö My¿à ×*Ç$Óß%ä6š?Š_+™=Ž~9yiZ—Rq€çqëÊÌÜb€ŒÚ5ÃtkmL¸ŸQu-’9$Äzk3çÕä̦§fáU8 %Ì"îd„ò G”ðÖÇMßÏpé°–³«1(Ãb`Œ¡ܬp©A„1š ÊÈ@Ó!‹È¤Z.KÒêq¿dÌ»¸%@†,óë`Ž2ùZ( q/ùK´mNñå.,ÒÃ/9‹RýŠóЧñtùI);ÁËPˆ«/cÇùŠÔË…Ë\iB|Cb�‚@à]LÌ c„l,<û ÷Æ,íêŸÈ’C”„×A¿e5ˆžÉzitùâ�V…d„Þ)eÄ ÊIªN&Éþ>"uZaÞ¯TÂmŠ I0IE¨\Á^]»ng)3õ“A73NJRÉÄÉ´y;¾“鮂2´à Hѱ�’P£�ïJ?œ>§D 14bG¶)³l¹H…¦#Q.ŽÆ”ÈÝNtÿáÝh2úÇÈêXíXw„Ì19tpmâç™dy“ØmEeÕc ¾*‘øße³</Þ6ÂÜ,ús¶YeKÊNÀ÷*«…^)}3[e)y ßê¬U¶O­�‚õåʹRRGFùëëU¤*©˜H©Üqt�ÊŸ;ê¢X%FHIµ0cðã�Ûxq¡[‹F>“¢ª¾†I=éµ;UÏ”Qm¤­UJÜe}T_É»;Ädkáã•™ä\Áƒ¥ÔO†Aà±Ø­¨@UœBRâÉ“&î\>åäçÄ#._Mm~^‘vÛÔÎ9ˆÆ¨<0gÑÎQ-q2¨æÄ–°÷ÇÙRÔoôÑI¥¼:åòê 1ªY—h{'úùI›8(Qgm�Ð}>Ëtg+ð�`÷מ’GÙ»›®ÉU�Á“v2wO $ê‚,e¤�jÖ¶šìVš =�`Hò £P66å~qn\Ñ<ùª—îž‘gP.­¼A5˜7ž Ü·T‘!O�üR½°•g†œ pQ¨nrL³ (Žá¥Ï²M¹•f„¤HÕ\²ÞDh{´5LÀÜF'Jp*>[ê½r ª/˜O4È„kÿ0ìW¦9Ê>š$Á¸Ö�ˆœgæ|±Ú®ÙŠ2dò@)�›Ÿ§swèÃù Ñb¬BÉëGz£B÷#Ò|ë' ^†‹G7DÜ:&x ºÆ¹=[“q‚"g8‰žDfú[ø2d&F3ª€ ŠÂW‹ «À�ÂCK¢ c ÈvêLõ¨Ãz¿c¯a@%6"_b¬>¼4ÌP‚ã"à|Ò´ŠØê8‡ VÚÆ‡@ÉAZ\Y\¹$Z�Šz ¾ÍBq ”nã–蜦:h�t T$KŠ4ïY©T·I$ÚžaÇ=öÊwÀÊ3Bc/‡ÿ)ϯ—p_–gÅÆAÌC2{S§¤OìÂPÈ�jðz“®Vaµ ß±w:æôMo—°ŸÑã±.1H=`ˆàOÊjMõ�cÂS½éÞA� OfeÀUOï¤MÎ%PÇuÔ$æàsôîÇóÈ�1œj¦§Ï‡ÜAjÂpÐÖ°7ÀÍÕigb¤°åN!)¡wˆ¤PeÅzÑáÝ*�3‡ˆ�M¢‘ñ…Ê …¡…/´|Mð<ôPU¦4žT[UÞ‡š½×Ös«‘ƒld ¢·=pqc'üÿ˜Ê$úü5 À�W¬˜;�œ0±ÙßÏêÊ—�&n²äÃ,ÿ’wº6 7Þ Ï,Ê%—þ‚·|{„ò”éŸÀö±vËü:Þ—©;Åÿ|Ùu>ÔÁF]�™1“~×{GËËL�/˜ÙZ€§=Gðpí°XòH”Ę!Ò3èà‡•rU¦ ¨5VéÄ Aµeer^¦öoZ5K–.dôãÌ“­àŒIrˆ„f’'€D@©sir8WhY›¼îâoÓñh£F3iË4™d±+jÔ÷ð˜|¶rõúè±T_džÉ4œQ Îè$›mƒÞFò0¶á‚­Ð~à‚¢qÁLŸÒnë¶»CS¤1&:X…ŸÎl½7”ÔüÁ<Å(,hP/óÍOF4¹–¡êAÐqÀ˜b™ü~å]TÉú¤¥GQ#¡äŸV×›2µI)ÚLC$Š—Ð6'?›ÒX4†Æ)q¶'FK“Ô%ÓŠn!IRÄ›‹sù Ó(‡¼²­ÚªS/>¯ΧYQÁÊ;(AEXÙå2OMNk£¢.�c‹x©Ýšš[’rD1nXN¢,O5G‹Ì„‹œÄÌ’¾µ) i›ºÀÜgÔµƒüúÈ®#@8vtÞÇû]NY_ÁÆ‹¥'ÌÈ!™8Yø:0èzT�gÖBµbtx‘d«mHŸÊ’ J-…hfÑÚ ÄU±+œÔZ4ú}·õQö9ɲôДóé%♵D>SøLÄ+ W‡ÿÍNÇT<,�1àEfùPg³ŸRhÐfñ"qv{áe,ºøô>|“R&´'j2œÓ툅L°µËm®T@Œ�{ÉTçb‘©dBÑåå+ôŽ[^v0'µ¬‡º‘ûñAŸéLúF)à© U40ƒ^¤Ó&Ê«è`Ó•üd60Vé¼Þ*k3ü/Æô—ØPR¥,u„¹×< d�í¯ÏªO5EÙs-+;zf¼ôZGìá"ÿ³ÐÒ..&R޽¬¹ûÊK÷Rö¥‘›²<öro˜ûá½Xg¢ÏÛ›ë<~Ü{³eÇwÄ�°ñ{g«‹xóÁK¾ø"Þ!xnÎùRð”ÍùîÅŸãå"å&”kô™L.lS‘S ¶ˆFébUº zõ¶¶‹gû>w �ZWb+³$¿Ë¼ƒîâ¬]¶ŽCCÂÅS±CèYÓ\þr“e'?{$�è>¥±ÁÐ[æÖ®›ñU¤šw Ž)ò¬ÇŽÖ Cr—ú1F÷Syã@§°Ê#NÓ—T¿¿_.O°FÐë?I´ÒI¥õ{tñƒ´ö¡ÿžž=n?C�µeZÇ›¨j Ï7ø�±½ 6¢­õ SÙyÚ}Ú{Ú?Šè/íg]ø»ú︫þ;†B‹ã¾úïøøÙ°ü›ãgý±+‘·Ä¸í%3—²™\tànGuˆ^ÝyËKµÎMI­IÛ/z §LW¯óÀÌoËGš.ûƒÏJFºÈ=Ø‚X)¥—G÷ˆßvLWnÚ:š£3"Šgi§u”nòõ1zž p”.žÀ¢‰éÞ�qÃo"�rø£Ë<‰— əДµŽ®±T»E9ò3NR7aì{ËôœRuÙ5˜¯ˆ¼SziJßæ/¨EnD䔣Y&—Y5£N¶gûŒÚFߤ•ð©C%ÅÊîUì¶Ö°STnì…¬tÖCáV¦Ó’”J¶ó0Ù=²) úýXÓÁ°Ð4%tÑéåK÷v7ÌõËÈUõGÐ~Á�öÅ%úÖß(á®M2KDí8‚M2ê5)Íň_tTt”K/b¨³¡ÖûÍ:÷©$=ªÃ�ÿ½:')Ð-Å>�.¹$)µ/’wtN0þ£…PÀò}áUŠ%ó·Ì} —~eîÓ—H72|ÕíöS¾IßÖ9›m‡)�Ê‹f½ì¼A:©¶ùâ<9µ…ñz}ž'Aì/- Äf½~—ç^d[h3÷&-CN¥ ´Òô}~v½Ê7 j8íŽÈ5ôÚ8WÿM¼ºÎÎ|>Vq¸@¾¡ ¶ò!ÛpvFŠº(y¢-V�Õ{«A¸‹p–�C0“Å ¸8GV�9™Oà “*;˜, SÔ ™P®�Œtæ�rXųIOO%CH-pEÐóKT¿4\+Q?ø>oOÕ /»XõMx„(áFnëûtV¿ådV‚ƒæ<_ø“CChN¦Ôd>À”ñ¤¸D »��T ×ËTºdè°M˜o8¬ì>/W·îé�Q$OÍbq[øB>v½5WK•�*½ª…‹ñ$Iºj²ñfFwˆ,*“Ÿâ íÎ�=¬·SŽ'“x‘krõš²²7ù¶JXsðHsÈá<±Ë$^1ïÔ}²ÌbßîÄrcªc;jáƒûõ“Í~:—Ç[&�™÷MÆëb¹r•1"èp J“ö«,ô/Zðÿ­ïEòƒ˜^ô¼¤³ÒÛ-Ú!à/ÿÞ÷Ì‚~ÜJg…Ö‹Ò‚ZØÝl²x'ZAÆ(‹8">-~pQ+/„̸µû‡âñ/Õ-ŽÅ‹ú /Å|k«VýÉ_÷Ù>KŸþø/V©�1�²_fTsØézå4–¯ž¤ÙmìmKžÍz£«eô½ ²«Ø.h^>Þ ¡k•›×EFÛUÞµõ/-[e€;Ö%È/òÆv¿R;#ž�0$%DÖ}$0=¾ö}ÓFí£ººH9Èeäï²í®Z‰ôj_œnM!:ª8ocZö¤�úàÔʇYC(¾';'ÞÀ–2ÖmÉ_¬RH7ÆbS²U‰ÓU.w1q.øUœÔÂRRÙÉÏ?p¸òeÆjÐ5Å¡¸>, úGµË÷ë`PIÖ­Ê9¤}® 0�Z£òŒx�œäÃQjj�Ńs/uRí]’ÏÈ{žž¡ì^Ò59«Œ\ìòqàN€NG´íh&áŠ5ºò1ì¸Jÿ£W€ªØa”B¹‰•JßÏp®Epñ£›\Õ¾TÞÞ˜öOW×Fp¨ND cdæi¹ç?@ÕNW6Ìü½³Æše¡m]q7)]%E­£¯E’ã?�öa!¯ŒŠU¶ ‚#{ãŠÿ²Œ1–¡NŽîòýi¼ºÌ²ð†É|U‘jälÎFÝoÞ5·9öôúÒ?R ònSç~Nlz²JÕ#ž¹Àù6PþZÝ {h¼•.žo;~NF!EÓÐø<§�˜¦e„wZÞœx ½Ëe€³nhØAy꘧ŽOÿ{Cøòù ¹$Ò·t~ñaQ3óÅ�2 6ø‚¾’‘^/á¤#Ý3äZ®^z]j�ÍO>$AÝiç+¡hÃqª–[°P_}PÉÀSïš:|ËÂó)�;#}½×¤yJÇé÷"Ùe›àº û…øò C À3âsV#œ˜¬ »½nØ|�mõ[Á‘|ü‡þ\'·V@Í Ú�@TÇÇ¥îôMÞ(_”2²É-¸Né¿X‰�7S¸5uÓøÉàWÄM(ïÞ‚Þ]}ëTítfeÏC¤H‰4˜Mb#ÒÅF¨Œ<t;xŸÎ™ÔØÞ‰ƒ)ÀëÎ>4<œ %¥ÑDåêÖ/qê±ͬl$$ ís_' ©ª?¸íäQô&r4ómÁc¡où¼9øâCæÓÛ`¨L¨ú�¯›çÐ)‘‚KÖªÅÊ0ºÛîNC×0Wþ¢ùìØ¢HS™ŒEÕÌm:œ àø�É–G!)ûízþšu£TÚ’Øêt;@V™JYÒ>œéq *☮Wqù”¦ö<#Jò š=l¾…ÒqUÉïh¦�Äp@Ãn6)¼ëÉú”Þ§pÆ£eûxpÔô@dq9y‘‰õ±1¹¾]|‹R¼Ã䥉jñ6gcQ³�Ïö¡éÏâ¾±œñ™”Õ àÐ!šÈ™«tÒ”xë<�`†Ô¸Œq=ËæêR¼ TÁ³!™¡7Ƹ´;£Ì׬yÇìÕæp¢ ÔnÞOXàèxµÄÏuí¶¥Íåƒ)¢™zµ´/¥!,‰F&# `F˜Â>à%Iú8NÚ=­‰ÒíM[בirà òǤ“˜’ Á¡r)=ˆy6©Ê<æÐl¹77ENËx‚˜(�Õ˜gèÑkY®« nØÒ±P�> » *}÷‡Yd,=¢ëJ·…\ Õ{©ŒU%?Ф˜º(^«q¦£ÿ7[©Æ>D…9­”¡ÚÌ–å^œô†ðÚ�U’Ý"=ŽG ÚšŸÔmš�Æ«— _‚nø&°h æÀ ‹Ì"Ýs*Ïûü}쫃oàî“ CýÑ0†�ï’ra£©¹£tŒäC¶ûiãˬ«JÀ)õ¥CJ2h×§'Á*gwB¾n4�H.è¬J¨}Ý©LY±Á úÁ|ìxCÑ�­ÉÙ—¾SPè–X/³šToKùC¹£„-JP çêÿö~Â#�è1ž!FoŒY4Ù ¯·uéøKÇà𜒆ÒÏ›Z-ì šjufb ÁÓU½ñK6»Ä_ª¯³�Ý7ó\=мtÎÐo²åúçEšUzW]Ö±9àL©›0"&páMƈÎöÀô¼U²HýØ©–Ö¸¥™x€ì£êaKÒ"Þ9ߟÁ°Çí?¶÷œ¿ jo@Ê€Bž$­·?ù©¸úó>øŒÓ>JŸIÛ½F½ñ¨eáz�™ö­KJE{$ÿú­ß�"�0‚¤h�ÏÊkìÚßq/M¦5N>¨IdbïÚ“„M0Ë^#š&@ãÃÕÚ‡¥†Ä¢s¤†áN~žÍý(ò>*Ù£äv–8§—Ñ/'/éK�u’®º�|\wòÌ×–¦ têÊ�6î4óbuP+V~¶$�î…²¯3?,/%‚�å ‹‡RÝÁ,º0cùŸ ¬S+È(•ÿV ¼»ÅÖ‡LèýR«x¶X.v oE…á3§lÜO[Ž´žæ«�ÚC[ãOaõê¤ö XΉ_H¡™ñœ²�:…ªa‡�ØGìJ0Ç£~[Ð’™^ž7Ö"þg^¹?Råw�Bê:šµã¤k<Ò0¬Kš7àÏ*u޹(PºdL·Ú/Ð3Aá,i›«£!º'’žYÒ•67ùÂÙîbËñ=ª 5�Q/à™ÿwª�¤¸g>ÇÉWÏÏãŽÝjÚJòá„YÚ@W�Ö¼jËÁ¥y-xzYlrUh€=´óÑ_Ç¥lQáš,±ö 6LÀ� ²4-dÙˆ¥iÞgYáì@‹š$=³UŒóÇ–'¯³D)�/üš2'ÏH’žÔ{ÍêòÅt¥ÂÇk7˜àI£n&H…'Nc»£S†h|mZw}|œ$5u-šÿ´3©47Yg'{Ì–_� ½}¸ÉÌñAçs�’ÇwíIWUúqp‹„ Ç’UBÃrK‹ÂÿûTÓ+IJ“ó<÷å�crÁmä˜) p1»OiÐMù~è¾;årN¿[¤ßîki&)pÕÎF�u¯S�i§é%ÂfŸ¥à/ 4³—jš÷‡¡4É�ŽÐ²æ^µ«iÿ+‡~0¥ Ù’x�¸S—{¤pu§}^é¸úÃÑ^JôÐݺs6Ó£~îÐgcÉ�ÔIÊ%{‘šØtŠýM”K7u~¨µ ”Ó¦õÙJ)б?óÁõ¼by±SÂ�'[ÔÔþ‚7߯³´š¡úIúmyd‘ËÒ�fäËBg´eâAÈKÌZ±°–G>02�#j¬áÖÙ©áÞ·e¸5dÓÛÕ­QzPÀè{ x’ý…ÕÅàŒK;(Ì{©©Îï‹E�~qëÍÞG÷Æ!pì·û�â�Ç!�‹ÝÈÂךú0º‹ü#2ç’³!ÉÍyì¸2[šá”6Ÿ±ó]&§CwÅÁD.Õº?üŽgì€sÀ ¥a>Âtÿþgˆý×êd´”0{‚ÀÿO Îâ­:#3Τ9Ù•ÁÛ²È�a4aõå“es}0¾â ’�Â$l¸µPbŒW¥¯:b‰Úô†7ªáxûH-+Kcà½Ì¶¼=_x#ðöy’´{IådKö桤|í®¡Dõòîàtuñõ ˆ=¢¡Œí€ÍCmý‡�ò…gЏ\5ÓDÍ^®c_êö(�r>)‰¶ÒÐZ òèšÆÔ™íœ•ð’ÙÉ~ÙÅ*Éo«ë—‹å.”ÅÚŸwÛÚ0 7Ú ‘Ã=VÒ ¹$ªnœ"-ÂCyÝÑØ¡muÓ>;N[a]w¶¹]l!NñÂÿ}öYÒÕ‰Ù¨f9 v±‚bñxh“0x´å*Æ·ðgýytbË öûÑ„áà q?WQ'ÅVi5g•8TÙiÚô ßÝØè3M¬²Æ³¢æ]׎�¯á˜\¢È íÉGŸˆœº:‡[ø³*&ú�GP¦ôJ¶Z^îÂ"R73Ù­i^�õøõÖY…œ ¢a~ÍF)Þh\Ÿ Éì/7ù-?¢+Ã)@{˜+C4ñh® ŸOŒ_(ÛìNzþãÚìNÓ½g´r&Þ˜ÂÒo¿”HzñÙ ˆ$‹dÛºödŒž‹»Æ¹£žUùýîÀý2h„yE3èW›¬iÑfÇ ÿÔ„—‹Ö#DzáS,v1½{ž-ã;o¶‘ygª“L©ŒužÍHÿÿªnKe*Dj=�%�Ž’•ji"L.ÛiLâH¹GËmkê�n³ì<¿Þ¾Ì7�a5¨tk0OG6mx<Ô‰ºä¶Í{¹Hðzák®7yºOvÀ6…úŸsë‡áxkî„t Êì¹Xloã]R ©÷ÓòÚ�)û¹§S9ê'* ùh÷ Ý�ž\�RâÄá{mƤUGZ5¤6pjŸôúÅ£Àö2^n³·ùv�®� ëpƒaô–‹Û&€©4©¦:ë! 5Q3ä)¨lúpÕÂ×N9Ï8ë–J…Mpж0ÒB)1�JЉ–Óµ¥6àîë[¥ún¨€ Õuêß¹5T¾D:Q�vˆñRDIWMÄÙ7@!„õã.¼÷'¡ Pß…ë`’‰ÆË½·H®'@5›®L Þâ 5ùê4Y dû~ã…Š—EH,פ_¨u1wݼ�z^Bçµmˆ´/ÑI,Æ=ò% EI W¹U¨øÀj;Ë6oæï·Þ#G6-ÂÁieìÞúu‡™¹’òÇÁøé ×݇üð¾ºdá§wçÖñp^ÉxÚÚÙZš�˜¾Í­þB›ØKIð[˜¾ðü7ÜÈ��ÖzÔiGbø“†sþh³z¸°‘�¢Pê‘÷þ]/>m žÉã:÷Y‘€Žzþ#¯Z™L†:OÄ9ŸX¥ÇÑBLò�˜V˜ìÅÖd>XT¤ê°jìÚw'à… Sò>܉—ªÃ-«w…�|Ó| 3§>_s0ÔÝùÔ¡Ó?@¶ç¸gê1G&¹‰”‰ØÙ­og´CÏÖ «ˆ˜�*S!­Ÿ îÕwõ,r—>ÛU¯õúùÁûµ¹–Î+ÐLG'ˆ<ÈÞ¥´Jøÿ­S” þõaá%=,É÷ကèÑ•�ûqSò¤©Êê`¹ )@u$�»8å:E p7èvgS·$m™{ìu­Ú¼pëÁœ£`ULE%Œ ä�,œr}çÜ•8z‹ «RC¦˜sU„´7¡4ŽØÁRÝ??»<ùñüÅóãªq�¿ùam™¾ýxþæôÏÇŽeÔ:úóÙùù±3…¬¢P]‡è¶¬áQ“\\›2Ò9^|ôWú´ §Bð¡`ÿ²JssÁ]Xª8#5|/ŸÔ—ð�,x¸±ºRW_‹ÎA[åÁŠÄæì¿¹—'óØ'ƒ <ª~hˆÿ»*rãŒî÷yðwŒ•3 ŠhZ¤ði?úç,[×ÔõRyƒ|SYH�Yb„@"Ó×›tXcކ©ÍI^‘´Œ•cœEo_�‰®ã$ú©»ãª«-‹å–þÌw[uyH‰ñvá+²Ó&J~ûðU#€x`¸óŸÛûÖ爲 À3J«5z†^)Œ¶,•q‘Þ…Ï‚o)Ÿ3¬©ÿ—|éãÑf(¡ŽÙFõN¦:Eçóæ ë ©×a’È2®c°(3³n'˜M/K Ò “¢b©KÔEÊNÐX.J+M'XáŒÃ–ßÕUMÙRíÀç¸ <ûJ¶&÷„UPÐL bZW±R3Ïn×»» ¥Zû*&7É¢/ró‰ÊÅÝV›´p?M©±ß§� ô o¼Yžz¼Á¶ñúC&•^ @FK{מ3ÖX¥ÜƳ<¢Á«Z„}‘¯üä,雚*e¬²±Yïù´ÆXëë l¹‚Qh‡ÒÙ*qa� µI ¦õQ§Dø@zr4@¼©A,�ÏãôýÔæoÕ; ÁŠAf¸¹É?�ûƒ‡HY§#T˜[›l™Ç铵ÚÑ>º Êö!ˆÃöÀÔÁùF,« é†$‡³)§ÕeìJ.Î º3xº«k>BðžÄ$ÀIoý&^/ᨻŽ@øWÞgÏáyY$(»ÃÈ ôôÔ—‡Å™[�£ü-DC̓¯ §<§�õP¢¿»À䌸?yý—féj꽋“ó_NÞ½8DCVo½}óþÅë÷g'çç¹zuòîâåOçW'oßžŸ�ž¼?{óÚÓöš‚‘ïѪ¬èUߺ|sª>tõâõŸÎ^¿xñîìõŸ<ÂcÒë,6fÐŒjàý«w/NÞ_½ÿËÛW?½¾|ûâôì噲ûšNÑO¯9yýþÅó«Ë7/ßû'‹‘|ɉkųý6K£ev½ØE³|·ÊvÑé?�ú2ÞGÌ£ƒ˜é\ðÔžÃÿ'3ÀºW–&ØPñl øïÊ»�¯oÛ››¶ýE‘ ¦O2JJMo×ñí¡³2Bð¾&ëKT!Ý2´y«þÜdéb£J¾‰H:4ùPeã:ÅÂ\£�ÂîmÙ5+¼¤¼Š5Ýõ.®Søeÿ²À¬ÕôÝ3ña+&y"0OîgœfiµþÑÉ*}‚=–ÿ”Lãò;ß乯Ù�Ť•eõqáåÜr4ZñÝŠŒÝzÔýá|Š:7ƒ9€SM¨ ä¶ÐˆõÈHØ›’¨�lá ãø¸Oíí`ßaæu+D«§´„—wÛ]v+òëÍøas(ÍÖ‡'`í<0âJrNÒ­žèyÊdªîË?Öà"^²šòõŸCª†sRHz\ù¾Ž·ÛO¹?� »�¹îAá^šzâw¸³,«È!pËÒìr–N�®Ý&÷ŒˆòµŸõÁ[8@:7rºS|©à½ %)g„Síh” œ¡?ÑéùëÈX‡PÛ ìfç‹ÕþsD»±‰•fˆØîq1l ØhÖÔ¹Ö9,äØ&Ãd¨½é‘ü&KÁ&¼_å—úïå/ÿaê�H„ÉÍ•DSÆûE§�dE4Ò-á ¦�r‘]”�±¦ê"NÚM¾Z@Da¿Ùx-ÎÁݪʦ‹N臩‰°®€6¶|RU�ºû¦ŸuŒ/’}ÙFpÈ×�ƒh3B¥³R^AtХςËN0�l8î�Üã^ ÚêéÀ°pÙ£©*�WÈ_4„'"óÁò ƒLwfª�Ýìz÷Í8!0€\\ùÀG¸ÇÆ)Âf ȨÓþÓ�-s•ÔuDôâ>ºÎvš=èãêºYüÍç‡!PäÁARº#t 81ŒÓ_v®XÒ2ÖUp’…ìï�£cQš¹—dé¦èÞna‚ý–�ä<ýCëO?ZBÍ÷mŸAÚoxˆúí&»](ÅîþËFò9z³z­laùŠ�`;� X 6,ì“qRÓq#gÐé\/Z5à�¶V X�*ñƒ¾hÒ¼�Úo¶ÌNGh²d:!‡ä£M9Ú_·Çèp‡kn¨—\ï7Þm+¯M R)“þÃʳ[ËíÑl°Ä÷ù~£Dâå®ÚŸý‡Ö0Ä �ÆÙÑ}ºX-vT‘ê¢É´ŽØ¨rºß‚Y»Ò,¿-ñ�Ö‘˜À–œ"§æpiO†à®Î%Ÿ#£è'µeº§—êâréW]dß|̱Zv«Ñj}Z¬Òü“Úu^1CÁ;F§Ž'èDC4w:^" ^hL’6ñˆ8M_æ›Ûè•NR[t—’Œåg^{¡ø Âb%xšu±N�ð ͘/•œžwbD3(âU¤9Œƒ‰<‘p'`‰Ñ/¿RNɯ°À©ö¼:±tî—ûk/gc/íZ�ƒÚTAß´í–3å ¸›&< dÚW²¨˜nX©*ªô›Å“¸êL„Žìç¾4Š#y ‹R©y ç›�*&HF¥¿æÐ8¹Â�½©eàŒ]_‡x"¬€' y{·ýëòå&ÿ›šÚ1²Ê}š ÙGw—ÿqnâ�ƒV]g–rEXúQ퇔j ¢Òë%Q@Œfý‰aÀQ)¥…vu,ÇÁ]¨áZ{`(¡ãû%TšñåR}œ_Å›4[e)e^À E_Î~‘¯ióÅšî�YÝ…g¡V•§Üú‘M{‘èC‹2 tSü­z7ˆýªë@yÈÏuÝ("cóÁg]]ºËå�Yh†"ƒ÷ôCë‹Ù=²÷Ô†?ûµ²7³U[=‹Ðô‰…ã�Û¬WIÛJD¶÷C‹Ý~ûMr{¡.Öm¹kó`ª�-Yl aÆ·tj¯Ï¡¤§Ê·zý¡#ï�@öÍGiÅÈ)ªýâó¸^Òs_N¨Kh8ÄjèA!KT/ÍËP©™Cijö2ÛÜ�\{£Á ;KB¤ltû}˜¦´šìA:è¯L�–Ìu ÆUZí°¿ ƒî¸‹…ÍÒŒºÞ ª�Kùù\œÍ#*RvÊÔÐŒ˜ÍJ)…Ý:Hæ‰N²wóývól{o²gñÇ'àñÞ.Òì ݉O·7Ñ´*«ELßk¯ƒü÷ßu¯Šÿ;íz=‹”½çµÛkÑå dj•zݨ>…ÓÇÌ0Í÷Ö™®²O/+v(E½Ÿ˜(ùúZ™¹09e9a¥‘�Jßb΃ȩsò›‘y 4¨/S‡á øÐ­·°b Zý¢•Z j‘î§èÉ¿ES‘æt ó»B;$A¬}‰’·@(�¼=k Ĥ:|qý%¤EŽf`‘[âmãS’lã$%Â’D—±±®UD-,“tÄ;©ÞAØñùD_´(A‰¢¥R‚LjtyÀ Ëës4èutgê á®èg}¬áâ�ãÍJ 1 f^ã. ¨íø„¤‰‡ÌA&³ªC [ äÖ—çH?¦K¿¼ºxÆ»ªj÷;z�p9Ó.µu4-Pà9|£¶;oÙ2‘NqlކŽ>/{^ÔO‹]rÎNÏn2âCý}˜f‘Ø žýª­ ŽÞ·Ìߟt|É „ /Ý ¨0ûf½<ÓN7¹ÄifNZuO ß'ñh²‰¨jS‡LC£M•œkŽ›õbw6àêêF68¤Giyã‚ß/Ìæá˜yïz=Ë|ä…wg³vö‘¨Þýrø$±’@ Î1YñVƒéù{llã å°öšú¦©ƒMC?Ñ%Vĵ._Zv%�jA\vVÉaÿÅWN!ô';k¦-6䔾‰9í“s‹ >lÍC,oyÚÄ=l‰®Œ .^ÎöjFGüx®(eÎíÉRÆE=ÍOÝ>&Y)}6,E0Þ’"ZŽ_Öw3D<úUÒÜN–Ũö¸ˆ= hT ‘¥g˜–PáÕðõ處é¶0�¶ð�Ö÷‚­�„<€è—2¾ÃŽpÇðÖêˆí¥“Mºu�dqêƒØþÕ Ä–ˆÀˆ²‰ÚÒ”o‰eŠPX4¨¥UU¾ï”¼úI~ý¤1XQï7c›Ð†ýzïwù/3MÐum ºˆ+Ý"(à|,”AÄh ÞçJ ¢?´Ú-”–2¹Ê–êÿA{¥¼ÑS$_J:x m¡]€°®cÃvý€�å§ã Ev¬¯v›|‰ò«vö`[ãí=œ ÆD®kÙäÑN�dá-§ú½éãû@o¨RbØÌÑš½Ü¤N]éú áÍ�Ûté¶õå*¿Ä&ŠøžƒúÐFI_óe3ëbR;–:Ì}µ0¾âÊK]ŽAKÑÂD�€Xx-"õáÉž R*¡„Ò?‰aŽ,+%cÈ_V%íWåP‡ Wak@•Â5ÓÇtœhªñ!5›•Ô~•ä9<#Š#´áfƒUMÇi–A­Ãv~¶Úe׌D~ŸÜÕrž^iÄ¢‘¸xâæ� ýóôòe$#�SÌ¥ƒl»^#8ëšs›ª•§£&Nôµ`s1‡6Gü�,ù€Åd!è1²@Ý„ƒ=Ï/AÊ*$ú;N<åAi@ÙãZ£vxüòý1�ÎS”ùà}žûVTµÃç\2êaämº�ü÷¿hŠÿÏóëkœЪߩMŸmošÌJS‘n (Ì=&‰¤r> µ MeYÎZ;J'>kü\îG�Øê‡,[Ÿú)†H‚Qò—²=‹éÈí�…Q%‰\¶ì\íTs=éB.Í2¿>W*ɲÑÞ$MJصZ}µ�;NBÑÒK¤%gz‚Ïz�ìû-ôÔn³¤ê%õ›Hýj¿Yì<ßzž~syùâÔÂd.¡úì}À§]Ù‹k ˜Ì'iº€ãCf=\£„¨�úp|0­_[ä ™†½aæJJÐ¥ùV‹™UÙÙ _E‹’^×~•Ð÷(A€µÙº»^f�ÜèTœ›u¥WÆ $ë cu_#º8ݸ.F«Ç �À‘Ûˆ$2æ™ñî>�Aq чl£,ØS*:l„8÷L& ¹7,»�Ë@Y(°¸AA¯ïöŸM7)ïÉ ¯2¤º�N̹$Z¨‹ÒÇÍ­º§>ÝõHhOÔ'¾?ïàða�è´8a¯./ù™vÑ {È댬*^Nÿ+º")�>Ç’04 ‰;ÇZ‹laè“í(úÈÄ$6åv¯D4ª~—\Õ\’r‚Á‚ñ wF¸Iä¶¶àôªµ±çnF8Qö0 ‹LaõüÄ¿ØSFÞ ÿ-��:£î´C'M`Ýx;ž�ÇyFXƒÃó'”T¿ãÙ�„ö'=�Ô�³�:ž-9˜cÄ-ë�‹öl@ßת™å¡!ÏTS8°²Àî¼/³DŸXÏ:ŒRœ¬vwá^éGSÎTà°±##(—DWdÛŸž¤ß&�Y;õLÂ(ÝÄÔ¨�‰a˶s{èíßÏ&Ý)khô&؆vOÀ<øcÒ�óbÜŒÜã!‡Q¬™²‡‡å¥ÙÑ»“‹H�Н…ߣÂw»Yžg:³ÜbeÜ_î߯@)¡Œ�4CÆi¿¯Õx9DZ)2%$brýnfwŽŠ^£ ÔJ£òrÁþý¤+óþžšPe9�¶�4&œŒ—áŒ2æf®}$ñ5e¢.  9Þ…’bX„å¶÷åú ÿ©¹6"W󧜼›©UÞ Œ:9C¼­áœ"òv?RÊÇχ‰^xËQ#Ä�-Åž�rw$ÚÕí¡Ù¸$’†³qì:NŠPŒÞ�æ&�ÈK#£ Ãyžçéqrt‹Õgþ-(çC¶!õCîEˆÂh.T‚b�ÃßT! Ž$(kX,-óÌâõªmZ~¾ñ}:tÎì´ w&ýŠËZdÑ'�šJ ]u( «ÉÅr›ä{B'!‰…jÈ|ú ëÐkp¼ ØMV- xÐ…ÿdØÇã· ·È´"“¬a¼Ã¤ˆÛxïË|6¡V¸:!Þ LÖÜÝ¢+¦š è‘Ú4IáêÏÁ‘@Xàˆ¾ÙíÖÛãgÏ>ÝÜ&Û§Ùçøv½Ìž&ùí³a.Ѻ+ d¢®4ùÕ ú!»Rçp�¯Hó|>zÇÏCrØ�R �Ýó‘Šè´�£ïΞ_~o¤Ÿ\}>Eè1”àæÒ“J¢—¢) ì#toK;0åšdNAƱ”“¤ºU`Z¡¹G�åbØ¥h§e¨0n|˜™#MU¡RiQg!57ºÐééçIQg‚Ç# Œ�i ¡Á'î°l�³Í¹\)ùºo€¬yñ·u°°ðµן*2n&,Ç%›<˜ˆS/âQ‹cÍg4¹Ø3ï~<·QrJ1É6Å(°=B¨!z&û:㈜S2¿;Æotè_ÜoÑ’\;WþdŸ·Ïó�Y’ï$~ý¦ÒÁ¥#’£p+ÔUñ§Ý­ì 5€ê›qG=ß­q´X£ôòýÛÀç¹ã™œº‘†¿àä»°6Ø�Ôm2PQŸ©¦†sAÎl¿+‘É4{6Û0xzÕþÄ èíný#@¼PÜ`@þ¯5J�Cmáâ//p^¤¨Òz}l]À¥äUTÔ(>GæHº(c³Q=°/ä‚h [Í ¾ÄX)ù§s^j ‰ìK“›ë6Τ°&=]2çè°!ضÌ@ ¡ô¿`Õ‚X{ó�!*'õ¦o³Ò¥¡�UÅ"—ËM–Ó&I%ÊÈÖ\(0×äœÔ/x}‹¨·Ûr“,4Qdx¨�ÐçÇ"í³˜ygK瓃mÚ–¶þ:ÇÕ%;Uò–AºÊî9¹ÈPr‚•]›ä°$cÿ÷â»s\¦þú¢šŒoÏ‹GVù§ÕÕz“^dÛ+�zØd—YAwJŽæí6_-v>¦6 èñÏ• q“Ãë|q»ØÕT™Î-ÇúpBu§�æÌ^QxêzVéúÄ"T‰ÏTŠG6-Qmi†(ÏY{å¡N†œéª„‹X냈aN­Bpþ¥£¯ Ã]8s}×AKo8P@ì™E îêÉ-–ÐÀ†xpÕ1c�1ºABm’½‡ŒŠƒãU6]WšadøÉ{¹�rlìuÒš&ü;²ÆÑ¹™ µò\Wâî×þ V(c|³Y\/Vñòåb™mŸÇwáÓ$±Íd÷%£*¥„ê ¢å-¶íi°;ŒQ+ìèÙšŒ™ož¼ ¿ˆ?c¯=WŸõÐ*4 ¡ç�S›ºË)ßdŒ¸,i€è3k@(à¹DÊûX�'(â6£Â÷˜¡æù$+L,()àý¬‚¨þ°í7—ð€™uðå&¿ez¹à±º?]êp�iÃT~VÜxL Û´nÝ[ežk,Ÿ0„±<üä›ÍìãM¼Ú-V¾ódÞÒùÕèb6³ ‚·!ù;ÕB�·Ìü8¸JhÐ…èw i]<„„ͦ3°³XhÈÿ¨·�vf©ÆþZ309 wu¥ô_ó¿XΛx`?T¤˜bºåãPÂ�Q8¦¤9ÞÏP7Å$J�,HÙñ‹ó—Qé§“B  uj×k.âÊêa±_Ñwªx“ùµÙñ6z™Ä«Ó5Á8Õ6—!ó@G„á»� (0 ÌÙü˜Uä”ÈbþÉ%ÏL�IÈÁ8œKÇg-«sDí�EÒÒ¾ÇEY’ Âpuƒ?l0î¼Ü­›,ת9�ÖûMöd¾[§á^;n'q›ˆÑ¨F"wš+|RÎ9¶ý>cÉÒ¤*~6É´J*{ÂŒ ©V>­r “žõIp-½¸yÜ*{þèÊ+y¤4V„¼»:äf3(Ï_ÑŠu['°Ùd¿ùVΩPaH`_Ýåº ˆ…Ãv×r¡ãõk7ÛÔ)P×§ÂnQiI«•ÆÐT‚Êæp®WZ2‰6açÕB0ãO û[ò¢¾R úͦ�n‹@"¥"EE}§1õÌ¢<ßÏÔô+ë®AÖ`ŠòýrvsDëRFÑ­I%{ÝáÈì�’-%aÒÔ*O¤(Ô»‹ì±J"ŸŠ(”ˆ²”·oµM5­ªZjvîhÎ(9^¸l5kg·#ß5!Ѷ~UcS§Ìw÷ê\ Ð;•v4p'ÅÑÍQ_R—‚ÑX¤õ&¯7rY“Õ(ß"Ø3¹‘¡ñº)D)=)¸K• �ï7IvªNúþ–æç>YïÝ$ª÷D`ÿö§ÈõRfŸœaNÒ© ? ™cÁ¢.ô6Épò F#0Нú”ÐÐ¥L_£ŠRu›$ÊœFùâÑÍâúÆ#|Ô� Y*ù7[ˆ³go{!|M~›… ¯¹ ±Ì?ù©>F!·ÉM–î—^é˜ R ñFŽÆÞÜÑ4`ñÔÁ zSSX/Ö»ü|oBÚÒ.Û|ŒÃyKÎë²ËÆu›ÆÇ'…¦1ñ6_í<û“áŠGí1zR}nOº+AqCìÿÌCcÃ_íøòAQ›{ü—¯ Áö#õä�ëbߤ±}»ï²Û°oküuÑ$‰~<.ˆui¿ÁQ¶l¥dy¼Ûm³}È•@8Ü�‹�¯¾'Â6šŠœ(­«ŸGwŒ—á¶‚ÑÁò4é@U½DG�¡­"û{À %´?÷æ§hÖò®P†�Lb' Ô¡Ç©l/§™ùÞ’) \À²ÅÚ>a±"dl™ÉãÏ¢¥ÏòÏPÒC¿Ô$é̹rV!)w†%­ù,M^gï[šH)k¶tòÇéhäî�FT�ñC+ENR\"—Z¡±:-°x‰ö€�µ¶¯ìõÍ—0 ‹ôSM*5aNu¸Æý¡Á®8h¿ŒÉh;²HöJÖ<9¦¿F*™™B†^{¤÷™oçÉÆåëލIÀ¬L%!ÆÜ`—YW:lˆŸ³d¿kâì ï yWŽ;ˆg¤½Å}…ëÅó ”ÜÆ‘ªH|ÉšØF¨ß½ø˜¶ùí¢S¢Ü’µAVùIšÍ®‚Öy?•c0>1ÈÏŠmr˜OÌc9_´,í¤·Vº›F)%ÑdÆc'å�ÜÙMC„¾Y�ã'w(xÙ’Gš]Sÿß8¯4ržQ@H[ÑùüúƒI©ó¨Y‹/yt0Z(+¼L†z¤ÝP䕎,�QƒI<Üqг6Û”o¬ý!¿”üÅoÁ>ˆ¾ûáó÷&Þ$ðØÿ*<¯œ¾QéaªRµPÚoòÛ&"ympÌ«<ÿ¹[§"oÝ#Æy’ñ]­nè"©ºB"÷S øÚÑ–ï•ͱ«É9’…}‡)É[Ë¡k/’0I~©bÂJO™ Qq«†ˆž�®yØ(UÔ}ù¡”SR3-·ò°Y“¾!i�3�b†�ØQ,!UÙ"‘ Ž$M°8r?™Ï1‰Y”¹TO*:H^›4 ‰r&Y×t¥€® o¨"<|»ºÈõ|؆œî]r\Š¿£ß˜¼Ä„ËÝ$ÚÏ,%D³×Ñîn d2l5_Íóý*­c ƒMOÄf>sº!þa—&O %±xªf|}*'®¸–Fñ´ïÁ%Úe5S1²ÕæTûAݩȵùʉ²ßˆ~zw^ñկȣ_$‹|¿½Ò Í&"<à"ŠCóa?l‚˨ÍF/fùr±»ú¸_‚³©N^”7©¬¯sÒ�ML瀡sɘ­óCçûÉÙ“¡“þ‡58’%W1•ŠhR?ë€ú(ên-e‡@ l6WÊ6‚¼¨ìêÓú*ÁhrÐüÄc+!XP™©ûê)r@4²’ú9j6ø|¿Kcu& žï]“Uò[[nJÙ—fC…§+e_™�JMAH—€JÐÒ TÎ:‹¦×…GüÓW%cµì+~ ®šFS¢�àÍÜowù-&±.V‹íMÍä”}?n2(¦­éÅ% Avy¾Ü-< ø,`zx½ãÑf€sAv°#®LûS ö'èͪmaJB†ñl†Y7¶¦bØeuWܯGvš.èv}Y«d4™ªnÙ§P~‹—är’ÓF¹vµàî*˜TwJ.wñ¦îz=`ã�VáAJç°7Ayƒ¢ä}ìaê°, ¼ €\D€á£¤ÒTzòÀqŒSC(jÕ͵&ÿÚ�èmC~Òd�gÅZ3œNI%ݤœÊÜ Ó Hžˆ“›[?)�¶ó‘L–M£Œ)3Fœ‡ÎĸÍ(Ÿíüuu‹`»ØÍ#òmÉ|š0ßQw\€¬1ÍG¯ß¼~aQ!Âé&Åχ¦³ÜUë ÿ‰Ü‚:¬#'¥é �çPB@fˆÜ ÜLäË7pF:�¦]À;f\·>Q¢j!"ïÍ3åg©]ŸÙ€*—ÓFéB3<ïÃvVwPís¿aÆÈñ}m댽/|ŽiõµËÃ=8´-8³ÿD(ÑÉK cLÆ“q%ŸÃöcÀAP© �5XŽr æ*„v”Ä6o2jr^³Kz6ë¸ðsãÞŒwðÛ qž \]n ÔóàØZ.Vžì7égøº(ðu·)¢ïÝÏj×r0�õf¼'á†×u¨mŠå¡/šHSªOTêµA27ÝËŒ›eÏ®å=u-jbù­éÂ+8F n£`ýú"ùð>?Í×wÏsµo|±‚ "Pr®h#oÎ'žaße!ía8iþ‹Åú$õ Ý "‘ZÀÂvžvŸöžö�"úKûYþ®þ;îªÿŽ{ê¿ã¾úïøøÙ°ü›ãg}Þ¼“ôK6»D<Üf‹¡…+’d ~•Å%¡Â èÎq)Šq³q‘àˆx5,r‹¦p V*T>¤åõi† ©7$‚H( <ÛœÀÅýá"÷©9õãCcR_{1%¶˜Év�Å9ƒ]3Ÿ˜l}Ka[U¨2šum¾ÿhXxžo½2•–›­wà˜Þ>[Íé/‘Ž¡õç½Ä—#쇄ƒ-ƒ£QþÒ8…-MÊ?ÏíVkº ¦¬uÉÚ ™uϵLº½û¼ .Ü”S°¦".&Bý”{ caòyºµ ïž¾3(Ö¤%EsAìRgd¶ÙÚaIø_†b!F*âŠr‹½c}>è Éà2;€Òy§j{¡I!‹›,NØ~Q)’ΞsTû£ïf1Q ÃZy5 R§›€€…Q�æœçÙû]uÕþ2zÿþË&¼Åhý‘­Ç¢¸'¦âhnG¼Ñg³�E£À 5À›g4;<ý1yÕ#Ö-È‚jøã"ó$Xò 8©OÕÍ�i>éÔÀœX$÷’[å»7þ•RzzlVJ²pV’–ó¯§\šYµéæ‹åwÛ6‹7ÉÍ�žŠ¥RÏ´©À‚²‡¬Ž ¶ÌCöàÛZ½ºgy.mçô×¾^ž@§©u¶Yäéöò-Ì]î­ÇPW œoªÇhunZU�©«_ö«ÙÇ_v=¿íÒ¯ûiõ» '´FÕ¿¥˜õC#ùúAhy«¬ðŽPP9ø |1Bf`ç-ßÈ�׺å÷ûb#äåï1À+žÚ¹÷q‚J$½Ì<žÖžWzhþö»pŒ>7³–Ûõ¯ûlswþé’JZƒ¿¥—tµÖëô‚Úd×™g�þVl-%…í’›lós¼Ügµ{\.º†á4¢öY¼^€ñ‘¦ÔfƒËPnÃMv›Ì‚ïJ¨Kç]5·óÅæÖë§qz~ø…Wa—ÁŽJ0Ù»\0yµo^}ÁÚ·¥âIhnxÂù50'.Z<Ò�Ušáړ嘒%þ¨ÐéÓåÂ[ŸÙ¤×¢NáÑÀä_•9˜*¬øý*þ/–hÛÖö‰3̓Åö‰<“£¸M„™N$¬m˸E ÷àRûŧ¾8.�ܸÜ{hã§5f‹5nÅdå9­ ÙèAí”�ž±�çY|hK”OìPXSK`¨6n¥E_»š <êk'®�l[ƒT,ëð° ±Ö¸ êÃVªIJb¸¡¡´š "<‚F±Eýöów›'õ1g=€V}²S²¢ä®¿�ÊÚ$… ÿËÒ pÖÙ4a�%New±$ÒaÐoãìEmåc¼¬v]UÅ ¥ÖV´BX­ç…-\Fåed‰�\5«KƒÀÜLÚ&žr-Ð�jlq@¦Ø Ä§e~ýâ£?3HMÄs¦–I{Î:ír!keK—ÉÀøá:7Ëé´±˜A ñ¨Ó½±Hšz9êO,ÉF¼ëhË8eϘ’¥ÓŽ!%¢ö æéÈš‚MÌ@ÞO÷`Æ/V{ŸË6Ë �ˆ(}ê¤ ç•Ê© %à£,EŸ$25zŽLeDý÷7ô vöbUCÅéïFR4 1*-÷&Û,¼Öm’aw4××…ïØþ=Xùû VVç#ã.ým㘋u£w‰|‰40 Pþ�b¢ÿíbÿKÃAaYüß/ôxqMµoCy„û�“ÜÖÁäCá«»î`½d¾¯zðuËæ¶Ÿâÿ0±«ô¯ãt6>>~ÖC«1É×Ù«…Ï ÌnJ‡$4u1ìâR³VW躵Põ·À ûÚïQZlÙ¢~üÞ ‹-@Þùè˜TG÷#„a~³Èäߣ&�šü=jò?3jb–,�º2St-aD¦‰:›MÚê–©ðõó¥çbS/ ÿÛñjB¢9áah=ƒãbâØÎ™§f³>º£–÷c?2 ÅÇaA¥(Û1¼×ùË?m‚eCß.°´__obHÜYg› àö3¶âãñýâv½Qj£ßHz³Ê¢S(n‰¸$Yý+‹WOökØ¥Ù*›#�/#�†hIƒš ºÙÔ!Ÿô–$ßÊz~¿®3šÇÚ» …ž<‚9Õ }©)3©©V$~ïžeH$›N#ªz].ÏúÑhØÖÛÍ3c+‰ñBÐ8”9kœºÎ^_àô÷ DÏÉÏ?´R'+uM-6ûmôv¹ßê'ÏVµ¾RÊÆ$(ˆ~ÖA8,TïŽÛäeAgÓÇš†l/á˜b�›(ƒŒ¬bå�!Ð�4Þù(Ö~�25–œM­¦ÄX¼¬Œ[çëŽ@ˆBÇré³í Òö ÓüÒ‰ÐÁ¨�Þcé�€Ñt'yý}íÐñ6ºû1p!ɪöqÚŘÒ`/n{Ã6¦ž­” ¹d’»Ëý¢Ú›w²\>Y¬žäJæhB¼h c[5’êd¿SƯRzŒ„Š~ˆ€ì XXÑÛMÎbÄ\J~®7ÙM¶Ú.>šú*S.ܤÁÊh)CéaýX‘޳eÑœNVée>ßùÀãÿœmVÙòTý–¯âMªúš¾}õ–~ðK6‹Ü{Pój¶±X{<™h퉨v$0Óî ;„DP([ã{X c5ûól»UÝ�——¡¢z6q4Ú,ÝS¶¼å½ZBz^xAñ=�#«©­bH˜åÈé̈_ðcî¯Á÷ðŒ"Ä¢†„¢2o¼bFcD‘ÃŒ„YBêHÜHü;ü?µW" X®§<ÙÔŸh%•f[–\Uê.CŠs&-z²èyº5{P+çûåÒž˜ÐBÓŽ·Ý²©ÀÁ|Öa7KB7ÌT§™ôÛFŒÊc5˜ Ä…¦ž\UÉ2^ ‰¿ £b<¡ô"÷1;€ø'¦¶¹—†·eÕ°×Yêý|±É>yS©å ÌÕÛ’K@È[F¤ÜvUYF@É‘xI)Êß±´]•ŽUì1Ó ¢`‰'Áî4P„7e¹4|q؇ÝÙ€»3,½ÐOË&[ïwè5¨e)õDR¨•oÑÁh|ÆñxRÈL “8á™BjAÁ|-™M^Ü*õÊóëeæRÛhŠEíðŒ)u â{ê¨&AFÊm=k€U1j’äûÕyótîž f&À.¬5—:>�FNsìðºNÛ‚q¥³\`€d¸ ™œX% O¤tp´[Ñšƒ -Z¦>‰ï¿èÕ)›'=|?ŒgCÔc€™�p1 šX'ïŒ=z|ŸQJ ³ôj—_-®W^ñ^vr4`ŽÑßÁpP¸&²w¯R/k7iîvñÒ:[¥~× UG~^ÕÛïñyÌ….Qöði…ÕÞY¦Õ-ChÕ¸†¦UHYiÈçÈó�ôð6ïc5ÐR³£‰ß½ìúKËbüî²ýy¼XÒú'!…3ÂI¯ƒöÌÀy?”‹`?Yózý8¡÷s¡O8•‘Í÷¼mü¯ûxC’W[²¢ÈÓ¿ ÑÄÒ|WXp>‚ô®M¾Q×gúŽÓó¹hüZ¾Y\/V>21Ù�æA‹sÄ¡üÌZ�Î…ºXïôgÒšï^ SþŠojº†ªo:Ãi4±‘ÿ˜pƒ4ߚɌ`4i'=!Êø¡ä?²»"(¾ì¶@-¬´uÃâ“¶–ìŸ ­H� X}ó¯{¥[m¯n嵐\­ë¬4¼B[ µ“˜ºIÝå”G³§jO£Ä]jÂa\hºîJ!_>ŠÕ ‡·(ÏBó@¯¤|sYº¹q±]½|ÛÁ;@D熄Š"¬³eVoIQ.µÕ΀qÛ««¦Sf¶Èå¨Ié<Í$Þ{S“ЖýnðØw+:ü”¨�ù:#²šñ¹÷!ìMJ“©¶ÖÎB'ÄB‰Ê�’´n"Kâ\8óFð³ω`’8kÐrÊÁ"‡ˆY#\hq¡e3ËÝfÊÝ¡kà9[ ¹ÎJħÌzEš¤œ{Hy”öb¥yƒ�Éj_ù™§ Lù ½S¢TÉŽWl1Ôªƒ2Z<èQ¼fÞ•yù6bnÔcÊF•XŽu£a'™§'–¡ôžF�ÆÛ›YîM{+ÚgpPu<÷ÊŸ‚Xy½4ŽãîÊ\uñ¸:®¦ñê6O�½8ÍvÈûé\sb9-î.:®ä5e Æ1eñ`ÆŠtÄQüY !–s8ÀY°CRemží²Û—ùæ–2¦ïO4ì¤óI°ÔSxÇ»‘ä[Ã9ŠðÙðÙTǪ{.pö¶îíó†ßzúò;£Ï"e Sïa‰µ˜Øx¶ZÂÍ?[* £ÁûhŽTø¨ÓMî“ekFšJ²‘O7žXTU+£á(-nö$^%#ØÛé\æF nº¼öǃ6Ê¡›£f?4ÜîºçJó©ÏîSûc½¾Ü�*q¿ÙBî-ºí„vÖa-ÞWáúÝ(•1§v~c BƒQ›ñCæ‹ëãû‡ƒn;Ú³“­˜äë»7+Ì·`LQÏ„qDÑØ©@UÍ/¼Î ¥ZÛ˜�¢½Uw)¤¾NmC+7ç¤ðémúÃ)ýõpÔãÌlçXÓŸâ|ÄÙ…‘záK$ÞQëðP/Õ…ö½Ô3¢K¸‚PæöØnD²� �ÎÏnõ‚ÿ¹³8uú�%ŽN/_F®ûZb Â˜±ŸÎhq1-#•êÈ­ÕvSo*UáÎË×Þ�èƒpt“ï½U²ýÌ<]pm²¢™ð€nüxy^Çä…g-¬½É~Z/sµnÝçœê÷µ(µ–ß­°kœcAíÖMÍ.&g÷¤“$TfÚs1…äœõì Q°„ ÿ¾¨� ¨ê`º 꿨µÔ•úd—?ÁëÔ‡'ï "O,ß§NCO�~è ¦Í7n”ÈÂÆ½v/ãj| .ñí×Üâ²µ{Î-x£�µˆæÓTR#܆uî}£/�”ñ}³Š˜Ô¤É ٚL1mñkOÔ-Ò¤'òÝ�/^¾ä„ZôÖ“˜Ô°íAu KÉpoÚEÌý&­Vö ücá£,Z`Ya_šÐš4Nû×›ø®qó£6"wÐ|ð4”Û/ì¤`û ¯°íV¾™�†üÐ×·ê •zèû‹5ÍMÃSõL‚:81Ô>( Mv´/§Ûûúv¨dåIü±Ñ”i•Ä}õ W4š1‚Á”á«nz½É©Êü Î¹Y „ê^Ñæ£öÚ›)!¾ü)›m Šÿ°ÑPR Õé�† E€Õ¸²åG“÷Ë�Hº$ôjVL³Ýe+°œ7aH•-²·dqXÕÞ*6ù¨}m-þð!;ËAòî¬bÃ�<"ÿ‡¯!äôáêW{ñÖS ùXï?Ê>t€<˜J:á+ ÷ƒ"GÞÓU«šÈ{k•}z2ÏbÕJ¶}rkr¿<_Qï&Ú×ʨ\]Ò {Hõײ›ŠÌº@w¼I†‚{UÙ°ßÃý *ºÇ0ˆœ=‡ÜÎzV¨Ü�¶•¥ô�oÔ]o•¬X¥JX59áüõ)ÜÁ½Œš§i?hK:ýo´%ù3)ü>ÕÌ]P¾²ÒŠñâæ'0vÛ¶;§É~©lGLJm ™…~Ôã†6 'Ncj†ÃPL�`A“f½`e3~ËZ¶b¼¡¥VT0¢'Ð\#ƒÆiÊšIÅÎ)³D$Z¹Mš%|%aÙJ¤)ºÀúu_æI£µnÒø�ØRG=ŒÆÌqÞ­©†ÖËlûá ¨ùeƒÛB¼^/¡(¸ùèD�“2� ×µCkñ1ÛìlNæÿ¸Í±Õ»�oŸ@ùüC­|Bv}HN±xuë¥o´ÿŽÓÅ�ÚGÙÑ}cÈÔK¤hN–9ů…„Ö‰Ù'W]ÔӋÕZ•Qó¶vlõ¬hCG�Ã>.±bíg£ŽM{oðMŽt<Âw[?,Ì\¶ð�Ö÷2¿¾3¿~à."VhÊÊ·K ˆ‚b7L•XÏ�W@Š�?`OVwhZB Uú¶Óöëø˜å—aÉd{«içsiÌ52š>Uí»šØr;£RëAo¸m/!ªó�†v—t”,ßGŠ6ˆü,L´·stŒÄMÃ<¶‚Ï” "Fã@“£fý›º‰íüÕèâ½£r{®‚–%2\H>Ã9[ò¦uwÈì“ÀÁôŽAgÖÓq^'^ˆŒŒ»ÃùÐh[&Ê ‚¦ä\(6=É�/ŸŒ ˜a$ÐèÚ3šÅÃ)'{Pfj¹MŽa7ÔkpÕ &Ï©^ÿ+÷5ƒl�9sçËû€ÊEq KsžsµM­„]·Ðש[&%0!œJ'ÑŒÌ/•–¬?íß#¼�ð~£¯ÕÏŽ¡qíTžDI=0åÆç_‚'‘ŃN~“èðW|×ñRÈïêz¸îo8Ö`4».^W#½�¥~´h¶Ój]k#Ûß šý-"Ø�µŠ?&]6 V;.`ongÃȵlŒvÃñ¹þ&ÑꯉP?<*-ƒ”a¨žr“5¡¬&qÑÃ>Yi<,ŠÜ4ÈøÛĬ¿Mœú«bÓµAgê³ÑJ6 F7 }ôź­sP”økwΣ†¤¿Iú7 =£pó7 1Ó„PÒx"ÿ�!æoV&’&º¤œ"k4èœpM)‚Ë–<ÂþË?éG ?ê°7csÔÇb&DŒÁ|}¦®*AípË´&ÅŠ¾Ø4¸›LšS»þ8�o©ÿ}“À÷· v—»ÞL£kòþaî¦è‡¾Å¶�õ¬Ž• ·;zÙÕ‚�góXדËcÀ¾j·æÜ'u‡øónÒ$n.Ü7ÒXq.ï†L£HºŒž;^EÒel!ÐJ“Hz}ô\:8ÄÐ=nþè±òGŒ�ÿV1ñß þˆ±ï¯‹w7 IûÐ�ÜÊRKG± Â8èÎrË»ÕÖˆÕ¸m]‡*§ä·~„`ûÔña†iÆXd!=«>¶î|àk¢êŽÏç+ãén˜ñ�(çAñÍâ™XÇ ìjTq߸¼7HáædBl?øð,³&óHe?/²OPP¶½É?­^.6¾b|‡yR(¶úÆí§TÛ.þ–ýÐúó�MêÕŒ QFdø*€5`9>oÇŸÖÛl¹<¾�÷»\Ã~ß+©t{ÕñÌ�D öážRnŽ2“°Ï0ìÄ2JèÒŒ²W‚ø ¡{«ñb=N]&T6\Š…›ïyæSŒYBÌN†-D�œ9ˆQ¤¶‰¯î{�šBS©Vìg#øÈ7°™�×Ä­0¼uóÃALÇU½ŽÝZ²—¡Ý$Fï¸}hh¡Nði §ÇqZÀlµhΡý7îŽ?½òÊ—wÒÁk¬?3³ÝiûŒtM%öYŠ—AŸC»Mb§J&dÎJ™ô:5ûÉA§0X¤u{EÂK}ƒÕÄ\nR·c¨1µFÑå‹7€¿j°Jõ›Ã�<ä÷K1lͨ§›yæ° W9®2ü‚©ZüIÝÀØsäÑ€!ÉäPë"d*ä@é&õ=PªÞ~f\´ŠA�cT»&mÚÈû»×>¦N/Èz²ßlü ¶&3ª¥kõ k)ÿ¼G”䢱òj6¼lÒ‘y沯Ùð> ×\2{…Wc�ýx’õŒö`ävͲΑv2ÍÜ®ÖK>Sìô¬`“›'ÏʨE„Ó´Q�êù °iY0gÛz±:¼)§Y.OÁ�=Ë?{ÆÁU1|ÖAk@Ѫšìbî³Mfˆl‰(œ†Áü^Ìh˜e˜Çûi‘^gD¢­@ŠÇ_"¡ïñý`&Ó@„>tR|/GÙºAéÞÂo�±XÕB½’ÐÜȹ Âx�ó 4”x½Knb�ð)$g´BÀ^Þô0Èñ·ßÒ¤åÛd“ùp¨˜)Šê$D]‚¯ú Là À«öÛà,Žº3ÔT²|½ß¬�ü7øžµ;}1ï¿Á¬~»Is?ô+ø†{Úš ! :H‘䟃‹#x=aH 3êQö¥æe ½#-ÉÂÁhuÚ·Þ díÍfQ§�ÒJût&v|¾7ùqâÍ©ðV·ßàµn¿ô^¯íÍ/·ïõ°—“î„Þh0®^y\M:XîߨA÷F¶w;¥<{™ ÉÏÝeÛ]¶ñ>;â�‡Ï‚evwÅ´ìÁ $)œõ6ð3¿˜2PüÄîn]#Л£ñ¬IëNi4ìèûí( A2•†÷Êòy.á=¼cÐo™-Ó°TZ(d³~¢J¾Ç?ÞÆ×Ùåâo¾ã6U•r,ì­­õy*?@U‰ÌWu„Vîuz”Δ”Ú–”'-¸&Â�o‰y;L.^æ$Æ8&Â,Ñ�+QdòÌ-Ñ8ª!U.QH0þç§‚RWÊŸYRjt–‡XÂ+8*ƒl×ß¶§gÕåUÝ4u(P#%éCÑr�èÏt›e¢p/«'õäÜOç]ÕAŽ[“v¼®ÙDÍ:ë£z`2ˆýx„·P‰ðSuF?Ûi(tî}˜C¼ØAÕÂ6"+ êtoPF·ÌÀõÅ6šWvfKtt³ˆ�Ë[8Û*£i—½m=åh”GSIýÜ�}†&)ЍÎðAÖÔ8íµiÌ� Š?�à3f“0†4½1%"�h!M¨ù^¹̰öé}ž‚,¹m=-ÏͰ!FÊ/*SÐÖ¶EÑ)�œög2Eì/ˆ+A;[´Å$ˆ=�ýyׇ›ÈáÇ@/ª ãôA/À¦oãÏ—ðºø®.eË]{¹éÅ&$§¾-ßÂkï—Åîæôìù;ßBÛ‘¤bqÀÈz3÷ïdRÍÖá¶h`¾=XÎÈæóm›35X1²7‹±@9¥ï\f›�ÙæÌ‡­ëûN)Ým0KP)D¤|Ñ ø~DôÑ[ññÛxg¡5߯�¥�ÍR/V)´qF#óyÁÈ2˜‡Ûº„¤¢ÚÖ-øüj FÿúG½s�øüN‰ïKÅšCH‚#D1nØØ&Œ .³ÕµO:“Ðç B<t¼4ÇrŸx(.Ì”$é96({íÓ0p ÿÆ]¬ÜWìþÃú:¾8„9Bù…¬NýEWñºîd•àO7ñîè^“ËÜ)‹å�\"©p” ak–Î[æn 8�Ž8ÏùŠ™Ç-·Sx0öRº90ã«�á¯v‹U¬E:¸Ö {í_jÞ+¬e¤qKÊÛØàŒ:ú�á(F舊–šêíöS¾Aò@!PaÕ"² gªÕÏ–ûëvmØK»ú›ÈYÛš:hÉ =åIŽ}ô cWM„!¤“\-ðc¢Ðýìy ˜aþ3Kv–Ã]ôH5°Ç�J¿}ÒÔŒÉv®Œõ­fFªf€yž_FáèWYñ`ìn/öümž^m³ä*^«ÃºÎ’Å|‘\ÁFÚfê¼­ãä&»úØõ!Ç32_liwñ Ñ 6}ì>íGþU"¹O6†ŽâÅ·WóÝú Ø€â�êdbhÃc`£Pdš!¯æË÷ },±Cª“Àº³é�]î›õÕâÒ‰vwWT�áÛCsÜæ„#O^º~×ÔÒ�{3ØÇóÉ(zûêmtÆMZæv4;¨ét ~>d©ó¨áqïÏgsc ¡B–­Ì´#„s–Ä««›»µÒ¿àoÙ²2²wš­vo.£adÓi4 ¶=±nK«üj»Ýfµ±ðèòòòE/:}ûS¤O´ ƪ“¡žŠS¤‡Ìy�”ÿ/.~zöçŸ/ÜpŽ“¢Ñf.ûT¾X¸9Ð|V+>Љœ’nIz©�àÀÒºúBíN`y� Ë&_^­ã•/Ò,¡õÙè+s½•š(±'ÖjÃd`Ž9m·’m¬TêÚº"±Ûí÷çí'È›¼JãìÖÇÆæô¼ÜçJɳ§Û‡)œ�ÇZlIú÷¯É.[má0.ò«dþצ‚Š�†ê¸D§/ÿ#:ƒ8¹[Oëj²‹vYôW•ÔTB³éBSØyŸûöŠV¶É¶KnNêc¡0ý`M8õ$ÒQ›{è” �3 ””îO=üõ§—S§.Fê,œèj< §ÈR¬Bª.Ù&½t¨E Î>[59K0D'—Ýc=MsÀ]]QÁC<�7}%;:ûG}ùµ7Ž$?KqÊÑdÞæå­ä¡è�?<$Ežú¸_ª-Ç2à•Q¹8UšeëÔ¦é`&¤NíÁ�\Ãs_Þ¶뾄ƒAÊ9õOúà(Ýü×›lë— Æv¨øÇŸiÜ‘…zäßWÀf‹ÿ>^ýúëÇxmþ�e¼'çòßnž$«–R¶²ÈÓGG Uq5 ®ÜA.BéGã¤üÔ¤ð£Á0�•žšô‹Ou†iëév½\ì¾k]µ¾7]»¼awû ÏáKèýƒû¤ÿ�½1¿™˜pôoðÛüßW/ØíO_ãïðtÛÔªn¯Ø’ÚÔ»›-¹÷ÛäHsâ”V…ÿ€öÄo&}û›Î0•ïôäoä;ûØ ×ïþáôCÿH÷¦¢ï<óº™.ÿ©¿®û7à?‡üçˆÿóŸz„ýñŽn±Ó­øv¾IfÂ90ætý¢6ýwÿŽÁ>XÁÖ1þ– ’EÕâaXõ¸st—Åú{ÿhžoncÐîÏß·^½:¾½m�¿¿ä¿o·êŸÇ­¿¨ÿž]\<{þ\ý“ÿ òaÔ¿ n>ç©ß~}r3ÅÚÒÛÛ)ÆÿðñÀó©ú¯üÎR÷ç™êÍrêÍ2ô눇» >}à'A¶-c(Ô‡d ãûù^M¼ÿ¸%£ h;þ7Ôƒ—h,ÊÑ$í¶ŽnÕžq“6�Ô,·þ1-üð†Ÿ³išG77ú9ñÔŸƒ$Ê#uKðøÏ ú§HÁ^:º¸à'äï¸ 5tõ�;ÝüÝ7‹t‘ÝöÉÍN»ýÏ«vÿÂòwó¯J•ûwqGg›pó¯ú¡šL.*†v:ôSJéã£�žþi7?›ggú§(”17øë¯¦OYº?E˜�ì»ìhµ_.�þï¶’ð¿~·ù®?ößÿë¯ÿß÷ÿò={öÑ6ßo’ìB݃‹ÕõOïÎÿ¸Ý$W‹Îxu…ýu÷y÷t0ïÎqÜ™ÇI7kgÙÓÿÜ>½�×ÿ?PKÒV1]WÅèë: v*timunify-security/assets/ui-app/assets/static/other-root/src_app_components_login_login_module_ts.643d9a9f53d690dd.jsUT ëÆ«jëÆ«jux è‡íZësÛ6ÿ~˶²1"õ–GíØnâqÏv|N“™Ž£si’�P ‚²}²þ÷ÛH‰zZn’Þ—³gl¯}b÷· Í,¥F* ¤y`¥4\›wô6ñƒO¿¥1Ob9¢¢"âXšýÞîáÇÇë¾í$Y:²®¯ÍT7~’Üñ8‰9å2½‰â!ãùßqf½‘©Ù'SÏmtê]‹I¨ÝûyJaI›P'´$™žá‚s5¿kÁðç™}0ñ…÷¨ÕîxÕºM4½z­Ó¶‰€f«Öðj6ñ¡Ùi5¼¦Mœëµ=Ï&4�V –%8¡íVan ÍZ£Þ„æšÍºWwm’©}[-èCÓ­»., q³vÝëØd€ËÚMØöWu:°pÍz»UmÚ•ƨg!ÛÓ òÓÔàÓ æ ð,�±°¸=•#–:÷#Ññ±©ôÓ+zqo;‰îµg©ô% ôšYÕk5~Ðd<�,æ ´© 2ÜàôÎ’��ܶ†×¦ž©ÿ2þ‘‚­ûÖ¹soÛ³ ;&"žôVV…tÀ8=UkýÛˆÂú©Œ?QÞå8Qº|ÁÑ 6.™Ù–¶×%*³æµÁ7ZÛmPælº ·a“ ê­Y¯Á„{Ô¦Ûì€ °·Ún„·8·ª,s§ßÀÞS5×&·jbµÚ²É+lz.˜å“¶¶}PèÈ8D?³§î þâŪrhDÇàªÇ1—>È+ÞJ_ ®ªàË3%½Çwm a jÇ#¦>O#_RsmÒ*�W<„5¶M¼M\ùáÄçÝHù8å’Š$FR.L2 sSGŒ‡®âÌ%¦r'‡  '4f˜¥À)¬·˜këâÿÚZÖVJÅ„t]Sµ¦ØÀÚ¥¬¹Žˆ²‰IÜMLŽ¥�€’üš|X ña‘·k‘G.ö\”óTÖ§­Ã“ÁW#Õ¡´%íƒU�‰8¡B> Fùðí“ÁÈ$¹ÒÖï²Ñ¦�Žý”ân*¼ZõÚo±}nfˆcs¿~®�Ǿ¬Ä ®í×ö?;Í"�˜šLî²ÁÄ�2%S‡ôY ÚrF¸Ãý1UN?›a8?Z¤¾H;×¼l™žÛï™åøBpB®ÛžƒÅq"|f=>N!·ëÊXÒyöq¬÷dé©Gõ 0<Çùs&Gºƒ•:rÞD)}¾î›Gª^¤;XZkV/ùCÚ;=wqúú�›ËÃãž¼êõz°Ë¥ÃÆgƒ˜¨×,\­wDæÂôVÅr† BbM¥ ÔwmžpG–i’ëÀ9qýœ1иekL»Ptz‹ð9kpÈèJ–=Eãk€r ­¾;‡¶UøÃO0é�Ñ(„�ÈkÊ÷è�¯E<¶-¾¤Sý�È‘£œ $Ä_K­ |8�JK¶eiphÉ/…ð@íê¿%�1MSÐ}jÿ’œÞQÙ »‹ÞÜÝH™àñÈç°¸DVúŸ¨ GÃvÒì6 »¥Âñ,Šf%�Wç—¿ÿGti™~JUh9÷Û’À6/»ð!Gø̇¾ôñâ×ë|Ψx¸ô…?ÞÈ–½Nà˜/†T¾QWÎPO€�+:|uŸXþûåÓÇœ­w­ûê/|qJ€µˆj�uMsæüô§íHšJ��� ¢ùÒœ XLØV=Gˆâ…üPäï»ê¬4“N°8(‰9`"•à(½Ÿ¹Á `¤Š†p®pä žÅ~ñÑVº˜:õ³H{Yw³Ð ˆ;ŸÂË| /óÇÇ“5¼ÂY€É“üB4Ìœ“µ ¹>+gw=÷mšzˆ ­P­ÙcÉØ‘{Ì �O{Ì8ÙÕÓF{̹t‚6Á8Ù\Sõ¡*)Ú=!PgR ûi I~XQaÂì÷Ʉѻáéè.ŒXÎÊ+4æÓa÷Ä I+ϦX—ñÕü©NÝšŽ`þŠÀéŠÍl€t° “Oî´³ iÇk“i×m•ÆP@dtN0¢›DÉõ6»3�œh1ÏÔn0f"ê,�Msédx [áÜbŒñ$“E¶+l1ÀýT_ªH vas…;bj eõjþŽu>¸ÐÃó$B "ÐyÇBª˜RGzc)S˜'Že*¥îuB‹Á})ŒPì«b²©o�<ëøp:ГãÇÍD°±Ö#Ÿ©V¿FjÂg) +·™”ØJ6HçV9°2K©cyDQ~­ªÿoe›màFëd‹–7§/ÀýŠÏï CQ×&Y/Ê"–JŠ¥¼’3’9‘yp”yš†˜º«ªZE©Q¹ Ù j ¾¼¼þñl �;ñaQͶ@ T¸ +7ÀˆT¤@á Ðlí`´9÷¯Æ¶z´µO=š“zBÐöBÐNIP·º[RW•�Á§/Ôõæ’6·IêÖ¾@Ôr¥Z'uÕ©¤m=¥LYµöV%lgû9zÒF¥•ïâI© ¹š`¡ŽîÔÉÈ$��¨È|!eƒ1FÖÏRq®á§<Ø*×ü¹e+R°áر-Ï+ÆmÚõÀX0œt~¾åõp^ -µQle|�y òšxÄ[©�×cת�·Ü•+âRî• ý?«*V ç¶SÑRd’§çïäR ¸õΡTVã6EJ'ËËÁû¦¸’1»K�‡ï×Õ»à{C@ÛLºœOw]µ*}ÿU@�ËÒZ{3ï—1± Cšæ¦À ûr³~ûµ|XìðÔuÕ¦‹·ç^)Bì‚h™‹‘c }›¸�îúíц˞]טUâ6A¾âÄÁÓú׌§Õ¥� )‡5Ü2ô8¡Šï€QÀ½7ι/�T¨'o° Kǯ1È’ >¾UÁ«Üþ]Ç1r�]oT ØÆÓBÞl] /b(ùX¨Üˆ¼u~-•�‡A@Ó4Ð}1Ì‘&Jž¥ë=**@÷ë"BüZ6yg ©’;‡‘Sç#ÁjâvRŠP­SýOøRyåÜ@×!†õK° ùäüÚé“T>D¨#óú†Gq*+?¿9¿ü±oL?pÃY gã¡k "z€=³TBP÷ºÿºF@Ñ÷ÔNªä5YÌa(޲1WC ¥!¯¨K†¥%€¯å¨k¸Õê�êyDÙp„»úQ¥:£QMîm5©�oá‹ÏÐ@î� |;²0aùÎp+o謤ì?/½"›!7h­àv?^5ö}JêÔ¶$žZý×2ÔJ~؃…ý·rSHýV½U_?¦Ýuಠ|m4 R¡9 ‚i ¼ I"º‚ óT¥&/_^ì¥ÑEÊÖË—ï¶n±.^¡˜V»Ýî4wã±-!l?úzÞ_V_aû a©ùDTú:Bm�?_[¨<ÒäR™}ü„˪æmëÚw’>9q ”1^žçå«IðM¨þ¼ëJ}iÕ©µmr†ßà¹ÍZË&ï°ÙhV6y�_Û¹nÓÕŸÅ}^ù,îùŸ¶mzÏ4ŽÃÍï™.†úÂùk&>Ûôz�ñ�»¾}‹ñ²oŠ_È1€‡P¹�ú„�“Xàžâ•Ÿ&„wLÇ#…Öõ4ñ!8™&™ Ù=!�Ï‹×~Ýk|ןõmRª–õ6åÂ8ïY®¢óÎy�œ?_9”œ9‡PtÇãñ¼û�sµçˆ¼wNÈ2¿ýÕ�öfÀÏÁ?^¾ü@s&zî' €¤wWg½}?îtšõZØñ;ƒF-lvªaè|L!Ë$ÿPKÒV1]uc¦îb<°imunify-security/assets/ui-app/assets/static/other-root/src_app_components_showcase_showcase_module_ts-node_modules_dayjs_plugin_duration_js-node_mod-18c606.717c1cdeba8142ff.jsUT ëÆ«jëÆ«jux è‡í;]sÛ8’ï÷+ŽgŠŒ Z”eÙ¦†«šµ3ãlEIn콩¬¬uÑ$$1! :öJúï× �)QrÓ»¹ë}úgñœ‰MZ cB;û§—ËÑØ0ç)Ÿé£‘ÆïÖ�Ïo=ÍYLcÁoùŒ}ö\N׃ˆùiHooÅÌÏ_ù­ï>~ä·ó0�ñ­Ÿ&®X|ûq�Õ²N½^»§�ÉâôÈêvl]JbÃùËBK9mp‘žÐú±™èÔ ±éë”,®²m‡r[ôW+£ï& æÄz·ÝnŸ„ã°wfµ Àðäè¸sd�†§�ÓNÇ . {ÝN×2HÃN÷äRž¶ÏŽ âÁð¬{Ô;5ˆÃ#ëØè—õÎz°l†Ð¶¤áðô¸sDОVÇêÀòÉÖ)Α�2x�#«sÖ6ú“4öP7�GT€±°~?ý¤»#í&mwNŽÕOÒô%ÜNIo-rE+tïh¨�4UdAÉ"Ú5墱+#ù*ö×0VÏæ#ðX¬ÔöNN8uoö .îþ,Ö.f4œ?ƒ‡«“¹þ·8‘×ÿw'RÑxçèèí /t9oˆІ‘z‚%º0bpsÂ’è¯iú4q)@Îæ¤9MX:×Nãuš“„Eú"¤ñTÌl«Ý^fäÎåñk!‹§ša~dA ì«1áT\e©PRÐÌ(®ç }÷��-¦V±ÅMŒ›+bQÈßc¯N±×ÏwÉá_²í:°ÝŠ H›žÚEyÆÄõœÜ#!-.*Ò$nÄô³N—Kal:¦$�ïéëø# À�Bó7ð¨Ò^4w6WùÇô¢y,d‰V@Îgn<…õ±ò9¯ Dóý ½ß5ä0dQsçʤߺ‘šÈüI“‘(âÚ.núz"ÉÀÔ{iÛ8G6f®¤mË|½f,Á\Ëb¸È_Ë«êÉÝqƒÐÿ”Ïý’ ƃÑb" ƒøwö™°³1á>d'™ŠÀ–$ÁQ¯ÝºK…Àè äP¥aà}ÚùY’Âá ÍCva‚ÏM < |Úl: AÖíü\И&°bÃ6ÈzÏÂìiMh«=éF‰Þ�‰é‰¬³c6—§ó}äÙ¨»å�sU'÷-äé~y*i`·(ÇD{ó%EÑBôê„Ø.?ÊBx»¹¦7£Þ'ê¨ÌžyÚäf^L?à(›nØ»qh¬PvJB´ EÇÿJœª`¨‘Ž¡ŸÍî5C·À÷øÜ­±�Ü1À3Tô•Û[ 5-$Û dœÛµ‘Á~9ªáLEÄë’GÒ!• ›t÷®8&ëª =Þ» Gî6ôžPÅÓÊ8)àô©8ÃX›‘_˜ÚÏ8ƒŽ¥’¨JO'ûtÔé�«çCçˆ\?ë:]òúùǰS#H‹L‡� rÜé“úƒ ’'ϳý¡C&Õuä(‡½¼ÂÝéó°Ž7€ÕÀ¬ýTD:uvž°9MÄc)k¤&%zQRÍ“ r“Çí ]ÿÞ�=y[s;öÙJUßiŸr ù–[|3BëÒ”¨$°‡Ò¶9W¥†BrSäÝĶ3[±m{øZŠÛ'ÿÿ!Eôv”—M¡ ƒfiNcŸÆ^@¡Cbæ[Ø�¤æ„xæ0ëˆ�CY©¡*aÕX•dbžowd–sñvú–ý— 5‘Œ²df^Љ›†`)ýÅó(ç,ðÛiÖ»@()߆H#ð¯¹Á_äÝe,õ>rµôa™™›ÉT²ŒµÙµ,ÍÈ�”´J†8Êúro~„®^<†¨L¡£ÛxŠuDÄÖ�çï†ï77q£~; b»aÏú7ñê&¾‰+¹ï‰•­�N,o¯—oÖ�_¼·6^A[�—Ž+HKòVú܉õã³³#È;·8<éöÎŒ>^h½Ú¸Ðz~³_×ÅG̯ïâåi¤!]7ñ«º † þX¿^] 0Ì|‹ š³›úÀü�¥‚&Š4¿óYúúh1wÅ̆†²øv`¿[� ÂÌsE,V 7oɹI·L#›^»A(,&{/ÛMº5?l�ÄŠÈËöÝŸä·…�òs‚[úœ�}"àÅ—…¾¼ÍhÎ=ù]*°¾¯ïðÕ]öÄlW]’WäX@An7ÔmfC8Ô<åBaˆ>ÛF‚j�Ëëá�Í�l s7D�K…ÚÔ�çnZÀ@ŒâúôVÞdm^r©‹>ü:¼fePEx';ͯۥœÄj¹¸&S 3ccÆ+¥�‚ôÜù´KLgâO\Œíºñbu¶þä�W¥¦�É}@?ÿgJ“Ç�›‘†P ýËnixD[§þ߈ö;�$”Ï[l2Œ•fNÊ0 H¤k :œ Gበ‡Ü^À¤-³Ð*»ªëf7uë‹:K^%ݲ̺IÙÖÕ¥‘E”ÞVñŽHÙ0åÅØ¯Ù-<ßM¶pžºRª÷ŸÒ•öWÐ/XÞÇÈ(Õ6V•Œ#’‹X¹ómánöyåÍveûmÕúAɽ+ãsÈ‘£”ï̵Nwæž;–ø4±œAÈlXó‡Æôÿ÷K¹íNzŸÝèœÉÕhÌ¤ï  �AØ=M&!ûÜzZÒ¿ªà»1 |`W‚FëŽÎÜû€áöcb¦2§Šù�1¾f¶ÑØ/ ià2@{öJ¥‡¹ëûA<…$Ü  �N ÝLDøgØ‚eߌ­vÁÖÙºÎ07h'µ [7 B8%H� Œ×£d=ìXX÷Á®GÙñÊÇnüp$ÿIÐçY hK.³P(·Bwjlªuä'»!-„ÔW6+"ë˜'òé™OƒúÏó*µÊB(øn…ÿÊB¨v}m!T­kê �³ÞQÛ.ß2 “>ÈÕNé¡¢GT›Ô°cÑ#œí‚îŽzô˜Îi¯ ÏÄ9¼é£ÞŒÇMc¼ü°°HwµªÇ<:«¥¯Þ.ÕÛL=Üå/ËH ¹züC=®®®§ÄuެcØ©GB§ÓëœÂ uÿ©·–7Mcð^Øú¨ÕFíÖ1Ç/�Æ`8¬þQ¼�Àëí‰Ë/¦{e ŒÁÁ!ñœÅ#Å”æ81ã6tNî#·2c)À9‰‚ªVn3Èêàs>·c€…a�¿Zä3¥Ÿ¸ÝkwOé1„m§î~¸@ÆÄDÀ&�áŠLœr¿(Ùic°òÀAÆ0«#�+¼55©9ªÝïçöŠÌëf" ž™ Bx±å Äpùq|E¦u«$Ž{Ç%Æ�SMÀùžI{Ó©¬Æìm‚W®€â¾‰¥c“®ìÒ´Uš»ç "–í¾¨ £\w*f Cö¡Š’Žyà;‹•ú’|:1¹g�ýÚŽã`ŠVàˆ;Ù·æ9˜ý5aѰt°˜Ñ©‘ÉT_z£”±\bàFZœFw4Ñ€(Ä8Xa”ë[Ü@ìÝ€ä,kìN~rݦôNN˜Ÿè#껦W®7ÓËŽ�°Š5GŒ0ž¨==7ܵ�xZÞMªØ5Aå@>•òq¨é¡Í zG}�®±�8 ÃŽ¼•A«jC,¯hÃ7¥«9Á¨=&9HyÀ¬5Lº€:kú$@ŽÖéžê–h)Oàñ˜IÀÞxŸ^Ö1_Pì©™P  †JÊE™n./¦ŒÁÊ ¨œŸâÉ0ê§ Îõ!–mê4/—mŒ.¯Hý²ÞŠêÀ½ûU½CÄ8tAØwSý8Ê©°ªrœäD°¡yœár†oÎ19ǶÎçb9—Ö•Ä(©`¯¯Þ]I+Ý–ï@¯F´xj ¬¤"Úà±Ó,K:íWì ¢AÜtN^V€yr ÇD»Ð° YS—òíRÃ_,mª„W»&ΆÜå}ËâÂöIÓ©›9Ä<ž82ð&,�}/áŠ?vOˆv¥á/&B œÅÎ咖Ƭ4æ¥qP»Å·úíW J>r³Ñ@»ÖäE�£‡­…cHBï!zgMšX>H›9ÅfN°™Ó˼ (@`ö–K­¥Fí}ûB³=e »z÷ÖÙþr"•V2]úˆ"\Ia¨«Ø1´ð¯5¶..®//í(²9× V‚ê³jQ>ØÔäf]cT�4jf»jvhoápXAΠ­ »l›ä⢂+aæ¥]5?`¿Œª€ndoÚ$HZa"gøÜÞ0VÂy?gøPõm�[[-þ à¬òx M…Ž‚]Bj‹0¿ìøØH௑á!º¼¶¦ÉâÚ!&baŒsJ·Ïš¼1s3+3Švè�X.ÛÔѤß+à\§‡v�\/0&Àg[²æû[¥› ¹ÄÌ¡ƒ¢V°}¬ˆòbC ¡JÉÙ¤(Bšì¥Z–m©L$5ÀÓ;‘¸žØQiáRàD2ðB%‡�Af¢»”á…,¦z‘‘±¶„Ú„âB9Uã_k×lÍÒÈ�¡q¬ë°„n(žòUZÄ5#ã+ƒ††ü··ì³þ‚JŠ÷øaáÝd—»¼š«qI´#û•×�]èÕóÎ kWê¬nZ·öKvÜØìêé}*+òº_(‰³–gï%Ji…ÊÞû6�9ùË}èH¼„-+†}”!'|±é®qU9¸�®òÝŒðûБr ;+öª[¢ÚÞ»@*»„¯ê®}Ô%FNüÃ>t¤]`G+ÿ.`G )¤Rµ½n¼„æQ32 âOA‡µ­`~“'«€³õreK àÂ?ÌKØeß•Kx)9üǺkc! –¤`š©B,͹™ÿ=ÈF$TI�ç᥈le¡¯nü"§à÷U;ÃÖu=2 UV’‡ÞþZ}(–þ^†7"ˆeØ�yÄ* sEê¨ µ�K¶È­V;–Õîü™;"'‹¨úpÔl�oü_ØöÆàp YóPÇ™¥„N·Î N‹ê ‡—º¤ÀL…W—»ñZƒë ü¬l Hx9à&SnÃ�ïÑ9¦þ¤º¾8ç@Ϫ½ f±PÇž%è7ÁuÇIñ:Áä»É„ƒ¿A‚5Ð2e65¾öEYÀjV�'ª)ëgO§z €]Ü6¤$ê¬åɬÛL±Õc’7c¹ÌÕ»³ž!.6�afÙÖ!lÄ”ÐòQ¥¸I«¡Ÿu �@¢Ï߯Ï…®£Žž36,¦d¤+à<Ó‹ÿQ?ÐËz©BH�ÖÄó(’ÍðbæªÒ”«+”bQ¥ !Xv¸ÖL¦—ÔIÖÞ/��²õæÇ�—�ÎŒê5N:hÛAåpŒAZÚØ.OÕÞ¯0ü,T-Í*×QôQYË™ßÀPyó‚å¬àK_]ÒèšÖd£öØÈPc°�tc¤MÚcèI9^°$N¯ý²ÉGÖ¸Ù€Ggœ»nš€DZ«Ý`�Ø­d2Ü UéûÊÇ‹ë?füìX½Ðf6C%¹Š¾@ã:Ï;ÔJñ)¯”2T·0ôì½Ã"nfÙ¹Ú+®ˆV€Ÿšÿ´rw¶[ÖËMÏäÔÝü1TV™&ÍüǨîüU)âdVW’†”w©»ºJŠ]eîlƒºörô�±ì’sí{%W¦2àÕÀe§-…ŠŠ¶+V×Ìf«Â,—y‹V£»­Û¹ŒÝhõh÷¥@Þ~·%_¼ÈxCœW5Õ&=;Â�nñJ ùJy@¾“dóý|P“y4ÙÔ�—•Õ5ÈÜY«^:¸F~p6t¹šaØþV¨™~0™ôÕc«Ã8œï›"‘óTZé=÷ÿ’ÑމÏÈ_ûÕµ˜„q¡*Vc£ÿ‡‡?48Ä\�Ýùtõ÷ßß8ÿ™kžX'žåùôÎ=µº�ÉÄüÈñªøPK ÒV1]?imunify-security/assets/ui-app/assets/static/other-root/images/UT ëÆ«jëÆ«jux è‡PK ÒV1]Fimunify-security/assets/ui-app/assets/static/other-root/images/common/UT ëÆ«jëÆ«jux è‡PKÒV1]< 6ž·Yimunify-security/assets/ui-app/assets/static/other-root/images/common/contact-support.svgUT ëÆ«jëÆ«jux è‡ERË’Û ¼ïWL‘3òˆ-ˇý�|KÕ:–«ü’—X®ýúô`'‘@0ïî­¿î{zœŽç¯ÁLµ^ßW«eYº%t—Û~å™yCÓî°Ÿê`¼\†–Ãg�þ ÷Ãnù¸<ÃdKbzm³y#<ëëÏ:ѯÃñ8˜Òëkšho¿�»Áœ/çïÝíbès0'éÙb9,ÏÎÙ:ñÄÖ‹³¥Tl½ÎÜÔO¡>msvÄä‚ï"ùÔÅ긧fÁ�Ú'‚nì™mž™rD< N¤Ú”Éù~¶¢ bAm÷<>!mO KªXÐs.v2wqÌþ•!Åæfè‘v”¤‘J� (4%©}ôÿ ¨IUô?Ä÷<9æ{”íIQØg—ÁÍ”¯Î[_´X¶íZmÓ£JÖ>°¨�I�È))\kÓ#_óÍSR¸�)�n ½™]„ .ZC"<¢³°lN/làŠ e!íÝDl éy?GEአÀXg¯àµUä0X(„† ìPPS£¹1¢ù!*‚6ÉjPIúí gŠ[³Ú¼­õÜüPKÒV1](K<ÃáPimunify-security/assets/ui-app/assets/static/other-root/images/common/loader.svgUT ëÆ«jëÆ«jux è‡�˜KoÇ…÷ùf“£V?ª_†äE$È:;¢%´(H´åûïïwzh‡ ¨ ° 3==Õõ8çT�®ž?ßM/ÛÛÃýõªûÇ/«é~³½»?|½û¼Ý¼ü²ÿr½ò“Ÿ¬ò»š¾|Ü=<_¯î‡Ç7——///î%¹ýÓÝeôÞ_bð¸åÍ—Ýöáù�¡÷~9ž®Þþ0ñsuØv›·ïö7·›§«Ëånyr»yÿ¼\ŽÛÇýîwû‡i{{½z¼9Ü_„Õô¸ß>ž‡�.ÕlÍ‚ü ÙÕ˜séy\ú�¢Ù+«óänõöêòxèѣ˿\ººŽüqs·‘#χ§ý‡Íõêaÿ°ùzwqÌ.�ßow»¯u}ñôiÇîÍçÍÃþövuåböÝþn¿šO7Ïï÷O¯WãrwsØüt‘�?ót�—?ŸX8±òÛÓþÓãE|ÅÐ_v^3³¤�TOû=FWBö¤l6—co-ö4­cr!§æ­ÏÉùsÉ-O¬ŸBõu.÷Üb ëÑ\L¡§>{^j²+&² ÝÇæó]Œ–¹±‰ÕƲµÆy–zë9Ä)Wki¡†¹8«¹öš &º ÆbÏsuæS-¾·)WC1¬±Z{옙’¹Báì¹¹ÒCPHXh®¼Ãp.–’ŽqÔ{I6.sð9Õ)4g-éˆ9j Ø]‡Žk^^Î�8²e’2EŒ¥KKgû‘(ÎæòÝùå?W£š¿ 7ß°ô£•º¶<0J…þ­pr¼†–ñ–Í8‚ÈÖòÜ¢©Õ•ækUvZö¾öD~cë¥QŒ)z×¢¯�4›˜ãØ»fs�æ{Ès`‡…˜j›‚JdÐ+*;¹£\S06”œÁ a&vX˜ˆ$¸ÇÙÜ\êÙ³c’µž9{æ52iâ,‡yþò8úî“'Œæ"j%«œ ×�\OÕ‘þìK ¶œSN*EçMÇFb ¸‹óëîR`wMZî9‘¦ XAjÁ®Ò”{-ÓÙ\žÔ'}G}Ä 2 sfdÉ×7‚´ Rp²N Jzkª½•2w×C7|�“yçC®ëÿШÃ:A è(g;ÀŠGR4k‘ôšü€tª0/E•‡»oeð* 8˜ O-IúâGS”±JÑZËgÁù†cVfàUŽNdg–†‚‹Q߯:€jU0 ”%µ±ùl&N²›ÿ{vO°¿¢€þ›’r †ÎIà°÷ñæùÃ0© iêâÈËýö°Á�OÏ›i´µ7÷O›÷8xìP8È#þêµWL/®®wÛÇ‹¦î^Ù÷ 0¤ÜZ‘HÎ§Í ÷ä‹®‘â”, |KÍj "H‘Ž–Áñ¦HîÀY†Ml¾¥¨MàÈ©Ä"€®S—(läV @;i¡óIc]ÃM¸„âçHä•zg ky³O bºùø˜†Ï¼‰Ä4ø�‡½#D@Ìs¨< ÍÔI$¥ÂR *{3Ž“Æ”}!5L¦ðbF±„ñÒ]vÔu"�¦¢Ö¸¦óù<Á]ý'î&•ózõéi÷Ó� ~þ,ž«è ý»üKŠ ‚P›2èŸÈtñ~t)AõƒyUÜ úÓXÐìB]'£ÝÐMG�èÖvm4aŠLfú˜è¤vkä#çes’Ät©‚¡Ô¾e C¢žA&Èy hGœéÇ>u@ ¦“¬eo†8xÙ’D¡˜`›iÒ�¾:š; ÒR]I9q¦–YEÙ¢P’¢ QA]µŽUéœS‘aJ::- r´”ÐðS-É&¬¥‚ÈSwâ(-GÍkÞCHãpNbjyŒŒ!`_ØA²à…�ž® §=Ø�È£}½Jb•ðÖé2CäÑήgg¢‘W$Ô¤�$‚$š�V«²§þiÒ\5ؘ¦/:%¥ £)*¥@M«1eÍ@Zå“ðãM±ÑK±`qHŽ©¦Ò®S!y·’d?‡Ö§Ñ ¨4ƒ“úM …AŒ÷5'ÄŠ®Ìj8Xï"…I³N!ß±k 뉓éSj8Ô·Ô0²€‡‰Œh³\Ðf\·R}é Gâç†ÖA–º<& õK‹‰ Àí« %M©„O‘Ãt9[‹ÓÇï(°IpR‚ªDaúÈ‹"ËA¼jjÝiÈ)W™9ß“�ÈÔÔEÖ6@î�è®Yj .#™Ðrg¢VÙá>!F¡œ”2؈+8ªÓhÜó€EªÊ�=Í?šoH�Ô^m!¡„pI%.TMƒtΈÊ` ²”EÑð×ǸËÖÆZZ n˘£¡²hÐ &`À”®ã�æKÆé¨2xÍ˦®R4‡wSÄ"0³~žÎdñ´0ö=ã/ž ö 3‡>)Æ´nÂ"¦¬Œo•¤yßí•BfP} $B>+ä?ª£Ï„�9Cæ`�Lññ9#�Œq�-G3avqôu$î�u¦åã ý…(³i–ôÙ44\�œÍdX?$4Tu}QÑ–Ç@*€ ‡ƒ¾l¦�ñZÒÀ€  Ç‚ï¥cL�ƒªxRVg) ‡r¢Qjud¡TôX¤©ú<@k¨¦à:€Õð¨)¾iIËžf+ÃX`<TMò¸ˆ©gËqZãòŸjü·¦úíf\\é?oø?PKÒV1]¹U±ÿ« åaimunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAVPlus-grey.svgUT ëÆ«jëÆ«jux 臭YM�ܸ½çW½çhHV±Š vöAz¯}ðm±žØ8¶±žx6ÿ>ï•(©=È)hp£DЬÏW¯äŸ¿}ÿ0½>¿ùøxêý4}|zþðñåñTü4}~zýû—?OiJSïŸýóùÓ§ÇÓç/ŸŸNÓŸÿúôùÛãéãËË׿=<¼¾¾Î¯2ùãÃCI)=ààÓ/ùùÃôåëo¿?¿üÇÌ–r6ç㯿½|ŒÃþúÇ¿?==žž¾?}þòþýiúýÓó×·ÏÞ?ž~•4kjej³´ÜÊYòÜJ—«Í–‹œÇòu,¿Û÷g›{±}{ŸKÏ­îû×åw›a?ÕðïéáÿQQuNR„WVS9k™»'»æ<÷,Ë'ˆ’L&ÈPµO9Í-%§¬V)J·Øžñgês‡ÆyÒ<ãmƒì­×F9×T7yÑ4×®z¬§9µÖö÷¥ÏÖTâ|­¾@.ÞãzëݸžÜC½\õÙsjô”emgisʵ_ÇóeÈÇ{³Ä�sžîå¸×ç”ôF/›µc}Ó[êÜUòndiÖ�u�»ä~¼¯³•f»ß WßÝ 93(Ã뇈˜\·P‰ÌÉ(£y2·¥*u‚,xÎCK¯…róJKO…—ŠW…äCL¡tA²6ïU)¶^*e¬¶ÝmöâÍÃg¦<®ˆ †ði-9r¡¨c•¹o[gl%Ša}Ë…í|Èɰß�\2󲫧‚óJÛÕ‡ìeMÅ0roÙ#¦ fïòêžÝm#ãïS>•J7øÊä*Ë.+”3� […OꌈÈTÀ�Õ–QÂKe~Á�›väŸk+™Ï%!>õÔ7yQG>'=ÖñŒ;Þǹªe?_ë¬ÌÃí~ȹ‰íêíòª>�FÌ%ŸyNW¿ây˦Ë�ùž:öCVõ°+•õ^„Ä(kÓF=¥zÈ]¸îÌÜÝîîMOæ ÷oë ²´ý}ø©H—ýüÊ:ENm÷Ó¯Š\ÙôÛåUÿÝ®žë°÷N9�BJSyK—4$n®¬KÜ‘—!31•`0Åã|ªpN]ÁÆù± ÆaÎÕ êp„\‚9ä¥V‚I>ÖáÏýx`“­çMl]_ïG¡¤žý6yÕÿºÛìïÞiW©Z–!ó½ŒÆk%åÀjÔäV[=ÔÔ¹æn20�jJAN5†¨f ™n( ŒÞ×�ÙUoÞ�ä’�óä~sÿ–¡Þ&®ÚoVÝ' ˜c��k£·‚:VÝýX>ý¶4úmûÖè·ý÷lôwv” á²=ÜïÍ®› Ê¡ YSnË�i‘d$Ÿ±c¡y8€qÂë¹ š8Õz­ dC·™DYEc4ÑáVL¸=!Ö›?V]®ŽŽQDÏëêb쪉gV/�GdD"I™W¶¦T¡¹å•U�^Ý|A†3Ó­Üåðî¸}xâ>îuE¶Gw ¤¹8˜MEËH;I¸´Ã6q>·j�ø®Í/FëĶ÷Ά¬FÙ\Y›¢Š–‹±zÞ·�ëî£;Jþɸœ»”è˜:*½ ì‹ *…MnF�£[$tÜ´oKPŽ™%ø ¤+<©ØŠÿÙ±. šû«µ‘çႚ�},Z7º 4 ³û''µp»´H�'"˜ÌŠˆ1 ÙÍXéH>"BJb ;? `"°Qù½�·š‘Poì¼SàÉÑâÁð¼›-` FIB—ÛÊŒkð€ZéAÎR¼Â© '™¡¡Ø!‘&x��.îÁŽÀa2t¯€„•ÒsD}¾×è28ÒʪFn`E(Çæ`aJÒÃŒ*ïôl¶ÏžPÞÄhèIõP˜QÆËœÏ‘gTKIŽñÊÒûÁØ;¥ÒÉ+¡Æ+²‡Qwr(”i ÄÂC;˜Ô "ÂWˆA´…ÓбÐÓ•ø*LÛH$ŠöVÈ3�¼I݈�¢£E÷Ç‚]É.À æ<¹”©º6K€á’ÑiF(z£ú�F2F•œM €?„=AŒ�†iAÐCe̦ôÚ¼0E)B R§˜™B�©Áâ$tãã S­vžßQ³+gíÈ Œ|A¸iXæhœlÀée/sPj¤v �x�¶D·*�Ž›‡"åÔ_¹íeÎA¡‘åýhè�²ÉØê茂„2¡”#«@PØ€Bœ•CkуphåyC=dºLKÁðke $„ì ïUî'Õ•z× Ž=¨2! ù¥ZƒÉ*ë±0¯R�Å®)²Óy—ᤓULŠŽ…ôË…i×€qY,­D¹ÜiEaÀ%"¯8‡)£]Ê8â#+Û¸uÍýü�’®ìלÕÛªFv¡Ìb”É £‘]²Êpk¥S©4�$F’*T¾1‹c´ã Q 1*€㹞ÓÖ䃇01’‡C‘Õ•Žgc¥CÈÙX5(|)«ãsŽû2Y3=äÞõç9™q¥)‰;„£â\�l�½Iœ—ˆ¬Øïa¨w[}ëŸû8}t*ÓÀ~æ¨I8Í… ÐÈ�Iºuß{U†\ÓÚ~›¥˜LzµÐ9‘RI2ŸƒZaž\¶fßUï„V ô8�6wø–HV˜ìLĘºZ@1>›�6l‚ic÷h@¨-†Ý¼ì½ƒOµ­EÄ9÷¼1ö>$˜†Š‰Œªwˆt€­µxF•·è·‘¶æì· ÏAïb‡ üÆ$*¶‚¨“$£��QedéTX©ì.�{U¥gb(ÑHªàGJmšt°^<§Ç멮Ϳ—q âSU-šJˆŒˆÞ¼H6Xƒž68{„D ÛÁŽR„ÇQkÓß܉'±M­)™›] 6–áh:WWÛ¹ÁRŒ—V8»Ænƒÿ æ­ûœ!£Ë­¬"ºÉç& *®K#H§›}‡Ü2Àrã÷>§µK–`Tç„QÀ2Þª1ä4&È ’ekX“wÖÍÞÀÎ�ÑïtqÔ~9ö5`êÍùAX8­Û=G¤Ú‡ D‰äZÞ,‡�mûLLkû@}øœNŽ}¸ßÇ9̦CðîW˜"ýÐe4¿“ü1÷áÝ3Ô,¨¸ ~ƒõ1íj½ÀÊJòÞù¹°)­Æ$].oŽ»S�Âk�l ù~i  ¥FÅe²¾öW¸ÖP ånº»rí^oeg›ØBÖY÷h´ø-Vû¾ï�×ÐSÎU¶{.­�Fmñ‘u�^¤ÄGfjÝ׌„W(K)7_#ü$~$Ù”œÌÊ2ȶF�·°,ª¶BÊ‘F#=Çê°”Ì6–6~÷´²àèzã!å$–bqÊ‘zX ª‘úápãh [@Î#@÷‰v fT�;î¶*W~¿ qí± Š1xLVÑ1:©l©›|îèÍ)£)ç–|ì#nvœsȸæºß^8 EnŒé“�™ =Ú•°[Ú!óÿF’Ä�`]öçùÚúžEyTþŽÓ7ù<”¸r€C\6¥1 ñ‚ìœg¶ïaøM>ã—Í)û¾á´ýœ!�{®ûý«ï—NðR9ôÄ‹ªA �ß|odšyfïmn¹‘Ãm?Æö&ÌÃþóí;~þ PKÒV1]IÜý. =+Ximunify-security/assets/ui-app/assets/static/other-root/images/common/logo-myimunify.svgUT ëÆ«jëÆ«jux 臽ZËŽ\·Ýç+.�6‡¯Ë‡ì‰�4�Õd—l²s¬ñh`eF�dIþûœb=È–®Vz#õTóU¯S‡Åþñ§Ïÿ}³}¼÷þñùéöœ?m÷O¿<¿z|z¸=ýëŸÿ¾�~úëŸ~|ÿñaÃȧ÷·§×>¼}ysóéÓ'÷)¹çw7Ñ{ƒ'òòó›Ç§ßކÞûÍøö´}z|õá5v¬ííçÓöúþñáõ‡ÛS}|¼ÿô·çÏ·'¿ù #¶ÜNë!à GzØ_ÝžÞÿþîן¹’·?x½½ÿðÇ›ûÛþ÷üÛý˧ç§û~}|óæûw¿¿¹yÿñþéùÕ«!yùîá?ö/¾ËÝùЋo/¾‹ÙU¿·_ü…'=¿ýù—Ǽ ?œ6ìö�-&WRl!nºWúpÞ0-ô�}Ù’‹e/q'QÙcÊy ®–¾§°ÅÝ%ï1eóúS‹‹m{Ù¢ËÁ�Åõ”öž±E),ª®Ç^ZÛŠ«©Å15a™R„Õ•6&¤ä| ؾ9ZÒîö­óèÐê¾…àä|•÷ 8<ïºK5x¬ µ…pB›ŒECTÝct1äíš«‘T>2ÌéæJN� ûÐwë.ªS Cßéä0O¯ãŒ¤`êtìâö1c‹Aí°/S»k)ÒTX‹­R�>á`äϰC6ìsô ј›\fï…æZÁ*{†ÿ:�´”JŸºƒý-íÝž`jšÜtߟŒapdÛ{"óðŠÑã¼Åå8ÎvÆèΡS]L>Ó>Ñv`ƒ¦™"çÀHWsB_¢F“SŒ�™é¸bªT%RvÁ¿¦Sαó–ib��¬(†O]¿ÆZ¾Wrwj¹Ù »Ž]1§ Ÿ"È í56A®b“é³õp‘È3Ît¼1ÞËã �Ù8Tà™€xè‡Ú^ÍÔÍ 3 ›:ŒcSŒq¼SÐ2V (ûˆ?¨L‡�#tY+¨ÜGŒÐÜì2™3fx[e¤V$° „B�̹{ ä-6—BaWa?¶ÁÀ\dàu`ÖÛɹy"2IDçˆ#pšâw kU€RÏÃÝDvD}Ö·º {‘’pJͤRsœ-8zˆä,u5/!ôía~ÁDWV³#ÀúD ×Å œÓ9±ë€¹’,ȉ]«!±Ä5¢uä»nØ5ÃmÀ �2+�ÙRs¼‚PØE &d ™‚’¤ÖF:¦Ì‡"CE§ëʉ{„G²0£’dšb¤ÖÐÝe.v¤Ê»¡°I*�*:Îr¦9£rEÒÙ³Ÿ‘�ZG½£H§ÙÖ¾¦«9òðÁklãsc@¢dᢋ“�:rE ?4û@oÏé5ôn\Ç(«X3XH †È‚Y‚xŠ…!É*ßÀ°á$pª �\òr{•P’³>ûYÜð}M£ eʶaHrg¬c;˜…+­½�uÙ=¬°޲�l†ê…±«5Ž âCìh°çð;�`œGA ̰šr¢d¸t`ë«ùy׺?(]ˆ†»ã±ª†„�Â=º’9„ª2ü”(¼‘ð’Ò�*ðYaOÁRáÀ;"0lëê(øÉFÈòÛàɲ˜e»zˆð31IVu›U<œ¿ II¾ í—…|0�³&ˆf©V�¿6ÖõÈb±‰ºÁ v0ܶl*Žo¬#"�Þ¡›�ú›âO̦ ,E†âU*e6j&ðÒÕ�= ¸SÌvfï€e@øXæäêñ‰º²©1LÈ$ÕE>6–‹Â̽&6–Dñ‘™#ù—×`Á u“˜¤€CÓ,7 a«†˜-4”¢Kd_ûj^îII?ü#y·õ]ïÇÒ?î–Løïm]¹�mð\áPŠ«È×ëšð[ë^/%B7>·Ø%{²šr$„Æ�1c;³=à^+|…"ªÈ ¡×ËO ÂD³Þ/E•\”’R½€�Râ¦�2"­cƒí;oºDK _ $)i:ªGåkÀ®ŒÙçƒ0N­¬rVµÜÝ*&{1´“U“×ý†x.r¾/‘ë€ýõhEqâB Ð`†·(ì³ûÊŠ>iý¹°¢7À[džeQ©Ð$$/±Á„§ÐÞa·‹4„EyÙ*´Hº[Åi :̺_K±DTX]¤Å‘Ú9*,Á…±£þò� ¹ySò ¹t-`ä#“ë Ûe6ó }¡ºÊáÈæo|™�¸ÊuþÓ&Vå•|SH]½ÛR*ÛPŠa¦o´¦ôq²‹í)>äœ ú”mBà�r*\”xærÓJ 8ˆ-W‰Ùœ@ìGþ+(l�pìÅw¨)qÇßF±µ”®ñ1¥+X-Òª5±ÂÈL¨jq V¢` –w˜í-ý³ÖÛ굫BU”¤t%WSvÞ î ã‚¶ŽœôÐð2Aº1Iz–¢]'œÒ7îfÁ/‘«uQ®·Èª’лEºÚ¨D»qJç çUZ”-@6›z¦ m­‹ÓƒŸ(ðªšÚ˜4cìF,W³íÍÐpެÊ1çz�e¹DSÅìâ¦oô RH¨Z…ÙHSºÚg�Ú:<–®x´H‹bæž\–"â8·˜7"+¥‹…É»²ÍQˆó¡%ófêP�€ÕäfŒž‡-e 7 u#¯·¼½+E›²óp¢ôâDV’“]«gj“ÁÙ÷øªJÓ‰[¤�§€Eá¬uÃVëÎ_®&YÜ“êaã4‘L È~}‘°ÚWUÃT˜ÒëýGÌW³6XWC×]ü`©E##X£k‘™‡ïéŒÂÄ#Tº$î(ƒ¾. 1)äK/€rJ�ÔA%¹xLN™\¸WJGðÉ ¨Éè”Ò/˜ôbñïÂD”r­\FÖé"á6Åî—+ ‚�´ºr“í¤ågÔj‘-TnJW栈Ѯæ±tåq‹tî­¿7ÏÝ— Y—„ M%íŽ:m�œÕ>ób5à¤æÙY—å[5é¾/ä ÒÙãîFø#þ6ê¶ÈV 4é$ZCòXz”SÊdc··µII°�ôµò²à £9Ðû ÖF(9ûßÊšÈâzaQÎV’ÞÜ�‡ÖYÝ7Æ6°®]p;D©‚¢Á_×*¸nŒ Â猰!•2÷~§"HCê¾ÐÎSc€˜^ÒÍ43ãÅ~‹à‚«AÃõ.œ)+×¢çÅZ…¼.âhÜyt1»t±ÕMôÒi�Q1-0_['륮 4� ö�ú®^Ap× 0Mk›µÁËlX—æâ8¸vqçi£•KÒKü=ef‚»U¼4#h³ù¼u Å,!îç 1w~xœ�&|=À’:ÊUO*oäPЇ¹jý+ÓrµÝ…ê]‘} ã‹—Uá¦=¨KçÖ)j 3*«ˆÎBB•™2Óûn‘®6š!uÑÇ9ŒÀëÅÿî-¦×ÎÊxœùŠR.bä°´Ï⪄ØnÒ|ãH¯ézÕ£&WT¤á�³³"cwSDÓº)¤ùð•ôl$¡¨Ôa[Ñ[+pîMÝEëé)éõ@RµYD¦÷Ý*ŽvE"qe2y(Ä ÍçEVô9Œ>·C~p©­wdë�P¿Ôž­åÉ—t×®M˜—Ãi:²éå:µŽ­N~caK¶…Y/ÛOÞ;�:ã‰neÒ¿X„ªýý£à»bè ¹Ëwã¨óBQ¾!^“z®q™Ô‹|éî‹‹—þì²ÆEƒöpí+>ZDýeQ°§\:lÓG÷oˆ/�Y v�ÅDMôG%«ØëÏ'•t�ºÞôI&w2}d?�#t~ï¯V‹×Ì4Ó†b�!«¦ºÇÒ¦·Õ;^�¹x›o:´—ä^³Ìù“·Š>ÄÓ•�ãC‰Ã§ovmV†6:L¼kòK©Eh?U¹»/qK G=’šGÈ9ýz!W«¾´_–ÞñÇÍ…ªuQiQâ!mòSЦʊ�4,­ëÚ«ÿ*­†µÑnì$Æ@JÍEþùzwíîô V Т>’¯¨EßâM0%IðÚ|¿§ö;—¿Ö&§›¯UÆ:×é(Íüh`gÌÿ˃^ÍD}^³–SFe'«åì�u&½i^˜³Z·p. ó¯wlNyo_‚©u#+}_ŸuØéæ�þyÿÿýPKÒV1]B`€ÿ´"Vimunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunify.svgUT ëÆ«jëÆ«jux 臥šK�$Ç‘„ïü…ÞsåÄû!ph±XèÒWÞ…âhš@7)ˆ³5BÿúµÏ<‹# °<ÔDgDFxøÃÜÜ“ßÿvÿ|ùçÛë/¿}|zùòåïúðáëׯÇ×züú�ÏJJéƒV<]¾þüÓ——�Oy•§Ë˧Ÿ?¿|ùøÔæÓåþó§¯ÿùë??>¥Kºhö¢‡?|wÑß¾üíç××�O¿üú˧'�¯ÿøŸ×OŸ>Ý?ýòëO?�ë¼öïýòr.ÿ�”þ¼ú?]~úøôÜ۱긔}´U_ò1÷�y©½\ßs=Z«ïoéš»žN¯¸_ë‘ë<—xüþ<ç±öcͬq¿®£ô~Ó»Gªóz”=5Üe\µ´]Ë1F¿]O�Ù4SWÑoNKSµ÷s|ì}a‹Õ´¢ÍõÞ�=xKB�ÆÂ4Ë%KÔqŽËÑR¿¯côñ—1�2FH˜c÷}ÕþÈ2ÏõW¯gÃv=wìÈÆ)>/†ÇžÕ²Ì~TÍK̪cÓÖ�ú*ǬEW³(£´ê–sÞ­‰¿ô¥e?µVÆ’zç–:SíÈ/-µ#uTé#õ6ÒIš”/õè•ñ(Kkw“<¹OsÄ¥I�U/°Q,\…¿g¨ºŸ+®±¢�#—‰tM¯�Í6}XðåkêZÅ:Eˆ:[ -�n“ZyÞZ½ó¥Ôc&™Y+fàYKÜOoT*‘Jµ`ؽ·sm“Zò9Öo.Ò®ü©,ô™cúú˜Öüz·±ì?y�cŸrz®½Ë”k;Znº…¼I—†Vv‘zö±|úæâ%sÓ�Ê9Æûºb.L ÿˆiä)yò¶ œ³wÄ{çêçXËòþwaäéïÏÚO&ü× !–´UwȸOËøUN¸ç¹Y‘R:YÙN»ÑF)˜õ”§ ë'K}w”´;޼Ĭ‚\o¯k\Ÿ=êõ›*úÝB|“HâZ¢)7!dëhÈÓ¥ê^¬WÎì— +U¬]ìzÓ�¡åR ^–ÏŤnÿ˜Ìþéç¶xbzŒ}Ä7­Í£Éÿÿ•õZmòí¼_´¢î|ÏVF,üQ;Ìå›7vÅU+BU©N˳ÀRf˜º‹Ôœí�`Ý%Æ/ ç»î€pÖ›‚¸m¤rÜJ9˜%ICŸþ©‚ 3`<Üw髼°1»¡|UºãÞ¯(M%]k ùÎã•mÛµÛsô[ek`EÚØýUšßй¤{]8¼?}ø?“Äü¯z&‰Ütñ¤GQ¤s,•ªÂ4ãA›ë ìÚ‰<úŸ3ÐÚ1F°ç±l~ÂÅ š*+–B]±, ïu}Ì[»…Ñh(­�ÇXTîÊ&#,-_itùIu îeÏÝf•E§þíL O+̘iç�8¯ç@jãž —æ8oòǹw´tÃ{dä ¬äœSš®ÐœÔŠ…®�»µºœÍJN72Sõ¯Çr”Y,Iè÷"Çí�¿ GÏÔ›Ù¾Vq“ Š“iä›d#�º”ëð¡;´©U²Š&�AS‘â„�rGÞMÅÏNlÐ"c0sú2l« /™D‘ÄX§-§Á?×À«1Ô’" ”oh&t®Ý)ÏsºŒÚÒ�0;mkJ~£ta��¥!ÜZxÙ&É$ûØ:–|dwLÍwŸŽqËT�¨t«1œÞ z;¦m°v� ¥(ñ3§'9D¨ÿ±p¨Êxº�¡·B8Ä õ*±¿÷ŒHÝ�– O’3©sjw¾ƒÉnomK9•—goX‰yñ2<žW¹CZ,ìN|•;~dÛ¥eX™Õ.5ô¸;;èBŠ–Öú«Ô±d¾Úz(xk7g d;4ì Î DbNăcY® âJNtv�…œ8´bcD¦pÀ È2›+5„�â´T‰O§%g%Ÿ­O7½�¯P„0T;MÔ«C”“}vkŽ˜× bt7 ACP¦jò”Р\˜õ�£ñVí³åE"�ðµeÓºezPá©Ö·ðœ˜³·˜zà)W§Ãá<ƒVúÐVâYŠâ’ò]Ï•Ê7rF J“›Ôé4aoÈ\�Û[Gåvï.äQ LyB éâu4GB1ȘWA+u¸ýÚ´QÉ‹õuŽAÞj*PŒ¢pŒ^AúÃjä#¡Cöî+í‘u—µÞߺ,8/ãĨ4oÆxƒv3I#Ä̼ØÂFô f. üþ1Öªv7¿~Ñã-ÌÐõ…ÚŠ_pÊn×lX4 3¨"”›)¤ÆBxt ¢â›Ý´7‚DeÈäጵ%R�^p*ª×‡S[/\~‡ÿ-.?ŒŸÎE™9aÄ#�^bÝÝɈä“Û R%ÕZÒ !w�'hð™è dbÁ§$»{vuDX(¨|L©v²ÌŸzÁŠî%  ={ÍÃå*erÓ¿$&à˜›™ 2‚:¡*Žç'À½îRô wÕP»”tGɳ;L�zšÄ@U�Ò‚›ü楈‘Íé£m»Ü:[äVÈS |+�ÈžhßñÙe¹ír0`WrKoËvtõÕšy•á( #»ÀqQ5 lcÍ~G8�D° ü[Ì‚8�á ZÖ| {D>gfã5ðK…gŒE²Tx%œ‰2MÀ³íÕg„?—X�nÖ%h"ißz³)bŽ<¼]46¦²s=ľÚKb̯ƒt sâf˜KÛ† ¨iQ��cÙ$w{Tô‡Ö��Ì Du®nÄD2ãRá�6m…K¥Ài®ò6ÒMwaUæn>Â*½­r".‡(ö:‡æ5®Ûp³¡ìu¦YG¶qeÄì~޵ËÖ£`Vqk§ëv5a‰Øü|„ÏU¿£¾wJeR$Vš¼eo¦hÆ%÷zX.b¿®{DëQ’“o-ÙïzgÖs¬ó•9’)#qµ‡Ó²Å#��tBr'¡~·ÎR±m‰+ºRÎ4<›'ì¶vº/˜e7Q‚·DUÎØLaZ‹{؆°ÎÇÕ–� C¬ß9Φ°Ée²Ü"(v»µå<¸e9S…“üï)D5´­A¹åOPÙiêæÄså|3*ç�™ç¿[º…j »BÛÅ!ÖÓæÝ'Ñl(N _™¾9žq}´}Æ õÖ“þÀWUÌ´(@ž¶fsëh¨ÌoàÁ9æÆÖÄ”2;Ú�R_°|‰7ó©¸aüjé1Öñ}ؽšpŸeÙGBß{»ä6G8ë75^�W ß߈À«ª¶^뫼Xå?ë!�âÑð^ÃÛ×sÜ@kç7ѵß�PˆB ÇœEÜÀ‰AѨ4}wó�é«/áÅ7æ#­¸ýÃv§êœÿàÐAèb¨ÃmµõMðv£xØ{p­ûú{Âúž›~Í\îÈLÝVÓàå¦;=½—È ïo¸}–%áö- X#�¹¸`½F›¤TºeÅi™q÷ÜõXRè»6 U„šÜUÒµ�~wWE=O1‚¬r#_ /(Ò8,nmß(Y.g<ˆ™‹ŒzŽÅ�Z®IÔ³g;¡KÑ`MWwîl®f-–î}ÐVc¤ˆ™›BçR@ñÛÕü�þ){Å}ŒLU_ ÑݼE€ˆaÜ,ÚÜUœä£ŒÐç‚uÞœ>Úä°E $ë³9Wîsè¶æozÅ ÁõŠê«î›WÜ9ÜöH暯¹¬ïÚÝ �ï(ÀºKNÖš†›ÜKeaÈZâ 4ÒÚzÃ�çyßÐë ›ïyž´½ Ÿ¨4œ ì�ª+œÈ°ñpM·ìT éJゲ&©`pãe³\¡`|-ÆJ€EŸ¨¡DÐk0m€K,÷"×@,ñ9‹Õ%ÖèõG'+!¶È­`kІp º¹c>³’%uÆ>Ã_cÅK93›jA2·ñdÏm›@‡ Š(‡ã<’`+öÕ%ä‹Ç˜¦YýMïà #¥Å�k¾Ápüæ%˜WpxE9;)´³’AÑÜyâFÙõ™unk5òœÓE�I©·³›XhJÕžï˜÷ç€ä�†z³8FwÅÇ6gÇ€mÜ›— l©l¬7¹:)4Æ\´+ªÅ^>yÚ-«a¼›èõí ’O‹2[ãh®'ïs@s >ƹ*ªÍ»œ¾z�P5{Ö3>J¸v3xD_ÇŸ Ü …„‘ëÙÆkŽ<N_ÇÑF“·Ë§p�mŒÌ#ØZ§¥ã†=Ío0¤NÚ+£ŠNB£/Ã%‰É‰$ ù}æ1èvºyމÈ5­°’ž ê.Š eœ]šiê:ÝÂØæ®P#½ºæ9.€"ÊP‰¤Ðd.ÊE'äéFß4` #úŽè騊ٓXñj6ƒßŽBXbIæ6ç€nØ=Ïx3Æo°K’�¼ m .ÖèÅö«-wÕ£>\ȧsrïçx(À-ŒŠMêö°:(ÎgT6;6i$çbž ¸ðÞRŒPËò*7½LªGC HÞd¹\JÙ-ôs4HÏAn*·ð†ìä±¥#msfûGV¯î/É=gTÙ»=+çt¾(*ÒnòGØ˜à‘…s2»ÄŸn´bn§¸]V\® Óé Wœ��ñ.O§|Ü©'£ž 2©*‹*;=@äæJ-â»ñ eü»¸Ìëù:íÉ –¥¾mã9Wç¨M{çV\>ÒÌ 8Œ £³] xÏîq8Z–Q@œ#ñ±ó= ¸pvkv›Ônáüò7'z¬rÉBû&¡Z>!–³gwkg‹¯&ñ Ml¸ZZ8Äâ\ù¹´`é`d¿u³T2iÏ÷´�f�ù)ÿ›ᆲCNª(8úqs<‘–£kVSÇË¡é$Ž}V«+)Tô×ù¯¿' ÊR�rÏ+H©ã›|Ï¡»»WZ¸Eæ˜Ê¾µw\ÐNŒ|@M¥PœæS¢¬xþãópXØM¹ùÒ;(Rœ¥ðÅd„F[|–5DRýÒŸuH(ÿOþ¹l>€ø;ȸᤦ'Š�å¦A%i\ø ¢Û¶hËVYψ½F|ìãðz‚8´GâR§AÅø=&]Hƒëp§I%<äÇØX·ý}ÒUޏdªÁI\.Ûç¹s>yC6n™eÔ¨£P<ê|æ,_Ö¶¡È4§6?w‰\« ãÍ=NÀ­®cš%\öÃlͺÿ¹ÜZ\.!ÀÓßhùY‰!³ó,�&ßË'ù—oe»™/éš³·” NC`2耹{àúsW‡ŽsBåÓfÅkU"WAðŒÄz—ì„Ív´g±,ºëRGv’ú…|baÝÊ}3:lâ<&(t]Ÿ»Š}м ™Ù‚HYAJߘúZÎþè®X£Ä—q§…Eè<“ Ü%ô�IfÇ$[ΦñÅJ7kÝU¦PËbЪ„ÃËÝï4ÝèÏÑ2ÔJ7çù2!ié’&¡„n˜»Ô‹VþèÎíÔê6NŠOlä%Z•´Fؘÿû€oÄçÍy:ÜÉßShGUä.ufžÑ„Y¶ùý‡Ï?|÷=ÿ/Êßý/PKÒV1]³¦Ä Û1Vimunify-security/assets/ui-app/assets/static/other-root/images/common/check-circle.svgUT ëÆ«jëÆ«jux è‡M�Ýj„@ …ï}Š�^›ùsƱ8B õjûE§£0ÕŵζO_»v¡!päË ¤¾l®qº8ÖõüÈXJ‰’¢y LrÎÙN ¤±_‡Æ" ~ Ãzømôéy¾:äÀÁؽ±É`¯:Àû£Ãiž<Þ|¾|FïÐo~šûþ�»±Ý¸tÑC·ç¨¡û:t9äÈy0UËŸ^�ýÛ;¿­Ã}ܶ-BïðUTTX�–´¶QH*‹„ Rë“æ$­¡ÈDCª¬@“*ÔII’²-b.,q“KNŠËïû±š…&«Ñd?PKÒV1] -,‰Å¼Pimunify-security/assets/ui-app/assets/static/other-root/images/common/person.svgUT ëÆ«jëÆ«jux è‡]“ÁnÛ0 †ï} û3$ERTÑô0cÀ.½öÐÛ€fI€,)Ö îã�^Be|°?‰"þ´Þ?¶Ã¼=ïÖ#Ñ8ì6ûíî|ùþØo毧ÏõˆDòös8¬Çã鸇Ï_‡ãûzÜ�Ïo÷«Õ<Ï08ýÞ®W‘x|¼{xûqÞ ¯ëñIA• ^ÐhpsMØKó`õ*m(P[­LH¬S�B¤f¤H±�æÅƒ± xç“j>%3˜‰×ázœ‹öìÚ„1—êÕj„_Åa¼¤Š )>&.B|‹0pŠÏž¡Â¢Ë{…)¤áÂÒ&gÉÙ`žO2ú“õÓ¿˜þþgÿËF JDFjÓç¨.<õ ‡Šf5z´ª­–X(^ʲàZ‘ÍîÊ…FÇúWc‰\ÝÕÜl± �ƒ…ŠøÄÀñ‡h06®x%§ÅBe.a�–ÒJ°5òáf(ÁZH9‡c Ñ‘ôήÜG“û M½¿Èj=½G<þSÞÁ�Õ»¼sHñ œùÖÆŸ&vë�Eíæ ‚°Y÷.X©r77ùêþóußs /yç¾È·åWq©–Ëõx÷PKÒV1]ÛåIM ×)\imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAVPlus.svgUT ëÆ«jëÆ«jux 臭ZKs·¾ûW ›‹U‚ƒç̨Hºì©J*UëSbtSÄɵ«"×¢ì_Ÿ¯�Æ !í(b�–ßÎ6Я¯£‹>½¿Ww�w‡ýåÆè~£vû7‡ë»ýÍåæ—þõlÜüpõÝÅãÇõtw}¼Å3CÿáÓFÝîînn�—?Ð_ïvO?>]nzÕ+¬òv#Åš�ÂAûÇËÍíñøáåùùÓÓ“~rúðpsnû¾?ÇüÈËO÷wûw§4Ó4�§o7Wß)ü»øÓÙ™úÛn¿{x}<<¼Tÿx·;¾¹UÁj«¾�ƒñá…:SBп·»÷w¯YAýæðþü1ÿæìŒEïŽ÷»«¿¿ÿm÷ö÷ýËÅyFò·×»Ç7WóÃîõqw ƒoùL}qž¾ÊOݨÇãÃáÝîr³?ìwþë¬p£ÞÞÝß—/éóÙÃo÷xz÷q·?\_³v,êøðzÿøöððþr“>ÞãìïÏ|Ð}úש3oùó ñ˯ýZüxõ·ù÷_b_•;èar£ñ�š´ïmí‹¢ìŸÝO?Ñ�8e‘úá5ìy}¹ùþ¬‰~ �Óvêé� ¶½ú`‚�nZÅ{ü胋ý¨¶BÎ.ä¼Rò`upf ãØ°†{|6½ë'×È_�…”WM &þØ=6WçdŽo²V¯'5ÄærfÂqÞÚ8®Á“vÖ Æ8¯f�Ú�.�b hï&3× :*3jŸ­ÕE= ,r6ƒžòO£vd ü@tlš!v§8)Ü$;ÁJt6Aú•�ÍÃ^�xÒ¾ìµAˆy瀎Sö*D8ÒqWÅ·$cP@­7¤%Ô2ùY#Q(˜ÜcÉ4Æ=cq›1¸™×­ÁBÈ,`y¢Ñ6iÒÞ®×1„ˆiUéuoÇ1F©6üsÂrÕW�=R ùQÂ8#ƒA ®§¤2'3¹ŠùN"<*(Bi[QwN'‡aXƒAcŸì¯f#¸òçQyMFp|WuÁ-L:¹·]ÐSŠ“(ŸóÏŒª*"5#-Ž$3æDö@CòÏ$ý€ƒáQ|È“É ~èêÁÊXíØZQ.Çg J—­Ø< RÈ.i×Ô�w¥f~’÷E"²©¤nÈÖ�¤M�!ÀÞ§à’V:.™Ñ3IIT¸c+`é¼ÓÌóê9äåœî9ú`YŸÉþ0>öÑŒ!*g‘[ɸlhC2­rȸYA'[ô"@ù9·p7 cÃŒÊ"P™<€–‚`ý%8[dIu¶yÏ,ÞÈõºgçÉ;XÜ�ÓS\ØB ÎC¡œD«%¶nj Xp‰ã“p%"ÜCÀ–¢`ÈIK×ð†ÐÏrö.D (—*:ÁøšTQ°ÐP˜±j-¬)M1ê�ùY>;á6™¨„\¸Î7ÇÃÅ&'¨¼*PŸí/´’`µÀVÀÒ^"ÎV`á‹g6z,ËÅK¦Œw:žÈ$Ã"¥( tÔ%ˆgå©Jåt7¤ïõqÌ@KS F�\Àå{äí@4%Q¸I'kÙ–>܈êžz¹æa"�äC)Ø¡è'zmoáP6qYye 6{Rh'Àjˆ­@›âA>#öókðÄ ©§ ªð¨™I­rDÌ…¹—ò‡ÍB܃.uÕ#!r [ø¤’êc¡¥jN�’G<õv�0ÜÇÑ'ÃÕó«¼…÷¥ÄÈ+‹€ê TØb{::ŸàÐÚwŦ÷ Jf¸iÅ…”5¼mÑÅMUù+°Ìo!dþ6è•;Qucfä’± F—¾e–š„^NðXF™€a>“i^ÍÆ]�Et¥ŠkNNVsS ÏŒ%?ƒÓæÄH¹¶nª¯á†Ódœ\ÄxÆ¡žË(ÆU&Ü�ë@S"h&G4p¥†ˆãfÔžû%, ¢Í½Nƒ¢…Ü4n‘!#Y�…o¿)¿÷¿ßöêÃán|¼ÜD8;3‘� kŒ&,r �ø¹”hD›MB=¦É\®BieëH¹ƒ6\2 S6ežt"ˆ*[G<šÌ¬¬Î×w ¼(ðq˜}ø¶EœZøj®Ê#Æ)›ŸL21§‹8·øÌ‘Ñ#›gFßå™!^¹’YjÒ²%p^Ÿçe…&oÌÙ–ÎÝ|Œ©e—á.¢ 2¹]— �-Å›‡«�$Äty\Š2â¦4R˜:¸q¯œ@�“ÏE*�eCgMÓÃ2Œ–AQ�¶å³J‚˜‚ÄÔ6Ó…8'Ř+æ�PÚœ4Ù„”,í„:Ç­jí ÐFöLˆÈ¶<¾Ñh¿� Þ"`éâR×Îd6Á]e!³4�u¢¹¾´¤r¤†n'ªê#ç>hf¹Æ/ðšQ\˜Eñ,×gO;——'è�b¶“:mÈgùBÄu�BÓPcؾ°‰a/#þÞ¿Œ¥`j�|Y´,LmTÌc¸lÛЩ±})¢4¯MYáªPÐsø‰P­‡‰± m˜+±óqŒÐ8ÀyJÜOB5ÏC1Bƒ«”:m‡g™9DZå;�꺧«['r${W( ã}4÷usMÜiW(CìŸêÔG”Û'k¹›/Ó)/X©WÁô÷ô•!x%Ó‰Oùà³ã¥Œv5á”\Ñ Ø‰b6Y†bm$¬-Ö+4Úòöë3>/Ž+�âœ)±#Ñ3x€9EÜ aʘŠàÌ9(§Ø`ZâOä4ìꊄÚö1§¦t ºvîȺŽ+Êì(²Óá“¡¨�x^êÅwŸ»òc(eÉàrzwˆßž#\¤ †çΤ¦åk¢ œ ¾Ü¡LÞ”Ð}iŽlÈâ4&-ÆÒ,âg3?Ù§¬‚�Y|³eÁ«N{ã¹-U­n1Îa4rþÔ] mlRÎw5½“Sj˜½t·¤3„º¤¡½ƒaVÀ%—Ö¹Ú•ìËž­g Œ=•ñÒ˜nà[Çœ9ãan·;<¸Cª®�\‡q„ÍÒ‘kË%„%ê´­qùd:Žyzòr·«#rZ;9®J÷¥8Ã{[‚y- >{šæu0#/( µñ"ëÄÛ[U7À¾¾KOßÀ[Än–m-~ðL±¯=u'.ªêx!¯¸!“T¡·H#¯O…Ê-ZìS×ã�•i^й02½–¬-ó"Í ‰.$¡.w5[Zr–þ²öøÛÏÂhæèz¥~F9æsºå­›ÚŠQ¬ŽTd}c¹dÕ$Xüï€ ×ý‹ÜToë{3yâÉ{üÏ @QÇ v¯èU¼YÞ ›ÅW Ôž'M¹3£�ïq:ÑÖÿZ~wù\ÞIx+º‰ÏµMlÅHØ•ù@ÕŠÕîõjÝ®!–Q<‡´(Ö5–`¥¡¼o«a¾½�€ç:ø5IQ— ‚§êÚKÞj+x¼1´xY/un¯/üC#c~Ïßø´,œ„˜:æÉ=T]¸}fèå�d;unk#ídþ7Uè4X#=ÀYéZëq>ýÏ œƒk°m[¸tF„–™¨Ž4„º3„`:Ïמ Îo[!OPC{œDýbw7šÐKè-ès±¥ ¼ à*Ûɬ&BCð(·"+SzåÉÔÜ@_H*»>—…Ô„¨ *Ø®ïÙp(²*µ��ùXÛ{]I–x‚�ݱdÊþn+³¢8¡å =Ê*c�˜•ÄC5&À6¡,S6@a™ƒ<¶È$˜!#†ÍŠŠd#%#Ki”v¶@†ùx›9_8ªä“(ªÈŽX‹EçöRkùßIó´¤­›U.b¸ž™"í�-ÿÙ)béý2mN§a§×û˜‡áEFã¿1?Ë‹lŽz!_ŸýPKÒV1]§\ŽnõPimunify-security/assets/ui-app/assets/static/other-root/images/common/vector.svgUT ëÆ«jëÆ«jux è‡UQ=oà Ýó+ÝϪ8C'/Y=x«×¶äÚQc…üü‚N+¸÷ÅÓo÷žùñ²GËÙÐ�ý°>ï÷±óˣ₠†–ÅÙ×8MŸ—¹ãìñ=Í·Šëz}/ ï=xËO_H!DŒùép¼~®»Tü,À’•¦d¨@[¥Ô@hÊÚ€&2®Ió:Û—Dnˆj(*‚(’ªIó?’„0,Aê="¼œ*Í‘õˆPêÚ‘ ä(ÉP{&0¤­c&Yÿ‚nûIb%§\%j2þôLgI³›¥Ül•h�/Aâ–\#*ç^ÕS•\=ã"æ'å–ßæe½¹2^„mÄ­œ¿PKÒV1]ŒŠ�ob+Nimunify-security/assets/ui-app/assets/static/other-root/images/common/bell.svgUT ëÆ«jëÆ«jux è‡eRËN1 ¼÷+¢pŽ7~å�º•à �JéV mUõëqÚ#9DöÄž±GYýìÝïg;~�~šçóã0,Ë Ãé²(Æ8X…wËá}žF�Å»iwØO³ÅÙ»ŸÃny>ýŽ>ºè°8Ã6+gg}~›'÷qhmô\婊¿¥áòÝv£?žŽ×ÝåäÝûè_1²CDi!AÕì2`J�@ë¢æ5&ˆdˆ` À��Ò‹¡êJÙDŠH¸WEbHÙ‚ÄÔ°`@ˆ"O\ÐÝïÛÜ&f1áÛÿ7„B¤¼$È, Q·P* v&Âɘ-PÍP156]r i JÖ“�"k'JØ[”µ7fj$] o;—¾óõµ€:ÈXlmêÛÖl´Uº æTMÖ•ûpÅÊA„Œ³&Ë»\Ìf�fê/UC¯ªPYÍŒ*Ôýé&‰†»±Ñ¬±Ë0$mækIµ�¨åê‡ÍjÝ¿ÀfõPKÒV1]üýE û$Ximunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAV.svgUT ëÆ«jëÆ«jux 臭ZKo9¾Ï¯àj/ M5›d?Ûƒ™v±@Ïi‡Ü¼±b q¤@ÖÄ™ýõû±ÅzÐiÅìÆ©Ä.²ª¾ªúŠ�ËŸ¾~z0_6‡Çí~wµr¶^™Íîýþv»»»Zýó¹èW?]ÿpùøåÎl®ÿöé·ÝöÃï?ÿër}œ~¼Ý<¾¿››ãæþ8Þç-íåzþé´êÎ<û�›«Õn¿Û¬ò· òßÊ|Ø><Ð�éóÅá·¬Þ|Ùìö··Ù¸¬êx¸Ù=~Ø>]­æ�ØûÇ‹ÐÛzþW™ ßæÏoÔ“ß{Z=|öÙï=ÿú6ýUÆÕvþÞ�Uö¿üܵ~Aݬòó œv{µúÕÙ¾ò¶5SmëÞå¿ 6ˆaþ‹fJ}#Hϼ3³B×ÙáôÜ3-gˆ¶îšùï¤ìùwõà»"XˆÞ6‡ýêúr�lzÉܦ�£‡ôWœ¥©mó‚Ç=¹ØŒJ<°Æ v8­¨zÛ´§Ð$©Ÿ—ºª³ñd’7£ë-™ÞÚn8i3�žÔ5�VÑY÷­tt­-—Åü9*ƒÍŽÄþ^ÙÁ‡­³zã¼íN1…´ËáÕÒ�ƒŽ°ˆXûÌ9;|_¬”ŒJ¬wt¶ÍÞѧ«ÙÁ…)µõ9ÊîÁ†�¥ì£ÞÆ:GC»²³í‚¸µ=¹N)n­/"É¿^‡± ø*ˆ(©ÂÓ¤ÅÊeH¨—ÄbÎ’Q‰a%�6X·~É.Xæét0¥'ŸÉ‘LgkŸÝì@Š{Èì`{Áµ#Ø–¡él—¬»Æö9ö:Å@ 9 z•ÀZk첯C¹}Ÿ±ÓYsLSöZ%ò—à¥Íoœ�Y¬|¥*”SQÒuD‚0-——w¯­N>r¦Ã9>W×Q‹ÙGÆBmùœ$ÞÛHé×L¡¢Éæ7é`mö—Ñȇç\ÆcƒÜÉNTÒ±é¸déÅ-¥TRóÙšh 3úM@ò¨Ã6ž‹“¤B*^˜”Xwl²ÁgÄP‚ן�ÒA{²þÌõ'E~‘Ó&²µµŽÐÔ3ä•­p¢ÏùQÄ¡¶!7m%F¼HI1bæèlê¤YŽŒ¸{mØé{²|š?jßOõBßUbí÷eP¾Ó`9l±ªb%u¡¸i1\Ey­ÄÅÀH=§&•#P^³€tªWc¹¿ÄJ » žãßRâDš\ï�–ŽÁ1õâš ¤µ0H©èSøÁº¬Yz‘ñ`9]”yJª|1i±n ` }W‹3ILO‰ƒ/ä]é„i{*ÚºW‚žó-ø¤ÉáU…ìºb@ÅB/Ž\Xf�Ͼ¡c¦ Ú/ÐE5»'£-UFOZ¬1·ˆÐW<:¶u¦Í±æ´}þ½àÌê¹sòL©•DŸ[)>#ÖÙ­”œÿ¿8vì© !€-EjŠ‘0|NŒô«è9]ψ5°”ØS0ƒ‰�ÚTÕ䖆̄t zFØ@{Ã9ÒP3˜Ør~ÕL"��U ‡QÄ“²öœ¤@¢ÛgFæµxŒà3,vdŽBD³4H›\CP§æ“Súú¬‘U~g`�"E.Þ/P!‡?#V!|1Sö¿ßíwæó~»;>^­:Ç”'ã•Màä¾G(¦ŽTúÓÈâd�Ô:(Rݧ$I÷Kæ0 /ˆVMN‡˜£Õóè¡ÒEntÒÈåÃŒø�(Y-I+÷ð]"`Á ‡¹˜¡‰ò+‡à@ŒÜ�Ké²ÿÿHø¨O)ƒG5Û+0CJ„+9‘N ¿\UÌ¿�sñ@“&·¹tÀàÍ®¤.+Œ×} FœbD7`(P‘UÈe‘L{)÷žëäl4aÎ`U…骄n°uA‰b…‚xº}i´6uÂC4t×¶…×_5pËO`g!÷ÍÚ׺zõ\+Ù¨Ià¢î(@L¼ƒª~Ь°B*¤\»P y”CªRÝ”{lx„Îéw—ÜËüMxvZL¼YÚuʹ¼BßÉ'1ÝkÓ œL öslR¶¡•Ó…Å¢ó^O�¸S%4¶ÔwáOЍò@ªc•$}Bƒ§ Ä+N !l1R l)@q)¬¤u”èQ¢‰ê(e#ÂG#ê( ›£ârr¡‘åªi'À¡’ž.NæØsýC‘MÔˆrßiÔí¨ 8œ¹׃�t áÊIêiçEÏ'pçf–Å—Œ®¡ë¿JØ�¼e|å€ht ‰XÑ7ɸZ^’æ¼:õk¢Eóß–ë& ýuª™íËÆš€~º'y�{P¾©&ï=[�‰BzSC”¾¼; Ù'×zŸ¢¯)n ºl*¼¡å£¼+äC±×@ðóúdÀ´éÅ¿{K)9G½$Ô.Öoø”‡ÕK;­Ãé{p%eî,�ŸdV)`²ŒžwæWMmeªšzÊ�¨od'5îÌs]®.ô¾;½ÙSWÓ¢¨Zûò¦ÿÓ�YzIL€—yxR3®šp&áw•B;j�çn®ð«_§âÀ<]‹'ÔâfA˨^ôj´8)/ÅrÆ •—a¹q¥Woµ+ìï ”ÂüD:©—~J<ʵa¡£“÷U‚<õŠ]kBÁ«ÙurE«ßZëŒ,–{*mz¨ÒâI¦ŽB>ª‚^¨ Ü÷´§Õ¼Uþ— ù¿<ª{É üY¬xFLÀü#½¥ð—ùÃeúßF×ÿPKÒV1]_\¸úÔQimunify-security/assets/ui-app/assets/static/other-root/images/common/support.svgUT ëÆ«jëÆ«jux è‡eTÝn›7 ½ÏSß®?™¤$Šâ]®÷…›Åì¤HܸðÓïPrQ³š¢øsHùþãó9ý<^?¶Ëþtúþçfs>Ÿó¹ä·÷ç�ÑK:¿|;í·‹´%íŸ^ž÷'èuIŸ/Oç¿Þ~nJ”¤%Øî>÷ß¿žö韗Ãa»üQ-¾Ë8®ï?OÛåõíõòôþ¶¤oÛåo¦ÜJO\²ï(eõ²æÖ[â,­­�V¯zî䉦 >ÊWuÜâ"b#ôj¸¹œ‘Ó‚@I7i/Ç–…§ßî?5Âó@ðêot·inK péÿàÖßèn¡_ŽŽ@oú)¹XÛEv[³{I’Y}€´©ï¦ä�ì¹ÁÄ’¸åF[H,9¶±[K&Xhí™z$Pn«eíeÕ쵎4üˆˆ�OÓÀ¯™,:åšÍúçz´f“–kGL«Ñk�îd™¤ T1l1S$‡LQ¼¢´é£f–’]’AôÈiË*8j.½ÏûR¢ß‰Ü=ödâ°¸qª(_gÞy¿Ä0$M$ä aä¦r9®uìªSð­a˜$ÈdµÇf›c±.3ôÙgs¾6x*ôî=‹�(À¡�|UØÖ{І´¡9²3ºçó`—¯Ñ˜¤)À5ê]À@%• räj8£|Á¯B´€ªc"©VLÁ:êIí©eîHIXU¡P°!¥6täÖ�%¦*Œö„1Ažì,Y±0`¢w�ÙÚ+HÕ$–@æ1¤hÝU©„Çø1íS‰„>Ša„pnÓ²ÞÜÂÌm¼1�CñÑZÌÅç»Ð:Æ6ŒD,æicÀãÍõ[oƒ5˜fè$HfW=�$!E¨€eS÷Ð/G€Áx +†Ïw†#øàƒÂøW"’ëAse^çÆôä—C{À*;p"(å²öH¦WcYæxHkQM–W¼çùVCýÀû[ ˜±²ÞƒêÒvcU ¡As»>�H;J_–ÍÃÝ}üW?Üý PK ÒV1]Jimunify-security/assets/ui-app/assets/static/other-root/images/other-root/UT ëÆ«jëÆ«jux è‡PKÒV1]»íe;8(æfTimunify-security/assets/ui-app/assets/static/other-root/images/other-root/rocket.svgUT ëÆ«jëÆ«jux 臭�»Ž-Gr®}=Å–#³˜÷‹ ДŒ6š8Æ�hl�ÐP$!ŠC ©¡ôö'¾?¢j­nè8D;»ù¯¬ÊÌÊŒ{F$ÿñ—¿~wûí‡?ýúý—ŸòÜŸnßûÃwßÿj`¬O·¿þðíoüóù)ÝÒÍšoúõßøñÇ/?ýô矾ýtûïÿüñ§_¾üôý¯¿þü_|ñÛo¿Ý«÷?ÿå»/JJé ëüÓ?ýÍ?þüͯßë­?üå¿~üöËOßþõÛŸþü§?}ºýÛ�?üüþ·?}ù髜ó}¶~«å>ÆœGNëžS»•ÁŸy³îi·[Þ÷Ù÷mïûØÉfWïc­|ìuß´–û,³Þ ¦œ ç{ß-ßö¸ïV68¯^ý¬~Û÷6Çh·]ï+§y³^úLÜS«6ê}¯ºíÕÌûu šë8§ž¶A7£ç6+O§Ò¸Ôd³±Yí^Áueá‘ú�ÜÚ±æ½�ÙoÙ†o6ú*÷=s¹•n_“ómî{Þ«±6{¤|Ìe³ÙõVÛ½î1hÜ­=¯ÛÊŒ;À£´~,û=Ûxö¼�[n;Ýçh¼;¸Ûj”ÌóiÔakŸîÍÆ7œ§Ö¾ßk¶E3lË’·ž·ñ×ÁÞuæ×ï­Øòd>tÛø¶ª-ñü›½ý|ÒÓßÎõÇùçúé‹ßC0“/Ýaí±E¶ÉÏ{ûVÚÝ68'š�÷¶—>µM¶ànžÆ±ö½T³Íx9ÍÖüe£Ÿwƒ|62­¶7Zê1Óz™FXÖÿë´-ÌYK:»Ñ£maíuÒQ›F˜kA"¶¶Ô’±¥NFxFäs­×sZS½vð®F`ÞlßÄÊ-Û6 æèk{ï“7z­ÍGŸãõÝ, žþ9ý1íß¹àt�µ|oöéÙf“—Q‹-^¶Ár÷—a¼bÛ]f¶ŸÛˆï,·i¯ÍZbÖíÝzA;ã^Œ�r³Ýœù…Œ_^íïheèw&>M\TØ®NûPc?A;ð¿½Ï‡ÙL4û’cthxhaÒ¶ö,šÔ‡lcÓ ŸØb”lf SŒ­{7v5¡g´œmBŨÉp­&DS/¹õÊßélÏs¶QHßýLŸŸ†Æ)|ìk`M“v[0ÖOŸÑ|Ÿw|æ°çMôÛþÆ2 ÛmÞ¹Ä2!ŒÇiËøún¹?ˆ *B¦©Ó^Úa›œ*DÉ&h`1Å–î}t`Õ§TÓZ©±³&�«¦l‚ÿf$4‘�¬¬±÷ä-5E­y^¨¶côn SKn¢ S^&ãªQtíÃc9$ÓIFd}Ô®]^ŒfL½„m�ꄈ›Q…¸mÙ�¦o@˜o2AIÛc}àѲp2Ò5ÞÝ&ê  �úDÿj{ÂP˜áÒ³·�-œŒ’À*¿ót[Úd8ì‘yi9¶Ý2\ ì�ì1X™MÍ5{ç¶z]’ߦj{ û>õ6|lÛ4 °uj°ÔåÄm*õèõµ…�çn†KË]xÛ'tv¦±u²ÍäùÜݳ?ƒö´¤’1˜ìyšL“$á n¶}àb³³ Â¶d†+eоòèl¦d9R…Õw ó$BŒ+ŠH° ›>8;‰6d18H¶çØ¡Q°Á:‹¿>lÃ¥ûÓа@¡FÿÉì¦n+,µBjÏÉÆ½¥!fl©Ò¹M»;sòi¨àæ¦cqÂÊYSOf­9§7Í%›Í”›±øÖ—T¸¡!|·fžÑĆmûÕœÙfÃÈTÍ%y»Q Ï›‘âﯮÞ+ÛÖŒ*ŒÎ ¶Å:6Ýr˜3Væqcb[Oö‹ö©½ÈR³m*ÃÀ72(’‰¶aPd•Ùö‘ļh$†&*Íà“FÀš6Úç#íç¾øvã3D.,Ѷ-Õð¯‹0=óIµš¡G6]“üöš”íİëhošÍHêŽÍº2¼°[ÁFÍ<¾3DO{ÖóVò÷�¥Ø¾Œ¬±?{“¶«©ùèˈÁ—‡w_M’MŒzÙ„¶XKbÕER} Çêëmq“½éÛ­Å[(zèBê($½ßK,¶‰6žŸˆ8[ðû²U1©_Då(F3Œ ·ítDáF+tß<¡žou9.ô_ÐcY›ÝéŸç¡�Žš¨´¯ Ýw ! ñ�òÔ}Óçv¬ú)¥¤×�–*È,I¨§ÂTT ¥ÒLà ¢Ì8Éâû˜®·{Ž“Q¦á&O FHê¯joZóÅÁ7r¶1ÀãÃùƞ˴î<]G›Mr{§^?ÈS°e^Hä*£�ÝÅ{èÉ©OjY††é#K[°*ûË„Z“49âÊ~ èÃp�±?R¬Âaÿ�§«ºìj}á˜C¸©û¶º›°¢LënÉ`¶mÙzÜ8ÏqLgÙßÈýCÊ 5U�œZÌÙs W+©osÝýÕøªÊ}‘�½à³¹’Ûß½Š�Û®ÕqŸ¸9oêOxïnîï)©ÒKr©7·ÜÙÉbL�6$…d©eÜhš÷@LTL„‚Ð2}æB´˜Ó‰³QÂû]CBm¢Ësµ½R¢fGVÙfɺoLl5c8”h¯ó²Ý¤„ ž�Írê�ÿ ©™q·Œ6x^zÇ\+ó%tgqk'Ù„òn(͆Ӵ\ë!¶ìùµ¥L:zÝXmöˆá·w:ãcÒ`ÉL"PV^PeÏWl¬æk¿V}D¡ºG6„VðÌÜ¡O&êÍÚZ{†F`fg˜D.ákeìâêv³ì£[Wdb† ±ó<�Ï_±¸  Ïü‚}g®4)­¹!f´‚·Ð²º?Ûa¾7Y"È ¸‰Mùã¼À†ðO]¢ì›44›[¹ñf0䋤ÂTá™Ô‘Ä ßY¢µÈå3ܪæ¶zÄÂlί³G”zîýõÝ7}Œû�ZP¬"Üa™õrÿ¥åB¸ÿÈ÷ðÿ‘óµ”ËÿW¨,ˆÎÕÆ¾Ëçˆ88Ž€ox=4»ÿã©xº�^Ž€¤þ^W@Rÿáÿ»Ðøÿ²/$Üåÿ özúÿ‚ÐTøÿŽëåÿ{oÿ•áâÍýdnåòÿ%cçºü„æ�ÞV8ǼÂt UT‰n™]þ¿à—ÿïx]þ¿°:“G/;OanðIøg@8¯ÇãëÞ÷åÿ{k»üáY.ÿß—s^p›§ÿ¯­RÈÜýme—ÿ/éÁ¯=|ëµ+áÿ»tÏ—ÿ/×¹?ü‘J¿ÜÁ=.÷ß=ëðþ�ÎÒ—û¯Ð<î¿„{Z—ûnåáþ;n—û/œ÷åþ¿Á°á>Ûåÿ‹/øš€e`D s"QÖ¥Dø»"¾F@ï·+ æR®€d=|aù:ŠòuÐè{^!õ>>^±pYW @¸¶+à³éW @8b+TŸžÐê@Y@µŠ�pÕË–F À_¾bZD=b"­z†Dµ-_!�Æö+ 3é!1ÅWÀ™d_!€\Bô…�/#è).{½iÏÄ# #jÕ+ \ú@>ˆà# œ¯9úÀ`ådî ¸s´¯€©" KšE@세‰Xg�ó$—ÛCà–×K†F@ì CE@ì E@Š¡_ožW@¾WkW@�ó{DÀâS�ÈÛ`í#nŠyY#‚V@êò‹€Ÿçì+ vBŒë,5"ê­>"Rzù ŽyEÔ:Ì#ƒêÍ#ï4ìÇ^®üàr¯,e#c”3Ãäþˆ£Ÿ$Â81»)lO!í c†ƒ�º‡£Kvy¨u7^È݉±øJäáºnL7ldCóø¬á5:ñÊöÆk ÿh?Ñ�¾Žƒ1v¹y÷bxðr÷%;M•æšvÍP!}ëX&�Pfèa=ètWaý1MzÎÀ#¢Þ�ýµ¤S,ùì¿'N>+åÜeyGþžì…™ErWtÄcKŠ>ɵdÖÆ�z^±@ÃÎ÷ˆ¯êöÄtŦ¯5lªãU&Uvƒ!¥.Úß²OºìÁíæÅrFÎ ®Ùé0Ó8ÚbXéÝpÊœE¼…`I9ü ÊMúO…p\ºî8£Êao WhEAêWÉíQ.‡ûÝ4>Kaô<.‡Øƒ¥ùJ¬8�LyÃíæ6ç«i?œR‰4ƒœÖ&«IN­;v=\^€¥�þ°Bõá.ƒå¶„;Í¢ÈCvoû2¦Ãל°àÂYWœ)•Ó™}÷�ã ïæ^x'vmì2E¬VjR2âí8Âk]˜È¥Mî8ñ´�Ëä(ÄûÓäŠÉ¹³{‡Ê‹!­¬:VÜùò‰ÏÎO|~¾~NîÝä?__CÃ4ù´XÁ4'�ÏOL€† öù~ÛþþÙ`› .W;d¹�ïŸøñAŽÏñÏ÷Ïù½›ÿm1¹J&÷Ìt5 ¸L‘ É„n Ì’#- ó&cNLb~Ûùò„írdgY×�²·L$ËHdÄU?_ðìþÄ1úù¶OíÍ´?__1Gl­©Bì�Éó­ÍxªýÂ×§æ€Wù|¿×Xús¸znmVÌùl' F[ïŸøñ-Ž?IbøûÌ�l¤wóÿ ­Å_!"ò~ÙÈ'Kä:I�éß2fH×N.¦é·Ð¶üöÖÔa³ãÒ#k=6ö¥lŒÔ»ÙÝ€Ç8y}7Û±íifcJ$ﬠæëšg¶SWTþ�Ý@Ü ïeˆwF$kÖz—˜¬rGî×cÈ·hÂμ°†yuXë¯og÷1Û±0à»[cÃüI12e˜Uh²Ö튟¼Q�áoó©IˆKy/•oÒó3/··™ì«:UŒ:ctÙvãršA´H’­ž‡¶Œ;Ó±ödÓ!CWÆ ;ŠàÜ|zĪÞMÿ±&æõÚÜ~§Å@ê#ßl­ÍÖeº£º}+CÀpÄü%,Ñ`µÐ½‰t‘Ó­Úá–<�qãdáhµ›Úu®Îû8BI†S¬~Õäý“›±‰öx^È:j#ô;•�œŠ”º™06+B9–Ñ趘›#¨ÚbtRŠ· `RÂòaqÚ»ýðT½Û\ rùxÂ-2�gà ®u6/ks¤©3É8Ýp¯ÒýÖó¦Qc8S¼›óÃtÎv±õK9S¼¯�¯Š…‡#™”ܱcøJ»\Jž63mñG-û‘yã¤Y g›‰ÖèaÿðF§Ý�. ºmî¤xPe)ðù“f?ö\% ŠÎ%h€Ë[Ë ˜…{Pu_EO÷Rwµ+�ì�;«O±ò¦!2ûN0\cr> ’�z0Uq=“|¸Ù¥w–{L0á@ï çq<9e,wçiã>©-óçÜF´EáqžÞÜlƒ»ºÃ×›†«ž‚ȉs=\¤dÇl,Ašæï“NÕûŸCýפé,òùh/ (c£:Ò¾/2!xº¤ê‡v¹©·ì‚”½�ݾ7†õÙd#ÅÎú:ùyp{Öä‹›|ußÜ»^Žkq¬x­QoÓÜ ö�ð<»sç¹m­UöPTR@U¸øû£ié³’ãZ’@v×è‹Iû&%õ7?*bRÂÕ3G˘‡'ý{úÙœþüØþ¼Ž™>ÞÿÂÆ&ž>Ý,-…öê±V®1U«ÂÚJË-Õjhkºkͼœ�Þó‡ëè!žÓ>GUÇV Љß.óõ{Ìëê§�ý¼ù¾ÿÕ0þÏo~ù�Û¶ñüGútãÏ~ýŸŸ�,¾ùñçï¿ñ_þõ§~ýåËOÿõË·ù¿?óoßþŸŸþõÊѾüd¯ü�þ�ª¶YEm­ü®r´tK/äqŽR¿æl¿õú’¾N×ôûþ‡_¿Õä¿`nö÷;MÒæ÷—ÿîoõ!ÿ»Fƽ@<�Ù¶1Æ®�¼ŸÀ7Ì‚a ^DH&oî£&Ü·k~EÓ’*LÌ|lû"@TµÒM`�ÕÔ_UÖ»);¬+�×)¤lªØ”*ÑÊÒç«j»ªJ¢†ÙGÂfzzíQæ<ÇpõZ¤ä%v¦ô¾ì×$}ã8qÞT\­â,“SKBÖMBÑ´~êPí³G˜Ô"ÀŠô™9�7Xý ½‡ œe¤sªdn5³R¦§VÁ¬=؃ڤu#ŽŸ8Ípü –“ ®Üu´î[xë¬×ú1i¯ÔŠMa¡)…¬’7Žv9)#u@ƾýø�…JæÙ¾pÜö�³T¤`62{8µÙ`”)gÒ³TÀ³—¥× ç»!“o82ݤú“<Nw!£°a%š=wýrp„HnÉã’Í«}cQqd%\6•]HNá\¯~žÌ¨µm‚mG2xÖÔHWjœ¾&,Ç«Ž3É0ó�•>»Ž',÷Tg²P¾…[Êàfâä eMòÞ pè$ƒ{z¡ ;Œ¢íÕ³¹Í$ _ÆzàÅVìãÄœ`d…ªLŽç›l@…gì_$( ÊymeD+‰2¬N§ÌËáËbY°ø2‡9ž�ZŠavÂÓÛö5WßœàîðÅskÛ!2o×ì”B’¼KÅê;ßìo­F6ˆÙUE®JåI:ÑÀ‡—NÑPuÀ[/ÑAð½Z ÑâQ÷uœ¢T Ž!šäÕ™ItŠ®ÀG!be"ëlWRÈP•")z'ÌXgýX8™PŸ¿|ʽwrñc ö„CjOéìÑ.±)f/³ã— )_¶xæÝtŒ‘÷ Œ`Õ0™p¶’9Íèà°Œxˉø+&Ï#+…s"ŒH¥JósqípÝv†ÐÍÛ)`Û½-܉�áNe'H>!&@(ÓC.þ¼ bGÊöãZ�œϦ‰Yaß�]�7³û9îLN¼ Ò€,—iè“xSB™lÓN¶–ñ¬»‹FÍæ¤�öűc&î!xü‡£I÷§'Èñ¡J™”3×ñÉÅÄìmo*„Ay"œ‘ ¸U³T9õ2)R=! ;n  -)Ëô”»��Zº9›ÉŒ1ñ~S"¾I6RÜ”¸¬ÃŒ”ßnDã=pQ”áeJ�\7â…¥+G–Ö)œÐp`¿UAbEªÒJ c‰­¡³¥T-4•‰Ò[KÉ4ö»‘JPé$ƒ„ÊJ²Ÿø@9.ï_íé‘SVWªŒNOœõ=ðÒѦá®jå¥ÈIQ¨(ÿ‰S-<Ö‰‰`ÊpaLVSç¨$ß½®áº´ÌÛV}B»é<ÒV‰°ÅyEGíåU©7X „ 0Xl‹«Þa*”zJF ¼I8�6…p¢‰ A¥;Çž.ôs¶s|9ÈB-¤¼�ùøA‡ÎšëxŠó�STŸ#>Μí*e4±ê…¾æ\o²íCŽR½}~ ñýZ³¼ž P•îë5\Û/�å�åbZ…³�Â�ŠDBŸa%V8ï#=̨í3®.±óâºc¢`0Š֌n“4Îäšp6Ëñ�0üüUH77]û¡Ï»ú3í†Èx}z»y>Kú�ܵS£†‚«�×}–'×õµTŸÏ±D2„‘n]Éwê•ì#ò¼·�ª¨^"’Y‘"-’ƒ2�ó'Þo®"ÃlvÂuDÏH_»¶ÞñAæåLgûHÙž‰§¯& Þüäöô‹2 ÞèíEÂÙEÄŽ±ò;iög;Ӝ޾¨ÔPvgÅÕ3“ÂÊ¢"uÜ,2$šX²*õÈh¤ ¿È ¶ÍPIRñæ$—‰÷Œ% “¾¡¨Å�];9`—r,+]}g»Yé£ OYí¦Í[> –�ž•w‡ÀLRòIɲ˜ÕÛE…àTèQ äÂ}C/Ed+Óe'×Mñ­Š †pA7póiÍ«ÒCaø6", ƒ·’3d›”’ÁšÓ€ä©Ke‘‚åvê·gü:ÈBù�>5뉧/xJ¸7(¨©©òáí%6¬èðºœNv"þ»ði3®Šû¨³4žyòÁ±ÿ«¯ýÅw¿ë`�O Mèv- “|Ÿ˜¥(Û�z`%7Û~# p2³œÈMe�a[ó-�Â)(íœTîHT¹¾Æ†×¾­áŠxts£Áú#Pˆè"gaÒÃqx–• ¶náŠâ,ïþ„˜'ŒûкÍE¦Œh½·$°qÝÂÕNêGÞ$ ’¸Æ±"Øå^8«Ê¯)ÂÔóI¤Ø·»1pSœÅHœÔÃ^ÜèžpüðËd¿:«LÇ&µÑº\]#ܺ0ÙÇñÍüs²>Hú¬ÄÚ%�LX[wdñpg öÑñÁ-øçW;wÙ`ÇSŽDæ …1UŬ2Lž#ûϱiá¥÷ÍD:0ö©/•vŸZ¥Æ]1EçÖRF•›VÄ›©Ê¾ÚqÜ1y<)ªMòCš†3õñ ÖU5™Ø¼på3«ÊƒúÑÉôF~¶ZvéZKWçìõ©ü´½xÂfƒ µ“^�¦Æcc`›šoû &¸Ë ªm"Xb¹ê.•yÛ×ÊCàî„>"ߣ’§Pñ_TæíIœ¯' g³T5¹/ÆÂ»ða_»z­�ö‰ŠVþè&ÀÚôb\°º¯ÎòçkóÕJ)°9lMÇsíùý”ú£{€w;ñ É�L’ãxLSfmQ�üP¡ìÔA«`ÛX« f'O]Uæœ-à>Qê·S6ØÇ›X—ì ÷¹)çÊe íU9˜.{:GÈÙ�MäN¯Û)¹„LûcÉmýZíNȽ_É8m›9!VU¾ñê)òÞ‰Ä�ñGm° µwR}Ãae°¹L Iä­ä~4‚SÃ[Ém£L³¦þʼµ|µC^äÂv•È=0õf±Ö!¡ög¸]iFÒ`Ѳ‚Rœ Ñ>WUÈ/Û]˜À ÄmÁKâ‚·È“Å)¹—pb·ãÂ\ꀙ�sœÅÉÕÍҤ᜾ÆxmaÝ‚sH‚‰˜&7h ñ—$7 dpðTÜÒX*ÍëbLª­«UÚuË')FsLª‘˜ªêqÔúlM.›é�Ô[$v!ÉL¥žE¡ê\d¶My Æ’oSä(ai¾y!ô“„¼y 5"/µDÈ*–%õ†‚™µTh LP)–]ãÌÙÀ ËGb à^ró Ï×®˜ªiù;K˜”ì=N|x±B»Ú3gY‰×ÛžXg�ùxÆ^oCIøò=èËqó=f xe‡”siÀA™L#çžä{t½ÛpÓ‹‹lã±y8o[rnM÷‹Š�>ä­ŽÒ„ÍB’©AÄWE4xSÜÖÐÄ·K)eö'[è•å¸O|pŒN ðÙŽ–æ\Q¹ô ÌÅ*æõœ¸c%4Tô¾Â¬¹]ý>4~.�vMo�Ó^áš#Ò3Ô¯¯ëºv† S’•xW•DÙb.å�yq2ón.3t†J”t»Œ˜Ü³G¾Î!2"Éh�Ôåœ2 Ó~Ae�‹ûr¸d�Ò\)B Å{s7¡ýN°}þê’U§*3)�ÊyRu°u¨"‰áUýR—SUI·H©˜ýl¸?렘糮â;øÞyª¼ÐU£®ÐUXšäˆÌÐUýP¹aö‹kV—!Ù“/Ÿ)‰æá340wv%)£AyÊh'¿@�ÏŽ[0ÎÍ<�|ÔGëCUé¨Ð?AXý2l¾DÁü]¸"¯ü [ÇG |53¯)zû]Ì{ÞtÈM`™Ó/4SwwáÓ˜¶æ5Ûs´ùÌ—Ï|ûAeÕ³©È»XîåTÓ‰�)¹ÓèÞå”p”÷'ïrnñºw9³rh—w9³ªlD�’�ØFü%¼KÝȲÀî]êòƒ.,ïRxƒÝ»Ã,%¼Káv÷ò Ë¿ ,¯B&^Œ.ΓIÕá:Ñ¡ ÌZžZ9ˆ“­ ÿÒ¤œŠmqðð/ÁÓ>ù—`RiÇ¿¤f‘#L»–¨YôÛCå`fzœðU%Œc;¦ä¡{fƒ°ù—ÂYÏË¿ëc²üË, /»Kþ#5ˆã‚‡Jg}j¦âGx¹—`N¥Á¸—*ij—{ &Í ,w/)aÌnÇU¯¥å’E²]¼³ç»�øðÜ­ühÇj2 UsCÊaõ°î¥çŠj:r/•+Z�ò.U‡"_YÎ¥ª˜ºâÌ{=ÁáÎå–séÕÕ’q:\P Ôp™V —ZQiù–jwƒY¾%;¤´`¯y'ƒô1�㟸¹oyáí¾¥J¿GŽ„tOüXìÕ'»<µsJè î}{jèpå%ß2ûg9n±T­;– àÆœòæýÝžº÷j¨À/ªJ!¿—‹ëã1¿7PX®%¾Õ_“o9ü†™?r=©‡—9%ß2$COá[†ä€êä[†dé)|K<=‡krIuµ·Sj Ù£C>e4Ís±åZ^xºoyáîÎe¼ü�woäáÕZU*¸µAæ>wmP÷¥m ÓE5Ú žR¿�÷˜ ŸÖ÷‰µCfwk‡V,¹ž÷x/®]Û)Ú1©¸±Jßjuá+s‡¬�á[DîþŸy¾E XηŸ%Õìt|\¶„«ìT³ÓµC”Gôi¶ÜóÒæ‰µKäé?ÚIÃ]ΊٞºSí¸ððâ×x]fUÑ}àãþÑ uÞWTôª\¼UÎoSÔ³Œ×óÓ•˜ˆQ¦KrdÓyJ2K5å6©²�+{–Ôb^ËÕÇìTRïZo©±¾Z9Kí¹–Úkªø{ÂÙØŒ6eòŒ©Jmñ1;h­yB©-â†W+á—nÞyQŽ'lΑª´Tös™ÚGØr)›~à:+ν4:WN�©Ý/‡Ö¢?ÇRKØ¿U·l4áâžûT‰`—¡noDe½²š¸LI”l‰ò‰`0̉nÕÅZ8¥J'ÑIq¡¬¸-)UyOU%;&ëÊnRÚ¥wüˆ,½ƒ’¾Ú•®­CËZ¢æ‚›^¬ÿUw~õ" a¨DAŠÆ¯�èn@îѼˆ‘ û9ê c;SDubeÙ{­"O%ø—½Q!TòuÆ«— z0¡¤éj(OP2̱­°™õZKòd1–Ò~@NŒ¦W­ ï¸ó1”àCªé'Ö•œÏÚñÁ÷ÚžÚ·ªe0¤tû7 u¦RàG+ÿOÇXª>æ4¸ù1|�9s:’··±7BN^�n¡p7Âö2ˆ êkÍFÁÂ.ºœMR™ ÂÈMè¬k>\T9<²î,Ü�fÉUYRSÅ�/Aø„U#ö„eJ=cn¶&§¬J«¸�3»-¹ÝUœÏ…‘MÇOÙCÄë:í++‡|÷îá2€SÉ8–›îÎDûòL²îÿSƒ _:Ì1¤˜5}Ÿ׸¡#»Kí©�ù5…˜TªóïJåt5•ÄÁU†'Vçè~ÝáÄâŒêæÂF§—Œó–?ÈÁLÉõ÷P©Ú µ[&æ¿Ö½Ñc¿Dû×ÑþAƒê¢ûúÔdÔ„+•Kýøé›Z݆ÛÚ<çZ}�l,ÚÉæ%ÈŒY‘ùýjh2ŸäÐqÆÀ¬WòÇ8knyæõÊh¼öè]¯1bäZ',F a ]ÎeÚAwGL„f”.’Êž�­L¸:aé5–º¨1ä$8AÞ“'4§;j†¤��•X2r2óQ[°ÚŽ6 ÅɆ� ¥U‰ˆ%íVUì7»ôáûÍ/PKÒV1]bŸ×|›¼ Ximunify-security/assets/ui-app/assets/static/other-root/images/other-root/ignore-all.svgUT ëÆ«jëÆ«jux 臵VMo7½çW°ÛK¬(?†¤!)@4å”öâ›k­%!²Ö�Ûè¯ï6Ô—ê %¹3oæÍŒ4ûüx»W÷Íñ´kóŠ´©Ts¸n×»Ãf^ýõç“T}^|˜�î7êa·>oç•å»ÇJm›Ýf{ÆÎÈî~×<|iç•QFYVfFF©Rps8Í«íù|w1�><<è§Ûãfj�1S˜ï¯\<îw‡o]¤œó´œV‹ ŸÙo“‰úÚšãÕ¹=^¨ï?šóõVÒV} 1Pþ¤&jdèïvÛÜî®úðôu{;=uïL&½Éóî¼o_�íϻٴÛtëæt½X›«s³F&ÎÛÞ�žMËÑpëæ´�Ù¨ÓùØþhæÕ¡=4U¿›ô¹Dbnvûýp(ëÉñç·›ûæÐ®×}¨½©óñêpºi�·óª,÷`óÑhS>µšØ~ùiôÚû^uOoö„~·Ë/žÃ N ùOsl_/î®�‘õ¼úF5ÒÕÊi›j§C�eôµ×†ÔS´SFÇTGm¬2uVKÒÑÕä´ËŠkbQ÷\’…‘ƒ'K«FR�ofµÂ# lÖ©˜ÊjeMM¬À¨68ë¸]ªo°æjÖ¸Ÿ„QÒž’XO:°$&<@ –�xÉÚùšl!fA ¦l·×¤s”5‡²¶ð†HL>vA”“܉¹&_ yñj½,XÞ‹Œ'œ2XRˆI‚�'¾—ÊK’ýJàéæ}ŠÓ³äæÅòROS—úoBÆLÿm$‘ÿãñÛ‘¾dÉŒc—ŒE�e'/â 6¢d�aQLJ’Ê�c‰£I³£<}8k",»b"øh˜QR(Ø»˜#%Â>§"z0ÞY#U¢©3k^³qÆP©kÏRÄžSò9ÔE 7N¿$âÑ>d=Kßd „¨�v®z¬#G¬¢Î™SNctÉ(Í)Âùfqm TK¯vYRLÀ‰fÛÝV+Ö-!Ÿ,°zI-ÑÀ‰Sˆ,ävmD±Î!Æqöß–JŠ@G‘¸¶:»P„‘®u‰ƒËN†Ó3Ü3qb't†d‚rž0ôA%Aˆ F#Q쉛—Ö6$ÜBÚ�×Äݯ¶&JwêÁý(ŠºÌ"µ·ÎÅ1 Q­I.HëçqÑŽ@š \W†+™#™—9á;¡¥ Ø&C˜`$£ÎcZÄC2ü {‘0æŠ5§Pcòü"£È5j)� &D¾CU¯0?c6.dé ƒ¼€½E Ä Òô’¢J¨ß§Â¡Ï¹ÁY§A-Æ ‰˜~ò]á�sûŒb@»H&¾ºì¬‹É_P©//x™ÀIi±UFãù¢d7—»ˆE0â¡ZéÓ¾­0ücòÞ#` Cc^Ï(BË(¿`}Ã㲑ß�Îßgçl|ŸJHLDž¼ƒH˜&]ÀoKM£N)ZK(Öþ©}à�bFÉ‹íx¨'ÀÙ혔¾�eb0~p†Îèõa2‹iÛå^òA&“7aŒ®Þæqù®?ÿù›ö´)‹™üa\ü PKÒV1]UU¤+•ê eimunify-security/assets/ui-app/assets/static/other-root/images/other-root/new-features-management.svgUT ëÆ«jëÆ«jux è‡ÅVKsÚ0¾çWh”K{°�VïÎL€09´Wî 8ØS3Æ5I~}×�4Æ@ÚI㋞ûí·ŸWÒ·åŠ<ܧëmHã¢Ø| v»ÛI–å«pθƒ’]²,â�XJâ(YÅ<Ê$Ú�²‡�r .“jöê‚à7\‘»$MCºÎÖ­ûAþ+�B•Ñ:[.Û}�½í:LHá5Þœ%gàU„ógŠ xÙOý n»²â}V¯}€¬½8ø² �o°þD]…¶˜ArO×Sé:¬:åÊÞ`‘ä‹´ Ïð&´ªÍ›¦uoü”_ßtQ ˜ŠšTLZMð^Ç-`ÊcQUñUß�«|qˆàœHä+ >)®*°úB+Å„}yNëùý;I¼}›Ç¸�Šn|~û³ÙÄsþŸ¿úí7Œ&þëœþÝó?ª1/¾¿eñÿñ§;`ß–ÿ“ÄSN`ÿ]{¬nm�"–s^šíV¼[ž­ãýQ9&<ï\œuòöÞÊë¸<ÃÀsÔ3?ûL†•-^psæ:µfž z€ï0ØCýT:IçºÞ…½RWsrmeBø@ªi‹ª�¿xb· wMzÄY\«âI®*rv‰FÝË⯠%_"JêèŒ.�¶PŠ'Æ�\^7€Â© 0Ez®�"Yî¦Ép¼túɽ;V�?’YK2ó´K147Éd~y_—Ì¥2º�6'¼TëgóqÓL�ý»ï}ع}¦,M²ä™OºH'_$÷r3™ï‡YÄ{çŸ�?l¥{ÉœV÷òþK¼ŽýµfÅý°åÎ*kó˜ÿË|ç8�Ï?øû—m-a S›Ì@üÇùN[޽,üý˶¼•Ò‰BeÞö_æ+ß±»~a÷…Ýv_Ø}a÷…Ýv_Ø}a÷…Ýv_Ø}a÷…Ýv_ØýÄf–©çCE¿I³8úÅu–¯™ ùŽ�*Ê ¬ôã~®“,ñÜAÓCƒ§w07P8™)$ÉT»y�xœv. ¦•I«þu‡?â$›Ë»�PëÒî KêÔƒdäÑÐÂÔHû�I6œ|�ÕI-P3g]t-ßÂTÇR²?Ÿía1%[›‘=®‘ö\ƒ±õÚV°xú>}ãV8ËV´M£Ñ d½’Žtûx¶Ã*ö€»ã«€½,Ŭp ô BÐwÙ‹q[vîÎè-Èry¾¢±Çñe¯Ž64Êì�^×Ë×<«Ú~’8OÐ+Ù$«w¡Ïýíãak´æ¥‹—‚òd™(ðHc>Å*k £<ÍR(Sñ‰2^î“NG¶±ÇÛZ0À¦ÎN³ŒÒ§˜å›e™Òv/ñÕÉ­ö©¹ T¯ÉÑd†±€äõϘV–|‚j+±QÄ&ûÜ•Æp6Š.|5hKçc†¼üMè™yI�µ ‰×Lâ»bºŠ‹O¬ù…W˜áú"¨¦.`�å«>ûf¶×ò8§ã)¦ƒ �î;¶ïÔñ Ý/A;ò$éy.° •Ô®óß:8›e688aGv+XlEceu‡�dÃ{—*nÏ[Ã`ýü‰;R¦³I¢-ÑêËíûäe¬ÿ)9‚󘫬Á›çˆ@ON ±Qàø57wdt#–F·›˜¡y<û4Ò0J­ùzÀÙUä;ŠhºÜ„M”fã!ûäšÒi7ö3wŠŒ©ûð‹;Žã`ÖÀ4ÅMplj;ãvÚj•dô8Pblwþ)g“/ 0y¢EgȺá 1Û½“RFëH¶ÃЦ‡âàôͨr†>�>¸ÜÈ�S>1’„Zo¼XÂÉý©¶âJ…±� ã( L’õhŠ.”ÇPxÆñ÷ŒDî;š’Y_ðÁTS.üÒ�ÖC–*T°™XãVÁiêJvèØ‰à2Ifs¿ ĆÑãýŽ - ŒÏ&(Ã’î¼µì*º!n%Á$^/AÀñæñ�S\¡“HU8y?žŒ>[‚Ì—ëeg_‘1™Ÿ�Ú.Üê'�'nx¿ à XHö§ú‚íöæ©>a¸Ýˆç<{]¡ýÃU²lê=ÆÅ:º±3L¯gKëíËdÚ^Ò›�8pßñW›Ì�í­h€A Žâ$Ÿ…ÊpD9aÏîkPî<ó¬uE¼[½N`ž›´�ÍÒ�ý‰gúc¿c:ü¡-èÆÚ•ñ8PX„P�B>‹p)îWtdnDÖo4 cÕN:yFƒàD … ’t”¢HœaÔäŠ`/¸¼®Fôî�+�ÉjxÄD_Ó¶Jnm®ûª×Öúr€gq4Žàz±ÏÍ6 �þ � ^ [�ËZ{ªiƒ¹QepŒåÙŠ’ÙÒCâ˜èŠ^I2AgYî¾qåÎÔÃ>@AîYòH@ËnõziúY€7¾ü‘ë$›°©>H§(€$<)³�GåFŠ á}·žzм`q-@`é¦u-À€I°G&‡ŒŠ!Û�›Øú=<¼zLÎPÏo ¬Kº�:2§X¿Î¨Œ†ÐþzI z¬€ÏÊõa�*$g97Û¶ÜN´³�³Ø¬þI{Pƒ¥‘œ/V¦Þæ×]Ü“ cëëGZDå#J "hj<ñÖd“00åR°s#SÎÒ)i+a)Ô¦��8^Þ¿üDCÀøn4yðkÇqÖ¾ 3ª^“.à p¤ÌY÷z­Gz–îRJQ3^Ú{_Y©xQÇ!XïЈ—Á‚l UP®™Àm^q 4wPƒâj¨ù2ÊòqÖý™¨;¸UȲî,˜óˆ)¥ˆ+¹õÀz�óë‚ï'Óò“%�Ž1Pgn“¸ð€›ì,ã˹JØŠ9{Ï­¹âhyÚžF€¬vT”nêœþŸ©Ê†ÃV7†É@ˆ-}ÇÓé‡ÝÜŠû."E½GÓýnuy@ªCY¤ ËŽÝ�7ôÉ€sðWšo¢p1nö¸ÙìÕ*Z4P¸9Ìx_Ô6R`…mº&µÑ(Áä~B“@~Ev ÝÓ�£C�Q——Ÿu_ Åi¹€ÊiB>0 zTÂú$2ÕÔæÀ÷Ç鵈R A»àÊ3¤ŸN4û¥áá KšòhŒZᓆxgÐÙö ˜¸'Ç.\·|,ó#2D{Õ;�5®ê:cÈ€²‹¦WŠ„—=LÓ<³,nÅQÅ=�ûÓN GPÒó ¢2 ©8…*Oë–�ß&�,¢�Ièç±»X;ê0’%:6Ø'1.W\1lhüqž0Ú~h„i„rm‘¶ZMT1Š[nuæA�ð�˜ €ˆ§Ë�3Æ•<®] †P‘/”<“à‚70XúÊš”PŸ•j Ü�«Çe¾z/f¢`¸ÆîìÇ ¯'Fm®NíÅñyuêR"ŠÚ€äS;Üü +nˆøδ’–v6£:GNZ=&¯ì–�>Eeˆw„*O.ã­,?1,î:ýŽ<Ûuò"+ �è_Ë’£)XhÄÑíÁíÜL¹©/cTÍ4Óbå%¹r$Vmÿ5�Ê�xw9qïývâ½úÃÚêîÿ„"’B{-¨#3?¨*"x±ãb¨KÁMZ.)§š6Üæ¡/àmÚCœñ)³uãˆk\úÙ\laƒ–¼Τ[#•µ¸¹ï Cy¨B†Ñ¼–ÔöFxøþ¸._R–w×\“ºÑZàrÌ߇¤Ÿ(\’ ÞÌ�ã.V]Ã`kˆO³"|!k�t’¸Îp6já“¶J=v�À}Ù”À(09Ý£‡xÿ"Ó^±’öýø\z‡Ï›xMNæ³oÌÌÂX?s×=ó³I'–èÔL|§,Ô Ô¾T *¬áË- a A~¯2Ã`nÒœ´Ô-ów±JYú$Ly§‘«´êã²Òm*úà¦7Ç÷²/âõ¸D鈄ÜoŸ Q{ÔOåÜþÁÁ°ØTÞñJŠÖuS o%€û«ï¶­ ¢7½Us¡í›]5~æ|ULóL—k;œ¤ ¢Td™\2 mNÒ–ÚÒ£@°Ä]lj’Töà'ÑU9ËžBˆøñÏA 3.Â+x<ãeÛ¯ë|Ù¶\�.Q¼*óËÌ¿uÿ/‡9·72”n&Í (2Gv¹nýÔVo�$Y¶³ÃRªù[:c X'zW¤×+(rJÓôeçâ÷û¦Éçæ±¬MФRù�Q3§X«{¤úNFn¾u2ÃíH\‘+H!±È¾¡wÓp´k#Ph\TC÷®Ö8ï4Á¬?V«ª�Õ½¢{j¾þ'm®Y¯˜gŠÜÖ6“?Ç"ŽÂï`ª L†ãNtD‹ÂÛˆWŠç¥œ˜WÅ#É“e« # 7ê”ä¡€z§Jrd€*ø7PÄ·V( 5–O® _‡ú\ÖùÏ-ÜzÑUb5Ò�&÷¸D‰HebÒÃ2нú1[¼|ޜΫõU–‡ ¤û#,h¡p¤µÞê•,ncžKHª?Ã^’Mq¯õˆÈ×AWŽ=Ï(LõO“pjØ\¢ßp À­¨€ô+gV lt¬§—`AjãHûF)J3š† %[Cµ5Ù«}ßÓDeÁ¸‚Ë„ÏáØüÂWår 'Ó0RÐÀûW† ãZ~Žao~^â`|“7šÄzâþÌ…¨¯u8�N¨ ý»i»ê/(…;˜_JR™Ãç Ak~Ô%»\ýåÉÒzò)±û ¡µSeܼ¨ø¬Žxð¯ÐtCJÿ[üäM•=hœXÉ´@‡Mâûu7|a€ò9Á0ß‘Í)¡W@ºXÙHÆõ”O¿ÒL†û{¶Õo1TÔ0éöz³&r–û�¦>$hŠ¿ò ©9æ*nïÁêñðõ =�Kš<PæŒ]§aõ=ø�ö0¨Š~US‹¾ák{>9së×$Uj^À£éqÅ¡9Oï�;¦>~ˆöØú$7ë*6WêM&wÌ,'¬¿zY°NCšÄ×ÛYy@Â"=»éˆ»7²–@qäùEåO.¤ —ÜÑB%ÚHL˜-0O4,È(hrYâ"³“8wqøu^#m7x¾r䂱ÌÈ© ¿sÿxúty2§ú÷K%´3Bñšå¦Y�-± ÿË�2'0ªlüÌ‹¾95ËT’NI·шî\â‚©'hH—DRÙœR}CÈT_Rá“G½]Æ#‚¬Ïø‚F .~yA8þM¹dë�¡ülà‚Ž)޾ÏýQ}®µ[ {çHÐKù!q¾6±?£&^9Í/‰–`ÒŸôÆÓ.f‰ `‹¬�p)Pv•ôY�¾å¯`æ>«Ý”æ§,KYÛ Ãxå GßVÈæÄuT¥eŸ†Ltð4pK¯ûàÄ”À.EHý%¬©£h·¶FÃÙøÓk1Ûú$b©{'0Fà‹&&Ç#©Ë ¯úaÙ[ A’‰ {ƒ’âÅ¿’ç±F'…“Ý&ÛS '•3ËinÔ7)–‹5XºÀ‚mò^üƒ/Ïö,LS(C~2A_��¢Ø~®UPdÐCOT!¢p)§üÍ4æUûzÅß)€e4µX/ÜŠJBÄgò “ÿÇ9FÛ´‚´¯C�ú£c+àæ²r`Å„µ}2®6{2vÖ@éJY…l ¯ïúà.(Ë*$‹äŒóý>|Bg�çgyP?z"LéV”`Ó¿±B„?¸ÕC�(È3ðÜGIûþ^•½…œÿ³¦w*"ðê—ж´t‚šuÈ”ÕgÊWÄpeMǨ¶S� ÆQðRKÊ ßB@¦ïãpýÃL�,Ø6ðˆm-sC¾Ç�o&> £±,&1�}¾}ã‘ÐO·;p÷—ïvŸ¾’ 7€™“$®–|ñ#åÑ7ÜGc´z¤äšªÎÿ÷œ3gDIù‰7œVZ¦Z“–g »lˆõï<ûÒÑ1ëCTô¼Œ·‰÷žÃï“ï”TDšwà€²Nöê L«k �µ(]í�Ç´ºœ9·,ìcÚï—›¼NG[eôbÒê\ý@"¦)B±Mcâ|¨ v[12œÇZ³©!Píšn÷’¶pŸu¡Dºåpš¿†‘•4�IB’-ÇR‚8NŽó²üæ;*»¦(‚®ƒ!Ò¡ÁMðB<¦ÌÓ§„ÁˆíB>ƒÚð0[ƒÄìṩ?׫ÔÐ]¨l¾çäÿï}’�r,A “9ƒ™q…ˈÔb½¸ã¦¾òØ#çZ&·²œjÃIbÛËòKÒDêz¤â](›}�í:²®Ç±W½+…Lß�Û%[þfƒ‰nj‹PÎûrû¨ØÒ–r9šsÊËbï˜B;å¿õ�aÇVʧç¾3\ª`¿žÖ8°cSÝ4’1çáÌÊÒïdŒ{U‹¢ˆcc^´û½Ó V¿Q¸á«i§Bõ -ÄxXÖº '°´k§ ¼d_HÐçÔ¦9�ƒ�.2upiîügNÚ:iGœæK×:k¤Ñ©yƒÊo)ˆw†&›ƒ]Zv±t©loB.'uÖÜ|ED6áNÎ}ù¿ºdÑÒ#‰ç ¼£_ ͘“…WPhíÌ7£‚V¦\~jÏ �=ÌD(À­ô½s Ô—àdË”:äBsÛÞš_Ãx(—Y!èLGßË1¦[@{< ¿ßØ�òŽˆe�LÚ•‚á0¾¦gQÐN­ó½´/G½±ysÏ-úuÕÓðšÈb'‡^„¢3O,¯w&„Êû2oAè/r#ˆSUNÆåcž "ÁÆâþ™ù]«ü­zk<½§pÁ»íO'iZWÏe&ÃÛÉD•@45 ¢”ÒY³ýEJ¦GNZf™? O,{höÝa�Ý“£o*„!AqP?As3']Ú¿„Nv©¨ñ̤8¼÷"•õßs؇u,Ý’y",|ªI3üÍ’ãW€�äMi[nw]Xeâd!;(AzçÞ‚–ÛÎWÍnª$ðšä-Î,ðj®¡YöºL¡åÅ ­v¶W!|;ƒD´+ká2ÝI¬SåX ýeÄ�t™È³©ÿK±vþ�ñ•� �™Ô0Š îŸ¡|JÍðúRº›s4¾™{� ˆ0ŒgîQÔ*"2+ÃØf¬yq¼¿«²Zñãx:nÕÚò˜x›,Íêê)1" ­ ~#•ûµØïÍèU@P�¢"U ‘ó[𽹯/Ó§•+‚ëÄn´åÿ> &xÓiG-üpà€ïb‹OÐ÷ [½;JªÆrÊBªkFÈÙø-£¼mhH«vw®�ŠÆù" ù¡kÒ×ဢ³¾ 0D8”ÂC¯.àzˆ’HYPM”;óÄîý$\5ãÜujTˆ�‚¨bÏ5€ý”†-Åuä¿ò”áØðË–¢–…Ÿ"I‚GŠ� ÚÊ«W »ÓŒ,Ù%#õôÁ‰¨«c”÷Q€Ó¿¿j�ø]Ôþw ”ò{µÔã¾eÙu<üdú¨àÆñÀ`Aa¨h�@ç½C�Éj2Ø�>•º¤�S3¤”æ �5?ôkÐ}ïklY‚òu¬0ÝÕqÞ#à·|ÓOi[HŸ�á/D,Ù˧´-ÌïîÏý±Eëm¨Õt†©¸DæÇÌ™F•и¢Âd^6¾ r`�9Ùe¹ì šôöBöÜn€N»ä4€fÅñah⫤[`ššw‰Œ3l9žÆ•½hÛºjÝ<û.�ött ³øcA‚{Û��uä�ÍÌ…EÅPÿ^­¤3 Jï| ·:šðùjðÿ¼šnmç³0ZE’äE:ÁC„i ¾ÙËÖªÏ@‘s×õI‡ÐÏ6dL 2>fé³ßÔo>Ìž›æí~¸öˆÏ–Æe'þ®à’tw„¯ ÑŸùà�¿ÏìPü®ÁëÄ #@ Ó¥Á8Ÿ]È‹Þal‹ÃÑëºÐÃ<�H*¿c¬ÌùÚ}#&´Ë=/)v#Kü!{ÊßQn:Gißü×±ªíùÈÝœÕqä8È<›:°—åöAÙf¿8ðj–å.eï5$6Kex~˜ÑšÔ]­ŸïMÏhQÁg¤ÅìµÀ¦j*_ÚÞÈfš4r‡9+…Öä=DUöoá¯*û�'…Ïç—œ–ôÞ3Ýõf`b8[æJ¶€„–N—w¥cã.nÂRÄÜý6VÎrø9Œóâ¹aèÆé%ÏÎ…‚$¾% Çò&É>Bcý5õ“ ¡R’dÿvWÆOLQÆ<="B¿<•(…!š<^‘e8ÌpÂ#á6Fj¦ÔôÍb;y¢¸gâ½hêšF¦ ôô…UÁbÿ0:-õ?Ä)Ý[Rh˲qß‚@Ž·Ü¡NùÓ])mÒ~¥DÇžèÉLše™­·CL+ñ#…_t,Æò‹72]ßÊáàj` õwºáZ Ñ̲]pÙ££GÑò�…/6À(ƒºëW­V '¾jFs”ÐÅH%\áæí bjµ¾å†7̓°Ì½ËŒô»c§×sµÜeò×»ñJÀ´'ŒÉ;¦G‚¨*þ€ØŒ�m_$ŽF¯ž„#¯Å #à÷ûý=³`†“‹ŸÐ|Èu¨…`eæt ÷Ö¼7`$ÓiÉTdX¹ø'’¶æüý˜| -tŽÊn$ü{jÙ9¢6tpwvÏEÚ�_PE'o‡Æ�”õ¥½ïòÛ8S9fí}a¥ò¼Aí7aú#f£åò¬›æä³ùÍe¿<É|=’š @¬D7ù¾V¾j Òºn½¸õ¸¼mCIRï Dš@…¯rqFòƒ×Hª†ás�Gè„Ë„õÅ$±Ú)›\ìúÒqsg—áÛ�µ¿´Û<Ó$ð´ <øÍv4°œVª]àÿ®}ùù'ûuè�*q!4——iü�¥€Y3/@¾Ñ;ÏT§ôðò{)‰·©&&�`a+7çÅ;/d}îÔŸN,.QUøÛŒåC¨h `-“;Ívvšxu³³»} ²Ö˜Š[�¯ÈšÍ5V¢ Yg«ûÖUýs › ³Êýž ÂIä@›±Hh„Fª#FçB‹�ã"ÄÚZFHûòe‡’kªÂ‹ï°±'ž¯o¾Ê!CÿLD—«dŽ¢äó—’×4k/ˆ!ñ ʬ€n4}­I(ûÐÿ<ôQ”û %ÃõÜþÌðò£U ¶!û›ŠSåÅ{VXY¾ë#G QŠÖ™ÓáJ†�ÇÞ|ÿÞ/Mn}ãïW4ûþövê¤K>á·/%­41PçÈ tV¢<_ '¾¹dû=P%o.²1^BÝ•ÕòªÎ/ƒ½nu‚“SC��Ô oƒoŠ-€mܧŒ¨µÙêî­ ß^¡úo-pÕëƒ`ÛAˆ*Ë‹7V=®–Ó›—´e/aûœ{‡úktÆ:-E¦™�Ò„‚RÞuM¨»‚.ñ±¾Téóäº;âv—‚Ž&lls¶ÃÑ ŠgýÎãí¹d¤:¨™é~z " c@€VÊ3^nÑRy‰Pq€Úû�^V7˜¢4q\Gà¡þ$Þ×è0ŒçôSÙKŠf8ËI6¼†“…ŸE5¾�ž Õ·~ò¨'…ýϸÉï¸íc­ÁƨÕ=8p4wEMÌØ–ÑËB©Õ¸SŸ¿$]µ~{ʲÈËøSâè…£l؈R7M4zfúñùgÚ}šŽ^žçoU[M­Á·â3L½>fòtu£­=!§£+Ë.e™¿ ¢.“$ªÕ¯Žõz¶‡êN�½ÁZP§ð#ÊÚ¾ñãú¶ß>è×;Ø�ã+3 ¸“Jø»¼Ó “¤ü»ºÇóêò†Ê–ðF¬ÂU ú¯Ûê˜r»/?¾ýË”CU†ìdë—�îÑP­>iS¾CÄr$Uîß¡u‚OŸ:3hšpj—U'›m¸÷·Žˆç&IæìOïÞ“Ö‰@Ï<ͳf (>Ϧ"(Tàœ°õz7V*<,÷À—¬ï[æ¡Ãgp¢E|O3µÉŒ×  ØŠÃÈɉã8 ¾p÷wâaë7<×;‚\|Å¥D€îÝ`s;Kb}ï$û‹O?e4=/Â)JœÑRعշ¡—ÎáÑy�üyKÕ„÷)›ýœT 9„Ø7N-ߟ™w'�øËi¢«õ¹å= bÁnSY”ž�°éä7J†µ†mDÙE$ßÿåíMê^o«¿pm»Œ›Øòû“‰aÜo÷nøÙ"•�z{ƒ#—(šë”24ÓÊ‘Œ« RpÞ[3¬Åã™öˆêÊ“©F~ý{æ¥|¢¯&Ô‚«]ð ×DüâoÑÈ>åñà1ϯuÓ~–K�$æO9õ¯H›(8®Å& ³æoåÙ8§)ñþx«Nš~ýÚ³dkÀ¦Ð!Ù¦ ·PÅØ6ƒÄp*ü¶>òHI—íÇRdrtÒsàÙ‰»ã åÈ,¿>37Q=ñ�Væ÷hºmÁ¾A¨Ð¼>ZèËøVågI%Â8hš`E4§Žµó†M›vèY´5RÕÓWhÿ ØF›)FÈtëá‹Cw™u7¿}0*ô]ø´Ö=²[·Ì”š¯ÏÞí›Yó€T¯�{·Võk§BõHC„FTvòò»†ÞíÌí®ØÞå�˜!x[èP‡-à$^%5Õ+íÈ_‰ãä°,L™^aQÿ8Ù8»vû°±9À„ ö`¯ØG„§ŠéO�ûzjšs¼ækxU•ÎåûÈÿù¤%È?ìõîF¾aíwöƒÖŽr[@X‘Ä`n8ê.(V¯ûžO,YfF‹úÄ=�†ò'‚‹ÃÛgKŸ< Våù7�#ÛÔÄ Äü“ä÷›¿Yg°;f�>þà ®.c(0¶®eð«Cc¿µ°¬@ ôx�HR¨mPÇW÷}Îâù~d ¯‹¦aešž³Ë^‰hu3P1s”œà+údúA~% I†]x£¿e l÷W_éÆÙ²”ŸgG˜+‘!¾®¤Þ‘ér^ ¿£Üm-˜‡ìœê¿ýDæ*ŪõYߊ"m�ŒPõ©_tOþÊï] ëQd"Øì@‹À#Òw¨Mk6HI†HÞæöÚ%�éçIÿŒY†­A'•\ËCÿI�)VÑÛ †Aµ¦QìöïâNÌXåâ3’9žsÙo“YÝ6AŠÂ´á­Rm5mϨOdê6êöæGUjy†Iøáƒ%ë=W¬"Mœ� Kþ�R³)VikÊ×µÆ4Æ5ÞiŸÌ# íàðŸ .¬o·Þ¸¼mG–Æä�Êä]s3û�êUÔi@4èJ&,—×FU™ˆ Tý†•ö(¸³®[©ß2ò­«O5‡é[ÉûìÙö§þ6ÒÒIËÚÚje�$Éz°©ã4Low+Vç½qæ¿õ Úo<}É”nRùéÁñ5åmx¯!añQë.Ø(�Dz}JrMÕ¬ÿŒ×–pŒÒG÷É·|e¢‹„´^CÕá"¾õì¾½ŠwAÙ4d¡x·þ(Ñ#¸rµŸbÅq|Osé_´Åò¸¥kÝé Šö£ü>úÈá2ši˜@P5'šÜn8ÂÍ%FIMÅ +Ý]Ðþ [ÓYÝ m¾OùÛ½{Ôì⃇¨Ìƒo¼œ«—ô6 W0$¦ð•xQ<ÖVùÓoÏ÷ŸŠ|‘k]†Üdû²` -¬cÙPó™2ÚØ¤TxÊÿ¡·UrÄdžȧ!RÕµF´Áº}K<@í#ý{†‹Uœdüg�õ¥Îzd˧XÔ`Ó,û¶ˆ8†/¿¿ÏÁYÖ%¿7Ÿ�é�l¶D]¬Derï˳ån&ËlÛ|�oÿ^}�«>‰V£éÈN½v–]OzWo>²™~J×§óáÂÅG›®Û‰—‡a_�47ˆ#ûïH¡ápè°`2Rkí¥ºC@*„‹0ãÒ¬õ@‡eRƒ)Gx“åG�ò.½¼ ³ÈóSº �Aÿ)!ˆ6÷½êéG¥«8×?ÍÕÇþ~Cǘ•N‡‰Î~Ib܃AºÈYîŲœŽ×çi®ç?þ¼ÿÞ«ÜÿóBû·2Ó0Ñ«!ѶTYZ±x(Ð’zئèîq=Êò•UôÀ>¯ç//žkÁ¹i�ªB¶•€}¡Tú®…¼ÛŸÑ¥I,L:<¾PŸÏXûâ ·]lÛ¢â<—�ʶdÈF®tÿWÈ"ôÓì­v%‹l-È"wŸ°�oR)õ¥öHÄžQÂEзУ¹§cM<á ¾ù•Î�‡ ëš–o› �íH'ë:öÈ×íô�yyAÆ[÷ƒ[.Òš¡¾6r®ûj K8b´ÑsjÜàÛ.½Íafø²XòFèWº.€Ð>iú¢ª0mvŒÃ4¼ÁÉÛ¡?Öúo ÒŽÇÿȋŅ™2iõŽ‹ •ï×#žl¿?!šì‰wº ø¸Pt´ü¶Œ¾G_ËÙc/òçùÑ)WXmÄ�`W«ýÝ7ç{­AfÍ$߀ÌhN™ø‡_ /oaŒ«…±ÕçÄÔª X? ¤Þ¢øñ?Š`jé­Üë£îòÛ–xdVÅ(³ c¡†�«ê´ÌRunëur!ßvÜ7¤÷|žÖL† æ6~“r±@oDZõô²z©‚,•y¹F1�Ër¸ÿtî¿ý½gë•AâöEÉy�÷†| íZâÙë@Î\T׃;êáš—7d—·û‡@P¦2‘ ñ€Û˜‰j­0ƾ¶�Àµ¤½Ã{µ²0"ÇT Šd¡†ÝËJ*Ò¶úp{�3õ—AsG1Ášx›èùÄâüóª?—sm9lÎ|-¿µoj5”±Cû¼";pg'±üØæ¸òõÝoý�¯ÍM5úo¸átjþÒ3yîÉûÞÔ5B5…ŠŒ¹Þšÿ­7æ%‰g•Ó£ã.¼©ß”,‹%¡i�±õv¼bH² ŒÐW� {U^—õï\ß²ixf¯—ž&­^�iü=·\  ¾¶ïµ�·w�â:sHÞ´Ü-‹šž RÕ¾,ðgÂ3=Z¿=W¼9¡äJNëu_?Šse÷ êôž ß–e©à¤U'ÔjgµÇr¾©õý ŸiYïY¦zDvDV¼¡øw‘m¨¶Mtßß%DD¿z!j“ñ¹ \ÚO`Ú9˜ˆ#9‹cCš8[a¡ƒ/ЧÄÅÉäVû·/Mþ�Qfûjï$ý[[|Ë.–_ùNQe(ëKWìòФs§èˆG …Ȭa;ni•îî‡×™x µÆsºs% Ø$,Eß*¨vÂÆÝW^-}gš_÷ ˜¨òD¿ñ•@«¶@¦«ÄñeªÐ»^ÌZiàF)/tÞyŸ ‘‡¶Êòè¼% Wãî ý<ödÑZ­ÃÔP¤Öñf:ä7N­æL¦Ñú2ñΛ±ýÎO*:‘©Wq²eÉ€R›+ÌwÐ^�¼3êµn¡þÌð¿û߸Û0Þ Ê�ö;uàG“ŽËq‰�ê¬~â�EU§§‚|ýÚCoV>Ðe‰ A&AÜÈ~Ñè¬ÖW‚€Szm1Ê;�=BëÈ] (Y·ô¬”íbù¨ÇE³‚ Aܘ"é ´!›¼Á÷@Kí)�èú‘?ÓI’Éçä¡ÎFΜQy›‡‡_GIõ�l¾`ÉÁ¡P<ÝÒÁ~‹/�=!ž$¶•Ç®ÿí±Æõa ²Ë@pÁvi`õ}Bú!ãJ*µê;ß^êî½2­$ìûK~ÒÅhuó<Ôj:gƒèõŨàöãж’ê¨â�BGî„�!�¢câÍߤÙJ/'×{¿FÌ)Yˆ I¸ l$�áj?´F[¹}) Do¼Â𥠛 W˜@ `ì*;U�Òì�R’s>ýסt7®¤ð¡vÉwP8ÙÛt¡7ÛÐ5¦ZëM[LŽæzÙ“[’6hèÏ;fÉ qä,-܃…Qd ÏO“õ˜nè*3B~Ù”ÂïÌêG/3”—Á¶Õ.ðÏd² 5Õê1+¾®q”eO3ÅD°„“E™çÁ‚�a`™s0$J-ÿíÓ·d^–xƱ„RVº@¬©Z¸¼^ÀJþ41‰�×§dk=éQ�ÔÍ�#'N;ÀÓ¬.íØõäæç!î½ýøbât�í¶Õ/ôj׋ìÏÑW…/o´/wþŽg3þWc©È•ˆš©u¢h¤­mSÈVhbkãåê Ðm·SÜì×þ6Áý{Ë:ÿ²"ðØ›±‰†„SŸ …‰.Ùì‰ÏbØâz{Ãj¡óžp˜›Ë¢üûxv´¢ÔÜ#–Rƒ•åŽþݶ“QTfÓ©t®þwq+4LþÞ¿î_Û5—tŸ¢ÂƒB#îvɤ¹!€�?­|6±5¢7€í —4“)ÚÒƒÈwÕ«'<'ðyÏ�uÊ×üÕ‹£‹FQêqÝe1`$ê/à·Úž|va�,gLtÈw£(÷y:%¥šešy8ë™RÉ LflÜ­�þY[‹ýì¶KFžÑOð;Ú{a®™C_ÀM¼Wîo}ºÄc ''?Î^a‘�‡™ Öì¨ÿþÆŸïÔ5{´aéa4íò–*˜�ÐÅžÅËoq³ªýuú§¬ö <±Ýª·\ÀÖÛŒ°o/#9Ê'ìòWó¨–ª¯w¡~do­‚&è2{ÇÇl‹2ÑÎ}Ëœ�T f{ 7n}CË‚Bp3V«$”Rn_æÃu ©SZHúC§CêœnTaA2Mé7gì†Îx{ªGQ.µô=/òoâu*ù\1Á:Nç;f<Ö«%šk&Ü`«,‚£y¹Bj Í'Ï}¨ô)´S.ëž�àÑ•ƒþÛ§”Uã'P㖈dz³-IÚYÞ m̶;¤cÿº¸½Ÿ™Y¡ŒÁÂ4yoäA1ø_æÄM ›wh¦ºÓK,ciªóðËðÝ0úpoÓž�ÌxwÇáó*Úä5àpUæ…4å!ð |•«KYÿ¢Wù7ã øitDo ÔPÒ¿��0Lƹ.¶|Þì!ÖE Ê0ïßn ¦VÿŒS,¨¹øÇ¹é±"eiHÞ÷%Nõ*ÖˆÜP—ü™!$ýøY×a6™ÚkÞü‰ Mfq¬ Ç—…�Æu½�°Â$ø°£céçNÔßÙ)“ÿËVÕ‰¥.#,»\2éÌ‹B%ùádK �‘âg¹�`§}–y²€;BUØÞÐ Ðê�Í"%÷h ‹µuêj—E€mðAX+Þá•"¤çC‚g–^fw‹=¥›Ê×!³Ñ§,Á†!RM!‰ÿå_,I ŠF¿„#öþÅÇû¨(¶"JÈ56DÙ8V^ø§Ð‚÷öˆŽƒU7N¾.cýÎL^¡cOĨñ§œöy ^�*'Ô�s3ñ—Þ¨àìx�Hü|<‘@‡Í–óá²BR” ëÑ›1å«ú{8ÈÛï08˜Ït‘‘Ã�õ 3'ü7#ð©a¼ÖÍŸž§qLx4¼ Ñ�´p¥™»ãQÆCÄ¿µLopt†h |›�ãZ77As‰9?^,’7“E^E±9ϰ¯%¼!F E„Úr›Qµù¤0ÍÊ�°ñ(rt§ÍíÓÎBoÒ`¤!PaÑÅF(+X¸_l–bx‰[¸¬ÐÜ%õïel‚Oï]( "TV0;�=â!ÃN¨Õ¥ ¾¯¡J²b(¶Ï*âó ÞnM¿`+3[Ëñ\o .R„1×ok9LÁäŸÖ=‚ú·þf¤@ ÿýl-)ñMßÕ¸ž·7^]#Ò'>ÙßRYÿŸ¦IõùëkßËZñ§ì÷ÖSðcINîkÚ­ i2( tmnŸ©5%öX¡|7ê`¿3ø«÷`9 áÞ"©¤3a »SžÊ·ÝƒÖ-7"§Â÷©EòïRÙ…Ë5,u7)u,–S€"éÖXSÀ’ü(_އ»,:ÒÀÎi*%õÂN» /¡GP+ÃÛr¸/§™v„¿jì×9ç=0Þ>¬Ó€Pä-ˆùswÇy™­?Õo%jÌ]8}þŠHÑAðý‡lšâ…ë)iô9ê§îoÃ0Æ‘� ¿½�·/Þg+$�]€ëóïÛü¸”ìºîüÙC ­8ŸC›§üÂU—ô)`iÌ͹ =/GÁ"Ñ´×­Eä.3cPHú|æÀ´´HmUôºG彨Ðú¯Oæ9£v•­ãCìc_½SóÖ º¤†wdð0í$Fª®u—€Fß¼}{yÎèØîš¸¸ö¸”ðÕ ¼][QdöwôѪÂÄÈcï¿Í횈ÍÒ‹¿pošÂi%«r!Çà,�s�*`5ç#/D†·$„œàú 0ú­›veëǦ>â,—srj—Å}¾÷ÓÆ{O/ÔÔ¡RÇé¥ß3b/’Fê¼ü{jùŠ„}ï/ä§hP“¢é®r¦'¶D¹j¨Ÿ¦Ð/GºT¢å=´š£÷ýÅR˳¯.Ãï3äTs‘ûº�´Ú×NìBm6f†Fuá{Ô;AÿÀfzªJN#Äó¢^º“*mú�a•Øb¹—ÓšF>6màü%Ÿ°ëoAröîŒæ§ŒQËyçÖ2¯~:¼m±Ê1�h£á*Òo]º¿¬èÙ é´ê’Åçò &ÁX¨C‡Éz»�Ý™B>M¶k—²j~6°¶”3Ä-)o2»“6«:'Ûû*)g â˜Þ¶´V„3œÿUµ€ÞZÐg4·¶)óÁœ#ÛVRn‹ÕRoLÃ�¿s+îp/flúÞk^¤5±²}š�ù{¤i:pߑ֖*5qÛ@Š‘í±áû¤A)D±iaù[¯÷ ¼VTŸ‚¢œâÁp†)�êI aœ{µÖR>¯UØ'Wî8;ŽkÄbè†4>Õéû²Ô$ŸCd( ³Æ@q‹ÅÊú©¿]¼¤˜oOGêWçkKqav\F⥒LžŸžk"�lf–oj|è9¡ž÷v j&Óƒ ÇÃFxÖ ô 4n¡Ÿ)XšgÈœ4ÛS�ǯÎo¾”íÔý¬+ÆÆà „@q k&»cëm/É ™óš7ù+S —”0edrIÿ u¥OÌß–‡É†K÷î÷õÕ®–—ýnúá­c-› �3;¿&ï@¹·áz™Tσ1P½Ⱦ²*Ýœ¤øôKÊš#4…ú(]€ª;^Þfn2£œi­–ê§PËt�̳­êXÿ~Ù/˜«i”e9ÇÔÙh‘ma¼YÝQœú¯fk*¨9¥2•wÆÆŸ\�ýø‰K|à1J“¯k¿ÙY‚—¯ î8˜z)Íèú63B|Qe¦&ïãJ0PZ€RG±ÖŸ¾ù z�ùhö£ÖFõH<·þ…]{îxäø>³Ô¸–ìÏeUõ§s³½ÙYJ­Ü÷§x O¯~Ð¥&°I�Dü �Èê§. [WƒžÞÃ9ƒ~eÕÓ=—ïü‹Øj|ñL.ùŽ0«èñ�£7ñpÄà+²€µ¤/©4€&S)=N��X,]5µ"Z²O‹ü/AVYÿ§ �¿q†ãÊuo¯p:ÿ~Sj€Æp z3ÚÚ�p‘¡½ŸŸçÝ$+Æ$²QâÃD�ßê€`êÉœ²\Ž?v˜N¨{bšPx&ªÍäAž€Ú÷ûšT¢`âÊ%Ïáí^ikÂûÁÐîØù£Ëãm7¤8#ýØËAqófZlö£�NµdÉåå¸Kü÷þŽÿ­Ã6�eóûÌ:MSÜÍëxØ,¹À^@wX æÐêå åè6€eAü�Ý“ø?o#?ò:Ð _]·ÐœJK×¶¬½µ ëë7 Rœ§$€pa*XuyŽf”ýõóÉNwýž ¦bÀùÀÊ'›Ÿ:wÑÖˆ}@ci�‘ØU¼Üâc¯U–ºnÓÜy?Ë^’€Ë,Dâ‹©uYRÈ(Tÿí«+õÜWÔÌîÓñ‘÷ß NUæ¹950½·”Ðå¨%˜Ìx÷åUÙ{èÜËú¾ß¦‚'T@4Ýâ6à� uŠöäâç”ãéïr®ëœ“.ë�äë‰ñþž!”Ecbßbz�¾C¸¿= «#^«¢ðv¬ê‡ Ãô]Ù×5™¸�BÖ©¶µi4A¦$¸­]/±b\PêLwÔ×Ée˜CC_²n|{FÊ:dÒÞnOüË¡2ËZ”%µa�X‰¯?¡äy‡“ð;¾\RËcË(‚ïî4ŸX»ÅÓ‰Ny,ù4T)Ý«Ç1Ì \æO7õÀºÐ§ÊÖPΣLem­<^e‡œ¼oT©éxÉ`l|ÖØ¯D\±ð[,xm,‚ŠäÕ»Ó6c;“Á ‹GkXIGø :fCᛎ$œšÃ>ìï=T31·³5§jXô–©M ÓÃÈúðQ³ljeÒ×9"»£Ð„Z³:à"æé`·Í‡"~@ÁóÃ3@ C_ÇøîÆÒlù�nmK¿W“Ž�v*„¾?ÍùÐòýñÞÜ“iÐùCƒAÙ®š‘…•T¹p3 ü3’Jņ_} T¯ò{Ã3BH¢J�b”¾ÍÖ#y€hßÓðÛ|ß~ Qb8æì•<÷�19¿9ñßÖ[~ýag q”ê^œšŸŸ¼@ÇP@0Ó?7OÞNõÄúNÐ-<ìžÜø$N'.•¹[ËÆV3$ójh Ýü'p�ÖYBfá”Ç¥‚ܯxÄñ£:yƒV,�ËÜ9 >ÅqÈ{y­Š~óC†2x,Y!‡g~‡×±>_7 H7¿hUK®8òí#¤£±aÌëWy5œ£5éŽ_måÁZ•qÞ|u†6'\EM™. ª•<+Ý'P’÷V©Q9ÌSnYmÌѨ1ÎZZtï©a;*¿µF硺sÐÚ¤nÚ`AÚ°9WxÕДb­¹h©ø›Áaß“ío�âouw‘²2$å3Ñ)I¿¸p1îÈ€;úb¶øTREAºÛ÷‘lÔeFOeþ�¬!«ëóÊä�wô —‰_’3°%(.{üŠ$ÁRý€ežn‹KÈ~,ŠýX›_tßggû‘ß=^ÚBÓ²1‡Ì÷½´ÙcŒkrv 3}°7·%ãÅ(t”€îE±€à~ 0åòÅ¿5»�%Çêù�¢~ÆfVFk詾ˆ„/!¶ÏƒÎßzé/Ph¾&»¿à”š RP³_ÿJæU-(å yÅxw° {ÁmÛ}•ó»³3 ;OTêzÕªTÜþŒ Á';´Å9ŽÍ|©i+�¨¿ÞªÝd•csÇ…*I|Û§6Îs¸¸ž,Ídÿr·¹‘Pq„{º÷.¨‡Z¨��Ó­Û~‰éê*J¹9š‹#Ì�ùŽFAÐÀm§àùƒÞF´‚K«Ô2¹„ø >Šþº´Úœ*Pê¯�Vr,Ö¶ÐᥧÓ÷ë�œÆÇ›��ç£g}ÌF쑇�™§ÃA*O‰÷ñÁ=!ìû””y âT_<­æ"IMrËŽs$u\j;ˠΤp¥¶¼kºáßCMªEE>"÷ã%�›YÃò¶¬9!RªKœœòÜ8bàÌÅè€{RÅZnó'o|Ë?œaÿΑÅÏ~$º0Ô>ûÉŽ9u”°•Tö¬™Dk €îû½­Z¹¦Tz|9ë±BèÅ7HðÏ*ê„3ö( Ívó°Ü'4ÕÞLœ@ ° ‡Í€ ƒ./ÄkM¨—¦ö/MÃMA #Öïš«d„8T TÑdx²Ð�î5,ǘÃû¶ü}¼,’´dñl­£¼\ÝŠ-3¹$Z-ÓNÀ–Z0�÷Ëm+?z•Ÿç Øíq”øð.�úu'«:0§QaY²ö\Ì MÏ“î>Ú�È“#ÛÛŸšóµ2ÐÅЈÇp” áÔŽý”!æC™Q�B2rÃ�ÛN~IÀ—˜ñ£¶}?r?HµƒrGÅŽ¡Ì Ë2-7Ï÷I %vtŽ›ú÷ŽvµAZä"z×É‚ÛÛœ.Ýl YyP{ǽ»1Htb&Š)J¶üî­‚ R\+žäû+õ±ƒåßD@4ûiúÅž�6ý^rQª¨ ”ŮȘD×êØ’JÒù†+*o¢CY`µ†4RQ…^¡Š[Ê=@¡ÛöÏÖŸ’u=ð󜯎DÙïò PÏ›ÓߦF€g·ÈœèAšÇnŽÓú€"³ Ì»ˆv ‰Ðqg|0ÖÎh7wu´,¦’˜¦ÌIáÓADOD(E“¢ZûIs2YÕ©{ôBs‰ÍÅ€Ÿ}�«Ð›;õyðçMšI·7ƒÑƒ�*¾Á�ýŠÌ�˜�ÆcôÓã+Ù™=a'd~³PÚsnÅü[SC.Çv¹×—:æý �‹Ì¬j��þÎv]§ðÚV7\g22œ�¦3|ØBA“WÁ)í|—øEÕ*gµ:í¯žˆ¶þwóŒ^øÃêœЖ]`ò…xéïœ`y–0eÚOÔˆlî«üK‰¡d˜ÏnÁ“Ùç\st�¼�œºy€\+*hâ‚—õN„£,Îè“0¸Í&=è._Y:e„ùu½Y—ÓÚê´>–9NãVLÒD¿LW§)ñ=†Œ*/¤rPr‚NV ácê:TE‘õñ£Øó’*‹±ÓX–EÇÓ ?�k ­û[[Â�×?Žè#{~²Æw<7�‘=&&…YXëÒeÖzcƒ—Q?nmQò(ãÍ­»GÈmל©¡Ž‚�Ï>ˆ2Ühž•¼mÈ‘ï»aíûÀ¥´${Ý©Ûô1„ �pûÊ݆>®Ÿ&vx¯DgÇÒÚ»k°GA,¹™¡ôÛ¬·œLГͬ‘Ûêа’IÚÌ‚ŸJ¡®õîDþè´´·)ØÚ1]§ÈÒó•TƒyvȳŒÀO?'Τ�ƒzK¸I3½Ì$±ß*²%»&ß0~×a;òŽ]¨jj5»Øh‰™{i·GEY¸nËö;�Ö ÃåeA¹™¯6\Ã9W½ñ’s4ÂO¹ÐÁzñ[r�B»èCJשދ‘Çb$rè| ú‚ù韒µ/ÊÜ86¹³±ÁÏbùEh�4¼�àí¬‘ÂÇpšªâßÊ–^$l¬�„€Ô¹l¥ ‚R•UtðdS¥{‡‚£ @©j Àc ú_Æ}çʺˆÝl=yãùâ³ã9Â.¢�7–ÆÈ­ãÞ:”°²Ìv¸éóEúX¬2Â1Ý]jÒ¦ Øe†¿g¿âé%¡'þæJœSûm=\Ä:*æ$ÐYû@ù½q­tÅ�håM%†€Ÿ_œSѦÁ�¶»£X®ŠV­ü¾ø·£TÿdÛÖûFrO új2!~± a°·ãlÿ°RrKÚÚü€{‚'ÔX2Íßät’ƽ”L¶îxH—Êߟ-ÛTHˆšL¨’Œ’3g™gSCMbS W^e¾XwÙ¨!Ã!ƒj$ÕBƒûz"æk¶e8©Õ/y[o˜µµNžÂÜç÷°šòñ,.iú±ú fäÄQ)|g¸8ØßDOîe"H ~Y¢ p†ˆ¡½dÚ¯FÖ¶F˦vç‘øUŒ9ã©f2Å8~IPaä_Àø2¼Ä»ßâ¾ÜpÆte‰ú*¬ýpx‘!Ò‚Ê89lÍÓÛ:A‹ÍzíÛè\(”ª˜ž”Š{ü9ÂbcwÚßYß÷|›ªÓR=!&k6ýþèLý’Ó–ô`ö}¸›ƒéÛ�1:.áxôû4ZR7z‡ˆ÷a»·€˽#©9EÁH÷ ù9šÍûv€vO›O¿ò²;6`¥ÎÒ�”ÈVö!Ý^IHëô[/pA…;lÓu)“þ ¦Mß*÷=Óâõ�›[§YЬý{uÝïLÈ×±“Q Ñ]$>Óñ÷�†Ï‚^ŽQfÕ[2¦˜ ÷2NJ—@“$Mcå­z[syÄ0k›<)ruîèE¿Î¶ÅÕîpÓ÷ZNM®Íb0 ¥®ˆ]ù¥áÙ½§éý¥õJöœ!•«t„Ì"©³w[¨€'f§öN|½Þ§2&3ߟÑ1+KúÁaõF¹ê…OÑö­:%õˆ½e˜¹ÿ6 ¡—ýp™å ѰqÅÛó•Cê@íF/PGòH�s–CŸ¹O÷½Ƶ@�Øæ6üöšìâž 9ǯ¡öuuòq-4H["Á9¼Ž (¡K »hOåm'“2azdy ,ðþ½Û-í ®¹8ý-—ªõŽƒV;£�[‘L!–ýG—cs�À–:ntÓ¤gNwš˜†€¾é»uñ*½’m Œ³N³mXa4Æà)•ÇOcÿîoxFS½#”B74olðDKB\\6>¯dº¬ÛúÍó)šPE ÚZ·`oDHT°ØÓJm�ˆ«Žg:~™hÅú¾ |+DñfDºÑ…qóa%™^íU‡M­{KÌ[{k¢ÉPŒ6BÈ®Ø]÷ �²¿u£0°ðÖ.°ƒÞh)pWï³OH“D:–¤;s"*9®ÊÁ²[2Þ„}sãÙT0ÆGý)Åå£ÜÒLÀ;§Òe‹z²ÀA;ä�)—T ~<¡G* µQG²—¢8E”9a�Tìë¯ãÂ;iÌHÞ1*­ƒ–o~—’o÷¦ƒ‰Úöâ:ãkD]„‚šÒÇýÃUÁJ³úô|ÝàTí¨÷fmÿï°!5vofa¤Ê¡ŠQî¼§¥²§ Ä´Ÿ�Ä}ß»±ì¥ré„b˃=e´|º­Ú@tÄÞ. ÜI¬% Šº9DóuúH�Ë)N€bÎÑ�€4_(«�h©†öiíF({¹g Ê©ÈÛPµC*¸|cݰµØzTG€Z²žJéLw N÷½]bråÉ¡¾œÖïQ„H¢Ê$°Ç�4RÔLñF¿Fïßú Uø´`“ÂHLR±ý¶V`JðáÐOî&1 öwõŒ[\ jæRväo±‹þÙj¸°�Ec/ l§n%;"'\Ç�ºmƺ%rˆ¤² �wL{`ŠOÚÒ§\:4ÂÒ/º©Ô‘7’˜!ÞùZýqyúa'ØLÓ ÔóÑ*·@þóÝ”jÒžý¤Á U�G¶®œäT½V—RO4ÜŽÆ‹³×­¢�MŒŽ¯â8=Ÿ©ó|mq”o­V±ö=›b-,ñYJç�à­3¯‚;òC­V¸…¤¨Ë]%G’ |–Ã�ì÷ï#U|ßLû~ ßUßV·4ñ톡êɽ­Ë\?o)R�ý@Ê. �¼>åiG2U]š¤JMcè”í\!Ûǽ‹Œ·Ý‡o«Õ¶Ÿé�ÚÛ¢¾* 砺Фó{@ú³Ð.) %MQ5Ø�Q° ‚Ï�éßÉÑLPBÑ?Kò¹Ôd{ó;{ãÀ�Ñ]ÀÎÝâ-ß/üd˜c-ÂtëÏBݬÁ]Ø¿¹6X�´ÎX´×o5½?<ئ9””YwôÉaF˜šèNÚÞdÃxÃFÚ_8R¾‘Íeý°L©¾ð<).û(ÂÍ¢0ÌB ;‰j"6âõ’z†öTË!Ô>“ F Ó¸ÉÝ<„ <†ÁDÒ/èŒwõëo­ü•ˆ äv_|ËmȘÖ3 ÂÎËw»Ÿ“ÈØ'CƒóîkŒ]Š�Þüsøƒ0ϯ¶ü`jp6åà«ì3U2‚øÅÎ’ ›#†8½Y³-CHjôc§vu0¥8x“ÓEëÕ�Ý¿��•VT£¸¥Å±ÚÕU>TšuU�2n5Í8½Cç�—û¡Ž.›Jĵ]7¨ÜNÔ+ñüûN`Ëo)åÜDIœý~úb(Jz¸ÝÙJ ¹U|†Ó‰À8öÎÖ 9Õš�›‚ V+‘>3+ñ�¼k‚ þ¬z ’Ü0çÍ’M–ê]ZÛTÞg!ôßYºiënè(7çx¹snÀ£ WgÕ¸œ Å®—Ä9ñCþå0¶"PØ À²úûžAdÌØÃ�ØàÂÂá‹6ýKÂmª¦!Çâ�O"?ì“Ѷ|ß¼?Ð?äàþÞ²òèJ7-;.á/SsåN»¾À±¶¯6˨µ%yâ ¨9Y[t,?cŽê­Ò~Dk1E‰ä‡‚ðgôúN±ƒé³U4hQr«D^£éìþÑè¯üuˆÛA{íx…9[ƒwÈ!ðe9_ÔÀ©—ÈiÄ%‡ÃÔXÏ–MœÍŸÒ\Þü½Ïó3»I��ÇÞø+ª üÖª=Á4ëW1¸Ÿ)èÞц—Kh~-¥}Õud¢ñn…G”¤ôóp�rI팗‘ì|¯âs§9>ÓÉæßK/ É�gë’»´R¸šQeå'\Ôíx('âwkU¦Üøöæ\1Ž€¸|Vm‰ËÚOÕ¾ #•<êºçà¢@1°-Ï‰Ž¾è�ÜÔ ‚™’ÑÅ@NÚšÀf´È™ÇI¯Ø#P" v½Ê?¨G»æ‡S‰Ò¾±•pµ�"7uD°}wÖ0G<)·‚nÖ] m}𢘿ÓYœ´ ÊÑ"¯ˆ+?|8äË9b]ÚÀ;;‰ªÖ¹� Á[$åƒÞ¢oÙæü+�¤]>èÓ»ƒKz6¨™–ò‰0rdz…æ“ü‚bú;ziy¥ç8„£ š/á¾YauRíl&ó:2“Û%Y`àP˜Â%ðYpl«TJzdœLõNk’�¾+_sІ’úïóEÿç,¾[-¥]·¥ŸRÅþ뻪zwžðµWI;qÅüU¸®BIÎæ+*F¡´éc$\�ýØÙp›âŽï,xgq,qH0`‚ZvË–•4úYíýFgöò@œ´ýw�F®É"q´Zf¡á»½ÆMã§Âw¾v"¼o±?)w­Øš2Æ�÷ź�~Z¿zŽ7¤5Ú²x*- A«Tè ~zøõT&YlÖÅ7¸µ´<�DPtpé§�Ð)c²|¬Ï ¶,„¯ròû˲c�©µëN sVFÆÑŽÎ¿!ÜÒ^[ÄL°RW7£Î÷½c¹Cé癊ۇjçªÞ›e…þxƒøå‹“’åå�%{—Ü][P~Ô)V¡îÀ/½Ÿ‚ÓT–Ùaý‚I,ž ­àí'�K.Ëþå8OÕ2,‰Ð}HP]ÓªÅFU™‚EžQć×>Á+ÉJ0?j/ðs¾Ã_OÙüxŒåZòUÿcÒ¥gŸàû@¡m“H®°REÓï}Ö4¤‰S¼>ÇÏÏ"úûFE‘íâ¥e‡*?¦‡QPŸMVTïçA‡¥»tå"wÑ+Ö eu½ÌF­ân‡‰­o 5e*j–Á% :I:�ê`n®/xÑÊK>@£ƒäÕ ØÁ HŽQ Õ1ßO£å×Vàj¤æ‹'·_ Ê8Ûö hó‚')Zhù-U�£'ãÚ›G3#K%ÿ#ÇŠÇzw¡Ä8,%¸må…]ùáŽéq xý9ÔÝýw¶{”¦Pénù˜òŽsuÚß±K¼NÝe`×H–µjÉøVìžÍÚV×~°ªV–øÅÃ]ø:Öºx-„°feÏ_ /õþåaž}®6*ô'©>2Ÿhæ¸� 5‚#ß',»Õ¼8jË Ç´à0X}€Ðn©FF)<ìÁvGîŽSzpXGþ}óçý¿ùúÕÀ’Ð6Ëó£&š—ÓË**�@ÆÏó` �½Næ÷eüO T”CN ʳ?ã“vIŸ%Ûpµ|·(²j#ú×~2åqº9§ÚÕf'Ã;, ó°&µQù{×6ùbç^ç�$E€%ÄA×Ð]X¨Y<ÉŽòàÂ&%ì>]`]eRV÷qÑç¤b€Õ‹Pá¿`=Ñõ²Mâa vÀÝjMÚdé,Öô‹æ#Þ±cAƒÈúeB¶ú¾ ;¡:¦L»G°r†ë5ó Çö­š¬¿=¼Âv”¢ð8½š·þ€¢cÐÞÌRüëå¯4Qn羬 Ìn|äß.À8‘øS4O2‘ÊšDyRK/[æƒ�FPlæ��}äÜyÊ Ìûâ40‡¶4d5pëyÉBÎXoo’Ê~p«û½èç¹›Ç]˜VÅ<³ MGVi£ÓùûVJ8Ãh ÒtÕ,ƒªË7•Ko‘CµŸ-ѧ|¼æ°£Å÷‰9¡ÙóWpg¯}QHº49Êö~¸ýP×r—o§'ÙÏeç°ÝV.‰Zï‚ô»ïà4Ó¤�sÎô3}#]ž¬Ýîšîð£‘�´ï•ßd.lYÙ„Áüýš,Läæ{õ+ÀÖߺ�`„t÷Võbž{€2P‡ ìzVn}ñ1þ “¨#»ò}{êí_•ŸG™0Ïó+·×)ù¸*Õ¸%A8J§€8GÖGïムÃ0øh ³<e…¯`BÙÈ4Õ$€#G"9f˜˜ÅÚ¡‚R§x & Ò@®Î e±Õ�ǖʶwj¦X>ÉÑK—× ^pŠèP K0•û×ÿXMà|[® šÚ—¹¥ËTg¯î,ep!úÇ[îµÉç³·óÖ*�ÐÁ4ÕuQæo’_ò!n¥6Ÿ®á+©8B�ÔQñ` Ÿ‡RZ?¼»ynÞöÕÆúvsÍÖt÷\H’Š!“T ýqÎòmåíÆ� xž£Hõ¢3�Ì;8ê ýôé•ÕN&ëÝÃr°é&{ŠtE²a7Š".‚äûmWab$’²CZÊ ¶¿Ÿª½*A„BþÌGª‡|†5ÊàÁ®Ñ[GÞÆƒ(ˆ{Ãpñ¹Uœ~ ‚$¢°è„jå„ò(±È‡¯YWx¾"MJ¯‘]E83T¶�j�sêôñ~5‰Ç°äÎ8lI9´BàjlôvÍ<4¿héa±ÇÎX¼n“¢&èEÈþÍæÌÓ'¯ ²Ëñ}åÙöv|<LÊ¢a¤ŒX f5�»íCÐLÝWí{‹4‡�21Ã5¾ý:O7à"z.—J?råG‡t›ÅѸöÇ[ ”ßaL Ç’âëXz÷·ì«�DÓì×Ñmësñ+ë sÇeìO‡ü9O›™±ô� ;о øÄ�ÀÉäÄ#ì1�óx@ã¥�ÛØŽóé�­ÔŸ©C‡_D''RHþ½­°ßoɸ}óŽNÒ0Ý� ¦ìý§CÜTâÆÊ휬o³@æV ïíH&ƒ=�ä-³{ÿœ[TŽæO¼»b ¾BuF’°¡íGtƒ,¢ %–ÿtŸ5âWö;‰ô/æÏÞ¦lxw-1p/ =jtóÞ×ôŒÎÏÌpÃéàsUh%Ä ?—èê”'¬ åÝwA†¢¦ñ¶™¯þÎæJÁð”³v“6�{ãÓÐ+™sžÙg#1ZÐN3w˜³÷$Ð]ê�ßyem–©B=†sØ�t*| �M}Ë~c'ʸdœ™~˜uûIΣ(ýcó>]ø\éd~¾äçRCBB‹Þ  à`ÖÜ–÷q~¯yY<,Lqì(É7ë|˜îóùÕŒq}øð‹Á,kŸ¾u¢¹ÑT· À™}¿� Hkm†¤{UE'p4û‹_k¤Ÿaöû$DÑÝ‘G�‘ÞÜ à/±â‹­¿(q�iCÞIc@3œØaÚâYT’‚2 ˆÅ:„N–€,aåh?åÛ… goÝ/ƒ›ØÇÑ&-L fdÛ{UíŠ"8ѓқ…îa«Îha� gª�=ÆùLœÞ?å Çw½åGTŒZQÜïZ&ÙòiHsŒ×�†Ú,“Çná‘�aÁß3ìÓ`X›‚»«-֌ҶsT%Ó›9ƒ.|ÎÉ¿¯†/mÒ{ÈÎÛÌŸ$ü°Ù¨=dÌv‰ÀœÝ)ñü˜ÓŒ¦½y¨7\8Ú’ƒ ^ÞLä<ÕIÀ|N×¹�Ÿ}R˜bGåÖð'ë*g ö[#¼‚ ¤ì�¬ø8"-k“w�µ•¤³ßþ‡gp�)±2ã·éTÁ›w>ìVN´œœ"2fó­ïé˜ñùÖz°F™+ØAÑÉ"ÓÕ­Õ“.Ri“×j¸dy㓽—‹M Gwã=)~Ð[›LeBMcR�w3ñ/ú}•ã /×3þèñóGÕmÑÊPf™Qè3+=0Èõ-aüT!ÎeŽ�Rµ§1ã¾O=Åâ7Ž÷]SÁ’Öì&ǧD·›Bls3PS»ïñ÷ùO  ÞtδT" M:@Ô=,Ï´#y@ɽ! yÎc´—Æšš¤¯ó¹Ð\¦­Coþ y>œ·øˆ–h«Ý¾\à�¿–çWd\2,wrkKQ”˜›†®“ÜèèS=ÏâØö©«ëÕJÛ+{î ë;ß ðS>×Q rè]U€øDÝ1¦ÞÁ½»„…l'¿ÚÁ1ûüD‡|:w÷÷š}Š:ÚàÍ=Í KÛôÂ_]°i1µ¦ÅHš¤~\îüÕ’ ™�€­H!ÜKþ�•Ë´U›Üd1Õ]$˜ØÒ² Tq>Šv•>ØU§fA(‰Sb[tò‡ùönÌெNF›§mY”Â'p@¢¡/e<€Ÿ¢´o¹¬¯OR�Ü›-ôà(J^½CFÓ'�‡˜j)óøûhr˜Ý½td/"Güâ�3¡²ŽQDñ{î}éÆ!DáéçeH_|‡_<})s¼ý ÍjBzød§|íÛ¹m´× Š’y>Ä‘LEêÖÅ~þrÌ4 (z˜¯æ«Jj K^Ý ÁˆPzÐ;Ÿèó«0‡=©Ý%8ÿó3³¾ö©Hrý‰Ø’%Fô•b˜ß“Q;Ìœþo宯q†|µyö¨¦µ)ÊpÐ9ÎÌøî¹�Ý\’E’Å�%õ¾úBCcaŒ®°´!ë„+*ê0¶jE«ç�8?úçRßÊü$f ð€wÕƒ¯è�\5SÄp�¦ß þÈÄ4¦Mašx5'*.Ìxt �S§V¸ÎΔ´%íC¬,ÆÚ:®zC·±5PQ¹á#©L$ß>ä Í}óuqb3V.í–!1亀¡>ü_äÕ:s*–AÓW… é1 ßχ•žTO»† ï5[YPܮՄØðú™çÙ*²àº½pYìRÄ óã ši=q.…ëPìê*¡4¡Æl¢òÞ8ã…ÇwŽs í5}pã®îÚí¥?,ËÓ¼]6(X€q'‹;?�zÚmÌ�Se93cÏù)TDšFaüý>t­>Š H”M¤ý;ÚÃ�ÂêÁ¥ 9'Ñ3òš·²à9º!Híþ>9TòéìE“Πªàk P¼îk‡“9ô÷i¼ô‰xÚ·¢žˆ«‡yÓíü"ÒeÙÙaS»”®„n4âkO &)Âøt2®)3,XžÖp~†�\4yñ¦çÕ&®më*9NÐIŒ�òB–(U¯ KÊíP½�S ±Jž˜Ë¿C.sJÄ:�¦\«ZJZÃÁ³9µ±RÛ~gû‰\¡'>Œ°O`fÕ&“ü¤¼Á[­äKV–TÝþ ‡¥b2C…5¸Ýõ�UNƃC:³S¥yúaݘ¼�ı¯6­_Zï€\ –!T[�öÆ ¯Âÿê0TÇÉÃk½QKzÅ)[cDÈzÔ°À}�Žš>_×£( 5O?³Ö½†5u’qéxÁwƒaÚ9?dÂ�G1RYÞVUU¬)‚4©3³dÒTÕwq´ÚÇè8ZÅ‚zçŠ32†®‰É¿ƒAÍ==`þû ËfçtìH²…�nØuà€ﱂ/i@?ØJ"ö³HŒnÇ•Å>åªàÑòñ&)öEã“/¨x‹‘ïf,>mzw®ÔÕáT*%¨ýü’Qÿlß¡ÄsÆ4֚̾/µÛÓ(’gË@Ñš‰ÝÍÎÒPQé9˜[(€,³|¤pe½¥©+7@%Lû‹³9Ð`¯›ÜüSé¥ði—³VŠÊÊM�´P3™¶y.=5Ód8”Ö¡Æ·šÞ?ÃÇN“l°v2ô~Œoø»­Žð ‰šw RPˆ§äÕ¦è�ÌDúoëÈ_¯:¿æPçB?ÔŠ?+¬CÞÌÓû†·K=`_¶±a꟱F>RË«ÿëi;WœÊâGz£vÈxDiؤå±g¸z,OQ®ûKîIXöùÚ^4£ÏGÖ8sÒ1 ±­4>©ëú›žlá +"¨=à Ý4‡ fÐ�Çq7¶~y4. ’ªµRÏþ¬IËS\¾O~xÁ= ¼‡%âZ0?ÀÙ÷oœJMötDV‹;h'Wâ4ãgÄæúý¹nu0Ù%.¢tÏmQ$Ú—Èšr°œmš~Àj¦Lø¼çÇÉ~;Ú·¦ÎK~¿Ñ§¼Éƒ¤\ï£÷ÛÔ"q2ÅàA�,‡±ÚÂFO« p#ËòY"EöT×Wû·Õ|g¨oÀι€±~jÌ»³JÍh-£| ZVj@�$]j°h‘×\5)Ñü>mÕ'±å; µðÍuT ¡9Kªj–ÿ]Ë÷[ÈÜù•$Í‘)I)›ÃI]7g:Ø‹<Ø*4Ð`ª Ÿ=`Ÿg �?$ ò-ö¯†ôÍò/¯EM(VfîýüüjgÁ‹ÿ^JFœëwšqQÑ(1Á­­‡ï7©Uæþ‚Å—Rœ§9änߺÐw`p×àg ñYv,hÜ)…q ÜZÚª‡ºûš‡$pöê`/É’§L(z9uƒ™¤¯Ÿ¦®¥’}h1ñZþp®ÏNËäß¡ös ÎMh«Åû'sªÏí;uáѯ•–è¢$­~'ì×y!¨êÖ²û|%¹oô!7�bâd¬AG½�À8´Ì7‡È­™4 ŠIw‡Dº†²Œ„4R�þxõâó–ó[C½ÈU¿¹Rë:yžx¾ ŸÚ¥î&ð¬o#k`I"V9§Å¤¼8 ðÖAof/Ç’ÐI”È®Âëú¨›£FEû#1ÍØ@P60Œ¼à 9ˆ³AJ½l¹¯ô7“j”±!{d~8:A—©ejaeªƒüN¤m�Âk’ž³N†n©{3Éæ¤˜Æ8Á´Ç ÷n€€çÆh"QYå'ÆîÌd~#&ίLfÝYb¸±Ÿ{ëåltqý€Qíº`äÔp� Íƒ³~D]ü³˜LA‰iÍpQÈ_ ^ÂQ½% òWéP“½è–Üo’ÿ„.ÜÈ1æà@0VÂÖ'd3uj©Y^-W¨[¯Â¬Æ�^œ¥66Éßàʃ´©~hÏ@¥�ùLåê[¨Ò™¡À!m9h,g¹[ $/DäR[*\gÿXJX—YêÛ3€tÀû¦©¨ãsÕ×±h–/3H!MUî“Ñ’½]~ˆCÏü¢ùЧSi_= '|¹Yà”xgX÷ÙÂýfâôa>¼³,ÎJ§*øié„J^[€û£,‹ã·‡É¢ÇB©ŸNP»‡HdÐà#ó¨«)K$%T»!©B÷$9rÉÓ‚ A�ÀÔ„ÙÓMæU=ž¬§dR2ñiH˜Ì§u²f“vÞû}²�-"ñ;ãʼi±¾‚±`(êà‡îŽë­ ú±¬ùGH’˨-ý>Tï+d&¼^�ºõvmÿù!&â ¢ Ž„7«bæ¢ÛZ¬]Š�üs" rµ‡�«ÚÚ|“ë[dØ·­ Îú³¹i9åÂfm}“Š÷YŸ#á¿úªºæÓ+‰ƒƒÒÐù¬Ó«È²†SJnüÅrg-ȠΞêV:GVpNW œX>+IWËùùWXŽ~azUN?ªUÝwe’ž†*."ü­-ߤ±Ÿ“¤¨Ý~?#oþ>…{žqTo©wr )š†V„¦‘hÀ£þhæ"ÌL¸v•d­/cÕgLÛÛ*Û¼ñâ£êuÍI3æ ®9õCɹŠa(í“È F{S÷\ÿé¤ç¢Ä»INçæ§©�\Dt¿(–ƒŽŠ¨3›þÎTÞºqߊ,BÔl.á—ãî‚Ñ#�ÏJñË|’î*ƒhêˆÆ\­‚Þúˆ—á¸M,¼a¤bG®FqøíÅÉš¼˜9š¸·ÔŒV6hÊÊÛÙ®M�_ ‡ý ÌC_z@÷õÒl%âDÝÉßP‰À¶9f>î�" ›•״狦Ž"0Ôëq܇ˆ�ï7˜q�³X™› Rú ÈyDŒ}øCŽŒ*ùa@C‚ŦN�°Sú�cšå:�-Ø÷Ãr–ÏC1ˆ')À†µ°RaFe/û¹º/Hbç™6i¾W8Ò„ ëŽŸI? �·Ûˆâ¹OPAQ~ä óÕ+9æïœ(·(Wš Iö­~cʧõšyw÷¡´ž�~_Nâ'Çc´XF8­þjMþÞ–ºÂÐË©›ßA._^ÄÝy$/v\ÍäÍáo=뺊€t%ÉVíZ`°+}u†]Ëy « æe­p)rÈÝ�ÞñÝhÎô‘åCÈ>ddd]}ñY§=7‚iÚ÷¢ôPW>Ѻ¼o=çæp›•},uù^ìa�„*Wù†6:@:©7tÐE’âÃ=aãåüŠÅ"b]hÛÅR� hRJHßü•.< ÖÚßÇhN2§V™£½øSË�üÚµÔâ“f×0“êB6¬ZENTª:à$ÕÛª: Njáoæ«1Í'ñÍË™ •™ôé# Ú–ÎÖ4# Ï+ôS›æÓk?lr¾ßòêÕÓœwµhßpCòÃÅœD}Í }Ú³ÁXGÔÖÕŠs{Nøú»ü 77OþæÖ õ©Èê噤¾- ¯-rœ w7¦%ýqAïðòàwžV£c"äÔ ø8*‡h¥i$ÿ•>w¦SW�B«lò zQn¢Ç¯áª:}‹d!9ž[¤8òî3%î€úþXæ„@P±Õ3DÀ{�œBÃÔ�Ì'¾,,1§Ž]—´,IMð)Ó_ÖÊ–YëI÷÷•�s˾K!PML$¹“ÝyÐ(ô«Ý:'šj+pƒ ø0´þÍ ¯Cju–6C‰P¦L‚ÌT2['_¬•ƒ¹F$­¿4·_–g>¾ã-ßmæ_îx�å×eÖVäç©«h‰‘õ/%_óx´e-Ç(Z¥„8´áǨ=»©°ÿ�©óØ•IÃè±À»%6ñ&ñìðÞÛäé‡[š‘¦Kjµºªn˜ï?‡ "è¨û{7Í�|ôDµý äÒVÎeÙ¯ ™”¹ ‹“I¾š<%Š5ºøÜ™;Ž÷ x–ÉïÚÁžïÄïµ­¢\¥ ýr�ƒ³½ñsÇnËŠÙ2 Ž1ÞïY#÷e�– ´Hù t&WÒ�ׇòWö¼‡­A#kJ² 0¹°£3е%ƈ͸ªÙ9¤9ÕÓ) Ii"sZ± ¤kÉ—°Ñ`h¿ÕMJù~ßB4�¸PʸÞ8>¿¥¹–†Ÿà³ ä"±ûð˜«Ûùµ}²†#\?0fí`:¶K°`~ g«ÌzdAÍ—_—R9çÙX›ÍþÒOÖ�6aزûœ.£¨ç ûí�á1‰•‡%@ד j+º«¿9¡rº^\>|†Ð4�޳‹ jŒw “z$Û¥IKÒ6ØÖX�ô?cþËKßrÍWe6MÜ“pÏæxí”ùZ¦Ö#¦áÉR XdÐ’z'ÔÒ“Ó6×á4suK;á–+L ¾·úØü5ðw?u<›³áÍ<¶3ù]´Š¾ùd¦5ä;Aí}CÆç ’q�Ñ3øäÇk ·÷Á3Žÿœîv§hQzÚ̉:«S'—ÏxêtÄ6¨ ßÇí‚ÁÑ ðñ¶Ìc+­`Ivoó߈EÚ'ô�Ì€=¤I•Qø,§ó•F%¿à @ä¥MÍq�ºœ«£-âŠåk Æâ/¿Tÿ½°B¯2Kª.4G¿8�®”ÎdïpÆÂh Oõ%ÏU¤�Ff¾|ºø“R.Åšy¸:¢_)ÉUx˜•h^ÏݳHaèªbY8ù�ËÑÙXRøÉ�e ¨Í46°?Þ²Þz½FÚáŸQÒc'³{ ð«�¸åÚØqˆ0Ú/*õaÒ­õôÌ£&h`Þçç^Þ͆KÍÛ´Q¶¢w“IR>cX㓺`ñ}õÖkšá¸ÜUrm@?\©=*©ê)ÌÛ¿öWØ…§�¤x+‹ÎV¼Ÿƒ·n¾ŒÞ6•a\�ÅE‡J(£Jlgì³­/÷õEÐÀi†—<¼”@ƒÖàì®%k¬0{úã'vLÃÅ„•׸ê¯È‚Önwç3i/<éY¹“”Us¨w@ùN®È™^B?/RÜ’Æß î Œ“äOµèôt–U.�Ð\­­½˜ÏßRµýc�˜˜;˜ G8‰¶ÏoR:êõIü Û ¥ª./`8A.]å—9  pms%Âctìí»þeïW;ÕŸËÓμ¨#˜,·ƒ$…*žÑ=&þˆèçgÓèõ¡0Ü‘z¬y”¹ ÝBá¨ÎÖÖefßRÁpêGH›—@$ì©æ`ý.}0´w_oM�+ä¬j¤÷Ò2¹Í}û�N�ü1`Û$ûzÝlH¬§jçk0 H~+Á»¡/ZSû­�Åßæ®ƒŽðXé5É�ô ‚Œ^icE<ѹº} äZýÍvBPõ[�¬ql¾ænÔLÐѺ,©j²ðwÔÇÉs R¡Æ…}ÁΘ’ÅØºdXê¿ö¶y ¾sk²,Gû¼l’ ˆ«ú’ ÒYÃrÞv“šjxoäËæÆÈv¥AÃ+AR{ÏBúêHÞeïÊ×=£FSÉfŒ}–ý|Bû7×ÕtbÈe¶Â”Ú£Èöòƒ•à†x,ËÙþÉ*Sê.V +ˆá^í×5cÐU¦ñ ÁÐ^$¸A:¤Û²¥¬þ1µì7ª¼¸ƒ6"�áܵ½a©,ÌNX~ÜÓ± ÷ô¯g´Õ û�½  ÃÝrå"^‘S±¶:ú4ã'%/ë£_6êÞ±„hÜ) l03¼‰ˆ ¢XàÁ¬?Ú†•t ÛàIW ¡â^ÂöÃÙ‡aÏÅ‚ `rs�ÔÌ—rA¼ J8Ü',�MpEUgщ)â�"› çLjŸŸÏχg�¨9A‡ö¡öò5Še€ëþ•j©m6+½%Ò˜VËô-DvK%…n;Ä׈ÅËÖ·ý�–W")—Œ�éh"+2òÁÉ(0.æøN2©á-nÈVÔ´Âd ñ^kC ö7ž6¶ÏµŠ2ý· l³£NÀX…õÊèºü)~ŽVÂÇiÞbæn{ñt„⬨ÚÂÔø+¥]îÌý=ú��͆û/9¸‹*êw ù­MpµX!×ôb{òAäd�¶]LuT‹ž˜·�ö¸üÿëj•ÙYβçáÛFæÙ¨V–Faø;œÍž¾�ØÃT’]ŸÛþŒîHº'­ÚHÌÃÀÙ²UguÆ>ÌÎ}!Ç�†½è�u��hq´H l;{óPÅ‹a3óIÎ, ;¿Õ´Å}àºLŸïg> yû½ü޲, ö(ÈŸ$Ïš&"2lä/íÖÑ)¡}eI£pü»¾+]®Q°±a09Ö‹7»nq‚k{O½Õ–˜¦øá;+g ÍŒY­É‰V�lz6 $É­ÐlíMÕÂý÷yæîËÑ$p‚r•“!øXÎöï» çmÏOº úTÅ^ŠŽg0l‡Äf35 ¢»Ï¥Uþ ¶<àÊ“ƒkihÉ�Eii�s]yhYï¾n#º‰ªâ!t\5nñ-ÄXÉÃìÁ$´'½[ tÏ]±\&»"Òf«7¾’!ÅYžz—X’×¢6½éx‰’�9dŸ£@[1jxˆØ7g,iþÐz#A�cóž¶ýÞ`Žk3„ow£3¼èeù[ßq–Dü(\‰¡¬4¹©»ß½ó ˜C±r°p2#©ˆÓ;¤„oÆDX”Á¨;BÎŒWí"æ"Ö\\GBô¶§À`ݹS²»Ó¶DVí! ľ¯ ­¹cÏ�ûþ®«6+£4N+Ýô=Ÿ8 Å‘÷OìP•�E¿¼ƒp„=jË0RM]ù6“Œãä'�“ký¿×K^æaIdsλºÓ(‡"ë¬k áVWûG�Ä=G'b=`4´ÙY„ Lö¾j�™cz 34Û^võE¨™îi½ËH¬…¦isKÍÅMGQtœîËDØÜ÷[ÒtßðbáFÌ^½J _ªCãÃX•õz øA�\·öŽJ–à ÍVÂq°‹o¬RT‰¡6¤ø6Ãbð-ã ×ÙŒ’9�ôñÖúyå–U"üŒÂ–M/Eª Åë…Ñ1} œM3ø':a�K:_—BË_»dß_€™óMO£óº¢Kå'•/…chCSE~ŒÊdÀ݈§ÐÄF´%«a£<5¸«³ýÜѳ¶>ƒ›Ÿ©Ð*.—ðëê–¥!n]wgJ¦'ZäÚÛáè…€,b‚üÖ‘Ã쫜 Âdâ‚bj³Ý(ìí® òcçïd�ºßhW_“éóiù¢(Øùr.]uûÊb¼Éf�žzE ;A½o›Æ+cÅ×^“Õß�´A³vüõTµxŽ;RŒ¼<÷ôYA™>èL"}UÉê7°ÎæRůÏ6t÷φå“•� ¦Y ŠŽßÌ!ÔÆub^Û ïTn„T´pW–…³„nÝ[ MˆÌé S¨“¯ ìñŽ Kªî‰:‹ü­ÚLòÒŪ]šè0Dɘ4~7ôæ ®ÑäC˜GÜW驼³C,ìÜH|/ú[b£ðÖsí½)ó.ÿƘæõ:g¢.ñçØgr…æIâǺåDci ÈR™åñöAÿŠŸI…¤‚mâ|­¹`MPúÕ4èªUeÛ‰lê®P~nñPÁ0'So°¬|»ÅmQqÙZ4$0w‰Îøý³š|±™¨É^Bs-ÎõH­“îú *Fx2ÇÚµ~ )oØÛ`ê÷ ïšÊ˜ãW‘îMŒ=ÆŸ”¾P°ì)l®¢uZÒi–üí/äw�Ç[òæy‘žÞøI~v•;Ç~Gg߸ãٯŨ,P�еŠûåˆ×{i8:—¦í¾éµ®k(raø’båZ"îÀÒß.Sʧ Ǻ'•vyN|ÜËL!®WÖû24}𢼀þ¼ÿ-v;ÒŽ.¨5OCyÆÆYd{ßqƒ Cs�$Æ’ŠKÁ¼™×!ÿ^9Zwêñ·<¤íD�k‹8ÂÈJXóKY2t_&(ÄHó)…!%ÑNs˯¤ÂÇÏ�x¦ñÚ.‚îɇrÿxG7©dÄB€,ñýãWº`‡¦ÚîÇa1.ÐZ(:Hu*\éØñÄBeÉŒþ¶ýBšÙH¹JCí£*]¨à!¨à|^ëžc¼âÕ=` D/îý¨åµÛ‹ý5‹2<Œ�r©"¶3ฯÿ?¶^hÕEvx³[üMzã`݇ש )bdYª³³# ÁÄ1�Ü] b÷EøÓ“ý çºÀ¤ÕÎdqªÙ¯j¼o![òJ#3Jæíg"öàB×6@ðPFûÝ•ÓÎã€0]!¨Mö ¡ûªØ³A-ǘ’’ǃñt =»àç$6AuÃÇÉP�/a;ër>¬�¬2]‡³è]7z³ CòPéf¦HéÛÖŠy„¥ ^a�ièÌ‚�1?ÿ9mq†i™Ö~èâ6G‡O´^p”²PIc¡a=FÃ6¥‰Ì¶¾’JŽÁÙÏÅÀ–,ƒ�LG¦Ù W_%Äå¸UŠ £ä·¥¾ØÎ‰Ÿt+C¢A•k‡e{;ý÷T›>N|‘i…Ã(ö„Å�qÄL€<ÕF®jV  ø×#2ÖG™÷UøÍ¬Õ”mÿYÜßw®×ÅÅ4fo¹§¹g€ ýþî•ÕF¼G3Ñ8¨—)t#¦ƒõÇ>ëTiS7w¬Ånõ¢QÉk¨´ÄV­Í®8 "4GߌŒ(,©)Y?Öˆ�TÆœÀü8¦%ã=í¡¥–ðPħícªH¸*î„u™@gÞñ—ðœõ «†ñéå©@»�EÆ é­…™é'XasÆüÌ(t ÚÖF-YØóJÂóÒx $aZóÙåROþî/àŸÃ“Kõq²7Æ-ŠS‹Íh#a2F!Aó’·™ÀVÊp v\Lë-“)ñK¡ÍUÈ`ýrG‡äÚ¸ÖEvØ{!:/Õ–ßH­×ª]ö¢›122¦iÍõ­æf8/+gMì T¦‚fæ:*~™kßòßhZèþá%&l¯­2>�I+?R.éÎ(ÛÊ™†›²è¤âuí�Ä�áêp2†ëÐA›L¬'§�Ø ” ù¾Ãtõ†5\gå ¾å#SAá©_ãÊìGj¦µøÊ¢�¾ºzXµoÕû9¨Y÷Áº@oß³†í“ëúæpýÿ°}K�Ì¡ÆnÔ ëÞ”O IQl5ÁX ˜àãb›_ŒM„nû1BÍh×Õ‚Î(ÊÄT�¦¿r½çöNÙîn¡¼í­NC8ç­é/¬‘·¡/b>ÀÄ:ÑSÕ•x¿$œ%.1±Œ|Ž‚]´�a"fgœ¶æ§œ-ܳÏýšìjîÒÅbœ�Hìí HF\ôÖ«RÖ Æ®„ä ˲â>”|7øÛÁsPÖ<�IäÃCïõ箵+?¡mmB`$žðßùvu’ýÁ'ØlÞš(ÊÌfb�XïpÚ:f Žà^ð‹Ù}JQ²‡w·N<…£7¡àäÙGñ¸Î]/³Až/WA *6;0¬Ã„:ýÞ®;Kj,Ú6à¸l-pz4tü3:¸»6O$04“ž"ÁÚÏ„¢bʳƒ¤+;�Å‹Ý4Z=!i:Uy’KŽ-­´²f»W�íÔ † ûh^ôk/ã2¾’ÀFXѧ_“¹9v¿ôê†Ôß\qæ·V\§å¾L;?årÇg>�Û¯ÖK¿o¯Ïv[zö£aöU”óÓúP3©Yxï¸#ÒZ`ž­j�qÖ¾Î!¾ÑŽí¦Ñüææ�X‹ò·'X¶Â{ÇDñšn;õÿú@±ùxCĪéÚGëÊûb±ïgCQ­ï@8µ(b1Ç‹lç®`0Ðã(Šn²Ü¯  Løj±e$Iª·4/€OBõs¦YÑ‚þÍ�0_ˆ«êú¤¾Å|´±N­÷⬎ðï°ø16 ÆîÀþ €ƒßû†lw°PŸÅíÎ�Xh2¦LiöH$$ŽrñXBÄAf^A³y-;Fw `÷'d>¦ìƒe®gYL¦»9—kthB~à—§`$+jÕ�ôX·8Â:AHÑuäi�º™Üb:¶ÂW³ ôÁÅ~O>G mI.0/ ßKdp4Ýj =à¹ynA:Ò¨¬÷–¨ž¡à«šÑ«ö!?swѹÿ¿k ¬»°4ö"‰zrcbâäÒT»ïç¨7xæg¶ýħækƒÏ§qÇÞ2 gi­Ðe©¼¸³6^:7‡U‚ü±ÖšÅÇôåèyõ4I0½qÚ*¤<ÇÎù'ífÀõ †Þ°ÙÃ僧™ÒIÙ�´�ÁK¼¤ÿ=æ6Ÿ\9ýÛ¨~÷2l÷Ó¯@3›ìž¡ ×U _ÄrbãFÆ£x"ÿ2L)y9~å;ț̣¥úÃüš£xqÐ4!Ÿa¡Þ�Ôßß2Æ0õÊ+*,±ÁbF’yÿ�Ï23‚â]FPcvSbŸŒ=Ì “ãCäIÞLP~}'¨ô[åhüµo÷‹M’_*”0[gŽa ˆÙò§™úDâã”ø8%4ô†ûî¦0û燎ín¸ŽW @BÉØ¹&¢pkŽåŽ¿�¡’0@̦^½‘«¡%éß³ö%Ý�€-È|›Áˆ]óɧ9�:BåÜóÔl(£rçu�[g8ÌŸdÚ¨$}æ|ð˜U[G�%Ž„oyüž16ôkÝõ(Ò舲rò;p1éÆÊ°„ n34v„> N»Þê~ÓßAùÓO¬M3béµ~}5å8þvžbÌÔÄùÄøþ½Ú†éhH-«û&ËINQêUAgboÞºŸ*?„6qiÕÄz*\3–3rUbª^öSàäR�MôQz;�ƒSíM‹°îŒ½9ãÏ] ¢¬_�É>Ö7á�ãé=ü´GÉ9N›±NJ>íÂñóèËéH[Êz?ð»§¿_^ø¶}Þ÷þë΀×A,Z *ˆöo {åqìÅw›€¤&xaôå|ÚÓ̰†5�ÈÐßXöT\Ó Û-'UÓ5¸y Bs»…`!\Üh_­�Ú>å‰ÙM¦Šå;œnŒÊJ€80ïz ýYœˆY´A”³Fk3îUV¸ªômÁP2‡ˆÁ{2:zL•~ «8�ˆ‘£,28ðhîë˜z�ÝÜGWÿÞ…;fȼ ·èÁ.ü¢A²×3[¨Ëß6oy¼Â Ë›Qÿ†ÎXŘeåk¿®Û'nBX©/Æ._ý‘ÆÀúÝ\Ô�gõþxì­3]wl¬"9›Sé÷‰Ý!æi�ߤ'õ¾ D©«ï®ýnùäÎÇ6O/E´©< GükLw:¹á‹ªM‡æÐ²9´çst´ÉLLŸ®Ë¼°ÃrÙœ��¤|§ºûs;NJŽ9nMþYöžêVz5LO­Ëf/¼6QäVÕ, š8$4«©y¸,^òøOÕÃÚjeOdkË᪃r½òê»Å Ør‰9©»ÎeæG Xåg‹•{xº©ÛÝ£e¶«`˜(ÕdäÇž,a0|ÍÈæ´ÿÑÖͳLk´ö*¹.>Ô% ~¥>aÌ—´—Ç`Þ¡Ø*ƒ©[ ˜ÿ^Îë^ÎËdå0>ž|\ETørÃz&°úŠ’gqCR5]ú<Ã^øo=ª½¿à1¾ˆÙ©£–Y¦ÉJÛ­ ¾ú£TNúò::T;>Ï\2•]dh.þxH£3ÌA_�¼g�#‹5l×Ù¨…Ð߈‡'‘ô[2?4¶jÅÙv�—Ã[³`M‰uä蛟¿ë>FÀ¶çd¾_¾h$Là ULRñ¢Ñ.ÝlÓív�d Ðq†kïPÁ·\Î ý[¿Ùô¯hÑTUÌUœé�¤� A cäóWiUfüò*pÈ/(:™…ÄHÛnª[×röŠñ�-R«÷"_Äùêýfï8ÃoìïâlWª}äFíCHeØN™ß³T‘R©äõöJ=u1üCÿ½�×O¸TQ)¤¡› Z_ÒRLVŸ€~ á2(±¼�k6qôtBÆD¥#‘�& ­zSñß/áîR�IUó¯"  ôeí=f³«¿6ŠA‡ó´�C@Q –X-Ií£îÞÎf‹ýIª¨éÅ® œ&™� ©¨gY1–JsJM!ž­&H µ¸û½‚*û°º÷þägºÑ�Ð[ò¬û©Ü 4Z GKŽÖtQš”X�_¾Uä½ßo¹ŽÙ æ³Õ)‘¼ßkÅ!>”5µ2²fNB¬Qd¼H¿è!hOí>ÎTñmFMÛ„T°I¶Ñ-NP�g�äe£–Ø»ÞFGKÔ a©µêì—Pä¯ËZÙí¤×ß–³ý/ )µô%†?êZâ«ØëgüÙ5ºÒCi5ð3Î@c²�µ„*ÞüÔaŒžŒvx#6kÄ$M rúÃ)È¥;Zî&}G·hŒ[òL'Ô9CnÕ±?ÄêݡɖRu ^ûiÚz8câdè u[�í³U(jSE7ÑÄ•/pþšTO•\g5‚a—’°=UªeüXtŽ$âàË£@°¯“wöƒ�A² U#¤>"|�޽"°rž4½ âÜ]|òd‘fq…[X6Åòˆ@Ô9‚ÔøÕåhc%z¥Xõ΂7‹›Æ+³Ãextm7û�¹¬E±Lx#‹W̬á|>'.è7†Ôb£¤–O•+[îÀŽí÷ëF$¼Rûç´V�¢v@Óïü 0Ýü²zÙñ”jq3Nzrÿ».˜gîª&ï’w}pƒŸ¤»²ùi[›�ÛÖËâ¶f„Y¿ÖuD`Τ,›Â¨î~h<³³®¶éãØLmÌ.¬–?šbÇï GEÇ\üÁÕ¯rÁ/£�£½Ì‚e×Úßæc˜JÝ‚%ξzÝÈ੃¯�j‘èÅ~ j²§Ïçu]f¥Ø}êüâz dØ}£�V%J¥·H}ÄêÐðN*@âG<¥Ö{ùËõÂX…��UÊ»‚ |tW�1»ËÌów,ÚXÁú: ÛmÛþa ë•" yÃ{@Û4$­Æð©�Ps³=EæzëzXª3<àöÆŽŽ¸ËxG¨' Q¸'ÇcšäHe»êÔw�‹ b°\ÏŽMð´(E9; Ù!byç]×.�—#*Aåõ'ÃÂä¾lÛ‹õ…5®a¿Gþ—ˆüº�%7`,òÂ`åê-Q}}NO“9–uÉáq{®Â¹Ø¿¼¾1ŠG‡£h¬jŒ.å¤Õ´ØG䯅÷ÍîUD /n^2›éOí.Ýsi#”,†øäØË¦°è}Yš³õ?[0a[¬H#£]\ØèVxNG åoŽgÂ2Îi Ó› ñÖ<ò¾äÜý]+“ ×7wo �;N¡Ó8&®•ŠéÜöø‹é;æ¹åŠiP-DÙž¸w˜ûŠxHÄV >– ‘çyŒÌJì(ûѹp±\é…¥ÛXïmDÒǸÂ×ÀÒ*Klß)—D §Ò¡�ÏÀ°\ÂŒûŸ]ã:²ws÷D\¼]Ô*��¾} ¦…Ú€]%.4WÝsådáGˆÎ7þ7 1j?™>†¼¾=$¾øã4ºCÎÂÊщß�‹ÞÄpŽ–=ˆÃeòžê[‰�ü½© '  ´syžÄFJ]¶2o‡«�ÆÈEg¡b|q‚×ï´ Ôvyú¡FN¶Jë4sºJäö�ÑŒ/Ó_¡Ýí)~nÑ’s¬ À(óBkçò•—ð»6¿S3“OET"Ô%ˆëóã0 æÍ"²YT{ôT&2ôu°™=i@¡pÊÓ¶Ö­J]¶Í`ãÀíšÅ/ÂÞaìi+uo¾É 쪯ÅÌØzn»Py¦d/êú�zËëïÂÞÆø¡,"Goƒ„poŽné½HϤÓ€æð‘$ å—Bõáup)TOpáÓ”:VÆZ”€gM¶ü^¶„™ôb,Uœ¢Úf·qmVÆ~�Q$Ë*©�”§îöЈ/:Ñ–>]:2fˆ&¡÷aAßÀgîv÷üõ÷8Ú´Ž2+I¨ü{¯T[W,zo,Ýa;„Nø“ •ð 4/ñµªövÒ†_?‡Ã;¸�¼³A+™b#Qg àÛê³PñÚH–0áÏ&�%}S¤x„ ú´_Äóø¬R¤Œ¢Jñ¸Å#o®6 ¯‰T…ÑïØ¼†š™ÓØMýš"YÌ¢±r�¥—ñ«†¶S|tÿáÆÏŒ�WK>–§ôÌP³LÈ i²¨Öuxi*·ÿE‚è –Ü%–±biîÏoÕzÕºïØñ¨[¥u"f8ÚJlÚ/i-?4ÝŸ<ã8Ñ4]Ó¼1dWs é¹F2™'QwÔ¸ïøpÊ®?×"2׆®�õU�¤¨tQ§}AU Aúj%·aéà.vçî} Aµç… MIl_Ä+Ë~›7¢ì\¿b¼ElêÈ.àt©þÞ*x»n™’O#\T^&ö‚ÝP–®*œÑ®Fî/îhZ„ß8å9dtˆœ1k$*e=ŒS‡ #hÑ?Ëä¥ën×T�äñjC¼æ„6"½8yŠrª¿f/ƒYÆ–ã|SÄú•}ÏD„MG'Ûw&ÿ²âϨh7¿âq Ê웚›t�ÂãDŽo’1,ÆtZ!¾ªS«…m‰hû ›3¤|«æ×zx!è˜"ÇzaÑXœ(™Ä׸ºÇ|…D,Š Ÿ­†é^•Ág¥0Œ…±ba\–å0ê(0Všs™ÎÅïîÅêAK|‹-÷b³P{E…}扗}Õì¾VÇ]Ã×[qÞ}nCa >dÎ4G4zX¾rÕ‰ö" tÅ€ÿF›ß®”p[kÇñö³̦ÅEDD«šÑoÓÄ£ŸÙ£°¶£Ç…�á;8¶Ö“:6e²�ê•gÈ®âظü%ðB‡Ea{0XLga,6‰˜ÐtÀ‡Þ™ª1Ìì'«÷üéa¸[;[>Ú¸ò·È /[èï‰N„“úãªîo#zÚï:_ƒ³Ý©d»ø ™äú@‘Ø ÂPbœZ 3'1<ÀÛ�•î+´æf A†¹O6|­¥4¿B´£ SÎH})ág…£w�o8á8“°Ú'{àjïGa�§±B¨/ƒ£XvdÛÇçµ£o!3þvrY‹Ôv.Ÿ‡ÌúÁT±{Ös¿¬jOËÚö´î—ý`ƒR'g&ž2yàp3úÞáÚ~jþ�ËG*ܰñ7D¤*­Z®ðúÂ1:ß‘ìQŒ.Ù€/·lDA»3ÄøNÀð)ñ�‚©]"O‹æN Ñ·º^&ŒiÁÍŸèlëú`¨"¿!—×K½§ý À/õEÖŒY‰º)֩زÒäq¬Rg¹¤C)ˆÙã•òbr‡ –µ”3<‰k)Žð^àaJù"í:{åÕjÙÄÔ3o1 ¢®Sáx³£í$“U»,Odx(4%Sè5ïgYXk†p¸ü}Ór*ð®!äU�Ç”x(�Å«íÊïVüb3¹­ªÑÙw‚a·_ÔGþ«W~ªœ:,`ê PÜ’¾ÉÚ=··úý�%±· TòãAq2q´}ïà(8bnæ™4[®‚J¤|þ¼^¥UB© ¡ìT? /‹/;4 «˜´póBÄ”§0žÍä“ =!ŠNÑøùïOCËŠ¡¨ÃUçÈnÒ2Ùk?èìk)ç»:ˆ^±]gâXFÈŸvÚº¢ñÈ�ÍtN ‰ eÈ«Ûß YkU˜Ö,;¥•/¸´³žl'w¾–o íŒÜ–$“ƒ¬ÓêPæ0Ö?@!ª“ƒ#Á÷a)}û =V¨™a‚ncxbõrwÕ²m:_Y�²O±UÈ’¯ë,wì6AWñ‹„aÍÈ~ hõŠ;A$½^á¾åZÄÞ"L+˜o£(ÆÐ­n;¡ÜMï„Òô§õ=$´cºÍÆh¾– yɯŽE_SÞ:‘ñ|•´Ræf‹Õ„“×–IÞS÷4ùó�4,üœ»ü%p²”'Åq&dü�ã`ÌoêÀeÄð(óm‡§<²œH•ú�\«XáÉ&Ÿý ´¿…k¿h*µµ5!ɾ´ÇŒ7Ý´v%O"§ÉZw²à5æ&T‹Âð¢…'¶ä0•=e« ²Ïò##%¬17ªM¹÷iå6B‚E™àöF]­“Ú'9miôËpM¨”\“ŒÙù˜Ç¹|jÞøôW%ÃÖ´µœ»Z2ãØ­Í!%Û‹+,3<„0w�‹>‚ÔÈÑS®ÝMA0 Ø—¬ÊD»· îv8ÛÙÃpräê@eÆÖN&WIR°ó``;ûÐjQ»ššºE2lÑ œ«.ü¬’v3ص½ í3Lo™æÜ¹2ôúÖü@`•þÕ³î<šérc“ýß’ÍvAšôùá “àˆ@gJ"C26BËJW½Þ:lKåÕS·P¯g9 ¥Š§Å"RN,¾|Ÿð3hÔ$3ü"¡á¼éì¶Bâ©íííS�EžpÓT+X}Ãð®\¶mðé=ÞÜÙ{sëï�0¡-*¯²feñ=Z:I‚@4wXWå|„XǘV—&dóûÇoOdŠ€?ž§)J#ó�Ü(àyŒ^0»´í/3‹€å‚iä`¥á-Iùô›(ò†§7nø)ˆ:î5å&WÝxÀDyªŒRÕ°×Êú}�IúÀîèë ÚÌ�œ!nEOI’Bð|ÈH[H’ÄÓdKŒ"뉵o'¾¶í™š=ð~EúN èÔ¦i¢eÞ ®™«G ”K… üM#ŒH½ËëxàÝš¶&VËãýÐ[[� Q“Ó\™0z=ýú�ÉEIɽboƮґƒ‰ÿ6ÔÓ, ~,@†y\ÿïYÉÉ#z–á7_#—„èBî’Îaòü=‡u2†~%"`Ÿßúô®e :“ÆwëäVË�2ƒàÈ+©lzŸÉ[Tñ'GñåJOÌ8¢“Ì Ê8K·×í5µaZÎæ”su^»f±A‡ûëæšÇÆXY[>åÝLH÷ŒÊ3#©…·,:FŽÄ%¯z%hÿ’ÿ4ª+¤l|hÓB×ý,ŽÃMìËe9ÅÄuwÖ_ë‚Tò3z< �Eý¬9…¤ù0ÿl‹È×¶Ä#DÖ¨�èÀ'/L"¯·Jk;Ò€ta¨w^¯�#Û¥»(²Ù¨zZBøš†¢Õy 0çUÚ33‡>BЯº-Fo…]y>½é2ˆžýçºõ·Ê�¬¿µë -ž£y•»ìÊj­b™~ ÎEÕ»ôšúó^„~=@Ü1ñÚ²“–,Æê+w‡‡M¥ïJ¸"ͪ¾cÝûqH±û¬¨ÛDÎðbjì—¦ÊÇl?9ƒÀ[F±ü2ÓnÅ÷ɧ` gØi) È ¤›Ža’;óOÿPýßV–�e‹ÛþFßÜcDA-h1�ĺ‘PúéÆ=*zéz¨»ò1ø†ñ/©Iß¡â¦V¼DE”–��ä*ñed×·G³”ãKÎŒ|‘/ Ìš…]Ö[Ë0M4C�ÅV¨ÂÊ®ý¤KQð¡sôS+�:*„’šo”Ú´CÁZþa¹Æ`-Z Z~׈ 5èóyÑÅáždâ1þR?tÜ�ô4�Rö©&g¸:%"»Ø™IP|¨›t8`L·�ÕcÇ„V¦çˆ¨‚(™³äV¶,*6vaÌHŒ�¨(žp¾Iæ-ì’Ëïy p-ÛŒ>vz0¯A5É•ŠÔ†I'y!¥é"¥£ãï+Y¢¤î›B°÷ãñb?�ÜoÙaôæáTΧ¦7Î^5«fâxã6¼ýQ4ýuãMíÿS²C¤$Ø},õm2Þàe¦ª¬JÆKÛlÆ‘Åf:UQ©°$æ]¿b‹eM[Wäì8è2ÀBo½B޳ðBK¾ÒgŒÆMô:•Q55þQÚÙLâvc…$—·Ëέ5b²A0Õ4XR-èדa�ƒ~ê[Yµ_-uõá3ÑV³G00ˆ0Ȉ߭Ë~þ~ª| æŽí§|šÄª Ê?¿üÉŒ\ Œ|aðùÙæ+–}Î�]1¥‰y+ÖU–Ðżï¿6 �©~WçÇM‡Wë?¼a¾…×|Û4éÏ7ž`õ�´äEf䌲X[ÚÖß\B8ìט;ã ÚT…ðà¼è�Ø[1�Ä^:þ0˜Àž/Ù_Z‚NxEŠBjR…S“8%I™.'©ÉŠÓ7—‰\:¶Ó¡™Æ_{<™Ö£Î²¨{Qy  SŒ ûÉ_³Î�czÜoY™úæ!Šž£d�KœiÞ_v(M² 8¾2õõ–@æs :É£'æ÷KTžÍÚ+Æi#¡þµ¢…(¿Ö,Â(—þÎ×Lx4Œ•Í$ŒÌAÔÍžÊXL¼uó:kL‡øUZY™Ÿ.DÜ|íƒ�g�¯{‹�r}+HfÈL4ŠŽxÊ�þпØÀ×&ÚxBÅu@「8ÓäÔ¬@àŠfwƒ½œ^hQ®Ú† R×#Ë}ô`ÙwZFí×§RÊ>]½•1Õ§™ËpÌÅ]�ÞB=Çš �TÌ+o?Åïo=!vh}â×Ñó'ë%›e·X-hb‹!¢gÅqN¢/u/Þ9°¡Û8žÀDz^ò ?>jd6�[»Ý'z_–+@ê€@¥/>ølù@Ïá.\ãÖ£§ñÛ7ûjßÈ÷nA=l(cøpKø�‰Ó¡á'~ÇøÔ¹¨»ÌÛÍjÿmõT)†+ŽŒ¯7\L òiJÇÞ–EU–/äIºŽ<(:|£¹ÛƼ˜OÅä 0œ{<µ´ß EslÝ–ç,ˆÐúÉÁþá×8›…FO”£=ˆÌÔ§æïÖ_‹„X ڲƵ  ª9úW7Ü«âµý �y¤B"7齎*–Ï^z›Y$é€ph\-0à(ñXw©g™DØ#ÝÜÒ2ŒÍT/P˰ò³çйĖ`8ˆUëÈIÛKN¼8Î>Lœ‹ò•È&Bòú cµ]".I}`’ O ‚˜ªøÏ®ÃŽ%eù´äsV–ª4±Õ¼lÆ*\ÉIõ0«wd¢ç ï–½r­ä •Èþñ1Höz`P9w~�¿Íw³ØvTÂTø5ÎA޹e)Ká0ÇÊ4-^XÊ3S�éU™ì»Àm}Š8#Ú ó üãêy’­¦ù–õÝÏ–Ï´ó|8ž…¨ŸöGM¸Ð ×52ùK ~o ±3û¼<ßwÀZA…Œå¼Eô¹�ï•Gê4‘~òÚz1­mý5!}¨­ç¶�ùÍÎq_üÎ&EV……Ê^Aã->|­�—ÖÆÉÍ>@sw‚£�ø-"ÙA Aœ/ðò�έòÆ$ø„Ñ}[£&�— í$ú[…ÿf5d}•H¢¡K‡âý¡TÊý^mxtÒ¤aö¤…Wìà —¼ƒáõT2³8ÒÝ<´| Q©‘¬¿cv¶ ^á6Qán_cB¤¡°²_eìö'Ÿ¿Ðñ®–j„ÐN_¢n«(áäR-K€ v€Æsµ_ÁH²Ð,žúnoƈÔGåÓ°Óè7å;ÉKZM¦Ûس¼óa§v]kùM̹#ä�±ñ$áâ nRÄ$ìµÖI¨$‡»”ÚÖ �Šºv4œ"Ž˜}½;Ü9Vý=>LÊ0>1ëxµ­¡ù u7h òé`�‘Cê4"œ&#z”@{Üt+ß³G÷ñœð�Mº[;…Þ»Ø-ÿÅ1qҭȱ·øê`ïúo�¸¥  CAz+¼>úWYét’c¹£�J�¥¾¨�7\_ i/jWLì "6«^u0�ý<%ô‹wºì[~ªØûÈ%Ñ ÄŸ_ ©sIµP›’eÿ Ófà¾WtîWx±`U�è‚mý[(9†u{3EYÝOwOñS–õ®0Äßš¶‚¨£§ó¾a5‰wuo. ÿ“ÁN±Ú¸“l]¼¸é8ÂB™½Tºeó­y”ëÚŸÔcäèÃLo)=R\Ä8t¦‡Ó)œ"õçw¿½�÷,©Å­m|™?1¼¦0n"ÛP¡ð§ß©^Ǽ»–¹×Y×[®ÿè�­'7ßð¶%ªÆdI%Åš]ó1>ÿà´Ô=´þŠl* `¢ê¶R‚JÒˆº‘9‚'žc±’K¥öËZŸ­z2–’7BŠ•Ä2ƒ7«±–�ŒÆÁ±Š¹„cæw2†:úx?a¹»,þ^ }>±¢Çq…¾¿ #¤ÚsðKŸÅ”¸kž%™ÈþngéáBqÑ›�¸-äºq¿-ìUŠÅQSóË—úÇ%çšÃŸ›n“´‹†ôïzØÊWbë,8œ´ž·Û*9¿ Aß’áíeM¢ `L¦d ÐþòT¿•ÍE %V€iæWïhPU½5òZ‘ »¸ŒKÛÉeæh¬ù ™ßfF  �F¬iÓ‹ÇÂÖÌèÕkÍnFëæÓ&Äå¿5›ǧ4p»ª¸Û|CþέŠÞ9MhŽÑèi;ùÎ{ 8냄²o*\�qÕ¹äØô=v (ÐÀÎ&[ûí�¶,¹~0ï{™«�ƒ•l�x'‚ÆRlqÀE?3!Û+fû#_~Þ‰Œ5—1�v–A.$¥¼füy«H=ŽÆÚñ„º\z�w¦W Œ#±ÜÉD9Í×é�7ßî^Ôöé=Ô4ÃvÒ/U^æ±k¡ÐíÉŽÍuõoé6u—?QgÀÙ2C¨Þ«wœ½"ÌÊ›zòªê\§Ž. }@‰2Lü½¬Ñ«$ÒÐr°ƒ!²§FÜ£où6AU·!BÇN9>d îK–CË‘ä;ooŸOH%ï|Šåä>Å|vG0Vêq¶£„p‹'è>óyÝÇÖ+yÜü´Ó�Ç¢T’qê Õ9í•øÛdÄdˆW,º[&)ígò.Vªy‡ìÉpQ„óÉ xƒT¿ðõÁèZ±–’Ëó2ÞãКòúRr!|&Åší=µ1å%…ÍJo�‹nKH^œÂtÙˆ0="Ç+ëJ×Äɹ0 °–Š1,žx5ŽõµYÆñ5ê´ãñ¹£6¸Ÿy¥*Ø)…m�ÚP!¨Sc²½Åض¤¸êeÛˆó©[\huÒzº_íIÛª(„šÜMt¾{`êè7TøÚ¦#WÝ‹á-Œò>CNS€ÑD‹¤c·©qã�m\ ve¸T46H¬|ûGsù¶ð ¨YV©ôµ£Jž³³ä{I_%ì³wÑ…R òÙá%%Û˜Óìí«¶(`§`…ÍÔñI° À¼"5âoP" G*\w®èkmØÞòW¼eš„âÊrñ¡ï9éx¬�š2ˆ…÷+S§X‘û¥D 4F–0ŽBôçwØH‘]òøó¿v¤ËzŠÓbŽ/ÝW™Ë2!_0§Ñø m¿%—<Z¹È‡“ ÔG€×ܾK}ßâl¹ñÕ¨»˜K¶9B¨\¹ˆÈGfÝŠÌÕ½û©ïP-ÙÚØ>G”0J�ô]”YåÆq*½þ9+:åïóP¶l‘/ ˜~IôÞšš>¼,ôX+<Û;<Ôò5¹TB¨óÔí~ôⵀŷ×kµ8¦÷&Q«ŸŒÐÉ`°ÊnK¨F\ éK°Öô°‰t)iÀbyÓÝ2:A´�³ÔÝð uIñŸd7j0Ù×@´ì¬áù‡Þt¤Èåúï9�V¼P<ß ßÊÎP~h»r¤}†Bü™L`ØÀÉ*cÞ¿áŽÃydE뺵7¸²`�zàf¸ÿŽóUM­‡>ßÒ¢ é——]=Hê’#¦h`3P­Å™sfgWÞ~çÁe/}¢ö×ë¹K&�T *'Ë i2|*VÂW’„�… Z"ƒÑøˆË=>†§r!ØêgyÄËÕeÌ÷P�ACS· ~‡s ­×ŠJ‰æ7ŠLÉQ’Æò˜@²Bz4¦ªê#`öUqzwMàù1wæ`öó8€�`›{Qy¨q/ÂV“_§ö–Ç¥Ô _»opM5alª.�œç:âÊ¥üÉ2ìíÏ8TáÚy9‰”• ¶e íŠ=Ý«yaJQP¥–˜$á=Én”¹{V&™í×ÿb¬k?H¥¼?퀘²Ÿ‘;wä¢Ñ2ޱó}9)†5õævOU4ÃÁ)6ÖÄÙ-•eXõ÷ä€U¾‚èi÷P‡÷da§ãàŠî]' u4¢?8Ovëqç°bßçömËh¯–†%mg)e–•78¬–TÄ!Nx$Lª´üéü¸ryð›a’Þ½J¾eîmæ;o\@ÃB%�tš,EçÊG´Œ€¾¢�´É6“?5oˆ–Ü» Sµã~Ÿžê FÈx6o? ßE]?Q{œ DðùIx () Ô^–Â%Ë)+¡s>Fï"n[ÔMt˜bûëRàÎjZÚÌ/—çNË…2H¨¯>¼õÇB€@÷Q|”gøá¢eð»:‰í‘ƒ¿èÊ`¿¤U{ ork4›4¡”y‚ÛºNî ¯±ô«àT®Ôïn¾¬�“Y{{׸N¥»0D’~A ®åð �øÅl9%§)z Iy‰+„Ž÷xÙ(B�1Øø�’0íU¿Üàö�p„|¡ïÑkðƈä•uZCÊÒj€=192¬ã͵l°C§Çƒp�ÑI$kÅc£�h�ÁÉ€{ šôW¾36_¿™˜ÉW¾±1³=õ!ýlO]­ AêýulgßÄHœ ««ô¿œ6Œ¦$ù:ƒ5öç:°Š„W<Åæ[ó¹ç;¾kÊwvç8h©#¾œšÄ"�¿Ç÷˜¢¯ßk�+íèÑëá�éÒ¾3pƒŒàGÎ|ƒ«Þ0ž¤íúNN{\ßM7b*Càë¹xMt!kø~]à'Õ7Ú5æœ.Gå©-¸Äž õ›Uó[n=¦5Ø2¾ò†,‘hZñX*Wä!Lò+呟ђÊqòÓÕ_¶îŠ_·»}íÍgõxùB®ê{È‹FH=w:ùûÕd_0�Ù4bõƒi)>‘HQé:®!»ù�þ÷ìSÒ]ëEVa®þæùE$ì¹UQÐ� ÃH!ÿ¨„|÷A S âö`ÆY‚§0E „<Üž•…˜â€�#0,ªi,xô¡¼Ü°ÆÕ3 °J½ƒÒð­zØbšëÈ�hò¯O—‚¡; 'wàú©ƒ–›94üPU”`£Ýc3Í93¬h) xKbç»}ÜÛø2s%üï÷ ÄØ¯;ìVÐÌ#”yŒGîEùVïpú;Û ƒ¥È^›Äkÿö×k¯8eüïä³*Úm6cíº�3¹P£«¯|´/ú_ÿm,ì©Ë{â»=š{‰ìç>à˜ 9 ­à!½„ƒYÞK¡+Õ­é�´ÊÓ*¼ÒÚcÝ2Ìw�JåªXsûÒ�=N¢Q¿…c�¿eL|¤¤PË�E8&�ùÉ _{bUä.”¡âyýà+n¿QCtÁÖ¸ †™ô¬±Lê™{V�l¼:#å[Tèu„þzõaöd6ÿ`ÊIõ7üâªÈ‘–O•C:ß·Îk¤×QHߤ ¦OÎ=Âk±# tÕÔ•ZĈ �²�uŸŸ#yqëcS :�4ÃL‹# +ÇPwxŸJž¶bFQÍ3,Ï3u!ã«Nl ÎþËVФª÷;Ñm€â�t‡Œò‹ZVoʸP𷈸ÃÿÁólg´^€qfù¼Ñ¸m�DMhàïSýmÄx(¶�«š3‚ËΡ™@Lå7Äžã?>¨õÜ6ö�kþƒb‚  Â÷´ÂžG[ÅÓS�Íy½Ì¾ þ÷eÌ¥]M,vZ§f˜l½8Oy°“¸`>ò|í‰ñ>ß- ÑÎǰ5Nè5Œ‰ ÁÄkûêÛýÀOŽìˆ†è˜w‡¤HBÏÀNJµ¢õ"£2¿¬iƒ°�xM�cfëºô>ÚÕ²Lûdë�Òã$t ‚ 3%ªº6¶3—œ!'àVþõ”Ýå½²n6Iá'*ø8€á®»šÓ2òx¹eÖ„+êãEùù|Ï$G½ø ˜¿Ê®ÍãÁ�êF�+‰à›¡öx?¾mȯ“]´š¯öIätqùú½…>YÓZÞ$€õêðRÛ}ÿ4b›œ(å’îè­`ùÖ;èOÊ|êû3;ÏâxÜ�^ã�àç°˜:ÆZ_Z\íË”+Ü«‘M³&Îܵ† cLãßqŸIr˜Öl†×ÒØ—Ú&ùÛãV} ¬Zñœ]„à†VÝõëtHf¦R3‚v{Þôîdؾ ú½"©5nJŒE•”wœÁ}R¢v¾†v:Š‹á›ƒÂ}÷>— ë‡fµ“íµý„vµ‡äŽp™fŽ7im�‡4@aTgçS·5}¿ë\àœz1É; îŠèZêç̦Ä.ŽA¼iE’Z_˸Ÿ�¥6¨IüMãÝE$´n¡±;,÷�–V|@yœ Pe)Ôé|L+É>¸yð– mw ;ðÞ›f_.ocÁë=™¡ÖmVØ-P6¼þS[óCÿœ"_<7‰À´ÓÛ”t×+ˆ’S>zálU,°ÂÌÐXkíaùb…ÃÜæ{÷~Œ^‡@ø·kOœÆv…,8poÚCÛ�;ëlÝûî\Ü›<�y’”_ ‡c–­ô¥o6Q&›hËÓ_Õ¬|TK§ã¯»™o&­�H—ÚL#._NT‡ä N�ºº6Yü÷ØAÉH ZÚ!Ç¡)iQ/4`€¢R�nŒ@ �'6Ž­F¡Ôì7¦jáÀ™úÙP�äÓ¬¯ÊR"µ¼%r-Kh×aôéù]Îï¡ç¢|ÂR‹-aR®’»€�•^½é¿‹SßËç—%¿¼Ø@“�wø0¢U2ޏŒ+øƒ§Ÿ2d­è‹:'0X�x*KØ™å¾[„³áûk{²´q§à)T4Ö¢]qÀ”Ã8—9ëÍ 3Œ�Ýcõ÷èÃ2¿_º°Ì,*¶rZöøžÞ~¥�0àhÉ-Ša•`õ$&¢½€f¡†yo9MMŠÚ€Ï9Ö2�¡etä‚h5E@LôJý™&ÿïÐËAË ™Áš[(÷[IOœ'1ÌcX:Ð Òé¶f¹†ìê{ÿ¸|ua§×hŒ¼!{“úñ¬F¹À3{Äü…úWUô±�SUsm$ÓyóU`jÐN~ £kÖt·¦x× ¶>š3�6€Ä>l~§9Ožàq2Cê<»/*L]5Ã,ЧÈ7AVÞnh~ï÷fVíP¯rsp?È“ÐåA…)ÍžßœÆA·4àݧR_5HÆŽÀMh ……*ŠYzbJ�op’Æ«Á rL‹Ú `hëó5¿j%”_xÑÎÅ/܇ÈŶè)áµç[š¦àkã‘�²êa²Žõc3½\ýUQƒ–‰eŽ¢À:í4 GÇfeb\^´`Q ‘8Æžˆßn#¦±¯fGäÕ·;Q¶,oùÄò]{ãó\C-Ò»Š¨Èb�ka ãZlûÛ<€x¤:ųÌüˆgCìhÊøa ÷Üã›`цY\1*ÆÙô/˜@S� ¼™¡¸@ÇÂF~êðÏPRc¬úm˜08_µMÙ+EçSÑSSþ»Çó0ÓŒ“_òéŸF ¤‘ÝÛvõ[çö{,þÚ¥OIDŽ©`,ætH$ø Ž�hV•OSÆLÿ·œˆÜ6UN´™þ”Ó}�<¢{8ŽÔcÛí[–aŠl*²ÿáeú]qWýÙ„•ìׇޫœëLKDWp´«W‘ÙˆK�\â[‰ø}¤‹Í˜@ÈE³Fæ ¸ŠA(Ùñµ ±Ê�Ž¸Þ² é“ÜÏQ$¶Á�»Š%¿é—9ÍmÏ~ó$~ƒWä#Ö9/àQ õf_ò uÊâûwrLz4Áï•BüŽ—Nk?®¯…uEÿ*ÙÆg¬Åtè§¼àC•l —Ì,¸§ÁR�tŸw¬‡Ãݸ€ƒ_[¿AlàWuó~ŒÓÏš_ª ñ\Ó)ßÍ�˜›ÞŸEïCZÝ»Cdz­ Zƒ6 ’•ÉüRA\;ãÇê§£�躥'�H�/3€ä÷¼[7וl(zoãÖ Óž(…Îê+š¥‰QÐö ?ë—•˜:H´+–Ò~p:úÖÍw�´ÐÐ÷Çös.ýÊܽ ÝRfüPqÚùMÛv&ÔûïÌožgìgINßð±wê˜q茈�VKëÃ!.¾ žk3øð<-†WGßXÙ¬~Ì€4ª,Ù½#ýý|Ë@Ñ[¿×žþ=œï÷«®Ÿf¿P˜ÉêoB!�Lerù”?õsíªeƒA¡¬¿- VD¡T äïh¼«¶B( ±—^1bþöàд’{¸1Û»I¿P8(fuÉŸËŠä]šã§X!¤’Ù!AÓ})TáM†3AÆÊs�K!>‹ÂÓê<ˆ€Ð¤‡Á78zRÌÎ/¡µ€z3´XþAKˆ%êâx<š¥ã 5"ßBd¾#È|@QrúêÛ`…è·ìQ<% ¬Cå ™æ‡^�°šÌ·ï¥ˆáañº?�bh¿óò³ýØ'¬f¤ßQøµm8ôÜ,ÌêÆd(’kÈ$[aL&]#ÔÊiÜÐLQÂjWú•Þ7Àëâr¹À-bÂ2ß0µ(o{î �=J¢ºá,!7�FŒÎ�6Cððtа2š tÛ¿Æ€½ügë1ú¾ôêJÝŽ:1I×ëíª"7�G50ñ{(t� 7’ºíœPö~s{¨�…e,à B$jÑŇœåÖ„ô£€CǵjeááI€—QÝÙ¢¡¢ &÷ËLø¤‹žËŸ� ²¹vßZ‹óFlÑ5³Á0ÿù–z\•Su^]7ÚµT‘ãºæ@ yDn–îa3�ì5^ ÔÈ—©ý'µ~(ˆ?ÿJÔåÐ6ž³­¸uÀøno 3{JŽ¢Á&+? n ÏÅtgSY5rÒ¾nUõ%C]!Â�Æ©‹¾_׃ÏG ™ïS#CÄ}Îs!œ¹Æ.5‚7¸×ç™× c‚y… h5¼ ÐɱG�«%¾A«’&½V)œ ß�t u½­â�žhN†Éí£(à±.L¯3%-h}ô=X½_õó œ½Ø½¨YÅáìîïeÔË óïò›£ê·ŒÜûºGª+@ÏÝ’ lf›t&ÝÓalæ�†>_°Q“ 'O…σ�B©®*ñÇÿ¶yD‚—�,ÇYܧëŽá«]†ä„©ïv ßRJ€.Æ®e`®Zþ§´�þ‹¸R‡îþ¶‰¸è£@u.ïœÓ¿íÑ)�",½ŠKÕRMÍ r’ü@5áâë°ÓÃ; t¿˜‡üçôÑ{Ã9¹àD– v݃R7`{M& €ü­†¢³¯ž„@½Y¸†šc&pX~¶ðäñFtj¡Œâ Ýúw*hñ8Að`a …ŸŒÏ¾˜O“!ŠGªC>1¨¯›+UGICæÒû`¸ˆ’€N —R0}„¶xJ¢6!оsoKºŽÈ]Œ~ÄÒÕe¨[ý‘ý&ÌÛ‡æ.8Q?µÑ]«÷xZOϨýò‹©x'ì%Jy…Úd0ת$ö-œ$Øù„kÉ®ÌÍó-ÌG[xáeá+l.”�ù33�‰xÅ.zקϨ¨¸À¢ü¨'R¢ü÷[Äó/`?”EQ‹=ð,#×…H\þˆþ —©‹l&ÌÄ´º ‰Z�Ô�Ñ¿W«5$¡¶V+V–l¡³ð×6¤cRíJ»|·T·Ù¯TÙ³D}0[’+ò£Ri¥”ê±m•€ÓàéŒñü�åmÜoí-p7¶ë8�´ÂÄ Ôq´µàáÄéÛ)»Jp¬½Ë[öØ„üˆl]S ý2–©t(.ÒÍáO�â1nú•]�Ãh ÏÑ%ÖÔ¯š[1wÍ>ûÔVüâ4z&ÂÑj"Ö$aí¥k†B¿AƒÅø¾`'F朋ØÍ½;ÿöåôn �×DX Ëær»=89ÿoN7Þ>FÝ U!ËlýÞ?2|pl+@à` ¨ ôʼžê|S,¼“âÝë¦ÙèÑû‚þÞR¹ �A…'¹²B ‹ÉQ�àéäÛ "^»“ ð6ÿ!€ôŒþjñ>§³ÙB“ü\ í«Ö;gØ'ï�Ž0ãáyïf¶$%èÿ{?o¸¨WY£¾3¾$GP§jQë™·fñ#Åü24Ãß„!׈ZÎÿxçÃ^RÛË�'ž“¡�\QkïßÐî4ÒøhϨ¤Áõ¤ þq=zT†«qBQEœà]—ÌܔÀw²w�cõ3…ÚÒ”NNO/¸MÔB¬�ã,¾ÖeÚ°UU¥ßé9z*][OíhçÕ/r|R²ÃÑ×SǨhöá0s¬ ÝyåwsÁè{aýV?ch1E%#eú•,EÇú oÉ'ðKìÓtðS�¥GŽ)c¿lÍoŒë.�VB4›™ë6WêN:ÏF#¾l¶¼þ~6ÎÊ·K4å�²&’Øž²õ[¥.ÎS ÅМ�D@Ðô…8q’aß‹&H�(bþ{É#äiÇßU•�³Ö±C–¿pF\«�ôk…Õ©Ï1oC¦>)|àåÍ�Òï_;uk¡�ÖÏíPrëÿízEN7¿à}ìÿN@ý³4±‡/b«’$±»�€ù1“�Bå2s½ƒ'i µÌ ç7µ‚�nΜ °á?é½ciÝìrSeRЯu /4ݱVÕ·DUŸ~{¾°–Ž ¡eôã{Ê[ÛL‹‹L_$îŽÂòo!ãáר"½�-&MëíÏT”„I ƒÙ™ lid©ƒ¸Àæ¶D¬SU *Ö �ÉòÄÏc‹“Æ`kçëT˃5Ÿ‡SfìÝUë ¦Á,£ä(��³ËF ËAsngÏlÙ…J’Å*ëzPL¶˜M'ÿµ)âÊ1”³¬•M¬œ%¬³Ÿ±R:�¡@¥œ°¹$#Û³üÛg\Q´R‚ªÉÙ­«Çî c°#Ox¿&LQ;³õ†¼AÀ†�èC½Q6ß¿íÍ�>qš9=À%_Þ!.eÉ#G€ž·ohŸe$¹òpuŽ}®-¥«“ãÅU~ƒ…ýÖ .(ZóOû¬šaX­Buˆ%½ÿ‡ ýúk�éé¢�Ä�5^ã°4˜`§IäÁiô¹¿~d¸¬¢vÁI`tûÖ@¼Ò:IƒzJ½u.')ñ¤®óµg�%t�©ü ™©>ªzk�Ýg�û‚QeËé65Obâ²à&´,üº¿ïß_ÛÅÌ"c ¡Ô&Í 9¸´ÑÆô€úÐQ6ÀÎõ‹”Oü8D€ÁRþÁàD‹<[UJ”YJ§ñ–[‚þ uù+cÛØŽÙŽÃäV3´†Þ°"Þ×îk:Ol[QÐhGul>v€œj®©ôÀÑ5Ñ ÐĆÀ\‚ohÃnòŠuЃBÀ4wi�šH{¢Ãx~åÎ}c2<,cF,èR[àyyaOgÇávDî à}Š’h|ÇûnXÊ`à÷ï8hÝÒ-8ë霕›ä³©¬Ó�¡ÃHÚ]¯bmo.æVâ›XæTù�óløÉ"ž*.H %¦0Ò«¡–'Êo˜ÆŽžM¹ p:¦Â'»Wá·ð-ë$ë? •ŠGáü¢V•ÊÿqLöþß¿5ç9U³ödrlÈÁÁ~N€Þ-‚J�D•-U/TˆaØÍâ±ÿ¾×à“æâËÜ¡ËÂíº÷ÃвlËfRÔXWmò†óŸ`É>:øm�AÏ.Gñì_-Ä®¹[pøOO(ýƒ fB¸c™E^ªL ]8Ûªˆ§jh~¶ÎO{x|£F½%ö¬:PìýO,­oýëîJ½I‚-àhW×÷BÑ#lÝù˜Ñˆ)ûÞ‚çsž»2~¥ëêA îÀgCî·-res¨¨Ê#`še+â2©iFE)ï“´n™UA}ñ™ ¾žÁ¢Qðï1v¦Ã'Q¥€Žó T’êC¨‘g�=ÇÍ¥«¯Oò“ŸöÉ×¹5ìßa�¹“’¿™æ'zàšÃàa¹9שø ¦{š®‘̓Ì#•eåäŒî¹Xt`Xh[wàÚbs¥…UCð@6mïñ‚ÆË( ÀPŒûA×�“Ç5Ê™@†üúþSû�¦+œ$jK‡ÃØâ†! üHÏì<g¸ôn€h_@¢(�ZÑYX–^Ë‹J^Ldd™³*IGkïC®VIúÌ,ˆ­÷)e�^ªCŽ:vôy…›u¶0†_zOd|˱zý¸Ét0tk³nv b�ÍKËDsD{�¶ˆ*îÔ!_ÆŸýN]ó´Ký¾(�îŠÈ…±r¨ón{Û)TTÛyDQ¼ãpì–�w³¼ÿ˜˜et4J^¡¤ìÏ�9NiÄÇ ^¹PsêpQäŽÒr×Ù4Í�¸_8-RZ=å»Õ†7F#9îGû�‡‰qxŠî)ÆãмôzPª´cUW›œaI1v]t¼Òÿ îsŸ¥af¹³X ~ñt Žx½¸=ŸFÓžGÌ(½U—ÏÝ ”ÉF•îAš´È˜=Iß2x:>{òuÞ‘óNr ;ÞÌó÷½Œ,ßgáÒ=.ät-ºü;H {ðŒÂc  ;? ý£WÐp’¦§7Ý,§€~Û ?a-Ýñ†®‹Á:íJäåyÛ-n@æË>h‰€ï9Æ+0@ãŠÚçÑL|Ë–|wÃx¤tñ3\Ñ¿3ÀÑ7D�Ñ8¯veNŸ› «¢º€U°ú«“Ô„y¨‡ìžÛØ1äp•*º*ÞnÚê BØâG¦ Eº¹]ÁÁáÇ?8*çæ[ <¥µ ”ý(:ÔUuÑìRCl›ký{ŒÌ ŽÏd BìN~ß±šÁø|ˆ+ Ô|½—ÝâC!l§Žäû}Ûàƒ£rI·2a«]~­®Ü_È`òÒŒO H6Ѿz§bµg§d~*wôü‚‡õƒS& } ‡ÚåF5 ¹0NÄI™•µ±¯¦_^%ÜHº¢ÏgEÑ_²±â6$r´Vè¿PeÖxM…CëE…1”[v\°¶Ù·ú@ÛE?ôó†böÉ ˜Ý˜Q]ïu³Oo(ÓžªA‡xë;~ µD¹;¤Æ2'°Øç …�íI4*r ¦e™Öf ðúÛÑ~÷4³=©œá^ßmð£ÿ âdiè—©q¿CyÄQÝK¾à`RU¤úš¥:¢Úö‡=ªšT�Vþ~ç Ÿ þˆf~­oDæ“ñ�æ t‹§úA+`ÿ<ðH|ûñ`)=ü·ÿd°%8J;qŠökøº®—��6¾#?$×ÇÁ9ô4Aø©ð4yRÿ¶j÷ ûZŸöÉÑ †üFOÍlx^CÏFœ!A§­¿øÑ�èWj,00;�4Ä­"wm¾Ñ–8M"ß;ór&þl^Ú¾dÇc«‹±Ÿ 饬C¤Ò™&’‘èÈ[))i>.ÈoÆ%ߊÊ!Sy”’úâ'ã¼×øÚ�xëâðò‡<Þj•%ý«`ò�š<•«v�aÎj ®UŽîŸ‰rÑ8{ÐV\£`®ìÃ:óéåví’llæ:‡ aíÃ×mŠÂ±or¸*®)ÖEΨ^¬{Ë/ÖkTë`¡ú¬Š�ó�«§í9.`›¿Ë:8_ ùªßh îÄÊb6 š<ë<6Ù;ŒÔŒ+«ô�CdÙà Çïéþ�oÆ_ÐôõÆÙ'ZÂòNøÚßLE=ˆôqÇ¿ cJ6Ž^¶¬}ħÐc»TŽ2–_塨ûÍjÙf¹þÓï(TË—¸×�¿P™ót«æ„•6…3š5þPHFäæw:Î�dP©í¶{ýª <7X±‚ð–ï„–Zµ>Zf€¶N¹I·›v•ƒÞªU×½TZEmà¶e{ÚHm:ÆËO5ˆsÌ>²ðz|¢º¼çS{¡nm3†i¼È¿:Sà–ù‹³­Xú„Ö 5¹Uß_Æ_j+E”‰o`Wœ0 E´O„qaŽ++ÖºP*\!þøzmg·?eH¯ÞâQrz[¦êi iëÙ²_§!Ö”Z�dµ ûy¶û1tÏÄÁɸ”0ðü„±þ†3ÖŸm¿0\®cyÖù"©…æçªŠ§îÛssng6„*_ÏÉ<�~,âÙï–QQ�OÛ¿O-¨›\I+®'×ÇÜHðÄIÍBÃñÜsE:ÇQ0Ô!4)PFªÌ|Rç²®d¥nq±pÉÓ.þ꙽€…•|/õ34Qd�Y”W >¤à€w'�?ȰL`<Î|(ÝÚ‡iàewE qÐkI9�Oû�ûQùÁÃï*…ƒ>y‚–žå2‹ŽõŠÄ×äñhf pN¢ûÂ�9QŸaó¥²µ§€åüwÐþCsŸ£ýA霙Í>K”ŸtNð$ò±V˜¥›´!åºÄû%Q-øÝ†EÑ‚_ês,ÐÀD0Ђ"ysÌ17M1>_@’V"’§ ÖDÛ~ÿ­Ö¥ÝOóIïäˆèqÊ“L'¿Ô¦9f¡Ðõ õ´?ÉñœØ\‘�*˜*à«ð´Ñ*Ú…RÀ`îB8Å£j¬E}à�*zMºGëAõÌîñq—×'q�tØ£y¸coÖèhmXÐÎë$iäl�†+¦ÿF1è‰jÖB€gã^¬Êß <Ö]éÿöŒÔ6NX8}R…Wû~'ï;;-R±k KL²T(³²ÈG´‘LÒþɘ�·©0¤2ÛMIž€—ø}h|ݰ9YÄ�-XZ÷^ýðÕ•ø@¦5¬ÎLNσWc¶§†½eÊßëÝišf«ÐâžY"ãÛšÙ×…sÜàé³ÉÒ§^QéÜs¸†éºñ‹•VºD¹g»›suqú1c~1ˆÂÈ7“µ§Ú Úo__tïGÆ­˜Ï=j`BF}â�€`×0ÿž¼©.ÐH�€ÁŠÈAÂA§¬#ä÷Z?ÓËz–¢ð^šóÌYòYö{+“™,sÖ ¡oüªˆ 5Ë.KæùÁ�w„h"Žý ¡ñ6 éâ ‡Ù›= Óð�FÏ ¶¾VãKûnÎ í;(·"­$µLäŠñÌpÏBµ7‡v ±“V1§Ê™`�~Œm\b̉®íÏi¤Ý‡=Ä$Oß*qžÈ$غë}›šI>û9ôÞ¬]“­·ÀÑš±÷$5È oAMKcвðæ~CÎÖþdvC`øRÀisÁ_|Y=k3€å°�o<*�H»"Ïÿο¥�ä9Jc¾Ÿ(ÀTÒÉ;Gñ]–Æ�àý‡€-¹¿ÙtqÞœ¬´CQ¢©'aÀ¿bÈgÄ¥)MVœÃ0KŸo0\mL]çMâ›g(g_ÁÄ¿U˔ր’6°YA‹Ÿô‘?m4çZTyvë°=àß1�¡sK–‰FL²ñšuŠ6Æùx| #=‘V´A‹Î‘¥s|Ø! Ìá3\Ò°d†3jœr ïÀx0€à™®ýžgÎ9ntø ‹´¼çÚ�WŸÖv$´jÌ¡jÜß³¡%5žj–ä;Z‘PF�ÃA»ë´fU(Ñ/ÛoÅ|ƒ(xÁ³) ›c ¡ ï“�iÚ7ÂˤȇºèÍÿ´÷;’3Û–æ¼£§P+ QI§¦Së¥SkýôÍ8·nõ95«ùŸ@FFz†Ó�¶·­õ­¤rpmºflѽD•�SÑ“Xóká l�KÕbT̼Kã“I^$”Z—kä7>FH]†î*ˆ­æ6ñŠ�\®lpxÄŸósnÝ"ó¬·™]“/6•t¸ÒL*~ü]z•Á¿tx¦·-l$Èh-» aç.2®±=Ãʧu$Ffuó „ˆ›ç˜Pc!üÔÍ{›&ú!�Í#ºŠ4/¿ å<ÔgjKøA Z…"¬M ±½> R"F²Wún©MDз ÚèÝØÀä R¹ø== CcIÓ S³¹s ±ù —±OSÏœ!å{Qnš�xÐh´UW³ñ‡±«Ü1þã6;M]ˆ"KL‘OÑyè¸%‰F(§Ã^›ÊQþÞ¶‡Ã·-æûÍ} ‘fóô‘/À$ž@¾|�«^ôÌ�1/ùÚbƒ#LÎGRë–¨9õÊiŸ´ÌÀ¢»(Ö;{TwâÝ/">}ÖJ~/ehI;x ‘ʾù;i?…�n*:NÙå�/óÝÒ�k‰(j¢Xä™yV FÓ‡’ùægZñ1+�MzqÙ\@f=_n(�3£/#Zkoˆ1“óÉD>Í / 9¼zX$»ÈUñ–ÌÛ cïå™C&UHëॴ{·A_¾�|D¼@ˆÐk`› ~EsÙœøsEâè¦o×ù<)¼Mó¾Þ' A=�;J©8�-‚Ö×Ö=¬_6ã—óýÃ\¡K/¸Ãl±6H—L¥©Öô&¹·Ù§±ÊR=·´t/,JD�#œ÷ý5gž¨/§�Ó¡§Ûøõ¨™ër¸|ûeëÊÍkkŒç:�qa—Yñ­5ž�;= Ÿ%ó8@È3X=f6_�/1 !Ûö>¿†€º¼;¾€øìL÷=¼äbuy�ä×Ç›¤Ó üjno~)ÞKPÄè÷õ¼àï2Å·‘>¡J àÆvÚ\ˆ·Ûk:T‘m#lÝ÷SU¤HfbÉêÞs»§‹OˆÀyÓ‰©èsö Lûû©n%¥J0•ýè5I w˜òüŠ{Wä¯SSP%¢z럘Þ4ä@�€q,óè`ÀhX ¢Á:`†«öa¶ªöîÒšN�8ïËNÆ8—Ÿ˜y‘6Àöx`¤kí·�ˆ^S—l*qY6, #èJ.X4 Dá.çSªû^+|‚.6ÀòR.Ëî˜$ V“3V“lÌ™{”nk¸»qðT¯‹Y�[V»Á8»Íu3[ûgqHG7^ƒUñ¡!dÎCªBQWƒ–› êá„¡y±É4 7¾ùM¼"‰¯B»Pø1ª8!¾ZmôRÔòèÛùÅ(b¥pŠ`kß„“~›jÜË�ðè_«‡ûÅq ˆ-{öê[Jä+í==³é}}æà4iõˆ¦K=;„L¯qNQ §îÂÇ ŸP*e¶l7%–Œóèôn mÑÌÆõ˜¼Y-iQIá¬à[Ú)èù«0Âe£:Ú!`à�¤‘n=õîØ;òJ,ʼ:Hí¿Ò(É}óÁ) S‹–í4œlìÙÛn8H+êEÀŸÀëè∌nµ™eh� +ù/“Ð… ÿèAñõU\¼Ç0µÃô¯HþŽ” »Ý7A¦2Ìþθ»gd,mÒ*�ÔÄϵê[îFÓ ÏÈæRzœˆÀ5ßz¹Æ3–�¾Ì $’1�¢C §™Îg+¡;`Õ /ö€í+ì¶îWB,æ.4|¶jœ�ÓÁ‘7$¶xfï$#Çþ¾=i|ÆêL‘›}^3:ér~‚Í_æ^ž·ŠÏNHeóBÂ"9ú‹‡4JlIãh¸Ê *l;�e;®ý µ1‚Ö ˜¡µI»Úýí/즲ŸÒ“ÇÄÅnÑOý¬hÈrö圜k:óW’I`|õDà§" ^„Çsz“-Oq࣡óÍR*Ûqë×�zÝ›€Ï“Éjr{Ç„¼I²€ f •ùNaÒjùr²uÌ�á‹c¹‡õ±ˆ/ôZ™â ¦‡[4ᆆ™Únáê7º ) cŽà²):,0±ç‡Ž»ß„$D|ÒlX� ÇeÆ›³£ûÃæxi¡Úpq­·GÛÆÃ )×zO�9NJ¬þN ¹š¿|á&JñƒÊlåMw” Èm‰†•û<âuòSÁ8T…k�¼<ÿ·¤?ã’øÙ�KôGe{¥²ò‹—û`¢?+¢Úà>R#z—óõ4Æf³'\VÔ¿‡.QÒ ûNzD‰ùZêhmA_˜\-K~’°[¿ßc•¦$ê¿®M�.SLÜÅâ�²=Oº´‹ÕùXß˜Õ ¤°0Ùap×V‡Ã­..&CÁÄŒ W½rÃäÀ“)Vžå¸?Oä°êfBžˆ�OLß Oçïq<Åb æ®V<æcÜ=ÝÌH�QN7¡øõþ}= ‹ñ‚¯JÏÕ:šXÝyHÉjò�k©]‚Ý�*ùI‘ž¢üÁZÄW&ÕrøÇ–Ù¢x¼ìºE™­âüéÑo„Ñ8AÈ7O$Úx"h…•­!q,hd1^ÕO¿áC‡Z|KÜ–'I.ñ„j1«€O‹?µ«#Á�0ƒä¶,“ä½¾1vK¹óN#’Œl¢ÀÎÔïŠêR¯|�. ªTl1)Ü(lñ±n'‚äšß!3ð³ùõÖJ$ýFqHMpç� q*–#7¿’î`:\Îæ§�a£™/»ý¸Nx"´\8v`a÷;Ù+ð´5¸à)‰LØúÄ mâBþ/ùFk²�ìOl‰Cà’üâÊ\ßþ¹ÞþMH—¹cˆ¦ðD ½�Ÿ�ž¿öª•aRù­û!HC²l�dL|ò<³*Ó“°ïî!ALš ôÎhƒP¥#È”ÃÚ,.Ïû9Ä‹šŸ¬p“ˆ%M'èˆ%ÅÃ~HðÒ�Ü_£Ò6køÔª¿bdF[«û4­3J)Þc%é¾<êzT ?�¼Â+ʸ<æ(e'0Sÿr[‹Yñcë^m�ìk˜L(nE @pø°îH\yqÃes'ßâ¨s½3„~IýäËоªO<©g„œ‚6j jÿ²½;÷‚\#O¨¼zÐ-w]àŸâËO¶pŸÇ¯Šjä)ŸîÓ[ˆ³ªA�!M4ùH|H€àõԀǹÑ0yëH ªC–ihF#??ö Y8C-N»’a )&àùù‚îu¥FÐN¤¦_àR¾"ÖÓëNÑ¡¶²•¿„—¾©9»q¢Ë„ü“%eKP~þ{Þõ�°÷`ÕÚ¬:ªNôMž±�ÿ®U>¨¶»cŠ-}»=Tcü‰¤«ÕËò28DÀ‡±�ÿŒP›f8þù„¨.`dƒ…rШw§° Ü@,__€ªéävõ½éò~ã£í¯ÁUO]£âò.V¾ŽÅ–�^à6À:EèÏ—ÜÊDQ±Þ*œßï50œ>öžÁ�„áq‡ қ繠f£(…(uþZþQ -„:,5I/ ¢Á¸óë|{“ד éŠÉ¼xf{Bz^`€­Ü÷\�‹‚£˜¶&‰c`+ÇÆqFY ÓÇ[‚x–-ƒàѽ¾c2Û›—“IâÚš±ûy@˜¶L½,W�^Sš¤vÂë"³ úÒ'ý¡¸Ô(p ð麗TQºdk¸-|Xß–† ô]U H£:Œ¢…è{RN ¼tß J^>CJ’›©æî«ª ˆš gŽqÙXAvá¾Ñ¦ð‹BŠ®H_ý�ÆJo-²øßŠò&ekIH��¬óiPt_y'öŒYûòz Æ>bCî[¤ÜðÅ(‚¸Nä#ƒº¢½+È2ПgÄÈÌÚ—XæÇä»)àóꢙSN�ä0D /ðq�ÑV3”‡±1$b’у¢¨þÎ4Y=иÒÁùÊ *Á{"+â¦4»mã®ùÊ}¡Ë»zJjŒ¿me4¢KàÑ=ÎþÒV•¾PŠ L`5cÕìvåyÖöšl*¼V]TyåZ‘à¸=ªR%_Þ™˜‘,içôxÜÅÒ\3Ì~kùl|ß“êæcS– Ïó  »ÁoÎÑ(íÊ$�Éf¦çrG3kz°/EiƒœßÀ�P¯Ü#ÜtŠ2åZÜWÏ%< qÒ[”" ×pq5Ÿ‡„fe{E�؉Á„äÚŸcûrgvr¬ÛCì½ð+:x{#™PóOg¶•‚ˆÐi"_,À;NŽë.ë„ oWDÇ ÝRdj ¾ÍVê…¦½ü&Èy%Ø€w`ÈèÎeLwz•˜]¯ËéA¢\¤�œ}¥âA[9êYõ ‚Ùå¦5ô@!ýk‰•#7E?´ã@rÅ ¼ 4ßé˜R%²0ùXÀ¥¨»¡bîœà›•Ú²€ƒæ÷ïi/Û=-86ÛQñ¬Í+^³"rÿ,ì5ÈœH©%^PRb¤bóE$ž1�â óÌWq%eºÉX¹_ÌÚ¾KR!X ò°€¥Þ¹ê¥JÍe ºæMÏO‹ˆä;ߪû±åÐi·$Ùåü¦qÓñh`v³ŒE&MOƒ“¡ËûL)�Ä#1³¿ìþ²^TÇt݃ÑöiÐ&µ/ÓÊSÐïs­*°?WNx'ĿްdhMC:r.ñ槸Êü(—å ‰““庨Ãuuò¸ùSÿõ%§µ”÷û¼äÌÜóñØ‚P4’¤Úf'NRœ^ãÃßûá @¯[Ã+tk6Y7=j=¢†]Ku ^ ¬³J¨“&ìd•³µñž¾«±Ä;ï'Ü{ÞQ¬Ž¿±iCuí€p™ý¬%À‚[;Ãùœ/­›àÕªj k§­ŒQø*ŠR…�ß>„ ¼¥æ�6Aµƒ×Àœ\BüÉ‚¸Ÿ÷)‚¦ãï3~cÈS”Z›ª#O�ô›¥EÜy²»×ò�©BŸ’ ¬�c4Ê•ëWÅÊ‚øúþ '±ñ7<‡dš”F¬Õãù7Qì`싦"Éãw�ï Š"^!¯ß„¯A@c²aí}PÝ(�W%­] Yî>D³õt2‡íd¦�û}@•FBVÂâ—ºÒù$—ý«Ø%_ @ÀÒ+Mn¾o¬ÿñ?^±æ †ù.ƒúòx!y…ŠÃH¢;ºê ›b'EÖò)GB©ÌvÛLÝ7YAÃL�÷ö­9Gô_mÂp&?k–Í¥ŠGl‹îVÚÞ÷,§'5F±r¢C<ˆ ÅOj›Ç’ƒF¸#)ÔvŠ™’.š?øŸu”é&ÜKF&å�{_¤ ŽÁúJþÆ=Ì×4aÇ«ºnŽ:Öx[Ë0 RSèƒÉl�I\¡1ü[ó>yn¤¹ŠNyßÙÂÝJS]â�j¶2V=ñ_÷mKê2ÚW9ãkhÛ²•°0oâè~MÆŸAg¡P­¨è‹Ü²ÀˆÌï÷‹#Λ„—ÝôÁé! n­DäÙ1�~ëp×]{G [Úœ~ÈW“¸u»Ú/~ÓTäøCÂèšß�ê"3�¿Ýdf°Oþ^åøìÊb·é ÍâìMÚä5^hEà-§¡ÓIµà0ƒý³s¾É;>×úÞÛo«õ{™ š«áf‡Ïà¹XÃ˶Þêëzj1Á5òT+üjkˆûq{²ØˆÐX¸V‰D„p~2ÃîÅåöO_ØÓKat¥,uÔ Šð\Va&Ù%’o,]ÉùEæ(j¢¬ Q¨Á4‘`™7x>²"jOó‡Ìæó†¥ïnºëZç7Á)i¤ûnÂû€N¡�a�Œ¨J�0ÕµBõâ0]¬¢u/Lê xdâYšìë<Â÷>.?I%Ær,âà_/H‚WBïÛÕÜe¦³ãådiK²Ÿ}“ƒªãm'6¼%.DßüRàÔýzŒ¶¥wR"˜•KÓÅ?Ü¢ür›+ß pÏŸ@¾1ÌDÑLxøRÈ®²‰à6¨Lí©¬;"0¿C<�ŒJäM'áçK� Söûæ˜õäNö={Ãvâ.ÏËÒ/Å:’5üŠ5^)yL>[ø”GÜÿâexíïñƒÐ(6‰#‹·‡®\Zru/þþø õß݇[çhívš7¾ì† Ž^ú•ÌîE§CZÄ3Í ÛsÖfÀÝæô£W'${ýØœ 7}#7Yá¥lnÉ�´vzgVCöÖ7eÊ@…·ÛöæN™I´$IUUB‚ÀcÊý�ž™cÚ¶ç—^–« &×àÇÒ[ žtàAÄèÄ{žð})S}cÔÛ®[É3æöÛ¶Ëo¬¯Hmæq¯èä¸ÜWý?WdB‘Þ;²{"e±ÂB‡LNbì·ø!¢é; ôuωàÓÄÓÉ;[U�UtÈj©>ï¿}f|“ãù–[°v5õþΫ‰ ä[°ƒZ‘‘ ÑâÀÀÔƒìý”uu¼ò§iO^"ɑᤠà‹¯€‰x¢ª\OÖš­$Óäù¹à¿�ÿhìáwÿ'=eÿ-è¦'°$Õ¢A‹ „YÉ¡4ƒ.AßïôáŠûlk-×òؼ­‘†T"†÷®�ä|»Ö¦õ’H ‡1ª�³ÏÛö¦«÷þ¸VØ"vK_ªP�4ÐvÚå âµµ^OýnÜÜÅ7xß7ú}œÛ¼á‚”gf|ßj;'˜è­¬˜ŽÏÔ¯ ã§vÚØ¼îûW²yØX�›“0"éD`JÍÁ£”6_>m&™^¾ò{ LÖ0AýJÓy'$Å0ÑŒDI“W¹Ìã8/ãð­XàTW;øÍ%9£Ä Xo›ÙUømžÅäD׸€àl:©i«-øŸÜ¦ì5&°»n•ƼÍ<¹Ô„ ÿ ÑÖJÖ¶Ëî*ç*÷ú“œ‹ŸR6ÍÖ}p'³EýÙB ?4Ãe¯fáÆ21ˆ‚Š)4ZŠ*›æp®ˆ@SL*�u3ò‘¤/÷·YEZ¾ nß@ Ã�/±Ù¬Ïâ(¨ÙÖâÆaèPç"�æïrî¢À'*‰�½åû�Ô¬P£ž½Þ ²0ʱoMU¿÷æã–÷U‚Æ»ž¡‰~µK òä%_¨ßnfŸØV¯7ôìê}P¹(•Ú‰«ª"{p#eïEé:&‚àôdLË$�ÐÑG*ùRåÐå^‘\—»í0‚tA’†¶— ÇfFå ôWã’PÂhN‰Ö–ñZ¸v/1?ÇPEì>©�ð€^ÖN…Û¤ƒ s(3kzá5l¯“–àtlÑ?†²ÜwÃq,Ç»îˆuÀCÊaÛFóÓ�® §ÁÌ0>Á¸øZ÷{S÷k®Ÿbìƒh-ÝLÆÐ¡K¿“§¼Û(§–¿<¦YRP`Ãîwêêö}f¾À2m ¥sÄ ˜ÆþF°¦_ŽMÀÂèCô&Â^Or> º7| :i¾_Ø×Š+Èùâ{ *™ÔH¢™“^£ƒFd†iÔ?˾":YDU‹{Hp:IS¥„nÞ¢vW‚/Yr„´?T#mÈ’ ë�[kjIˆ „)WÌr€t‚ &¡¶›‹Ì7àn3÷ÈŒd4\ß”ÓÎóý²PX+RÑ�º¨¸sEHå•ê™x$(š¿ÿµ@, /­è({Ï9 ÛÙÉU�TóaËXJF¦a\8Øê=šÀ"ò�e\ìCó?/¸w_Åï°rxÕ©8^Qð…¢}b÷€Ò7>/r×¶ãÐdiø®aŠÏîŽJxÉ+dzÏ¡+®¨ øÚ’…u‹ö›?]Ó‹ÃdÕŒ?ýQeO-↠Ìè·ÿR½µ9@žæšY;èVór_#«µ¶üðÑóQU2v‰÷èQç…"L˜š:Åð·ÓU椽ÏQ"IƒºAÕÜÃðÒÊ(KûQI³‰¼,Ã=â:#¤—‡û¼áŽ$ñ·pC°7”î~Á˜À5ª¶”v €ISVÈxºÕ›hO¿ä‹Ý?=Z6öRQ3ÇÓnX /lÛ>qÆBáÚ·‡sø�ÉÎߎ¨<þî 6=·çÑR³#eTÆë^·â]¦w üà7b†~ ¤ ¨‹-ÈxýŠ ÷�›², r,!HÃïÕŠÝUÛ±KIÀ.lubñî�ÇpôàÈ›¥±#@ZÓº|£—ßšª—l˜ƒÄ@f>„eF�;±è¥�®Œ®“Ƕm«n@„S­ë<` &�ó‡ ¸íOB§×çyúqüÕ îËÝ¡û²xá$’Ü(Àv å‡Ý@@?uIâ´.eÈ“”_Ò£!€ ™²P|Ó‰æ/\ld< ‚'“³®B@¥ÐCÀ´>¯?·D2âõ3½çq'Ëç�Ú²1~Ãd�°™‘€…–n6áí·�Ž%Rgø]roc±¡&~;—žUb�G%#öÝ*™[‡$’k9ºº9K³øIÄݺèu—}uW„ }ª€Æjéœ{´&BT¾s‡Ñ$Ö¶ƒOÀÙ£!IŒû®¿x·Àì7Óh~�æ`´À&ù½†d íùíüçlÓ@Dײp¯?¬ŸÁ?ÿ™åÇ |\áÚü1çn$'ou„~é'3„Z_õ*u�Š´¹ÃK4P㚤»F£ÉWáËäŸÈ»tb¤bš"ùÁ «©,èŸÆp*ÆáeÛIºH«Ïû \¤ôÚdã#€ú/ËR ªÆ·qªzÝŽØ�e'Ç`€:ûìá² mÌ¢Aˆ–al�ØLƒ5|;½ IY�Ÿ\ÒÊÆ'ó –Àf ¢Å8µÞ6-æ‘lfo&hÕJüâÕ„æMóÜæ‘<†Z·B˸nL§‹?ÛwâF⊴�~̈:�‹µb,õ)ÇÙmïÓöùß©XÂRv¢ïöVÎ,4ÎMóó¨I'f‘ØÙ—©­Ô§äꃦ¬Tdİ�'È*ÓÚ—Í6¯ ¾Ð!Iâ[s Åzdôi×9ÇÉë&¥�ÞÏåhŽt³ AžÞ«h÷ !d ZÅ;þÁœü{Læ'TÀ›2œy+ü"Óaº³ð“p"Û;ÌÉ\«vO¨þëA‰^ˆµSá³Íw�ÂFBŸ)!ÝO+€ÐŠÐ™êôïì?å9¹éß]¯:¸ÈæøÍï~ú8õêíh•]€I5Î*µv»TzbˆEḛ̂ƒ½½PÄP§†7œRݺ†±´`Éq Ó?ZïÊ »ÇJ‹e ºêr„)‚h(¡û,kÝt¤a DI[‚ÌeÈÿÎ{ ÎÁˆæ7~‡�.>ˆClýQ w]!…«±³Ý�ÑxS…¶à±Ïý›,Ôú‘è~v;NŽËQç‚tÕ§¿ìo¶Hù-;h–…ÁTšóõÁ„q¬º1ÖÖ…£«È×=7!óÕ°�Q¢lb-'Ö$§²íë4þ4çŽHä~ræy˜"¿3Zãµ4¦BòYŽÖjqæUÿ¤iƒÃR‚$‹“TºïMáí»Q3ähqWž"å¢Ó3oM¨]Üó[ù�a¦çv‘ú}ï>nü†ù±È»†U�(²Q5öWlðŽ‘+ºx[΂²ð‹6yy<³ì«ö`OoÆ�’´öɾðÐÓ_›·å¥Ô£fg¤JeÂïu#­ÙiÙ�ÆQP8!w‚_ÿL1Ô8’cnªz¬Ô@e�Ìn¥Ý8z°�Ÿ¬£�øTˆ‚€]¼ü%ûñ%«‚¸ÚÌfIèà|ö%8’nÏÑ9HË îm$n²)wÚ»=(L?Í QÈž ÄjúÖcÓêY�Ý}÷à�ÃA×áåæJ‘óÅ¥sŸ¹û"±»Ô£Zg°¨iÞÜ x!?%Qk2g$6–iôºï¼Â)þ.YhupÝhm=¹¥çáè‚§|·•&W'\q’"CÊuU¬§6KJ¿•cf Øè³eB¯ç�¬¬±­/}�îí÷€ ÌFlŠà7 ;Íx*íN‘y;‘ú­�#ð/7yrñ?Jç´z\xËÔ,,æãO#áø^CåÈPB~ÅÑ~9š}½šd·‚/ú�äÏé"Ù�èpôÙ#¶öÇnçßœÏØ2›É™´6Þ�¯‹ žÀNda-2bõ‹6ú=ZëűþŽ8¯'ôl5æÀ´«ö­9á:@ÃõC‡ÐÊ´…²Z¤¡6z;¥%@¥=ÁíÞW¸â&¨³¯aæ÷¡úÒR!o! ±›æÛ(àZ µö¶ ‚Ó²–ÒÀ°óbòaÓòd..p—j�æìC¨ä“t¢²»f‰Ó&; +W+3ÿ!)¤/壃Ôí_Gb`”°Ä õî~Ξ¨`–XöÍR²¦#Ôm’Þæù<‡Nâ�®lÚ·ßMÎ)œN]—\Ðæe‘rœæv‹ÐÍG:ñ0蛓 &�Â\¯ö0:qÜà ڮìibŽ@Vµo&ÀÃ�×Hq‡ÙÛM«f�ërx �Æë1ëRמËïW"?e4”\ÄZ˜´&•¼û k/!BF4—À±24‡‘¦Ã¤ºú£¾’q=ç¾R;�/7\äŽ* Z)`me]ÉUo�Õ}l¿ÝûWvöÒβ<ð÷âŽC‘-ÙSÒü~5•ÇÍ T°7,æ…ï2ŸÅZÐ8¹*[ж_œ?‚ï—~è‹p.ñ}ƒØÿ^� f¯ôñ÷t]¸¶h,*Âèé fEJpÏogÂrã—7O¤+ÎÒk¡¯[|Å@îΖ'T[ÔÀñý6¸D£Ìž{ ½¤¹M¦~A7D€à+Š“W„›-£ÖYþ]sø�B×2"îÞð¡NJK4á¹Άw˜É�E7c‹LjûÔ°È!“,PpÌì_ÁQñÃÿΔÏR/µ)¡¤Lh’´FöR?À 7Kø³Ð„ª˜4Ó”X?Zl�OÃŒ¢�Ûp‰²ë(Œ×sOl©˜?ÆR®`‘iõ ‘Šà?}oAMp®¦·õ‹Ö>©ô•”­¦� „ŸC» œ ‡QWØVé?‹ÅùJž• >-zz3EhÙut cs?²çÚ%Ÿ¿Û±¨¿u’'⣦þL¥›“y ¾çÔ;œQ�¶§ÊÂö$ÂZ'Ï^SýˆSòùa�Å» „€še©àœGx¸÷ºí,c¡³®Äˆ¤Î¸Ýí(r�¼U}? wš`ÁN7 ~mõNM6Ž ¡Æ{ƒúWÚ¾ €F–‚Ñhçƒ.2]Î*ÁJA”á·wuŠm:]&Á#“ƒ–«Ùû±–7Që½q…BaY¨Æ´;0’�Ùuж|°†Z�ƒ®h ó^ý•Ä<…µUÿñ±QKEÊoOù÷0ä|¾(P®À±JfdYNI±5yº|¾Ÿß]â ¹Ò¯�-oïêâ7P§½mýõ$MûtM‘Oпޝk„‡  %-â^Qà R°¡€ËîwI¯7ðKŒÚïøµ9ÿ[·XÃ)ã–¯­£"3ºÀk˜ 2k¯†(Ž|è×?òÖÖ'R�õwÀû=�èÒ¢þ)¥HM1ͯ¢�«$Äzs±Äš ®ƒÐ4?×p?… ´Ïå.¸<¦°»doÁ•Nõ´�fÅ¢¯e)\oLh0¬jÀ¦ÂÉ·1tÃošŽIÇ3ÿªš6(AI©COA‰„DÙ©9kì!ªI­µÝG‰ÒGš7ÇÏDhj¿E�RqCÐPDÉá.éÒß@Xšþì]ŽçD�ÎÞsЂ{ L¦¯ÒŸ¿ÿdN Ÿ€/ç7pO) ƒ…sÊ�Q¢UŸ¼o^¡µÔ<5á&¿{ápb!D1¸ÊÞJzýßuœþUG¯õ­Ên=M0ü'˜ñLÉ7ÿ‘¨¦Ïƒ%K›àsŽ*dšÐ®þ'ÍfÒCï"OÑÀV¡Ÿ™ú_¡b§*·¼Ï­U¶m�ÿ«ræ›ùçOêWQpØ0(ž«»3ª×g$Ä€�ï¢ ýà�9ZæäÂbƒ³…'î�Ø—©CëDî¸ç]Æ×,ƒtnÞk¤ï;õI€vÔ}²éËQþí£òPVn-Ϭ~îwÏ)c[AZˆÕ¶ûÝ È »‹Õû�ßÏÊ=ázÛ’D(HÁé2ANc§ˆº;>±p®}c[K©‚G¹¤‹så—¹§k§ÃœÃTJ%îÌAõCU‹²ƒït’EíGð¨¯F ÷’+;hn|‹ýÏ—k á W!¤~›ƒ©2¨E´ú”O~a­{•Kz‰ÿ]× ²#ïÔê™™çÍà)f3"汘­´,}©ÓÁœ{IoÛ~ }’¼¹'âgø&›À+‚’>ø4’åvb9@â8¸2¹ÕVEÿÛÄG vÊ?è&ô¿±}é†�ó-‘sD¶s©�F%çIÔŸŒeïÌL(EÙáGúb‰ EÀ9÷FÓÇg "UÃÉ`�Mfäfà(¡¡3ƒ·à S¡_‡¤½�®×cдÒ"7Lå_ÇSU] ƒä…¦)ñ(ìÿž§Y}^�š&òïì ÑõU�áK«Þöeb³‹Szñ Š ³/¾2B‡–é"÷K¡ÐÔÒ ¼ßØ€‚˜´�ôÚÄòæOóœí»hÉü;ͰùfÏz†^ä9'Iµ�C9N4@¿ ·»1ý;èÛ¶ ýr˜Ó‚Œ.Ù,ÅJçKÏíq&�¹hšôÊqà=�Ý™6æ]xµ3� Ù±–�>¥FûÚ|J´$tœžâ#‚…LMçë¸Ù»Øk.5£"IEiƒoì7¶=3ð§ÈìÕèè½U�ß¹”"|ÒÑm»�Ù½©³&"rýí{* –“Ë�&RTÆ  )À/2_å'Ýâa@»j’¤Æ$‡í)`µŸ=åyþ®žñÔ-˜Ñ»Œ wÏŽ/Lôv[E/ýh”•àš;Â@N4=x¨fÐ.äáìat䔜+a×ïºÖ>‘èK¼`ë® ö:;;k9 iÞCˆZ‹ cýYºùœÕ�Ú é’a‘¸«ÓïF@Bë!¨iÁ;¸[õ·ß/IÀi¬m.ôtÔ¾S¬þØfK˜œ¬]%tGH¢â¨Û:9ýbùîýj€þüga©®-Ôg­†áÚE-Ó‡•ߌ›/Òw< ›(b›’l|Yî sD·V�è9G¯ÂT=Õ7³ëÑû}|™�ÅJ?wå-çZ CV�Òtü|�_¥;$4sÕ;î&±ýòÖ–"kNiðS)g4U 2¸Z­&+ÈáÏõaÙúñœcn ³RôÒ)tŒÇÝ]7w“¬‹èü�à$2k–Ú‹áWõÒ{ª�ŸÏFól{ç>I¾c êY£ù¬Œ›&8ðŽ%Ž/ì!Ø�ÕI ð¼vñÖá˜!JŸÎÏ Ž¿§ëü,ËÒä®^ßµC­§ÿƒ^éAì±qlisv×2¿ ²šÓócÂB� 7Á[R¬9!(˶¨³³uLˆ«6^fV“‡7P�}RÙmªÛµ]DÕ©­“†ÑrTÙÆÄnqC&ŠÂðql$|htåo´kXöRýTòMTòu•_TG©Á¿„¦²*Ưòh¿÷—ápÑ[ÁõÛ_î±7MGðGuñÏLGA;^È+­¥Áçî²Å¿Éy½7Ž1ÖôæNZ[§”^æ�“éû&Ì¿aë;|SÛ ‹F?Ó†W?æÝ%Ž•ØÏI9Œ$W¦6‚»†±�®ÛùŠîW2=n1¡¸?%x7Ý[[¨õ{ÔI±1Ç€_%cšJp’l0ŠÍÂ"˜úÏ/ÕV>Τ�·Uò¼vÃnVr—™ÇÓ¯&%ŧ`ª¸ØÀ˜ƒ®Ø9$›<É| ›K×~ [“ ¦b/~�½í›�†h£ÿp¬A³e�Ëe¦sø¿ï‹jAk¿Rk:+X©~®¾j¥¯Ë¸¼ŽðÁ~‰ŸUr¶ñ‘k1ܹôQþò!)Aƒ M²Ž;ˆêÃä Ëâ´‡n§©[/nìÒ´’g‹ðP�ÜÎi‘þïè.5;Äm#-SÑž 4ã…M_*)cÙØÿZ Îñ?ùkIì‹Æø‰áa(Ý!Í�üׯœ@u³¦„%ç˰ £hè)"æ cašÓ>ü\ȈäÙì ¾?ªqý"«¸®‡5ý<­'ÿ» Mø[Sx_¯ nަĠAU‰²ÜÊ"‡Ê~NâÍçRËÇ3 S}dé”ô‚�xMØÄñ…´�¼ÕÆùAð;SYõ‡Ù¡&„ F?ö}xã/µ-eÉQU*?¾mö³Ö­¾KÔû®ÂÈ•”òR¶è£áúQ$Ì Õ õ•¡<•Ø}X€*-£‡®hœ¸‡°šÄŸcêÍöÛâ,X ÙŠ ¸9ÑësCôÜ`ŸºUøž13(J±eƒhf¥ÃRQHV~Xçˆ4ì�6?Ž#�J.Ü­¿b6„c›kåS±D¦ Ð“‘+˜¦‚Ñïáø$”ê+ÁÐ¥%H®~Tc}d%æŒóö”ÜïÅÉ4‘�®¶Ú°Ç§õÓÞÇ£nÇg½Z/‰¬r¿ˆŽ6¾š×ûZœ, ª}19\5É�7{‡!íOˆV]]To·±3*Íáé¡t€ÿ±@ ýTÝR]4CìVVÖõv]±Ö7_µç9Êëü!«é-IœRÃ})5�´¥¿Ãý@jid"2�4r—¹è -?7ÔöÚ$­„i™i>;®oèHÜ”»ÿ•]¨{K:åõ}ûÅ9x#†©Û°¬QÍï’âÅæØ�´˜KÃÏ`:1¤¡alòæ›K7Í~€(…oòÖÄfq c ¢¥ûüée�¾f×rW´Ÿ­í­Q"%SßœÕC…2¬ë Ù€N,� ã÷k °+Š|àÈ\~çŸär‚u1‚a„–ÛåšµOº¦µå~„Ø›qö:9$óݦ4TëÉ~]Rw;ˆpÙT>ªòXŒã¸O7ú¡NÔüæ@zªIš£sì‚, àáχ‚¹9Óv^Ì^€Z#§és];X‘~îÎß$ôõËWæ¥�rÀÇv%Lý6¡¤ñâ>ÞCŸ‘üÃüËi?ÚF¹Bs8Ü�1v¹•Ê«ÝL®¡Š-á:áàë�.ŽO; ‘”÷ˆipªbÂ=páW�(oÉÅ;A”¬>¨¬¶_�ò]`…+×ÒpQ+HšÆ&Ó™G²�¯¶ÞtZ@²;�Ù²9¸XwŒ¬Îà:ÙÅÚóu¶Ú§\pèW(\_‡Aÿ‹•ÿêvä‚5{Ý·)!U*toåÞ\–s(Ô^ƒ+‰Ð ©Ú‘GY–G±ûsŽ# «_ôð¡>õ_žìDá‹_òÝÄÃ�êvº85êΙp¯Æ@n�o9.€�3ìßßû»¤�]ÂÚhŠ˜¹†qéÈÚƒÜßî”=!�Ð)\:4¥‹ çâ¹'ލÉì  ¿ÖÖï&I‡^0¸H•4ÊüN‰.™zÐ�*hïñÞ®4Ô�Œ=*ÃFÍ ò3�Þµ9§b!º¸ éry®7ÊÝU`[·å|Nг1¼wñw“ùôÖ¾r€z‘A…³u$v›æ¡�Õ|Ô%¦ÁgÑ·D^¢çŸ1‰Â ÜŸ~pœÄŠ–_”�ïÓ”Ó4lÂs�;›‹{½1fKÃ0ÈŠ#Ë{,�†¨•ýfraà ²£‰…ŽÛõNö'¥D££óz€® ÎùÖÞ4äº7ªÔ0]Ïľ$¾ñ¼Ð"¤œÛ¯Íhø©ÚyògÆ$ZÞæÌÛøúåU H3ègÜ,„rÜ=½Ý%Íîf+à‘ï¾Ñ èi°%W�ãOˆ:)Fã2P1@ßWkX™g„HƒÝ at>Žù¾Á<Æi h\BVjþcG¥'Z[ë{ÍÆ±Xe–KÏ~Üü»nhJlÁÔŸk£ ¤MBñké­Õ”JQA½¡ÑqüÜ뾩r5ãí£.—1¥‘Ä´ÑÔ 4yÕ}jÀo2lªÞÛ'¶~Mðã Ù¼ïTiÑŒ>`B‚õGò LÖ<ÛËsÿÊ1’ÂXÆ‘nxâûG¹8ðóU$Õ)LIÜÍà%+J j{t¾M”/ÇæI–ϺÀYe©ê/'·#迊ù·wX ,ÃPü{\ïï—+þÕé%Ô$Õ›“u]õÙÚÇPÞVòÀˆ t@� ˆ«Ðk>BzÝdNr£'§!Ó78ÙóP Üàþ=$ð�£ßu�µõ¯uΦ«ªÁ³HòºÐ÷e¦wõÁm¿©œ)Ò3�=±6WÍ�ýÝ_úµD/èS­›á„ ·îH>÷1° [¨ò뽋2Y’¯]ШIŠ.i$ðŒ¿ë¡:’$eDóË,Ù˾úÇX#Ë-/Ί“6÷ª}9ãô“,Ë%h¥UVßr|Ô®† õûò •§ˆ‹1£˜Ëã³= |J+PIÝ8hL| Ãùárñž\Om5Õ—k½þWíþ´×ž¤Q‘‘€ßë*íì÷ü×ÐÿÅ*¼Ì2±Í�|óḬNFß!ÔÆq`JÒ÷Uhøil��~н÷èß}Ê—º•µ¢_Ì 6{(Ýs<Ÿû?ÇÈŒ*&ù³*‚ÁWŒ÷ÍýÌ[ýÀË#-}}cTk1�èÊ"¬§"sXöMSs�õ¿Æ÷·1ÖZÏ~U:{Üyq„Ä-þ~¯œrr7–U™ƒ W×ê'8V*ØÑ×:7Y;,ÚìŽSOBýÉšýÂ"�Uÿ¾ß¬U·‚“z!ìü¼Ï” @nµîÕ¼&ˆ§"_vìX1Bª|ôç¥áW™/�àZå[(`%Z|Ï\?Ä:ÿ{œœ%2r\Y?»5™ß舲ø‹vo¦t½Ë¬Õ¯FÌ |2Þ䃃õ ÓäòPD;¬ýS¾°È*Ëtô[&ûþ·2íÿß·é騂pBŠ gó£{Ð^±ŸÊëóþ›FlÃh( ¾yòôsf®7wD-ªûÆvRBˆœDeàâ�UÑŸ¯ •ËQ¾¼¶±ˆj�3‡ŠÏÆÆqèkd© —nñ*Ù"“<Íæäüæ—[kYV¦þk{,ãýz/p9™iÇA1š'—Un«¿kÍÈ[wZ–%)JKâµl³Žšdd Žd08å·¶ÄÚÀ ¨ßù×FŠmÿ•ÙpV’�W&zUfDHéÏà“NC¶âî|*=À1;ÃNÒ¤Ó+¶$dž¨ -Ö'Ðß�%4‘ð0x.ÇWݘYÀß8sG±Fû rF×°Ò…þú£4ÝOûD’Ã9Ó} ÙtX+µjÏö8õ3Gm Ð4‹$Ìθý�ØT©ðv—*@ðTƒÂ±øÅEÅr^oG/—åÈd£l~K* ,ý·]_˦1$K••I}í¨~#?ÌmI¦Äkp={q‚=I®¥8Ç”PxK³§f¿9áLK;5�BÓ3‹XhÔB+îu.—oXÊÉóí§š²ûü·uó§3¿vør gSà‰eÿ¡="ÕÎûƒr“2˜ðï¯ÿÕ`bõ÷»�²önô¿uç_å_}d&ŠÂïøï¯ÿ½UQ ¿{–8Ëù?'ÿãù½}.ËžS¶�eýû8ßb-ÏóœSþ¼³üýûXÞùÚï|ko¿ŒûýÛëŸÝ¶Ã�ášÛÊûþÇX,Žý×urßLë=öß^ÿÿ#þ®§šêÍìÔŒåýì‹o¦¶y¤Âäÿœ·Œþj©˜�™çŽ¥âäöÝ/G¾Oãµ”{ýýâ8î�a£ Ã�þc,oo6Ì»ND•þß^ÿ/]ÉÿŽoó=ÈT?ðŸþSÃjøO ÿ©á?5ü§†ÿÔðŸþSÃjøO ÿ©á?5ü¿¯¡‰•ðÏFë+©{`þ~ñ�à¶Înõ÷ÿ€ÿóü¿àzüþçÿøÿPKÒV1]�ü+ŠHÔRimunify-security/assets/ui-app/assets/static/other-root/images/other-root/chip.svgUT ëÆ«jëÆ«jux è‡}TM�›0½ï¯y/í�‰ñÆUX©í*Ê%×Ü#†¨Ù°"¶ùõ$d·%y¿Ç{ã±åù©ßÁûëáx*XÝuoßf³ap�Ø´»™àœÏˆÁ`Øo»º`V1¨«ý®îBÞï«áGó^0¬¢—===ó¼ì‡‚›cÅ|ž´¿UÁª¾:6Û-ƒ®ÝO/MûZ0Ÿ6]õE€ø%¼L¹oËC%Y(…ÆhåŸ1oÇ4Ø=.~.ž §®m~‘Ý#çßÍóu"‰ ‘lvãr)öB!¿mº¶[i‹:5�I4yº”¹Te’bž à‰Da}é,�¹eŸ‹™*y$:‚ ÜÐjb©\–Q Á«ÁH–댣”%¦Ú€§’ªJS•¾Š*}^…ê€T-7e‚ÊP‰hÑMˆVõÞ“Jšto˜v¡Ž�ÿh&A™*­Z“x® -É‹EÁ$¢—Μo{ü©‘UZ{) •oæ´Œ0ºÓ”&” Æ5‘,×ÿ’à†´ôªSœ0ö©F‘ êGh Û+×@q+rj¡An�F£rÿGæZ8§q¤Q ¸XGðŠÁû¯eŽ<®�I®ˆÏ–Þÿ¼ÊR4T ”È•ªiŽ\jnëÄ\Š£6â.ƒ ­½Ç =É„ù/Cp´ÒÜ«#2îÔqaL×wêЊöV@F³Ä 1í=R'.?¯è‹\MãÒ¢¡ÍŸÆÒaž|é�«¿ Óc³iÿI<úOãÞ„?ù¸¹f»xߺdîî꧇¿PKÒV1]#$Z¢¤ßRimunify-security/assets/ui-app/assets/static/other-root/images/other-root/done.svgUT ëÆ«jëÆ«jux è‡UÎM‚0à=§˜ŒkiKù‰†’ÈA¤Ò*¶*åø–DLœÕË·xoÊyéÁëÎ)�,EPR÷Ê…L-}mW�(°6»ëah¬‘ëk0³@åÜx&Ä{{Û©' ¥”„b¬"WŽ­SÐ ¼2¬Iã"ƒSà ‹yÎó0:»É>¥À¯/EÎw8~ÿJ~0h#oí(p²oÓýñÃj³;©¢rÛ¯¢PKÒV1]�<{ ÝúTimunify-security/assets/ui-app/assets/static/other-root/images/other-root/add-ip.svgUT ëÆ«jëÆ«jux è‡}TMoÛ0 ½÷WhÚ¥bY¢(Q*â X�õ²ž¶]vË71šÚ�ã5Ý¿¥8­[tS G|"ŸÈ§�ù§§‡­x¬û}Óµ•4JKQ··ÝªiוüñýKä§ÅÙ|ÿ¸‡f5l* ´{’bS7ëÍÀ.Y�M}øÜ=UR -€„qrJj¤àeÚ}%7ð»,ËÃá Vuýº­uÉô£ËåÓ¶iïßs41Æ2ÏÊÅ™à6ÿPâºnë~9tý¥øv_·�^�8GÄè/D!&D¿ºMýÐ,ÇòÔm÷Pî�1E1RͰ­×}÷{'â¼<šÇ©U½¿]\õõr¨W¬Å°Tó2O�¼îö‹„ðßY‹ýÐw÷u%Û®­åh£š,Í]³ÝVò£³éw4‹þ÷–êǺíV«±Þ‘mè—íþ®ë*™‡[Nè¼0ƒÒ¹ÍDAîd\L‚ÿGð*þßá™b·äâW•¼1VidgƉ¯F+ EßšZQ0�°—ˆ÷0û)nLPÎk‡Ï!°ß œé½Ò!´á­ùÌ F9ˆ0Íà ¬2†z÷Œ*K€ÌŒÏjä)² À)k,’÷3PXææx>^H , gƒtt˜Y´Ó§(séTâÈp‚½òÑEÒÎ$gp„Ñø)¢5æ$ˆ#g\=×(Õ€ !hç, d!¢ÕÑ‹T2³¥©lIƒÉ8�_ËÎp®ôZÂgð @¡ É½€¼º¦À™c¼�žX¼„:4Ú¸TKÅ%“ ÐÚ²áXÒ: BLû™ŒA£­3ÑÙ ÈR€w2Áˆb’…¹ͬÜÀæ]ÐhM 9ËÛ̃ÈF>ÚF"†5ºà9[®‹,AäÍ%F\À,`¤´lOºLÄz}æ§ä÷ ]™÷nR·ý³îZ±ëšvàçÑ N °¹?¦©G§n€'ó'Š�;eî#É›{^®'¯ÆÉȃyznPKÒV1]h�­)õYimunify-security/assets/ui-app/assets/static/other-root/images/other-root/full-access.svgUT ëÆ«jëÆ«jux è‡u‘ÍnÂ0 Çï<…•�ã:ŸM&‚´re� k+uAGO?7EÛeËÁqüñûÛÊúzkàþÙŸ®I´ãx~-Šišp28\šBQÁ¦î8¶Ih+ ­»¦“PNÀ­«§j¸'A@ -pl³>ëó~lá£ëû$^*WU[%òS^¾ú:‰ÓpzÔ—AÀ1‰w­Ñ— zò{…FXìL%©�h¤è{é0°hl”•“%ÚX¾qµ�lr( ”AË!¡SŽAÎÙ]àbŠ�Ü• uÿˆË,¾EŸCrÆ¢&�ïhü�KcsÁ¯¬_ü:{ÏÙXØH$v##”k•GÅËiÔÖÈ€e°ôÌ-V™E3�׉îé.»KN›9le^Aþ$uxˆb³ZÏŸ¹Y}PKÒV1]àhâ÷£Wimunify-security/assets/ui-app/assets/static/other-root/images/other-root/read-more.svgUT ëÆ«jëÆ«jux è‡mPÛn„ |÷+Nè3G@–K#&m_Û�0]«&¬nÔ.¿¾ nÒ¤æ Ãä„r¾µp¿øav¤[–ësž‡08Nm.cytýyéá’@×ôm·ìüÖ7áu¼;€—q‘*ƒ8Êk½tðÕ{ïÈ“6ÆXE¶’Nß¾qd‡µ™FgG>4°·ya!Å<˜žw¦÷I�ŠŒ&¦×‹@Éã5J-<¨¹�ʪ•<%l¡œFGnÅ_YÐ]W:a×�Q´Â¼d)=% ¹mõ¿ÆO'�J›íŒ0ÿ«ŸTF$ï,*f@×Ñ×£nyêh%y••éë«ìPKÒV1]ˆÛ¼kn^imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-exclamation.svgUT ëÆ«jëÆ«jux è‡5RËnã0 ¼ç+õ,Z¢(É.âv÷Ø~DЦq€<ŠØ�‹|ýŽäƨá ŇìõxÛÓïéx{3LÓ÷kÓÌóÌsàËu߈s®A„¡ùð9 ½‰jhØöÜ Ý»ùÏå·7ŽE%p›áYo§�¾Çco^þ…òšêÚëÏq×›óå|ß]/†>{ó.™X]øë…]ÛˆlpRÉܺ Â�ÒD1²¸â�’-$ø8RòE}fQÏ�¯$=ŠÝOì4�*;ù°žµóä¬0²°H[–ÖsôHUÊTŽžâSxI…*K?Ð9ƒõK ìS»Ÿ”%Еޓä;�Òì\âÐbOÁîc@ ×¥7i9‹RÀÜHË]J–s*³* dß.x +ÖOáÕVõM„[œŠÜ9Ý¢Üâb—ÐRÑÖŠ7tQF@Çw&V9¤+ LEŠ´À–)|Àj äHr7Ífµ.ÑfõPKÒV1]6ýß;W Rimunify-security/assets/ui-app/assets/static/other-root/images/other-root/fish.svgUT ëÆ«jëÆ«jux è‡QËŽÛ0 ¼ç+õ,Z$E=Š8‡î¹QlÜ8@ºYìºñ¢_ßQ,Ø–83ä�:~>.ôõçöö9‡uÛÞ¿OÓ¾ï¼ß?.“¦”&0í×ó¶ÎÁ,к\/ë6õ@�ë²ÿ¸Í!Q"3Bìt <Ç÷_ÛJ¿¯·Û¾¹�žÇøñ÷¶Ìay,o÷ó9Ðy?µr’J…›½hâªBÎnJšYœ”s7’ÆRo#ÁÏ, Iáî™òS>¥AY½½rJ™­JD‚‰œ%“@§QP‡[�ƹ"yJ-f®½‘±ûKçžUîªQ¹ÖŠpVäLëëŽj’`Œ.ƒgxîB�³Ã €‚ÆT$ŠÀÇÓ»öuW8ð2HRPJbã’òèØ ÚªmqÉLÉÀ²Áª¨{n{Ã�¸¸E.pdžGw fÑ£c‘µddwGŽfø”æ@Z™ä_˜N‡ã¸ãÓá?PKÒV1]Ѩ@´Ê#Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-key.svgUT ëÆ«jëÆ«jux è‡]OMoÂ0 ½÷WXæœ/ÓFtj*m»ì•;¢¡©ÔQDCƒøõ‹;NøÉÏïY¶%7óÒÃãw¼ÌCŒ×¥RJ2måtëi­Už@HCƒC"„à‡>D‡&ëeðékz8Ô �r¯- Gs=Æçanª-W+n÷Ñ;ô‹¿L]‡Ð9Ü#måg%ëVÒ+,èo’öß¾„�WaÇ÷…*ßå�±KÊÃ.Ð!>þÜ[Ø�„‘´ !ëL4sâYK.쟨ڢá×ÛâPKÒV1]Ë* ÿµõWimunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-info.svgUT ëÆ«jëÆ«jux è‡5�»ƒ0 Ew¾Ârç�BEÚ¹S¥î• ‰— MP¾¾¡ë÷ØW¶\®¶…mèÇU¡6f¾R꜋]OKKcŒ†‚ëj£ ‰ ›®Õæð¶kÜmÚ2` dV„*ç·Ñðéú^á%—Rþ‘,ß¾Q8N£o– ¡Vøà)°{‹\À¾çt<]æ§ÈÙ!<} çáèžæ‚k’XRèÄ~`„ïüÊ&i•û3UôPKÒV1]WÃkÚ>Seimunify-security/assets/ui-app/assets/static/other-root/images/other-root/dashboard-no-data-found.svgUT ëÆ«jëÆ«jux 臥RËNÃ0¼÷+VÛs?b»Fq%�š|D•˜$"$%I›Â׳ m¡Bœ°^¯ggvl'ý±€ÓkÝôËaØßEÑ8ŽlT¬íŠHrÎ#B ŒU>”…¡ UQ•TÇ*ŒíÉ#Ó9LéÍh$n¢ð{½œ±¥‹¤–š¬ òÆä Aùc&¸…׊äÈ‹�Õl¬&e‹¯éÜmÓû9m6Á"UkK6;Î�Á ½'ÉŽÑ ^`ô£¼øØï蘵§Ã1üˆ§Ã'PKÒV1]¥óÐ \imunify-security/assets/ui-app/assets/static/other-root/images/other-root/shield-malware.svgUT ëÆ«jëÆ«jux è‡�V»nGÌõ‹Sb^NwÏôÌ¢¯g80Ä@‰@Hg’0EäY”þÞU=w{’#SöjçÕ�ªš}ýôåzz¾ý¸¿9ßxÚL7»Ûë›ýøýåv÷üëç¯ç›4¥Éù3ýu{ww¾¹ÿ|¿ÛL_?ÝÝ?�onöû‡WggÏÏÏó³ÍŸ¯Ï4¥t†�7o^Lø{ýpµ¿™>žo~×>—©ôÙjYTgï¹M¥ÎîR&©sªls-u g—)Çp]Ú¬Ŗ,sqÏ“O–çÚkÇ/­³·Ë>gì¼�SÒìZ¶Å¦ñòò0gÁ›ãÂ’æÚòiËì˜b}=ﻚ#2 §¢kÀß%óîX˜—KümΙºzú{ºEêü‘Þ‹µöÞûfzÚ»Û�·¿ì¿=ì^]Ý=Ü\m&¾x{»GYÿyÚ=þùpõa÷ÇýÛ'Vû|#¶™¾á¡›cËÌN-Ãïqjœü¸û°ÿ_kŽ‘ÿÖùo�üŒ¡~_G\éñî§—?dòó÷GþÐæ”tÊiê¢mN½¬xRŸ[îy²>7Uô¯ÌÕñNhÄ¢yöZÚdm6I2©Í-ÌGÕ ±ÉìˆHÉ[MØ¿Ç[Ѻ•ØG8ž°ïT3íÂÆKU2O³¢¡Ø¶[ž€¥æLì Œ$Ö,ÄhxçüTÁ `D¯OZ€u®8wRð¤e±r!HÖó¥%�I䂃îmá³iz÷{XsbÏM÷Z‰q¦ñL)PJ×]#F5ÄìÚc}¤l©J¤\´³´9™FIr`)ÕmË’IŽ[G46cµ&oÆŠæž,:‘[#®b�³õÌùÝ<°XŠmêå³åÜùÌ‚’âYZ4Ð(¾Æ{>­>´·2`òØ¥”ӳǴ$»úÁ¶×qØV­¶œ ”>Î`¤ð ¹D=% *ÕÆ:AãÑ낺CÓÀ¢Ô³l ~Ñ+Ëd˜?¡‰ÕÌB~‹€9©+Êê3ʳê³6ÅöxßMˆSf0”ÈÆõ „DwÄPunWT)„â=¶w�Ñí*—ʨÂ9à…l©.ë8H•Íu¬�”û£‹ X‘+qOh/pÍx2<²C?€M¼m)ˆF³=¤gl‘²¦OEdV N)IàN‡dõ ìäúž 1”“‰Í‹GõÅ@Xv‰Þ¨„c㔵s'Ⱦ^’ ÖÊr| ²x�3œ%gŸ“wb¸uà’»szK˜­B-�CÊ4<{WbˆuP’Z€s…û“ê¦Âq§ú)…R·ÜBIÖrÝ„Zû{Æí“êBÊšQ"G+<„ &´8¶e«;”ÜD‡�¡ÀÀ• ƒL çGÑùbaið‡À ÞHK_ ;­Òú,B„½ÀšØÅa|9®3Ê NÅݰgð—§¶§.œÝ,,µÆ©�ëpÄÖÂ8úý5‰œ‘{j�’À<†ßVk¤McËèÇ 4gÉS‹à�.BZàò¥Ÿkïa¬(]ø?ü5£ÙA”q0,$™ÐŠõ¾øñ>y÷;‹ßã^H43$KÖƒf-§ñ9ÐKø8Ø«Ä�ì.©Äu”Ãfࡎ0Ùš01exy=“òðì.^e¬Ï¡²ä¬Ï½UXŠË }‰&$û5)¡Â\,L6�;LßtÜCd’ñ:ѸVjg5¢GO•⮾ Ñwв9Â&5¬†ƒ‘)kô3ÛZr9�·¡ .¯£Z ^8"luTÓ{à&!ƒ°&—,dr*ý»õª7:]3æ.†xÀ̵H *d:!‡;;˜d8�j¦<¨rÈ!Ô+ÌLVý„*N²qÜ›e¸A®2²¢#Á±hØ ;igmÑb‰‹+QŽÂOЏzŒBY«5ðný4î¤në-ö±Î‹ÐqÑ�«+rƒ·~ 3ë�v€øÔVx Ňô¸¼U_Ó§IA¨ky¢Úß•á�¶–÷?åG?ÀmîÏkNŒ_½”½ eqá\Þ_ŒiëgëóÍí~wúô»~óâ5¿ßß¼øPKÒV1]ÃFQÔã®`imunify-security/assets/ui-app/assets/static/other-root/images/other-root/undraw-server-down.svgUT ëÆ«jëÆ«jux è‡�UËnÛ:Ý÷+ºkŽÉáðUÄ]\¤AͶ{CQ-ãêÆ�íÚ­¿¾G²¨M¢>,@æã�gæÌ!uµ?®éëÿÝý~Yµ‡ÃÃÛÅât:ñÉóv·^ˆµvDE§ÍÝ¡]V¾”ŠÚf³nËÊå\ÑqÓœþÝ~]V–,ašúÑwo¿«5}ÞtݲºßÞ7ÕÐ6»/]³¬šcs¿½»«hû°ª7‡oËŠ5…qÙdéÇús³ÛNæLÓu›‡}C5سr¨¨ÆNÎ kðÕÈýÏõõuE»'È®‡8šªÅOû=¬í«î–Õ­*—ÉYÎ1·EÙêÑÙÌ1•Ö ÝóìFï¯ûç²—¬>�m�óìÄ}a_â‡Ëøùq^#»\~*ž“�¯€~/5ç2‡ä)r*Òfv)ñ®5Cç|뤠0qbëf#KPö:Ë2ƒYf#K)èÏ²Ì F–WSY¯ëIgjEoÓÓМ ÿ‚­w¢ž�î´¦LCñö‡Ýö¿fb¨Ë€¦Œ%ÍB.z—kä3%Ö˜(£>^Má¤pŽÁ·N•²å$ºWa‰Ùàd¤ ÓçDJ-É'ôÅxE•Ia~M™I¦LˆÏÃýUÊ}°’‡Lˆ²ûÎ ïÒ‡ÏÙ–½� )+ç`|OœØæ\gœÇÀbá(Ç‚õö©±ÊDÖ ÎœLb)½¶ýV0 -h÷|ç¿ Z”$µyåÉSë9üû£s²‚r—ƒÖ‘01úÉÛé"3Ãc•_UÑÖ…|ÌLñõ­nnnÆ5Åq”@�¯”ÜáæÐù!{è¤,ŠƒŒ[Ü;Š�“ Ô{Ù‰ÇõgIr¤”Uû‘«Þìêî™õ½ü ;?ùÿFúçÅœþª¾@FoqÃZ£Ã!¤iØúd\oweçuÕ§LÃk¬¯!IéÕã¢ò2Æ  'huy_fûÍͰù'C”9Y¿MyÐDÿ@“ᢹê¿ÂïÞ|PKÒV1]!‘kÔþºgimunify-security/assets/ui-app/assets/static/other-root/images/other-root/license-extension-preview.pngUT ëÆ«jëÆ«jux è‡ÜýeT\[. Ä Xp‡àîîÁÝÝÝ-¸[‚kpw÷àîîîÜ)\ {•s’sïë÷ú¾Û¿ºGïÁذkéžú͵Ö,BädDá>b}pâbB ÀÛgÒ üI©‰6ø×q%((¨•MÙ_àGLGa5GE[G}{c€©�­µ1�ƒ¡½±±�ƒ™­#ðM/ð .įäšv²æ¥¥xó8ŸxÏÕ·*¯Þ]8„2‰3ß ‰öCNÓË{ÜÃVd[êØ:öZzŸíCÄÿ·åç‡õ–Ž[µØ) ó9Æ–q»ôû_ÚÝT¿ yijÑúÜ<ò)Vl1\Afo¿ÿy%3Àñsë]Ç4�Ö¼r »TŽ�tÖs‘š+mÛ\|ñá¡\ËÅkýÑ2j-ïº éï»tPèèÔ»�½Þm-f©’IûHÑ÷3>-�ac{ƒì�éÜÆHc‰f6—¦^¸ŒË=VK¬ŠÒv¹¨?ˆ¾ H»í\$âyYôêyìfÊed|ÆX;Ö'úCg¬ g"¹:• u‚Aðm±$ëy×ëøãóÌæzáÇ=5}²Oqm…‘­>çNŠD,BUÊ„)h÷zoGLovúWÓ¹WJo)>à«ÚÉ«ÿ«ä í{Ä’Õú�æEÆ‹£L?Á"íÛÄÓA¬n;7ÇÎÃ'á „5çÑ?†«P&�½Êr�¶Iëå 7 Ÿ—ûóçι9§ÁR¤È€££#JJJF&&a©2õR©¤É�‹ÔïuMïÍ;Ý—"P=¨P‚xï”y“ øìY‹ÛõÚ!$}ÆH?šK½R ƒ¨JíÅ~ºi%%—úe]jœ ÆŠqÈ]­h”§á†«½7ÆÊR:Ó[@{ËW¯§ç±ê—úÞ>ÙGTc�¶b=@§S›óœßès]‡çÍݧ³¥É…q_”-ªgsÎBP› Ó¡²–eR‹éX&Öœ´D¥-ë�-VÅšÕÛLŒ¯ ƒÂ²Á1ãÁ=sÛ�A�kâOh ê \O��e²^®ÍËË# 4«ÓhÒò~¸4nÒß¾¸÷|‰£PÌðyy°\¨ðºc+U­Ìàñ¸Mfzä:êH[÷‰šÞ  rñ¸ݪ§½çÜ=Ž%™7t™ÐÙtãI‹¥ç8*–�šy#9¡ì©�áñkÔ.·¸)–¤å'j/>§Ùyº¿(SRxG)ݪk8>¡£�c5žÓ–FúxþéÖ¸ËQjru›½Š-#£æ-TW­Gîfñs©ìšÜ ƒ!ÌŒ·ór¾n|¡‰g•ÒLžé{7¾_ Á@ËHæ#'-¹­XyhÙÑzŽ…Ûm�Ä×FeÑÃtõï*|mzíFæÃtiiéW6¹ü¢,lêV zwÞäd#èNëðx=@®D;‰{Œ1¶Ø¿·M¯b¾Gl ø×æ·¯µ¸ìïíµ_�sEñ‚†bÉjª«e2y×*ö¢ºôÂñx@ñª:—— Ó†�ù mlLÌ�b[àÑ%�H[æÝ{«Ó: @fGÚÓ \W¬&º†H´Ìx�d{³ù,òwÎq×Ó½`‰Ï h'{šS½¥Ú‘ÍÜ}x6€UtI)÷ájè™Êú™/ƒ=/‡å9Ò•œÊ†Ð9äw#+ �‰®&¤[1ÛnÇ-éÝ–‘a_ö8�û¬­iÁ+kñµÞqôÊ�±Hœ¼b'|Ã6·}׎Jz>ŸhüKu„MÅÇg¯_$«Z?Ò!"��{4ø5+ˆ8ýžñj´ ¿àé±*›ˆìµqËñ¸Bo%ϯÃݹ´õ g`óÁ¿­’Õº×påÙöù³<ÕGYüÝ*ŽW·Ûõ¨@@çáú·†gIQ–&v;Zâ]'­ñÈm�×ç•ôªš¼;ƒí¹/¬RóiLX¶ýìÓJÌ}ÖaÆ Ö3.åwöýUÔ]§¶œ�KëkÎT–þÅ£ãùVÓÞþr8žªÏà¢ÞzåãÇ�œ™/K¦™Ï|/±C*åuî7G¢ø^×´ï ˹•å®MvèÐ>¹Ø?WŽ´6„™òzHä+ψÓʸâXlî‰&ÜÞ©õ‹Dz û Õ&_Cvþà§eˆ Ø®¬tsØý\ åa®ßf~å¹Õ>�ç³áj¥aO tÜÝèâás^ÖMMHù|% Û<——æ_¥{åqor^îz¬\�Åa=—¶>ýÜÈ'»ŽAxQ½»².4bí𦾪Óe¤5«”¾X<6,áe‚ýyÔÀ�_ü>6â¬à x1mÐ×_µŠ~|>¶  ™ÙœéûÅߨ˜Þ`8NÃrµñSè ˜é;­ŽîMŠqîÚk^™Ò«†’¿¦px·dÖ5U¼®Ô)XN2a†¼3ôŽØÐO¿†Œt]¼Ë$C ó˜§Òû‰¬ºæhB© , õ!ù×÷�ér9ŸœßÝÝÝÜHKJ3¾óõz¼õº"koo—å¹QRQ™×Ž�¦{qµ,½þ¶ÜÒ\ýÈOÇ·áñ+|ö²I#‘îÕØí|µ�Eô€€Ž¤ä‚v™û”(/(êÉw÷]2bá£Lâ)�òíLÓÇfèÚ©Ù'ç.2Ý ñ¦¶ó­|.™�"]¾Mà•h�ÐôWE\¯�Ø'¾¼>¸Œó¥]›xUFZ WÚ(r5_ìã?p¸I¿t驦*7âFüºÐÙ7©ZÌf¶ãô Ÿ=<.3ÙzÅ#>ÑÞÛA‚‘ÎóæõÔ °õöò$Á@QKܸżúÐKøí°ˆåhãÒ{=æz:7!*ÕæýUdM�{-anÇóõ ?|oÅP5X…¸õŽ\¾¢Gõ=Øžú�R�Ψ)Ýwb“ ¾e5ùïc/23—á6X<Æd+m–8Ÿ­G~díWPøAxÒ:þ„•å�yñ.ÙrÒ'A¢·¿‰Ußp}p�­¿^…~¥yÍãr.(§ŸT`kòŸQ­YX–t§áuÓ‡éò³`5V}š´btÚçºÅw›ÏéMwZÃ_32‡QEq*…Z%:kñ}E?ÎÿRáo�¥Ѩ1ÛìcMÐã8p¾îz÷¦¹ðLt0̹½¼”�•m€Åáõ¼¯5gÅî½ÛžëIAÁ@؇ӆ[ uÓ‘9Õ|Þ>~4Õ. f²q¢mD¶ÅÕ LIœ„ºü|?ª¥ó0\[óú£ ÝìÝQQÁo£Þ¾'†g¤†©ø±Æû>¯._GïX‚L#N÷ 3Ýwt]ä…Û</ÚV¢€^�nƒ’Û) ¬äD—J5…œêu%6”RGæids�±=mËp.Æ-áDø ›£&¹»[š“ÌßëáäŒò‹ôŠ%úç®�¨FX[6 ò•‡xù®T‹ÛÓÊÊp7âŸ#Âm÷ç ÷öªkÑ,[ÉV&’ãæï¯|&p0v¾Œ"½_L½Ø®^MÎ9–Ž8*è?–ÖXÿ¼Ÿ]•Põaâ´ž=a{àÔÓØ*Ž™Î¤O´›'·à£ìöK¨í)Tæj=›úC`ß š�ve¹¢î[ßè<N‹=$RkPÝ›ïꪳDQN#ÖS enÖ–4a=�½‹·¼üˆòúH/�ÞÙAq#óä¹õ½!Œ±ÜT ±¨™Œ+¹ 9rCy¶!¢¶˜šºW¶ ¶Ù߸ §Zú”ô¦÷Ø«æ–��I_[F^ 3$O&–g«ÓÕóë�P¶)ãF#£â<ãάxùëƒÇËžºêvÙ&mr*n©i“ͨ:XS€ êƒü:çé#ˆ–ÏNÐJÌTé·CÛˆjx-ï  #‹êùp³õÝR¢…‰ß4VÍ–ë;µ—x»©½=ù+ü<…tjªÆèé»<Ì7›ÒëbYAe°$Êàƒ@!¦—c’µÇ“*®¸fâHJ:ŽË]”ÚQÉ·´UBõSc\@Ù'Ñþ�N¡“^²Ùr÷÷÷ä(¡’‰´êï#±X,Ö[ÝT+´(¨¨jØ ¥¥ÇvGÂ1‰G<ðÊ™¹ZÊTÞÔÍåsàŠ(Ü Ô,àM¼�R_ˆœÿ¬ƒuã71i—*ÎUÃÉè$c¬ˆ5(«ˆ¡|‡”™à5,¦UoÀJŠÁø*›®FŒŸqyj¶uÙ…À5¾ÓGð]¿z¼ºÉtðÊEÆkÞ¼�-*Ó™t,:�µODz#ÞI8/[‹¿íº5¸¾�E[Š0Îz�ÙCϦ“�;mØ<1Vúå°y4ä{¤Y®+æX<úÁ³lNÇgœ©C)°‹v·rgº/g Éx÷ßn ÏŽVE¿½¯±â£€�ÑeÛSô]Fž«Ž—Ý̦v*<©‰÷zk1 쪢œ½Š®vÕ\væ¬X¿—W´:­|PrÎÍÙG�„î€4uÖB©¯ß Œ†³úeôùÊð�ë`Áš_R�\ÜXþ8�‚�H+�À} FðÙÉdSzŸ[bќՄòãåhj�×�ô½5×my—œó–Ì�Û4å¡5ƒ©À"8¾ŒO+¥O%¨,™ é+�“‰¤&8\ß�ú‚}Æ8ÚÕ… -¢sâ°«üõ‘¸&Öµ™äØïBö×·ì 3K?-iy”s†‹*$^mÕxÅ‚YHaˆ >VŠÀv¬Y%“rñØG”¾‹ðà0ô©BCÅä*Ré‚iùNtѾ1„OŸYñèy¦h³%zÑ›WÛ”¾µÊæK$4ÂòŸ¡Â¥“hö k�ÞÙÅ�j%3¹;|„™fº²¬£†W%ÇÜ`ë�‚Qî U èhP)™”ç¬K ɤ!Õ�� -R‘ïÜz(�D¥ ›žQ‡Æ6õ¨õÔÔ„ Š22Ú‹G ëOdàý9D-Éq‚2Èÿ›TA�£͈©³g™%õr’ІOr�‰:�'/…LÕ�ÔD¥‚âˆ&B†ªJ[Erê�Èõ¸�4r(?¶Šò ´E^%"ïöÑ‹ßZ2YWI}:¨²6ÏÎK0Éß—ˆ×ÍaïnôŸ�ùÐûQЖ@%%òëÍåþî:ÆWeü¾`@–�©A ím®š~C(ùBB›p¹R•ЦA ð ¥v}õ]¼£iÿø´Ü;jo1�a+DrÉi¦ËR%aùjõˆ(åçÎjœ{Ô>3ïá÷R’W„_FOjªÒÐ(€Þ†î¾£Y«º5Ú¯ö¢Ì›P€óÕP¯„€Ÿ`"¤àèÎ5„&Xî-S´tãg@L«~bŒ—)œ·'®‚®ñj¸|�j|l¯UV?fªE”D¦ÉŸr®¥BÉf�û!_¢÷ŽÔ¶²Î£ÿÄ ŸYi×dèí[o½'Ý7ªólƒTìœí©ÑyÒ/wìm:““Y Åä¡Õ°i †ý‹U†¾]zBÂÂcI Ûç›=ÆÆÆoù[oæ5iµ)éè^·Âè`ß÷dðx¨Q«88\E`³iii¹|N>±_!à-.þ¸€L�ÑIˆMV/iD%— ­¦t2“ká‘/T9~Kàˆ,ñ�ꓺFŠ#wޏì˜*9�µ:É& AÉ¢¹×ÎuÜnžÄ>IØÏ':Ëœ8ï,¬t*=à|ŒN™^µP›ubÊ,½´ÃŽ) )HTw¼tÜy4ŸïÊŽ¥§_UŒÉ_Ž Ï'zVµïÀTµìŠfº?LQ | ZL«640gj«×8�0þbZ9—¿_ç}SÑ–¯¾¿8Ÿ\ßV¶ÄfÀýp~Qjz¸^>΢CÙ¤´»O‰ÅÔXs±ðLt˜v ¨•'n@ƒí:ÉU¤;¯Z'÷é…üfsfzÌð¼NÖ}/ ­Å[ÿcP¿m©w ï[ìXªHÛX×´¼´뛞“3{QºÞ#Lò½<•y_ ¨i&j§V_ ó嘲§/âeE´|’”Á+?•„fÊ*#:Jt¥eeľø–˜�UŸˆ�Ä× �"h¦#��Áç̲˜7}‹[Â;Š©�Uà�È †Y.)«+6O‹Ëç'¨ÒóŒÉÒ²‹á%¬l©á‘8tŸ°Ê‡æŸêÜ%øµ—éÇ Y¢§QÀOù?†»b ï=ZÃ=‡DåóòãÏ·^¨H»²æV]ëO}wÕ±k”‡R¿¿õ/1[ �õDhŽ&Šæ‚„„uâJ,ŸˆŽˆB"O !ÿDFV–,ž˜Œ\xñòà·ôEÊJ|*è%50ÁEqQ½Z€r‰wÄ™+Ù yÄZ?4 >Âí¿ñÕÐ ¾ƒŽ"vм҉œäc$�è¿ò“Kânˆ,Hãaë€GÉpI-"¿Ö�Dåh�„²2x!¼¬ŠòùBnˆ`ùÍú€ ŸO>^2îˆd”rBqŘsÛȬԨvü¥óÕ€kÎ�ƒv$XeÌ™ÔOm�x¶AFÅ+“4hó¢ÝÞ6ÿõ¥/É™Úh7G�jQ¼-AVrʨh³—­D÷€gŒl‡Ùß¹÷çW�©·Ñ†ç#Z\Õyï6Þl¥,4h„PÁ_ZÐh´¢ð�FzMˆà¥lvšòû`À·D�B (X•W�½ÅF úZ§ŒI¥Àô{‹$ý*Ï'‹¾¥Qãž§1¿…{±y�B…À°ˆ6ˆ ÅB•4%Ô•Få-iñ*Ó”Ãé¦ãHBšEYiÅhSªãŽ'îš�—ò}܃1K‰[ˆ½»oÃXdôÎØ¸Ыܑûh>w…c((§öR·¨×ë)—˜«‡’òÌ;a1w•0�¤¢Àn>í‚û2ÅÙ RÏRç‹ZãæÿVP» tSü0TJô�UW¢R.ƒf¡ôÎ2Á8^<á½Óâ·Š‚îo„ÅHB�¾%ej$‘·o%©ñNµêeޫ˸çÓS×ÐÿaJ#t¿…Ð$”PÍ•ª�x|Ê¢Õ¨qõjö«z’ŽŽ³�œ„ÿ/øq(—t•Œ^mÄjæCdi�)Ú5õOˆ  B$€R�óx’óm4šD±Ô>®a©ÊÒ| ÀÌ…¾ªz’ç4V–·É~7twb³'h ·W*ƒ{É‹5•Çx8ŽB±€™•²ó ÷'DD·Ëp0ÁÆÌ<9cµøS®D¹íÓrç®§ÚÚ´£NÝ»ŸyyÁ *9Y�Ä ÎC‡"eÔw�!W+dm€/¡oÚ¦?62”î°F�òm|˜S>L›ßwÈ`VÃç(O-^\-´Â‹<ªF²Ö®¸KÑ9XöòÔ¸nMLI…{ ¨Kõ­¸<�b|�Ôúˆ}zg¶r·ëH\šhûd¾ÿ!ÿu†yÉæÝ,CUkHÇ�:êàË÷ôÛ¡Äf@§¡�UE³¡nìW7F€ß%1ÀÓ{ïÀ*âK™© v„¬»ÙÉËâX^,“±ÅKÅÑר©¯/Ë€+(¼�1ã¤1uO¼súò@Ì#Û"<Ò dxêØ%G·æT˲f׊!³¯¤ïy=²Rk®?Òf–ÎXÀyAb�ï¿Ü£Ð-f)߇†>J–ξÐnØ/�#‹úO7¬>ð¼”Û]·Î?ƒT?Ók•U”)}ÓÐРòä�iï¹ q_¯©W“H|?ÝÄË|Þ‡ä§aNAÈ‹HƒÚ¨ËgLð!öI¦ …º8Ù¾-ÅÊù€¼Ù6ÇÈ•ßguÈ ¡xá§~n²ÿy ™�(Añ*Öœñ ã¨8fXÛy¢ó h �/Nbió@«Û)Ÿ€&¯øv²POÇíØÎgŒ‡ðbHøø_ÂG……JµÅƒ” î å%C®o÷Š•­#µªÔ²ŠÊXƒ#%�~ÑHE´¥o&U†âº/Öß:–/oTÓp®‹Gî(›VªµšI»Ëƒ‘Ò ÅG¡ú3Tã`ªOn“â[œN–â?U¬`Ù”$†ÎÉ¡¡þ¢zYYÍRïYäújVfÄmsšºš?õººIŽíQ·ó®i€õ³ üHKîeP¡×AÕ[€••Òz¥�/Ñ×­ok_q¹¿}kœž¶xÀ0ÊW¨ VzkanWNO=ÐÊ<ÿ¬ 2¿ûHÞ¨“¯l 7­/k”ô &Œ‘gê<³¬Ë+‹3mO1qó)úš?†n§tø2j¶*†7ÃYÝûìh«�Z�Þe=Ç•—ƒ×÷$o0ÀUtãÜC\fóäݰH5ÍŠQfddFÜFÙMÄ­PFIQœ;Ð$©�߸çñ‘ƒ2??2ç(*§Qê@NUî-6aéþ gZìB�th�ªÿIÑ,yòÚIuhÄûS £yrƒÛ!o´%j}þž8LA¯˜Œ­T)ù ¶É2 é:yÓòœ¥:¦'¢#¡!ŸÖ$V™ \X8C/­LJXYßÖr%9’ ßeõ!hòFár9�$Ð8N§¦¥=��Š’’Z»!)©ÉÃåîu&8ØC†²YÃ,+)9*ÿ!–¼øU¿Âà•õô½XˆÏñŽåÓ ;—áùw$•ùåµN-!�®ú"uNý-EjWâq[Û†¡cª!L”uë™ÆsÅðVzü#ê‚Æ™‘§VýþUblKG‘‹÷jý¤­ˆÂ¯4Ž–Óõ×$Æ£‹hý‰È `^ì¦N–ÿën‡ûY`Uˆ7ÞârvDçÈQòúz ð�o"þ­®N•åD@®ä€ôkõÙù™Vs¢e>¶R6…Ž'ùw€3Úî 3‹^½—·]9Lijþ[ß§Œ õ¾žòa[1¦bt23|7�y—Í,Þ¿?árÊ[2²×söÊ%¾Û!HÏJæ!Ÿu0HD¾#¬“#‡ÌVKƒ,…ÈQ}ù0úÒmacgsº ÛNLÈÙ¼«4¾©~¦ôS�Úw~ï£J4^P®²9¹BÍ æBÉÛ̳x ÀtVÚú�8Œ¥$¹¯•évp²^Ó‡³(�<6ç(¶¯¶½ÒA ir:7SoÐÈ7Y9>½y ’ ‚Ûº˜Ëgôþeñ%]BZyŸZ3NR–ÿP�7"kF²NC:z�ØW!~h:‘Ú n6æ¶¥pùö2{l¯ ‡øÝ&�øÊÞ�IÕÈ2À¯Æ��Äó@äáÐéŒh~A¯dL-^ØèÈP«k_å§Å«ª:÷Ì=j]Ï_8/Ͻ^n#$Q¬h¡¡ºR�·b†ûð%!ÚÈ}.@ôèc¾Ñ ÄjóÈ\MúÈ|ñ"”êÐ<ûò¨àÒòʇ Z@Ñi§„¹oê8#å^*#œgá_]ªÞFKÆzæ«æ{TDÞl:ã•—–ÞĺÞþöìˆXQ=ÓæÌõ·šØ�˸R'¶�Žt–66õž&5K£óa;3…²©Rûã дàx‡!c²…¥í5ƒzÛuosò5.S‘r¹“_œÌB½Ø‘có<Ëᬀk_ñ|r¶Rõêõ5jè"ÜE UëÅJÑÊ?J{µ¾ó¼ò2[dzîÍHa&£0™¦ûR4�ºûâ}Ð’Ò㣣�±Z›5?Y{7 “")\•Úvß�¥œÊõQ&²·ì"»ò¡mq·§­- "Ü-êís!å+Üa¤uìËagc<„JÉ„�Ü Ol—«M¯K•E×å¦8×1üÇÓŘI�en¦�{mªÈÌ,û•pÕj^özùbúÒÙPµPó 1·þÙ†ÈéjµÎÝ£´ÔŠ½Çˆ± !ö ^Êä—Ø°;%bÅûÁ9{#|\�Çí¢ì: �ô‹w9`ìÐsk=/>^¢‹lù‹ò�R72Šñï’wÃËö¡–KauÃ1×NÅKOQ^œêi2†‡h�YS�´?wÐÌ™„¬±µ—ßg}§jôÎÏk÷/§OH81=—áZk/ªǨÁ�ÔVµAÉ—W³†ýlÒk÷ ¦ï* ÜVþÖiÆ ƒ…×^Ð Hh•×X½Xàs „£gÌ>þÚ!CeáÙ[ˆší7&–»ïŠ‹‹¾ÅŸ%f®‹Ü ‰@'ï+ù¯ÅÎ6À;[ä§^vÚßÌ ”Ö;×hæY¿(�'5mÆœ§[®ä 1óËfý”ØSà ®¸O!»YOú ðtiÜøQIì^¨/4¡\W…j§†½{ :ŒÏÖ�¦…G]\ESÕkL$44Æä²��û2;�ïünÄÛóÓó$–Ãö0=­DŠ¢åÔd,%L‰åS}dB÷ŽóÊþ®Îq>ê)R1-rBÖø‘îÎMë†m/ëÆü ¢ã¯õ-©—Ëûð»?& NੲÉÃ=¦¾{4œÙÌÐ]>ïJмÁ¨ ÿxÆ‘)ÉI�Û [íŽýœ�˜þ Hé:Þ|•«—£»ï¬ u'A4l×´›×­wF5üÛ˜ÔÒÜ”yœEû[!2þŒ¶O�â {}VÞ†¢ý�Ë[ŒÙ˘ðsF}¥8ÿ,:m× OZ€Ùn_ ›tí0gÀ÷˜É®¥µ¦ … '—°§½=ãçïJõÑ¡´X.YZø }É�ªó£‚•ä0jR¼¸‚œŒ7¦NsàœúæîÖ©nÑ)ÛGò±Ë°f­éNÞ�`’ûU¯’ðTñ—+9¹�unþTªNðز0±Ê› š8š[Iå1’››²CöÌ&ƒŽƒ8‹�{x!P7iVú´eëµ$c>ÇYQJõ[BÀˆíÅò±�÷¨˜G¯CÈúà; ¹0žß¢}i3C×TÑVÍÏ»# '�Šæÿìøáõ³B‚®Zaþ¾¼¥ßô¹Bç>¤/¿º†’‡GÎ&.¥<ê޹9B‘r]oyk"f/arࣲ¸ & ôEmC÷3‰’úHo–r)W'Uñ¤¢|Š61z=Ê;¤õGíÈ2’wÓ%ˬN¶¢¥q»¶Z‰’ïÆ¾_�Ä$®vÓOêx4Û5ÔE£ö>@Fò[\Dg«FCÔô„LŸ›’•ÐRWÌüžSÕ»ªŽO1‚bùÙé a*º„ù†y{{êüÖÈŒ)™èú¶S( \Hó熛IõTDß¿q»ßp U_KȸSMg€CZÙ½"Ú¤>kµô´´4ŒÐe‡MÜ'®³�ðI2±¡Ò‹—á“ZH’U}ŠS |‚ÞèhHuˆÚ\;uweéÓéê é—硵g•ÌÊ�ÝfV‡T £GÓ8f–––ç—–ÜöF“‘Éê™ý™±"ÐétjÃ�ŽAÂÙk š?´5l�̲,Öµëi‰:ŠŠôLA¡$Ç’åÖÒN66ê‚mÍ2: îõªCÆœ~…�6ˆ»—M)ó0¬¢ãg?�Ø�6wÝ£nL¼*õ~w‹ÓÙp¶Ž˜Y¬Ó½w<% ÃãóžrØõ/f™Ü;œ\Û®ÊëÜÈ^I¹ìŽ©/T ³ÍÖlè˜îtÃh1VZ�L�ÔéP îY’šÇºeŸšIõ"…Çf6¾OÆF/ä¹OSe`À€nâ ¼)˜ÏŠv„¤:–8O?ì&ÒùbbtžãÜê)È]ßFš¥`m³‡@8[߯{kDиõ ITÍ4O=>+Àñó‘°vŒ»�ÚÁúËû>²ÆUj©ùÎ-¨7Û1& >—Åí÷kïò©zvo3^äK·5ñ×ÑüÉzå1“%ÑŠÈhL„Þæ®-mõ\# r#Õ3óäNÔh0�Ý“‹ì€ƒ¥èìDèîœç0…šÈ{:¸ŸŠöjH!¬¦§„ù¢Ñ[ƒþfø�±×òÃy–�|­˜¾MÉÞuêæ&^ÂjrëÓnÆ v§ÚSÂ5“•wꛡût£ãj5ä‚¢UìâVÝÖŽÀ¾;Ľ��‚½Öõ€¥Üô‘ÛâO¾¦âН ‰ï: .îׯS¡›å¬Z¾3 Èmà¨BËKô¦°˜sñ¨Žµç*,ïòBIkŒ -%§6³K BütýÖÙ¨ÌÀëÌ*ÄÕÐ-ç£Ñîù@–é© ­ poóžÈà‘——_K¾XÐõ©Ës´bõèúö® ù‡¬Ñõ}uU9þvÖU˜¥µÌ)îbMj+M¨:-ŒìSYï»h½Êà��D$Ƙaè{P=È1DeQivé<ˆÓÝý›Á+¹#7†Ic& ÅÜ©¢…ã:�ÓÉì† ¸Êq.o‡k'¯ÇRF2Qƒ³éð*~ýÜçÅÈt–4y6–PÖQæ �Q|µ*…6Iû< Y¶Dý9[ï¥gWÚc[£ ö„»I"Ò'÷-ù[ÅÀ¨XX�¼5£Tc'�¹oòŠ�Õé+ËjÏÏŸ?lÕMM¨!pOž?FÖ�`I ú7´x^,>n˜ÿ4¶Šß›¾rãm±ž]dŸª¾|<ÝÕ%Š t{w·¤«ë¶¥±–-ûñ=Ü»Ãy3ÿ]Á�Ãm»ääK¼r ŸÃdHüŸÚ ðT”¹.•í%-gÝ{R˜7÷W벟à˾)7‘IŠ|¯A6Uü¦6Ä £|r|¼hSª‰îs ÷¦nÚÙŒ V®·¾dN¿Îé´g±a}à²k}áê=B=c ¸´¬™Šþª�â»`¢‹„¹Ýóø‰ƒ#«Ãygþ°P8\¹Úz&‹Å¢$×úy,z©�„UŠ`Aé• yN}ïó.v4%̼Uœxþç,ˈ0Õ8qÐM²ÿû·¹Sì>/OÇ •²)̇ɦ˜L&á55W7Ç w§+ííí:::ó3•uG£ÉLÉÉÉ‘‘mêЀ,Jµ*â–ÈÈ–…ò³ À!ß]J9‰€@H½éÀÆu/q¹¨Õøž©¹RÕ&-ÚÔ±ŸÅÈ:Ƕ'‡«´F[^Ke;“–Mi‘ž†9>/ÍçX&†ƒ%†ºÊY‡'fÒó�âjÄïdt5Äm€ŸÄ¦³% ™Ížx€nÑÇr<Õú‘^Äëý�ÀHO«±ÔØ1Ð < d}†>m‹Õ&TóѦ”ÆÓ•ȳŒ³ÑBtЩÎÿºöñ¾pMs=‹«¤†6ÅØB8~O– Ñ–îð�ïP÷…>̆·gesñEËQχq¼LfŤ±KBðöð×çù±:56§MŠøœ'eä|pM ÌR5鈣E1)ýw¦Ôk�&�õñ\� i%݃Áö„.kªT‰ÈMA�®1ÞÆˆÃ«<ŠqNÅq� ì>|2½ÁõíànÒõï£úwñâP:rºyR"Ý]¶7fÔ*W„ÿf¯d5777lx?v}Àת·ÂÌœ°µ°àüú«¬Ü4§i¨û.wG ¿©Õ˜Œ#:kÞ~g>­›­Nèï.‚£h˜Úì|Îqw!j'Ýñƒã©1yä·¹ÈÁ)ד‹Q#·žÎÔ¯¤ù á ƒ¶ˆ‚=ÿ6|§´ãÅÆÚ¹ÓjÐFY¼ ÆÊóÁ1LG«ûuMSÔ[kW+Ÿ�oÿfaXTVW_>ßmØÚØD†‡‡ÿlX¶bÅçv¥gbŠ%R.U‹w™Ï6NˆXÞa÷0565FªØ²éG䵑†sS´Rž„Õ3Éçö;éw pœ·®jéSR35q:*Z˜'ëÓòÔ-þtÊ«Ìå›nݪ´‘‡·½u6ì|Tû“ ÂªÕøu37Š7fdWFFÆ Jíó§4.—³ëÃÎt›nhqqq°„Á{z¨¢<³�ª6¨tê ¹òT¹^މ7üCˆÍòìâm-~"¯†q±Ë—s`Ú¹u޽Lk» {^¢ŽmÀŸÛƬX__��wÀׇýLLØþ"ù\‘(¼ç†Žgë§û‹gÜeÀ‚[e¤V CÉÔWd€ÖbG»":¨í`G,wéj©Ê65ÜyC¥Ým[DÑa«�ÙyÔëdIzmÃYï¿Tª<Ú+`…­ª±]îfÁ×à�‰V�›½ÄÙAPú}nRmu%§¸;n2|ôvèeqä?õm ÁXžG’1„n Ÿ#FÚ°iŽ"cS_l#^"!ÿôo£H×1PT�Íz¼»c®{»â×{yn ÈÝY uocœ§©úYQrx|{qh–Õže{pÀ�û�“ Ÿµß¾kø8‘�vÄ ˜¬êÁ¦7›_uÅFk×µú'«ë®´e:³F:Ñ)¥�%èªÄ›’GuêLZø5µî2�ýņõ¾!ÃëZÿq¨TÃp·“-;ÒñÂêþüƒ?黓àƒÇ…(™”Åb[¥÷INùž×nX•¦¢€6àËE_kT`�µ'Ú- )ž—”*\`éMDÆ•*í-öû]àØã¼µ]ÝÔ¤Ú»ã^GbPsÏИϫÁÉmÜdiËöFâc#&œj%)�‡iÌ,zÛÝKƒjzöKoHé8rwbkÇ"ŸÔ:§¥ñ¦Äc®ÍáÍ10£š¢xëÞ`Ý£ïÆ›i­k2ës‚­.‰AO|kïýÚåd_ŽæÌñnDN<L�ßKï‡JO»ë€¸Ée:F8:Û ŒÁùÌû_ñ­âvÿz¤ßçÓ9Úž�àFõdöï±pó˜ ¯òè= ¯A“Aw÷©Ì[6ê³L½uŒ¡¬Y™`p÷$dâ½Xsa{"v§¯œ¡Æþ#¯ á�:‡ú~’4Â�w¦™äޤïßEy–é`ˆ¡…ês>´Í/¢09§”_qèš7~ü)çS]Òõù¤Že$JÇË^yY@~AñYä^2[Ñ{’Æ™äi¼½~K|Não†�‰<5ñ�ë†x<#Ív=BÈÖÒ¡ &ƒ<ªx.éï°7H_žä¾}µË<¿Ì ð;kk°ú“wçµ�é JðªÒj]Ä¥‚*‚�SwB^ž�¦kKY• Œ½0º´wÇÀ¢?–ćFûv5Ó©œB̰õ ,Ô:÷)5VÀó¿žËøß\QŸù»œÇµdÝÖL·Ù/ìo˜¿]Å^%Žâ„%Ó5sxÖüì<¨xÃTíõ§ã»ÉG�©ÎmF}‰å´ÿ¡óœß½$þf‰b Úì¶…«ÜÄÆaFä_=­YOpt¯c…ß»îñæVr$ËÙß­õò;À—ç°'å’�û€U¤)8 èLê3¾¾œCuãrÞÙÁ-)*.U´¸Úè´{ëÛI&Š<Ĭ=HÿIÔ©tò4Zà<Ì'Í!Ï�2K†œåxh¤èpn;9:ý^˜1bT/lOÀ¤á8_;œP×µ+úùÓ`ízŒ‘Sýæ«å'öåVwNý05ü1]å’S 1]½iF"ò½ ^ûì0@ÚMßMQ) À�žplKÓ¤õø —Á0#õ÷,€j îÈð-¸t’gšÏ¬þ(”û#žÜˆÄÍ-èrx¦‡þæ_ÝðA�Wn¬ÝÛ3 ÍÑÒÒ±ý|Ǽ�\o�Þxá$I|ÿþFû×!uƒa<ÝÕYïW2Z‹«òëùˆq�ãéý±ÜX�Û$t…zÅó±Û>Å@–ª'6]Û{@ÚS÷7·kÂaªƒ¦˜½çýWÀd"~‰$À7´Ûþk+îÑ5d{ØÜdØÿ¶íÜBa8át¥ÁV<™+ä ‹¯Îé°9´åJù‰ÙÔU÷SÀVx Ìút$�"ÌÂÆ6�ÞY2Ú0cìeÛ“//oÓðBÚ£Rà²�/ìÈc2ß,M•û­m5 : �Eè5ƒ€ܿݹ]·|ëîæî¼++üâÃì%Ú‡}ì™þ­ðC�‹Wé‡"*ºJ>º"r:U° å{»ÙzW4ªé¨½éj—s9�ƒΟºŸ4ðéI �EÉ6¨ýÜ|EI?¥ÞXPQá~YÞÿµ£',òõ6ûVŒÉá"†ø'µ�Ík'ŒËK=iü´÷Ú@Š$-ešð0k[€æ wMçÉæî´„v]Ѐ¬³ÉlN�,‚.]Q©åCÏØB؇Bf€*ªÅ9ÉÐ/z¾Û÷IU”¶ÖÍw»`ò®ÒQS–Ùìî”–vs{sß�Ýý±±nãZOòÍ^A³ G@�ÅÑìQ)ÀÌ¢È3_¥⯉ô�8•UËx=r1û»+¶x/x—ȯ¹úq e2Ϧœåµ%{ö5M]mOÙ£4Êßj¦kÙ)Â»Þ @•ž™ @uÔÛþ¬LÕý‰þ¸’ Ü•¾ÊÚM֭߸þ•`UO`«óuv¿ÐªÝ ãÏ|>öNe ¿‘x²nïnÙ÷¨Ä³ºŠ¬l–îZÓèˆU|LÄfaq²DýÒkPWt(ÊÉixÐéò¶ùµ¹¿H ½ M¹ÄjªÝÝí’�ÜÖˆÑYÏëã9ª»×«&²ª–&�¿ßÐàLÇpü –ž„oÖÀ!�eí£…a46:6ÎwƲ ó´¦Ü‚ù;d?àµ0;§:Ë èüÊÇG8‡»Ý…ø¢-ü��Õü\-úUM2÷8EpýPÖpÏzeWÔ%nvÖÿ¦ã_KW¬­h*¹Á‡q£ã±d‹¿×¦ãhMãÛn0Ppyß!mQJЮßÕ¸fqscSN÷'À7|Çþ¢›˜(Ê·J se­íkì]8ß@ʯ(¬£÷¯�¾^˜«¨/îèá›Ý×�ò}ë ÃÃYÜʧ,ˆ6+‡$[éÙÖCoé£ÀæÐKÁ€ =ó€üî Wwzà•6»²<ÀJ—O—3ÞéêêÊ7FñZÏw³Kß»\òîòÊÀ–7ÿ`© ‘m��¯0P�kÞš't®íÏ{ÂûºÑa¹Z%EÊ>ܯÃà]9ï(IE-{*½IQä³Ò¾ý®¼¯r">¯Èù.è¡Êå9ëC`ÕóYÃãÇíåÕnED†w$›«ûÏ] {öU?Š Oþ‡Fµj7ý!@gr«O†‹u¦RöZ©h¦;`æÎ¤g Ûj^«}XÀ/´úâÖ+�é²ÏU_Ù£àVë_³]�Êò¤� 4;Œ‚aSÏ– P'Øë,%MÁÇcÀ;M§Œ]”4�¤DF˘ïõ®ücuÄ@­_g†é××^4þà¡Ø2&ˆ²ßrÙ¢`]éÏôóàßo½pì°tQ¶µñ²Œ2²°ù}�¡âûïÙUUv;ƒÑϨ;^GGs¥Ï¸�Õ’¹Sì\\Èoù?ùÿ}½©‰wRÜç­ø‹HnX¬vÂßÿA ©cWû ¶Ò©‘ø|/•>Ï#ccåÇ-…ÕÕŒTT¥ Ε]Q”c%§ãA«ÛUIié#×�ñ(¾×§û ºŽ'ûnhj´°žMî›YÅëRwJJJ×Í€d2Þ‡�ØLŸžçÂLï”?ô’½Ö[Ý�ÓбıޚÓpÌÑÄh|œ"™6±�žÜ=îý1sâì×I†àÄ]øè¸gê8ÂÌá¼c³b-js®�d¶²¸uD@ò#DÀ/çQôó[(((‹‡ûžXÿ;¯�»¶;¯Ê;§ ¾³v¯Ç=ì}øe0Kÿ Eü°r©Š9sJ6ÛËebGp‹Û¾LÅ,;÷T””¬V‹?­WX cĈù@SQž¹dÕnW{u– Hˆ=ôجV�ÞÏî�F|O›±11ÿD×ûÁض޹¥-'gKs4ÿÝf¢'àVç÷€€$Ÿºº:…bÇvÉ‹¤!kkëm[këü]ltô…åeNÞä�í ¯ÈÈÈ[¯½ W™B¦_X±±±^™wÀ�J…âÐÐPÞ§sÁ|…&«¥jL«nnºúí̵“œL6£våÔÐ;*$äÁ‘-¬A]íó§Æ5› ..nûĺ|—aøëÔk¢ñHXøÈdÒîGt_.ÁêÀÓé<ŠÐÛöOg€¨æý ›¥jã�ç3—1“š‘]{ÎtÕ -‚œµÝVת’’Ðà2•ãh"ÑÖï¶ÆŒK}aèmÖMèt:ÌÉR±ûtha©)) ÇG2‰ó6 ð´aã娴òw‚\*ö­Üç³wÿŒâ:Ë{uÖ¬P¯ÙÛMÔ•‘‘Ñéðns¡Ü;88à{>”%!!ÁÄĤk=ïkÍÓÕòT$.WXÜl=·±oOŸ�>¯«Ò¯`µ¬·^ùýƒÿr�lµÑÞVWw|9¾…ì²²]Mƒ¹îÃý3.ÌTR‹{Ôû詳GêŽÈããcI)©´JZ9àz:��éý‡lÖËŽ×òMZ¼ƘSkk¸ˆˆ]Õe_>ÿºzàÆ£sLòá³®½ƒü—ú^Og.’âânyßÖ‹Waþ%#2è×wVÛõ§…Ž—¾—m¾½j&ïñg�â˜À½vðŽËÎdú·>`ë_!@Yÿ+ €ÏI¨å«؈þoñ7Ìÿ*šüßT|7´}îææôåo™D‹íAØßÖhĺ½\nÿóóµÃû?C°²ÿ¾à¼È }ªÄþù˜~LBOt}¿���d a§ÿòÊ ôößqÕÜV<€©Ô_<*{6ªQÃÂK¼‹"òûò ‚6Û¹ËJðô[Ó¶n ¸ö¯©Ü�ãã#îh€�­ƒC�q÷ë5½f딘‚Òÿ¥ª%0ÝyõØ‘“ˆˆèÁÓ[LlP+/*H?i|\¨:K›$\¤MïÒ?Kû[œ˜¥óc™¤™+Q3'Àv¬ÑÅÿÛKŒú(¸"—¢Ñof�¶|H™à0ZüÝ™!%¸˜ðwqÑïw�jŒ<¹éöü—C€ŸŸ¥ó«?ýe2$K|Öÿô´ë5åûoƒ«˜ÿqm„íR¶æ<.ÜkJˆ.*®JR†D·5–•ÈÍrîZå?ýÝ ŠU1-Ô¾ÙøeD½Ã¬.jõë§Ó:ƒKý†VF‰”.ïØ àéj £h~™®²zÜè0¥äbê+€.ž=t!™‹v‘þ¦-�FZÕfí´Åð%N S �ÎýaÏ6L̼ÅoÖvZcm{¤ãÞè®cfMžÇc³Q)&ŠŠÒsëä@ɯ9Ή“Ç�€Z-Ó ù ïß„û-¿søP÷[v1°ÝÜê,¤§ââÈ÷J¸�¦«$¡Hmµ–œš‹nL5.컞¶G}¼Ž¥¸l]Õpm—æÑ;’iÓè›ÚêÚ©(9œE´µÙd^¦j·úög„¬ûs�ºÇ¦®Ü„[Љ$TõÖÒ:ŒßÆéGЬN í×J_O˜f"æ+¼Ù‰´Z­ïê]� š"ÆZsÛ“Ó�ª=¨ÇlÀU·–GëöÛ­,€v�!P‰å>î."£DÎ‡æ •bÞ³¿u€ž¯À[Ñèø“ø£.:æùDôň�t[}-6MT†B ÷áí�©bÏM]ÁË)§äû�¾[MØèÒÂ&ÐÎÐë#¨¶åÊfsžVUôô_ NñdñÊñ )A‹Çº�cÓê]›PÅJÁ‘%4tˆ+çÀ¤ÉÙn¬ÿޝ·ÎüñªÅ0Àsë¬ÎYa6×ÙSËZW%•(Sø«ðEh&Øc�¶0,8IÌäÛÛQBÖ¸Á]ûæv®’ãþ÷9ÄõùÉ]g.”¶—ÃÂÝ­�"ÙDƒË…LûL¯Hù+Èæ©¢îì:™n…}«jêò”‹É@=‡u›k¿wYs"ͲZÔváLÛ¡cò;]¸.>�gG͈p0ÅÞJw¹6ϸç¡ÎUYe]]x¾…ú™y«Ê‚‹½·¾gÿí©=CfQ9èÀ|¹ÉV3œm¨¯ã)ßëêι_QvMWÆ™¤—3eåĦ¡§«×v¥‰&ü”KßêhËÔê�Ñ`°âPb 7°Œ³Í§[úËØyaV�­6\Ìààw-[¼‡�¼5Z-œRs IÒ)k‡‚#‹$UUë²7s¦ãlNvBVJݧ+1‰ç!Ëá@%E %YÅĞͯç[l¹šÇ£éðà‘5«œ )åÙ•8zjîR^Úψ2q§}ÙU³þnLÙÁ]ÑМøÙrGÑ'$t[Šïã)Ýè°qg ^1wÿ2`šs{*e¢uºoÑÓp:}–¦€q¼Å™"%½ÊøÎ€SïlWÎÆ-û¡HèîH&ãèÇéÔêUñ~1ø¹9¤üüš.]~‰ÞÑ$-¶cÁ{9Eü8^ŸžŽ9¶[7âED=Ë(�3é‹Üw0èrêq{ð|n»'2²m\Æ£ÙðËri]KJùÏÈÎÐ6WHãr UÉ#ê„ÅõfË™ös&eI–2læàÜújÓCŸmMï\æìëÄÐb%ÐCU¦,‹ø u¤%!Á« *A{M¶¡³†/Ç\dáÕNÒ’ŽöGÌÈP]%íœÜînÿÉàDèÓÓ6!ÉåÊõ¯$À8ºMäè¯7)IŠŠ²ýH�Áèm&.âÞ³¡f Å…™f×WQƒÆÝ–º:kÔaÐè„Gヌ`íÉËGLlÔ>É?²}A;³´Ä!ú ûŒ¬Þ.¶0åT‰ ó‘xã{gÌ,×ðHÈ-K(d�ÉfoI‘�35]•lAìÞ|9C76OU*²‰­–�\òÜr_`ÕY¤÷]£eáˆ� ýÑ •ÆÞÁO*„Pßw�ý*88°Æ Û3(J–ÚÇj¥fd}cct1…-¸ë¬èŠ"ÚûiÊ ¿ƒNÜÇYöÞMñF×W~HSYñÐéxñà †!�è{ã^º��¾v�Dj ­:Óʦ§mvgi^Æ ö­®âjE©Çuõ¬Ú6ØÄÞŽ1ZÜèDcR�ôá!µ¶.Œg«ß† ˵­¬¬f“-q1×owõ77µd_¿*âÝÜ-ºI¹bD{ÍR Üp>宺l¡�Ìt¿Øœ·›È.ÖCö¾5©q†64ì_`»ÜÍ]QzØè_·¼c©[n%ŸŸ/q?} DzÜ~üª¨¥‘V¶š\¶³ ¶Üv:ì¬`˜àû�ɺñÎO�µÕJÃï-rbÅâOnnǯYåCOC˜†n}‡¥ãé-ëSlXˆ¸$­—lÛªc±lcP=—§¸Úë\­çþ,#ËRsc‚4«m·KºÜž0à‰íJ`ÞíÅ¢kzh ÑVìëD…™ ÍuÏ;è:›@ìýö“�ø�«yýÛÈq<Û³ò½½ŠGÔH}·¶tí è…¼5N‡±ôFR4}`¯I•syÜ…v™¬¶uÍ#|Óšp­•4cÇKÚCFX°Ö]EF¥ I™:CXêO© ©›:ÛxÂÄg� #ºLc×ÛqÛ¾ª l 7“\Ã5{ÙÉø¬«ô•J2:^f;gýÍòWúÚ­÷‚¹�üÎùa‰¿ò–Ÿ¤ÈL¹_$ïkh}YB‹­ŽÍÈá&b’ДæO&ï&£ÁC�ìˆoV¤rãy,œ…ËÅÁtüi7 Ÿ+88$¸˜›Ög‚šÄSí\uÁ•±áPÕ|;[5Zê…Úf.ÓèV{ÝE¾(Fy™» Óq³ÞÍ„P#T®×?\‡¸ŒÂöl “ôVþ’ÆS»BFùx5€pܳ?qŒðÓ[Ý]ê4dœE6ø²cRé@æóì¶þ`13L;tA¾ÀÐï®7u!°Z«y®QD9à Ê&e­ÖX«à ŸÖŸÉ{;ù¬×µ„¸v»î.¸È0Z{•Ô4nmó½p;_eHkÝ Ñµ¬öáamD6ÿ¦Q™?.p‹+µšbÒÒ¸cñž¼\x_Ÿ$R¿›E»öÄ}C†òÆ‹8u^XX(,(@²X8Ù>’m¿Ú ÝÇŸ¸CÃüULE0ÄÇó2<;âÁ›øEß°rjß”&C6`çååõû[UÆ™^ñÑô†Mžø€ÉL¦9¹¹Â„òjj=ô�~ŸÁ¡WDúD,âHƒ•x„~ð{Îöû§ÒŽƒ˜�Qt³_ë¯ ê“n,ñ²\X³�Ç)oë–2È�·Uð Qô-r-O7IQøÏ=\ø.½g‹á!iø8ÿ`æ/ç)ßíª~wœ=Á×1Íú¨ÞcˆP7"J¾ñˆûà‰NؘõOwÔÌŠ'Þ|lWüÂÔ9ZŽQ9 zI8£œÿÄÚÿwÃ(?YL¯> Ó$—–mVýÅÖ¿ºpø¼ŸÆÓ¹²³ßP6€Ãx›µæ¤•ÓÛŠŠŠÅÅÅäòㆎçr•Òˆà`3KK�×ç;õÂcEVëeÿ�F¼Þ¤â�w¯ÿÆ!V ÅJŠâ꺺À¯ì&8w ä¡Ç; YÎÙÙYhèÇã…JÝ×_KÝD6:�oþiËåt'F\­Q.Sè §÷%[.//�™•5EªàÇ�©l¶Ú-õ¹¹Û'K5ÏÏÏÔ#%J”UjRBîm:å*ªÊÊKVõ@ï»H?½K'�Vv‚Íõ6ã½ · UÇ�t»W&F›Ž*ù^Ÿ®¨G–­ê]6¼Ø((Á$€í±ZoMÆ�A&s>[ÅÄÆ^™ž¾œÅo»ž–ôäÝØ¾ð¼"³¨s¿Øê»ÓØ><9±23“£Œwè�¦ô¢KÌ Á}ºc„�YX CÙŠÈ¢‡áÆ“ÕÕÍVáü î 3W*lÊŒÛã¶ìãaìàÀŒ0fÈhý¢�0:Øx)##ƒDRd¬djv÷ôô �ì8ÒmÓ�™™b_ß^_?m"ø@ÁÁ¡†iÖ[‰KI¥…I�hh»k‚ìmS(®mjz¸=]q�£tÅa€EÆÇ>‡/¿«ù’Eú€:_shöv6j«/h‚ïß¿"]ßÜÔ54¼>LøÜz;±ã¼yóf}B^^þN»XŽü:0Jw–~ÛªÛ3hTÝD‰Î½.×¢wö�R›!""VUUµ¸3€ß:¶"<¼®‚d“N6ãþ çõÂþü .uç«Ô¨+ik{ž/×\¯ÔÖÖÞ^ñ‡èÿ½Lø¾Í5 ñŸºÜÜ…²™¬Xëš 6é;^ÅÅÅÒÒÒîmÞ§ËuجV‹5¦²NNNÊÊs¿~ýšÎ—ÌtÛK~¬ßî2´¡ä§C påÎRÀûw…‹ê¡ÕªZâ22·ÒÉ0ôèÜxQ+§••²ÒÒéóßét#ÃõjÍ¢¿|þõöß–ˆ¾mäCqµ÷ìïÿˆ€Z L?Åä Ìÿ>л³¾þ»îSÙæbÿ¿½„òô@ûïŸÜÍ�‡ÇÇÈ®´?A™àE‚g÷ùÓ¨üËŸ¾ôþcòïö°=½ò{ÿÿæÚw�oºîÿWK4ÿÛk9ÿUÄÓv¼¾x¢C qƒïÿ¶À3���—ÈW FJ–*+í¥këä¤\ˆPLFÆxõ‰gâïûÊU,¥¤Â_£À|7©q[©·VÊ.,Üó,ƒ`<‡‰‰)™@�Ù!»jÓ F,!.-‘¿þŽŠŠêññ1$xb ¯/¿°0ÈßÔŠÊÝÃ/JŽ<�œ_S3U�zïÂUH üWZ..O�Ó;’?‹ˆôÊÇóå±CF´‰Ç¿—ï¶ÂèêmÖ87Hš£noo¹\ÎÂC<ô-,Ž”Ð€§§å%%ÒÒkµæÈ™w6FF;IÌë^[p?��ŽÒdL rîdeùžkň·Ø+ öú#°ÅÅÅ™VB±Ùl¨µ›c¬Xùvb×]nŽæbó<¹ÿÑ÷póê¡T¥¼¤´ûê1�Ë¥tD•8‚ V»íþà`(Â’¢"µ›5t]O‚h1VÛõéà ף££2•ã_¿ô””f‘e¹§æçç''Y~ç±ÛêÛ.Ì@h8¸6çÓål6°½‡Gs¥!à›LaMCác³m€@•Ñ’.˜®B„òä(mmmèt:Žì8.Àuiqñ�¨¨;“õµµç9UÝb%JBÐyØÌ///³G†EF®ÿÔÿþŠ–<¶çï￳c\Ç’440¨·Zº<,Ì$%&¾g;­¦n1è ÍÈÀ{½F¶°µµsZW?sB·ÃÛKJJÊÁáj,•MSS³R§­ÙéX%P쫯Ö××»ººÀVŸÅrÞóa7ÜÈt< ê-eü°+¸ªat£mìÐìÔ"RLRûCŒÍ_IwÿþýÑñq"�æÞ«¡®®®¶vºD~(Øe™›?\ÏȺœ­J[U©ÍZ°dò!y­69 :ž­·­´ü">ÆÂÁ¹.päLɵŠ!A ñNIMíx¹©d‚ux¼=­lY€��Øà¨««onnî�§—VVê¶¹ƒ9[ÚÒÜŒò±OèÁ‡��ý~'VÖ�;c¦PÖÅÑ1¸Ï`Cwee¥Ávƒ÷†g.Üšue«/Ì‹ïöîN“:Aã³nÑß³µµµ !¶ß¶‹+*ddeuÛ=Ýlm+§ÌV« E==ŸÀbb`h¸½µÕ v…"¢¢8ªòòÑ?~üô~ííí�®40Áng¾ö…¡«'<÷³µoÚ7�gð`#"nŽé?¹¶ûÁ ìÕý³Tè[Üìx8}±=0‘Æ�Œ‰Ùä|ªñÊWW_ßßßï¾âÚv¡ìâ†?¼kÿš•LHHØÜÜüÛñd’éK‘ú}ùi1W2?¯Œ¢R);t“L¤===%ÉIHHhll¼¨ˆÜV…>ˆˆšÚ*ôÁ•F£vðÐÑ�;¢ÿòò�ïé+˜”àÞ0bíŸH]\®\[wG‘å�ŒŒ´´´$%Gî•]s-Œ²] ì¾ …õ­¤§Nìƒåö"ÈålÙmÿZ¡ °‡X'wl}yñ~ýÄ@M]Öѱ±rÂá-U&F¼ÜêvO¥J«Ózp:Æ5$áUcZEíqw¦ 4Õ]1üõ+«Ö½f‡}xD7î †ˆLÅ¡�Äx„Ì | Œ$w•uƒ{F¥b%ÂèA3æ÷R˜_‘Ñh4v$­&€å¯Å~WÂÇÇGLLLV6j`:©id,^(Po×+ÃÐh.�Y¼Ûøþ"È×ÁÐþ€®maQÑß–,ò™ž—!åðÐЛ8ðAÀ«ÎN_¶R??ˆW '©@}}}hhh°ó8·¾@ 룡¡!Œ6 =\Y^vå^O2Ïß±x¸ÚKIœÛ)µF­™ž^ç]]G‡�§¡«µu¹mÙåÆËmCHõÖÕØcÉÎ`ƒ@·ú�½üÏiÿ*Zo_XÜÇêÁwn¼W† Ãë»;¢•ÁA1 u/ØÇ³¦Ž­<™U©=­‡€ùÈÊÂÒ×ß/gjeUÖgPµd%ÄÌÎ~€Ë:J?úÝqì·ÛÀR 6L­Ú‰� ©Åg§&-´°]°‚±þY•ž÷vÄc… XmVV[òóûZÚ`{î ú¶ØÇW¼×§¦6× =·¶·étÛOhVê,’ss{‚ç“éóòÐÙùÅÌÌLCCCH¨÷rw›t�;;; 6ƒ‡6³¿Á‡ëtÍÒSº®` ˆ�Ðï}TÃu�'°M3‰@FE­s»Úóõª_¨Ð~Ê �ºaìÙß»’û™lÉR`ä¹\;Ä¥¥Në:,  e<˜Ñ¥åå»WSSSí.ïÀ¡‹÷í’)¤_'Wb’ª»»»¶ö§ºrë€�Ý…!¹QÎÙ¯¨ðS.¼©ôΕû{ØÐÿ³W†3pssã¦kòæF£ý¿î¹Øü�-—ÿ$åÑú=”¹|ýèNQ0DƒT11é9vGa¸Ú �°‚›�†¦ÁÀŠõ¥c…¼M=Er¶ÚwÚ–•°T‡ë!TPy;ÔlÎr&îËvC¿VŽÌ­åy~éîlŠ9£zŠ@ñüæ(ŽjF,Z#T áÕ=NHcsŒU€ÈÂ-7›,’ø ‹A'±üQš†÷Þãv ”Úü2õ.\3(”u¤ _t™”äd‹ªÂ`MV©GI,’ º�.šÂ„Ò¹–ñ£*vrg!”��=F¥3øÓ%ñë¹ÙÃã“ KEG?ϧ WC‚±5šó"±S ã¥ö\†4�åròòó)jB‡±EÐ~aQÃ[Ì…2'SKß>¦*WB+!9…$—í6IÌe—ØqÙDFpj}mZj @>{Я¿Ôê+jÛÐ0%¾ÉÀ­f`Ôôø9ªiÞŸ&$¤õ]¦TÎlxÔÐt×ã¹ßââ&),nS/½Wž±ü�­úòÌ ­¦Ô!Q\°Ü;’áÞi§”÷Q”aéÎÍð ¦< aÇò¹˜=o)[ …}óæ±68Τ�ÅtMa’šÊ+ˆ¹¤“ †Ó,ŠY0¨.o–f¡"TnÐyý¦;Þ´r¯Ô<§ÿï1Xc|S?POQÈçPSØ”þšùŠ©ÓO¶˜õ•, ¾¬/<"V" i¡Gì§ÙKM4ý0ˆ˜pöKr”5S³ˆ… b!¤�ݥNµ·.míah–DC«I„„ÊÄH «‘ œô—¨Ì‰ú¢!M�ø´´CXELöq‚Ù-E ­’ ÕU”�ØMvƒƒ­vøèÅÂ- óýæg³¨fí°¾«ˆ”íüxY¤ÊUÑw'jðù-“I¦ŠŽª\¼>˜r„]nT·õƒÈ“êi+£#®‘¼Ë©A»‡=–¶1z^ýE7Ë(¤F�6ñµ€YwE,ž3bãèhOÕ£¾ÁºìlŒ€ª[{,WAÝRV+pÕ_±Ic1Ù!/¾d¼Œ‰ûã½vd}oJ¼ªZÁ§šúHE刵áÁüw*¡SýSýa.w±!$iÇÕòÀ­é÷NæêýE!ÛÖ,Â"2£÷Þ¿Ž$j9Þ‹ËDWõkXŒ„"˜kµRk ôΡì45åMç{æÒËZ"«à�#E iÛS[Ïžþ,¯fW¥“'¤œ+“¬KÈUåÙOÊ{ÎÏ× @´«‰Í.c–]ˆ7^B_h˜maÌg±í£ ?¿v²8Ô°”I¤jzÒypSZÃ)¹”£ÙK”-j=„ׯª(gyÕ)Tóuä}–îU×ÄŠˆ‡ƒOÈ["Á'·ÂA”ãå«T‘W(‘&$4ö+XÀç€ ÔˆNTœÌ¢¦f!š_Þ@Ù3çÐ6¶#•Œ9 pJb¯¡Õ´J8›Û‹G!\6£\ˆoMÒVÏY0÷¼É,¥šÙÃa•œåh" Š2²4/+gŽ%ŸœªÆ¸´¿±Š¬�bªENnD‡O´Øö„j/Å!Z×,‘&Úb·1ÎåW=7hÊþR8’ü‹¡pßj^d{%Ÿ„o2eƒšï¤m�þîA™°ŽµaG.ÆW þ‡½h{‹UÞ•²†«ik9ÓGì²[†·–]+GÜŒ ÷¨Ç¾ÒwsëAãßHüÆKW#L:ÏÑmâ+º-ôOuÏ‹/³é|/ë³èëV·ÏÎŽ>G�ø™xç®Üoð[cR@ÃCUÉiׯ73 õg|˼”]€Ž:üµÌæ›:Ù7qæC´Ïö¦GëD7ëOºµW‰7±ÆV>Gó™RÍõ~3|˜ºÃúkø­Õú=Q²ÎŠÞ åùYôHÖRªGž,Nû–…o'¶¡¿:6ó¹ ÆlD_'xöDEµ¶»Œ:g¾\¨l¬_Ó&5óu¾—‘ƒÁ/Øc»+°ñ:�ñgÝÛ‰RTÔ}ЫFÉ�ŠqðyY?ÎããóToÜúÅVZ-žXk'½³]|‘Ü==»Õ-úÍÎâgÂ6.ïå>*6t8w=6œ!ô�>…o¬ï±éŠ]¢ºtóðÅݼ̶up_ž:?åëž�çGP@çÊVÇ´LÇj‹þ1Õ¤ê±oPÏ6¦W;x¢�y!ãŸ+ADŠ^¢dYS…ú`2¯èvÐ·Š¿Él¯÷Ú‰Šú¥ÿÑñ[‡–Âé5õ&~üËs4º‚¢®«{‹Ÿ¬îJF­þkj"d&æK²K¦·µéÑmfÚu¹E÷”$ί‡cÏØ1Α'‹â3lG“Þ6¼ _Ь牯�ó¶½_3ËMçË _À£n¿×®O-4 S��=eåô¶½±¨££ CJKG,ê4¨JU+Ç]Ä!LfæJUiÐÂæ,NÁAù�ûìãàkÍæ•‰pò^'YÑ”eþ­fN%Eø£t¤‚A3ü]F9Ó¼¼È|îkã¶n¥`>�`.ü¢…!ÃA‰PJZöž+“& #6å››©4"­ˆŠQâ)Téü Û`ri‚Rãê‡ VT”ŒG³î©Ë.›òÓê˘;Éý‹�ÐÉɳЦ°ì]ó "ØD!±ŸÔéR±’õ!háó+öí­;7w…êа‰¢WÉ Ò/�=õ•‘Àìq½‡ìo³Qé?×ökªN‘3­¶ ”š�_ø*žÃRÞÇ]1¢¹—Êâ;nñLaž¸¸¶>t•µßc¥V˜(XsåTsª�¼³LöÑ0-Êf:ªXY5–òj¿Ü¥ÕLïJHŽ=½cS!MTøîö­¥•Cϼ*FŠ7¢€}Ü‚EµúèM»]м„ jé¼QµPµUDk—ÞyÇ¡qÍå%#5¨ç�p> ÒÁØ(VLp°X‚¦JIö¥jMÜQ¤×l·nE×êÆWuMeùlyy%öz?ÉœáM¸ §u7w+8Tác“-È·´ýç¢_ó/*$§ä„`IoìAp¹eØíi œ(–’–*�Êä‹÷FƒÉ@RM‰^‹Ù² ëm¹Õ!uͲ�»_DŸÇ•RRïœs•ÊÇ<} e„„r´ûŒß]Æ ÇKŒuÅØ_]»l$Íü¨±#Æš‹U«^ Ü> °O*C£'ö‹|C2ZÔàtÇ0ÏBœð>®C ™JÝdš,È?�ã>Ô�Ð)ô *)'HxEñÌÞ’)[2Rï‚äÙúÆø#ï×í4UtÖ‹Š£ d›KWÕ.LÚc,$½äO'H×¼›œŸâ/sÝyYVQVR+%§„Ÿ,WLQÔ(Ù®M®®­eV>ó@*î—yÛ;¿ƒšÌ& Ù{e’^!S24„…Ú,f”Ãp:è%¾ì³ó=ô÷…Ù¦^¦Ó”òý.“=­t*Q“©º-�wI*"´|JDÇâ&¶gVÆ,^ûEÅ륱¸¦P6.:— + w<Ä’Ç]%ŸW‰·­ €œèG“ÖÃ,I«ª#3âÁoB;„ϵÀ‰ˆ|'P¼á¤žÈPÃ~¿2uqëòû¿3&DßXµËçQÌ "Ô]ÈÔñùÒ}Hæ¦* ·wuS8~N^6ö$Pú­ˆIªÛû¤„„É ,sÔJ–ÑÅm4-„ùœ=*æõòʸÆ(QcŸúŒE7äÔM¸kU¸i+?ć9Z©È: ˆÙè+•ä“ùnZ9°E!æMŠ Ì•v¤�>ŸñUÉ R…Äþhê`vl ¢}ø¢OT!ŸèrP­+ ¢¬G.WeIJ³ |ÝŸhß64eŠ|:�ž…•t‡GÓ29ÔšÛOßšNô ͪ'Ô³K¦ÚÎïî¢ì'�‡÷ÍrŒ!¯ÔÕ‡~ÈÍÉòTýe 区\¦‚$.D=‡z ÆiG¹�516§XÑÎܙ֢?®½o> ŒÊªWz‘f�ÏØ4ú.N:1(±=;�oQFæ�׫|HÅ…Ã�\Ý�³‹&§¢&´÷žjª7"XjÚoºú 6¬Œ�‹¯RL['í¡óƒnLtzjtºa1ùðW\fö¤e᪼þ¨99RÕì �!RðY®Î§ qÂx¹¦9æŠÓªe1ÂøOÑbÔ&8 _ŠEÈ/�‚òàf“´cTs˜w¢Ž’hcò‡vÓ¿­Më„h �§õz„9¹}L@Ï{i‹FB\Òà´‚ÜÔ Q‰!'1tø…åèæ&¢ãy¤äE· “ó{sÎóãê:woüsTxQùœ}iqõ´krìãVí'1Æ+ø´XsNÙ{uDÉ4ëÕ¶èrÓŸF;áa¡V¬‘j›q{8)¨öù‹e8‡IÔ1ûön"Ó‹�*¬2´±CFÉnï4Ä�åCl‹ —ôÌĸΠt&§%R_Õä�8<~=¯˜ÈCð&K­‚…¡ÆÂFW¸‘)w”šœ‘)«�éÊV—·,7¶‡hâÄ„ Á£ñu¬ÅݶiÎß d5 æâ!áuê:”Ç�w�¢"FÙÇE¬:Ÿ¹¹šâ854H­)ï"—h/�YíÊ®7»VªGaM”ê }ãÁÖ»„‚BÅÁv}lyDFý°âiUª„I¦p¿/iFŽ21Úxöë·÷5yD¸/èƒú1([Û÷ÞZéS³È…rb!Ácƒ£zX”±éäá.�4ê6æú�‰wšk§Ýx�‹²ï9ìMR¤±‘˜1TâŠÄG”�euÙõõÂI{|Ÿ7R¿{ªzó³ªêhqžÆÈxbêÿc,ñJB¶tX‰¨¾3ÙD+œ¦º —(Œ`YÀ‘†)§m`ê˜vÎOõD“ÿ¢¯ ËW¨Žlq«ƒ�xÂiø@ ‡6ðü^fœ”•Jy¡ˆŠ:Ù"HŸ•8©ãn{ï]3.gmi_½CÄX·LÍØnšv5ÔÄž:'²íŽ'+�B†Æ¡¡xæÊ›Ë9�Ïñ£Ÿø”ï²ëÃ6~}B‡þÏÁº”Í7I7™h’©LüFÌþÂÒh£(|·AõQ•˜a<ÇÎã7›XGXbÔµXVÀ£pœ…ð“4«ÃÉ_ÖÑî>õ�òºe©'C´n~ë#tEIuxÙ¬©sHa8Æ`…P(Ù©_–ÐmœSš_~2YÒ$ a¬KÉûK힢mp¨Š€]º‰yEla�fIIÅ*µ‰­¤©‘d<·�>7ºóT7‡‚zT.¾¼Zfλcé§µ»Y%_Ö÷µñÄ>†”L. Œ�½ ”u¹Ûuo½$9ºŒ=!TþA�¤ûRÄ %F4}¤›ëªO¤8ñÅqÓ=¶É½t8)m‘ƒÛŽÌós«”UHÉZX¿n£�ÍÊŠ±ÍpG5ä•”¨ÆHûÀfÅ´Më%5«X…­Üƒ“UšÀáÀb4îtAsªlaN¢:Ê88ë²d„JšÏÓûÒJÄ[½ËغŠõ±šT4W& ¹ªwI#<ÑyŒ‚t9>³r˜–|Ö|Ä�do)ò’t®�çÎ/ì’°¼½&­ªf™¿Çg‰¦dµø0‡K]X6š×È=¢ŽMµAYl4—ï§û‰Q½ ­¸ŒÅ�Ca~¥ž§äWu•ÂÒ×D™Ô>+C£š$JE ¢‘iGËrö<%¢)´ÒÆæÊ�ééðMHeãÀ÷ê2‡÷+7�Ë#¹o›PV>A„f †Ó8r¹gÃÍn‡*—–%Þø‘ì‡XQUYžç½Ù`<‡1 DN™¸xÜlE^kàŠÓk!ºS>GÐé‡uÀÑ4{æöç£ÁžJL;…À9݃�ïՌׇWCÉštÅ„òèÄ·¶aŒ0p»ÃÓÓ ”’—N¸<ð"ä ÃsAÌ’�&{‰{³/áB/BswÛZÑ7°2®‡?äéTÈGU” -Lo~70. ƒ{H9ÔæëÏÌ)3XÛÌéžÖ’&è76B?† tãK :¼Ô¬l¿ŸTæ�'•(ãUÍÈ£ó‘‹S]žìfW¤|5[?P¯%iY'g3ŠoÏ^@ßÅ=ó%<Ü�Ù4¡êÒF#Ÿ[„K˜Ù]Û“œ!ø¹Û®/5!ÁÙj”ªðè»&#¦óWªT²Ó‰íÙtc u׿©Wj¿N�Ëq I«˜5åS˜—'ðÜÿöûµ9'Xräþ‘�ß'h{rGsJ$·‡Ãƒ€è,ÌKÍÌÚ»µ¤ß«â÷K>6nIhg% p¨¨æMcÕÀÍ$£Ã™ŒÄÉ â  SBÿwÛå:mîí¡é�ÿ¯;jbbÁtKBÛ]’%y¨ñÙìÌšÊæê‚&:xßÖ9H†yãÈJ©h<Î]Ž¥çÎýÑ¥vièé \±¶èyÆÿ�>c«ÏC¢O2�‘{úžŠ1SêçÚN‚)±Ôê»–ì1Yc+ ¤[ 'UµÌÛCÌ.AÖ!ZõŽ[´ š PþPBtì�d†åhEz »T©ú^p{{ÂuÈ2qrº·‡½§·ääâ ¼°=„»Ø– ü›É²¾zãàÌŽƒÖ·™d¶§ä»Dð jk{30y^Añdÿ‰{쟊z~æ66h!B3"€‚‘G sZFÑ?Ç6�ÿ.Ýè¸�ÕsvãÆ Ô·Oîó÷D¦í�|o½Ëžû½µo£Ë£ÏósZãAúÃ-p¯êß )“'j~@�� ƺáÛ·Sº`ÿyËô7ÃéÓ(d8°ï\éφ –ðy2¢ÿOÚÇèèÅöpµ ‹s¶³Þx$Áéx^:nѦÁÅÉ©¯¿Ÿ·lšG©«Í æOÛ$iÊxJcJŠããc\xÑŸ"�ÿ§bÍB™t¤!•R0€‡‡…%G �‹‹ëï‰BAB²¿Ú›��­³\pvtLãñ¨ïèÈ4V�— A «\(�;*)¡L»]z«~þt_mmk[YQqvv76<¬ÑdŸ¿fóº+[¦B…X®Q'Q¬tù𔑑K&KJJZßÐàââ2Ðß_¡Õt¹Õöýûw¡ëºJ/ib$7ÕZó™ð�àý Q(((`ea9¼�uÐfñ§þDÏÜÜœ²²2¸cÉDZ¯½dSÏôØÍZ³)¦ nEmíß_ùEÃ̬”¯P®Õd¿PñûPÍÃ6þëàö…J…X{8ZRëöÇ�Ž,Út€Î-===.'‹›ÇX^å©k1�µþ®nÿœÑììfÙ«Xß¾€…whY£M9t´Çój?µÙ<´âŸƒ·£Û&U›(z°QÛÎ-`û¢¨¨XX÷ “üã™ /oulWGì´tu7<ã?éÑRë¶·¶´¬ìÚK×µ%sãE�ì¦lûgã¿ó[½”®n¦yðÛú+Wn///H?=“0Yº3’¿ÆÇ;OÁÜÁáêt¥a¿åó§ŒÀd»Žíñ?¥¿¢ô1’¥X7ò®Ÿ]}þ�E/e;Ó««¿�i,YÕƒ‘Àñ|yXTTf¼ò›·É ±Íè�ðyA.ü€Ï¿bÀ}}©A½Óiv4ÛLp°Êœ½Ã˜°»ê�ÜhûÊ”6ÿb9žü@  þÚ˜è,ûÅ~¶\g‰30æÂ¯ç/G¾sáz¥ªNú *'7—ˆˆhŸðj)Ä£¥¥%Äl£ÝKQüiœ è:ó¦“<D„¿áˆä¤{ œV¼ds èAô�¼˜ �Uª×ÀΕÝ=’[ B·£]¿'ð�¶�¬˜ÖÖÖQŽ«\‰'…¯7uG¸$|(rÏ™¯ÙEõTZŸ?çœçS`Ïm¼Î°›´Ã@E%bÛ>_àÊÚsjCBd‹ý¨¶LÏÏ©È <´ÿxIHØ• ú*»nÐÃ÷$së3C¼ÊgºOò¬‰¿ŽšöÚL×ÍxpžJ³zûéf­lªÃtÈÚûv“�ÂãîÙÈeËJ[t4¡«Û*N�œR�u¼åóª¡ëÑ–»A[&µÐšFóggb)t2LpL¿a'£A¥¥Ð[²G†…†þ{RéJíóï ivö�ü$dn¼‰CÇqù½(ïU®åÐÂÐWéØ/;?Snl[•5h†"Á€³Ë�䢳#ç3!cb;h!nÁ§Ù”½þ1úùºR§Tå%3Óßû³ßœç#m»Ãάv>¨còX¦p�çù“aá€èÆ.z«Ϧ&*¾”z¿œîñ ihr[gÿËãO[ûA›6K¯½ü呬O ­N}B  Ä·õä”ífI›Œ/áQ:Ò;qߥ¾ý+0~ÜZõØîòKò @»ƒ7$¶¯³7Ÿ+—Éé´³Ýèã{žéXÐxöù(ë}ãô”ˆU|�øº±ÑÁ½‘ï*¥öòxW·9�ºãE³üÈCÈj\~›{Šüœ¥mvLªý²µa™<š_é�t âƒçÙn4¿×%n0C;n—g¶‹rmiÐÕr¤?k�ç;ZÉ’¥D£*W�Öi›ñh—oŸ¹oNuÑWÝ��\L5ßÊšÏÁ�$[^vå î†ÄöC|ïœ šWʾõòcÈk-M]¯eÛïiì�e{}ñ/=ë>˜ó¯��ø:¼²ó'Ä©2–&œ{£km}@§Ç*dÂe‹×Ϫ,¡z0? 5ÙD޾d®™ $Zf†1áVZ×ݹ,½»´}>J’™©ô±h%:JX²hpZÊ­©•�UQqi5Ÿ"b낆 ƒƒ—yÝŽemu¡ÞÆÜlŒrý4Ç”ßHÖ}�I¤àzn(­\¡[‹uÑ›©ž¯ Šš­w>uÙTï’¸™ðÁh¼cü-k-�` ˜˜ùõ·�·§¢¿>–ÑW:æ  >ê¬Ù=ßD®éc×r@¹Cø–-Ð9s—‡ãÝ}Ø¿qy½:µ¹á{¥tÀܶâÈ}\ðy=®^`¡ˆ­-æHg) ó¹U@‘×óy¡{&K}U/¿ñ¨ˆ«·€ñ‰šuI-3…#»m×ò$& -:–ºy,¤u4æE*G—qÉ3gã=ÿZ¬œZÝÛ1ÿzkÕÛG!ÿíÃRšËM°ÔqeðNhüXÔçùÿhî/Ã⊾7A”I€àîîî–@áî.ÁÝ]“àÜ!¸Cp-$¸wwîp‘ß}úßÝ3=3÷¹ÓûC¥Â9u¶­½ä]rnÃó¼Ê\ß" 5Ó¿Œ\[åná’^¢¿kÑÈL‘Ú°¾[ZJ¥½îUø€v=ôÍŠ#yhÁk3ž?Zäëýé¨÷õDäºOÙÖ=C0î¹÷C1y©µ¥_`�áè¶fB|«ìÔ’øãÊÒÒÌEÄãYÈ™Ín£ê ³à†¿'ݤëý¶÷C³~7½×¹"î˜Úu‘÷£Òµ¬un),ÆÎ¹OK Ú×öÌÇ-�OF^úûÁ%¦-ÅïãÊåÙk€ÿÚ›f@Z./fïͼ†ŠZ®ò–&`.(¬+2Ä¿TϾ.Ƽ©pYk&ø¨‰…y_ªE ƒÈÈ’Úü>9½_³ 1’Ðê6ÍÒ¡¹âãI“/ŽS¶»}°j"æÄˆÑ»ñ»ñËJ…¦ÞL6¾ê 'ËêØÀü‹0Ï5…µm0µçažë’ºÇ}I¦Î]{ËCÁI…en² ùå¡;“ò²†Çœ=72(P Mzýnu¿³³±¹ž48ðå[ʵRM–s^—RæœïÄ]_"É]Žç¬THõ˜gßZ5ê›\«=£VËcWsÐöß*gÖ¡–—T·'·˜ÏÙËt2‚QS«‰ÛÜÚæµäs=fÝÁ ˜×â*·õ³N€PÿVósÖ]…ç<„R Kf^L¤nfFXû[ß­,éãK¸dg?´£4³Ì›îìcŸªc”qk–O_j‘¨Í/�ó^¯Ã|DjîRö6ðy:=g(’)7;¶—s_ÅÖœÃÍsˇÛÞY�¼ÏA3')´K5µ)�æ;8�‹'¯^+éÚû"ÛØ—·ONÐÊÞ?Î.M,xŸ^á<Ê®Üï:øvÌÌ£œ�9¶—Á}�8Dàø> ‡IÈcA"WG¨ç€l7ÝÐ`¹IÜÂÁ~—¬kº üëûÈý³Ü†n€BAýªý¹ºhª§|¯µX{¨\:p‰þƒž÷”_L o¡ÈŒ;ýavû°8”¬¼$'Ùd›(qp½Zõ=øùg&wo¿‘�·“‡Ó¢"feeÎi(Ù�4×Ïì`y¬¢…5n“ú´Ä½¾~Ë­<„ È©*º¨öÙ?^…”½²^JÜ™ £l{'ŒZíRp£›á4‘ŸN�ÍŠ� �¤7lIúéYçÁç×ðÚ°¶,`PI[ͱó'‡ÖÞž›Âñ>�=#S3£$â²Ô×[‹üs«„ ãÛD”‰!‡êÐÀL} gíCrhn+oàÒ”%ç{à/¯½ƒ¡·��•Î�¶R —­KÏìòÅ>#Ca*Ê“?¼QÞ†¹G²‚­þÉe!QR¡Uî<­±]«ÇnA¾¬ñ±d^Cß:ƒ¶*öPû;ŠÊŒrq;U•¹¬¥˜R14Þ±ÈO2³çg`N¢õÛîϘ„„³„Áe[ú¼=½[CÜjFCÔéÃ×)¦ÎdÁðÊÊž[©veM„{½›5ð^´S5GÑY^'¿‚øo6(VÑ...U;Ù�¤¤þB±?Щ2òz�\pôm­gË­I(csÉ’oÇO¸Ò²n3óý –Ï1òßÃÓŽÖ™¤D\>…(œ—äo=¢B/<ìMy•b’mêÐF¥—zˆUéK8^']ríƒFh©+*¬`yâª3WöعU¹ƒ7ioÑZ`ÆiƒúQà›/—ÌÍÁz+¾?_�á4ß¶Ö�sï-¹* vÔéð¥of´e»#“)5ë,ŸG—ö$Õ@´¦ì6y"eQB¨HÍ;yˆ�îëâ‰CÕÓªï �·ke�N¶¼[®ü�R·éK^×�µ– `kovýEVçˆt‚-&~œEP¨ä°ºÜñÖãÍàR±h¬¤¾i¶ó³eú�䣫ËNîÄ^Ge”wå�ôŒìà/@%$ø<¶³þhÇ• àc¨V9ƒ‹Žî¤¹»ö&ËÌ‘ˆwƒ0¶†u]E 6 ÄéEý¸2Z¨4=xàf/m~§¢ÛjÒÎO Å?¥Ùû(CÐ>²ð»MLtVì§pÚÓm•5߈çȯ<@¦ÞðUï84\ŸnE8Ò.VZy"3ýÓ÷¯á«jk|}_¾zu}{{{}}}fûءׄ±< jñ6ìR�‚Êêwû^q¡9ìúbƒ¶œþD쇯 ê‚¥•Ë-º)ù…Ä»Ê¼í°Š@ÀvjŠ˜™™¶çÁÚXãWYIÉâ¶äA³jíC9.nîZË9a0///0T¸vD9†n[š~d¤n[�Œ¯ÇÍ×m>¯¹¹¸ë·Ò¨ÝåÖ„íììÜݹ‘¤’Xv�´«Í”t—ß•Cù:ÛYËÊÊ—ø?»ú@ì4¡>íõ��/Ëàí�€Q Ï-8/áaaqFʼn„ã®pÂØY¿ßÚKÔcÁ659™›—‡`ò Л³sr^½|©i5¼¶ØOßâÑ�çŒÖ5˜Ìnlh9â~xxÐ×Ï?r’““#~L%d`` ¢ê£îþ“•c®£¥µ0¥ã ¬á–Çû#À¨¦¥¥Ÿ•yßKä�y^.8{_÷ë$%'m$2V·F�Åõ²ÂP gû‘†šš)[2°*Àäf»ç kÝŸÞþ:=Mf³œµö¾ÕÈSSPì ²/IJKkú‘÷ãmiii\\÷QÓéþL%x|lìxäáLe@à¢ëVj¾%%%=}W3�‹q; ;]ü�?y8"ýQ¤w÷÷ÀJfv®Lº×Í™©ÿGt:MQ0n÷ÁtùZóí!ì»w¬ØaÜ·wÇÝ÷ww)ÒyÊER’’ÙrG'çç�û‹¹–ëÍä¯+ï›1ÏjÃþ¸´´´ââb˹š§l«€ÀÚç?é!~ �Ëáýà¡©9�¡ãqüTJ(Õy)¤³åþÀZBBÂÞÞ^Ä®¸¬å!)=~¨ñ fßólDÎÝùæôò+÷©ÎWå0ßÚ£v“Ëq¶Xt IW(Ö�Çlkë{oïÇ¡¡¡åeÝKt;píŠsØ®^“5I’ìa¥ÉõÑM¤½#åºü2&&¦3ãÔúä‡ì;èH�xº_ì»®GŠ<‡¯«³sÁaL Øv€H…³l›\½¯Ú è4ë~¼Xpš³wˆ,¸½­ÿƒ¯6õ¯�CPÈ$mîi߸¹¹A³èªM0AnïÃ×4ËÅAm–="�3•Æ×{Jä’ ²€¥=>¾nÃAƒÞ¬€ ‘¥Æ£f` 3Ã|·û½äé$™ÛÛÛyÀŽ<½”Ìëî Ïyþx\A&ìNÕã °Ô 7ñ_ÿDÖ/«¢‡ >%Õ•Ó­ ¯Øp4_­†Œ�+‚ÜÎ'Tk»¿¯�L2á»éXîÐ�4!"4”†žž=yÐyÞö5Ruu5-05NÎk`§¿”“¡.kb:!^æêq¹iª,Eû=ÓÖ�$†�?êí·®Zò¤’�˜à ø‡ø«ÔK|º}Û¨qáEÌÍ÷޼.¹óÆžè9rÂìüøØ–wppPÇë:§}eYƒŒŒÌj©™—�/-=«Ùx8Mçñf ø'•ᣀ®.¡wrþÞó®?kMÞÝÛö[ááhzzè~Ân²X Ú'£¢‚‰ŠÊìá·×ýòðþ)sÊÍ�L:åªõBÝá‹»5<>Õ²©So€ö–¾¿èæ½Ä}b ”tt‡a싈!�à³³1 tt:í¦+rþk1 ‹â‹Mœ%÷#Hggçå¢;ý£ÍÎhYôFË•�³³³¢âøŒêô7)Òä�ñc;¸4ýIƒF4C¿á(<ÛÔ‰Fü‹3`¶±––MÿP"óV…ÛSÉ0EªØ²²#G–:öð㩼±Át@õÇ2«¦Ó¨Ù8u;ƒÊŠMw8^2§ý¦á�Ýrëç‹‹‹¯_¿~ûFèííÍÏÏŸÎw˜®:ð/Ûâ3ÀK—¼n|}}‹PÜDÐìþbpgÓúxœv…JúZ�ÿÎævVörôÚ_”ƒ!�è_ (ÿ(ÇÖ¿'…÷üçFWÕa5BÄ×“Ýø??QéÚq€wÙvàr¿qp~jö¸Æ•3›ƒSzî²°3–'!Mví�HçÙÎ’EþóÔà¶ú)47C0`vnààªqh!�Ÿ?þðáC¥Ñ ¦Qq‘ÑßÍmÍ9à;i„X§A~ÎÚežÞ¢¤.™Ï5—˜Þï_Ú>rZÛ­cÆ9£% •(»?ܹNÅ…ÿnÑä2{:�Áñâ9úªøp/þŽ”î£FwëýŒØ�é3¢Ê£FÇL�nßñÐØëá‡=bGÿðšG•Ú�ŽgÆsª*\êgn÷ìKk\>_¾XAÎ'———[[[�^‘¹s~P:¯û�êwB&»”€Ç=Ô¿4·õ}“À� ¬‰ÝÜ+ég;x›ç`rÙ”ɹùá`ò@d—eÉ"‘�Ó.—Ä¢ïÝÖPêšàÀ3 å <<ÜâÅ’8lW¦O 9p¥j—=Þì•åÈ€AXsfŽÖQÈ¥÷çj˲²ôIÂ^¼x±5˜Œ�Îÿø5Åw›kªÒTfsÎH¯ ¬¤�Ö2îÅÒ�ç˜Øˆçp>>y&úÞqœ{„ªô¼û{$ Ê·ÞNÊZ�5úï†%Ø—3©1u°üŽWVÐM}ï}µ0WcÙ¸Š� ß½q¿þÙ¨Ûö¥í�‡§§uãÛç÷6W¿V î—têU=h¡"tÄÄú+?üž$_�³*@Ò)¬æqµ\¸ÝM•i§÷·"˜nAùÀ îµ9ÿ�Phá°Ì�µþàÊ3…´¤K ¤“ôü{ÏØ‡5²Óªûn™ñ¯€`™AwEÞIW3ë¹æŒ†›™a¯Û5á©öÆÃjVÖ‰óïÙÙ#™BíŠLÞwí(#ÀÉÞÛÛ£¿ôÃåvÚŸÔ°ÆÛ�ùxÃ㸫hll¬«ûM<»¹éÓ§OÀ–ÖÔÔ|L¢U¯¢ $üD€žìp²u3gÅIÙüíQKzd$ãx% øµéb`w¥8w¹ÏÍÍ™ÌT›6ö£7óBµbnÛÂ�‡¾_&å)Ø =«Ë7] Þ¥¼ÉÖ­)%¬”Ójf[„…õÙe/£3²cË9[²(T‹7¥ï¿aL…j}·Ú:C Žá¤=;6/ÇÔoß|öîaú;§<2:°[$'K"—[/Œ#™'Ú¿Q ‘’’z�þ`+ØÆ“““>¯f-Ø"EÁ`ï»ãûË%~IRì02èK 55pöÆÍÎ !ˆõšÚòòLã•íg€6DÁÄdw%÷�÷ôôX7_?±E…Œ¸2üÃP5Ë”¢UÉ–ª^‡¼’º‘‘ÀKÁâæšL3•¬Å$â¸KËóÕJºZ�µ¾ŒÇÑ=)T¶Y¿»T�Ôä„P “d/Ýç÷·¶Ü›‹’S†Þ²_;:_jnd.϶NBäF‘3(%#ë-'¬zFYúẫãzºKkl}-KŠò‹­Æ5‚�$@ L• 1z Pt�¢Âˆ‰��JޱqWÿm³#­ZR6Y ½¶‡­‚˜+¤M˜&LbX‹ÇóþbuoP9<’"Zeƒ&¥¼d¶Di"l�,N”&¤Áe)†ýn¦GÖݶ¤º“t‚ ¥?Í6‘“:‹÷ñÅø£…/3Û¸EÉ¢ãÏ»јÝÐⳇ[[aK!!GýÊÞ!�PËV¯áó:�Û!\¢Ì|±± ‘=íK§ªC-<<>÷Q�Ÿ»C~iTTTš÷ƒkã*Œ¹™`jà‡tV¼Ѐêòòòš›râµW5¼®·žR”÷÷S˜ ÅMM)ù6Ømô!ðßýÔ5j**ä7/ÅwÅû®ÛûÉskTy]�—vs1g hÊ'''W¢œÓ½ÑäñtZn›XOÙù.±*CéüK€º~w:,Aõ̳á¨çˆÉt4[¢Yŧù^´£³s0•»6'Çðý¡'pû" “ÀbЂ3Ù]ÖJA™€5eœî©\6˜lO ϯOE÷‡ �é'½ �Î2É›+n¥|7�é;ž‡óõ:'ñ€†A§™Àå¸;”Ê Ëÿpµè×/_êpGWWø÷“½!ǯîaŽ8¬530?ׯŠgLÂ$é{¡™SÊsuSsÅË)y¿è‹E¦$§‘£ L©+|Õ‘Ï:siþQ­Œjîs¼ îW·ÔsÔî}ã óúÓžßRpCΫf¾×iæ·¯É9sP„ Õ¢Sá·&ÊÞuá+õ ž7ª+ÐÁ[ªWUC'>¿Ìù…=d`M¾e¸Þ‹ÉdÊ¾Ž¦D¬"ÄØu ´!|Þ°ó†iÂô„]ÑÏJ<‚P/™š-†­?KÀo3D+ÁŒ•Ôm‚KJÛ7�F*Ç/ ÆtåS›IMFU¾vJõ d[WY'RG‘f¬8 #:,¶È_ƒŸplÝ” •´(SX~‘tHØ:dLUif ¦Ù`\]A6¿€V5�…#� gE•Œ­RW Ì™SÀ!£€®VÁ6IûMãtWžI‰¦d\Tb¦�eÓUTž$”Ênþ9 ’ÐËÞ íÀóºn¶»‹ÀVY—/£¢Jdd¤|ÁY}sÝ^iãÃEmËS=ä»ëÓ¹Zë'áÐr³K)Êâ~aѼñšÀã×F¼Î¢ÇéàãýÒãýó°ÇÍN^©ôèè( wƒA½ÃÃ[µ4:Íwiî‡3Þmüÿbj,5€˜à)œöþé_lç£eøL0ÉdÒîÚø¿Ó¸÷ÓÖÂm�¥N˜‘f~ûöíãÍú±åÕEüºWË݉DÖHÂׯ Ë”Õꩱ±hˆˆ¿Éù¸«ÒbfbÂŒÌÎîds0\`S\Fn ó?ò03Ÿ*æ ¦ÛäbÖü©’5`n÷D?{öÌûn�€ÿf›8LؾÞgk*u�ðR|}wà‡‰­eéÐÚ–H±¤¸Ê‰7ÓI�˵rj"ˆƒ‹² öJ†|_áœ$ØÇŽ~NS{7:ÑŒb–5_§h‚ ¾SÜj-\÷ÇzÎp•suŠ!wãKMg æ“|DŠT 7ÕmÕï3ÂǦöGóÊvïÍ'�*:óÑÜ÷ÜÓ�“kÍûöЬòd7gÏL#½NwaÄ£jY19ÍâÉÎá/Y-5århvqx­šÔ9“•…Õ°ÙâY±ÕÆ!Ÿm´•KÁ;@¡·S±«Ï²}•Á£¬ñU EAq;.™]0¥¼´¸Nܘ,Œ�BÚ]h—U×\œˆd?¸ˆí٭ň?0)�’EMLH…€95É­ê&g+*ÌRg¤"AÍÖå¦ú“ðjÁ?uõ”ãP ffÞÚ]ªtƒIê˜ iÈø*ê&{äcê?–)Uó0~!© ¨{8ÊAøxÄ‚¨Xéiû¾�4x*à$½Ë8æDÒe.oŸ­ãÕ7&�Ýn¨”Ök“K�‚_£Dª&&a'*-µv‘fÑ¥áõ(þ¬¦?‚\jâÛUF]0�³ÃLÔ¿eò!+(MĪë�"»š YyÙk~üx„pâ3$œèÓ¼ø%KUÑÒ(¨c0G gÀ4©ÉWWÍã&ªy+k-V²¾Wœ¤y�¥56É­rßä¶7šßƒ€òm:åÛ©ÄsŸ¹�_”ÈHV”‘ñdk¬ÜÚììl€“=™8�ÎG^{%µûN· Ž{À'ÀçÈ9·Ö×ç�S®r9^�×ñrM€—Iá8¾ÞJ÷>£bc7vwwWìéÛ˜�~š°˜O'²˜"{ûøòåKUš¸ßxA™åÙ  Ÿ]]´³»GËû~OÇÙÉI:�aÐ#6â>MÔ. =F¦¤ÜÝ.=¦òÝýj÷ƒÅà;û)FÅÄÜ6sÝþ™Áj>i±Ôì™�8@wº9è¾â‡ñTÝý°Þþñüi.ÆZEr¤ÊÂI¾,//¾ ËRÞX›—”ü´cÜm[«±Pp­gdtŠ <ýËzH¡š›˜X}Ó¹:«|#pS°³3±�SêÝw­PúÆáë.üŸÙ$búR G>Í5ÚùÒ0�é÷¸…⃴T”””Ô¢9³}êúG^¯qÎ ‹Ï÷¦0ÐÑrå]!¦Óí�hǦõIQQ«ÕÕ™™‹«år™…–*žGH4ïªÝ õ$[®vÊ& ßÅæ^5­VDE}�»þ u´J•‹-eÂ$¢ ,_A©ahb±sО9�zkdÒ×׬,¶"Ž3�ÁmÛΆ†1!köAMM-‘L$‡žrvQƒ²Èœ�t³XGGµŽ’~Q]»ï'Æ|+»¯G”ÕF¢TwR®IT‰JƒÄx’o‚ż¬ò¬^`rrÚd=0�ææ]42þHh”•p‘š,¸�¬R®s-liÆIf{aÏ Esd7$Lw؉¦œ˜yD-œñ5 NR¢tóÖ ¸ôV%EÔ]L,$1�U¬‡.R —�lÆ:9‰f@Ÿ�pðOÚý[�xxàé´ÿRi-.1ÈÐæŠò¤ ÎTn�Éð§2e‹EçJ&"ca]÷’§Ãõ@ˆˆˆî2~ZÕ"Œ­¡�Ä p_#@�H/)))’¦NCEejl¬ÐøCCCÇòd–"‰±:«UiJ/Ú]îϧdÒù+öù^ãus¹è>|?sxx¨¢íºñp{¤Se2òTÃglLL.“væ"˜Pü¢Qeد!±'½¤¨¬Y]U`ÑûÀvDî3Yi¾®wî�œ]…©ä\p—n5c72,UM‹Téì2Îzw§WiÒ?³ž’�A7)_:ƒoAEIMÝ'g?áשaL e“zý¹ò݃Œ,â+1“Qƒô¯”ü]t©û{å3ªSð*,tŒgËáÂq�u¹Zau^Ñ)>Ä™pH‘’hÔµ5ç©/ÅÅÊïLÃU‘(qXp…sû0Azër•¤Ê•[ ”dl¤þ%e–¤  –ÉZ¡ý×)b®¹ŽÖ>R±I[î*ä…W°èZ>Súò@jâK!À�»h½BAA¢¸±™qÛU7Dɱ�ŠE�^}IŒéVܼ¹Q~¨ÿ9�½xF¢(e)xÝÊ»«„U€NY0ÂÖŒ C öušûꪖM¨¼½}ê©™hT¦ºL›)².ŒÏ˜@]VG¥Ž›ÁXœ9]ùg y¹VZЗŽd- äq}°@ãàÒ«îRÍöˆAO¶Ì2ÕøÄz±FVt®aG`àúÛ¢I¸¬Ö꾪ѳ Ÿ!;¨&*ydaðÁM$�[ù!y:öö™“a6ÉüâØýV{c …<“æ! G.--­…ÕÎ�kÚ‚‚À±l÷¼\Ø2c»ƒ‘ÞÖ)D‘'�êv:Èî}¹à�Çå°ýóx­[Çó|B¢9 Fttôšªªy»~Ú;õîCOøÖ¼>Áøc$ ^^^à™HëÚñj•F´j¾ÅN®×ñOµeø®t³°[ [IHÖ×{£}Ü]njÓæ–#ÿ¸÷©?S(äá8ÂÛb¡á¼~+ív5„Þdƒ/MóõiŠHWö‚êw¥”ÈôCõfqÜ–\’´ÀÊ*³~VsöYVóyº0Æ ³B¿�ë·íž$‰‹Ör¶`·¾RMKX ‚�#´O{ ú±æšRÑÒ+L•†¡GküÜ@`!„FøÑ³¦Rrä>u–\Ù�”�ÌREƒD9\!ºàÆÈÞØ½¼­”ܧŒTÞå#¥�¤ò5^×a®ÜúÐöñDجU»ô[ÿ™ò=ôØwcâ¾³ ¡qE%ÍëÁËïâo‹–š?dE †ì¼ekEs{�¤b»�5^3z?W¹•GJ½JLú‘[ý¿�¹2á�k>‡É·zÛ&É. ºQ«yíg訨,ÆC)ƒÉìG3•KQÏúúõWtú�ÁjG1�Y´'À¡î–VVVFFF®¯¯Ÿ {ÀÖi~|p' (p¨sÄâçö¸ú5_o�å¯ö]· �͜߆Ÿ�@ æÛCë¥æ�F²Þ �Ib^Ïö¬ìnOç‘K—¨à‰~~A�z� ‡êŸn2ðûKJJ¤Äʼî×ÚÒUej•¹¥¥V³Õ‡—�'€Š4Ä- \ÿðƒ½ƒå·Y†*=‚Ð%첡î5X/;ù. BÁ�üšY8ºŠZ´?g2~hƈ͚ØàÔa´ï\””Z”ý�PɬG$@ßÊ¡{³²/+óöåóÏŸ¤´Ý–ÕI”I û¨÷’E�ysí†yK”púà(¯]gìü{êxÙ½ë¸Y�Ï ü«f,H@ Ò‚¦ï_úiT p$Á7£Å«Ü_ÉÉÄOÍK`JXÉ<[¿¥mé�‘#-©ðÍ+QÁÈ ̪ZmQÕ¹rAŠ  ,›þ/ÊéuHE» ‡S³Fhç�Ëô…¦tÅËò§“]—ƒsqÔF>õeÜ€�DHÙS+RîÎ¥ì˜1Œ��àÔçÊšYT"zk·Ö`•È+=Úë–ó°)i¥Î™|óU­Å  °&�>"�£&!ó‰\½&Zcó¹^-6ÎDJ c¨ØV¬ÎÌmNÔ}¼×M¦†w\ïJ)¸Pö¼Õý9æñ ÷Ãéã„¥Ëã/þ÷†ô¤ttÊ·:xž¶²ñöÓ!-%7Ë=øÏÞ> ^*~ú…ln0ïýx�††Vi4¸J0”ÄJMAAÑëxÿ†ç¸Åûvn “ŠŠ ;{ûZ‹™“"�{*èËZ¥BnL|ÞHô§é§æy¼â{”9¿jê�Œß?è|ravb,ÔþóÑ‚ƒöÙ³öXiø>Y}§au Ð’–e¶üNúÃY^||ddÛ°�2êž?™dÂróûªn¾×_Ås`ÑiLÌ̸vy¹äM€…Åi»ÚñßââNé¯`ÑáêƒL)Œ_ê=�ÀèCðe“Vmô–^HS—Ÿy¦óÜ_2‰eçêø³„e#—äµr±j¹^ç'#çÇ©Hbÿ2WÜ:+û2¹/ØQRÍéèzûiÊ£)Sc£%;Ô’‹úXÜPúàÞæT¢ØÛ)@‡oÃ+-ÆBò«ªM ;¯7œ�Åõ™Ü–²$RÃT5ÌúƒÙ0¯™H#g\M‘À–#¬ ÄñyaÜ}Θ³ù$äçb1XqeJÞKèeÚáÅÆ_q3ôž×ûËon¼_óp»�ž-u+¾ô³T �/Ha2ìHÐöb¦««ëÙ°tÏõÅœµ³Ž)V)åsã%! é¼±›ï4ælÉôÎJ{´5ˆ#†ýM‹˜PPË]]l=áT¸1?¡ æ9oé¥Vž\y¸á‡‡V� ‹Oa$Åò®üѽ׮s|©j-�‘YäÆ/¥R¹]sÅ�öðˆì_9ÒD€ŸÞýD½óäú+REJ¦ñ¨‘Eûùûk»É`¾rƒ,Z°ý—�Š=7¼§4¥:¤ï7»…q3¦3o P6Rˆ_ é¼4·ïÊé h€€6´�ûÌJÅrg¿ÜQ½ð+¬œ„oòxrFÓü÷ñPŸl%âbTì°Š’ŸCAµÊ6UZízˆˆ×;g]ÝeàÛï›~ûÝV\‡Dm€Zë�WÊéPáíÿ‘ôÙ]úÿ«½ôµþ|Õl”Ná(4'€5D²<å±[k«ªN›¨¼²Qcø[ÂPp¶Åûñ� =’£ƒÃþR‹·âÞ³ºç˜ÒÁ>U×Ö¢<€ð¨K­‡û's˜®ÿê�üdÞ¦›ÀãÊôX+�Áa³Ü:=ùbŠõ¯³N�V�=„ÔSÛûþœ`fåéeXÉKw]ÔÕm›+7ÚŸßÛœm�éÀü2VÞçrÆØÎþÎØo‡ø mÊ ‘U¬¾É“‡îæzØû0¶Ô�+U–ÂãñþrªLg˜!TåÆw¯�ïÿëÎc§b*Ü>À̹Z‹ à´óõÎ1�Çåø†ƒ¥'È<ˆ<í ¸X ,ŸÃ޼—>`8UóMíŠëS¬Ìk|—åñ…"•²'¡Ïî¾™hìuÙ¸äèìÜòëìÄÄ|€~o©ŸŸŸ———0yæaž§a�n Ó«WåWU�´Õr·AŸœœL¯YÇà¸;žÊí ýòeè$Î3’.ìÉ?¾ûO{2ÆÆÆRRƒ]a8y2éÍ^÷n|—i¼îlœœ®§›ƒOö–±q^D­VÃÙ÷Qq~>!¨hBLßrwòùÅëæû �Ïï¿FEÉËËŸ 0ßíª´¨7: {]0´"ä-Èí z*W*ù¢í5âÀüÝÊtêšÿøoKÓÈÓ=F=ˤóW½.½��É�"EK”åì°A™OeUW~ø!ðž}}Oø®éz39�{r|¼ n†,*LŽ<%’åbÓµ†ö¯ËKcÌÍø–;Òt‹­áôÇÃÆ£Ýs7?�``J·ÝüǽäéˆH¹ÚSÿâVv]÷Jj‹=©&>¿–œÆïJ¶n¾^t?:¾®¯®>(”M.ãïçWÏÎíz²C©à+�qÛ…B.}·ŠÑ’ð©¨UN–h8?ܹþuÁ U?ÛΊxò—„……�Ï~µ#´ÜìÛVi<\Z\Ü´§ú·\éÀ?�€ö7¦DáŠxå"´ 0Þ�`ÖH¾| ,, ^òÝî3_Æ-y?z—¾Ô¹Ï l®å\Í`:ÿ$§¬ìHAæéõs2ž¿Ú^2ü±@!ïîþI•ÉHæ‹×ð<¿Z_Í㎌·Û=Züß3§;,aåÌ€ŽŒûá|}‰Fm¸A@«ÄÄÄíç²tñÙìM–ë/+((hiI‹”Êï 0R™t>Ï¡NzÈYTûÊöΧë R‰f==ý°^9"R`)�Ç�öÁbÐ9pàJç�Æ[rX ÑP e¬8ðìåóx•×ùLhâ·o߯ÓÅÄÄê/Ý×øÚyá7ög*YYY#øên»ÈÓ\VÙ—bÄs¼o—¼�Ó!•È$T è¬;¸ÊqoÒºåž à¦$$ë ÎK¤™[éÞ|lllddF}1”€2s¿Åÿ(>j¾µƒ}å 4›\l]]¯¥ØÎ-z8-]¡XÀq’‘’R*šÈúÝ:Ah#õÍù?¡‘¡!5¿×­”˜¸%bdc±Å`bà*‹¦2vè«ã37ÈŒüÛ·oa`N.//OOOwˆßhÚxþ $ ¤ È‡@Rªˆ-ø Ï¡4Ÿý ¤ùD4˜ÊÍÎÀ`ãûÛýŒä÷Õп±_üø=�õf¹Áçøÿ½Àþ²3;Àþö¼½8{h¶- Ìš\OŸ²íLþÜóé£ ùå!Àó}3⹸¸.Ž–"þ›{®T}­çóï_>o3qØK�Ÿ[\”«‡#¶(¿ž=ňüwnõ´ëãÔÿ©[½Ž�ðÕ¾mÛ©õ ¿y~<•{–C_ëØ¿]éC¯ø”3]Ñ’¶fSÖL#²áIa ©Üê‡Æòì°Ü/R#¨¹=75jITâ}{çÊᑣѠ„�Ø:…ÐÍüRbï¢åâ0øó¡$ì¥6&ÕSÛú�ˆå:xâ TÚ]uŹ�fäбq©‰„—?‚ÞAAÝ™X,„`‘ÒFbÝ·¼U=ð§‘ʲ¨Ï5 òØ7ÙžlîÛ†Äb–“0‘2s Q’�˜L%XÑ„ã:ì”ÜœŒšöæFÚUh-­¾# ¬�VªtÁ?ì^8¤µÖ˜Õ*+±³%«‚ÊivWËEd¿?o?쬞D�WÜ“¤!Vî0Ü,…Ç_Õbœ,î/A4Š+‘ÙæN*ÈhÊWÅI:]LÚþÆ™U“™ÙP>c`Œ)�»Ø¢RC(¢/Õ)‚îE¢Ò·ñhÕÚap{ùüYºãõ£WêbXóÔ‡CÖIËqÅ9#êl�Ú0 AS9‡y»ûH[q3¨%_5WmŽÞÅ®„U(ÉM.FóGƒeõxlÌ6j}OÎô¨bŠŽ"Ù”�£ K³â»6 Ë8?˜AüËŠrn^~¬Ä¢¥YMnwOä,ZºÂøMÔ’0d”¢2ŠŸ1ý0ÊBD×Ï¡4a1 ¬J—&’ìlMÆ2KX{PGË‹Íx²¯ÓÀ”jp*†R|~èKhu’™U À3áÞ§×]p,„Z~d {;uu*|�·+—Ñ„¢Omî—ZjÚC¤“²ƒàÉ@åL¬¬LEÍŸÃdl`›CU#S-釩ZêFFUËT²7):Á¨¸±Šån¡N&|€fAàØ¤xtß&ήóøÉ£—ÜEªX8½Û¡Ê ÷Ê™â["y�}Uã?S°ñ0ÐB–aMW6팵ñl§(æN_ÿžN#T½¼¶ùҵƵ1·i±göÀ FɸT*e‡½¬ô‰«†Odå\±“©ü‘�ÎXšR_fóÈÚä`kL¥©áËÈœ�öbJY‘Õs !3'«àÑö)( •¯JYjéå³_Š“2jç×Ë1WC ;•¸˜ß’ž$p ÉÁçú�®žt±=YZfµ¶ï•[ u"!±¾™=ûû¤}+\¶íÕ“q±J{NÈÁ¨ÇžúáR8•N=ò$þÐ(æµÙ¢ƒC‡üeAA¢6†Šj’¶%‘9öíÚEf®z/Á¾UW»™nžn¾£§*%3ˆØé(Dd ˜pi™ÅÈÆ"NˆŽÞ.eA\¢8šú¤ÉFà ä2­_ߟ¥®CÛÿF8ƒ‹ýC¢X¯°°AÞ\Rd]Ò3hNM³�f˜Ü/‘¤Ï¤ðN¨tŠ"®+{«L~[{¾¨Ñåëæhñ»M)m�ï4|žbG]ËÛ.¤ VÈAî�*3ÚMÍõß›úS¡âC t�Í Øó(eOjW}f†Öëz•âPed¬[KfœÁPž*kéE:ÆLÊ;“`t4)ðà½3siðÏf\\ª<·¬DÑÃòã3B½u¹°AݺÄ2Í «†£¼£ÕËHRy³Y¥2ã±X==�êYô"µ�d?À$€¾ý9U :ŠäšU «ÏÄ?ð¬ú\à|V¶}±zUVÉÌJ<&”Há ¤>¶zw›ÔTA`1ž‡Z¬ƒ&Ùaƾ3Õ g;!iM|U5ï�º:wjG½»vóòEø8ˆ2GSû_,@a_¡›þ(òÆdvÞ×Qì•êF“[m&˜CIÙÂ!4dÓ5›éÈMØ£˜EiÔ7V¬Ü›½� "CU˜° ¹ Ú³˜guXØï4dÊ×I»Vöw©N!VIáj ¶%¬¯ü„æN¯ »w±%_ùíÅê�Cê7f§›|Û¦@HHHS™Ì¢±¦m`ZèhÅ�¾n;¿us1Ê‹+%j•žYlœ°]NAtÏ{mŸXæòu¯¶1ÒaÕ¬šŠ.Üh>÷º¥Tú8öñÄÖ_îåÂYJqã—ï†)På£EIâÁCÊ‘£—Âqñ8(öÊ”a8ôáLH#r`t÷–pÒHªXM¾_%X¾0ŽG¾/Ö2Š›H …fHL�¦KQ4è1ïÈ�›ž>{¹•E@°ÇÓ餃¹·«‹‹|»ÀBKh°z{ø&±Ûz%« #À£lìöÒŽMš¢éŠžŸXoÿ‚(—¢QÿÀIØáGšÕŽ-%°©KQãkl=H_©�ÎV\Xþ%Ò+rc¬>»Ê å-«iC•?h…H@—Á­ëøéÃ�­ZMrbíC^»‘²ƒŒbƒ™”Šçg'Ù¯ÈåH;O%ŠcÞ¥ÑÚiï‰Ç‡ò˜Õt˜]°øŠvtäv|?¯.ƒãºnj(÷?9ìg$LBÞ±)™e¦i¥æ##!E MéÊ’å�`¤ö­*ÜhÇä”+—‰zшK‚WóQ«Áy3A8¥®ñÒQ1]àlž\¦©©Ú“a¿.²smdêßÞ³\¢ÅW5ÅŠe}¢a„«ûl�²ë7zƾ Œ¶uŒFRrÁÂ…¯Ñ±Õ\µ`jE_dfÂfxû´ŸŠ \ö�'¡)òúŠn fùý–·ñÎXó—«N¢ÛTaHoظEPqíÞñ³É [Úr&§D³D¥·lü·Þ²»sy µÄ©©¥�ûi·Pu¸w?­dd†ùçè½”œ~Žÿ„Íò=h¶ù9z³ªbøh1Vo„îr‰8ÕæRFX®AïE冥:N¿={Û½rüí9ÀgݦÀïo¬Àwä1-ª"­†Vk8FÕ©>¨[>¼lÎÎ?ÉLሤªÜ‡d–í½ô¡‘J>• 2·WЬÕ'±HÓ0¾í©ùj_!]©åÞ�CØ$­ý‹:'=??ŽGÖax¦†_"ÿ÷è1x2ΧÁ(1Ö?%7=UuË`6Ù[?ó¢…bA«¢6Ãiì>|`9kÖ¥KêO”A¡Xí¡%Ì".AÛ ®Ræ~›)ÆyMY€ÕZ-’˜w`¦H/j7RÐOÌš4 ™)å�um«û¥ÅDz|wвªV%Aí××½ƒW6vΓ~ ¸÷EHI„šU¾ à c,lúùµÉL673!ð,eÃ�ôÕŒ ªXV”h/(P4.*ÚrÕðè;¬ÐhO6¦³÷ø²oЦ†©«v®ÿF õøŒëNÛbjÝZjb¼²vRº’Q%¬PpÂÀ<Ò"uMA¡CY›°PÑM*UmdÞºQË«™ 'dq£¼Í\wõÕ=òœ¢~'î·‚Yò''QЯ­"¶Þ¦T×Jf±—õ•åâf$wþ¹«/ëlHO²´TW³õ2ªOõM]¼ÜîNÓÅtŽ9b¨’“v;RíøÕLÚó¬i`Å&Ôñ­�¾-®—×¢LÁóKw{N\ø8ÃA£Ó�Dfú¢øÿ1DŽéäiõé³�þa-¡Ýïä§FHQQˆ¡ZÎ 2ô/æ<ø×ݶZZZ�é8ƒ?žÝ4_¢y{{ûôðô±Ë(Ó.cO$""úðáÃÃ×—Ÿç|ž˜NÞo$ÊêMqsC¡¡S!vT)Û”aœ¾Ö›yÕïiÌ€YÖè:†ßd'gWJûžAa¾:¬ý…·§¾ÜõcKt²:èÞ«QÏþÛHoåùqñ; µnÂ�šêSùçcmL”,–ŽT×!û­¡wpp¸×Z[[ëí·Ü6êþ`ÐâÂÄ^PpÖ1|Ž‹XOõ”€v*®òûšMØûCO©Ô¹®$+gK×÷Hµtoޤ~q¶+ß—ËlÕJ"IºýB{8:]Ðêæ–9bñxh‹\àõYì}�j[À<.sHçpTÙß–8¤±ÎÞ|©õnë{ÄIH#zبüÔ_ å=æ>if{ÿú³ŠÄ¨‚2VÈ‘ÁÚÑPuié#=ÿgë@—“T» ‚Õ4·ÛV�%þ;Ÿ˜Ý‰‹4«ß {²á«�”ñ9«ÄêÃJ=òw—^'ž‹ë{X¸5FÜ ˆ½Î“ƒå<,§¾›;?-êSo§Ëg�Õ mö%—R� ž�c;(0gâß\¹´oĶÿ8ÿëQxÁËr8«¯ƒ8r}X:*’·Ä;ðªÖIÄ9¾Ç�oÆÝß=Îy¯Ã” × ìÅîh³Aìøx¹ ¢¢É ÷Ïñsu$Û¯v@Y,6‚%¨g¸»¶ÿ#ýC 0&W ~fŽâ^—üE#ñÒ^üwH58é�[�wºµ©G‡7Œ±>"ÿÜ÷<÷¥÷ÆêÓη ä¦ëaR_ÚyÓiîºã¿ÎyPÒÙN¯5�U™ÿÒÃhüœw‡•HíuÓF·Ò;A�¿PX]�¡hxà”‡‚é]ÛúìÕTÖ90­Á-íÏïÚ†—d–©Q¤îj%t[C¼ÇØc�髱—ַަÖÈ�™nƒòÓ=Íî6²¶áþƒz¶ ñ¿Kܲ¹ð˜Ìµ_ª»õ¼‘‰Ê{å‹8"C&<Χ¹osQå|o³¼?bÌïz®Q¹±•Ú%#çT»õËšD±>œ»ˆÌ“Ó«KzYÊýØÀ€ö¶Šâ‹4NûÍé¸?Ã&Þâ*ræÝßY³áhhl„½Š F…xŽÝUédßéÖÂmnmC¤Òæ“×b„=r�UÃY†ìöÐ샸wÎÝ*gp‘‘‘QQ×�ŽŽ¶¶¶ÆDë’Vø„ÿ¬ðÿuOÓ'ãCêÕ皯²Î"ÿA�/Ÿ~O˜°¼Ç?éצ÷¥Œÿ±àÔmøïOF´JmûöêkÁÏS�K:=î»–ÿE.½'D¼ººâÁDfúéjÛW‚ØéD+BÝõÕÕ<Ÿ«ÓP¨ˆq ùƒ¾j¨ ŠGVæÏ¬ˆE>W¶tw¾ç=´5ò›—"øç‡ÿ¡g©CÏR¥�eÒŸšUøš[²|n3õç÷Ë\žw>ïîîÐ%›­ZžÊúAã¾YžÕü» dü>oËŠ,±u¼»²�uè5·+ÛIv MñO%1}=›CG?íß)ô–µs� ªqx®é„+YôK-vô.ü {ÀúÃ@âY§qðñ­Ø’égþyÍp°x®\‡<¶¹RŸþ–—÷º£)ä1¡>â²�ÏK›æ_:ÛúÚÚØØXû먴4ü ÙžaoáÃWGva—'•©×óýÃö ¿+»Ý}�¬3…IŸîéÞÖxÓ?Lc#¤óÃå/bÏ6å6È‘;‚»‰,ÛêzŸ¨»4ø.".µÃÎÿø7–ý;.†Y7´ì¡Ëìï¬íÅ_�þ‘A)VÞ�80d¡³WÖ¶e:3ýÿæã¥)ؼîtº¬ Ù†åO»µ)u‡Â¿Û�øKb/ŽGâo2©¡_„Fµ1N‡ü…¯[_ð¹ÿ2W{ ¯b%k„óï¬]–±�½ß0`C{ üsUf ÅÚia\‚.lÛjÍô?ÖNmMÿÚ{þÃŒ)Ç[X“ôŤ=~ØvÈßnñeL½Áöq_Ý ?tÒ¡ÿË">…h¢$_×íÙp¤ÜÒòh’�µ{û}æÀ 8—Ö+üÚ¸'Boý|•±¬þç÷6cRìaŽœ io_>×yjK°t¿8Ët–¸©BÀ*×�‡ì£Áø=‰d _�ŒöÌ0 c¢ÿ ´_-lô^ñôéñ±­Ë¯ÃØõ+Ä®y¬/—u²Bl&Þ¼|þ  ²Ø¬ÃòoA6Õ�ß,ïbæDàþý‹&‹.ïV9Ýk+šÒd£H•�È¿^"Âú€&Fœ{­Æ¨Ã³Ç¹Øü3N¿ ÜETíá’ûÿÔ;ð©9sÈÎûªý6‚ä¾ê¡še-íÖgmxN”Än‰cey+K›˜iõ³5YéÎñâýíeòœˆH÷Ãýí?—9&i?”?»x:×QèeÍq&7‚F­µµÖ-Ä#0÷š>´p%ôâ‘ÓCCYµÎÏÍÌ\wáXïÏןŽ(<{öLNN޾é×�P,æ+cvËYE--ˆñ0þå÷‚ã”ÖÊÊ Z)-À<×#E¸ðî8(++[-4œë<ÞÄ—•YƒÁc2üžG�ËÍÍ͇ zoÛRä x\ŽVç«Q úûa^•µW:úÂ;Ä[©óÜI4ƒ¬±æÐq˜åбq‰‰ˆmpfÿß̺ ¯Á ÇW‰¤ƒ$ëAköýY —ºçÕhJ�Øçdá˜åMe:CÓ²•ÕnSˆû‘ˆå ™+F³|n D5ää¦-*˜CE¯\aÕ\^âˆË�}.<)-P®™˜”˜œ‰{aöçȪir(ªé´ Ï—†÷ˆEÜ<,ØZàl¥²_N¯�À'ÆÌ+†*T”õ²åF˲RìÑ[8�žUÛxædÂ,&´ AÇݪ[¬ å»Oí‡Ä†Èw7ß¼ÕììLÜQ’ÖG3ÏðÜèþºM«”R÷9�ÇŠN�…X§7„Ó‰)”·ªçVŸ$)STMÚ@"·%�_ÞŽãtÀZµ�Y‡o˜§}BS´7èÿ—}“Ós)i¸â/Q•vJx_Üã5h9æC}ÏÂZÄa·:»¸0cIzªC¡s¿«R¦ÕÈÆÏÿHî}B~’שwlÌ›(�qu^æ½°¸¨]ÿy•ç}“wä±ÅÍš|_ÔrSäÂóЃÇÎR�ãž2¾÷f¢ñzÄÍííã ý£¼W˜iÿa÷Òbé0D/#>b,ÛˆÔ«Ë~”=§ìámb:÷AòÁ¨yB°ßÂm7žÅ†6 ÐND®­ˆ¼Y3v£«»#I�Eò˜ý�od}´7 ÍßF»”X’¥‹öÛ‘ðDê;ƒätd 0Ëm/€Ó†€ÁÈhkÇ“á ç¢iD+J—³’ørj ²´}-�ÈeW@ú¡sB­îm*>'Úrô¢mºÕK(ßû§Ì¬Eˆ»÷It: ;;Šœ„DÿJ{@úîJ‹Û~ywóiêQÓýÅœRýÔ†Ýý¯þ§÷Ô*Q))%cÐkßÄ‹ÐÏŒ‹Çãòýn§Ùó6Ím·àÖ‘ç»ÑÔ–öÐøC/½šV£”3_©:�‘W£}q,lãê�T?=eÅÝ¢ÇMª|�Æe� è1nH Ñh¹øauׄQQZn%H®³Ógrs›¶V—¹<#ôû¡=À�\ŽÇP�Ñ–‚èJîÒÆN¨ë¹YkRÈåkTu°vkMÕ2×g¦È $j›ZC\?(ªã–m¯�!iÀ‚ô�ê gÇÏkIƒÒaoòVÕô¹Ì£Lób4Rà|3w<>'¨·§øcªMæ�”-Šöèš0Ì* ßå1ƒ¹@”h¯óè�aC+:'ùi",úh$¯È×fž£ÁHö�9—-4�¯w|‹ðñ¢ˆüx}æƒÎÇv]:ú+Œø—z1]CÚ("1<·71V=Io¤;™»Ø—pë§NžAÕ(>Å•<øܽ‡‡àmßòr!B¶ZŒÂÜB_Œ³ æÐ_PVr0Ó'Ì��Ih¡!cãko¡}š?J€ú‘FV6áÙøÍÛ¡§ÔøH½°`¬«ƒ8hâÔ„¬_ìÄœrÓtšä¥Ã€yŸZ zåš,`GU5ζ/²ýêÞS�â¥:Û5s�[õA™Ê™ý–‡½–§着¦«Õ :Íü»³É�¥ÛÅKP¤( zÑ,C¬ø„ytàP¯¹ÚéÓI?Îú”„Ÿ9ŸtC^yáå~O¨^pfØæ·'C„sK‰ÛøJ^WGt<2æ34~Þ˜ÖðNw=`ß]_Ë;­~ ÒÑ›².ªe§äÄ 5Ãíh´¸Ã�‚òÐÖ6P,ÄÖÊ‘ˆÄT»åª¢A*oçæë%0¥acwì ªçŒX)¡ •»E+÷åÜÌånbœÄ¥I§6M/šªy ·0¤WŸ9ôÝçîÖè/^Yx,¼ e% àži C†•R?W,]TD°k;ë4÷ÍÊ¥æU¡wôï8ž�Γyûa$9™á9ë­ê/â9\Ž»ã—Í—¼õ©sµÖÖvk‡Î-· �å›Ö›ÖÍÛŒïñ½RN %Ϫ¶x¦øwó ”ðh¨Ë Ù/«‡¯ôLÍXK4>W¦¾™ÌÖ¤Â> K¡»’®²Ø…¾ÂËÙöñ³Q…NÖM‰Ijc^’ZÒÕ¾‹VÅ'Ý�6šY·r�&†ørÈnk+V˜4÷ç ã|ª13Mw1·Z`þb�€v�|IÉ`áäa7Zœ_ðF¶r�(¢/·Ï· �wxÝ"\á!õ_­1O/vwiš’ã†F˜»ßÉëéMëÈö5¢½Êøš†�—¢ÆýFZåk ÃBVVaÁégÑñ9¼{OËÙÆøÂÊÖCQM³j�mØB±¸¡ŸÀjй�Yµm$¯â×±XeŸŸ°PÜ’Y#ûsµG}±Ô±—K}â9£×§[ñññsž!�«ƒÉìK®[©Ä"እ%Öž{[ü�® ˜w“µÍJÚO‰÷^W+çN7(2<·û•sn¸²í‚‘îÌöki!…#Ÿéœ™Úù>Nø‡[õÇÐ)h1U—ð:ÝK’]ìNj= ÏnÚ9[óú¼€j=Ìã5PL�Ûãií ³‹ç »|6q,ÿŠVÜZ[à6G¥Ô×dc¬ èC(:‘ÙG‹Ü{DAþ¦ÊÖ?F)%#«ÅxKlÝÍqW c±DÔ>]�™+�…€½<%X?Ô3MAkB£’+yÍw�ˆÌ¸ ²ˆ•Z{p˜c6Ç}>©ŽNW;}[ ÎÍÇì§nFÂúõ–•�}îà‚à~[DKKK‰·êé�åOéà:w«æžæg÷\>¨]*타Ïî?·ôPÓ©GI}Êÿxê}à�‰�}3ßìЂðlwæ|-…”oÿx`ºP ,¡ÎæÆ‚EÁ¹R“)²¯·…0¤ ±ÀµtЊ0sþÇÌXt(²‡<º(=:F-!,È­2œ"^ü—¹O{‡GÔxB(.?ûJº˜88Fƒ‡›«Í9¼ÑívxF÷Gí4ÜÓá’4"Æö-�}^X�Ôà12’Xb}�IÛ¬é¼^²c k•FÌqÈJu'Æ”‘ÑøÌ~ÒÕY(�,g­�™y¹• ‡‹¶Újq˜±#\ë‡Ìˆ‘ßQuz°#“¯B2Bv aฟq�:¸õÙ+=‡jm—²Ä9¦ —”¾ö÷ø¸â`9-hYܶrÈ�ƒKÀOÿµ¢s׿Òú>²ØÿˆW/Ò2(õb°íã'0#U¦œýst[7Pa:LàÏSpM4Ø·ó[EÛDÕédô+.ñȨh&U)4š9F�å¼zó÷'*[§¬“ñ„æj”ó4ÞH…ÂK"#åUž7BϪោÑmaùI/q2f6ƈƒ;ÔºÞZϯbkß‹.0î÷ÉøÎK§S õïZ`·�¼h-͘ÚËËË´fŠ7?€co»ý3crrrffÆûaË»TóTæñLæt; VØ´ËMô8êÜÓQyªõ¶QKÓÿ°NÎ|{¯¯¯¯R¦½Ðè\Ö¦‹I@Ïñ”õþ¨êU¢HõBx}þTT>çIû{<&x<öÂ=Ê”óÙ(ª«©! 1&ZáŽ4××.º…j{žOXêü©X衤㥡YYQaw{q �a³7I+‡*•Ûè0Û£X¨ÉìÖ›§®©ð2þ¯¶\säë­—øü?&=µC¦“öÏÞÿb8%�*g软ûeø®×µ5h“ŠðÊKÀIþ Ý õ/8ÍÄ`ÎÞû(Z†ÏõþÆÑê}j)îþæeaå~ãþ”õ˜ŒÖ¶ÀçS¼ì\…Ο˟-e¼�>¿x*ûö�Vêï£-ˆçÿ–rªV „ý5ŸÇÏù··üO¡¥Ázåuc~­Y™ª4}ÞŽs‹L­äâ¬|àªS®‹"*Œ__ ÄÒëo�œpAJJj 0Þw–ålïoÎssÉÎþ"Q>„Îu¬¬¬ Ž{»E×^†††y!_ºª**¢†·Ê´!nÀjr^Z¹Ÿ-¤]ÿY‚oŒÀ8ä ÆÇÇ«Œ‡Órss+Xc¯“^rêß-GÞ4Ö×?S–âb¦°]ý?^Ì©<´gY¦®ÁüÖ×A¸žusãã¾ó°s‡ –VO-Nðès+ô/®±×Ó&ˆ¿E°(_@2|útãsô­ûƶÆÃé\„ð/ÞP C¯œâu”^yC(Ï0ù•úüš-m×”S¶pˆ#•õ1íåqŸ&pG|ŠÝFä«�m‰í¿‘à·%<éööö•wÀú¢‡�Îü@œ—Ê—z|Æ¿‡T±>´ØWž»1b;ôý ¯å»âì…Æ?Xâ[ÍI ‚+™1çèæ‡åÖ\…eK¥Ê_òçòaõeñü†Ú0]ahc`ó¯N¥‡ÊÐËaéV9©ƒS"i"‰cßÉkI t£ÏÐêyòêQ“} ýÏÊ}û¨´ñÙ=å¤oã¬ñ ú™Å'ò‘òsæ?”ðž˜z‰S,�ºtüÃJÙ1À2qØ/Õþ{äß+ÙŒ>Ý»`~JU:•q[øCZŸ„sU­óúŸMKkÜ� ÿBl{r„èÂN&T�µk ޱo©âÚƒ¶Ÿ€íF_ì­6á‚�.| ›^ýŸÓ§Qkµs~“J‰´Ì§ª­½ØèlmxVR |H+þ¿)½úæT˜ènhwñ¼½èë &#ð<‹$ûC=Š’hrXºµ”Ƴ¹¬î¿)¡¿øõÝvVÄ!×8Ö)ço‰%éd¢ån^Ëõ«}�¢¦p†,`_ªø/Ú ÐYWØû½(Vx� ëž-Üž›Ÿ×´Ï·W‚ú;7—m%è…°þ�*Ym cÿŸ!u°�j†V ¯8ïãì­MþV/ü&׫rgoÍyI…l·J»¥­; Úò}N‘Ï­!Å�zÌÚpàZò{)–?æÉR¬#j„?‹©-((¨OúÛ §Z·‘Ú¯".wva�¿ Þ%Þ¸Q›Þ÷öÃáZ¬ µÒªÐ™ßB.Õ ÕaîfÍ_t9L,¼.Vì®c>Ž»§¹¿vèŸÈ\�X­f »õÓ®'²Qmb˜]‘jJSê¥õºyR/YyìÁ�¿¶a?¦W4TªÌû)š˜-nh°nÖÛ¹nh|Ò2�†Ò<"þ‹Ž¿QܬÈ? :ü!X¨ÍN¿ù§WÅqÜÉ7 ?ëvï-Ùy—¹þÌûÃ,ÇKÔoÇÎá§§þ2¡ [l°ûÂÊ÷á?Üòâþ³‡aè7ï^Fúâô?¼å_Üï·È•¿—?ùGI’­»\HÐCž^acùzoÆöß/Þ‘Æ÷+5£½\i;Ð�"fÔ.Vý±Sì”üÙ݆ÔÂ÷ŸÿFö©òD_mº×ÍŽç"qÖ‘õzzà:á.idÆÍ²áVsPx.ÚýñWÓå¢;»Õüt_ßíå‘÷q'³n„†ª#OÇ»IWÖ))¦P,„Â.Ô}pWÎpÙ?)#�Œ|êõÒÀʪ´  W—Á„%érÉ»¥°år¶Ú<$$d˜ÿу,Z,G¾S¯<+K?O| è›^«¡ªó§è»ÎaØ”}¶œ"ïì¹Z´×øw2_Ÿž™®CÛgT >ëæ(ß„XîïVÐD’*½w~s@ýÁxÏÓðV}Î x`™N‹4¸¬ùfWYù©ZÈúù3(§ˆ(Ï ‘G9ÔÄWˆ6Àfª]nªM+�ãÕSN9ô/~†Ý¯†‘ 7 sÀíaI7Œ…/½a¸ncÛÁ\-0T‡2�§$üa¾[ ûS¶ÅˆYãøwv¹+‹šz›ó׉.ê$qcª7)Cð‚ŽŸbxö°Ã¶µ¬ÓL´j9¶l¡‘;zŽ8’©9ë¿Ôm;‡‘§µÚ*l(#·0Ø{¹]0Ñ‹wJ^<|)º)eUTÆ9‡»õÅO¯U'–®Øß©#%Y!”bA9¥Ê›ž{/=Z®�óçÄÆòÒ?vó>î$Ç´ ¦ÜÎ=´F•/±O–”¨bãœuVu+?šЋKJ¥%‡“¾ÒãŒ-Ÿã·\ dy»dŠ4¦†+(�lu ˜¬‘röÊhúáÛ\ׂê¡QW�¡D£þ¶K²ÓšUÆÝCÈÛzJ¹Y/Ú!FᢒBÃ2RÝÈX‘�cIGûî°Hbw)ÞKß-tŽzñ)µû{祷†ûÚaŠ4¯‡S2Vö²»uãàöaê4Á׳ïØ:œD)Ç¥k>ŒwyÕnƒÒʪْnjÎã G“1Aá��h·ÇO‰ô.‚M÷Ù-sï9—¶¯û±>‹JJ†Ë�8l¢“¹çINcˆªKßÌC‡Û… è7‹ ªN¸ªi&ü®k;fטг³ß›º¶ÀÝJõ¼ŠE‘7Úº�Ú}ñb³$FänÞtÉáA¶SÌ VC¬WìH1ceÿçä¹ ë.íhºM’Cv/'<\BzŸ¤BŒö 24²�# e¢Áÿࢠ P®Z¬i‚­¡¡r{OÀ‡ÑMýšENA¥û`®a²t’RÐ_>KÚ¿;kÙpzL3²[O[ËÀy€[Ó-¼†SƒR™)¯ãž­G†Ë1|§fä�ctjôoÁœ\ºz¦0o§X4{!ÛŸ;{üÕcñá4#Ku &eéÆü¹ËÊ ¦œÇ£5�ÇóÖ�ñN´Ù1Å«¶Gí»_>�ÇîÄܲû€ÔRx§O‹‹i)‰R\ÐÊ� [Ä•®EZüj÷š’š¿ü@Mª¨ù�‡¸¶UvàÞÊ2ùx+×Ïñ0®ßvÔ5xîgcz'ÝS¸n"ü‡qÙ7Ї sõž~s“F¤R[ÐŲbÆ,¿™ôâEËJkÃ*r.±OÐø“xÑm§ÉíˆgN¼c‚Ey�µHÄÌé²(»R‘ÔþõšžîmEXª  $w»€0çGÛ²�¡pAmɹ]~Sþ�r“ÞD±%f–ñŒ"®ÉŸrCùêEƒÛ§ ÄJØÓ/ªyŸIA–"é–³8b\pdzŠqøÎéœ!C‹¦ TÑÚiÿ�×zùx"ô F(áŽ×JâàÕ$:�¢¤@™[† ÂY.{•)u,õ�RL’LÇ%σUù�ý¡reºýà)7TÑÔ’ÑHL}gG5“Ã…jî°Ðu©¶–Ù(k’ ŽÞ{B2�Ͼ3ÑCqE¶¬?HÉ »+=ùœ_«lmÊ“@±Pù´}÷~|¸¾¾øž¤v…÷£WH§¼6 £«ÒÄI’)ž{î—wÏÎÍ=Iš>§—®6è½Õ 1�re)𝭠'Â~†LU�½š‡=¶ã)ªÝVY2Ü|í§ÝXE2¡®‚:¦�U†À•êC7‰z†‹¶¿2r‚wý‡˜ÂÖM¥ü ž¼ÂÚ[-?æ—Çøµþ“†D¬tï^–}XèçÆþ4;Ó³eõùÃÜe;—¯|>}¢ZMUEÜc—ÿ yænœß�÷¥eZ†|W/ÀÔéq€Oçbesê²DÈȯû¸Æ:*ÏSˆ5öàʉ?-—.CmÍy¡ýÜ©î/Oð0&%>5ý<\¼$7\ÑW ËZ*”·å¸q:bϬf¾•1x˜Ñ¬€�dl¶À@rc¥ÄCornÎÏøÝ B½$jÈcÀXvÏAOç/à±%[d¦9\܈-‡E‹>·¾]£ PCÂS5êå6Ÿ�ZZZZ¿L»W~ÇÌÃ1Kø<.ß©Î�#Ås˜°Ãr`„³ÊèyëÙQÎeŒî�®c†‡¯è o,μMx‘àn†SÞ¾ôÁÏ3ä\K'&!%¿G‚ŒÍ4ôªqºŽîx”x÷`L��ÏMv/ž³ÎÑAû˜Þ~mï�JÙäÒÌÐ]–$Dn²ýÌÃ<§±eB^¶é°Þßœî9ŒƒÜy*>;~sà±)¥ÙæÉ¶pNu?ã$kp¸»ÙÉ‘dþÜ·Y™Y‡«gÞ�;­r'»Þž%eeYCC�äüðzÄ•×+~ѹ}¦$éO,ÖÛ3Q h§šžlID¥ížy3öY©Øúé—ƒåÚx†Q“vAý´8‡èП´2]#Vë� ê“’P‡w])¼P|o,ªÄÇš)3Jì='Q}y²FMUA}¤?N=R¦L4gÀê|(€¼´ÍxVì�åMØ€I 3™“e>Lr'>Wð4³º0Æ­s–¶ïª“�)2&±±n¶iVoŒÔøåuÚ´_HùDGé?ÈÝ3$Q²Ô‹8V'²¾R*!Q½ I¬ ñÔ6v¡¹©-q{§œr‡W.‘Ê‘­‘ÌËË?>�%5½Øé~!9ê* cÅíf¶�‰É¼FÃ÷׸^x`ÇúÙ@T¯•RtŒY?ûó-tcPÓPÓGzÖþ[�×Bd�a™ #pHbWš‹¹Ä™ÕýhZeµ«Ïõê´Lm¡—œóÍuÂÿø-ÎêÈIÓ ƒ!ðYÛkßö‰x:À€¤Ä…'�î-D î̤˜lù¡W®(2�ét[�Š ë·Úïweòx¶‹¼ùóÛ£b Ò0 �V8yÕój»W|¸¿Â�Iâ ±bGØ\ì*_o¡Ç­sLÑ9nûæØüä ¡éGÎbR˜÷„ŽÊ¬6§øuì"¹äÙt$§™táÚ]‰Ü_º)[kž=Y ¥;%Ë“CU¢KGM)ÄkqãT:+§ò¨»‡cyòåE˰ĥI›{\l9hÝ‹ÐË&›½¸ÿXµZ˜)4ä6€tÆI*žc¾·ÇB¿ÅnêSé”$¨¿“õgHß1˜ñ¿ ýD �åå/Ä£Sx-ñ°ò~3±w%g¸Æ¢Ú1rñ;·Û¯sF{,òj*Ec I˜xp›°¡òÖŽ 5W.k�A×iM/Ì¥˜nôµ­ËJç6®xÇ^é)¸i†KY‹«§¸ðbÒ£š2:7.há [�Åž¿žzÿ9†ö¢mž5’„$÷K³�0ß 9¼#|cCÑðÀy°·†Û8;°7"©Ï±Íw�¶ìrœÌYË„}s®&]Šç:&y¸ \ xïN ÍÖˆ=^}@ômh)9œ«=ÚÓytŒ¸8\hL=?€>y÷3GÞÔÐPµÓ‚MƒgZ¹é|R|¶[TfuÛÁfûÑÃevkîëO࿊Tè! cd–––n/�¢å,ŒÌ»Üá"aã½jË[¯« ᬫá4^%µøƒ‹'ˆè“HbBJš:×8»ïOX((G,8Eª‰ññ³‰2/¥¢ íf�ë¾Xj%™Õ‰½sÀr2ªl¹]8 î\u X\€‚ütUú|y³LÍÊ—ša  ¾?½õFÓë>ÌÚcm¶Ú|ªT‹šÞu· ïé]˼—óöÃÀÇ=å‡ÍKÙ)uÕ ÿ×k¼„sÑîOæúÞTYÿ‹„Úº‡š}Œ'ÔÖ´qþsi*Ýs((|qžc°á¡çÝq÷Ñ#ß„Q‘\`N¥ÞÁ~¿ 6d¢IáÉBæÐsÅã©\C_A9{9`j`h»|Ô¸øǪ4nvþ`t2×G^ºÄH¢¬ÆógûÛöÓióîË­O~ …?÷þJ�$‹î­SÚ5>\ÿ…Ë t þ…²0­ÿâoÿâhßÿ'_ø?µaÿÉÅÇÆúÿó“Øéä)PUJ5]åü�Ô<ŠŸ€í”£Ùú¢|�ïå¶[Y„?Z�n~µ#5Àwý�ÿ·›Ìÿê‹]óþ~ýtó¿ ºùx¥#±/*äöPK€W×ÆÂŠ¶g‘CH…Òð3âÐÝó©·K«ÿÇ0èÿ™v[÷�Ψ/¢ð­~s�¼2‡î«WÞFlé·>ˆ@GËiÙòlà'£y©,UlÜïÖ'1ºS¥]¶ÔŒìP³¨RSV}PË[ys¾÷‡nÔ.ºIh@-·QÇæ×ÉS¡K€3£2Tå(‚8çñ›[ÉÇìZ«R _Î=n½V&çù‚.ÓÂfy‘º+b�o<€�]^®Ó4²>3u¿ÿ +àãýêÀ€˜ó,.“w¤0À^ØŸÞ9ž#èX¬åÑŒqº¥Õb×­6;Þ.Í\Ƈ¡3Äù%ê' =W?(T´Ãtpa(à E„äx¤·wG¤ «–³¸È¿m¢T¶d5´G¹d˦b“¯äEkˆ. í]ex5ˆRÂꬦï×9VÖ SÆ—±–ó‡µá¡í(<›Tñ‡¶˜=§5¤«ó>62ià­3‚š¶…ñ»[’B…½B*AMN[¾pTM¾ÜŸ1h7:»dã³=´¾}!Ñ嵤êÜÙ²¥çàñc ÿÔÕÝy]rÁ¦c|~½~GUž0NkJzœ¸íkÍÔÒ±CN”'U‹~kÝÜ 7Gà0WÇò†gM>}>B¨âC¥ÌŸ°ÊÝ”D�„_Ò'ÂÑá±fG¥›0™_·ößO ¯ºFÂs §’±Jè�ìçwð9š/¸Šõ 絘Aí³ø}'õø (�©'£p<)EyüÁTfÌèBM�P,0ÍX,\Ö/l¤°à,MPoÂQ2aîTQØ2íoÈ:ôª�Ë‘t˜?H¿}=@ã݆³z@~¿Ý7p-Ü�§>ÄÖÓ³óe0×2ÌpKüh~?j7ºÅf£‘‚y*eÖU(}µú×ýÇ»ð–™Bôèè,í–Iv½µ]ME‹ žÕ-éÛÜÓ€3ìM|xqqi·<Ï4Ý€8yæ4F�iûBs}09%ëN“›íŽhnó,…!?È.Ä«–Þ.´JI{cüN}›Nèùû,7@´%'%w:VÆ`†uMNNH7µ t¯÷}z*ÂÓaËÍÕ~âS½gOo|¸«îÙkF§+ù5Pµdp¤±AuÁì)"ó}ÕaèW´X·‰®MåîíO|µ§ÇïÒ't> ¾,5Ôo¨9¬ÖyàTHŽ ;}.gØû2£µ?£…ìS@yú|é]œ8L*O!Ú å¦>17_9˜¼¹ˆlw”õÁÚZfh€ ïÙ5/Aâ ÆÁÍ5”( üÁS,@Ïî–ÞêzÔ•N�Œ÷´N[�Y±ÄâižžQ ý°M€ÂþJjÊÌyiug*Wr±zqm|fÊ“Åc³î3E­ Úð³oã—põ R¬þ,!öim�µ{˜çpCª}´ú#F’cû�Š<¡âÆ–*È%V_Õ~èõwP°¹ MU'4-#hk"Êasø»I%³Ê÷óiÛq©y(�{Ñš<¼.rs%âô_£š�MòU\Š3²R䪕“G6…˜Œ16_õ—K¿�φóÍU±G9`JväÓðòÙÏb¤BÆÀ\‘Våïú:dk¹ÂµÉp÷NŠb;Xµš•Y‘lsÓð×t >T9Ž×ççóÎn”g�Τê—hN£•�S|åÒÈ!fì:ÜýY6ØÞ/—L9Ñ‚4Œg›³Œð±Õp}z/éûümQ%ùA*mí$d2iÖbbÌA™dÅgm†/½QPëÖ<£õ-TXŸ.ÃSY6/¯‡Êa¾èxàû’^yŒŠ,*zitoŒ»'�û~ùÅÅE^ºWCÞD¯ë~�8ñœ¾w-ÿÐÔÚ=û#</{t5¼’Nöª©°uÙ ¥6jçÙøöÞØ5OÁÙdšW�v0kUR�Ýy@ê”æT°×âé�‘Lº½³·÷TCžŒX}ÇÀu]×aá®&]à+F$»wþ'¯ä±,»oðJX½Ö_}z½ûN%ÝþL2ãÛ©_œ«§]Žb±»wÙ—À¯îo_™íìʇ Ñ\$««�Äý‰C=³Iy[jžOéíØ:&WÓþðÞ㨩½Ø Ì·áŒÛ¿HÁ–E 9^‘íh°*v`•¶Þ³ç”TW^¥¯ÓŠŽ¼PôáÐÈÛ˜Wô=Ú�@’³"Jaq„/5¯2b,(8¶O,•ó® �½ú~¹.´ õ \ÝIÕÅeIžUq œ ÉÑížÕÂÝ ¤$$pì¤þ¼–®²uÄ. ¤»�0[´�Oç’Q²®a�jcÆú¤`êô¸tI'rd ,5Œ°9‹¤.}ÊÉqQ×ßU@¡ÍaÆVà$Ø;S'1XUM­� Ýc{BZ1­�FËc$„7Ç¾Ä õj–GÓ¤:Òš/QNe*Kð8&Æèef:¹‚S &ÀÖ]%à4Œ*­Hëz�ÕlÉ?¤õ×§ ~ˆ-ERŒZJŠôÞÁ½:H‹=5œTx]=ÿÄÛuÓ­Åç5BÜщ¥©©\�³S‰ê0Ï©$çå»xüúàÔk`úSAìP °Ša\»¦9,Ô%z{u×~%Ik–�ùd¨–©iG¶|þ2¶9cr˜ûCàNýº®Zœ¨ä ”K÷ÝüU ”8ñ»±å›W±ŒóJžÄï¦V`fTãH£ì‚(�êŒíPÙ¯žï³ï>.Öýb£äS`±L3WQÞå]ƒš ©4¼Ñ“´¨¶]µ�œÛQÜ„­þX­#gn:&•ó „‡Ù7:A–þ�"+el~þ5®\=·M5õú+UT 6}U�²F-ë:Bž[FMò”S¹cÁµ_SN‹ÂC¹ŠñQ•¤42ÒÆ*¬é˜\­ÇXÁääŸ+§ 8&Ä/ú&«Ý(<�þVË‘))›Mé@˜J4h¦®°Ÿúð*)–‡À¿@ª®r,YD.bÝ­ÿe矿Ù+£ 'MB{¯ *øJÏÐggcˆEªÐ²'b·�±‡8,Š ƒ�)m¼3^+Û° G¿Aê__ÉXdû…¢eq?3SÛõò›5¥ŽnŒd=‹r/êÉ« ѧ;pr Æy@GV–VÃn]R ÏNدÌ÷I]µº[ƒÜ _AáSÆÞW¥'ÏXcìê‚Æ2Ï. …"Ó5u�ªILãm‡á†L‰¨’0ÒQ§úZ`y:Nœ_©ë�{"…%–]…ƒžžq=õG ºÊ¨ŸðÎgì‡'4½¦¼ßIÔŽ,ÝêNX.tÙ3�¤ :¹²}ÜßW©ì= @na`æÅ+öœ(6ÊÚõUÇÃõ#N$ �ýŸÀ®úºƒz'¿ƒ„SCU'vØ”—gO.¨ÐD®'6ü:8§–cšš+`ä!ÂTa©&R5>)ÒÞ�ì.«KgkV_¨D26ˆ—˜¸×òMƒ£Ë ecŽê‹Òax;àQ!^yìTÈ‘ÍÃÜŠH¦žp‹.rm*ul.ž®JÕJœÛEJÅ!mà˜··¹XÝ&"aE˜Ñú4Û„QL!aÉ}D­,|ÖjômÝåÐÒˆðœE“Pˆ ìèÈ6YÚ×7¾ÓØî6L°L^û@õ·’o±PjA$lk˜´Â`v¿ªã{‚Ésݼ�¼¡…ûdùžSõû²îþtØ  ^þ5žÝ:¨„GcýÔU9² ;9&%MÁÒ $. w³Çþmo<Ô�ÒSñ;W¡?Û�p�ü¦·³sðÿ ~z8�÷jC®ù¶ž®v™ 9Æmžxã5ÑöÙl°´_ª\Iø6¤èˆžŽ†ô7}+/n!*\ÍÌ,ÑkçÚ°ìì*áHÕŽ;5ˆn �S+i>aú1DwÜ4\ƒ ‘!È©“ì|3ïü…¡Èò |Ïô¶Ü9dé5�Ûÿ3ìÔý0–©—eGò„~¼¾3ñMYå^E­‹M /ת:»š°ÕŠ…I/ӲɆ]¯ï7FìqšÈ„¤Ä¤­YéI‚<’œm!’ò"©T¹ÈM}&ò•€ÆŽ‘„F+h”©IE”¿®õµ'À˜¾òDªën¾ÃañpŸ­<Ñ óó¨�47—®v¯®C7Ïö±ßûÆÆ%|$ËÇò ÊŸ§™Riª÷\Mñ$T<ïcEü›áÓì¥*<˪dÑ�õpŠZÄpX?'Õú«È1sPÓHâÙ=¬®ïåÆUE£þºèh»@+4c!·ssP‹K¹o@+Ö€TÝ™›œò6¯g‹¡ßowù}ÖŒ]JJ†?*ý;±S”rQé˜è†ŠÁ¡ì«<ôÙ€õ[÷án¥‹‘’°7C`÷¼™æ”جG¶Æ.O/gç½iI*õïð{G‹1">Ío¦˜g•cߪU. ÃIÑÖ Tv>©c¥îr¶—'|K"{­ˆ�«ì;rc¯~]×BDšUÜÏír¦ÜKk›N~ìLÑ>s~-R¯*‹-#ý Iï`ª¸~¶Eð{ÖJ¼<&Ã_’4�ÈwµìÃÿpñô³ í݉¢/²¼KZåª1ÝÌÖŠœäÊíÓõñ¾Š?㟰PÎqÎýÝIä:ºÜxJ†ý7Å¥y;g/¡rú�}•¿)—¶¼X<í¨ Ébš…–±rÒ±üȉa0zó–üèkÅÈWç @Dæ4/¬8%¨�>rbŸ\�>/§aìCï/�¾/¡Az+qìW|¬Z„Ÿë¹x\ÜaGt{€]p¾ÿÊå;ßýÎ0_·2L¦@ù•ÁVÿœ6¾|.]£›ÑQ1—kÕ.ó�‡4y–¼) oêä•üÁ ÊNÃM„vÇNÒf \žy%öœrž@¼Šc/Œ+>59eª=d= m|ÀÐ5*òš-¥{UߎšGPP¦7éŠÀàÙâÅ-¼UÝlýø‰¨¯—…‡˜NäVy21�gDµ‚ƒ“¦Ù¥Êy�ô,Œ\˜˜9‹»–¶„‡«ã\2‹Ÿ«É°îËjU¦ìŒ<Ò2vž3 òÒuçîXÙ®žë6ÉævÎ8Y'èúZ:6T<|šÃ¢øZÑÉÇ1ŸAe¦£hQÐ4ì,ëßÙüÍ{‹ 1«ü¢ÌKDàú ^ý!ϱ�·µÁ¤$¼÷µqø},f2Æ ¨ˆ¤§z¡±â–¾e„opÖ¬fš=o›Î˦îLŽ!sjK‡ß(– ´¨b•••ÁrF•O�–yÊ‹n{´¿K¿Öz>a£Éu |<–\ü,PP<£òŠ4è�yR³³³gn÷5Êm"ôàë„!"�žC�ö\Ͱʯ•3ìðµ‹ýÖHǙң§(Yß Þ�‚AOÁ7((Ùø6]Ñy))©§\Çjõƒ�þø2Ízùsmˆ¶÷Õ¯ ¶ÛÆ¥ûRU+çí…ƒß(—SŽä43Wl.úí²èùAÔäî$µ±¼ù8ÌZ³Ñé`¶Ú|ƒT†÷<æéõk[iî‡õ\Ã5W?bÄãLN´• æÏNo�Ýíþ‘×,ÅÆ@ó•äi.™L—O¢êÒ;ݬr‚¢cT­ÜéÂ�#lѬ9žóEíØÅú"†¶Ë är±(Ûå ÓZñè1lù É •(?>\¶Ð·”x¬ÞÜ·›ip7h´†óôBžÂ¶m–[kXþtP:¾½L‰’ÜZ�t£Uc¯þ¡‘"ÿ†ÿ'|ä¿ù‰,‚ñæéÿbBÒàRÝ/ÿPKÒV1]Bm6…¸qSimunify-security/assets/ui-app/assets/static/other-root/images/other-root/broom.svgUT ëÆ«jëÆ«jux è‡]U]o9 |ϯöž—I}q€ÞóÝ�0_ÀmŠÖýõ�‘6.Ú$’ei—š™‡ooÏáû§óço»åt¹|ùp½^åêòúõùÞbŒ÷xb ×—§Ëi·h^Âéøò|º`Ý—ðör¼þýú}·Äƒæ€½Ç»€Ÿ‡/ûË)ü÷r>ï–¿²ów_ׯÿŸ�»åøvüüúô´„§Ýò¯ºÔdb{•X{˜3#ÆUºWÉÅÿÑ(²x«“XIaÎã©ÐÄ3M÷.»sžTÜ\RéÁ$å¶Í[ô’]ŠÕÃ*I‹õUXˆYâ‹™ëZê*|^ú*Õ¤Fª‘Ffk­Ø3ˆ¬J‡uïMzÓPGµwé)ãÂÄñŽD+Bf€³Ìñ¾s-ðî•cã+�ÚY*á&¯y�hÆq{Œb-h�^PWD0í \d„#Àäˆ� ð:¶îaÎ9â‰ëï—àåš¾D ¬½ß­jµ¥†üY:^.“R ¬¸ ãw¬`¨¿XvÂK 0€:!òN£TÜpžQ¤Ñ+�»»doLIÁ1^R$�Zêb o{c6Ü7nÊ÷`)ݦmÛ¦€òÉǯ¤À à+7üC3õÄUbË6+2íÌ#Ò[±ÎqzÎÚƒnãøCˆD#Üö<ãÎâ”�‚@ÃA-öM†DçáS´%æ þ-È'}Q[x.òÙXÈžU~Mº!Ò^•AG�L@àu°Ð¤Ó64ÊG¤ûÓ™HÉ`œ'cåþÊ™fîÒ´Ò–tÍ-©¤@ë#A7�éE¢ޱaѸֺ’"¢`!eu~Gøâ¬ºVÀ)± �.û(ÍŠ7�uë“§„#^G X îg”rg Ä[é™XÒ3Cá:�[éƒ&†31ê %úaΛ1P¸8L•Í©æmÞÎZæúÒ¼¬IJÓÍÁ{èhG·;¥dvÃÆôÞÉ� rH?>1uúîA¯qLˆaL¥Ó°ó\òæ¢ójÒŒ¸ÚèyæŒy0/Óh`LÙ¦d�¡�¬±ÉA DÌhAì ã.)èãpBÝZ(Ë�K^*…9EïëÔ¡4mÈGWU6ˆƃF€ˆº‰ÅF�©^o³g±�˜EK¥p£’Òð:’z sžj(a3Al‚iZ—E�BD‡BIÑ�ø»UZš•�´rÜø³àçðä×à W3‚töT™ Ùš·Žb­åÇrÿx÷À¤�w?PKÒV1]öÁÃ|£e’p_imunify-security/assets/ui-app/assets/static/other-root/images/other-root/dashboard-preview.pngUT ëÆ«jëÆ«jux è‡ìýW aÿŽnDd£.6z'²zïlôN¬^¢÷.z‰=ÚŠA=zDذJX%l-zïœñ¾ïïs®ÎÕ¹8ç¹agggžy¾ßï§Ì<3§­©D„O…�ˆT”åuA Ü § Œ,!]cnþÜõ†«è�Á`ì¢ÖoàãcCŸçîv>~–^¶ {7wW[.ok/[[7owŸ�»ÝÒ HE^NÏ?osÎ>Ñt:@ôÒÛ-{Þïü¸ßŒ; =/¯Z&oŒ$WÐeA#­ú�6O›Sq•_1ÐãÜ={ñ/ñ'ñî} î8ÖNý�Vé qz u~nÌ-;ù3ë!Û¿|çIbi’üTâÉÑ^}«'á ±~Ûy­Þ;CÛÞ#Þ¼Œ¸w@ÿmŸ“Háo£Ýîþïã+­û=Ôÿû†éøßj_˜@ÿÿÅÿo‹¿pùügÜ>½Ã­2mŒtòmB Ó{&\Ë(Róïv�¾®S¿¨_Eâ¬xWÄ�Ó¼°„±Rì3È×´÷ªõÅ••ªn‘Š –¼_a¨]š^Ïé<åÞ¨/BÀV=Ø™À™÷*LÓ ŠÐ%§ît/‰C¹;$>B�ômŒ–…ÑŸf ´¸é<}¤Rµ(–,÷–¡þS‰nÍø† äèõ̘9 ,Wüž<�¬?ª‡ð+'Ú3œkr�Y¬ÿ çíÚUõ •¦5l3~‰ ξb‡ g!ªKéª7è_5÷_ÜAX'x©Tê±”¨ôzÓ˜h¢RgŠŠŽÿ=~àû†Ï¯ é(}µRUa ßÙ$‡y>2…Vm2!šªig(sï7· 9e� ]£ÁGƒÄí©�Èh„°ÃßšòÎ,…j¤tÅ�ÁënKÑ?Ç€=Å»eᨈ–ûŒßx ÁÏ ¦Š x�‰R… 8ÒŠÇôxv[âÁÂTBa¾ ÊŽ9?²DHï'¶˜�å7ߥŽF£#Xo£DÉü yßLøtÎmuËU„(ÎZ`‹PÈ?eŒbâ% 9lj‚ô¾@>«ÿhŠmpÓu¾�©‡DIˆ†Ýâ.(˜­e&;(Wè>£<¯* Ÿó�®{ïÊ|6oÿ_*{eø.°ö¯Tðìîoïí´,QÓÓ–lç IÿÛÜØ–~ôÛû_ZöËÄ¢›î×r=dÿM (£<Ò� …ö~‚¡y§Ù¦¢ô¼ý’‹h ü¿Dûô†\a`Ùëùóç}V¤Ö§7B¤ QK­#§[ãj> ¯¿'AàYOº‰þ9sûNÈþ§?ÀqÃsÞ¾ýÙî·31‘QÌfŒ±”¤ÅhÉÌýøá±d±)!’C—ÁRa[9HR´æÏ&Ä»‹®‡µ¿q.[£�ÛUûŒ/6„Q$·ëF>ÍT•¤SïIº7¿Ÿ«vZú# V)Õ]öÊžó¥™îÖRÐù³÷†&ì~’>àsu�{Û�Óàt[±,´JZ$�Åqg¾Ó~´`®#à �U gff¶É XÍ÷£ \c¤"ß“¼©�ZÌ�‡�%ôáÝ¿ŸB'x}y/’U£Û“Üñj�ª6iq›k[Y±Ë×¼ßú9÷_Û®,Hõ÷£ ö¿ÿjZ$ 9â1 O×i18Erÿ{ µ Õð²0ÝãÇg{)a‰|nþâØõkL¬©~Ô_Ž«ñä‹yǬžMV„­J,œM”ƒ#xùøänj&�®B»Íkkç²Õ¯Ëe’ú¬;¯÷PôÝ;]n§bÿì]±‡øÑóÀ�È3É�uBPBü^AAA!¡h »Ñë>çßS™|Š{ýÿ¦*¹©2ms’ãGÇÅŵ,„ùûBptþÆð!mŨ’º®Ž±åšùm5íS�0ãã8{Øao³“Rݳ«�0-‰j·àË=”»ýÓ,4­tðéÑ´¥Â˜‹°ßË—­sÛjn*`•rÌÅÉ{”�ŸŸû\ÛQ³ 1±nÔþÚë[|ñáÉɶE«jÒ|˜�UE7,ìf4ìÚ;ð^ÎðŠ}aˆo_ü£&,8Âãï÷TY†‚TÓÕ&å•ÿ’ˆæ×D¨mî¸ Ý¦æïƒ¢6éþ%Jñ|MHÔÁêhBñkHñKU6vö*ê•ñ|#Ë^`Æä%༣qû5ÜY$4¢k?Š€uÕÒäIhûßj•`•Ó€‘8Þž£ãv].óˆ q)?ßÁ�ždD²¬ÿî‰D¥Ð+�Æt_¢»;{¨Ñõ��«ðךåí^ïåÁE3«ÿ®^å®þ(zv÷î]ºû�©jáÜ­²®)¢÷••04 =¾óú)�Âôa—{í;]jµº�æ Xl»ËLý¬h<¤˜#¾˜£²Ò|XºÁ • Ò{ß*–xÊ_´úµÛ |Ôß8ÞÂrQ$0€«ô«ë±[?O‘ÕÂ96¡7 ;3 ö[³M!!! þÏÀ‹ 5Ù••6^7×WPë$Å’ÊJŽø‹ã­‹Ý�q®"ë¿Ãv{îw_ÕbÖÿMV™qSâºÿ§$ #z~ÇÒ‡ŠJKh–“Âíf6ŽÜ~}ö¼:?"§K¬Ó¯*DÚv𻳥?ÉTåÎRK{¯ÎV2é4çæÇ }¿”c„ �@öÐö\{UªIæ€�“»ûèêPv�ßñYÑû×W¹99Û]Û ‚’®¤­{=ÔR‹<ô¼Ø= NcaMÐæÐã΢%ŽE-y¶ÏIŽNK+ —}ÄóÑËvvvøÑc«ª¼[M_¾|)X÷Ü¢¶’å_¬×¾ÁÀBöàœ¼pÔ¾aÆ¿ ÛFS1é"œ«Ìbgo¯Vš6çvØ ü /²hv¨ÆÚ‡Ý <ñVœ™ñ}Vë>³[¾˜¤õI0)î"�-ø¤Ú¶js$&%e¢mÃ�`QÚ­¦šlézN¾¾úi,ísÛ¢õ«z?ÛtåBt93u+ô„s5J�?ƒVu?¬!fQo8âS•ßÂŒaå˜'`¸ Uj)SµoÙkrzzzrrÒ|²ñzsÓE”fÊ©éÐì [[¼!P·!@€z^¼±�pMSK«P&ìúï@:0ŠRRRGŒñVÒ…)¨¥†††¨7mmâ }ΜHàüÙ‰}V„½þ�æé@`Æ€|uqºm9ó-îäãGéééÆÕÈ%Ñö9ÍçÅléÊ,iêl�ø²Õóê aB5·ÉMÓÈ)(D«üc9¿zRmØ5dÓ¦±Ý„Yø¼±¾žæ|Þä&5Š3­ˆ\ö^¹2 MŸ×p²¸Ä”""V²¸ �N¿‘Œk“ÈÕ€YÖ©u‹ëý¬Ñ<1ïËÓ=žàE‚>«½^™ÍÍÍËñ¬®Cú›=ú4–:X;Ã�’�Ðç…µµµ¼ïI–ocbbV îµzw_m¹«•êuƒ³ÕWJR¤�o[ëùô  1ÇølæÁM‹)w¡øËJSîZ‹îyáéëéð»÷½Z•iäR/ ´ï­Êñgÿjržv=Èq^¢ö_9=e”¯š<><”<ùåí<]S]Qª»~¸Ži÷Ý9÷áÏ~Ÿ^£@”sÛæ(Ÿ. oL‘Ë(º ÍûÂRïy`GEÏbÍÃ®ŽŠŠUÒhˆ•üüNÎ�6^Š›UèU&©Ëëä\g�ªíí€�b9 «©éh1–¾ �_n"ý¢™ª�—ûh÷î«fìVèb4e? %sú;R–�A%M¿Ê èÍC-I9çÒ˜½–î+Wò4ÛV‚.èPžIII<»_Ô`U™í :°MBRR]Ëië*lôůûbŽU 9D¤Z:~±Ó}+siØfãŒÿZÿ±ç…a«—íÑKRxªò_v™³��tvƒj㣵’”ã““n€„²Õcˆ9æÚ^nðtü> ¬ ß;<<ªÞok6S™ÅY][¶Y‡Z©eSCª–J_Ÿ.™rÛ·`wZW Rd®ý�œ€ØÐ‹û|hhðõ\ ÉD/GÞ'¡õx±ÐrLÇø³NEEUr<“D-2Îa “lýfE¤{Ì©iTêäW½-Ú<ôl™Y)Y9íðò`”Ç¢ë²4Ë\<ôòs12%™sR¢ú�ñ�ГözX¡d€×êH¾R ]©aïO—fWl³Ôþwf5$,œ†�jzÌÌKJÉ…¾S3Ô!ÑÁ†ú½‚UÅúí@’H“[OÆÞHAÇø³$Óº‹k¤f¢A¿‚ ±>`Ú£Aóú¸WVzÁž>•×±I¶†Àã�¢5/y] lÈ0ÙšûšóIå×x¤,ü½ Èåëà×T–Ðá4ˆ¼òËá²ù×/†ô á€VøÊk¨†ûìB{ £7c­¢Zá–3ZçÆi,|„½õMµÊ'eCÛliïw% <çˆäœY¶ç;%Èâ~|·UÓɰá?ë¹O/(,ÌmÒ¼9uBcˆ,�N¬s„ö®ùˆçTýX÷ ìì—õ”«7Œ†[ÚØ¼ØIZ9÷›gÞ€Meó' F(!NøÊÊJÕE|ñéJ®;^$`D^N›y�KúD...ª³5Ÿí‹õ`¿|ù@™»;®{!iu0~4�[µÝÒâ⪘ŠÃ2Å’º’’^€/£ÀŒ%%%Ý©§ÐJ(FrÇXê!4XȆ‡‡‹9êa¹£«½‹¼kcù8 ÷•ºu+~¬=¥!Ž…‰Ù 3ÚØÙ­LX„,%‰xµÒŒРÆÝûºÈÛËK"sùiÌA�œ5_3T’]Ö¨äðððììÇmñ÷ú߯WWW…ËþÎ40LCóþγR]¶t0cd�l•›"Sª€bBfª*”Œ}‚=UÑ•¤KQ,Ñ’:š`M1¬3”ôße 2M¶6Ò‡Dùß¡ÐË^jjjÖÖÌmoéÞË•ÀÐìšyïêjŠ9 K›767KþxF—+ìˆÜڮ󇇂I±Ï+ôŠ´ß wåJ@F«b {¿×Ó¤ ñnæ7796vçÖÒþ’Œ/fw”ƒèךš[줳f3XMl�Â#´=­ž<íÁ]޶ᑨ›ÝXÌÉÖù$}€"Á6)¦ëj—g 5Ò·³_‚2—W%Ûjsæk²êâ3rä÷ÚÙšr>¬Ä,«³ŒÃ�<Ú7lŒFl€¸Ó\ H1ÊC¾ù°™U¼¶Kp8 ÑÒKS~¯n—®M¶�ƒ®®š´·úP™3üˆ\Á÷§«`b†Í“ÜáœD»NóªN|zz�£—™ó+xµF°¨(–HgŒÒ1~wø�Ýšš]zË8ˆ®Ó›plâ.W+Y¶5 ÜÏV/˜öÀ+éqn dÃ+L¸ G«*�Zfü“Ÿ £‚»^4ä–(JÈÈÞ›VÔÉHMMÝÛóœ�ý+:â"ÜËE/Ûé#^éî^pkÁtå;ê·ß�±$ÄëeÅÈMÇÙÅ´z8Ë"³B•¾ãYo¯¯ÒDÀná>âA¹M$úêSÒº¬±Ä×ñ¨¥4³á9©©¨FÌ�óÔÇ ¢yË{ :ò:ä¸E³P*S‘Õ½Ù¹q’|Û™Ù©Ázõ�Ì÷]%c,×,Ö„'Ëäÿàæ¸’ %4¼­,ÁYo3jaèï2zl˜è)ž?ß`¯åí}p—Dò/T³@RŒ�O‡3Ówû×ÙéRŠûlcœíŒ¿ä5váú W]òÒšší‚ m@ø¼^X%_Ó^<¿Æ> .Òæè8žuPµZ�S8×P¢n-ùšôÒÁo��ªt+&Fò%ÂNÚ|/UËr[èš[Ú»õ€jõòÚð¥Á6»V�t Ù5Hømono‡ê'Iq)î!;�õûg—ó�A€˜ÿñãE ¶Åe >j]ºÐ�äÎvkiijz_°u]Ÿ¹Ýèt×±Pl/iœ¼n“U_¼š¢†[Ëp@©H7ýª#@çÅ’Ðäç‡>³Ùmî<³6¸ô˜&';;;?k}}¦Ù5—#�‚�©©Ñv <Ý—@¡'`ÖmŒ|Š »\¢ggg³¾µeÖæó¤ßßÁÁÁÅE]'ãìD`Ð<'€s†¨®Nb#Œ��}V¤ X©ïß¿W"ªœºåW:jM¹O ¯6õ¦¦¦æV X¾à*_Ôó 7›jõìÙ3gg磻�pSÂ.™5ò�ŽŽ²‡WFF4UÒp¿,öÆ d'*–ü¿h”çSƒš A÷®³•ŠçåøÑp55ôRŠŒ[ 6}àï÷ïÊLii‘d”á‚^åÆ[BÓǾx©Ã >ž Û=¼b„D v¥�¨'jmâé|\;šmqurØ¥— &'ÎM,óáÆü>(ó¨h<«!â¶7ãÏ<ïÍušpï>Ù>xÞrAMRLԮЛm´œ«/بøÝuW)'— §çq ºÎmxXòãÇYíÕQ¥%£ µZž¸7[æÀzSŽnݯ©©ß#Nâúä(Ÿ¶z8� CÊrü=8�ª5rl2ªŸ¹ìJ!^ó™åqëÎÚ–K{î ]Ò žŽ±gz¹šCEµß¯3�oô¬î³Qß,(Ý25M[\ä‹ÒNO('«:Ü™m¬ÉáP+عY¸¶*r¨›„woÞïÖ’’˜œÿÊOEXY©ú(`¹r~›•véáóØ”ÂÆœá×–ƒ¥õšh`êµ-�òx2fgsD>š ‡hÚÙòg®»X6WÙÖÖF} ØÁ�#SuLììwdŒ9üÔ�Ñ€DgQÒNE�Û:8¬�î3ãÒl_°²^^¨tðÖÅÂ͵}ˆ //¯°ðÔì¬qÐWŽøq æ ©6Äu}¼Ð}K{o‡íªõ%9·ÊzµaaÑ䄨r0 ‰Næ™ûìY¢Y®VŽ)æ0®žR&�¾$Eð¹¹»j°abShú–¶ª‡‡54ô«œÄyù…g:ß{Ïýˬó¿ì$9NÒRÜu¢2þËÖ_U\'ARå#ć$ÄìÏŸ´SÄõÆ8:} äÌ|X>"xrò+„Rñ´“DšŠFzaüWD×FŒ†Ø½Û/¡ªfÄ…ŸÊ'°åÊOåt_691ñÁò`¯Å¬ïÚ}¼Q¢|zWW·flu‡�ÀÌý®ÆáÅO'$Ä)‰š,ÏŸ$Læ©—Aú¹¸†7ûóåjMæ±cב‘‘«lee´¾i5dž’žûz7zgõ¥gÁŒ¹£îÛf'�¹TTò*ç§_,óå°ccúI¿ô2 ó­¡+ Ø�—íy„h†(¶þrEÅþvñYƒÚûžN¬ Ü=’®­¬ì³ª+ow†"N~ËoõºÓ#Þ‚ Øý¾ç!ªkl\o8”uŽKÑ ðÅõÅN é=ÛçF%††Áóûg’[K@,…œ§[Z˜£¶»o®eÞh–¯Ÿ̦Q7ñöÃÐæÛaµQž“ÉBú[©õ0“|Çfmïyy�÷O3Dñö7.¨ÕJ¬†]ŒÊhQŸ®˜°¦ü R-Õ-ÕmÍ1Xö(Þ§ú¡´´´PèÚÆF/4%)éj]+ `Íõµµ·99ø±½>ûCCCε�„xØÙY;;»¯‹»yƒÈÊJÀÞýžó[ØÚÞžrìíí5¯5(Çla[vniÊÙù!î"À|‚‚’’—@Á -œ=zªÏïu~ˆQI:­VSiÏ?ß/xÃâ±5úëÝû�ùˆŸlÏå*³,® žiõ.G/;æ¬JtɳÎVpº” �#Pxì¦m>Ž«2@ÞÝ%]ïŒòÍSg[Ÿñ`Ü_¶#$,¬ß�êìÿñC�´ Fð×snÝ@YšqSöÿ´kÙK°^Î4¨dgd!‹“g"Ÿsóðà-µNdU)®k/æXôø¬Ç9É–dPcª¢±½½ x(AUÊÔ‹ ]zÁa[^(‹J¼b‰ÌiÉT­E7P�]]ÒµÓA­=ñ‡1ªâùtP¨2 Ù!›Ð͵û®SnµcçççH‹d>a(¡Z7à°µØÒëaö €']«ÊBÛ&/!všä l±[êOb´´´dpý[!ŒÙææÇb¼H˳ý冉X,––XI’N&äü°ód>¨Õ„ ²299y¼œ! Àøë‹îjF=…#Ÿ©ñpé1¯U¢÷´ÅÍ‘…ÌùZÉ!ÍéDx>Ð `ÃòÒ…ôôô7‹$aŸÝæÚˆ¨…]ùÈFW{i �¦G—|C-ÑeÇS+ö÷OèE%�ç/¢ÛKâ‚»xiÁkéd ÚÖrf¢qz�^k�YõmKvuvݦ§!Æëu+÷¶±Úð²ãÏ66àΔ9õ�ùÊ’­ZGøœô)Ø2Ù6¨ (,¬!s”©[9æÈ^¨M^§ ‰}|ý0¼eˆ¶õ~$Ç�TnרšÉf‹Ò6Q;˜ðá Ë?:“û0lçê²Ëå°I|;7;?åuøm`ª¬¬t.°È5#EGöò²vq‰~¶²_/_Òe%,‰"£)‰�TK““›ÅQ쥟l�€}æPQç½ôMnß "O`‡0†f-f1ÄÜýæ‹¶p L}X˜µ*–>cà ¥¢æ.�\�¦ÈŽ{ðhÌ‹@c2°q$j —?U’Uâ°�·…Ű!MbŒTãÝ'ñLÕñ=¼êL©bX}6­¶Ä}꺕Pè¹÷ü)�/¸RÓ&\Õ:ý0$úKÁâ_âÞ}®%~/YxÔ©É××w¼ºØâÙ66l³\||!`l3  /‚»dx%$6޵ $'ôu–ò¸Î6:ZYý©n™/Æžœœ ¬ê^nLIv¶ÏjoºûZ(_1ÇHÛRÁ¡jooo`@9z _õ28ørs¦�;kc1–ž›"a§ëb;[ÀÈ]|Ù˹¼Z6¿èñã±€¬€ð'ˆ†@ÀÅÅÚ}#Ò}–d^[~wo>äd�Â\FõßV⊕Á‡cJ¹99nÃïÛs½èôFC�áo¤„sUߋ㠓þ’š«­5¡©í"}×ßz´!ι@z µy‹ÒàE†×ؽ†è’³Ò¥°—oÍw¶çxÖ¬ êg\š¶!Ë{þ•�b ñž %=—¢­â¹I l°ì�9Ú˜LÌgCظä&pS5fß™S>5¬¤�ª²�¹wM*?K™ep¹žEE02–{¤,¿AªšÝDC Ð` 3ê'ê"Ü™ª>NOzyC»»ÏkŽ;‡í.&ø0ñÅ42¡y²iï{cIHˆ‰Éà™† :eeeš…ÒfÔ“ŠV‡‡‹y?ÿo.€uil೎¦L&%T| „TeÍaü(=çÖâçëëÔ4[uzù•² Bˆ·|0ì"¬ÖðS)™F,ðp­¥ë¨:&ïõôÛÎÚo×�£Î–>æùw]›—&7‰aÉkÝ`¸ñ�ÌÜ=ºä%.DEÄôzU,wXqéq Ö–/›yÌ�);YÑzcººÞP}@O•µ²ÏÅkj†¯_S)Ì�w�è5ËãÏŸ®„ý“¸Óyô™¢f6=%Œ�Þíy4h± ()ÒZÃîaï'0cÉØo/qÝ=nårÀgJÑ’G:^öóÂF÷J­î1ª‡©vbŒDøÄ¤¨î?[lFÚ¦ó¥hjÞ3ÎÍ1Î¥ró3V;9•}ûqŸm®¾g‰´%í—Gð)JŽbÈ`„‘F1cN/SFø ÿq™Ü]ŸÂ8¢³xè©©ÕØÒ {›š€Ì^·K$ÌVo<(áP•.”yù/µÄG•t²�„Zò¡®štjÁ®§–—âWNîKö.~Þ×E>&X#KójêE9ì6º§Öh\}{Y„DÜ{µiÚ¼ÄÕÙÝÝÝÉ /ùïUR½ZÕ/ }¾­?êÿ1™f`eÅt{fIG‡È{En^Þa`§ º!` óóåËŸ3FÙÙÛ7sU¿“#˜P*› w+Q’¹Üí�‹‹ÎÁnË3¥j–Û…n5Më!òóó—E“}5’­� ¤%WôVF%Óª•ê ÄÉ×Ö¦ØÎ?]]» ÉפLèÓ­Ðk5e‹úÃNM5»ÌÔ›è:\ÁÛË, ,|¡¹™ ÑEd–=çë—µ–Wü§œ¦×I«Ä)@øÙH§ãÊì¬óá»Å‰w×}‘©:}ñ|i¿mšNZŒbÏ�,–ß‹ì BjïÛì‹ï•±´Œ,ñVG`Ì×ܵ?':[R,ùšöüÙ5×Ú---2€Ü×,?˜4°B{¨¯-Hµp�»pY¶°Ó­"2”ñ±ŠÙ…“o„å'ô²Wû\êŒa«©ðc"ã겚·­}s”X²%o$¤Ü@&ä_àì²[Hý8÷í[øëÓ«P¤íQ`¾f•P¶úé�ÌðíÅÇI'Ų•Us„cΟt%ÿ̆O=̯¹eýÐXž—íõ²˜9䫺FNá(5¾’Õ^ KhD‡‡<F¡–¾¾Íºµ'ï%õú¹%9 µ­ÇjÓ¡GlN’'(-]±x¶²ÒŸ°HÏTÏ»"ª_ޱ«7RI3Jî3GÁìž‹RqeÞ‹zSù¡À^›jýHšJ ”ù.!ý#÷åÁÁõ3»:C øEE¿×Ãh•_ ˜+”cšZZL`â›O¡„]{ýÔ@Yå9Pú¬ S‹¸½7+óïtž®IM%�% Üí¹Ä�–5ì`"$‚Èÿã4þãUº[«vO. n a“-¦Ü÷#åf½f>r¨¶šGÃq+ûxÕÍÌæ&?bhú"z^ÊÎwŠòÄ¡¡§·hq˯¬<¼›s@nÌEWsvÏn-4Z2W€B,wä\`/|?ZYUåìäT|B0d×€Y§yüxÌAp’[å ¬j?Z°µ³S˜�Í%œ\×ѯšÜ9ÉU/ëïWÌa(z Ûf:ÓD;³áá«áºZqîßôtÇ·}�D(Ë›ž’çI{ËÄ97©È„>+¡Qá›BZÿ@ ª›ë�›.Ÿõq±‹rcæTe×\ž€€‰y¹°‚yÖ}ñ�õpµí”Ü•�EÈË/r‡é$ý=€Ê•¾ØÌËG-íÝuB —•9û›¾p>ÕBEMmogg¼×WTTtvQ."PùÈ‹{FÒØIWç hLûò Ú‹?;Ï‚ù ¥Ëµ Ëx4 `ˆ9eÁëG� :^­¦aa7­Þ«€Ã¯¬5¿J×] èÒ­¾>Ÿî®©­-<àlÜd¯>~îzɪ•ù¯Ð›øÞèÁÖÖÖÍ.ÉÍî!Fëö¤ÐÅÕ‘üÛ*ðÛqsr üWQ^ÃÛ ìœýþ‰·�hè¦lÑ�3.ŒüÔµ Øbùo è Tš¥º¡Ý"¹Ã-Í‚Í-ÍiNQ^ž��R=»C w·ª5B ©­7}ÛÛÚÛG󤞪¤Mo‘³ÎXÕÁLÚp­ñ˜s¼K¬Õ'z•4 ‰ /6Ê x©¸3ž¬6·Wm}«¸.a×l‰+þÊû¾¨(Ü–� 7]Ë»á9C;e�Òjj1©¶‹ÒæÌ”ö?ý)•+²'¹ Ãû�ÿåöŒ ß#Qq·–Yq c@‰uï\…¨‰sQ0ÙçˆJñ~v;ª .Ò†QáI1þ=\Mè뜌Ÿ/(UJ.€Š‹ü©¬zÈ:cdïîè8²LPb�C=Ú?«¨�USkÀ,'¢Ò¡–‰`øk<Æ(e!x?n*úÊ0Lš—36¶7ñ\kýè¼¹¹9—$äêì`UIQQ\\ÈAªê•—•ƒË^AAAöö«<¡{Æ®=Vu*Û1lTV‰ëàžÙŸoÙ™˜˜œì,¤ð™×Û<¨Æd©³µ·µ­}F HÎí´!9.3~[+ZXXXúø§õdxEÔu¶ƒ‹ËbC˜bÉØCvÍ¡1U¨òÎN³rÌ#ühu6ïõ1}X•ê²W+¼H–2^V(|†5¥è¶B°]# •j›½ôùï‡1‡µ­ùò‚@§�4V™‹™Qh®S¸çB—OÀK‰¯û´ÅàÉȱXÀ¼:ìܵLœ†íz ®�öèµS=þìxyk¶’±?¬ñD&¦© ś٠ÁwDC¬d ôtKØQ4ti63°ÚN˜.…}\²vï"‘5ã‚Ü®ÑÌ�ôb,ëùn'0}ëÕ»âíÖ�<ŽÆ! ±7ÌdçDÚ@ˆ�ìüf×¢Æ�l2>Ÿ¬Wÿ¾a î—ÄP­ø LÚ‡ß?”3˜_ÓЙim$3Ò ~rQTõm ]–4mÒˆ¢õ<æÂQŒö޽ÒR,Qç¹uH«)á°¼“Nî¤UƒÑGŠƒýe5%TÙH>}X¬f¾€i¹éëÔÐóB¼ÃŒ�ÿýо›ëÜ`dœkâÓ¦Eÿ²ùƒeâ­ãŽLÏ=á ì¼.Š¥Ô @Õ#›/ 1#³�âØ;Ìw– ‚ž+ÕL� J&×�$Š[žõ�åkÞN k°e#‹›}&Çž™/$ ëa"›z»*´æÂØÒSS7̸àÇWŽ™™œ|ùŸiPŸ¼–U�C‚ƒM9ˆCX}K‹Ÿ¿ÿé·¸‡{þ¦U“ãðü¦vâåÍõU‘öwþG € ;¹016¾�µû»'Ë!!!ôa—žÏŸ?wwç‘Ûißé’¹Z׺�†t £}Ú É=•Øùo¥85»þGP!!¡£ÃÃ<É€zCØöϺgU“Æ0$¼ˆWLÌ‘jî¿­¶ýÍ©‰Û¤–©ŠàÌ,ÿ¨ ÿX<-°Áœ[�\& ×_M#®..¤³Ðѽ‹¦Ü~7W'§÷YÎg—"_y ¹¢8À8]Zêêèe« H¤OÈâ'&'ƼàUFÝÁ¼ ¹ž7D–öÞ³5’½üܻȵ9×~ryvàMÖӔн|ázÙ[¿9˜ù”„V\PL,[™%ô¨ÊÂõç§;ÖÁÀØVTT¨±ÕWþÙ;ýñã G¼]CÀÕùQŠÌµ¨™hòàêÐu*ZÚáe/¢–³ Ð2@¬�—ÆÓæó»‡fÎA>>6ü·úÍ!•�éxà -ð‚÷c-ð{Õr UR¿[Ëím÷®3;]]�΂�«}½¼Ò„�‚6î�¾=“ñ¬jY|6×Ä$‡Eç+ៀ®¶Ó&ôºÏÏ­4Ø Ù˜S@Á*ïÄÇ�lÜ{ñW´¦¥<Èñ„,¹]ô)s¾yKàËBØ@=¬V;éCŸ]™§ úêi†•ùÞ7t––ÕNO°Ü�‹YÍ¥¢6×R 7ŠÁ8ˆ&[óÙmÏ7vùf²ÇXþ»¢«E!\?͹µ;/FÊ¥�5´¥,FÕ)öú5¶ŒÓ›"t¢Uû\„L¹#ˆŽBkW¿ÖB¿¾¶…â 8O|/%–lÝÞ&ŽÅÎÚ¨Œ;4IŽZ&r±Ä/«)èXA‡ê)�σÍ[°}^4påªÉãºW›´œKç’36JÙy7\V8×Ú¿ì/¤m‹ËÌø¯_ÁOƒ ¦ƒzL1Ì$S¥o—U£¥¥ÅNì•þò÷}ª¤»:ºàݱ³ô êl˜�“9qq*B< u³psæãC_�¢+q9¾q$½ûånoo/ Ç$ ?ŽY žš_¥(j5ÓBZÏ�ìÓ ¼ià…—‡C…??ÎÒµ±V×î®R�^)¼€"§x*„ÚoðX_§S~…¡É"êgL™²sˆ£h|Û—¬*H[C_7Í¡§‰¼a¨:šñÉFÜ#³Sµ®¦Ù›ÒXÒpê(Ͷ™fWl™F®U´³Ô�º¢$¯Xâ 8¦§úß]=MAy?�lqÊ$o{å8�€ý÷Å „ÄÄúÓëæ†¨Û~nV>/ïc¿cÔ›—"³©%F¸1–‰z†fÙsn·s6W%׎ ƒ÷UÎO=Õ‡Yt™"—ÅZ›lÑHùMÝH=rÆÌꬢYTš¼?Ó£V†sE\~2¨�å�„UZ"Äî\èÖ0s½â~]v,wÞ%ìòSÖ€¡*ô"7ýëôàUê¨Ìôjìc€;ãØ x³ÕÃN{é�˜8dË#m¥èHª§Ãâ<Ërú;†¾Þö릦¢J³5*ÇÜžP\ý>š§»#ìæú’°÷£aÝŸ …‹yú›SÔ\»ßèÐаõæžÿTµ‰ÒÒ¦ÑÅùÙþ2úv&êÍtØ•�(�>¢É”[DD»åc 7Àà R•ö>!…ëW½Üšm"‘:üño²j•þaÕäy’{0s¾&½¨Ç;=N ‘ϯ®ÝÃ.°À vß\íœlÎx Åzv�¿�àG‘` dr…žjÚûþþ~û‚<ÆÃ^úëOƾÉòLc ôıC»ÃŽþMz[ $/ÝNQõ›P"ïKMM=XŸ·ˆYCW®/v¦7ކ <©r¾ hüŸ??;MVζ3ø+™×ž8[\PÁvæ;3U£kWN.„¨4üüü Pzz™°kI8ØÚ…z»ýÛŽ5¡{ngLfWVbÂ_À s‡Õ��Ã)z="ø„©’ èFPÁÖÖKÕŽ)3.e½ÑzˆÒ»¯yûÏ‚ ®£klÕ¿DËw|ž¾ôó“9šx~Ÿ˜æt·—¤*’ÅÙ¾KoõPQ\&Í¿nmèsû}α3ÕzÔâ ÁÝÒs‰å0 ±FWªš7M “Úò±÷f]„[°Ã¼‰,*€žNUfˆ2åΚt*½¯LÞ'Ï$GÿÙ”›êß�+pÄÕÒµÄgFÈa;o33ÀÑòe«û˜?¦upn˜ÉÓ´?òÀÌh¤*¿×­ð—¤3^JU¶i0ªÖßðj­¬"‡Àñ£áL©€jœz3çÖb\MÛkUçAî¢ËŸý±†vÕ«ÕëÐj8k×>g.ñ 0ŠL¤Æ«?VŒ`±½–üÙûgÁ0 µrL4\‚{h‹O3.Y½ä *,d=/x³Ð�“³Ð 8�«}’DuÈíííú˜zy‰cKÄÁ ç¢(OŸÚSÄd°´Œ„u’âQ`'v«ìe¼Âø ¹Õý¸bå᫜wËÝ+.ÏaŽßã!ÅÏ)"{ò“e¦fO0Š¥=á\ ¶tÉQ`-X×lÕóðô–+�—â´Iƒ+y0@(ˆ“ã—ê>i˜Q_x7ç6j×ÐjÊ�­^†qTÐq`|QŽV°b�L‰3iï0N‹1Ó¶"Þ}ÀÝù$€_ó¼–yoÀfÜa¥A©ª�!°^?Y9½^S¤õ°”€Ì­«ã ´¾J;pÈ àÍ,6HCLÖH_Í6ué“Ü�}«‚õ,XAá»[g̸›`‡¤ÿîï®� ²Ì Iú‘ïûnNÄØ­Ö ç‰;\»È�‘³ÞPº“겯üÍþ¼›¨xÇiNÿÑxуV)Z„zK7£Y°‚ÎZq¼77ûÓ9ÜÀ»®¢RÕùíü.ßp=l”ÞÛëéX‹bÕ^p³�éöï¨1 ógA é,ÿ» «lþÏÀcñ &gØp8ß”S€>Æé "Âþ%€z¤¢}üÞ@¨û¬Rkÿ>¹ 466þ¨ÿô׳îÀB.ÿv3ÍÀ°4�r08 šÇó^–‰äµ€üž.ã]¾¨é›)î–Øh"U Ô~ñI-¿¢~�'C ʲŸãÐ4Ûß„­ÓwËØù4_£ÝQ�ªÓ<ìé´x{úœùoðú²uŸI�¿F²„‡§€ë)þs�d¨ü—ª;†ñ¿wõh·Œ}ô}IŠYÄï¾JuNšûßÝ>¦?Zïþ>xÀœÈÛ5Īù{¼[ µÛT6ÿâ–Á@ì_ƒîƒN%™^™ËÆÒö€-£&œÉþwë©™¹‚NQÐý/«$ŒQø=C¬î?Þ`�*>IPÈEAŽr&ÞOÝvó·o ßÔ®i)ÓS|Ÿ%Щ)#nBšqªmr>v­£©ª¬dyB0.ìAšj‹H#7÷v]„æâþ§ßÆDOõÿZUOîÂ`¹(î%’G3ÀÉU2Ý,Ãq? bJÇ¿ŠÄ1°¨Ôk#ý‘­½¾Qd²”êeøˆ­'ü:m¾1åap*-æ…Míf�&Ö€žÍ’ÿ,@ W-Um…1ã5öƒ-Þ²D’ÙÂ_\ɉâƒòìÒÆ&Pê"š˜8Œ¹P^PÒD0|ˆkÛÊÁ Oûè$øÑå(˜e(š aŠ÷*Ò–ƒòz{@>¯¸Ó&ÖÁQTDǺ…cËøÿ xÔ‡zu#� ±ô•EMÉÏD¤‰<‡f|ׄˆ)w&8¤Í ÅÇô—ÂLþ pz@Ó{ëý�6û.¨Å¡Z_ ‰âýÊÉô&¨[�— j�´öO¶æ–z²Wÿß�Ë6-©8í,Üõ¸¨@ê³ÿ…�åcW}ªWj¿G[Õüh&Hµ¶óDe† ´`R;žéi½u~½ð¿žÙLOÝÞnñé8œðÉmðW#¾�@Áóÿ»—ðé«ßDÿûŸâÎÿG‹Ãs!=mž `ÎÏêÿ½ÝK¨íAv5løí¨\wig´ÂÄ„sø@qˆsBãÌÖH˜OŸ¯”3™ae�‚)“œzC æsZ<žI¿;Ó`m9l· j-r&/rI“OÚñ\k-ªRl˜0ÛÔ5ÓÜn ðŸâ=÷·¾ëøÑº/ÄYâþÍneþ=èÓæeÑwësF<‰×­ÐÓCtfò¦Càœ�t�˹uÞF:ð¢ì¢¢Ee›æ•åš­qÅ*ãy#­°(¸¥JÛ“á.¡¨xHN6iÔ`¹› 8N¾xÀæŸuúëß¿‡“'ÓO餽¯r][®¨—¢…eFm,LÒÄ É{µ^-dj–3§®-�<ƒ+·Â>T^‰ˆ²¨t1Æžçèqf*³sg¹ïmÜÞ¨û{ê4±'†F%çû¯—.\�ÞtæÞ„îu߬ö-t�Þl…œDjózíOdëžõû­¯äæçK½¬ìÖ†™m<|ÀXª»ÞpT•6ð7•YéaÜ7{ÿí-¶ÜaZ_&â…]©‡pEÅ~ÍÂõQÊ„4ÆA2…½oqdÐ]x°ª4R°5ºê|±Ç’>P †±hëß®àˆ/*äQ‘6 ²ûíôç¡‚ÞýXv¶2îÇ.xýÌf] ;¹BkÎt¦íÙéÞë«ÈB.±Õ ½2®T–õoq•¬Ä¬°¨ÐÑÐ$�˜‡Tyµþš´ —õpðøpìϯËù@©É†Ô‚z¹ÀôìæY? ¥Uø¯Û´WÁ•…Žðˆìæ<8û:ÓpWäýÕm„?yn9ÂЀÌœ) ¦«pßmiiqlšµáçÛ*¤ª•ò÷¾HÒGÿ&ùĪ‚d!e|?éd„,%Ñç|d¤/š¼P` õaœa ,™tzl·=ìž/Ýx)n¤�+Q¨Ðãl€õ…ø ÌÍ_ÿñ¬jÒ‰·? b¤Å»½…¬Rï[xxøùy`áhÕ˜o¦ª‚ÎĬ�vD%�EE×2Q´@„*ÉÕÕ•-½U—4  „3lˆ´5ÒOûohi¤_56±�Ïø¾Ò©TWñÕ3O±×:‘ù½~¨>‘#lY°*–œ€|À¡­£½*Z­¯&Uˆ[2 $D 2m³­Åbl×zl Šåóài~t=¥EƲh²tD—”5_szvÊI˜z�à�­œÎ#äòš\•çáï»ffEÌ]C“€ÀÐYÃâÿü=Í(›²«{Ë“çD3=;ë$l�7*©�SmŒz�E“KÊhàqâKÝñ1¯Í‚ Ê1ÌQ6F ©–øb==…j1V¤­0¨ÖÃuëj}t}b13sIƒÏË—ë>Æ« ©e4uŠ%R+ÒVÆó»g¯(è(èè!U“ú-zäç:•’£c%,èzyVãê˜%Ѩ7ÅQÕ± ør½H”W!Ç-¢’Ñã,†©M2[x£¡ÖEº¤«÷@õ0N¦³;riû8†w,ŠsÔûö&…€lþc¥=i"ùôÉ£?Èwz¤½HRLà1¯´*eà‡C­ÕGç§›..VVNiÄU“•ñÚÜ Å†ÜPæ$Åç�™`ø=ƦcÕZ Â䬉|Rl�ËÅ“4–Làˆ�ß'«ÊL)xûÅó“Cx¿ê’«ÖÌUgI¦“ššnùµtäÄJ‘ÿ½>Qÿb —,*¾˜ʬ’oHí¥XR'Ë`h°êàä$HE¤†„ÝÞý¤Iç„@4õòsTTO:ÌÈH<Ä=\µpÎÀn5cY‘¶¶Fr¯?T_ÕôBË1Ù€âj˜™˜š*s€Æ¤ÚF‡Ê�¥S�²Ä3¡¼‹9Æ7²,¡�Nc˜`d,Y��[=Ÿ+å”ç0 _>àüü„ôÿ&²ô�]z1‡¢õÏÛÉæ·“´‘6bÊ+übæA’!Mÿ7 WDp ûQ?yI^‡'�ì· ½sr�÷éz:ñksfi(Z[[Gθ⠃Á´º¬ž­¬¬ˆ——ÌžÀ_Û4œÉ2¼¶¢r50¸ÏXùñ{êwuÞ€¯lŸûwp�yB‘.Ë‘‹¦>lëïÇËægÎÌ@í<8³­ 1¶3j©•¹rÚÍ�Ñ+@ZdÊ—«~D$]5i’{g¤Ê°9(fà‡a~ýúˆYß?‹èyñzd$ð—[lo27…~n-jµ"¸8=†°šé�óÚÑÕ G™A;ïôtLGöPY^ÃŒ)g&|ñq¤9}BŸá�Xqít餓3ÉKþÔœ·yd¬cVÂB""’2´à)±M·ÆŒÑGvÖ æµ±K§uu{VE'÷¹ª‡‰c«u+F)ƒâ+½®Ìá*��ÛòeŽR]ÞÿöM¯s!k”R�jÄEx• z,ÕSB¨øÌY-}À�æñcW77ál�>¸epp}EÅ€[ \Q •“ Dê¡kìé€�—�]™!§ØfrÙŠb¾&u+s*¸‡…Fø­:eÄ3k«©NÕ$º^’ü½> Ò6}À§HûÍí�Úgæ)ÓRB�^£þtÄô¾-zð4â�6E?н~&oÌÆÅÉåÖZbÃù˜X)>ºxÒéÑÊr�‚`óÆÖ>ê—X}„ÜcÌд|�Y~¯]“ryÒgåì쬠ÀÃI‡Ïðº7srs¼Z?j–³â–êf«³•T:qNïšÙ<ç¦ÎŒ_–ex3¼lc´"ZSTÔ³sÂGˆdq çWÕ›´Øñ›˜yÀ8`±ý¾fdì‡ö¨g^eåž¿W ø»ñ «/[Mñ"»f½Š˜†¢˜ãäÓl¡åØ™‰È„ÈñÙÓŸÔ1�_Jw/$€+Ciêa(«¸õu��‡³ZœÆá4¸‹WŠöû²7,;kÌÎVŽb/k4îdx=Ì¥Q ·³/sP¯š™qÕ�±U+_[3¬0œrh쳪ó•Cäëc[ò%ƒçi* çưXùëâ‡ÊÁè`n Ö–—ÊÞÞÚJa×_*´;kÉ�°gJõàM|ü·ö$À”.Iÿ` ÷g„v�q©:› Ç_[•‘e|»†��Ãê©l›¿—@M+€EDD`Ô…ùù `!aaQ3Mùï?O?÷êˆ<Œc€Ù5˜»¨=¿xbm½D—bR592$Ÿ>pSØy²�ÌÜJÜUUÙ^…òÑJá…ƒq¤¡Y[�ôÿîæ�0ŸmH®v Pi¬Ø4×-nfKªwAÏ_I)©üÊy*hįÌãš�»Ç;$�·ë5þíF-ÛÕA¡Ý4)¨g‹ ¯^Áw†rcoÊ‚k'pÅõÓ�WX8¨1g‹ý4¤Á†\-äšø÷ô¥§gq_ÍL¤Ñ|瀇0„úUWV¬a¡#u.�S?‚Bàk YOss%bl)—Ë òÝü´u´vdr-L�ŒøÔï‚þ¸qµä Ïå‡`µ´´B¯6n|¯6*›[uÀj™¨”ÂãÀNM%3³ ýSǪ9+ÃþfZ8e™(†m¦“þèhc;›ï[¾4¥|„´­®ùH[ø×ÈÀ¹©7ÒúŽµÆÆöía`g0wwwØ» ñwï 9·6·×ì½7ú² ¦Ò7k{évMd÷M+�¹@k×ó×ýýHWì\Íñ¿¾ALùÁ\�¾»0�L¨W` ^Í/̺C÷Õ%úòLìåÚÊÊTÃÙ= ïÈÈÈñ1 ëûÚ)ƒ��Ic¿w6~}]´mýzV®%¨1t>8x¾„Ò¢>¢By–ê¸ï¼‚XéoÃZ¬sV®¯»ÚÝ Âšß W]°ââ’¦Â\AAö;‡‡üÃð¢Ëݱ% F —7Ðxg¹ê* d~óòòRäæÛyõLum?�²ªjcØë¥~bþÚ!R¯�ê¹–ë4oq ru=8¥§¥-%8³² ]l]Í™ :<˜Ÿ/°5zE†òñ^-/·o«Y%èSJ)˜¢&Bó7û ƒ¾xæ o:%" ÃØˆ­æb=Ý>_ÓdãXX¸ÙÔ;»ˆšÇ¢Úmg®|BBR(e²æÛÔe)xèbm�öÌ‹ŒìÅ44TÕÄeŒ/•`bS þÞ>¢Öý(ôθj{gG„šôÊ‘ UŽRB)�^-¥{£˜Ò�a# ›ô›ô…ydðÁåýÞØ?__Âg2bb!×—ÑóÓD½†¡gņœi>æyyü„m‚ñ8Ó4¨o— Á–Ýî›››“N“5WÇ<ƒËœ¥�“›’�—ïç?œvÞ\_TWo…«±3®íú„„<äûh›;©š„˜tùw& è]n?ÆþÀ¾5ïÙƒ{ä X_i‹àÓÝ8Kè°âÁO—¨¸4¿†7�lÿþ×NGBÄ„‹’mhkDÑ�‘FÉc!ej9³bÄ-Ò}ÚaZ1ÓÜÙxéåíŒú4d\ÝU×uo-óÝÓŒÙd PÏÛ%Þ*ÇÙ©)dÙ‘Ïœa@SýçO.->½§)7+éåËN­îoSèd¸2+›·2žfòÐKo?¾²+¹:Ýûz½HÚ©ëR¤-*&-œ*]vº¶×³—ºe¸A�«¦Æs2ç Ãáèõ‚õƒ{òç®úúJõÛÍÜ… %sy(F€4å“é6|bÀÛŸ¯éçT5½¡£ú²³¥ñrÜS¹a†›\ «©éu0JÑN›¤{NIíØ×ûŸ¶¶bb<_#»pÞ»s²Ðdïå¥>�Txsi±Ñ¨LÔej§ôgº&IçMa m~¦"°$Uù›¢’¹‚x½­«¾þ|1–„,N¾}òüZéÈinç¤ý±¡Á´jîú/F«�ù™›Ù²—yé}ú_h;¥ÊÉ”’â2<ñüü’4 ŠG]óNÍ]—û:Õú(è´SS»ßB»§7RîÓ¼- ­–z¢=…f9sQI¥ÎFOöù/ Â>ͬ6P–åêºó¡çMÙÒöŽ,ª¿ÞÙ™ºBOW™…b_|§ ž™›}ÿ¼Äšùë§ææºÎÎ  Ã_âvgÿúsæO¼ÌÇy##S( ¡údx~¼%†nì>Ý·¬3¤¡¦îô‰óiniyŒ<»(¼âZiÕ­8ÇŽvÉÉö ²/¯=! Rê±¾ðg¾Ç¾0ôÏ�Ú°¾³§åíšW^ ¼1ãZ2WP¦ÏííÝMMsNMÐ1qñ�÷`¾fk“æç5)Éš¡‡%; Å¿Iô¦¦„9—�Yh¤¥Ðìiqª¥ä„у™õ•xç!Ïœ²ªP �ö÷—Y e®Ó=Dߪ³RÈPÞ³Ü^~Sœl«Ô0CÓú“á]±ä L¢bÉÂÅæC9ˆE§±‘yèÌ5 …б¼œ ¥Òæ–ä¢�ýÙ¼$jóò¥Pîpèn�Tªè…Ãz�ªœÖ´EõÇΓùjÉ'g]ÆÓÔ4±¤½6üëZÒgÐnB˜+~Ÿƒ Y *8mçü�PÞÃ:Dƒ,Ú‡éqrL@â}&õ'M\pQ?g7\ÐîN·ù> �¾ƒÏúÕt´´!]“MGêlGKôW_òÙ°Í@;ƒV;׳U†–¢í.‚bã‹Å›1“�a—¨nÜËä%Œ;I+q¡ý„®ÿ×â‛Oîõy9úùíÌwžÀå2WÏ’†óhb[5ÛDÂfvµÛÆœ^¶Í=]1ù±åt_éþºÏ¿‹…›¡æüü­¹èÕÑžÒ»ÕñëÄMUBbÍ®T+']'Žœ™�0L­Á‰/�Y_áåily|f_ttAYLZbøæJæR�Ól›o[¨å{bË»¢[¡×0SP�§‡PØ91JÎnð>î'd|_K½ XÐ=úÂã“H’ùX�~Õ$£ÙÙOTÈî¼ýpkée`ËWÅ{Vùå y©ÃÿŒŸ,.1)Œ³ða*9Y“iñõ¨Y"ßàéS»ò²Z±æ+´Å5ªçºŽL;9%9l¿E†fð=£<„õÔŸšò~fÓ£Tw‹U+M{¸d�d·Ñ‡6ÈÍ5q¢£¡¹þË.£^®›¼%ú�-ŠP�&yéÏžaÃä �R¿¢Òèè(ºë�.:¯ÓójꗊѾÜ>¾8ô|/† EÔNqs|ì0NgÝ;?|ïŠ- Ûó»ñpqÑû,ØE äÑÖHô—™ l!CÔññqK³_ ”T¶úÊA´‹¯¿—կ正¦$mQQ11Ëì•ôrvöVY†ë>îÃÃfÝÒÞ¦z⢒DŒiP´4tOÒXAÉ㢫ÙãÆ�Ju÷.î†�yHIþ§…Þß©éèìÔýò– VôŽŸd¶ƒmÆ|l’‡‚ŽÏW\Éq²ÝÝ x¤µ½&>Çœ²²£Ê̶©õ™äGÄÑ�‘÷2pÀw@�æZ …0³j5r#$DØ«\ÿ7†qf+#ÃãEƒf�ÂKôÐûçÎIl/##ô¤ EC΃÷¯‚vèièè6éû¬Rgfî|e|ckd”ÖÒìëܤXjJK¥Êl÷ÃúíÀ{‘ÊÌøJÎèàÅû2§æ;¹1FUS´¹ÀØ¥/h{Ñĸº]ZLŠ_IÐV»¯ehƒ@hÏøJÀ ãFpä(.Hµâ‚Þ�›j*+ {A V•/Pd¾*«ßÉ1z9Þº¥o>oÓ‚a�Ê[¥À&?Â�º‚â6Ì|t¾ˆ—ÿš¡ÚÏ€Ùrðq—U¾ó*cÜ·}è<ÈûÑшQ軥0i LÚ]›x°²94?oY¤ýï¨ÑG|˜ úG,¯µÓgíY€öñ ,Ç®ã(ÿ �pWE!Ò´�sÏÕ# ›]5ª±§w-?¨êш×T¢!l |`âÑù·–SzÔØ9åÖD‹Öym)z’gÂû¡MD-Í!'féMÂ1ü¤-äbjpðß~UM‚ûðœ2ÛCÊbBF¹®uÝ'“—íclt´ùŸÑu «ÌQ�&[›ßüæ-·Ì)³½÷ U÷‡Â�¼ê"f Pº—Q� D ÍDošû rVò{`Ùò9Æfï‰ZÄ¿GÜI†Ñƒj_‰ß' Å † yär•V¶cNòVÔ3Ë(HoÄ«?a!ÿ¼üŸÜ‹2eÑ{—‘œHh!^û5¡0„ãôÊÒÄ8j ÿ°Q±aNýñõò@YT�;Óºîû£ÇeY�ÅÍ ÔÙÝP0c”vÚûP �ªIlYÈç0ø�7òÙ(ɈïÕ”Œ¢||–3Sã ”0´¦–&[š§Æc”W+üÕ’h÷èο0#ÞAǘa¯Ó5èë\þ]�ì—‚ŠÔûÒ¤E²¿­¬•!÷þi£<¹ûÉ@ Ùnw j|Òâ’Eç!ÒFÇbÄÑ»æm±m–×VMº¤þ �~«Ç\D•”6.‡­¸`›i­ 1 $ÿ-dÉëø¿å-�#" ©ä_½ûBÄ_L¥ÇƆC–fœ‡ª åUvÑã3F¡ÖÞ&ä}zœÉ|” ÑK{¸½ ª•œ‘Bèz¤-uŒÜ“ÎËf"æ?d3¾Vwu¶>Lè«·fFÚººïè⃢ CËF7™8 ÜÁÊ FŽ_°¼ÏÎ^õöÛþE7ño2²·ÄA�_©a¯ !Î{vg”`@¯Þ°’!摼4Y\Æà#¼pà{á‚hHëSã¸C§¹…‰ÉÕïžÈ¼þ¾¾ÆUÓsžÏ ­œ¬¯( ~T=ÛxøÞ¸ÓN‚¸—?ÆrÙÇ«�,UojogÇ/†©Ô~4­�bbcm µ¥ØIPD„¿g7d7ö«S«ÞVc{Ï»âñeŽº`P?!“��‹ù= ûÚ:ä`ÒÞw¦Ü ;Ԁŵ/?S,ÑybP3ªÉü�pö ~ZÙ �+;~$ ӛ׎sMuY*#fÄ•ְݹƒ®‹±|‹dãKQ@ä^óm¯·-‰ÂÐLJ–Ç W0;^”s�! Ÿñý«ÊxÝZ†W‘þœ»º%áÝ@Ò>Frü…î°nCÎüüe}ýégEoª‚ÛÚXQž4«TZ + H¹’#•4ŽÒb¦×¢CŽ9š/Ki¼iF½: ÜL„c[ Šž� ‘‘oð#~²£™ˆ— ÜD‰-¡eµ'�…8ƒÖ„ ß K#{@o,ß�®î¬wvY~Æ›í®Ý8G\à _}ç=ÏÐEÕ‰ÏÕlÀ‡ÌUî€ ‘“ëPï8'>S¯G${Z[1(ïŽ0·æoOhyZåSë±ï'äaTÝdQKLÈÁ�¸ÒÝxYUÆÂ~šÑƒ¥‡%0´.HÙêEHˆ98w2/!�Î_öª5¯¾æ½”J¶¾’¾Ùõ˜M"eRaêý´ý�ï é½ðÕ³�gp�Šø“øŸD‡ÅR…ZŠàV¦{Œ,>ðÚÝ /Ò´&. ÿvl°‘“ìj‚kU,ñ½['÷:%á>©6.cT"V ê•›MãàC""¾0Çt …3à’ïâ <-£A¦:ŸxÌ¥!pð“"\ÐoE¾½ûÁÖÖF”¬õ0R8è]1Ççá%Q7ŽB4uÌ @X1˜¦@kç XÔeSݘ]C¾ ºûÑ)Æ“Ì_@HCIþÓRd¤n6 Hþ~V+ªÚðÅ'U/M›KîgPDôCŸ_IÕ·šÖ`·„M¶‚¯i@þÞ€%H– 1�”n[x¤A(ÎÉ03nçð³ÎE®Ð'9êé~ÿmÈ3ü…K,Qó̺-ªªTLÚé®­!½�úáìͽJ-R¯š—LV(�Zc›ï”.*s�Å çh`>­enp¡gdv½ðüÿÓ.3÷’‘"ÿúígX м8)<ݸCž4½¼~ ÝÝŸNÝoŽw@²1r·ÓŸyûy,ª‘h[Ü¢bŽluã´(-™3›PKOw?¦ƒ)¡—wöT•…lºV«öcM�»›Jñiç¨t8_r§ù‹Ë¹üuÑC²à­…¡©¡áë~«—©¤½áƒ·r”#¡i,léË¥Yö­uucW�WŠ îhë-wJ¸½¬‘)r5:» h˜téâϛ՛K)¸,Ä_„]Ž…Œ8:òâ"öf—D&r|´³`fhzÞ}sr£@¸tr&XN¾ÅÙz ~QÖ27}µ¼+ä q(kH$§µý) ã_Ñíx3RY0fýðpb¢$6Å ‡]̵0§òÂ9ÈñïõrÞ{á#˜Ù={ØÍÓŒ}­ùGY¼~«½QiÀI#¨ÅpÉ‚ccb≴"M©ƒE2ü òtÑFH_ÿ-±×¢¤(àbBª”cèCweG§¦.ªÚ[2²I¤qe F0¼¸/ ýžmzÐ+8=-BAY��æÓÓY¤NgØ•D×»‹–Ë}?xk 3ò¼¸®§AÚʧ*ª–?ŽI?¥( úz¼Ž‚¡¬â��ùí| Ëûµ×[2¼ý••ýK|Q £K$2Á»g”)Ä$×�µ?ÄDÈœ���Þ½Nÿá Úbˆ±Œ�‰-� 8瑹™Þ˜®¥9Ø]�¾×oe;N�d2!mñöÎï€0W¡7éѱ) ¨®“uTÉÌæÑzÅ׀Ŭ›ó§H[`;Û�a'½)t°!™›£Ú›t]²$E÷_o3mRm³åèIá-'ÏÂö,,3eÒ5™cÜ‹¤9íYb×2˜†ÀãäÿôÞ?aNÝÝLÚÀJHPSçVRÆ>ûš zñEKËÌyÂùærTf5@šÿé�{ h\”@öPÿÔñT3ìâyEõ ©7 š�’Š:J2…o…CïJú�‰‘á’Ö»¢}¿8ÖŒ¹�¢ôÉ�zIvÚIUï€0Ö™\½Ž~Š,fàOÜ SáC‘zЈd ©ß=¾‚õjhiÍuaó‰ák{{+ýŒ–?¾}{ SÛYh?8Ý»üógÿò’©ÿ´'òD ›0E,F®6<—óòõ0´¬Q²ïO¶uùºnÎwž ³,Kj»yÿ$màïáÄßþY»&ã°›í|™ÀOu­W<7ûj1 {þ—ýI3EE‡‘$Û2‡>/m“úÃñÿ žZ‰Ò+o8çfªºÞ‚/¿8‰(÷ø3èI®ˆ%§³xúú¶Í¹]ÿY펽リÏßÀD‚¥hP–tÏ^"iEï öH•�Ïtã&fû«õ/ yq2oafv1zsž'§œö÷âd!E¡7í4fÿ#Pç#Ë#(6Å;ïˆÉVwûè^]íúmiχí HÓ‚URx¾¦½¥ç:»ÌõØt×çÿ9åkxøÎ[ë,]U°˜hÿ9Q²ËÀŠ´^Æ“Á50�°ûÖ#Gº ®(OÕðÜ"tgßp•âë჎\<§O®[væmêNßÚ ÝX¢@ ҈䥟E¯ûly+íx}Gý®šY¤Ay.5[ bMï·VU”ÂÐÍ®hÏW /� UϽ²ˆ@CÇx`V°™¡ê®)HVî÷Æ6+M(®öäÊi…·$Št´âR xPd¡�Qz½$žÑFÊüÝœ¼ôY•–q“ÓÈg'šÌüí1a žXÙ¼%À¦ºšDÂjŽ78¿¸ àX»u ¡êŒ�–БfWT�X2­ ?èû·:W+(ª.²°‹Á¹þÏÖË¢Àv±ÍþæØ•fÞÜíT1ÑÖ‡f�\æ,®wA+¯ÛÉ_>´¦ƒï"VEàÊ kí¾œàWNkó¶Ø)Gjø›7",a Â8ª“(”¸½¶¿Dß¶xT(B‘ °ó«Uês>d|çdî£UÔç†ß¡š‹¥:)ºNFeŽæ6-AOYßÝ>ðæóhŽÄˆ›“t/¯hrïÛHˆY€;^qfG󆻈S«-¤™“9öݺÕ1^4ƒäqÖÁÐõêÈN¨¥ßèê ¿.šÿÎ;èA.iÔÆŒV~éHK–oá 9Ÿ=ã`MšD£“áÝ2iβá�«i¼ â`EÚJ{>hsý#°)`÷¢á}"ðFþá⾇t¼#+–ÜêûM^˜—W]S}uµpµé,%ößÔÕ“@üß\Ék²¢Œ®ª}aŽÎ)¢!fI/<\6O�xÜ!�¿ ºAÛEé2 •³“ <¡åä²§B…íøÈˆÁèÎ\X¡u«yíÉåÙþ}ú_ô�_;Ñm-Œ…îNR˜ } i˜º–3M§[Êj8ÈoÜ¢=»z”Zëy]°Ñ}\žrp|t^z*Áúo˜¤Û2=t‡!øí— ·¥Ù7%…dçWƒ‹ ñýû±ÌtYyy—‘�{ˆ&j±Kek‚èõ¾„ÚÅì|hÓît–þB§õ¼&È/õTÊõâ™[èAÑ…]íë›"¢¨7ºã[¾llýÝGºÿ¶°ä`öA¬ˆôËÍTñ�DÉ4†r…’1ŠüMè¹ÿâ’݋ěi‰ý-dÌ‚ñÝ`ÔìMlëu³3fáùœßø°{èÎäkÚ0OøUa³€CûœñÂÏz.”¯Kƒ;^ä¿Í¤Ç7Óò¼—O×Ï ïïÀt,ü¦Mb,þçºqºž¡±‚ÝÞ}òà1ÁaA®Ä#ŠŸ§ŒîÕ›{\§Â¹l·'�¬�Ê8â‹OÙ3Hþ×RDv3ZdȵâÎWü­—ÿ¯íåË=¹R›Ñ¿ã•rýÖûÿ´%­^‹øýG�0éàg ³¹ü$ÿÏ–vÒº —“ÞÈÔ-{nÔPÇœ5™—E~Ù s¨»‘�®Z€‹D@Š7Ö,T\®æžò2IÆüÌÝÒ¨ÙU,ëÙ!*?UŽ-NƉë¦;üø"D5.÷,r\¦X=ÐÿjLl×¾²ƒN ˜Š“<ÞÞÞ~G7gIt§ØÅÁØÏÚúb¬·|ƒ:iKdì€mnǯ�ü—�€> \"á.2–ÿrÖ®ýIîü=”§¦¦æÁ™·êƒÒoÍ[~Oœœ½W÷–P‡æ”]]'pm¼Tˆ ?gÓÆ7®q—¹ùcÒr@bkoïçÔ0½qtýï™êúÙÙ¥E°cÎÊNÛoªªdÓex u÷ÕVV¾¦ÁôÅÁÁ(zy°°M�îÿòÃôZ=³EµTFñäåó “˜½­-Þœ²ü‚‚fì–»|±ÃÇËK<�–Ššö¥À%èßQ táÎÉÔËë4Ùf{m˜jù6Æòš»¤xItuu5sÐïÝÖÉEŒ%UÒÔÀÀ@Ë”5vëø¼ÿ|mmíôç[•îUÕ^^_??³aŒgÞÒRú�ÎL{¼+vY÷ +´oòcÛg¶:y)8¨é8·ä$Iµiå2ùÉšo{yyùÓÖ¼H{huôF¯)Œì9¸\ïŠM^šØ ê= Ìüù)Q‹wlæ&̵qÙá�á§*¦}3¯]pjaÑ�e=¥Aõ[‘êdÌnL®û¨–r2j2üNé+…v/84Šç'I(úd…™�m³„^…ÊÐÇ¿æ»ú0½‘¡‹õ¥J*“ùMR_s²Ñ3ÊÝKz’ã[eR� µ:³e¥"z®ª9ê•K�»®çÄ"h¨ŒËº­˜­ÊJ2âXÞ~¬V³BÏÍoºäÀòçä¢Ílëôô#fk-Ðò KÙË;-Ò"1<µûÝFWž¡«šSm§5Í ¿ç¯G®f,ms@T ½–å%'¼iûuõ@,y˜÷ÃŒ‹Òö­�Ö†J4A�Ôjpy?ÁàNa÷‚HLl,#n’bƒiM=ìa’âe¨ £f“ñj@ÍäæÏoÉQÏ*+q@.ØýªjýØÕ³Ú™¶O àO0ë·ýÇÛš{k¢ì4¢zUÈž€»-ª'0ÙßD‰Fè–cQîtwW9¢Pö9S êL¢¯vD5KÆšÄ_Ex°�ƒO¹ÐóX ÿ#§GŒT ž<æT´ÃýÖ©†’šà'èæ¥ïi4qQþtí®5z•Ê Ë?}ÄÀE¯Ú†?èU‚Þ)³L¬û˜T7[®…vË�ÅyМ Â7�£áqd©Ë ¥ T±zê�M�n!þýHéîK(†·ªÉ©}.Óvæ2Hb¯Íu¦Ô«tÆ-®ò@ '^ ¸ìUº0}Oî»Í8 êqÌØ–ï㘠´ü×Es­XˆoS�56Î?qù³jéø–�h¢uÝ•’ª�Ü™-§IÕ9Þ‹øby&KT 1ñÉ ‰8-W¾f0š™ƒ@±!û¾NŽ®o«q6&�O8C¿}¨,®T­�612j¢ Ì¥$´,pnš�s˺}D wüŸwæèzê$»†I+#a ¢3úWot�Ý�¢tëy$^ådL-§ìe{gjª%H¶jò£þa¤nEKÞY;]I¤±±MˆQÐñ°7š¾ìÙ^�ùлò£œa»ò9¢×Úß$?{x)€>�ô¸½«ÙÈt2›~ŽJU–G²¢ë%ò5[M­¡Ð¥»¡2QŸt«-“ p/!p³iì–›(�<©ŠP!Û8Âë%{ &Xí3¯EYrgªÆÿܺ½¼Ñ½@QäñÚŠòtj ,™ùc¨�¸Û#Rè÷(î·Š}êž1n\ÚÖÞ€æÿhk²¨¼;õË´SÇÄÔôøÌ ØÌR/»@NˆþßÌ Î�¥ð?ØÆ��.eksÛÀAQ—A†zl'Vc\aÔŒ¨žâ]¡JBZ¾°ù³¶ö^›£�FþÍúÉE=ì¹,(:¤÷mA›°¤$.£¤˜ØäSð3™ÏÞöÜ*�;�«Š?àF x ´¿äÞþ~î~N^�Všø’Dÿ®í:¸†<ƒÜÃð*¨œ¦“ˆçkvíÚ5ðíŠ ž_9•În‡#âê„M¶¶¶h�� W(Š„îW:Kݼ7Ow£+µ¶•Äßû 7£ì$1.;^ËÊŠIIa± '— ls,öÞÞ^`§NõÔƦ@æ|Í—ísgÑ àwŽTñÅób€¥øsÀ:d- êý’Ÿ?GýÛ�w… úÏìy (Lub’ü‚ÿ¡ÏRSgAãIãI¡GN9ÂB/“t�aH §ÓÖqïò¤ ÑÓç×|¬!Àq—Ø›¹Øé.ßètªvÊQl˜$T‚ÿöR}if±ðS˜è.“rt.§½§Þ´BoÛ§}Òx˜W#J»sL[/zÑP�(Sµ4}éaŒ¥:f(9Y]Ó\€P Kð*�î¥R~Vf!\Sðj½œßµs…ìv6á3‚@úUBr�ˆžß÷öÿþÌ’°‡Údï*ûÙÙUιñpuÿæ½Ïˆ…ßááê%™¯¹EK³¹½ HOOÓ"mèp²9×`s~oÉÒd“�ÙÕ5h…76;3sRµ´ß3±æ$·zªº5w `"ûÌ7mà½Ö1- ÍÔH™Š±Ú÷uå\8Ö]_<ös +Ò³,§¤º>ã¸}¸™Øû �%‡C>ÚˆÊIãΩ�ÑNá¯,ÒÞË>uuõDØÅÉ»l¯hX{ŠIJÎÌÌXBêiÚM¹Ilcˆ‰�Ó¾ýýe+V^nßjÊM~îàçwsõü8#Òfæºr®W2ökvvêe>¥¶Ñ09Äã¦Àº¬úç÷‰9¢ºpJ­¯ž!p%t帖ïbs‡;çB̦9^•Z-® S×ÃDrªíG)h± c¼r33�;UÈ {¹îÀÒ¦óJ* ♯ó9èÿC··_Lª&-Cÿ€(ä¾t·6Ím9½]rÁ&Ë5ÈlYjh°ªÃå�—~<@¬¥iÞžwÚ“2 ùãâ¾3A­cûa‰oOÒÏǧ­³s˜¡ßw3Ó€mY�3¾¼ù-‹ /Ô²ƒ–™»ooÑv„í£(|#I‘D˜!¢º>6æÙ9ìq#_›Ÿ¿>XEËœö,ÐÐÒ•>_z¸ÑYƒt˜²& :¥­g|¥-~ŠƒÞÍm SIø¹•búúJ¯®"ÛýÜ-Ú}]�ƒVÿæ%‹ÃÅ OÝôO/›˜ÿùsvaáæ´$Å*Õ�E7'¯9ðÞ»õ×ìy>ÖÏjïû¿Áó푚âÓô�(lG`I][—4¿¤ ß¼›³šÚÛÞ0]‹²ÖÑ�ÔZ¦.<-†©¥z|Ççxþ|ú+c“n…è·8Ô“zeq¹Á£Tß; ïåì�á>YmŠ>+MJª:™WZcºcÜRuضõ³Z_ H²½�nÛjÈÉÅÕù6/Û[çàïÀ! $e ]é_i^z“"ÝQëØ ¤ ®ÎÛœ¼zƒÌÌÌ~Û#|„;7×¹p>|ú¼Áúà�)"YÆ~ø‡I·à`•-D"èJ¼÷1cn.vi©$#m)ý¡NzH³üÀ%tqêWµž¸£ÑÊׯÕÕù­­36œó‚öeå!¡Ÿ8á.ö'm@^….ø_WèV'Ù)ýÙ3¬6ïæ“@7ÌàÇö>þ¼Î×:Ï*mÑ"רæï̘:ÎLÀÃô÷+ƒ¬Ÿph½”çÓ§UÙ·VA½a†3““>ÄGæ.GQ=,D(‰&Ѝ¸%O°#·ÁO,–––šO½Á�39)y¡3Hm:�®%&&N8MXÎ*±žpΈÐo8BŽÚÔiÿ4\ yL×êëšg é¿…üÿ›WA; _5 .†Ã.í™(ühV×Ö”‘$Ò;Éñ}Vµåaûë(9„¥‘¯§§cp°¤¿iµ~Ò€ÝÖ­‡-mqŠ~ÂÙÙ_3ó¿Î6ƒèQK{š&¹ÙÙb#sÊ€på}. },--=÷k–jІ,ŽÀh²qþëׯ›Gëêõ“n2!ÍÐJ\hi©a¢ÂõœÐà`&|«jý…ùùΛßn  UÀ½b²õºÝÉãûœ§ÙÊÊØ¨�¦Ž�GÖ×g&&l8ÈÉ,íÓ,u¤-À÷&³³ŸÀÃ�Y© 9\˜�jÄægÕšW´þjŠ‹£Dó@_o‡yX@ðAr‹¿Oî¹ýê(Pe¤ýÔ1r”ýö¦åæ�±$…ܹµ+n#Ë^3©‹‹EŒð ¿t«§ÞBé5ØÒ“—:lÑ«–?¬ƒÂ=ÂnKÀA—Òjg²ûŸŒñ…½ýÍñ–Iœ<9ˆl°Q]Ss|}Ÿd{¶ùj™2EXXØ}!Û¹eöí’iÒ,ïù°]ºhÃêé_ ñýëΓ`éVì$2ËüöE? ò½°^|œîºV�Úi÷ùϤ„•hs77×§ª¿ïjC¾m<3úô‰oýŸÁ4ÛÓD¶¸µðü» ­šÛôiê²ÄÙ@éŸO¾ªäÔ*àÌåÂ6ÏÑúôòªfÖOmÐÑÐèâšw/즫”Ÿ¤$;'NÈKÒYQX'C÷ÄBÚ.þAÆýsÔû#{^Ò¹ šX/YÇÿQc{XÎn_æ8ÛŒ¨¡Nj«9qnй Ž‚¼µ}¬áë�¶*�Ƭž9•þZ÷=�)Ú8§´å;Í;\TĈ@°¨PÑ©¥9ß*Ë—"öÉÅ�·E.„˜Æ¾z¡­3Þó¤MÖ0vxqYª:ÌŸ”Ÿ/ßiœqÁ‘�µßy÷Jš¢ S{ð^ß³ÛS<–bšòª&ãmØhýÐÊŠpé7ÏóbÄ{—̽½EÚ8y‚ÂÓe/QrUÖt ËîÜË^ôa¢»ÂÁ¿ó †~1d™œÎ¾ô`Èùyó =‡Ôî¸äÏVNL²'Ý7sr«})Šò„Y…_uhÉü¿õ²y #ˆÐª¿?&²’Lor8.°aÒÅ÷"†OœŸìA,¾'OÓUÖw&êVRä�§z"û£W‰(\(°Á ?¹Üõª[ÝËhN®„ªSƒ~b|nOªó¯ëá€~85�Ž&¤*ûÛ·ÛÿüÖøÑ\‹9«+¤Ì± [­Z:¿³1Ø9¹-ûšwE4‘Åè…QóÜveBª¡¿÷sL`›£ñ¹‚ò#à>©�µx2ÑfÕÎ9¯E�•}mœƒÚ—e’¯Ø°„™1®[oL!ÖMæ#Œ\6ì,¿ ¾–ÏÔ}m�íeÄ•Å)âfº*³ä¯B¦ C /g/¿êâ“ÌÛxfp_ ˜éT�tÛœfË´ �pžæóÝa|�K^úº¸û.¬ƒ´ÄSS¿is÷•îisÑ}œÀ3®w¯˜ðWЧßðo°ý-fÀ‹”¿Ð&⬼á©LèÕzS#`ÄÁAOƒ#jæ—‰™—ë „1 P%•"ÓEÚš¹Bp”Ÿ(€‰Hìý ffBά^ºJH…l©F¿6w�ÐN{ï! HuWl´ý~)7êüût—Ec:>îâ•» ЗÁÁÀ"=åod=ï8w/n¢jWiÍsÆ5Û/NÇ0†’T Š„˜�Äï2 8 Y~8²wÞ}c¤‰ÝH²ëœ‰W`’L‘9ÿÛ|}yø÷£iEðnÏ•ƒà¦ï_ÝF‡&ý°Ó5ÎLB¼ÈŒWv ~õà’{ÿì܇ëse0áɽ½ŠÒ>,Û‹ÁÁ2ã|¹ý¤»g³í êøbMG‚›a+&GÎó>®ø@aLo‘jÓ? XàOq®ýaÒK}«Ž�6:ª¤¸Ò3ìjõ•?|&ŒÆãbÉÐV ‘.,æÈw¤JR"•¿ Ä8L<Í4æ ǯtª6Ž…TÄG覩–â„Ëv»"lk$虎ª‚€Pu-nsêed±÷•Ô _7×À`Ћœ©?º,û–Æ´•Ÿ�ü@rØÖ¾Á’,a< ‘óEò�¾i'¶b½E˜ŒŒ„rg±?¦¦Ùým^g*-*:˜/}�-¼þ¾zÒ:\5I¥E?š�öö±ê“øÑµ“Z}Ÿ'ö¸´=~+Vuן/ÿMå àtxñE€dáw¢Áihš»ÉËÕ_ †ÉY{:‘d¯ÌG[ŸºG-}úcpON›q¬V{Ry>c_¸½½Y[S­„¿˜"s½ûO8ö Õ~À5M‘¡«�\”¹.ì>8 F¡Ø:~`~g"ȃ­¢ù(w/Lª}ù³µÑ�?5¹FH•R²:‡Ã™ËË€"Q~þ!¯DËÃûáûµ¯ÖŽØ!Ÿ±—@²‚ŠÞéW=Ãuž{ÁÀI¡–üŒãa¯ì7Cä�vÆí)EíÇTªÏqÀ¥’7âÛÑ*¯93�y¡›¾A¥^b4¾$ú!IÖ(Ï@­À#ƒîø`wƒAß ÷/C�ÜÕV%gEyBqôæ9:ô<ïtì–µ›ß�±$•Gº>Wå[�½±ÆÎlòöÿ¬‡%[_Þpµô„×dª÷?+ú}°ª–éeë#`ˆ~ƒK®sEA–øèSú¼Zó¦6nÕy8æã›þÒF}wå4›lÍ&ÝL[zù¾H¥Ô(eZÅ·áÜé À…fZUލ®,ŒÄ÷hz?½ÂAÕÑÂÅó}µvæZ…P–5Ç\ä=Æýé¡?—=«'w@xNØ— 0.®-·�ýÛy¢g6NûÆ’A‡»*%c»!ùšJ:äRï2¦œ_b›Ý‡ç^A¶¶¶L�!OD 6�h”—³�<ç4˜x§Jc\5eê<*½OúA¿ªHû Ä�È�•›w~V¤]^òR|ëÕ+0Ón^gË哸ˆ…J\K–\RÜžzXÁjUS[�m“>kÔ�y¡Î„l«é]�¶¬’5j¶9š!Ãv`ç@­˜WX8b�mæÀ�Œ¿”¦GñÞaååO[ ˜ov:ýpÌ¥¤:Z©6  »¸’NüMÓbŠÊÌtv6Òo˜$Œ}�ÇÈêSYôðß²Ób‡ ??Luü§ƒ0ñÍ¿¬›±uÛ™Ué?Ë^}¾ÇêÖëÆÆ�Û™=þûOV ̃°79Ù°–­*$\q¬óÐùåϱÍÀ�°Ä¥qœÛmÃÐLQzOKüv°(ÊЎŸ¶9ÅÎÇqQ�càEºuäɸÏ+Þ/i“¥³ÆúZ�9|ÙYœ"+Bølš(ê Ç~Aéÿ Îïk‹Þ„¡c"Š0é ”<æ}=Qž?v”¥–¹ò¨¿€àöÊa�LX¢„s\£@_€ì ¹NæÂÔ§ Ø4éíy±f¡ï‚à‹»?¦VÛ¡Qï*íb$ÚÛ'�J«; ®¯çN ðÈÉ-°¾twGssÁÀû{rþÏ;#! ¹/€M¥ @H›½ ‘Fy–±Õ–¹–ZÍÁìurª‚ÏÞÛû ž—�½¾¾î¬U0"º¯G†‹ÿûÛ·Ÿ“?Ù)­ÕÃmg¢¿Y. v2‡ÍF \RwëÖÑYOÇlüý9R_×V»CË'Š ¡uãûMbZ˜mlb&!&]«šÛîÛ‘J¬«2貕LìgJR ±îå…a›" Ú6³+ãã @zyºþª=�žA—ªŠR­ˆº¹Z?Ô6®�Æ„CØÒãff²'›Ž¼Z¿zþÚÜdÄe„&(¬¸ �ò¼::H_zzå*QÌr|�Á4Æ6E挃Œ¸5JÈIƒ®®qƒüÌÑPñºËbþáŒç.¡ÓÓµíóRSKh3vK¾d±*_•íO¦º�íËjÓjüÛ‡�¯ûH‡u5^ꦽ×,Ody^¡W­ÿ•ù¬õÚ²¤éDßÁeu®·„ÄE¦â«nÍ�Dë)ÈÎÎÏ[òaÖ}ä!²"^†ú6>a$ѽg€Ö³0Yø W C×ÃDDDÞú vvöÍÍÍû­y·¯s5+ÌpòìÙúð0ñ’:Û°§ g&Àh£…ÝÚ“ x¢Ò}®íG§Sd[†èõR_??ƒé)þuŸ–ªì9ŽÉÃye_ÿwA¯‹É +útgêi56ø^ßyÑt,c½Ÿe!�j«‚˜¬«ÛDhM(s䩲z·°kä(Z¾�™1B×ûù%bˆ××Ï×Nªæ¤Å%ñ@¢Ä¤òrÈåð� Lr1¶ZššM�­¦}w©wl×FZè´ákUU`9Õ¸‘‡uQŸýìŠ$$Éô2NFHÇœ†�x2(UNa¡EpîÎÌÁ7dÓ?4x– à`ë=eÎÌàcFrüøQa>q1!î,óC1)´X³€dÝãÇbRÃÓNB`¹ª™ä(fèÒþÚÎ]Ý¢É%èWý‚�߆�—‡�ûúyÑPÆEÑb‘ò|¾\*ë°è!úw[ëâªKžÉWèw8L­Î�œLúHá ]ÊEp½íÌ7O(^éøÀæwÞþ<˜Úö rÂx‘ƒàŸƒ�4EkÒéÀ•˜0" ÛªÍ %¾7þž’N¸óÃ¥luqøEâ#…pp|4¥;‹#fŒ`Pd*z%ÃûÃó .](ÿDak(žúú.ˆE%Qž)þ}^À]�r š?*)sàýÓ+7­6¸šnU÷–eàöbc$"q”��¬®j GAçµs<Ù›Ûw)Ÿ^Iƒ@Q¼äº%cý¦ �ߢ‰�Ä>«øâ(fFCÄÇbÜâ±O,*ñ•ŠL–"J,*c‡éà«c^ ™ÞÀœ”Œ—$�÷}^È®I2—Zš ä·¡oØþmg¨Ð¾4œƒ"Ájˆ×¶Ðÿê܇3ÓŠg-MŽPS�ÿc@ëü%µú÷sâ¯�$Å#Ü;Öš„êƒOA%gi†õŒ¿ä?¼Ú“‹ë �ø[Â(ÒYÈþ!Žfy5­Uþß\^rÂó«®wT„§!¡Ý õ.Q¯8öKJ‰ßÖÙi]ùvúAâ=®CþˆUü€#|ÌE8—V‡�fúgܦÈHçHÈ|.ê8WòdEZ¥@þ8×À+ЛfÊ"ÑÌj”f«CþD'º3¢Ä0FâW÷rPì$eÆ 6†«ËÐÃÚM¯BÎ÷6ÛÛÎ×wäR“z£˜• �´,v™î/EWÈ###SûîKùwa$�~�ᢗ˜«0+Ï‚Á‹ÎÝW*i÷üññ >Æ=¶ŽVˆ¦KQC²!BΦ6ñãñCΤݓÙÙQÌ*i˜EÃz#£ìѬUQooo±Uº ‘–÷ïnyi”���I[È�Û&f’S¶Ïq+ m�FN‘Ÿ çþñ—¢›¾<;é’ì;\FNIùD8—EÅÁÅÉ=„F7`';:‚-B †íÒYf¶<))Î%éRDP¹KGüVb­b••^#®Â¥�mmœsWZÈÒˆ¯8彌*ºŽF_~¹˜›»ij&Ãr­Îö÷€æE��†QàŒÿÈÖ賂lƒÏúŸñq]#$a/¯†YS•­mé$"3�e£­ZQéz}ÙöõkÄaæŠW«—W‡o»S vu´Ð�X?8£!V277·Ô ¯¬lm»wOz£ý… lÔ<œÿÜ\GgÑc– XÚ¢+Å{qïsÌL×\¿Œ#½ì$I–NC|qïef检³á\.vöòOŸ¾´¹Øqóxóùè’+êSÌßÔ##åÄ$ì(ËŒ&{N‡^õKâM=C=m"3Þ^~E¹Áñϯ!Âï(öœóàÚSÁ8¶N/~ï4OÃtó­‡ËúšZo�dÈâô ntI?UlÌ"¾}t{õücöùx©ø[¡Ö®Ê˜<;£uúƒã¼6ìû–d¢ÙÍà˲ÌíÓ¨ñ3•ü³§¡ÃT%Ñ-ê±ß>³ë÷?0£´Ó.r³Ñ+…�IHw#Fê·MÙË«ñü‘÷¿:Œ©?Fò%¦§¦ôõÍ›mÈN2ÝÃFÞŒ,4>º—1ãf0éÜy\³öCâ™[¼@úp™wvÈ7’mñü�'ÛÖ-ö÷oŸ};GxϽáØ�ßÒ�ïõD¸ãNÙ™d ]˸þt­m~lŒ÷éÓ§/Ûòè·LÕ�Ÿ+Ó•µO›ôLÒ NwÇ`™í�Käµ1):ö»Lo+Jºbòéf24TüøÁ<È®obô›¿Þí³ÎLâ!8 Ÿ!sÄ…Ÿý½]j¡úïÛÉA #ÐÆ’¥�ÝýÏw 7÷ wþóŸÍ�ÿ\M6ûºfò¼ªÇùÏËMÎLuÇ:ÕôK3^9¸aÜÈ€ FF³î²ò¨sÛÄ×5ÜqŽÛÇS¢béŽ&´ GsÿrxxÙ9µ,‘S§àˆÜÏ£ùEcü¿�ì÷Eîÿ¢ñðªY`Td±1jÆ"ž.aøæ~'©°<á§úßCȤÅåài5näÔ­rîd7Í6–ÀÿûÅ[Føëõ”€g?ÿ{¼Î¼X–ÿ/§�Ò�ï×uÓÏ¿ÈIÓ¡Î�3ýÏ‚_5nµ¿5ÀEmeŽ ù©.‰³‚=Dr3MÞÖl´ÕŒúrß®öÛîýÐæv¤ÎpHP£Ë¥"ðø1>ãíËÀRç=�·jÁ"M¡™Ê,ö>;æTV¶™Ö<'Іïtßt9æ^þe·çuŸFd8Ëÿ}ã2®.¸þ5Ñ;Ÿ€Q`€û‰0›ýµ0#a5~z~ZÒë׸¤K,ó4ÒéO%¦V'87§â.‰z_ß¾"¶Õ´æñ/®UI²¸·eÙæ_¡ 3.é¥dIŠ'›3½bÝ5ívÂìÿÉ ‚·‹¿]ÖP2×{ÏË»n®v²22L{é¾.zµÛåÊ„…®ì*úöýêCÙ9e’ýýýù"£…2a»ö23ó�A/Íx`°ËAƒ®ñŸ?ß&oôƒqqj»Î+k6ŒÈ;¤&»zY®åÏbt…xšÔÕ»O¬¾Mp÷®¶Æç§Iy|y}]v£üü3³›“[_× ÔIÝŸ~šË«)ÈŠÀÜ=qSÍHÅYƒuÜwÕ1òËáð‡MÉMó•&Oü%BÎIÂN{[½WCW%Zc†50.îî$ÑptÏÿ‹¹¿ Š«ë¢@$¸[ãÖA‚»C‚»»ww‡à‚[€Áƒ»»5Ò¸»»;Ó<ï÷MÕÔÔÔüšª¹?(hn_9{íµ×ºröxßþÙ™ÿåuKKKùý32˜}®Rÿ­ÜÞwäÀ%vMˆ¹PeVh‰‚‚ò¿ ó ¢ñQWeÁD‡,ÈÆ£•.zq¢¢Û7^¦Z$5Ëv |D¨ýšÖÖï�Í••/ë*}Çvœh¥Yú &ØÇ ã’——.Rèx¾))ep�uÀð¹k¶¸Ùª©Íœ®´ø?Œè«CUÕ衤$ö½Lçl;„*í+Šøð÷I¤N¢YäÀ°4/@6§IoV³PfÁ ±Z‘mÁvåßNÕHËJ�h(н'þËÚÍÌy¨^H®)kAÀ%P­G5ä%<ñlrÃæR�GÊL�3r /û¼È¶¦•™ßÌ—c�ÂÉp²=Wê…� ±XËUtö§@çae£ ^ï A×=Ç`Ëe¦�aLÁÞ@ˆ!ä,ôØ6)³€'ÙK—©×aKg–ë:I ÀˆrÖ3K¥æ0ÚN"ÅÞJïoÒQ·7qH•zy{À© ‡{ð“Dõ»µ,�È3íe†õö§ºC2!E߯©¦æŠéí’iÅ®¡'>:€UÂ×××Õµ=0”-à}{¬¥¦†ol¬Œ��_õx�^8ÄÓ0‹',J�!.;�¦ØåJ»&\Ò ñcÄ#,ú ÛÞ³{�Š¥§‹�\Œ­K8½¶öâ;sqss½OT=§çž””„¡ô>Õ´ x}ý÷ÜQyq±V�ÕÌQeG»ûÙju5kÿüËÝš¾††¹@ã÷ÖÆúúY³©„Z—ƒ)8ÔàC90*©`fbâÕ{[àÖÖÖÆÆ{8¡ûo½hvŽ‹–‘žŽJÄM&¥ìççÇMTŸ‚.''7K|õôÒ××WWWG§Qq|v¶Vg=—Ì ceee¢Õîq± ÁÇ\™VbF†÷foÁK'·‡‡‡®G³8¸¸ ûâŒmL¬4g~ÄÄ}'Ÿ}ɦ’h-¦u‹ZµÓæÎwGñW“Ù·þ©ÖÒ '{ÓÀŒBîYÜ3çßÅýZ­œ ²cU·Ê%»¾¾ ¶ÏV±£j”ü­kkXZõhÙf‹Âô mÒ­™�- Íœ¤¨R  ê…\Šf‹¤ëû²yd–��eå¶dÿìÉþ1�ãÃ6�(r ñŽ©vµ@ ÙÒé~7¹r"� [zÂêrõDÒM°UXo•p ñ˜Î�OZ¼<,À8µˆ»“+Ì®™ÒS;¡7à2 Å&å5žžžv¹ÞŸ €®œk�ŒÆL©†76d� áúúZ2AUOoe~Þc½3@¯Å­oëÂ<Ç×m¦DÍ}Å5Å5fgw×ïÔ9§ÆÍÐ/ôÜ#AÙÍÑœy=2ah$¨=ahΠ¨ÈÈÀ®ß8"Véfz “µÿZt~,Õ¨<=<|\BÛÏñßËrÇTrv¾Ê ûòß‚JÌ»}÷ñ·¶ö:7ŒD¸‡±Îò½æé ¶þþZ†àž ˆˆ:Âxxoªòr3G/ÉNà{X\´êuÄ@.ª¡1‚„‡Ñ ÚŒ4UðàrD Ä6»»ºs;<Ýž\펕VV¢…õ8ï�Ɔ†”ÔêJJ¾àFÝÜÞ6°ÊÕe/¶y»ë믵œµ[ü9ûÊÇËËËÇ·bwO)ñz%ôöR|ïùåvºŒ�ü‰Cn ˆ¥•í^›}xú>z¯Jõôô@ ªÏhn«UN\—G¨ƒvT�a>eÉ´‰aõMå­kC^$|¥ëŠé^È"â‡$êýX7ŽO:! „Åpìb»3NÙ¶’P©Æ¨ú‡OM•ô¥ 3Ѩ{¯0-!˜¬³§|¼EAM.É>àÝ€–³Ï&~ÊøÚj§�”¨}#¾Zm7¸úÁâôeùÅæ®…š"«™™Ïè…é–0%>Hæhóçä¤3�œs¯. fü¦õNzíâ*ž$qÔx£Þ¼Ùý ë[Ä|�f‡>iÚ�§d¼½¼TÕü_ŸÁ B¾Ý!ÜÏS2L/÷B³®D¨9|îŒdTã¡™ÇÚÊ$šj%›J%@/–˜ovb‚Ù~µÕe$Õ2}llLAàfúé¬cmnÎ1$/wÜÙÔ– yõ†4&Wî ©6Š3'çs7®sTL‘DhªêÐØ>#` ä¡ÚžmÔˆY½J�ëbnÕº+üó”yeÍë½Wg¢ Où˃†]¦}šíì°}Yé%È�qz¹Í{÷‰I|lo„“þNöfÿmîñH à**Ë4–ÒŒ8 Ž�ssw\þW\#É Ö¶¶¾�Eå¼H)#u–àBïÓ& ¥_súþ+çM~/�?Y¨Ù{~¸‚¬Ì粯(/z�j&¥Ô$Ö„„„<{$q{¡ÙTï˜i$·=§ ž‡„6¸OŸdÁ6––޼Y¡†üÙÔÙ›ïÝžÛ¯²Îèõš]–êm!ñUÄa)¤¾—’€””vv ¼I$èsŸfž}ppðÞ'"BØÇ"íË.„9—öiÊ$�S`°Šªê{e{~~nnn®®®¥ø&úòòò>S~DŒç*JHHÈÉÅ€Zß^ŸüσH‰ø=^Ÿôôôr^¯‹ðè5Ï)ã`ƒºÎüîZÔÔÔ2¸ìW«MeváÿE"ôWdæ Dï>ꬢè¢ë*8”S³¨Vì"’sî1q6úÑÏ?¾…ò�‚tjÉý +Æ ˜¥Ìª³ R7."¹KA¼ù;)7.gõðÙÅàmeÊ÷¡Ã¤™3`|Òé`Ö<½ˆ\Vo?§ ™.@«Ž|[ËT>wÉqbâãu<ÍÜ"V+‡vÍŸ¯Ž;ƒ±ÂÞ]Šì6¢l:îÅ×ð‚Uwèu²�â‰Ek9‹v�ÊîNº°Z>)øÒÛwÁ„Ð×gjE¯RÄÊ0µ¹ìO�Ë�!cáííÍ PU»qÎyÒ•�X{{YKIN^…d0!—]í‚�ºuÍŠ)iÆd›ùªßÓ‰íRýÌô´I…Aº™»{ø@·ÆLN^>(å¼;:Éã|z÷ôN&�du==>zyy}øêç÷šå¾Úd>NR*M@¼žquu�¸��ó»Î÷™óg`d\­·Í¸ik (Büϲ²TT½·‘ë‹Âƒªã2©²ì{Û¢M¢©çÑl¹ÿëž»ÃF÷ËÓÝ{ßÃôB­1Ô- RŒxðAYI‰•��ÏýF˜¸Õa#ÐQ»ØˆZ/½›Ü{ü΋ý©ô#…–…EO5ß9¿Š†¡‘ú¤UÍ÷  =ßoÅáááéH1é·/Ý�ù=ïOæüøñjo¼aéäææÆÿÏ¿ÊídÂ6mçÝHí¶\�©³Lß6u§;ŒÿIaõïvãèD©§ð"…c°¨Û�¿möKHÏ-w|ÃPãjû›ä£0crÿ* �ø'Í£m®ŠÝ°1õ.v-Ü�ÿœ5e£}'ä&a¦Ä£Ô³GÍšêÃ�ÊÖK±bhad¡÷†gV— õÁÃÈe¥°¥ÌzÃS¥–µI8ÊSRY¾‰b6a‡ýJOý3±ë×j²ò"f=Lô`�Æq‚À™±ê–9ÚzŒ¾Q}x!蜶^Ï###’É;�Äy§R÷5_wÿ7ÿG0›9(z�?Ñ2Ý|<ûæéR€Œ�üúS�RêîF¬È=^C:ì&Žbjׄ8‰0ÿû0upíL|cmm-¤”ÔÕ¹Žg ””@äçüŽS¹vÝ¡ÎÚãl½í¤¶¼·,+ohp¯ýÏ·Þ63veü::JKK!V§£Cˆ$N¿Õ£ ÑžPˆà<˜üVh‰ŠŒ¬ª¦ö2Iú2 ¡xFÝÆßGÍñ½`©000ümã¹¹¹···�Ÿ_É&––cÄMµÜšt!åèðÐÊÒòàôTÐëÚÂή‚'²ïÄ-%)é㇀Dj7w÷~Ï©³;�ñ:¿!2';ûôÜÜÀÖ…"� Äê¶ûxÊÈŒ@J^~éézsa¡¡D¨x÷}eF‡‡œõ÷¸+Nrv»ëCʯ:h¨øUvÌF½N%)�#¦ ´ƒÃ¹#¾ù»np²‡Ã¢æh¦1H #ˆð¹n²Ei~°³ðb[ †¿ÖŸ�?„wt©èlѲ‰‡FêzO®<ŒÌí2hn§³ (ýfÍиøU2µïÊJE#ùúû§î ;Å^¾¯ž×?žYÂé@±úe¢…�b;-Û”ûºø[Íu§V…ŸdTšÕJŽìœ(øUÜss»³¾õY£6ÄU߯>µ£,{‰j OL(jhhð“tlÅòÍVèÑHH¨(@žþþsG/ÇÇ ›·wwîîî:`ù~£ªöövnþ]"-ëÿ–�QÚ‘Ëå&g9>�sÍ€‹–––"$ÁìÖ»Ô‚‘p!NÄú'!FÒ¯_ìììµ g>”ðbo„ûºº ŒÚóÄœg~’³ýýyßþ«,Iº)v‰¹ŠûCÔ9.ÜDÕôªª>2úÍ+Ÿ#øBúvAZMï *ošÎŸÜ_{YYóä'iYY�›››˜0hX²¶²‚˜7ˆ|ØØØ`òÙ@‚¤wdžfÏøªÇ ¤ZJµut Pä²]TUTü©{Gü¶%ôj ±C�3�Aãÿg2”à"ï#¸ŠBK"ðxöözÖâv2媗´Î{‹Âղdz°µEù$˜3® ,5:nANNG[Røþë¯vs¤ÿÖÜÔ´°wõðòº¸¸Èrö»$jž÷¦g¿dš;³7­>5BÜ~6®{ó¹ñ éDt{ó&—­£CEÓÄÇ=«†[ß‘ÃËÚ -ç¹ø-Èô´)ÃGf�/*Bk·*~„鎔¾v‡Y�ŸuJ6·i¤CÝï.=ÓŠnfkãV&¾âcvµíǨÄÎò&p÷G ëóôî?q;ÓYq×Ï)þgGÕ¾½Ñ8‹Îg´š»?mpbŸ?ÙŸØ?Å£Õ‹6�‚ÓZXøUøÔŽd.'�@yL\¼+|`Öp Òw!â¾ì®U*ÁbZW<÷² ¹¼Ô`/äûèBÿïSBLttëýf”­­­§§'Ä>CØ¢.�št!T¿‘¥k¯'kvÑñ-—ïSHAÀä´- q½�3ö‚µK'9÷½ÔZ¾ÙNT˜�žžo ÜpnÒ…Túö®Æ…ô55¨aàJRE5×�ᤎ§•3ÝqÚ-Ch 1Äï21ÇÅݽE·‚ˆ´–neøïBØ,›gt I\·c^yù3r©Œæ÷ïß���ÉÐ-¬¬"E) ’×ÔÔrä�VQ»�hГ““$Ó¦¿ÿB8°°�*^R·Ùåàúüþœ6„]ÕÔ’n‹33®·Ç ¯¯¯šô»7^)ôZÊ**[NMe§¶EòYøø´LLú5f1ã{#™…¬$q µµD|n²J¿µ{˜‘{æÿŠ1y¼omœ�Ù0t'àìVxéÊ;K;ÏÎü7B𜜜ò&÷!ÞM[[;oÒÂÐÐÐÔt§;‰šhÑ…8¦kö%Ö\–"�µ¥²[i¾(D;Ï/BÊùX0‰%«WXcaçÞÀž}B[*m‹&s�ærø¶‘6#¬#n¬nXGïOcÄ p5ÀË7Åé•‹SÜt³šîÒÊn¬ë²½À_ÊpÇÿÍHáßg‰z¦ÕÁÞ@ñ2Ë?móÙ:'4ªŸ‹)I Mb4¼ûï]&¯y®l‚T›  ËÖ†cÜqæ=üþFß)ê�ß—eªðòkUYª ½@äSQ¾¨5ýŽUñRÎI8ühʇ}£fËDÚ˜DL§¿æõ%ËAh6IÅIJ[µŸÉÞÚz©Êx‹Hˆˆ‚¯qæ§9ávªÖKšXqŠÜÍ‘ìn®ýáÛ“ X•37íRÙ×MN¥O žŠ¬•‘Rn�áC5xÑvÔHÁ·ÏVÕıM‚ ¡ï{3AÀ“Oûããã(íçÉé÷«â#YÛ…G^4ØÍCLH@€Ë¨Ë½´ÝÑ‹Uš6ïWcV=÷ H˜èþï :MŒ+T5)3W¶>Qp�cPsï—�;m�¼b±ª¸Î¾kc¥ ó×p}’@¿æa“1UÆ:î‡Îò.^òp`0™¼põ0>]võiQ´$0ª&.ÓÄ ?‘Þ—^8œE¦Âmœ^�Œ²KóOq™AB[ö1—4 #›öd´õ€„‹e:U8Âð]MèêÛÎ+v½ÑR£ˆ‹&÷?ë€Q[–†™Tµ5«�¶Ñ©èºèñ–—GñoÖýÓÞÄ¡Á—Z–R-¨A 5±>VfxêOØø4úNnŒøõ⥒ÔâHÉ~š‰ñßD 8°¬;1!)~H¨œ �A¼œ[å�ÓðÇ=]Æ2b'�DO“V€�¡Á"ÅLU3FfÖR)ø~� ÿT' fd2 :¦Wqà?‰Ä[19äœÍ0±Ô7†ÊÒeZz²32·nFi*h˜ÆÆnh0�Zðßd«v×"ýi´††å ÓC+2tϣљñ Æ$WŽê¤BR‡’¹¤Œ"ó«3éï1š ¡duÛ-C¸{#œIbÅ™ê\Ýn®C)''$¹1c´é�º”}eÍÈL©XRÀi9G ƒ#tŒ_þ–g[«àh%$N)•€L–&„û`‘ÁÓ(=‘K’Ìò�ñ’åB”i9ø³ŽÒ e4Õc…?“†¦Ǥ±þͬ;ñîÉÝ‘“"�^ëüâéÙÑœkRéé¸öQ~ŠÇ–ý¦p‚ ä {3å½åLwgè­¾ø´ë†YušqQ€B ÍvN Z­„Ÿ¿Ê¨[¥¼ä©J©>Æ«•–!HUÓ/ÙDÇÎïÿÃ}«™k=zfTöêklEöVÑx޽Bhþòv¦³a�®F혪 (•T6YHIi0éjM’Á›UÝxéFæ)ö{<—{̘e¼Þs�Ù9ô¸P¾õšD U餫é œg‘ªG5§ ¾£ÚK·üi‰)IQ\bû)ŠY*Ἒ‹n”Ôp‘sÇ^ùctÂçðf¡1yìÀž¯†ÕÈÅzâàXPJ÷ÆcÂ¥²Æš„à—àÕœÏñ¬AAôËóÀÔ¿^ÏÓ²Á{ K²%£äy¢Âg„€çº%…,{y‹ô³¤ïgâºøødƲj¿ò„× QHŸîg¾ÇñÕ [HU§ Ï¡ˆp¥ö*+ýìeüM6½S‚7ܵKÍDÂüCS½’«}S6MHÊÀ�1ææüÉÞøKÂÀrqÿ25´Ð¤’ýüœð‚ny�ûù†MÌ8¢¼ç×qµ2’%j8±ï…ujò‰„u@H¨Èÿ³LBI‰šó®ÏcîØÕ…ÂÑTý “.å'Šo…]®+È÷/–Œ“A?2u zf±�—O»ö°Câ¦dÒ¢—ô'�gi£µ`$wôÃAIöq‘5ÒªYQ.þ›&ò¨°<«B÷Lá«ùè<þ½ÅÀH™ QñR:G`Ä$Nâ¹’—`ØôT�Ó&=­�Ÿè¹ñç§¾a·¤ŽÊÔ1túfpÆÛ.ós3•>#Ô‘QH&ZX­¦²LR¢ÂsÈrsrò‘KjbÉ5ÇzLÑáΆéºsÈ=ìØjU¥%¿è[„áo2švl}âSðš3¬’ùO¡:Õß è-ÎüÿXÞ­Šˆ¬�%²ˆ«®�ø;\ ¸³Ó�ŒŒÉÝ4¤zèè�9VØåT”€jj¦Zò®Ôá-ZÍ`ö¦ä ðO3�“H ßëáºR”Õí÷+ÿ¯7ȉã÷™ ƒØò4ÿ)5??ð11ŸYáZ®›î§þ·“þàÊ)רU'ë Í‹QÙBw‚µ‹ªx7v¼?:>bÿ&/޻ȑ~¾|jû»ñɸx< «ÛÇxï‰oueïì„°|´•64”¥g‚ïÅ÷B3ïO#óÀ–\Ìk;«ut¸$ØUoK×a¦pþι›U·Ì&•üYªŠ`³]8¡|ÃK¨çìÓ€ddößm¬Àè#N„½`Ò®à�àÔÏ[2C‘5´·œ}êP?“Z8SöuÓsB÷K\n'|.ôè¨ã§ ¾ ñe_œÈ�.<4Ü+�R3Î#¶œ©&‚_ÀØÁŒÁŠª}† 2¬+,ÆsdĹR Ô®fto 'üaù6DZœˆoI¯àߣ•úÏD¶fœÃÇw]̽Whé‹|Ò§1–¶³£ôüJ)ýÒJS�€·KWß 3ã&­ÄÀ`1*„覟½ØZí»ÓB›îI,Õf.Ôß Ñ7j”Ÿ bO¾N°CHÆ8ዌ]Q~½—�ž«˜_¶FüNÆ:>±{©\2ìgß·øÂ,ÒcRÔà2õƸÙN6M'i´än‡cÑå RïõUÓÏÑóI0gVd°,hÐPÃ6’ž¥ Qáä R¸ f5��È)³° +�ÈMk�´¸gÏç-íã¶È-‰ZÇ6òYa>ËI¶y_Á! ½¸‘a!@9Vâ»ïU¥œ¹Ñ7FÄA‡Î®×6cûøþÒ)ü±�{NW çʉ w¿«µ¡ð¹(c°I"Î UÕ¶ˆn ™Œ�¾Æí:åLnuca†EüO „Ù³ ª¹›Y;²ñhU�B$Ì›^ªœ’�é)�$îîúº×¨*21n€-+Ü´ÿs öÃÊÊ jX~sóbzÁžø¬@j!>¦Ëq*ÆP!L™Õ³!ÙYC5 “ÿqyÊ@Ï«+?Úb»ÍTÎ×°Ã= �ÌÛP<×§™"á1–•4d3˂ׅã�bI©@SÎN��€Q¾ò^Éê¡h$ëKÙ–7JgV¾®¥46óÅÅÅ2è”´Lù�H:ii)â9<>‰ááÁèº À°–Å#VãìÈë>†£ýýû"ÿÇ¢äää÷o111òE‰T>?ZÒÓ×FÇÊ›ƒ®áK/žå¥ëÏ+îk/wþo %%%Ô9Ïß¿} @3õQ®Çåcò°´{]½Ë>>=�­•—?Íy=ȱku›øº²ÞÄõ¼±ÿî{23¦Ãù¶�óBŠæÜ Ë&ŸÌ# tÉ%š^˜VX¼¨:DPÑ“àû§ÈýS‚š@&8d„µÇèv{ý™]>÷KÂXá"vß6îQ³Ý'‰¼xÍ=I`³Ód«˜kjXä^Æ å”ËÖö’9c}:éÉw¡òa¦~Y•¹j4ZÃòN3Ÿá¬1‡Lz¶ÛÚ$Κó«È„R*þú…òj`K©áH¥—œgçQY?Îùï¢öwp‡«ÞIæÒT£ÿùìÒ3�#– $œøJ?åª7ç f7Õ‚H‘ȼèÂn fsÅHuMäŠ�‚Z¹=.›ø0*·¤¤®Ü2=½Pïâ7™gÃ6~h®eº! š¾´Äª€ï êã³w*–ppOÕŠ7*¬ˆavú­Cä˜fuÏP]‘ ¾XöM‡ m*½.«†´D‰ÚÂârÒuÔ�o¹?Zª±„š±v©füâ‘ç[ù/ku‰çì¿oSP˜Ðc7tÒe?”�°ˆÅKý,<5œ·9À°æÊ£ë=†µïð>©Kùþì $ƒ÷“dþÂÀðTÚñè�ˆ„´CG8Àê­‰Hþ!`/Û¿=/ï2ŽTÙÄ2Ž%ùá›uúìÚÜÒÊ ~TÕß{u>×~S¡Å9nã¸|Òþ¤âÏÔã’ß‹óŸþ T��‹‰NO]x‰f‰˜G­`^Ò§4xùl–Û ½ÜjÔ)Ò‡m2}^CrÎÖ:ÖNܘtêm@ËM;;ÎÔ«(2ÙØÒó ÓõUCcïüÜ¡Ÿc¨ÿYÈ™T}Ä©ßù ôÄ×ÒÒÂ{¶R[\�GÁ‘%ÙÿbÙ~¬ƒhÒÙ[�)²XÞlîÎNcÊXey ÓíÎGá ˆÊØcª»¹F%]88;#D6^| Ý©¦�¸.ý�4¹°ò´ÚÞ3©9ª�à(”uˆ(‰R–éP`ÙçHe¿us`ÎÆÚ-·*Ä}=ËçMêí�X²8uõ+•jŽ# “Œ¢áxó}ÒÜ;9ç@K!櫱I Q8µ‹+E"ZF´{O‰}¢»*«ìÕe� êéÙñ>"2Z‹@E е•µµcƒ«ñÕÓ µB¶�•ÁþÙ•‡ó°´ÌÜj•[W`HIɧ .góñö§ÓSæß%·——ÕŸeRʵjBÃ;‡KE‡ ™Eed4Ø.Õ79Ó•eSŽ1Œ ÄÛÚ¶±s3ïß6î�e4õE..z’ÄíõgÂA5ÚÁb‰F[¦û5\D•7ŹÊÈ®ª@°ôùý¬KÍl—ƒìx­��ÒG+ÔÔš÷ÖãM£Ž’™´ÈŠ _©¿¥Û¨Lú’[{”1Mù‘¾»"09ŽfVÙ£ƒÑ1�#)Uf]V˜‘Õê´Ê¥ØÒÎ�fÔ:~¾ò±\¹–)Œu§>GåË­­-§Í-µeÓG7ê#Õ²Ñ\0¹ŠÀ²’Û¼î ¦T°,ÎWó“Æ!uîezÞÚ3fãCcJØ„ñ’@ÌÿnK.Ûiø>6, ,î³5}%ë >÷j+üÝ9aÀŸMCsÍ£gg= ¥7Gn ©°sÇDЛÎý ”ún_A/áÁOå¹Ì¨U"œ{.9¨¡¸îÔ0V÷F<\^� RW©òÈö¶2ÑPPÄ(â[[u2N?~ fF¡$B…ù¦V‡‡�û—3ãß"¡ñ¤ûæÅöß‚¸�°ÐP''§Öï•®d¥+Ìc_ÉÐ#ÄZí¾ÏÆAaí7ªÒÔ·ÏV-.¦ ½&RùB‰%•0_‘T* dågÿ“:°3t·³dcü¤Fu†ˆ�d'@†uÕg¼óXŽ¢À7@£©Þtk —ý•“CŠ á÷z•Ó¿u1œN�2²óoIÏŽËXwî¦ýµ]T×¹%+$$¤ºLcÒô}8 \lv#º¼øk÷‰K…V½ÅÃ&o—%7÷æMãQ =ãå‰ÏY§"³h eó¤Ë®°œ˜––”aɽpƒ)%‚„öosó‹F~Lý§¨è„hSÝðbŽ¯Þ˜í2óX ž¶×ÓÑ^r sò3f*DI1Ò]ºì&Ërxë IËÓv—ÔK‚‚. ð¸LìV]Æ*Ê SCiEK÷W:§y{ qD¯“q~.×û �±B@¡aºOßeRÎ}¯@œà£æw¿ìµ³·ÿ—Ë }bÀ¾;7Q¨ºñ ñÉÛKÇÛÚ¤Åu’Æwσ¾57·yNÏ^kÕEìG$Üù“Ûú‘”ÿWsÑÞTYÑ^QχLµRõ¤”qÃèºúÚ磎ç«×—§­‹T½º£PÆ‘KRŸC•œ·g<ôVh“–é6YdT8…¬@L_QGŽëç�_,%_JØÜ˜m~Ú}Ê´)ݢàDŒVÈnSÔÐÙqä) –c”Å9—ÂB󙢥¸´Lêëdói価nyá j\Ï�š%ºö0Ë%:‹%Àæ²°ZãrõÏp-×½n‘â /?$ã´ <Γ²³³3‹Ï2ÿÛ08º[ò¹W4ð˜·k˜ÍhØ8õÆUbusû=ß#ux³y]‹ßnâSöFô_�,µú¢ðÜO}JkjT¢ÔfÔµ÷ÚáH4›=-"‹D).®r^eçbBCëoëU¨ú0/J†Qîl4댒äÔt˜ô/úÝ:ÖÞóã8Ù9%�uuuO£l‚¹Êy3r”šÌ�s?ñ2—3ÎÏ¥Ž%áaÅDL¥Õø½ú^:“%KØÐÖÎIÄ�\²ªJC‘)òï*DºxF�¨Ó‡])¶;?IÓ©ÞÊ­QF fSYˆÙe•³K/¤§ã*\OÏZ ²­¦7IeUMLý3�­V‡�aLOC²Üp&!ô7’¤cÞ»ãróð¢ÿz™‚„ˆtw¶äþ¼¯fz|º7ˆØzݦŒÃÆÆ½uqïxž’i.l€š`xØ@ÿ¡×0ðIúf€ØÜÍÝ*ÄI�¦]¦ÏÎNŽŽf8VNÜÐP¯5@å4 wwí-Þw}»H¥G\e–dâ///•m�‘ãk¾hÛO—éLœÏ›•ã™<†ûfÞÞ-ÖÕô9<žyÿþÝwæ¾Ä;ˆÎÕmR,³çÜ?bý*)îÇ*ýÁïRq§�“�]—Å\^KK‹"~þõ‰Ëï2q/ôSèå¥sþä|nÐÃë`¾¿¢ªªËëòÂÜwOO‡ßã…4Þw'åÅiúú HáÜ­[1�o.;·ùúi%Œ Rˆ¥Aã¿>_ïìô>ë8:;â�[][ó7xó [±#ˆ3ÍŽqúlnG¬½Þ~nXb`¡e&»ð"õ¦oÒ'•\�Z|ŽÚó½]:ã&F-yx…;ãÔçÏÙº©Ð¬R×êÙÛºÏg­è� ÄÛ[Ú:¶è¥ž,7±a"� Ü;†õlŒÝÌr±?o>äœ,uÄ9¡¹þÁéîhV�ÕÎ0‚P­¦îÑ9õ@“¾²Z³§ŽÎÞCPOîÆ„dö\›ÓBw·Ib>Y—,c³ÜJðž€'näo�ÖÞx�,²{œ p©jàHõÜÖf!~¬èÇ*±«¬æÕÅYËÔ]ã†kç„¢·OVT4D±.OOr�¢7[ \Þî•L(dlMhRP㎽=Ç ¼Šèÿ¤à •ŸUQ”öPúyêM H[=!^¯¦_ËÌH½êühoi'è±…á ©n Õ®Ö•d¸q)ÉI/Óo‡'77³::õv„D€} µ§d�›«ôþ‰‰@Úȼ뛸 h ¿³¶ �óobJ£?²C€�O&^ÖØ¸/ARœ!¤¯Ù‹�ÀÈXWßþöê�%!ø°?ûtZZöWˆyb{Òþ!gi‹$G jP\8™ä?ÔãÓ./ÏMÎãBo5�çæ‚Wi��cccéþ ÿº‰W²Råz4[ùr‘ƒŒŠ’ÍãëuS2£ÿ�_©ª>Ë�U�2<²·ÜpÒžžž^2<?1Xéwsw×vzn²an+×å—$vŒ˜ÛÉòÃn,ñM)D¥í �Œø¾>ät4m�q­-gg¤è¨jaëê¼½G†‡;Θì–Y„„Öœ²xœ­N—#™|F�ð.)âÏ»DàŒ.æ_îî ˜|iˆ·w7•Úmér¬”û’܇g¤ØêIÑèŠæg�gn'ý›UšºèiTs.Aá©¿¼ ¸ãÉC)_W„I3þ~C³H7»¾FCFýX†ñÇè’ S6²d¹Êj!=id÷^F¡çñô*‘^ƒ™3Ñéþ1‹œ<Þ_9ÈÙ²«5½‚ÄŸóeÂEe�Þ PØaOÆŽéÆ›%üÓÒ‰<˜^ªšžMº]Ã<2uX;}ÂÅЩEÏ4A¶¥g¥ÇP#Q`Jèz#»êúÇÜ�š[¶T‚é³\]$…žÈµãVz,F„pyÑmáìnnvÚnµºà÷oEŠ]§¦z›…Ûa{>nn—í}Œž9b“ÿ缺òEK'¨1Ñ­� Щ32ÑÑ1Ñ1PS`R01�Û58ÛùýÛ{)IfLíøý·Ñ㚀A f—èÞ0`–b÷íºµpfŸšŽ¨Û¬4—Ù}dqâ&ºÂ£ÿ=ÉBåá õ·¦½5½°ÎÍN‚üÀH�S�ƒó Î¤sYÅA·Ìhnÿ¶Îç�¦gwÖ|WÁ›#¸6¹ÂW®Wp*ü½¡ôÏïs'óC‚}9’n-±(là"Ÿ÷—a~±ÔîõBáúô*~­%ËæÈ�‰Á 6<ÄË+uÆbÊ.ñîIjP2öC2Ã߬þ¬ %nD¥õ‘—‰ Éâ—4táäÏâ�ΠDèm׎(µÁ¥Ô¢“1œ­Ÿ����ZžÈ½I7ç­ïðˆ3BTBâÉy\àýÍ,#c55W;;Œ�'ŸR�™RÎ “ÔB ÔÕÑî“·7Sƒjœ¨‰B¥_GGu¡W¤òÊp@Þ¼úÿE¯?Ý—/³˜Ú*à þÝ;w/·.¶]¥ôRC%Æß€ÉôZ— ¤••ö4L9Wý„îóÄGsþÏÎþ÷)ìõ%$ÂÖÖ踩µê)¤r*÷£ôï7—#‡Å¢’‰æÞö'óñu3…ü7†©C?ÁEFFá¨5y\VEŽáÂ#çð8_À‘ü›rãÎ|[åm]%‡äj1Èèt¹°¸¸¨àûXƒ„Kû! •˜Ûõr»*_‚Äg½ b¬¶=œ�;;{ zõÕÿþ‘m]¡‹Šfîíî&§ŒœÞÞ]»h%Ýä*2�cQ ÿ ê¡VÈ”îÝjjòÔËÒƒˆù?ˆ(ˆ½­Ï릠`•«iüsÿôv寮6ó·dŒ=fãëhw™4ÿyÝXQœÒ22"4Ô¯<,m-6›. œ5�e¹Ì‹ ÐbEUÀ±ÌqÖ�fu%K&–JcË}®U›Næhx/ ¢ÂD(?í•üZaKèa·l&A áÙc�y�o-œ6ç^…Æe5yôÍ­U/`GHAD§š­]‘ñi¦râ•;'ž ôÀå¯gc˜×(ùD 6Ò¹LL˜1;žºÌ-rÝE$˯·Ozmz¾��C®5«>XqÁ”ŸûBÔ (Y Y®4Q9²BºÝÙé™Gp2sš'œšz: W!ŸîH`!é&h(�7*ÇÞ.Cb*—Ø�FX>îÍ °žý`Ë´Ùm Þê¼ðÙ,ºU(&‡Èsj‹“è~= â@Ùd¨—pŒ13 Ç+*&ˆö{h—ZòRIªaw”ü¢«sgŠ‹¢àaçGG€l¥ÛÁO»d߇ZâK*wžQ†ªU¨Ûck©âˆÅ‹­üsé�]/4…ÙË5øšìfóïÎ]·a“{+•?ü„ˆD~q»^ÛýÊ™‡ *Ùt¶D ̾´8•«(Š ò´¶¦û0hV“$]pªõ]Cž{K¦×ÿþ°tíiUh¿#"ØU�)eD‘q³eq±H"Ø·ÅÒ1†.š§$•`³TèF)6,…½‹ZÌUàRi…ü©'^Ö;Fœ™*�¬Ëñ:49"o`ËKüñƒ V< ôÌž • ”"c’«6bt• ÕS"×÷‡W¢½Nž(jLXû�¨­‹ûósIîÖ¥bí/Éø¦]ŠÌD¨|:´µõ…Lzͪ4ÛtIÊ4DÐPÁç±4u:úFÚ³!HxïoFá1!¢#ß_A"—Öɳg“Ò°ÊãÔŒÞìvsX®ã 0×bFüÉ£éÌb¸ïÜ»ruu»»¹‰Èƒ‡§±^~üE19øþ´†þËÆöö¶{ûËÉH ã{¿/¯Ýso/¯[iÄ%³P™œ•ßœÌä°ɽ=ù€­ƒ…¾¾™¯[�<¤BSç vÿ�08¤‘z=÷eÑçØÅq©[‡T¥8Zµ/öíÞ†®Æ#‘ð°äÓ3Ù¯ÝEA‘ôI#uþ773uÉ&ÏC±E˜ŽÑ7`û¬l”�þ/xíÜmÿæWg†p‡“¬$›¨LY„žZδv†‰½–þEq;¬0#÷¸Ä²µg=W¡©œ ®ƒæå2œÔçÂ8 BMûñ·BŒšò,¡ø ?> BM¸°eŒ/EÓ%P>Á*¥6Õùìì²S42$ÁôIJGÍ<‚¦€î�³lÒÆ#Ç�ÌûJ;²…#‡õ‘|ýîã‹`°›Î/Xe0²ÙR® æùÙø“¹”ˆøÕ]é°Ç¾…âÃÒô.<,FÐHñ‘‹.z„ “¥ ŽíÃeJf¬xÇÛÊ™¼œÜËÊÚËÉÎHŠß�þóˆJÉÜ&¿Ó>æûr¡p___Šþëëôô¶ýs¿�ç+VŽEíg)§’15¨‰©©HNäõrh2©äŸ- Tpëá¶þçë]= B_Ôl÷š/^âe�Í|‹…{öz­¼v:·ê탤�Ïðù¹]í·õ¸jjˆ}S¤¾Gö,âù=¾ÔqÑÁ¡ÄöLô¨·.~›Åà�t\8ê¢=R!"ä{øÎ‚#.ÿëݦ” ¨NîJUë_ ±Ðèý?Îõ¤ ›I¶G™G• >A%•|£…�šúíŽúBoõÀ´‰øêáÖí¥¨sqò„}�ðßîüJ¥£©«‡ÛÅ~’&qÙ7|­ ÄÄI6-ÐÑ–¡OI’�J}ÎËXxîÍ,ÌH q+Xê÷šådÛJt$$«•ZÂ…=I<¶„¼$pfÔ┘+Qôc8"7µ´Z“¢¢ÑÙN_ÕÃ5úE£SŒTÓH'‹ÑÖëÙ¥ï‚äöºxVÈ•jl� *Þÿ®Á¿¦½êõ~+.Çs3b¬¼\CßÓÔÙ¸çF$0£N§£;N”9¸`°žÕ àÊ µ#Gýµ1Ìå¤I¢“ ypÆÈ�,ây4³möÒh ô‰JŸˆÆÍ¹ä°�_™©ò$¡È0âbˆí¤xJ9•0áŸXúå§ȼ6É-$¨ÑU‡,âõ¶*K¡�¯ÂÚmÙלM3ö„û„7’4üÎ/GÖqvÌs<ŽgŽšlúÓ:õ„$àyZW}_|a‚Dò¶’×'¤ë ÀÑ, o Û’@ŠHŠéks#Uÿ¨y49ÞHùp¯�•¯�å «™YY³ ¯¢J¿***v‰cty)û¹�áV‰>}„%“êž?ÿʼž“­ÓÊ.h™jæ|Ã(ÑÀj�‡˜šrÙÝÚi�ôØ~@ %`#…âÙáHÎP†‚€¥Œ^ÔNÜcÔK wØÜïz­ˆMš¹.æekð¸éßž�ëÿDeŽÇ,œEl› ?g’_A„ó©K¿5�D•Z§¿¾ºÆ²ƒ«é—Ü\p ‹•äœÜÇYG"@JÏJŒ²�Ö´çqÔÎea¢Î?³àüï4S„£·¿«.Wù�¼häÛÚ^c¶+ºŸƒÃ{ÕbÕÓÙµÔt˜Úåêà±ÕÓZ±…ÇÇdšŸq1u ué…,lÕíbÿæg²‰ˆñÄ6ʯR(r«T5ê6ÚOb£� ׸ÆQȹæ®}‹&ŒŸ¡}ɼ2Ê¥µe´†ÐX½©” 6"V@­{­ÿNA嵋«ÿáZ£×ËðX—¾ï\*©’ n\Çy·¹QÕýÚ³¿ÿûkÚïÉ‘H�¥ìÊmË!}ÉkÎÏÇ‚zxÌ9ÿJ?ƒƒM’NS^ùƒ¾íUÁÓüÖ‡KÂïÑXé0›™,…ßÂ7„õ=&Ù–¡¼ì(ÚuùT7˜ôÓ}\1Lx<›'-Z‚‹µ)&f´é®â°ùaOÈÕà·½/%Ýe|ÕdÄAS)V¢3R”ÈËJHÞõáÑY™¹é·TçfÀІ€SSûòåÕ]j�%UaN:ÌWy%d¨)Wg/·*Ý™ÐÇ–¨‚˱…�ØÛ?´Å¢ì8qeö¦Eö嵟±â ­_õQäæÃ}�~{T÷cÓé…�¹vÕÇÏigáá`�àš^ó¾8Œ™‰)¥ßÔøõš-?¼±°°S0¹a®Å›ãZTZ­¸.Oºy(˜©¨OV´XúØä†±Ù‰ÿ^ó—ÃÂp<�ß>�¦âÄ)ütñnn)uö2Û}¹ê2ø§]žÙဠ}vzÛgü> ^ðoåâ²òÊ0rXfAÁì!³„¡iûç]û›»»·!®Žb®ÄÒ<âú�lK×Û;¡oñ@­ü­”JÝÇí"¡¦öúWŸ=„ÇŽfë±@VÃLF®”>qCÛeõõõŒ­î4B‚l<ÌVgûÑâÆ¾¾0ÕôÆÑO��ï/¼‡Pn¤«/-.Êöbͯ¼�³ôÝÊ—•”ˆˆˆTç•Ñ3èûœQt{xšz:]æ Ÿ¸Ð9¾Ü=­âþbÚ673ç�ã»™?ð¿Ôy«Õ¦Ír_-œ¦•t9)xt‚¨ wWw=nF"Ô÷²}|r†Ç2dR«„FY§=Âç~£‚ùê{ùÌeŸp±²ãü�Èa{ýµŽÇ¶5ï£1®·8ÿ;{®Ù9êþ�,ÛŒSž¾†—Ѐ|ø¦ š´â¹³&e |míI¾w—7åÂŧ@'žptá`»�VyXR¦^´î7ïŒ 0å0Ž˜0¬­Ùe²-ß±²J¿¡—ÝFŒ;#,L»Åâbú/Q)5“oØ�Ú¼0~úÖ_0₯úl—„¼ŽŽFæÀ¼Ìó•»Ý›‡Ë——O§€ f2Œ4ˆ7Ù-z°>î�K R;™{‘ΦZŸ@5 y4QP‡&šÜ¬¼6K³÷Ó¸'‡1â" 9¼fZ³35[*HÅÔF¶ ºU÷ÓÆ‹ I1£ÏSVöæO”pE»)Ñ q(7Ž—ç}Ö\ö ƺBå<šXäk¢ã =Ý,-ÝØP‘¬ƒäº1äNÏ’œ^În6�kgv9�?êßîÿñžù͵r$fbDõñòò¥2Ó²¾ëéœÝ} ÿ eàY6’-S|ã%S•#Ña»Ì³=Í2ÒÒ^{¹®ø�º—éd–þ Š•¼‹ ™4lEE9¢Ü¤kö —.©Ü¦Š�ö°Y‹FÌ)çmL^Møù™_[̬zRóüWyÔùuÜŒ3Œ…_¾�Ò¹!Ù)$Á–mØ¢X—Ãe¥°,“!­ðc¸”(àôˆàøL¾Ÿ‚—ÍÅYušm ¾¹UÐaÔ*_Ñã2%ÿs½½ÃB#€€ä¡·H°­ºùqìí9¦æ¬µ”pqG&E[{‰„Ï—*Í¢ àêêŽA±Ü踵ö²‘ehÏÕÏÒxb,)#~G Å%‡uÖsˆ!üvÒËIŽÓ׿Ïõ ‰¡Ø­;]xWg݆wVŸ#LÓÒdÍ ¿'ïô;õ íÛËêûí¤Ÿqìe*?¾=w½Í€Á-uMMUU“«“‚¬¬D1â¡ah™Üž‡å\kÏG!!šôêŒ)²àÇý—:˜üü–][ ¬jz4¡‡m•µ—S¡çIÒ×0Òçõªšªv/‡k•¿o Àf(·ëÄ–ëJøÆ¼¿ñ¨Â¢Â×}´7ÎACÀ'�\;)Ú¯ÜD}ÂIÉ]Âr$áfÏ3$�} ¼X‘áì׬PD|œ¹�ÅþMü)Øt!I:DÙlá‹<3ÉñÁý6› Ùu§_®_sE#Ö£]“QÃzÙtàÃß�kO�î‹×¬.xˆ ¢@ÿ o Å]:·Ò¨ÑÌ@à:�GSÿ'A!‹÷¼ÓƒÑC9Òé1’ Úg€�#?.½Æ׸^ÓäÒ£føÅ£4ÎÏRh„@ôóbxòÀªµ"ø`(2 tP®f….I»lK>ƒØ?cnçõTó˜è<˜•ܽXò ÌËv¸@8ÛVÇ1g¨Ÿ@žxIÑ| )lÂq1k™#¦—) ªÊŽ×Çû{ÐÆÄFOÇyTÇýµÊxxBg€ïnMN›×Íðõõ5$¯)ãiö΋:+TýσÎr¼9³äýF˜˜˜:ž@|òÑòèÁ’ÀÉÞ¬ÑþÝWƒhŠ ÉÏêO/ �<²>#1%l5èÉ.K)ß½†˜£�æ*õ›|š:*ßJ;®ë†††’’p¾Æjj[Ìš•ÄÔÁ½[ŽJ¿TÕ\×¾úÓã¦'›"ó ªAànùê×â(«|Æ*íõR£ƒ“�]>¢�¢ãe©c%ÁÊól³Ï}Õ3Ù1b*�:[úާ݃5Ì�{·a PG[»ý•°v˜ÃÒ??ä¼�Žn�I+±Æ+bka‹eLY­þŠÃ8~ý�.LÔZ¬|íò1wsssö¥$ˆÀ¾|xž)�ˤ¦H“õ»­a|‹PˆÌ›ÿ‰‰&�†}¶ÒùÂÒö/8ýP'K³gøp÷NælY¤a´ßj®8¾¯Sø›¿õ—Aø‹ °«Áâ=BÉÙY¨ÛË–ùÜ蟶“Hý9^Çûߟ§dæ¸÷šílv.á¹�±8ƒ2‰ …%›?çÍ.—¨Rˆ‡+ŽÃï†;¢”봋UÙ¿E•&›®i¡p‰& ­ß=©íQЧŽZJ <#È÷Y‹5 o<];ÖÔÇň˜jË"†V+è¡'AœٹÒت’4·NPö¦ÔÙ„�ƒº¤ü>AiaŠ*}…7 „ *}%"÷_©ÝÅMÙÃÕP !Ú‘^ÐíJS\2k~ï5 À5—Åø}û÷ÕÖyZ uç”P:áÇN»šçÕ¹¹»¨Žë™òòÑ8ÿëžR�Š¿%kÌײTXÈŸr<.‹ñôŸ‰ŒmŒŒ6™Þ6ÇMµP?}µ´±µ}P}Ã2¹¸¸´Þn‘úïñ­q"Sb#ªX™²â Få¼ S`ØOtÒÓ�¾½ž½yk%@“)ÙÉy©y³»^ß߀aj»N²÷=Rxíõ &bf—ëy®ôÛрȱ… †ÿ.5�£tVbö§^´$¼˜º:;Ó¹?îkÖ•0TV ä56%9&œ§•úQ„[‰àïÍ*äv‘ ¼GÄôÙÁ “/~xA�“�“•›wºá_kzñÈí]úø¤…&v°Wö‡Ÿ\sòU—÷bþIëMðf}m¥ÍȆ{±²¦PžtKÞšüi¨YMŸÄ‘SûÙXç�Âó#ùºbßÔð¢8+®«_ƃA³P¿ úœêjp®éB-Y?�r Æ La»ò²�>V2»«)/b¥XÁÝfñ¥žÖ�‰þ¥Š�‘÷ùÄ^ÎÞr"ó®o¯9w±È§§¦ úuÇ<Ç—3c„ŸºFº|¼ìnÇÒåëë YsNè-„ ;JL+A¹XÕ]!NŃjär΋ë½?êÇ –Óz)þ QˆÕ¾dÅ�@ª_\·•Àì|¼|¦Z¯M9oEÙ^_²%«‘¡6Ïß[“ ã]I)ý²`_œYa©|8{9ò£A’ “£‰¼|�‚J‘üŒGÇZŽ|ÑVÕ¼ÿ›Ðs\ˆp®rqx „¼ UQxãÜöö`Ñ01CDßÇJ}º,×:‘ËHµ4ޏ–<»€=üF²;.ÂÖ#åîÆšöf•Cç‹§pÆö’*#Ðþy¹À:÷«�ËßÊŽ0s RŠö0¸yÄ y¤ß¡§Þ /•ð8•È-sD˜ñk1ZI�‹»TE„õ!C¥fœßïy¾+þí.Ã?i oýš¢áñVpb¼7º…‰òå£ü–Ì)|pgq­]"fj¶^ÕÈÓ·§úØ`ªèàSÿ ó‰•ÜÙ©"†0Θ =}‡~A´�Í®ª˜ØiÁ‹è_¤½LçáJø�ÏtG:¡bY ´äºª4=Íï#»Qðk{”ÝYÏTÑ,ý¹M¹h‘OYœMéö%%ãwD¯)þx¥¥#i²â noosž†Ç³�©VV¡¡ÚÚV²²ˆ��¯d?aM-.:íŽb1ù½"½?qww{«×îÓ“#ßgTµ—íýŠç÷ºðµ@bJ ¿r&3¥rs!g9ŸÃ}€Ð fÿýNJGC}½ú ^`—�‚‚½µu)å^ÖëêÜÂ;¥¼å'¥¬l¥lv¯Ük�¡Öt_Ãì³|�'¨³ymU¼�éž Ïì̪›í9]A“(+Õû^‚)C8ò$„GVúÚ UK£�3”õæh�3aÌ}œÌ6îsa˜|OœSúßFè*•ÖŸú¯Ý-ÕàT•“�½<âJYž‚Ì;&û3­ÿŒdX%²^r‰N@Ô ø‹âaEÿ»™ˆ$ êð:FUX¡‰“èßî�wŽ&%¹‰®éªÉ†„½­ÇÒr2[.§‹{`)¥°1„3)àó¾f"¿¡ „®ûL’¥§»0Š‹YeÑ®èÖœ+­\§Üæb« ¾1† ôÓwž]]Í^ŠæÀa€¿ðÖ(Àn6Tzì’´äÍÜá+˜6…^@ »©âùÔ0Ž>!LzÜoQdÏ„^­èù¥lÎíÞĸPWÿ4Al÷|Έ•é¼T_Uƒ3£‡=ÇÛ0ÄÓô€Ÿ»[<ïM+!^foöýa¨i§yçt¶ jb ìèãbaeçéãb=ñZ:|¬ü¢ï·±Pq«xv†8Þ“€ ~ÚªÈ�? Vßo˜Ð Kb‹9 aųTκ͜ „Z&I7i‰ÄDQ.þµ¶ç|éJ—äÄ™A‹K×gô]mÆ�› J̨Š[ø¯v9îåƒpîO¦m1¥è`ÊIMvø`Eiº™ÃËKeg‘<š°å\BŸ2mâB‰šõŽfÌãËû0W§å¡—�Tê�þ»ÿ$äµfŸ­£û=¨gÒVC N ;ZŸ�€`ÌhÏ ²ãZ’gØ.O"}Þ¶©Ðtä…"#ã_ž»™Ÿ ÚCv J-ÜZà æ2��kš;÷™¢£Ñ°ÚcÒSð¿å*¬Ø_Yñœ¾ã[e¨•ƒÕZSÿÁ…Mù׿ûG£ŠåÄßµÍÎåÐ3áÁŠúgö¯‹L:‰ò»üæºs²Q,b¸^º}¶wò›U´¥èÇ.°Ð�ÑJVlJ€ (æ~b}” ¯>(ó¯´æo B)&;�.N€<˜2j†ý¥òu-.6&ÕÅ8¡ËÕýÈ6tœ'µÐ45Y!þ£#)ïnK0P mÕ#h©%�`�÷�“Myim­õ[á²êEµ‚ÈM¢ÂnWÏ~ÌÌ´ÕUÊÚë+ß^%;[æi= Åv²/TöÚÄ|ÆÇŸ2pŠkšÞ‹º¯_¹:òŠC|C�„+±¨|B|jr®L̉~UCìtÿ‹à‚inKÎöu� ¬ëc ï@¤n;ïê½§5¸à«�rÒ�®‹û¼¢9Ά]2®½Ï§¯*5Qx«ÜÎÏú^)Àµu¸~Œ:K96Ø@µþyÛ]ÄC4«V�Èï¼ÛaL=_I`ÝxLžð-ôj?@‹OÒxCÍÓ 6"5nMœöjïùËû·´í¤ÊØX€¸œ‚<fó+�þ÷¥çI>¼"¼dÛ»Ö„r†¡�X"nöå07¶a�û{Êõ;w׳Z®}Æß¡›Ü¬„ ð<—T´=|tçâœGƒõ�–f›¶c`¿ñ1ÿ”ul»�¢ †ïü˜ê_j;ùÜ´Rºý7·pnbÆŒè‡st<0þ‘Ñ0Æ!zå›- `¼}¯š!Ñ{„W’(älëLoðC¼˜Û�1ºJ$~)5YFž¼—¦Æ6£ÙÙj‡ 6&xJ`�CÇî¦&¾Æ5’OkIÃ1»"”¢çº ‰¢Ì…SH}INaÔóü¼ Ž%$Ž€pïûføqXç¬1 cã½D˜Ë¸oìÅíCÔ0Iz-š b^*ÊY.8‚‚xnãž È/>„aQÒcB§…~Ì\û&H¾=ÜÖüåÛ“ß6.4{3|…“sÉ �½Õs™’2TLÙ¦ëÕ¿ozƒ+[“ŠÿŠØç\{œ J‰©bïE Ýá:‰‰Ý\�yF+ñik¯ý¯bvB˜;ZîOwÚ”œ3óËn©¤^Š¤ŽŸ2ÛWš&ѽ%V2ÜSÖ‰~’ý zi»p°àçjû§;ƒÒ,(Lq]ñ|c�¤p¯¢Æ ºÖ~.9äÜÓívÖ{£‡"‡-6yÞÞ˜œ©“c¾•™[CA΄.‘éê„:wB!§ÿú䎷ì:þjÝÖŸªš6•�cîŒÔŠ 0@™ËF'�×Éãþ‹ ŽìC×/¥¥z\±)ìÕ +(ä]TMð'÷VøŒ”cüÕ2'%·Ã1#† 9xf`Pd^¤øoUS <ø›¤z¨7fsÿú¿y˜cN½Î,M�i´2•ÔáFŒŸ5ü%¾wÿË('„~ר—Ðt½Í‰m*»K¨c‰º±ÅLëdïóõ ã€þËPjƳU¸Ü¸ç´ŽœÊ‡fá­÷ãp�!œrŽ\y®-O26&–,£•Epóé0åÇ0Ò ‹ôá•Æ~OänðX–ÉêmMp`j•bäx�á×s:“+_óÜö5©„C#ñ³š€w#ÇŽÎæöõ±2,V/m;c�hIêŒùÂÑ*Ÿ¼•äU t�a­õ…>µâ N¿³(Íð‘ÎclᆃŠVü‚Ëçé¸YiÐÒÀ åõ¦j'ë)ü±n,>RÔ‡ãÍ9|Uó˹z„ÞÖÖE 9vëÜI¬¸[¦EøkÏÿƒ@Ývkà�“‚[³þxÎ=¾.ŒûYtËq+ç~1©Îàßâ±ãz¿ ýEù#û3`æl U'ì$3N`6DÜ-í«wV;΀ÙËxÓ<,ØÈDÄć%cµôÒ´Tš˜¢jñ0~3Rÿü~.ü!!ù<]ƒÏ.gâw7óu®Q,ùM¬¿�2>ÔB2OÓ„Sa·üPó’îÐ!E&35D9.àºè{«´Ò¼ID ÄF¨³%4Ju£ÚVƒiæO Ÿ\ÐkmÕ  b$Ÿü¦>q¼øÛc[ŽGíhg¦r¤v�b?ÂÅfàvB-U@ŸÐ)–ÝJHl[íeoPÊ[B[Ž—»¾¹¥”¿gVN& ùýüüàXZ×�ý¢›ó'7ÀÜÐç7ÿ“hQÃüJ™ßN›Õ;öq¾ÞuÙ+ˆxØÄ;¤Ÿð»#,:RX·¯�ÇoRòZ)2tX#­`V«4\å?� –=ÁÎb;nVO¡>´sEôÔ­O€Æ'~ÆøÌÑ4TθüláÛšAË?Ah]qq5j�Â+—ôšÆÐN;¸Þv}ªi¯ØƒÃ$°àÉ¥°Ÿ9°¯%„»˜ÑÏK«[½E„Є2¾þ`î:±-OýyS]H˜Y#^1Øs ì,F³ùãk|�9(óñ¹(ÇÚÞÖÒώП2˜â3œ ÈÂóVJ¨|ë>A’#¥Xî./ìÌê‡îä±HïàÁ'›0"Õ�M “›¬%À€º ÏH]nÖ»‚Â$Ѐn:ìc£Û—…¦v)®t+� *”�!C9°Š>"ЯÙ}2ï{2'Ž­‡Ò@©žN�æÇï̸Êqiêaž!»¬¬‘41ðÆ@S¤¶‡‰ ¾u³¸d¬Ÿ–í» "6ôNKmÁõÓqw7VPO™¾x®[œŒ3YìÒ’m4�Õ@ôXRLJÿ3t�Œ±‘U"¸�éS˜B'mŽ–ý—l—àö û)a%±C<è‹‹Hüo#Tâÿ­©94Ôu¡‹Ã;‹óä#k®p5�I.x›¸h©hA;Ķ~±‚«m‡Ä«�²Ïépt¦R\â ‚#ªwÚ²Œÿú»¨åå~c<€&ò äÙFÒªä�‚BPf+þ °Xo¨ÜoAfD��îäâm²œüí¢5­·]ªã†¦©i~@po8Ø'>ÿwëyõħpq_v‰fCÝ6–›CB{¦Šòé¤Ý—5æþb�çίã=ù¨q‘�P1ÝÍ|°èPPu�†ZÉr,ÌJèý€-ñéÓÉŽ»0qZgn6èð�ôÁëzE¾>eœ·ï;òþ8P4mU·¸}Ü==ZÞ—4“ö ³ÙÏÝ’…àn>uSö¿hT1áÁˆº½s#&Á'Ú?’î3Œià1Ñ>%}ºë{ÈV²KO¶]Ê Y O œhs€^¥kÔ5�¨W¶éçÞ 6 7ÒB4ÊZbôèÏ€Ô ÁP‡M%ÐZ¦ó�˜±ãåò‚â¦�â�Ò£ŒfËn7·5Ûºy=ëR_¿Õ{‘„?í·]«§0"/0¾YÐ9ãr~6…¨ ÞÅý»°�<›Ñ|ßù¥ñ¡ÈdáÅ0Â÷*†K¿9™åyöòhàƒÑ–u^vþCËù?4µÕXÙY×|Í/ö6¦ NMNê3µÚrÆÇíegŸ¥�?=ûå0‘Ĉöt‰òã¢À�ýÎ;Ýn…"rјNçqšFƒCWB³þ<·4N¼ pv¥•¾Bì¼&:¬ìi•Ÿ8|DÞþÿ`9Ÿ[Ñ’ÞÇcܪ vZÐ¥ÊÛ‘Q“«TµN¯XKÙÅPVû¼`Á�*Ù»9žGsãk­Û±•eéóaï—£8~Áta4Û*ÙZó²{Àc´½ýÂÖD¨á€]�«€3Nä™ÖÕ³èÌLfe©fiW@ 6�JýöÓ4ÂÀ§ÒæK?·y&ë.�‚—b¥ê„äãËÞêpƒÀL²\,òVRÏx.4þgÙÎÏ�PëѬ=Ì Kœr¥ß—½Çë›ydƒ ïÍcîTPB€”É"|ó \t½úÕe ÝÓæÎ˹ñž%§ÿ'KÆ«èª`�ÿ '|im'.¹Ûçņ^œ¿è÷ã}Á$7XÇ.òu!Ä€þ ¿™Š�þ1€[‹å ˆPwmÁO$œÏ“y):»‘Å2½*îýðØ»â³2ùDås>@ùx»³º/ÕÄ•ôu®45ÓÒº+£k’§rãmw~†‰Cõeµwø{ÌzHÂË¿5‡&„5ÏUÓaW í~RO•h>GJzíQóKš¹s�–ÿ^1yõÒh}Ý‚·“ÈQök|8ÑòX’æˆÅåVÕ[ÿù âEyúO¦Çãäӂ߉Š=ƒ[¾Xs幘ԩ>Þ2åÉÇçm‹ŠKu¯í3¶åqiÌ2ù:Uà~ã¤{ÌbW¾¡ò‡ÿAÞ¯ðŸÎ ;\ ÑÙb[ˆOùŠÙÞâ©»Õuë)’QËÌ&<4 ˆÅ�a*¬Äö¶Ùš»™Ôêãìõp˜¯YT½;ˆD”°ð‰V-ÔF·õò�ÞèÄ¥E§Õ]moþMmJONÏ% ݳ/v!ù�ƒrì”ËAê®B´!ˆ°{R½7Ñ{Â^ ²¾»;iCj÷|fØ5ägIϘžÙLª¢ƒÔ¤ö@jâÂ7÷5Üy—~ô43¿¦-ØáÍê®Ñv™ë‰öV·âai÷cD�}ÏŠ�÷`Yp*3vfú±¢°«jîÖíì`uÍÏbùFl¹ ª§ðßJ©¯ºCŒ½»Þì AéÃúÊ®¾íxw6*ʆۈTlì¶cþšÏÂ?ßD"•« »§Qv½m7§ù» ÔyžZñ;7¤%Ú@E<»¨'…³ŠI^ûR‘º÷ 1ß�éÖü]7·[ (ôv�.P ŽÈ§D�kË:ÐÞgr¸w3^µNw!K}¥‰O¿Ü½ßGqeq­mm9¬ÿö»kŽÈÝŸÊM¹7ÑY5+6ƒ+Æü¿j¥8Ë•jË9£.�)œ.Ï,,,”—�e!žzas4(¾­?«Ðc›"…E[¦«Iré±ð+¡5�±*פWÊ€†5ZöU•µ?V*ä[jïH×)O[q˜¿ý-ôüFĵ”Åå·÷b­ö%É©@·TÝvÉmDï.•ò¯àÌ㉠͵…á'•Jk±PÌ@·oô]–ì�ê…ããQÙò×ï6¤k/çgîÐa: Mµd+4i8B«·dSÂ%çêÆbääÀé9�màºÒâ™™�‡&Ïæ[Âà§õ& Ÿ“bŽêúò;Æf!ûôÙ“Œ×¿Ù¼½KWÌ-×þÅ7ääÄÑôßp®]Œç�X†Jüuÿ¾ýžÃpÙÊ ¾äÞKr:H"mÍ”­ãw;¬Íû¥Xœl­Æ€Ÿ`‘¡Þ¤Š ¤ÅF>y´õÍ C‡rÇü�93:C—ÒÜâÝ“û“ dy3˜†…î,0»$c…Jdàl}µé�G*DÑ8çôAž[¸ÐФ¾~‘�7³€‘ãê÷ÉLJÛÙž²_#%ãE�Ó'`ƒ–”› æ~ÜÝ=Ö4Yww.ò^A�>|¤à jz{s±<7Øè€ 5ëtÜ(jôó±ò±;Æï’EààI&­¹¬…ÆŸbÝbÝ?"D">U¡�Ëß8®2=?¹Ã¶C­c¡eRŠÚzÛ™!2 :ÝÓ_?/¸[Ïh+èë³ã.‘ð~©®Ðoádã³MK>¼BA#àãƒÞ¹,I™UWÇóÜ*Ê«ºï_<ì‹Â+™±bÆæuÜôб^$gÜÌ�–ýƪé…˜„|Ó«“,Nr§âÎý³ss[�ô#×�)#ú¾}ì(È’7O^ÞOâ¡bReæ�0»™3a¿µ‹q›\$n]�<çÂ)RÖþíŠõ?jÓ`_>øÈ_Û-9lÈ{âÀì-ò9Y[['rÙ‡væ(¸æ4_ïÞd Ôçÿà ¬ú{ê¾þC±N;#µ6V<ŽK¨:ÓÄ~0f©¨¨Tyè&tCÒÞ÷ÇÿÊ&S¤€Ì«ˆ‹ŒŸo¥–&N.Û?Lµ4˜ô†v�$bIb¨7­éèTUŠggã7 göjh9\²”3àKþŠ¢£ï5ç6ƒx$þÐD¦Ú²@õ°Ëö(ª‘Â9Ê’ÑD~‘6¢|+¬Õ.wè·ªK/<À­ƒn4Õn.T’Ž ¹÷õ3›™™Ûëvܦ�ûÉ«©)%Ó÷LsİPÑE*¨Aö8ù!ÁÊ$T3sqq ­�—À33'wO©c.z\²‰èÇh÷¸ÜçÚufø¸0ìcáÚg³LÓëmÕFp t“�bj¶�:®¢†M_o{ÔL™êÌÕfÐoqkSfr{¬Í£™®G©œ)ù¥]•WR t¡ô0#)—ü�¤\±b‹¹qÑÿUCýP1Ó*¤�œ˜f¡”­Ž’ªV2™Ü|W$ÐÙ .�]¶‹ "�Æ@WB?ü3ûÕ9œ¥¾½½½µõú~Ë\™�áÕt=†ìÒ4G:f„8$é®ÌÌ ™¾sÏ­­5¤-4;ž4WXÄæH`v}¬/¯Ù‰wÇçSË�ÊÊéqû_€™z±ëìpð.=¥Œ‹H%àõš®WjÎøÏî¶Fêë´g e±Ã˾À&&íìÔ˜¯ 8nš|IB„ Z®“•Óã^BˆÄJ¦¨�“‹©ãî{�.1Ÿ >µP lÕÙHé×Ñ¡Eº ¸8W k™ÊÊJ½vK ‡ŸÊÍõÍœžÎÝÌ.Ñ“�ëèPÌýLmwßËÕa¾ïH›=C¸ù‹iYy¹­Ëµ�`E¬}˜Gè ´Ô\h-SP=^ L,öáÔ©PMšNT0Õºmª9ÏŸ¤”ˆÝO÷;]q7ªÒäÍjw;)1ÔìÌUfpws#âõQýÕ[œ�›[±�¶`TÌÏÂÂòþ<7¯çaUl,(¤é¡T£’„×§±¡a®š~…YL 6€­½½¹½®Êó¹÷B‘»lð ÕŽQ]Ng—²òº:íâïüî³ìôb7Л™ŽP@ô®³«‘j¢˜>¶†àŸ¦iWWW•ºfÑ´‘Ë3๥–öÖjáâ•Éɇm°—9:&E0e¼Ks[]ÝXuä¨\šå¶�æ*Vó¦ÕqnªÀq{W!CCº‚O�Ö•Änìëh²²²6vvýKK|â¨$×O¾àD® }˜Ø ÜÎùùÜ��¦¤$œf\û¯��ñQШ¼¼Ü¬Gðúz—d�ûŒ6ʹ֢ûóB„ ·;-üý;hfO¬äJWÝÆþ!‹%´x{¡ÅÆà †ÐiT˜Ôà¯ó§Yy>�n5•C*hhhØãœÓÂrÓ•yXhè”턇(:ëM™¿Ä·ø½XÑ‘�à øŸÚkŠÂ+'¿tAŽ¿®nF¸XñK ä QxL±ÄüóKkB|¾7‡8 rldR!GþŒ1úQ&@!#|wñ€|‘2­.“¶ÔoëGˆBÙ‰¤�C#>=:šsÝÊr_­P/…WÔÑ9Ú ”€îŠ9â‚vÚ|bbb˜_St)•ÛH<ÑŽ¬ñ>ÏCÔô`^t �ªé1(œb¡ø�Æz^5®vß«‰_ó…¢Õ*bŸQ�îÁÁIõæ‚®8¸Ö�6?~ð|0 ²`ÇEþÔÒÒ÷IT ùþ²Ÿ04RñðQ¦Q�/I²Tl‚~IÒ±ÑÑÀ–JØÐ?MµŽŽŽÀ`•r†òê2ÐØØÎedWn®w�0ßÖ×ÿuª~Ù‰¸@ÐRÿô)ÌFÚUo�©àâ‚0R�˜„ç÷Áâðe5½L—" :<1�{’•–®nvv¶�Lƒ»««iMÚNR’S± dܤBü¼�&5¹±cƒ)^`‚Ú^|g´Ov·MŠu TÕ-4…85eŽíª'kðò6cEü)&¼Ah—„„"°kbpP’SCS[;Ùd�ùz,Rã899C|È ‚¹‰PaaÊ!<Û»ÅÒï)WʪK†žš�^a¹¸¼|üüìCOrvFª©§§§«½Ø~&×�¯ú…‘~4*azMè_c#; F¬øÒ┳s G¹™J‹ê+m(î½§&m0ýÒwÈuôä€Xº³±¥É†.Öj«—ªÍT¤rJPãˆ$Ý]Ò ëÚÛ¡3™Ô­“¾vŽó”U–ë5¹8:’gɳýÞQVâªó!w‡¼¡¡!«#Mª]5µÀˆ¼AÎ:Û%+t¨@§~>6o»çéÆÿû,ÀVÿMÒNÒl2gÎxÊøDj@¤Thh(ôÄýÍQ’6Q,,LÀÆNA�lýçDBax,úe�RSÂåb]úèµF’1¸Oa."úß¿ß>L%ÀÇ @tm‘ùÞ®Ùžö3Œ©Ï©sqq\Ü1~ ˆŸÌ…„S‘9ÌW°®ÃßàxbC¹‰_б§z4w#ׂÝíæpǨÊÐÿÜý¼»kæí-Aßi':�fØéáà Ê5𖆮573››Uç[ä{úôˆ‡»ë´�iž¤å©±-Õ¤±J—ǧە©©)êë“Ôª~�تšÖFˆ¢eau"K“ý6¢Ä§OŸž½Fè±�š �$AåÓs{Wnnv;É7ì]¼ÝRmWƒ¿E ãgWäPæúP n°Kº¡…ÇEúÕæ:@:½TVÖ $)äŠÀWÎÎ!>ªô «Í÷¿ Àÿœ!LJ‡º›™®® MþúÆÚÔñÖ´ò™™$Þ•¥9�òdž /ôÌÏ$~œb«üÿ=‰Èuê>¶ô=[@zár Ó´Þ’àÇoåbúUm~f¯¯jjÑR:ÞÞô(ååt%é’@•òòh'PtÂÇ’ðÅËRm]Üßµ?­ ñ±é”«âo5WX§·×7{YØ 3‡ê]CQÄÀÀQÄï�elùu¼ÍW%¦«gde ™²æJbk¶í–tµtò˜GN¸Øˆs¶Óí¨o®ÆŒϪTíËþ,eg-#“׉IXFdä²ÊÊ›ëkq ¥¥úšYÆ×á]Ùž)—1vdØ¿mm/›!HÍu î½,âPdÐP4ùvŸÉ? &Ûî\âýñQ¶«ú¢B}ïvRÚ1ã¨s'+Û’Çw~æÑÜÞŠRTUµ·'-|øQï’n_“èj¢úñÓ2�0#£@9‚Í,�ªßÃѲ*¿¼wgéUÞÒBˆ¾œžÃ&¤dÆZ£[ack»�œ5¾÷þ$£8†¹¸HÀoz:=½¬¨¨§¦å,ê8"mÆ”·ÍñŽºêfLT xr¸Ô˜ØXÎlYs‹€¯..E&SªVDU„²|xˆ™Í:‰alãêʃ�è "àÏT¹Ã¤Ï’Ïñ{váÆü®¿¶ ½WRò¥¤º¾™ÂÍÂØt‘‡W>%LI6R@åågÏÒüüஓÏm͆€Üd‰uÏù==^_¥Ô�–yë,Í5¨þ ^æöHhëè =èR%BTõ¤…,vˆU��–Y�öÞå�‹úüâ¢4•J„IœéR©u)Ôo|‡^|=­:Û‘½+b>¿©½«ŒÐ¶Ìkº[{]=m!xÿ]=‡Ô¾UÒ±?ÎuÚ®¦®bØ�Šq3£ö�,J¦AvÄF°Ã3*\»Üéõ¹”SC�E´&äÐÏMŒ®K=³žÊRHèÅN@—™$-†Ý×#Ëÿ°­Ògtq3çÇÏÁs0õê¸Tͧ„ŽÑ-ŠONôƒe˜Ç4fB÷BÍ£i”¥tÝE’¦ÝÒMJ‚èØööïâ¶ÁTóUŸÓy¤WZs)�4ùIø|î;ÏÑY>‡“q'#°§RB3÷£æSô³„"ìI’¦¡Krj**j貫Îg�‚%©¦�'ÿ†M¼É"�6À�eu201p0òRû ÿüú›fž\KÝD C¬ë H.ÍX�Uú·:˜,ú�L)ÁG0‡ UÙÕ�®},8*°KÑ["¬â¢²DàQ�‘¿D_‘ð½0ùïœoä'&bõ}Ã.øÊìÍñD®$°¹©ª‹G@ÚÅÃ%K %•·Í/ êKŒØ¾Ê¹ŸÆë¸ß�ˆÕXýŽúººôîTƒ`htáTôQ u(�G•ª®žÖw­bµÒð9²¬ÒòÊJCˆPüÛ/Œ÷•˜X/(H$�o•¦à—rD‰£A°Ê&ÎÒýç€=,©'Í6Ü`ÓGúk4+ÔéÕLÀzE ”O‰¾vðO2øÜ¿œ ¢Y‡¡º6D$”lƒÑA<ù™ÎßKÕh]¯�y‚{0Ä”º H ƒ•‹·kÆðb{íä—}ŽÊJ´]3äq8Üâ¶3Y‚ÑÉ{s¯±a7æ/°â²ÇÞ'usoþ·«ô’‰GÃg|{«# Óí®7�ß¡þ}cÇÅ„•TÌÄàÉ�´üƒ¯µ‘¿D>Âäüb q?©peô4éçÊMäõ�AL“ÄòÀ:4£˜ù›‘¾×7ד§G†4Ï3�4®«§öÃ�Çm-ÍãL1%eºvŒú7/{<{þ‚oÏﯯ×—S›ÂE+MT¥iaaU#ÓÊ\IýλÖZ_Ü–L¡.{a{zzÖ<^nö˜tï·ãÞ‹„ôtt Í(>mŠç¿>‡ �Á`�w¹K#¼#æÈ±vc¥ä¶:ì7t»$f†Õ…U;b¢Ö×G.j*ê6wüHýî_owÝ´KÏN‰�íÎþHaRÓ-.¬,¬­1Ey{[{˜ÜƒÍ!",\’–C€íjõ©£ÕåbêþžûKf*`ŽŠ×ýpšmÜç È¾õ¢Ëû¬í9©òøä¬Èò²;oÍçÈü î jTº¸ªªjWñê² J ›�‘Ñ…×V•›GP­r tÞ�VFTê“R¶g/«+¥£ËÏÏW�¸áRº‘ž¢ñÌúYqqóq¢´qÁ—Ñ��d±±1ꚯjkj³ ¶·kï ëÆ+ÿŸg »÷óýž}«ãÎ0ލ®þZ§u%š�½=ƒnÛa¤�§éôŠÂŒÕ Mä@ÿ€àýú‹x�ãæöÐ÷ ÖÕrõµ……••…ò¹£ßPI%™×2„÷ [5eKœ9ž» ÝÍ4œÒÖ?ºêá ó¢µ’²‹;>@Á†×â�¬Î/ëji¥çè//,ñù%ÁQæ!¢z»* Àu}Áøõmc~Þ£†çz#Œrl”ùùÙކ¹“D—õó+«À@ör99¹ŠòŠïÍ޻󲥮Ì|Þüå3ýT¸)¸‰ÀïÚš’ÈÍÆ5?hžñ¨º™™•yz†ÃA–œÜø´U]œÐëý´JÑînúùþ~£{løœº¸Öíô¸I¥([¸wPt‰oiöñ$+«ï!¤¼¼mÕÿmB<……Í+våêÖÓ„æãÙ*ˆèd±‰^mUÍÍ�ÀÉËëfãÆ9Â'"2æ¼—=tÅ/U"ò}¾ –Ï4ؽ¨š¬U/ÚØUÄEGÏň״762³²V··þÊNÍý8ÇÞ±ÿ¤úV--�¢ßbZ'OÜ ²E>“ÿ LÎ:F¾%ëOÝLÝLÕÅÅH “{ËB.\q j |ôÓÓèájo\B\¿é²©¡ý»=&ÃÙéiôY› ÷áü¼ƒœÐýyµ¼EÁQpüdpp0d� "®]ŸÌA­.Çó,fáyÁv\-Fñx¥t#=”ù"""gmOQññ“ç)¨ÜgU3V®-+*Ô 9N«á:;;C>#Â'f×ÏÒÑÒr�¥èž¾¾†åðpXÑy4�íÇó�©Ü¸¬‚ܘ�� ÀË4sˆ`ŸªÑ÷ªW/¥-¿»ucÒo¿¼©ô7¶²šâ¹{…;Óoòñô3Ì]±Ìñ:œ®÷+^øK˜/ÔÁÚðïß4‘Uëõ¦ÌÖÖV|Änå÷,}ÍÁê㦽l!NoÙâ 7”÷ÑÇÃãjàTWO Øx~¸Rp-\(³¶ÝÝÔ×ÔlÎr6Ïñ»]0O`×û®«­§eé¾hÊŽÙâfý”4\}¼'´¼¶`ÜÜó|~—ÛQLíÜìì¿€RÙ®)�8ááᦤ$Öròð Éê"E!ň;»™ÕÓOMMu??ß‚f'&η§±=ý¦ 6¦<&-͵IOGW Aã¸ïÈöÁXÌ ÄñÄÄÜìe?].Ô˜—»ÊÈDí�² ¬niÛššZÜwGÓÄÛÚÛšê:îŽSÚÙ!i_SSSÛZû�¹£©‰ƒ…‡…}Úe–��±¢¼<÷CÁ„Ÿ))ÿŒýeT\Ï× ^œà ¸5‹àîи{p¤qw‡¡ñàîîÜ!8ABp—àî.C~ÿç�53Ÿ¦Wi¸uo×9ûì½OU- ~�È §÷CM#X–<½­ËÇ‹è¤ï^âÊô~Ø•÷ð¥ŽÛ£æù..®š?øIÈÉ_ ¤€ýÃÍ‹ãœx�ù‹·Xž_$&"ÓÑÖ~8˜PÔ˜™ŽûI`p·÷û·^*wh]_~/Ptÿp>:}¸Ý†šFmºW×¶VU·GI׎Q#U…ez_ æ‡è ”¿4 ™×/‘9½zx˜ êÍ/)/ÞÝ�^‹®«›º½ Šˆˆ¨M°P{©,ùØ‹�¾ç¨Š¨0³ÚöKð ŽÌàˆƒg£i%êWJ~Ñ{Òd’> œµ�“Šúe¯­ÑH××sººº¶9ŽD¯íŒhk“…y½$ËÊ„ý×��°V r"""ò�õ"^¦¡ó—Þ!–2Bµ½80 •;nV§Í×Ò²¤ ùN€G€ƒ}’Fqßò…î,<œLò–llmm¿,ñËdž nýVj©ë¨«Kw®á–Ž#ŸÑ¶=>88>œÚ«››û;ý¦…�ïþÞ³‡]P�…—· NÛÀÀ’¢6FûC$’”–r$ÏWßPÿžG³Ñ¦���ÿå*�d´ãÓz~˜mûíÌÊýòJjJŠ ah%TVVz䄜ÚçŽ,/M‡³ „½àm0d�^ ëÊõÚ¥åP¡mœ�„¤ÒâyöMïè¨i®±1Éþ~'3¯`AüòââomE99�ã™™II‰vçÑŠÊJü òT¥ÒOñ‚¤Ð'#¯ÿD‚”‰\žÖ†”NêÜ¿ õ ¹ôà³ã¶ë'¾ã‡¡;ÉçÓÙÙ¢ëÚ¦¦9 2JCÙoÁ’Ĵ̦Z®ÆÞ5ô¡ÑÕѧÕöåò ¦:©ûZ\²œš­�1€Ï{Ï–"lÄÃØÍ�[ÞãûöÜÖ–DáBq~]uõ©Dn×ðK…•OëÇL*fðÏ¡ÛkY&&&†ðƒ ¤YÙùUl'Å�­J§æç—‡j*þŒONNœØE›êèð•»Xzx@‹xj}«::Z&]öGîzzÔږͰ9§¹ÎZ¥þ˜¸¸pî\µµ‘òß_4ñ3]¹¸h&üñ€zh”â‹W×5ñ°ðD«1¾åG~Qµ—Ä{Y½Wˆù÷—þZx8òq^Ðåz}–SÄe1¡:aWËwX^þAqÒ ÃÝaÊV>åR_¿ÎMNL¤Œf­pt(ÑG#Ý\׆¯�‰õIçàèèŸÝ«»{i �FGN¤ry&�¦gf~ðGźyxÐî;]ac%5i”*Ž Óç«ÇÛ6Õµí¶R+¾|‰NN Ù …†–êö­6ÅýËÙ¤Z�íãÃÃz,m{Ò¨¨ˆ©TyÚù—™›£»Ô¶¾›•Ã×ÑÑiiiÑ.]‹Ù.Ýô䱫¨#­Aéóc¸U¸<žÝ¼Â.ãÀË/ž7P2ùþÃrE¶íç¯Ù“¥Oè%†—ˆ}åñžGÂHd4ã pXo†|Å)°Ô¸Ô ®]8g¶ðÓ”.k£Î¾ƒŠõˆ-ˆTƺpK«y ¬[ì¨ké4�9¼J$ë*}‡¬á¨oo´=æçç´ß‡fº_½3¸ e)8dCÂÚ”gÜè¸ÌwÐú­qõ®o±É5GÝš<÷'ã!¨kr DÆ�´6íÕuÙŒ'QɯŎZU1{ŒãÅî¼ÿðÑûnP’N1ÝãrJ³nµYn }Î~“ &ÚL�@©Þ$ �íñWh›¹ééyJT #“×í]©'0‡·aMbdU]‡�äQŒÎˆIì,�1Žâ6s_óóžHþÇ0f9¸mZ£µüüƒn`ïÜ0Æ(||$|2]&Ñ­[®_wôm¯z{¯rOûJá F¨ihfsß `“þóÓl߆³²´Ž_½úöéíþYçù�²'… jÛJ·Ãâ´…XIûï<q(åbܾ­Ê9í U¢6ôûU£ç/á¬*9¶m©¸ÈWzì]ĵ™BLêŽóîäý{‚•Eç�•r½¾º|w E±–B^žMÈ‹ö(±mç3©÷¯‘°}ÉxwUèãˆÑ^ãM"�bÿíz1î%k2¶Š^ŽÌ ºÐÞcÔ½qQ}I…§/Tÿ0«¡o:ŠÑvÞæÿýë—Ù¶¬rllLàrr÷ÜàéÇ42¡Ûª„ã³c´~Éâš›ƒŸJ †…ÞQ%?*ü…X [ªc™iqgYŠ~ Ȳ÷¢óZ³®P…¢2c¾è#4??ùÝ#êTwH<½ñ·î^=¯¡½¶}B§þµn_LÁ* þ“¬ Ry�€•F]GöÖ+1 þÓ>ú�õª{™ ªÈ f†òsñ¾Þ©‹™½á·Û›¯v¶Ñ©/2cW+ÒCJn²!ßèÜz=­�¯VdÁʽ]V×§’âúêÿ}በU‚v«¶¥ÞÔ:Å8ß—ð�œ–>N`?Æ.„ê_~>æÏߨç})¤D�¢xíŽûR/‘œ1ƒWôln®‘Eˆ¯iQæ@þ«£Ü‘\¡RŸ˜ÍÍ,¡žn²�—áÆ~ÿýqíccµõš³åeÊÈõêw�Õ¿CÑ Ö’'/¢èó¿Þ“{ž?®Qc×=†ó„°½8=­Ñ°@FúüÍÇbJc�Ž�haI�‹©bΖùÁ¿ÇíƒNÿ‡0+ëBØØï…³(žw$3ù¶mË>b=VEÍâzŸ<Ýk~4¸ZFW"p\¤Š£ÿ›ÃÉðß så„~É!DpI¨IÊ šc�ò„‘̱×0Æ2 «7ê8P±£B^Q±Ð3í~í{^0*~NmÁ¿€Tˆôü/îî†êÒm/­‚¢Ð-�BÎT<Çöâää:S»Z‚î§û§1_Aï­sZ·ûC®Â¨‘Qò•…¥&·]•Â¥úéi‹Ý—ަ�“+88˜®�¶âã{›-÷å]Ri�µ[t\UUì­¼s§Ì“Gû7‡ÃÏaFO{S×ËÞŠ–ÞvUÏã’Ö¶¶×>2ÍJý¥ÅE#xڔ̖榺ºŽŽçÝÂÌ7â‚,,Õ/„]óÏ [Z–n˜[Zž6,óÏ®ˆMʆÉfêµÒ˜Çþ»ù%Ìí Ç^® „ 1‡nÍÎtœFT¶Ýi“öÿ’ Û4àüØî«“’Š&Ì™*ßË+(¼´®#['/­,KÏ�§{ìfJ³ýj¯ÔÀ÷.Ùtk{ûlQp5öõË}ɽi¬Uþ—y76WDHÏ‹ŸyÑÆK�”‚C¸ïï¨eŒ�¡–åçäp)#[ƒ¸…‚w'�é‡å§§Õl¦£4ÒÚG\?]ÉÈ7�‚q³ÑhWÀ~ž²}ùöð~0®è‰4ê}­˜ßê::�Öh™ô¼’cŽA„¥Öó–,ÈHI_¤©nÁZ”¹�� %"Op72òÊA#d…~h4ŸUäQÂ/  ,ýsš‘k3ñðéþõúÿ[A[Œª¶¶óiÛÃÃC–“áê¿~„ràˆ�ó¾wÖûζã’�-VâKùÒÂJè��톸OU‡§×"#"F/1Ž˜©3sLOë“®×f¼¦)´ à2Oêe�t¤ óùjçIé'Êï¸ULú‚ÚÂZZÚ3~ÏÛøÄBÚÂܯÝGû4§ùC¨ãNÏàßÜ\\”/ÏB…t™'gë˳Í1ŸG[ßíŸèLÓ–˜å—§¸tÄ#PR:³ÛãÙ/ƒ�37·›Ùa§”>Jª¡ƒ€ ¤‹Ç�fÿÕ±Ë?j;" �:üj ìóìyZîÂö½ITz¼8ëðCC Rú6(úHÞp?]ö<ö¹—ì¸öì ?ó}ºŠÿ•è»ßà»=YÌ8=Þ<[¢íµÝÆ?ÄQ©0†PçÛìj °Éþ?´àÖý:_½†�n×Ïa¥_æÕL©¹qäß›‹]6”û{ßKM!‡Š¢©ýʶ«ˆââ]ú ɶôÅëXÐ?ìbýiñÛ“ ¤^ûØÚ2ÉOx´aÅ÷?\×Ò5ÿ…8�:ó¾ÿB¯°îQNÞ_mÆö/ìi ­!ÿ+~l©ÖÏB`äxÆ–9¡Üúfž`¥- Á›¤ì<*Eõ_½|µó]Íðx'>CPTÉôÆù¿Ÿ ,® äÿóþ¤Tä~¤{Z1jè�û.è ¢Å›8Cäö¯ÿ=à1¤õÕËõ’©Á”�„<ì3Oê{|[Cß;Bþ�^dÿ�H5íļÝÞíí÷ýŒ¡BåþßþWEÿ½×P)ÿ•0$Ø¿¯øÿþ|üÿñùÿëâÿŸ‘R#©ÿ_#ÿ¿?ÿÿ9Ò퇈!bç‰ß“ëO8œîÍxéz;Šï)ÿ€µöª‹ÿõ§ˆˆ.©±êã>%KãµB#�YyJ„Äù¸ñ4aÚ¹Ÿm’úhÿ8Z¼H‡�ˆŒ¥bdm¼ŸHásw;uë‡.d’Œ¶L;~s³SÊÔq2<§jžÂ°öoÌKÐ?CZ_)²Ã>}º6º9M=nõµû .`|–™\hƒƒ«?+í8?œé¸�×1ö¾ÿߨEÚÂ_Ì OÍÆôþ½ïÃn|Û£÷" �i¹«s¹Iñ£žÏu·bË’œElà½?¿æ?ìâ~…q­…ä«™Ú@Ó�“d¤elœäì‰Áæ¥ƒÏØâÿ¬Úp3b'faë°zTÿ>Qij42Á>‡ü/v¶?qÃPCP BI lVkO”pŽÿ…Lü ü÷–þQ¢+M©|cåÂ?ä§úGÖkíÔZÖÿ»Æ5j²U@+ðz¢-Ùéö�Àe¹ë°v¨ŽÙNÌtýæ ÆQQC¨Ü% 3ø¿ÛÚ]KmæT¦à€ì;¥×ç9ª×SÞ¬üLW¶ò¦ë†ýú„oã‘Ö5…õ�¾ß å/îÇK}½;ó{õ_’^»{ïöŽx¨”‡þˆ¯I—¥3Ÿcæ+Ì’ITÁ¶”×>HkÂÁ=x5X3›C }­ÓB¹³Š� á[쪲°p¹Ç{ĸWéÿ›ðÉ'ªõCS¥J°ãwép`×è”û«$E ÁaKìÒ‚—�ø8ñÖ–/Ëyä$„ßNà…i‘á•P³‰™Yùöa!!ü €’°ÏˆàâUdHÊq”¨ªþ×IBÔÉTóÅÄÀY?½ÅÉ™ÿîž…¿Ã†FÙ�,,,”_E Tf™À̱5œ0ªê-¯E„ "æ~jZÐ!4Œ_2$ÄIj»†ô�!Éé5@VºÀ¿¯m O"ô+ÿÈüŠÚÇ$µ½ºj~L‚ÈÌ­S›>¥-io•C/wÖF‡ >Ûh»ÞhcëËbÆK†%Ÿ•í 0ä¯s�ËÔÐA§µQ¢]Fh¾9þ ùˆŠÂQWO.ŒS�ùÉôÛåÜü¾ûrHo·ç@bXìÜ]mÑà‡¾™ˆ`ß%éç£ó¯ÕD< šíô“6å¹8+ó¦ôÿŲ²<Šûƒ¹JëýþÜJ® i%#òÚû­V7‰- ©a±KØ„èS!âM7p[{Þ«.S.4Vþõ)gOÓ†æ @ªàBæjÉn¼S”9[&Žå6-ŠeŸw3ø~í¾¬>DÔGxÜô£º5_vœ/zïGQII€#l^ž3@iqL†@¯Fu‹Ké¦f©¡;žÓnž˜óÝÜ º aee6Êw#o¬oâñÖíø´Ôÿ'Ÿö¡ø�GV�x0D4|F¶¦ôaACžpYqqç­ØŠ,�S¨Â¿Éöcƒl%I?Š«Ó� h›ZïŒ:Øòû¶-¹[3É+0¨ÊDÆr¤½Êð@EÕ}:'%5=íÙJÄ]¼(Xñ%£·ŒQþ�Ê è‚ÌÒU.á¤vçg,­‘oÙRàB:ç?‚XpÁåÜ…óÃá¡©Zӧ˦KWdr¥ÂøóÁÕ}e)£—5˜D¢ÚVùï›ðRPQ»$�K˜dÃÆY¹Ã†u·ò¿k®x£ÈF «{罸<Ûÿ#÷ênCmTo<ñŒí ÆÐ¿³�2v¶O©Ýθó©ÛDËíßßÉ8iWæªtb„g©Ñçˆ� cÌZ²(aMñhjøWsÄþeÃÁË£ò¶=à�Ѧeå’8ÿ¶†eü ŒìöŠTgë *Æ||JÞý€¦ eÀæý_·|5±©_ü’ æ?Âó0¯D·°3½§Þqÿƒ(=£Scû.4ØõÆPÂæßºôc“2д“1Hf7˜Ÿm�ÊU÷ÿÈÄ…æ3¼çÂ;ª�<ݤ0ÑÆíÕÁú¡4]§7±g}²¯“ywÊb½N?­ g˜ñeú�\^œaöä—/–/œlB‹Øûå«~ñ…ÎÐÒš›Ç̱ɊÎlÓ‚˜íäš�4ê9ûùÏñ_,\ß4‘=�rxžþûXYù¼ï{ß=²¤õYkbzì[ñ8L¤ð>;w²rýÁ7wì�U8>N-4¸ šºáò}ò¿ÄÖ¹=.7 ÚŸ¦Â5dKI|϶…v\j �W/7~z˜rÿ¬s8Ê$ô°ñ7L3í»·Šfq…lá0aœVZÅØIyÃ=¤Œ'>’ zÕñ?%q£^?­!Ÿ¯vm}ׂ9VУåüØä}Ñê¿!ýå¦U„%ÍyjjS$UCà„ÍJ\–ª+ìi–ˆ#Br¸EÕFµLË9­ÖÛ°É©Úø»JŒJ³cOmì²D.�M�G;:ÇóLMÓ¯+H…ó‰’‰„ƒj~2*¸éÐ(?LÎd ùîmäÿ:·í¸ÿ\¸@Fb.x�ÏVJB"‘ÊŒ\^;ž’”^ÓtÇs¦ðƒjX¾´ÂàDñåÖ©¤$§]¹$Ï¡SìA5 —€l§Ñ‰Br9(±BÕsk¯É�8 Èe[™¦óÑEqeÇÙÏó± ÏûDŠ‹Ðž Aǽx‚Ì·Í’ºÞÝX:ŸÃ)MŸ› ®Ü�aź–ÛͱmËK'#«‹–•[ ›°±�zAJ÷¨ T‹G*꩹ÓófåuÐ-…Bkk�œ|ù‡æ%›”鸟(tHÿc)fð29¾¨ ºèI¨‘ß@~ˆçísÕâçXK<ƒ‘%xGÉ<�æUލd#t‘7¸SÛ2?üºžàÕY~Ú;h#âcu¡)�} ²Ø€M¡qzÐ�æ²™‡” žô®ÝsáÜ’´ïW4ª¡æ"U¿muÊãþÐ(¬³ª¹¥R™ÔNs³ð>”Wú^îýš ÂÏw&¥“HµûB|yw19[2ø~l;1ÁåZ'#K_v,]°©©.�ÏõlVNÿS9\eEÙñE¯ › ëü /AåG !ç7“‹?CÚ¥©òáᤩäŠóö槯°Ø2ù'ʸ4f8ë]ãTè tto45ýì]<,¾;Z×Ð%‘DÌËŽ èàÙ|6WÏÆúK/ø|‘ìÒrÞ§ÓQ5]QfûØ}üx•Úᆭœ­¢Yñ±ýôŠ)îçnqÈó…ÐÝR �¢n+ÿJ GS9‰=Ц›Ýùoð2á)±ÑzNÕtóP6Œ{¬Y™4wÚ­‘š_÷zHØíá{VéÿÙïC�¿gD×WÃø1”�ƒ�4ç,JVÀ bT’ñ<öX «š/Œ_f­sÓ‚·­˜™ª!n„$¡Þ9¦³zýa#†Ð¥®êÐXm6û@X¼Ã»¯M‚jø–QVYÆUì•’sÍ„§¿”òä¢XäÛÜãè²–Zú^»»÷ +OBOs‰²p€¡•ÓFæÃÚqÇÝÙùpYíü ßMáóƒAûõ`~ñË4Ÿ:né*‡¹H.'è"Ÿ[(ZíÏz†‹qûŸ6Æ|O…îv}Ÿ‚;®ÿmkLs>õ?oú¦¦>3=ŸR”Y[=†ùž?þÕ~v}žò}£6¬”ûô—kåvÂ÷š¢ýtè×Êc„Á}W”ï•ïó/!2"ò»€•çåJß¿ñÏ·¾�+c<§m+w—7#¾WýÏ™L$›§"¥�•O+’Ñ·(çÖe^êÄ—³=¦‰ÛWW×Dv6>Ê–ü>VÆ–…h™ ¶¶Ç†®¶ØÖÓŸOt�ù²;�(é¿4k•N˜ãޝÆé1  Î釡r/RЏ…ƒì?þŸ?÷Œ£¯ÓR�)ýýÆÝalø¢$ôL¡–¬ä(ÔmVh8е÷->ØÒS_ìË32„³9i¥qq½(“ãU" l6ïB[éÏ–¹)´]d‚üŠré¥-¾ù�êeÕÝ=aûœÝû^sé7Û=åo�]ehìm¢o<χi$Õ÷¹eenv}ÊÅÀ{í�ïØûáù!õØ÷f7Ÿ€wÌk7y¢P�”Ïùáfvgçá§C ÍX�^%Ýî_Û¶ó£½; ›Ãç[¦§‘>Vö‹kßí…Ž§»w+Ïk$7«±ž�ñ…ci¤dD‚®w“!'ÂÞYfê>ym¯fMŒ|ûàvÖv?Ü™1 $$7¼xWg.¦,‹ƒå‘Pí°ßôV]bFf2¡-ÖIÄ]o˜¦`7Jå¡XóöFzÝGþj‘$*sëêÓN™T‰ÜâÚ½†ùØ¢ðÿú…(¤>"Ã`­uo@8"¹Úl9*ŒÒ¸òï�€¾éõA¾­v FjW�ð�•a-í;’a�Y«û.ÿ/7‡[§v6²ê—æ íì3o¥_8Χ8D—ÄZÇÆµD´„ñ}þVb‚ïm]ÇÓˆfÇåe¥�Ë­#ýÛ^Ï;6o÷#:¡ûThÍé¡m;/ ‡`s�'ðµÜ ¹ý-w]¾p'&#:r  ©>K“_߉hð9=Cpµé§fd’�KOä)WRýÞ»ÛŠo *TÌäåá»Ñ”�èèÌÖ[…†Tƒ�Fgÿ"ŒBäk_dB)Ê •pq†páÄÔÉf;›0…†¿ÛAëfFVSy‚xê�2»Ü¡þåuÙªé%1ú!s¼…0~÷üßÚýÚиæØÚOÿÑ| $&È6 gØ$,gÂ<ØKº¼îECëXd²Çi!Îx¢¤t8{‹ô�Ÿº¸ýú $lÕã øe,Á& %ZÎ+l̲¥Ú6ýÒêƒ}ñ:ou,“‰’’è™Êêê¹öP¼â�^—ËÇLçÐ|m·hbCz­�bùõ#óñ!Q1=©Íî‰(Héª]‚yþ“ì¿kÏ¡Í?QyêHß‘ �8Í©9Ãuþ®sújôlo~ößA�ŒÑóƒõÍ&¶ÂH!Ï«b›„ò2ë +›é‡kŸó}ßÃÍ‘‘¥ò%�|Q»¥]'ß§å~ÏÛŸacB||<]Ã'W©¤¿xÖŸ= Þù`Võ´ë�!˜”¯ÙÀ=Êqø<žÇO[mQ¾7}©0nÁ;”Žû¥™v‡ÏöîåôïÖÔÑs@T¸¬ÊVÊõô?çÔ¦R­Â•eœk*> ë‘J§XX«]–ˆ¾P÷ÿ­‹ˆèK­ `��±Fu<¡X~ŸµÆX!û8 HܶVá’E�ö’M?oÆô­‡"Jé niÆšï%¯[Ð[Bs¤ÌsëX”I“¹å¬Q‚Uû6ý’¤º(<º1³Ã —lÈjP5J—v?¥RÔ¡Åþ1œ€ØÇвîÝ�íØíâ“’¶ f|nút.=K™øgŠf¿ä™®?4ın­úŠéמ(Àh³žØ~Um-®›{?”ÎUé4¹\ê]±_(;’,•—“­®ªöG]ç]]"“SÍÃóãDÇMMÇÃiß– ·ËçÃüwš®×:•m^k»±ça–a¿H:Ó P#'šê"/AÏ1ýã¼îõVzíô£�»"\Ù˜Z-E×kì» ]|+s¶ ýý”*¹ÄD-­åâhÌsYâ¦÷”ÓèsQ„§ëuP¦ß,߿߯źâK×H–¦N+7Î�Ö­Hý·ò,µqøÄ¼ê«ˆàÒÊtöS›à'Ô�TÜ>w\©àœóÔ¿‘+¯Þ¡NoŽâËìK£&5§kLc*„0ÊOÔNÿf܇êAEQ¡oÐ@á‘°�7HÀ‚¾CþÏà0ÿÏ�¹¢RXñ¬2$ÂЯ6…‡­ÔŠÙ÷.ΜÁƒ’…p—•´I=ÒÚ¥SuÓY6ÛOP öŠ#èÜ=…ïÕßÌÇ׎ó†V:àrìu2ÎÕ~õGÓÀëÉ÷Žâi�;4õrÞàéÆô…ÔƒS1I¿KøUyþnfo8y‘à­É�ƒ‡›Ê†k—Êa¦çé•'(q¯ãyX*_KÍÒ좀§Ç•gÇ퇯õÙZ: +(gƒëó]¹ÁÓ²kG:~ïõó^¡Ÿç¥Ä#ߊ×á±×ö%Åã%ßóÞ˜O§Üð”Ê�53ØÄýô´÷ÝÊ?”=[qÕT¶ÞlF ¶ýh¯ž0˃qóqØ?íÖDh;8\Í6±ÑùžÕdºž‘ÞW¢‘³·ñð™åúÕi ¼§ƒ^eÀ ¼dÇ�Cê2êq +š3ËÉSBû//& S—(†‘G”öJÞ¬èë�AžãdT|FõËÚ£Í#JØñÏ åwâa9'£Õ…à1‹ºæ?óøA…q¡ëô‘ÔeSqÓâžW¨2æA�ExZQZíyû^‡‹YQ—Yu™ShNcB� "½U‘;šrSýÄ8»¯0dR›š’�aÚ�Ûñ˺ÿx¶÷MB}ö+ÑÖ¼ÐéN-µ1gƒKÚyX)Éó Åón¥÷£e¡âè› û]�Ž›_�Vž¦L!ëa/Aÿµ/®,,åüö“Ö‚ÇöR”â°‚A+{ÃŠÅØ‡�Þ»çïßUèê�-»6Ïe>žÐ½¨håŒÅîæ»óc¯Ó©Jý�3x ÙÝÇݦݮ÷lh>¾}Z«|J¤´­©mÁ¢®Ébï·eWO*ß= @GòüD—ømïråéŠ+‚s_‡Ï÷¡²Ã€;µÑÌÓtû“×í\�"ϱNú‘¯Ûߑ̎ûèëÉý*Ÿ}´'ÁÀ&nR¡"¼åa[�¸ÄFõó'd½ºqóò7q:æ"î�úBÿ[|:9ÞpQÿ:4ì‹>齄‹[ŽBÌJjZàa¦…~]ÜêÜhÓ”)¬c—·ÜL@õ„(¡•½½ý¢%±üÖ>fr¦Ð2,- ¤“§�«­1{½á§Å€é÷ÒVéÁø>éÌ‹^Í÷ÀÙ™­•Çq*ç)e«(Ç–ãƒÁÛóéœl,ññÎJõ’p¥?sÙ_MËHÚ‡Ãæ!öx–ååCË�'¾wcÏ&ÎÆ믋�©åå󮱿—=‘ÌÀlì“Â� \¿ÎHaò&ÄuÚ嬎/,èÂþ£…ÁQîx¨0ÇO”ÍDŒß£þœØYƒÆ&ñ¥¿o@hìù'Ë$•'m\Ӯ͉)\�F}ÙŽóò™§“ëŽûÜÌÇuŧCƒ2ë#JÃ6eÎ+líC—à{W4ø¾_—bd¶M„Ãæ'*5ádVä×?8ªKÒ2/+¬£ ¨Ë£=³I PÓýfiWzMz‘¢ çu¡Ûà¿¹Ô žén ju톴ÈïØDd�æHÁdàÌŒåðH¬ãŽöÛ¨OÑPÁÊxÉ$�ê!Ü¿¬oÚ®WQþÛ5ÿ¿.6Ù�CA¼TÓ1rPXS¦W™Tœäé0½ÕYV§0Á‰Û£ôC¢gò°Ö4gƘ«ŽCðoO ÑQ½t*–¦:èCèÏ7AH0\ûœºÑ£×¹C'ø÷ñÄG1²9ðÅÍKÈç?‹˜¹~ÓN¥‘þËÍè9¤þ¸\;=²¥Tøël˜ï8ï+gßžqÌLþ¡@\¦Ð¯pquÞåbùGË÷� $¥%¬ÈUÓ6¶ÇWXè¨ÓMé�K�{ÀÀwÇT>ÏUiD§Ñãƒã`[¢¬*GÓSÑÀ]ßDœœŸ §zbd}€ßñh˜«ãêl¿²ÝÉÜæ´Ð¶£¦¾Žìý[�r—–%äÎß;�¿Ó�v\j¾@/òK&ä]²)L™BüºD 'öœ†àDvVG]§y}øÕgÕÛâ…a1“ø,N§³«�ižå¹ÜSÚh)Ä"‡ŽÁÿíÃÈBZ—<ùoÁLg`ºc1“NB²dzUÓeËòdsü^å“Èg§5øÅ›Ñ �›�XbѹB}2/�gU6 ÷ÿŽ Ãñ@ødIÄܘá¶í?$Z§„[‡uî™â�Pôg¾ê8ý8�ÉÊŸJ'‡T’Ù:&y`„(QiUkT®è "K«)qjmÿà`gÆÎKr(†Qêê‡�£md`šŒµv̳²Ûïä bÙÔ’“%§'ßõzf>ìŒdúº˜câ_óòP.nØØãðNYœq«;ÙtþÉÓ¤Ñt\Ã#Ï6Íš %Ç÷ƒš¨a—í·ak®Ì/B@Œåj^Ý�¤ùРÿh‚¿æÖ¢3¤a®þËp[·Åyµ Å0h(0V¦9Žÿ£Í ¾)ýZYÃÄï; £°’4©ùÔÀYø«u,¢pñŒwùrx,5,}[œclÐ~Ÿ6ìÓ ´¢ô 0ʱ–eg¡_<<@{Nºç tòh"ÃÚj,dHr+…˜òã©“BÐ ÞŒ>†jy*ÚhTI"ª¡EŒ÷Å…ë¾;R Q �xG€È(¶oÇžÅÖtäæ–î@KÆVöþßÎeصÐÓÅ™nÂfºM"¬qRÿ“4qã­Þ~j¤®k&ÖÔÕúþцÇR„‚`뇳:kd>ÊÀZgÞ%þý@3Gw¿6×ô+‘ q{R† X !Nüt‘ÚÎŽÀï³£ö| ¬$"²×'›ƒp««˜ÛË’2_e Ý‚ÑþoÉýUJnt>‡>­f”Ïpz(‰þçÄ<`Ü0È. 'òiŸ8œÏaž'4‡—ro–9WPÒª…¶Öˆ÷ù• ÀUéÛ&IõŸ_/ÿ(äß�uO"Å�­Á2,8ÌµIò�~Œ.àOÈX–ç�ý8 ö~ô§Óo×]�/…å?ÀØ%E*¿ß?Ê~mP“¿õ3¿È½îU–*SÛ´:Ö—»½‘bquìöÍ<ø%û'/¤+ð™p^ù‰½L³»— … È’¼ì¡|MÕ×Gæ«Có…VrŠr�Âu¬Ãíôgå_>.}ý ]sñTN`ÃÕ±Í�S)Š(ž"¾`é µÏ6¼5‚BñÉ…ÉoÜM©)©ƒ �ÈzŒ‡©/ö%þõ%Gt/{SQFÓ²d£Œ·¦Þô‡±Ç=NúÞJaÃN«TIRÚd’ OK{œöla¤C‹Ÿæc-¨˜žçÛxˆÞ{ùÔöÈpGr¿ú1Ç3AD½Ú sÌ:,G¡³ÈdP¼J¨?Îïû@9ÍÌçùmÌ”¥UÌ>íõ¶xbÝ™ Rx‘RötJÒlì9DP ² ?hDJ*®J€ÅMKǘ•—nJ¶Ûžç¾�;&k›ÕÄ1_Óƒ£¨é)�ŽI™¿,UÐÁûq+„æØÕ$ÈMþ÷ÓjÑå‰U|tFS9RqÐÉã`@î7<öLœ´�1§52,wb²Ðq©þX£MÑïùî¿s;dàõC›WªråNiy2$ÖNÑö¤îÇh©o¥÷ÒéÎ äJÑ5°éf]Ó%í6,úÏÍF›ö˜ÔšcaÖ¥p*G à_Sï MÆ0Ê€øH#2Æiç† xd żxx¨°†¶ûö ç¾ÕzV+í´ Üvž:�Z¾õåy�y M1�&ÞÇÐp bü„)=¿ÎžUÓ[»Í=õÁ2Åp-‹<ôØB¬›:*§§U•ÜûÑ¥Eó~þ2Ú?ÚoÎÝÈÈhÛºp‰êX9^+ºâ€, 6pp×5ÅŠI†ƒi!܈9 eB³+$äDÑþžÇRƒ¨;ƒ®Ú(î †©¦óf:Ÿ •dÌ�ÃY”Ó ö¤_K>®�üÊ�ó€�q{§ý[½\CÇ9uiìÄ´�S{Ý¢îS† f9Iü›îæcE_/)À|Çóåo¾}4…�ê@�PGÀLrxSÁ),Âò:ñ 67(�Äqú‡´:$¶$z™ˆ9&l#¨nZ+¨„q  -Ð×üˆñEP{Š$‚>´›çBubÑ'EÓì("k|ÒòÛ/w•©,B V"ט5ºF9Á´~€‚êèADÔ ô}ÊpöpÇ‘ftÝyp²Ìw6jªUøþ°M> ªtèƒØ¹c«ò2uâ»syy×Öëá€Ãýã·rq_–rà:bè¶_Iƒ<*weC.б ¸é¢ß„˜«(�ÿJFUd©ŸïþçŸv>ªG¨  ¿CôµŠfÚ–_Dé2ÃËÒG/Ì#öÇqÆ'Ž ó“ ù àØÜ�8a8ý ÑLVkeHÀ±X‚VBßÒÈÂævõI¢Wfp:¬‚…ù;"àÜÖ¯¯.ƒÈ�S×¹à÷¼ÛñÏ"üoEñh!ôŸSÌÊ*b©\´}òHÏì[:‰çDw€uAì‡;—*œ¯$ö…(±f–/I pÏ;Ëné6¶>5°®î• ¯DÂýà?vás³æ>à NÛzŒ5ÍeD䕇’G†¬»N³ë}´JL4wUr&×Îf?mºÝ6è#Ó[k¾ó*áŒù_¿˜Çhk—ëÏþä“Ý!eƒ€X %„>E.Ò­·«zëþìxÍõ ßÕ¸ÁÚ˽9N~ÈžÆrEk¤¯‚â§!@'d96Œ²„”¢’Äÿ×Ñ[ŒD†žøQR³ï®¹lPÎ×+LÊH‰|•W§,Qê@AØ;mA ó2»ñÏŠÓ’²µ_›î w!ÿèmòã ¯�ëK&‰_áØýÖI®ZÑ¿c$‹¤ [×0ƱóRásžõ£ `Œïþ!ëì¹;ìØWÜXL‚ ÂhÔ6×ác~Iižju•ŠŒÈ¥H#‘$W¨�¯¡¡„š¸Âó“âÔñòÉ”î¥Ü©ÐSe1�Š Ý?ï¸>ðþ ‹¨ G –AŸ�Ø€Ý÷YcµìíN!ãŸè�R¼bæ)a xÀåãØ�z~÷r'c3î|ÿ-¨µBÏpFr[wN•œîFòµ¨eŒQ¡»«ÍÕ}Ùy:ÈÇFÂ’‚²<¿ˆûn’ê‡WÞü‹)�t(Úý¦yÃ`ö* ЫٿÆõ”|ãO‘÷lÒQ†ªl‰“ƒtf ðXæH%zã¢ôSY>uÿ)ñªf˜NkCspØhá…Á¾•ï!8ÑZb8Ò¨€0d¹Éðª»Ç½ad”÷8Œ›­"³KÙ͹öþ¬lá¨FËÍš…ÏhŽuˆßa~Tyät!ÎíUMuoâ-8‰•Iňð1Æ�ðñLvŸ±Àæ±Á +!8Å èXWp«ÈQJ—?°Èn#þq9xÙ&µý*7 ¹›]F’f_W�©1ûC „1¢Cµ²Ñà±ñ_ßÚLS�eð³±Ð£ Rc,Dz€rNÈ•²#� �6‡:VAÞHÜ\cÚ#—æé­ÏnÚ–F?ÂCap0½�ÍÃW@œû±|Ä{!xa{~÷+ m¨ÑöÁÒÁÕUqe(ž%zzˆ·2)¾�[¦–óQ+\î†ü ‚¦`£$«XË4‡U“P”‘ lÈ”V¥¥}MhœV£žy´g'<­½- 6öÝñcOݾn”\^­†¢.7‰…dù‡P06Å_úPKó 1©dmNl?K2°«‡ºÁ‰_’9i{–“^Á½*id‘-µY»ÚÉ1œCÛ*ØÄNxã!Šp‹ò[?üöæëõ¨Lé¤ÉgƒeOËá—÷ø&JUô½á�iOزª]YTn \z]¡uxÍ(O8,‰&„G7Ú•—,ßÉ 7m|.�(göžPÛ<_�´ß>�Õ.ã ÂÐDùE{-yM-Õ‰ÛC…ì¸öw̤–ò~ìŒV�3~ÉAm�[Ùoç2+‡ xb k÷×ÕVÔË yÒ˜¾Ï¿éIEOÈ5‹!d‘ÂêäðzYÀÈŽâ:xæåox5]bò‘–Óû¾ÚB¡5<$€zÏA8¿@¥-ë>ýF¡0èƒd'KFo·±ÁÓ£¯YE{n«ã„®&îQõO«„Ã`‹üXn Zà$&µûgêp›q‚5ÏòÊö&Û˜ÉIåÛÁj†À$‚ç7ÏóÔó§3œ Zì…|Ñã>Œð�ù™½�3­W.ËÔ�wÇa®Z‘ªg/&*UR§õò¹«bï‘¢Sä×9àžù%¹N|3fæ¹ú�¶¥uùù2æ —h¥]�Âþ€§©5y¿@ŸPÎÁFM¯ÖG¨Š×t�]ÈüšÅOSFœ–3…/½^…±ø­=ž¥5à�ªÓ_JdÙú}‘H¤LjÛoˆ\eˆ|i˜Pø3™TÄÎT\@ð¹o!MYp•÷¦=,ëzÙó�6[²hnŶrrëEß)Ò]¹îùrI#‰<Ù½ãµNò§åƒ×`æÇQ^t ÝeÁ“��]"ž¡c êâ«tÞÐWå^³»fNG¿§ÿS�w�ËÔŽ!ò7è�õÌa�/úו÷ÊuÝOoIð˜3LGy-Ñ�õê\Fë°”wè5(Sí9�¹]�b�>Úùµ«5*‚÷õ-vú#üS;§2þˆ[š)ÍU½Úkr}_êÔM±'¥¬ž@¾¼_×þÓk©ÂÆƤ}†ô‹âÎÆ¶oœ½‰ûÚ¢�ë¯YzïcKoCÝY¬³=–sއ)æétj�Ú2 <“RÅ!épmêë­½Áâö”Q7�Ë/ö ‘#-¬§÷{\UU;97„n‡V-ò�Äoc„»ÛÈã½ ê3Ó³…Øÿ9t){ç'úI1™~ºÏíXÉWÒ\›‰“™-þ+\†£ "2“0·³$‘“2ÝÙè½ôŸ¼‚8x‰ö�Göû•k ¿¤t×l—$¸n„bûË'’ šˆõZvŸ�ˆªãdÐ¥/Rþ × MoÔ?ænöìß]VV2·ru¦i-¨ø•5w©¯«_'`[¡öˆgÓ 5ˆ+o,'´ßº/‹?<Ïy6èËÆìËYé­Ç4)^É»ÄZEÒ«àI‡äqOZCP¿cŒÍ&Üw!cÜŒ3�c?��mþ,Ðk?�2¬Ú|~×(ƒÂIqícb`8°@Fw‰§¯™¸ÊpaQO|Ÿíx‘-œŽwžÏãX&¨ð©.½y…Vð&4õ}‡©OmL>[\>òâ�m�·šOóžŠRO[$¾žª�çGßÃ~ÛÇáNŸ¿)\z(Z/¯žÏm;¾n»›LW¶>{3B.'kf aJ†»NkÜuýóÀÕ2:ú›÷ŸªVq ¨Y�z>Ü8EØ}”5e„·[ t-óA××` NLÀÏÏ&ÝsÍ"æS„°@ „ùR ¯õÏ¡eÊ*± N¡b‹&â¢Ð$VP)eÕ_?Ìׯ«¯õÅUd,¾Â o¯Ó]¼…!Ы®Dø:«F¢"F {#OË+1”- Ææâ*‹}‘2[oÖ–%–dPHSCžŠáoP“$[iÆ÷Ã�½$˜Õ4 dû±¾jÙéceûÝ™¬)&UÉ\\µYYBr”�iãÇÛ§�ý‹G&ËÔþÖ YÒBUÏÃðmŸ¹µ ·7ΨVrºN ç£Æåµ–†¹d AÖœÈ`p=KëÝ£绉=Ÿ¶eäÓ~^uEÞ�+n]æ”*W&5îíáQj£Q†m}öĸ.µ`$œï` ³V¨XÒ Â6÷ƽ%¤f›£Xq•)ý=×~,;è·:×_P,)$Ï�9–êG\Öò”ºòØ%äµ¼�*˜¨âëU»;6¿…žù(¿}³‰‚ýõZèiPGèyÊ3ó®'uôöøñ¤\±íš%G³ý¶œ¢õö.Xð®oåyM±ý> ái\RßÖ¨µë,šƒ M�Ë{·`K!Gû}fÈWtAºAzI³[4ˬéðÆb¬� ÉFyN{ÂZ[rBZ‹M®Å²'E«±©d#éxÊ[¥÷†êàˆáì"| �N™|™®hÅ×j©3õÈ ‡ó[œíÆ\©uR¯XxûýÂa£|B¨T† ŒâÂÙwf…ä9ˆŠ‡¢¤ß– TÙnRT5•ïà Šö§‹WÊ4Lýz† “u�Rj¿j†|î~H9lcq¥4ùK€[Ïv¶÷|QQJ1ƒüÉ*EúÜf¥ïI�ï�ï�ÞÍ ŸÐ¾Ãr”‘×�Ù3 õ¥<µÊ†6k Zqù‰ÆÎâÂDÕr]B½Ï‚‘Ø•\æå}˜¶EM%츸{XzÒ=ч¨÷Ëíã¡�¨ù—ü;ðq0ý† ÛÇxpÒýC†¾Wñ ~·h à·pm™ujL @füc9ãš:Œ¥ˆ0HCJUÓ’¼aË÷–ËÙ‰�*+¶wu *™¸Úx!óõm¹W™ïÈîV»öÂ2ïG:žî¾)‰Lækê{lSøx×i÷î��_û>\1ö1ù<Õ ^Åf>=?xÅ.ßÍ1=…ùÞõWz¯Æçl¦®<-{ Y­À¸<…Áë8BØÀ_õžHò¿ñì쀨‘~ÒÂ×—üê’(ŠØÏ\XŒcacapõ.,1,)™RS,V,®<à!0¢É!fR «çÁ*$©iº6ˆ—„eN•¨B!q{÷Öc­Œ¸*¨Ÿg�Ó$ÁV)ßȶÓÔéL¿««#(“î?Ž*ÖÈô%KÍYÉÈ´ag‡Dœ·ÏïOñtqô(~þMĵd5ª¾yÐ%+6­T3ă�”"üœ±û’~WÇ3 ¯¯x´Ö} *MùR”_ô‘âE þ1—–ó™YõXÜËáX¥Øüy!-^%õO{ÿXŸ/ÎÚ/ß“|Eï³™—(ñ·ßWѾ_rÇ®p•�@axª‡ªO ÏÓ ×ÔÊuKü {=�—\+7ëÛ¾û—Ø>'¿ySÏÓ›O‚%ÉÒE¹½á¸GÔÔêFëKXYÀ[iÕ¼,t¸…ü´›ö[¢?üwê4…®¢gÆ4ÞQKµY´WÓ_žÑÈ‘åAÀ¯¦` f½Ø©ã6Ì·dõžº-BÉpÂ/t�Bßâ‰Ý¹ ü][~ý¹0äoà�Q ?穤%³_Éëc×!›†Â«3«)¯-ÜŽ«£ûmƒÇ»†.Æl ¬'/ï§ã§¿+ß~{]DÌžFÙÞUDt±ñm…ï;o'«ýúÅ”2^`‡¥�EdFhüj=öN%üþñWQs�ãØú�ÁéOCÍØ¡¾À\0É#¦‡§2’ñ^¡cfÈ Ÿå6Üï} HIË ª¢CÒ¨]>…�Â!Œ`VÏ-2g¶¾øÕñ46÷vèÆ¤év‹�l%ÆÆbS šx ß¾Šâ[‰S{74[|õ°`Âü/��̇º(¯åÛékŸ Mƒû-¡´ÈK C)ö‰Ïñ=ßf°†UÇlSõÂUò£ºëÏÿ§â“ö¡Öv¬Àd�;þn‹üŠÁ›†Ì6-†|µÜ7 Rü—ä­º…³ŠÒðƒf\“Ìþ¨ä ÒË2h©±%%RL³i¬ŽL1ª{iŽÐYQàj´eàuÀ,+kjÊ�ÑÌÌ,wÅêû$@†Ô��\7ŠËÂ׬YªµrýÖÔ!¯(éÅQÂTÝKnsX’²Ým_¿2¤ü6z;[Ûƒÿ†b}Wéh¢oò&•+í©¶PÒÿ¸*¨µ …f)}¹À€ñH¬8ïóš6ì$ó}øç%LÃ\ê¤Vgêr ‹ 0¡]!TïÉ(v>ÖXBS´”?35Áðh„•�‘•„ozúWè î~vK¦ºúœ¢“¸ó³³øìžg>^Ð  lOÊJc¥#ÐH¢JõÄÏ*"Z÷ë°E>þŽÞËF.ØÓë¶n'î\´Óü]“æ0è½Ç§!@²Ö½O†éCå:!�(ýˆ•ä�9@$SŠßþ°$ÏTYgTö²7D`Çì¥ ïWðU×fšê [Í9\H'^°™–ÉØ2mðùýçð´ 9ã+óô3eþÞ§Y5m$d.Ö×>«S‰÷�¿�ë—�l;ÎÏó 0ð•ãM¼*[½®V˾œW8 æÅ�üæ»fÇ‹ý—mîš@UÛÆÜ:ïö®â›ß’öêÃV'¥AÐê$VÊóøó+ž@œ´ë¢-«3õf£ Ë!°áÃùí}л.Ú;s]š¯…ªSm¥1°±±TŸG’qZGç€Q¿ËÂMD¿�[-fîÄÉ) µÀ'ETR'àg)‚¶I?JˆgûÁ1GŸ§ÝÁgA“Té‚Z£p©‚ ݘ×É@2ƒ±KŽ�T\½"TTÉ2d û(l*òq1ª'>¿óÛ'ýRisÌ5¦Ê¶¦UÛ ÎM*c^¼Ä%ƒ ÷´òÑ> ¶*pQIŽPr‹Àÿ\ë½0mc€Päw~÷)à&ŸÉ«Yö1óyÓà%b‘[uÏåc^ëB·gÇåóCÑrå e–gx ÷•›ÕTóý­Eûô§•ëiD§Œ…)"¾ Z”ÝeŒÀ7ÝÑ;Ø{%^€ ÇáË$«¡vDT—-nÈ^„Ãì!V† «MI/ Dœ¡£�ÜožîÏIj¾âäøK3ä•D’aNd,-ç+\�N98²p:K[:a3•­ãx²¡ŒW±®>ËõT··•Ë—‘ƨO«–¾×åÇ�«’¶±ƒ£¦3ï/èôŸW-+[/V)Ú¢¼7"|ŸÂ8ïPJ¯D£s�þ«pPˆmMNž6!™ˆsX¹>á³�ª!ã`…¾¹ýî‹\0Õ•n³QÙƒ�dˆ“‹s �ñ]pá*[¨È´`gWÖ^Òd­]ðgQÄm]ïs9Uˆ( ˜ZšòЏ“ª‘Àƒy¶“‡q~óh²î©Ü·ï“ÈZ¯ÆßKÃufEdSѪªO4£V–ä›@~à„'#ß“YÒXXiÄ8ðòúAFƒV[[ll #ÍÞ–@ao/UßoÕÍó„&Gó>t<ÉB¨zIŒ$JXI¢„W™[…Ð��`àú™×�_ -ÌËéº#5G~éí]vÜ£d6ìz<{!EƯ¯«¾ýTRT†*L)Œ&j!޶9!E¡¿�¥†1Ì�‹ ýðá^i†·þÔ–c·Ó¶ÏA¥ Æfi®ÞåZÖ~†Ó…�ßAã<ÛbvŒ<‰æßÑýÅ`Þ+ɘãåSkîOàÏ^æù½±£Å‚„ ¤^'u: ç ¨ßÝÐ`�&Td>Ë›k °çÇ Ž¨ 0¬â EÀÔ“�É !Ÿ}IÛGöøuߣ‰Ì‡ß/¹~Èò>^Ëí¸›çê9økÛ~»Eb[kýÐýâÇžÎÞ­<,_xœ¬¾4“5�Ì ÿ�ÀާïñÏe“¿ Q’VÇ\ÙÌ6µ(–ÍŒõì›I6ºÝ0µ�ÈsgTƒÀÏ"2VœŸÉö’.ø­‚s×W$E^@a«¨äghᎻÄ„6'I⇓óýQ’£–ÓÊìÕÃÊZ–çÂpíJ=æ¨à¡]ÓžPr8#8´ºx�Ú2>R¦V ™9U �+¸‹$m4/Ö�@œ¸[e¥ó䂼­öÐÁðjµ%áS0‰ÄÑ'"À/4¯ýëøz½Þ‚5„&*¹¯Êóß¹ÄsÜæX�–h H`ö]–!ñ+ÉZ8£U[„Ô  Ü#- ´IC%i Öâmäs^`fkœEm‹ƒ<õ8ô=ÝñëwGd\1IX|À¤¼ Dç ;¼/sx‘טŒ®io⯗¸®j>R:p¿\ñ×SŸ³šæÙ®8§¢„¯¹Œ‹QŸú}Wqýþë@ç¹:~? KÕ´�àõ·FÝp\ß�$«Î–Uï�–K§–âù#7ÏṨ�Lý/ÒY¯TB¨�½'ÊÒÎ{øwO`Šo©�vy$óÕkio̧Æx¶Ó`�<‚?ot‘ˆÙBSÃ¡ÍØz±¸¡B6Ž˜ÉÕiD`I,ZOwXN�ŠaÑr�?Ò±jßøÀÛ9GBñ&£ÍP¤Wú{Cw¢7¬º9Oe¯ŸuBýSÚÑ�­ãâPS'¼[Ùfžö‚Äž£’úds=D±3X¨ÌÉaȧ¡“@x  ŸŸ'ð‘å›çôŽ<÷Vyóë|hpÀ˜•]V²¿ˆz5m ±iNNì%˜çjÔ=ºu³†S&MçPÎ/Ã͹>´:ݧµ).ÍFÙÚËâ/wU·!sK�¹ÑÄÏiÂtïYó®‚ìÒ{xzB8±óÀåWuè�Iör©]N½6â¾½ N¹9'°Åò@g ¾eg»×7«zÛÇcË畊§gþ€qæE�÷æ­4Y÷ヮ€z뺭´äÔ.:•f›‰Br9{Úd×/÷ä†×Ès§²¶ý¤p!¯†—{Âf+ì¶¾0¡ äÇ9bQõ\Ö¹½ê„ü4eAç»|&D3lÿZ}xÝѨÃ_Z#i¬¶{”,o¤ŽpAKIZ&°$ÏÔ7Í´dö¦éŒ¤k7÷MHÃÜ�ƒ.ZÎâ÷L/ö¨ç%ö<´±ãî’^=Þ® ø‰±-þö‰-“j`6ŽØ¶¢É´ ]%ãðRDõ%|'rv5ëmœ¿¶Àwƒ·÷«� )œÂÃÆîÛkÉ�–€ºÎ¢0$�º_.:Gbh™L5ÙPžòoM ×D’ãûÙ@Õd¬2‡±ÍÎü¼€8;p,ºP/˜«0w˜ôÉ›iBX/;nGmå‹7BËÊå½õð‡¯ÉWÞ2Î-Êd™ÝŽ,5Š}ؾ쾫 © 8¿ÁI"¿FŽo¸„ ¥æÊ¹–j3¿Ž„­F¢UBáa2K„Jº¨º/mž-£cÇãîqµYªÞ)"„WÈ·ˆ¢–ˆ¦�ƒþ¬ÕÏ¥× ÍÐ;[E} ÿg¾MgÏ6y’€Ì8t³÷ì�s² Í翉®w1¢rV$+Þ³êÌ€X–õi’"÷ß3¿ ÑS¿Ó‚¼ß6_Õ¬õ¿Šnh26y/†´ì™Ã¦:�ÿ¦H`<µ^‚š×eÙA ÇÁ›%|ër´Ô¼å“5´à¼2ÉëfyÝ?\ðÉÑþp`Üþk#ÕOåpTßp¬høµ^|™ƒŒÜhð*©-ç~ ~1,ŒÂIŸ_¶Ij(u9óñäƒà¸÷ Ÿ}Èhâ³a£µÑxw¼”Ý}È ¼Fñà§çöÛ�‚g«˜Ú7«)nŠšAPxNÊoßo©M/™þ­žçò9È}Xuæ¿O€ƒÏò¾Î¢ÎkJ—ƒ@%c �_³äêyAä–=U§­G)Xι î¿ýAþLžÍ{îê�sïSÎÈwÄíׯgäÎ’‰Ù¼—³m£…K÷ÌÖ¿ƒ^;Œ& ªþµ’kCx~XU"˜zߺ>Ê«ÒMÚ“Ù·D„±Xܘ@góVfù΂ØhèÓGø$¢Òy‚ňñáÓ é*ÍÀ?7 (©ßÛĪ˜ÂXú~»I}‚¨½:k�y¡$¹¶Ê)¸÷)æ£æY‡–~vSMÜ~³×^ì>B¦™J³Ö=zÝÅ2 ²ÿÞEÉzLÍÇ%¯VY /Ñ2õ¶¼Ä^ '.9$%YŽ=–æ7y�Ãæ÷b½X[ï5–w3XbßÇÀõ9O[þôÄ ÃrãîB, æÂ[º®{ ù‚Û`cã,¨r UIIJBL¬oþÕ5:;3=£Xo燈¹ëÓ²½<3¼OÝš>çšIíW'-sÎh�Å­ÏVË�(~œ´o5À^°Q$%u±¼ö•¢’P£üPjG?"ƒSjQxÎ¥ªÑàªñrÔ¥žoR%ËáGrëcë¢Ì•¬cÞmÒñ«ŠÀ/Úºr¶â7»Š'+âO¯:¡HÏ#¾š¢(ZË8Œ'#•4ŸŠÿà¸U·ˆÌÚzi<_d¢S(3êÙu!¿†Çó·õ‰è8åªú�¨u, ¡øžÐ5é ¬Ù|üdçÀMuöMl³ÔY¡-åç=O¼¶ÆjWçDP2\’c4Œsß±_pÛ„-ÿ{ÑvP¡cˆ¹gµ4;á#DµgGLÎÛŠü&ë3 ΡA‚VQHAîšåyqm€\;÷Ä\µš¸¼(*dr¢Ï<¥À\#� c ò0?E_¸˜¼‡¯ÉõN/¼ºøK�¡aF·"ÁgG�J(³*CÓ>F­·¦Û‚Õ¨,ƒ©©)ûTa;ºÕ9Uÿ“ÔǦ�IWOº$,f€”ç¡…8Ä÷@ÿq`OìÙøùÅuGÑBGWe«è¡Ódda@ãàS¨h;í:ΑA¼${k�ma¼9ƒsPy ïx‰À˜9ûx&ž(5ÊãÜа9¾¿ûDx•qÚF÷í­ÕY_ãL4Ÿ/Åó“-Ãö/ý%lýoZ¯;õ߯šÚþåê�Ùü£"YÍ¡ž[ûQ ’ÖÇ– l½Ó—}�ÞL ï¼}·âbÓõu⟘šÇ'ÂR DüÚ�ñ '‰*)Q=p Gbáà·þh¶sþAH…¿ÇÖÃt�Ø[&Ô’UF4‰¤U×Uj‘O¼ÛHC§â´æ#âÍ߸¼k¥Å5…@rìû«†Æ?’ô½ð™¨H;/�’-ù9Š;®NÏÁÖÏY"­°ô–dìl~O´gVÏD_b_Ø8�C ÞJùÇš:p™‡Šxºš!EŠT‰} J®˜ÙfÈ¿C“Æ�WœVŒÞ×[''ãð '8Wû_ƒ�bb8f\É#Ks ¦­9.{HÅH�ý¯ºY±ïÝ f9m&„Јt¹zpRëõÔ3S‹Ó2…اJ.� GƒJ0HS¡rj>¼¸­n·‘k2Q?î½™–&ú\£6ïÜy‡™¸®¿"yr¿:ÓPIqÅ2B¬J‹�ÃAT>ðRp§wrñ`fÇ©ñ¦ëí¡·»(ÆÁÉñ?§êû$c+ ‡ç§VêMí�Œ‰—fì燘Õ×ó‘!Ÿ«„ómʘº çþ9a ô²óÞ2¯‘rZ�‰ÆM®:ø3GB‡ösÿQWJG«-œQ‘rÞ©²¾CȹýÍ^M•Ó2òI‘LLMݹf6à–ŸZ’,}©9Œ+ ñ�75¹ê>~´º¿î8î–úé£äsUßþLÛ*:•ɉŒ¸™6³AÄZ-µË[œ_E0aÒ¥ÎüÑȰüýaÛ5ÕëS½=�wòű*=jS¯ÜÀ%îï&_îíx!H½w"³R©g—±8þþ„ZI8�–Ó{åW¯ÛšÖÔ3ß6?FbçìÐß*²=-•Hÿ YJ¼bò%Ï žc¶•àCÓ\dXÂ�å´m]5ZWJÂ�qê×Ñ×,õ]÷v g•Ë�{Ï÷¿*ŸìÎÙÆá‚œ«$¿³¢�´†p›‰1|9Tà\vëz_=Ô �& †ýŠ!ëúýkÌájÕ)p/FRRòÅ1¶à/ê¦]lþ›¢zU†?_Hæ°äð½$/îç°÷ÌfšúTÔ=ÑxKÜÝa¿ eÈŠ/ÝŸ¬€‹ ¢ñóJýP`–áT ~².fîù²ç¶,¬@{ O=h6h§” 9cÇj²4^±GÞŠw¡(§dÒxJŽg›X½·ÇMÞÞH�ϳJ+Ssê&dñÈ€œQªø !LBJÈ@ 2*”¿-A{ͳmñyžÃ/UrC¿g,,áòV"{dJb0A;Õ~‡ â°&1ÞçoÃ~ìð¹þ·,ñ´p}–K¦-b-þ4ug%üLãµ.Ö˜BæMÚë¨ÌÔèªëšŽÚ þçúº¤W[ô„bµ{΢›YþÖ•á-H¼ŠÐØ*¥-=Cö £:³‡ª8Eÿ8ÿß&®ˆÝë ÌH!Û>ç~û ð=Y�$Íìbfg¾±Ñs#ý]LÉ”RfQÒ0£À uu¹òK£›o_ûþ»“ PzW¼à¤G!^ €àØhd^:—ÑêóOu³ŸÃ#®?_Ô8çÇ©üH®ÕwP�ò�¾ãÏ`Çàuc¢‚ÅÉn�æÊS8ûP�ºœ®rÚ¥*8#ZZf_anÛÞE¬¼è˜ ~^ƒ%Â…7Ãá°—)öw4ºbO®Øç­çÇ[ÁÌfã³e´ p?[6Ò/J—½1$TÝ„»#ͺØü~iú¬ËJIÎDí\æT³häÅ©$-‰'ª, õÑ~êu°pºRÏ@q�ÄõfâÏìdA]Åê{@>w±ÏÞºÓm[~gÜd÷æý§“á5µ�Ò©-)†ü쟗噊„ÞcD"Ýž{P_‰£�™=£s<ˆ‚Ýß÷9q…Êÿm•L µ�"‘ã= …îx£²€ýRœõP€Ñ¦ö•80Å úM"û”…sØ Ø€%ÝU¼Ë/*)Y—«£¨8M!åíUÃ:™ÏØâw´“‰‡ƒí(�W™]¤,¼-ÿ¼èª·âJÀÜ@&÷Q’Bt‚]½�-Ëw¤ï —X@É[mYn?Ðo!4ЧíÒŸ€±75—âÝî¨óXŒT¸ŸÙ±¹zê™ÁU!ó/@HRÈ$"èÆ>¿²ORI>¶å+É‹x!xÿ,Q®9/jïOÜU¢®…ª¾_kú‡{ûÐ�ò„í½æØ(¼gE Åа€³�|üO¾ŸWÞ¥dnÇIz-o¯ó¥.�–Ž€Oz¦,œòáRì%ìl¾Â�RëV%ˆ ¢*Û‹ÝÒh‘—•V]Øä0²"¦�‡lógò¨` š¿˜'mœŽ_žæÆ”8!–ÖÓÌ#Dí4y–G6;þÚyø¾'òmÁdšŽ>áyÑø.žZ~Üû—Å ÞIÎPK_JäI�Óô´ë/´g€¹�BF,†€¨ÆFéç·Fý„ð<µ‡ÞÑWyfÔÓÊ̽¥Rdß…ê‡füþˆ’YÖãE•=ÿG¥†"‚·‘çÔ6ÇQƒ§‡4!hv—ЭY³Ç�øÈjAc×@~ÆèœaŒŸ§üWÿ°ßõ®^d“%Ÿ¾µvG¾£„#@}¨G¢ §>©è ÿ#i¼A“‚+ÝŸé­0uúG§[¿¡‹²k˜Û‘««ðÈ÷èæ©³«ªG³*q ‚Ò_ÇZèR“Ådè“h4µŸW\Óà> ¾Mü©Ë¶²PëQg.t¤Þ¹,Ü£$—·‘†Üu•qU°[±Ãsä#¸^WÄÅ î+¸|±éxºz§MŠ<…Í¢ðß «¤e/aòì°Ì Cþ,{—' ±Q©kä�@ú6áÆóâåˆ'î½ä‘Ôè·¢pãÃL&ÖZôúI5r§ýLJ$ Þ‚µõ¤äQ ê-ÃpÉAfæ›9Ôò=¥ÀY°lfÛpÇË,õ[ò~¨ã#óx±Â§€ËÉ‹‡qj€l£æmƒ–£]Î+|„lŽâ@®O ?U¢[å³y\RJÀoù4™ðqyÞ¿šƒgÿ|øf¦Íä:ÊR“<^·©ÚSF"f÷×l2'ä¸árÿ—ÿ³Ó½?9_j ”½×^…Ç� ¤îÔÏå�,äðÒHž””bUÐ Z£FëÐÊ­¯BÂÿ|Ý7Jã^àýÕï&^ª0ÔÒÙÙé‰ ð˜rP‰N2ª™  CrÿÐä$'m¦q-ÝÒëÀ¿téÑéÉDYŽÝlÌ=8 ß©^ÿQéðþWŽ/Úš`º³bÎå ³Àz‰¨¯^�ÌÊ}Ÿ¦ÍD‚‡¯>‡ƒK!4wæL0$OI.Âtá„�¥ÖŒ âšÓBCáJºj ½u´¢ï’]–xe_-sÉóÁÐuÍûC²,d¼z¡ÃÇßï垃÷DÕ¢/ïtó�$˜5§À=lØŽš´ÄCíÖˆö¶ç3T)¤�ªV2½®)FÔ<çrÎ.zÜz=^[º‚û9\çàó¤¡õOnV–úHË®¦I¨mzygÜ/#V�(±0Üâ(xØîúBhžÄrChd˜·7­Q£�ß­f$©ðú^Àˆ,¿ÓàÎì› 9|ÈI=?�»;UñŸ-µz×ÅÆÀ«”~}{Ĉðs‡Õi¨ :«D½—Û‡£57Gõmÿ"ÖèšFêŽ åZć3hKá¥m¥Ÿ3¦88D:îÉ‚ßRŠÈ€¢qR›u½'ƒjrA_5f*Òч#õdô µ�ÉXߢTé6™Ï넹z\�,ßP‘œ Š›ÂQ~ŒÜ¥©˜Z°’IÈ(,}›—r‹Eße~¶{šÀ$nÕ _bû�¿`õ½èØ3Þ™©íÂa å+Z÷•Èm*ƒçJ…õõ Ž%• ó¹`Ò¥ñXT @eá´þµÑG)ÃΆ¢ÖP3U:8×¼šÜë•þ59uŠñFÉW´s§Õ_Ý€ÃFë‚JÐ-9 ç\ˆŸ„²a‚ì—Þ^ ‹2fkKý0Œ=®Ÿ™¹b¼iÁMŽ©·ø{ú†]ÊÿÖ߯ÞÁYfœO!""ðˆ :vF•m°÷F±°ðeª0‰·b@-8:FêËÍ*Õõ„$ØòÁŸÕrÙBm´"Ÿür+¼¦|Ô–Ðxô›^Ù-Sgû´W>‚�G;óâ¨q%ç|«&]#QÚEðV–?ž;ýhmâ`T�QQÙIËp²A^�Ç©œ´[´Ìj9êö‹ÓX«µQ±Æ¼QV5Á¢Ê›Œ‚´ÜAü’€ê8]¶D`X.úwpß° ˆ¡˜–*?Â;ó"ë}#Ç^KËlmWuÅ|žXËeÀÌ2\Ç$x§B ží´»´ ÎþÂiD5¸Õê-�G�?|D¹ÎØ—/Åô£ñÉó¯ÔÇ�¥ÕªÄýêŒósE4w±@1 '^7Ì3síýaMþà+6XE&AEÔªÕÕ�w Í( ‹Å¼ÎÿU‘ CoY8 <-•lÈ&BRÞÝd1ðÃx›d+†cnæ€9‡W�"ÑÓÅÅ“?8î4Xj_Àß„¯§[Éõ.«ŠD­W•[æVÁô;\Éw4 õèœÞ—¤‚Ðq±|.EPèÉiÞmNóDäöh¥‹cäÓëðêÁ¦ š©]•rKÈü8)?! Ì�HIí¤9Ê/ðnGzvÛ© Æ—þ¼y*y~Û¿˜ÎÄVÝLˆƒÕz/Ò¢³äçøƒqýmðËÌ㦄ÂabäãŸÞyZRcP ÕQÑÎB¬"$�€Š1¸Óƒl�QsÖ;ƒWÛ°ý”ŽT+Kx®¿ž”EÈøè›êéÉ×`úSѥ⅚Í.ÿÎ;¼ÚÜRÿ#9YƒÀAÞ�èå€È Ã6†ŽoŠ|4:€÷sõw ÎØŒÓû;E´±Ô¿û&LiZvÈàWjì*1Y&Êâ–·t§£á̤_A�~«�‹ºU«=ö¯7q¯8R¼-¾åÇM^ë5|ÞBÁÖ?]ž±Å&oÍ+á6ùº˜öš *Õ L‹ ýJÄÕK7¸ݶ4BÓÊË›ì'4š`¾WFê)P¯`AéÆåÂâÌÅK,XЀ*ÞØ óÉ“†æða,BÊ)%I—QÔÎd½½Ç ŽqšÄlRñѦc>(' ­iLò �ÌÝ7í)É�ªf¢^¼fíÜlQü̓ †Š‰v¬˜üxTÝÏÄ÷ÅøîÛ €yr�^ÝaÉè*¦‡Ê!þœ§ó 4xþ³º,“žëQ›ã‘‚,m³~Q¾?’+l¢Íç^Ð{ŸOèfÈÀ÷0Øö1o㬖ÏÉ@Éí:ñ¡H²í"äÒÔ ¡òQQæk 4¦qHñttü0](ty‡bð¥95å ú~¢4z÷Ò¤÷$l¿xüEfœ9–‡ƒw$ið~É*9Qß| /k¶9(×0å V‘Ù‹Ý+{³Xl4£Áɶßû6Ûƒ#9ÕýU·V–b1z«]Èùet’ºXfÆyÔóŠÅv™�<šYÖP�ù]>(òASe�Œ/2Põ° A�U,÷o¯'Ø»�…MT´‡�Ø%#ízXŒ|ÍnL5ÔÊåh«³i å¬n, ÊÆüØ®•‘ƒ~$ýg)à»!;�Å:#'&(ÒÝ†ë ¼(!%À³„rÉíAõZv{Ük‰{ªß’W%…n…ž/3½ÿê¬ š{Á ê/ñXÁæDTk´™7g5¦�f*×G–n(0ýa>W|Ï»÷ØÏ5B�gs%maïÝD¹•Ïê�ï’ò'm§-£ŸæmØ£|ˆì숈9C+å[ˆK.¯�üI‘0 Ð(UÕ\ÊÕ½©¶8’jw«[‹« ‹ó—k)숙lYÈ”È04í7ïÇp†+�Þ’íyx“‹:�:ª³ûN¯°"#O_§3àP¿ö8Vÿò¾(8ÆQÒòjà`íë�;" •æáÁ-.Ây~ T6·K‚ÃWž(ߺ‡SèÙæìÏ8?4ëWØðHz°º÷Ë“—Ô_ðJþW Œ}̱¥K­¤$ņ�ÊTU¸Ç´4{ ‘BýÍ"1Ý)�;ü@“×cêÊSð±�mÛÜdPÛvändå1¶MÍ1töcêWÿå¹»ñ»[&ŸËDßË©•çõmвùm+;þ•—iX§ÄÔÀŠJÌÌç§[”ÄoûHAàIzÒ‚ûgNÅFk é j°Ù¯ýØÆUá:¨I€÷ÞáA:/ñòä­ðÂÞ\ `hEÞžé˜!¨ káEÕpøÈCõ<[¦Qº�6©úM¤í„s_R%/ƒ‰ïJ°(¥Ä/ÙÿÅÇíûÔ9 ÷·Ñ¿D瀔UgÚÃãšMKËZóÕ7ð�H±€‘ÃðGÈv,áÏŠú9W'�Ÿ}yÍâ‚ÓoZmƒ®/²®³b`šâÈÔ[�^‡xRÖ`éÀr”Ñk(~Âd£6�®Ôb‚7ã8S9ü’-VÊÓs ˆ’÷ü*ÌD�ÛâÊJ.9âU3U¶½iDÙÞå(ÌgÏ­®°Õ¾óüh—KVY¡Œ‹u”K‚ýS?rzm•4ÇG¨òM#�(XUè$ÐõWË .Ó’lVyf6Ø‚ÖÕ³,Œ×ðîl²MAÂ`Ž‚}R†·ª˜T“#ó´kŸÍ¸A<Û!s,BÁ¿.דÝ~òÛ/²ŒÁùmGádCÁc^W7 ÏŸ)î¦ún`Ê1×GQ€$ãÚ^ÿ¤uíEþHÁ1*ÃT}%‚¾UyžG'|Us"|ÖÁ¨Ådf†gKæõúÊõó–vÕA€‹ÝQ2Çÿ ÷§þß>Bk#²¿²¿ºƒ·Y¶©OõŒ5áà剣P·H¬Ã†cÐ;éMà³J– ÎYÏwê8TÙxòÓdáS?Eì襩”ðtƒ$§Õz•iSXx·&šj,è>gm6îËjf_ߌ¹x¹|aŽª×hÈD!W>·ñ¦å¶ð'�%M+Ò údû¼Q¸j‰ë¼Û÷C¿r¿ïC_ý>§x`ºëÃ�}*hPØŽŸ÷µ;ÅÂT(,ÁoéúAï©3¯[—{ïînjK{½þ‹þÉÁ ƾÀDpß�6GÅ.ƒ3šJ’ô¤\¶¹6ÍÁ½ÒªQDè=˜g»MFEy*µMDÝù{?‡pNØâ{®îvòоƒ¯Žœï“ÓïÎí}îÌh¤Ø7*¨ÌRmÊÁbÕHˆ€\ñŠÕ´¼Uúy�…ðh“¢´ÊG•>Þ3ÉX 8z…äªûÃ>—¤- óuóÞÿs€îú{OÝùtOvCZ¤§2 ­ÐÚ¤4¸Dׯ6‘ïzBAó¦g±›g¦ìgtQPF§Óœ\Ã&EpóX�æHÖ±ªLñ™;C2ÏO¤ÁXIãþ·û߽Ѿ!Kõ _“a5¯öö‰Öÿwžáï?8LÝÌÖ e&P‰ÊÉ{N»’àÛ/ßb¾¿6ר¼©“’Žôîòú[¶”¦*=ÇÃõåB½ð·^ĉU;NtÒ[_.§Ö�µ Pt4iþ¹¾ñ»´n»ØôC~™†© "‡¬ÞÌõÒΩWŒ' +[òÀL+B ¦‹Cm¤Ç²z¼ÁpÍ/æì™·>¸—¼Nú“gúi&›¶ŽO¯Z𢚗®�cQbûÏBgÉÊQÊöÞ ´»'Ы²Qçì}k_WÄ*@äÞ/w�Ú^¨¿¤’›é “X>r™3êêuûCEw±ùSë¥q` Ž¥¶eþ  pÙL‚Š÷"pÏLÚÛ lжë�[XIF%—¼,YnëV\3XÊýæd©ÀÚØJF�Ñ�BB¿®74n£]·Æ`Hšæ¨ÐÄZÿâÒ¢C:³Š54Ù|ÙØ»üljvUm9o©>ÓÐê(p¼~õ�wv¿ïóûõZ&¬È•»mœ^SWVT=ÂXlëÑÅ�ævQ�Ãtb¶•lؾ>Í6yT9[Ì9‡†þ–*óñö¬`ÑüTðÃï^m”±ð 3±HÓ<ÈÆì©.‚×m~bÚ9«¿ûøÀÞ×–ŸkÿršÜmÝ@pIC^,†õǪiü7&yݰ4θ\ó$�Kîä�JNZ‘Å4׈Á™ËØ/8iø¯«QZ°ÒJåT­Œ1¯$Ïön„�Põ>ŠÎhÙ`÷M7#ÌêZ½o$óCôØ{¢V*ìÝ!A³Ýæè#åf¤¶M,8ü˜9Ç…_ÝjEE)×á´bÉ�0jÈPÑíq’¨Ãý–Ié~×<°Àv —d_σ™ôu-‰m�žV�U™•ð‘�àò3ïÎb2ÛÊêw }H¬MÀ<ÖXšB]|ÇaĤïjÔhF¤m¢Zàç{ðù·s2IÉ�N”íåñ6«†6ÕYÙà€~Dîö‹´R—a9Æ~õ,N™S`^�âÝw\©³®¥…ïñ£Ñ8£ Òý˜öÒ¹ó;~X¨�dG|l´iS`Ð<õ#\P µhÈé=D©-8@µ�˜Xœ3jáun©÷™jû>´Ž�� *ýUêS}LÔHÔzm(ÕÃð–ƒ*�P³$FUe¼À:pØk±ÉeDNpjrÚ?Ç1òt¹²bŠÈubVF@_tN¥LúºnFw¨L¹ˆéš6–{ÈhÁŸÀ@æÑiè$‡X@î½.¯ç¤ 62¶ZË6=þ-Íáü4jê¸×ù0iñþËc«dÎ�œ^sÑÂDŸ³IAtZkXK3´þí˜*E¤KK=3C£n´¸Z“&{y WœJ(ËüT6é9¸½êòZ_ãÖ€€mdeá²ÿK]ßœ¹xâP²6”&Ì].Ñn÷|¬ûáÉ—à�€zñÇoÀaý†Y¦ÚæW�s�‹üž»b�û'²æÕ€kÎ"Ú‚bj.Ac0¼0G|-K7£Üº7L~ß1`o45yý61;™–1çl85 0cô^Á�{X`ê]Àï,^Ç+öͨ¤³sÔ¶ÜÑœ'²¢4ÅÍ4…ˆUj]‹•1OIcøë§4Ô±µlÛ¨_Dáy–íEöµ FC5¦y«y7‡þ©[‘EW~}§¹^ a�J»ö�¶J|xwϧ™JŽ"1I”Á‰Þ�ªUÚO)ÿ­ˆÖW}o°D诓„Fb–ÈÈ,™T„ °L”ßu~“_%Œžg›ÛòÕ³‰ø˜èOoˆK²MJÉë¨2T§?Ìã‘eQâþ‹4Ç# áNž Äóg+ì£ò¿«†�87Û‡â0ð\7ÅY#S<<´ÍÅÒô»ÓÝxgR€’Õ—"l.üï‘¥T?7ÿ %¼·5Úæ&lõ5õ¥(‡ûU÷õÐûÖûúzNè=+gM=_Œ¹‹“J[™Rü+ ð•›D!¢ýx8Õõ¹ÝÛîz` ¬¬´¥¹´„ÏgZC/žhíßëé±½fSö]Ð6þ%©º™¯�t`sǰ ñp‚šþªnbÔAkb€ VRnK" þýÔëaèÉöCó…ô‘“`YsA¦6¡™Ç¢á÷è+æ±EÃñØËVËßûËã¡}ŽÍ üõ¾ù¤yÝœÏ? ÞŠÀ;ã5º-Ð ð÷„>©F¤¾/oAû`E_ü]XåÛ�)­ì¼€¦¿pÒª!û.ô‡ÀWé†d�nŽãɨ¥ÐŒVkâ?·"RâÊjSIMÉävÉ㓸<�* ÖáÊÚ¯* ã«£%.∔‚oïc™,LÓµÜ� É\ihŒcLii™˜@pp¬õU¨¨„Ôí)Ð-Q=õ¾ÙrÆí:½ß2 F~“ˆÇ¢¨‡ŽúA<µ]¶„ޱõ Ò.aU ?õ† (Y,';>dnƒ2ì¹mE÷†pª€2ç“‹ÑK^ºz8wf€�ß\Ý�ü‡Y%Í??ÂŒ\PÄ! jc@÷:ÆSñ剹éæîaÓ)3³%ÏXfÑÚŸ*ÚÜ�mQcdƒUC°d5ß®±8 ÞÐÿÆè|Ì:¬ðVžÃ~ú‹é-sTö›F\8š¤îªhLšâkÙÐÁÝM»§ŽÅT¹Ö­;2·BƒÒÀ#ô–gӆܣ×nl£äâŠËp0Ô¬Z ™àÕÏ|ˆ0�á)mñìZÐÖ©Y`à—&\T+1CÃpÐàËRV…ÏbB¿£)ÒýJ�Éåo:Ùéþe©r�x¦BKÚ�óõ:Ç?Ͳٹȅé{Ñû_?µ�—òˆ[ú*ÛÔjÕ\× ‡‘ø\&Š)uI½ÏÒ4N#ò³¼Cð¯)Uþ"9ª¹æŒj&8ƒMÚ0œÎe$eòÁ'?X­†\ëõp©u =ßò΄îî!OÒ†…3˜ß4‚ˆ¦´Fâ³°—{O4§Yi|ÚÂúD¢·Å“¨ŸoÝAŠ>'t¾¯øLn&/€°;žÛ_}ý%F·�Î�ÄÏ3Š�7 §ê>�›ÊœHÀ8XRM´¼1ͦN�ÿÅ#¥�ø‹¶{)ÃÄ:QGú¥”'Ù÷Úœ±­�Œ¬,1ýùH|åˆ†Ä nç'áݦ²>dÏ‹ÙÃ�Á…)CÆ(pŒ¥Ï³¡M�J®äÕçÞ÷Ãä8A_�°üµãT`2ÜÌ ït´�·½¦ÖMí¿ ÷/GÔTXà0#”ÃÚRÃûË1ˆâ'=€¼Z áÚjîýüzÙ ÉIwqä`uîâ}‹¾ä„1‰žzBM+ áœb«i–ÊMKø¦]•hQÙCB�_Ö{ôüÇKRGør™EÊø‡”‘@ôS«±´ï0ø�]-‘ �YÓ‹hsdÞo›ã…Á£F¿y•êGh¹þªïS%»„´ó|]+xL¼sS„‡4Ðè\c6êû0ŠQãGd¾ÓÓŸ1³ˆÜ·ªƒêê)ÿ«½è(ýŸYÛY ?æO²¶Ý¹�7¾r[ÒñÚp¹<4½EF3¢‡IáŠÀ;þ%õ3Ë�Öå„…IŒ#lˆ·Å„{DÌ©ŸAÑ8³<\¶´±E„roZjM!éÚ ©Û>&êC_†hí{8)ËÙ.”9¶cŽÐÂܸ³e> Ñ¡m¹>³r|€wÛK*Œ î͘/üõ;³¨T÷âáF7‘é÷ÖA‹�'HÇ<ɬ8")"=fRT¢–Á}{8Ÿ¸ÝŽs©7-äCP¡�©&kÓì=ί Áhm®Óoü„íß#"tôB>r‰!}–~eX[_`7jÿ‰´gÖˆSËwÔ·$Ë ö‹ ËuR‹Æ=h�8-RT¿© ‰8¯BZÏ•×gL`ì~nÇ¢«\ýt ””9qCbáƒP¿3ãà03—4&Pˆ°Üæ odÖ‹'>ȱ¤×|¬ß/FŸCbå Mi=SüVU·®¡¹»ÀÈt6‘,�(Š©pŠ�„Îñb‚sêêêirŠ@ˆÆ2`á!"×ú¦ˆÆWÓ û~˜òKœ©Ì÷¶EMz.÷çR"[ðפ<c¾ç–0BÑFÖdRïç›(ß'½™(§çÂŒ‡ÙÍñÛŽó€æÓÐ�]:òû‡B¡ËŸ×ú^ÛmÆÚûÏOO`{u2!û»ÞD—Í¡¼ýK Dãí[—Š~©¡ϘP0ò|¹�´ÉùuÚï#y¦ç%Bjà„S¯Û[޽®b£(½NÚŒû <ÏÓ¯£È°Á_”½ž&2=vÚ[âU˜:®¶ÞU¶±�+ú�üöG0xÞ#¸:"Êð\Ë7x8[2¦¸“[©WfÞÿ{—Mg;X±A6n?Ú.b6S� Û;+…/^—¢†ûÊŽáK¼ ),í m»¾²)(Ž•…S\ Ìߢâ!œ”`»ÇKü¦vZV�&¾ïì øjM3A»�˜,� Të¼Õ“zݲV ˆjíTiõêÌJí„€–,yulÕ•(¢1ŸÿóQMÛœlø9Êñþõ­»‰wù’m/2-˜´àÖe�~��ê¹�Úüîx‰´TBCs.º¸œ�ñ� Eͺxºo †áü­™Î™Üß³'¨9ï¬Ô�#£Tx8A£Îhof'4,³Î9 Ì¡(`v‘Œn:Ê>5#ÿ8di;Ÿs“nëÕûé|…âp¡æâa;“L¾�N!=¾•öú¡¼$8£U�$æ¾3r½W£p~×o„C?´b÷¤•~|L~­)ܲYx‘{g¥Œi,¡E-ª›î#¶ÄÛ�s:wLHHö9B+«Êß IE—#:§xÆèH1�‚�­ÁÚ©ÌôCüä\Îø_ûÓö µDn¡ÂmcôžžØ_€ßÿ‹ªwð‹ô�Û†'ÛØŒ 7×fMÖfo¶7Û5Ù¶7ÛÞìÚìÚl[o¿ûyî÷ý¼×_0çÎ똙ðÄZqZÌä+·ÝÀƒ+^Z%1n†QÖâ,ë²¶*«‹“ÌoÖÈ€†éRk~m>Ûr]y�¡I+·HF¥=2-JØ.^”»mÈHNüuã÷çˆ*gO1�MXÓRç=NOôâ WR56cšr½ö*$€¦2%99Š3uÜÁ|Ò&^ø‹9ˆOlÁç™÷ß`ÌÒè€í³ÔC{4Ö©“�¦Ã9§aEó@�ýªÙs“ëÖ íf²ØUóæSh÷ûýæ¦÷â¶à«z÷Ë<“÷ýDÁ…UQÄ-£�mÈüF:DBe%¬?¹ ‚{GLð3¾//ÿ ƦÏÇ£‚Ï{¸£”¯Y÷¯ËžÀ‡ ï­³Élß‹Ç0e³I–›´ ×Ãû7Ò,ÇÞwÑæ‹�ù#®M÷‹×�1 [ÁË% ´Ÿ]¬Ù²Ô1ü·=¿Ó;n6B/ˆy£áCQIZ&û\×ÜØ ºßÎáJ¦2½ô7wH=w“7ø|®U$Řö”økÍÜS˜¼.* †¢×|¶¬¦|_|_Ö«?žH_w¦|gõ"ÅJ¯–fs¼¼Ø³‘áúbøï·>ž»ßrR$v„5ßÇ|ß øŸ®Ø~ÞfßøtŠþl$áoBþ¤ NøCÏwýŒ8âYôÔÀƒÄöO™ÎÍÌæxk3½bn@d>lˆÑÂá1?Ѧ‘š²ÈI5*I dÉŒ78["Þ,³{jÖþ`sÔ÷Ï•„€§bB“íÈë[­odiM$ã‚2 ïÕGÈ‘¥þ•YF‹)&›ôž²¾¥ÒlœÁ» )†Ãöù7wf/x¸»ã³BÁlÿý%{½Ìî\Nsû·IÓÀ²hû§OûºAqØ2ù¬+÷RÛ©9ê™Íä3øOÅxûR!nZ’d�†øFãp"ÜIW„®ë´ªÖ¡ŠÍ¯�É'ÌÒ^})«Œ¹ÚÖH{}ŒÒã0xú" Fcùú>qÌï-s÷œ*¸¿ü-oÊ¿âûÏK«Û{�åÉ»$l‡ØJçRXE êµ×,]×UÜÁõ/$%~‹ ¨RÉÚ ¿ûËKWº+ŽêÚY›uáPÿox{µûqm¶™t©û£©³Ûcç°H†¢ °=É‹úÖ+ø‹õg[N¿í8Ýl?8ú*€JæJÄíö4º{»|Cμ_U0³;$è{7ϵq›Ý}ÛjÖuyZò9tþC¬Zgº$Ñâ;v]—ë¡$ŽS>ÿž²Ÿ6½ p4­Ðþ{q•Åç|~¢÷¶æíJê~6$ðz¸«ëJ$Þ¿¸éöpVpÁM*Ÿ) ­õvvñvyX‹Ö‰fS—Pð�ï~ mÓ÷œ½ëd8î¼ ]c÷ÖbÜ6ƒe¾0ét¼^¾=¬¹æ6í�/#™(ò½öx“fóµÚ]d·ŸóŒ#±«ŠÜÛ©Çd ~ÂŒš¤„M·¨[�þÓѦ Ì\tÁp‘õ€DlNÃÿÕy�ݲ°²m_JR˜´ uÀ©laß…Ÿ2Ô“gay‘ UŠ“j€ó÷[q¢é¾ÒE²ˆÅ‰Oc«Ñw �/`Ÿr×ÀA\t:þÄ×^‚„ÈM¯±‚&‡¶�Ð$6 ˜Y „di+!Æ4ò¹Ì¢é¬€ÂEÌ==§:ºrÔ6ûÏ lÌ×øâŠ`2øBkd·±!xGëä:Ü‚JYJï$r°¥-Þê.}<âW�¯H/5kÛÄàW°$»�üÞÁšþ¹e›Ï˜åÎTeTðáµ8µ’4½i,zÞ6ê¯ëø[S¹ôâìHx2H2ÉpIòÒ|æ�™I Y¤&ƒ³ ’YÈ©ÕùV¼Øbº�S¡å‰çXgã%S׋•M[bë÷V›+5Gdz³×�Ç4�×-ïÀ?Ùü¾W‚ÞO§ÁHþÂÊX8ˆ•-ìö +ñ^¾ùÞ(6ÛBÚy{ƒ�³ÕS)2m^–q|Ù (\«‚+Ùb瞆 ¨ïxÛ€cz}‹Ùô¹Þ†;÷<ìò¼g¼Pô¸í¯}Ìã— â—Ës^4Ÿ«ú© ß©¬ê®÷ûe¤~û #´Í�™Ò„ê×ãʶR=Ï“C+;Ò(í(¿\°ëîü%†ÏþCYÁç´©ÓsôÉRóÃm+RB™ÇÕ×n·óÿP¯u*“Ûõ=›÷Bâ M!Óë쮹ëõI!ç»3,†ÝfóG_B LK=ñöT‹D ªÇµKåç¥E¹•‚.q¼5cP¸-¸PA ÛgŸgq\ld¤›hBOÂ^¹)Ç¥$â±ÿZ¦×wVMÈxAAˆIƒ” ïœüòÃ` ÉЛ[àà[Éa(ÛCÈ ×e;�úööò´l�˪è!JO¡f‚#Yz_>Û÷ë05‰u*M w?U¨‚‚®s �öû®EÙO(wš½(­+[%ž¾ÛdŠ\RU!q /f�¤T0³W\EÎ?áV /g´.ÿ�µq¨ŒA,¾5¡‘xrJË"aÌê�>Hþ†aåÃbÉÐÔï︯"Mµw#–VbÔ^êλ:o,æ«¥�-&¥%ƒŽË)N_û7Ub9+­üJzô×ðŸ*‡Àm!+ÑBÃ6‚%ü©€2qY§¸­<€�ÁÈ£‡½ÙÃEé•Bäbs~gÅáµÿès>FƒeR²ÞÊ›£9'%ö–Ú‡ž›?Îc¾ªÊ!úÞäxé½Nr­Ñͦô<޾t¿n|²N¶çÙDA�•Ô´˜¢×SDÎÓ z÷ot=ï7F 6®Š™>ª³2ÛMaYÇ�ŸˆÖ€s³Ã†ç0¡ àr®v‡ôí*çã.Eàf¼^�ÿJâcâÂ÷BBðmÌÎû£Óˆ´pïS ¤ýñmk·Û6¯ëº»›F²Ü¼†6ºðÎ+šÞóÀ›™ÝjóLÖÌÞÌã¨ùí×M¯íÚÐófq½6¥u—Õ ™”oއzù$\lÿÍ °û¢¦èO¨)ß5Py  aUÉâ¬ëyÐñ0ƒŠ¥Úõ¡A RÅ"J:]>(ÙcU®®—Ï}¯‚d¾4OD¤öÁÞ,²•ý¥DÖâ AcC…@ðGh@JÖB0Øi]V^•VôRŒ›½‰¬ÈkËú.€Ó]ŠR¬²Ó‰�`9 j= úd�KîŸ`�4­UåBr"¤>Óô‚ÝÀŠJ¼pA±)]E+­×o9X™4ˆ)ôÛ‚n¸•‹UÆ|¡¸*I×é_¾E4„Ÿ$ ¶ŽT^‚/ ±šGF ž º©©÷P82ˆŒ¡Žµ©ò$»­5b2‹ê¤¾Mm‡™e[î,&V‚È( ,M `_°´i¹-T©€Jýù;»ÝS�˽Š ŒºQ§Æ*¸Û(ÊÀ߸)eµ»9üÀöLI©ä`N›û“ég»ÊK”è‡Þ9¸‘Ruªùs£žoí›ë²öšÉÍ~Ë›Ë{·÷íÒ¦×Á“.þ@ZZni¦ ÷ù«9ëLxUä³Õ?~‡çq×�mÒM>�Hnõ«hKh€ÕDB ÿ¯)âÐ�·œ×§±êÎw+½§×Y��6 K£ó®›áu‰èO^ ô|`�£¾k½ùrÁç…@[÷ÙÚh?ÿ�Õþ‘ÝŽ1¥lÅ2“óÑý6ÁÔù*ññü�íu»­×yuŒt€FÊãöïvyL]è€ðšÏóýÏòÍ—D¥OœŠ+**Êéz¥kÐ2´ÂÛéDÛÀ7Jä\B`?›°U÷·ÑqŸÔíxýÔ·�7ïp¤ž—ïS>ǨۧO‚¯G媪=Poýhé^ß|Þ_©@:¨ÙžÏaÞžÉ1]¾¯Iz�øÐ JŸŽè}ˆ¤Ã®àÕ†`¸Õ²lµ`#”·€‚´òHÖ¡x’Y_TÑæXO¿P(Û׆•×Ù˜¤7A\H¾¬êÛ+©ð†{mmz‘Ì[%ä@0|[h;ôŒGM‰éP“>l�òúü»’ }]+ÉñØõ9çûe®2]� Ïg¿¹þ±ïû¸øb×>AðV�âós¯�B&°×÷M[ï¡—¸í­§töÀçê¸ZàþªûþÕ ±8‘Íßg4$Ðfum–ã}Œö¾Ìõžóñº(ø8”£êœµ¾z5) Ú×»Ñ96Åÿæx0Ùu¿¿ ¨1³p{y+âxXwâw%}ZxøÙáe$�J¢A€úp¦ëó::ùÉ÷·�h<{Æúl7m1wµËó×¹_íã¡; ft7o$CA¼™dt•I�jÁÊÍ=O Uzêͤ�иÑ$Š—5Šd“Ã�N|¿ì]œ² “C±ë›þ‘ÔZý%É,¾8üô÷<æ6úÉb’ŠF dœÎëì(˜bñ®Ž^Ó4¬)"‚¡iÏpKƒ5ÜiÁèù˱Åñ¥‰ æ±ñ#H-ŽqÆÅ' ‚½ü<fzgËéUÈ r.vUuAx˜„HÙ¸­‘9@ÖDL)O¾Ò(Þ*þ†í‹Ÿ¤ƒ¾ðPfy‡ !Þcgß§Þ–‡ù&ã¢ãcaÆÈù¬¼úà­�4³ÅÉä6é Ûýà Mà»ÃuÏ»÷˜LVɤÀÓp`óÙúMAN÷óÌÈìBjóÆ Vàc|§ûqoõÂÛíz²Înµ½Ã/±¢Ÿú`˜ _<{ÚÊ*C+X~\n›1}Š-E÷b))´¢ý¨f‹¸³±’è² Éïaû_½³.›ŸÝ¢AÔP�4Hèôñ n믨˜mœ/Lzø1åøÕA“tëߎOìÖ=‰cŸõU[S>uÑÚÀ˜ªê�þz[© ŸÃ �hø†×ÁºÝÇ[Œ¨íÁîѧÚÖi{8ç•ϸéKùéóÑCÒö±á-3æºî -T9(ø¼L/±ùqy—8ï�%µ êÇ{Ûcòº¿’ ¹ô×óÜ9üdŧ¤ IËAÕæëÊ�grÊ7]’·>—Û¥PÿÖš{™)þ›°!ÜB×ïÇNÒ.§«ë½“W�Û%ÓÛÝ3­™AÔF«CùŸo_òûd§S -Ü¥ââÏÇlMÆÈõð�—Òdvl‰Ÿp_Ј»]\j„8ByE†N‹’khÁzô=ݲNFFRC}>WGIKÂS÷R@†€ï›¶Q5†}”þÁR‘ö È þ›ÏråäW 2v´‚­þ�îDöt@)³PÉúèL?3ûWtƹ³+ðZ—˜ÏXÉ!6«¢ªúU]Ò@v£äw#12ì ^Ñüq­c&-3ÜEZšÑÈ¯Ê—Ûøv,x?·Ë­w¨—‡Nç[ot¡žâ« ïË™íÀæMÇE À÷«Yu>‡:†Ñ¢:·Û<ϱ|·�þ£¯“dÓ�¾äøü‹ó<çùut}8¿¸ù~¸›¶zÿÍÎeBާ竘˜_Í¥GÈÚáQ‹v•QT &t0¾ÐÐ1Ö¸@–}lØC} iÒC Éï' ¹GoeÇ^…\¸œÉ¬ÏWad]h}©D8.!T;dYÑp¼õwíÓ׸Èg¦îûgÒ÷Œ¥C¼¨«¬/W?_1vgÓž¦Þ÷y}ï}Ûf_·?Eµ’W›ZÈÀ|?Ðó9›Hñ½3Í“ÛñR3ÿ“]¤‘ŽùÓý,êãAðƒ#ßð>ªVxëu âcñã­ä«|Öý.Àí.ªù#åãí£¦øGø`]Èšï /“Ïœ ÃLÎ ½íi¶û1Cp¶¬L×g!ÜíõvÖ¼á-Èüý@«9¦ØácSÏç%ƒÉ«¹LVÓN;í\€e;¶‚ëÍãö�L!y—¤‘Ñûpdµ2®�Œ3¾tY—ö›ËÖ‘É9ÆžBß\¢H8=•ŸH“iUÿ0ö‘™Ò¦ÅÄÀ4]ç�úÊ% ��c¢ˆÍùŒÜTˆÇ+k „U&´¼á«ªò—0†ò¡…(ñ�CªJ5ÝêƒJÚÓÂì#]°0LÃæ �œYÆñúÖŠÐUÔë˜KVÇj§V!Œwfç+ …üÖÊ"¶xm¶’W®EøEŒ£Å¥Y7Ò¥xY` *ÇÕ9<†…‘$½ßüé%-,S8w X>¯ú¸ÉSói{>·Ý<í&HS‘«aÅn0ß²UTƒ‹ž”/l0¥÷ J|§¡�˜Ð‘ó’\Θs\�Z”ô­Aèz§_~ðBÓ.¬ÆN{Ú®ñ œk·ÀŠjŒmR"®Zt¸Âë/˜36ͲG;¡EåTRB‚ðÛú *Õ©ãÑIEf[Ðá�`Ή¾ÛÏ~OÎÂiÕåŠvdݼû›×8:0p…’z¸yÚ¼JvÕÔð]a"ƒM Òy‡GýˆÏ·°yÖ2ß’’@‡«*c‘ú·( ·0=T®}æÓ2›sýU/wÎ|áÌ,^^Ñ®—¾ÔP &u»áªÏØ�ôxÐf«‚„ßT?R­�?ýð§y‹ ÏŠ&ÔZHHôT…L¾»r®Mn‡cd¡Q-â©®Oú\½øÙáTT–1 Ìù638?qÖžL%Á6Iiì,àœU¹³Jhù5¬[âïÁþ½sùLJ�Ž·`ù•ÿ•¤�ZrÙô)´FNЍ'–À-ל;]FD|v#'<Ý1×* `qþyÝ <*hTYÆüE_¹¨�d½iT•F¯TÔ‚’/ dªrpfƒ…©̒Âý\Ý¢DNê ¢ø6ºáÌæçþ7œFo"_ÃoEÄgFÀ¿ìQUôVHE*âóŜۥ‚ª@·znøbMJM±R¼Ž¡J+*…Õª[?«‚¢ê4cÌ|�AÓ€VŒNZDJJ!|9PRwQ²Vfù’g“™²ùÛuW´ XE1YúDûì­�d)ûˆRJ_VuZxÚ\·¸Œš�¹ÊrŠ™æÔžù»û~æC¯'~TyÃÃ)>A“^)¨ÐÖYÚ/ª�{Ü\Û¼ñ ¨¤�÷×é4�žÖ"ì$OþZúýMäâì0!м²á_c#·�¨øŒñ0Œ X2ƒ#&óˆ.�å ].|�Ö `îý ‰ Röž—ý:N@ ™SúSŠ#“¿Ï)ü¤BºoªHßô¼käŠùÙÁŽÚ7ëvÚ‡õqTýó2šég6’…ìÉŒëÒ{¢t“þ=þüœÚ×ÑM¹öå6¶B~ó¶1›Û«F®Bìc›Ñ»#®üöâaÎJ<~÷UH2CMl"¯õ ¨óN^Xí‡oxFaðŵRÊô£•a4F ¢âïóŠãá~Je4°Zj##A;TpSÀ ÉŸÐi¸¸ŠéÅ”V;5SæCQ,U¥iÂʸEÔ8*ÚÉJªäAQL¸ël1Òeãjï"UÔFéùxØbä,•pÃÐÕ�½É(“&ûà䃦aê_ÓÔ Öü~ÿÈ&(£WÝ[&!�sª�4ZV칉J î¹bø�( T$Ü"»Ëiá¡ëeÔæ‡�öÉE9â £-=LFoÎ #ë�ÃF—èG+ǃ¯»Ëh‚<ÁAp÷«Ý®SåÕÝoç¡_ïÏ4<Ïÿõ¡­y?Þ¯ÞŸëòÜÏ„µ£¿^ö/(’tØ\WB%pºì–­ÛÊq’e:0ê\Êñ';c+e˜[°}•�bæ nj<¼ŒSåå|“ÖW­FîåÞ)w⬷]=Y%¹é÷Ú?}b3›R€c"u0aïb%h>dSäJ³±LЏ’½Ü¶þ蛾´pb˜„ò_‘´Còüý´ŠV¹ØI�²šµëÞ­ˆ`{šQH„*³Ù/¼ÉæýQþàä”ûxøÇ­²‘TMlZ%J€tiMA!IA^T=s½±µk• H`5Öûê2©N "öpmm>ªVFÆó¸˜Ek/*ÔÓ«¯�m2Ë>oL@šEùk2t ãa°$9ô�΂´øBœ‚¸iãŠíz¨–âRjX@š(ª›¶Ðª¡7ähe[ž-/bÇ™-Ë8�\, ‹·ãüì"ö)¹�|\Inp¾ÞOR~Y?%9Ù¯ ±4ƒ|eÛ3þ;•Ò.ìþªqÕIYz$€ �ž®|ÁóT‹RO£rîï_{fˆ<šSe>ÌÔî»7RF´Ó¯‚÷—›‰Ï»C¤>g•®ƒüöºÿ)hM\=¯{,Aï§»îç A"žš�Ò¯$üöú›Ôß2½V«Þ½ÓFWêÂ\4„öcÖ4ø[FB\‡Wê1%åq_›&ñ ñÀËF¦ N7Ý” iã>­?KŒÏªKˆ—jc*%bNþË^A ³H߬à]dª´¶¬¢Ãë*[U8ˆ5kcK[Áô0€F9¢”TPÃSÕÉÃj£òª¾Ž³6Ï:¹¦4Ùf aÌ@E ã$i~àZ¯úZoxÓ²È5p"]„¿Z¸(s@ÈÊ{¶e8PR1Uvår,úbwn2y]ÄñÐÖé\å¯YÅèku1~×½£BËÜ÷ÀÕ‚j]½ôæeFNL“�ø-¿‰z0�ÒWh-Ã,_Á!Ô ‡«�?NÔRE·m¾�-Tˆ‡6‡prXÛŽ.jõ`»Ú~€”ãƒXq“Ë�㹦Àÿ”JýWÜB ð¸;Dâsš÷hoµ ¸¿ØüHbòä6‹šy^)'ÞÀ; —¿?œ)šˆÌîÐ¥_™C 2€Zœ§4ýz®EÒÔœ`…�C+¤…1éaxïNŽñý"U¬‡;Ã�èh_…ºaæ+´L¾Ž€ž…&zùG$h†æxCIÕ®#—Á*ÅÎ]ÔEOÈÅ›&ˆ ±,öz*�ÒŒÍoÄáPªŠœ¬ýu©(ú >»ûÕÌ»òèR�9¨û1âüOõïQ<E,mÉÕ%/náœ>3»X¸P¹^_C(N\lŽL¸lš:y à(¹ü €FSºƒ ãöÔáo2Ùïàï² �§*Á›–>ò‡ JTT¢U*“\#&Ûç ·ª˜™ÍÍv¿h"Gim¸ =WKÄ�´£þ¾"Ðó©aĶuˆ•ý/ì'9ƒ·ôkŒ# Ã~!n’è‚o¢�’ÃÆù™‹×C‰p8‡–µÌþ$?>Y¥{ç„�y´W̱H³Ð_:•Y5-ß²Sù1WþЉeý[«…¢�# 9ŽÈóì·$‹L$4pO Þ¯V½Ùˆ}”€U]WìnRAV8†ø³ég?*ýá�+ù £˜%yWË’ýlÊ –zØZô•Q5n:;e#’+¯ûŠ…Á‰ÀõŠÚ•t¾:¶™@þ*ÈÕÚ%®�ü4'oÑò2IkdÚ4£Dè’ÖòøØ[i|m�"ìx¥™§:bQ¿ìÖ3¥]üè€'9;¶TQéڔ΂öƒ½fÓ¢ÖgÜÙ¬³9âºÏ.ó»|ó¸n‚‘Ü0¹új¨ˆmh£˜(§¬>¢lÀ¼ˆÂ˜ÁýÇmZ5R51 iÓT:XžAŽ4çUU9á—*U˜PÕµ¯¤âØBÛJc§5xùQ›íÌá¥èÒ”lŠ%Ͼñ…F @@@ÂÝO²)(GK•u·i�WXøOØ7®jº—D ¦r­9 &êpçRù$ZéœË’ù¹vUÑÛ8ôÍT²Sr¢~ ª;c>@e¥c4­„P¿ÆjòßôöMâòGµ,’/P€º¶Á/Îe6q8%ã¾KFK­VbŸ‡óXÃûä ±éÆPt 9mtnzd~bÔ {õEWgü¹ÀTx8yOŸÙšÍàs€×Q^æèsLOìÓ^»}Œ™”ê!m§ãÖ²(â kýW€×‡ßà=è”èÏg�R”7]§~3gúÆâB}_âÐheyÑ©4ûÜÝ šöâX7_NX¶Þ‰0 àÕÚ)OSÔÁYž1w‰Èavü–Xƒ…±wÞVUÙçÜwÌdÇQú}¿ê*.ÐĤ °œÕt"¼Ðkcüƒºý1lèÒ¸D} fY¶´®Õ>šLýþ9ª‡µÿq,3Šã(RþÊ<ÍYâU—¿ñ!7×)[ÎvÆ�oµ?»ûú‘;Ï}_$ôÇ0ö�›ááœÈC«6nÜÂ÷ ÑÑ»n¨¿|i0„”E�Œ2F E¿€À�«%ÞEܶ2  Eå#Ž>(ü—¡¡ÃV©äÈ¿½•š[/݃vFõ“3Ë�YØú‰,ŽEWñÆ7r2CSrË„ÒÓ¹i&ˆí­ÌE­¥rd$H0c¸%&zžUD6�¹ã—³Þv‹éj­{þ?¶œU³ ™Ÿ½;åùïl=ÜúYñþ”­iqÑ�‰D.%GHþŽìnˆsÉÁì5îí§Rø—7 ’+™p7*íé`/EÔƒ±ËÓ#SaL]õÒŽ�(„¬�¦ âÉ ÉðD 0%5Õ‚À»�rÄK�lÌ/m°2 °œ¸0ˆ‡n¹öý—L%9ì~qÀèøÏ­¢ˆ½´E¶#zØþ÷tÚê€ )öyÓŸÅÖ�­‹>LýÀ8h%+ØÈ‚Æ THDH¤Å;h¸ÀÞWˆ,VøÁÔèÈÆ=}!P[(÷š §L§ºÂú}ŠÜ¼rì×.UåEú(#õ¯+©I«g¢YV4D—o!"þ*ÞöX¤OßÁ,Ÿ‰WÍ8fåòO.�ëÌ;ït(�U˜ìÂJ–"+Q�KÂO’ëÏöÂs+S銊ochÐAxŠûøH–´bè�©ÄK!ƒ6Ì+•žã–Uñôr£WfCÆ_ 6hêF—nPP�P`ö—z9^¾Øé äCмRý¤]9x8¬å�Vø÷ÿž b¦ÖPqt/úw”�P:Ž£ÈõuOêMÂé;ÈzªÂ&"5) #j&þ„)t«óá¬30Wkl‹1yÙZWv]OYúÂ⼟;cUüQ›« £�{{6}¤‹n;ÌUn DwAä½ÿKÛPMW†õXš}y�›­H ³C‹ÏE·RU1pšy³aÛTé2†t¤3¶†›%Œ?s[ì›9IgVµ=ŒàÜr�¹X¥G@;PçaUMÉÔŠnØBœ¶pÝÔÞ|E-ö64k¥¬ˆªDìmÙÈ#zk›1JÉÿ4‘‘“t}6>èF 3Åé#… âV•FJ�.Ûd{%ÅиULðð’… ÒGè|l¡èÿŽÄ-M Ÿ ÷§Up0ký¬¨Ç{áHSç«–al±íÓ1(ÝôUáã,ÆYŽaö‹çkìÇŽ¼hsÜ/\«è‹Dàã‡üÚªœËWMá+G ÂJNò‰ðe!Cªð£2ãó-'DiþØj¡q­•Æ®g¿M-¿êº°¿ð¬™Ëæ|' °ßâ1V»eÆ9Ð¥t<ÓºõrKùŸzÑÙ:«CS\Û×…C·D 8»c½, våP°¢ùúÐrÎ3‡cìhSuè°˜�u“ˆ#@NiP êÿuFt9I‚Ò �@¿C  Œ1Ðõý&5­\´ìg\  „4REuÕ�u͈o ß;ظbðø’eAå"¿ºÐÃ✖Ûc’”Ô«3Ðk ôR¸óÛâå*{« ޱ�©Gàd®Æ«óàTÇQ`ÞDé|á¦pEƒ| ~ºûO¢9CÙ^ˆ¯{(X{9w†ˆ¹QÛÌ�êšÊÄÁª©�P>ѰOBä‹‘(™ÐQ$ èÉÝ”¡lŽ=2­­ê„äÏ$óÏBKÅŠJi�d²�d1 !ûé”WýX†Ê¦‡óaÅú¹¿@ZU>X"bপ$Y•myËÓa¡²“R¹Là 7ã�h£‚ˆ¼àOlkãQºg؃"©Ÿ1JëðBп»©=O¦‡,XÕ®.p�U·Ø²XáäJ¼‰3+k"ðg6Ódã¶ÛŽÎñ7Ú¶Ûæ®+äbæ•“Óü.¸%僌¿xŸîKF[4Ìá›äÖy¾ÌÖþò×Å?FÎȵwí唇P'b>L&Ó“øåª�Ü-™ެ:‹¶�êcƈ ï÷là’OÿâOÛ/ªü5±­¬"6ƒhÂçô[Œ+,&{@�ð�’,Á~d@(2²tòxH2?ô€› ‹ÊƒSŸfVPaU¹%;&ÀÏøÞø\6�ºÂïVe§Èõ¥ux0Y\û@G5JÝÅ �æ2·“Ð7Ê‚VÒM:«-Ô¹Æý(ô΂l±¦Éu™™ø:ø�è5SS~U5ã+ïÏu²ìVú~_ =a™ƒƒöìGðfUGo—¸÷#j„/ÎOÖ£*páÖÏ–V¥×›ìÐâ0íiÜý×KUÏa¬U-N²R:ø® »§mŒÓŸJ÷Ü´g- ¤v;÷R=!�Óo·Ï!„þ©­B„åQŠÒŽ[ƒÁ,&š–6j¼H Ù6ÔÐщ¥±€MäŽ,ÄÜÀDÛ³Þã¯d,ba~Šâ´8rî½/™°Õp¿‡®*«d2th¿4í©yÆeºªÍ ôæö-bàÒó‚Åûr5É2ÓÒ“6 SŒ{� …F¢‰œ˜"®‰… Ksy“iÕÜoÉ’"Búaäy«¨)››SO]�õ:µ�Ló}Ó—bš Ž·Õ¿FêÛÜo2ö�ú‘>‡]ž¨$K¤ $RfQgï˜h?Ÿ`ÑÚÃ§Ô %÷ïÒ£¤” ”B`‹P–÷Mñ‰§œæÓoùBDÈ$î—]o/¶‡qŸ+a4­½aKÔ0#JÄspÜf›¾²’O#¼î‚0Grœø^8ÀQ#7 "gZ*«É} #¸ ’`fýö¨Ì²Äjz�^à’W‰Œ²µ‚ ã~=§•“V£°†—#ã^ ¸} VÄ ¤ŸtÍ4SG��û[Œ««×þ̬ÍÖ¨¬à'êp5޼‘þ“˜´÷Ä�ÅÝʪ&Ç™¼YÄÑ%Ö"9žyW�®›4Ô\Ò£æØd»¼àñ5áªÆ×Ì…Ò£y¤|�ZÂ6Eoõ}­©ªÜ,ð~¨÷òÏÌ÷õFý›. ËX“DióbŽ,õ Óì{I-R ¡þmý3÷0NVÕÑCÌøÊü½baF'Ð�MÈcc~Ú†NBÌâ‚N�zïkl/÷·»•CßD6ªë$ü~«08t]ä àD+åd¿p{vÀAõ{’.YM#¡j﬽–0J˜ÎhAø¹¢¢Õ¬13‡àe8ðç�ùE]Kb3�`oö©è#ºuuI›bù#ìw¬ökÅÙUU+gE!üŽh�ÐÙ²©�œ/¬´¢dÔ ÅUá¿ÜÝ-ìà…¿ƒTEôC4ú‰Œ’šØ'ÒÛš¤a'k*P6ìv ‘Ø®±fÖa›+ ”zU.‰08%çBšØòÔ%N5ˆ–º/»ïƒovŸ¿èJâè7CþÚ?]|�°Ëô-uv’e�ÐN7ßF†ÅâÞn1‚/y>g_Øñ+�G�nõîú¶Õd5ƒê\7 ‰e¶pÂàbípÇ&’QZ޲›zŒ иš‹Ùÿ‹ìϤ»~²üå*F™XíEym‹•0*6¶"¸‰a¬¤´33ÜÞFÛ¤þ÷\ò´M.O¢?g·Û�×õe1e|<ÖtSqFd–TyËÌóXŽ/§›Ïv»àãáí¶¥_aãóõAö[Tµ�ÅEvÑ=î‚�§Lª.Á¾muQD¬ ½MárÔºÜ(LŠ·¥Úω˜¬ˆuá  +¬jH0äï(Ú1e…;�4�aÓ/£øÈ–š­‚Ik£JÚ�®¿mŽv¾™hþq¦�mLÀ(MpŒ²K¿,¸3Å ––ÐG§VZVõÍÂH�¯ëÆ®hŒ�å”Aqü]fiáÞZ B2.¨ò¡• Z¸£¬‰1CêáÄÄ8 å#S2@P ¯ÂN´øG��mò;â¦?Bb»5Ê…bÖ:z"¸¡‘óoÒþ÷eYªü¤/IGiàBkÅĽ´DåŠGrK�žÿÍ�߈2¯ ÿ*á9.£ê,xh¯w‹-Çã;ÉÇ|s·¯à¢õd¸šÿãi�_&Ö%$J$¿à™`1§®¥’^öÊ=KºðÓOàž¢^S—_¦­ƒ2óa�{´�ÈhWPzñ™±ãÚª¾ ‚Ÿ«©•[Ð :6ê™Éñ�¬ ’” OÀ:D\5'RÂ77XR9fÇ–¡ÚT |Ã×6ºýGËií’ÙîkËÜ9DͬÄ%ôËy]Ã*ª¶é²Ë‚ ¹±š†úðÐmõìǼ˜ÀBŽüÇx\.0^5,9ˆÝGýUýû%ġկ$KŽÃï>æq4\*9{rž÷X�ÄOé<% jüÖÀÙ¼Ä[g5�pü´ÐÃ}=¿ŒP]ÌfË÷°Æ0t�xXü°h"�ËÆA×û?O_|¯ïMe¹¾žÛyŸ�·£*þÊßô3C$Ë¥ Õ83?ocuõzu¢·EP IB±âò¼]^"Þe¶yò +ü™…¿*ix—çÕ® W‹<´SÜgB4°1pànˆ%Ëãº�L„•dA¡c¤.«:ÃwÑÀ­¤¶ÔÛë*¤ÿ]!°ŠäŒÐa)h5w áüæþ ”euܦeôwÜ¥�]ü_ b4wË…’]F„Wĸ±¡ÃwkÍ¿H uã «ç(íÀèÉ)"0fàp×oZÍðF¨ñ Gg„¯ ¨b%Dÿb»ÅKCip€_®$~Áׄ°$>Œ8M0ÏL6ýÏðä_®ŒFN-«"vZ°­$}$ ¿ÖD1Ѳ�dŒß–Ùåq´[n)öÇJârƒ�GV›“\ ¶÷¤²€OÓèÞâó5On{Bßýʆ!‰ÔxÉÍ}h(ÚÙÇ—î·¨b—”êÈ÷£Åî비Z2[_Š®çÙ ­—Ãs#-õÀ&–/oÑ|õf/Œ¡Q�zHõ ›KrŸE¦ËÍ,‡èM7Ü/'~úþ%È£­˜Ø¦hUÐpU寪F³�¢Œà4ÅÞo+ t… È—æÆ*b`h©�Óü˜átuç'ç ƒYÄi×G÷•F�s-‰ý—YÜÓA`·M¹ëV5À<‹úÌDWQ‡a�jX—M i wÑTl¼�7Ïß’OH\™Wøc•±óý” ЬêЊ墣sŠ÷k÷²wó)Ê÷Ô¦ïq0K,¬#=1ÑÁ ‹*¼íd9éü¹>¯�“§¾|8ÛÝÎQ-� Š»– öB¸$<rã= 69z_YøØm$%�``-e -¶'þ-¶‚¡Ûêð§E~s© ŽÂÅüËC,šOC7¨R�÷SÕhsnƒ»²²1¸6,¢_ �Àíξ5Þh;W£#²ÈVQZoa‘Ä4¦4¥Ò‰(ª^m ¸ô'‰·¢<ÐqV“44Ié�¯C„Ò9ò]" )ÝÐÊž™“\ÐÒN´*Œ–݃ƒêÑ*ÇnÄšç@ííOÞ]Ã㥭lž‘…)5´íÁTDûáÀ¦8«7067ð¾ü'yÀL­:� ×çÏ*÷ç|��Øn4ðÊÀïºZz¸N] ¹Î’°Û [C½�å—¬æÜ[U‹¦ÙŒßmÆÁlö#ƒ„Su7�Ë�–ÑïÆã”GVë çdÛ{†ÌÆâšò¯YQñ#ôeï/¡"$åqå4Ej´öËÏE_õ@BèÇQBjÊþ—<¬#$ÚP²‚Fd†ÏÞç#Å‹5\I�=߀vŒù E�qè�Žæem4U‡­„䩦&òÖß/@)ëK…–”–0Bºå`·*f�¶®É<ÐE É&  ‡"¨'ƒ¨G®•äÀ§ÈWKǦ­Ä9ª’z¡v³»f¨á„’ý9)»ÚáñÅ=sf(åáLüÊòת¾¾–°.¸ú�Í49ˆœ»PF”htjY}4=õ‡ÇCJ TRA†•.U]'ÄÜñWKÈo¤V ØÒE7_“Êq–�×­XiÙÉACPj'ÂO‹IõµÏèJh9šsâ•À±ã1XT’’Z*ja•^KŒ,S— ÙYNC¥^e�Íì÷Ìr™–[u™¼÷W‰> JÛ, û’̘¡•HØÎ4–@¡ j̸”Ç`û¸Œ‘³rÀ1p”I¡aV]èäͱ©FšMN<ò…aûT>ïÃ0ÙÌü.¬†ßºO•qç#²O�tWp”qÚC:&~[(ù ©FÅNkyâp†C†ÑÁ‰@6ˆ)VkpCÛ·Ñ ™¶Ýl´R3åˆHÓWª³úßšù U0V4Æ­‘ÇÇC£—f´Á “)©àš(¢‚WürÎnI—éô«‰â™6m9ç�Ôð¦õ;M©–µ…¿,r7›‘C_d-”Õˆ‡–•¥Pµ—TŒ°%ÜÉÅ-4¨MÙšJÅÞ‹¥a„ßÞÿ]ÆSN4)�"ŽÛ Èh1é1²e³"i2÷ºªÒ -ù)”·…ð!�u[‹ÃËb1ƒRx%orµçȵðš”ôOgŒ^X‡�Ʊ‘8Äyï ß Éy%ìj­ {¿Æ”ªJ´ø”1©òhóäßV¶¡Ëª ] (µüÆ“±6ŠGÖÃ…AW+ˆÉÀÏœ–¹§Â Ævüœo’‰¥ÕþÔªÄg§7¢ØÐbÕµ‚uA˜+öDÐBØ¸ÚØ+xYš£çbÉyËÚ‹ ©­Æ‘™ç£{c&ÜdbD"ÈT–éÔAÓ$• ââ¥ìîÃdnh‘ŠÆI8u…Ž  vp¯sÑ?nxžÃñÇ ž‘ít‹<$�’mÙärlÁÎ`·NÓ²)—³ñK¿(üÎ ÙØDR•[Y;/J;ª%ƒ‘ÿ’ßÐÔW´÷xP&�`#Æ;ÞÖ�(–¤?[p,ùyñ»Qóç†høJ"9mZzX$cF1†CZÝþ+03ÃRô+8u8Hʲ26 h«³†¦Ñ*l%”i}õöÚý ½XQš¶²qÃfÌ4Fûä"¬ò’·-Rð½ë}oÊœÝ ¦ëyõý=´•ÿjeFëyÓ7ôýªýùNS™b©Îgça-{ï÷àr± &>Ì÷a«îšÍmdŸùÓ�ýfßuÒ¦õýÙæ]ÛX¹ˆ–§DÊa°àâE'Ѳ{šzP/@àaþrÎŒ“x·ã›ˆ_Œ@�Ýû�!Ÿt¤³Áy›^×+áùpÖ ‰,¿ h2«È×­·ã¶r�¾�Üëhñ +ñÍh}B  )JTâ e¤�Ĉj”VÔ]ü$¯”øFåO.$rhÔÊÎ"*ÏA¼¢qÅ–#Òåá I2� 2JóJ5�X^”pq•”¢“'$B÷’U«•’èÊ‚‡ª½­±d ±ioýs‹’ôwé,[ðOýÅ[â-i¦TÆ*®*n›µdƒðt4°è[[D…ÕCbÄË<Óõ%¬ŒÄ'Û aÐÅ«áí¼‘âX{ý°å·ˆq‰¦ P03…u„!Ü"tÜwèKm<±2i%i‹¬ëŠ}Þô m—§ªÒ2–|º1Ö²p­ˆ=ÛÌ'.Òç’xB³ïx:~C‚€Í çµGĆâsÆ0w+EU·}J_»J#ñ—¼*{w÷±…’c|?ú”í£–Á3ŠÞ¿?/ß÷189ÜÉ·–gí_ßQ‰¿õ^ßáSùÿÁ"ý“$SN¨/s;ÁøRèBµ´½¬ü=K=‚dýúgªÎ‘º§Ÿ®Ä†„c£�-*�–Ï|ï7^¥âwy°^6ÀÃãÇçÜÌG{X¶´ùäUJS]Ò¸1uÂÑ—7›g‡EÊú=éöA£ú_˜èýQðèl©/Ùçeã`û‡‡Û@ �8‰j’êìºó“Y�“Z¡D�þvN÷CW‰¢XÒŸ¥t.¯á‹øH¤¨o+rèPÑMa ¾+Í& LzL�qFçÙA£¶l!ûð»Ãûl¢†¨…"T–ð•ÿ²NïxöKbjc¯—J¯ÙÒ�à”í²ÀØo¯ÎCP]üäÐÁ³Ò…ïý$VR£CŠbÞÍo€|¡k� b¼\ºxè”O“4šØ·5‘èó°kÞ>”ö�{£|*·ÝÃû‚M›‰àw»–AíOh—®³`"èÚ3CjûEJ¡,+’/cSèS&xh!ÏH¨RÎo·§ÞRìô·@k»àãã`>mÿb5¾v9¯qÒýúji`z€6w±Šëטœ *´Ñ¾"¡O‘Tšk¨ŒÉîAÇÁ¶ÿÁ3QÀ+oÔ°/M.£ÃT¥JëâÜ™ Q‹9ûU^(3S‚¨!.Wz:´þŽYãðCþAG™t<°¦)1ȼœ_!²&8žù�Y±¯8]>"ßxß`N°ÐÑú€cðY´~)õÈÉTw`͹״ÿ¦wpÜÔ“%Ü7·I“²~‰FEN]�&#m:\¶ÔÀc ¯Ä$8XDtP9ü£Uæd-Þ…’3ä`¾£¼€HºŠÐ¶_Öö<�Ñ$Ú×”)0-b¨4�÷ÖÛÛ5<×úO¾@Qœ2Œ�2߯%1.ÛOr#*á�V—0¨ÁéÕ‘‡tM¹ÝDåúS·®š1wNÉo„Ù�‰�íglQOè7};¼ rp‹ÑÅßê˜e­�NpH±f -ËH)…QØÍSÛðçó}ê¿S‰ }D¨½@Æ¥¥Ji&ÿrÊÁ ƒ@ùtàdë~­1Süî†e):€°—”#0Ùq�W·¾\„/�ùàRí…×e3Ê–Q49ïH“?x�‹ýza�ùQÖG}9;ñÀ?|”¢{"Ba‚vö‚Z2i�þs噉*òeju.Ë·š†™¤D²fd?£ÉØ ¬+ËGñ8¿%ñfMcå—×qV˜�ë`‹]NìÏ«<»\RòXÓÜÉ)Ú¯öo…}�r +*+•ÖnF“©â�Î!gp… !Äû!6ÚÐ0ކ?wƲ圮()ª;5Åβ„æ1?ÿŒRËÑj ³.—3#A’]cÆÝØÁO 1±0²‘È‚,Ù׿•í2èr g�ÚÀ=}U¡´Ršˆ6MIlSvÍAÎÚ¾Šˆ¾Ú÷á­·ßeR¢u.ã™k‡Ò‰²B,e,ÚO„Î�BÃûÂqn5¾ˬڦ¬ƒ‰&ãý!< a dBÃHñƒµhr/Þ…!-O0#wµpæìÚ7n¯r<£°ïÐÕd¿eγàïÑÿµ¤5zYMà„½Æ…'«ZTØ ÀÅ9ß»�§8¨Ç¢ä­Æ¾ìºe/òvy‡ïó¬á(R�I�Ʋšr©æ]ß%‹Ñ€+‰‹ÚšW”õÔÕ2Ç<ƒæù•«Zói–Rjc\jgQÜÚºP~û6€ÔÔÌ,|É&€pJ+жà0Éš�ævª*éägÔu<¥[ÖµÞ]ûÎ aºÿ3–™Xo¡,áø´•aF¿zr~ö›åÆ S”ZÄðULŸJJ¤üN�>nZF`„LN3Š¥n(£íOì´ð¼U˪=¬Ã⧬e›¦ôó{ÝŽ†èÌ3ç ç ÃÏëÄSO²›¡À�VbÑoqŒ~xÎ2VÁ“ˆë닾„ÕH´Gý3ÁÐïo°ÓóÂÙß?Ûþ5­C× Iù,J‰¸îxö/wg5`¶0¡ÁXHDÕTi·‚ÏÒÐzXiN3Fg!òãbr1XƒÞIã_ÎÝ2dc Âi]œkt€�RHatÇò‘5Ü‹Íêm9¬1Ûµ�uô‰7m]gQ4– A³w¿»$G´º"Å·Z]—#ìÖ&OWTó-ër†oø°IËxF Ã[L£G*\Te¿¿›a�8LRéõ¢ æÒ£¶�Ä4ÃFc=~BôYGJÑQ•PÐþøf¡µ’ÏœºÐÐËá~ÐXÊ“Ž7Èã ÍD|—÷›ÿÛX�ÅñSçB,ÛÌËt+†‘-TëÄpKúw8OoüÿÊ€üY¢¶B’dÓoYV_ •â]Û€NÑ?wIŒ¼HŒÀ,`"C•s‹� ƒ¦A¼kl„�PØVVöØe£mzþúÜñ`¡™“\i¢Œ�’ÿR¥ÐÂ’!°ÅIc 3®1Ú|¥>ŽÍÊç:…RÛã�Ñã)åuŸ�5§ ²À�%˜ö«Ç,ÿ-¼à]¤ZBUwx¾’X§FÐ4êiJç¹¥ØÆd­Ü‡4ÙW”>øÃÜ[Ö?RæRù^sfK•W«sLêH5eM6„¢ÓóÓu–«O^�Ú#ùèà¡KY͸Õˆ€t�{uôÙR ߯Bùte S%ÑûЗ Yû(bv軿�øÈVm*�›vt3±À�¬d’È…2C«Jß×ì™iUóe–ä2ÎVOk·»3"&ý· £ÅR¶<ÛÎ�ÍÆ—›jP©¨F¥3wãƒxy !(/5*>nakçü úB¢”-À¿+Š/½|}Y³Òf�}Ñã$±ÃÈ•"ÿX‡lp ¢cÔcø;Ú²f}Ó•áš“ª–Àºìª:1.�¡û:[;m…Lxrlª¸xsÂuÞÉhà�O kvV™å ÷Uþsš‚E?ëE ��(¦£™ŒitÙuWIÇœ%/VhsâÁb¶�îå:x¦ÝºÄ‰“­Ñ…ו•õŠÙŸYZÁ)´/ý}‡”á�/î]­¾ìîù¸t}=מ[€Ïó¤r,YØÌ §A‡„ô |Ëp»£z™)¹‹è %Uç¦×Ø)+§‘õ\:/ú­JÉf?ñšÐ"?J“aù¤iÄ ÐÜ^œ=^P^Ö»»ƺ¦¼mÎÚ¾B² ùîŒÆLØz7#{Ï“ Úñ ªÚ°ºëG3µ�Þ¢x†#��T£�ü;dü~d¸9fel<µ.©bAù¯¿ìRÐ|vø_ÒbO£­!Æ?54óç¨X µ'þ%«!ÿÇ~ÞOvRQ+¿�Q®Á€°Jì{8šßóÔ´¾¨�02§µŠ�‡Á¹ß×QÄS¤˜ð¹}‰êþ§÷jœËó#xz"Ýg#=…¢›è²j p Y��ŸŠ[>ÉY°�Z†²8ä’ì9§d�—Û·†êlá@ —–ª¡ýÝè4¯†F2, „î7‚Ž‘` p…eaÑ­É)ÅÛð“ÁpºŽ."?WþÁd®SBëûØû÷—›üŠð:PŠŒ¨°ýBÚ2‡|®¡qñ‘±e¯‰ ±ñš&Ñ…DV\\œylcðàgyŽý ޾ :—–ã„,1‡Æ!-›eÜ»—Ãi¯µìÆãÜö÷6Wö›GBÐ Âÿn¬ª ³:Ó802Ëž~ªsvõŸD{|ßÜ7ÜrÝÌ÷qÇ„Â�zš�xÓÝm†¹ÃNweÈàs ÁË[‚ Ò¸ID÷_Åz´w¹¿f§c>j½l^ª§|}r~Ë 6÷b/cµV5.h¨cOò¨ÜEÊ){n†[k­ÂêJhñ ܺql´,•áìéŸxž[ Õ§÷%Œ™“nÆžoÍg(k¿3VñÃ$?3ÖGR�cæ=ø-ƒë›ycæ[Y\š@"E@l¥«ø�ÔK—IÄÜ[sÒ”ÍÎs%ü³ç»Æ`Œ)§¸(÷ßey6_n‚là{_¸Otâ@ßgm*ªƒýx‘µ2PÎzE‘í1ÊAÒ¦”™ ©{† ŸPû}œ¯QÝt‰c¥�Ç™‰«Z£O{n’[‡­{*x»ß4“טÀ9.§]͈æ¦C¶AÈû^*­ˆ=oŒxlŽ®üÕÜ$n¦.¥z‹âýrr·Yü–Q(¥/Ò×­uéjõlPØ ê«{ßq©æSkÍ™êÝžåêeE!�n±¹\‘Ù'5þµx{ˆõ Í:H`ÔšÒ‹Ž7RAÛ¦ƒ´CBá$¤©HÄÿ¿ø'n%ù-qì±Ùa›Åý'‰¨Û†¸@›Iç³ÿ¡”ò/}Jeì¢FÜл¹³¡ã\tü})Õ<™î¯¡9-0än›MããƒÉ{A•;©ðÈqKœQõÅ™² ¿äFÖÜΔX Uu,I;DŒnÍ“VºêÕõ,M†å@k< TÔ‚´Mfü/ˆí K|�l.½Äé_ÝŸu-wgøñ?QL+—<Êi*lžyi•GÜ•#×INãw³*„êY*êx(ÓJÆ!l�°0¡§ü—ã3¾ùL¸ñ!$&„hÿû(çþ©šà½(_`„‚l>×öh@è³ÃKî½gTž¤ú=¼û©y>G b±*¥?1 wÚÄ�ú·‹®}´Çå–|x–2I–þÃU-Ô*þ;ÖNÝèê<±ïj¡¥„h¦Q,ý:€S¿Ehs½cÍÛÆŸû¥†%§J¥s—Åê–;z’A߸x ¤ª!6úÃN»ÔËÕñìܪ­{'±lzÏàR ÓÉ›,´FïXu/(Ðái/>ø$Êémü¹¢ø»¡c#±#«Iý5]”�úæG—În Õt¢¢H0´Jo¢¬øÑj/—N!H6ý»ìúœ*GÞº„®&€ †ò_’^z÷£ëþ|JÛ‹¸%êc7É¥/­ífq"¯ëX"œüÕ»ÿ“ÚXwË×W»"”¥Ã«>»+þYŸ�˜¾Æ— \Ýê¢ô˜¥ù%¾ï·I,¦vvÕõͪ�µ.,› %F!™¥h92§¶E:ZBvÑlƒÈ Â)w¡²|øìz½•ä KVÆÑøì3ð¬ �.â/oÎT†©âš¼˜f¢*hæŽÓFúIù <],v²&WDÓ]¤“&l…sýrv­Ë²Éa«^ š-%¥xªæjYý^»ïÌ�™€mŸç©uù'~5:, D„dæZæé™[j… ¢{Ì4Ø„ÿ[¹‚á<æ£AQägwV<½ÄѤúU±¸mJTŸÝ×�2(J5oäÚ½6ºï‰A‰9¦Þ¸>LäHx0­#K{ü“BU�Ÿå%]ú(ßÎ�$÷¾êì>¸ð{„1ÙþnÖAyË-å ÕçÌߨ‘ÚRIô/ ¡{!p¢– 2P±.b㌾eqÓfH Ä`røB èdµµTJÆ:wVX²;€!őՑ£äQE±Ñ�úBÖ4I‰Y 9ly@#™”   òÐ#_õ˜‰�Ál¾�¡×\Òb ìB*Iry‡11þ?O&êòµ U]4uê`ƒ‹×V+¦¯AM´‰6N  en5šYwŸ½Çs“]NSv°+]B?—(‚ûýhèuçBQÚ’Ì\ëýæÃ¦ßÕúÒ¸½E4îÌ ÅÍ(§Kž�öV ÷rûfwS �Z’sÈhØgQ.^·ÕãE‹¢‡4n\jÉÛÙ�n¹ ’â$� ü8¶wÖ5ÑŒÖ1 rávžLz»:Xfž°$@¨š´JþŒga¿ C&T¼Ê‹ªe§¨C! ÚZM–Dvî<Ôd÷ '€Â °KOOM‹¢†²áâã-QØð4å\ áµÄw…ÿâø°­³e #3I”R§hÁ ïðëÿâ%^�SæŠç/óHòñ8›ÕcÔgtÂlÏŒD±1*›!ú–©Ùõ´Lô¤âÒJçd›c8ùÇûŒÛ‚‹Ë¹¼çGê/ûvZÏIÑç«Î½¨YÌ]}‡Áé¾–ØxØžsi~úFu½¡¼ÜÞ8¸Oô¯F»% û8õ}¨ž@$ií»Ì΋W¨[�/T»Ÿ¨YÛNâ¨r8ˆ óè$]µèK²)€@Џ&ºL ÊÇdpÔ¶1~4 /߉ ŽÍê\„XzæHŠsË:Úï2¹Yôö:ÊàÇ…}#Yx–A ìI< –oÇ0Xªóým†*¥;îGRÔ–ƒŠßÖ—Ú=rŒÕÿMIŸfu�ìM*’n å-&9ð÷ÆG&PÄœ�Ä®S3!€-VçM]( ì2ŠK±e€¢Z�Š•¶žp�w&½öÒ‹¨ÅQl�È„¦lœkäbH6¹¼Yèç{_Ü øç ¼.pb.„É]L´ü»iu'ˆ­_>àî·‡Ãëûøå¼ûý|/:BŒl3Ù*—¨«šó‚UQó–ÊIH «€ó6¨[àVgHNkÕöFÃùeÒM(¥‡�ž‘°ÊZ¯w,Ÿ:@˜R2ƒ8CÜñÈÂXñ"YpDk¶ìýÐE"ë,9 ųÂM>'Å>“ß×IÜ|ÁŸn�#1ÏHNˬÔ0ZÿîË%~Þ2d½ <�ŽÃåø ;~'¯k¸®ív7“Ë“ßþˆÝSô�ÝÞ›ñÑš6šnxoxD‘øðaÖf÷´—š Ãxª6ÒÁ’ .h†˜öße`tÿe�ƒH ù`îaB5oÞNz¿qTe-¡£…ž?ˆ€"�¶\ —<l›n™h> #+Õ›˜ÙÈ2ø3Ùñ”_lä`B«¯HС`˜ÝeSП_Awò¬Ž€áÈQª”mÀ4š�“S.ˆJ‹>Íôv‰ØPošEᱨ0|‚¹ƒb’nk[eemB£R?uvÍÔsh‰\�>åLû‘ë7¼JRÚׄ+TŸš“Ÿ–V²²¡bƒ±çî7]Þ3wé‘‚iâ›ñ"’èþèìA=²“Ió…Ò£è'_°½·_¨m5‰/=rÕýSqù­¬ˆ�é“�­ÈŠšØ³G…4:³œ/7î«A(³«ú…Z…©6�‘ª™ƒ»îx:ïéùn5èhÛÛ¸ïŠ*´â˜#§û{%œeììÄ€vã…ˆ}ÐIxFálD!v*Pù‰ÕeÎ#®*ÎåÇÁ‘,áV™Î½®îg O�Ò_ñ�V^§f³jhBè—‹Ih” EB† Aÿ\gÓüÉvD<#^eöp· £È‘œºýA «HŒyô0žQd­îsÀëŸ6^vhg3e”wžgSHÒ“8Ôèx/ws¼6.Ó~‘ðIþƒÃh) äÿ]6O h™.ˆV˜Ñ“±†@`†�ø°I½»o“‰\â4­­Üþ§ÙÊ*.t©Â�Aƒá%ý`< ô01M‡ÿíÆÎ'CYÛ”•¿2(�a¢ýϲ:ëU ï¥f9>û‹Ù-ƒQ®[%‚®¾—Ê«»©èO 6Fjô”iÓõ�¯…ó¸À‡ú¤R,5μlÍçÒ˜Å4C¶Äþ …%´ÂÖ¯# ¦îšíyg´‹;„é’©Õµ@h©&äÓT6Ž™—£Œzso…ÿ)CgrÖu­T¾êŠb)û£åù6•ØõGã@gžÝfS½Tà'$¦ˆ³@‹Þ�F.®Ô4©:ÖÈùÄmNHvTŠÙËz„ìˆ(…Ú¤䣿ý÷VðÑ(²Ñ¥%£i5£šorBöÜgFƒ*V¤ÒÀª²L|†Ómì4†g¯ ø‘®ÂèœolêŒn_þöês½k–Ýšæ‡[t‡µ‘¿`™½‘µ˜zÆxý3wç~¥�4]EN9zLª(>�bØC�3µj^å&Ú›¥Ê”4à%¼—ÁrUþ Ã¥ \Æî|W«“³ç6ÁÇï�—�×’�÷´ëgí Ÿ£úœ×ë/o§ ›/‚g9�7/Úå‚m„ôä÷ÖÜP%»î‘ïNŸ‹ÆCfr¬Ö–ŠØeõ�oaTÈŠj%n†,„ F.ºk»M$@EWQm>h9RäNÞg äü�·_—97ax„RjQB¶<%¢ˆ=nL?J÷Ø¿éVÑaY ƒn$y»„Wo̰šŸ�ô{Á9 (’ѤˆAMþ—G=Ù>û“�fçü8�³à›Àswù¦M Z'áù5ƒ•åQ_CãÍûk„’&†L„ËH0‘Åsã*îÂ1½þS¯îDð ËvÿW{�ã~¨ 'ø¾Ì´áóXö+Çëþ(”´%G¨Ûk¯‘´ëÒÑôý�íc%!Fá+Õz1 ýR‚ŠqJSޱ�À+Yôå�ÞÏÇiH�è¶ûÿ|ÀÕ:gKç©Ï¶‘УÛiÐ}µœ\+é» oå¾íBö‘¼%µ] 4RK=í .KHÖ6Öo6h”…úÕ|8{ÐºŠªÑé;|`%ÄëµÌÚ•?ö�S¸Ž8ŠÙ_¹€lßý£!ïÃ,×Í.ßûƒî×ùòî7B½×ÁÇc3�§SQ´µná ØˆÕkÈÆ×üáY… TÛ�“‡‡±Ý•rò�êØÁLÒ«n`šÃh´‚oMeÝà ʿc䜪ÈL­+ΘÎDô ü¢J©±„V›0fv--#ËËJ�“yeñ�ŠÒ“$eßãm”Eçñ¬*UýÒÆÊ”¨Œ–^ÔFô7©ðäßÕ—I"³h©kœT4²ˆsÞ‰¨†­|$ª|ªƒÛ�f›EìIž¡þõ]¨£_Iù½¡M6ÔóãKØmÿ2~>ûÈÄݯ’Ô+bøn1ŒŸï¬o—Á9Ýï ¼Ÿ¨pÙ~±ù:Dú~ËÕ}ë¾ùlç{1Ãm¹mÖíE;xù¤À/át}×3X5ÞÂ%‰¦K†¶*iƒºº‡¯ç<$}ÖÖ¦‚€jfãqúu*\Ô««™óW¨Tí\wÃåo^©©PûXîOs„²ÂÇ]p˃bÿÁY`:zðH`ØË}«®ëúöÐ8}f½\âm²ÆÄ¬ìF‘a$ù£ð²µUš¿X¤7õ…=Ðër½ Z˜bI¡+%4{�êò¼�ôuÀ÷}ð…KðqAð]ÿCÿjF‚”[c.¡Lvl“‚Yà r*¸áxãàÜùü6yè“66’8Ü`SIg »ô6T yYûÒ‹¨aTY`¢ëéjYZF[kq, � ŽäYZ%D pOÊã£Á7¢‘rdýê£ÞÂú /¢™(ð¸]w¨§ªŠ©09Ô‚$A™-kꋱÉN‡ÉQvËù7‰¸éKàƒ˜¢Êìr®IÙjµù-QåE ð< l|õ4Ö>V{Åw¦ u?²2B�ûÝÁ+ Mì©ëùÅMŸKÿ—œÏ åÚðx8ù¸ìDh¹{‡kÞ�¸GÊñq©5·%&êxÝ_�|QQÅÚ Nþ(ä¸Óº‘€èûÁ3ª”À%Ç“Œ̆d»Ääȸð ±ç"­äz/mrîÃúåBFiw¹®ã� ÿ^¾wm gêE f/â‘é½O›•P/­WlŠ‹øÇ*3ÿë$¸ÍØÌ¢²•ãÚ’�‡N+>ªý¾^1×öï þDàô? u$˜ÜÇe&=¯#õê ¼/6¼Œc¤ÏÃ�˧�\›�ÎV]³�a¹p~…‹žº}¡½ÕJµÇ¶Ã0j<ɳL‹t-*÷ŽÊüS%&Uà>vµ[?-(±�µjÿŸG70 ¿êK'i M"Ù%H”V ª‰é�N÷Û"¾FX˜†÷܈±’þ_‡¶.™¡«4<ªy2à¼ø<÷W:Ì"‹ã¥¦|�ÇR²ˆße1ÎdF£ùÒ'G4qRb†¿Z+¨•�ˆ1J•À½�§ÌË;¯§?ÐÁ€‹>¦nE¦t Ò§aQÒÖœ,݆³ÆåqnÞ µ é[¹öM H¢|ò›n'Äoò»•;:Ä"ؤöobýÚü-S 9†#Ï >.¹E‘ÛµM«Š!ÿó¾ìÅ\vz6Pf·YÝâ‡8_ºg—3ï´lÐítö¤Ri´ñÞ1Š„N�ª~ Á³°W¢ÅåR©+Äÿ¶Y ÎåÕÃéçÛ`ï?z•¥`�~Øha6µµÓ8×ócœ`@½˜«4_ÀÓôøÈ9ƒé·’=ñV© TlV~p‰Hé?Ž ’O ®$ñ— Ao µÝ­S\V„6Ú/¤Ö_mŒïž� ·ŸE9×Oi¥É­pò¼E&ó¬iý67”•®4Ü ¯³)}mùã¼>7Ù¦®úq�æû Ð}ïi×}³Ñýñqû—¾úL )jN|å\õÇmllÇÒ•IÍ‚:Zí Â±Éf%OV‰Œ¯‚”³І­/¯o¡>¤>�W,�¾¥EA Áh‰“#YùŸ‘6—ÜIËBÒB$p´*¢øç±é¥_d�U%ÔQlÚ±�o¤¯ZÖ+4 ¡J…Z‘UºKmjhabîªüùBð×ÉÂK#ýX>¥È,»b�ÐBÚ‘uºRTD®ÍÉÛ[†g½•‰¦¡zwƒL´#KÚÅw[9'u1âA°å)Å÷fâå¢óà¡ûYLÕ!žÙ[ļ“k�9E““E:qý�ÓQcyYˆ°Ë'øDwµÕ¨?øË`úŒ�HŠs�²tµà‰•Msl�è¢Qú ¢Q6ÌÙæ¦å„qa7Ó6$FsW1ü¼iÁE~g5îÛ²U•@ñ Žìiæ‘ÇÝ1¹ o«Aat�ÝK{®jªÍFl_‡\Œ¤iÓøÂßÔV˜ÀL±f;ûâ^)|^!ˆ&Z÷cE²§.6³P'GéŸfÊ ÿín¦cÂÈO9¸Þ—>K(Âw¾úFERÓ9ÕÄx+¹¡½hXèt9ê�u;¯w½�‘Å ·—,Á—ß·‰ /_³‹þÛãØÝ1 Ç‘P ´Z–ycì«�𢢒KÖ#"-&U¡TMʨ±daYrD� éᓻñ8sNŒðº_@¸mµÙ¦²¿˜Ú«È«x��0ð? LÕ±%¥NRÚÙK©÷×~UÛÉÞ3ixàG½Î{èɘEŠ ¿ `W<—±�õJp&Œ4ÐБ˜˜…½è·�N YbX4Ô±ÊZɘT&ßj´­®N‡×½¦?}ö¢ÐóMª2ÔTW· ¤[–�®÷µ/èú_–l€Ì¼–„ˆêY’cÖ³Õ`ØêûŽÒEíÎFaÒ"óú83Ô¬à�¢§èÓªìP9³°vÈ徚 {¹IŒ,i‘¤ðUÐó„óäÀ[»….èqþøB*Uf‰ÂB¼’•êZx^X6‰I(`Z�ýÔk;HiF i)lÜ“ElÅ›„ü ÈK=xù;NVç4°›Õlìï&×.{=ãbŠÌUp,A7´ã úèø}a¼þsè™–Ž»a}ç,ë®w›�k%»VÝ7瞤¯¡Ý¯¾�ï1¸w×k;’´!ŠECÝ{*þò;¿sÛ è`�ðçmf &~>�Ž1ªr¸ NZT­ÞŸ¨6N8ã,^‡a5’aÑ:jª¦ou‚ˤ/+©‡×¨E«qêYQy¡Úd�^hJ¤¨g †l";”‹þÍ"¦ª’†vHÉZääæ<[¨W3„cÀ�žüihv�ðdb�¾@(¤[àf�üƺ'»i­Žcáj´}}ïí ‹x{òò©ù]ö‡Ûs*Êê¢ãá�÷bÓëæì¡‚Å3!Ìà¦^¯ãq…ð‚Sîå½R{ñ¾ØD1çá<ÊvHH·RËÅë¹ps¡öáë©Ê˜²�9¶ccngßê4€W P¾ƒ©cgáäyªÏß¡©€gí ™_à¿[üßñ*šQt\’7Ûyb'ê �9¹p}×èÔßz—< ¿'vÝ(‰~M8¶ê~Ëð½\Õëò±¹·û8�ò}�ÕÓ0ºhíâªÎ(¶qk(àÌ’Ô¡. �%Ïð9¹›7ži0;Î^ †ÞZ^7ý MösÎùUŽŠ@ÚjH–_Wž�L–\ÙAci�#4ÂÆ� ÆÛ¿YÑê QM‚Ö ÖlãAöþ˜Ç›Ç3ªTTM¢‰g@^·}] hS‚­šnšq"JF–é®ôÔ1¤É%.qFIÞv9O:„«TfÂS`Ä5.p€0pÒ¦ÐÂó�Ä b�“oe+÷ÌüoÐoÞ‚Änb|ï§àœ;ŸlíÌ*x9ñ”g»? ¾ŽLu?­“6ʽOÞ]×#%®�sô�Àû0TŒàëÖÖ7$s‹u£¾Ë¥>´Â_ÐJñ'ž³'S|¥~J)H=I+–Üp¸³ÿU)ä“qyX§CòíÉvÈ26çXÅw 4*âÚxéÕäeøÑÕÀ8â%ò¤¥G¡ánýr³t‡]w1‚�ÛHãÞ bˆLÁk‚K–3Z­LðÒTÙ”*¥y‚”õüyÄAJ¨bÍïòãËøF ¬…1škØß0ØTå¼EÆØãØ¨³ä‚Úl+è#ò¿£ù˜¸bíÜWÉ„ÝÂ% �FôÓd+�àö_> ˆùêB³Û PA%cx]MÓ¡4ÄtÒ¸DÆd‚n*„>Œä<3‹ìõ”ì±7ÜÂ0fÌ�7½À˜G÷µï�OÄæ\�J]Q5XÑl<ñ—:áy:¦h$‘„Kê8.—V:~úö&V[˜}rÕÍvè4œ_„••õœàºoÏø¿4‚�T<"ÞI¦#y�ª#^->Í*q•…/ÖüÑO†òm…“[ˆAʸ6j51%_/ïÿôcÓòAÇMAPw6GÁ[³ñ‹úSÇP´±�-PbÜmS´Z �P؈œúœ=.ñ'£±üÖî/ªæÒMƒrñr°e½Í +uÖm_~JgLà"–²þÐçf¤„rÖ¥¯¢©pÏÒ—ÛάOóæÌŸ‹ ŒXfýÎdvBáÚFT-*¶©`©¢ÁZ‰¯m2Á.‹›P:ñò6oˆSüªbÀ;à LI¾Nùr`ngx„¹.Ók«b~¢¯ÑÉëÌGümO…Gë+Åâ«€Î9å'QüšöÉš®| §ë?\5=àkz²®úpÁ`må'Ã+�ñ©ð>q&„Ú½E(A“àYB¿Õ.ݸ~Ý&{–»r.~N—B¨P9vT«.¡X¼� �ñþ>ò¶ç�Pg©½úû^z*B².¸Ø–ô�—Icÿwæ]_Ä ²Hžqjë*;~xû×pZpyvbàólºKSîþ7 |®^³¯Î‡<ô×9 †ì HÊŒQoÑɔɱPİ¢ nÆgÚ+úIÔ’ß wê=RÊšeØøýW‹‘eNÐÙõ|Pq�‰vRQ¦™_RB¯HP�4»­Ò~PWøüú¿e ý\öxk]M– š+�'©¶îŒ-6yIÏÆçz] ¹14”îIÅJ·R�Ø­éM¾sy¢úÊgP†hÈ÷Ìâ~ŒÿTc5;à Ì?¥VÐ(p_ �(¥CO«¨Wµ�¯Ì,gï˜ÒL³Ë]úØÙÅxL$Ì6_YæÆ¨�¾Ÿ¢„acz‚ÀÞ—]0„V*‰à¯ ЬâÊœƒdÀ.#øIž�øä e%ñAbQŸ¥ÿyñˆ­Îîy�3¤/è!;ÉlLŽÍ«ÿC46ÈãîÚ·© Nžÿ´æØ >:YP¥ì‘$÷TýD»ƒO¢¥ä(âÓ;bq­JßÂÊ™?’âi¸I”£`wØ­šÞù"fññÐx7†�óAª”z] !=%ŽîÂÌ�üªŒb‹Uê û6N]ŽHSÞ°2„T¡ŠŠa,Aè>$tŸÔ�¼¦ž�¥¢Jér„˜ø|9ðYïö°×‚±ÿ›5à÷OLˤŸ)uªÀ>9Â'•[j²©¢ÓO­pxKÓ½x�Ú ¹cÃ}ˆ[kB�� l)‘–ÿs¬Pö«èõ~Øi�‚*c�=™Ñ›ð™³4Ï;ÑÎ_ƒ:BTÝ÷v÷+¼‚‡ t:¥ûceŽDÿçR’€ê“/–ê/O†Ý„¤^9K3‡“†œ À3³{~E¡Œ&Íq´€‹¥®€Èõ¸â&ò‡‘«áO ØùC>Ô¡Ë]aʼna?9aê)§ЧjR¾Ôw¾ØQIöàô!z=P¢þ³Á®C¤¬Æí0ý5â÷„ÿS{a/¿¹tvk™ß̲¬�']· ³r@£ÛñÎuÑ&BÏWƒ†4ïí…áx�vžr—ò¹†XV.Û[Ómï7é¿C ùª´­vk»‹À`ðèëVnL»2 ¯¹co`Ü%Òi�jðI8E= põk¬y\œŠú-£QŠÈí’ùÈ%äwk@÷"�®S1£."¶)G:©‡DþÂÇw%ù2kè![Áqw$ê¤I¢~'1ϯäÁ¿yÇ4…:g•tÔŠ—3Ïž·ø~b™�ôcEŒÿÄ2“¶nïLÚÈÞ•òS¯šz.×wæÓ¤¹Ïï:Êò­ßhJ[Á&J帉¿ê…zž+êf馸r'éq¥mXlû¤ñÉØhr×Tâ�W |0½'Ïhz|㻑z[÷ŨZ—¬Š×…Ÿ eî€ð¡ÃæIXß„ËÔ¬ÔZm”•ñ܇‚˜"[¹4OʤL¬›åv:77»�oö_¸Ý¡eFÖšª#Šlž¹6†²Ë�^˜í×�׿®M+:~$¾½=õú ÿË-ÓÇ�sˆNc³À ×�m�+ß;úHåcuœ¸ ò_N|'–gq|úíÆ}\7‡#ö ®=úl;Àйí"p!nåß7¤�7Ìh: ª€ ù[�Ä=¸Û�bUð™Swº2o=–ÑN�¤à!¶6yY£i¼ø.*¨åå|PŸ¦%ªœF•JúƒB¨QÁ[Gð æiaó—2”ßÀÝÉ••¬‹ü&Ï•TI‰^EÈ=Å{*';=Èßc™åÖ·Ï Aþ„jLӑƳþÇ¿vp¤ŠûF®Z Óùò%An”�Ü W¡Ï–᪄6ž�_õ£4µv•Fò>Ò”÷m M›ŠÆü[!bñâÿl§¿Í²:¡m¨*ý¦êà_Èâª�v'Mw<”W+yñtR³se–Yô™F Láã}\:C§qI¯óóÓÚo\^´gQCx«Å3…e`n…ÀÈ ±lqOv>V´XòžÔÄ×£P¯o,.Á3Qª®%+žp_'¼i‚g'Ò×ù‘‹»oû€ˆBRª`»)ËÝLƒf Iò‘˜­3¶ð6uü#ªhÁá]F#ÉdUªç…%|&sòFIYÜbÒj¯—dP!â±²Uq½«\÷µçv§ë)Òæ:€J"æl@иKí�¯“¾Œ–9J%)yêüm¦ámæi<ѪRÝ[ýã ,zOªìÕÞfÜ�-ËÙvW±-®ôn”†:ë7§õÌ6ÅÆú©Y¶¯R{ÀF«C{Nêe«ÔåÖ¿¸“­ðØH¸10ÂDî)Ñ/ ÇeîƒÈÍš1Ÿ¶NÚP»ð êN`TžÀpÈÑ íHo"wW›¤µUE9X2û®¬Æø¤8ž$á‰þPµ’M‡s-% EuoÛ€Y ¸q |�v4éR¸èc)>ëfD!ëÁ}Þý§CgŸÁùñ�@åîŒëÔ‚›ò«Õ¯�V y³fåb)œrh�g¬·gæ¢Êµ†2fØoJùâæ£�¯ƒ5”ÂÊ;Y\r‰wK16Hü¹bT)¶"gsÙ½hOYÍG[ .��´‰‹v‡wžAßhýÇvÏÊ…~œ©]Ïq—`)²”/y°Ø­¶Ñ»?ò8³ 4¥nµ¹1ξ=Ƴü˺µú ëø�¿Z¡CÚ»Ù3½ûÐ’ædØ}{äÍ·zš�þ—Å�*Éù-¸—ö±¨Ôká¸@– š,Ëë8â9I^•ª¥T³€éˆœ‡¦¨Ýþ;�bd¸ðAXjvJ¾™¶Õàxî$Æ�&¿Œ'mÄM�¾=zT½q:J+ú ]ÏóqÈCyZf™¸¥þélüÐuË>Jó·»Õó&+ÿ¡“Ϻѱ$Ö–*_NwÝÌÓÓ/œïÅvRÊ£ÝÇ ‘¾[ë4ÝÙŸ(Ï«ê÷ÅýAoõÄ&”Ç—�?Lo”N„EV›t‰i]�ª^çcWœP¨š¾÷v#zo¼®'Þ+DÐÁŪïÖ!›X|w^ßëý�TT4>�}Ý,rõ&{‰ÉLÐkŽL]÷‚!¡‚‹ôî±mâù>'÷Á7 Ü M2‘3S¾b]·«ñJ²ºÆ×.óqj9?àaqõ—b)ÂLf`ן ˜~-唄8N¶€²Þxçÿ]}Ýó}|ôêó:ÈðºáGŸÛ"s àÌcúö(‘ýù¶ H™ ÊOOÆ- aḎ“Îþ½{ƒÛÖÿɆ1Gv¯¶¯kvçZ¬ÛGgº]Få–¬‚KpÉ­+°¿£¡¢’¡SÁ/öíôÿ¨ÖAÁô%³ø„ÅòË?B—�UMŒ¢XÈû'‘ @~,ƒx)!¨Á"þ \Îü_Î|é øý‰™QÓ¡=,¦ïÒpìV‹ÿ]Û¢¡¿OÈŠiö2¾93�®°Mm(=d·'z{…‹Ÿîìéý�@cçÿ™ò~Q`å³K~—ÍÑ©U� ?-©±áås‡„Hî^ksQÛ«L*Ñ]ä6§Ÿi^ˆ ]ÔT¤þ³ðacåö¢Êu‡„aߌ�S±¨¸8å=íø© Ú/Õþ’,½�íÛúžô†A¦¾Îí¤öí¿©fëŠz�ï¡_s¨’"®ayYXÝÇ5*Ô%qù@6mOdB½‚dƒäí¾ þ2iëÔÖöoŒË°qÏAk¹5O k^9…žbçª�Æø‚Us n­E97.s­E8Ð3{�§†¡’¼þþP‚[R�QÅ“™â«î~Ú1›ÇÉ*µšÞÛìjø¢‚m²ÚÔÛ*Þæú@ìÛÎ>ƒl²0Š¥¨˜˜p4Î� Ìtf}”и€Ç;:”uÿ;²—� LZb‰P º,S4sêaÈ}\aI]T<#ü}øÚ²”úÎ°Š "¿fá>]©?e½r³o=¡Ù8%nGd"¸œÛ9¦/º ûdï› iŽC ¸`•͉è€ÚP8½?NÊ{ïÞ^êëסЬ,ógg«Ô&øÜÍ/cþ÷B)(6¾qÉÿýÓWmÇÒü“Úø:¹6 a‹0*öædÓÐt½?pÙ€×£çL¶Ð7µª4 áU¦~ù àKÎîøv¾¹Ú¼dG6"‡.?ŸäÖ6-¡ ¥"4G€¡ÅBÖ×üJás…W�/pÍüþ"ˆÃO[ÕsIÓz!bäXX:|›É0³’Æk(œÅÑ·RIpÆ]CWlÀZËqêð\«Ë~Kó‘‘zÝHø“]›ÊYµ PW°Âôê\6 ø ÛFM—X·À’Q.µ:˜l€¡9þEnÖE½¼Õéü×B»9î �ª¢†‘‹›lµh¯ˆ=˜Š)¹ˆsÅÊ*cce=Gþ?—7ŒF„JmVóÓCObíQ‹u;:5tÑ/þl>ÇœfžýíÇ�£ÆÚШŒîÇy™òVÃvªx${¨zïxÜ@ÍÁ ¦ª¨ UÄ2Og¼úpW<]‹#\W"]uú¥ C´vÀÈèœWå,ªÅJS1‘¿ÂÆH6¶ƒâhYu3£—÷�ÃÞÃ,îsñÔÉ·Þ>3<#Ë(~늅åc,¦ldjYè-ҦŠÒDFgb=´=2ó€ñÓvMnU�BAIë0±þòw�1¬ \¯(]{çÖÔ‹e—àL4±ùW�ö´,]vɉ:wç9ãú'½mf¿ÇYÈÏvºîügûë!è¼ÅÀŸ‚®Dpà,Ü8¨³Äí¿ôzv'µ½ô� MUˆ³0D÷ÑIÚ=Ö©(è¡Ʀ…0võÅû=-ÏÃMùìœØ~ƒè�&G’´éŒfÕðvÿ7Ó¬ûÖÓ“ÛÎEx9Õ9K ’~7¤>/Å騃ۀùtìì„n¯IuWDÜóÚnË�?Ö}8:;¸sì¶xƒ$Ô´ÞâKî+ì�Jaºs8s¸?¤—–„Y;%’$5(]ÃDà p™DEQs„nä10�›µçC{ﰔȨÂ�ð\�­™(^.r$­éNÕ ùg×h�m·Ö’ýéS/±“M7ùq…†¬Ì™qcU)Á;�/ãqPh*ȸ÷Îc®{ õŽQäË9’˜“ lGýh—T¢¾#ƒ£§\î·Z~»â|ð´ƒxcÑöj¶ÑC¯òzÈ q½$ á]Ë[ã¸|ŒRöŸîöÝN™do)?ùÚáƒðú$<³¢Úõè4´âš«C´Ù2åúœ�?¾µ_Ø^€-- ²zGÒ©Ä­– å-!ú2ϵÝy{¨´R­BµÔ?N¸¡4 ¹áp„> ¶Þ.S'ý¤œå�œ.ÒUÞí½ÒG‡/x�²³Æ»ì«|Ä—Ò�÷„Î6¤¬[ãê¤kvÙ=îîÌÿi¾¢U¼Ëgíßü”ð³øK휄cœéžˆ´® d8Dü»ó¨�­M鯲ܫnæžæ*„ ZÖæi\Æ[VÓÈøLáN¬£�sv3ÑAý€Þqð|Žê×Ŷ ƒý¦0ÍWy—ß¶ì9߈4þ¹·ŠÊÒo�À4jSÊHº !ã¢ø F>²™îŸ¸É~šÓo£ŽzÌ$þ Ø—‡2üÓ fôINŠëSÝW³ÀÕ6ëN^{}/½Î»¼ÃÑsœyíǪÏÖ4Ñ[ù5uGí¨~’õô«vüX`ç,pdM–#ž¸³³³Ø¬ ùo {`ø¯lºçª)´#,@Ķlå"j!Ú‹ª-Ç–=eÎh·Èßôãµ’èö‹Ž™œ}d=P�YO™úâö¶X–·÷Y·OâgbÍËÁ_®„s`ûåþF»Ñ9 ›aò¤ƒÒÊ¥YBâ¹ý›â2Û5—ÈÙþ6�;ä×·jùcÕ¤˜âf :o àRÕ[¨¢‘¯’^ ˆ*�¾Dù‰pHJ¶Ü{ßÛ» õ?4ðTÉýªÙïÀdè“^¶9ÄÛ3ߥ`›â}óáö7|Ôy×�È6@| K0³œ/ž€±‘%Ø^üê7º¼&{J¬[Ftjs4CÓZf »IY…Vâ`.û3˜ôTgüô×™Ê�jUzÑ•—/?Nr]NƒÆ„ ^R†xT›ˆ=ú£�ZY®AÇBIÁ;Þe÷Ÿ@AC %å² ìኀž}nž?+O>'²~1>-é½f2Ê·¥CÐú�š—8"ˆdX‘ £ïoˆõ#î9Ô£±÷7-½e™}FáÜÞwMÅB˜»ëPcì‰ ÞúØ*ârã•/e)ýGØç˺+±�Řo€µŽ»òŽ~ÙŽwT!©š—éìb£VîÇÅêU²pCeL]gý_v mQ`tI�>‡©·»æ»¸ ŽW¤3|˜÷AÞÓoÑÔ²\½Iîe½)�Šæëžï¬÷.Ëx(' eB•z6yŒÑ´SeEúqHz7’QI~¤8½¬ô³õ»š¿:?Ÿ±Áó?«O�j°=Oí»]ývÛ²Å.*é…€,*f»õV˜Ù¾l}rcœøž²¼1÷úqí‰ÃËa¾ëáÁç±[Ù=¬<*žÎ–;tÁÌgBbX:»¯”�+º¾’œµ›Õé#¦1Jp&ˆ�=QÞP&'¹ )Bv®J¿òÈP�®ôZ—b[\8¨W6Ëï$½…ù!®Kë¦åyä\›W�Ã}{:BÑGãäw®ºÄtÈ™cBÃy âOd�ÓS°kÀ$Nº®£ .üßÃry£­¾¼¹y/©JI¿�»L¶\ôõoÒ`QŽuüþ}²@þüÏÀÜõÄÔk v¡bÞÈûù­�‰KÙ�ÁÜŠûî}S$)þ—ì¿ _]ùÃòèËÝ… fÜþ„7È•Ì=«Œiiœ·ŸlTÊ –F�/a+$䞃,ÜI`+0öÜʶIk/5»ç ·/Ã¦Ž¢eC)–h3l�ÍL ‰?ß⥠…ŽYðGÇ)öæy‡�ê%T/z'О\9²T¼ˆ˜PF0óÄ�†7šÕ¨xõú‡Œ…ò×ÄõJ±\&uîò{¤[«?ûÇÂê–ä×ÜŽ†I>Ú.F}õ’²‘G©•ß-6˜ q²u„·–Ù«”^çmÊïI×Xá·½ºðD< ã¹û…†ËjcƒG+MZGi¥ó™³.ÃP:ím#”oð4ªß*²8t¬ÜzðT(màÁÙ&äŽ4F»C_É[·w³Ú~›È…½ê¤(ôc‹ö�üÁ“ à‰`íÏz1‹¢ã\¨º«ü�ó=?_¿ŒÄ¸Ø…胢T*st®€¬oÍzÝBPŠ7#`‘ÈxA†{fyîvŸHõ{Ž:>Ô±q—öÐÐþ4ä³à§»3½£�œÊ´½ß47Û’éâB¸ä»ŸT¬KœeÏðÃò” ˜ó9£Œ€Ý\Ð Õ� úÇtÅ�…^¤û7’Ì?þ–�K‘ê¼|ù4u€�(:áý8 ¹¬Þ‚ûÛ¦ñÏHvfz¯t�Fëèz¡Ý8=aø]Æ\­®uTf.à>nv�%ÇäØñ"àsD¯/^ž?VÉUY½0aŒ®Î~,h»~ßõ$kÇ}›�]y+|3rõúéXcwcEju›T»¹"oÍ¥vø&p3V@¢}À̶ŽË@À(¨Z`ƒ÷Þ1uÆï«Ø”f3 [k€=…‹©KWÜ;w—¿5~"ñGù¾µJÐA›ÁrM®Ã·ÌÍsÚfp–j~³L²ºÐãNµÚäM‡ª÷Yªný8o}¬~nîÀ5OZF"ë÷ðŸ…Âè7$/pôÝå@r6ŒØlu ±†f½€¼Í1¾yÎÏcÇ”¿zŸ¼oT2‰âQü:,lz8jc€j|/h> »¹Ï;6æPMŠþÕä'52aEÅK;ÏrŽÔµkt�fWô~`$ýz«ë×à‘N6±¿L�´�ß°Aæqí1e‰ô7sƒÎUž!åÒ,ÛT�ži(�ÿ5³½`©î=æwïÏ6Ë45}"½ëëä³}~ÍW)-I´ë¥ÝÒúG¦2IŽ/Šr}5—·)=“/Ëﳪ‘²µ“¦ýcÞ¸ÔüÈõÝΟ‚ÜMcÞêT’?.Ë.v<µ‡"$A!-úéçaEqìÙ†àöAá{Þ)í·Y¼Ña±\uˆ¬£sJ¤éìú5ÚõêLi6;> «±¦�xâ6šÃ7÷‚–êx¦ªr é9«Ì†–Ð$’K…£ÏrGx”Þb#¢¦Xïà5O�îqG�Uîc�]ñhæ¾Á‡§£ä£úË";„JÉš‘â²ß•äHüÓW0g�¾¿ ÂÂNÞÑJ'\Â>:óu¯#.x3ðI2½¼Íˆ~†žÉí qo¾~opÿ-ùóDÓ¨°§€èÿ<öÁJÅIAǪ›ÃM§Í�±òkDÒZÌý[ §·B7ÝBO2�ÕÛ_Šz0Í«HÎ� Ê©�¿á-ñ²ÇÂW#X�¤«˜îê~øš‚xppû$&36GDl¢^QZs/{k„ "´ b¿5Þâ]´FÚXÁ´k¢!¦•öõË9Ùm@ëÔŸ.¦4m ž£ûîk–täÛÃ:²0¯4Y³ín¥6Í>´.‡gKlQÚ§ÃŽ\m÷î~K\ùòÕ³”Ïað¯Ú²$S™ µÔ”ÎÉæýö;4öï¸V«pH2§,޲¼^ÿ‰ùŠåE'dÏìgØØÔC®ß%³'›s|CÝcU4QãŠ=ŒØt%V0‘¿5•ÕD²»E£‡B¾Ü6B¸°£šaÓH( æ²ãÏ­®‚Tòó_Æ9¹9)ÄñJ[5hw5if½Xö…`9‘.ÛÅ¢0c4Zc‰àõ×DmqÚz%+é¢5Zßn«â9AR‡†rx9<ÓMÛW¾\…ÌæçlÊ/Ã;->BŸÝ@Ý`!"¤|JÜõÆR�‚‚ÅÆ$•—ñm®hºÜkµÈ€ß»b>ž�÷Ë]ÐXC÷#H'µˆ&³ 8ŽW[7EG;#»ª_<@FI‰Å[»¤½~»ymð[nç<¦¹—F þöU)c[F…·ÉÒ#»ß1ŽÚ™òSWᘊޫ¦zƒhÀÙæ ÃMÑ�wŸç‹K?�æ 77|@dyqÛ,ÑVרÈŒÆàcÚQ¥A?â wZÿSMÌEÌ]H4FÇ‚eŽŒ¼7¬‡§A¢@="q¥HZ�TQÄ>¾Æ¦?�@÷ì¼ Rž´®c:;kz\ à\Ê–¤†¾ÏñhÝDFXy‡çÁ8­��ëùøŠIí`¢¸€²$"ëøÖ1gz afqÚðc¸àxí^o?1ÞkjÚÑCRˆJ˱«I#(d1Aÿ(Pk“XÕ£Œú5€NÁji)ØÒ¬ îpVÝæRK˜dg³}t$#,‘¸`6p×…Q¦ô¬†½|Nȯ–ê%|ø[;Ų'‰ìEš†…”žÏLÙòhsI/ó‚9f�Ç6Ÿ“Šúç£�ó$¯:ªóYlÖrã­ŸîüáÉUßÀîd—ÚN{û—]7‹þ�ekèìU('ô+ãTqÓÀú†`~Ÿ‹æ@3òTDHÞåÒ.K–†(5h> 8.á|î—æ �ª§×_¨vro1¬œ‡æñöØÉ;}†ø¹Gãƒ�Ç8Ñ•&,!rÓ4$#í¿?\pŽÒˉSfc'½ryP�~J`œ”âJ;ër’2æÚ-­â¢ùWÊ7Ÿ+u¬'¸æ…ÅPŒ4㤭\­m‹í4¦åæˆ …NOújü°“Ïß/dNý_0ëu9ùq©Øƒ&á&s>Ù&0""GqZ©ñˆ%¥Û¢Y¤3³.n0VK½6™bþÚÍú¾aóÔ,@(äç|/Ä€°rááî��̧=ÿᔓ^˜ß�ð½ûÓX×ã´ðíaO¦ð £‰eŽ Ne8�)Hbwx�—ÚY:‡>QL¢† éKùûM3𷯝O#�nçü:K–uo%ìtË{äu�Y¿¾¾þAæ¿ëb:Œƒ•5è·6Œð§Ncop¦—ü|iùÉõÙÂVòuèã-ΫâJ£ „5®aì›gò*§�áðƒZÚKD±>šÍ[Ý_Ãd\«€·š¨‘O›ƒÂ×ð§YÅ5ÏW³áŒ¥eˆ›¾Ußíý ¾ø«–hGœÕ%ŸÃuøkE2š|Ä �Ê£Ìn€sRB6v²¹VÒë3[“È’Yh\þ/•ÜL‡§Ïlå%c6{·øÌ÷¾vw•tṤÚ3çn (u�tñß8ØD(Ùì×@ͤ£6¶ºe³6x‚äX8’¼µËÃ3FÕ 0`~Š•aI¦™’}·_ãsµâ Û::Ê$÷ƒej3ù�¬o T,%R/y'5Ò…°Ñ~¯V:‹5}!}Ò&=oÿ�óh@HàRaèLaæëŠƒ�Á?Ä—Ì“^¢~/cÕPÝlWªÖ„×é‘”Ä_Šü%¯V4Ä)Níö¶:Š Í*ϧYÈÜ4(Çî�"›àölk <Üá)|#µœLêÝGB4 F¶ªééc>ùÈùêyƃ¥˜6Au»ì«ô…® 9`ŠMÝÇá§Ë’ÙY ¯ã¨'x»,â ëö)[¿Y5«‹DœÕx|xˆâìpŸOË\wGŠ”± ;o9g‹ç•ÁXÏ k$Ædkoá´-ÔJãšþ=[•K—¶úU—�rµ‡•Pω\ÍY,ØZ­G‘çÃÎzÉBÏ»J¤ ãsn¢•ïûÝ©­È½© ¸gºí³$Áž’ 9D3l$0”�¾0E5Ø'Þ8tJp‡fýx-M„ Áé|µ+þ+3+†õ3dA#¹êqâiÉßë8•£h.zqaµÓ6•H2_¹&5­º.Ýšý5ÜwõׯX)…P&â}WR�sÁ×aJJFaÓÒ±±^TçÏØG Òouõ‹6PO²V6k`úÌ~“ߟzÂc\+ÔOH€ØL çÎ$Pl”ˆC‹5gš>àkoÐ8’°«®.žÆZoñ%—’kvS﯄®Tü~HÍ’Òi!X*oÒ‚;}µMŸß…ä9É�Þê#ž® £°6ÙKÉà ó 7}GÌöM±"º#À{5å„0õíŽëOMïuûùN;­™>žõïYcˆN7;à«brä†ZkÞ1)¢ Ižbý¨÷¬Æ¡ D}‹“a±Sýv$ô"”Lªµ¦¦ÐjiìÓ—:OlØä2X^,«ÞÄ¢ñ(}7Y¶°(�˃U'*K–à™ÄžÏ½©µ®— +>&ŒÆSn§ ÷QÁ73Ü{z‘Ñaý‰¶³E ƒ~†,¨Û·£¡Û{Þ\·‰|_Ðg±äNêΩþ-—èRJ"Nl–)ØZÃÞƒu²BU’Eú¢[në̾ÌCE4ˆzb‚娯ž¯Iå Ê›¶!JYæãüƶô«…N:7¯¥¢3»Ó׆ª bÈD¹Úg.Ö–Ù»B8'K¯ãSZ€ß¾ü®adº&ïçÅp3Ϻ´oßJR_f¤Á§û"±)�0ÊÝç]3Gl�‚ã„tÒ+?‹¢È[ö~Úš@¼(c™³Š˜ÈÒª¥>ј³ï€OÒ¶xˆUhU³šÝ&ði­–£wöÌâ?äöú6”^@=5QGÞoÎ,Ûï�Š–’èÜ2rÆ8<$ºîÍ€ óIÚñT(&³0³ÌÒ9}-ê[-RË(«m�l›Q¯ Á"„µ+NÏÜýÔ[á—~6|ùù\2²È«wŒ΄À£ˆ²Ëâ„|-,’¤ú¶VVájJŽ�oÚO¾�‹v•`ȩԴK .†ØÎ.Χ¤¸Ù:óÏÕÆ‘òrgÝãZNçhPóÓÒoïl3Ë4,ÌßÚúgŒT°­Ç±'–YE%ç«å #¾i»6áv­ðý#g£Í 'b 3oÏ´¢TE©¦UeN¡p3O‰vPA]—9 Zj/úË_“{Ø”ý-?ŵ’vø@6U:jÈZi©ð8N›Pž¥çY™Ç}f«nGÉMS󵎗 ߌ<×y:% @GRŽó·±á<ïåÌ®Ç2Î7¾þítîŽîP²Çr™6å½`Æ}“˜# Eä>ÛmZ¹Y;%Ì®1¬®ÿã�he3iÿ ÃðeáCkÿ’(}®Éê“p `…Fíìq׿t«URh ÑW™ýá] 䤡í£ (~!™úNɪ¤‘'æé4L§úâ“ÅÖñ \ˆW˜'Ùg+ÑYöÜÈÈ8³ µF —w¹Ù¿Wpvu]lñ±.R*{Ï?f†Ó_óöª@W� �$\n~0$ê5ˆíu¿9Ú²@_@C:‰q!Ö×|ku¶¨�!mëQqeª&‰–˜iôl‡AΦAíÜ6É1¥ÞhN@jyÃ(iî¼wj ˆBLÉD–TUnNcÕ`æ †ý‹Ø8×Ï(ßÊž$•n“²W«—ûá8Y*ˆè9ÔE1NcÕ �V7³�¨H.¹?‚Î/‘¿"Ó°Ïi‹­(êÈGq(ÙÈ›,aTh¿êsó ü¥ YÖcm`‚PËáõ+q¶>‡' AûaM¬Ô#é«Ð¤)y²HD€‰-­´&Óôü;¡¼Ÿß?Q£€Y»è «ßÓyàˆ&¦»kC7~ñ̤Rèa`ìþGÝ•ŽOÊ/)"ãÍ·�™K6 BÀ2ÙÀð]µ�h€àS‰*–>ß>† Gi £hÚ¹ïÙN^EÅì–$‰¥ÛÃÜJ"UD wÓ ¢ÝËô&”úfÖ¦Úf¢š¿³ºÉåf_wSSÇk›÷‰:é)hW ˜HXC�ý†ÈŽŽ&Ùjœ ›Hô½Ô+}çy-”�ïl�ø”Ø‘\& ÈÃGÃÞ©_¾9¸M}1òH æXp£uÖ°VD”ëdݬW%HìECF÷âÁŠd )€z.ap�\ÿÜŒtkïvb'�ÁÁÉ‚ñd0ò¯ jŠ{HÁï/^XË™”ší‚!³xØ ¼N¿g ÑI8x�Š3‰íÉ™£îAø+óÿ09AÒŸ£(­# %xvæ:Ÿu©q/0Q8#7 êefóª ?x§Ü}`5¬NÀý°Ñ{õr¸6D&µãC•`>}9§‰™±€ˆ-�Rr-û×·¬îJ†™ætRÓ_F‹7i¾Öôˉö/QÙ^Ô4(%™Ñ%è0àKâŸ~©¨˜“T D­/´Ž§Ã6² P‚±¦—Ö\utîÓŸäÒcDÀû�®!¾niš˜ÑC”™›ï¨RÃù³‚o汩B[þù}Œ_U -úM’¡ùòõâ{`E.¯ýÁ`¤‹W¹´Ì¥…S)V!‡ôco†ÇB¼JEömôc&«D„ÆQ©˜<—.¨o‡›Mz=ˆû5…/Çš ½à¹IÿN¿Ëü†îñp-¿aáþèÉVW!ˆ×ÑžqdŸêÜÿè7ô‡„N# B>ä¼¢Žr™À¤¾¼${ƒ" À2ÞCö»¨zhzü�®.`v\b¿ßtJ–ÅøQ¹i룚YæÀe<ðQ;%•ûê'YÙˆ§­§˜v ³ÈÀÉî`× dÄ3KǺ¼á§œtL£ót?X�ņĕÈïµÂô-„°;ÆOÐL ãŠÛ­ÉûmZŒcÏ ËêW¸,ñ05‹™Ö·£ü^YQÛ'Œã -DÃØuVö]4ï[ŸÍ«r¾—URm⟟?›²’¼k°¹¿U¢|�Ý:Û]F˜óÃêβùVU�´Ñ4& ï¡ûÜ&óLT<»›±vÁ\µIPêÞÂÆ-G§PlýÃ1Å€ž`BÑœ—@ZyîgÐf!ôD4F7qz˜OZ³ž‚¾ÕC<;RÚÝè^EÎ^§Bxéd»ƒQ?º´@¼NxöOÝþÐPÏ·W¬QQ\ Lu´1¬c²�hØÔc÷âˆA»—}ÀOëGw x³zÖØúU?¥ÑëìÜOØsŽá-^±g¤tñ´0.sÂä�å!iVâ>ªÈâ<«'�«¿'AŠ£‚3ÎE)ͱmw:bp£·ÒØtûë«T™ºN¾~ãI¾yuû˜}]ÁTç‡E¨õ³ýä‡w>Ä´9SÎTü%–m=P'®/ÔDA �,=^´?)YDs›�Gx\2Á+`­77¥f?£Z;rªbàYÑF�‚lMD�~7÷“QaWUå~w_âÔìfŸãq°‹›Ÿ ��.‚× ?”Ëâ´ÏßQÿô°©VD¥Úâà.§Aþ»¹»i©àp’%€ÖÛÄTˆ<Š(Œýr{Cëwá4"¬`rá8µ_OR¥;@ òØ»l‚ú=dç) ç‡b>3³f·óÝ$ªü“t|—›ËÈdf™#ö°^_"€è€°"¼ãéÆ?˜‚z Õ:E>žÐóû'Œ±¼ªa<{/Ï·ó†AñK±`©>ÍOóÙÕÙ‘~²6§¡\ùñ# edr²fZ¿{[öUw³ö~^Qß 1rx=Rk^ñ]*70Ánø‚u&®n#uÖ�‹¯ØC ‚XÓP<Áõì™lBùo˜›&2Ýå, NÕ’ÛÝÇÌÍ"ÃBô�…¥±m¶S MÙt{ŸÎš®Ž�ªûÐ žª™a¼Ë#{vãî¯t0t¢Ý�mL¾šfØUíýd—µ6ÁÞ˜©»èvµ÷ŸÙ82öǹbôT×pÚÌ>)§ a=Ò·Äâ¶×ºâTyÀ†Ô÷‚Ä„c¨Ï%#0g_}F»V߯G·ÓéÊ-lN&wŸ\ÜÇÌFSžâ¹°4}óÒȘ)ÃYK&ÿ¹\-YW€=°ÅôTòÂÙÌ,-ÙîEÕˆ÷^“Ôc3U¢ÂZw¶Î³› N»nÌïú%ï×…¦  vs6ó´>Ü Iæmd�Ñ‹—†ÀBuÀÌ®ÃÚªÇ`×¥m“�.�d*+EÑì~O�†#‹ºW[‰&(ú“’ç6ÆÒ—T@Ì^9eÿãŽZkÇ >Ø­�曇† wjw]µÂªíôL)‹08Ó}ã§âèê�œ2̽º¢¿” ™÷X¡n™ %°ÒjéJn"šgõOu�MtXù=1û;fMÑ<"u+å›t3õœ¢O�oCÂ>—mŒ ‡=ò w~hhµßYýÀq=þaçÝGõâ\€âo­wqß�ÔCÉÑô~ö×µyoª?™7‹Ú°`aÝr›?C:àÐz†3ó¹PÎÕuÄIb,~áJ -V}Å£ÿ›ŒxFæ¡2û�m-ø2Ÿó£X§gTšõª‰~˜7Õ§)‘=ÕbP)á¥dèl±Òi!À6¬¢¢5"²®¥£ƒ çÉ ùãÿœ –l±‘617§�8§‹Þâeˆ„|)mD¦Í5ƒŒž—«g{‡{2ØÞJ‰hêþì©õ¿!ÑG’ÌŠwÆ’"�­éA4 ˆ`QŠUQvAoÎ¥“јùEòÞØ~y1µjÆw5!L´?½h´K]òÖ:]+­¨Ä}³ƒÖˆ�;:ï—¶ñ¡ŠCx“}‚jÙØ[’Xÿ´ŸJʦsåY• q {0OHn~â^Ûý›a=<w³ªÂH†ð\:ÅôÅØ·ñA�g…¯V ¶ÃŸŸEk ŒF¦èÅ–Í 9Ð=>ËGFÅñrÏ? ƒÃg²ü˜j òÆ4§^|*í¶µÄ5R~\¨ 7Û&nWÚf㉿}Ûº[A¡ œD/Á‡{¦|fŠ7ü;בq@Ÿ·â{Å: oWˆŠþâTêxÛV—`'bTðç„¢ˆJσ�ʺw£‡®¤™ƒŸÆéBÝÿn¯ –ä§±Ñ4·c@@á¹r¼ûžK<½MËt�C¸íá+^H­|t‘GË{ÈŒšÕUš,ú„›DO2{|±� žxêûÿâƒ-ƒ·¯ÇŽØþÛKJÈ)6IßçWJûõÿîù«´r$‰Û=ãr'B›˜…�g±U³ÖT à¸)ô^8ZE¶zýåÍJXŒçîËÎ~Ár|{÷"e¼ç‘”€™8^:í3NE¤ÅJº4�”/&WU4FVtBÉÍò¶Ó�ùVn®]a*'x܉½- 'ƒÞË(ªvч³ã;Y‹ä1Zxë®êôL=y±Ào�óG&—ÄCHÛ.E|�Æ¢´·Mp zÎí{öÌÖe2±d ¨ò²ñà…E›¸ñh¢¢©ylõ ²$�õ;B,ŒfÇAÿ:³wøöÏ »äqȯ |ÜF‘5Y–p»³}“+úÍŒUü[Æ”¶Hh¼å�@¤ô)XO¦ä9Ý|ÞÕWîž¿ñ€î>K;¬×/Ž!-6‡.“jH—Ëáý3ì³S NSù:ŒöÊ«ëÿÌÑz5 �cÏ;µ#:Ï{p$è¢øtµ Å2è­Ä’ýIã1õŽ:GJ¿%ˆÿg°—VÛQ8+УîÏþ…ìJÿ≷ÃÊÁÏnlðGÈ~˜Žw»×*èpÖ;ŸC·�ÿù'Duøgn ðO5±àÿ�°uóŽœKÛ©d ˜ÏFý/‚2ß^J>“áÕ‡°Ä¿�ç/õè^~sþð95G6_þÀ¤× ›UmYè÷�²{ Z‘[PEÿ¿bþ¯µ´‰ns4oðï»îM^>�F—§’©ã~ýoʿˢùO|‹…íη�;fµQæµÊ[;ßYZÓ¿;E7áN!sDþŸ°C3‰¢#³Ñ¦càŠp%Á õ™\ Jpfï¡¡Íc2Ãþ×dؽ‹w\ˆø¶£Yž==ÙÂÿëC8V«‡žWC¸ÞýöNÈž£„L’SNB£ÄÒ²r#+y7èÇ?R*aЇ Ø(ó9`x.lýãZZp$ùç ªÄÞß�RíRlÆò Ù‰øº û« Õpö²ÿÒ¤¿Æ0¶M—ñ0iÃy¼Üá}ì-¾Á-,ŠQ�ʘÿÙÅkP…#›cÞ"V¬¤?HµjþÃ;ö_¼ßÏ=³`l&Èß‹õ¹¾FÇ_buâÏ:ANãÏöy*¬¿�‘[z�:Ë^5¸¾#ñ1ˆq‹:¤Òfnfí�0©ª¾ JËO1FYí.:Oàzyçï;¯‚Jp›¼†»®Üfò"¥lÔ£w,“Þ RVuÈ·î3×~™ë&DŒ<ÏA•ì®d¤@¶6Ï (›8m±ÿìÌ_.u¨ì eñd±<ÞE%í=ã©©ET:+(i™¶µÍáÐ">á”˺3Ëè~3\Ú~6&EzÔáóË^,²aºsRŠPc{ÇžBVi¿Š™Tx£ƒÓvLà<.Û`³NÖâ³üþrUAX‘fÏ+<+i¦¦9ƒ‹xqú 4ТWM¹ùsÊ8Q—7ø kÿ£fúa*GÊÚ¼V×ÉøtŠdÙÆiék['°{_z‚æò;¡ÁÖ‘ü1Õª•3΄)Ùñá9—}¶€ˆ&.˜Ê2­egk*ï–çµäü™YÚ8ËbòRlÆ‚ø'CŠ×ï#\ŠD>åWÇ}aþÞêÍKà7d‘ÚjjÒ‚/ž�¦ÚZ¦ô/ñÚÜlå_¼¶4ðç?.1@‘þ¼Ãè~ü‹í²¤C)BaB¥%t<Í™©S ]Í/Ÿ|¨ ɪvšÙ¹QPŽÉòWŸ»[c$w¦‘ vÜçÃæîý°ùq—à¼>5“W¬ªk6ù+$º²@+)JU÷½tßCQ›Äkt• çqÁà©bžx‹·Vo5oU6ï­þ.¡äêj¼�ÜÏëa÷¨Iß{¯§Àzà7¹´"‘JvÖðÁ`zÕý¦ ŒEñ-óÎÚt;rˆ•­˜ZvÈ´šZñŽväÀ7õÚ½©z¸Š„Áq³ßÙÙ<Æ¡$šðEÔv•?”ÑæöP¢6^Û,-Ÿ2)7dú�¡ kj&ØÇÓ|cS½G©Í¨}-]%‹® Û&³Œßø$аQ�› {}Ù”þ>ŠŸ/?¬“¸¯ŒLÑÌý¥7¥w×àÛ�G&jëÕâYÊ[b“P9Ê·K¦Åñî[ò¢.tϵ¿ç$ÞÖ#LŒ¥ DVbä>{ÝÖñ«¼óE7 ŽdœYBÑ÷c„ºßÊÜI¼W«*ΡýM™FöJ}aHt¶ßáÑ�€z�N±/5ru©´ ½ì{ÙbMiÒÞ�î¶÷¦\nÙk«=rãw.KWo÷¨K¼–�ý¸·B3ûçRI�ð²J((Ügžà†–´¾Gý� 4*T"›¥2w- дrÞÔ]¬úˆò&ÑH37 I ’ÿ[Ç++ ‹vU‚ó׎m4„ìS˜âf¬™ŽÙG:( ­cߊÀ“3cî�ü¬cz|{�ú›~ ½¶N'“�#}>/“ØpÍÞcSæoS�‰©—kµ$‰Ì|ŸÌ*ȽñšOÄb/œZƒ{AÁ„¹:m„YA¥8ñØ"˜ðÏl7äI{¸ëm¯DqÖe_¦N6 g4‡ú!7‰È éT£`KS~¦«ÇÌ_²,™]ïÇì`YÙÃ@÷ú ¡o“mìÓ¡æK÷Ū$â8óGõ¬k™ 1ìS/ÈS:zó˜ƒbêM.Þøà¸½’ öâÁ;;å 4xwü…En. ˜Î²ì‘¬ç“ø©è†@C�×|¼óâgÓ¦£Í1ŒÛ*«¡3‚ ?foŠpïù)+’*Dæô²V£‰¶×@¼�­ä‡”n²Ê&'¦´Âæ‡b‚Ùw,ÖSæu¸Hrl•…àP‚rÛ¾w»“{™Jåd5ðQ`ü®(úP>¹<(:2j¶(îyŒV×R-Kýø8ÓKcÃNU?z£'‰gfuÚÔ³o?ͲrT»¯*§üÊöˆOäC™òGÔåRñË<¤ž*eúÉ誄l/z5óùµºã å„ý’ìÓ¿6‚†r§kÅ=Az2ÉPÖB¬Ù™FÎ Ç0°)>�‡iúUãèp««­&ž`©C@CaÖþW°ÈÔ±ä^ Üœrƒy|fâºñÒâJÕðÆ\‹_¹,n‰îwb€°ëÚÄð¼¶wUÅ3鹤/~ˆò6Ì6˜¯ü>æ;`ûãÆÔɘÏ]:ÙáÞˆV¾KûùϪ †]•sÙRÒË"kCqµO­¤2œR¶KûÚ3qÊÞ° ä/IûlÓyqª<%¤wýÊ¿JßHÄÁª2n-î^æFš þ8¨ô˜æú/d½‘|ƒ‚]n8¢«éÛQTZÐk;f¡g@îŠV�Ô¸Bq‹’?)k¦R#GzÍ–—jêPû,ˆçÇ"J�U*\œK¨g7eó-LN-%•Ù@>ñÙó~×Væm&oËT¡»îðRñŠþÖ ÿ¢wô‰âaBߪp¸ ù³%ÜmšÍ–ÍF•±íØ æ�U‡¹šÐSÔ�&h sÕ£$ýØf�Þmñ¤BþB�Àm¾ÙÍ Z£Lð¹€0ûžOo%-ñõq�?6¡²! £€U™‚ºT`?.ö9L²dÿ˜r¦Ãt R ­8Û\бÌ딊çhÛâÐH´jÐ�ÊÅr­Ó+YÌÏÙ2õ­V"4>Éñ´zŠ�Š|œQhWdo>Oü“C_Ê•@ÿ!Þ¶@%Tþß*­0ÝrõÃ?‰+ÙËÿrtŽÊ1·jú3ú^¦o>ÿ[×üú«ÿ+'®ð(r£ÝVï¬ûW»¸Ž\×tª:˜8î ŠÞ~˜¹ªÔM |\KÑ2k"!%‚€zót^ÑýSVzªHHj4ÌŸÜ»6©Ÿîq{¬1o�Û®%Úö“õbQ}›Õ%nPü¿:Ã{oy°¤7¼Ô¯@Ï[G©e˜¢kH^ºÒ¦êNW?ê}©íô©Üš)¯x[�§fž�3YÄár_¢˜œþ±´,US¶–õß5ߎüƒ÷’È(Þ’,v,Þ}ËÚ%ãÙg©‹£Rý–¯×9.‚zñÅ¡£õ2£:†çÕw¸‘<ÆÑ,Œ\“äã„ ýÌ2ÁIG�Y dL÷�]à¿Êñ„¾ñ'uá�m%›^ÇIý}ñBË`„H2¨�ïE;[ˆL¶´Z•€û*¿5“Rt{œÿ4,*¤ò˜“[î“–)ÒW6995[ˆŽ4"ùý\ȽÅTŵT¤Êqrç|Ⱥîs�§£ä,‚çq\ ßódó mô�GÝõèÞ7�ÅeHg»ß4±|Y‹D+a¿`ÒF_k­Ùñ㫾×cê¬ñȺXŬ?væbjzÓÂQD°»¯†…‡ý*Y›KáOÀܲ—·Äàé È›sâ³õ�¹DkžcáeÝ”tA·íÑ!5#‚ }“‡�±‘y;‡Ã?gçÑyÆ;îxì=® œYfPÜÞN%Ârò¢sæv&¨ãÍ<ÝM½ÛæVHHšR�Žö¶.µÀg]®ÐÇÙ’%þ¨þ››Ycs…ª0¸FÕšn—#ÃXÝ4­º�Çn$[Á«5E›A:%“æK‡_Ûž~¾[W‰Q:qw7^G%³ ³y³GWúsø‘q³ìu²4Û/Ö,�¤ öð8�JîïgX4éñ˜Ê¡d‚¸ÙA[(«1'|{ÁóMÛѨ\ðséçZŠꀯç:»úözúßö9Ö/jêË8‡ÿ¤ÀÄòaXBµK1¤ÞO�“)W"üô~Ö¾ï ÝÚÃ×xk ‚ßz0f%K„?jwÂÿÆoׇcdžÇnÖJš)Ì> M®,Ÿ˜ÓÓ벉ffyk ‘·DBæ’âDAÄ5s’�XÎqblbÇ«þýÉ™Íy7—³$¨¨ç’IR°šNÇó¹•P%“Jûe­.σý†Ð˜ÆÕ‡uy*ã®vWSKKÃNýåÕßh9´A˜¥—ŠXß=‚èÕ¸”F¤²¿Ô tyxú¶MžyìV[ÎO~rÐΧÈÿÜ�»bY½£ã0j}F|jêÛýMÿH¶Ÿ§¥£ßñY‰¨fJÙ|\¾&2Â7440^Z£O7þ4¥QZ¾Ýö×ËË¥&ØjSl‹+üçíÀ‘¹bEÍ¥>ØÂºÌÑÓ7oÒ†}i¢³s³?›×ï¥Óõðçœ7š§É­²Ü^À{7¿;yâ56‹~; *þ¹¨¾€@â`*®¼—%Ðzô.+øß>ËtD^·Ø±�Oó´ óø앃ÂñŠs§ãÁ�¹‚A‹Gíý�AÄÖáÇ1ÿÕfWsG¿Ç� ï5߃Ëxkɵ‡õû`ÙùÎó9kl£ë“É«`�:Ʋyë"År2-ÈBs]KU÷ChÌ.tD6BG‡“ÌŽL¸õ♪sĪÇ�Eâ\Öä£[‰T°öÓáI*YrŸ³~s½Vß'CRqa_#[ë¶Ó/Îç�—Úqíw´Ï€q|Þ~µ¥Éëð¼ë|ÎÞÿi¯ßzÞÀãXOYÄãÂÂ{ëj¥ N>cuZ‚k]6"Éž¬×êEU{õ˜7f–ôÎ@«²2jÉ�ª—6š\‡¿“�/ɉ²ÔÖ°òê,b‚Œ¿µ¾cú¾ÍÿñòhÉ]±ê]›Ï¥WER†`ƒÛív˜ŠµuƒöýF¡ÐÃæAæÑÀ¥Ž;±åc‡»¾�çý‚ÁÓ sÅš¦Ž^tê œX�&òåv_sgsè¯ÍžT\kÔó÷g÷´<~~?yuåã{üçlsÅ“IJµ�÷ép1^É„v™ kñÏ�¹â¼µtÚÝDW§ÏÆæŽÙ®ÝJ‡/ì1°®hþïßCoòšVùjë/Î×Úýw ¯_2ë={¼ ¤µ›Ý6˜ÿÅN?ƒdr2á.¹zÚ¦²j­ýrý§�²Ž¾þÇ7ï¢G(³@£»ÛÔr¶6ë´…€G3þài�¹™VR~Ú#Ñ’XœHÀ‹LÁ¯ý¾š–H2aÕýíƒbšå0È@¿ÝëÙ{·Ì� ’ëX3®ÝßÝý˲PÃ~9#[öqýhžÜÖîi««Ýûüj:‘…Ç ú8n@+$êIÉYº\6Ìã!0aŸ³EÈdž£Í³¿âÈÒô²Ù‘ãÇýo�²÷µ ÿ3ϔw9¸Òƒ¯%u–«*«ÞéyžXÜý‰íßÙ ¦–ÙWò�>úš ŸþŠmñªps1ÝëIt%ÇÙÁUÇsëí¢M&^’ðدÜ�b®ÞÜßèé¦èhé__ס†ANM­� „,OÒš‚·„­ ž\ÈÀ�½ëaì¯Ð@pýwíáÙ,‰ä.Á± —jÙ¬z4#�t½“É)ä2*óïnÙ`¯¾Žàílâ%ã9¥ˆ*(ÍbÁ]¾AÂc·Òì G²÷ûù?FÌÜÄ—I6¹¹ùÝÝ)*V’==-µÕÁ£Ñ×áê†T?õò F´Ûí¥I³¦öÆåÈ ïF……0W§Ã¦ÛûÚvÄÛ˜Fr¥Š[Ϲm}8oý»œãœ¥bJˆQ·Ÿu*p*+;=Ú›Ïæa�W¾°ï˜OïÀA†”h£3«Ç8aÃÿ,ži·�’¥“²$÷¦§ÃÉ„ôµôÞY«~(8™ë®ÆR6�€ìÏ^F¡¿_"P*ZÚ�Í›¹4€ÙÛº ñ»ïŸnž)ÎÃFÉÒë©»î½Ö\3öÂæÜš¼ï©&\Í i§¾ö.¿W°V«RKÒ˜'g©`bª’‹âAýz÷gh$¸G»áÞǘã¤Ã«ѯC[_Ï[H½ªsyù£·Ñœk¦™õánÇàÑ‘]#“Y|Ê‘þ¼óÅ–ùȸ ‡-Nz]-lû?A›ô×û,$­��#ÜÔHß;â1¨k·Œn¬§,lëä:ifd•©HTÞ[† Œ4ÖHôéó >]&§EµNíOµ¨¬ù{ƒ³™àq×R1™ )pdœ0‹™±bTAq\®�xvØ ó®p–˜cÎ"´!/uaòƒŒÍ¨ü—+'›g´y…ôæÂn™F¢ÌOPÙ¢ÅLiÃ>äv ¾@ [D3Hb ×y²¢afSÙŠÖ¿¹ï[¾0ã•ô¼~RЕ”œ^å×îæÜ>™’�z¸>ñÜßg#òÀ"�“\¨ÃkkU½M£Jµ<‘šû��×g߸‚ͲH©_µ*©p ½A»ÿ|¹H¶L§ªô+Îça§ÀžÙ ņK`âæl3µŠ9ÛýtïŒÝ[‘ˆ-· ©Â´[ñm^Ùã¶Â ù[w=^„žšQ…ãVh2ôƒ*óòx£ã5ƒtÕä:·´b©¹÷°¸�g‚þ>>åúeª Éé:IY¨‹v,­.»}<Bw÷=oãûÌFý¼w¦–g¶7§d2¿¹MØ{rD•H…õu[¼®nÏ£´ß«jk|Ø0èz2ó*—c1h°_öv8Ú}'ì køÜ'½ÉŸ†Ï`68ÛÁ[Xß”¯‰ÃçW>[:_VPMø~Äš'^“rí²ën?bb"Ûñ�y»ÒÝÕˆ,Ta¬ËgÖïqsGéÝ�ä·$°@›þÊ  ×6e�¤Àüô÷,8¥¾rjïÍÆ6`Q@ÍÝ õªd  â ²qXÓZŒÈ݆T´M$i0T/hWpÉ}8é�á»Ð�‡/­'ËŠO8êUlö�m¸¥Œ²]†æ`‡%>s;Ý�lœ4]€_ø •¹�E&v†O$¹GÍ–Uæ;ˆK'-UL8¨Í½•ŽJll¿¢¥éÑø§Åîc¶$é ¨xiÅwò Ubô¹8q¸úºÓünš ­ÈE$¶ÀÍü.y ^Þ�ÌœYª! Ú¾ÓÿøMž¼¿Ž­(èqv1þ@;æ5æzé6Al¬ULدm]P›U³bwÑÛ°ÄÂc�(Ó¤08©æ|Æ@U»ɒUeÄC8®ÙúÓ·ÍóÊm7ŸH9úàñ3YßÖVXK»Ãñî給qî ñÁ�¾‘­Q¤¤]Ñ„«Þülx5AŽ>)=ΠÒ"Hx޹²üñz„iÍ•)¬†F‡fÇÛ®…ôõW F�Nh¢l´å+”†û?„üµ»Ëì¼½ŽÖÌŒF'&›É ÃÑÜ«–�kõ B6X*_©âñô¬à*õ¦K¯Ãs븗�pâ&z:Bþ£*wX¬5AQðìlvîé~«Ht½­réà²\ZJóÙª ¬� è]:•<#£y"N­0JéÞý¸ðûìõ3�°)ã8eòÉ�mšHø¢™ñ¾Ù¹[—-El*�"ƒyk—¸‘ˆ©·éœLyâ[´MwÀÿì^ÌìD˜ÇÈ×O�ArÚuÊs?µbÕ÷äDoòÑ@¡�Î8y›ï)S«Ç÷N•y—÷§%'Q s2M„¸Jš[¿løWôÛWŽn;až�@ˆMÓ¯gÃì• ¬~@‰ÅëÂdˆøæ~s1µ¥ÿƒ �ÑUý¸CÁÔ•ÍÛcî÷”À=‰ÉžéÙg/Kknnµ× JÝA�c\.×ç¸"S0S¬†‹ko×Ðû-»Oº‰DÜqju•±S9yÙŠ¥²<ª‰8™%Ëz¦ô¡jYi4Ã�¾ü¬FG€H"¤6ã¶w´ü}üB7æþ¬U�ºµ;ÿ‘m´|a„”&òæ‚�­{.ï±Kk°(–‡~ VýR&/wºŽí¦À„|ÓâÁeÒ|VD" K&¿Ð¤S= �rJ†�¤12ÊLB†:ÃоÞדV u¨G׵̆á.ˆÏ�ÙÔû®;uè“ Û¦#âš?Ÿ44ñw4/E´*á ‚ËËoÌÚáùû=^ܨœ÷‰ŒîA¢Ë¤ÁÒ±Êùu,¢!÷꿼?��‘�kcR!9qj/§EzA i£,æJÝ®‡õ;a=>Aþ‡ó¨¥'ïKm`£RY¯Ð[�Õ‹í뉦ã„o›ÉéP… 8Ã÷ÑaxÆ%”d…N[gMÊ>W…Øàõ¼Ýª½ð}WÕ6¶»÷Šÿ£ÏùíÑ]tׯÕO§æ£Ðl©ÆaÝ.Ï›Í=³môÀ§»½× Vî5˜3­g†qÇj‚ƒûíhµõuº�l8¤}ö#ÚQÚ%š.zE³V á¯Ìæ ™6Qø¨_•U™ƒq+B8úPq#>ÇQ°–«ÉDç Σ KTà¼/$% ž ¯1k[j H‡*Ž)Fòôˆ~f6 N�ÈNËÎÌM¾Ù¤8y¹¦Ê‚f¦ñ -ZqZÍvÃË ¦<òÆÃv% ÅjZ5°Ö ‰ezl6Ló1ŠTIÇú•=¯J.6·� Ÿí½+#3;n«eͪ¤-jÇ„�¾Ff» ùä 2ÏÙoxŒbT¶° 9êž›À<�OÿîÝíÃÓ­øŠS³Ò�~ÑßVÑ7Yeš¯^ùç.ºèU$T&ÉŽI謸Å|\g¯«u4Фœî.˜CxöÕ°÷®rk$:ˆ<”ð.s9®8Ó>Û%9Kp?+ãó`<áe‰'S‹ñ4Zf¥Aâê6åê²ÏùEälY¢Ó¢s¦zžz•ZJ bE�6=#k+Ú@z”èOá3'�@w½ë°ƒ+£x8ës ú0zغçâî]ð° Úvwƒ^:˜”Q¡¢¢Ô}·À¶®p­'h2JH…%r‡æËb¢b×Y˜�È(µ¾À‘rTóÛÆa—I±Åcã3£~c›©‹.ê¢;�²xuy R˜£ L¦ÒXi,ŽXã5kæpb§>T¨½Ñª5áÕ(�–ƒl:ÇÓÁò´Ð/”8ò6ï­gL ]úK]bM)•zu§Gç¾Ú ÕÔËËá1Ôî±} 1b0ê·ê§Þóìæf@Ü(cŠXðAÌkšõç™~™Üsqû”[.¨\¥2ŇÇðëKx–Oœ*áéÓÆ©‘)q13FG­ƒð­UàcKÈ•ŸMáwm°Û]²ä±'eLù‡çd—2‚ê&Kí¯‹QßgV$�ƒ´8PÙ"Þ[WÌ}xzœ.£ì—û¨G2¥=’àF?ž^(ž6]Õ¬Á¢7*ÓÔ’žˆ9ÜUgTœàQ^¤«Éc™W’y¦FëSs6˜¢ý û×¹æÆQÓ (_ôËÌZù‘ŽU¶µ¼‘•^ZeצY“Ø8E³6Ë.N�âŽä]Ê w>¸8AçYÕ£Lw?蹬Щ¨6߸° İbÍ—¥Š£Ð>ɦ�êO½ÿ¤Fg ‘‚”¥�Ÿ£ªrèúùI2_J½£ÐçšÂüTX–£í6ÂlQv0xó£—sp;ÞÖÁÏœâ�ì+Í(|é>$¼1<&çÁ\_à{ “«“ºšÎñÛ(lbNÁÛ]FyïÍxÃbºÎq1r¦e¤¤çï–!øÙb€–ñPôœee<�»=6HA匆4›êËh·»×5c«Ô5ñLŸhÐaC¢ Ù*ë.ú³ïºú€Ã�>(Fgýu«=“U³6ÞÆ­#5Œ©`¶H0–NÖ÷åÄ.|n ýÍ û2qõ@_ØÝ°úá~Wœ15Þ¶4°e¬j"w±ˆ{•`m š™jí’ì¼`�w|ø†³ŸlpÕõêÎ�4bÐß—°òò×ú8î"vJ°hí‹È6šþ„öO6¬}ئlfÐ"jÏÈ1±/YgçÊÇ¡‹/´ØqhAÔ¹µ›!¹8I�HcNî·w.nãE κLdZ(Î^=–žý௎xÜò{ùCéù“¹Ëϯ”��JÏ[=…>ûÇeZ-*ˆ½Åì4× [TñYZ\¯Œq(ÆX^;N¨nS}]–¯•©tuo Ëìÿøù4aevŽ’¦6þ§Ûl†;NØ…ÁUk9– wz–¸Àõmæ¼ï5¶�ªS·ØÛûWØGáÔX„™h�߯²¾!Ã+oµ,‰d¬ÖÐSõЃ¼³Ø°±“CÇÙzø#¶jËã3ÜgæçÙ¢eý¼(Ð}’…uÑ`ð�[Ûð† Ð�õþv ùä {¢ àÇõO^xwqH6)n¾„�Ðõê�$?%ÒëYØØ¾}ª®0¥&ôïdÀÄLÁ‚ä‘Mô¹Ù…ÄóÏý쀓×ÿ|bEÀZýç@ð/�ŒøÏ�lä¿=‰lSª!ldûûP6þ¿îMyîv ú·�‹�ÿ·…÷¯ùõF¾NèE<^bC“þù¦]ÍÃxü\K)7‹>w¢Ýdê%©Œx^F>"jÇó�¢�Šžtu¤ÎÈI¥W@4)¹OjîC2½nãóœàöƒ#I¨­~~Ôö[ã»%Âq–€æ% 4é‘ ¤4œ¬j’’ËO±õ:5àBBP8º–ð¨íñWÁ¿\Iw©Ù’4Á)âµËW…é)íüK—ä�Ç7ðs{ž;¿¥'©ô•®Ì¦å¤ãW’Žÿ×>éøá°Z�ŒÍ@JI¹yá¿Ç¥ÈàTï÷ÀŸ‚ÿó�ä³8Br0/ÃÍ&ûR\†°†06`Oûïûg„O&Ùby¬hÈÓêhœ¦ÆV"MïÓdH#n=KDçy×7 qÎlÊø­6îD�5kÊêó¸b5±#=Ÿ�K¾ºû¢¨ñѳ÷RŠXsƒóÜ×bšèF’6ÿ&{oU +Ù5=óöOÁÁjr[s$3ND%mbì0sá=_EÝ|4_=¹_꺦²½r•8 ûÌÚµ8ÿ¶"ïúdëÁ£�ÿl¬ã ]h_i{úºN}Ø1aƺ+úËŒõø/DƈLÏpÈOѤWß_�,#ÿe�Wóþ³Æ&½`\õk¶£ÏÜé.ö†ÉÒ<¿Çz7¿ú—1ëRÙð÷Šüÿ%ßóÕ�ü—0/¢ÿ˺õ§#ªh‰'; ¿miqP¥è—oÿPKÒV1]·Vó�T*UQimunify-security/assets/ui-app/assets/static/other-root/images/other-root/dog.pngUT ëÆ«jëÆ«jux è‡Å¼S�.¼>8|Ƕ߱mÛž3¶mÛ¶Í3¶m{æœÁÛ¶õÿ~[µW[{±W›«'�t¥RIw?�J¥¤ ‰‹ ‚ -%¦Šüކü‡0"ÈQÿ«€º¨HŠ€ÔÍáŸ�€�H‹ «z‚^éA ¥-c Fƒ £€â�@Ûö¾¦ñZ˜—©«×-�p°¹ÔOõ¾ü›I¢•¼î}É/CW¹ùùÐó}ôàZìûõÚçÔÿ±u³é3Ïÿ2Æ+D² -„§Šöžù,Öd2²µÆ½ÎÛd1�yÅ7††ø/s`mPXçåe‡yËÿÈ{u±ü\[]gCãúN¤VÛmFÿdT“9™ÕBÁ«Ü~ [pèQBÙÀÀm’ÁF}QçüSk-êvƒ¡Na�üñlñÔÌØ–ÄžieN¯£"ús©Ý!VÜÏÏw¹·|@j‘€ Kr¼¢é„A7š§ïu^ój¨ìïúbµNkœ �„Þ‰0î7Z¯Õßy÷ë-ZEÂ0™ëÍNòööŒé ï Í9í%zRÑ_:P Ƈ½jžã¤æ� é¼kÖßüY ëYY)SGÓ9�¸/¥p ÓÍ'Œ‡û�¢Éyiªö¬bSiTT+OÉ>¡UqØQHèÔøQßSÛðÐKs=%ô�,ÚÊœXµ%ß–+±Š‘užƒËþÊG$$$lùÕ­…ç/S­ÚB†‰4ÍŽ�Ýú½bŽ•çGÜ�/j˜]…f«ÔŽÖš-D\–* Žþ †¨´{³¯uº”ãsûj"p‘TZì—Uœ�S�?¥ªÔk�+(žw:´ß7êû­ˆ‘DØÆk´ØW.×–W°hUÈÆÆëvºJÍÚÛ²í"âñãkî⸺Ã9o¯ žà?ü÷—*ÇæÇ½gÂDZöm#�ÄwÏL|³kÆ�’Vy9Þ®Çl(v.Œë¤Ç#©íéÊl¶cÃ]ÝØGwmx0H56¥cÆãpH‘DD~çÏCq�¨GÆÑ$U%ëÅ"¥2èñü3–ͨýÃ`GXýµþƒWk–ƒ¤O�Gk¦×yÎø$T°ÝkàõÇqÏ^*’Ã}Û�Çg.·‚=«‡Ÿ~”�‹s4/Itú*�ö¼k¨À£ÒîN�ÅdÍeá�ÚM§eL·ÇWÜÍ&Ö�³Ï»•ù+‡D.W@o£Õ'�ƒ ßÉ„¦Îïý¬|}û jÉ‹’²ÖúhŠ9�½åâÑ lú俦~ê!ÞÙ·h˜²ÀRÁ�ñî—t ÛWoÜIagåÉxÑ›¾Œs‘½ [¦Ö%æ,kI$ðÌÇ-4Óð0Nh¢Ýï]*&�¾Ôx­‰Ål� ‡Í±°Ã˜øÃdÔ9e^úÝê·ÕÄmé‘»Pa,67‰r­åzK¥nŸç]šE·ë CžÀ‡œž‡‡K ^»}¯J8Ð,Ñýjcú…´Äìáxÿä†Q 8é Š“—!—#°uéâ¤'Ç&b½\Aó£IQ›Ý˘Ón÷ÄO©�Ÿj‡L3 HµvÿØ�© ±g`p¦eb:çã8Ã\šL1[M$>W‰˜Ë;Šøùšuß¿;B—›>¢`¸#„T›5-fÐë¬b·þ£Ô ¯lÄ52 1�Ï­_ù= �½X.æ`Øì¹½yþ+Ȇäñ‚�Ù“{Š"¢Êiµ.Æãö.â4ùöp5ô­ÀTg'ð*”&�YAN¸ÙMy¶PŠÆèàà$1o1îørû˜º?#Ûz¾<:7Çp®µÞ²p›ç­Ò�˜ðywÒT±áÏi/C.Us4É¥ð"Êщ…O'_…žš�“žqi­lö€É@¹|@²ÓNOJ„¤M ÚþC०OHC<–6›Éªóþø®�EË@¨¯ï|yŠÂíxšè”dÊ}Œi~Zt/|Çæüpmòfö¬çê‘JÝßÂú©'üDôÈk@ÚiÞžvgž—Ú§H1n?,ÑÎçy›Eœ¿ @³JJ©P�áÜV¸áÁF“m1Ÿû·ÃZ)Ä ›µŽPãËÁò¦ï!Þ}ôf§÷aÙf¥å;Ê ƒVõÏ”Ð÷óI4†6C `\!w‰IOuK÷o¬F�sM†Lu)mzõ ù¸`#,Ⱦ7h&íòjN;X ·‡ ‡�JB.IÝÛ[µ©D|lu6ÄV¹!ÚoL„߸W¸‰Ê]ªÒ³åJEË(:{dò8 9v‚ŸJ f@þ¾÷ŒÈ0×AQœ¡j!èÆm2)T‘í¤8��ÈY=_A î©3Òˆ˜wè¿(ÆÁ )¿üBO¡™'+D\ÿ³å�Ã¥}ɉÎé S.÷Ž?à2‘àóÙä7ÿª)!ï�ÙßRMyââê®¶OïLºóè^ÒüÛ̦1펲—'ïDÉ�λM†>ì'Èì_ßÄa\Mh°ݰѲ;Ó$âó¸ÝøÉŽ 5› ·ù`ÕÀa|ÊqozHW9ÍZÚÒçnÈäÏ9™^,7Wà3¥OÛ·ú aÉ=3ÆÌcM™ ÌÛ6› EÏßô-¿5Æ^™ìÉ¢ÝÆÕ šº»¨m"¾•pŸ>îÆ5™1§J;jŠlþU‘ 0�1�”\% øyWn ßð sc`¡1½O¦Œßƒ©ãây\%ó!›SB«Ë½0|¼Q!ÝpèÃuy0–ýŽêÒï•Á¸²wtl±ð¸Üĸâ+Ké„˰ŒI§[ô?» Âtõ,rÿº5Ð~KeGª`þg»Š¼h¢¼‚Ö:å9,¹ûÞjãŒA†{¾ïú—(€¬‚t£,õ»œ( ¹²Ù|š·áäwhÞ-ö3÷رËq>»®ÍFWØL·ü:[ �ø%øð¬wšÅÃj�ïÏËý S¨ß„Êú™SÚH¾¶¨Ñ'Þ¦1ÿUèt÷|äòyí0lmeÄßé~©rÑO>K¥Ôt`Ôšu��V-Õ¦A´Ë× †UK²ºÄê`¬Év­õ¸þ4ùgÓ­bY^n­>ó>Á´+@&_ !R}û‘L™mD F#ZP½/Ó«³ûËfòM ¦ÎÝ£iÚœqo~ˆœŽMU·¨üi¤* œÿ¨±»»{©Bë—¯þúoœs¶ïÒB¯ïOÈûa�´Hò´à˜7«×mŸäæZ[no=êAKk‰î�5¿í$]�ÑØê¤1ƒø”Æ­ê‰ÖÉ}½öjC‰nßd²Ð’çËL´R @¬Ss\-7· Ãj@C öx’”Õ[Òß“K�X8»v~e½ËU"”«¸µ6ÕïG2ëá«»Évœ‡Û§Ö´­5®U+êX¾uÛ³2‘AëwhÓ0ݯ6üpе~‡züˆd^Œ¨È®:çч*>Hy´ oÓ7ÚR­ oGZ¯ý‹ƒƒk¿|/\Óµ°™ç×(»¿ªy£kå¥ ‰�iÊÕJ�7¿Ft»}�ªšš– ¼ëÍÎ>œ �Ü&J,!Ó4=Dò§=¢sbzmuï»Ñk×”ÇÜêò$ì’m �ÿ`‘‰Ì(4“ZFðKÅþÓUå´ ½füPyçàÁï47À€ÊãËßþé&rYÓÑóå{¯Ä{¯•ÚLÞ2y2邾ã_•IBøQ޲_"@}hi©°éo]†Ùm‡ìDIcz›ØØqàÜÍr%9'Xˆ¾Åí³µAY úcCÝ¿3³›³óÚ´ÿØ£º$êPuä�-)pÇâ °Z«°á\OÇL5 `cÖR¸‹¿+ íÞî1¦Ì`?0kƒµõnBÕÑlÞȈ!ÒqgòZ.)æ,ÙÊÉD¢±èq/¦Ñ|wW6k¼>{Û>ê4­¤lŽÜ,IßmÈÓ•Ž9ÂT C«go2-·(:d;Tºå’…Ž,�r#ƒ¬ÔÈy%eNé,<­#˾„¶©�±÷˜ýÇD]+â‘ÑBOÙF ˆß­\áOY)xYÑàOÁÿo 8Ùÿ›„¬Zb¬äúçñì¯É¸éU8‚óÓd)c¡öµ^ätÕ ù•ìÕ"^Pᫌޓó13“×<Æ Ëåjãz‘oaÿº¯pquƒþÒÔàU*C)gÉAîV[Å0Y%êùÞ|�M�’æßÕ #ÅÕÿƒp ô¥zé÷Ј?´G®N½ÏÓJ¼õW†©ûFй/ lV¢ äte1éQK×å©�c@iˆ_nÆ/Ü„¼S‹ïÀóº]Ó#ÀÂòšîŽ4gê‡üõ»TCˆÒOšÀÃwß‘±Eqvɦ„ym¸ÔúU} ¸<ÞIs·Y±ñyüu�K”VçÐÓJ¶ƒÕ¬ô Z5Ã@“ lšúwÜ‚^úuƒü+…6Nf'Ñi÷õV©2_þ"[!Áußþ9ûúz1Ï‘3p_gÍd•0³ ÷�‚žÉc•4ŸÉ…„Û|t>Ú÷*:c®uGà@ƒ©¤U63À²bѸ¹ÖënÑnH |ÒUåOp ÿœYk>&l¬°�O0ÂO[Ö=@f–áuÿìèÔ‰êÂÄ|VµYû�›4È„ã‘v³Q�¢Þ!ä?;ÈP} ·¡ˆ îBykƒÏAªÌÈæE%ž‘ ‹A;zQ´Æ‰ŠIõ@=×¢‰jt)ÛD´)˜Ù.†ð¼ò„ÌÂa iÆmk4=PF䤈 A70K¶N¤Ó* Ó�tÔŽvgl¤Äa5T[&Yë´IƸ^?VÚæ>u²°~œöN\¢ù2Ò·ÙÖÎÉ®¦IÞ“ñÕÚnûK3è0R*è¡“¥ KÈ×tà—@åRwû¿…‘´ÞÊýÂÌ´õ•ISÁ×–?œL“=\ciqÊ+¥Èeµô<[ çö<¬� ÎÛmn°hú9e>{pc¬Tj*±ý¶ˆ‘ u„þ^•fë-3‰ ˜½œõv’œt§€¯§É.Og4¹©+>1x#Hä%Fþ±&Òˆ(äuƒéõÄ~UQ¬›l³ýéˆÏŒÿ• ÅÌfŒßs=6톯f¹-Û-r£›ÿ·ç\3}…·Í†Òf¥Ã�+È÷ãI©OMËØéÜ@‘Úgú˜?`~‡ÂZLš¿Ë‰Ý&�äÈÏ:…¤Œ¡x¹Ãè1ؾ+p`¯»ï3²Äm�‚õºÓCþr!‘ �ªSa3q‹b�¨!‚O0%xŠdŒh¿ÛéÝj]Õ1»ö…Èç×wùO¯i-«¨45‹R‡÷‹Âw±ïü³4ûˤK«þó�¬9¯·ÓšÙ’„¬À²ò_ ^°2Ôô©ý29þµ²b¾Äé ±¯žk7CsZfg& øÈŸxÆn�vÙŸÄ>p€ ñkiçÀDZHðt<œ¹&š ˰K¸`Ü?6~>vŽ}wª÷Ú@é:›’ÿž“¿•�Íç¶ä­*bȆ;Q æÅ£:Ëa³Œe{-_Ø´% ×Dj"ä�Åý«×~yÌê†YjìÙb¥ÂÜ^ž‹Ùœ±®ÞRcšš·Ó $m[ºs÷aL¸xêÎÌw³0ËuxÓÇáÉ8éLM©ePãÍÓmh\^8óµ0ý͎³�¡�¤ÃW;az–AÒ.øÿÂé~â`ˆáè%]±\K)gÝøB|�Ḱd±cY�×]„ tÊE™KüBƒ¹“•Jw‡ç‰kðËJŒFzüjßè¿9e(¾$ó‚oª�Jñ^‚ÀúûQ'î"‹¹<�i=[·‘“üQxd—¸^˜?Ø�Ÿi‹yX‘£I*ˆE7 Ü0þ�çlZ{å•ÓþÇ]áR¨Œ˜Ap”�†ê…Â\�÷2ÑòpÁ•Ã�5­Þ—&]¸�ÝÆIªVZÌä¶8©:üxTÄa"E©óü­ŸäL’xõw’4¿ é‰:®\v˂ۣ:5˜F(yb3¥æ#³ïi^·G‰cP°óã’Uœøüo *˜~×zs10ðEKK´y!�ŸG´70{E8óyµ#ßž¼£¼¦mšwvd†ÕÛÈwvøü/l>ˆ'P›“ ÷è�ß1Å6²3@lH°0õööjA�F¤Ò+ë¶Ýl1Æ#>;u•Œ«þ\ô &üÕè‹C‰Ok >ÜÈç/Ñ+ŸGæùêc?`öÌ ‹ÁšÄ¾|¿#ŠÍsÄeFR�U1 ${69í’¼Q½V¢Ò}¸�퉻pc/6”ºÚ-íªlLxr„ïÛ–´«:5ˆŠ„ð!×sŠÂy�¹·€.Ú‚DÏï Ð…!¿ì!ªÂp&Ú $ >}+Ô äo\1‘¼›Q¥ƒ†fù-CMˆMȸ“*‹ì|÷÷ÿû6‰w•Š–ñŒ¶$Û¼v¦� ÜšÿåêXðãGëS„ü¸k·—\:e”þ‚†Ÿ[ƒž>®¸1ܾ¤íœ­uîýtI-‹É zc¤Ô¨bv¨ÆÎ²š*åŒÅñü²³gÃ#‹h,Íœ6BQ¢G­öo zSp{á \ó«lÌçBòܧGhÜÝny†^™óˆ”í5&L)6�Vö+<Ž ¯¤õ1ù˜uSâ�Íœ×B ‡5«G½KSy­ÏÂaÉ-¼vÒ�g¼¥™�ÏØ|N§Õ£ s&4Wúˆ/¨x9 Hy†ºî<žã˜à¢/òüºàû Z¹ÜÐ]HÙ'4Ò! b¾ êë~õî¶P4Áâ¾`JwÈM¶QfhL+š§°xRƒz!⒚վ罴œÓ�Œ"Ÿw Q@¶ål†�ë�ŸÁ·¨+æpĦ…�…Ÿ“§§eG…�]]£½¿Iî·è´˜ ¼‡òú¤0Qã=pŸ,æb…Ó—Ô Ýà ×uú‚[¬%¢Ñé«Òg),}è3AcG0·Q‰ÿ‚“q ˜×G l>ºf€f#ýÉ"÷xdèÑ(Ä{ΠDÂ�¸d«!JÔºQeÕ+5änF †9ÜÍžÅ&µÂuº]TÕê5‰ÃJ?z½4›â¦C_õ}oÞ@dq•=ØsSçböjõ)Ö×àÁ¶]r¡rõ¼õdÒòXÙá¹Hã|è.3øÝ%v¿×»ñ¡çPq£Ï Ü´¢˜!̵}V Ú.ßÌu UÚà 2Âî^±d½ÇÍæ_¾BŽh'«Ø"ÝNçõÁOd þÀyækx•WË·‡£åÄÎÅÏ*Å~�é½óßÌJÄÍbMy3¦FðpXt˜*Z1h5¬r8~Чê¶oÛ�Pb¸(`0€`VX"‡yÝŽÒ­ oÙl™wF½ eMfÓ–1˜Œñ\ üå*?$#3´GôG`!Fœe­vE¸d±µSýRi*0àþS38¸É¥l/iî%ë¨!3æÎˆ‡ë€n0€¡³(`]íbÎy¢GÄì¯õdýMß°d* Üg³š;Dÿä$z*LÏBƒ˜în;²Ü[ƒ˜jIBIä^µ½è¬ÊT§ðp„쟼n1—��£¨Ddv€(gÀ5~Zv™f%ªÃæ.“ït —ª�ô/ÏÂ�xPl)vXã:æwöéá@!ºzEº*ñw�Ɗ놞±’u†±{¥¢ö |€+¬1"í{+Õÿ(1,Æ{÷ÿH2¾ú£�2ö()tšGp—ÿ@$wÍéÊo¦B¤D*ÕS¨ãÿ²‹æßzq#!" rŤ™ÿ�ã†ß1Cÿ ö[©ˆ(ó£Î‰÷c†�úЉ2E¡#›Õ�:´*upÙ®÷h}ë·ÊäE\ãU«§dO˜dMóŸà=MvqpâtÙ€ÝÃtøŠû&¦9ýaì—âêy¯Ò¨g0›JKÉ�lÇ dÂ,GÙvÆûͤzf›¯w·¥“Ùð½j§èd0¯¥µæþ\:]â÷ª1‰M�ì;¼�™î˜ýFoú¿( o7Ç¥®¸�W™7ÒÝr–R¯%Ö‹æ³rg+÷ÇsµÄò¿/Ä7Ýk]+U¢üÈ åœ(ZeWê"r Ìåò�µXɃj+õ‹Ã{bzVzw34WÛüºUE �¼wôzýù—{þ�¨äB9¹;¦†Ü¦2êµ8‹hQBa&:hìÖ�Yt¹Ž©�¸tx拼ÒþÊäñëŠgqBÿoÊA{ýÓiÔ¤ƒ±ÐÛL"F¸›ò�t­Öÿäl÷ü³ñ’àíP:�ØGg@ÞϬ^Ùr…‚êŠÄ;? çTÙ¿ MX„W[¼é£Óß©sÐãKß1ŒèÆÉ¢û:PàÝ#+ŒaG™cÃØØ``kÍ£DAVò.¥x¬üæLúcØY&á®BÕŽ¸¼V,¯Ø}3g‹ Íð®Mf‚‹ß¾{}JñIЙ¬…¢…ejLÂ=|ÿU¦p¸ž2 xáROŸå¼— /–É· ƒ2íž{:]ZyÝÙ|æçB¼–ø!*¢x⯠Wæò ‡ó~UëVFÿ+»ÏÖP𸚠ƒkäO®yQqÅ–Ø!ƒÃ`1D¨&äš0ó?nˆ=ýUŒ&*”ïÊà�z«=êõÍcþ˜|þL|[= £&‰d�†EI8íËúe÷î¨Z/ùK*pQø´}�gÉð¬5›”ËP^óOúÑ‹CMÐ3×IXÑqØmш£tEM˜|Æ—€„t‘IR”³5¶„ôHÖò¸™Ø–õúµxA¥¨Ü S$ý)Oûên«žàÓgrjä"_5R¨B§ï$cã²8úÔqqˆ“ÑÌ粫‰oc½=LÛ íÆN Z%ž¬�Ö�´É¬�–ìÖK(äò~S‹8÷i/§ýF%|÷¢o:à„à……ò|E"äQ¥É`d´ì˜ )œD5ÏßZ¸ áØ gGsÇf|ˆ<éÀø‰”e^6ñíõ~ªJþkniºÉ>bd²ZµNž[â^É‘›#k0¹Õè ¸Ÿh–Nôþœær2•4 íæi{` _8ùÛ(ô–“{½]Æìpa­[àêüþC¶ (—6 ã²Ý‹,>§\aÀǨ¦ô¿Ÿö(¨x­=ôAVelLü Aœ5‚t6ž‰D䎀gÄ¿`ÉæðO÷He-pKÄTD* Ï”`NS…!¨Ñü†â¹Hýy¾_}ze«[öÆ¡_øs±œÆü™U‰°r@jìß³od9‡ÇuO….wcû&­ZMGK­DéAN]ÎwÙ(Ã8«�Ö¤ZUç¡S³øˆù ½75�Ð+3½à»T8±xÊCR4ĶyÉHÀ^D�2x’,'UìÇû”‘i…÷ÖN?\q9Š…¯n,¨3¼Î}T %íáúšŠ"™ÑLg¡øŸÎ¼¤ a}œ&l®"œ2ä9ÈvÄ&›º-$"áWñ: «Ô±�Wzlæîßb¥I(’þò�+]Ð¥ƒ*›w9o¼ÉÃ@©8³Ùš·’_!C�V•¡yåT)Sẻ5:ˆZ_+ …ʤ¦bž@”L¿1'IþBÁ9EÞÂêWSÂÁ«„ÌUl¶XXKŒaõÔ"n"â9ä Ád Å+±‰ÅOë î�ÈuQÊ\¾ù7t1ˆõ˜ÖM˜ÖÖÞ¢¢ Øë˜d&\øÂ7ædSiL©|5¦ ˜f8±êsøÇ(‚7† ªËÀÉ3É'ÅÆ=~ÂÅr qHBÉht†'ü°íÑ]·ï N´œš¬ç¤Å“yu±Kìt†|º­3œ­ÞWÁQ5fi©ª@ùÄ£å aŒª„ttô:‚T7Ž£¬ £\{¾A5S:¼éôjü¿ùM¦²ÀÍ&ûl× •Îo•JñPó¶fÑp j¸orÔÌΨÆ­Òt!kMÁÔý ÌJf–ˆò±ø¦Ê”™ñ¹Ò¢{f>+†2„Iˆx“ɸ»tB<Ñ÷ÆÍBU©—yÎÌxK«xÊv¨úB•¨VëIò&¢†«z$á<ümñŸñýë\5ïvúç,V©|òYûD©/ü<~³ákÖ…â.œ`9dn|tì§O.—>ùiD ¯¥1±oÚ×nîCæ 6­d˜²@'MgÔôDÈÉu‚bíOcã¬é&¹Ùž-øäÎCZ4¸5 u.·�ª(Ný—J(„ƒzo![u¶¤~dš%J¦…:.&âÔ‹nÍßε˚Á1Ø-¾{ Or#��ÁÁ$R a¯N9ƒmŠÇš0:5«$Ñ1™®ï>qØ &'rH»@lÜ/Bç¶¼`󇘺­Ð½æ¼A|•í-yÇ�ºx¥ä’sÂ)«8ž2?ïĪ£ ¥dû}H7ª8¸køû‡ƒº~IyøkÌw¡Ñ ‹� »6Hò™TrÚ…”¬fÉ<�ï…û¿¢‡I‹,•ôiѱóÌÖ)-ïµð|¡åÒÁªD@Û/£Ðáo> &ÛM1ša ‘Rbp;&.l Vþ!kG>|š8æ Ôä'il™ýaè’jOX»¬÷ô\ §ê=èNÏõÂ{o“J±¯°X*`þŽÏüx±&—ËËïÖöáZ¦åGçÄš¦}‹”·Y Oëëoû®ù{ŽÞ8[[!o†s"»næ Ž©îƒo�ÏôG¶ìßjhí-S²üNÀÎmæè7®ó¤ã[µfY Ýg'qEx8_£éÍ™N“ûŽZ§SõDÍQ¯µøR “GkÆIÇ<ºéqàe}»"7µnk-׆Žl¿»Y’ßyØëbQ¹}J'rÙr¥òâfqT—¹2øÈ+ÜPâþÁ~Ú´3öÛ™!_êçgãW.)íJÍ`Ý ï”òÁɯ‡L>¨#j6øÄÑ~¶àËÃzú´91Ï ûŠšy÷ü.bÅ�ˆÃé#:;Ü´  _!î¬E†ä.Mb~wEjÍ3ðJe’ ßOâÑœKn *4 üä/IÄ~T<�JφUPãw#%ÕɉIÙÌYy­%/© ð ÷ßxäÌb£,¥£ËÔÕKŒ:4Xn’QlÉ&?¡Ã-ö²ñ»�ÉªÝ ’«WÛ׃º–=¿šÿµŽbÌs¼«ðôè ƒCHƒ )|¯z ÿ»ê¦k@ "Ï–o:Ø�Ã"àq CÙ†YP —'^f²V&v3Þã}²CRðjsôÙ¾Y4Òª*qÔï€èdƪ¨ú{166ϺÓ�ÅÀV"¥à¾où“ýà÷ÔybQÈ|w©QSCáÜÄéùÃS+Mp“Éùê%Ò�‡=¼:!’ûWO²·‹/–í#%3iC—‚#¿O+Yiòîøe¹Ëjm„ •–’�7Ü™/ºüŸ+s{ÝÕšÖÍÕÛëE…8}W•´ þú­¦0QëMÈg«MÒæ¯5SåÇV0›J(h?�Æ|ôJþMð´k/imÔ°Ç;Jþàò"«´dEQ¯ŸËåÈ„Þ[·ƒE0âð+QH«9ûZèO ?âp7øwð÷¸cN?›Š]$8IFŽ ð¶²¦›§Ì$¯>Á¹î¬ÄÛDÜî¹Û°©|ù ÷þ¥=Rç5dý(†¶’bˆØSRë «TäSé)âp˜¸ý×­ø”p�^ôô¢¥' ¹ïn“evh©nÝZOÒ¼™+æ ºðv Aïï3&�,ùŸ§˜õ4¡XgöB ¦³RÊG™u̽�|ek“ ïÏ&ä‘—&!ñº&~ þà/Lz󋤘ÚÊ™A-pF÷Ž ÁL¡ô€B´�¿ÃÖúKA[;UÛ²ÀúϸÒÓË&KœLF‘0o7ó)s$¯JR†œ5:ŒØx,4H¿þØ·"%*÷Ñ4—É' pªÊD§®‘ÇŤá±UÏpLú:¼Ýrôå�sU–î3‚tö:‹£�¥8tYŠ s1UøöÀ‹¤Ñj$^¸—\F£»ì‘A1µçËë8/aðè€D)’Τe�çB6›O–T..ÍÚ5Zæ˜_bïØ«|n)¥áŠ | ×,çQ vB»~¼ˆ. Ðk4…^£š†—�?e6™9¤,8N�ô w'6[(LC̸¾_†>·±QÃ|ÊÞ.ö7ò—è2øäÎm^ƒqFOÿ—£þr1_Øž†O0§¹í(*y AœÑÕ7.¾ÑÉC.?yycÿÃF÷5� É-…H?ÚX�: …OÖ[̃œ>û}TïãK~ÅãšJ£„òÙê\jû- ¸í;Õpö[\r��µ�ÍB.c}Ùæö/']z°iÜ !6œ#oìª)Ôß™†ê<Ó)Ë8Dôå;ÅD½y�Ë¥ÇÓȸ‹?ÒàPZ‚(²ºÂ«Ã÷ù� ñµå&QdZ7 _´O¶þ n¾�(ŽZÔðó�±Œn¢FxCmFå"G¤;“ƒÞÿ\ 6ü©Â SuÃV‰ÀJZG$òy|$lmY¤yfÜM ¡"L(vz}?‰% Óž¡>†ÁÒëÒ(ØêŒ áÄÂ.×›�¥X¶2kZ”…È|á ãš-Qõê¯0¡ºîîIN|¯ßÈØxY`vòT+–ªå�•W_nŒk}n1¯o“Ò·@×JSœ�ÃyØ ­7úBdJätPú"–JâÎ0}·ú>Yú 2iŽèÌ]¿Îiµ8‚àñ䬇}â>…|‰ÉûØcg2û}—›3Î}‡U†-Ɖ‚ò.îKewíQjZ†ÓPP«ðmeÎrg›Â…‡MT`‡�Å�~·º'4·‡U$ qXúæÖ¶óðCsÆÇí6ªnp‚Kÿ³Ÿ™ûY³j¾ÌðB¦ô™ ï@!oËÓÐWw2Þh‰Á2¡+[Lªìcmüƒ¦ídù,6e âÜE,½.™ÆýÑâ’F€õ@iÄR09[z[ˆ‚ÅÒéŽÙgÇ]“Õ•v'Ò½b�ËÑüËãL©'TNFt=eƒSž€ªqFڮ͂pÞÀ;4 6Nadsû<�»%\š3ó öê>bŸÉ̈t•?¥­£pœPþ!n:%®„ ™u ã�<æ‰) ì²æ “yL ¤¹�Ïü~ŠZT˜Ú�GE'Ñ 'pŠÑsaÚðçÑõBаPW û;ŠÀ x9"?1þ!»SPB‘^³†l•ö.»‹õlÜí ]ß¼«F¸O€n¿¡m‘êí˜kì¿SÔÀÿD¯­Ú÷ý°—£­‚3 ¿ûø'«Ã�›É –-RÂä �Ä-[sà6Z0m6ôÚ8”z“… œ|"–Ïf|f‘Cþ A²™~pÝÞ(d¸[t‚¬H ÏšÍÊõ_t3¼ŸÇºM<6Qc‚Æ·Ófû-9W H”h¸àÞŠ}ˆr k¼‘¥š‰”oÊF£;&D"˜D©¨O­Û©*´ßô'Á‘V6¨A£VKS+hOI�™²Ù «ˆ˜ð“ÉsEíë„Tü•3˜z½Ú$¢Ø8r¶Y›Ó&*gDà…ХذŒ ’GùúéûÑg®O0JY/Qö#OcOmÌ4ˆ}T "éë»M5( ž êvyì†3W©ç©ñé¿0~(aXhåÃC$è^Ób³£¿ÞjMNœ8XªÆ ³°Û½tÇ‹H.Z�œÇT`ÈÂÌÔaò:³N0óû)àÇS#Âý:¹L‚yóÛó\«Ï¾ví>ݽß]ùø ±þ#þ ¤ŠÔ²×†‘úšXO{îßÒB3 cL0þ­P«o¥ÿlZ´P�mJi*qÀí‘ é�oµ».2‘T‹…g*] C¤¤‚=nAA¬Y^ 6ïp0-ùÍiØcu%ß š¬$ö÷µ\°$ñ¥ö|BÌU ¾‡œÌìOQÿ(:xeÓ,»]¨¿}çÿÎb�žãÄ[䈀˜Ò7 ý5íw4ŦA�Q¶ ;ãþô�;ýŠÛåÆGM„ ŒèúbçØ ºð§#ÎYñ 1ã� Bÿÿ5U�Ô6{Öœ"´`ÃóI˜>ƒG _~Öú=êu;}¥ �=¶"w¬r‚¢çe¢Z¤¿ˆ¿�æ6pœfGù#<½¼d�ΗKUJ£UjQÒJfŒ®é-#¯ã>0]÷s¾ahÞeÏ7Œ+BøÈC* 0!Ä;åååK5z:ÖÄñî(‡Ð&ǂý™}yÒÆŸ‰KGØ*4¶ÂÖa[ÝÓµxœª¾$ä²UèpOIãzƒ&C†Ÿu?ÐÐÍD ¢ñ*eãöQB53Ð%¢çƆ -V4´h�u[ÝÕýrR]¢†»þÇaFá‡YœñÑ«¾D�²ø,‘ï·Ó¨õI¸ v*§mç"Ú/÷ïË[‡&$S—ÕJáÞn‡‘Ø‘SÛ/iwrç×-Æ\f.\úýqÛ+^«'¸—êìt¼ÐZ?½î-SÊ–c˜ÔÖïËúkO„âñy)ìtZÓOöæM™T¶DÃ_Ð(ã§]Yj Ò_í ÈÚ’y¥¤¦Bq'6%:H³¸R Æ¡ò‰Ý 2ôL—›ÌTð7"µv!677÷,ƒ§ E¦˜¿òõº)œ-X œÕc¨~µÕ$ç`kHiM‰•HDIe�ÂM*d}7\ûÜÈ(`iL†’‘ÉQ ÕÐËyO©‚Ž 4Ç€.éôøðú§âw¬Áîwÿ’¦qîÓ-?‹þ^ÄáN Ö�o¿ÉÞÝÞ'cL í…ŽT:Ð*!ÞÎrîLè_þd•Qw¡�ôúÈÊÏð3÷Œd±Nœ.J€%¡xNÜîÑXùÉ™¥8ç�®…›+Ô¡ž¬}˜SfÆ4=_o‹øÆÝÏbþwœ(€-­,o³Å©ø²sF¹d»/!e&E&X¬Ðv Ÿš‚aH‰!׊VZ8âæì–>q°Ù¹´³îô\Ö¤pgõRr¶ø¿×­ ¶Õz}Þòf(±Be#;òzË]­€,)ߪ…i2Pp›$£…�aQZÝŠD÷ÏÕFÏ×›m~»³dòõ08¬ý¯™X«Å%vÆ&Éëµ^Þu—$‚…*ÑcJË^nÐI@k­N›åV·ûr4}ÕÑlž­ÖïPuªÿV5ð"?ÚöÙÉ~:r³7©1‹,(ûå&Á$Ä- \v»ª’gl¦{ôàÎë  �6÷õTêû7‹‚É¥Œj5–>ýúsr€z­¥^�‰½Zºhd¸NþëPÁê¹/b•z­v“ãÙ;cM;ßÂBÚG)°©‹E�Il£Ìnu�ŒRWss6gòjãDHØ`òø‹•ELL#ÚcY4ÑbOú`1—š<#KKÖ䛳[K´˜ÏO›Î`ˆêŽˆðôñ–Š<á½ì¥>"ápÈ•V„ø9ŒÅA¼e�‚~.…_÷zOÕH§�¾lVnefÜPÂíÜ'¤æž*�Rõºiý^òLƒm ‡J¤aHkƧhò4�.0‚k¡Ì�ähñ±Ðïï”u;¦ÈW¾…W?ë>¢’ö¥pɰæòUtrÙ‘¾à¬–0#qÚ¶µq&ô'x,×TîO�&å jïþ× ¬&ÈÇŽ.qçãjšÝÆŠ¹(bf,É�ÿj´ÙÏóý=á™6î8ù½'þsGýI}_Á´:=žQ¾[Í$|pXŒé|ÈöÚ¸JôŸ(¦¼rû6k’®Cw6“_öOÐt†VÂèyzz#à1:g÷G#í‰ èÔêr›†;ÆìýH½ ’ôPÉA¨NÐM"|é㚃Mù�` ãš“ù…¤¬Zª[‹N&•ª�M¾Ï“” ¸`õMi4“b¶v|ú)î»ØhÒÖ$íÐüÝni…9í©Ó (B‘4½QoBmGš-Ia;Æ}þÄk¾!·²4þÁÀÂ¥“+9õr:¼N‡@! º‰MèYØoÁ&Ê”ÂN¶(÷6”¶¥P*“ï>ûuzŽ ÒN_%� ÙÞLŒ%ÿ£©5j£,/�ðôö žHÍ×hâåÕ¹H+‰�=v ¥Ö\Õ¸?ž§ÄRÈSÆŒ�–@4F4E”ð eAÉÎÔ¨I �B”:™Ì`ip¯Q®Ï�zÏêu‹Ä¨Õ¡ýòU¶×ëgP3äù¾p(6êïs¾ûô‚Aì£\V²-‚us�Àt¹çÛS,—Ï‘ ä÷E÷ U)‚˜=¶Y® ùo?f�+F†£õÕ³Ô÷Ú=>J£‘ÅÈSœ­¶C@é&ž0’°óìJÝó”'}ºù¿�’…´Æ™ÎÙÖû”7&K& �üü³ãözŽÆçoTü÷Ó)U÷55œ!³a’CÎÚ�ás7qDÝÙ ^�È­œ‡ËN¦ë0¼£ fœBLúøútôgÛ¯Éö uo;Sˆ�Œ�MõzN=dÍs&MÂýåKiëjµQ´ïë݆Z¿00•FC€HHV*“ÊÆPE>ˆŒ�ë~l#õDyEa>—MÈ3a×bµ¢ð.ªÇm~Ÿä|D;1:­‘ê�&Æ GÄ�F•$;½‡ÅH²äwE~2aò1�Zd8ø‰¼y¬!_Üg½k•B mYðxõO öÈ%åöVŠ;÷=›ÒL©8e€Ì°\žà ³� a"­(ÓÇ)¾½ ,hàHø#Tß¿?/ÈüºP:�Øãs“!:î€X5°kyóýåüúê4>ù§P�ÿn.Mö —Êãv3çõ«X"ÓÀ’ÖðH'.h£ÜÁ`­Ñ¡ÿñ­¨Þ4ø-þ‡oöï•5sa®«Ð^?,Gwö*Õô°‡cȵC0FÝ2 â@ßGªGŒÔð¡pÈJØdŽ ¯oëT×ï}8[j{ñåDÀÓ�VßÈ‹v¹"-©Gª ù½JÂkïÍ—ZðjË”ôíäADã$Ží¥Ùúç²Jƒí›Õ«ëäÞtD7tßCÞ¯Ÿ“¼uIg:™ÙôDÂï^ùâ‹×'—µ&‚-¡Zwè†Ç5M–"ög¦Îšóñ 5&½ŠÙJ�©(RúiïG� Ñ}²B�0ˆºÔVÞOÐl¬n(… ‚jc½ƒ…bA:Ö.|t0˜¤ð[w'€ÒŸÐx#izZÖ|6¯üSs¶€îx.ˆÃ"·Éðëð�±„]*ÕQÑÅb*…4žªþ>4Тk5»pÐþ3“ã4÷µ÷§+|ï×ըȽ`Í?2š¥žµ53æ§ÜÞ‘ßap¥;Š‚“Ã’Š%ÎÌŠo÷_,É´^˜ƒî”ø‘’¨ŠÿŒÈûcsbÔíÕ;*•‡DµÕA ê\Y>nQAsK=­ÚØ&¦ùÁdì,/E(žDý¸¨È�‰ÙÍ)R½WÌ‘¹Ä…,œÄ±ûwiй\ÊîöĆyº¹¥*iU ¯_e*erZNâüé°ŸêëC· u÷œààGï£1ûHÄ»(�uz½Áý6¨°hžûáùõ¥»Ž:ÙëL_óÙRô ÜѼÀÕÂ%ç¯uö,·hÛ�.µ¡†¼P;1[�ó>’0Ý“ƒ òØŒ¬À? Ê]-�?1©Œƒ–äí.÷‡Ôg¯N¼¡ õïO¿Zä nFÛ�Z=™ÐA4/äþ!7èT¿”‡àf±`Š àÛW[ÎÊìÛý;’Í0k©lÂÔI?¡úµº¡%àµ"¹©{9J®¡_NAˆ†Þ·n˜³ždÀ |}ç¶ÃÜt3�3™>ª®½2ø}"†GbF}¶¨5Ùga:›³Ð}£¸Ðl³ÚC3iöƒªù;Ëé¤.ÏìÊ›µ³[¶û™ $±¾¾££ƒê—"´øÝbi„-D5êLÁ¬yv@Р+.„õÕùò=§úùtF½á‘_áÒ�êd§ÉÅAì—?á„áýñ,í³©K¡y„pO�IÌ�ˆðAq"”xofÏJ½~Z5²�ó>(B áfBUÊ*oõ+–gþ•: 8,F •±£Ka5Ö®¶vOÈñåçÁ¡B‚êŠ2jw}¾e9ã­2ˆ3á/ a`g�'""bÒGa•´ñE´Y•ñ=È®õ<ß`ëj+xÏ[�^Dü=q[1$=�ñ–Ÿs`™Ïç] Ì~2ƒÉÜ¢'ˆ|2¿¶£ÙZ0(9QÀíJª8” ê4ñ5m�/»T`1�AîLƒC‰®ý‡ È� :~çÁ TºjÚÄg•ýº�äU!˜6>¼¤ˆg°¯2ØßÐí¤[ÓE‘å°åúäÁ‚úióç´JM¾†’Ëùß¹UâE†œ.ô+f´=´ T¾Ø�Æ\+UÛr‹ªÐ߾摑Á9ê…eoõnnL/Æä­Ùýê…Á+ukq#˹‚\ÆJHAœ�íÉ\ÌuØ×PYŠ:¦ �ÝýÎSÿ¨ï¾Á§ÃrEtüß-ÄPk]=%ÍÉ;Ëw”Šîr¶Èœ ¦ Î’PPGëù8/kˆ¨`àAN‡#‘ºgð+;¶“ýªÕ‚þrËÞ™Îï¼�A»•)”k[ãí¼Ò{$â£PbDOqwoéÀ‘ÔFd$¨ç«”5V‹ êGðv ¯Í«ÿë²%IB±é™/à7ö§fݶ7�ó:t*/BñP˜ª£™r¾ÑÏ;(ŒÎ¥�P¨6®5Í´u–б-ééõÐy¼æß©,òu‹ú~âäÈ0¹€|,Íð·bŒEÞfÏGLŠ\^¿Š„‚&P1Ÿ?õ-礼'Œ¬Û¯lÂc·2ÖòáŽÖ£ÁŽ›”ìF6i_œ¸��î?sŠªb%Gúv� Ô½®7Ácq‚è„ÒóSxɽ·_ÝÁ•4O¯iÀ+‚¢ä§ãæFÀ‡…"9˪a¥VÏxY,ú¥%±4 råó)TÑn»ëI´8ú³î6¡È]ßžÂV³Kß©; fÜ´ÎÍ%­Ny"EBŒÈKl-BÒѕ¯,„Ñô.¸.‰S‚c5XiþûÃÚJ‡×gù‡ piÿk¡¼EÃÖehxqi˜bš¨º}_›§ò׺ìv}2Ôz[ôi’Ïadž÷ˆAº-?eB~¨´ÞD|80>JÇýäµï¾5õ¿@�lb»=¼í9V£Åâ1#¶Dc�ZÑ[©Ù˜ì9üþwl ó_ˆº1B[Á‹í]ʇ©3Øqª;Lô^FÒì'úêÿþÐd‡ôy ó»…ýQ�8éÌŠ]Á´Ú«Ÿ±V¸ zðæ<îòá—ÈE�©ô–wt›§ÔdÕªý @!‚I ÿC²Ù¡f’…#Yžˆ½ÊOdXzfØaú8=Ì0bÕm'ëILšœ4®M@±ß˦ý¾®â/?3TÂ|¦I·ï¦ÂCRù²#Ï3ÊÚh¶ñ·D½ß^QS§š3ù€„b í7{¬R^E1¯í˜Ü@ÏÙÆþ:¥Ž ;IoxÕ)))ø èªjORP˜ß½ÍNçû%éÉàû/C4á "Déq�a ˆ-õ/ÑÍ j…�F}Zz«_Qé¥ð áôS!”ó3ÏÒçõtmwj0=l;�zf¡¢VIaFuêãSâï7þR¨Ë_ òE_v¼¤ÜÙßÉ#n®!—´5[’“œ`F^çGÖŒÛa—0÷qåŒGxdøÂ/DÓ�­åG#¥Bt\s2Ë…þ_dmÀ7¢)>Ç)ŒsW +òëUHås¥ËI(³Äén)îk©ã¯Æ~ ®++ÄZQVh²ÉX\H8…ÛsåÝëgtõ¼ÝœµÆL>V{‘Â¥v5ÕbÁ’É„yÀ!f»ì„þv:~çç>Áª9’1 «š�¨ê•ç€GÆPÆÂò“×·O÷ç½³+ìƒq� °qÏq;Ëzg6$d3±Ä/W}7 p—èåïÆ³PÅÁnd÷¦ásè˜×",»G¦V« ‡“@«WÓc¸‚Ýãz—qÚÂøå+MiÑ ¯HD”íR·P 'ª%Y¦hf¿vÔètë[gÌÑÏV¥Íd-ÐÚ'¦ä £þÂŽ„ëÄN‡óCeðFÖ Æpêt;AáÊ(G®‘š�„s$3þ· T‡Ôä¾ÎÒsøˆ2S'•(Í2ì¶^�\"þØ ¾,.0³šî"7»p¹:÷ ù3õs‹ÒgáZk¡eõ'Hð›4«aÈœsÀìAÇQ˜HH5-’ù¸/—vxÍøÐƒdÆ9 gHmcìEæš võ¯ilþ'ŽòÁÀiè`¡bÿJ²¸|Qs»y­õšPÆ®µMäÎB6†°"ðâÙ8y„'¦éÂÙ ðÚÂθ¸¡×S+èQhHOŒ[þü�; "óÚ¨IØEé;SDÌCNæÆ•=÷F¨ô¨J¿Y\íƒ÷râ<ÒË¡z'€WàõeÌ0"àq&Ý|<‡lI0h€}h@˜úZÂRØgŠ}³Ä)è9.fQ£H„M@'âT."_$�ë²ézË™4âŒhÌîr6�³fü ¨Ï|ÝÖþÍ £QÃ`CÛ°.^kdš¾}&KþÞ‡+Ò…#³¿\6æÄ-(Ò| ­é!´¿¥RKé­šnÛ™PW9“ÍjKåýéªîä ú¸-‘LN”'5‡[Åú_%ÜœI¤±G3/7…×-E‘´ÃR1[kùdJ£�r¬`thÈ·¤ÿj2òiF ¶‚÷¦|àð¦$‘¯¡îg+¾`(ùJ¸ßj³Î³íNѧQ0quQ\„Þ±\ò4{5i¾ä-¸¥ëm\ìÂ6BM·Çõ說úRåJÕ3a!ó¹|òÉe°ÆÐãnäÂO’íˆq{hþEQd,"MxÎgBè•›_’þìÕÄÅÙx"Ëÿ\öÐ=Uì…ëb™•¢:Þƒãíý¿9P5ØiøÉ–Øw)TD LªE‡ù¦xOG0kðÉt&ö†ÓÜö²–^K»v~þÉÞn•ÛFÚs¹_-Ëž�Ú…µò…¥QšðêàN3ÅvÂ�Q\ƒ¥Ùø?7¥?`÷È%H£�6BÊ]¨ :jS°„‚t&¶P‘’P õ£YK]›úÉiÞ¢&l&›†E4ÃùŠVŒFÂXÎ;�\óc|'š¥†ý¥}Oçæ•‚ÈpÑÍìvñc?Í糩‰;ÆXþÿ©ÙüK4§×–Q«˜~J-e6zÒMØqþðÞγme‰JÀŠmU*6…Ð4£°¾ŽôƺŽírC Z¨÷ëц>()¹þÂ$ ¥7r�´‚'•-ë½)¤�¹‡ÃCó�çþÁŽ®vãyµÃ¦3Ñb`0äÿ,.L ½£æSçΪ$ö"Œ—2º… h`ÐÞÝîvÑ�„‡…@ùñúl-]ü3†<yÔm2&Úf;¥\»çs3Å®ùå?ãf6�&™X$%)vµavU• õv’Q·ÕE[oÝfôÑV{Oº øZ¬˜‰3‡�Ý�íf]-f|„¢?h¸„µâqñ‚Ô .ýjAùå�(Í{ø\èqùJýKíU@ÁÜe`õÙqªx£‡»ÇeþWÃ&¤œ�’�. 2 l¶£i§Ó¤_<‡JñrL™:6eýµ‡»}=žD`$\wßþßðîRHD‚ÒŽ5PÄÔQ´'µˆ�;á±*Â"#Ј�‚QÍçt¦à°1�R+h‚c¢;�ÜB?*P|{¸g<>W•ׂ4é}ܯSs€4î»°9@53±¨)!ýìŽõš�q’àx7Ó³Ì(p½½™×9ݳ;KE!|ÃSøXØÅ™) ®Æ¸9Nücf A9Ðàƒ«½6åt:-ØN,ÈA°hT¬ûq‡³)2é ä�.'Ê#±óÌ ÕôŸöØ‹¡ ¹šÑš#B§±;9LþñŸf|7¡“ FL}°N„Å: E]�%¡¹cܱƓÜéÄR9¢!Û<Ár¡:#Á;(UÛó�^q{@;iQ¾™”9�]P1ÚF±3ø FÅwËkY0“Îêô:IŽh4’™(#±>³]¥x®`¨HøùÂs ^Rc½€NWÒ±ÒCò”24 ˆ¢=1‚é{l�tH%”ŸN×(Xª‘I)âR#´!C > ¼ºGîÁ.,ºÈÛhøÃW–.\3Ø\K¶,ó¼©lØïûÜ”™Ì œÈ¼=Î:ÒpDŒpZÛŸÉò„ê#Ùq éŽLOJ[“¥Ðøj‘”� FƒtvhÊNÜA(8ÒÌRPÂÓ‰‰Ä”··ÞHš1 ÐáÌ*!*:Ôg’«/w)œÒ´?”�¢`…Î0a(³Jç×2ñö˜HœM'ÞhœqŠ@ú~ø Jv€�•˜…"i»qäÜÜòœgrf%‰r× æ�³Øi6R°^ÑŒÅ/Xâ/쿹VÄ8·™¼FשþŒ7ÔôTRLDŒ“A'5 9æíA]2'� Ë ×···¯ŠD�E‰ïKîƒü›–l Sž®HûíŒÂ"­dvBM€!S “›ð |þfc4I bð° Ä÷ÅíDJ³O†Öê©~3ÁÇt l Û;!šÐ¾ 7•ÃWpô�©¼äy�Á·L<1­ksø63¿™L¢âð[—˜Š ~sØ÷,ÕkpRϾ) V£!_$…ïb›ÂÂS,µh¹XÁ<Õ‘ê¾àhÏ3AÇJ/_˜†n‡}½·H£±�aY€E(!(/`“¦ê ,NNdà®ËÉyæ�ä~’�å®> {F@Ñ2žC††­m†-->9Æ('ç °4Fõ”ÂûƒË¹8ßð'ž){Òvœ¦ÌðABÆ‹Dªx¨¢&`¥4>ZDý9MĨ&áè±õï›J�S¡cñ8¤9¶@ k%�üŽCŒAJÓM)ûfßô<ØL4f¤ûeË㺥Sk\ZúŠKŒÔÛÛ£V—²ª?éáøU’Œ–~ÃZ³ ›¥¦³Ùlì‹ìËH CI~„Š„R�rÆI9¬óÂDGõæ+léšÍfø·)*ïÞú4à6sdZì�ZÃ…�¢™?ÀòIê¤f­8%ó¯^?D“¬½˜lúW±úR-64-Kðõ>"qˆ¾–§2¾Ô�Jä�’ž¢;Ú+øF)ò†3v>>p¡r¡È— oÿ7�ÜdN«mih‘VႯ|'¡(ÿ¹0ŠPO‚òN$%€‹âÄx×þèà�üÚ ÝVTÓ¦×c'Åc×fÈa�#A·ØqòÔL.PnQ߯/%Ÿß»oLG£z§çƒZF(’ Ò(Ѹ¤GÝÖIÈ™…7Äï(ÚQÁÌ |Š![­Þþx%â�ΡÜ=6� à‚¬Qm‹T‘hvCôüµ;Òá/ÄD @ï‚Æ™ÒºÜy“U+�6 •cˆàV¶ˆÛâ/ÏÖETQ’ÚFAR"þ¼ú+d;ü2¹C¦QCxzyII‰”ùˆÄó÷�ŽdšòêŽ'(],/ 2YïÉ¥ƒ$¼ÚΘš²€´Ïô¤3“’´ô’Y×üÐ"¸÷¯5¸×:Û÷„o0#)Ž,Oä(ÞNÓnw>TTܤj¬îë¿gìȈ˜$nÝv#tPÖE}Ô¸Ó¨×roæøo@#'í_-Àî{túƒHȶ;]$q~PúÑÆâ•7Æto3²"á½zz嫿g �£0‘Y%¯äu2àįx AGAËþ¯ýÒöðø ¾&«j®ñwÊVõBxpàŽ‰¬Ç*2–ŹmpºµÔ™Ó°$¯éH†û3“»IÓ²UË„£2S¡v`êÎìÄBRjÄE¿.Ù#ç ;J$,ûšË©ƒO÷Z*�œCW‘Ù®†?Òt§™jÐC#¿‘)XPÒÉÁ¢„v¯6h:îÖN_ÿšD7löùHÚÿ2¯‹H:”Nµ•™�Á¢ðJú=Z"6™Í[\˜Y¶7#?ü.%„}4 ê$mÒüdØÿ ÁM”´Gþÿfy/9C�oFVóÕ`7�ù†²YŽÚL lqlSˆXe¾- ’Î` :¼Ã×|¶bÛÈÂ÷Ã~@š4»fÓÌñ£Ôâ B”wD�KÇ&²T°EdfÎá ¹Ï/lFý_ð˜”ÄýËñGA|ñëŒB¸Qò¸‚úêõºÄ-5Gîeì*8Kuzpmp×?Ôv ‹š�«ø\ ˆ—‚Àn �Y6Ü>-%<o³„øv®âê0ÞoüôMËŒ‚–Ýßn½¦">Q¯Ö^Çæ° Öh¿(Íà(þ¸KκvAdzñl·j­˜T–wŠÌ øv�0ÅÿT}°Ñ„ÂHña‚ÄÕ+Àœœ�#ÓK27BnPÌbǤ×Þ=">ü?ž¯F1iK©êˆssàÀÔ÷©F»Î]8€N'¯ºB:Áãv³µýÑ}# ‚!Üþ¢FâØþ+7|Ö×§®§ ³ã+çû ”ÑÖÞémÐsØ ³Q_ÔúT,3Q€ð”Rìh›¿^·k:BÅøJ{ƒëëå¯ �”¦E‡Uè¢sbÍ&ï)"ÚŒJèvÄF“]Aq!"L±1¹Ü’çƒM}d®ÛŽÒÂ^°÷›ô:¦XcýŒèåêid¹ë`C?“�d6/X6Pv›‰¾ø¢*ª Ⱦxç´O$w˜T«Ç·Êz×·{¸Eãw/:lÍ S}¡BEQÀÈ•”Ï„o÷Gâ—LOÎ~>àÆ …l¯uŸ¯�½u0½ ÝøŸÿ»%µF•+�òŽÉ@�ëߎ×tÌxáUo6‡emquÎ >®‰L¡èüÝÞ ™/ˆ!µõÀ¥ÚŸüɬ˵ýg;­NuIKµS¥gðß)� .¹PaÅÓ†1L`^ü–±mˆÙ�$«`gÿ%»l /ƒ‚ïçr0 ¶š9ñbš�ŽÎ£²éÁŸ%–©Wð!PPÃ{HÁ—½šØ–iÚMºZ‡útωµ§‰\ðŸåÐRȶ@):Ý-Ýb6¼TÁŽà¯Ö°ç0‘?uy¼Ó¸‡Üôº=—Þ¨¡ùW¯ØÑ,*zH aØOxˆ©Û*®·³�³¯ìeðNs 2¢Z !8N’v1+>Þ›$ã©d„¿#Öx~ƒ¢î�.‹¶°„�"¨æÙ÷ê�E¥~k×Bùwí{ÊÈ@@tàŠ`+ˆùÀ#·ÉkôV5˜ÁmïÕÄ¿,„ßX-ü™`ÂV"�–ªÇ*àà°�CwªNDc¢±ç;ÓŒ“퉛¡]­X-`®„‹Ä^ÌB:9M‘’Ó‚ú‚€ï_,È¿]žƒ!Yl@`‚/¸¯0;F ›µým‰y‚>,Á74èy÷WP Œ`ÖºÄ]E¾ˆÉçÐdÃïVîüÖ#Ž¥òzÀ~9á‰Þ¡?M§…&»òãñ�=׈ÝA–íö[¦´‡Ä·®¿ÒådÒèi‘ð©JÙ„Ç6‚Aó{èù+"âƒT;¹X*ÿÀ¥ýG.á{¢þ£c9«6Þ9nðšÐÿÑMcb‚"NÑñ�œÈÿiEõ–µk�† Q1P¼Yÿ?¨ìþ|m!ÍaƲ·ƒüW¤ÅÄêD ƒÿPKÒV1]Aç�P Simunify-security/assets/ui-app/assets/static/other-root/images/other-root/clock.svgUT ëÆ«jëÆ«jux è‡mV]O9|çWXsÏ6¶»ýub‘¸œî)ù«…¤Mˆ’=6â×_U{†å!�=»]®êjïÍÏ×G÷ëëñÛÏÝòt:}ÿóúú|>‡³„—�×9Æx�‹;?ߟžvË�Å==�fÿõùáü×˯Ý]tCð¿Ü^9üÝ|ߟžÜ¿ÏÇãnù#Æ»ö÷?‹½úÿvËÃë÷—ûûÅÝï–/ZC ¥çO9…¤ì…¢Ãñ­ërFj‡èr R’Ë1Œ–0D­ÁØúÆhæ¨çÌ.ÛÛœóiä Œb¸–B¯‰Ûº ÉÛWŸCÆ�3ôàC¬=Èè>¤7ÞŒ¨SGÙûæMÇB9+Ó ëúúœÈ¸˜ÙÜ+"¢£¶µdS•™ôžOž@�Ï›”ÙÈ·1Í\ThÜBsK"müÜc7 Ë46+4ÈX¨iÂî0, ]'Ë­Í)SÀ4oú‹ŒD¸y�IcÞœcSRñ®RKÀŽµÒ ‰èu:SÜÚ¼cJ:<ò¬æá¤:p¤)X4ƒ"}q¦æ.|1ÁàCpd¦’¥“+ÓSE(Ô�Iq+“‚¸ÐÄOaè ‘ZüΘ¦¤›hŒŸS±‚Q²“ip„GrRÌ™5MÐ43iÂ0d–w”±1ZŸ)ˆÚÒ7¡™›™ª2Ijc±LU¦œÅ­ÍÄÇj†é í°„Ìî¨kä]É[·Ú’ºÔUϵO½’YE¬êõ1‡ü‡ÏÙ¨3ŠÂô÷î7ùå G¦W+¤ä}ÆP°GÖ(9¶¯Å]ʹ,6³ÌJ¤â�'*h†ôÍ�·­ÍfwPeàLBí[s)±¥™ C”9J£cÔ %¬þfž­ø“º© ,9KüL¤ �u6'Ê,p,RhËAEq&Weâ–Xìz!£XmJ6+lÞ¯'•f5M߾ѡDb·~¤ƒ”7îè(²Ì^UÐT©µÎ.¯;li?>g�â¥ìJä� ÉÝÌh»— 3 TûWÕ §§úY{@eE2Ž=§˜¥e�éÍÔT§~þ3½-×·W7üÍs{õ?PKÒV1]ï”qµ¾Simunify-security/assets/ui-app/assets/static/other-root/images/other-root/atoms.svgUT ëÆ«jëÆ«jux è‡ÅX]o¹|÷¯ &¯!E6¿I€,ÛÈCä� ¯ö¤V+ã´’ýúT59¶ D0�;`ErzÈîêêjŽOžnÌ×»ýáál¹=¿üíääùùÙ=GwÿÇ͉xïO`±˜çÝõñöl‰¡.æv»»¹=ž-¡úÅ<í¶Ïï￞-ÞxƒÇ†«çï þ;½1¿ïöû³åpØ.:¶<î·gËöi{¸¿¾žvjûåêx;ÍÿryYÊEXÌõÙòKèÁEɦ7³\…äzÃ!ãÏ –“^LÈÎWÙØæRÌÆÏe[\‹ëx˜àYs’ÄW{‹æµÅ;ż>e9yÃóáCú°z^‹ó=›(.…¼±!8"qUš‘âJX'%»ëljÈc‹WÏÚF\® ®À±{FS]êÍ&ç}䊇ÿ®¤nÅÅu=Íqzgg×Qv!#pïrG”ê—í®uì-¡Ú�[<¹Xi®Æ1LÙ•VœÄlcGRªîÚáü eÎî€YÄk�‘g— S"•P؈[^gÕÃgÆMsƒÓC›ËÕ¼6ªf݉ËÔŒ�ÖÙ4ÂÉÍ ½1ððT„!&u—rÚ[W}48G`§uÃ_±�(…9j5�áØ�<¼áãpáX¢[G'@–{ÒØ÷º�Ѭ�LaÜZÚØèj†M ð°—Š”Fâ_2³ß$ÚûKþ?ˆ&%º€WøaG�÷‘©¬’™³¤ÜM­ÛÒ\ÆÉ@«†f#*ª$óAä ŽTøYˆ¶gÖ³ËÀÞÕ±�ï 1Vä¾÷ÜL UGš]\�0Å;ABžƒ¹4+À§7“<8C’<+ðA@ÑŠB,L\šˆ£'žfÕy­ÓìÁ$$[ÉLjÕÌ‚…ÕùT†-1Ë`dÖ´0ˆL�ôe¤¨T 2<’ËY˜À‚˜£§¹ &ú$=hP"åBPªx¦E3Ž‘ŸØA¡žR8\Ê/!×=Ḛ̀ÄõÀÜ�Ã+Ö)"˜ÕÔÑ@>4=¹pYæ*Ðm>ÖàdG•b’ …¼‰êséÄÜÁ[Ä!¸­`Z±9ŽY¤Ç=wÌŒÑ Ìp\Þ0 Æ£‰GÁP>ÍŠKž–c�0¼LˆQÅ #‹•l@›Ò)ZÐ:Í‹­œ1Ò ÂTÒ#M¥?1謮%n²æ¡6Ý/ ÒCQ7�B)¦�]Fs…_��'9Û\ECž)§Z¢ÅòºZìe“± j…¸‚©¨;€¥Ò4ª$¸LÏuöfu^\\̘«i€fCŠF5¥AÒ|`"3|Åžµ sW«º`Ÿ)pšOL N…ŠKDÝê\AÏTWÕV¥"ST ßs�©ƒÝ«�_A[C˜èyð±wðãª»Í x‡Åу,98Ȇn©jRΘ܎ú£Ú# ø�^Cµd*²Ð¹2£(9 ‡£sE* e¢4²º%Ã…] w�Ø$©°j\”xÃÞ£ý‡vØ\uœâ}×!ý�êãYllÕ•~#»0ÆU3‹@²¶yaYidB‹íÀ•¡ýD07Ô½Mla`4êÑz7ô€àm}ð¡h]ˆjO¥_:jºªÚчéèÊ oìdGïdÌÀÇw«½c¶sL  Ìé¾x-X�Û�ÎΡÂ`µ#mFj uA¾Ý �í²:lв0¥1N¼äèÙBê¨1 f€C`¦¾âʉ†R³¿‘qÔ2ªri†42‘U— LM¾§k i‡·� Ú9x³†>ú†Pׇ^X´Oö²A>Á(JQv£½pW›±‰è?O– ê€þÔ*U%S+–‰ð�¦—„|£8JŽ%˜A‰àx¹Ç!.èS&ì×;£\mF$Ì9RÇ"¯4€^ÐOé�… AŸ]‘Žjl,¸ˆëv�ÂOÁbg�¾¼¼‰Ê§OŸ&$DAh¸EF¹ES¬Oü¹µ:Ôß—;uÀ·ùœ V�¼ÜAA ô*ÁˆéÍ™‘°r…n� ÿàNâ5ì‚gZ¥‹ãÏj"4(¼ aVxý–ƘL ¯'Uûý@¦&yÎ^îй×#8M6‹™Ñ ½ÌáO”ï¤ümñ‹ñÜ�E¦‘Wù1^÷66�»�.Ž·çäí¤Ä�/{\Õ#ãJsÅ&„Ú™ø1À•dfµjmÏ‚ò8.åZÛ [OªžZ¾•Љ‹î�#�Lâ«nú¡@ó":dX?f“è¸ÃŒ7‹ÞÞõ»a(1/QaÊ7–SI%'Ü=Ü%|î7éÏn¿_N_~ü4ïešæ·¿ûõrZŸÖÏ/OOSzyý½Úÿ-'7ÞÌ}ý}ܦ§åô(’Th4ýU-i}ÏTº%.dž Õ4ht[UÄ’™ª[òLVFb*Ö²Sa¾<Ê é‰�ºÜÅ#—&6ÒjT‰ÄÚ{ªY®$f™ZŠ¥JV ùš7Ĭž yAQðÀž_bÔ-j¸,½e¥Z:X5Òf©Óàúe­rÔg#o©aÇàØ&AuQCdsWVUNP­ãr(€z“ý¼”p¥iøQÕÑ„°¯b7 +§­a› }ž5 m„‰�‘‰B<¤–;\õý­2ùì\ëqÂ\ØSôS¸¿ZÎlÌ�k68ÕWdÖb�¨”Ðh×(N8XYM­^oò§§Pl€\¯c·ðÆÍÁ êí"Îkx™·÷±y¸»�ÿއ»ÿPKÒV1]Âh€ tÂ$_imunify-security/assets/ui-app/assets/static/other-root/images/other-root/proactive-preview.pngUT ëÆ«jëÆ«jux è‡ÜýeP\M0 !�'¸ww'ÁÝÝÝÝe€÷ ƒ»ÛàîîîNpw÷%÷óÜÏûc÷ÇVíÖÖ·_5œÓÓ§ûréÓ„ÈɈÂÃ`Ãxq1!àã!ðAçó‡÷ž€#àäû/HÇâJŸ?^Þ�ýó~‹å$¬æ¤hkâäªï` 0µ±µ6¦u4t06¶q4³u:ƒlç¾Ä…¾+¹¥¯úh)î¼ÎÇ}_ôP8©SgU~=Ÿ÷Ë©rÑ0dù3ÍP¤­  H^ë< èt—`¼ä›É‡�ND¨ÇHðŸ“Ê1U…£Îd!€Ž˜öyWß0!¡~eœ\y?\ö¦;Ž9¦§]¥V_qŽ;¦ VªÑø"ýøLèÿþÁ»´¢ì3Cÿç†Ð"ÇïGÖÂkE fѺ�®ÿ™k]dMÆ ²}].éÜ‹Ja Ü2•m_´óÜ¢×µå®+Ÿ´rq´š'2¨ºLØgn =&céú8;£ð1L)êâ<<ÿn;®{ÈPJÇÅšk5ù/H×û9‰£&†$)�V�œÉë³õ7ï*K†CH¶q…#ÀŸ½›šWØò¨Ôë­Å)‚5áÃSµ½¤M~BӾ⊓0Šq—ß ½à·”òqü«˜ÃÁÞÐ8An²s0BXsÆ×eæPØf¥¡Ó rßɃ½¾­Iñ ì—i.îÀ´\[C;®±‰¢z–§<2QMrηùk8_l`d6æ@ŒdÁº1H›À­û–é þ_ªîÖ¼¹,®Ê7¹¡ ±lj>¯Û›·‡.k¦Ž¡GúÜœT™…ú(�ùc﻾åv÷qžÈÿ;ɾ�Î]P9¾ÓnKANîꉓÅvÅÅ©RÓ4F+Â-f…[×È¢!Ñû´ë¯…2¼1ÖˆZ`ôpÏZIÒÆÒÖרõª®QšË°ã©_ˆý¬Âü¯î[‰˜ºˆ¶–¤îâ¥Å 9î6­ÞÒiñÿÕ/…&~/p;Øy�ÚÁ‘¶.hã2Ø´õQš_m;M8Ùkuêa¿§WÐ^…±ôþ+¸S’íõóGä~MJ_ÁâºÅ\wŽªí]ÝòŽ%mJΧu“sRi.»ýoÜiëfŒ�GZúQèðÿЩ?Q™[6•-�Ãz’-‘ž¢cç BÀÁ)›IÃQâÝñvá'^ :Ý6-uuumm°•íZ‹ûѸ øt{4o;ð›ðõõÕ‹ï­²ÿè€)»¹ÁûÅÃݽQ¡ˆDüòödøx}0_NÔ� ðòxs´æìü4н»¸^Æ}®²”ò=Ö÷­rv†�ån°m+ÑÛ\öÂÔ1��ÚúG0Pþz“󦤭Ì1ên~´ª9#*±¶s9£øäÅÛ¢åñ’!øû(½šªôÁzg\W«ÑqÕª’¡(<ÅdÌ“khv‡ÎVìQ¶wkÇÂW<ïMw{ýÁ¸¿u§eò�tJl0oñX^¨¬Ó¼Å¿"LǺçlÆa̦u:¾Ýút Æ’»ž­Ñ& ‹FâršMdþù£GO_îýòØØÐðý‘UXX804tys“Æé¸»?™ãÙÔRÈÖ« ¡Ñd:ž†AÏ•¶F߆Éf•(F‚Íl"å ®I鞯.ˆ|‘¯mLî,?㹈Ý*±|sXpÃv-ˆt˜�U�‡æßË2°%÷TuI·ïê4dÛK�wmÒH„pŠr…Ì?î?9|—¿°TyÈ} óDÇ]BdÇneu¿ûÊlz³ z)åHÓd&T& ƒ¶Õd4«Ô�µ¿ ¸%0µ¦ «úü¬ÓY áyxXGh�5½P{kòrÌKéS¬ /ÒÚ6™i˰bÕ‰+÷gevIK=«^´=ª€fçöª-ã’ø¯Ñ;=Çy?±£ƒ¯.“MŸ”—Ü6Y€kpõ•Äø2�~ç£ìëÁ½›”Šù$¤¤7Gó²9“;—–óeƒ;²²²l)¼æS¹ª:î;»£)žw§ÚÍ.'¥êÕ&#‰“Óy"£tÚM5îW»·T›÷ÆÀÚÍlf]�Ð-o7.WaŽ*ÆÞ^×8>lõ,ÞË-g íÜÚÇ7)ê”6te梽ÃdÁé\sÉj•›ÕU-ÍçHÞöñwSš¥ÙõÖ³Ôñ!=¶4"zvl‘›-�F\ò´–¢‰äën¨j¬Õ "XµÜyúýQ2ŒÌÏP<ÂŽæw&�WÐóé­àgÃG•„[¿‘f®,î—’‹´|ÄQ^½o¶fo„ü©”­9óUf§!ã!ñ¼Üà ܑo —{Ö9mˆ³ÀØ«]˜üš´‚ãËõMŸUF³ˆˆªÕÙÞ{ƒLÛ7ò2 ›Ôf—¤S‘ÖâFs6Í–D`½´.ße {à_WÆøB4kíÊç á‰yeÒÄKî&°óq†}Ý+6!ᮚ —óòú`zqqqo,ÍröT8K.çvNÓöáééíõéì]ÅÃ"#û>ß"Ë++×Ú¬r�U–„¥L 6* Ϭ#n1öœï±[nÒ,”iǼE¯©{u´²D˜@‹µ—ºÎÜ3AGÛæ?£�Ëëªo�«Ĥ0ê%M–ü6‡ÛŸdÈ9�E^ö¡UÇ·aø�e¬Â†SôÜéÚ™¥ff,@7è1Òöþ²£H cÞpÞ2w<~½¸zŒsÄ𼯒ñ½&÷¶ù  bÙÎÙ"í¯EkU¥y�ÈÇ‹ÖÏ2r2çë'!ë:TËJ/Ý˪¥­ûø>lœÞj 8½³É1N—G¥WAo܆�üœ{Ê{É*ðÝpϽûØå퀔þ1ï«AÓå' ÅÀðEB«µoDÅ�{C¼#ožÌ¢��– äÞ®`ù½N=™¥y¶Œ´~Ÿç=Ÿzsi¼Þ2ÕÓ·Ý+ŽZ™£Ynwo£¥qÈk‚'ŠùcS‘¡ô:ªkS–Ÿ]£^�ÒêÖÿñ…œÎˆ•%h†“VV~'ÎÞo/wÛÛÛ³%ªWÏôm÷Ù™™™[ºyõëÞšd±àw58Yª%�ôò ˜¦�È«9Z÷/ÿ=žÅÛºQACC£¤¤ŒˆÀcå­#çä|X#Ró¼÷H%jÊ#WRJùcx &韠— D¢ÜÖf{{Í�a/+¼ýB§a‹v&æ§�Á[øk.é'í@]Ç—(Oº5ç—Œ0¾çÓËÊÊ— -Žã^ó(^é¼o‡üo¯ ·—–¬ŠoÏ*«Ó��t¸·›G²áíÅŠ²Ô¯ûü¡ºgúÂ&a;íÆ´<ñîêŽÀ¡ßŒoç)¸/÷°ÉëwB ¹X#2"50r¿»Kß &žFÜ©PUô¨Üiœ‚:Ÿ¶ðiû‰jêäÐr¾Úz‰ó[9Ap�0‰Ø£ÖºÆ5W÷Q¸Ï –S7YŒ&áÉ,¦Ç’2ó7õ«%¬P­°Lñ[®Dú†ïh*©ÖýÇKOx�ñ±Ó… ›YM¿�…‰øî:þÇî˜Ì¿Ì?ÜÕ•¾[/“ÙˆSZD� —ÓJT¿_¿¦¦§ÏÞƒÈYþ—ëEÓŒOŸ>ñ¾=_½«b�¶ùXÁr²ê ÏèFæææ‡Íª¡~ À÷¸ŸÃÿÚpç‹Ðt·8/¸—’Q]®2‹G Éie*¦,�òjcNz¦ág«yûM`âãt36úË1†`\»QMÿDÕŠ‰½M÷|ÑÕ6Móâk.÷øjÙ2ÃcD£ 5i‘í7C þá7A ¥7‘)ü7Œ?�SÔ½´ “¨Ó;£Ì½ßt`3ÁÙ×ÕÚ¯:?9;}îΆ+Étf‹öâ�ãŠÇÀÜ7«Kò2M¼ Í wAm{‰—×¾YíÚüºy¯ÕÊ6X8m­J}GÌ Fz¾†�b¶RDv±‘!®×ðz0€npïhŽõΓÂY‹áÄìj¹Wœ³·ì o½£™;¨[s|‚ÒB `휑 îîÍ}”#Û”V‘L{l/©á’§c›¶ë­ýî]Î8ƒl,�³ØÎ³´KTì/T˜)›ü`k*[akOìËÒ<õË´ŽÏÃRÔèêU_ÓÕ0ëe\5(è=’ìÆ�y¾ÓzàE=‹Ù]êl’àë¬í/ü9‘ÙækÞÝÌg]ÝÄ䇸“=ÄÆæ)¿eÍsEñô†ªóøS„¢fGÉ‚ §³j.ž1¾›óüEgÍr¼ŽKÜ»…svQY¬Z£ÕzP�ÌÜ`¹å,þ K^CÛ‹Ô m«Èw_ò�Î4,…DaÃN.Ë×2Ô„¯Â½W²ÎË€EZóPEt›’,¦"@IVFÏ,ŽâGGŸ( .Å•j.…°æÖƒ¶ºXzZ¢°´XZïQ™B¡‘‚´¯ïÝù]xuùúEýQeö/ÇÉöÐpBq‚þ+¼¹²éç½»yÿaR"ØßU+áÇ1É–Ä ƒ^´‰`$^í|èÞ 8Á›í��ý#×@¤»5<ËÕ<àåˆð•Å ‰Ý¶1$8{ãŸêê†/u÷ð€Ìðä.T^Á�›O£"æYl5òËD( ƒ®íU?¢~---utt¼–¨–/¡!àq™Ž¥Í—K’ÄÜ¢ó8îŽÔZÎ???o;¸³Ç‹�FÏfå7 ­˜dWžº�5mqÎ!‚Ô¡ý‹äyLÝ`«ª.�%ÀÑC×ÛEúÉýë<Kr%"¿Mܺu†Í—Çæ’AñW‘›T/>ßÌër§õT²Ù¬p¸�ë‰r¥áccsô÷ôÅ89$°°³ß=ìeœýé¥Àk¸›SUOó:ˆ"x²IÅj?Ë!õFkÖ^ÏC@º—äyz –¹Á­óàß¶½m/_k|p_t¥7¢ÛõùútF¼ùtýôt¿ïIq"Ý�Àì9·âäºg­Q«~‡›ØM ™è€öߤ Ÿ­É7€\ÁÑL«M¬3»Ú²Ù@³ÓHú½nÞ±ìI––¾nñUA0ÄŸklAYj»�NcÞ|CSÃu39|­6¤eD§çÜêœùSã�6×÷ëZ³Iï®ÙˆtÞÝ<‚]«¤J_a×vð|gÜ¢ÞÌð¡…%]"wý^Æû˜~›[=Ã5š”_�Ið[þŠýo:z²ÌN&â>ȤjEq¼_+Y¨Ø°aïØÍÝbt„-üÝå»ô|dta·í|µ0Þ©Q€‚´ã¯¬b1‰-„6I×  `š1±„*CEþõwžî…L®¼-.ÌæÀU3 ÅfÄ“‘ØW4gšžø¡‚À•é(ü²éÔ èVj Êi'–7Ö¼d” }ôéÐ+PqËËÂq Ñi�Þ÷{|†¶W±Æ1w²¬P‹˜ÿ{è`hÔú�ªÌ©Ä*mü­ó¦i=œí$ÃDš\†ÛËÁ1,Ä0à’âhÑËì�´wº¥ÓYêo‡ �-…úƒÍ•#ûl&Ñœ”)𬾽¼,.-u’òzØIX]YYóyF‹õ1�CÖÖÖœ<ÂŽ®.//! ¡ gm¨#²$RiŒ\ú–ZR(/;ù±Pƒ:êOeÚÍ|ë öÁïñâžT–¬úB@îŽgœ9yƒ$œg( bO×4uµµµÔ•\]©¤-­\SÓ»÷¢ÞnEoƒ?ùñ6Ù}ˆ¼F‰Ä¼ž)¢ÆÀE¡�V­Ã]mÝÙ·Ñ-ï×ÅÃ<<énÁ?ã è÷m›40˜šû|`.c™�„–>¼çW€}AcŽ´júˆ/€9¹u{ß�[(MoËýžw7j¤KáîÇÞ™\ÕºËhYÍß«ÈÙðK‡1âسuMa9'̪ú1ï&Ð?W!޾„­ßâHõµÁÍÕtì½Z‰ÿŒN"{ÊàQ¶©éWv´…Ù°°3­je;;[�‹‚(+³Ø%µxÌ'5 #Nm]mŠ?A oÔ•~à4gÁþI,ŒR¦5Q€!®°¯œsôkbâ&Õ.žÂŽ�Ê(¼÷Ó=’ÖOnbb&ÕΟÂþ9ŠÑ;¿; ¦ *$Œ õ"Úë[N6dQ~8à안˜4û(#¶R¥î…îËÃÍ…B_86[äeÀ'÷Éý»ˆŠwDà�‘ý§ü±øJy´R‰4(³ÜZ�œø†O•_ªïýÁûXœŸf©ˆåx.,·î‡ºÂ᫤«Ýêl�J;†¦F¤*•Ìs½äh1à(¶x ëq åÊKZþ¬þºùÑÊx#ÿ:¦Ér&M˜å”Zü⃵½Šˆ7šùGb9`öW”ff¹Óp�§úêÓ! xÌ�saqù¥‘tZ*F‰:ʘß�s™rŠê$[þŸgÝë^%sY¸‰e‹g0#DÈØ©¼Õ¥?Ħ1vísr F½4©†ÝX5]€Ü6Y¾ù_È–KqhUêñ¢I®‚ðMÄ6 95ß³/3f×d7~¦0BÀ8ˆV2mvh3|ä™ 4iÆòõg¶ÿC®7knk2$`®›£]Â8—‰ó‡f„ò;•ØC‰”6qCbðÒšØ.ÛºÆô.~t{Ü%X5”¾ßÕ“c“È•- q¿;yI1¤Ì�¾2QH:2õNi€‘WöwìgVÐk#­Á¿²…~ëÙZÆšÒK°÷نò ]1WÁXˆe2»¶¶r¸ÌÔó*�Ý[±„;«ÇÏ –Šéµ-*°JD ¯ÏvéÉiišàV•تì`”:ÆT°}L;·<Ünž’9‹…xŽjÃIMAŒ‰Éö�’vQêÀ}.…nò4s·à���0 µT™fÖ~%ñˆh NoŽ(¨oã2#¾þÒ•<€Z©†2N«33?­¢ƒ´f­�0>«Àõwš7�* xv�¶áö©æÙ7bpã£ïwùDˆ^ëçÐ6ŒáØTSý1ûC¹X¶Ê»üŠÃŸgoîÕ[Ó²y|,ú$ Êøé|3õÃXï³®ŽD-5tÂUÆ�#Û,%xª£™Žëë ‰ÈÍZ0a ºñ\ öøÄE>‰nö”…8¼"R½•Ê7Ø?|ÞÈ¿ðÎ|ÕËV�îY‚±þÈvç[Ã; ¥ŸaÀn±*A5TvЬz>MÇ ì4Ї' \ñÙÂpÓ,±šäVq#¯±gɉ:ëð¸b%ïß<>>z€$ŒY°OB¦ d ø¼8r¨Ñb,ÀÇëÑ( ’¯Ø·kžgÚ­µ¥¥Ç%åmL˜pž·ÇY Eõ¶ë·ççû�f%Œæ5òÝ ‚77»Dì 5…RAÊ ËZr sÅç*õvµ$E;þêOSj¸ºž®!uëSá5Ϥ¹å…¹î"*Û\év^F›,æ !�5.ôk©x½„ª�ˆ?ܯD9Þ-vWWWªŒÇn’)&\ ÌÞögZJÊÆúï¹g¼^xŒûEÎômÕd^kYWSZ‹�ï™ \D_]uúž×]½�+ëh|<�ô5aZüÒ2�Õ§6ëžúUo}^”ïíq@Rý%ul‘�Ï ›” *ãD:O@TzyÎOwqIÇ&2«Ê°cEçwŸÓõ¢ç£’C»Å±öÞbÖ�^·½ O[öMÓ^z˜>ÃÛr@ªü1�*–¢#ÚHºvŽ}Úw.„jé4½vã‹à"NV€”|0½~û¡Ên�±J”F�}#=,Kn àÏz,î8qÇ»å%¢­WH¤Èüy…=eÓô=�XiYóÙ�Èg50Üà¨jè7Äìµ�cM°“¥°uÆ J¨B £÷;Œ=d°p;Jpñ�3ÀFnÖ¹„]'¬íÍÎâÂ܈Ažøï‚ØêBÃÐu‘vmú?,4ÄA�쿡ʤ Åß‹Äçç‰s|ÁA�TO.Q6WO�øò �ý!ÜÆ.ªr‰o¿ z®±l Ý^¥˜ùc1 £«aé76d¥êKrÉé´]ÛÒø9¡2éHbK^ÊÚ(%ri„Ñð%“å'Kþ#HL1PübÈãÕ7,¥ª_°Îa0K%œ}æ³Ô8±†_4†Â¦†Z™Wm},ë…þf‹?Ì�,²Áã1±T«—ÛPzg–¹ÑÖ’Ô™}e«Tß:2)*iùÝ­Q¡5 …ÙäÚÁ6€ò÷¡P«=w³Þ}R¸-tT ñï*ñèP‚-È[¾m®†ÔTl£Íp …CüÑoã:Ñ_åy¦¬= P™à2’ùRñÝI_)õBÁĸä‘úÝEÔdìÞÆ(]ÿøÚ®y¨ê¾Ïë¬3ëÊ0e¿¾£`<¿ OëAØm„ç~Ò²&ékpÿ0ñØì°"`miÈ ëÁ¬`ÉkT�á"(ùd$ѯ°„Í'Å)ÔèlV�ó5{¿4½le~÷{�îÈ¥ÿp ¦Éd°˜OåŠÇž®4B ¡ÂCC“ô»†@ÔGGGà+«•ûÑdÖU¹oë µÓÓ½³uš„~Ä11Ù¥i+æmYâJ£Íøõ·8™I)õÎÇ0€�ü$ßdSu:Bá·¸y†w�ÿÀDfhjƒ:­±6û‚°º}¸yùëŒY½×Þü´E)é/[ã}_ Q'éþšÕ†Íhõ<Oof.©B¾~-y*Jú&”êm�C°&xTâ\LþMÞœ8=¶+Bú’ƒœf­ÃfØâmèW>ù&¤CújïE:ØÜ =Nuä· ýAáO‰z׌É8íå\ÅÌXt«-ô°6oo1ÿ8Ewüä‰]«XµžEéù–L=kŘ¡”~´�]R¦5“4;�rG8Þ&ZýÕkbΊ t^íTj9  Æ€o^ ‹?c¨¦Ëåm¼òs8ŽøšÝs9e½1qïÆÿ= `Txƒ€MN#«¢Bõ3.~ÆN7¤®Î­âƒpùý ª8¸öçŸO²ÊVm¾‚T'Ê$ CsV°rŠD909àQdšõB†Œ Ê8,$ºšº€ ¯ yC€9[TÒªºî©Ï*a’�·04ôÑØ“s*�.b QTÕÖ,¿‘Žò.>¸‹€ª¤¡ÑSº•âQÅ@ØìÎÓAÏÉt\„XI#*H@Øj¯¼’…@¢/ �@�^ã“>È¿ïö¦vvÀ «0»ÉÓ³yÅY š…4憢}¥õµù  Hªè úi"SQ¹æ…ײ;ìñçR5—éì¦0%V€2 ÀW�Š2'%FÏÀÞË}N�âÏÏx«â/'³Hä�C_)‘)¿"¶üíŠIçl*DˆÙ‰èž7zÊf—ÑÇRØm;›�®,.† Á®Sšè™ùB0¿öó…Íj�H„YcwªÒ!¨þ“sÆæ4Ù/g°ðÆâ’Åð½ß 1õ_vºßò„YW‚÷Ј¿$m—Ù:èU~.œPä‘wìƇ|þŽI�3'ëR“ÑNÎ?rζ'©&cE§I:H¯üÀÒåÁ×jùâ8 �}‡ií˜ó,t´í¯—í— 9â;‘Ö…$Ç]ù’\«š—Æ „1|nvTlÖ2`ÖVÜ ¦ŸÆ¦6qÍÀ´4¬D™fõ�Ø ¦Ò2Œ„ þNèøÄ•ú¹ÉÅŽó�r† Ô±seöN(‡™ÚZìýÂ@;ÿ¬9K·_Ã7×ÛAj8NjZlEJ�À"§í@Â7£œÎ4l´uWë–fU?kÜ�CmeH»¾Š˜õ#îu‚™%I�åæoiâ–Ü×…/gÝA¶«M³ØÍdääí�‡%hhh·Eä²éáÚ�y7[ï™"Gêî“�²²òª2 ]ŒåÓŸ^Œ:7�¤Ï)t¿ sLzë¯y¹�—:–žãzÃTòö†• |eÒ¼¹7�7GäWÆÞ��ýÕ®tÁA½Í*S=³YI¯�yy{åV÷¸ö”5ý£&M¥!‘a¿•ÍÜI͘GÍsÚÅo[q0]»œÜ•¯ÑûÕ óþ@œÐ¶íAº¹^™ ‡™k“”_º{ÃÅðˆº? sàœÇ{kÓ:vì±´4‡XUÒ·½ûªluöPÎO¨¥^é9¾s¹CœspýÞà4;"Œ¾&Ûªä/èUô2 ¢8e°§x“™KÏŸmá¨À·&­ƒVP™K>6sVŒŠ½? ôɉåþTçE˜T— ¯Úºl§ñe³î?N¬vÓÛŽFVƒ•¢¥~eB(©‘0Ä”E€*tB€ÀGzÍaª¡aMP ºPoÏ‚wtRú-‚ZæAÿaÚî ‘…ö7e�YÛvnå—|ñHPy×ÞYRÆ9_~¾ç}î¬ip¹"ו륆È=ÝðºEJèÕF&šìEDE'&'h ™d³‡‡×ÂÒôL _tá(€ãñ"i‹Ø"Ûã%ã^w÷êªNv22ªŠ“Õá ÿ¾(]ÝÄ„vo{²04”iÿ| *Ð.e.˜¾84Ò=SÅË\¯½cŽBâª�¾ˆ4�©\ô}ÁAýý7£Z(ú�p21\´Ì¡±b%Gjˆ_èÅ…W¼ËÙoäïi÷·Äle’éáê�³\б5z•Z âÙW›ò[‹àX'ZqlË+EtÖÖÏÛj͉òIV·ÝÅlWüºø+�Ø™Âp$E&)Â_¬iÍ \‹ºP´Ed÷i‡rÃÈ�ª %ìûœbI£ãßµ¸€€P•0Uš¡ê1ýȈÀf-ÔXs’Ÿy¡3CLkÚBÖ˜Áˆ²Sî¯w ²1©ˆ1¼W—U*;f „Õ9Ÿ¬ö…^\üºùP‡™•ŒÛRô�ÔKôŸXû/p ªk”Ó –ÀS2fâàÉéj÷`ø_‚f Ãüٺƒ“�yý_Ç©?„�jn}ã>kÿÜMQÖæþD05jYd)•}¹66/Γ¨CLø0jfõ?üÍ2o”­oµy#kØ]î-,9_oÀ½½6?!)·3Ȉ²m»�ª{ï ¼W5 }£¨õY†m§ã[÷ ê±A£Q®�J!Æî‘^>»ûõJ‚�.‡õR†/nu×U�ú+ý¯V6%Ⱦ˜65I9]‘>7eˆm.ô0r»Ê’¹Üí˜w‘Ôyœ¿KHè�J7ïÉÍååïIDƒYv�k”-4ÑužGsÁý� ŒUŠ2ð®üÑéÈý84|Ä£ùÏ,n]ÍE‹ÃØN;üƒÆ¢æ“ƒ±&C«·ê²ÖYå¹ W{{Xžïp.Îö_Ü™öƒsE¦1úoé1ù[·²ÓÛ¾?öc0yÝ¡Ó/FVʼn©£è¥"ú£Õ&ºÿF™Þ_I`ñ¤]›¦Ì2´~cÎy,»ù�{@f™‡È÷;x®ª�æÛ‚eÝì.6Z‘ñÅ€ðZþÈÒÀv®Â(Û 8öÙìcX‘ü¢¬;vÄ.rƒ¥TÅCÚƒgãwuOì#ái튯=…ž}½g Ï Ñ1³20£Q¥ÅÇ�­ì—Â.vÿøØÿ)°¿0Wýhš)8"ä—hfaê9’�rtÜxSw '@:‚J} ª’ÑÆºÊpßÍg“„ú蛫1Tšÿ…ƒ%Ò·Y2/7õ�¨sS(×zõXÇ/5d]¢²6¨œD)°ÆÉ=s9¥ôº\‡zçïOz¿m4}è5‰3ñMZjÚÞ@¯¥Î ³ü:'�&0ÕyšA©ÇǾ²­^XDL‡/v1ØxWÆùo)§þÆd Yýâ¢ò04HqkJˆ‹ÓŠ"‰Ìý ò»uT¯ ì™’~Ÿ€�ššB°SÈáÒõi¡eÐèÑŽN#—�¸É«Õt רz0¥'Ûør[òþàXjÎäÒT”ø1¶X¥ä$š»ˆ$IzÒŠÜVcêC·` eBé¦H’¢nó» ~£Ìýºé¥j¥&ßm¬˜´¢>œí5³nÓ·�ë~„F-÷¶ÇF>ÊÆnËf"ä’jè õ›ñ \Ð+{]…Àº�AgÞ¯î3¬!Ìžlú"eá#Ï,`ú‹ÝÏZïè´λ`鉈ˆFLª·ž´Ëµ-oâ,\($«Ù¬©Í‡Ôi¹‘�‘fQ!,Œ6ŸóïÕÒj‰„S*hŠýú“Ì­^i¢åbèJ>}‚žçuôFu=¡º{…ÈÁ‚ƒf^itÜ F&Ö€¯uÞê‹kÖ×%h–$q—/¯=5±Ô]O�…µ­W_Ü`5nuuü”Íom{==Å›¤6vN;)®n/î1²áÉâñÜÞDC1Ô”Ö~xN¥UDçß^˜¥ê¤7P[ï|ðÁÍÐxž¼ÀÁ`!{1>¹ÁÛ‹jq2k]³zÖë)á™ókš·BW±¢f¶°:,c-ÐtÍö¢Ñ|+qœ"Õv8p¼Ë6Æ´ãflN§A¥Íz:×±“6õkóM�Nw6£Î—D‡ÝcB]#‡ng"r–œ›b;g¨ˆs˜U$ :­ñ`GXû-þ®O`(Œ™=w¸�(ÚפõÃŵAõß½YªªÕ§ ´\€ïÎÎÑpÓñèSógN¨%²ê)YF| ýðŽanÅîZ.í7­L*¤ nÝŸ"³5‡¢Rz‰¿©F©ëÒ©•zÝ¿æ|)h}Ù!FÅ$­Kú.cm‘ùiSQ3F‘bo©øáç‹¢�…<‘<ï»e6uÊáõ¾qL&öpHî÷Ï„£Ã ®v3.´> E2&ö�¸ù?YœF&ÀÁÔ£kbR‰ŒEYûÕ€™bYï01ÈÂxb>Óe•�+½1"ZÄ4ægv @Î�.Å5W@QØÏ¿?¹KŒýâÁBÆ:ÚÄØ B‰ /]ê8—�TøëCßPe5U ±{o-moo÷,ä×�:gÖlyÿõ›8Ì-½{�9«{mc©8ËäΔÌ«ZΙn�¾)š=8#�åÌ ´ÍÇXªÝh­ 3+ßÉöåw88¬­­ÁƒF–?0>d6ÙŸ.ˆZdðMF/®§ëÖ¼ÈbÞóèÛ¢µ5WŸ,ÂÔí¸N\ù>ì‹v•Òñzš�Qµ›ÓÀ¯ý¿ÕµÓÈÍ=IЄ§£r%Tˆ¦¼8NðµhØ$W�Ò&7ý§±Æ"7étvÖ¼_R£Ø?èu_÷øßÌ}R•Ëç ø¼ÜcHñàPV]r7eëæTetË?mé¬:8Õ®¸Éyg>/Í�ÒßóðÝö%½˜p_ÔÕ–?bhFž®Ýí>ªÀWlðñÞ~ ¤vÖhv$Ñ.Ÿ•¨-˜Ö.¤|ƺh£wª8zxtLdáû�­·1íT2ʬ¿fÉ}€ºð~Ê‘È#dºë‹²´![u<¬x^2®|¢àƒÄ—„‰xذ*Òp5=@$@<8B{ »hûê#Q.7á»+’²I|¬ÂÏx ÙÖg'¾ó“¦§Äyë­ÓN¦ÏH'Õj–_d6¶srm®è®ÔÙé ±'(˜U4¬SK�±œ’‰ñ�n?I>ätùë(µ<¶Šè…JT âàöáa9uÃÿÚ$jtuQüHñà]2n»T¨ÚÂüã7¯.”ø€j_ÒKiYÝßCñЇrÿ/F2¶Ó÷ŒÃDÌL*4¹ I¸ß S�YÛÛ.l|ùR>‚v5st2½DÍ0Êîânå²›ïÚkA �bÐJšq?këå7S7ˆL®/?ºè‹ ç* Ü‹ŒÃ{N@ÆK²µÈ<¥pdÐ×—Ëiz~£ÕÁ.z‡{4*öï~a R—�· -kËN"ÍO1¥˜6}ý/³±>gwCÆY—!™óåxÅ‘?à‘ëgÖ õaØCpi ŸU™*ƒÜ±>±Î×”òÉ@¨ÝçÙñ½ÑXg»Ë¢øÈÂbÌ2}Y?F²™äµþŒîszY˜:׫®A ˆ%×F'wûH@°5ZeÍFNÄýiæNßñðšý©�ÃØ¸T7ÕÇ�ƒ3fKíè+ÞFÕǬ6us¦×ª�Ë|ß~ Ä›W;¨ÐŠÍcÿÚì!µxqSÔžlßÉAømß¶DIÆ·Ú¢ c71iå–5þ˜éñ(DJeå<ãBæÃ­›ž=£P¤¤gß½µé˜¨edßêù ;]%0ì·\Ä©DÿS€X§^LÜ"â#¿‡ºÔ7xÀgýp±&ZÒJa¹$+~_‹)44íÄ6›Ÿ=±Íl}î ›Ê³'Âú{tQcƒRêqE¬ IZßWª<÷9†Ðí{ÝW¼Ãxœþ8¼*~þ3˜/1½–.ý)S�wbŽñš[^0µ9J׿G®ÿªø(ùüæn4C�Çâþ£*C²²6L(Î;º€Æ«W†Åä Ó<îô.°¼ÜÆW%)sMog”¼Uwvfìß<òzÞ e�Ѹmö|ñ4)˜ÞM™çý‰EúP3uýÁPÛ8ºaê`ůÛàÇ’ËÀÔÜvÁž²î4öO‰›ísâ„Þ ¯k (_iÑé|Û¡“ŒtàÙèq½vú›“8›W²ò4Ýîó†Ð§Ùät0¥ª 4fKqæÂ ë-.)™6ãj*Ù¹gpL�+}�&‹Õ)Ÿ7cyyZò­´H3™ég¬¿ÃÙåHßâ±ÝÌz*.œê#=r~7q·á˜&ŽÔÙ\íæQ<6zòÕx_ßbʵÎ<”8¤5å·§9¿žÛ�÷ëâ3=öD„Ü´Ëb³ü`øS¤R T¤–7Sº ”9”=›¶˜Ê?$XÑ6‡ jÝOt+|�ƒíµÈ‰ÿgÚⵆÏ2ºo™¡‘÷zÄä…¹Ü~ ÈTq´vµ>h€àËòû€8§œÞRäv5¸ÇqúÂ4NÐfCIÍkRÀ*°Íú“ŽÁïª-ÛÁN«ˆä}Ä ‚\Å0˜žÜºkiXö¯ wåBû�%4h”Ìízú°õEàÜm†Ñ?><ÜLïÍ�5ù_®Q?}zxzâk7M¾Ú756®eï:iUD+õ`/èû<Ò©%ël­}´U¤£)¯^ÂöËTlªïß‹Þrœ ÷o�…^/½gÇQÞz›,Gáäj;±®Ç—�às5Ê.ã·æºæ¾—— sø¼dûou‡k`9 bgÿ”UXýDúDÐÑgPö~)x¯˜îbÕɬ9Ÿ‚;æîtÝ™ß^c3ÑÀ_Ö¸ÞŽk%çs Óø:å3¢Áá¥ðôZýÆ•yÑx­¿Ì¤åw#·øcš¸éþte3w|ÀγbD ç#lÉ<Æ*)­V§‰?Ð¥¥oÖÊc>ÔÖÒ´Q*†�5b3çª àr|ºÎýÜ®’ÓݸYÎöòXÛûƒ‘ ‚ˆ%% %iÊ‚=Ú§éÑûRýE«ŽØ#�ûŸ»ê/kVáºUqÔû>0’7€Dþ¾Dª±”' çÁæÅ)Æ�L¡…¿» ñM©joxý'Üã)WVGÝ‚‰�îé"¶Nòåön¤¸$tð–ÔøÈ7<‡t}Xx¾¤7åGk²IáÕFÿ§æº×é9îux5í@XÊÞtb=ý€ ]Ôêð†Ššúíå̇��MDTTTXxQǪR �€/FêIfµ„‚ܨÞráv9^h÷áX-TtŽ�—_ÁR�†ÚߟEÛe_÷:©�ojZƒFk›[mc»ÜJ©nTöˆý.I,â�ø¢Teº\ ŒüI h�ÓÚ>;M¿:iÒE•1JctP諹¦Ë@ç»På×np¬•}t‡»Íö¼vRÿOIã·êÃ@ý³q¼¨ím6}ëǰÓ{Ÿ¾�áþ‡m”F­1=†{/¾ îF·‹Í÷l½Fãd2'6&3|¬­ó#ïG(?BRÒ�Ç›£ ŸWwÕí6/÷õ6 j©Úä›fó;ÌeT+é:�àâ€!—>.þX²Hk·^ËÞ�ƒxµä~uÒ²0 Ï�­)ÍÄ0—Ü�/M/2ÿ)•C6QY5ã±rÚ¬žÖkÓ‚ÐE!æW¬¬öÁ¹â1€œã}§ÓL‘"4"þß“�”¨CY‚Að8·#ÌãáØ¬Åa�©”Ï+ŽãÎÎ�———•†ýkË瓈$^³ØÎÞ)B®pð€?ßMÛ°XÜ;ïU±lj®§xu_ëtM-îF¯dÕ ˜ØÉ^ãÖÖàªû[jŒ‡6=ÿW*š¥sø3œ§¥¹j?2ëçòøSZAA_dÈ»zÄØ¶sÔµ+«n¨¬hiåˆò\�hx†rƒ^½Ög¸Fo×/Á�çóU±?ÞØP a ÿ-ºÌ˜IÛ°4Jß *>“«y27+hýpÿŽš‰ªË£.OîºÄˆ йEdÓéÅ�Ñà—�…OÃ=;a¾f¤ÔõÈf$ ZœOÅׂèÇÎú¦þO)d“϶~A™ù,:gSùaBLX'â*#©Ä§æÂómBÿÖ³¦þ<  E%~ÍNQ2p¯Îaÿ-%.œ?øyŽ(} 2 ‡qt>HúðoAë¡¶™ö1wà7W¶è\äÿy¤²o|&ØíUo=]ƒûż½à•çß¼µï>x±·tûD™‘¸Émµa¾ì•ý·ÚøæfÛÿˆýÉjƒ:O|<ê_Æ:!ªRšTc°qpà¡ýDrÌÍÌ0á"""xµÅþ-ö‘w¥ï¡ÁêjZ¯Acsó´Ëò„4*Lïìììèh„L$$Áú·v9OT2ì_â–ÿÈjhhPTbggWUU… ØÉ’£AsÆŽ�°³×÷õ‰„kÿTTObêG{û,5CUË\ ƒmF¯ÿU+–F57½7–,µn¥§·Û´nÕäí媩ØbèFõL ½ ú—V¢±à« ïP•ÿ«•Æ»eo©CÐý_-¶èoIY À¿ähâ†ÓýM8†ÿ¬Þ}è¿,Âè8GûïÃrô¾ÔÿÓ@Àÿ­ø¿Zmˆÿ{-à“v®¬ZçMÕ©ç¥ëí|еÒþ©¹+ôñâ3”ß}¤µ×-âx‚³ƒÿê*ä�×ìIJ_fM‡Ï[Èôf=.GŽç¾ðqö#1÷|¹n»÷z’ÊÚfø¦F«ŽOž×ÞXU�b\(Ì~ßÔ¿gv¾Ç©àÄœï~’NEo×ÑRñ!ÐTP­3Ú¬Ék~¥.Q>ºxÜ€ªw`ð6V�¢ÿòZjOC÷ÆÃùdqóe9^êÓèâ�û%eÏðÖ»k¨ÔXᚸ�JÜ…p¹nÖdâSbögU-Œ{ŸêÁ‰¤Û²š>壯Üwi³�ÀªíåñÃ{‘Îééþ|oCCñoM³Á WªÄ^dæ8$žº®¼ŠN àeQÛq“xì…7›hÚÃ=|#S€„Ì=þûèH<°žýâ7ì§?ƒ<“2uâ¥ïÕŽ°èWÖÀ4Û«"êÄñ;§*™¦õ‘•°Hê¸& î­ç_)Ìs'ÎÉ„¼NGÂ’ÎÅ­iÉeÖì§ß§ ³A¨•®�Q­³ÁòävK$3_ZJ”/s¯«ï:�ÎàÍÂËÔeŽ’x—ÐÎmï®-ÖE|IWtLißÔVUJã[¬Ï ²i5{Ï>áÉÙeñ·�šÈ}.ôŸ4°¬Ÿ\'äÚÙ'_vÙÇ5¸c—ɘ™QËZ«LÄÿUiöýç�î¦ÇÇü:9¨Éªæ#4û–}äÖñ2°k‘a¤YŠ<@€€Åæðx±º Ðáx¬nÞ ÆMæÁÚJ(Ï8ÙÃàröV8œÃãv±’Nã›æÚªÛ9¢N6Q4 Þ]`ú(Û>Èlú®î©ä«ÌD:=�gÁ³šutµÂõN¯Ç`,É>î3-’dCØOÆÐ=· Ž$ Á‘jVT 3ùÀ­ð®Uì„ï);«sÿÚ¯VntÙݾm.>Ï©ás†BÎPŒ´ÞІ·Ñ@ié–4µhמKZÍú1›P ^AŒå¶m![ÀjôNvÞ[ë…Óë\ë'OGöñmϾï"D ­Qo¬KIÏë­ˆa»ÝlXmë÷z<6k`­y¬Õ^Ž^ú@»ÖbØ?7“ûÀ,ؘžŽ,)ôšFÇü_s†&'´N™›l:ü5ªØ(-mu+2‹‘ïÔž”[|„Me«éF庻֔_Jz«ò..°\ VØy²kúšjU ”Ýßc]µ¬ÒoLV¥=E‚öØk‘ÆW–©îØÀåè’«ss'¥ñO¡ÖðÉ£ëS•ðµvŠæÏ,«uÏ_OêÚ¸X~~®ì–•™��äGp¼Ut¤YÀ®A�®,¯ø6V9›x(2Û^§´ç¾»æ÷T`ý2[º¡ßÓàîÉ¢ÝtúS«-î¿N &RSw¶™˜òÝqí¶§^jçvg¿+ªÒ›3;Ðó:½@\Ä|ö±…øA2)¸³+d¶d4™Àæ™ä}÷¤Ž¿J¿O�ˆ¡“SxœCßítY$êßF²45c#3'"(¬žDÛý}:>Ìmôˆ¬%Ä·y@•@þ~ì´º¶]åE“ ý&<‘9�É1u-ìöý5³¢èᲞ®¸ÐîÒÿt•ñ³g‘3—¶k©˜ªKæÈ‹4"ö8q ÓÄÅ3>ï1´jÎ:ëú‚è(¡¦Œu .ʼnÄÜñ–€ÀÈ2†V—qÍg3õæ‰ê°³òæÂú_´-r¶¢ƒ4¯¶ÇµÚM—僾O'w£È^»µÀHoß"±ÅGÌÄdêdMtºA ¼´q¢7�q0,”­¥gù •§ô-‘æ�†`ÖøÜ¡ùV?õùõ©ãe«žÅT/çC[Y¦|�Ü1¸1,²Ü#ëG@�¹ 綺ֿ¶KŠò7Î<\Ò"ñ¤w·1hتü¨ñn ½_­õ­/ÊÐz›U±É5Z�%ßÝåÿDO¥\îtÚPÄl:–Êéùº™;ÚT‚†¶yÿÍ4Ëpy `"ÿ´ãÒMóø�ÓÆ¾,wŒmBáˆ0Ô ApÕe9ÅùbºôÅpü%ဪºtò(ÓÜ‘(¸î脯)”­®#êüîÎÛŽúPnyu.ù ÷")´µ¨ºŸÕï=WY¯ÕÛ¼'�ë,ðÌù¯ïl/ká¥YKª4~ù:)ôFÇ’ã~å6ç+Z^hw\­Q.Ç2ºq2 ðe*SCyÞµZ$¶Ż/˜®µˆ¸ÙE–anáq´2¤ ŒÄå´ûÌjZFám ¨·wrfíéRs€5ïd,馭þÑ¢c…‡òJ:s�–š¨tÀ“Ư"u¾ïðÂwƒßúaŒIøe°µHÑíhܤt]ÔE0é¿AIa5ÿ¥Æ‘•áô+¿çÁìLÚ^Ô[À—•Ï‚R˜†å]‰Ÿ©?æ—e]â19CçÐZ/UòåŒrLO7,óJó¯/FŸrÖ^§6õŸ-9ÕíYÙç;Jñ;“‚s„U­R§Ì©¬Cj¸ô%Ho …4̦²s…?vj‰�ÜE}üüû¼;û÷£×3šÍ)pý®Ü³±¼eýN§`QÛºp\Ã.Š‹N!°«n‚‚ÿÉŠlúI9_οÝ%™*"r’ž‡-ÖÝmgr²gr�Dö{Ñ4˜ŒhóØÄ�3®~Vcu:tG"/<8˜#¥rŠË»fr/éâ>gØb¢ø†ÀßVQL=ÿÙÄXôCžZÓV͸¦·Ë9Åøˆ£_‚¥qôE&U8ÄPO­2õfÀßÖá4z¼6Ÿôûhˆ]åõpÁUhLP#@¬RÁ×ÜëEÄ"›¨¦W… Þ–à¬~ú *¤«t8,ä‘׹ҲÆñª¢öS¢|ÔÝñîÑãé‚J@¶Xï_ª…¹“ùÚEÀ/ã$­¾ß±Ä›2q%¬l ‘½ª'%Ь‡ûq8UMSWÚ8‹Cê¬ÁÅf§þPÕ%t„&ÿ>ñiتE€vÉ4…úÏñ-‡…Rôê€!kÅ(—k´ßý{ mv·ðôº5e] ŽFºë®¢DÖIe]-ïà­ãMSƒLÒTH1¢Ç·*4Á&ÕÚê'Éç%àEl•T …"¥¡Ý,Ï[~ß¼D¯h”þC…¡¤ Î�^ÎÊð6VãÕô2Šõ»9~ ï¤}µp'Gå£�ë9ËÙ�ðæq:x¹î¤SXHHj£„˜ÞèàÅ2üš­�¹Eb~ç ûîä0!Ù¯³�~ kÑì~•©rhêæµ®�;’ÓÜ¥Á[¥¿ì^¸$#¸Ð?é„â1ÌñWçŸÚ¹â*æ–vòÀe‡ë^Î)Æ”¨–¤`÷Šbö!l^°sN„C5ò(ˆë­.�£Å”õ+gÏÜ- õÇ´ááœnüd[®ëfUÀ±Q#ch…p&Ó’)°ya˜D&Ñ5v[Žgj£ î ] ”èôª.Ï·Y9!¡‘ìf‡9kï1¹2l�€YliÏt†½29×T%j2Jw\•œÅy¢ZïÍX�ºsÞìë|ñ[¹&m«%2ÊRõû¢)%¥R ��&“ÚS³Gl|+éwšxl†B¤#S‘Ò-<É•„Ã0ƒõÑÅ笽I“±àc-‡ë…�H•2d[ÛFµØ¸Ry5ÿÅ2É_��cÞðŸ–ØE‹üôßk¼Ïºÿ\}CøæõŸN_ß÷œúŸ¶ èRýÏU0äÿÛŸ¿Hr!¼ôg,a„bLM é*œ÷³Ѷ{žÕêž;’Ä‚Ÿ«6XB}håSUŸÍWÍëØu[Ï—ÙMæ0«ÜjÍo˜Û¹'ŸÓŸr/ƒ¼â’uøËtb8’c®ö}fM_Kd¢1�¢ìoÛéì/yíÚõFUÎ\Ç/üÑô’¸oîT‚{źÖO‹·¢Ì¦¤ÿÏÞÚà^"®as£ª-ÄiTÝ’ãþçµ»ôí’»«¡öôe)îàv§ÖfÕÓ«º.EnÖéck «fUº–§ök̯už«s¦ìµñ5¯œ|Ê«ƒŒ‚1‡tÓ1ÏÓž‚k5 £ˆg¸ÿ,2�Aë…W'—\.s­E콊£"¾ö»v²Õh•ÿÍ#bÝ„Ki}‡œŸöa1'åô¢õ)èqçíÒè;²¶eñc7ûQº»ÒÔë±ó ÿƒ"ŽO«÷C—eÆ«¥:ÛÌÑ•îÑ=õœÍÈñËý~’äªî)+‹D{ùé땼%=éãË3(êµZ›´MR+¦šè¦å [úk[$ÒžQØÑj«�a×üëÕÙI­‹vón�±pûZ WÄ€ç˜ÓEö ߣøJr³bÝk­‰•ÌãÉÖÐAŒ7 Ç{EvŸ¬oÎêÅQñ‘‹Žã{>\^MÏm–Ï©º¯»3Ì¢ü/sⳞcô/½À˜üèñÉxîþ“äý%v¾¹i¡_¿t߆éc¯Ó¹/ó�rdŸÃ“-ò‹Iÿ#Hùâ]óYéŽ>Žù&eºbóÏ­{|g> o¶SB/žàMÝW•Øt§‹ñÀœ¹ce“·‡qÚµ_?o–“=ñ‡®3Jʮʧùc“ÄZ3ZTœyöÖÙBÍVSn{¦q¦ƒ›FËñù¦¯–kqB«Á&üB:DÎ3¸x�‹ӱ2Ç'¶¶�f}JDÙ%{o ŽgmÞº»‡•G:OùWkÆÅöÓ1/­q/¹:Õ¿ËÒ¸+öÌwc?u5³Ê®K Íh¿%;¾¸¾­X¿8IÉ”¥yÚz©ôá~,ú“`ü– ãÍh¹(v´ºO®Ûedb™±ñ¸™®Û$‡!x=X·èYšà8� gñžÿu{•:îõœDÞÕ=)È+$´v»ÄNËÿ¸Ã_.-{\øà4¤ñá‚Ý뇢·!_æ_ådIÔ.ïÚ½ V¿‘_ä 9¿“LHpŒÍ´~oümUDh›€È›Ÿ–z¤Ñä1»à#„¶ÎÒ½=n*O¯uýú]¦„„^-kr}‚{â(^/Yˆˆ$@¹:GMl& ü”çxÀÖÇ)þ•'D~m:\œtxíÇ�óÃõ¯!ôc�gƒ›;!,B×9Íì/ˉžºÝG�Í)ź­¿ÅBø5ÊžGw›ûWk‡uã« ‘'»R3$^½:¥?ýJ‡-8Ln ¼÷r¸{ò>LIŒ•ÜëO0.lÎñyX*"Ê®É0¡0°²in/,±=!ôÎ.v=!MdågÑŸÁH- ݬT,j–msïP=_ö‰¦KÍŽÿ�Öy/¬<=.÷÷Ã_\R2u’û¤á=´Vuøüñ:“=¨Ñ½Pã’ç¾H¿�Æ~BžÜª É>VhzÕõÖ´;x&'À:Tô)š fÃk»sÖèUWÈînûè>çúÖ&Üã»)P§7xŒAúœ¤Rþ2÷˜óOTLlÏc¬ªˆEby£àÇQÝ5ÐcOl»zŒX‚…î«äqªÈ¢3jÛkÀ'Nü’¼œ?“#=â–_þ�úO�uý˜¸V:íCþäÊ£åþ²|ò&þ+Á,°Sµ4i²*ƒîĆk•µQ‚Å‹ïMã�•(;+‹PBJ;ßí¾zŠ‹Îi¼—1÷ÍàèÖôÍú‰YC˜ ù�>ͶYDÈé¤Ëý.&5ofÝÇ:K(UL¨c¬ùeÒ�©’&d8¡À{z—ˆèÒ¥Æ9Š2½ü-ù-k´Ù~öÉ‘?2²áúÞU€$Ï%çPiÒ°Çø¢q,ŠÑjµ~uÝŸ˜ƒ‰ÆWMUÉÿÿjÝ(Ê&”lwÅï‚÷xöö'+øàjëñ¨O)o¡óó�_Îõ€ ¹�ìÙœÕëîÀÏ!‘Íi9ƒÝî·ÒFn …áÓNeîXE/Ÿ%òZi>¾Œ`úFÛêë'%z‡âó Dw‘å|ÙdÕ“7XML©�¯Öã¬ÄT#Ô1¾ ¹l;'´kD(M!¹ÔEU‚¨úú³]®ÂNý0†±{†z®œßýO-¿WÌc)¿vt/9‘„æ ó…Ï™ÏÍ�ÝGiìÞý½Z—4Š·C<è×kÒ½›â(›˜gƒá&Ø7àvµ1âcäÜÊå01áë{¨¡µ÷—ЃaNçù¯ñ·{"üÿ’#ý¿ÕÀçþ¿ÛùOH’OOH¨_V °k& ÷/ÍBìÔCúNó÷‹ŽÐïßH¡ÚÈ�]idú$¤DíëŸ?~ø Rûgvw BŸý[n<|²ÁzÌ\î÷}8Þí>]މ8ÿáÏT­åüß?+£�oéo…åÇn³rþàå˜òß!1ã{Íö[PùR]i&×Ð8þåÿtÛ¢¶�9Ólê7Ž&&&pMþƒV¾¡™Ùç ꕟ}R ý×ÿ`áû€8bgÚµºö$‘ ‘Úþ#¸÷0ÿé´lPÿçªâ¿KüÿÉÀ{Ç4ˆÄ‚ÇrDÜ–óÎy Fû�+�Ýn§,Ž€^Ö¸ÝØÌ_LZ"éhe•²L·Ý¦~ùéñ±E笣C@B"TŽB«Æ,Z‹NVB"ùh¥sTpøïª+þ˜Ð;#þp”57kR�Ɯ㳫ã½Û–M4 "«ôÊ•Š†N`üfKcGåÑm˜ÚŸï©ÛÚBt_Ô*öùOgß^6Aõüª®ØõËÀËíÁwà ýlñÎþ÷ �Éû7ç/YÆ€?OŽ\i’ñ4ú˜&�Fòý¹À8ÀÌÙã9DŽìæt·u}%Ø®0<(Ðó ìl3\±fÝ–c"u‰¶D« %¶º»r¢×!˜(Î=cxgƒ?ʶ¬Ê-÷á²{��FA.¹ÉIñö…Ó¼j§è˜ý¥,žO´½ØÕ�þÅòexùÒçfÝ:ñ(õõwmmm� ŽN£†‚œ\”6àGùüòôôôÜÜÜüüÝE?Áºã8/µê¦«?‡_ü_©k0¯×¿óRÖuÿüÄ{>›#Hóȸ6fUÍnŸ&©Y•Ó2\J”ÆÈ~‹‰¢íR�oHƒqK0Õ†÷° �Z´_>–jiÛÜ|!b¿\”6ÆþDýõ³Pémë ’Ãj¬› %õFEkÄõ,å!¡?}A%×")AÁZñsHNÃöQ¾~âbæ”ò¨}�píV8›ÿøñ«eDˆ6–•^Ii!$XJãû/eýb¸<²Jç¾ )’¯$á1´ÛމC30*$HŸÕ’~€™v—9No:&Ú3˜>RÞ·WŸ­Ç¿•ô|z¦ç]^Syi~Tõ¶-y�º’þJ±~úpcH}«`·§ûv6ÿf=œR A<•L6§Vº3¹8„ ³|¼kU÷éÃOÅ™¢TÏÓFÓÍðoøQõ&£ÉïdÕcp;œ)Âa·ç+0š«¤ò³,sdŒZY‹¯�î&/Ñ\Dbæ~ý«~mš¸mLLy¬œ£ùrχLÊšœE"xîwÅ­ 9Þ�£(?ñF¥ÏÞ #"sÂiœøxÛeÉ~‹ ÁísØÂÈɩïÖyiwIÑfŠÐ)�ö¤iöÉ›Ká5¼µ*Ÿ9Ðåß@*ªÑ¨ý±]µ$"ʨÕ»¿þÖÎ�;r†©jkS—¸D÷ïÀFœ¬)7<„�§Om_Üü@DtÐ4*Ës'Ò+B‰çºùðV;=V\cÁɉ³>sDu"´ÍxÀ*ÛnŽfFµ^æqÚÙ,öøGd “ _°úòS;s¢V"iÜäîó_º•1'@­ +.¼½2=†mmóã½E½™?U,7|–øž ¶Þ.0úʼn<Ï4ã‰ìo]ÓšœLª¶K�~ ôT•Š¡>~!¼¶„@ŽnUÈ£¨^9¼ì)(++{}õÎ’+”“rI¹;œ-QTT|·LtÚM,êsL�Ù^é¢Ç®ÁêÖêÕ‘ÊX¸ü^s0 -mó«ÆbVð Šgõä¨ð—/[Ü�ãÙ >¥M}b‚ÍͶ~†xÈݱ~ш8�µõ�&ÁÞ蓤ñN_ Ÿ~Ö,Q•*Ú8 6µ·2Uìä’¨Ô†¤Šd£Ö&‹mͨ€ ’m&enóɾ´¾4 ˆT¾Ù9A²œÞ‚¹ð>?º  â&É|ºEÿ‚?R @zŽ|»‚¬Ã_‹Äo&ŽLr�ç”ã5‹ùþè³rGì8Åà\ç¢ÈÄQE4ÉcßLŠøõæ¢Ek—)ñL›U/ñ�¸ªY¯#+RÏ[î�0áðqlœuˆîÞÞFŒk -œ<_áv} &zÔõ)€‰hn»®/¶§nyÿeg”¢ÒÒk7n Ö î•Õ”7˜V¡îÇOT×yÑYÞÈ´jƒë0•ˆb,©©xoàÊÜÇN\P&‡@Ôä>_!£ú5v¦ èuÛR££í›\›9q#«MÇuÞûoŽ$è´«MF«Œ‡w¹ÙÐkKÇm&öG,r¥¿¹|§K™K5”×'L‚‹Oƒš=7Ÿ6dS[èJ5ÿØ^]¶Ã“Æ#¬�0°—ƒ–ä´ŒKâ„^ü'68S‘Å¿�ÖʉŸúäXKËs[é^WâvÊ‹²†ú÷,À¬Iu¯³9ÞÎN4-±Ü+_!Á¬)c²zšK2ä™éxzZÃùÕ8†¾û^˜º­zÆpî´R(Õ(ZqŠûJÉ$5MàFŸƒžÅêþ§Š£gñÍ’EÝÔnŲ5YZ7îÛ#�ñ Uõ? XÏELÃëɦ‡W�ç Úf ½kó¹Ÿ+Î ©œ…’«½.æ-JŽªJ–^GÊâ&!Q•&�H$+.VŠÎ0øX%Ì/xÀ°zAô¢Þ�‹Þˆ- ¢Á,&úù2|•¨G]4gû„{8Kу´èt…föì*‹ƒO¶‰—íÛ6ý‰3lûürñß玱)+~;ÒMiwi¤éNˆç#¨”ÐÜu{ûB=Ítö£(œ€–0{¬dyr=$^ô]kŸ7}S‚™¼�æG\¾¨w.X:Dk�-…‹Ä® ’èuWã ;ï›�ÈÓøž¾qaÿSAû½hèšIò&Qž,jÑL>îD)$X,wÆRݱ4`Sv[8ìì�üe›«õÑ„îʶ|fF‰èðì,Ãa´Dµ<²”ÒE±VP» ±1Tùl&¨ÿ.[³X^2r*UÒ*W�Ï#�Hµ”nBmxv©Ö Cò�îÂ�.§Ñ”¨DAÝÈ�Y åI?r¼ð«'‰æÍ�§GÌUUç{TË´’lÄ÷’ÔmÔ3ZTmìÝm6qÑ–t:,®©R²–¾ 1cŠðòö[ØdôÅ +wCgÛÜ· û…ÌžÍT‘È™9;„ 2�®+·½r u™I#¾3ÓŽ[Ç‘FÎ|Ö5úª+À̰|¨êÒ9là!_$K©h»Ø›3Æb˜…f�…k‡hS&Ž�ªV!+ sBŸÕ¸ 7ÐÒK'obßI#B¢sèz·ò@cx›)@£dþh~Ž�(ZŠ¥pøº«©B,géÌÖ Œ p$ŠÆÊ†…+€¥ñ‰~J‘ýóÒDÙT¼Âôré�K‡¸Ç¢z¼ÒX­U>kv³3ˆm]£\XÃÕÚVÚµI¤A¢úΊ¶I Í¡ë¼=M"·ÞVùù/´¶GÎ_åë8<‚qb‡w.+�?+Èë3ðÌrH•ÀÁ�x”ö1YßߤÅ[:Nîç—Šmã<Áè$ ïTÇQïbû ð4ââG§â�:ýrsC Q£É?ˆ(º½½ýË\º IàÊp_°0‰â¯Iت¨]Øb–\ñMƒ_<^«e ¨_”#6ú†êv‚s£ =;Îþeb„J€ 7ÿÙsÛ�I£ñ'¢ˆI‹Í›&ûØ–éÌ)s­> OŠ{ܫ楻· Z¨•Z,Ï“[îV Ãó‹‚%sŒ éÀYÂÎ?w ˜ïŒó®°½—ø�'Rœ=† _\€÷t¬R"Yáñ÷Eœ2òàõììòÜÎgžwOKˬ|”K¼<v�7@ô0Ê.�ÎMY“¥^�£–s£.]ÞþÚ4HG±òláœ'"ðÁ8 ·j/Ĺ´ßÀ£zÉèj`&ybá§”ª|%£iôÙ¯ÑÃ̉m4cÐ88–îR»B¯G†ÿð¢Aˆ‰Sˆ!ãuÞ Màew\Æ eñgñ2%*ÌÒÉíàzŠÃV|óª ;r[Óœ¡kÄÚ%nT0 -[¤�§r4ãg¯õ†ZYÚ�&Ÿ�Eáæá9³RÉ´)®£tfÆè69ôL7º:y'ŸÄå—Ò]ÅYRÛœ²j}Él1c��ù gÍ ±¹•î¢WÒó0è‘`b„¨E;oß;6HMóv‚Õ��õWø2aßÙjS¤‰Ñêd¢;aJ�€-¦xòÊ/r‚™î“F,=¦–R·%•TõèÎÅBJÑf&ØDeU�cüŒqcfP ”(¦G¨õ~ó¥EÉê,?aÔj"Vw§é|þ{F¿>˜Ç{®\¬ˆ]ã˜.ƒ~ÿªñ8þðUâ+å°”KÔû=G)¨ø¼f&Œ¸f@!ÿ›‚ ׯN½B¡Ü¢ÛO~|a|qV…b|Õ‘7‰×‡àÙÜò³&t8(¿ÎµÝ¬wâÑ©~>áÀ¤*Ðp‘<|yrs±M¸¯½›zã}B@æ¥Ñl>ûéãcµó#~ûž°­ßu´óÓhJ 2³"œå±ü<‡Hrh÷<Þ•7u”ÏDYS&¬â7½£I$uì]=ðàP'„˜–³ ñd š²*ùï{ЀD‚$JBátÕkeÌÁ œ^¦àþ ;äh-0zuònŸÄô³�Ëô{ ‰N§µá6–štÜ*¤ëu!¬«»ÞkÌ´øî#æ�â‡Î-ƒ´wÓ ‚È”@tÕ“YŒ‹4&Õ‹j| ju¶˜”üñ·ª•UÕÁ&Éì•¡3µ«j&5%¦,@ÏÙbeŒ2õj“GÊêú|ãO¡—‡0s™´)§Z«•¨xš`êꢾZ©wQ(d¡zøiÆŠ ÎjPW~\·ô†èÔ.¼äa­eMËÙk %ü»Hyfu^'s¶ëñåÚ”Þ¼ ׇ~Aˇ_)ôç[e ÈÈd£³[zßµ*4•E™°<ƒ•ûæq›jc¦$-:U•©1‰´ðÙSš‰OÔ±Ô3ÜÀ¥àæ Tcc&? º„ATcðd&ÎçJ ÃÚ±ZÅÞ*šá* `í»1 M›å†i‘ÅR;«Ì¢Ê"¤ ÆÄÄÌ•i§üþ=±´äñx}BìüSàÏ{ŒR¿|òåË—¿»DRR©D½ô¯Š”˜dÓšbùålÅ¥ïqfl•—q¾�2ŒÚœ©Ü!¢è`ã�-B©ÊyæäÊ…ï°J•USÀå;¸_ãÉ�Ȱ҅I‚Gs_ß ‰ÈSát0•›KB¤Ñäd...þÜÆaz«É&•ÏŒ­„žÖöhâ�mî “!–C°ÎT™¬™Ëªd‰g “$E§ªÊÒ=Þ†RD-½c$7¬o¬P6ŶjÇuVp�²>ŠÖà $D­2ûö cïï¦�Ò—N½ßÁÿÑ�½–«k½UšNbܰ–|Ý´^%gûV¢°ë *Um™W� £c§Ëöp”N5ÌGÛR$:jm÷ é:ÐKþú¬C^ÎîpTÚ‹v‹ÿ§·â‰ø²†yÎBË÷fcÓf¿(F¢Ñè`¬¡‘,GqíÑÊËËkmm aÑiöÒ=UÊ´85=k”)nÊ`BÑ�¢ûU²ä—‡pg“ÕCïÀÆ­™N¯=xG·õ4ïÂõ�3mŒT2žŽùá¨Â[©í*‚í|X„'ý5¹7ènkdï-̤—òUߎU§dûæ{s= *L@u=»l­ˆÍÌÂȺ6z«=Ãu/¿_ó÷6sð®»kû]jC+í»yã—ú¬»1掖 «p^ž0¶°bmJï3»6ŸTKa8»Ù®H3øð0¥ü%Ža¾±ÙO«É©¨¹ùérg?J”ä+­NËßRçzƒàqm}ç/?\>ˆåS•N µß-”ôç*Æ«‹å1x—»Ò¼�¯ÔÅø�ø—Û™þøÏ–*’)R[WÚ—U¼ÿç}ðÿOwÖ¿½>,[Â×Z¿6މ8­,&·:§9¦Á&ÂóJCße8�;Óé)T{°arh*²šŠ–·[ãgÌÛ$¥pê¯õüä<꿤!áð+;:³(.Zjv={�â>«Aøzn„6îêØÙXê\n ð‰Çhi4RHS�¤¤'¦×dÔÕÍë�uµá¡eC$%TGÛ5ÓÓw»ƒd!…P?tãÁGf\$•E—lwòÞ{z7±¦41‰Ë0¯_=±2N±>½ “ŠgÑá{(�¯/8¨HÒl7©(4‡´¸§�hyĹÐñ6”ÅÇF°”¸2´Ù´rùX7'�Èp”Ì2Ï¥1Û^qêgÿ¬Sd39Ù’;ÎeÁJ>²p…­fRØ7ïœó¾Ó,ѧá¶)ù±S¹7eF�pýì¤hUV´eK?VâõZæX ¡n®²dÍ!vJ×”@ÐO(©ñJäCvOAœ¿^kvì+Í1… ��5�cÍ_w©¯™nÞ§IGà•xOl%re¬^ÂTûÈ mª‹‡Ú�Ù®Õ‰à\ ”ö˜¿ŽvïÊܮݤHÄ矇\¹46.ÏJš6£ŒÔ 5(ï�,{Ë$š�_ê15»Í½Œµiyž-ÉÝ{0›êîu�Ú>ŒpóšâÐK„âÓ.ñÒé<Ò~’M¿‘€õ×&8ãï—vq½†~NÕ-¤P)ÇnÜ=0çrѼ¾„ãCŽ~Úövxq›Üç€�Ÿ½~ ªƽèYÄ™žêŒ}²l|ª·Q“Ò†âß."Ð¥vÉ—X6q`þù’g9Û»ø#ÛŒϪè©"Ï5óåäEºÈµ„À€{­œßÓý�'Û×]1A—Ù:,öÚÒÎ7¦Ú~è{èhå |¤I�§þݾ0ÜOú;èæ06�b:ëüb‹�_k«_\‹Û,±f耊«DK ?©üý* »º5Žy]¸mêe}»ÏB’²€4>>% )ZМ‘[ÕYs9{ƒM�u:tHBÃ$çLì —db3˜»[ çã¾^@-ó•1r{6ªÕìß?Ib]Ö­ø7àÏc¦aCÃT#aîÞ{lœ<þ�½Qe£¦}«³Ê²FYÿ졽Y´¶ÛX¹‹†]¹”ÈIÐÍë·—2‰ö³ô®j-OØ'9ž¸2†Á²óÅ¥}­Li)H€ý˜ØkyJ?¨;Taêט՚‹DÏé(x8©ëÓP–±:Ë¿rB>FCµ†”|Œî¿eÁ{žH¡½åò,wÄMHm~ÍúΘPÆK{æ³°�ýùã©ÇÖ(ž¸ôÚ¯�Òk\ü±\ü!4¶zŒ!GVÅ%õÎ÷!ƒKJ1xÑN«“±-7y8"W{Ö%å{¡ïÑæ‚­ñ®cÀA#·žún›þÔ÷ßáq:²bÂAyUƒÞ)¾žDl‹ûXºŒñ·«-‹b'‚B¦á�àjžÇ½îïÎ̳‘h`;|$»ÓŽÂݬݧ Щ,"ÜŠîúìÀéã2Áuïú•“ Ç±öê³SÕ_ŒVçC¦Ð.AÜš{÷Ãvwx;GmN½— Ks;ŠØŠ,!-“Y§Ù朗I­¿ãeÿ§§žx–³åFîÎ4h †UÒŸ:Ïíhút�ŠÜíæ™ÛÖ¿ý ø4©Ù,(j;£‚[OA-5 y¾hI$²çŠë³Žú¡éäãñ§v^äP?µ¤ñÄý®¤p]›ëb.ký1ñí|ŸÌ÷!§A®§:\\Ÿ«9Z-{M"Z,±síçd­ÿbc×X|˜7‘C½Ë9S5ñ©Ý•k�6*L“Ðsͱ–½isØ”CuRX[Hè”>­eDëK£æ²{£e.¥ÉÈXì5wÁ%221ꣶ©f3ÔsLÎxö¥kW7Ö·6¡,±ö•¥Nä½›Ku1¡¸xBüã“wzÄàiõÀ`Ìx鋦֭ØäÄ$Jö¤ŒlVdä/Ža*â"‡Ñäƒcè_‘óhÐÉê™§ï…zĶ;×:+¿\.¬O˜ÿF‹�DZàÙ˜ÊûÁ‡œg$ õÖP–´�YDD—¨D…»óõÆ©Æ~ŠÕý‘An#–wsÕm@˜b‹uÝ-~ä}8C€,Ë«#iÝœß B=¦˜Þq—"¨äZvm$ìªn•†1©Óñ ÁÁþXVC7ß#)ÔcF8Ç]8‰D¿&Ý÷œZ82mØŒcì¢I4ÖE¦còÆS(¿“l„^M Ùºå�C¬žÜ‡„ìSäÄg'OE8• f6f|I§ë÷%’`ï2»æ®—GòÁT ]èÛ… }úʇ̈UÂÔÍAn»³OÝ3°|™íÌ£êiêPFD¬µSb°žÍÍ1À88¸A’æìùvßÿ÷=„çQ*saÓÄÔ5«°Â†Ý\v­ðµ¡ÅÔ/”ùI�$åÒ˜ó�{ɳx¦4k›6µ×úTg�—Yd¾Ç¾aµZ*§ß’½�:åü¿¶ê’Üô"Ï› ÕØ‚￲Í]ö­�h¨¸‚ö³�Y‰Ù�Ä�èëz“(§yNzø rPLƒÞX?;^©¹>õN¦ÉÐËG]S^ñ»Ëâ#3ÛëˆØ˜¼3V·+І!…•h›G²ÙБØ=Íß!ÿµ 邸´jù›ô © ×ѵdXFç–8ÃgåÏ·=.çŠâèàà|ÃâÉi£¸–'ÙyÏ*äôOÑ,—õˆ·.¸%\Ü-ñjØMj‰FB= eô´UiÏÛv9ºÙº¿‘wÃq¶ï‰UùŸ·Q· („inëuœž$ ‡SFèvQBÔõË«¿ÑSgV; ´Xt�=P˜™wÈ®gD‰$ÐÉDË0.,¡2Æq0äÇÖá˜ó-‚ƒŸy­#"LéoQ¢0Îoï«óAA‰o؉“M{WB~k��uwÅ©-v¤¶oò| ¿L»]¶¾À&YÎcØëDŠ‹ã'¼6\F¢ëçþ�‹í�·c¤âpì›{�6ƒ¯&¨ˆ$éÅ" o3¶%açDûQš¨»á�Å ¤‘óíÖ:ÿŠ^ðxx¹ÿgÈ´Ñ‚d.Èâ²Éx‘ÿÉMÙI.EtG+² goï15>|´f:¦N#}&Ûß"Ô¢§lC0“WlU9xããaVŸÅw{�¯=‹kîßê¹5«}b oE…„ÂíH\"fÑå#‹Ä&-L:†íÇ_”á7Œã°¾‰OæôŽ`[†Ão®x²K=RðñÅâºÿ†¦°ø…BedkT @F¨áhýTâŸ:¼H?†Ôÿ?á2y.j¹õIÅoǶŽï1§‚AÆc_¨=\ßȇ ö*ºîórDᜠŸâ4¢e"�Wò³Án’t&Âm¼uƒâ{º·‹Ã—BhµoçàžƒÈ´�:6lŽ…óç¿%›˜ˆÌͳª6G3T„¸]Ü$ñ:›6¹RVÕ¤Ü(¸8+,Cæiˆ�ü®W1¬y)—ýZšðRmŠDDmrç¿kô2«7uJ©“ílôc°Þþtœ³–ûØùöÀÉkl,m×Gµ®ÊÈ|Å(D3Š‹ÑŒÞ.lø±ÆÒЮ10…$%9Ä>PZäÜ›«Œ�œŠ\ ®ý’N©R n‘ŠŠÀ)�˜d4ù¦žH3BÙ2豂@â.œÜâé9–•„ƒa+ÿ«ÌÑNË·¤e:°œºÕO ¦;Êþ`~ÑîØQç"_Z�ÌéÈ�c¶æ¸–t1`íöѰ–¼7:j{];66©³3zxâ @,E¶dHŽóL¸¹t8 ÞŒH ýû?Nžüä‰1`X³¹Ú"JaÃA­€ëè"ƒ9L �ô­Q¥Eoççk�€ ÿ$KI˜) •¨4- —�⹦Oœ$#û:"Í)ôœ¯ùë\È;´! RdžÀÊæ2ïvý®Ø ÷Þ»ºVmW…&óöªž2\‰ÁåŠ5ã2Ö¥<&öu,iu— u‰ ?–î[vÄUÀúQIʃ‹½š¡ÙNÞ"MßÓÔ5ë}l}ûƒó’ô)<ð�8ÓlØvóÊ(¥[úûr”Mèz ýÍ,B(Hït„Ÿ‚‚—0ùèYyµ»ÂfûBÖÐ奕íÈHËê%šøÿ= pÚý" é½Éü5 I Ù쥢lçÛ&iuè�¡Oxxi|W¡gj¢^çuF阤~Ë.ÿKe´(�Žƒ†ÊýÏËI!sã×w Î÷‘ItF&.‰Ñ¢¼+¨6¸ÌŠíf‘2ó@©5ì¨)¯êù’�¬dŽI&1d㼈hfS‚Ãod'�íi”�›A@·¦MoÅ�ÇÑ&PM‹éôiSßrâJ Qïbùõ)Qú‹+’“«/ªÏøb¾Ì`ñ1Ç"ߟÓÉž� ‚� ß#ÅM Z´ª8h½¦|·ž¥ÂM±¢>»™¶|tàuœ9#’Ñ¢™*ÝCCC†ßyŠ’¥ÀÚ‰vŒ/ø1µÉS4¡˜ÞÁ9è?_±‘„ ]hº»­ÿ% !a¢ºªGyqë<ƒ·æÚŸ#à›�¬®Ä3;~ u«Ñ Çh€<Ï ¸sñrszÛãÁ§GÊœ¹îš@¹6ÑÉÿ9Ä܃%…È�ÒÄý©³Çÿ¿¨Çâ%-&öçÂÍ1ñ?ð‰øQ ¿3Ì7Vï‰3¾¾7”ñ4îùùy×—ÇÎ”Æ �ââjÌ&‰B„~�£� lœ³êwþúôá§ê¥[‹À7†úÅÖó qãÑ‘�øö÷,:‘ZÃ4ÉG¿ïD0P~�zç�7G¸ýðððïÂlXÆ õÏÔ[´jߣõsssýý? U؉~ *gÁí\k°‡¬ü³Ž–Z½Î_Ôª Óá�åB¨Xÿ<¼KÛSf-!0ð_ ¯Öžþ/@çÿ« ¼GÁhD´‘?5ƒ{‹Žkâ ¦n7V|œò ÒëT‚O=¶UÄ{›q$-`êYÃÕ±ãË<ëõEÓoºtÛ�î#¡23V£˜k•µwG¬ð£'Oåäyù¦;6«.gadâ±:t¯ýóÜ}4ã^‡«M'îB´Ñº¤ytcÔ4kÙó Û_rTz‚rùšÆómiÝ3%ì3/„wîkÃ\¾èš³ÄÕôÐ( ÷¾Ý7ÝEó:·û|sH8¡ÇHX¨cÃ]™º,Ý̈¼”8Ìy²*/%.k½ÝÁ€¯�›ŽkR‹‰VV»œqyá�ƒ·ùr×I+ÜÌ\Ò·²¬eXX\diuв"[FŠå Ü>eëù-싪žääp­rÖVL‘ÂÌœõ8¶t^ÞÜùSqÓnüذPó%LXƺ±‘Ô™„„ô¸ºíËjÝ”]·ôlXW)=ªÍÉœ�Ýð= ŽfÙ>ˆGyú*wàmû*?µ)ªS:µ÷Õ>õÉÀRPz6jv®EN¹–5 K»à|Ño=òyP¬Êÿ‡ð(2»¨Ð6xõB–«¹8}˜ÄˆÛ²}x{B…²‹©/Âqø'^³®mŠˆr­ØçaQŠÐ�Þ…e®ö·œB�eËrHÌÐø.þ::ü³è­°xRûR«§$òž³®˜[íÆÊÜú$ >oëGZ´Æƒ¿""F“„ƒnQqm[ax¸îªsíèH“j¨,Fh0]ûÝf™ÂõQvÏÈÃ2þb2²üµ¦N–5t:­Qà�äé’uÞròUú’�aì�ŽUíœ{HRâ�uw­’õê¥Au…ÙðžìN>ó;ò¢[!M‘ÃÑ�‡¶ 7ÖÑY$.¿Oø^�ã­kµ¼æðÚ‡¥MÂðœ¡á—%°ë”ðV²pÁy¹]mrH{'V` ðî–OIU™+õ˜��¸’Êý2ÿŸ7„¾œÈ¼^¤_ó÷vvÞ!ô~mŠ™š*kê¬ÜVe»ˆ¾ŠU�ŒŒ�Ô+ëxSü¶sýk¡H^ö›ddhx<iÅnN{YÇ|Ü3‹ŒH@çNÀ|¿[ɦÚáê*GMJDEGg¿Äkç}ÊíwÒg²SXÜLÎëâ’ÞlÊ=7 áR66—Õ%ÉG •3  GQiFžº5Öœ ïøO(&2j19Ðçça=<䀎ÀEœß{Ë1낲k¼4T°Y‡ëCîz`14/u ÁK\\RM§?§ÀÑÔ¤”ø”.íõ–óÙ•�c9+µÜu;·3-— m— #‰Ð0oÕÇë:magdý6^þˆ«K�ÄÆN¶5´%·d·`i%µW`€E°ò`,+ü?ò8q°ú4´m½š7~Rèþâ§bÔ¥ùä1Ú«õR6йªù½påõGQnmñ—_DU¨¤Cë»0¬ ÄÈ]?šÉ_¦ýÚ_êéâ]oÒ?Œœ"‹#*~EjrX l�ÓnxÙ ^`Åi< =hÅk6¸Fq]íDÑš¬;A ‡ç%E<žÀð°ŒpfôH`Pý°÷Àq,]¸ ز,ÙXÌÌ,YÌÜb²˜™™-YÌÌÌÌL3333³´í{ÿÿ½ØÙ‰31³»{¢¥¨®ªÌ:™y2Ïw2¿®$ p.|Ù¿æivUúG¯Ŧ¼-¥E?j;›³Iì–¤~LÙŒ‘¥T$ oܶ�ø ÑÑJ¶[ÔÖOà—ÅLS[kމ–U•WF‘¹1-ylâv‰ó[œqW«[ �뉾B‡Þõ†NÌ×mÄàÁ š—š¼NoïÚaßü¹Çésp™'gbVO­<@A‘Æf�GF5Ô´n`m¨íK�‹vŒeü­ŸªÿïOÚbSßcIT¯µ:¸ã5*Ý9èÌgçSŽ~°œÉ‰X(éë�¢¶÷ÞóÂRÛ½¯ÜN¨>У ¦*Ðé~��ŽG0Ç¿xÞkôÆ‘Í[ÝÀ�£™ §»a�¨L‡e“”j™¢o-ò‡Ú bh8]NXЪϥ4Å–êOX (Ç_Á#§^¾¶˜»j†­ZM??é¾½¥(<±S,Õ·¾8Õ�_ì�,ÄËÆFˆÆ<Óig¨ˆ�¯ÉÝt‡:JV[Ý,Qzï+’üƒvþìê­½`JL^ö8vÿƘÁÏ[-¼oç í�µù;‚ôU1Û·ˆÙ­'é׋…†j3½Ò²æˆnÁaô‘¸Òa™•¥Ùą́*Ït#¿Yiî†ÍCÅ×;.Ì/O':cSó4>ó·¬ÝûÁª—Õ+ö—¬ÉðV©g¯X.Ú¾àrqÉá~¤ÞfÌoðÂ7çä9,ܧlkr:%Î[L´¥k‚jÖ¼  �§¾ÕÈ}w­®v!t_ý_Åù$gà´9W8Åä¨1`õ„q+ÁźÃÚÚÚl·~Ù\mç�धYQ¾ÖÚfN01WÔÎHŨÜüD —#÷*¯·;©96SÿÝ׉uƒ_Pä�é7´Ò`.±¦OwQDQ"÷ÕØ¦’$6›z ôY׺9�?[qÚeE/¸£ê¢Žý½Ûî2%�¼îþÞàwaµdîrU½&;?±Xc¾Ò³ÆY"'Ìc#Þäb;}жD:ÞX;êÈHiuɳ¢›mûÙÕjô2ïG$óëÝn*3ÚUî?æßl*ƒkUQÞšTBÞ²4U7ôãiø5ï¾%`\=êžMËÜRßÛ-[¯)ž1D⺠Öq,Ö‘¦;'&8!*¶Ôåüa[µÊl7zO¬“ʦÏÔí›�NF­²Ò™„dÏïö[¢‡êÈ©èþŠ`²ghY9�õ˜ÉRû›£š©vræìô$›íñýÇÄú[ �íšçÎþ¨'”_KiÍ»JNèWešcR� ¹ê€UáØJ½LQÚPæEsÑ2bçÉÖ�>½ ÑRX±>Ò¨Â(r-„œ2•IŸ„»�œÓ˜$U]Ƚ—�O´¼ xPÝÛ/Ž®®Õ­ÆiÜöûÆãÉŒûòZz…c ÉwKŠg¬ºÝ¿¿Õ.X…(Yo,qÚÔO.ü§'✨=ªÝ¬Ý�íj'/PÕÖQ 4oxïÌh}×S]a5žu3쫟i` u˜ªK±æõäm�|KZ‹Ô ô\ß—ÚªXâtö~ù�ô¤K1p;W5ÿ-T‰Kp‰“çìú´³Â˼‘NîØ¹ýªxL9.;úF£smŽ�Ù»öæMþ:GpåèÖ!½�…'íý¾¿"0¹µ¹õ¹!æ_”%x ·€.!.tlVñ¦ž™ÞñQ”ad-£½’sQ¿¿áïW f§(}yòz¯\¼/'¦«kÏ ü@ï…†Xq6¢QkõêòµÖR­æ{ˆ›®·x}è4Ï K[3Í`NGCå \x”2ÁÜÖp>“ÑMZ~’™™a¤k$;«óþ8óFC]v@]~ϣφ.°Üx/^òœzŸ�Ôßä.ÛÀ­´ñ09xÞwš*w‹ß.H¥¾Å©•;¦x{×QµÝcAã¾)mæiÔÙ8G›/ІhTo&ÆU((ë³xÙ‹å 9uls¸¿Ý ¿k{sÊÈpϤ�ùžqvk¼ û¦FW¾R:Ô€ àÁó’û0Ói¹Þ¹4®1~®{²À[«3³ÿ-yr¦ç/Áœ �ç±Éc¤6bðVþŸz$: ¬œ½ë%&Ô Œ@ßa5—�¾WF}¬£Í“£ëxÜ$Áj‘øx÷•n%™(|«D›Ám›µ|ÞŸAÑÅhx9,¼q:“–Ùè`9Šžþ¼ûm Í"äôM¼³1ßñØø¥2óùl£Ë&æýmêXÛËà ãøÛŒQûõzŠî}¦åÚèú«Þ½ß‚àÇÉÇaì>s»\mRÃÛlþ¤“ð÷•YKr4Kµ�#çTÇ÷ÒÕøŠþ‡� ‡!“rèÎ%èÍÖ¬<œØáª<™Èqwoe·ûñ»ëõh§¢—¤o3^õN¿ÖÀöÎoX¬á>œ�N,xÒÛÍ�Ÿ_RgÆXƒ…îRëñ�—!p¸d�Fs•ïé–ëÙ=ùwf•5Ë.oLK9%ç?(ÿ zNíÍLLOþE÷‡œ“‰ÿ¾Þä�ñ¿,ª?`ÿeQ¾üºöÿ [Ùþç�u^ç'3�Ê÷bìY¡tK BÿÉ üÐó™…4(”óÔü7ŒøHg=ü/óXŸÿÿ�ÿ;7Ò–kIÄ(()))+/�åcˆjhjÖ«ÑŒÔÌ'Æk¶:IÅäuРÀ Ãô„áp64ÿú'W—¿-ÔP*�}´µ5¥ �ù£¤´”ŠŠêíí­œŽN³e÷ü¥âµ"VT<Ô7g9h3Wôm=—+©ƒöß´|>—õCÝñw$Ì�²ÚÆ”0B}°Úk2¤×*"ÿæûæ~isæ—ð®P:gv@šv|Rs›àά,íùq¡ŽØ ƒ³Wør4!�ñ$4xZX(ƒÍ8ëO¼Õý „f~þàˆñ¯FÏëD•ÆH^% ”ñâ{“ÙÔœ³Ï‹h¼M²/s)Їü.;Ë]çQ»"g%̹ªÕz‰Qíàú–ùAj3óAíúž® Tp¿•¿‚A‘=+vüÅë}uÍ úÆ Dsš€]{Ÿëö›h‰Ö½¨ÙHW{j–)hY{|eÍA$Eic,µþ´ØÒâF¨§±4Ï] k¤šóüâ|̧}±ÚÎéPöðU™�p!›¨=€…&?çÇÃcó0‡�ÎùÃíD¡k3btþëJ¥Œv»¼óÅ:÷–¼of:Ë´ÿñH'�ƒÃkàÎó‰cŠ1‘`ÿz)5»WÍe >Bµ–=*gp�h‹åÍnŸz‚ûÛþAm?¥[í¿ý‹ã–­ÀÊ.µÞ ; (È£Pz»�VÃäì ›Ùqz‹WT¡Ñô©™xB@+ùDêÌÛ1´ ¨³Ýž@Ki'ù¬!™ô½$„«›Œt·�þðåþÆLÕëSrBÂF±ZÒ%Z×õ½=, ÃÖå—ÄÌàF§ç7/EËy4Þ:Íù/x®R7^ KòvŽ€vé•o bˆ°˜«ù¥0úžLηì…Ã¥Çõ¯—w ù~™^¦O×{t<Üu·';{Ž@ài�Xm†§éÑô^ô ³³L&e½Š¼„²Œ§7«Î{¥2-Ɖœ²×k©@ ÃÇ•RÙã´ŒyÙÕåZ)ÊíŒ6­f‡ÇSh­†÷£’öS/î?µ’ʼn;r)÷ÞÍÚá(SøS•"í-S[Z¬¾£¬Ü1UM}Eš…ˆ,Üûr»ŸµµñCf~O�0ËØœì­…Þ™u�Å›•5•DžAvooKµ:m{¾ŽImQº¬ÍãÉŽð/]ý†³óý®òãy¡Óé’ Ï·[P§¤YÝq'€K`í¡òú̼ñ$x•+ÐiýNX±Îë=UørQûÇ—]ŒÕ¾(ƒVƒîõvámu$>H£½ÀDƒ‘6yÐ�4$²Çi›(øÁ:S¡ �NeÂêû‹ï”%*)_µÒ�€´PBú궸܆ý¢ ³ë[¬ö°zJwëÆiø§ü“'Ï‚«]îa»Æ4<- ‰�z‹­KhБ¸kŒsá¢�:¿îKi½w£sQI3V+k7 XX÷V�¯IW‚ÖMöµ»Ú¬\…áfì_ç]Þõü�~\ýagí°þÊ¡Á÷U(Åíì"ÄèhoK[í•[¼Žcý6Ô‘VcÓDæç�ÖZŸzŽfxÔ—’‰·h¥ÌÆYcÚKÆ4³ºnÎ�è TŒ•÷'�Þbÿûª–Û¢wøŽ–1õùîû‰L××p,Ùò.ü°é°ãK«Ùã‘OáØ¼ëáA¿kÝyÙ9 J%n4› ^éb�2Sž�©3Š”šlü<˜�¶Í?¿Œ±nÜŠŸŠó.3¸ ¶_¨˜÷¡72J’¹tà }³ŸñJ¥>h5Š‚�wÈ\a�Œ h¡*}Œ_Åá4ËËn09’p8wò�É–+ŽžK"=½­Ç»µ¥±�®ÎºvXðX6Gj ZZ�‚Å$œÎÇÿÎßæ Ø^˜>o°×dÈy³ž.Vë@V¼fÖž­=›™¬·å]?È×ɼÞöµç&ÐeΊ¹©wTz5]$ËŸ|ˆÀát:�Ë´nY•=ÞI|P•aw”÷ofàŠVA[Óö\ò]ùƒîáðƒ3úÅó(Þ,XÅyïg1×Çn°ÿ¹€’b|¼óñqpÐ1 Ig›Y4S¬Büs¬2ͨ ¬hHТl­pí§t|¡AÝìÖ¸öªÑ/}Y“Æéx%Í� ›žOýOi|:6g''u^žG“å $�J§a~Œ§§òx¶Ü]@£ÑJ¦±M--- §ç]G*�Tj0~›«—ãnnj¡(m#u‰´kϞছ�Áw–úãýxiiYïH Éß"²;z]"Ƙ‘¼ÇTTQsøxe¯|! ìýþ�Ì;JÚ1<—zœ†¥•{ÓRœhÔÎfô|ZøP®t;ò÷Ù—uŒj¸Cq>gžàÒx2îNÛ#К�ô~ÜþÐJCÆá)æuØæ•ÅÄÄ<_ku¾ÚþûÓ¨ÚJöGß÷²͑ȣ¾ô}â­˜Šw� M éÇÈ@ûÎWÔ ø¡Ðæ·Y:H8?OÚOÇÚ~X à�oö¡‚©”²0¿ ÃõUû…XõïHüUGÐþó¿5wù»;�3¢Û°©’VT±�åscç¿^éëV)¸íúüšÈŸM=â?‹ßÿÇ"à¿‹›µ�—ããc5MÍ3�ü AA@R5ÁÒk¨¦ŒÂÊ•Zñ†®“YüÒÒÒpV €¯¨²ò¢Gï?ïߪ“ÓÖ¶nï«ïíi:ù�ZÏñû|(pã`ÿ_US#¹Æ¶wÇsÞo'ÚÌÌÌšb§ççï±™¯ ÒFvh\Lú+ï�#½(8ø¦ \·³öÁ Ñ-f''?áA˜M Üñ]˜ÛÚÚ¢é+–SÐÒzÝúú#KëÝq2˜ì}Ê©€ï(›ñ£ÈÕ ‹ù–¦î�ȯeûŸÜ“/ C•ÒµßÊ)#âq8 ¦àž2Þ× sŽ‹_>Õ™_zj~!Á•y:KVý0>ƒiÕæ‡ù�n*ÿþ_.ÀbQ&Óþéï³øèÖÄ'y×å¸%eV‘ë«f[½…s}CÔíƒþS�íµ“=~hä"îÀ9ð-ó�!ϸ MÌ2�  ôÈèw{AoÔ¬ãÃ69– ÆO³kê?C­¿ ȳ¤'ßÔ36Ò8_$¬¦ÅVõüX+<­õmíÚG›T‘š8è‡cžý/~ ¹¡\ýh™4²X¨,“ñܹùViõ´t‰«Ö¡‘–qyNW2�-Î^±öXçg¸þ;gB~Z&~­�ŠÑ/~ç¡r'öbüŽ˜�t÷ùð ÝËŠ ¡—æ>½`¡Å�ÓTE|1ĨN@�IUâÅmŸìÄÉ)Ý”4©æÔ†9®_ÕnG¼ ƒÁAÿ’ä 'ó’µåTàYXf—Ãmû|‹]ZŸ°”T tbÁ°a]´÷â¶úìÑ÷¥~š·£V/ÆþÛÞ®*‘Q\ õ_"í¯'÷<œ5Ê5Öc¿Ô³¶6¤}?^" J"ä–*Ê®ë`ç°Ô4é\>¿5Þ?óïÝ:ƒ“z�&S!±ŽTo¿|áyïiV·nÃÕ{X$Š÷Ìx×ÔqîYHØØ.|ÕÛkŠŽÄ~¿S /”V”Q­#wëËÙ@Œ&y8û[‹Èʳ†, Å-çÒZ&È@K5øQŽò«½1)cv åê'‡5#Í<].¬;Åtn¡ž2bè÷öDû•ýðV㙇ƒç X¯$—2´¯ùmÊyí[`çe úm¡GÛõ?+}‹Ü*#äT :È¡­é® ˜¢½ÕXµÅˆ•öqD—îÖ/�µ3Í�«ï�$½+]Usþ;Ô,Ǥ´òÊËZtø9Ò΃,´¸ƒ˜ÍùÆÛC´Øôîv¶–kôSaî\Õ¥D�|Å»‹ìW£Á•t�ȶõ*ªú¹¨ô¹îe_ÿSOÞà–ý6Z`Ñ'�¡•…Þ¬T^ ¾¢,¯7=³£ µ’«‡²¥hGÈ{­pém®�7Da,v=„8êɉ÷["ÆVb0¹i56–·0'ÌpWNânÒCcnzãÁZe¯Æ¡Ö¦o;gS~Û}§qàdÃ%†z«õºt}<'cÁòï6Ò/ö”ìêštJêèOcìÎÅ»Óõ§ž�š%цÉÂ�BåZ¨‡Ss1HñÆ™QeóËêI‹.öN [äÓY¢rî5ƒf$`²k¹RIà�¢Au½)UþìŽÀüþ'­ÆL%%³R•¾º‡Gq7fÊŸ´éÉÑ ·k{†A²ð¨J³UtZ>Þ#×Ã4N²F=gbØTa›­Ý3ÃXpd¤F V“›º‚c¨Üu=²F3‘¢ú®­½¾r€IÑܳ¦h²iæ‹Õò5£3áÒå„`q2‰Q²J_{ô!øjqªe´Ê}"ø®¾”“¼c~òUÞæ8"ÂIEƪŽBɨÄÇc.£°,©Õ*�–·gE³ayOì½ÖŒO¬wnT4Š1¥Ph_·KgÓu>>�ª÷eû-tãÞÉÊò¹}μ°¤…õÑê`VÕ^»ó˜dolþ£Éò/¤xTÕ›Ù�A@¢RòoDú𭓏ÕS‰F`²¬´v ÇYsÜÍ`c:7z²=¾sCh1†+yT«0Ì„•g¶i­Å¢3†•ó¨�l-ŒŸv›IïûIE�úuÆßó Gj€~õ[¥Ûž#1뜊¶3†+ûH£M“áôpÒ(j•qI¥ò5ñ'zÂ$m"ѺñGGB(D^W¼ãå&zj‘aöEye-Ze OÍ¡ó´“v(d§4ƒz�Ù³£7(¨„}½Ec¥¾(–Ò8¾[ä]Ÿzz¿Ç@ãð¤ƒÝÚ0¾ }g¡ÉµžcR„þˆFi¾êÔ�5b>�òfš÷}W2_´7ü»‹í^>ÉŒBlök+¸ë’�ÃCê‹ôéëÛjÐ\¶ñBÂèFeT�(-gÓß±(ë ÅÚÆš ¯ƒ³\}'Zt±nçÖõéf»žw€sŒÐî€tÉ+wõˆÆ£ÑüÁ´RùžW–_Ou9bV3vžÿkw2áóL©zzLEþý^nŽO=Ë÷Ô¤“ XõûþÞhì9ä¼S¶(UTôò3¹¡à¼× ÆZí‹e¾OOⲪ�4kb”žžê¬'•trH‘ç‹q²Ld,>õïæR·É¨zoð¬—=E×d3Í>pb¦`Ó™ nf|§FÞ_Ö©£M*tÙKFßt¯âæ.Þ×S‰BñÕ”o×|‰�e«?´ÿØ$ˆr½ë|»ŽÏÑ3¯�Ê|>hœxuN½+µ§Fõ|tBEªãËÈY²n�M©ÖÕü�6%XWíeþæJ$7-/cjlú´Ÿ‰Ÿˆ#ÆnÃè²£nΜF Å b`¥ZjÐ0dñðÞCóöZ‹$bÀ‘Yº]§¿»?p”Hë¬*%´³?5h…Nü}mÍ0!ÑANF(WTøû�G²ToèvBÓ›ÍÎL‹Ï¤T²÷„X›œ¾\ýŪŒ3˜„Âûõ27g(Bí àtŸRßÈ3® e}#áã7 O6F¡yè¹üjÐíðP4·2ïFOœáu#*u˜Ùqœ¦‰åJkо •P2x²4åÞÏ'0³/È2Ë9Yú"Mæiž@DØÜM ½%‰°áb@-³’‘ 'ÿzÚì„*²}$hm$7ЋOBô�™Ax–æãx+¡z1¹˜8š*ß78F,:ßÈñŒvÖh_IÇn쪣+ÑÍëüvž.h?ÿ¦+áãÛ›£Yé�Âí,Tæ¬Áé+�e�—G“QŠL0Î ‡óe3;à› R9Ñ‚ÊC‘{/œç�FãR•%�õ �ìçB à�ñĪ({ƒñ¥ûéHX§°)ï1\ë=�g‘c”NÖõoŠbÝ4¡ÝºÒ:�×öÚ(D�êÔÎ$1ä×_ÕÑ‘r“9%<³E7ÜèÏ“ŸÙìç¨`3Ñrè3)è¾KLJC×k¥“̧×òÎ÷¦ØU× ÆÌ˜ÛICÏO�ŽBÝë-F{íK-\85ïw+’MpLŽÏY Ã~jÕK¯x ïÖ²“ G©jâ<–$¡s­=3Î-OÑ.«2–i+Dbõ¬¶‘0½ÿÙì‹EöJ}O>°}ß%iM®ç%î±`õ윳EÚ&ƒA›Øó²OöR¬©–<žÜíö!¬c#Dû`:^�óŸš'/½û”R’ŽÜRØ_=bh5Œ–°wÿýÚíFDÎÉóØGÑØÁn[~ÕsÞXýn&ÙPÊ=<Ý`ý´¦Žg”Ù(mj5È-hO(À„�@�½±xfݨdz8Ûì5žp|¤£yçê)ÄŒ{ä­Ñ©w÷¼qö˜êuÛM#ŽÆùt¥v’>QBá¥5/к�ÃÊÚ½,4j NÆæ‚¡èwÆåÚ ×õÞêß5ª:¬­éŽÏ™S(F†fR ýÅ�àc™o©XP:ÜDž÷æñ^;‘ ¸l{Ú�:†(B€§6Š"¶BœTùkò ªJ‘)¥¦¬¥ßj÷™p1Ú&p´ìŽõR‹Œì†‚o†«üùÅ‚TÖ×ÜÖç–¾©XDÈãàô¶�ÍW�¯Môm»®ó‚lõN@©¾±sºúÌR¶hËoI¼Ñ´:•W' ÛWôAUÁžT®$ËËíý=}ÜŠƒè.…§±ºQ­£²iÏ¥þ!‰Êø·šëÍíÁF<4�š7í"�à®]wó¾ñ«92î9õJÉ…Öøê[+õÉJM:Ű!=3»¥`·�fƒµ##2•pd ³_ßE™võ+«9:ÜÃ~ÜéWçq;u|9Äh=›‘Rg�I U5C°æ˜…gÌq§Çĺp¼t'¹Êjž] ûwÌ1„tY†k?nÃ�¼O5©„†zŸˆ{dm|:¬ˆH…çå܇:'Ãh�ÄFGEï ?>¢·¸Ãá§/;»¿ ¯xS·UShÕKê–3ªVOhõÚçNQ&ï‰tB«då®*±”¤~¾„»H3³%á§·½Ë|îÃ[Œþ%¡ô™¶]Æ»Úü�³ß15g`îëÜy B9Òr©bNת߱�2ùyÊ™2UôX{eCÞ°o™þÒ�ÕÈ®ÀõT�ýÔZO»«,L´þ×ÀÔ±ÒhÊicÃaðé…ÐÀ¡Þ|ùûAõÄÆR�ÌփǮ·¿“‡¹$’ŬÔòêËrŽ\¥“÷.N;;)+‘ûoÁ7Ùèìw'k*½å äìvyaz S:¤ý®èètju3j Óø„z=,áq÷7´EìÂSæÎèÙë¼PÙ �Õ~ò¿ìlç“GÌß«ƒ‚Ž�†)v&æä^¾<;‰2 Ô L½.kÙ.ü\S‘ A ‘ÖælÚž¤3¿¨VŽPL€=Ï4xµ”o1|]=È%tóê˜Öb°éQ®ÞMeÜÅË' Ô¢WÁª¶™P;O²àÔQu^×W1Iý6é�õ4L}ºî2†·e•*׿ª® é5ØÊ�÷:_½fê:£½†Î@„yñ|–Ì|ÿ:Kág=¸œ�ÅÐic\0úqQÁKd8¬û†� õ5ö+ U‡„+ÙÝŸ Kú�ì´½üz�åR¦%9¢ àüœ‚¦j¹Mã†ä ”pQA .´á–ìÁÔÙբƉRÁá÷Û,k�ËÙA”·ëŸ…?'T�]) Þº-SÇ©ÌÂæ€4æ^òmT ¬šêÑVÊÊp¸oëÈ‚ýë³Têócе@”¥g'ÎÐìBP\òý>çü�×}éÃ8T²®½þEð½œ6£_øíÛÅf~©oâ<2ž¤çK{×ýÁPn•ÐÊž|�pæ¯A¼_OF°¹6�Þäèe&S,Ed:š:öiLJøï6ÆJß—>õÝhgb5»-4з/L³æiÃD4ØgY9w_,(£W†ÛçF7ÏÛ¸K9�¬_@‹ïq KG HÀ[Ivš=9 |ÛðÁ梆Fë”ð$“âµÚª4ú Ó4°Ÿ/t5:ÙûZœ#LHد٥� ÙÐQü-CšŒQ½œ¾\AŸI=((“Ažä!Èñs®QPyǀ׳b#~•è€Ô[Š5Oi[ƒÓV�­Ð!ðêýÔ{}Š­¯_2.¡•œj¯ŽÆÐüåËëÍŒ±)�a!³ÓCð¾úYd>6~ËìïÞs_ °7üržÒ@5Á9px'ZHÕ8ÎïˆbF"ö4�‚EKFÇÙå�ÂÈÜ-î ¿�?çðáÆÐxÙ�{®¯Ò¯}˜†yÜÒ¥Þ$½ËYt¶�©6)iL±ñI”�?ïÇ„º­þ Ã6'Y=0{AêFƒ„0Vué!ÖQ È”$¿Ê¬Ý97ç«°aÈ-L r@ãO¦·¶ ¦ÅÞ îûÇØšŽ2•v18}Ž VæÎrþÔ((¼%Õ ƒª,PÈ9üâ‡p ¡\#+lÿ|ë�“’8g¡N«Ã¶½¹ÞÖ-;³—=Y�ÚÀá¾4“±§¬÷p(³¯ÁÁçÓ­»Yþ6¡Œï ŸüÙûvö—GÓŒÖW»Èj‡óœànÏ*©¥©/°ä‡ v¤‡Á²‘ps¨ß*ì~‹ûá#!Øê÷GâR+;óðÔe¢‹¶W‚¼I¨b¾Œ…/=•ÍcòÙ��hUòÔY$x&¸åtiÕ¢ö‰|©:Ý JÓälH»½ ]n£¶1µ˜í´î|÷ÇG¢ïqÕŸ§DÉKkuº+�çTR`•²G›ÜV÷ƒ>0îíP«¥{›(-1$t¶ ÙpÞáO¿ç1zß>ûÒPÁÁ�t3ɃǠiÚþ¸`:DCÖQ-‘¾šë¬sS»Ðáæ¬ýÌYºÞJ…d»ã«Té¾þKxÈYê!%Êåhq…†�žzg›ÙSÕ ÈDº=gØÝ1»ÀpÁ2ÁµÚu�„ö+�®¡¼™š�w­3r¶fÖì­c¶ µÙ'Q+’ TÂ~èêzÞð×Á#l•‹Á9^º¥÷;þۤø7 áÃÔÞ¥Dy§Z„ÜKôbèÈp(� A^–ë?�Öoï¡ûÉ�œÃ¿e¿Vüÿª¼f.}±Ñ©­­M7b§©¹Öîþ€`ko¯� ›Äï—±J!ºL7RC=C¬J�jll¬¬¬ û7§9߯¨›[ÿΘûœ›ž;”WVV–þ{{{,¶†R~?Èæ¿û· Ê JI…÷éUw蟓«p†:�•rñS:?0Ç|…PI‚Uô‘ÛäÊçMf3,´ÑþnIöaé¾uþùŽÅ2ŠY¯.--�‹‹keeÕh½aebbco_»%¤“-Ÿ�p|÷¼Ÿ(_(�Îd*‡—P iñH™r‘/,Ûà*“�ÑeANµ?Ëó‹ÃeÁxÔ T<=ßîN.V›íÆÓñ¼_«gn`08'³E"q϶t"×6ù011ËÞ*bˆÃÑé}u“:he½Ž�9ôzƒV­Õ­C Ñ!«©nËKJ(W}ñoÅZò¿|ÿê¹4””%ÅÅGâzÎÎ>>>Õú<Ïvg±’}®®}FÉA[s˜á¹JvØ ÎYú»á´p—Jš9ÃÓˆ§ÒIXh r&�Ó9$$ÄÌܼõ=¤âÕžw›×››��fæHM÷JŽ9. õˆ�¥ey`à½Z=ôþµµö––奥%úlpÔÓX`ì”NÑ�o¾BqΤºªÒ]7”táÂåÛ¸ÌA òGœ�ThHœÁ¥¥rv:_d�‡Õº‚úÐÚðöbµþÜÜœ¦ÌÅÖ½÷ûë9J-±¼®•V2>RáüØ·[Sç¨*E59käà­ú®®™QènìÉBeb\—©——W®Häyô5À!Ñq±ÊQ˜�Œ¬P·'àÎ1;Ìñkµ@¶Žj{D‰b<Ú‰Ì>ꎨº[~¿ÌÁÅZ:)™1Èò×××Åó¯µ?ž»tªÒ±V‡†LAúŒɰ$Kîíí�: Ü·o®qÚS~´ZmE ”ìöNNç¿Ö•ÍOŸKµßJ¨‚yŸs­úZÖH0î }G/—³6M�8•Te2³~vü`­”$ç,VöW ò�øh9ƒlB$R3¸(/¯—#íqªöÓa‚R-l©BImôΖëºÃÜÂBkSS8êr¨M!úŒ®º8a ܯ°%bÈбôÕT™Q ”Ñ_Á[Ù’êÚÚV-X�d [¿�LjøIÙ G‡Á ßGð’¨D×AJI ¹ƒŒFϧ-2<5}9µQ² ÝZ+3S‹’Š2™DKŵ§Ë¢’LÆÒ¿G~p¤€¬›~«6‡Kp~{“bŽæ¼ÉÃ%GGéÀª')-¹qH?ìB\r|.®¬¤£¤<.ˆ‹‹›]XxP°h.`w¨q¹3]`5súŠ4 yXpÖ¬G! �ršÍÉvtUzX˜X�z–YÝÉN57\hІf”c0›Åõ?4Ãj¯›H¤“T‘N]u`Ýžy>^BÂböÖX€:ÕÛËCæèÁ¶¯g=/ç©“!›£Ž‰‹Ëà¨éÌë[¡T*"..fÑ~JàIèþöê©GH­LNçŠÖ| �¢�_RÀP:ÄûüDa.xgZ%ìl×ß\ §~�^ÅbÙ°é�' öEËþ#ô欩ªfk(»�Xõôµ}(¯éÑRsùîúh",^,<¶Þ^©³÷'å¢þîz�Žˆ!*)ÚlQt-OpVÔ{µ¯–l¿n‹D¶¶ˆŒ®`Ä&ÍM•¾àx6 ($i¿‹¾¨Êï÷/rûËÉÄZ+((8¸t–®TUÇNd¼Œ2NpÝŒ¦%¿ë¯qbãßíDò*)(Ü:`dZxV_q½€L³Õybl¬œŒÅΙëau‹ÇúåÜ7q‡¶-M·É¶çr�ª{>hw¾z7œn'#ÔeCêÀ\=iù‚hQ>¼ÚdK@$ð!~û�°q̆ÁñÝ‹ÝoÁÔíV„ÅÎѱÝùbTéî`%Ö§Ëo–tX)P¼îÎú  Q°xs¥‘éí½n{ãLå‰ —áRYÌl´RHJ´®bO²?NÎæ_Ϩ)f££º©�`¨½‘ª)tþy(Y/UF„y}%…ƒg0‘É»q6ØÓ£½;êz÷——&/¦––gþÐh¸× ·-–4]«ôèúwwšp©�( Æh»*­ z sñ—ïØl6øì´‹1Ñu¬�T…+ZÙÁÿžs4ÏSÊØ•ÔgMzÕ®eªR÷«ì}%2…o yÖhgp×Ç‹šaNçr~$œ—�PÞ@§/AÛó_,d\�ÔŒ–r� ýmühágÙ×·ÑãF}è½0ÏWÃ�œWg�¯ å]ë^ëç‘ 2Úmß‹]� p½ä"VŠ–°:V¯4F™wv°&,ƒî‰ìfÚÚ|§§;ÌŸ˜½z#è:W´ ÅßÈ8òdIX¸µ¤«…̬�]®_Íàpé¡€š<2FŠ3ÝûEv°¤„Ž­ß 6¹  `ŸHeQ�ÓÀ²êЉé°tŒ÷¡•n.¬á`U#d-þ)[‰BU¬|Š�ã®U9~B%”ûVÑ#ë£>£!tí~Šý^ ÷®Bc/û‚}ãD“%WÄä ôêÛÍñ:.?ü(©Ë’¦üwl„ú�å¾´^—vmø# UxG‡¢¤øl4ƒP|ª½�îvÕgÞ•X·2I|álXÍÚ}ÿؽ.»àÞí‰û<*±Þkþj능g«Y„ÌýðZ��eƒ�•úîTÉ'÷ìÙTÃÃ~ó÷”ßøöfr]¢CWnJ˜�<’k3B4k�÷AnR:¶ÇíbXé5<¿‰ÒG™OPOÊ2qó~8 uÈÖ}%Ü©5�’ŒJ!¡¬“g%ú!ü_.€¡ÄÛ:Í�[­i¾•©þó‹åB•ŒzVfA�ëfû8ì½#8;cÂXŠz³2RJ^"d çdןß]…bleæI�ZhäŽVÑä 4: gF›ÓTL?*2®ì«§ÄSAô=-& ¨fç-@×Ü¥ÎãPÊ*^uŵ7C&Ë^.ÿ8ó ýiÙHWìà-PÃNhëUxÇD.ˆ•ùèûàU¥œ úz}$ì~ªJ@Yb¶Ýâ±8*ÃŽ´T¡¤SÇü(«¤W–0KÀÎò_HcðD«�þ؉M(±GÔ—†,$ù¬ª ÜÊH"JéeíQŒ¡'s”®Æ�• cÑódJœ2ÛÉ/éö£0u… •Y+)io* ƒ¡•$Ãçç`7?`?™žiã þ /¹9á¶t5.X \AÞ&uï¥Bµyw›jN·³¾Ì¸FîК{Ó,#­ãXÝ÷�3Áz:Ë‹-_(èèn*›¡”C|ÅT–ùü±Be•� \\öÓ},lI �»2,LÊÒAÞ…ÅXøÝW¦Ò^Lj R3×5þ&›­ÒåFvýôþË5B©$ø«ÚÌT©Y ?HX7ý…²²²ýÄ…Jm^·ÛC_è¶¶6\ÊÎë0¿¾Å!*ÌTîÒk¸ÐPÆ~œq8/KR‰ü@ù…©¡Jf¼2¶ø‰:/�'yj–º¶ñóYêè¡ÉkKþ–’/žÅìøcÑàÙÚ4+bø°»±²²²¶öÝA.¥¾cçü¼bæ( s9pÄÍrILmvùŒ&3z<Ú¬x|æ|>©T—z¼ÍüxÊÌȈ¼hùÃ¥m¨J¨×âî³ÃðY¬�· ¡ð›vç¬HŸxÿâ6Üþøê|]Ä¢i¶½\l­DbÅ5¡Xfé�_£RüùF²QÄb p,¥)†g†¸=‹4a! ÒuFd,:éÃJCMørT‘ì«k˯*U‹tÛ÷Èm¬¸º'.v±~÷{κc\ºãN~-É»{ÇÆà]IR©f3õç•U”¶“«Pö˜vËèÝ~S��AáDZæný--V°=:ʰN—ƒÅÉ.FM78ˆâAÈt?ôì!¿�ºâÁF(¿ŸðX×–ü�€Å\ƒRRj8ë°w69CîÉX}Crh)~[¬"F.Ôñjèv°"áÎPyŠvM=!‡iø‡àG÷ûh\¢ù%4\�Rõ!4r°º|{ÉðJ³×ÄÖŸ8œ:§l¾JÉõ!ƒWjZznBzÛTV Eö`[SWû9E-»i±Ê¦Ý»÷4•6gýi-ÇksÆæ„‘òa1éqÅþs®c±y”ѧòP‘y˜F¤¿Kƒò(c«3xÌõBBllÅæ©ÔÚešoE1ñpê šŠ¸8%¾j0Ž=‹ÓRü[ª÷!$Û�j=Ò…µׯÃÂKoš… £6¦aY†nÿ“Ñ/§±²X¥¸D¼¡Ö9:ôFê›õ¹[8Qµ�ŒÇp—ÀšùL÷<ÝœˆáqË9›„(WZ±åý‰è¤NFŠ%^«ƒÅ âøóH¹å&u>ÊqZ?¤ed rò¬¼ò•Yj±½/;\*Eî–˜Tûù¤Tú±H¶Ä¨kMñ³º@§ºÌüêlõX¹›×ù—#ùïP[ߪÍîT³é¾m¤Ô ŒÅP˜Kx¨9eÝmóÞmì�OóSWz‰³jP:pÕÀ·WZÖ­ë".±·…B˜ ŽÇÁË»—4%`ÑaðJˆSÀ.'¥mŽÉ)¾g”‹¹?æ-ØkøµQ«íW dbBú-¥˜„È,Õ³I¼P;¯l¼&ÍUŒHó‘¿XIJ_î—\oH‰r‰imõ ?}�£ÒC”CRÓ4±V·(y?�ÞynJ%†}b2R\ÒòKÝâÖTºê­HÝîìeµìy£°šT¬‹ùxé¹ùù–æ+mûR”ßj„�´d‡† 8Xæ/ŸõlÝÝõùö(F[ŠÄÐW¦¨¢o*è.¹8—û™!åH[+ ÍQÂûH¡I‘­»Ê⋦õHÃj�#â(<,�(t3ï)�#=ÝÝe!þýKGÐÉr=eÂmW­Ò¹÷˸±‹ÇÇG®ñÅxÈÅÍ­ˆàþšë’À¶‡ŧÇ"B½¹w¯6+Ûð 2ê8ªAÚ¸ QêAš+(X%¤ø}ÔA{ÔÀ"UB9ˆ@3)7$„èÂÆHÇ*ŽƒÊ™¯¾Kjøªó£‘ßÌ"4¥ÏvÎÄ€½Ï_ÌD‘�„ÅÝ:J/æì„„õ‘0�ŒŠ(» f„ �LûíLê)š“™"2}îz999zÛˆpXÕߨ0e>íÖøÙF³Ä@[8ã,©ç‚®Î÷î2 `íp´l23–]Õ$‰—nI¢Ð¸Š>¯zðxIÊêµûùµ‡È ê¿‹uY_m÷+ž< N<_„¹.íÿù¡93aà°µ5OÓ#�vH¢�”¡ÞÊRd«S¬¶“ÿóÄ·¼+¨°? æHMƒx³}º«ƒ  8¸ý;×üòDó±Îê‹Ô³ªaEÌ|v:¢Ê¶� ;…úôÖåñ]4Ý•Bå”ôHÖÌJÇ®LuÕA�ô¬g†Œôÿ@¦óu_NQ:”ƒãø- ¿21nî³þÛ”ª¯æhì¬4?©’©–qÊf!˜I§K‘—7ùÌ Í=|—VÝxiŽjo‡'7�„™MüüÊïþ¸½˜–�Äܺö W™†+ââ–™ç­�…ÞyéJ5¹ü  ? BF@[g8�#« ýZK«±W)ŸœjÍdõÖØ]¾?깟\踣i¥ÙâѺ!•4µáè8DÑŽÜ¿ªÿ$ý·P–“ý¯±Fš@“�vF†´ã“òð™‚!³¹0“ˆú­"fÌy Ô Á¤Ló{u‹5g×q˜YþŒlÛê–|ªe´ìt½Ä=ÔŸ›Û–Œ¶ðé£Vi°uê©2Ö¶vvn\`*¥.õŠL+] «fæ©•s-WmêΈ·5H¯¬ whý²_®ÞˆËÀ) �±á¶³ÇîO$þŠq€ÕÈBolwG\AfqГ֝½¶ 6\C,Ì›®k£‰™1Q‹É…ºÄ˾8{½DZÔ¾¿¿�µûc<½ðžŸÇýš}þAMBXD-{âûz‘±dä×°‡”� nŠÈl¤I8ÀdþŠˆ :ú ¢~˜›mÖÜÓé›TáÍÌçÊ+â˜Ïüð!±úИ±ƒÔ•(ÁE%?ßT:îöͺøŽ7ûsì)Ýe#URMp¤&å ½ÝM…?=—d�ÜKsGX¿8!âè§ÞÅߪ$Á¿£+ØïÀßÍåR!“–tê$ÔaŽÆ70’Ÿ6å+'ËÃý~pP 4Щgùâc14ô³ìÑØ›©‚òð胻ͪWuUª@F?ØÀn¯I³¶Æ¬3-¬/ *껄0¶è döR¦•ŽŒäÖóTGUåùrËDª$ˆë‹œãËrõ'¢@y¤i Ôåôa£zz½€lp�2µ0å¨öõTÊCVü”¿Éùn‚<ÄFZÆ~;yÃÄÍ™×¼ïØ…aÐé­çjŒ.{�PýÐXérË®ï)"^ß;•‹¬ Î{¶H±§~ÔÕzÚ�'mζòb’±üVp¬t+y,�Ãu“¿¤Ú‹Üñ F�?K�èO‰Má³zÕEnÜf ӵ¬ós1€®}·w¿vÐ<ªÝ{Lë‰Ù™ÅÂÄyóõ.%%Uø õί”Á%ã‹�@OmŒ…VkùÅó›ÿlao‹Õ|�è¯p¬O•²NÅ‹1ø_ÓÆ`„ÛbÐÊ� ÖV<Ü™=Ê++�9x~¹9tp„ó{ÿ2AF@ÐlÒAß;YyÊz¸Ã1œÔÎJ,$¢;„ÅÔ–jëó³›9O¿áw6ì‰!H‰“/þ:•HØ6¨ƒ5⦨»/A×Άó"KÎ*õãÚ¦Ó©©äèa1�¬¥)¨Ø½Ç¡°¤ÑlñýÚ•„„C&UgRúqï-ãàn'ó剴Ì�§ùø|,} W$`Ðè´Š,9u454ŒF“þ†¿ˆSaŒ¸ÎlìQÝÊÒ}Œ†9&,b<å�Þ…×pP è¡7w û†ôSZ@ï'­íup)¡D)hwý"¶Ê2$þÐnšÞÍH.éN̺AžÎd"¸ÃF¨Çž¡ÐwaÆþu".9. ­‰Y7œU„xß"˜Â$]ZOËN¯`ᙵñÉ(÷>žCHx­…�„ž™ŸY¬Puüt5õN�p%®Å�¬ÑŠ&™¢J«€6N¹Tqt‰:p‰˜¢•öøñcM|•? wC ¯–U´._Äô¬-ÆØA"f¡±M|Ê®¹-&F \/Œ 5ÔsOÕqrzÁ7!$?™36†aNŒ®î°óä)§�ô¸önxS4õÏ!Þ$q-¾Í|hõýðC;¾ 'š5{„þçlÎF¿ÆËK²&EWUÈÎ˦Šu=šÂź® „þéñ{!b<.•}¼i^¹ãÎÙB)ËFíÌ{Ç8¯ÃÉlMìs÷N¥&¯½ùÇÌKAHÍNKo}ÆËrJÎÙ÷Ì5f!Ç!‹Ü?®�e*x59%.ÞÓã´®ê*¡e.tërWø¥”üUZ°GóÒm1~9òJõg1&Þ&ê ®]û„u:¨lƒuýšããã1Äwn�%ÁAóŸ/\>ºO•=Ö`ð.DK=i¥D€VvFæ5íœNF""3#œ<^{;‰ÌõhëW{E‰�·$9XÚV‹YÞ´®‚?6¼|ÇkÎècˆÙ99yMN§rWœþ4„G´ˆïîÁõee}yQ-fêLª“`æeõ�÷™¶ÓWêÒmy‡©BH�•Y€0_‰ß,uá=œÜÊùOb}þ!¿‰èùVFdòëq‰‰™<žËN5'ÇÇǵÆÒéõOé ƒùÙY¦Î6÷+iéq�™¶µ«g&…c2›½>^Íó¶¼á­ñar�R¶+À •[ÛxùÈ¿þ„0u•òwtƒÅ2C½Emq8ØH 8ÜŽ’DCAWÛ®ú­ùÏÏtzwëY´’Z\Kü=œ!3˜XC¦``>b¥œ-�8ÁÈ‹ã‰?¸m¹EGßÊIUžŠf„æ§©åJ�®¢¨~Þ9ú¾5›S“ 1!b(œqœ©¯ã¡Û‘œë|7ûZ†ï"¯C;#w¥í¾ý”AYLР»ô�ʉAj´à ¼ÊhÑ. `ì”l&Î4˜X¦âŸ/_êyïæÀ#§—¹Áý<‡RÆÐ¤ JXFîf!La0Ë'&ª”Ø‹Û\ìgâ ŸTŸû“ÁJÃöæÓØÂ…Ë£>±‘�¡cŽÞ»Èª—OÐÎÔ7Õ‹ ò&‚€åÄèd©GýÛ5·ç‚ÛþÕ0Äõ”%´2FcÜ¡ÆÎê÷F=lsÚR—$ÝðþU‹ZZÉ…½X¸yºÁ�4ǼâaF{Øð‹ÆNÏ`ÿb÷Ûwóm¥òà©Ý 1ªÌ{?]{s•ÂRi½[ú1í<­:Ü·ƒŽ¯†Íºº7€)ÈÚ™óP_ïä”T&7„ ;�b=ìdzàVçQV8µ³l·ùùÖÁA÷¿ž¾*±òŠ+î=5ȸºXþüY8óv5€·ÂStˆç58<Ìá|þwᩦ¦F\BB�¤Éû£Ã‘ÜI�#}Üi¿pÀÿ®ñ¤\1v_ϳyùÜlwvF`v~é½×γZ•T:×rF}eëW´„}ìFØ�¡‹·½m‘·¾¦ÓòëŸÙ;ˆ–üðÚBø“ZB7ïãñ&?_`o‰CôUeqÛ¬¸xx8û …ËGÐ$¾á@{eF—DÏÍCï€� ”*nYµô<é•Y›¡”%B�M›Œ�Ãé´iF¿ù¶»é½¯d¯¹àÎ|àÝÎÐ$[³@傽}^Ôx€m]¯T¨üô½•f­r\›ãO‡×’dj×Nx<¢S±ˆ—D†“1“«»�I0siÌbT�㟥õø­‚I™Zn^ÈË׉i×kXiHUã‚ö˜ºÌ +�(ú÷õ%ËßWD"¦ã* MÐ-µÒóøÉÿHs3Êšç}yh\ÍýýuÑ·™²Kç]�¢9\®Fc‹«é¿0ßì4¶OÖ i.ß«Í Yømló­´ãä&/bá™§‹¹(®êYrî‘å|d¶¿Àšíˆ#ùø6Èú­ÕÐ�(E"QTï¢bÓG09—Ÿº yd“NÍ~onÔLm«¼ê@3oý"«^ ×?èˆv®®Ä³)Ù5ž¢à¿› é86Š:„¼ yfÑ;*:”³$–ÇvV(D^î”e¸:–ùàÇ'ŠÿûÏ"þõk‡�šÈZa«Ì‡ë8»g ƒ"žº¤6k&øðªN¤“ccú±dWšûË¢´Ùrú]¸� ”ùˆÙR±m¢ŽCÙ–¨œ &ÖR¨æØ�­o3jn´ô,±!G‡CGŹOqsß§¸f— '§H&ú´‰ƒ¹Eiu…ªé{ Õù[³z7�>ÈÅn½=ýåÄx€QáýyíD3µàl\\\™sÓ¸%uÏ7ymyk;§¥3d2òð©²ûO€ ­_ãã[E@øÏ“-)Ïâ(€<œ6µÔvÕÓ“Êü8Ã9c,;ë]‹{áêÖÖ'àg|SOGûRKÕ)T µ ss$g„‹^’¨R©úrÇ‘H‹__ßîîîœB~x###†¥€ñŽgoOùt–­­Ì×È �wÞi$Óc¯)ÍãÏ-ç¬Ë¿Óe^Ïè4¼[ Öû½ßX?¢Hºj–º‘>._òéRÚ�gffrÈå�UTÛÍ<çL˜*4[]o ÈC^.þNªaŽëo=¨™­K¼JL*¹;Ë7ç÷t.»÷M-Iðý¤|«^nØï[>|ªäTçÈý€�‹¡WaVßSˆW/�s^œø†ýt‚³Û–R Á3*„–kã«3 ù¼§oMmÿx¹õ“¼Îc“1ãÀÕ«O‹„ÓùÜc;˜ŒÁ«¾ëbL-ôiàéâñ3f8.—‹�T­ËÚ3Øfo0V† p|íbŸØw^µl䋈¨†m³_�>A|d9',ìU3\svz½û�tm}Ÿ�…• Ò Q?c|^k\…¶ÅZ˜6MÍ…þ›À¹Mqul/Rw€êɽ÷[oïï��¥¨Ñä1£S®0–¾ÕÕÕÓÓ2ò�+—¶¬,�‰ îÔô\.{ÈlnfoÖ�ŽÙ} ñbGjBˆŒ ¯XÔ‘ü)>¥1¾»ÎÌ� åÚ¾”:žÀ�:†n$ÅÛ,Óñz-‘/'&'Iº¢T^ àc •¶ùò”åþ“—ÑŒQI$¨:Êzq ‘ÿD²6HS¨â£FÙÔÜÐæážO£ª´#«•sE°à�zÍgõrõ{êé�{åHìL˜œ:¾`Õºo]7== G«««ÝÓdTU1ú+L�H2Ÿô¦Icr˦æþG�ùàÝO@ýwÇý+V}jzp[�÷Ç{LL Hµ»öúú¼¼ÏúÊu͈ü‰’¤D_sšš’žrrr^xfðÅ'nìšÓðƒ€­TÂUäXr]‡(£ýs0¼/§µCÞ·¹xk-Ž FV¢p¿?¥O–\Er]a5̆7€¥Z¯6Ñsp¤püTDmu:ã°Ûüþe>v©~p}»ãþÞé7¼€I�¤ŒL`ÏÖÐÐPpp°Æö"H9PÓôÞTÀ½Ó@|¥¡geM< ›žýG2¸ÝY®T›ÚlÎ×Ô­Îþåa wä”oÂy?ö,h{§¿>æF¾?ð®÷¾Tw¥Âa³]º§êÕ,l�›ÉñЀüŸ| )ØË ˜NL¬E¾üf‘”•�RªX&oN‚º{’‰ 9ù¦«(ë‡æ@MÜVϧœÄ»ÎNB꿲EaµíÝZ_P«ÀÊ+AÀ ¾�.ArrsÓˆM¯µ:}õÅ‹U]TÃ’ë*Sp�©ØßèŸXŒ4–äÓh” ÓDP+=ãr@ø›Þ ·¢ƒT9�œñ�¤¤ ~Öµê22¶GB¦Ž2`H–¤MDCA!y—ñª_r’kë>†ÀÿM9O„@²] üÌù�¼xFh"Åèšéêêæ43?E`ƒÓ‚†ÞARñk¶#%9y(D¬c#á€!_¸0þœ óS¾ç…D”Ù—å¿7Ôy¨lL,2ëŠ%…ÈR `Aü÷Ø#Á¯kÖ[ÿhú·‡£�ðßc°ÿ�å�dBCAUhwvP¨òÿ{’à· 22ñ‡6f¨”8\.—]û_þs~xð$ß#Óÿ?¢ïÿùò��þù²ü½;¶V°ìqèñV¹:ÙúwrSÝÆ2—Ý'܃H ™ º’ɨ‰ª¾¯Ùá¿¶¨þIÓBÖX°ßòþ6¾W]|´46><Ÿ¸IåµúøE=òzã}Tržx+´w@g·5¶÷(Ó÷WS=5F š’ô˜0…ù®žŽþ£‘%ø†ôøûÛ Ò‚>cjz4�™ªoê37ÙÛvót`ª%Æ/¾?7$¼á|KMýb±Û]¬üE¯´PMwжf�fŸË“ù—D¸±› VtmøòÂ/ cr¸Ñ–‡GPƒìêZXXxž5’ϹEærÝw)o·h‡Ë—,oqe»|$çô­0×Ý/i^t½§ÏG93i!Õì=Šã3¤[‘ÂÃH­å=¹„ꜽ¨Œç9Šå§Çi¡¶û™µ`Œ–Å®™ ~oß÷ËÞ o®4S«šîc'Ï[ç|æäOŸÆrû>k×ð2rx9„:?�­ï+Œ× LÏý*C˜4þËèP&�Ø“Þäò«ˆ[ŒÏB—ÏSÒ¥¥cECaQÏÎ2x.Ú`>Üú=j¯ÎÄÍíy¶\_¿oäàà­…Ó øHiǯðeIªgšŽAbòéøag£~Ü¥ÄJ§s8+¼%×¢=ƒËÿ:è.®}3eÆÎ¸�…vNýUÑŸ{ÃkVÇI뚀’¿Ç«-€}dáá¨c©H.ð‡±&�J³7z¼ÿTÝÒ�ÆG Ýx\£OsÁû^r¡=0úAˆvß¹g¬س”áLãºêñÚäØåÍ4n^—‘–èÙz‰©ó¬¸¹?šÜŠiŒŒEb�Y¯–¿’’’§ëá}¹w>Û@¬Tc îÎX¿CŒª¿Úƒowä’Е&Œ–]’}Ø&Þ\® Å:_ØànØ>D"ÑuŒ�’ž)W€|JQˆ4\#½ï5ßÉÀ õ Ìœ ?J’LžL�Fj0œüùãœO“°Þ ¶�­¯&Ú_îR…h&N'ËÌ¡›¬7Ó0!Z0Ñ*Ý Y7Mê´¯¡ÿhÖ/8Gø¶…Ç«ë MçVªh„š¸-ÄÉÅé÷ÅC•„^Ͻ—*¿|Y}Ê›T£“/#ªÂ}%v�~ÞÁûHºŠ©v8ï „ÃãñpAª‘Îô””ç×›‰…f–‡±†cW<äiÚoÍÒâ7›§‘ÊX+�D\�—Íâ'b(\›kd‰­wO_ÖòêX¢º“Ž1õL×ô|/"CÔtªi.ö%ûÍçmüÀ‡,úK?‘¿”*uƒÍRTòî¾n\iÃ`ƺy;�•¼¼^nÁÝÌ®ãƒTqOq@�–åSÔ“‘û®ÀŽ;%Ö˜¡o/tV±•øéŸ¶{f—k…8½6Ïs"�²úqŠù’?ÃöÑÙ¹#„ ‚¨âœ7/Åû…ó«ltíЧêg{ºCV£ôÆï]Œl¥f?@ÀW‚É•õ#W±ó2رzH(C¢“î îC¼ê´M’ŒDtuÍü“;ùlt¥˜©–j W+¥ék®ø»-Ãh¨ßãúöŒÄ‰Â–[ƒ " Á!þÜe:º”Y”(ø~”Ôô}‹!þµ¬¶!§. ö™6ýÈŸ’ôtë7Ý`x=�™‡'­tÐÍ'Ý¢zÖ$”(j80 8±�¥–¢Z6—Ãfn¹¥ä3å€kpÃ<±�ù0̲«Q"ƒŒ²µu-Þ'ÊœÚ1<œg`fÙ(¹©u,Ðú]µíÛeO�i-nÆü1¯ÄV²¯`d¬H´¤h¹2­›ÏÍÕtáý>O-²š\áPõ ¾ƒýA߇¤‰óŸÏtíOÖWÙbð…ë‰m^m�cÕÉ‚¼«®Aá�ŒžFŒŒ‚ÚàƒJxÐ�ÔZ,¨oþ( w5+ŽÖ-¯,û��Z¯èÏPïGT�Öwæ!:úÒ†%åÙ­kûP`¼©ë_’æóý–ʤ®²ÈÓÈ×cªcÅ”J?…;T¤Z5¯_Ölu‚…ƒÛh¶'£7\¨ÐÎ¥OÎÊÊúcÂ$L½K.hÔÊZÊ5qƒçqÙµºªq ‰Ç[ñÓà[Ë"¨ß“ˆ}ÆŸWá“Ek#7´ÞÏfJÀt/× Y�Sr¯èMÎZßFñî}'8±n‰ƒ4¼ÕSíùì+(óËâ>_l¢Ë«²fÆ=<FØ èmŠëså÷,ª 8¿‰{ámÌßd|ÒÍ;)«�µmHb,ÐV»TJÒ^d52?a#nà›È:j+uPC@i¾6Ä'9Ñ_÷³­àÃoZIu×(¸aAù]Q׉TlvRGŸ7ë�æ W‚øtqÑtÈšîØ`Vœt `.RÙïªf]\yS§Õf7*KtçäÆ|‡#Q S8á |%J7v‡™C5Ë�e§f·¶W椅¤6N/WCÔËoˆ�nÙ9�°ªPZÝá·ÎZ¾ŽýÔûÓÚ\ýz´JüÛк–šèŸ\}Øœ^uw«Ú2<;n>7^-Q5Jœœ`Þ¿@);u]ì@þ)•:à¤1æ�ŸÐ®ûRvÃé¿cÕw3ÊÕ5ãØw¼ÜBC)ÖG RçÍ =w¥ @?{Á¶a[æa§jÎî�KN¡ž¬VÚ¬ ½ÜIû¾÷�=È^»JNôwkqtvYU¿ZÛE‹ I!ôC<2®›IÁÞÛc='„̇¢éËN¶ö𡱑×NlFí9[-Ú}WÝMìQjé„Y± L|‡i\ü9ùãHxñ‚çÌÉÉç¶ìTZï¦5 Ò÷L¸Íêlã?‘š§(Z–ªn×ë¸ ¿‰>‹gŠÅøÌz™•~f€·Ë¥Îõ7•z5ÍŸQ,^*üü]=p¼i0Úp¸\MÄN€”GŽ54m�è´œ…<ƒS¨•Ó¥…ÓÏ´è!å7bàrù ¥¢| AŒ1‘­ãÒÊ’¼6?"BÀW­…¤–éaÀg ­#)ÁO>ÃjÅ¡.ž€¿Ræa™4FfF$)±XÊÁI)Wµ½[ù'€Sþå't£Ü0~0À7Ø* d€ž–2Ÿü[Ž—×zý\ËŸ¬/Ø�Ï'ΙtÅ�Ó¦QL,u™ V±®õýXŠ´õY$ KÕÙl±|aÊ)š&ðni¿ÌÑÌ~Σ>I¼0›p«î\&gb/Û²Þ¥Vªx†wÿ �fœDWZœ¼Qâî5° 4Ðü%·€r§Û Q8•ÆÖ€<Œ”/"dI¢u\O|uƒ³>�^ ‰ *×B?:úŽžz ³;Lvs{Ãr€�YJu°0â1-üé9Òp*î®aY,]†^Ì|$7£*1H ˜º‰ÞÛúÃNA.íJOåJ¿Úý‹¸²Ó¾J��™É² M&oÜ�¸×U^ú]“ú£Ìm«‡¸z9Iµƒ¿ï§)ÞÃÜR3Ô�_gBú³{P$‰õ=]„, ?¥Ä­Û>Öì­7¼Î¯�ÇŒ$†šmjd|Ê.­#;¤G. ìOÉøÆG_÷c[ÎV:Z³Û{Žñ?:iÛ^é^í/®™{j'ã3T_¿k{p\�ª·ÜŸlå,”PŒ´ÐŽ`µ] ‘Ï$Áîì4¿§á�Ÿß_ÛšÎé†\#åÓÿ0Uì‹!dMçñ¢Š™2Qà…èi´HÐ{Ž#e R*R»tDPå� pîÇ�Í>‹Ãûàýôgº}�2“u'¬¦…!—¿T4Ãü3€\/?Á˜õb—º'q­ÊóS¡š£ñÓÊ^�,æyRŸÁ® g·ƒXQâr$>ËôǸ{FoÏt˜#ÏIœx<Å1Â'ðvÏó^½«* :ÀGÁ}|'TuŠ~Úw<ç3€g8–)]ÃZNLþÓ¸ÅÈpñËÀ��SsåÔùü•¯ï+uGìB{�¯ÑrÃò¼«P\tÕž–áÐ7 äˆ`�ätÊS+Ü&RP°M@ùZŒö…á–‰�F9Se0>µh_R9/Êñ¥ëN}붘$êoÉÄŸ¢ŠG4)`£ž�â¥Ð\Õ_.Éí2Þ;øµ�ŸÃü×0Ò?C[Sð)-¿ˆß” D ãÒHw¸ö¢4³¹~FouU“æÆhh¦ÿÒÞk‘ž™1&×nFåbO×øæKœ�p¼+ ¼DWœ÷kÖPv$å`ÇŽ#y¢Ï·Kĵ˹ºÙÖK6PÐë˜AYÙÐ1ãá_dOJ‰µ©îª|É1ë·U€oaij=ç-q™ƒ¶Ýú~�‡8 ÿÌŸ›‘ ÓHyq7z©aÒ!5�¬¼ÚO8g$$$T”Þ 4Y«±4¡Å^}ùËgv:å¨Iâüe‚àæ³V”‰›m!]¦@é‘K ‹MàxƒŒ�«v Âæõän£ìÚ”’˜Ämg­weú„~£ENˆ—4ž!�˜?0Ø®i§ë…F0Àb厵Ùa€¡5p~îM9ÍÑÛÉyVÅ‚âayÅæa¨3óÊœ´ù‹B^Åø”dçÂñaS‰}[U3÷ÁÅ—zÌ8íë_J›ªÒ³fbŠÍsϯ@€x>=:,È ›ëŽ©LTÜãN¦²Zkuzq?Ùzx¼FÛßßï—7Cú»/^ßÖPTtx8•Ûùvf ¶ :‚ãH[•Þ¢ÊÏ ÎÂåx©(@†JõL»Ú…&G!“ïÊÑ¡rc¯q(ã˜K9‰”¶kS�%œ9B"LHhjÀö+GâÐÈ‰Ò ÷M ÊI²MB&çØP9 È.ã¸Æoôú¿ê¯ ¼ù­Ï·$NKS™v?æÔ’´'z6'Ï|6�šJV¹ßæíY ñòÛSëëëYè‰Îsë Õêþ¢5!ý"Ÿ›ië�ôý¯ÿÀ¶¸è{ºŠÏÿî#§ÀÜúRpm¯Dù=ÄBÂ=|‹Á�=ÄZ¼¹§‰:dꚦÝöÚ–"Z_Ml&¡%väø7‘ ·0â„Õ¨¡~.�wêK<ñ쟟~S^NÝaÙ))‚%1«rØ7—Ø®•?wÇt2�ù·_ÓÓÓõ·�éécr£,®æã/Ü#ñÜ'Ánü;´®Øå.ß“Ed‘£µÚù§Žäïš 칫•�x»•ïàB´9)_‰4ÀÉe÷Í1™WW�/¢â°ˆ<”ÞBŒg¯ÊÑcl¡ÉÉÚÕöÖ¸4^Ïûé‘È*aœs¬…<`1™+¥Þ¢ëͤŸ�‘x]¿²mP¸Þ�ï†�©¾šeÐ(}ùÍú®qÙƒ‡¼Š�ùmÀ×+bTà]_1П¹Øú¼S¿¥”š ¦T>~w`—/Çof~Vÿk>×SïGÈ™ÿtjø*Ÿ�”‚cZP.¬«;/c8ÎÙ€¾ÿ)›)EãšÊózˆ¬X�u­ÃóeF†×ó¸¸0Fžçívæ¢C½l¿Íþ`|rrr*W¤~9?ñO ž×㔞Ôkí||›óJñy B‰âgQ <- }”z¼�È@ÏV¯Jاab|3ÃN&Šqè8q10tÛ‡‡¹lÉxa«*ó(F%L$cæ_/Ã^Í“zÑÑŸµjù9¾¯005¥eQƒÐˆcĨ£Í�~ÐùL‡×%ÇØ8ãéæ–*èØ@݆ª Í{hÀ÷ÃNû§>³ÞÌ )‚ xzº 9L$“BJîÛEÓ�¡†ägÀ=ÕÙÉ Ü7@�š0HÑ ¿um„þ¸ÜFgY_Æ2~Úçä?Tw1êÜ�L½X³g$Y ?ÏÄÂÌ4/÷–®,H˜ø–!áoà`*Û=3TôH*n«9$–Å há~�5šKb R°M&."Ó?ìñ¯ë0Gêä(ŸiÑRc2p37ˆ<Á§€Ï0 Èm«å�Aû*�¨¦‘{�l€ÞÁIwhc“~‹üöÄJÈéñ.€†÷JuKsvñé­–Æ{ÉâdŸVG {¾ïÎ�F¿ž")«òè�´÷¬ s €~"º�ºs°e€q0ƒÇݽØc¢ã/±#Ëæ€g-·u{Ã+ÕfÛrú9åÆkbk8Cdì¦þö_Ygç–ðàÁDsçÐÏ:·Åâx P‘Äó“/:c×ôŠ>j"Ô.·±FítOïÏ_÷$né¦:™F:לi~©ÈçFRçjȆÅ1ïÃXN1,wÞ–¾3óQhÞÖµ©²C¾nÇݧ U¾¡=çÊ·ª›1/¬ý¼$OŽ£µ¿k>Èœ¾Wµ¸ÐQµ!&�“ÿ,ý«–àZ¦ ˆBÁ•Eá ø�ÝÎÒi‹·ývz8Iifý²-xb¾±)•HG�ƒùQÈ<.¤8§QyÃι¶rEÀ.n^}ˆÊ©ú5Íx²vwK„õ:¯ã(>Ëu¤ä&=-MƒáôÀ㪠ü/-ÄélùÏ>|x•''–v(�è)Iœ§#þeéòJ>3ÇQôá·øÚm«¼¤k(RzìBøë§\ÄŸ˜šóï_⎠ÊG\;Ö…&™ô+Š™~'n€GíM¤¶¨·õ/û #Èy·ÔŸË9»ÛÓÑ}Š¢Ü{™P\>0§ÁY ¿k�KcQPV‹[R×F™WK-œÑÚ2ÕŒ+ù»wN´‘ÉG_Aìà3ÿ”›¹¦¾e³€®iÍ�&÷½›Ö§,ÐðO£hî�n CqzóT¤¯×g¶Æ6-»wWî!£¬.ŸˆÿégXþøº)ÿ‹o{Æ…ËÍw€¹kõô^ÝÂCq³cÚ:8Û7P BÊN,‹ú ·Œ‚2vï¢,cÞ.ÿ+�i¾`ÞÌkÈŽ1¯8^ÍÝUýZ >cn“VÁSlÏqrò-E x¥:6‡¡Ç³FóœÒŽ‚ûI<ËŠ]‡Ä Èá{³Õ¦ÄÐdžßú¥µbvSRSÿz­ýeÈÊÚ·°ôœ½Ï–Lè¦NÜòªåj <±0tÌòy¨ShöïK˜Ã|â<æ©2NÚLš`L ɽýFÖÈ­­©2B@@̼2kãò¦™1/;ïqByñòÌþ)kZc~ïð¯*­�ºL[0@”d}{>áÌ�Ç“°üÒé˜Þƒ�;7X6u)ÏŠNÀ.âé•1RÆhcgÄP¦R©Ôzµ©º»TzhZ$ƒÜÝÎxëôôôvÖy#"Ü+=?»!/˜î>˜�pãU©ñ6œ!Ô¿c%[`ä»ëÇ#£à<]@Faïǽ<·æTÂÈ~mãêi.j}g Â]LùvOËJ�â â4oò¤¸ù'¦µú�5/Ú»›±â�‡³ü=×íH¤^£ç«Â îÓュuí«öb$##^kñ�¹ÑÑÊÇí‰懓‡§º`F½u °ž°Ûá•flež×sñþxÕPnNè ÞÇví˜Ëi‰M'A6ç _%è��­4p({yûªúž¥JöD\^1cËpÆ+ÞìRûŒF0Ñ®Œ‚”Œ'ÐÃqØy¯êÅDAHÜ5ð- ̇¸j�ßJr¨È4ä³ìf�†‚hC+"²>›Ñ4•�t Þw�: ®‰›×—ÿIwÒAáyPçßFXonnNNÆà‡Ï™:ìòû²Àê¼á‰�Nc«Þ ^àß]}³’&4IïS˸ƒåÐ3èÝû~�اBIcÊÀpíÌì$[êô£Õ™ÞÙ=udq5 ý0Ì•CÝ]N§ù°£ÙÆl«�ýÐÝ@ð¾õÇnуš»ÒinPCTýù•Æ´Œ¤¤ W†ûDê’Å:iz ÞW®s¹·iÖ»c©jÞO/ÚCxç«§Y4Ò›Â\<,$ š¾Yq˜¹ÍiCí_É‘¯ÝjYÓi YR™1ÇR¼ì2=žöÅócrÈ“%ÊÕ´Á| $QÓ7¿_ó?dpÍ•EÀëlTE¢ûÎ'KbÁ·†h|VNÏ¿ôDyþüšN .½"§›zŒ2ç rÅo|sé&¿è  ­»«.–gš³äH´·¬øŸ\§d±¹Nkï™Dœïg2Û�Þ±wSfq9¯Ù9�Ìjµ(ÃxÈòZ]èzØ#vS&qh@Ù|јœxq’Ü©ìuÍSfõÙ?‹ªª.«på‹ôõõ*µµ¯!•Ã…ovce„s§*;žÍœœœB{+$,ø[ÜÎW­ÉRí%½/ 51Š)Õþ€š¤Ì9 Úì–#\MˆlýŠžÑÈ,!Q³OÙ4gì׿Q�ó Ÿi‰µþ˜ñò1¤¹säL±Ï×ßû*ú÷ÎõYåT,›&G°ù9‹U§\¸¬3aÙ«VJN$“æ·—‡Ä¸¸°ððò�¾rPЀޚãDF}õŽ'!{pÞøº1Áš\1&¨°å_‚˜S¥s—÷ P¬s Eú`ì¬tsZ;Aúñ1éåð—ßÔhERxºT;`Àöç_‚S¤Å¢ë2¤n‡íNÿá¡É1Ÿ¢êérý ¿ùŽ­"c´@èú²¼²‚ ð5›ÆÌÍ�û»Œ´´´¤dæ@Â?ÌÒ gÏK:.¾•鯨Zï�÷޻Ŗu¾›ö«&�ûÐq<Ê%éž‚œ×û@Þ×­“ÊNi/�Û)ï×îü^Ç¢Qd¤È+�@À´.o "íåxÌ[íÁJNÑŠžò¼J&ïµOmð¤Ü¿ü¡ÔôÐrÒi™Î¥f—?´inŽø n-ŽØd+kzã3ʵ¶{N¹÷Ž›ÓÉcì1óÍ 6a¥Dùé«n¡«öYÜ—M*ÛµÊ~ Å3›ŒŸm’SÛg˜ª /§Ú9¼¦{%é2hàŸ²Ékä»ûo €ëV„îÌŽ‡bDEÐ^TæíùÌÃãˆPëåè¼F;õ£dóˆL‚63‹—‹ßÛEo�wœ‰UU·�±•ç¹u:Eì×þÔ¶÷ëÒ9œÌ^zÎÆÆ«ûBí¹/ÓC—òFiŒ¯™M¿²ø©øÏ°âi£Ò‰‰X0{{ûP©åÓ½?� ž³˜·6ûÍ4) @KÍž‘ƒ£‚Žj…Ò¥Ÿ À�5ºœÖo�Sg‹_Åÿ]†PÝíÎ`l(O¾ò;ð›ïÂý­8–L&£ÄšË]7HâÖyNËþz·ø÷3c¥ÓýË…òêU;a„KÆ™÷åœxjýªã×» vû#/ ©ÆÇ£æ®0ØÄ ·å ¿g5ÿ“êHŒ 8Úix¡tz‰µÇÝôàOVÏÖåñD+êùªóáÑÇÈ3‘Qý»\llì–�KîuÀd �Á‚ë‹Ã¡ÍÐÊÀPpªéÅb±KÁn~NqâÆ^¦çKë½u°rY&À FðúˆõÃß{Ÿæ½Ìvc*&QQÂHé1ö£iÄÕåü&øv¨Õ™-ò¢ée mc”ôžj À§ø‚PÑ6ÀûBû M/ÏÜ:ã­(Y÷Zwk¸ÓÚ�?Ìé4îÅpUÛøh¼Þòö<–“`ìd2_±Êz9nþI3øë ^ÇrÒO®Ø •Ø:(áÏ^°]`Û¤•¶D éÝÙ2 z¶¹ùÛpò´êëMö?½îs¤¾3tÌ“I£;ó¶?Îfœò ¿ù Žÿ]É” O@QŽ j��æý°âé_mrM1ñi0“_F2/Ú^§Âö ó( Íú¦Ò9ûIµ:3P b À(ƽx¾ð¯³“}=%¬~÷©VZO?'ËÇ>½ü¿Ï6:ºé½€½¦xàù]3Ú�aÛ윔pðJ«U·<Œ!ŸÌ°NKœð˜µ0±X£á$!. ml<ñ5]ZYK+ãñcˆ,óöÉ£˜;,«ª**§a5T­Aþ3ô0VfH­+×÷~ïI&‰AdÔþh…ŽL4†xA�uÉòy—¡7z¼÷ù«~9�ÝYY¹’•á÷´ÊʪŽ,˜:æáé9Üu ñ¯i……U%0àóGŸšz]ãÀ…ö)›µ:µûêOcåL^J±`bº…U‰Ž(€`rc‰Bns±8y<¼Ï*�…ûâ×öùsyíëÒ­zEÓÖ¯ˆ‚á8W€–zLMÉ`s&ofÂŽ(&˜8îЋ•&`ù4Ù°‰�=£ÈL ü†?´¼°­m#bžØW‡$K€âǪ—aêMèKÄ ‰°ò 9ôÛ+¹´Ä8Åð1šädz뷘ŽUIÓßÑÒî¬S³S:Y€¦÷Úï‘õgñâ—ÚŽ÷Mlü1Ä?ÕOÔÍFÏ ›«ï…Â+'â÷ÔÜýTÁDh˜òK‡>d„$ˆÌ™,tìß‚³�ŸwTçZö—¯Ÿ.ú¢Áð,-õ§•ÙÇ%êê+ž ÀÿR»V†ç‰)•ÀÆÜqÃôÊâ†�LªÁ’æý§à³‚udlù™€¯wfeíê’0ª„Ò]ÄrÜçAÓmî(¼ŸD¬¢Ôʬá(?Zâìâ1—ÐNîZÿî ¤)í~Ê?9³¯œ’Ô«Ù&©9û|œªƒžIŸƒô‹ ›_¿°Ý}Ó"¼ƒª£¾||BXóŠú zk®’„/zÓìñ®96¯ÌÊiÙˆ„Ê %" .~®¿ÃyUcºøÊ>§ÑB>ª÷ZBØsTÇ�²?B«SÑ ØìÇ>n³2âÚiÜV3q¡=�„°ÝƧ~RR¼Åã ºñ]]�”3ÏRâ9—+wÈóÂÃ<<>¿±ý0,²¯S ï�äsvΤ£#XP9ÆDúâQX?Æ`ëœþ}ãµÖi3ÐtÆH�‹«”`Ö;¡›"—, ¥F ¯q[籿“/s6æé¡ù‰¼.O:Eõžÿp<ô#yòÜç›–ÛÍÆ¶`,~„L;�ë›ËUª>c WÓ <–÷“Ñó¨‘Q@dT9êwU�6 êghª°ŠÃÆ“u‡'ËQ8ëÎöGú[”×åË�ãä®~®ôˆMuÁ'§Ö1”O^,íp?ÊuE}¾¦ò¨ê,‰6‹÷™˜X3¥p,áM–*µ=-˜Õ·:�aââvØHë Wh¶† ë3ðóóÿš2 Ɇ„„†Fâp68[«¡¹fð>nú577Ïâáòzid»ØH±®PxÄ#ø¨è〠É~¾Ì‰kOœV1;­wC¡°SV?k¯Ð?(A½GPÕr-[aG/²œ÷9´21OEÅ·)n'S[›W튊1P”€†‰ªŸwКø‰ïBËôp«:ëTTh®Z¨,Ÿ$Ï+Ï×3›¢à?·žžµóH„&ÃÜ9ÞÏÀâÐ@B5•ãl¥DÌ@ú,FÕöä78×RÀ¿&.s¤]ßÏCY|n#ƒÊ�³É_X¢«,ÕpůbŠ›’#½fûa¢oe¨#î Àã>×? D®šöÓ´êgÚ»“v7ž‰ž[’™c+Qð‡Ï9¥ò l*¾p‚Ï_£¡¢úÛVCq`�¿fÜ÷/Ìn~ÓðûÔû‡¤õF\ç½ Íƒg}‹­�Œ÷ye9 <¥Î‰Ç6¯5î{ÍȽeÙé}{òUj½‹¾ ÆŠ‡âân ç`œ ·)g.R8¼¤7ä„÷ÊÓQ~Ë Ñ-º jL¶cAo,9¡yvx�u6®Ä ! ‰Ï�æSe=:?o›"fñ+ƒÆUýé(à``¹ÛG ø5¢ÛY¦)Wó»ˆ}€‰ ðmmo0ä°–ç?áŒ.i�Æ YåXzÈ¢Œþx�õšQ5.Mq¥­sº5K+¼Kxæ�9é£Àf–³.T–ߨÎæÛdÓR¬‡/�Á g@ÜL§z+/Ûb°øC)±ï*[S§§¿Žh ìq¢ŽÜ7ž[Þ:ºã5/_Ÿ>q\šÍ™,KxÞ)ÆÇ9Û?ºN0å•Õ’�>¶e¾`|†å³Bm_>¥2J…0°"H1Äc7wŠ‹ùèíJ è‰)‰ ïÆS+ÛŸ•  ·Cª°@è+©²Š½dyy/–Í4u&C#u+â+k­¶¦”Ý­¿ò)ê:Ïb-v4ô×¢UTÜ«€bò i‘à½mà`c7t˜ä€,ª3û/ˆbqÂ'áÙ%Û®D7ùŽßZÚtJŠ“è¬P˜QÑqa>ý˜¿[ÌR¦.®QÍç 6¹úÿC-ú–úcÙ"˜HP—©øÉFaTkÙUž°LŸÉŒ]¿ŽT�“y¬–Ë`‰ŽbD“Ö´Èœ¡zíì»qgM…íV‚lv:Þ…Œ!£‡ËÖj“b9}\VÌIYA¯mÙT飉C6öÿ†KDõ¬�»¬d®׫ͽëfð70Ÿçû¨Çí¨4£ÝR�œ_”) 0Íï^ ¨*+äž5©ò¸zkð‡×‹�á_sM¼¤‡¯?#Š�|…ßvÞd�!@\Qÿ˜*“§T,0ƒ&ø1¹r FŠ 'ñ Z°ÅÕ‘ÔW/Ø�H-ØÌ固#�g"±áúÓP–Öâ�ÀõÈ+Y�W°B""Ræ k¨¹;b> æ¢ÄÀô‰¼ŽùÀq߉ïuÃÙ¿ðý&ž!)=²'pŠÒü^nérð{‹šÉ’‚:j$b¡Â0ñäÇÚÿ ¯ˆeÆ‹@>±Uÿnn‚*•öºáÞSv—ëÍÓ¯#è+@.ÎoƒË‘”LV`)äaèë“È5ãæ.œÏÚøîBŒÔ½s¶k7‡•=n¹Gg&RÍSø…ó€¥ôロbM)ÒN¼ãjêÛ9†�ôRvó9÷n4FÆð·vyal}íùÞT…õ-)ƒ–7·�߉ïÝë¼ ¸= ¹xÓºŒz‡S«õm›Þd\¾ ¦! ʰÀ2‡†ÚpÓ‡‘Ða‹Í£¨-`þ75o´Óc7oÿûì26??n¼¼#cÒ3Ϲ«Ç�ÂJ~GïÝ{GÚÁz/Hž¤L¥‚t0Áûµ?CÅ~æ( -F§ UgY` 3Þ)𶕬Œ3ß”Ž˜Rµžb²7ž|a,šÙá&Ø ¼Ô’Y<(LòT°ò!±’ÇÅI¹ˆ• Œ^RÓ÷ˆ!rbÔVõ‰äâ4=LÀþŒŸ4T«µØ“Dºìm‹ÿ¬ #äž$f6ô%oÈu•̰R�Sù÷k½²Ñ¡;¤´"yE× µ­¬ÍŠeáåŒ8q$òM9ÉÒ(HÉ(ä}]xì¾t%1©„¥`z«t‘ô¹i<Þÿ’…ªg,سÈΖf“�.Ï׬ªx$ãØ=Síj?‘Nø®pßf¥³Ÿ>â¿Sô²'Ãꦮ“ ºÞq©§ç!t܆뿞ÝGdãø3{TøÜÜœ©|O_ŸÇY\ßÓ»öÐÐ Í…ôà+h]‡Ý«ªÇ†�n²Õ+¥+¾÷t¹oÝÒ)Ž^Ú&@ž&º¯ó’0k¼´ˆGåÐc•µÏóý�$„€"¢÷aZ Z-¨iŽ�½wþt›<)jÎÏ|K‡n;Ëæ/¯VÓWêëþ°•Úv²^xãoþu®š¾J_7 Óq€«9?45fúÀœ“¡¥Ò"¢¤Õ¨%*+o÷ÄuÊbåÞ mÛˆîWª÷hDOEØ]âV§mA\­K³¤YPД“*��0o@|À_¯1Tá/D”öDý£*—¹Öap“¤j©•·â‹>[ŠrÛJ•¶› QBâ9”Ùutn”ui,ƒ¾»,SYF*½èºÑ9&L¢¨sß)ןc0ØAˆ$–Žl.ShXüc`WùÈo~H­8¡ªÊè�ÖÖ|A,±-Š™¡$ÒÄKî6ôƒ»÷“Ÿ ¹K6âøJ—�OUÊMÛË»CzêE48�À<"Õ�fÓÅÅe}2sÇx²îzMîdË㔦¨?î&Ÿp.>ÆW�0rÅ Pñ`‰—ç~ðî³�«sâ$òÁœ@ôà[ªk[œ�±Æƒb²wd-CgÄö#•Ù›'rt�ï¸ ¦A«ë„íOË¢ ÄÒ¤³yYð'm‘±àTi²ñQøê�}Îä@ ·‡ïÉÀ$Ó/O�ûDkÕâWG/ç–ÿ°·kvÅä0Äyfp`¶�Ž‹Å}—IëªÑ{^´xKˆ …ƒ*‘cœ�{:Ëž¡VŸÆË_<Ƚ†c¼Ø&¡2,L‹êg}øh¥ÙàÖÀ3)ÖžüûÝŽo¥nõ"ó¶_Ã×1—£ÂÆ‘Hd5¾‰1EÍ]jõ¯°ÈdJŒA´c„ Ñ+2+!Z4ÊV%î—¯†ƒ­±8I�ÓpL×S‰¶+¹CËÆlìÄ�kyTaÞ’ö4ëãt¬¥�$ŸXÓ´$s÷T¡órÐÕxŸrkwww;;;9v+⪔Œ �T"yòÜäÉ–ç–õ�ãkÑé ¥ï†q#žf—µiP÷?Œ€æªLÀ)š›áü¥ú­w/u 0_®Õ(å"b#¡¨D�¢ŒŒ ØþÚÁŒ_^�¶¶<®ç�5þ�>j<ÞÇ{T*õŸ¯~ä¦_GÆcZ»ÌèÊTØ1�ežÚ¸½ø`,¤¹#¼e+¶T¹ì‰@Ã.’¾ðõ|Ù»”-Ö|m½ëÖÜêæîŸÞ{Qš65ò£™¯ëJ¿�nÜWf¼”¢™PÚÐýꔫ{f šÊtlh—)+g^LS¾™Ê _‘3û¼ÖuTôíÃt1£Ðv­;iÜþQ½Í†Ð£.AùƒÌÉWÌ}€ƒÃã]ЦÍvCèÇ/B­ù• Ø@W "yÊ'ù]Éd=g¾í,ξÁbï hª}ؘi„ $™¹©g�ásí‰(c´ã $Þîp�†Žým­cgÌÖ²GõÿÝdb–~÷¹´´4IIÉÁÁÁ¨Ö*‰·ëêdBp«íhsÀëeœäîÔ>˜§¡ôú³º„ü.Ô ¼Þ¿ìc.¾TÅù3œºð#CÙìåÃ÷Ç�d«‚˜ƒ¶½BBŽ/D¡ü s·ãASefýÖJF(^`([z~ò p»peeåAP Wò»j<Ùzê„”yÊFÁÊùuâõ&O²!à�¬‡á_„À*óσ)øŒæ`KÃôµÈÚ¾Î÷i><Ú†T€ˆM,‹Ž™¨ûŸÎkÞ /ŸàE´U¬¥SA¯}Ï›Ä<�þ‡=/Gˆr›´¬ ûôûúÂUåÿ´¾=>ûßR8¥KKá€KáÒÿ¶Çý»ßß_õVWokmm-•ú/‰—Áï`¶ï”FÝô¢¯óµ ž?¡–º®Z…ÊÓðÿPKÒV1]»ú¾?„�Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/aquarium.svgUT ëÆ«jëÆ«jux è‡mTKn[1 ÜçÂëZ´D‰¢TØY4ë®z‚Âvíù!q㠧´›ÚÀ3%’C9Ïë—×Cx»¿{xÙ,ÇÓééëju>Ÿå\äñù°Ò”Ò K8ßîNÇÍ¢¶„ãþöp<ÁÖ%¼ÞîÏßß6K )¨Ü]_|Ö‡ðëöîn³|±Âï2�ñù÷Ý~³ì_÷�»ÝGè úy:†ÝfùžMFéaH±±�*eD©½Æ,©w<[®±ÀéðU7Üd«)�VB–ª4­•äMRRÉô&뢸lŽ (m˜%DÉ.^ ß5¢hŽâ 1£´hb™åZŽUÔ ë8*ô\C‘Ñgakxªk0<÷šºx.ˆcÃUŠÃ嵬kaa‹‚b�I©¡žýHS’FcZiX©p´®lÒX.%�¢Z�îcÒ�ÕŒ°cÀÔQGd_³”g”Uð!Øû²úßôÑY�£Ýn”I亚Ð' ãÜ¥tŒVCá.¹�vŸÈà3JH\�f ‰¬Á A˜cïÎLø’5¬–�ÖÖ°Ô4¹÷’o8ÅP1'3 §) Ž}qZŠÁ‚Ë`Q»˜?�qñÓ`†o Õ8CõÛ\yƒš:Æ¥ï÷øºh}ËûŒhUÁÃmÒ! §^ÀµäN4^äøéÊT™…©W¬–>j¨bÐò(�7áŸóýžk¼Ìt‹¤Æ!F4Þ�1ËŸ‡!©² ’N‘êå® ™è´ù¢@.�ïD“ŠJ4tKMCý%)ºhžçú¸Ž¹È®MæfóÒù&ùV›Ì>“—Å©µ„×�FǦ/ TlËÆø°ÙLŸS¬ƒ²W,pöÿAærø+Áõêp}µæÿÌõÕPKÒV1]váH–Çaimunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-bell-in-circle.svgUT ëÆ«jëÆ«jux è‡uT]sÚ@ |ﯸq_ñq’î³™iŸû2ÔqÀã„$¿¾+›”$3åÎ:iµ»’Y�ž·æÜÝ�»uÅ\™]Ûmwã|~îÚó¯Ã˺rÆf£±—Ç~ZW»q<þX.Ïç³=‹= Û%;ç–«n¾™Õ_f5vcßÞüÙ4Ûáð´¿[-çˆÞ m3@×T™×ùç�…ÿÀçîn]5›ýóæt{…ªÌ}×÷ëjØ·ÕR[.ÑóKçß›×v0ô±mÛ÷ÝñÔšÓ8ZÔ?õ}e0 gKÌÑG<¾\/ ìê›Ï‰ÍçÄ´>7M7¾¾ƒ_¢usl&ÿý~úLüÍê¸w_x]Ò¤øŸÅÏ�õðÔ·“î·v8T܉­gŸKYP°Î§Ð×ÁJ’ÊB,—à<÷Î’'*qQ³§Æ!9ûL‹ÚÙìböJŽ4‡…dpÃ!P,*N¨”¾&›qëÒ¢ö8!”FóSV¨„|ÑÊ Ò…œ�bÉiÂ/E¤'뜬e…KÙ�¥ä£,È2—ì‹Ñå#­ŠÎ+\È)‡ô¿LÜŸ…®hššhê"�cPé)d 1\`A]D‰#ÃÚ ç‚ãØ³ ÉyWÞB?ôÈ{´Oȉ!Š$à`âAË ¶$(Lˆ›a´r¡âÀ#"B1F*óÀÀ‚> L¹á¥Ê%½=Bµ`É`0`9{šÉß ý:FWÐÆ•¯Ë’hŠÌ†&Æ:(Ý0ð[Ô‚.Ä M6fO)‚o Ha�‘’ºU(°cp“C£A�GÌÌ�Ñ,•À™u¼ÐTJÖµp°w¶,] Óbü[;5QòK䃆ˆHØ÷µ¬¶‰nÙÛõU¤ë;¿Ò?�›¿PKÒV1]}*j&ngWimunify-security/assets/ui-app/assets/static/other-root/images/other-root/logo-grey.svgUT ëÆ«jëÆ«jux è‡�VMo7½çW›KrXŠÃ!‡Cà àæÒ‹¯½»²d‘-C–?š_ß÷(I�h-9_oæ½YŸ?>߄׻ÝýãrÚ�g‹ÅËËK|Ѹ?Ü,rJi‹édröº»½ÿöo†Ò{_ŒÛ)¼Ü^·ËÉÓ¶ëÛ›íq9µ>…çÛõËoû×å”B žξ|øw~½Þ<ž~Ž×‡«ã6\/§Ë¢•çlQrÛâ¿–í�hÚOß§Å›ïâ§óùMØÜîvËé~¿žÆïùð´[/§õóú~}=…ýÃÕêöø×rŠ¥NïSžœ?^Ø…_Ø4*P�¥—Ðb)«Ø¥Íï$šç¹ÄŽ»[Í3-x¬4V1'�cöJTÍA-ñ’r…iõ€à©Á2Ü"²8·6{lVèåe–Æ\05)3z`´lEà&}Æ{«°4÷Y')“æYzô¬ß/³¢0 ‚ZkY!·0H…Y7„*=ˆÉ)ج1çà=Õ#”i�Q¾ Ø+^4ZRÜ·F«– ³{nÃJtÎÀ*¨"¦Æž)kO$Ì#‡�èÀ=#GÔÂ6×qR+KªÂf5ÕË"1 :]Ñ_yì*3»?À@T4¬áûèCª¨$SöÓ�O”ÑÕ*üZU†OMÑÃä�%‡d…Ý3LÇPˆÐÈJ›_"ùèª+G‡³“�¼5ýÁÆ7W÷�›ýán9�Ÿ»«ãúS hJÿü ï†ýÝÕã·ÜÛl6ﮇÉÓã: q�më ì®~ÍxÒü;û/Vƒ ™ØV9Z×PÁ ’¨³¡ ØÈÛ–W¨ÄÈê^9²³¼l8Í­}Å<€iÖˆê`$ ¯Ð9®¤Ô1‘ÚÜÅçSb*‚2ï_Ñl7JÂ1 ŽÐXR#7Þª�!.§§ÃîÓÇ??ÿ£ç‹›ÿ!æÂYµ ¨­æ VНˆ2…ã¥B Ñ`*™Ð(c­„D~8…ö$�9¹åD‚sà Æ�gr§u8Õ*¤b&šBкÇTÚpÍÄZœ/Il®h¤"hŒ ȹ$Aƒè,[î|ºÎJ)s¯D©ÀB°^±´:rºpã`!06F;—L),\¡6 ,|Vé…ä r)_+(`b¸t£ƒ«£{ÄmÅZ8\A9:pIõ'TŽ*¾'r«0²4:ƒî±M™r3¶š‹‹ÛDØ«!dÕŽ[ãâ…x’_¢j8Üx^Gh»×ˆ#lM¸)R&+µ±°a3*Ä(;7´5žëÐo³‘2v-¯!슂ç¨DHU~³Æk" 郠™;¯ ‡Óœû%uîÕB:4,äNB žê%*Ñ„ö�ø½­°¯AU„,°dc£úI=ŽÒ ~£‚€BRV$Î%”ñ5"UTŽ0G§õ^Ø5¶�ë}| æÓ7 '�Ñ9¬ZF¥c¹�YÑ“l•+5 éŠQŽ ˜¾)"q6ØãÊ!ŽõnÌׯ¦­M~~›¡ÊsþùðåÃßPKÒV1]D±ƒÙÍ]imunify-security/assets/ui-app/assets/static/other-root/images/other-root/analyst-cleanup.svgUT ëÆ«jëÆ«jux 臅VËn[7Ýû+ˆ»j€šâû‘XPm ÝfçZ7òdI�®-§_ß93¤#uSÀxÈ™3Žt÷õýe«ÞÆãiÚï–ƒÕfPãîi¿žv›åð:ÿ¸-Ã×û›»ÓÛF�žãíqÜ­Ç#oÆýË8§§?�ãÓ†AÍãûü6ÓËãæŠh˜§—éŸñ¯×Çí4ÿÔ�i»½=¾nÇå0¾�»ýz=¨§ítøïÞÛ4žÿØ¿/£Œ²•þEíNËáyžŸ‹óù¬Ï^ï�›…3Æ,¨�áþF©»Ããü¬ÖËá›*Úgr_)kt*LNç•Ñ•NlЮ*§Ct°‰º˜ ¼®‰Ž’ÎÁª¤M¬€ÍÂP qšä€\PÖêä8|ΈR‰ó�Oº‹uÒÑ8lÑÚkc ›0’w±Lå"—tµ¯W× !ÕÔó–2¤¤U/°Uû«~f£ãF$fÂ#½²'çͶ·ó»ú¦²Î©ÒAÊÈ¿PÞ¶¡¢cÉtn~-Cul$¨†ÐˆÏ6&^®x›PÛ¢mæ}-DQ±—À—)!EG×ã‰ËZ8Ñ�d& µÁÐØ ¢6™>|)Ll]V�z6­ÉœÒ)Ø9‘Q¥-DÈt�A4Ûr�±ËÉ‘"¸w)â¾'WcÁ¥€’MÍйG$꽘 šUYk^ÒB¥œ*ËŠr¦¨ÙDÄ+üé¹uØM¸fG‘.ž\åæB]ø¶²¨Œ`à6$νTR©åÌ0•µã!�JA)‘˜ˆ“eaëÂw–.»~�p'°òӥĊ�Ë¢¶RÚx"žÖ%b¿”(…9‘5ÄnÈŽESC�e3Xcê^D[B#¤O.KBÁ ä–\‹oé5€Fåâ:¤ø1v/Ê-ûÂD´-UCË¡¯%=A’9<¸¢Ò¨z±ˆ’”L „ïͺlÜÃB[Is 2]%i2mrP:^œ¯…¯Ohßl hˆ+¬qé%u>²-d3§ìERÖ"]/z žßDeÙ6¤Ú}e˜‹ÜËÈV+™Uä²¼ oÙÈbzm=:é#¿’âs±Ä(ÎÂMRÊèLÂh$j~Í6u�àá% &W¹ÚÀŽ¼Ã³…\ e —€ƒÓeï.úŠgKãÔ·‚'CWlé¡qA�?&dh“‘—Ü5ÛHiBóAF{©�‹í¥_ŸÓ Z(ñhIMKpÕãÐ&­ /äöý!ëÕ•à^�¸5²ξ݌š âùª£WÜZF—|¸†ßušâ[? >«ãæïߊÿ]Éÿ§/Â~žàkýþæ_PKÒV1]X~$2«iUimunify-security/assets/ui-app/assets/static/other-root/images/other-root/storage.svgUT ëÆ«jëÆ«jux è‡�VÁn7 ½ç+Û»–¤(Q,²9dνqm®4‹l>¿�ҌƊ¢öaD‰ß#iüöýq¹?¹=]N¬§åéáùñé6ÖߟîŸß~\N´ÐºÄÞŸÏ//—ÓëÛëÃiùñ×Ëë·Ëéévûúëù|¿ßÓ=§·¿ÏBDg<|úôáã×?nOË—Ëé7æ$®¶àË-çÕSc)aâ«KK¤Ù`Kâb¶Ô4׫&/U޳œØ¹Ô~—ßdTæÃ”„ÞZ˜®q€§D¹¾[]�¸¯� å¼tç£x® BQÇ““(µŸV2‡mÙxÑÔÔ#HNŽŸ�w¬×˜Tó<ód¬Õç]€h^e¾�˜{î=6ç‰*–êuƒ¾ÆÖ–¼Ìâa€/Ú yÏñï»^¿|.ñ{:¿„’:)RQÎÄ5媑› ¾”+Q[J"F¤CTT%™›ÀlÞð"íʱ…7!ö²Û«(£ýÜSmÅæu`&Î2_‡]UòŠTDŸà@s�èƒ ì¢6Ü[éîäµYØž%܉Q;áîf‚Zòªœ~7I<fËMõ KÈuÜh`ÕmZ05@î%«5²és‹ê$ Q ¥üPö…Ö^K{QeœM÷(C;¤®xÑÉžÛ¥ªiø2z)v‚øÜ¢SÉÊuËcíGæ¢gÚ<¼¥–ì;;ÆÈ"O²h€æÉ&¥Lá2éþ¹˜þ»ôö:-ÐDÍÁ’S4(ÁÝ2‡Až#J4×¶žÃ`?CŠn�ÃGŠÉhÔým@e ZJÊš¸�jVçâZ“T«�œŒ #6(¶Y¿)â­Åqý,Ø@Ÿ€HRÀ-ìZEÚè@AåKQî Ð[ÒF6:Ð`ßÈr,{¯­ÛI´JðƒŸÞ+‰ "�^¡<;�A ™ÆXï°Ô‘çÒ{5‰u˜�i£ cÂ-AR¾~bâl”ÁH4¸ÌMdùIÈÿ§zKÅTç_OAs�¢{*Ú† ûzоŸAôh‡¸Ûí]ôýiˆ®}ªàQü„Ö–=UŽÕäâÝãê ³a�Á1rƒüŠNrw ÐXóP ÈѬ1”7µc#zW; 3Äjnc>RÒ*<ÆcÙÍ1�Ó>óq¹+.m>Þgß‚oÃ1Øúp<°‡àâ#9Ù¦!†q$Ž*cÜqh•1/6ŠÖ}'¯ÿÁ±^x•¼÷’þ«þñŸÀ§ÿPKÒV1]j’ÀùHiYimunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-delete.svgUT ëÆ«jëÆ«jux è‡mTMs1 ½çWxܳ…-Ë_63m.94×Þ ,32 … ¿¾O^ÒNi ²µ²ôÞ³VdþvÚ˜÷çÝþm°ãñøòy6;ŸÏtŽtxÝÌØ{?C†5çíê86kÆõv3ËÞšÓv}þzx¬7Þ„b»¿3øÌ7æÇv·ìþ°_Ûî»×Ÿ»õ`×§õþ°Z]ózîËâ8šÕ`Ÿ\tad>1?ºx±³Ûœ òSŠúg{IH$)&ɲ ñ5]Œ�—¨°,½!q¹á)¹k8�Ž|XPH¬Ök¼ƒ+$ï¥h‚�¯ù`Lh"Uð��©ú ot�„—.�—�@-TG•«º)c­)}£Úšbjÿa�Ni»¦/Ý›H¡Ö%²„"Ò §¹;c¤„3¨D…ŒÛùŒ T‡ØvÄ¢:ʃPk…r2‰jQÚL%£hde iEÙ¨  ›>T«üôGÃ-— -ÿѦÒ.OÃ3M?ÞDm: ½ÇA{é3Æ,è,T( :ýU_†lf,1c¤DŠ"NÞc $ql]zÌ44rºâ0&¥dì: ° Ûïî|¶¹¿›ë?�û»_PKÒV1]j°Vô½VÏeimunify-security/assets/ui-app/assets/static/other-root/images/other-root/malware-scanner-preview.pngUT ëÆ«jëÆ«jux è‡äüuPÍŒ.!@,¸CîÜÝ‚;‹»%‡@p'¸»»»»³¸-‹»íÝäý½ïýê»õUÝ?®UÝ.Š™�éé>}úô9ÏÓÓ=! r¨oßTÉ/¢JÀË+à…ý«°+¹5oÕaxGaI•W¯^-oȯÃ~8‰i8)M�\ Lf¶@G#[Gs Ó |»ð )*¤â–z´ê«£¼ó 8ç¼öG5¦UN�Uûþ8�(ˆ@©¢H˜[ýR–~ÒS1æMk —ïJØ 6måKœ&i¥¤•—Rˆœq¿¾¿¡5Gu¦5;ìó©ô†â�À}ÿ^ØÆóãw[tÛãwG´æÁ‹uäµz#üêý�·°N'¿¾PCqçbÑ.œPu>RÅ ³®Æ8�ÿ½ ûÇ/ö÷’ÓkûA—=ΔQØ/söµ°¬÷ÿe0b'”¥ŠYeìKÛÒ¶Ç æÌƒOÄþwûUfú$øjî¶N9\ñTW[‹³ Äøß­Uõpq#++«È%`)ý{[ßø¡g©ÈGçsÒrìÿ?áߥh‡¼ZÒ’�kK"ÜNñYvŽTý_áûB“² ‡O.Ÿ·ÕžÎ/, •dQœ„þ­™ÿëqöm]ïïeõ‡âEëgà,±‰þ ÿAÊ|£èÕÜþìZªˆÐ'ãJ:›mþ÷¦‡Áú–voˆDð ñüi.¶k:^‹æß6£'>Gë}Jl]Øk54ÜÉ>gô$ŽP {^ø:×.ÍL•ßÌC× '®¬Îþ“‡=õžãFMœ( lã¡2îì±Øj\›»Ü�'"òy2o´–RÅ`%�O™+–yµCnÕgñÀf^ïã6)=¬�¶©©Z®·)�ì›v}eì=ˆ]�Úm_ü«d¤…ÓCñ‘âÙŠùÓ…³‡ïEWd�ÓNò4iK -«d)Üž¯¨©¡NE� $WÌ¥”x÷¼[™¡¤JZëåÍìPåUãÄlž+aŽ}íÆw.e–�o�˜Ûg²€ÞUÙ×ÿöÿç2Ýæ>ÃÊ}§¦˜,@ÔJpγM»sÞÒ¨†çW^@j“ÃsöæHd(ïèÅá„ø¦áM'CÊ«ûÌ�BŸNÀ;~_/Y{µÞ,@ÅÖúCéÑ}BùDzѱ,/fs/ë  2t¥íÁÝà`�p…d÷rÓ_gu¨ƒ|,iÃú>=š�ÞG§ú›EjQµ~òÈZ•þ·�g²Ã›Û¹¸±T¨ÊÌ®Hó‘\1ɾLî²÷äÕ|¦4Õh*›@ô†èÃÓøRl´µ•±U¥Ýfq+í Âèl;4g—Å¥ÒÕ¸·…«­„éù <›¨¯ß­ÑCC©(ä":P•+¹Uß-~‹­¢WäºÐiï¯Çêèâzºå)®Ϩ÷>?›ÙLG×…´t’žÈ%ß®#Ðö<ßȶCh¡ù­+d¨î|¿Õ?Lâ;ï MG²]»`G܃ñ†ãò�øK„MÓrÏ—Xw¥¦X€–1,TóÉ¿MD —t/½Ú½5‰e*vÐò0i/)c–fD³ÕÅíÊ¡�ÒÒi°Ëljjª«SËT`çâÒo÷ñžø-ä�„NÊí�ùù�Ûö/ Ħð}Î2½V-MÍBšWßì·Æ×;ýuʾPò¹Ùù–·¶÷ËsŽÞÙênh[TÃë­ølçË)ëš�1yÈʬAã8zƒº=oάŒDàÞµ_×G?k;6vÚŽI×;)!�3ªäƒÀ;‡g¿ `yt’Þ¼ÊãOÅY÷ õçó�ÜuYS¶˜!7ש‘;y1Å�zw¦ßbŸÁ‚x€ í“à/_¬ðÓCžÈEëµ+‰³ã-$_~j³©ý2vÜ՞ăûóýß -bzÇ‘köIÍБӒjݦ”8Þ»#jÒùàAÛ¼ü9²ž¤Ù+A•Fý.�%Uuõ›íy42>š�ÕUïÓõNcV!!aQQQUUUKK‹éX*·íJÃ7F¦Ãk΄„„“µÖ‡•FG³Ûóa&‰HRܰþH2�oï>è¶n³ë¬Ûwî¨øÉÙ~ÌûóyÅ¢dw`ò›1æÝÖóO^�E¶Í�1(¥â!-æ[ÀF³ò�Mƒ��;¦@d¶Øãûô“Xj¤ �æõÖ³ó¾4«&/™�v¯ÖÉÌfYÍ{«Û��‡Y%V ´L€Î|¡:ÙÀ’¾ïm3׳ ï€5Håéܧӌ°5^Ê^*BØ«Áƺí“ÙÍR»Ê®¿Ü|Ñ|í~жí÷EÊOÞ�,êzÛ<·1OÎ=Wdïþhï6`¿Z%|0jXI†pi‚'±.ïØR©Â[¹Dž6–�íq_(•ód$¥¤`öQ¡UZV\Üì°#¥«›–’BÔ�Äç~NWÞ2µ²Òb6žÎa57’ÌaÕN¯ké4|w±Çe³´MSUËã} »ñâÅ \-vë…ŠgIhÙ>ÌyÈ£yƒ»7âú�iPï¡j)›|^«R¬¤h—/UÖÑ·�ŠXô!&{Eå¼v»Á“3K²ceN¦³›i"©H«²gô—T[ö›ÂÒÅk¾Ìã³!¼Žþ}DžïÝûþ8I�ôÍjf¬Ñß(‰ï_F�îv9>̧6eÞ:ÞãVmÑ\Öý¤•“…z4J»dr? mE²ž÷Çìp9âŽrŸižU™™.êZ>üÊP{®R5šhTH›çôM·“šw§eLMüp·'ÛÚ7±4”5õÑx(ûÈ@O„´¹¤Íå~¡ 몪iјµ™ É&­�ïòuKsà²ÆòL;m[-èF~Ç––Žs­ì®Ð~½ ¼8?x<í¦Îð:ï ÁZ\\Ì—Ï8ÆÎ‰ú’3™-Ñ~5§- àûxÖßä ÎÊÎféi•Ÿ™™)Ñ®—Ëž¼ô ŠIJLüdÐõƒWÛˆëétËi>Ì[;$X¸ó8Çi·Õ5Oë1m˜i¿Ñ SÜvsUÒ%Måéêè9Òô\4ƒŸc<:‹ó0žd�QA¥¶æÎO(³m §mH'ÃíUësðë¨ ,Ï-Ñüs�ù½øöÚ\´»ð•Ùþó,ðuÚYL–áTþDÂÞáû³©ìã±WoßÙøJƒñݾœëÓò>Þ–Dï/šøØ#�q÷mû _pûL²½„gµÍpë°É+Q–¶ª¥^cÑ•º)¸e>�NÜ®ëdü¡ø�¼zÓdÔýà„-ÞoZ�ñ‡ÏW„xè«Þ—¥eŽ  Ÿû~h�eø*B}‚­žç}ا85ª_|:�^¼V�HŹÂ@µ­ñü‹ ʽ2Ú2ðŒµÙ¼7 R øãú�‘:KŒÎˆ­{½×a}@688Hæ}ùëó»?ÞùÍ›¦ hn‚žÇ¤~Çáîp¶x¾Dóær®�6fPwªÄýw€u _:r¯¶†HUTUU­æËll e6S¿¶··y‘í›C€À âÝU…¢×ÒvȰtU?šï¦IÆ;ðÌ~å¸â€qs'ÅÅ%‚„¬‘‹êj»¹±#ŒJ€'Ì·ìÍ|>ÌpÕi)n"b†‚�ƒ¨Qܽ&÷ñòøÏ±ãDï.�…7lâÔó‰åW¯òòj±ßÌ“!·”¨ÊÒ=ݶ£¶¯v†Ê˜^€|ǵœ>]|¿?Œýµ=~2¼ÌÆCHtãó¸ \�_>¿Ù ¯{$’rMz}0Î`¨åu×Å´pÐÎpV6¢uȼˆþЀà7yù“ˆ›ðËWkgo£éŸ‚Þ PºE°°ÑÈiŸk—´ËüÕnYäŒI’hrÇ•@rE7g€¶×¢T�´—ß¾�ÅÜI^ÕçÝ*\:¿æÂô7 ÃùIºËÞÈ>§1/_—Â$pØÿ~ù' ¯(¹âçÏŸ=<îmüµ·w{‚ÐÇ ??¿½tOF^Þfýá¼ø¯ºZ]q!ïö²£N§³Í^ØâE¶…[ߊ|¾çEß?:ìߢ§6rà.­²÷]݈ËtôáÑ´•tÜóˆdr’@%¸ÛJ�dY3~bx:ˆ½œwT�/W#!dø ò&¼[¶¿W>làÚ�°¤ìÅ%Ï{¼x4éѾûµ^‚œ'@^#ç‘{¹åj²¸…(x¼ÇY¥N'UºX_¬8äJ�uÉ•!¤#½iRj©'&Þx~Ù´*?«Ÿ®îJ^Å;o³R‘xò¹’‰8,—Ch°5¿;öB™hœ2ë/_Róó±.út“Õ˶ZÁ±EðåHlmJWš¯×¦x &ÅœÛ/ XO3mÚym‚#;s4f½WUKðf˜ßHø&7Ï\Z5f Ie�<5‚JéøtÝ•Ëõ\¿zJ‰2i-ý/€øŒ3Õ{ïÎaT牵ïáõñn¶1` :;;›�¥†„…ñz\îƒGòhPQTT46Þ¾<˜ÆÂÄK㽹݊ù$ñfY«¬ÝÿV¤™¸ ‚E¬9¡`}¨¥Ec7<. F ÒA‹!3A¹‡å×ÚB)úË™µŽ[@L�Á#,ºüxVmc¬Õ)V?•{WOQ˶lÌ[¸[V�%¼Ï®I“P7g™W0év½•S_:+.?áV¸Ï­ãøRÇéó~¥Íˆ¯>´•køkçÄå'u¶lYK–«³×›¦®�ÈdB’kW^t0j×ímUvëîáeDå«BÝ5ûZ~GÕ&1g$ãƒiS®£Zàï ÚùÞ_eïJ…|Ê4á(×+äŒC9ø³ÆÛ¥\Šœ°1“ÀC™Qƒ²\å:óEÃc$X6îý¬QU½‡›2µ™bF^\ViÙës‡…'бEŠ?æú–R)Ë×ٯϘ0É�Øì»{�Eç3é¨ÎdÓÚe¸­¿y„~çó~ÖzT›HS®žgÔk°ÛØŒÈÕˆœðcýXN€NÒ˜Bôó+Ö1üöþd¶?"êùÙÙàÀ@ y aóÊ.Þ—“z_Nvú#AÏ$öæƒ×H²ø¼g—ÂÏyÄt-Lã/‡J?Þ?†' Ö‹mµŸ]ZáñÎ(»ù¦¢£ãµÑ…Гš–†Ç¨“˜’Òìz²¦ÛìÒúpÜì�¸H6¾ÃRüíµ“XÞ+>Å,æ¾OX »j·Š i»B¦ÎÙ‹„R°_÷Ç™ÞÝ0wï¥ã“1wÚÂÂoÙ�Eâðú|Ÿ—·ÌÓKA”Ò>}¢íÚ¡@<Cà°{I# �äxúãjÚ1OüÓþ¤Õ^—„Óñ”¾ `¬>~i+6OÈ^zoÉwõ|*8¡»FˆÓt·=þ�Rd”ñªÍF­\àúòÜtdI£O—(D]ßoÊ äuìHNDv¨Y7›â“tžt†È¨_“d÷è\Ñ-Õù°³ZªZu(Ç»Ãyö‹¥º¿u ‡•0$ï¤�ت¨¹Hñ©˜2E8«åÉiÆ9­é[ÃK@dµÄ¥ñWcÜO�žø¡“�”š"³Žò—ÓŸÖ§jÃêæ”“T€"¢y&J)â÷Ûë[œØwts´=Ú›­šŒ¼,aÉQ¬a õ\…!Ký÷Ð5_¶kÎö‡R¢Š,aÝÝM_\¢ï1!x %­ï¹ÎÈu0–“ì2PR…Ùª†ËÍQTòxå?ѽ— Ýg½Â[fC™�㑲1M ¯-Ï55óÞ²âA«ezs”à‰ÄòB5ŸZX¹¶Í¤퉢Ð ›@®•Vݺ £¼„åÞÇ|S€Øâ.ŸÈ1�»1�ظ¹SñÀ±¹ã’1Míç'uªŸõc*�u 8¬¯òíÑ»ã¢ÉW—JDºÞÊ�H¦Üðˆ|Šîz“¥—ñ ;üË ðù<£ [PvýÅU­šæ/ªüÕé÷XçaõíUÂ7þ}}â‚‚í}}}à LÚX„®Ç+ÅêåR¹JÈé0`:G·¶¶óEÞ¤µôÔZåßï—X%Bó(¸Á?·5TÌpB•²n¯Ï 膆èØi§aZ Éx»yJ,<3€­“©¿YyD£Û.…›�ïJO”¥šæy¹b†õ.UtcPГ8y|ù2°Pi„……õºkÌffeevÊRæ›/¥2jAC)‡kOXå¨l[7>�[ƒ"ißµÃ"}Ÿú\ñ¡8 3=²åì±A\²—íO磻L´m¾Ž!ëÓ ¾ ÆèŽ�õû¼46ÕÏT³ç4cá$±LW)2)×Üè�?Úðº¿Ãuôâ¾x‘8Y�r%¢d—HWòc ÙÜ„’Õ¼×îºçz ·}-ÊF×C!‚ƒ(jÆ4~Ÿƒ÷Í)ç´da*ô,6êHËæ/sø5Ž®åÍ™³(.¤—Ç”g\›‘zç¸,¶c· >©Íï9 ߇{‰äkz¿«îýÃ5«ü`ª”ãú� Š0ž¿²O§æ]õ$yä³Ù¾f³\÷çOÄ0¶™ÏQÌRј Ìß…™‚·áÐ=aÇ6Æ›¹9¾=�Xµ]íÀu~ÉÀ]ü°oj¾¼ì”Ø<îD@͹–Æëêó+ŸdÄÓÜ™b–ˆúºóð±†^Ów¥êD||¿O„Q·ä ÷Hîž>¡ÕD«\vlûL÷g>Á¤'²ï쩼ÉGä8…üpŒ÷™i|œ±UÖ…¤�7ÙL´EÃ� ±Ìî|Q¸ó *ÎÎB¨){>õ &â Ó ù/‡Ð£€SÉ"]‹ÖÅÑ„_o÷Ž^ •ü°#ÄÓF'Âþü:iSðç63–“¾r¡Êñññììl]SûcULÌ4™×;ܰ$™¼“ÝÝþr'vÞzššÜNû qR³f¹“ó_ªrùGÆ&”sŽ’ËLrq:è¬Ú÷ðˆâûEÝœ×is£ùÜ=ßMœýèÆ ÞÊ:7ÿ¤–KmpõÑYXа²³âpÚŸ@@Æ]HÓ/T!ôY9Îá�0ƒÔc³ˆ9»äM±#ù¿&ásܾ´R¦Àýié%à™Òfw¹ÅêgJ«•å“×Yò2ŸßinY!óv–(6–h\ò¨«©5º+÷QÍ´?бþõSA]Õv6\GÀPïÞ;B,ýÍ ë vãKíla×T†AíkDßè&ÚOB·fé=cm£@Á�~÷Çr"©ÖÉs¦F$ú�Ë8äÑ»aÐÍAD Ê{»”ñÐ+ÿëuCðj¿´Ô¸jÒhE}^¸P.‘L) 5mäjcëŠ3MÀæK^ðp}Z£|EC—¦¤mò�’ã°Xˆý¶Í(m "¼Ý�Ê×öÂ?s!’äª�_?i?Î9œ+¨š•Ë&|ä@„Ÿf£x?5ì �”W4¦“¨n‰Ò�¼µ‡`oø]F70@[@�òÙÄS|, h5¡8¿�¿K;ƒè×Ði?lúZà¼â¾âf`£–®s@p!iøjÇØxg¾¸PW~ßx-CdÒYT#þ«\k®€Åü‡2~ ³t‡-�‡¸œPé@…Kñ1ùÓ·, ÿ&ë-zŸå¹%ºŠ,>6ereü•ŸŸSßâõÀ)$”é+Bðи &ÞZ�J~|z/¡XÃÒZrðÆjHx—ã–™ÇNGÑÈìW�®âM y#ší ¦×7É&DAüŠÜ#©˜<ò��vY¿ç#]<¦ÐF|�¢®.ýb˜Š»�nÎ+Mñt™LN|=•Ǫëä7€ß ¹LC[¹9¢ö€ßTŽ<�æWù•z€‰¨”ļ�öŸóÙ´CU£kÂ4±*å_àRìœõOel4&�I�&W´ð ÜÃJ¦îß²Ø)ØÚÅ-˜ñQ¬í»¾¿eBµWqt8àïÍÓ ªP©Ï¨Å!O¡n¾Ê¥”(ZÍ/ i»eQk<®ÛÉK¦ #tßüV�Ý3ÞÄ&P©ã“�aõdr?¶]†ž§Ê„”(¨˜<܉9êEJ·4ó+Üìy(5´Á‡UxùD›\=w‡çlUo_ÿfåïÞÚÊn²HɵoéÚŠ1€x.ÞÄ÷}–ÞòÌF,°n/@@Õtq±-Ý•zZÂé]©0 Ù ®M{Wa}x;¦:€�èÈÜTŸv[5®Ó8@„�#"ÈÀÞ«ö4m�Xðy/,gŸ�鮨­IƒWE¶Y—`Ôx;–7cBmú¹«OC AV+µ _c�LʈÿØšU¨YIyH÷̬f—+×6u°�;s+¢Õv¸mÇé×–ICG§_ƈÄêíÓ«;¿ìE8þu$ž¤dôn¦#2T¢¶uq�ñM&.¶zØÓ�x`BÎÇÇïÎ6[ ×»ëUPeó;†ØBÀ+±˜7‰¶éŠ’ƒŠ�e?æ2G…!¸˜D½±»Òq„¨™¦o¶âGÏ�àVz™„£ ¬q¦)òÝ…>"€ç)àÊÒÔËœ%Û³¶féÚr,d™*~.^D•tÇ¡f¨${½QÓuCOI£:¼6­Ô4×î@™?æÒµˆ¼’ošœëÙ¦X®ÌJB¦óåÉØLQþL.Wjðyß_Š¡Iæ*F\??œè·y5fem‚ËÛçÀW08™§TXZZÊe»bçì ñÁ!µ£Î“×pºµÙõب"›¦§:çVüû«yìÜÛ�÷iÇg–¯„»Q«/)s*ôæÐðtåÛw,î"Þ|ÑW”uD9/ªåßpú`Qµ^ŽéoŽÆ´vDÒÛIÛ¬Þø”Y5õ¬œ%''g``àBÍÿt9�‚(R\ëø#>.îjVaÁô“ä¹§ oM“DÚA Yæ•ÏϹW™_T’rl󽵎zí8:šJ>[¸*­Æ!æêçÇû0ào\ÝÇŒ·>oo”tºì~^B¥°ÉV–P–œÐ7šh.«Ïó �rÆŸÎQ!MÖf,ñ½6’(K« gu>ÞÝ™æøv¬·æßÔ¼þÜL³„Ù¬¦÷élîØW·iÑënw¶'Cp•‡áàaëƒ8’¨Ô›t×Eßv|²JïEçÕQoŽö±Ktx€wqeoØÔ¹Ž‘!qô3k¤]k1žìÚ(�F‡LqYÐ;¸‰…tŒ3+Ìz…á)Ðð:nŸ;ǶÙpÃQ¼ç$`Fêû’Ë× yŒ²ÀÎÔgÍ1¹Ê Hh£¢^%Õ‡Ÿ"Ót¡Ssy{öʦg!S—5¬ÇU±¢L¸VUó¹¹lÊñAp:Ð biªèÍ·BØx”+wî£Äò˜ ìoYq�àyë×›~MŒ\Îio릿ߥ$€j¿ÿ:×��5áF`·Ê�ë§Uø’3ˆ£CŒ£"@ñûw¾BV¾hxÀ�’‚1&Öä´yR«{Ö¾‰!šlùtï�d ÷ŠMry{¾’VöÏ7Bi5�£ÙC¹¨ë½HYmj[8;¯?ƒ…pœoGë6„?F‡“ç}Z³i¥WßÎ7™»gZ®X C°–EØ]¼ “ü¹W-¤ÓHÎP¯K“óí‰p“Y—i\j8h�Cû‡µ·ÈsÓL¸Òp'bè#q¡[gà§gþf­:«7ȇ«^ÙŸCró’œRÁÛòŸØ[³Ø½Ÿ<^S˜ 3½y˜š—œÛ£ÉŽæ¤¼Ðôà0øZÉ;Çc¶ÚáÊÊ‹›Ýo}4((Se¿Áz4u×JŽM©x?™[6¨ß»õîÈ…ºB¬³%uSëÃ)wè÷šp-ƒ©À/Ü÷ÒúqT6Á8}Tß~:CDÝ›VQk«î8í­Îw}7C?¬È¹Ï[FÄ7’å)¸Â…׿Ÿ/©[•ôÞ}ðÒ߀óËN62��m©zÏ�ú;Þ¬äËð†mðE5(-i'î-ƒ>e˜Œ¤5øÊ8_Ê•¯NÓ®pG{úMA¥UÝ«Åß@š/²²ÃòzX½ÙZ™FÙ*<äÏš.bu* |9Ã\ûŒo¶p°_¼"ÄNæ¾ëÃ*Yeöt¶[|ø83ü�`¶%'VÓ+¹�ÑS ‘’Râ îhö-¡_^]²F+O’<|–9$zEQIªª#Z_Îþ‹ö £«s0P[ƾã­T0º"ö†& „-<Ç–>ªQ~Ê‹©¾ªŸ·n"P¡Aî·¥Õæ´v®Ö†™�FÍ)*xÀÌsTÓÒ§0PL¬§R RÏ^†¯ÏÕ¡*¸£;¨¿¯O.™}Ð…”'MÀý|{0†ÔâŽD%ÂÅÁᰘʉ£S×kq›d‡]R+×[EB8Õ¾xOͯ«´ìRn,*ª¤›KÆ?JG)RäsRMŸŽ4ƒÑy�¹çŒf çÇðêz4&¯Â°û%gäð"oÃ÷ͽÙ9cæe2 w5 gW%ÄÙèfsôXq%*Íü„¶^ÿÓ!Áñá¡¥»™¼:ö“… ƒ½ñŒžÁIÇ×ß‘ý YQƒãžüiWKCM7.Þ¬&…û•cåïªÙ7®iÇU(Ä‘ÏøÙuS9Ÿ“ì}UµZ+š£\'|¬’Å�^tˆ!=…2Y©ÖÅM–t�çÉ�QëHz»o/zª2¯Ö¥t/ü>�§»\§ßî'>ÙgT0"*ƒÑ9‚jÄŸîv¥»¿l‰Ñç3]ðΈú¸’Q(ÙØWúHå²dM§YzHË*w§¸KO„}zl4Ðñ°èѤ³ÕÀp€/&Fd€ßx\Cа“ý /~ö­·ßÃý˜*øMýŠðÞíëOõ}ÃŽX¢�Ç�öþ¢Îµ/^ijòŸÄ™K§„òÐü»àõ°üc¨™wåˆÑ‚—àpc8Å[‡×µ¡·bµ�/f ³Ì¥ý‡éhG.HoxMîÃèK?²Ëëÿ”Êœñ7 Ëê‰�×!L™ÝÐWü2FT¬É]ý†E|\;¸ì’lfWabdá%Ø&T¸?…Ñ»ÁŠc‚À@è×·‹²½jÍňw:´ kGØt- ¼¢J01ІÖP¡3û¦ÛˆöuÄÖά…·÷ê+“ ‹·ÒïÖ9Õæás8JÖÍßÏHf8ÆA ˆüEY?Û9 Ðc²W-Õ4[8³ …�œúNŠ“jA:Lm¹Jw¯ï~¿_²úžMhH­«¯Ke$` ø}æïßX«$-¯íÿ Ïø}y©4lw<£ý´õÊ=âûíNe¼ç ²‚>¼�ÓC#9¥ÖË©MÀHÝ; Et2ÞÄ‚¾nËf=èG…±I­`bxؘޠïmÕ¦‡žh 2@Ãç×{ëÆË:¦’¯•0>—‰¨00ë3‰á… ¨0x%É+È·ùÉ—KHcÙq޾ oÙ!zûô“”…�;<Üg#í±üúRÁ§ß…n«�w{ãIé/õ$å^º*;úMµ‘|õ¾éáWBu ÍÛæW* ©�&NƒB|<§F^ÄÛ:Á·£gÛ,qoxy¶Yví}†…˜€ß™¿_ wµZ˽låm8zĶÄ~³þú–¦�dž¢>q'u‘†¬·Ãb)ýŽŽX/µ“hðÉ£e*té>‘;í% @5Š×’qÍe[ª=¥—¿ÆÕæ.%ã®ÿ4ûÐ.hþ ½àˆ½Å¯¬^Ò#úºœ)TâIÀf:Ï¿ÎÉÍ}7«®_ZTT%Çïr¤am}4GÇ@„F2´³Öd¯¦¬<­.fø Ö+v¾$Ѐ,JBŠi†,ÁR�jž¡‘^íý ×ÆÚ›OlwÜT=¸sÈ%ý-‘:^hv«öÄæm‚à�ŽŽºL—ë·Û:0W•,Z»Ìä.^Ã5ÏèŸ ±&�VnQõKp²sAŠÇJ×@ +.a;lÇiåÔ7|Åè¾wë—9ë‹ÕíÎnF¦ç¯Y¶ÈõÎq�Ù €du ‡´Ån|[j6˜ÑJŸ¯Uu8x ¸]às\V‡ÔNï�²âT›]ô t\–¸PƒYVòÂ�ølcÆÌ?=š¡ÂíH¹/1–%)�ìûì%ðÒîÒ„r98õÙ“e”ñ[f®²¦X¯L1Q/ÄÃ9“µ¾½Ì r$Ñl/ƒˆy³&­t÷Ç6ÒåW]vDi^S¥È„õÞ}Œúˆ ˆRØùÃù‘ÔX£bªêQIàã`M_ÇŒ:U¯ýú­T€´Çs°sQ)—ªÀgRiÏç°£¥ª½X· «%êSª:~«øé?ÐÛCÌðù3ç*øJë4¬¯[#€…*¸s‹e6«?¢ó„®ãh”“«-]öBNàØõ,T�Œ8‹Œ™Êå ÃRçSêÆþên22±úó7¯dß¶SµÑ0ù>EËÄ¿£¥ÊfæƒWP¡¥SÕÖ×Á"é§§eûAé6Ùá�PfK3þ�Yò‹à'^øB±ßdñÅûæÏk® C]¢¾ú&.jµäÉêºãX}•1ˆo5IS⌀¿îÒ´  gâ·‰#·)’d^]åyŽ*‡RÞ) Ï–ˆüÖÒ7Ø-\�œû#“Ųy�GN˜¨#ÍÄIÓݨ>ÛçÚ‰7ìÏ£OéDã—þN…¾³ô¼‚ÛZ–"‰yá®í’P¸÷²`œQ{DSU­ïv>~�»Óª€*Õ¥@§Yùiœ5HHäŠmè8+óöÇ7È0¢Íë¾­Öޙ롅»SÊ£=t’6R°d4Ñ�A•¶žÞ\1“›šuM<� ·­èB‘ÑÝ}òÈ + ½4‡“Ž£õø7X8Pž¾p6ˆ«1G±µ­¼ûê¸HPä]KbÙ俾KF52öÑ28|{hÁÀªÁl«v‚Æè) C©EY¬üà^9SËŠÐÓÿÐe€š¹d,c¢ÜP^ž³WoEµŠ´Ì¹‘éåè-YbÆj}+]oÑ9ÓÅ™xh;ßzòr^§>ý…àÒ4Rá1�‹ÐUqaô!Y/ÄàMSïun¡OÚŠ��ûý¥EÌ ÓñJ£Ÿ@z(‰ÍL†JÙû©ôA±#Öæf·9�:"k‚‘·u§š=YS.)ò€æhN,dÜòN©ÆŸ ý¶ò:ªmövgÃ>ßU+alè™ï5`K<Ü%—­9£‘©pÇ„õ4ìâ¥nN®tUï…f¼¢Â²�Û²¯¥˜Eß} ñX¾½Ïªq~#‡õ7½Ü© 7ú¯Ž �}Ú埕é^£Jw š,'.â'¥b�çÖ¢.YQ ¦ôªÐ•î‰Öjy“­¸šÂr‹w=KÃÆ{bŸqscxevèì'‰|½ÏkÃ/ôŠ1iññc+_Ë–Z»®‘#/�#‡ªæòM*¸(ßœøg9tû/‡š¼È 'ˆA0®M;*}làæ̘0ŽíWå”3}±2ÑJ¦ù&½õÁ2DF|¦A‘¿,ëº]ÓSCÇ Dã]ÜŒœ/•r¶Ò¢RÁð´2rÃðåC%à²*"ìüÄXžyQ¦Èì2y̳DôÒ3¤Ï´#T{žÇ†kñòœž„±è#]"‚ë¶Üåv—ËúâçŒ�¿Ñ'@ÇnEáó$fóË•ŸsL"t ˆ‰>w4‡6ñï]qúr™« OÐ;ë iii½çúP´w•_>ù˜ÕÛ‚³èîü±R�=ˆ£ÿ÷{Û´£W�ÆÍß®*#’+\©5r!Ç´T)’ª…*sé oG®íêƒ\9,| Ƚµ*Ã%fNÉ�¾F=]í¡sîB¶ZÔrÊ öì dÖJL&½€ºnB‡VÐÓwÔ臯 S•Š_®ïñ‚&c¼ít™ªuÞÔ%ZB™á¢A¿Ï៙PÞˆr·Øƒú? �}:k•º^ä?i‡>/V›eø>»[I‰Šþ4®ò‡ÄÑ¥¥ÇB�=ÄÜçúJM ÜÅ9îmŠ�÷YZŒƒ@ô ÔZMº9KÌx1ç‹/‰p%§w"þŒÂU– û“2‡“2{²з§—„×%œ„·nÚíë|™îr•IXö Ϩ×=ø©žNØpxZy$›N¤—ñ+…¾�ñœèÚmi8 ¼¶\Ëï‘ÛR˜ßúíz6–@¶T'_jŒDƒpÙâpho×6½j›©÷õF6RÄôb`f*2R‡·˜ó�ѼÌVPù|êÛOÌFweù¹æ“sýÒ9ùJ·:Xò³‡•Šù<Á'zÎ8¶�”#§°„t(<@«óhÌ ÙÛ‹8qÔ´ú®y RfÕ ­[™(Ôdï£k‹¼ã0üE—–Ëb>Oº çq­ÁÀç)ËÂaÖ¸ôÛ9—�«­¥áFÛÝìRT×ÂÔ²)•Ù"^›Ë 0ãÜÛkÃ%1Š(Œèp¸97\½ŽÏ�ÒSÈ™€÷ÓSŒ×ï¾¾Ù{¡�¿»¬‘¨ž�P˜ß~RGÆ­€S¡E�u·(*S:Ÿ^FæùýëùëÁx �†±¤•lSû[ðü­Hznvaú¾›Å^AGz§pÔ.ÎGz6ð뀩³8s’ŠIk„ý Í®ÑÅã§�Ö“%iÿÜv´ñTDþ2±˜ÝŸ— pÉ{ºÛ*`Æ7ób.‡Î…Ó„HÝ_ ßû£<èN±ï0r:ç�a#°þÎ4$�0`ÿEkVK ZŸëz˜ðÂùcb­ �0*b\_Ç®ƒà·z,Î,h1=û.9!ÚAʨ@·¬î�q†Œ¥hâžïPÅ.où6Ð�ç¾�OLØ¿ÆÆTK4AËÌŸåÚš~øcÑV­*BóBõ3’äƒ[ŠeîÔóÓEÝà÷ç¾+÷ÀuwÀúÿŪ–Ç&ÛŸKk;ò4„ô1š|¤ …Ô—­l—]&J¾hiÊUf5'0ÐÛ*üÑ{,5ü·`$€5©ö¬p×Y·²¤°u6º7‡ö��™§`êº�7ØE3`%茻=¸øþý£ží[A¾T†ÑËKä›úÖÇ«�&Ðü·—µbzgDs”ÔÔÔ}uí*åH=ßšïÄö;,Ñ2$ÂÓoxõJ¤‡šeÍ”e †á¨óƒ¹/ô̵y̧±Ÿ>¤å¬ÌÈRíû˜ðöØeO.̽bÂ~c6’¸±¹i˜v¸¹ÉjÔžŸn F7g'dÒm2N;ܰ¸Q»þâ-$§3ŠaR�ðèØ{?ò˜•õ}%\õ$7~±o¦h©…Ïbž�rRa~♢06a�CG¾¬Û?¬× p©œ�'ÕΣkMqe¸x¥™Õ­â‰%°Þ€ ½í,‰œ9tjòGBgÔmªIé,kþYïÕ_üÏ;à½Ñ£ÎE¶dÂ^{\ÎÛÒ~|j8”·ÇŸ‘,@µýˆ1ÝéÖ¥ )}š=ïßi¾Ó¾æZqìÐCü­pƒØÎ¥Þ”{.åÝó ÛŠ'MF—.ãäÊ‹kx-7?ð'áÏãH„´2)ðG‚sÐõôFÐ*Ö’<ÛAþ±Gµ´9’¬¤Ùnäó‹è½ ‰haC>Õ²©5¯›~yq4t�’î“Á|õ�‡¿]Ñ”M¬—¬ÆE”ƒªÜ§‰—§ýzØèKÀkÿè–i<B¦6•hÊTnžJ5‹ k@âzWTϘœ�èØv»G`’©¹|¿#1†™k¨IcÀºè£h@îJð+bn-y *ªÐªãû¦$tUQ‰†²©Ó×…gǼE¸(<²ªª�…ü€óƒ¤WЧ¾ÓTª{Üg¨pqJœJ%*ØÞ É¾­¦g¥0êí’¡�Ä v;o[Ás ÄJ�ú=2 Ã¢oB"¸È3ªøÍB¯rبæi¨ ÄßÜ4…çY”JÉ{["ÂpÙ¼³¨íBYYs¤àã¤êÔ/[*žIõTUãïÅ5—A*ÐvßÊ•&aY#­ºTæ?rK¼ÅÂë!\Ϫ3 ëBàŽ˜9ý �TùÃÐ^Óã0‹µˆ(….íFÕ©ñGŽû½'í6rC¼<¹ l’λ]¸Ë†ÐµÝUµ=ìýI€B’-Ÿ�ŠR¸bG¤®„qN{�D�[ƒøý°F%sÆ ±g€ÄË‹Ðs‰Š—ñ;ÆeºÑ¹,æÆ¬û®‡S Îç’º´<@ 6SäYÜ´Í܇e¸W“œ°]‘‘J¹¸Jl¼.£éöï]…ÕáZãUC„L– „ÉaÃGs@no°‰ö×,ÙÜöÓïb›orI¿‘:aüùÏ"³¥%-ÀÄ�S³ë nX/¿æéþdöÜD„\þx†`;ðÍ6ÉÓSÉÒu!‚ˆ²seÎÒñ E—á÷f—ƒ©™½ü½Y½I|?)ç­7ä ½A�“ DÄ ±¦°¡°!Æ(ý³Š£Çõ JÄ+ÁR¬®Þèj6õ~å�óóã]yûó’1«E­nØìÌLŽš«ëòðõ·ÃfÑÃKó‚�ìIó™'ËZ��(^²kµ\Õ_LGÝywi|¹¼V*92,Lž¨ãÝ �ŸVveÊ;%C–Å-üµ¸}g¶ß;%ÈÅpÎ=ïËd2>}·ÙüÖïšÊ JÀNùŽr|w]0HÜ÷óÖöìщÚa�tæÏ€n‰Ö,Í&øtEŠú½–Ü�¹‡`ÏPÚ!fQœÓç­Ôx-r6ñ‹WoÅbêe/诉§nsö±®“û+0µœ×F^Kk«®ŽN™~ûóŸ üçÏŸý"##!�Åê去2jjñÙö'©U_g=¹¯¿þ\o,$Láü-ï¼g�*·ò=†³}ýÁé™&þ %fHŽO°7¤v^”üWµc5Â¥‡·‰ÉN=ÈÇŠ‹Ög/ÍUÏã 7½üi©ÖŠ7L._ûðsЯð{¦6¿Ñ —RÆ1öÙ€ÝÇèúýÚÊñOmª˜ÅË‹�B©0^ôá1ÊTÖ·| svø›YN—”uㆬ9{µF„ô�f9óáJà.®¦Ä«á™Ù žce¶J"²†�Ø Pµb{L^^ÀW™•T�˜r¦äû¶¶l GÌý¦ˆD¡¦�“áH·ôÇY6³MIÇÞXµxEô…áÉc J¥)†ócît2ª¨Aôï4n(SNeçp[˜\ÎVçQ~(aãÿ³J�¹Í†b\ƒfƒª¾½QR7!%ÙåÃaÌ�‡làI÷Òî1�;rkÒ¦ŸÊ½Fƒ€D½�AmÞËõ@2vó‰Ñ.Yª˜ˆ•áÜ¢T1\Ö §=X66bJ…ìW¥õkÉ<Ζ¾±¢™J�ÞüгNnb´IÛžó7>Îj§fzµ91ó¦±äÛG”Ã]ÈÖp=Ò0@¸Ò|2K.¤¼õz©D³š;(¦ÕƒY¸—Û`}ÄKãµñÌ©q�Ùø^É×g|ò–ÞIæ‚ “z+ƒÎ!dHmO[™Êú:Ø»g¯0Ý'©w@éÔŒ^Qõ×ëhËw¾…¼^JîÙû¦~<<¶’Dß<Ÿ�ªÛá:º&ë^<�W4ô¯ð)IU§^šB"À<Aƒsµ„¸H­ÏÇ9Ú7’”S7ÕÊsÄ Ï;­âÊÅâåð1ƒëG¢¾±ü^ýVd÷¨[®£|�¯/YÞ[´K¢¥ówÙeÕâ;…‚ÕµeKÙßÄ�ÚåF}ëéœÞ/¤·5üÝHsõŽG.ýWºÆvÂý«Žë7Úœ'ϯláüF„}=ó®§Ó\+èŸ Iø+¿õ|îv¾‘&—�ž^¦B Cd*::Ö$ÊóKï\aÖ+‘ÄÜç; $׎-ÒÄBžîñ q3u‚„’;!ôò�U ߣàÈ�=agL ÂÇ×PT4�Mb1ê#¶L>)³ÞÕÎë1ã/×ÙTS!""^Ó6@ô u {8îdÏç&\lnޤÚ<»ÛŠX.¤wÜÙ'µñ`ÀÛã»™„é>®æ$Þ~‹¢“êe}í�Kçrö•,¶kˆ—Su„}�‰æÌµéáK=9+m˜õÉ2¾:<Û8¨�YÜ‚'w±èAf®ri“õy—Gti¼á'¼áãÎÎí6ÏTÕ…E…eχúxÁÒˆ1¿Äí=î'Y¾Eþìü£É&£>}“%›f�ÚWFÏ2ùfHÖÆ¸N7„„„·ëþ¤îƽ¡8Ähų¤ŸìÖaîeîy0""‚N½,gÒÜj¾Œ„ÛaÛ†­ÅÓCó>‹ÝB›Ú$ÝMäMÛV¡ÿp“NÃÄy:5YFll¬íšÃ’¤”””‰ÉÀ„y SÛm×êÓµ}P)8€|ãã”U¼Ä®—Uf=Xd$IN7êí{õøNs’mçe“3MGùòÍŒW V+F®£"Æû“‘Èã*kô¬&b=…»ÙTjaÎð þ ¡?í:dê£èwÖ‡JJ˜D³ù?_Ëä¿þT2_ÞÔt‚>»ZYY999©¨Ä^] ˆäz§¿¦¦¦5§çÕá¬HÉ‚y1d¹þd¹ ¤¬ÜÚÚêÙö[8óvô ó.fãéOKVåW.­ðs‚�}q'?Éö“IÝ:šczä=ÂïešÒø ë~1¢$·¼¿ïúÔ�Ù¦“%׋fžÍ_a1äÇk¬cë·Gß2JXÌ[¹B�‡Ú€Ž¸±T’ÓÍ®u¹šËóUý§6y«š5 pk<¤”]Èq¶ç$Á6B�Úý(}Üðõ¿}� ðÓ‚îêÎg²ÞÈÀŠ~^yÙ²B6©\�·»›~þÚ@Ú§_'�2Âîl#8z“¤ ïneãÔZ!7^Ò5�� 9Q\—_/)þÝ¿ •¿4òÒö®x¸Úþ(CÆ ж�å§âq¬¡ªœ¶ÚÖ8­’�´¦å÷9·OÖ· ;#-�{w¶¨Éùü(Ö{óe1»Oà„'u·ÿv†Æû� .–ÑÎÊS£CJïj�tTó¹O®»\—É·üг�SŸƒ“ñSž›j® ¹X/ų§¶Ä™Î±²'E¾˹Éÿæ%¨p“¬m+jâk÷8¥9,Á…XÌx¶Ü“1ýÄÏ·÷ZŸ*f`•ÞS$ß>—í¡Öí_UÓ­öÔ¯"DÝt|5›wïú8©ì•ž©”:'AŸ �¡[Eªøu2ü»ý·î'îk_Œ�Œå²UI^äkDXâ_ ‚ÚL&ñ'�Dà:v‰ïoo¿1¢ý·átª£¿ðõ ‹¯[0\¸�iÈÿß=¹ßõ{bà(Zú[�úÅþ�ûq ŽÃnqJä›-ˆMØÿu¯Š¼®§¼à&ׄØçW™œîã]ß_u\2Àë¾ü“ë*á!÷ ÷ßMÇMDø w({à/D%!Çöÿí8¶uÂ*‹1­†˜ ÷ÏÍ©µê�¦¦²Ôеµ´`ÇÊ ÌOKÿ¯f0„3'ÍÇÆÆèq‡“iji°¨N�H&1ò_4Ø¡11XirHÚ8KÖ$±®…žàÿLþkÀ¸êƒ¨³ƒC–�Ë2�·¿Fš­9µqó&ÍëÛÛ3KK¡ÿ);ó›¡M@1ë"&È%Ô�¤¤õ݈5Éúµ-K›ØÿŠeW _Q¢Á†]ŽòŽqÙÕR&/k*ÿ×4Ïñ¥¯V$:EVÁV‚m(æÿm¥.÷˜ô± Pdü7ãƒSU«¬WØÚ;¯ ø¯sÑ¿þwkßÀïì?)ƒàúêÿëÄÿ£šÿÿþ;POýGþ?ÈYÔ0øÍIó?ÝÚy¼YÞÈE•,l¶þHs—Ú¼«ß5øaªsô�õßVz´«¦'5Uš�˜ë–t.G6G)/þWg�¡-÷¿kÞ »þ¾yŠQ ˆÆ´é§´üÙ%í­òîß2öÑ.©ÚvÜ=§á>«’:N“¤wO?ÒªÜAžÆÆß µlõ!’SڋĩӸDÓfÇ,)£»ñþÈK˜¶¥¥&ã2\àÍËÂÆQÈ0£¹6<°Sh8|ŠØ Îñd¢1¯+»ÐXÖéÞÛÆ¥Ç˜XÞÃÈ™ÑÊã‚h~•­ýÁåìY:ж_Ðøõ[}Z %áKé±Lò¾©®ÐT%ï’…í÷·Bó�nlŽ@oÔ=NÍ6ÞuY” ç�dÞ†C,Ë E«Õ`€Ó ·grSÉ*oá×qb0ç´þÊš±ø¿.¡ RÏÃÀk¨õŽÀ¸è¢8‡«ÅC�ù6è{•¦K�™ìî��¨‹ák¢­é1,veÿ¤EDÁL>ƒY¥[DSR•£Š­Vøz{ºø]LSXURVTÑu~zr:añÍ™I_°™×øð{N,Œü€¢Yû1ååltÛÚŠ.š%7{3œ!dü| *�ãžmàwÌÏaò�þ�9¡e »ÕvÛH€Fø‘éxµe+ Ða³™* +l1¶Æx7lÍö2äL~ÙôWO˜2�*°¾KÂê8–š¤,ò²ûà2Äq þØ<¿p;×��ɸ3Ò¸ÌÅðÚ¢™e¢œ=ª[‡CH'MDð=IRÛÁ±>ÄYÚ9,ØÄa«1{ßxÖLè X§J¬þXÿû�ëð÷�n¸Ï®–{+�¼<\úCoÇW݇š¬ëžtÿ dO‡×ïí<Nã‰ùês‘mµSO�RnFjF2ŸæÐ¬<é¼wÓ¯ÕºÇ õ¦ŽŽ¶ËX\³É£¦•Øp¿›hÙø¾Ñº¹1Ç*­]ÇæÙ¬eÕå.’%¼ÈÅšó©V3[ÚK–m-¹ykà8GŠ6£…ô•-Ð’Ù[ʾ޺¾^ºYÃÎU,¬mIÓ’ÕNN&æ|²Í‡Ó�2-âv-ÒN°©…±” �bÝ›9FsàC]]?|Ã"{/çIwËÓò§ywÀö;Â2zºU[íÿn„ÔñPÐbp•AÎIˆ?dÄ‘’ªÁÀ@y'E@ X—ÅBb FyN£_©4JΆýÀ|ö¬l}õ®€òPl$þrê&î𳺪†½}!º vúK¿�o›Á�‘.œErj*:?4K¦àðùZÚhµ¨0Cr*¶�á…Ìk¿[ÖÖ¥Þ¾ô“èwž™Ã“Š?g ÇÏÈx×9¼×ïÌLˆ¿„_$Qª»Š*ÆÛ‰ÚÜh²õîÀ!i€�¥ÕùÙš\é„Ð|„s‚9qÙ¬Ö–uÜJv�õ¹>6>käÙá´]Št«ÑP’·AÞˇ¸<®ÉƒÔÌ~hùN�Æ5 Dä쇗§µs {H·®ºSߎ�ÅâpoIæN89²™EŽ ªÿS˜XÖ Y‹Á_ÐF«ã|Jj57ºg)XÁfMÚ�è=šñçÌ4BäÐ|A5Û� y„4�3l$•LÉQ¼)v\úM";ÈîÛ¤tU%\±Õ4º—ë^�7×3 SH«ëÅÐ9#@,†Ý½u;ò6iÇ͵`Ö—B§ ˜ W%¤~ÈÐ$׬6²TÛ%Ëìx·;:ÌÐÛl¡ÌïåE|¹ ¹’˾¸ãT¤÷ïü ¿èÐ ²Go“µúÊŒoS]7©×²ðõNZ=é~e«P7~Þ²6mÓÊc½æU$ãŸf|FÑç0§�U1– ɽr±-X5å®r²ÐNå䣴g‘FבÈtÖT7/@ äâUTUU Ôìð·ß¾y`¿ÓJ>¾üFýqø¬ÝÀçcö@Q!í�+;jZmSþÕ?|¬wÞ…·ÉÑ•/ÏD%•¯ÁBèU¹÷uœ×|èÞ‹^Ïeøå:»)E‘½´£š2¢u7µkݺ —U¶Û�ÿoóõ«ç§zŒi¯¥+]­ñ§sžÉŸ&žGTã12ûX '‚ þp€ß<ðùe�kùœ<Î�ÅfÃÌ|ÌH€Âð+€ß™EYÛ9¹ Aö.LäîÁèºçÚu~× Sûß&54¥jËÅœÆèdèàéö½#§£9µW³:ÿNtÝdÅ© í Ӈ޾ÏyiB€d2ž…��}aݵnú¾H›¹»Ûxö¼éâ9Îf…Ü‹?ú ¸ô=ZõU™q^ƒB©Mƒðû^~ø,6ù²¥ê}ý:­ÈŠ ×¢®‹W¶€Ä‚2ÜsÏ•Å`\©mã‚Ï÷1³ˆÑ1„#WŠÕø8Nú¸2œÒ–ßú¿©”B ¿Ãùó |AlóEùI�ÆLÜÚ ’sÿº&¸{õÌrrÃçöä¶uïxw§F/œJ£Yi)‘<¢Å®ÑÇ(a xÓWvΰC½âÅÔ�u+IN¿­LŹöŽ|‹8¬q(-u”¦™Ï¨eü©ÝGíò5YOS‘´ãIa Æ5­!†´³�\o‡9·Û‘¥¥C¸HI¤F�¡´û˜÷“6×,WÈ—¨Î¯ú•5��AG�ôÒB—þŸ‡Œ�÷i.q(a†�-qÍ!ä7Œî_*—}S°äg®º]‡iÔl_Ï>ÜH_„˜büÒ”,ôïÕa5CÇ@ŠzPì�Ÿã#±ØU¾âM—q›ãí*µ9W 6G©|áAèí L/?b “ ÕߦµþAuC|4.©Ÿ)yeAË´pº74|ô‚¸ÙpÖÁ‚w¹§JÐõW¦‹¤¥’u”|Baa[S–—DcI‘‹î7mý(ì”iœf�¹·y7–´ãÕ7踲?ø•¦�Ò‹j‚k î´s U4œ#ùÅ…uYYUƒ§ZOä"³Ç5ÅÛÕæ½¡‰ Åt †‹*ÖÖb‡Ñn"+©kjñ’Ó�ó~�Óð§ýe‚êÑÀÞ óÉ’Ù‡‡‹9ˆ¤4ŠÿA�±êT`з2ÕmÝâ$8x ç!]ÓpÈžÉ)tÖzÕ#LLô;¬íQÈçÖ™ôk5�ž¬·b/¡³Ô¥_Òj·Æõ5E“o¶—cèÈ7)ºóß¹š¥ñ"ߜзì‹�Bèæ®#™‰éEUSø,Ž™bXáhŽæ™×ÁSh4ªÕôV>d0ÉGQéèNó õìçÍ!0“žœ¤ô�6¤–m}jCÊ\Œbðë4S+ÑðСxÌ:Ë`§ÛmËe²).[xëÙ.€qÀ[½© ÏÍØÑ€”$f˜¤êƒUOjŠqãU[jÑö@0�·h6½¥3µqäwþX-ø—„¾>H#î¯ ;›\ÕÿÓný�N>¼ýù’ ÖÏ ùÏQáÅùŸŸ_ÿÿY|�ZiX˜ÌÿÔRÄÇÁx¥)ù¢��î<�ºŸ€¼»›•åõà8Ô ÖáJ•TT^~Ïq³ÆÔŸôBÙ{(sJF@F-§ˆñMSÎ!,×}òJFÓyÃÅ>ÂÛh4öë ô´4= ÇçIˆç�4…÷ŠõLUÐñò³Œ½% %°–þ¢™Þjµ¾F¢ëOZrÑ;¬�ýÖ(=2ç"ng¯éÉãùïè¦1nLt —’³ŠÂƦ„äϳb¿ˆh�õæ×T~µ ËЈuìdQÇ1c:|ü˜ØÐS·Ø|Ù^Ió�o%JmÅîÀ³Š‰çt7yêèrûGâÀÀéÀ@â�í�ŸÎ Üú¸ä¨,!V¡E#ŒùzUãLZ!ÓB-_;^¯ŸKmz}eÄLR³n3Ž€©û¶í”ô›³FQ•òÔ9GHÒ"*OX啯Na˜øV"iÒ=Œé¼ç;½/,òà«ôhh¤·äT™Ñ_–“· ¡ � Æ—f‹f+Êò‰Iª7mê›ZpkÈ¡Oþäkš�{­éÞâôXö…ì[ï¨ç\=² ›§lΘ¡5_]}ɘj½õ¾¿ÉZ5Õ‡§ÒÀÓÞƒ¤ÅÀ·i½+nn@MÿýÔ7ª:–*Úá@S‹�ƒ&úžé.5v¾îÜOB+â_=G®¨¦aÁ_ŒMÅsßór™4 `-(ÅdÄWµQ9ÙK‰_'|3äSÓMÎxúl¨é¢èsÀÏ< ™ÞÂÊ}òm¥¥¨§dÿ9ͪp`´ô•ÌG9´–ÝæßÞaENö-4ÛCP&5Â#úiobI¬œŸ÷kOtëÛØ™ìO•]KeijE©óM"a¹#ãpvL(�e™†B[í†DŸwÛ«±à{ m?ÕÝ”®”ÄvÇ+å³™M„õ™nKa¦Ç?ܼôÜxÜ», 왟[¬ÿ’�Læ¦#;F”ç6²•5ºDã¾ÜiíÌ“îUZx¤8$�sp#+-­Ž(%�‹O÷µ˜ŽæäEoK½[$¥õÈp�owDü]È …ÂÄ03?�ǼrZF«ðAz½Œ©v‘]¦–:mΙNÖSÓ“Ô Ýä„£/XðCf…4Œý&9Äà ´Ty:^*xLñU+%Y?²béd(Œ &(0Ig¡¡eJÙeháá?:h•Pqy«Î$O=Öœ>_â‘43³¼§ý`/kÚÖù±Õ!ZÂ̸'®lQ#UÏØw+pS=lô‚+�·½ŸãOw{{�ŠiS²ú8$_ÈXvo¾Üºv»ô¶6M8£±Ç›šœ:.´y¤âÌOí#˜1�Œî§v–‹Ê*¦!Ò2’’(0­‘,Ï`&×1~¨`å/qT’°áˆõö +©ñˆ a`Ⱥ- mw>f á:ò ÂǨS©íî¨iˆöTQsÕÓòyï|PÝœ—9È�Ž`IZ„¯3'kÝ—¬?p]âì©ÃµÅ�©ì11flùÄ€È8"É’€Û¨'…EŠÃØ8ÉmÓ “}å“89HüC_ñððPÛZU_b1ã;Qjò¦Äæ‹Õ>&ö«7ÍL©;S YX[/hÙ.Šû̇5v‡Z90Óð¹D9â�ÈttõC88ëêb®“m‘¡¡¡hy—ç?¿|5ÿ�QfZÅŽ?:&kÄ=èŒ<�)bìa(u´p��Š2Ò8y°/a†ýçë6'ÏÞ&áÃw"Ês&?æwÌvô/WÈ&^”ö‰«¿žZøZs�ðò'è4…ËkØ‰Õæ#=&©»}=¨“‰PÝØºœ¦˜ÓÀñú¦Ïi‰ðío ‰Â1ñiY_ö™ÒG^X”¹dÇ‹b’â�’’Æ¥ÆX�ŒÓ:¬¾RÄJOMµ(,Â_ t©AÅQ�øAåd`êQ¢i=·¬(ÞòªxA�:]ªjâ‰tw¬¯¬£ƒ—t¨Sx½;„ï¨Y9ì2�9fEAKjäUWz¯ð“o Š|öÜY“..gPõ,^A DvþÕ�¶M˜&^:q¥7E°IÎÄsŸÜqú<íåqrZsT3‘¼2’…˜oöÍ"Ë({–ÓŽé锈îf®0Ûˆ„?~6YÁ³Ôe)9¼ yåjÞP¦Š¥ù�[X'$ö÷¼$¥£k+(NË-rý~ßç&åhÕ,æ—€…3Ÿƒ~õa~á+i܆Y_ú¢uÍá‹>ƵO$%±Øþ¹ôž«ŒêH™E 5ïi¹mÚ”×#e%“˜<¡¥ó·Ì¹Ã¬£ÍÀ9—âKùQÇC9·†õytl�4ƒÑôÍi+ŽÉ$+ÜX]¬¾Þæ¿óX˜€²ºFͪ3>ï+CˆÂØ0û}IÔKâˆÈ|ֻʬ¶ˆbTÖÅ›ð+¸|1=7{lyÉú•ñ 2ñ¶WÎÒZ¶û�îÿ¸êMTL(q®Aq¬èй�ÎÇÛiÓŠmÏk¨\-RCz(‘ß›xƒ� i8O�"ƒßt7øºé2k*p›oCäOϬ  47nRd…H 3¥éÅj+´0RÔ×ê> weo±‚F¾„�´¸LÜQ’m¡Õ3¾d\ÑÐádª/ çek¯…Õòp Ü�M6ô…ØÉu׬T»Åuñú[ñÇŸ£Þµ4LÅ ´˜o qb*Ù)ìO©Á‡¸¦¦=”%ÃCò!Ðâ$O9?Ï5gò·¢uKEßÿ&»§¤à¿9:"ÊÊË�%a̦|||âÖª\ç>/ÿ´©r“5lõܨIIëP‰ô_ÕøYY~~S =|<‰è 5Iƒ’0H͹o ü)ßñç«ÝW5h?õû«¼æQ,ò+WµVKCÿª©7Õ¿˜búúúíV(V/ œjÍÏÏŸæk'S{òmX¶qæ¯ÈŽeuÎh5­­­×d-°ÔÚJâ|)¡ÛTö èãêê*/É¿²Äõ85Ú^òôOŸùMr¼[¹N7“w%Œè[~è³ÑZ^]µ©Ô8z ºh¡ kø§›ðuǼ­ •szfžþÔÚf×±Vå]µH«Ò¼;haÿh){Êö$äà pÖ²¿É|>mlllmM<ù¿—ÂÀØ]š�0ß`¿ÕËQè¸7vuy©£ÙsEü´ùÇ :PGÓ�¯ë�ñ¹lS¼÷ ‡½µ0ÿ±)ñÇ�R£’¯]�о¢½� ¨c‡ ?[Èÿê¸{ÿù²Ñ9F­Øy hËØ« ûç2ó9âe ¹:;³ÏÇ: P^®íc3“ÕÕ�K_#�Ђ€‹Ó°?½ÿdžuH`½ø¼@Ö;µ¼ >8XœŸÿ[‰kpîJa;ƒææÖ†Ñ‚ØÃ¨A†ž‘]F÷ñ2˜FýüÔŽV:þƒÁ}ð%I ÆŸzƒ?©®…TD¾¸/ˮެ~z(äñÉÊ}L뵄ìóÍòyWì‚}!¥Ÿ\6·9>^9 å*éÚâ”a.Ss©ªg˜——¶‡{-«¶~0“¾ZsúSìÐV°¬ã #L÷“R"òKn[®F;M+œ]ç½To,f`w)t§À±‘‘‘Oš�¶â:vµ»—¢WOðrÕÝÇBUjÿéŠNŒ>b êb•¢÷»\éšµÚ�µ‹ ÷šW  „½�‹62ßÇÊ`¯ç»=‚„æ©\BæÐó ¢²�¹eŒ³0F3ŸéŸßIF ñK7ÿêûŔ˻<=Ö{Mô'‚Û>ÆéÚžÛÛ¥Ç#�½xú� /¯ûyŽVi:«‰””ÔP‰fõŠW6ø[}½+Xëø'P¦iÜýòýyê¥X¥��,ÝW¼yŒÆáþ€7ÿ3™ö�å¢Ù$Á¦²£Ë ¯üÉRôöVs¦Z�ʯR2Œí­-¬ØCS2Ð}‹¬³>Œ9r©b—| �x5õp{»ïß…r&y@T§’"ÚDËIúêánδòÈ˼åi²S ’ûŠ¢ïOkVN�l¬‚ÊZJùJš›=;ÂÚ–2I)œŽDE$ö @O3…ÊLí�^^�tå-ç]ÈL+ž'­>s'gÿ®ðñ9Æ~¸ß€@l€YGs#ÏײÚñ=‚5³ìV>SÑ8BS*úúÚŠé X±±éØ“‚ÒOñÎ µS.Y$%éPîË–B£äŸÜú>ž“bà©[X­VJ*é)‹Z{E yRx•ˆæ�_ÞŠù–¡'gÔPòs|•—•,DoUÓx‡]Vs¾Ü¡§+iõ¶+óÀÀh}¿oyóÇeø¥´´"¿Å‰Ä «=[Þ•Öo÷vé� u‰Èæ’yÌ ³O›_õhº�[ý‘òÉì“YÏ×¥Êy2ö2<^·§úÏç ÷÷¥jaú�†g›½ý?Ièhi‹Š‹ÁHÄÏŸzuÖI­ã§lã|[dИ[ÊÍííîÞj{8~8�÷åY�1u40ØHÐ÷Yœœd±Yª1ŽG@BB×åärww¿J3#“vN’àÍé¸Y,êB¿S>¨7Ëè ìu[xëYÞÏ凓ìpŸ=U—Èêb´Ópñó3µññ�T*LÇã ¦††:uÇ!hóNÿLý^¾ÝöJR(WY[<¬—|û#°Œ�î�•?.ƒf•¨à¾åß䀚2”‘¯+E0�·Â· {âÐÅ CЖár�4ÔÖÔÌÌÏÃN¸ÛmY“ô¼ÎzõŸÕéÔËŽö÷+ú�¥j)‰‰ø•î¥ñºò8i[¯/Æ‘��êkjJtYii-û Æèf,ký ¦raÆ~wwP¬^Nšgw|vyYãÚélµ‹á>æt=‘8ùR0ëÎí¹DŰXñþY8~¦¿\ £¼R;v†—ÁØ"^ÌAÏVL´I‡Ãêú¬qiöoxP8Ú¨ƒ¬`/+Ö” �îQhC³ï[|»‹Ü˜&zܰY'8aaá? ÅÓsÛˆS×+,,´oÑSSã´š+Éxܦþ³ˆq{0â\*$$„èßÙßßAËš�ïwS€ÄLã=!Xf£Éªêê\ë°tÒz£—&—¯Vüç"-GªUó &nŸóàyPà‡Ü¾2Ý:=µRݸtc|�÷ZúzzLÉ· y÷{óWB•3jó¡?¸õR’cÛöéT®Â”b¨ +ɤ*Í.³¡9 ï¾ÿ�©WÜá[+çOqwskH�6¬Dm¥­•ÂqìOÍîoo¬)­ê5œ-˜ajûÚùÝzã jv=!¶l€Á—Óò\œœrÞ©ÎÎÎÐÇ=Aù4žÙùùù¹9\œ�Dll§L†­Òã£#⊣$63˜Ój»?,>>¶-žµ¬F­V<&zk´ÃJxUopðaç®�%QJ ÊÇC3UC^¾â¾_�wO¦á–êR™�Çæ”$#WmÙE.žCf=ýý܆à¬j ýé�A(Pì€›× ûíßàl*or½�Ê’À[|~Þt~´»µUm·Ñ+šÅ³¶«Mª:ü&{#IlL-§]$®+gA‚�; úz v™3™ýý˜¿ô< ËËOðônÿ ?ëÅ*:ÆÃ\∉ó»úxéeb^§�`Ç´‚µ¨du=�J-$NEDÝý¸ C’ç)ÌÕ9$êÍdã ˆ®=ÃS/û© Z,/ª4ös)¯û¤=ƒ Ç×ç°?°âVu'ï—&÷ŸÁ£ÓŧËÃWå/Î&ƒPRÚüP}È„>KÚʾŽÚ\Â&/?<�/6ÀP¿âðxk¿WÓ{[[ÛÅÞx=W®€óaìƒLÙ%ååÐAyÃÍa´á6ðJxÃñöòïßÌ¿ò–¨àê‹ÛêÉ…„jîg‰¢Õ¶!¥åCú„s—cÊÒj‹X¶ QâM”4>¿è²yì* =ä$�§7lËø}5¢õ„»þ fž£QsT é„,¸ ï¹4ñ„ÞTçÅÏIS[°QÿY3{1.´µåL’™��åu=Nåu- ¦¤¤œ™™i�>?˜V7ÂRY#3ó„1+ ¿l0ûÜnÁ2[g¯Â�mÓAÞ¸ ´¥¹ù\Þ¾ÖæÝüð·I©®»oWëÅ*crÜ%:Ñðì'jŒ†š&a·0tyˆXê�EKN©(NR’cb�QƇ2|�µm¹(8 ù24(™öat§Oö÷(ë_ƒ±;^ù=^Ã4’ýí·çaŽ{:Ôqïq�öiii=îò3¼ÎÛw˜Ç�P#©eOGØÆ�ÖZþ,h¾^4‹$å'ÄŽî€Go¹Ý k¾*ÿ³ ô¸Ëek­&ˆŽ }‡Ò30< B÷ Ø¸¸¦ÆÆ(OØÃS;-ëB lm±ãY8t¶ *«{L…΢dÕ’¼Ðԣɉ jô<úÞ˪úVoB 8ëÛêÖ(„„®3³ §ÕGÆ=-÷Šfˆ»ãqƺå�9f9(ºÄ½.©ñÀ6E¥@̈�Ç·‹÷¿ßµj ÓÉR0§ãü\Án©®Ç+��ˆâçg“/‘dùfgXׯü9ôë}çYz†òåÓø¬á ÿ&¹d639—º ºÁ¿é§¾‘‘6tÐ}íÒ!0ý´9ÙÀÀií<Êrëó=>ž„Ù?ÅÃÓs<�7ÖÒl¿p·J$¸Xa)­ç¬t?7 %�wôô²�Zûû’¸åüG/ô:W»®¤IÁS»Ý$Ä@DÝÚ«ä=9ù eQéšbÕ]F¢™Zš/©mOè÷ï‡b…òbA;«õ4œ2'Ó&–E奨ZŠŠ­¡ët¦K•ä†b¥ï9×¾¾z3-­ìmã>øóI·Ú§Úrð®€4#™½öt<@z³Y)ß+Y&ðUš\¼‰ø�Zl±IIIŽeý †y*Ý1bG�ê³K?–‚@´úé¼+Û`©©ÅEîw‹hi«Þ ¢‡ñ¡ ܉Υh‹†¥“›{ôÉL5b+i½Å³ÂŠÄ»£ÕJ Æ–+³¿J¤ˆm rtUì'ÕZ©3„40«/D#¢´ØÂ°Ã[[¯Ù㫤!j}¸433ù*NèŒnŽj'VåhAimÅtòVþ [Oþ^¹F !¸ ø*d|ñglìv)ãäx¨~ŠÀ›�¿”Ñ¨Ò æ2䙘˜²'?9ª$T[ôß­°PNùÛ–]ïž=+V›†ë°”ë›�¥ž�ŸŸ_^:U?Ïu§ Åÿe–ÇÕ‚µµõõõÍ͈•Æmq±U×�׿_Œ¸�°>¨^\YXøT×ÛœÎÁΞ8jÚìÀg4(àlÜ'�ø×õãzVÁøVm~mz:i­Öêü¼gJ©•ùùahâw~þ !à†‰å*Á˜¢çž¶g‰‡ÆG¤%jø?eÀ‘]±.2˺z±doѺb1’>ÙoŽr�øæ>´2¦r;æå抉€ännŒ¥g¦""&à0ç„Ï“I'eÔT¾ñšì([ÞÝÓä0Ìàããc¤»À2½¶ö ©¹¸º.KD)ªü¼×~¨PºN¯?Ï�y0þ‡ ^ÙÝÙ�…þ=b�lþ) =06 ƒ=0Vž‘‘!—¯\<{-Þ(eÓ´3›ééi[®Õ5uôôôÔ×ÏÈ®/m=‡Ñd«ò:g§Ng³�ÿ1ß?S¼°~ºv3õ­õóúÃ/§§�Ð�0U™V/N¹£„ñ/3D�4÷‚ù<Û®Æï*ë�Euþ™zgôŒ­… ”Álpuuõ�%²Ý•ÂÓˆ”»Í¢k°÷ÉÆœb˜z½-ÝοÔ~³ +î"dìÙ?[¤0!AÝÕÕU___^>òÓŽv®ÚÏy‘7p!…lyº„eéaeIÛ\_m§ôŸ ™¯*�á mÏu0£9Cyÿðu8kÅÎjoçÚÒF§Œ¤g߀ó�t:Dcó�#Æ«ëëknp×Ortêkc°yÖQpóqäGçÉä¸Ö­¿ÀÚcý‹ÞÏ—Ëž,tcj0ÙßÌs/òŒ»€Õ×ÿX‚8f8œj ¬¹×Þ‹õä¬óÅ09ùô—d–¡¤·²Ï­½»ªw�œhu Ök?w!ø+Ì^ª"l€½�ˆ��GUÛû æ;ж�VI-éÿÉpÊŸµÎFK¹)Rsˆý-pme ñèРº:ðð—ÀÿÆOïÿg–Ç9òÿ sM-AéÖµZD„„%jàÚ�¨Øò¹J²é|š¥j‘ÎE¦‰ø³4åm øðЉ‡Äâ%E¯em]}½<Ìm” ÿ)ó³E`a{í¢5תS Ìûõ×~|‹ ƒTò¥j°LÿËõ-p°ž|f†;;bm½³DM•Ӊظ(íwŸÿÍ®À'Gùwtý8‹ù¿šì»i'Qî%)KDr,ó0¬’¯¦<^e*wç!ÞºEÈœý-Ònxv{¹¬� ýHpvì–Ù<ìÕT¸ë4ò;8‘«V]Ÿço¶ÇÞ»¹%§ßME…Ò|Þ/DºMeÚ4O¶lÀ÷ÇNFÞ.3ždËgu¾“$¬u¶h±¿’|UP_€ÎÍy\~UNp³Ì_9óO þýºÍ’‰IžL_w ÔqóøÕ¬ûPc^¹•¶g�þ$Ç”÷£ÿ£ O>àï@q0¹ª_•¥Öb oSÎÚ]á³C-J1[aéUу®b1TÃW±-){2ÞYó†[¦ZÐ�ŠfÜÙ‹æ,‡¿Z±UQ�Žæ/{ŠÕ½çjLõšÞiº?�PU¿”Åw1Iãh,˜‡îïÝÈ^_[ÛXÌ¿µýûdÂAè¹�|}©¶è W!R’$û ûà¸î*…7ÚÁì�»üõdý­{Xp=ç»ÛÇ•U³Ècºòà Sû ‹`“k`FýWð7èÝ©�U~n~ÿ0Ða$wäË¢|éúÛã:§òNÛ½K{£¤`[ÛÓm[k±ÍÁìiMA©&Ϭààƒýc› ùZmQ"â ²³ê>ý�õÉ¿z÷ãˆñ1ãò¿o\Õ0 ‘¥ºñzµõCiý/~€`þCß}´•¥ñ�{hzõq°ÌRÿDùÁ²¥fþh¥îbýRVX=çm�§’yÎÅþXûI1£†¨‡ÌìááóV'!·vmu‹û¹7:#Ú\pîô¦‰¾Åð`ü²OrKÇxssmÕöª·³A˜™E™1ø¯Îæ3éˆôó^û¤“ƒ88|öÎ]e@!n÷ζ¥ ïx¨ŸäŽ—Õ.w]É>™�!ío­²ù¼åXÓîY>™ÓŒY.‹‰ÖÀuÂjÇ€l3·Ö¶V/·ýL]¿Jd’ñάý¹Éñ}ÑJT”]KÖ×tNžm¤B釬НkÓS('É_›Ömª¢j:ü]4Vçä¥ìižeP÷œw™øSuÞ{žîp½k•@GJ´Çó1<ñÁ´GcŒ´ô1#mY憟«òb¥Ñ1_Àí *å)Z\|[›QrÔ!©é&9Þ8½¹-¾¾päÞèä‹mqG3(ƒD�ÿ:š9!UÙT{íß…C·«gãàTVï¾m¿³->Oz�ü,Y™dçäõtö Æz 6Ÿ¾U–+(¨-†êõ\Ѭ�"L¬u>‘‡oèèƒOÈ/ØÉÓ8 ô<>Ky–¥}S>eSŽùµìý¶çAh�†RÐË%éýùWe3GoYÇÖ JyÐ릵éZèÒ²Çr”Ó%,�³.û–9íœëUõQ=¬®+rL�‚’×PE?ñœæ‹#îò3Ÿø“’¬«‹éààÜ»uu†¬Ÿ•]~§Ì�æ ët|~IŠÕ´4~-†Á¿nû˜6ðíõ”\ú…ÿëÎü6�I§¦Ò ×òüúqÙçû‰Beø&4Hés^±34_¨£þbÆlI{©”\OoëÒ`òf•T[”jÕÙw„ºjfebœÚN„ÞN–ø-¿Y¾3˜Ô§�%´9µQÜð¹bœÇë¨ÿ¸¶Jf]Z·Ô/ïÓ!àó÷�ÈçF¾ûûûÀDmm^£>&‚ñ¡am{‰éüŒ9Nm1¯¶®ù¸x\~0B ‹ÔÙ‘⢢áΚ»m4."ãô›÷$<1÷Àrz�±'öþëû¢Gê{JÉ7ÿFñió]mûп+HáyÅøúC²mB®}·©8OnMëÿäÝßÓÆ È'óeXû Àì¶w®ÿqâXÿç—,Ì2Pm(›œÜØÛsµ‘‚7ÃÒþ¾B¡Š‘îŸ À›í?¯azŒ‹g=η%SF]Fß¼4�AžÌÌLKŽñð?U2wþƒ,^LÐÿg_ý¿.ƒ:KiyùIrü_!\ÝÜܼ¼'¼–÷Œg¤þ>ã×ÌÇÇw´1gÒ㜄T Ì^ °�`uêoÉëu•óÜÜÝCŠƒyUžJGMa*Hás?ß�Gû[ W*Ÿû”iµ»‡GSI;‰“W!¬���'éÿÆ @B~s³g…^�HD†Ìø_‘:œM‚]|ü¿»åÿç ßn‚Ë϶cô}îr­]ÌLÓän€Ðk` µ<é™!�ÆÖØc•6©LZ6 ø;Ì0ü7õPóù¿ÊÛù�ö£R6ÔDGL/2E‚Ä[PÞ˜òŸÁü¥~ ´oNž·¯‰‡£ðà;œ­¶ÁÀå¥%ÑíN$2'³ÝRíú¥½ í’þ0½‡õ²9�°QàHR‹ºà܇e‚�àÈûU Ö­€"?w³œ©]×(Ú>0·8=1›¼þñ¸`G¢l ]Þ�.1ã"Á?•2=þÖ¹ Õ« ¡¥uƒ.?ë/µ-4ˆ¸‚¿YeU?ææë•Tp·2zFd,#ê:-q B»Úåôgyd$øG�P‡\¨o”$žõœø,‘Ë¡,`‡.ÈÁá8QÉ“ “Fmæ~�*ö4‡öÖ!S6>ÅéÏ•08”ÒçÑ=²»ÕãxƒÝ&Dõ¢X¥‹ÒÎÄ ÷KÇlrL©Ëú±ú¶ÄÕç€yþÙ‘ô¼– KµI¥»ñzôó.>åêJÇ©£� š6žY-vêÞfP¦Ì×Ò1¾NÃ_ðF<¶Ó²B•Ë{[ñ;˜K8NHfdk½/;'ܯuÞU(@w÷óöN7y]çXi†µ!Ïu :­_ú'«dš#kB´ˆ®³%È$“3q¸õ*Ÿ¢$öf°ÛÔW ›.wú/ÆÛñ¢~Cwý*«—g,�µSëŽÖ$-1¸U+ +Jòj—-«(ŽÇÝœô‚µxV.G:£šsŸ¿h׎⶜æ¿N‹;!æ3‚Õ Œx.~g® ^8„^Í�.GâÛlz¯äG£ús9œ§] @é¼¶“!¾æ,Bk�/® ³eg–&š•I%“²±2å¥úÏnÖ´”ÌÔ¬œ•O‚�Z¶~ANDKÜŸƒš~¢s•Þ™®)->õID¹ë¹»%G¶Ÿ}VÜàÝq†pž¡éœ.L+ ø¸{>}\Lu·ÓYÿ^'˜:c_c­¼!!±d�55ªs»Žu#{�ƒa´èX.9Ôµ›•Ÿÿbwp ˆ[¦K`Eæ¼{éÙþÐ�‰Üþb¾V'¿£ÝndŽ©¯¶«„v>íæsøL#–¼ª5-=¯!¯zƒm÷²2fº¯uYyaÞ~Äæ9p,DŠËóŒbØ¿Ãê¢_L{í>«²›ªMÙ§Å£°h¿vH¹t�ÉØ;'9úôȈ+¡µR¬•�ÎÄšê Íj鹉çFçKö’ÿ-Õ£Öj•R’ío ’2ú:ƒÛæ94‰ÖÔFe4ã¬Í[·]Vî'ûÂB14ŸÎvM‰¬Æ9RâÛÉ⯖àm"ÈlWkž¾À8lœ=ž`ÛyPŒÎ19lÐÎ�õJp(cªIùX¨�ÂGŠ]é÷ˆƒß¸ßOoÇ%á3ÂJQå8x–Èø’lotC†ñ‹ˆ”¾¦¬’÷¼“ å’ ›Z4Än N¤uÐâs[LŽûµô³[{®¥‰c;·†×[Ìú ˆwÏèùžBãƒaqüñ“~ªfFË´zOÃC”v͵ë¬�üyS‰5=± ükZÛ¸ÿud¨‘ƒÅ[‘ìVI\ê÷@¡+«z»ZÍmÒU±È¬!£¯»·ÁÎÊÞɬ&ºµ·{3ý¨Ç™\kiÛå,è–æáÀÝië¹3ñ-x¸YEºZ¯E™iË„éÉÞq°D…ÞAÝëR`îBYîë|,zÀw^¯®o®LÀøÑï,{óW°ê¹6Éßw;EZï œ¹ßz~É®Àî\pÙɧæis]y¤jT¸3^’š÷“�ˆsÏR�ß³\Nt{¹ªk(CàlŠÂ Íðþ4edU?Ñpï@l{o§ô×G×·¶g­÷›~�¶w�´•œØOóyõh#ƒ‰X=U¶[‡Éóü>ùÁ_.<ËŸ¯&Hä[Î� Ê>7�Š)ÏåŒEQ�´Ö¾×¹áÌúÚAƒ»Åóe�&²Ke{êË‚¥ýãíþ��åòöÙøS}¦~9•eBÁ߃Hhêmóv’å¯NÛª'ÆFïâZÉaÌk³OovÏ]øN6 Q”"—íŸÚ8v�èχiÈ×/”­"ù-x7§¡&Æ u…Ë‚÷5‡¤ú•s8UÇO£ ÑR¨Q—(Fñ�S~¼�ƒH�ü(‹§êaË2[V”—E�Ž<�‰6R&j’£&êE�7r#ØR^æ{¼FÖB}ÛÕˆéÕß’tíióuAr \JN¾Ék±«’ì±›¦œS Ñ�®l8ž Ô0q²‰òN23©0�g!7÷Ž_FhöÔA³áŸ‘}=òõDU . …-ÑUØ0)Ú@M7í¿î²åÓ 'w]ZàºäÕ '¼Ç[¹VX±–�ðõikŠ"PaõÉB�£‚³ëÔJ9ùRRØ–YSK Òˆvò§éôP]ßmyÕ#«°G“)v} ŒÒ5×u-}Ò¤èSiOÙò“‘Ø^ _Û*`:ÃösîE——˜è¥ëHʓ͎@vð—' œ4ב0%äÓV R,`;¸�ZLöÀöîz¥ƒ@Ž„˜v7�ÙFž•q‘½l�¡Ê<“àûÞ•šáÌÅ•û·ü¹ ø%4­Cu õÄ�‘�Ö¾×Ô6xíhÿ@j^±|VáD›ã dû»»ðó~7�HÂç�àÆ£Ü½b1ѱ$ßÕ»yÕ{m'PúɼG\vqc¶2×4ô±¼�§ìåY½U½yOš³�Zãëi휱T»ƒ®Ü­[Ïr[÷ùœ#Ñy#¤…Ø%M3�·júUµ�¢ùÁÁWNW)ÐG¢fUQkj9×àà*¹×ÓÒõª¢¾##MUYðOµ’$}ÓT7 !Óã ‘5ä†üªšj{ÏÙ *ŠÈäÍ¡‚œKxÖÜ&¤çpˆE‹ k’¡$èöå)g|Ç¢Ç%—§ åX�¢w ôÃÝqdgÏÅLÁ�® [Ð5<†öÓñy²ÁEépäãLãÅz{uq¦ˆh�)«sh0gÇò¥�£Té"«í£ïCE«íþÀò2Q×wq2“�¶òåµÔýBxeù˺'Å'εöÝ“Ü~Hrqac®ˆh×q›Èuœ×Œ9ÆsR)yÖl¡˜im¡ Ó°Eœ1=w¾áù`íˆÙµên„WT<¨)Ú¥ ¶&÷ýd¢ ´4ô;V±�ââ8žH乖нÅðpí«‡L‰]FZñý¬ò˜\È’YOÆ�Iˆ…÷Ɖê�ó`˜¡ËŽ^Q¥÷g´û—úCÂçñrç@¡œW‹c¾ØmMu²¢Œ·uîí²¯00¸] çw»üM‹¥rÕlåÝ·a1&dTÃç8"KPày‰;%ø$Ö3þéÚì˜Ó`¾?‡žïtÉפ-ûê=ÃÚ2�¾Â˜s’*¡VoãmÔ}tr Gþ)©—ÄcVP¯*/­y��ìL–:±v¶�ͧ@ ¢ns$ÕI«¹Š@·=Æ®å¼D’&«FgÜY«ñUR Œí?öÝ*O®/PÝú~Üê9dÙ4×ü8DÅàÛsÙ·›_—Q™‘úTlñþÂÇÅl'ªó<^ÉŸñé&dg—+ôùÔ-EV”ËQhiZ�Øúmòë <ÚÝ1…tÉ&ß­†«B3krZhEމüÊIqrÚ¹¨Ô†¾¾Ç}ÆS¶™Þ[ÌÆw&CàF‚ñ{ñ•vžî³|RÕ…òt�û]}}½'½ Y/`ÒÅ0fÕªçäüš$)¶†×µûâá1;Þô©ë r›e8’’ûè?_Ç“;kÕZ«œuܲã³E™E"ßÕyKåb•M²ëáÜ *4Å·0¨cΚµ¾5Éq„>EÁlJ-áJ–Kg¼ü­kÞ…Ë%T+wJ.éf?ÛvŽ˜&õÏqnùõÕÕÕ奓“~Dß` µþa½í*-9ºÀízð8Js_Ú�I=_"O†æ7pÂ�~cÒ^k4K‚½%@ìc4Ú�QÌoß¾Áh°žž)))|mݳZ§ð±´4 ˜€Z˜g>ŸÄ›0ö~å…ŒîÊäaŒ_õ“�ωöIEo¡¼Ä9>ÏßU�Û¥íí¾ÚÚ)­•)‘n€¯á?¨J}Þ[” ÃýyÛGxwc6ž^:ÝÈÿ[.?…ßóúôâ/ïeÎ�Q×4SßA“üK€;T•/þáÄ\¸ÿŸ�›?ÚØ˜œ˜°³ ýçÁ[>>¾ÀD™6œÂbÔ�ô—²ÓÙ_îO¾Ï› øÿø4Éÿãd�Æß5mìA�ºÊ¶¶ÊIóÃg�Ò,µ‡¢šûލ¨ŠŠ¨³ÃJÆTò_ÿ¼úá\C\ô| îCK™¶âL‘ä‘¡2zú%Òö¾~Í"‘Òud(_�"(ŸÎç¾ÞW½x46“f;–ÊýÏôÃ_½hTÔßßn‰ˆ/¯;.ð¢ÇÕ׌´í¥/b�Q€ ×ë�þ¶�Ú,)£Hè¤Äg¬ÿ>¥‡Nb;^M€î­£ç<ÇsoÒdîõd³›`¾Ë ‘ã‘Ç9màâÞ-û�ðZ]åKÈØþÐæM9h; yí ÂËŠ/Hбo¾ø|däËÃ>— ð+V¸2?æá…ý8õžr(hj3ZƒvQ'ÞAA¹À k²ISfpÕ¹îpdÆWçt0Õ¯ÖVþñʯS£øù²§z¹üIÕãr­~ l³x-ïÛwROÒ´�à5î|ä#ðÁd'e̵®Ï†Ží<½Uc‹:ƒ]oö¡NÅ»kÛoJƒ(R'ÙV,—‹²DÀêÖ)œÀ±7†Õèèr“';k ¿ûg5E~A=pÅ+˜í­]avS óóqH¨;è§¼Hã8%YWC#ñÂx¡-UÐ[¦+`ª@µ-O7¥˜ɰ”ö#M{‘—§—gç5…W2€&¼²­×yØøêÖâå—½ ÃUß$ý<ªhá8R‘‡ÉÁr½­—}åSóñÙc8±æ¯NY-÷'y ‘�auá÷ßóÆ P®ÅãíÕ<èñ2V6÷ ;_Ëæ™'U¨ÓÑóSõÕëBÎpo¥}n¬}¿£ô¡´aV]´O"Ÿ~Æì¸¨n¬-Lí¼ã3IFììˆÎí­Û/Hâyé«k Î"ËÝÜêʃ¿ôÏ/CkÜ0bdUî“ÂÈ<ÎJÛÈIš}Û«xI Ÿ—ŒÙ’¬ß‡)cñ¸Ä©¤X§Qi¯wQ«Ñ§çÕ15CäS@¼†˜q.¦]1òÏ�j o'Î>}G®¿â!ãêÐáQyñáÅ"..ï•…÷œ)/מ-&ÛÈÍŠ×VTô@i½U¦°äSóp =vB¼]ù ÔžïAmÇ-V½Çôåh:‰Xüz¢^@Y©ä;Ñ;j’ú¯Ì¾4¡'iÈÂ8mجïj¾Mëx}-Õ.7ÜõgÆÑ�ÔÄrKdÃÔ‚ÿŽñ·çÅ• Øîþ*úÁz«ì(õ\Yüj)Îä°"Ç,£Å챨‚ ·�оLíL¼t�ÿý­VC¬´}/�,2^dÙáͯ5Lü~Áø;»šò�ù;àPW”r»ïçsñð×òæ¶ Ò 9"¹W¨ÍÃv6h@î§eV•~í?@ù«æ­ÃÚêÚuß”–Òkð¢-R(Nq¯·âÅ‹wH P @�â…â(’w×âEƒ»{ÐÞö]g}k}kísÖµÏu}{þ52Gæ$™ã#Ï�ûÏJ¤²èt.èv0ô—"‡“yu×¢£ð—0ŽêáÑÒi•�õ.¸>K` ‡ú&§¾VÔ;ËÆ~´kXq˜Gü“$ÍЉÛLâè³Fý¶Pß‹JU:2ßKÜÍ“™ûOÀ|!?ÍfF3c#ºÖ¿“¡¬¯~üRNµ�Ô¹ò Ÿ9¹/¥^º/g•é/nl%…-6° ZN¯±Ñí�:t÷[J"_WC¿JÀº½fgƒéÃ&´ OüT¶!W�|𤩋3Rl:ÔEãû]ç£ù¤°³÷Ú æ½G›B§¥TÆ„^kœ˜Ñ_Ø�z¯ò>µÛkK .+Ó¥Sås@•¯þLî[ì9Þ`.CîöüH*Ó¦§I­F nšõÙû;¤ëQ"Is_¾ïC9ø~xy&CiÑû^ÍðζK€g¶ÃØorÉÞ£æd?t˾PòòÒ·…+ŸîÌu·µ»*iIS†y²F8{c=ˆ®NT0¼8|z4@Y‘[JÔ¸V™lââ^A޶¸aìuäç*S…k´ZsœY � ÒG-õŒ÷�›iŸè¹yð·ž7ö¥°èo ºž�ÏÍ%´âT$Æ:Ç<Üj´›Qû,6sç|ss0 Ñþ,ãµcÚ6^ü;!÷7¯YAß²?> gg{¢ì¡Y'Ì0¿H3¯*Ù8ÞpÞÕH~ WÖô[OÊ÷{ªÝ“E϶»*. Ó꘴{Ioû ñ4£OQÏ�)Z™üX÷òunå�êBo,ËHá”¶¡ž<4©!”ìÆÏåŠ4žv'|–éjú«ø‹ÌCxR°ËÇO¸™¬u®„y¯×­Ã ’Q÷\:—˜q£2cõÛaÃÁ:¥¯-ƒs’8VÈϤb¡·¶ßÂôX3ÄÕ �|öËó×Dl½%ôºx>�Ôß²xë·0éܳèâàFÖºz¬/LO_:8 +åK÷~¤{›‹GEHæõO-#β”iÓýòNPî£HMÏ#ýÒ¡6ÒèZ@f‰ënÔúÞÙ㽃 ÚÍ÷4UƒîØ5JàèÆ…³„þ:�âçÆ‘pîç|>\—ÞúáÚ¥®•²ÀVî>^[S7uÖ†7®: ä”–[LËJ"M“c|Ç€EÒ0èЋ#§ã·ÚbB·QkÎî™y@§÷õöÈG?­Ó›ö¸Ô½¶¯áRs¬”²0Ó›Zu$œL2Ÿ·�(½ç×áèô�Åã6ѾƒBK ~xÑãê›Jš_/;(��ÀVR¿Î,[ª÷—±zÝl0A> IgÉlÖIÓ|aå•(ß Œ”úak‹wÇÖóó˜Ä~›Ï,Xº'Š˜çèÚí•_gÎÌú!VGC¡‹Û—[ònm›o-<-Ûòôl k\™Ÿ ŒäÛ‹}Öì»6‚›»\Jû…[æ(ñnŸÁ ÔÔ‡æ\=?��SWèi+{YW—>ÖÒNÁw"¯—½eüFˆ\‰³’!ÃN¸ö§çqÍÍ©ù.lxŸnw¡üôçxY[H’8`‚<$ v‰Ì4�d™ï¶Ÿ»rîv®�5÷„$cN-~úÛ§Â n§,݃XëMaLt}{’׉y�Ô}ó$$#¬¦  ˆ¦<[´Aq „’7´}âA`r£—wJúûs›7Ö¨ø xµiWÈî£ðeŽÚö‘©úGÔÞRr÷ÖYùeÒ×HuKËÙoD­3±Ööª|À‚Ó�¶1yò=úNr°'¬Ë „ÆVm•ŸöÕL'KÙ:¶r=Žžû¥(é¦õÑ­íçï]˜³§�eÉxáöù¼üN0nÛ&À®&H:²>D-ª6jÑ2ÚÆùN䛯ðƹbbxí×”Imª=gb‡tâÙWzÄ…“;ØxªønxhWk?WG¬ƒ¹ÕžÌ(Ÿ¦Ð• Æä�0§?ŠdŠZf ^G-t!P7¿)Ãì™=áýõ¾Ïžw“êyó϶`Sî¯Lô–}b'YŸD$uW–l3Gš*ÖÑ™¦ë}9œEüÙšNQŒ |R %^†_õ£-à•ö.ºñ.Þ4ù¡¸1Ð56þìã�4ú·ƒ2lœ¤žEËRÈÌDC ™Åi»}~QkwÍ=‘ˆ>ìÒ.[cÃö‚2K™¼a?HMu3[̰%^�d &˜ÉÙÓ3d Ÿcw§Ê^§Œ\9Ú Cï¥Õ¤ºy&wLÊ'C‡öçò¦Ö›èêË?^F²M¾™HØñyd!©=!æï‚/´¸o1&Õ³²±;›/h‚H%ÈúOÝÔ¿{ ã,ÐÚj”’²¢,úð�6ºÐ_�ß%Œ�-3310àõé'}¸Y8·&xše °3æžSyÜ&£†gFdh¡qžU' ÓÉWòeßöÃ.,ü÷åC›[0±½VóDïÊøääd�«‹ËþX©U^Þˆ Üe¹·fˆl{ºFÇe¼åi‚Éæ=7c,[-ˈ£n”±•z9–ââÏ‚SnD@}}40´Q¬ÃNÝVsq4ahhè#Á¿ö׿DÏC>/'Äë]cP9öÛÁRCÚ‰~:å¶�8ÜY„‹ˆ¤$ºæxÚçôÀÚåõtQô/©Ü³eÈ÷ikT ?Ñ‘ ¥$ É´àçòá+¤w}¢�§ºgÞ¾&ê¾È÷ýýhɳ�Ò B:;;êÌÌÇïK•D î«iþET€ê^ /&ã‚!‚òÍØYö¨Á)æ¹4 ®ÍtG2]Ýæêês£ßºôà'â³S)ÃB Vg%뜄<â¦â¤`$4Š1Øo‚组ä_ ˜1/¶ìw Ûdžú¤~«/ë÷ŸaøÃrÿb-!—“6ÌX¤úŸ®æ[ßû}²þQee%úíŽðÉ {Â?=‚×’õK‰–?›JÜX¿‘õÿ‚Ö{^ÔœUªßÑÎlSXXØw Ÿ£ ôþ²�··È4Þï7 iŠHúŸ­ôgÔ§ÿõËó`Eµmâw [i¹ œ*á'ðò³UÛ]¿} I‰}§iRý¼ @cUeÜI. í{¥§£®Èª >·ÌÙv¡Uí"CèE˜[…)ä/ žwÖF;àÖ¯+èË.g'ç�rQ7µ®³Å7ÐS)J‰OòØÑÎdhj/ñºtµ„¤7…Œ¾~8c(âì“it) 6�BuŒœO9 wE»ÛF&G“Qx\¿?ök+żmzˆ¢U—$îk¨j·aÆíh‚^7Ç4�ģ哵ÍóX…øÜø¨•K›d”P½í·”Ä�^ò‘ÖȘ^gV41�›éÀ1Qô’§ #é=¬VKGV),N:»U<›o®ä(4 ሠpÄú”Övð²Šã/LÕÆ~ÛiÓ†iôô1ò¶$(WöºãIm°G&%Æw�Œ¸aV­›³ªÏ2¦#¦rðnYóÄÀ¸§WÚ´™BÙ¸yXI%½_‰ÍÝÞÑSß¯UåU��ªvÅ约¯TÊí…Þ$‡Êrp=VÍQÆïG|ÜÍ3¥sÜ¢´¶Øt`f Í_p¿¿�k±sRÌXÊj\-XoAÞpTV)Š}Ò¹ðƒvÈþ° ­æ;Й�JÊL=›Û¡Êk½8Ùl0&nÃL?-q?éŽnOFŒ%½z|ºÕdQ¤Ë+_S5s9ý.�ƒ¥VÒèYÎeöWc÷îdÄòß 82ŸÄŒÚ3oácº{øPeç} ³W Ã�ªz›=_¾¨£¯ñÁ²KùʼnÑîá9•'ªŒÉ.2g/c%G áã/œ#éÂ"D…¢–ÁÍ#Aów��Sg “l¬žÃ#¤³iÏûx¦tgÄ7cŠ-r]z¢ê››4{Ò£ÛAÙ®6¤õ‚ ˱¶œ©.ë…âÿÙÚ ÿ†lXfd³êI²'Jž^ú Ó][Š y:lTÓ­ôìh—w|Ц…“…ÓîžU?Y8-Ü ¶Gþ©°CAý7îgIíš ÂV36©Ž‰„7¦_ç¥?}ì¿Ýò(…77oütlÕ6lÓ9*¬H3ü©zê¢paÁ*ÂÜÉ;A]D¨ãÑW;£¸x(4fã½Z>ÿ6ö¨ ^14%«©‡OŸ8:Q-ú~$¯goȤ÷„öµFɦШóÛ!òHÆ2œ‰^ëÇv,T§¿¿‹�?î�œ¥D’ÙiÕ¾F»ØëåômÒ›Z�À`÷`V™ÓL,@}hr &ù”äièëÉJ·ÖÜ»ý¾Éቔª|pñ‹ü�½{1PúÐ׬j¯‘Ø’¶�_áHö6É>(,õKBã^__æ¿C:¡6ËÿÒ©óyÞ­¡SÆ_>�ÿî¶0‘•¶I`=§¨ú öÑÀõ‚ÖÈS¸Ã<:u†Ì{bC„¾YÅäéTÀëâ©òþ¡Ü¥gÔɾ`Í).ä�`Hª:"eDgå°ZͧBžø×Ú×sß=/ †On¼@¤¿ å ÐM™Jx1DýF‹*L@�dsâîW!õ—ªe›ëà Xز,òWÆ„"h1¾xá¨g“¬vl«QDl.¤9=R*4˜”Kú}�qêMÀ[^Lz›–XÃÚ³?îퟛÃáâæ&ŒŠfìÏxBÙ³ž>9©¶¿ÇmíVb‡»£ô¦%kÛoV¡³‡3õ»3‘AÌÍ ÐìX› XÆ�ÖV~ÖµV²ÒÊ>½ôö ÖfÍï¡·ñ®›¦VV]„WJƒšu7”Gùéû7qK÷-ü…¦ >Üh³ñf�ÓÞ…{{=‰ô¬'4r†|Gšä¨9ÓsT}øà.òm‚68+G„KOˆ~`acomV¥þ‚‰#ˆ2�qíêåzï†.rr²Q=ãêÂ5|©Å�–ÉÓ¦ªcU‘áº=d_³K ? ÙD"ìÅ!gZ–Röþæ{µŠ ëË‘ÍÉKÝ>àg¬jXÊxgn>ž*»·Ù1}Â"ÿ>0RM‘ùñ^Ó}füO� ó:Jüie¥Þéæ{½l‘ëXFŽwwJþ4\žÿh—!².¡�¯r22DyÒìÌ^/ûŸ[¨ÔXªp¿úšR»èH<Ùk„xÊø²œõX‹ª™�¡²µõ*{ ÓZ¦Ázn¢É`êuöZh Ò°ÃûöF¼ø<Ï ¯%§@¬†«©PCt âßê<âú϶äM}18o{ j¾ëž-I‰ªdƒ+!ñ¿F<Õ³>º}Ž67Çé®@*Š�ƒF+aWú¼cáD6ÄD1½k=ò¨vëÛ”r½ÉÕ¨à�Æ‘ýè ¢[%Á‰ º�ËRÇ;oÍjvÕê=#¹”‚ 3 �ó›Ó3:ßú $8coœ ùÕè°;“—ù«Æ„¶¼_¨[kXÂÓm]\\®zzz¬úRróôò‡{“E�Õô«}Ž9�†µ¾ó×úдçáähäÁY5ÐúÐ÷iðhŠL�&Lõn„¦¤ÅU'Üýf;¹VÒêmåžt™ï†êG·PòK-GœRc<Í0W)0Oæì£�þ3³½ýâæ8”(/Sì"²n–%om¼ð|ôðŒÙUå¿Ó€CH'q½AM~iׯiÀm+[ïÜ  Œ Lve>an�Èþë˜Oü1BUQ„·þ$鸿…>LN~ã_²Õß$¹µ¶vz0¨b¬¤þ-ú‡‡ÝÚ³¹Ú‘‰‰‰Ë½Éëo|þôÔ3«¤Pï=YbþMo�”Íÿ ZI«'dÿ¾w-½úÜôî„L- Ï$Qkkëw™‘ß^x̸Ú_ÓØÁª:}¥/zOõªÆ©Kûû:–…I_åBL >Š8 wÑ›¹ÔÑ·P1t È!±ßJ`ÂÇ3ÙÍÿ|äëü,^7 ä{ÛÄ9ãºdÑU�Õ)e1æžÊ å«"iÞ/‚�lËOã^äæ•ÈíÝnÃò[ê86^s€+Â@Ý-°T¶ð™ç�Ÿdáð¬øMÝñÌC 3·Ý@É–ÙXVSàKcÇæUä¾c`’¡Ù�Ä�áÏ +• =y¤Ò.\ë-ª”«á ’àtÖ0Ž�—ÍȰNJø9´­Â¼»£‘Ñ×mãæo¥^&¥.Ýï„2~ù¨çᱩ5¬8œM¯åÿ\ê~¦÷“”ÃÕø%£»IlEVEýxHhJJAΖ�ÕuF´Îá}”ÇŠô–tÿþô~F‹¢Ñó;�ñ&¡Ž~"™­¾³œÖ]4ÙkIþºó_KTüÄšÁð¤xùeÖ�ÂDÆí7B33PèОéSxyÞJ³X*AÚt„TH -k,©¡ªk?õ«8²��éW®¡`ö dI�Ûrt®Oþ=žÇÏXøÊø£ç¼j'F£z.•A†Õ@^ö ? ãETG몈.ç'PÑ‘“þ¼VÌmßí�v+‹`-‡0qÇ Œ�n»ŠY‚ì)õ¯Ö»âÏÄÜ 5¡Žî­iÚºg-¼  ]W»L}¥ÞL«§!y@fÃåS©ÿFk75ØY½_ª>�y(¶F¶2³Ø"ºû^P|Ë$?TpŽT¥(¡(Ó«´õº\X8ƒuµÑÚP/ÃGÄ`ªjas¿é×nöN–Þ³Å×@%úÚë31Xñ´{íâWûM°Èš5m¢vƒ‹Z�åÏ%–+ß¾g ŒEÓ;[C{û'ñzžƒÔ‘Vùr×Ä;àfªHDŽì¼¨nÅ€1á�§qyåfƒþïdóµ5ÙÒ÷6s]íéǸJ†3uø$¸Z‚@ôy¼Ç·_«løpšÛæ·„´H|º°ÿƒPŸ •jì_M‰µÂ×*rw lOó’׎‰wí<%–e9¦R ÌŠêýþ¼À'éL<îCвBîVÜd‰e%ut¸Ù.ä�Ïz4ú˜æ+›‚�p²c-š­š›Ý‘ÈiÄÙzë½�Uð�Mò,TÖè“Jœ� ‘*›v*¤•Wm./™Im?^wP–�”ôÈ E�M‹¢ÃV¸E[/÷ÃhGÏaZŽÓI»Ú}ÿ(µZ«·yÞ@,Ç–�ë–ÌðÿЉôk•ŠBÉ磵–.°s±G4«ÎV•,SPœ‚­Z95Oír&Ø—p®•w:� Ÿõz5¾Î¤¡¶¿}÷Õ—g­}Ö Ói?2²Äì ŒJÅÀd~hðBCÂ×2�ž©Ë´’ÿ °s/©dYáî+miéÔ4¤ÕÌÆÅ )Ž= .#lü�H$±N§ZáÐö W7¶uþ°£öØÌ…'í^ EYLî¡¥WbÛp’Ë#ù©Çý«öc ™F¹, .ö˜ÌÐ8jj A]×Rçæš}7lΡ1 -·ÜŽÛÓÛv, °DöÉdê~u¹]x´‰�ÔŽîÔÅÒæv»‰×*ÂÇÃÓ7Ðÿó—LG¦Z©h¡%®«É/«E(t±»‡€mfIO?r CC#·íŒŠÚ‰€Å#Frù°º7h�h³úÁ�ý‚šÑ�I©œõ§rÊl˜Éµp?FÞâØ&¿‚ÞŤ¼‚ÒŠ®ú�Á•;ÝâÄÏ�1±mÂòP³^ÍôÖÀ‡tùCÓZÓ:¡_“¶wi¯° æ1¿ÿ~ÿ; ‚ £Òoˆ¿Ö¶tÈnØÝ•PT¾õÆÌþI~Eã:ÂDøÒ‹Ìî"cˆ$vYußvVXS z‹~®œÆ0t6ž&ßæv8�ÜþËÀ¥¸°¤¦Rºy+ÉQÊLÄËÑ×#½LjËM�Y�ä•TCgy,m]l¦øº||êôRR忈Gæà¸Ö{êôÓ”oä8û ð�Æ|Î�Êc©vñ�|Õ¥�T@äqk->l(LQ(óÛ¿xÞ…äfoÛœ�rŒjf_ìÊkêÍÍ|Ïþ+ÈäNã²7¡¹>‹Ö=aAæ±x[˜˜Ú9åó1¯Q>á˜OEñvïSóÀHåp“}Žª}Edÿ›Ï¹pƒƒ[…>X6^N¬´Æ$ó/©ûô}##nVᘚ?Î[Žäí:9ˆÆù x§¥Çùcz÷±à™Q¾†¦Ítˆ‚�ýhÇî¨ERÑ|Š¡œ»JM•Š{*!�íýÒÏ_³6õSË`ã xÖKÅÑ{è¹Ï¦°‰–Bü/Åâ`„ÖmîÇÊ®Æ5Q>ŽÙ ¢£•{e~Ïez˜LC§æ™i¨#cS)u…R¤„×CʼnB äÉ£±"g§ª0#GLqkZ—©ñ6WaIü0ÝÚ ÕZyX¾e,vq«Í哽�Àê„M¾ÃlYHIrˆ¦àiøÀÍ¿ägϨֲe6íF¹ìHÿˆ`¢—áöfŠù0 ß§ò�Iûƒ'®:§ˆ„ׄ.^”duöÞòTX"ʔˆÒQ¤B«NQNÄy§-‘BÙ¹²*Q=j !ã5BCÁÁ˜U(%4ݼ£]t$Òà%N{ É0Rá~ºf‰ bdžKó1+ùåËiuw?úÀHÛ“{ŸÅ988Hø)jëÁÜ·&+âÆç¦ª<‚Wö»h¸®U‚ÀÇ\þ|šGaÞÍK²»jçÒ½1¿xM<ƒbô\Âsqü ަ×É©„o .ƒw ‘Ð!þ‘÷ÞBp‹é¬ÐÖ&…IþÇ÷s1Œ±™0uXAi#¢ÕÖ žµåû�PO:À3YH’NîCnc(j0[%ñf© ;jWà:ó¥Ê{f|U4è"êŠÊ‚é Ÿ*�ÖEjÍåeæëú?ÿž¢R$!µÙÙË™y¿3ê·ê+š}*[ÿ&jÞjwçlãüIرû1”ø—lÍtÏÒy¸¹ù�®fe=ù}´²¶&²0H¾0�¡^—å^·2ñ?=¨æhf4ÉþïÚ€ú;|•ÿb­Þ$×ßpÀ“ËïŠ aýXhCYÌÞöÕ3”E>ê�¥J¥SàÇßNVÀO¸û MT±â(©i¦–.‡SúÔ¢ë�É`xß7‘Tðÿ†¹’nÁô:åù/fˆ*YãJ†óšæ�îP´o~ëEAþ íË‘¨lMþhDZJª(Æy,¦ÒýÜ^Dü¿„³¥ìŽ–Æ<ç�Žlù„!�oõ›:XÍ ;Žby¡‚ÒQ™ÑØ€j„–ƒßI¿ÚÅðpv̲٨´´t«„Þ—ˆÌ÷˜¹$h´HŽõvT ®Q�ãCîLÝF]¢÷$6¯m,K»/N„H©—«—“]2V3Lgz ?û´›yŠåíh4" ¯OŽXÐ�Y£ÈxeÃ}=³E´T¡%$Ø¥P¨�¦ªd Ò]»ˆ�Vǰ“ýpÀ§mß�|b±1Ÿ?Bl¯4\ºŠM©˜qêt~ûíü÷Žü³Ažj—oÚlb,[þ¿†\l,4ÝïP4nÞú„¢ Ë*ÙŠÔY‹V‘@›³¶/åž_JÒÿrèU“yÝCxS±Þ~u]³‹9øs™HtóA—cçÀÁܸrÞ¦Mò¼„a«¾8O3o“˜Ýá}»šs÷­“A�^.�U•2ð{8ªpòÔ±—EÙ®[åÇñ|6¢H/7!UÎ2„?Ù5yµ–"„`L—^X�7úIÁ:ž™ÓíÆï´ïdkèªTÜ0eÕ7©î�(::Cš&Òp“Ù°S–ðD$ûÛí‡%ç�>a²çLR©Q¥(>jGGÈÆ‹'^Ï@ÓÕÔ3¸€t­]èdüZO3Õí'•"¿h¸áf�–³‚/…}7/­#j’ƒAlM¹¯è†µŸz8—ÈW*Çâ2ôçûQ«ú1ñ&÷jQ6ïÔ|0{”äWÁTOUÂ[º(št¯âÂt½ËÉÆÑy¨Ù #4JZçkå=ý€n\Ð|Ñ´õªÖ�㥄“8W>¾¿ð͸Œ¹ZZT!�BX‘ªÈxèzbÐ[wØmŠ?�Þÿlÿù=ˆ­¹rH[Ð-zÖžOŠ$\ÍYEãÁo8\8 Õ#ä3Ñ ¶üÊBu¤‡¹ØÏ6` Ø8‘øe¡šM¡;»í¬B@f“K5A% —?>‹^ê²ñ×Âg–åÞÒ€ÃÛ‘¹nOHî°c°[`¯>1Ü;¦/Þ-Wœèÿ÷Sÿ(·�ÁP½ä:±À+~ÀŽe®6aÕn,¿¾øÍs½ 'Ãܹ滭àÞô€Í%7DT`“Zæ­¹¨CÏŠJ‘½ÍuA¯o"5¿¯æ+˘®'àæ&93?†Á*£tsd§>fÁ*Sí±`«ñ×Þ?ÐÖÁV·3ïTäOIrS2†«_øÓ§l†7·mRçfNï~´f?¦Ï|UÆøø&V¤Ýݶ-¼VÓh­Øµc³Y×­Fóºøµ Ðùs!ž­™¡�î°“O_Ë·–ŽF&FÆ_ˆ häA›ì‘z0^j`GèîjÔº4½ÍâZ¿ßSZÞàZ‘“൥ ÎJ¯J-V-• 4Íy’�2po¦Íúòño× 3n�ÏÌT™-þ·ÚÚcŸ#ãkr¥”é§c¸Ñµ›ö?²ÅÑß2îRǸ0™†Tð—èçÖêÙüºm²CºpÏyÜa׌“™ÔÝ;ÂeÄ-ør'UsÒºó1c’C>Ú‚°LŽùÝG‘²l¨”N–kUóÝðÂY°»Y°1œN€çÕ’Ý„aÿ(ß}vº¡,héÿþ™°»<ÁAF­ÁDyìÜüyÉ�3n\hKÖÍŒ)žhtÜZ0CóC·edsê½ PÃd,¯ ´´^ ‘T—ãýcÔ�²¿1“1òŸc&ðáÌ„=¨ˆÈƒÿŸñN.Ï"*I¨¨ÐÜB”úKçÏéæ8("”)ÙN^4u×,œÊpÑŒ˜¤– ‰÷t§³È?áÑzóSwz$ÁÛÈ.: ÇqÈÂé¹Ypz¹¼ˆ‡n×6ãÊ_† LÚÜ«-0 ºð7ƒâèýŸ²\jo“ûö[ÓEjqq©0;´Ïž¬¤Í‹À, 䔽RÑ¡[Á›ÏÛ?ˆllÝ0俊_üjxñ’ÙôÅ6Ãâ±Õ9òPÒž(¶’B§ìï ʤ‹&¹å¬ÒåK¼´ä±¡šaЃÅpØ¡gC‰fÌÈå›é”,–{Ë È«}OøXùKG²Á^ˆ (ãÚ“‰@6íŠõjßP 4 &  ÒÝ«0µ¸â³$‹DþVídFÿRíˆþ©j÷nêåSIñÒÓÛ5¦ˆ ‚àòä¯q0dôº¦Ÿ¼÷UÃ�>ë©%/Çséý-á‰oÿeÇÔDøðþW° —¬ÿaYu•n¤œ+ín0�õòß›1ë䂦²þƒ7M”þ=N-ëøkÍ}2ÝþM ^ô{µ¥ä–éðŠ\�I ~0;fA‹×«ãL` m×~u CÒ½bõFgF ðÀJ†}ÄDZ¶\øæfNØíÇäXIî×M1†x‚^¨y+]J†âoŠ rÝWhIU54²UΟc”㳑6߯dD2 vÙ¸UŒ?ž•ß1…WáÐß8ÇÆÚH'�»W=ºŸ>c厦Žñ)eŠ�ÊrôpÈ-S³^»{mæãÆÇŒlÈÂõ`ÛEqqž™%ãìé±qûë=ÄšFù¶ PR‹Ã¼«!Ñ”Q-·¨±¿ê6&›Ñ©Ð¡k}<Ãù6í΃vy€+‚ûDpõÇÄA`ºóûzX‚>;ëY¨¬rÐÞëG*ÊHY�@ÄËN’ÜÑGD‘ÿ΃)43 —I;áy~mœôÓÅ\é áÌ®ºmjÖc¯6Èãóñå�ãà'¸²DàöJ;<2f¦‰%ShG²ilWÉÆ�™F‡àçji~åL¦p¹}üŸÉ~g…),ù ¹'_ JØðÀ.éM娄¯ÉáŸýØñ©g;l-UXÒ»3B”›'n7Î×2 ú¶e(yWWd_ CÁ,"9¹£woß$-¡îs|?1Ö%…~Ù›j¶ù@hý¥C ¾lÿ+ Y`bÓáÉ\øT!jS˜‰Htb)Ô‘û�a¯éÂ%_›¿¸úƒ3»ªõé\Idƒ¬×�é³Ò$uÇS1®Ê êõ3S[�ñ…‚ :â`¨Î¶ ƒ¾«Q$zz»èQp$0p™£·á†vñfrɆjøÒDÁ;ËYQüdÅ©Âg|¿ªWë%Äæä»AôÔ`S¡ŽÕ-Nê²ËL¿¨d<5�Ï'9W/qµÝ•:27㈠1]—�ñ»|¶ÌE¦Å'Ã9P"i6yr?¼¢¢²º´´„Éý54aÃ6˽É>¹Ó5>qPNãÚÉÝÆßi}ï�f_CpÊ;XöbC¨¸×^³i±#õñуZ›è¡œ¿ñɈ_ËÕËN2MÝ4aÀùq¢wõü|áxÚg{u0»çÝCì¶'Õïû*c±x‰é�Ñ:–nºà�÷==ª£îû»$ÓÕ]Ì| ìM÷inÄÀéõ‹¿Õž·Ä�÷ü$RÛ,g ¨Û,„B{æ÷Mºë-·�}¼¯‘ZÝßïÄf>: ¯4ÈÕXHxůÉh&L 2ÉõÈ"Úrú~³Ä¤ùºe‰Rgr‚ó$ û™€Þû§ H}餭=š�êj“ðÇ2ê-,,|)á÷¼vjrRÌcË@fâ'î(‰yí-|Váùc9ýW€óìr‚žûç2̈µ;+Y¯äe»œ?#¡éŒÁ–ˆïü¹y§[UÛµG4Sk‰8.þÖ4d“«ÃÒ•Wk_È–Á*+Ñ›Uu­Þ/bêÚ«»\¯s¦>ΆœfãÄôç±U¼ÈDä‹™…N-:ÝI›m+ÜG•öIøœì̶¶¶ªÞK÷9:Gï‹‹‹Ó€GH½ÜϼLƒB QFùµ<ƒN­|‚>pÊúËÓu™Ú‹éí‹i}0�ó¾u�†,—«X×s/Ó"¯žþ H»ö¤¢m§ÙFÐg`:qo×fGU­øÚ¿Í…÷Z†´´È¸g•Ú¨é©ÿQiêEÝù;ö.È� ÄÕ1WzžJã;?%ªÚ�ùûþüu!H¦ô®8.ºÌ�©*�ÄÅßA2íš`À^À*“|K±²äô ^y Xz¶w]Ä¿î|u¹9==Íkå¸ÿ$%Жñÿ˜OówШ|È¡‡ŒDüM÷̃Äý:/´4£9$_¬á×aS‹ùÒ×%®û߈ùžì^íBó�墢&ÒÓKTº®FɈe¼“,LÄe2¶¶9Ä©TÒŠ8완ÝÍv-ŽÀÏjô0àÇF7­'\K Pî^ê»j+ºZ’¼:#Hå²õ…@0ŸÃør“ëJþ ¹¾¼kCeQã[ÀûãÀêjoЪM÷àY›õÞÚ¥«Þ6õNeóÞB=ÝcÓ£�>Èå>ärrÙÂå¿»ÒÿÝåçao¿quQ§êƒ}”9äÒ!ª©p,'xs†?ë/áõýë2ïa5ÍÙ–ùq±úŽþÔ‹•+ëó想ímƒÓC•mÿ]•ÇG­W‡WËÆuû›©¾»¨«Åõ©|ñ³8ìÍÝÖÇ4T5uWó¶x÷nÖSejå"PàbËüåÏŸòµÙà ZÅÅÅ»ótWžffóS(· :ß�]%2�ËÈÙn!G�0Âå�ÝÄË¥Š­ñMÛ»÷ ¾ÃòÃçŠOÕ V3Ö�[^¹¶÷uTÄÇ+šZQ„òÞ§=¼ƒáí_a�Ï>“©�Ý›ó÷V g®êZr/(²0ŸmŒŒmüÑÅ=‚6�óˆxl„ycz5I å¦ûë€ÀÜÅs'ÍþàYûËÈϨ^`î±Y¤iQPˆ…”6‰áÎPf@zº ÉÔîÌÎe m¾6�÷âS‡Àý{øc5‡±`c�3Q ªÛ®tÙÓ¤{‡×°îÇÌœŸ±n^ÁMT3Þ¼æùU»Ìçx(Q!²=]Ýô}3ÂÉGODyõʯ�8¼ÏË ÷É­*�b«ß5©ô?V™F+ÈŒJ¢Î÷K.Æ"h=Q¯{‰"W»¥Pú� cûsœ#»õyL,xOæûú-�…µen_VäÆA­ÅôOÀã*þŹ)Ôe´Ç¥ïga…LdK>D\Å�BNÏüÕ Þ¶ßQ;ù©W _KÁg—ËuƒR S+ãË™ÂË}ü�ºôcz›Çj´öürªÈÿpÝ â£.jfÆð|±°Eº¨t²¢F_Îé£.ÜGåÎK03^³ˆÖ}žãú_4'ðÆéÕÛLâ•j°è“FfÒü¼Óë8ìK·å£”Dw¨ÐJúû^ž{Åu^O&Ì¢#ã‡æ`ð£ï¨@'ùf�N3J÷ qtâ4'‹­ëže ç³¶©¢�4*„"7ÈÇÖÔØ)Sãæ^Ò‡Kâ}>¤ýb>AÅW5Xú@Lë`=ËX‡Uo KèÒò¾(´\úÿè©}ÆØ'ÓX,ú¡øWFLæé…ŽPr÷8Ë›ùI£üITÎç Á𸰠8âs¯G‘ª¨B†Ö:ž hÏÔ·r¡2ªWá}©Å—I¤�áþ„¾îéôÜ7ë^Ãgƒ.>ª°,…_ÞÙY«±p«–:°Å[è«»LòZ¯Òg¨ÌBù­o,÷I0�w"ÁWAÛ5¥z—{úÊ�Uúô>ˆ|�÷y7 z²éšbƒºšàŠ«uYê+0t1m2Ø>?<îý ]!7ö¿ª“•ÐÊ^ÿ Õ‹µ1ÿZ9ÐÁôÄXpÔ¯êøX𸯄·æjd,uý ¥’ÊýzŒ’¨:vÁdqw»ˆö�U\Æ''Ùcä¯ –Oå_ä]�€/´‚Æ�-E-æ‘éÓ÷©‰JRƒy ø·‚¦°ž„¤!2 к›¼hÏ ”‘5 èåÄäFÙnd]ú?}Ûã°à×þULÖ ‡L[ëI>áXDo²I,kè>"‚BçÝ ž›þÏQ>ÿØÖv¿£€�¨ Î!dñµ�ר^‚°ÌgÎAÔª×]\RÂiúv\…˜[Yjå„\œtÕ¡QµvöšÙÛ+ 2´—œ~õÕ0—›)TÀ_¹îŒù áàwÌuõó¸ŒÏ{ KŽK!Gt@O<ס‚ÊØ>R¶³lžRéiÉ‹+ɳ±º«³:ºÍ ¦þwq77“�ç­—õ?бS^YoøÚ‡ô8ÿ+«­‡äQAÙ—h6ïƒÎ9x¡Š¯ÎN¸J„Hø. ÚºlÀùÝ¡4,(nŽ£Z+7o¨š4n(!ݹ—A9k–Cl¾ú Åñ†|‰ÏÚ”Ÿã«˜Íéî{~—¯R�c¶™Ív˸Å;õ=§‰íF#SÁߣ Û;AŽhÃQí"ÃÙ!7AN�wi˜`@ùï Öª€†NG©¶S½®¤ØjdGÇJ Q§gÆuȪDÿËEBÿ�a�ƬíCW ß… r¨mSK@wLòLe#U|rrÁåÿÚ›í|êû”ùmÀ«V_ÁVÒ}âùX,”ÂHhEï3;ݹSõí $nfRÚ¼–NNew݇«­ÏNž«ZiÄ�&ì?–#RJHŽUsvöptô”ènA2�g§Ìˆ– ¦®–`•û7ÜC°§×½ú‰ÿ‰;wÈøï]•Y¼ùÿiWåô�ï�¶naPhé/û¤B[PúD¹år×ÄÇãþÀM«Ó¹—Ù%Øvú~´ÜûSVé7XzM¬Qé]·8(ÌÅ»ó©Ì3÷Dr>X|‘k$÷¢g1s0ë2‰Ûzu§©éž½ÝŒ³©xw±î†âRº®{‹±ÙÝÐê ÿð޳ÇW ëŽÑ’}u?‹$=ç/û‹ 69-»òù}w�?$,¶=…�/šj˜é£¦S“{F<¨'H 4ó ‚½’YMFÉíÝ…b4-I>%)J¡²"ÇÈ7\š¶ôQFç; -1œJöæ‚G Тd}õCr÷;›ÍƒÇüÜ)ýeÑ ¼D9ع�¨(ĹœTµV\ !?<<ìS†@ JöÂø`0˜@¢¦ÙT¼.ÜßVÇXAÑŸÂçµÐ#|-)#zð ùdÛ:ó Åå´‡tˆÑÓÌng0×ç»ñc^úÊíNªâã= ñŸUlü9g·iÄ.|iUÌc“’Âñ™ŽA“ï¦û Ó¥èÖæW„e2g·>V{Ð�9n×�ìý:ö¦ÿîEÑÕ‰[•ÇÌVygJ©„B!§Ó'óe,™_`Òvbྷ�/?ÿ)fR§h6èhªüåÑÉ´Ö{ìÂÝ‘‡9 Ãç"ÞTLÞí3r©0HTÊTKLLŒã4dn�w>  `A·üE™)#´âbúgy&ÒÞ –ª‰M#££ê¹C���³lÉÉÉøøøR“§†pšŠå®��¨Ñu~¼ïéé/à ‡²?ã_ß#3-qV¶ÞðÀ×|‘àcSK€>077×ÚÎîÀ»† è%ÈN Ñ:y¢k™‰J5ÐÔ„×Ô\”që/2ÿų_>lÙ®‡·O~oóJ°�`ñx8àçÉhâ´áÒ×ÛÛÛÝýip•½rdVÈ ±_ê4ÿÉã‹áê:2íUû"«»]]×â½€ß,xË6TšáFQ$2<ü�(,…g’ÖY$ÙÏϯ§§G 5[AÍY–bõ¤‰êŽ1§ó�´êéåï²;²K}ðááax�¹HŒÜfðSצ٣ÿ:Ô�#uÓþ“Iˆí0ú¯Ú̯Œ*Ûð¼»_WÄíb™Ô’üE’÷þbûc-øSxèÇŸÂCÿ¿¾Ágɯ¤odt ‰ý«çÙ�„,RÏcIf;©/÷rl¯ÏÉI)ƒ _¼~ÿ¿PK ÒV1]Pimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UT ëÆ«jëÆ«jux è‡PK ÒV1]L•°Gõ õ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF"IDATxÚ”’1NÃ@Dg×ëØ‰¡ˆ‰€DDpDG ¢££„»PPÓr$$$.$‚DB ¡Ä ‰mì]³û)hmäüvæi¾FÃ/¸` ÐF¯8«çG—¾× 2i@®íÓÅéÕñ<™Y\@š8Н?é¾ý ¢HÐFßõnj¯µ¹Sä)L~½�æÃiºÂÝmî»v53Y)X“ö½†ï5*–“þ$k ÓÅ#!¢æz‹@D”Û€ßEüƒR>Cž;IEND®B`‚PK ÒV1]û˸ÃË Ë Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SJ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFøIDATxÚÄ’½JÄ@…¿;3 ¨‹Ö"ˆˆ�Vе`+Û‹‚¯°O –Ê>€Å¾AÀp+±ÑÚÒÒB¬ìd×"™äX$KŒÍžnî�Ãýî�å»+Ô’,!{èg’îÎVã顜nj– rÉ1‡æ2&Ÿ?ØD(K UÉdŠãWl’ëQã]±±EþˆÄúfްºÁvÓFŒv2¼o†Ü×ôùå]bogM ‹ÝÈV•EH“0cN|],M¼š©¶ÙÉ”ÝÌ`÷¯ž*i|qÀøöìc(.�=¶÷IS«ÄÛk<¨c`¹ô–Ó.ðÕKôô–è8’úÿÿÉ÷%^]¬›þ[IEND®B`‚PK ÒV1]¾|šÃÐ Ð Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFýIDATxÚt’MkQ†ßû1™4*¶Ò�¢ÒFèFp%Š)MIQc¥6ê¢veAÑ⪸”*‚".üêRª+Š�H>¤©1“Úš14ÉĤ™dî\7©¦±¾»sàáœópÈÁÈstÄÜrÍ…´…KïE“K†L ÷3(XàèÊŽFÓ¦‡ûÍ[cËR�6™®â^?[PñohgÑhñ¹�6Ðo Áàeˆ›¸»ò?¢cr½ÉO mLŸL9 ¼ ± 20Å.¤4�ýž6,%(‘ógbªÚ²•|ØÄ£¯¨í$ÐH @"Ód<Ú†YÊÅã«#úPÜxWÄã,¶¸þÈ,`_ Óó3äTnO[˜íÐ>¯uçì'x¹|]Ä“,l u{”|C4%WÉ` ÛvÍâ7Gã>É~YƳ¤èUH0H&fhè<{º¯7-nÙÌ7P¹~.!_ñt @�CèØ$�šÅÑῚìÖZÙHº¶žYÒ“©BŽ·:?¥õ-&ì‡%ÚKi0ˆ+70�ªÚÀ÷²‘þñmIO.¯¯|1òùŠQ­Wá Æùi¿~9ño÷òÛ×ÄødþÈà犡}|¥é锑ÓK…rÝ„°A(c”+.7ÙÞ…,>ˆ*Ž7æ?Wer}5»‘ݬ– lÆ)eŒR²Û—à÷§ãׂ ÑIEND®B`‚PK ÒV1]jí×ä ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤‘MhQ…Ï}ïÍLcþjˆ-4´%±M³±VE(ŠÖJUhÁ�¥‹Ep+t%YˆK¡Ô…‹*¨ þ�‚’Š v!R5´:‰ iJó3c2™™ç"­ ¸(øíÜ{Ïåzvþ¾3C3ËüÚíÔÝ~³E:à þDÔ¹´¿ý]pÇxò¹Q68gø¼00Ñn›c±à±ÉÑ­úŸÊGŽÄNí›ïÞ“¼¿°´øƒD$¥”€ëʦl.Seb܆ šéñzꙌ´¬–H¤æñ¡Z©qõÀû`Þ"A�Rº’|¾-¥µ²¦)RJâ“Úæú£]a5Ÿ±ê�ÔÁAç[ZoíøY±2!ݪiMž;4vª/¬éïåé;ßõ¢¢p6�˜yâ¬é˜itêÛûó�½³=CêðH5JfE› ‚í¸]‘Ð@Üêi+Ž+BÑšÎìúÁ{07z#•x¤§3kK¹RââÍ“·>#¿ºË  á€ˆÈµë(ç`êå,h=?qüÊÃ’ð 7 hê5à'¼xúaþíb«Wûå'd¡d™<æh¹2º�êb€»á½Ò8PsPwÁU®íf�À9[ήzvÆW½ÑÙ¹7©—UUà¾m»ÙÆŒÀÖ[± Á«”Œ¥¯z>»òøÞ+@6Û¢pïÇ&°¶m;ª¦þ9*°i„"„ò×<Ãð{U1Òãyœ‡IEND®B`‚PK ÒV1]8`½  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF1IDATxÚ|’½JQ…Ϲ÷n6?˜ˆ6!âh±° ±ó|ßB"‚o¤µ…�"–iC’BC²ÙÝ{ïX¤q77N9Ìá›9g_] 2A±È F *ïÃýTÁ;™ìf"Dª3!%O¦ö~�&ŽàgUõ:ñóš‰}y»29S<žºÇ~rþc×ZNÎ&ö¡?;�Øl‰¯Jw*Áíp¾™û¹¦%,1×l:¹¦FÊÆĎذþhæ]b»‰ogbùïÚagVô b-ø2ê­®uÑã壦FY-&à‰^'Gªê$AÕÉ·áÍVlÉ_›î>´ú TøÔÔÛ™´<Å—†¾Þ«½6–¢ ä{¼×õåA½� �QDO,‡~’…^€qÄÅ{RÂ.þ¿£|q�ËIEND®B`‚PK ÒV1]jˆ¿V  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIIDATxÚbüÿÿ?Yà÷ïßL €!ª™åë¯?dhcddüýë‹Çš3 déþÿç7Ë“/¿È×ÌÊÄH¦f&Æ!Uÿÿ‹{«! IEND®B`‚PK ÒV1] ÔŸUä ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚŒ�MHTa†ßóýÜ;ŽZY9cÔ˜SjiÖ Â"7aµh×B‚¤e”D®Ú´i×&!hS›m¥ZDöGa)h`B:ãï8Ž3÷šÞ;ßwZŒnúŸÕË�‡÷ðRúÎ5•:Ó÷­êùû™�úA®¦rg»hü^ë‚9ÜÑõÔ+æ}) !ÈÊ¡£wÛòcWÚ©ùtg"=ì noÚ~û¤9váÆë0=1­@ÿ�‰˜¦®^&7R·2+ëâöû(V|‘LÚ�‰ì|~)ÝsÇJZƒ L@ âr³ªò²Æ—ر“X^‚`âѯNEMEI€-ˆÀ eXÌV°‹P–Ëå—sý-=Ýɘzé‰Äâ…Ú½Ÿ{îïOnûÄnšÔT>”ÖX£ÝÝ?O 67N{nÎÏ4a‰X<<±Ö4ð¨÷ÙÌ¥O5Ë…_ˋŋ}¯zLJÚö<¨z5« KAsÍ–ŽD« �y}u«èéÀ­”¹ëÁ>6Ö ‹O^dß$ãõN›á¢ æÖ®r­Ö%°!¿]«ÕÕ¢æ? ‚K¦:ªg3Ù “«5�-¡Á)øVD¢ñ]jÈ“¡aAE„%åñ]aË€VB3 ”éŒe 3¹�ó“©hi®ÒËzÕ äùÇòa�5Ô¯tüáÙƒkƕ ² ›€ÀRòÈüf¡e ×Ħä2Ž ÿ¸ügcá–ªOËÒIEND®B`‚PK ÒV1]HøS>é é cimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/Cyprus_Northern.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚœR±JQœ½;0œ– ‚‚FQ°°°±°ôRø ‚?�ÖF ;ÁÞJ‘|‚�…(vbbnß¾76§— ñŠL·ÃfÞì �Ãqª‰Û]«’â ô¾N ¸@ñWç%—N¢×åû+’D¦g€ácQ3!ùG±sïOÚ2ŸÉú¦d+Ò\­1wfà/BçA—þì°˜ûßÔœNiŽ£ ª¥ØöÜN“fƒ/üå©í·øñ6R•9Hˆ@¤šŽø×0ÊØOwº4á/ŽŠ9ïSsªÒŒ!Œt®öxë�Û²�ÉÆVQØp�Jaâo®Ë¤SüúÄË3)fç ‚P»*Ý^¬ÐQ„8Ìê�DIa¯;æy:÷3+xúÚåúÌIEND®B`‚PK ÒV1]t¡.]Ó Ó Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤’1/Q…ï¹ï½yƒ‘(6±X$ˆ†f ‘Ðú;~„?â(t*•HèV5Q Ų֎™yï]…Dafw³œöÞ/÷œœ‹£“³ÈÆ"B“‹G�åÏ0Ȥp)œ_œ›Ýn5óÒ…!©j`ÅœØH+Þl6Ú+ S‘ž‰ŒÕªÊëß!E@´»¾¼µ4£‡ûOÝ·‹NúY80FÁ ïÏ;iÙÛX%¢—÷þéí]îœbs™ˆ(½·Z¿²^–ÇF—!0@cm;O¬í²ãË›�¼ØYk5’éç^_Ux]Û� þ*} _ß?Fš«žëa"¡Ÿm£xØû1ýC_cÞ[%Z�žIEND®B`‚PK ÒV1]ÕÖõ° ° Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ZM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÝIDATxÚäν.QÅñµÏ>gŽ� ’[�Lç£%·…ÂcÜBë9Z•^…V?…�ë„Ä$Õ›+fö9K¡f$Jÿþ—µdùäHŠßçÀÈÔHáÀN40-¢óè+CB¶ãt?p-‹â•aj2tÍu[j<ŠêX½ÓA¶89äìÍW~³Ò²ùëv£ñÒoW¹ÜížoÊYÒëÇId¥µój¼né´žÜÔÓ��ñÙhÕ2ú1>çýÇfíÃ.žj¼¼-Íǽ¹„Ä_Ýðî•™æP�tøCÿÖ[I~lmFIEND®B`‚PK ÒV1],Š£ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF9IDATxÚ”’»Ja…gþ½dwÝ5(»J4Ä 6‚…‚ॱ°,lÅÞÂG$µøbåSXEI$Zˆ)¢ ±‰¤0°›ýÿÌØªqÙxÚ9Ãùf88µuŠÂ`è3"ü%dRÄÀº. ]cæ$OârÔ¡Õ9mÞ�bJòèIÇÀVE‘tÝY%Cì?Y*š÷jå󇛳™¼+%ý›PŸÌ¶«å»jå>g fô‹MÄÁ°×xºZ_ù4 x­^�Žl6›-!0=Yv97hd‹ãCóäÈòèÒw@vûÚ5á5öwŸsy{(°Š{/§®vú²T<æÛÛ¥Åå6P(ZXêwJ… +N¹™Xó�÷ÛZ?n0 pÆÂÀ}«sàÇÛ±·žDÆ&à7(&ËŒ5ñ»ž_ ÝvhâøƒfIEND®B`‚PKÒV1]¹ž.XfgVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IO.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°‰‰jŠþo¿bR-q�(II,IµJ.JR FF&ºfºFF!F†V&†VF†ÚV’gœ$P4äæ§d¦UâÖ�1ñ׿0OÇ ÝIõ>WJ%Žß¿ÿyÓîæ€I³_ÜX´ùfÃWgYsVéC�¼)Iñš&–~nJç΋vx»g>ŒñKñðT®W­<4Ç2›'oâNëó[vq<[Ù^xïàßG÷jßG¿¯Ÿ÷ük¥ýo›óŸo²¯;–vï�|ZŒ¯¢þÃ}ü–?:nŸš1]»bç•'ß­žó¨ÞëzdÆŠ—?æŸØb#üÚ~³×OæïɧžÕe¹Ÿþ÷x†AÚ�¢eBŒ7yZ¦h½97�;ÿ0�Øë…Q×Ùž¾9+Ðbj‘v¯åÊV�g:-õÖßÞV ÖÕ»|ù´°îY,GðTÞ/-ëí;nÌ,ºó~oß ¡ð´ƒ�?:¶r¤ó½È|©2j«å/Á5'µŽL¿nïÞ~“ýô»¿+ªôù/_<±ÈUp¼Ö4ÍyS’B뺌Z™¸JeZfè>±*‘«”Ïá[côêBá?¡m×Õ”Df‰íe:ñØ[1ØìÛäʪ .ã‹&�'ç¤~Ⱥ|q×"‰YM<3ê%ÛòÙkß*ìžð§`¹ÐM-›ù³z³¹ vÄñ7=Î�°q9�¥¸•â›=‡ÅßÎøZÁÄ9‘aUw¯À)ýÇÕ˜+4„�r¾ð–þx8…Óõõ³‰Þ‚yßýoÝ$pHqÿ Ѥ´Ca'´ëJ_‘çêá Iž·ãVÛ)¾?¯$„­£–NÝúzö—5\_ê?n>�=aml׉ÅK+*Î7o¹:÷F˜’ðëÝ‚mŒ�æ¿�) Þ»£é€Ñ¶º»Çç·»w,)w9÷Ôtv³í}~áSBK·Ü/ü¨ýº|OjU3ßç4«Xå5Ö9¢{™”ê¸/—8îÉÑŸ[¿{éþ-…éÜâû‚Ž'èl,{ë³ïa²f¿–ææYëß¿}ä°»­víù�+]{×l˜3Ùæ~JÊ¿Kº—+œ·-èͤ³ßŠÍî•ô�LUZŸòþ€lÜË­Âg»Ä�Þ]oûࣟ´¸ŽQ�gžhìc»Y³ô;ã'~P ,}`ó8^ëyìóÚ•§«fmʶ´�PQ8qfäz¹)ŸV]þ^øx�Y›[~Á™ÂSWVGÜ+ˆúdsOsÑ» Û÷üÝÝ�ùókÒô¤y6·Ï7J×íu© Þ9/üwÞÆß·Ò3Êü§yÌùw$S:Ô³ê\}¢ôÜäÿж¸ßRPKÿÏ:»å©Ö�>1n`–dðtõsYç”ÐPK ÒV1]äÞ¦øk k Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF˜IDATxÚ¤’= 1…_¼ˆZ؈�ØÙX»­à <œ'óÜ nv3v²h“;nŠ�÷ØæD¨ÉsºßƒPT‘!‹’þ¡À»� Ðå9KŸkw«Í�N²X˜og´Q—kœ/:_”Ä6ÝÂLøo0kKS}„ ³8¦ãµ®UõìL‰sJÉûÛ+;öoCrÀ“Œú°Ïcç.*}kНIEND®B`‚PK ÒV1]ÙhT�ž ž Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFËIDATxÚbäšÄ@üýÇø“�Õ\þCë¥ý“žíØgÁ¯í?Ã÷ß,¢å®2í»Ñ;å÷«P)o¼šþebdaÖynöúÒúâ'ÎCÅ•årйÿ(G`×üï?ã�¿,z²_"¯Þ^ô°~Ùÿ8Xâã,Bm6ÞL:±E‹æo¿Yùþ¥ªÞ={unÁÏ»O¡â–¦ IEÒ7™’›vØÿþõŸ‡ý Šæß™þ01»k¾ñø}qOó›É{¡â¢‚ Yl¦sÏD=x&ÀÍþ�ƒõ?"Àþÿgøþ‡UYâG¢ìÅ›î6Nÿ÷á+#CH ƒ{‚ÁÞçé·j±1}çáø ·Œ…��áûfNN†TýÚ¯,Lÿzþ:TNK�!µ@ø�XbÏQ÷Ï_˜¸Ø¾ y�åÛ6;•w¡<—ON{^²šáÏN†„d&uw¯õ×b¯]çbûÆÉö3tk�j³º9«ïÏ“×P!G[†�L�ó?Svž7aü÷‹�å7®¸dt´aØÊ‘gHËçcÔˆ\s6àÍ;v.öïø“#œÂàc»å^Úù;r,ߘ™þL¶€5fªÔUD‘ IEND®B`‚PK ÒV1]G&Â1 1 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF^IDATxÚbüÿÿ?*ø·}íߤ.‚€‰�0pšY0…˜ÿ10ü#Kó&¦¯œ Œ¬äh>ª*YRäÇÉÊNŽæï¬,�„x¸XÈÒÌøŸ�õï?VÆÃ5žè*¯àa{ûIEND®B`‚PKÒV1]B»•,Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MP.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°‰‰Šéüˆ)c ©–¸F”¤$–¤Z%¥)##]3]#£#C+##+cm+ï}ÚßP4äæ§d¦UâÖ`õx²£´§‹cˆ…rŠAÜ�ù�] œ^Á¼L?üŸiÑöÿ¸¯¤\ݺ´Š5J|Ï„™,xÿTkM{8q—3ójµæ7½ÇyŒ´ïH–½·?÷á„§Ì*&ëY z÷ 0..kû>[¿ñçÊÕ-f¹w=«šÝ¸þÓzï�ROY·]×é—T²¾-!á+føã£NÒ Mm¶Ó?tŽéc~Г:AÛ¡mán6•oI½ÜÍGÖ0°µÅZ²xåôñ'ϲÆÍr&00$ýgl[»£Iäðßû¥�! —[¥¥[%fü,‘Ü“ûôàCv¦º{v<íE.F*_%Ö­÷gè^Èß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚb°Íd@_¾ýˆö²\Дʀ ~—·ü]¸’�‡Y�‰�0ªyT3m5ÿÿ‡r iðBwÃIEND®B`‚PK ÒV1]jf®ü¬ ¬ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÙIDATxÚœ’±JQEϼÙ}›„€ …AHe—Rü[¿ÅOðWİó7RÙ%‚6!Á&²¬Ëæ]‹‚<6!·Îܙ˵öášSú†� ¢(ÕÇ<–ŒÆífˬ¦q’eWr˜Â�Û­}»æcÆ�ѬNÆYg÷®ZF‰„=.yèå‚Úqõžíâ³ÒÓ„U¤Q,z¾dÿ‘9g µS%>"¥ˆ¢Dñ3°3¦?¼�ôzN)»ûbÒf�-_MÀ÷)@•ØÙqÎ{óR±äÈC ;¤ßäêMèß+IIEND®B`‚PK ÒV1]Ç}3Ñ Ñ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFþIDATxÚbü¥Ä@`d`øõŸ�…õ?yàÿ–;¬bXå~ÿþ÷ãçvVV&L›ÿÿÏâ+^�)ñíÇ_>w;…ÿv¾ÿøÙgNæÿ(ndüÿÿË7Fv4Í?~þ5Ö—^Ôí!"ÀÎÀÀ�o[¼ýÊÍ7ìlÌ(š˜™˜þ¡!†RCµ :$…9SC´þÿùƒ©’‰�Àô10±ÌZuíõ‡ŸÏÞ|Ÿ½ú# ¦JFMÛ©Xìçyi>7…ÿÿÿï:üàÑóÏ\,˜ÆxWMoT1r°3ãˆ*ÆÿŠdzø÷–ŸŒä&OÀ;ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFUIDATxÚœ’±KÃ@Æ¿Krm�iºXú´à\J��]ÝK‡ ¢àâäà"8¸Š¢ ]Q EÁÆZý ´]t±Òb.÷\ÒÚj*âñ†ããûÝ}÷Þ1"—öS¢æ“¬[xo³dŠesl,ù7Øuýí-¿|ŒöˆÀ¤RZqQ™+„¬?¶X_‘‡û0PÕ@ò<ص´ª.-ÿËjEf �‚±‹Ð4^>eéÌ�ØŽºNÖ-Œ8ŒxH>»C÷Kgsö¦§ÀqÔ⿪Á±C`]—»;ÞäFô˜šÏ`Û²Q×fçÃo&’V�Z-Äbý²ÎÁ9LS^œÉj%´«òäˆw0ŒÀÜ-¥{ˆት’¼<à|ß?Ø›àü{#æfÇ{{ˆHb¹¼’ËÃLàõEÞ\Óã¢Ñ¯á �ƒçÁuáy�1D"ˆD‡ý°ÏG‚d•…À%IEND®B`‚PK ÒV1]=þ-ù ù Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF&IDATxÚœ’¿KA…¿ÙÝ#ÆX˜Bƒ‚°Ne­ �`m´°Á2`ee%±‰AJ+K +;,ÄF%‚Mînïv×2þL‚S ¼7ï‰]�øï˜ïïp%h3VŸö@œQ“jM¦ª! Ò\­l›æ�ª7¤¶$sóhCîB_ÙI®êzï̵ö}û¥"ÖÊälxï€Ãe ÊVË[áõÉŸ7)#6¦2£wOu£MiçúzöNL„2=«i7d)iLn<Ì_´(WôÆ"ØŒR™$v';îh£ôOXz9§™Z\S›‡týÝU¸¿·—$]´Føiø+L Î-ÊÄ46 o/ˆ²$B1§áù¥~Õ9¨a¢1zÈz~ GSkE ™�ìIEND®B`‚PK ÒV1]Gîîd  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF2IDATxÚ”’1/aÆŸÿû¾×ÊI¡'Rš´W-R„Äfkì>i‚£Ec´Úh$s¿‰Ð ¹˜4jè &Õ¾×»¿oPwÏþËóäÉ�*ã“j¹A±4B†ØÆ;Å÷ÕÊ�Èño‹ºnXÛ0¯‹k«ÐÜ,Ö0·Û`Dk:ƒnœçÙyàÀ!m.Q>{‚¯n‘ˆÈí½FqëGDM¸üÏì1ÐÔ¬<,#™òO�ýÊ…`<¤ŽŒ¥;‘ŒÀï+àÚ#t‡¬ÿ¾ xH|}˜ê³)ãQxÔ«9ô™TX{p^øµ.‹ëO¥7™è‡à°,éØÏ ñåyðÃÉ,Îhî{çDM/¢V‡ï•Ä�ɹrt¡CvZ!$q²ƒ»jµ*Ò&\É~(=ÿ+(À•‹¤MIEND®B`‚PK ÒV1]Pvd   Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF@IDATxÚ”ÎÍJQÆñ÷=ç8ÍŒ£áG~&’$X‘îƒî£Ûi×t ­sJÑ¢&D¹(sÄÆéÌœ�® Áùíÿ<vŽOÒ%CN¯\÷8]ÈÛIDø .h�ˆð?†Š)Ž•vb8Ö"tL«Sk¸Þ¢°ž9\kˆª  ÞßðþA-§Èõ\Q*Ù¼«fòµ\AJ½LØÞ¾“³`øApû2®e7:õf³Xu½y›(�8ƒg:�e¡“ù÷As÷ì¦7ó„�¨e&´hïèÖ6tû ¥„‡ÁéEÍ„‘˜¢ˆO¯æÌ…åÒ6€FDÓXƒ0†È�ei“-8p ŒÀʘÒ@¾>™ÐÒ÷�9A¢K¦¬”Ë–åh­ãŶMR[-¤<›á+f¾‡~ï’ 97,HZ1ÆÿÚ©€Ê'ójIEND®B`‚PK ÒV1]oŸXîÑ Ñ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFþIDATxÚ”’¿JA‡3»{á’BDŽ6ÁF; !ØZûH¾C°÷| ÿT‚……‰ÂiðnwflD,6áü•Ã||ÃÌÐäxF`ùUœÝ_ž_H~JJØ™âJ1Äß0V‡DX×�/ˆQ×£±ûL€%,æ©3]F]ÌER~Ÿ{kÅßX› ‡¼±“·çáN¸H¡©lZFII|OØ9«_Ý]»}[í>¿mž¦ëéçSI…õ�U¨Ú’QÙL÷Úè'ã—áh³^fœ×ƒ½'ï Ø“ö„Àh\q ˜…‚„`ý@ì@ ‘•wöë>ÈòÂß|!®@šA»žQ§žU¿‰Í É.~žcâ‚ ü¡E«JºwÖvzÖMÙ÷ó…Èÿÿÿ�µ/]*f, ò fpxv# ÄIòvwáý¶%ñ+�cìéâÂq=9A¤…‰‘í‹ñ‰s"7ßr$s�kéæÒRœQ�³zA#óyI ‹†5 Ú ;þŠ¦Ú½\2ä OW?—uN MPKÒV1]v…a•$DVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JE.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°‰së1¿“ÛR-q�(II,IµJ.JR FF&ºfºFÆ!††V&fVÆÚVÿ®GÑ�›Ÿ’™V‰[Cï?çà ŒÆž.Ž!þÉg5¾þŸ´ééÿ÷Ûßÿ=ÎöïÏŽïÿÏ¿ŸíPÃ}æÛ¾ûûþÿŸÔõ´~B¤�ÚÿyF+´ ç„…&íx*z¸�ïßß§IÖ¾sÞ-1mûÿÇ‚E·­ÙV„Ol”]!Ÿ"Æ|eÒÿûzñÿë§¹ÿüÈvì¿þ¯tG×ÿÿÿW<;øõLŸÿï—þù_ÃùÐi‚Ô„[›ïœJØkÀ`.À ·—Sl·ØñÿÝ\4=xf5hHTà¹ó©ë_=Ç‹ÆÝ‰’ÿãõ"?þºHôÿû¶ô¦£yUnΡ‰LnŒ¼|<Ÿcn»=/�güÆÏ‘G]%BÊuR²|ÞȨ¦Ñ+þç÷/ÑžNF ^—~[§•Œ|äÜ™v$ñ³,e“P˜‘SÀ#ÖÌÛrTcß�ì¾ �©:Âàrmò/~áo&B ÷”€áÍàéêç²Î)¡ PK ÒV1] R~ÌÜ Ü Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚŒ‘KhQ†ÿsï�™f¦iÚ4¤R�(Ú‚4hQÜTñQE±ˆÝˆ-.| èFpåBÄ�ݸݹÁ.¤ ѵŠVDTª%¤­1±�4“ÉLgæ!ÑeÿÕáp>>ø}¾v%7~úÞŒõxú狟lwéPiôLráÎÞ ÜŸ{T®®Ô”bIhGÎóJwE/Œ÷fzýð¾m—�d? �Ý~U+|- iF6ÁInHÔâiibÔ0;ìFUö¤xn–ëu±ekÜ�m¬ÔÜXœ(Œü Mƒ¸¡å¹lÅü°”MPÜô«Š•éJv:ƒƒ(9á°2‘ß-ææ¼ÌæJš1&ÅÓÕ 3ú,-­ùL9?zÏÙ“ýÒ{RßÞ³©×ïH=;v+?œ[XöïþøR‰%ôH·ç³Z àFb<³<”¨¿u“±œºz /Ÿ_­|sŽÛ‹Þª{þiõMÅ<°àèêû©¨“5™^,†vy]u=Ûß'Š4(?|sÍêu#ØR;’ \×Òó»«3嵕ZLÊ 83ÍàVçê�LJÍŽdµˆ!‰í„©ƒ`É”p‚š,įRЏ]½$Üœ… Ñ:"3”¡@ˆÃ¨ l,>ÔdzñRzÞ‡úgÞ ¬8þ¦±ÔqÛ¸QØünÙ`ÀÌ­åß ‡Ý4�1UIEND®B`‚PK ÒV1]2‡V5 5 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BQ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFbIDATxÚ¤’» €0Cíp™%¢dFb9&¢£@å‚rÌ€ãþÉ™u)ø/‘0 C­"a,³›½3š+¶ds7XV FÀ®»I©éÞlÝvÍ8úkÇùèpž’3 =ì³<"¹ìÔJ×IEND®B`‚PK ÒV1]Søž= = Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFjIDATxÚ¤’Á @PDçï.ñ9ˆ”áª�êÄA â@"üÕÃü¹¿¼Éd¹�MÔä "Ȉ• 1e¶u÷úr®v覅€37ð‚„¡€²pû9ÄIx^ŽJ¸±aý“"¹ì Ð@ÂYû'vvÔì;IEND®B`‚PK ÒV1]irðl l Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/WF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF™IDATxÚ„’OKTQÆï9÷pÇ;Ž2%‰‹qa0+'AlQB -B¡ì YI-Ú)ôÚ´kE{!ˆ¦ iQDƒAø" ›™;8Ó=÷uád3cÙÙ�?Ïû¼Ïï=rfþùìÔÈ“Õ éíÅtã¥Îê— Žÿ,ç‚DÅ«´÷i÷‹fÇI¤·B0”s‘èÏ‘?�1hûN&' 3xOàôëgâÓ%–o3ÅÐÙ\ŸKëU’„Ý~Ö0ÐÄܺgÖúfÝߘ'U쟶EGQŧ`A@ ?À�õ„ÐÚן¤8ágÏé‡ œ$®¢ú;s›fåŽ\šÓ�õã;ÝÞ"?„¯ÉÂe¹r]ú"ségðŒ6�Ò´”¦‰k´Z„ûlƒá@7_uB5½b­¦¾/û•¥dfLß®S¯&W§üâùôé#v¾·3û5vÄ9›ew�†g0²åŠÆýµ‹ZÞ$'³4‡™�8 Ôcœ'Ä,ß•Â8`î?à”!‚FŒê¿�;ëK¸�ÔãœnouÍù`TLj�ûa ÎíÊäšol|vIEND®B`‚PK ÒV1]®ÓNKç ç Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxڜҽJAð™Ý½=ü"‡�‹rF+áD‚…(X –¾…­oa+>ˆ>€��*Z(‘˜�3†àbs›Ý±w× Ùr–ÌÇ[;³ aº'H45•*C�F.™”Ö0–ÌÈ‹Q*Îùï2A=f7×PŠVÒ·ÁçÎÌ¡ƒm¯Ñ­Ÿ}]6`>ÊÔZ¼{*â}3o?㇋ÎS_§*\n?Íý¹f_ÑæA­÷aï–öL«oõ<ÜLHÿÁ¬Ÿ¼DWâ»@&^K‡åÊqâHÀB Ü…1Áš­ámó�ˆjå­õ2–\Ü>ªrß©dÀ¬%à GÚúg6yæ É€ˆþ '&lÂçÏÅ(`ÀPIEND®B`‚PK ÒV1]’ užT T Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF�IDATxÚŒÑËOSAðoæÎÜåÚb±Òâ£(•`ĺ j"šFÁhÜi‚�ÿÀ-qãÖ•.ŒqePD’ÊF%¤@$DChÄ ˆB [¸Ð‚mïÌ�qQ·žä$gó[ôüvUýÌJmí̧‘D8-\°.ë8ÿÒú=<Ûy|.Òl¥<�ÃSóIÓ„ r�*\¥ŒqB°cs*iÔþ‡™Û­¨¥%‚f‰!\¦ÐuRR k?[Z­LozºÚ^ö¼i V¦J´ÜðûÆ¢ˆñk}Úèëõ= ÞÆ>Êo ÀåðÞùkgUÅ6µLË‘IŠ M5 Ÿiå Z£éoÍtnËД|¡Ô…ïųÑÑ€ÞrôÝ“î»=¯ÎÔC;S#§ož�ŽŸ˜˜kHYž±ÙF ¼¿¦a¤MÕMÝXup}us8¤TÛŒM„W�ZL¦ªëT…ǃ>Ó�Ü!€§&'+|>ƘpŸ·<�­ --¯ú7, „e²ôgÚƒ‘Ý7têFë³}þ/±™&•0ÀÁPµAõ2W™·Ü‹Zæ)/0bsrµ=v±ýkx×ò£hçÐT$±P£©¬¹ñsïh‡!@$ÐÝõËN+š*Ç·¶uÐé‰,¯¸ô_8Hhòǹ¦%Œ‘ébHò´µ#µ¦*�Ǥ +„¶ºPÖcCî—×ZïÔ]w;Û6StÕ¹ôm•pEáy[÷›Iëwe:[¡ Ò!` 2OJ4 PŽƒAuÆ*.\€!ý’�”#¹žÞC0W4!)0àõ’°Î�ç$H RFÅ;ø;@ ‹Ò—/bÔ2ùIEND®B`‚PK ÒV1]…‘ëê® ® Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÛIDATxÚlRAhÓ`ý’�þŽF‘á6P«X‘N^º’]d¸®–Š;´Ð^ZÆn½ä¦xñ$¨¤Å›eמj+ÒФAŠ®NhÕj0Â콲̥Mûçó–Œvïôñ¾ïÁ÷�AD8Â`0`ÆårÁI0  !63}|-Š¢®ëÉdÒãñŒ)»Ýn.—ã8N›dí©P(H’T©TÊå2¥øGÅ=(I’dYnµZÕju\ŒˆÍf“Rê÷ûS[[ð£=º¿: ]Çõ«°€ï;©ÍÍH$¢(Š,ËŽS<‚a¥Ré§úõƒáÍkÆ,à%hû.<ºqïõÝøo_QÕb±h9·àˆTß ç`túÞéõÈS÷ÆÛ…Û¯ï¿N²“©öÈéC¦Fðmæò¯Sçç†)3µOÎL^:ikš–ÏçWVøÅÕ[Ïï<Ñ?~xçYÓMfp –æ×–/~Ùýüi§‹ÅÜn·%al÷étºÓéx½^ñųî!y¸½Ûní¹pXZxœâÏq�ɾ¬×ë>ŸOÅñÀjµZ4 ƒÙlÖbzZ¿§õ­9“É„ÃaA�†-qÞ…BŠ¢PJãñ¸Åœåœ2% Ó4 !<ÏÛ$s¼ž¦i˲'ÖsrûIž*V†ð$IEND®B`‚PK ÒV1]OïÅ=œ œ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÉIDATxÚÜ�½N„PDÏwù ‚l¢‹f;¡´0VnCaµolgo²…OaüKÈꕨ,Âw-v + vŠÉs2ɈÍI ê ƒ1� �â1,ƒ@ j¸:¢†Ò€ã�ÔCG`Ÿ.RÊLV§îì�õ†;Ëå!†�/ÌèòÓ·”s–'r>ã¥!‚jKÕ“€��ºçöÕÝß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFYIDATxÚ|’MH“q€¿ÿû·÷c¾›sn6ûÚJ*¢$WÙa‰¥‘]‚.ADDA_‡uM" ¡.Ý‚:¥•}AšEI'Å1 Ãlèœcn{÷~ü*:Ùsà9<øõÆåºÖö[#Ú³Ù‡s–|zªíXdúâŽÜ\,Ù+Çla3øÓXa£òe²¼SÊ4Þ\[JŸiv›»Ú�Ô{ŧh œ:þíìymS¸—ý‘M¡ÕÉßNÖ^+µâÔ¹#.“UsI  ©qÒ¢«­ªpq!gêÆÝý—вÎÈL�Ô¨½Ñ¥|Úl\r#|Q®õêZ0g‹³àÕ˜ª* Ûìï3fpÝ’¤ €MÞ¤o "ÏHèx±ô*\—ò’Ùù åPÒïä•QsFì]ó•Ä–P:ãôe›*ñ°,¸ Gå´ŸÏæº'ÍÝD€RÿÕŽù·/®�†žü ·¦L¼ðÔ�µm-õ»œÏcþõ.÷b�qbãåd…T†âhÍ‹TìîÉóêŠC*'Ur€ ,x©lk†îW±X®¸È#|F—òSæv†nB™uVí3³e½†{±ÊǸ"™\1e…+’Q­0tòe›�ÙBIèC�û.pK({}k=÷2=“fO MÀÊ’Á`‹2Z%ò5xÇf­†¢ðWHEì?&R–�¨÷¤6©CüGWð6•D�V”H*[>[w~«:\Í3›ÕÑ9+Þ—é-¸AŽÖŸiVÊ&b�ïyÊlšwÖÈhÙäq‰Kèàßã~ u3PŸz+´IEND®B`‚PK ÒV1]¸Ù•ôâ â Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤’½JQ…ÏÌ�ÍÆ¢Œ(b!XVV¦ðÁÆÂNK{Á·° X>ŽU©¬\²{ggl,ÌõZHN;|s˜3‡vŸž¹SÂÿ‘dž±€D™™9ïì¢?�™¥_U¬mžÕè­"FXn‘džÞ†+Ì–Ìê&\œÑúšŽ^}<¡¥nÊ37éWU «ÒÎv8:Ôë;>=áËs}xÑOÿoØÀ†Ä™¨(ƒº}Ö0ØÀs°4Ý?^ó°;Ån®P7íË›O¦è–ÉÙÔfrÛ+:âI`îhG´7ð­äƒF“ñ¦Hù Aû� ŠÜ«Ð6&…º÷|à À³0«/Ô°¯CrÄta AIEND®B`‚PK ÒV1]Œh“% % Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFRIDATxÚ”’½NQ…ÏÜÝÅeYQ¤p),(,4ÆŸÄ‚øÆG0Ö>‚acimb¥¥•‰‰ÆÄ€šh0!ü¹ìÞ± †ȴ3ß=sϲ6W­\¶-ÕMAŒqJâ�D6bÖ© ·G?&$Óõs¢Ü0’ƒ$3�‚ ¼8—›ô7eßœ#•jËX˜Í¯Y�•f ã*ž° Ð]>Vkû{–,æÃESoï,]ÅCåjËp¥¸/DiÈ@búý©‘LJ&ï§Î·’72l4ζ)4Å\ÀKeªiûzÊšpo_ãG—©–=áØ¾“ôÊE&9Lv•g‚5]ëô”Ð5;úØ=Þ+ÖƒëÖC(Pg€<áÏ–ñå¨ý!ëZç4½Üîøˆ8óÓGzÙ®ðk¶&ÜþT˜éGÿ×BïÀÀ bþšIÿ¹0€À L³¾‘�Š.§y>!IEND®B`‚PK ÒV1]^Oªó ó Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CX.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ|RMKTa=ÏóÜ{õ:#£Ó ¥Œ�âW‹Ár‚ (ZÑ:¢pW«hU¢eË~BÑ"B¦E-´¢l!ÚÇÈ0¢#�ãàܹ÷}ß§…‘+;»Ã9‡‡Cã7Ÿòìew‘PÂñP dÍùºÑæ.éºõI²B'·àÇpr\Ø)Z–�Žw®uH’-Þ†ñ´2l*Cœ> » @€Q8€ ¬"çëdJ[–®ö›7¿ý€á;õãl2´ÿzÀŒ­Êì{Î4¢N�÷0¶bòDØ·t?ŸIÙjÄF€d óTõÆ\~³v°·žãŸ‘ãÙâö³éÖõ¬YiIµÃÁ(výÑÐÝHGŸ÷…Dàù«Z;2SÓ]ÚõÝ•¹Î©r�u]ÌØPÐqH¡ aøeÝ_i‰Ø:½7_, †IâÄ£¡ÁPÙÁ³}�mëµ|”ꊧzíL¯½Üg>6ùÁZ¸Ü�à¡^�;± CI/”·»»Ù(Þ.Ÿ}2³þ5½X¸´³g2ç¾@Üj3h[¤==ÜŸFKå(²¾Ï‰Ñt�ûWˆ�L�ÔÂÀ~Xe-Tä¢?X…ñáøÐ#Ù¼‹ÐÝ;ÅÍj»Ù2Ì@X7ë™J½/ ‹åF?6&õPn‡Â6äýû@*†½¢;0GÄOàØ}:ï¾�Ii‰Ç¾J£¥ò¡u\àÓaíÿ`Žiø‡”ÿ  óV&"ñIEND®B`‚PK ÒV1]ÀQ_£9 9 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CV.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFfIDATxÚ¤’Í/QÅï»oÆLKibR©øX,X•ØŠÚaçß°²`am%k{ +Ò�XHÙˆ¯4´iÇtÞ{ó®…d4ÄÉYÞ“ÜüÎaNfyÁß…ð…„U€5aÂ/žÁ¯1î sÈ),MçT€RD¬^X*ýæªg,d޳“9©Ût;¥•Å=ƒK_ÐÇÍ7]]qn4h“UÀlç/ùéýÓáî¶ç'9˜vDÙM"†£a…óˈm÷¶jA ÙË–©iæûÅF¹4­ÆÃÃOs3Ή¢eе°wR@ôª?•ÂnÎòÛbXÛ–ALÛ˦¡@k¦DÑ–ºq0Êž Ïï ·ˆÃKσ'bùÛ$k�¹CÎýùU³§?17JÅ ¢@ž°fÇ.\Ï,>¦Æû®Oò½SG‡¹¬ë»uhéìó<#¡Œ‘ÔÝhúf÷`‚#QÝ¡¼ô¶‹•) IEND®B`‚PK ÒV1]-<     Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÍIDATxÚ¤R; Â@}³;ÉBP› …¥�•ˆWò ÂÂhãYD‚¥½‚�•øAB6îXh7ÉcŠ�™aÞ{3”õPd…`äUGŒ˜ËªJ÷’²a²›�ŸR¤§, ¨ÛòÔ52+Œ–g³VHöÏéâ5w†ý(/ì'ÀŠb‘ß …–¡Õö±NîqCÅýI.©�³^ÎzâÄ’¾=ñrEÚÖ‚Gsãw‹BcšÒ�Ÿeâ„�Wúw�¯>8ÐUïLõ>ì=€p\8Ïsú—IEND®B`‚PK ÒV1]€òÿ) ) Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFVIDATxÚ¤�± €@ ã% Ò�ÃdìÆHiè¨hÌ 8îO>ÇyÙÿ�–ánƒ<Ž÷xŸ[Ó¶plµK0«Jœ™£Ã°Ö’µÑÝb-’²öhóþ+Ÿ�7K˜IEND®B`‚PK ÒV1]0¶éû û Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF(IDATxÚ”’1KÃPÇïÞ{IC4ÉÒâ - bÚIi‡Šß@ÐÕÁ�¥øÜÅÍÁ­ââ P´R,ZÛ¦éåž OLo½ßïîþpxuxòôíZBÃ*µd¬{SÕ­_¼l:*ͬQH4Ì�IžÕÊFvTZÊÈÄàK’!YÆ»lÁÂxktõ²sìwN=©F#ö‡œP«í¿í…ÏÛ½öQ2bÊ´Ö­êÂÝ*»ûŒ´”˜C!qÚû*[•É{\ä±P„úY D©£»8‹êÞpÖ¯„ó¦mSÞÌ€ú¾¿±[œïWãë‡Tœ73(¡GKëò¶¡op¸p 25c ‹˜¤±÷:. L &™°P r^û°¯ôž c3øùOâsÔ%y IEND®B`‚PK ÒV1]!tBJ§ § Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÔIDATxÚb”�ŸÅÿþ323ýß\0IOíö¶æñ³“8Ù~1àL Š4³|ÿÅŠæìÿÿ™þþcúö‹•�á?>Í*÷Q43þçbÿÉð‡Y�û«µê=vÖßx43þ{#„&ôïãFF&ÆÿœÍÈŠž¿Øþ110ýeÄk-KòÌT8çÿF&ÆÿÕ~[¥ž�¹©6a· ;Ë|š7œ3@ °×½ ¬ž}X{ƈ o<³p³ÿDÓÌÄø�á? Ó_öŸƒ5‘aSKûëˆëêIEND®B`‚PK ÒV1]­ú²i¢ ¢ Yimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/Tibet.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-7-7ýâ j MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÏIDATxÚÁiH“aðÿÿyŸ×ÍÍ­™Çf›N+[e'^I¦Q)~躠ˆ¾DPtÑ}*"Pˆ ¤"¨$ì>,4\‰b—­²Â¶¹y¤ò¶©{�çyúýPÕQ„‰¬2UÀˆ<`óP¦#�Ä¢Çíú¨€$æ´q9ÔL9£cÌvðê‰âæÆÂH‹ÄA£z}ɶdz·¤hÿ&dkUàæîÖS2XtèΚw®âò°Å €s¢ï׬§„³w™•*6—…šj»®, wízvz”§¾òÕ¢.fÀ· ß‘ÒkQsîÜHûºuå=�l*£&#Q¸îË;sËýÓ×ÿ~ºµãüáæ½‚J¯}ëu•š)tgä­n°ñãÏ·WþxD™è�œÕ’¹5¢¥‹bº»Ûµ´Ý»²oRÞ¢¾–òþ¦Öš EÞ·¾fÿrÒ5л,ШXÒÛs*>»‹ƒ©ù1“U»W[µ? S�2�#±¸¾g/ÆòÖCRß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚœ’¿/ƒaÇ?÷>kYjïß'úD%Îud~Áß×r)ÜÝÔû;�œÅý$ ˆÇ$3EèS™0$Áϵ{Š�Ú s@î÷a†n°ñ1úkagjrãžIEND®B`‚PK ÒV1]îóŸÖ Ö Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IQ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤R±JÄ@œÉmvcN¢‚(WDÅBÐÆÞÎÊδ÷'ll,´+Ñ+-DAï.Ù±ˆI¼6™ê;}oöÍ[ÎvѬ Ðó®Ê„Áh³9! 6¦jFRÒB^Bè¨ì£¾N†|ÀËs` ¨,¦¾ˆŒ €eóÔ¿–à�ó‡ë�89IÆÙä»,ß_‡¡;N÷Ÿ>'‘q7oã8t§;‡ÿf®—Ïw[Éúš�»´=\9»½Xuqöó�G£½«—ûåÅbæy^[ Â{/p&”4+ ‚ž 3á´œC°ƒV�iš¶âdåEeUC«ÖõIιîK¶=?I¯âßû±f ô�XIEND®B`‚PK ÒV1]RWˆ°¿ ¿ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFìIDATxÚÄνNAÅñsgÆY`4ˆA]iˆ1±-H,}ŸÊ÷à |ccllˆ…•øA²ÙÂ70ÞÙ`᯽ùç\éÜô(‘V£ªµä?.ûžymO磻÷Ûˆ.@a vÚõëËöþníqðõô2þÌ(A2²úøh»wv�ìÅWç‡Í�Š  Ù¨GqÕ�J冢 Ï×�ÉÃ`œ4ãçašMœ‡„½©Ð½¥÷³Bk•OçyVÄÚZúµ± /N�XŠ€„ÑBˆ¥O|úûº°[[urbÖ¼íd ›Røƒÿ‹—\±WÒåÕ‘˜IEND®B`‚PK ÒV1]>ÃÚ  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFKIDATxÚbüÿÿ?¹€‰�@‘f–»o^�­™Q¨:–|›¿ýúI¾æ,Ìäk–üñ›|?ß7Ò ßf¡ßÈ×ü‡‘q` ÿÿøþôãs”IEND®B`‚PK ÒV1]ݱ'Õ( ( Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFUIDATxÚœ�½/qÇ¿Ïï~w×êiI#ñ."M‰’x› ¤«–M,¬„Ýd2ŠXX02Y0HƒT„:}»«ÞסŸ|·'Ÿ|’‡¬Þeµ_15Vd¦‡§H½Nšd�1hñM¶Õ¡ ‘*Umkýuß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFVIDATxÚ¤Ò» €@ Pç#_C�  e}fc„;vpÜ?YV¨!éh¤…ó …Uaì½¥Ò‚‘y†ˆȵTìHl&ަÙ|±ÚGbw{âS¯\½'ù†š^ð‘úûIEND®B`‚PK ÒV1]V|â½ ½ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFêIDATxÚ„’ËkaÅÏýæel¨š E(’ÐࢴÑqa%Á†lÜŠ+÷îÁ�nÅ…þ "¸Š’�—*‚šW !ÚêP‘”j D&™Ô�Ç÷Í\ME[Ñ»<ð;÷î%å]bÕûdÿYĬXm²¬BUX68Ø÷ “4Áê_0ÿ&¬\––U„ ÙÛV�^dArp8ƒ,r]7•JišvØÜ{ûx·ö4q#t_±ú¼_Í�,­P(‹Åf³éû¾išqÛ&À¤Y>xh´“øµÈâíèhg!lBî‚û@H@î­²,k9�¾ê,åóy½åƽ�Ù#&�^¦ôy ÆÇr9€œVSuºyÝ~]ê~tÃÝÓòÇ�»'P™‰ íùËWæN%ß¿9yûžµtî@/âQ2ø[Û(¯©RM–kjãSpË0c6íI1áÙ9Ä™â¼sfåBnuÕqœd29…e'!І¼Õ ¿<‘¢Æ¹@‡Žçž¼ß½D¸D£QÇq2™L6›%ÙI€û¿Î Â"³ÿ, J(@½<Ú™¼¨¨õuõÝã?b€§ª,c€aD@:aŒv;¨ÖU©ªÊkêÆòºúßá}�é; ‚¦A#þÖÞ5´ŸÝí�R)÷IEND®B`‚PKÒV1]>õImjœVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TK.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°‰ðððœzø'(¤ZâQ’’X’j•\” ¤Œ ŒLt Ìt� B �¬ÀHÛÀÀÊÀ ê€J ІÜü”Ì´JܸçÎy ÔÐíéâbៜræÏy×,K>¸¿73@¬ðÁý¶—bL $N,™Âš*Èvƒ‡™Q„9‘a¾·#ÛAžd®,—O0¬nÜÓu:ÄxÁp3ôDBàÃ8 nF©Žó¡†ß¶/Ða9�­`ç®Á¦äζ±máêÃ7žìàbI0ôÛ:g‘ÊÇ΃®ÿ9¿ò´0°±1ØÞ1Ô4o1:‹ÁÓÕÏe�SBPK ÒV1]¸sb××Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR UÒmÉðPLTE;j™@l–FPŽIS�Iu�LušUwˆW]„Ww‡X^ƒ\}ƒ]}ƒy‹š{Š–€¡Îƒ¤ÑŠ3[Š4ZŽ–´‘™µ’C`’Cb³’�¶• »x”½}™Î%ÐÄgÑÆ®ÓÄXÓÆ¯×âòØBSØãóÙ¿*ÚGXÚÁ/ÝÂ"ÝÌbÞÍaàåãâÇ#âçããÚÇçßÊêÏ'ëæÝíèßðúñÜ‘òÛ�ôØÍõØËõãÀõäÂõõôöåÔ÷ìÒøìÒøôØøøøùðíùòÅúôÍúùõûòïûö×ûúöüùâüùãýùòýúêýûïýû÷þüòþýöÿþýÿÿýÿÿÿB ‰$tRNS@æØfbKGDOnfAIˆIDAT×c`ðOo{›�"謪§¥¦§ì€"è¯.'##§�¢ÒÏF€‡‘‰›ßÆY¥›3 —°+Šv[)iEiI[A AQ1!q dA'smVNv6M3;$Acw%^>w#SdÛ- A”¡¥²™^Öò:º²V^¨Ž÷w4Ðw�2V5YÙ¿¿IEND®B`‚PK ÒV1]À«à6C C Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFpIDATxÚl’]HSqÅÏÿ~ìÞ«W§«ù‘©4GNeͲŒ$,{¨”´P"(A_‚ $¬ Á¢|0 ¤— �DF>ÔƒHõ…Jn"ÎH*K&Y¦8Ýî×ÿßÃB|ð÷|Î�s8„1€…ÐŽëtÐŽ@R°)Ñ5ðW×È_¹‹‡nè<ª\¾­.%Åɯ#>„&07 QcÐb0Mp<, ‘²ç€ÐÑÃÕ_‚¬„×ÛFŸðSeâàì˜S¶ç§fW>Ws<Ï&Æ )Ä[J2²ðg²Ì_¾Íßê&¹y£ýŸ_7½ëOw_ƒf&³Žf—´”œÝiÏÀ¦Æ‰¤PW> B´‘<€O _Ú?ö¿ŸŸ”›H9âîkˆ7ŠQ»¤^,:q¾°*A�ðýY·-mû¶ŠS–´Èƒà@ïô�f™‰‚fRn}UTtËhí}:ý ÄÌ~‹“ºþ®€Ÿ—(Hën㜔Qž#²¢j¡ñ¯]WÓËklŠ:ÓÙ @$BݨçµÅc+f4#Áq§´±Þ]±fj&³ìn¯ih£ªÛ»?Í“*©�ß3ËúªÈ‹„”ñŽÚ⨩Q°3îÃË›Ê2Š MOÚÓs¹‡¤¦&Çt2ÿSÌÌ)M÷Tæî›_] -ÍR0ÒŸ>öâæÛ¹ ‹ó+l¶^Ð eÝ—lœÜkTïÖ‹t_²yï[þ—¼ü6rp Ùù¨÷Ï׌cŒY–åïÑíÐó û’t_’^ ÇSô]ªî‚Q鵆âþ%-Ò6ÜKþß3øÁêla#o J°Ù6¿§¥äH5­�¸<†aü?' k.d2IEND®B`‚PK ÒV1])ž€”€ € Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF­IDATxÚ¤ÒÁNÂP„ᦴ—hbX°bGâÀÂGÇgpíkhP¦··Ç@maö_&“stX¿<ÚÓ"ÈæŽü…8¦cA=°Oþ˜»Ð/xvU^*Ù¼/êlžr׋‡1¦¹ ÚÆ¯«4ˆTb·Jûä*Æ5÷b}êÏ3½-Û¶{þê¿+�Â@ÇZ›CñY»hôf [Û67ˆÎÊÖ (ȤÛî|דü›Ÿ‚8êÏiIEND®B`‚PK ÒV1]LEÂ%  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFKIDATxÚbŒ/bdba`øÏÀÀÀÀÀðåSˆî‡¥Ñ÷ÿüfb€væÿsÏ3yÆÀ`d`øõ�Ié`Tó¨fÚjÿÿû¿YR§‘IEND®B`‚PK ÒV1]»¹£ñ5 5 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFbIDATxÚ¤’±€0Bù¹¯•�Ó8Š8‚»9�gkcÍOpBÿ°e? ÈØ"¡C•IÒçiTc'»ŸWs.%ŒTc÷HŽœUºXÙV¥.à«Íq�P·r ƒ7v=ì Ã'ºÖËÿ´IEND®B`‚PK ÒV1]j�NÞ� � Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÊIDATxÚ¤’MA„_u·nA„Ȱ˜p.Á ìœÇ‰Ä1DÄ’ÄÏRBÈLâ§µ~ I†ZVòU½¼˜™~• ?ô¬‚î-IÖ“qºZê¨ÞêöjíNøxXŒ†Ò›¤9)²Áx>ËJÁ{ ʲ� ¥¼sW0Y+”ÌßwÛ(ŽOúZºÔéx`f Ð�ó ÿîúÇC@lâ}ãT+¤ £ÃÍn> DN è.r½÷Þû0Œ|>3¬qi•+0¤?~,<k+›Óª}YïkÉ)J,ŸòäIEND®B`‚PK ÒV1]Ē؛ŠŠVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFòIDATxÚ¤’=JCQ…¿3÷â.„4iµKWàN\ŠX» ±°Õ"½˜.$ïåαx DLšäó[Ìa4~¾çX'¨v­÷6xËÿÚí¬�6! ¶7mÉ¥”(­_Eˬël¡’ÎQÔ>›ýªF¤RÚ�’M¬Ù—Û:&SÛ’“¶…êYí?èý•�7Je>çêvÿ͇ÌðºóìIç2ŒÖˆÀFÚ¥.oüóM×éúŽL$0iB¤‘Ô^ž��`pÙØ„°�Q°\€0„ÈB…LõÓ1N8‰ ·ñ.‡ú²U–ËãŸä”û9̆…XÌÝyIEND®B`‚PK ÒV1]˜âìÚÈ È Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFõIDATxÚb` 0j¨2“¯ùÛKaœ’ÿÿ100002á’gaùð»ÆŸ_Y¸ùÿÿÿÿ÷ë'Fnì6¿ˆ`Äý÷ë?—]ØC%ki9îÓ›¿íšÇĆEËý7ÿÑíüËÀ. h”4åøêíJêR‘Ö÷ömûþâ †f»=èBøxþ\xÿKQYåÔ‰®.î‡XÞ¼`ÀÐËÀÌ/ÄÈÆ‰‚88þþyïÎe¹žó/\:ÏË®Œ�“‘ñõ=!,!ÁÈøíë7VF&¦_¿~qqrb°O„pÆÔÿÿƒpÆóãF² Ëß�ÿÉÖ ÍPQ�ü{$IEND®B`‚PK ÒV1]ú)ü´ü ü Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF)IDATxÚŒ‘KkSa†gæ;çä�‹MzIRS‹Ò1µj$¢X/]5R±èB,R­ˆq碢(îD·‚.¡ˆVÿ€‹ZlÕÚÖ†¦˜Ð„æÖ\NÏõs‘VDú,‡yfà}qâ¹uG{ïŽÛŸ M¿ �Ù•Ò�Ô¡c®Ÿ7v¨Ù@×á§óåbE`ÿ‚%"W;*sQ±»¿×Ÿü,s=ÖŒ­ùé»þ¡2û-I„ˆXßæø‡Œ…S=(ÚJQð¸ybŠ×ª´!h64+…rÉ øì®¬nÐ2 ˆÐ0,QduY¨:[$Ùæ !—沘7c*¥ùÚk çIàºnúZœÇ#šCï'¦ ’Ä€M­¿¯Í¦¼®®wzUgÓÛ#7;7ùd”kÙðdFCÓhpÉ—÷"¯5¹¥ØîÐè×ôbY%Bz­z^>>ódæô0Oe«óyåüÅ'^©Ò–È-ßw—¥(šy÷íì(iç¶om�vTÍáä½OyÑWÐÑÁrgG}Ƚ²Y~7öqÄÝh,ñ2¡É›=6a1™]È9Æ‘�×Ó6ׯ- ™8TL¬YŒ€K"3T­Tшˆ‹e#Ö‰­îl»_$ÝþðùŒº¤!‰ÈÙJü‚°|ˆPdŒQ©T¹|¤L{t{Ï•Gã©t^°-zIàð@Õ-"FšnÈÒJU° 8€$çü6W+/ÿGükòkÏLßJÄVPCIEND®B`‚PK ÒV1]ÐôÔ Ô Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚbLךyê:Û¿ÿ¿™HÿØØ˜¨È„Øê½eceýÃ@*`bûýg³¬¸‡“á=^NÖ_ $ _ŒleN ¿X™•?|Y~é‘)+ïŸ??‰r6++T3Ã/Æÿ¬œK‚J=tm~ÿ&¬Ÿ‘�™ÙZÂff`üòûÇÊ«‡ÅÅL´XY V&T³øØ9„¸xˆ 08ëÓQÞ¹þe2oÞ¼!F3ÌÏì,ÿž¼gÛu�ÿË�?¿ˆÑÉÆÆÆÂÀÀÀÀÁòïö›¿¯|ûöëÑ‘ÌÈÈÈÂÀÎòïÜ“?;n0üùGR aeee`vPa °±±{ºYuÀŠiIEND®B`‚PKÒV1]#™–âabVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CC.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ $C/åžR“|B\�4Ccs#sKk#g3W w +ƒ`ƒP;ƒh;ƒ\7ƒBƒbƒRƒés šÊ`1…Á.CÀ<† ù Áóâ3$.a(^ÍPµŽ¡qCÛf†¹»æíaXq€aëV†ÇvcØuŒáÀI†ãg.Ÿg¸r�áÁ†Wû>Þføt›áÿ†ÿÿÿ6<’tcI�_0ƒÃ³`N’·»‹Áº;ºO€œOÇÙ܃Dž)0¸^,ï�±@Ðzãñ{§ÿÿŸ«S0Qò\ Ðµij†uóòûNT3Þè«á•`am¼QßßÏ»ÆïóÌ܃¼Iõ±»gø{n;½à2;£˜Á{¡[d=M5Tª?ÆPé§ µªËAEã)»ójÖYÿ ,–§«ŸË:§„&PK ÒV1]Ì[tî‘ ‘ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-7-7ýâ j MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¾IDATxÚœ‘ÍkQÅÏ�™¼y1i±6Ó¤©ÒE@%Á…‰Yh�ª›€`ðc¥Kÿ‡®­‚êb\ø÷®üØéà&´"]…~còÆ´uÞ›w]&jÕ…guàÞ‡{.�.Ë‚úaɆMÂØ/2b†ûËÄ}™îfôilê r6çÂ2ÿŒYƒ.æ`c†œ)L©+JÜmÍݬˆ µ�.yTtQóáö˜Ÿ|ÅÇ$ÍŸÂ å#ž/«f°q.8¹$í®Mš’Ž pà¾YHÛ1?ƒ&ÜôˆkW.¯œmu?ïnªÝ˜O•enür� SÉû„_ìÀ’4‘!´ÖDŸ~¤F˳Þzkþzm -€å ¶5]DCûãrÇ÷ý0 �†µÖZÛn·o¯ÝÐWæÆ³÷—½Ýúgr_ÅÈӤŴ0ÇqªÕê`0�FÙl6¥Ôp8L7²­6çV›ó3ž!æ±ýCÛJ¥R½^oÿ³kóâΙCW�åAІ‡;�N¥R ÃW§’»·R8Z6æÄò´m×u•Rý~ÿðë/úáVd47¥ôÂéDAÜ?_ø>cꮥvIEND®B`‚PK ÒV1]�££œ· · Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFäIDATxÚbüÿÿ?¹€‰�@Šæ?ŸPœÉ‚GñÿŸ/YøþýúÿåúÿïOLYx iþ÷ãÿ·‡ÿ?žÿ{*#3Ïÿ_¯™D]™UËXÐbÑüÿó�?g£þ~c`bÿÿ÷#�#§¦NìšyÕYÅ�ÿ¼?ÏÀÌËȣʬYËÀ"ÊÀðŸ��]%fT½üüþÕ׺¼ Ll Ì|·ß¾`bø§,,ETh³01­º°ú™“/¾ÿ_zv÷ìcëq„(#ÖDòëÏï Ïîsó¿ùúA[\‘‡�“ÍôHa€5Uø§LëàIEND®B`‚PK ÒV1]Î(à Î Î Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/OM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFûIDATxÚ¤�±JÃ`…Ͻÿý“&Å(ÔIÈ ¸ÔÅn¾�O ø}_ÃY'_@Eª!6i’þÇA'…&è7].|œÃ‘ö"k&©;ŠÀÖ+»¾u7K Ñu� Coþ=?×£™>?¯ ŒF‰É2›óË(M@u”ê½ Ù›w'ù´ùà4ƒUÉâe¿(ûNÚÅá[’I'*u~vðô Î!Šå–4ŠN’u!a‡º æu»Á¶®Mš0$›’ªT�늧à`r å{¡¯£qZ{'Qûç„m¿8½»š§]¿ßfì÷¿1÷šFM«‘•´@ ½¨øŸ2k?)àlàIEND®B`‚PK ÒV1]oÕ[e  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFGIDATxÚŒ’MKBQ†çœ9ç^ [”EH*$"¹©m‹ hýƒ6­ú'­Ú·êHÛAi$a_TJ[~Ü{ÎL»4½fïòežæ�û‡Ú 13ü³bØìK2¾õ�Ec•V†¬ BG{㺠Þѱ™æÆj9>WïùîU-W¹Í3 )iìŸý8Ø9ŽFš€²K7©…·“óÝÀ-dI°½v�|;e¬6Öµ^_¹Ì%ï=£G'À$§Ã_‰ùwfg06Z^|&–ÁÀ,‰¤ÃE–‚"ëÃRR«¹{MtL”–ȹyÉ Ú “íieó±‘QØQØUØaÅòV­žr”?!m”¶ÕŽ÷òéj"VïxîõSö¡‘ $î¬Ð«JÕB ¥uµ7îÍ>L 9=ø‡¾°™†} çJIEND®B`‚PK ÒV1]«ÏûqÓ Ó Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MX.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚbTšÍÄÎÊðÿ?Ã×ß?ü-gØç3 ‚¿ÉÿÖ-`àæ…p~ýÿÏÄ@  ù÷§äh¾ÿôöŽþèå¹Z—7u‘ ™‰‘‰�áßÝ÷ÏÝ9ñâõû‹+¿}|ÆÌÆ�©’�ÏÈÈøóϯGÏî}}÷T„ƒýŸ¨Œ‚¾Ó•gw4~ãbdúGÐfF†ÿ�Þ>þðýÿk«´ošÿ¤”ß3üfþ÷ç?AgÿÿÿŸ“�KAJé÷O–×Wî~ú'òJLIVT–‹�çÿÿœÍÀÀðûïoay{ó?wø9XþüTÓ3•Qüûça?Ã�ª¸²ª¸2EñLCÍ€Ía¹„õ”ˆIEND®B`‚PK ÒV1]²–ך š Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÇIDATxÚ´RK ÂP L^ci+Ú"î]z/âQ¼…÷qáF\ ©EúõµÏÄôUEq–“d&ƒÍvßBÁ `Ó7CyqìOírîÚ€ˆç‘1lWç*±°Ž:œÒøRH4®–‘<,ý°Ë^3}LË\ccX»þ,óæÑðÓÀŒaå^7u©]m�m*šªËcТ„¹m:Ö5Zï6vUGÝrÍ"“‘Ç{¶fNq‘ôvÎYÖûª�¢75RÿiØsOùR{)ý IEND®B`‚PK ÒV1]¾—îÂ2 2 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF_IDATxÚl’AHaÅÿÿù¾™�ÙÑMk] ÌÖÜ´-!± ŠÂØ’ˆò ´AJ�”è¡‚:F'¡S·HêÐ-4;%P$HÁL-+ƒÐÝXÝÕvÝ™ùfæûwXC„~—Ç{ðNïáDßÝ}ç�e†'Þ¶¬}qf&r1â<<IïŠ]x<ºšýÙ‚Žð  q""ɾÅ.íu²7ZkZ¯¶‡Îê ‰æ[çbŸ÷ŸxðzîÇÌ‚‚ˆˆ¶í^î8Z�LÏ.r΀ø ó_ äŸ�Ù^aÍÏKÛ®±–×*÷d‡žxÔ®K6ª@ˆ`Û®yž_êó¢^f诫UrË jÈ8¯«‹)wGÄ*º„6Ii»ž®«oÞMJ¢HU¨ÜÔÓ9PnÛM©d—o2ã醖•è�ÁcW‚Éd*T}/]�²1djgM*g\eRÒáCÑÞ›mÂõ�€ ß¹nŽ�ô½úÚ?Q8*8+ùljrUi;k-. Nç‚å=�§GÆælÛ hüwfmüãwáz€€ã]9¥,'¤É!ĈòÄ «¢ª2ä™Ìš‡Š‚@Âõš›j]áOÍþ2t�Hⶆn¦p†@å!Có øRJ•) ‰D"Ð4Bøˆ@$¹Š€ˆ¾ï†ö´ÿtö-Á˜RDD®Ð8âFÎK"‰Ê‚�†ØN4ÍÀzÑ�­8Ž—8w„7úa^Sù–²ÊÙr6ßsÿ%dVòÿn°‰'etwزÝ÷þP7B 7v£¢ÀæáxžΔ’%’-‹` vIEND®B`‚PK ÒV1]ÙÞ�' ' Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFTIDATxÚbüåÇÊ@.`aýÿ‡|ÍOYÅÈ×ì-3•|ÍoÈ×,Í÷’lÍŒï>s“¯ùÿò�ýù' ùš}¶�¯ùÁ^ò5³1ý#[3ÿÿKŸ“^Z›úIEND®B`‚PK ÒV1]âƒûú  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFïIDATxÚ|’=hSQ†ß{ÎmJ¼1¹QC±]t7ÄNÁ¡ƒ?¸ˆƒ‚“ƒn.ºé (•¢ ¢(‚ˆ"Q¤Åb%B,ÖÚÛh ­1iîMîÿÏwÎmC‰ømçå<ðÀûB¬_Ô6ü¥ yž|Z'¿ì@)�öÛ×2!ß÷–*‘±¶�0âŽi½ŸXÂ�-òœ.©¤ªÆ½›µËçÂß�Ÿ§G¬É7ëMt«rŠÓÕãÃáj}åê¥ú­k›ªŠZMsâÅüþ�vq:¶:½ ‹­¶;Wú~`¨ùðnÜ6$…îß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF+IDATxÚœ’[.a…Oýwÿ} CDˆwñ$b¶`vbàÅNñjŒÌŒÌèÛô¥Ê‹q™nLœÇÊ9õ¥*‡–NÎHÛ€eúô¸y~[æ S‘GéE2¹Êɧ÷ Pˆ|:þ!«a&€&m+á)EAd¾0i…q6è¦q/ª˜[�Å ã+­æ O×YÖ2ËÚŒî£ä0e�ˆf¼ªžå’_G‰qˆËø–qÇÝQ9)A‘E lå„~øìºÆë/† o¥e¹v.¾/˜ A*ɇQ¬òWP™F“0p¸bÔÐ d‚líb+ÞõPòæÁv{o¡º©D„~'øÎú¾·ºÓ m-ŽÄ×�M%!€¥*˜DT•°Ô>ýSI¾œðQÛF½ m§z¤°m–ÔIEND®B`‚PK ÒV1]{* I³ ³ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFàIDATxÚt‘ÍjQ…OÕ­îžÉd’èB†(hˆDPpáFqås¸|_½Oà^ÜHnc$ q1hbÍOϤï½Uåbˆ«ä[Ÿâ|œ¢A¿·¶?íDs:éBÌ•aWÒ­&í®æ"qûMGk’åŠnŒdls,ÈZú�RGÃóC›Õz•|¹ ÐáƒÃ³ï&%Š¡àDJG€š¿¨ûNmÓ�­éõÊ8§ÄðÊá8å¡™Ôî×r¸“â|îÜ´©^âY;Ú`´ÆŠ§ÀD¿rn/åËOÌŠ"\ñ¢Õ€ýŠlǙӋA[!ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF&IDATxÚ¤RKJQ¬~ïÅLH&Nˆ(¸Dq�7p/!x6wžAð".\(:&3‰ã'ïÓíNâ$³J-‹*º»ª!K‘�ìÉŽ=lÚ^à ¤˜.J¬µ +ÀTðR“ †p¥ù-û^à ò™×‰˜a¥Ú:ÿAˆüŸ„ˆœsÔ?»,yC@¸(Žv;>ÈýSN͈´¢9 {“Ìæ�Îs¯Xî óL9:Þl1Ëðq\3ꟹ4V+z~ÿb‘¤UŸ¹ ‰ë/é§ZSù¾N•(‘À§½öíCJDýýäz˜£»íFimJ—6Jíù€&cˆÈÖöÚÅâd!0k6’hI ~ 2�Ï ‰±^GÓ”zuNUõLŽ4HDT)ZéÃ~éÒ³N©ØTÒIEND®B`‚PK ÒV1]ôe’;G G Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFtIDATxÚ”’ÏnaÅïùþ 3P �iÒh°‰bb⪠»î²Ð'ña| ÷}�F·jšbÒT1!@Aè”2 ß̽.ŠB½»{“ß=É9Ñ›XC"ôÿcþØåþ Y®aù_Ûa!`´aîZ©Ð Zä9�Er.¶Àóëfëøå Ÿ]]x.žÖâf-&¢i–~ŸŒŽž¿úrÝ}{vÊÌÀ,RvAê³È•WÍZì´¹ÍÒ¬ð™÷?în“yÙ@ü Q+eá�RÈ,‘u�òŽÓ¦Uö뻽dR·â½«Qx—ðšµ+e§õÇî×ÔûoçfŽl๠¢Áô¦Z C ¦‰/òœù·g+XA]Žú�ñ0®TEd2Ÿ‘@Fé™_ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÅIDATxÚ|’AkQ…ï}ï53I;é ‘"”jS ‚X¥·J—º.¸páÂ�àÖ•àÐ�¿ÀµÝ‹PÛ"ˆV„jkÓÄÄ$“fæÍ¼÷îua Flîú|œs¸MÂÈHˆD¤‘A K„ ë‰Å!4Ý^1wa¥¼/Ežæœ`q§OÛ,�„™¢Ú¹Zÿ6ú‹Þfž*»úffCzÀ Ž…… ­MŸ—‹'o°í-~ÞV“Ù×Ó­=`ÇôÌŒqJèÀ¯—J2‹k°ö@ßêgh¢"ùH¦þ×4¯w/7ùž*ú˜>·fçÔôùÃ|åìán0—„(ÿ…Ig¥º{¨~6¼ö»ljÅ•gùÛÆìË»>¥¾dV@âŠá´NbÜÒK¤æ ¶=¿Ÿyq�¶žèƒ�váfk᎓Gm‡œ�9�ZK¦pM·«Ygm\²ªÌ"¸ôåqR;Ë�Lå¢Ù}ê¹dÀ£‰B@éö~\‰÷®ºFo¾ù¬Y¬¦nM½ºÚ:  9úÖ+ûYãï¤ ¢cóÖ>M§ë"O‘�ç«É‰PÙÎoBc=–j~šÍ^'PsBÉÁ<¡”`xär r|Úµ�}j¶IEND®B`‚PKÒV1]°Ò—Â4VVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SS.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°‰Š²Ï»¦3(¤ZâQ’’X’j•\” ¤Œ ŒLt Ìt� CŒŒ¬L,­ ̵ ¬ ö¿y1ECn~JfZ%n ç6h300ºzº8†Xø¯�hèí(r¼þ½íÙ3Ó“:£·˜lÛbbyÝ�ã[’î%¡s¬¦@Ðämšü`Î4o·d—‰3nxÕ¤Üëûqà¨×Zû9ÕúÏ êæü·ÝP¹ª¡¾çó4¥õ"Ú¯k»·»mÓãçeRÛ±Aªq÷¤+n“™EJýb$6Η¬?!ÄÃºÑÆNÓ3Ï¡´Ñ«�_þbAוb‘3þœÍ{Wól¼²ÍGþPYõœió—N¬ ^'õò&‹÷?™è§¦“ú=g~“=æË³úÐüž¹q ’ýn¿tñÖ•7’y³Š™VLªñò¸6-è»z[èõ¢ÛgE>X$—÷îõ3¦Š£ŸžnüÂ÷ÃzZýüu‹ï±téùOϲ|tÙµ©±aó”ƒW™¥&_¨jýÍ›!¢jh8)»×8:±cî'»žý>V7Ü~{.l¸dÂ$ï…¿Aƒ>O_]Éíƃ§«ŸË:§„&PK ÒV1]6‚�çD D Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFqIDATxÚbTXøí“ˆ»¶¢ ’¬Ø½Û»¦†Ô qýøó— °°1¤/Î_}Þ–‡ýÇÆÿL ÌÌŒ¯Þý8ë­¹&ïÝF•Óþ12012LŠ�•éÛ�?ÙÝÇj”ß0E·nöbbg`$R3Ãÿÿ ÿý_»ïžŒð¿o‹×�2aæ Z3## 3ãš}÷EY�L¤Š×e\{$ÃÂFœfäeŸµáÆÅ[Ï2=²Wæ¼þÄÅÂB´fFF†?ÿ>xöåѳì¶ Ûrÿc`b"N3ó͇–ïºÛ’ªzâ‰[Ƕ@&6ì�‡ÝL6Væ¯ßÿduŽ÷”8û¡`ÁAs¬�‡]3##ÿÿï?ýüüÍg)Qö*OÜRa`'N3D?'Ë”UW%Øãý “e¾|ÍÇÁú Y ³�Fàßÿ8“+ó­‡þúicbºéó�_ÿo¿–eeþËÀÀÀÄÈ]‰ƒ¦wbóIEND®B`‚PK ÒV1]©˜MC  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF;IDATxÚt‘½JQ…Ïܽ›ÝüˆKŒ¨EHЀJ ±°´¬| _ÀR°ô¬,´ó|… ÄÒ(bHPDÄŸÍfwsÇRØ{sÊ�sfÎ0VF¡‰˜…Š3X±°b!A¤Û¤ŽÀ¬¤üÌLu'¦}vf?:“ßmŽ•ž—û d‡Ac}ëbe¯×í>Ì�m âÃÚU±Y�SN2L ËÉŃh<›_ñJO÷Aç+ô y×SKe–v]Ð34ï8;E: fDŽ ¥éfÇ5„—+›ªy°X­R6“„‘‚#jÝ"•"Ç¥VPF—l¿ýèT1 kÛ™Ú5~uçýÕ†O�Jû—: c.s'ÅgaYÇ�3w/¿Ž4¤i~÷ÜX)R”¶‰~ȶ`smËX°Š¸€Ù#1\CÆþëo:;k³·lÇIEND®B`‚PK ÒV1]ÂqßÖ€ € Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF­IDATxÚbüÿÿ?ÈêÚ¹b÷U†'�Y•^ x€"Í,è|f&ˆ?X˜ ›ËÒ4÷0—ñÒí—lÌ Wî¾nš{„�á?ÍŒüN½È|Nv6V&†ßþ}ûñ‡€Í¬,Œ(aÀµŒ‘‘M ‹f}9dþ½gïß|øÎÀÀ ÌÏ©,-ˆ_3#Zß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚœ’;KQ…¿¹¹»FA‰­¢|vâ°°³­ Ëô6–‚`« ¥ÁBË ÒEH'¶Ip“{7wl6H Y$Ãsæ0G–™$DûÎÚ™â¤ÃFê/Õ|JÒE`ºˆµ¨æ ;ßÝÞÏ ÷”æ9>Âyžžiµ±6çtOƒív€0&¾½–…‘ «+þô’8Fdô]èj0ƒ1øÔìî` þ¼âÏ*27+ëeú!cÇäà1UDÌFYÛÀl­ýG4KQjõP­E7W¨öß޵Ѥ`2vdh�°¹7PÀÉò"'¸Tïîùú&ŽÆj ‰ù|ýøkôÎLÅÄš÷³óÎ<4†7êp‘ë°¤õ3±=ïpEXqIEND®B`‚PK ÒV1]åY‰`× × Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ|’Mha†ßÍ~ÝÍnj~ñ ‚­¢’@Ú´¡žÄ?<è±TÄ‚xðâ­ «Õ¤E1ÖZµ´ñ…â¡BÁ£RQH$ E(ôÐ$¤A[Å6•Z³4›ýöû<¤Ò´F‡¹Í<óûÙyü;8P¢Ä'›Zk¡Ó9w¸4_5M�$‰ü‡,3‘q¡{×¢æÏμúÚÑgæ74Ô‡)tJ¾Ÿýí¹mÅùž údÒ X6Û2c€ÇƒhÄa«»§JX¬#7Ñ–|ÿ8×rè×óI����UÉÓgåé´»' oP6˜hqáDóRo 3—*ˆ³y^-%cFÅÖnˆÙ�m—0j™ik ¶¸ SÒâY¹Îîø¶på¢>ñª�›É¤/kD;ãT^‚^§¼ÄáP¢Ä-Ñ«¡Ü)_þIüGÿCZ®¬c‚€“Ýò݈ºó‹�]²Ì‡ ¨@tJºš—®²ß÷÷®–yðàá¦Tê�a‚AqèžãxS1ó-ÿx ¹ú<í<×%Vu4M›šú (.Õ��AUÿäå#^3ìªìuUÚj2ä¬ìÛ*ŒÞ”ú˜Ë+kƨªÓáhß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÈIDATxÚbüÿÿ?Ãß¿ÿönf2²bc``øÛ^ò¯¿—�—`d`øõŸ� ÎÿW•òÿÞ RÃÿ+gÿxÿÿüéonÊ¿å³HÓÌÀÉͨ¢ÉÀÌ +Ï($B¼fFe æiËÿÛ+17t0ê300001§ùóG†ÿ˜»0‹C¹?¾30¡ù·‹498ÿÿúÉðïÃ×Ï ÜÄØüü„õY˜™��‰ͬ d&†¡¨03õ76óH€¦IEND®B`‚PK ÒV1]!€@Òo o Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFœIDATxÚÌ‘+AD_ ‚‡AaP$ÀPXŽÂ5¸ ' Hü€; Hv—Ù™FñiHƬ€R�ª~)QrÛtyI©¿;ÈbÝl—z.è½§Ÿr´Ðï`OŒQCR€ª¡„2°ÄÓÞ)ºÙŠá(G®\'×,“¹1TéO 5"¹æ6Sy4XŸgB±é7,ÎÀòø‡`ÓÿÙù>��7�|×{òIEND®B`‚PK ÒV1]Ù–m Ê Ê Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF÷IDATxÚbä6sæµõaâäúÿë'‰€ù÷Óû?î\ac•bøÿŸáÿ4300üûöùûÕSÿ~|c“Qfâàü÷çß?¦ÿ Œ#²I,Ⲃîa¢ê ß¿ýùûM @—gfeNJ‘.Ngãdgüþý?#Iš!ÀÙ‚¡£šÃĘ…á7>ÍLXE�žc¸p����ùß?|‹f{æs;yR9þý$ÅÏŒlìü6–>Úì|'UÍlrª|®¡lÒJ?¾ýþ÷�¨xfd```deã±öâ1wadaùÿûñ‰„‘UZ‘ß=’]Zñ߯Ÿ ÿÿ‘”<~ÙeG6|´IEND®B`‚PK ÒV1]åÂêaÛ Û Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤‘;h“QÅÏÿÞ›/Mš&ý MKE.BÑt(U´T| ‚S\ETp¨ZAê&qpÑM(*ºø€‚Ш¥¤¢©‘ÆGªµy�˜&_¾ûphÁ"‚‚¿ñp~g9”¹ØÖ?p)i�M.y·ýðÐ[»^­s¢å*ÁÌj™rG}¾æ Sâa[§S�.[S¡H±P±K¾éçp RŽCœãÚmpoÓ²,ê`1ꌢ´cÐäC¤ó_¾ˆTÚÓhðóW ­°ØíRÃG8"q"züÜ� ½¹‰»Ÿ¬>ÿ¤6&±ïì¡Ú‹Ìôü­ló=6uE(wƦ‰bîËžøÖ°�.@âÆÆ,=z|ú}ð‰\wßΓV#—${"gz"£Åq¯vãžJ&9ñq,ý½ÓLª])]TîH+X‘ä纅+ÀT”Xª¹;h{¤* '>5°;ã/8‹Ñ-±öø½;º^1á²e¹€‚R öBÿ¨ICà“òá·ÙÏÛvZkYæõ«¸S'b ÒÄôªäʉ¿Åè䇹QûeÕ+޽™…V†1”ï†8iü¡ I‚¹leXàß�Œ`ý^fø~vªÚo,b¯˜IEND®B`‚PK ÒV1]Ç��Ÿ Ÿ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÌIDATxÚ”�±JAEÏ};înBTR(‘�*ØXÛXYû9¶Vù²ôÖ‚¥ä"&ÆÝ™yQ°Ü9ýáÜ÷Ô=.²S)ôûÍõÃóýSˆþH¡½[¯oëx2âökÖÆEƒSÄQvÆË ÉËå>3­5!ÈE²ÃyMÌl;&�Ɔ�7²ëvÊ8ø>êæL³–”KfKE§RùÍÙu¸j1=<Ëþé]�¡Ò² ©tÙâ •”MþòÎ.ùëµù×�…Ë‚m‡ à;ÓðøÏ0íC ¬Â¶[IEND®B`‚PK ÒV1]üŠLº  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF1IDATxÚ”‘1KA…ßìíî%(„ ˆ$ÄÂ@°H#ba!‚X[Zù,l A{ !•šNüÖvBTÒ#."ñdwÇ")ñ¼øš�™ù˜á=êçÑ•14–Õ7W”Íà7q3ˆVÖÑ !½nG ^üúÆ�ç?baÛöìÂW¸ÆíȈ{µV7•*ŒË‹ÞêRÿ(VÊ=Ôùþ¹IšçΤ´Õk*ÏÐT>&­ø=øÞÞ¥"¬…'ÌÁ‘«=éËSQšâm¥(åsãJ�Àa›| _Ãq‚aEb¶ìmmÀ9Xc`¬Ø\ sEI—#�Rû;îöŸ ‚¯õá.FG¸$Á½¶Ôç'°ÎA)¤SÿÉYzTÈCJA…”.ç~ç³0©_?XnOÖÙÖIEND®B`‚PK ÒV1]ùíõIÄ Ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ER.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFñIDATxÚ„’MOQ…Ï{ï�ÛNKgœé”/#HSYð ’¸0Á¥ÿÂ_æÚ�+ÿ‚ .l 1FQ`CÔÄšfæÞ÷uãÊH8ûs’'ç¡ár²3ÝZëL¼�jf�+£fëX‰à¦PÙ�MéÀ2¬VÆ“7wG7:cGãAÕ’HÅyÃ×®PÑ� €E†py|iF{3Ùë™±ÞdÚ�B&²Îžé?å˜'<†€‡ªA¿ô¸ð¨¨ó(Ü»ÓZo�ïMeÇÉH¡UàÙú¿PT,Ƹ4¦™-l¹¬ûË~6Z¼ò9”þ^oîÆóiw7�?®Mä*ÄYv 7¼NsaÓWÙòZ¶ò>ºwZ͘”å2`g¹¼QÏ?ØÔÿ¿Þ%ÞIEND®B`‚PK ÒV1][ì@X± ± Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÞIDATxÚbø� *vÞ™íôC]:(oúÅ7?þã?~ü`b  œf–ö÷á6¦Ï¿ª³²012üdbžuæ™<'ãŸÿ±ècdü÷ë'ãfs¸ÈvVµo~¾Í'õòëÿÿ°ÚÉÈÀ𛑑…ûï/dÍlL™ÿÿûÏÀÀþï7÷ßÿx4ÿbddÙ×0.ÄÊÌ´÷ñçäµ]‘�Õ˜&ˆ9ØKs0üÅåìß?Yš½5‘¿ï¾ûë÷¿ÿXÿçÚ+ê ±ã ­Ÿ?b„ö(fø¥e<FÍ�/õ6LßIEND®B`‚PK ÒV1]oŠv * * Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFWIDATxÚb¼Þ^%ìàÖy†wëÉ·ë4–¾þÍÛ/\øn¾æ»ŸjjüŠ9ÿŸÿgÀ˜Z~xÜ;w³ÇâÍÂû÷LÒŒ|Òó<¿v„ˆ<²Íh½"õåÓ7&&\€ñ^Aøîïþ2J-àçãþõ/êÕC%¡�/¿°üû%¿ƒ‰ëÇÿ8lþÆ!ÄÀ/Æ¡¤ÍÌÂÊö‡•�•�]Q�áÇ�ÿBÒ?ùÄpÛËÀÀ4I®ì¿kÑ_^�ÍâANŒÿu™8¶X5ð:¦¿fQïûíýö'3nÍÌ»óµÞ^Û|™{û+ŽÑã?þ}-ßúõ!#»‡9·ÓÏíÜRg˜Ù3à1Æoç>±óþüý�“å?'ßÿ Œß˜¿}ÿÍÍÇÃÏñÿï�ÿñØ×{ L L ÿ áÂÄÀÀÈÀðï?ÿÿ ø Ã?†0mð—�XÀÄ@8Í€ä}Êy¶IEND®B`‚PK ÒV1]¥Õw9– – Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÃIDATxÚbäQý÷ï?33ãç¿ É,?æ°|þÁ@,`a``�t¶ÑŸ¿d'£¿ Ce,û¢5³³±4—Æø»Y|øù÷ç¾C ™—10«ùí»O—®=0ÑS=wᦹ¦CN +ÑÎfd�ô’�þúíç�ÿ A‚ì+ìÕ~ïìÞÞ‚ßþ200üab6úó�áû{Fâ�]Äð‰�ÆccüÃÆÇH|hÿ:|š�\Àø÷üeò5ÿðˆ$_ó¿ç/)°ÙØ•lÍ€€¯B7 âýCIEND®B`‚PK ÒV1]r��ì ì Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ”’ËKTqÅ¿ß{÷Þ¹ã¼Ì:3ÌP$½˜i ™E Y©MP›‘AnÜÔ&Zõ´¨Ë ¹+ ‚ ´¨F.ÔHÌ(Ô #S�ç÷ü¶h3Ù¦ÎöœÎ9ç®ëÂÿKJi!º†çuå%Q±Ú#â²<¨åû ¢¢® k1Šè0@ �|é4ZAt°ÀAtZ-w?¢aê*BœgDʈ1’#ª’'9B$¼ºÇ€¿g“zÇ—{@¼ ó¿•îý™)|ï1¤kã}ͱ±Tä‚’­Á ´;±›ÌÝ%¥Ä?V¦ ܱjRaÇAqÏ÷ç wt]k÷¹0·®¼:ÛùœWÒ,rÉ®éž\äÂè½ AÖòfµYÛ²3Òû1{®ån.Þf¿9µ<Zké7eñð­1kÕ9!û‹¿#Ý à^Ä@;‚ÓÂh.Š"†6Dñ_ð4D\ŸÙðü5ZA!’;®gIEND®B`‚PK ÒV1]JžŒ�¡ ¡ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÎIDATxÚœÑ=JCQÅñÿÜ;~<üNbÀBÐ*¸\…»°wövVB¢¥Ä*VÁ"E$‰/ïÝë·àxúÃ9#«ÑSõ5³·×rwË®ð÷ĨÌ>™NH 9“–ò£tÄŠ-çžÃˆ¨MÞmüÂa×'rÔ““St1ÚÎ>9ÿ+ß+š59 `j¦tŽ¥^Ⱥ&Cq VÔ>Æ\^Ýß\WªŽÂ!¨œ_ [Ó~88Û‹›ž©ƒ’©ÕÔVmÚŽâÂ�¦f1§Äýèß‹?I%Z�ºIEND®B`‚PK ÒV1] ý< < Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFiIDATxÚ|’MHqÆß÷?ãÌ츳ºJ~ïÄÕM#;Õ--Í�Ì,2 E÷Ї_Ñ¡¢u"!"MÁL*=HB$jÙF™IKXöá¸m¦«®³ã¶3óŸ.FÒïþã�çy0½¼‹pÑ`Pj ¤°²¢ÆÄ›]²+ÍórÓõUÏxXSY@04ƒðŒÊª¨<"Å5Úψ®#))Ê©Ïåì=wæ:»U9ěĤâ½,h”±I ‡2‡ã„•¾éí¯çœˆtj„ºәܸÏ^8ù"àj™�š%HrsÕS7mÀ€n�,«w¿Ã�l^ô+±oç3TÊ(áHLœtò¨³"ê+Û|avèÕ4)%5ÖUñ8?ëÊŒûݳq¤¶ûùVAvû6Éa¤Ä(Ìs6ná3z;¾ßí‰Cœ(&–•ÎT—œ‰|é~ÞÁèÔ ˜^ÞÅp¢F‘E †¾¤`ÎÆÄÆ‚Ô=Oƒ-Ë“^Bpö­jíñÖ4ã†çÉRÀoæDb¨  ƒteU7[Í 3ªM>®ù¼ox”êÔ’–f­>6P´ùÒçAÏà{‘å$Îô§K"ª®P°ËÑ��ŽÞö…�~,Ëœ�t¸tº²ø¬òéá@+jše�ö[*š#'¡./©hÒ-×µyg¾BvîÀúª[v¼:rÏX”xYîßññbç˜ËäÛoû_z¨¦Kv[ü‰ªþÝÎËcSã"˱„Yç4ˆ†ª¡·¦Vë\ †X“�r¤ÌWSÖ$èíG]7­—ö—ü&Îa‰âøìL˹ÓmÉúµ‘Þù%¿Ä ÿÑPµ_ÛWâzµcºIEND®B`‚PK ÒV1]�p[À À Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFíIDATxÚt’½kSaÆŸó¾ïýð&ÄØšÒ–Ðp“l‚øUpÖ ¸©)8IuqwG'ñ/pp­C¡ÅM¡Dqp²b†jmÓ&½•äææ~‡8hŸépÎy‡‡]~^Q†bfü«˜1ˆÀ„Qâ0Vcm0Ð��R¼4ï+àÅý Kbü¨ً .eWæbK¥:ÜyÙ¤õ–Æ0åÌ~Œˆqâ(ßÈ» Ü½ÍJÍÉ ¢³éŸ÷‹ë•ìö“-ëÓ!I‚.þXd©jC 7BÞâ[ áíB?mÎ<þ~³æŠ)‹ ß;™Õ�òrþóÕÙÜIÛžh H#³´¯Ù �–óáÝbPJ1 ÿYóôÓÆI/©©RŠÏL /¡Á97]/$åÅl”Ö°Ùƒj˜�Á ÉT ¢Aî à…øÖë ¢¤Š3êÔ”fú!¹1ƒY^²#)?ˆ·ûR0  É_oöË-ÿ˜¤X¢';wò«ŠýWMíÑWí][ˆáÛ¥ª-•ÐnDmYë¨y£w}¶î„VÛ7 T2õöJ£»÷ð‹µ¶+&S€3�@2Ì|qʯ΅ ÀVÏ]i¨�ŽþwΓ!Žký££_˜ $am× b‘ã4aaL ^ïhÃÚ”·ð{ÒÌ9Ç¿Š‹IEND®B`‚PK ÒV1]Å öÈ4 4 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFaIDATxÚ¤’± €@ ãÄ� �h™‡¡˜’†–ŽQðBa¿û“O–ñ,6ÀÊ”¸u„a&6óÆ˜ª6×yBÔ>9ÔÄ_J„3p Æ~\™Y%Á­½djƒy•~’®‡ý[×àÖ þIEND®B`‚PKÒV1]SÄÛMzVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/XK.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'ETK\#JRKR­’‹R�ƒ‘�‘‘®¡�®¡yˆ¡‘•©…•‘¥¶��•�Aé¬Xu ¹ù)™i•¸5°:¨¡ÆÓÅ1ÄÂ?9äcÔ¯ù�] œ^Á¼rt0°Oi•M0ýð횆·ðžŸ˜}9‡H¬ëŒä]æ<­¥)³¦AE¿™gžÔÞS‡ù v <ÓÊyp=^­mÅÓƒrZ^:ÕÜKNþÇžšÈ´'îXª†ÝéŽ>‘$%¿ö†©›å˜™Xþ«Ôe–zOºƒÁÓÕÏe�SBPK ÒV1]Úñ§<  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFKIDATxÚb”·žÂÄÌÎÀðŸ�����áÛvWã+‹«§ýýÅ b``äüÿ­‹ï×fNF.¸`Tó¨fÚjÿÿ#LXÙtâIEND®B`‚PK ÒV1]¡à*¾| | Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF©IDATxÚÄR» Qœ}ƒólÀijk´$##Áì@° -@³ ä|Ê¹ï­ ìC8'Ý™evf©ÛUè ƒà�ºþb*'ú„ |8 E�"äWºDØVsø5Û®P·Æã:�¶ 9ÛÙ&ssVØ@`@à‡î¡Um ?Óe�Äfº ÁHµMãÕ2˜U ÀÕm“ïâö¥*oÝ>ì3Ut6·‘d±¦IEND®B`‚PK ÒV1]U°öôôVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR žŽ¾lBPLTE3fÿ?_ï¿ÏOfL¿Y‚ÏÿÿŒ©�ÿ™³fŒ¿å Lyߟ0x?osF¯ò²&`Øâ0³Æ_¦¼oc\Â>¼mIDAT]Áƒ0 Ás•åBçÿ_� ì§”8¥@±‹ç~±PéTé¢UNÃÖ@Ú6pkÑ£ÿŠ_¸„°¦NÙw4uk|U‘Ê“ËÒeÇ�©r©†‹ËrËŽƒ™åa60Nò2� ÊzïU…IEND®B`‚PK ÒV1]|,;†‰ ‰ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¶IDATxÚL’_,•qÆ¿ßßû{ßsœÃ‰“òïä(†Ã:$¥¶6 Ã…u“­R›j](é"‘dHé�ÑZ›VWj­•Ñp‘X±¹8[Ça•°‰âíç_ç}_ïÛ…i=WÏÍçâùìA¾ä).uDÅÕ7v<}1äñòþj…—°/óõY]ǽÌ-)jŸRá†û� Þ±ýLZx©0¦µÍ«Ê*ȰZ�µe�­�Í•ÇÞvWe¥'®»¼õ³‡kʉ¨q™£ÐC*ëfS2*ë;Ëo>Ãýy&/Ç%诩#½$Á¨¸teÉ)ð}½ÚªËÈq¶†ÇܪM?:(æåÓ¬œ�OK�-]ó kþ*�Öðñ‚¬ðÛ¦d$Û Ñh¨¿Z´Z·ª�¥AwHh˜¨ À€Éã±;Ü”!KQ@ûÞèÍa² È2ÂH ‚,oB@�eJ(Ý‚eic)â–3D†–ƒ ‘0ˆ€@dmf ø| „…jÑÏO²­°n§¸øÝq»ÔÔBâ Âêop¹ R¿¼ê$¼OÁ±‚(ÒCe=n�Ï~£ü¸.n—ôº�ííOÎä´A;DgˆFl÷šê%�MÈnZ™žœSsÈ(4ÉÅç3›ê Œk_¡ºÜ>3Ûª=\Ôÿ+UéIøfå”\Fž5õjCƒS.rîõèž¶L+ÄÌãË8¹h�BxØÂ[-ïw¹;¯ú`�&”vžÚóïaçžOPÑ—›‘TSub_+Ý«ÇÙé¡Ä ÿqÀóäÑœÎ`Òäöô-JÎ…@%ëÝô¼GÕJÒ?8f¶Lž>z½Âøeø@ëý¿´+$¯£b_‹IEND®B`‚PK ÒV1]Õ½ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚbäïNg@_~ý Ô0^”À >­Éúvl:#;/² `Tó¨fÚjÿÿظ …=å|IEND®B`‚PK ÒV1]Å]‹‚‹‹Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYsÄÄ•+=IDAT(‘�’?KAÅß[7—ä¼»DÁF‚ˆšPD+ ±ÓÂÎo�á§°²«Ôö‚F°3Vþ vño�“˜¸¹‹ 1Åeš·³¿�áÍ�ñ¯£(�þ«Hðo¼Ž^ BÙìíüBEÂäie½c²€È ,´,´,677v_žÝr9S»¾¬æ¦§Ž»©˜H©]+¬hx�ÜÁ…㵯oœâfóGû[©Ò IJLaeÁ$hôÒ«ã2|÷í§ÇL®4|·eÁÄGG „ézDó„"ET4A\ij3á¹í¿)ד h§mŠðþÌuš–Qq$@è|)JëÕÉ�bý¤ÚÃ’KoWÇë¥A+@„äÞbÏzÝäÊgR±�1ÖHê~Œj,�tÿ•ø†{m‹ÎüF|j„V‹VIEND®B`‚PK ÒV1]‹ l9 9 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFfIDATxÚ¤Ò=(…aðÿyž÷^„’¸!¥{î€ÜòV%ˆÕdb0H)ƒbU6Y”A6ÄŠÅnò•A W>îõ^¯÷=¯ç�ÒuÿåtNý–s‰þfVøG¬�jŒÙÝÆ]œróÅ÷á:©¡X{I]Þ<‰Òß-ìo¡Ó5;/ç§²¸ì Ü/¬IÊN/‰˜ÙêÛô ªŠ³Ö•— Sc+ŠJtdõìöqp|‹Ÿ’Š(-ã[¶Ãî+ž !ÕÒ‰¼|”–£¾ÙܱýÂìp&LZk‚­‚/yŹK+nE­:> ììÛ]ÔÖVz ‰•e8<<:›Õ½‰‡Ðö~AA*ÚÓÐwê ‹d6½"ý)IŒOGueÀ^°²zªizã0AÙ9ñ‘½¹”í�R?­šEHŸ‰XÛhídؽš=˜¡«k2>‰€¼ÈW¯©TvRÅoMFI€÷ P QýËo½ã·Ñš¿û÷I¶IEND®B`‚PK ÒV1]mdŠ¥ˆ ˆ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFµIDATxÚ¤’;Â@ DÇ/¡ˆÒ!Q#$¸7à6´\” „ DHÈϦ ƒÝ&qûfdkÆ”¬¶è5ªb0`¸ªÛÞ›y¹˜y(t ¿ éè]ÕnoûÈÎ%âèŸ7MÃáȺ¬‚¶ÞŸndífÃ¥±l|�™{^v8¾ÊCY¨[AD—4w2)®F±cÆ®³[š¯wÞ¼¤ÃPu§�fOô•y«búöLƒ>ì3éZIõÔ-†oIEND®B`‚PK ÒV1]s¦&Åû û Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GD.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF(IDATxÚd’MkQ†ßsîM&™I“6“”¦*¶¸QQÐÒ…tS¨" þÿƒ tåÊ¥À…+¡‚ ‘n*Š îÁ’Zè-©Ml¾¦ÉÌÜs\´EÁgó®žÍKý»�Aqê„ ŠkÔÛè'ÅÔ,c­ Ë àJˆÕC Rc Y3²¤³é_ž¨©:Jk ±@eL=0�€šo †Õµ"›[ûM.µ¬ÚËdçæoO ªÍ’IF@ À) 0 “²º®Ë¼;(ÜôŸn-•‡ À�¶#z¹^YÙL¶æª‡ž"äœa‰8]Ú 7†¹r<0¤,–Ô7nûÈ{±^[nŒÞ¯µf«ŽàÛO¿JoöÂz/gI}+–ôÄ:žXèb!º3vøjgüg?÷|}òýNñÉÖW yvîæ·¸Ä�¼„SøxD)cézs/HbG”eÊ2 §¹8)çŒ|oç¯Á\*F÷&Z3Õ.GU….ú»_:o÷Ê?z>A ÿ''J½Ô\(Ä�&³aÇÇ’·Ht¦Ò¹ö>7G^ï†õ#ßSú+;¥q?}8ݘ¯´|¤B&……D¡PÃ)˜Ig+ía¹5¶²8%Ô_°lM|¾XÌ;qäÎØ v ô`û0ÀÙÀ4"–´;´v³‹$µ ʨdëÍD˜°ÖA/…(¦G`éäž ÜjÛ \ÀЬýËÿêl€ý IEND®B`‚PK ÒV1]|…‘æÄ Ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFñIDATxÚbTð›ÃÄÂÎðÿÿŸ¿LB¼_w4µ‹ |øó—™°0ÿ)½h²ä‘ËF†ÿþ11Ph ™‘��…ù/ã&Æÿ,ÌIÒÌÌøæ]µ߸_üà˜~G�‘‘«~lZÿž'\zɰ@•‹‹ùOÓu]=þÖ¢/‰Óü�I…çK°ôã?8˜ÿJ=ÖàýÈð�‰�é/ÎþÏÈËú«ßàìÕO'߉ôœfÿùç?#q630üùÇ$Àö#MéöÏ¿Ìâß±F;NÍ þ²ÄÈÝg`dÀ¥Ÿfˆûþã“ǧù?¡D(‘Q£„¬öïIEND®B`‚PK ÒV1]u¼ ¼ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFéIDATxÚ¤’ÍJÄ@„»g&3* ¯^})} } >Dð {üAE]™M„$›L—‡€fÇ[RÇ�*šîj^Ñd­¢2Ô4'3µqÍJ ød#œX–¢è›Ø¸¯j5µ�€ˆ˜X´ñU>Ûž¢]Gó7t»¼?ÍÎ/®Ê°îHšË§ë“ììæó.2ÇËë"[Ìó×-•tÄ)ó\¼e‹ùªÎ#3{ïû‹½—¾lkÅ|8Ù ƒ/ßât²·3ëoÎišF‡Ñ¬„ÐJø«DiE ¿Iιá%Û‘O2*ü3܌ߊ€yäIEND®B`‚PK ÒV1]-mpŠ  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF0IDATxÚb¬\ÜÉÆÎöÿÿTðïÿ?N6Î<Ïxnlà÷ïßL 8ÀFÆ,L Œ ¸vÍÙX˜þý¹ûü÷ÙKÿ?|Â¥™Sè‹äíçËÿâýÉ&÷íówvm 1Â6ÿcfâ}óÙeú®·2Â{ó}¹S£¹ u‰uö_Vù‹ؾý<ïmÄÀÅùi᪇ŸÖoûÿç/±~fD{&&FFF¬‡®™ù÷Ÿ†Šßù8M6œbúü•/>T~ûrÞ@/FffLÍ̶A®Ì,ÌHvþÿÁÃñBURùô]Ås÷¸?ÿ`úù›EJ‚‰‡ =tþýÃÚ,¿þ¼QÛRâ'þ拆™9·†:†NœQqü_†ÿdEYtÔ8¸HK$÷3ýùÇÀðO  `tgÈ´Ž±šIEND®B`‚PK ÒV1]Ôº Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFMIDATxÚ|’ËOQF÷13ˆ‚ Ž…‚Ê‚�….Z©bTÒ Ô(Š1Üá£aã?àÞ�111îL !q¡. DBPT„¢(¥•B¡ÐÂð蔙ν.HHŒÊÙŸ|‹ó!¹Â Œq�bÆ8ã!ÿ‡q´®“�¢yéP„ç!°ËêJ*:¿Œñ¿uÎaÝ a—G¼î —-F9çãꪊ†k'æVž>ïòOD ÁhI�ÌΕG½îñS%³`jiS¦ŒñBkÎíÆ³UÇË ¾´öðIÛ†žÆmjšN‚jeÞë÷ØCÀ�´à@Êy⨣’$”—Zì6ysä`™õ€uO0¼À9hiÂ9:Y¼è­­Q&±(˜9nTz•×€˜ TÓôï?¦}á‚ü\ÝH÷ LB±”AÇ®¢ø]×ÈÅò)š½—Yn‚ROò*77ký_”RO¬=zön.¦ÎÅԖ׃ªF�…‰;Nß•#3RžEÀQ‡Å<ø5³ÔÓïoïùô-83›@r…—s0MSÞ¿oi5] †ï¹~^wª™Š ·@ö€?ÿðq¸£{äëP(¶¸ŠH’ PBÀ`8i[*Øìkß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚbT \ôçÏ?1!ÎÓ Â¦­¹\?û?7ÛÏ?ýùÇÈ@°|ýþû÷ŸÜ?X~ýù÷åÛþ&ùj†8+ûñ‡€æ@¥¿ÿþóó°100¨Ë „¹¨°°0é¨sq°±03ã×ÌøÿÿLÑÎEçz–žçãf#`³cÖ†?ÿ óslèòZ²ãæÄ—™³‚µŸoMøJÐÙ—ï¼ýý矄0ëwßÏßzÍÉμvßÝg¯¾þüý—€f'é¿ÿ ò±300(JñyXÈñp±þüõ÷襌„‚áçÿþ3220Ô�l³]ú:¨æÿ ¤èe` sQa 0>{ý…|Í*Á‹ÉÖ ©2l((ðˆIEND®B`‚PK ÒV1]¸ºú/  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NP.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF1IDATxÚ”Ñ[H“aðÿû�vjS,Ws§¦k‹Õ·íº¹¬ ‡v€.ì¢Ð„"ºŠnê¦ëƒ@è¶Ó ¢‹´´ˆ4J²”¤Bšr5GmsÓ¾÷}»*†ÔsùÀïæyPßñ+#v‡ä�í‚ÿ WÈdéó‹jCÜêÇž€9às»-;·)…Á<Ï:ù‚TNÓÙ—+ÓÜ»¸%±ÕsWŠê{|®^Q´µ´rÇÐh`»Hé:f8ýÈ©˜Z›ŠW^�/äƒs—¿'!¡'ØÙ-J» V‹6bÑüWthˆ� €×à”4Ïï{î\õäÞÂJb9©šQÛ'�‘B¦^Ÿè¶ÙÍ­Ï Œ=Ê^Ü$—‰Ñ†¶èÃ$åŽÇy­–Çv£®V«SYV�ÁäVÎó‹möNëæ�¨�úLÇA Ó/šË2 EwyºÄ;nw Vû‡ö9,jX#€ 0JY"×e\o¥À@°´èm'Ã{ðÓ$³@–—ÈLŠž©K-ÝÒ™cãןWô��`ìBÑo¢S7š[’þ$ðPSq©ãRäôɉ[/–*x#fÍ;bÃ¥¤�ÍP�€B¹fñõ úþ †çX/É„ÓÏæ©›së«mÆ.£–û5: õ�>É�©ÖŠÀ (@¥‚Â�1, ß× rµÁOj£GúŽîK‰{/�¨¾H�PJ�`šYó«TMªYsOëßîß}ö°øsæ)y˜ÀáIEND®B`‚PK ÒV1]S<—y y Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¦IDATxÚÄ‘= Â@„¿wW‚?'°mÄ[x;+⮣�Õ<% E–c¦=Ë _ð;s Åf�´ ]äúJUˆ!ó¾„ Ø&u̧LFÚšsî‹­¼mrç;\ _9åýFV²OtÝÎ�äæo;¿ã>žº'†´5‹äIEND®B`‚PK ÒV1]¯<ãëG G Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFtIDATxÚb´ZÄÒ-ÇhÅ÷Ÿáßÿ $¦cŸÿ;^ÿŸÿÿóßÿX˜˜þ0ü'12Mgþ÷û/ §?†ÐË)F&ö¿üg ì F†I þ*‘ªKn¯¹øú¢·`‡U»‰¤Ãÿ_ ÿ~Э¿ÒàÝ�wF«Œ•–(;orcègàœÉWz¬êýÏ/ÿ –p•ðïoœ{rV_ZŸáÿV†ï>uŸn[ùxM§QS0— ‹Y~þýÉÆÌÎÀÈðÿ?ÄŸ¬Ì œÿÙ®Þú09þÞk‘?L¸5/½µ4S;ÓMÙýî§»âŒb l Âßÿ¦c‹;ÁÆõ“áó;F|6™ÁFÚ6S;sûóÍg__à<ù¦t‡Ösæ¯ìÿÿ21àrF¦éÌÿþýe`gùdÀx"Hî�93Ãß,ÿ‰H$,ÿXÿ2ÿäæ?Î{9œõ—Ð{¶Déƒhæyd#|&ƒý�Æ–ïÿX¿2100�HеÉù‘orIEND®B`‚PK ÒV1]O�µ`½ ½ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFêIDATxÚlR¿kSa=÷û¾÷^~4E[!¡h2TAª«\´¥vp+éT´ÿAPQ°.âàâ"Š.¦`„ E+8EP‡–¨m#!ê{öż5Á6wº÷žs¸pÏÁÅL/:cpx.ëˆã\º‡êƒ» «ßîÖýÖ–sŽ#âw+1†ZÝ–_i¥¬ÒmåÄ–ÔílF(k¯mOŠdùWcý&aò„srÒÚüû¨‹sQñA„⃉Øõi ˆÈÚmœßÊfŽ/®,KàÐ ¦óúؘBS8: ‡é/Ÿñô%¤…¸“ÍôpþCkA@hL¿ëÜÌõM˜>ëÅ�CUx�Þ�R 8¾3k³Í¤ou$oÐê@Ìõ�!€ª{ûãŒY ÛªRnä¾é¸�¡‘ D`Á‘H°�¼KЧ*�}HkÛ¯ ˆç+ S‹ó5 )C²!L’ µ kò•'SKóñ–D´: jp§ðþÞá‘ltAÐFºRºülxa¶É„uÐÄ]Dc÷¯ºãû1´³ |]–¥+k:RÜû/ ¬7ެTž)Ø`ÝyÛý³§ý¥Šq½�AÚJ$ÕÛ×k3çÿŽáåùâ9%»63EÇèQª»ùpŽï Xüwi–R©Ž´?ðòÄå“Öá?IEND®B`‚PK ÒV1]�–pV4 4 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFaIDATxÚ¤ÒÁ@PÐ,kœ”àD#êÔ™‹Œ#ù_ô¹¿ÉdgC¬�lð#>Ž@nûiÉ ó²zÅRIòuñ›µí\9–Ã;˜Tãšz§ �ƒn?BVo1Pÿ< €o•&®åg&“IEND®B`‚PK ÒV1]R6üi Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF:IDATxÚb4/ÝÁ@.`b  œf–?YÈ×,Ê÷–lÍŒï¿ð�¯ùß? üü÷ÃH‹gÿÿ¨l s&k-vIEND®B`‚PK ÒV1]zHð ð Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚœ�¿JÃPÆÏɽ·‰±�RéÐ€à  è#¸úN.Nnn.¾€‹«›‹ÏáŸ]QÁÁA©ÚB¢ƒ±Ä¦÷œÜãÐÙ ùö¿ïûPD`2øJ9cÚˆ þ"Ò".ËÞÒôœèU©8Ž£håø¦w;ú ´÷7‹èX3Ir6œ‡¶Û�WÊoÎušáòBá«*JÖe9%úÐÆ2ƒÖ¹µK¸·î®w°Ê‹DV´—vòüimõ=7[­­Fö/_.zIh*Æ£çEDÊ"ß3çžRÑâ6 <¦ßÉ�Uˆê’¯úŸˆ`Á°ˆÚÓˆRY›‰ôÁõ3Ô zŽq<¥:èì°“»~-1 “~H²zµqöv-ˆèwÉY„�æÒ7¶IEND®B`‚PK ÒV1]¾*•s% % Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFRIDATxÚ”’ÏJÃ@Æ¿ÙÍšô_Òz.(EÿàÁ‹}Á“Þ<ùÞÄ“ø>€Å³/ ˆâY,UñJ)Ú45MvÇCJ±’VœÃ2û›ùvç£Úù®°˜ñ¯ pbÄŒ ±ÁÐÌê0F* =×ÜxÓ‹Ç%†§À†á*£hôÍ8¨}.}`s‚=e~òÖ8K˜ª9­ˆo»v^2§-O Â@Óº;T„»®mÿž,‰Û‘Ø_ìU”é'$¯¡z ¡¦‚Å{ =?’’²dKÂ[¨žûªQ÷·*Ã/M‘¦HÓ@Ó†_lûíH>Ê"Î� 'ÍYËËKsY÷[�jŠËÅxµ7Þ 'ÍrNNüþ,=Ì_ùù�j°RŠ x Ôñcùºã8‚a*œòEËÜw훎“*L˜,Á™á"+sû¶`[Œvæ`ªù¬™ü#¾pNˆÅ{Z‰IEND®B`‚PK ÒV1] ³f Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF6IDATxÚbüµH�üþʤÌl?�$¯êœwt² `Tó¨fÚjÿÿB§Ös޽OIEND®B`‚PK ÒV1]X–¢–= = Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFjIDATxÚœ’?/QÅÏ}ófw„Ý–‚ˆ ñ/ "A¡ÐH*•‚J)Q©|‰†�à‹hHô«P�õ'ÙÉì¾7÷($k'Báåæ7ç—{ÎÍ•ñÍ3üç Õ[/Á?a¡ðï¿ ²L@ö·ÉÒXüÙ¥Pë£3Y`Gîj4†ó­iû²$Gfþ­:˜ _\6vV}wO|uþ¸´XüHªO÷´an‘ùÌ$`¶öüØ´�N“ù õµõÆæ®I^»�, E¾`æóˆÀ;­T91[?< 2oȗïÝ^‹*:œ0lWÐJ›3óvr6ð­j¹Çq¹\º¬)ŒO¥s˦•vê­CÐö¬6J¶öJÅ(}®—úz�ó¤FQ¤¯o…JÜÜÞ·75ë�À�²¾q”³uÑ9"B„ˆ� aˆf Õ/­jf¯‹#¹Ø>ƒtn¡ã÷@ä.¬H—ßÙŸwEý†é?ö¦¹äqMzIEND®B`‚PK ÒV1]ÛÏþ þ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF+IDATxÚbTšÍÄÎÊðÿ?I€‘áÿŸL €QÍ£ši«ÿÿé79üâEIEND®B`‚PK ÒV1]“™Å×f f Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF“IDATxÚb”�ŸÅ@.`b °üùû�|ÍüÜìX%˜™ÿÿgøÏÀÀÄÈð÷߬jŸ½ý‚Uâíçï¬,,ÌŒŸ¾ýåçÂn³¤7V‰ÿÿÿÿg``efb`dÄ¥†ñÿÿÿ¸¼ôäÍ矿ÿ*K �Ú׿eddäá¸pïÎóª_O~hŸ¹ý‚|Íl,“ÂËÊ*©¸-IEND®B`‚PK ÒV1]uгW: : Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFgIDATxÚÄб €P „áä½+l�D\ÀA7s0 kl&&Î`,¼þƒãgÙz?fºÄ}ØÈwÄ1ÁëÞÄ‚‰Æy ]f7EÑ*е–6S^ú.Ô‹Äíyı¦Ãêþ ÌÆ(‘RVMIEND®B`‚PK ÒV1] Qè è Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SB.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚŒ‘;hqÇÿÿýïî—ÄÚ UohÅ€fjRÅ :T¤tÒ!X°¨¡“׈Vpèf *¢‹Z_d’ú¨‹HµÛ5FÚRZ‘˜@4Ñš6‰¹Ü#÷pRªøègÿÀ÷�6¹#Š¢¢�eÛ.ÊÊšA­úgOí~ò!_Æž&Gô€ßíädÍp;¹³!¿Wré†õ›fZ¸¢ÒMM_c‡nŸ_ŠË;/PRQêÉô¢Z7¥Õ‚nX‰÷ÅR­ŽÑ/¦¬s«xípg<Ü11™Q¶Ÿ“†­WtìoiÜç‹Ä¦^¥—Üÿ°u“Ñ fׯô@÷¨ƒ~<~O¸ú‚µ(`XDà�ÔPü¦]{š)VõvOã§%U©›¶�d�kn,EºžwûÞÞH@ÿˆ«PF?saÏç¹Pe™[ãYŽàó7{%W¹† ‡¶¥ò®{¸Èõݾԥ°¼ÃûöÌ”ìB•ÅØ°ì™œœÊê­Rîòþ‘`ÛäÀC苉ï>cJ�ÁËf@–MªªŸ_ #Œe2�É�èJô¶¿¹?­÷9çòˆå�ò~Ž ”eT�±m´wËL`¬¢{®¦ÀàÓBU…¶Jù“�±­-sƒ£$úØU’�§€à?‚­c�ÏÂãieGTLe1á�RX (™ìi^[ˆÜ寿dM (+ó ëû¨ìÜô©ìAÍIEND®B`‚PK ÒV1]ÈAÕ;Î Î Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/US.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFûIDATxÚœ�1JCQDgÞ»‰Á¨(VÆÎÎZkw`ãtB¶âRdBZÁJ°ÊÔ æÿ»w,b#&_Ìi/s3<>»~PN6ýv0ë¤X�&º]ë÷7"D`ñ¥)‘w{ÛW–VÓ”bÂ!‚H:Ï/%ª%a$�H€<ÒÎVïüÔrn1[)€„D0§¨ªÏÇ'åÔfv·×Ù¼ª›�@ Qíïulph­a¹Ûpx¹(ü=#QÄÔi6U¬ìLîv=�ü¾98gv´áîV Ž–ï�?Pq«îð4îü¸›`-šRìm4^Óñ5µß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚb°Íd@_¾ýˆö²\Дʀ ~—·ü]¸’�‡Y�‰�0ªyT3m5ÿÿ‡r iðBwÃIEND®B`‚PK ÒV1]³Š© Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/YT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚb°Íd@_¾ýˆö²\Дʀ ~—·ü]¸’�‡Y�‰�0ªyT3m5ÿÿ‡r iðBwÃIEND®B`‚PK ÒV1]Ñ­ø0= = Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFjIDATxÚl‘½JA…ÏÝÙMv“ìº "- V‚•/ag%XXi°±PÔF-ÅBKÁ·|KÁJ0¥?…šÿÝì83×"*ÈÎtsîù8çÎÐìò)�zG8¦õ\c"ôÈÛKö‡÷ÎK‹Çå¥�¿�;n–!xwã6ŽÒõƒµTzÂaIŽÖ¡Q¾R f„¾®V%\¬4Y`E† †I)‚Íö=Tz”àÛ¼wIEND®B`‚PK ÒV1]ÊIaê  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF@IDATxÚŒ’½JQ…gf÷îÆ„Èº•‘HŠ-bD‘T‰•�`¥eZE°Ðð ´²,Óù6b¡`—BQH)¢!’ÄŸDó³{sw¬"ânN{ø˜s†ƒÌ Ã*UÏŠå}S‹B€|ÉaRÜgà‘V0ÌÒ÷1Ǥ VÜ—¾;.ì)w5µéXÙNÿ[±š�g+;ìù½´�[InÞÎó‰õµÔ6ÿµÐÿ­êË9;'Èôü1ðÅs‘PC À±±-›S‘iÇÊþÈ/l¹�F÷•Y`,ȼ¯]¶¼÷�Å£ü̆ ÃТ{9O+–!±u�nåänokápwé¸éÖ?zÕrýúªrJƒ“zÀ· -úÔ*” ©Éù˜°j�—jûQG�8 ÀE˜ÕÃç-ƒ¯“d¥ ]"Zd¤õ;¢^{"*§7ÅIEND®B`‚PK ÒV1]ú¦øê7 7 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFdIDATxÚbìÚ~éû¯?ŒŒŒ ¤& EšYYØÿ1“åj¾oÏÙ~þ"ÏÏŒÒboÞ¼aff&Çæ?ÿüó�éÏ?rlž²jÛr�ÍòSXùǯ¿dØß_?ÿ½D#òüš‡’IEND®B`‚PK ÒV1]ªa”h" " Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFOIDATxÚbüåÇÊ@:`d`øõ��‰�0pšYþý%Së?N²53þ{q�œÐfdüõû7ãÿÿÿɳø÷ï?”Øÿ!Ïÿÿ›6[,µIEND®B`‚PK ÒV1]ê©å+ó ó Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ„’_HSaÅÏw¿{¯w5mÖ2ph”R ¸p`«(‹j‰–™˜=H/•уúÒž{H‚èe=Ôƒ‘˜ùÐŒ =8‚-͹dË¥ýÓ¡Þm÷n»÷~½Ñ2:ÏçÇáa «¦åÖ¤óÑÇíy“[Çëø·ÒyÁÂë]5®5%0ÀU¯·;MßbËųJ G@ +Àr&UuÞ]ñùÎ>¹mëÌ»·Æù <�DàóAUqjªcg´¬H -Ù5‹À™„€Éˆ’+­J¿Ë?Ð8¹>›¾q/!¡@.YÆãØ7¡Ãý£¥&¶¢ñ¡¤-gÒ¼ÉQŽu׆ï”wmøúÀ‡Óg0>À(ÒÂV­mˆNƒ1È [�žðŒyüßíŒa*ˆãž?œ¢(®±ŠÕоëШy.«s«IôöB’ m¢(ré>Í!›ƒÄ›"53*âqhþ¯¦Ý˜xÆ0³RÚõòPÏÄ�¹T1cx6†††ÂäߥËË18ˆû÷à¨æoOÕ]}³7”´M/—�ƪ8޵ïYêéfœ€@Ù,PJÁg;1üGŽâù¼ãòk÷ðì6"ñF52ºð"á�6W–¦;�)­'1ÿá0 ƒ§^/š›‘PK¼~çÓx‘háÏT�§k©Žö¹…ÔÈôˆ$“�ÅÂ…v ½¯[ÌJVA'`kÎa2’Ö»%}¥>x®vZIÑŸrß¡š~“±IEND®B`‚PK ÒV1]Q�39\ \ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF‰IDATxÚ¤’± 1Cýœ‹8$$F &`öc%f@¢¢¡»K¾™!9÷OϲlßÓmïè‹«äØfµ, ˜!ñ=fOCµƒ÷Ë#±Hê„-¢ò—Ч‚N0Y"@ýs¸ãâ´sT{=¯óäÑÉša­ÁóñSŠu×6´*.�¹Ù€yiÛöΪ: â…£—IEND®B`‚PK ÒV1]Ë]“}Ê Ê Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF÷IDATxڜнJQà3“¹7»þD!�¸þ¼€‚… iS¤´ó%| Ÿ@¬­_ `aa'KDEE²ÉnrÆÂÎ&7~ýáœ:ºzœ‘%(QAsjfj=Ĩ¤‰àªû«·Çù°tû×Õé‡ë&‡• û|¶qy�ݽû­_ܸ#Ù\í8®71¯âZ3$¨ñ0 oVPéö.>ϳÞÈíë“ ,]ó6g“ø°2Eç2é´¾éõi»m+ÕÔý Àˆ>ZÙ´_m;I(þ++.‡Vzó/‚úh¤o6„å 5*ò0Æ”ðF!ÌÀ²½€¬øö}eù�ŽÁ‰IEND®B`‚PK ÒV1]ùOfä ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚbH�uúÑ›¯ÿÉÌϤ}6žyÊÂ̤+ËÏÌÄÈ@ `âá`ùôýwͪË!Ž�¸ý–$ÍÌBÑLLŒì¬Ì�Þ~[wêÉû¯¿ôå8Ù˜‰²Îâbcfafœ¹÷žWçáµ§žüÿOŠf&FF>N–ç¾çÎ?5ýô™?ðkfÁbeaþÉÎuôÒÛýËLØþa`úO¤æL¬ÿ_ž.¼·Eíã£_ÿ‰²ù/#ÓWvíÏOJïnò|y–�‘á'QÎþÊÌÎý÷gÞýí9÷wðÿúø›…“ˆðb`ùÃÈüƒ™ÕáíµŠ»ôßßþËÌö‹…“Èxfúý¥øæ–°gGXþý%^÷µ›É¬T¦cIEND®B`‚PK ÒV1]Wl’1  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFEIDATxÚŒ’¿KaÆŸï{¿^ONÑ21Bª¡&©±I’þ¡¥9úskh¨¦hh¯Ñíq £ ½ QïÎ{½·E(ì¤{ƇçÃó…çKœsÏóðK5 W%¸á�“ pzÀnvˆMfŽ„Ô¤Æ°@$!‰¤…‹"P£É ÜôÒ0_ÁTðA/ÙíÄ…)€·¶áçÊæK;TT¿´96Ól@™KFœ-‰Ü½:‡°ŽNÒÇg–z»õ�1@þß,²Y¾¾5uÞ‡ŽƒðC_^5Ê¡ ºsåÍL7Ô•%-_3\§G SɃÿ)Ž‚é³ï½v¦º‘ÊdSÛU©é~÷™úoP(<š˜ö“¨5-{d7ƒZ#ÑjÒ×ŒÅ˜Šƒ=\ÃÌ ªûRÊÜã=»»¤CŠ·3*·çEóDlìBˆÅ}¤æ{³H�ú«EnóSÃWIEND®B`‚PK ÒV1]ÀJŸ¦ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFMIDATxÚ”’¿KaÆŸ÷½÷ôô<)#¤ÁIhl7ˆú‚¦¶†ÿ�"œ¤¥‹!A„h5WASA´‰C-Qù[ϼ»÷Ûàšâ=ûçùÂçû°ÓÒÍV&ÿ]k…ô<…$ßXÓî/Rˉ…N«ëJé gävÀõþ@¦�Š'W¶ã4ß„—5Á´»‡jrçøõíC7‚Œ±‰`ê½P÷‘qÎfV̯èv¦P¸,«~U…ÆÂ4 Û”õ<˜¦øâs³óùÃÕÅD,³wmµÛŠÂGÓRØ€\�=ìÜ ZKªi‰&S”ÿU‘ó35Ƨ×……ã²ÑnìŸwŠ¥)U‰¨䌂mÐPAÖÁõßçÊO*mWªÜa¬0ØD²®‘f͑eñ°1áŸèÉy�Öv³V¹ÌƒAð°3Ñ»íÕÓIÇüä†�ù’Ø“x4¶IEND®B`‚PK ÒV1]1í`œ¼ ¼ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFéIDATxÚl’½nQ…gîݽëµ�c;q$\+A „Q á§H ¡‚!¥¤§¡ãxDËDtDB`áŠaD�m„íµ“¬ƒ½»ÞÝ{ïP„(Nðt3:ŸÎÌèàâËuf™@Gif @95R„ ?…ÀÀc �Ô N–"¼‘ß͋ȗPJöì]O⹤·VèÅÿ‰�ÉFjÂ@sE0o[¦ýP«h6ñµŠ±æ€ ù„¿1I–S‚ªîÍ,ñüÖãÛg/3d¯›µ§ï_¸‘y=·?ÖÆö0c2}FObÚLf…Sœ6í´i@°"YÜꆙP)Φ93Ôý(}¯t÷YñÒg«ãíÎwÚëËwÖŠ•·�ú«o8j< GJ^ÌŸ\¹Ÿ³Ò«ÅÊH H?:¿šOd8²kóËïº_CG°ÔñQU»õÆÐQ -.ªÝúÇþNÁÎ2ÄŽ¿_s¶¤Vxd{ÂÙ@æîöà×Aè�öXÅ5ç›àfkÔ#¢Þxàø®/C†8õf6Œýïƒß+sK ™�Ñ…ì‚mˆœ•bÈmºŸFq0Ž|£Uûù§ý tóê\y¥°D@Í¡³Ñ¬m¶?‡*Üœ\§ÄSIƒñÊìâŒH*Òu·å®à&›ÀãùwÅtä¯KcvIEND®B`‚PK ÒV1]uÕQÓ Ó Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚœÐ;JaÅñÿýòa0…âø¶1±+7 ¦5â´²PLáÜ€[p Ö6V–ñ�‚Øù`œH‰™äεÐJÄOæ”~÷‘t�ï À㌞w›{µ›Ù¨8PþŒPP¤\¶‡GT:*ª “S²¸\تëñ‘Ý^ÚÍÃ¥f«¢.ÍBØ ·]—jÍeª;[�ë0/„±‡§;?ÍÚ-k\Èë[6î.ãbw´$!,iF"žf"÷žô¼[ßݸþ×`_×ã„"Ä 2L ì…ôÏV~T&ÜM�u‡¼˜°uÖ~©ûŠ¡Ïþä~˜¼ñû�‰ü¸T°Üøsú4aÜ¡ƒ\MIEND®B`‚PK ÒV1]³]¼& & Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ZW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFSIDATxÚŒ’¿KqÆß÷¼;õ®§tн©Eˆ ¢†H–Š£E� ÿ€þ„¦r”釅 T`ƒPKéQQIRS&t�ˆzç}ïÞ†ÚïÞùùðÒTwhˆœÄ¶#ËÅ Pß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF®IDATxÚbT)ØÂ@.`b °üý÷Ÿ|ÍœlÌØe™þAXÿÿc·€ñÞ«/Ø5ÿýöç×WVvžÿLœØ5ã2õìõSŸ?ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFDIDATxÚbü¨ÀÀÍÄð�¾10¸‹0N6døñ.ÆÂü¿ä¢ðÒG¼<,0…Œ ÿÿücb ŒjÕL[Íÿÿ¢•9z�0ÏIEND®B`‚PK ÒV1]טÀœ@ @ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFmIDATxÚ„�KHTQ€ÿÿœ{gæÞyy�ÑD‰ÑF±)�¬¬Ô|T%nì�A!mj탶.¢MÐƒŠ‚$³E‹2’´4_!XŽ“#2áäètÇ{ç>ÎiQP›êÛ|8~þbÅÑÃW‡RwžLõW«²mœ)l+4ºš ’EáÖîáÕ•Œ@ˆ–3¼ 8W³9§KDÎ6·w_ª’¢µ¥“¡]ÊÃDÍ,„«÷FÃÎÒ+7Ç'mËFÀ¶ÖÅÃÖ2ZOß( pñt‡ :e=+åûõ¹Óu©,”ó*ZzMµ!úN¶<¾–úJ�’‘‰ع­LèÀë™d2MR¢7ëͪª¨Ë.øüâæ5 -Ã7wÀæ˜ç“òüòÝžá¹ør,¾üàñYr(~™§‰Úsuí‡JÖý”GQ<†ÛßW²z{8‘ÊvÍ:biãÌñú{�†L‹‰¥”‚Ÿç¿ž:Ö01=O{/t°—Ï;{ãצ¾G}ÙuU;q{z(i67nݧÅûg3ª ‹KiÆ""Ó²—’«Â‘ËO3¢W5l·˜;ûˆÄŒW/&£cŸ¼.Aö¸›vWŒŽÍÁ¦UWSþ%±LYpqR@݆àfÙšn¨šI Ú6[Ig)%`YlcI —³ÞLâ¯$ÅßyB�jºY\¤8b<‘2 %›B%ÅŠiZTÖ Rø ¢@G&b-�[*Ë‹ÖuCÉshŒ”…‚×o H’ø(%ó )§CØß —&–ÒÏ>pˆ€ÁÊN$"ÿ‡oÙŒ þ|¶mÆ9§”pÎ~ «í n€'ö}IEND®B`‚PK ÒV1]Wîÿ  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFLIDATxÚbü¥Ä@6`b °0ü¥@3«0ùšW'-#[3£˜õ\òmfüõ‹|Í!^*äkþ%:™|Í'oœ$_3;+ÇÀ¤0ÿÿÆø Ü'L;IEND®B`‚PK ÒV1]û˸ÃË Ë Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFøIDATxÚÄ’½JÄ@…¿;3 ¨‹Ö"ˆˆ�Vе`+Û‹‚¯°O –Ê>€Å¾AÀp+±ÑÚÒÒB¬ìd×"™äX$KŒÍžnî�Ãýî�å»+Ô’,!{èg’îÎVã顜nj– rÉ1‡æ2&Ÿ?ØD(K UÉdŠãWl’ëQã]±±EþˆÄúfްºÁvÓFŒv2¼o†Ü×ôùå]bogM ‹ÝÈV•EH“0cN|],M¼š©¶ÙÉ”ÝÌ`÷¯ž*i|qÀøöìc(.�=¶÷IS«ÄÛk<¨c`¹ô–Ó.ðÕKôô–è8’úÿÿÉ÷%^]¬›þ[IEND®B`‚PK ÒV1]bÔ˜¥« « Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFØIDATxÚ¤‘½kSaÆŸóž÷&¹÷Æ�ÞØÔ¯š¦Å"µ1¨¸•‚Ÿ`µv©€[WÝŠVtqë(¸‚à (¸8éàP„Œ%Xðƒ´óyo’ÞÜû¾J)Rð·œéwxxz{ûfzvöVÑx´úýùÐ 'tOô/ŸÄÚ�é¦?ž›{²Y¯¹’ [Á¥£×2~uñ°üâé]å7ú3ÇFg¬âÁÂÒkõe­ÂDØÚ}»2/¥±c³)�¤*¿G§#ƲáЈ÷£ÕÏ5Î| - ô@ú}E�í^<Å“SÐ2¢ì& Ïm'wo˜#Ši €�¬¥Aâ�ØÕ…»G.œr"áý0ïØ؉g—§r£•M¾ãæK5:Ð!ì=öÄt{_zÝOìõ6z$€¸ž]ï=}¸ð¸{u5R®…Ÿ]±¼òòÒ3íMä–†?$µB€!-'¾¸IVl�Ÿr…•–¹Óï+“uŒAw!»½~Ä2“&{íŽ"Hg¢ù¥hìS©r®\ì0€lp\*e²àiÀÐfTêÀo´ÀBP‚ízµP{ÕJùÝJöÆ;OÈ(´Æ?Q«c¿ì¦į¾%¶‡ |ô 2D0X}»2C„Äðs+\´U3yíIEND®B`‚PK ÒV1]äð%  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFþIDATxÚ¬R;NA }öÌf¥$"+þH"@Šè8 âiGàPPPrnC)Š”(¡aÅ' ÊÌØT4;S.ŸýüyÏ´v7Àoƒñ‡°^(…³ÀxFÄš wrWƒ R#óRÂÞ˜_¢¡qÙªC"\?\½,öóÌ¡ù~3¼µ,Ͷ½bï3}Þv�³þ“‚FÓ®{[?:œ¤nŽûª�•U›M`Ò×ÏæÒ7$*áë�½�Ewg>*¬ ›EÙß�ˆOHF«‹6"ŠˬںçóÙKÿxÜšy1 ˜|Z$=ÌØ�¨q!KûŒ\“  ØŸ*ýÿûÀÚ[ì}ã¥IEND®B`‚PK ÒV1]9‡Õõç ç Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¬’_JÃ@‡gv×lRªéŠi5)¤O^@)Bz}óF¼…xA¡¨/¾*j mQ©6˜?›ìøª «¢ßã03ðû¡¾^„O13\ØáÁ| ƒ?ð ¹Ô©Ö¯ï'º�†@Oy–ápp@@QÔcL¸^Sa“±ªèîæ¨È§\¨ü¢ȇ¦mÌÔåWñê®M&0ˆèÕ7¸ó %:aòSG©"9ãt”Xß&”?#2Ä/oï÷ßl.¯¡^“8nË*#€ÇÉ!séhPcÛXšqÿXð˜WÓöËÄZí­ôe¤üÆøù¤*²•¸S:¾7ï"2ñmBR2 벪,ëaüè>°FÿÙ°·ȤdL7À´äIEND®B`‚PK ÒV1]ƒè�. . Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF[IDATxÚÄ‘K €0 '!7‚k¼­'ô$"ôÏ�vÑÙ�áɵß* 81Ľ(Ì“­¢Žö4£¶ò)-.ãTyŽ-©„w!;òž¤®ðìX�-¾\f^5$ÿHýë�tÑIEND®B`‚PK ÒV1]ä�Ôx� � Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¼IDATxÚ¤RË‚@ lÙ²P£ƒ¢_àoúŸšñVä±»õ¢`OÐã´ÓÉL‹­†ÑåÁ„Bæñd:—Î3ü#¢[y¿=¸hE¾ 3·­-UèØ@Å+ì1e ¤Z‹ÛµF€Å2`0MešÚôød©XË2&òÅ9ûä@v)×IÌ+mÐë ÓŸe’ù,ÏT*ÿ�|igJõ”ñ¾ žyèÏ Ò ?ƒ�ɺN5áÁ¦}ØwbÙFÇ™(SqIEND®B`‚PK ÒV1]i|S¥1 1 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF^IDATxÚ”’¿KBQÇϽïf>ÍH‰�BF*•EMA4AAÑRCØ­­%4„ýAÐÔîæA4D j¾ç½÷ÝÓPkú:û9Ÿ/Ÿó%©áõ}¸ö¡Á¡ làˆìŒö?ÐPFæ‡Ô«0,D´{‘y�¡kgwcæêb,´„ÕšLˆ&%7mß¼wÝ<…Ò[“nF쀗9·¼ŽÑ¾Î£l®tû|¼=ñ˜hiÍÉ(ÂJ †7V’‰�P4<½(ά�§µÂ²*I ø·0�È4�>–ß~½'ìÿø¬ÕTÊP LÚ\éI;�®Ho RmÔ îñè'ÛcqwM)Ú<6‚B¸° wo°¥ùxvgÚçÔ €þ3�é”ïŌԔ„Ëœâ¶^¥¤$¾äA”Ö22?�/Ò� ÿÓ°9U>TWA¬rp€î°ßP@üXBš€ºHáªIEND®B`‚PK ÒV1]G€Í+ + Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFXIDATxÚŒ’Ï+ÃqÇßïÏ÷óµïg– #rB¬äê&ŽS.äÀQù'ääæoð?8¸XqPj))Iiå€ra¥¥µ™ï�Ïã`3lÙ^—§çéy÷üdµZ5Æ �ȆS.û«K(>C»ø _Dý ž^¯ï‹èýe>‚èèòá WóÃ�ÅÌòÜD¯çv×+Ç\g(iޝOožú^7Êfeé>³·9ï:j¤¿·9[Š@ÚIEt±T1>`mÂs×2ß*/¥ ‡å÷äаR Z·.ŒV˜ÙÚWn "$E „VRñžÜv6�Š#² @ØÈ ô[ŧ ÈßÎÂÈ’°&/^o³p ÎÌÖ3‚@k‡tT«€VŠ ÔjÑIN`…+kNvÆ4·ÝÏS£cöâÜæÏ8˜Fã©t·‘Lê�]™hsªÿáø$§¦" ¿ƒŸØ‚x=×j‡9IEND®B`‚PK ÒV1]€¼LO§ § Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÔIDATxÚÄÐ1JDAЪþíqQL”31ÄÌÔHA¼ƒ‡0ò^b�°ð0¦‚&аêü™ž2vÁõƒ�•6¯ šûW3ó)Bf$ñ9ÄüîüôhŠ•)¥¹Äöf­IPj;9ؙݞ]_¡Ñ Iyˆ�äkn‹\IŽÄ^ÙÁû‡ç�‹›ûÔwžR.!Œò¾W_:ô­H˜1×è_ŸðfÊõ'FR¥ðñxwblßoëÉݸb:�Aò­xŸh·…~›àA .ãQ“%Ãòøkùe[èÙv´IEND®B`‚PKÒV1]>A�6Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GG.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóI“¼Ý]:Xe=€öO_WölâÜšÚ)4…TK\#JRKR­’‹R�ƒ‘�‘‰®�™®‘qˆ¡¡• kXÌ2}÷ECn~JfZ%n ¯3€Ðòtq ±ðo�´×ëH€@ëy•Ù<7smKz*­Ñ±vkk“Ù¾Æw\ûZTW¬öOH^غu-Ç/�°hÎÝBÓR&¿>#0�¥þY3sûÌêççT˜Ó îY—(¯Yu$ºÂ  ØéŠÈ#Ý7M–òQz¡�tÏ4‰°8œl[z¯aÒå…«ÿʘ?¼h5§GiÉaöö|©ùqëín5ž6J8ö³U>ÜQ9©héÔö{wÙ»¦ \y8E^ùÎ$±Æ?'Ÿûï�T¼qâãÎý,Ÿ´ÎÖ>v!þýÅ·xS»½Qî5{¸§Ÿ:qDyûna�²åßöݳkÜ_¹z_�Ý�G�wþÚ¿áú2�/ì�W¤od 3]ݽ^(?Q¼§ñÍ®åBÿíˆï`ßî61úm50˜<]ý\Ö9%4PK ÒV1]µëúùv v Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF£IDATxÚ”’MK”QÇϹoψ2Ì4ãˆäbb‚F0ÊEÁ€ _v�}�ú"~ © ­ˆ’‹ˆìubB7–Z„JŽ<·yîù»ˆšÇ§Ztwÿ{ι¿sîùs<Ú)¦ÿ?˜ùá{F;z×LÅ^˜  BäH)&¤kYÌz_]Ù(]$úÖ��+cLŠ_·°úì;(h�n�=X›rL‰E°A'X¸S˜›=8JZ­ÛÍRµ\ØxulÑu~¦Y‹®ÊL{™h䧯E[ŸüžÿúqwëáZsüÛÍ«ùØ#“l2—k2Ø?ÂC…ébÇWø`¿RŒªõÚ—•§YRVƒˆD\¥xqr>$<1s7_ !ùóód­ð¶­>¶·wŸ?Øìü•äåÒ¥jþ]ÛI¦ µYV½'´á�½nÎåu×8Wºv¾\*GËOÌãÕŽ5`æÔ>Åœ¨ˆUoUL ù�í�ñ1!ê¾yo×_œ(­µ2gÌ@šç›÷�±gLB¢Ø A3Hr.…üm ìGsî_öÄ/Æ_ƒÀéÔ½¯‰Í°IEND®B`‚PK ÒV1]$¥e/  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MV.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF3IDATxÚ”R»NÃ@ÜÙ»$Že…·”P !~‰&%%Ê/¤á/à+¨i‘(ùZšHù*$�( A²À²}�¥°}1XMs£�»½ÙAy¸Fÿ/•":œµóùU槸–öi#É;º­'^Cµ•Ii†iF@-†‹œMŽæ{Û}ãª>+N³Å[/Ù›""ʺúäþùòff;Šˆ¸~ƒÈ(.´ª�)Dñà||:\}°” Ÿkeš™ƒ¸ö€E*&Ÿ[Ü>Î5!ð~/#žÁ ¬0�[f�cTèu£ë‡;Ï<Ù[�mxÇð¼¸N7#Kd\RÚ(V¤³«a¼9°âÅ…¯õš"BÉkÒ/:ŒÖ¦Eĉ׼X•ýÒî¼ç„¯!ÙM³¿†„�¥�X­´ç{}ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÕIDATxÚbT WÑŽ×``dø÷û‰€ùíÕwŸ~’0cáfùÿç?iš>?úòêÜkam!.qÎ?¿þügøO$b†˜ñãÝÏgGŸóÉò Ë 330³0±ƒ‘�!''wèÂAvvâœÏ‚Âaf‘æ’aag!ÒÏL(ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF_IDATxÚ”’OKaÆŸ÷ÝÝ´5, ©Ò´�Å:dué#D‡ {}†Ž�¬St!ª[¥ è Ñ­6„2 sÍU×ý7o‡ Zsš™ß0<ϰù ’w ‚cÀà¨.B_8 Ë�¼gáE�¹Ü!âƒÀ$µ”ðdU»U†}Û¬×g\b$Àˆˆ0€ìxÆT\ß<ÝÍ¥±¶í3ÂÖ]sˆ‹X,>P ( UÞÄÁe¥´—OOªAÑð•âÍÅò¬¶³š ¬w À8ž>[/ +¨‘åÒV|fe4i¶;}at„4�^íç7²ð}‘ëÕ«Õˆš¨×êVó |ÿoÊÙ’¢sí×ÒãùÒ¡ã¹?Â0Æ4 k»²ÄEöˆBkÊjÎ|>+ÒMÝ¿*;"Œð…±Ê”Õuã¡xJ؆+Eý°ïú„’Õ�õÓ%IEND®B`‚PK ÒV1]ÁÑÞ Þ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚœ’»JQE×¾w21q¢±P Aiõ;ÄNÑÎÆŸ¿Ã°µ°´ÓÂJ‚ÍøÀ1É8÷XD„d2<݆³ŠýÐx›_4£NÈ�#‰`…ý ;Hƒ‚\}°Ÿ�Ü 9JìÔh«„ÅØ¸x¡%ž nGxŒ§/2㼋¨†'·ê¸s=ă#ã I/&”>]Y{±[gYdÆ{`ÓÓ�q Å°ÈŒÏa‚ !NŒlŒ¦ØðlE<æt=ÇCN/fÝO§5ë9@âèǤgm>ßèˆÓ6÷9{KD"Ÿ¦UI¤ŸÂ/_Ys·0°y=«jaŸNÔ˜“seU¿êªIà{ {T&•h‰‘IEND®B`‚PK ÒV1]5#Ê3é é Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤’»JA†ÿ3sÜ‘5Ffã%‚ Š…¤1… …h£`)b­…¥�àc¾�O`­ôl,+Eñ††£3³c)»Ù/‡Sþ¯ùÎO“=°„ß�t$ð�ùŽ�7Àýv@1ÀZ‘‚É�™ÀLé•ïcxÞœÕ�]F†_`‘F0³#êôç¯j¥ò¾™È8P ž¹ñÆ€’pÛbwkôªñtØxR;‹¼w!¿pçu<_[Ø.%A¯<8yÜX-/H‚Î.š·°‰LÇæ«O÷o¯WZM³<_åÑñC¶1fμê ^+–‡€ÚTai®” h­sáÄKBÙ ÿ¨aqì[팮|-ôK¼’ä ²IEND®B`‚PK ÒV1]ƒ±±  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIIDATxÚÔѱ À CQ®aöŸ'Ev@H¸pvp*~ÿ$K¦mDIjøÑ•˜,¿Oi‰gŽÇ(¬Î6 1¾ôçÿÿG«Ø�šŠ=IEND®B`‚PK ÒV1]jL‹›± ± Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÞIDATxÚœ’±JQEÏÌÛELÒŠB­ý˜TþŸ…à¿XX)i!*"�uUxó®�•»1Æ)ïÜSÌ�kŸ§'üwª•›€b.ÒFpÀHdKëåûà “°³–I€¸«t>`žº^ÿ)Êfï6^�¥³6k‰²c·0Íjœëš«š7·Ã`/ˆµ0˜àÅI°Ͼ*™ŽœÄ“ë¶²i–*L6.š'©›™÷¦ËmÝ';Îv”µp] h¬ëµþ’ Å~ xL4� 5nêïCÒ¦ spý^ϯ?©Nz¨›¨#IEND®B`‚PK ÒV1]÷ÉÆ Æ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFóIDATxÚbT \ÄŸ¾þ®Ì°-ÚSÌpóòÖš])½Ç¹Xp& EšY¾~ÿç|ùþû×ï¿ Œ ŒþþÿúíÏ6|Îf ðÖƒs¾ýú«¥!ɰ÷/ÃßÒRÁþìLÿñhfü_�ÄcøÿŸéïþ Ÿ?2y0±³1üǧ™…áÙCdÍ ~|gøû‡áÉCNBš›Ü§À9?~ÿsµRrìc¸uåjÛ†åÇ_±áu6Ë”E'áœ�_ñr²:²13°0ßyð¶Þ1n6|ÑÁÂËÅ çüÿÏÀÎÊÌðŸ��á? 37Û`M$€#Vª:´¹ÅIEND®B`‚PK ÒV1]üÇÆcú ú Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF'IDATxÚ”’»JA…Ï?3q7FwA‹`§�¼!VF4¢¢h#è˜J/]zÁ'0–b#hkg° {ñ’èÆ“MÜÙ�ñ2{ú�sáPy7s˜Ï6,Ñ/#Ä¿Fgí­^q_Ý”ˆÅ�)˜q2ú±ú޳Ù4þº¤T X€ÈV�ê<7~µ¹‘°’I(m‹ÇÝ{ ·Õp#\¿Ù«³£/öØ]Þ»…çÌaÑèÜÔd)]¸¬ÖjªøÜø½�Y÷SYßTXYʯ.?Ýrx* f­©™qš 4f ©e§Jž7qðËŸ}é˜Ä–³.TK#Ô¬hùûó‘HÙZ›® �rl]f´4´€i¢CŽÐ†Ö¶ùÑíN8�VÜwâ¶an7ð%³fIEND®B`‚PK ÒV1]ß¹QÞ Þ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ¤‘ÏKTQÅÏ÷Þûæ‡?&œœ±Œ,Mi!I�1’‘I`™eQ-ƒ¢u�«¢–B«ý!A„’›2*Â’Z(… 9�¨øû�Ï÷Æ÷î»ße�+¡ÏêpçÀ94Ö×WßÞÚ?•~üzîyõû2g±Ãí¹dMÞiZŸ©Íô>µíGJÂVˆ�–¹÷ª‹ לL÷©]3ãqß9~xÏ�“;?6ž¿?âæÌ�ˆ0þH6T¸~*÷l•(å|Ž�5Q[–§¼Û—ªk©#–D`<ß’ÒAk‹¿›Õ\�ŠhÉþz,N3 .-Ãî½4=mÇҶφ†§­î–Ñžæ/–U;òd¤-jiò{×£¦ÞîÚ¤(6Ä«Ò^<ñ¢çAcCå7½ãn±%k³4Ú÷#7/¾É§ ·²*xö®ÙRläÐíˉ/o½ý?Sg#9]X»:,>o$;�¦; Ÿó‘u¶Â�RÙ²ÎIufhªmvÂ`¦cç.YÉÕ@”ȰB…dÌ G\ÏOT$*c¼°¼®IúmÇ«}‡J—k2¹lðuBZl´äƒW DTœPº,ØRRûÁª«! X%Ë …á\®ÎÕ)Al”E¼¹>ñß… ±©ô,jFÍi6æ½:)€(l!ô\¶ !}ü Ý6B[ü¿É@åäx¹ÃIEND®B`‚PK ÒV1]}޼l l Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF™IDATxÚœ�1 ÂPDg?BŠ(¢xƒ4¹ž'ðL–^ÂÊÚBDE‘øóMv,,4ݲSmóvgŸ�Ä7}§»­nÖ<ì1‚%á7*q:òq‡À˜?8Y¬$ÏA 0%¨ÀT\Ï|5Ã…FXDæK) ¨ç2#ÚèF¢y¢{»~å ã‰Ï6‘zºj+q» �®ÚY&U�rj·ýö:k=KµIEND®B`‚PK ÒV1]t, ÉÄ Ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFñIDATxÚ¤’ÍJÄ@„«¦'“ˆˆ¬ þ±àaAöà øz>›7s}Ñqea ˜™LyML@t‹¾u5ý5]\]/)üM¢ä°ƒ<:€ÿ<Å©õŽ™ŽpPR Äí㬠Ôðh3½¬6ɾ¸·,æóM—x$Ú(Ï£Ì@¨ßPìüë�_=ÏÚÖŸWÛÓ+ç‹$±?Ìg�~”ËM:«?îuRÇõ[h’eŒ�¾I–Ü›@‰â ¬eöñY"†tˆI\ÞÞÐ;Œ­àŠ”ÄÂØjÂÐÉ?½Wð†é”„ÌH9ûÒËÐo?�HÙn ûq­xŽÕ†”�IEND®B`‚PKÒV1]b™@`Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GF.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°ñs©p¦8så…TK\#JRKR­’‹R�ƒ‘�‘‰®�™®¡iˆ¡�•±™•�¥¶��•�ÁšÒ¨p ¹ù)™i•¸5ÜÕxôš��ÑßÓÅ1ÄÂéd[ïÃ2Çæï>ííÌõ6`%ß²¦Ý–%ˆ»Û7É/Ù1­)þ@¤øþý·*B²GB/н¹¹ÑWï¹ýNŽ.¯ù™8-ë¾ß¹[üæÑ²…ß~¯î`b»Üu@òkðúmMº÷Æœ¸Ÿ'BQgá1‘Ín64mP�¸±;êp“&kEŸuìZÈeÚtqµð�úÕ‰Ï7µÞ Éoùµ_pª÷e©•OÚ;ß³^ÖÞÿ"ÏW€ƒùõdé/g´ÞX¿µ)âü|ÁìŠSOßë ‹â@sÕsæ²s¶ÄFü³„õ�Ĥ*!ýgB<¿>ùÍ>°aïQ§u}–¡ªL‚ž_Žù–äyú´gtvÜš`>]EÅcÖZ};ã¼f[ÖG¿à_½ÓìÈîz…ìò[§ßú0s›b+÷<­z±4‰Âþ7¶»Ddãó™UKÄÅÒT¦7�ª2øð�•sMíJÅ*'`\0xºú¹¬sJhPK ÒV1]Ωc+ + Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AX.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs  šœ OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@� $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD �*°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼� AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=Ô µC¹¨7„F¢ Ðdt1š� ›Ðr´=Œ6¡çЫhÚ�>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱw�EÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[ �b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5�ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT�©^S}®FU3Sã© Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}�ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�â ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©�¼L LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³�¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ�7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGǾþ�ïw- 6 U�œÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFVIDATxÚtR±NA�ÙÛ]"X˜¨ ˜ØX¿ÀÆO°%±3ÚXXP’hgcbKâhiåhkb¡ÆB�ï»7cA„#ܽl5³/3ïÍÃ�“{?œÀŒ€ütÜܸŰ�÷®?÷ïš~¸ "†%” Z~¢`d’äØô)@¶¾?Œzá$•lbÊAÈg·”ƒ¬ ÉÉ8cFV�Õ©“ÁjùP¿4f�$ïn~ýp%Qò†�õ+c$`ÊJyØ9ªqÐOVG±_ <n-pu”µ6K’Ç‚Æ"Y%@È ‰˜Ì.”�í3Ç™¬îU?ºç•ÑûJõæí¹»m­J5N*G¶½Å;¿œ^l¡5Hý_÷ Õ/Õ°µ‚–€H3!€ŒÀðo¸œvç’¢I¢3�Ed˜¾å�Éu/7Ï # ;ª$Š(¼<ÊrÙÍë¬xþ ôšÍB> yIEND®B`‚PK ÒV1]m¢¸l` ` Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF�IDATxÚìͱ !†áï7�ó;A¸Êâšs…”v�9�À ¬lÓd’@Œi“RÒæé_^꽨µNÓÄ9LJ~½<Ï'ÏóX €ˆ”RÇðƒ<è=+º%Ï1sï]IEND®B`‚PKÒV1]óU¥ f…Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SX.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°3ò3é:¼úø(¤ZâQ’’X’j•\” ¤Œ ŒLt Ìu C M­ Œ¬LLµ ¬ ž�ñÑEÑ�›Ÿ’™V‰[Ãô‰_&200–xº8†Xø/�t_»9Pâøþç[oÞûÛ5銆§ËYÞµ1®í¾q;Èhò„?ŒOâ šÊm®ç±vÅÏÂÍò¹KŽ|}7%Mú›°í»E\þá«ÙŸwZ>·9ÿ½òÜöb¹IŸX3îè5<Þú€‡í�¸Ÿ}‚s¶"sl½ü½Éœ�S‚Ÿ:j8ßS®8Ö{–mÑ㛾U–QRsöÝ xqfÁÓ˹ùüŸNÞÞtÇ‹OÞ9ýCEºcœTÀÕ”¶ê<¹— …»™ç\ñu—‚g0Â<]ý\Ö9%4PK ÒV1]—/ãZ  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF=IDATxÚ”‘¿KÃ`†ïîûÓ1R´iqºTèâ즋“Y]7Áɽ‚ŠèàdA*ŠFpŠÚ*ˆZDÁÆ_$´Mú¹ˆˆC“¾ÓÁñÀ{Ï¡=ÊW$¿Š!dÐSh÷6\ÕšÆB¤¨ù¢˜�÷FÔ´Îì¤[øUEI+àïTÈÃa‰§ö°M­:²%€-Ë ‚ áù¹!ïd‡ee¼ßcï§Ôi)]o–eÙ¶mÇqFÌŒ{-¦ç£³G1¼eK¡:ÙaWXUU]׉È0 x~ž'ˆ�4(xŒ?Ó4u]?¿¨ÚçÑÏ�ãS™Ô~AJ'61åuž{£»M¸ˆ}€ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ¤’AHqÅß÷ͬ3£ãlºš-V£µ,yØ %¢K¥!jÖ¥ÃV^¼Et¨“B]=uÒ“Ð%‚�  I¼T ­�MXÛjÛvÆ]wgþ_-ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFûIDATxÚœ�1JCQDgÞ»‰Á¨(VÆÎÎZkw`ãtB¶âRdBZÁJ°ÊÔ æÿ»w,b#&_Ìi/s3<>»~PN6ýv0ë¤X�&º]ë÷7"D`ñ¥)‘w{ÛW–VÓ”bÂ!‚H:Ï/%ª%a$�H€<ÒÎVïüÔrn1[)€„D0§¨ªÏÇ'åÔfv·×Ù¼ª›�@ Qíïulph­a¹Ûpx¹(ü=#QÄÔi6U¬ìLîv=�ü¾98gv´áîV Ž–ï�?Pq«îð4îü¸›`-šRìm4^Óñ5µß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÕIDATxÚ|’MHTa†ÏùþäÞq̦‘2ðe¤�ÄP¢Dª•¸‰2Z ÔÂlQ»¶èÒU [äÎ\ˆ+Á…Ôf„ŠRŠ‘¦iÑ�Š8ÍtçÞû}§Å„ Þæpç,^Þó>´ß`Hp3yñ!¹ �t6k,ÕŠ¤â±ËÉÂË܇EäÑá[=ÑϾ5ŽQUÏ9:^Ç#á7)˜Ø/l/|ÙÌ´�é‹¿c>OÔÈ1æ&Z"ç;g~FÞí¢ÍÌoÏ©?¿Û=0õõ}xíø.à‘ D k°2%BwÒ�™Sm³Ÿ-Ç'~Iû©–ž±x3Ó>EŒáÁ®\n¸2Ñ;³{½'RYû®1€Œ”�ÿ˜hNÙ(4+ƒ`û+>ÛnM¦­ã9»è’]ðÊÍâIÒ@@�g‹6»­©q¤kz7šùˆ63ÚwŽÕ‡§ºG£¹ÖÕ¹oŽç³#Àˆ@J†ÏŸœ[®mšÏ+0„ä4W}—Bƒ/–öV^m!‡Ã\‹•bâžÓžÛÆ7E¯Ôu²1}z´°^7½¸±ó«²äŒ@ &~” –k"º�é§ÔüìVfó“e‹*ʃú3öy¼Egt"IEND®B`‚PK ÒV1]µ÷Å È È Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFõIDATxÚbüóç/¹€ÅÖ¯�|Í�Ÿ¾Ã*ñÿ?;; ##ãÏŸ¿qif|óö3¦(+7û¶=?ýîoöýû¯oßa±YXˆStÿÑëï?|[µéÄZ>^G]FFFtÍXÝóáã·Þé;&·Åðós¥Ì�4ÇÔÉÀÀÀ„U3#ãÿÿÿyy8¸8X9ØÙ°VQffæ´X‡šöµ?~þŽ ²àãáøÿŸÓnÆŸ¿°&+ 3##ãîƒW?ùämüÿ?Ãï?°„¶±K=®˜`eeaddüõ gT±|þúw*ø‰?‘0~þò�ì-¿S7’¹SIEND®B`‚PK ÒV1]S~î÷ ÷ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF$IDATxÚÁÍKTQÀáß{æŽ÷:ΨcIe‘D H´Ñ¨ �À¶a‹ ‚Ú„ AQ-"\¸j™PRQQ ­­�`I…–Žæ|9wν÷¼=vØDÏsQXŠ^åí€Ø^l?öv@¢åÎh¾`û°‡±ýؽØã&zß5KñL®6’6”�NÔõJ•!Of‹ ¥¨‚�š²éXK°TaÄ“Ù"Sz©ª“u6œ! í0gul‡OVž÷Ù…V¿4‘Ë�Lwð.Ô±>Z2�Fì0`ÀA Nyr=ËR¬÷r!вc>’;YúŒ>ÜåKL‚8B1bol:¶;ŽŠ²­$Èù€ƒ†£V–c}Ñ¢ º„CQ¤Û„Ýi‰Â@-¥©T”¿Žo1=†Ó>À\‹mÇ GÉPÁñ›)�²£¦T”Žr–Óudž“3>U§,K±ôz ½)º„‚¡MÄž0Ô•¦Bu8"r-£?ô°ª«Ž}†©]~)yð @Ú%Ì{†5G]QPð‘ÉvyZÐÏÓ!+‰.DL5ù˳‚\ ðP¨+ëÎ# 1Ô`Ø“[YÑÉ:‹198æI§¨o™iéÏDädÔ×ûu²�ÆÐ€ŒÈÍŒ¼,²åt¼Âטø°?Å�)ÈÃB¬ç*8•×E™hǃ]MÝ>Û&�òŒúß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF”IDATxÚt’½KaÆçy÷u÷Îó,DQî8„kärXXD°ò/D‘4!M‚§�•…v6b“"Ä Iãg'ÄX‰všäš\qóar~�º{{ë;“"ÍîÊ ÓÍo˜ç™t¿�¾   P¸�^­>|8¾h,õ—Fæv_·;©0 $ŽjSÔ" ¨©È‡Õ’ÑF`Bˆ¶Âk àQ½Y»r]R–D'“è¤Å†9,›Aiøùw×cßúôÃÆÞÚao1ãiV“Í8;¹' iK’¿k²+7ǹÁŽŸ\4§gó]ö¸/2°õâlÅ÷MÌí‹F"kÛ�Ÿ:« î;¿Ö/×6=á¨aMšœ—D~ÔÐ<ú’ ¾ïç÷Gª z(¶Ò÷ S¨"@°ó>»¼àõ$>=M üõK˘x®X"² x|gVoÊŸ§¾þ®'ì�ùÜL¡ÿVÉߙEbIÌ7Õg�[Cõíüä�W‹5vÁü˜Ô øŸõ�l§r’kÔý¤3M,1@ˆÐò{„ÉrĈ1­˜$@Ñrö€IEND®B`‚PK ÒV1]·‰`J  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF0IDATxÚŒ’±JA†ÿÙÍeï$5!A�ˆ`'Š‚]À‡°ðô5,|ŸÀÚÊÎiíŒFˆ!BbNsñöÜ É�7 ßÌü3C‡ç;Ž’ÌøUäˆ�Öðäâ1ÎÌšyJš �‘ªIØ@$cdŒä™¿Á £ݯûÏ[ZªtGô3K"l |5>߯L¹ævƒöZGçeåZp6mlÃTv†‹ƒ P­»ÇMst¶ÜŠ?Ö9šqZg[¦öòa/‚D0ÐËŠˆÿáYwÂüæª×k7üÓzÜk9ûîüeCX• pÈÞågei÷}»Û¬Ž"ÛP¥[šexrÛ’ì›Í½Êœ§Ý½›'ŠÈ:3W=åΖ¬¥Ô0Ù$r ƒÒ?ì{*Ãtjû~ÛIEND®B`‚PK ÒV1]Ëç†×@ @ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFmIDATxÚœQ=/Ca>ç½ïí½½·íE5Ñ„‰ÔPÑÔ"–ªÄP"ÒZÄ‚Ž$vlÿA"5H bl$R«ˆñ‘Š*CChû~,··Õˆ³��ç<ÏyPJá¿Ašô:”¦èzfMÓ¦S©V·¶Ó­ï… ¿K™J¦LÓl€��_äœÛK•juyee�åÃ~5=™Ë«öµuÃg!"Ú'ñy5 ¢L Þ¼•^Nz¢¹¯sYol¢7ÐÆ„t2ßg¶%c`Û¨#ä¾à‰Cÿp jîó"Ów÷½|Ê¿&%H HU¢º¤ù›_]ɇlq¤"îŽ? téQ¿ŒO µ�ì�¡Q!E -€TÕñbÞðYÄð`_dk,!8«‰t.ÆûÑœG;C:«.e�L)7ãÌ´Î.€8ŸNuݨ nÿ€H8?}} …©·åÒ€K÷™VY t0{Ò ˜à”( P!~ÒzþI{‚Ô¯ÄbËIEND®B`‚PK ÒV1]³Š© Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MQ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚb°Íd@_¾ýˆö²\Дʀ ~—·ü]¸’�‡Y�‰�0ªyT3m5ÿÿ‡r iðBwÃIEND®B`‚PK ÒV1]DT:‘  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFœIDATxÚ”RÏ‹�a=çýñ½—;sgC³AH2©é– ³°S,d66”(eG ;ÊÒnþÙ1K¤ÈB,ld2©QS”q¿ûãý¾çØ|&S3§³:=�çé<‡ —�Ü>Õmçš6B•ù§Ã_e«x±wµ¸Y‚U�Pkñ}¿ãßÌîL¥� B ,GÝ WÉ' $Îk›ùulthÎÎY€V}ï�â§*¶­ ¥dßWª—¯†©£H+œ¥`ý^ýìù �7JtïZ%n{·›?Ô7ïô––íîo�;Û"´üÍæï—¯ßæ•U]¹Øò€ n==0FD*ãДe|þR›Žž²Œ]û}{;–¾ÚôTˆ©ùL³Ù äö�&…!¬ÒµKÅÕ e�¡æNÇ“'ÂØ6æ‰@qÔ�ðÙêq·ö¨ÅÃD dJ‰! W‚³ŠE�²„9+„ÚÑ]Ÿ;þîÇŽ´Xÿ[ƒ&\ýO!¬²iþÌÌ“{Ú?«-7¬u~fáèÁÎ0{j tr²?7xçÅ—ÕÜõIEND®B`‚PK ÒV1]Ÿ½Ñ' ' Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFTIDATxÚbü¥ÃÅ@.`a‘ [3ãÿ/É·ù +/ùš]2Ö’¯ùÙ›¯äkfbb$_3; ù¡ýàå ¢êÿò�ý'ÔŠ|›i²“­ÿÿ '—åwIEND®B`‚PK ÒV1]³Š© Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GP.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF7IDATxÚb°Íd@_¾ýˆö²\Дʀ ~—·ü]¸’�‡Y�‰�0ªyT3m5ÿÿ‡r iðBwÃIEND®B`‚PK ÒV1]i!œ‚” ” Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÁIDATxÚ¤�½AFÏÌîø‰¥‘¨$¡—(ÔA#x9‰G¡V(A"D�°ÖÌ(4ë§§»7ßÉw¯àeŸvš’°ÕLolô�˜ø^u2ôr �ÄZ®–¼dra}&ý�¹¦èì5ð¼3>3XkÂÇ»üºíEd©+æ�aÌ"$yÉ"¦©8R‰[Å®úöCl1`àa  ”À&›‹Îøè?äCF¹Ë­Q×]^²î²ÒÆY–üÁsg 4®øgIEND®B`‚PK ÒV1] 'Ø„ „ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BF.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF±IDATxÚÌ’1 ÂPDg÷ï7!1/aé‚·°ðÞÃkx/!XYLƒèßµ°2$Šà” oà KÕ)CñI_äw°â½�H€³®ŽB"F�úߟ²øÂ°Ö9MâÑbLžËíQ uÀŪàH`/¸)hè6ósâl™Ï®Uà.?)Óˆ#߆�Ùz—P™k2OÝΪ¬Ú‚Ÿcík@Ø|ÏnÒ·$ží_Ÿä1#c7æ?ÇÊIEND®B`‚PK ÒV1]‚ì±É© © Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÖIDATxÚ¤’½JQ…Ï™™lƒV6i|€€ûVBªiò~v>F@)Ò!;‹ îæÎؤ»wÍ©çc¾ùá×äZ‰¿'\LpF )á_�4\ŽÀM’ƒ!€è¾#¢‹±kÞT$'Û£·Û%Àê®®LrÞÝ�·cjaòÏåók³FD}¥7÷ÓÜ�îäJpûÝjؼ·lšè[XJ‘óTVõl~x!DëÇ<åÚÁ‡ÅYÐ8 @"üØ ¶Ú|aàt„è‘V�] µþ=*8ëÃ~iˆN4ª¯+„IEND®B`‚PK ÒV1]ù—Še e Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF’IDATxÚ¤R»1 ³«>`¢||¿Íð,�wèjV¤»,­×ØNœ„Óy‡HˆÉ¡Ÿ¹±³sûƒQç?wE"õ|˜öu=,wJZŸkºé}ÄÍ…ñdd¶l5P¡—É)¥¬Ö¨ù€án—±I2çlø:Є¾@]ìK)¥ö#Ç»ž¤Kü‰ .a1‰¹hIEND®B`‚PK ÒV1]�Í�@û û Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF(IDATxÚ„’MHTQÅÏ}÷¾ç{3Ž)¡8F!!´ÚÑ"¡M­rÓ¦V´iß&HHƒ "7D_öA‚äBJòµfÌ?&ÇÑQǴ缜÷œy÷þ[.$é¬Îâÿ[œÿ9 RÒsˆ(?7¤ y75,ÝýO©_›—Û†5€­¼½éþ´{Û·–&ÓϹ©aì-¯(|œilîíËáã—ìþöÜèKU°k®têö"{&²Í�“csvÀàÁÁ¤ç,<>ŸéÖ,(�º£µWßëûî»-]‰Ž�4,ƒƒ8léù5('’+¯ï„O4�œý�¸ÝÁ ¾zú%uÿÃô²í•š‚1©Ã²‰‰`ý)ëðÉŶ‹�pçâÕMm¢¼ŠŠÓM3k·ßM Í®[YR€û¨‰£zF^„Ž]pb�[™ñŠ3MùäÐÆHGÅéVs[-]‰ýó¾¤2KqH á j¿!´Å!uFD^zÌÏ-s«‚qpUÀ¡†'=ÉGݳ‹ënÐäÓ u˜ˆÄQ™„¦ Åv"FD¾“ÕÌ�ÌNéUõŸG§ï~rgV-ƒë\ƒàû§P3#%@l猈¶]Ö)Þ‹&žõ-øÅb „ƒ4(Žpµ_ÊBq�¶«À—ôj`¾5:•^Ë—šÂ(�¦ƒH •I0©ÿ³v›·o½ùÞ—X3u­ÌÚ>"Tý@dÆ&”€{mæïyi&œÛð‚IEND®B`‚PK ÒV1]QK}¾› › Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÈIDATxÚÔÎ=JQFáó}w2�?]R  Á‚˜ÂÂÆBcãì\�E„¸AíÑb’Üqr_—�‹V>ý�cq°ËrI68ÒË3_ŸxÀŒ NJ„PÜÜúÞUåç—ll’ljÑ�Olÿ0�G>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFŒIDATxÚŒ’»K›aÅÏ{{4_ÐDã¥$ÖRñ¨—!.â ‹”>¤“ÿB±KÑÁÁÕAGg§,±C/“‹êRDE\´JK �_Þ|ïã`ÝL›³ÿžÃsÎïÇLöÀú¼*ŒÚÄ‘l1£ó)½y iaj—04 ýw¤Cü(þU˜‹–ÿïü×(ƒýª0U|wn#ðï\&Hðãùç`&� bv&’h»;v½X.ä)7N7_+ñ­ _âFWdÄĸé둟¿”ç>DWJ§g¡’˜ÌSÁ§oû¶të¸Ê·Ê�>»poÒª·[¿z)­ež'š¢p?ÃkÐ/OV)€µ& •”«KÑí=»ºv?=E™~qtIÇA[b ÕÔ=3ØÈ§Àb1‘ÖoÇäùµÙ»iNd’m�õ®2W ›�$ `tDûêî·Z?Œ{ƒ©tÖcë*¥Ê?›bëå…ú?e|:‰¹žT—ß Áá}XãH”IÆN¼×É\GË rÖ±«u J¨‡4'Œš5ÛµIEND®B`‚PK ÒV1]¥ÁX¶° ° Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÝIDATxÚÄ�±Ja„gvïþËE+­D°Õ'²¬¬SXˆ•…ø$‚µµ`¥µV0’ÀÁèÝ?÷wjáT»ÅÇ7»\[?1 €ðÃH•áù?8)Šü×7óâr/Ë\ªwA ±‘$P–1ɺŸ5£$‘`f ]/ÅÅ•S0H1?<Øï-ägç7ãÉ4qk¬�ÌÏ}Ðâlöµ³½||´›¦~{wu=Êó´®'wŽ'ÓÇç÷~¯ûòZ¸³Íϸº5 @U¥Í�¥N'y¾I ÑÖ\ˇO#!8[‰ñ=ÙÁUn½‹ueIEND®B`‚PKÒV1] ëô>Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ME.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'EØK<}]Ù_°ñ3Ë –U©ð…TK\#JRKR­’‹R�ƒ‘�‘‰®�™®¡iˆ�±•‘¥•¡¹¶��•��Â�D ¹ù)™i•¸5þ�p—��Q×ÓÅ1ÄÂíä½^ÌŽ"­ûçÞ=©µh‘GPD”ç“,U1G�¦Þ„äÔÉÇÌ7|Ñ\Ãâ(ðETçÊ¥SaGŽx¹NÌù¦^¸G:lõ]ÍEìç êŸÍ™ùÐȯ¨©3ŸQ÷·�ÆÙæÏ�ì‘õšpµ½UÐÏÜÑRy“Ç£gkù#´†¹Õ^´×>n§‡ÿ—pÑ>ö{‹Ú×yéxíÇWåºAê•©ïÊ…3¿0/óa��^ãÌŸ>ã�†k¥öÃ’´¹{OéM=Ëò8RõhÛË “¬wz‹ÊO�ÔØž9qNë5ƨþ×±G÷¼Ùq%KÜ¢øûžwÙóu…¦ìß_öB?Sjzî¶ü(–�Ig^§�­‰˜ÿçëu+®—[bíæ§Þy«¶îþ[gÃ…ª/ž¬]þè�…’{¥þë§ïD××ÿ«úÀk”›¸B5aó=`H3xºú¹¬sJhPKÒV1]ùöÎI‰§Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TF.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóI“¼Ý]ÿ3éÞrØK<}]Ù_°óó©ò˜Gû� ©–¸F”¤$–¤Z%¥)##]s]CÓC+cs+C#m+ƒYŽý‡Q4äæ§d¦UâÖðZƼè€Ùž.Ž!þÉ)Ü?ÏøËÞ<}·êák7Cy Ôm¦>||l.Ï£3<<»ü&òȯ»›–�ÀXÔÁà0+«��íßÏÓ><—?¼ÿÿÿ…NëÿKHüÿÓ˜à¶BabÐ+mŽa¾Ó£D´Ž8 ©}öÀÚ•§¬]Ìg&Âç0­îW×�ûuª 5m™¿_¡Ë¡a~cc3ó¡ߥ…š÷ÿM‰àêÙaþÞΰÁdoÍçÆ…{K혛 ì/¨t„Ï8Ðå8cöäFÇ –¦�7þµ%lH¬— ™’*¡¤tWb‘r¶DÅŽ’wÖ|•¼%ýÜàÊÕå ¼L»å8N¶ 0´iòó‹žÎ?_²oýû$‹ªwl‡WoŸ/¡âÂ*ñJ}mÊ�?‚/ŒÓþ0ÅzÆèÖ0Véë�iMü;/˜ç¨gÏÊÄs<2orxbdÞ˜è s[Ü”[{ãè©F¿gX±å¾Wjû|ý�ñžš2�¬4te7m0xc]8³QþEm\ÂŒ÷ö…¬9‚E·”ôxD>ìÿgÐáÉÅ|F¿M_~¿�Á†MªŽ �Œ æ�ÏäT€)†�ÁÓÕÏe�SBPK ÒV1]‡p• • Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÂIDATxÚÄ�Ï Q…ÏïÎ�¦FFÄJ”lKÏ![yųØ{Ïa'…ÈÆ‚2lF�¦æß½¶J�…o}¾NçPy<­™A»1Yî·–]529MuÃÈtß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ¤‘ÏkAÅ¿3³3ÙM$¿LŒ&¦E,�¤¨µb/B$'Ñ‚ö’CÓCõ,í¥zE¡â!¼x( "Vñ  XM$`[JL ›Øldcw³»3ã¡R¥x(ø9}yðx|ßCõ¹Ë,rî½ïñ‡ÖËØâª*èÇ/γY³).®ecŒ`+H �4rׇ͕©QÿðéüîÊ %;.æv¾Êœ¹ñ¼Û¨êÿr)�9]„,ƒD#¼R&ŒA2Ńq«mè°c¼™3¹B�´\êq‚Ì5ÖÛHV~jESq:�&0U†Â¨ô¦³+½nh"ð;üq ÙpÜžÞ‰-–F1’@óÇΞˆ¹Æ]z4íçµ=CK§.èó—×ðµîÈ·v�Hé 1“­žï÷â춆�gÕ¼”¤À7SŸí;·&8—ÞÐv×ýRÿqîê“éR"ypðŠúÎÇHzTÝWÓ{ŸZ L8ÿý·R˜¯µX¦ëB@i:G8  °Už¾ ñ @6AÒóèË}e3!n¶•€Ê%AÙI�‡%t±&%Ží˜6GotûÝíZ]§ôÞÃñz;¬R(‰Íú$7oò×B>ê–¾¦µû“ŒzK+û5æ P`{¨Ìy½œ‘iÌùÛÆGÝ- †ÿà×`YÜÚ®†êIEND®B`‚PK ÒV1]>Ô%ú- - Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ES.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFZIDATxÚ¤’±€0 ß`šôÌÀPlÎ1MLbf@ùþOöIV� j¦ˆ$ήÊ‹kSÎ6j¤³J±�ÓT¹11€3«Éçø9ÏW¬¹§s�ŒdÑåoæ#�ñSIEND®B`‚PK ÒV1]íl88Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AQ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR UÒmÉxPLTE-vº-v¼-uº-uº-u¼-u».v»0w¼4y½6z½7{½A‚ÀC‚ÀL‰ÃO‹ÄW�Çb–Éy¥Ïƒ¬Òˆ¯Ó‹¯Ó�³Õ˜¸×𹨡¾Ú¤ÀÚ­ÅÝ®ÆÞ¼Ïà¾ÑáÉ×äÐÛæÒÝçÖßçÜäêÞäêãçëïïîòñïÿÿÿsL tRNS¶ÌÔãîÙXbKGD'-¨#]IDAT×eÎG€ CQ,Ø{W,زÿ%:�_yÃ;I3ô˜Åõ^²J?Xx<l§f“ w5AgQ8t;…‚®ûå8¬Àÿ.ñGþÿɽÈ}~š¶ÞM ½4€ÜÑIEND®B`‚PK ÒV1]Ìv¬• • Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÂIDATxÚ¤’= A …óf²"Öö^ÃxoãY¬+{ÁF,ÁBÁý›ÌN,l³Â²�tá…/¼‡ÃåQ„ ª4DDÄѱ*ýf¨T‰£`˜fç<rN&6¨ê&„`¾U}Þªy:››`"ÂìáŒ]l�û]ÎÝz³-ÂÄÀö`êù¶ë¤._ª9‰˜fRBÓ¶&6ˆî·³j^,Wæ}Áéú =9{.ˆÐ¥Ø—3—1ErvIbú[’ÄpÀИ8`Tþ¾rb!ŠÓ/IEND®B`‚PK ÒV1]hHZ Z Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/QA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF‡IDATxÚœ‘± ÂP Dïìü†Ve&aj`†‘�%Ä>* „ÌåÉOÖÙ”„7’.§óq¸�“·?IÉ>é>]s�(`ëHÊ’º–‡ÖÈ¢»�IoN3@ÿËÒüx*%tu¦Ê,FI3Z_gHs(:¯Íˆkçú²9³·3¹Ùmͽøª×/…4¶rf¾IEND®B`‚PK ÒV1]¾—îÂ2 2 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF_IDATxÚl’AHaÅÿÿù¾™�ÙÑMk] ÌÖÜ´-!± ŠÂØ’ˆò ´AJ�”è¡‚:F'¡S·HêÐ-4;%P$HÁL-+ƒÐÝXÝÕvÝ™ùfæûwXC„~—Ç{ðNïáDßÝ}ç�e†'Þ¶¬}qf&r1â<<IïŠ]x<ºšýÙ‚Žð  q""ɾÅ.íu²7ZkZ¯¶‡Îê ‰æ[çbŸ÷ŸxðzîÇÌ‚‚ˆˆ¶í^î8Z�LÏ.r΀ø ó_ äŸ�Ù^aÍÏKÛ®±–×*÷d‡žxÔ®K6ª@ˆ`Û®yž_êó¢^f诫UrË jÈ8¯«‹)wGÄ*º„6Ii»ž®«oÞMJ¢HU¨ÜÔÓ9PnÛM©d—o2ã醖•è�ÁcW‚Éd*T}/]�²1djgM*g\eRÒáCÑÞ›mÂõ�€ ß¹nŽ�ô½úÚ?Q8*8+ùljrUi;k-. Nç‚å=�§GÆælÛ hüwfmüãwáz€€ã]9¥,'¤É!ĈòÄ «¢ª2ä™Ìš‡Š‚@Âõš›j]áOÍþ2t�Hⶆn¦p†@å!Có øRJ•) ‰D"Ð4Bøˆ@$¹Š€ˆ¾ï†ö´ÿtö-Á˜RDD®Ð8âFÎK"‰Ê‚�†ØN4ÍÀzÑ�­8Ž—8w„7úa^Sù–²ÊÙr6ßsÿ%dVòÿn°‰'etwزÝ÷þP7B 7v£¢ÀæáxžΔ’%’-‹` vIEND®B`‚PK ÒV1]JÌP  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-û-ûü‡Jç OiCCPPhotoshop ICC profilexÚ�SgTSé=÷ÞôBKˆ€”KoR RB‹€‘&*! Jˆ!¡ÙQÁEEÈ ˆŽŽ€ŒQ, Š Øä!¢Žƒ£ˆŠÊûá{£kÖ¼÷æÍþµ×>ç¬ó�³ÏÀ –H3Q5€ ©BàƒÇÄÆáä.@� $p³d!sý#ø~<<+"À¾xÓ ÀM›À0‡ÿêB™\€„Àt‘8K€@zŽB¦@F€�˜&S `ËcbãP-`'æÓ€�ø™{[”! ‘ eˆDh;¬ÏVŠEX0fKÄ9Ø-0IWfH°·ÀÎ ² 0Qˆ…){`È##x„™FòW<ñ+®ç*x™²<¹$9E�[-qWW.(ÎI+6aaš@.Ây™2�4àóÌ ‘àƒóýxήÎÎ6޶_-ê¿ÿ"bbãþåÏ«p@át~Ñþ,/³€;€mþ¢%îh^  u÷‹f²@µ éÚWópø~<ß5°j>{‘-¨]cöK'XtÀâ÷ò»oÁÔ(€hƒáÏwÿï?ýG %€fI’q^D$.Tʳ?ÇD �*°AôÁ,ÀÁÜÁ ü`6„B$ÄÂBB d€r`)¬‚B(†Í°*`/Ô@4ÀQh†“p.ÂU¸=púažÁ(¼� AÈa!ÚˆbŠX#Ž™…ø!ÁH‹$ ɈQ"K‘5H1RŠT UHò=r9‡\Fº‘;È2‚ü†¼G1”�²Q=Ô µC¹¨7„F¢ Ðdt1š� ›Ðr´=Œ6¡çЫhÚ�>CÇ0Àè3Äl0.ÆÃB±8, “c˱"¬ «Æ°V¬»‰õcϱw�EÀ 6wB aAHXLXNØH¨ $4Ú 7 „QÂ'"“¨K´&ºùÄb21‡XH,#Ö�/{ˆCÄ7$‰C2'¹�I±¤TÒÒFÒnR#é,©›4H#“ÉÚdk²9”, +È…ä�äÃä3ää!ò[ �b@q¤øSâ(RÊjJåå4åe˜2AU£šRݨ¡T5�ZB­¡¶R¯Q‡¨4uš9̓IK¥­¢•Óhh÷i¯ètºÝ•N—ÐWÒËéGè—èôw †ƒÇˆg(›gw¯˜L¦Ó‹ÇT071ë˜ç™™oUX*¶*|‘Ê •J•&•*/T©ª¦ªÞª UóUËT�©^S}®FU3Sã© Ô–«Uª�PëSSg©;¨‡ªg¨oT?¤~Yý‰YÃLÃOC¤Q ±_ã¼Æ c³x,!k «†u�5Ä&±ÍÙ|v*»˜ý»‹=ª©¡9C3J3W³Ró”f?ã˜qøœtN ç(§—ó~ŠÞï)â)¦4L¹1e\kª–—–X«H«Q«Gë½6®í§�¦½E»Yû�AÇJ'\'Gg�Î�çSÙSݧ §M=:õ®.ªk¥¡»Dw¿n§î˜ž¾^€žLo§Þy½çú}/ýTýmú§õG X³ $Û Î<Å5qo</ÇÛñQC]Ã@C¥a•a—á„‘¹Ñ<£ÕF�FŒiÆ\ã$ãmÆmÆ£&&!&KMêMîšRM¹¦)¦;L;LÇÍÌÍ¢ÍÖ™5›=1×2ç›ç›×›ß·`ZxZ,¶¨¶¸eI²äZ¦Yî¶¼n…Z9Y¥XUZ]³F­�­%Ö»­»§§¹N“N«žÖgðñ¶É¶©·°åØÛ®¶m¶}agbg·Å®Ã“}º}�ý= ‡Ù«Z~s´r:V:ޚΜî?}Åô–é/gXÏÏØ3ã¶Ë)Äi�S›ÓGgg¹sƒóˆ‹‰K‚Ë.—>.›ÆÝȽäJtõq]ázÒõ�›³›Âí¨Û¯î6îiî‡ÜŸÌ4Ÿ)žY3sÐÃÈCàQåÑ? Ÿ•0k߬~OCO�gµç#/c/‘W­×°·¥wª÷aï>ö>rŸã>ã<7Þ2ÞY_Ì7À·È·ËOÃož_…ßC#ÿdÿzÿѧ€%g‰�A�[ûøz|!¿Ž?:Ûeö²ÙíAŒ ¹AA�‚­‚åÁ­!hÈì�­!÷ç˜Î‘Îi…P~èÖÐaæa‹Ã~ '…‡…W†?ŽpˆXÑ1—5wÑÜCsßDúD–DÞ›g1O9¯-J5*>ª.j<Ú7º4º?Æ.fYÌÕX�XIlK9.*®6nl¾ßüíó‡â�â ã{˜/È]py¡ÎÂô…§©.,:–@LˆN8”ðA*¨Œ%òw%Ž yÂÂg"/Ñ6шØC\*NòH*Mz’쑼5y$Å3¥,幄'©�¼L LÝ›:žšv m2=:½1ƒ’‘�qBª!M“¶gêgæfvˬe…²þÅn‹·/•Ék³�¬Y- ¶B¦èTZ(×*²geWf¿Í‰Ê9–«ž+Íí̳ÊÛ�7œïŸÿíÂá’¶¥†KW-X潬j9²‰Š®Û—Ø(Üxå‡oÊ¿™Ü”´©«Ä¹dÏfÒféæÞ-ž[–ª—æ—n ÙÚ´ ßV´íõöEÛ/—Í(Û»ƒ¶C¹£¿<¸¼e§ÉÎÍ;?T¤TôTúT6îÒݵa×ønÑî{¼ö4ìÕÛ[¼÷ý>ɾÛUUMÕfÕeûIû³÷?®‰ªéø–ûm]­NmqíÇÒý#¶×¹ÔÕÒ=TR�Ö+ëGǾþ�ïw- 6 U�œÆâ#pDyäé÷ ß÷ :ÚvŒ{¬áÓvg/jBšòšF›Sšû[b[ºOÌ>ÑÖêÞzüGÛœ499â?rýéü§CÏdÏ&žþ¢þË®/~øÕë×Îјѡ—ò—“¿m|¥ýêÀë¯ÛÆÂƾÉx31^ôVûíÁwÜwï£ßOä| (ÿhù±õSЧû“““ÿ˜óüc3-Û cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFHIDATxÚbüeÀÏ@.`b °0üýK�fNn²53þ{t�|Íÿÿÿ ûû�|›Y’7]#_óí·_É×ÌÆÌ40ÿÿåшr1IEND®B`‚PK ÒV1]K?5C– – Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TJ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÃIDATxÚ¤’=NA …?OfC"$„¨�è)sŽÃåhR!!Úˆ£¤DâGl²ìÎz=xƒ¢¼Öþlù=[·ºãx)q‚2»ýÁ€â¢dãúq4Õo�¥% øâ£IñàÊ'´`°H\0Ä7Ë?w¾Ô¿™{õ× ©” ·t�ŠÔbg¨N)Í.©ï©{B½Ío,_ÿíir“7ۇȭr:4¤öŬAþ+‡±¸Ý?ßN'5C}b-Ê‹|þÿ/„ð‰ö3ø1UXðšIEND®B`‚PK ÒV1]ì§ÜD  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HK.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIIDATxÚ”’1HAEÿìÞm4B‚¤ ¢i�®ÒBD°I'XYˆ6b-±ìÄÊÖ>`+Ø"*H°4&¢æ.w»c‘`‚¹„8íüÇÌŸùT�õ 2ø_Pe�$ߟ¨|uè·‡_¬mˆìŒ†1]ÃnÅ2%SrïH,,Ãóøp+­B«e` –Ö??Áh¹“£É“?7§‡°m€ÚÀÌÐ�pVijž �|y˦9‡â”†ŠÀhP–»‰ˆ"âú Ì|w Ï¥Þ(¼ƒ¤Ôû›æì¶ýK C<+Å…s’C¬_L/ÒØ¥3bÖ¸‹ƒ1ƒ­didœo®ôÁ6ü*SÍÛ6¾£)ž@rˆïoQz£t†KE¼¾@Ê?!¡ð„i ߃ê�”ð\K5o^ƒ­ð„H ­»P‘šŸVÕÏh?zšÙÃÔ5IEND®B`‚PKÒV1]ô ¸ùVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EH.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóI“¼Ý]x¿mIü ä°—xúº²¿`g·T4~¯´(¤ZâQ’’X’j•\” ¤Œ ŒLt Ìt�ŒC Ì­LÍ­Œ�µ ¬ »ÊN¢hÈÍOÉL«Ä­Aàú¹R <]C,ü“O<~òÿü�¶5±ßêùû Ê<� .ßþÿ_âÎÍbŸ;NaVø(˜±‚ÏXú°Y�çU†ŽÖ]/î×·Y¿jãùÿÿ¿ûÑö¾Ä®‡ ˜ðsÞ|¼_’ϠȨf¥´Î·ÄûŽmËŸëÜÑ]Éô™“Q„Y�Ad_À�'>¼?ÎÏ&Vg·‚¡î@…K€ÔºÙOŸç³ :²=U_ °á¯sórÛ)ÍòxŸüûÙÿÐR߸9|šÐ…ùï%%êþ3j30óñ±±-ÐîdL`þ¹ÿê…£f/âè‘]àxà„¢¸'3ï�•Ç Ìf3yÃ}Á`Bä�eqcßíI�“R~´ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÒIDATxÚbT \Ä€¾~ÿío¯4³Â���áoMú¿Us¸y1•11P(ÒÌòûÏ?LÑßþýý ÿó‡á÷?†ß¿°h–ãÆýöã�0?„Í((Ì(-ÍÀŃ©Œñó7,Fþg``efâ`cf```øùƒá÷/FF,šÿÿÿO¾ŸÿÖebþùƒQßœ)*ƒ��aù®[Ç.½€ºMó¿³°hþú�éÓG†¨ †#žÏßrƒ—‹‹f¬±ÏÀø…�ƒÂä`gæåfåádL‰0�f>•«{kÒIEND®B`‚PK ÒV1]lÍÁl¤ ¤ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÑIDATxÚbT�}ˆ |ýý7PUlŠ‹*(?xkñµg<¬ÌÈ‚L šiþõ÷ßßÿñ(`ÁbfbþòõãÅû7Å=þÌÇùORKV𙉉(ͬ,¬Wßùö÷Ÿ8ׄ×ïÿ>üÜþ÷ÿ76 ¢œýÿÿ.6öÏŸ?ýÿÀÅ®óþÓ3nVŽÿÿ¥ùןßzJ:¯žœ=zMÿÐ ×o¯î¨éþþó›(gÿÿÿ���!* ïýÇwZ |^ LXmfÁ’|Ü|ÜÏ`#ÒQäOFIEND®B`‚PK ÒV1]l/{  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/YE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF;IDATxÚbü¥Ä@6`b °0ü¢@3£‚<ÙšÿýB�æÿÿ(ÀÞ¼yC¾³Fÿÿ K G=øc“IEND®B`‚PK ÒV1]~Ç   Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HU.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFCIDATxÚbü¥Ä@6`b °0ü¥D3ÙšÿݹA¾æÿÿÿL€QÚiËÂÉ×|ñéYò5³³p ŒŸÿÿê ›�IEND®B`‚PK ÒV1]%ßýš  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF@IDATxÚŒ‘KHTa†¿ïÿÿ3—3wGS›IÓÊ„D(’4Ų"+ ÈEÐ&"‚–íÚÔ®hѪmíŒZµ(!$º(ÚbÂÇtò6Ú4ã¹:ÎùÏ×bZµÉwõðÀ³zq|øê¡¡SOÖŸgFš'™m .u]ß‘½Ñ“u�Ã�g,Íâ€�ˆ$Ï÷Ý­Û*\j)�¾v!>7­r:ßÛtöDãøþsF³³Kˆ@Àˆ˜ð”˜”.DBçr�D…Ù¦øÝÅyØ*±d£ˆ‚®ÛÜ{l¡w¥ì‹6Ëe�›�>ú4áJÙu¼DŽH÷†"¡ÝÉ(,g T`p´‡§ÓÙx˪!e–K‡5%×7Õõ8%’u~O4«{ SÚ _ê»äb=Ÿýn¨ª�Áê—=·ÛÔ,äŒ{ËÍé¼ä’°z5R»áÍýÌë_¶ÃœJWsæòÑ›ƒîë‘[oèQ:4 ®hEóÊÓµ #|¼{Oaâųˆ Gê´v%|j"¥›3ßj4-„Lb[ûÍ3ʤ pB Óå–U DÃaӋƦãiÝ—é>I‡»Î¨>ÏØ«±¯Ó?>~î@tÄ/â.€î ãHªß#m;o�àŒ3w-”–Q\}§qÒL²ô°t™$bå9¨ÜYaÆ�ý×6c¹Œí¯}OH3ßÛR³;ကÿ ì²2� ZJ1t Uä¨À h1(\æ6bËo«€s—s·â·" AÿÈ?{½gùf'IEND®B`‚PK ÒV1]ÞÔŒ Œ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¹IDATxÚœÎ!Â0Åñ÷ѯk3A‚â#Á��E8ÇáH!ˆy4! b!t]·"¸Àº¿ÿå=ZnöBj)k+"BëzÞÃp4ùÉ¡³UËy†sÙOÒLWæHIã\ûã øÊÕ‡Q*kSÈmL(JP�Àu#¨Þ{5ñ ~I¥þ84Úås­¹fccßëŠóÛ4RQG|}Œ9ÒÝðoÑIJ/ÕìR”IEND®B`‚PK ÒV1]|,;†‰ ‰ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GB.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¶IDATxÚL’_,•qÆ¿ßßû{ßsœÃ‰“òïä(†Ã:$¥¶6 Ã…u“­R›j](é"‘dHé�ÑZ›VWj­•Ñp‘X±¹8[Ça•°‰âíç_ç}_ïÛ…i=WÏÍçâùìA¾ä).uDÅÕ7v<}1äñòþj…—°/óõY]ǽÌ-)jŸRá†û� Þ±ýLZx©0¦µÍ«Ê*ȰZ�µe�­�Í•ÇÞvWe¥'®»¼õ³‡kʉ¨q™£ÐC*ëfS2*ë;Ëo>Ãýy&/Ç%诩#½$Á¨¸teÉ)ð}½ÚªËÈq¶†ÇܪM?:(æåÓ¬œ�OK�-]ó kþ*�Öðñ‚¬ðÛ¦d$Û Ñh¨¿Z´Z·ª�¥AwHh˜¨ À€Éã±;Ü”!KQ@ûÞèÍa² È2ÂH ‚,oB@�eJ(Ý‚eic)â–3D†–ƒ ‘0ˆ€@dmf ø| „…jÑÏO²­°n§¸øÝq»ÔÔBâ Âêop¹ R¿¼ê$¼OÁ±‚(ÒCe=n�Ï~£ü¸.n—ôº�ííOÎä´A;DgˆFl÷šê%�MÈnZ™žœSsÈ(4ÉÅç3›ê Œk_¡ºÜ>3Ûª=\Ôÿ+UéIøfå”\Fž5õjCƒS.rîõèž¶L+ÄÌãË8¹h�BxØÂ[-ïw¹;¯ú`�&”vžÚóïaçžOPÑ—›‘TSub_+Ý«ÇÙé¡Ä ÿqÀóäÑœÎ`Òäöô-JÎ…@%ëÝô¼GÕJÒ?8f¶Lž>z½Âøeø@ëý¿´+$¯£b_‹IEND®B`‚PK ÒV1]‹¦¦8' ' Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LV.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFTIDATxÚb|¯Å@`d`øýŸ�‰�@‘f–ÿßÉÔùÿ? «•5™šÿýgüÿÿ?yšSêç/16dÚüï?ã;Eòã™…‘“LÍŒ™Hÿÿv¾-=e¤úIEND®B`‚PK ÒV1]Ûæå7 7 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFdIDATxÚ¤�± €0ãä%J:˜�-‘Ø„’eØ!òaÇýÉöa=æ ¡²ÅÐc}µæ¯6›ÆEaÈg–`”RÌÒ Nèv=®ÍvwÛöS²��nw¦ ÓR„#ö ûÁ$7hIÓAIEND®B`‚PK ÒV1]XÖ°zà à Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FM.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ”’½JQ…Ï̽7×7Æ˜ÒÆˆBÄ;ßÁNl±ñ´_GßA°µ²-66Á¿ý™cŸÝõgÚáãœáéï]jˆ Q3p*hmZÙI[‹i4ãÿ`yaÇ;ƒ³ƒ¡‘d=ïÑD7÷ÏIôF8È_aF:Õ«Û'N¥4:‘ßj9ôtckÐ3�árçüp4—x«”Ÿ†I´¼ŽúÝÞ|,�¥q!�›+Ý$:³éd©ª2²=>¾ÊϬ$‘D—Dÿúži¥wÍÍ*2yËI¬-µƒ×‡ÇIVdµ¶ëU©J^ØÑöêÉÕÌŸT Ð zq=N½“SMž§r7~!\ã~Q§kX_\IEND®B`‚PK ÒV1]“]ÿ� � Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFºIDATxÚ¤’¹ A EŸgg8„DD4@ˆ¨€B¨‚:Hè€�ˆèbCD€‰C{ŒIAÄ.Ë“åÈß–¿-—MƒçÅ&m–#"�òüÅRZ,¥' ÄÊúŠ5Y#+Z(¬pð,Žln„ s‡Q9G±äfS¥gi„¡£îØ�*³m¿§¹»X”q�U—ŽˆTö� šäaU¦ Ä{ˆpF�h!1àAýÏGÏêõ#—y’<Ë}Aá©ð—IEND®B`‚PK ÒV1]±æ�U> > Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GA.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFkIDATxÚ¤ÒÍ @`„á6œDB4¢ =¨I ͹¸‰ïgô0æþ$o6‹iM,Göc M’æ]�Äì’8÷A±°èm•4ü‚nÈZ¶�~=�ž=¯‹tläý¸{ 3÷2Šéׇ}³Ë&‰‘í9IEND®B`‚PK ÒV1].M%‚¼ ¼ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFéIDATxÚÄ‘1JQ„gþ÷Ö¸&Å Y¢AÒÙŠÞÂÚƒ¤²µô9‚'ð*("$hÀ&˜¸ûþ±EwÁ¯šæƒa†Ûg´5@.3:¡¤`t4!%ûHîFø`óa¸uO¸»¡@�BYLÇÇ“jµ‚a½“�_œÜ=³P·�=ö‹§½Áôe�@ôr”Åìf6j–+š¢ßÎw.¯ÊŒ w0t®ç»ŠþÆßÊ âáþ©Y&‘Z¾.kypälÚLr>ŽŽºf �Ì.�Φµj)öTueþY_¨¤˜À„·~“`øÿ'¿>¤^õ£l˜PIEND®B`‚PK ÒV1]~üD D Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFqIDATxÚ„’Á.a…Ïý矖™iKT„ )’êŠg¬ì$bëA¼€­�µ'°³²°ªD,° QM­*Ú™ùÿ{-šJ´#Îöä»99÷ÐæáÁJîfÿm‹À„_2âÐdñ‡4Š�>ƒAy§) 7¡DøS†Ìý†­8ÅÔývæDõ֮¢‚CœgécL55l Ý=ÁP¬—w2Ç€i²,”ƒ~^½sPç¬�Ó%”¦xFצõ3È€dÒy]p+uýÙ•¯Ú³úIz†€†(ÜðÏ.Ââ«o˜|9,­{å@}1Tl†ŠDÔíŒÀïìÕm¶bÇ÷ê»iŠ«flV×Zì%ÄÅ}¶£Ô30✇%æÅŽ<š| Ú—Ñ|‹=øˆò¨¨¶†ýIî’½‹§N;Ë,¥oCq¯¢‚K&¡íûMöªî}ß ¨–ÎÃÅXtšâä‘äÔÇœ®éžKýAPmI58#ÉúGß'L¢@­JëÄIEND®B`‚PK ÒV1]ó¥äæ æ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LB.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚbüåÇÊ@.`aø÷—ÍkK¨ýbbfeá°��ÇÚ¿+�°„#㇟_¹Ø¸>üøüûïo)aL2000þrÞ˜þ30012000üý‡3‘`OžõøS`JtjþW­hIEND®B`‚PK ÒV1]:Bcãj j Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CG.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF—IDATxÚ|Ò±kSQÇñï¹ï6i’×RDP¬CJk+fÿ„Ίƒ›“¸Hup "tRÛADÅÍUð?è ©Rh‡*(˜¤!iò_î}Ç¡W´šô¬ç÷�Ã9GN¾¼bò#¨2¨Ú}séx÷ál#g4ÛK�QÒÅ5ËðÊ”®7WË;÷g¶­¨Ï…QCâõΚ¾ý1{¥çÍ©Öí©¦*A#¶S½Y•Õ&1ƒ±Sq‹SÍk§[™—0m)âë®.Ty×f tN31ÂƒÙÆåòŽw&l£dÙèèõ÷lì‡ä>,Ðˤéò\c~²ãû&¬1¶T[zã[=Jòöo™x9œÏžœ­_8’¸¾ �qËj]o}¤Þ§úèx)ÝóJmzâg�±åÍ7½û™ÄSÜ'h;sf<}V©�K�3F(F¼ÚÒ¥u€ü¿°{òü¡ÞÓsµ£d$ä �7uy“DƒÏiÛÎÌKVæj¹Ìy 2–ÖõÅ `†~‘½8Ù}Ti�Êoi§Üû¤¯¿ƒð�üx‰²>õÆ›YIEND®B`‚PK ÒV1]ƒ…/  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF;IDATxÚbdaaùóç ’]µÊöïW$AN–ÿÓÏüßr‹�“Y%`Tó¨fÚjÿÿËœ em†XvIEND®B`‚PK ÒV1]Å7`) ) Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFVIDATxÚlνOqÇñïïîúpW8 ÕR,^¤ئD0‚ ºá¦ ƒFggGÿGY5a!DLD£¢ò„ˆÊ©±#¥[59’h �Ô<ÉuØÛ>ní!�Ÿ¿i «R{»‡—ƒ�µKë©èÚ¶Pç}x?R*¯Ç—e]ó.Çô|,»$|ž>Û!o§~-.';ÛxžMle×¢©®k� µÕyQžx¿âtÚ†ïµ9¶¹Å„()}Ý-.Îqœ/îœ47xÉ£g£ ¹­í\¾ _ºx^ð×Ä’™t&ïv»îÜ ªªñy&ªiF$Tϱö•ß)EQÝU_Éfs"ù:·K¤›}v;sx$%’™PÐ_érªªñaz�e탽A†¡66Ó²¬FBõ M©šq’WjÜ,¹>ô¢¯§eöG,?¸{;ܾ/Äfâá+õOGú•’örô“()†»ªxvòãÊf"Óü¾êù¥øß+d~jD�«IEND®B`‚PK ÒV1]¥©âAŒ Œ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF¹IDATxÚœ’-Â@…¿ÙîB€¢Áñ“p ŽAð\«�@ô&H€Äá°HhJÙv1 º5;r^¾É{/#ÝÖÐÑY‘Ãr¼�Ãa·ß5Šª~L‡^Á=�G¢)o¥ÄâÏ,q¿Æ�ƬtkÝ"¢8öb±P»àó$�CŽY37¼àí!yLžõ5UÑL‹Â^mu¯ÐÞÂÒ´¡ È@G~ÍÕ3'Ë‘_q«Îï’Mø‡uÛ½`ø;Û‹.ß=¶ÊIEND®B`‚PK ÒV1]ž»=Ä Ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TW.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFñIDATxÚÄ‘½NBA…Ïì®Ð` 5ÒicìÔZ�ÂGðYxKÞÀD++;+‚�Bƒˆ„+{wæX\Bb0W£…_7“9ósFöÎ.�$QYq$òd"¢Î×urÙom§Q.Ÿ ’ @Žö7Nf¼¾ë?t_Šl9€‘õÕjód÷¼y0˵Z ½Ád”Ù�ÄÌ“f³s‹I; $ñðNµ}óØd$oïŸÆ‘漚/ï6Ó�açõªÛ+œÛrbâÖtêXvº<ï,‚¢Pda)kö.øB>w{]ßJKKOZºù·8ü�ÿ !œy7¥H•ÂIEND®B`‚PK ÒV1]Cï#e  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF@IDATxÚbü¥Ä@6`b °0ü¥D3ÙšÿݹA¾æÿÿÿL€QÚLÉ÷ó/IJ¢Šs€ü ÿÿá �ÓÀb¿IEND®B`‚PK ÒV1]¹ÈóÎÝ Ý Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BB.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF IDATxÚ”�1KA…ßÜnöce+ÁÂVÄÊ€ÄúJÅ2ˆù6VþM«�…Ø)v¶‚ ˆ œ¦ žçíÎíXˆ0ï¦|óÞ|Ì£ÅNc“dáæÊíÑÎ1[ó+j“íŸõNë³áç¸9@ñ�hÊz²¬@O?ç \È/x‹E5pzåúNÍÐ0–<•!7ët=à@«‡%ryãâ!7�ÿÉÇ­é§Wß^V�U}ÿ,Q[ç¾ÜÏœc®E"¸{ôÞãÃJkž—/¬FuƒÃs `7ª!¤*m§²·m’ï©t Ò¬Jض6”c@aBWÓ¶XZ@ÄV´©þÆ3 ¡€¯TÎ`¦ŸþIEND®B`‚PK ÒV1];…¢z Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF-IDATxÚŒ’OHqÅßïÏÎÎÌj«âŸ²LJ’ÒÐH2¢?vÊ ³¤:FAÐ%ˆˆ¤¼uŠ®]"(yHP$»$›ˆB¨”Û"殫»®CãÌîÎÌ·ƒaA~޾ïÁ÷=öåQç¶cGÖzFâÅCŠe4¥ÛšyøaÍêrÙ� =?-Óœá_ˆo‡îU¦c7êXí饳£s�Ô—ß:¬ŽUŸíÎ.Db‚`\—àì�‹w\ò)ZNÆ�ù[¼™iX&¯¨tƒEk+FÂó·$›V<Ÿ ²3îö‘·�°TE¬;È5¡éŠÎ·"µ!(�‹]»Ùü3X’²���θ7ÛêË´~e£Ôúôå'UDäüóý›wèÎkÔä*¦ž÷öLç¾½%3¦¯Ë¬‹$�¬�i¬-}v§áÝ`o4ž¼ßqet:1;ŸòIλª–•¾W—ß·CÊ\2»`xw»‡ÚýÚžªSš—¶]:ÙPkµ56v-9Ž•hSC…ãxäÕ‘”Rf:ÐEâºU �NÖÇ‘pËT Ï¿Ó�%ਮmì Ê´ëEšœ[˜Œ³IÀp%HW¥kÛK6$çRˆ‘É¥S²w1ÆH(±¡îÐäq.8)qF5pÎ8@ó‹þÐ÷šÂâs)Øû‰ü¾á°î—$þc`Or>„ƒœaü«ný® ›@pFn:4%@UøÆà6u¼ž¯úÅ_â¯[>áNgØ îIEND®B`‚PK ÒV1]>ß³Ëð ð Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AS.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚŒ’=ha‡ÿïû^¼^>½›¦5! ѦibrML¼¦ ~,¢ bAÁÅÉÍE\EwqPDpWªƒ¸8‰¢RD)V $µšÄ¤›�»{ïÞsСH,þö~<(X¸‰°À„�ÒGѺ¥–#_Ê&%vsÛ0` q:§ÚI(µ‚P_˜Ä™Ü^"_€PTqx†À:`YLÝp«í ­É¶ÆB”D¥™; áéFcýýÓŸo\>~åÎØÐ�¨Àa]Ui£zØÕ”Òâdi2ç!4À™Ï®Ÿ{õð^½Íâ'ÎŒúCœDCG�A-Ï*óÞ~Fö�åBZ_x«Ñ�Ú§ê»—"oê>—_:Òlµ¹)ãÛ!åC~‚Åå¤3{âipz‡^ÐC|òâí7×ý½¦ÚïªTÇùØ¢ß7†|…[”Xm3گȤ:ĉو#'ÁÌþ­ Ê QY¹ \¸^y½S,&‹gÃÄ8Ê#†® Þ;¢K�ñGo7?>yn<^V–�´<—‡³Ø5l«®Þm¶–ž «u\°zÑ_‘˜€( Ö5�Òšak%G«áÃùÈeÓ'®÷V�®´“)¥h›Â À*p3EecŸV+Ú¾—##I)ù,ÄRºÅ†þ'Ïß©QvõgT­°|�B*µç׿LÓ«Œ{c¼IEND®B`‚PK ÒV1]äÞ¦øk k Wimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UAE.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF˜IDATxÚ¤’= 1…_¼ˆZ؈�ØÙX»­à <œ'óÜ nv3v²h“;nŠ�÷ØæD¨ÉsºßƒPT‘!‹’þ¡À»� Ðå9KŸkw«Í�N²X˜og´Q—kœ/:_”Ä6ÝÂLøo0kKS}„ ³8¦ãµ®UõìL‰sJÉûÛ+;öoCrÀ“Œú°Ïcç.*}kНIEND®B`‚PK ÒV1]RȆ  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CH.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF.IDATxÚ”’½JA…¿;3»+‘$¢  …•�vZYÚšÞ·°{Á÷ðì[K-bi@ðM*†ÍÎεp—D1žj`îÇÜ9çȰ1U>�Ýô7�#‹« ¹öŸ9È pî©6ìÉ¥4—Qå­›lÑÄF¿ÃYNrˆ=I—$󤞸 À±û ‡ kÔ9!§RWÖÉæo¯X‡±¼wõîc¶"PRo�ÏÍöI¯/üÑ.‰1üW:fkU²²N­Y®]w‡gTƒº?¶vOïÛ߯–6F;·„Ò°Z]}&¥ùÚ¾¢ûRÌ!rnGlUìHø!ª¤ŸÄŽ9&£’i SÄJciT’ÞÃÌ%AРÏ�‘7Q4I_IYsð wÅÑIEND®B`‚PK ÒV1]@hDS S Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BJ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF€IDATxÚÔ‘» Â@ç=ßÙ®��èƒhƒbˆ(Ç‘Û "@Bâ#|f)àŒ/ @ž|¤­­�;o"Ü’mW÷ÃæœFã;f¼9?ð?9LEÇçš1@™ìÆsäôà]’‡\n+õö�b˜ß,å³ ’¸B� Åšn†Ey¡?Ç>"yu%IEND®B`‚PK ÒV1]T†÷—· · Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JP.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFäIDATxÚbüÿÿ?Yà÷ïßL ¬¢ÿÜþ·e%Ãík ¼üŒ¶nLN> ¬¬ØÔa€¿kæÿRcÿ%ÌðKŒá—Ã/Q†?±.ÿ?¼CSöë×/tÍÿn]ù¥ÂýKšá—âgøS‘Ž©ÝÏÿ÷î`x÷•�U”—áÿ¾m _¿ )ư±ø�‘�áß?ŒxA×ÌèèÆÀÏÎð Uô£�+/¶xê/æ_ ¿Ä~‰2üfølõÿõKL?3bM$ÿo\ú·aÉÿ[Wùí=˜ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF6IDATxÚb´íÓf@ß~}õÒlòéc@Ë“þ-˜ÏÀƒ"ÈÄ@Õ<ª™¶šÿÿýø 4À)ì IEND®B`‚PKÒV1]8Æü—$DVimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IM.pngUT ëÆ«jëÆ«jux è‡ë ðsçå’âb``àõôp Ò"@ÌÃÁ$“xæþR,éŽ¾Ž û¹ÿ$²ù ÉA¾ Uj - ¿€B /J ^%00XÍ``/˜³+Ð(ÁYàYÌÀÀw„§jóIÙ’¼Ý]þƒà‚½Ë'ETK\#JRKR­’‹R�ƒ‘�‘±®�¡®±aˆ�…•±™•±‰¶��•�ÁêÓé*(róS2Ó*qk¸5í>ÐAŒnž.Ž!þk'Y{3; 4ì¿[ý¤¦@€‡ë¥‹kÈö¦­Sí7ˆmÙ ¶&çgÔ�›Ü]aYê.:Gœ.u°‰:;õ´UÌšq±Ê{íº }ß¿M>À¿°@´uEëæM{º“ãs OMaÛ¤²=¼’ûvîÒ}NK½Ûò¸ž¼ï/tS“ôɘñyóŒÅÅ=sU6\>¯qvÿÎ O$Míʼ4½CðÕL…âʶ˜{½R\˜XŸi/¿ýOçÖý~še}›7´Iîw­öj^gªÅ)rj‚cÙ{‘ò‰ÂŠ–}»/®ðéHsÑntºš-xÓÆÁ{YEÌ,Ç,·k�»·ëɲÅüë¿ÔO 4ÚÐö€KZãýþC×W®Káµr¯�õŠ}ïÅö�õ«wvé3y¡ÕÀ(`ðtõsYç”ÐPK ÒV1] HY    Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SZ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-†-†ѪSC MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFÍIDATxÚœ’½kSaÆŸó¾ïͽ¡WÒjZéÅALÁœ\„Äv°.vqR+œ\ô¨ƒ ¸ÒM‡‹:8(V�.bˆÕVláj#7 iÒÛ¤÷ó=-.M—žåpÎááðð{¨ôhû-åôU»h»1˜öSknx÷Ö€4Ò´“ÆaœHÍÒ2É�]>—oçÿ"LA?£æK ÏÜ-MxŸË�™Ú­ 3 NÍJð¶8Ú�“Lõºí+K~jl<•~ãÒ„ÛöJû�[׌áâ⽇ѯïè`Ùg¯¶”$ä�C'a+Í;áŸcÍ%^|Öòǯ^9aÁ�{?;ó"ìtV¼ÕÓ×Ǿ„ß\°ˆ+h[œ�€ 4ªY<.ŽÌ¾8°ìè@°NŽl’öj5¥ êÍöUÄë\aúè �xÇ3)ÁñÍñ¯¿×ýs\ˆÌÜôÛw[¤›kk““FÇ.ÔVÜ¥ûO”;—7v'°ƒ\¢ EÄLèß\pµ ¶©F8o{Ñóú‚•ï9_8¥>VÒ©W²² Û­Ö5Qdí zsv7“¤ ÚÔqÇ"H 3CÕÕ”g�@€˜™„@Ø-a?þßw<ÿ ê�À§…'¤ÞIEND®B`‚PK ÒV1]?d_ˆä ä Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DJ.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚ”’±JÃP†ÿsïmSÑADW‡¾�/à£è曹9h .*]TA:Ø¥‚išX‚imÒĤ¹÷8DQjr–s†óq>?Ý¿Î.ž½ ËZRê•:ØÙnomv\ÿ64„¨3—Ó`öf�}/I«+|Ã’BÛŽw„ ®¢ð.ëq�;7I-¡ˆ*Àf0Ô§gêäˆÚûRmº^x=�è5¸úì‹ØÜ=ðq^®nHq¸7ÚUW…)ôŸv–Ck¨š*-|7ºœgCEŠÖz]¶šÆ�»/˾æwI¿ò' Ä+Ç�:Q>Ô”dU ù÷¦IßðJR«FHÙÓ8²—¹#„Eµâù1¶�ˆe¥aIEND®B`‚PK ÒV1]]«e~  Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ML.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFKIDATxÚbTšÍÄÎÊðÿ?Ã×?ŒRߦ¿þ󗑸˜ÿ—_aXóœ�*ÀÈÀðë?`Tó¨fÚjÿÿac. Ç�IEND®B`‚PK ÒV1]Q<Í Í Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EC.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFúIDATxÚœRËJA¬îž,øÀ÷FŃBd/J_àÉ“ø ~† ~X gÄ{rˆo�ÈbŒaf§½;“¶�ÕTÝUdóTž°#ªJ&‚÷`�×7qIÁKÇ?Ý—ê�fÜ8õ1²°<ÄŸºx§K£Âã+ãäTÿŸaŠáT()FžgÛíÝ|´š®µ›Cg“ˆóéõeˆ:Èùö�ñÓô“¿îœ\]p©r¯_Ñ_›ä›óû}7¼c¥û¶žˆ‹�—é;DËßvgõG3§­n–ra(ò1êmEPÀz1¥'ÀŠÔØi4NÝ›™P:6gK¦r=ÿ�jW´� àžIEND®B`‚PK ÒV1]|©Eë÷ ÷ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JO.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF$IDATxÚœ’=KÃP†Ÿ›Ü›Áª´Ô¢ýHcA‘‚Nþ€‹âØÁUA'·nÎ.‚ƒ›àèprtÅÖH’Ûãb‡Fë;�åá<ïáp;ϺÏ?ây²ÀGD·DÉN"l„´x¨³3‰3¯’èk2 7=ßÌS¥Aš’¥9¤1f Ä(­IÅëmn¹�}ª!ñûȵJ‘D$!É¢oÏNÓ�fR#k2¨ kU¹:—Ü ;Š ” 5€¦ ëü­m‰ƒ ¿ÝÑ»{Ë9Ú?fA¸¬•�W—^¡Çb³‘œài­-¨Œû™à¨]4fõü˜/,"¾6Údô�Óm×O–Ã× O§™¸úWظZ_ÏVZwÅ)ÇZ/ÍÆz²Ïêf|ÈMçeIEND®B`‚PK ÒV1]Š+Ÿ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ID.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF6IDATxÚbüi¨Î@.`b  œf†¿)ÐÌÅM¶fÆ�‘¯ùÿÿÿ#-ª(Ò ÿÿE¤ :ÛNñIEND®B`‚PK ÒV1]›ù­r r Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TT.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFŸIDATxÚbø×]µjón~9Åã‡ÿ/�ÿ%ÌðK‘á—¤ÈðK��á—Ãÿ¦¼ýGŽKJAôó‹ˆìØ»ïWÅo†_ ø5+2üaøŸuúø1%-mˆ~N^¾EkÖýŸÙñG‚á—<ÍŽ0ÃÿDï»ÎêšY@ô301OY¸èÿª9ä˜~Éâ׬ÄðK„á¿�É‹Kgí½}` º³çÿÎ5ÿT8I3üRÆ£Y™á—ÃGÍOg�ùÇÆÃõgWTÿ9²û¿¾è/I$ýèš!ú%þIü:y ©°®?,%íÛ©Cÿ­”~‰ÃôcÑ Ñ/ÅðOƒïÿÞM¥-mpý®�Áo/Ÿûï®ÿK�f’aø«Àúý¢ž™s™ ú�míœ;ý?Úå—~ÍJ ¿äþH1ü_0qö²å¬œœýꆗΞþŸôKˆá—:+nÍJ ¿ä~‹2üŸP»y÷h“•;rôèÿêŒ_’ Œ¿”ð� Œ_X2Ó:„EÅ'<{ò˜��A@Ttáâž÷«,ª9œ ÒIEND®B`‚PK ÒV1]*Œ\z z Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SN.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF§IDATxÚÄÑ1 Â` †á7é_;è¤õââ‰<ƒ«ƒ¸ B¼”8 :8ŠTAë߯EŠƒE+ˆßò@Â'�Å@£38y�ô’a÷è½R¤á˜omº¦þ¤ÆÓFõü B _a'–¤º¿ªS«ˆ•ÝÅ�WÍѲµ9‡*Vq-ó¹ÜriG¼¾Þ•a1™õE�bÕâ 2“²§K±�7ùSÏosýö3gJ|_jIEND®B`‚PK ÒV1]"F„ÎÈ È Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GY.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-ü-ü®Ãì˜ MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFõIDATxÚ„’ËkaÅÏý“Ô#}€bZj bKc[]X\ˆ"R7n܈–îܹ�*]éÊ]ñp§KQD[¢ñ±A¥"&g'¯É$aò˜™ÏE ÁRõìîâÜûãÜC׿‚«Ë�}üU&—¶Œ–_×I&þ!‚r}þ¸e”ŸlìÉ­\^› ‹hÓ Y­vÝmøÊcD;o!ÀWäŒ!è!iáÙ×øô䡎?û¹<“ÈGÖõÒ§²^i•m� Éø¶ËÔ…F„J÷wA¬ââ ªTì»=“4‡â9o³`ü¬ç<哜Q߬N`<·�8ƒs·‡ïƒ1{€Ù’3Ÿ4÷¯ëôÎ,¤kzÓ·4Åúæ®$¡RÅÝ Â7qiŒ �Æ›îü×êѸ1ø(�bÛ“PP PýuÝtv ½Q¨�§ulžÅé[8r°‡=IJµ‰Tqôe^&ÍbÚþØÅ=Ú‚…{쾃kK `ÂW±­òÔs8n4Þ²E'¥ÐÔ“œ‡ù€r}Á ÂE¢Š§p~-0yà°ãÎ}(OÇ�� Ýܪvû '7ÀeH2@ûƒÝăp„߈�¸|ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFIDATxÚÄ‘½JQ…ÏÌ�e#›(‰Å? ˆˆI‘gl|-KŸÅRlµÒÂR‹4‚(n {ws÷ŽE0¢è&Øx˜bæc~mtOˆÐ,÷íÝf5‰/¯{É\T�©Sz±|ºfú#5øI<ÉjIœ:o®³¿Z‰#ULPU1||¸÷ôlï_[›�HXg ù"œ�ß ÓÑÎöâÕM¯?pÌ4.>ÂýA{½±T{³9Ëa©RFTêà·êfa^nƒ«�xpBYùtz8jF ä‹ ª‘…Ä+Æ Âo×KK^d²ÝØ‘ÏqäÕ”üMr(¾tÌ`ÒwŸÿ ÿƒßò^w›\IEND®B`‚PK ÒV1]àO¹% % Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CR.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-Õ-ÕÊ&'� MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFRIDATxÚb”÷[È@.`áãf#[3ãów?È×üÿßoò5ÿö7&_ó/-òŒ�…•ÍLLØõ hþÿŸ|g‡Wï$_ó¡óÏÈÖ ÿÿ:¶i› ¿‘IEND®B`‚PK ÒV1]2‡V5 5 Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NL.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-_-_´a`ò MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅFbIDATxÚ¤’» €0Cíp™%¢dFb9&¢£@å‚rÌ€ãþÉ™u)ø/‘0 C­"a,³›½3š+¶ds7XV FÀ®»I©éÞlÝvÍ8úkÇùèpž’3 =ì³<"¹ìÔJ×IEND®B`‚PK ÒV1]Ѓçåõ õ Vimunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SI.pngUT ëÆ«jëÆ«jux 臉PNG  IHDR ín ¬ pHYs-­-­ʱ[ß MiCCPPhotoshop ICC profilexÚ�SwX“÷>ß÷eVBØð±—l�"#¬ÈY¢’a„@Å…ˆ VœHUÄ‚Õ H�ˆâ (¸gAŠˆZ‹U\8îܧµ}zïííû×û¼çœçüÎyÏ€&‘æ¢j9R…<:Ø�OHÄɽ€Hà æËÂgÅðyx~t°?ü¯opÕ.$ÇáÿƒºP&W ‘à"ç �RÈ.TÈȰS³d ”ly|B"ª ìôI>Ø©“ÜØ¢©�™(G$@»`U�R,À ¬@".À®€Y¶2G€½vŽX�@`€™B,Ì 8CÍ L 0Ò¿à©_p…¸HÀ˕͗KÒ3¸•Ðwòðàâ!âÂl±Ba)f ä"œ—›#HçLÎ ùÑÁþ8?�çæäáæfçlïôÅ¢þkðo">!ñßþ¼ŒNÏïÚ_ååÖpǰu¿k©[ÚVhßù]3Û  Z Ðzù‹y8ü@ž¡PÈ< í%b¡½0ã‹>ÿ3áoà‹~öü@þÛzðqš@™­À£ƒýqanv®RŽçËB1n÷ç#þÇ…ýŽ)Ñâ4±\,ŠñX‰¸P"MÇy¹R‘D!É•âé2ñ–ý “w ¬†OÀN¶µËlÀ~î‹XÒv@~ó-Œ ‘g42y÷“¿ù�@+Í—¤ã¼è\¨”LÆD �*°A Á¬ÀœÁ¼ÀaD@ $À<Bä€ ¡–ATÀ:ص° šá´Á18 çà\�ëp`žÂ¼† AÈa!:ˆbŽØ"ΙŽ"aH4’€¤ éˆQ"ÅÈr¤©Bj‘]H#ò-r9�\@ú�ÛÈ 2ŠüмG1”�²QÔu@¹¨ŠÆ sÑt4]€–¢kÑ´=€¶¢§ÑKèut}ŠŽc€Ñ1fŒÙa\Œ‡E`‰X&ÇcåX5V�5cX7vÀžaï$‹€ì^„Âl‚��GXLXC¨%ì#´ºW ƒ„1Â'"“¨O´%zùÄxb:±�XF¬&î!!ž%^'_“H$É’äN !%�2I IkHÛH-¤S¤>ÒiœL&ë�mÉÞä²€¬ —‘·��O’ûÉÃä·:ňâL ¢$R¤”J5e?奟2B™ ªQÍ©žÔªˆ:ŸZIm vP/S‡©4uš%Í›Cˤ-£ÕКigi÷h/étº ݃E—ЗÒkèéçéƒôw † ƒÇHb(k{§·/™L¦Ó—™ÈT0×2™g˜˜oUX*ö*|‘Ê•:•V•~•çªTUsU?Õyª T«U«^V}¦FU³Pã© Ô«Õ©U»©6®ÎRwR�PÏQ_£¾_ý‚úc ²†…F †H£Tc·Æ�!Æ2eñXBÖrVë,k˜Mb[²ùìLvûv/{LSCsªf¬f‘f�æqÍƱàð9ÙœJÎ!Î Î{--?-±Öj­f­~­7ÚzÚ¾ÚbírííëÚïup�@�,�õ:m:÷u º6ºQº…ºÛuÏê>Ócëyé õÊõéÝÑGõmô£õêïÖïÑ7046�l18cðÌ�cèk˜i¸Ñð„á¨Ëhº‘Äh£ÑI£'¸&î‡gã5x>f¬ob¬4ÞeÜkVyVõV׬IÖ\ë,ëmÖWlPW› ›:›Ë¶¨­›­Äv›mßâ�)Ò)õSnÚ1ìüì ìšìí9öaö%ömöÏÌÖ;t;|rtuÌvlp¼ë¤á4éĩÃéWgg¡s�ó5¦K�Ë—v—Sm§Š§nŸzË•åîºÒµÓõ£›»›Ü­ÙmÔÝÌ=Å}«ûM.›É]Ã=ïAôð÷XâqÌã�§›§Âó�ç/^v^Y^û½O³œ&žÖ0mÈÛÄ[à½Ë{`:>=eúÎé>Æ>ŸzŸ‡¾¦¾"ß=¾#~Ö~™~üžû;úËý�ø¿áyòñN`Áå½��³k™¥5�»/ >B Yr“oÀòùc3Üg,šÑÊ�Zú0Ì&LÖކÏß~o¦ùLé̶ˆàGlˆ¸i™ù})*2ª.êQ´Stqt÷,Ö¬äYûg½Žñ�©Œ¹;Ûj¶rvg¬jlRlc웸€¸ª¸�x‡øEñ—t$ í‰äÄØÄ=‰ãsçlš3œäšT–tc®åÜ¢¹æéÎËžwç|þü/÷„óû%ÒŸ3 cHRMz%€ƒùÿ€éu0ê`:˜o’_ÅF"IDATxÚœ‘=KQEï¼÷66) ±Pì,üh,,;­[[ÿD kA,,¬u Km€_…�F,Ò$DD jPÖ Ù}³»c+7ñ00ÃÀ�ቀ˜“O?²œº®ãrD„,˜Ùô¦Óý‹�ƒ*´+À;Þ�G¨^ ÚA½Ù äv齃û1G›Ös "T¶—æÊçG·O�¾-™rÌlV½N7]ŸÏW¼Ê9“»µyöªn%Ÿ,)ÿ#²)®«�‡«Zqvêòä®ñ–è|˜•‰Äz¸¸¦µzéjÛj�„ï{‡ CÆ(¨ÌÍ”vF‰X6nÞQ�ì¼H$¦æÄòïú±¤¦¬:XÄð÷«–!ÿ1ø»£vvu4[�IEND®B`‚PKÒV1]ùÁIÓ Yimunify-security/assets/ui-app/assets/static/other-root/images/other-root/shield-gray.svgUT ëÆ«jëÆ«jux 臭VÍn7 ¼ç)_Ï•%þHdçн¦×z+j×6àÚAâÆyüÎp�Ôu�µa`?®´9õöó—«íñæâáúü4ûi»¾¼¹º~8~¹¹|üùþëù©o}›ü?mÜÜÞžŸîîï.OÛ×?oï>ŸŸ®>þtvöøøØµÝº:“ÞûŸÞ½Ùð÷öão×ÛÅùéÉæ›gÓå»H›i±ùjs߯j}MØÚ–¯m`ÙæØ¬–×M†ëÜl4ŸÓ¶¹©µ•+ñKVSŸú!›Áóû:¥·)þÞu;^~xÚ³ãÍ·½·ö�K›Ø¢ùýH¼OQù‘b¹»|øY2¿~懽þNgÏ3çÒ�Ÿþº½hwC»"ê-+&f*×ÇggôX¥³a×¾¤æda½C`mÉ`šñ³«ˆíõà¼"æ bŠ5„Íl"ÍR+·ebT*`iI š‡!Ï^€­š †ºD ž)2™¡É(À0pˆçœ¶z•ÛUd§g¯*�€¾aÙ:F·�¤5qÌÊÕ“§�ƒï]W…ˆ Ë2;ª&˜˜$t‡N`F Í(´0J¯‚Üp+kÌ�`£=ÇåµÀ¦j Gté8Dâ ˜§Óc$…ä9™ét†6¡œB~U^¸ LÖÀ‚èa–Ô�#8;f>…“m9ç4KD¡�“-Ù;´£jàh6|°Ë’VÃfN­öU�Ž;½r>¸W#O#àŸC:°è�:�ôJvžd%”º!üŽõ—R¥VÚ‹Y^Ð;�‡-¼[(ïV Þ Èïä]Ã@\§©à\ ÀuÈFΕ¼J€¨­aDÔ•󯺢.ϱù/äoyç~÷æoPKÒV1]«ƒ@·�ÊRimunify-security/assets/ui-app/assets/static/other-root/images/other-root/play.svgUT ëÆ«jëÆ«jux è‡U�±‚0Ew¿âå9K[P$†G"3®nD*­Ö–@¥|¾u`0¹Ã½g¸§œæ‚î¼"AIÝ+{Š0kj·rà b"{hc­³ay;*ï‡c!„$d‰{–rÎY<ÆjS­WÐ^ˆ¦HŠÃQì!oâWqC˜üè^’p›ç:ÏV°3ÚÊ{;Žîc»?ütÚ®œEÅOUm¾PKÒV1]-,zØÝXTimunify-security/assets/ui-app/assets/static/other-root/images/other-root/shield.svgUT ëÆ«jëÆ«jux è‡í\ÛnG’}¦¿¢—~U¥¼_die(ì³3¯]jIÄФ@¶®Æ|Ì~Æb�ýÒÆ9‘U]²HI#“Í—1Lv©ª²222âĉˆbßûó›_NV¯ÖçÇg§÷÷í`öWëÓñìÉñé³ûû/7Oû²ÿçÿêÞ¿õýê‡õéúühsv~wõÝ“³Ÿ×«ON^^lxjåì ƒ»Õ_þöÃêû7/ÎÎ7«ÿýûe7ÚZë^•[ïï›oöWoõó«½Õ«ãõëg8¿2++Ïä¯ýÕÅæíÉúþþúôèç“uÿóÑø÷gçg/OŸÜ=]¿^½wï·”àîÅ‹£Q¼8__¬Ï_­÷±:y|*Ëœæ‡FtÔî —<úåùÉŸ¾–-úñáOö§oÚ�ñã7ºùÆôk“Ïä§äŲ’k'K»óÿ““÷îP3¢¡g¢�{ÏVãÉÑ…l²¨êÙ“ÿ÷î­ONŽ_\ˆúÎ�N/žž�ÿrÿ—£Íùñ›?™!zW½JHa5èÙèÃP|àÑ`Cüfûx±§Q¶º÷6QŽÅ BÌCÚ_�Ëi/Gr²ÊÕ;Ÿ%‰Ìì)I‰y5èÙäíSN«>@Õ_*J¨CPQ¢±Ci¢dĆ¡R’{wTUJOïéÏíë¹½{/Ž6Ï·çe]âW�eáe(]tnˆ£'‚×Î ¹wƒí¼ü[~FYEo×É�œÏ�íÃ`G¹5÷I~Â�zëß‹’z›†¢î�rs�×ÇC|_äßЧ9ée6+�=ËlžÏìt:Ï –â¤Q²T™º$�ò"Oü<•¡|V>ƒÜ‡Ï(Ot#‚È`ä‰EŽ1ƒH›GÜ©Ó8»¶â’aR]vnÕ{Ê`s–;|©CN¡|³}Þ_O�7b1/Ãþ@û�Ó¿^¬g£ºØœ½X­Îž>½Xo1g”Äù~<;‘ñu ÑÙ0)àƒ1"ÖrÉÀïå‡áÑÕÅi/w�¿ å#†lË¥>8ˆÌÕ“»bà÷~ÿÐ]=0'.ø(=2ß?¸z`©Þ^>ðá£�¾»jàcøßÖß·½vö}˜LxÛ…œá»�N]z× ¥Np³wIü&ÃûÅU:+·õb—âVV!Œ�nY:q*ÀE„¿É ¯&ÿ±Yïà=r:Éq_Ÿ'�½çSNãf§‰F<¶Â°è4ÞW�ÓÖi§œF€ÚŠÓ¸Ré,Ù:�ÏNÜç" RSZYq�AÜ=üËiþå4tš89MB|CT�–´Š|J´Ä/ÑLï CKí-â™E|”H"nû²øâbé2¢~„$3…XqœxÄ Kï#\':8âbêÉyZäi¼¿õ×’Füžwµ•a5ÅÀ£‹ b'ã´x'ÜÜ:á7rÕ"œZFkH'¿d¥EäñY~I·€�ÛlïÝ­.J†k¨vP…\Üêþ½Dm𹡋�yÈ݉ãD@U¡Œó@ Ü1¸5˜¢|G•CtÌÕ¦…®Aˆj¨òaÉ>„Çr¡Uè×M\ ­6Áb¬ÇRe/k(à ¸Fmû-8-T¶XÛ§\j#G²N'¿…dt†ì”¨'žòÞЃ•`5J¯@28¡@Žd¹Ó,¸%ºˆc¹:[eZµHQ5ϰ9l«ãª¡âwÅ“-ˆ'(¤�ÑÉ@ëd§ m¸Í) ˆSÒ¢-ù$'¨T #§)¸™ø£ðt‡YSŸ‡iÞˆÕFHH~˜å=¨‰Âák›Ê ]nµ.ÊÒð™féä´ƒ¼⊜/}ÁˆÌ †46ßg‘ˆ�±ýd¬ÓÆ›Z±98€zW¡:ÆÉt'ø…,‹*?´(z£!@Ë–dµb¿å¬M0ïL¢´=5$ê0ŸL^‹Û�$ ñºD†îÇHs¡Ë‚Aƒ¾Ê¹k”µ&œHŽ:8¨Í¤ú‡õc¨ÈÛ…ÄÏ# '`¤fƒ".ðLÇì@ä�5„‘ù¬¼  } ¹Íœò±L‰}Ê*¤�èTH˜Håó„DœJW„25(¨ ‘»‰26¶Ùd˜QMS5äDDÁØŽäÅ@À"Þ§š.�æ&•Iƒ| §�ã|pÎvŠárÁ"i@¢â2AJpã¾�u€¾  I Š–i$º´q’7ˆh¸'ûx¡RÇrAÈRÀuŒïšÚ@Æ,ÔŒš60ðz¦¶õ™ŽC-.ÙéRSp¥C@b®×‘Íy‚L'5M@c±ý@+r;#ÿ„XU>Rž]Ä2hi^ii¦\‰ ±¶@Ç ÷Q<€a8³aÎÕÎ@€¦x‹qûUxÎøÕ”¦”¸Q]‰;5ÒAÈH¡æÀÒµZg`pðBèÍ' ª&87̆h“àuõ¸XÑ¢™íÉá­×V\vPøe@ØÉŒõ*Á˜�ˆá@N˜+¡2eáÅÌЊÔ\Ü((pX@%ð ~\èw0…Ë"BÁ4ëä‰@#Ù¬0 �‚B¥…óÖ¶Å0tG­3?ž|¦vôfØ$�©eÒ°¡DÛ²N®xPuñDþX†D3…C3òÂTÔ°‘/;ãi±ÆÍà‰-q§ÄËÃq…Pf;r%Ùâá@¤öõ�ÅHxQ¢ôž tõ‰fZu@^�Q¤Ô7ŸØ �ÁþŒ¶Ýx³×¼'±|BY°]pqK„-#ÊW DF·¶XKˆ²²=ÌÈQ:�_NSf™J“ ñ ®™ˆ­0³À³¢Ú1Òî©ÌVl‰ä -XVx¶§’ÿ8š$À-1.ÄŽ°�ˆ�÷ WÖ4¸Žb ñh2 bò‹w«Ç®bÏ]ª“~]ÓyÔÊH v3),tE2ÅŽEøÆ½‚U„I%3ãÃÕÇXŽåvÛÉzáÀ0¤¥t È é¶ "°B†ˆ› “0”š@j†b–Áø£":¢¡!aE 2zªJÒÒ×áÀõÉ¡�:XŒã Ä—Jð@+réJÇ [Ɔı™e"Á5@äH´RÞÐZœñ�´�ðè5GHÐA”•oé+™îDës™Áokqb¡bÊ\ÅäF€eî˜Na+R¿]™%JVºœÌÐE�/Ží@1ˆ„®#ß ¸èÈ<²:1T–±nÔ§x'-M�”9o1Æ‘H9¢¿#ÈÞŽJ¡F¦¹ËJjí �ŒÔ¦t �/MrÁ2På.žÍØ«}2ôð3N0cz�ܶWÖ(³MÑË·S–‰eìR¼ñ¬¶†9�a|êBScWU=„öJbOuÐ4bN„iºm^Wi-Ϊ7Ye9™)åŒq‘>S`�tf¹óš#ÃR);FKKsJâz˜P FÆ^éO$V¢º B© «º&Ÿ/-•sMy‘÷ø–cúÑó¼íP‚fè!˜ë<ÊþªË\‰V�FV»C¦ÚÅÎ °¼UQqŒLþ2äˆÌø­â¥‚�VÏl§lÏNÐS[åši&êÝ]¦)FpC$¥‘,á”`=$�ꯥKš ØÊËôF‰Huj<¡@¹@ñ�¿s…( Oî&Ñß5æF[a‚ âF¯YlGG|'™ÍvEƒ‘Û­Òr}aâÏhü·–¡~¢õE ¨²¥ÄŠs§)1Vi5{M%,Ë)^S±§'[Íze7œæ¡yL¤ ´v¤HZY ìiO^Ã,9‚®2:Èu­žæÌ©õ{µLŒ™¬–°¢Vï§œ2…õnðæ•wæÓ…Ù¶Ä(™Ùv¤“ØqK#%+°ôç>2À˜ß5´ã2G‰ByVR«�Ú0¿%÷ÁÈ6<´+„«ÐÑÿ"Ý>ÎÍH4õîÓ5nµpÖôÂB�¥ÃØ<2¤,ž,£ö¶9y›Ê�p.Ô¯´zT”ù�Ø8u]OÐÒ§§V/•Äú®ãÙBç�ù#ñ`ò,Z¦ÆEt²VâÚV+I‹sHµìA©MÖl¦Bï Ë;I×AÂËØkH$ð�¹½óʨ`MW$çî³"k}A¹hÑ:‰äqBqZ½'‘Ú¸Lº†jFÕB¬�ÒTË––2{@¥ås�…{¢5m×êÆÑƒ[û¶Ž²ØÖ±µ¼Í%€d†E†p×*us Ðt¥öZ„eÍ­jy+1�W²æƒoA 50KA²˜1»ž˜\Ð;Ö*OfkÜ6Îe&ÐVLJèe‰pZ¸o±ÞÓ´ãØšÞÄ»ær° 7ÆÖ…f` �`<Èã2}˜N‹"X22  N“«Og½Œ�ê0‘4ÁJFX£g1¤‹¼^=Õz–çÉ~ñ+€Þ±^úmzŽÚª3Z w( ô™>@%-ºU†kÏ’xóä˜~r̤Åid; "Hb …%&NÑ�Ooíû§_=ŽŽˆ" §X”Zý§ôS¡ˆh ëËšëY�æj~ºµ‹pcÉ>µèí•÷§¾•\ó;„>¸êƒ5�–?ó<šM,OhÈò„2ѹ «ƒ®›§y½&täË2²NÈÌ­ÓlÔO…¸1A¡žÕ-¬KLi Ô_Qléµ:@¦Þ¶j±À£f)À¦‚]b•;n“±Â†¯×*·l/È>CQ$Þi}V ^O[i0YXˆæ6³ƾC«¼{˜ có¤ƒ(ƒ²ÖI¤mEKkÞo<ÏDÔG3¶Ú·]d6A ÊÄÅZä D¤H<%õlyõš‰}5ïíG;2¹±9¼'ÀÂ)’iƒjž¾S:­õ/pt–Oƒ Zs‚)×\šMú>�Ö=Fß^§ÑÂT ½C×C‰Zéiåè¿á‰B“®.i}M¦¨1aÊ·2kù]dýÄvN뀋óä4Z¢tž¤10бl4ñMÑ´²”¬@çGX�W¸ÅŽ4Úƒ°ãXC«�£ùäéèL™|G\ªbeh“YãhÙéd]<çXßÕÊ3,eþ'ð0°*�Õ½œ!˜UCNö1÷‚¶þ×ÀAü¶"�Ô…³¾“¥=;ø¡/šEXFq4Y|ÐRSDá©jÉÚ¶6gÔŽBeì^j»�,„[2ˆ͜�±u™§&óï_H»ü%´¤�ò\ñ�ؼÁÖò­5—o£½¼«óí´˜oµÉ¼Û6ó-6šwÙjÞe³y×íæ[m8ïºå|ëMç¶�wÙx6x@JŸSï´ù|«íç]6 wß‚¾å&ô­¶¡¿°]�U å,¼¬b¯£±ÝÂKØ�HlOåõ]·¢wÝŒ¾…vôÎÒ;oIº)m¸äDKª ÷.1‹ÜZšÒ’åŠÐuuSz×mé�4¦—\ò’þôÍ·¦·ûxE‡úšÓï%aô¨wÕž¾Õõ.[ÔhRg™ nß�Ð,háyˆ Ù·Ž›½ž&õ­´©o»Q}­êÝ6«wÚ®ÞIÃz‘]Ú·þXË:cµ‰Žä2 )2ç­3¡e Ö aÏ,”KûÖ×ß²ž�âêÎõµ7­·{EïúúÚÖ³B¯î^_{ãz‘u]Ò¿þDëZ�¾²ÍbÙÆ.¨—Ì"Ö+¼âlË»´}½­ë€]ÙÁ¾Îæõ–'_Õþ®öõ6Éù§ºØ×ÕÀž¦ÿ‚>ö?ßÂÞîâu²¿¸‰½´ž«zÙ±2 1òSñ‚46haî0~¶ª¬€h¹²…½túkîd¬‰½˜özÙWµ±§Yo¤›ý‘Fö"(^k?û ZbV…çDÍå ÉôvçßµÉW�½ÑzxûÆ‚ëêj_ÞÐ^,y'}í[ïlßbo{—Ýí[îoïªÃ}s=n“bÉ ,Ô�–…s6>ø6�ÿ¶zïÞùzÜàë…¬$¤•_0„/ ¨ûﵿ_?Ù<¿¿Ÿ„çýÕóõñ³ç›ûûAè°þaüü—2¾‹_ #8X.}Jˆ²�Û§X‰BOYþ�÷v\æ_xoÿÀ;T6ôM³§ET¥�¡coíÓ‘dÊt¶µŠ"lI2$ÄGÊ$é¶$gÿž»6¢^FÃeeeô…?à8‰_Ã?.Ò|Ý'ÀÝ,Ôá|4½i°ÜÐH:(Ž90“€¨–�TvP˜} þ2�eq�mØHqˆ0¬ÙmŽò½ ÎÙÊeÍð¼B>»Õlíò�îÀ'í?ÒŒ – p³îpqüÁ"¢)ì…!û�l[£ËÀØS™d²-ô õSÒ~l‚„Y¥W€@9%Ù€":ñÈ®G ß³‘’ å0´˜ûpqü�Œ>²„#fåFVÂ\Ñ‚µhG��ĵ*cPj!:èXƒUr�vÊ‘e Y÷T"¼³Çó©g2–I;"ßÄ:=ê­´;ˆ^è­3/Ä;\¨êHíÄ8²õȪ{aÊÉœÝ!† a5*áÕ<××z=(Å�ßÂ@BÐÔÐõ)µÒ¸ZJѬŸRðÛjÙ]5ü²¾xRPe”x¿ÀR@rüAÌ ¿¡J@Il½fÈ4Ë}8]²6~'‹<n,*NJá|kÅc–1kUÂÏM*4&aH²­´Ý¬Y�D$d‘qkJ ÑÕãë�ï/0—¤/djÅi2°„Z¨ÅÒ ùrzϦ‹T|2j!ñáâøCã£öøŒ1mÜUn2so€SðªÀ"¦yæìM°û­væÕô€.¬éb}‚BD÷±ÌÝ RH0A†Ä_$D aÌŽ/P9Qiï,ÜáâøC¨r,[Cå£/ª?ÁIf†¬EXÔA¢þu‰Û •ðr‚g¥É’J¨ïÛ@¿¨÷‹4“ùU­œ1 Ý+¼NŽeȳAú hIèåfÄ^,úÀ3KIxB ÂÊc!öáâøÝ§¿ˆlzïk:øý`EßÃßáe²r±gï³âSƘ ^éy“`‡óÑ»í÷ÇÜùìõOä7(DmóñPõÉ0ÅQ¨A_,p³[x¸8þ’µ¢% H67Éö4šÉ<ø¶>±{xOÀòºÅü‡‹ãO,e>ºbUKñ öM3ì}2~"z¶rú"“ަÙMEÕ½?Y±‚ÕòT¨šYg©Ç_¢¼òkÛ·DÞ`ðÝûŒŒ\,Òx<û»1­·.Ž¿«ñŠ¥8{Ã1Z·ü‹ã4ßyòü#\#GäV ÑÇ—háêĵýºx%ÿPKÒV1]ñFäMoÎBiimunify-security/assets/ui-app/assets/static/other-root/src_app_core_client_module_ts.250a4b78aeecb6ae.jsUT ëÆ«jëÆ«jux è‡Õ<ûsâFÒ¿Vr{èn˜ Þà"WŽg×�ØÞÝ»85HÌZŒ=°½^þ÷ëI �À°ö^ÕgªiýîžžQÏj¡Ï ~à 3Ðö‹>·‡·Ú=¸Ì¼ûÍw¤ëcî•<Ç ´^ws÷ׯ·=�º¡?.ÞÞj¾gö™ëöMÇã}Ó\ý‰c…6ï¾Ö#O•V¹Ò)r©w~’Ô*äiÒ)›˜éûSæXW›�r¥¦ï›Žôƒ‚è>¹,wd±Ö¬V*:ý‹ž]_zNÀÍ@8’سǶ<.(蛟SfÛÅ[Iy1EÙÄu$Ðå÷…4…µôT²xÀ„�Ó0Ÿ|”2°J56 ÚšNÖá2'~É�¼úº‘ÂéÊ¢¤!­¢$íj¹¡Ç�¼û3§‡Áú™š©“Éh˜²€wnµÆ=â…òmÈ<Ë?�Ö÷{Ê=¿£1ûž=úÚlFªF½ÙÌ*Cì¬ ‡!r~ć\ú<«�ubq“™ h55§%%œÑTÛõf}I6«”¼D<íjÛ¨eÅó¨23â!¢›ˆ„xðXo7«ÐêÀc£V©:ñ±µY¯6uââ´j½RÕ÷mìn�>™6óýR’öB3p<į?cáSpA,¸mݰ�ß…vlôœ0à^7˜¥XŒæDê’Ý€†žM}×AQû—¦ß–{ÉÛO`±Àqò‡‹aQ€2?%Xí·ìŸFoßãAèÉB– :¾ØŸ‹„Ë‹Å2ñ脹:ªd¯¸ç|ýºÇ…i‡÷‹Ž®ýZäÔærŒÿ•b‚šê?xö�Ç9„J©¤¾-L0��p ¾G?;B*â{z'=ßež�ÓUüÍü€ÂŒ¤÷gX®4ëCfv‡¡T¾S!ÅœI~_ ¾~åzѹբ‘Ñ…ü ަõŠ>ƒ@ÖtºôJQ(sp‚IO»+SÁ¸…ä§ �§À¹wáhÅ?vø‚f‚0 "Y§²£©À;T1ñ|¦ï4cï\Òäöþ8Wnêi½ÿUê�ZyÉÿæ(×:±·p½f­^./¹žÊ"±ªu% ¸qyÚ•[)o¬¶ÊíMÎX©Õš­È[­ZÆÚØjÔjðh"€Z½® û £�!6V�2´NÐÝËå2xó[Ë ìÛ-£  ­´öqlÅ€È0U�õ 1Ðy¨:keè}À^£n@ï#¶6jÕ†N®ÕÀFÆà€z­¼œ)ü-„tq¨“{x0Ê‚ºTÁ¦Uƒ‘ÇH³]k$Frºp)";º…çÞl?é*\E�ÆþæÍª[p›O@×óÐþËDÕF¹äó rä—†h1šŸÁ3 ¢“¾ †¡­TÙfPuã ˜PW#Ú„%sÌÍ»�óĵÖ�>–LÐuRÉã\Ñå^ðx*Áã]Gáí5!Ý0¸ør¥¿€ËŠqà*‘„I°y�Ó—Üc6 ¼Ç\ü"$pY\Lb…ˆjzÂE…eц?‰µY�Á-rº‰² ©mKY «OÅðøAø6A¯’Æ7AW¹æ=ärQDŸ[çyd�bXÜÒ@QùN,¨J9CkÀp ñm¶˜c8ÉÌWC¿L‡ŽŒêôG1�ÕØÁþ=O™‚aqª2ø™5eÒä¹ ¢”­¢2´ÂF­€�r -ëÆÂR3—ûÍVrGþ,pÞ\9dÛ‘ïäœTImYGF{ƒ*˜ÿ(͵j˜cÏ×G°9‘›µSÑW•²IÒi…ÉÑéP#šis&CWÛëvcÝ}ýºQò¬rÿ+_ðAx§cæLOBÛÖÓzxû|tÎ*�T²D¯xб&”cZûψµŠ‘«úŒí¢×,ûÛ¨èÛ‚7ªg}Àþ8tÏØÃ¦1­"‹»[,·óµ6½ÐíÊ,1ÕHKG]©Ç¬§$曦–Ë0!ù¹öœüZªÄØèØ5rEêÄXgSƳÖX_7s­56Ö‡x@ó¹­mì9!°­¡ãMbÚ@-ñjãÃXØÄT[›mvŸt”¬’“àFrT2Uøú3ÚÄß–µ }�¼…�EßxÍÕp}¸Í‘`&Ür�*‡8–¸©²vZ'_ZÊÌׯØï±Ð”Ço—Ù _ñ ‘½ h¤ \ä‰ð}•0�]÷/ÎONßö�ŽO>¼¿éÞœ^œ÷��Not½¨]hÜ ·IÚ;Á}ó&�KAýÁcŸY!³½Ð@ÖlÓìƒÙ™|ìØÚئ|º‚þµ­àÓP³â_Ж] –�íÄñ.†î2ÒV'w›°l“AdL:•œ¤r€µËn²7»w<ËX>Ä%3J±Zú OŸ>o>}"’0"â3¨h�»~ô!2ø×Ü› “'GQ, Æ*eéñÙT:�éʨ1eS]5¡uE2+ÍowÏ k1SÉ<ϹGøáòùSÀî8Db]§~8ÀíÄ€ã ÅSØq°€Q�€)�g¯qxd �«ÓÈÓÅ)R˜Ñyv”Kï¶eÓÑ£Lún‹Q½Ì?»2'nþÑÕarh¤N®]Þá$ZðÏïÜÞ.¯ÛZ¯G,nÚ~Çh�)ƒ-•�áXœ&ó¬ÔªÒ#Ø8–Åeé¿D•¥@^­‘ì¤EH7BpÀÕù­ç@ŽpÌF `ÿ½ÃTÀIàË)óã‘¥ø¨³ä³)/  RðÐm´8¹í�ÜÌ(ÿ� ÇŽ™€x®…./Í ÁdÁc°Çµ¸H€†RE¦ÂÁD1¤4„·HbšUW_² WýsÖϱ…hgï?\÷¯ÎÏOÏßâ $1�¹å3…#U’Z”ËHzr‚Wtϱc¤q î³8î t ÆIKaú:Nœ4ìR@¼ÕÈ<îæ1öËÁá»—ý«ã뛋«ãUº×ò—Opà=öã ÑzΤŸþPx~ƒŒwäËx¢Æ-èË�•OÈ„=ô-ØMô…Œi@OJ²²Îò1ÞŽˆ²>ßì�¹2{7 hŒÂT;ðuÛŠÔz»ëN"†°6®ïpÌòLjÞˆ¶›¤ªcV¯¸ÎbNå¸mré4¤´ñàœ%ÎÚËkwé”Ù 'à“V൩û|;^‰Iiè¸Ð’ø�=XM°Öï4v‘mòÛœ¼{|È=%3Í�r÷ݥ갓\¤yêpJ‹N§Ö'X9»ÄT‚µX Ë—$„§9Ù`:K-CžäìlÊ7“Ÿä‡H9¤»AQûtqut æzÇÜvwe€-µSÚÀ%ñz¢#CXð].a7‡U>¤g,8ŒOßÉ„žGÁ\=�É(Av>:w>2[XʇȈEKÃG ­¦ þãxÐ|>ŠCe”ýe[”j¡ù$QóQ’öÄ�©P›¦ÞÇÔ"C: }Ú'S*È€~&‡ôy@.pè‰ú°öˆ¯ÑrE®ñùB-+äŸQ¾JÎðù<ˆ\г ¹(—ô†ÓcàýƒÈ%H:�Ú=â�6Jë喝|Û—#Lh°Ðào‡g—ëðï–y‚•l>åvW­žþ”…‚ëøiè<Úv÷ÿ”³?aÓ(HcÇOƒù<¤€°°ãUÀEdO˜7š‡A§P­¸1Õ^`¿ÕëûPí‰Ñx‰ìo˜,¼éE ©¸´` ()‹ÐWu˾c‡ê¶P8`h“N¡T›‹íÕ”½™¬×6…-dYHé{˜È³¼¾ªmÁklW)f±•Fû’hÞº­Ib1̲ *w eøUÚ ˜9�µó TmZVí·ýáÝã’Õ•£7ÈNqï!qGf;^§ðÃPýÅc=M)p\á@p/îCá®þöS„–¨1­…—’ªNéÚííiOm“:2—`‹†Ÿ~…mÁ¢ñ‘Ô)HØÅΧæE£`ÃÙÜc§0´yD>”â4J¸ 'r!»Í�‹#áu£D@uèAy(Qo…†J§!ÙÀìs¤þ\øG4{ý%_|á�‚Q‹Õ¢Ú†l"lŽv+}árK�|ød¸žˆTï ðŒ¡4ÊJ!R퉕þ¶&Š.6¸)âîyä)ØQî§óÜšŒ”å?';eVÌ4Af an­zÒK@eÈ_!´‹8܉ ‚ ã síæù½fèù(ZטÔíçÛ1¤X#YR‡^ >™8bgz2îi¬t(×FKÝÏ1p4íÈÈþ L"h$É{aãN¡‘�ŒYmIq™âﱦâ/¾–ÔQd)tãø’Øw½Š¿ V*Z²ÁX7µú‹,1‚;wò<½3hl‰�tJ|‚´¹Ön´_‚Æ´KJÇj�R7ó8‹–qêÍ`‰øƒÚÊXsåçè=B¬vظ%ƒüÛÁm^±]¶øHÿfRf–P¡oFVüp—ð¿%!)ëœÇ˜�V™øô¿�€Và lǼË?Ïš¾¯¶²ÖÒz»!ýˆä‡iRižyì¾'HÎájgRùW6z/hk¯Ð¶&õ߈‚À¦Lþ¹¹¹{¡ò3ùù­M·w"(ÞR¦"‹¬8>Á.M�—$¿/Ù&/VZé¤'N„*qÛ\7É’=pb“zX„ ÊʺƒJއu¬�”{�U3{iÒR2m6“­F‰ŒÚÎ}§}Iç9Ñê»à0ʃXúÐù¯É\Àªø%Ùc¨šŠZ¡ërÏd¾òà¿÷2uÆXgû Ö™åVS'ác£Ý*ëäVß¶ÚXû [kí& xÕ´âãïX]ÛÂêÔ�X&‹õõ:yU§Ö¡ÿœU1ªu�|AXF£ÚÒÉo‹û±æµÖ¨Aë¯ØÚna…é¿…÷ÿAír»•”ºrÞ½�*¢5�Ì �;Ñ?–K“ÿ ½t‹ª–Nš“Êé$�G;€§óoú=‹>:_0D‚£ÎX`ÂÐahÛÚŒDs†.Hú‘º¿Cvž†œ�¼yç½>¢l:[¦ô·M·\汉áýrïñR½Ž™qí.þCÿ@Ò„)œÐ_ËÀò¨í¿ÐOß“ö4ú_~–yL!ÿ@?þ¯�£ÖR˜¥“ÿæÓ‘„(õ˜OáÿDO¿+þ^BÁGúHñaù"¶¦–�bgêý¹šÿÑ{*ra뢦ç÷†^Wö¿ÓIAغ–ó—¢Ô@Á¸öø~èYh[ÐQ:�$çí©Ÿ‘Ž#Îæ”|¡Ö\‡Ú4´±$f l;õ­o…¬Ì̼o¸¡U¯·ÚK7D>.Ï�ï‰,LM‹µê—ßš·&437§e=±íj£²DëI<ù(ž;'V]Ú øJÝÌî#y@_~ÅÅù(¿(¸È-Ròó¦ËFއóˆÌÃÚ ß\Š@ã·$%è"ç:YîËÏ$Ç•Ü0Ft“�­ %]L× 9B¸u"lî:¡ º•ê7”Û|§»V¹| ä³^5*�›xøÜª´TI´joF;É8|Þã)>­VZ µáÁú$‡ÓS½Èu�,—ÌÇ?Lãp,ž‚*±Äœ åä^ªyÏ@0ÇWWW@æåÅÕM𙧍^*=¾Œãîßœ¸\Œ<1éAóÀ™pfõ�aßãgÊìe(äŽs·I2$¸ÌVs|%“Ô0£¶ƒ(æŸGÔܳa?®øZea´ûÿØËãKƒX�Å8œ~ &}G ©%I_Ç¢¿“ÐçêëjÇ糙lj‚…ˆðÁÁê$Ȇ€Qézö’ì� ÓvêZ^|O,này‹kwÎâÚ�¿ð³Ý.Éb™b`…ˆ<¯1®NÄÃÓ$ÂG_Œ“zF¹tµ–e¯ÖF2ØÛ[Æûÿ,zMîydQã'ÿ¸ê0Á<¯Yd,ï�âÚƒ¾¸×…¬:’bÆä-ºZû4GÝ~•l*FHâ UÕUìЙL˜´|°p}¶ºåy!Ñ•ÿ9o&3Ç<Åá2#êŽp€�o*Ç…˜1ÁûbXÜ+j’áå™àVöôÅ�æ"Ç˾€*b>ªâ£É'ú7 †¸ªãä½î›7sXˈzzrÁY¾y³�DG7•$׸,¯‰(JÁ)×ê:¡XW’*'f ßä4Þ#)D\åôZ+3B«ÓáÄ,�(âvøiÅ]iQq7¶(ZýÞÛþÖ›ÎZËÀÍYmŸ-°4TÈ­‘çyS±vy2ÛÃr:žx°Ír8ö‡6’°œŒüÑÀF–ãÓ©}–Smä¡Õ¸\‘+eè•ÒX3²ÒSîUåùÓq‚I˜Tœh&8à[I ¸¸Áé½Eµ]×»6¤(C97»�î7¦ ãô|].3²VzYÒ@#(;%ZH@]wJfFŠ)ÉU0A�´ Ì£áÛÿ\¤³yº¼Œ³{Yš.›ÿü¦üëßÿÇ?ïÍW‹Ë;ÿøGs‘ /’ÎÉì"[™ÿ.?ä¿i]uõ;íÓ;³Ö²•Ýýæ¯WÙ�ã½~ÿî_ÞEY#þf¼š —I:S?¸{¥>˾9_fÉìÍ�ÙÝ£Å|’,ï4�šw[ñ7Ù?Úÿl­¾ùSö�Î?[É7ñÑb’ ã;÷:w[éæ_Ý»Éâå*›5–ß6õt›§«?ÿ¹óÍ7IþgçOߤùdzX˜üõ›nþç|ÓÿóŸï¤ÿÑéþþ{ú×Nÿî·Íqü^ÿ¢�?öûïæ§Çú§�ô?Ó¿~Óéäÿù�o:ýo›Óhö±yjßö)Ÿ#®ª•µâÖêîU2¾sõéè2Züø~v–¥ó8[~<F“É�¸5»{×N:þÇìŸYæÓ™Ýûfi6)ù&ËÇY­×•4’üw߯ÿHþyé—~Ê÷ƒ¾S¿ïOY1ìì/ù?“ÅÑù¶Þ]^féûÆ,~ßx–eiv§ù$š}µlDóùäc#�ñò´ùuöu³±LQöf5�gËÆÿÛüzùuóÿm¼O–—�Y:»7Ë?Ï’| �wÑd7š_ÿçù�?-ôñ%ã�ù«¾VgWL|v/Ÿhºuäæ;ag–ùÎ|»Ì·ätiú—ÙQüažfËÅ7W‘fqz�F¯Óofi¿LËÓÍŠñ›¿­ÚýN_ýÙ‹õŸýg[ÿÙÕž¨?ûúïýaÃ|¡ÿÓ7¿ï:0RÔØ|Ñëé?G›¯ûmxLÿ½o~s¬ÿêOúÏcó6óð`ûGöï£Í,íû»9É 'q4[ÍÅ•w7¯Á‘û+o~½º3;¦«Ù²ÕÎi÷ª}Úl¶ò;sÚÜÞ¿~3‹Ì(ÍV~yÂ~jŽ ÙR÷§ÂŲ[š$vxðÓÝO­Q<‰—±´a]sF} ’�D$£mJ²Ôq aÊOêMÍ–ÏW“Éãá0^,ÄñÃñæ Å–Óð–>2Ô(Û’êXÏ;-¡¯>Ìó›!ÎmÜØl ¹ãÍŸýAþÂiú.~�~7ÉEOù&YRÆ­‚ C&"_ñ‡l$¾K>>°žôÓœ‰}nsþ¯U¤(3™‰w¢¾™›Ki׎„ó‡§{£õ½LäûZãÜðòvÙOÕJo !ü,÷¯cÐuÊ_˜Åj‡xÊCØjÆ_ä�©‰ƒdñb™KèçY: ¶.�ó<³2ÿ3û°2á™o7óþ1KÞ$³hrøƒ@éã‘j„ �0\K™'öG¹ÞGa÷»m$z²~¸©ÿÓÌ•»Féƒk9­åûÏ›U}€¶–ô‹a®R¾Nÿ&°¯ôáY*Ùæö,‡„Zä¬ÃZY8Zhº*•ù¿Z/ñe:tÒç­_"ž7\QÅ[å•3¦>ø½&Ê6�U»Ñ›XþFDWºl®��-ư©fÔ“œý½Kâ÷Ï“‰GôÚ7À.Y‹a˜´)vÆq�ó7/âÙèy4YÄgé"Y&ïbY²Á[ˆd+×� Ý=`›Ãåþ†#Ú§ÖG�æ§O­h™ÛŃ•5YX1[È›ŠÖÆFÂHIJ´N’™¨$w‘fÑ´-|M噜lS½ëSk�kä9'½E¹>v¿‹³�O£�âóxŸl®ªK{@ w˜Ïkœd%Ö@FÚ‡‰ÐA¹E,3µe”-K`Ç̸MÒƒ—Z$§Ú<QþÆRÊټǪ7`ía)%€†9)z@5T@ê[¹X•^¦YX´ å$š£# ãã|øåe’‰Óë 2˜Æòr•-Ê6*€CöÔ-X&Óø<™ ãï´lÈ‘Ø âDÇxøU5›ãR͆œWä¬1~Êm&m.udæXn*áòraê1Œ›ñÈk 9ú´þÁJ¼z}~ŠßçÒóßàÑÄîw|¶.ù±e>û–?lÙÊ�é*.»à" ÛÉïãѬt$ËS9^ÝV*ãâãbO•§f˜¥³ÄIU�ÍW¿}ˆÚ†þ´[#]�råvõÁõÄõíKõ­ðÐE:»˜gñ4ñ*Ú¦§=…qˆi6nˆs[å;‘MÒ7ÉP¼[Ý›¸$ùŒajjªóh;Ñ®á™ú†¬k”dñp�¦‰S-yª¿~¬¾n¬Ÿ™Oâ…Ój9S_àð†5åÔãÔ™[|Ûüzv´PÈã¥Bíæ±û÷\mnªÚ/–æ÷4™å›ô.š¼þ8ÏùH¾ Õ2·K{1o|a¿>Ãh Í bðáDá³ØºÖÊͪã|¶ ŸS“þ{#4Ê_< .ºkz3uï]ïr?Ým]jé·û¹§�CÄ`Y%ÂézÞætÌ~‰ùiÙn¤b¿£ÙÁ8K§T1ŠõçËô“B2&éðm<:Sá:ŠàÅüuªþõ*E“Ó«a:U‘g“h_¦“‘Ï­S%´€³i|Œ°fÅŒÓÙ8ɦ¯ãžèƒ„uôX=–‘ñÆ16AwØxqvÞ>©Âê¸Ï˜d&I ¼|zÉF³ã×xš6˦$j£È¥ ¥ ®MNì¸]´ÈawÉþ„ bjjÀf |Ã] dzÐþ‘=š†á8!ŇNÔíõ“3�8r~ùóÓ3Ÿ¬l±2/¤«å m­•sfþón»„\¬ÐÉ@^ÚK(™ÝZ2%!%î“ù/q¶È—òuót#M=à†1ÃŒàìhÛÑ«íŒ6ŸU™@ñb˜%s5œ/ ÷ƒ…¬ô��tû@«]ÜÌ.‡S�) ‘k„ßDûí‘ñŽ]ï•CGˆØ8B�‡ª �Ù÷ [0™Õö¶Î{­¿é"ÒŒØs!ÚåÛy.TÄê©AWW í¯å ý”ÚÅÛ?f;Œ²Î:"àfð`.û˜ÙëöýóóïW]FƒIüZ)�¹†¯ã†ƒ|È¥Ûåeh–›/FPÏÛ©�ƒöß°ù³œC{½Œ‰Xí ùò£†ù ?®–å£¢×¥ÊØ¹è©sÂZd©A0a+—†XÊ�¼ëCFºVìýI 7ŠÇÑj²üN™šÉìÍéU:·!ÃIZ‚KÇ®H bqʽ7�}’�L7è>lºS±{ÉÉ=Évî c5¾Ö£æ>K—É8F–T’ùãÑ(v»W¶ P�‹ w5ä¡qeNoO±œ/öôTgT¶ÒS€ÿĨb{ÆáWÜjZ‰:ƒcº×|}iùdÛwX�¹ž�âÙ(Ö¥/ö^pCAAÖš¥�Í)uËWt¼^Ñ´] iÿnå¸x÷ô¹,f˜˜/ê¶SÉ”Ú-Ú@ÈšºœÄ@°¶à¤}ƒdx€‡÷ߎ¹~Ãà,)\ã�)£}`¥¦ý:¹´´¢^—Óæ�nÊé�¯Êé!îÊ©Ž‡ßëÎL­"ÅùĘX ¦‰'&²""£m¿Ó«q2YÆÙw_Èqi¤ ¦9�fe8i£ì<:ÆYWuY”ÆrÒVðYõȳ<‹d„ÛµC‘fBÐŽcrC_?1ÔJ8�y%òª"–ùÎà}×ë5•¡¹üÕ5.$|–@× Ï ½F GÎ> :Ýu9Õ¨pÎ/Äz«ÙéÏOoŒLóWß;EÌü …~ìô–Òéµ°S墟&³7çiN WË8ZÈ]‚§ðx´4Âá¶aU}8°_›ƒÆTÏqP ŒÇ™�às}$xlb3r?ûxzõø©xŽhYáÛ[R&Üãgåö¯£xžA‡¶¯©½IòNÍI 1‡‡ñ¸„:6þÔÇÏË×o ©oF§Š#c[ ú·�M%NæfanC´ô8¥ècxt’Xa•îûø¥gˆÁæýŽÍÐC¼òì'¢Q,Ê ñc……à]Ô»ð_¶g„õœN¶·ö§ Eõ¶%þx|î™#¢ˆ~ £rÄès6ºú‹7ïíy?8] k…3úyÇ!8Š«‡û5dƒIf¥^ÈÿD¯Œ‘‰lÃÁ_Àœzóÿö¼™§×à‰<{°Å<¾{,ÝÙž#½;„mô¶'@Òý{lUÛDúÝwži0Ž„¨W1I5�,a8#é±cCQ¨ÊF|'KIÚ4+`yšÚ¾“y>°Vä tw´úÔÔ¹Ð`ÕØ2ëG5wÃ�„I~´ÿ,ÌÏÒ–¦$Y"°uÅŠg5Äí6¯úÍ¢ é’Çî¹é‰W¿À\l31YÎ`@/0@º7øîÏÞò]]'Ͷ¾“%'’“íKjÈC–s8„‘£ aôÛ-˜ªÔ5t=ÚÞÔ™ì ¬‹‘8ý�,:1³™&‰³ß,XšøfTÔ†5µ,.ñm+�ßÉ2 ù88‘!6ïÿïpŽGn8Òt6Íw²ÐâYgOþØY 1…„0m5ù'O‚¼ÙhT'‰þ„ÕAdž«Pi'â_Àì•Ëì‰,¯]nÏž–zQ î/CÛæöp/­ QcÔVZC»ß®ü»Ç rcÌ»iX¤[ç–­�¥3³s y©†�,FL"ËT¢õ‰,Zñtð¶!��,¸³*fqH�Ѭl1á¦o$ç“_‚öÐrK£IaÈ?QŸÕx²<2t‡&Ânî€loyh o¼ù ñ¤Í�ô}"J¿:îú <¦ß&ŠHR³æx‹XžÊF ³Ã¤¸n3�¬o£µx²Y!Ñ>ÔÝ{*3‚~Ù›å+‹ál,Ã�úSùVhóù!ÈSŸù>ØÞlMÏDe¦ à.Qãpª†)Å¡x£$ÚœÔ3ÙÄDãH»@’ÕÃ"[³ïGA…ùxó~YGϼ�%ˆ*µ�Ä1 ·â¹(@»]¶žø¤¿=œxñÈpäªÇÄËÖEbu =[+&õ\¼Á]T\‘å *+–‚!Êw— ]’mÕÁKÍS/Ð F½Ao¤È5ÐÒÞž| Û&ßTo‘#ïM>Äßd íQb˜«ÇDˆ­‹? v™˜h)¸r¤?†ÒÚ}QÂþo²„øÎbÛøû›G,¥o»öèßd”®S=Ù>óf™Gr�ŒbFÑâßdè�û�ôÛdey1<ÀÓ ªüßd7Œ´óÐ�Û)Ëw†™0eøo²2ÎϨÓ<|ô0ƒ{‰’^¥Î‡‘/I;ê�!ÕpµŒ�ʦ;/Î;DiÚEEYœØ1[�» DǤÌ�Ãñýíµ“ÈúƒÙíßd4�Q¯ÃIüGz8Ù¬".U3„z@6ƒ<'�`5*:–‰©±e¤§ñˆí³ZÉ÷²ÞŽÞ¤q‚T¨!|×ÀZÄèSÉ2‘Ó›+êþÞwÚLÝÔø{ùT‘$£aË Y|�lïB¹~b†“E†øùð ™¹Cþ ‘ÄY¯†�Yyˆn´4ëPzÈ ™løVÁJ<^ nJ„™u Äp Äxù:Ü­Q6oì!@ 56ÛWfG©P”²ß……™è —/dáÀЧf^Pš|÷ø™l»[þS¦w´�¸&®®ïÊ–ˆ‘ãÈË!¨‡e²{�À[n#ó?E½£‹�.ÜFößåõ#y°Çd½“çy£n¸Íoþ.ë AEk�¨�|@3ÎôTÊÐÕ@>Lq©Y u›wÞcÓ³† ‰p@v�rG °¿Ë:'·‹³—¸R0ä©} ‹ÂÞ>7‘ÚY¤×å3aHÑß}�3j\x ©ú»¬LUuhNCàWõ  Cô9^½ ËÞÄǼ”mpÓÙ{d,R¼QF…@/ë†á¼”ùʆcX4¾á„}¾‰Cy)ƒd„ùÜc»„Ê®"â—²0Žâ °NY¼2‚NèBåPË"7iÛ‡ñRVgáH,ÀÓöN4u¥ì¿”ýC°…d.° òåâD·yì•LÜp­ÈmŒàOµ…¯ä€ä•(ÁòRÏ ¡Ý€-D†á…î‡4½ÕIZ¯dW»#ê‰m½UjÁ-ä±én­ð•l¼qxB)M¯d¥ÉXa6øÞfjÜ�»?€-;áKA^Žza[%k¼’­;~áxP5,^VÌù^¶7wVVÃÎŒ¦p&Ãà_Ñ!Nd²‰'ÝÙ2è+Yfá¶ñ8k g!K1v¨$ÄŒ›ÕvjPYº1êÆâf™²Œ+]&9)ÁñJ–kÂ,ˆ…¿Iíx%kŸ,ˆ@_\9ÔsPd³ƒ—e¬ô~£3mÛ‚¯d SÙŒ¯±ˆdñ=bŸl¡çòƒ,¾QL"&8æš8ú Êøí²Ž—�¸tÔc²ë( ƒ•Ø«âpæª÷ÈZœÞö eµ[ˆŠ €Á¸Õp²€Âá¸X€“ôEúAfül§ˆ1·xÿƒl•£1�‘úý2E¹N\Šê1™#!�™Ç”¾õƒ|Ï<´�^?0÷£¿e&ê™xo÷ÓÙxˆÑÔ›å ÈÊ ëM?“uàRo::�e†ç_r‡ø6÷<“/)®·­­šÄü¶ê¶;}Æ\ÇïwžÉZ7« D"wÆÛƒêy&ûŠpMˆ ¹ÑŠ3™_°½¶"ÿdC2Ìë°wÆ›1 ª!p‹qÒS–õÙ ¸†a6Aé·É¼» Âc\ ƒ*�øLVßÐÀÿǢ`\aüZ3LCÈI<“u?±Vœþ¼Ç^WOÖÀø�‡ÈŠÓx{ˆÝ» ü_¾¸œ½¶ùÓvÇO2¾€µt¢·«!äˆ(�wE{J8ÎÍþÿ$Çpˆl[ÓûIŸÇk·‡=,ž<™<—’jóÎeqG<îðb ¢ôàd³ �‡Ed!Kâ6ôøÆy¨k@òøôÞ𹈲u…«¢ ö\¦yDÝa0çrJËT#<¹°ž¼ì8 ŠQ‡L,gã=ÏLÜÈæs90Õ1Üt·/ñ\IE áö“ßj’“N‚�,æÄÀÈVÙÐçêÝø‚¸ú¡äÉ ¥Ê^Vô `q��_þܧ‹´…å,Â^`5^‡%±v6f˹ÌÀ‘™¸�ÃsÙ]ÇÝD˜›AÕ"ËH[¹ò[.‡nó�îvÙB�‰ÒÇ+<’`L$sõn"ïFh¨,ÿ\ÄxÄìØÔþ\NXá8-\9ó„'‡ò¬+Ož÷Z–$iµ(9î8%iO겘Ønûºn«åš'¬±XNÔ5Ø‚<¾ºÏö2$VIÓòkYàá¥Ù$ ¾–MH$ $ ¢^©!d‰Âï fù Éײ�ÀåpÃn£ö¿–mQÜH– Ó‡êK”�¡©CâRÔÛd�æ )QV´æµ,/ÐZÂÇô’eOÚÀ|¯eéÀ&ÏT­×2çèI1ߟeÍSÜØÂÏ2Aa> *‹~.ú‹ XQÖ4_R ±C\ƒ„úŽŸòêBž  mÐòKæf"V±Aäÿ/2®‹b_áVò/¾zk»Uñ"sÙg!Á¿È€ªy ‚B@ßʼÆ6©ð(‹ÂÔP ˆƒ 3søÑöU'“éj–Œ?êZÁ—‘joz¿‹g%mNIy�{0K²r+� mü—iO4[Mqöãø™~ã§V2&£Ò—£B„À¦b`0Ü@oÖ4~ž¥r÷©Ž™Í8ÿ�ùõëÔ··æ‰ešÿ>]æ¿\±â,@7i¼ŒÞÅ?Äï_xW�7ËO!ulj“É–8«ø�¨¶£›sºŠ«Eœ¹[#ùûÂ}DñÀ<ž} u‡bF£Ñ‹ùëô»I4|+njyó6ÊSWÒé$†¸>Âk"–ÇÏW1øøØn®§]QÓÀµwHdGEvd8T_whIÓ×9˱ LCéß÷¾›¾õ×dô&–õ¯ oÖã.£d²&x�Y1«w¦Ó(‘=^eicd+Ÿ|�üãÅÜóAñ,Wi=ïGûî!]@¾‚d<޳œSœë¡|}·ª³÷²0I�%� ‡i¼}„?’mâtјf)n D;Mp-Ýši!3°÷š©iŽ€ G¯¶Ó'À�ˆË  B”ÄHÇŽëŸh«#Y¨F{�‡¥f ¦hÁbûhP8áPZ7wÍÃ2ÊnœÖšTÃvÏøú~°Æ¤M�u“¿¢«C¹ç¸Ë–¾GFQI;>FÇú½À ÌWÒúŽq›|Òáâ[M&L³TêÉnÚHþd¡�¾Î•À@ ΈyÑdô6k&û.Î’eÐaJWÑû~WQñëi4ŸÇ#—®‰×½S®‹×4~\,â!'%ä,houÙ4ÚßÔÍ}_¥£|’Š-N (i:�Îãy”åWvôk”Í’Ù›r‡¼©ÌDûèL�+ðÕ› †lD8žC/�ًЙ$„f¡lì�WB¬.ÐB;½Ë^çP¥Y'ª¢w�‚Ïwö¤òœ%sÃ^¦9:_=VZêiu, gd²ñ«¦`B· hlh‘5ÕÕýˆß'‹ØCʤ´KÚªJ�¾–K!·‚ì¾H²Ìܯtœ^`ç�:�iÏû‰Û ��Aì7 ‘ô"J¥ŸíÍ@&ÔŠÈ·¬©�+ldüÊ1G‚r[ Í^LÜF•‡i«ùÑüÎhÇÑP�ù…ûú†=º¥®ëEþ$/<�Ë&*–dãó²›ü{�C{Ä-\±â1Ähx jE„oœöˆódÖ\Ãó^8ŠzsVŠ<¹K–ë¸Jü"JWjìÚ�økm’ èl}ÒÁ$Ö$·cÉÝ#¸¦à>ä/µXºó¥~ˆD%Ø OqçVIû·ƒì|îúˆ-‚¤p¡À$nüÐQ³Àu<ÜÉ΃x·¸ûÇlY•#Âöe›nb¥BOº–ìE"‰ã¼ø­T —À0(]1ç&DÜmGÑ,/ !«)«_wŒj„S żT¼VŽxô8Eí¾I††(A:*(xÿ0 !´Å \çdn¶ò"ß%Dd ‘&èr«ÅN¨Oµôb8Ÿ[ïßfyî´TÊ÷]wPÊj—DÁí…çK@n¸ìJÒ‡ˆ[üîh¿ÍYzˆ'†š ׂLôÿ¨6,jš}®KbÒ19§îöO‰ÄCW pq4¢šì$é @– Æ>'¤g‡¶Àöº�WÑ»lˆDÇ¡Ôw…@VÊV7Q"!žÎåùÎŽ‚?sgZÄ^„ô#•[sx¼*˜Ï·Ë‡-û}Í*È窲 ûSGxCŒo—ˆ„ú‘�wùá£c>E&ÁÖñ{‚»‰’ÓöPôµD �54ñ¹Ï1èŠyÀ+~&¸ž�ÇÂÏu0tÇâ¶)Æ!¸U `k/wÐC88Œo ”oæg%©bÇã(™¨,¡çñrxé‰<"„Ä#´P”:^Í!MGHï JÔ`s'±h[�y»*Ñ"ï„È-’$­ªÃjý•%†H‘ˆ 0ÔE¦< `@ÎKT¨RJ¹Œ£å4ƒF±D)Aô˜L*ø<ë�Rpý²‰/ϼ 9(„‡Ei&]T “îza[†¡?Ü ñ%¸B#—Éb™¾É"±�IGPúx&3 õ š¥‹Ó’b „Ûœ€«„ŽxÛ]Íb¶g4„S6pÕjÎ,¦t‘Ž/"@âÉØ-ž�¦àÀ" ÅeK^s|ìñȆ".Sßâá†tÐ2mÃ']²[xÖÄWClà�H?''ˆ!γÊF 2¯r‡Y]eO<ßó½?žŸ?{Bä{Uƒ{‰ÎŒs?æŒ\´­2H˜ >Ž|yQBvƒqÐ�·&¤m:*À’rG¤ÆÛËå±Ó‡ùÀå X{½Ú‹¨—¿6 »¼ól×"h8‰£ÙjîB&3m¯JÌMK¬¦ZmÁÂlƒxÿFF¤dˆ>òÞG° v£…Ó!~n xMìûø))ëXEH‡Û~ÅýÐäßáØ†GȘw(ü(ñÔFÆÍßUµÇ@ÇÚùüFIâ{7Rí•“ª-øÙÍyÍm¦ÙFÓ­+ôè Ó¹-L§b´„+_£ Kª#^mÿ ï0š<.ñ0æõù®îS+U�*™õ­¡SN’Ž\*P)3–B`P<ÚÀs×Ëq#�wF�ç¯ÏZ�óóï[�³ó¿½xõøŒXTÓˆc žŠ—ôdŒ÷âéù%¨0?ÆŒtu’h\GÀÌ1•“ŽZŒ÷¡õwÛ0ͽƒ�rQY)w¾€ƒˆËR× {ìÂ&Ø©‰ÄO8i^º’öGá1nÕ MsaËø¾þÁ©!ûr^XÎþ\þz0‹pÅX1ìÅ<š^\FÓ°Œ ròýv0Dø6k¹ìÐ.±(%NíD8ƒÏ;Àë²Ä©Åg+AfªMŸx¸w¾üênxâºPUéBż*>¬û–æÐñ€ÅTž�^iÃÇ®¹¦ ®¦* ÛÛ…Õ”ßG¡N@‹àVú²m÷Ó´¹·‡k¿'ðÎ úð åË»±g±”Oˆ.Ú…¢në;P O�óˆmã[]¡E’nèœéoöŒpuÒÅ2"cr¥ÉFKãÉ«sâ›l� ËiY,OIÕŽ AɇšæTÛéDËq”KC�óä2¥cÎËáÁ6’¹#v u9䯸°1ŒA+÷qµ™Q©w£7 ßM{Е*&„¸Së€t‚LÑ 0\usè×ÇÏ…pu£S�­Ê§Æ³Õé•nžä©¨lµØp¶ë‹�SuöT¡ñx6ŠÔ»rñ8IJJÎäVH¾-´xÄ9¹#ãš©8´ �Ú€9ЯØVNÇ5 Vøm1f¾MoÒtä‹„…‰[°hû–”«nºOÅ4%+YYÞI'ÔÏÓ’V/{ÎúSk5W'^Ì–qö®¤]Wl1UDÔTŽ9¿æ1B0£iä¸XFËUqŒW‹Õ $§ž£½ö.6Û“’˸J›IЧ—©šo¶Ð>‰i–9è*“‹Å*^§Ý±5XðæèG\¯yûV»ïžxº V@`|•�®÷vuË��ãbkiÞùì*ÙOø{á á\ÑuŒ údJ„²«©ÒN2Ãá+ R1ÌVò~¢ŽN�Z¨ÛµÝ$É›0¸rÌ=ýɰ¿º[è| ãËt2’›ðÖH×^]¼ü„¸¢F^¨l \{?× ýw«å2�ù{·Õ8UÍ'ñ2¶öà yºXUÊÂÔiߘÐv´w“rÏ S”ˆ‚CfÍžz�^)K^ ¹"¦öµ-PäÛøc)î£ú ×tóâ ¡÷ÇS>ý¼ñIù´›8pnÐÐÚ�•ÓFóëôÎì¨huÛºÒàH=R �òãf�ËÀ[ö“ü�ãš'`4‚WœÐ'3Ü_¹›_ð,Z\úo@…–El_ê¡þúÞ‹ZÛÃëa.¦j|Ôí¡×ÛbºÇ¥²¿næ—`mïŽo ì0Œ vЖÿ²¬ôà§ug-´ÙHI"DUI c)ZüTQ�§#\@IcZl#˜¹ÒŽk=îN2‰‘PÛ@tC¸I]Γí¡�×( ÛÅ�Põöx%“ÅéU”¿ý]ÎU_¥³d©0ýhh]¸oÒ×é­¢,š-“™o¢©¬Þþ�y˜qùø´v˜Önº]ãËdQ«¤Ü±R„F5ƤcVÌÕ¸.ÏãY.U_&ÓDÖjÊ�Žéî)BPXŒ•ȈX`Œ°ÔU~_‚YfPéÕŠo;à)3è]4ƹ-eÃKu4_ÿ!šÊd߆A�pPï«Ê­Šs——D•ŽDs:¼ˆ+ *ͯ± a£ÍFt¾¦ežå9ò.ö¦Ii°°%›„s�‹mÕñ-9©-6üª|<zb×q\¾¹–œ—üè^w«©|øú«À�XF9‹œ°Å]¹ÜøÞŠø»kúó)%˜Û:~VgÉ#‚Ù™!%d™”»ˑߟx¶¼HWÎ]ûþñ«ÆýF0Q”#—ÇžÀuÆUA‚£kTó<^†ÈƽDº|÷vc­|Œ³x!W/¬ Ë×:‚Þ †Y/¬1ÊÊU›ª%3Ím×ø~@QqŽº—ë»�‘¡éI’ߨ€r0"º\·Ž¤]¢7qùœ0Á#<¡æž |‹áÏüTÐÚ×R¯Yèí÷¦Fqo†HbÁ™W`¼§!rÀ ò�»ÌB꨾Ÿí¿üfD5å/óÑÞÈâé–‡ŠX+ˆIÍRá¹ôK†žð(ì9r—H¦’:9Ø‚�‰eðýLÍ�&q´ˆÏFJ÷BÎ Ùzß\¶ÑNŠŸžÞ»$~ï1qjÃí”`L#FÎ{ #Î 1‘Šø~âí÷Ô¡�“ÉÒ\·|_ï)&-_3Œ¶‚,ˆ'*+5/Ìòó, M!¾> ek[3Œ“wñèi>óçY*Kqqò»Uäìw¶^þZޝùÕÅcšI(s®\†v*éù6s¾�-w=}.@ñ&·½N†NaŽ\ĸyÜH²Ü-;j(ðÞ&ƒ×\ ™ïÜ †Ù,¨s×s­L�æF$ó$WÝ=ó¯jé¥Mš³h)k¥c�úÄX`•Ëê1O7ξ? ´v†zîlv¡OÀAb_jCn5ø?ñPFpôMrŒ¶¥Ÿ&ùy”@Q®Õ/%ÉžiÜäj\ÆN÷5Æ‘uþHs§CZFƒ…',„6cšÆÔ3©·½2b;Yùm¤n°íL}ÑP;�Óõ^G+µÁˆ {ƒ�2‡ñ r¤ÌOæHC5‰|Ëéþª\ôòßÙhi•à“f–åF“õ±îô~ _0ÉöæzEàùõ aJ |ÞgY{Ürº,¤èÕ5 ²H�„‡kxÀ™#÷sm^š¼knŒ«ù*{?öh5>ðøªª:©´e¶¨Ùóf`Üf~„FZ¹¡å=Çðˆ¢RõÍ|�Æ�4–÷s6a YœÅëôi<ŽVŸ¯#CâíyÑ%T†8 'mƒQ¢J6¡Î‚§Ù4W<ò?ÿ–¥+_³ äH ´4bEa#2ùQ±àWé(gG$³À]E[øõ¬ÁñÀõ .„Ú¥Jƒ ÿZJŸáìè�\oMH¥Œ›WA,¾ü B×»ÕÍ`AU™oþ“3CÄ*ó÷½G,.$ÞÔ»ëäÒyy³Òïl>£mX‚%bpW‡8.£I¸vÀDíà†”&“Ù0�æv×…ò”d:óû"žEƒII‰P+G$èã:#̵ü·@m¼4Xœl–òÔtíÍ=ø>Š—e¹‹Œ¥t×5rSnæ_—)Ç©î6qÚe D[=×A™Ý‹xTÎ31ä"jÙcJ#¹,RÑt©ª‚=58Ë,áùš#܆»¦ÐäIü¸ïßUe¯fÝÎó ŸÎ^ }î]éP¥ì"êDAÏ Iš Šíñ—JÙÉ OÎUrÂëýzoò5“”=‹´þÖ=üÚy´£bßm–"V1Ä…a !VB$¥{° åyÊ[‘ÎâÅò§x±š,‹ G)¥ÙÑb5Ƌŋe<}bSQÒÕ²‘ŽuvŠÖ8ò�¦ùO¢7ñ¢q½‹ƒ8ž™¯?Î㯛£Æo柪oè@¦koc™æ£áX­Æ\3ãÆ2û؈Þ(?ˆfË8›É¥ºu£é#̹A‘“Æ�Í»A™bÇ›‹cÎ'Hõ ¸À¾ GׅŠæ|–£kMãOá¤àqo`[eö¼sxÔ&Ê.ŸXN…oR7ýWuÚÔ4»B¤Ý‚�â:ci–gñjæ ¦iˆHxåÕˆu�ksP—Õø&ÜÛíµÚ¥ø¶b�ž#ÇxëE6þ¨x5‰ôÅršC�ãD# ›M’æÇìç\,äWxâ›Õ€ µ Ê:½`ÍRRBúÃÆ‹W½m‡Ô$íUÈÔJá2:ÁrÔu�û�ÍGŒâJ D¤CÞo¶ã„ m?ÁZŽEðãvÌ3¯ì\Ð /�OÍŸ&%¡ )ÿ¬]‹2D@šoxzÈ´n|¿]عÿÈ,‘§÷ˆ—EŠ ðõ8Z‰ŒtÓ‚wµ@ê3�ÅÕ '‚4hÑ8bØÙ�Y RÔ ¾ ±èˆ4ëk¬d8)‰H'P%6–C¢Ùu^¤Y&‡?žÀ<8¼FoÍéíò�£üñxñ4YPMe†,£áò,Kß%eñM¥Ñ¼ (˜ŸÑ´V|m”Šê±T�ÙµþÄfCZ £Ï3óîÝhWŠÊx¾¼©š•>·gåSSÌD˜»S¬ÑˆiYIj7FìÀTe3ð2×\W¦wPÙCó Çjl—\Gφ åü Æ3ö‘*Ê½Ã»ÅÆ{„a•KGÍp7±oå ¥ž¸Ÿæ¨�q¯Riýª~» ª '²Û*lAùÉü‰J‡¹1ävØsjq‘Êï”;”S¦p…HŸƒÆï- QÔNHË� ²cH%ƒÓÆår9_œÞ¿ÿ&Y^®G¹9xöæÃ½eÍ“\•¹?L³ø¾©ƒ}¿ÛíýýWSy¯§þwÜéuí6þœ95øâ%sQ�>ÑòȾ2Iéç÷•É|/¿Ø#]~}²ÊJŒ±Þ/cÒ¶•¯%¯,i»E8Z³µ©ìÍÊ>P7ŠƒðGåor]± ¸ëͯ“õjšú?Íu%“ XjǪá‡{OHD*ŽrYªÂ�¡æêÕ0Å÷Òì Ðßp2Êîåöç›\ Ü×+÷ñ/–÷«ù|+b�&ùg¹ÀÉ©ó¼ë"[MâÅÑår:ÑþÙI<\>ž�~‰²Dé4.˜S•{z£Ì­«i4±Te�¥#EüÓâè°QÕLU…†]¦ïuÕ#}wËTC9Dú®êˆk—›Ñ®†ªšÄD«k—Él©âm—NµP·‰ê†¨ÛŽ+¼ò!Ïæ x…Ôg+;[ÂsbJwË…±+-÷Ñ¢OPìçËSW‰•x•‰pøÌ¼•so5Æ[V€jI£îCZÒÑC‹|þdïFÃíG…¸jEò=‰��)ºÝ„޵¸1švÞXÔ‘t‹¶â›/¬rµÁ^ÊßµÞke¥¿ˆZøâI>§}@ªú»WTéâr�FÙ¨¼âXõ:ØÕa{{¬ BvÈbl`À#¶t eà$³Ñ‡15“Pá:Æ#ÂG=Íò̃Û3 !Ñ�15²ËW�Ø3"&èAc¨™«4v³GÑG:«Ð~ y1Ù5V§‘øáxïòÂ÷w¤|•êÿWî¾x÷ã�0Éáò¬s»å’ôArdP'bŠaEHÑ j|YwWLJÅ:*D`|¸Ã/‰“’ö<ÀÈœ6©ØM¤¯güàÈ]zÈzypTU²ø½òÂH ý«mþƽÐÏ‘$DK@ùÚÙ>O1œ9(oKÓC«™+u}8TˆGøûÞ`´ 1;E1{‚º®!hÄí X§¹=ËBJÀñU»-} ç`E!DÛ$›»¸HöÐw–8tq¢TG~Ä£ä,JÁµðw†Ë9×Êmã\fžÏ'Ñâò|˜©ÀÓí'ªh{ð’ ŠŠèÝCZu® 2Ÿ‡cǬZÀ�ßá¬å¼°³MyTÀAAŽÆâ…½#ËVt;gªÅG„ÝàŠ.C-hÑ;B@) ¸Á`’° þä~O³/¶µ£äSvå$}ã)ÉÒah¨"çh: BæV¹ƒ@ © Ë^éÒ Ð¨Eó€e©ëÖ7çËt>—ãÆ®ÑÅè½�s°O«%|jM£Éû(‹=@ðW±õg‚$ ¢¦ ÅÑ Ä:QÉ—THð �þZ<:‚LxA–Ò³]D¾ô¸¶_@f9Ž;Ìûn¶@øÞÞ¾Ê"¨^¡$æ®CYÉ„39pÁ©»~5xå0âoÐL¢áÛËhÙ8öc OʬŒ©M¤2J*"Úʽ�ì»ÍGˆóq@…è@p¯"(~„’èNÛƒ”eOd©y.G­Üâ5Ñ’�ð4Ã8ƒG˜:ürL³!¡T!A½®`äBöc5¬¼U., D ¤«ãî#’Éþ!ö†Œ{Àõdœ?ÄlG„¤�õU4–úë'*ÌINáÜO.Ë«€*=û\3ÒÝÌ r]1Ó£ˆ•wy]ß4.¬Äná㬄±#rŽ‰ØŸâõ@¯:³ö§YÑîU¾H祳i©$‰ìî$né²I›�c Ó-?ø7�$Ï´+¡ŽjœùpO‚6ëÁŠxš Þ[î{y${3wtÍ•˜ËµÊ9øHb‘JO"ÿ‘¹‚ÛÄ‹Š7ÒñGª!Û1‡'¥” Ó÷b¤¶G̦= K5¦Þ0dÏmG¿q¸SøœX[ Jì鉶³T7ÀòaéR g¹�\òò~ÆmËÀ?ÜÊÅ6¹ kà`5LÔ’" }Ì[?†÷9` òúc9¾¹ÜcÏ�Ó#£ ÁdHž˜Héé& Ý ¢ÜÑuPŽêß Ý£LÉ^ÌZ} ŽïXÌ5 ½˜„Ò÷Q„xd³ƒ\qæ„Ò¸Ö!ÆY+ƒÆËd¶ú@ðA$ T'‡HŠø#°`¹µàPˆÈÃŽ:À$A˜g¿ÄàD�IŒ_3ºsèWæ1Ìáðš’{‹Swû§D£wº.2«/BÚBØ©£nRy¶’} }Y× ²à£Ê9 ¨’ÓEž"DÛ#úcXŠˆø¢ˆ÷6…z'§È\ £â°4;DŽhwZó('« (Iò¸�)ÇA å�EPþ>J'»åhåeÇÌï8èµPzeÏWK›Å[ªXÍ~�ãï IÍžßÀA²Ï‚h‰h}�¿8ƒÈf¹À=¾fľvêð^DTMó@|z[Ž1\J \âµçhtñ\£LáÝ$˜^Òs ;®VàP_b>kž’‰´�üeH|ÝÇ›5c@»y[ÁuÂL ªÔ³°A2ˆÍ»AÚ÷T#ñì-- ƒˆ+$%M¢ýps$"‰Y}¨ñ·4}3‰´.îk •ÆööKúY@C"ÅáoÐ"‡ ‘ ]|¿½€9o€¬ì!WÃQ5ÁÐo¼ æPŸRÛž¶,…=&§w4Òȶ>Ü|b¯9b”z&gHšeoúà#GÚ£˜ Adú½w™•PF‰tLMr‹}ô§ï^zn'©ì «h“è>ngîØ_Úq:æ�¹\mNU= â:%ÙØæ¸Ü“"$Ë Bäu¥Ã%S b!ê‘]Œª]‹Å¼æ~EyZéøRÜ‘*RÕÅ'+TC#™‘,IŽë"{©G‚֜ޜ5-P†â€ËxÚý ’ÀÓÈicz F”sÊaÀ.U$9BÚ² ¯MãºÞ¡Q(ïò[8º<¡7æ?;>U—f ¿é†ËGÃ�A§4ôx·;,ÛF擦)ƒž-O¯º3|M%b/Ê·dxßÒâÐRà‚#ÓÐÚ ¶ûÑ]B÷B©W¢‰X x 9l¾Œª)úb¬¨®©“[Ò§å'%<¢<…/ >ÃæKp�ÞOŒ ÖfëÄë‡ÔHò!©én–@¨žðŠp*”•½ñD[]–ach´ÝG-)_n/ � d¤Æ !*‡Peî–ŸñöÜ�ó„ 2lã¤eQ�>ŽÙåÑ~wãê4â¨"FÐzÉò’ô·§Î{åÔ1WyxQ›d¨^Húkn´@@py5."�%ç?*ö§� ±Ï(ÛkÀu8–°j›ý_�¡RVjšÅ—§+¯ËæªrT—­²ýQܯ~Hs‘Y�ü› Š›íF£"t‚ íšö‘U:–«…\ ’‹?ææ#å6ªÆ¢<+²Sî°g!/ä¶Ä›©¿2%õêK¾<:Òºc4Èweì)žâ“ÖIT­´à¼˜ýnä ãQ”¯àyšý¼�+²ï�œj/¦¤~a“Õù`ƒQâ‡Øšˆ`R‡aL\©­,%:@ˆ¥)öŽtëê÷³7Y¤zWÓZù„�N—É»>úÇ¿Ø{R0(Ó/ rºK�yœMHÜJ�¢}"Ègz¤øº à÷H·ÆÔÄT¯�Tõ:Zä¼'ßögæIf» Ìb}?Å‹ØÿEˆ»ò‰Ç�²=4¹cáªÅ˜ÕéKP%ÍšÐ@M�ˆbžCƈ¯“Û~7 ºÂ=˲Tî\dL :qEµ&R ôóÁ÷ujBJåJ…t0•Ó•>ÿÓËïä[�û0Ô% ¢Õ25m|h‚ñ®ÀÝÆæÐ³¦j³^ž©¼Éï4ÎU¾h3YÓ5Æø¡í'ú}FŠ˜µÀ•ifc¾0Ê™yÀ><„l~_Åÿqß>Þ´©Ô/fãÔӦʜ±ˆVêOÁ(vÛ÷¦DmÌeq4 ãµ8İ {‰`Ãöç¯YÛàƒZ—–™ ~]™¥…Â3•eum¸�ÖÆæ“h_¦“²nÖ(få°H¾�;n�rD“s©<(Ú®ãvO¶gèz@Êð‹ÉÛ Ð NÁ‡æ2‰AÞžñ¾f¶]ã&èäûx2ßuW­4cþg29ü„—áí\Ð%ãI'‘›%]CNQOßÅíý­±í¢$;ªfO ü-&€(Ï\4"y™~·£j‚:¬]×ùüä²Þ«³WQö¶ÄuŽ�ÓÇÛsÚA)Ѱ‡V™^Zpb7 fïYÌÒ_¢I2²³xžf+û¶ñ-‡ÊHP¬x•ƒ‰˜ÉÏ=1¬é¨ã_o߆�­zGtÆ®"ûáÓksvWN ®F¨"V¿¥Aõxø±4Äb-;YÁ®NX`a£-åÒ`�7“Á.uXÿÑA"m2è†8IœÔëÒªQÍDa+"Á¼>ûªBÕŽMV’>Ïâøñ/Ê„{¿ÃOßa޳ÏíÁx¬L¤alO‹5…Áœñö†ÑXæŠsò¯9zv“Š«:XyUnf‹‚d°»°P»¹X.N¯¢Ñ(—ÓÓ«ñj2y<Æ Ù8  Ëy*aþƒ�6á­èŽè¸…ìÉ=Å >‡½ÔxòâéOzʯÓt²LdßSà´Ñ9êõŽú-û—öý®ú{þ¿Ónþ¿Ó^þ¿Ó~þ¿ÓÓûø7§÷û'Ô¤\¨`Áé4žÉšNy‘öC HhÏa÷ —«Ø�F-å ð.„�c²¸#áÓS@ ·yÙ¯Q6+‹‘A{ªô�ùe4žo¸™ªºœ…4Ov ÛÃк&æ×š8w†¼¯Òµc¢Q’¾LœÑ=�ôÎìhùq·®Þ_&ù­6ïEÁ=`<—VÛlé~.§`ãp·LÅGY:¯uÀtyg§pÑHìö—ÉoÆ]»‹çÃtîâ|°�“tMNÀŠÙ­aÚ¬X8¡jppÜl½ÉÒ•Ý«�*ßíõ6¨%béœ/­rá2c+:DÃ+ßóu>‚¥‹Rkx߃U/I‡oãÑYš-eYˆx+;xXU¯¾£îrFå`Ïu™½2CÕ•›+,-yÏKýI_òï#ŽtöÊ"޲áåOñb5‘_C"4‚«¯¸Špšm¯;¼•ïª#J9¤¯žQᆋ±O ~Gßx Tzé©ÎÊOΟ£"ìá/ØÖ3¨ê5uÿUˆfž…ªWÌÓ¥îcåGpÖñïì§;ytÑ®uµ @ev´=„½À‚±ØkoNÀ¡ sc,Ä‚X«”k>¦.V™ÔFôe…i©‡V:˓ڢ éèaÇeüv¾Êæi `ˆ°˜Ô¹Ùq=•WBP489€q«H‘�¸M™v‹t• å÷ž°�Y‡’â›K92“e'µC�ˆÉ°ºOe:Êu««A:ò%ªr›—[Í(Ž�s¢æ×JÇSÓºúõû¯Ÿ¡ªlôYtõŸ�GÍÖw/?ù;*­$rmDü·Ÿÿ÷)lþvó«�ºöu3Hl[&ÀüöºŠeIæö]¢ƒ÷Û¶Œ>óÍS47K—É8jè}qm0Ka¸6¿^ݱÑD­v+7/ÒYn£ ÔÜÈn�ã÷§Éz€¦þOS­¾š�ÚšF³�µ dŽ`Ÿ‘Ìéº\爵c�HA8ç7ÙPa¤­u¥ãäã‘!›"8ceyE³åzH)X“º'í &VÚ�ˆ| p0Ñ#p¤£òR%g³y›eûž~Ç¡ÕsQæw~_ÓÙäã«h¶ŠdÓÕQ^ì³BB7«–uYŽ ä�Ø!/zÇÕ0š/‡—Ñá,J »Ø^_äfåâr1ÌâØéÜ<×ߟëï¯ÁÈ5÷ëÊ (Òk|¸Š 2–�à� Ck‹:W¡® ˆ)÷ÁÒvW¶Å¡ïÇp’®<N83.ø†ï~y^ïbʰ… ^Fç�³w%ÕA™ilE&€@gU‡m©õI sâ˜"R×ÜQî¹#üH%àödy´wçØUí h|æF…Ášô¨`®µÔm²(úٗΧ7lÜ9?ÿ¾ÕxþúŒ”¹,Îâè®+· êkúÇ�;'íV#?C^Ìùsøêwëo‹9BL·)íc†rŠâˆ¨‰i&<�Á±uÝ$Sù×FÇx¬ñm§:gÑ%ýrè�- p-QŒúGæcG`…µ�3ìaû<Ø«€0*uZ¸fó‡þ¸“ªgÍ÷$_F å6yøkP&oëŒUȦ«Fº{÷öãjH©�Á†ž è§ äb¯Ìf¹4Š-€ö´S•«U‹ûpÞýýZã—I<>¦+¡èéWzÇ<Ñ…åî"Š¥þÎõ›iÍq 9d«4hòw ‡”hÞû+S½I‹Šãüë‰?®°ªæï_ùºQ†u©CÈU±³®¬Èéz‰|ë}¾>UQ©È‘ºŠuE¬«|–£x¶L¢‰ {bg]I•¤à³+b ]Jä=H®8,ó‰n5 ØŒípqžàà©ØšQI‰ïÇÇë…h†#`l§„GW\. …�:CÀG¿s-O7Ûº#*T Z,Þ§Ùè, ‰Ês”¦,î4ñ$‰Ó Ë‚gÑ4™ÂaˆWû¬¢É{S˜l>™ËCø%'ºsÛl±o¾ù»JÓ .I�?f«³ÛgÿNê$ó@½›¯�¦³q’M_O_4½N_¼™¥™|±*GI¶o�É#/�·—FôTð‡ÑŽŽ<çHò’[ÊÒ¥ú£Ù›ø…'UµR�r„ݵY›¥ˆX‡ƒæ8€EB8«£!uW{æg">éÈý/W ì•Ñ5¦ã™Œ×‘Y 8.CÁM§rY”øå¤GÌ'eޏÒ' š*ó¿y^½vš†¤£oŠÌ;¬wü5“–6uQêÑà‡¨¤�ƒ]ãÕˆçXZŒB[í‰f0:BVqœú8 K ¢`¦c³=!AÜÖÀóUQÕùüÏ¢å¥åŸ–›–VX©°*S¥íêÕhà‰Zëñ}‰ö‘JÙ'>ý»Þmõ~”¡ü£¥ÇÅnPP9}ƒªž‡ÞÑ|>ªY9­Ö¨Fþº×A®·lIB éš„»ð½AUCìnC©‹Î1¤0†Ó;ÞYEöb´_Î?âÑÓ²ê¹UýܱåUØ„iy«â3wªo^!ÚËŠ�r¥�h·5(…E�Ƹ2£¶V¿èä»E+ô53qq3„g�ž0ŠYïŽj>é²,Öª—ª6p–©ärŸw·gFÌÀØ/Ö½-Ô¸³æ[ø­·"UÑèܘŠÏ‡ÑìܶzNâH–�·S ™SAS?ºšßËV3…&7=.†‹‘ÎEUkU¾Ü™ÜPvÕò2‹#kXµO›¹SXW]ð¢'úK—d{•?6¨‰3TPêÍöë;å:Ä1Øjúñ¦ú3ÀÐ2Ç�–Ú.�ÃäGœúzÔüãæh°цâöuˆá,7OËkáXµ‡û�öaL=Scù<·I«4@Ð�ì·ÇÄ]äðš¡U*²Ð÷`‘_§{ÿZÅ«xto ߪp±ÙH¾¼¾×€-·|³½v|¼‘¥³{£8§ß’1×�#=ix° *lWœ[wïºâíör`�ž3¥›¦ó$ÍZ-� ¡¯®phQÃšŽ£àÛt–~š©ý\›Mçu<<$»Öðù�•ž½ö.$Ã$UB=š,ÒŸâÅÒ�•7¶Ê� »³M'¤T“ƒIÃï¹zG0[UTóìüö!2ëqH¯»½¾Ù4¿Þ½k¥ú힦}ÙݵÚs«g›oªÒ9¬bù¸$åœû9=¦=‰ßhâ;žÍFª'Þ:&"SrÔ×Úµ(?w¶v6?Ú”3züË×.Ôo»†:ºV{/BLs–OØä¹§߃Á0ás{í?ymK�¿ûê4¡ê© ¦8©¥�ïrY»š{ò±yغc•褢ÁE@:„,˜QˆaoÜaÂÓT¬+Ì©½}T枣^Lž¾ÄW‚âË‚û¬�4ä-³±°l¢� p·uðÍ#{²kW›þqSý¹fIøÓ" ̶à'À¨ |$7Ͼâ‘d‡·cóL=IüÒFLÙÜþ`dÁÈÌÑ`ãS ¹_9Ÿ4ˆ{ûÝŽ“' (vgí(ø$Ñùúyâ>é�}ìG[ñ(%ñd Gb§\åºröÁ¾aYarsûxrHT®ÀZO#mOÌ)A1CàÜ>ú¹ Ô+˜ÛRXà¶9Éåf÷ÝÏ�áëÿ|áØ·†cW`º®DTÀy RñT¢À !ãAÞG�T‰)}>‚Äû<»4ÄÝ‚žM¢¡Ö,(<^è*‚BqÈøÃ2‹žFËèôj ¹äEIA‡#VŠ\D•F`k½G!z¬|,²[¡†d<ºˆdo-祡Æ>-ë¾W®ÇhêZ)É8))²žl¿=M™½þ(! !ubÀ‹Y2Ÿ—Ôß#n‚„Þbë¹·¨�›Èa-Í({rQa»û¦³Ò¨ Œ§ÀÛ‚nÁrªß-ÄClª tˆ¾â ÅZÈ£bGo’êŒÛ4 @•KfÙHô=¯Ð‚ñ_«HÕ.Ifñ£û*Ò™× H!>)OdGPpmP¬¹„\P "e *,âb7°´Üž±AU&k¾%SBÛ/%¡ 0-´äàe[h磿¿yb‡8Ý/„s»G±ã°~7g™ßw6|øÊj_õª^†ú/FÊ0õä[lŸ˜ÇÊÀá“ÙÅþMç%7Ø×ôJé˜qnsçúËÓd Êš5ãž`9 VÝú¨ Ì%~7Ü?~±‚Ï 9—e¡Ò…#Ze¶€¡{@¢m¦ Š­ž¹‚(FIÍ(Ûƒn¹­;BU`y-Äbäbò—´{e rûH%¿N4*3€£’‰£Î^ txjf7IߟœªR¾jò,Y@ê'M4'�1¦CF)’+–ôsC¸wÀ¶�$Þ¯4‹ã‘'=Ø …—èÅÞ0R ýxCTreô�’›•A¸šÈ�G˜櫊lÀÑR{Þ]_‘eº,©RÍcÁäŠ'}r_@R×÷¹[û…Ûtßkðçv@™X=Lª ‡n¢¦Oåp/;GÞ£¥ª‡Ý Z"(Ú~“dâé �Û`IóÄ#ühŸðaŸ™rª{khã˜õÂQ.ÀYœ�/ÓùÜë©©�ˆS°AǾ:ì»ë*v%Û€PB¢«ÄòÇtõ$š�DZO�a fXí8Ž=^�лn2Û÷è|m¦Yåi[�ÿZ¬†t c³]»ôxئ«3*6¢,�ª¶LäEü.΢ÉY´\ÆÙL&zO™ÕËxI8î;Ö•¶(NÞƒ<—ÐYqþŠ Os½¯ˆBµ3k®1÷0­ª/e ‚Táh4[�¦ŠÞÚãçÖ¶—LÈD‘€ I$—8ß¶˜$ãaÀÏ­b +G�àw+øÜ|iA\æŒa°}'G¿Íô‰ùàÀßf÷/Ói|ÿÝŸFÉä~«Qüs9�·ÿëh~9çwÑS½u?*©OÕþBnŸ+¹)Ü£•6î+žÌßõ´ºC*»I¬òt VV‡)O›·P±u4«à�ÄžˆÈ.–IO=G¨“rÓg¸ý]ÜÞAݧºtˆ"¨<   “ëP­ÏåA€`æVr|¤×\ì¥ê’–¨&öónU-µ`pi5`dº8̱é?w‚)Œ«aQn:uö´xÌ ÊG7gø®áÁ–7ëo­Iq²ùM·h¢¢Q¦«dvæ ›•¦ê«wdjOÝ’ŠXfJºÿà ÿæÔSìè,‹.ƺýóÖºó‹x2.µê˜K3„Ìw-©SËüŒãi¼ÌÕ%Y²€·£'R¹&Þy©)™"¢h6~õ#t"£‚šæ4ÆG¦°iN_–ÖÁ`ÎþZÈ¿^7© ‹ç¾ŠFÓD†¶î^01ßt„{G|¨ˆ8‰ wÿš“ˆJ;jÄ"eKÚ‹r¿’Ð̓þ7Áa]ÌŸCÙØv² ?5CGL*/»ˆJÎIãÕG|ŠePgKžDøf®µðXL´¬8»"§ìØï í\o ï&ä Z¦œUà~ãzH­kr°! êl,óì÷ñò‘ÐæxûxyÙPZf 6�‹ÆOL†MRX�—Ýáv:cz7*F:Ó‡ñ–ó€#ÎÊùÙáÍßûÃz½Pù8q°Öð6YHk·ƒõ8ÊËí–ÝCgQ¾ÕÄ�Bf�of§B¼–¤Ž\Ÿ‡¸#âÖIDu·O€"Û 6Ÿôì×ÇÂØŽÈ«V|Ѿh_4�/šÀM äŒùÃ_4�/š€9¡Ï[˜G™jp;ùX$8�.Ò,y“ÌL#ÊZõÂçX„w唊tòÞGà åB"œoú’w<ÇØ ‰@/o ?F?½ZŽ’”œBOÔÂuioèÐ}$VZrÅ$ÞÛüÃñnä‹„èãmjá7 E˜ŒÈ:”´ªG|Ì7Ó¡Õáô=4-•0 Jîµ?¥’è ::„|ýrGoìŽâ1uàÏ`\½¸©Ž¤›8Õ`Ó©#Õ_A´“G‘Ö;ËúÈÎé�&Œr:ÎßdÑ(^·ˆVK¹ŽZ]¦8:΂ë„4ÂÄ#oI€wÐýxs‹·ÓÆ«…@Âo)D9Ò r?q ø;±Ì#[.ç ¯Ø·:_c¶’S°ºå’²"Á¨øý¡|ë{gEáÊAJðX�XH@t{3y±“‹0"/«¾•8Nй»–ÅLR?;‡Ê Õ­>æ7ÁM�|½=ºVl¯n>±ý„Jd�°hêö[h%èÏñ¿û©õÞSIãw %~øÜt°ÛhÁLŸø�]¶Hµ«ß¿UVô:óÊøÚ=ÉQõqÝM•:^¶-¼?ïRYím!•V¶I¾+5D“ �<#¸¢rÛr¸†|ÿ1^áC¾ÇG…Ènr9ãñ野ŽpšØPï2A¾c¶¤ùû#ÓrNìVÇŽIå€ê{Ÿ)•ªí°_B�¢:—ói=ÂàAŽ [t|gA�Úc dt…ÁÜ(b>Ò?*‚:±È„JðT<à& Z«D‹¶çBœlV× ©�ÈãÜ �F8¨\‰½Ëä\Ïã, (uÁ‘ÄÎö¢ì¨H¸×�‚(tú^iÍzGI ¤œ}Ë®ßXÕôåcU™Å[KÃÞQص.¼ƒXBÄm‰§óïP'jÁ±.2O³åÁïXÁö75+=jë]QE½%DMÜï]¸à6PņK½¢Ã^eOçŽ5SË[òi½×îá~šêÞ'¤Á¢ßÞ!Lpù66å!L%æ(d9¤µ'ÉT>éV GíÁ–½‰Š%¶²'\§ÍhctãÛHäE�ÚØí×ñ:4ý¯á}k½Ì Tž»-ª xýýp¯?þ¶¨¾pK«¼¨©íÊõvÓQBùÝžÝþ=mx¯mýÅÄÇyhGÙð²\}ª£‰�bzñïP ¼¢jp '£Ûvâ%aÙaCª Þh†—žåΊÞ-˜¹–xÓ¼nÆËé<ÈŸq8®Z»øZXqðd®…!—u¾÷à)"X£ÙŠfÑäãbùÄã лd£º4°t_‚�’AüdÓ�®Á[Ž:`RëHÞ';áˬ®žYQƒ©†‘V•ÊÀ1°��–%“´ Îáí×XDÁQ‘t´aëlFã«2æøšÃp ¡ž“¯”y´uµ®T>Q¼XZ].înõ}çÑE'¬Š ^DÛWn -¶Ä8”c\ ‰  F²/Cñ–µ·_´sܼ½MbrÙ'žœèQ–QS!WQFÇÄ8WpXк+FCµamè�úAÅÓÁ`W=z†Äp™bÜô¦ÌQúB)޶gNÓT°Ž´�yE£…€�ްj„YHÄ&ÁF;ŒÚªÓ@±•¦Þ€E 6ƒ¸ôit¢ñøVlɧs«ðŠt:�gË— “bv<$zca âqšÅç«Á4ñ5çî²õ€›“Ô$%MP*K>”“·H0Ø��7A—QÁ$Ù‘ü¾�a>¤^¹òxÀ.ò€aû>)Ž�òº®¤©ð=á¥)°R'v1™R2»›äÑ({̾y«HÖùù÷’È #˜‚u¼›¤-P{éu(p¸²…ŒS0ji&¨$›¥¼‚r!ì¹[YnŒØvT\l<âÐ�›0#r~˜!eK ‡y€gLª’”½ªôU™ú¹°r¤‡ó:ͨÛVv?“í+¿Ô:'VÕKù:©‰ŽüÔ¢ì ,�é¡•ðÈâ’¸„n)OÝ@~JiÍVx”u¤J~ëâúxƒÐäÇ�F±GŒÂ"þo±Ew‚î_Aì·œ½¢‡ó³ÐÒ;w$s&„t÷ˆÞIý«òÌ·0¿T‹1îr¦g·ˆôb<ž´~„Ÿ„)ÿ;žå¤óVÕ|gñ“hö< ë{PZ"R9�ÒôŒAn!²Okö�ÚF%¯Ó×Ñà’�JÜ�{�kÝgÅì&:*{D¢Îùèè®Òúᇊðj-“áÛxùsæ”O?ÿô2HÒí]Av-ÆF�}ífD‰`¾µ}cž�Ê‚õD­†EåˆwPr¸aˆ¦½9rSŒÐìO¼8½ò¶—Çw ÝºÈø': SUêñ”½äŠ”Ù±-¬1Mç“8°ÿµ#ƒÖÁ§²!sƒwuz5¼Œfoâ—ù«è��ü1àˆ+eD�7 SJ›)œüÌ߬ž!¬}~“‰<.O>Rñõ´‡ Ñ\ k¡Š–g„“çAóäµiˆéÇÁat÷Á$‹ßGY –̰>œ9"”†Ùª¡ßǃÅeOœûk<8×_æ?|/íÑû:šïQé§‚Ëx2ÿ%År-šÅãÃ¥êyâ”ÀbsáRwIÖYé=¨µkØl˜¯nVÒj SÎÝ"µº{>êÛ\:Æ“'‘;÷ïëoóOßÈ{‹Îɬ÷|lYÉ€ÂDÓ�ª®yº8ëâçE O³7ŽYFt¤œëÒA±fÄÜ œÔ?X{sU?µ÷Â)ÀÎìgïÑrÞNëÜôúÌRì§e�å•£ØñÄÐ…Ï‘D¢}›I´ð¡iÕ†­X ­y4|›ßƒ_âl¡;¥Iá9Ö‚1‡a‘ì·6�ò[îÓºÁ�lO�®úêæ T”�ù.~�ãÙB~—ÁHMU‰¬ôTÕRŠ×tQ®¨“ö¦®HHW@¸â»Õ$çûÑ ™$Ë$öT{GÛ€¤'a?R_À4·|¿°•Ïž¤³eÎ(ë¨C ™†à‘">ãðŒÁ•U-#‡ƒ[¬¤)Æ:\ @¨N`beóÂNnnh¡ 6(ü2™É�*ÓNq�kqeívƒñIns?AÎcxjn'p�(:Z›K‘ìE9)À›J6qqÝ�µ,*¸‹°˜TØÌáè$É�‚S™ìr§rH¬O#êÛ&&ù Ri } W�9jåêÉú‡þËp{�ÞäÀ.phôx •SµP-�á'î,xazžÜoɃr×,ÁF×�^idçl ãK±oÚ3õ›ÿ¯–_¹Bmœ±ÊöÙÞ â÷–ºªTHõ8ä=!Ö5‹<:(õÓ*ÁI;ܱ\È¡±€] qc„�æ’ÎÅ@P_a§.3ŠÚï÷‘)¤²úŠâ¬P€ÌIë)Ð~¡ ñ=žÎ^ݽŒ»GÐF†>8Ô•[ ÂÚ9:F‚÷¸Æ.ĪqW÷U‡}vÄ Õ6aG›‰ìZà8§£ªh«áf±ÄLl,¹rx'yÒ’UâÉ>]Õ= ]YZ™A{{\6U!]¶Z0$ ¼jÀª=x@bšIr>€­`çÇO)¸o6H÷Ñ›ÇÃdüñY™WÌQ|¾h„×CŒ íãÕ—€ƒ’Œ˜”TFŠshÝ ?ÞÚîï9£��‘¶�"B¬Q®ã8”.¬’)koãá÷/¼3µ‹ÈŠxP Š3FÑšÚ›¢J˜÷z vI$S)½bÔAIÂôå–4ta²W» Ù�sªQ‘ÔÑ ̧[áºßèÝþÔRÝígAº®Žøð2–ù`vìdRVÒL(≾èžD[<†È+é@}7èz9)2:#Àd—sµ<&»Š:\FoãÇ/ÓTe»AŠ:ÙB¼7‚Ü��¯ÁGQ\ ¨Ø/¸‰¡B±D¦$´³„J”é©ÜÊåä‰ZÄèD„‹<Ý~» GNvŽÝF»®63)I¬@w{8ëÇ å¬·AYíM�ÇÙ»8{1Rqq¦åÌóü¬œñí�ërŒrƒæ“[¨AìÚaØ:t¿`8¥É0°Ë) NZ_Ššà5õ‚ÔÊñ�[ŒW®èŠ]¯¤…µiÿ-WnJ3ü;.]ï:m®ÛJ�¯†Cw¤ª|ÇQêX�7h�h�›é`á½ \”*ˆëbƒk¢x”‡™®y›óRÍM ›š»ëZÝþ-w×.SÚ3øT§yżò–Ûxb¤¢�A…ê®LtnJ�B±&X¿Á¸� ƒæËZRU˜å¢|z•Ê·„¯¤jÜ~¨çÅ,É÷µ,+ |ÎÄXaq�&NÝìì£X‘L”·í©�^þøšoîð¼·–¹÷Õ›z˜agî¬æ•æEz3[W£Øäy4Ko:¥ˆV®Â�T†éòǧé»õãRæ"fó»Ö^W¼ÊwDŸæ^kRgºÇš4Iì»&(«¨Ö¤Iì�¶(ó×?تTƒ³ŒCK× !{Ÿ‡\ â75ËÕnpqr@‡‘®*+®UÜ�ÏdÂù|—9}{²>!jÝT%¨�’åÏ‹8{Gù*Ur /ò�g€+­?Ρb;có’ÖÕ:êÿ”ûŸbØŒà<�u9 V_p+z‡Fm˜–d/-ü×—¤9v�Qœ/WE̶ÜÜdZZÖî2Í÷fd² ì£,ÉÄ?ðã5£:V™)fµ…B~ñò; ùÁ,ˆ»~ï,ùôª ö¾ð¡/|èÈÓ¦x炲™ëÅ÷Þ_&Ëøž*tÑ ŠYŒ`¸¹‚bm©p5_9¼/¼.�yQ¤¢òe<j“ÕÓs8¨8c·ÐÅìë=5åw ¯BEÖU©H¿¬$ë`›bîŸÕ¤³|ÒÑâ–Ìšp-ôO#� q‘¸šÅˤ¬ô"m$6½»÷$hL]¹o{›ô›Y¬,ãÚ8ˆ�Ž0Æ;\‘}±|àHûþU˜òC8 1/ÿ¯U”E³e2“ÕO|+ÇúPÖ�v9O3�óy$·»æê†€dÞ~GuXßÔÌ·ë Žö¿+Á[’›—ñ2Œ¹cEd +*W¸ÄÒËÕkàaJFwl�óªöF:Mfož'“¥§?¢9ÕcØ&‡+sä„CEX)»x¸ª{¥õh§Dœe©ÜÑczvÆ?¤Ëç91ÈØ‹i"øóeØ_Îü']†Få*OÎâlš,TI„geÓïb]dšˆ„À^iÚ&�úHio®‚[~&*¬'Ê”W2%ï°X:1¨»PhÙRH”§&÷¥*š6)Ý> <$ÑJm6ÓÜ€1Êß2ÒIä69N§Ô‹³{°ÍŽ€Í�”÷Y;«§TØöÊ•ú¨B's³nª�={ú¾8¥>ÇEýa�RjÈ×é‹73Ujèj%e¥Sv ø(_ªÃ1Õ-×â-€ÆBjà¸Â4S :uÔ«v„ÂóÊ8( ºÍC‚Èä�;LüMå õ¹m™/¨j”Eü9m€Òæ§me³è�RËÏu®LRâ­ÈΪªaDݺÜÀ«b"\Ïʉ.Êá#D‚–»ß¨:w=ÂsýÂMçÍ+¤Ú-$ÉvG‚÷ `�öëcal¼¢=»luñ?OëF@AÄT,f#Ú5%m ?µþµF‡^E“d˜¤«�TˆýNˆVá Ö´[X¸º¹`”ÎnñeüxǵïºÛ¯2WÅ‚³XUƒ�Ÿgéô»hø¶z´pmç+²Þ Bï²/8[ä(!÷Ãh1»MŒŸrÍQ�ºæu­QS@­€µš‰Ö@[7Í¿PlÙ¼¨Cª5ßeþ˜%o’™j�ù…‹Nr�þÙÕ}£ÔÃK4�°fÃè8d´þ1Ù‰Îf?PþûòYIk›c~•Y4- òE(­þØBi5ñ„2t† ÌsSÆÎyèÓ¨rìS¼Ž}íü”� by×ÏŸÀ6òµ[Or ›ø4žDK@Ëð½,é3w‹ö��þ†¾pìòúˆ‘$fs³G;ÒÃhæMè‹çÄãÕ7¯ršµdØž9ê˜ í¢Î—é|~ K J^ˆJEÀbLî8~™¾Yó" %EÜD‘ux‡æ¿ÝFú çU‡ƒ"dkI¹ìëÙT–»ÏÖ­ôËžÖ½§¼QÊU4ŸO>žiÝÁ—^‰ý íV¶¥y1^Ñ 4Z®á,¯q~H e3S©…#]Á¬ˆ«y•ŽÂg[ÂxȶÝúmÒÒ¯“tøöÅ<¨um‡ †o÷í ?®WuŸ}—d鬴oXgûÉBãÒ½C£Qnï�^…wŠV&b4Yùz\ãq u¬MÝÚĆ~žr�0�â*ÞêkHaˆ �h­{õ©•æüêÇ’t'Qa‡FÕB£zÀg¾Ûnñ^Ðõ²¢m¥øùN±¿=ERÝì3؇ÜCÕˆÕ”|„[ïZ nª4}óɰÏJ‹,wtçuôŽOuN…k$ïÖ«Gg«é Î~¿N¦%ú;e»S¬Û‡#¿�œËCí¾Ò�çÎ*ªIÖ«ŒÚ½ä�7š)ƺ¢rRÂÿE¤_=¹Êœ|ûçŸ^ú77%Iüþy2‰‹JÄs E|ù˜m ¹HR�é“íA=ÞF›,öN·§¶4›ÿÅÈ´ÇŸ¥D+Yf]OÿÝWÙ–(öxPl�%®‘µ²(êm öÂÐ+ˆŒcÈk�ùúqór3ßdéʦÓ}×òóºd;iêTÖVG}B~­Oçü.“eýímèµïÉ9„Ü>»´Á/Ó’ø$dÁ•–Í¥ãÎLZT?"·ª˜ø™uª{´(97-JrÞ׫ì8zXp¼šL>>V‰vë¼¶ëM.º!8nmƒ¿T!t%ÆTìØ+öÝñ�� ¾Êuâ�…hû{Š‹ !wŽ)Ø5ŸëÕwôLc'n¶^þø7lh¿î³Ÿž˜O 3Õ[ntºn~ÔÞ¼³Ón¶¾{ùã“¿ÛÑ;ðU <�Ab˜GT ò÷/_bñgûÛãͯì'úÏî£ò™ëÁ»ƒÍpö¥x€=ÜoÕOéÿÛÞ>RÂü õaüœï蛽KÞ˜†W…ïý™ñÜ„÷ïÜ  aߦ݈)Ïc¸ÕåVæYj¡Øóe´TÕ'¦Ñä}jsó8¸ø·Ü3Z,þmÞCÒú„]ÛóäÃm\g³Ž0aIgës wrÕƒ'�(¿wÚ‰]ê»+ ûÊ,çöÍ.B ÁQès}:éx\¾Ë¢­SOxʶÂO7w÷©O; :{TתÜãžÍêšBðËmkç×éÛÕ0\#& FÊà N$~ƒ éF‚ú ïbm F0Í‹šN–¸ƒÜ΂Ù&¦b‰¦šµ�Žp‡ÿÇsËc*©¼aª(Û0»2G½o4?9çú·<%•-1À•$¶Iªx`�râ„pG¼hÒ¹7ξ?óÁbÝÝL¢v0Úî–ÓˆQ¹Ñú“Wç�_?75·“Q©ZŠA¨ìrq±A=ÉRÞ Ç-Põt%>ï¼�ÜÃ7[Xóé¬+‰—Â8µï¤Š[ùþ‹3;‹Ç“,ŽF½Â¬jå„B$P­(YŸ³ÅÃs å¿ÓÕyYö7µy60U,zþægWqÌ&ÎÙYк8\Œ%ÿxʦa¨¥¥“8,rõ«'[÷Ë Þ~ vH¹Ð9&¢;êð¡"jãÐ?!E\Ù&Ê.F?¾‹ö¡õ pE�¥†m¹á}£Í'ÜîÒ”K×ZœUu^{ºG:Õw’³Þ§š“yÊÁàÚÉ…rÜ Ï"\Õ¾úƯ'P•ì}ÕŠ§óåÇWñb½ c4õ])UˆU% {ÆÛÏ�¿ëÅT—¿ëÌݪ«<ß ˆC¬³|~�ŽäÔ«01ô;h…r]€ âèÈëD¬.z¾%1û;:7µ)v«I¡¶a:�§³²xVdnà �vGhF»)‹¨©½Cõ,ßÏuq¢ÒeØ_ÑÎãí+Gu£SÂb·Ÿó¸FefÀ4bt—ÑK_=I^�·ÙºÓ�LlA4z¥3ÉÖ«­¢�$—éû—e5]ÐòÃ;AfZpÝk’F£{óœ Ë­°0®ÄúEw:½BÁÓëáÄ8ž?T, ÈZÛùY<_--à�ÇÚÊ÷Ib.(ðhø^VQ-š7y,†~íãÀßðŒ=¬µÄe.HJûvŒÙš–$L ˜�sÙÅ=ÅO=U<\ç»x6*iÔS¹x¹ÎG��SOû®ÊÁ x†Èêœê dc˜_…~FJ^./s^¸|­öýêñÿ]¥*‹X‡>öÕã—¿>þéÙ­ÂÓói�ýøúÙ¯_<~ùò¿/¾üÓ«ç?¿¼x|vöòœǯ_üøC™ð¸ÔÁ{O«kàÆš¡r¬�h9e÷\3›óŸäK¼xöÃß^üðìÙO/~ø›‡Nãàel =ö|>Ü>R<èõ÷?={üúâõŸ=»øù‡ó³gO^<ñìi]t÷ó¿>þáõ³§ç?>]J�(qò`*T¨ìS8»UËh°ZÄ£Æ$~“,ƒt9‹—�'~"‹p<öÓU[yÛ€)"  RüÆ‘mÀÕ‚6[€uôy�ñ[ÞÄvÌ/“Å¥¸]t$JÍ ×»¹y/æÑTž6â'v»obªj’Óü¿Y*%E]ø Qâqy`Oq[4­’»9kGÇ,†—ñH…\ÍÒóâï|+¿Ò[É×NÜTÜßIÐf¼ £?ïúƒÍæ¸Âƒ/ ¢°Û¨˜8�FéŠÔv€ˆÓ@JÕrPkÈÉÜ ©}¥HM_Z­wfé,Q‰™«,+«²‹—ú?;¢†í¸*\qÂø p>6Ó *‡¹qÉ@ZޏÜ jŒíÀ(þܜ¡ZýÛÅá-ØDB{÷`4À² „J\é7MñŶØö4ø;¨WÝãåâïB[c¸­¯óúI®à! îÜɤ¡ñǨ†`Œ +„)ã0j–ØœpJÙŽ|õƒ�/G67ci:k%ûÁ¯i^‡x99°rSÇóƪϧ·A±—‚)ØÝ1\ô!Æ2¤•§˜>ïacÄj*ec99­¹~nCiC}¶òsÂDm›znÚõÀæÊw‡�Nû·‘~¯ÑŸ:†7Ûüs=kƒÌÙQõx6w\�±N�_CR?¨B~àxšóž‹k?Š�i¢*§ÅË¿ Ä“�{¢õ¤ÅJB¤7òKß°�\³x‘ü_¬$Eа`Ûý˜ ø²µ¼³øM™Z‚‘o¸‡.n‹Þ¬k¦t§Q‚F0K»ÆÒXK<Úi½TXHBK;2•ß¾œ`v“ÖÅÆŸj;Y½åë&yË�€à!™ç–é2šÐ K<Ëâi²ˆu‰±káA…=‰R™¤HŠG!û„ãнÞJ{äºwáó°z|6F…R8'|ðàí®†c³íÖéT«ù<Íä %<Á�^¢ßÍŒ�ǃd´{e51 —ЬZæw¤ßªC1µðs*2�®ùB¨"WC[\ñ3à|pW³ŠZÏá-ôjÈ›UVâ ¿ ï+£v_•ë(p;ÀWðy¬|§à‡,K³§«,·cÏ—î4LbÇðVó§˜ùŠ8 áM®ž4š_éh‹e´Œ[W£tÛ†ò;u˜ÎuÝV2K–vŒö½uNÒ—ØåP´ œkÂA‘pŽ4§úÙŠb*Ùj¦½7MøG³ü¥ ³ fjôM}´¯¿j~¥rPòšLJpŽ*%è÷A0í@D!߇QV¡mÃ(ß'³Qú>—xe в8WP†íç¤Ì�ò�¹ê éî¤�[lÚxê�ëÌïh4zžfSR½¶¦Ö #O6�?!ÎŽðCê­R^qÎ�pøµU䯯SÑ›T0�4D%¸k@Ñò¾Ë@3€ûíP7Ǻ=r†veáaëñbÜKw{VKãIrY¹§’në: sîè¶®½BÆÑ5å2†“�®f6Y½)IÌ ×ÄQªA©ÆâN ·²t·-Ó­#< ¸ôƒx<™¤ïK¸/q¦—æ¦>f§X™¢{R :ËÞ%ž”‚¡âŽ˜‡;¤´|E¿÷ûo¢P®¡Ö  ¿} ny‹ßáð>�õÖx¸ÅÚÀë4�,åæ2a%h¯MDW‘Ç»Xk×”ï~îŽÅMl–ѵÄJßH|¸± ¦ÿš<ÏÒÿË0H<õŽ„'ø‚à^}<ÿ¯—AŠ’ÊÆí®+Ó˜gÔ”¸J°ã™Ô?*ªCV:ì߸¬|ñc¾G<ˆ¯œK‹i7îÌsëí­ L1›Ú=*¼±½þÑÝW»%UÀžt…÷²äF’£µ4)´‰j;šµŽ@%ÎÆq´T5¯&ïò?,Òàk>T)ïåû(ųxtöýߢ|aÝÆï/yÖ0i8ÙïºdóòEØÄª†ý«¢`ø2Iþ8&°e»ð0\|Ó´¯�^G*ÔÝ.,,⽪g3%7¯ü©¼‡Û�–£kµÞ'“Éw±ÿèÃRM”�ØRû×Íus¯–íõü}í¼:{¹÷W1ËM\FRNŠ»Ý°"T#d•1®2öÜaïBŽ–ßm†Ùºô›ôµÊ†—‘œÜì±Yw½ã;nó×6º›Èœ~"¶ãâúå�r'Ú,ÚÁy$OH®Ì.Ä–ÏãÐäÆç.«Òš”L™¹g–ñl�^–4ªbˆ6�^Û|‡Pû2¯·’£¸j`òv”*.ðó(©Gp;ü\ÇLïPCüXm�d¿)«ž6ÞžWMEX iâ-°0(e‹WZ-™jnèé?À±šÎöà·£GÒÁ\4¤Õ‰°z´•!@GdÍn`b3RžØœi̳t´.ˆ¦ã�¡ŒiÁsXn(Á8,Ñ>úmÖØPµÒz ˆîŸt á$$ÓàžÈhûa{•Ö�h Ù�°Ê¦¢!'eÒsëŒ!ò©'±qO¤Y!E9ÏŸ.?NKÍØ!ƒßROZÀ°qµÈî/.£,¾½»§ÝÉ(¾g�¯£ÅåeeNÉ]i÷(ÿ íÖN»v{ÿMIwoüݸžÈË1ldõ."ƒa*˜Cîïsm šWkÍ÷ÏãŒìŠt†4ìßÖðrêÇñûçm¬¼`0)ÖÀ<*ܾHÊ“�[±�ÂpÅqÝéãMT­1ÙåËBht³ÙSd4¸Á±©²ßå ¥wäM÷Rƒ! Žö;…‹}³þŽÇÂRï U!£y_÷þÚ«�ZS>Æí‰È·' »ò{ñ4~žE³xÒx|öB{Z¬åÆTI_ÿ6£<„Ô±U £6&È¥Ó“lc¾õ–\éd°ùÌ,,ªT1úÇÁQ� Þ±ŠÂ±¨TÔ­Æü·W]4`C들)z©O¨Ø·cü�õ#VžÅö¸YìKÂ!([e¡@Á´  ßæœL@²Ì�æèsNÀA"j¸õ�|�gó–ÉV8Ý]é~²f�4.¶0QýáL¨ƒq8½ÿ8˜ JòÁ+6Vr!¢Ü4Ÿï糬毕¯p?Q-¥ Ý­±Ñˆ,ás ð¤ W…L‰è;‡_¿ußHXû/ÞúzD‘­ÂÛbþ82–1\óJ�d¬^ãlã¯Ñqz}¶‹¶ï“åðRe@U®#½cÎwu ·p%Æì±58 ݚƆƒŽh]jíª¹þû½Ž\q™>›¿3Êv¾èÚ yv•w¿ªG•²à ”äðMPÞkÙŽÄuj›�Yõµò'Ð3ªŒŒ³ p8ytØMݧFVÄÿ”æ!Ô¹ÇÙв0òÙ”Ov/B õNª«#]* �?uåº÷åLØ€�Üc×�¿ó§»¶Éo"äH ¨ÀÜÄC'’â ä³ÙlÑ~«Ðp‘ÄFë Ȭà_qTa�¥úа·pcó…- �LZÂÚ)#껑ɯ*±òJ¯^pæ>ˆf¨)­ƒ¸| ¹Ìj`<ÿáý MX%­a)cæÈÜT5ÕRâQi‰knZ²çòM¢± xÁˆ.ŠoñðQU›äØsv`“ ÉyÐW¿{l.úúÌQš8ÏR]ë J¿%ä‘h+¡¯Âä×ÝãÑ ] —O¥±º3;¦«Ù²ÕnÅ­«u‰‹ò¦@¹eklu“ñM¶�3¤n³5Žß‡�k¨¤Ñü:YO¬©ÿÓ¼[ þA¯´; Ú•|¼�7[:_«¸�¥ºkd}M„«Ç6¿Vô¢êõ¹tsÜê™»9ý­2ýf©z¸¦ús½Po£<8ךÆt�XmÓUgñ>,.“xâK� ?¢%wï9 ×ÃþTq 7ñ,ÎT:M4š&³'él™3¤ÅéUœ“äJ}�Q�͸hÇU+4}1;‡—:£³ÊÏD0ÏÅ?ÚÓÆö׿‰!©Žb{å¾p¢\r‰‚¬\Þ8„ �x–rƒ=æpœž8ÀgÜ p /% ™D«ÊEÝ$Är¢Xv„¢ ™íh{}šÃ Ê­—_Æ,]Í(‹¬bÞLí�úºÃÚ ¡RóÑZt•‹Õ2ýõ2YÆ/“ÅòôÊ?Q8ƒº8Fì§¢öÛåiîí΄°#G$“v¸Nãtµ$ü0g’ó8Ë%LnL\…¾j¶›&¹umDÐ�“c«Ã=,ÖnµZàWEö�,;pOÑ\f»OzQÉG"²ð…<¹so¢„ñ^RTJÎf^œÝƒm‘®ëž¹}xg t$¢ýj²Z“.(YÊ„<=ZY'l [‡éc·ÌÒ‰¶ñBnî˜�F`Ò½l¥¦)¨�¥ª–ðèçEœ�Ùîn?Å‹8¿_¥;Ó•P‡ÐÞþšŠj‡áÇùÍ�-�im!°Ïû*d$äXÁ È-¡Ba^GùŽt,�G‰„MÇáåà¹HŽ=@3"ºö“è·BPwRŸ¸ž¤­[­K¤ sEFσ.im{�ªÉ� �°*à�Š”]/÷'»z|{BŽšŸØ}¬ÌŒ œ¬çÎW)¨ÔÐFË=8¤îöê õ”C:=ž˜qû¸ƒùü8�; G`ÒœŸ¦Ãl¥qc›HxÜãšGù‹WnÀÉ#T`qù¬›JÁÄö��¥1 ×Ï’H[1�4ÃDŸ³£ F½—ĵW’êcG%Ïu·'C’¹Ë£$¸i[G¤ô‘ÑŸã³eü&³ì*g[ÃË‹Éxt¿ËUÿÀÀYœÔC˜?ÓBGÝn÷T½h Ûh„êŒÛyrþ¼Á¯ƒ¨Ð’g½š9ž�Ï߯§ßµ.<Ìz ;OSIñ¦q É�>œ�%² õø¼Ý+¥ª{ße<|û4žD·Ìâ�ôR‚¢o¯FTêæ¤ÇÏ4|³…UÏ3{<ÚÅÁÕ$÷6±Ö1u ×çÞYÐ+‹ ÌòP³GÒ¡r,â�Œm'ñ»¾uOÓs¸ü˜ò"oB‘1 ë([¾^M²¦ÒæÓÔSµ¯Juƒòü svåIùZòMk†°Ž°q¦Ñ‡'¦KKé�Ž—<¢å}ÂÝqU¬Œ.¡­ÁÜ÷!5Ýh�i)C£Âë‰aâù>Â@!ÀÎI’^»0ÙöÞ˜[ql»î³Ö¬âÙe4Æ#u+ýÀT‹s‚bë(@³C¤“¹?åÅ}¯cÛ7øMAFë­XãöÄØ“ñŠŒ3ueC0œðM¢]¹Qû,ü°wÌôƒT,¸vÇwiŽïð R� z}�¶®ØPÓ ^Ρ¸ÿb%0guš‹}jÙÒº®î½æ�k­\¢ƒC¥{é½':l.Æ—édgµµÌ *µ[ãæäËxMV±ÅÑÇI"W·è²ùWõ§ò {[ú Œ~†ÙV|‘Ö2Tg¨ŸbÒ¨Ê^Ï–Y¨åŠUU†ÇttkÀÍ0_,CÀ°ã ä�ÏA)í¥¿=Þä9†ø*«r r°Š»Ns»%†b‚€žnÀ*{üoÁ*Õò’Ù0)dóeúæ�¾2*úã§\ÔÇ‹ËÀSƒ>)JÔ0¢”è°³5„¦xd'Jp�¿IòLsg y¹$7ÖrÌ€æ&»`™•cqªÎ‰P²ý�¿\êÛ8ž?Qá°!e¥ÊûBS6^—«‹ªú^Ûd—þ¢¸»u/¿â´ ¹&5‡•¼Ó.Â!_¨ËŸ¾y¿‹'•à-æè,?2ªg Á1•Ü>€îs²"ñ¾‡d3QWjHÍžGBT�à ç." º{°”¾7ä²{s{« ¶i:ZÄC‘v¤ø{t¡ƒ‘`;Ûµ¯ÒQ®/ WY²üxš¿&]”¼¥ëñ£Ã[ˆ+ȧ^üx~þì‰zûb’ó„ìuY%”›<†S]¤;ž��F‰š[zµCt'‰—9|yÜÄã ¯'DºñÛ ´ku0Âî¤Gç³>�ˆàƒ‡ÃyL#°�YRáÔ^¥Ôس-«n}ú�à3¹l8>‡Ós¹,ú–\ÎÂêÒLO8�˜­4:–-•H™cÆ x"e>�u»Ò vSE�€/"¿‚—VÞ¥ÿÁí!+�Ê$WÑ‘F…wÛ®4oãlOžDª Ðuž5�¸w²?hÀD¹iNÕ:ý‘Xºn¼¹ŒÅé @m†}Xi£>bÄ’Fô”Øß×§c:e¾øç˜Mžï­™â±m3Q¨¥‹Ó«N›$eaJC� ÒÏØÝ rpX#{„€­é¦Á¾yjµmø ×Ð�‚ò›‘¯¿·Oóî‚wÝ¢b�L®¼~”Ãet”¯£_Ã9ï¢ݹþ“:öÜqª-fo ÐуçB"+é.Õ¨ø œµóĬÀSÀð�Z:›%¬£•à­¤/N™Ò}�‡)0}Îwà�`Ù¤ BŠÇù:NB –­Ø-kM1ÉÃä =:ÊÎ}´'Åã ²;'›ßöÁŽ Y}ïÁsõÖë£Õ´˜�MVÜ+ÑÛÈ:Øh½ºÓö€=ø6,GÁg�±W~p'õ²*úê:YUGVHjÍ^o[UOö17dናsÙY€í§á¨ŽO‡*•Þ´ìÎ`3 ¦‘Ëj,¹#ª8„'óIòJ]aª�z§O Ú¢ÖÃc•ó¾··¢RâpiÙr{+ŠzÛ¨ô<F�Ì´ôƒFR™¿›‚L&\¼óhsöö[ónS^Ëþô†Ðkïôì[ È`Pç ªu«¶“ŠLX@àà E»¹„ñ¦8Jb2`œF {Xƒb�×® ºGåDQ8¸ä œDÈ£C_Ë Îô7W¤¼£Hn€JÍ'¶{‚ùÇþÞÝ Ñ}Ã�€è�?º½í¤âaü.$YòŒð n¢:.††•¡&^Ùž!7û÷‡@1�ÍïBh{E‰°2Ê)éÑ'@ôĈ[Ä}ç N{êºTˆKØ«„³#²‹ù¨—³qç×4�eñbÑjügšN'Q«ñ4[Í£ ^Ö¢…s¯t÷·n.W˜ÈìÁFÚ±•õÉd8W +0›ËhÕü¾Ã#,Óù¯�Ÿ#Œ,ìH¢úéVRÚ½ÀU'ÇQŽ5$<…8€:÷`3€%ºBÑI¦¿™†OØ[‡5H[޳p³ÏcVaYÅÀØLBõ2uu{D5ç`®»u>ÉHy(ÒÙ`VžÑÇ�=­«[�k�Îíe^wk6+Nôöqð‚ØxR�Ýläè"Þµwj[ž–R4î­ tv…4M/&UÛ®sã!¬œÒ׌էÚ3ý´4zOÓGÀžÉçC#ÖRkÿ²knüäÕyX*jD=„'Ké:…Ðæ�&ðˆ¦¬Ç-Šþw4–Ãe:µz±°Í¢Ä‡[~&Q j@Ž0BA¢X àï§¹OÈp1ÝÍa_IȤ#vÙû&@Ñ ø©õÅÁ©•n{=…ž(«øR/6ŒéršÃ©88J­X /ý�È•ýdD*Æ©*®É¥àe8ñòaä’'š¯œ£�],ÍbÉ'h3Ð�O¸ßB"îZ¬ `‚ž¸U:Q¼¯ëÆÛcÄJ<‹åûË-¢;>T¥œ[ û5œë--AÂm?ž„K£Æ1HO<Û¶-ä2ã'û÷árEäpˆb æÑWaUÍXDe…lÝ}Ùÿ+µ¥4·÷ºóx¨;,=Y—²Bkl÷À´¨ª¨R%7j á“T©jxË^#ט‰Z°ÛÀs¥ædmÅ¢Ão)[Ì—‚ëŠFj‰Ù4p#HÏPGˆî¯�cµ– 玀e”!¼G]W:NǾ›?‡@ž[ªf^á~G V jÈçßVOÊÃaà¤<Ê \×­@ÙС‡àdx(ÆB²—¥€OÅ’Q�ö‰CGÚÂÞÐR©qKG1GäšyX._oe-G}Ð,8†Ù) 2‹þgI‘î|AzØ@ЬÌaÃ0?8#’’è CÅ�6bô‚*IpÄAU•R&Iµàr&yR ® ß|‘&‘<b#ÎßL:¨{Ćäëye3UîiGu&\ï9jEä‡z²B:°æLêC48ðù8𧏠RAö㉒’�"7ˆû0 h7_à>·�štu¨5ÔQC8Ð^d2b'Ë�3¥P‘wAEÀ}×ÖæPׯ³=Ó¶búÑš§EÅð¨â"åňv; uBóŒ.Rí#äޫƈ-ï¯ü™†~1Pyõq]v±(Eý<ÍO&uöH §ZGø«îž+^� lRk¾Ê†—Ñ">‹ÞÄ?g�íj(õ)õÛ§�Ëår¾8½ÿýåt¸8Š?DÓù$>¦ÓûÞÂVÁš0Õ¾ƒ\Å(’:pÔx= Ìå"žR7[wyHŠùvÔ\Óñµï wAR’­4«Q¥Nyw†¬�œŒªAúy—,Ý�‚—Æ¿ž5æ“Õ›dÆm:ze‘Ðì’Ok½Ó$ÉÄЙ#3ã;Y  k@Œ #Ç»®­BuÄ;gø¢4vˆ¶1åÆ ·Ý÷&f9í7 2O¬CL‹ÝâÙ�q)¡¿O¼�+"LLÌò2WG�PA$ø@´‰‡™Up òKÎTúþ@×óy�ë”»&fœ÷µò¨P¹^æÆ"‚&&[U+¨^(ÅcyÂf 0¨üþ„èLrwù ��6æ÷�ãq¹d^ŸaÀnÑi•ºÚñäÚ·Ì^ѧñ8ZM|�ƒ=7‰š*e±@BÜàawm¿Èª@^ãñ—„_ê"$Ü×ïf½Í5sørU BžˆèÃâDà@šâÂÈ8 ¯‰‚ÄN­ègµ¹7ZöEÉwéžwjW«‘E›arbœ9èËÝ2q‚(¼œ €žÌç¼[ö9YºlŒ—Bº³ÙrR»ú„”'ž„’có, •;oIÊè<8(š7²9Hã– ¥©[fv*·ÉÑD7B i|�ʲ{8Z Ϥª½Ì’¡§`¾#~­îGº–ö,Y¦òF^”-醣õKùÒÚ�#}ÑÚ×ö;›/JǡɮªÒñ©(“¥š‡½‹/rî8OgÁV�õï?Ùß7 »™Áƒ|ë7Á}˜@^G›PÒØãoÜyñôü®µŸ‘bad‚�º<$–Èñ9Ä1‚Žéû‹|E‰ùvi„Be#�ö)oNXîE"á&ö€,ôĨ�Ü —óyA› *HWÙ‹‹Š™ «·�ӎΖê†ñ>'UC´9�˜8è° >‹¼H¢YWÉyŽ\0X¦I»’d!œÜ GŠ5¾ÕSŠmæþmוcö¸å®ñÀ¿ã4•—g ‹Ë�ET^gDf J?(u[UÈ4¯›SË m$DÓJ|¦Ó®"ñ  ¶ƒ .1×/Š8‹C‹,Gì!¾€ÃÌ$й²MYKìéièÌÁ-¯ÃU]Û<†l‡k£Tû%æn‘ƒP�» }ªëÙãWŽä0�Ö…:úî%a${p5‡�ça9™=$TŠÑÚÆ¸^rEP¶¬/°§2`(åfne˨â¥~~¼:JåC2}𾋇éò,K—±mûûñ)ÖÌ6q¡Ë�¤ÕcÀ|ö>ây–SÍ×vÆŠŠÆËùê¹Iêyþúìó œ|¢Wé«4‹_ÇDä2¼•=‘�4HDÏfñR$4a±|L×=ú&‚±÷À¸hJµGË�Óåü»I:|kºøN&éû¿©ÇawÌ'Ö¶o�ŸÀ4”j¤È:FÞ `§N$ ÝLrÜÈ·èCõàP HœäÆ AÞÁ¢Š3Ì*Y»ÙKöxþ*àâvÙåãDš¡¸Ë0œöchÂz™£ÀÌ`Ça‘Ìç ¤Ûq�|¿Á·"ã%@âš.µRåf0\@€ÈAy·=à¡oáñ>ª¸¥™Ÿqö¹ó¢Ú"Ÿ+ò®þÞUBÖµEøoBñÃx[mevH 8;L^w™€D/ÅÓ�€ ™¡I~£¡¤æNíi¼µHßÈóÐ-†ßâöÐ’íí'¤D÷BláFãÞ[x³Þ¼ØçŠÕÝ ‘ã9TXëPpPÝ©î5O©5O³åˆÝ£g� «¥^³ŠkØëÒ&µ:\Xƒ5Õeñ(ÉrCþóà–ä8¹’‰TÈ^áðDÎ*åËJ™IìV"uðZâÔÝ_ãGJ%»­Ï!˺“º¦O¨§Å”Ô»¶Š•H‡ÞŠ•ëE�þ·,þø2Y, @S:V>!1*˜6¸bÞ¯¸zÜM$¤ʀݪ^$n$æ?½Éª^!TãPzê»;V õÒc„"Úñ(nËM=ŧTnЗÂbl–5«B9kV¿ñbÎ2Ðçhz(aFšœ‹Ö·³ôýìbž¥’xq±XÍ•Ö\A›ªèÃ}Žˆ!$k‡æHîè~!^a¾RÚJ›£Q0wW 6#KÇlÃ!•²Xêt6¤E4óÆ“Iº=ŸDY»4^Ež<ýÁ«Iãwd0¸b§MÜÌRMHœÌâ‰"À*þ8B{¨—™#àqU˜Uç°Å°„„­žF•ÁÿŒÞEçzV öѱÌÊ�·#*_CÑ/>KOo¾*‘¥¼Š4bÀµ¼ ÑzPU¨ö«Ÿðu³«�p‘Êòm?’”&—µA® |^S•+J!Açç‰g�erƒpð7_…«ßL5�òºëRÚ@϶©ä}•‰�‡^œª!ùR€ÒºtPȆ;�¬‰Qzdö�ôÊ!±~î½n!æwîñÙ‹£Üê Rû1ŸUNPbd‘•"£àÈÛŒ€‰k¾žø„/Hcx¦$¥ö³Ï'Ñâò"—’q\‡¼t(W• +V»;aÒÔ‘…R¯ŽU”©TT*ÔS!ÙßžEËÄÚ#Ž´‘âz9¸±5ž0ÏML9Øm� ^!¢D“'KF@�uêâ�q»c8|ÜdH”^”}-¾#ž’N|-ÜÊÀ߀yäÊó=ö~®<²”p%Þ6ìP¡Y®¥äïšåª¿ëU†ÌÈ™ÉV›mûH—\�VPÞÅôâíáv./×5g;v® ‹3¥-tˆÛOñ¿VI&»ðJwJ61êD,Œ_ïe2M”s/¤º;ZÖ˜G³íƒqVPx3^÷X ÅÍöÊ}B‰ŒcsÊàH¹”%Uuc]å]\K®én`Q¡±¼Påi4‹ÞÆ¿Mj›‘¾(0�#Œ@^¼ÙkE[I4Ißœ^-“åD?—«b®P¹‡�n·[F2}ÝéèÜßÞƒããÞñ]—¹ÄFCýUpk×7f÷¦j‘Åßn;{3YÔÓh’K�øôj8‰£Ùjq�ùZhÚ‹ bÿ`Ç-KŽÜ;TH{lf�S-_Ôe_#¯$UXµ0×&*mË�ùsç‡\zgËU«Ã84LÌ�DÎ4Tþ„8žÿ˜%o’Y4yžLâÅÓè£ONw™bõ'Z­õmÖ¶6ŒæzÊ�»;°O££»ê:.³dªWãᘸu Ôä0°ï'0bÙT§9ígŠgq¦B¨Ñðíjþ*ú OªÔéâl³óà€»c[¸Y舥@up‘p7ѦvøÎ�9´†Y:[FƒJ1e¶ ¶ÆqßQÁrìX]¡Âˆ^8rÀK®,‘;ú�”øÆ¸4v­‰ÆJô¨žè:@˜æNDRE<’’OD±‹‚öŠË4‹Ÿgéô;Í8Š$!t�”ŒoÃu:¶ê�Ô6Þžd�\(`¤åi¶pÔcëÉ,ß™�¶�ŽP¦] +qi¾†ÞI~%RÍp/%FñY3Î�Ù­¢,š-“ÙžŠ‘°8Ü&ê6dÐ àp!ö…:¾ú„O@›(“Ø�†©Ÿt%/‡1nÞN2ÐÉ@ƒS½ÂËç9t’ª>†Βݼ;v+Ï—ö/?q÷/W¼dŸT²Òöë!Š^3/1¼NEl<›Œ«{ ,*¨LîÃ:p ôÜ`É'ïýêÙËçwÉY£2�ŽbÄ×?æÄ�"ßÓƒßÔÝà‚h„Áñ=2N%-Îá\­®ù¬}dU}b“ØA=¥T¼úD›—G'ä–Š"ÓMæØù0š=ÑaUäfʶ]¹3¾œ 0H’Ð¥Ù6M‚Rí9TÚ„@·B p‘k ºõ›“,.©‘$0ü§mðŽrôáa@ž~^xëy b@Ö\ê•¥mŠ÷!û ƒbžiŠ–‰¯8W®‡6>÷‚’XdaˆbY\21Ñã5‹ýìm¿XÖj„Aº…ž0nÁÕ¥,òùrÈ+G:!ñ±ðîBsÅ0Ég«,¾÷üõÙÈKM¨üD¸yŠÎ†`Ô,hvŸ==w^‘×AÉ¥ýdÖ{‰JK ™p¼Žâ~„Mo¿¦¨&ƒ$øÂš]Ad¸ èÔ€¸)ËY¡´pu'×dóëàR×5‹Å ’�[@Èãœ$ÂER˜ìÛÕH@ x¼}ʵ™[E3y.2úä�ÌpÿD.@žnBÇ®ÙjlÏUtº|¾ád&*/¢ÇÓ¯G\?ç÷©%‚Úi‹•,Êa_¥#]ãû€rž8ýpwúlË �ìM™¦£‹…í©w Oô–Êr!UØV$ªJ¢œ™^Xþ’æøç‡xùqg‹œðÂ@±ý½ª¯D1Í£zIòÀÀ´’êöQ®ŒQªHñ}Ôø¾Ø‘°&òûG5óÈa;ßÎö@.'S=5^÷÷Ú­SÛyØ¿Ê主ÛC9º:[r´å‘H/ÆŽ8:Œ’Ö!)øE}m:kHVQ‘Ìañ[™‹ú‹"vèØ€[S”/a”d¸ƒEõÖè«^_bÅ!§£Å³ %ª$g’8ŠG²ïDqEé!þ ©†0-{êžÜùü è�äA‘w;l;4ï ë[}í šW퇺5ÊK>MþoüSMò¿ií4ÐðÇ»cYãŽu`8¾#¥Bʾ'OHÿép;ïš-TðäÊ7ãUC* £¯"FP¢þÂîRIëuø³%0‚ÂÚø¾RÇ}¶ä�؉¤Ìâï<\KJFÅpLÀ/åŽÖ².?ŽÌ| þõøì…)qð2™­>4T\æ“Ëhö&®Tß猅XÊûÔ¡ú‰ \9¾6”X¡YӥѢy2ªÀe&«$1ÜÏÌ#ñ$è­²žíÐäy€§9M ›ZsPݾg×{„Þ¿*Œ·ª¡G”[Ô4ðfî6>®k¡4’Ô0l#†N¶GqG(�'&›‘ 1M‡@ˆ0 ZŒZ\E—Ìx`Ñ�F¸î¼œtý¦Kò@Š„Ã gJW+Oªb2üT°�±ÏFÏÓìñ,š|\$2W/ÊE| E“rŸ tghöúlXð5Q«ÉÁE,èHõd½Lß?™DÓÇ¿ü/V“¥|D•+ ìx©ë·f]Џ³�¯SÀ¼%¯’ñ³É¢dÝxÃwŠcÞ‚½…Í‘ÂI©ñïˉ1H×Å`-èàêb”-ç\ãÒiš¤§tygï“…ÌnÄUÔ7Áp íC<{ãh;Eü¨Œ" 5Ü@àfˆ=ÎXäk’›×°‘.Üzïûäª_û}ÒõZçYjzÄž^ r^gaÀW Îj {‘ÀÇzÑ¥-Gäürmá‰4¤M\ÑÄ$Ž¥Ùq(º°vÀă·"C TÚá�þèu/-_A%�†c· ùõì('�Ñj¸T>£¯›D̳3;'Glpyò}ˆ¿x@r¯À»�q6¿ÂÙÞìS9vìÓžqop rü~æäK.Ÿ7NIê �ü&¾˜ªB­Ë�Up÷Ûzó ê»ö0„5† ä ‡©¬¬E¦ Ñ¢I5}Rð‹Ó$š—; ‘X!<ÌÕ:ø ±Êx³¡Ž!nä‚ß{BH­rÖÀ¡ö ”~9ƒ:ûþ¬QÜH­&dñ"]eÃøInP¬¦ær^ ç«@üM¢Ø ¢òìÏXl+JgTÛðİ» —›hxLó BÆ\¹kp´sÿ xÎè=qûm¾×Äs#©èDËæDßDüƒ«¯-f—lc… Ûµ½»ÊýR!DÉ›Ë�Ä@ò Õù Iú‡ã:žJb<¬\Üþ¶x?^gÔƒ¬só©ÍM�/œî œîÆÏ÷ wÝ™ÃÝàÑiD+}ï ê崺敟Z‹áe<� V·bGù{ãÅ+]Ç5ßëåaz•”¡.úý®7«(Ç·KÒIQ�³œ|w2C\[�ê³:j/F(1:yú¤°ßFOÀל^ÅÓ(™„Uè#šCiïVûÎ}¯¨w”·¨°õ¯qÙ “c`s¥é¢ø«(´*Zóèí.N7Å'ÝÝ~k1©˜›V؃:hc-LÆã®n¹ ÍŒV[ÛA ;�…ó1v 3¤Jâ°ƒîOÅumÂN¡cÕõ.¿­ÑhšÌžÙ«›[c÷ƒôÃëR×àç»ì :Ô‡+ÞY¡UÎAù�èÕÇyt`@°ÆŽ^^' ]„�Á) ®I‘€Ýà‘B„÷“ì9©¾\�- º6Ñäâä¨Ù1xXrnUÕ<<“ô&íAÇ=‰Ž¯�ßlrÙ5oü�h:û·Œvhu8Åcøœt6 ¾¦½c’Êö» åËÙü˜þíJTÚG]pÅ×T²C,€HW<àÜ.[܈dš¤4z;D‰R¶ð©+OêXx¥‹ðg¸ ¾9‰¬[¨TxÂ~÷q"íí™;S[>sM¬Þ.Î0‰­Ùkf@¢Ð?˜3=ÿž}ˆ‡«e`öøþè>�ÈlîŸ-î/¸Jy·2’ß…Ë¿Gw¹ %W’»}ç~%.¶ñ·²Ò\{û½"”}§´!“úì]œ}<½ÊMÅ@€ÈÅ5Íßµ]ß."ã8�.Jÿ½Pʱ§"ò²Z #ó€#c´?TH$u>9�W¯;z3‚à7K„Ö*U+Ä„sì›ÇV˜d°æIàýJ{ôEëù[Άc¥®*'¨rÕ¨dù !VÓñf»jÖ-¼cD7ƒÀ û¶îørÓ¾Ü4øý�Ý4J²ú¦}je«™QŒªÒ)ëðT�,¶bnÁ’·ß#söHi³/rP©4¿<â4Ð:Ó\qœ¥Ó*&"Z_&N$¢°ü4ƒä»2hV®Mxý´;á¡xŠƒ?v#ø°ãõé´tw‰ˆÿj°Z.½M¯ös÷3„Š˜›˜žà¤;FxTwÏ�öÃeo/‰'ãÒÛÄT_9;µ. "Kñ$a•Ÿ½“7ßàѰ”`ܶÄê‰Û•�e@+fíæ¹wm3 º(»ºX+’]á6"K=‡ˆŠ™Rï(ÑèÌ“ÃP[„�ÎIðcG�Gèê1ì J>]‡CÞáIA HâBù¨€wËä¡1<a{Èçw¼{]�¿ …"wm#�lo`oÿ˜¤À›ÉmÜ8 ´íâÑqßVp+ŽÀüJ'�W ¡ARv*õwɉ¨˜xáëzî—=™f§*ó#6z{½ �âæ5€ÛÞòX;ŸË‹�;Ì+⃖ø7ÎŽÂ߉5 /Äòã<ΕhÊ{1NW³‘ïz š‚z(<CìÐ^ËtB#Úx%bÞIÆîâËßDx1dSE8`� Þ¹Æ[Ðý5¤VИià{ɬ>J§ K¤²Ïž¶N`6,ÆfË´üù§—囂úØ ªó| òJ†IºZ\dñ(Ér ¦´fh¢Žs©Ž|.$v/÷ªtËOJ“o” ÒI²¼x·š¨Œ¿–Ú ).cö…ÃäI|d…²*íφ¶¤¢%˜²T!#Aˆ0Y$$ô $üøÅ½ïÔ!7`G,¢•Ù™áü‘ø±*]õbC…‡ô…*)d«�;ìzL.#lœ_IQ#=2ùÕºùT|ñ~~1ÔQË™3ngU«£ù¯›G|.Ô]Y[µo m5‡Í¦ i¢ƒ›ÐB0å:��ÊÕN49¥«å(Êe| 9u…=#ÜÜœÔÉ !¡ê"†ÓY{‹Î¤i‘S² Ò‘)¥Í.féòb]SÃGu(Îð ”�óìô†ÏƸÝÁtl[ˆ÷Ä¡ÐI;Œ»J8\ ‡~d2æu¡•4¸Z,Ó©îëœÌ’Åe)á=©‹æ0VÛ##Ùíì�JØ.ÞUŒÛÐá2M'ËdT9I¤Ï·lò/Ãç©N²Ûr‚4ÝàÓpE·�†�"'~ Ü�ï¶È…Ö�î"69OŒz‹µ£Ë¶ªyUÀBĉ°? U=÷u2´`tÁæÖ¾2 Ôsîyó7w¯£¹‰Óå;æ’58{?và�uÁp{ð¤ôÝðä¼;­ìP<�ÞÆóe”•ãu7¥Ø3ž”ü O1¶ôæÉ»Š¨ÔýÇ Ñ¡åîOÃpàúlG“5„ćð[ò£6œ=©O¶¹D2˜ÉÃÎOþè²cNj㊆ރsÖ óìÜ-´@×ÑCðFÈÛXþÊFþn’ßVºà®`Ζ�mư}ž-+¥ß¯6ô[]÷ Cu‚*�5$%¬ O '!ÏÞ.�нtáËûðŸGŒð]ÇþUNF«EœZñÛ”T‹ÂnFxy„ñÛ©zûÄkQXö9ž/ö{íö{q[oÈz߇¾¨d%*ÙÍœGS嘻oͼ³Ž#9ç¤6ä°ýM^öº` GùX’(Œ�PÏÜvmà Lx 5J}ã&ZDïâóx¹LfoäR´�áÐ'a6lzb˜7ŽEõÛ] ‡ñbqžOëUþßè�¯({N�ûäáuÃ3(_ iÞf|•'¢ÍÂe:ŸÇ£ó8{— ãÓ«7«d$¾‚ð4­PÓêoOÀ²MJÅ‚ûº|ìÅLÛq$·7“)¬(Uйü0»åñ<$ÐNuK’SíLÔ|žfbAkä츮ŒسÜ@’‚ô+ Ž;UžN½¦’ &�X…ØFs‘P)�ÿßÅu5}Ú}SE×£á¥* îë�–³( óU 'Þ*�8,ò.G>ò‚&! ¬ÕæÉËl‚1ŠSF¦ÛquO­…¯õîÔ‡HÏÙp,³–n÷·ƒAX½ÿnù¼%ÈÅÇ¡¶ÔGà5¿ÎõáG2•a j�ôZ7ñzü ¶& .æm u_Ìeˆˆ"­ŠfÈ£Þ5Ø‘w5¶çJl"Â[Ù½éæJP1`ͤ|á#Xª«D³#�^`ƒ‹X¸wýØË®+�õ©¥ öŸ^·á(ޏƒb›å\f_F@ñǰÍ\qáÁ˜ååô¥Û6]%ìÿ'.ƒv»‹WÚ±{9™óýÞi"ê&AÁsDïÞ(жZ¼Î›¯ÞÀ‘‹!Ì�©�êÙß§('i 'S/(QÑ“.íHŒlÅâ˜xÏ�E /-MûÄŸT¹�d&·�Â}ã]–Iÿ”på3íµOõÙn±Bc¼r¶TÝЂ8ö¹ªAEDŠv!‚d"¯àAÿŽZoØóq³ûè7´‚ÓßžÝÁá<2éÐÕýX>†+[ñÞâÞµU¸ñhÍu©}óâ§ÁNP12u²ð‘Âô™�s$h-(ý©­‹ÉM&éûŸq&c¾¥W¥ÓÂû€üv ÉzÈoêŽ^13Ù�Rérß!Šl¦¨jÆ<)„�ñ;‰Gâ3<ä�yR9³�ˆ4l9hêXˆY~NÆ»«!ÿ'þyQúã¾kÇÔF¸Œ£‘º?W‰S+~ñÔÖl|çsð”Ç9*çxú~æE¹sQoC§”^\nÚˆÛ ü:iú6‰_/�€Óë×/æªe{RâL’ìAOS5«œžz˵²†=ûÒåuMMÝzQ¶fpÄuCrï’ø}8×G#‹¡ýD—QƒÇ#@$z&ÖLb$å³$µÁ4‰e�²Ûc/¸6 êYºü±ŒrCJѺ˜Ëˆ]˜ae Àjå‘U¥º ý 7òÈt�,5+YÄQ6¼ücýíõ ~Œ×leVP?G: @æë[}Ï×:¥^çML-` í¬';�³$-Î/µ_™Ž"™�*$¼ÅWù˜ÍÎeÓ5Hþqþeßýe_پ횯û#÷³Š¼šÝ_>Ô¡ v�‡^¢&e16l{({ö�©°HJÉNíôŽãFßñó÷²�ßñeÝò· ç¸×Êø ±ã[²·Ø¿ÖŠrÕ¹ŠPÞ‹¹‚žPABY©_þêòà»=^­´™ÒWw¼Cx“Cu‹Ãg Üì³Ôàï² ÉCn*£8Õ•ÿµ¨ziR½BêE1 ¬Ø’ ǧÐÇåä‰ÎQ.§D0‚,/»Ûî>À‘„†–”£qýv«ñ¨=u¡$.uDXº�I]g ‚e¶­ëÛãþ "ñÆÿh~=;JF_7¿}<¬¬±5ÔãZ/ØÌè§ÜLgQ]÷Ìp„ -–6ÈܦDSËqwm1XëRWÞss]¯ý5™Œ†Q&_Ýú^/†q…�½·3õYÝ0k´1N’8 H›%k¯›¶ BÉÝÂO€¹£Aw6ÖÍ“!TƒÑ…1¬YB»0 ã1xß_˜Ù™$ñÌG5:I4? à�£s„{Ù¯P«³ÂŒí.Ñ�ÚØÕ,z%íÌÛk;QûÄXSÜ  ˜­MEܢ˷J¸$<ȉ4¥"ÑÍøÓ‡°Sö}F›ªà¢œÑ•Àa¦ìön8¸"‚tV£Rç¢fðó\—T®cR °w�•ï¶®Y”{zC\ýëy=�£:g†hB­³TÞÄ:fØ—ä7;µ"I%ûà¹p‘±kZ±‰ˆK_}ùðèÉöºS uU,§a‰QÕ ¿øC4�Oâ£a:½¯ÌÜü¶)ê>kf h¾—ùñÖ±�k8t8‰#Ovo7èŠ\oZ¥;DŸ³ób±©Ž0`W„­Ï³mQDÅÚ_•M©C¢f™o¬ qÑÄqnÖðožë¶;ý=Bž·Jô$Ë1¬OyMÜq=zçÂ@< 8�æ¨C^‹ØÊ£àÅœ7ì`´ñ»›³­ÉÃy–.Ãò`Íìx1Ô ¹NI²8¥¸s<œ‰rŸ2¥9þܲ¢N ‰Åx�Ê3Ø-’?(B%(%ÈaçzÈBÑVb3⣱Õ>j¿–ƒ¼Koj±nû8Gu‚jù9ùŠÐŽ!bè` H$&7pÓÓìrž~f)Ú_RKo8µôK"âõÎìp‰ˆû(×_ò×Lµz>âíÍÎÎyª§pke¦Zvœ&û¤ü�U’OÊu�=ÍÁ|€�A¯MéÖö‘þ?]»µÛnwNGƒ“ÓÓûz÷ÃtŸÈÉ å»ï*D4b·j Ñ?EHB/'Hí•.ƒw+�p�ÊÙykÖ‰æd]®¹SüÀ tö³¾Oµh|§òòþ˜™Ñ_rå¶®ò—\¹U»:¾ñ%W®ˆ°«[Eõ%Wn³G_rå¶ßþ%WN:£�8ÒŠ³ü’+· ;ÄŒöô™ì¾ªú2cPË™}½ð.kɤÜœJ[NTZ››Jìd!Jî—\ÅÕ—\Å ¯Þ-r²ØÂËXÜ/ôó¦Â¬lŠã ¹åv2S5¬J’£ˆ¸„;‚rŽøâì]ŸG#¡�ù·ÊÍX¬úçÌW€ëð˾©ÜÎÕüM©*dó8{•ΖÎ;wª¾Qèʻӫd:ÏÒ\(‹®›gqã‰êžÕxMr»Zý+Žf÷VsÅ]ãY:F³Y‰ØîòlPd«åê>9¾ÑöïÀ×0s)’'8?�h€†ÊÌ­83Ûküñ/_ûŸž0ÞàGìðì ÊNö‹ð~„(‘¼8‘;R÷ö u9sÆCðì““V}¬ðW‚Å�à "4¥c÷½YÒ¼ññ,7�“lµhœMV‹â—/f!aËÜÁŠy�Åd7!fg4eA|�¶]÷<4! sÁôˆ–¦ãåÞyÖ¼¹#�{<>‹Dýáè:G;;ªöü{B)Æ ‰"!‹Ä"÷…[I®{×Çõ7÷ľ‰Å)“ÃJLFšS € Žzì£h1Ccµ\Ò¼šޤ�,ÎÚóÂ$JÃ&„<#š®Z‘™9ÞiŽ­S1y|‹€ rSç¼¾•Ar”Séó¡~¢ûwî]�"|ü®Hˆ`IxSˆ@DVýèªʆ™ö´uá³\ó>�‡«,Y~<_%%•ˆ�ð�çÔsŒj &!ˆ:¦cSq]˜?;ÆÕ¹I‚ý¼¦ÈãÕ2�*¼wm‚4¾nüG“{Ê-Ý8ËR«bË$7�æY|ÏÉ»õ†Š{ •õ)°=ëýA¶=]-µ“áñltžŽ—ÊVqíÎßãlOžäß¶ßGÙ(ßßÑÙ÷g­Æ¯ñ ñx>ŸXßIãy’Åïsæ:†ÿ Òˆ–ÖSÀœOGú¡uáýàÈ4@Å’kJ•ê€:Ð,'Öq¼XäKŽ&ç«ù\5æ)çhÈõ€Tð\°D6ÇYÛxüÐÃ/ âC*�¼‰Èòëø:¿�Ï>ä7ÍøÒÂqÒr5À1C‰º,áxn•¬Â¹÷Å·3‰óDgî-¨AÖY¬ç_¨Æù½D €¼Œ´,†;@~$‘‡CË ‰÷цø2�—–äïv&ß3š�àö(�‚¡ºƒˆ ¶!æ, ù<-Q†7�ß1NåNA Ô¥ý’Kùy`|¿Íô„pŸ†(­Å²'≠yn°ÌG±!äÂõgy²÷,¿žãÕd²Q DwœÄíªpåMO ‘�+ÎC\ˆª æÐGüGÐÓN-¹îh«BìAáHñR.9†•d†Ö&F¯R·BªWÄ�{xùqSÍØº=ˆõ’üÇ*¾çjlÖ À<Ê!1RŸÐ@éÖ“(`ZÎÕWTì˜ë©`�È´­>¥,Ø·Z} Ê}ÕeV ä€ÊGèƒ@¸ƒ¼œÉéþ 2Ÿ„0-Ç4q�ùù…!Ž›nÁ�â~«Kà\Ž›©ûà#0žœ¨ŽÐFÇNU¤djÌñ9üÐq]3 ÊŠç«¥¶T_E³èM<- #­gY¨‘B¨›w·—R€Hx,X‚ÀÊ$ÂÉ£ÃÕLØ÷–̱gS±µ2_ ‹è$ןTÓäžDGü.ª‚;Α¥„*P´=5µ:Û�{ŠzòñNü¿¥é›I,‘eH&']™ÆK¨Á0Ñ�ÌtQó¬J�”§Uˆ ædˆzIRï‚—Á«îºsͯÓ;³£Y4�[¥ŒWÍb�8êe#ü}S1÷}0‘7Ø£i4QT¯ÙJ—ªÓR³ùé®Ê켆³ê=P¶@³²7V�Bf`­ä©’•‰Š…$o~5ù ùßÓ‘Œý²á’ÕKŒxéðpgv  CØ.C%0‘¹‡Fý/Ž:¬Á׿�^]Æþ9É"‰vÂC $ ”>{Ž0>±4 jú�$D€+‚$øŽˆ0–rÝõfBoL®Ù0]Í–ö²Šé`B´c¡� ¨»/Ë © �xª6:‚jb¢Á@U)ÖÓ¡\ã§<‹ö�€ ÄâuW)bð�Œõ€.aP.’áïúœèà ’kŽsc§‡l}·VË+ ÙL�Óº# õZ¡ÚCïøOŠ__&‹eš}\Gž^Ŧv¤*§�.–éEòfV†Tβ!Ì)ä´1kl+‰—ÍWÂðGlNtl ÁƈÏVó‹Q:óHKGx–MÏãÙ¨,°­/ôɈ‰ S2yøÓ7k–ÒgŽQ³�¼A=3ì‹!`=‹e”•¥UÀÎx}¸½*t¾©~å«Vž\ä°Ñ«…£ÙI\Œ³tê¹Í»NÈb åwšìc wZáçQ21\jè �&!kÒ*Qç&°Xéí“Et)EérO›”JÛuþâOÉœ ¡–ÃNê)kwi±ÙÆÃl�'©Õ…ë~.‚v³uÿZEY¤*ÅÖ¿}Rä6Db–×®æY\+�ËÞ¯A4|{(¦E¾`‘=^£žß>fH:�~2‚ö=ПO¶å€p�­©B æ[çÚÓ,y“Ì"Ù%v;Ý—,\‡ Üah)¯J®Ž%Ñdò±XúÈ»ö®Ô# MJjaì´èruçQ­Û°¡€ÃžPžõáN–¹”•@Ú•¼CÐ5Çòæ„[ÁT’ÞCµŒt5 ó"\Áí�*íÀhö¹´Y·a§>¨"BéšÿNâÑ!½FÛÉf'ŠÖ“õ^|ãjÎô`’0‹ÿµJòm¸˜~L œ~1÷u‚àoÓD¡©œ¡°m0-¢’A*ÄiÜN�sº´¡îŸ¶þKþQ37óï-Ó{ÚÄoÖm‹šØÇ¶~Â4g7 a׸†‚m|2Ë{o²t5¿§û/ºfüÕ�ÏØþˆë5ÈÍPŸ7ÌÑY¨ÔS©ä´žðS’kmñøæW›ThIíÇ´fpQÑŲö‹öæëÎñfã�NÕ7é|DPÙšY|D°vµzè@9Va5úTûÞ™X{‚ƒÊ»¶=¿ƒ^ö=çz[¯¹Ù8¥ªúN·è½tSPcËE§YÁK¬èÈ~/·lC7¢Ú<™odèà|¶¦õ^dàÒEàÔ«¤¦˜Šè öÂá¶ |]Ì4ž*Ÿ_­ó„ÑUøh˜z²ÃN� XÁ!�žQ Þˆù|ÛÓ“E=û›ýþó{Nœ3‘ý&žÈúMo?JôÿPÃ/òÿ —ñèPã'ss¨¥‚a—wˆÄ(—Å=üVüµc% {9u"l(!ú›$õbR·d2¦ßñ½è]5‘W q’Z¿æžíÕy°×I¾Vî»qĶì[èf¸Þy–ê.²¡LqÇåUFiÃ@�6O9ÂÞÁ(=窮ç0¯au·ŠhÞǃÅeOdξµ­èã¨pG¸•è23�L#$0’söU‰ãÆWqˆ ´øŽ§yˆ:…xV‘�Wdäëñw:ÝψƒÛ…Vfà·�¹¹–sèãûwáÙv_wcÙ7Ǭ·§}ðÛüÇâÒÍ7*9õžjj p—xŠfxJ_ó€#Q“ ¤! æ+°ªV¢\P =5aò¯­8�ZÙ,~oGùâŽéºê±¸D’(ˆý“˜¥Kƒ}µ4x²“PÝpeã4Öj¥¹õ•¦Ô:7IÝùyL’a’®ª]œ¨g”ÅÃËØͼË)p†€LˆùÝåëß…‰ã¹l›Y<‰£E®·ÍF÷ñ,XLa>jœxUXÈBm…ƒšÅu¨Îg¥$®ãí׆«Ú‰Wö¬Ü8(j X]×¥¨¦à¶„ÄÏúøÞõš*MÐEn˜Ò5.gQ”ˆ¸Þ××5Òj.†Ñ¬ÔwÖ“U!ä3[¤‹®ªãÎzVºÂNè¼0ˆú¡ðžÝ¦JCav%1=‘!W¾XµM:Ÿ¯:è{jö2G®qæ²r�ÅŸ¤ŽP °C¶ƒávž”– îþêŽ~$Ø ^ÿõ¢'éÐÍx>³E£ÈC’@CÏQ\†µ÷ v-¨Gídh(\íjl]épÍJar.~kVcT�öÌ1W§Àð›V%üìËæ¶w O M«ß’Ü;œ©Y)líPô±ç:nãµËuëxé‰ÚŠ^èl&ïÐKË�íòíh•¨¢“hÁ¢ÜÑöü8š,TÁ")õMÐões¬…+©E†‹~I‚åauŽÁÞó5ñÑJÜûd9¼ÔöªÆ2Mщý ÿ�>‘ñ–9ð˜Cþúù$^¼½·ˆ³wÉ0?¤I™’¼ÿ{£ù|òñÞ<Ê_J<µ"H�ƒr-ö‹‡ÆŽ}gËj3à�º‡¿ÛÆÒ¬¢é½l5 ½•C¡&U‰ÒC¼‚ôÑ.ò+`£îñ†nø®Ñ"f`z 匀&liÝJ5¨Syb6¿²òm¥8VëÜ1#íC… ¨Ê0\ˆ¸´’@€ËôÁÞªE:jA±"îxF"±µ0H{Ú·¿ C«;¶/Y«ÝŠ[Wm“JÙí²©ñôÿº€ÚwÑ¢ËUÜWû-éñµÈá‹™aëpHž”ÓÉñGú“ö¦("wÔl©—?æ©Yͼ½×ž{fT3&ntjÛ¶üÄÆñû/'VåÄ j¯r‰š_'kÞÖÔÿiùØu€�ù1æzðÇ/çøYŸcïÑÑ:_ÿËA~Æ©+ðÝ­`ÂT׫h±AÕ�¸…î,åPàwÄ´e™:j)H-—"¾kcv|[Ñ*»-»†îxÑ™*ºÆeh®GS-Ù«ðÈ�êÇ>Ñ!×`R8XHå(”o�™Û zU9× Šôµk¾ØcDÁa6[Þü´ZLJ¸PåžT‡jnù6(D¡‹„`o.oÅ@¤Ãiͦ»€bX4�â'$ï«ÞJà{œžÀÖ¸êÀ›LäÑeìÉÒ[PéÁÑpÚØµ„×Ę̀m×ð¨ŸOJÜœ°o9:MBÒy´:Å‘2¾'Áߎ@2ê�©êd0¿<>j†ûAÂ.ü5¸G�ÀHç<(W@Ú¥‡¸ÍÚüÒc8>lú�âé] l\à·P’£"È~à›å ì�®b¹hä� Èöf¿ItëI9Í`ôÑ’›Å¹.j½^ãL]‡£uiú/¥¡3cû#¦FÝt͘/¥¡ªÁ—ÒP»ìÝ—ÒP7~ÍCöˆ`óSs”� ‘×U[ª\}p æÂyË5*&7q˘!""š ” *}Uu\QÛ·hÑvÍ]"¶M„rÒó-Z]y­±°â¢ÌŠ«PÞÆƱ?ßoŸA˜?)Új'ƒh•PÏÌì å¨�AÆì¤G@‰úÇP†ö­Zeµ*t…Ÿ¤&žcÄUçµÔvžo‡Íwÿ™–kQ»N•k&ûMµ¤^ZàCº—„ÖP«°+ QÛ^•ÒjU¥HÇýrêܨZƒmWÊðº…+[uíð‚èÆ^PY�‡ÁrìOr§”YEy”ýUŽ=:V«ûö‡Þ ä¼Öª%ªÒív··Ý­]Ï­"Œ€2F;ÞRpªãT®¯ÖÜ�ÏûVt@y¸?(®X¼îº ·‰¤Ð-ä×»Ó»… ¹M¤ wnXâT/˜÷ï.j*”ÈûÌ‹âÆÉiéa¯¢k  “Áö�H”a�x—êy�¶ò]n‡i¼Ú ³sÕ»²Þ+` 7Xÿ®Kâ†6”[0yý'ðõ@‹'²%d{&¾Õª¾B�­MssD]û4 ˆÜ¦ÉÑÎo$Ìw“ŠO ô>Á'p3ï÷a�öL8ç'ý­¿$á�àÀú®B¶ëÖÕ?¬ËYã ‹G=NôVíº^µ€âçS2ñ&<‡µ¤W®¶ˆÞÙÞÉ*ÑÐäÒ#�¹±úŠYÚ®7&´*c“¾ßÄp\˜y½ð#¾2�{ıdU†»¥g×/rïÊÌ[ǨM`„D›ûÓ²»Fºû¸2ÝÝfƒ‡ò†å{ìc¼o”K­vV@�ËŽ°«.U§†ôн—WTfôÕÆìHb¯¸}ë +«¹×¢THóÛ •4;'°9·¬Œd�µ3oó2Qe¹eÕ2k+jWKàuåú˜uÏÿ˜=P)êþv‘Ãõmgý50kÛÉ¢ò«Eäß–™ßÆËXò�[ù10Áu¿2‹HÁ#E„$»%‘Ä€ÒÂqÆ0Ý1 y'E•â<@ëûõe J.)‡£iReЇÀî¡7 )Ж@0Ÿ`Nï�U -GÚƒu*Î"Kû»¡jàî;O,Ü*;ßxa¶9´dim[ì©s*n«£âèæ2Õ<­c }j ÓÙ2gK§WÃh6Œ'AÒÞcz6õ¨ã$›¬Bñâm"'Õq÷�ù„—ûØöSkœLâ_’ø}œ�^-.Ó÷³çI¶Xz�¾ |WŒö1/늋äÿÆ_7sz6†…~¤Ó)…{mUŸC§ÎW("�U\˜sMÃjJ9gºÌ÷húѲݟç‹x29½ŠVËô‰Mt¼ÊUðéEG|ÿpCÛp‰¡Ì>A%‡yè°æ 9_Vc†p½q8þK â‰µ#í„ðu× 7*pKQ/” ~2K‚¯£FwO—{¸uŠ&9?r·ùR·Zå½ÞCDûÑ#ÑŽù�XÍá-”J=Ñ�+ޤ'I]÷-ÆCB3¹be¤Ü!Ö�`ÑÞ³ëÆ%�íêÃcãb[ú"óŠÄŠ6t™L`Úë"¡öX·E"Q¶-UðãÅ@äߺ¦ã ¢4%âÞDVCiiˆ¨‹…ÚX2<´TðRà}da!<|‰Tœ!÷Ñ:½âò¤¿k†ñõ²'ÚV„Q¥ùd ¨N Jáijxœ,>Å¡ !_waâ˃˜Y+�œ1ï÷¦ÓRh»°ý'ü�x²hgcÜ#‚€ šh,“Ÿj¸~‰[) Lˆ R;÷ë8�O83£‚¶1-ùÂqÈúÐ@MY͉W½×¢ Ýν½½!¼�¸Ú°Î²™á6ÛâTÏŸýx�m$êvõÒ£G÷ HÛC®‰@–ª*˜Iǵ¹¿uk¨*€÷’ã�H'¢ÿºXüÃrÕž1Þtù€z9’À™�Èûyð°˜î‰ìÀÔ¸M>Ößž¢#s\Óe€H½¤G×ÊúÃáP“tV–À Š˜+ö±0+Ÿ¬ Œ ^ÌÝ¡oá¼úøCú^|K´! óF[ M�ÐÕ0Ð*˸$‘”þ¥užÁhÝG›Ñ:ê§ÑlMB1†LÈÔ¸ªÆáòñTʽóûÀ™¨t+ÛC�í¥;î3„‡üF«yt ”†ÒÛSÑy¿ä,?÷”íáˆ{œƒKîzÎÁ<̱:T+ðCØ@ÉTt•‡rb.,dÅÕ§é(š¼.Ý-¨#iõ(ÆÄ"«pÊwªü,±žÆS“‚?z J<Aj7ˆÖ ïg›LäÙ¬ÖyÏ Ko½¦p‡gg>€WV³ªDIÐåZ‚½§{ÚS²W¾.Ÿ%UÊûÖÖK‡ Â|Ì›©†ád°9–à<ˆe�Æ…lY[ 2{sX æ1¿iSjþ¢à&mÙÌÙI}ï©ï'~‹C./>!NƒìP‡-]5AH_„ë†zË„ë'•I9Îâ…j¦¥£?™^¯s…kñxEDS=?èwI,|ì�d².⮄èéÕ0�¬¦³'EœA44miËó߃‚ÕKfù/V“åót5•ûj¬¡©wК­&bSÏߣíÍß»†ÈlÕÈcü‡ïÑfÂX¼«d1¯³—*¦_¾;åq¢¤ý  ˆ´Ï«TmoÇÀIÇ­d1ŒÖ$e8{@üÚÖx`š% šDŠf&å¿nu*à]ùÔï y1�²ÀõïªX]ØññdòDePÒAµ…Ø:gNÍú%ñèE.>\wÇÑÚ¢–¿¹ØöÓ¢Áç¶Ep�ô»ÐÁ3tø²æwAï4ƒbÓÉë}u£`·Äë^¼jð÷>½‰•Ól½ejšžÇQ6¼<½šO¢a|™NFù,ð\‹ä¸qܰ(ÄŸOAè–>o°Æd^aî. 4¤¬8倇?µT6ùéUÀ²KÓÞE“•ês¢³�Äqx5 uW@k4_/#ÏL¸¥œ_¡Òkv]'jûVêè×�*º\}�Šw浸\ ³8ž9�Cýý¹þ>ÿ¹N#)WЉëmý"…˜¼¥Ó(™yHƒTù!wˆ"𔍠°ÍÇúÕëê/çËh¹ZѦC„÷6$>_eótû–‚>¸�–Q6íBÿ¨÷zˆ0pC>)…"œÛ¢õM”Ó*á¦ÛOæSÐ9ÊP 1/˱<É/>4ݤ¦¹M½¤3‚ö” Ó°Àì€ Î¨¾ÙiOwèöTG±¥ŽÅɆlN™SÑí�°Ô‚ W>rÄš«wtû5¾ä¸Ñí 1í&#¡×«¼ø6Š6"¾ðȼ­Ö3ë…œY½ÛY¾›kÝ̇e{¹LGa½ð)m�¥ùêÇx±Œ³’‘ì¥æ:T[óÁåǹ�-tÑE6ÞE@sÜ×ѱVÿ9ÐÉZ—÷L‡ƒ¡ PÙ þ/‹Dß³ÁcUÚÒ§Žt8À;ÖOO’i’ëÙú?gÑ›ø<ù¿ò9U6äxd»gߌ {`nè©ü49$£h™fù*�ö÷CªpŸDÎáF£ûî"ñˆ #Š °¢k*KdMŸê©þšLFÃ(¡3njɰÀÝ^^"Ö䥽äÅšÍ;°hí|~oe|>ÓHr~€�ÿuˆ¦óIœæS×àø½Ú7“f¶®†-s@Ôò�"éb|³¼]œÖo|ë^Ìeè·Â¾EÛãù®˜¬ºv6r.i³úxWÑÝíé®J" ŒŽ^{6»ôR³½®$‹X¡ù”$Ïœ»QÆÛsʽrnÐj?4±K†�·®mŸlw°}”ëOΣê´ßnöòõZû¯�îúøÿŽpwÚVn>Õ¹Ä�N÷²|Å‹VãØyá:—jÑÑ`‘NVËø,ZÊ^'æ±§U€@Óh/ð)¢³x"yÈÑ¢½Æo¥ [²ÕrÁYêÈé J/8¨î…8 V»phz0R‡g¤ª¸,¸Žš«Q3dNŠ�´4+ªB ä�š¶îjwðIËÌ]BÛQG4 3)Þ€¦ÐCxx°^¥|6¨êb¨÷Žš;>Û-D�µw”FÁc)õ¤ú±Cì$ÅNÄ�lšlì2…¿C®Çã¤�O"�yIW5ýæ×[¶µoÍsk|c²¿GLà¶®­êOny¦vyõ§ü7-!£ñ<$�p9V“®�yïD#ânTrZ:Õ|}8§ ðzèNçT­c‘[°³eü¦·”„q3K¬�‚7Ù§YiÛú×dyùäÅÓŸÁíHh2WI}Õ`°Ó‡]…ç¶#‰iÅ*7m¿8»yùS)´¦n(§Ä ±¤±K“…êU9ç¥Ë»FâªÜ0ý±¹PÉLƒ_77[tgïâìE 0ð9o¹5ˆÓK^VbwrÿÉÝÇÑÂìá4Z>�–ñ<¾�³³([x… lÖÒ¼×ëh5“g³‘šÌ sÈ72D;J[3ÇY>ÿsU‰ø¦W §"Çöì,kþã›Bâ”óá¹ož*`‡`8( ±HÇPˆEËB •|ŠÈ麈�^Ñ$ž½)1G™UM0YÑ(%?*ÙÛ,þ×*ÉâÑK= »Í%øÝÎgùW{–Élý’Zù_å•ÏóËt(áM5¡ UH»fó­™îòòuª®Äá G,r¤›£˜] š@pr .Iškêï/£eëÊôj¸X|\,ãé)zÁʽ î!MH¢–T¾M84 (“^C',´ÄézjÙ>g&øoB@ÜïV‰4þ°ÅÁ`›ɤc5‹Å0Kæ0¾þŽûñÞ±~|™Ì"x|×@ ‹ Àu3÷Ú 2縫ÔT®Å€(ºÖÛ¸ˆâDúÃr}bá³§4k'g‹Åû4�"Ђ²Ÿx4›šµàoéÍÏ¿Ÿ¬Þ$32ÚæÖƒ·�ò_§Ù’üu�Ü2WXt:L'ä�0/âš$²¹ÙRe/’ba'›-uø6͉8r¾¶_â2Ñ‘[ ºœßÚÅjðâ¡]b×Á‡š­Õ"Îf iÇyfWW"�b76ÄŽ kIg�Çæg(b±ZL~0›ð ô͆GsåvTÜ(¬Á•#Ç]nU9¢r÷Á÷B|.ƒ;Ü.z$ÚEGMëüÿÉ'>yÑgGÄDE_MA 2_y5Êr"æ¬2²ÌI:XCß4àp""ž{ m+«Õm+Jð^é¦ÙæÒ…G;xºÿrÈÞ3H­Z\—¿�#oœný¯* 4æ+ü¡,õ_ Q¬NIVïô¶="M¦ìn ÿQ)€«k{¾[Mrv¬DibJHošƒ%ªôÊ$0U w._¨ ­¥µX(Q+yD !'vä1Ù•6äQ!».’™ ï{“Å ßF‡qmñ¢à×]Nþåþûãõ�™µ|±÷xýæ.Ìö™ùÈG½[œVƒ;ˆ+ä\’8ñ‡Š?Ì£Ù(ÎŒ}z5|§c¼Ë™G]Qß;Jæ“Æ“_ž5mÙ´Ðzi!*S ì˽Pµ#W5æ 0ª¸0ººÔ›a/–©!©úÆß‚ËP¦ë‚ñË‹€Uy±}¦ í»œ[*1V¾b'�¥JŒK%I‰`ø¤L¾© !¹ŠFò6!0…ûàÐ"Tõ™Ñ謞¬2;˜uHþ¥nÕ§iéºÏ³aI‹¢r†´=XOÓwiæ¨w»5Œ:¡ã½>g·–­ìîÕì(çxù6/¾ÁW4srk,–Y2\6ÿR|ÑXBiûÙŸÿÜLuîIó›oãIÇú3›FÖLòŸ|›Óƒý÷éìÓ§wQÖȾQƒ´âošÀéFŒ>ÍŸã àŸ×Þ^¯ý)±©�ÒÛð¯~!Ža?²*ÿf²®/È HŠ Ýa“"»7¶Ùõü�gñG¸¿ˆœ‘Ÿ6�óI²¼Ó¼hÞm­‚Žo~|CñøBŽ?Ý{$ÜP:¸aÐÁU=²aø‘ CŽl~dCrd‰ëÈŽÄ:rÈ‘ã,¿«çΉ;}äØÒ#qïŽvDv&ÝgDRå?®‰2¯o{†ßÜú�ôé?¿½óÛ?þñÿûÇoÿüçÿú퟿ÿ¶¸ûõ«üßÞ߈‡q!S£�[«¿XA5Í%Ä7Ù·Ëo›°,I£`ŠÍÓ€Ÿå&ðéìëf£ùõ�ø›¯g9CºšNOßp0þÀó£ÀYÖòªÖ¥Mˆ¥¹ûü#XŸã‹Úm�lΪÃn!ü…\[W½èÖ«WdÐ47àÁEù×üD¤³ÿhó“)œvÁ?±!xBi}ÿÈþ‰4ÿÏNû›o:þ³úKûOßt:ß®þÑþç©úç_¿éšÏÿã›þŸÿ|Gÿâ?:íß×Ë¿mßÍÜùçéêÝÞÕJNô jYk•ix´ŒË;Ë»ßÆÿ˜åÚòòòÎ]õÜæŸþ-¾Yµ¢£ñ7ñ_ÔXßX Ž•’±&ùXik’�•è±ß\™DàlÕl½�ã·£èãâ {´-ySq·±Gfö�îÔ•2®¬]|±™…#œ‹ÿ´ßÙž9p‚¢³@ûXæ�±DGE¯°µ9!Ô„}Û|~¹ÎD'>Œ÷n„´ {Ñoó5÷a�Å q=v%('¬ãœß«"w»˜™™™ ™y?y3y§¦ÐÅidÿb¶f¢§¢« �vZã(3ï·Æi6�”ï÷åëÓæ÷§Ói³õòõ¹ùëéb‘ÿë´ùôéÑ«WGÿ�ÿ/ÿ§úwCI§†úÀ½#õ…û›VÃŽª0Êÿ×jÈ?S6Ù$Z&ïbUÄöôj¼ÊodL8´+’ú.t-„œþ点ÀIn¿Ù*n%ÆVs_��oÆ�Q1þôtÜšª?œ’EKœq«DJh2ny¹¿–ã–“ckN>þÔJ³Q2s6ãkÌ>µ¦q–Œ’xêüú?úßâ>aðI® üG§k¾wDL´õ÷¿Å%ÞÂ�…sUh¡ÕpÙ‘5s�&ª¯`|gÑš­&“ÖŸÚw[‹Ow²;ýGúÇwï~úôÏ»ùÿÜ¿ÿ?‹t• ãWÑ|žÌÞüüÓËoÙð"éœÌ.²•ùïòÃòèd|òèQ¯Óm÷µG'£ã£ÿ³8šFóÿ?PKÒV1]Ñ>¦d�ؽ`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_tr_i18n_txt.ab50e6e988b87c50.jsUT ëÆ«jëÆ«jux è‡Ô\k{Û6²þ+X}ØØÅMÚÓôÔ}rö‘dY¶u±jÊÎ:—§ ‰�„’t@R åÍ?3HKÎPvzú¥[—™wÞ™¤"ž¿o|ÓŸE©V+�-…ya´ÎßìoþÏÞ<PMÑ4‡oþçÎüðú§Ÿ<üeÍ ËÞÌs5ˤV(pxgD–ÅÄ?v Æñ«7o|P¢qì¿úÒ”;5M3kÊÃ;9?¸ûr´äéå'56z%LVÍxdMuxè{ÎÞ«�¿ˆ¿ÿý@½x#ÜøýÈÃ_¼gäþ™½ç�³#;è—&0¦ïo¦ìVýe:â£+[ý‰)ñ‰u�Ñæ ÑáêYÆøjLÏç©ÈŽÏÍóË4ãf‘'Beìß�çâyãßì“Ì–LiõBÁ÷FÂؚǹ`�çÁåè(ÍŒT 9/`¨ç�£F5qõ&š“­ÑŒÍüS€JŽ…_è/êH|^i“¥oî¸í&=¾ãa8Ñç ¥�È4;¾¡ì¿q«£” g1ˆT*ÁD °Ö,\å+â!&ÔÑLç*k¾Þ½‹ŸJ÷tÃÀk)>�ʘìÿdGkÐßkÛ³ÊðK©Pá)�S1Ö©ÌäZ�عåjgX6Ö�ž³ö©B!ð|ì:Í=ñÅr&TJN `ÏU £ÇR‘NÞæN™1 ­ò Ų·VˆƒO�/w!‡»kaŠ^Pògà;…Ðé\š”Û"Å i®s“-IõZ�†¶¯þ�ÒF†ô¸�<á¸fNhå[kæ )Äý¼­j†ó 7Hk•ÔDŸÖNª’~†Ä)>+p–zÞå³åP+zåà“¬83È«`™g¡þ¤Èµ!Ï%,â+îíYR�³³ï(ä®§ ¦D{³ïhêù2~¼»”Ã{,Rª*3PI[ØÛËÈ£!Í÷*�~) ÝÑçp†.¼ƒ—l™›´®GaÜ:E2EgÍd"˜‡h[°NHo$±b›Y¦9+¸â_“®åÛW%ª<×òJ¦a40u(�wøÕ,ÎÀ=þœi¤œg{'aìrQ§³ $HÐ×'ªZAL¸×/O¦I$-^˜µÍŒV’\VË5±Š»-|f±ÎC ³ü3 4l`kíc¿iõÛ â¸¤)ÓÎSH‰Œ9@"’$ÛÓsk1±^ȹŽÎ¶ÀÇW\ 2ÎÆØò@<”FÌ2&’ôþÛÜÂæ®b‘’`Œ »Âx`’=›€*é=øs+¨�m±„ÍOV‚~”!™5žç€8©@#P0LŠ•hÞÁ|s`‡cD«{üÜ·ïÀ6䑌 Ú†îñÆîg f÷À¹¹´ôÈ(ˆýL|ãÞaÊ$ÊUsHñ¬¶ðø Þ%cûE¦¿`$�õ,á [¿œ¯&? uYÑÝL'Xs�!CK‡t¢Ú²Lç’í˜C²Ý³�,„Üd">“¶8׊¡Ús<κýA‹ÖÕ#ƒ��ÙÂ%\2£3¡»ú RXxü„OŸº®[mòÄ�&WéHÓùýùøÖ3Š­!чü­:vœƒa³s~rå²2tDHÉ!‘Š$[KcÙ6ŽÄX/';ù—¯�Ü$™²«5ì#à†nH¬˜›"z!ضn-O�Û�5ä¶ø1±4€¡ '¶äP^€Õ›Þó¶ó7(Ê£Œ§þƒÍ??fU µ°h%f"‚üùÈOí±Õ}=Öhk,ÅŒÌ%&�14æ!Ùx}2F|x¸zäó©Î³s!ˆŠècÅn ß‚W•‹â¤ÁÌu:ª�Þ»–3ß»Iê×·½ëAËøéÌÈ6Sr]§êD°D‡9Ää…ÀÁ2_]J•Èþ8<¡µ¬íÃmxVù,Ó›úÑÕÂÄÖ®ÁC,° 8û®] —…+ðŠ HOP§*ÝnG­�[awSF…•Š0¥Ótœ+kƧ±˜ oÚ} Çˆ‘Õ�·Þû@Šé‰èÿÚÓL™kÎVç 0Lç¹àX¢“¼Ì³ý¢2´¢à@{:?ª:É}�ZQש'rR'2Šxö7 ÅœçqÖÆ€%ÕâøN¯|ñ y�Gµw‹F­Ç¬-¿±d¹O(õJ�îô­½nC°Z-Õñ 7iYg!gßû-PRŽ�* u¸œq¿p¹j…¡ õ Aƒ¼\=÷Ù ˜ê²Ç,©”^!l* óJ$�ŸK±QéÄn1vY=2Ÿg…ü–áΓÛ�,‡ùSŒÝ?yÉ0Y.“¤ŽË"º¡¤gžalk¬ÀÄ#úÄì¶Ä馇£Öaãɓڷog÷Þ«—9§ÿ6õ_Û ôàiõgªöOÑ壸~Œš·¹G«çããj~w¸?ÜžÂÿOßtÜ™&’Ìß«üÃÆÂ㻹Œ!µmçd’u¾zV¿/)Êaw%—‚C¶g錌�e´ª&›…,×[ïe’6Ùžhg’\Ï#÷H•Û$¢J&Ðo|¢�›€š‡Ãš-ã¾älÎ71g¢Ò2[¡ýî‘ܯ‡á˜aÏ ŸW38pZe°‡[ `­lú ¹Ö7Ô2ûª·*5yJ´›½<ª Ì8þ‚Ú°Ó~’6¶´§A±¿Œ2ªóÉÊøFhüõ´ñdh`- Ì"Р€»Lð´¦ÄÎmmá¨ùë �—ŒXÁ£ûDe)7‰È°l …«›!”™âø®uBÖ@*ÔwåZÝšw/±p‹†�Z†¯X7�ïdäß·NÉ^ç ®@G‹�V�8“‹œ³µ™in_´ÎiÑE.c»wØ�FñužÅy„"C²Ì6�°T3º¬F»A~­™07PGV䊞Çïö…, ¤…ˆ ><Ñ[û"­ )½ÎSøÅ¾j]×J;‘·ôœò©mýWÍÖûòï_~ÿ·‘PìÙÉF˜)/fV{í‰�B}r®(Ð í6–¡›Pã Ç6 Ç6W‹˜‡r(FÃRÄÖÑ­-Ú$Û¹�J”³Sžj"AØÎ㸓‡EûŒžÒ҈¶“è„�r—‹¶/è¹*‹ˆ6 Ý€K•½½dKk‹Ïüg(* ”'qÜ&q¾Ò‘í0a'Cb¼­c¹¶hi“ okÅ¥MÀ´XÐålž6ÑMn�Ô&¡ß6b#Û$ôA�½ÊS7 ȸ=°Á¼¶C‚¸Ïñ06wÈ5z¦Sö¾/ µøÈZáÎöP‡„t_¯`+ ÓK“qÖš[JïäÉ27²úFy±¶·‡’$ní´^¦k�]3‰ßS¨)ÊÝ>°ñŠ ”íÓ ÐÑW«&qm;¾/É}d˜£½;$’ñ­ uœ‰ä¾Žu2•ÖÖ’} èeWŽ$:$ö1Ð[TwnÈõò•ÀcS¡U Ë~nl²Á­�I’í,‘bž¢êîI¿C¢¸ïÚ§^ÁH•ʨÙõŸ�$ÙŠ®\;IL{B›I[Ÿ@O âÙH ž`Ê"‘íOHùöh=!WÓ^ØW9]ÒõºÑ‡m'ÛM3íÛ%ýfèÕé~Ø~HÐt�̬³tIóNµòŠí’DÖÍ ½²í§5§0Ú:ìž’¶9•¿£®NIËœò8Âzâ)i¥¡ŒŒVbS@,„Êû±ŽEæ¸SÒt§ÜhñUÿ¤ÆN W)®¤GRj�Oíqš�ìä—}Heâj3¶Ù#ù´g„'鉄žÝgŸ•A½GÒ®�´iÃzR¹d¾GB§— £R�1¹G2mÏE¥iìŽÀWsY©F».’1{ÆžàòyX�´e�—”×#9W‚�cz�XÅù Èà�>–i³¥Òà·¹ºOî{¤›X(Q°žÐf!m–_}À ]Tz°éN0ïL`ê€$�ƒD‚�$Aãj^´ešòeHÒíå…³áépgtF^” !dë3Rigžx@Ã¥êÎÈÕžqiiòŒ\éŠÙ*_='ý£ �uw” =Ä‘˜±/ŽQ¨6€Ónw÷Ïij�Jf'¤�ÓÊÁÝÊrÎ$ݸÁÔò… ;ÃÔó"›ÊÓœµÑ+â…ä9‰ÛsÃÑ­ÎIÅûźÁ÷pú¦Ri'”ùRë‚Ôë?H¤¶. ÿuÉÈ©„3¿ÿ‹'‚ñ€š?θ͊n#¡R÷éç|åCaŸœf_øV:Áô@]xv, ×'©’¸©FWv=’ Ø—FN¹uŸÎu¢�- û$~l�Äú2ËR$’‘XK+L®¾Ÿo€cúÚñ~MbAp7)é×ävkQà>uŸNÕD‘8Ø&±>™ßôù†G¥.d¤p«ƒ(6SUîq2CrZä3‰¦�¦Èe&”ƒYÆmQ; /0’ ¸²h�JÈ©p[Ò«"ÕæÄÒŸ2[cõÀ’õìâ£T$ÓÜ Èd} Êp@š fl[‡¤öO-yIÕ¡*Žp-C’q‡:õúáR†´óqÉ‹óc"³gÊ!7n/iHg´ÐÏ‚§‘­¨‡¤wBéÈã!D‡¤Í�ç y$B¯Ç!†ÜVuC:$mCÕÀÞ·s“ð�(GúôP;è¸tŠ!IŠð¬æ÷8;,SâiÖ‡«$ƒ…Óª­Z†$°‡JŸßIhãYìTƒ'úšCÞ £Ìv@Gq¢È-àH(Ãã¡\»7hC’š@‚¯­È’s(¢ÔÅš!é ð¸O†$] õSMÔÒˆt—O¼;�H—¹ÊÞk©°4"Ýa$·‹‘~0Òíæ#ÒlGn ’ùF  ù• a}¦ã2‘P„Ù¬íÙ,” á8+{gDkÄsƒ)èˆÄÄHæ±F¤9¬6߉r~—¤ë]'‰u¤1i°1xˆ½õ0& 1vnãÇ«¥1¸¬Í/ïM2&M2櫜3;u_—ŒI–:…¬o%•Cû˜¤¦ñ}ì“ƃIyœ�IÝ8FKðZ�9ÄPþo.b[˜ŽI~ËlÆ¥ù*º�IÓâq�[MHUc’4p•©ãó1I؇ˆäH—ÃD¬�H�;xcúùkÍÞffCÅiÿ+öϹ’V%W$þ¯t¹ŸtE®0ð™ã´4Õ ôrƒöŠ\äUî1�‹ò<”øª$ Ó¥wõWÖ èÌIþ|Eì@�a>ÈC7➢*­" }"�jna!�Áõ _£Z-�dÄzí“ø€Ü> Ö<žr"Ô/ Eòžû èdºã·éúuzg¡­C5ΦlLVè �Ò %–+k`ÍféoÌSÙš?Ø¿ÿPÙŒt¹lõƒf� úQYc¿…j&WvydpîÆ,àq¹�ñ7p Þi²Ã“.Xmc3Iú`Ä�ôÛA¸“ÜD¶$êp‰o& }BÂØÞ¶±}>ag¬ÔcY…ûMà /:&$°'¼(×BBvÂg²"ù ‰Ó‰Ž„£À ΟSæl"kœ ‰Ï‰Ý!Œ¶^OH�Nres´ щWÆV¡~ gß ‰¾ `X†Ü:éDO¹S ¹IŽwç±™$MÐíÚ­ƒÒ„«�gîk’U¯#Å m' {½ð¤|Mê³uÔ>:9böeJy«.b';'&@ózßëq¶»+|¿]�ׯIWº6¹~×5/KÂ×›©¨vCêá†ãë}Û¾§Ä¾Áwð÷4í^4žH°¾2FÜëm ï@UÞ�šÞÙ»‘æwùU »¡ÏH8Ô¡âNªc¤å(dlLJÂ^f’åéRˆï,ºÿ‹þèÐîpßÓõ nîïc„2¾?7‰÷T fÄý0'ÄRá}Aw;#…,9Vl0b 7)>†6Ò|:©;I ÏàßÖ=7BèNA)`µ‹+)K¬� ®±©§Cû*Éé´Þt_kÖ’^ Ûÿ²ÄîM°ê€}yP“Î^fqdÿZ§�ÓO ÜZ–ÓØ7øöT÷r™Ÿ¥Oøë¼ šJ®ƒœ›î1¨þ„ l-pï³.÷ùQX£#ȾZ‰p´.ƒ Ûùx�2³g10„³°½+‚PIî¯Mó@¬€2¾åFá•5b„v΢-ð¤`©^fßø/Âï;ÜÇÄ’Mž´-öi}ý‘É@Ñ üs)¸ÚGÒ‘ÿkïÍ»ã6’=Ñÿß§@לJã"µX¶»y§»_q‘Ä!)ò²(û¨�Þ©ƒ*€,ta©ÆB©Hù»¿Œˆ\�ÌŠ’Ý}gÚ·¯-‘@"—ÈØãÇ?_�ƒ£ãŸ¯Žƒ£Úü“ààäjr:â°GŸ’*ölÏdU¡P�â1í“(1ýÊ}Ñò¶k•¯ã”áG†¤Ÿ´¹M "xÅÙݧÁG?dÚ>4ª„™üÉ}’kt²2’�²ö +(‚ ¥Õ­ ©´$¼ �ËÃîÀrá¿$õÁš¦µä¡šVÜc×Á�¯ ä–{Üà-mŒ¯šiÏgòbÊy’‡Õh¬)%0 ”ä»Ç)¨Š0iD”F¿{eH‹Îž0êˆïŸÊ³'£ï¬€,øT£™{�Dyb"€^àcÎ[&µTMÑ›äÑ„�ßœ™aE&˜ÅCí`:o |c…ò?˜œ=7+ØE¶›Hí{ÁA3 Žs#{¶›@šM‡G®ÂMÄŒ‘T¯äþà ëêqð):hÙ‡@ Éf5P€êõ¤ä¢�}R}Hû@Æ ŒJ·baŒÿÞCµ<_ËDðkQûKe&3S›š DÊ,’u³ê²Ë/ò2çRŽW-çð¯/ø!ÒxCÜÞypÌœÄíyÙÔñMQ.âYX×ìþW½e7‡çS˜ëÜVì�¸4 ‹­tŸú§xÎnÙ\â”±æ!c¦wwL™«Úv§ZòVROãE—‘ ÁvT|6T¬4F~§œvãé ïú¶î¶”k})8ä) 9õ É„o¸®™á8ã.½[í"K&Ô×Ið•k˸EéJÈ)^c®eÕb²Ìê‹×@‘xg¦ÌÖ«–ÓEǹ0„îP_°'0ü©ŸÝNðBì_Œ—áJ«5 mÄ-H—]¨[Fœ&•úÎËøP¬Ljo™•ç%0§ò$Žfl)CI~‡;¾ÿñypPÔÁ5mÿq”,f¿Üß2�(5É+£ë¤C°Î““[µ×ùÄ8Pßÿ¸#xÛ,oÛC—x ‘gÅ0=¥¯ê8Èšðþ>ÌHý]@‘.ãL· ;˜Ì�cìæ…yGÃZÆA6Puk… LU¿²ÏHØo˜Ég±2¯W „×Ù×F WQVåuõª•%ãM0û2i¦¾cÞ=Ÿ“˜ÊÞNW0H<Qˆô”q„ &òÒ›öúÞ8ê+þ*”¯òKGäç½òLÅ”Rƒé�’�M±} ‘À®ctY£ *„|—q÷¸‚�ˆ—äiÃÿĨx Iû@pMN¢Š+õ+ ¤n‚~í¶:ÇU‚vWIVzœ­íVŸ•ñÖ¡ä¦F>¶bÒ�Y§â›†àß ŽèF¤µFzc�) ÷Làáèßá»ÎÁ¡ð9¦Ä•ˆGÉV,ê»9» Áóy]¼Ž�·;ú*TèYÈwžM>!ì��™=¼a¤H|#À¹èÓáó`wRÌa‡53‘­*žpC©¨¿´ŒSë Z%;2‡ßDAY²«V0‚·z7ߊ_¢Fþ&.ìÞ¶ “¼—8‹y‚š,äš3åtyf–nŠ—7³âfr-u°öÝÁÖ•C=õ.Fb4®ßT%x¹ùÒõ›'UgÿÁÑÅTÊu º¯�Äýf$±ŠQíOèøâRhÛ|~äMÏÒ¤¥øÒ½oiÜKÁùK”ôjcälÖöqYËÃò,9÷ðÓ„Ð_™fMÀô#f§³k—ßCù½®ý°ãGzæ? ÷ ÐîMûÊÈ ñ?+Œ¨n^}‘±�nT¿*têŸ 0a5™�âjÈ@r“³òŸ²¿Rcòoñ)êô.Gg¯Û�ÞÓŽÿ 3§÷¸Mïô×qQUñâ›3,Á&Nަ>ËêõõåðÝÆÁåûÓÉù„1Ôùžk$p�”kœ-ÃÏ¡â¶Pm¤—k•dÀ2#®„” bSòkÃAèÇ }N`ʨÀ�°oÆÁ}Q2"¹M@R�û“Æ€: [D~(I«£øbá8¹®×‡/í¾›Sf€m(Bjµ&àgf³%š}¤ð»j“¨ üSõÉ¥]�Àaž3ãæxw å¿0ü“·“ó§½¶'`òËwF´ñ®'}g,f°«q}à~ìÑ{�°ÐS=T‰Ù®Ä t·€CÇm둞"ÝÏs§_DT[3ò8²+�ã%Ü™€Oa±ú¸ƒPzúå��–aU…ÕHJ¬�?‘^vÐ0,­ã [5qpK'Áh¤ÚÄ�{=–æ/“×Û2ç+àü�ófÿ“ÜžÕÇà5&ÌÝH ‚�˜ý'·æàVÆIÆèƒqp‘ƒ:·×CÈ�/Må«Ü²ý\1¨üëH‚M>Ü…žÙìüØ®�Ü\0ëÕ¬…€ŽÙCÜ�#†Ú/¢­!Ô* œÝ©E)%»‘³zAˆ�È·ë°nÄBªfîö`‘w¥fD—� ì®fSx�ñ‚É 7¾ªš¸:„HÀРÚv2¤@ƒØߺÓÄaéûÆ�q…þî??€!{bÆÅ|CÿMx?o¼ö ¢@ÙxM¾Ê¡Q‚w2à‰È’ž#ÑŸ‚ëZ1‰˓ˆçz·À.nؾ3«Ž�B±·’Ý}-º¼I¼Hö"z8˜F\Ãi�$Àú&Fƒl…|‹qëœ)N× »€¦™&o�GqV´Û €²‚áM0´S±-=ÊÉ™œ¤fàÊZ¹/,=�y¸¬Ûf,Ƶd©MèåÊ‹”òÿ¾`)-q nhé>ÔUÉói6Ó$ :Àófîš6¡ï­àÅ<„&-Ô¡fìû˜¸T_PÜ©øiËm? ZMêžÐ+û—Ø2(jXa{¤<Ë“|ÝÔžØèÔ²–±ô˜åæ™cÜ!—™<ºuØ�¹¬Åê3ìq¬î¬æó¨]�ò?›I†.ƒ—bíÇ6·­Ò—°<¯cÝO‘=4u]ä® >Ïs£Faœ‡Ì‹ÈêMµƒÄ¯AqxçZQ_¡lpPó¾%y†à¦8²Àñ*Þø—71ö†_®‘þâvD§ÝV¶UÚ€ƒŽv$Xö”$·ÍM bcŸ7¨™Lãgºr”ÞU%²…ØÕ4RaFÐr=lšvÈ^{³oÇ6öóSKo_­“‹g.Mó�²ò0Óš.©"¡W© ò'ˆJÌõˆþã×PùJd"æ<Ó¸©Fdy]i@fNJGŸ6<g<“=qÇû¼È“”ÙTð¶Ø¦7Ým%Ô¢�™-®F„¬n;GƒtÓi ݾÎþ¯ìÆ^Oá!ëåj*•b4TÏ(À«å¤dú-0³»� É8ZX.–°5xÞï=ÂÞÆU4aîj ¶ ó[ÊÃEÁë69®xf};F%o6…’Ò®+fMMF§f(ÉtMA¶9©v€�X¥3+Ó²Lë³Ú:!s³šá9-õÐÚFúN]¤…4<�–6OåZ§bÛClt×CmmW¹h–׳¢±ÎåíäôÄ„ œÄ©4]‰_ ÷ —kJþ¬›ò6ž¸‰2$D\B6碩rª2-ÉÍ·æ�¦Å¸ýßÜåÍÇÀ©°¥]GÔÊöb«“’Šä>‹2EþzS”»µìßήÒobÈ?Rª˜`ȯfë:|FÁ8³p‡¦wœ+FNîÚ-þ2#……Ûî‘b’sª£ÀƒÑ´ûàÉùÁSi8§K�•6üMµœæÁ¦vÕdQ+Hhª±¸*Å÷œ»Ýî‚…O“0J¹º =Ÿ�¶É�ôQó«¶áä4¢:ÚÏMÕ¡ÉW»¹%ºnfÂÕ•BO s¥™öÞ¹n�{~EH–zÏêªcáûþTú»œcp'˯ÇÛ‚ ¯OG¼¨ØIì<ËGÜIN/fØlC!³8‡JNë}mÞQxWš5ÛÚ˜f�Y.¼½Fê¶SâD�®Õé&Ãû¬è©áµ,ž|YÕ¥ý–ÀЫ8r™žS 'Ö>«×ò¨n.5Ÿr#S4P@=a§Qä' û;åÁX¾²�½¾¼c!ÒEµ´]‡KCi¯š„¬EDCÚ̈(_EWõU\1‰ç®— ò½ªY,⪂ƥ‡ÜEʘ ¸áÅúìN±1µ¥b†y@Y~0‡Êüõf7Š‚�ôWHB:%,uÁFÓÇk¤¶ .7AxˤM€Ç�+›-¯·e3ïöm“Ù]E M5ÛGÊà FÆ27¶K¦Ü›ªRT¸F… Oy�H¬‰ô ðþ»âö:ÛÏÛÂQJêeûmqM¯Ë{¼^Ó ”+u‚K%ÌQîÈ•z‹Jk_žS/x¸É™ÀÅ%ÄvWê*œ7ätÓCå{vI %Ê“ZÁ4«àøýÙúÓ¼ø“PzÅXÔÈþä*eðñ{ª3ÉÂ{3µï^¿ÁÎa#Q  Õá£ÛpShMïQ]¶ ¯îç4Ý1JVc¹*FuœóȽk¸B(A…²d&fÙNèuÂã¹Dã ¹ £x‘:Â…}a½Ç?™æÏŸ§Þe€�YÖ)”êÛ„L·™§¬ÉÌ[£ŸÆ�! ɔ֒kãAlŠÓèY»Ò f$íå­¶¸E•»ŒÞ2ªzF€CÏ`g«úYլנN±ë”>ïeÖ>£oÍÐ¥Ú[Ö¡·¤ñ¢žäÑψ<· ¾b×·h<Œ²�=3º±ë+ÿÈ#²9ª¯O1ˆ›ï-‹OhÆóvyÜ ãVµ¤ qäíôèÃ"äœnÿaÉt p¨8€NÞˆZTª™äyeœÔ#QÛ…;øï�˜Î¶´³�ÎSµtØuosR«ÎÓ0#EãV_Žb(/üÄ«dž ³ÆÃš ÿIÜÿÿ W0n¦ZÕ€†Iæ Ü›™W¤c�e@œçbAÓÀ\eÎê ]„i«sÊ%+b ¹çL NÈØžsªŽ“r¡Tù1Ô"1Õ–ý�*hDiU>f¯ÞÔ<ë7Üh5&ìè£�JûÛÙê²¢µÎbJ2FdA¸àvNQSz‹æµÍºÄÍ¢¸K•eÀ�©j·Ž—QBØ…¢ÒK�~Ûµ Ú6êÛLr�ŠŠÉïæ5@&†¢÷¯-±¥ù­ÙfßDz°\•ðÞvC"z\Ôܵf&hkLRÒ„ Â=*¦Þ'· -T͆Ë5Æqô—º%-w ¸ú71ÓÊløSŒ\�`�ëÑØŠá…÷l½*“uÜ0|.uA úYgE4«D?äÖ“LK°nÏN®àQøS<›¾›…7GnF¹Î““­2Õ+ƒçSÐYÇÖO{NˆÿÉ]Ö�4”“¨¸xF‰ŠM Ýu�+ú «ï9õ­‹{fÞà= ïÙÿ�à®1àzd‚ç³ûDe™I.Kƒ‹6sNÔíª ¥qêo¹°{"AY™)_Dª’—Y¢Ž:•)*Δ·žÐŠ&70Ï“¶‰ 1�£�gõp@”(èÄi]×BÉŽ|²OÀ^é§°ŒÝ\tR®Ð3-_#âIÕ¡Ž!£¾]aÁ‘ÄXJdÔ)�ƒ�*Ù„KNÓáš�<=¾ØÑ�«ÚÃ<Ë6¼“¿¹ÑDV§’–êÔh%Àâ€)P= YpOÝ£ çˆRÀœó•G2‘ƒ“JËqÎ@4E]dq+doךe¼¹KxT�‰¸6Y¬¿”avyN•Zc­@…:Þ8ÚÎ7nÀ”ËqÝû²*"­î,Lo)äž»‰:Ç\Óóà¿ÿé§™,˜R{D,¯êñÝJí@&æŒ?täš n¨”q�²ÞÀ ëzÏ‹œPU€õYqp—˜‘8ïY3ß߆�G=€U°ëeŸF;dw°SöÅ„‡iÛ®iˆôõMãR»ïAqÇR”x{Ë œÒ¶�t@×ÈB.<ôlü¼¹o¤ø‚Œph‹L–FX¸-†¾9Ækˆ…Ée�þÄšŠ’Q/Ûè‚=¹5WZu‚!TrÆ:.ÑøÌ+tVT¶ê¿.ÐLý�Í™ïX÷ Ò¢ÙÔ¡Œ¡à,YBNuG¾ 8ƒd-ÿ¨‘ržè‹€3EɆét˜)sP¯K2„Ô”˜ù#ÙT+eI¢„„¸©Vz5ÞÅmk³­ŽØP�32¬!›�A²D]ôQ€‡ç$ômÀÊ4Tõ¼“šdšK­pÉ걌@üyA�œ}¬ .¢L²Y^œi«†(˜J˜ gz§’2æ³ï�±Hbé"¢³aÓ$ ˜j#À QæfëÈdí’ Mþ}Ò¹ïiê¤6±B—Šœ7BÄÐ}ÆÆ[„ì�u N4úÛGÙ" Ä ý�æðcˆm0yL¢�Æ{vÖwí`ñSJ5Âמ‹?¹×ª§Ëzÿaî-‡–'T´.ãÅj^|¶=öå->GJËÔ…Ñ!§âŸÿ«&jè×"¸Ï¬ˆ×ÅQO}+Š�¶WN�#öâ«`KùÅ\�š,e„’:Ucðá5S§Aãl|Å�ïŠzŸÿºg’º¥ÎÕupM`á9úõB°¯9?›{é;kÙ]†(óQ y�ñä3È<Óþ¾§7V§»rCi³×jžA@¯BQ*-ÉÑãǽZ›Û@ä³÷4öèUŠžŠG(1 &Wß6ìîÝ Á¨#8ƒ!"fª7¦÷8}0G¤Ç`Ê…øœb >BÈ�Æ÷ööd¶ñ�'2ÊÓnR‘ì.'?‘‘6˜ªX ¥õ’�ñº(ß;:ˆsQZi…ï‚\5L=U]Þ!‡yL¨}X³¹‘ÎAœ-d¿¨ø”3;’\{>ÓÉÏÐ\â Ð#½šÝô§"®C‡¯á^põ¾@d$=ˆ+÷v[ˆô=LbÜHC( ›¤b‡Ï¦züyÍäãsÊÀ¾‚ô\wTKw–KaÖIÍ2‡¡¢¦P4Òøýc'�ž§']ôí¿–yäE8B\ÈàmXSq�±LËóßlnXÑ &ú}—aS”ñaÿ,×Î +’ZúÔp@}ÍÑ¥/h|s£!G~‚ŸAù¶%6pàî„`jš¤#ÈÔ¨ËKðB¹+j>LÎ'ÁÉä³7ô_JW|þî88˜œž¼#9Ó�j¦¡¦ŠÁðˆ°ãñSà^�|˜"ßÖÅan̘\ˆ#(˜<¡oØ)Asz­àkÿø_U]ùí_xâÿzÆÿnt0Z‰„È­@OÞI~c­iB[üœí/»J{î�4!�‡‡•î=t—ãÓ®69†½$½€¸¹­wé9÷­·Ç]˜‰NZÏ—Ä—….0¢·Í�=ºq45¹£ŠoÉMøøù˜(ýœØ=‡¸K´xwx|vv,'ƒyî½EY�I�ôJ5¹ “Ô‘–¡¿ÈUH�q°ê¦$á˜ÐþÉ•l:œ)NëÃhQ²ˆó*0)¦6»wãôâÝõÕÅYp|=’mv¬¤£)ŒÌ<‘ý#¥qJ4älŸ13wû6ÇlÛ[Ö„P}ôŒ ë´y¿ÈÁ¼SìÒEžäRƒ“=ÞRúb¨ìEÁ2‚ÞG ±íŠO×árÜÉ”óÉ´™²‡½ßE A‹ÃLˆáòÓ· pX" ~ݽ›“�•5uãq|òg÷ÕRIår¤dëgÃere"<2Y×_Q”›«ª§×>©®öÒ²/;Ðf¾*šEÇÒ—Š�%�Q‹ë%‰F!€J{DØN¡%¾F½ø&é| S…©«dHè…xÀ7˜f �*Ñ5Ðu�ˆ³‘au¦¬Úœ„Å Lµ·�ê3ËUsТ ûá²N6¡åzU¡®õqKOÚéäÍÑ grÌ€>h¬ö?ŽÊÜ v|;ªÄïœäça¹²kè¶ïñ?¡@ÀKtÆy{Ïä=BÂû9L“ˆ¿ËL3ÅwOôL>{r«Æ¤ “MåIÈ$Œ¹¼Î�«ÚÈè×ä¡ÑFcyÔñ­YÒŸ V`ãäÞÑ2ö<Ð 8WôH‚7©Ðx·x]ÆñÄÚ¶÷HyPþšž—<‘ @8!—�ÄÐv[¿;¦‚‡Ó\-]Qظ٬IÆ&„ùÍa½¦BL¶õ¬`±æ„ªÂÙ¥í˜;<9ºÒRÿ2LçCôvÈñKk�8Œƒø3‘S{µ¼Ø{¹÷ýÞ«1ÿÃóg/áÏìŸý—ìŸ}ÈAÞÅþÙßöc÷7ûÏ^ýÑä¤õ‰s´ÓûÎAÎ1û÷™z:ªMã|ÅLpó£ëXø(Ö`»Q*|á7\�úh P£%…usƒ¡¼gü€�1û:4Ìh<Çæœ�ú3îD�£²X{~Í‹©IÌ›yù§‘‹0Ý}`/�o±¬»|Ãé™™„’ê¨+á,æŒ÷¿‚R WÃQÕß ŸÂ&>—EéèÿŠQ‚a$¾÷¹^ÜÆî =õ¹Lä÷h÷mÜVõ2Ãè®�\íÍ[�^¤4VòSµš½’Ñ ñ‚Ã9R 5.²¨n<”¯�÷ƒÃéëŽ6E9eÊÓÇžÙAˆ/†û/Ytë£É µJOíd2Ê%êm­ôr[Sâ`þ‹’ÌáZ‘² k'!Õ·ÂT__¥H sèxUj@n~f� 7ýáÖYÕÌÚ…}£H|JÎÏ.§Oê yçTŠâa$›Þõmï"-;(³ jÏþk³EV€„1p;w~ǃÂý}›`tÏf0öA_ÑGÔU§ §FO°-ÇëklÈñTÂ…Ëþ ª*¡Fç0ú°Qÿø|¼zõýØ×䱨§–ö‚¼Œ‹ÍËs¢l' Fº�¾2³pÐÌÙZe7’(6öaÀ�o¹Mýô¡Z*¶Wo鿤Í’.hÊNòb{ÔyZ‡'ò[e` _îäI>|wÃàzr®ªÀ V•Y¡'}eïÌeiÉ#½‡ìûäxfû]-‘G¢Ìº² Yä4LWÒÉgú…Çhvÿ‚¸?»i?¸û—¶»ë‹,›ï6^†ôJ6E É ðx3Yôo"ŠŽˆ¶¬ý—a‹p.ÿûUÕ“›ò!ÆXè zî&¡}IJÿrÝdU¯Cð5nZ¥3œ&v�o*Ò–5¢Z³h±\”{_‚SÍ•IiîUõ©(£K¿kòæRê‡îäBsÇr܈ž�}ÛaÔ „ëõY±pº·Œ ÔböØUQX'øž×ðöH¾D9Üã'ì? äœÎìs2]Ä+Èß5Z†Àçz{oõAÏÇü4ÜÚ=€J’é"Ì9"ÿv~´ Bñî�»e“ƒ†a«ä�çzv d×XîÈåà–hLn4~ÿRØøûü‘!ð6ö}4—È’+޹)Ï zÇc!ýxÍqL¸­êùzYÆa­¿óÂjóHùZÅßÁåšÛ‡ßª¼ºRKª£häkÆÜí¹"[\ÝV ©b‡ºû�&nâhÀjÀ²Í#ûYQ¶ø»zåŽ1Š|7гÐ?„ìu‡ÓÖiZ†u,›^AeäFNí oqíÛ¬†…õóñ±‰pÍ‘úö!�×zËpârW¶Œ\´®8 @Gže$ÆZÃØö#Wã8Þ@ „M~Î[^[à@²ª6Ú?š„­i–mÒ\`•µ»ÃϺr<é‹<5FGõp†õ¼!~¨¸FöÒ3´s+o\vÐqÍ»RûmHã9uyúzÈHŸ�ãA÷i‰}„~3.¿ýžúÂ÷�›GCzQ‹©š, ËÍþSBì…T›VcåHUƒËÀêÌ.„ ™,ëÒ…\'¨„íX;»~"Ò^¬ûn¦ƒ�t‡0?î¦ íÍdÈ­ö¶Êu›½©ŸáqYcdsy‹4¨5Ò$ˆ¬#¯Æà]\U²öK3ëÆ6Âë°\Q¤…©.h6ï?LªÜZ„iºBòäÚ443IC"ZÆkšì€‘DMô¬¡óËĺ†0[;ëR)'rdÁ嵎o@W ”ž;j›MçÞ‹†2 ZäÀ:ÐÝ"Ü•ééú¨†ä9+kˆ‚üÈ2¼•±Ç¨SÜ ú¨¯  ¸Í`xP@,ûôZZ|šn2ˆ‰Ø“ß-ðÚ€z¥d¸µî}~´›Çqäv7cF²‘�ìõ_ƒ@ptc™ò<ޝºwˆF%Þ NOxn ãÄÔ""‡.�lí ºðä(NÛé'šI¨÷J£h�‹�àç‹þg“F©Zƒ–yGœ€Œµçr¢çE»­ZLj�÷ûñÆ�`e®@l“}†{(AÞLnÒ¸fl1kxr©—l5ù´dÓ~ à–/Ã}4ê¤Í�zŸC[^gùû6Þè¤gé­ S¤UÖ�7EsæÓ8~]íd³øÕ…�3'cŽÀ��Ø»g±Èo;9ƒ» ‹×›!‡é%€¬•ö¶uªqÝ &Ž jd�ì{·ƒŒ<ø”ÔË`4FL”`Ù$¾§¢K<¹¡v:Ÿ|ÍE†åÓ;8X«ç·(ÞKCŽ[Ø'f¦5çðÓ¹1‘�¹”¶óg!6AÞÜ„Ïþç3,%z6à‡âgu¶ÿso½\wàL è�>cñ�ßkæˆÎb;cj?ŸM®5+ûqÒ|_Šsë•×Å÷6<žçÑ GB ›)6°)Íuki%á÷»…öGÔ•’=Ó㹤ð–ŒñðžÚú�ˆíXÇÙ&¤£€×Ú£mFbOü;zÅþÇÅ «‡$¿ôùKø4SŠx…ì<¯ ÌÑp˜œzâ� ¦©šÑ8˼œ·„¦%BRZÉÖȽ]æ;$DoË£ízR9Õ¥=Ês  §{”çzpâ¿–YˆÃDa”Ùko!• ÁØS!�çáV æ}¼¸lA‰µ­ p1Ma­Q³ 0Ùö6¥u¸‚D q³!PÂ;!n3$LEÕ!ØÊT¶„) ƒ"‚}¢Þ)3qØÂl¢[Á¶i5.cÿ–âV‚ãU‚ä$„ &¸Ö<ší¾-Öìâ¯jä¤úoJû7¥ý”¶fœ<��pPG³¢Ln!;€În¿vìb)Ð&<,:U¥P¤3ˆ’]%$3éNxüئÁ¨Y³dÃÆóâ¾Y‘ðŽÂ½àTlB­[a�™éý9Ì"º, u¡æ+”½¨'¸ „н>ªú—Ü©„‹nûÆ¥Þ@ ¿Á=Ê-;$ir$«Àeº YYó Ã’—mԛߩ½ÓŸW—v®1�j$‚,A£˜Ôó–Û´UÛ%ÊÊäH| à¯è5qÕŠ�éKoƒ=ùÝñÎXsŽJÕ²N2Ñëa¬°¤3,S�pÎV\s/x‡ )LüØšîLl~üfB¶V²õTF²C¦Õ¯!€¸MwÍ^ðEFÍV_Ì#ý+". /)ˆn�¦9³n¦•?ï“?4,¹6ÆäZõ…­¶Õ£3È]ö=ó«LJëT£Èõ^4:�(ìÆbž[¿®ZœYsäÐ&”I£ä˜u¤ÓÙýÏ “o\º�ø*\3‰ouÔ*‡ù²°ç̼IJ[Þ�+ûݪb<>çf+8G×±»}­7K¾ 1W~‹HyòUÉ õŽmHã!jŒ5‘¢Œ6gضó‚ØÒ™†‰M"eøW=êÞÈ£Òd©-+ÐÀK·}f› Ì…±/»Qò&Þ¨"#ž—í^3�f¥°¤Õ]Öž$�ó{7`U¬-w¾m'‰¦‚SC¶ t+�«V_í݇¶â–§ü—a•8Qqë&Î-Ô%c =–û»6ØóÛéÂâ^|À=»ë_Úö,Ãü+ˆÍAåVd-ÌPÅ¿ ZlSÕ‡nÙO¤žWЪJË*¦dÑu—Ùò6tô…ë�¤‘à'CñÉÚü¤á Ð Ü;r"y,ì[ §ïh£"zµ"E­�x¯㕜tÜàÔÛm�¦o̬=ƒ¦hžÔcj½eMý#;_³á&B˾èùÀ~hJi�Àóí¼A âžú̱„PNTuû$Ä,aÆV²ýʘ§/€ Ésªp¶úÖt=ARJ9Ì™+Eéœ-íïì¹94°�§ÎrWpäÏU‡C‡Í’RÖÍÑv„~£´,öf \ïwŸ3"ÃHŶKÙú® ­¤ä^i½áà],Ê —º°æ®$Q[Ѝ^÷±†z¨mºz…€’z•yžÈvÄ ´zö:�ŒiMïŠø#–G¤Z?W ó׉=sÒŃ9£efØPÕ޹Ïó2®‹ëÐZÈúu]Ù„ÿq70æ$UG ãøK}üÖú®¬Y*'*÷±N«¸v´”>À«ðþê ád©íF{¡½AiLû¹ö $Uºáh!­Ò€=V=bfÏyR—„c M9o¶ôÊÕc™AY@ò›3W‰:hiŽÐZpᨖþŒ7Ѷ~.L7³XG*Ã¥7Ùù=ÚA‚b¤7h¶gaw?äNVÛ�¸ÐHCº³™n2hÐÂ`SÀ¶×~‰çSü%{ð6®ù ©6ЦÉGÔÉýç$Š­ÎC­¨Mr“N(Rx`�mó©ò ôÛSp.¨iÞHö¤¹u-ò·#jòb{èŒýœÿºñàS4ˆ‚Ȥ­a µzïêÀÑñ\®èÜ “§'À*¾Žõ©�¦”:ôíY)|ÂáV8R ð¨óîˆbmGé9§âä )�€w160ÒÚçÅ7.XÝn;±ñ"«ü|âð| ”é àW8ödœý:Èh#*ž!§Âœ>C†3#gB®1ÐqÞ7"2ŽôViçLê߯.àC’ˆØäÉìJÈŒö:`82}däíÜs„jðÈ ikß5)#xT'êÄž}þ7AËÂW²’�Ÿ*å;,òšÑC%Mv®Ûõhd—"Õ&Ò‰5Âc“E ¹RÑ©‹Ì&-ÿ¥…i;sÀ½ð gê"*I5ÈЂeÛhŸ³í¸;aiÂè-åe­-WØ�«Ä®wdõê9 .¿ÈD õ–MLõRmCq›We"{±pñØH¸Qµõ«"o*ì[+¶`Z°G:¬eɬ†Úc }D)Щä%wLÊ1<óÿ"!1ÖDJ­½°oe0•Þåz*õe-¿‘À3íÎévTÛ¦p€6¤ª½– ¿KµFÉjÖûÁAÌ^©ÑåÛ» E‡…�„ľíR¬#ihC`erÊUˆôUªšÐ¯D1(³*3°âuG¡Q#�…÷˜øµŽLù9v)s�*ª¾˜nó€•%·!6ç)“P½þ]À td᪼P“Ãq«yÙ]R≤гÑL?ͽ�þ¦y~](MªÔûkäÐxèÙ@ÁhøÂC mî ,"¢êüÙƒŽŽ(Tn¹š n›Ö†GNÈ%ç쎬M<9\Å“³¢°òá·ñ"Ë+áˆù¿üؼ|.>~m‹ïß"-=†/NÇÂ'†{Èk­Ü6î«ç¯ö)K˜ZZ0nÃ(š"çI¶åͼf;Õ ý@/õôÙH˜ £W…tS‹‡t=Ïúú¬`zEb‘ÏkÚl…ÆËÑDù ÚŸµ#ç‚ô@•“ç¯G�׬bÚý;4R]âÚuܘ;6h9ß´è‹>E!ƒ“œÐ"ù*—ŸÃtßo8t¤£ŒœäŒó‡½õ¸@âîGœ F�Û]�b;t�Í-èNbu+,¦ö+�|˜C<µ ™£˜\£ šÃŽÆP¶?"ö;s¼fÞ: C4Óð�$­ Û·ÿ„Uñ¾ðßšªp\")±¯ßd8hÔ·MV5xo¢¤†"œ×¢‹æC»’ÉÍo€>x­æøA5mï—ãðn;+]æ:i^ „i‹º:ú‰IÁä c$ké‰Naû£-JA£î4TÞ¥‡„�¦•%Сëm´žíûm¹í•ÐT¡�å0‰ö¯¾^g´aÐIþ®”ùÝ…8Ú|ìZ�ßEôæ]X‹k Iæ¶+Ç@=˜«+©%€~͆�,P¸ØõE­ÚŒ%¦%qD>ˆ§˜Xv1·Ž§óDï«‚úª°6’�ÿbÖÖ3^‡ÂÀOUg‰#âÚmXÃL¬_ÒZéÑ:F„ÅðmNß‹ÎI œ ã\ÈŠ !þSB�Xý}bÇí 9]‡ö,ÚIê86Ç@‘s}ø‹aC•Ð帗îÝæìxL±‡"KòÛ×IZ»³ ß` dD–±U…µÍ›ñWãcÞñ|Åï<ÀœTKÙ‚Üüvr¬6�Ë,¡¦É®/1C8Ft™ñrŸ‹ íÑÖ-šwfÔð–'ƒ´ìßUɆ÷%œ÷à d�6*®¨c{4DÃ8·ÐÑäd´ú´u׉¦3QösÞñNѽ〽S5B–>‡yDÄ~Î]ŠTC¥u�ÿ¶°Éƒ®�5ÚÍrÆä]ý*)$¨s…’ú(³MÊH½¬U1€olËÙ¿6ض;Õ^×È„g¿.‹Œà0¹f�Îoµ-€¼ooØšвĵ}Òäø€½šlrÿ^ýfóØÍ: ��„Ý ¹�y¿Ù0ÖuüÙˆ"n?Œ¤±eñÝ¢©µ&�<‰ÎÜôa>Éÿ´Ù¤¥þ´aÈp_žÍ²‹zL»èq¶¸nð]`Í£vËJ¹´£˜ÉG¨W¸‘^|¬Ð¸ lìó¸u 4­1[Hï÷ûV» èÊJ¨tß M£¿ ·Óo„Uq|VÜV¯‹rK°Õò%iª=c-X2’Ml@½ðaó­Ë"j5ô"l ek››øƒÛÞÈ8 ô”ó¤ÊÂzaEæ²–éÝ*±x°ø»íŠ×€� ",óøÌ&Î!AJA¥Š&SC:pªç¬‹6„Þ0¯Ã´Š/‹*A�’On‡l/‹û|OoD<–éHí=•¾® J 2ÃÏxøñ�Ϭx6§bÕnħMŸÝTèp”2ÕˆÐã�f_Íì?ÜM�˨»þŠ!]ò\¾‘Ñ*ɬ�±}$Ö:¥ØÚ'ypñöƒñuGG­Ÿ—øÅD]}…ué/“[(ézÅGáwXÍhv]ä©5åÑ6¤†Ž RÝ1ô¯*vñ€�í Û ^"Ëazë]R¹+›ë¢¬ÞOÖiºš'�Fz¦�= PT¦• œ¯w[·ÝÓAcÙ6³½“Ø€ôÂî%32)N.yáIÂhe#%¶€NÙ‡Ðí(ÜDzOoJ Fº‚Kêö„‚/Q®Ç¿Ë›l—7×ÌnµÃÒ »U@Ì »t\ŒÓ"•UCîÀ<(êþl?ó)J¦iì©êï¯Îö^@µn ìjwdw[mÒî±?A9ÀÀ�¶¡%éÈCQGÛ’Ó7k}ë½ÄAyýµ[7ÆÈ´^þë!ï>ûݵƒFµoÊÚ†gÓ0¬A/ »Y7ÉyÞ[]ñœ—�¶9]«îÝÁ ´õ¦¦1òu*Ð:ÝbéÙÀ[{¤ù6™ëâi’À†®¡› xE·lK8Ø~S¾�VS>Ad<ôÙn75Aý_IöŒð®@8\:àjMZµ/Ê׬Aï¡Áì4å"­"©öé4N"pk94KÍŽÔ—ºmáR ÌÀEuWnP{ë¦ ¦8Ô¹µýÞ e—}š%ßr§^¹ïËŸ@9Ø;†iNðïÊH@g[%v¾=mo�!µøoŒŸeá½…§ 7"ã]Zªí^p¬Ò WAß%€�ÄQ¾¤[œ\z˜êMu5ö™¢ú¤%ŒvT ñ«ò˜XÕÍ­}A¿Ž�Ûg,—£¥¦w Ú¼m “T‘f¯ kefì°›mÝg@ ㇣“éäàìøhttüóÕqpt‚�Æ'£ñÙÅ›}¨‹ïÎàß§£ñÁÙÅáéþèøÝ›ã³³ãóãÑøôäŒéoÓ‹wg“wG'Wç“V Œc$u[ÎRÏ"­³= xÇY�w„wÉ­¬­ =âøÎUïÕÒ&ŽÑŒ#oŸ©¾“ª&Fô�äeS>�fX®ÐÚ‰äuòùë¿ 3—yË(>vOíâ0�û° à|P�Ú°f‘ºó­°÷n8�\NÎNà÷.õ‰#YÿSK¥xÎöuáÁ±¸ÖÀÌ: ÿá¼Èc ò>1·÷ôoœÆñÚ[»9M˜™€ðAt|ŒE„5 u$ËGMÄß æòí%õkG_uû« ¡„^.º½îñ:Ewíª;w»*¾XF ® Ó£ÈB;$æ¾hÕÜ )QmwÌ ~ð¬m<ƒl B¤Ìlˆ6^rÆ0Ä}XûÚÏëë=ÊËøCÑL·ÏµTÆî�¨…ÿóÁ¡×�‹vOÃ3®ž‡°Ña¤•Ñq 2ª™ žÜ…¥¦ çO©ÞÈ™—(s¶0 !M:“�j¨"BÌO¡!é8¤šo4*ÚªZ0ŠßB ÒÌqp fëzsÎôvG±ì©i¹áw拆k³ÍˆžÅi3÷»•õô0§àyYÝ©t#¾tê¬d·yOYc|Km^ _Å€Ü3$ÞÁ0þê*Ùó…Þ…`²rÛÓå !Öùi�qÊwNxKö›ý6ÒÓšä�$O=6�¸Û-”§U hœ¼£܇UÈT²8ýÑ9zxåŸì c¢4}-p;–ŧ3<Îì­€1Ó"Œv׌P­)˜Âu­(P\dYñu÷­éµ·{#½š±Ì‚ ôÜäcÑ[UÓ`‚Xÿ*‚öÛ9¹°ß‡üŽ[LÉi)Á`+'GpO\Àð„NmôÍd*{dÏ–ºŽ£°LVÈʨÙûMÑ×íH²¨»æêô¬NQjŒŽèõ“w¬J¦�iˆ瓳_&WÇ=ú댅ˋëãw×'“³³³·“«ó×ïÏf“Ë˳“ÃÉõÉÅ;ÛþÆŒ§RŒ)¬V²Ô•�:½8dCΘIvòîøøêäÝ»… £àæºß[•B•ÞøúíÕñäzvýáòxöþÝôòøðäõ ³‡nÎûw¿LÞ]ͦ¯¯]Û„óG�OÞÝœQ8oª8 ÒøRy‹:�ëàðÚRÈ}ßÄ­fÄ0z¹$j„öàÜæyìÈ[ �u>½^&ÕòÑN2¨ïäe4¯Öaöرu:Ç#ƒÃ°ûoC}÷¢.Ê€ÆößÒ¾²áº<�' ̘WGæûÀ�q°ü,‡ÍhÈ%áyÇël‘ï•öà[ìQ-è D††‘Á»XƒËR( üG“<ºrã¸òžžZÂ(Ë¢°¾Ÿ|„R€Ëcåݲ[¨3§V8û*1h?d™¬Z <  _ü‰‹jÏ•høF€é¬—Œ…uú/bõ©žBóQ@æ>ˆ÷èŸZ2ªßÜù;� A¾Gç>ÝÎ8ïLÚÉ„Ct¦Q­Ýç/Ö‹iD‚ð8d]Î.?Ï¿õ½º4Ø q„Øb`J&aÊU™;Ô�ü�tÚê¼§Ý,5ÕY‡Uõ©p¡h•Lx~eØ‚h�9ñÏ XÑåà+¨uÐì&æ'œ ²Üèv×eáÚ(V"Cî�ürÈŒHÍóàÞä$cŠ>;|D¿<<{G›±?C‹¦³$o>’±¹êð”ÉÜcñu/Ú©˜âD³‚¿ú“î/ew'¾-ÃjSä¨ÜŠ®}^Nש‚M-2€liTô2ŽÀP}È‹©øsw&;Ãæ€¬R¬þ 6Ø £ô[Úc;ÊŠr^¶¸ËFp¼0Ü„Ä8²ê!°?öv`¾¸éÈCÊ"O DÒ”¥Ã6~ÃqØý™Ðã:ši¿à±¼$MBt鉇$ÝjI™­ûÖæÈŒsUàs•^›½àöa ¾Æ7¢�êáÅ¢õ´V6ßÃÌÌU‡Ñ™º¸rd'¢B^»ƒDÏ)‡Ý²U‰’ƒB@Þ,@wÞ™ÛÑ(_<s@¨éêøzJ*Ðß‚ÉÙÉ»‘@V·­ºõî9`¥[ýfî‚…ãß¾Y0qUWl %ïD»žýÄ¡LQ:í¼Ø4µFøZWÉ´s;‘iú”Ì�ð>¡sÙõI¥e¡˜>Þ𦿯¡‰ïc9<üÝèÍÁ8 ½ôSlÓ ?¦ãº,A1ÍðaØ�‚\ä»üÅ [tÚˆa<ìúúßêRû‡Zºi³©Bu'G^°¹!Ãe�¼r_±ë nˆ¯©TZ,x&‚kÃ?Äeœª»»±opƒG*_ßDåB¥á¶) ’L¦m¤£ûëG|óE!¼÷¨aóvZÛ=à;£ ³Þm<~ˆ°4µÚј1Úz¤j rî›C›hÌͺÑFi0#8É™èN:Rþ×­€¾k‡Û©!Éb#,¿3 *˜v° %€õ¸Ú °>uaòÎî²cq»í|bb¬øÄn�ƒaM“u(Ûº¬ã|—”+»|™²Â1�YÆ9Â(z]”ÙÜÅN]äwÓvœ³üùw˜;ìPª†`Û“ÝgM}À0R·±ˆ Æ&ÇÄSçéB{�Šu‡kÅÅZÚ#ÿݼàãu”æ=§k˜â+è4¡airÚÜ:<Î�X'<Ïã;¯¥­n†§MÎ,­}làê_2nõå›F­†…�~·«Å;È:ÿÛ_-ÕuäÓ¶Øã>;¿;D 6³g±�’¯f›êé벸wà&o¦ÿy¦Ù+²RO˜+tÚ˱M3ä|Š.ÐÙ1íOÀ“+g±°'kÆ}Wãà®Ú{*T™E"¬uÝ œYωWH`¼Ž#í?¤P1ÆE’ýB¿ ¡Ð"Ž.ß^Žƒ/g?äà*¿ì°eû’²2z2p0(oëÙ7æ'øÜE݆ïY§qÿª• Э²jJÓsåÌæ/ɦC/:¹izû6!�@Pß�¾¬ ÈWÝÙ¹æ‹ÝEYD‰sKô�øÆxµãy¡NGI[ÛX7åbZýÛí/êòN7ÃủLÂÊ>¦#‘GÜû ãôص¾Îs£—¯˜åÇŸkhÈ�ÙóPß0ÛUÜãZÕÙj Xv>ç×ÎzÎS2~‚šw\�‰{(šÊÍäÖqö4ÜE�T¢øƒ§ïããÐÉ„!°–yÌÌÍÞLl“ºàÌR˜cíJbå æ–¶ÈÖñº·T,ö>æ&kØš÷@ß-ñöû“�*Ói€ozªH®ìzA†Ÿ5Uù¬Z†eü,¼ÛzÅNh—ÄÜ^µn©uAm?]ò¿èÄ·ÔUHy:ò“uZ]+Ç †f³íI±ê-¸KØÀÖWˆ™ÇŸ^[î–;Õä4œ7ip\ƒã“Ü3‚_|ÀfxÝ›*us “¶á¿—Ðç\‡²¾È¦[¢O3^Â/âs)%s´Ùó»Áßð»é#ID}5ݹ/Á‚:;L.O®ûHÃ&ê5&§ºh­�´ôƒþ¢€ŒfìÔè/T¢VWx¡s‡0[Ý l}hÖ ð¦Ã”‘kq¬˜ŠS‹àsEÆFý5ìŒ-Ö»qéH'Þåª.SòÎãÉH(s«:T2S6ú@ñF­>úÎHkuÙ�¹™³ \~ )ηI¿¼=Æ©ˆÞiîÃN­¦8Z®Déb‡T jQ~ðÖ¯1!ÀP?žjؾ.Sr$#¸¢óÃK"x‹Èì/Æ¡oôÁƒ°¸@?%õb .N�èkÙhkáIþ Þv eŒ7>ŒäŸw_Øs>‘*›ÇÌÌxìnô¹«ìÛ.ܰ²ÇÜE™ü€ƒÏ%p 6ýÁª9vŒjÂ;€D�|¹Ô% *sʽÔv»?iµa†ŒÜÛ—Ö½m÷cžüá)ã‰[®˜ ê¡çò]fÌ "˜U‘—a+Sˆ·KÐæþ½uî<5`®`¥êÓµ1£Øˆ+ÛM[.Ë|иL�õvñ ùŸöÙ&~«ösÂT‹0À®Íj¢o:ÉŽìË� ±Ý€6k¯5Ø­M”­iûþÊq5Ça6€ÞÄ“K�Øþ‡s”êš(þøy>7ºñT½ä„Kæ®\îd¼Ú#6qäÊfðÑ©lÔ™“š(÷‚ó["Q·âž`éÓ¾É~CÆÞÞ(…õlË™é6¯¢Ê„8:Á0¼ÅXµ¡q¾ÐÃû²á¨Âвö’w¼‚øUÌ®õhÅ\Ð/€ø)Ï…rèÉšEÛ×,n…Xý«„Míô¢N}}úÈA3n7ða9¬…�¥m ÞÕ†¨Æ,|k'š–xH] Oe_A^ÖþÎaKàPΖP¿ŽÃ¦.~ dªð÷Žu!tÞ„>F­~DØ"Ðb¯UË È›!xP­09;£ç#Æô\DàþÜ{Jûå`f¦�r9ÆLT<f^I¿‡g·1Å&˜è¿lòGÉwuY¤È²zöð”¥Ö" ¯ ) IGÐ‚à’§É]òþƒûüS”.5×ÐÒ0¼rá’º±IB½ ´ç:8¾&Ò½è¯Ì�¯)ç¥=‹*\&k ¸1±`~E ƵÌBÝs)4jêÜ1cYB÷ ksýÚì�~ílë˜À;-Úþø­e÷x¥¡ŠVLsà€e’9¼H�ÞccbÚJ‡ +¶ب!�]u4(í9i,pâðžÃþ±yÈemq,+FÞ: vÕÍ åÈÑÎ/l–ÞD3Ô³5ÊÏ»#æq8} ä·é ¦Î3Ö�’Ç�B‰dÌ^CN~Ç~åå¯0þ…cü3mp©f佬øû=T"o‚c-a3W „ˆ+,üj1R[,„é7GÅT¯Gg÷gE¬…²Võˆ»jU˜'›8X0©L!R^ñåÛ‚7ñ"Ya6)9 Tc ö/6­S7Âr¼Û¤FÀŒèχ”fÓq#X?ÏŽž£å”f‹ÇÃìÅ$ÈÂU%�Q– *5‡ÓmG:ø¶éÆ=2îÝ2dÓ‰`÷ü‚â /ÚxHÎ ÔΨi¹×hïð7Xg§û͉t‘›¶Ô½æÌ,Có ÝŒ§ý³vì§õ+|Ee¨gÒ×qµNjHïJ•1ǤdÛü�yÁáÚßÑògÛk‰V¢L@€H¤Œ :@8Þ”¼˜z‰>Ì´w=pÐâÉ_E³„«,+ˆ«qpÝi ]¾ú/yËÀ.H– Jø�H]gÿUÇHß%¦OkChê‘+E¸—á¿U¢JI^³VÜÞâ²Aù¾bôWËþUO‰|¶aM\€™ØûÂì�l0�y²Ò#�©ø-6° ×g¼Šãõ¡«ù p‘$cZïÎbTõà �ü0ÔɨñZ!à†å*ÅHiq{Æ´�´Ÿù�Q¨ìO^ÕY`aubL>óZD6‰W˜ê~ý�¬ˆªxa{…ýF³+ù�ø©¢r¼q1�"Nd %`×.g´1‚{ª¨½!€O¢(�›u*öžß Óþ2“Ü–Ì´ +T½�?fq¹Š¥A½Ñnª7?Š[´á]ŒCé÷ûWù暦ߣ8DòDnÉrÝ«‹WŒ•(J;…rZ+`i ÅG«”Yƒö þfÚ ™Q‹ýpס—;áy¡{’ê1•uÀ&ǶŠKfNŒOßü¥Oït)L"PkØÚ¡Ì ˜?Òv¾Ébšúžoî§rj”~Ó‡$ÀÓ#Ä}eÈÚhù-^pfMÂziÏP…ø�7ܑ޹²ža¹Àßo‘Sûì¯ï0#6ð«^=rRZÎ/凾já8a )g¼ŽÿmI=|~ô\ ÛDñ¡î„:(?l´ŸìþOÙî^ÿ^󩝨z²Xï‡û§¨ƒ}Nù{ôLHõ^à H1#äOvMv‹åR£ã 7ãÅsûü?+kÀ¡»¥„­òÂJ‘¨1Ø|Ì£Ê#¨ö…•h?|(|dWfÂâ´oZI•‰-ºÀÒñ®{«äX©ÒùUÝ­YÈr/ÇJ—øÅ8‰¢¸N ¡¸›Æ qµ­'29¤ƒ? ŽÞ_½?vI˜C9­ô» â]+/'4§ß𘎴 H ‹œlqÒ«`Ýð‚:0+ƳR²Ö!â ƒy˜ýfï6¹ú&ó–-ÓåM�µTß’ÔŒ�c›¶’Ýémù5ýç”Íý‡`ÒݘËFÜ‘=0$ùGªæž®²)_8‰XÇ”¤ e¨µìï hY/üˆŸâywƒ„ÚjB ÃAœœžMÎ'œqÍ@톮 ¼Ú«Zâº_g!.+EŒƒZ÷17]عèy<[ˆ+šO~)ÊèrÑÇÁÿ.Š, ÇÁQÙ¬ÙUº›ï=ý˜ßAƒP#Dç:áï“,�Eƒ~ßöˆ£džPZÑU„›vg‹5u¶À'�f\x2XKØýeòºµxÙØ @ÔªÆßÐŽYTŒê€›°1j5Ñ�9#ºÀŸž`¸ƒÔݨ�i•tÃ�ã`øÛ=gõã¦Iuöýc¾=à­›ïaÄοíÒr£»». ú-±×°=;¯—ü|º³‰)E W‰ß:µž0 +*Æ{] 0ÐÄ„—EÅé€û6•ÉH\ z. f{¦äÓ왤˜¬0@  á[òaŽÝ,Æ�cbÁáP»Ó^Ø hBFm†ùa®ª±ûJq�lDF^xíŒ0L0a:aÊ0¸5®&ç;b}d{ëé�4l‰õåÁtiÞ‹vi*2†Ä½Um«@”6Ƶ\²Nè'ø8:j+§¨¨§ÝÍú8Bìe™ÔI”<æué³3É’û88ÖÚ~@ö S]‰ºF†è&û$81ïY{(ãŽr Œ•:ÒRWáÒ¯îî˜æTáEkyÜ€¡ðpÄ^ïÅãËn•>dç#�”,¤�qa * ;ãFA¸i߇ÎÙ‚\ƒî ¡ØÐM¸Æ.6Z0ÄKH_²l‰ˆ*Á¯•YEˆM©ñ¤Q"'ð~ ÷’B¹+Q®ÁtÁZ¤½ê»n&Ú¯ÚY_lÚOjj¿)ûöMÇCzÊ2 S8N¿�™Ï€ˆHÙQq/ŠZ•ßn/ùþ)èFï�*…‰eŸø¾´�ÝÜihlß š‡s+nêõã·àõõå?sù½Ÿw¬ZhE€YíÊÙnãVÛ Šç€›¦ûKî]P÷ÜgF¾NÍêõ  P¸°/ÞÀký)oÓs¶þyZ¬Ìb-åuÃûtàpž|nËfݶO·Ãñ!it¥ªq �âÓá!õ­Eþ#8-°#·t¢Òuî®â�41ÅÝ)CNèosÞôÉo}&.mS_ï@aÒÆ91óŒÆÌRÅw¤.Ãiž8»,ðdÓPzEÎWçÇO\Ã'Ú5[](–ž[è ”Ñ¢�wzÌgŒ§ë XR´~»#ÆÏZÒîÞŸ%Ì~€þFGMɽÆYÓÍíß³‹µ„‘N{Nž_VýT¶UíÇ@ÍhGsjˆTÿß/ñ|ŠcÍ4³ˆ!³÷ãÎ0k·ãTÎ`Èìë¸Õ¶Á1i´+,Â5=sÝ3”‚Öá¾’žYò]™¹¯šžÝ_÷QªÛøë:î:¶ÖŸû¤åg|t®^·„h¼Ê‹Oùl]Ÿ“¸š œÁ¾Ë… ƒ¯S=gDu~>ÎPŒ!uÔz¤DUWñ?šÄžÁ×f rb¾2NÒ“”©üá¨ÌWÔÚÝ£b¤Ø#Â6IMÀIT‰WB›RrÆùM¼ªäF [×z5WØèÛózöÝÞ‘‡uÙ­~ùâO/·ªÂ篼‰�+ñ¿˜­“°VÕŽˆëÈ|[JìÙ*Í<8â—ÚR4=%¸àŠ@ÝJ«²œq )¯¥aÛ.QüÞ "h¦¸ UÊFÙC×]‚6“1lØ66:ý –4„¹¨Ô@ „K{>Q{I¯Ú@A•ö>£ÆþÙ?Ô !y:.âqÅ7a“úÊrIª3®v‚m¢tÀ (í1â:§KY-: dyØc fo·dÄ1kÙ>.L˜Dòm3Ê6Á}¼Bi8Œ Cëív¦ÁmÔ$긇éñÑ™,‰ïˆÒ,›Mƒ¨uÙS¯í[1YvZ,½¿~ë€G\è-£µ$MÛ¥Xkhõ€¢‚Š(öu™ØAÌO…¿«Tò¤¶7„Ãgžs >8£Çݑ͒øÝ.Ï×_ßrߣ_ÉQuƬùÚWšy E'¢\CÚ†²Ôªë=¢<öÞ2MT²­¥šŽ„µ.bÁ™øÚ°êMš�µ_”lÖfwœ¡‘»{ëqÛC{ß³ëK¦áF=y�mp¾ÿñ‡¾ÿA´¨•0É« ßͰð–ØS†ë�ö¯²k¸Bâì5ÍÀÉÙ´"Ö¯ Þ ‘¹Ph hÜÎ|  ÃcÚ¬j 9¤¿k P‡…úÀ‹2¹°×Ly®ŽÂ�ï¢HÀ03u˜ª…ú<á•�qùkŠË$ÃÁ­Œtð®•k–†P¥ÏÃÏ8eËÈ|ìÒ= b(:ÛâÿFKîM ‘0næý^mwb¸Ô�g¯Iu \¤LÜÅVÿÿx»Û ÿ­&^ýášCß09ŽcñµXóRÄvðF{¯Ë"ãÍÑ|EÖœ´" |æ_Ø­`EÂ4€¼'ªûcÖl½œ\ýAͧ€Õñ€ëòé-ÐCå6°e5#CÏ c")!�Nù+ ψÌîF8u ÷TI:â�M¬¸øÓ0‚JèŒbãéÞɶnŸ#0Ñ™õW¼Ó±�‹ó8½yLŠb¬DàzMy(ÃðN0­Ý`°OŽÏ^·ˆêi ]“ “¯)²P^#ЮŠg4í<Âmó^7RÝpr0Ÿ§ÛôN5�T qºóÃ5!!õUsï"ž¬ Ð�Ö¨Kó )ƒ­£Z™¨+¨R•,=žÜyݶW‰�ÂçŽõU ¯Ð³?¢@h‘ÊÛšË|«A®ÖGm†{^í… x"îŸÖ“áä^×ëþc[7e¼{S¯#ÃÇç^{´r†hŸ|NÜMe^©!Ë7§xÂyKmºãž2Q�‰Ô%¿«+~5]Õ$¸O±3,¦ s$Az‰ã‚ovSÚéY�¹;ò¯·¹�]«U”í`Šð<…¹jP˜::›f�j/™Ú+oÌ·´+ÏažúAïYòê+r¿£ºv¨å1T׃ÐÃî+ lÖqY±Åô£S`IŸu‚bÿ}a‡RK@”:Ù[ñá §:Êä† × cË(U7¡wQÊL ·µ‚Òí`¢‡àˆ ì@–®0L€DºbRsÞØ—¥F 6t4f´DÕñÀ¼G„ãg¤™¨òbCð½¯è‡ÝW‡¹Õ•Âà'ò~åM’ß²h¤ÜÕžõfêlaáü Zåµ¶¸.ö,l¨„濊™=–dxŸ dû HÑ­4eVL”¼ùwF»V0€A£‰ïUAóã¥Ä>!%—›��/´Ö‚ð­ö#•Y9Q¯¼Ü|»°1-æË„ë$¶ï/1Bæ|T=‚l½Îî|eu™ù ™65eo˜ׯ1/Z�4fŸ4HG >‰•lt±ì‘ ý�>Êî¥VÞ»¸·Ê §¥÷À\",�ä8ÐNÇË•Øáû•´(U`ù†Q†R@E~Áþô+;jæŒ:ÓäÞé½Ö�¡µö�)²“Ÿ™½È¬7ë\èÁ;ûoƒ­­ËÍu!z½·R“›chÞê 8è»*ÖìJd ]…ÖþÑ`Nï§ÄÞ~²ª° ¸ù�b#š Du™^øS²R Sb�‰ãúb—B2~˜³Md&Z�ÚmZ WË“ê%'{Ž´ImIÜã­—�ñŒÞß‘4| &sGczoÈ¤§?͸ Í&y’AÀºîïŒÑ=3êûŒnq-B(íë¦)¿œ× (‰Z…‡ýYæ kË s\à5)÷ñjìY”µm(QØí#~{ˆ}C’e’¿hÊE|ømáÃbÝ °;¶qf:UøvÇ�ÃË÷�NmGC5 `פ–¢#ß:¹w�qè?ã.PmÓVDFáǘçïO5cŸš"¦Þöy‚)5Ðxe¼Ln—VúýÈë·!E¤øg�Ìɳ‹or2�q~Û“�ϵN&->Y=o­ïëÍéQ¼crˆ?¯gR®Â` b‡Œ •§´d×Ìã&»)‹i^a�ôGK½c Ê¨´ê$g’û.ôOê™ÛÖÖݶQhõ†êH|f­­”>Ùˆ8:WíÒI…P‡ŸâØÚæmxS‡j˜Þ]»dr}âN�.ã �¤ø'&øÿSn„þ|+퀯9Éþ±ig;÷ ³’åW‘›>É%Gn�(ìsœ3QÖu™Ì'C{ypŽ"Jþö¤¼E,oüE]™­éƒ³}°¡%õŒ¬í­dëQ3RÑ1�·EÄ6¿Ž½�Ú½×­n‰kÞîÕÎÛH îkEøÞº<ÝÞ¢Ó{N¾<¤~¤ø°L¨"¹�zˆŠ·Í8æ«DpòyñÙ‰(ºÝWúbæZ0¶ý¶¼1<‡UõÎ>h´‡Çþvìh F¾ªŠ0ÎA1uwfKÏÞ’ß7ÕìEÐS΢ï‡ôÞꊢÕfŒóu õüºb4ˆÕ€w;*¸¨Ì¼FD*c«7hèlwâA‘‡¶�5Xpà�'§­jœÎ‘øÔa�Ñûè«ÑOE–íÚ œÕp>ÇŸcfŠYÝæÀ°~ºÈÀ¤á«O!Y†ä7 zêQ7üþÇî +vc_<ù�ïbÀåÎ’�üލ¿ŠB9—´§’]tJÛ &ZŒÂÈbSŠBÒccYbv|PPÂu±6]dðƒ¦ãèéwTvX´zÊ'M>ªE�hÙý¿Üš«\[3måDðƒ(½Kâ�P‚&¬+AH÷<ˆ&Y…fôÜMñb$ê6KŽj�Äa+¹ï2~ •ík åÉ6ŸšCŒàÉwŸŸ¶˜c,ÐÔ›qÞ|/�}GA¦¸J@—Ÿ 5áî-š=°ã³M@Ö—EÖ{Âo‹bµ™šm»W#1E­N­=¶ â.XzøU’±ƒ“%hï eí�©Äµ7¹†bé:wï×:Ü¥kX’!96ú<�µóB"ÝiåP[”TCw”»›ow¹žô8$ëG° º[¡«Rö¼×þ��2Õ‰U·Àd6Æ7Œ+ïâ•GÞf–§(nJ)iÐïKkh¨ÚVüG©Â�ugƒ�ÑZ8-ûÿ%еÊPåsT2UUÐoAm�ê5NFž#q�ãHoã5ÝÀ«+¢¦dÿÓ#ÊØ•ŒK¯7khÂ�®ÙMÁ¸œg#Ü 7]_<ïRÕ¿-Û êN‰åÂG05C5Åâ)~‘ô&Ò�QöXìÛ\5zLÜ‚wPÁ?ÅÈû«3î.”x)Û�Ñð�`ü½hª™€!²'ž£ý¨@²xÛ qøInBÏn{¾¤+0Î¥‡ÉàŠgwM Þ ?«à¡m!Øv‡ÒY““ݘ0"Îv˜Þ@sü< z£#²Ò¶Ìd ¤)Óº@h%Åõ° cj2¤òijOëÙ£þÎwÐEü^¯ÍÜv‡(P@ W0/5é­À�©Ó~õFÂÚ;å^sÑÔQÈ.ÃÐ5ÃÞÊŒïßgåíÁÕ!;˶½K†„Ÿ3 g2Vð�$‡ÉÏ(åòÂ#ái&h£P½ÛÕÉ=[ d¡úo½‰"\>¸¦ª‹ “4™ ¯–ÞíäV)bö ÆIê¢HëÄš<¾µènÖô_û¢@£’ˆ!áª�?F%Ž«jmÝ+xB(O�Ùc3ò%¸”yf~Çè${]mÓ9Éæ×=:‹¹Uûž¤á~¹ìÙ_|å¹gÕ|±z•2.\ãK[f;˜}@�Îz÷lÊfáÙíí:èöê~Ívtˆ@~Gïê;€ J-=Ž“ÄQ¿f¢RÊþÖM)û͈ěÈ&J­ô¶‚�×"5²rl±P„¯ó³î®ßAÔ ö­·“Aâ^N×»ÑÂZ²¤¦ŠË�Ô–=n0zFúß”« Õê0W[…–)¤¶b©b×2Ô;÷]Ÿ;f¸�ñ#¶y{ÿOaÍbïûó‚}¯îùÑ̸Lx= ¨#Íw™¿&²Š¡;W„õ¿U³X0…–±�øœý×QP,@Gð5IK.çÙ`]¬×q4�Ë»dÁôöÛ&‰¬ïÔá uavñ8sÏÛ‚‚_ÌMF¿ƒÂYð†Ø«ìÁCŽk%2Ëä*˜J?ÇöÜ̬eI“l-žûV-€nT½‘Û‘ÌùV'ªyAÆB¸Xf®~�Ƕ žx´Ý§T|¨vbø¶”õ= Z³.�*ŸÄ­rA2�‚ŒÜ…¾Î¼Ð:wÉJoÑ{U DBqt¨þ}›†3樺¯]çÙ_ǘi±ÿÐóÍfRbFî½ï3–‡�„çGôÌž/�b×v÷à§¼«;*ù¾L<'æÅS,05À‘‹×…vÃ%£f[!.qÛÒ¼59�3RXê…D›wÆÂþÁ™$·&’I¬5DÃíL ;Ð6s÷µ‰K �&ØØQ™UÂ"!ê6rˆÑCsñþR„k€}çá4 eUT²Õß“®þ†÷iÕÂQBžq×—ø‡àdÃRäbQw²X]‡ÅzsT0ÒELœù:Ì èTµ&j^-o’êº4NÖ“È Ãû-¬öƒ{/÷¾ß{5æxþì%ü™ý³ÿ’ý³ÿ=ûgÿûgÿÙ�Ýßì?{õGÔ\ÉÞ¹Kzu€·¦Ó3q"ñ'˜ât^DÍ8¸O˜ÄŽk\9#î~líXh)â@»y=<¬� ¶ÐÌ;ˆ‚�VÓÜ„ëvU�#â14@8Œ+6Y;RqÿÑ–…„½w`?Ñv+Ø4+AаH[~ÏÆh\ØêÉÊh@§e»íêY~CØ©CÝéɤʜ]ÒtÕ#æi��s½#=›"u0k³åX%TBÙžÔ/›>…˜Ö€›ñîQOœ›#PÈ('î’æþÍEk8#V¦ãŠ{F‡å.8S½pH�Ö3mÙRq!3JdpÁ‹E¬À>ÇëÁaÁÈÞîL„ [h³ Rôc‡â«'VNsrÄCßwvé çŠð§Ü.�§Ðº øÆPV gQ¬’øºvfý2žq\_Ÿa¹�]y%¥‘©uˆ·ºïK_8fÖ5ÆéEŒ3*­»qLø”wIlM¾Ge�ò9R&>Ì$´½±Å~sŽxéÁîÜÆ”CyQ_¸vý !’�6­K§»=åæ*MAVCViZ#ETqX.–Ödø×ì!@ßòhÒÉe�Ù‘·þFM ?Õ3Ð7A벩½Ï´î¤ˆªém¥ºpT4zaoŒ^,G¶GØ�Ù/_Ùù ùÒñÛ—ôëW‘ý]�È£Ÿì¿d?þU®âë0-rÞ�-¬=K�Ç^ɇ\K‚§^ªÇK£±ÔÌ‹„Ç~’�i©6ì;  Y=^ÉëéRØ­ú}Ð3¾ÛÊÄvÒí†wGV{óãg£Á®<±$_¤�Ýø`ˆT­§çF|7þì|ùL> �-¥;¹}+F„£aZ 9žâ4aj]¸ðÙÖÜãSÆ7ÉgÛƒØTB:ƒÉÁqã{6!uw(kÖ% •à¹OÒ$òƒQ[¶HBàbq¹™ù¾Såmè_£wÊø6¶.€^À_»> ‰Qõb—?‡i÷P(#/�¿< ×à¡f2çœFp¼!dNgÅ]ì¶Ñ i×Ù,3‡C€+¦ü¡c‡ÊyÊÝð�•<2¸x™ÙJ‰ÜF‘vy¯ÕJZ³>”—ðvUß!°|—Ë�’o[³vÂLdÇ•ÔõýÕAêµ+ÛÞc»µ?¤è”ø†ÞĆR¶¼MJÁðÇ óàCˆ|Ö’0ò“*@LZ'¢P(‘õm­*¥a‡‘f^œ»|‹Ì€ZF#}™d0B€àS¯ÚžBÑ—ëQ-&ªïÂÔîÂxCZ¢ «©K£2‰·¨þ(–Þ=¨¹ÿ ºëôWaŸŽéôÆNÓcœƒ¾.ÀmÖÛÄb6‰£IæŸÙ `ð]‚!/dž`‚nY¬×ŠAt&ˆŽÄÖOù³Â5™›}ÆLßê*¯™Ú\75Öur0EÚf­O”ô·–Œw f¶ƒ å^N»{ù­½¬n×j×a nT›Óô?ôN5R¾ä�tgÛ?úoßëÿѾWŽ;\y‚.íšÝPd9ô…`ZüµË¢3DÇL¨X�ZŸµëyEHž—?8�pWôJßVa$0Òm®óBc@0‹oJ(ÉßâX~ß µdö�ÕyuG<™ [ºù£þ�xè?+ôc÷t =F÷�&v\êyø/ÅQz#JL-] ©Ýþp\Ù(¤îFb^y¤Nîߪß8@eϪ<¹ü}cWɺg”“KÞ”„ˆö·€ý—‰¥ü_bÎ>ÿ‹„¾AŒÑåà ,Óõºuâ–é‹uJ(ÊRäuûì©�Ú‘Jâz¾‡ÿ‡Y\/Ÿ?±Íÿ¸¿ÿìû—@Æ‹b¿Mì~Ïc¶;÷6ß�ƒ˜Z‚ûÀ6å€`? £/Á¥>C|+èÕ°ÿ2òyá»�×ð<ÿ¿ëß¾ýûöÿíÛÿí}ûÒïâ|Í¡’o"éªÊzb½º‡Ù=¹TÞi.0€ˆË^6ôs°¡«H�þÅchû¾Ä‘›®,b8qTƒA†“Ë»WBòÞý(d/dòJ�]øšäÿ/5®ß*ˆÑ¬o˲!Öqyî°}†Ø± eïö’l]2¥Ém\䀦ž,V/;d‹Ã|·«hÎXá öÄä,‡¾®h+-> ýý’lõ‡ªß`¦×;4ÑÙ=F-T /öóE¡i¼ñÛ¯h¼e�b¶Ìê2m—·ëެ.£é�Äëy b©³±z?)ÅyYÙäçïvD+ª 1ßG¾R jèÒTÁeÚTâÉ“¼ÇƒwyuÌãÓÑ( ¦§Ñõ¼©f9–Ø1f¨”:z•ˆÞw†à¬ö‚ Ž|ßÝ¢Ç7m©Öñ½-`u…IÛj°äçE^;çeûúµ»ê™5 -&6Néð–ŠEeXGö.Á¢•ìûŸc®ÕIÎÔw‚š6‰Ý4IÓÝ$ß…ÕË®Q<ŒcõpžIƒçG’ãßÐdgL èzÀo¿Áˆ?\—ñ jîäísëj6&( Ø{èœU˜‰ƒÐ0jF ff’GÓâ¦v"%Çe§‡ì·ãàm``qtù–)€õ…”*î}£¾5w‚Œ©+)Äv[˜FRPJ>tï  ²â&®*6«0�ºkZbFk@Ïn Z‘p�Õáš!²&gžad~ô�K,œºÝ4O¿o–P/|PØCBZÝ;µWÂaz99g*DÙh»EmM>€U_<®Ûms�,wQKQ&« ÊÜAçHÀò’R=ïˆÎvᆙ8ê¦Øf ˜œÔÌEeEzÊ.HU‰¨ø{ß'9åŽSJBÅiB·ƒý�ùDç]lU¼nü�êMg8¨Ht^Ø/×Xn7á=b/§·ØY�+Hï⌴ftÇŸ™£| ù°å¤�·U¥Æ7“½Ã=F- .v�¯�,ü�–�7¹­ð[–mVöF:l7± ±¥VÚÉ|åRÖV«Kl£èØØ»�kq•;ÅŸÝÙm|ó)ãuS£eîGÁS·iLt0��ûºHç÷EãÊzócшI¤|2îr$u2oÇ+éÞo·§Ä¤Š_Q~’ f3ºÞÝ´â1š¢R‹WuSzîuÐ<É÷ò0‹ÇêúŒtÙ)Ù4¢Pè2\@�tª×dàˆZhí�F¿>ef¢6kû¤™.Òž´0€Üº•èñôÁÐ à£D‰‡yrû ¹ÙØŸ‹È¦<9³»š¼f³¤ž{tü¹ìÝÒ¸x ¸‰)dôV?—î0hÿféíÉq§yŸ»ïcH ‘9c™Ö‡M>ô‡*:3Q!=éËe˜:|©ìÌÊá�}\ÿýFÌé°­Ëz®m¤�¸ÿS¢DžâhV³ä6wpðÅŠ™ïìBžÑwU%àŒxoíYäèÂÂ]æÃkø»ËãÁ…08¾  q„x— v¯V—¡åíVÄBÊk#VLÆ;›.b·Ž¯çv´¹û‚'9ÇîÄ—g€>½Í!`Sv9ÊMÈϱ¿#zÖ­ô—Ê*3ù£ÒSh“h¢m9êc×¼Õ¶¦ë­F÷7i?5x‡ÛÖ?pI]i‹¨—�u ÖÖƒ�ýÎÀÕDá×}«(“[6ŒP�¼íœÛ ÿÒšÝã„ Â�øR´å§ÎK¦6ÓdøÆr³˜*\A›X�SЉ‘21{wÊTä!´Šød~ë«%»- µõ+q0ËnîŒC–Ͳ"‚6™Q\c“8��lê%„ŠÚœv̽lljZï�n6ÏíQÔ±ÆætÌ ;a6Îë¢Ì(‡õa²@+ÙîAž¸uOÙ)„M}‘®bñäÉ¥#9‹ÿþÒáÀ>耣y±ªP.½�û2!17í$¯vÑ^X±ÙNuï,=* ë¥Õ Dw»ö«Ÿ–ŽËc÷­§™�Bƈíy’J)Y]JÏ1ir> #;zdžÓÚî ÞiÕwFÈï˜|·= �o½žÖ ?ÊÆ§íú[ù�Aµ�c‘Ú^ÄXžÁ’i›ÎRÛ5Ÿkh–ñÚÿ›ävÿa;ÕÁ Ÿµ [o.r ésÀ;ënŒ�h­kBÛa¾Ú:±/ÿ’>7S0Ÿ? ØÈ°¥<Ãó·ö?æSäôãà0‹¾;ÇyM]BÕ f©Û1dv×è;ðfÂõy‡Í9¡lÏ Ví�~vlƒW$Òv·œ˜–lº/ln†J‘ñA&Þ÷ϰòN üÇÓ׆·•I”&ïôbÖÙ£òÂHe]3jcS€.Ìö8¡À‚fÔÖ'¦-ÔS„}}�ù2[ú`’@`†é™+©ëRú*ìkËTñøý:-€7 Ýþœ ä¼_¨}ãC›PkâÁÙN‚"ãHÛr(öøGÍìHãi¡¨`ð›jšÄØ�FLZíÖÅ.J*+ÎÒéäjÒ–7Æ[»ØúbSŠ­#¼)›5‡+½Â7,HBëHÔ“ôìäJ¨U¹õÝo?#°Ö¡Ž?Lþæ}íq³q�KƒÂo¬£ßÅõ8˜[ÿØc¨Æø–òA�ø³»ŒÕZ?Ó~Áí�¥'+°aÇ#zl7$�¢ò =G.L–Æt‹¿csCnOsÿŠŽÚ<{3¿ ÅÓ+*€†žY` ÄØâÆ3Îm™ ÆMbqûDÝ#%ö{#Vd{eAªÚÖï1~ˆÝ9¶~1YÓ‚�L/3­�c+ñyþÑ@àù§bMZ¼Cì+¡4öÝðÎ3Æñ˜£íòÜeϨ;·×²K?×�/ë†HûJ@=ßÑø�dû…Éñ¿Ñú¶œ‹>•Oñ¼"˜c÷ \Ï`Õ®zô·¾Ñ²¿r^®ø¨èš2"€?Q[p%Ô{ßh�žolI©CFúö4éùê×�ß�acJ³Má»�^²žY«>%B&Za>ÕÀ�@û%Šm¾¹·|mšR˜ÇŸvoâ�=W»™L‘±+ºá¼IƒãšòÌpÍ4¥àCîÚ‘"RÍIðl?=‹0Sá”]Ù¢³G7ñ[Y݈­  c‘m…Ý’êÊÝÚ÷ w-Æ£%Œ!PÉHìÐc iï¬Gñ¥±¼j�9q #gÞKÑ bwFQGçS»/‹¨× ·úl¼ñÚ8ö)ëEÏÈ}Í5EèUŒ~zϨ$�'•p¢½ë°×ŒW…\ÂlY|—½SÞ…A¼ôAxC4N;ï–fÁl+àhjy‰VYYÚ]ÒkAÎ %E�› ïIã~ˆKlÆéØkq·ífÀÕĉ>B¯u)¬�–�‰,ýßdNÝ'¶0|¼C|Õ4û>Ânm\1[[5e² «¤ks¦vIIzÔ–2əˢuqŸ@²¤ŒZ#�~JêÅJL  É×'ø.r( ÒÆaC¬Ó¸Zíòú\ö7×Uï†ëuºÙ]C9žw=ªb�Êìhw™Ì¯·yY¶KRŒ•ÛpM˜íB•éÖv)Aümõ®‘ïÞ´~–$Oxvèøù¸?<ß× üx ;^Q€ís {S6+è[,%—h6 ™v”ùÚ�A™ï‹Ôˆ/Œ‘Ä0ä Þj Ñw¡\Ùÿ3Grwô_Ÿ;¬€òˆÙBÐ~EÇ–± 8`BxU#Ðd†í”îÿ:œÔŒ–4žçñ‘Sèwí©ÏÜêcŽY¯L± ²D_�—[a¸N«øq»606áÞ3�ï�7ðúª¯ ÒH-r)§¶íÿ˜«‚Ö±v›©íi‚y]×Þ¬”Z�Œi“ón�» ¥€Ë¥¿öªuG;©Ó�w¡ˆNâOP¥Q-‹Où뤴—�b„F"DAç0€¹­’ûø»ÑéÁ€_ŠŽV¨ØYè“ïAuïw#^Àk¶ò€PN¤ï×£Ðý‡°© ¸úÀ˜R6{a=pö+¦TF±VÑI1"¬Õ ­‹”SS®_¯¿æ‚Çðºâ­þ\@à£áX�ÀŒøò÷ÖÝ1™ÇÛf//#8' ‚ÉEIäA1ä+Û�çìD˜èÅD,€Oc‚WB\¶{ñêÖ8ç]™d¢±œFýlÝFÕòÔKTÂm\†VM½n.—p�:þ럽¿F@¶¨° ˲¹ÑpåJ±+/žÛÉ@'‚Wf‚P*”Š5¹‰ìz® rnrdôÔ€ÈM(Ägºn÷‚V9¤¦›.lÚ(ô�ãT&–Ç.*¶XôÊôøÂÄ£ëJK}>?Zç¶cÍLÎ{‰£K¦‹¶?ÙÅ 'W‚ŒÌ­9`ë0þ8t3$®qî9Ú?Ù¯\%ÚÉêGê†6¾ckÅè ’r³yçnÞõCLç~Dÿ ¦“ë“wÁä $NS–.lA9¼;<†Ç¨®uÃÞ-ü øÌ6 µû&8˜ž—Q°zÛ'¬×e‹Eh6dF¬Ó„b�,”—…¹ï˜ce½à—x]ò¬¡ñ¿ �ƒ¹–n:ˆ„¡–œN`ÇwÂ^M õJËàà¬À‡DË gÍ+Gy8BÇ÷‘nSHƒD�vœLô�+“jå• œS•}±jŒ7X‚è�ósSßÏ #ó®RSÙ{Íxh‰ñØE|¯X«—#sË%\U¡Qëa¿&õò[ ³$¸A×ëór]É'éÙµ—©ê žÉ2 SÞüè7½Â@ÐoýÞ0£v‰5ÙLí½¢¿zup�r]m›žy²…â¢H›,?ˆhÏgÓÚÀÍ›ð@ÎæV5iýÚ…~6½x÷[‚ƒ÷gïßMÎ'G'#õÚI~î»{:­2$5°ÓØÕ@Ãw3µr8áÇumi‹­›¡‘³ÖÜ'˜K ¬$ ‡OÒô<Ñóâ³Û¦j(ƒL¾#&Œm×,y²<½uÊßÜ^@�2]Uý‘‹ ÇI×;Æ,ÔOIt*¼°#)=`ŠÝ÷z›¹ú b ¸é^"ž@Ç—�C³sìpR ã´£q>„’@áÐݪê¤]%\׋ehwY%�n ¨ö4äŠ8F‰V¦³ì¸, -,çÊÒóñJâw�úpÐW0ßÌx7H÷va?»‰Â”ÛæÀGs\F�:¦ñ5w>j˜(„“[7åºzfCLR›Çor<¿×TÃ(RzmÕ ¡–‘;ø½{§;NmvD”î(ZϹ_&«aØQÀèÅóÌî6+òàÅób�+ôµ½°{ê๊@JF/_¹ŸyùJ>öýsGÆ{ŒY·…=èžÛ÷úÜ<ßUŸýÉýÕŸÔGk¦˜Z/÷A#ŸÙ@7ˆÒñÜ Îe³ö Š’²ÿVòø 0ûÛ˜l¼…ŽjFñò’*• ‹;YãLo xï»årPãÃÔñ�Zn‡·ñ4¹w‰ !�‚gÔ¸yµ\q,"û&1±wèð¹3ùìö‹=:± ^˜Q7L_‹ÏsB¢ttžr4ùÜþçžÖ�ŠžÕ‚Í"Ñ9< §µ%o>ù�fqboëùsR"3ÕV5¢5»Àp§?Éè]@�&½”ݾè‹g®V™dÏxzGrPË t;0y¡z��N¥"f+0½»úþµ¯ÿ¦½E;8pñKäèë~Çhô޽ŒæÓ’ëøÒ ZdM�†+Œ@ój�£bÔîT˜)RÕRo÷ü—Rp‡Ì´¸M�Û3¤é.ßhž`¡“€Bl…±0e×:Õ›ˆîpþ¬sQ e·f¸¸54oº 1 çi«Ú¨e¿fÏKÍZ Y6„0`¸ ÊZŠ ãð“,ü<ŸÆùÁNžäzƒ„|¦e5­Vˆ�+Ü6€1æ@ì 3�À-´‚môÖ¿$õòðäèÊî$–Û„[ÓjÆgî;œìÅ� ðM÷Â'’¬ÃкìÇH¬Z"x[Åìd„Q‡ZÞ%ð»‘y—wqyb½¶‘)½ˆ™~á²Ö"»Ú7¢ŠÆg6²Â"» K;Þðml�-ÌÞ<Î#xù„&Ü÷âAR‹4ƒ°aë)$ƒl1Œú¾Õ½Ð2\ÐWÈnÎÿú³ \±èÏ@öÖƒ’UR‘µèJÆõpFÕ·vŽ÷þ¾ÉÓf%>Í£3|�Ý'i;º÷Úõ¾¨$ç‹‚DÀ¾éüe»é ½ëzÈ;L@ãMÃÞzá¸vß%'œ-òf„ s ToßÊ‘66·ûmÙ:âjs§s¸f½ùÛ„›x–¼��h:ídš.©jrN]ÑÚq{àÊM‡äXКèÅ3«Èz­u¶†%•õžÖÝ{ÿaQÝ̽ì(ë€ÚÙ…©­»;%%òQ15[¨=Ës„±ŠY/fáš]·u¼€Ø3 �*fWi2³}v÷ÒêR?h´Óq0Á‡ƒ»—{¯vÐ{è\Oɶ—ŽˆßzÓ§u˜Ínêõ °÷½m¿Ùש'ä÷Œƒ××—|Ì {¬qL~{i¬Þ˜ÉÕ6æ²\Ï’ ò4êÍŒ²Áí8¹o/ƒþœ<Ÿ{è:¦Ç§$€* u&%~€ÄÏ3h5"é¢ú÷D ,lš®¹{a>[2½Ä?Å©5jqȘÌÅ4øq‡mu�ÄÖ÷¶FÈ‹YUU±=íb:=þ>8¼|¬ f 0ª¨™%ùÐÿy|þþÙéÏçÆn³M®ÄŸï;Pd˜À‹5Å„ñµÆi"3í¥¡ßÝîŒ![ôjÅu$Øå}3[P.õlæö(X«‘³È½Æç#ÕÆ> ø<ÿX ç17Õœþçê$˜Í¢0Î=“?/Z×�ÍH¼Ð{;Í?q%5À °›•³ÅÍ?z9L«oÜáëÿ N.xŠQ dÍaÌšþ-¾Èˆ‡q:«ºHL�zÚrSYhT–-1AÖ 0e,u©Uï 39ÊHdþŠ]]7Ð'§¶·o¼„ÜIø%îÏ#g™Í4EŸºE¾â"âf!´�8W�Mt£wí!¾‚³¬ä4²‘3æÖ µ¸ÇÆ- »æ›Y94q¨8–f›ÐdŠèÚ\ã4´ 0g·¾,[$§ŒI(ïf~Æd7ýŪ`Ëö†ÁôœÉ(™u¦¤WʹŸaƒÑÏ<(”£«î.søzc.$¥,Ù¡ˆ#ŽÏöZ­ŽÝŽ~y{üå/ôØ©a3ÕFbÒ¨of{;í©%ë1;cÚµÕËÂL6D½ô'¢Cj{Ên0ú�P°§ 8ÔÆÁÜÃ'N.ï^5¬˜ï3ïöͬu€­½ûÑð}ÓÀ{ßÙ\êt9«Ü½•µ­ãÖyccW!d…eÄ ˆ<Ú ÓÊOFqYå®f¢xó›WP§Ðd¨ïD²ÏN—ߦ™÷²Ãï•à â=óqðEE”Qžx}} S¶2U^™ÂØ‹,ÃÁ_q UÁFos¦PKm£;ªÄˆâå2aÇÁÛ°Æh”,ècM:[ Š ê&unhFÁ/ñ|ŠoÓé©bs8Yq{=›œ…†ç ‚ÙÀµíÖ�n°‰Ê°Óæ”hÉцÙvÉâs ìHühIaîŠ_eV9ÙG £Zk» s˜dpO˜Íúš"0vNŒ� bEÊkȃ»�¸P�ð[ÎŒª-f“ÂËs ZÐþÃ<Ì¡¡ÒCqsc´j™º2Æ”þ‰/Ž¥R'>PN]O‡qÑ!ƒ{NS…$sý± ϦyÀÊ ÚYkŽ”*sx/Ðä¨ZbÐ;o P3IU"ûÜ;GLä=ß==?.�ëy¯Ûƒüñ®°á:}`— ¢�MÊè ®�Ó7ùÆ~0†~‰�Ê"éÇW”¨àÎPÀÌ/‘΀têè�ˆ¥5âS¶Ö˰l]¦¹ƒ/ã¶Œ+댰<ÆÛfN¼o”7²_§g(5ùM�ƶ/]_ c™³9!ö ¡üŠ8æþ;®™Ý§}øó±éYã�q_D¼‡'t|’¿b»DxgîðWÍ™ú\@L mù0ô;\»®–q»wâ@�‚?A"ú?ë@kLŠBˆÑ$¶äžÉïœ�äå½À¢¢ ì_ìQfU*±¦�ýÖÕ¤ ~.Jß‘¹ÙÉÈ׌ §®•. lkøþÇŸþ¤§¡Žãqùô!ßcd��þ¬�1bTu™,êш_±æEÏÿÇÿèÝýùÏ@ŒÅ þL 0Å.ÿk=æðïûù¯¿Þ1ÁYþ×~ Gp]Ž˜¦¯°½Ïè2¼Ëþ"g³©¸63t3ðj–0›‡³Ë˜ÿ-Îæñì°ÉBü¾7Ú«ÖiR?ÍFOåèÓ%:¹Ùà³Ëº‚¡ù 0¼;;¬+ë›çà‹¾„ר[ô{‡½ÂÞ0^`$R/Ù2.áj†³‹›yXÏÎÙ´fï@°±?ŠÑìmxŸ0CwvgYs?›pc¬ª‹jv¼Aë#�¯’lv*4‹l6‘Ží•åÓ|�ìûòóðqø6|> Ÿ“ß‚ïÀ'à 0tgùpÛ1&�3»`g×û£·o÷³l4>»žò?ïWûëþèèhïü|ïû‡ýþœ³ñó'�±ÆA÷×@áiµ­�œ°ÿpÓ0êctóß+‚ÕÃHG�ç~Ëј�Ó+¨¼„™øÌzc?Ìð‡"áiÌ&=úï‘üë’~‹yNãåG‰è7ýõ×ÿïéü?Ïžý7¶1M¹ˆÏ›aæäû«³?Wåb–¼øc>«KþßÏõ^8ÿáyücü§?þqþÇŸ?<ßû{µ—…ëÿPKÒV1]“Xþ—+gß\|imunify-security/assets/ui-app/assets/static/other-root/src_app_components_webshield_webshield_module_ts.c0d8e32b45e1470f.jsUT ëÆ«jëÆ«jux è‡ì=‹rÛ¶²¿"ó¤ñâ©·2ªÇ±“4­Ó¸IÚžžÔ×C“°Í†"Uò£¶þýî >õ°ÜÓ9s'3 ‚‹ÝžBÚ<¦�˜EžÃ´͘úŸµz>³�/ßÅa0 Ù�ZQ2ítRÿøááó©nÌæñUóóg-Žœ3{6;sÂé, hÀâ3x1¾ò¨ï*WÓÐ�ûôŒÅÚ)¹·zýn{ܤ„‘@Ÿ|sQ“é$0Ü&#÷¿$/½ãÐå(Xè/®í¨áM‚f·ÝntbÃå Ó³::ñárdš}S'!\ö­A¿§“.-«Û¶tck×êB.{ƒ^ 8pÙñµo5­®N¦x9è/.æ�ü0hÌUýÞ»hšÏéóçÍø³öÛ¼m zâ/õéÿÈìØÓlÍÖšíÆè->6 fތ‹h,²ƒØ·Õ �ä ¯ºê:±žSýÞ ƒ˜5è$×7€‘Ã@¨¿È�…3±;x¦EáœÑèØ ¾h„¿¼zùñÛ·¯Ž�Î>¼ühü¸4:` ¤æ‚p²Ýk;ph)Q8ø[@!š…œ Ó<×�ê—^àšœt ~nO fŸÇÆ<;¬¦ë‹E:W[ÌEç¿`.>&ÇÞÔc^pùÄá+&æ"R†åáSÖ¸œ4Q)ïߎã¤Gs‡…Q8Á®¼ØHUÿ€™Àœac–¦Idü.Úã«ðæ'{úlR|Õ¸öbïܧMè\Èôm•=+Ádx¹ˆ™Í‹çç\�¿§wÊ݉ÙÓ4»¡©Që³M£V×» Ø×›&Ñâ™ÀÍ ŠÑEíÝÔ̈U#tkŒúÚÞ¦0‡Ìxæ�å÷�UOXy• h©qmûóºüd%”5¬w/IR\ÏöÃKÈp=œ]Cûš.ï sÿývs_ä¹â'MòŒôÑOо½¦(ÖFÚ“õ¯Ãèý&/=dïÆÌfW±1µ™sE£XåËO[ñeÀU‚_u4%¾}NýÊ8©Ä… Éíî.NêI|FUHôWjÆŠÉD·uŒ]ĵ©7G«È7+Ã1ÓÜLkÌâf)�› )R¿vH‡øðoXm³»YÊ·Yý®CÐ6*Äpÿû8bÖÉlûíj~\,ÒñèèÚ£7'I‹ˆ�—�B 5²x³UdaUñ•ÖP†ÐO…¦nŸNI>½øv£Úb† •ùÞîÖEž¾¤–uCAxÄe –È(}ɨ_vWßPò° _3Qùj•YÔeÌB¾%,f¦¢2EXQaÚÃÇgl‰fÑï��£Á%»R%ó×]1<uKƒÝ©,|Iõ‚ÙœA·Jë[ob¢•TЃË£+̉fGQxsæ ÏÜð¦Äglž¢$Ùsâ¼OMÌ}ŸtЏ"‡#ò H¡…‹--'™ƒ²µÒ$oj?®ì¾YA/¢4¢BÁL±zgשqvÕÑDÖ-iÀ‡^…>.»Ô™¾>QpR'Ë·ñ|×±#·$êR5fí 3i%JÈXä�Ï~väÙ-›Ö¡×%ýM³‹¢;ܨü’1$̸ð|à'u¥~–ñ×ß­öRÂA%J[ Æ9\Gi³~ªÂ=RÌÒ`E‘ƒ2žo1¡V©¼iºêÛþ]ojµo“_1uCmÎ)þ G÷X‹>)m–fƬzï½xu ó€kØÚéo­Ôøbx[YÄno.Rp,ÖŃW~Ì•M‘Îý4)9A醊ڭ®0þ]•1ÿp³púôºªVEuet�‹l× [€ÛTì¿«é? ›µl¶ª‹ …˜`+no£Þÿí|Î,yøìeø\iè/);œG`êÙϽ)«´VhºÝåÚO·rÉ+ûw+—vû¯½H„RuFÓÖßÁ¥c6€mb› [&i©�€Š½1+rÍ ó‡!Ñ“Ò-|/fã�Äò‹FÒ=MÉ \uDÁºFTN/Õ 'zK‚•A¼Ü¹QGY ŒˆNÃkúN,(6˜ÕªÙm’¹a@©[·º¢'Æ>s¼Èñéî‚Øiu×Ô 9=_—'5V…éMÎg?ØÓÖà ² lš!WxFô�_�Ú·¢páÀ¸}§€9… 2Ÿá¶(¥|*Y´*«—KSodƒ· *FzsX…Zá7vÛk”CÍö}�¯Ø ­4 I…iMJ»š.wù/Âp‡tòY3ÛSx¯Ãÿš0!Zÿ˜þµøõ®OID'šÐV˜:ùçÿþæ~ý9ž^¹§ÏþI\:1ÛV÷~ÛêÐìÇ­ à0 ܸñÒx—ýÐÓ…x>ÄP|‡ŠH¿œ{(Bɯ¸}jÂĵ’øLNŒã/¢uYG˜¼?ǯG•qóĘÏ$`Î[ ÙCNŒOß^àøs—ŠzËoNEç¥}›„‹ÔLM"šâ¢HíĹÈá¨T`&nB�XG[®¨íïót!¥^|x{Ž<Á˜B" sؤ™|G»·—²†ï,“}>PÛ ÿ®¼Ÿ|Èû&ŸÝ¤=¼ãľ*ã¸õðÿÞn,»!6™.d—\¾(Zù¨0Q^4-·PöÅö,HùàÀuPå#¢Ô”=ûuÄ%ï'³£%Oµ1NSf@ñ�R:æ½ç޳ÞK›€FùvÞ¸�“–:�öKýU¼·�ìɤ�¿žÙZI¾0Rû\ ö÷¹ð·“ÒBåÈIÈóƒË÷ÁÛ€Ë`ž›Ë—dÝ¢©�›¢1·Ÿa’ƒŸX‚¬Cþ%bl Ám6ÛäÆˆ1XþÅC§Pû¦Nx÷©=Ó›tò�2¶¹Iu]11v1Af8vÀYQvÏù,§RÁ3Ùª·êP�Ñ@ŠOïï§™ 'o*´û²Q¿™ä b;~ºÈÒ˜(•·lùŸæ�°BJ@ä5’”ÔÆ€í‚ ƪ=Þ—lÝÿüÊxøcî�Ø.ÅLÌŽ{1³îùà¿ôÓqEÿÓ´"ZÀ’§zÍ{Ñsl“”SãJ‚Ø~ÄÉI»Eè©sƒ+vâT_¦º2]c ˆåaTõ € ïÁùÊq1|yÇ`âñ›^;Õ¬j �N’Ù.v²£È¾kz H‹ÜÄ UŽ­bêëPç=–¨/Ù'R�dr©à¥Œ0j!§½ö÷1ò0f�{·H„Pëû$±}žü,qfGR8'{Ò¶rk.c—åÂ/} ñÜgJ¬ °ì�¼›„•–Ó ®±çÞп¦.÷DúóçMù¦â¡@Ëcj[X³äþNAòÃ'!:tN ë*³ 6÷jLoÞ4æ-£.u½PŸ7è5�OÖ9¨ÀAÊ‹4Œ˜òÒÑd0Á:·ª 3²Æ2¡íƒ}ÃcÂfjÍãN}_5�‚ï ’äN`ƒÇÊÓEfÞW f:19"žµƒ0ðÛ²™~ï´¿Ÿ~§ †:c‰iÊP(�„ü0g! J}år?I|a$“ÎÄ“ †Sú8¹»çAyki–+ Ây¯Ž« {ª%×"ŸOÓ¥«&UYh°ð8¼¡Ñ¡#[yÐ�ÜozÂUOÒò D�}Ï¡Í Ù—�1ér8f  Ñ,è¥7ôôÔ—_ƒS-ð~¹ `k\3¾ì²ÕŒPÕò4¥D]‡žÛhCo_\Žƒ¯½En¬¥ý¥"6‹18kjÿchú>þgÛy3´jÚ¢à;%¤Ô[/’€¨Èž"�ï!,MÉîàñý¢ì€ ÇŸ=ôÁxSȵ‹½>ï>�½=8~ÿæìèàÓÁ®Ï+â»KÓ>§£ýç`²r‡â$+n¹QÒîÿ‹ñ=È¢-æè4_sý;~  äW¸ô›GÙm7Æ­7Ëø%Ðxpd1ù 60Ï*ÉÁx€{ì©çŽòµè¹<‰ÉlŽbêMzÉOX.&’r(ZàÎÁâˆÏáyD§–HÙˆ¦4¥‰œhUOHÎC÷.y….2G ·ÛÈ7´�ÇËó–ȲÀ‹`0)ÆàY‚5‹KÆ óÝÅÚY¾»¶„¯Ê?ŠÂ* …ø{K‹À+{ûô¶‚K9ÎAUD™w©!!û4’ɪ€U>¨`Nú8YñiõÔ\ðɉ\®J¨T€�j #ÜòÅwU’!z¡Kĸ/;„z(b±I é Çiá`àš“UTxð’eõJÖ%/‰rÖrƒfò&b�–^dBÛRÚð40Ü«ÕâK|�$¹îWG‚,¶W’…(eÊѪÂf1,)KÇfëØr®/#Pùi\‹·ˆCÐÊÅV=‡u€É‹„”PrúP”Å&•Êʉ�Q{™!`}ëpG&Uì)|S“g˜X¸CFÓC3­• î™2}©�çµ'%lXî‚Ñ2üËHk¦“Y€²†äåe¸-¾lôõt#ârÁË{…*ËæÐc4g߸r{ÂW¡“õg Y"8“69¡Ïß™A4kCä�ÅÅv…—Âñ”Y{ÔJÜYvU]—>så”I³¹µÁH3ÿ”-¨u¼éd Í)Tõù‡ëo®âçŠÐÆ1ZÙÉ‚U_�š%gVž•µÖ~ðŠo×E¨[z°²kë±3bÕ§˜�D£Oj•�Ÿp�ÐLöbÕ~>:$>%�.é´Ë6�õ·lM7ÞÎ1ªÝ­‘‰ÔÓòÖ÷ôNofãö=¦¬ ÀC%Œ'¬j©ÆñØ/01Ï—e1QÌá¥4á OVèð#“µ¦Ç¬øŠýÊÂÕö(¼Ì~¡Wr|$·àD$ùÉxg³¸—ˆ›Tåþ%·UäÀ€„ÍžûŒ—’‡ÆqAó—Ò ‚r°y\lŒ×‰½>JrhÙ¨XQµ›rŸú4òÞ8#G†G^C&û3âˆ�_£‰'Çxû‘ÇÁä¼~ÏãZò'^«ñF±åSä]^ÒˆüŽ$Áüú-È•¼ÇܹxnfÌî|d¨fäÓ„ÏgÁ¥”ÊÖW‡ïß�|uÚ¸ÿ-h4n<—]�½ž5»}� Sû¶%Ívû+Þ®ÔünÜÀ<‹·àEK–Â`Ü·:ŸüÑ¥=7¬6·ø-X •FÃÈ¥t•o€ËnGo4x _‰„— ߆]ÉÌ èØŠ½?)0Ó2zjë õ.¯Ø¸Ño·y#LÆ� Üá`ÔÞ{46àœí{—LbÑÚâ•2e»ÛOc*Ef‹\¿mÄkÜ€¾PÖÿÔ`ð˜™Bm Á�¨ÉÉ+AŒ'ë+GV³§Ê±ga,V?ö«‚»³Ñ¨G'o1ÎÃ[”{/¸Ãu„§vC4ƒ Ú[‘�«_9�»B½Ø™§‚kðÖ>�Á˜0!ya¡®,õèIjyˆ‰ÈŽi´ùk³�õrÝÆ1~Üuc¥òd³Þ:q³S1±ÈŸ‰³ëüq%™ ÆŒ£}v&WõxL/ âöÒòÛB[÷G‡f”ÿÐOµ˜âõ°ÝÆ_X™ók<ðõ ¯F–…”^ÊÞxîá¿ñ8ûs~ÝíáïÝPþ@m?Ä*ÙQ÷í}k{ã¶î÷ó+l5g)�¹ºËÖVõñÞ§{ëÚ›4u\—’ ›Y™tIÚ^ÇÖ?Ü€àM—Ý´Ý´Ob‘ 0 €Á`æ�e gZ^ü¦Y·5Lå§%àS˜™—³ÿ�°Ó”/Ü= 9ý±{ %€4:¹ÀDî‹x��ð~ý$ܺ¡OÓ�–&⸺JêºBn±5¤ ËC.)4¿~r›¿~à¿€âÁ¼ÜUü|Áz€W_¬†âáÅ"YkŸožy¥¦™Š¸€Ž1Ë»¢{,d'`Ye\Ö’Ê c2³|nme2Sç£tùë¿ä#Â’�`}|!žìpÚXOr‹”ܨXE/KLé�KCÞ¸~ÞÕ×h¬Lzõý©2¦σ—éƒ>‚ì«k¥Mî5Äÿ÷¿è çuÑ ÄüÒÒ°¾Ä,µ@ÙY¹Ž´HÔï‘a�ž{SáÃÇ¢ia¾ÁáÔ›P0‘`‡Ï´äϬÒ+¢ |†Ê·ÿ)/d»Ø¦^^‰»ó{sgï´ÎÿØ9ýV�Dl!%hn:òñíVä¼€Ô—XU8Véô‡p>ªÕ’ß<:16€‡‡LÓÃ3¢‘ß ‘€üa�Ið¢…2‰Îã©EL¥ú1„¦”$¤±¯}v¹‡ó&‹ž“§µ<"K S[…(JŽÈ;¶O&ô¥a6Wo _‰àI#R,ÄÔÅ´þøŸq|íÉ?~Œjd)Þ¯3°É¢ßiü õÑzIZæ�—ɸ³¦ï¯Ãù0^4N|�ýºröÄ#RÓÌ9hÈßB•*Ú£;jŽÀBÄ_1‹“pð3oÚ(˜t�‰�¾©ƒ‰(Õm:ÀB²:­ÞmÅŽ{u5¿£=Dnx~ 1¤¯"ë°3�ªÙ”°ÉÁ¢áqîœ|®—a²¨Ï Bgø‘ô𜠮_hãÑ´K~jü‹€J'&¿ªøÚFW%[9/ßgN¼¢J”1ÃbÄ©ÈóX¼Ôà³øJüð€ÿÜâ‘•÷l„†ñÚ†É2¸àsÇçRÓPÄ÷× )Ôß·TÁ72¢ês•m1E›¶ÖÀP´PZ(×#þ†RhŸ8ꬃIýB|™�SK'‹°ŒG!×)ˆyƒ’²‰PÄgλ¡ˆ‘óL±¨á{<[w0bb¹©Ú!븩Sûu4¼××èaMÿ][ à:f%ùÔJE''`ðM²Ô§Cû,T°¥Ä jq@¦ðס‚r”*É-9f0}u."½Ò¯&<”Üþ–r‡z:PB¼iŠkl«D†Øê­15â”æz´Œ8%Š0>’ßñÝõ•Cï‰Ôàˆ$j#ÂzJ-WÙÓ÷;©ø[à–l*«.iÀLQ¡Ôo‹É"‡a�G¼0?iÔfÔÅ¢œÚd‰RÔùD]_†%:{-‚ȆG�+)îmºƨ¼�eçÒ‹Wj|mf$K{g“B‹°¾Í¦”ƒí”¸À ™³ºC³0¬îäã³3û¡ß�YiÕrÄ7"™(åSê|§NwëWRÎ4ÃWAÁÍ9\ï¡p$ï$Ò^”Õ»âW¹ëH#§æ_u”é~)¨dyoœ fÛª"ùÂ]ô”Û'8žíÒƒÑꡟñuW˜lвlš¥ ÃkJ˜¥:2'2µK  Þ|{`z¢i¹ÚÅªŽ¼nLÌ]™™R~•‹…©›ø.ç{C€�µcæÊ�B¢‰e Y„Áù×8+“ã°8XmÛµ )›ó t ·²$g?'þ„ƒþÑG|E)4C—‹òʹjÖ¦X9ÎåÞ×u8«¬Eaï„<ç¬f`–(ˆtR6àŸªø�[ÒV«/|“ßî?ͺ3w¶«ø,iÎ Óžâ¶êÑ.פa[ôCVG4_�ä€P‘”ã+dõÕ´y”Yƒ–¨o¾pôîØüyË÷…žhÖã ¤y&ñl=kTZy ÅÁª4‘Ë6”œÑªÅÿd±©”¿r>€^_5zF ˜á¡4b&ÅϬà`¨¼ã=o A!·mÝÙPqf2檠¾BŒGÊ ‘<º#xÆ#€60ËàFD1zãþ`�¦÷OÏ:³Ö&„�¹‹Á½XaÔXßù@]ˆÄ3mÍi­¶~æ»:æ:«^npŒeG˜Ìpgº§I«/Køºàέ„–*Ñ4êxŸ8Íæ9+«™tÇÝñzXÊtÔÌÉ´Ì|Éš t°aÎ…Ö®M;S¼?E×™x!Ú6]g t�´ßv�ûm§—t¾§ñ�0¡…|ÕêE›à2[ô‡~×¥7,RÜš¸x0Þ9sÇÝ›N&»³¦ìP°%Ô0XÊQ½gYÍ@6V ‡›‹µCϧ{X¡2CO!‰Ë�t§£GGˆi‘>°ôà¼bÛrÁ6À€ Ê@ÏTlƒ×³*½•”N¾¸Î$TìélÖÇ“¬]~<ÃxêjbÖ ÜÞîfÉ,ÁmIŽ»‡ktG\%”cÛlJØ6ÈbÛ¬9��õåz¯OÖáU’2tVàÛ¤¹ë¶péÐvý»â*̽'5"ø¸vª¸†þVÙÃ�kqÞ�KE.ØãíÖϵzd/ë^¦š’`±‚~»ó#jÕÉõÒlÒ �ßqÖѺrdc‡³”Â!Õ~õµÜ’ÿƹH·I:9>Þôà \g57Y�w7®7‡M—ÚÖ"p2eèÏ…(Réýfiz»ë£÷›N1Ü)Ò|#ÌÁŽüôN%ö¯Ë9yVv,¯œ®] · ÷‘à ²ãѼ¨í©RI“´‰L?l.2‡]µt,)’—x‰È2މ®r~H²�ô�švf^Æ¢©4Ú©ärœ�·†|ÀžCþ> n,uàЂëp‚œA´iËu\aŠ_E”в‚çÏÂÖã ˜ÇÞä©ö¢÷Áí+– `äy÷ "]n̾ŽÈ¿¥³¯A3k,y{ÙâêRŽiWD&…üÉ‘{CTH—¢H÷÷kšíÉÖâkžÏI—=²0v*¦�Ì[JÞ‘0lOž[IíïߪEïО0ó6éGn>Îúž‡p°imI°j½BÍéÕËÁݼ©8áÿðß=bé茟ÿ°Rù –L% ’Ò»_*÷NMclÉð¾AE3‡–lžy9M×¥'Òå•i1‘Cð‚iäԾétä?nngn?i‡‰µ „LœÊœ�ºÍFÝÈ�ÝM7¦n÷¬aGÊm(.í[¼‘ïõ>ìõG‘„:Ϥ“³¿ ôÔžîÄ ¨3s’g&œ¬Çyiý¢ä^–³±hÉ·ê)5“uO"žº•¦p.°;…©táÅQ¡§M¾ËƒXœFz ÞÝ ¾u-8ºÂAÅj±„<9+Õ«+Ì?þ[¶){µcÿïV8¨#‡ ÍÂqÚNt?qý×®ïžãávk±@qA™¦lìÇÞx¨3¬ÅßM®îÒyí{@¹-`6w£ r*©ÇŇ»â“/‡W¯ WÈ>Ý©�Íñ,æ•H âÌUæ{èßQ¬Í“)¥°åem �‚ ÿ�­~ DG‘?¨Á‹Ý¢¾GjϾý$f=œñëè�¡[­¢%-Ó%{EŸX“�®z’Þ¤þ0 'd-ò¦S+ä‰`Y¶m¨_ÊÙ¸Š¾SÌX)]]²êìqᥦ8š¦ªQo‹3³;a*‘¥*ÿ ý,‹ÒZ…`àG=>iž®¾µÌÞç›ßþ½§™Ä×Óû¶Ùû|/ü/Ý{–ÙxM}ïð¾ó ^­Ì�"…#Ñî¢V¦·½,Ô“f¥L܉6¬4Óåý€y¿„‹¿%×v�¢ˆÌ�a2kÛTÎÇaýlfíÒ6³¢ö÷ÌöóQ!šèãzFÆ•vZu*}2ì´Ð߸P§$½šGü¶ùIzõPê ª‹ÚïšíçªH�úy½í÷ÍöÓ“Hm€~Äh‰=©�«puvÑ?ÖK­)jÛÄL DšèïkiêÒ·™(!¡…:eLÅF5ÇX5 õ�%aF`0\ühOrÎêé9jO…s0½ôü¥ƒ-Ä­©¬éÑ#‘!nèÊÔU£9Š µe�ª�°ˆèØmM÷¦ÑHvY-oѱ8}²ç ØÛ€*.ÍŽ;�®nCgär‡ oÂ\r¸zN´Ô¥-?‘çŸÏñ[~WCÛÍF½Æ†½Ð]‚ì‡8®æ/±–fwQü%šÝ+hÖr˜Ißv ÒëhÙa÷e©z ­¢é˜/�k …WÑnæU‘?’0~¢øXª65fáÍ›Zù +§j䂇|è7j!ÿÏæ²òè‘Òšgû¸±xâAÔ:¬óÏŸ†iòl:âhFõ�¨¾„£Ú7÷xQ;ýWî¶³T£D@k1¸nQð,}´´9"O ÜÿˆÞ9o/òÖ›”Çpz�b,¦)[½°ºoÚo¼s²òÔONѽ²€ïÙdÀ ¤<ýÁõ§s@¨]âðׄqexŸ.ý|LŸU¬»l˜,ÁQ�÷¦/È—/Ô=šëŒî�Å ½‹r�#{EÃx�XðA­ßl^}"ä>!|«‹Ê&!†žû †¨%í•eÁ½Lü±Bâp=±s}5z0R)¢öcÌ7€âPÈs³ÂE¡ÙÚB÷ÔÓÄJÙ†� 7bKÉ"q›¤×ŒÀ¿ Š›o¯¯q¯¿ K{!� Gñ“8¼»g,¡…±BÀ‚.‚î›ÀƒÏù‡d Zp´=£•)†ì«¼!?s‡mraæ²Ì€ß¸5·¬dÔ­"1a ‰ë5FÐÀÁ¨Õ™|dòƒCýï^’a˜t�†"ì3Ž?Ç$„‹p%‰½§¹(†>"{ž·á'%Ñé`°ü}Ø)=Ä«X =Øäu5™è^ ¢NJýt—¬ ,Æ¢[¿¡[r&”•9Ö1®ãzÐ3wAD)»g¾Ú3 ³þžCJéÌ«Ájl€øTêëÚ‘¤·)é¢P~º�—ëñúºÆæêÌì^¼Ÿ5˜ð1íâ0£ÄsìÊ2¬¿š—Ü’"ʧinÕ%ö9%¸@f5½Tîh÷ Eƒ£íÃnÌÿI‡TdÝÚiQú×H8£¸ùkÈ�øáÁ‹K@?~r>¦æËD^açi‰bwÎa‰R®#Eì=¨,¥>¡%ÃE#‡«mbY¦ø{®Š¦�+Ÿ(Ó‹³�2©Ù0ðà²üo ³ xñA²8iãÐ9(9j»M›–wª ’~„˜¨Û§õ”e惨Œî]rªÐx 2u!K|I O”C†µäïÚ‚£r¶(g;Áäì KЙ fqâ†ÓÄ]gË䢼|¹¼ |›{OM«ÖÖ,Åà,¬¤e’¢A@ò!¥ ˜¼‘.V)0Ð ˜�Ý0õœ[v2jä›»áäbg|Gi¬Å^ JŠfbEžÞQÈT°šÊr¥FVÝ%Þ5(¹Ê€M©Þ©ïI“ü椰fÖÉ«Ÿ–Ȩ^íˆÆLÈëÇ’qÀ¡çÎix)c/KååEx*A4�.b ´°dVvNHjEÞ„‹ rÓg]¤Oµ; Ê• m–íˆg!žžá;Ê��± i ¬¸¡®6P£j§—6zéV¡4*†Rq+£bV¬JÅLOPªngT- –«8E³ÿ±®ÂÈxS..¨”&®åÞ‘m„~ƒ/¯â»×"ü–Í”Äñ‰Odšä/qš‚2Ì~L}A-~ÐQfôf@¦)›z‰j˜§We3Η©‹ÏY•6• ¾å“¹DI«¢­u �ˆ †®~À–ä•D^Nzh^4@-\²žñ«ï5®�^±XÏ”˜BsåbÂ’„p¢$àOC9f1KH £€]Ým«H¹L& é9\ ‘~s7QéÛ"ÂNÔ_;; FƒÒhTÌn)hÅW®�ç?óáu¯ãÀ¾Ö*ŸÉÖí<¶ ÐÂzÆßÒyñ2` ×Ìs_}_‹Xñåh¢ß¸×�=ø?פ…üu;¨#³·ea©¦¯%·+¸G”ó:0ª³âHRÖ!Ž(ùÐ!� Æø˜Ê':s¦è;oÑ5vÑv~AçØ9G3L4Õ1yñÝbçî#º�§Ÿ°ó=ÃNŒî°ó�6ûš Ñü"å°�Þ:gè'h…´{IïÆÐ+Ú(kõïc„ÞÀ£·4ý?¥»3zK¡,ù4C—ÎëKô;ïÐ!´ÿWÀ·¤j^qn@A±Àûe~ ÿ(þß,éò–3Ž}® :̃݋bdžÃ3™©…¹f¹&(Nú ‡[²’ÁsölÈ8ÆC™8ØŠü˜M¨†ÂÔµth9 ÈØáA„Áp ±'2íj:ÆÝÇÖ_¶â>“„›ö¦.n¦àÀ4’sSU—j¤C(°º2€ö:í¦ h´«¥ò2ð w5(™Þ¸?¤Á¿: Éê,™1Ž®Ð—J½k@N f»3·›Œ— �àdìÇ[Ló§Ùo£[�ð†Ã1&ª+F[«ÕâÎâ9’ChZQ÷46)özEcQ¥™t†bGQ ÌzØ~®AOíÙÀ$7Ñ(Èΰ�žèWt‰»¼—ФŸ‹ ’¢ä+ŠO¦“ÓjrTûÐ}2=ŸÃøRHÖAkzÜ(A\ïtCÈ¡­�¥n›l˜_€OÜÕå*ÖÉ³ìæŸ™g<Œ:õœ*"tŠhÀ˜Ÿƒ$$8e¤—p¶÷d‚~µ|ì<;oÔOnœ«SäÅQxãl²ä„¡\W×sÉý€]Û•*Ê®ÂJMî‘JO®axqî´áÆ#rúfÜðÃÚF8ûHÁjIÉjŠ–%q™ÑÒñ¡ÙÉ‘3Å«]U¼ªBiä©äûr+x[M—á`n/Qq·0÷hÙpDÅžÀÆ'–zN _·–íX"ª£‰`1Ȧâ9fúŽGóÞç”ïnžæ½;Ÿ·xzF´Œ³ë‡Ñ—2kZmƒ”°@Ñg2_ZÝLÒ#  z„qy<ÊÔÅk«†f.°žycºÍý–¥#ž²ü4Û©gr’ñW®žuèPƒYcÊGèQ¾0ÀS™€*ŽóÅʸ…Wb ˜ÌŠäÇÕ\Ðá‹¤ÇÆGŒ¤}Õwe¿DÔÂ0·Ì³¹âaºöåEJ-å¯xz;ê [ g"¶sëìkÊR‰*¼ï\í}yq-߉šüó°»Àv­ÒËà)œ�꣋àVT¿Ð•Æ´Ç&yEç&¹r޹״Â1…Iñú=/8¤>Þ)"¿‘ÔòhmîFVGL}ÄšÖ«&S†ù‚yåÜnÝ‘Äï|âIo"OŒ1uTä?ÐI|:t‰k©Ýq®î6¤S,d-^y·1ÉqÒIð{cŽ«ÙÄm» 齚t§EšÌ’®2Y€S¾`Ñçö+çäµ O©Èð”bW!r¿!CVÆYÊä–ê-寖¼›j�9X³;•¶\H§*“Š%*žë5.„—Õ€yY ´ÌÇ”™Wî9Þ™*ª€¸Ûæöî‘ð|¢Ü°ë¤~g¿ý3J/›öÄJ9J©Û·é˜”E©l f“VÛ‡YYm9q®ßmµï0¯ƒ¬·Æ�X;¶CNRž`¶…Ðd ¯@k÷וŸ7ëð—yö[ßT €µ¬ü ÀWC<|«/qÔrJ÷QC�u¸*¤0QjP¾¼câáóªLåa§Ù¢åG…E¦80-h]±Ô�Å|?]Ùm�–•öÒê¤~^œºä·®“Åy!ßQ/÷NÑI­ªÕ2 .lU8|x² TîaÚIÒE­.±Â¬žáмê·ÞÏÜÙx–™§ð[SMÙ®óH×®íyÁR æ*Þ�Êtx‰ßy"r®Ÿ^[9¶¿”ºùîfg²ä¦ûLä—Ÿk̹¤•›H)•êqµ^È­·0a’æñ“ÔÚ2= 'tý?rjñÜ­º’u‚ÿx°*Ó47ë¢BmË1A²�{¾Ày]Í9£®˜rÞ,ÊßâE©ë3~bp�Æ#¿¾·×ÛËý$=þç¯ÓïN>^žîó]Áï:y@ê�./NäÙ%vßB�EýW‡ÿÕ¸‡_�é¯ö¢±ÿpÒÜÙswf§ßù_Cçô[Q‚”ß'•yè:ÝGúö›èbH6•¦{+½K–ºb¼µçñ¨~O�9pìýeïˤٖƒâ$ù¾ŽyÁÆ>°cx?»^y—^<¼'„YɪE0ÔUìàOxb�o·ä•È›ëË1ëñIë´ñíu|Ÿ´OOÅMˆÿ—Q«ùè‘ÿçQ·Ó&È ºg!„Q�c �sìŸÇØÁ7ä T¿ˆõ¯"úím<¸þy ŸÇ¢‡üp¹'3d:¼¿½pcÒÄ‚ Í M¿ÕHéS¼ +­þo!ñ³�áÿ*?£ù™¸³ö|êºKMN4„ÀGmØ�á Lá îˆDPXf¼Å[„"¢åE[O�צ·q]“þÖ¹¥|ž^{szPæÆ? {Âþæ^ã£gqR|d~èÐ|Øõû9�F©·Ð‰0˜×eå-ˆNnc¢>ßd0ÏãSB‘”ó•Ȭ"ù“T6ƒÊéejb%hœŸ‘éãÇQ©NÈÒ`-0[ÅšÙ*&µ„Õê½ó} KÓ‘óúàøìùáÁ«·ßŸ=?8>XÙ΄u3Q?&I™S4ÃäLÂiÀ¨ïпÀ¡?‡j©>ü’•„�˜å¥ÃM/�^b{©qã$wÇçÓ‚§Ü”m…±ç;"@Ay4¦wü‰f š¦ZúÑCR%‡_øã{�ßÔÇ!™oé�3šJÂ|²CÃkX á`�G  Údúñ%¤´[9i˜ÅF@“Ϙ<ñ 6 RýŒ;‚;´K¢K­;×¹IóJòg=È¢4õD-²Ÿ¦3™d…´Ê¢+Ó „¥I ¹Et°rj0„zîŽ5“ÿ`-9óK ‘5V6ñ¿È+¥Ct=fb!SÑ­�‘‘¬‰M aÇ´Ø¢²px[ȾÚÍl/[^C7EP×bÁJ'Eá¿Q†¬nü… þ.*›u÷Éwõá³#Û%_Z$¾¤ï õ*êñh³Þ3Üq†3)í"'šÚ+äŠ^4lj·¤c…÷Îg“lYPÕ]ßе{©TH Š}­&B²8 RòGLG§þ§“üd»¬»¾©8Õ‚¯–Ï×Næ ¢³NÃyYç:A•Åq‡SÕ[‡ Ö8"4ßmÓ²µNó²ÆúÂ\EùÆú‚EÌT ™ wLÕÀj€¼êY/QüPLUýJ>WÕ „›ˆ.šF?øÙg©û½m=´6�’6‚%ØJ‰k!JÍ&«¨P¹­‘ñÛ[¦ß«B7(t³Ù®rDü¬<ßLçljÖÏw²©µ-òV®ÿ+òžl]m‹„qu}ùéZ¶ëdè-"W¢ù’¹Ì„Å&ïR®Ð]±`Õk2}zÚç/ØaÓ(ädCêX$V�v–Ì „N].ˆ†ßœ¿ ~rɆtpàw_Ø(b(ŨI‰ÓTÊ�lJd:íŒCì~$kügÇ�ϳ˜Vž´Üɤ:žíìêˆ7ÂMº/NðlÖÞAÖ’ËN§±K†Ùã±:™”ÑØK\Øô�æ�ØikÁ¹Ë™‰Ÿ]ÜVìh. Tƨ״2;9Ž”¤çÙ×»ÕW}zõó1=07DRQ¯­×àµÕm7ûí:£÷ÚÍ]ʼnëm9'®Ôeë†bÌ뇕Bg×ç´Õ¦ô· ZúzLýOþŠï”_,—H*nø]\=Är]&8‹ÈÓv³Õ-ô}K(8¬ì£Çrƒ¶õ¼Ì›™÷üæ]Uy7¼jwFXeóÑr�´@+h¸“‡p™).t-yérs%µ½tþOi†æÙ“ ¨Fd£RYòbóÓz 3¶2¦¬Ê æX¨ºQ>�-±£Ò{Vq9þXÀ1Nræ=yK[ÞVãBõÅ©…” ºÛ:óƃ�5óC%e‹:Î<�‘„»sÆÆµ]ãáA®B©õîýÿ¦Ô%ž¨?Ž¿ÊT�LIÖåÊÕÁ�’²áË»ÿT-q-W„U8;,~¾VQ-ÅÝÿ(yîƒ<+‚œ;]ëèwÑ�a¶¼¿\N¡P¥�þ¹K±å ܤ²†iç3-dø]ŒÚ¨™‰µUº¦>:ŠY.ø,´,ƒ#ƒ„ _Ö¡SúO渉5©X›.jDÆr·‰Çf«óå]6Ó€g66$º÷zÁœÈL2Ö ¡Ä±‰>Âg}ú™|A#ßÀ+ãË÷xöâé!<ÔNWvm+|§~?ù> ™^�í*^�EDõKñ½=@ï—áû.:Îæ{ÿóð=É`š­ÂÅ/ÛG}�nÓ�n)¾wzè›�j|ïôÑsøl×Ê÷Ý5ñ½¸“»ÉjÛÙ+b|7S…èæëÕ@DÛ…ëm·ÈCÖb¿0ʇx†CÌ­¤¡8·À¤}Í)Ð4�·FHÆJ>g]Šì¡kGÜ®°’×MÃá¥�ÝúUöÚÝk;™YBve6ê‰NæøLd|-aY*ÊÅ¡îNÝÂÝi¹m'Y7A´¶GDÙ¾$eOèé½|™©ÝO/:êˆêóû›ÏvBûß“ þë†ÐvçpQ™^ðm¹ sý;&Z„,œ>å¦W±Ž¶Ó[Eþ:Z°~>ÉXg«']"Â0�òµÓ¶tŠÕ.kò�V*ß'´š‰l´ /r,צkÄ¿©1è®êµ-*(o+ÿ²N”ª´û´Ä-v;ÍyÑùeÑoª^j6•›e rCo8¿0Ê ³òÊÊΖ•Ïúr`7Õî\wU6Þ‹u2ïÅ:k¸«1ì»–ÝV)ƒEg� o§§ÞÛö Ù”9ármDíY0“ºM3©ÓjÐ;ËrÚ…Åb#v±rF¢5yåt{è J“ŦhË WÀ·n?Yº»ƒÂ«àÌÕ«[eõÊù^rJÏF_ê•:¦÷ª(�+gÚËÀ)ÂE8E+_·3ÿUo7³|ÖieïƒÛHª.ŸÛ@Ía§ÔˬÄaçÒýÄ­õV«÷4´~'4ª%òùU»·íhx;宣×�qÔÓ`w$À”êkà8åú[Èã2) ÷'iát¢ aàÍó–ñ ŠÃêðK�”0~f ±6Ó·:i±,ïnÛ^6&a=¦Æê.á ±ê•~ u—tWXûøQï¦Ü *ŒßJþÿkC¢¤vSøY Ј&ÚM-†%\3ò3»rQ-oñXGœ#QG{«8ÊWð”'Ö[ÊW~ ªÈÆQ܈ô–peYûÖL³—òW£tTØœ‰.Å+`ùñ ¾Å.äKÏH¢C÷Ó«*çÈb™ >|¶L‰v8"'cñHéרENð¬õÊptrª>�›¹È±/Ÿ “¶Iâ„1Ðps„ðzLý‘öeû'§ (ûÂ�\ÔEÒÄ:IÐYÆÛSš|•§ÙNÒ@}¼Ì{ìN~g/Ç_ædÐ¥åø+ZLLK[9ñŽ!ÒFÁ„$S{‚}è:ä%¡ƒf)LžñRiu›½ ÍOXζjyqx•ª˜¿;˜NYÕJü·� t4 ú*ªïÓ #/P£ò£5ËÍeË÷Þt¨7îxSÜú84ŸÓ‡ 6Œò´dt„ò “Õ8õ¥2+ýJ¾ág±zcXWæ†rã™�;s2-X^f–.5RRÃ:À2öÞù¸YQ,”I1"{"\VØ›þËȘïÚæ“•~.f›ö[lÞ㈬ÚÊ`À‚%¾ÕeE¬ïÝ[ŠÓZ§™¯Æ±LI#¼ êü¹òˆ"<œ)åÁ‹•��Í‹F’Z‹´—¸ûGÁ%–(Å2%QVÃÌÍÅ{â(˜ß੘v¥�…˜ò ±]‡ìžt9yôhÛ®ˆ�eXÉO9±æ4ùà nñ•!y£{&•œ)|úÔ9ƒÉªÖàɼ”yRWX­áBè‹'–­ܦ¥¢#ô¦×x@×H0cß§Oa�œR?&=QŸÓO!7ù"Õå"^É¡'k§y^K¢'ñÅ locy z •3 ƒËº�o· ›;(UæÊ{O³¹)j"Bxê3�8xÜâð™a:jôã[î|÷.Ä3ïìacD—d)EÛEßê±^59ŠMæ×S2K<ÒIÎÿ;ÜX˜,¸/C)K[GÞ[�F"Ý“Œîo‰üt2½]v7õÞøSK_ E“’7�7Ýj’"Þ>ûsèç-Œ¦’å³=6‚M¶^ûÖ©5öáßCý9}LžÖj‹ÔZÁkÒsëé¼ãjŒÉi-Õ{ Ùöþ—’‚e�7ZQsʰö`Í9åÕ�NM¿Bî²V“å.ÛKR—Aþp-yYtÜ>ã ËÈ;8ÒÏé«ÜìeRßgOÕŒî©ôf–4òl#߲­%ùáQâÐÕÀQê%M…T%k­2;KWš¶×PÏTŸQpß´‚­ŒÊªäjãhlR÷"c•Ë_èFz˜X»Óåþi¾©–^�í³¹u$lÈgSVº2ke™/2¸Y5mýEwVž!M‘9HYݨ Ù Õ¢tNÏéu¶p¶‚4{<‹š|DÁúȯÈRî†w™M(kΠŸ#ƒÒþ'·�Üs«Lú<¸¦:./Ý#|EŽòDÙýt-“òQåzüÓ ¸Ž*CX~þÁ%Ò®!“à’ «§ Ô3jöJ¤,d-3‹–$¾XøÍŦ�e=TPvYÕ‹ß™éŒñÈ–7m:Š€3g²x‘= ¾‹Ò+‡‚ŸfOÒLKžXdÜ ÄB…ŸWúUZ*§’é¬oTê‹åû£QŸ™¶±¼Cóÿ@æF Hè-÷X*Š#[‘Ž>Êõþ —1ÜŠJÏ>Û=¡,½‹þ£^õ­ð+¢¢”ìaå8¸½\W$MÙ•6§¿â»F]W}·cÅNL^*š0ŠsLã“y�qÿ:öæÜ\Å<…¨‰‹V’wù·r¶¹¡N˜÷W ¢�U¬Ø¥.üÔº4vª¡‹ìÌKð×áìsåUbO¤(ó,UH±ô;ü­®Íé'Ç¡w~ŽCô¼xJ÷(ö÷!þ”g±óŒ0à ¦ïÈMÝô5uÓ×ÔM_S7}MÝô5uÓ×ÔM_S7}MÝô5uÓ×ÔM_S7}MÝô5uÓ×ÔM_S7e­+œ”Ò÷ŽU;Эl#P.~JÍù¾ínp¨ß‚ÿ•N;%a$¾ßŒ„¸œ° ûþa0&sì†Ç¤+¦B)ˆ(3¢É›ìøh¸®#jqˆjÛâ—±TDž‚““þ²žkàˆ«žkó(-+áGDá™,ñüp4:¼‚覄/?|å åˇp®3æç%SzåÞ#µÐß82¦ÀeÈ)ÜF?^>ÿ× é¿ið’wuÈ·tô´¨é:œ‹ª _ª#¿æ®JdÔ'˜¬ÅELLHøqý$ܺ¡O¿ Düã?"¡UgõœB¿~r›¿~à¿ 09™ï²]_‚»Œ–UíïÖ¬jÞTO©†ËÝk¯Â½Rkœ†¬÷{‚‹ÒwÉ”dO,%e[_NÉ,˜\†höÐßc}Œ!öãpZ\YæªÒ&;êÒûÅózã‘7¶ŸVšš¼¦Ã–‚”ö+û…°„�ùà’-ô OË$×Ì­ðÇŠ_töQ—XæO3šž5 ÊF÷^êŒøŽÈ1‹s%#A½}ØTAôº"Ð78œzšÀ Øá³-ù3«ôj›t)k©|û?�òB¶‹ÝÊõG�ÿyâîüÞÜÙ;­ó?vN¿�ûõ_�Ü÷�ïêÃ_§ßAÁÇ¿}ÛØÿæñpUŸûz¸r:D™:Û³Ù~„Ão‚ep2=C¡PŽØë>àj‰ d*‘#ˆV‰œpöâÒ‹ÉŠÃÞC¿¯FµZò“hÓÚoã•#KõQ¶’¨�ò|I´%ùÛ‹¢kBG“ø’—"Ö, /¶ôƒÅãº>;‹‚uÙ‚¨„GVðF¶•ÎÉà‹mµ‹ü)‹På—"4N­ùÑ#ú(àeÈÁ7¼äÈ0N¡s!ËÁ¥aè!ã]xL’F–ÝÒÉz"âQ^_$Aš*¿]Ÿ~[��@ŸS·Áúã^ÄñU´?$²÷ø1@4ŒaäÌSty5¤È�tçôñnÊàžï¾SFž=hÔ*�§ îD/Ie�zZÊY—!F„®a¼h4œøTB2]|ˆüIªqt ¥ô7ŸÈ/a2Ñ Õ†²¤_ˆÂ|¸ù´q0™+fåRÝY4ÈÀ“rlEÜZæ»óùûÌ:YÄä&t„ ýÏàôS‡˜ÐDï•Æ¾û®âÌT(Z(–¦{E>3×e*¨¦Ó¡æ__ŽÉ¦»=O×`¶åðï?·¸XÝ3þ ›ˆ>LÖâ…4¡Á‚õ:v¾éÖeô�ø0†(uù­PZ™®8”Zãf⧦±óºDUä”úKN¤Ó›d¹LÇ8í±§¶ä¤ùw3™—½âªOžîxW†s:}Ê̇¦›8}u.ÂGÒ¯&Ž6åM--e °÷JÈ€Q3a}L+¦Úçë` FOÕû[ƒ[EÉï�øîúÊ¡·ðö±àúÜÞ'2Íó;E ,Ù+ZõZº•©Iò°á£àÜîÐ";© Í÷Þl-§:y!�¢Ei³“цAA¸í²(°�–å‹]~…²P)‘ä ±$otV[&-5УT·Ó51¦!Œe:œ®J¼ÊŽ–¨bnRÀqг™à‡’‰)¦sCBŽw�•@dɽÐ2ægÚ·‹Í.ã2Ë+Åe€| Nxkq©;g^i­B9‰³ŒqΡ|õ²}英¨ ³´(µ î³jði£ïc²xt’å" ¢\-�³RUÕì eØ$Œ{™˜½·~ Žh×vÕY n=]eáýÌSY­šË¼µ‹|õ i/·Öen•µJ†½”°JvPk ›%vsUôZÍž&7‹8çÎjE€»jí·ŠWå“I­H¬œ Z8ÖL •"‚²ø œÒ×̲¬´ Û2iliV�%²/–qh©ˆÓå(®…ÅF°yD§–µ;&¬ØŽ¥Å¨JeK€÷[:¯@àŸca€Ø×xÉ&sô)_¹W†Òä�iŠ*O¶«wcÅÈAÎÝ–·ª�mT´Ñ±bÈs>Àƶ‚1 en½Š'"ø\mµ„3–êÿ§YwæÎv/EÍ=q:ÀSÜV}Cwê]G³KwËêˆæÐ–Û‹¹˜·ÚéëÙÌ&|ØàŒ›åâjsijÆzÑ�áß±¹A—ï µ3¬Ç�\s¨LÂ{Ö`¾ò sGi"—m(±BT ›ÊbS)7ï |€“hÕ #-ΈG ‰™TvT6¬bkë·k²”ÎîD¸½öŽ÷¼-'…ÜÊbâJOc® ê+„ƤÜWÉ£ë0‚g™tÇÝñzXÊôÕÌÉ´Ì|Éš t°aÎ…Ö®M;“ÁnÉD`âmw©×t��Ðu0ÜæSеå4{ø2cIç{ßZÈW­^´ .³Eèq] qÃ"Å­‰‹ã�P�3wܽéd²«1‹#‘¯@ µc—ŠŸè•ˆŸ`sar¸-¼X;ô|º‡*3ô2�pIw:z˜˜éKÎ+¶m!Ãa ¨  ôLeÀ6x=«2Ð[Iàä Ÿ„LB5ÁžÎf}<ÉÚåÇ3Œ§®&f­ÁÀíín–ÌÜ–ä¸{x°†AwÄýW9¶Í¦„mƒ,¶ÍšÓÙX_®÷úd^E!)Cg¾Mš»n [âÑÖuàUέýÝÕέâÖ¼@Ñí²Ý4‚Ü…ZÊW‘ÕH¸³�æ_:��9²þ(u{qR# ĵSÅ×=\Ã�‡$ì\â(ráþé³f§®æ(«Zé` ¡ßîüˆÌr}ΛôÞ3ðól¹ëJo�ÎR ºUûÕ×2[Gù¨ÄIæH9>ÞôÃ�|5¿•wÞtŠáΞ¦ä`®· îû©æ)?]Îý»rèIåÌ嚥Ÿ^ïƒ_׎GS1V4ýfŒ2Ícb¤%Ÿø‹'e7qÙ¹e— ӌȎƒ‰Zu~ÈÎ�‚{Róú9ýóÓp}zÌj2NÈ+ËâÀUÏ!Pg¸º vÁu8Á ßÂS[(kaîSE”Pª;UfaëqÌcðÓò/¸}Y€ÁžwI‚”K&VADöëø-�€�anNµü Î‘QìkWf&‘üÉ‘{CÖ(šz ð«5Mx%w9_Æð|Nºì¶v©ÛærË@Ɇ•Ê3©ý½¬æÉC{ÂŒñd>¥¯àµ—+Ÿ…y±™mÉAn½cÏéU™ ¥©Dè\ÿw�˜Hßð[àùõ"˱’¥QÈ‹ÿn6ÀjQÄ‚ó%cµº™z]þž“é²V–)ÕWbáA‚Øoóô3¹¼T—n^~¿Væ.ÚIjÈÖS% eµŠ™:ÏšÃÓ”úFšR?;ͬ©šÌþ§G?IâZ^’]_\ ”äHÅ’`KXkJÃø÷\.‚9vÀåbs�ÊfÌk’æµa2îVUì¬ SG®¾ò»›Ï>ý”ØØ±5fµ›‹DÑA·>aIÓ† Þíd}X|‰¹¯"€w%ŽåמÀ·üÂÀSð­ ½5­ ¶vF‚\ Úk@ €öÈâ­¥Sˆ`Él™™µ »¿—`QÇ|/¦€íÄо? θ�Ê­v‘ÑÎâ„Éw¨îJÎí&!=T-_ò¿(¨Y‚üƒéÔ ©&X–,”ŠØ]+c¥x‘éÕV j4¥ÉÔÈC!Ò"M‘¥*ÿ ý, ×Zy`àG=>iž®¾ø´ÍÞ§–?Zïiîõõô¾cö>ßLü¥{Ï’M¯©ïb‡¡ ézfPMê Ôî¡v¦Ò# õ¥õ/;âVšk†i‘~À\Î_Âmò’k»yÜ*"s×°l¶sOí=4Óf»´i³ ýŽiYmç¢uZhžžqti§s!•‰ê´Ñ%7×ꔤB“øŽùIzõPê¢ëjvá¢ö{fûéù«¶ßGëm`¶Ÿkïì¢s<93:EG‡¢ö÷L³¼mª%OM4[kû]Sd:¹“§ÛF7{7X[û¦üuò®ºèÓZÆêêi[G”�ÐE�¢ÉÈþ—º¨Ë3 ôè¦` Yò4iàZÀ¥£ö$ç@o‰U½n\oUСjfí4 U´tŒ’¼ÁçiB·!�µ¼Â_¹VïjM5&ÉÃh~úœzl™ì*ຒÃH;�"o€èMÚs¥ð²%Âãd»Ê-°‹@ÐL�‘ãN§«†¿Ñ©â_S[A êŸS€¢%mO‘çŸÏñ[~WCÛÍF½Æ¿Ð¯†¨Ï*:Ö¬¥Ù=t÷š%ÊJ~³i9¶ÜáÒ«~Ùa·Àõ³zF¿ê“ÒFJsõÞX,/k­"•æUì‚ð0«gÌ‘LŒ?~8:>|ùËÙ‹7Ï¥¡ñÌݳ¥WF¶2Š‘¸Ù»J½û2õAH½aŽX ôvÙzOà;ßDD>ò�‹æ(@!Š8>—{_@hªÄÔ9 M)žùì™öx—®c#�= ƒkR•«üGéÏGñ³!yðƒQ.ü`âM7ýæ�ä'""œŠsMÔÎ,ä è ØÍFb×d�ùÂÉ�׿�;uÆdí¦ÐkæŽ{!¼g‹­RcD�hÞÃnCÑÆŽ0çÜËWG?œ¾~q4ê¨�ß¿xÿÓÁ«Q¯ÙTØå�šÃ»wnè^FÏÜ5Æ©N'�þºò&_&jD;ã»38¥7Š°ß ‘O{ C“±,84³ýBUYŒÏxáý3øÖ§@ˆ‡¾'aàf8ž\n,žxÈ©vXçž;>�BæØT=â8zõ�¨þ§£Ú7÷xQ;ý—´fÅû1K*L½ƒ¯ELÔGË6¥=âkD;Ï¿YHÓóý�r$Ðsæ4êÂ*÷m=éÅÍ4‡]†‘/_@½ÏiN—:ÅG¤">7ó !¦.JOBLV‰ºæ7Â9iŽÄŒ¬¸Y¢õØ$Ë“/RdaI“Ohò$M±s}5š0òª¨‰ó•ÈRYÈÓÕ_c¡;Ej¢¬òÎ…Õ©‹ñ"qR¥7„Ðw¿¨ï0“|{}�{ý™Dì…ôëÅOâðîžõ™Æ  Š#*è¾ <øœHfï‚#†­L1¤4æ ù™‡h“7è.ISVs‹lÙá—c¦*"‘w½Æ÷ 0R5tr ÷!×ä¯{ß½$C'ñ9 EاÐ/êÕ*Ä€�º1¦ZëP¬þ!F÷0•‡÷ŽãQãúÃPÓ&ŸœCu¦.‹f©õ!ĤF„‰Ï‘²<¡=°onÆÞA¥ö(]# ¡Ø#u¡!éo��dá×$¸e %pK΢²âœM·oÐ�a… ï r4€o=á2@ò©«Ú•”Τ3)¹„ÎÓã3tˆM¶an§âýœ‚ïidžمžcWcÕÄ~ÝòÆ'·ÖÑÅRò÷œ’Y �)ÅVNZ¢·á-O¨\Š>º�‡B�_hú”Üÿîb/š!è€üÏ‘xÖ n¶ô�w5‚¿Ƶ±Ó"ô¯‘ð(GqP0Ö€‚ñÃÃ;¿Rð'çcêܺ4žðvž–(vç–(å:RZßÃù¥Ô'´dX¢häp] 0�ËÏõÇ´¥àóà*¿ó €•©A DáÊýo @X¢ñ`²8iêÐ9F=îIZ86­ÝT1%Ý 1Q•Oë)k:L4QÝ9å¤ñ_d% |(‹ýŒ’sù°–ü]K6Κø«¶ààÎmŽíœ@;w�%�φf;qÃiâü³¥d?¤œ•— ——�osªiÕÚš¥ È…•´LR4¤]>Ì´“_Òa+…Îó±›FmæÖ� €ù&Ân8¹ØßQk±ƒÞdš‰X©§wi×¼™0êb]�Aâ ѹ’›°Ùj¥Rñó 1~±PØÅÕέ_V¬R73±TO e´  �6P�”?$cŒC¢pÒHkÆTˆÄ ]/ÂS‰€ ¤Ñhk 'ô@•ÍP†ŒÂVäd¸BÐ!“}ÖQúT» ¼™Ð–Ù†~âé¾£l #ši¹—ÔM*U�æÒ`.]B”V@;Rêne×ÍJV©›é;JííìÚEÙrõË@z™_%o*$“ÁMϼOxúʽ#;ý_^Åw¯Eè4›‘‰ë_0höòÄí Ê\�³'�©«îFÌÞAg£ËLÓ Ðü!ˆâcyŸ[ª&¦—êµ¥ëâÄWÇ瑬M[®‹?çGø²\¸*[’È�LC¡S3 5l²Y’xŠkNàË3[Fg¤”&_å3™Þ ó*â3â¿¢OíX/M [Íu“ f Œ’XV )ŸE&/'�Œæ`4oÈ‚N¨j”øÕÓ%6ø‰}P«Š ¯8a4QÈ˜ì ¹^È-ôÚGÝê´„[g èÒy}‰Þaç:„ZæU°W©N— )T{³KÇÉüþQüÈ™ n9ãØçŠŸÃœß=r†Õ1–8tX �…©‘k‚‰¥?¦s¸%áTtlφÚd<”iì­è.Ù„jè*|�YK‡–£€Œm' ·Üë8CøhŽqq±õ—­8…&¡ê¦½©‹›)¨:�äÜìóåADé ¹ ÈN»i‚míª`[iôÆ ìÍ] æ¨7î�i`ºŽEB²:KfŒ£kØÙ¸?J»Ú`¶;s»Éx™XNƵÅôpçr:Ù‰n=ršǘè�m­V‹;‹TSïjE„L­-lÝH‚Ï Ñ�ú-øŸ2 °ä ·¼˜ˆÌ$™ˆl[cçÙy£~rã\�¢w¾ÛoöršT.qXaå~À,䥊2³t©¢‰Ñ·TñÄtÊ‹ó[ÍCD”GÆÅW(„)Gð0Â1à™Gòé x* âi?ötÃñc}4hÈð©]>•F~I{ä¿|F‡~F$·7×Ú‹Í·ŸGÇT‰:*pžåùohlÓ¥2 3�yªÄê”�ËŒ°Ð·Lª–œ¨¡ ËÊeoIÃ"DÂÁÒ²g ûà ßO^ä�½¹ß•‘?T[׈·úB!2¬@-‘9‚¤½õ‘ÔnJ¡%šE T�‚+ç^ÚÃ;ß[¶d:�.‚L~²‹=9_Àñ†¯Q5¶V@—"šá�—™jàK˜ßµWrL¬îƒ¼‹ZíB¢+û/á ÝB­n!Ï1¸¶]QSGõÌ>KŒ(™®­~š(w>n?D`_·�'-€§gD½;»†r_bdÉĆ`Ð<â?ø’Yݶ̊„Šô *7§ »¸%ˆå3Ä —³ãnL\AÌ�Î\TËÄ WI¸(Èæµ.¼•œ×ObYpe€ÇE(è*ï+cX°¬Ëbž5õ˜m·ÝÂÝÖâúÎ8]%¥[Á^;(Üj3·ü*;~�º×,¯î�ÍqNãÃ-‘œ@¨gcä¦Ñ[«25µF0 :в·±«öz/·×– 1£WÉ«h _§½¶Å]2:ŠBüJJË^·{ù½Î?h¯1/'Ä,C¯-<t¤ù!–ÊüÜ—y“Øá o:í\ÞXb3Mk<ÕBH0åMæªÒÉ£N•1*HYÙÙE}ÔE °‡%²|�ðЂ Kì`}Ôj¥÷(vÑü9´.¢úYöÈiý9=ÊÕB*‰æÜKSÀ.ZWŠ«%Ë„6\­ºÃW‘¢p¬ «ßt…ÛæÑXÒïOYžÌ‡‡íÔ3iY!pÕÏPÃÙ¯'Άʨ@¸&�Š<ȈŠÜL4¤ lä‘Ì¢ „ =TÞX¢ÁkS ‡dvòsÉX¾„iÆGŒÊ}-ª¯\À尨س¹â–.wíK7Äš<È|Óƒðã�ìú‰%ŠŽô…q¯Þ°Œ ꔇîÓ†SY?!ƒ|*£Öøà`ûÈ`cXb}Lšò«äªhß¹ð¦P(a›, ÈôÏàî¬jà$kàáÁV}tÜŠêúõI:p‰¼¢æ"ó5,ææaw:Ë„a‡|Q¿çe‡xÑ�(fòüvR¦³¬od�´ÍÔw¬uÝ€²\ì[:ÜçN„û$Ë…Æó$VÂÞ �’Џ‘™$'‹ #Ï+Gž;’Y žxrb7‘'„"‘ÄtŸÝEfS©»dëóRr,kñ*nH‘ ý„xc–Mß¶»��fI�ZÈËœ’�’·eƒX’½TŸPY­Aù¤…–ŠwU‚<’¦±sØ€€+R_²È>�έ #ÛИ*ù–î[OX¿P\ÀÊŠq(ÿÙq(›æ80‚9˜—–¡%•‰å0«sø(}HU xÖ¢í42(Ĥb‰Šçk¯QŸ$j ‹5Ùe±&»I¬‰@êºrÏñŽzŽ®°Ü}ƒ{m'#>Qühu¯¤~g÷8K¨^ÖˆGÉùN uIT\³ªŒØ�ä=ö%š¢êÕ5ëW¹ ’}„‚†‹ŒÉ"Û‡ô;{8©ª“°zñWä1lkm‡Ùp²Þ’aíèÎÔ»ñÄ˜Û Ot›ei¯<Èö1Qʲ”nÝk)w DYæn¼Ïa‹,ÈÌH% &†š…¹¤LûÁù;°Ë(r> >†é¤§ª¬Sx³µ-ÊÉèm¦•'¥d3ö‘JQim¨èýžqC·¡|%íäÂpoMy(ÍØ=ôÔkS[\xå,öÑ{uöP[Üíåb™Ð1@Šw²­0E8оÿ.s Ì�¨¯ØÙÛs%³•–ž6sXô!��sW4�ÅIŒvÌO#+6HÒªñVŠŒ0ƒÞÇ+X5›çu–U:ôÛÝ£�”” ˆ¬à!žSÈœ”g7ÿÎá2�M çËÜÇí¶Œ"Ðê;\5zlÞòfÔ‚Õ¥}æÎƳÌtÈx€ÇؚѽoqpÏ#]‹@à ÒÛ¶2ú•Ðê›^þð„p{CôÚÊ1U¬”7;©w"º�q·Õ|>òËÏ5'ÓÊÍW.z±;ÞëîMVî…ÔR ó’kÁ;,!òVÓÔ!dœÐõÿ.ñÔs·êJ.ç=0›5XÍU¦)6â‡{˜® H˜°¨PÛrL�làA<ðD¦]çœQWL9oé%Iì…Ôúô’óÛ¤•?çad;}c¼›Æ2ÐÎZ–ì^…¸¥I Ø0U„¤ìíM�´­¼ÕhND�lÑ•;¡ m:;¤¯h(8U`!ì|¸%û´@Æèl²£E¡mB.*/Â]Üë÷{k ž�P2Éd’áùLôd¦¶EÄÚí™t<0ÄUñ¹Ri[;õ:ýFô¥Ù }Ñ)¡u� �âW"Ø ¬†Ïý…a¼g¥ø¾À€käøá[Í­—ÁÔnn}sþ:˜BÀ•°¶â…Íhíù¿Ù¿g–_È>W¿g±qT—~F¡QXÕhî|�çH ±ÇpŸøì›Oë'÷W.ÜóÔÐD‡ç„¥ä]ˆýaò:Äl):†¡ó›ó@†â˜ì‰¤JŒ Øk0Þk3ÂÐÚ±/me“–¢X-÷žœÀ^�)„Œ‹RèÀ_œ.N§0¬¼ŠÚ÷Qg0赇ü¶‰Œ›ïLë1º�‡0Šá¢ñ„]@ùõ~· Ù]òçn¿9h 9ù«·7èt…sÀ£ÜŽÍ)G5ü÷&?…·õê^ñ‚�Kغ0®ÔùÕåï¤ɽ)¿ ç÷¦òv4wŽØßTyr^¼~wü +ÃÓc�jµ…OÖH2K~Çu%wœ¸¥TëМ€Œ‚ÙŒìý?Ãlþ3vHÁ|N=‰Óž’qÜòÐp«<ÄfܳdÞÙ&� %ÛÔ{gvªôªA/½Ÿc0÷Ü¥êq®ýäsV”ÝvD&?€ç¤Í#†… ·yoÔƒL"¬0ÿÖ(lÔ½¢«8àþƒÐÕ@%ŠV¸Å1k˸Š-—82ca™Ë/ûê%€Üs9ï]{` _Òx7^á͇þä:eõJô Ÿ“ÃZ,R@‘2\�ša—Hµjè ½IDö%+¬g4�˜ÁñLYY,!o4…Ò¡,_%9¼"›$K‰ÒD­G“tÇöJ kœ—mRafbuÙÙ�ÅÒ÷ð@þ¤ü­¥ÚÓ,c"-nl¬2SaX¡TIUÌI µ\QJeÿ¤÷äE—j5›ÿWy»HþNç¨Fâª.78œÍƒÛá–˜¿F‹I†±)y`î uFŒÀ`îG,Ð Ëq—5ŸÝ#ït;½]…œÃåîPkŸMpŽwÛ-˜î;¸lw;»À;G‚ûúÐà Ûzí¾B�avh{‚\ÒÛÖ9æZO6;å\4o݈¦Ê^@ÚÚkäåA{É^¾L�ŽÚtë Õ"õ¹Îš°V�@�íœÖ@ŸõØ=4¯û·Ó#Þ¶n»S·)y¤®¬Ân_mÜíà±ÝîŠw¼/:¶®з"K�¥'vJÙÁÒó�O½ØÊ^>–À÷žDÕ´nëd¨44y¹«4Úñh­ ë1ú_î�:õ<×»ö³�¡ê™†²·×މ¸€éf,¬òd�Ô™§;>»�a§ÆÙ'õÉ’1>-ÓØ¶|Fêád¶eÜÔI¸†•‡Tc�ú°@¨$0SöÄ\Ðô\80ºבƒTöä ÊB£ÁdQu¦;¦MßSæÝ¿b΢Ҁe]4:xg�˜ªv�‡E4ÞÝ€Æ eÅY9-ÃtóVw „–%mœÏA° ò"ËP„NŒÞÂE$5„T«ç ç•å˜ç›.©Çõ«ê 1·XPÆ J�È’1>Œ…gÍuï~Í@ò§b³�ì’~þ@<ä9Œ˜�ø“NéI*XøZ–às�Hð–ƒ+ƒhÙe*y+‡Z‚·:ð–”’i¬‹è^�™ÊÙÑŸ¹wØ|;ÜxB}_ŸÒp…tœµƒˆ%-!ÃôB#(0ŠR6�øïíœz·–AÇ–|äïߎ�N>¾;zóÇÕÙþÁïûo_�Çã#Õ>SCÅ#šîO¿®c°¢‚÷?.¦žnZÎtüB îI£4~Ó1é¹÷?�Áô©¨çË Zâ™�·Gq d‹3=uÅ[ 9∊šäÊÇ4G·ï¤�ûJ#XGxyTáá³ÎŒ ~ìNA�Ü[Ô6kE­añ@›úNüé0Õ丿ê»Äd� ¹ôì—/K@%zFËj•K™‡2ÓY­>P™~C?:̲•F‚xŠ¢úˉoxÖ„6XÜbÒâP¶JÌ$ƒ¡ õ|ôîüÃþññÑ»·YÚ|<{û~ÿ0lœªÂZ½yãz3Š“´Zk,³„±Ì~ü8Î˦åQ4ð¥é ‹k®OLé!eWÌ{z�Y²Ù·òlíl«Ð®^ßô^ýv’o~óE¾õ}ø…Üø¾_ÐÑ1ÿ’�Â�çšæŒê&Ú'—Ĥ†í�v 0½?.-°½Fòß u.YÀº´:ýVMÌ:ÑZ� žœéÑu~Óšäý¶üM-öN8¸m�x$¡f¼°¨æbl‚Uüì¹:Ç)T�b(À-1€Ì³zÉheãõC@ÌÓÝ„Ãìˆbk°àÎ<àŠïضìu¡÷“ãk ©_ƒñyNY@/a"ò»ÒÛoÜk í¬´ïˆþ9äæ³åÚ. õ»™úž¤ÐAJ¢Âft¾@å9ŠÖþ¦fK+ôWr4´€Ž– y èk ¹¬}‡¼J·Ï7)Œº£|íÑ"󨿑é]‚ö€ìƒ—F†“�©(Rc¢q”ldºwŽƒf*�öUBb%´}ñ7ûGǯ¯>œ^I]¿…ɉ ‰ôÄ++Pb ê˜Ô1, ºËUOt.“ˆ¥¾äDÝ'gxSÈrª2r£î^ŸÝÛøJ]å2 l¢šš#’k_œZÍ´|`ûûQíÚ¦ß÷ðÎץπ Mýr‡�jþB7hsBÙ¥4Y}qÖ@VsÕœèekÓ·þ¤£šÖ^ˆ.¹TÕþ6Ô‡t·Ço-\ß—F5�"ð[ÊoƒjÕšZK¾hÓk@°?”?¹Tmr|G5ǽóôEE|×j¬"jáEóÚvïQ÷n³NcÊ®¼n[S§ £šû£šAq%JòXxݤ·5ÇÁ:‚@×à£ZKþúÞôgº‰èµjýÅ÷Ú.ü²×¼éDo´{=RôÅß–Úé+â-ݸ™r�Õ fæÚL“ødqZË�Ú,ΚÑrÝ,Æ ªqj9M1ƒb”ÇìÇ‚ò¬é,« ˜@co:™U²ùä,t×z€±\wT£U4…ø·%&°Ó&þU1H·[E�Ûʦ“’FÆ7ʉ]yâJÁ&Ø,&úÂ_ 8£61bž ÞiaÜÆy§L•ÆÅ•º¸$Ç*tÁ\ôH=Ç®giÛ"Áò.•`ÙžN¨BÎÞs²[¨ÿüÑÀÂ,Ô£�9’ÎpÄÍ6¨uÂÔx¡Nì%}æ�m‡´SÑ>¡Û65UI¾H(…Ô¿€a·Š‚·?mΟƒ¢IÈ1ÒÄ$´Ÿ’Ý :ZnR·Ij ¡Ý«2 ¸,ÞXXûÏÿ§LH™ó …'Ð›Í 4,s ··�«9Ï ¦úÀ´u ‘ÉŠ‰Ì †ÌÁ2GØÊvÃí!½Kê:¦I‹8,«5$šVYmf\ƒ­ÖYCÚœÄN€F¯*¾›…2WØhes.‘ž�$ÐJ”A~º«mΗý251$»åúËÅÂõ�ä­gÄ8þ-Á8Q[CÊSí91í­”¢ðT«LÓ6ŠO´‘ß–!” åå×hnÒŒ'µŽ‹YœŠ¹ œ\X¥ôÕ*’›.ÙJ„•ä@0»&@´–p€;c>€ŒkcHÛr®Eü^Ú€±|@/Ïï, \{®�ñj´à�޲©x~ ûT¾Â»/JfÀë�ÛšÈmÉLF fn40õ*Å6ŽË’ä’NÝFæoÒðÝhèTÕèžçÞ‰lR‰½&_Oí'(ÌI„Ÿ ²—§" [QÁ_d$v·€ê­+�©Û{"CAÂp­€W’­}ù«xñ�^/N©üÕº"4²Aõú°*›l7XCµv+ÚӑŬ|K‡Tw¡jÍî°‚àÅù‚-ÆhÛ�´�<äÛp‚¥S¼§]¸xÚ[\=íášTA6xá­'¹¥ð脲 „[§ÍWMΞ—Hrv:‰Ú¿BÔ)\a�M6!…¡íJ©K ZfÓPüy»›Émn°O¦<@ÞEG+¯F-H¿»xOìy� (‹žC‹çIQä5)Ú è]JngCÉÇP`X~Í&¢­ ÚÀNyÔ»�OΪÚ:TŸºéª-t@»œª»¤½–ªíÍQ-Þ"�/d'4ëUlw³h…N:w+)TU�ûÂö3Ϧ²¦�ת=ßr5‚B4g@ÜFAª…oAÏUËcó­¼ k:z¤3(�YAF gt•@yXÃz ¹›De®Xߊ±§œXF@f®Ÿ ÔfJ�˜W’ºwÑ}t6G5Y­™Œã ‚òÒâ"?4Šüص«V­ `ù8ì Õiw8ZÝ·üèn¬évÄ_ŸzX'¨í%{îäuÑ ;^O9p®—s'[ÉÛñiNÑ$rÛ‹ñ�âv2p–ŠÛõed"l§©ƒÝDͰfâ?yÝʲ ÚÖ0ˆ»P…=‡ŸØ®q“aÀv/UÝëà?¢‹uà[ŸP[t•ª‰Ž=…¸­Ú xewî,“Í€»½ˆG+Åã»!ƒ¯{µÆC£A\#6uÉiŠÏ¿9•ðè·Jh½¬‡œÛ£[˪›©¸ìÓ×waªî” eèv“¯Ô̘iÚ4ɱš1v£zàŒ@ ¾eI�W×jU‡y%ËZ+^³ü+¤ÿMCeÕÁÈEÜ?U5ý-^5ÍhP'�±ùOx²M{ˆ‡Üü�´ =¯°¸î×�ŠëôüýWÿIµ‡UÌØL"Ó'¾TlgOø}S"GßþÛ‰„yÖ }þ±)}Šƒ�ÿ'éóÛ£êÑ^iQ„F~Eúš�Ÿmò{ذ´ ¤Cþ6,<:£R{ú|˜G— `N�©–ùñƒmq�å‹mKÀÂSp70V¬x!Þ?×�–{ Fú(°°P/'1ûJÿß1³ça˜`÷ÅβȞo!1�µR¯9DZ¬?ƒ›ºçý0rµ0R¯<$é 'v*„áÎ'`âÃSŸ}¶ØLžQPcAª%Ѹ€‰¹TÂ%b”£ùÇBÄfZC„7)PüÈß¿Õ-ƒ8˜þ.)h)6”‹¨[´§<¶e¸3ÄXbG†.¢ Û‰}Ù_œœÝ—ë\ʼn˘;ÕºýTpé_õå 8*wÇn¦æì_x´êpГž1Ü‹ÙïÄ·bR¶©í[^Nñ4!Lµ–»²ÏrfãVêAbenfaÆZÛ,cýl6þcü-ÜE'öÆÍÀ}]©Þ]om×Û8õë“R�§3Tèk9¬êÑË¡Upìà÷YTã�ʾQÈ1ã°hï©á1\¼`ïZÿv¥;æÕ h çÊòý%õwþ&Û4u,oZ>FЛÞÒÅÊ4˜ÿ`»Œïé û 6¿Ç 22¿Ë«v§ù˜n…—@ͤß&¼ kN=¥ÑŠ{>¯V?Ñ Ÿ²€êêÔmãH¥oÕ[êù¼ªI‘Λ�¸?!Þ9P_Ÿœ}øC>õÀÐÙçu< �÷ÇI£]%ì À ¢f *sg©)ýÙ��ö `QúL;Ù¶éhüKý¾mGC®Ý¦/oäfô„›ÑO÷;c'^_ŒE´Qé°Ü­&A“«¢Ôáx‰gøRÕzX´_¹nøKŠo·xpOMÕ–VTr÷H»)+«‹Šw‰Eåµå;Ý’öÅã�\ŒPn5´3Jc}Ö÷ùà®@š [)…{xSYb›Nîq`©ÅP)GªEÕ•�Ôjj|ÍTJÂ÷ãù©„�€*Ù*UÉkƒX¡~NlÔ’êæ�é·–ëIµÓ¸¸”bW„ºÆ•&âe•‚–%¯o¦ù6ãÅÆ)z÷êÈj²ׂÁîñÝ^œHT^ÈÓÞ�1?¥oÏ‘�Ë$áŸó€¤û„ßšh( ÐÔ�‹d¡‘³ºä½çjð8�Ú´£$T¹Òx0)úÙðdµIüöyTì3Äß⑚•˜³m:ضýL§Am3%WRÄœÞ(\Ø_wÝÖÞ-žP“.ŽŸÝóX½±n‹ªT©Ý¨�‘ÞÒ™ŽVýû¶cVŠ £³ñÅÃBg³Q½NÂi£w$ö•›ÑÅwhÙ¦G�QÔÿ‚2dT¿^Úvüýo+"›¥�ÍX#‡…­‚CI¹7µ¨rjFrûd‰ò¢ëPRUÅõÉcõÐÖ�_˜@ª ÕïÕÃwbýÈõ ö{>w &Γ%™˜ô™±×®®Œàœ†ÄË©G©³ý³ªKÃúÑ6¶_´‘û¹‹Œ¼(èF5ô¢o Úa §4Ÿãíc¬µºÃޠϧݬöN.é˜w‰!ãzáV±ŽrÙ9ç«þÀ]:¡‘+üL>ñ?�A›X9VŠõD+%ëÒ^±Ê�câ„.q3¤Ìg¶¤ÏlmËg¶Ðg&­ñxºá%Ÿw|1뉯ÙÈw²ŸZ j,@�þ.ATûbäJÒ5Ç §¶x÷VÚ ì w¯„ö/à‘¦ÿfÞøßöŽ´·mäú½¿B«¸Ø(¥’uZ4ëMà-ÖI»E #Ph›’™J¢JJ² ¯þ{çàÜ)ŲÝ`׋آ†3oÞ̼kÞñ h§2| - øYPìðçKÅ(Nl˜¸üG|+Â#tÛ·ˆRB3½¨j,º½)šÉ8Ér¼Åßeé¬ííë„òÁ€™�£Õ¿:X§ÉUÍÛZް£ïíxQÉ�¬M°þ¨ÚTŠ7ÍN•º•Î�Jw57½]&¥�­Õ¤\dÏ´kJµ#S‹ ^*™¾œš4&T½57Ë;ToÝ8(’Ê›�O'þè¤ÿBq,9ðú³ä¢�kÎuÊuÆõ”–ûÅ…q„Å%ãÙW¬‚ìŠ-†…û�¶‹ŠÂ°ê+泡¨"žYÿÌ}ûà0›§Ÿ;èÆ>t)å.º£fÉgìuæ}5U›y –€ºù®õ¾é§:éöWeÞ,^¬–Eîâ[õÈ"/‚VDøU _«¶ùtÀriÆŽ~`2núØ1Šªó¦6÷ÙrÖNÆ }Â,0`ʆ×>Åã··`[á»W[ï¡s»ÇÞ»ÎÝ{ï;§{ìÝ÷� 'ð`ÊÍ= ÐrnƒzPø­y<¤¶rŒŸñ|jä8Ágþ¬€ ‡ãZ�)L­²t±äŽÌà ¾”äh{fà«”•y·�]e’k ·6älE:5¹fÀëïÒì9,Ê °ƒWïhÄmçdèúá«#äð±râ%®Ü¥Ñ–�DJDÂ/&¼ÑÍé�®sÄîtswFnsé~4W“< þŒïÇÐwÏ'ËëCþʲøf™¾É²èîeã|ùßÈæø¾—%˜¨2Ú_†>½’Mò7kMP`ľù§Z@-u]]nN°yƒVº9ôå�´*�jªW©qqªz�:?øàÿÆ¡°ø� _î+%ß�ç\ô_._š‡$d ¯Ô·Ã¥©tnU‡Ñ) Ë+mµpWZ]Â{ÖÒVWÖÊ!òë;ø¨¢³”ARhÀûû*Îî u¤Áhs0Ì Æ¯#Þ)ÕRf-ÿ…Í'Ëâü´V8,RCºj4õ�‹#>\â\µÐo¶c -æÃŲ xJ+t­e¡žöy»0ÿ *·4N³æ ­šåNª‰"ª†%¨¿:~HëðÙ„ƒN Ö4�ÖvF8Û›*Z� ZòÕÂo�,á ´ O�6¬ØèÓú÷ß-¯·pTNÅšm4%X£ñ’Qg©fÏ^áÐOøK<òÎÄ=�Y€Ïµàó#ŽãÙGu„L÷•HoHêRøPNwÝ ªç—¶eæ6�ÛÃ~ª½ O³&ò]×ç¶‘baõ2‹KîMw·…tÞ|Êošh¯@º"UsjûƒcAµsFv‡�êbÌH¹¹;}% ­%'xÃC%36©Iêâíiü„Ä Pɼ_½�¾óe~iZî§Ùo:è $W”N¬9Ä2údþÀ[«4̲ƒÍäæÂY9C‘X¼+$–�â<àÐ?;@Žˆù =¼0¸�ˆ=pŽÝÊÁ 'P¹®Ëæ~ò}Äsø4 6ä+$p]:d6YÞÁ2ìÐ�Ç_}9¸?ÙÌò/޶½OÝéåj÷GÍà•å]0Vã3üÙhbo:-OuïÅ7)çÔ[8êFÈù¶× ‰£m><¯¿ªãX²Ôb+ì*èfbX¯ï`0)àÉN ¸&« PJ’ùbôÚ{æ Èˆ²qæ“#[xJ»ÈÅÔb(©®s‡¯:M')8ìñRŽØ§JÚeI i¢H÷_±xù L¾ó²á$U5+}CìmÄUJ+ë‘«,™h­Æ-Sä"Ð8%|ok}™X““B¤Ž®Z“ Ç56"ár|P¬ºüÆX¤)*¸°ÕYtK«‹àxUHM«õ áºbÞ^, He¢¹¨É ·ÝÞ—nî •�€Z™b‘Ͻ' êy¦Ì8Åoª¤l¥�²"x€‘2.dPKÇ.âS�±Eħ%ºC ‰•¢4#1¬Sƒ¾žô5œà+B_fâž×å9Xl vʇZ¤¢eÇHU<ßÍÑå­`éˆÝ0¯i˜Ù¡J ¨í…ÆŸ�üÓOƒ%Ÿk’Zòx9ƒ¹%q‚ÃL^ló›Nh"¥ø0„Ìcy–Ìâtµdáq@9M§Ó³ôg$¢R³™/‹á]°‹�ܘF0a„¹sTŽû-Æíz1¬Ðì�Ž'g©Bâ™ ÆìÄlÌÎa•VΘ�”³“Rc6Åàp‰cè  ‰°{ð%޲'†î¶Ž«ÃBôi±»~¯3û1Ü�#±]Ëá7&2r¿Cù#Ðïc¥Í–üÝľ¥šÎ ‹ãœR „øäð•1ã�8ªhbÄóvТèXê{Ü‚g© §F6r‘f@_Ôòè5 6×^Ä=ø£Õ¦úgįx’®ã æ�nMŸ/ññí v�\pÑcÜ¢yQDlƒWfiº¼¶×”²ÎÆZª¨å¦BE¼�W õžÊÀ2nÚ,�‚Õç üIÈ.¸Œ£Y2«Ø\ŠÌWû³ÔúÕBÿY `à°§šYýgPC¿šð‰IAY#TúoÄBs½‰ùÞÄŽèÅíûÄ Ž:}¯ÝSqô7„£H3b¢½!FËè¶@Œö}11Æ«ª8QÄÔ èv:x“ôº^X.¦jÔmñ¶êÝÐ×—ÝÈ¡ˆ#ß&N@Ú±' Hõ£åõðËÁ=2,ür§ðúà>rÇ㷟FŸ>|8ƒO4ÃmÜÅ|òe/“\¢KåM` §ê‹0d„lRÈlp. ÿž¡ònÃ2Lu´f�Õݨ¸ÊñÀ Ù�=-ÓtzeêE {,1äÙe©¬�WTõ©s¯¯Ä�3ù< "B€b…èßmö·áe¢Ç»†Ž¤³ >¬=Ñ#7‰¡Ò��Ö   Ö¸ +枇µjÕ |gÑ$UL13Ó/w©ü%,ü·Çá¸{ȾmÂìZ«—0Äÿx5�¨ä•Ç[ÝnÛieR“¦òÆ`Û¬Ü{˜ŽØ°¤ì«iq™uB6NH4ObU‘Ñ{ÓÌ—×Ø6þÒoèÊd†ÚÅwZaôœ€ àE0ã‹‹ ~N`¶t`ãË^»µ˜€\Z(É-”z‘´]ì;ðˆßº4 •ʽZh4­m>7ÿôúõ @–VÙe|-09ó§ß†€ ŽÀ§M.—�ø;ñà IU£eî^tv/[W~_µ‚ŽûùªþPKÒV1]íNqCì²/Limunify-security/assets/ui-app/assets/static/other-root/main.1e097939ed9b.jsUT ëÆ«jëÆ«jux 臬\{wÛ6²ÿ*^�ž{K+¯¦I�£æÊ¶Ü¸õëZJrvÓ-LBÖÁ‚¤mÕ«ï~g ð!¹½û‡AÌox @ÈãU–óe_ñ¹€ŒÚýÒû–Ì‹˜©g,K– ™d½ BÃèö{ñbUÇnD$꘼ã*f Ñ4fùLªe—*gqÍùC¾?<Ž<Ž\.eÒDž-ò<õaÅ] ömäJ°ø+r FÒ˜ç¼Uà¦Ès¿Ìk?—óyÜ®.xx{#:˜"m¯T½ú%#‚DÎ[YØÄf�•lv4B$i‘·r–<)Z©’sųlÿ†©ÍY*’„· ) ÙÊÉxÌÃö:e±ˆø¦'�ös)ã\xãÄÊý%ï3_¯Îë˜J¹VË"³Õ³„Ýí+)±á‚©¼ÿoTPåã™L¹b¹Td"�¶@O±}c²÷5˜Iˆ%íò ß{¼cj'<®‰‰À„a¢0‰1 1É0‰0b’b²Ä¤Àd�É “9&7˜¬0yÀd„É7˜Üar‹É&÷˜L19Ää“cLƘ\bò;&˜œc2Áä“kHÞ)ž*yÌxÝ”|©š¶÷˜ôuŸò·¹ égù*F„ž@çŠ%™@+‚8b>çŠ`Ê­×¼ìÁg�˨ {Èþ‰ ‹ì\&^ð\Ò7"úÇ% (ωÅb‘¯4ì¾*ë_j_r&”Ø‘Lr&ª}òͨþ•Š j³¾HÜ¿"7zšüjC-ò_<ìE·p±Lq6˜‰?°‡ZÐ ì#t‚Ž¥ìÉâÏúë«éáp<š~¸�`Ç»tül•„W"¥—bó€‘3/KqIà_}<]L°ÓMQ3Æ”Í"ÊCM±eTð>°lq&CšÉcN9Ÿã jƒAÚB a³êè·êÞsuÄ2[A�þÅü(fY“Ó¬F2áI~Yä°*i®�‘܉T—3âR®ÂpÁ ªX ‰S­rªåÇfª™œÆîE.4HYÅÊ;$î1Ÿ±"΃�Ì„/Ñ¥r§Y>Rvt;½^‡@j‹Ðöi™|"ÀŒÓß ü�iê½�öqÔÿ0™\MO/&£ë£ÑÕäòzŒc¤Ž ¡Ç! oy¡DEÞQ,བ&°$ŠÉ†K"÷GK�kr¸Ú©®3%�šHèú’c�R‚<£Í" ÙMÌ�Ål¦;¹†€ÌÅüŸÐ:¯˜ä2Õ=·Éz ïœ+®^\æߊtÌcì›Ô}Ý5¼O£ëñéåà&‡˜à÷åú •êHñë~¥$zf¬³€L¥{¦"m¡"‚á—ÞoÅó—o^ëô4Y@ДÃü ­¶'œÁ:Î{_ü©’u›óËD­¬ÓZ›Lݴ惼n+M‰º ݱ$lQ- �b ˆøÛt*V]+D·~ÎÒ¦RÅéÒ9¯­R‰ãâE·¾/Õj º£«šÕÐÂ#Éÿ·àjÕ¢èqëº^ú„¦zC Ý‚ ¬îZú»!ÐnAÏsÿ]&\‰M6¤ÚlùíúsíÌ»ô+~»>®L]ºš×гݢ«Ö¢\¨[àÚO75KF‡FéŒ:U‰m6FI´Ý m³4†€¶»5u±k›ª³©› ï(sÎó£B)@ßÔ®ó[ô�[æ‘Y”[�4…ê–DÇ cGãÃn_Ù¨[ˆñHªu Uœ†ŽdQ‡³rXu­„-!(b!ÿ09?kjÖØ�ÚãO?oP&nC¢q”·¨ºÌºfÚêÒVO€è¡H¢–ÅÃaui½ìÖzÙ­õª[ëU‹–’&LkQsxÝzvlR%v‹6ÄýyË`©8]:ÎjÛ­î =ÁRÛ j•jØ‚ØæÄ„óÏ[ŒøìMÚmUðÙ›´ÛÆŠÏÞ¤Ý6f|v]ûwœÐµ*ž-šÊ>·®«8Äõ¼5ösXM­Œw8c‡Õ¢…;¡cí+jC ÃÂg˜?²½l—Ý¢ n�wÖ»bÖ53†ÁüüC¾Œ›ª>·K÷�… ùGµÁ„'Ôei£…vMX!m„9e›ÓliXÁC‘öèÙaÕµr³™k*Uœ.¶£‡\±ö˜³]ªi«mYi_OÝèÓ[,´8’¦Ä-î¤)±ÅF‹SiJÔmÜÁ\èˆ#–„’ö�ÌG\´•Œ?±¸àÃ0äYFÇ ›ØhkØ=®C eÒê¶Û`�>‘j9TŠ­. ¡Óm‡6üÃBÄW†k(Ã30$ƒ™Ë6�+uËŒ»2xúìГÑ�+å6ÍE\}‚í’.—>ý¸|ü®y Ž8¹¼>ŸžœŽÎŽ§Ç£“ádzÉôòjrzy16=Õ-< }ttô1TW’5®Û¦¨%ÏØ -6«Ñ+Ø”3t^ããbVâ:ï7nd§}å‚sëRÑÿš.©U%a¿�oˆ�HŒ$fƒ õÊ©ßÈrÏyR¸Òí ßê~Ð×K™²SA]µڀ}ãG®ÌX_]ñ ´I¶ä±üÂîiÞâ×Q;@PI8·¢¾ç *À/pJC…®Ö˜aCùÀÁ];.âÊx+œùÅoã¸+‹u ¯ô:ì?-e”#¯oX3ˆ+3Y@PåŠàuŒÜ‰¾:¤E ¸·4ò��ûÇr96W à2÷í�£C}åjˆoî²oàay5©¬HÇ7ð{½øDWÑ5Þc=~ï_°;1'#úÄíÑÀ¿º>=^ÿczùqr6ÂÛ>d ÜüLÌÏ$‹´™&h%•åª9Ém‰"áq†vãP‡J©*2vÈ’[ÞHpI¿£.úÃ4ÅÐ�ºÈd@‹|QÂ6ø ì\îY[žGÿL„<ɸe»$pÏW§ú.™åûH˜oý™ðhàÏy>^0Å#ç»wó›xŽßýU®¿ÿ«<8ïOYÄÒ\/ó€Û{£øá yí�ôùŒTãâÆ|µ¯!Á¤?:¿šü¿óãè‹Ñ§íÁð ôå Œä;4�ŸÜK8×&Ȫ²íÑÀ¯8–…JØÀÌ%�²<\ÐuàUräò¶ãgÐÃtç£ëüÏ"_Ôe#¹ì3%RªX8¿‘Ð�|"hÓë’Ä�Ñl¡'Ñú²=‘†×"àeÀ–LÄú³:N½6¤g"Ö“OgÁkmt5Ìf UÔ~zZš6¦'J.-£PBªÛ_$í£lQ#mdàA÷< DyÀÁ-C5é®�Í"Šç8wtÃfͼ‘â’À�™_M�þ’¡ƒ‡ó\ÍÑ=-m^P™G¼W2ê�2x"%ÃPCU9ƒ\Ê„º$Û, Š…ˆà)žr:S"Ÿtµ¥"ˆ£Ã4z�ášž–֓¢šBÞ-­hø@ ?Eš–yÄé"×9õM™ EÃÉ@”7øç…ˆ­(å O !K XªìŒ«äÀ0—\šœÁ”APª´ÐÓ˼VðÝщ™]º9e>8q^þɆN;é莯;NڻïÊu_ßü§l¨ïý¢Å´þðªtPêî=òÝÝݽÁOt/˜yðGðspœ _½zóâå^èß�°]„yï]Ò�vóàñîuÅzïªËA²ûúí«^î½£û ;â^> ã;ÊÕ0º™Tt •îñî$ü~Gö?Æ»_zL3{A�d{_ƒG„BžðõÞz½^¿~õúÅ–ú|Èu…vHÌ~¡ŒjT1ï^¬®Ì$žDÐqƒžÉôô S{ }ÐsäÙ3™hÐ+³€¯wÅþó¸¶=Áa|@e \*±¼|!²>´@%úÒfb@ŸÝò|Z(zç%¡™™=/ÔœÈñBÞÁš@ÚîZñ=-*ŽqÙT¯%¡™è̦EépÀ¡4û¼�–ÝNúÿŠX×KÜ{Ôƒšn 3x[Âöî�îîÞ’Å÷0!ú ÖƒU–Åœ%EjjÊ3+Þ{gÔ�¾ª ÷uY3å‹zª‘ê;‹ô)¹ÕìÁÐÔ¯XÙÁ.²aË{í¶t]Ä~¨Ë€/²}¦pÔÃ`7v”Ã:æKÃŒ¼4oÄsO5*ûÆT¦mÁÜûáÇ_¾Ý2÷R3ã²NŸ€3`G z§t`>�\þ:ºè•3ÄÔ9–s‘´×–XPÇ”-ëÍܬe[Þ #ÙÒ–á¥ñ#‡§” ƒÞh?,u;ã ë?Ù³„)Kx n‚žè;`Le·àið�´¾MÅ¢%D7=‡@ •Lø“A,c8,=ý$oË"ŠER<@9eÞçL%N ¾ÄÈ¡× £¼z‘ÉY>èé§¶P``Ž}f¨é�ŽÇ X{ó—2ÉñêpuÌVÙåìÉA¯ ÅÂjøgÎo¢ì=<ãÕ §ŸÔ‘L @¤¼'ú‰®øcˆ[9^°.ÒA¯  Þ¿‡Ø¹eÖà‹"�ä}B “§.`º T{Dx÷·‡©^UDŽË‰ Þ½1õ¸)‹Od>UE’Ðjäz4ÐÆ7½*OUPº qÇòÆÀk÷0E3E¢iý$õX/[àívÂ� ôåf‚>º‹ò�ù¦+¿ŸÑOñIü!Çõ!Ú×ò½¯vÎj+ ƒàì~ü4[í&ð"×VUªw`Ï‚a|»Ïh(itÎ7ú6>…$¾­£rýu«Â™¤l»`Á™j½Ì-‘~è”÷¤âH©«°Ê6ŽÆ'6€.ì÷û<€�XÈþöC5;ÖÖ{»{°t¼zùæÍwûË'ãný¾Ã§ÒxÆ£|c× ±„öFûøËÐr 8K‹"üqSG›}e�Å 쀃/¸O¢e’¶}»{_�ï©)†þP—ŸÀÍÈ145™ïîíøóRØsP̈¹µ[‹Ót÷Ë9à`ç /¥“õ¶šíÓÏŸR¹/ùW×n9„i¨=¹´ø¦ÂÚLw [lóº©Z7=±s¶WÙöOU�DŽ?ÒVk;p{Ùèÿ"=I:‹u¬¹Ÿ¦õbÿÒ ØZ|Û¨ð&pëþ¥ªSv�¾8êƒ^/€p;—¦¢®f~AOSXl„ÞD ‰�ÙP�Æ@jŒr;ƒ°u¸_²»]Î 1$KFME«Ù�y2Ï?=_W3ÏôUg0T%¾/+r@9¿sÖ>i¬üë›ÇRk}` ´¶þWµð: Þœ3j ‡ÊÎHmØvåÍjïQ ]ßþøâͶ0üzhUfòÕ玈¼+P•YÆCmð¡c±ˆýD$žAÐ ……颈o1¬Å§Ž*n ŽLF�ÓHRÔˆODx²ÀÇDw)½­¦[!SŠ•q§?†›ìVÅ�RE©Þ¤—Yw+ŽkÛ¶†poùPÄæfÝØ7Kvä- úGQíÎÍjkšˆ®Q�ÆìLp €™F8±Ùž;t ð,(:Rˆä’‰×&“ë˜äõq ¦­Ý\LJ[Ò™Ñv“èÀœ!醙§Ï�µÞ®Ü[õM²^åÕ=ãèBŸð÷tõ¬{l|¤'±±9ཌæ˜Á›Cr¶Ã¿ýv×—égi aγ/ÁoÉoÙ×ïžííx_¾Òl{Å_m™lœf–,gVëtJŠåTΦ,æ° B$ï’çk`©*æR¹³9¯Ø ‰ÂÒ<\°©qþ0A|€&«Š¯ò´ëPEÎ)x›²<‡$šmzДV\Š6\<0yo`—RÚib´g…ÍûtÁ–°k59Ú !`òˆk.M^I“w|ÿúÕÖ@rvaÉef¼`ñ¢Q¾ýþí÷¯öÞÙwµ#èGïàòÁ/ãË Ø"©ŒïRV�%1Ã�¶÷Î:äo¿Íûà_¸šÞ¬pp•Ä Ê~yþÖ¬5–Ù±Ö·êÌöÍl-fsΞ’¼—z‚÷Ú}ÄÕÅÙ?ü5Xò|!£ƒ/PN(‹„u … zCwl|`Vº©‘¥ã’õÚßgéÀ¡62Ø}ŒÅRäÐÐOh<¾Ä»“à(L9Sã0`K-—ЉSü¤h›:Õþ(†rƳ)™;`½omŒ€þ °ê¶¦Þ úW$ÐÄäý£_§õÁãwRD;Ïÿ6ð÷~sìýc£¦uñþqc[Q¡Þ©ÐѦGǦ=´•ÝÞ=¯IëÞ“:¤íµv† Ú\p&i D9ЦéôÏ%²SÓ?#Ý'›‹äêŽþŠíT}RjºóO­¯iè†9²µ�´Ùm 4™µv¬ÿjÍõê'¿áò…–ùK�î¨G/B²ùà’>fC@ÞŽã2KÑ÷îpµ_±®=gràòL+êß/žÿöõ›öªWÔ2îKùÁwù^ðh…{»wZãÖÇúÖÿg¯X&x¡Žw´îxGgö©ëʼnxØG/÷gG½Þzšbàå?–®’?ÍÙñ'Ím³Ã­—N¿'ú/ŽŸ2¾i¦xÃ�êP;¢%wËÚ}ø«=:2k÷Ǽ±vSà|J0õ?õ6~hã×ŧø¹ŠrS˜ 7 5¿p]j`º�eú¦ªÉY8)þs ͱ„ v}“Lg X^1¹ ªWù_ÊêE)‹ã DÇú{œ%§Õ9}çäŠå /ÖÐAM¯g#œˆv@sÒ{ø1´Ä¿ï½ƒ�0ß 47àkü†HMôŸCà5ÿù DÈGGqZâ&„vJÆ6• H˃¤Š•WM•�?Ž0I3�óyΙrÔw«Ë0ô�”¢¼×xdwgÒ�hèäôL•ÔòI±�¤zE”/SRÏÆˆqP ôÔý8 "R‹¯«7ë·Oëƒ`ßÈZÚR�$Ö¦E¢öÄ(ég!ÕBá2 G%ól»xƒˆo<_t+WRC¯·¦ M>*°p÷ ÂàYÄnìÀ/Yáï?zö~üt}ú¹Ü>=ºú`}³Z•£Çè(¥g¤aç )IhEwwÀ3Ø~îØìŠ8 ‡Ô—éÚ//^ªCÕÚËK5�ö‹ÖòŸô)àG3!A¿»“âóyv¥±µµµÌôñ÷¯|XßøLÏü-r‚¼Ï%,í5öê;…ǭ㺰ó¦Qß¿£ JÓB…BRß¾°"ÑŸô·Ê~1“¡—¡o‹dÅé ½ ™íêe8C|lñÈ -¯�æÖj9™XöŽÈ&œ7B6+]N4¤c†7§Tz‹Þ¦kÏ×È+õÏ èá0Aªd’›.Íq1D§ÒÄgáëõó».(’ßND®ÆN�×€|—®Y\oa­Ùí­›²9T ØØ;ô#ñ´÷ )S%‰Øƒýæ¶~’#tµa,xIus¬xØ@ïÚƒ8wþ™Ó÷GOÌ)IÕ"™X-|-êÏ-dò-x©ÕuÓ›$/w¾´¾%ŠÞ¤j%Ì…›X%úd£I_X‡¢Ña~¾Pö"!šú–ç²~D�‘‹Â¡…Ó yòèª W 4˜ ÇúešÉ!üa‰ {�Ð/$ K�#ÜžTZ ÌÈý‚~EVôJ¿¯�„¯”áˆÐ4}ÔJ’G{f! :Ó…aµþhe*4›M¿ò0­¸·R¹éŒÇ}6%—I&oûÈ\J8¥²…†L©ln…SÌÓ‚ò›äáå%¾N/rǾËÚÓ|¡Iô”Ø�*ÆÏ¢ “0�e\³û£L�”ì2‰ös­ÅJϸȜÀÇÄYN[lŸ•ZFƒ#5Íš9-£eT³¢øúÌÏùŽõêRŸ‰Ï—LÈÜ=±Œaú_Bü�OÈ� 2@ÓlÕ;Ë?i?�·UœöÄ4;ý“„7h>wýÊÓ › ôìgàßíî–µÓ³FÀ:ÎFvwÓÚìYCÿ~hw«V£÷j‰¤¡–ð…V¡V•5j5«¶¥ê(«‘‚zÛ²Ú6ñúšè�"¸¾œ‚á‡Fðî+V¾zOq)èz½2z¾¹¥à0ëF–ßkb~7ìI-~kÍ&Ja£ßðÇÿwsZ~-¿¼òš04_óXG…â”EÔZ•Y¿Û™pþ ýk$9#y|q 0ô r=Û4_xºs£öd)Û�Š”¥ãÇB¢TµœÊï_Ê%Oå•5›6JÑMF”Õ ;¿ŒÈ”~{ ‡[üኳÉX„‡àÔ¾JÙÉcÀâáî'“ZSg4–Ý`:]ˆˆêƒ’6Öt¡²Îˆ+i::Â\ÀPÓ"¿rÑ"£5#fï$d”­�Ö› Ñ9/ìíí-ãí~Úe†¤ý™¿ìßÏYÂx|¼Ô9ãЛ†D19Í®yM Å_ºùìMB/0üؘ…*­è…mtÂ>}c £O­™½\c#ô? ¼äF '¬€È%X€\¾T–Yñ™ÌGw‚å:1QÊÆ^D­`x�káñTÜ�(ºŽ×¼¬ íjVÇ–Y+µÆe57[ÖF~5ÒÃu`º‹€‚e&sçÆf½º½Œþi“w×ÁO,.Yo«Ý%ÜYV³ÄË9,‚$»sNfïºn†tTÄñ›#ë,ªÀ¦³^ž6·¨Ž23ÎÔ>Þùu¦^ÞL¤ho ¸Ì|e©±=òM,ü�—Öª«ó8¯EŠbô†Æâ¼ÆüØ¿õñ†“Õ˜Ô)bRb¥A¦Ì¦”/¤’ L¾_0,­‰¸€ÊÇ™òÌ?!Ñ¥:óSç²dHèWª½9Æ….#8dý¹aÊcyOü&ÙxjÞM˜!�éäµ#Ú"‘¼@ënò‘xyéöÒbležŠ¯ð …“g4r&O[h ^·[íq´Lýë'iŸŠ†Ù(ÓÛÜ^f‚pÔg”ö…-,ïˆqÛßC&Žy–ÎÄ1ë¾�‘!.²¶Æœ-Ø„{ 5Ù0Ÿ¡ª›ÁìÉ›ìaÀšÜl¥àÍŒä;vMýUzc8va™…¬¤õg³ÚkšêÉ´R/Ï详ÀœT¡ÆvµYOJÀ㠚Ǥ÷T×™ŽçzÕú¼Â«¾ô^)#]fnP‹u™Ú R£¡–d¬Í§æx '©×³ÍN2ý Ž_û«þšNÞa?xÅW·f5ªV}«*‰27Á–r!§©õeetáòãî"øLs­Æò”À¿÷IMúJv†´É¥ù¤ÀDXÁ°¼þ˜`92iÍu.žKåÔk2ïtõ¬Þ«_B6¹¦§Íàˆ[òe+Låyå÷þ]iÊ.&À¤…œ,³ö¿ö&Y¯?4¢;cZÆâаwhd ?IINT ÏùñáÄó²fFjŠMüTk6¾Ÿ8®×zpü€|r+þ¦o�wï§Ó"‘ F6ÑJÌ5�“ëÓÎá—þyëãçÖQF¤šFA¼�øDìŠ"«?>§@8Â>0[ªx¿àŠQD ÔN'£«IänûÄÈBI2õlxž›òÃ'î:Sœ�’dü;y¦SïUßY2¦A*á@‡ ‡0ôxŸ.ÕúÓN�lÚº,YªÖŸû™OßÖžU”Š€Bì'…A)ýu-\rŒ±3ø «aüôœ™Èë_Èh¾Z$ÛY¦ûÂv*×ÇÒ„å+“Þœ³ûB¦ #�1ƒ 1Q‰H6GHuåÊ×üñ:qÀDºð“²ÑJùUžM#Ö™z#´Z�Ñq�„oSKØŸ†Ê9Ë·bŒÝmùÿmì CV{`¡ñŠ“kÃÄBwùáô ›pIQ‡]¨‘B–©( °”?6ËïÞyôÅÜñý âN¢±í1no%µš$ôñö»“®×ûUÌ`ïöì¼é;ó> ˜–ôô›s‚ ÷ûÀLÑâÿYÍW±;ûÏ/MaºÓI´Êr~Ö­ÓK¹!„ÉòÎ;:¬êüòO®3Ê¢x¶ø›r¼Ê=Eœ4ég•( ð…4Mú^ÈE Ú3 ªiÒ�æ…í;OÂË0À‘ªÜet™èÿ.ìƒóÝèOy£ÆahƒÉPxè+¾�þ®Ï@2”ˆ§ŠÔ�¥rÅÉe9Ö÷…H7`tq8ZÉÒÆÉ55R¼#†ð\E®%;Re¡xêAWæ$E)Þ—/¥¦¸}PÌŠ¿ºŒÙ Q ÇÓ’�¤£ÔË‘ÄgPRR܌ïò™Oh?m¨¢�%amÈ[µœ?ü¤,¾é?&¯¸Bò� P=¼¼T—JÍ…@WIÏýø#—]cˆ½{'»×›ª`uî�´{éÚû Úˆ“(Önmk™#°÷�ÏdË ‹¢+h*?,šË·³É—Ó1_¿z3\!¥‹cÝ2Ð ¹¦xù q% ¸¤YöÍÙ]±VNÚ>‡EtHn'žÂÌÓ$„Û }Ñ’³C¨Ô3�®Ð§2¤ 1z%@?¤EF�¤P)�öYö7ϰ ÞULV3BZÅÀh‰ÉÅJÅ–›uü¸YF2Ql*™«aeÌ_äÁ´ØraN­—ñÆ‘[luðlT‡þxL¡r9Å(ðNDx¤-,f/ÂÓ%�ê4TéU4ŠÜÀx;9}•ævqqT <õ@Ü"ÃeŠó/Ìë ™ ú[ðÏ|ƽ,H|˜¾1AÁÄ¿d]w ÄÉí vû—Ó@ û+ ¬|!ƒH%¤–Ñ`Qèzè‚®ÖER©B2_$i2B%3Bi²±E‘‡8ö˜�‹¢Fèß ÷[˜FS'è+|K´R*G[÷dG$O–ÖŠÜÿI+*ge³�9"‰(<™J$ {(±twzÄ”~…4þ�Îem% ÎeÌ=Œ&(`y[Sä9ßž´ö°„Ýí6)¶ŽD˜óm1¶}K[\e]¸Í5úÏÌ›y-×¥VqchÖ¶Þ}/¸³×j+Á€ÚA¥ê,ªô’ïÁ~h�}7^4ƒ¼ÆÅšCMá.S3 S�Z�ù¶Ð¹Æ¢ñêk�¥s”£B(FŽ_ .`¾—Í¢Vxæ65™ó[– !tV…Œj&£]'Ä¿äpùc‡Žë@ı|>[&‘:IˆÒhÒšââ=³Ì}õT€¢,sƒ e¢]�ø[†3ò Å/¯'øZBê.ž�½I '”0nx~x–>�ij áB)BûââìBs&¹i]œvN�0‚É$úe8î®éB-4P%¦o…£íì³~VÎnN�.ZÔ4ÆqD¡:¿ëœ^^µŽ�éUÚOåú\ÕbxÎ?=»ês­öAŽÏÉa«/úWg²TÊÜ\”¤y�}üÜÆ¦Ä…a�Çm˜cD�€18ÎÅäTöêìü{KŽ|y“3Èβh§·¼Õ£9£ãX.ÏÓõïü�¸"b}@÷1(G³„ñq ì ê ·r`w\gê !8qš*À«ñö2Ó¨ÂxÕËT¶¨ó?óÕ©6—eêë¬Z�×–b¯z}sÉ –œ?¼Ñûêä²ÿg§}Ó”©O”•7© S2n(ðñ¸Ý:�/A§®^¤ÑþãºsѾìŸ|Q ‚‹³«öG¼¬¨ �å¼4Þºúø©ÿ©uÙ¿¼þpùñ¢ó¡=ß\JñS‘¡$ôÚ§­ô‰-©*ÕIðy��p:"º-´svÚ?hŸ´Nú—ó`…}�͉0Ë­Ô¿é\}:»¾ê_´®ÚýãÎIçjY;}Œ(ͦý 02B½ÄMwŽNÏ.°•Ë«~û ¯%aôÛG‚‹L—ä‚��vŽÔ}R-Z¢‚&Ä7%mRúBö ;?à¤ÜûxD{jAîïäì Í½Ìç~F‘ë©ÖoÎû7­C®¢Lm18U¶ÈÅõ1ì¼¼‚M[`·Ì ÇÕÈ�Åwš8ûf>×½Ææ21Ûgi*rÆî_ÖmMºqÿÁ|áÓ�à odE]ÄÐÉ sMó sI{^yOŸaú«�ÖŸ;ÇÇBð¡àùÃ1œ ºßÅ" ¢”0a�m,B_8'pJËf_¥ ˜#>Še§"‹% ‰!%YÎX™ÿ–ª–ÏFÇR‚l§¥ËÒ6ÙÏÚ&K:'-záï0¤Œ˜³Zj’vdiFѶcüÿ$° Ù9°XvkÇ"e»–>Ø-‹Å~cKŽÃYRË4›®—¬Ê4½av ¢yÓmG[ 6C«Š@�{�mÇúZå˜w ŽÊéŘ%‹0Ó�Ï+Èë ³ÏjeIGè$>�\£|‘ÀÜ.[²‡cÞ¨ñ�³ÕZø�f¸H Ü‘1òÒëq ÍUë DOªpê9‡TÒÛ)ôWáMD¯%—Ë¡`³¬gn{ŽëÂÁõTÔä�î‹ló‚Yf\U=7\Ü&ZÏ/ƒú|»¸¤¹n0@W—ÁvYŸŒÐ/ï~”Z$­ÚA± /½_/´ßõÃ;ø<]´[Wý«/çíþõéåyûcç°ƒ”Xà‡_íIÒ6UÀuW·w—!œO|QŠu¨(²bŸGMµØÎØ×¬ÇhÑ! vˆßF¯ÖöÖöö2UEk›IÒ£ÏÒH^�4¸e¼÷­õF Åá5Š/ð/1"�ÓÎI 28±‚®"$bȺCס;Ȅ㑮ûxäû=FÚU!+x(ÈOÓlŸÝˆÈ!´|Ð>ý²‚jâÖ (5ê7DŠð!�³i2XŘ|ŠG͉·D!Bæ(€væ„› `uœ ¹$¨2ºà¤HîòvIË"ÙJÆh¯±ÔãLŽZÚÎÙ©6ê›þ¢°n�Ûð¸�ÚÙÛIYœyP¹ "À”œzŠF¥ò/Þ¯µ²…Ç¡5;¥¬‚X†Íg¼Ûņ�¤j™ÛCÓ®×0 ¥ìÝm RÒ�‡OI+jŠvQwU z°°€d Ên¥R¦U‚.�¶fõ-»Q+3Õ:µ|G7Z÷ ­€»WîU&è ˆ¦;¯–›Šµ9(5ªb‡„ÍnO GÍêûè·éûè×_Ë!PÔñ°Ô *Y†ÄÝA©¾¹�—PëÊníÕj5ŸÑ˜d¤@à]RÌÔNbðJ‘âH$Ïob‹Êø,²�¡1//ÿIý3­Q|o›ÿ¨|·¶:¨¨F+ƒ§ßƒÂÜOœQÆFåÓ ÷ž[4ë•}a£ _i`Ç¥ ^ÙJ®K€¼†È›¿ Þm‹w™Û°!¯�/R×>@ö®(?IBÒOräméYò•?tF*�<œ|BAFÈÁ£€¤û6M*^}¬f¯D¡,"�L¨à…&I•8„S(; )!•‚“‹ãÏ…’‹Pš‡‘‹0ÊBÈEå‡Û× ãÂdçaC¹¯–Š>b i¢¨òÐb#OÜžŒT¶ð²¢í]¶â=�„ŠÕý"Á�§Ÿ¸½Ñ`Ob Pê8 [[Çv?wëÕÚöz­¾^Ý2ª»@‘ÚµªÕjÏ@Ç{£;Ç“·gÔöê•Úön0 þ7Ö�IM óüìòÊØÜû ÒÚ= 0Š70À4_ïY�2Ƨ««ó�Z¥fBÍlŸuN�G”¬�îá¼0QôÕ÷ ,.‘³�Î9úÈ zÅ:À‹‹û»Œ1`Y4„…¹ ³¼¹[ÝÛܬîlV67wê[[Û‰›Š¦BqpX‹$*‹’‰Ókñ9'ÈèÿcÉbày³iomïìÚ{ÎíÀv½»ªm›‹×'µ"éÅâ Hu<ÍÔ’‰Ð;jÍ„lÞ¼®Žo4Òú¨ÁÖÖmà %�¶ðח櫾œ›¸œ@¼ˆÚ‡x©» $qJßK GÿÌ�*r·6«�ô*šÞÀ0`wìÍm{³j àÃŽâ�õÿfïjœÛ¶‘ý¿"sRYS4I}˧xǽ¸uŸ­´M�BI´Íš"UŠrì*zûÛ]ü¦$§¾{s3/íX$€àXì.°¿}hÖ©l·ÿ¨»º•~ÿcoÎ÷�ÊAåü—×½}J?¨|¸<¹èñëã÷oq7··?r¼ýH•ªË)Ù5Ê^@kS×M­f6šíF+¢µ¥}8®#1ÍS©åsƒÓùÈYž‘õè ÖÈ’óßMâÿ(US£79dËhÛ"Úœ¶ï@óù¸˜FN”ÑŸˆ®f§f–ÒµVëÍ]Ó«¦Ù1„˜ÃêêVÌ. =¿Ï«M­£UïØñSÍv[«@{h7‡ÍzEuà>ð_-OW«µšzǬiº¢T†¨”´‘¢¯ëOǤ|u±i˜–ŒR׿–�( Ÿ¡ë¥¤4õn½•¢óÛÉU½]«-� ê›-F.FQ¬€@Â/žú/"šÆèÖÈSM¯7tÍ4ëm¨=M5r"Ê��¥m‰w�E�| ý·®¹%á ¢ÿ'Öó«”(T0AüË)À$�¬� ×ô¬ hnÝFø1Ù²”˜lf-ÙÆd`ÈŠ�å×u[Ò°�ý�Ž,YÔ†¡™Ù¾ØþÃ’õ—õÁ@�Z \ k6Wh<Ý –䊠YNØÉØÎéÚÌÞ�¥¤‰dÙõ(q#1§3;´É2lÀ€‡þ0»5Zžèô£ï N"†¼Ñ`›d¦NÝ¥«%vøÂ¸ˆÖÖa\ëm¨¾¤¥Ü‚)F¶Åì¥ÛµÙü†6›Ù6×ê5³ÓXÓæç n¶¥õò–æM;ÉöÖµŽÞ4ÚóßÛ^cûö&ÍWé–Ö­Z£]ÿO¶´¥·ŸÚR(ãÖ4;­5-MŒÛ\‹ãÖü–Ѱ]›Íl›kzSo×;k©›•þ7µo#o«¼©d(M¶±¥µÌV» UÎjE‹%~ótJÖð•Í'5Ï0M¸\?•rl*¾Ù’K%8«ñímnK­ilÄ9ór� ûµÔ×Ñ7 ¹á@¶_zþ�«X¸…‡–YbLXC›°z¬64 &ŠÞnvÚ@{‚˜XG¥_ÞœöO$X×¼…åâžEÖkàÒåÌ;–Kk8Á(0ø‹ŒHØ¿Eô#t¹a2aÿ È„ü>¼›ÁZÐ8J¢X0ö~ñƒ»!·¹€NÖî4­6>˜Zó»nÝìÔ;Íð~5…[ÀŠ'€4à›kz ú­¹RƒÞ.åV ‚™Y;bšFD0Vêúì„¢‘ÏNÄÏ™%âG–êÙ*×T$ JIŠAo•WžªKȶè¤Q¾ã£óþñ›#éºW¥iÐÔ͆A6¦‚W7¤´�ñÉí(¬¶Ñε¯@íͽ+UÔÃÿÏÕµ�ImëÚ÷kfþêSTAŸSr{Kgväb@–Ç Å ¨À ø˜tz^�—4M­Ö„~n㦞Ŋ ò5çŽÆ“ؘ‹½Ah�ya!:ðxÐîcý#*ãó7K~ r¹6öùBA'Ð餻d^]É–L‰Ä!ùc<ú†X<é:ª ƒ‹Ú£ÅE>Û]Kê‚ ¸]½VW ¸ ~“H/p¿RÉ�ù‰…�Scóæçº¦²Mײ–v:¡ÀÃ@Mÿü5?š,[�øjYÀ@ss+½¼”-'ñò�Ý•çß³ ¤9NbuùKKJñú‘ïMËu»¸YØAôOîÖÒRôO%a`“'ÝQÎ;�Vc¬çe$®$1캾ö�ab ^�a÷º •³<ñ“ cáðzŒ #ihÝÓä58€w¼hB§@*Ô64RŒøAMO=©éñ#³‘~÷ñÃ…G>Zö$]±®ëÈŠbŒÀ®iÔ[ Ú6ë-•ó%¡IÔÊøÂØõÈ‘‹:„0v¿Ø£}f@Úw¦@Ã{íá6œº‡Î¤ÇÎa-Ħâ �X!¶¯+eðˆWŠ¢ˆÇ•Tåæ§Ù¾yìJç§o�.>O__JÑØ¦Í ŒèL1¸÷E«†Ùr:uk×Y$;õègA ņ´ØÖÛÔö&Ň9Î<¡&{)xïÊħÓÄE¥Ø#röZ© £cljèëø Ù3òë- �7Qß Tàþ�ü0¯Å"vAG‰0§ayX°bˆXoì.&6ºÓ7µx¿Øât­ý°É9” _:ŸØ×κëá/ ÷sM)ì—lRÿ�÷Ø�ÇuÜɆ~OW yLJq‰ô}œ#°oÐm qSt¶¿f‚ìq%…>�–Œ[øSÇ?&ý­£W} {yÜ™æ ü:øÚ[ ú.À»ž+»ð:ÛÏí‡.¹·áõ0 …Z1¸öŒùΰ_‡Æ\’޾Á%iaMŸ€ŒÏro ‹Ïr?Ÿ(Ä'~¬¦ü3DŽ­ÀôY‘'#éó6~#Œ>+ýúkjú6ýl… =mmÅxõ+µY«µ››"H´¸3¹TòᑳÚÑë ê�ZÃ(e|Aîˆa°>þ²#ý9 ¤MŽEV³¢—3?¢ já1;®tê�þM�^¼õÉýb˜/Å(0»LÀ E`CÃÚP9&%LX�ùè:•ÅðÑXátg•ì‹âLéuӇǾs§ó89�].x“’¦Æp2Jî6B-ám£ÝÛ¹²DW«9±*3hð$íŽÔœ¦a5‹Z"d�ÄKò/Þ²zW$§¾ý¥.â ÄŸÿRß¶‰0)®¼¨ï±ì¢Ja‰OÛ)(–iVq;W›:?š�;;@.Äv´7!JÐ3 4ÊÏu¾7›a²8xT.öõ•ënŠÌÆ‹fD!cÔ;�Mþ4§6ç‡ïþäBäìò‰ÎY$ì#_âÈ«î.ˆ5ÔGR|�~´„!ù¯Úaé#¢Sa>Ø–rI ‡ˤ3æÓžé�ïGÑ\\Ÿ ·Ì ô bùÍfî#AÑGèÍ…žÖ¥5F®S 8,á¿Í>í¯ÔÍjHWþ¤ˆ0ëà"áËß¡:âÐ}Wäs™V´Ó0+çV�Yø°g§+XÝ|1ÂM“‘Õ§ôìÄMŒ9@X.08Äat‹Úïáa =€Ô„ [ÐQ=/Õ¼Õ6ó"Í•CTÞ ¦ƒUêK\8®s‘‡Òcƒ"˜Â�YR˜þÜ“!;øa¥KÜn9ú ÂDðM>È/8ä—z¹ÑÌËÃ5Ä}Ò¬ž_µ1ü'ЪL×ûb�æ·$–q¾XáË8´7ñð/àk‡¿¦AóP^rœº®Àw³Ø¹†W×½Š`9*sü?�u¸ä¡ém»>\m[=ÁFõçª)pF%¨Y7ëó«­·[z³8kÑ|x¸ ziÎ.’µàAöµ”T͈•ËÀä¦GÔXD�”;/]F©ˆ$ <½­È£‚¾´c(Eõ¦zêÓB7[�kk LarM–ï_mEv®$–“ýuJ=y{tzÆÓmXe\ñd%û¤Ñ¨Ʀ —n+ s}œ0ŒÔÚ�Nsc'y‚’'µ5£¦™’Ðì@¶`ˆ_lÍâЬ,ªí ‚£½ÿ)ŠÛ5ŸAýœ+û;Êg¢ÛÏt ù€v< Tdó˜úðéçþÜA²ì .¿³ñn/¿ˆ*ƒ)/€®¦~TÞµ¼›( …Maé)dÉ(ÃÕ€?vý/øF‘]ðšˆ-ÅÊiA.�­}žÍç´É5×éF}c*e=kæÉ¬§D¯(�¡gFYaL‡ÖÜE–õ;¹"þV¹ûPœÃ¿ÑÉ)誴aðH×�V�XJŒô¬ÆX0Ò‡ÌÓù˜œ«zLyeßZ÷Ž\.È%29pR¹óh3gf˲®ú\ÌQu†ñ¶aÁ€é˜ò'ˆˆ·=„ßg^ q�BÀ¼Å³B½9Ÿsàüµ5+ÏaM³ÕÜdò}ýEl¡]r~ösƒo¡Ý½ÈÅÓ¬mSOv2q6âäñ¾úübéi³•3Åó)Ÿã°ì.oÍRëÀ0€ê®$×Á „�B‰LÙ.…xv]gS· ¥kìcRÉY‡,.±ý±qX�w!ïìG >uãW9£ÌÜbÄÆL :Y�X•�ðT)Šxß=_ 9ÆÓu´aÌ0û—WSŒ¿7ðÉÄ0P©D¼8QZžÐ)ÁÖ* ÏRJ©äÀ'WqÒšR}Õ€b‚;�ˆyáòÖvgUº0’ª<ö‘÷<i¼‚âK­ÐŸbË,ŒÝá,ø®T}¾%nç­ Txè&XÌGü㬴ùýÍgEIÔK±1�t½Þ¶õŽIУêyÍk�! j½s|Ð?íUtK.îœSʹœHá áÜ܆‘Kü’¹ûv½ÞË0.Í'OûPÑØsÙŽ ªç½%†>ÁÃÓwý“‹ã“óþû‹KuºpCOНü�3Ù©—)ÿA8�H¼WLš¸¼sf—¶{­²Û÷tæØrù-cårÁk•Á`3I„6Ÿ‰?^à(DÀë—ä«ÇÓ‰,AÿÝàö}|‚oH‹ƒ¤ ü¼2ä üáÜfÑ®RG_$D�ÿõíÙÈ$ü§ñ%>Jì8Xû4^ûðü™²dö¶ã^µÄ@Hxz¤ÇBz‡Î§#ßA#ýpqÆ´Y° +»»2×a\‘ùú`å\ËÎî.\áã–´Ñ"´eəж3ê!VðXåÛÀz‚*ûÖjÀÚ,‰å*ìyžY°[?s*¬zÑ#«Yº>:¿e4k›TÅIN¢â+,G‘l³D•–h.ìk˜bcË{mÓQ à+bõåM�ÂÚ)±jr˜®…_jðùSž‚© �˜.$+Jw«rßdðK¬Ž6^cðŸY¢ê€¤³©#�yxˆ?ã¨Dðûþ)žéN| ê =C7ôúF3!·þ‘*ôüKé‰�GþÇqâÀô4#�³ˆ~¤ ±zpÇ‚“Ì)ê.›êïY$eÐí£ÙÏÎo5[µMç·~\'Wr=åÊF«Öj2t:Ã0̓§ãÚEŸN¶ww%ŸÚX…´ ª±­à@<±€‰ÈWмµ/˜uw׋lïº܇`WmÁ÷”Dé”7½†ÊQäDIECvX¤ &ƒHGÁ?fâÕeâ€?T,í7y�ÌüõÍE†5R(ü�ñ!ŽcÉâ ÿt8T]eE³'ÈG0°‰—L2¼$³cïx¸]oÉyç+‚Ód?„«m#v5rës² ®Ô|ûæ""[Ió¼Ló@úˆîH£s´Ðš)rˆóð÷ÆØc°žÒbÄÌ»»sy)lÔÔ�5uËÖc—ÐËh¹¡yB*¤ŒH ´cÜIa9(ì§Èó¬Ê û̬ çå¦mîëübÄM�·®PèÓÎÝ•5ªb‚Ïj"�œÏ˜ºñ[˜åßÓ8<Jì6aÍ‹…?uAPG›‡¨ÙÝÝqâ³Ô[Ê¡Ÿ\cJy71dVª¬¨Ý®›� _|—; Ê-vÌx‡f<+fJAÚ¸án6n€~áx)ÓFÂ6ønœêh“°*ñÞ/áíŠ l±ŽÍZxÎ2_§3?v4é¾mÞÃ×ÄøñçQÌf³´ Ü^|vQ6ŽÍÀe>²®˜²rá»6ëÂè=¼ƒ¡±Üñk¢0øåô2©„‰Æ #Kê‹y"…F‚ÑiÓ̧g²Œ)1²+FýÁ_˜nò/D¡ÀÂ5/L!ºµ˜…te¯ýƒÖW„~ùš‘8fÛQ±ãø•´/©™ðjâ;@*ªDÊ"T-j¼íÞŽªµ·®—�y¶ò‚ŸšrkÏɃgæˆ8½7ma²h‘'ê„H0 ³^ë´“2K,ÖY‘$ÎWA�íXPêE‘¢ÕDªF³]:õ` :£|„P>‰G‰E›}öDÚ wwÙ¯f…þ(u£�Pãb ÊׯIe+ {<ôáÍñ³½½ûªJhZ!a¾«÷z†‡º¶déoXÿß*,`V·Ò¿eôn,rdW&6ºìLеÌóAXóEîcÅöè�&1; ª´ÔU4f»=I:ð{!Úcƒ£Pöö”ƒÿñQžê9ßÕ›õï½=¿ öö¾«+‡îÿ �™�t¸Í!›�Æ®÷ò¥\5¿wv› žè ÈG¯Ž_Ÿüð�7§?þtööÝûó^\ö?üü˯³Fc îÍ­óû�;õüÙÁ<\ÜyxüSG‡LôÇììí÷$XŽ&öHÀ±¶è®R6NAÚÄq�*žÎØ“DbÊ>�`þqØ„õß‚Á¨wG�mÝÐ�Ù ÷z°0J‰ÄKi<ŠP—:I:u]ûÆr+<߬úÉ;gGZ¡*Î[^`Ü`Ýöáâæ;ˆQ0�å 5Ìf"„z, °¯þ»IÝ+éÒ0té;øAìvà±âÏ‹˜¸Šè=.˜mãÂÙ6.›m}ä|¦ 3Qúó`"U!šyvb6ŒeQW…˜¢��kf*c(R°$�øÒ&£vk£ÅûPï2ËH2îýaaL{'”%˜(W ¯$H±Í›»iÏDŠQ;&¸ó\k˜5Ð]p?ºÞ4@¨˜ÅJØ…u�—�Ž lîíüõvŠ]Ƕ‰›xG{„PâÒâ#PýŸŽ>ôß ûï:yǸØC H<É3Ü}„"7“#±_LI¡Ó¯ä‡ä™î“l D´rðÌcÇ‹CÉlÃZ„í±á-yøŠÀ=°¬Žý{; 1뚈¡XùA`$‰‹7~ß?C±â¨ ù3÷‘%/õv4çÉ�ë-v©¶ÒRŒ’žÐŠ�aÒ>‰/’‚<ëÞ¹A“­Á{2P—äÔsÎOg@YxÑPsèÜŠ5a#½ïs±{F6S‡”Heß%¾”V †}/Y¼Þ•U¦x<¬¤öû¨Rµé�:ôž¼Ä Ýt$ôŒêé\Ëyzi¿Ý) æ½óÏerw×>¤wŠà–ÐÄ[íÕOqñ¨sÓ"Þ“ïÄËÙ÷§Dͨ†Ð Âà=s Ïd/´ù¡,dN@܉€ê;ãiJ7§I¢œ²'S1ÙÒðõ^4`_%UßYJõMôe¦%âS7¶‡w½Û¿Vh‹“õ?`d+d4gêÙ¡v¥RÕgÆÿš·T’*[:‡à Žvòö¼ÿqFñ„0.Ùf ŽŽÓОÊ� ºr­¢I $I囋|ªP+h‹©ž™úÄô $.ØŽ'%3Æê�È¢–•G “7]®ãÑùÐ-‡Í>wdŠy µ[Ðh™8ð`½-!ާÄçAsÕ˜÷¼z¤×Í�-¹x€ÜfG‡aS@àUòŽŒ6-~v�»qÄý,Ö:`<À4sWfsWj#FW^•÷;`Ê ËpA�Á§·QOÛõIбi–{FC’ØrØÔ$:6&‰q½ƒðxMé1°¢P˜ÄøASаnÓZOâŸå †G“Ñ Ùe7¥r‚ãb'¢Ýµ1E4‘ �È ×nLcq=½)EXøHx6 ÚW‚¦43xÔy¾g:AS’hf[ÄsÄ?åYT%§ž~ÒÆ?ì—1ê§müÃ~™£~ÜÆ?ì—5ê‡müó Ïűrˆü¶£84“J̼`#žÕ.»ãGáyù$[½¾�Çp-éW�ÙÅ)³¿Üp�Ÿ2õ^¸‰‹É^ˆÓ'Ô_i?*_o†t|$9ÙW³‹i»M½‘»õ§´!Ûù{½HCLû¶&^¹ TµTƒX#p¨Ç×2‚J]lë¦iËÊ ÜmÏ  ÇÕÐMûg%]g€Õ¶RÁ½ÝÕuj ò½KŸK'aÀÛcùŠŸÝH(ˆƒ‹ ág2Þâ3áñ2{Æ^ßЙ™þæ9[ÏÛ†¾OÿµÔ^…ÚL[/“`˜ 4mz­Å�âœ^âè±§ë(�0Þ½0ÜQ¡)\fºi™§JºŒod¬¶bº °V¯§Þã_‘ñø:NÉgëS͵×Cµ—®¯÷hüCÐ_4fAcnº¶Êoü¿µ;ˆµ逰ÜÛwYÄõPÿÝ`ŒðŸ ûc”1uíâ�-#tD÷¼f·ÆÞDØ$²`'Ü,_+Z<_U5ú‹ÈíÖtï…î"q,|iÔ½`j'¦tb*',¯£9îº8Öý¿P&"DLDKz™æ“Á†ci9–ƒQ·*3¸ôYKù|‚ û@¤Rì 0K±þ'ô€AO/Þ”†-½¸Í,ˆJýq�ª6#±:gáE™Þ±ŽëDŸ$ ¬˜.°" ¹ÑV2Ú&ÕnÉrgEÿçů`µ&ßX†è�6#0k›ü" Úl¾%ÉÖä®ÇÑ�ÍÚèÿÙ Và«8 È�ˆQ¦›ý":±šBžìO«WƒÓª�Í5»1ÛP:?o©Jç^×ü¹ú|ƒ­ü©//½sïv§u˜d ã)B=[zg°wz�·ŸaÀê‰y~A»’´h«ô¢K¡.½RçÌ‘§º¯/ªÝ/èŒlBÛXÚºéÑ/Ë÷m=mkò­?RµåŽ\¨k�þ�‘Êé~«°üâÖa-Mj«‘‰5®ªÃ¹O¹Örƶaë&Õ°ß›¡ç¾<#P°yWN`¶˜™©ÔÛÃIs’¶Ôå�w0vžÍ¢É‡gˆ¤)Ìì:žhÁ,ÙFBœ²ƒ„vUX÷ÌðV·Šû‘ú¸¬˜ý¨>Þé’y �°ˆæše7Ò¸†eÿ”–5"qŸ†›!öSþ‹f:öþf¦>ÜEV„6˜EÌ€á[}׎f™*kLRìŸH•Ün=´ÚT¡À¨Ëƒ ó»âñeÈÂßT{;ü;’8#,çå¥]2¯bÃЫ5Ýø3¾Îù^€ÚO§—Ïïy­Übþ'"vU¸äv•6…bÝüZÝÎüOf‚Ã�N ê·¶ Æ`ÛÑ‹§¬/Ìwµ¸Ç°u:„ÊM�$.Ô')Œ–ç%C‰yÁÁҊ짬“�µš7…̸IZÛH»…û‚+Jµ$¯0ë“_&ZeÖÈ:Å�3ñpìo�{Mw‹5’™ŸÒæ}œ~–±[ý.ƒ–8)ë? »—¬�6»›Ñ °¢‹ë®ü�‘{ EEÔA’T»-Á`NbÚ‚«\RÎ=.}åE#Y[cÆ€Iî§ŠŒäòD-éöò"� Š9¦Àní³€�)÷­}dýŒú¸E�L‚´‘°ñoDƒX˜:X¹;7錎DÚÂôˆ nY;ëNæ…Ñ^ˆxªÇ¥7ßå©¥LVXOpbv„›ÉªRW0^\ù•6ßÕ¥ßè#6ÿÌ[¬I¸«Fé’3•˜º½ä×)ˆ-¦eún½7U5<ù8šõ/Z/w[ZëåûxàqˆÇ1<^ãñ/<Þà1Äã �s<~Åã7<þ ÇöK<¶ñäm@Þäm@Þ~…Àoÿ‚ÚØFÛ'x ¡m4´�†¶ÑÐ6ÚFÛ¿ã�6vÐÆÎhcàw~àw~ç€ßø€ßø@Þâ;ˆT²È;À~àw~8ï¿]@Ù€]ÔÝÅ×=´»‡"{hrðö€é0ÝGãû¨»�ºû¨»�ºû(wÄÐ9@üP€ý@û8â¨{ÄNñ@¿0(hí­€Ž�pì_¡ÉW¨ñ å^¡È+9Dk‡hí�ùå�Ú! ¢Æ! ¢Ú/(ü Êý‚"¿ƒ#¼;¦GÀô˜¡È@±"€r„Ž€Ð:ìDƒèctÝ1ªÓc>F“Çhò˜cPŽQw€jÔû ¯À` €2E 1 ;.�5@´1@´1@ 9ÀÀXkÀôMž É´v‚ÖNÐÚ p>AC'ð'€|x'¨ûœÀ)Ꞣî)êžÓS`z §¬0=€S v ÔN�Ð)pù ¼”7hí Š¼ACoPdˆ¯Ctç˜Ñ9C¢µ!ZÝ!˜pˆv‡hwˆv‡hw C4>ä!¢K†è�!0‚¢3€?ø3sðÈÔ:ä3@>ä3@>ä3@>ä3=Ð3à|xç@üPÎQã�Ÿ£µs|}‹¯oÑä[óåÞ‚Ž·€üäÿ 4~EµßÐøï(÷;úuÿÐ?~m�æåƒ•t¡Ì¦a2›àØ$�RˆŽ4!˃cåž›ÿÙ+Cáÿ0Ç!®iëåòYÚy©*r3þY)„áûyÑô�AGÔø¢›�©/’Qÿ!xž•éÌàºU*x&¿Œá¨ º›{n"ò6Àäãëd—ŽáÓô.wî­íÝÎmRôNm8îìð^€’kû¦Þd J a-SRíÍGU…]•™ÇtåMn”/ºµÕ‚À/ Û �’Áéªö.¢3«gNF¡ÐÈÉ]î‹t„sˆÿÅxÞÇÓˆ%¿¢ƒPKl¡\Z”ãAÞ¾ ³ºç¶Ò®¤J¹gvµ ¹ªÄ�8¿YbÈÜá©®ªv£­¤›Îsh&°Ïýýžàbn>ØjåÂl]o¯­Áiº³b¬˜“gè¬ÂÐ¥‰†C�cÛÌÂ`G‹ü"£||Šîa=¿'CTÇ,Ùh™3¿KÞWˆÃÓÎÕóGDá~±‰(ÌTi�ÂùŒ—²±1YØtlÛã²°7À" è†q"då«BVžÞuu�;ê´y…c[TÑÇ Gÿ…Än}Eæm,ymœNS:þeý´ó»Ø‚�f¬RuÚ9âSV- ì3e?ÿ�ϳ ŸO,‚y<ãÅDÌ þ<æx-åq ÌØL UÉŽ9‘ìø¬nåˆ |i44�lŒõ_˜ËÕœ^G—l]ƒ®h^ÍŒ×*gUÒß)…ê¢mx¦9*´@åäsF%�ža4NìªkŸãqöWß0t]û+BÐó¾këyÜê°›øÎ“Ô ðéUÓÔÔ ³"‰ß"ÌV§�i*¤íUå1ãPCÕðy KTCw¿K‰i÷pørûxoWÀ©�¥S™�\ê‹I%|™·åV× g¯ßC©�‰Ç‚é4š2ôä“e•È[L…j|⤡‘¤öIgrZ ÁÎUÔ74Þ•î¤]¢)úÿdÒ?²2=]ÕÈ«jCVo4DÒÊúv¶pF[¥ÈÎy1š—Wœ\y¸Å­ŸÔymÞçªwZ¤âk$Ñ5#²ÕúäÉÍ刚à¿,/�ìa3T¾$�÷<‚ÑRo¢Ùíz2f0­�çIOÔò`¯’¥TiTfâ´dÔ[7ÅtcVᬛ…]ö–øy¡�ºò^£é(ö»1�Õ+%ŠKñW…˜É¢¶”~³¯‹‹=´ô¶:Ysr¹L[ƒ@EÈý©Òz!ñb.I+ªeY·›Š€ŒqË!’w]7,Òýô sÚøTYÚ$K8[Q%8”½-u+*Ô¾­6 �ôC5¬tì[õqŒCݪ�/;Ç«?ÞtîV¼îþµºLj}*4;\ÕÛ9±ÔqKvNBZžTMžób¯ŠaÞÜTnr–ãÂ` ©“„/Fµ‰ŠU=_ eK 2•ŒaLç‹[–¥‡…†aÒC² ®�Y@°j}Q«¥EH—$þNÔ9—Õ¾ «Ã ‰¿Îçpš°¶ßIÔb°ò¿X”^§GÅEÚ#}òX®ÎáYÈ ó,ìÑÿÜ’”•i�€Œâò+äi3CˆT#öˆ»‘Í­Ëo„§•á("¯[m�Œ¹¨à¦+&L™ƒŽé£DÁþ`*(�«GIQ&¤k·5l”J$SÒ©½4OVgh+¡s>ët:�·¯¥#n”!QÈJ�DYÌW$cÆÐÂó¼wì þÂ+™÷/eæ»xCMÛ<­+¯¯?­þ8ùoßm´|=•3niýóL©LWÛy Å[ÿ Û­5wTüîhVYü.ãäC„`x»"{tùXžv†: ¤kUµÏÓðF©Móq[Æí‚%IžB¹`Mî vÿÍ,ñ¹ü5K§y.«"<áfqÊÜZ7ºF!;–¤ÍJW,6ÍL>X¾ Ÿ7z~á7Òú÷¥«xÄ(ãËc\ýñÿŒ©k”¶`°'X˜'ÕþXŸ÷aI­ÇX˜Í ÎÂ^àú&WŽY� Æf³^àx\9æX†épåO"qSL‡ëBH¸-$ƒ¿]´>TfÃ}–‘<*s˜t3 cÛM4‘·µj,UAw:— è»Ø$„Ž©’èu…ª’c‚A\€‘�ÏO>Ñôc¤*y[ÔÕÝâGØ—‹‰¦iÓéV~OûÓºÂÔ¸6Í‹â×Ò„WEýâ ~ÕIhR`¥Ò4?S¹ÛÇ%[Õ¹±%áßohý”‘E'ÕçÎø_Þž„=mdÉ¿¢ð²”È|&xX> 8ã‚yÆžùÞOO”ÄJ"ŽƒÙß¾u´¤Ö�;žÌ�A꣺ººº«ºó.‰”©�S×ã¤lù6vç×@ïM1Ôâ ç ¦%O‰œ¿#5aËÆO‹œxÊ‹Z­æ³á6<“s'²©üS&²½r9"³í¦ðÀHGyÚÃL€c„}}pйéè3U÷ghh“¸e.Š®²b܆X#9ÞÜ?W@�ض6¾e¢ÕÄLpÆ ýÜøß:ÔÅMBèsÌ5ô¤É8KmÙÛÑ“{Áš£PÂ{h�àÿàtÛblÛlØIQ#ÒÛ©E5sþôÅÉU/ÄšŒ ãÕ«Ef�æíí½¤PüTªñôS5s Z ã¸Í"JžO¤¥¨‚¢~.Mh‰¹•¬ˆs‰e¤ÞÇiH¹|*rï<�Ý$y�H}2›dûUJÏÊqý<•€&úÇÆN´öÃì'ÑÚ覆?Nž;e(¢WQŠ…ñgóc¸_ù)ãÙ/ÈE{‰"Ú‹ Z®I‹Ä‹Ö#ÔRp“ï™6Ò?ÊO�ƒšì;âÊÎãAì8^sa™ ö�ò o ÊŽRxƒUmñæ :‘¢ø\k1(ŸÜë1(÷Ðbže¶¨Ç˜ÿÁ-/nGï©E8‰WéEMsõq(|‰YÐ,QK¾ø|Ÿw�Aˆ–æ-MO¾Ç`Fl|FKSZnÞã–[fÿNó§~j›xÆí-7ïÅøs[“«zã=‘·y±ÅìOÎ Mw²)�ðÓ0zd’oìGô+& Öºƒé×ÀMþ):^²/Yì ãêþg{.$WŸX×°ÐÆÖ¥=Çåeí½¶v4Lˮə+¢¤ÌR»€VÓ±¿Y¼i® ¡ÚˆžHëƒW˜*ZÓ£PѹƬ]˜;^3Y�É.‚Վ솃HÞîÛuÑ)9 ÄHðà¬à`fk ?<üKƒƒ]Ýʪ'Ð_åc©7™÷dúNÎ�JU*HŸl䌑ééÖ©ßvšÒüÌp¼Zÿv~í:ÅB{¾ n:{D˜m¬ùÚDkÔðòä5²HÙ/…^ü®¢ \ý½Ž‰f>Zõô?B_fŸBPbRwŒü&¬àY{�*cHTîÜ—ê¯7ܾíÐË–�Úá2[&‘F Ýý­Ñm¶[ÆÏåÕФjêQ|¢' ‡¾Ë²ç6Ý×›ŽãÞX²Pò«ñjÑ‘Æ×Ü?trá(dŽn-f˜ oÒrA„§øŠØ×cÂãû|´|ßhQË>¡i‰x¥¶G Qz» áT‰T÷¸DµÆÕå¹ñçog—íÎYÿ2žlÄ­»’'´ü˜Í<3¿�Bª:ë6ÏZíî¥Ñ9ÿþ¬û>î ªŽûÑp¬/Öci½’Óeå'x±šóÖtƒP÷IÔŒW¶a®àë}Œ,+߃ÇÆX¿Ým�Vëìòì¼Ûè­Æe#½ååXÁJ�?m£ßlt» 4{æÒžþØ\$+ÁF[/Ãr¦©ÜU1l’0oS%Ü% v[óLG›i¿œlfîN|k|O?K8wÓ`9I•AhߘÚ˜¢ ú¶Ÿêй´©Ÿ—f� waðSMÎn— €fñ±ôàìj8,òš¦ú˜Ð“ ôï~LÑÔ’0¥æÄ8ë^¶»ý³ËÅ33^®¤:(ñ¸‰ßÐÄI£ùûUϸh÷/Ï/ÚÒÚ1¿•Ãü×ÀVË{×ìHéé¤Ñg¸î#,Dïâ¼Ñ¼<ûêµOÛ°?H@¸¹<‹�+ÁÑ!�ÚÙÒ°çx)Üfzø³}Òÿí¬ÝiÝOäÚç…{„â¹_mË7Dôï4¹,A$œÁ¬x–•™_œ$C2ÈL¯¡æy÷òâ¼côÝvGš&w•æ¶oM˜0– uÞ¸ÞÄ`Åm²—LiºQ1dEM¦ãó~¿ÝŒ;dÕ#¶N U3Å­g]¡…™‘·ê¹i;2�FL ü‚ˆ Ù?%R|Ñ@ö"�Õ†3�ÿ4Ók¯ñá~bѬ¯6ð^؈Æn°Ï(©Ëû&¡ÿá²gœtΛ¿'¸X.EPø÷œñâ¦x>=cú÷��cpyÚh‡§yIÖ ßPoù¯(’@ €0žBf¿·/€†š yÍZ“i¦Ü‡ó–‘œûåÒ©³Ç†·rr(,ûÔÑ¿6ôÓ«·Î}¼p@õ”“" œf5á§gí?‰àédv�îàp1R«\] …-§%Goêô*<Ò\³cy'K§‘Ѻî.Ù¢½P ÑÁˆ™X‹ÛGµAN&8©Úe³dnœõ¾ìo¡lêÜ»À´"RÖ8¿º|L•«Öc;Á�ì$ÉáãGò½Uâ‘<¦Æã:Ajÿ—! cYÝ¢$[²ìhFeŽ�$¿öÅÅùì¼½ó‹ËXQv·ï7k·®:ÒêÏê=l½s™†ÓâÁÜtnLÏÒ}¼Ž†0éÃAm‡õ°£hYP®úhiQ“ptø‘¡zªÁËúü#-býT“sÀÒìGÚ¤ Y�(¬Jáu ¨.1á°85¨|ê<“=µ›9¢ˆ™EöH*íâØ¾kÖ¥t k‘…áh£‰ë‹@M�AŸ¹+ï©mïîß߸DÓÍN»Ñ½êI‚¢[=�Ê1¼eNp $…š©s°öÙ²–¬?¢†Žêømÿ»ðÿÇEÖ–ûBñêDóÞ§‚èûâny÷HÕß÷ÔbAßû?¿�¼Jº~-;@n^¶Æ›F­_=PßXo9V€Rµ²Z-§®âæ_½²èª–Uù/j5þIá¾ïîà`9¢†¸©8~Q1Êd¡¢£Úøs=/r{#yYQ Ÿ*ðp—#MF­%�;Ä-3’o[ÄÈLÿT#‡˜»¨™qÞª¯;« .Ôa‚ס_z„RxJùl8÷E§Oq(9}qA.é.Ú»`0—L– }¿‰Âmå`þ�(ç¯Ïl!¡}êg¸�ˆÂ ÚµF…ã­@€”k…‰A Mãà˜LÚ¹„øî×Öü¸šNÆ0ó¬)]#p™ü×4þb¡4^bŒþpÀûŠ�?Ú€Ö7ø·ÔÄØvŽm�5»Z(�dƒ¢Ti‰¿wœ/¨ì�ó¦WФá@¹æ‡–Ñë\½?ëö ’½KqYÖ̺MúèÚÂ-l4 ³œðÇÓË©ë` ø;…ÒÌ�[¯K¯cHa&J777¥/3×||“„PT(4�mñ¬ "ðŽ}’†½©9¶¤Žt½Äÿ!–Ø›ƒó• ‚Œ+bµr—ìÞ&ú¢¥š¤(º)QÂ-ÔJ-.Q ÃbØ~Sdk‘Þ9á;©ÇD/,Ðe/ÇZ>‚k[ð>ˆ*�²ÈºòB+5ƒ™*޽ø|év¾X½Ù²o9lŽÿŸ—k¹äæ%_¼úœ4ÑUP]ó…m1F0}³Jœj´ïþïÊònÃæÑÕvîãÅÕxLE½°(FãŠ�« �lèúÄso`¢ ‚è;7R¢�aŽÒª1OI7™CpÀ'×#°V”„ùÙNA­ë˜µñîIÎÀ[ (Üç6 @œï ¨hkËï1 HÅ•®•1ZIÈ÷3û d5Žl%ÇV&âAQ×u oõuoµ`Y¾Ë¥ç¬|D“ÁÜ‚á˰0›å•dÓ$.FÇIfd¦]áY:k뱎!¥já˜ýœ�ùÚ �$ X‚\ põ<,,Ðd+ÂÂ"�…tA ‹Ò%#,, òí7 oº�ËY8u2)Øû:tóöMårùH޾yO> ä´‚ŽÞzññíf@æÂ¿Òƒã°«�_Žò–ÎS–l—ù¡Íº¢oZkèÈ K)§¾½øt_h4×Ãúöœ•º[Ÿ� Øtç –só˜ól”ãh‡¸|`Æ/ÙÓN»á/3i.*•ÝÝwé¹àŒe^<-©€Èûï÷È T_Çìn·÷n·ÂÞv•·•£-Þv⵪� ñ’b2¸ˆ2¶Žô|4-Æ Âýn&ÍwŠ“ b‹e9¢(ž|N…3aço~µ‰’ôå”I$Mèè ¦bc˜§µAéßç Kq=eœ2a�%tè… ˆNÀ%l?Ð_—´Ò¿…P4ÔÝE‹îÒ†"Ä ½î™ÁLÑ_+þÌ]9å6½kßuV�…uÏzÊ ¼óÎÜ™6vN‡ú°4¬Ž^+6ð!dzÌÉ­b/”Acç/xˆêF¬‚åG¯‡%þ«ØËaѪÊ�Ð �4¿Uزzuà­à©J¹¶_iî%6ÔuÝeUÁo�U0CÍ92Eú;|�QRÜÙiÌSwµ Ç†Pùe`î|#è~A˜'¶O²:Τ‚÷Xv8Ádá*•òþp¤4ÝÅÂâ *ø•ë[eiYô»åÁA[°;tõÅ`4ÍÅ/��Â¥š€q °96q)ØÁ/>�ˆš—­ 5(LØqWMÏØN+¼wRPÂQ|T¼‰*0߈I %6[¥—"ª¯Ð%:ÐÀز&¢¯óÅߤ*¨F‘§¸-*ï°Ô¥ë*PæVÁ«…ôDð4�”)Œ‡[„U©°M'ËvUå¤ÑR.Úÿ¼j÷/ǞéØÈðçPTÌ ¼œò$U‰F‹"4ýÝYOU†ý7)+žtÍßïÈZB%J#ô×¼s(óÅ+°— .fÍÌ¢1(7@_À9)Ì—bNáÉwaÔPÅtŠÝáôPüo½4:¾Ÿ3Ôd ýG1ÞÏíbŒggQÊ^À‘ܶÒá€ç�w‚ÆuQˆ´1üÀ«W/@trç;³ ¿ åˆR|Ç0}D 7¦wØ­•0Œ*)´ÏÖm5`Û¥¥‹±XV­.6ÇI“g d›ËX0/¦“Ë¡Ubx”e‰*íG Há �5 <Žú±pm©õ<-T Nà’\N„ü³3éNòÒHFºÂ÷öS€w¼BúªÙüÛ Ê†H°ÔÖËÀ¸öª…ePо͌à¦Zø6ÛÆ,ߨ¯¼«,Ÿ¾[>}•’¦øµÁSšÀs(>1o?ùü•e¶�g¨7¥ü¸”• uøuZq�¸ ·Š âW.[òþn?÷÷è³î™ôù–>ßÅ }2£†ðkØÐá�;üáÑîx¸zk¾³â +ª€_¹BËZþXÈÔ‹JáW.u 4üj™¶—´ƒ¨$~å’gÀçlÅñ°ØÂ‰ŠáW.Öåž'R{˸½eÔÞd­>® sS*Ä@�—€ê±÷á”F-&\”¿Bd]¿¬ïOëûÖîÑ÷ö¨°²eHÔQüœå×H„Hµ1=(ðà‚†KhbñîÞáÐu¬sYyt¡ˆ‰/´ÇwÀÁȤÆ÷öpZÇßGK©„‚ŠØ¯ í%S4y5àïÛñXËê5SÞ™"…D>*‚0¬¾V˜„8Ù‚^tŸÜ¤<£q ©œR¨h#YKÄ,¢¤­(¼;ˆüe�›ñÔÔ?õ5+ ÉòN‹L�0?qb¸lìëî®(œÅ IÊ£z=ù ôÈŠ!Œô9�% yéÙ!ÏäTÑ‚3È»:²"Cí2ËÇ–YÌaÐYNJ�³­@µq<*¹ä&Ã�„ƒ—g”Ò‡¥|=Ç€§:füE¶ii°RIÛK lÞ—D«t‰D7A˜@„ðˆ‰Êq¬BòÒe|tÉxqæÔqÈw~_Q©Ä&NÂÓš|<‰‚VñºÀydT“•f‘Ç F+Œ*º˜}j±Iñ±è¸–«ËC"¥»�ãäædBXÜJ5‚ÁùŒ7Œ¢DTb½ÄdÃá!#¾žÍÍœä8æütÈë  )b ÑN£#œ´ÃHå(²ZÎvœ•Ÿá�Z�«áx²«,Ù·»Ãš”tõIn¶K½û5bÛKxzë¼yõ¡Ý½ü‰.·t?ü€Îå}ÆåVŠYÎ.·Ñ¾ BØpòF-ªw;#úªÖAŠòàÅN}8y ß,T¯* ÙÓ»²Z‡ŸC cÙ1j'ŠÅÁî¨ÒÿþˆTwƒür0RïàOeT§§ü©ô‘ºÞÛ<ªŽ:¼.Kð!ŠVvE¥=ø³;b°A°÷_‹T¦±sjîLG늶¿©ªë£Mæé]UUïr nŠÕLébq÷€À»Û%˜‡“»ÊpŸ„@–Zê–Á�«Û{>¬dûVás«ýö·Â€Õò^ÕŸ°{ ÛÛ ÙþÈÖe@ÜO‚nw+tÛ¡ÛûYÐU¶Bw¸ºý¿ºê6@޶rðü€¨ÅÿÒ�ƒW‰xÊÎ�`*‡T˜Žp¤ùµRYK¿/t‹Xh]Ùßà{€ß�õv€;Òÿr¡·\¦”{=-o‹­u䤖wweÔÕ½P;ı2Ö¢æÛ¬ZõL–MñºoéšXîkê¸f�íéÕ«B™RËÔ�gî«gyS—ÓçÕÂ>I¨Yp<Ú©Ô¢@ r‡‰Öì%º 7ÏZYðëãMZØ^Toë–¹à/Í`véžÚŽ•¼›4üS ᯯã’ÔE¦¥PÃŽº÷T[ÿ–â†`¹t lfß�Šøµ.Èi–-mŸþJÖ*ã;RUZ ÝâñŸ#±ÀXîZju+d)|yèÐKŽðÈ^|IÀ— zuX½y™tX93à¹ùõäÊf&ý,Òg^‚øÓ^à™ÙSAtÂ/0dqókDWÐ�0ÂŒ Ã¿­T—cw>7û€dÊÇäQ%¢¯3ZÃ#¶E1ã1mÅé?[]#á’±S$UXñp*2IÒ0„w(„À�¸‘¯Ò§‹¸ÊÎ�ðÂèEK%KAÔ>Z'h S‰Q2¸Gœ�WŒpCɦêëˆx1$`$Ϙ,‘¤µñ­•ÎP{×<#åSƒ9$/ü{2ˆæçˆ1!“ý8,œèíúîîÉ@…t�Y+N–‹yMüwYnc9x‰5E ¬»š_ƒùÞç#ÍR­4dx-Ó·¿Y¹�áJNC÷êÕ‹¶DœHy0Š‚V»x ¨®îCó˜‡cÁQf\ÎÅ ×!(UúæW"ÊŒ¦Ä1fDa x—¸€ïašµÅ¤h•*åý·G‡(æ9ÔÄý ˶Ô)¤Ã^–«®~Dœ¼}(¼”Âl«ÒšA¼•‰HHZû¢(GÌ’BÕ‚r]º† $F”œUÉ4RUb UbºƒÅ(BjE žèººNBŽ9wñZ*‡]ý?wWâž6’ìÿ¢�dÍX–up{H–Ø$aâkŒ39üü)ÚX F ;Ãÿþªª»¥6N²;o_f>¬¾¯êêêîêú)OVÈüDšÏ&Ma)OΜóaòSy½f·Ññ˜Þü* þV¬ƒLæ�÷''�@Ï1Íê�üŽ8*VÌ’Åøqd}ƒ{ê2Æ™àϘO pÉ�ñÓ`ubZâsOQ7EÝp.2,„ñ¼ïÈVÒ¿ÈÑ[‘cPÄj3¬m”95?uE[d +Õò}�5¾fÌÝ+ ÎBŸÌKИ—@œ¼uá>|iVšå�yd!?hjîDèŽÐ½~¨Þñ°güúÿ™qÅÂϫѶ‘â€u1t{A€êÉétÝø‘ŒPà Ëõ^ Y T=ÌŒë$yE)AC˜²jÎ;Ñôv.tŒe»éìß3Å42ê‚JcËKË~NS§¤²A •Ÿ/d'Û§B="Ð?¦½™G‹�‰!u5Ñm°å-¨},Ë�`‚¦=É)äÚŸì�2 ìN&ø/J„@é&ÛjŽ`liù\/ÈkyƒÃ¼3p£…ºZ18Á�¥’’In6¨þä�˃ z\ |rjà†8i$Çüõ5Ž}0",—ïºuX…B;5¤æäj¤Ú‘ÑYèß�óñc8¶ëà|�M¿µ߀åå}8V ™à(�DŤ¤¸‰¯¨Pqs¸&âêÍnT�g–ð!(ú:NÕ²ÑøhÙÂ�RÝ©›� ymÑjjÛxÚ²Û@þÛ(Âkú„KÙh—²�Ö£B㺥 89¦ŒÖ‘áõ§Áع£��SFø8eÙ�H&S†$ƒf”N÷Ëáù:„2§ŸÉ�B×ÅE餗-±‹ß—sÓï<ÕÀøÐÃiâ =<=Ép©¦÷\«ÂøFy�t2ªRY%Yª/òj¶œA? æ/ WEÈ)e©]wßSúÕĘ�'ž?PÃ/ù\N“65œ ¯V¾¨”¶ÊU«ºU*Wì­žsÑß²ûõŠsQ©x^¥ m2¡Ý%“¡ËEo)ï4Ø&Ú4û2ó`i‰€¯ÀÇnƒªŒ¦!:ûŠBÏ_—›MSÇc@.1÷º¹n²/y&w�NüQ^¤¸…<ÍC(R¡‡0«ŸSs'[M'Ûòº·ð17›ºâØé! ¤$n¸º]í›%¯VbýAÝëWkÛŽ›Ä65ðÿEñi+¥­;lf^ÃsZ™í n<Î:—uŽ™ú°ò4÷7QF|(UÚ8¶?Ü@ý¢™Ó(g©U—¼†ëÄ¥å–5¬ ,ÝN¥Z²õ(ˆ¼Q#¢Ö\zWðE´3�OœZÑ&ž`žë½æ<5O o©ÛÃcþ†ØÈ[eù·rú”Á%d¡0~˜ 5ÕE.eBSf�™1³ nÛ ¢Æ˜¸¨K� –cš9…vç¬`™…Öl¨-ôÛ¼Ž°2Á‰‰a͉é|zûÞîÜ~xû¾üáê ÉSw\·ÕqZ'¯Û'®ë_l•knwÚ¸‘WÐû·'‘÷¶<é;'·ïß�\÷‡M™añ‰w5Ù¡ŸGr ÷3»ué9g˜›Wß¾¼XõËÞË™‡þ‹û²}Z,νô)c£ZçáNÞC7ó“+Ìâ¤" �¯+žNð ipƒ8¨�šiYÎâ|Áù ª°©ã9pOE†MÇ¢=pÊG˜âYö¤[äÐMÐÔìö{ ¿3çÕHØšB¬÷—²2ÃR´­™ Ï%–ØÁ#²r¹lK>¸×œ÷ñ!¨:ÅzLÓ÷C£QÂz•šð£à“·í�·þgfiãoi0`l°ƒÀõ=,ô €m:sÚtËž*øh)B{qƒ›1Ê–Ÿ‚˱‹½ðEzV=éakjî’uËFÇxë‹^[Áz·yFÑðl‰(['çr§<' òâTÊ“z=å#‡‘p¸Ò`y ãWƒØ"ZÊ;e+U•8�ƒ‡¤*R%ˆ#ÆS,�ñ0þtkÄcq_užä””óP±Wá�þp 1Sº2K¥¦ú!ñ–MOwê`ù ÄæÂ–{LiMNòlö™~K¢ðª/û.·|E–«£©½³\X¶ÿ€]f“ÝÉ„ÎwR/×Ô®T° ð‚=15žž!;pRÇwÜ" Þ qÉ„¤Xp&ð‘3œ�[Þ–‰§xÛ¼†Æð›?ù¨ózó AÙ®ÙUÛrj:꬜ƒÅ¢Kèx¸î!$€¾ÇqÖo6Šq[TQ¹›€Õ%-•\²+¾èlËk7ÛªñRcjVµb;?Ú’ûFx“Õ}³»ÛîvÁá�Ãîik¿sø2ö¢ÕÙoï¹§G®ˆ•�rxt*Û{ß•ÃÑëÄ�®×M~úy„ÂqÙúпÐ=H6xxëQqœZ%¾õ8lžÍùËw’Ô£"s¥Ô›\7Æ'ÇÆœos!Ÿ}1z_ yÚ †å²cY 4Yº`‡ª—ºD!…Z刧&ì"*u³2ðú¬dXm`—­�U©z½c}--FÒqQ…ÿue+ÂØG‰»Ð¸ùÈ…†ÓDýyPI: R«õjµAÉê÷¬RéÂéÕ«Õr½Ìj¥”Jf^”2PúáÀY¼îè™±p²ïk»ýß?ø?Ôþò��½™i¿y_û3õ‡e¶;+…¯¥†Ù¥š³Ô0òZnXéÇfÙ™–Å^IìÚßÒ´jÒ4V/W½²S®™e«T¯°Ëp%ú¢+è`«ÙðÀ‘$>©«ø>‚…Å[ÍS®®aÇ–¯^4ÏN Ï8èºvÚouñM¦S�ùtNÚ]÷à½0ïŸ�¶w·BF=:t÷Ú­Ã=²Áœïë¾íœ¾B[õ'­Ó¶»ß9èœÊˆÇ­ÓÝWî«V×í¾yÞÝ=éL¤¯[(_ã>ÿ£Ðb�—7-�Ÿž‰TüfÄŸ9×mÃªÔ Ë²žÌ¦“ Ö�ñ‘jÀäøýTÜ`Àãn ®Ò¸vÒñ«cE$)}¤ô‚rçV€ÿñf¢uéG£ÛB„Ž)ëñÿ�M�$yYùi_Û?:| $z‰XM'éòV,MÏu,âW¶O`4 ¤D!õ ¾™TíªYtòÍ8à ÂrôÃß·ŽãÝßx+téÍ¿Ç5¹ôÃËÈæN´F^¹NµÚKAWh~•�FŸ�ñó¨g_&èÇx{€h†E}?F!¬ì÷æü¸}rÐéva¶wsa— �^®�L:EÛy)™ü&éËDoE@ËàÃÑe„¡^öà þ}¡¿jÎOÚ­ýÓÎAÛ•íxqôæp¯1'«Ñ�9‡‚’ª+9S×Ä¢-Ú¹žd¯OØÔ� „KÔñic®„Æz"Úö—)Et FñM·}"ðHN['§m¨É9@ÂÝ70èß•4)óEç°Ó}õ}…þHÚŸØ÷kõxªÑCá<ÇÌjÿ{‰MÒVN5 šsDUã§aBm©ÔÏù"�:u À郲I0ASŠ ÇÆó}s±Œx#]"J¢r.UÙÊ œ$^I¦+K«`Ë9\ñnÎg®FI±Jy\QÁ:îžØy®@iDÀé,4ã’o‚Çùç°Øã>öœc„üV²ÐPÇ(,1�^Ç}øŒK!@,{жzaf…Q0[«¥„-öƒ×�4¼a¦� *Á€zã:¥°‡¬d�ÅÑ} »5–⺲§ã5̼{}Ë…M-€1Ncâ»”Ç8…Ĉ¼c~+”†\¼jò]_kË13XŠ´„Ÿ8_â‘Ü| ii-2x‰YœḎ“~^ „AK臘XÁ $Œ@ì‰ ˜�ˆØõâó¥„þ[ù�F9¯¨ ¤0»­Y°2ذ&¨H‰gÚ ½g‰¿ÀI<Ó†0L8J"VPB#b©1Æ`¶àË1P…í;;Ocò�[ÜN5X…ÊK§®¤SW–R£{¡¢Ó©ý’�¢Ó´”0¸ ® ÒæË‰Ÿšx1÷æ!dÞ“â|‡ÞV",¯ŽC…v€½¬òQcKäÆ<§ðÌïŸÊ¥šÐ¾ÿ@;­ºåÈíÕëæ×FJG—á3šÖ ¡KF³Þ¤NúAðÙgnÁˆY—š>òzˆyòQ³ /`£ä‰ÓŒP(?ÍéÔ#¿0+]Xt¬.Ì1¯âÒd |ýø`œþ.ÝêWÈHhvIHÍmXÔ1«ñÀ§ùúÁ˜M ˜¿þ×ÒVБ÷]+zCW×°”tF, 3IõÅ::€;ø˜Ê¬Ä:$Þ7\¢Ä]l÷–‡*Ÿ\ÌÒ,󳦈p4ZBÔÐ�vð”Hœ§Æ´_‘;ß=d¢À£ à�,.-UTR1 ^0AÓ ÿ¶kÀØd™ •¬„l¯ŠR+fª\Ç “¢sÛ·bµ_�ü�óµMŽ\½â8âÜ(+ùCÚÄŽQ%8ê׌#ãÞÀÑ�™�ãÏ½çøŽ_˜¾kžýÁ1éÇÔ­¢þÇFê˜X8q€8-þvì/ÏžE€™`©Id_Œã×q45in„jU/•–«³2‹¼ðZM¯Ô2õ[™ÅŠ–uwŒz}U²Y6–r.æ"c‰U<©UÕ8øC,R©ú˜¸ã¡E3@ü3ös=Å{ï9¿;Á³I#Á”HÝ2!>§7æ^¤M=µž%GÍʵTÎ Œ¢ŠÅó"�ï"éM³1«ÊòNgLœ³2¶ñî̲Î��â­r­"4ðµúFŬ—MÉ»ÆÂLÿšÎ¾µÝ?Û[¶i—¶P߬Œ/d®g#„õëùh~Y莾ëv³A©—»Ó ·B?bá;RñaàE0½ aÏQàD�XQXð"„«ƒ¢þf·_Œ‰üBj°(ê[GÏ[NëD³ÄëÔ¿· kãõ—¬Ë?eå67ÿ©mnŒ›QUeÆŠŠ0êå�´Ë´Í±[Vnߺ=Ó5¹¤jrš�gW‚ÝÁvº¸@S¦îTG7Eëßa\Â[i´:1.±*Δ�;ìGxÿfûÄÛB¤?2 ÃÍÛ î»Ø¾ ²9r¤,ó „�BPp¿¯—ÓC9 0ÆciÜ߃*(«g´ñd¥M ×ÓÅ$ÉV<ãrp¯÷à§8çæ'0ªdØ4¥±(Åà¢H’s1^ð  y@ð Øœ°™è•Æ–£ ²K4N,¿ÇM3.ysHýƒ�½s_n÷ìÞXLçW–›œm‚^š¯ ihcN�QwVùIJ£N„ #¼½¤b‚ÎcræÝÊšd­±•üÊÌ`f¼'OúK#iäÚ)ÒYbW-g¾0„9 ÖåM‡&=¢Ùªá•h¼bŒG>åÕ�1Ñã%fà�›j0a(y}=“‹š±Å¢gnáÏŽ@ UèÐ`@|ˆ§Ä³Сª®¯Ä v’ ·­ºFà}QuцØ-ÒëXà^Üßi”«dJg˹YzË2�6Z@®¬gˆ@ÚøQg®3\$­¯4±E4ˆë¾ÑÿPŒ�O7|˜£š�IìÌ�š �ˆ©äI”9Ò ð“0hMé>l—uSâM„�¶n¹�Ê©åö¡\¯¨²†\L ªK¹.}¨Ôeª�Šú\t"¥D#ˆP½›)¾ PñæS†‹c2ÍÚ 'VI§ã„@ɤ�4nÃ�ÚÀH°gÏ„¨´hЧ|„@P…„8ò7`ˆ/�êÑrÀ¹¾üü_âž…;mœÙ¿B|³]\ Á<ƒ\ í&ݼ6¤Í¶,7ÇÜÌÚ¦ -ü÷;3’l™�ïì=ç;çî#H£Ñk4�ž±¤­-É�xßÇKøƒ60¥i$A²�ÕF³’*�Ë&H¿‡»ûaþGWK!å„Gº××Ë=-â¥çÿǵtcUë°!f|Û žªÒÝ@Æsm£ÑôibŠR©-Ž&žõùƒü “–ö%ˆúÀÑì\ÖÓ5tö>/8ÆËk¥(—7@ÝžƒÈc²e˜¹Ÿ:'TÜ{nNëž@ Žï®x¨¡Ô‡‰éÙ¶‘Ë$˜x<'óC^T©“r6F¦j­éQØxI‹®P8.yº÷>r>g¹æÏBŸ£—{g0K-AŸáP("8h]ªÕÛª‚­'#þ¢ Ó@Þ2ùkyTV--k§�SNÛU`mèxX üI™RØþ㤶bø¿^µk•ÿÛãXÑ~ªdqožøv$[‰*CÊ9÷qàŠÌ�ƒáürΣ‘‹î—Éù§ëÓn0ƒ%äÔ¶ÛÅ9ªd–çâ56hs Hùt}æ�¼GHnn¾EÁüväaÄcg?�ÄçÁVB\ãàí¥#ãÁ°¼=H\�b£RîPM”¿æ†Ò An,òºËt2í ž™%¯Pm^…E¹Ák@Íjƒ×Aê3Ï÷½ˆã}‹AÝ–A“æË˜°@xoÀ*mÐ}ÑÈ1ðnÞ°"@Â;{Ã;~£u‹Žc¬8lG­âc 3Ç�f@s=,…³›Ÿµ�9(çA˜Üª´“(: 17ñ_ÑðmšÌڻãl ÎÔ9øk�üÏ_ÃaÁ®¿§1çâ§GYÖc;±©øq×�õL#ñóUüôûýƒ‰õ ,å ûI$=N1úË9>Y8èçÔü½åã¹ÝL—!Ä…Û]ý®"%•}Ù;˜DDH(ì£;B.¿)pé]gz>„Ww�›á�¿ºë,'Ë(¾ëó¬ô÷<¼»„5/‚ïÐã# dj Â1¾¯a;–2ÇÒÀ�ö d#4õ~±Ëj¯f Œ/À²�Ÿ+eR@Ì¡jü[šch—N^¸hóQž”'vÀ÷‚õZYIþ—·ñ:ª mŽì¢J’cnø ElbýØÑƒ"/-ãÑåÃÌɰ*–Q† @ êÉèÆš%Uçx>ui†Üž7�ç2 åTôKP8¥áF»ò6?/áÉ›ÅXÌÀˆ(CؼOçP¹÷ ¬ˆÌ<½ã2*ÎÙÄBÞmmf›€%»TÈÌHõŠ! !l®×°îYn†‚J:.·‰N#îùd-¸Ì4ºÁ¦ÔZìÈ÷óœEÖŠu¬'6²ÆÌ·zlaMY´r­ˆyhÆ�õoxEñùî½é,xâaÄg½,|wÄóÌeR–»š,µ|ƒ–¡hR>£^ðÚv†�ÀeÓå/¹õÍ›½ƒ¯û^âµG n�Jtþ¼4…Þ-&€€Y´AF€Xʃ&Lm‘ä]TLq¼êNX£�ÔOyŸnº� Ô;Ï @½[¯mø­ ±¸€ôgümЯkš,Éü�ó¤6ÇÓ~o’�Eó¸ë›PÈyq¦&Kî¯:fø£ò…¤¶äŽsG?�ЖÀžR• v«`«t"@' _E p& $ý+GÜ' MÃŽz¢ÉE¢SûË}²¼Ü‹v©ËÑgÔÈ^&ïåe¿µ‹m`Ù TÔÇ»¡ì\bá1]ÕÅn—>λf4�ÑLöüØ‘ÎTÇÅuÐü«sß<Þ*IdzÇaÏ¶Ý ½jUÇñ#-X@‹— ‰"L"n’ŸY:e”.žaÍ9—sïy µ%‘²Ð5Ôi€šM%äµ³ /ZÞöf\Œ–ìãNÒÒ‰kàì퉪hÜÝÒ9y¶#‡‰ h�ÚÉ<ƒØ :εi”€€‰ËжÇÕKÒñN´õz&7¥¸ ûÿÏÏ‹½ÞÍÉ ›ÍX}Å#¡né±*n<¥Ò‚[O¡{X~"¬Gμ¤ÎD¬È‘ûÙdyè�=>³:Ù³_:ùU» <ï¥sÜc¸Gõ *— Ræ¬Å.~í–¢¼û‹]��¨X\îЗÎx½Þ}Á�íJÛ蜃<º:7RÕ4ÈîÏX�ìh‚dK:µ´2“'¢èÂHo˜\’¸X’€²†½ÊÍð¢Z‹RˆÓ$ˆØ)IJjÔ!�qž$û[‚Î3Y.)TršÞQg Q„±å[. OGŒ,_&ô(´¦'a½ífö2•Žwt÷V¥�3íQ ’ÛB,k¤Ö4ÀÜ�*/‘«)rŠ=`êP¤œl7Æ•YNN2½p3]˜&i‹¼­`:PµÒ5Ò¥×µBÜBŠ„Îv‚*f¶Ý P%Ì2 3 ŠvÐ4RiÑöxD™¼ý~aC¯a|MÒ½Œ“&:þñî‡Cç1B/Vçl;\»þ¶¨ ò-áøÖ"uDw`ש´±÷ð ¯1°¸ˆùº”š!¨…¸ª,L¶�x°~ïä'úaŸX´5€ù6¶„WœX»Tønizb&� réQ'ÔAªžlÍ·+±ä(ð Æõ�ÞÂM\úñRb ÛèØ±Më…§:.ü­+‡Íê.èÒ�+²ÉCγÞy0^úü]ÑæfË(Î݃Ä&Ûë9X¦977æE>[Ä«œhOî×—yò† œæ[o½ÆK$X4£ ÷‚Žjö<<ãøµÙÚ1²¯õcD~’•“Üs¿¾Ì‹ý Û rþ‡â;ï:OÞ|<•„;Ío[¶š§·ع|0Žü7rÑr4Íͨ_¹_ñFÑøUñ™¨÷c?ò‰C°*åzÞ8· –¹™E îû‚i�Ȳ�Ê¢Ú œó9¨\±¼ðœm‡•Ye]^kʑԟŸ$.–¹ùæMæ L^:ÚÍÚ«.+u¡’nœïú«Ù}à¿y¤ÃÀv>ä ñ±`{×f]¶v³ó*Ê|½:|µŸ¼ †%ð=NW–¶jK*´°_›Ý/¸c˸»ã’o“7Ü{å ¾‘J‹|ñ$ÇèOžŸçkµÆ¡‰ûLŠ5[�jÃD_v­ÖÐå ì8)zØ8l!òHD�f£‘,©^®VÈ™�ˆV›눘]©¶ º�×Ñ:8žL‰‚9zÁ[ªbëTìTD[­¦m›è¼G[®`±«£ÍpSÑür£�%­dV4zÑg­6Ê6"¿—•Ú5ìܾóE›Õ¦~Ѧ])#%eEµfëíŠÔF­ZÁÔ'E'Ѫ;ÙÆV™úþN‘­Y­BôTF+µ¶ª'»[oQE}YTµJ4¾”mn¶°CË5ª˜óBõ¶VGÔsYk³ÜÂjnT´ŽÝù †¹Fƒs-Ú_;lQêUi«‰Ãñ›j¡]ÅZ¯d=víðZg¹Üh"Ý>*2V+ý"›X=lâp�HºÕ©sŸdì°~ˆ­ø&ZQoÖ)ë­¢“MãóU"aoOúNÃõY’­\%ÆýCö�xäOÕõZÛϹ,¸^«ar¬â�2õ`Î~«Œñ@¥7‰W‰®ma’Èx½U« ¥C¯ÙľŒWèód˜'2^%ëÆ0QTÜ&ÃÆÖXÆíz³‚íë¨úì1ÌBÅ�7±¯3…_¶+H¨%WŒ ømªÚS®ß?pAçªmS'2½u(Æ÷^õ·%Ú³JòÛ$žé{Å&ޝõ^õ­Z>¤Y£pa«ôÊV¶­Qµ±­� :‡mé&é‡-lûSÒ×Õu§ð[5ÊÿN•_©-OÓü4V=Õ÷V�ê﫱l4XÞ¥*¯V£úþV}o4ÅRcãçIz…h{£ÊfÀò>HZBw±úkE:Á”?Tk›‡‡XÚoéÈÓH\¥­%¹q¦ðB}Tø0ßÿ‹êm³�Œw’0^µ‰÷)!Ñâ›*½Úª!ínU〘ýkÒޤú=éj½Žl÷YUvXGRkßeóDaܱ¦ÝÂn¿¼š;nú$_ø¤1õÐç�]Wп9®ŠéÊ•<€:¾*w~Þ‘é’àîN~¬.·à|£]ÙsÝÍy@úCÚèT½Uåû˜Õuâ¶ÇÄS"·4u#í†K~˜AëvKâßO_­Žräÿ8±d«÷èÍ›Ÿ,âòi®Ödñ¥·FЖ|>t ¾�k7$K8T©åïÉOz频‰¥�wèõ:Ä6™m7ï[#+4™�ïj9üIöþÆ—ÉhþɳjŠNõ6g?SªÒó ;?ÕÓyî–ìz©Ò@ º¸µgžR)ðÁܘ¹”>jñw·6óÿ{éú%ü$—>éŒ�0T±qñ¢÷hv„u4l‘ØB‹Ÿwº�ñ˜,éÎ4ðé[f¢×î|ÂÙTƒ}ø£wÁ4€jöJÏø®sÁ¾éH§]v«Å;÷îu°Ä®Ù{ì/¦.Û߆œÑn;‚±ïŽT}xç�Ø÷í2Aeü®e¼�yµëºhÒ烞/…«lôlïé³ñåLÉÅI† ä»k´b÷ºÆ#…½Êvæôð{æ¥$‚ó#äÞdw…ç! 'a¼„«2Z6{¿U0¨å6ÛßÚõV¥Æuèõ‡nvIìûjÕn4l’‘Ö}5­Êžv¥)Ùy·•X޽Ë�D]µÂN·aõCÖÛ†5j¬¯Ã`ít?]Ÿ²Ę̈»“9�üwìùq€à‹ Ø›ñ4ržáqO°äܤ@OðØu  ð#Pü·4.¾Ø`W)D}ÅÁÎR¶,`)`SXâv—}I�÷hñŠ€'zSo5½ŸÒ„9Þ·ûÞ.–øoZ3åÉ= u9a·zi�ý¾’æúØïzÚ�û Œ8ÝÎ&:z»×))>ÿ»òó«ž÷s$¥¸ÿ_öž…½icÙ¿’è@�ˆäH¶,GN\×()…¶<ÚSdÃYKrâbË9’Ó›4öýíwfö!ÉVRôœ YKû˜Ý�Ý��íΰD.·ßåj[îåÊ–x^¸c3ϱ,ãTF•¶4�]àÂÛÒlJI¹uµÏˆÿ&Úµ-¼çÑl.60jƒ|Bgé,OB9™¼C‹ aá½À—ÈW©j’,sbÎTÒ…'Öë—Z{çmÐ³Þ ¶ïìŒM�ýiõÞˆ¸_þùÛ›þYØêŸÚÎîC'ưaSèôÏ"Ÿš1<…ÀðÈzð€$ÉÑ;œ[‰Ô0³Jð½Æ9vH!@ }ª…ÁS„On 7¨Ž] =ªÙs!–ÑÖL9[‘¨!bÖÁÓB 䨅ߦL�­ƒG…t—zí‡?ÙÊxb}÷Böˆ$ö¡Æ25³½,õÛ�->‹j/¶.ÇȈY‡ šWoQˆÝñZ1=3 ‡"*¼]�ž# yD¿GˆÑžÂ:†>Ái4(t)lRHTWƒçñ)¤º\‚àFñŒà»Á%.Ap©¬KpBÕ¡±õø°€€¦D£LO­Ç/ é6üÕùPÀdâÈÂ!ÁaÂßþp ]hÈAŽhHƒ‚C»+àŽçÖ᫸V(` ò ‚(ó;³¾ÿI ¿óÑ¿�!ã/#èèhäyþø€7¶qÖú#fSzHáC»N¡#€'Cëù�W̵db=ÿ¡b¦ˆNScåÜc²Lr5ÌãSëÉëKf_C­H[ÎAB -ÊžL¬Ÿòöàš#”ÛTơ֤uEÄqrõµ†J¤žÌ­ŸŠÑí�íZr$úÜí”뮸RÒSëÅëuÚ�¡Âùû÷ÖÓ7—åÁðûá>°){æöp¢»>…½GôÜÃðÏÙ�³‰õò°„�°€;§?ŠÖdï­—O¯¤fkt¬DÁí"zJ´¯I#҈ĒreM©õâå·°Ž“ËZÈ¡pøŽ],w ¶6áÀö)d)”´0ûÃzùèŠÅ>?¶^=‘5Ä6ÑÊæ_&ÓSëU‘´>p9}o½î­µœÚIDÒ%Â(ûâÒO‹—†¾)øÇØúåù Õ€�rb\ÞÖŮӛG¡KaHá.…´,lÊ3äåbz¦üCÂ)’OqTzÈ( i9ÀSH†!$¼vZ8!Ÿ4ðÆóÒ²„ý‚ÓµÅQˈÞ59Ýt∠D9¢ZE<¡–÷5¢rÁ�y~jCl šËS¨\Lå<ªwˆá©{Dðb‚ŒQ�Ogx¢ò#ê×HÒî÷3ë©Ü0æHz7¦pD/t�…Dz£k îã¸÷§ÖáÏùÞé]¹ƒ^½wÒžç7¯Ü;×öHæ^µS›ÕûeHÏCª=jò½“BŠqY¾7× ŽØû©–:å¯S«\Þ6¾—óxÞBÞr±ÈYªðãà4 ð›ÕØãÐÖù�á<>†çàýªà6Z9]?Ç•Kms©m.µÍ嘤¶5©mM‚ß$ø|Ã3�c�˜fDä£Ó&kŽÆß+àªUÀ^oÞ%3íoÏ«ñ‘ Ã{|Š Ùcצ�Ü5ïÖ)lPؤУ°Eá.…>…ŒÂ!…!…Ø Ÿh­ïߥ�àøÇ'8Ôoß'8>Áñ ŽOpüˆÂ˜B‚É&£2j!#ø´}FðÁgŸ|¢Ð>#ÈŒ 3‚Ì2áÌä!Á„!A„!µpHe‡T–V°?¤²!•¥-Þ BH­ ©U´­ùD«ý�Ú@+Þ§íß§uïG”‡X2Ÿ6~?"È1AŽ rL�c‚<¢øÅ�(~Äã©ÆáaD½äÕ>¢^Œ£!�¿Ïhû{ð°�›Øî�õ>8áü©»‡ßãoÃ}jýôâ%>6ÃW¯ñ× ‘ráñØ:|. ±OTÚö=`Êè½U§÷Öc¤ÚÈ4Œ­žÊÜ»”ûàñcjŒ6gPx➈üB\H}È+zØ’©ï“b*/ûP•�N ©¼ì�*{tZHíñ²=Uö¤Øª/ÛSegi±Í<õ�H]Òmõ’ø]”­m˯¯)ú#%l€Ñ¿RÈæuß²œ­*¹\ÔVY®–¶y”À-Å�\à.ôç/dn%¢ª"—K©*˧TK ?\V%DŒF4°ðãß‚ìšË‘•Hý+Q2}/þ\ú]«áÃàK!çr¬Èò)DYUÛ§—fW×i¿Z ­ÎÖÿ42mS.Ö^A?nK²­nç_·•˜»®|{)¥¨qý W�¸¾”»Ò…º¹ˆE°n,e–=�øN�øN�xV�8N�8N�8N�xM’=Ïç=ø*¤U i5DiOøª‰øÌšˆ\ZþØyþUØ^¶9nªåm‰·ÿr‘CÚ<Ú<Ú<Ú<Ú<Ú<Ú<Ú<Ú¼‘ýU\ÿÏ׉Lù1•Š rL-Œ©§1Õ´˜ ÅTKL0?µ¨�[̧—öBÚ'y£RÚçKür�Ÿ§ç2mMèç9r¹_æÈ‘CÉþ2G.ü‹V(ù_æÈJsUŒö�e#êÍiG†å8ñÞ èÍ)VO Ÿ*†â¨|2$@Äæá—°�¿¿AÕÃÕ³"�ÐIE�ÔÕH…ŒÔ¸˜Xç©x¦I- éEö4©‘«FÒ©80µqdbÿ¹²Cʱr¥J¡B®K©1�j)çË%מî¥d.ÅhIe¤H+¥¿²)Å9Is$e‘2š¸$;>0ÏaàÎ÷�äÀ�ÃÀ±à(8TÊä>ÛÊÜg”{œAn€¹+Žc�G .>;Îc!ôðÁ ž—w–òÊØqËòX–Çb1ÀÕD@ ´q"vœÇ²<–屨Hfá�Y9bK“®6\v¯ï#n¼UÝ€&“ó"ƒA>”¹¼¸ð">ztv¢kAn�ÛÔÛš3MÜrœ™ãŽ>#/ ÞúØÚš�ÔÏò#õ³åõO‚Ñuº[Fˆ°¢J~,ŠøÐtÀò¸ÄœFm|”ÌÒMµäf*ËfD¹íÌ2~ç+¶Få�âo4Éôcò¨q¶§€Vƒ¹´ ŽNª«±€¡Iéf“_§Û�øÒص]¯x¿%½Ö…ØSs ›Çr#ÚÎ ™®P~±Y�†.?ÇT¦[O·ÚËXÙ;[;G¦¶Å¦'{ZÁÞ­F±ÿ>�ÍKÑ÷(úgõV)zŸ¢'å¼ßPäQ9²¿#!<.Ç÷E|óa)þ_<Ú÷ö>y¡Û¯·<&œ´”d“q+§ê¢Õ¦£ö¸y�—Ø{Iî �}n¾ÝIî6:»Û¸�ÖªÚôæt[üÍ¡e§í®cCÖ �[ Þy«w7u'hXþÀXèu‚†|s‘õƇ¦|ð0½%Ów‡?ø�^ç”dPþ ygçúCE×Mo�Hðk|znh¸Ã€æv‰Ã;aé8›%txí+p ”E'œäg¦0Ò Þ!_|i|SOa$¶¶Òofks�®£_9NŠ|³ùfÿE—ü±_Ëë/h¼¿~Ë š/Re\Z™ÅÞÚÊrÈÄÀt‹/mÁÒ _P¯P/¨ÐÜõÚŒæåЋ’`Oð^gj`P´ÇÌy:cÖÉíÊ¥ÈÉí‘ï‚UfuS4–7�#f6xÙñìt¡ñYšÄ`ÂJØÆ,µôb}Õ¬ešo�ôKݸ¿Ý­™ýþÛ;‹ôûÙw†~ÿÎòžƒ"*ŒNo0~ ¿¹J¯èÅ‚HíÌØ[ëŠô Á¯-lÜ+²º÷4ƒœÆˆ+ E£×!¨h4_§û P¿Vô�(Û Z[ø:yÿO^q~ee‹Øÿ˜©,{œ=šõø2<¯â°>‚ úg¨^<ã�nÀ^¢-�[î~åzB£þÜ>–kzÈ¢ÐõdáþM°ÚCtÖ–žãuÉŒ.ýÏÑVÀ?Ÿj›¹áàJÅLLoŽM>mÈà…°ÝÅ�‚3ëÏÁ…·�ÄÖ—zñµ±D§:7¸>†Ö1n�U¬TÌWؽ9Z,¨…é,|ü}¤ì.Htâ`H6ÿî.°ìègcE4�^b6)â³’ˆÏª¤zv-©^ŽIÝj ¶;x&aÂcž|ÿôÙóŸ¬W¿XopHðsBعPýA¸7’„›·ËÊWK]kB×foD$K æíû©õ' ?÷o2mÉhËç‘pL¶W5}×gïÅi:yÉF¤é9aQ„6uîÊ®Cþè û>ºZ¨‰èÑYCù)ΑM®Šœ’bÚ»›;'8øùFÀèªÜݰ�µó·´=‘U6U,ºH‘a!AÃV·€Û[7œbmïÀâ!ÿaù*$ÑÚ)F¾³ ù³µ¤IÉh„é¿RJÞÿ*%2)™LÂý��´š<Ó9Sj÷òŒ Í-|É�¯Ê61¯¢®]oÕ?†\PqW4ñ; ŒkŒ_òH(ðëhhùzT wë91í=GhÉL7Xñh¦ì ³ØhŠéã¹m}:‹ùÐYÀï >œ ­ãß­äˆb�XBßlî"¹DÊ«;‹ú¢±˜U[ðE½i6n¦j$ËxŸi#ž­ Äæ*YÅm¿õ�ƒ)r‡uf´õ¤´| ¡(hKN[¹¸â{ÒÎÝZmQÛ‘Ÿ‘¬œÅÿ7ðÜ�ì Fu¿³Nu?`D¿’ÝÊyEÿÎd—«gJDWQ¯ Ö)ˆsqQá±1ØFí7KL`‰ �abq+wi°’$´,ÿ²”ª€³©WAZ×è(EGbjÜÄï|ƒmpeHH¶�6B–F²ý5Íà"ð¤–ͦ±^5wdÖ…¦UÓÀ+8Knîò#ö6�ÏÚ;o�Ûð/'NI_„6„²pr:ÄT½Û¶!µ9XÞ.Ï'¾³8Ï�…³?b1"6gmü~‘;ie€¡Jkò2Âj±<�VÈÉ:ö^¶ŸÈÃ8_éz†[œ’¢ mH¦ º‘\ÑF@BFÆÄŠZøyìyñ<6çR¹;d<‰½úUfócøøýe»¿p…cßêo÷kïø)ûT¤÷QA©2ð´‰Hƒ¨Íþ�­{}½oôï÷·Í½À¨½ûßö·ý�~÷n?£Û 7Ph 7ƒ[ç‘€1Yó@Ý-ÏÖ îü° m Aà^û®SéÆ:&'çsá8ÑÜÑßêçÀºžßkµþŽ5ЧŽ™¿Eü펱€¼•Iâ­¶/Ì]NŸ^‘{çHøÕ>7 îû¦ÆQ 8‹s]<~ûM—>oÊë‘Q<OQ2Ïj0 Q…e9EH�'>C?®ÈŸ¡-żj˜œWÀ›—àÅ Ðe+#ªl,[ÍäÞNÙ™ú¼fª.¡¤½ñþlo ‹,áÌ}ã�9‡ çñ“¥. Õ„ IòîTö�‘Ë�‹eÙϤR•k§ Ÿ²Q~:Aé‚]:¢ ´o¿•ïÚ€äU~J¹—¦ì½Wã/©Þô¤ƒGxÑ73Ù‘_w(#û}�yÜIä™ ˜ÑE™Hz�¼ÈÚc3iR¤™o:V÷"B»½°ÄÚâÉ1ùª‹ƒÙöö`¹4ã’Z†ËíñÒµÇËe.Å£ו# l>G/HóÙGALž‘èy8É�lÔúÉ!4*�СԌsˆ,&`ˆ¢ ®L˸«¢cöG¼Á6Ö0®Ó6ò¨¦KnrÒ�Í9ì(b X)`$ÒÏíÚË2®¸d™w†û’üà ˜C<™ñ*bB¬‡u30è ˜xnÖ?©q0ð.žtc Ó @¾“B¡aKø§gùTÂõЫeІM˜"½Z‚‡Î± {‹.²vÜ1�YG'4'(ê�Â�Ã'Üt±Ø<],¦9m8]# QpZ �YÚ›ë¶1èL—Â7t¬WCSûª™½ÚHç¸=îDµs¬á˜{xÎ~Ï�uÍÒ ¤Ö;̨&/wŠ ¼T&s’LÇ&"Ì]^� Å�;£}]zà3Ð[€tá¬wÛîju[qÇÉhkŽ_ŠXò;@QmºçPC$` u´bé©ÁÔrErÀy¡(/4,ŠÈóŠp˜ËÈÇ&âA¾•Þ†¦öʶÛô¿fÛö@víõ«‡ü#T¹ �©éçÜo�Ô ìh_Tó•ÌbOU Oõ­NÎð’CªË>™ ‰áƒõÂW|+ßíWIœ‘«\�ÞUÑW¾Lâ.þ¶?±å¸¥ã^ôL.8üvË5C² ü–1ü ®ˆ�AëÞDý9?"‘«'²…¢'{HV¸£m\¤°>CÄ!ã@±LÑÑÅ„oN3¾Laó,ìÓ‚��¯¸ Û6R"לt­ ®è‘ èC£“ÓS´2ÅV¦áE “ ´[¹ÖXÒ,©ø-R¯¤ïQÌ•ð§ég¦ñzÁ%HªÎóðù·ÎÓ©c;”SH&˵…"D‹]ÓR. µÕÇœdå»úí”bjèYÎ0µgì„ €Pñ2æe»|UŒÒÙ*jk=©·Iúz¼84€6vÛ» Ç[4ê¨}8aÓ“828„;;B 1º¼7mþ]`™ãƒÇ_—2èXðÅB�JO½åv­;øiŠ/X@P²?§; 3¼æZ¼—0[r!L²ÖäzzçÙ³�ƒ˜%Ø´ ißÀÌé× …\têõ™Î‚•Õ­Ê< &h¢¶Yêÿä¾U¾m–¯ílðo,€ÿu-nIXÛƒ®Nºïm£[T7ªêéa`j\I^T2Jµ×,˜Ú²¤‚„q W�\¹¤®ž,é®›8Þv�sª¢Q⸪`Q'%]Ô¤ð•…ñ7þÅË£©Åy| %Ÿ”aYSÂð¦fòVÊ£ÐKï!Ó\5µmØ<®?AÑ‘Üçû$°r^qeÒÞUìÕ™«N~‡¨â —p“x­àõ¯¢3¸/£«âNSty H{ÎÕËy¾µ5ïÐy¸È c[‰R@Av©²‚u4e'zÕÀlÈJŒûÕΊÿ�¼káJcYÖ%²“lˆ¨€o ñða�0h¢b¼Œ@Dð �Äïo¿ý}53<ÜÙ&Þ}Ϻ®åÔÐ]]UÝ]]ý®ÁY5RQÀ:¾ŠðX4µ_ÃÑÍo2ÏU³ce9𣆹˜™¹ªJ4„�p°ÿ6Rƒ´PÀ™Þ?yEiOµÁð—‡üµæ�½‡16 7l=žt�ßËüò6ÜÆ[�ا;*U§ÆýúkÕ?:[/®Pgdj®ó^þ¸ì�Kð Ö³'Y¦k3} ?5ùþOoÇï^Äðù¹t{¦ô‡~x¸µ,\™ï\=È'Ÿ}5àƒ?�—aYuUÓYTõÌ»6.j뾃·ï.í‘ÂÐ^0rŸå$â ‘¨ÚúþtΓ`à넪Îg>·“®ªD�*½[ÿ/¸0µ¨�§x"·Ü㸺5¾]93,gTò®å]³ªOW›ÿåÃWQëëwý;?>ˆzï]Ë‘•h|1újòÕ‡hH•¸Ç>| ΢z‹ÑŽ�|ÆEhe ¥ îÌ¢uZ‰,{‰ÿr–Ë›ý[£Ó»Ü©êºÓ¸b§j ò•œ¾>ƒÃ˜~S£ÈV¿ßꚞЀèÈ˘?KÏÞM·ËkÕ¸Éb€wlòÒµ-»nkè�ÛN/ºTUÝ =,Xáþ{éVCðàM,tpóö‹³à}c/xߊÖ}¹¸q-x³Öý+²ª8W÷ã±Wº´’EI±£¬kÍu/Q‘m˜ÑæPÐò :z8ì6£S­T¿‚sDHeïÖ`2j *'˜çÂö7 í¨ÎÝ•Ôíœp]—pv¢{ÏÊ…ý¾wŠKߌ&%•Ê‹ÍsŽ¢ˆ`ªš\w r†QÒU¼«´>Ñv³y……ŸÁë×\œM¯LÃR†n‰ïˆù„.oÞšPÖDÉ”Vš÷úµóžžl´\:“1¨­“—i4̼]ÈÃë½+ŽÖ®Ô¨fxx-Š•DGÎÛD5¿Æ–¥jGï‚Wà4UÜ„RÜÄÛ+Gq¶â~ªW‰GvjbÏ0 ¿vwmï ×Gy-A”*wùÃù"tƒ¿æ®þÖh·û1ßgM7<ÝJ«Yd²·ÈÜ›šh:êç\ÝGÕ�y¾)Š^‹½¸ z-£ Á»c\|²/g…3¸ ¥^ö3µÆG5ëy»Ñ Þ9;XÍ•?j/_½þ[TµµÚF¬vXûtõ_?jã‡ÿ– ­Û *�è�H¼6PÔÊhhOý×ÕCý›`w­Ø©ÿHXýoª€m»ÝÄ-1ór¬&\NÊ}WJÆ_+Å Ç®öÏHW…BqxMíf2µQFÜ€eRIüHeø#“¶d_ÿ‚ÔdúkF‘¹Ÿ%c—A+¦Œð.Éà«ÖÿÔt ¶Ò¿àŽ—5q #šÊúCÓÙ²¶Õ{²lòŒ×Q~̉ñ´e~û?÷â¦?ô�g �µëË[¡‡'mDÃú>»¦ýÌB¨—˜Ú¡¥†p�^K�†¯_«Þƒò sÚ9rƒO�wGuYÄT¤¦±J±V¸2mSûÚé6qŒóõk„N·W}oÖ9ÃðRŠœ•OÓÝj.3=qyàÂ+ûÏ‘Šƒà>ßáõØ7†�¯†Ç0e°ŽŽT`�Ïø_[—‘àÃø[Ï>¡°ÆßjîÙ™;kÌ©Nm°1y©`ŸjÍÕ—ó)&ûÅëæÓº_°¾2Ù…~·³©r¸`¸ˆ_Y‘~á ¹¥‹ùkõÇ|¬NòÀ��5KS‘!ÁÙ6�Éšùim¼öÒ´2Í‘«kW9ºš áïáYMÓÌ `áHc^Í]§°¦u1 tt!‹FOñ9¶·¿ýü« ._ÇãÓ/É»öE±®8tŽ5¯òÕµ¸ë¬ž“U^'è’çÎd¥÷��0Ó—55⨭]ºH_Úgãå⦚7®;/AçeÍyYõy¤’¹~ÈïDû§k8 ç[w­÷ÜÊ:œ=ríSILefÌ ®À`·é�܆Y–Öø¶0­ñ-Àû,òº8mw¸(i—{\où²8]kaºÓ½ãË2ï œµm…v²¾=¿¢ýó®Ú–ùgpv°1²¹ÿ¼N×~¢‡Ç¡çƒèOuKawúnJjr ,h„®aC»iô ;avûè/2qé/RIö{Òy¤9`øŽ�Ål<··ŸÝsÅÒÑÓÅ•/×¼ðøNúÛƒ®qXó�k�q0 6Z�鲞}øjÒ›'«/ gIoƯÃðW[¶0~mu\[ 8»OþÚúÄV™Nœ2v"ç£Ól�[–Ñãr*ÁßEþU~&‚¿MÜWJâÃZÀ97ù¿SµÁo-èTMiÖï,EÓ.—¿ßoîîÿ㳬ÊÝëßc›¦”0pûEÓ´¿³ùÌ^ ¹EäÝmV¬øZF6‘�±|n}LüòTîÇms;º Þ6·m#Ý F¶w¢;[xÛÜÛŠîïàm;‰†#{A«sgÞ6ÕÒØ?vBH8ì´LËŽ�wwø~$ºµlX�ÍHÔ†õèÞ“üJnFþ¹MÝ%^hœñ·¾´‡Fë°µÞýøí2þs¢>}Æ“÷-×ûŽë}�36n%þñ¤”�édÃÎìÓf{‘ÿôU�q¨-Vųú´óø»ÛϬ˿~kyIKXtTÐ}y¹6À­ž|3^²är‰½½™�4b}žà‘ÕŽé¾wefŽ3šë×�îд/ ȵӇ‰WçЂ­‹¹}!Ϥc‚ì{W4\0 Ž+¹b= �aãë×ÖEÿÒ99&ÿErí3jaùºÏÉbYœ•V‡“Bß ¸½ìúZ .€¾0y~Ìxym{û!`oºoàìAp÷a£õø�çôÅê0ðj÷�žùì!ÀÂYÛsx‰§p‰9žr.IxˆâÂ.DûntcÞ3æý´Ì{žå½í‰•�gíçõ1Ìp¾:C•õç©QbQ#Žk+1 €Qø°¼žlþW*ÌBe¾m͘¨ %ªèóu«““îé×#³õ¡SËôùæ"‚«>t*‘îQ"Q/�MI÷v4A:K[/,H£1Fû9C£³!é§KjMHVYkÕ¶²ZbLi^Œ*µºZYfhÀOX�'ž‚t r„Ç)‘NãóõpÊ^øtáXIêð#‹é£w<€˜‡%n™ÕüBMe·öŸ×埽©5¿¢Ý‹~{wËÙÈnßßµÍÞ€W`,9Œ:ÙšÎpܧc7Öl7SΙ-Ü_íÆ"j²:h¼ o4VW�ãµî}ëðÖZc-ÀÝÉ ÷N¸¿éôWcÍw±pè°ù*Z G›AÌIºðŽv×bœ>ùáµ¾ŠÇ¡i5�ñ2 †· ú{/ê»(XMa»\£RMŸá'9ºã‘²gTЦ2ïþ%—dž/ Ù“0¯ûÑ^à°·þÅ´ŠmÔM!0û|T°þä"!Û:¸jT<{BT‡ÊMÐ-Pî»<—:é“] í,CkÎl¶<ÉËðÿWz2ö9{ÑcúQ’Wqø%ï¶œwx1Û¾ ø‚]·&+è»X¿ ¨NhzmÉ¡IϺõ¬gœà`Â\V´Uƒ *Íð)ƒá݉÷­qú…Ä /P3„\�ã(<ÿ,ÂÝñâv�û“I·‘t&­ß›8@ËIl�Ä\šP0üð×t7¡»¹„nä'èn=B7²„îæOÐÝ~„nx Ý­Ÿ »ã¦õ³NfÈlÏ‘ñTœMh„ ð¿ÝÃÏ:”ï�§1žppo7þ¿¼Z«Œñ““ce²�q9Øñ®zN<é„/½ë¡q‰ÃŸî#ò!ߣë§=x@˜½}aðvùÁàkKж‘Ç¥˜†10U'5b݃ºe7 ÙAHÃq,¹1ëóšnõv|�ÃF´ë,³BÜ·1Cä~÷ØÕ;û,ø¯lÊpitS<•obŽì=á†V(yγRì«{³ËÉÀ® ûªrïPô/: ¨®½'£KçJ?”Ú‘ˆ[8$P3ŠÙ1�šylRCÏšãþ47Q„CÈ^À#n¥ÄáS-L_OƒÕ˜¿¹¼i8þ4š2¼øj“ÀýÀ¡Â ‡BQ‚7®ˆààU8›ºÒM®Tù›.‘¬å"Å•Hñ·áÈA\$ê^Ä_E.§LäÛäg8XÃÀx`Œ=ÌaÌ3Ù¿rœxî?|_8K Çû³‹º¡_(…~ Ü�½ÝÍç> õ÷?¸Â¯û“Ûök‘ƒ¾2 ýµ5Ü71/úÊFøâ>8µè+»á;÷œäV as#øz5¼�[¸úIIjÜÖkø­ U�—Ý· ÷w­í¹Tã¢{yÐ[� ïbÛ‡áÕÈÿ`m;�¼DA%éPüöŠR/`LÇ'î!ל�k ¹¦š{‘œè¢Ro—ŒþÞê~r®õìñôªçä³Rðø¯}Åã“iÙ+=‡ÎQ»ž2­Š„·wç\[oX�»!¿ÔcïCýݽd|ßç¶’1ÖM89�7»·ø¬÷µqÐj×Ú}ZF]@�à¶#€¿¾ †øˆ¹ÑíÜŽ‚!ˆ%TM´oØíôïðmì„e´0ù¨% ÝT iÜÜôâ’mƒ�mÓ" ±dÛ"èX�%Ù¿#¸£€É; ¼·º€™2¿æ6Õo�Xj@ÌÔè˜éÖ}S@[À@·nÜCˆô° ‘²†…À¬Ù¿bÙ®�Lgû=Ü A,+™µL&}f‚Ñ ãFJ0gôêZ:ú†C$Ï™u‚eÉuG_n%ùmÂç¬&10ßk‚J~h ·GÆmŸ€årtG�FVC�‚ÔmÁè_ùK5{‚[ýÏ�aWHzM&è[øFBáÎdœÔtAŠ®(4‹F¿O0¼Ð!Šæ�IpYŠ�Û:�¤ëôä×eVìß2ð¾AÒ÷MÍh&¸1zMÇüiÆ=ãÌæ5� ˜gZ�L“ W-‰é¤Rµ~j…׆&ãTû¸g¹”ŒÖ-i– â–êPJæW°-Ý4xÓ@b¥A9:nQÙ�» (ÊqÏ@ܱEE9¶(õñ e0ïÇ#jrÙ`c.#ä¡ÜAβ)�¦EЦ~–Û¬[î|!è}èZ�ºÜù7�5$æ€_ƒo†€º€†€¦SÀµ€–€¶€Ž€ÏntÜ °9ôÜ ø·KÀ@ÀPÀHÀ_|p/à;A]¤®‹Ôu‘º.R×EêºH]©ë"u]¤®‹Ôu‘º.R×EêºH]©ë"u]¤®‹Ôu‘º.R×EêºH]©ë�ºbôÀ¨ò™zVé·P+£ˆéÆ­¶w]4K7F lõ@LoX�z{„<è�fSÀ� '¿zȦÞo5ô „tÿž¿F‚9êAjý¾ËÀ{6LŸ $ªºjÜXèýF·]æ¯j|�QÕé4ª×Z]‚6µNd¥ÚaAV;„¯öŒë7ɯß IsD‹rÒ¢öœ$?í îh“?HA~h´‘àCŸâ~¼3ñëã`„Z93¿#ÝY‡ÉÏÅBŸKÑ�ß’ÊùàÞ�8ÿö éÎïçß¿LJ`¼Ý¾Á¯ÚýVw½îþʰÂ{®ç· 2Rªâi<2xdñÈãQÄCÃã�÷xTðÐñ¨âq‚Ç<>âq®‰8 <@9Ê PN€r"‡È'Žð�x$Jx€QŒ`”£%Nñ£Ä`”£d0J‚G<’à‘�dðH‚G<’à‘ù$¤O‚r”“ÈBä“ Ÿ‚à)™•¤�6…Ø4ø¦�’Ë4X¦A4 ™Ó�9 2 �� d@ ¼,¤Ï¢˜²�> RYd! zYÐË‚@Òg‘6 é³eGü<Ã+I>ÙSTØ›ÙM°]eÙ³”-K^ÙS±­åª�!G“zÊ>=GmÉÑ®çNØ)Ð`äžO1¤"Oé(¤ LöÔ®#ŽhÚŽÒàutÌÞ€£„õ¤À^¦\A™$öd(d¥£@~‹§Ò_¿H[Uäà È‘@‘½X±Ê¾â„æ;Î>¢ÀN"žáò¨�Ñê§hìÙéhìf4êŒV•ÞA:bÒžhiÐ̰i)邨£°ÐØ/h̵Ʊ‘v É5êj‰%P¢©.ÑØ—Š�ªÄIéœÏ¼t/Ä瘠”'>Ç šô,,™c–p9.=;šù2[D™ò”+(“2©•™¯2ÇMÀ˜€±cÆŒ��6 m@:HwéÒEŠ é. =Ü{¸Ï&˜ §èš†«…+ãÑA³šuЬƒftê S�:èÔA§ÚtЦÛHq�â ´é Jwm\ã!êR2:®È ÍÄÕ•a PhèHÑ‘b Å<¸j€ZÃD^�& Í _-¼µú ðÙ° ú pØ@) ”Ÿ ”Å@) pØåh6@³ ®š ÙÍ&h6ÁU\5ÁU-Áµ&è4Áa6Áašà° › ÍDí› ÊD½› ÇWMpÕm&h33|o�6 ´Y ÍB[µÀOKwqE:¸j�«è´L@‚N ü´@§~Zà§NZà¤NZà¡Zàž…–`¡ X Öµè´ÀCKR›áú²A³ šmÐlƒŸ6øiƒŸ6øiƒNmÀFíÛ Ö6¹¾lPkƒŸ6(´A¡ mPhƒBÚ Ð…¶œp‚ZÛNô,íÖͨu@­jPë€ZÔ: ÖopÕ�¸ê€ŸŽeâ Ô¾š›yâ  8 Üq úÐï€~ô;`@§ƒöà`p2 ãj®&®2ÅÆ•á]´ ”» Ù‡]ƒipÑn]pÕE[uÁ[Ôºh«.ètA§‹ë¢Åºh±.Z¬ »àª ]´7JÐ\ðÖo=ÐéiÜV=´UœôPï¨òPû¸ê�BÏ–W¤ Þ=Ðæ�6”xà•ç3ñçIÁ– Óù‘>¡ŠŸ‹ñlô·T•±D«°˜�oJÅR Öåϱ\»”Ë2¤ß ½‡Ä̂Զ•°�‚ª¨PCJº7`+@„/œcév•„÷„¬`¹vâVá÷=,’ !,– _«I!KÞcy¦ˆG±íÙ9î!T±4)^! ùbO.¡8W©�{À—ð­2ÄÃ2–åÓY† V9å·蔪\±è¬baZ­#e¬BKS…8_½•K\¡®©u䲆aê%,V Ö¡½©ÿŒ%Î¥T}1m§ÀyŠÅâ)”1 ,dNX7 …j@_Ó€J¦qÃð |½Ñƒ. b{³ ÅX,_°PkbiÕäY^.Y°�˜,b¤Z«…åxu†%Å8sv�ë `ºÐxu±Ä�|†ÒæZE *¾¾-¨œZàü9Dø ,7/ ®^T±Ô¨ñ/@óEé·Ìܹ߱„à|‰ös‰Eó%´2m¼m£M¶¡lmc)Ö.Cä‡ ¡ ÌÁ²m¾}‘œiCäo£M¶¡jc!ÞÆ²©SãouN!ÈC“×AÛî€?à©«B]tzÐ.åYоªò’î 4_Avu ±ýö W®Á+À_£W^£Æ¯�ÿ‹€,è»X¦t¡0ïbÑÓ…î» åw·PÄ•su¡œè¢½uÏ‘ë)òØÚÀÐáou¡ëv™Î[,æzàgJÊÞM3Ðlm�g¬Úr¬#„ɲ²OÞXç³ÕB®—âqs²¬·Ïi¶u²Ó¿j b®“Á©#w­ˆdÿTí�ˆÕ�l�B‘혇Œ}ø(ÃöòCæ?”“m¸â_cƒ ؽž½‰m^cƒ²]hCQV)DÜ�¦3¿ÌMÄùב�ÛmØâÌØ,è5åIÎßè:qdþ6«ëħ7YCËéFjþR×9Ñ�‰¦–3LJ4tß´è×Ô•í/Ávgš]Q¶èˆ7{œ"¬¦¨áYëMÛ40�ý‚?RÍSvZ¥yÏí‹àùW“Ø�ÄŽ8vÀ±ÿ�nllc[;�ؽÆn5v§±7� ¶§±�ígl>cë{ÌØaÆþ2ö“±›<â#Î1bà¿ñÛÞòVêˆ?4âÁãž�ï9íž?9æG˜fŒ=6<ÇœwÌ›«cFðŽ³½ã¼cZÞñ.ï;†{Çzǘß3v�ß3ª÷Œê=ç}ÏúÀo?ð‡`õ�-Öœ÷¦Ë&hÂÀF5áfv\'ÌÉ ç…ÑÏ„óN8ï¿8Ç¿øC0òxàœã�)}àlL̉˜´Æ‚�iØ$=0– àó¦eʨ¦\—Øz†™Ä”óbçFب†ÅÄGùÈÛ¨�üIlqà ;õùC9ÛGFûì c_}ÆEÅV÷Œ³Í8Œ}°Ù?ãoÌ8Ûœ÷ÛakË,˜Íó/Œïþ8¬—~AíßL$L>°-˜-¸¨Ø3_2Ò%“±d2–LÆ’Q-¹KÆ·dKF°dK6kXòÇaè0Øà,™Ò%c^1æãÃÞ;¶ÇaA›0Ø Á¾ô0a‚ÑЊQ­€€Ëû‰ó~â°løÄ ä3#ý̨>s^XÑüÊw¿ñ7~ç°$øÂ/¾pÚ—OO[؆ýܱIþªƒ”Gæ…ñáÚaŒâ\8—(~4=E^��CxŽ¥ø³¿bÛÛ¤ÒÃÎdsÌo>Ô6øoEI&Ó9ºh8„Ã?ÆPIÌd_7†ƒ{¼0ûÛþçÄMg‚è Ÿ2 6�#wHï’Z-F"¡O 3‰ãC”æÐK‡p)É~g°&“IÆM/ŒaÒÏ)0!5,?§i%oOˆÄ’ßb?Bú:Õø„Ã{OéÇ䃋ÜF¬ÈEV.m(þB]f§›o§›o§Áqµ� ’w[a$GB$4V¦l¤-eZä¡õh!ÄÑTˆû ¾d=“[‡ég$ž}H*)–YqrŽrú§[¶g{ÏëwûY�ní’›Ò)ŽŠ?ÅšÜÕ4÷¹ùñLÓËÎdecàòØwn»æðq šJÔ#ò ªÿZŽgËÉjòyœÛ8{9# �'’é6ü î ˜oGp¶=_ œ×^OßÌ÷N=Œ²s>õ° uQp'§k~j¤œ$½ôT l-䉛'·–Ä?(Ò¹�ô¤A?Ýá?O8‡e»Æóû{,RÖŠ=˜…! _Lû«!×?Ÿ:º#QTÆA�ÂDJXÆ3Ýõ¢ø9ÉÎvøû몷êcîèVýñp½áé<ŠÆÔOÀ¾�þ`ÑD°× ?V Âʆþ „£?VØÁN…þ`K@¬@†EýÁzˆþXyYN û“—‰Lkvȵîl»Çêìz|ð`m,II§%ƒt~�ʱ‰ç³B±T®ÔNͳÖÅe»su}Ó½•.Öö|^ð¹iÙŽëΖè'õ±y²éI#൩½7.'ýÆKç½ÂÔu�Ê^oùû“Z¿OoUC5UKµUG¥~¦f†j?LÓÂ4Õ¦Ô0MÓT‡RÃ4#LS]J ÓÌ0Mõ(Õ¦'�îzkÑ;C%¯ï¨aº¦S*CÉt#L§T™›ÓÍ0�RC¬vˆUÕ†Cê�—Ï<ÓlŽ °Øô¤Ñ³KÏå³@—J�(¶)�‹/2FØ|]C©£ì\r å3€Ñv‡òéঠŒ°3Íôu¢yõÛ°§ÊåKJK¹ä î9ßëšZRxÓ3º<Š»p3¶ ŽOóÒÁQlËwÔÌ7†<>›]õ'Ãþ¬?é ©S7FÄŸÉš�£íôªí®?RÛzÜq6¡Ñ¿hFŠ¢CGƒ¤#ÑïµsâꎙX ¼œ ;EpZT{=“y='Af–Ú‡ž«4€ümÂq*9{™¥.ôÆ��LùhôÛlð ëéÙš]½ì2ÛSR¢˜ç2kù|‚‡ž7ƒ¨p?!Gþ’XBþi¢¼Ms¿m�è·›md²lݵ’áMÙU˜ÃÝý�á ü“’ÈV#šE‘*wZ ±‘°¦“æ ÓO¹'|?åÐ�1LéôcSýXÃT†~ìaÊ¢g˜²éǦ úñ†4GêüÇb!c³%6Kb3%6Cbs%6Gb³%6Kb3�� ç!ƨésUõ3Ããã ît�ææNíM•zš7 Ýrl`á.ƒn`waµÙˆH0 šŽI³xHصŒE¥\I5eÃÎZm64ž£$\)�ãØƒñHà­ûŸn„¼áȆIÝx ÞÚbà5«‘Óõfâ;íê�7 3«,!Y(»¢:$q‹s/îxó%ÅAƒ†9ïß ‰9w/ êcÊÛLn–Îøáaåy@~ͺýtóö›¤Dp $]‘;º(VptZø¹•ûˇtñPnžN:Ì´¤E_`Á“(X_Iã«[<ñEZ7ñ6I '­œ¤±_`øÃ –4â k`{ãØèÀü¶-œ&­_¤™ _`.\ømFOðlÒOð·Øh- û"&”97SÄRýö¬"X&xïìÖ àßU)ÌTv"|HeuÐ�û<†òƒï­@4¢2|¼�Ä: ªÑ´®FÃüQrò6|DZl&¬¯ÙÒí¬h,áÄ@±ÃÃJZÒ"­Îœ 5:Pø›Iñ�²]DÝ•SOá“7ºûz²3W­ÂÕÄDNTÑ‹9ÍΜö¨»þŒF›!{jÆ4z¥pwÖëí¾ Ûk‘”îVéGü&ºŠõŽ,ø¢ÛÙxJÉí×^<ðŽ@«ˆd ŽU6’è×�+z0é†Õ²uâð\2ÚîÜ´Í5#ðb²â媲# ͳ = ›-BÕ�X©ÇÙ§,K­i80vÄÅ¢I:’ÉžZÀ�¹?´ ;…³öËv|oK¨Gºz¤ • öçiû¼õ Òzl4²»ZðBþhA=<(§ì z UÊ®ã¸ïîÝì¨úã{7Ûf›áÖÐ`7 �뎲_wëñi!±Ítžû<ß#»?›a§yö4êý¢9ó[ÆØ?ÛŠ�öõÓbÚ¾{' [S»þFL4Ëq�'ÆD{B4b×{^ç�îìîE‘ËÓjhwß1¡&”K:YSª¬)V|nùaMr|ñ#¸g�öÇ �ýûiÜÏ¿¥ée�ÁxôP:k‡2Ó2tKã¦ÄcÃ2Ý‚m@<>òcM0òèž¡ie×ø§’¹>z%3ZrðJ㨚ÐÑæ÷ô,�¤h~1è2Õ½–äî0†ðêj¬£¼M-yþJ†ˆ•A)Å6?GÛ{ްe4z…?†é·Ú³å0ÇöîAÏIËŒ\ðÑ?Œ– °…·|3þUâÍg¿†ùĈ}¶e=ÿ<è…÷Ì^Ô-—ô+%›’¯„àõº�üäl˘F¾‹SŒhB�ôöθRÖ*¸rìîͧŸÞS·é³õX ?øTò4$Z*T* _*ÊÇ =†F±kÑEx3 n¨ÉŒÞòÞ}RñZUˆÑZér[†ËãÉ¿�ÞU耗7Yލ'Œ›@·ÜX í¼yµœˆ�÷bÌf7ñNúòÿ�ç?â<ÿ SÊøyí•ÕC1C[¡»(õ÷m…îB^jI Pã]ØÐ˜Æ†CÚ¤Ùü÷ûí=±Ýž¦MO²°¤yì™Ù�o�`Ï ]½&›ì:Ù ²›d·È¾$»Cv—ìÙÈrÈvÉòd{d�È!§NNƒœ&9-rÚätÈé’Ó#犛pÉé“óŠ�ŸÁ' ç59rÉm�Û"·Mî%¹]r{ä^‘ë�+ZräzäÉ‘�ûšÜ õëÔoP¿IýõÛÔ¿¤~‡ú]ê_Qߦþ€ú>õ'4 A� ´ipIƒ l84piàÑÀ§A@ƒ yäÕÉk’×"¯M^‡¼.y=òlòò\òúä ÈóÉ’7"oL^@Þ„|òä7Éo“ß!¿Gþù6ùù.ù}òä{äÉ‘�ÿšü Û4¼¤a‡†}hèÑЧá�†‚+ü§A£6�º4²iäÐÈ¥1�4îÐøŠÆ�} (¨SР MÁ%= ®(°)p(p)èSàQ€RC Ñå'„ÿmšôh2 ‰G“€&uªåæµÔü(&L¥)õFÞ£zVÞƒ™Cêö&Ãw‘)Õ-ªƒEu°¦Ž±×1Âúȃ¹ÃÂë-|<˜|6[‡%6`r ØLVÒèá Ímô�Öƒµ÷€ ú×°� h§±6 ×Feú(I5<äCJ e ¤Ò€$`¼e¹iðOÜzòâË ¸Ô„å5¡ÃMŒ§ 5jB‰š£ï,`X ¨Õjx€˜>€Xx †ÖB[0µÌ«Ûhõñ<1ép¤޵�_íæÀ¦‰àÕÚ=¤ÁDÚ0�6†Ð†–µ1„64©�î·¡"—-Æ € 0é’ñÍ\Jƒ».1êKhæ%ôïrhK@² Ãàmµ;èl§ÝÇ ƒAv.ØtFØ�u`90´Fv<¾´ æô¢3Äó4 s�1�ðÞ­„ê|èÁȺYÂì¶øƒ< làÚ®vÑf·=†¡ ®ËèÕ õ^Òê»�gÍwa¥Ý>²1ª.�T!Þ.L­ 1va4Ý1Š@·{� Φï˜À ~Õæ+P šyeâ Å+¦âÊËP^�såÛdŒ€t¯h`– éÚˆ c·®ðÁ=˜fcv{ ¸öPÜÇ#ÅFïl(¸-)Ú#äÂì°É©ïà°Ëi3Á§�´6§úÀ§h{`»Åp€È0Ì?œ>ã$ðxâø(üpÀgˆ2�¶#ÁÁ‘:í¼Fê¤C.ZwѺ‹1¹Š ¯çB(n»‰ÀÎ…s�Ñ.TÏ÷]´æ‚û.¸ïŽ�¯@Ž>zÞ‡wîÃZûpÊÃC‡×éÃáôákúÍ>Œ¼?îáÃWÆWà*X:€¡Pm€�`ЩµOˆý¼ç+˜µ×¸¶ù„{<@€×æ‚@Ü~{èœ6xЯ E‹ž4iqÒbÈ>ÀÅG»>æ>ºìcá7�É`�½ô[€]°Á‡ï÷¡Ÿ>„àâ|ôć| χ³õág}Ãï1‚¹¡N>€Î·ËAßÊ �ãòR�}8ªì£¿>!=®Æ‡sñaÞ>”Å¢‘!î‡è,€ß‡}À’/ÑŠû“ Áö!¦.C(ȼcW`Ù4 á à ;#LKFð0cHz ÉŽ‘6†–ŽÁ¼1°s ©E À–â0ù  åfK†@Ô  D@ÿ€R€ú0-žÐ�Î8À¦ aÐ’ €ó��6 “À*Àh‚!|Ψ# ߢà?˜Øð6øô:ÒÇð”ÊL9þ1:ZŽ'ªÖÀtˆ¿ÈÎGíÞÓóÑK;¡a¦£É<[uµÑzîÓUãNä´ð+rù-Eí\¦p¶šyúZ­¥ —Ç-ù�ßk©¶4[Š#0cªŸô#B;­î=?�—�Î…�(ò]˜3¶˜ÊNÿâàEÐÚå3¬TjgŸJ¼�@ÔŒ8]+â H‰“ejOešÇíܾ׺£ç¡(µ“z½.Ûï$ãI³­rÒÀ“lÝï¸Ëã«óë̼§’¼éóU 毨�9^cЧ^F0©ïë}UC3…BA~ ²#ÂÇq£ÀC&š-1¥öe/z;?ç‰-c�Ô€\|´¡àp³•ô´ˆjSSšô½(&tû{ ¯HxoIR”i{0žÌ5£ðsõXŽ]�i(ËÍw{­ñŒJduKœJ—Ä�УücÅñÁð�ô Õg®Ë‰'“lÞsµŸ,ü\í4`üqá,çvÿÑêöØ¿Ä)¹ž …Y¢å!ËË‹0æ‘9í~ÑügÞ”¥êBsGAl“lúâøÚ$GÄ>�"z3ûpcâSb7�CIØâWjÔ\$¡fpõd«J<* hGšª2¯ÌxÍ5£*M_küEÑBû?‚‰iKá0‘—L…¼ü�ÍÔÃÌÓ›l ¸Óж«%ú³Ö÷kq½ÞlÄ5â߯6Û›ÛõBfÜ.ÞŠëÛ»õæÍV¦Ý½ÿ ®÷œ$î6‹_?ËÛw¿ÊBûÅ6¼~”×Ý{\wo6Z£­]zɽk‡÷Í®Öj«<^J$£ç‹‡½v·ýùZôèfu§½AW×»[`œoD›j^þ©Ñ�â´Ï̪i%µBZ}Bü¥PÖTÎA.ðüoŠ y²Æë'jQ*ƒ"SøúI ÏæÜq«h=s˜©’=•q"µJüQÊ’Sx‰øŸÿ¾¹úåW0?+¼ßÚÛ_“pà? úL£øeOÛ~â¬í8âšCOé SöªÑ9…rÝó"ÙEêŽcÊî4MÝ#5 ¯½;½ãµB©Xô½/xy±å�¯/ Uœ›½‘çfóB‰“miþ NÊ.�,þ–WV¥ÿÁ9”§©c%Wï×̾FSй6Up³ýñf{·Ý숲©»h–]ø;G¾TáŸE™hk–½zÎK"âä]œ ŠåIÖ‚ÊãS2Eçâ`Ƹò]ö|ëÒW¾I*Ÿz-�ÖDásîF|°¦HéÃ_ÙkáèÈfLŦÚùlÇêÙô™.Ž>Î&ÆI¦’U¹4JteŠ—³3qq61úqþOõÄzª'»Ç=±¸'˧{R|¢'Ÿ±×†eý­'þÓ{m`øÒ1ŸµµFÕ*q˜~êwP¹î- êÍß/ÞlVûóZþÑ"êÜßÀ%¨æa ³M¨½˜¿P?ì‘<;ÓÕÚš9çðkç‹õÍ-]¯÷ï€]{ºÞ¯oiµ4ÞŠ?·‹Ý-½ýM\î—&ín:íV«óýúÍêA=ŸÆ“ùÅNôˆyi ´îoÏuÃ(ÄÉ4ž¢ê7ëÏp°¥Ò–\òöâ÷e·¾ÛoÏÇ@Ý)© H¢RéÕÉÝœ§r¢EµÿŠÃbjŸ–Û�P‘óðN?•Z³šn_¾œ§«ÌW2au8ýé|}H& ÑÇ£à„Å~¿º·Ïí·9É‚Un³Ýhâþún•[ovûÅæfu6ÛôЩ‡åê�Ë^¯rQ‘SQaÁ,Êɰ£]îþýnŸ»]ü²Ê-r�8®¨¹ûÕþv»<ËË Pä Oc¼WRÙ`†!Dð0^qmðøl³�Äžž#–˜O§«cÆÜq;˜‘2gRd8üøAN‚x6#Éà9¼Ã\ê„|;ƨ’¡‹þ)k¼ÌsÞ‡³úp¢,.Î6¼~‹ûðmt|ñ�²8B‹´ûBÚÝòbÇvW¿à,Ö½%ŒLD¤+KUý›(È3Ü'u"6 >Ê+â[VÊér~Q-Þo¹º[íW¨|H‚™Î8:ÅÃÙOJ´þç“èÍ!<åû¤þhûŒ|êµî4y «ŸÝÜ% Cj*àòŒ·9øøDDÕ ¯sËyžæsyõQÄ=Ûô!‰÷=‰‚�WªÉÞ9ÒýÕøëTtî‘ûp/"†§�q#`. §…Q²ˆnÂkÚÐÿK(\®d0Üû‡j"e¼‰�¿Ô¿¼|!Nùš8ÈX” þ§ÃѺ³xÇ� oÙu?ŽÝÅÿ‰…™”³Í➣J�Å»¼Ü–#ÿ.nk©å‰+¼Ö£øÑ° x%­©§nxªW!Ý¢¢ÁS®æÝâþÝj©J ÉŠÇš͹œ€¤Œs. c<á‚ÿ{[ôyŸì%t´>U,´ù¿½ØMbË+êV©%’Û?¼Xµ ãô­r<'zHnïþ†eñø ÃEhñ~¹ÞÒO[ÌÁט¸¯è~µÛ‰ë>†îQwýnñ°§= …~Y/W[uöMøe3&׳³™6{ù#)¬xcšµxÍåÒ�‹E¥¾�íj¼Nx·Ú_(ùãRx“ýT8-yzL@d¨ ïÙ£RØ3õ‹uM~sÿÕg½ŠèzùËîI.(?ù")¾8’m�œíÉ*³NâåÑ:‰¬+M¯OÍFaKø[¯ÏÛór»é~~¼®=µ$U®k}ç›Ý8ö8àw›ü>jx+6\ðböã¦ÿJ 0¸-ó¢³W>?2xq¯Õ�ü9oAû²V,—¨ *Å"•¦z±4'Ó¤r™*ªâY³*Õ¹*~!ÿ걕K½-jrÕjYWQ·fN FÉ´*r“‰°\£µP-ÕšR$KMç·&Q¾¡¹&YTVà `äÎ3�˜„…·4*ºì •-5,ÙîÄ�2 ¢Oú´ æ!ŠØÊ™Àk+d¡JJIV—õWZãub7&š0Jd˜dT‰í§”ôçú�ÖèÄEÍ*÷§’Õ¥ë�ÖhEE*–�Î(¶! #5$³nZ=*Y,3¯Š%knÒ{úKB%è-WKýG…w\q¹ÐZWqE Gnegž»ŠJr€T†L‡íòf+¦Ü˜ÛR¦ØX˜-k*•ŶØeÞ¹Ûš-Ån+¬ï!¡ú0l½Ä‚ñ��§zÜX3‘’ÎJ+¸ž�±GsLƒa-…0!ĶüEsƉѲf”§w©S“œ\Ýi/–K¤f)•©)Ê*µ“©Í�+$b1¢N3Q ³Ì…W•*•g&•RýXm´z/*Ƀ1¬ìÜÀ+U •øÁ{ÔP6ZVÉDJqjqód”æÌP®Q"Ø ¯+w”Ä#6Ô,¦^Š��ó:!°Ì^ꤣå îK€A¦§O‹ÜÄÔ`<âýØ ¨q&Æ*@¦�Fì;Ê¥’®00—CÐ�ÉÈÝÛ#l-É´ªd²ª†4bTÒ§f75æõL¸3è·H CoÂÛ¸ùNìJlæåd¶¨@'S@/Uô9;R(£(üŽX) Ù„-—É,“ÉYdÉ,’Qa‡h¦ †ID7«ŒÎVš|7¶¨ŠiÈÞc@¡U?3$§ŸÔ)Æu¬çŠ÷Ú‰¾ñ*èÒØÆ7†*ÏÚra‰jTâ»XŽ ‚µt嫸ÃØ[&=qÍ?=hÍ˸@Ñ¢\ % T3‡²A†N†¡¦¹âÇò6taÇ0=Ã,Ï3l½êE¸bU,ÂG캟& S Â@�¶5ŠlêÊͨvŪ Õ†&—*S òƒ U ÐœV¶ Þšl8f¨�ôÎO1 !vèþV…RdGã XÒÂà«j{äGjËú…%M#¡/yá™J™gUÌ’iQÀ[$ËI"˲ì}̘‰“ˆY­Ä0žõDe"昇%ÛGI Né]YxFž–r”m"@yüÍ(d–ªÐ= ¤(¦û)Fbn£˜Ye>„Óùr”ßLòÑRQ)(‚µ�ºž¥Á/ œ®f«Æò,ã9À!S(rÝfAÌ'µÔ gGæÇ˜Y0‹r†g·âÞéô�Ä~Cüåq¨˜@ÊÂ?-º4š¢y <š 3ž¸Èp¢fÍ;¢lJ gö‘’hªú„u+Ô%|Ø…T;øqr‡¢2?Sõ'ôk'”ù¹´ð�®ýJ â¶VÚxe¤m8¨Ðd5wX8MíÓßtí9¢iŠkï˜Ñçœ)*¨•77ö±dç >™õX¶òwJ HÓÇçÚÍØ>>—:�0‡ê,¶î�ÆX@J¼RV�¶/ÖüWûXHi!•’æÑ”à¿!û�ùw,¾™Ž*Gý@šâkE˜iÓ˜E¢Â–õ£™}"†Ó±“3"HPod@—“ ͆R+uE ØÜà÷Ž8ª„a›ë›p ­Ô‰°Ð¶!ÃMã,.èñ¦Á|“µm6› šI ¬?|aòj�i 3DL¤Ššp Ånƒ@œ&c»¹«¦‰oFÄET>×qhbC~(ä†Ä窟& ÄÔaF{/oo `ßfƆ Ÿ”þÞ>¿*Ð-E�§Cûä˜/qœ[@F$J|fõã Å`¦#ûBÈ-~‚”ÅäæÝP¤/×¾U¡î�ÞØJ[«Ñ¯U3NÇö…êõÐc=«©Ñr#–Š8®ªå´¸VÍHý¼mÀá/dÛ\â´-{…1=Þqì¯0‰Kí)’æ˜ÿ‚��êkƒ¡ã™Ï>Ù—¯³A <„e•*}öÙ¾j¤(Ê£H_•Í&ö¥6¡Kç‘7öeSr?ÇG#Ð÷7ö•”¾}ÀÇ©!‚-j0â–ÆºÚ’Õæþ7ûêZUEæÕ+vLDÔµ#â yÊl,ÑOCûÍ©bp�IÃâ³å("z¯!Óþ!ÖÏ‹xLµ°8™°mò³Ã1~Üjÿ¦Ü¢@eŽÁ�)jTq«Ì\xj׋›ýßìíKEf™¦Á�ñ˜°GÓÍt'öû½QM#©ƒœæ¸>'칉Xá²Íµu³'÷®øö C#ô C’¬]jÕÎþ�ðVx‰¾ ¯•~÷Xkáîµö±‡I U·¼ÐJ,iï‚×AlLˆ÷º”¶ö�Jºgÿœã͵’‘¶µ œ—¤=<× ¯4Õ¬vG{ÅÚ‰ŽNµÑ·¥Úâh—ïÈ.>:ׯ†zól4¤€|tY^Ä+†®]™Õ«³’¦SþÍ ™ý1á%¿d/ NŽŠ�ÔO'…‚)ñÉÕrЛòê�¼_m^²n¥øæµy9ÜäbhaÀ°—›,¯ÃcÙŠæ»*÷!È·NO´ÆËb#È#YY'#XbA‡å­Ý>üÙÿþ~î˜yko bÎîðû4Sû†g‡²¢úè3ë+ší�j`­ÏŽKÆãì¤,P§'Tèùk>¿ØòüJCÈ‹=mî]`~Æ™Y˜ÞT2÷¥-/JZŒb0}êå ^-“¼�uÈ‹à×~Ùhù#b±—8Þßr±ý!o¿®u;̪ŽuÛý¥…¡._¯ežŽÿܻס~ë°�”•rßtá éCVe§”Ù´Üõ´•ý‹2%”%õÏ„½“.|ÄÞ‰ÌõjÜqïwxŸøKItcW¤V?Aî>a ½q-²ØnYˆÙæ..‚°] Ã�k¡wÊSZi˽v&L�éO³§zØRG¼Þ£%¶(Šsúí�½åøÍ»÷¸[ÈC¹™*´¬$ËQH ‡( L˜@JИŸšôèCߤ§ Å€}… *b?1Y'Ç¥¼„¨BqRu†eç5eæN’»nîú¹æ¨ �Ï4÷<Ë„Ç㪯¢$Ç<>žæP 1‚�€eÊbqP–†4ì0h¨ŽévÙð’xa|N >N·KìÉmµûøUgû´-nç„ÌÕ™(²ØE˜Ex‰f‡È./E§"v‚d1bÒskPé±i [*TðÏÀŒŸ)ÉÐ:"¶Á0J˜!¤€ô®C'IC–0Ì£GÇ�¡ÖI©[‡>b�õÌ@Íž‹šZ<³MgGQ"g!!rº(ÙŒ˜ÔÂZm‹ãP‘䢪Ȕb$¨i ÎB)á¨)Ä•“˶-åìONÞ¨¼OŽ!ïæ2ĈÉ$š5¢ö”Œ9 h��”Á¤�éø~ÒX•ªºž:á�¦ Ü©`}¨õÛu'Wˆdb´1„×á5د+¢¸i¨Z£ó‰MQÐÞ`³¾©*Ù//xSÛ”…Ùzaœ¬r™¡£d ¹ÖÇÎ6µ¢åEOkÞSIî I”=§¾¬@kevÙÑo ‹ˆïždÊ)õ“ø/ñSU¦jñ–®e /ϸ— é;C,@×寏àeƒÜn0ù‹Ü‘ü|q×í ¦õÂÙ1Ò‡Yotßœ  ×²Ù¬<¦( ®2çì®Ö³þ²÷ÏA™¶Ý>/é.µ‹…[�ÄåyO½Nÿ ø÷ð•!t­“O?´Ùí& q€&pª‘À@¼‡LP²¤  ß•¬-œÄA¹Ý§ ¬Ê©£�v¿ž»è�ù°_VBo¡eϵžç®ã<×PÛ–ˆ õ,ÏæŸW§Ï3ª?Å^ì¤ßÖIɃ;N‹*íÚ°ÌÊÁðwùzê’/-È'JS/ô‹òZXd°þm·ûkf»½ñè7š…¬WmC¹!Ä`4/¸†Ò›ÝaV¡àe /{cò¯€4×Ȱ`�R¬2f�e¡¾°þ]¥cU†•'°�$ˆâ¿lñØ›úОÚ;´,©·à ǹÉmÙív:k­öGø}šEª0ü¶üU Zbšîêªd{:ç¬ëU4°ä÷ŠóçåBJ¼B <+?Ž'{ÝÞç‚Ù’YkЩãŸõš[Åßš‹�šÓÍçÚVïªØ ¶î³áÿÜvðªxU—Ëg¦„Àí—^w:Øßg³ªc�Ð,¤ÀÌ ‰/ÆDø—¬øBÞe5—œºžm ]¯aCª#  X ÐÓ´JñXÉèÉà VMoB7es®3f V_h§Óê›&·÷qÑO¤I‹2k*ÎV¶’‹Ö¿k³�»ñPäŸ+ ¶Ð¹ô'V6uèóÁÝ ‹“ Øê—¶jÏ!÷ÇÐÞlÖfÃìïDjSìÊGÓÐN¦Ñ:ïÑÌÙ6¦ÐºóÑLèP›Ìs#³”ÙÃL £äî„ût_n-b¡™ âJ’­H­Q,šUJö´ú³HVÓ©~VBx2ê''þˆ\R£s)‡ô\!©�K-û?ž}÷_í_ºþó«k†ùq=ÿßÚ™·[íNµ²õŸ/^Ö­�öf»½Ò!ñá‹ì¸jbé½T%E·ìöÉ»€}ð&Ç†ä¨ _ÀÛªÂp³ºZ!!z´Ùˆcµz ’Õ"Ÿ tâðﶃòŽœ<î¡ð [Žç>hP¢õXCëñÿ£µ ¶kþ¯ ðSnInÉQfBî¤ üúLF�2¹JþÜšup‘lZÏžÝig%ìK ëÞ[ô$˜ýz¢/Àam¤ë.o<• ÝÛA÷¦Ù½3¹Á1(’‡Àlо¶Jù*YA!C†:e•†Í„™E ¦_>~¤‘ÿø‘D/KQ^a— Ãå¹Ò‰ŒI,P5~¶d¶j´EvÊfõa5SöV4ËjÝ�OR¦ô)7Läc"E.Àÿ8L³16!¼‚@DLÐVr«âaÕ“àg€}pÓͦÝ)€`Ú[À•ÏC K±®)Viü©O]’ Tê@€ŒºýÁ~±W}l¯�M°©V8ðeQTW ‹0,Â|#Œˆ0"Æ1ÆÆclŒÕŒ$ÆZ'’ H‚ ‚$’ HB ˜UŠp)Â¥—RX Õ�þ@µ„îÒtÄ ¤!Òß*æ¹vÞÙ¿ð·Æ€eœÅm¶{G¯¯:¡LkÜ1ÍjñÉÞ%Ùü]]ÀÊ;œâŸéÑã—‘«ú�‡§4CÝÆ½+�Ç8Bø»ÚeSˆ`ѵiú‡vjÛ›b¯!ÒÍ acGbRæ{Ä–$Ï©ÃmQNva7VÙ¸ÁSê�â&sØåýV̯¦Hó;�B¤^vŽû×Ûèãõò��â©ÈÝý£ï¯Þ°“‘ÀÏJŠ“–Û;»¸øjFQDåÞ¢¿«£·æ"ˆƒ0C 쬛½Òm”7ÓÉÊ�Á�K�1¼·‹›È¦¸Íwõ+ü}È'™ç­wï¯�OšÜÜ”ðPfÓ Vqq]Ø‹æ†Ã÷×M»NÑâàŠºêâ £ïôÛè¬ìõ·CÏö¹c´÷¬PvOƒ÷6»ü/osÓ®)†{t´Œ}µ§l£›~ÑK�/1+KÏ‚>OìÃóbÖòösÒ^º[ÌεA…O°[ÞG] {ïð¤‰Ge:K1G'ÍëB¨/ðn¨]e-",»Žs;ã6Zh. Fœ5N·!mÎO ™m—�ýP»Œ)ë-ïFê§åÍG´SÏ›mæâƒ�Q×e^òv ê±+„+µbË·¢¬»«̬÷BøÉÙêO­×†°ÐXëÂ.<£Úè¹ëÖÐŽSÅWØØ°•væV™»øâðÛM\Ün±Á[-E—­•]G»ô tö" êÅq«‡…8( úŽãoåÙFE~ ëhÈK [ß¹�g(yÑ$j¶fz aÔ-à™��Œ‡‚XA<Œ…È­_†„;v-t“ñˆÛ}½ðGsB@ˆ9ÿ[±nqDVW‹¨xð¬æ°i9,ÙÔä`¬Ô…öºi­®R Ãb©¨~YÊŽeV"æHi¥d.fßÎv>z7†ðýº»àaQ‰xO™\Hg2áL¹›BáðKÆ ™#ò« ìl uÀ!Î@~Cìk ;8ÖðS�ŽLxÏjÌÒú�ÈìeHÝÕÜ4å@ùhy]L$½kÍчô$!jÆ\t<¡™¨f!!™Y¢Qƒ—u›¤Å% ô t´8”0XÃé8v¢@/&^>•º ÎÓ,œþ<$ƒñ‚››ÔÎ\®MK¶- “ŸÐéM²1?úµ‘õ/îo }¬ÎÆ_?l‰lvZ`ú•·¨ÿÀØ •Y¯¥k~!f9¦�tE.@ WjžoÖ!é:âNñNhu97ƒJ06 ÖgÜ?1®À—Û`ã$_òØÓR“Š6Oúf¿ÌÆû€¸ó:%øÕïF¿5ë¨)4˜¦ô€U }å>ÕÕ”q¬¬€©cÅ–@"ßÄ‘,6á35áAX&œÚÃΚá­ŸG&ßI:5C)J�6$zÝz·æTiÚt‰ô¥X|Ì¥’¡lú]Cxt…5=ížjBzB‰ ïŸ C�–à ¡8# š¡Óxä5†xó•CÝçZ™©9�Y7g÷ÙôóðGĦ-ÜöÓ’ »ªbA&ùÒóå|¼„>hU.+Våž·ð4à9€§ Ï{xöá9ƒgžwðlÃs Ï+x®á¹€ç{xÞÀsÏ <;ðÃËV ds©”yxuêZþ’ÔíR‡&m,rv½}<(Œ‰bQ’˜—÷­°œË‡(!ýÕ\þÿØ{®¶qeÿ d[n\ˆ�oÓ� _…m¡¼Ý톔gòyMâlâÐr!ÿýÍŒ$KräØÒ=çž›s0ÖHëc4�F#‡ÏòN6>ÍgñWÅ<ÏÄÈ_”Âjвç¢B0�дšÖÐðÂ11ÁÉ6…`ÊpX¤HKî{”:Hœ«‹û<ó\}ýã$ºØˆ”xŠÖª”ˆËáøÌEœ+€.©!—šËÊÓz ®[|ÈíÐ�cCvŸÑ·|Hòa{̇:[ög|èþ·÷'² f›Šz‰.RrÆ7,³Yšð”V»¿�i-Í{]6»¦ÓxT$­ÍCì�¹öçý])e’Ý•’m衊 ò0-ˆ„ð…tMWªØ€-Í× oCc˜qÂf‘FØ´*5° ¥4R f ÛÉQŠY¤Kžw¦XÐÐÆˆ"Ì&¢U–M½ ûí2–5Í‚¬;ö×@<»:Ý.‹7•úA–ÍX$Ypå¸Q•1¿:æzó)º—ùj¥¢‰îé`ÕÑv’ÖIÿÇõ�6–ëÊ<ž³bÚ:™Ã�1?É «wï<\áÂ:;ey@±ö±ó¥ý?Ì–ö/UHÙ'^ª˜²O½T)eŸy©rÊþèÁŠoÅKãÀ”í *EèÌvòM¨yO®ÓVY]üj—jaÃo‚<‰[yB¢ñQ¢i`D“qá~õ®îÑÞð–G»ÃÛíïx´C¼ëÑñ¾G»ÄX…Õ![¦âg+Trܘ†¢ã2”ÝqS³J6xŸ"žUš«!ÎH4œ[›yT¶PÙmÙ-¦6l©jÃ_ùOÔy¢QlZ2PjjC£¯…Z&þ41ò§¨›ÚÐÌ# §‘ªòáRõŽ©ù•êŒXE˜:ÀA6¨"4¾Îy¥½ZD¶:Slqš; m]€†.A+Wì=:ô�ç ±�’}à9û7Ïuì·ž Ÿ‡VwÊ@8nÖ~ï9´~H§Í_†¶z8õœ<�Sš ùÝs]ûÏ-ØŸ<7oÿé¹9äoÛñ`­v âÆµZÇ먎]ó»P¿k¤�©Õ­Nh2U&¹R›áš5CÖùW«Ž}E«û.¢›Aµ»³+übaµ ‹|‹Æ¦SÀÁÉ7»ægÚ¤E³”ù‹| äÜÔ²¸ÔÑ0-ŠÕ€QîAÒŠ4lCMÞjòŽÃ¢+óÑBÞjòÎ��4UýmVxÏͶácÔß3©™qœ¬ƒ»(Ž]´s‚eì²�·Ý&Y;²óItÍ(“Ȱة¯|xÙ˜c½b £Š 8«ªØæÛ‘1¥²¬ì’h ?‰áFë¬rl�uVItV�¯8ŽS¨¤Ìª“2r Më¦ØNH¨(V8Y”-‘œÛÉé6 Ú·â™q=¢o¨ Å÷a�ÓæÃ•%å‡O”ëeLbÍå¾ë5}sKé6˜… r¶ ¤•‡7˜“šŠ -Tg#˜Ž•ŒªH�(TYÚ1àjÏ¡^À +`´‘(eUÁþ•¿YÎÖÒ=m÷ K¦ZyÝß,²X×�Å)6Ïc�Xlžb]›�źÛÓxÂ٤櫓šÏ'µ¾Â zÚ˜÷%o÷¿·º……¥=�u*Ìlmuз¡{ZZ÷´Y÷L^³HO�ƒoÂê2{¼ùªB@±ÇÚ‚%J¦õ’1‚yî0‹ŒâtåhtE4eiÎ�²‚ýRÜŠÖ•?ÊÉŸååO€ ò'@Eù ’ü PYþ¨"”•?™t (šV™l®jT;½d¶žé ãØÑî+hœL ·–�Å8ÙW¨J£3EUÜŒ�m5FX*bi¢nÁdu=ð¬×€N(îŒHzP”ž(Š›éÉ݉¤âTŠC¦$l!Äw»ã­ èh?Cw›{ÜÜéæ~7w½¹÷Í`¦Aó}îGÄ�qm¼}]6JÖöqÿQù肇¨Ÿ)Á õ7Ú›ÐSíLçXì{ø™6 L•¸qôÒOªÆIêUƒÎk·Â�ƒã‘Ý)ª’I_ ‰*–LEŒJUj%aÉFs%™JÆyÄ|á4f̱$Ë86.Î ûsÎŒ‘Bv³RËš¦I/L˜<¹ÍS\'SÉêâg6?T®R/Sµ&mèÆT­IÚ¹OVL=ŸÊµ\Uvïïôrókdlú“4¶ —É ¶ \Œ1Aš Od¹X-¦Q(ö¹>·§ÈÁ¾0,âVwgá‰[1i˜Û¾Å¥amúSL�.qŠ1mæw,“ÂÍBN�BTd--ÚñÿžaPÌ*è´ôÑ™þmŽñ¨�Gus‹6‚ãL£dd%Á4¸yã[A<ó*6±²–�¶Ò"dîPí¦Þü®SdQ‚gL$Jk¨±¦È²{¨ Úš°¶²Ò{]äöS}�:_—vü°cá ½i¿ÿ©ã�ÓVt2%m©úŸ¾�JûJ4‰/© Ûƒ-¢½¹Ôî*:!Ij˜a³_S"3Ží™s)MÊi÷¥byÈ,¿²YI{=XA@‡ôhÅ`÷Ø0è©Ã gÐ\é„h¡^ÄD' ˜¨Yu•ÄD'ILÔdh6Ïuf‘ íµ<ñ²@<90é$JM®ÛœÛ\VÉÂìÕÑ~LdÕÉõ¹^È,c0b6ÛHß�´ñHß�´ñHß�´ñHß�nã;­®72çççëË¿þòâåùç•óWçésë|õ¼ŠG¥›«ëWöuõN÷M儞žnâžßÀ™Î6®åׯåןàã¾XÌ?»ë'!Uõ¤!ÊŠó'ÖVVÆ�pí:˜Ž÷‚ñÀ›íN3á„2?õþÚ©—Âw7Ÿ²µ�|œ�<{Ç¢$:´á4kš5OqF†6ã ‡]Ÿt`H¶'È`Êý~„Mæ÷Ž%]ó´0ú´›ÙX|ÇÕŠŸ­i¾Ì´LKéúý±u8_…E™`0Tc¦ù:DèfO:A_É>¯ßÚÄ#ôtR¤ÔdçKö{{(޵ܹxÚ¢÷7NØ?ºÜ‚[~^§<Ò}¯îiiVºÀ²&¯7£ã\1kg „©Qjà÷úaàÅ ±™ƒ“–Ê,ê ÌÒ N�.„D‰$À#üoäó­Ó¾0X/s�pݱEÇOÑNÒöUÌ©_bň2ý5íŒo/ZÁ` y޹̵”u?]IY1Ù{hOì�=µ¯í®}e_n\Éé¾owªWkLamÙJT�[Ý¢ ¥Àé×È+ÐA÷[´zžYk¾²¼õžeÃS|»²ç‚ˆ!C o r‘' ¦G·±ÖãÎ_ÓÞ¸sA ÎN«·‚þý=™ …k0‰úqh‘�™ÔÜ*V×t®ý–I~/ª· §ißT“ÓNÌú:Jr7ªÁÉ4[èì¦_X1!†��,e�ˆdoW3˜åKíÆ»ÑÔ_,ûku[&þ•íÓRý¾²’^@¼šå«eoU#?ôÐÊ癋µ—^ó•8˜|aÙÕõ—̳V·žÙÃóYQ¢ßZYY>`G£&mi�ÉÔ¢¹þ�ëïâ�E  Qz§3×;ß zbĈœãNß{7�‹é8ºÎ…ûM+ÒñÅôaR¨û2ÅW¹’øés¢¨×Á$Œœ{QòÿšŠN  Uձݛ°¢úÓ¯ /]¡JEãIuÜE”¬k³ BüD| =–òO¹úÈß©ª‰ì“jú°êÚô8Й¥�ª;sgÿ¹¯ :AÞ©áo‘ “ó�˜Ûá„b¹:dèaª²™çŠîÉ/£vÕã[r4ÁŽlp?ÖÚ°ó-$ËX6A°ÉøÑàuÙ$Žb¹œná\è3$Cô¥lµÄ}v¦$X£ÙÖV¼ei›ÑÀJpÖ"­7Á²õª�T0ÝÞñ".·„ï…!÷�…®'¢ð<^Ê1–r,š©B½Å †g5ÝS馧ÒMOÒMw þëWò?̯$7°Ôéã®~jexæ©U;ãn¼"¡ïP3¦ÞÚµjÂ¥�’úMBê7”Mó´ôûÌé÷?0쎖zû“9õö'Hý•\/)‰ÿLHü'¡.Ç‹²óÖœ~ç-K¯%ÞMh•]Ö*zIö̉÷ ˜÷ZdÖ/ÿ¬ ƒ'¥ü EÚ1i÷]BùßïŸ%tÒ™¡ü Å8`Å(Í £œYúw\I(¹hòàÔDï>šS¿ûhL�€ûÝ© IWOŸPÝw¦ê& ?<5$>Jhõ#Ñê[ü&0™å8!Ë1dI³ñGw¹‚=]þ´”WyæèÖTå§Fû›h;æø”}‹ŽY'…º6xX .Ú/8Nfœ`j4ü�ƉAÜ8q(Œt†7´›ñÃ{jy7Î N˜ÁÉ[×;Ià'¦¾{’0ôN�‰©®•$ ª΄uš©'ÐLýg“søª{È«›ÓñëéA¡–ú§L‡È%n¬×@{h²9$ D‡Nïl§d;•¦~Õçús$•=iƒ­3™EÃ%io�ev,ŪÆqt{at+­»ñFâõËr…\yl%Ì8çÓlÞÍáÓiÓ³»d`œÛõ„)¨nH|�@'”¸`õäG É�X—ôÔ; ©wxgfüJè5bòép–±f` „v`šEÞ&ÌÇoÿ4ÑðQBê£? ¨�¤Ž£7¼v.«]yÆ/LÔjq”ÀŽÞóO~¬kìr?�%ï˯Qc-Í=µï~H˜g>œIÖÎÐiÙNxÁ!£�3%PàIÝD%Hðɉ¸÷çg {h’Ì÷wÑéjMÌ|::_Sÿ‰IJk&k©–>ýX¿?üýäôþàc]¸"˜ó›óöúUÒ$²Ú™1oCÌuKPmì<°4uÆ“[ù&�ÚÀ£&¡É»,‡ÿ>¯P§<³É+ýÍð>oc{�~0Íg }qV7 €7[ÆÔo¶Ò²½ò³%TÌò;�é¶Ü"Ý”Nͽ$Ú7�~³C®zá}¿N÷¹Z–p7«�…³„awfvõ„ê×�ÂûVÂ0ÛzÏC-qê-@�žgTçëԺأ&à1Z]·¸×ö;>kgˆýiYê°ýÞÔáÛ •Øþ`&Tç#T§ñ›ýÆþhïâW3 çÍ¢�¢^ —K¼Úæ¹oúéNûýß{íðZÎãµk¿ßÕ€�×¢Ú>¤ss¹J·>‡é\©’Â…‚Eç™-8�×ÑJqY9å:ÜÄ‹Ò2‹LêìîXî# &¶äâgÕ=—sù �ø’µ¦ÝNÜ�ŠU¹i¬½Z­}~q7KÃàR…§Ázµ1T¬r²ä©7œf1C×ÔÐ"Üß§®‚àªß‰Gp“AÊp1î ‚›ÎÅdzé·Ûãέ�ë�,~Cº*GB;–©„zryvf �€´ñZ¬ºbq˜4YV^DW Þß ÔÈÒ0k•…¦ÁVY`ÐÞ@¯\ÈÚBÁ ¾5¥M<Ì�#ÎGí±YåWx¬õZý`Ú~\£<¼†ûƒª•µŸTÖ`öƒà «ësYÿÈãJÞJ*ù­ó%fKÈ‘VâLÊÚ �"‹×Ú(Rü Ê‡ Hç� ]VþàÚ±‚<¢V“¹*ÁbĈ“=Ž˜yAÍ,8žÖRìmmž˜ =î°6R,1%;5èÐ :"j¤®ƒ�ø•¢I\v”@ËW}5¬õbáá¿õpx­‡§_´ð@­ùã8`\ÆS\Ńo1À¨„ñ,7C V¡­æm«…ïL”@WÅx­–¹×V*¶žúÑžÚüÿ7R_TÔý%0¸U#µ¡G*¶‰Ú“+5€õé÷n:¬ÃéMô ”WÖ;QˆÚ™Bí(75 {›Š·n”‹*IoC$›ÁdÈ¿ÀÇ#B 2‰Ñ]àt§„‰î”0Ñ� ô«‰˜Æ—ñWqÀ¨„ñDV@-a[ÍKd%Ô‚"ÐU1^«E$²Š*¶žúÑžÚ DV"ðEEMd%DV"0RÛq¤b#²ŠWjë3ò'~9«i«­/uäSdü…¿râ!™ˆŒ½R£°Wª+ŲÝFÈ›ö¾('1[¼O}ùþåßò]|Œ—·ôŽ›Ò©­lÊ“üµŽ—JÍ5o©\~^ý…4 Ò—NòÈ‹²}Ò2ô_‡&­?…¯�H@gUн+W‘ˆ�°„ }îJLBÚB?¢?c=–Ë•*ÏßñÞ‘NZõ^õ Ï >¶ð±��]:{ð(í¥<™N€6ŒZ*t›®\l.Mí1T¨äJù§]lþÃÆråù×¹f:ç„c«õÏáxÚQ΋“AÌQÞ�ø¹ëƒÄ­$ÁÓ+ùSt)ùâó¶ÔPô#²F»Üf>U;; 'üŒ¥M½Ö€W ¸™Š!Ø#ðz \ØÞ`B…¯ ü¿ÔŒºòstÛdÎJ]ò#:DuÆ®õŠtêã 3�ìÆPuŠÇÊBÕ©1$ã²Õ�_üS«xI±¯\i¼–ôÌQz “|††Ò-QB!³âVc¥�îò™ MÄCqÁŸûjÎ÷ìF¸ZímVj=ÅhêñžŒ¾{'’�î`™ò,4xÀÝ€ Å)äPÜŸš-c\E?ˆw;1‡»òªV‘±¼êá?¡m ´RSûÚeôŽ×°¬€Ù€ ˜#`xIgCÀ\CO Ë ˜]hBe2KÉr h¤ÂàŽ€”¯TÈg‡´l xNÀ*° À7Ñê%¹~J�eÎÙxåhžJW†wæ?»H^]ú"z%. Y }1æ{‘¾ž¥Z#Fæ.kž¥ú1/„9Â^„|µf‰0 ;–¾ÞlÚº«CN iy¿‡&»á¿øèΛlýÆÿ²ÜlD4|¢ÀftB”.š›�ð‡ì‡1÷�N0t,ãyrXÂg:í%‰�»_ºœ†KãN«Ó»!¨¼”‚��N±̼lΞÿ»ß˜ÇìéñÂd©’À£I]á4s»ŠÕïî*þÈc<Ò¿æœ#oÎRÉu7úG@ª¹¿¦{tº&æ%(+ü3:Oh±|Ö-ý¸YO|€úŽƒ3kÁ cšБcgf=霙›Íþ3õ!_8ÒSSø”âÓVÉóñqž/¼XD^VVX¡ Qd#Û¬©ïf¶ù¼Ž’Èir¿Ò>Ï4…ƒ’·Éáÿ³÷$Úm"Ëþ ×9sÇšH ´ú̼+y‹;±�8Ž<É›ƒX$l2 [²nþýU7�h AHq2ã<Æg”v/UÕµuu Êè¢@¿­/Ô_Ô[_{íöÓ ›U/F ÿÜ\pʇé4 Ý*61½†ð}Ï€€TÿØ€ÄV{Šj¤þ4¯lZOæëK‹àBT2g™H¸F²8:ÿ£Q‘sgy^ùd}ÙêGüÿäpþýïÑÕ,þVìϾâGóÖ÷«ÍÆ÷/®°òÆÉaÿ/ý’êò)©õ(T»Ö–R9bUU jÑílÃ�ù5(Ólm×k‚$¢0Òª¢Êrø ÀZ½�*<;¸O.m—¶ üµº_ÊéO8QÔò¯T¤ÜqlÛ[T*ª8ª †Å6m§óB×õÒ‡kýýªª’~Õ“Ng8��Áè§Z+‘aä[«iÔ S«Œ4 R8›è‡5%JB ý�i¨nѼ‚%9²Í<ý¤OŒ' 2ÙÕLdƒJK– 1,—B¢ê*Ý�9�4q QÃ#c82á�Ðnêb»NM2å�f£µv»Uk,‡~j{šÖÒ"CÑ µeMÖ¨ar]425)‚\©ÕÈ�2’­¡†g+U]Tùè0¢>`‹²E·iŒ-]Ö£cQéÖ5I£p#D©ü@’2=­ Æ8VoŠƒ€0Uvn— ihª^£BªxU„fd,BU�¯5j*=ªÿ‹†Öl´z�¡ü¢ 6Ķ a Š©óVP•a#×”·E.¥¿”¥æ/åªPZ±r®˜‘`/P‡[v­]ëµ8üˆÕà¹ÌmÀý¹ Sëɹ4öø|)1�¡Ü«EõF€ÏŒˆ˜67 M”Zå–Pn&v—0¿øt)1=�âÌEŠõV]�ÚM�›©½¹©IåªXbÌí6Î31.Ú–WJ#�™ph³]Z™¥µ,�K�$¶�;"`I::ˆ? IÐq<“Ä‹ìÓO²®80SKßêØ+“¬dA(ϼâüI£"raf¯dQ¡Û,~øéÛLJ¨Qœ’ÝM%%–1*­ëb‘4H¶f“Y›òsÙ›Š'ÖØˆ€•ÙˆPV|5–e:ŽÆ‚ªá/ï°±+g4qCÏääņ¡T9m so€'…k^4ß^"s—ØÉ0¥çîð,ÏðàR‡¯e~.«ÉóñI‘k¾�eC]Îõ� Ãõæ¦æ3*¸c†gHlý¦±Xg‰Dàò¶�•Œj~##GGwàÂê�ö¦£!~7Ä©x‘3˰ÄeÀ)¶fV:pœí"ƒ Ÿ”xvV~(H}­‘šòúiÀõÒt_)3\®%_¥]r9V× UÚ“‡ßq¥¥LùXÊ”NáòœÈ‹ðÚ§"‘úA¬_‘gL‘B @"” ÙTù¤@%âÊ€š-¹4b}Af€M“iø]bÅUFÚ˜åàÉ÷ˆYáýÅcp”ßM2'gÒÀåø^ƒ|¥¸Š¨<_n_F{³%#‹”=d&ýßåe©0ëKÄ%¯É}L°5“âÔœ>ãÛ¼U4'süѯú˜4³ 6…fF'kæŠ|k‹+´,3¿´’èeÚ&ÑÌPš¥K+ˆNÉîdí矶:_Dcਠ±ýCn«Éy×_Û/1^È"™q÷'‹ÉãlmˆEîþÍ¥íU÷çœ`V_³YM¬bbþ{wMÈuù^e6?«ZäòI9$–q…Ouâ�r (—{BÏÆäñOY`�œ�ÖØ+IÀz.dõÒ³¬ÇF²÷�’Fx*W´Fn�õÎ*^¤$ò´*ÁzÂ''Añ¼DAéß¶Gœ^z(”_ £_´'NnÂ\§ú:ßqobÌ/½³ha¥hòÏÏ™¹a?x•“ºÌÌHD8YÉ‘5dK5EÒžïu»ó=¿m@Û í|6ó[ðÙ"mæÛ{Iþóðɯ1ÿ%|¾d´iy aí�¬½ƒÏ»ÝäånW.kÝ®F¶¬0z®ÑPh®‰Ð/âþù®¯>¢}@´ï·¯ºÝ+ÉÂ1|Žw)¤oºÝ7~ë}·û>\ð°GÁUº]% ‹A/Í�9ôÏ{ÔNºÂ&ñÚw¹¾UåAqÙí^&Q„ ‘…}4*dT/ÃM×o¡ç¶ç@ˆÃ!LðíÚn`ßÔbÒ¦±ÑfNƒ Ûdó6üc3†C’X‚ YÛI*B^Ò ­…€iÓ+h�g12¡o<¾Í¿£çö¤q‰n‡ŽÁ†JI;Tb!4¼p/RTUi¾’!ëhm ¢ iðQîBJ 0²Œx?Z·À´[âFÜ ë€Ez bÄ3S3VÀO0 ìeÏÞrÌXÃ-!HàˆÙ;¡ÒÍ·Â_ ­Ÿ´¾Ì}ÿõËØbŠ5ô!’•¦šôÖCúÈAî�ý›fñ9m4ÿ) û.„Ò Ðw/¢@¤+��îAqŃt» 'qhÕ˜ íî"öMõãEi>2mÖT-zQZ?-â€ÒÎ<2L“HWF›7qÒiöÌ�ù=Šo‘Ð4nÃoÔ“I´C‡b^68ïvÏãjB(¦©¤c«p -såÒ»%Ê©džŽX`iÇÍZL=;´À&Ëlpo8DDÆZEó:¡z¡™ÏÙÛ9B$;¡áÐñ0^ Ì©AFDGÇɵtÐM/Í Bé›1"z9à’ ]YFó•¾ „¸èÈ›Ä-ë-šƒÓ™DMaÑt/×0¹Ä¤y‚>�ã ÅRJ_ ì#˜}9Â[Bì§ú‰ïxˆ Ðì U„žJ÷“e‘ëkŽe|Ñe4‰´A®&�xÁÈÉJiÇŠa²4Û ª—Æd¢24pÚõ=²C:\Ý ïÆND Ô¥‘Àd+7q>ìÁÄJúÀK¬¤IbÜèÝ2lž¦˜$CÒ†«Ç0R|wYå7Ò[Dþa‘¿]2O΢¢~rVýäµì®¨³üdu–!âydõº?uIæÄ®I¯[To.ª7ÿs«7Ó§Z²œnQÛ™.9¼ ¯˜Ç„½•ŸŸ¡ŠºÐ?k]èoˆ`ŠÒE éØ=©(!]”�ÞèNZ”š.JM?³RÓ›æÂ‹’ÔEIê¢$uQ’º(I��è¢$õ¦~éoªœ“áߊ’ÔEIêçZP)…þçSP)u?oA¥¬P«(I½Š ¢$uQ’úÙTJ�[”¤.JR¯¼r%©‹’Ôß;ƒR”¤.JR%©‹’Ô¬kKQ’º(I�_-žM¥(Iýü2(EIêU”¢$õÊ %©l¥(I]”¤.JR¯S’ú )äqaÛ^gkëëtäZ®Ç™¿;_Ë’Tçë�m­ì•­Òï,¶¦®Æ¹žc(ÞÖŽUU·½ò¢ÛÙ†!ókiðqöïÖv½&Hb©lünU­m»T–¡¯V9”Êî“KÛ¥mc»TÚqª“©;ÚþS«jùWtçâ^x3ow"[šùѯ”Í->[¼éËñÜ¿ŒñÄv<Ùòv>[_?[þ2ò´5*H"CìêøËÈcJø½ND2á%Ÿ­ªQkðð¦~CÁ9Üöä�ËýÁ©Æ=|Ê>ß"¸‚Š~| ¹AtFè1ò2—�n+S73ÇÅÇäð£vdc¯~㌙ærºípCÓÈ&‡Ÿ•Q­VcªY4‘8Ù_–|ÏMMªÇ}b—�²ºŠlYèwOö¦.zc¨yë�„ßý�Ãé`0ç©UmzIB¸éØ"ZJø¤á¦){Z[œÌJkàð­uŒ|¨ø¥�‘¬"áM¦•¯lEo¡Ÿ�0©ëaÒtÀ$fqÞ²=C7JtöÔCjHcŠÐ@U•Ñ_øÁ`®ª8¶ëþ…‰%$&¨1¬‘æ^H$’ RZÇ63}Gü’ðŸÞ|¢ýŽÞô³¿tTÃEÜTã¾aC³ñߤ�Õ±Ñô‡Î;ü2“:zÙoþB„PšÆØð8_ãËÜ`êqð«"Ãå‚Ïž86?vahælE74SõÝ Ç…Ï·R&ÝäuçÈNˆ�*™2‰Ò\UÔ[ü‘)Ï+Èá“sÉXº¢ÝÃ\_i¢ÇÈð /ºáU#ƒÑþµ©é€"oû3}�©²iñ˜Y ¬†øí4‘ w|¡Î*™TÓ¾‘r0ë±ìô*ÑcŸÆÓâÙþolY‘íD\óÌßÄ ØhzN)~ÈǰÀ¹�ËP£µ²£ÉeîIÀaSŽ?þ‰ŒKš°Èv<ó)ÉÞ ƒl<„tgõã(ôÒ‡†2pQÌÂo…bq©'qÂH V^dëŠBPÍœ­2G•ÄÙ�H¼ÅD0›ô ;ð�¢†¼Ñג©ã!¿3 ‚aÿ…�À0r,„¢ ·åN`rò1Âó\ûÇ]šãØNRHBUä5ƪB26tŠÞqô|µE³ G=ÙÉã³òß%XšÓ¡¥ Å4hmRî"«Vm|! ¾¤Àä=a®Õ†ãžœ-«ÂŽ#‹pù¼ÕÆày?æä¸¯iXÚâ¦XðʼXêc©¯�¥µ1–V~,/lŠÆ_š�´9i<ÍÍñ4×ÀãOÚ^šOms<µuð46ÇÓXÏÆŽÀ_š�¸±+ð—æÆ³±3ð—æÆ³±;ð—fâ�È™¬h¶Úk ‰\èx ògë…¡;¨öZí­—¼YÀöƒN‰çÉ„Á ¥N%øþCÎO…—!F‹nÝÔ¿…¡¹ŽÒᦎ¹½¥ÊžÜêLrÃ5«ø1”­ë;ÊHv\Íû}êé•ÖÎ@vµ†TVùöáŰÛCs¯Û;v».n½‡æy7ã¿ÞëKáã.j �îZ×»<:rMí¶ýáäñ~?ØGCÌÁõkõ²uØ…‘‚~ï£Þ=}Èggï„�Öàµ9†ßw¨sr à”îé¡rýæjdö¯`~oÃ;¢ ý«Ñmý^>„1Úÿ€±\£�ãî°×;PíÁ§ ~½¸ô÷†@÷Í=øçpvßTïà }@ðöëÞÅXž®$DßþÃÓ1/ºûB÷¨=í_ ˆÞ a¹èX{|8x{`õî•¢ïôa:À”œ§WÚñì¦î¿ë§‡»}±7WôÓã¾¶wòþýãq¿Þ3ú‡‡ˆèÖéÄ�?ž¶oûû{³áÙ·ß›ì½ñPîéÍÞå°KཛྷݽáõUoØ?üÔ8ŸŸ7�ôó›7­ë›Þ°~ˆ@ׇƒÝÝáÞ‡O]ùõ�ô ühvk½áÕÅðZ<:å�$ØÂÔà�wk†ÒT__�ÿþ§‹ÆãëñÃcóþîUk28º4ß¼¼4e»zr3éÏúï̇k�G�ï~ºkîžž\¾>Øšâ< ׿ýøº_¾Ó¯/kçú‘s¯Î$çF¿m›'‡InõùwggöY«Ö7®N/Þ���ÇþéøÍÛ‹©Ø|;z”N�ãÓ™6­�Ü@{|2>Qï^¾nË{ê§³šp)t믤ÆH¸»n~8=à�¦3�ž]:g—gÓÃw7{—¶fMùÖèüª}¦O‡£Ù ß Ïëü áŸ›’Ü8õÞ ö•tª^Míwü™zøÒå}y¨Ýœ\º�mTònOÝ»¿¸¿{võѽ=oö?5Oß\YH·{’uü±¯]=(Bm¬¿m¾}l*M·9}<}œ>ŸõûÍóÚÉñ'MªÏE¯îðï�…ý[uròp9¹|ÿæZ½½š}ìM%ãâ�Ô�ˆý÷fox*¿t5¯«�ïí¾=xýq4;¨oŽ”SÁ¾7ôÆÿq÷¥½®"IÚå¨Z#uµë\v5š‘ÀØ,^Àx…™Ö»±1;xiõüö¼lãåÞªî參å™A’KÄ‘‘1§åevfÚêöSw©².êÆöº1 ۮР#µ$$·SktÄ82r¦boÚLÛm7NK�yÖƒY ]ë`’ÉDI¤cíbAãPr7ZDÀǽÑ–‡b@±“­Cvƒ)3 l|ƒïõ´#Ó% 0€Â_ÒNKí ¶çÚp4à æŒÖVÄ…5T‡C¥GNÇbÍ–Ö™Œ4´' ¤Ün�aQÓˆÕÒÉG³…Ñ”7ID'»!Èï÷7“Á†#¢¿ÝIi‡�w¨ÜâZ?3;“±骖 �z|G¶Øõ„U”­7˜jk`‹Lrb&òAvœ!•jX3€ÅžY»ÀHê{ÝýN¥ýåÀÎ%ÁÕ[ŒÊ®³5M‰©?ïFi#vGlÇP¦Z{Åûݼç,v<Ë4- VÑ~ˉ['�ðáŠë #™îöà¦Þ^ô½}´q2t¶l°euà9"­û™,ç‡UÛ›s{Ê7“Z˾À9J+ÏqIamm?+YcTô9Ãylˆs—sÎÔÛÁˤNZ«UÞ™m¯|?�æÜt“pq鉾•ÖÓLž¢Ñ”Ì"|&ÐAGŸÆZ¾Bâ‰èîÆ>bxIvE™d¢¸7Vò`�Œ'«<ïîØA¯Ã]QCb»3S4Ir· Ñè’…-m­ñmwžÌð!»iÅ£æ’õ=È›-µ­á m"-!âÛm¹;±%oåN¦ÉhFÁ#EMX|Ôù†L­Ò&ÍT€S¶Ó¨¹N‹a�/òdÏ÷Tc¬ö÷<ØÝMÝæ|˜ð*„ÚQoëC@³ZèŒh<Ó•Df)qw8ÝÏ&ÃÑ"\w�ΜZ ˆè£ÌÜhH’ìôˆ$ƒ¹¼H5*@v £ÆÊTÕ>a¬ ܇¡A°¬ß�·{^ÎôŽæƒýb9…{i0jeøÊAÌ<[à¶Ý\Z^Ž‚ ¦,AS‰G±cM³Ð› ¡Î¶DÁÕyžÝézÈxfºt¹e0—Éi¶æ@ŽrÃí'Ü¢3ûMÀL‡]À:M⣀�â}ÇCU¦³[ªE�Ö<�1 Ìh‹ÁÀk�Ñ-é l8i¢c:‡ìDŠÖ‚eÊ9Æ` ¹+%‹{@Nöî¼5Æ[M`½°-N_ùºlLŒyöŸZë1»uØNÏ͉NOàûA3Ž&ò~¯„XJÉ®’`±öT}–õÖÉÞL‚,&­Ží°Õ“¹M,s¨ß&‰5Íñ~ÉÓS±Ã¬;I: \‚]hÑÚñCEÕºƒj²ClÄ€4,‹\°H*è²ô~À £m'\Êêžð8£qŠ, fò��³¸hw‡Ó[3Š1�„­î13î¶�¹´�A¿`ý“I40_ˆó!�¸1͆|ê4Õi­†²v�]Sí› ÈCE�WmÈ“N§4²7gªK\ÇîasËž©ÑçË Ä‰¶L`½5ô;eÙpÑ›ôÙ¤ôQŸæVÃ=Ê 9äT7õbrÀ�äFsá¥ÖÕ#OäÚ€ì yxŒBpG- šÝ0J²Clæ%sr¹ÛqL@$ÅhÀÒ†‹7fH˜š¢ I1ßY6í$_Cm¶md²Nôó)‘{Ú>Õ§¹Ýð8ßpTD@S¶>ÒVU{¹ †b˜z¡G¬q¨!í=ÀûM¬¿Óµbt-ž­Û"#Ýî¸'-!DÉm›Çû«ýXñ ¹¡óchôÖó¸×œµñÙÂî)<(Ö³>÷+E,à&“áñÎïŠ�ó{|n<'h– ^èNÙ]°Q{Èãî ÇZ[Z¨™E`LÃ¥:¨cåƒævaö²åµYz›™‰LS´ç 1&<2ö ƒ‹v«ßìÙC _Ûá£ê½Hyg8úâDOÊ €–ã7Õô.6At³O3­#P³�ž‘f±¸b I„ö‡æ¼±X˜2¥BóQ7”‡íE6ôGø~àmÓa°l­æûÆ®ãA×4T²¡øXZ@émlçhÑkÁµGó)º»ÓifµË¥ÛE ±K ƒKX¸=foJ¨�ÆtóݤT™óíÑf�CÍ$XnXiŸ²ó¼…4”f°ÛƒsÆž±”âOq EP7 MazíÔs²Õv%�ŠÚÚ¯Æ ­`G8Ø„£‚rVb%=¿3\`KË„ÍÜòfãªt´Uõ†ÞÔ`Ó2)4¥yº2²®Ñ�€Än ˆá;�*»a`qÂhÙñó@ˆÀžØj›^ºì ´N’&õ§]fCZ, ‰lypxb!>D·­á:¤4¤:5ì,�Po¶‡"Ĥ[¦«S�Hwq*³fçs[A”qlÍW8`I[AØRݦ²™ó¸ëĸ5Y.#·˜ÒŒEF½ˆtf‹Q›sÙq#àÄDQáeOÀ�5Â÷’�“í!k8Ê×…O¢žAÊ€A= “F0›9]§Í'¶3w5¸á÷½œÀv“qÓŒ«Ð÷ÍyŸžÂÖB¶ZóY£y:ðý9ÀËš`öÚŠÅ»„¼GCŠð�ÒÝæN›îw²é$Vi×ö 8ÕR”nýÔBȾSjè K'¦áŠ‚)bYo´I– Ü_¶À µ�l•ñª3iD¨9_:� M"(Ý… ke“Ž/=&ÎÇâ~‚$xóÅ|*î�Z»Š€_îšâr‹Ø ”%ï¨a6±8q–¶ÊÌžî«ûÌnSÜTÜv@SSpZ ßå*j ¯�ºÂfÞÛì$|áRL`VÀûÝn+¬µîdÊ|/žÙÜ7d{ÜÀ³1Ûõ2w<0›­‘ÌXÑ ;Ó„Íí#ñ¥µÏ˜uÈLÓ]®'Ðp’tg9­²<š¡àJC¶C·6"©7MùF†{bØ+d¥Š´#˜“'ý8EÑxj–Ô͹¸nã#�Åegk÷F@Œˆ+Ÿ‡.î’Û}ˆ­½8ŒŒ]1götÎ4öàÐGp'茿¹ðƒ4ëE–å Þ÷h‹it$DåâNc_H;ÑDZ°�4�uuùRº…§äÆ%‘ö�U¨i†30YÔŸƒ(ul;•„Y"SÃQÛoî#XŸ-k�ö` ™ÎN\¯¥�Né-�ð˜`…¬E¦(n šÕIpÁÁt•Œ:�Ýf›Ko©[Íï’,ew Ç®mÎ].Hd öç�0ç]@ì5I�W²„TÆÀ–· ¤í×¶™1T;_S*$41 7¢: ™2Ê&Š)©‡"lg=áÚL‡rŠÎc6ƒ°D‹c&cŠ!/Ó^’Éê*Ýç«g ³!Ï¥T#|T¨bˆ4ÁG+¤�n<£HĤêv8‰�ÓÍá<çø°1°¡L£œÔoÌ[̶ A‚+ÃS΄T˜U'zŠzƒ1øÛ…³�÷[AâÓ-•JíéVoÌ…¦ˆ–L¸=ô(Lq"u 5¬‹E=Å…$P Ök6“¶KÞš1A‡I¡3š¶Ú±5áu²–ù]·ßÜÐãNxÄrq¹ƒö`eº­m�³Ó5fòƘ·V3Þ‡<�hìÚ69 ¸†DF”(8"ÙVÄfb[Ú3üleX&£1ä¤ý¾Ð“Tµ×H¤¢�°ÄÔ‡ë}†-EÙâ¹HÍŒ|‘ôhÂÂL`€�Àñ+e¥,LvË4ÆMÕš¼Ï)9k9šŸmùíZdÉ u!ÖîmÑ~3G&ׇp™™w Jàú¶Z¨'/f¡·�$ ×m4âßX+»¦—Þ€“H×q€ÄVBªÌ¸ùBƒàùPÌuƒU9�G]Þos»!M²ŸÜvOUv1™2™"5 s•ÍÃF[‚$MÓÉÜ¡dSôf¸ÍoA]"·€ºL r�®5“<·Iy”ÎöJ²�s‚¦Ó «ÒŠ gݾ¾ušì&½G ºÊ†-Ó™Êîrfåš#ŽD;-‘éÊi�³ €ÛM/ë4“Éh;ñÇÀé&û¬é¯&2-Ùk ÷ ùB�±'�†Fˆj»‰í9ÚàPlŠæŒ�l-iÖÙÊÌzÒg¼}LôW¤¥›u§…Í®&bî5ÅÅ^/ �¸¡É.¹˜ó;X±º®c1-¾èްàB[9S`6Ü�v\,×~LŽ#(çYÁ˜ôÇbÔǗƾ[ô.Έü-À°ÚÓ�«S i£t)�Ó„/Ðhj Ì0‚¤€{@ ÓÙj»tSó¥D¦3@ä2´›ŒööÊmÀðAÙÆjì÷ŒL„¦7ÒlM€gÂÖó7‹© �õÜáãY;j‹Ë�ùÝ¥dÒ‘½ãbd´Ô}5î³±-¡°a$ZÅŒ¡��´(´; 4«^ì©ã®ÉÆ }#[eÕųúÊa^\´Rfm*eWvyJ]õûŒS©Ï¶)JV˜~ß§6}—j¥CŠ^+”Zš}9×PàÒ´J-:† µÅP4µ¦˜ÎÉö½£$”î;� 5Gé˜âj�¶0ªRð�Ù8²H³|ÛrF -)�šF´tv”²¦}‡Í)¦Š)—oõ†|-mÓU©hÖʇ=�ÊŽöEvà¨,íLØA ®i�¢Úk^TZCGc˜jPJu®S¶×V™�–T‡ŸJ@+�&TäÍõ•ÒåäñXÚв C#Cú NÜQKÈ…4ynI«ÑÜV©†¬!b-[-ÕÇð¥�0‚A<™[Œ“2H¡fxÁé1Ml§‡}ѱj¶!Ìa֖ȱîö¦ø¦×@–”¿4ÑxšDÒ|ÃÈ%Ð5w+À�|Nð)À¶ç�¶h-ší Z4¥Y»PT°ÁÐ À ÙGeµ™ ·°Älꡦ70½Ñ“-Ì�Ù‰Òe4õ¶. £h+xÆ>[ƽe+JaËWèiîïÖ+Eˆx.1Ö²lº�÷Ê™„Ýaƒ“õ!,Qi5ÚL÷YnMrKñ8Y4g]|ÛØPèîW²î„Yiœ.»a¹%FËîæðd-à*Ú{©ì)�“œ )–ÒÉüÑj#«$kƒ¦[ƒ …�ïúÌ„ß0ýµ‚èÑ,[´HöBd71äñf-é‚v�ñ)Ôµñx4ꊉ@îZ‚%vÃÍ92Ïp,Ë·CA‡#ŸeÅVÛ/©ÐRP'žgývŠû-‰ÞïÝ–A¢›Qn<*í¥–ºœ�Ç߉s�I4I˜ëš‚ŽšFjc2ZÆÜŸ�]xÎÛ¸«¬ö†ôh­3 5YS'‹h4˜khßÚv»‡â vÌÕ”Y8]aá‚‚æ‡p¬ ò¸PìºàŽð¶èL†œ^°Øöx7Ôû)§ÏD€ëEZ*4Êœk¢ƒRÚÄØ/$µæ`[Sž­sAj3h§Çl…S˜ñ®­v æjêÙMXD¤ŽÞÞ÷„„°ün^‡Ý˜ì6x[!v8J'¼—›ÿú¯_~-<×Zú×_Êͯ_n}O;yåNÚï¿ëVQ¶n»íz·í·�ËÁ1·…÷îP7þ8P¥Ø!�n՟鑟Óá~®Ånñš«w~+U‡ÏÃÃØ*]¡ËD§A˜ºë¢i=Ëqu×sÓÝW±Šcôůøà$§­Ãdéâ@ȉµ]bhÞ©Ø))ëm©¢­®æ¹Zb™ç-ͺ^/Ã_>ÓàÓuŠï²®Çàœ€þã—ÿý_¡_Þ!eZ\¾ÛN ~IìiuäEõ86'ÀgdÐ7È<%€=' [ž÷´~óEýÒÕí)ü9Có ëyˆ<«À˜áSä+Aò|6h/áîi}ýUýÌOãç$Œç$ŽqiO)˜/(/–„õ¼~ifZß~^¿ŒŽ~V_Ô: Üae=í~è?(&¡ý´þ †P�§ëzÁ Ö/˜#ô‚”BêiýŒ ʬä bžÑxÁ bËŽ­dñ”Ä f[eà§ë7=ô‚7T(>%ó‚C–U?ƒ‚绾ö”ãA/¸Å‰ÖS/¸EXõ´þ ^qŒñyJá·H¬´'yJãÇHJ·ê'õá#ÉÂWó~Á6²Ð ´§P~Á9Ê3\žöü‚uä®U@ ëå—¼à %™§õë8È¡ð·±Èˆî³Ò�Ø5?»{�ÁHÀßþvÀ’Á!N±(d•ºkçì]÷ñqsÂÇ麓Ÿ]r‹øQÌ[Û¼Ò)î›g%ÉïtÐJµdõ1kÓŸ(—…�oý äŒ-¯@À¹uçkWhwÁÐÅŸH¸}Ïp Ö‰;ü�¿˜�q ÒX@_x ½‹ì­ ÄÁã¿:prC�­Û¸¶Ê+ϧÔæ}|+cLÍ`ãý*@°ãœ+×…!jåuøÚSÈõ)ÞºŒ¼þ‹a•Wåéùè¼�³>s(øåQ‚à­t8N³ê‰š ^^wäNž‡�¦ß>îgq%âé*)Îù¤ïGÑvå x¶Rôï—�X[~öxþ�fêW\ìá@�C?O'*}œþ÷ Fýíp85\û‚­Îü“ñÙ[÷f=çúù‘sdé“ùïbÎEÑ\º«ÆËܬšó·¢fqY÷ëë‚mž1¸êqŽÇCP�«ú_~:pîbøzr9Cî8é/ŽÖøÿz³þž÷Aå ¢CØ}ýê{ŸÆñໟhÈu¤! >bïQ‰Ï~Þ5¬à…c„Òoï¼ìõ’ì7Í(ebYå%ÝJÙ7[R­Qá253ö~ía¿}@8ôÛIÖto›ÓS¿Lçsá�çiã·,ä¡´ªãz°�[ä°"מú.‹õzežðP¨]EDüð:þâ;çèóx¨n-Üt뵄NþújÇ5süX­ðJ�óüôˆ<’‡ç´V�^ýîL¼§øí:ÃÀ9¦ÔJnT°Ë{\WCä ?Äš£:.©  «À‰òºöËa Unt›ú Õ·é8ºÄkdT_ý4§j€ô1YJ5óÖxc×Iÿ¯¬÷óèKnÛqÌ `xŸ‡ì Çãæ-¸Úálj^�â£dÕf¸~¡ÿ€Æ‡ü¥ÐØu}À³.©õ…AŸ'+à85½{µÅ šÖ7ƒo f•×�1§{áÉ}ÁF¼¼3ó¾9 �‰ÞµáŠäaÄkú¬&`øÂ}ËSñ&.€ñù ¿•Õ}…m'•=¡S]t¿Ã‘v‡1(~Ïçþ¸`·e–¤®½û¼ð�C¡$Õ⻉qH1óí˜hæ!°>穹Öå*zœñ+à|úŒÃÚ«ÔÐ5 vךS@ÒC¯ßO¹�>�rì‹�ùkœxüVÈ ¢œŒÅÓ(¯_k¨xnIºjMÉAϽ:A¹ÿ8ÿzÖWécáu¥‡Ü3�CKŸ“¾ÂZZšÆ®ž• =©¦«¨Ö0¯áV4/ɄީЮÞqý̼W?‘*y´#ù`3Ic+5W.ë:ÛY«Ý^lB5‚êæ{~·Ýø|ÊgñmO ›ÕÂu€ÁÉ·ço}ZøÉ[Ïöüá¸�åÂ…‘òú.\KuqÒ-¬ÙÄJ™/>ðãu~Õ{*Þã:U•®ª�ØòÔ§õFÀö¦[![…ÓØý¨üÏQ)þ{�Eî�ƒTK-üøG™ö©t‚ŠÝ“í²²ã~,õW4-ç×{ÌWG"Þ£Y”{‡¨|/ÅÏõä€IR³ªìûÌ×Jp_×d¶… ¥1Úœ‘Ò�Åæ$YêôÊ÷ZUº+ji•×U£ëš¥{ECž· <üû³ÚU¡ö¬]ÇB»Ðú4ÜØ8ÄëÕƒ>Ò&ê+_3[ø¡‚ù¼öY=­ƒ·5¨UG�êŒBÐÜv¹ñ@¡º¥§­…7záª5WZóçû�QGäÔ%Ÿ/úä°.¯êÿy+óÑ;ÓûÕ;�óñ‰rá¾¢ cºnÜ3´ÐË’ïnø€¡ÝˆFwm]ã)ˆ¨ÂŸG&Y=&þ¼ŒÆAÑ®$Úº•‹—÷Ø^ ¥OÅámÑ'†Í¯²W3 zhü«pÎSV‡"Ož+Çò§…s1V]úë,c¯:‚xÔW4k>ð¦½uÅ+]÷Œøµ…ªù¨GêꜹÍ}Þ´B\j—áy…™›7·Â„ÌšŠ¨· MÀªÉåö‡§â5åW³±®ô“ yUüÍ9YWçÙ´t}Ã5ËT�Ç • _ì<9 pTþ»7¿&ÿy€K�õ±s.Ù\0Õ©þ-ÿ)ˆ!IÍ’9ª“æ]ª²Ú×¼k½y‰w¶·{…¶\šrÒÅ]!ÓJŒØ ¿r¼¾´ZCß°«™…5ËëçÕŽu¡¼~/¿T­šÙmÓ‡¦ÛG]s�E÷¢�Õ+Àv¤¯Ê”'ŠÝ*ËO¢ �ò¿T¥jx¥QãóþÁ:þ¾MùsIÿ<Íýi Þ£«€ 7zÑÉZu_´’súË$p³bËr¥†vÀWçd·¥AË)�aÏÔå ]KÜk v-徟2@ÿãçHhzé»ó‰œ8Û¤RJœ?ú5ÆÁ¤ôG|�­$óÒkÄDuÜ„¸ÂQ?8“/y$/ZÚ—^U5ÖWÏS°’Ïk¾y•  ü>XE’šõ¦š+üÚÈ{xí?_¾®Ë xœ»ïI¨]²�Ý:õœ‰W¬Ñgߢ[Vsòñfw¨K�_Ÿ ÿY½oçlf•Ìúv[éœG÷[VFÆÿè8roZ¿)qÌ×]Öÿû»…C-I6…ö÷+[ÿÙOãì×QÕÖ™¢Ï³Ê0އ\¦ÉÉ_ìʯã¹Kz»e5ËëN•ªË‘]³Sr'è'm}Øù5ûV¯†àǪ\âÉÖËq;ëÝ&Ÿö ­c'_ºãÂKλ,Wâ|óÐÍîþ0`'uÿ³¸÷Ÿ·îá¶O¥#^kÈ7X´üejÉB´Øõ,MÏK²f»ê>Ùú5 ¸ãÑG-½F±¾}eUsþÚÜxêtrÙ¹nó©�¦ek°½màíñ3Ǻ…:S0£*�*ÀºÙ_æø+hrëâr'7¯avÃi‘æ•Õ­d©DEFž“•ŸïÝ#�ÊžW�ÎÝgÞ;Ö”yjÍ8˜�Ë)?¾þüßÙ‘kèV…Ú»„Ñ7ÿÏyNüýÚ-ÿÖØÝ¬‰¾¨'Ýêr¼á?޲#ÿ©¨cgvubKµØéJWN‹¿?@MwHôÆ<~’ÍŸgÑüd+õAÍóÎÈmÍÊŽÉÝÚ+™ýg%â…à?×8tKUm}àsÌÂ|hűôsŠ¥¾÷&¹¢hýè’E_Æîô8èmŸG=õXøx§´…$× ì]­BnÛ5UËÛk~iÇW5ï•æg¬RK¾!ÙçfÜÂ’wçÒ˜y<•¸G�x\íQ=§gw·ÿŸ 0ø‹—W5¨à/X^W|¿âT¡z£c8Å%àr¾IþçSÏÍëX÷Ä]óºÎ׉w/ÈsÞ2y „ÕÙŒ.wk6üë DEˆ¡£~È{Þ)oU¯wT©©úÊàOÚMë�ÅRQÞTþ,è?Q[ù—û=?ôTxócÞ¨U÷EozM¿xùµê^þØçú„SÇ=œÔ•×é³¥òGùüƒè¹zŽü’ÄWlØ#‰Q9dzrXçi÷õÞ{½zŸ¢î*XûcÅÍ’ï?–OGìw6)þ+EÌÅZ§`<ˆT{*ùÕÇ×"âuxäWÍ�ô²Ö·dqÌàïýï&û.z©£óÜuùz!ö‡¢÷ªæËˉäŒcÿö¾÷ºç2»Êëá3¥§ïãHºŸ Šž©Â°­?&õß§õ<¢ScÕ}Yå¹@ÿÂ/­Ìgú'ñs>”îz7äU•§ '£TOáÇFç5�'®*ω<:~òÇšòø4Èwsx’]l¯ü¥~ˆN¥ƒ€Â7C‹­ôÛ™ÖÍ©Ï5Àãm’uÀ¢Î ó î>ʽ�+/åÏëcº«ýL§ßµë-Iø>¹kñXwŠU³vß: Ë™këë—�*O’ü’Cÿ¼¦ý…kð&QÒ¾ÛÆÆê„{õÎÓ'^½²  ý$í‹ßáíVù·róN;¸éÔ!�‹=xôÜM͇•k~Ù`¾åµHù!åJìô�ê�?äÝtUæAеwÓe?âõ¨½Ç×4ÊEýÎwüXÝëïûu¾·¾?Šw�QDYÕnÌ?Ï·Í/ukàÂåQMäþùQ1\¢1B�a×÷»OÎDý!�‘û/ùƒ1¿Ï‚íξÏÌ}èègî&î%&ò¶3î ¿—”-oŠ­øÛ9HS·¬tcY§Žº Ý<Àú¢Ð¡Ì-­ß?ï<&FÑvO×nðZMò™š:Ÿé"[ëu.4ÐãžÇÄï¶j©ÇÚÙÂ_Ç× ¼Ï9ó�ΕµìJEn#Þ¬�FENY^<¾ßp:þ:oz�0vËá‰ëÃEÂÂØÜÚ�Ë©�õ^yÉ".×ñµ2A•g5ô³^BÙÞ¯zâÚ0B<”É×trÍË~´G�‹éfkåaïþ»zäþK®Gö1J9…TF;~™wO$†¾O+/Djrµ-~Þhü³K˵Bø¯ïÅs`Ñ#s¿¾§p(ô'§ç1aʳüZׂJ¢»ÿ¯&’mÿ�™ôÇûòn0b6ýñVÜOêÚYk˜«2óÑWõ¼‹Ùz¸»(!¹–¤Ÿ'eåO’'8ÿY U!ÅÏ ÷Ÿ‡L§F3 ˆš¤ÿŽÆ^½á02"¾P?ß8Š�ó_ß¿aðLjÿŽ ”";ø<·ñô†êÍã[w¾/]ú}W‚¶ÿ/ñX�™]ãªPåc«·]ß¿i`…|#ÿ ~Cp¬[TR}·Ùÿ÷f¹TÀÐÉö�µç�ÃØ�¨†=µnÃç� Ù/:‡•ÿ»µÓݯwýrá�ê_Á{�é‹Håçgæëe石¢}µð¤`?!óiyÖúÓù^ þ™¯?dÔÿ�½7ÑRG@…ÛÝs»kH’}«zsß°'¹/•ëÌœ:  6¶YçÌûö§Ý²-Ù²º«ïÍÊî*§cQD( -–ø�¥¤Û9quLdfv¢¿ìi}0âÞiªõÛïw’È~òwÈQòŠDm#~IÕ¤tÞ1à L·Tt}›Âµì:�¹#]3a…÷�ß2hä›ùäÍE}[ESô…Ø…¼S’ªðMHW%éd fF‡ùp£$<¿½ÏÏ9¡�\BˆgÖý`�ø7ÐÏý+ÇR˜” ¥ëÑ�4Ü ÈÎ]:ñ1Ò�ž¢3DÏŽO¹¢ã¡}ŠpµCw„MZ Åó·•¡¶!‹!þ1˜á8c¨iˆàØ^âCñ¥4•yØ^Ó ñY…‡,®‡l a’{¾!$õßù*O.¹÷3¼°,5¸båõÎuE²K-@Ûœ£˜(Pé��øë2aÄL2Á@yš+Â@YAѲÈÂ¥›ÛÇ2Šðe nõåßÚ¿G¼=¶,02 • XÓ�,ýSŽyÁ”#ÏŽ«W¾:PŠ>IdA}à“òNX-¹ïPM¸Øžàr T”D{0 ƒ,2�à/e®Í÷ô‚¨ùüQmŽöӥؖu”™À©@öÁz̨´çô/??*øhQ� ó•Ì»»äEÑÝ�h7žÚÂ,2ðÁ>»„EÑ_Rô;ág{Чfªb/-æ,ƒÀûÕÇž ¿Ö”�6Ùû¿›õå-![ÙãJžâ奄ƒÁÊÿÆ—CK™© ¬±È´P°¡¦ëx$€Nyû¯¿¦ñhT8Ès)|&¢˜s Þ63` 0D¾7 mðs„  ¡g‡—‹† þÂ?Å.ª,)&Ýxy´g­¯°íM1ÇH>Zï,š$§óôÑÞ®\:¤‘æ'Ò„’Å£•bý–J „M”Dä=NNÄÛO঻OÑÈhÓë ^¿ˆ�ŽÒŽ>íðãJGv‘|0â Ü$œúký.Ûxþ“Ðq#² Ä#Ôú²­«t6àïÐÿØ*8ž—ŠC=5„@æ­!${{l¯H¯ÕêwõÜ�Z ó^Ñd†ì»Ì<œMaeNß–ˆ$3ÐÉU)úaìg5¥+=UÇ=�àƒYeÕŸ—WÈé¢2´ã€•¶uO´ðSg jlËC©ÊF2V�Òï³*9Ô’A®kÅšÄSUÊ…r�§¤ÆÑ4kìš ŠiÚêr`°éïÔp©{�q÷3*J¬(b$øî� Sfà�˜³’k+.†Lk a`(u²òr²c8¤T€¨§ì½ê„8ÆÁê@‹¾»n}{<ú^ò¯ºàx{+‚ÝÞí±G¹Òïæ=Ç;Ìïá#ïæ¿‹'�àݽ"Œïwó�C•{Ëq*ìï9ÇHÿ�êá�B½ÿ»û“œëqÞ$I9WDìKLj/ñ¤ï"ùw±ÿ{ôP4uúîÝWhAÇùZX¢÷^êÆëøŽTRâ‘!ú�‡”‹Ë-•  ÒýàÜu´{¦ú`ä±B“ƒ©]æÄ¿Ø‡µ.‚mª}m¨õt‚�åp¾—û?pÜ[�“-ÄA¬ ùÄ˨VV¬ú¨üWÿ¥zeÉÿ¡zA„üázåÔ+'Ö+OõÊ…è•£—WEéU<\¯ü�zååzå£ôÊÓ»@¢ôª®Wá@½ r?,Dùa!¬*x½²G4°â�ŠåVŒR¬VŤÕ­Xé@ÅJG(V ­ �fGøbù@ÍÊbͨ›…¶±2ÕL¤>Ó …×’ +Z³Ê�šUÄš©fùÍ*±4ËSo)†fÕ5«Ê5+EiV…2çbiV:\³ì¡™GV’z”âè†k¬¥\�65¯8ÊœH�iK©B˜r(Bã(—ˡܡIHV’…”Is WydYæp®�ÈÑnòåÍD²’T$žr¨5Uc)W8B¹CÓ‘¬$)“p®r¸l,åJG(whJ’•ä$ª\1L9æp¡Ê¡@Y!Z¢Ü¡iIV’—°î+\»õ¸Híò™#´;45ÉJr“ �†áÚ•©ËEk—;B»CÓ“¬$?©ÆÓ®B}.T;hƒ|�¨yˆv‡¦(YIŽÂÒ�”H"¦ –‘iW:\»Ü¡YJN’¥dY¸U÷Ït²@ªJQ*DÏCÔ;4OÉIò”¸ê!ÍòqÔ+dŽPïàéI¦â¦�áêAŸ„ÜÅP/w„z‡æ*9I®’eƒç”H$¦^ž¶ªPõ`ã,ˆž‡¨wh¶’“d+n~®^�¶ªhõJ{ªçŒÕ™šÒ e R3Åš>üîÏÙäÃmø€ßý~NüóWv¬ð? œ+,£õÞA¿È—aûŽk”¡¡#üWKÈ�éËÁ÷,q·¼ìe�u„ ø2+Ãí@³m}Å0k°Vœ Ü/“èbúÆìK4:kE¿ÿ¼7�|öW/:ý8|]¬ò|¦øW6¨o �ìe%¶§K¶+à)”+Ç2~›ñSz�dÍyš�—\m“ ErÛIæ4“ÍÉÑÁbä5»3n³=ô{ϪèèE'!¡…çÑ4«ËÙ ¾^*¯Êâê6-cd©¶�bG\a7Çß7¹`¼³•Ûº*Þ* D²{[¿å2yÖÀrôspîà §Þr8TÝo_†–1£¥ÿšøûÜêš™øküf9úgm§ŠïÜ œ$ÔÿTPê·o¸ØÔÀpèõk’í·Bµ°lŠî¨\&wY�]Íá<‘–D-H[V_%¼áЍö‚'.c‘uô¹}mÁþâÚÝ“cjf{7Nã<D<è÷Þÿ�¦G›)#ÐT—–þÛOÅQ>£i{5JnfúÉ_ò ðÏ&´Að·þš=Íþó×ÍmðÛØqÌÏéôz½>]çO k”Îe2HM‘>oàé�BÔlµZM#0D( *‚§-{Rçø²&&-€ÌÕ5ú>½˜Èá">£/ÆÄ&Q­• ^¯4u]7K†JÁ5˜.;÷°Kƒìà•Š¶®õÙ_ò- .9ã¡©¡ªý-y°È¿ð£!ð(sØþšÆŒ ÀÓOŸ¾¼SCe‘ìn§ ò›Ïþ�eï>¼�ø|ˆA~ÈPýNz|Dí?KÔŽ]áÿ[¸çKž}Â7Ûœ?|çò %\÷Aý`ñ›ì=&zKüµ.*ê�ã÷>ùq£÷±Z|Äîï»E>|tðŽ®ï¨Ðýc´b�®ŽaèŽfòáÚÔt­(gFW~f¿Èl|ù/º!�ÿLStµyl)üLcNVEò!QÜ„U$‰wÚ9�`f;bæ~4 ÜÄZîL t·‡|°$Àß Ç.É8H>—õ§ Ü×Îbù…³Ôö̘ª¡tìZå 3r»ûeÔÑßú–ÂÅfÅGsÊWÂYisséÄýb<\˜hV{Ü·¯Ž } ÿ<ÂHªeÏ’¹K0µ“q8†ÖÛ>b�ÉZ†_÷B.f¥Äe˜‰°&>" .·(ŸÁÖ‰Ÿv‡×îñ|µ òakOñc¡ˆ‹ï[ûÚ‡ô 0(b·gH±88(‰˜í–BÚ70E´oh±‹ä„ñ£šœÇ¡Ô¢¥Ú½LÉê%‚S&ÒŠ¸ÙF°‰vÞ¦þƸ‡A…Òìà œT�I¦5 qîމkGvãŽäñ|õé&üx+ Â8¡2Æbj/{vßÒL‡�üÀÓG�Ïj"÷KyNBçæö&…ÏÑŸ†3FéìÈR¶èÔbl6rÈšK™;àªØätAÏõÞüA\áYº�ÝʳЇ”#øäŽóþ8ô“í» 5Mü¹¢×{¿frGV7iOøtÊбh ±Fñ&W$Å,•;â4#þÐÜË㛀‚¿wÙ\ëÀ›ò�­É!ïøT!!ª6jÑ—Øûì&‰,š×-ÍŸç²—Hâôã½äâ�‚ø�ÄrOØK¨ÀäÈ{Hè%Žó«x�†d©ôÏ>ið§LõcÕ•U$ª¦bŒ¦Ž�…*+i,ñ«*V2vD"xˆô±êêû½ÂÓÈsÃé�Ý”üÛ7ô‚¿x�^'gÒ‹Û¼k-¸ë ~t}Øñ�ô¸Jvdu´šÒ ŠËá�À.Ên7Aµë@ôRaÚ¡«¯³F×üAoãÎ?͉n£–uê{ÍüZhÈTŠ\[LÀ^)Rø÷”Ò3èÍ«ü‘›LÒ@„WSáå'ü'•/œ–‹ææÿ_^ã?{”³’G"„ [/:x®7‘2ñ ²Z±—=CÝ…^Ûˆ*1Ko¤oé±µÒkrÄÒ�‹®$"}ÚK¦\A"“Ðá|EÎ lÔ�Ä`z†ù~òîgÃx û³Å&ø1B…ì«„(:ñ:QÄl`|-# õŒ  Ñ4‚R «73vnöÜk.çöŠœJø1Š=ä“9Q¤5˜59š†¹ÔÑ·&Q" æFö¶¥|’$Ì–‚©ïâi¬¹�p[ g@âî„fè6=œñ|ã¢ã} À»A>2¢ÕëHg€ÍÆáÀÍÙrs³‰ñ‚â+–e¬Ã?~‘ÉJ*˜ŒÆ”!#<—\›¯�ð Èc%îû�?\ãÃ5„#ñÇø!#l®áý=#Xùž:ˆß¥Š¨Ã:S¾°¿!†t "ô}»NxãMߘ™ºê¨!Í@<hŠnŒR¾‹SB˜°a¹x «JÄšE€F¸éLØV€ ?I÷J¿ ¢? â>í "É?•[ï½ ¤M@N"°HpÅC+ räÞ;ê¶£Ìèãæ±w+"ü=l¿ÅϹ,üùâ£p?ìZS3ðGJ²ßML)½äçJþDãûWÔ<è±U^kÎ8¥©ñ_q‘ÝÕõ}¨ØÍ q©€'h:ô o¡Þ×{ó‰ �ákî7è°ª¿*(<á#„»„Ó·¸¸‡Sûƒs”KÖVb»´˜òwwi¡Âb‡Ž@ºs�Йå4û¸r\.¡Äǹ1ŒëÅÁÕÎ'þpâß͉á°ñXö/¿·–Mã'BÊþ8°Çí³X·Þ}Ã�CRâƒÖ-ü”aC?®pŒàG YÅð£Æ9AÊÖµ�šrŒÑHWy Ø îúc×cä-%Ð5øIÇÀÈzÈ.•¾ìþÀhRøÍ�-¾ý/š«x˜´ûRQA÷¥Ã2z¾Ž+âžDTÂ=É⡳X"s’BþÄ!ô KðGx‘4^!#ËZΓ#ÝCPŽ*ž¨D,{i •>Ͽ˚€OPñŸ¤\¸£ÿ ËO$Ú!i¨r=]AW«ÊlªÌï}Œ› ¡D»çÂÐÂËèDÑPæIb¯æg‚d>)ŸÓ (D!4†vòŽ"†v¢ C»½ªMåc¨Ö‘ÅPN¼c¨'!ˆ‘;œzW¢B?÷À;ð¤M Ø“¿K0.ŸÕJ@Tr÷*'Ü–¶¶$óEH†éñs¥a¡˜Íªa]µ×S¢ñ¥M ’4ÌÅ"‰…©7Öëï›+ERIZQ$�(~ ‡¥TÜ3WŠ$7·H2 zL?ô�µã{¡ZÌWó¡FðZ:_ê…‘¤a^I,öÂr¶ŸÝß £¨d^E'ìE‹å|9¿§FI‚~™ý°á"W‹x4[Û?,ä—{¹÷‡ì,ã ^Œ– ‡-HKHBÇ%4{Ó…]í÷ü†ñÞèŽ0µèpÑ·�°ßßšÄoS=c°Í¥8¼1ž#(Á§ÀçŽ0W(ZdX*›çÓH©dë„q|›™=Í…–%ú�ST‡wB™ ¾¦¤KÁRµÖÑEqx'�¡ø³O¸Œ^†ÇrÕ0ýÄ_‹ Uô žøJ ÛèaC¨}Ã"‡mkó1¨eGZ>õãaˆ >ÜZ�þy?Ž4ˆÐ¢tòãGÌP=劈¥ 4#ÕCç‹ý1¹:/�lÕãDLòd<Û"|$²¡šˆ(0 _!ñè![ËD¤´¯Þ—…/­ð˜ló‘tŒ"Ù Y¤“�Ô:&²4Ó䲨Œg+9F!:ûQ% }‹L ôþè}¸ç‡{þ0îéÿ}8çÎXŽvÎ(’½�…Î8±åXç”0|_çÄÙztOÁ12@ŒÎZ~‡£[Þaø"²G1ñF&p+?1&z Q¡äï;xØc€‡ÔŸ<µógJæ÷HÎÑÙ¼áC{Ï~lü†µFßV–ÀÂ�½ã„ û×ÉıÞ�LÎbðN…“hóøDx¿ˆÐà¥hvØ~oÔãx¬}ÉŸÁmÐ)EÔ�lTB8G®Õc´˜ÛÏx»0²Ð�2d‰Ýeè~ÓâPÃË©YáQ; ½u•K ç%~‚•)~sÀõƒƒä?Ÿß–…>ÜæÃm¢Ü&°Š#tš@úæ42d¡ÓÈ�…^ C–8� ýwsš@¾+wš0T©Ó¾ÊÛßk‚Ç™œ)´_QÆ!x…]²ôz¼š¨»ïBHÃ.À}ù7SçËÈ‚f1“õ~—éR† 6e4ÒeÑÀÙ¤1én ÒÏ´Wüµ7!¹páMˆ²ê&Ä[rÄYoÓ5ÛIõÀ°Ð{Ñ‹íà¿öw¦ yÌo:½3~TeàßL-¾íÔ{�®� Û”S¦xÌŽŠ_ ~†aŸ8¶ûKi�O-þ˜.ŠÇ‘#Ý�0y‡aûÞ¥bBϹÛO¿XŸrDRúÏx •û�"£¿# žŨ¿}„–s†¡ÎsÃÿ'.‚ý—÷.¶P§‘c8Ðÿ]âr!î‡óü_Y™ Éž ΢{¿ªSûÓž±‰p…8D�UX ÆeÆ8 7pzAâiAŠ8Í>H§å©öÅ�±òÍÓ>‰:8"H§á‰è¢kÎÛ|D<¤�0.¯C¾y”Uí�Ä{}Ç(¯¸˜6Ëêï`ò0ñƒÈÐ!=á#Š|D‘�(òEâG‘à¹ÿ§bˆàð‹1$Õ¾ø1¶9}Ä�½bHìª=�8ôû¬ø÷g�!p @°(à𦘹#aºqNkŠ/(Û§´Ð©D•ãÙÎ6Î?TKÿ{´"ËÏ,Ç�<8Xÿ%8Ì21¸{�öW3>7¸‚�{/~lV†Í5Ëð‹³þeÌÕ¹ÔÆêNÁ{Ð�…hmÈK…P±¥Jˬ„}iÈx„zŽœK±„(TYá Yñ¸Óøô½øC¿å�ë2Ö%2GÛ‹Ö±ý½ öH-Ƙ{MV;LjÏ%ãø[4ä<—’S �™’£‡8%'a±~°Iö9Ÿ7‚4ŽqbÁ“2–™¤«óÛKÊqÃIy¯Í؃8¾)¥,B·wP>ð FtØøiº©ŠÛ†Ï<@ø®ØNž�«ſq^rv³hwŽ©Œ´9¹Ïs/KèûGIÄ#úf—Šž®¿×ÈÆÃAx|¡˜EV°%.®ape†vuŒlŸØB¿Zp|çKÙŽ.ý‡¾§-WúÁïi;ÚÄ¡~æ¹vŒÆ–X·¤í#Þ{Þåv¬�ƒ?üv·À̂Ƃ¤©+[v¯ä�Cüí›Ra-¥DÂK´¤Ø!{?¥4âëÈ\t˜âØþùè x%I™R¡šª¨¯7D¢Bw—¡LIÆ(îvÌkÉä‰c3™qhÉLú^Né)6„4¢)E–ϵ*ÉâïGûh` ,¼�Iò÷7/ÿªhÌÆøTêmã ÓTÜPÂ(d�+ÍŸ¦qŰ™´qÅ •5®ØÅ†�Æi\Ü,IØåEþ¦$ã³vNV4ýÌageB㈟ }Ô}*»G¯ ú“©;~úhW3ÌyßCM~އz[ÑuWŒ�BÚG\ˆ*]Ë‹ÍÝ+~`Å~Rã~å)E~/(F 4Š ¤÷J)öúâtðnÑÇÅÿµû‹>ö(~¯ýEîê¶"¹Áð#†|Ä��òCbÆ��MΛœÿw��MÎß;€ü1G‚{—0ÎxyOè˜lÏ3HÃMôqþèÇù£îóG¹#¥—sÔÀ=ï#fG4e› 9D)ü¬ÿÆK¡ç´¿ëÀ I8㈙dLøÛþå>ÉÊ9²(üL¦pA÷9Úy9WéõÊž2Ôt�aq‰Ô:ÞÛò¼Ø{z–X(�“EÉ|±‚þù#Håwí(™yÐûÊÕ*¼¥É¿„SÂeßÖa«}d8®qZŠfG7LÓ2œ)Æl›‚=k7(– iÆ�*ÐÞ_°`ãü1äò7ÏRZè»JÕ@…ÚFåŒöm¦Ñ6ÛS’w@¥÷NÈ+€n¥7 pæö�ØNíPÅb•" #þ"÷ô&Q1‚°£”ˆüMTP°™ŸrüÍ6F)I£�CT3Œ.0Üeýô7¾ƒ4RŠ#ܳ.ìËÚ™‡2eª–­Ùð“Üð+X8’ð]PÙ(a?£‰!ÿÛ  Ÿ?÷T¸/ Žrûòô}2LNÄ 9õSúÀ˜”œtÉóp�㩺íŠ5x'ÎþFüþ²‹J8\‰@uˆN õ:ÞþôÎ^´/Óýåæ;ˆX†u(q[°ðÎy#öŸõÙ’£v>Çè³~(U¤{¤";Ÿjä—«8G?DO^+Ô"0<ýº�ÔïÒ3´üž}ƒwˆóþa6Èÿ�{Šà4Êû+!.ã÷é-¼þõ.�FÐÁ¾g·!�uˆiêcú�ïÜÜ£º�X�?’.Òþ#Ædå�•û�žù!>¤'¨w,2± b‘Šº_¡÷H“¼ðÓxFñG-rbq÷\åÄ[‹ã.irE°¦IF×ü¢&ÜI{Q“+�®j÷[Õ$¼ß²&fX…¤«‡{/jFò‹·¤É±‰½¦‰6£ü™�¿àÊ÷lŒáo€ÿC#'à÷Lú¸b¾C¶äçþûäI¼é¾g:ÃkwLjRÊe2ªÛªä=¹|%¾ •md+åJ)þpÆé"ü«°§|å=Ðôrñ_¶\BÖ‹JGUnH àÿÓŽðgVÅ?�/U$l¶â™ãà$�Z2�)>¿ÏSÉsйŽí·»0e –+ØÉG�%YkģatX¯`ÂMC΋‰8Kd¨ôÄéúL›kúŒm€{O*…êô=ó Àþ;ä”ëG¡9RähÞ¿Oëvïé¡pWùžy4?nÆkˆJD¦~¢Eÿa¦|¨@h¢'Zîd‚ˆ#ê-Èܺæù¬:Þ1xG¼®Ø•ü�Ž—ÚŸî÷ˆQU­Ÿ"=ÇG ”êéJ*W#t3Éñ�Z&µ`óåw�ûÐýÇJ}Hc–JÜPúœ”ºc þa_i|L`~L`1�IÝ×38ð½�:[#]xʵ 9äLfIØyTE{ØÂ³TÜØà9¡‚=PÖðóèÏnØýÕ¹bñ$áþå?Ù‡TXÌ]€qÕ8üðn)‹°Óº¥Dª—bǹ+�hTnjsŸú}Íê/uÀ˜!EŸÙ¯Iïø� |c¿¸�}ž=e0"cÓ°5“,UW +9…ŸŽ·‡º±�H³µžBš"—‹ø Uz¶¡/IÚ†<ô{#€vV-ôš�J«Í‘ötƒôÓ=ÂçÀD—6lýÁ|`Ô#°˜Èe23;¡‚N .\º¸8šâ#ŸÙId®vcm0Pçxš昨óPax‚‡îº¢»ª®k&Eà9Cƒº¤ÔÐÉf‡ëñ'3¹GEc«ù1°dd7q�*Íî�žá�Ÿþkâ›+ŽšøkZ–mx �'–�D‚�Ã+-Ç“pxK!I†8I(‘±˜”±/›ð²¦D gÐiá|ƼEžj)¶“¢“‘îLÁ�º6Hd‰Î>ï$MÒ>¸[tÄ…D;‹{ìš:ÜËw|´^W’µiÜ.¤‡Ÿ& ¯s™ƒ!’ª{0û÷€O¿¡¨ŒøÀÅæ†aBVäìz.eòsß�Úÿ·/HDð±A¾¢K-B&‰³%â!¬/¥/¼=l‰¿ç7”êaí ‰…`|Ӫ▪ otÞ¾L7t¬yJvv›˜#ÈߌµÜãÉ™è{3E3v2®º:¶MeÙ>” 4ëo–£ÿKÜÒb¯,Õ“…«’+.ž©‡�Ê”dº§±Ø3‹Uì uÅÜ»b*êt`y�šÚÏÙ‚¥Æ«º÷Óò º Wr¦‚kÅr9_c/ÜDX…?Q„‡œB‡ÆþEÿ÷ÐRVš©^ZV`w[ܲäõ¶çUV‘ð*îŸÇŠ­»Cÿ¨Î‰uu1”D�DÊ«ªÃ­{„y†wCÂ@~µãq2íQ!\Âî £FrP|Y؈Èbº:Rú1éqZw(¹àhÇ�$R.ôÄÈèˆã½·37QÈÀŸ(>{ÄÁ\)Rªèp¬¢?ñùDªÙÀŽ!À„—+ öðßb¤˜Aô­B�ûøwWÈ(÷¯äxœŽ6ÆÁn�ßÁ¶–9Î;*ün9ÐVڀߓCë2:ÊI8†Þ²_´Œß»„µ·h.Ñ2€™M­?…–Rt–…Þ…U±ß[âòˆ“´EóŠtfá—ž˜/-Ä1ÊÖ/¶ï`žØÚó''Ç”2KJþLå#w"+û˜eøg,R©´yÊRæ#u?Ár±4Ö @3S±4ÛˆUL®PE”³4JÆ-…ŒÙ"ŠøY© ”^ñ0ž‘m¢PRòE‰‡‘ú Û@[Œtux”nŒC¯¢™ Ì,4'wYÓ»ðc·öyº�ðÌ2„Ïq†â‚KÄ1_Þ„9‚—/F� “uìÎ\ÊÂ'ZÓ�ŒäãPï=yÉÑ´Ô•¦®ã™)'«MÜ~µ¹¹ݲ ôá÷@ŶÏŧi$S©º!L�3_œ�v<úh· ÎÊð¹]ÁI¡�,æÿtó‘ˆ|ßD$vËôO þÁí20Mû^í2ð¹ò�Ù0b¾[Ë<�s¼¦`þÑ6l›žá]tß4¸g©!q!²Ì�Íåž4Ã2tû{|vŸùƒ>»—­â¡´ÿ¥c,ûã”Wvbm¤�;�´ç—”…p$Έö`Bï×=ñǾû•* �_0? %%f#Kä‰ö]ô‰5„Žf£nL¸GÚà�Š�Tˆ¨â�P]j_ à{{͸äÄ~ÒÛÌü|2…P>ÒKÕöäsðBA€Ó!6¥B¨vßÒLG‹;]àø¢HL¿��΀èUÝä|søR:ôb +Å]îÛ7~HÓ“æ^—=$žˆq=«ÔÁsÜÄDîŠsÅÁ«êRaKêR"ad–b‡,¦Kiö ª#K]lPš†Ö–�eé̓r¡Åtî�÷ò!>Ê¡a8‡”HèÂJŒÖ^|p`0×�xèApnIÜÄ”ñ¦¾{³ðç±qUá #èƒæÊŠs¢½ú¥ yŒ%ÝÍ«¶-<¬D0*ð'„fÿÒ`¯2“‘”âu6H…L•å?¨¾à^èåo•o4†³ì³€1Øì-ËäåGÊág±· ê@sŽ”ÁÏ"¾ ág±pˆ1¯d Êv`’çãr`Šçã²ï*��Ü@Y™¢ËÇçºÑÜü»>¼•oY†%eœµ5bÉ”N\…x$)G€GP&ïÊ—$\�RÞ„±¤³úeöP¶Oýû3�ß³ö£ÿ÷ªý(9~�Ú� ÇÖ¾¼Žé §7«v‘{o6“u>ïÁC8º�£{GTûu%qŠ’÷iÇQG�+c–C¹(@ü5®Bêpå"ü‰Uߎaè½8‹ôö̘òÍ HxÈê<á"ŸÅ‘.\ÃE“ÀÁ ì;ÿ8Yüq<–$� sˆ$aÃv•ú&¶üx3£§q;_‹¢ïòÃÊq4gÿ-¯bϤO>'”•C'ߦd¢ð܉�†gsE÷€11~ÔÙ_Ž¥ªþ#TBà§æÆ@p†ì\µataž »…z©gÚ<|³WÏá<ñw¤˜çñùÓ}òAqÇÎLç�žš’jª>÷€?1 ~:Iœ©úJu´¾"qB93aï G›¯”S…LAʉÄ=&‡o/{xªþ=Ìâc&œs”£Ç4‹�*žY|D³ Ø]åØˆ,�îÄ·L¿ qÜ…Fï&CGaáDXV�Žh/"6â!fØŒMÑ�li0“=ÄWÑÙ‘ïÁIx¤7̸ÂêŽÉ”B> :0#�ð¿GÝÊ™ÅÞ…phÑ{l×�¼góg΃mîÝYE‰ŽQEnrÄ'VUÿˆ�ªQU:2£ZÂ;|ñ_`¼çžõïé¦!û€‰­cU©wcœ'b“…Õ8ÛÛ|ÌñÎÄðm‹}£tÌ6KwG:~�r‰ÿÒf°‹S+>î8n$æ†C/ÿ±‘• Ù¿˜B •äpzj�e�M@AUúª.Ф¡ Î#cͳ�Ï·«Ò{ ©{šK°8ôž&´‘§~ Ý;ጃÊÒ퀂Aµä o4â–ütÞç¹áü&ÄJõÇ*ðåÁ'Ï�àkÍé�SË9kÕ(Qw§µòðçK^{Ý› /¶îMfÂc­S™¸ÛZ¸^!D«=‰°N{Q�„dï_ù´0Y>Ægy¦´+J5W­ì-@hÙ!ÒÑM‘"ß”xf¿2,ª… eCý2’Hä•‘DbŸŒÐ[á�;SÄ íK%ôÉH*‰SFÝ>ðÝÜBàµüÝ[ûÈgá{Yðó·oÎx9륦sÃs³†Rõg.‹�¼Ç7/‚�'}|è B¾â¡cØ“ˆVìždØ‹dD'W‹+—A:`×Bß¾¹Ùªð^<�çmðëˆ÷-XyÁoO ßDHý󊢋Ð¥ zà¾ïÕèHv€.930ÔÏÄõ¶ÌV”gázÒ¦ Íd3c˜GF”Á–ß36Ìàô…ø:'¹ƒ‡—àZ- —6´�ªfÕþ—p A[‹E'h7±è„ÍTNÉèÐ`‚©$ýp)„žËÏ/ r,=Ûê=ó”qlk”V=à½ûÈ2üŒçè“ùfë32FâÿócáÛýøS/AÖßÿ­˜ùK"…f‰?¹MXak¤T`¢û}k@Ý ðhL|aˆl§¼¹OÎlS¦2W1hf �N­Â×:j˜ä›OauêœìUšitè¤Lá(íhµOÝ¢@2ŽÅ·„¬£¼€½¾ß‹¯Ñ?8«’o¨þõNºˆXc-&KÛц[:½ó91ÔÕM Œ~EñŸï_…�.ßÜC; w$Mæ>bM,c·úF–=W [šó…BBܑȮeY*ºJHrñ![/=õ-Ÿ4UôUT$¾ìØM¬É¼ŸD¬H�'N@®¬aWÙ/‹¨HgkªÜÒß;ˆåP.�°(m>Ô6Áý9€Ù÷½ðS Ín|ÎD²:F/™à5PÜʰ$ʆ )2äê*Ñîþ™”ai#mŽ®º"G|'dÛ28kf¿„à ţ^ Ê�Hr—2ú¯Æzý-ËÏ�’åÓÀž;nWýÏJA)V• ‘t7ÿÏý<ü‰gEösõ3II³¥îh û&-ôÕåÀpx�(œcŒŽÓþ¨†Áõ±Äÿ$¸ [z“$h”t["7íHÿˆ¡òûÎÐ…R´þ¤ÒÉ\œ«T¼.ž"ZÕ­Ÿ å{§¼�)_»]lo ÿ$Òs†%ø_­=ý!,$øûX×3Ñ>׿£? sWýüäÅe°ç×.¡-ŽìÝH€Pr%/A\)ú¯…¢ÃöÕ±¡ü™f –À3úЪôíÿi¤pEáKÈb…lK,6?¸8««ðl2·Æ|QÛØƒó´ko·…ßccz,ï@÷Gpcï¸<Þ]hҜۿÄoÊm`¾é[QýyP�?ï$*q´Û+,×1¡G88èœ7rì[4øt"  ¨nß¾éªMC¯Õ@wú�± ¯ìr?:sCàäxoÊ»‹, é"ùP �P„ó½ xòÞ|Ñ‹wç*´çwqpq~êí½‹¾ÞM2°µDO÷[ôÔ°<‰yIe½CÌÎà÷CÖÙ|/9`½@o.ÞóÔÏÙüy߈ÉiëU�–�*ЧRøŠ^5¶G“ÌÓŸ�"—Î|‘÷B, ƒè º#%6wS° _‡©P_v“(Ëϼ÷ÚðiµtC¾‡Î}EJ(‚¢‚è´p)‰_º¥ˆI¼%ѱ§…Æ‘v¯£g,_;áÙ+ÁézORD!¡,5†2q¦EÆÁij½¸�Ð |ÙÕÌ´}óðç Û2Pû†¥x®”7ðCöBÆuôžzƒ9w uTe�â)©Xu™�âÆ°ù¨^9b×ç)m¯dS\±HöTV«h˜™ øiáª�`~ ÏÕ:)Œ‡ô¦u!ð„·‚ fx=¸0½Wznª¯ôØK�Ö Õ¾eÌ?¯ Ç þésJìÜÎVW=;¤|ƒ|Ï®&�oÂKŽsÜ áðˆØ0ô�Nýb$rGŸOÖúŠím°ôÇm$ þׂ¯JFô2‚´*[”m(–Ö“÷·”È…e•—b—އWµtôòñ¥Ã[ñDÝ¡�„ÊÄ“y{tœ�Š,tà”0—5 %Lm‡ê†qc„lîãè�6fê‚òp˜=Aê>~q{R’Åœfèkak÷ºVØKœ8²Í¤QtêÌt¶q˜ÑùEAT4¸DMVl`Ù{hÏ0X[ˆ²œ'Y)N›šàwy¿àŽt”2Ò£cá‚(XåýW³òî>â£L�-‚oМög>ºã qÀ¼^’*Œ*7Œlß]çØ»Té!%ïe#àßÉ"ærˆ<¾†t�4"á²p‘~¬ PG�¶žÃÿ3Áõ€Emß§ö%ƒ—}«_6 ÙG†Ã›_Øpè( öjŠaL¨’wi–a¼ömœûó:\¶ý꾜âÈ%j´å߫ѢW 3‰*Ü8g‡·ÏÄéÀ2L #x¢+�lïOé¢ x„R†”ù .[%–:È!â•Î\£xÄ”×ä1Rø8HbS ž¤x!5ä¡ñV‘´n"Ë ­a‰^ƒ„ÔÇ^e‡Ù1ªä¨:p£st=ð¸‡ÕÏ!Ú&¢òŽ­Žg¬z‰’aÿºñJ§~ÂÃZ’Ãk+*ÀíSú{Ô]t¨;T¢Ãjrï 'ìéãUª€ìðŠ0‹gÊ)Þ£‚ƒìcWrLÉ«h¡\q*Û?ñ«ªD‡Wt€Uí‘u3GÞ_žwó�ØÙòq2á 1óf‰|1’縔GúB¬4z_YÞÍb&ÔÇÈw„ì—Z“Íd�L®-Gß7¹Ž& M®}äû&×ñK�H®%rìŸ\&Q ¹>Lž ëÄ‘·ðäðFZ‹aí8F‰QM7–¥Â[ëžRDZyÿäZ AxrApDuE%×1K~—j‹N®�æÀê‹J®%’D&×ñ莬ÐÉõ~r¼[õÆJ®—íˆÊ>,ºÆN®ãÓY÷1“ëýåy7ˆ�\'ã¾3¹–È#¹ŽKy¤/ÄJ®÷•åÝü fr}Œ|GøÀ~É5þVŒË­?&®?&®?&®?&®?&®?&®?&®?&®?&®?&®?&®�È­SÜWn×××××××××××Çì IIÏ�ð~ÖÙWLÍQtm'ØHÅíœ"Ñâ—+tüH ÿÇ—.>9âÐwV� �q†ø[Xükª§Øªçl»ƒN<�ݪá/Xp]ƒiòV*wM¦øJƒÅZsÆøâÏí Þ{9�MÕ²�£Â#Dð‰<Ñ$^<|#<8Èý+s*98Hìk�óÃãšÂ‹þãÛ!èJ¿Ïß÷(ªÞÀÑë?Ëå¾ç¢èïíD‚ M43e«~ ³Ùû°wÿòÞKH\]؉GeÏC>,{¬˜jàÔN•ùUÐJjnXV«Rz×RlJd!z&¶’÷7ßÁNôäIÛеA"kn?÷Uø#:`…ªÖ_Z6”�\zq„íÕ@¹ƒ·äN]Ì>‹U]pÍàž+ NÌÛ‡=k1ˆÀRg=ÅÌwÒ–ÿtðȳâ÷6p0zÀpÅ峕ÀñXüaG¤hÛQ,Çí8ø³¾*¢Î„»œW0õ7¥ÍÍ¥›– OhJøä&\S–eXü�-)î,GAnôÝJ§)Žô(Éø%{Af'8îÇÔµÇÆÞÅ J°@T=Å òúsb¥Ù'�C°òGë‰O»‹]C>h°ZV i NAÐý/h ô|v‰‚OE®Í»DYé)‘§qE¨ [±÷ö›;�Ž?`ìÈbø{0x=ß©aÙv¦Õô‚üƒÛÊ�lÖÿöWwé]cVÐ6åw�JÛ”¿›�Þ[¿…Žd�@7¨äù7xåˆC+WtL¼ø\cvÉU-�ä¾:�IJsιå鼇ôº<2!ä‹ ^d8(>Õ|¬ ê\zĶ_3éœ ¼-âê�mýdã¬g¸ã½ö$p±ïâžk&ÖlÊ ã™™(dàO éõ¾õœ`«aw§ù/æSÉÁR|2¹»+äßa't˼í‹�È‹íú£�/ã²äÞ;�Ø¡«„Ø3ºª?åUÀ°Èu¯Á�é÷ÌÞÜø˜>®´V{*ü87PºjÈ.|óyW,^|ºìÙ}K3/WÁõcg¦û&С²Îø|�R7}Õt(¹¥öqœÔË  hjû3žJ TX_Y8�‘çŽ×/ÒA}TFÈÖ\*žT›+�ƒlÅ`zY%é$È…h%„O’Œ ÿ��R¶±´ú‚!œ8‘,¼å>É ÙO‰â_$ÀO‰\F û$�L× `Y‰åOçF ãóùw=NTx ½gøBÐiߘÁ¤È6Œù7šjø:Þj þ„ i@Ç xÛôjk¯÷zVP¸Û­k( à÷ÕTOuÖ²ëœÀ7φw£þ¸Înv ¿O%p ym©N̤R�¢¬!…´ WMº/@XjJz«c‚”WKn=¬„r“ˆ±%å´‚ËÒpqÑÃ̽¬%—¡M9 %l-�9,äÙùÂI"ŸÃÿgN«ò%jZê)÷Ë·oöÒ2ãü0Õljè©ÂÙãW¬‡9_¹!Ü÷­r¾ µ‡ó½�’ÖAÖ;…i�Äp„½`÷ÍXU�.P¼0 ·ß09#ÃJ"Œ„®D¢}à d¬dÑÍ»¶*M4Ýô[s4OBÍ_ÃçKG…—ÁqÜAÖÕw/Šêï¿ã<Îí}"öSs<Õg·»ˆ7Tñ—¿x m2,ǧMà.nêŽ4;g©œ(©´Õîl¹k$gÿš|Å;eA÷QH—îez×m¤ëárJþJñ OÇ ùtœxÔËA7ÖRùR/S Ö¸—ÁLö™…Ì *•|ðî,¿#)ƒª" J=N†)› ˆmJ6Çá\ðñ‰ZÇ~-ÐÃkÏWš½Tt�¥¥Ã‚NoIg[�ðåé#Ýè1)Ô“•aŸ[)Öo©•9"åøÊgÖd|Hèí <Íò¯e…KÅ_éŽz¯�⨦֟‚ægæÒ<9œ~Â/õ®ÀM\ž~ÕcC_•áËCÄà°½š{wä¯'?ýtòoÒ#Οàшýù?­Õ@ž~N§OÓ¶ÕOƒÂÓ(ƒ±Ó¸ÖÒ}t[ú©Ý·íŸNbàƒ7§èM �ôÏŒyT¬{f;~)&xžÆGÇCOe2�øb�¸¿Tuh+»ûˆf#Nãr˜)û‡ÿ‰�¦†¾t4ÝBà]ùi4KÒ†ÑÔ$àa?ÊÄgЫý)D »?ƒížc07ê·™1XB]ÿ®ÌGK]±8) KMã]®éoøßø\@«K+Ùì6ýM›ÔÍ~„¤¹DëNëìMîÕ­L§ ÐO8†e§¿™–÷‹Ê9UúPÌXÂ� 2'Ü¿ZRÎŒú�”ËVl;…|)šc€ Nø‡–n˜0…MÃÿ© š³‡ìL[]ŒmH î¼/Ž+çüûpŠ|þ}0 Ó2F– ê«Þ~ã‹Ë’±"³j”ðO—Åq F40féoà¯lAÆÅéoäá`£º“¸éo¢ Ý}lÀ&×�Xìùýd±‰„É#ÙúæÂ‘õR4­HYêxÁøýDŸ£+_ÉU·ïÇö�+$ì6hÀ+Â)ú÷`¹p Úú÷ðX·Õƒ`ÿ9˜ ŸÏŸßöbs Êr@ÿ‡’�£³ˆJ±Cg€ üÔ/�>ø; úRÒCû"q¨‰Û‘£©Òþÿ>Âçh§{to‹³Øô7²BùžlR±³98gp„0h”óNŠ •ÞþMQé!ÂCÚÍ.»¢Üƒ=ŸËئ6Ÿ«|>CÞne0 ýsx$fS »Ó‡²ƒÕN*ÿà°„0Q܇32,ØS�¿f“.ääápF– ª þ-g!ü“¯á9º�Ì•œ¥ù×É Phó‘ýù§Z­ÛýÒª5º'‹z­VûRkœÝ©5/ÈKÍ} ÞÞ‘·ýVïþ:]ÝÑwÃΗV{T?cœÎßQë¥vRÀ/j�Æ}…¿‚§ÚɬÎUötÅžnØÓ{z`O âÚRÞ h­îɨA^B�[O5�må¿=)‰ZD£g º·î‰F3Bôø^^{ï "P¿ÌÌ®Y¯[ôõÈUnK0j£#Äh¦·À •F Ü�òˆŽ—°÷w F0ô0÷#pog¸ \n¯‘˜•�´¿�÷ï?Þ÷÷µÝ xµìÔN*¤™Ú_k_ПúýºüÒå[>ßå¹­™ä3µÅ3(W»Wošs�{õ¼~äßnè[œs]gÐÛ}»õgsþP¤°§gôjñ ŽÇøt G¡ë5,´›Eé¬ú än5ûàuòµ Sš2z?ª¿í[m˜¾AÀU™&|n¸$ý6 ]ûUÞ«Fíº„´ËÒ×#ׄ$ëº.xmÅ)�k‰â=W!b»tÄA]óÃß9þKÿ[j¸rÚ¡Ò|¥ïϧ¯(÷! Ù|¥®pn`À¼OL=­·*uhÒ-2i×éS[Ïê­‚°±'oÀ1ÑhÕ~KêoöU¿•—BO»’- úS¿)üé'Ÿï€F)\o* w2°ŠéçN9Yb­76Ö¸,·.¾´.*­Ë °zלêKͰ@f0)’ÿ_ÛÛdƒ5ŸÇHºù–[ËdÐ5‡D¡‡Ö¨ý+ÿ- õY ©>�­d rÔ!òM…æÔ€^çD/,jÅ53×T �º:-EÕd_TeŠH†E ™zŸÇk¹cu�ÿû¯Yì>ƒj+u_xÖ¯:ä"Wiî/›ÊnŽHUÅaÛå,¢µDŠjÁ*¨ 2òÒøˆa¯|ÜÚ#âÌo×@Vôï ŒžÝê¤îF‰õ…]G&'Ó:'–VB0;éàëÒ¼l�ÚX\¶™ÏäP\Þ¸(«KØÎÖ—Âv†å(ãÂ<ñm\ÇN¯"¹&œŠaësÖ€Y×þþ E§BZ¾tÛùaôàn¸¾~¶Ð}‹‘#¸Î$C=•î£ÜÛgÒò™¹/™Í‘µÜ„c�º¥ôœóŸÌ êep�®¼ûl¨€@nÏûì-ËW\”œÕ9‹v‹WèôVAMªŒâ¾§P �´7ºªJ­\»¡PÁ0¨�}¯·ž×eOµ‡«F PrQ9d×Z0çÇ6?Ḭ̈ïoÌ÷q 8/H~Qwû¾Ì�‚b5²AuÁl̳E 5¶ë-ææd²Q×êXˆËÖ-ydà’w’q¥�HÑâdšÞ£zÁ2¥-^& �4× •ɵÖû¾—Àú ²~�*ˆšDš”m¿u§&‰,Žßº�ÌNíŠk#q»ŽÃk2B -ÖÄR|]MƒÍJ^/‘Ô&ÅЈãÙèõ\avYþúð¥Öœ.ë=Øï*|}�ΡO”x£ñx†¨Æ^é@ÿˆ^§ßܲÇO°lm…Êfõb‹ /LÏ";¢þ¥õü 1Öõ!l.”›BzFÔ´òž·þœ&ØÓ—U–R a'GÈ!„�!ƒVr„-Bpäk„`ÄÃùìMáLÂêK×å/™ÄrSW Ǧ1‚ÁÝγ!ìiÌ-x_+¾>óËüžº2/pcÎ#‹9ª VÝ(™ Ai‹Â� 2n"À¢~¹êÝAÎâìÀ Æbµ´$c.ÜçÍý‘õyW:}�ñµ:Ð@ ]7€à²€Éѱ¸‹65fR@å§ü¢�K;_È~Láäí½M¿xßjðíMX¿æ¦/Å5kë­_pyÑB$-×â¹–« µ¼ðÏXúé$HË;?á¾åJ#Þq[ÊÕ�¡n²L¹þõðêKëjT¿:™Ò½-`º|®î]<„ ¡µvŒ¡�Kí6‡I7 ƒó«‘9ûדæ+�iÚ|ʤx ï‡â6ÃJ%CÏLãz×¼€}H Æñ‡© E10Är!õëtó @ìR} :Ó�4ˆ[3a’ÞÎ0 �¥€W¿„ƨ2 ÆnGP’Y(2áTÁïó콿Õ„Q²”­bŒ²c(�¤þðû {O 2° ȹÅ'ëmAµÛ5XY�³Ôn—ø½àd3@—È"UM¶RÀµ�YSôÖ��x`Í'·‹,ôðn¾JSŸ»Ž}öŒỌ̃IJÊRŸ›Î� �)Y4ä}ºå }¢Ê,þ' “�Aa²„´r20(ÔÊ핆íëù9\:ž¥ëó:v5 j0WZº>dî:�‰„JSÓ=tFçp¼ � ¦Ç£›Áé$»f`ççªÄϧ^ïÎ37™¹€{€sw«�"xr{~êMè}®ÇˆÝL˜Ž>²F�«8n Ýt �Øh†+=fºëäh‰A7ãu.¦9è\E«, ø<ÀÙuÁˆ)Z[ä¡q'kaÕ!ÿ´&H£N×wÁØBkà1-8�M@y â~4 *ñ?Å ûé¶ àñÙë&èSr× ®‡€Þyc²pO¼�»4›·ûÈôu6—)\óîæ§AiÆDšiPšè´Š§õÎòyz…´Sg•<«wl Ôò¸Â@nÄ©³d1„qÎ0äfœ¯uo™æëJç| íú=I²Ac¼™ë¥K´�âv–¯£»ç¦6†Ùv7žCXsz–[wÔ©nGù:Mºï&§r q.î¨Pj†£cœ ¹sù.TœN¯1µïñ{¾­pÎ�PÞ°a˜÷p¿ÓÂh ø²Òphš#MjçúØÌQ¿â;RšÚ|}Œ—&®'×÷\±ÜDs,â�†üÊrŒ{O޹âðìI=ÆŒ¡ÂȽ'%¡:�X6C*uÆéÞ“«<{R÷}pº7ˆ#dZÀ\šèRI‘W‹æ‰=ê÷Ï¡×ÙÈëŒgèu¯®g‚Ô„y�H Žã£H4y‰iRâ ,ñ!ªÄ­‡øa·h°hVlÀ@òué4àôâÆ�›6t[­éÔ�=ÆÍ%þmUÎá×¾fpË×Êѓ â¯[ p8ÆUÌ* Y½ÖÒð7 Á²‘†X ;Ü×%ál¢÷o]anÏU�¸–Ý­‚9‘Ñi¯}C7~¡b»úŠÆ³ç‹Js %]/;Ϭ•›—\”0,‡a¬…Yÿ¾âªt¤@ìß5×TÜG*nÆÂâ®ÖLÜg*n àG¼zZ3TD*@IzÌ®hU/x*­ Ï;?à%‡ ëÉ/ pV ¯¯¾¬W ૯“m£-f³.k o£-ÂÙm0×uº·Ü¦šÁëjC‰‰oÛ ¢p`*4?µ/ÜÙdÅ’u®71Q,dÐæK‹¸ÌÛ – «åîŽ]¹&#š¯&ÎÓÀKn‚¨Ã^v„s W${­õ*ÈJJqK­ä–pÇ0€¹úU,w«Åôïˆ÷ݾzu© J;XDÇçGÝùúøÚÀÎ6ŠuŒåèP³ ¶;Tú„+" (µl£‹Ê6tÈ&�£Ó’Ì–Ú<©ÙìƒÇusÒkƒÂk±¥fà8»fx䎹 («…¢Û¢¢¿ûÌÜeܼÿ‘˜—¼òVzMcnWXWÜ«Œ-l5ý4sãd½æ´ÐÌË|cíSÝP-M‘=I É ÖytÒÞ¸1õÝÆDí…Sß5&¥f�A›gΘͻn¥tCXP±k,ÉÚçC¬Å\°–?˜!dÕ,Rdl˜¡]DïÇøý¶!œöòòãÒ¬‡3L›- ÚR]H[¬ÓÖQ– ˆ`ð2àI·FfùÐfj-1¨³Æ°{o<©Ÿ¦Òå›ç¤ÜËõ9~|­�š¤ä\z¨>/Roy&�‚(ÕtnZte\Ï0�U(²,cEè½á|Þ¸`ŠŒZ¤äQ µ)ùÉ”�"óUdMI"§õr)Ò…“‚¤× šÕÇÕÆ3PdÖºeÀé&÷q+|$ö5ëòÀä{ðžð°%�U+¶äa›ÕËnù…•Ì®›j0r~Q¿ÔœºVEC»nU¨úµk‚JÊ'ˆÂ¦õ+,To–%°‹Œ6JbX9 B¥SoPqÉÆ‚ViŽå¬~aËdãœ4ÏòÁr¶KX–Ëù¨`9Kc2�Àx–K³FM?Ëm³Ló,�zÂ*éÆW«zX>#ØtÔD°É8Àr1jb–UNñtZ5±¡9 à9o(„B—usÜDN×âc™YÕgãæ9ÄÚA¹ZgØ|ÏHýO“ +º°-…-,-€­ La9³\X†Â*¶À´4†å]XŽÂ « `K›hAX†ÀL¬D`+V °ÑÛ,+€Í¬,€Ù6ža[› `s°$�í\X‰Õ©Û¢¶ °´¶&0}„åÌraV¶À4 Ãò˜A`UlI`=ËXyÚìréðêä´‰£ê¼)ˆªt—OÍí›kn–Uc[ø�d“&ŠŽ+—ÏÒå“s) ÷1ã>.(ŸⳆò€¶x¾h¶x4û\D\p Z¸3œgSÌr7C,mØø]Š¥Ëg$TQãŠoŠŠŸq¸.‚A5J¢â·uÝ€Å_!x 瘔:DËÔ­$é&¾tz·�r.¼¦‰ª¬•¯gfÍ6™~ÈÔw(f]ç[´§lݼµIVw»†ß�µi;%daìlÕÎÑßÝó�­—ÆM:«Q¨—uȶ ’h8õqEŽº×›Öù‰ñ„(€Çñ‚̱ “N´ 3l�² �ñrÔ¬ ¢Í±¼¨Û 5ÈÚàäXMâ$G ØLÄ®è$?�a�/Èd× 9de!ƒƒ°Ä%i`yq€3ˆ½àä°tf�œPŽ•ckâ]l�­ÎdgÊ ² ™ñ‚¤§Ì Q‚,  ¥zy )¾ e/¸�,I[V‰ 9m ZÝâ Ð*~ Ü,Y{³pÀrV,`qe”\û¯]–³�̈–ˆ÷v-DX 󨙋[p·BîLh>tqB5“·™ÑáŠM²pɦ-o>. ´H=eXO•ú Uò“Ò:±Yý� A §w­àçe­—â­‡3g5CøvÍFKÈÔ(oš$«_4gpžeÒ˜n›p¢eÔ(2 R»íƒ1Lc±mê”ç@o´Å icã &† ¯/õÆhÕÌ"¨å4¿Ð)(‹ÞX:ð#ÐiC‚ JÛD>ÅÖåmü})*®ÚØ¢âr«æ¼š@#»… s�vts)h²5jU��`¡òs�¼ M¶ª'›%2BÝÅ6%QaYO³$­–ofë ›0Ì­ê%æÄ“ÒâGN‚m ¦– µYÏÔp›xƒMÀå[½Õ†d‰Ûß]‚Å K /°‹ï*A¥éH Í±ó®æL½&‰â�Q€7Š�Ì_Ì�–`á�#O±DjIød]>\ß¶pùˆ“I6™TA| h?›:Zyà¶ ~nÐ}äfë–ÂVÅñ ™q³#g.• ¼…ÁÀÂÊèK8o´Ñ€6ß7€Áá4)u³luQ©¹ï6ápÊÆ¥–i©ÆïQêÂ!î²ÂîR±X2Ï5Fä“KºÄ�œ.¹Ò„y]&ê‘­,¬—D™5V&÷gV&·"Êl°2ë?³2•5T¦Ô0'hŠ{Â\½E¶£‚äiƒ¡»B½‹ »ÝL ÷lˆñ¶…¿AíÐ-oÅÆt ;SÐT‰‘ÎZ|HáÝ œ-æ6ÙбÐ+á5ÛÀ¡P¡±[û!¹5†lH#©Âþ\héÈ9E.èrM7r3ç’%…UÁ5þ-Uu¹ã›C+[—ì*|Ýb_úUÉ ì*gõI�õLI¡ò%¿80[Ïànmå³å%‚�r¦˜Ð.äZhB{Ã`tB;C¨L ‘Mh/šUà˜S5ÙTõ²€±vÅ0¬\cmФH!Ö–`ézªB À÷ÐV‰¡ ¬f.Ñä\"ã�æpÞ% K6v%(R¤©ž .•á’„Š¸Ú„…-Ñ#—,ý�ËÛζy, U†ÖÈ×áþ´JÀu 8®`×?š€Ë"0O4šžØÊ¦ùr>¼‘/éÃ+4Äx³Æ[×ê¶Ü¡›M`›2†Më->­à¦Äøå2÷qIý·TÂqaœfMâOÛ¹�*P—Q3›††-Ö3MéZù�¯Ì¬Š•ÙŒÚH™ÅŸY;‰'ª£vp"i›Äššctšs‹ÍŠŽ›‹qí&Kkm6¨£ž›$ônêçÀ¶CäÛÓæ­¸½³©D­L"\Õoüu•¨YõI fÕo|›@æU¹ñG¯ú�oȤ*7þŒà¤+~ãkUlšjEnüÁ)WüÆOVˆ×W䯝TðÜ�3îxç~ð@ÙÝÚb²Ä-|•ÇñPï´‚Ôp°Lð‚·’àiÉ6Þ­1a*�|>rwžq|Ø®€5á“wùp=2[o/´´‹Æuð\WÄÍ}v9Â}óq&Œ—¹pÓ.Ü�YÔ[n;B@v¬8÷èOŽü�_£Í+›Cu�.»)Ó…%G[+º0n,IY”ÚX™•›ïäò¿µP@î‘›îXºo5—C’›q¸¼’_•ˆ2ÒHˆks¦Nk–Z"q8µEçüi.\æÐ 3͉¯svC6k¼�cšÍŒáòw¤ü©´|MXþ¢-z\Ç.6Åå§Iùptën€'À"5Ü" O;{ ]É|Js‹ôž6dzŽo¢a:ë Hi™¢ Âåöâ6Êy"çËÜè€e�·Ÿ´[›ñN˜¾`0MèŠâ¡÷ÈÅ ñgvìÛ”Ì —YvËäÓt–ô´‰åF�[+ã·Ûû£©?ÞÅ\-†RΉ”–HJ®"oa6l`â¹íÊN;¥‚åšy zĪWNÐ&À,¡áWÄ‘Nì[!BRøÈBázÕ*4­%4ã tßK/´ë³ßöë÷eŸ±ˆ_®ÜJa‹6^‹|€k‹Ü†øÃ€@ˇ¾iCî¥fv aí•êYnjkÊŠn¹\Ðb“%Ä Òœ¬¡e²È¹ùhCÕÐ/ÞH‚·ðáb¼­CòŒ�Û”9cÖ#hã-C‹<ê!ð%l6KÈ'Ùt¶Ïgžµts½Å ‚¾ð«¦éæ’ÀÒkÚS€‘üåٛΠÍGRXº¹ TºË‘›!Q –�°F-à“pøÓ¸d]kÃÕÌ;=r¹{w$ã.¬+¹oKî[®çœºo¹Sº9f\ÁÜ¡ü#—Œ›ä.(šµDdNn–ÞÅåf¡¸žÞhE˜dÙÉÀ is�œ}q½Ž[¹%éýrÌã'[´ºóKtA,r[»9yi9 ˆ“YbŽúªãÙ�5n«Î=„d—ô2Ú¥ËuMé K怋œI5e –ç>Š‚ûÈ�ÎYqé¦&ን�ñ¬-Ár–Á«sWÙü5Á·¾êV&EZ"¤‡]¡CN,æœjÚ=î#ç3#a3" Ñ×\¡ó†K!‡„öÙ{xxñà ï4ÅÒß®¸VÌ=’‘Ü×%.Þò¿ÄÅ�ZÅ2QÇs—e’Ú¨°‚6zN—¨ÿˆ…œ åõßò¢•¡ÓqÜ¢1ÈhA73ëžz÷(AæÏ½€I[Å”�ÕJ§Kn0äßÌoÞ–»4è’\¬"Û¿žFU—·PûC0l¡f¯‚:ðŸ�K™�¶·ÅÚ²3±A³Ü@Š´­û` %í®D#ãš7‹�¸Ö”£gI°L†õH 6�Ì�E2ò‡!–œÞ š0z©£ºO@ò· f“…«­/<ÛÄ�®LØÆh¹KÖù�¨ÔÀ=³B}Cn£Å…È>g²¯¹�ð:+€®ó´<¼è©™­á5†h™·ËWë,¦/½ñÔ!�’F�ª ‰œ\Ù¹äÝ€âvÓ¥¿'ô4æÕ]Tf @ï°’ŒUdXœG°ÈZ!XyˆõGà–0+’T\[´å\Ò;Ê×5eßÅzƒXVkù„ÞÜ"m_$„â늡û&:¬{`ç\ÝÖ$'Áú[œJ#‘pŽíÃ5,Iº©?�¬:Ùœ=µùfàròïHðg L¢5‘vÅK´mMUã ‚muN»>ÐÖåI{.-ž[íM€8/ÚŠªDt)¤ íH¦í³6ÞV�ëêÜ â‚¥xíxæ§5-‹�Hß™o:ä®stÝ—þL…Í…»‘‹…1·�î÷RÏXr-ºJ„!58$Ð÷½¹ýbôœs1WÊÀ"º«ÕYLbtJ¡YxƒÇO�Иïèð ûò&.x̽8ä‡us˜gö¡ô¦!¥rg‚n1Éí# )�9Ì’ˆè’Ô†Þ¼L’à”ô¶EaECGIGIzó‘–/[憈KÚ,­Îh¹Ü·"|d´F€– F8‚ #Ð\,n É Q¸¼Óv·ÂÖFƒêÌ-Æ{ýÝ3ÓsYô-JW)(xÏBC¶¯Ct–¿K¾–Ç<Ø£‚»»ÊY»Ûs¡™<¢î³ÚA7;1 zÒk¡YÁ@@—­{%~ð°M¹JG}þ[Ça?ŸÄM¹\õÚÂ'' GI’G»è¾kö„8̼ÔÕ“TKØ*CÜ$4Ü$ºV’é ÛœAÀm1:«6Õu)tãc;t[Bg¶U—-,uMÀ[ž¤y™2C)rI)Ì4#Ƽ1¸‚Á@×$µ±ê«p¨5±qÑ+¸?­ñ\]�næGuÔéFõvð„zŸs-ƒ¡Bª?�Eƒ7Ô³¹"½’ø_wAx°¼cd´î3„ÊaºrÃÆ{M°VAÞkÊÛ ð¶ Õ›@Ø<“Aôp²{0|RФÙ�LnøàZ÷a幞‰ÃòÖÜŒJìR,÷¦ÜÇÁ£«,ý Þ\!í' äi’­Ò9 ÉTa ¬•']Ï8ºVKNº÷@ß/g…| $…ŸáåSdè3Ÿ¿z°+;ϰ9 âàV+a' Ô,Þã$lØkKÌÁd\dáj6øóÄ7þU›»… gÑÈ,Im�ù¸èü~Bÿl2C×Y±¸¥× \ªû^ñ¼ ê—t;µ)f™ÖÖâÏ–w§^…™;=Íšó s{…åÓsX8”¯ªy ]«�0©ûžÌ¹P@™¸X¡ž¦aOÓ¾£Š´xk…ñ¸ãËA(qžÈ”K­äŒ„Q‚,äPôÝ1Bæ°�Ÿ1jµ ¬€ ¹ÅGTÙ!×Ý °Ä“nXä¿ 4Æ"Ðk*>ý2òoAyÏdsÖ5#ÁLƧšb‚ôXàTþ9Éš&CnÕü{0¹zž‹èºe§ËrŒóÜÌ! v(Ã/»n†qžÁÀ-ÂJ`ÝZ£|¯b5œîÐcBI_À[‰Nw‰ç<ȼ„×o�.<×—3϶î±Ï„§)"š$¡ó Éºv‰dpͱ®Kì´å° �»5ܵ‘`•wÏ! ˆ°Gáܿᵭ‹ž‡è\*Áå¶µ Áɺ8ÔKJôÓ‰m,­¾j7Œ¹£Î�ÏÿøõïÚÌ4,'ñ“bšiÛÙêª�î³™1O¯KSzàÅO_þ9ÿç¼g ¶‰ÿsžÒéÄ“jÙš1O(–šXi¶ÆJµË0Æzžø­¯k ˆ¡|Ât?;§a*sU§ä„!ü³Kió�ºùœÈ$þ K¥Ì�/þBßÇ‚CùmJãèMe0Ðæ£”c˜Ÿ¹Œ¹qiÿ8Õò¥L è‰úHʽr”ž�øŸÄ@[�¿žwßÐ ësâ—±ª T+…~ýâ‚ÿûóê~†Fió¤1ÈáGÝ8©�Ú7,ņùœ˜s•Ãù¯Ì¯'?ÑŠûõ4�5ù s/MPqSß»�f©}GÌ´¹‚Ô×€um÷15Vþõ‹ÇtP1,G_Vze΂a&Œ´¹¹t>§Öjoª9)e逑˜®óÜ) ‰5V€£C…?ÙLø\b=Ö0²UGÀû$Ñ[:Ž1?IتêâI[_4|j¨Ì4}û9ñë�©ÎÊÜþP�R6°Ú0ÐD!°–ú7hP`¶©±6¨ó’éKzÏZ‚X£Ù‰™b�mª}m¨õð"k­Ùê)§JW^S&4t‹`âÕÍx•1 [Ãe©:ð­õ*ÐΘÁ�{ü…¼†6/òÀ[$•K=5–­ ˆ†!6hò§J–åi,J:²Œå|�"Í`d)[%�³< V ØøåÌÕ !’¢óEL}^–Ï!Ô[ žm–… üñ‹tÚûÖsæÇÃ…d žBŒ¥ ÃÚ/†A%Â.kàÀ|s•V$ÈlÐOá6êiö)øÞÙš0¨9Þ””§¥þó'V›ÿüéK±·}»Õþk_bÀ.Lzàî�ÎÖ5)±6øùÛ7ÇÞT ƒAß‹Ý)…И×å<¦÷Pì‹ï+�:DO…?^= ClRCMÕ=•É4DÑ�Sk` Ó› „xïÌܲRö²g÷-Ítdl=qBèG¤•93ýÔrôÄ'>Ï ç7gü þšR7}Õt¼‘vË(€èŸ ]ÁЕ 4›¾2_)žtƒ�9ÅŒGó`tøyˆþð8ž~ Ô&ú?“°F=å·ÌI‚üwš+|:AÝžœÍ}ò0Eý6J/?'løCºÖÎØD›)#5…S×Ï((‚XZŦ—¿eêè �+Oî_@ÊO2HöS¢ø ðÈ¥0�^D>]ƒâeù´ðtn¤0R0 Á·'òWA„�yŸ¥eÃJ5 $É–/2€, &ǶaÌ¿�Ôc†2sQÞTmÁa NX�œð·Q£¨¡ §M�LhfNÀî?z`N‘ÉÒv´á6EòùϰCë«©žê¬Uu(¶SÇ0tG3ãäIâ¾*›•÷U�ÌÓa‡•-Õé�90_ñ( L!­üUÏ�@eY*²Ÿ·’=œ@ð)ÿÌ” m7%˜} ³–ÿðÜVxÜ%e¢a˜Ëx£‡PtØýîË¢ÌgØ„~Ëùü/�¨fþò)Ä›ÝØN„;å~ùöÍ^ZCŸ90ÕÆã‘š…9IH¼¯D–é=ò‚ün]–ܱ¢œ*žC¹²Bò:QMa&jS® — uñ@]8<à3ð�'Òõ0¬óJ+ÒÁ?À¤Ž†*´ÃŸ�qŠÎsòŽ<ñƛѣ7lœ†&ßÅ5�r~4S’Ãèx [eOBs�$õqÌF|�ŒÙWI7æÂ%uÿ N¸ÉÚÛä]®ªê‰g€-�–Îm˜ ~N0¤€wا/D*’ÑnO7úÓ ª9oÊæ`o«+86ߢY˜}Jú»6ïëË�š€y&©G”7þÆŽŸ‚"U„yß’f[KÛüïÓ1  ä6�<ó¦’¥¼µÃ3Ó�õ>¼F–·ù¸ÍT òl†ð€‘&ß(šÝÏUþȹ Z{O±¦¾9ª½ë€ûÇ^áô š?åŠ Ñ˜ЍåI!0kñÓÉO¿˜ Z[²Ù~¯Rpϼ? à Õu�ê�>ãñf¶˜Åþ‚CXˆ²;¯€ðèüWjHù1{ áØ}ËÐu&L1ßË”Kç Sh!•óó0  Ä�L= Ê°:ìaɰÒP­KªÊñë! ÊÁ×seÕS('þÐâÁ ô;œ’øEÑAÄ�Ñ +e˜ªü¢Z–ášrØ/€÷=¬3ˆ®” edz{ÙïÛ1‚B^ÉÊL]h'`øÃÞ úà]) Ø;GsàHàç‚Z,•ŠðuÏ™§˜~d4ÿ³Z�?(gùe9·TEi(œçªÂ B,{£Ô*U( ‹C$?ò‡¯ Ã<ÆçC·Gi_�ft”J~à�¡~®ˆ”z™ NY+ÖÎÈ;$?oFOxî¨ÙWUìhUƒèÏlÁúthrß=JB)ÓS¾Á±¡xµ7«¹.÷ ô8<ÕRç€ÁIµ½Àv_™ÏQ”Tˆ@~3R�˜"¢~5ñ? ‡ß\�«Á/•XÓÂu®n@2F‚ïr6ÿ¸yA€Èê§ÞèQÉÛëo9ïÐЧ'÷«÷’ &Q=Þ¢ZZe˧E/Ù!’è7Ò?!à4ÁrFþˆµÊ 4êQ2p9O,«ú]¿� ®k\Ô¿ü饲Aí�¿á1æ)Èôlû›!(´d7À)ZƒídŒ<‡Ã¶¹øUD¹Ã?œ­©þ öâÆ¿„Ë·n¤õÄž^·]ú£·s†ÊÆï}�˜[œ÷ì_��"tm¦9 Ð&�øµ¯€äßN( Ó2€Ð3 €fA ´ ‰»"Ê-8Šü·¿ÉÁµF,4ŽËx¤„�õO"wg½ ¿æƒ8°M¤{4š'´Z•Ñ $ßnúŽþ(ÊôJÄܸ¨�1ÿ iñ”:è¥Z2YîJ�vîØaÛ7xÀ`†À©¥Ip�g4Æ–1SýEþ’cúF�my�+pH//ª\#BÕÿñº–Ìû{Xy~�½*šq•+B·(�à+Á3óHóx˜Óü7)øû—ÿødq ÝÀäY퉽¿‰Soòƒ#¹Àì±[n.çïï9ºf;x› œA0aàæXõqöz}9LX¤éI┌õ„%K׿àaï(G tÂ…èÈTNûcµ?}í7ᤨwG§\ST¯hüV-Ùð<Žm�Aó@ê©ôÕ±¡û–“]¤ÛMéH7õ-´4ÜQ s��%@›±Iʰq�LäT”Ã%þù¯ß?‚“ûÔql‹Ô†^ü7s…Sà~@¤ÿ$þ;ñï¿“œä?ȼÿIü]ÕÝ5�¿Q²O:¯Ò:M²^š¼ýä%äiàÆµ xNC—W~û°?Iü^�¿WоT?ùø!©€àßÿ|&8X|>™@(à_ФP0`9ßxÕo¿ôgP0è8 ÐmÁ¿ØGÁLLdâBX $„”“I$ä© šK„xˆ„Æ­ÿ·}dëŠEh+giâ*â+”Ã>Iðkˬ~åEà5èØe¶žåe�ô†$œö·¤'á�V“G?a4Ò˜Ä=Š!Œ½¥Ê‹‰Ëž°�bÓ&˜M¤ @;£‚Çð6ÌZž´½Ò-*ËYHdL�¶ÏúÅ;x¯‡ßþ>ÌïÂ}?iÈù�ÂÄôû„íWxÒO'¿ÂŒ'Ëîö4Oöü“÷ó'º�ß¶úŸKKÿí§�â(ŸA¹:™šKoð–üµ1~é�ËV�¿-�aªò.5• 'ƒLµs?ªÁïðjµúݨV³Ñc÷<ÞÕBþÔϳOðCÀ:ü«Ö„tõÇn×ÖÕiõëå® ~oÕ1›öÛÙà±ÒyÍeÇðËÀÚ+|ÛÔá_ÊííÓ"û4ï�é3ð{£_š�€]¿vÕé¿]<�õ×g€_o!~—#ˆðú<žWJÀ¨õ•òÿ:¯�êõöÀè½ÜÀ¯÷�X7ÈúU‡_€w6«WxÀh½=… ¯�_«èÜÏ”mï¹]€òµzˆßÙ¢ÖÊÖºÕåësÊ{ŸeDçênݾnÏë«~Êw�B¨·‘$—íìýÕ³z¾™¼ ¿ÞÔµ«Ncýš«oûëóWµyùð°;-Öµ×N ]¹2íÍùîª:}m57£Û ûµn6µúlT5€èåúã¨Fø%7­>z{®�^;/¥»í]¹;¼›\TÞ&õQ±Y¶µ·N¯Ñ5¿¾´kÊÙ¤°>=éµ|}ô|?zËu¯2ÝÂ~<œ9oäµ~ypöÖëƒúo½Ü—vg“Ü×]yµHWÌ^÷Q¿H>êÅx½ºœ˜¯›×}ý꣞©½,Ê�«ËdzìWCí[»ì›¾š½½G7÷Çüݰk­›‚5N«úeçk¶ T^37··Æm%ÿª=_ÝßÌvçÚîõjvq}¿Ì•¯Ç»Â•v~µQ—ùË xž]Î.‹äYUi^nóÙÕ£òdÓ…Ò8»x+½jgº%ÝZ.o;ëöñvÙ¹™4 u¾ÌTÆwÏÕÛ¡Ù댿Ž6Ye1ÚÝ3½’}~§”Ò•ó�5ž Wƒç¥q“¹t’pÞdG�\>Ú¥¶Ú.¹hš«ûÕb�m Ç+c›íLZ/å«‹ç9ôíza~þôª>¯ûÙülx]¾Þ•ûe»¼Ü]í–»óÛ××ò]þòüE-·9§heγ­éÀ¼\?š�oƒé󿩾,h÷7…š™{}Ðë£+å¦WS�Z¿{×l\·ÏžÆ›»Þà¢Û¿Ê+mXªU^ê÷V¡¹8�‹+G›¼u´‚f gÉg³¥�7ÌÅ  ÞæWC§ZLV® ÍÑ}:s6x®[Í–ö°Y�ç÷ÝÎèÆxn¦•™ñ¸¼?ËÖn«#uk�+g…êöa¼8Kw­Ë‡ñðþîÆ¨u7£ê…ñÔ|0†åuy×sÚçé§IÞÈ÷Ó×YÓ,Oê×gŠ3|,îÎZ¹Åu·_(ž¿4•ÖëÍX½{»»›ê£¶Ú4”öãƒR¸¼=¯Þ·_s7ŠR™NF«‡ç±²¨×ô—‡ÛJÛÈ\˜™în4(Ï×�—•ŽùP¹Úlo�«mñë¶pß8kô»Ïƒöã×~¶÷¦8ýëZþëÃe÷j[mtf��××�~ý¤Ô:ýâxy;²š‹ù¸V©¶Gw5G)–ŒÜèuø¬n�ù×t¾”½Ò/vÛ·ú|r­ß½Üžk½Fó­3[Îêµgþr±p’–öÐi÷_Ÿ”Ö´“Þm_.Gãm·Ó,©÷cºØmÎn6#ç±kNÏÚw‹ûúÅe®Ôk�¯Æ—»Åz´,<¯¯7ùLCmç^Šf¾a3WËûûÕùºœ{ê/g»Ú|ÐÔîÔÉÕùÙèµ±Z•o_;Ce÷õëë2ùlV}.w‹weãE;ÓŒ³A¯U«t﫽ª:�®Ú�F{XhMçóÕâåìimŸYËEÏîmngOËû§Â⩺\”ŸÏëF»÷d)«iÞz¼Ñ¶_¯»‹f÷ö^»¹¯6Öå×וqm}œ®VÛÎõe»S¹¸QòÖ°ýxãl{¥•²õÂSöþ|SWgåÍÅ‹ý\¾ë¬ÖCiÒ™ëYýy¢lzÙòk}�oœ/º­ÖýÅãðVŸj�OöÃs-÷ðúfwÊ—å³ä}mê<oŸßÒg¯›§Eiæ€j¸é ý5¿Í½ìjɯoW»næbû¤•^îìî[¶0\\næÙôEQmž+¥~·yq{Ó|\¼ZwO»çÇ»‡±9»µ_jã|þf^h¾ô“·ù¼½»®?T«ÆËýØQjÆy¦3ËúÓÁÛÛU¥?«”ç¹ìµõ’¼[^?—òff׋æíåyáíü¼UȪÛÎãËöúå%YÏ<¾�W¯{Ï«×êÅjÞí>ô»oå³óÜ]e{Õèåó»~¿nÞ½M[ƒûÎãåÅj}Õ?›_å.ÖN3»™è/�Akú¼¨ïÚÉú`P׋]gþxö0Њ_/gƒî¼Ÿ³.¯ží›ísÏžäï^u{û ºÉúj<4›Noº*ÜÞç7ýæ¹>PûoÙù³ú¦iJE³3…LcùðdŽnZóéMý\¹¨ Ϋ»–v·›Þm¶Ý‡éݺº¹šf6wK¥5±Z�î$³-¶_žoîÎÕMóöfP]tßò›ÑW53ÔúoÓ‹ÍÀ¹uí>9]]Ü=N–×wÕëd5ñÚì*šýµq×7Ú­d5ÛíÞúòÚ¼_Þ_4 ãyõXzy.Þë›iöëSwØ=OZ•Íýe¥¼mšãÑ<ûøX6:é«]ÛÌÔd©k�Ý<5.ºÓúèRýj¶�ÕÙjr5¬WzgÏÊÍhuV+Ü–†ÍÚ|yož½Í·OºU½>ËT׊–›(½…~sÖJß�¯…l®}û0é×;ëæ«½½IÞŸuû¥:ÙnÏšFŵ‘»]ŸYë~Ú\æMgps~{[¬¼lÕáÙb{;ò¼I.ï{•«ÕSe¥+;§÷´&õ³ydŒ2¯7iåu3Ï·Þš•ÂÛåêüͼ1ÝÔ+³r6y»ÓËéòU©xµí) vÕyîyÖåïó_/o'Ùüëj8ì–¯¦»—ô´;¾Oöº_Óéäåìź,=·ÊÏãá¥áä®A{î½Ì“Ó×�n–³ýÇ˳lÙÚÎ/ú¯ýrwWÞeÖú[¹RïÔÒÙîùÅSgk¬3…á]·¬MËÅÆ¦~Ÿ®=Ÿ/Çx2'o7¯Ù¶ºº.mƃËe²¦·:õͪ?ê˜ÆrP0š¥›áKFÍ6¹‡þ®–¾ÏŒ[�«Òåð®Xž ïîFo½ËdŸ]µï®�«›Ç·¯OÉ×k#;ùš<{RzÅÇ|opUo6ÍóÚó¶ç ¥nÝL; '*\Ý ^’ãñà¾ö–}y¸0ïïZãåÝü¡¼»Ö7Î�1iL_vÉm[ïƒþ[5ù:/: •ÞXÃU!™{¨ÏεáÃËSÞÔ@¸ëÕ›ÓíÊx½¸(Tn.êç׋¢Ýɵ¾6ÓúSå­�|z°ºËz©öv6>¬g«lÉ6&ëÎíÎ鼬ùäkÉØî2/Íás§ö:*²æM¦×#…‡ŒÞrôÑrº™žW_ß»éפÂQ;g¬Í ÏT[µ/çí»qq¢²×¥•ª?÷›Ú[ýêaóÖKö®Òoƺ1¨u2ƒÛgÚ_^ô¯i{X:Ï÷ç#ãí^3�ÿŸµ+oVTÉò_åÆëˆ®®±ª�E�zÑ¢,. ®05ñ‚]”}QôÓ¸¢¢ÜšyÅå•ôä!óäÙÈóKƒá&ëž·õ¹°9à;]ÝIÖƒ‘²@q|G…“á¼Oípƒ&Ažë °’ã¬3>@@C¥†0Aæš™ú í$£ú*ÑU%RcA0“q¼ˆ¶Fárƒ†�q\FôÛÒf¢/£a¤bÓÎl½톯 ž BÜZ¬&]Ʀ§ ŸácI†Ö®»0;ˆ÷Vz�ñdër: *J# q hŠkÃÑbaõ­.›ÖÒV †7t¶Xk?›¶õÐ7òx__É9d¬D£³\ [$Kúž·XQáôAW2XH`ƒ!º“úÙÖê’Ã^:ŸE2i[ã!%JâM’Ìë€ZÅŽ^@4µa¨Ø<Ø�m" LvñZ‚†ëNÓOL ݤ¬lÍ!¢/×(ƒ³LöÁÊØ˜¸åqþ€Š¶Sþ0ƒctØòøíœ?ø t|zr»Þ·ùõâ[À—Ö¬%s˜ÞnE±µ6e£äP>¤f—`VMÉîú$1oÎsÏw½ ;#Êi 6·[v{]y¹‡ J:°ÈÝûý~I´áöRiy4Go¢9m´8½±ØR{:Q»L‹—«V> {]‡ôlßÂѵqH)7 f+‚ê¯Ý8žÅýÅ–”iI‘æF�³1„;WÛºÕâFÛ�0Øx�ÛJî†#ΆQ‚4Âé\f4®êKÞí¢¹"�øu/3 ‚ù Ž.µñì´\' BmŸËÌ�ÜR�CsìÁ¨å÷rÅß^y~’Bà ·Muè�Õè °ÌD½Æ!·8f¬`°°ñSàÀÉ6Rå}è IÍñ„ <éi›@Q4k¤Óˆ·l"LØ3ÍD”`j Ï5Kî*¬~!u®u ·…™#Ô­=ﺖ4DædÆÂl‹3ÚÀÕ`ÅèÅ(gµT{ Ù¥ÛkgÊ™âõñY+¡÷M†vMÆ^¯pxÞ.g*¦/û?hãMVJc\šÍg¨\SO)¢»u öca€½•Hh+iF„0@`ºçΘ.Õ#¬|ð¨�AÁ4Öa¨Ù‚Gy ƒ‰ëd§¢¼IÛM„RšÞ—BÂ5Ct’‡b°0C'¸�ì4%pX'r6ž5±‘‘íñrË4Ðqcd‚©BX‰×Xv¨¬‚œ-BsFeˆ–gj‚8£) xÙÊZ‰‡ŒØ$#¡;ÏÔÆÂ—HÂIA‡º@ ƒÅ+Ãú­p Ù ÐT|×¥S![SP¦GÄy̬YHÒéFFØ†ÜØÙ}ØÞ‘ eÏXذQ±‡ ¡ú�, §€Þëk q§-;›ëAƒ¤Ùì›&¾œŒ˜†í‡Z¸õ‘æ§;!�ò]á@±‹q˜¶R‰@+¹� ˃ÎHÀ%uÒŠuuìÒÖš – åtB­\/âé�­ å(`Ï1ìFÚH+�ΨƴÍ!J›õiK–⥛¹<�7¡7 ZÝA† Ûas¢3C©eO#8fh:MqÄÕ"pV‚€ �ÛEB†ò4Wâh—\§hŠCUE¼µáiÁ,W -ÇüVÕh™QYÄf½.³“8ÝóÀîn¡¹L¯fs Æ€'æ> oÒeÐè   (Š$è{oóÎ5Ù¬© xȇqMLm­o,ÇncÀ6L)ÞA[Œæó-“;Ãý¡šYmz áΈ!8Ù¤ãŽnÍE{½0¶ŠÅOx3à žê‹‰¿¥W³ŸQNÚkdzI6ó¦ÀîLJ´ímf")˜n õ, æÙ<Ž1g½†„XÍÃv½u`H�AZsdKqqf‹^&RîlH9‡npCvn¯íÕÜÌø­ÓæW5w ø‰÷ñÕ’ÝC’Ñ·-ƒê°ùp¹ÊÄT‚è`‡›Q¾\‡> Á-KsÚl8åÃ!ºÖý|tQŠo»ÉuÚ*ÑÔ `’¬Åi³ùjm¥)Rà  @�À¼�wº6ÙVøíZÀ“À3)Ò�'sc7M@óšœEr䔈º3QL…ƒ\æx»Õ\§êê±Ñ¢vùõH½þZÐÉÐÜ3N»>UíÁÝ ðšðÖ:ÍãPXîØ¾úú~ØK�ÝblÐÝe£Ë«v7WmaÑÍ•Ö(k�HGÍ>DD¹c »ÐØÂ Ô@‘Ç;ˆÜ©qú xƒ÷Âdúmµ«òÜ$Ì8G;¤ëh°î„ dx9ßz{w#q!ËÄš+JþŽ#s{/­¬YÐ7QC‘ 7“Ýü�n�ÙÖ�FäõEÍ; ìÃFƒ=·(Ò�óõjÁ”%vøp�@ý-4s9¬¹ N":’¯@8Ã)’!õRo²Ù‰Ø&Nþ¨mçŽÁ‚г5upzÌî¨ážØ€äd‘®:8 9¼Ÿiât·×d†13÷ñ Ää•ét2éó±€¶+@½Œüñžd,‘¥šf;±&!ã‰GÓ|gØ:¬‰À�+Z¦Ãn‚z�<쎆#»ÉÖÀXD8y½˜NA¶mU*Vn©*\³iÉI(7f“uÄ,ÑåÔ†–¬‰ÚÒæÀ´à©ôf�"*òlNFKY¿Ÿ‚PÀ�"KßÌ©•ÕçVv“S¼ñŠT­ ‚€8Í»~s…h—·fcFÍUlwº«Ã„Q<À Beæå–i#£”ºØÔË-µbµ2]\¸[NèRHo@e\Ð’¨é¾+÷Àöfî˜mˆ‡…žÚ= ¸3¼~rƒ~„÷¬)a{!cÖ‰µÝ¿ÿýÇ×bߪ«$ÿúõ¥xûõëËõU^©Ôòú>íçOÕ0 Ķª×n÷oݾ}¸¾çŸ�2žvòVï~|G¸5­Àðx½õñx縋Ü{¼õ´çí~_äñö©þôVè‰íæl ËVmÇNö冥ZŒÒÖ¹ï®øîÇçWбëûÉêH¬(Œ »KÃseÏc»œk[ql%>V½œ‹ïŦßÄÿn[ù�3s…ªøã×/l‚|†T˜*QÑ»WGª%WC®!Eþîôþ·†ò B5$ZïI¨†ãÔPh×P(öÅÖ�@ß“ÐO3êØÀjh8Fî�5Dð:"~\'J ?Ø×PPë(¤^ÕÑÞÑ ÇHêE¯¡á×.ã=…"9_CÁ|OÁöLÿ=°YC¡F&Àí±1j¦¬Ñ¹`š5jFn:jVX£)ÜZ% Ö(ŠÂÄÕP¨QajÄG³ôžJ�®ˆ 32âU ‘e®¿5¾›‘ï~Ú,€5º£D³†P�É/ÉüÝÏ-„í)5z¬Ñ&gj5Dj´IQAZC¡F—œªþjhÔh“ØHòi²â*5%.j5ÞR€j4Êa©†H�ZIÇWj ¨F³¤±ÕŒT£Z¶¶‘»"Æ'ž§FÄj(Ü4L ü×µ‘GpÚªQâï×?t_;•J­ÀÛ½V�ªÖïÝò¼×Çò›û2žsItóE¯DÏ-ªÁ|®ò×O¹ƒiY·ª­ªÊß ŒÈñþYà„VQàVüC3ŠëîþÓêETÕÖ^zh^kTÊ…87üã×à[ð­œäŠI[¹”ËðÇ)PârïŸ+ûçÏŸŠ™Ü0½ÆU~Äwjþ€ ÷Ïûª”×ss_ê]1CZ\×I>*ŸQÑïë–ïÊ ±E°âz Ë#û$�yê_W† Ì w¢TÆÄ}ÆÃ-Fíÿˆûw{�‚¡¼ÛyÛöé‹êGùO.CåZ² àã;á¼no¾á ­jw·­)EU/€+ÂŽž_F•t÷§ý )®Æ\:.×+ÌÄ $¬`ßîå1˜Äöeý”J²ZÍkµÒ›a=É}ûxÝàTN÷‚Ħ=oø‚F©ÅÛ¾ÊíîV[åÈ?KöQ& c¿}àøQ.Á[Ò¦@4:aû>J„>.ª·j´jõC&jàŸÔÏ%•û6ÿS¾{9»±òF‘– Aèÿ$™·µy8~ûê8€×âŒÁqÑÚO¨Ÿ…™¨ØÚÁ­Ðó§zØ&ÃïÈÕñq~T¡:\j„Kð=7ζëÞÝ9Ž`¾² O?랎9žYr÷tg§è˱´¸Œ|’+FÅŠ«tã6‹Š5˜å1¼›É£z|Ø|Q¹|-îü¯SÙa� fi*nÐCUð¿³èªÍXÉ·©�—“}½è„k�ä)þúHV~l\0’r¯1(ò Îþãäf ìXy4àñ±n²Àqˆ×8¶Î{ö’_Þ £BsÎ�ûÇÖ_sµv:~å¤s,?þ}¥rùqŽG­-ïÉ0ßÃð½ÔZ�ëèUëWþA…�qZ)•³v—pV}G/+›³2ƒž,iË(®ß×KUnì[ ¸yWhq½Óï'õðnjÞ|âáHî8ï•ãö¦ýª|s/罎ÝÕda%ϪºÛìf ´Àv¸¾-(-r�RJ‡ÿüùx«ÈÜW~�¿©ºuÉáß�‘«Ð’�ÀÆ…Óóóãìúœ¾/ÿüûÉÓ‰üÝGÉ=z‚ž>6�%ºŠì€êGRFÊ®ƒUº÷ˆÁ—'D€èƒÇ[qüý/ >úÂï~Hü�K!Y�»˜/•üƒ®××J:÷4\¸*¬ÂÅ¿¾`G ¬À˧ª1KÞE<�ijª=òZM6w•$‰l5=�±p+ß¿k§?zj­²G{7¯ÿ)˜-`·¾]?ê¯Ã7§úüm@ùwk,1Ø|�^ÑoMþùÓ´£¢&~e;OP^¯c}x8ÿwvï]•³:ã…>>ÝçTò�öê%ícf¤ìÍ}à¬5¾:òûr ý¾”ô/�Pé,¦—Þlm*ãÙ˜–ýåÖMNÿû½ýϥ˻¬PE(ùIîþáÍKû;˜ÃÓ;ÕS“áÅá0_ÿ,@¸Šm2‘}ÓzÙölA˾b¹WûD·y£Ï÷{iü²cÏÿ«0M�Á„ãŠq¯H/Ú¥PÈ…ö¹P8FÐwD~/íqq­žrW_�V2u}®Bæë˜ÂÍâªdª WÍÒþúšÜ(®¶Ël©NÎF_Íã¿¿“¯;ŠO|��§ö�ñ]³#í¦Õ_+9¨ìx¿0‘ËÒ{¢ú*ÃüåG],5òäo•¾z:UÀG^¿—™}p;ÏGDܳ{”ènÿN™¾ïí(õ½�æïþ§GPëÚ_ª-UÕn+>pÒø¯Ûá1¤„>õrFÁsºðÄêù¥û…ÛëA0ÏR½NYžR%¯¹Â깂Úe®<å6€Õ£uçù´Ÿ–çÝš­¡³á0r?Έß÷T9/Ÿôêéª�—ëË&O³õôòÌÝ‹ããrCvµ^wÙ´øÏ£i{ö`�Œ›{\þåãÈÉÀqIVNî¶~A)«"[÷¶á>=v&ìܦNI�x²ºÞÖ�Ó¹%¸ÕO¤Á­‡lµ‹«,@õ≃âÝ¿Š-o&£ìØ'Ñ-9—¼ÉÏU Æ=òð5 ÈÃŽëÓ÷“ê;E4þD¼tE�=/4Wà·�Ó¡Ðß/®À TÆßð««wÖìï{¹%°:Ry‘„¸årËò仞#øÿeïOøÛÆ‘„qø«pÒÞ¶Ý‘dÉ·�íù�o;ñqœéùÅ”DIŒ%Q!)é'ïgQU8I�¢|ä˜�g·c“D(…ºK}d¤®V‚OêŒÁ·À=S Á7ZÊ᣺ùÆ%É/†�”ZbtŒæn,ß�À Þ# e~Ì ¨0ác| ½hØ�“ìò²�,'.Þ±w¯Fß%󫳪z-PY‹çÍÁ\ƒ@�Ý~ÓÈ9X«./iIµ¯€ªˆ’PþmÇ•áðk�NfÑ6(;�å¿ÿŠuض²©Jþ»=´ç…l€õ5‡ƒ<²î@NÔp[­  #¯t½(Z]®aBÝØ�®�‹­õò|uö¯>¤¨Ü—×f9¶°gûÿšú¾¢Ò*j5øÿ‚Ç0î¥F×�’zTa&†eŽ9KæÎ<½¶Â·öe¶>NlÀFCT0H—k3ìÒyץ̙Öoc‰•EÙ>©§M+¬ŠíÔ}gf`%Ö„§0®(l“ç�P>'žSVò¿^@»¿^ügÔg¶p· wìS)˜qSUr}G�H´gä1©ÍTÒ¥í68„%Sã�å¡V…‡ÊižÔ{ø4o†Ý%?+Q50][Ÿ@PLónjºQ§¸a�/%�˜t°—¨1÷�éw¯e³MD 2 6Û&ŠCïmÉŸaÎàdv}~TI¸-)U¥JP®åÙô¡Y²HÕÉ*ó¢*½.ƒ§êoqdUüÞ°ï·îÝc&ú0VtêŸjÂifÛ¥jâæ0Òôg¥çiùµ'xÝPª~´B^xNß>7pêžCìoÀ Œ~äéÄìù`p‡�WÖ¾ñ*È^ë6c;¯yÀ¿qöà¡õx0;I|)¬ ²wÇ¡×b7¤ê…M¯%ƒ—WÛÑî"–FÒõâX7m#:ÅíIæs«›�dMOyáK¤ Œ ¸ðêoØ}YgŒøIVäDŠ…¦X rM)°”v_Á,[cºÍv@+¸Ó†W$ÄÆ joKA¡]ã¹ñ0ô”ç¬3ɘ Wæ® aÂÒiõa+2a·(ØÓ¦ëLƒXù”>'\ ,¾#J£œãí! 9™ãä#Re•#šS¥vLÎaÑ„¡óIéÔèBš0¾¥½òØ�ïXH‘Ð9ÅX+J¹lÜ "9¹zjc44ëŲVíãwé°�±�\•ýKZË%f•èE=À€‹Åü�C4Ô &6�® ªd”vÏÔq¡ EDC—¶™QuuÖçß‚¿øOӓ⹊”߆eqæÚ«m„Z:ÝFSXË“d¹l86§.Wó[œº){föù }S ;´PUÆ-Š}n. ¦˜×VÆ,QZ¡ºË$VŠÏ쵘õï#¯Û²6‚©6J€M´IK¶6)Ì�>¯˜ LŠVšnk†ýƺ%èÕÐ(k”ëóeq¯8ýÐkÊh/3ÝWígÛ4ZQÌðAþ­1 ÿÓýŽóªð?£uÊñ Õƒ!̉‡xÊç̪Ն^™òUÝ’.+Ó­¬Hò’ÖùÇÕ=Ix(À�ÅëÙ:êïg5ZÝ™4 Ïjí”/3«Ÿ˜˜væõšQâ'§dZŽbW_Mtö5]*Œ™¸TIß4Ù]eûx¦[[]7õŸÑnœ&¶3]:õ«{§ 'ÃÕSÿÉ%ÆF¹€PuwÐùÔ~‚Ÿ¯©¥Kü*îi~5cù“Ü1b¦Î™¶ÑfuÓ�tìM³Âoà'›ª}M6ÖÃ-F¢Ø¬ƒ ?Z±ËªþܦP„´ƒQbví©áìʸ|%¸ÂJmv�½jZŒî¤tbö}aÈoEï¥â0ý&abîãD3zÑQœG óºŒÊ—^ýñO ÑÏ¡nùd3q:þ™.:?r%-çËæ(‘Y%<%Py—œùªý çÜ)ØîøÉ¿Ì#y· üdÅÖè?º&�¯¿rEÕ2Uüäó1â'#$GÿÉÏÑ,¡:¶Û&Gÿg bìûSüdÖA?Eˆ7Ïø l–*3ÕëÚ‰5Diñ3îv¯8_Z9a¾GÂ>ذ<Êe#Ý¢Ò`‚ µ¢ !ËÞ�øITê]¶žøI1Bªý.´ýfà‡Ÿ0qÍ; ç–ꮜÉÏöOG3âòѾ>l1€vR­%{�Pq¾ÜÇ *:r�†Z|:Ùûj@¦> ÙÚzg´¿õ›Ù­g“ªj�Qïž‹Þ �âb$½D¯ˆ¤°c¹ ä»¤ÙñT�”Ïš¤ÜؼZ `²ƒñè[rIM_qt )±udЛÔíýOpù§½œsnñó;ÙWÌp”²Ng6ûô1|5†?êæ¨”Pœ¥ƒä”=QUÑ~!I_¾…¥Úü¬6^›Æ~ò*-~Í7Qÿ®Ùž±‹tÍz á BÍòcDX¼O[“9Îʼ\¼1j{½k[�] F¨Á0uÏ‹o=Ï@L*P¹ö)~™èsuUX8• ºÝº+û—å,…¼eù¶w†½ºÝÊ_ËÃðÂ\½º´˜7t•†Ò�[kUEü}fû„_�!ˆ,²u\´‡úÌñØ÷Œ×³ÉOíÐoNM ¼ô}Óúò‘«ƒxű¡ñ�‰7™FÑL‡žL·è,Ѫ™@$IØwÈIí1šÝÜ!k³œ]£ÖäÖ9­ìf–/SÔ !›Q2{@ÑI¾Ç5izÙr�šhÃ\@›:¾†Ê:‰Ï5ammlŒwp6œúG”ð7oÁ›ó¸ÑìEéÅ]‡Œ%X$;?•E+–”vø�±ÌRd–CÌ)Òie­,µs9$ç%Œ:åô…#Ý�Î�Ù:Á÷¼‹bC Òw(ø#€×Àä¿Ü~{ØuნtÜ꺳ï_4š×ø’ýûJsRpƒŠ„Öòç�˶æ×�Ù?q®™_­;<âÆµ|&9Åù¬/€¢sŒÌ/æ}$Aev&/‰âœîœ²íµš¼¾©mßy=ojÿQ…²2·ö©~8CÆØKwPn{1‡Prø SöüŠ6Šn롌Úf¯9�ä?Ëôé­7:åa_hÔ9Žäu;Ç�z‘¦ÄŸ?qO� Ê�™£t=&’›ýƒ›ÓÜÜ\ÌÜ !a‘—ƒ‚cɯ$~œewev%im0¥�Œ­™»+sö­0ñ§6®)¸Ài‰+ì´ÐŸ”®oà¢ïÐÔ„õä¤Ð˜±÷Ë­o>ÿ¹;Œæ¶}?Fsû®gøæ¦ùÛDñ×1Pð�¬'áA�2…ÖÈ’m ,8Âl‘¶¿¾õsoŠÔÐ, ؼ›M±|âZ’�>~4„¯ñÂ�¸„sïhíûdˆä¬¡0Òâ½V�rMçV-CçKœ5ƒ†ÛmL�Ånv¶Rywû×éC’Á0ÀRê{û ÏOøÉˆJÜe›kaðöt†~eQWíè¦Sµ—_?IÎ2“£�¶¹ŠiÔ@/†IÍUeb“w9UfY8jFWh“+{7Œ‘Ž’È‚26."I²³#ø]Ʋç®,{?¯ûÝåÞ�Å(‘ür†oÐ8å‹ô'�7ϘHI�˜ß‹0¤Eø�ÇL­ÕÊ™å~ÀÔ$&GU: C¤ot£Øà¦•Loæ9U:“(Ï2>|55e‘E«=w0™ÖŒYtg&É5àfb;Ù™`‹ÔòÛIi”žŠ�ùÀ EO=ô�¡éÑ¿CÔ-‰0qˆH“1šW Ëh2š[HÙø@¬4i|0˜düsË·¬¾54\뛵”ùµñôéÈVþв¶��<§©1æê÷ûok¤ô!:0й/›2öf­d’:¶ãØÆS󶜿Z_™ï…¡d.ë©s¶~¡:}%ìËówrž?2þΊÔz—’¸B„Xñ2�…VUÁ0ÒlªZ™[ZHæ_SóЧþ¿“Üêx°!æ„ÔCzÒf0‚èä�®OÁ¹CžØŽG¼,£#=" ZŽÛ§QÑU+£1�¨ »MÇíÞº÷‘ÓqÙ#Wîyhø× ±ïÿzá!ïâ¯ÂÚÇžF�wÜã=©ƒrÁ‚uÈ !Ýl½uï%\¶z¢9{ØRæU¬@m´Q‡FzÁƳ~/ÃnlÆïò¶*[#Ÿ)N1m´dvZîMœ¡ç‚Á”aMöà¹Ñ½³v¼‡ˆMÖG7x!dÖ…an|’@o…šçxv3ÈÇì bm¨¡G*ðÉ�ä:}ïÖAâV�(Ü[vPyDn¯P^]õzƒø~úª$Á×½† è–�‹‰Ê1µƒhÅ$аì•MÇg˜¸íSw›cŸÞO²EyŽáË•}tÜdŒ¿m°±‚…Bm™@ôÙ2³©{7ÐõmÇg½º}v�’+Î!̶̧ Ø=ëdº‘¸+>Ð+Æbîã{F¾Øp¦"Ïs~«ÍÕØ.Éé^&®—؇@åz\{ì·{˜!,™wLj€ê€’%ã¦…ÎøÑ)� ìø êpgÝz w¼6 CĽWt�_EmlêžÊ¯Nø´]¯ýÊX‚:P6•·[î¦óʤ,(ÀßÉ�˜¸ÌjL¥¯Ê`ƒé¥þÊUn%5]§Ú‹œÆ°î7Êuï‹ï…S2³[ÉÑV(¦ÖÌuæšZ{\]¶ÏHö†pøM e~ ñ�T¾…O�Í"Î „¸²…ktÙß ìþ¾ÌäSãlðm4;_�]ž®hóÓn‰¹¦˜‚1ú½¾JG(Qœ^ÀÁóG`à~z%6'ì>�nP�âp؈%dH®ŒÔÑ�/[‰�¸–¶Í2åKMé1ãlõü˜aÅÙ8=¥Pý’s… ¶‘†pöÊD\¯*ì‘áüü ¹l6>…þ³|oAR€xÔs¯ù1»NÀ䛟üЃôZH^o\¿+2°~üIqì5:}ÆÝ¶ï•ÚÄ­Õî“cWžmüI×é9È6�áFR^u•úñdD:Ψë_s¶­Îø¤k™+Ê6h1ÀNy‹:¸|js˜ò*Œ¸Ò•)Wbp*�þþ7ã¬þœçžÿè eúÌÈó½ΪiBHôê_M�!¼á ~ì‚�À\™ôGÐIšmm^i�±Ì!�ÉHÐx¶G"èsà8W"…ü^ïØbø-ÛcËVÎ4ò>�Û�=çïÓŽÒW'ÙeïBݲcÛèÀ2Â`l£T³ÿ`6Fœ&|-üs§RC”(j9é—Ο:““òÎa‚y�pÔn$ùýßþNøªÖÜhlYà5¼«"Q!¸v,#g.}[ëL(¦±A–•î»HÞp>;IQÐÒ“­p2ÍoH¾3šÀgân†S‡)Ѐ�íĽî¿;�ÿðuiåÙQë· ¶hd �múì}Èh˜d'hFl¶1EŠá/ JjC”èy»ÔÝ®|�ÈDH&?g‡”„æ®{¸ÿÜ)‰ãÔ†–ò5#7i¤Tùu®Ã�4¾m€ƒ½¬Pàa‰äWIaþ’ê—–ŒTSVÿÉ�PÙ¡’BØåÔœ¾‹pWƒc˜ ¨Á,¼§Õµ-ÿNF¯Ëƒ•}‚%ê~'m´q§í&tÜ\) Œ€‡Zn²õA‚�bN}`p¹:�¢AÄWÑAi»@ItFLb—$;(È÷³+••;{òÆÊÓ^òEJâ>©î±¥DS¦À‡\©6;7^·Å¨/±9�O­"×nZö}Äóž 6D4Eë$5e”À ‡ý>)¬8³ ë¶@]¥Ûâp È6# 1W›’ò÷J*–¯�Í€ñ ´¨w™A5@¬‰­À³ãϨUÛ÷´m”Lma~™ZÊôSK_’5° �g·ÀÓÀí{é� O5rLÕ*i•¤Å™_y(y«ïØbBœfÔ’kMr}"m�-°FlOKãcÊ—˜r’iÚ¤ÜÌ-y¨’ÃÝ&F¶Ï½C¤y•Ÿ™\ãÀ\«tŦ)AÈ­Íf̤Ê+H[ÿ&švEÂ=Ûüêÿ*ÙÀHP/é •&†Æº&ÃÜy�Ò©O^· Ãþ4hÚá(ûÛwoØ=ÔíR !ñµ£Å ßÉ´&=×~Y “dMF¯¼,,æ�!íB'öäæ8Ü´=ÌÉc¬/,‚0(8Öá pBˆ6 6Ú.XÒ�+6“+F<×.“žð> …¢ªÍõE(UvA'{€Óßô*ÎZÿ^3åÓ,쾉`n0b–i ’¢˜ð ¹e› /cž(ÅsIÍùf@ƨj‰Œq`<²‡ ·*Çv ØhËMlÜxHöDqŸð%¾ª(@z„”kÂLê@7Á6¯¾B/žI!´3b£Œ;gl »‘ÕÉœ"2U˜PÚð/¹R_²»öÊ6“>h`é1*!WÒgRƒYc—2•1-É£ªžq„©ïö>Ë‘’÷š Æ7‘íÚYX* ‡]¬�Ãp¥#Ø®`† ¶ÊpÌ$xâ¥$,ÙÚ �¾¢…‡óßçÝ5Ø&r» wt´ñ3¶á0Ç6Úp”ý'!HM_á…JOaŽ„Р6Z&Àߣ¾&ÐôÉ|r|‡»±²[ñB%‰­ªYŒ'ªm—ʉœŠÜÑWOw“ÈÙÿ~?Ði²Ì�›,Ï`rCG’ B•˜˜ºËHvN²ÊËŠ3s÷°Dá¡D³‡~_ÓœIV”À²µGÁHÛ)ßï§e ¤€‘`AÊèX÷�æ²ü ¶P®7gÓ“¬ŒÐg ¬xwLnˆÈ %VÉw+ ¢‡«á¶ñþP J@?‚ÙU¹�•Ì«âÚÖŠ„2e«Du fÝ—ÀQ,`ý‘´oã™’“änI�NãÊ‘ù2貑þ*¨´ũȒüëV³­Ž ^yÊ•ì¯�Q„×r^|ﺎ/3±‰¹Öä]7}†ð3•F�qÜ@MÉ(çzIž¡Ý‘Єí^€ÎlR ûË‹b1=õˆµ ŠxªNîoœ+…FÃ|IlQFê”@Ããèi¿Ó‚±"Â^Ë"ˆxJ4is Ð禠I;"q¿b°AäÝ£¾·ŠÛÒniÞìÅÍ­²�ãŸB¦]EÙ 8 ‡"¯O‰Tv çÄék_KèòžSKzt ¾Úd&'à´ÅuoËY(¯#êÊj˜ÂŒ( éo Ö]²š–HWÚJ¸œ%¿P+sÊ$Ç®+MpW#†y%ÁÅUów@Z/«µp‡&± “•~Ô¾/^*è¶F 4‰‰‹íJÌæŠœ‡"�—å]¸œC‡®úÍ`†í¢P´­oqmiWsÏßÅÅÙ•éJbcâ„"&Ìцä£+ñNÄ ˌà …£4ƒÞš%Ô¤�_IÅ|ͪWЬƒðíEÂã Çí‚Gº:q�&ÛÄ Öc7è·A¼|òÞÒ9Ö?'Bø#nE¨,÷ <$]äΰ¡›ÂðçûÂèƒ[éô/¸ôÛü‘½©4Ú>¸ñÍÏ//-Ï�³·Ë-¾ÌÜãUËöå>;ÎÜrœ“i5z½ ïÇž,è¤E®}`ó­Ú -4ÚüƻǠ\Þ Ù²ûïšÎƒ z®Yäý1rûZ—\ˆ�ä¸äAaûäÖ�ÝÿGÉÜPB݇xq b§hwEÞàž3óÇ?þãy�»ûñ^àdÒþBã¾_?…@õcp@gïZN[0¸h‡# ˜Ú8@Ї½ ëkæ_uPuÏÐN…UÓ$ìB|kù“{ãRÁÞ²ë5V–›³ Mw :ø—êSì«Ä²PÀ‹ó7NðkÁ6À�Ê’]´}É—ÎkÊ4‹r)-‰ËüX.W¥öÅE�@Óc@ÉI®!�›�ŽL ."g;äW«#æ]� �”ú$*e�œÏô÷ž,Š9=s\y�‡r—”$�K?F3m“+|…s5’ãˆäÝ;ã†ám{17Èq¥?‡¬_ãp�¡Ó …¹0­� ñŒ2<ÈBì<Ö! òÂ`… þ²ïv9Ó‹ˆ‘~ßT AÚ2j?Zjêш ¨í1Y hÛùÞ&±¢ê< …z€¼L“Åi‘F�Ž�ÁZ.Žˆ¶e`Ê8a¡H†D¸@6QÃÃq5�N-Ëžn´�x$€" Úx*ÜΟ¤/è› Ø$3Ÿ‡àøÃvàÌìÒrma~‰„}‚e.ˉDªC6pèÀµÇ](8ÃßÜ~ĸ„òÜÒüÜììb5ïV ÄLMè‘®jš«Ò[µU"ÿöwÖ¥ïM¬…°úUõ‡Ôc�׌6&ô˜™tþ–I�Õ«W6ï¯À¡.4'^¼]õøìäXø8dSÖ ú&;yÂ]Rúvþó¤ˆÌ=¿9/!å¦óRŸh$&íóÎi27! €WBïac¨.ðV)øUÞ'ÄŒ½•Ù€žx±kIvÀ#`éi¥B¹?gHsW¦  Æ{H]À‰øwRP¾ãпR }9²"*Wqáé¢ î5è{�Ò5;lm4ØÉC„ðbîxªÇ&¸ÓNÙ t¦lÔÉ—‰êÏÉ×Vkcò#¸'Ò2I²Žs!·„H ¸‘iIÒŽDjÑÕ+#”i�r‡ìú^C˜Ž|M¦;IkêR¡¯–âTrÏkY‘[†ÌüJ*9™;4�.[î©r9{"_K ÛO¿2æoøw=(ƒËéÅdAâ8¹jbªT¸9âAk®“÷Í 'Z{ƒr€ÒÚë„7¯9ÇÙäªD,6Qï¸óOŸæŒ%Îk"¾O³C`Ü•ˆ÷&7çjb:”k‘Yʘ ÕñEÄ#ȶŠú{d@Z�ƒ@Z:²°yOœ[ÅÙÎä”L¢55­ŽÂ =yзÚÀü’í×?  %¯.“DkôŃˆp˜wFØQ ²w•úkPéA³©Ä€JâµF“py'™P5™,=‚y#¡qL4B¡*3Ð(´Ô¾„”ø­Ú©b AÒ¢[å •×"x‰ªŒu—+^Ë\‡Ìž¨Á´¶ul$D"œKv–´u™Sá‡;qפ)ê2³Ý p�ÆþgŠ,»žÞON¸¬0‘¿ø£š=õÈï¯àF@ jù$Ù—»^ÛmÜC%Š‚HI.c u—³Ö…‰ñ:ÄD²ØžÓ$ô·‰ÌÝfͶÈu€(õ�?�þ°kTKWUsFÑmŠ¶Ð¶"´ù¿…¨HBúš°˜X(ºþk Lþ¦øñˆŒ%Ñð7!4…èÃbCîWg*ÈÙëƒ�.ÒrKAù¿>·ù±‘Pˆ«B¾H¿¡‚8±&:’+ŸZâøùNVö-žD�1’Řa&V_ر5×9:è 2¤ YŸg ãó×”±vª+ù±É‡5SWZrV/S_£íVk¢Þ”0¨–7 !h¡Â_>'G�Êo óv)Üž­{нÉéñ@Uþ(ñ‡ëÁÈ1¶ VnpȹõµT‚”oÈ�àtÕË4€3/”k.u‹bîúκå3¬hŠ!“ä%0‡4N'’HµR•"Ñ/?Ù¶”@«!¥&(–µmž<¡r™Lø9Bpµ;óq43iJz0¡¤½¤H㘄1�,ªËÉBøLzWˆdP˜÷žJŠÞ¡Ô07†¡™rT1œ|41ÆÃ„Ù00g*U c”hHðE댜=àß /ù†? ùŸëÙ>Èg•”ÜÉ®R½�ž¶ý¯_`zhÉ5{Í›ü${�lð!ó" 乺•*Yü¤,óO°ÿ˜SˆÞUTG 6I¤0ùíïß¡küBú $Se©4W�="â¹zIYÌh“bD(WB\Éøî_ŽÆWiÊûÃ^ÝÃÌ·nØŠ‹“ €\<„y#À¦ }Ö]bHÉ+"àRMì®}?bsÝZ„{Áx—^Áð.—ãæmC/†}çïwð•'À¯›¢[6îhØ· 'i¸ä=.\Tèã@¼-$ÿ’hÁ¯Ê¬êý¢J¥"Èuz¨WšU¬Ü ‹ÉO5å=*9I5(Ÿÿªøz6=oP~òEUPŸeU_O±¼ ÚÈ5VŸ>åB+¨Yí�j(“ažè!Yš�#é2”–0‘\ÐÇ ëÈkÜcî?xç«~M�øeÈj€-ùú {­òe UŽçvežt�¸P³G|ÛD*Š ®Eâ‚09!ðAgt9�!Mä\MMÜM_�Ë$$acä÷jâ.™ n­ÿU×`åå䈅†Jb¯Ðnƒ&ÛŒ¸Q…�®¬Ý-ú %hA’HÒ�'HÆÞ¡ñ”ãoýÄ üV‚çã�»´š, kaiZ˜• %ócbpO±k³ÕÙª³�]�ñˆrZñžE<ƒ ÜGl‹´C·�™¨Z¡‡nÑ�¤K*‘ƒÞ½©Ê�¦Ôc‘zâœï` 2[­ø¼‘�¹e 4|t<¹.c¶3EQj§¼É_/¦±+ØT“äˆ÷*u†>É<ñMbÂk•ËŠ ˜~‘3%u ìÎ~ þõp’ƒa²Û¢­O¦TŒàaƒÉ”æR›_¯KÃÃïH�X1JʹÎÔ€â˜#-¢)FÿŒù4®[z3¯Âô!Cöü ò® B€/9�ll¢4­Êå„MìÖÌJ+Ö¾Ä�9�ò¨CnWµäüUÔqÉ=I&œôIœ„Çbv!ŒîˆÖrÀåMá‰Y«�u¶»åœmŸ]¬�l9{§ÎñÉÑ»½Í­M¶Ðk§ìd¥»Ø;Û=:?sØ7'k‡g—ÎѶ³vxé¼Ù;Ü,9[ï�O¶˜ ut‚÷Ž÷÷¶Øó½Ã�ýóͽÃg�µ=<:sö÷öÎè³#ì–ƒÛÛ:€['»ìϵõ½ý½³K$5ÎöÞÙ!ÀÞ>:a·äñÚÉÙÞÆùþÚ‰s|~r|tºÅ†±É@înŸ°ž¶¶Ï*¬göÌÙzÇþpNw×ö÷¡;„·vÎfrcu6ŽŽ/OövvϜݣýÍ-öp}‹�pm}‹ºcÜØ_Û;(9›kk;[ØêˆA¢y§4Rçbw C¿kìÿ6ÎöŽaJG‡g'ìÏ›ñÉ™l~±wºUrÖNöN9Û'G4Y@1ku„€XÛÃ-‚è7׉}ŸŸnI ÎæÖÚ>ƒÇÖì0µ°|¹ ÉÉSB¥Ñ˜iG‘’V0.7!¸ã ûð�OÙØdºþ"Ñš_†mÔ]5x¶Uài0ÝOóT=M§ÅnT‰Œ†ÜG™Cç;ÄxA¶yÒ"žlµÙŒP¦G‘ž§ïGµKÐ@Fëð{[µš;¤Pwj#Æç±ÁÉ1¹"…{DÕ6ÔäÙ€*ΩÇÓÊJîŒ2;€M; €¼V°ðÿƸ1Z=à]Hq1eñ¾¬¿_ÅeH§ »ýؙ߳W¤¢+ä|ár®<ÑÏ1Â2÷�>¥”`-§_FÚo`„“f}=L(H~©¬qL¼€J,¥øBr€ŠÍáê/ i£S´¤ -N;åW¢M,Þ;À3t)x2}�¹öî)±©vt¨lˆJk9]ª>Éð:ð½4ݸ„W.æÚõšìÈu+;k}¹ƒ’Ë™>÷0Õ»ÈÝ ;!òàÞΣbbTìØ{2\[žø�Šy§ÎœŠBŒÀ&&ÁžÃZï°uvû ¯)Àã5“¸X‚.¢l•×’Da³œS1GÄuÚC4±È Œ~œ£%õ° Gøl•–ß°©€dEÈ~W‰þÕW.‡ã¨ —”mšX$· bv¦‘f›ókâ E|Ü­?ÙtPaˆ;°âìRÎíI/·d`À´ }’q¸Â‡ÃB�¢A€9¦Õ `òpT„Ù‹Õ„ÆP!  È« 9¨g%gR bBÃä¤*6B¡ šEBãìÁ¢©dëQá;ˆÉ­ì/e§A¯0š¹0šÝ}ÅÒÓÆôÚã<ïÄ¿Ü.º_Å´fj¯J'iÚJU¢lLðFóÍ5œ‹%Xºå´Ï¤Grv±ÛÌI§¦L3µNÔÔ¾�÷áD;„¼†2£s‹ß1Ú­CtTJ×µòÿxšŸÜ½—Yáõ¼€Ä6jJ<‚ž¤MŒI(ûÆM³uçBÉüÙHK75?¸›vþü' èÿoÿBÚä׳üëÙ¼¯S-fG¶¨¦ÚTe “œ’6ëÿ! üW7‰«pŸc­Û�£Ž+À"»îÀ•mÒŸ+¹ß´)õ§¬Úü-¯�y.U]¯ßŽ;úûšÔê Í�Àöm9nÕa}f€œ·ƒ,Øz.Ù¿ëË�0mêÙ¬åÙœ<‡–Ï ŽföÉFS=î…Gôþ¯{<+\šO]E‡Y¢ “¨ §Kž]â¬þõb¤m ÁP‡,šéÍBÍÖºÛ±j+½ÀúÁôÔÒ ÿ)c¿Y"  ?õ2ßø¬ÞÝ‚vè:÷Ú¯Æ`ìïx]P‡è¿EŸÁÈÓO)·ãR~gº_*ë©2g”˜€—Ko ÛIÝ»5�¢ Úen·WyQnš‘61– lj8DÒ1›n)ÞÖ¼¢tùY Îãªd.½ ³¸¢'‚ÙE�¼ZÏãõÌý>Û’~¬©^¹a"$¼ò ËfI”_pF¸§./`ÎÉ�Q8é^� ÊôçÆP¤D&N|ýÁÓ#Bé“5H£Ý7 D‚FYÔ�¨{�,îJÇó•Ôkå«1§œJKÛ%ÊDOR:Kì`~L*XíŠÌÒ0 ²-^)q‘2¹€Ë$AmÊ–}^EDµW-ňÍ@þ"û‚ú´l ‹û4€õ­Ë–cA‡†#`g�¾‡qd¹­Ÿ�]Ë¢Å-ƒ]Ê%,ÅÅc# \ް÷“Jj „þÙŒãøCÉlÙjP®@嫯¿ Àþmý5ÉéüŸ¼×pªéˆû€oû(ù·¥)™µ¿AÛšþ*S§ûÍôµ:¾*Fg‰ƒ§cnÔ‡s?µ¢.Ý‚_¡‰:bx;r€ÈÊþª¤>¼ ‡0ðEq4¼ùñêo ºgy¤rCTk»2“ÏK#5–Fà™¦Ü¨¼ÑÑ‚ŠÃÈ`„>VŠÇ�¤·ŽôäœHXa§¢nåÁ@K¥øÛߌ¿þ�Q²¿Ì×d~–Q†—'¦ ú4FxµH‡+�çŒÌ�颇¯ ÁOgn�Ån`ï(­ˆ8ˆº‹Ë³(Ü“ÐÓ^~ +Eß s Øo9pܲiùËĬy}ų›^É¿1­i4`C$XÕ/åˆI8¹¨b9w­v€LLÀyQ£Áp9Lâ©«ÂÁË™•vÄ %É¡ õ¯óR´%•Abû þÌ3jR<õzCKæ‚)[674� ^!¸çI™—£³î^“ïVËù¹y€[§DºPÇ©Ø*Zù¯\~³ËøÒrùð{Aiô‘�p¦8:ŒìI) 2‰0•Ä•XùÖŽàÿ0ŽJxbQrL¦Ž^E.§B´ð(µyî­Dñcœ'�°¸¬m¹GýÊyå[ü–føy¬éø?ÒοDF~o¿I²šÍðúw=Ƥ{aÝ�^EW+�¿áɼÖa…7²ßšö^¾�å$ÍI¦Ž:ÈGu^› ¼ ö’„œ#/m#:±´Ù­-YÛD^M­nq#™Ã^/çÍ9‰Ê7s8—CªÊa�Z¨ª5·1C^Òȇ|¼p!Oćéx2×åhb¤a2bt¢Õ ‡¢)ø™F<Ë|â9-Oßí`QHDAžw>w讨)¸à—7 §«y¹KàÆ‰ºAlÔáÕÚñ )‘ËdBj@ìɕ΅$|×27ZÅ`]¦$-EëC#ô£ºÓTr•cŠX®ZFÛ$•Ve¿Ýò‚€Ú’Ó¡priz÷{ž^7Üû„†ÛMè�lj�ïFÀ³Jüæ-Âÿ¸IªÂÉÒçz½J~Âe`ßõ ø,Dæehz‘ß2%Îè3¢ë�ß~ÜÁ~ðô‰kîõ{Õ”‡4³ž [4Í…ÛAꮨA¤-«qàÔ))éß�Ö)m籦&Ĥ¡ì™¼]¤ô"GÅè“RL&ý®ú¯L½ÌÀ¿L@ÜY_ñ‚:¸Œ¼L`èµÿ`£pA¹û'•oôuþ%ç|_9Çž4¯¶ô+iÞ¯¤y¿’æýJš÷,IóÀîƉÄ­_úd–Ñ˯<ÀÊd}§\ÆïO…ÇædX…?&3ô»÷2'«È‹Ån8•D†>K:>7î$sç’£s8²,c…’W±)'·Ð”à†ÿC,QÆÚ CtZ3š`ð&>=Ð ¤¶ÒE Ýè¼.‹ÊÈžís¡ýÁS¶$‹)'glÔZÂt–1&ºÄÆOƒ/c�´c ë ë �ki4øðôM4-Й˜,c›yV²µ}ógÂÑvpÆ@ÒíIbK‹‘)�-½¤ô[sõ­¹cp=R5µaFSs2‰ânJÇZ ñÃ18©}9zÏ·jfC3�mþzèíT/éV4E+øldZKËA¯â{µZ™§|ÔóëÀN,>äW™Íü–�†™¨ø‘N;¦&²Q‘n R•Hy—×Òx¥aGC LŒ�êWíÇž¶¶›ÆštV;íEÖ„¹MIC�õ¦Ä"~ô~²?«Å¨™–‰ñI¬Ö#aiHÐ6ÿß:À¬3/N3°h8äæ)7`k«-Ë�'je¤ï£j<šˆæSã�ú°DÏ?jÜ2_ÚKÀªO¦†· ¶—‚ÛÈÙ…²ï¢ìû�(ûžw Œ’ÓNfU$µDú�>Þ*éñGl~Qƒm9×'›D¥; ™�˜Pþ?³s½Àíöa€1•+[/ ©jÆÆv~²Gþ* Êd‹.RЉZY¯„=}4Q6×/omÖÐøÕ2 2›X9ºi¯¿YælÃG~oi« ûŸ‡AìMA>C³õ×IAð>Äo a“‚)|ÆA«ß âñù±ä‘ÈÜ‘‰Ã ïJÙ¶ç5}×™bxlˆÈ÷h•SVƒ—I‡*®ã8èÓi|¥Ñò1™$K $¤“¡Ü ÚuaÕEˆÔ¥åaØ-ã:GN¹Œ{�É.ìd¼`Â{ ¬f“Ôð/�©N¢Õ™0M ¼~Åfb¿Ï ‚ˆrW²F °-5 ËÐ’uíGÚ�9š56æÌäÛ¶gðl*S½Ð«ør†õöò®×-ýÏÜûUTLús²V©M:ìE?úsFÎ~{{[¹�«a{f¶Z­BSþÉêCܵíÃÚÊÊÊ ¾eŸþ9ÉDßIçžÿË-«ñþ9Ù÷n�*ûß‚3‹ W1$óÏɧ%“Œ z·ë€Ÿ‰wk`�‹O@{ËA&Ÿô¯“ÿ3·Å&×ðÃ@d-ÙÄ÷øOˆÿ…š–NÚÿä 5‡É²ß@Ïl°qJšÈ"TE—²6"!ȶs¸›\š`³©} ’�º¨0�0;¡×@ÿy„e‹Àã¬ïAÄwì¹ÍŠÁu0&´lðY’ ü† ‡ï"ûʉš‚ÍH¶6�¡\®Õòmš©0In|Œe�nÅ—A6I)UF¡Zµ”«$'a5‡Ëɪ¥A_…¿�£*Sìk¶~¼v#Ö},³,Qµ7°¦@r¢d.â¦QþMƒÉ¸¯󪃿Gm¹ÚôÚ�‹_f|Jw£«0�‚Ïïc•³*€¥íMÏ:dÅrÕ„q·â·ûk؇¤€ª)�f¹”ðÚ…€}ƒ|NÒL§hšÓ<×{ò~ªáv†FÇùÃ)ÏV¦ mŽA�M͆)ÁÚ¨­­f;ˆ"�›¼°Á="ô×Q¥ôf¢¾?°­…)¢g4Þ°,õŒž÷Ü`'ˆo,AN7ltJrüâl@ £»UÁ_â_©Vjû·xÉwÑ”­ñþS­k%ñuÙ©)s¸ëw­,®“†Ãx)^‹¬ã|lê‚s”óèoͬ.ò¬Ãà!!ÿ~…ѽ҉œø–:O�¨Ê÷íî†GÐÿL÷1ÄЦì,ï$3ûL‰Zy>£gÏl95¤Wß$娘¿™?Ä6žd¿„T?¼µ5£šx—¼‘3–GO‚f÷wÉ)‰¬ÚƒóJÊù¥Ó2f®Ár3~ƒ…ø�òŠ!%“fbô�™¿Vÿ»rï ’÷+-Å÷NK‘º0™˜Ñò½nS^�ò‰EãÇDËï� TûV]‹òSùÈö½èwF$‡ŠÒc*Ëw¯”âÊžñœãÊjjZ¾2õ&ë¾¶'V×@rßÈ&Ž…þÕ°Îø  }JfTI'Qk±ãCéTà“¼0dÏz 'k{ ’bZ¾å þ~�êA‰5Ba¥Ëï¶ža¨¢ÓRÖG8‹äÐ2E(CÙaª1BÏÄŸ&UáÔªY[¢2Á¿)w‚Ðÿ™úº£¦¤�Ù¼ï»=¿�$ Ã;)"U™0‰5g÷!�HŽŸµ`r¸A‹Ä„=¶ûžËuíÒA�liÙ*Á^Ë3L"PíÌs“GLyž"©À�IU"â´>ô»q™Á¡ncÐ8�N½Øð †Mù›Mñ0 ƒüT&°ét�gT͆ìˆýƒ%³,•:ìñ£ˆ6Ù›Ào*—t5.íÓ°7ˆ¨²m¨êÝ’‡\žâwF&ùΣ4Ö„¢l§ þÙzÇÊ¢‚Ú¿BÖ ÁBòÅHKø›\%¬E½ ˆ; J?ÖèG§=…¦ U¹Å¨V÷¾¤– !Ž I­pPMÔÞ=l èWš„ Ç&dÖ ñì£ûy&:“²æ­}ú·YŽÍ¿¥ýruøåêðËÕáÿH¢´TZ´±¼B ¥S{ ïFp 8kÑb^Ì5R§0Ëÿ "@ɧþã_ÖPz"4häÉôFYYØ["ëKa{­Ož †Ä¯'F$û¿IS(–ð¥i—ø¿84�3‘¼5ÁX·ðø)ÂŒnÍt{èaÀ=i00ŒÝ[Ã.»Ñýx’økHeáÉä5Ã>l}>5&~«s=E™¿‚^¼ä¸Å`¦õßS@¿?—›_èÞÊh)gDžÆÍ#+u\ Õk­¾Rz>Ù“Xz"Á˜Ã£:Ñžk)ò;It?mô|âµÙÙg2 JV]¥n�;��Á]C+®í€¿ík!·™f±°/‹èAŧ¾ô©Í)ÞÙVðˆ£€]Å~Û÷u¾;ÑQ ²$VQÛÁ&†�C:µ�á÷¯«æšâ—ŠiÔ¿ò¥$ q˜ÌðGMa™’ïvTS'5ýûÇÎNmqþëõÒ}îÀœz½©‰Á�fŸ�›E~®’néùXä¶(Ùë£À¨l.¬C‰¦¥t]4'’žèǬ™²¿À%ZWe  ð,Ý•B7úo,4†ÝP¡wBåVS™dN&Òoê2¡3b—TkrZO´I\‡Ø¯´YL~Å@-o5vÍ’ÌŽú`nÔó£>XõÁbÖŒŽý¸›= ñAæ,êAó>³5¼ÌlÙp¤ðÌh‹‰i²Þ)…™%ß§ÙŠÍo'A{µ\Œ/À ¼Õ¬ƒüžB4†T'‹œ%�'ô=&œV1{\RðΡwžä•ó ÆÎÔa@ÂRsBšÍù„M¥�š{<Æ]ÒßÎñ?C¯=ìºáª3Ï€ûŰ·ê,ð¿ëA—] Kâ¯.;ܫΠþùÝPZ‘+¼jph’c±N �µ:‚‚ŽIr»ª‘Ô  ’Ôi*—ì�4œkIÓ+Q"´kÐ�‹cÕz™”k•…’³¨¡.¤é5‚�'êàN–æ2µCò½¤“œ\„,V ÄüèyR„ÌU–ž 's£p2¿\' Ä ?ŒÙXéc‚“çšüü¨ÉÏ͘üüsMÞ¶%ª•Y¶%f+µÙçÛ £Ð2[-s³?åžX9ù"Dâ¡“§Ëè![¢Vy†¡óA¹H©¹Jf—¿éA©Vž %#/“Z‘C2ûM÷I­äT+ËÏp›n÷ öÈü7Ý#ϲE{ÿÛãÛ_-ϳA”P“�”Ù)ó€“ç83B�{ü6™{ �þ*R+´K 2"C0¨7„Ô¢0¢ ¯�ß%ßòž¹E€�é ™.¥iIK9)]KšéOi[Ò¬qJß’fS—43•Ò¹¤Y‹”Ö%}Õ¦ô.æÅch]L*lè\’Ô(¡sIœLSå’Ú¤I� ­šEKଡÅV˜S¹f}ô`¹¾Ñ*ƒ9qý®Wƺ“�ŽÛo“:Ÿ€õ‘ŒiQOÅ4X/r\¯L£éž¼ø ×h§ÔµƒJÇ�ÀÖÀ?Py»R8 7š²€$C ·¡¼J–t •t¡¨¹ŠéÙ’r¸�ˆ¥§ýš6�� w©îÊe©Wá^,L–‘ddN×^$rPwÛ.:h:=#>Äàu!Û¨ j}¤Ý¡Ì”d†g‘öÇÈ0•v3ÐURÑ\Ü"õL(l¡úoäAƒÝ‡Þs½Øëc± ?ù£ý–ï5ÿá¨ý%ŠÀzw�ÆÙèAijµØg÷ë_/ŒíþM–—Î7ž¢é F§|ÓvÊõŸåÿ៫êž+Ë›_kq n:œ†bƒ&�Ï?d¿Aבñú1•G`ô'ô½/QAtˆ‰—ÄsiÖK¦/ePK‰|¨øh²<9í¼T™LµŒ?ü3cÛé†Ã¤Eûo CL Ðîu·K ‰Æ¬˜¤X‡öJ"ÌÿÍ,8úe1vX†ÁY]™uUøí‡÷™£ÝgÎ-„*¸è%ǃ‘’»¸âœ P"@—ß�%‡êM£š�L½¨.7-[¦Iþª¢CÊž—1v²Ì‚à E™P®®oz}Þ)žÌÈl¨ä2ëz%ü!p/é8O·.h¶´5.Y^¦gm~”LÕÖ íZ—fó¯ê�DØ«B0T8¹õÁùNTÇãEx"µ¦Ù-1þ_ä´–ò8µ+š£uýGO)±,Yõ|d ÷Ú`ÐÅqèCç»XóýÆw¹ƒtxäÿUÂ1Iþÿ~¹|)Ñ]Ùœâ*ø˜Þ£/G “±ê×~œúNâÊk¾2ñélñœ/"ÅØ•é6Æ+kÜÆ•rQ± ×"aAÙëvýAäe7ˆ$ (6ª” b "^É’[AI,©, f¨Â¸—¡1d4SÔ—ä>özŽ[2"€»;ïžD`�èãÕ_–+,âDÉø\ ¸¨wÂ÷ž'(¸šˆƒÁ•ꎎ;ÁcM+ìòàº'Ó‰-AY#0B@dâµëù<ÈyÆNp䩯:³¥ :邨°œ2‚OaªTIÊïR}‘ ¯J78ÓYÉ臕ݕ %Õ ožM¢·S‘ºˆ#_u‡±£í¥A0Iï¬ÜUIõyÅO=w®èÔ¡ÕÿÊ8ˆCªÁù§yÊéYÑ4GÈJo€36%`ôaŒ%Gp‰C6H†ÎÂëü[ bIŽ0ÅÂIžÞäe€6�/°mrùüéW¹«%gŸî=ÁÔOøÑ6ªUµ²lT“0ÏItÂПjH ¸·‚¨Éc•>T\@LQ± HzÊŒØõØ‹�e ¤x`vTµL›†~ÑcMIÆ)Yet?j4ûGnyœ‘@éǰbì‰&È;æ^Œ¡‚ñõ®¢ŒDþ}D �Ï-¸íË&|ëh^‡i\ЧS¼I&FÌ{C8õà|ØÆ¥ŠÚ…¡“ÙS1bN÷!n!M˜eú\yT*Îe0.äTóŽÊ°ôE7:^Ä�z7~04I1ªÊ;&H:‰UõàspOWIéܰˆ!„»˜É!�T;ÀRð!¡‡|kÀ`Lˆ*ob$ûA˜�)¬ßä¼pˆUqãÍ9åUÚçê;µþßýÀþ?µŠü¿MÿæŸW´)°¡Ž„iòJº’ôyú*é¬ÅוÊÛ!"ÌCx‹¸Øƒ�B ¡Ø‹1\Ü� ÿwîÛõ èznŸu@v)l‘ºÔ¬`c$®!íöqSwOjÃ|ƒ½òàË2¹]çù]wŒÛŠPÃùé7 ñeÖîÁbn.JpZr¾xaÀ“×R”i^t½ŽÆà†!N7Òªû‰Å„ ÊÝ[÷^ÔÅ θVJ"YÚvÎk¶nõZNƒ„ð½€)_íõ�¾•»Í U>�ã;™«”Ĩ®Ôw»�Æõ8ò®¯pPXెß\Ç÷´ÔG¥«ùë¯Ùjµ>iÛÉ•Úo/;Ñ OwDÄJØ26¡™7Çâ@*씢X÷0-YZ hÒîk‹=S÷÷ƒ{Iä•°ô&ÇÇMBd™°¿}Üè5¥,W a÷p®M²—‰�zÚBJ’'vV‘%æÁ6�%Ÿ’—üó6ù^ŒZ>¢“¤çí3ÓäÉø8ÃŽƒ¬s:±^jè%ÇÌ`WÈ/A¢�ƒÀ”'–„Z{#ÁI²½¾óÁhùL’@p«h}›1ˆÛ"ý' $�È (r·Ì`¼nto�½¡àöH³>ñœ6Rômû7^Ÿ_ZOb¯TÄþC�c‚ 3sÏa©}ZvºnÝëªL5Yï´%Éú„ìï²Þß�EªÉ�ðdä•ÔpÌ_ÿ¦�è’—×e2™8*�D8"ö�~GŸ„¨-ABS°Í ÊWGö.`¨”oH‰aU6T*Ôì@ÊZ[(`��øÍ áôÈÍ&·†b"Á Ä�sF“SsBÕO3½ÉŒôvlËy–’ÃU…ŸP$”³ÎˆÈ�É“Žf:T HO`åo!a§¨,V™‚ì*>YŽV>!*œ<˜“LÈÕûùŠ»R+�k�ëÑ͵Ïu(DÞG7‡ïôvŠì�n+¾ÕÛ§üy3[ßò1SSÅ|‹C¨èÕà–øSó²ÈÀª>ŒÔ}ƒ—E)†ŽÚ\Pú½‘ ±� o�\ë¹pä� ë¶ÀänóJÔë|ŒLɰÆV¯´|žƒÂq`Á}Rh¼0š]¤ó¼…ÂÑàÈŠ2'TaÿåÙÛˆDÌDÃñÐ8¯^ÎˆÄ—ÆøÍä—ü�ª� T Ó¬'?šJ¤¯ôû×ežØ�ñ|긱Ÿ 0×Tá%ÒÊjótáY=èôÔ~•NiáŽå¬M,Œè¥B-üð€¾Œ¥Ô¶Æeí¶dÕF±RϨ­eC¼æ”§u¸0ëBnÃãá„y:q”cʽ®’@Ƴ† êÓèF¹5ZOò –CïÒÏû1#¯ÃHËŒ®Õ‡1§6¢7W5l‡F½¦ËáÆ@¶é ?ÍŒ‡c� /¹K$Ü‹UOZêµâð\õ)“¿ûl&ìFP~ž\t³X¡Âp™£?¹ž’F|ä9îšeQ,qŽïqïå²J›÷£è¬¹-¯¶ëî”eg¡ìÍ“Qý2£Ÿ-·`ª•ê"§7yâYâá�¤†™úÂ6Ð4˜§êò’m¨~êUä >5PòT㜟ãD¡:58|jÿüñ#�k* ôÒ�õò)£–�Óæ2éìã²|c¡ Ôƒ×�écY£tÙ :Œø° (�Ö¯l#¶ƒ{ª='W\Ò‰<$Û>Ê%:O‚æÄ�ç–ScÎFsú“Üñ>=‚-£-¶Aò?Ï�EÞ–yÚ9)N/MJå++Õ&Ä®ËqÆCÓÑ@�~þRë‘3 Ë7ù—ì÷šÖ¬œ“‰àjjâÝ”Å8Ø>²MÌ ìé�†ìfÓõaîØŸŸ’]‘Ø1jðúW¹#7À=-;Ðx.o# ‚1ôm¯ï…˜HN«ÎL‚Bs´�€ª1Uú�÷sâaµèn×d¡…ƒ+Yý¥p!kB�òHc±¼õHv7ÍDã=m|m!fÐÂeæ°lœÕÁKiüXQžÆÎ5ç/²ø˜Â·}KQðöµ^î¸óF^»£î&ýŠ+Lù­wKaòšAÃÇ"q94µ8ÁÉ"li‹¿�(MpÒWŒhæ«)´%�§o9h‰Rl`Êâ¿%ŒYvpBÑ¢)âÅŠæ�.â ŒÓZ®‰Èƒ:òO·Ç,ΰÖX ÕÁæw:ØœùáÓJáaY&®5KØ!²2Óí­Ià \Bç$º°]¸h¢OWS¯ Õ)ôߥJê}ŸÞŒ³éEܧq\÷î¸aÜB¾‘D}$z]Æ×²z}Ëe±N¸ûûÓö"l– ²YÁL>£Û 4úxåAÀ ¹Š ç´>ÖpÝ‚]ÄNÀ•_Ü3Nb3ÂA`0êÚ$Uå€2X“1Uz ªx•eÕ¶ÑHv^òé'Õ‹ îXÊÍ9 D3çŠÕƒƒnDÆ M#›§U'|Z1©¯P†…D/M°Ž†¨Š—ÎsÈ�¡º’‚“‡§˜� ßêú�X±CÚH ÙFËŠßoúdÍ»Œ`s€b�#¬ºù!ò3àÉz $}Fë…�*b›'”{Õ@ŒÃáØÕ~€Ī­f§Y0T@tÆë´"³E±±©ºÎIW>YZ-§®¡4ˬßKCê}‡aÄ6‰ÂŸ×-Æ-©¡“!+ÿHº#rBé:u5I<…–ž[2/À>ÛáùN½ÃI¡ë "oØ dŒ pÕF°Zç~_XàlûoXxnЂ¼â�/áZm«À˜p@…AâÕ¾—©ê¥Js?’P21}ší7ÇIŸ# 6Î$O —‚fF_fI¶Î¬š*ôÉ‹‚.ÈB¥f`Lù·¿‹ÍIx*ÎN}¥¼Ó…¯@ܲp¬ñ R ÚÀc€Ô0ìbÅCq|±æ!;ï5E«‰W¼þ7;pN†qwò?ÎïzÚ>w¯ÔS³ªž¨C›Ü!Ô–4. A }Š5I]H P\ø’\$O¨`f²Ï‡åæ�µ[Åž‹ux5 èÕWéW„̇õkÏ�âìˆhabÛµàÇ(èñØAû:ld˜/Mœà|".ôøÄÛÚðëûHþç$yÓvæ§9sœp‚NèoHÐt7²™ÒÜŒp:0H¢èÜ(.nTeä¬xeybÊr$‰&BWyÂ" 6ט�Ǿ ÃÕ�àqÀYVVà[• :q<ˆVgfÚlŸëPÑfFÈeiô�lÏ€S™©wƒ:{ åw˜°Á~Û#�‚º�ùÈgMŽÃä© =O4F� ,û ÄËŒÂ}Bo¶0¯ªš ‘ú)à’” dí�Õ�_™+Nl˜™áì¨ï4ÝðšüT#¸ûEd5§5WÔøJ� < Qc1²„I]JÄNpë¡×­ØÆ»]Aή¨ìЕdjDJ%¨Â¨ ò Ÿ$ìNã>!‡ YxŽ@y •ƒ$_y=”¬º~ZÑ ž þš] “’¡Ô óA*¨ì[�ÕP;)]4ˆ¡'pGóæxm%�:ʱH—£!E‚ð9¤ãU‚,}ð•^5ÕáÀÌ U|sqzP™€Ven�D]ŽF=¿ªËK“Œi¨r{§ÁÚ¯´ñy´q¸49JÛ1Ö©½øõwãGƒC/8ÒLDŒ3mH™ô^؆_é;f,�Ëm4àrÖa‘JiÌ�ݺaÿy‡¥•b¶)s�e÷¶ý=Þ0å.Ë¡îù§¡ˆç× x*ò³%Ž Æ¥M[Æ{›¶N”zÚL¨™_¼RÅ.¥>ãfz³p·¦Ç‹0E1hÛ€Ó B e(I�–Oò€ºñŒZa–±G2—üß´âRy†k¿Ž¥ß´9iƒ –Ê1[z¤Yi%›µofôýÎ>óãûŒ·²ŽsÆ{Ã¥1ãƒpëßë�¾�¤éQxµ‘rW&VÖØÐrRáçF�W…1³µb‹2½I7|•L'+1Z‰%e]XöaÄSZ�ÿÍ8mâ‚•`›½Ûµáòrê‚wÍè0ó fwii2F§™Õ¿y-ÓÇÏE2ëï8‡Y;~Ôn«Œï^itb;:‹t¥ê£swîWy ŒSfgõÏiJÈ<ùOSjdùA§™�—‘GFŒ[íÎ�ZwSÉ¡QMëƒU�ƒõè¡}�ä$Cõ# ÆôC"81°¯†JÕÚº9(¢hèiy"˜˜ r&7„ñ�If�k”\Ý>÷m‰¤¥…�—»³Ë^¾L¤Ã2áL*Ûè„ì/r'Õ*”´g²”î7 ó·×½¡}í“ B25´a¸aì·ÜF¬õÁó˜ù‘ƒ*H˜ ƒ4ÒLW8?žÜ‚’j”´ ©®ç61Xvö¯8tý.jùd›˜÷¢Ä»ÓÝ~ÌÞÄd!™jÏ/kªf]âÞºcäÝGÝOâÕ÷ÀBÔçq›‚´hPk*z õ„. Äê½±·ê`ÉwLž£ ½�‡nK àö åiøz(cšÈ†$úÁÖƒº+ŒŠÑ{™B£�¯)9^ܨLë›ïhóhª×c»7¬»Ó`à ¹Eײq0¸Éìúˆê^°Ü`I™öH-2oÈÊË£hÉC¥eâÑM°ôn8vœùÖùø‘v !FÖ‘Úà.Ç2aít}q¾0÷$x$� YTï¹æ{–2¥aùONqŠQL·üTñPZ2Ô1©‹‰�˜Žý5üÎøwÚÀÕxNb¾ØtÓ­“ýúD'A`à¿ë,ˆY��AÁýž¹7ºðc­÷ËÌ)>OZÍoÍ U_HÄ/Ç76ð)Ÿo¦'$�¦‰2e“�™g�$ˆ¡‡ex â!®®t郌C&Kv´X¶y()%1wÄB™¶9lPu†5`u¸SŸ(ÌYÜq„Á0™Cø$•›©Ø;T(IÿDúâaë ¹LoòÁTœ=ʲ r}‹ª-ˆï¹×è"v¦„J…ZØ4dj‘I$司6 ÷,»Ÿ£Â0Ø»ÍOC^ˆ-u¾QƒÀ�$&Fókž›ýM¹¨k‹cóÅt¸ä”š$©¢{ ˜ÌbYˆ‚ÉØãu)шOÓü[|$rö•A7³Ê·Õ%}%]^/:›F5\LÖŠÔœÐó¡eœ òAtÌ:âÔRkÇÐé 'Î~ò„5=�«0 N8½a£ƒÞ«X´Á �£—u*K1ú²éâ ÿ7‰NÌÏ3ìq÷FØY„Š£+…'Þiò Jžâ�ÔÞàH:ÁÈ¡ŠÒc2±�ô@gÇŠŠ/0¨�Я³‰'Ê žTtÎeç]§X†“ éÙ܈9hAþ0•i²ÔÁŽ4Œ1‡œÎQÞ4é yâ{ŒBô¨ ”\:¤Œ¨E§þÏC$¡P—²-9¾–¾Z¸˜_©Z¼ÔïÀˆÔ€BÚíkó¦4Én y½6Ÿ4ÞÄNèˆB ÊÕU,¿¬Æ«VF F(.¯2?¨ªÅýCÃH³€²ˆ5Þ¼)q¡’ô­Ô �Ï™vsÃ�Ó•uŽé¾~D²(FV/�AÜi¦’Üã¸xJ¶Bü¤@‹¢èØïpz#ÎKGª3–zd gäý 1вR¦0q® â¡û…–Š V8r¦DvL䃑 šéñoð’lf2ðŠ!]¾1âJJxK MÓ¯ "šPî mAÙD4¨ýoC?Žy‰“&‡Ë¨Í-¿µ\GH>¢p¶™ÂmD˜1< .±œŽs°5×$²Ë8×ýà–õ F^%Íî‹ wÃA…1*† ¢<ȯ` ŽN¸ôK™‡Ž…b'±_Œ*qû÷8rNë"s�Ò‚=V×»Ó^¦,*Hr�ˆHFµ²Û|ÈÂx¥"—J$U•yZ¼˜²‚w«É`8²â½\0Ûž¶P~Žèjó“âYxHÏdE¨„kRªDynnE¤#OÁª#x°è•¶J”ËÃA;t›´q+i´—éï²[_ƒrÙ²x<Á¯@ë²i^&J¾B€‡qÑë+Õàœ¢ñ­W¾k<ýuÚƒlÀÔ�NYÇ“˜±�Nµ²´ èÚ`3Á$¦•Üf¡a! MÐK›Ž€Ž±‘‚�røH�H®£Ú¡G„Ã8‹x¡‡ßó»nØÅ‚ÖHÏú”ã2!KÉË17<ëˆ}¤’$Ä<̈Jjp~bˆúa¡&*}FI^Æ-äUÚø�A2£C—>Zu‘ÒÙ©‹PIùr…” 4y+)(©@žeœ8[`?‰çw¦Eb@u¶Ô Yœ§èŒq›4†Xc*m§Jª4B7ªF‹ŠÍŠqøöIÔ¤V¬À�Œ2Õl©Baï˜�׿s¼h¬q.Uegvʤx".{<‚L_à øÓ‚t²{e|U1 ÷¼oŽm¨ÓSî¹KÌs�ÆÊ5„ó\›œ¯bl£ëöÀ>ÇNyÁ�˹$ÙPv9NF¦ò<V”IhT$³…Ézî)D�q©\øšÐ¤ƒo§?¨Àeø´”Ø$§ÇR­õib|a8‹�æ…8ƒ Eš‰Ÿ!s"RW—Ä‚õ¯CÊäˆK/=ç 0 A¸øÙ¢IP³[—½ò”fƒk°oŠ�‘iì�­A—§#¦tø½"•f*®Á�´R#-\ç|xÅæ'×t�²àŸÈMгs¿\¤~ )�—gÿ ÚüŸDø¡þ0�]o6xûdD =-âõƒ°Ù’Èð©+•»Í­UÇ÷)MM¾@´ÕOÀð<^~(†å'¥¬üäý¢¬?eÍ.ç‘vHå>’$¹Ññþ7A�Õ£Ô>LÒbx–I‰3“@>œT�‘L2‘‰‡kE„Y"Èt‚'ß°ÈÃ"-.ÏD;ôîË Uõ�Ì—�oø_%g¡ª7X©ŽnÁ¾áMÄPÃé‰D²~kJŒ±$GQRàÅi˜àùdTw© ©”'Ó�9%lònU2ìŽXµ8]3y*ª!݈PÆO‰~K•˜æt~›äLêoÕjUüÚjµ„ ¢ÍXO�«†`dRÕRæä&\M~Ã;Ö2¬*H%G ¿6û?RÀR_èB•HØ4ÅG½jI¨�%žVm ›¼"ž›�ÚÉlIšxp%qOœ�Õüó*Ѫ˜r(mÚF±3«IcaxÌî­±:Š´q†ÁÚ™ºHTô¶$ñÂk–¬oõ„`’Æg¦•™ùyÆ�¦9½S´ud�™ÍJ53–64K·jÄ+ˆãÍÝÔsG�¥» $C°ÇPyÚ•§æÜ9´ñf®«2‹Ï;Õ•1ësñ�¤ƒ1eíRHññvÄe³û…ˆß”¦ —x¸ S�cGD¾®ç•� lô¼˜�ýìŠ$dŽI;Î$ídX‰£[?ntø? IFhišÈ eÈÆ—Q gz*(̘ÂÍ…:[V³Ëkî.x–ÄA»ÝõdcДjϳ@$ ÝÏÉ“*~Èr‡ùòŠqGÛ2 xºÐ•úÔdÜñ{mã™—¼±l¹Œ�AÄÆIŒ$¼ÓTeJL^ÑÅ™¸ÖBX׬!8(m;XŽlÂv ›D’ÍÏC/äÅdÅ0'äùWeüÈb NžRq›d QÏRÄݸxè‡H¼)Sýñ œ}eP"·îb& %7 76 .�I>*Ú T Á—NÊ)ór€(%-©½RrŒ4šY l6D®z™G•@�Ãw%¤po/`ÚÙ7ȼ2ZŒî? èd{?j1Ì}[0E�ïdžÔRîGâª�ì™~ì<û·Ÿ’–ÇM)qÿýÈêz“ÐY8ó4µËåËJä­Ó¡,¨‰ÏŠñü33#£Fs©âãh¢¦�0ŽC3ä�1LÈbõm8M“ ,}ú]¤¡â f£ÉÇÉC¾£HóDB�Á þ’m¾·l33ƒ!ÇÁàs=9³ÕÙ9g'`óîõ˜F?9†Ç(Ó`ÌJýÞa ûX½zè9Óè¸aÛ+!;‚‰ê`B¥¤j ÖD?Zñ-¤ë}9²‚†�ŒE3h UÙ:=uŽNàÞÁñþÞ{¾w¸±¾¹w¸ã¬³¶‡GgÎþÞÁÞ}v„Ýrp{[§ð`ëdc—ý¹¶¾·¿wvYB`Û{g‡{ûèÄYsŽ×NÎö6Î÷×Nœãó“ã£Ó-6ŒMúpïpû„õ´u°uxVa=³gÎÖ;ö‡sº»¶¿Ý!¼µs6“«³qt|y²·³{æìíon±‡ë[l„këû[Ô›àÆþÚÞAÉÙ\;XÛÙÂVG Í>¥‘:»[ðú]cÿ·q¶wtSÚ8:<;a–ØŒOÎdó‹½Ó­’³v²w ÈÙ>9: ÉŠY«#ÄÚn$@¿¹NìøûütKu6·Öö<¶f‡©…åË­²Utý~,$G:£aÆDÆø2¶—ñÒå2~Êß:“(ý1).Œ1¨cQbDÁÑp *Êç]Ó¶0dÈx¤¨Dr¤ŸØô;aŒÿ?¢"¡õõ5‹ž)¤2#S'4i&/5‹ ;�S¢hü.ó+6ý©àËðYräMf\ü�ƒÒo˜Ýk~��@rÕ9ñ°–)CêN’$KàPvûµ~{ØuCL3‰äîŒîegíx�X*kRDËEWÑî¼zмŸ-9æØôìm)Ðol: O¶ÌÄ™ ÿÖ)^öC†„y+èkÖÖk¶0Òo޳Ÿ<–5—Úõö±Ø¢ù“ú¥«õËvó½m7V®6陿¶�ÿ“ôLÓæk6i=Ubõ¬°ÊS¶•�2»TjO³Cùü9›ìpÌo–÷äA,<-¦Æ«t-Ãoõ ›Äg†ÖDnÓ¶­í)N¯5�ÊÅ##*…JÚ#¢RÎN½ë6®uWjËÓ¢�¦ÉÖ[qzcéêÔqûÍ®'ÚêÑ6–�)=$ac”±X¿_¼f,Š}öãâ¯#UÖ8… [ûi} xÅ)Ji{�N_¤ìÆO2cH(·${z•ÀEMm¶±¯¬ës¥Wœºo5ÈŽ†>k%#·ZÔq•ª¢ô ôKºž˜® w ¸ÄaEÁ�‘ÎAë%橯Ð{`”!“3¬’]!1~9H•M�ïEÜ»eÙw™²›ä·¿�½S­¬À§¿jˆÍ �Q9ªx7Dø—%‡­XªÄr�0— °²,2¶I.î‹fÆŒ#4Qâøgó{8£�IBÇ&lqj}žžECAÛ£S�Ú�»Þl.�‹ü/ž¼(M1z¶˜(í}AˆHØ0±œxYÖmöÀn3Ç”+yæÈ0?)·Mï»í|Wv[U+1Èç7Oˆúëbó„þ` ø õœæe+*a©jJŽŽ™‰Ð‹‚î 2*›=³·#Ëo*ÇocF³i_‚�2ËO,Õ.ò%V³,ô¥•ɲ~™Á�Y¿M2d¼ešK!7€ì<„j/9º cî¦ßþ6¶××WÖ6„ÌdKà˜¦ŒæÀóT¦3 Ðâƒ2‹@ŠÆLuý(žñn‚îó-ãéŠì9"©¬wò—Tªýñ×p„ðŸD+õH¹Ç5�Éô4øt zþ,æ2Öæ�lÏlų}ö_¶%wAf5¼7?á÷‰  hV6æPМ•¡O¯˜E'@Í|´aÃLEnÆ4Àì96̼ñˆ4È^lÕõªƒ¥Ç¤mhs+òp—øø‘Iˆ!¥L¾Ñ|Coޱ®Ýtbd) /{°¹Ã}ú'Ìz)“¬.=þ0ƒ6ljV+2Ž$ #·m©Í«"=ñ~ü·²žg<ÆzæG_Ú猶Nª`Á™VB›QšS`�ÐÛ_†JöݤÑ0QÄ| ‹Ç*`çP× ‚ (Ã}Ð÷2èNJ”äI*ø©H»Âx:ÎEN¥o)3ÖÒJ,3Ú÷\�™e?Q*è65¥±HOç †´ïPˆ‹Íªö¡–ôh¼®7ƒl´JjJ•è@ ìaèS5cp¸Ã… ?BD*V÷]á¨+ 7ˆ>´þ#(/¤J}‰±sf\&ùÐ\@z¸ZÂ$5€µ1ù¦Ù3äsÒhH6bd�oyg¤ÙÈØÞ¢ eÙeG¶Ç$!�†T¡&ÜùBqܦ-E ¹1PŃµã½’Ø{atøM'j„F'ˆ±FÕÂàj/³îZì{ª,#c(³(TˆÃ(9² ªâ$…‡9R}¢M<És9c'ŒÌ˜ü*½°Y5÷'ótP…ÏÅ’[.#›®�;ó?„»ÐÇ~Cw³ËŽ<*uý²Ô1r¶9Q{§ºê,,twø)רãÙôãÙUg~9ýxŽ=žO?žg�«éÇ ©ÇÓ¥ŒEËÒ£[æß8÷h¼É/YfÉ&¿h™%›ü¢e–lò‹–YÎÛ»�z\lòòŸŸAç¯(R~V&IE Dh š�À‰�BÖk‘•Î4„tsXï°#ËsÃ[Èî¦1ÒÅ+0bM¦:VÍ•$½P:‡W#3¨\ÅŸ šeÀ._ÑcN÷@Ót½¯«I¡Ï/×~öìL¨Aù¥•ÿÞN0¶æÙ_Ì¿˜0ÿ `þQ˜÷ x*�ÐEÒñ<ª‰'L ÄaHiº’ñLtgܨgN�gDîir¬·�|j1�4ƒÞ ·Ì`“ Ç•"–o[�V$þO2:ã³1c´Ñ1IŸ>ÈžIÚó1ÿ£~+5“éï˜örD+²æ#Kšu7î�¹Eçõ«zX¡ñF·Í|ߘdå 9ŒI™‰¼¡®»Ì„æÄ.Ô?ú‘ÏD²çÖö„D™�§‰‰®wƒÆµUsm“üeŸ(wfN@Ÿ±SásÝ«gDK!ËScT°Q,-p.Sv-‚é3�¡ØD`cB>bÛ¤ëÝ•uux¡bY¦U§¦ ®fÏô4݇qoßz¹ˆôúÍÇ¢ña ˜0�| <<䜡þì�rŠÒËÆ�q“L´¾–@*j ¢×ƒÌ‹½!}M¥°…6øÁ>#´Øž×ÜÆÎ*1Ñ2Kc––aÑ,¦ 1ä­Œœ0Êúõ™Ù…ù¥Zmyy Œþ5Tp%ý~À }‹j¯LêGó üæìn�OŽ¢õaà5*ò”1×´ûÜe˜Ý!Ü)¦éElG6‹\â¼:è "oȤ`�xÕr^·ü Òc-XZ X©+Šü¡ÛH”/kù3ÈùÄk^%²bþ®êõjk" 4Ó«ØluµîA²Kc t&ÚÙä[ÉýT°ôÚÀÅBjuŒÆÏ ³z<¡}¼îPm› zRÆâí«Îœ¡÷/ñZ_e0™x§{¡Û޵"±Æo ûÙf1j”ºò,‡=ï¹w 0ñ�3§R„ÂæöP®¹ÊÇuml_”.•t‰W¯{p �Gû™{ã·Qþ¨îˆký!ÄAD;ôÙAöcIÐ�¶é5‚{Ϩ?màÄëÛQ’ãOñ$3€Ò†«ÂÖ²Áƒ‡ø+¼ƒ:Œ]ë8Å/3òÁˆPf•Ã"Ž𓎊Û'ó’‰ô(e‘:e*ã–øËV½•ʦUÆÐQ3¤_FG~·ÚaÅg’Ia>Ùå©O0ÉCXîÐMNä=j¾>OQ" ’S@MϽÇ+¹çÆV#�ð,Ÿìø…^4-h«¸½Ía7+Ƶb™sqyý›Ñ‹ÿ<Ù¤s–*;)Œ¶+E  #ݚϿ!ôD_@ð„Œ£ßq0Xuf—“w_Ì–�=¯>ð6I‘Czó(Œ�79>5} ¦dY�Gÿ†‡1‘Î)ì¹ÝWê­•Ë<¨vû3D��ýùÙÆk¤ŸJŒ7ƒ9ÏÜ2b´ßàŒ=êèÌ?ÍÑù/8æVW »r†4 rÜOò0- o˜ÔU0IÃïâó¹ÙqµIßv�Šá%î {õ>›ÓOº ®~Ïm§})¾Ë MuÌ—ípaáÛIÓª›ß›Î^�Ú}€éœ~ͯÇí·È¢Ü0á8�›åiU¾ËãžQËžP¤J�*ðk¯|»½"Eá#×Ä­GAX—éAÅ f‚×ÐírO=öç [5-ñ#Ê÷E®f’÷âp€{xðPŠïAm~cã Lñç¿îŒ|P¿6ѯMô�MDUžŒ�øÞFÎ Åb_æðë`y�ßB�@í ˆiçÔÿ8ƒé€R“Vd ÅÕñY’Þ°û‰¡�Zu»¸g˳§Ïo¸ò2L² ®Vq`L²›I¾Ç¼žœ|ÛV},âý¤Fû‚Ä»ÐZ¼‡-ä�¾�ywa1Jý}�Lò§)ÂÉù%îLÝÚ¡¨(j �j!)11s°(,=Ö�œÞMÉ"½×tº.†š8L6†<Ÿ$¬ˆ¸ ÷Ú‹(@œñaâàþÙ‰üŠ{‘7\&Û5E(ìhO³Â×58Âb§;š¨‡‰°‘'1Ä‚¿ÛoxPGf0CÊ^9Wpçï7ý¿9䎴óÂp€#@p`MozØÑ4<á‡ÃË)©1VLÌGõYY~U¦ªyì–Dí&LÉ #ñÐì¿IoŸ½ÆÌ5œ¯�û}$< ÀùAî€oÙ{‡SIò¹çÔüu¼XOèÇVÈ02ÁˆA÷^¦êÓ¼o]Ÿsn#/Sâ“$ÛÁ�þ1Þ { ÝF?Ö쯑€ =‰W¬Ø+YŸ&5¯ŒVúXáb‚–³XßBë[èk-$tÔ§FHè¨�éî(ô©=�³øV"¯ØU#š*�cDÛÔ5a¨]©ihQjÉ ¨®H‚€7½–ËxyEž¡ø³ô‡c„ (|7=\2öî)Ϲll©Œ2šúéazã— “}óˆ%îŠgØÄ�oÒè°ByÞ2hOåë.àèá|E™ÁpÆu±þ¬ú]!±‰ûÈà|´™ÅËLùÏf:A$Á©·…&ò$¼8­T¸ ®f„r9Ù,Ñ1>+Ü1()ž`ü2 0OR1¥éïÅõ˜ü¦<5ª<ˆ"ŸaÎÚ§ò XàɯRð ˆIöhÜ�i³Ä�p'S‘¬Ñh—>¢‡/?$„¤¨S•¦uqѵR‘Š{!åÕE|¼ÇŠ]´)ÐÁøî�ïv~Ô5ü8¿è]`ÜE1ýLe¤‘úXx�Ê5Ÿ=Jö1Á]µkUš�ð�z\ßIýá3¡ÑΪ>m,:ç 4Î>¨ï¢ªù‡ox«^þ‡R9gL÷a‹iW†>O#ÕtO³]ÆÈèQü’ÊÕ\LÑJUm .õ„ÄqÐ÷¦ôZ1]çÏ?�IÈÔ?É•…Ûav¾+×Û¾ìòاðeŠ¥0¾ž2ÛQ�jÊ lµ¬µ‘ ìÑ·šø¨…S´âOB.O(RB!¶ª4‚^/èK^ uoGÇ—ëk'k7Ž 9ÀdzݽÓ�û{‡[„.k8–à(§G(?âçZ0�M2âç %\€$=Pz4‚"¤Fv¦üŠW)ñ²�ÓéÖ`s 0 ޳¥Ü�²PtÝãXÊ©î¿� "@¡S¿ç�©B(FØT´QlcÙ HÑðJéO!&6AäÌÎßÍÎ7”òPÅP §¶Ø@}ÅÙ n!d®$?…’Ù�`­Ý{g¾z7_m*Ι©i`c H²H D˜<³,†!cÌ»÷4\ê¾ ½æ°AS^feèÃ:µ�X`‡€k-Ü.Q›÷Î_/êî5ª1â௤w™"5\m}&ÓÆt CwÊ¢äOœ~ÅY‹¢a�2ñ®DÍȰrßcwMÁ%×q»-‘�CØ~œ)6ôiøž§AºÉˆÂ»š¼½4—àÁ'JR‰QƒF{C·I õ0±¦Oª±¬RøeS“Ôî >ny­!›T‹õI‘p§÷8cŽ#�§€tÙÿ9L¢uJ0ývú/‘Æ!eã†iÓÍaìw‰[6ÜpèI²Ðß;ÿû§ÖB`¶˜Ã°/Ì8☂]GyÊZ{"zfcöd.¨0š9%›—°²�]Éa²Km:©2]é„7ý«î·ÈaP4YÞ£Txâ®ç3L0JF&-Ãðõ#"&•Iïy1#3Œ™¼3ZœÄ·Ý5j$&^8°ü^*°ÖyßäÌš²èÉ‚ér±øè^Y¦bX4qÍ„AÿPNæóüåÿ«ÿÄàëjªósªÊ[<¬ËO‚³–²„ ¿ú]pWŒÞ>oè‹tª°óJ}@ww}Uô»r„…e´³áϰ)ÿ“.F�ô2?År¤)ìϹ y¹v~–ÅE§ì ´kò|p–uI£~Š…é‘÷S,Åhúô3,FF¸êÿ93ãlݱiH¥8$*Y_Bx¿PŠiÿ êÆ2Ro> `éÞƒÂbîUÆÿF7¨×½Ðµ&¨áò g/cŒâ�«%ìaD{ö혟öOž³t§Ü_»ç‡Þ=ží¡‘»ÇN»žaïh¦E\m´Ñ‘ªíÙϳiŠžÇ„º€æÊç<ýjÔçVí¨£ª s¥–¿±Ré œaÅýVèU ‚æPdTÒ ë­ú©¬”u£ÔKº_27õin€¶1îuöôõF±Œ{ ™å’À‹�OyYM$,™Ïé?9ö´Gí^}áóVÓ²„9»-Ó·ñ{ãj„Ï×�­ìü1\Ù¸÷³œK¿÷‚æ{Ù}Ÿõ´9±~o<=$�ãó`'á$ü}cspÌ®—WÀUìÇ»æÓý ñF|>k“KéS~ßß{Ä�¬xV•E“¨,Î¥ã?ÉY)ƒ ˆõ9È™"Ó/½6 ŒèSuâÇØ~Œ�¾Z²±c bøÞ›/Yªô)¶×8 ¨½q1^gÌ}�¡‡MŸdqEÄËD"¬åû/n6yTÚS÷lú®PÇSòxŽÆ:;绳D”öhwåoÇ–H¿S/æu„Ê{éLáµê5Ñùê%t=LK ãy¨²î#ø/tâsþ>öêlRÿÏÙgþ/ýõϯ·{Bÿ€† bE¯wWP¢Œ�Òx»m¯âìÅX¹¹î9óT»=û &”2£‘0êqÀ&½Z¨þÏ:¦òáÓ¤*æ׃€Ýn}TÜ-Ku¥wüÛêúž T`…G·â©¸‹+Î&és1Nûªåv#ïªbCÇ×D…eÖ�êÒ_A+…â �k[C…,¬^ÍëZŠâ…à·Ja·&Œ!MØ6 uEö5cTWÆzBö(¢ªz á—™°X#< Ýëô;]ìrÙ ôЛD�á1’ åÆs^Ô+hU´éÀ�>%ú[Ÿ–z,니ÔÊŠ¼¥j“á-ãÞ6ŠëN˜53 `†W"µáØ�°§FÄO­(÷]¨BJ#W_LLÅýdÅ�eÖ�Qš¹ž´f4ÆúÒŒo)¸ŸÒ;*sOåïª1öÕ8;KO»iÛ^cm°Ñ[Lßd…óq�ØD2#Ũ/�ÀÀÿ¢õS [¼Ìv»yòËdT†ØG]&Ùß?ÃmbGͯÛä»ß&Å&öŒÂe'†þè›òf{z —ð”{j—ÄðSP¹ ô|o:—Ú#‰ÐÜï¦ |h‚¦çTØ'b�¿KlÓÓ`)7�ÕÃýJìy¾&ðŸï–‘.SÝ=澩WœÀf±2s-Þ~°Å0G÷ó­ù(R3›˜\‘tWR_&BŽƒ.ųßlv]ÄžüˆWË ½¶6»  ZPËÃHžz"¿’ɡ׮°\'Þζ̕©‘qç¼¶•ÑÃÞw¢_‹ùƒ ´œ~§‡$Ö÷ÿ4Kn!Ö–")c œo×oÃéç×s)<ØÑ2£à弬 Çãíâ›´àgƒŽ±=‹nÎÂÒbÑ4ÆþÉZ�±7úˆÈžQ$rl*˜ÕÁè±ò{Iýqˆ¶úŸÐÕAWðþI²9û�F'8j%<%J³�£!£ AIŸ_Þ2ªðôÙ”Œ”ÍŒ²'n­(PÉDèŽ"hd)SùmèÇìB‚ü­!àËA ÕeõQ턬EOmö½7f¥¨´À”NŒh'©ÎF—‡*ÔYΆuƓij:ÔÏGÑÊ&[KE­'X�‚ÔâÉÈ`ðè ¦8<Èõ-rþÑ÷Ð&ÊKè7Ù{¤®[(˜V2ü¸`+Õƒz*úb�Çr�àùE”EÅÇ#Í„…Tv%GÉzJŠ¥­I�Z;S[æ·Âó 4[ûø£ã5QÆï‡Äl–åêÇÂíSò¾O–‡û‰Ö¤€eèÉ£Xz§´Ìš@9ò\‰GÿøÓ©N狱)K^¦œî³&k–ƒšâ•zŽÅaš>$¦cȇ*Ýa¯¯}¹þü¢4Ær2àøä…I϶üø¢RÖGöøÑã¿õ"åò�¨;m¾ÔØ�U§V™×^ý¾ºZ§sÆ3·+åhY}vî4_“¶ š£˜Š€ŽµO}÷ƒcâõy„±'CjãÍÓc´`Fµ”à蜺>‰gx±° �«Å„ˆ·� ëÜbV‚ ÈéÝ&׊"AÒÝî %PÚÈ)žOUBžæò%»ÈØB I“ evP°,`²Ã)[*øi-A'ÀóîØ%¿@h4içLô ô"/¼a»‘³Öo»n(¥W)ÎbŽÐa€¥¯ë‘HM5o`¤¤ü•û1/Q}‘KôñE(š4¸°ê\ëN˰Öh¡¨E„‰IƒÆu„KÌÖ¢qí…QÇûí.I�?’0\L"KË™°õxn'b»V Þ@þü×¼ÏüáüËí2¢ÝYê�zjþž;¨ÚÄ¿v&hÏ•ätIohU}Lnæ±ù)Ly�°tÐ]©*ËÈR3Ë åâ!¹ÙZ`Á=yíq.dµ4†,Z×Wå*Êø´<ˆ†^3àÁ)AHMäe c@¯q‘fF9��Û”‹PM2×Ó~ñHÍÆ7]÷G­º�Ù‰ˆWÁêåB²gþ‚2ñÀ,£s—býT%Aþ…J7ÛAEr—U¿é.‘ÎzÜlÜÑ0l¹ y÷ÓSÞÖ¸ú�7E•O¼r=aÌ,úÿ?k_«]�íï ç=á»Æîý2Ÿ½ðQ¶¾o2<ÐÆÊ¥‰ï4{÷mÿþöwVӝ餯~ÍÎbokD0ËFæù\›H¡JسŸÙ+„R}Ûì YÐÌp.¢ðW= n#,±”¿gÄžˆ0�ÛÛ¹·TûßO­Ûdç‘I­ lˆÊ½+}�í õèŒÜRË79©meóVÓ^˜xÅH [¬ù ª%V�(èúÍB¤X¥Ѳ£�Bû›¯Õ„ľÊ�B…-it˜ ½Þ«¬�9…S¦ šx}¨Y)àÁtfGBãßp» ÞÉÔo�ÿW§ìØ¿ãCÿ:íÌ8³¢sc?Ü.‘=]uâÊ\©¬é¤^”^ükyÎdäFÑ*@��«=bØM=‰;ÉGŒAI²”Aᆮl�à&b¸o<(v_­Œ°‚ ‚–øz\E&a‚’R3 ʆ7y–€ÓFXÏÅíæœx ÏKèo[!­L $‹À% m;nT¾öî“Cž=†fÀ®Óqo`$Ø °l ½`;Ÿ|ýëEÅ™t^êׯ3¹& àáGXÿo†Ï†Ä†e�—ºKš“Ã(WæñgNjɱ¹Åè"%¢ ’4rF¬±°¡u½õŒ:îà«Ã;tÖ ~N}_ã#c/ÁÀxîkërˆÙÚs˜ I×ñ †Ãñã‘0gì‡Û¸ˆ·O† \Æ®ðbà@x©„ 4:YÈá)ö†1{{”[nÏïÞg^ è*Á¸ÆõR£Ïà Æ2³`d¢ý·Ý14ÚätW�þ°Ûýa®¡ m¨Š‹’cÖÞê.— l�01FVñ³ àk…·��¡6·íB9bg؇ńãÐ+*rÄ!Kç5\`3°ü¬JtVÑw¢ßš2ñ¡w …¸ f‰ÿ[¡=ó»’1Gc§ ãÁ�oV&‰…P†¹é\ÁçWÎÆé©@`l0(ºš ë@à-”üU«Jsª8ÛèD¡òN¨zÎ*LA�h`Kâr~ ¾ü¨?S–âMŒ (3† _%6ù)Îþ+Ÿ'ÞÏgâøá_Ø‹µ‘óÿ™çN£qª=ÿ»ÝÁé,áð” ᫱@ªkþ·Ñ�6F¤šÂ×|Á®DîÁ^Ýï‹Øå6;`}¨W¬‡ýŠD»)…À’�Ž’1µÄ†¢“Ä·Ç´/ªAÓž@7¾ˆ§8ôû/ôã+&”{þÅ–N€±ÎVÀ7-T´�põa2|gX7UEê’´½ÀÎ ïÙþ$òàóåÍøD_¿<(|¥ò>#AÚ“3ŒÔûÄìíÕ$¡¦/dß«Ú8^iïnE‰í/é ¦¹ÑéãÐÛ Ê©�CE¸º‘T[Á—Ï[?òÒ Ïwq‚0òbÜŒ˜º=v!"á©ßÇž¨<mÌÁSʨëFs?ëÜœu¸’,nõ|F�þq'VtH”gÈr‹>ë ÍP5ï6x“ÁÄ0È·UÖõIr¡Î;“·PÚ'!F¢J­k8—Ÿ"­ÁN–ËI…�4›qÝãScb½¤Ü�aBà�·È‡íUÚÅ&ñ¸ýrÃD�.•Ö‡+�k4’÷€Ò¶v¶øóJ~)6zcŒ_Û>O¢P°Å!Èa¡'bò�«£8Sý¶Þ Õ¬º4EõzWTÂ3ª2†<|#&]ã�T"k²¼³ÃC(é¶f‹Je¦„ÞL\{ýh¦7;þƒ–؆ž–yÓÑ�ÔÀ,ÍÕË<@nŒ€H9f@mù¦02£¨ÔFÙ “_¦»`˜cXü;™þ@ÒíWËg4Tü§<Œýn$toœJË&œ“²Xe¡åÑ|rhc-xðEºá+‘#‰ÍW,jšKæ³¾{ÃæŸ6†|¸x†¥¯�8ÁÜÈÈÈàArâ¾Íì– ˆZØÒo0p·nØ|ŸJKqÅÇn¬}•3ã|ðÙ8È�ž‹­]Fr@'�’¶?XÚ2Î:fĤ, 6Çxr'‚xÚó¶—n2Ŧɰ™P§“Aê€HÃ>"¾{ªÐ)®L0±³å /�bmÔ‘¢ï¥”žòtLîÁïŒ2ƒÈWT¸!;Ù~ëYª×S&F¨eþÔ-=%®¢J6hõiáN´Ì·Rx�õ2c£è±2j îB¯”g«µeA£ÅÙÕ‰¸öu%·’òŒJØ ÖÝ`L²ZcnŠÛbŒÞž`wän�çÊR5±5Ôd"<Ÿ±¥q›ú&5=­¼Æ·Ýžb@bÞÆØŸe‹ŽÙãsoÓo1œ'ܪE†›JLk3AÑ;Ahp»bËâKµUîzm·qOúî<(‰{'S„•›ÃA¶�–Qõ!á¯ØpòѤ4OpO¥lV];4êÜåŸ8³‰V;â21„n0ÀÑ$ &ŒÊ·:ûÈÛ‹4>Ù’ 8lP4•P6 {ÅO+O[Häyßä/ aÙ|lÐ Â^¹å{ݦl£¥¤>Ü-30 %ó=�| éxÝ�Fú(—ßÅ|“¢»xþêy%TÌ�d|­b×È2–�”ˆ3y/ˆæX�gâeʵG-O…+÷d”& 6 ‚xjÚz•™»…_',Žâ}¿&<ÑNsuã´ð*p's5h†,H¼\•ËËáéæbc:C”5åW\ÏbÇ%~úQkHÙ脟¥Ê0BooàèZ1n#ø�$hG›GS½»×º;½êœRÆR¨ÙEAÙÂ÷M¿ODrBöÄ ú ¼Œî'CÏq…[PÚIÔ$=8ÜɸH}ðrÜü«rföÓÄ.TåêØH¼®1ÛƒÍ Ð¹»M²†A–Dñ5]3©Í±)9Ä‚ŸT² 1¬€žÕõ`]fL„œkæM ^e.Oi¿${Ç��Ül©Ï,ä!ƒô0Aï[S¦‚D.yuXR˜þ™NŒÂMƱùÆ‚Ö÷Ø Ù÷”®H`Òo±¦ÃF‡{Ï‚-%Añæ hÊOÈjúÃÑM!‚ÐÞ^¾ jÄka£¿ h1Õã¶ÂJ¼ Žg�É€f¾µÙ�á9ý—¨Š²«g$ ’(i¬G™¸ÇȤ‚5S ‰û[J“ÈÆa]v¾ï9熌*½åDW‹‹LÛ‚†}vßb—rr:[:¡b9cÒ÷�9ª†HQ.¥–2®�À>úÐõ£'ybÇ~“ÁË}=îÒ›â1Ëÿ,*‘Éž~TnºáµEõÁßÈ›^e>ZMòŒI¢e‘fÉ6R “ÁÆ«NØ®»SÚ8Jàg#fPrª•øÏÜòtJj/¥aU+µYÙP©—²‡œ°ïOà~ÝL}¦$,ù(_KR¨©þ¡l�îè¹Íð ½·ÑMÄGŠÏ“9#ÅY‘Ê`ØGHö˜äyNï.M‘©ñʃ˜X ¸¤{F´–-ðL�V4ÿ$ÙÆv¥V°°…Ô¿�°05mí³ÀÕF?TJä ïc§ÄSwµקߓžýð!—€@š ^Ì)`0� Œ R¹ë™àéÃ�âÍhÔQE&§l¡ÇiŠb¤œ(ÔB5˜6–ÅX¹áS—üx{?‡GÐéÖÄ#D~7"¡›óȃ2b2âØ”œG¡ü~ð@•œo|°²ù³Ÿñh¥Ù²¬W¥':šìqÜŽŠiƒóï8g0ÍOy”³»xªcœ3‰';ÂÙ}|Ÿã›+¤ü:Á?Ð Ö;¢kÓúVÇ<ä Ñ¢ ,(ÂoÈÅÄ'.’PÓŠ¥.Fp2ÝÇ3Ñ™ G]2Á>Ž d‚ý¶tdÔNùIÈÈø‡ò„ÃvzÒR»½·±ÛæÐ†ÁL Lº›È*Ú–Æ!!Ö�¥gXN¹åc:µ”áÝΚ” I!�LsÓH=¯�üòÇØ›-§¹þŠl•“‰Ôdz/_[¾IŒgæþ1^¥¶�ù:c³Cv F“®ÌN1Gä!^˜�¾ªÒ|sI™ÎÈÜiõT¸Ñ‹S¤ß+àù÷5ßQ¥¾RË€­¦üQ§H7?gTiCü9ìÏ|µ~YŸ¿«õ¹�9•ˆÖŒNá¥ñNøV¿ÑV=ͰD}x'd”ˉ“�ýòò•õV�üŠ~}em—ü˜Øž‘qÓ_ÆšÜk¬¤Þ‡1€Ðe _¥(à « g;’¯Lt!¸¹! ©dù €˜_‰½ ©'šÕ@íx‘t¸Ew»º§Sr¬g< oPšX¹H¸Â�:†~_í ‰NßÔ’ˆ²rb?LÝiW›#Â4œ‚~¯4š× ~³ÍÞ£z(^³¤Þ\{÷õÀ ›âUʨè¸FŒ Á'�!‚ª©<1&À�#²»G™'¤˜)6†U®2·¹Ñ®‡ògJ¹$}…˘–ûž¢[Mã¤äC[׺døs5I�‰0áBHÚG¦Á«Mâ oÈD~v2‰†¼° J…Š”³é6›÷ó¡kª~ï ³ê¬öƒxjU´›F‡X(HÄ_ÿ[¼ùy8b"YÖ!‹tèùSb¢&ãbÙIÆoü8) :±ÛUÍA*źËªǶë� #Ö’;óŠ1ãÐX‘ß ³ž‚‹éY“ŽL4wt{b2nèÝF^{è÷§W�M?b'�‘0Ÿ À Øs{èíéy�ô�rèðšÏðMM TÿÎíS�h^·N-v©WÇ£X4•~$Oð»j©Áû�ï‰ä¦Ù…#„`î¯ÉÚ‚[†,â(§�` ­œ¥îù¯Ê oJÁÚ>Ä—’q$338É�`pbVšÙêlÕÙ ‚6;{ý.=~rì…=?Š ïÛtàÞÍö=£ÿàÏÆ(qèáÕèÀJ´Sï˜kÔA÷G H¬+Úñ-òr‹‚V| z П0Ö(hø Ð8MFÜ{lA\Êúæc•FX‡¿^œò&½˜Æ®àVå…Æq¥Ä{‡Ë‚£ÛqècÖ�’C¸‡Ñˆ×]¿çó~ 9b‚—x M GÍnû é·à_'9Ö»~ÔA'už-{ÁCFQ¡›Ñ ;¬l—Òð¼·[Æ(¹ësØbãàHÃ#}Û zæŒ|WköYפ�j²³`ÏŸØi[¤(ƒi ÆBjѪ\Î3öù'6äÚ³sé7<îˆ yÌÔ’óWQÇ¥ä×|ÿ‚'#‚ƒÇbv!Œ„Í>„»;°¡ëä¬ÕÎ:ÛÝrN�¶Ï.ÖN¶œ½SçøäèÝÞæÖ&[èµSöà¯%çbïl÷èüÌaßœ¬ž]:GÛÎÚá¥ófïp³äl½?>Ù:=uŽNàÞÁñþÞ{¾w¸±¾¹w¸ã¬³¶‡GgÎþÞÁÞ}v„Ýrp{[§ð`ëdc—ý¹¶¾·¿wvYB`Û{g‡{ûèÄYsŽ×NÎö6Î÷×Nœãó“ã£Ó-6ŒMúpïpû„õ´u°uxVa=³gÎÖ;ö‡sº»¶¿Ý!¼µs6“«³qt|y²·³{æìíon±‡ë[l„këû[Ô›àÆþÚÞAÉÙ\;XÛÙÂVG Í>¥‘:»[ðú]cÿ·q¶wtSÚ8:<;a–ØŒOÎdó‹½Ó­’³v²w ÈÙ>9: ÉŠY«#ÄÚn$@¿¹NìøûütKu6·Öö<¶f‡©…åËÍ‹°2¢¬—Ô“t¼Üè‚üÀ…dC}&#PÝWq5ObFñ?&Eˆ äÞ‡Ý8ŒD>'s/Á1¨(IGÉHÒö ~³Ia–ϸ,fù8•I:ý¤¨¤gû,Æÿ·½j=øk&"í:0þ°Në†8rù«êˆÐEáFʨD(�Wu1Òˆÿ»òšÑºHÕÌ”†oDÙ̼¾y†}}Õ*·lŒO‰qc©F=Ö×NÖ>nÑùx¶»wú‘À-.l2ö/fŒIXöÛ}&áÐå¾®`&Ô1Z9½Ñ=ˆ>‚(n°[÷zPÕ†m¨JÝ‚ÔË´H™r2Ó¸ý Ð075aèðøE…u3 Ï’•úMHÐÔ£LéV; n`†< !`µÆË1jÑ \¸Æ"ÒÜaºˆ®O*ýÀ.-è; +!Óζ‡.2A^øqÆa¹v¥CåúÓøäȾN‰.Á«'Ãnk*7!!ªé!3[ŸDâÇ�f!‘GVQPk�EdäG9öXm(¨€¬k2¿Â“ LËœW}¥«²°n= ºŒëze™ #šÚøå>ص°úÑ´öeÌ–-‚ð±UúµË–ª¼PýŸ’ÿ5>…ZHìÙƒúéz­8ÙÚÈÝÇCw"dó‘f»íÐk°ÕÅC„â ¤K¤N€7�ÝÆ5åÓe8€Ó@÷•aŠI· Q�“ü‰%bM¥éamlÈ-œ~ €Ê¹¡…eC&ŸNWl«ž(<aêJ³aM¾¬¨_3Ê�>Ù6i,=xµ±tµ"U"–ÀFÎP×t=K�–© ïß—}¯V[%³¡ÞþÑÓ5¦œ,Å¢²Ö²,$‰ß¼~Qêd¬£®'´­—Ù”öQ‘�‘ÈŠ’P–1E7ío1ÖM>BÊeãpë õ ¿M’6¯¶À¤¨>Ñ� ‰§�g×sK‚š)‘è–ÀDæÊÓ…[F—}2ìÍX}^iGLxbåØYc·ˆ µµ2ÁÓEËf–wR—˜Éõx�Úà&³ØO¾$®rúÒ©Ô3Ø6=Æ)¨ŒµºZÎD…VóO¥Ä¬4û0NRè(Zu4w•ŒØza•_Þ&Ÿš©bµäÇ.®]ñ|ºâezÙ©$ôÎy•Ez>bB—KÌZ?¸Å\â\û EÍ´/ •Mö?áG€l~ÁjyŠ£Ò ‘FÆwŒ W ³ì½7b 2ÛZ÷Úh“(Ñ_%&�Óªø FH™È³Ë!Ï&Þ% R Ñ»“¿I² 4ýXv¦jUàhÓP 8ã_'òf÷ûHZ]OÔQ#™dÖ·ËPÔ$SC8ì@5ü¬éD·Ë8l¬’È(X«0w0¼óŠßBgªg¼…PhFÈ0�µ¬ì&†Ùóû¢Üâ¼,GŸ<÷¢1žÍüáüËí‚’Š­ºóÇ =M°õ˜bŸ7F@Q‘ebä³~íÇeâ|Ý~#Ñ»0—;#EíŽsuãG~½ë]ÁňF*¯å»Œ»ÞÛrj5(¥0ÆÜ^!’�;n$�]u°bᬕ`_.1Žóqc.{ï\J|7‚5ÜÉüº�•juƒÛU‡�…�ôn«“¹q±Vz›MùRŇra‹ÑdÍÖÿü¾ºÊÓ/d2fÂdÿm\¯Á¦‹�b�Å�ʸݕ Eš–Ÿbp¶­eڱɠÿ}5†ažƒÀ׎ˆÙ›4¹=e‡|�Jôó”½�ÿ²çþoÚ«ÿy’ÁM+¢¸í\µHò%äô¯-îR׊Ù6tŒÙe¤“m( MSÄÁ–ÈUr8Dh”$¸J¢Ê�Œ“’ ðöÁa=øo™õÆ/<ùÆô…¤-å’ë‹ïùèôú²-Cæ0sÊkj7ß,‰?ª¬ªÐ+ê—#·åánÂá ž7%ËÙW=Å×ùóOg^M‚ï†ö =^ñ¡,ìÇkêÀ[ZPŠ! ×&öl£1](Ui•2„÷]âû&yZ&ô|¢«-;õ+ÁЋ“P>KK-µ’‰XÒC6Sc¦Á—˜ 8“Æ)cÞó7�Š‚–[Hó[µZeÿmµZ‚�¾iÚR<ü#£¬ º)â!|Æ‚¦Z&N³{Ißfåé-–Ç43rFîÛ¬iLñ;BË^da¥NJÒÑg” õ|è„x©›ï>ŸD*âÎ&//ñ·˜ËãB[õÀí‡%e*:e¥Ð7&oö¯©ýU$i�ÏõÔÍcÇ.~Ë�=ðËÜ;b|@¸8\òñÔB¹„^ŠƒrA÷Æv ù|øàôŒF0º—ÜncØ%2&VNNw�'N˜ÑŒ<F[I®£YuæAÀTÏ{î�ßöÒÏý>=ŸÕŸ SŽø7‰äDPÿHȸe(h¿êHË“7ó¼áж +/~—SwdúM "QÝsx®Oî£�núÂÏã·Ù=ÎèMSifAuë¢ónOÂüS=é ©`…�Šor'ò"á31ÞYƇr×½-5©q»N,­ºyL€LðœhSùëã,¦ÊIä–“ÝMÿõBÂÜ�ÉN[LŠ ”Þo’s¶M/XÀí_/ÀcUÕ Qš¼¬Ð‘¥b·äøóF,?bC­¨1Jˆkæ¹z¬ ö8ɪ¶ñZI9Ælú7SÉ¥wÊŽ&•œY=ZóIBlÞØZ]<ý`ûãضÜ:ü¿*ö¢•DM}•PyÈ'-¼;&ï7Ù¡I7M¿z€Æâ óï*–VºRlkd¥X}FÉÖú»4˜Ñ¹IZöWÑ›ŸÅvB?`zy$ ý%ï=™ÔÆ ¥ÓÚj¯¥”œNmk°B‚“ÉÓ/´2j6fÒ+c7fI»¦~ >W*(5b‹>é¶ãÇH1ë]†©}Jj�´’ÊZ[®*!)S‘ðÌÚž±´%ºõz„.ç¡ÚC‹#7åã ¢âΣÄz^¨éÁÂtJß”Ü]iõ’ÔQID$Û¨¬y©6bÒÉ&ôÜÖ‚&˜üžš_“ØÈÅÖüDÅð8ïËÜ ÑÜ�PØ)6S¼€ Ou7MÔ½uÛ}/ì¹ ßëN¯b…E»æH«£×ÕéÞøŒñ‡_÷0PãOš2ÔY%®æÎm^»¸“UÏu1+ÁBÁ¤ ÌÃP8û¤[@ž€&Êþ,ÓŸ–o�ä�ÈþÀ(ÄÀÓ{ÅÙýÒ÷æŠP“¼Õ 7­FY“>ÐËaƒ¸/£Ò²? ½“ ­Ó¡Ð‘ýZwËÿhdæ q†)"#3\ -›8Ñ<ñÐâȇ�@86´¢¶ò¦SgXYþß™z§sÁIÜ‘Ÿ‚a"'á_¡4ïE…‹Ri§&7ò>Z#¶¾š-˨·IK6ìaÁöbŸ¥`ˆá1¾¹k1:¸VÉb¨–JÆÕªܼ9ªAF<(ý&æP,2\ÌÂWJý‰È“£u�¦ï·�B¨ô-ÁÓlDÉœ’z(¾‡Š‚*SQRŠ�+žû÷¾Üsèj†ú!ÐÆ Ã·;ÚWI†êÏðÃ3ö³³o»,x#þöwÖô¾ZnGŽO~=Û"I Ì)=(Œ ¦¨ÎWâ•ÊùbŸLÝëøý¦ò–ØËší %(þcÆËM�ñƒW�•jdãÕ�J°·µezmd-ø8.Yþ!ÂÿŸ&ôïYˆÕ“&$ÈLõ,yÒ¼-±µüµ…Y6Þ§âÕ- ¬ñ«ð3¬4E ùŠj�ìñß™y ?#)ÁM΂Tˆy~œøX;4?ÈwPÇm·©C<¡¼ º£èhÞ×±6©ê‘d�ß'Nm¡aŽ 7tæ“X”vÜïš„$óö袑�D:/�4U5Ŧ+åCV’…l†o9“á³p\z·©´Yö¡½(Q&�ÿíqØËJ¯h=ysÌâ“ð%RuH‘”çä@Õ¢!Ÿ6‡èÖmf…ŸšRõŠU|••á#{©j³¹keë$é°ã6š7Œl_O¯:§¤“G<„¸>dÿ k8ÁH˜ÂhVÿÔ¦k�Œí– ½hÃâÖž_Dö4‰øˆà×ý.„Ù‡ø›Ø+Ó‚®Þz“!VJh1aÀ‚TUŬl]&Š»@O‡n×á¹?ÉäGŸÉ>y¢G§ãF´Ôg�ŒW�®/^�N•ɆT"`óè@Rûa_Õܺ÷<�†µ`ׄëóþ\&ô³‘¥úÄò ¡×ð`9 í~?Š=·Y‚~î©2A—Á�Ì ê"’e ÈꇠsH±ù?}î—|cRϽ³¾‡v$ž–7»T#TåP‰‹Ów;T¦�{N ¬LÇ'¡­ž!k ¾&Þ[ʈÅ1˜˜ǃhuf¦>la«èVØM�ÿa{&ê·Ù›J£íÿ~óÏÚìÊüBmöEè1¢uã5+óùüÓ‘9 ‰dÎøÇ�@p½T2�]S_`*ƒ¿¹º`| ä*u³¹ßäG µIZŸ]PÄ*’2.K®J{ÉG†.‰³ã%z›B¹Ô$A"·$™–”y‰/�ÖYú;0>ËtìßÛG¥AŸjt´"Ã3¨ñZ*ÞjjL,Œ=¬Ü…þÑŽ§;Œ~�–8¢¹ó7uâ:€ Qí"�À`ƒðI’¨¹%àÆ ïá�ˆäS3›.«¶0R™ÅÖ R21a Šà‘:KùC$ƒl\¥ÃMÆGOrŸ=ý¹…^ª‚¦K«ù–õÝÆuÝ å/‰Wóñ«ñcRGø^™Q¨øOyû][ü«©Š+³‘%ÃTå‹<nœÖZðüñŠ2:Bv+Ç¥µéá¶ùg'µJYa5¼K"ƒ�0ñH¤x –*ƒÐkù*_ˆõ£Ì±$˜Œo·ó ²öß`Ų£iÆ�yùI#^ÔÁü÷ò]ã^r“/<0+AÃ! IX¦’ä;õÁ«´Coê›ô“Ä5–ñþÕ³g´wž™3 õinfBƒIàÑÀntËÁƒ³=Úd½o“t.ØSd‡QµÊ2R·}óürO6ì1¯Æÿîû!¹Ñ]ß÷š0/‰DˆG±Çn¿ çd¦Ñ¼æÑÏ)ep î6Û^’ùLJOp«ÎÀìÔªÄz#ô£ºÓ«dÿ¤H¿He‹pŸäéæÜþ=¦S³(æªÃÚ2"„F° -5mOhu›V�Å*Èé"­ O}̾tþ¡*7LD=·Û©áôo�²³tAJµ~ð’>øˆSòq™­£“ÍUÊìª÷Fq‡}Ôúv)³"Ì�ý?b¤>ô»ÍHXšÃà–MÞñÂ��¿%íº AìpAÑJ�1 ˆ("\\ÇJ›Ã�‚;{Œ¬P„)µ[]·íÄ^o„ìc6²ÞE0ê.$p!û'-� ƒ1Ñ*&Óñ­'–¦Ñõ\n‚³èÄGÀBYÀ‚äE 4È\ä´ZPD§íƒ—UÓoµàbå^U,‘h=…²ëÙLUædðÈW¨>»n?pÐ üµðÖˆc·Ñ�›KˆŽa剫ʬ’¤ð'ðfõã¦W<}ÎïÚž{Í~x~9� Âr¢Âè%,^RF>k¼=_. î9†¨,Ø`°füDŽbMÜ٬✢s²rŒ¨ 2ÃêÿŠD¡ÿÔü”%t*9r• �¸¢�¡GÓç!Ã389Ç¡kx7бûT�Õ(LNI½–‡Át8WI Í+-ÃUÚŒsÌÚÙ™¾£h»ä…¨ c[vY+á´Ë½iôÚº½C3œÙjµÇ�äF (—Ù"é_Ö—Ê¢´UÙÃR²�©ùFØŒÒf9:ô"¬ÄxDAþA«$Á³2&ŸXTù 9DÑà #Ór{ŒÏæpàÉ(~f|Ž AsæéÉ@óB¸\ü‘>mücRm¥Ãʼ™\óSžßæ;Ê™ßtj²|eêÐØÞµó+ þeŸé}ÛjIøàÛ§ÚÅ °éM��Q¢#9øLG˜ ý6·îæ®K)Ñ!\ùØÓ­Ãå~ PØú;M3“=‹ Ft•cæ¼ß›È 7£]tò•àEà6'Oj=‘YJ%…"}ƈ5ŽÉp¸.F@¸‚±^ ¯m¸r¯jŠéÞlç×»Ã0¼'w3á0n¸ä?…q5Ôo¤¶¼)DKHÉQ¿—%-™ÎÝóØQìåÃÖ&%Ô³eAC=K>0¥Š)9êwË@Ÿ9É®–‚6K‹O_QV»ÂüUÂ}D©Í*ÜCLi ØÿAgK”Í(³õH1ÞJËrLæé…3íÏ82¡'W#ä&‰Äx CJz¼ºÑã­f=y^ãÿüÿÈûÞe€Tù?‡®e¸Ü&6‡ ’¾ûÃ^�rŸÄ~Ï‹”욪mƒ s®d—K-Ì�’©Œ·%ÕM|*‡‡<‚Äq-&Q–DP–“^ª“5 4N—IHÝŠsj‚[Ÿ+Z~Ållˆ {˜Q•BòªhâV(e †{ywªÈR 't0Öb(é*šà¦~×U³96 PÙ;ÿhwƒ:wE—,¢Áçÿ2ìe[ÙšìäüƵ—ò³SoÒ :•Œm�×l˜Y05˸7¾Q�âãШGŒ šî}Y…“Ë€²ôÉïZn“± =(ń ZäBp¤O¾™…7ÕöørHWºlÞ—uÛâ\Âb(¿¼õ¼kcY½IÍl¢‚²­Á•B¾qâ Ä¥b° ã{dHpœ%„`¶ýg°+ôyRàœ2Ge€Núñ˜°L“õÑžqh? —tFŽØÄk§•ÂN’¡ƒ5ÑÆaò'ª>Kr2%YÓÉ\„Ï#¨¨‚(AD½ä_�QÄR™qÄ65 Ýȶ ½}{Ö2sý²vÛb‘j•T‘Œª�ET3 ˜­V€mìqÐnw“*Œ —7z`žÚb'—÷RäÜšXx²uOŒ¾˜«üùÌÓÕ×é '«�üáîuÿ„ÏQˆqÅP€v R˜�~/–8¦{ÆOEªÌlæ@ ÿª–—Ù�Àq³ø˜°ŒV& É�Ä¢·v² fʧ 6{¯ÁeVƒJáÙŠéÔ#ñi‹iüdc(ë…Qö»îu�çqÕ'Ęåqót 1A¹sh áØïóâV1¼àú\©€‘n¼R»�/¡˜H¥<®4M•UãÄk»a3Åp;8¦@ZYþ¸>””ÉøMË!ˆê¶3}ÐÞSïi;z�ÙÅ�åXʳòæÕ®ë~Ý(µ éb·bʳvâÏ£¾ÒdäŸC‡õDåñè€7FÕARóÏžL¥¡äkƒ£²ˆ|XŠ;!d[$ós.š“qø/d-çM-7Ì߸ U y³Nfò„'êØ…�œ?³Ðùm¯.c– ß�!¼é±Ñ# Éem·‡V�Ë‚÷ ù/ ØãjÅýw[Q�Týº€~ܘKKèÌS‡Èð‰ÎðÝ3ƒüÌó >HÇ^àZ3ö1Cƒ´¹€?V�Ňe©mOTVùɉ;Ÿ^n|=ÿ$—ÄS»Šø¾Üñ\pÍ%ÆO0Lë@ úd†‡¦në´2.…mRäüðKõtgàé!ž@’gDt’AE+J·D0 §Í}*EÒ*fOBµb ­Äã£x¯7� �=Wùýdü‘Sv,=Qú;:G¢jE*üЋ.P!VÜ@M†sÑÏÔ‰Ûð_ö) 9{±[ˆS{f+èxvÍ1l¦RnŒ‚0„à !vWlVrÐG0J‡ ¾e' á†ÍIµ/¥»öxæVY�Ű·¢ºr] �¢‘CÌ,›ˆ3€ ´7ìÆþ +ݤ¹kF-Çl¤Æâ€óûØsr<*É(¢–\@HmËÆ]Ö …Ñ¢“ãR,â³x V÷^¦ÕF2IñYØ@vð$þu²l–@ûÁqµÄ.�$ ê÷Nì^CÀÀ)×d¿a»îò^Ü~S‚§ÐjèÿCÕÛ>͇'àÍܶ �R+ˆ{‡|4jEr:^Ÿ\ÊÚ<(¤uÖŠ­*âæJV4?‰ Q£ ~á1F Épi yÊ«´+É®>�8ËB8’hW„d Ž1$f4¾5•ÚÐÓΟòÆàדøXÅÈÏ´èz/3ëñ_ŒfÒÊ·=þSa(K�¤„K¨·.956É©»î�®¦�?07l’lz±ÿw¢G Þ/½‰ýŠfÔï×ýü#ÝÏTÜ?$‹H]KAþøµüb'šÎsc¦ôK�8Áu[>((îJ"—t¥+lF˜.™„r\#„ò °;‘kþù¯3ؗϺ€cx“±m|s¦øGax°q p"ؘV‚,¨Fr¯_ šÇo»JAóCcê¿[«!nÍ_\Ó�Î5�iz2&ËöYŠaš‰CÏûvöŸo¢K�)É$JO 7ùš€]îMO…›÷½#NÄÑõÔ,ÊéãÇ¿%-ÈÖÒTèãàÔ]{«§`}0~�l}öÞè­¶½ 8§&ޱrcoNaã¶Æ?¼Ä<ÖcÛ@ŒK*¿S~ñéµõEU”–Í_ež3ªæX™ÄŸè^fsýu)ßK9÷Z–©R{<Û"¥¸vy¤�-cgÒ f�Èïf¢®ßôxFEæ³BÈ9­pëÔƒ;Õ¢5¢hT3HTpw]{g½À«ê“ÏÈ“þ׋Œ/¸‹ï ‘ ‘é‡u[¡Á–}#Âá…ÿëÅäÑÀë;§n?š,1þŸ1á}ë¯z1\¢›Y}`ÄóDIBÑøï|µ:�j?ûðöѰûq×{Ìî€RÄä˜Í™.d‘Ì!”…jµäT+Õy¯p¦qUEblX¼)x:�~gs‹ÕUG[¨öçoÞrkÁ[ÑFQ«²Ç\ƒP®·µW³Ù¯æŒWzxüÌç¾]È}»˜ûv)÷írîÛ•Ü·k9ˆX›Íoš?ßµüA =š±Vúš¡ý¡ÞeŒ(¬~mVßCÆ*ùp¶è‡sE?œ/ú!®;f‹³¼\Ì{¹”÷rYöO_dö¿RôÃµÂØ\+ŒÎµÂh¢í’÷å4�ý 8áåÐkD àþHAÃðr"Ä�\…;•<Œ˜͸@W¸Â‹àómkíCÒ5•ÄhÔˆšž7`ÆKeŽì·ÖÒRƒ‘½ä¨8c§õÒv‘³sSúéB^Ër´äÄŒyZDLIŸ å3JÌ$E_/¾6z>()»ª)•ÉT¥>%Üi÷‡ú@ëÌ2Ó§[“äO>)—óŸ¶í󤟜^òÇÄ·ÄjÒ¾¥‹œ$ênÄöÓoËóð¿Pâù¾°Ì8ëlÊ”Ñ&hµXOuþ7V+7]¤± ÓÉ-ù*ušdž}G&sÔO K¶zHg´Ì)�ÑL3Ÿü´Ü $‘“p6Ÿ¿Í•øZ ®ßçkš 7s™ v‘ºŽ¾_mÛ…4õ&ŸNP¥"çÓÈ]˜ÏD®‘ÞŠLe楜¥E'"ÉjlTç¤Ëwq¯|M6GÝ86Ö’„¿a’=¥e»·ãÐëP+íá÷ApzúvôÑ=Ý��¨ã·Ð;_œh6¶s¹#w*¥¡>.ø EuÒŸðhª2VJZÌûBÔ>²~”»X#’ž²)és™9bòR ‘ìeÀ¨xÐddqæÉcxǤ^‡(Ý#xÍD–vK×:écëg›¦*…`˜Í‰#ýjà(ë¶.a8MÊߪŒ3ª-¨B<ýþñcÜöêåë~PW;³¬}]î¸ýfWÛ1Šù´(xV×_¸ÅÜϰEu9šó×Íoöù›ß +_®¸®‚X=,ºaà„@!çÿxå�Áš§ÓãOy6_áNmœnÀˆnvF¥"é4š×<'Ö}yàö=zÕ šnW@„ÇÝR�Vƒ04®é±«°Q[±¨Ú(å]YILJ¾Ð¯cËQÐB’ec¶‘Àv·ºÊ‹a�¾Ðé—kƒñýè?zãOÃ(ö[÷‚¥XuZ]ï®ÌŽ“„°ŒaŠsÓ– ÒÐ+>ôóÈ©g!~�Ÿt`ñ”`Í¥~íV³jã’ÇtX›v`”³Jë¶CË}5(€R‡TÚ¶·<—õÝð°«U„¾ÊXÇ)þe2ûN;PôRlJ1cìS}ø(l�aÈ‘’à> íLå�ÂÚ…ßoùrÇè^2³Š¢É¨ä*ûßBòûšÚ4² •l§ñHIi‘8ÙwŠæÊSº?êÂÅe%î©rúmД/Tÿ‡—0”ÅvìRŒÄ_-5½W |(ìÎkLÁxœ—h)ŸNöÏ‹Y]NÕLÖ�ë>¬$[FuD~sçÝ…×֌΄­Mcþ÷J“HP%Fîr›«geÉ·ü ò†Í@Ýl®>°£ Ý×4u"Ê©vÓ? ÖÑ º›Wk «&©•0¸¿ßa”*ɺQ½¾åäf-óÚ~|ë)Ü&ðcsÜÔ7š~$æV²7QáUO²‘µYëÆÉÞ­Eøß+#ŸÆ¸«šfAi�S·²Úb¨&3NlZôÒÇ8›Y+!×…ñd5ý ’!TºÒHš´—Hn¤•Ž ð.Ææ‚D†õ‚0�cd�xÝ–3¹=ÈØîF�Y11`Îí¸!Ôº�,·:]±k³WãïäzVçb¦‚Bä|(æ}cêzv½öKé×è�) î)’Ûu^'è61â9yð8wý(Æñ~ü($J¬ëdfòe$Ò˜³J€õ�½Ø37TŠ�Ù›NòOÚµL²NÝrù‰~Ó׎üXãS úàÀd*“⣷bwl¶ ÚL %ÍoÍeø_š55×#ÞmCÑ.$üµË6»”Ô�er»ì¦€Œ¢b?vÙÁÁ\ÉKØ1鉬¬e7«•¹“_ ²>Ñ9±ßÍîIy¡î³¾,6ùRÞ7ø ÷‹œY\ä,¾,}ß-H0µšñθÀ,¸K”Ç´í:AqrI͸�MR”Õ†èÕQ?vÞNü|ךð?íe²LΠôÏ]YJ®Tß0ŠÙw˜Èë³Õ ¹tGVéNÒÀBÒ�Ðc¼Ñ�Gˆ%¾Œ²Rpƒ‰O±3‚[ l©UøëE¾™éa Œ=ÂI‚û.Q˜v°YíAü¤yäKJNm©VrVV�ñ–›¹.BP ýÁ k)z­•T–Ò7)»böÊØc&ŒV;[ë¿Â-š¤dׯöPq%n]>d÷ZouÉ+µT“‡#)ÇùÔšC€IB-Œ[,)íÈ·6Mrr™'Àô0oó™?¿É¶$CúèÁ×Ü9Ì$6°Æñ �j¸‘eûÿVÅŸäŽbÛãÖ¤?šÐ¿\µ‘3<ÌÕÌ»µ¶ séµ4ÿâú®Ä—Eù’B‹+p_g÷JFÏdŠÐ Öê¬mâ½�¼CaÌ,KVH¡eÜ#X-Ëÿ‚¨åc€ ZV­–�O)+»=ºs¹¨ Ïª,-0r/¢?’x~‹UªêEæ!Ö÷ƒÒV(Œiƒ1–4©qùšþÞë âûb@„>EõËSÆí1hþ¥ŒGúkCx1db›¡j¶—Rè1­Qi÷nîq𥴕ÐiP’9EI,�ò.®=ü=�4T­­Òéή¿ÛÑd|jÊ¢:�05ÂÿWÓ¡¹éªZ3^ÏN§´78âR—¡ÑëÒS÷ú5Ex0ž mÓ›"íWaÜ-ó£…ÜãUý*¶} RÏT(‘þ¥~B˳Iúû{¥áü˜ñ_Œ;8¹ßÔW¦.,M�ŒuN›2¸y+Òö¸-û-xûÄÆÏ1©¿Í³Ì½D³ù=ãÃk‡õÍ5¯îY/#�—\¨VAÕ…Š’JÖé¶%Š¡;ƒ˜Ô™|¦š‹•Õ7ÅÖæÖ�;ä°`x-$}Z4|2"ùÞ ÄGid~‰›xø>õ¶•Ó:©9ËÆ7`G…ÙàÄCÎ~0Óûd,mÊöÇ#kò7Ä“o"©ÿ×2PéV¸¥ÍÄóËgÿ1g…�ÔL$º”°ë'¾c”uàYNÚÇrg¥ñäͶ–¼•œ&ZÉ¢mGBEx2ÿJ1åB D©'¡èo þg¿Õ$Ã0‚± ŸKmœðXv„HÛa(Eµµ×ð[>IJÎèë}¶²�VÜ!D¯Ûe‹é÷Šf7œ]Z´iü¤yœa‡j·ZU;ºl“4Q�%²¦lý©/„ÂÙT›X|oá'¥×n>>¼(vÃX¿fàG—À–³%0íÝ× ^Urö~rƒê®öeIz™|L\7-„fòtŃ$±Ÿ„hÑ~KmL’H4¥"¾l9×�w¬Œµ­#Ü1ŒËb?ÅÜÊ�+™ËQþX;-¥�Fè ÛÍ ;Ïì‚b[MX鲃ä˜ÊÙûĔƥ�zÙ­»6E…îªÀNˆÍßf>!1ë2U>Ä”Îјƒ¹£3YF�·Ìè‡ömJº¶ê.2ûYͳ»”ä`Í>–!Ì™„�yeW$»)¦VªM¯m×gÁ?ÆÁÍ_tË ¶WB{»bnPV—³•Žº±Á*Iè‚JæGVbh$]JùÁ�Ýû þ§ Ý‚òHj“ 53c Xp}ÖP‚ú­5Ïþ7W²=L¬§¦°dg›- tå†å6\ºl*S¨ ´—�Ýa?ðK½Õhµ¦Àþéü‘$ ÔÙÞ{°µ*Ó)§¿IX«jµF}y>þkj�Ù°•"@E†�ÙïWë’Ù(bÓãû,ãï"¶óìß~SýŽXDãjÎXµrÛèã�Ú™ì2!´Ö>mrëHR!´*§­^1öKò�RÖ®{ê•1ŽSH›£?f;]È Ä6Tē؃+ĸ7Œ­7À²mì�$JÔÊØ6MÏ«yÉm“Z4±.È€Ú6,‡Šn‚ëM]g‰…)ò·÷g~úµàÀ½~3gØäNð#Ž;qÆì¥èÀÓd¢� -&à—p²Ñƒ!iÚ2ߌfSt¦F‚ǿʼèƒÈ…íݱ�é¹ö� wd5&4P톬£�‰³3pº›7¶ˆn¤»ÿŽ�rxÆ�^~ßñ[!¸°±ß6ל­0=‚«Vtí÷+²á)Oç6¯ÁcÚ…–˜p@tTqň†Œ€0ŠÈV‹^�_BÄáX-/þSŠ‚aØðN‚ ^}ñâë¦_�j7vº†_Kó ‹K«S^).õ§ÿüçß/ È Ç„øÅ«~¥9—þ^[�b¯º_§_±à þìO-ÌÕæg§KþŸýJ*˜.¹ìÙÜÂÊBuºâ3wzjzÊŸšž~Vè3õo¯â7K“`¯r~‹ïâ t{ª1�÷/à<îÝ­Mú'S3.�o˜á†©‹‡$Óú_®Gâ~…h†Þ:Mÿ†ý—»¤\N¾ŽB˜÷‹7ÐÜ,Î.Y~ Ëüƒo4PÊ´»A]Ö£F#+"«Bm¸<šaÀi�æCÜ™Îxÿ6¯.|e cÇÃãCR×#¹0Ñïš›®ã˜~!rAkÕùª¶�‰±UZ®ÈôX¾õê×>Wîóˆ²)ÕJm!â, hôGˆ.è“w€ÙˆPaѤ‘;èۘؖ ¬€ÝÄ Ö¯� Ûƒ•ˉXй¹9ë>â�.Žëû±ïÞ8îö„%6~d5Ü~Ÿû¹#¸Ú^<Î�00ŒmÏ×)�¸YñîØ&æœÅ°×ç[øo¹)ŸEîe_´nõú§ DKÊ‘‰�ª¸ eøßƒzjŽ×“×b=Íæaž±s Õ–.éÕ“½hl«6:ÑèëTaEÕe”�AÝí ñškP]÷\B“¯Ù?ð'† ügU(²“„ä�džªþ¸Ížoìtð…—Fztz3Î(CǬˮæ4Úñ%§>Ä’LXh ê7 € ¾9 \w„²�ˆ;¦h÷½§`Ø�õ‘ £ÆœvЧKŒ4ðeï*^Ù}üEg-?ªé‡tHA&!~Óâ`p:ž5©‡íý ŒÌž›ŽûCõ³ŒnÞ�ÿ‡Û|6 â*DZÒ$î–ºq8�¼Ó½0ÊOÁjÀ‚k-9ONãÆMb6:ŸrØg6çÔ¸ó�ÛáœF;¢³³Å@`,„rëK+†GAèÔ´–‚(÷“´÷ɉSLñމ� … ôMÏrÝ+pE˜`ï›2ŽjÈx€ŠˆVâw—…/4ÿ¤i)†ža¤ ¸Aª«•eU¦º9¿£â¢ƒÝaì!¹…ÒA¼ã !CôÕêÁòÇ¿z#ÑΔîo¹V6ꢗÆSŒÌÄ–NBw„]åkV/+³í[íeáÁ½,ŒÑËòƒ{Y.ÞK­Z{h7Ô´p?óïg~œ~–ÞÏÒýÐGê›îgîáýÌ�ÓÏâÃûY§ŸjZ´ŸÙ“jZ¸ŸjZ¸Ÿ“jšÛ�ò¯YZ^£C$«j�ÿêÿFJM�Û.-8h®ÖóU¡aM-hú¼ñû³¡³ƒ’%ÃnQ© Ï_ ´(l¬:ð;õ¢éÆî*]—Ëè3w”"í6hµ^5:nyñŸÃ¸U^~n ‹ó¥fue礽¶¾?ëoÛkkþºwÊ~}»–ó³¾{^{·¿ÀÖ6¡ÝúùÞ^Ôõ®WÎö¿ì±¿··à‚Ùþ°Û<_Þ¹œ­uð÷%<ÝìÂÜããwŸkïúõÝn�ý½Q‡‡ƒs®±v°Óøðæ¢Ó½¼`߯o!¼ý6|pyѹ^¸qwØ;öjë {ùÿy½Ö^_ßnõ÷'óìÏ“sš€¾ìn²vîn.g¨õíkxuð¶ⓞ{_¿Øž‡ñmÕ^ q±¶U[Û[^^Ô`¼'5Ùèµ÷åvûp»¿~Ó˜ƒñ@OÛ8’ýíÚÉÁ…÷úîÓ%ÃðåѺ°³q{9»~ßh¼¾ô6÷OO¿¼¾\X÷/wv`Ð˃èîõ—ƒ•ëË­Í»öñ›èr}°é¯÷Úóí 6ô¥õóö‡÷òî“¿Þþp±Þ¾Üy¿øöþíÒ^ëí§7Ë>­·vä¶ÿa§¾±ÑÞ<{¿½æî~š¿m½{×]›[o_œ´?ÌîT÷æÙ†~õõÆœßXjî~¨7Øúo½?Yü²ûiöìËÒÍç™åA}ï¼ûæåywÇ .ö? .ï.�º·Øz¬W×Þ^Ú8Ø?ß­�^#üRûнé}¸\hµ>œÏ½mí…7Í»ùðSëz¥»¿sV›w—/«GÇÇÁñòÜ¥qprÔûòÚÿryÐ{sx2œ]:ì|™?ð_ÜyùýOì÷Þ~o¿ùùåÙ|¾¼\z;·ÿú½7¿p?/„ÕÓ×µ­ëæ`ÿö|p~úæCóúâîÝúpÞ?9š_Ì^žv×ÛîQ}Í‹×{o77·wßuîÞÖ›oöµàÆo-®-¿_? ç7ï›ñÆ›ƒØÿôaÇŸ÷ÃVïåÅ`˽1øÜœ÷ŽçnZñÊÂËåÃùÓÍöÉLu·yÙºÝÚÜòOïnÛ¯OövÚGÁÅÆüõr/8žìÖÖŽWÚÞ}øÚÝ�_¹?í|Þ�Ù ÷O;­“·GÁÚÎù]{åMðnó4h-Ý.}©ÇÛ¯gÞ}š æ3‡µÁ`éÓú᮷ξìnÍ~>ÜkÌ/¼~¿én]u¼·Þ¾íϯŸ¶·½�憻}~êÎï¿^9ÙÚ8›=rÝåëOí›Ó‹Žûy}­ûþôxy;¨¾T÷¾´›KýÛóýå�ÁéòÁÝýq|p¿pv?²±»ÑØ»hnŸŸ5jõnÜ8\›;;Ýß;¸_ÙØé�ï\^Þuß¹k;�…Îð¸n~îwÖ–W¶Ûo×bwa1˜m_¶.¼û 63·X;è¾ùrÿa½ÿé°ûöýñk¿¾±ùa§7ì­¯Åý÷o>Ç/Cÿtg»qùÎݺޙùrÿ~¿Ý¹ßÛÙ\ôNæƒëÏ_îv�îÚñùÞàzwûíç“õ7û³‹õ­ÎAgÿËçÛöpþâöðn®ºámϾ_Ìm ªÓ“›×·K³ZÝ÷»_ÖúÍÍæÚ[ïÓÁëÝöåÆÍÍÒñåNËýrvv9|yÊp¶r±´·ðv)xïïúÁn³¾µ¶¼w²R_ñ®¯o¶ÏƒíÖüÖu¿óùýî»Ûh7~®Gõ»ãÞ»áÉ»ùÏïV†Ÿ—.^¯Ûõw¡{s=žù÷g‡{Ÿ7÷ŽOü£“•ÍÏáþÙåMp��_ßܼ¹ß9ÜßÞY~säÎ…­íó£x>ŠnüÅÚúü»ÚÉë»u¯·t÷æ}t±ôvçv#<]ü´ÓïÖºŸÜ»zmér½9·ñúóÞÖÖÉ›óÖq÷Ú?�^¬Íž^~ˆv–N÷—v_ž¬]Ç Çfv/ïÞ}^ìÅlŽÛÝÏÝ˹ûÙ÷_Ö^ž}8ø²W}sÿÎ_|ÿ6ÚûP›o}Þ¿ë×fÞ,xóË‹�½Í7ÇG›çŸ/Ã7oß}¹8{ÚôÞ´·ß¯uææŽúó›ï/�çæ¢/‡ë§++Áû“N쮯«;½ÙùÆuóǃåFoy©?[; ß¿|;<¼XœT;ý¥îþ»Ð?rŸ·?¿Û«Ýn½==¾X_￞ÿðúõÖü\så~çüýýáû÷/׫ç^¯Ö/n.WÞÜô÷öN{–v_Ͼ]¾?بÏÍ}i4Öo?\o5OvÎ÷ßÜÜ4vû³onãÍÚݧîû�æÖõÅçõ/Û/×›ÍõîÂ^Ü?ß=mú gû½æ^¿1î\DG÷õèÓÜÛ÷Ÿ×£û vM®ßtZƒÍ¸~}3|2wר|Ýeì‡ZÿÂûàûî²1QccxúnÐ>Úê_­¿v߬5_¯|Ùòß~¹~{w¿wzýövåîàºz÷vèn} ·6ö>Uï¶ß_½}íÝm5Ûoö>ÌݵϼjËo|¸~s׌�;ÁºòòúæÍÛóOÃ÷+‡/WæÞ\nî¹~t¶ñ¶lo½\©íí½ ºÃÃÁÉðäÍf\Üœ/¾¿X8éÞ]×ÎÞíµ6ÛŸ¶–ïNö——î7�v¿v~¾ìÌ|Ù4{ÞËŽp÷èÝÆ›½ëõö¾w6ØŽovo>´Ö—ë»îQûfwmþx±µ¹Öï\»Œñ‹�?_ž¾|[ Û÷ííÏÑMýmc0{t>ÝŸ~q—zƒ‹#wùóÁúñÝÜëÃöáš8ó²[o,œ^Ïlž}¹]øro̼¹yÿòõæÁÍLðy¾5ïV«îþÎR{îõqës¸²â�5z­›™ó­• ¶“æšï£÷U·:ç®´[·ñùÌÚ»OŸ./››GÁ]ëÍuûõöõõ› zxôæ¼÷ö¼¶¶qÝz9ÛŒQm¹{°Þë]DïëÇk›+›;þþpëíüÆË�÷÷n8{7µ/»½‹·ïngÃèòuìÕ‡3ïNf:õ»Ó£ÅÞúÅNܹܫ_xý›“­ÏÖnæÞnŸ¼½9}wt¿~4Óo}šm¶Ï?}éׂ��þöìÝ—½“a}Ûí.~é|z7»§Ã¥ëö\ófØYjµ?yÝ›ùêåÂå§jó2< ÛÞ»á {>¿°üáân™Qõ½½�ûzý&8YÚŸÝ|³~ðénsÁß¼¹<¾èíVw×ü× ÿ ÚíÌn~¹ 6ß½}3Ó}½½¼¾²tì¼[:hwç?lnßúpxùásoo}¸y9»év»[gów+Ý×;ƒóÅùíÆ»ÃêÛ�ûÚáçKwcödÍ;m7ßÕüëËaØù2s}ñßoœ-m,Îô:-o·~ݯÍzyÞxU÷ç^/½ózg;w§Û;ÛûþÍòöþ뽃`ñóÛÓó“/׳ׯÃãxåMk°RegïCýb¸ß‹¾´σa¸âm·Ú;ݵý“ÝÛðdw¾¿µ²Ü[ßY¿|Ú[w´½ÙÛŽâ‹×µ›ãY¿ÖÙ¸ß{{ùÁ}ÓÝœwOÚË·GÁJãåÎÎÒònЉ_~¨ú;ë_÷^ŸÞm>�|ø²Ü f‡ëKëµÏž7»ysßZÚY:jmíÝúÆÅÚÞÌÌQüùõþú‡/ ÍðÍÖÌûãÛÙjŸ‘þóóχ�¹ÚRçèý۽ϧ»gë;ƒ½aµ¾¾¶½qýv»Þógî?4_ÖºóGÕ½­ZëõáùööFðòå‰;»x±<_?ÞÝní/¼÷Z‚åƒÝe¯�»Ÿ¢ÙúÆÛîáýòüÎΠ³¾ÿrØY8Œ×ßתóýõÝë·_fª'/O»ú÷ïºáÊánuåÖõg?¹oꟻG»[3'í·{³góµÙíãÓO�õ�ÛÍËèþèåÛ…‹nô~åÓýýîf°±Õ˜=¾Ý o3ƒáÜ n½>>^X~ïµv?ß÷ëƒ�{q÷rxR_>¸y·|Óu¿Äõw7­—ÝÝ~£´«—G3îå]nëÃæòü‡ý›×Gƒ¸;è.÷–j/�¿t—f–îë.[]¯?{ÑÛjÏ�̽ys¶ü©6wyÓjí-\y?s½×9yYß;›™y¹ß{î/^l-]tZûA<{ÈÎsý}ÿåõåc7—j�óýÝÚRxßÓ¸l,í}YúR½í~XZ^ßY›©í½~ónç>¸­Î·Þî-ù×K wë'3k¯?®ÆÁ»Á§§G—µmïæpñ®Óܾ\ëní¬ßÝ4Ú;ƒ`Øœ6�Zï«^m³9{Úø²6sRílm,î·Þ.,õZoß¶?Ô÷_.Ç7Ûoƒƒ£ógï^^µOg/wß¹õ7 çsõæÁúæÆÆæëµ‹ûz|v¯Ã£ëvͼm¾Ùé4OÖ>ÔÞŸ¾œ¼Ýê ßöO—¾vïâ·Á§�ë÷_^ÞowÁ›fãÃÊËËþBÌXé»°u3ÿröt½÷Úo�¾77𹫯o^ßß—oÞÌ/½Y}øy!Ú™Ý:Ûœé¾[þ°ýòÝi¸7\_\ûp²Ûo�Þönj‹QðévçøK¼óþfcîååbpÿ¥ú~³u±³vÙ·Ô¬ Žªõ“N«Ý­¸Û^ß]¿^¹ü°ñåúì¥ËÈÑölp;8eÄp׋¼h¿¿ý¶³ðÉkÖo¼îEcÓÿ°~pz÷¡þ²~0ó!¸Ýh®íT›ÇïãëÆðMãàóLÔZ|=×è·ƒ'þ ðv_Ÿ~Úî߯?W÷�6¶šÝøÓþ¡{±´²r»ùùôàÝ›ÍÛog½v´óyÜ3»K‘7ׯ­¿½Ûxûevæe½vùòøtþ]£5 Žçw—·ÞÕ6ã»Í7õµ—ŸëþÒÚлXÛíïÞ½>:YZ8üüþziÆ;¾{ýúníÍâåõió}xÖ—Ï6Î?}úì¿ šÇ;s§ûŸWÚ�Ó­]çìe°{]~˜ý´ÿza®7··Ý·‡_jÞÛÓ›Þëµ¥óÏûõZíòps¾ëÍž­4/.ÚoÚ[{Q«ýÞwg_öº7Ë ÷çg‹ÍÏ�Çäýæûƒõw³^çÄÛxq°°¾·ôûïgöNÜ×Íý­KoÏ_>ù2?ðkŸ—n/ßÜÝ´·Ö¶‡ïÎÃë~ûíÁòlìÆýÓø®¿QÛ˜[9hƒ5üèx¾QéÕ—ß ®×f×–¯Ã™áþémôéröàÓF5ˆ[3ÃëáÞ‡öùËÏóÍ÷ŸÚµµóϵø~Ðñ®[+íþë`3¼9;úr>-,ô�nÞ} j3ÇÁÎõç×3{Ÿî�>�Î-\Ï—ŸöÚ^/7¨ý©õawyóËúÁ‡/ÃÖÖÚn§zéoëkïªïçûéúóÆáf÷å¼ÿúöýþíýñR§Ï8äÚes悱÷÷÷ïÃ˯·=¼|ÿå¸Ñm.~yyÒ:{¹ðºùòâ~èŸnÞÞ5¢÷�††ûfs¶yw¿°²ôÉû2Üì 6Ï;k›o>õÎkoÏ£77ëvöæ‡óÕkwîîíì’w{´R_l¶^ÞÜ¿|Y~»ÏîÊs[ŸgwOÎÂxþåç³wÿÞ®³Yqciÿ•­õ—ë‹Ï Ùu]%Ap‘ƒ¯kK ‰èò5J(Œ$ήï[”]gaº5šÐÓÝÓý´€Ì;$/®FZ«æl´oßä�)bâ£Y[•šBÞÇŠ¦šÇ“pwÖÌ£q¡K�òXÇk[£íþêN7ìóÇIÒO—2?P]j³ø¦k¶KçÄ‘-®Ž³ãŒ<ܾ˜üæ~ÒYû†-È9VcG ]89NØÅ¡¯ÊD÷Ô–e{²Æé=¾¶›Lj�Æ/„¦¤UêòPCÅí}¤iÛõ€X4n ÎTzÒ±#‘6QpNj[µÞ¶ÂoÈS•[�ê^]œ67Nï“óŠÝ¹—»Mî*û‰/ʃ՜¯‹«>2ú¨’ef}¶Èõ ¹uF7åš,žiªuѨ nX�ú°Ž('ª½›PÂn}=™ûAà�¶6ï¶è6µu�¾J4Þ©7»ô|†áCÇЩOöö‡užlöãr0k´ –&+Öî•Oµ©cŠáì¼6=à%âŠÔΉ‹�Òæ6ž—ëCÖlTÇ«K·T—†2z樭­—VMúÖGÑž2Á]Ý`�Íœ· u8cý¶Ûî&�[�eìe³­Å�/-�uƒÚ¢ VÄZS„?íZÝÞ:fX¿rúX+([æ MëœÙÛžÆn¢Yo-Çf¶„Ýl™Ò©Ši–6aîýAõÚàheÎà’R›´‰L%è~ófžfˆØî ËÉUX5KFÇz5 mÈå¾,“«é°[RŒ“pºDyJvš§ÎyÔb4³ŸÎ•ó„0Ñ­=ô>ØÍæ£9dÉ5?­X"?ÖçÊ~4‘˜îis¢XÅ‘‹¤ÚÐÑÊñÜ£‘{¯ËÖ‡õNìÜèÒ¬Ú#¸*£w×—Ž´åôó�¹i£YBØöðXi}܈AõTžŠÝZ›Ð«¶@õºY-K„:Ù-�êŽe ⨵ˆS—ÖmÝëh�ý¹V¬ÏײrèÙëewµãPl5]x¡³éò ¡0z«{7ÈN[§¥uÁ›În¾ qÒFFÔÂ@ÄÃyu,µX”å8nÍŠw‚¬ŽÔeMfnež%oÈæ1v°I¹Î¢ŠÐ—–¬ªTëÈåd/këŠ]ê²X\;›Æ•ª“Ëþ€¿m«�FªÃ.Õ3ˆÃyÜ·‹‰²_Jn;šŽäãHÑý‰m\:;¤{ŸÓê¹]µæÓÛ\Ÿ!+¼o=ÎUý0Ÿ4XY«Ôô-b�ÇŽ‘çí’|<ÕË5Çl+�nCè•q¡{ÖMb—íÛ„ÖæZ}˜õÁ�”x䪵›8RÒåÃ|tQ«£ÝƒwT‚ѵAöÉÝŠ¹ck©¯l%ºÉ8Ãqt¤Ðmr^c�ã•”Mg»LrvB/L§'̳ÑiPÛ �¾3º5z4¾´z¶ùàw¨ÂSeQB¦ö~2³-Æ™@¡Ê•'4‚á¸�p˜Š˜(²(‘Í–Ò¨r£Ëž%í%2꞉¾5}È¥,#‚^Öñ›¹1�ǃžÔ�¢:åd®‡-{7U¿î":ã—X›1—­Sk´? g½¿gÅÆI¾wM|ºçõ�9è˜:ºG�%ÁâJµãèL7�+»s¬;¸UC*E+yÁ*ÿÀð›Jt6;ŠéðzÁ˜ÑaÑÃzÙ¢N£‰²÷js èm„¾Ó¢¨Éš tê:P¨¦=¦ÚšÚ·oWÖp­R»¶£C½M“¦”FÑmß÷}§X¢1ض¯ÔŠh˜T·Níˆf…”)lL_·“Q£Ã´¤íÔj°ëv�Zœ£}§ÖZCßv.”€5ŠQ Óü3Ž¢Xjr×þ†:-›—ñG�:{þÅÎp»é4¶óÎÐØh •¢Z3Z7Ç[®ƒ`T‰ºReÛmƒþÊzÈY=ªÍ,X¤i¡s꤮øÃºß�ÌfìµÑ&ûèø(œñ�@”çÊ´¹Nê^eºX“=LWò†*MÖÈ—öÍæF¯Ôö:N÷„†À�‰ÞÚ41Ä?èjåÎçü®-ï6çk]Ÿ[,9ã•�EíúQÂ÷”¾ sa�ØÕ•’{¤/Þˆ²˜K�±‘NkUj�¤]µuFwUvÙr •ÊðV6X–ç䀘lªV½¤4‘N}©ù#·_±Æ•·n¨±ÄdûdïOF•oñ£Þôtë©Âã¼7?öÍ“�Iúº±¸èwí°î�˜®%h“µqí5œó~½ÛÎ�ýq©;áÇKÙƒÃôºxœ/Òü"­Õîd$.ûµ[éZG�Êã0™ï½%p.ö»»‰ÓÛIstÚÛXÿ‚͵^½|8=T{¢® #»=n-­Ûg}z¸Nêë\2†UÅQ – ôˆêŠÀÏ‘žh1Wzp§hcº<ïšd S�ø}.Lf×+ºo4q¼.;:>EÈ#n6›Nû#KEPEc1¶³2�ñ½ÑÝNºÛé0MKXã©Þ錚ƒÊcO¥5±5WçAË®éM¶ñx(M�$®Ó‹TgöÁ67ûål†2móÂÓÇöV<×+—·û´)ͧ{³»ª­f ¶bäš²><ºü£ÁµçGnÂmæ»Ót¸âˆ�të÷Ï(v Í­xXлm¿·SÊ=N�1“Ê(ŠLfŽa×/_±S­5ÚÎÇ]Þ±­Ù}Ìì.¿!Ý�7@‹òÒ­C ]·ê3Ý9©¹må&N–ڥǶh¢ýAßzÇÊšžÝ[›6Z=,T¹Š�p¶Í·=«.éý¦û&Ù/1òº~¯ ‹Q-áúŸÿ|ý„hjœý¯¯àòëk2T׿É7iqýx$dì¶íP9İŽàj.0˜‡J¦¯Gš¥Ð˲âœÜïÝô5=þC*n%²éþhJ ˜ÙMA ¹šÓµi«ðŠªØ÷g³t�/_Þ4ãñfXþÕ¡¥†½s�dYEü·h{²•ÓW…SÎ’ÄàJ6êo –Î6Þ”­ó^‰B!"Á×ÿþWFËè×W�ÎC¤™ç2à ™å’ãä.džx�M.ƒJ>^RÕ\új=uËePËg 8ÿü.Ô 8¨’£csY�E, +5p Œã=—ž/¢?ë¶™ÏBÈg!JO:—ƒXÀÁ(ØR>=p³çÒËùôŠ.yôh¹€>w  Òá å?Z œE(çÒçÈÝGh�$Ð „#Z À!•K_ NgÉr�˜<²À”dS²v¹, „�‡‡ó&›†ö¢ G dC„c.› Ἐí�úå=¸\‰‡H ŸW.‹iR£ré d…—¥“Ë¡@ZX’ rd­\ÃaÕ9ôX�ÄðK†æ²(ç£jp¹ªV 9@Y‘ÜQÀ DÇE‘UB*|“ ØäÒÃ$È_^ÎÑlD�½O²¿˜ŠøÅ�#j¯—N„üûß®.i„àŸŠ—w¾wqrß\4ª_¿hŠ(ú*¤›· v (N#ˆ ‚âÞUɲ~­£¼8g¾,[�7¢Œ�ÆÞS3€Mc0·A‘„Hu©¼|†Œâ ÏùI4/Ic‡>_ÐËMzN„ñM°î¤dfZänCÚê“/H)�«þü+VØ–HÈ��û¶ùPj@jiïvqÒ ¹S ’³(šâÊ©*ÈÛµž ‹ÓQÀȨv$:³px¢XGúàp,>ÍÅKSÂÓk&›þ×_9Ù– ™ æUr×”ß1×÷UþŒUX¦g |RìüM7¥é—/é¼UÉx‚–�ÈJ¦+ o§ðß—pKîd®ã',Hºðw W¦aa1ÂG�ŲPc£+ß�#¢uûÁ[ë©¢aÙ/ò»³æŸY4©"°]¼+!:)½oB¬†—¶\TÕ7×yƒ¨fˆ{5WŸ¾�ç/ž¡'eŸ�Ö•ò3ƒ5±ÿòÇÀåï¯l°{à»ïuî>þžŽÄ3 ‰r– x�‹Ã’{mQxJ¿¼ò0?ª�mPnàwP’áõ¶/ö$J‘2�û™ú‰Á²u€GJÈ(ÌiR¼dœV0©÷„"Í?#çZŽ£/ܬp°äÌC-–ñé} Cù‡êC°½�Öø)ˆe.~8™·gÒÉ�Q‚¢s(@øîÉ:ƒÒvY�~u%¦9¾Ç1‚œRÝÒÈ—i½Â$K!wsM½¬Žàk0µ:ø$¦=Rë#375SA‚÷)Z¯0W3‚“Ç îÄFÃÃF‰b7Ät‰ö1ìôâZ¤×QXÍ*Ö @PCp>G«ùÙ‘jî¾,ŒÍbÜD´ŠjôEÃÓC|ŒÀ ™L5ÊR}rv€_C.=ºðJ08©àY |>'œÒ&BÎ=ÕÆød ó¿_œ†l¦©>ÄXz]é1ƒ$ ÇÊqÔ&VÆü¾ÚgÚ¶¹òG(´ý‚[¯àHôpKùÖr!nÓ?·5BtºÌQ¤„Q¨FÉÞ>c–PZì¹=ÍgÓö8Û6ÞÅm³¢€Q 1®�U`ªnHäÁÅžÿMLÀxT!ʺ͸BµlS²…]ì‡pÇ‚¢O•)Ó+9*ï󫬘– Ó¯ŠÎ»å6£�a&^Ë:aóŸšÛ8ç©�Ç£–9oÁ¤„ç>Ÿ9 \w 3AªT«•Ìsî)>?QÁ£^32³i¢FeÔ$r´[LánÈ�Wò˜�*ô•ô¬üá™åB|‚yš°‡·M–=²à �àK�X-Sñ]¬¹ÐÝ1Õö\´^ø`§É«Oš0&þ�¼Œ‰»/côÿÜÎÌz¦»¼‹žé­Ç,`ãqà+ÇECÎ=Y“Ms¼´Ï¶±•…f:dSèL!õÃp¼öAžrrãÇul êYã yÁDaÍ#C—Ç<în«f�Œ&�6i8ç¸äÂé)R¿« ‰Â«&¢€òϘbœsÑj„µÎY�±æ/®IMÞ²TtÁ­"ëDn¯+Áât”# <åK¶~sÕ¥lÓ.€¶ý+Ô©|ú¤üq˜ádËx–©˜Â]ƒ>æU?oâ!jpy :†7ðKÙ»T#Q²S9>!g ]ðè{%¶²*Uðù~ Fsìào Š-s¢ �ùtBÛ™~謡‰ƒú††Ü–– Ã.j³“81iwçÚV!ðß�rTàyKÿ°C½¿“h–߇(ùÏ9r�=w(á7±|ÇXºiûé]HìXÐ{®~`ï>+:ûáàà ž³”¸"?å¾ù€Ô} Ž�H?ÈÄ—l?Èœ8?ú6‚ë�úÑŽßLÉ:«v\cª×aÒ¤Ó£>¹’CPÌÐJ{ÚUQ_CXzïïÑ ÈyNcÈfh¹^KC›EN’wà��@—Ç=Öîcÿ.|ƒ9ôÁý›uäBè´d„Rº$m(•5~ÂBž íGòÏ£{ Ù"U*•$QX�ã Ò&Üù÷¢`Ò÷‰|8 ÿóÕÆGβ®Žögìâ": ‚T¢ÖZ–W;XU‚à4—‰ü–(C–ŸE$ïÐ*ø¤L)d7äÚ'uÐe#Ðf>ä®h >GNDÎ=RXäë¥.û—Ÿ’7Èáp„²$¸2ŠéÁ—Ù…æã\æVd Š-ä„. þ9kÇœ)ºaë�h4Õ(|ãèj�C1CÙ¦Jh+?Êäó}È)î_ª±5b¦ ZÇ’›!˜’¬HÓ ŽçÓÝ+k}ò{¼ �߇02� ™Áå]Ñκ"ß¹ äu*$ÌØH“ÿ„¼ÓiãÓc³„xnÀ³ b„’A…Þtç6Ï 5ˆŸË¿£_Ðѯ߯Fzš(˜^ Ó±¦$K¦éèò^=$P«ÝÓê’5xƒù‡Gºf%ݹåÐ#†‘î åßËF¿Íˆçît/üÝ  üRâûξàÝĤ¿û-�/ÅÑwÖ­¡¹3 M ø½˜w˜`×Vœ‘5na§^K>L0aZïÑú²ÄÙgSzæ"|ùêhA&Gdi¹¢XH~åîÌ›¯4r|\¡HÉhÏJ‡ÖÉGF-ççåFn�SPl;Ög¿ƒ¢$sŽb›ì`²Î¿xºìµŸ¼¥�;>¦š$ãu Å1£jG%!iñjÌëDj=rFÈëÁwiM#r} 6J½f:ÊÒ&×›áº�Ñ þË—çÿÊïXÊ� á=Ô^eL¼Àø�`MüÏ1H:»«�4èÐtðm«x9éBÿžklyò'bŽâÊKPÝépÄ�eñg†Ö”ÒDîqÿl~ Žæœ[Ù Êàf$I¹1Ií= ìß"ù@áKÔlÍÀñ ¥Ý^x­ó9{ïEvNSøì¹È×áÜe¨^-yÏNõëËèœs[†�‚¯3)ŸÖqŒ2m4ç‰JÎúöÔdó«$Õ’W×RJ™É^J±^¾Œ‹—Ê>à¿3#â'ŸhÄOR|b²=?áš°#½’ñ�(ëß‘äo¹¡¦ñ!ŠTÔˉ/�Ó<+òL‚ª|¿÷1�ºT�ù…Âo!—ú0u!rP™i™/òZ0ËKäð¸i‘SŸ”«Ò "b¼hüSAÛÿ Eò?ÔÎŒFxñe^ ‚½Ñ‹aÞ� öðì q_që/e.êÈŽÂ`6kh8~V–g¤ûÁ%r!‹g2[Ö©©3)&êß°¦�¬ñ»ÎDB‰é¦ Fôéw«8_¹Ÿ}yú]à6ü_1¡ŸfDd¤Öçv>Ç8~Dçs>)R!Õ»µK)_:`ÆcOÙW5Ÿg6Z8óðCì‡Ò £.ʰˆw†ìÿ=çðµá WH w«ä€ÀàìÔ¿ïàJ\±ìëçNý×yå«Y| žÛB’üý©Cz’þþñTÑ‹ßx‘äzyrf Îás³SÌ#'%ŸIV½ÌÏu%»|å«�q9‡~€¢˜¨Oñ‰ ð'8¼ œ)Ùï¯D¡iˆâñ2ËÿcïM´ÛÆ‘Ð_Ñíî™NF–µoÉ›ûF›ey_âx™™“CI”D‹%’Zçôûö‡� �”ät§ï8îNhÖ‚ªB¡PXÈ ÙFKšÜ%àú†°9%^#Îÿ¶�ÑrÅê ã³»GÙµ[%éÚôb?¨gX½N ^}éõC¿‰¼½¼¦\ª@Þ�¥ê¢ì»¨2QЯD xg÷äÍöú—Ã�á�†¶âÈ2Ö…¢];×TK;¢2[Dºri¦¬äÌ}ì½ë8p§LŽâ‹!qS œÑ.»œTòb ‘lÔqôØ�VÔïZe¹r{@Àð noæÌ7ý¾4Îh%éIŽ  >c`›ž‹ål'\¹Äu§]!AMüH9ìÛ<úIrxüÖ5µ4ƒ}Bé7Fpr—�1s2X·�é7�]]wWºN øÒ¥õ áøy}úDW��Ýìj¾|MrZŽ„&厓®l›LVmùb¾›)– ¤Üm�ÎâËâZv� ’£ä#Ì– Cä¨ñ’üãÕ<9–F.*á'º°‰7Z²½�õ°¹â_üs yv�¥|ç�3²a;ó,«¤ÃP_Îʾ|‹ŸXDYBœ©(ûd‘ÏR3»Z7&ßò‰Òº¿—E‚šˆ5«ÎRȧÜ.Â`ðÂaìg½¨çõÀº2ÜÜâ¸Nfμ[˹—t½_no$‡‚d�1_Žã·o\ës_ì³îû*Ê÷-ùÎ)xMû>r�@ \5(¹Á9óxÏm_sû6…ù¶;ù¿|‘Œƒö( í ò5Y¿‹µôe ͺëý ÿˆóÊ\§^ÂY?é%¹ãÿÄÅ¿'¢pøuh€W$3§ÜÖôš½þü!Àø‹Foz—°D})} ºTGXú¦ Ö”n[„ßߊôã!ÕtÂ÷—€|òTØÓ=ñ /a|”IÀ�Ì÷Ê‘ƒ<ép[*so:\Š SK½¶×Ó£ñ~T”xoEoG€NÉ5ÇM‘ÁÊõ$�O�ª½8MrCG³¾…˜ EuÜßCX¡T3 #fÜé Ü}Ðß¾}órpuƈ°Ë¶RTFRÿ—‚Þ|û„†{»¹³¿C!S”ë±q vI‰S–mL§>¹H€ö?~ÈçËEin€%‚\ãŠýÿÅÄû— ‘}®è�Ŧ0ÄÔ˜ÍØ8U¶àcAÖãƒZþ'}2s7vaòåC&8bò˜p�©Å´ �O�qó$$ì6)ÝÔ'ì»ÍxßÙÓ¸® ÔüæQÒíy:&2'Ñ[t�qo ÝþÀöô%²ý]r”|Ÿ"Q›Äˆ_J5%)�8f¼�éšinR¸–Å¡™;2�¬ðžû!ƒF¾™�b.êÛš¢/ä.$NL)ªÂ7e \•¤“)˜æÃÍ�ðÀù?ç„¶)K!¬û?Á ñï Ÿûw"Ž¥0)>*×£!h¸ �Ótä/bhZ]ÍdˆÂ®Nµ¢ó¬}ŠpµCw„MZIÅó·•�±&‹!þ1˜á8c¨iˆàØ^áCñ¥œiÓ°ý¤Aã³ Y\ÙÂ$¾$õßù*O-¹ø©]X–\±ý…s]™ìJ °ã‚´ T&ä#ÿ‚L1…L0PçŠ0PVP´,²péåö±Œ"}™‚[@@}ù·ïïo- ŒLBåïkö8ä#Jÿ”c^2åȳã*ÁÇ•¯Ô‡¢O>YPø`½#VKÞ;T¶ÜCŽzŠ’h'dPeR¦S ü¥M�‰æ�Põ±ž?ªMÑ~ºÛ–Ž28È>J�•vœþåçG%&J’a> ’ùoo'¼,ºûíÆS˜¥@þ"ا•°(úKŠ~+ ýT`úÔDל…ÍÜ€ex¿ZàœV陪îÑFzÿ·±¾¼%d»z\ÉSüÍÔwÐ xºò?Àør`k„U"91 60L�ÿI¤ÿö?K'âÑèp�çQøy,Ñä`j›9ò/¶Ãa­‡àÌôž10z:ÉÆr8ßËý8íî-�ÀÉâ IÖ„|âe÷T++W }Tþ‡«ÿJ½²äÿP½ B~½r{ê•“ë•§zåBôÊÑ»®¢ô*î¯W~O½òj½òQzåé}QzUö׫°§^µ¢ü°V¼^ÙXqOÅŠê +F)V « A1eµF+VÚS±ÒŠ•B+CÐì_,ï©YY®u³Ð6V¦šÉÔgš¡ðZRaEkVÙS³Š\³"Õ,¢Y%–fyê�2#ÅЬº§fUµf¥(ͪPæ\,ÍJûk–Ý7óÈ*R�RÝp�¢”+Ц&ãG¹½óER"m)USEˆbår™”Û7 É*²�2iNáÊ!�,«®Àõ9ÚMî£Ü¾™HV‘ŠÄSµ¦j,å (·o:’Uä#e.•C—�¥\éåöMI²Šœ¤B•+†)Ç.T9(+DË}”Û7-É*òÖ}…kW¢©]>s€vû¦&YEnR¡Ñ0\»2u¹hírh·oz’Uä'ÕxÚU¨Ï…jm�/5÷Ñnß%«ÈQXú‘’IÄ´CÁ22b"íJûk—Û7KÉ)²”, ÷¡êáþ™N(ÕC)J…è¹�zûæ)9EžW=¤Y>Žz…Ìêí=]¢ÈT¼ô1\=è“ð€»êåPoß\%§ÈU²l𜒉ÄÔËÓVªlœ…ÑsõöÍVrŠlÅË�ÃÕ+ÐV­^iGõÜ‘>ÑS¦¥õõ~j¢ÙãÀ‡ÒýÙ!›|¸ ð»ßO‰ýÊŽþׯ�s…U´âÝô‹|¶ï¸F:RÀ}„ ™~°\�|ÏwËËNPGØ €¯²B1Üô0KÐVÐÓì>³kÀ© Àû2‰. oÌ>G£³VôûÏ{SÑÈgoq5ÑéGÀá»èb•ç3Å︲A} ä,ºø(™°=]ª­XO¡\9–ñÛŒŸR<’5'4?.¹¾&Šäµ“Ìq&›+’£ƒåÈ+våe&Üf;*(‹gÕItÑIH(Dá šfàab•b9ÔW¤U–W÷̶†¶î8)vÄvsü}“Æ;[¹­«ò=¡J$»ØÂÀø-—ɳ–£Ÿƒs^È8uƒ�î}û2°­ =(ý·Ä?¦ÖÀ4f‰¿¥Áo¶k~2† |êø^�ÀARý�%¥~û†‹Mõ-—^±¦Ø~+U ˦™®nÃarÏO�ÙÕnÀ#eIÔ‚ä°¥�e÷tÂ~¡ˆj/xâÒ!V�)QGŸÛ×ÑìÏžÝý·5¦&ޏqç1 âÉ@¿—ðþ4c¢ AS]Øæ‡Ÿúš«}B/ÒÎr˜\OÌ£¿äàžMè€.àïÿú5{œýׯ š:à·‘ëÎ>¥Ó«Õêx•?¶ìa:—Éd 5Eú´†§JQ³Õj5�À €¨ž6ìIŸâ ™˜´2ÕWèûôb"‡‹ø„¾�0‰n/uðzi諺…X2T ®ÁtÙ½ƒ]d¯MtL£Èþ’ouÉ=H UímȃMþ… �G•Ãþë×4f­ž~úøù�*‹d?p;�P�ß|ö_”Å}xïñyƒü�¡ú�ôx�Ú–¨»Âÿ¯páKž]Â7Ûœ?|çò %\÷Aý`ñ›ì=$z+üµ.+ê�ã÷.ùq£÷¡Z¼Çîï»e>|pðŽ®ï¨Ðýc´b‰®®e™®1ãÃõÌÔÐÕ¡œYü]ë™ý¬"pð¿è†4þ3MÙõå±¥ð3�9YɇLDqV‘$â´s<ÉÌvÄÌ=üh¸5ˆµÜ™ènõ`'H€¿Ž?\RqP|.ëO¸¯�åòKg©�‰5ÖCéØÕÉAgäv÷«¨£¿õ-…‹ÍŠ�支„³2¦³…÷‹ñpa¢Yí pßž>²Ì¾úkð#é¶ ƒ­?í¯ÝÃù„käÃÖžâÇB ß·öµ é^aPÆnÇ�$c±wP’1Û5,… ´k`Šh×Ð$c+<¨ ãG55�}©eKµ;™’ÕK§L¤q³�`í(¼Mý�qƒJ¥Ù…A8©“L{âÜ1׎êÆÉ#|õé%üx+ Â8¢2Æbê,ºNÏ6f.=:5ø�§�ŸÕDî—NBçæZÎ:…ÏÑŸX–;BéìÐÖ6èÔbl6rÈšK›ºàª9ätAázoþ .‰ð,ÝÇn%,4Ç!å>z…ã¼?=Ä$Eû®ˆCM®èÕ¯˜Ü‘ÕMÚ>�2t,h¬Q¼ÉI1KåŽ8ÍÈ?4yc�Cðw.#›‹cxS²59äŸ*$E5¦c-û{—Ý$‘EóZ㯥ùó\vIž~¼•\üQ?�XÞÉ; ˜y ©½Äa~¯ÓP,•þÙ' þ”©~¬ºò¯ŠDÕTŒÑÔáã±Pe�%~UÅJÆH÷‘>V]}¿Wxyj¹½‘—’û†^ð/Ðëäfôâ6qÍ@Ђ»®àGׇßI�«dGVG«© ª¸þì¢êv”Q{D/�¦¦¾æð:ktÍô6îüÓœì6juQǾ×̯¥†L¥ÈµÅ,J‘¿§´®Eo^å�Üdš�"½š /?á?©|á¸\œ­?ò/ñå5þ³G9+ !lØØÊxÑA¸ÞDÉÄ'`ÈjÅNö uzm#ªÄ,½a�¾¥ÇÖ*¯É‘KC.ºRˆôq'™r…LR‡ó9µ°Q#’ƒéæ»É»› ã-xìþÍB›àÇQª¯¢èäëD³�ñµŒ`$Õ3‚&DÓJ‰®bfì-Üì¸×\Í#ì35•ôc5zÈ')j¢Hk0kr&œY³…‰¾5‰Q27²³-Õ“$a¶”L�ˆ‹§±æBÂm)�‰ÿ¹˜¡Û|ÌTpDø,ÆCÇû€wƒ|dH«1֑΄›ŒÃ�›³å$æfã- Å×lÛZ…ü¢’;”T*0�K(CFx¹1]j á“�ÇJÜw¿»Æ»kHGâïŽñC8FØ\ÃÛ{F°ò…:ˆß¥Ê¨Ã:S¾´¿—!†t 2ô]»NxãMÏšÌLÝÕCš�|,Ô74Ó¦|¦¤0iÃòð@0Òµˆ5‹�tÓ™´!ì­,~’î#T~ D ~Ä‘|ÚDR,ª¶Þ Š ”M@M"°(påC+räÞ;ꎫMûèãæ‘¸þ¶ßâç\þ|öQx�v­éø£$Ùï&§TÞ òs¥¢ñý+jzl•W†;J@jüW\dou}*v3H\*à † ýB,T|½3Ÿò¾æ}ƒ‹ jñ«‚Ò>Bx°K8}‹‹;8µ?8G¹t`m%¶KË)w—–*,wèT©;GÐH�YM³‹+ÇåJ|˜ãÁØ¡^\í|wâw'þÝœuaÿ"ð[;p`Ù4~b!¥|wà?� nžÅzõî†ì“ïµná§ *øq¥c?RÈ*†5Î RŽiôõ”k ‡¦Î[Àu×y£n)�®ÁO:F6Cv©ðU÷F“ÂoîùíÑÄXÅý¤Ý•Š º+–QøN8®ˆ;Q w$‹‡Îb‰ÊI 9ø‡P–à�ð"iD!#ËZL÷“#ÝAPŽ*ž¨D,ga´Ͽ˚€�Pñ•\¸£ÿ ËOÚ!i¨r]SCW«ªlªÌï}Œ›¤¡D»çÒЫèdÑPåIbÑó3A2Ÿ”�Ïi%²C;uGC;YPŒ¡ÝNÕ¦ˆò1T ëÈb('Þ1ÔSÄÈŽÅ•¨ÐÏ=ðŽÔ¢¥£ñ•^Iæ…‘Är/,g{Ùݽ0ŠJå…QtÒ^´XΗó;za$‘"èG‘)Ð÷.rµˆG³…°ýÃRnp¹—{¿ßÁÎ*òÅhrØ‚´‚$tq\A³ó0]ÚÕ~ÏoאַåZSËw‘}ûûýÍÌ‚ÌF›T×êor)ïHŽ'`%øøÜæ E›,+e>�TJ±ŽGÉ·™Ùã\hY²9e¥qxG”©äkJº¬Tk]‡wÊ?û„Ëèex q!W ÓOþµ¨TEõÈWÙFB_ïY69lÛ˜Ž@-»Êò!øp�(s®hn¬’ƒÛþ•3T¡\y3·µ¾a¥ºè°?&£æ%P­­bœˆ©˜Œ°yÁG¢PɈc¶ðuì�²LFJ{Ô]Yø:AàÀ”˜�D¢cÉNÈ2�|D Ö1‘mÌf\®“6|crí²UÁз´Çp,àŸÁáØ»{¾»çãžþQÚ»sàœ�EÜhçŒ"Ù Yêœ�sUuN÷uNœ] 7A÷” ã2!øè¬åw8`å Ê�ep¬oüÇ™ês]¢‡Jþ¶)þ¹:ø*rô7K¹wH¡Ñ9·áÃdao3~ÃÚŒo[H`‰ÇŽÞ½AÐýkNòˆìG&çˆÓ/á$Æ4>Þ{a4xÁ˜¶7FŒM�¥f.ø“¸Í.¥ˆ:P�çÈuoŒsIžðŒ·�‘¥†T!+ì®B÷›ž‡^MÍ �Ú•'Ö]TÆ0œH ýœ)Sü(ç€ë)Å…x>¿‘,±¼»Í»ÛD¹M`EDê4�$/ÌiTÈR§Q!K½@…¬púïæ4�¬Tí4a¨J§ |á¶»×�ß;SØkCð:¸dåUs!4Q÷È…�†]&'ûŠn¢O)�MbÌ*~ãèQ† U4Ê%ÆÀ9Ÿ9årh ÊOûö´Wüu,)¹tKв‚%Å[¾’ÄY»2 ÇMuÁàM¼4Åqñ_»;S�<æ÷‘â|ƒ_]ëû7&Ëo¥õ±aœcÊ�Ù�Bñ‹½oÂ0ìsÁÀÖy%­Äâñ©å¦E‘ã8r »&oã0l­ÿM*&ô̸Ýô‹õYD$¥ÿ¼ÔP¹÷)2ú›ŒàYRŒúÛ7@h»Gaú´ÿ>ƒû_±¼ì¿Ä{ÍB�F�ýî@ÿ½Äß­å>RÜwçùoY? Éž­œE¿PÓ{㮵Žp…8D�UX ÆeÆ8 7pzAáiAŠ8Í>H§å©vÅ�±>ÍÓ>§ˆ:„!H§áÉè¢kNl>2ÊF—×>ߪªvOâ�¾ TW\Ì�„Uõ·7y˜øŒAdèP0ðEÞ£È{y�"ñ£HðŒ‡ÿª"9H"F ‰Aµ+~ŒÍHï1d§»j÷$ýÖ)~ÅýYc\�, ˆÞ3W`$L··ÃiMùe_»ƒ:µ¨r„M÷aãü}µô¿G+²üÌrÜɃ½õßS‚ý,ƒ»Shw5ãsƒ+xðˆ®·âÇfeØ\³ú0¼8ë_ÖTO‘ bü'ØÄCcü+D+KEX*„Žl]Yf%ì«=Æ#Ôs4à\š-E¡ÊJO›ŠÇ�ƧïÅú}(o\—±.d9Ø^´Ž�ïe°·(@i1Æ\4Y9ì`¦—ŒãoÑPó;¨IM%=²I�rx“šH~lÄ øÞ&Ùå¬ÛÒ8ƉqœmLÊXfR®Îïm/%Ç §ä¼‚bâø¦T²ÝÞAùÀï g ÃÆ'2ÓMUÜfyæÒOZåv¶ø‡W‹{»âdÙ64¦äR9᎓І¸GIÆ#ú”}�ŠžT¿ÓÈFà = PÎ"+Ù×0¸2C»:F¶Ëmf¡ß–H8¾ñg—þCßy–+ýàwžlâP?®ð¢±%Ö�c»ˆ÷–÷¢*dÿ¿)í0³¤±ƒ 93µ »£ñ€Î!þöM%‹°�–J"é…TJì�½ŸJùÕ^:žµ�Þï–λZg Òñ„Nµ%è4…ýØðµ÷éQÌûzKH‡¯c”lWÞåÂÑÅ ßɼ¾¦8¶>z^IQ¦’A¨¦„*êë ™¨ûÐÄÝe¨R’1Š»3ÂZ*yâØL%BZ2“¾“S ņ�F4¥¨ƒç¹V¥Xü}o`ï ì½�…70塸þæå_�Ù¸ŸJýŸm\ašÊJ…ªqÅ¢ùÓ4®6S6®´ªÆ»ØÒ8�‹›% »ÈßÔ‚d|ÖÎÉŠ¦Ÿ9ìà¬Lhñ“ƒ¡�¾Ë�qJewèµT2UcÇOÍþj†9ï[¨ÉÏqâPïè ºöáŠ1PÈ∠Q•ky±¹‹âV<à'5ÞWžJdé÷‚rÔ�A£œ@y矒b§/Nûÿuû‹Þ÷(þŸÝ_ô¾Gñ{í/òV·5Åm€ï1ä=†¼Ç�÷3†¼or~ßäü3€¼orþÞä�9¸[_Ò8³çE8¡c²O 7Ñû)¡ï§„þ§„rÇ3/¦¨ ŸØ#fG6±š 9ê(üÜüÆ ¡gž¿ëÀ:F8ãˆù^LøO�þí=©Ê9X(üä¤pAw9&y1Õé…ž20L“aqÓ}Ô:âýp"öŽž%JâdQ2’øï VÐ?©ü®%S [y[™¢Z…XšúøÞðk'\vm]¶ÚE†Ã§­NtÜٖ‹ó¹˜m3@°cíÅ’4ÍRÚÁÛ lœ?†\þæCª@ }S©¢h °}Û¨šÑ®Í4Úf;Jò†èô&ÞO uÐÍœô6ÎÜ>ÛOªX¬R”aÄ_äŽÞ$+Fb”‘¿É 6óïSŽ¿ÙÆ(%"iôqˆj†Ñ†»¬Ÿ~ïÆ·—ƒFJq€›cVÒåwU;(S3Ýv ~8~� G¾W)%ì'4}ãäÓ§®Wïã(·+O߇½äÜÊБS¯?†¡ŒIÉy”ü— {éÀ1ë›®¥Ùý7âìoÄo/»¬„ý•T‡ìLOщð&¥7ö¢]™î.7ßAÄ2¬¬C‰Û‚¥'û«±ÿDþÈ–µ?9FŸõC©¢ÜÉÙ)ÆUCzl¾Z�Ài÷!zy­T‹Àðôè©ß¤ghù=ûqˆóöa6Èÿ�{Šà4ÊÛ+!/ã÷é-Dÿz“N#è`ß³ÛPÎ:Ä4õ!ýÇwnîQÝG¬‰ÇIeÿc²ò�ÎÊýÎ Oæ�¥Ô;™Ü±Heݯ�PbF�ÕGºjwé‘c{ímíø2,:ÏÀ•/l3áo=ÿC#'à÷Lθb¾CVãçþûä3¼é¾gÚÁkwH QÊe2ºÛªä=¹|%¾ ”d+åJ)þ°ÆÓ"ü«°£|{õõ]Ðôrñ_¶\BÖ‹òFUnH ˆÿÃ÷Gø3«âŸvW*6«ð‡ÌEp’FMí«” Ÿ‡ç©ÔG#Å\oöÛ]šZ˕싣‡|¬Œ¾;âSŠ0:¬W01‹¦!§¯DœÌ1кò´zbL ýÆ @Š�'Buúžy`ÿò Êõ€ žP‹(r4ïß'‚u»ó4N¸«|Ï< ‡Ÿ´ 7ã�5YC%"S4Ñ¢ÿ0S3T 4!-÷2Ä‘õ–á Dn1>RŽ·— žk¯+ö$ß§ã¥ö§û2bT•t‹¦LEá0F‰R]Së�Õj„nú8¼Q«¤–l’ürïÛ ÿX©÷iÌJ‰ƒ?ßBb‚“Ò× bôõ?웇÷‰ÆÿЉFêfBï{u¢DºôlgrÈIÄ*’°S"¨ŠÎ°…'ˆxmX8—‚(k yôç³7ìÖæ\±Æëì/ÿAÀž8¤Âb«ÆþGV+Y„�Q­$’V½;Î áhä¡;@ð™1õ©ß3ìÞÂŒRôIuñJQôbß¹ÀÀ—Åñ‹ Ù7ÙÕúC2ö˜YŽ�c’­›d¥¦ðÓÂqñÀ´V ŽÑ5CHSäJ ¡Z×±ÌI¯�€þiÐκ�^³³X�)òÀ®i‘þ´kÙð¸xoæÂ�­ÿ/˜Œz¤¹Lfâ$tÐùcÁ…@GS|Ð1;ËÓndôûúOÇÀ\y†'xÔ¬'ºG¡›¦1Ù>ž[± ¨KJ_�v¤,?p‘w@2¶šK¦@ö"×ùÑÞýÎêZ®hñé¿%þ¡™@º©æê‰¿¥UY�XÄ8’° tøìôYe9Bb –B’yg^"c&%c_¯/²¦=} ÷ôÐiá¼Ã¼EžjkŽ›¢ƒùHw&‹ÊÀƒ,Óè'²DgŸw’€¦hÜÝ1òB¢�Å;lMñíä;>ZÑ•Tm· ¥Äág(ÃKL¦`(ã†êÌÒðñ7•xŽÖÔ²f�9±�‹R‚ü¼7¤öÿã |�¯˜J‹�ÉÜl‰xëKé ±‡-ñ·à†Rݯ=!±ŒoZUܲBuá-‚N™Wé†óN©N,“sù›µR{<9 |g¦hfMÅÕÔÀ¶©,Û×ñϾaÿÝvÍË[ú^ìµ…k¡z²qUrÅÅ3õÀ¥SÎ’2‚LwÔ!{¦CÀb±Ê€�¡©Ív®˜Êž:íY^ ¦vs¶`©ñªîí´Ü«.Õœè ÇšDE±\ÎÅØ !ŠåT J|Y;F™lv7ž1ãÌîlã8´g€ˆºÞ�À�w6x,‡Ý_‹½tW%ö�6^•ïªÖ[Å›]�n߈ó–šîׄ+ µCµñhÌ©øcNEs*ÁÌ)WØ/uBrR'È-,wBT»FµB´�öj»r�Óâö_{±†´ðþ*`ìxm_ö h»©°w<+ì©Ô›…³ÝÜmïhövzîÌdj²':a§œÇ‘mþòOâo�‹5̇›ýªð'ŠpŸ35èÐØ¿8ÿZªJó/©+Ë ìB‹[–ºÞv¼À‰#’Þ¾ÄÁýóXQ£uoèÕ9±®.†’¨“H9#]w¹u�0Ï1 Ô&Ó5Â%ì6­0:éÁèa!Ç£‡‘…­�È,fêC­ç­ûYá§u‡’K4 Ùé¡äBÏIŒŽ8âm•q¸É"@þDñÙ!æJ‘RE‡cý‰Ï'RÍnþp &¼R ¿ƒø#å ¢/&UJÜÇ¿ BE¹{%Çãt°1öv›xüö¶µÊqÞPá7óȾ±4úüÞZ—ÑQNÁ1ô®ŒÝ¢eüÞ%¬½Es‰–±Ì<3zch)ÍÔaYè]Xû½%.�8I[4¯Hg–~Á Ä|e!®Õ×6~±}ÝÄÖž?/8¦”ùXRò' Ș¸YÙÇ,Ã?7QJeLS¶6ê» –‹¥±šÌ4Ûp¬XÅä UPD9K£dÜRȘ-¢ˆŸµJ_ë÷ãÙ& %-_Tx©¯°�®ÅHW‡GÓÆ8D*šÑ „‹…¦Ã„â®(z~ì®:¡Ï,Cøf(.¸D›%&̼|¡0êD®˜¬cwæJ>AК6h¼`$‡zçɃHŽ3[_ú*ž™rªÚÄíטΠ[Ö�>ü¨Ø–â¹ø4�dªT7„éaæ‹3ÐŽGíVÁYž#·k"8)ôžÅüWg1ï‰È÷MDb·LÿêÜ.Ó´oÕ.Ÿÿ˜ 3 曵Ì=9Çkšæïms϶) ï¢ûÎø£ÁK ‰ ‘e†l.Ò Û2�ïñy|æú<^µŠ{€Òþ—®µè�R.\Ù‰µ‘6îÒŽs\JÒe�8#Ú½ ů{â�}w+UB¿`~@JJÌF–ÈíºèkÍF_Ïài‹?z=zP!£Š?Bõ¨a|±€ïí4à‘û)ïðòóÉBù(¯Û‘ÏÞ NûØ” ¡;=Û˜¹FÜ隇ÀErú]|Œpü@¯êÝ›æ›ÃWÒ¡ýY)îr·Ü¾ñC¢œž4÷B¸ì!ñDŽ+¬RÏ[“y+Îa{¯ª+Y„-©+‰¤‘Y‰²˜®¤Ù5¨m£tq@iZ[B–¥÷í©…–Óy7½«w„ø(–åîS"¡ +1Z{ùÁ\â¡Éù"qSÆ#˜úîÌÂŸÇÆIT¥+Œ šjKΉvê—‚ä1–t4;¬Úr´ðPÉxd ÁŸšÝKƒ½ÊDERŠ×!8 šé,ÿAõ÷F- T¾ÑβcÌÆ`³³,}�—(‡ŸÅÎ2è}Ã=P?‹ø2„Ÿ™Â!Ƽâ$(ÛžIž�Ëž)ž�Ë®«t>r eešy(ŸëFsóïú+ß¶-[É*8k'kÄŠ)�¸ ñ"(0RŽ� LâÊ—"\SÞ„±¢³zeöP¶Kýû3�ß³ö£ÿ÷ªý(9~�Ú� ‡Ö¾ºŽé §7«v‘;o6Su>oÁC:ºP£‹#ªÝº’8E©û´Ã¨£Î•q,Û¥\4 þ W!u¸rþĪoײÌnœEzgb�ùf$ÜgužpQ�ÏâH ®á¢©?àà… ö�œ,þ8K’@ÐÙG’0�a»J}[~¼‰Õ5¸�¯EÙwùa帆»û–W ±0é“ÏIeåÐÉ·)™(€xƒ/0ÞrÏú÷tÓ�}ÀÄÖ±ªTÜ'Dl²°g{›�9Þ™¾mq¯o”ÙféíèB'bâÀ/Q.ñ?ÆvqšdåAàãí€ãFb^8ùø��¬ÈþÅ:h¨¤†ÓSƒ$(;l ªÒÓM‰&…MpÛhÂ>ß®JñROï4—`qè=Mh#Oý”ºw•¥Û%ƒjÅAß&h"Ä-ùé¼OSËý ÅJõF:ðåþGá@ð•áöF©Å”µj”¨{ÓZyøó9Œ¯½îL†[w&›Ác­÷S›ö¹[U¸^!D«‰°N;Q�¤do_ù´0Y>}Âg SÚ­š«Vv ´ìéè¦H™o*<³WõBв¡~I$óÊH"¹OF (Vxàn¹B»RI}2’Já”Q·|7·�x-GÖ.òÙøþüüí›;ZLº©ñÔn¶ÀPª~àÌe’x|sðÂxÒ·Å—�^ð‘ ä+~:ö‡‰hÅîH†½HEqrµ¼2p¤ö,ôí›—­Jï¯óÑ oƒ_G¼¥hÁÊ ~{ù&BêŸW]ä€.m0÷-ˆW  ÙºäÌÀP?“Tl5˜­,ÏÂ%H ô¤MIšÉfÆ0AF”Á–ßµÖÌàô…üÚ%•¹ƒÀKrý…+Z_׳zïs8…¤­Å¢“´›XtÒfª¦dtè 0ÁX‘~xRÏåçá9–žmõ�‹ eÚ•UÏxï>° ?ã)ºð$E¾Ùú„Œ‘øÿüXø>þÔK�õ÷>3I¤Ð,ñG¯ K!l�” L`¿oa èk �É/ QíT‚7WàÉ™Mj¦Mu šX}ͤS«ðµ‰&yÁæSX�úG;•6³-:tîë€�éìS¦t”v°ÚÇ^Q € ÇòÛ<÷ÖQ]ÀNßïÅ×蟜UÉ7Tÿ~#]d¬±¯ Ç5:½ó)10õu Œ~eñŸï_¥�.ßÜC; o$Mæ>bM,c·úF–…«ý …�-Í’ùB)!îHT×2 m]%¤¸ �­—û–Oš® z:*_Jì%Öä¢Ü�2V$È' WÖ°+g—EV¤»™éÜÒ߈% ¨–FZ”1ëà~‹ ÀìûÞ ø)†f7>g"Y£W�Lð(neXm͆ru•l‹ wÿLʲ�¡1EW]‘#¾ªmœ5³ŸBbC�âQ¯eH$¹ËýWc=Èòs§dù4°çŽÛUÿ³VЊU-H¤ÜÍÿs/âY‘½Å\Åa&)i²0]tߤeÌ}Ñ·¼Þ÷ ç£ã´?ªaGð|,ñ¿ nÂ4Fº‘›nTßd†®Š¢5£üô�NÓâ,¤":oŠUpAÏî>ã¨wE‰Í$_•;Tl?ÿÒ#Ò'%ø_­k:¬±û{OÏçÐê<ך£?öòÖó÷ü˜Åc°ãw,¡m‰ìÊH€¾Mq).A\j毅¢Ãöô‘eöý9d –À3ú„ªôíÿÑ£t­àsÈ2„j³,6?¸ìjêðÔ1¯Æ|ñÛX@Žy޵Ø!á÷Ø’¾HÂà¸7öŽË@à­„3šMû—vøíV²­IØ7}k¥?÷+ðç�D%Ž‚öY‹Âr]z4�ƒƒnGrׯ®EƒßA÷¢AŸêö훩kÐ4ô t[Å¡ðÊ®í£s2Nî– ¼¹xÀ†)“úe8ßË€Goͽxs®R{~—gžbï]ôõÞhú€­ ÝoQ¨auzò’ªz‡˜�Áï-†ª³ù^rÀz�Þ$]–ç;¨Ÿ³}øó¶“ÓÖ?^:.TN¥ðå»zl�&™§?!E.�ù¬î…X§Ðtû/Jî`I¿S¡žêŽP–Ÿ‰7Öðiµr«½@ç½�"%4IQAtZ¸’Ä/]ŒRä$bItTi£b†ÝØ( oÕ«"<{-8/€ñôCÊRc(GaZdL<�‹½š—]ºLÛg1>³Ý}½gÙšpY¬¼�ï³Ë1®£'ð¤̉¸ë¥£*ëO6Ū³˜¸È„7†Íw@åˆ]ŸÇü…¼ŠínÅ"Ù-Y­¢afV>(à'ô¥ëq’™'< ë¤0Ê;Ô¥<ÀÞä%™»paz¯u½T_ë²— ­A{¥}{Ř^Y®EýÓç”Ø¹Ý�© {Ÿ|ƒ|a¿‡Æ7 éõÅ9îîoxxlfH'u1¹}Ï¿Ûj=Ílýñ ¨ÿ•d.«’‘½Œ$­ÊU[…•õ$þ–’¹°ªòRì:ñðŠ£–î‚^>¾tx“�¬;”’P™x2±GÇÙ¨ÌB{NörYZœ4¶¨nØá5Vȶí�1n`jŸic¦.(‡ÙSô Þãg¯'%YÌq†¾–¶vѵÂNOâÄQm�¢Ó'3w‡�_”„@Í€‹Ïd-&V½‡ö ƒE°…(‹)p’¥æF ±© ~ÿfð î°Fe!#=:.È‚UÞ™1{¡îî#>·l|ƒf«?á ð1Љæ(ª0ªÜ0²]KôœcçR}¤û”¼“¹crØGŽ€ï%‹œË>òøÒ^ÒÈx„ËÂEú‘ÖG5ÚTÿÏ×ò dŠœûµ |—ÚW ^v­~Õ€döo~aáƒ$Ø©)†1Ù£JÞ¤Y†ñÚµqîÎkÙvk¨»rŠ#—¬Ñ–¯F‹^�Î$ªpKœÞ>Ç}ÛšÁ]yd»zxJMÂ#”2¤ÌopÙ*±0A¯tF áÅ#¦¸&‘ÂÇA›õ¤Ä ©!�F¬"eÝD–Z+ÒEƒ„ÔÇNe‡Ù1ªä¨:ð¢st=ð¸ûÕÏ!Ú&²ò­Žg¬z‰’a÷º%ˆS?áa-Éþµàv)ý-ê.:Ôí+Ñ~5¹sГöôñ*UB¶ÅJ˜Å3eˆoQÁAö±+9¦dûU´T®8•íŸxˆUÕ¢ý+:À*ž1•¼E%û™Ç®âXRíWÁ™DFürXŠÿ¾&¢¦kGäX�l4š$4%õ‘ïš—Æ/="9Uȱ{†ºŸD�4u?y‚>#GÝ‚C�Ã[nh-†µØ%FµÔX– o¡;JiåÝÓY‰á9mÁÕ•ÝÆ,ùMª-:ÏÝCš=«/*ãUH™öÆ£;°Bc$À»ÉñfÕ+Þ_¶*{¿è;3ŽO{`ÝÇÌ‘w—çÍ| v¶|˜ŒøB̼Y!_Œä9.å�¾+�ÞU–7óƒ˜ õ!ò໥ÖdóÙc“kÛ5wM®£IB“kù®ÉuüÒ#’k…»'×ûIH®÷“'è:qÔ-<9¼Q‡ÖbX;ŽQbTÓ�e©ðÖº£‘VÞ=¹–Hž\GP]QÉu̒ߤڢ“ë=¤Ù³ú¢’k…$‘Éu<º+4Fr½›oV½±’ëýe; ²÷‹®±“ëø´Ö}ÌäzwyÞÌb'ׇÉx€/ÄL®òÅH®ãRè ±’ë]ey3?ˆ™\"ß>°[r�¿ãrë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ë÷‰ërë÷•ÛûÄõûÄõûÄõûÄõûÄõûÄõûÄõûÄõûÄõûÄõûÄõ!»BRÊ3$ÄÏ:{ÚÌp5ÓØJ6’Ç@ñ:§H´øåJ?’Âÿñ¥‡OŽ8ô�UàÁc€!ÿÿšêjŽ.œm·×‰ªû2üK.b˜Ù–‹¼•JÄ]€)¿¬ @±2ܾA¸A¼á�Óy¦ÛpTx„>‘'šDÄÃ×,ƒƒ¼¿2ÇŠƒƒä¡°9<®)DôßA�Ðz=þ&GYõUÿyP.÷„+ ¿·I®*1f)Gwñ[ø›ÃÞÿ“½û·xã ñta'•…˃|XÎH›é�S;9TæWA+é¹AY¯* è-J±)‘…èy˜ØJâo¾ƒ�èÉ“ŽeýDv¶NüÜÓá�쀪Zoa;Pr�ŶT=äÞ�;–t1»T,zÔMÀ 'p4{®,91oö¬Å [ŸXô3ßI[þÓÁ#ÏŠ ÜÈÀÁèÃ_”ÏVÇcñ‡‘¢W³]¯ãàÏúªÈ:îÚ]ÉÔß@rT”1�-Üxfëð„¦d€OnÂ5eÛ–Í߯’âÎr”äFß­tšâ(�’Œ_²p2;Áq7¦~¨3²ð–ÓÒ‚â * O€È«O‰¥á œÁʬ'>í.v ù ÁjY‚¦Ñ?A ô¿ -ÐóÙý%J>”¹6 \ìzd­«EžÆ¡2lÅâ½6vÀØ�Åð7\ðz¾Qà ²ìL9¨éù·•جÿã¯îқƬ mÊo•$¶)7¼µ~ È!€n0PÉyÚÖ¸HAÖô¡šéëCy~«.ÿp¥œ¤E§ŠâKzô1½L£§Ùº—ÒrÇÑòÇ|û¯àãç‘Á}½:·‡ÿþ¢Ðk¶â„etãP•Œç´‚ñј Â4;5„É"�ä:æ%èà|èzƒÁŽuKªÿMüMzü{ȵ¢ûÈõ;oP†¬Ëë¶»‰0¿p”L۳謦Ÿð“?’½üüÕÛî*ªêrÐ+€Ÿï,„¤~ߢÜФ�^Ê1Ôf�;!‚—”E�¾?È >Åêá^oTªWÍ�CŸ‰ç}–8»Ió�DPÕ) µ�®¡Ã/ñnXQr¹µC~gÉuz�&¾£Cþ‚ûÝ_&‚Zòø§s"Ø&ÑýÁ#»ã° °P¥»J與~ƒSCåÕjVp– MÎí­–¡ Y§˜Ù\`*!;Ë¡8ÎRœÂü7®o$§P3G p×ÄŸÏ—µnù3›Ç—\ �#}?¥Vzwl໥Ð…x*‘¼£hWžŠâ»¦ Gè€øòãh<óÉ¿Á+GüZ¹²câåçû³K®*øké÷Õ «Î9çN”§óÊëòÈ„X�/r(xEá´¯ÙøTó‘ÑïëSåÛ~Í”s.ðV´ˆ«@N´ñ“�²ÂpG¼ö$p±ïâÂ5+6e�f& øhzÝo]7ØjØÝiþË0$ÄŸèTr0�”ŸLîí ùOØ Ý*oû,%±=T óe*+ºJˆ=£»¡zc^ ‹\䊼™~aöžàÆÇôq¥µÚÕá�,Ày�ÒSCuá›Ï»bñâ3ÐE×éÙÆÌ¹J¨¹Ó71€•uGá딾îé3—’ÛzÇIÓµ½Š¦¶?á©Ô@…õ4�…Óyîxý"ÔGe„|`ÍÁ¥éIµ¹9ÈV¦—U’N‚\˜�VBø÷$ÉÈðïÐØ)åX »'BÁù‡#ÅÂ[î£ ’ý˜(þEü˜Èe”°�ÉL –UXþxj¥0>Ÿoq×ãD…Ú{†/÷¬ LŠËš~£©†¯ã­¶àOØ�t¬€·C/­½WXAáî­–¬¡€€ßÓS]Ý]©.jv- Þ)Þ�úã:»Ù-ü>•Àm,äµ­»½PJuŒ²†Ò‚\5é½U`ë)å­BŒR¢–ÜzX å&cKÊi —¥áâ¢ÀÌ»¬%—¡M9 %l-�9,äÙùÂQ"ŸÃÿgŽ«ê%jZê1÷Ë·oÎÂ0ãü0Õlj(Taˆìñ+V`ÎWn÷]«œ/Ã_íaÅ|og€¤u�õŽaZ£0a/Ù}3Òµ~  ”/ÌÂí7LÎȰ’H#¡+‘h8+Yt×VC%£‰¦—~®!$Ôü5|¾tTzÇd]=ï¢è þþÛËãÜÞ'c05wÁSP}v»‹|Cù‹Hè�e»>mwqSw¤Ù9KådI¥£/ápgà X#9û×ä+â”ÝG¡\º“”)®Û(×ÃÕ”ü•â!�@ êé8ù ¨ÈÁ´VJùR7S Ö¸È`¢ûLBæµJ>xw–_ˆ¡’AUƒ? P¥&ØMÄ6%›ãð.øˆE¢Ö±[‹ôðÚó¥á,4Ó¤Ciå0€ Ó[ÒÙ$|yúдº@L ²2ìsKÍþ�JQ‰‘#‚Pޝ|fMƇ„Þ¡ÀƒÑlÿZV¸Tü•î¨÷êk®>3zcÐüfÖl1;ÚŸ¾Â/õ®ÀM\B¿*ØÐWeøòÇ18,I¯æÝùëÑO?ý‡ôÈŸòGx4â|úçO+½ �ÇŸÒéã´c÷Ò ð4Ê`œ4®µtÝ–~ìôç§£øàÍ1zƒ$ýkškÀžÙ‰_Ê <�ã£ã¡§Ö™F|±@ÜŒ_ª:´•Ý{D³Çq9L´]„ÃÿÄLJS C_¸†é!ð®ü4š¥iÃpjð˜?ÊÄgÐé½1îE »?‹ížc0µúú·‰Õ_@]ÿ¡M‡ S³9),[Oã]®éoøßø\@«KkÙì&ý͘öõõn„¤¹îEëMëìL.jŽV¦S€è'\ËvÒßf¶÷‹îË9UúPÌZÀ� *'ܽZRîŒú”ËÑ'…|)šc€ Nøû–nÍ` ›þ†ÿ=P4gÙÍ}Ñ·R´!�º_VÎ7ø÷þ,4ø&ü{o3ÛÚ:¨¯.xû�ÿ-.KƊ̪QÀ?Å;3$.1ŒãŒ¨oMÒßÀ_{Ø‚Œ‹ÓßÈÃÞFõ&qÓßdº»Ø€M®±ØóÛÉ„c “²õÍ…#ë¥hZ‘²õð‚ÑÛ‰>EW¾’«nߎíW:HØ0ÐØƒ!V „SôïÞrá,´ ôïþ±n«Áþ³7>ŸŠq¿íäæÞC&”å€þ%;)f•b‡Îø©_}ð·Gô¥¤ûöEòP·#FS­ üþ}€ÏÑN÷àÞg±éod…ò-Ù¤bgs*6pÎàaÐ(ç�hÝÝ›¢ÖE„û´›)\vE¹{<<—qfÆtªóù y³¿y´þD,ôÏþ‘˜MM€hìMSìËV;©ü½Ãb†â~ØŸ‘eÞ ü½7 ˜t!G û3²uPUðo5 ÕàŸ| ÏÑýûhªMà,Í¿�&€Â˜�O?Õj�ÎçV­Ñ9š×kµÚçZãôîs­yN^ÞKðö–¼íµº×ð×øëò–¾´?·N†õSÆé쵞jGü¢Ö¨aÜgø+xªMêìQgO—ìéš=ݲ§{ö¤!®'½3PÊ mÕ`àaƒÀ¡ì­¯5A£í ¿=*áZ„Ã#†?3´îˆrBôð^^‰ˆ·è�_ffgV¯[ôõÐÓsC0j£-Åh¦7À¶•F \“òˆº°¾ôÖ¥o‡Ô”èµíC^ ·Óf'à2cj…&¬“bôNŠ­ëÏ­V©uõ¯1n§A¦nsòzšpk|š0@�%æ÷e}òås§¶9y&NÞ:­4¾Bÿ9�Õ”£Lš ÅV ¬<”¬¥ä¡¤}(9‚2n1”YK޲ðP¶ ”‚‡RU ' ez"Gq<”µ%ç¡”(Ã6C1Ûr”¹‡²T d<”¢%é¡dÛÐsÒ'geؾž ìß¾ÂÐtí@7‚± Ð†ñõ|yE�KÊ|s…p.2Wg<ŠÑ”ô=Ÿ‹û{ .„¬ê>÷#po'¸ \l®�˜.•�´¿÷÷ïïßß÷÷µíx¹h׎*¤™:_jŸÑŸ6úýªüÔá[>ßåy­™d.µù#(—Ûg1¡¹Ê= ¯ø·kúgWWôvIßnüy›?iìéѽZ|VãÅ1>qÂQèj ídQ«?¹[Íx�|®Â”¦ŒÞëÏ@ûÖ Œ_ à²LS;/\’~�‚®ý2/ªQ»*!í²ôõÐ3!ɺ® ¢­8¥s-Y¼ç*DnWb‚¶<¨~cøã;ÇáK WîB;TšÏôýÙø%ƒ£$›ÏÔÎ, ˜öˆ©ÇõV¥MºA&í¸=jëI½UB�6öë pLP©Nú ©¿É TyôBT^H=EîJŽlèOý¦ð§Ÿ|¼¥Ø÷¼©€ÜÉÂ*¦ûœ;åd�U´_بâ¢Ü:ÿÜ:¯´.‚ÂB|è]Sª/5ÙaF¹�¤ÿÊAØøu«ðE7ßòjÙ‚ :³Qè¾5¥%Nuxo¹ÒˆwÜ”ru`¨ë,S®w5¸üܺÖ¯¤NGf‡o ˜.Ÿ«‹‹��!´Ö–1ôq©Ýä0éšap~u/3gïêµù d7_¤2i‚áýï°CÜdX©d›i\m›ç°)Á8~í2U¤ˆ †Ø¤~•n^ˆSª÷Äd:�qcáb^€¤�7 Hg)àÙ/¡�1ª ƒ„±›!”€dŠ @8Uðû<{ïï@5a”¬eB«£lÊ©?ü~ÍÞS‚ ,rn0ÀÍŠ-¨v³Â;+8Kíf�ßÏœè𤒯4p�bÒ”½õf3îY›ÁÅÍ< ݺ“¯Ò|ç¶íœ>bÝò(›¬²|çº=G A *yGn í¾'AÔ™™_àdc20:L–pVVNF‡F� w=ÓX}5=ƒ‹Ì“t}ZÇþEA æ_#A‹ÜûÌý@O›!¡ÒÔt÷íá8C�G£êѰÁf€ÚÉ‚YÆ9·®pî±èÒyæp'8÷ðö'h’'¯Ûà§î¤.çyŒÜͤ9èkiÐ¹Š£±Ðu»pþ€�€fÈÒ#f Ûv�t=ÊQç"�œƒîÁU´Î¢ˆÏ<‘=Œ˜âudw²VòOû©cÕéú0P <�à9r(�A¼Ã‡TÅ ÞáÇ>Ý <>{ÕIîªÁu Ð;¯g,Æ“ïà~l†ÍÛ†cúê6—1\3ïäÇAiFDšqPz5i�ëíÅòô i3“Uò¤Þv0ÐÈcà¹a¦AÌ’Ån˜9Á�ëQ¾nÕÅ62Î××”Îù@þÚõ{6’d�vÏKhÆÍ$_G;4¶ÎM s0ìv4…°æø.L·n©SÝ óušiß¾bœÊ Ä9¿¥B@©މq2çÖãcy8Pq:ÏÆÔ¾Ãïù¶Â97ByÁ†¹eÞ2»ƒ›¤æVÅG�Ò�†C;ÑiR[ÏÇ&ˆúß{Ò|æË3`¼˜ázò|ÏË‹A4±"ùÊ�ŸYbq'$‘+�B¾1b 5@î„<„ê4d) !¨Ô§;!Ayòï}pÞ7ˆ£dZ`ªÌnù£Ì«e {�lõûgÐëäuÖ#ôºgÏ3A>¼N&ÇñA&šºÄ4)ñ –xUâF ¾ßÎ,š0�|Y¸ 8§x¿æ@£¦ÝÖhºu`�Qs�[Öƒ“ùµ/™9Üv¿dôd¦øË\Žq³JBVϵ4ü H°h¤¡6CÄ÷eA8ÏÐû—Ž4¡çªN^ËÞþœÌè´×¾¦»¿ Q±sIãÙãy¥¹�’®æ�-ŒgöÒËKÎK–ðûW¬Å¬þ}ÅÕéð€Ø¿3[Qq¨¸‹»\1q©¸% ƒñ,´f¨ˆ>T €’ô�]Òª"^ðµ´„RÕ5ÕbÞ”Ù“”�\c�×Aç í½�SÏkLÔ^¸1õf²Æ¤ÕìShóÌ)³yÇ«”v` *v…%Yù|蜵˜sÖòû„¬ÏŠfàÑû~¿iH纀¼üøƒ4ëÁÓf ˆ¶T—Òë´uÔ¥"˜¼öwÔ©‘©=´í�”…—­®“dƒ”‰YŒ ´²J` À°>*‰Æ­�êã�:k Nbo¨'õÓÔ:|óà·x®²:Ã�ϵ£B“”œ+BOÖ§Eê-�2G­Z€€öu‹®šŒê™¦±ËEe¬½µ"œÏ[çL‘a‹”<,c¡Ö%¿"™RdZ¢Š¬¨"I¤â¸^® E:p&�Ìz¡A“ú¨ÚxŠLZ7LPõcïq#}$ö�Õ-ä�sÈö,à=á` «VlÁÃ26©—½ò- +!˜SŸU¨ýÁÈùIÿ\sëF ]œº]¡fèÕ®4*U(Ÿ ×/!°Pm¼@X–ÀÎ[0VÜ#Ø0‰aå$Y”N¿FÅ%Z¦9–“ú9„-’�'sÓ<ËËØ6`Y",§Ãf€å$�ÉLãY.Ì6ý,7iÌ2ͳ´êm«¤_ ¬*°|D°ñ°‰`¯£Ëù°‰YV9ÅÓudhcØÄ†æ€€ç´¡J]Ôg£&rº“ÈȲ>5Ï ÖÊÕ:ÍÀæ{Jêœl Xуm(lN`i lE`æ(˘íÁ2V!°µf¤1,ïÁrfXU[Ø«„el&�•léÁ 6b›e%° �•%0‡ÀF¯A؆À¦X�À\ ,I`[VbõGê¶(�Í ,-�­Ìa9³=X…Õ�­%0ÃÀ°¼fXU[Ø«„e¬9ÄgåmñlÞlñhΙŒ¸à4÷&48OƘåv‚X:°ñ{ �ÏPª¢Áß”?áp=‹j”DÅoꦋ¿BðÎ1)Mˆ–©ÛIÒM|î4ÌΠʹðB&ª²V¾ž™4OÈôC¦¾E1ë*ߢ=eëúå„du7+øµÙ m§¤€,Œ�­Úšà»¤{ƳõÒ¨Ig5 õ² Ùž€$N}\’Õ¢ÎÕºuvd}EÀãxA¦X�×v´ l�ò :ãŰY“ĘbyQ·j�•Åɱ|�k�)`ý*7pEÏ ùi ƒÌyA^_ã$gaƒ,md�BC0K\’–è0ƒ8sNÛdÉIå˜P963\€kÊ ²19ƒlgjƒÌ©A&¼ é13H” s(H©^^@Š/HÙ ^#KÒ–U"h.FÛ€–E÷º´ŠŸ7KÖÞl°Ü% X\%Ïþ+�å$$³Ä¢%ãÀ½]IÒÓ)(‹ÙX¸ð#Òqà ‚,J;D>Ú6åü}**®ÚØ ârËæ´š@#»� r�“è&æRÐd+ÔªyÌÒR²ÜD±d�$,Í Õ�l›6¬ ü¤uÒ¨®©æü¶Š5DŸ[\M ëµrŒf�ܶùaKÃKm³Æf ‹µS i£®ÜöÂHÃ"h³,eüŽsÖp²k�“`M(V&‡±–9R¤”×*‡×kž®!¸¼¤)31×¹°Èõ7Ci£à2.õáp¹osš3$4˜†òlOBçÒ€’á bÃvTм‘-Àõµø}§’Y\R™”ä¼II9YÚDÜcV:,§n–/ù*&,æ4^ËÐQͺ\u"ín*Ö0�IÊ%Lþáû:‡£®{Îá½åÒtξ)—¼—¨ÈTþ¢±FåOëp:‘k+iSÈIMdIK2¤žÎuÆjŠM‹Lq E�A2·Ÿ(ܠ̑ڟ{äR#ÖÃ9E,Š]Æ¢$ë˜(“¥HDÙüq¢ ËX³Œ}b›¬L`1“œŒOñY5Ì4  ¹5Å–-íWRãÝMƹG®ÉñÍåsÒþÑ–ÆUgƉ7çÌ‘óÞ:Ò"VR!åÝ™w%u.Zpjh=TªhìÕp‡ ‡oÙõ\¶h ‘Ä•4µ¼l ‚Ö gÔºCõ‡@€hÄDý¡ ?,嚈²øãD©PQ�5g¨u01‡-[Ž0Ì©·øŒ«=ùÈmÃz&ÄhÓ½BF_'÷Ò¬}KSdÿ03‡¿Š¯½´è:¯�ºÌ [£õ!”<„¡aã!TäE´ÂJŠ0÷R„ sR›c;–x°…€™FÖ„'¹(ïàÌ+¯YÎM¸bEZA+)³Š×‡oü­N·¾b©^'XªdãG�j8ÆR­‰T«Bª ‘*mÂêuëF� €@Ý›¤î§aM€‡§2‘¹àÈ%íÜ�½©OP¡¹F~í´¬'›‚ä©ÂrC’ö¿¨§Y:VË7¬Yë `Î`@[ÖK  É§Ÿå�œ›@õ,@à9a}PÃkÌ 6Õ–olÌÖ ” K$ØüîÌ'XsŽ%˜W *MŸ0@cŠ%˜Îq5gê5E¼äûb¼ÎZh$1u[’%ŽX>)ÄR¦á“õøp½ØÜã#OÙ´Qñ)4€< Ñ¬ëh��HÚøY@ï‘›—[H›Çw(eÆÍƒpœ}¸¤%ðF+c.à ÐÆÚ|ߨΤÔõ¢ÕA¥æ¾{¬„'—Z¦¥Z¿G©s—¸Ë»K`ÅŒnÔh�sL.½’?rn¸àJ“fp™¨G¶†°ZeVX™ÜŸY™Ü’(³ÆÊ¬þÌÊTVP™RcöŠ&³· ÌÕ[dã)ȘÖº-Ô;º-ÐmÓp¿Æ†mZøÓ6ÝÜVlŒ7°3M•é´Å‡îÑ›ªÙ`n¯k:êy&¼&k8è)4¶+?$·Â�5i$UØŸK-9{È]®éFÎUæ<²¤´*¸Æ¿¡ª.¶|sheëŠýÃ’ïž[ìC¾j#¹†]å¤þZ`=SRª|É/LÑ3¸[[zÄlíx�`V£œi¦® ¹šº^3�ºÎª†¨¦®çÍ.pÌ©šlRzQÀXÛbV®ˆ±ÖER¤kC°Ì =U#`„;h»ÄŒP�V3—hr.‘ñGs8Ã’ƒ…%Û)ÒTaª†Ke¸$¡"¯6i¡VKöÈå ãÛÙ&�´ËÐù:܉öC ¸*`G,àêGpQÄ所VSˆ­lB/çÃ*ð’>¼BCŽ7)a¼%q­N˯9¶.cظÞâÓ nò‹_óÔK%FiÖ$þ´�Û°u6³ihØb=ÓT®ŠÿøÊLªX™õð)3ÿ3+ã$ñ Buxœ=Ú$±¦³:÷¹Åæ?GÍùèíK'lPG=7Ix.G'¿ß¬D& 5š£Ñ ÈMÊh„»bm‰ÓC ³Å´Iñ«Øã`+ØslÜL#5«õ héÜnAMœ!?á�iĪf6�ÙÉ ,¤j�ð_ Èp†‹Ï['R²``&Ðä,LãbL¶¹O!ZèdŽ %hUÚBD3Å+-‡Ð@X@ÁºQThš$Ü–s¿Ô›9–z6÷kê̱¦f€Æ"4éÓTVhÁÆ…´ªmèhfCŽf9XÓÔŽAó9¥'¾€&ˆ¬?i®QCAú\•Û¾ æo!\€–oodÜŒ%D³šS$託½ƒž>k ‘IˆÆqˆæ„è•Á‹'TD´§jf–X‹©Ëuþj‡]•�kÕEµ:jܱwذÄ*Nz�)¥‚ZǼ™†¥|n��\‘6¹Bx|åeV¸òìÕ 9S‹k°+\åv�lEȦ¤j˜Æ†xÁSµL‡àÑ¢TM3GðªK„‡ ËM;’tÀhØM–´ØÍ!¢š7·K¨dëµÑv�o–1ù ×&"Í›yJô ì‡�Q™]Æ o1Qšµb­‘Ó¬B‹µ–uG½eó £Pe…=n„J}mô[Ñ«TlùÂZCâEs™…ÄS�ê¶ø� \ZÎà !Ig0‰ÓlEOg°”,‰¨WÍYEêÆH›ÞxÀpßH$hpN€&Âýl ¸BÀM3»¦¡�|#¸mÖä®iü4(hµ†­iÓœù¨ø/ù/¢Å·‹† !05„qßÚ�YCQOyQ.í7‚.…{ ä ÷löhž�&Ñ^‘% �œø¡ò�šgÍíc#û‰á¾6ÎYÈÌ`O×bG´mΉñÍ5"lî À,K#Ç… �@†’-P~�µ>¼™Dÿºü|Ö¿ÀzÕï¡`“æ ùؿӀ%ó9ÌÒf,ïIa‹†Ìä™@™rbµÄdï£gJmœ×ß �ŒD¾-ïsømsLpªyêµÔ8ì´e"P'ó§Èp(¤B yÒò>èÞ6KgVöä<"£?Ás<êðÙÏ ^Á/Ј•“*°$XŠäK~ß(H¶ä7o�@¶%µysg]ò›7C Ë’Ú¼‚c—üZ”ˆò¥ y™cœ)á�9�˜¥ yi ÁÉW=ùºÐ§{л©ŸÛ�o�›7òöÎf �2‰pU¿ñWU¢fÕoü�̪~ã;2­ª�?'8fÕo|‹@^«jãONºâ7¾QŦ©VÔÆœrÅoüd…x}EmüJOí¸£¶8µƒ‡ÄÞvK’nˆàË<އf»¤†Ãb‚ç¼¥ÏHžàí̦H2àcÁ{äø°Eÿá“÷øp=2[N/´´‡Æuð\WÄÍr¶+±{óq_.]á&X¸õÿIÔ[n·A@v¬8÷ÈMmH9¾Ö {¬plŠpØFºlÇL–m¬èÁ¸5®$eQ"h#SfVn:“KúVR¹Gnbcá½5<InÄCà’I~Ñ!ÊHC)®Ã™N:kYjÉÄá`x"+8çÏmá*†�˜i¾šð~1·á4T“»X1¦éÐ.KÊ+Ë7¤åÏOd�«ØåOƸü4)i½�ìX¤Æá�ƒáq{‡ñ*™9in�ÞãæhÒöÍ.Œ'm)í™,¨p¹½¼�ržÈù27:`ÙcÁÄí'íÄæ¶“fÎÌ�ºbäx‰‹òïåØG&™ .³ì•ɧé,é%h¯¶9<4n)Œß7ï�¦þxs1J9%RÚ2)¹Š¼…Ù°…‰§Ž';í”&–kæmèË\e@‡³hñÀ n pÈ ¤È´#ë48 Ò·s¿åààu†Y.]™sp.¼q�Œ3»ü-÷- ¿Ø%�trÿÛH’ÒG Ws¨V¡i/ ×h ûVz¡Mu˜ý–°_½-ûŒMüréU [. °ÑJæ\[ä&0ä;ü-ú¦¹—šÙ „µgz:g¹i¬p(+zårA‹M"”ƒJóu-“EÎÍGª†áŠxCÞ܇WhÈñ6.É3Ö^Sæü�Y� �6 -ò̆À'q°Ù, ŸdÓÝ´…ï5kéæjƒA6}æEÓÍ�¥W´§#ù‹srÖí'š2ޤ°tsN¨L�#7C¢, a [À'áð§qÁºÖ†§™8í<ô¹[sö$ãn®+yoKÞ[®ç{o¹ã¶9f\ÁÜ‘úC�Œ›ä®š´ddNnjÞÃåf¡¸žÞjE˜dÑ’ÉÀ ép�œ}q½ŽZ¹éýrÌã'[´ºó tS,<ËÓmã=r;·9yi9 ˆ“Y`Žæ²-l¾µ¬eûB² z+íÂ㺢ô…s@‚E‚¤š2PK¸M¢à=rÇlV¼Gº§€I¸d%dükC°ÜEðÝÀ�¶Eðm†¯{•I‘é~[h“£‡9§7e�–÷ÈùÌPÚŒHBô%Wh¿àRÈiŸ=öžB|¿ÄÅ{'†D±ô·+®s�d$÷e�‹·ýÅ/pñÃVq‰LÔ.µLR–ÐF�éõ¹�c©¼þÛ?žŒ2t:Ž[4ù”,àff½ãëÈòkø¸îè©©˜ò¡ZiwÈU†\à›øÍÛòÖýA’‹Udw××aÕã-Õ~ GªÙ³¤ü‡ÜRf ím°¶ìpkÐ,7�¦mê>èCI»+Ñȸ"ÁÍf ®5åhÀY¬Ãz ‡@¦È<úÃ�KMï C½t‰Q½§‚? ùÛ³ÉÜÓÖžbHO&CZÑ·²¢·ÌJ• ¹‹«"ð” ¼â @›¬º¸ÓxÑ3/[Âk Ђn‡·<ë!Æ/½*Ž‹ÂÉ HU†DÎ�l =òN@q§éÑßzèê*3P KXÉ5Æ*2,Î X8­¬<ÄúŒÃîœK˜•I*¯-Ú\ é-å뙲ça½@¬5+€5wB?[KÂkO&„æë¡Ï&&¬»g§TÝV$Áú›™N›?‘pŠíõ ,Iºi~©t²9ùzÂ7�“ï�?E`­ˆ´K^¢M#hªol«3BØñ�6OÚ}p¹pðÔiQ4iÔá¼h#«Ù=Ž’\G"™± Ì^‹­×Õ™â"¤|Áxâ§�1Zø�ž2]·ÉMçè†2.çK› w‰ c^!�ÏÞ¤:ž¦äZt•8CjpH Ã{ñ:Ãè?8Ñb®”�Et–ËÓ˜Äè“B³ð�¡1ß6á ôåu\ð�zpÈ«"æ0Íì(BéÅ@ Jåö+ºƒ$·‹¤æ0I" #HRŠx‘$Á))¶EiECGIGIŠIHË—"sãÂíæ„Öd´\Â[‘>2Z+@Ë£€Á+#0<,ntÉ�K¸dÓñ7ÒÖFƒêÄ+F¼<�î˜é¹Ô ú¥«¼%¡¡ÚÌ!;‰ß#_©cìŠQÁ�må´ƒÝí±ÐLöP÷Ym£{™Š=é¹Ð¬`  ËÖE‰ï– )WéPÏç8ì瓸)—«¢-|rÒp”$ɳ‡î»OŠÃÌ‹A3Iµ„­r>ÀMÂÀM¢c'™ž°ÍYlÑc²jÓ=—B÷¥1¶C@·!ta[õØÂRW¼!à×4/Sf€#E.‰#Å,͈1o ®`0Ð5Im¬û*jMl\÷§5ÂÅéf~XG�~aX? ž/ïs®E0 THõç±hð~z6ÁA gÿë��·ŒŒÖ}†P¹LWn,Ãx¯Ö2È{EyÛÞ¡šb›\²ˆ^CöŽuOJš4»QÉ \ë~!¬„Ë•8,±æ&Tb�b±3Eà6 ­Xeéõæ i?Q ¡ PH¶J'6($S…�°V~íƒçZ-ùÚ¹=¿œA²Ù?HJ3>KäSd蟿 ØŒ�gØœqp«•0ŠPj…6Hoa’¶?싵æ0cÿkú¯i×êoÿù×4þ¤Ó‰¯ºíÖ4¡Ùzbi8@LXKÝNômkÖ·VÓćži€B †öÓýì®ÝÆL›ê&%' áŸmʘöõõ§D&ñ?X*mê~Æðß} å׌)(�£Ÿiý¾1¦\kö)‘ËÌÖíoP�c#_ʤ€žø¡‡ä  Ð+Wë:‰ÿMô�%ø[ãy÷,Ó²?%~éZ_·Sè×Ïø¯ŸFP÷#ð0°z ‡'�Aÿ¸úÚMõõžek.0̧ÄÔšêÎo¼2¿ýD+î×ã4ÖäW€Ì½œ�ŠûÞõ [ï¹ZbL}¤¾¬ëx�©°ò¯ŸÓAŰ ñDÃüÄ×ÇÔ�ð?A@çêÀÅÌ”;Ò':. ¢ü�7_×Z§c *öx¶¡ùÀ+Ñ-dUõs>_Öºe΂a&ŒŒélá~J­ôîØpSÚÂ#1Óä¹Sk¤G‡þ ²™ ð¹Äjd¸:`ä讄÷Q¢»p]kz”ptÔÅ’ ¶¾høÔ@›ææSâ×ë™>MÜkSçW@þI9Àjƒ@a„ÀZú'PÜ ñ@4˜ÔH7†#×þ�šÞÔººeEˆ¦–=ÑLŽåD³‡°$´÷ºo83SÛÀRP¡S÷Õ u]s�Ä%ñ�Ä1ð†TO3õi_ƒUÜߤFF¿¯OSH¦Ï è}X<{b�á$&ˆ=ÎL°€Ù+ÃÑ�9U"¸òš2¡¡[#¯nFTff9ö([7�o-©W�vÆ Üã/ä5´)x‘Þ¢¨\‚(ÔX¶‚"†8 Ék=X–ÐX´Þxh[‹i?EšÁÐÖ6þJey¬° ðˉ§B$Eç‹,˜ú¼,ŸB¨·2ÿK'ª™¿| ñf/¶Ꮉ_¾}söÀgÎÌBµ\"R³0' )‚÷•È2"½G]�ß�¢ËR;V”SÅs(OVH^#ª1ÌCmÊä‘£¡.¨K‡Ü`þ"]WÃ:QúX‘þ&u 0T¡þŒSLž“8â�˜Ñ£7lœ†&‚ïâšG9?š)ÉÈat<�-ɲ'©¹@‹z„8f#¾À�ŠÆìé¤óàŠº�P'Üd%vÁy°«ê�zâ D ¤¥Sf‚Ÿ )àÁé ™Šd´Û5­Þ8¨jNLCYÂLâ} Çæ4 ³KIÿ0¦=sÑ×0Ï$õˆòÆ`ìø1(RE*‘ø–ä80ÛZ8~à_�G€&�ÛòÌ_˜J¶Þk‡gfZ«]x m±ù¸Mt òd†ð€¡&ß0šÝÏU þ¨¹ Z{K±Æ¾9ª�ë€ûÇYáô š?.¿Ôì©�äLÁ— ×÷Ú i/>4ôöÅ0Šhã&DæÃ�lÀ–�æyBNØÂ,ª ^‰$×!£¸˜èÂ^ÌA£á¾æê3£7F³Ç¨'IàYÑ4 ·. ‰Ëfã8Ü|ùÇ>¶3k¶˜íOßÝŒ×>X5ñ1ŠK8øÚB®1µ`å$& Ç=�c%€ú½²)8Auÿ€KsÒ`³pÒ$ópÅö À H…lÞúã1?‰}Ì¢1/QKH!0kñÓÑO¿Ìl0´7,d³½n¥à¼?ôá Õ½Ÿê?áñf¶˜Åþ‚CXˆ²'¯€ðèüWj@ù1{ á8=Û2M&L1ßÍ”Kç Sh!•óó  Ä…LPePt±dXi¨W%]ç�øõPåàë©¶ìj”“hñàúNIü¢™ âÀh…ˆ‹•2LU~ÑmÛòL9èÀ�÷ÖD×Ê…22½³èõ€íA!¯e e¦.´0üaïú=ð®”…?ì�k¸p$ðsA/–JEøºëNSL?2šÿY¯À”³ü²˜Ú:€¢4ÎsUá!–Ýaj™ƒ*Å’ˆùÃ×…Aãó¡[PÚ×G ­’ï 0ÔO‘R7SÁ‰ã/+ÍžÂùugƒäáçmÀè ÏÝ5{ºŽ=­jý™�ûºžÕ{˜]•ƒ½EŠv!ŸP2ËÄÿôõ�¶0ÝÏ~Ô‘e[Ør6'âzÂáÄÑ|¢MÁǘ˜EÄìq!W)–³…\Õ#€½_.“Î�H ‡BËEÈ[à4šO�Œ¸†Œ¬ßï«ÈHs’‡‘‘VR±…da#¨d<²€œ1„”á5;�Ïj±¢†œZpŠdŽºPÞOü éq`I/6¦ÿ–81ÖºÆóvç ¼žø[š¬xO¬>H`>W¶iG`�.4—O0ò’Þ�§þ\ MB¼¢(Ž&_Âè ç!ô7’FÐ_ýk3l¥<‹—RðÛ¿@/#[¬D9‘€§@‹™Lå²Á˜¨4Uƒ&"²àì µpÞ� ÃÙÀºzÞâ3s|‚õéÐä¾5z”„R¦Ç <|ƒcCùjo>0Vó\îèqxª…Ƀ“j; €�ž6�¢(©¹ �üf¨»1EDýjâ.¿¹Wƒ_*7°¦…ë\_ƒdŒßÅdú¿pó‚‘Õ-N½Ñ£ ’·ç9qhèÓ“ûU|‚$¨IT�7¨––ÙòqQÄ!Û"dò�ãFú'd\@“,gTà�\© R£$—óIJªïÑó+ØàºvÀEýËŸ"•Úhoô �1�A¦ç8ßüÓA¡»ŽÑºlŸ cä9ì·Íů"Êþénfúßa/ný[º|ëEZ!öÄð¸íš’Ј¸�3T6~ïÄÜâ¼°Š0�‰á&pp@›@àמ’'¡%f¶„ž84 2(H IÜQnÁQäüM®5b¡q\Æ#%„l~”¹;ë]ø5ÔÀ�mº Ý£Ñ<¡¹ Õê„ ÈˆN ùvƒÐ?pôGQ W"æÆEõ­é¯`H‹§ÔAר,(Ð’ÉrW $°S× Û¾ÁË30N-fyFcd[Ý_äÿâ!96¬7`”Ø–×¹‡ôê¢ZÀ5"Tý_ѵT�Ø_`%ü{U4ãªV„nQ:Â-V&‚0óHóx˜Ó|€›üýËo>Y¼_C70 «=±÷7qªâM~p$˜=öÊÍåüý=ÇÁ4oT3& Ük`¢>Î^¯Ïû ‹4=J“±ž´dåúü#íåh�n@º ™Êqo¤÷Æ ¯ý&�wtª5EõŠÆÿaÕ’ ÏãØÖ´1¤žZOY¦o©Ap²Ì1Ÿkk¡ÔjÚKpí°M¦j|ˆ¹�σøÞûwÜ­Š~¡+UÚ‹ÿÂMfól«Ø/Ž«ƒÊÎ{Ú¬Fh°˜Câÿù;G)þ8߯%>p+�?ÿSýBP`£ô4³÷�ÃK¤à|®²_£šy’XbM3a<%Ë•ªO !ƒ³4) ó†Ö¤õ(D›d+Ðu’°8hó5™iùx'=­AB›&Œ�­ÁžëgüÀÏkF¦6’ŽœßVTàpÙœ I"È–#œ �l°˜â5Á‘æÔf³Ô.>ü¢Mfº ܳO òÐï/ìibêŽ>Àÿÿz”È~„ÿ'þþw�¿Q‰M“Èq`ÞãMÍŽG7ý_éÀóc Ê~øüEŠFþrݼþDv‘n`4e Ý47ÐÒpG)ÌE@6–mÆ!)ÃÚEbX0‘ÓQ—ø×O¼~ÿú NîPǰ-RЈ&ø+s…cà~@¤ßMüç$'ù ™÷·Ä?tÓ[CDø@É>JèD¥M:šd½44xûQ$äiàÆµ xNC—W>üØ%~¯ÀßKÍ\è}ü�T@ðïoŸŸO& øW@Q l ç¯úðKoÒƒŽ Ýü‹}<ÀÄD% „eJBHé0™BBž ¢yDˆ‡LhÜú?ì"£\WÌ(B[¥8K“W_¡öQ‚_[fõ«.¯AÇ.ƒ°JT—A"Ð’pÚÝ’B­&�~Ä"h¤1ÄŠ!ŒÅRÕÅÄeOØF±‹iÌ&Ò �QÁcxf-OÙ^iƒ–•‚åŽ,$2&(Û¿°~ñÞ+ðÛ݇ù]¸o' Y"ßS˜˜¾Ãa±ý*OúéèW˜‘àdÙÛž&dÏ?‰Ÿ?ÑmüŽÝû”XØæ‡Ÿúš«}åšdj.½Æ[òWÖ`ð¹7ÒlGwÿ¾p©Êg¸ÔT*õ3Õöݰ¿Ã«Õê·ÃZÍA��{ðx[ ùS?}È~…Öá_µ&¤«?t:Ž©�«_.¶ðû üP³9y9í?TÚϹì~X{†o›&üK»¹ù:Ï~�vOÍ ø½Ñ…/g€]¯vÙ?ŽÌçG€_o!~Cˆðü8—ZÀ¨õ•òÿ:« ëõ“¾Õ}º+€_ï°n�õ³ ¿o¯—ÏðTÑúÉ‚¾@~­¢{7Ñ6ÝÇ“”¯ÕEüȵV¶Ö©.ž³PÞ»,#:Ó·«“«“i}ÙËCù.áQõ$ÉÅIöîòQ?[¿> ?_×�Ëvcõœ«ozƒË³g½yq¿={.Ö�çv ]¹œ9ë³íeuüÜj®‡7çÎs}Ö4ê“aaØ¢—ëÃá—\¿õáËc}øÜ~*ÝnnË�Áíëyååµ>,¶!Ëã¥Ým4†Í/O'5íôµ°|ýjÖòõáãÝð%×¹Ìt Cøñp欑7zåþéK·ê¿õtWÚž¾æ¾lËËyº2ëvÌóäƒÙÖ¬çË‹×ÙóúùÚ\½€ú¨gjOórãòâá4ûÅÒ{ö6ûb.'/ÏÅáõàå!;èØËþº`¿ÆUó¢ý%[Ð*Ï™ë›릒6/ï®'Û3cû|99¿º[äÊW£máÒ8»\ë‹üÅ+xž\L.úóäiUköŸnòÙåƒöÕ)¦ ¥QvþRþry’é”L{±¸yh·í›‡›Eûúµù`éÓE¦2º}¬Þ fÝöèËp�ÕæÃím1Ó-9g·fA+]º÷Yë±pÙ\X×™›~;içM¶õ׋§t¢7�KΛýæòn9_eƒÑÒÚdÛ¯­§òåùãúv½0=ûú¬?®zÙüdpU¾Ú–{e§¼Ø^nÛ³›ççòmþâìI/79·hgîϲ­qv±z˜=ÜŸ¿ôÇ�ë¯õEÁ¸».Ôf¹ç{³>¼Ô®»5Ý­õ:·ÍÆÕÉé×Ñú¶Û?ïô.³ÖÒ”j•§ú�]hnúnãüÒ5^_ÚFÁ°“äã¬eœ5fó~A¿É/nµ˜¬\î›Ã»tæ´ÿÓN ÕÍýh~šîØ÷£ÁÝíµUk?¬‡ÕsëkóÞ”Wåm×=9K}Í[ù^ú*;›•_ëW§š;x(nO[¹ùU§W(ž=5µÖóõH¿}¹½�ê÷ýÝoh'÷Záâæ¬z×j|É]kZeü:\Þ?Ž´y½f>ÝßTN¬Ìù,ÓÙûåéêá¢ÒžÝW.×›÷rSü²)Ü5N½ÎcÿäáK/Û}ÑÜÞU-ÿåþ¢s¹©6Ú“‡öóóÚ¼úªÕÚ½âhq3´›óé¨V©ž ok®V,Y¹áóàQßXÓ/é|){ižo7/õéë•yûtsftÍ—öd1©×®ÝéÓùÜMÚÆ}û¤÷üUk�Ûéíæéb8ÚtÚÍ’~W°Æóíúôz=t:³ñéÉíü®~~‘+u[£ËÑÅv¾. �««u>ÓÐOrOÅY¾1+f.ww˳U9÷20ŸN·µi¿Ù¯Ýꯗg§ÃçÆrY¾yn´í—/Ï‹ä=°Yõ±Ü)Þ–­'ãÔ°NûÝV­Ò¹«v«úx¼rË·íUþ/½¶§fÖ||ÕÖÝlù¹ÞÏ7Îæ�VëîüapcŽ�‡¯Îýc-wÿüâ´Ë÷åÓä]mì>o_Ò§Ïë¯óÒÄÕp34çæs~“{ÚÖ’_^.·�Ìùæ«Qzºu:/ÙÂ`~±žfÓçE½Qx¬”z�æùÍuóaþlŸß~Ý>>ÜÞ�f“óáÉSm”Ï_O ͧ^ò&Ÿw¶WõûjÕzº¹ZÍ:Ë´'¹BoÜy¹¬ô&•ò4—½²Ÿ’·‹«ÇR~–MËæÅWÛ¸Özó“ù×NvÕº½¿y¬g7g…—³³V!߯nÚO›«§§d=óðrV½ê>.Ÿ«çËi§sßë¼”OÏr·•Íe£›Ïo{½úìöeÜêßµ.Η«ËÞéô2w¾r›Ùõ«ùÔî·Æ�óúö$Yï÷ëf±ãNNïûFñËŤߙöröÅå£s½yì:¯ùÛ§yÝÙ<‚n²¾ fM·;^nîòë^óÌìë½—ìôQ1 ­b8™B¦±¸ÿ:^·¦ãëú™v^ëŸU·-ãv;¾]o:÷ãÛUu}9άoZëÕn5:¯™MñäéñúöL_7o®û¥áyç%¿~Ñ3£÷2>_÷Ý›‘U7î’ãåùíÃëâê¶z•¬æÏŸ›Íp¾4n{ÖI+YÍv:·–¹¸šÝ-îΛ–õ¸|(==ïÌõ8ûåkgÐ>¾¶*뻋JyÓœ�†ÓìÃCÙj§/·'³þDO–:öéõׯyg\^è_f'îòtùz9¨Wº§�ÚõpyZ+Ü”ÍÚt4Öô¾áÞÌŸï“·Y{¸žÌ�e÷¶7Ë]Z£×ÍýV+Of�×Ze~Y¿YçÏ®†W5ã*�4»½âÝÕ¸pÙü²]·K·‘>_>%Ïš—Ë´5¿( Z&£]´ËÃüÙÍ`nW«ú—Þd°L?´ª�À“òý'ç)£eòZu8X¹éÚ×××çç~óúÒZÎÇó“ñøÜÊ\]Ÿ?Ln²µÆx�Ìõ�ž“­˜—õÉäÑyêÞÔšÕfÛ¸X´n �dãi£Ù¹uÎ>›“ÇÛ¯«œí<Ÿ¹zw‘þz—u×÷×¥Iý±íŽž;ÝG}º¼kÍ_jËBñöäîvyÿõzS¿NO¯¹þ ôðº�f­v{z’[o;w‹î‰fV®¶£×¯¹ ׺o,Êãa¾¿\ŒÊƒAéU7—…Ìsñù5Ó¶ïí¡þu13 ÅÊË㺢z§ÓÞt»Kë®|‘kž×/_×Í¢Ñ\>ߘU3 í½tg;¸z°vU? Ûfíâîteß�¦­jeRoWìík§þõú¤99qÜdzìò&gdG�MçöùE;7›ínXY][Õ^²Ý.WN­‘›|Éíúöªsv¿>™½Þ½l+¦•[ÔËõì\×sÍåfPn—¯'Öð´Ûx¬uÒékw~vQÙûöy+ýt³Êe¦ ô?<̯zùlytýtۙߟ~©·g�E¦[¯�4Æ·'Ó‡‰‘Þ”^.ûɬY¸Ît^ÙÁÙÕÃÉIÃJ&ï´\é±RèÞœž .ŠOúàñŪ\žVô¡uý ½:¹nãÖ¼ÚT íöltñp‘\ŒŠWný)›)Lë§ãÛm:s—¼›�¾L7_M»zuš©®4#÷ª�wçæõi+}7¼íä¾²¹“›û×^½½j>;›ëämñÑtžª¯›ÍiÓª8 6r7«S{ÕKÏù™Û¿>»¹)Vž6úàt¾¹™vg3íq�\Üu+—˯•¥©mÝî×å ižN{Ck˜y¾NkÏëi¾õÒ¬^.–g/³ë™kÎÌʤœMÞlÍrº|Y*^nº¨]}š{œ´†ù»üùù—‹›×lþy9tÊ—ãíSzÜÝ%»�/étòbòd_”[åÇÑàÂrsW =wÿÒ®´ÇQdËþ•R?izÞ£«1‹�éщÍlÆ`¼*iÄnö}1¿~°�•é¬r&Õ3âK*  âÆ‰Aœƒ–‘.�é&Ù‡5aå%mÝÆøf]l`K’%@ˆÄ#{ɺêmy,ˆ°9Õ“*Hœ„¢˜ÕÙ1��¬C+·Ý,ú³³n"fX²omŸÍ³ÆA3z!{ÚÌ…hÞÙª³3CI‹µ·�c‰·Ýú†µ–™Ò®¶›L’Æþè› ÷w4-q~@,G"iŠ¢ât±ê¬0m¡”#v‰PiëhÀù쨄i;1W·Ì¹Ù¦;lØÄ}½ÍB*ÒಊíLtlôt^�©t_z- À;2o§‘<éÎ"éèÒfº(¢KY$…M1¯X˜ÙÓ`|\+à¸+ù†\†Ê¥Þ®KZhQeaÇ*CÍj-…ú"» 3�öN,¡§GÌ�ryfÙãLa7‹™:ö›¨�\7¨!ÚæHG+8ëòÝH†œ[¹Õ:]mÏóÐu Í¢uã“M)ízÃ, 4²Žrvæ(ZÙ�hKXy ±S?3Ô Ï\NØ…«´Í„b¶–)Ɖëp½1OŽwt±“Ž"Ýá.KB2[äY›�V¹H ‘ÛžÚ0X�(;ôh{M¦ ¶`¶2D×=-ZPXF4î‰àR®d›o -Â@Wé¡'Ä…í­”Jk¹§aX@æ('Ù­ Ü?�w °{ ãäJ7àp-Ì‘á×ÕÅoÈÝîÚD °C±¶ HßÐhìÂ{Ü–6§“/ú _y¾˜0�Jq»œ_û…Sdî8ßw4‰<ÂîYu)í$ÍIžÌÒTyÕœ5£»|°T4 ët±o}†”VÍñPdào¥%\›uº«û”‚(—üëŽYAm p­å1�˜XF%جw]ê°R³¬öÀ&jxÃ?êh¡С€êK~v#÷S![Óe»—‡RaÒ<•Û£VÃÅq`§¿Ìq,t‡†Nrúp&h1LÐöP‰§–4XmÐYd"ýÆÜNÆ­…ãÏ…MÛ)Û|Xn×ãXi LsêA*k(öG<°¸åhrÂ`#‘Àr¸ê½õ,9Â1-°ï‡|žÄe^Ø—1f²¥�a¶MÌÏV#ñ/ÎiV7ëÂM‹vfI1éÒÀJA ®\Ã8âx•¹D”(kÀDê¶´ŒK‘*uñŒ)2™ÚQnš¶¿qX4Õf(W¬<¯Vu„‘£íŒÉ;C[G›r“ùÒÛ$�ã_ä$ñu =’=�ðsÁÍY¯QÌFLwUa‚?· ¼XAÃ.ÂøX½™Šøa^³—Ç&„g9Î$í`-MåõŸñzSáúìY¹§!sH<§¡ ¦MÉ*r¹Y‚AA¬Î*aŸõ®( e�"ì*9p ½"ü±òèÎ¥vIqôa#›q¢³TÃz]5ªÕC•m;€ª)µ0+°Ý8C”¶‹í@¬!pÄ!£ßfË�R’‹­Ör¶6Ô˜„_§€FѽAB ÂGÎ� ˜5V�Æ›=¦ýÙ?«C/(|ݵÂ{ 8e:Iø©80³­"¯±eí�Ó0q^¬õRff–$l£ô! ÷N¹$ójœ3Û>ZSLé 8©•¿ˆÒ¢#M:8ðˆ`ê ]Ã1J‹T_{ÐY‰öIíl�ŠN| X‘ÞLô<\Ûm8 È »h3t¶ÃYª`™Qš?m‹fÞ¨h ùµ$ kÅ0ÖÔFÁuk7¯k› Í<”U—ç £Ù@ð|äE<&Shž7 ^Ž�ôH?;lOû…€š >åô–u}3mz¾Od@eµÉç̺G¥E1Û9œa*­­lBà$/ž¹h¬žOy|VÍ-8:µ]`2l0® ËÂ@| µ~â´³ ÁÚVn-›58‹G>e¸Ë–ÄÙUJ€ÓÂGƒ=Ž4‚× L3Љ-RLÓÔç‚â 9>aßÏ,ïAcØŽ ˜:[*P`‹îI‰ƒÅl‹ú4èU·K<;Ö ;b‰ŸDÉêý»‡ñxÃB†FÍ–rü£„'·5}y'{¹ìÊ´¨ÖYËžAîr ãfµ¨»þ�îA «¡Y¤ÑA%/™c©V2?Îc¼Ã ðòb9ÃÆi»38ÒæÐùmi¡ê]å´êU:9Ht<”K)Â] ì’…€‹ =‹r/äó`�)�Ü‘¸ˆŸ5þë®ø.Mñcuä# õj£ÃlÞá^9vW©Ä÷Ôò¬`¤½\HXhâX»-o[F€acm�¡À"fŽ îêPÝ×?6 ½0g* ÂRƒ&ƒ%œbraÊm¨àõ ”¹«ÝàEÁÌít–"}i”Ù0Ðê2wâ�é™|ú8íÎGÚ['xÅ—'¦`ä0›T ‡,¼ W"»ÐJ�RbË ¡°+Àr¹¡I°SÎãì¼.«¾®§t�à-<·­Fúe�3Á³Vµ0/‡ Eú‰! Y ô­ÈF$I´ÿð{–!U§%)%:) ¨zK�‰N×e_.°uøº´JœWc• E$‘ôêeíûB(()ù«ŽÐP²$¸%qF©9!ÍxKw¾*“,ϸþ®"}%Ç‚4²Õ…Ð2õÙ–°a$x™xj½åÇD ÌN4ˆâDµÛµ@4÷õEvã,éØMf$dLLÂË:µõM„ €è#ð¹Õõ~=ƒÞ˜•@¬ø£Rt ŠX³"]äÔý^éÈ.BÛÜnÉFg‡`GuI žƒ)%ÚižAªæˆR”‘α0EhÁ&mo]Ú¯idœfÄÙYÓ‹ùÅÊÖyå��¦[:Û†Qð½¬�X·��HC-�U¡h¿ÁCPt.h6ß.ùd `d÷¼`è¼PNÌ8Q™oúù†TPh3;ઋj È.OIn妱í`²³ªÊNH„¯Š:,²…ÅX²°+z!¶‡&,×!UÔ°›êä±M/I¤ ÏUv¢êY'�ãx¯ŸýC.nNµ¶°BÔR´ëŽCÓº‡ÖÕcN•�“ˆõ@·„ò`ˆT5¿§ërà1<_J„öUJ.Â[ø�ËYT q­ÆzfÂ8'˜º«¯štuê2ª Û,‚118‘P¥�m@Á©øŽ–.D‘»Ss¦p Žsär°Õ}×A!I!ÈÒs|õds¿ßíD¹ŠA(HXaµ2Û^HÎWyšcYžªlÝîR–•)i>„Dîê¨_j�ÄÔXJ)ä0”�£Ý®u—<ª e„§ýâWekÑ•©še ³™oÔ…vaÉi˜¶`�÷°@�nެIsuÈMÕ4çb·ÑLTr{Ql 8—7¥ïDGúì‹Â9˜ fºÝÂ¥eÏ T÷ãÄNœup�1²ØrÖH±Ìþ²µ¤š³N2È­ S‚ÆeË-ÐMéÌrŸŽ#µéÏ{G=%­ 04ºZÓ½�ÏuzaŒ´ˆŽ±·€eDYY̰ª¥›Šœäb‰‹ïéË †’Wv÷ïÿöÏë¾ÕĬÿóÛï×·_ß~}•÷ µ|}Ÿö×_–ë]Ûž½v{ÿÖí�/I–fw§ŒŸvò>ßýø“9Â[Ñ'o}¼�¹í"O<õÓž·÷û"o§ïúÓ›Ya–×A2ÞæÚõ+ˆƒúòXðA‹ñ°uîk’ _³êå•b•dY}¾�]ƒÕÕÇî{ÁeÏ�寻Ì80«›ÊèöøzÝô[g_|B÷Ç–yµªøíÛ7šA¿ý Tјåõêé< 7€L”eÖÝßÿN¡¿41ÿÂrãxa1�pÝ;�}a›©íNÝÆr#vÇl4ŸÁ§@²j*:Ì ˆ,¿L XSMZ—S öç Ž»õÔ£8ÙdWq?G¸.ÎO xŸ#©—}ŽÍ&&bš`�È�h h‚/ÆÀô&&c:&z4ÁÉ$‰BDqâ&&ˆ¢hÜê6,}Ž2Á¥ë•nuž™ ‹ÒM²Öýê•YòËÃ4Á˜@ 2>^=þøk6ŽAjNð"4Á&/h lrU�N LpÉ]õ7�1Á&•[�ÍäW(ŒR]µŸ"ÀŒòâ°42A+MgæD"O0KS¹åDmÀÔÒ¸¿ð< sš@xc˜wðo¿=ÑFÞÌiŸ•(ëøvîzüÃÉì»Tê } ’WõÐ]µþ>-¯úçM~ó^Æó¢#)ßrÑWЗÏÍ|^ä_ÿLßSm=Sþ~·¹�q¸»U\}+þa»×ãÝùWO«·YÄ3mí÷+Ì^5*�Bœ7ÿã�Í·�79É«'íÄÌåQ†oÆñÕe z¼ú¯ Æþ㯿L¯~/`úØWùG§ÙŸ°›ü×{UÊÇmó^êý¤…\ìz¼6ò‹PùÅý½nù�ÌðGo‘åõøyZøX³?Eçx=ë^oøêôY(=zâþì‡{­µÿ�!îv·¯MðCP~¶—mÛ÷<”ÿcèQKöÄøø]p¾no~óþç³rï¶µ£¢¨çàÕaÇ÷Yt#oOû7¢ø¹çÒ­»¾ÚLÜMÂ'ØoçÆ9X�WÁ÷þó ÉšÏ^ÕJŸTë]$÷Ç—� Üåt@|·i ~€ñPâÓk=–{×ÛžÖüÏ‘}‹É«‹1„A|Áñ[\Bo‹6WG£»·ï�‘c?vªOiôYï‡=ÌÅ‘Ÿ(÷ÓõŸ‡à{go·ò ‘>!øÿ™o}ó»Àí¿}àãâŃã;kÿäšñ«6S;Y¹Oxþ®‡}ódø;qu{œ?Ÿ¹:|×?Ø÷¼ÝÂËØõ>ݹÕàØ³ÝÔ¹‰u}³äÝÓ½$E¿ß¤Å�NÀ¯FГÚÀ–×ãáÄ[+šVuÕ`>Öá»–¼Ñã›(—_Å�ÿºË¯N1åÕaÁ{hŠ7ë¡gö§Ó=Ær›'ñr_¿s«@ò>ÿúRŸ³Êýî‘4f�ùu$¾|¹§×v“GÞðꦛ¼ú8TfâÞJ�WNëoéݣŽ_,÷o¥ÿ9ÒÚýó+w cðññß+•çö©•ÛÈ{˜ßÛð}ÈZ?ö£�J”<É1î=åi«½[p¶²Øy$›2ƒIçîõøû¼ô,�ý4Þ²+ìz|Æïwzø¬i>üénp·vZoŸHÑ_ÉwÌr¾ü/{oÂØ¶q4 ÿDQ-2!©Ã’ªJªØJ¢·>òYJóô�óI J¨I€@˪£ï·sì�êðÑÇLk‘ÀîìîìîìÌìîÔ‘õÈà¬üÍö0ì¦ c;¨Û#µˆ’RŒä?»î+ÔÜ{Ÿç”þÆ÷Jêðudd_´d lŒLO?¬?7«w™ÓÉÒ‹À`�J¡§©h^„™Z²€ªW˜‘²…U²9âÍÊ ›Ž×“þÁæ…7]^¸>ñC‘Ò‘ ã.ÂV�/£!þ×ö±4È^á© ùk{OÂÆ ”ß|8+ê$G�(“Zê«,°€aQdñ`Î9´û¾Unärj;&GkÍëwØY »ÕQ_GU‚aMVŸ[ ”oíáMÜÄ›µò¨ ˆ®‹Üë�ã }âÏãI)”Wµ,sÿa)Àƒø#˜F›U4HÄ uG׌$kØç•°I3brs œ-Œï—üÖ´è·fDЗ‚�‘‹©’›]¨Ê(¦&¿¼£×éï,½ý!›´´BQ>K `ÿoÈòV˜C¾Så"­Ç˜¦½‹A¸ÐL&‹U0­Ê²â5yE³ÕÍG š…BÍÛ•…+NÒ<š\aoëñã0² ©¤.H�‘úH$A[@–S{HÖª¤óP$Þ/�z;¥Æ…k~Q§�ñ?o§ž¿[ÛÚÕ=xáN·Ín &Ð�EýÚ ÏmöË‚Xê—7 QÀìo*.ã<`ÒIÑóñÂQn>‘YûmÔ#öÚ¼3öóšÏE™àËH­ÇµÙIæKqVˆ½û%‹ÆpÂa¨^\4øZ1xu¹ý&bÕn$“¨(Ì« «gH§Ä}’ýÜkf£XÓ#‘ø’èp¿Eƒ¿Ãy9Fí${j Í\Sî)ƒ…Š ðä:í_‰Ðz1¯D/ó–ü.'ó†¬h$t�© êU¤v¯Ôq‘ ÅDÔ¶$™ÑyMÖçwÉ_üQÃô”xE¡"§aW†µ÷UN©–.×1Öjg YîZ†Í¥ÃÕ.KC·eÏÊ‹}qBaÛ\Ã-Ó™q›€‚âöÔPˆycfì¥=λÌb¥,æÏÅl–Ï£ÉØ[ _”êhÖ©S–l}RX˜Ÿ ¯èP&M+m³5ëþÆ»$øÕÜJkTkóå1‘¯ý0sÊ/+ÍWý{Û¾´`¢Xaƒüõp ÿ3펿Ž6ð?«vÉð Ô‚%Ìɇ´ËïÛY«-½2+ä7Ì›t•™îñc…cFž{;³¼'Ž…~÷)ñC÷`˜Ýxj{gʯ…^I®°·¹µ¯�š6£ûÌi�˜]XòCÑ{¥8,¿q=LìÕbíh çšó(aÞ”QÅÔëßyˆ~ u«'›Îîø®œt ?j&=ûËg(�žYÚTyw‚í ÿ®9 J°œ/ø©?Ì#u§ ~ª|kÌ�© ó¯MQÍOå¤ÊO=#?.9æ§Þ=Çüx\u|§M�þÏBÅÒç§üTæA“Ÿ&Ä[ˆgâ¶S•ÙêucÇZ¢´ü,»Ü–KÎWVNØï‰°Ïg>,/2Ù(×è AôfddùÛ‘'Sï#ïÀO‰Ò-˜g¡ïÓ˜!À�Øaò˜PÏ­Ô]5ÜÏþ¢‹Ë,8|ÌÏÕõV13óZa»j-Õz>ÄŒóÝ„"¨˜È•sñ™dïÊ€¯ú|�fó]Qÿ"U×ÞrUÕ(£^΢�¬Þ/âb½$«WØñPêˆ}hÜãé*)ß²I¹µx @·�åè›;¥¶­8™…t௉ ~S:½¿Cã�ïüéœØpËÏ=¾_±kàVªÚ�.l(z¾šÜÍ먒P\¥ƒ”Ýɪè?�”-ßÎÃÍí-£¿>�#~ê2-^Õ_Qß3îž©‰rÎzá\Íê}¤[¾/ß& œuEºx«×þ|×>¿ŒQ!�aQT\D‘…˜’£ q9P”J:möûò†¨L:™ BÕ¾Jg)å-OÙnq>Ÿü·ü›uÞ¹?Øxø nj ¥Ïws¼!ýï+ë;vu– òæñ�ßÕç¾ð}¯x½åæx:ËâQkue¨ïk›ÓǦò•À†Á:o*/E+ Dd0ó¦Àd‰ú–g“$y¿ÃFj7ÑìÖvÙåÖŽìµ!·Þ7ÒnVÙ2åçF3r£4tãsÜ�¦yÎQm”ƒëhÓÛ×RY×"ñ®lÌ��qΖ1€¤‚Hÿ˜~íD÷#qi¶ÒYYåãX‚|Ï�IeéKI;bÃx;æI2+ Ö$éô²VžÜ¹Rð-ö¿]2ú¢ž.nÆäÀ|�Ð{ÑD³./i÷ÛŠöh5°ö·09›OÂl]ê ׂ0ǼîPÎ)1½¡—ðw×0Rg³uö„6âç°ÉÂ*o˜óHèΘìK�Ÿ9×ÊRéx ›Gž¸žbŠSÜ®*�]`dûA]!ª²1u8(×4t}¯õàÍEí+M£Ö*ýÑ…*3·QÔÜœ’!ö2œuÏ¢B@èâ…-{Þ#€²¹¢ûZè’¶9µ]þ³ËE/âbxÞ�'R£.p¤ŽÛûb«7©Êüù 0÷tòBù&ƒÁÇ£| Ùè¯]�Ç~íêrä^Ž„ÅVŽ'¾’üH8�ÂÇ[�ÝÛ[ ©X𵫲fÝÊ+þÒµÜ-Ev ÿäp}³�l‡Z«Þ�SBcÅÚ>ïDÛuø¯]ùKT÷­û%ªûWý2Ý·Í{ÅWK à6 ywµ Ul ¬…;¤ú*°a«Ev\þæÒ¯=)J]ó(`ëN6ÍòÉcIA:9±„¯åâGµg´QÞu‘ܲF†¿W?ènšÜª§ëbŠ«F0 'ÊQp²ÃLÕ�íWí 5C’Å04ÀR©¼¿ –å'~*¼$wYÁ¦àœää¼Ý®Ð¯<0U;æU�­Ú«ð/Ä�kÃÙ9Úª[«˜& ôŽu1i˜ŠÒW›¢¶ºPÈkÀ±i5EwrÝè-0Ò¹‹,üS±p IŠ�]ÀïË^;³ð~Û´»«=›Q"%øÕtߢqÚ!MÖ¬7˘H)í˜{MÒ&|ÈM†6׌�“r_ch ÈQ½sÀëü°·Q-¡Æ�;=€ŠÑ¤Ù­@X÷|çŽÐ(ªué Ó¿4£Ir;XÌ�nì㫲„__ž?}‚|Ïå …�vžæEçzTòÕ® óhåž‹sZ¾ë~#£™Ã�ÙÁ(j\_½gá­ÞM¦^zÅ,³z©/GSÏË�LÖľ3ƒ×#Á€QQ´ w›ÔcÆéºµ™YºnmÉ -U_Õ¦'€ 7òŠ[�¶œSx ¸Þ‚¢¼˜1ªd„éé�«¯8༓ ë{L`ìƒ}'+U}v£Ê!á�{×s—ˆñóäDë¦o­ ·‰„T‚v€²ÿÏ)“ų™ÍŽ0ÃD Ïñ;[Ž9�ª5ï=&çÆÐœ§×8iÓ[¹OµÎ¤Ê«.®lMYæyÎÖÊš1�îÌ&9È¡¦âšØOvVa’Æñ™+�òSYXtÌRôôHÑÃå,M�Yr Q·#Ý$ Â!  LÆx\U4¬F ©¨î!eËñÒ¤åÁxc �å÷­X²æÒ0pm.ÖNeiëéí‘­ú®U-?y.S+b�5Nô·µBú0XÄÜwm™O{[^2É ûqìc‹¹�m_Ì_£­Ê÷ò¢ä~U¥sö–0 �9þéyïŽóäø;/Rkè]ˆs„H±âÛ 46šUC#O³ÖFïþÃ7þš7‚žÍððÿ5,§¸=ÒgCŠ iºô”¯IðÄ$ï||JÎãÄžGÌË™¢Q:„{ÅG­òÆ òót>áä"¼Ìƒó…jÍcÅ×+rÝ¿^ ÒL4ñzEÞöÁÓ< Šó° On ÇX°x;fn6ÃÖ&— .Ìž¬O‹”jª¸Š=l£gôV ÊcÐÈ/ ??\Ê3£À‰ ü®¨«£5Š‘ÒË—–Ðá`¾M3ó0‹B¼0¬©¢0¿ ö9$Ä´1IgQ†‘u± àyX¼rÐÛãê5–Ýù8ÓÂèjÎ褞J|’ ‰."n=ô½€�JÈcr{Jòj?šÎŠËöiG�DÃÐô Då‚ë¡·¢‹"j…Z…áÄ€‰‹„› `ŒCzz¹Jòà+TmLRZdÀß¡¯xC‰ẠP¥ L3 =z‹M_œÇÐj˜À1†Hî/pô4dX2бKèëÚ›Q ¸SÑÑS`1÷Å%�/èN+�¢àëÍû›°�;j¸§Œ‰SàtTd雾]âqÊ¢w@t,™-6&¶Neà F±QG+ë"܉Ü(€ˆË¨è™1šÚøÔ=ÿW›Òñ Ÿ±ê�¯À �²é¸Ýz+3�]?�®¤ïÝ…èfŽSë«*Ø`~iº¿ •[G7ؘæÁp>ˆ‡ÝAôŸ8ÊZ*²['0Vاç, î�Œú4»°ÎXöÆð6�GHÊâ<ŸÓ+á©|�E­Å"÷ º¸ÂÄ 'ððsšÙ¦&xúò¹XF[Û[�Ú=c|Æ)q$‡`õþ0 P‰H%J0Mx±Ãp ÌÂÏ£N€‹W_L[7äE6Š’{ u4lËÖ�76–Y¥|i(=Öƒƒi\V‚'GGìªß NIa iŽ{¯ËÄõ´Ljrç{(„ÑÄìúÄÚ ëøh¾ÛX®: Sl±ó³Ãky}ÆAÚ‰s"ÅE4[—?×i¿åë£èïäûx´·¹µ±¹½½-ÆT¯`=ا]+Ã*x�ƒƒçÐO´/ÁÃ<ÊÅ.P&‡eˆº0ï‚'š<#‘.ð_n�Þ2+V2{þñÆöc¹å¥5bó¥ msGŠYàygR2ŠŽ6‰�`ô8�‘_g»ñudÚ×I/m7�‘ƺ#R�åBê\”Üh°zfs4pȈ`\.áx =`ËBD±¤q;�ÊäSìÑ)ð°Ñ1«@B”W¥q±–ó�N#šÄoÛ6>é�Šåë´ìà”†K¼ÅM>�1´¢ð§¦2åTvNû ñïß�³Ú[Cãž?L…2³â¼«³�2!dzõ·Q†x‚ÿŠì‚�ÀœÚôGÒEš}uv�F˜Ø"æÈZ.i<¬‘[¦8ÁéªôDa»×w0ñØ÷˜ÁÂlãž&>£'†3ƒ9 Þ¸•®·&ÉÊß…›…m;<ÇiÄÎøz©G’R4F&––ö¹­RŠÆAùe°·¬­©3K„IæÝQ'¹â÷¿~_p¥çܪì™à}:«r™!¹vJ#‡{®|Z›L(…±!–•Ï»\�pÏcØIy:6ƒ­2-NH±2FÈgÒjÆ]G!Ð��=/¦“ßχˆy”aåa«�§(¶Hh|A›;ŰŸ1dÇDL»î…ÌóSqÉQŒÈ=¢ö˜bŒæ$#Ë'c8Ê�sX8“è A2Í�M]½[½¶ KŸð B9Ίºww]n+ÑÓ[ßû>©6?Âló©€É:Ö¢²|@oˆç�üT5¥h^`òQ°¡ˆz¤U¢cZÜD*ŽA×*ºŽX*±d¶/"ÖV²ô“D1/Bf=äî‘G—ì-¬”Uñ]'´éZ‚¯t°1Uvq éúV]”zøƒÖ×säqÕC¦mLîmFB1¼›îoµKíæFÁ“zÇ•H4 b«‘þ–#>�òø „Ñ‹x\tAä�3hŽtfUu@éŽæÒp{õ]&J<Å1X^rÖÏé�déÇz[;8�G¤$Ã/¥I¡Bîÿp"¨,ú÷<ƈ†ˆIØAërñÀ”íiD¼´T(¥Ñáçg“tNÔk'"™íœV xÑú gH¤ŽK ZiÈkÔŒâJ£¤ÊZ¤‰eƒ$êe¥�R$ïºÂ$þRêí—æzªé÷XwÝÈÿ礋L¤«¤v5çr9­j4fEs VὬ®Çï”÷ºÚXÕ;X¡îk£­3ígGÇ-”¢ÈD¤åæ[ %Læ” ƒ+Ô�¢ˆM_MÕÝIú¨3IIØ(Ä÷ÃIÊÊöž:±ê´—b¤’8aÕ} סR‚Ê,(ô‘zÑÁ¾‰&c ¾èÄ`<µžš_%6O¦=0æÖUÕ”°&—‚ Û¨ÕY˨~›úÜü*µ”å%¦–9%ûx3„–ÝO³0‰Ê Ÿä™ª>k•Ô�³8òHòfV§`Þq B˜èœq©¥æšåz'í¦ Y#XÓêò±tç Ù¥@†6©6rKªTwdF6Ö!êzUì™ãÈœZ³t ÃT ÔÒ†ƒTyª<y Ño¦i§,ÜÃâ�Hÿ׫^V€zE5¨21´æÕus9J[ÿŠ&ƒtž%mÔ´ãVDö7 ßÂ94™°!óµ‹&Å¢ßnØ ›ž ¿ª‰qY“Å3¯‹…3bH'؈?¸9u·|Ô1 Þ—‹ /”E»¦íÞ¹èbœ($ Šä[áØ¼²ÍE$dáP‰ J^4œZŒø©�Gèˆ?=A(‹0J[l4@ÛyŒW>$8ðŸ BHwÐÛ Þ¤§0’S Ã7!HOtÍæRQu&ôE$UNP§ZÀݟ̦½`?¹4®òy38or…™eîÆ�¥(¾1á¯¸ÙæŽâ�õ±N”±$,‹æúk@`T�@V?ÈÙ‚BÂ…Ž±=FöëŠ+6qyÈ÷‰ò<S|ÚÓ€L%×8ÂLiC�ж.¿B/^I!Œ=â£À�Û'²Þ9’S$¦ŠJ[ö%§º$œµ§�¼3IPã€SO~Ș ¹WÞ“ÌM8”9�iGmUýL L—wîû<[J�k!^¾Éh×ÁÎÃŽ480ÅÜ §&b‘í y³ŒÛL�g^ZBBÁÐiJô•nxÿÝ ŽÈ\Q8ÜñÖ¦b°à(Æ6ÝáèûG�jŸÒ�„JOy‰-Ð4Á;Zà/I_“úd18±ÂÃBß[‰D%ÎR5nŒ5'j,—Þ5‰œöÜ1gÏ4“¨Yÿ ~’š4YÅÇuÓ3ØÜÐKÅ‘JLŠÌe;§Øme%˜¹ËÞDѦGDÃÃ814gŠe°0÷$ø ‰€•‚ðã¤,¹†Ã‚tɰÏÃdùZl¡šoÁ¦»¬ŒÔgI¬Dï@nÈÙŒ$VÅwk Y¢Ç£áXxßè ¤éŒïUÅ+_¯ÊcY+Êô]%©K(ê¾Nb´ÇÒ¾�gr)Ì’0œÆi âeða£ìUHi'“SñM:ò¯£3½éÈÓ¦d¯W0¢ˆÈåžÎ¢mïf¦Ž¯2°‰¹?M�b@xN‘JóÔÚn¨¦ÊyJV’ÇtïÈh¢z³(%c6¥�Äõå…ì‚zÄ›E>Õ;„Ö7�•]£q¼,¶èKê’@#ã˜a¿Ë‚±&ÂÑ0Êsôx‘J4uçš’ÍÍ$¥+íœÅýžÅ±uö ùÞ*n »eXSÀ‹·únœ~J!˜WG_Àä,ʸ>VÙÎɉ36J+èêœÓS„z2 ¾�Úd�hØò¸÷Å,TÇm:ÚR;9Bë1 Pr­Òõ£¥ 6ÛëhÍ´;K›1ÙõˆÌ\¨ Nç(|)°p BQƒÇÏ Rv[Ó$ñ"Uê´U¤IÖö °èB §gb‚l…1AùÄ¥Z!Jûa¯Ó½ì‹ârE*EîQI“&Ž ŠÏV3ã8šŒr­A£p`ô°+ 6¸¯¢iúVpJ_ÜéÒ�¸8mv€?7�"'ƒ·‘€'�|�N IÞp�Y\À¼(vöRÐÅåŒ,­ÎB!m©lG¸Ãä5¹ÁJáÿM]˜2 Ã%!³f±º.×ì½®ôK¨p%­ �ÏG´FâÜäÚD#¡OÐ .NŒ/²çS JEÔS�6[? ²9]› úKüiuÝ| c˜±‘l„ �R¢ R÷é£Zts*¹‘zÔuu7å5¢º˜(—Á\wn6)J Pδ嘜¹%ôÌ�ä8 ÕÜé‚nžJ@4q5ìˆÖ«l- I.C7Ó�^·’ã¥C…ÌÖø†‚®ÄäÁv*GsÊÆC¹ÁËŠ&BÁ¡cSÉ(]‡uŠ—õÍ-¯jaùûàÁÖãvÏY˜4 „9^�¢wшì´3ÍÔ�LJô©Ô,‘&…í:X*s¶qªÉ: /X_¶!-Þ¨ß!ZT‘©“°ñÁ"B‹“49Cñi òɇDç }A8¤ðÇÜŠTYbz º(Œa³…eÏ÷ aošò_4éC¶ùÞô†g1šñmo?zøh{™µÝ‹i¾æßð,_a³<ÁSNÐ`¶#MH£7M“¸Higa#c6íÃ;/Ôú7 ÍXàÍ�.É)W´ÂwÙI*šæýâ ½Ð,Šö™…‰Ñ¤âsÕ/µQ`�\„ÅðÜ´ÿÑò„¸(áæ3:¸$±Ó´»§Nð(Xÿæ«oðò|*ÌýD+¸3y}K¡ñY<8ÂÀù 4@–{ï�¶dpéŽoÀôÂAR<Ÿö ­õ¿ PÕ½Î+'T“±‹þ­Ý…oCNØÛ £ÑÎãG£­�Qøø›nS®+gZØá%xO¼jXùQUC±‹¾’bꢑ ³¨V�ÖB°¸,¶å£ ¥} I#0Š@èîr¿éÄÄÐ$ ¶C•ê/÷FŽm”Ô'õC!/w<í�= œ{8fä¸*ò 6åϬ$ÁXú]ÓŽ„ÂWW9ÎYÞ}g�0b gQ!.ä„Ò_@6�q<ÎÈè…Ý\@DRÀ@Ú£À¢ YF�çób!^o!˜¿L‰`z 1Êî›S8¤­"÷£'§Ž� CgÈbHÛ~=|ʬ¨Þs©`+Éd ZdÐF¤cxa­&GzÛ˜. X*’1M�„ÍÔp8ÂK\C£“ÐÍrd^ÚçÂ@“£?=qÏïÒ²M�l‘™ÏÑðVàúÖÃG›;Û�ɰ‘y@\'”æ²ëR�ÃpРƒæžV¡ä ¿“¸„îý‡Û÷·¶lÔ� Œ˜Öªé麪‡ÙWÖª ¨ãøë÷5XW¶7…áÂjéWõ¥ÇB«£Od1³¼WA�õ«]Ÿ‚÷^%ék°©�I$o×-Þ99–6Õ”µ‚¾©Fn‡pw´¾]|n‘µû·æ%†Ü ¾bõ‰AbÊ6ï‚&‹+D ðTê=| •cï•‚wëŠ03¶»(²?‰ŠÐì@xÀòÓ^�c®³æ®Ë@­÷º‰ü»&)ß/YüI-¶¨Œ¨B$„k¢‹!š×�í5I×°ÙÎèÂI^DH+æó("õت0ÚéÚŽÎ�Ú}édv_{oÝBÒqO†eRd�ÆÂf ¹áp£Â’” ‰ô¤ëWÔGLÓ‚éáø•VCŽ\¹áNÊšº’ë«'9•Z3Ö\öÔ’³>“JMäC£ ÓÝêv« ãµt¨~{ײœÑÃ(Çãžî»œa &}¨mÍ\(U�:¾ÅdÄ6jë¯×i’f}A“TæöšäXIõMrx £É]¿jÉÛhÒ<×4Ú/·ÎETó¥ZŽË¹ábæî/)Ô•^XúÙQ}ÙA·£$õ³<š�RãîG*µ‰LI7-d+¸+Ê#™@–7š1¶¦‡fê’Xô¶»ßuÆ"öͼUuqâ3Q,pæ*oµìu1`z¸­V®6o´E¡dG©¯ö‚d>±²¥ë¬9‹è€1DŸk[ÚüßBT!ý_MXl,4]ÿµ¦~Q|zDÆhøƒšFôa±aó«cíä%xO—±¥0ý_"îü 'ìâf¯Ãïä¤`ANlD†äÚ¦–9~±’õý‚áObz�XÁbl7¯-ìÒšëô¾H“²¾ˆ&Æo(cýTW òK“+!W]eÉY¿,•¦»[£Š~Ó!§ZQ�»`¸"H{ùšu:¾�ŠO8aw{˜÷tòVCäÇß Uù¦#\X¡cÃØ Þr£AÎEl„äxCqá€3U/mg9^hÓ\n–nˆ…é;4+FØ3C6És0G4Î$’DµJ™"É.ß­ÛqÐjI©Åò¦¢u੪¦É†_#×Q;¹2oF3Ý«¤kJ^Kš4.IëÈ¢>œ<„Ϧw�H»y* ¬è�+ ópžÙ!7P#ÈLj1m&ІA1+H©‚£dE†/kWÄìY%¿£¾är–ò/=7£}°Í*+¹Ý¦J­°ž…žÅo£¤Áðè&×nµn\øq[•�<1ò"w䮚U*Y*ÒUñ'à³Eèí“:J²I2„É×ïïaÓTBÙ ¸¡²t˜+Œ‘‹X½¬,Úfä*”§Êÿ_Ø—ÓeC¨5åÉ|:ˆ(òm˜�ÍåÁCÁP .⸠àH»>›&1¬dǃ•."ðPuV׳8‡1¡n-§5@_Èße:@G0:ËU¿EÝ,*æY¼ήD *=’ÍB¿óùÍþÙ�d²õ¸ÄpI¡O‰ º!ù›B •êB5Òûå½^O’/nõP»Æ­ÞˆÛ•ÄH5”?ü¨¸jP1$ñ~·ù|Ž¢hÖ½õIÕPï~fu[·1½ÚÂ9ÖEos¢5ÔëÌö“s(óÅ<ÓC¾i"Žd(íP ¹4¡ ëÄk\Rì?|È[)*ÍŽø]Œj@5Åü{­ãe̵NNTœ2�Ÿ…˜³€*çbÙäÚ‹ �Eæ‚(8^BÐ1BÆ:drZ`š<8m­¾kŸ¢É$�> Š{ºúÎ ·Ÿ\^ÉË5œy5ø!áE£¡ç¬^mX%…ÅH UÞÑ�‘µ» tF â=H’A:(bƒ$ã ÉZ;ÜŸn‘âíK?Ù©xìð|¢ška­µŽ¼-ì´å•¢6ƒá`~° f—ì»¶µ±µü”¦]x­DÙ4ÎsÁÏ#X"gY˜P$ªq‘YôðÃ%uØ@ï2ÀPåHS… ½‹~Η0•‘­Òqq�ÖÈÈÜ„¦Ã˜L…$OÁ¦Ëä‚´ØKíHTy½Ò¦¦pQLá�#ßëÐÚ$‹8dÌ7ÉEˆ¯u,+!&(ü¢`4:ÔëÞ;ÇcüÑ góF·¥»>R1LJC�)#Š¥¶Ž¶.Ñ„»G>Þ¹$±²—s �©Å…@ZÎR@ÿ¬Åܯ1L}L‘Wqø¡‹ZþÆ]•„4E[ráÙ8"i2ï«éÄERŠJ+ç>I ŒÈqÔ1¶«žrñ*?Ù|òë³ýWÁ/¿¾úååÑtã)€~qøâÇWÐÒÁóƒÇ=hžÿ€ÁÑÏûÏžasoÿWÉ+ìkðäå/ÿ|uøÓÏÇÁÏ/Ÿ==€‡?@÷xvÀÍÁŸ<Û?|Þ žî?ßÿé€j½HçÁ"Š¡ÖKu_0$D¿=OPÿzt €OöŸ<˜³¥‰ÓmIDžad‘Fcý,ϵ´B~¹E†Î}ä_˜àŸ˜£±©pýëL¢ » éÚhšjˆh«ÈÓP¸ŸÑ[TõŒ‚1œ.¤’ …�²€.V<Šñ’l‹ E"Øêh”“LO"½ßOj—t‚2€òÖ‘à67¥Û!»ºsÙ¿:§úÊî9gÛЃ‡õ‚£H„•UÜGvÀ;픊\ÁÒþ›üFdoMô u!ûÅtåû®ù¾OÓPö[‘Œü^=#=S!K“smñHWðè#,BvŒùVE $—I8E%tĺ³qý²g„²5Úž†—�ŽçÇñlB�>£)°Ž…ˆYo²L(z.Å�†ï:¥–¹Œ²ˆ�p„Û�\Gö2‡T¬Õð»Dû-ŒÒl· åÅ/u ŽITCPÎTÊŠÔlŽP‘Kǘâ)ÕhawÚVÜDÛX¼ ž#C èÒðTø<ó&ºäÀ¦ÆÖá´!:¬e»'U}6’ñƒ:´½´Í¸¤U.ÅÚ�Fì¨yëû‰ZAît–÷=vE·.c·âJÈ#<·ë¨˜ìlûH¹k«�‚ÌxP·ëìq�(´ Ö<ǹþ æ9L¯)Èã�\\ü�¦¢lu ׊D[n³‚S±{$tÆCºbQ ˜ì$GËêaI�èYŸ§�ÞÀPP²âªÝ>“À׉6ñxA>ŽÁYÙfˆEj ÖquQiXü_“:-ýã.¤û¹Œ¦C CZ�½àg޹Ýaéå‚/(ìBÂ2ŽPøXdQ4K)Æ´îÆt7GO^{‰­êh 5ºè�ÜGÉA?ëk†ƒ kk:Ù»‚Xh–�«O�¦æ£'VÈ­ðKßÓ�U�ƒMíæ®(õ´53÷¸ˆ;ñ·pBæWÏ™^«ÊHš—„V•è;&|cØæZÆÅ ,ŸrF1e‘\�ì¶rÐ¥!óH½µµo¿&x’€�a\CÑy,ÎãÔa:ª¤ëÍî}Q¸-vîáXȬøz[B‚Fš�Žð gi“|º±uÒ¼ ÑŠe ñlNä©kmÏÞµƒ½ïÐIÀü¿¿$º´©Ò[¢ôV]éR�­…56Ju6T ›œ½`mÖŸDÿ „ºI…ÏÖ6q¹ Ô XîׄªN¹¸–û­NÛRéV[¼ÅËkdž‘Ë ÕÅ$JΊsóý¦ÒêJÍ÷À÷‡—œ¸Õ�6+@nûA6¬}ß­MåUˆÑ–žmyžÝWûÐS¼ao¶n­7›‹{#¬ð˜Þ¿^9QáÊ|jŸ f™2¬‘&œy8,ä^}½²ðn/‚1Y¾>Ýœ­ë|¶SÖV~Aùƒù©§ýé΋x’{< °=ý²þòY¿»œ¥gY8;¿4¾Z%ð²ÿ<š :Äün%!¼ƒëiëæÏh·GjH2}W‡Ö�£i¥ðÑ«¼‰i{ŽGË=Ž®ÝåG<Ï­ÒLõ„%µq •ËèAó;ÕïÒ‘E·ãáphÜŠßyï䕪î¥0M²û\2àn¶+qfÉ'?ì¤5€òE·Ú‹—¸*ªú£¡ykcó‘\ör4æ¾0JWmŽÒîXj¡ßâ,ø¹5^ÏJw�;ÂèdE5fÅû.¥à³iˆ|UCE>S{q.\×^A"­]v=mýE Ò¢Ñ7µŽõEçj ¨…"¾ø èÎÖ2·³þ¾œÉœ‹UV]Ò½l–Ï£Qª²š‰yîâe‡4’#ßhöÊ1}ÿ¥-®výÓPDþãNeŒÈXà�É_bô÷¼E¡L òv¿Ï‘¦”å¤êžKÝQ!�ÈmIXí@§ÅÃàºÀ9å2J„ ÓCA=Ô {u=¯ÔCÝGOÄ„+-�ZÁ|Ã)‘£»1´‹s®+ÈKé ïåž’YÞoj7¼ÊÇóò`ä±ÎPð„\Ÿ« Áœ‡eáûÂúÁ�Y=Cîr¢Ÿe¡VŽ�Àf8½xy|Ð*²ðmœ¿ çãiˆÁÍ£|¦d¥1‹†d˜ ,9)Ïïœ8r5Ê×)™¿ª~DEÆ$+d‚RjQô]J5̆  ”“*‹„)©1`~˜� ·§”ÞS…íÅà�RƒmŠP¾*z‹ˆ­måA¡°<Ú̱J×Ùº«œŸëþÆlXHcAÌÖ…ë¸|ýàþ'fŸ2|m=pJNØîöëÁþÇE%r¤¹")ÇÌÍÓ©m¸Sߘi— mUŒxµô¶±]3­[ë(š¤]örÛ­#ˆjÑ”ˆ´�1‡²éî0](ûl68¥D]ûˆ2ågÃ9O¨’…ôBì䊑tf—-ŠhÓHä3�X’qa¨^ÅÅDÆwðq&",Û)EbT~á–º"�¹ Vâ¤K½'8Ò_X`’8ñõ��ˆ©Oö1Œvb'ˆD�²Ì;1ˆ0XÜ©‰çS¥56ÒWSL9–v”NOV:+ìP|LNXÊÈÒØ £-žjq‘#¹ ÉA©š‰È"¢ë뚲Ƕ#“uÁmz–…G€½ÀæŠ6eË¥ cŰ«vßõ8²ÚÚ·È®UQ‚挖Å.Õ–æâ±®FØûL%5¡_D6k;~R2[µT(PÅì›/Øq@üáe`¾f9]ü©{�»jV.ÀÜ–qÖ‘ûÛS•º õßÒÝšùªR§ûÁôµ&¾zVcÎÆ31·¨ �ÃÚ¢^Ô•kˆ#ô7'��ŽÂ ÷²¿:¨�ÈÂ! b™�N~:zшÏY‘©;”ÙÚNíàóê’šR#ˆHSáUÞdhÁÉa”3BB™â©�²ÖQÖ€‚ÓB �2ìôô©<›¡¿~üõ= dq<دùúYy!XR\�˜&éÓîe\£ì®´@œ³"7–{Јé¾&?“¹ýE®xÇaEð‚Hð‡ÄÑ‘¹¸Ú‹Ò<‰,íUQœ!Lú†‘KðþV§Å¡ªvÿ³úÊy}*¢›žªßÖ4Ÿ�Ä�KVõ?Ý$œˆMT)�»‘;@… fà"©Ñß°»&óÔÒÀ+ØR÷ˆ«Z,R]“êßà[YW)ƒ~“ËWòÏx=£%B¯�`.²åùÓ'†Å†È<�”Ì+Ð9ß°íeË“ñ¹E€‹� §d¸Ð –¡ØzFù+!¿ù»e•ô>â\Ð}✖@‡ÝÕÂ0’¨,®Ú¶. $ÿG~TÒ‹ƒ‹P0u²* â‰'èLÄÞr’Ó8¹‡“4„ºÝ)·«ÆU—lñC^{àç¦WÖùQîpý!²°¼ÿ$©ª¶.òßM�I�²AØî“©•Á߇d‘ë°'*ùOM+îæ¤Í.SÇ Ô£º®NÞ${ÉB ÎyT�¶ -˜ÚêÚž¨m2®¦‘·xèÆ°7Óy N¢÷ÁÅÁå°ªr>à:k�ðÖPÒŽ 5bfŽms¥‹¾¡�(8µ^*²¼¨üó(eC‡óg=FŸÎD·*räDé0eRO4`‘Ê�ÏŒ½ÜRéì r†Ö–F®¨=eÈFÚ“[ô°ç_¤»à¾�êµuá ^¸X½Å�YFØò ÃläZò೺j£áºäκ¥úŠW/Jç¦/ô²^*@› «mê¼Ý!q"œROø]«-ŒçÝË¥õ±ÔÓ"¤oYB»xƒ»“˵jZª-{”¡„’ù4XÏ»ü<¥:,�Ñ{m7ì½ìNzß1»/¶�¯×z“TwCKêhZlØb5FË·8>záj†+ÖpOœžõK¤²§b)›Ðª§¬¨¹%áJÚáT ×kfó Ú0ywfÉz¨_¿ñª­�ªvO} åͱ°95€ÍU^ ï£,õR�n¾Þƒ¼…E_ÑÈ50ó.bY¯Ñ ¶ {‚kš(/áFMH¬VA6×ðB€eÛ½ºù"^ïV°¯…Ï7Ê1ž_D¤�*"Ùë†Ýr—ŠU¦]Xä#lX…Z¼:»N¥Âç�j²f…êgýƒ‘Mœ“wAQýËZn¡·úÞ8R¼pQi¦†ÅÓ”ŸÈ(5ýmÆWT7LÍëøß:þ]{£­:d§Bm"þ¡êïoc„úªß*B›ž¾™]ö\ð fé³@¯òT¨\ NIËŒ^iDšë?,¥Ž,̺³ (J”ç®ÚÀyí‘ø�îoGü÷¾UPM­ŽaG-¼8ä‰#/Wå‹$ÔÌœvùHÜPì²^K×–î$m�RHñ ®åÑxdX»;æ­3¬¤,³|W{ŠéßpõSpò”U›úÒ,wÌ—4�1^„H\(ñQxÑ‚Š5Á1š€4¬å@'ÆcÊp(S‘¢�i.¢LqÂ'Óòè?QQ DÁ–w±0èîé!„hW7Œ»�²yÏ…Iâ&È'iaåá5ê‰0(QT¨`BºCðäÔäB۵ʅֳX—–¢¥tû0Ìâ|i›S® L1‹ TËt7É©UáÛ…HX�¨íçìN®®Þãidæ�Gó>©áŽ3:Æq‚ý=LET‰¯£øŸ¸ÒŬp*õ¹™¯RìpÕ^ŽÊrSL>KQqFQŸ%dªÌ�3 úÚígé;\‘9pÃÜap©ÛÀô�vÔSyÍc÷ ƒPæ 2¦ÕÚpz—tÌ2¬u*ßó-˜S¢{QvGÖ.JzQ=Âdô®SI¿¤©þ®m¡WéøW Hëk^ÐWá‚W Œ¬ö¯})ÜPîþLåsž¿È9WÎñÍÛ|ø%hÞ— y_‚æ} šw'AóÐÏàD iÖ¯l2»då×�Qf²$èv©ü‘´Ø\ë!«ðÍšd&Ódr©b²Ê¸XpÂà6è9ú<áøÂâÜyÄÌñšGF¥Sü¿ï•šÖ-�ô!‡Z~â«–ôß+:€Ö9&RWÀ©.Êbýk>P« a¸1–WÑ 9Å.3²’õ”LµoXqò@“isWí^_vYàîcW[LÞ«�$‡ÁúÖÎö£G�o>ááHÄ„CªÂÕYM«¾WÉMºƒ’$‰2�,|[!ÆßS®XÞ Æp¨€Åzûñb”ó×¢9ƒnÐÃönߦTŠ‹õ(–Šâ¨Zæ˜;�Éá¨z8�=^Cv—PKrCAü�ST1wò"º¬u¼ÕÏ#Ô ”–ÃEKÝè*¾îÊÌÈ‘¯¸ÔþЃƒí¨dÊîˆ}˜R]«@˜ÉÆd“Tùvðeu’W F]�æ(ѸFCtÏ\Dm‰Ng°À6 ',·¶ñWÂ1VpEGÊõYb+‹‘%�­<¥ü &Äž}oìšO‰TCíǘ1Ôœ Q¼k™Xë~׌’«YDþ|};š½mëçì§[)ת )FÂg+ÒZYH§½8ÚÜìŠ��f|\‰Í»¼[Y-[h(‘‰^œ›´£µZ�Šr]”ªdÈ»ºšÖ+;RÈabyTïVÔ_zØÆjZjÐUõŒUwJj¤¨×„‹ü˜íTÂ[‹E#í2ããÌÖ aH0ÿ{`Õž—»Y´nòU{—[°�ÙVéÆ�\Yé;Ñ•Ñzj|bvëZôüÄà*лÖœÓæÎÎæÖãû›À9¡±€0:Fýæ6ñ•¢:[‡SN”ÇU®Íöì_<«2ÚÊǽࠚõJ�RuâœÐ$ÆI•µ…‹®"Œûö0—%¦S¼ëOEîedíÜñ @¨½D¬Æ|µxû ÖRz‘?cÚ÷'2íûs™ö½nX)§ƒÊ¬HzŠÌ3}¹Y2ý�`|ù–‰ëk_¯‘R6jæsÊÿ²uÿõ -/¼O�÷X�B¹ÂôDÞ�êjз__²½ ª2aÒeH1™+kWÞ§/&Êöü•à-¢Í¯<êÂÀºùÛ³>ò›]Á6œˆsƒI[ožü{žQ ãÚµ¯Ö$Á|Èo€°5ÉÞá†àÙ¥Åòü˜»%*W¤³ÌU©êN£Q-ÀãPz¾ç}AY-^¦ìªøÃ¼(Ò„wã®AË—d’<>�N†c7Ç…W!C—vçÙ¤KóœÝ.­u�/B\É| Ý{0­æˆÔˆ’Aë¼(fy}¯¦fQÒ‹Óõ">+Ögiα+¡Š°ä0dkBÓqnœ™‹YckÌ ßžEßCi½^AÐ}z¹­}ûn:éüåþø*3&í­mö6×x‘ä{kØsèøÅÅEïâ~/ÍÎÖ·666°ª(Òˆ{ã+¸ùøñãuz E÷Ö@ô] .Å_hY÷wo-‰.‚ øo'Ø"Ð}rÉÜ[› Z²5ºø!EP²˜|·�·qÅ+ÔÞ Œä“£þuí/÷`pÃ8bD¨ ^ÒŸŒþÅœ–{kþÍ¿¶ÎÕq°ð õ̧¥‰*âQAUL) j!2‚|ë°†»©¥ ¾;µAJ…†}�ECÒñÿšSÚ"¼Œ ö9D�ï" G=‹ë&´kñY«Š ü€ ‡�"ûª�Ú‚ÍB¶ÖÁP-×ê)[f*lÅ…Ë�/1 Êl¢ù4¨*%¥Ê"Tëšj–Ô ¼×áj°zjÈVá½µUUˆ}㮟ŽÝš/T”%Îö†·)œhŒ‘‹ÄÕŒLÿfÀî+£¸êhï±ùhc�a,~ñ©ÜŒyYEá,xqBYÎ24¨@–všŽ"o_°“=ÏQ““^|– ¯a‚AÿU-“f59”èØE‡}‹|®ñH[<̶ˆõOþ§5 'CK£|t·z;mK›cQ`[³aK°>jëËÙŽ"€ à¦l4�Èâ᛼7L§ëyÏf°´(DôºÁv%¡^7ãž[Ìã*ó�Œ fÃóŽê¿ÜÂè]_ò—ô«TK/ÿ±¨ xàs šª6�ºöfG–î›ú:<Œ'^7¨#`|+_˨ã¢oú€”cT¿EüÛ¸V—qÖ±óA”ïػ]“ÈɲܸC¢j(߇;n@ÿ+Ü› @Û²óB´HgÝ‹xTœWžEÖ„|ÇõíO Ớ•²×XâYRBÈAP±èé&°æeýºEg…]’¶Úk‚]«ôçÑŠÛ( GñPÈIÌáé¨,T*ÞOBi!'¶Ô†GŒP9P\ºxî la&ñR¢bcã/â‰Ôý�`¡0i©=jo 4ÓÉ]Àfûαç¹|mo)Rú2Ó…x)‚H÷ƒµµ]‰Ú]XÑÀâáZ5Wõ«ˆ!›ÃnÈÇ—Á� dŒÓwÁÛÇÛÂ}Te”áh•ž¥F ~ò<@Cö�ÛÛ�î?jÛ.µ–=D·lkUÄ©î¢b¯o3`7ºO4-‡úÁ“0yæÇ:?Š{'Ë[îq>§k­sÛ�ù¦dXnbã‡HãA<‰‹KÍ’ ÙÞ LÒ*D,¬ó(ä…ˆ¼¹NïÛ'¯[ÂÍÍKéº�÷-h‘¯Ÿ§- {Ô}Y··õ[Ñk,3Š’Ög¤R’”‡"m ÉN`ýÓv·ÞLnOyƒ×xÈ» ö:çú!“ ÜY8ÛEþž£"ã’†Þù¢-óÚž�pجðð`sS Zä_.}lRfq·ŽšvXŠÒ� bÆ8Ž&#u<ª' �é­Ê[¨QV‹ª¨zä+/Û]—Á¡òrŸºêÝ®V\ù#ž£q\W͈W¦ßT�×þÀêH!â[±Àä¶0KÍÀÅ3eS²®S:É\‹ç1¦NE>)Ê2x6E=ÙYä�Ðî…õþZª-ÖH…•)¿ûZÆ®ÊF;U…hn×*E(KÙa«12ÏäÏHU4´�ª%Ñ[eºçiÿ#õM I#st™„ÓxHåÜ�èö°›£D¤z«6Ñãêp2·ÿPäp‹ÉG(l'Q(tí2 �0µ0K¸Ö*ûÌ]ê•é07uÄTøái’Šü˜R%NóxRt7[ Æ uêͺg1lÚÞ¬%Ü0,òÓ[¥ªm�ǜ͆;ÈõC)³J•:ŸŠ­Hw²oÓx¤MÒu¿´ͧ³œ3ûñÂÁ¬nØ,Ûp¨éi~fT’ï:Jã ( +]òÏÞ3VÅ•$Ð_ŠX3‹Ás#à¯;ZX˧iZœ”¤0 è‡=ÅZX«;ª5¹ìè©¢‰%ˆK$R+ T€Æ»ëu”ìJ]¨øpùnbd½Œö>™Ÿ;0ɘ^\¯›þá_T6 ”öÅÔá‹©ÃS‡ÿ%�ÒJaÑ–² mNíš¶Ų�ÑdP³aÓÊž©ûÄë a»"a |)ß.e† „ŸüU‘졎†ƒBˆÐÓUÖ1uÿJ¿;Õ᤟‡3œ o±¨©“E¿ÐS•|ú'^þexÊO¤�íosÞ¨* ›fKT~)ªo´)ba—Dàu§Gª-ùM]…R _vGü¥.Ðõ¸5Å«qjšÅrh§ˆ=°šµÃu’…�°¤!Ç08·æ8Ñãb�ùk e©à5«ó—¾ˆßÈê¼iqä¯t:@+ÕoÙ™¶ù]3üùy<Ü,aZ+ÓM9yî·ð¬4qaTwæZ—Òz>Õ’œz"ñ1G55b<7Bä;+I6ß¶Z~�ÁÞ™Q¥²®r³Ö Ê•`hÕðŒ+à½.Ô23n,üÓ"[0]ñ¹-óAiqÊw¾|)PGq|£ùºX�d¨…Q œY4V°�ak“¶02~¿êÛsj‰_ڧѨ¼+åKEPâ°™ááÍn™Šï–÷¨,…NÅoý…ƒo‚Ímü7š–Ûœ½Ãë¤,š¶VgïŒûÙűYTqÝ‘r¥ÜŒÇ¢–ÅLË^'º‹¢¹@ƒÂÍé"›>±RèIÕHášD›ªl Ÿ•›Òè&û� °›iô®¢\¿IæU "-ò¦!�9Rãµ¶h“¹¹^y±LqÄ  - o›pXÕÜ[‹ Ü_T`{Q��ETn¸ˆ‹Iõ(d�ÊQ ÒÑeem|YYsÎXáYQ—ÓT½ERŠ#sß—ÙŠ§)�N’ö1¸€/ ':ÕÖA•g€è�¡ÔÉ2fFå s�I£UŠ€‡¾ ø]Oyü‚µ2M°ÔЪ!@ þ@�¡$¤¹§mŒ®³$6{w°"L>¨)›MŽ’­Gt£l"Vî % “Í&›d냮“ÍN°Ñ{t§‰ävoa�lÐ5r'KD²÷·°<>üÑr7 D 5õHÙúô�²�8¹‹=#¹›/“û×äѯCE6­ôŒ¨ÄÇ/Ô‡RjÑ1„×›¯’yo-\"×ÀG»B¦+iZÊRNI×RfúKÚ–2k\Ò·”ÙÄ’Æ¥ÌL•t.eÖ¢¤u)µ%½‹}ðXZ› [:—9:ggÚ*—Ò"uu.lt6‰ñ«Ÿö.çgMÃ+ý”Ã��ÑÇ>v£ÃÙ"& oòo%ˆÕà §xz›—AÚÄ<¾Ä¶Íå‹§WjU+ξܺÃÔ¯Æù�¼©úzf¡Wk8Î52Â0ŸH`¿·O‚¨© —}U6œ\@Q³ Dzº@ì¦0ÁrayÜÙ¶ªiÓÒ: Ê) œ’WF7A‰­fAó÷páRPÛ™”¹ {ÖšR€L¹b.ezä_jÊÈäOÒGŠñÜÒ‹DUKǰ:,ã‚‹¶D•JŒØç†4ê¡ñÀÂåŒÆ�a’Ù#ÙcA÷Ño¡L˜Uø\µUzÁ?Ó¹4!çœw P¹€•’bxå"iô6Nçv ) ª¢a†d’X™U‹£yºJÎ�EÌÐÝÅþ‹¤ÎRJÕ¡ !’EÄ·#Jè�¨AÆ„©"ò&V°_鄉‘Â’‘HàE½ ¬Ê˜NÎVÔ;ë§=ßü‰ð_gü€ä;I­‘"ÿu¿ýî”U4‘Ðf«¤SEŸÛ§®±–˜W¨N‡œ1�î-ò`O3v%Äd/Vwiuþ÷œ·?¤é$ h�üÌn‹Ü¤q[!<•”£-‰´t{qnwTº»ê­]™Î1XÄ„�³×K·Çð�®ûUsÖ›z£_#Í2ö¸#ðßsêßþ©mM–9'ò›P#ð<Òi)ÈÉ”G†xl�t+²œr±Ì&øóˆ|vFÁaŒ˜þÐÕø±. Óz™]•ÏFï�¯Z”ãînßÈ‚>¥>n—'4(¥(ª‚ã+Jô-47Þ±>&bu÷³2Ï[¤#^ØÁ£ ³~˜¼–Ì*BÂqKÓZƒÎ–©d™Ïg¶JBÿðÙUîUzbß('žMà‰¡™uô-*é†áD¸„«…y�…áCÆé–Ξ҂ùkåÚ‡¥»\$çùQWL8.®‘Ãùö Y²jõP²‹0Áƒ†œv‚ÿDY*‚ײ—k^L½ŽÁЂaN77²ûÉÉÄ Ê“‹ðRæÅ�\+‘ìHm»à5Ç�¸õ–ZN‹„ˆµ@!$_Mg¾U˜ÍKU>ƒ+Y¨”d¯Nõ 'Æõ9òIl&pÐX¾†\Çw»ÔG‡«yýzkcc°æ[î†*­7†WèF„;bb¥lY‹ÐŽ›ã±`vIQlZØ7Y†¨{ïëó=Óç÷µ[qâJxZÁ+Ç› BF™ð¿¸Yï {¥*S áaw}Y¦Mª•Õ3l!ÉS;}b‰…³�Ác©§lÀ¥~^¸ïe¯Õ#ÞIfÜ>;Lžò�³îqˆu.Ö+u½ØìÙ%(´ òÄðϨo8që›+±ŒÏÄBK­A틊N\4iß €âQPÔjY'Ý<�¼%ö†�ÛsãöIÄ´Q¢ïYü6JÄ¡eñ$þLEð7N‚ìÈ"†¥Q´LÂA4Ñ‘jªÞSRU„ üï$ªÞ_X�e¨ÉŒñdÅ•4p,^#ÿfìèŽWäe²™8N�Ä8bö�¿“MA4¦ÀÑü(ÊU Z—0ôª7¬Äð*z½iv0ä Ï-&°'HâdFwzâfÝ¥¡™H¼ÀãÁé1‘jKôgT^dVx?¶Õ8;nwuâ' Õ¨+dl ‚æ‚A^ñæ0z‡áçãÈë|†Ò2еÁ¼ÔF&€×UC ÁÑ¥ÞÈJép $ÛüFìæú‡½ îxG#Rî2 �r êîM½‘<Ÿë6Uð×y#�AÛyæxTðÉâ!„Ã]�~w>�81îF]™ÌÙGÎ{Z{õEú¼xOdcÝ<GÝìl¶<+‹doŒ*Mº@?ÇáÀlô6zs"Ï2?ˆ›¤ÔÍR _GË`n««�úº�0_EM'°À¢Ž�Ûêçö–ì' Õ¥ÎÑS_�Dñ›÷@Í©"Ð HwÕËÛ茞6A›»¬kð÷ËSÆ×C¨kÏlé)°¬NogÁ98€ªñè-åë±Üm­95ãŠNÔ!ÙW¨–èÜ š�.ßTês5šËEjû{ûöô¶Ù©/^;Šº%s»cÒœ^™”ªW^"jTt:Çå2ýáa-¨ {¿ý—Ò|Ô ÂS¦þ�ýXÃÚRÙ�¦�MUŒƒ¯�o`^`·¿5T3‹žª‚µ}¿{H5ÅbǢΛ¥j{n�»]v¡‰XÞ–C0ôgQeHÎÈÎÌ‚Âh±�@ª1�úO´ó*¢lÑ“‰ÍBKW¾õWÂ…Ê ÁÊ#ƒÅvxë…ìn™‰nÆ{úøÚFÌ ‡Ë¬aÙ«·€—2ø±¦<�ŸkjÎ_Tñ1�Oû –¢áéë=ܯqæ-¢´*TH«B1b\_µè. -}»éX¦bë,ñ͹Ìòƒ“ŠC/g´¾wx¯’Ÿ¶Ôr­ææ9P?Ã)LXQÝa£²î6©ƒír&ØšñÑÓ^ãnynTsî!ª"Ó[í½Aàœ£s’Mø“®ÎBº¢/gSEçѳS˜ß•Jê7²öyÏEg‚§QŽÎ}Z'tïA˜eéÆqò#ñë.½VÙë7(]4"Ìßo·yg¹£ZQÌdâ3>ÝP£OG: ²©˜4NK(‡›lïEìî¤Bù%,ãd"6Ë;£�MVUÎ8BƒÕN0ãÑ©×0‹WWem[Œäà[1|W½8†¥â:•höX){p:Éù2ÈÐÈÖiÕ„臑LêU4M9‚ÓÊoGCœÅËä9TaÌ®fhd&ài&$MÆ“xXhvÈèi@î/?ÒÍJœŒb¾Í‘«Œa €r‚sʺ•Çñ3hÉz�$ ÐzyA•ÃâÉÔZµ8>EuœÌèF„°jyGëÑ7Ú!ºâuY‘OÑ¢ o:¯³kʧR«Õä5T×2?\ª‹$Òûγ‰Æ¼Ñ@ù³pQãv¢+�Pb!ø C8$Ù† ¨¢§¨ÀE°<å,'5Ì!$¢¡ ñ�%Ó�ðÒ+DȅmLWG"w[B�[}ÙŽi8I£êË›$ÇlR,ŽÖ’U½SKî¦û§÷T$Û Ò¬„'¥ºCÐ䚃­‡0Bu…‰×ù-#©á�¡2ÿ(º#cB™:uÕ%žRK/n2ÃûÙsï!\‚†Á,�æ£TùJSmk4'òηÎé„Åç-¨KþHðÓj_FÇ?’Äë'b-sÖKæ~!¡1½ ë ÝqÊûH�ͤ1É-Ãe§™Å‡CRµ+3€–}Ф ;*Q©íÓýú}³1IKÅ­öÕ®¶N——¸tÒ’ÅmM{�óñFÚ ÖÅ.e<”Û—rÂ~ïé!z¯xåëßaÃí­eÅdí�àž6DŒ?œé®~j'C5u(B‚n³’;=ÄÜ’Ö¡!I�¤O…!©K©Ê_‘ w‡Jf¦zxN•»U®É¥X‡Ý…øs oì–_12¯×®?BJð“ôf¶Ýp~ÌÓ©ð-�´ïzFñÒéŠ�OäÁCŸtZ[v}'lÎ’7/g‘pZ0ÇŽ´£¿aQÀÐݨjZs³ÀèÀ"‰²q+¹¸••Q°â½9Ɖ骞8U¤®(�ä�(Þ¹°톃ª!Éã ±¬ÊÀ×W ΋b–÷××Ï`�ΘÑf]Ê]ué›ûž!§²>˜¤x‰éw@Ø€�±@ÁÍ®ŸˆQ³á0[êbË«#À(²�ÝxˆDƒy™E¸wôf;Û:«¹©o.«ArCÖŽX UÊžqfÃìg/“`foØN5dz_zV ZsÊ•Oõž ½�Ÿc`, KÔ¥c@òAT¤PA\Xr¤=Ö_ËÈ*óò"Zr�Ge™xqJ=A ¶³X:''¼-1ʺÙœ½«¹™ð‹v¦¾¸^˜»Ü $7ªÎ{¡ù^„¥JiXý©IN±ˆéVE5eøÃ¦Ý­�ÍG’WÜ Á©¥«ØõO�_·†øA™ö%Z¾kÎ}QWœE%$ÎÊ%Þw)âº-ÍÉW5òœŸÝ}Œ®êŽÕ®{CRº$Qj¹Rv¼`ç{ÙaÙÖ$: ‡—ħÔB±;ïBb1|ÓÍQ•\Ž SˆHö쬩µ¿*í.*Ec�zê±oW1£E.Ø×–ð-ÓW�ü+7�ˆÂ‡’@&ZÃweÔ�«�àN´Šm£�Ií ½®ùœÔÉH¥›ø]§ºkàÙïÑRùu>djãóóÌå•§ ñˆ :ʱ‘´¢F˜4  L„“¯Î©ŒÖò‚ Ù.,ÁÁ¸ d€ dµ‘ã‰b³y!ïy °ð²¡½òcV8‘p%Ì1œ‘Ù¥i,"ÍÈ´ÙØ u¢«"Ú‰.ŠÃ µŠ®0K=è«Ij?r=Ó Ú�Y €Í÷pö;EùÛÕúg¹8å57H¨»!_ï �ÑDV’Á?këq!KSê°ø‚áø_ãwàW¶…«åìb¾Ùp˵œÁ^ÝÒN�øïÚ rThcÐp½W®�ëNüRó½Ä4 Š/‚V‹Æ0C5'’ð+ðMbާ!ª™I°ªãÃWÙ|Á,¢G2Ä,¢4<˜ñ�fW™ôá È’çZÎ ,J =†X$ÓŽæCÎ.ø×CAVGõÉÄlÅ�z˜Î39D R›™ÊµÃ‰’Ì"Ê©Ì+ä‚>�é‡eoÈÍ%ª—<"~¾!ã¹2TNÔÃP¨e$‘’á"âÛ6(<ô¬~� ëÂ>ýk.±•ö7éc¸$ÀÆh�aÍ]³¿%ucr|¶˜��œJCÀ 2"•fBL ›YìJQÐõm±^wœJb˜öoYHÆìë¢n¦/–ç%ÝU&¯¿�G0Œ s „¬•¨¹Ø %æÃˆ8Áéƒx›�Ë]˵ƒXBç�ìì}w‡�"”«(NšÓùðœ¬W)iƒ‚@/4*KÙû®té ÿꢓâó̧¼W–¡}ÀøH�wFb�²¥øyim ¤Œ`TWeê1XHY Ã¶âä u˜Å¸»QÖi§’q.ì2�°€“tù̈hIþ(”k²ôÆ“†4À˜cLç¼n Út†-ñ# SÎ¥¦Ž(#©Fɨÿßs"¡˜—£-±¾Zš˜Ÿê\"Õ‡hÀòÔÀDÆé볦´É- u¼Žd¿ ^g%œËD «ÚÔUN¿ÊÆ«g{ {(¯®Ø¤ª¥õÃÝ(³€*‰5�¼%q¡çÚVØæÌ8¹±Ëå�ª<Ç|^ß  •£ª•›  Ï4S.÷¸,žÜú·ˆŸèFxÑôƒ ûAoä~©àHMÆÒôŒ ‚:¿ÑÇ@SVŽ&÷•EB"2¿0B±á çAKFÇDG^ÙUQr •ÿ/ #SŽWb ™ò�åWÒ¡S‚hšyL0ÑÄtçxQq&)›t�FµÿE…Hq2p�Ú\ˆS+ ¤ä#gÛ!ÜfiNáÐ ÃóÌ1‰t\€5¨¹!!ð½Lð&I/ U¼„¹QÊì¾Ìp7Ÿõ€‰Ð>LèåÁv•SrtÒ¤_É<¼-4;Ií’WI˜\RÏ­Ëí *KþøY“è�ñÂ:0URA– ¤€CõÌþ(º,/¯´çR‡¥ª®‹Wp”@´nµŒ@e¼W&`ûê℮QŠ>?%žE¸‰HV|5DwM•¨öÍ…ôt!XÍd׽ʷÝî|v–…#^¸½2Ú»ü»ð JÌA·ë™<àW"A¸€M`˜ÿtR¾¢ƒ‡uÐ!ë«Ôà‚¢‰¥×½”sܾjÛ`ˆ h½ ³–·?Î8˜í 6zw”Ýèl%gXî2C Ÿ¡I¨C/}:ÞBÌFJB*àAb¹Žs dk/ÒvÄtñ4ž„Ù„Z=K8Æ¥#K©Ã±Ö=ë¥Ø:fOI(„› •Rç|§‹æfá&3}æ.¯Šý–ò* mâÄ`™ h@ÏÒ¥/V]”tvú ÔÒA½\¡dCÞrÅ-¨½L‡ ŽÓL’xqfz$ÒQWK †“ůeº¢ß6�aÖ˜ÓAÛÄ©çÜ*-Ð�š›Ñ£bóbËÞŠšÔ‹ü(/Sã.U*ì;¡³sü{0'’ÆZûRgv†]¦ÄyØÓPà1ë‡\éè]Z°(J'§È÷›r0C­Ê"€›ÊVe€ÛÜÐÉ(ð¶^ÏUÏàÂÖHŒ E²gÕ¦S§%Þë;íyq“¥ÐLenèäj.QîüÆÄ2 ¬ŽY0?]Îþ¶ÆŠ÷öL‹?q£Ù%.¥…‘bÍ…´(QkFê�—öŠ«üÀP;†z»NI­ýR±×UéÅÑ—… ;´[DH3”XÝm·–õ²m Wñ§9dd·k•jˆÇ<ÅèjÛs•û_nsW»ñ“2 <×SÁWÁ;œ„Ó²ÏEÐÝ ðpî(6ǵÜVžgÈŠ‚„ÆI2Ǭç’]ô€KÂת!|8ý¹D�¨Â¦¥ƒl/¥Z™ðÀÄÄ¡Ì “43?Ã×Y„HS]RHÖ€!“s!½ô̘+È ¢ãç˜}$QA §.¼Š´fCh°5oJŽ‘eì/­AW»Ãu Ó:*¯I¥JAh0­4ÄH×ù o^¹xäε ¤¼ø32“ìÜ©OÃDÊàåáŸôLüqÜ͇uìúh(ê»�ü´‰mÔ'Âf+"#†®Uî>³V?¦´4øÞVŸÃsGxù¤–Ï”²Š�÷…²~”µ:�GÙ U$øpIòð<žåô¯C�õ£Ô º´ŸURâÊ �×'ÕK“t"ñ- ô0sœLWEð �<,ÃrÐô¬žeÑewgC—Sñ2è�øÕ v6Ì �7×€2¢Šì*0œ‘ $�[²�Õ‹Ž/wêˆ'£›+ H‡¨Ü©�ÚBrêBþH?~žýÊHË͆䜟²ºÞ&tμLíjùò€y›t¨ ªS¬Ï¿¾¾€0t±–*ÞŒ&ênúã2d±BYâ Yξ§îerƒÉá¢Ej>a>Jà>®òEš[j,^ð‹ló±e›õur9~’Î.)ÖS°µ±u?ø)Mqñ&C #@E~AÇ<Ç« L<ÌÊà2Ð eFgYÎ ÏÃì,ê;�\¢SŽÎD¼Bå jChŠ’� : ¤ãâÃõ£¾„¬tc1J‡sí�4Ž‘ol!òzåHTy½Ò¦¦FQ8!˜Âe[¾W~uC/‹ÙM8ßco”Û]<�E;X�0‘sV+ʾС^wÐÇ4ã߈9›&q~Nœ€Îæøpˆ.©Ñ:æmˆ&Ü=€B>÷c«—{—"¶ iÄR]œ Q5¢˜û5žgIL /qøÓ�Zþ—á¼6N'“ô‡ ëšmŸò¾šÎcÊÔ…ÆQC5÷IZÄCžš™™žrñ*?ÙM¬µQ ²Óãc9º {‚ê›}<Ðtœ"Ï;£Ö+ëøçƒàèå�Ç¿í¿:�‚_^½üÇáÓƒ§0ÑûGðàõJ'øíðøç—¿PæÕþ‹ã/ ö_ü3øûá‹§�àà~yupt¼|EŸÿòìðž¾xòì×§‡/~ ~€º/^ÏŸèã—Ô¬wxp„Ÿ¼zò3üÜÿáðÙáñ?;ìÇÃãûÇ—¯‚ýà—ýWLJO~}¶ÿ*øå×W¿¼<:€n<Ð/_üø Z:x~ðâ¸-óààð#8úyÿÙ3lŽàíÿ #y…} ž¼ü埯úù8øùå³§ðð‡èáþϸ9à“gû‡Ï;ÁÓýçû?P­—‰Ç‰E¹§Áo?àclwþ÷äøðå Ò“—/Ž_ÁÏŒøÕ±ªþÛáÑA'Øux„ÈùñÕËçýNVÐÿd$ô¾^ f1ã#9@zë*$°£ù(3y¥Qô`C¶dÒ†U|ÝGl¹¨äËè�Ù ÔIfüƒ2ÚÍv�@²¼Š(—);cèA’Kptûýäl> 3 3Iäî˜Ïå`ÿ—Cf©¼A=]Ï8óéèr«Ø}3£·•Àß`8O¾ÌÌ™IûÖ–H{I.Còz+MŒÛÖ:ko›M£ À5ŸJUE_>Ô#vŠ4@�¦š<{ ÿή_VÀLŸÏ”>’Œx»qMAæBY=ÒÙ ”G! O Xþò�«&¹Ñ�ê@ z ›À1”µZœM¬lt(ç–÷ެ¢ªrYÒ‰ªWqèÒå €šz§ )p}i¼ì@Z�é&)Ë!Ý6zh'H×Ê~LO<ËãÜÀ‚~ÉËÁxE)uh´”âû¹ÔÐxµ`‚�;]ÓÉÇ™³µôäoTοwò»›K¡ˆ�ÛDÅE%·²ç1š0ÄdMBúp«‰»ÞŽŒqÞUÈ.,%)ça=~F¾½ìh`†]¶õf¸|¶\F•,Å)ÿ«®vè—�ÁÐe�ë#ãÙ�o�š_-4…kà…x­&�.ã2ÙÆšÿŽ©\Ö�]ѼÁûoºGºöM�RYñ"ùµ0³zÝÑÍ‹M£jzPa¶dØUÃHÄÊÂ>@g{•Í·é¥ç’ÌîÀ � ¹‘ZßÂ%û¡®ÿ²¥‰%•B_µ[éµ±ç÷ýàÈ[à®ê»ÑYlƒ¥ðVåuzm¬ùÜH?8Î>s_ÖZjs�)Z2J»‡.—å<ïà–Ç7kì†ÄBO=¹ÉL4t)¬<*ã1T�ãõ 3žÝy"Â^`ZÅñiÖ÷ˆÅÍÏÔ.�Y­/w7ûîÆËÕº–ixÝ–‰?®ešñ°^³Éó©›èg�Užª®zTÙ¤V{Ú ªçw)ØT»c~°¸'×báy2 ^¥¡i•5�lœ ®H mˆÜöݶ±¦½6,V8�ò¨”*iË�ˆS9ƒI8|cš²p] 5M¾ÊTKÀ0++S§ó0M"Y×ô¶ñæð|„ (c³*qÒ¼E,*b(\ü›\§5.!ÈW¿mÎ�È8Å! ŠhxžÈ�ÝàIEL£ Ž- OO1¸Ì© ûÔ;?§fÆ©ßÐZ ££‘ÍZÇŠ­–Ÿ‡³ˆSUqx†ÛeÝ�L7³Mâ(£àÌ ç`´RˆÐWd=‡ 0Ž��É«|¯àô_uRGÓk‘ÖnWµÝe€p’|ýÞZ;½ÇøÏƒö•�ØJ×£J4ÃTA”ì0c¥Ë Ü\*Àª´ÈØ“$¹¹-š ˜"ŽP'Åñçf v}F»’„.MØ â4NžÅ@ÁYÄ/Z:.&ÑV-�ËãÿD^ø¢! ºŠ1£Å8 Œ÷ !a£xÄpòeCXÕ»¨ìS­äY#Ã|¦Ü6/¼/ìvðQÙm�­Ä"Ÿ«âxUæ_—‹'‹g3Íg(¯ç2/ÛÓ“XUÓ L̬fQžNÞSÀ ªÙ3=Ù³úªªÿ>f´šö9ì”ÝY±c9‡p“’”ͲQI/“å-YÁ�y˺ ™¨YfÇJÈ­ ¯¡ë+Ž®ÄÂØ«éë÷ÖòºÚõÖadº5‘cjYÕ‘çÙØiW@áÉke‹€4õ™šÄy±½M'sŠ·L»+÷LjR9Hß©/¥Pæã[¼\£â?N-ýȹ—½:Sá+¸óåüüN®Ë "ŽÁ­‡Ï®}‹ç+ö_ë¶¥VA¥5¾]à7¿'LH4ëZchx�å€0‡×ìFÇ G¾øbÃEnû4àè6ì¸ñ„4Œ^ìÕõê�eú”mis{ªšKœœ€„˜q¸A÷�aróëïܵ�ž•$¼êÎÖv÷ö;ì\ë•®dMéñ“é´u§æ½E¦ž¤32äöMµ}T”û!ß/?áþNx–ÀÝôÇšÏúî˜S{7�1æI',86RP5sŠìYû+WÉ$|Kô£'+:IÌ÷)y ƒàæhqŽyÝй€#ܧITAwP"—'éQQvx:ÁE¶Ê§”íké¥ ž=‹B”™U?™*�Œ45å¾(Kç´À°ï˜ˆ ÆŠYûHˇz4шЛa4Úœ¤ v5åLt¨Dö0‹9›1ÜQ „‰Ñ#•2 ù®4Ô•‰dFû9¦Ò©¾dß +›|®× =­ aRÀM‡˜|Ð誇5a4±0ŒÆ‡<Œ+ÂlT,o™†ƒ£ì–�‚$„Ò�NÔD+_*ŽGÈ´¥™tca3Îx°ÿËaG®=ô0z›Æ£ ftã<-(GçÂz-Csc(Ï™ƒ•g Çb–‰ ©�@%Ä¡DU‚¤7gDjÌ´iUyîV¬„…“w˳�‹Õ0²wg8ˆBJ¹Ù ¥ÜY_TîF…ã¡iæ/ [ž‡¦~YéÛìäÞÙè;f¦¹ ~º›ðx«üx«l?*?¾�·Ë�·áñFùñNéq»S1iUztÏØ‹‹”Æž/7ø‡žQÂàxF ƒà% þ�g”Û~Äî”7¼úó9èü5Eª�ʤ¨híCA«8‰^¨|-*Ó™A€ˆnÎç°eElxÙ}ç@ºDFÊÉ4 ¬¹2“d4EJˆld•ëÙâz³Ìàð•-Öøá 4ãÁ$zM´ )õùÝÍÏ=:iP¾hå?¶ŒÏ�yë‹óæ/Ì_˜?æCt^ÄÌ#|�œGçÄ“W Ìa(iºWéñÌtgY¯gA�×eìi6¬“§�zê¹¥Óuq3CUÒ©PŠxÊ^×·šn‘Ä׺¢Ø’>Úd˜dŽƒT�¤lùX_èZŽßZÍdÛ;–­é�Ø û‘'ÌzXœóu‹¼œcÔ÷M·Bë�y7óq}’µ�Æ0fe"òƼîª3«†»bPKü艉bϽõ+.œ4;·ã=˜¤Ã7^͵OòWm’ÜY9sÄZLÅâ¦UÏ‚šR–çʤ`c_Zä\Zìv-�é+�H¡ØDbcU=‚e2‰ÞuMuZ¡RZ¦~°i ®vËü´Üþ9poºµˆŒ’ÑMÑx=&l ×Ù'–«?ˆ8¦(¿Î�›Ñj–ÆF ¥¨A�Þ#/NS$„\šSaKm2òƒ Zª/rnSc½ �˜¬Y¥1s�•E˜ëy4Ë¡¢¹G+£L²þ`}kgûáææ£Gñ!~ƒ\Y¿ŸŠDß2Û+Hýtý‚ß‚ŸŸ‰F§NTÌ{:_¯1'ò‚¦Ý§jýþ Â`—Ö6hLÖóÉ·ŠûéQêµYH‰Ôä�_AgMB¯Ý ^6«ü¤KÉÛûÁ}Kï'_Ò±Þ˜ Þ™Vè¾m­Ilƒþ[è¾³Q,ꥩ<«aϧá;T˜DÄ™s*By&ÃsT®…ú&NèÚ`]t‡!§ ™WD¸!ˆ§û³ðm|Fò7B ë×!ÒÛ!��Š8�í(¦µ^‘ÚÂI”øQRcOq+#ÀÔ†}y×òD8‰Wt�zcF\¿ äˆPe–Ã&†×êð­öJÜOÖ1’áQº2tJ«â”¿þ ³>.EÓÁ�êËÐE#ä/ .Gîyïae1Ť@Á[;<ͺ<„ç }*Hƒ:ÇQÍ—ˆ%2!9;ÔLÃK:’§aÁn5 ˆˆò Û/‹òj©P[%îÛ8Yɯ•ÒœËÃëw ÜÚ k¦ª:(Œ±*e¤#×]šw¿ Ì@_Hð¤ŒcžE:ë[�ܳ¯€iƒç×)b§k‹fÝ/îùÝòüáó‡áŒ­ KY g«9°$Ù­$ßK·N¾}³¾ñ¾ÕKû†Ä»Ñ\6<‡¿Lä§>‘uga3Jýq�LꇩÂîøœ3Ó¼íÐT”´†ÁF#)ѹؖéçÁtNWÉ2}4 &!¹š ›Í3Ï ÖϤßFø&ÊÙA�ñqàà³ãWª”°"† Û�¤+ìbK³ÆÇ5ÂR£?¡kTÑ·‘[¹ˆEûþ0F˜Gf¶ÎÊ^5V4çOFñÛx4†´ìó8 H Ô±Q4Ë"tìY–ƒøðjRj,ås¢‹uU©.g¨c·jŸâ�¢,—íöGüöVÐk�ÜÀù>šßçÒ�Ô*LÅ’½ •d›{AmÐ^'*Ì€~0CÑ ÈƒÉ¥ ÕgXß '1sqGÞåÀ'.Û!ŒþÉߊZ`ÝFR÷¯¹tÀ½–Ë÷¼ØëxŸºšW � "+ܬ j9›µ-µ¾�J.¡‹ŠZ.¡‹ óÙѨ¨?޳,«€“×쨑UµÀ± né˜ðwÔ¯Ôôw´)5ÇàœWÄ!à£h/¯É3&Vöp@¨�ÂORÔù¾w·¹ÏUeOf”ÅÔÏtÓ[>™j[x, S<ëNÜ*S.`vÀ ånÓ Ý–­»„cºó5d;ÃYÇÅ!Ú³šg…Â&­#‹ó1BXT&/³å?˜má‚Óo´®È]xçh´ÖRá.ššIÚäpa5§azÖ¸aTRÜBÿU`¤¢eèïåñè–iO÷ª¢ŒgX3÷¥8(xªT žÑe�–]˜0�߈02•Á­z5î#¦ûòu\HšUZé½ÙiÒ@s+¤º¼ˆ7·X1 Ë: XÞ¼ãÝn/:†ofW€M� ̵›hvE CYxIŽmì\KåZϹm¬ SíÍ �´�ºYÛ®þðŽÐègUo·�7&ï?°Ð¸u­¶›ªæ¯¿à½zùOJå\1ÜëM¦_z7M,TÓÝÎrY"¢GóCªVs±*E+�µ�›4iµÌ«F2Ý`o/XÃHýkBYh°pd°\wpÖ ä‘E±d‰¥°J·ìÊ~T—ªŠ ¶Íª¹QüÞ·†øƒ¨Å]•ŽñÇ‘‹–Š´PHµzÃt:MÅ+‘îíå/ÿüaÿÕþÉ“—Ï18ÀÉñχG'Ï_0º¼îX’£l/P<žPqÙÎ'Jñs�.`�L=šcV#­¸õ:"mg›<݆0–”Üà[*Ìù1 Å‘�Þ=!ƒå˜:hþ‹‘ RRƒKñ˜3„’‡MÏèÅ�”6E £N¹(úäã"ȃ­íw[Û£‡<ÔþœÇ"Ø|0š1@î}/ø9½@—¹Ž*Š)³1ÀÝjL.ƒí�wÛ£Y/8¶5 І¤ÚÀÐiNÁ3(Êb–c>¹äîr{X&‹Fó!ùtÐGyj‡…Ä7j„QG—Áë•Aø†ÔEúz…õÎ2R¤�«'i2maÓØõ Jöhø½`?ÏçSŽL$š’9K0ÂÊåΚ �/: î<œŒe@y÷´ ëm,/ HÝdÎî]#Q‹_JšËð°H�ƒT’× UßÒm2x>l¬™ÃÅl,}v¿œRh’àýãæy4žÃ Æ@Ô×dP<Ä�ÙâºÝ9�t2„ÿ ц€ ÿD�þM†q(݈‰‹u)f^‡Áw…[èn6�YËòÁ_÷ŒjÃdγD^ãÈmŠ÷:*ɳÐ5ê3ѳ+CŒ\КÙRÕ;”ÙGõ®€ì²ÙvA¶)�´f࿚à~ˆMƒåÝH…'Ïz1B‡Q²"iY_Ÿ"bJ‘ôî3*˜}ƒ÷IbÆð“ø°«F÷ÄÆ‹V¿Â; 溮Lͨ9ŠžJ˜®&Kôn×3ëF“æL^èÓm„`?¯Ÿþ×É-/€Ì«­Î¯É*ï±dðb¬>�ZýddÉ+ü��‚»fôön]_L§S��]]€Ïî.Ùª˜gå‚–ÅÆ†ŸÃ\”Hüg: ÂË|ÓQ¦°Ÿç„ÔÅÚù\&c�ò+Ð>­y¨³Áý\æa!�ú,&b¡EÞg1‹éÓç0îªÿmüçúzpð†¡”^h�¨ `T~ iýÂ!¦ãÿ�n¬"ô–eó÷*X&—¨°AŸ{ñ8Iƒ(‹e®‰i¸"ËØËZ‹8ä�µ°À‹½út¬€Ï맆¯Y?¦Qî—ÕóI¯kháêñÓ®;X;ÆÕ"Í6ÝñQªãÙç³hšîGG]Àccnï.*îÕ.,Úªúb®SÂòV*Ý"‚+nq?z5ƒ`Y™4eÀz¯~ª*dÝ"õ’i—,®ú 3@_-ó:øz+YƵ-†ìt.ðfýÓVV«ÎMæ]ÚO.=ìE«×œøºÙôLaÍj«´müظZ`óõI`ë+ S¶k®ý*ãÒ�=¡õVvg>}F¬O× çx7ØqŒ„?.b|ŽÕùò˜Š}âx7lº¿ þÚˆ¯gmj)}ÉîûcOƒì’Ï:³¨‹Êæ QÙÿ“�•*È€\˜Ÿƒ�)*ÍñªÑë£À„>�'~9�íSÁøâ£¥;'†�½øÜT¥·±¼–a@ý•›ñ:K®ëz=ªz+“+=^V·–�?¹ÕäýFyh¯MÝ«é»F�ø¦åñ�uµÎGÙfŽ—öbsåÇ–(¿£¨y„Ž{´èX�Fd|Šù&Žå€ñÂUÙ´üñï_̧ÔŸÁ3(øWþõÝU°*à¾â?¨aB_ÑÓÙ»SLQ=Æ0ÞáYÔ  ÊÜ<ˆ‚mÎ]‰†ž ÀÄTfÜÆÍ`ØÑÓ��¿œ’aªè>ªgwñ‡4…Ó-ÁN“®RWJ xÖáßñ$ž‰h +»•vÅ»¢Ø-äÂBôð'ÇðÁ›r Ë/š´zÆpðc‰›ÃÒ�U~ZY“·Rn2Ú£]ZÛVrÝU;gf̈L¤^ »«þЈTTÒŠnbRî¹.ÑnŠûÖ’;«¨‹ Ú±n5g49Æ4*iû·4\OåU¹¦êWÕëj™•e†Ýô-¯¥Øâ%f.²Æñ¸,"‘bQIË1ð¿hþtÀÖOo«Ínný0Y!öF‡IµÁ÷çpšøQóå4ùè§I³�ý/£pÕ�¡?ú¦­ÙnŸÂ9–r·Mãjœ> *W�ž�MçJkÄqÍýhÚÀëhºK…½ã{üQ|›nKµa¬®oWâ�óµJ>¢ XE¸8 uw˜û Vq›Žaeå\8Þ>±É°{÷ùÍÛ(2R+›\‘uWJ_&]Žg³ ûÂÃ7€ ÇE©B"[f�…Ùh‚°tL�8Œl©'ýð{žfî Ïq²½£Ñv…25·Îü†Ç¶¾ôð·í´ë¹þ`(ã I‹r—äüþ¯fÉ=ÄÚ“$e ”‹åúa8ýú|.�;»À[f¼z‚Wáx¹UÜx‘6\¢Ë,Ð%–gÓÅÙXZlº‚–X?U²ôB_àÙ³ˆD.M«XÜWqn©ÿ%£»þMOžóÑÁWèü�A²ûO—N¸Õ:´3:fƒz×:Ø¥l~Eͼ'Âgs0RG)vN­<ÕÁDøŒbh|S†WåY\À�„ñ;ÆsÄ— ‚AëÃêD¯„ªMwmõ¹·d¦¨²ÀTŒè'¥Æ§‡jÔXÍ‚ –“Ä«4÷GÓÌ&×›OF­[˜�†ÔâÖ&Èbðx£–8<Œõ­ þ1ŽèNTl–,Á{¤®#[(™Ö#ü„xWj:õôÌÉZŽåZÀóK/‹Š�^6Ruø•ï.i¶Æ!µ~$––Ì N…»AiµöñSÇ«“Æï“ÄlÕÍÕ§…ÛÛä}o-÷-ÍIƒ›¡[ŸŒfá�Ê2«ƒr⹜G_ííz1¶t“WigÚ¬©œå¨¦ØÕÏ)9Ì(ÆÀt€|Ì1™O£Æú‹Ç„Ò‚ÒÉ áS”¹–mõþE�ªB~ü˜þßf’rõFæ�¶_ìG?Øìm¯îõû0g= Ç…VŽ:ÈJ`ß®œAûÍELÅ'@ÇšÞO}ô�cãõn„±[Cj“Ë›ÛÇhÈj%Á18šMbÏh;RbáWK/Ò ŸÄ�Y à<�Œ„V”@H’NÖ9€ªÔF¶D 3%½*q–b„΋oú&‹Ôœó{ÊÊ_µëÕ79Dož„âºAƒ«Î�æŒØûÃašÉ\D˜4¾ÉiŠa.†o¢,?�ðþ€W—"ÈAœ+!‘åéÁHØ„z:¤ w�ÃêÇÙÂ7?ShÞ׿ þN€h'(K}³ÎO-Â? g=D›ük`g•×\‡A¶;fE¯èÄ]ÌKMòm\åÝঃÏJ�YF¥šy(—ÙÌÑ‚©cOp!ýq:œç8i“X§«èÒÓî,ŸG£T8§¤WQ‡i:/½ÖAZéå´n¯‘.BW©œOÿÁ£4tÞo4ë>fO"îã­WˆÁžÅ ŽÄƒ£Ìæ®ÄúéL‚¢„7{N w•m|ÐU´ œõ²Ñ¸óy6‡êìç§¢®uô[oš*ŸD#lzÌ,Ùÿßi[ì«ÝÃåIã3à»Áî¤IWŒ^Z‡è»¾Ò=íÐ&:*¤‰�Ôé{÷a:ƒ¿~_UõªƒÔZ¯ÕQì}•f׊<_{'Ò(öõîÏüB9¿mu‚…*h¶;žNúèzà´—�- §"ÿî2*ÿ@éð�igWY¼]J”¹fŒ=_ � βÔ_þ0"¬”¹j}k(âÕÒV‰‹“¿Þö‡Åû<ð×do|¬è�Æñé¡ÐY‚ª×ŸÀü<08�OŠØÀ ïºÎr«ÁD› F1Ôƒ ˆºit¦,‹™Í÷§5”Jã96í]r»”¥¢˜/iÖ¤.‡Ö:ÄVl­*äjô.tú)„ ZåÚ!ßk´]¯½÷c <!@ìX#Ë[AÞÎ}ùo+Æøm#�YíqÐ"CN£‹®¿|)öšïååǹôHÞ5˘z×y•K6×΅صGi§à‘H‘•ËИQê<½H:Á`^ñdbÛ¸ÈÄ_ƒ,½È)ÅRý$œ1{"Ý4.ÎaÔžReì<µî:.<“Æi6”™{sêVy#û'êÆ¹•–omÍXÊö©f¼°ñ.“‘Zw±vRKôƒ<�Ä£F¤X‡1¢£°BûƒÏժ¾îÊÛ8à [êÒá~Mw« §¯&xà .(¸ qK�Ú• I�ÿ0œ E#­¯ß/îÿUÐ üåDׯÚÁz°%·ðõï%ªG`ªÎ0A\W(• �ÔJgåoó< Öò0ÏûW®ñ°[zRœ»�€AqA¡¥5&]þZÀ™S\ÒUÔ8*†çxùÀxâG}géžé™ øê·gæ‡;�tQá†-BÙº*®ˆñ|aŠ8¼÷5rÁa{T!ËÒm4YÃ*J º·vìv ˜ÎsÊ�Òr ^EÃ(ƛЯß{!_õÖ$’eð�ƺçaÞ}]º]n/îÃ(…#Áœ‡o±'T�.`¡#¯W`åÑ“«×+½`-øÖ<~ƒµ}•� Qþ¿>vºÝÉ+».Rݹ×�n÷%ÊõõøzðST°aóè"â ’Üs Ö”ØÐ;ßfD�çáì* û ‹sVizd­%예}í�9úFkNó#Á5ÿ„Ð`ßÎupÅz¸ø$QA“xqk¨0ÀU¬Š¨@D¤JøÔ°Á½S‰ncmX«—GwNãÉeå‘@¦À-×Ë•þ=O J3‹×€ ÚØýu‡Û’ùdòÉC«FW5¥úl¼5M. “8ÙGVó½ á‰·ƒŸæa6 ³Óó'·C‚·¨ÄI0‡€,]4 ‘Í ô³:ÐYÏ\‰ñ¸eãÃlq3ÌŽøÛã#»\Ç£µR_΋Ù\,V�Ä2LÃ< N±øiðäèH: ŒŠ®9Èèx‹)õ¬ò˜zÁ�dD…®òA‘ê|ÎÚMÁôh€) ¿D_qž¬ìA©x�^ae`È蕳È�hôWbœt>ËíG¿¨o¥àÏ@Ź3hœ®/~7ƒ`8;OÕ®¬ ÒM‹ßVE^¹®Š¥Å„i\ÉØƒÓAœHßå3Ø` æ+6Ý~E²^K#°c¡£c ÍYP¼“ s‡0¡É¥ÌÍk‚Ìørâ0NΣ,.NA(�Ðý ¦w€5ÏVžb™qˆ*^N4û8±2¼‹ª§tIÆZ€}"Z¤=‰Úøbz+Š˜óWEÌT]Ù¢=5Ý(½wú௯; 5—Pm÷�~ìï.dŠã—²3ÌèÌ~˜õ%å4û!‰"ž“\©-�à ÉçEœG剫Ø!Œ"7Óp "žÁeÉÌCXÇî<Ç Ì'a~n¯g“›óvW‘Ńi DéŸ0b%ƒDµ‡<§è�žÐÂÕ°nÃ7L @¾@¯²I $)Ä<ï o‘´%1ÎBŒB;¦Z7p®2>åÚvV(H…å�†4›7ñ C±^Qîá<ËÐñ@÷[ÝŽzg=Í& ¿ýî0œå.•çG(€€à1š«óAK»ZüÙU%åB¯cŒ©´µìë$ [n‚Jr"6ߨ_Ä™š§õ“CÍêC(j4=åöQ´ðÍAº¦©Ã&Ö´ßÄÁ¡eE âÈâ…obwH v%Ôn‘v£ik•j:<3r*˜:>ÎUqY°lFÓà›€vÄ_12[oc)iþ�–†“õ"t‘܃”fö/¶ÍZCÛ`TyÞùá”r]»F¯·>L³h½HßDI¾>ÝZ‡rX“êðÓ®¨º¸’º~Y(,+Ç,(h ­Þ4Á×(:´Q5H·d¹ À,`ùw­\@Ñã«§w•þtçE<É¥îMÐAu³‰û¤+gYjy¥7†èF� Ú †p¾(WÜ•1’`¼r2HÓܱŸ%á[ù2ädÒV¶vr [ +: ÀÃàĉïÚ­×ð…ßpa–, ËW€2B\‰¾û¥jF\¾5ÐkÑ`Ô«ÂH h)åûO]ଠ&]E°ÆÝ•ˆâé4Ê΢r•–@˜!ÃVBm»Nzƒ¨‹ zÄ|w«Ñ.î­‚Ø9Ž¥•G³:zKqy%¥—,Ý5ø‘Qfùžv7„�ŸQ>Kýºec„kÖÝÓ’sõªAë¢�¹Ö °gÜ_¤ñ›iÆÑc}©%¹ 3sXÚÝÚØ|$i´Ü»&7JWQr/)¯ÈTp�µà] Ö <³µä¢X°,–híVGí¹ë®, UË«E]uáI§øŠ%íømš‹ÔvôôòvyÊÉq[}¿“%ºd‹w½L?Dwnq©6én)0ÎÍ*{酪ÅíÊ%K/õR•x�…ÃKÖw×AqÎ …ëŽæ³ .á-£óCâ¯Þ Ðàó5uA¼*,•ªYucÓè}W¿ãì*¦[í‚ÃÄÄ…õƽ000ae¾5ÙGQ_†ñ©†ààðA1TBÕ€ü?½Z-ëØ!-óÝ�|‰9�&³(ËÍï•‚¨�ßåx]Ñ]>ß½[ •"¸Œ¯WìZEYÆSH‹8«÷‚iŽ÷òL¾,™öèéé åžòÒÄÎfiZ´ÚÞ£Ì^-â8ñ`qï{å0x²ža&eáUâNÅj0 %X°xÙW…Õáp{c±»Ñ®emù•æ³YÇiŠo¿×FÊ]¶{©7ÏÉÚù>V¬Ó?íåÓ—­éεl¶ûÁG,Åœ]ì”-mßÌóD'„'Aš é0º\Ë¢ ”fAe#Q›ôôps»~‘fçWU¿E©neôSgêtuГhb�öùÓ'¨sŸOF|†Qei>fRV›SU6ˆE;©d £ÐeØ(E=/©ëñv˜5ÖÊ“­ºBn¿£Z'—�Úh©w,äƒt=AïCS¦‚D-yZ´YJ˜þœvŒÆMŶùÀ‚ÖÇX Ù÷’®Hb2CÕùð\XÏâ]J>ŸÍÒ ýÍhÚÜ%C&½€|�¬¼ûýó‘'SöE¦øÈ2…¹vøÐ‘[€ÿ¦cò6¬¬óýô-�FÒš„ ˜¸Ž)Ã{í,¢€NI!lšS5j¦£ÀˆXx‚/‚L.1fªˆóÔkJë,ò‰R`‰î�0`Š4”Å?wd5óáâªèA误Þ,‚9⑵ð�1ß-4ËÒ‚óq{a9¯‚Ñc* Ùo}÷Æøœÿeª¢ïŽõ3–Y”´æ£+ÜMdÒk ÁÆUwIØ[HJãDãðN»X÷‚s#F•ß ¢køE–ï‚æ œ·Å¥ëöÀdKWµB¬¦Oæ²{5”!ÊU§4ÀNeÇ�ø{Ÿ…q~+=wVìé¼Z×ËN½½!n2ýw¢¹–ì¹çÝQ˜½ñ¨>ÄuÒëÈG}w“WH’5›Tsë(�L9÷ƒìl¶Œ~tÐÎFŽ lôvðŸû�Úe(¥µT†µÑÛÜRµz©ºËÎýþ*­çÅÕt1� y£Q�"YÊš’FUÍ‚ª6™£×V£fk‹«ÈBšÏS9o#ÍY±Ê`ž$¿Or‰<—W—¡ƒ¨ÔxÕAtæÂÎ5ϨƒV²ž­Ñªƒfáß‚¤êøŽÔ%¶PúZmo› Ž6þp^(7­�ƒAZœÛº®£„¿»–ýXP¼sদB$sJÆð<ÍrôTžD6x.˜±¿÷:ï™ÀÔ�=ô¸LQ¬��jè mkZ¬ÙQ ¾tÈ/·ökx“n­ÞpCÔ7#º7Ü( #·M'¸áªo‡6T'øÀ«š?û·V™-«zÕ¹¥­yÍ—m¨É–¶8ßå¶sÓ|›[¹º‰ÛÚÆ5ƒ¸µ-\ÝÆÇÙ¾µBÊ—ü í`³!>(¬ïÆ’›Ü‘=ºÀ†R!~Ä{Kîh&> ‘D‚jk–ºÁ©toÎDW‚¾u©{3‚R öÃÒ‘E+å3!#ËoÊßî)KíþÖ–®[Cƒ¯(,0ënr¯hÛY†„x–a¹d–OáÔJï~Ö¤ÓH ¹AgŠl^FênïɯqC~“ûfÏn"̲H}¹›à�ek+‰õÌ^?Ö«Ò²_W,vŒ4éÔn”bDž"‰ù„ã«NÍG>—錯{r#ŸŠ¸ôé^ϼþ¼fâ»(ÕWi°÷*Ñ.2¯Ÿ+2Œ-¼Cü<îŸÅl}¹}þ¨·Ï�®S™h­›^]Þ™oãÖoñ­žq±Äm[xgdt»ÎNÇÊqŽqùºf- ~ův½õÜÂ̈èˆÀ´¯œËšÚcoX½#7cŠ®ËèÞg/àŠ[Áv¸ï­Nйš¸!©ã)†@ìRrmcè‰QÄ9PÏ£\™ \�¹Ý 2ˆ)Ö¡1’7LM¬M \iŠÇ c ÷úçD¢]â[š™VN®g†iíc$˜–QнÞpôÅoXìS·�:úÍ›èr�†ÙH¾*Ù5íׂžxw«1"8›Ê-c 8r¿y”½CšÉ‘raxåºå!‹;7^õ˜þL+—”­°3�e¹ï6š54NZ>ô5mJ†·Ñ°PC±ô踡 —aÐÜ2C‘m’v Zã`´ ¶³SA4”àE Uzœ¤vd8å·�©Áe@ÌjÐOÒ¢Õ—õÚd‹ ‰Äëßå›?ØÂ‘ÉB‚,ÃY�åODMàba'S™¸pÄ ÏdVs”J)ﲂ³ÀÁr}§ój c^Ùgꀕñ­(ê)аžÕ5dⱓÙȸYt‘Ggó8i÷ƒ§q;HX,„aDP…S²öŒ" úÀ1tDÎg,ã  ðÇùï„D‹¼uz„°Ë­„&å¤éð#u€{º¦C®?±&ÜEó3Æa” Ã{E Ö–^²˜à˜>’5ôr–¦9ä5¬*+¬)%k{[JàHÖ×i�OÒÙeFQi¶6¶6‚ŸÒô öÅa2¤©§"¿DÙ4ÎsŒ»‹Í»aÝýG{6 ÄYDÔð»Ðá•zภB:@Ý BS¼âÇlå–§ãâõ¨?Ö(Æ(Ð# îS˜��£¾Å”¥çáõÊ‘¨òz¥MMá©*�ÓLÉ÷�� ÛESÔ�NÀ¸ÇÞÈדx‹v°:aB¤xL1M‡z §}:ŠÇø7¢AÎæƒIœŸ“‘:€‡©€‡9>ŠŠµ`Dë°Ya•r÷ �Ûc«—Âô9ElA?ÒhK_œ§S{D1÷k<ÏhšõQ#Øk)µü/Ø 2Ãá8Åe8L$Á”H-ï«é<†lŸ8Tsû2FÂã˜é)¯òó�ƒ_‹õ‹–ŒËÑeØ š º»¸~±iwÔzeÿ|½üñø·ýWÁáQðË«—ÿ8|zð&zÿ¼^é¿ÿüò×ãʼÚqüÏàå�Áþ‹?|ñ´üÏ/¯ŽŽ‚—¯àáó_žÀóÃOžýúôðÅOÁP÷ÅËãàÙáóÃc}ü’šàŽàóƒWO~†Ÿû?>;<þg‡€ýxxüaÿøòU°ü²ÿêøðɯÏö_¿üúê——GÐ�§úÅá‹_AKÏ^÷ exü~G?ï?{†Í¼ý_a$¯°¯Á“—¿üóÕáO??¿|öôþp=ÜÿáÙ7|òlÿðy'xºÿ|ÿ§ªõ ñ8±(÷4øíç|ŒíîÃÿž¾|�CzòòÅñ+øÙ�¿:VÕ;<:èû¯�9?¾zùœ‹(†Z/ Ô}qÀ�ýöÖ篘þVwgã/�ÿµŠb.$xv­v&Ѹpk[±ûD` fèv\6oˆaXm/¢!Ì*ro0\"7‚¼yßp<]Àî>¯,-�n‡2;'ø“SU�ÒL)76Æ.?Ï-PHåÂ,ÀIJȧížoÖ�dÀ ¦�4ÖÔËžþZ‘†ôÆÈöIcåÎë…eª9±¶p„¦¦;�zr´´V£wô¾G››}¾64ëßx¸Ö�ÝT,FÂ!oî!ÏD²øíQÀ›¥ù£bM=¡gk}[Mio„U™ˆ¬L åéSþöìCôš©GH·ka�bS"¼¾QâOÎXÒÙ@úÁìSÔXa—DØx8žÇ ”¼ iÉ@· &·ÏP.”Ù2>ì]·7köE¦9àUô•ƒ½§ˆ¤µµ·*ÂE«jžwJ—XÉõDÚâ&«ØO1%®cúò®4#ØŽ"àtÄZS-g£ÂÈù§/¥ä¨Œûa¤ÜþØPÞ sŒØ{`uœ’îS;T¬ñ‚íØå±+Ÿ·›!^…—ý›Bîúð ØÜÄT ³y!î+dò ̰ÓsÊXxŠ3@—ÊC¼_îÇMñ¸)–}ôMJbt7—‚5žÉâ¸Á™OÒ‹~ ú"zúO«!ÈÜ4Y}@ïh¤^jÿP!lM6îZðϽ~Óÿð•1“É5:ú¸‘ƒÍ!åË'&TqºkŠºZ¾�Îù––}�Íú·ÑÖpžåhY1Kcc‹Ø­©+·ÛlP¬Q…~Ñ�nôå¿ê±ÿÎkõ�[éLÓ°"šÛ®U‹¸/1¦ÿæ£Ù»Ò±b×u £î˜] �° �4µ˜ƒíðT'±’KpµDU!»xç(þÛ…ÖÄ�§ÞØV ´¥›ap}Y^ôÎÌß¡êR7Tbû± ¼ÖSw””Ôm¨kQX+�‘‡!¡É@_FÕx"ì¢Jť˨¶y•ÕUö¡ ‡IuÐfƒ+AÇ\çÔ„ ]X‰uµ9‡&ªë0‰§Â)£)o£ª,ÍMèšrê^÷K<�~'ì>êE‚_ØåÂíIÕnµ_~´^ÕÎ^¹Ôî"“QOjXãf�µ+ë2SJ®LA¥Õ®zã©M]iŒïŽ5jé�RS“Ôºˆ¦F;nPSãÕîòÑlŠr�š×Éê‰qòm±Xð©ZÁê ½2ïp7Ç­&Jð¢–Jg# \ÍWœ\go/XÃWkh»a<#‹Wz¨û‰œ:ø–'T»bÈĵŽÁž¯7¶ ¥NÍ£C†ˆ¶;¢c$N˪O´_±ÐªC¿2 39 dzôDp1Bðp-ˆ¥Üe;4f|D¸LÂi4Æ x¯_@Ú Z-!µb:Á×ðïx<–|€²M3ÐVâáoèeeЕH‘pá³&´TÓÙͶï%—­ŠÓÛ,ŽieäŠØ·UÃh‰3ˆ^äá¥NZÒ1Gäºz^w@"ÕÍG�и𣩋Kü!Ær3×VÓqûzA™šY+ô­ÁÛíjíIÚ ¸ºyißÅ鲇ÖàÒbYXg£�ï»E$P\.Ûx®\R/%@…¨{ƒÈ61=Ó%ŸKád8Ÿð1&^NÎ4�g®Ú1.yŒ1“BGÓ¶QÀÔϧá»x:Ÿ–ŸÇ ?ß2ŸË«ù×E²ãÔ' I·‹ íû�ºy2üfîÖ]Ñw`Õù/ÒÔSHãsåÄCvd‡=D�ˆõ)lôÉL_ÚY�ÿ6œã@oFZ3‹ªÛ�Œw§ ¶4àð25RÆÐ¹vVR²ÑVq‘²9Q”K›‰åö2ù8t'á%j©Y�ã¬:9µút>*À³S‡òz8‹V×En×m®ýzEÁ|¢‚�ŽAÊÑ•>±q¶éM/YÄíë´!UµH¦fF++2déùû­8þº«BÐ՞x½¾VöQ¨ÇbO�L©j[®–R�SbÌQü¶åN}Ð ¹¨l™Þš·âbûùúÖšâéÛOßÁvðÿ:Ù‹‘µTÊQy¨'5¢w ï�`Ó”«–_]Ccq‹ñw-˸œ)v¼0S¬9"·¶ù® fqì_D’ýUxôÖG±]57˜™�DmIÿԹ§â‚úx¡rX[ãµ’’Ë¡m-VHr2uú…qEÎÆJze­Æ*i×Ö/aq­‚Ò=öè“.Îã‚(æ`PÚ'Wƒd¤T6¼ØjU %H•Š„;Öö,¥-1o¯èr®«Í±´8jQÞLÁ°*3îÜH¬‰š®-L—ôMîê*«—”ŽJ!­££æ•êÈA»Uø¹¯Ð-�OíÒ,6 ±µ>P1>®+Y€ÀÍ- v±â1|jši¢£îEx–DÙ4ÆÑ¤Ý'/ �v-P·@¯Ñ«3|ã�j‘£$ùŸŒ”«³\-œ‹4{ÒJÖþÈíÒ€r 0ádÝ`Š÷çé$ÎÉ®møÑÅ#¸4OÕt{!“nC£5?þ³ÌX½¨*Ô[åhr ÀWÆ®¼Z Ýl»2hå=cÐj›^+›x%X±›%Ðþ¤‚c™:�[ ‘…ŒÆmÅÇb)ÌM5Õ¯âd¦Úµ¨šYÑ;�2?-¹ RËôúLEQdÄ¿ˆ [u¢)l>øMáK4…/ѾDS¸åh 9’‚²ásŒŒÔóZ£¥,4 ÚpÍ8 �£`¸â x ð³Ë?=e­à7ˆþb™­Òƒêv¹¼=#\¥n6ØLk˜çÞ ürž(î+¯´ê¢Y4 Ú;.@Õ¯Ms±úB #_ˆ³®"*ñ·0ÂiѪqÑóé€�êÎC�!=BáØÒŠúÒ›6 �áeù¾³ôÎ䂯¸£>:`¢&à…˜¡O4îEOˆRe£¦0�N¼[WvÍ.émÊ’ 5ÙðDüú}Õð®<§£À§8­eá{H׊£Ý†Ù«sW¾Ò1_<½ƒDçq2’NÞ {U£]" û’Ïxw?xÒoLQ6°^Í9 ¼Ý|į­¨'Ë’åOÂýÿv\ÿî„XÝj@‚ÊÐQwW ÌÛ2[+^{˜eë}É_Ý‘À뿊/(ÂÊ(J&fÔ¨ä÷ÿ®ŒK€¾øA þkb”\ÌëýÄ—Z¡õN®´‚ÎÃQzQÚÄ«†Ã«¤;šŽÖ•.b¼ƒQªEÅylîLsŠQfÁ} bª€Gi×£õnHH*n�)ùHdðmP¦ª¶Øôi…|¨ ²PÍð=ªdø<—Á­U¾–½n+Z”)Ç»öªÂ+z·AÝëºxÍ |N¨%’Š˜¤Z´äÓќ̺}ÝìñäsUÎ^ѧWU>ª§js«v®|�¸;ápôÈö›v?8b�<éàÑ• Œ1úEX£æò*ŒGõ=榥Œí„^ºÃ·"¾ˆj©…�ø‡èˆâ ºÏ¡ }“k¥-éêE´–Q¦„1Ã¥ú©*Ee›€("=�‡“@Äþä+?.¦Ú�ƒó0ç©î‡|y5œÄòëTA6äO_>WÔ~ž(§š‹ðR8Ò@ 8&ÂX´‚Ð=+µIé²hát2Úã$/¢pÔÁv.93Áàæv}©´|g¨s(±ùŸ}ì—úˤiø¯õ#ºGayiÀ¡š“*‡S\ýã'NÓ ,'HVB&Kà“ÑH·žÔD[ï LÇ ¤ä &Å,ﯯægÿ�Y {pRÐß4;[ÏÏÓ‹xÓžÅßÇ£½Í­ÇÛ;›;¸.²ˆÖÛhÔkÏç»@Å0¸!’ㇷƒ`½œ²Œ][_`+ƒ?¸º`y Ô*u«¹_·�£6)볊XMBÆUÉUeë"õÈÒ% v¼B£ÄoËB¨�šHâ–ÓRº^Sg4V.â&zàŽ¿¼¯sœô¶zgAkÒ=«‚î_£©µZKbaénÕNô§¶=Ãy‘ŠÍˆt§L´ä­¿µ©�ãpD�ƒ@Ã"<$Y¢7oÃìŒ#E 2ºiƒ@{@ɧ"|¶'˜×r$ô³T†Ô‹š‹…»²hçìüo ñÎ/-¿R+ÕÈÎu9Rp_÷Ú7óÎ…Øgpz–4N¨ÀB§ÍLn3RîhUF4™Ä³<Î%nȃîK‰7ç»¶ö£ûÎQ¾ª—¶bij‹|·bŸRk”‚×Óý•˜û’ï¿–Ä”Qk¤O GÞÖ†”ÑU Å�kуzjæÓemî,TfÁ½Þw)e`ŽÎ"—ù§‡×Oh©®ãèt �b}˜Åù *ÒvŸï?ÙÓ/×QÄòÍÆ×D¸¹0¹¤p x-*œ¹8·@„èlÕÍ¿¹E�W�¼MýàÁÊé«2¬�} %ƒ¯tæ†Õ|N&24œY6è°À¥To�o¹À !LËÇ]˜! “£>Gv5[c¿Ã„´¾ެˆ#„ÿFóx2ÊåMs–^Ààƒ(Ë`¿Äcu¯ ‚Í…IÐ)µ 0l(¢HwY4×(Í3vîœYaVj�'áYPDÓYšAaè ßÞåØë páûOž"î9c’ TÁWÇ‘œšá$ ÅÕè�EWO ] ƒäì� Ñð\Å"'àØÉt<Æ$:g1ZY�âñ8BE)«Íu%�n•Ý�"(‰¥ÀG´vÔ¡‘ m_®––ÐÝ“ì¥Ð e²Ç„—çòª †St¶Å…H$Z^í–ï•{–¤]U©;ˆ.Sø£®EI÷©ŽÐÉ9w«*­„‘oÂxf]Țʵ*S)øv$�å„’Œ”hŸ.Ÿ¤E®ôƒ5-Z¢6Öjé,m¥y…'že¥9�+›0ãŸ{ŽÙ‘¹é” U ì®A½ðѶh5¼AZétI�ä_S ““®võ"@~ÅÙÞ&Ôþã:�˳ŒWS¹ •cXè5P+�Tõ³!@£ŸU˜0¡²ÝðLY 1²…ªÙ3˜ék#߃~5Ôí.ƒÀeà^w’|ÓÔ�ÕÆ$*­Ep䆸•ÇSÀÄc\çáÛHÜêà!eîÕəֳ+»Í”àpfN@@ĶrHõáH ¸I�9ÚkÑ©QáðO.é –1º•;G•�%IãOâÍkÇͯD ..ÎÚiø¾#¼¸Èƒó4§t¢òÒKÞx±KÛ¬‰úbºd<çQÞ`ã…5ð9Š 4 c³^pDÆÉÒÉ1ç„Ê€Õ¿Ê@¡ßvÊ :§9u$N¹cdÑôï9à�œ‹,´¬eßcÎÇj%&ç ^�tË#g:vœë•¶…a•Va*mû9V­ìJÛQº»‰¨¬Ë¶ê´VÒhWXÓ˜)´Íûu™lmlLIaŽ‚r&É,mݾô¨»*¿[Jõejý%lEj³zVb9¢!ÿ`d’QÝ'UE=H‡Pt=ÄÈŒÃ)ðÙ>YÄÏ,Ï1hÁ<Ýh‘—�ËuàË— ÕöΡ¢Š›)4?äù}¶£°ÉâQ°©ÒW–6�ÏàÝØ¿*á_õžþÔ—­„ËÞÖ*vÀ–uF™ŽÔà³ìa"�$gâv·v^:NƒâqïdjÞw“4�‘°õ¾L3Ý–e#>Ê)r �ï#b ˆ›1:õJò"xš³%5÷žÉ,‡’"‘¾¢ÇÇdÜ##!œb_O¥Õ6¹§›äоMaå&ó,»ds3i0n™[ä¿„qÝÒo”–¼-D+H'Ð߻Ж´+@O#ØŠÓzئ¤Cz¶*h¤g©¦U1�@÷tôŽƒì!h«´ø\Š#°ú滎ùˆV›õ„…˜ÖÀÿ0�³ÇËfѵõB1ÞKËj®ÌËgßÜaϤž\÷P\I8ýµ.RÊý5/=>�Þ·'w{ù¿}K—ÿŸäŠý_o2ÀªüÏã�e<ÜRGó!KßÉ|:àØ'E<�r-»–rÛ�Â\(Ù•ÃÒ˜â£T*ã}Au�¢ª{ÔÁ—8n BGIDe9ëà•:ÙP0pG‹tL@Bšô‚—¨&¸ˆ…bagyaÀ¦Š0qJIY!%o©Šfn…CÆ�»WôN'Y*áĀޗµäŠÄº ‚&y�©{¦j¶æUöÁWg“t LÑ‹hñù_.öªoÙF°sgñðMT²³ÓoÊ •,}!·ìµaeÂԪ˽å/õØ?Ž.õøÁ„±é(¼ìjwråÐÁ7}ªÜ8 2ÅtQ öèF.CCz÷;a¨¾7È—c¸hrtÙ5ïï;7†ªäE½Ap¥…0«lÚU´BPÕµ¸RŒ7μ�¯E!–C±Æ)Ènæ¹Ø˜žÎ€ŸÊušÙÊŽ2þu./»"ƒ×âK²jÙ€7Æ›žÚ.dLËî§r6»¯!dV‹*áÙ‹éÒ#YÔÁâj?Õªzaå‡ý¨k]âyYõ 3vzÜ:�B…O�G® tq'"y�W F+¸D(ÈÓMdj—ò%&“ ©Ç•‡©£j¼ŠÎÂlD‘bÄ=8…›aZ•þ¸ƒ6” ÉÄI+ Èì¶ë jï¹õœµSŒìª/Ý-uòÇuRdé$/Mh9Ù­œ‡î–_�øù¨¯ ùóÐaý/QyÜØá%,Huàj>ðÙ­©4´|mqT‘�Rq;B¶GÒ±‹ Ñ´™Œ#¾ðm¹¨ê9±püÖY¨sÈÛy2ÝÖœ¨S>r~ÇBç‡=º¬Qz4z¿„ðfúF/L$WµÜ®›=® Þµä¿*`7Ë÷ß}‹B¤êËôéú\z\gnÛEF t]¬žuâÿ WðZ:öÇš}bæÀ ÍÊ×â±®, v•¶Ýɬò™w1¼ZÿzQ¤–Äs½ž,ß=�B4­%Æ·ÐMoGÚTº‡–Nï°*…OmPlüðEu{{àö !nA’Ò;É¢¢=­[bS�ÇÞ*‘´ÞªÝ’T­X]ëÿ(Ñê[ ÐÏu|?å ztOKþŽ÷‘ÌÚÞ Ÿô¤KTÈ·PSa\ôù0eò4ü—}BŠ�†NÎQ6âÔîøt¹{Í%îL•ܘ§Y! G˜¡ï®\¬l`ö`‘A—…0 ³Ñš^—Ê\{¹ëV•�źo%uå† ÷}fa Á|†*Ðé|Rij‰2“¦Yäµ\@O#òÅAã'(…Ãs6<ê¨Ø£–M@Xm ýî‰ÂxÒÙp©�þYÂkr©Âj™dÿ,ª øƒ C:Y%Ò~4Ü&-q(< ¸…ÁeP„oÐa áÉ�kªÝìlŠVÂd¤Àshݲÿ.0ëmÂãℼYx¦\§ô RÆÞ¹è�ž�œó(a“²3ᔌÒ:Ô‚Y,¦d4@‹ š4Êh^�šr—V�[Qï¬çV-÷ð6áLN ãH¡]’nc 6 4~Ü*-èv°·'*£]�SXû¨b†w¿W‘õÄ«šºËžþôeåžth ÍÚ�`ÙÚ„ãÞjª|C±a]²¡Çþ{§EÞ½‰ÿˆê÷å|þ”Îçk*î¯E¤HÓ‰'ˆ x|‡Z~¹mã¹%Cú•{ìpÝž Å]Eä\SºÆ×íŽM(—½„Ðvìv'c âŸÿº«ÿôy'p‰ Qeé;±8Kü£¼¸öå@`'~Ø’·UP­à^_47_vŸ”‚æ“ÆÔ·VCžš_¸¦O�kZòBèÖ˜,_±ô^dQôáî>ˆ.‡¤‚(Ý‚ÞäÊ�ÝMÒQ¤ÝÍ“('�ùF6} 5‹6úøôOI²�0f?u7Þš!X¯�_+ZŸ¿5~k,/tÎÙ”ÛØp¹ñWg·q_åOþÄÞÖKß�X‡T}£âà³ ™¹ÍIÕ”Ư#ÏYYs¼Lâgt.ÃX¿Ê÷P®=–U¨Ô©ˆ¶È!®CáicDË"X g³u"ªÜz>‰G‘pÁè©xV¹¦-�AúN×èåÃ<_T Õ¤Â\×ߨë:ê1?ùºÚé¯W*Jdńޡ"'"34ÛãÁžu#'"%…½²ör%ÁQ˜äkàÿ� Ï¡÷ã×+f2\¦›Um�Çs ½$1éþ»½±Ñ.Õߺ~ý|>(âbݤÃpÆ!bjlÕ ‚&²Iî”���N°ÑÛØŽ¦§M³*c dñZøt•ìÎî?ØèÆDíÀϯ£Gã�è±Ñ‹Í x¼*4ÝÁ™ñj«úÕ}ë•鞀ŸíÚ·;µoÔ¾}XûöQíÛǵo÷k±¿U_µ~¼ûõ�–z4k®Ì9£û‡ÁQœýÍ-s Y³Ø¤àVÓ‚÷›ÜnZ�æ�¢Åy^>¨{ù°îå#Õ>—¨lÿqÓ‚û�±¹ß�û�ÑÄË¥®d›÷þ*îðn�, b8pŸ°Ó0¾\Í(Ç£Pá¶ÜÍH¡ééŠPx1|±l½m(:£»£ƒ-êÑ(ŠfÀq‘¿TeϾ?|8²çöJ0vF+d;×2wñZž­¥f�Ó3!rHæ=Å80“šs¾¨ûFïE§”ìª‡Ô SU*ʸ3Î]ÀhÌ3ÒÛ›÷SOÊÕøÛ¾uîJñîðÜ��-qkHûž&jpâ~aëéëGÛø_ (ù!¾/ëg]M™*ê¤ã1´4ˆð¿¥j ¿é&•}Øh»Kr·´›TœsEº�ê[ò&[?ä=ÚfËd4Ȩ̈Ø-wƒAäÏËpr(WÁ(ðOŸYbÔ{-A°Â­JNÏ‹éät7xòôï{L^røªö´Ç}6;Ÿ»@âPM`5)€tI±Œ�òºã8šŒè2ŒRUuU$Î~`qÂ?G“·šLñn3p:jHà Vwd>ÖFdø†l�D±‹«I…ËöÆFU `¸óaÏŠÛA�ÎJÙФBc9õš"È©æE¦NŒ'2^…¨ÈÖ¢×ÄÑ"ˆ>4A!õVû±fÅ„ñÝ`9>;»Ñ^òªØE¾¢õËÃW£vaø*Tí™”„Ê›áß ¦bøå‚Öà·6œòÓ(™S*ØwÑ ©¢—Þ²5³+p‡“ô w"šP^o+3Ô�ÀôÞ`GTÀò ¸ºtýÂdÛ5ejŽ8‘ïu&‡AeéÅíÌu5¸Š 7Þ¨˜G×n¾Zö 5Œ¥ÝZrÊ 0¨°Úº`‹À…} G¦Ax…üþºŽI±.s\ ÏãòL“Ë •Ш,…iïR@²_Mgóf‡Ã¨ç°ru0ZlniËQMð„ Â!Ùq¬ 1Šß"'m),Ç—V*èê…£™Ÿ² Ö×ãñâ•Gc¤2¿Ò¦ËÍê›¶[„2Ô òÿz�¶›Q‘BüñÀa<ï홸j7NÄœVíœæ†M8]7Ñ!&áÊ·\XSoóñåUÚs¾ŒÜ�íJäZá­DÇLP>lê^ªñqXt&’¢£ÖB ¾b]~HkåÊ­Nºqªl ÿ;HöjVïyÀ¯3#µGœ à´‹úØúdžA~�É:_îhè¬\aÈ] ihö ”¨N¹ˆð¦êR¦¤u%dî#o¡ÚÉòà˜�4Œô�’9–í…ca&¯4n+3 âéHÞØ#ÄY� K�f¢rSâ�ä5�(힦MÒóç¦N…`]›3Gze à$›w]òâÔ•¿ugR[p†xþ~rRœÏ§ƒî›$è•Ù5JwÏÃd41VŒf>ýeÏ çø«÷ ¶˜ö@ŽöøÍë7ÿøíòò–¯ WBWÁ¬%ÝÉÉqB¢Pð€ßì|a-Â鉧"š¯4§Ã„6Á$¢›!€á9ìQ¥ÈzÃÑë²; “ˆ_MÓQ8‘ññ¤Ó Ö,K%�EpNr®+'Õè¥:+{Î Ô ó8ölÃ%YU†…„wwý¾H†µø@ç/¿Ãþ§Iþ‡Yù_ó¼ˆÇ—’¥èãIô® ÛI"XÆºŠ•c3v ê¢W‘Ìý(¨g#~Pìtdñ´`-¤~ãTój4ãRÇtx«žã*èV¥Ö=Ë"JteQ­é9ÚX[Qm#jªOÐûÀ:¶DÉ!FömPüR.J9båì³qý^ø#—#-Á_¿CÆžªï…·‰8ÇjŘV2[š¢)¯ä øoÇ=À®J‹F¥¡Rõ ^‚ˆ#+-œ�ýNÓ\•bÊ´§#]¸<¬ä9ÕM³ø 5å;) U²¿£ð·YÞ®Fƒè œyÃö'ø–nÊÛnû"™Õ?[›6ë&t+ Ó¨·È×áv¸ó8ôUã=á«3¼�ÿí ©ÄØ\@-sý¬+ý!Å’ŸåÑ|”êóÆ#»±˜Ð]•©SN½š¾³XC Dǰèn]®1Êš¤gÂâVâä(•˺q¾¾GîbíŠÜ~béiÜ:øñnš ÍÜ÷W/¢Æ³î²‘›[Þ…S½Æð¿]+žÆ²³ZfAy‚K§²^b¤&³vlYô2ˆïZ…2!0×�ååÉsúa&CÌ.tj�4u_¢¸‘f:ÂĻ䛋 AäÖ‹Âõ‰&ã •‡SŒØæYÑé0:瞇æº-J·Úîù5ƒÕ³ñÞ�Ï�mGÌÔP˜œ/Å>ol]oÇkÒ)¿&ƒLyá^"¹“p�§“y<»{�¶ó$Î êïɉ”()¯“_˜©—‘X[`�)åwŽŠÈ^P%BÌ´*T/:Å?Ç2Ë4tÏá'Û-;ª°Á§`öÁ™ÍTºâ£ì·fw|w¼˜%Í×£Gø_™5µç�<Þ}]1$ú:�E‡’>±lnN Œ(*{qr2��‡‚¹R¤°陈¬Êe·e¤¹S¥U4=Ž'Õ­)oÔ|UÉfƒïÔ•¡µ%jFÑp’«ø²òy·c!ÁRtlnZï¬lǃ;'=¦oÕIŠSKj–­l“¢ªÚØ}D¯‰ üøy;ù‘øÞáÆK7LM§Ì5ÏÝ{èÎfß™ÅLyc˜½LHwœ`•Ï$,È"à�ÞFœ€X�Ó¨2A|*‚ ò¼&”çžÎ½Ëé4ÌU%xª ™h÷›ùŒS™`®_æŸäwϤŽ]Ñ[™ê°éj\Ö£êå¸áyᣗŠ?AÜÏ)[-�G¹“³öÊ:Yð”ªÔŒ6ÛâSä«c¹ã¬õÂoè®?À-‰A×Ðý8Å×Î[½ñ�Åßn#)%Ƶƒ=áþ rzÈr,~!&ÂZ›2 ©Á®{`õ,Ã2gÆ:‹FÑ0ÍB'%ª÷–c�­´ ¯Wꯙ®7ÁÔ"î$<ïœÀ¼‚ílòSæˆ/ÙÙé›7;ÁãÇÄx+‰Íž)¨fñl6ñ$½6R*+雕]¼²Ö˜ ÂcäÎ6Úï‰MV²›Ç <Ô\I8PáÜ¡Û[Sò*MÕÚ‹@Ép¾4çè`⨅i‰¹ÒŽªqáÓ$»kÈÞ¶ €}š¯Ä#X �ò¢§ï„æ.øfÝYÀÇ3Gnhæžåÿõ}ÜËã¦?†ÐÿhÃGÎh3oTž­›;&·QžKû—Ðw9Ü•éKM®ÄýÎ•Š–ù*ÂHXk²¶Î{yg†ÂY• ¬‘BË:G([VüB­èfÐòjµü¼xIY)ÙíÅ�«IE}Vïá�{õMŠþDâÅ)ÖÛÐ/*7±¹´¶BcÌèŒ5¥®Æåª\>šÎŠËf@¤>E· Œ)ðR{,Ú¿ôå‘ùÄ[_ÌAl‹ÐUÍ÷R =ömTÙ|@\w,ØÍN*m-tZ”侦$žGuW‰Þ+#�Tk}Þ�ÒØõžMVQ[�Ùá�”àU#þ£¬ºßî�ªµâõV»¤½¡î0�P: ­VÞv«W%ÂCþdt7m±)êþ*+&]±µˆ{l!Q5�b_I”zZ]¤DfIs‡v·\ú{¯7 gqüŬ3Ø]oº”­ +S kž�mÓE3oMÚn¶d¯èï³ñ÷Aê?Qæ¾¥k=Lò�z4à³7´-5»�°¬Wž?ÄKîll ª‹%½ªÝí Ã;v–¥«3ÅH +¯mНÎE\œ³Á‚eµàÚ´ø"�Ç9� ÌG5©d—¤E¼…|Ÿþ–rY'U"gÕØXÍQaWøñP³ìð>S[ºûž5õ âÖ‘Òÿ¡iªt{⦠ÍäóßÕ³?ìQQ%=ÅŸ>tîõ�r@Yg‘GádV+«Œ§hkü0z\SÅHYØ´.áHª¢Oö¯S.Õ@z“�~=Œð?ÿù«9œg9öe–ÆBj„×Âr EÚs@)©­£a<ŽQ p)9Ð?h}«·SVÜÄh2�ÉŒ­sŸ7ÜzøÀ§ñS×ã€ÎÝêU혲�{Eµ”ÈZºë/•� g[mâ±½ÅOI+nœ|¢{yf…yÌàÇ”ÀUK`Æ»« ^Uqöq‚±AM ×(ÅQ’¾u3×ÍÓ‡®€•<ñ¨q<ö]ˆí·ÒƸ€S•“øÂt¦¡%ïxk_C´b€ËÀO 7Gùcr%÷k”?ÞF;¥N—úÖߨû(Xjò–®J0pûÔ­^'¶4®î©…ƒÐ§¨0M`‡øìm¶‰Ù”©ê!–tŽÖì]É2š¼eE;¼nKÒµWwQÙÎÃÅ,,3»]ÖÎáãéÂ}ƒø1˜W8"á¤h=ÞEg~}þ±6ný¤[XÞñ½’ÚÛÇöbAeu·Zéh^6x% SP©,ä%†VÐ¥’Ý~üÖ_øGî62 ª# B¨u'j}ݰðøÜ$ êëñ6üw¿ã{ȩ̀¡°Žó &› ³îº0”éÂíbwàƒ_ãáxÜv€}|ãv’;üxø?Ïú*œr¹Œs[µ¹9<ÚvÀ_•Ö˜[%Ô¤ •í^y§ÌGGqV\^cÿ{'q<܆ÿ>ü$–Ú]0‰ÖÑ\1kݳpfösgÂaœ¡k­ØlÖáR!ºU.*z­bü‡†g•n»¬©]k§6Ç| ¿ƒ F‚•‹ öhʇ¾0á[`ëí ð,¿#‰µ*–Í(Š6#wÙ”&MÎ 1 ¾+ ’Y€äzKÇ™31MʉûþÊ¢W ;%£šn³9Á§Øog#,ÙJÓŽ—ÉD£ €²˜@%qg“ƒ{µe¿Y̦˜L�O¿º"郌…½ƒ……þB�ò^& IíF¬£�‰ó3p¦™7ÕÈß*s$ñ;ØåøL\zÅI�34aƒoO÷ƒƒ·xõˆ¦Zù›8驊GD<ƒ‹4{ƒÓ!Ö¤€²¡^ð(F>f‡’^°]B.àxo.Vþèäé<F¯Ò´è¯¬\ýÑÞEÕnLö²«ÎÎÎæ£Í~´÷Ýût/ÈÑ$¡XÙ…£!(ö~ÿcwHZQû=௅¯’½îf'ÝÛØMÿZô&QrVœï¦ß~ÛŽÇ­â÷ô�ߢ)ÅÞÞÔKöÒÝ ëÍð˜ó  ])Ài+ê¤t¸÷þª“AÓ� ÀŸü5’ð'ÿ=–îE¿O`T{iU¶ßßøã[þÞÇï�Ñ^ø{þÇŸntö÷VVz0ÚaX´òÎJ°Ò–¿Fí],´7úv“;ÛKZûíÎtïý³Íü¾ùGg�â¾nI >gðó>üdÏ[,· ýDK@øºóÇÕ.  »ùÕÞÞ¬]ü>û£Ë “dÀ}ûm‡žÌgè–µ¦í]Ìý@šïÅ­)à`qy˜Œ¢w{“NÑË1x`Ôšt6:ï5Bûû£?ïhøýÍ«öUÖ›Íós‡Ds¦Ñš F`²WôFétÿ—ÃVÑÞMDŸ`~wE5Y ^¿Ç)å{€œNü{ïl\Ä= oøHቫ_ôJàŒßˆø‚ÐGOé[›û`tk¯h_QžŒ¤ÇÚŸVûê*êEïžêlÔ‰y|ᬩ½èÏ?aÅ{ñŸ¾¿* V¥(³+—^ .ûk(\&ÜÖFø{§€…gLj·{%ë±Mè,Ë�Ý\É%�ÉÈ ¶ø}dºw¯EOäêhëéu6Ûí«poxuuÕy°³ýh«j·¾¿Úõb%á¤{æØaBߦñ(àÎDÈ•1A ikïßó(»<&»¸6 ÆEœ3Ôûùøù³Ã‘ª0!¾w/AzU §B:ªŠµ‹ìH†'$ÅÚSÙz¢] Ñ1©EÄã9^a¯ö¹’ñוèÆWi»8GÿÄ$ºP'ÕZy‚ô“þŒ¡qLÖgQÑ Ž1�û,KÀm]Ó(LDV!�eGÚl­Á@¢¬XI»Ž`”ž%”ܤ¨TJFOÎãɨ•ÀZìÜßÞÙÞ)O‹o6Ï…Æ3Ç0j­P¿WÔr…­ûÌ ŒnÞ‰z¡úÙ†_Ü]zÁFÀð´€>=~¼ý`³�›À2=KzÉp¦Ônºµ’`–û !üáÖ£ÇË Xöô(‡«HÎ{^ù}UíWÆ.ô*^YÚ  H+ývoåoòwÐRô^ꬴƒ÷+ív'‘”Š+Ñ�À¨@à˜À´©â=Þ$@Ñ&O»±¬M?�Êô[lûï6¾_ Üwm8}ð@H�Žv$¸«·{üÄ(<Üe—hòº UVÐÃw�V¾ÚCFöá H%°×Éú7_ªÆ ˜µ__=Ûœ‡}øIQjÓëÿÊÓdOÒÛÕ„Óš'Q> g@�“a:Š~}uøDz´þÏÑË=\ÉY<¾l…mŒêµ|³ŽCJ†S~žK­W+íÀ”ªõz…«&Î}¢ïzX‹€ˆ’:,Xâ{]'ÆW›»æSqVð.�° X¸°tw66·4[ºyðюΣH˜ñ'ð8Ô½ˆÏr< v‹Þ8Îò‚ÚÝ…âf7Ìwp˜X„Ä!‡]Ç~w6m=Ú1¶3ï…÷+½uj¼ù(éþï7ouVòlx‚OFÿÅ—ÀŒ®G‰YúþãG�Å£Ä-ž[À>ÜÙ1‹çNñqfߺÿhÓ,>ΜâqaßÚydö=.œâÿ ­âÜ7ûþ¯Ð)žLì¡ÞßÞ4Š'§øÌêÌ£ûšÅgng²¹Õ™ÇÛ›Fñlî/,Ì;8yñòøäÇ—¿¾x ‡ÄU[0%)œÛÀ„À—Ë3-éEÀílþa4£lÅ�­û°ÖãÞ›è2ßç/ÿB¿üÝJÛ�ÄŠ=Ú½[ã«ÎÖÆãF—IàÀº¿yÿq]™·ØæÃº"ÐÔýÇ[µ-…À¢=ØÙØ®+B׿æÃµ½™ œ£^u¶766j»œC—cµGõÚÚÞÚ®mkàl,(3ƒq=ØÜ©¥­S€,l-~æÀ»Ü´S‹Ÿs€ss£žçºê<Ú|°]‹Ÿ3ûæƒÇµãœû;jû|‰xÞÙ¬íÏ;œ¯GjËÀØ·ï?xTWfð¼±ý°Î[×öNí¸Þ@<Ú¸_Wæ Î×ÎýÚ¶.tº®Ì ôyks«v\?À.…�Q;_‡0ê—üSäNÔO×.ù‡;µÛâ%��­Zôü¦këq}™¸u=¬ús`K?¼_Ûçc@óÎãíZ8?âT<~\;]¯¨­*Á é—Òyÿôq ð“Îó)}yÓù-£/Yg¸J_ÞvÎéï… ô)ˆ·DF€NÃWN»lj‹zÝÞåˆÙû«I„ª'>uøa³Œ¾qíX¸¿ ¦�O�ÖÐÿtÜn�,u¥¤£×ó�­‡;ãp¸gðŒØBQøªøóÏžL+\›ÿ…†Yo�~ Qè½\ù¹¯v+ùóO` ¯Z(nqa%ߺ˜ý>LðÌB¥>Ô~Oαý¨3f€}£ÃWíªÝ’ˆ2br1ï9üˆF ŽÃzª0ç8Xèü�ô\q#Å+G¨N� ùÆ®Á°ÿù§øVh~+|µÝ»W|eÖBD$�´Ãú¢L„eÃ=ùÄÓ•”¸ƒ•½½�¹�ý, /{qNqâð©ý°hë¶‘YOI?»'ø f¼©Ã0B #û=ý£ƒJM£n ?÷¾Ú¸R0 Ô|~%àµïÝSR#UTõä¯Êý5»o[ÉžT|¶ŠüJ"ë]©p­è£jëJ>ÒºÀ}cAápaôË™¹ÚL<Ë©¸w¯„k]{ÊK�¦P"–r|–ÀÎíh#¶rïÞ Æ}ïžÉçíŒñ žÃ8¿{?#}rû{Âlô}‚ˆŸãíÛM$�÷ð´�¯®jßÁN®x“Íyç�W�¤ù{Ò–gsÒƒµßƒ@e­^¯fg$°¡¾å<Î{E4�¡ÓîsÔcEÙÞúû÷¯óï[¿ÿ¿ï¯^ç|Ó†WWëgWdj7K'¤ÛT¸RÌñÞ Ò¿'øF½#*Aµû+õu~4eZØÕÉ�»PâcºJ-ß³²h­ôVÚýß‹?v Ô¿ŒÒ÷*0(�ůpAýù'þ�2ðM.¥ŠÀç÷î%b¯¾ çï˜>êm¡h›i_]€dµda­»ªšZ·(íû&‹ߣ D÷'-ßüuHs q“îQ…4<:eoöA6ù>íI„ÿÿžLcÞgûcü]ûqž¬ ¸O�ÃìᛨÝÚl·{"GÂX- éL€i;Ø¿j·ûÕ/ÏìqÚó`î Î.ŒµÔv4¥#¯Ï›àH4o¢Êm y—gXI ;Èí·Ê/:õc!óß,žÌ°ðùóOãDk˹÷�xÍ_÷R@*)†:Em5¼/+“ìƒuCXBöœÓ¹_nИƒü<Ì¢W(=\âTtì‰Ù5×Ù$¥ÐD&&÷Ì霆³6ΟÅdô|Üs�W9�íwª6VÌû¦¦¯Ö�3{{Æä‰ƒÛ)ñý{�‹þãy{Õ\_ë?c2ì²5Wr("m¥û ×.*k �‹ƒ—0�{ÍÐÕA®ß^ˆÞÁxq0õîÜR~”UŽØÃŽôÐû·õÏ ,ʧ€‹O"fÏ<§WáhôLžV‘R  ^»›rƒRÉ^Œæe/Ǥ}1“ÝRŒ+«ÿ<- º¥¨q»Ù¦>þ‚lñèU”m•v$A£V«0­„Hw$^²ÍŸÐÊá“0@õC;ý=üC‰Þè@3!‹ó— Ç„òZ»…u�à §OæBY›e� ÚCkÓâÅ[/BEüÛW䑞ÉýLO¡ƒoþO'm› Ð.Ž„¶ AS,%ÜÊÙ 3G(‘üŽ*¨?àFT[ÙꥨŒÐ^cÏ0L-NË|n)p펢Çé½{¬Õ+ÁÊÇ�(d ,Ëw«¼ŒÝ¶ÿ(wœ—C´÷–’ïf)2Os¥y�º™]ùm¶ò=X¢·•rYOiÖ¯Üc9ý>íÓÙ¡´ÚR¿¥T²®ùÙÚ/ÊXlº¾dpÅY„áqÝÄ­½àp0›ß<Ç¥•À’Mü;!éÐ ð¬è¤ý}¢×2fIlïŠê…T1eÆÚøƒÚ2÷C}‹WˆÆ£"‹ÂéK�ˆw+ø5:Ãk·èÇ­+Û¤�£¥kˆ²qÀ_ÄÅð\¢^Ð�´b,œ™òèfS}Ã2Ó„YÙöUN¨úÈxѲç­#ÄGvÛ<ð1qKð6V<^Éø–; ÇZá?>Šß#>èB¸¥U6òy$ÎвLâaÛ’?çæ2F¤°¾.’,âOäO,£¬øŒ<«kY¨S%XV‹€¾‡ïËbh¥Jty>-‹�¨Ë¦Lb�1#e:~™æÊ,ó¾Vdâ㪬?Öï�öþÛÖ«�a­v¢Š&±½öŸªsXp'áÛø cù›z€¨ô¶§üÛ¾¯~õûÆ}œ>µðF¸²¸çÕ@�¤¢ÄÜxÝQ§yô={dDŠõ]é® ¡_nÁè_»ã� *ÿÛ=ocÞF«"Plbõ©«KRÊâ EÊGé¼õÕFÇVq"Q>n¬Î[�+{mœvw—êBéP±zâ{[Ù¡òù´¨_ØK�LšÎH*ä€WR·^ºš[…Å*¬8²Ô“ü¼ƒ¬™ç¹0ô§}•œí��QûG]<ÁWÑHÝ”]¸2~DtÖ6e±p�&a˜>áOâɈêìJ«Ù5Ðv;jUèH¤´; Ûi+•…0Ë‘Ž_ß~+¤Ùx­V�ƒ¼ë;î%PíNiø!¤þv@^üæƒ �öñIš¾™ÏàY»�ì?ÉÝ �‚%vWôö�x'ÄhÉdÈ�Ǩ4Å…O[èÀ]åÆ%l ÑWØO1—$Í�Â'²è”«%œ€x°”¶û¥Gßcï�g¢ýrcП%Zk_l-«𦗼=̇‚"¶…W‡Ä÷Y ±.,—k×Ö‹ðCy6»eË%wyA ¤”|Eð�öHŸï Wii¼îô‘Œf¡joŸEn<±ùÌe¯V÷÷6”rue9 Jª†EÓÿ˜f´‰aÃâJÞ'™È¸ )1¯ú¢Œê]�¸U´ÑÉQa§Wí~Ú’.¢•m¶¼­ÐRVVHdiÞDÏú¡Ë÷½õNet¢º2ðLBk}­=Yo¯røè:œÚ饤ƒÎù$V§ó´7OtïkUß÷ÒÆw¸+0¾—6˜s„#�Ý)ë¡d¡Þ–¸«r™´'ô«¨ÌúŠ?âaA^®XËàÓ ‚ŸM{*!—¤˜4•j¯ÿûïèæ§Ö |_ù£CÏ’³w]ûù h�÷ß«ç}³ªsïøÁÊ•âŸÔs‚.(gâøe GØ=è©"pò8ê¸$ï÷?|ÄU˜ÊIF„á×�E?²aGõÔD€ RR¡õ‘ŒPïðö÷¡µÝ�j„âð° ¶l ÂuÁ;¼ñb�Td*¤äzÇn�Zö0AˆIê«qض4Á„«]Åì·ÐcªMþñÜ ”%ûL(Eà_e ,~|$iøzëõZûûÖïa÷?ûÝÿ»Ñ}|òÇ·m~ö:oß_?묭¬n­ô×ÚºNŸÞa©Vï›ï©8–믬Þ_YÞ�<¹Éï“ÿ¤k‘ÜZ9wt™á;VÑ�þ–¥É™éV�Çj9dz¨¼›Q¸Ð ÈÝ:à §Nû-‚ý6ê«ïqlW§~ÉÐßþù§c[�¨„6!¼8׳öJ4OuS_&—¹Ô¢�`€É4¯£˜5’’»žëå#µŸD_9h‚GZ²Å¤VÅ.vÔ)Ü[<Ÿð䓜ʣðÊ%åîßBÏJ'Y�@Uîg�EDôZý5:H»ùJ/’÷šV, ÙŠo)4;¡¡mwܶô0u#ÆÐ½Ð ìU�-!QC/ã·¯"ÛòñD™wÁ\t6\�aÀЦn蘟i@ ‡üBÔÏ>ã™�˜Í³¨ÿÕæÕ�˜'w.îsØÅC z�a�ZxS!ñö>9{Nþ¾Ø)è¦A®¦ ËÊ(ûóÏ÷âi?ëÌóè BìO®PP·F‘±.r†Eø–Ø(0×α@å…­Qg¨ëäW�AG½¸ÄR¤ÆqWúõ;óµ}¿m”Z5K±ÙˆñöÀ|kÜ! &ôªóö�«+�ZáôÿãöÓÂìõ½Þ¦éÈ¿“^ˆùМ¼±ãä_uû/Ͱ–ÜbW��‡÷>XàXùÉirb8MÞßÞÚ|ÄN“>| œ&·m?–qº²½Í� íl7avžß%{Àô¦½¿ÿŠ›|Â?²):$P©± Âï9%öYކÙ|:èù0›†ïôC˜÷½ìj/AVøåLX°"´ü¯{¼`´÷¾ˆ§@¦Ãé¬O·Ä“9öXd˜±ý½á÷Ä‘ÏþÍ·ÍÃÖ¯™û£]¶NÙÛGMݰ¡kÝ´­p÷G#Ý£•Î>8LÐI?míw�%¸êl>ÜxpÚ%´§W¥éÞ ,»Ñœ/ç1€LÂg ï:é}w¦èË “±—ìYçmB_:o·éË¥1Ñ››[[Â;öÑÖöŽá?j£®¬÷^b¬ƒ—Ú§Ã/½—–ŠQïääèàÅñ«žœX?0Ì•bm{o1é@Š‘¾Ä·?ÿL{ÏÑi®÷ü�=þƒ5®d€«Í���ÜÛ!.ÀÇ�H·–¼,M ÍÝ„<;�ÕŸô~F£ýƒOmXÃ7{¿¿Ï‡)ì®äJ:0 �~ዽô ÃÞÓws°\�Óø•¸Ìâyy9R‡¨‘ÎD…޼N‡¥8ìý?gl£Â‘'Ь\þG`4iPk>MÈôíÉ„‚ÄÚ—¾dÿ(8Ng­voHEÈ(†«Ö”%ŒaÑC UN‘W »$MÅïÆw!4v7ÿ¸2q¬­åd§ø9ô>MpÊPÙ~ð=¯¯ô–!ž|"­WÞD÷¾j•ûô×½M~¿úÊj‡tuexë®f-ØCfÔ,Zvâ/¯Éœ-8~h·VÄéò„Å%êÍJ‡â�ðÚÖTFQ{ìÂm¿c-t¯g.jËÃÖ¤à#�ÒĨ�M´ߢ@a•|Ú,·ÛІLÔÂgž¥d‚˜›/3ìÕ‹^8Ì¿§ûï° ¥?í¨Öúûü]¬™þLþtªö¾›ÂîàB1&‚è¦è®Ü_¥ž›…Ü11I;G¶ýsªŽõŽ˜Ózé9m· tœù —ÚRŪ¸Z:g“tN< F׺DGbíÜž¶[Qhuèýï@oÿØ‹ÔZ�)1‘MvEý˜úTÙ6šO#Ô�è.¼Óã3Bå¶ÕeìÕoY: ÏXúD•ö;Üæ¨ÄF‡£~ÒÁÔÖð%íp@®#þ_íÚì¼÷d3®tËZøMV;‘â+Š:·ùðáÖ‚Sú¸|Ò{Ì0Ô©ùôà‡_³Ó}‚Az¶¶/híÉŒšÛïüŸ Áüf.;ÿxA_æ�”þN;@cfp�oml3G@L ³~‚!Ìà+ ù:`6=†§CÍ&抑è`lÉûwî?0û¾émKÌYºÓF"ÎÐLåàÝ0š «zx;êMb¼`)S©Joå]GÉùŸ ª®ŸÞ¹EçÁ:Ç@h“K::Ú­^>×›ëœyÜývK¾ýÆ\œÔ4qÊzáe×$%e¿•õŽïÝöÞþØ»šŠr5�ó+ˆpH9å÷y{‚£§ÇÈ»Ÿl�XH½•vÇ ¦õÕ&é eìïm'ÙÓX>Jã»#ŸDÛ6ëDÉÛ8K„ ¼{üÿóö%Ümɺ…Æ8:„Ù¤Hj£HÃ<²-guœØÎ$†Cƒ@SB  ÚRdÎo¿UÕ+ZžûÞ¹N$½¡×êêꪯz¿ÀzBi Íª#SÇîPAçâ Ó…;/ï½2º;�ˆ{«?aýí)OcÙ8ŲÉ’vQó‚<~xpPúŽàû]¶‡‡7'Á�3ÃÀÆ2Œž10kIË7j&JÇ|šr?úknÛšPL;ÁÏ6Y¤45ìê˜ê|2]TŽ¡îÍ„nï›R½Ê�˜¬4ít�V(¶g*éô�ñ4fM³Lg«GŠq¦ÍQVY¼P¿ûyA\·¡ê}Âpñ ;�…¹æ;µâ³,–â~09Mû|ï \–³³RWSXQhJ÷Æ&æseº¡Mæ Ãei<«zßÕáV9i `ãhK­f¢‰Ìa·æk?Š¥º1^X=mðeà>r‚9èvAª&³Òܦm-¥½¶<çi§Ã¹M:K} ,vzÿ¯×ã^—¦k5Uy2cÃ+é«]PY\wØ[_˜:–R7Ð')‰¼¿]¢Ì2>ÐÞBÑB°øÂR/‘ÖëÚH3ÿ›ÚR¹ õm.ø¿©ñ CÄjÕ¶Iÿ²â~@‚[+H�ä/,âm™öÖ¾B±¿°Xû\bƒ¡áµúTr åý†º±¢U§ïù\}’+ܵñqé«j}~Ѫܳäd;íáA(®Øš'Ú¾HLØq"d˜�>”,x¯§³B‹ižÃBÌq�µ?‡¤Ã7Ãí³¼¶çc`¡îpu�}FsV\€e㘩¾†# M›qάy8‘ûªoLã‹�—”DâŸ#~…I«/Ì¬Î·ÕøLìX\F´‹]£gk‘öØe¹ë!wñ^Nk/¹N;:¢a£ÆÓ‘ޝÏTΕ{5úÝÈà~–{-3ºu^V4ȶQª-ÓR¤ÝÌRD¥¥¸¼¸§n¥¯°ŸMÏåW Ìôí‰å[©’d×I ˆg%@½1^æ¡n›¹N³×aZ¹S ì;µÉ¾Q,EªªkÇH‡‰žö`דçät¤«õœó$U?å,Þ ÍÂçЇ.˜Ÿ¶³Ü®V<[(ߪsâôj�.v÷ Y dò¬®Ü?Igûš‰W4íûÌ/šì÷ ð…žEµÝÇš`eÆŽêa2ÖêÑ03webª”¬�km`V9ãZɆzVHÑZ‹ ¢k="¿ÖIJ_ûe“áÚ2&ï;ÎW•_m¢Þûhk<¹Œ?sªaº£]9Ðá±y,Ï#;Ú¯Ÿ_/¬6úÍ-X·yïZ3Ú�Õâlh˜ƒrTýRÓÁ¬vÖ·XÈÝ)ý}¥îÄI#y# à" §æ+‘õøwJõÀ¦ŠÌùFîjDªPð*º‚†-ôІ³¿Õm}T>emZ\UçºEÑÄÒrXð†DL­ü6)®yºNåÆR±†vÞ)3ˆšÝµÇ)i3ÝöDt9aÊŠR_ÂhûWZ1ZW—Tï%ÿg½·ÕÁ¾KeßEVßñÏö�Ý–/í¡{(1=”ªJwµûƒÿjn5ÔS¢hUÇU–·o¨ÜqûÿiBb‰4ÝÝžíc¯,R)«6Š)5wS7Ø >’+¯°'i§«°;¯Ñ¥ÂÙñÉñ^wPR&üÝs‰ñ-Ä-Œ,=Dl+îÕ|û^MÈt¥"‡E&x—˜/2RoôupºqXfÞh"9è�gt~ŸîÍ?·ôù€­þ”UüëUM“J�…›„Ò¾ZOšuièTò÷Jæïr1Ó|1ÓX”DÅGC³c°û ›TÂS¸ÍˆjŽûLÝ[¤ïh•C`t•¤®R¡ð9EuyqMhù4Ò÷k©¸ÅZ¼{xÇ{ð°{'j�&é‘ù:.Üçxžð£G¤ã€Án¯H¿}óJB»V½+éuD5‡l—·3ª1¼'XU«±´¼ÁŸ>ÕQ«1|J- ±%JJ¥;Âå#ó—ÐYk?^¬96Dùbë�Èê@}ô�ž"é©tsÕ5o¶˜ zqs!ž‰¹YøW"½¾ÄÚíÜ¢ÖhÙøÁAŒÆ%HØËúw¤ÓIV„˜xëVéHƶ’¤?.€ŠT¯�²kêÇBüiÓ«NGôHÒ@ý¦D~(B5ã Ùô3e&yÑЩT³z°×”K(OlÑ®R�WMC7fQHIá¯w„º ¤QÀ{åµg+›ÓÔ—8OQ!ß]ö€:{:”EcÁt+ÄtsYýð¥VЍ‰xöt(9Ó+WÜLQyÆÔ†· …‡ ¹L¨0Ë5:z€ºº*;ã¯gÅþ®Psœ*-Ÿ=Š}kMwJd½{¥XêµÒ,µ^*óS?S&½BÔÔ–/m+ʳb{_PQEzôT˜p'o„ùñT˜uÛØpõw» Z«{ãb7–×ËÜf¢­k嘬5P¡¤?ìß§Pâ ý�kö~ h·­Ò)´6"£µ�[mµâÊTiQJ»rïë:,ðÿ-_Íæ”Û›SÅñ™›#ôý•Kð}u�R;·æ÷¸Ã)ná„/5°,%4 Ò$­®zX½ˆç@ vÑ zjŽù¥ßKH£�YîU…«=馳(« kªàµj£K&ªº&­ÎÀuñCR(+u(Ë-hùë¶Ø-q�/ÆD]‰ØK,—*Ý…9®ÂÔaž yÍñ¡²¥‡ Mitß}Eª¥è½gÏ…¹$WÞ‡OŽÏFjª¬=g±ÊÒ¿yò<¬óm…a.i~°»Ív =õ=¿%M+Œ|ž'R%„N¥‚ǰ·ËĦ¨$ü Sûk¢÷WQðQù"¦¶øÎÒêÛ‡ Všù°lžzÍ›Ž§F2̃OŸ¶L årŒF�&’J?ö´ú`)Éozÿ‚ë†ÁÂ�­ �!U«B�‰2ôigj]ñí7@A8‹=Øç à°­xX¨¢ƒZñÁÊy±Ì@•h%ù-’´z©ß¢6¼ÐÄÙôxAÚ&×Þ™…Óˆ­¼ë™ßËoçR_~S)´™kÜîV°ÕÉ/]Qúh1gK,†£¹Í …F·Íb¶Ô«ƒƒ%eÉ@¼¥Ë*ÇY¦)Œ~Ò 5÷öõųoüz±"T4>hêÄH_¼¦´¤¼ÕŽØ´ßhý÷^ÁRõK'ÃOê»çñ6yŸ¤“'i»‹-�ëÓ× ì:³9©Ãg^æ Â2Î=§õ¤ òrí9]Èè�Wõ;l‘Ltõ›³µWsLD¾¾ýÑ“?HPŸpOP[*ëtãµÃ…‡¼òø…¶s]¬c܉/>}Êž ‚N$+ó(ì\(Âì­]wâFÊi9 :žŠcè&Ú8sUT!Š„ö ¨�þg%è?@Ô:nWaÚ ùá0³¹°‘�mhŒ…b@ÕùFEäÁºÙÅu9†ÖlÎ…]¸~ë *¡w ×�¶æ“†ÜÊuöž¼2zç‹NÔ �“ÝéGž=󱯌%Qa,ʧè�6Foãp^ÙΞ�aP»Þ x¥jäÜc®‹4QÙÀ—„²JïfpD“mÏÁ‡Á|çÌß¹°Nˆ!NzȽ«¤ÿxH†¤qô’Œj^Ø&…”COÄÙJÉb¿>ü#ï LY‚V_èAÈx\±d3ÇÏ"¿ûK#lÃ-*k;x¦Â·¨ˆñ¯μZhl¾^ë ôŸm·Ÿ_ˆ–kqM`tsd±·î.v=ÛµSà8š{×_Õ¦¼=ÓsÅ/–¦¯ž?8lž…kä"ă?>™pôUoï -5ÊÅž¹/ÏÀ÷Lø½ & ¹+Þ½Ãㆡ;«¾;ô;:ÿ¿S'BÏמ ÑZ̾¿ûa(Å|!¬ØÏb3Ù°Ÿ¯¤2ùÛ¡Ü^~=•Îò;)�» å±d})mÏòWR½øFš¥}øKª ßˆ�µÕXÉ*o²´H±­@0�¯ø¸¯í´øq,–Œ†3¸ B~פã{tý"]E_U¢-ŸÐ æ z÷¡Z¶Åª6:5ö#/r3%‡-Ã@à’èé+qæ4×>ùÂ[ä(p˜p“âE(¬f¡ø°cèùr‡|ëyŠwí)v9i¸`RŽ8±¾ `ù®Âé@5lù“M/{š}‘wï!pÝfvïŒx¸DÌH'DaNä4äuÂâV—î�ìôèdtŸÍ监ò„Ö¯ …Ì_#CxðR"ŽnUê3è÷a{öK-àTÈDªûøÝåëׯ^�ß=z”¤I6¼È�£¿‘˜?zÔjãIÓ}·«Ê=¼#üHxÜï›é*p´`ÅKKò?üŸ.O¤ÌÝÝÈ#öW½Þ§Þ¡¯ïÚ„'XÎhuÛŽ€d$Súpw€j©è�ÚÒÁvÃ&�¿cÛñ«šM Ö¯Üÿ†H¦§Håûx6— ™ÙŽb ëUI‹Þµ�·„´ê‡!Š[ ÜÊ!X Gè,Œd7*ÏKÌÓ”W\°�«}lP—Ä�á~æN8\&äU¨êù½ßíæ»¶’uÌrνØxVGE;-ªeê~Þ‹’ Þ"x²ºC¾v)wpð#õ¢ü^¬rãˆ\SÖ ë*J1�(†MÇ�Gâç6x §ÍMhû)ì\göœrÍIÂ&‹�^F©¤J:%“7ðùÂÈ>™Å³.ákzÝŸU Ú‹¬âYgý•^÷gUr‘Y½Yu¢"G? ]ӵΠ¸hÄ¿~ ‹+¶R­/K©ÞhŪº´¦1|°wQú„ç]ÊY_O…N¦ÜhãæHñýŒUQYóÛõ2�›2>¼“|�I¼DÍž¢)ñÓèêÛ¤Ào”2©˦@Š¥•l·¸.² r_V²ï6 =�¯†k£¥…ÎÎÜnþåWí?>>rå±ðáa¯ày�À0ïf–p « |ì»±%;À÷*M¾‡·•™â¦?ÿ5*®ÛZðáèw!äazËÊßG›…ÐÁ€b±côåŠ^œ›%sSjcgQÈ+¥„Àš\/Ó/N9¦KeôW±Ñ•Õ|££B-"EÙsøY”Û6€ÿÀüU·›$ù[7¢×=¡(åV7DÑvÙ6–ŒÅö&.JÞÖo7fó10VHz¯õÉJœª~=Æ)^’ë?³ÇÄš€ ¶�W<’Ã1óVˆ–Vè’uª£dKléõ/sï¶HÎ�ÙKÿF&�xNíô\ßðãa‘ÒŠQ5‹]w:J¢‰÷òl‹2Mä%àRpøõuAõBŠ =–ÂÅõ­<1m^É3T.A,l[p¼“ªtâXî³ð̘…£-øñIÿìÌâl4cL‡m”·Œj‚f–gÅœÊLÝIÃ$ð1×g©8^Ñý¹/ F‡ u7áLÜ~÷Â�€CmiKÎÈÖš×iØ2w¬€˜¡ïð ¹Â.“‡ ø†n‰Õ(Y¨¼#>NØÇ,"ÌEä…•’¨|×Ç­ÏÕ˜Ž  –SN¤Pô!UUHÕXÕÐì¼æ]OM::pónÇy ËK|°RàE>؆ÏÚ5K-îÛ䬈øÄîå÷–ß¹†ׇ78F‹'F¤™…fÌ4–MxT@yÞn¢Šºù¦|¿#ÁùèðÀˆÂv0^£ú=ºL"ß¾51¥×|a¿ÈðÙ6/Òµ9 �ªX f…“#[˜$ ªÇåCÉwWY²ih•÷á/lÕ”¶úoB|ï•Ã+Ùõ—ÝonÕ¥ýgDÅVoî,¢—ˆúEôõ¦° P,„’³ ï”ÎEEåÃ;-BÙãáÊÓ¬h›{‰ŽÂ´Y¦z‘Û Ô–O 3 N(Õ÷ÈŠÁ Cˆ›n;e…ÍÙk§ü pßÝ®¥�/u‹ú°Þä…k‰]ì�ù€á‰Ñ?´*Mø­3ÜéÛ¸F2šã™}è•DÄÒÇ]Uß‹fÌÏ¡µ¤ &†ìçŒjì�Ò®@YÂ+5?¼ºŒ¸/ÎÒe%)D0>7õÝ ±XÛM…<œ–fL@SKk6áu.ʪ\㦠f:Å™}+R‹svM:mÿuEõ1±eêËÊþrSq®Âö©YÛ;F¸'÷A|¾�’H‹»:[a°¢�µK à¤üjßfÕc ©Z â J$X¸§J¯ÿ)7yk³¿~–—…ÞKNáö…®­Ö1é£Rÿuøÿh _Í­vï‘û‡{\ÀaÙ>äSÕ æÐ¾—qθXöR –]‚f×êw³�¦-¸l<ô�H4@‹¹Ðøeû�|¬õGìÐ>b5Gd¹Hä%—6ŠE §”u|}"H4›ë3çáÀq+ü ’*Ї¼yt)zæfdMñÀ4¹ _°$æX¡Ï÷¨7¦‰YÚ‰].g^M´ìtfµúˆX"«,ÅÝgr(6î_3í4å)‡Ô.U‰$\ÄS:a+N £^òýÉÛ2ýçÒÈ$–¤ZÚT�rå…œ­€A’¬�züôI”)_µ|“èïDèÚ :Nj‡º6ÃdßÄVéÆTÎÆ1o¾�å3nÌI #Uiò9�}`àn×é6âLÊü’-±l¾D™¸h\X%½­pWá©ÌJÑ’d5{¤x †Ýúf!ÅÊš˜ì¾`¯èB f]¬Í>’ÎÖ¢]Òè­Ônÿ±ù÷Йß2)½*$ ¼ùP£�RFj«›Ð×ü�”`Ù÷‘xðDDg ZL¹4’‘“ v_hÐ;›v߱ͺЎ£å³¹&P“IñX}iRâѡŘQ¢!� î¬Št€Nˆ)èˆ\‹“ÓyhÌZ�¡[BJ¡½þÁ™åkè4 ‚ ¡™E–®Éã‚-±+¥yðÀÒŸ‚¥LoW¡t®DËV†•ŠxÞdŠŒ�0DRbE•Ó�@džý£û.„¥>KÌ~ûU͡꒩ùaÁ�Ù—t–VbhŠÉÝ&õ�7Q"U[V%)ØtùO—?>ÿöǯ½>Öå³3Áˆ×—o^ýðÏËçÞbÔ‹ŠúîòÙ[ˆR”xqvíôÓ§6rB®ÂLŽË˜Éî]lñÖ‹ÊéO-Ìë±ÃÏG}>úØŽ–…¨Æì¥ªÙ2T\ðÜ™8lküÂ5Ô0 ÈŕЖM0vïN *³¢:ÊÛqécbþÏÐ*Nhüs÷@„A©¿’bÑ$?§éOÈÌDEjBÁmJMOsWcWð`[p v�¾k§*é8L¢BsÒ5wô{g9;bѤV5 áæRô¥Ááe`ßtEzq£>EYȸ ØðŸŶéh O;y\|y?Jõ|%¡�œ=íòíÍ)f°•óHçÔ =e-bO$ÏL%AG"‚×t„úaÿ<·í’T¤¼ñÜ7j®®â±®b%‘¸6WŽë-‹¡¸›ž•b7q'µ•Q9$pº¯­}D Œ.ð¯m«Qå%(ÒŠŽÇ´ÃJZ,Þ#×�´ó¢1ë=„5ÞJzú÷ªLO«Ê4‘7àG�Àóh ÚKÒ�m÷0Ú)uáê­ÜœÞЪûíx51®°}ƒÒò5KjÊíÊ¿¨ÛMWW î‰•Ð7˜õªxÂÀîÈŒX3 OÚFCâ‹k…gÃvì9ÀÄqÇ(û�ò4L�Õ‹¬:ÃѧTKÒýð—yÛí$Ý–.‰üÇ DŽ}0©'¿ ]ù¯X^Û¦ð@–8É€~\LýÇ^>ÅŠ›o:Ì®�;ÆV•¿á`Â>ý˜~t„‡ rApÏTzY׋õNNz}4ÕÆ©tŸ¦«œ‰¯ê‡_r€ '¢¸­{‹Ð7e®Í(Uø¨ça¿ÚNüŠÓ´Ìn 2íÖ@QåÎ{°RcÒÈj£B0¥û¡k’JÎi(5¢ôÑ×� â#õÓ‹ƒäWmYWá–Ol-sÒ¼À>•;ˆâËÄq°“ w‘–ý!�3–tæäíäÈ\«‘…>@°èûhJD韲õ×ô°¸ßðQÀUÃGº�WˆK<¢[²wÄÀžØ/m²Aïí°ÝŽX`NüpØ—^tFŒH]û4t#(<¼€°…D€ìܔ㙗KÊK%iä=�ÊIﺜД¹“°\NX*G Ï!ü¸(‡°G Ô´.Çw'år.Jå6Žß…(K…¡]+%0v,»ƒÇêK4£äRÁ°ÍK†”±8_yèìo’̯>ôÞÿ†Ls¥ˆ9ÞŒáÞÂü�2z„iTŠEÝôÞLQÍ¿¶E첈-$ÜüiƒZ2MIëÛj^¥¼½Ý�R7¤¶U©èƒ†¨ý6­Èiì8tŸl/£Yé•Ð#ÁÞÒ±ká̇ÇËI)‚Zh'TsD��Û‘;á´aI¢‰úÝZؤâ‰[?;ÜÜ iÃt()ª÷Õ~ç=qB=Kó-Éȳÿéh¦Iq‰r% ¸¼†÷–Ðé.š�Þ65µ4r‹Ôï#Þ]S•ìxzÅš;8µè à`çÑ›j™Ÿïë@˜ížm_'ÆÍV&l]�á„a¹†ýD@V@�½­Ë›ÄTqÕK!:wYnç°§¯ÈacŠ#ñœ—0By¯ d¼JÞ ç…�³Š$^ ÁsìÂ=€àM˜ic ²?*nž8t¯£êGÂÖ]H¶É'õ9Q•"Ž:HãµXUÐKé±Â/ðD»ó8Ûx¨/ †®+Ì3Td%1ž,l§ dέÀÝÜ1ä~ óù•@fÉQ m¿ÄâÙ³_Û€ _!B㌖ÜÚ¿!õ}a\=μáIgË…—‘Öð€„˜¨;)¡äähŒ*!ròÂó‘J• •Ï8@KºÌ6™kÀKîÑîo ûü˜øk|…�É'ó)`}�ÏôY“ ·Í ˆ6ý5ùèsíÚÄÕ¨h¨jè±8Cr¾§Ó"=•†PNÿj°!ßô•5Ñ„LB�›—xg¢ÈªÓHÜ"Â7ÛbóVA—$m­õYYÐT¿¡)ÅÓH(žX 12ý0ÍÑŽHÇÌ…LÑÖ™ß0Y69RÏTïo+º¾%k`®¹û±ô*AèbaïÜ!Á¦ DÍjûL»/‘Tµ­HÑfÕ{yŠ`¬pUŸ/›æFb?‡ïÂà\ =¾õ©kù Ø©x2Rò¬}ÉâJ”‹÷­[·­Å‰ï>¤9‘Ø$QM‡K;p>yhhj)¹÷Ðeï¡Q—úd•·±ÌQFÍ4ß5n K3§¤¸óÿaÖ˜Y"Á¿òÅÆG@€™y™{&Õ¸4Ç {bY©`cR“ªL;©Cú9ÑÈDå^s4±^äâ5½h 4*÷Âp¬Ìd­ÇOêHDâ&>É[:i#`�Ø; M"ØcÎtÔV´¿ªKö€Œ=éOËwr(v²´× 5t/^åJHÀ¥¸Ê•:eE¢yˆmƒurÕ{3BÚ.@q =WëC”ôæd'%Ü_JZ>ž@RÍ0ZÉ .l²ïéÛi% â»hó,prОÈĶÓJ´WMϪ²#j9{ЬÖߊ×›¸c"‡'¾OOž ùßv¼»¯ÍÒξ6 Ÿ8M•¦v„õ5jS0×vᎹm³÷T*’èÉW·ü)›y·¥mF¥aG–á Ùí%Ž–Cx- ½ô­¹?æt}ìNïʻØïà±¾õf’½wˆwôQÀâóåqÀ±ex+ÃÆC@�[uæ;†b›{Ä ÿ"]úÞu®‡ló½ÄWà…„^x/ìR·5›S-S°€Y€Òs§r¹­µ=fѼ:ÍVÙœ1 QÑ|.ŒÚ‰�q“ÕñlliDQÔ<Ð20¬^¦1ê4o‡Bª{n$¶¡qôuQqI½�Ô(¹[£ñqY U0¼™º`Æ%d”¿æë´àˆMVÄB;Èi1Fsù^Ùó#Ë †Üƒ¾õØr)ñR+ž"}íD23@eÉ®Ùô¿f:ÅU1®i á�\/õü|\ZxW„¹�‘x Gà!Æ„´F�›Íª üɹþ7åPæ‘­‹tÕ`)ëÛ„9€ 4M#,SÈr„´SÞ76µ™T>¯ç§êB#:xCP’dÚ‚€/‚UÀý5TA ËÑ(nÞ™Pªò�c¡(0™{œ—½ˆ† ¨öb§+dáçÊá/¬ágDŠá¸eD[P|eæ„¢ s&¼nÇöñº�±“0¶² ·ä’p3ŽfYoûv΄Ž<½~÷|Î�çÀõ¾È·ëµŸÝŽ}¡Š"eñMuÝÕL>m{Î¥Yb”åEL8þõT—Rh²SA~×T¸s„ü�çÅfÆ`d¦¤i÷�öK�ó…€\Ø)æ\‘µ×iZTœû]–4ên€BYSüa۽ëÊWþá©]iÌ%"÷L€ Ì[pþϸ€?jaúqë5• �Ä9µPå±õN8�‡|!Væ�í^ròæÇéGŠ„ožß’nÑ[ç½~¯ßJ(9Ì{­·×¨�ÇK` Eþ4‰o[ùv³I3 x[wüªØü[oSºj<+ü(ÁÌ`ˆ·€£oe<ßÀn}@ÂaΗP-hWßöT»[Ó•ÿŽ�ûÃûí¾þIªïæ5§²§GÃã�1A NÏÏÄ«/¼8ž�ì« ‰Œ† H*œõV®1YÓJÔ¼ã8ê@ ñê/uÔããþÔé÷œÕìFJ¡¾ï¸�t¬•é£Î`šjÅ=xs;äTA0N­‚¢®ÊÚZEj€Œ;ç+G9”núýGÁ ^D7œl§–cà;dCºMÐÖÜ@ ]`46ŽÁŽÑ»`Ú75Zb\ÞœªÈ�±¨•§?pe‡þ#‘Ó#”«æÓ#—mTÆXTåèð(—Ïà÷ �¯àT+P/{Q·í{GÄbíß´»#&ž¡_åã*N�Õˆ�×´3Þ@�€¾V'*‘Žã'ðÛ«¸൦$Hз;.uìŽ+“fÐ�íYcÚ¬«ÛgE'Æëm¹`¿}¦‡§øòËf£PðØÍçSï*@¼ZïŸncÙÑ×RÃÚ\Ëû϶À§Þ�ù7¢Ð +Šü&¢ÈÁÏ7Ëø³FãH漇Ÿ—ðó5ü¼…ŸŸàç~þ?¿#Ä\‰IÁï¢X4ó´X vu¨û†`1­Àâ:Ýæ~æS …·–Ö::1¿i㬷¦Z*Ô×åP°”È2RÀG}BšŒP°“t-èÄ�ÁÄŒ==H–vQ+„GËh!êz1,úØEœHÈíAv÷IŠ@�ø�Ìkgð•’ài ãW‘¤™±Ý3Ââ+¸�:¸w©7äÜpuAÊ¥¼°S†°šÖ~<…i;Öo˜jc§}1ö~ÃYHYÎúlЕî9‚®4¤â³NAX@m= êKLL[!c­ŠÀ\Ð#’DýFÃl§‚¥¾Í§ÎÛáp0¤}0ÙU©U~2u~ôtÈf/Á  Š?%Ir¸ ²UBáPÌÅ�£«„ÑQÖø@väl �ó,e·ðð1 ažÝÐA¸$v‰ QdŒ=ôÈ2û ¯'Ý;~˜¶oPŸòƒç\¡ f𤫠3òÒ ñ¦^§bí%ð2}ÌŽ7™>¤¨A³Ä4‰QPqÄ|&ÒùÞCX ŠjµŠn¦êaì �rb1ëiGÁbÉœŸ�m)ˆIê’zØšºƒIú8™t:©+ñQÙGB ÂÊ‹¼ÂK…BÇ„ÂúÎï;"rm§£J î�*…Â[\-HÞ×Ça™‚Èí¨—ynÐÅ~ªƒF¼÷G� ž{Q¥©½ž:mì}Rýfpng£Žx4‡è�m¼*Ãuh˜.ö`�Å y†>+GÄ9=iã-MpígÏ€‘¿ ËîOŸâ''gîÔàøÊ‹§•fªWŒ¼mS¡thn,iHÑîájĹöÔ}gGU¨£n'ÙSïúñíÔìí·ÝkÍ$8ý'r¬o5þ´ÃÙSu9~ÛUe�ñ“P vC*§Åc K^ÐáÐ[Oí©á‰ð§c‡ÿßêÆ]{ê;Ož* ’Ñ×ne6AN‘DM´ÑQÏ—†h^NOaã´²µ-jNk8€eâŽ-¶ÆDõ1 ºAñ&¶®Å�ïØSuŽ$å×b¼dâá'A�š¸È/aüè,}�š!Ä@‘›ô#ð© ]f޲ݮP}26GÖQî%uÂ)�À”68ñ ÛcÖöqÒt=”¶+îd <S Ìxv4gj£Ï€h?….¿/¼°'Z [²z€pNÃ{m#/êzª•Rd*+Úœ"OjQ<DƒùÖ5Â`ö/Ñ/Õ=`ŠòJÜ©ûÄðá`*М�à’YuxâX¸mL€É�¹ÅÎö-ÑSdîò4B ÒŸ¾¸#. ô~^LkçŸî@|Á„q�’�ß¼‚M„ãâ´ÈG¢}¦�~pðCvLñÿC8è1M� ó]iTR¶R£³ct’ý/óðßíé¸Ýs§íÙã'Þ¿ç.>uþè¶[s|zøüÓ‡Ÿ?ÂüføÔÏÿÁ~÷ï¯ ÉÃè2¶œ‹Ð�¦@q�¥[–?º(ù PØ’‹³åÀJÕ*ôU)$öÛwÈ/� <�Ã�Ã9ËÅÌzÁ2Áóñœ!ÏO'sFL<žÂ²@® ÏЮd›àu4?8Àß²{a¿B6 "Î献´à“XE“%VÉfñ}ê´qH 0¥£ Û )`ê<Á”ô¬“æ•”9%ìb¼”Žš[JI!‚WÏ:1ö‡÷à�d&)ˆ:ÆÎNS0î(v“ÒRÏQ~ÁyR îÃc­­‚ �*l w©,âVEÒDû˜ï¢ø„4<²�:|óÌüDˆ†}@VÇ GGwwÇêÐN[wr£‚·4Ú ºç°zÖ†Õÿd¢\WB�5 ÜTŠé)( OûÖ'KÓIt‰ØeSç?¢@Ýu@LGçÃþ^«Âª²>K�³õY&Œqq©?4óç팜tHÈǪåUŸLã^”mZ´wüS–®£UQÈ| Õbér>Q¦¬õcžä²©;€×õ³+Ëíe/‹7Bv¨¸È—á*Bå²3«àצ팚ì;s¼Ä*yE jiˆ*Q¢XŽYUÉ% Ýë…ïÙ•¶ ©w½¨=|Ø4Xq‚hs4-ÆRã>�¦^#*Äs)žG6W6!𼿫m¬eÔSô�âf^5H××àòÉ™btÐcÔA�»]·�F¿ñ�ˆ™×ÆVD0™Æþ| ÑŒ;¦d´3Íå@üÁA¦µ�+ B"Ëv2Zx!™”ß÷f»Ù G.ÒspP €åò] òøw}â󾓸æ(ijù жs¹ùcJï•>˜Œßí´=Í+d‰Ê­1Ï¿»æe÷{oíýÀ~ï%d|(*B7‹Ï_¦á6æSB î)>›ÞÔ·~—¸Pµ‚!èh3âÉ ß…BÂ]øÓÅêbùÕ¢I }28H r×+ú‡a£ƒÔ`‡4MAtãJY�1kbµ§”opŠÑ #™ ðÒ­lä•&Yƒ¸“ß{jÄ“øÇ–#(÷Œ,EŠööK{†v®À¬ vAB†T¯I­â0iü‡kž g¬WÀ÷3(-™k+ù ¹¯›Í„W#(¢R4íðYÛ�ª&ÂÈé÷^J‹j…�]hWÂî rbp!Ò"!ùú½·B”îß{d"«ˆ7ÎS[R?]‚ÐaBX“ôþÇ t(fë‰kØ¿îò,XDƒ‚ቿÅM1vŽ‚ÓÕÙh´<ùýÓãóÐa:Oìtáêx4<;]žñ㣑�.·Ò NކËÑhÐ﯎ÏýS»¼Uf¥;î÷GË¥ïŸ.ùê˜÷�¬tQa×?ò‡ÃÓÓÀçÃåò8°Òýé[é‚ó#ŸûpfáÁàdyl¥Kb+]xOúœûÇGgÃÓቕnc÷48ãƒÓãÁ¨6 ú§}+]¶µÒ�V£óó#´;Ð.¯°Ûë/á«§üºztœôãT%üûº˜¾îád5\žøþ`åC••‰a?]ðõ¦¸íÂѪà¥ç5­ÛE‘Cv(?���ÎGA£Ù?ð$L³¼› Î—H›/BÿöÏ|±‰·WQ²ŒÔ(_«¿øósÉ•‹GLÕ=:;žŸÂ—O��NOGýc¾ôÏ—ü(°*(o)ùïv»Q²Ùö£N�è~a®îòôhµ\Á—Gœ�–>üwœ�úçÍ_6¶¥ÝU«ïº›*PJÜކ§g|y5 ÎΆçáòdt¼: Âæ/_óxÓý…<�q”¼¿·É�™º+˜¸çÈûÂ2\�­Ã„£Á¹˜{¢ŒŒ/òk�¢u›ÆNtûK>ê�FAìé$¾�}ñ ¯y3ÔÐL³=54i›º®Û?_ NqxúÁÉp¸<^®Ž‡Ã`y¶gbDI�µŸº›®!àó}×…f.—çðe?\�GçÁjr~zÔ¯t’®a6[}ý“~xtá ±U%½ð®mgrâ/ÏF>çÁòÔçv«eyd\,™Ò‹]R¨ÄYpNxx42C²Cᨖ—c C:5JRÒu‚O’;S9Yª®DeqÉt’£yŎŸ8+7ë›äZ $0pÚC�ÓhêíÿcMt¥¼¡ c2Þ»Ù`�Ÿôž‚þµ.~‘‡s™¾W�Îã1ya¼¹Ä3¤ØÉ-H¥]¨Î_Å‹gÁ)¹ˆ�Àä™]¦½„Åà�ÉmµUÇß.¾È½;/õeþ¡Õó(ô% Ÿm‡ž«hˆ MEö+æpî¦H¨ÃîÝç çò²þ›‡LIXow(¯µXÏB;óà ¿ífQøüÂÞÆ8Ј1h7¸Œî-/{{á�–Ó}Ïׯžspb.ë>'›’S¡†ô ɵÎ/#ì{é8\óco=ë‰(9ôúW§WŒd$äÖóöààfì᢮žT*†EüÃ` !ub&¤P…7 dè5çÛä2ïrQÖ"ªýwlÔ&a7»š3~ )L¶löÓ¤Gí¾«�B7ê%2Fˆ‘±öÂ#úÕÇ~±üÆ0†PWÈOGžÝ4Ì—]¨ncì9ÓŠÏV »Ì¨ž~¬o)¹M@”ô¤o«B§ä‘SDL¼ž*†íÁ¢§ ëQ=Š# üíi¾�R<§ç Utp~•\4ÄJ¶"#FŽO¬Ä+«BÑŠð…ÔH½¡x„‹q§f÷Ä&”XLfOCÉðR >”‚¾Jâ\¯/•»FÆòˆ7ÖöÃDgo�¼( ÔØ»Ô(:ù+E`fÊ�™©äÔ˜Ãà˜S¤RèMucïПs.‰&#H|Yå?ŸI úR7~ìá*îëÿ�š}øVq?lΩ—fj<:F�~O夘ËDÿ §y“WR^:j¥é# © Ýb]d €îëù¬Ø�$pë= sô -ü¥H¸ ‡^·ÛÚÄŠ‰!–èS½�ö椉Ë0PÙz·³Éèù(‹!ª‡Þ-L›(㥉Co­Óít}9ã²ö^Ð;š­6ƒ¿ Œ4ä„Ê:�n³‹\aªäe0ˮNJôÖ¶¥c�1Ü¡/º,MR³pÌeä;‘ê #îEƒhZ�ÓÃôrgïY˜:×îãéfV AÒMªÂ›;Ø K–—é?&¦ÏÜcnÕÿƒM·µ¶Õiþÿl:D�ŸúU}*oNIúéL¤iÆ©¼L¯;¤ò*)~ÎR³®¸�×±«'CÓn4Ñ´hùõÒÅÑò^g}k««ÛÞôQ©íM•ÚÞôQ©íM•ÚÞôÑ%—M|yUôÑ9—]ùr„*t»ë€ä¡>:«é£sjŸ³Jíp™é£Ym�Ù>;×–úL~Ô¿ÞˆúèÌß¡�FNÇÜž§T×V§Õê(èÐÛÜì´)ˆZ¤¹Ön)èÐk·:Àº‡6ioµ×€„ßèÒh�­�µ’ùPc;}Í^U õ1#+hÖx¼™Þ`‹ÚBG@œ´”¦¼`Ôgߣzm¶7»¾÷6¸šÑÑ û˜½%}‡M+ñ@/ñ_5ÛÝQ4p—•w!W'Íß“õ0LŽ„¾[ÿOµz–�ZŽÉ ù.ÜéµèsNPQ‘ÚãÕ½šœ÷ÕGiCèY› "=ç&K/TÒSr¤ÝSEÕçF®ÂØá¾9�¬’Ͻ¦ôa¹A˨¬z#nL'ƒW$*×÷‚Iä�Š-ÚÃx6G×ÓAéL£0åȸg`GéœÎÜÓ£±ú(|½O[23éFD ÍÒȬŠÈò&žø½‘Z’Ø$xECVMÕ:öKWŸ¯°1½Ã¥§Àqkê<¸œÔ�¤œi�S¨È™é�Yïè0¢ß—C5Ïz-IãgÖkJK]I!l-ƒM¤ü¥(=¿)¯¨LWéy^¥‚§’A¬èuöS_òù¾¤òh2»Òڬ׮ÍÏ0š»ë0zc"Ù\§FÝÇQ·—˜5šÍ¦QŸ¿ß¢>_O£Ù9’è4>&2ή«ÊÀ¿™]‘ƒŸ‚[79û•Z/Tó4ÙK'û§ä"Á×Î)K”ëÜL¯´©ôÉ/+á;ˆ\\HÚ ~Ë‚ìäW¼ ö¨y1wÚo¯— ¿Ckíñ"<º D›&èï�ÐA=1"�#ä Jv ã�µ£ÇÁÕ«¾„^`§J/BË:btÇU<“§s¨Í€C¹µµ¶Ññ h ìâ>–D³f?—º†ûÁx/ˆ/¯’xtMz µƒ'fk6°µ²ÄK b±ÆîòóWÿß²ŠÑiª¿uÝðöwýõ+…·¿ë¯_\xWÍràg*ôׯÞþ®¿~ͯîã+Ë|Âï/ 0`”Øî1c«2ˆìPz9ðŸÁóÏà©Y®‘²�N·Ù,IÙ#¾é1+Í]3¾“¸ý‡»å Þ5ͳ¾¹¶±QjžgέŸ™çv~®NsÿŒÈÿâù™©*™uâÛÞè”G÷ÎûŠÐ ÎÁøgÂø¯Ï?gmÕææÔHW»ÕÝ*»ÏqÏ,›³ó?�4þ�bð×'-¶âæZ«S¶óöÍ˪#u1騦 KŸòg3—ôGw­³^®[~û}wµ’_ý¥Jý=¾fŸã?V¢’>(PçÅSÍê�øæó‹0Pmì+NÞ}.�Nq?B4ž?²Ç½—A5´`éGø¸Þïhòüº�½½“‡;û»'O_í~‡‹~Ö+î÷ż/ãK½á �éZc‰CÞ ˆBDr�ÿM/‹.Õë鸈…’¹w–�ÁÊ}ùýÚèÒbóÍî¦/¿CL )[¾|…Ã-àž}âÂMDôŸð2s]ì!¸¯i±Ÿój Ã¥}�g�ŒÓF>^#=ç]iGÆez�¤�× ÛvÔ—¯�Ìœb/ϯŦÍwÈß¹ÁÿáR“�¼2ÏÂjÒ%{à´x δðÞr„·ñ�[�§‹ÅR4VÞòJqñ¢Êдjyùµ%Éô Z’t– ón¥^v×·gÓøìL!»Â©ˆFr2ìJÁq‚Ì…WíX€Ó±×”ß¿ÿZ*Õ›ºâè¶ŸÑš‡á'^‰a"‡_°Žâ’)þ¼äñ–�{W¦ÊÙÆ©<Á©®®ÒCýà®% ÓK�å³[ˆ–šþ¶sc ‡ŒPû<že*QS.r‚2 ¤€Ï_z¡®y�½úHðšºZH�¤Ñ/1;æ½ÅhÚ©NHÈSƶ9å§œ7¶Xâ‰jU„aü9x²NãÅ ê`JÜ 52Ö4Ôúë‘DñÇÅ÷!¿¬`0N ý–å¯HHοurrç #6 ™EÿÑï©=âÑ&³‹/E�¹¼ �F�‚ÆœSéPóém…þ4úI++¤m¾‹já†9/ºäM©“²nkÍ:´i7(­™•[3óKŒð¦‘€•Ñ($Fþe««²øñM¨Ñ³‹Ëè¬y à÷óʤ§áÁ¾¬ý&~•Yá®õõ›»\+´ƒÙº{™y£ŸKŽir‚– Á›·>ÒØ£ÃòÀOKÈ%.±«ÉôYØC 1Ÿ#¦œX°!º½ËŒRKXP^0%¬xöbïõ�`�S¸¼,v9Øyµ»S)§ãcý%Ùî0æè¼O¯ç\!¤3™Ïaù»¼ö±HVùb†ÔÀ¥Ô6Ƴ!£që;ÒüŽgt-ÿ¤!óHS÷“l®[®6SŠÇ[…¼Xo}F¦©Ý+gXÍ5±±n_`웜ª¼È#+nY‰¥&šß¿QÞ ¯¢ö�"KÍ3Æ›Ú6R؆Z<Ýòp”ò/3ðö)Ò±�“Éf[j·uã‘æVÙRkf~š"ßB³�ùPšÄ:Š\ê?žOOÞ¯�œ8›™gÎÄôË�ÏŸfÙä•ÎüªNO峎úWiøÄ&Ö}™ ä�ÞX\âXK‹ä9Éì€_uMiøRÉøÈd�� 8rþü_ÆU3m'§a¥¯‹[XÒíòx²€‹ƒœú“YÀYiÓ`™8•Îþèìh€ýª—*;O�þz5w‰I•;Aþ,Õ¤Êí½Ü?€¬F@ñ7ìݦH”ïkbë¼g€vishÆ,×YW!¿ß0¿u÷ Ü×¼ ¨u‡2Ч'Œ®i�P�ÏýÁ$ÛïT£�V{"ÇGÕ§cI÷ô2ù>žfWÑX[Hàv³Ék"M¸&L9 Tý3%°é²vCj,^ý ®Ð‘©ºÓFŠ}ä2nÜ#%Ý«³�ê*�½0)wÂSîÊÒû«'ëäûˆæb$>F¦§ì†UVuF:9Ï1ÿ…ŒE/ *"t”–á»�‰Zú0Ì÷‹¿I˜†¥qˆ‚[Æa.JKi­¨Iú4ü4^ó¯|#n.Kq©J Ïb�-Óya8ï8&óD¹XÀ‚&_ÎõÙ~ÃD„òWúséÂ\ZMV¥¥q3PÕ4½Ä$Í{©æÖÌ‘¼@6û’\¤¹/-Ñ}¦Œ]&g•rƒ‹Ã§,^1’Læž_Õ ¤b‘T:aÁ+>4«³Çxý¾0¶,¦MûðZœŒç¤øÈ|�QpÔ�;4ü·©‡ìGÉälõ袔éª�ÎÖ uK©–á-¢‹ÆÆÎɆ#§€úŽ^É[Ñßšâ­ DÀ/iäò»Ê�šUy[K‘wÓŸÔ^âö®*ä " ì/ú˜¤Îä˹³SÂ�kèKs‡1Wð>§Tª:'åyðë“€ÊJûQËØ иœMÙP`©œV. ÍíÛìgé&r_™ñàѼ�ç˜ñ·ÄÞ>Òéø¶ãÂ#Eí‹/åS¤±‡°­Ýȱ c£ð¨;iæïÝ¿ÿáÇ@}ƒØ ûНšMèÕðS«¶*ÙNœ´›ÏBíyÿ7{êx¶rüaåØ;öqtƒÿŽ’ˆ1Œ1�÷Q2¿gPÎ܉ÜéßëÂÏš£àÕhDÐbÚž©Wzèۦൄö*‡J¨Ú#pÛùÅ¥šJ’®°jTxݸ붩¯´}¨ìQU·Å̦"°%á<ÉÆZjÊšý* ÒÏÚ@à m�›R�®>ãÞÑçÔžÄ.ýlwGOâŒÊ"ø¢1³ÉqIJV&W¼$µÓôcCWh'� `©ùù�Á¹\ÈÆiƒJ°‘¥�Îë{ ŽÉƒfžÏÌXù€“Fz?‹N�©i-¶˜-¶h^µ5`R‰ÆÞ"žì¾MöéÛîµfÚ§ ­Ÿ£Ãßàâ]¦$2ÏøÈ‰ƒú‡ðXè’ p°~ã|^°44ûŸ{r¶øäìóOöTO«ŸDr³‚�¨Wm¥ªX�Ö+Ö µ È¿üÁê ¢’)�C =–S-`)QâÏžùÚŧ}€ïU-?kÆN�f2 .ŸÌܹ(âtb©Ùì�¸ö§ÞÎ!J(v©í½Óïá›X„U�6ê$�bŠ£0Õeî+’{æT:H÷Ò‰�-¦§»Ñ‡�Êuþ—–àËW±XØlAø®¸m×QÇ ê‘Z»§ð“Iƒ'&¤¢Ð½\5Üü–àé§ÿ39³Ñ�ïUxä M_” »ŽçY• À­.‚=«\FiÊ*Sñì±}†NZ±9N–‰5ÈH™g‹™MÜÀÔP™SXU mž†‹$=š¡çü 2¦ó8Å-Ý7Y(ð\óýƒr˜ª’#ÍêÑ÷ï©|ÒaÎlGJ³‹˜Y²OÕ Â–8k|ˆf�hÌî]䳨!Büúyó·f/ û²ÒV[€$. Šôÿ–)|†Ê¿ä.ñœ_ЈÊ,­èû�O‰O¿ýALWbšCÖ^6!›Vs·±ëº•Sz[®É†÷Då¬�4Y`›6½©Tš›î–WÞö¾Å—É`-šЫ¼EÞ0=&·?jfÝñœ�Ë.ŸëçúŽÔÁ¯Þäµ±¶±îˇ|ÜÚì¬;�qÏ\-»…%ÿ�°kŽ#1¢É�éžô&Èü”Dý'£”þ0ùšè»¤R¤ø®ÊcÅ{Š@è]¼~ßµy Åo�Õ·a§Ù¤¡ýM·Ùt*Eå\ «dã…ùS_* j�לiÕ„›~ó¼£ßz÷|Õ_ñ{½|ŸJPð5c“þÆGÞ1MÙW^€¿÷îû·¹ô�?„`uµÉ‡Ö<9Og™†åUo†å8á€!E4ª¢)Ùz‰<Dzj rR6óùÚ•d%µvÏï*t¶*ç’yr²¿ûâàÕáÉã݇¯Ÿ`u¡ZÂ+­/ЭV»�sHýXTØ,:è;U\¨o�F~¥ý‰›y%¬ðY‚¤ùBô±è–<Ú÷a ó}H•Ådæßú´ìAÖã¸6›³I)´Y,Š%¦‹*ö°»–X 9ýu{[ÉO«_>jeEVÓjuU[7O‚÷ßK¬®ß`¬ËJ4œâ?{ ûÆÄsíöh>†Nª�ÃЉàQAo ýr;�&Pè3ÜýB�¸¥m˜k ËbvÊàÕ+ÿΰÀêÃîmÞµì(¸G&/±Ø¡ü’¹¶ØË‚CÇT�/áP’“�°ÇXJ¬µÜ†)`¯–Ø©§Á �’]\ÂJŒl|Ra«ÙîÈ' ¸Ë$Úξ+ˈ„l‡az‰?Ú3£^Á¡þ:!¬GÐÖÂÑÖŒxXpE i'7 ¾�•:c)��¸�¾+,8}�ìB“'Á¯Éö^*°¦ R»rEðE †©ºn 1¢9Œ¼"I:ýLM‹ëæ&HC“I¦Yºá�ñÎ{Я=VÁYæ{æfÑ>{Š‚æCê)^J5w±&iñú®E0ÕÔ2É·ò¿ÝáÛ ‚ô~“¢PzK�³Œ×‘¶tVæ�ó·2aÈ ÿ¸°r'døD¿B†ox)-ÿ|þXSg¦Ѷ IcWÖ­9: óŸé 6á.x(x&Ô4fÊí|Çm±Ü³xöñU(õ2`ÿj§DÓ[?X(±ÁSÐ+û 6ÜïÊ k¼=~KßY½ëømc%ˆu€ —ŒNF ªb#j°Å ³÷ÞÍtÎ6hNÉ5 šYLÓ{ÁLÅ�lÓ Öò®ø'X~U ‹Qxõ6=ø#zߦÌÂÅñÀ®ßR¾°ÉŒ—öM$)ì‡*x:ôuz¡®ÑÌ3M ^j"xì±¹úã®ï¹±Ù4ß‚¶o…%ÙM+¼ºvõªso¯âàÞMb¬·|ô¤sÎ kzÔAWI‹¬Þõ%Õ±´+®¦´ûÄ�µ‹¯I ´äj¹õå�“jH“Jч±kÒce]ôƬk°öч³ÿµª.’$åàA:'?$¹6ùÒLòÇK)ý‹ËOª¬?:+~½±Ä2Mo0c9[X©,] ž^šÁ;¥ÖƒjÐg¡šr'Ü›ÖvÞ'Žbå¶b¥:Ó°ï9F£ìÐ+ mbB’õœå&ÌB“@¢»!‘˜á®•Á¹�éò÷w:!åü‰ “! R· K:˜×|Y¹W›HœÏa NT,ç×Q×k _s‘,)ä/Õ´¶/L ŠŸªLXÇé›9Ò‡Ø).ªeãf¨"&N=]☄Ya&•^žDòØ›ú²HM!R±»t]/^î'ý«·/ïjÛÚúþÿýB7‹XEȆ MD—0¤$L’´ [€‚‘\K†ãïþîáLL†Ûç®ÕY:::ã>{üí¸f�� èn(V˜àZæç‡Ñ/<±PòE3Š<^ž*eˆa;%C‡AÒÞCä+yØð#|#uV€´‡ŠH„/£s““€–ŽÔDÚB™ŠnâÚaÄæa©©ôbX÷b(_L‚Ðx±ntµ‡¾dŒÈv— í.�|/{œ|Ô2è<˜BËð•¡Öã,¼“jšÂ_ðì…†�#E(%#œòý1oò¦/Ã�ÿR’SO^¹“mûÝ{ô�mòLÉea Ñ<îG”¦¥Åm”÷I–”Xc®q]àŒ„kž‚w ¹ù`£ Æ× ˆ¿¬!ŽÝðõ0Î×Ùì$Õ¨¯ž›Û‡ÑÙ�f(¦ÍïzJ ÞÚ=<:x¿?6ÖÉ“dŠýx[îÇŸØ�·²ã„ýßú£èCº³ÔpسjA:=çÞF÷÷o¿Òƒê»u‡P“P¼þäÙ‹—ŽûžDýåÖ“§†ÖåST-3s�µ0ÌqÆâ ëWü•ÅU³Ê+­¦«st¬1ÁÊæCÞ&LB-AC-^-lx#Wõ2®¥'Õ Gm6d©M9ȃ¹Q… t¡² nÒÁ×ËÏZ:É$yp‡š€¡ ±,hR@^ 9œ›#¯2Ä.‹ïNÙNS­K“¨ê³ã™Å—Tp%ep³•q©åòA£ô¸£ˆ6^mhêV_rk¨*P3鯆T»ˆ«€M¥ŸoyÇÍÐ}ÀqLgñž!LJ8!¨rÑíK¶•t�=r ;š7Á1N�ãŽT˜ê‘TÕ0@ç\,€m–d}¥ŸÃâ�Ý CŽÔ$TŽÁÓá+=X#Ðj¹Ï‹"UÊÒLæ`�5_*·Â ›ÈÃa´qF3n )›­ËÜ.×zühN;]·_n*¶3íÌȤÏõØf9+#"í¿×°'xC_`0Vܳ]µÕ�/1_bWõ¿h¯^\Œ¢ t“'Š¢2ÝÎχ{ªVÌ)åòæÕ=Ô ­oÿz[ù5øEŠ7KÇ£ …Ö$.'ÒÀkåú´Z¼ŒœÛýý3r‹~Mþèõh™Áí8¹:�,9BwIv–볨S\Âó “ ~]‡Ÿ 5ƒMÃ0ZÐ �žºC‘zB|ÃC)N3ÅV>Í$lõ!df@†sÎ0Ÿð¯zp"‡V\¢%îþ¾PEÙãbD>¬fd¦�Q?ñmˆï1ZEÑ ù³i"j�'µæË"N�<‰aåàGèxÄωýª^¤ºmœZ7,V†å Æ +û]:OW"�z÷ÕuqŒ_�Ò[¨ùÆ•Žo“ÙWz,£Ÿí¹o[NcÂp%눇jñø*šº%†id­x¸¡q“Ý·¾±N8�¿è`CCñ—‘Õ=+tÇpúì¢â:¦D”°¢ä&¥ ™¬8£°‘Æ*ê{6Ñ q7ÿæÌ"¬F:ñÚ�šnóï·áM˜÷}«Tʃ¶ªÕ¢òQ‰öÎàË7ðñAš-ôK@(Á¡VqÃÓˆb`âó˜×]æQ kì-OI÷ˆl)Ú}ë"M/ žðÊiݤìSò:‹’�O¯� T‡ÞöcÇv÷Âää±Q-‘é,¦¾cÙY:“Ð~ìÚ77 ·:ôŠ0þ±•ê{Ê6çY�­Äz\W¸±ÇÊc·þác¬JõiCß¡�èuÜâ(¦ªÖéê8O1{øZ8œ…Ü– ƒõÝܧ�¶w¡›)|Û" _©­¾Ò_p­²»ÂK_#ì3Ãa¸Ö>*N¥J>jvÜKMqå>ÛJΰÞM‚D'Jjв’ˆ™È(ìt-- (»� * }Ooß�À”9P¿I`$[{á¢e'wÆ ò§.oÞ‚ö#âó–~­înä‰\it[ÄdíãŽ?ÎeÕGÚðZü€ù ü™ò3Yîøð}¾S|‚è Å;äÔ×Äò£¼T¾èÛ£ 6;f|D�á†ô>ü‡%ÓÏ×ð]g2ÖRõa'bxBa°ÛYÄÀDÜ(éÆ š“„^Ž~l—q¶ë¸”Xé#ó<êAÀ竹¥êÐh1ú¸³b˜rÚ¡´ôìï@¢lR7"Õ[šó7†‰¢?$c.>"n`°"3lâ~ÝÂh˜IEÆ¥ ïZe‡ƒÍ9„"J#ìý#‡­•ìáe.æšrèÁX’;ë¤kÖvÒµRîî·O’1E…HÒ¹‚j®:–÷÷­Ú…8c‚猙¬©M YTPXI~Y˜@ç$�Ox†¾qãIr ÌŒ$` Ž+~â',øW7åû—}ÁëÃhøŒm  Ùžñž»¹„de±–Œª6–’I°þ­eÖù#ËJ"´=ÜÙó\k»gvRžÿ}×dM_í܇rx—Z¨;8÷m=lÕ÷0!ëT¥ƒêý�…\ÓKUÝvSè ÑFgE —*M§§Å!à½g’±…XÛ\Ö6˜�ãû„PÍ*xyqi%´VòÅÅŸ ¿„À]Þ]§ãìn¶Ä“ hxf†çwŠO•sˆºsO�Uò>^c(/]”£XŒikÒï{œ[ 1Qd9¹lU7 ƒcaO/dTæYN¡à£ðj'ºwE‰jSŒÓ‘f-ÊTy ¾32ð•fé�ç…HãVñ<è…)lÎrôÇ1TÑŽá–€a@XPž‡2V]c§Ô eÕ9£ BÆDÑè3wšWTT¬Gýñ0*³¸‚•2Î0±(ëIRᜫwéU‡¹QJÇrsƈ×B tˆü[z@ ‡ê#V7on”oJ*2-ܯ¡°²¹79Ç6ÞµQÞØÅÖH|±TDb—Î)w°³©&™}@ÛPî~b`/‚5¤ç lE71lïÁ�–²h[y¶ØHU“C�´é¢ñv“% ̓„¬~åNuš[N³´Õa)Ÿt’”a_ô‹,ºa*`¹ÃRÊZ$\4W´jŒ § ™Ìè6_âM2¹Ñ=ºÂ[²Ë\�ø¡!âÔ¤©¡yTš£°/¢ÑèBN;Àøý]ã%˜9X€ŸÒæÜvhÉÉ΃8,7&âPdšªÇMÝ=8‚teW¢—s-rÎ¥ Yà9pU¶™Š'(P64tn{Ã�í ã•xͳ8Ô±±�“8g?Bëpý‹þ]ª[ž¿Ö8ã�zbqâYÔ9ä>þÆKQå�‡}L˜¬×zØK�¨)vÏô­“šŒZ€œrˆ¡¢ƒõ�Ào¸­=¬”Cv›<䯩ßÅE¸(PÕîúô.§ø@4„œbš˜W�\¸§è>@åÂü²ÝmÊKzeÚ ‡q³k„Óç2œ^ïûû’ׄú 5z*ˆz•­þ´%7ÑÆ *ŧmó]“LN„ ËM4BžoÿlpÃñ�›w¦QK<.�77ŸrzŽ «B½›x%ª§æëýÁö!…“2‡ð> p?ò÷Q®§yÐü»Ñö'·MQÐâüËm§ý«Ó8>¹õ;òvÁqÚPÖ[pššà½ÎÊš)è9áˆçþÉ2?vq.ýÐUãé�t ôÀU]G÷…HO7, œïÌ ILë"æùý•g?¤{¡˜óG“V:mvýtŠÁgÆ Ø2vùD}\/B£Æd��(uWW–Ñoê"¯Bî/VQú‰hÛ6ºl.'ݬõ©Á©SZœæ@„¢ž<ˆU6qd‘êÉŠà· YÀF mËz–(›® ÇdÏÂìÓ!þáŸüé ­ˆ”ö?x’A70³8‚dä »iS³úÒv¸„^ÀA_¼Þr—A™¡$TчÑ‹çfÚ–œ© }XwMgõ&aÿ(+ L(/¶P­2ûž1äO�±ØcšS¶”û[’£É‹ª1Ú}ï¨$pM¨ÊÜøJ¢«Oõú�kÛò¾�Pmâ³p�­Æ[²„—&ìˆàaÒ@_M†¿~Òò©%rc“Hå [bbŽÚ£¦Ó®Ò7Ž ȳƒ®±QڸɲÝp·1Dc×iv—ZÈ{µ=ò5µgÜ7¿'FŠ�Ⱦû]Gö(×Q¦ý8 —ßC&W( gjøiß{¹AÎq/h+ø…êÝÊ/ü“—¸úã¥ÎŠ8ˆ¹�„(Iªfcµ UÕ¹k2$¢â?Nçç‹¿��@‘s?Ü¡-¡ýàS\ì <.Ž@xÜ G#G”)€Ïìh¢$±¼(R9x{¸·ë1�ŠÏï�IPïÄøJ…~¥í´Ž¨¥ ‘ ÝL7êø)+>kÊÑHøg¸õõÔ}å<¢Àdšº‚É¡å!I~-rD¦ ›]{(I©ËßõU?”ÿ^¤Wñ�rž ‰Ë‡I \]•|ªï‘7*îdnùfŽŒXÆX¦�Ãt‘·tŶ R¿ eå�:8*’§�":liΰ1¹ÆHÝ�^Ä `W}[\¨;§½ËqreÜ'ÜλSñ5þ¥îbÕ¨£Ÿšài ­½N� Ƕ�GQ ‹'ÊW0ÃGþÚºšõ}„ËŽӳqï 3ŒÂÛÓ,ê�GqN‘‡|eBî�IŸ6!K¯Ÿ/ʵ!"•~Ö¿*ú°ÒŒç®ä�é t0æc]õ›wø\‚&F¥Ä7ÇM«ÄÛü� Œ\)'fȹþ·…¼èŠ8î@_¢àKë”o‰V…_XF\Šb&j[À&ÂòmÃ@XºÛ• aþ‹Ȭ@ÞÒ/›w:Ìø£å 'AÅÜ>ä L &í‰ò÷6E5×=ðúw0qïPá¾pv‘S©‚O#|ŠBÍi˜ó1´Ž0Ý ¨lîIYEú�À÷Ð~‘Î]Húpæ¿Æ#ƒnÇp‡�5ÉÁÛSŽwvc`c�(Šl3: ià!ú� ·Ðæöös„Ðj½xùÂq·ñúçÖr �ü(sÐÛ\¥8&ÛQ9£qÀ[2±q$Ë „ˆÒ‹mr ÍÂëOüΓŸŸ=yÑ÷ŸþüB¥µ�JÑÊÏú)”ø•6ÂÀ}{¬Qß΢Hû x¶hù§¼ØVfP(%«2ÙºÓÂâEó=ÝMÆ×z8ƒ–¸›Žó^ŠnߪÜeš^?£¬e\Ý0±m~ WÁ:-YâøMÞnj­îZ"ŸQßµ˜ú2”9ÀÀ\X"�»-F+ÕÚmÞPwáÓù8I¢\œ^‹%Ñ6®qÑK¼³Â¯ÑQ€D]Ñð;ªÇ/Œ ¬œ‰õ:ëÙFBåª÷‚éÀi“«/o  ­ÀP�mV'a0C´ÑžÈhGF„ù\¸52d †ú0 FtÂ|ð襺J/µ ¡ýŒG'PÚ|ŠCÉ1L$Î`*rÔ³*?“õ.­¬Ê ŸäÜd¡‰ånô=`ê­›—® "sÒU•@Õ4×£(ƒã›_¬Exk Œ ¡>ѪW>´eÈw�WCø°þî½90]ØK |ïQÿ­\à5yK‰h)-/a=àÕFE7GéµÙ–X§*ãWd{…kbŒ€ýi ?$;´Ãô£&ÚK5Iw�\ò¦Ê)~—â™Ú‘/n„Ax¦û~»Ø`ù­“ÿ¡ÞÔ÷ôµN¦õ�”˜±]&*žÒ´€y&kžþàÜâøÍ8C�Yp‚Ã-Ì¢v…P®ÇY/‰´£«ÎxOh Ð÷uÅ\­%ê²AB¤F")Õ_GÆýÜû‡ê&¨çE}�m.¢dq ¨ˆëÔô+>ôKö¯ä8Î(¥©1–?R$·TZQÊéù€ÁYÉ/Ð�obo^£ÎŠÞRGFœ±j{=%|91ãèuC‹9�ÅìÉï¨õ�öX˸÷ÞGÞ�Ú{ƒ431/é•w¹)DAŒ÷Ðí¤êlrßÇñ( VFºtÜNk �ImQqË:ýICÌ7 C9Šódò ìi#,ÊÑÔ.7£<ûç èÓ|îj—¸"²Õš¨Ç ê¢qçõú/–³À¡ ,½4^ª.…by½]¹��£Ží�eq¿& `:Ài&Ñ]$¦1G "f³Ë0Š™±ÔK÷™‘pÊj¥Ü€‰ãw’`ƒŽH†—£HôF-6 ÔoP’:Z~¹ ÍÜxB$.µ�lŸÜiƒ ÉA�-O�pfðØ“oáþcÁýÇ‚û‡†æšûÇ\î±ʨ‡ŒÅÚ2¢KJø6òð~é.Þ„ï¡®¦áñèG§¢:¦9*¦Ë��á\¬_es@:‚Lr ‰¤�øKnŒ& hê“ru¥Œ| 5–àÁ}ËFc üI_-µ»Vƒ¢o1½Cæ�µ¤ë”˜öã¸4*·îï[ÂЖí\{O™= ?q1j‘]Ó-¤nJ4¸´³½Z\"9•Q¶#w ¯àzŒÜRæ—Âw8#ˆ�!q^±AåÔ”†¹Ke‚ç©Ð8IšÔáÑ.ý¦yÔ禪Dj^qڱͼœøó¼ümŸ>áÑQ}Q�xйµé4GÌá:Ò)¬q&JVáJ�„7꩹ÛB&LØ™ ¨S¼Mu\I.á9eƒ³ Ä8ʽ!½æ´FuS�KQ £|^1À“ú‘çZe›U�$¸Ç¹%ú ar&˜Pdå äæ«© >B`Î+[æ&ÈÇÙJ#œŸ^©ÂWÈ;™N¦°d FRo¥JÄA`zÙ( ½E \D¡çÄ4B»ÖVg¥vî÷µÈQÓºOO lTa=M2¥fv%Ha�ý•³Hý‘þ(�le/º|ð°®ê\:‚Ÿ�»ÃI·ëf�Šýˆ%,~eê,Maó™8ër b¢Üyj] ȼ»9HC¶®­p6,Áv(ùx^¶#âMþK þ¼ZÒ6Õ•Šñ±ÐBu¬71  Å£caJrÔÅl®õ¬CãþõR#+´DŸP, -n <ÈoQÙ²€D[Kžõ&EërÉÚG ±Ã8ŽU  )*…à˜ Ôµ¨dØæ;a~éÑé§× çU昫²†·³¹ƒ§#V³‰Žäñü³vI~›7ºB §SŸÜ ºZöð¢, }Rj]âè`3ä62±ÕxÔ„Iš:]ÎÈ Xý~P4À´¥…È îÆ7+1¶0\×\­6£L�ÝU-”)q-æòfJ±Óvû8~bÔìÕDŒ–*`q;`˜ºø‰®[§ûõD¦ VylÂ�þx¨ÖU8C§Ê7»Ù¢ ÍL´PçÇ®þaÄ0ø¡q‡Ð ÈÜ�(ÍÏKÔb+Fd7jÝ_9åÍ%×Y4Ê!dA!6©œžKiÆ “…¬$mR§4Úžsïó€2.Õ:·Ç #E¶@ ~¢ê Gè¦Ðl“‘ü‡oH r2ë|@æ§þ )Øð5µB—îTáb58©´¶Póé‡ÇàŒ879]vŒAª"Ê�ÐJÁ8…k•c¹L X¥ß‹ir §ìœÆþBÔ6¬�qyi‹µjšS#?–ÜÿÔ*Žá”‘›ÊíêG>lAÞåv¦…=—jió«“O»-Ô ni N1©ä<[eª rp¹ï½©Þ·r:êw®¤h* …‚‰a3IÙl†p�Šeݵ(@øÒzãæŒÞÌ•Š"ñ"Ö‡ÕN {Âo¡4Û�ûÖ1‹d‡Gè9¯IÊ)¦Ú¡|TeRxƶmý[wÕîÁòO¯í•j]§iè zÇiu52%pØiI¬¥(¾"§%Vh´bÐù³ Cykð·S‚‹¨ÞDSEüE8ÒP�º5Œ‡…¤Ã· ŒŒ«s-Y�8,Ôº:#&+÷¬u‚ Ê0"/bƒ(ÞGH²�V)¯½“ä€p…´G¤âµš´ +-,¸QI…[,°¸H’ý‘%F9jOh\ 8�¢*¦x›†V!ÓàÈÆ”…‰°`䨦4.•Mºhú¶$&SòW¡M§î?ã0ÉÑýc²¦§¤®6ZXR>Ù›øÜÐ=eL"™Ù‘R7WêÓL² kù»©ªM‡´wáûªl¼_©Š–ã"ñ‘•c¥åW…¶F–!m�–�’ róF#-ªV„¢p~þµapvœ6é1Ó©ó&ý ì‚‘=u'¹N4NÑ|#¤1žç}i×aÑ;h3e’A¿Ýz½¤�¬lzî1æn¬1w�Re¼qQ¿ø.ç¬Rè¡Þý åóã¼ã¢2sxm›&J±Š,çJÌî6 ú7`{AW€�RÃaJç_%mòùöå÷š´{•Ñ»ÜÛ™:Né·iñâ);Eü®Ý9ªþ ”�j˜E^܆wÙAšÒo�GøÝílÕa»Çê²ãîDžðÎ<\wz¸÷þ`mÄC&—ýDr�)_T˜‹„1)ü¨Iè~gñY [ýN&t'•�ÍysqÍ÷ui‘Ñ›WliÛ%¨µüÖ¤¼©X$V-)y%P膎ý– i’*i`Q´Š1Ó¨©`ðRñ#HŠ*¡#��iYûn ú`»ŠOËpdF¿ Ó{ òà%3º/Ÿ†„¼DÆ—ÆAÓ%`\ÂïÝu·ÓÚn‡_ívÙèQí¸8˼gSøJ÷¾Š²¼@€K7´DA«\Ø ¿â ˜ hdI?EOË´ûÒDîYæŒ]n—)j�Ä÷û�åH‡„J¸"*ß?EBrÓÛoª�ÔÈVe¸©M Ð'Êá\P}ÃA”¬US”õùWLu4-vZh  Vsê¿|B¶x×ôF*hZùÁt†ùªF®7Ââ�8W„“—@·4‘¶™zÕi©Mÿ=–èÁ%a˜SnÃÅ."3»öê�2¡Åk:ˆ·Æý8EÝÒ8¸ñz”†ý^˜åk@Ü C±ÃW;T;U­�î†yº�I<øÓ‡Äü¯ÍxÐüøíhgû=§q ÇáæÖúkLòr†ŽôK$€çG¦[°ý.º3?µõ㣣t@¨>¶ û8áð+퇣ó0 ~~x#!ÛâÍÞXW¼¸„áíLGWT/:óÓè˜×kãÈü)îctv˜²—¯¾V©‹?v¶»Lw¶x£8�Åg8碤зXÏËH×…?Ô×j_ÓXlb8?gÙSÖ ñSd^œ™q�ÜÕa,±ßÌ(v �¿§U߉@ S@”MDÆZùéjYùD®í@éµÚ2p�PÅ!šŸ/OFœX;f…ÅÇ:æ[‡&†š÷ŒáFî#:k29ÿ‘;ÊÊâî5#œóÚ<6%+­ÎÑnáup€É &š©È§#a{)4úŸß ´À­ �ÆÄ‰ÑžœïfäO)°·É¬;ŠŠo Üã�š5QܾÑw5ºc6³>PÕÐ-ƒ*ì4¡]å*è`¼‚©¾M¡äì‹ÆÆH0|�bNp‚�«M»Œ!áÆzJ€30GNY€g�ST‘ü«#ÂF;�ú ¾”"_Õ§X]+jTí)ðó4yh0}pA„O•�£à“€zµS؉ ˜þ¥z§a—¹l[Ø|å¸U ¸5KP§…d΃‹jf%½¦ )‡Žñ·SáÆƒ«Ø(W³vÑn+"~u×$RÍ ;*ÁiIlMu�þ«&¹q‡ð<ÌyE×éM4k*ê +6?’ÚìÄ A‰�x¥‘÷j &D¡ «²M¬ÝQ�€4ÑÁP̼€8ƒæ‹6›ï«Î•[†2�'$1rC�ÈäLˆ†@¾!€ŽK6H‚æß'ÙOan5NÚF°·¾‚ç�š±Û3ʶý†·Ð>ÁBÖɱ·pÒqÚ÷ÞOmÇjŸ4à&Ì3' Êb49Þ�§?ð©Ñ±ûãÅpñKgÁ‡·±àþ¤é´±*#îÜ A‡ÿ¸=´>vrøS}«�¦ÛMnˆú 8^�p•ßÿÊímp @žßŸ˜x>'�ûã¿íüådû 'Þ§Ì�–ŸÜž,zV3(ÆÉ›í寮BKp„ÆÕ¤‡8x¯,ĵä›xï'q^&Áññ“é^% $fè·ŠTªM>åÞJ‹ŒÐðw!uT2ì^¡öMKŽ—;ìÕ‚WÊ3ËÆvØŽVIfâ],Å1ÙxE1¯nrü¯–ñê)^=éˆ�’&2Ƀr÷÷Ô(®A·At±†öþ•Yn±&¼óTÞ��Ôq�Ÿ‡¤_ü µ•‡¿º7b`mçÕâ’îÓªxËrŸrhf�S[yÜœû½Ì¹oËxõ¬ض3eè,‚G‹ê¢ŽŽ¸ó¨ ¦YI¨–öB®ûEµá�gfO;îµÀ�¹è;È aC�‘±¦�Pu6/.‘1@u4 ÏÃQ¼HÊ,r|D™…n£3³ òÚ»¿OÛÇåw~µ1�®Ð!ÃL·ÄÓÙî–?ÊŽŠ~·î;ü¬ãsðµ{™ü`r{÷œ\Óe½(:¦*´í´ Àg"ñä }aåS*”Ÿ¢p¢H;ÐFZW&ÒéÔžØ Ÿ!ª* nŽ™„¥ô¬aÇ„Sfc¢4Vɘã„`”ñ@EÝße<è#g¤}àD0, �xÅ̺%^8ò}>þäû:Jù2)xk¬¥ãAŸU0Ô6+ƒ“ö,ýlqÛÈ5U©E–ºÖY“BžZ·Ô�ÜQ­®›+H†¤]C߃9ãd|TBd˜QÏîÊ œš§7Ý7¥‡h®Öd„áþ”˜dŸ¡r1Yk:¸‘‰qeÛ&�àÜ„CIûÒ¤"‰€VƒüY#~QÆàŠ/…ßAE8â“Ê›ãl|~ŽðȈMNy¯ad4ÏÐgÅAªò#,²ÿ¡ìJì( PR{’e õ¶ ü6mqò^éú‚¹îöGaœø5 �v$»pŒuH8އòRHÐíOa÷k¹˜½ýíœ :ýMÑ$’$­‡”Þ±ôÚâ"š4È$« —>µ¤ÄÏ›‰ü>“Ú�½(×0Çn®°Á”!P•ç%é­éøGÀâ¨|CÆþØþ¼ÈŒÜ"ºÎ,ÒÜd6&µáÇÐ[xFnï6Ñ„Ð)ù�†^>Нòˆ Ÿ«ŽD„p]7,XÖÜgèV„ÐpÁRôä§;T�œöó–?pÚ@Ö´Ÿ)Åfs‚Xôf �RžðÊÒò‹X H‚taÀPVŒ�ø›r[£¶¼aj­k†3Ñ=é²eºÃ …ú¢É'v0Q4“j¢WÅ{êhá÷Rƒè©Ÿ.æÓÆ&Þºü2`4uÙ2x®_ÒKbC*Ø‘fx¼åã/°{Ÿ?uØ¡8ÕËs`lzCL³ýªZI”Tj�·E ¾hO­Š”ŽóÂÇB?îïnÝ+Z‰O;>"ÉÃY©÷ÒÁÕJ‹õ5âéù¹ÍâM_(�êAôiQVサிQ« ”Ò q9¢‹ð?ö,I�ìû£„½“j[•»Úã6Õþ@i{ç� ¥[ß�Š•{ Úé4h¾§÷2Ý«Ÿ¿,·Z8húΫàI«D±âi(P`8¥v_zÔð‹Ä²ãÉeT4Vã\º™ C¤%eÇ{Ãagа“(¿MGW§"Iú­þ§³!ªa…Â�ÿð*&àAåõ_ðÿ'FœÁB 0hZðÏ8G§˜(÷|�Þ–ýý…¯ºÓºd¢ó1øÌ#ªOH#qÏ@ V�SUÎ!-[_Õ«6^Ó `¶DrGºñH\FÞ§u/öp‘('²… tÓ…µLy q!—ÓÅûœJÞ•É+öSàî|›=?lu$D*ÅU CLGà'¿@HæçÓ_–ž±25ZE¦E­3Ý'ËÝ讣7&²pùÞS„-»�¹#ØÇ£�;2v@²ˆÝ\\,fr�ªLêO+Ý1´ç4ì?y,¢ëñâ6rÜÂYV~瀞­Ò3§¨Ì©é¼j®\Z†ãªÈ±]"òßþ‰Ðõ&‚?„¸Š>ãŸ!ü‘já9–,Âqž ×-²SÀQ<ÐuŽ˜`vÓ'¨‹<+Üž¸3 Ƨæº"ÊÕ¯8E+Éâ`c{cõpãô´]½åk㽸Gvøâ-/î·ënJI¯¦ËlÑ(ÙûM펈Ð÷j:6?¯ .jžR »åSG^í^4IXH6¤L¶†l¾€¦%d3� ³þØmp/ãmç G^(ÔuÔ¶ù_à‰´ÿƒÐ¾ŽÆ z¹—0D@=Ì^C€zq@ÆÖ�ˆ�òt8?,¾dH˜À¥]§_J72™>¥x¿VDµ; />5ƒW‰›i6»Æ“çZrk‚ŒÏÅȤMKVñ ù4äçŸéØê‰l)ãD"ž¡6DŠ;T䇖Ê#›ë²˜æ[éæ7› °fBÒ‹Ó¦4ÙfMm±mžEY¾8Di�©²fel²&b‡® -¿qaÈoŒc“hâêþ–Õ‡ˆ®­žutÉ&£ÑM(1œÓÐf]3ÇÀ¬Rx�ÆFzvIkŸö*ÊZ…·‡Í̪’€×y!·êMn®À¸}�a*P†ˆèu]ñ.¼”&ºTf¶ÃJÂ3à´ÐóxëܺKÇ�É95à½`‹ÉòÂß#;�‚4ä³üÌZ ›|©¬œÁ~MÇ# ÷ã÷í΋q 2]S xó?âbQ4d±g~ cö I£Û8‹\kÈ[ç*Yã!L,±ŸwؘRŸ<[æ¨J�Ù‘3ìN”à r °ÖÐ�5­ËÿWšÀäá_o”¦¹q‰ä�ü·’àÏÆóå§K ¯ãõËÖ˧O÷¯Ÿ>}ŽRò^/?Y~ñœãåÿIA+ÉA/*,É|…Â;·G‰Ÿ¢s ^4 ÄUâápHîm�p{‚sÉ7R¾Ág[ó/"r-Ý} D(¸úˆ¸Z#{«—�ÏpÞÎèÀ˜ˆî¶’8çå‹ì“3¥ø3gRG/¶ž Ìfçñ›âAÿ±Èömïe—!¬^ôE¥÷rJhE€ç2b—ʦƒ¼]ÅÈ¡¤¼èTB=8 !;‹PPLÚä GåqË}ÖZ†ÿ[­€J„@£ØBͧì?*h»-¢¶ÛÞq«Óötò޶ÈÞAz�oÊóñ­ù@´¿0žhx’ÁXâÏûa~™54 %"¦sôÔ¬L‡N eÓ ,®vŽm„(¾MGèÄAP�¶1jÀq¤ÛxجÁò¤\Õ:ŽóN`l¬¯®m¬w8¸­¶…ËùMÍ£’ÿMÛ°‚jÃt /¼×¸F{£ñõj*ìÏ—"½˜ 8àô/‘kÂÑû“<¼yx4Ð/’kï‰L¶Dà}MëÙQsÙ¯%â^o¥^þÚ—–PI ¶”€ÕêÊG‚ÂR{Q£Iô ïhz?iÆ×ãwÛ>Póûð1çqœò줉Ä%î�4›. p*,µ¼¥—ËÞ³–÷ó ÿE«Õjžg¢üâÙ�d–šLò—Ä#QÊ7Â=†„0‘—Sœ�’�XL_ÿgÉÐ&éž>A8æ"I??yÒ’pÌ_’rÐ^IÎ�¦„ÏŽCÑ\‹´ÏÔñr’ �m…“-¤Ô1¡’Œ.ÀW(9@Í�é#·îõ‡px'ˆü‡,B'‘¸¶=¶i‘øCz—+/¯`.–įì6©|':D¼¥¹~ˆŠÃ>°bmú»Êr)‡�òg�ú£»dP&N¢åXO§”ŠükK¦à;Ò€Þ|If¯ˆËt¥€VÈŸ©ß’ŽABHGŒ¸Ã:DÃ�°!ÌDm%m´Å_=A.Md¤hËÛB!cÂ0dÆ*r$Qïê� È/H‹tâ@“6vö�þd-åP}k7µ®Óþ$ ú¶KT,Œ�†¸z•òÏÄ‹½­ÝãÕíí­Ý7%¸ƒÚ–Ñ+»{G§âµ�u—½s´X9-µñðNËk‘iy™›�{—*x¦�h²µ¬f™Ì‘žyu�; 0ƒg7S÷ÌA‰©Lh¶zÙò{RKZû0¨¶ê·Ä;b–“ôüˆ�ßrÉSÀáÛXQ "&žà^j?ah®uƒY1<™*W“ÊÉTçóÅãP4VšÈ‹Ha9A )ËÖ÷\ôg~^(ªX—GC꘺(©],®4eÝØÂp¢�¼¶ƒz#¨.<Ê9)0‰é¯HµÕŠ$îU�\GrפüŽw.Sä癉ùÖ½•z ¶¨Ž¡ÉCFbð{B‡»Œ¬.—ïÂò�!LŒ³o»j`nÎìešŠÍc”8T²¡b×x~°¿&^FÏ/å‘§|Í®¼ôœüCô¶ÅP5àF•’DÞ™Ö“á ô-´#z˜ÄÐŒKi²'¾‘ôC|më|øúÖù�T$KÏŸ¼pÜ?H½²ÜzùÄq£Õ+/ZO~fKLž>à"%vVœm‚¼{ gŒkzDF¿+ïut gQ::“Ø…¡\Eîy”SšÐ,ÿ/Õ ŽÉ‹Ÿ[Ïž�T‡×O[/ž?ãñ‰‹ã“בŸDÛyÑE7ñ®!Ú_ï:\.õν½£ß6Nöö޾º~Ó˜¤ öÍ^¾iêí„ù4í ºˆ34øÎ\¯‘·ž^†hùÿòБÃ'Fí<\§ýúiؽØ!•M¢-äîYšæÐ pè¿îLëz _|hRÓÖ&�ÑJ^û°-1Mꦘeœ%òG„pEGêÌl8ÄÝ=òV%u¦®ªx¾ï®FªñÍz>{ýï­GPÛJUÞÅ÷V%|²J]Qêmoe;w[Zþ,Ô–§ß[—$²ªuo|à"ÑtÑ6ïþžÀ°ÑZ2å}Ñ_:òÖÌOy_Œflz;«G§›{;§›[Ûë§ë›«ï·�N÷ö�¶övñÍÈÕù“sÄ©ßÏ¢�o'œ £*ªÚ›ñÕ5ÜëþQb„Ãýèh¸Í£�ƒµ�ý£½úÈÆgØnè—Cݺ~:&lÚ¯½Ç_ø’|÷+o¾ÿ•·‰÷ö»_úëû¿óÁ|åŸD¿•x¤óý��Z ÃöO2í¸ñ5G¬ï¸7žDÞ’ I“wÍ»DÆTID#_}aÍûhLÜ-"ºlyÛª¼ã2oÆr�¨p?ñFã<Èé<Afi$ñ0ÐÑô�h ï0”!oeáÍEù'„›åqÁÑb6 …_´À..Îò%Fm×ÜCh>�âFÂ�öÇ�‘ú¡Sq¯Àn̽/NÃþUh7š)zu/¢+µ²}�;)õ¸q‡ÃPøs;~)Èõ¦‚Ö¢ìkÒ¹BÌìnU’‡³#ìNt�#ÿñ/ýøÆ¢#3°¥5Ûbc<¶Ç~õ Þh¾ú¥ _=vw/°ë°Røæo�aÚ¥úCn}§Üž,y�hÛ³Je²Ô8y¨.÷7ü‹qäÎÊÿk6ÿc1Þ50þC±÷ÛÁ5� ïù…þPKÒV1]‹K´0B¤{°imunify-security/assets/ui-app/assets/static/other-root/src_app_components_eula_eula_interceptor_ts-src_app_components_eula_eula_module_ts-src_app_co-09f16f.0c522b4bf422cb7c.jsUT ëÆ«jëÆ«jux è‡ì= [ÛH²ÅÑÎd­·m=ëðÉçÌBvÙ„„ Éì7�ð1BjÛJdI£ÃÀ:þï¯úÐ}0óvÞ ù¦ÕGuuUu�BˆÜ Bß2Bá `{~!ÜàkO7¾þ#pÏ —Øïù® —³æÇß¾]\Š’ËîÅ…øÆ•îyW†»ò\;ap…#[gß,'ľ�½Ðõ¯Â ×Øwåš‘�óÝzýÉ\Î…K´Ñúy0íb"Gœ½Ø8’Ù ÑæzÚ…ßü­x°ÖýŽ5sºCMÑdéäc_©"ráãH(ªx`ã°ãϺdÌÆ°õ èà�á:€˜È Éôâ&\Z�D`:ÇþÚ2ð ZI“ïF°�Y¸5tçЭµb6ÂÇaä;ÏžGJ6|s|BWú@Zëv„%+x­[66»â·oÝÌä’£¯­™÷BøoáRDÏdqÀhË``}Ž`Oƒ¹nÌæ‘0¸N7Y¿ãà›nøí»Ö…Àz²ï–óÃÁ_vui)¢º‡®ô�!ŠÛŠ5=ß]Ï CM<·|B'Яm “lB÷+v¦Œ€Ñ»)NaÞÂÄT¼»â©Z¿?)ŸêGzªFæTM�ŒÙ©ªòXé³SLFª&"?=k›|©*tRbðàãx¬)ñ€�ºQsê ®¹…Kzxpê 1gϼJKÝ1m à ËÃÝn¹Rpc…ÆòT÷Ä.†mYón~: €Cse9Œž?Ç ÀÑ»óŽ.ý= ½8& °È@í„3,]»æÝ™L2õP�ŸpôwJ`äñÚµÌNÿÙl3?ËíKZà°ëHÆ_� ©9À~élyϸƒŒÓZ H» ÿ¨‰]•ˆ]�ŠÝ–ªPš1Ä·d¦aÝRÇŽI@nd„¯vîqéavx0ABèëN`W—GóNr zpçåy[�”ct�ê ••Ç¡AŽQ?»2àþ: C×Ф4ж‚ÃQà Á€›î«€9 n �}ÿaN>1—j…~ì‚ÛŒxÀ¥Iy6“bÈn\*Æf侬ÅÌ ö|†�§x?ü�RœÉeêÿ�AšnлLlÀW-ÑËÍT_¤iö¯¦W"1x÷-ˆ"¥A÷Zx¬›kr�VŠ2æ„uÏ¥€Jk5´}�Ks¤ó—ù¬0¿Lθ#Táð¥å˜ • Òèªì8>yp‘c³vŒÌ„É翈"‚`Öv…¹1d@Ë*ê#1#3–$R“.lbà‡Ú¯°îÉJîLø²Ûmrg®÷{g&W%¼²,’[ñÚv�¯ØìEV�#<*gIeŽŒWRÉU‡ä2¾ødZíuÅÙ.OµïýOÕ_mû‘Âsø›»oúõò³|EsôŽï)=÷&å2D¾ëa?¼#8 ­tæ&æP�Ê>p}ÿNï%skÅû?Ó}}4®ª��¬•w�u +�шï÷Zr‹³!—EŒ‚ZßAÆ�d ÙíÌ”Ž‹éj_Ðb0À8èq�˜dºt(vcêÿ/ètgaÛìàœ÷!ž�ÚÚ÷5Ü–%ÃÍ´|LÜÜ¢ÖÙ²„år/l¸ö^¦dV[zÆÊ«6ôŽb7µóÀd›.QÜCÎ#˜^\Г./Ñ÷Ÿë/Ýn*ÀŸ?/Ìžt‡y}É$ª6å>â<ÂEæú…tü€ç !–DÐAµ]ÝŒ'ÅçÏA|�&ìƒ9?·ü „=#rÁÓ‚“¦¢tEv·€Fd�l„{ßÐggq2Ø�c;À¤UÐ>¦‚ã$xÅïK$�'2#á§8ÞdÄjWonG–I§ k½¥À†2É�iH8„�á»¶}­ûÙ^At½²(ÌÂJ{¾npŸÅ^ˆ4a‚¼¾‹°Å‹RrN®íH=ßZé€àÜt1 ±îMð8ÙHFs@Š è&Ä+�´Ô�M‘?j®ó² ÏK­ßRúH¦‡ÚK.熋¾önN¦UÑMà™4i¦^ ¤Ô ">¾,ö!®ÇÆk‰³DÍ…äã9ŇËá‡ÞGŒÊ³×m‰Uó—“�K.6Q즌‚0c7;&Àgaà2Kz�ÑJ:]¡H:Õ×”Àaý¹"K:$ø>ƒ¥ Ó«É% Â;›Œü³”ç΋+gAŽÐÔûþèýéÙ÷—�Íg§Ó1­P|7íX!ÆUíÈ Ü…åL;¶ ÛÏÎg‡L³tƒº9æ6¾�»2^¨]÷Æ2Ãå´#«ŠwK—[bk± §uäñ9$;ôK v:µ£=î3ˆAÃöÚó)~hßñl<ÏðÙYªµCæÐØ›ë+ËÔ ï�p:ç (Ô àG/À¾5?H:Ö¿ñ´£(éÔÞãg¦rnÚùÓP&ÿŠ‹Éjº˜”ôU ·bˆèH=* 箿šv"ØÑÐÌϪ})½1ÚÎ!t=€Èi“7^»à*!Ñ2áwè‡× \`@P´rè#ݶNÏ™@;&ÚÞ=!O®¶Zèc&ÒúýôÛ^Ìký¤Õ]cn»7=€�Ý�´ùf àõO7àô<÷n|Ý«9U8/ׇû&pmËìÈÞmçOxLþUáLé·°õ^°Ð$öˆfO7M î/Æ­™­UË‹}m­V¶<ÁÖ¸(Üß±1�ë©Î¬vv.Ð@±…ÝÐMí稚¶óøsÚm;„üòò•«”í·}"°ª¥R§ó% Bk~×ãÓäžådd?¥�6€ºš¯.`jÄ®’¹ÿºÂ¦¥ôvGwÌN7'æÆÐQdÓ¶bœöJÕ‘~ÿ{º4,²ýó%ùqλDËlŽ{áX ŽFÏÎI@0ìDtDiã!|¼%­òPs펄Ì2ùx•ÿ™²z2Ûx:€Á¬CDŒ±£¥e› ¯ÒÝ™ï®À‘À sí5îŠR¸ÄNב®AÏì:4(òF<{�¥|˜OD™ì€é�n"DéúrK³N Ù÷îWÙÈ+׬¶‘ß-X‰‰Œ·U®ËùÒL%Awc�¹í»ôŠ' °©%Ð(»³"?A“6à—9›€’”�ér ¶…%�ñ¾r6:—ÞfUoÞzDZNŒä÷[éÝIÑe9�@MªÒ"z ·™˜+´êi ÕM£«$æª T]µÓä‚bÌu8ìYÌu �4•Å\'°þ„Å\yX—D]5…økçi(weh„u×”.ab-y¤6 Êž?­ƒYã¨k6æZãÅlrï+f6H¢½;‡v9£{¹R[À#ê„@Ó x â-/�óC/u‡8æ³ »›'Úy¼'Ú‘Øò¯ð\�ìð5ÙÇÝÍœ}˜ Euêe¶`nä¸*àWÄÓÞÎûˆÈhÄ;›Ac $¾·àTwô…ZJwùkˆF$d×ÎÚ+ *¿åšh«ÙUN3uHLK†9a�n8”:zZ™1úCfü>d†¾þ-, ëNäý^D…¾NâU·µñª2d…託º·ñ–ã‚éb:;ˆ#XlUаc 5}&#} ߊ*º£2‹hgN!ÀeU¸›­õ“©Ñ¡Ä÷<{–|Ü"9fk–´þ `‡&NAnôÓA—Mêä6›pæ–¿êþüÝÆÚö¾ÛàA[°»(ô?£‹K̉ǃ�”lÉBÉ‘…Þ²Oï¹ax`³8Ñ�$ûâ5'"ðpí‰QHм­3?F1“‡Û4YÕ–B’¦ÚezsîT¥ Û+ºB¾™¬ñ)À>_ ¨Åã ‰d Q Ç–Hºt&O–à€ÕõK²�ÆÈº¢(¢ G9Ýþ”e¶nѼÝ)¢y³SDóåNÍ“GG4oóMŽŒ^|þ�Žn~Ü{t“Ÿ`mxs”†7U<äC$ÐÐ( FR¡‡ ûî¤*ŠÃ¡mcr=åº>•9Ó�?Nã ñèTp³€)‰@Æ28¾ç–{ÂcVáàXE¬Æ"W¥±d”çhB’!X‚Ò#c“G™¹jšês�*#‘”|‘S$àì혧µ°Aˆ‚–üºô�KÕ ávÞ%žI„âlVf¥bžM|ºm»7ØÅÈlSœ±ª:ä€+é™Åtœ{ç0¤t]± +@‘t…æ’‰ÄÝsNôè�T�Fkx°Ê_—¹à«Ð&�c¬Ìq[Å~õá)ˉýœê¤_ C•b¸Ü›O:'^Ú]׃¯0õúÞ¡ã}-ÒéHe×ì@¾áñ¯k×6ï ‰D¬¥•iä,¦ÚõÖ@ž WØ=êAŸvB×;(džb¼ ±/Yg¾d—ø’o³¾äŒ&–uhý±ZQYöºTƒ”©,ãN>·ä¹ó âÛjß�§­ß*ÛLžTOP�…JßY f-à ¬U±XU pœíFg·+« %àí6ÝPí…(¬Xá…hE”Nü–EЛSB �kSB ýjŒêòlÙlzÛ~å®t L¡gÙ߈¦»ëÙVgò6@ÉönÙÊã©¢æ8™]Ar³¹,ÝŽ—òDÐ÷5?:vËØ`GÑ�™dcg.ÅR¶÷±ýªÄ¦T‰´ýÑ�¼ -áÖˆiˆ„¸%ºŸÑPÕËÝY´Éܱ¡ßžQ:q»ú€bÛ: ¯²V¶láá¼…ÇnR¾A°,Ç‹ÀXÚ°à±@±I5d&•ZÎMfàù¢¯i¦$ýù¾ÊVbÝ“ÜÊ$“²Òhªë\oÎ4]†U%ƒÍ *§VO‰à3CA>bÔDnXÔv•¶,É‹âšÔP¨Rá¡4u :ª5w«X4E�&Þ,¯“Wþ]€^Ï$n@‚ù ³Òåæ|™†E®Ksï¾îIfQ&æ_”æ'EÌY)W¿Z…˜{Àj¹ÅĢ境åB±…tføy³DÊòHC2DüUÎI¿h¢I›v’$±ô«”=B»„b =YþIU– ûÚ¦[ÁÑ! µÃÆâÔÖ�w›üï+$Bɱ±ÅÁ*býZ0—Õõ·T]?ʪëŠ6`Úú`¨Mø{ Æ#U±P?ÕûY¨Ÿæ°P?×ìI¨_öG#êçy%&Õ÷'ꘅúy(?JÓQh¬_ë“…t2�´®Ó$ë×$¯à<±(,é%Ó�@Iÿ‹ø5²¥ˆæŠ=Y®Èù#sE*ÇWæŠùLOú€ é™I¦Îü¼K$½Esé ZHwh]HYJ‹ ’ ']¦ˆ—”"Þ<>ûChC•g0��„¬É²ÆHBÓ†2¯¸çÅ÷Qš)2O3EIŒ&ñÂIbB'[¦TGhbÜï“Â[’Ø4V‡,­i¢(ªÊÒš`*uÂÒšÆêdk�°L€9¥©(Ú¸&­|‰è˜ Óc ¿3—<" ¾#ûU&„(oÈ&Ç”¬_Ò�ã!Àõ>Í[9¤kâG²õ�F&ûJß&0�¯R~z�òÓÒAÓ&°Ú�±¥ÌÔà/³ ˆ´ìd;%�á25(? j¯Mu§ò‹ÖàÖ'¬\©øÊ©{±ºCA3®î¤¶Í¢5ÎWSÖ�6ŽnôúÍŒâz™k2ˆ®côU@•ÔÉ‚rUS”G.&hÞ³Ù Kgì³d­".+8œaZ31³"µf çuo€PE£Ú²Á¿Ÿá/ ƒ5R<³#ï\r:¥ãIÕ’òùÖF ‘œµŒ†¨¬r­òߪmäÂJ6ònŒ–V&�‘<¡©!Ü£UMêêÃ¥ ×°ìýó­ÞïԎϔݻ_ê×lâ:ךø-¼Ç/¯òlŸÇ �iÈú�N\ûìU Õ[¯sã{ µÂ�T‚1­ë’…H¸„™IÂGòAº¶#ÜÀ eª¸?ƒ´f~TÞ7RyDSÁæG‚Iž~Q ¨¶@Ç$+$171XsvPæÞ·pïo�{�ÏÀ2üÊÃcg6 éV~ Vö(šÿ£ùùß÷ÕfÙQ¾ŸJ˜ Õb¤ýg~_ÕPeOìžDм;�¹X>õƒQš±ë;æ—§š,pÉjaJ£ hÝòQEÆçnâÈy¼8Š3>ãt°°Jø¤VQ»Œ‰¢Ä~K,.¥ZìëòH¢5´‘'T�AEEA›1³kŠù“˾ó§˜í.¦„ÿݯJøeÙùû&üj+ï7NøIºôÿ5Ùçó¶Ež•𯪬òÖböî¨|rÂOò%ÑÜàØyç<¬;©R °[Öæ8Q”¯�Ô¥ÔNÅøÏ®iˆ8¬›÷=`ïÁ¬»¼ùꢊ{Yå’ €¼Yóº^õ)kÿ1'gYù( k]sr³‡o'�ö¾Ìk¿в˜Œ×ì è}Ü€-¸•GM§+—‰£ê��MÀ*ý]€%åj¼e­ÒDÚF ‡¶+Àƒ½��2Üm;£ÆíÔâ_ÙÿêNøO«›šÁUå&rQë…ØNRlGáÕÜmîï\¼ºÕüi¸ÆTÂ+ Áöc%%Aì �h^e@,×$y¿·Êømc¤ÖäPÉL^¤ysšn€hé§ž\¾Ä‹y[ô/0Ë2w°ø„{aò·©ƒ‚ˆøÜÏî•öÝ�Ê»GýG! EyRØMò¹©Ã)-ŠÞ^±0©À‚üÔ¾…]S Ï:Àõ¤Œ÷… µ¹’Z0Ñ/jf ¸ú@n7u µEÝÞ+ÔJrxBL�:jB\’ÚÞdâ¨�‰HyJ© ³;X{�µj“ZúòSzÃþ}–ñ¬3»ëBˆì÷„Ë-ÿ#oʧÈB:r‘gdz{*¯3õtÛMoH­¯Tµ**UuÖc nvYóÂw#ï]®ŠÕgOxÌzH?…1`ÉÑÍNN?½;yýÓÕÙáћÿo+Cu•/m-•xvã·¶æêOÁ wˆ�µ6?"SzŠ%\ ’‚ÓÀR_nŠ›ÊMs+eŠJ •�Ms,pÈ&àŠDäÅ¡y�̱ï»>›ƒ6’¿DB 7škCÛ#0›½$…¿¾º=S ïâ#à7ú‚¾‹K¢ÝF Ø&¯ÚàçÏÙ;|)B*Öc]i>—í2‚“|Ìê\ ÐÛÚ‘›äÐÊgSEàR .y[wsvüáôäüüäý»óéXôŠîéŠïéŠìiú¬¿%Ü%ï/ÃŒrÂ6ʉv°0áÕ’úêi\r�¬YœË?·lbÝpö"¼ø™ÔV3GáöçKš.Bg¥•î±—+Ñ@C\§ÖÖi;¬N;ž Y KõÊ]aÒ%)ÎÎ=ä•ñdëúÙFo©ÑÎ-YQ¡Í÷‚XÞ·S.Øv€�ô !F^ÇtÈ$3-wêQ©œ “¿VCþV�7Sœ¯×Z£­?i�ö±x±WU_‡¥ë±ªúú¾îÐm%™;ôŠHYxk¯9) oíµ /Íníµ–æõÅãÅÑ5¥oò¥vgÏÆ ݸۥŒ¼x.uä =¾Àó\¡y¡o©Ð¼Zh/4/.ÿ€)ë¯Ür9;(™´ø,ŠlA{&{.[™n´Fœüè]cÛîYNϰ|ƒGâ+a1ö|±…¡;k=àeå¹âå¤ÝÓ–£‡´¸ƒN�à)>cÍ$C.éj[ä]ܬLýÛûú®¶‘dïÿŸOA¼³s¬M[±ünò°9H†�YL²w–Ëñ¶°•‹‘d^–ðÝoWwKj©_$Ù2;™½çÆH­V©»ªºººêWìøÂ±ýÑ4u ÎRk0o {;:å Zœ¾‚vòäÌÆ_ô4!¤˜`…MóK þÜ»ÝaçEô-¬(%–œ/ùŠ“8C·ãÏ/ôqxI¢ Œ=Võ õÓ"B9ü`ú}©³+~ùìë2Oj¢]c耄w ³ N�¢x*©,;˜ž{¶?Æ3?ÿšG�GjÙAá§2…˜Pn„ønpãXÁµg�\^!pïd¹gýH�lì_µ›� 9ÏaÅ.*Ü% �\ÉGeÈ=9¢ÉBÂŽTø„ºà»JÇ++O5Ê@ã²Â{Ь� îÒœ?æwÚFŠu*FiEJ§y‰ˆ&+ŸQŒ²~,¡Í4šxVÀ�âD§}7îïGH :ËÊ\käÐ(uMyÈ×S#O0%*®“LqÕ"埶÷ N΋:ÑÃôƒöˆÕ’£³rÇ?åü’¤¼:úO*+//„)ï8ÅJ3)�¤y}ý¿<›$I*!-ýIMô;j£Ž4HB}ú×($|�6úIݹ2o£�Ëj³éè¢ßÀYØîÊjI`–S<š)&‘iAn™ø31…Oãôj`]êÓþ(IJÐøâ$‡\EÕÕEã€5Š9eN¼ ªK›l�Hâ3Ý€¸V$¸xo^¦Žæ½zFì\ôB7‡’cb®³”E«sæÖ©*ü屓= ]žëììò È�TaÖ- úÃ!­Ä¨Œ¿©�"ú5EÄyÎÊo/¸‡ =šñ7ÆÐG$1ZÌœýL2g‡Šòë46“9ËÒegIŽl�dÃ^%9²Üt– ›ÅM§¹ÒIúèDZºÎìÈfy;2c™‰Š™®43¹%ÄÜÈÛe‚]ô¤´HöJ[EŒxC’ ª#¦[„˜È¬•ÓÐSõ-!ÉÛYõDd"w2mÓ‘; ãõLc0H>G²ðJhN’O›ªÛ4¼§ƒ3|Y¹¼Û§¦c*59ÚWÙZ‘¼ÔÙ3SK¥•Ges TFC&æ+g4BþÌô‰¥¾�Èë$¡UF5´‰jè¨(oHD^GLouÕÐ/$òZÝ`•ð·ØÄi¢˜E‘U£÷ˆ Š†íÕ‡ÅRÎ�Utr¬B³�KŸŒ‹¨©#EYW²·­h¨„BãÒPN�$>WѰÌô<ÙZÒÐ+@êŠèQõÆ‚Gön±õ°üÀ â»N‘6!~Sóž(Zò"®ÛcØ�X�ävH9Mß…Í¡†À¤+|’¥�_C;„X'5”cØxŠ5k«†vñ7”£Ø|’Q좦~{¨©ÅÖSŒ"ÖmMí(b�ÖTŽbû)Fë½–v1´”£Ø,¢°÷ôæ�DýŠt¬ÏF/)@³¤RÆvJ¥ŒÝ28e†9ë7Ì’ó<õŒ­°ÕT®ÉVá5ì,’j…d|Í�ÿMQ£ƒZíü¦4 À†Ò†‰±Mä ækºApÓBõÂ.lyn¢‘Ï*Ô˜>ˆö.o¸m =\Þ”¬üôŽ86™ˆá>Ú†õºIÂ1‚/5E¯¦/‰.úz±Î΢ã“0;»é}­ωºuÃèˆÇx!‡žâç�â’³ÚPì7‘P‘`|Yˆí & -H<&¿ Ùv‡¥®ò>’·ú—"–YÆÁÓ]t™#ÅV.äºD´¡�¥†j–¸¬ õ+šh�G°.‹nªË„?g›ótâM%,ÛóìäòЭ˜]=O5(OyYžJÙ~‹\‡”;Æß¾EÎ:OÇt <+®‚é< ÓôE{³Æ–çÁÉ£pÍjÓô,Þü“ DŸ›Ií«ÍŒv,¤K¼�â͹Ѿ^A♸B¸ÎšôÇàQ8áš ·N´WÔÓçÑzµ!¬OÇ• �5'¶…Ïÿ”Ö°É*á^Bæ4£þ@',$ŒªÕƒzŠ\…*жˆå¸/ð—'¯‰ö[�9¬}ž{W¤ ãd~  ŠuÀùÁÞ˜r?˜‘ï“TÊJŠè�òˆw+·™ið¹­fæGµw+ût±ªxRoÒóY5ŸñX}ðh¾[%ãe‚|<Þ†Šn¡„ïHV3Õ?qr.ÿ ×!ÿTŽûD.Ä÷‰N]Mè kÞ•*„7(¶ØÉÏòWR¢§c¥îr=õt\™c42ߢ±ù‰¯ã ávöU°˜ßÚfC,%Õh÷[–¸QY��Ê­ÃíT $ ‰gu¥¼$PÞO¢ã3ŤØöv*½FÐÃa§Ò¬“½Î8‰¯¿$õ›ðˆ†Ä7Ú-¨¾tAÊ>áÝ ‰ï÷ë½.-&ÅvKSBC·Û¤Å¤X|ýmÛïÓrRl·tGj=µ!Ô~HêBÑZR¬ºÓARÝéœV˜Zö(…½­%Å"õ“bhPKª×�îß 1ûG™üº�@X£š$ŒÂçªÎK¯¥‹tæ¼TÿÒVÊAÙSõÙÖö�A¢Ê†;¿ð6”oMÎå÷éy%ÄWË®@­a½"›_ 󜆾{¾ ÐÒ$£:"UˆDÖøúµÊKGxuêŒS2^’3NÉ&gœm.ˆ9ÕiDXQSõ²b°Šèð³�¼2Ârây³Ð½ÒÙ†¬ù¥ˆLŇjÈljɼðüK0è|oÇš`MU+¶ïÚ5::Ú{©úWK pŒ·½uŠlvcûÎðÂ[Ìë!ú{ì„x�wØ%ÌyÞ"ú5)ø»¶{îÍÜpx½˜áÅ‹¡‘¸óÀa«`xs5yPѽâ-B̞Θ»ŒìùÀ0M("§U'ë jù÷3€¼¯ÛŒƒ�‰y Ë3Ò*3=iÖÞÄV.žå· w†m�È®Íz37U£$: �ý';Ç#3ºµÁuaû4s(¾µµ56g£c¸íÏß¾½81Ýùh¶ˆ–Áè ìkLJ\pßÃüxçà•ι٘™ƒÅ9X�,XÄÇoÄ#½aÛ–Š­¿W�Óðl+û¡`M[c»5õQoLÜúÍHÆè¯Öñ“b:«zOC—˜Fx‚SnjÞLÜgÏ¥Â@9½Ðwûp¬>ÁÛ›K;aG6 ñyú‹ñs�=]­hI­æ5»?Ì'Góý¹V9Õ^ªŸ×6ãìî€FB.ªí-ý±“ÙÊ.ÙWçÓ 1Ê|_ö{œ7!›-<Ý—n¸w�—.)06Ã(""{‡¾Ožhgqàœ˜ÏëàkèúwZ„E}„ÄöîÁþápçèðd{çd°™Ã³Ni–A»Ûƒ_ÞmïnÞ«ûÊ>‹/Û7ä3ð =Àé:HÁb4r‚ š¬$ìÊÞƒ’�Çb­fŽf^àT±?à�¡=›ÝqckIÇö�>Â’8‹‚g²ýD*v)?Æ�"ö4Áõ±XÝW#kÂÊ0áìp7"GX¯Å¦æû­"—ÛjÇÜ/ÐêÚ¤¢¼K–6Ï/F'þ°í“áîþö‡£÷ÃÝí“mõž?Û—bÏÿ5½çggYë2`‰ëE0ë2/æéðôCV‡H—i,ÀÇeîKàãfÄãÀCÅE~‹ÍÓÌÓûó©ã»á. … „³à±Ä«áË5뿆 Ð"¦ÞÍ�«°¿€÷£ßD> `¡¬BîeSAž ‘;’Û„,Ðïa¹S·]XTÉ{swà‚E@EÓpÝ—ßõ½%ôáÝÂå6£Æn‚[Æ—¦¥ãHΑ Jš‹Õ ¯`–ç(iDÎj/8H¬dA…ö²LçªdÏ“OcU3œª´æa{G†�ü{tÁ1 bNÄ›]Š¡¾eÇtþ'nT`0èâ@>vq…�é‘P„»8€�ÇIãÕf´À¨r)^ßšè"6FA²Tü¬¾Å¦@ó%]‚OGJùÀá”üs”Ϋ~ QeVä¤ëP¸<ò»Kaò¨ÃN¤‚ËÜ–ÓgµÖH`4v¢ÇŒKÝVÐÑ-A‡Î‡iV'žÈ´ ´½U »Qe|ŸXèõQ<‡–’)9ä¸5KB£�$L‘ýžf¢b]/k•iSV˜ùšÑnáA© Ä®ùè+MN‡ûQ� ~ Û©ª¿Eô™GßRÆ]¼ÚlgN•4nË”ûÂ2ª¼-›üÍ–ô"[—p5ÃîGçeNÕÊó‚R»}VL÷X|ˆ{éMÌð�ù JÑTž‡ðÚKÂÈ»¼ôæl‘Z‘+žþz¤ÂûºÃ‰2ð3§õ·æ!�*4Šú;œzŸml'QÈönÁv´8Œx…¨J|ù]¤6w#W»ÈíDøfäï;ÓECó oоù+:0?£ssˆöÀk÷–¬Ìècœ6q¿`Ä�ÝÀ¶Bos’(66L• E�UèÄ;´¹á;3�F#Ñ vÎ+¹±Þû0N«(Ü9Þ_–Hî yÌ�H¾È»Ñ&}|Y!ä6²î77ð†bäÔÎ�ðÆqæ¤ÉľÚܰ:¥ §zFI{Š"BvÛk=2|´,ÍâÜóÇŽŸ\¿ºÝ<Ì+qFŽsa-E"ñCi¦/N÷èµÿºÜ ˆ^×'iÐt «å“H7Jr Õûù�Œb�þóX­#g/`am4ugcJYæÝso^V “Oùùæs7Ä¢S7[mÊtž bÁœzË¿7g¶c™uç3lÑ×ró²ˆüux¾HñJ9Eu¡ÖS¥ tw�§3¢=J.ËæzÅÈk…«Q’P» ÿ£—~צ´r²þ.0'ù}9¥КÎX~37Ù®FŸ¡éãQë=pÁ?¦ö|<#Ðò鬧Ü!Hùkôœ?9·ÁÆ‹ImXÍÂ<ÜhšŽØ‹cž·4mé»RMŸ}pá?º…7’77ϼssT©d`ÙpGn°ÖYŽ•Gs¬|ȱúÊçX1_1I¨"Aˆ»ê×lô:z—äH'»Ÿág·×ÂÛÍ/Рݨ÷ ô ëÕûxSöÂ[;ú�¤Võ!ð?¤m¿Õ£‰#ÿÔ„^³ƒT–éÌ -Ù‘2½ª§gìdà\Ù>ȼ½Ûúb§bB~J‡„<ÜøX®éé²#}š³ûß¾�ž¡ì ¾ïLÀ�âÍéùfÜ�Ç.D!4™n¥Ñ ÿQE7ü”nà_{â- æ‡{/»²å<`Ú#(ˆ8œÁy##' P06ewY\ƒî€û§‚çÛ’ÈñOtɉn*RÐ_Ìkôƒà\¤ø3œy¶ÈOØQÀ5sLÐ�œì¦vš4Ô~«) P­Àz'‚V >“ÅÏ_c©÷ƒø,¶zzE/nâ}ÇûáçíŸö†Û;;{ƒÁÑ1ZÎÞ-žk°U0‹\ƒ·æÆöÇp€N«^è/.ÔW<3¢“Ý=Øí¥ê†„†v&›�Hçñ>Ü�Ï£ ’í;öö"ô`)‹oDÜù±w§jVæ†}Ënt+t—fÇB™¼#}ˆGÈW37|{·¦Ó›ÈùPcÅŸÔžp­RŽP§'�€³ºF†¼bŒ^6žõéPïaÙùg¹ŽÎ´25û:ß RznÈH&¨a¥ÃFAAêèZ·½GJ—¨@BÑ0Ö|ḧaFÿ�7˜±&¾Ç-/æùÝ|¡èuølž ‘¹ËÕüØ&1Iž/q7|1wÒn„Ä»ðžø`âÐsG”Iôɼ`N�œ´²œÿ‘õ]üíú ~6­z›®ÀÿÊ_�íñ¥;ß»´ÝY‘Uë-öùô‘ltfv%ζO–ÓTžHD:D é×î~NÑüM²¢Ÿš¦¢ßÍó3ãµ3 .J= Iu^lmá&QÀb^Ιñ ÿ~'cl8QN—ØÒ ¼KÃèlÑ—³1•|üºÌI×Ïm¢HHʘ)’lSÅ!ßò'2S¬µS¬VaC…œ“­:Ù¢G•Êøª”¬Ü_4šŠ¶ %©ùÜVЃíC÷‰Íà•À°�]oTr�  é¢YqSIXl(èËH³™lBÕ‡ÔÊ(Œµapå!³Ö_Ÿ·þ”§þÙŠ&ŠX+1‹Š�f*æÙiœ†~4çQ�¡¦Ú"sÊ@[y¥!éiÌ4¼ì<Ö€ôuö¼7=Ô?äØý™wI°û—Û¢©µÕ£ìÑ¢ˆà¦¸5ÔGg+ù3í¼8¶FˆÝq�üxæç…hA É/צʽU™€jl‚<Êf©Y""’÷>Úž© ´£eyO{ùmN9X F ÍòŠcIþ÷R�0 YÀ.’ô+ìS`«’†<’õ§p’þ�5t_µ*‹»N-šŠVÆET<´5ªã‚idØß+ÄÉÒÎFöœB¤‰òÌCþÏê¾®§P¤T‡2;¥)Îx©|„eÕIÞ.™\»Ãû9ˆGqç�è€É;0(Q.ºŽÃ1€r죩—ùÎQ³Íõ:?êQ*pFß?!Jvš/ÏN\Ôjv¸>]g©å¤MÆh#d/6y0e#‰�¯Îݹgûã¡íC©ñ�¹{CU€�ŠK;eìÇ.Oû’0aQ­ß•ñË„4Ѧ¸")u±Q–› k|YÅ w”ÊA­ÐSIn§2�QɉùÒAÿƒÅ¬SÜáî"Ç¡p³5¬¤nÙÔM«'Ë/•Ô,.ë Ò»ÈJë& ´Ö;Y�& �¥g«ÑBsålñZN’éºTúåÚÌÔu¤ôu4û�˜¾cÏB÷Ò•à³í2¶•‘ü2K`AP¿žæ¤Ñ!{Årç[KZMdå-Û46ƒœÛð€Ç²#0=êÔÚ’ÖUF7?Êž�\‘  QÏ_1ýÅÌ Ìã½í'û{ÃíÿÚ>Þ¾;út¸kh®Å­ØÓQSX*Š:Uëš$âÔ|ÒÐÀ½[g´ÕY¥«š©–&YXCÎ÷ÅZƒ�ãý�'ß oeÈá<ö#˜òÞ#ôé?BŸ³Gè3XóNûªØ¶HrÂWÀƾJŒ×¼>ƒ®�‚5ÚÏ�î\ö Léï~{@ƒçü}Z;Ÿ'GÃÁÎö¡v æ´äè4ÅxÍšâò‡¦(¡)Æ?4ÅM‘§)> öŽKé‰Å#艋¾ö?÷áÍdÍ Åõ†ú3ÞLAG ~Þ|ç‡7b ä�ÛŒQhuÐÅòçVM~œÞ<ééÍõJ§7Ó§7šƒúýo¡\ü÷|^“&óÇ Íõ„†:¨‡o?íüº÷l'3KRñãDæ{:‘ÉLâs�ÄèÉxx ih;’z¸Qí0¡D˜#/ÊJ„±ºañâÕ £UvYÕ0‚Äuê‡ñá©[úÂa¸¡¶2½‰u³=£Yì Z…®¬¹a⩉6ßúÇàè�†8Uòw… ÄŒ�§Ýxí˜ÞvB¡«�¨5e¬æ7æxö(ã“¿hj-Þ³If˜l '#$uã5fÄ*ÉcÜÀóÎ3êœêè�å‰vO.�:À3Œ»R—éJ†_Ÿ½dÒÖ[v85GŽ;SµxÕ©“O&jîÊGS �27 vØý˜KÞ¤û€GÕ̸«JxbÃ!˜Y)UãAu·ßEÙ3¥Ê¸žS}Û|+|Cxï e>änÍߘq-¶7iuüÚÅê¨TÔ�Sè¯{M¥ÂMüÂtu¹7¦¶TWÌT7tèðªR‚Š ¯{Q}¡úƒ>ö:žg~Ñ!©HÕ¯x�qËMUˆB|V:õúÕmåÁ(Î5#Z‹àØ�fŒPš"�]Fã ëuªêbºbPIs,öÌý�3†¼v(,ÿZª‘ Ùºƒ5IFŸã…+ÊÕÊ]d½áP½ñ&Rì2fÅôõù·o[/ðL]šÿ4ª÷äÞ&{ö±¿£‡@€S홃pªjÖ\/HÏl¤àuVç}ÌõÕÊ>&oøép°ýyoØðÝþûᇽíÏû‡ïñ÷¼ß£×ކ»ûƒí·öv+°6â7-LÛ¨V¢2‰üä%ø>¸)›ÀjÚ˜á~¹x¾ìyX­ødŽkW¤,a±š�™™t@ñƪB£ü㊕´¨¦ÀX‰êÇ‹ú Áð!ùä¼ÎßÊ|шf;~°äÝ1@ý3^„ �ez)„6Á,08]Šº>{‰iò¿maU±^ø,Î/‹¯ßš§%'5D¨lMž#âbšNVø #UÂôŠa"-SÊQÕn(—3¢Pþ–�„ØŸS†_¢Å=Ì.¸³KÄòcZ/$•g#ó8¦>½zOgY]üÖB§Wæ{@©'ŽÕ:ÑÈd°ýžÀYÞ �1‰6‡°~ƒnéþEU ÷žYÊêמžÑ÷úÎï ×wÆUf\W —!9öèbû<ðfxëø›#Á–º[R÷ dmî `—ÝH¬ÌÕ±!§}ÞUߎˆ¦vÿ¿ÜpÊôøY$A´¼«rXømæÏ(V@Í’/¨5áýø/ØîKŸ¦:–½I ^¼²ð8~SúnìšÔ͆Dï–ú Q—z\¦——î ¥sKõBMií@)T»î5pò�9‰¾Ò¸ÓÅT¾ªQlØ =ïöm7pÆ©’ĬÖpK§Èá}tsÉ‚ŽÃ´ŸJ»Z“µ©Ãd¹5mˆªa[%²©)ZS”†Q]Wr_¤F°nãÒÑêéŠ/‰¢›!ø’¸ÞkªšêI­êìÌÈmà%X]®1RG‹¤Û2ÇB�ŽôÚI­%#KTýy«"öÒZËz&n™”–g�¼#"0’ ÏàyuA'èߘ1|oÑŸ¦Ö—ë¶…\AùÁ¨geÈJ¶(u›¥Nâïz…âïúkŽ¿ÓS.^ÄǤÁˉC‹ˆj­//nɇ*ú:EºT0„š ¼B8„ÅŠX³(±5‡uYÈ~âÀ¬œQŽÅ KK£É‹K£]H^ ,èZfÕ¢Ðñ—õ L³~vÓZ›À4£—ÔÕVêÈf�i¶J LS�pµ** »ë˜fyß—À4û‰À´ê¼À´Å¼›k˜–¿°UÀ0†£í˜–÷>"ª·6�iE#n)Q}�i× L»|â_»Pæ_»hê_{ý¹mä_Óî$ÓîòÓî˜N}ÍÓ‘ñœˆRˆ¨�f!�éèƒþ#¢Úk˜N4âVñ¼ˆN·€Àtz¥¦£7¶¢RúE8˜®µn�é6Ðìû˜n3˜n‹˜n§�Àt»k˜®ø»[ Ô»W/–F¤ß1¢z�µ L/®?#Ó˜Uz-tåÀLdá[-%è¸ g½v9ë©Ò>ÔrÖÓ¯ÊQ«B44ì¯[Îúu4ú¾ä¬o%rÖoðrÖos´×,g}e­¡~¡bCñ—õ ÉY_/¼±£¾ÆŒ½hÌ¢·€O7«7Ð媢fՋ욬zùm“U/´o²êE7NV}í;'«ÞC‹g¸9}4(èÈ+øÚ$¥3Fß¶ ü—•ø³âƱԳ›ãCË~u�JYV ‰`†ä@]è¸HÎM%ÎÖSÁ2ß¾…Z¸ìu¾KÓ™¨ÀÊçïAŠ®È�eÆ-,çø{ <[ fp”¢ôY²øz¨e}?)WVµŠ�·‡H4Û¨¥ݧ‰fµ—‘Ðg IèÅÓ –ˆ¶R…d4ï;wîÓg“ ,í<ùH}‘h7P[)¼O/x~ÛËH賯Q0ÐÓJD§�:J "¨Þg–‰N uòÄWBìsHE§�:ŀݞD*ºuÔYFH¿ƒ…ây䢋ç/ÏFOX�¡¢¿óógñP·¸ §."E&¸ðvoÝØ½.ê.³3x$aëõPwÙÿ„mIÀîuH\ObÑýûw oý>êÝÄÿwI¸1{ß“_ ÞA½?¤càáñ s‡,в¼ë­‰z¼Æƒ”‰(A5®‘˜©™>Šú;œz,×2 ×Q®7)+­N~'…ÕSõÖ!æ–oFþ¾Å½í_ �¤æúÈ›£Cø5Ç:-ŽöàÂ[â"F7𛩠Õß¡¨û�颡ùA~ ”fÏ­ßþOô/ô‹º‚{µŽÿ­³ue„@&{%A2Ö^»»¼†˜ãSן=<àÕ¶Ñmm²bä[¿Ÿ›ãjˆîßmBºíÞƒñ§Ý­yµÝï7{²ñÏf»ÕÃ’äÁÏ&Ö!òñÏV§ÕÄ«Ç ÿìZV·k ÿìuêø×þÕit;¸éˆÜïbã˜<Õ‡¸ÑK¸Úî@_ ¸Z¯Ãcäg›àŸVÃ"¨á½õF Ï®vÚu|u€ö1øç¼­Ó‡(�[øÙ‚¶—àn‹�§èDÎýzjÆ_zã­Û´LѤ®ÃÉ�7Æš¢—Œ�Õ©wç_äÏÓ|2b¹ï]<•>äL-ÌïòқӮѥùMÍßÑ5‘‚€]½2ÿ�\ÓÁŒ„wgꌾž{·ìÞ ffváÚ<¦Œáð]ì˜Àåï@é²+csx–-ÔŽ†¶!]ëðñÚ6oðaâz«MÙõü¿olaa|Gæ6Ú7'èkY;QǬÕE¤»Ùß“Œg—NwÓK"îýŒ¡œÃ`3£[pÜÄ÷IC’nÊ®ÌâG}åh)‰äfT¦n0Û£!º#³}.Ì^�êÍfO\�dr¢EÎek¼f5 óws°¸‚B�qº3ugcß™“§æ¦S­þhh_] ãE0ô�øßKBá0Ä–�N�yunžcC¨:Gý^·Õ7ØUĵOriÈsôà ³µÓéÔ;"í7„Š€[={Ý~»ËVO,àºz¶û]�z?^¤ÈêÙêuq¢‚ ó¦ÀôîËí4†Î›8á¡ lB­¨cûf+jbú·U×ü20ç\†áCíTú¤ê�=ÒÆˆß³=›y7ÎXlnÓIËw~•ïôdΓ‡n|›âñ]@ “�yêfG×KŒu'<ÏÒñâÏ»á'¼‹ºȶàdoawä�¦Û1àÈágãÉŸ$‚^BpÎ�|f 9T8O� g› lÕµoŽ€m~æ’™Ì}“é;ãÅ7€,µ­¿L>îe {Yâè0‚Kú;îy”‘QS¯ÙëuŸCQŽRCaÈ4mžv¯úi5ìF9ü3óVžÃ�­ñë-_­¼APˆú÷¾b}„•² òz·é$‰Z°ÙiÖEEEâsŠ„é ;¶Œ™zô¶N+«œ­ák´S!ø¶*•%LkàÊFD„5È œSlãÚ­]2¨¢³3DüÁæ=!s³Bþ©< 9Ù%BäOÜ…ÇÐÚ[ÀJA È:G§•àz²Oã*3oâÕ&¾sGò4“¿ Þ^B>çÔ±Çxó ‰¡¾k×fε3ÃX¹œ®°±æÀ�°º AM™Š"uUà IËL¢ü¬¼¹ÌLWôP‚¼‡( KùIÔµ¢}8 �r5î YiORHWtAØ‘ás†‚ð ]N+¦8ý§ÃùdDY¨ö×�£ƒ�=Û¸ÿßùƼªfÏÜÉ|scäÀ;_ÃåKû¶FÑù6¬zý¯øÚÃÿÎ ö»±�Gû¸h‹ñЙòõøb  ›�ÆÕ-{·?q19uò× Smê@p)nc¶Z%i1cæV¿pÃ^„y+ûö^�ÑÀ.j7ç­ó‹V£1:ïŽÌ/ÿPKÒV1]8”÷ùÎi|5°imunify-security/assets/ui-app/assets/static/other-root/vendors-node_modules_dayjs_plugin_advancedFormat_js-node_modules_dayjs_plugin_isoWeek_js-node-f0ac04.bad609042127f1c9.jsUT ëÆ«jëÆ«jux 臬} {ÚHÒð_Ix=~Ô¨…%nm?~wœ�Ý�drífgÆЀb!>á¿U}H-Œ3Ùý^çú¨®®®®ª®>c¥<\Œk·|ºñg×Oãhg+ž8Igµ ûvöv;ž�Æ&OWÖx\»áÑm?m¶Û%ümÿ Ûãí¿·wÛëG�6wÛ'Kj¶$½ ²Ù C3?åµwµ�"öµŸ­3„–5Ž^Û9i‘¡ú1. x#NæAä‡ô£ÊǺ ˆ¨q Ý÷+÷Ke#UF¶ê`âöpˆXTûTÓpµ�ü½-àƒFj@ÞÖcÙ¹7hÒš«K}R¥>}Ú+¥(‘U(x­ ^_W ~ÙŠ–– %€ ?�7Ûü,ׇ°ü»ÊâEÇ roÞXòìc°:ñ¸æõ�Á)Dæ>èÜÚ¸fG�x±HyöÆG»6©) ‡çÁja-kxÎ~fº¾l·#ÃC’“Ýng‘í¶»§­ÿPQæ3VªŒÍ“Ê”@A øó¹ÕvŠž,ÐY�ƒÂê;ŒM¡2Iѽ&[Ò¸2¥5|¥ÖB‘µr6rHÖÊ,r�ž^ÝŠ¥ðJ~�&ÑRNcšSŸ© iÊ,e/*ROsÖv,T}YÝyÒȳ٠!–¢‘“FšùIö˪aB��*âJô¬}|lå6ëaÒ˜AEgú�y°XX)¨€Î÷v•òKg¶ÖàCFÎE’¨n»í ŠX™üCï<dN�ì/rëF ‹;d‰«1a/_rÁúí6Rm¨µ‚xÐ/èx$'ÑeÜ*CıLv º�ìDI$ƒÃe½Ã¥íiÀW–Î+†¢¤ïvÛíÿNAÖq”­j4bµ¯9PÊ“§êb(KbÐP%¾³ C/rEÍ`?„ÁIfî-»U·2d¥ìݘ(iCñͪ4jSÎÞäë)Gi¦U:6VBÐzžJÕªsÙAl2qiQ Q žŠ’Á˜ýÁõåËZ�€(%8PP5U˾, ˆ�­¹ŸÍoÕýR‚²ÃÂT@ÚM--YUlv uþ¤‘Rzz^³u:@y¢@ãÙS1/Åê»�–K†ºíhÚ¼l?õiJÃaÄ¢íÖ‚#caòŒ¹ÃÙ(»“FÈ£e¶Îl[–X1LÏ&Cëål»]Ad°&Ã0¡*Ù›Œ|Lö†‹dwr–brº}br(¡wXÓ‚¥N@7,t|:gB×Ad-è†Ð6?ibÿà˜:—”-Ùš3Ñý±#l/’¹t¹ÓM»g¿}á8˜¿piLèšÃõ(®mÀ¤Á®˜?¼…Ã+L¼—ž+Ì­µ}C¯às#,&ÂÞVôHcˆ Z¬:�O ˜Ò墩W<[ïƒøÄ#˜²Xó7dÁ8žÐü¤ºb!¬Ï€)Î C!„†Üf¦Û˜Dê+šˆ<‘Ù¬U_iùŽÇ¹$?ÀÞZį7¡.j‘Ìâ'MàƒI;h ½cªŒ½8iRßÞÀ7fïó³ÛÆ:ì–Ý‘Bl¦ì^ËK�­º€œM¼¯äÂ(zAùññ,ŽÒ8ä�0^ZµEœGóSžf/~˜¿ð cÛi5*„ AËãí:àBO¨M§0 ^4Öþ�¨G(ËÖ »h¬€ÞJß]4¼wTÿ=ɶ¿�-KÛß.]dOmÖ&;h£Uid”¯U‹/jö”ÐJ®h¼]€&)A{ÍÆ·�;zÛ¸/¤üu)åG_ï =�å€YxFÈ� ¿K�\š4†Â"ݱLÚ]PX1.óÊ8ŒæCw:Œ¾¸wâ¢|ƒ8sÝõ(Ó*gÅ: Y®5`Êí SгKK “£è/ଌ° ÑK¶¿ÇÇÙÈZ€è:Â| c% Ɖ…ù2lcðKPVX°‚ø]bêFpp­ê<ýšdV€Zð‰�€wÒúÏmÉ ûáÝû�Í’©~ÉT9Âp©úµ-g ”@Ž… {ÉX¾Ýâ�/ �Cg@ê¹ -Œ Œ&'V1BÃôÌ;s›H¼ˆ‡ Ò3m°ÍòzJc›ùõT7ÑÊ™Æå3‰m—4”//øTÄ ¡…û”a�ÍôX`8ynÌá ˜¨ÊspÕõtÁ¸¦ ³ÐOÓÉ#Š{–ä³ d#cã ø0�p¦µgåk9”bŠt-7"a¯7~µ¨Ê¬3Wˆ\È3ð‘,3ãÌÃÁ:;͇ˆ¬«y|‹F{'Ô8Sj jR)&nÛ–±«|cb¡Ù Ûö¨Æ##O͆¢É@Q�û.2&�£éƒ)äNµuÐ_&ÝxÙç»�˜aTü9½”Ù�˜8ˆ¨bã€ïärE¢q66¸å8ºJŽ\‘‹ÆÁ—[  ÀQ2M¸=Ä‚,¦('"˜ì4ƒÿ¬ÊjG�Ò4Œ ;4ažme£‘G ÉD±”Êö�ž|dà9>æV4ÎAEÈÈbž‹b9xÜŠipˆðDìvU©dç(:w¼Av�¹pw;Ú鵺ÝçõA(ÂfõMPbw<É?LŨû*Œý¬Û¾H˜S´šJ¯À«Ø¡û«Yª™ÊÂCäøC­à “‘*}|œŒZÍa‚¶Vw+r8“Ù˜'aÑüi ŒŠps9˜}‚ø @�ÆÜ¶',ÚX¬í)$N´úµÜöD<º0çàÙêz³Ct »I•S~‰�pÐj1Þ•cÇAášAŸq•„}k‹u9¤Œÿ!Q€ J@6ðJ]ðìÏŠ(`†|Κõô1 œ¡‘„D@XñNöµÛ®¯ �I¤Àˆ~@ꥧ)¦ØÕm/âÅ‹ŒDy¾d’0¯¥Ÿ!:ƒ‚¶ˆ y˜r¥ŽWtm`"�‡8ÛNÐ÷ƒ*ÆàŒcP´‹ï”Œ^h…iE·Ó{vZQm&:³!Älˆ ~²Ì×<Ê 8jžCO�HÀØï��Z :6–„ƒïnå@íßY.5×AÜN8:z!" Chè(’¤d7©ób"v IÍVï´÷4©œ-›«¾à ñ†¡¹,{b&äúÄ/Ó/|–5f`\pÁ ÄPúÊà€²Žä [VtˆáÁ‘Ç¢-÷¢1wô�´%¯wDMt=p&¼“|«Úï¿§ukl;“óߟۣ5ð·Œtë|Yõßoñ1¿œ”eÎU©ÙXêYlÅNþøkì:§¾³˜<¶hGŽNÀ™Ã¾{Ï——wëóÉrúûïÖÑcº£Å×ï¿“£Ïæ{!g¤¾äü ¤ÿ)|…þæxµ ¿¬Â¯ÒP€‡O)¹é?51¯Ù£3>“8ð@Ùš­~‹úQ|Íùí*È µÛn·[½õ¿æþ Ûé´dpí'AÄýV¿ßé¶©ÿ�'EÛà)–XÖóN›]—Nƒô+ÖÐíõÜf¦I¡?»¸øÍV|î‡ë8š‹ü¦Û†âHO³#7LI²Á©Ûé4Ý&�&0’<·ßl7[€*OÂûÛ8†ÒíÎi·ÙòèÌŸóL è6»ÝN³Og+0î ]·:MHŠgqèc [½þi»ç‚7�ø!Ñn7{MŒF‹0¾å‰ÄÕ9õNûžHNƒðZPÛlt–ë4š \Ësѽ)VÍýäZr·u*""¯Õé5["ºŒÃ9�$¿éž6OÔlËÀƒ¿S×ë©Î#àIð«øÄõÊ¿M»Õjv$šµ¿èN=÷´Û–5ÆapÃ%¶Nç´wz*A¡í‘è²^»|Vi³U”¹nÛu½¦HKø\ ë¸mOEßAÏÈÔöd¹”û²†SàšLDf V´{­v«Ý+SEk‘síÓŽ™Ê«©`–¾æq�Øiž¶ešŽîéiyÇùfD¢s¼î)V)éõ½¬øÔëxt¬E…ÝS�¡nGƹ�çKÕçM×mA è"Høl4àEyí.ÉiÑ:’p L› “fÕUÍn«ßnÒE>[¥�/(òNA$–~¥Ó8‰Q`@Ö@?–«8Í4®–×PŠ’�… ˜ 9i·š§&a# »BÖÙjöº}¾ç!È.ÐÛv[ 9T4QC¯âˆßÏù­RX `gšo­~¯íÒ š~„½íµÚ�~§ÙIËXp±Õˆ›8¹m]ªÄ¯ÓëÉ0¹öqs•'�ⵚ(:8›®D¹V Øú·‘¤¾²|ÚëÒ�ƒD�ä-(XÈ[°14 –+©Õèˆx[&)­íôº@VW¥¡’yÀ\�ðS™T0P3ìZ¿‰d‰\¡o ÌÍ(¦J’|Ú¥+’ö¡4Ó:ývWѨ5¡;š*Q«DÓk7û§ªZ-˜�à¶Úª–R%zýXÞV%™ï'gœ‡Š-@¨–L/š Ýãõ1q�6¬ÙwEPÉ ˆve¦<,étÁj³Qˆ,ûš„¶³ëöéšÏƒ|mŒ 4½V³©2”êtTT[‘fÓCÉV©›<Ù„l4Œ92±àRë´×YÐÉ…éè»ý^¸§Ò7¸�)KtÛH„L/ Ed³åjxi,¤L»íž×ƒzƒyT 0T £ ]¦5Ž`M¯ßAšÝ'qª1,Ïf~D*¥yJ#ÿÆÿ6¡Ûï‚ÜB" B €¸#9`Š;LK,t²R/bóÄŸzn»ßcVšd0m ð2.È›pÚ‚�Tó¶Ý€®ßø!7LEhhªLlsÚu’I%Ÿ@vš§Ð"Ù`S»ÕSÓ‚ä�ïCË6RqÝ^�n¸?[mòÅB´þOr´Ý>˜}ªu£ë¹ C›0_ãÝlw[P8¾�+# uÚ¨D¥ æ²L.«ÔnD†_Õ|%htȽòš0¦v`¨Iâ{_êèY‡‰¦©!—`л  =Zè(?PgˆGs�©ë¶ d›–Âèv ©‡ é ÔJ°ZѧiÀ£ôºà×C<¼A“¦¿‰V£¢ßà™”‚ ­qÝ®J‘ÊÞ‚>….5ô\§DJ‘;§Ð—¡ï´]¨µ0í.8À— Í_ •#ì#4é´+&À0lȸ.Y¼ö³XXýŒéÔМf¿KÕ ¢Cq¿KoW0•ž] [T€=Zd4]Ç×Úù0,Q÷F×âáöÚ»rîsµ·dî±EÔÉ–Ÿø�EÊyÉí7@ßc¸½+ÎÂÐb~†ërv­F0ýZCÁ,þ½½¿ø)·…©âªÁïø J’sœýŽ=½ ³Ì�Ÿ¤üoQfa2õº„vqr{>µ"2h‰ úâo¬èì¬ìu¶ðÛ>nÂÈ*�áãˆZ^ç8"£Q{‹œ—öEá ,Ø„0vCÈëêP_,ø‚r'ðCí²„×Tuõu]߬¼Z»B‡Óx2€ö/Êö«¶`[£q¿Z$ 6ûP€¤Ž�'è ËHÓŒ´dD–ž—¥/öñGãöDݘ@߉¾(¼, ¿*kP0Zî¿R¢]7V~úËmô6‰Áæe÷¸;=µÖã òjØé×£Lžª‘lyã¿¡úãJ.—ò95v¾%xVtz¦;û<ZËbå¿>ÿ2bbm–EŒ3¨ŠP…NÁ•e_?)ëµû«&ç–°Œ€Ë*6wâÅ‹x»…¤;+ „ªm�Hõ#�„�%|¦ð‰7þ,ÈîåÆÞõ£êE0†»‰:`VÒöfoC(Á¥ZâúŽM™­ö„T-ÌNJ —…møü?G�r±š_„—FxJvŸË¢×ÆÚàˬA/Œ>zôDÏְ͵þøV ÑElY‰M±bUœÔŸ1+Û‘Ï&  qRèF0o°¿0…›I®²•%�Œ’‡ÀQŽŒÝËŒl·®Yþ¡,o�!:2òºç5šY#vfR#£W–{uPÏ 9pˆn·üŒy"“"-«…œ~9 §‘"Ü”yaáb( ”j¬hÖHá§è­ýR(ºñ€Ð—YÅØ¢†l(wÑ¡dVÈ8ZJ\òm,E(�ÐT„Œm>Ù½–�ý R|l0MYî4dVn`yõ¨”žãîˆGƒŽ“�“ÔîÖ->JÈ€ËÔĉ0µ &Ëáá„…£FçP šâõë¬ V&e!®1‡#ïÜøŠÇ⨅Á§’×_öônUè]Zè]øM½{oÈO&Nˆºä‡�2a°!00Ö*ßþ‰°‚lï‰çW½2ªJ¡É·²Q×=�l`WDêÙ Ö1òúî9‡_èŠ, "¸ˆ Ù%VLï(húæÞ C­˜úi,#±¡®öøŠÅVÑvq”o¤›üâ)ž¦=à‰TòwtÅïW´ðdÌp¿Uvêÿ[¿­”AyR–@‹‡Æ®®0Œ\‚‡ ÔH¾ÝœO XfU�:Pâî!Ø,´è0‘#_�``iÖa<V¤ÌáC—9ð=Èl\ pŒAC©#Hã+ œb¯´æ‹õ^ÑOè[M­…ß«5––òTÉw ’½ÇRêB¨ B€ú 1,Ýw{m+€w÷G„×V4Søiàæ×‹æî~ØK !é9ÿm‡<è÷šºQîà ’Á`gÙŽvÜVïÙ�]UöHd 諦Ì諾ÜÓWoJ_½� ýé�Ú®{ŠÀ-}ȺéûßDàŠ¾_‹À’~ü$9½ú kºŒD`N—"àÓø�ÜÐ�ÄÓ¯ïE`J“_E`A3YjEó/"ª=„yÜéâ-bHcé½ý¸H1žëƒope@Îcp‹`?‰é Ò DWÅ�ºPApÔè¦ 7õÙÌYœÒf;·Ò�àwÜI³Ê› 2}u¿‰3 ã%n¡YÚÈÔ4ˆp£L…—Ñv{è°ò™‹–|OcÐ+VœÞ¢·2 $«ËEYôͲ‘ã�ÇÒùÐ< tpvˆà¹w”ÑÂUH„ßÑ6ê÷ 0ös˽i\Có¾KpÓ¢C¹%ª$ÅÁ;<»!Ž•åJ´Sö¸‰ƒ(˜ã¸—£@œÕÍÈ0;ÃC9£‘>ð0ŒÎ|qj<5±>ýO.’Æ…ˆ]FsÞÄáý2ŽÊL• óžâÉ/c¤”fz<h<¡ãœú“bË;g>ÃË ¢-x‚ �Z¸îwjsši®€}•—)¸%ŒÞ¦à0]ê· BPœÕ! ÜD�' ß'åuØØ¬Ô´Î5WвÉ+ƒ«}~­ž7Š2ì†Ê”aë�ɱg ”àó† ‚aU qüÜõY#‹ˆµ!Ä w÷,çåTÇh)ðº”ÏQ¿¬iYjÁRJŽÎ¹‡Q2f0ʱœE%Ô½„ÚÈÛ$õ̉ëžÙÈhl uÜ[ÐUd'åôŠÍå!j˜Lé}�]†AèæÒKø\Ãç|ŽàóŸWðùŸ/ðy¯ûç­Ñ;_‹¾ùõÙžyo0ú/ô}Áê?×3ïUûßR³èW£è¯ÏsÿËùøÕÉúñäËdðp>þpò@�N&ƒëóñ›“kzyr=ŒÕ*U¡oØ%»fØ{`¯ØG†í­tØ[Éó76pùÒfµíksÎVý©Lþ$ éœ_À±˜Bù Ôøè—ÊmgЧ� ès!wï#¯s;©'døÁfAÝšÚ0ÁkÒ#¹°qM“>@ä ö_Mv–É1’*“ÿ É?Z †Ÿª�øª¹eXÑ«VõãÿYC^Ùxºé${ZÇI-Ò�ý‚Gî+í•þ3{_öØßŠC¦W�›ñ;ð\w3N=^%þ<ÈÓA»Ñ¡¢qïeü¹«: ^¹Û=+ïE•¹Ï‰¸rhÚÿ'@’ïî®Ð4¢8+P)ßQ··1 㔿õñŽ5q‰ Yúj +¯¢¾Pþ{�yßð�òØ{³7”§¿ÆN£G�ÑîóŸ[Uæç²ÌžÑ7žÇ.yÂdÛ­ II¶TZÛýC+Õ¬ÁS‚Š|U[¶{á¾ð¨÷“�fý™Ìxø êÃP�˜‰JŵHD;Íù8C1BÛðädwå6ƒ$S¯Ferθ4“¡\‰#à†°gUaÇu%ìшƒ°G…°—Mì ¾JÔifœÇ§Ë[à–‚|—&*7…Φsj o0*ãÆñqÒ0ÕÀŽÀ�P^g¦Eý`žÀb¥� ¼æË­„àj]Cs¨¼Ð郤¸~k–½‚¢WeQš7ÖÜOó„ÿI¹·Y¢¬RrŠv ý“‚¯!@(|WŠÎ YIÌÿ¤ðÏPôçJApjpMJºªÿtÓ+ƒ�[r}�ú€|€¼@‹ƒhN™ J9O¼¢§ˆ“ÂÒ[‘D,.ìá/¹&ú7<ŸNhÙí/Ÿíö˜ ‘h_™ü}tÄì€`e  Öžh-ø�Šb¬HŽ(•:p4zrÐ^o\ŠF¶˜¢ÁòþÀÿñÀV@/ZŠÊÄ5†„•¼¥yU ðz³D¹º -¼ O[îé·n•™Gàß‹ r¿w·™<q¾w½<qYâNW�µÞ7 �<õ�Š�ÅUðàuuX•/’ ¸]E¼ÄOhåH¿q™Ô'søŒœ�àÂLæ˜ãvv’ ßXßt E »–W·ä¬ì&àΣ햟ŽÔ4ĽO�òT,ÿc†LÁ2/,,2_Ú(פq~YÄFb£*±€`bø´|ë+–Ó5ƒ}ËÁÕÿ²@hNÜDåKÁ)9uƒJú"—yîùy‘!~‰Ë¯À§&æº�»Â%nˆÏL|tÅf0WLë�¢~,3ß+¬ÇΪžÓ´Î�Y= ’[_ßkU�í°ž“‰–3ÿ‰HýŸÑ;PÓ!Ú왤Í^íÑÆh ÐFý]¬éЇò½0V²q¥½~pAÆz•b•Qoc«ÇžDtBž™KFêš% #åTf&¿Þ*¬º衊Ê{×òÚ$š’xQ#] }p;àð„T¶=¼yª¾3DuqXGñÞ.zßd”4Þ ø—9æx*§D´yîzõƒ¾¶ëëÕœÉýíÆ Þ¦!åæmXõÄÒ\! h,›”ãØ–;}NÜ…¾ôÁßÝ1,çÊ[«#´ùútž~£Àgè>!ž^˜&²d0nNŽ�_úð£nâ5 ‡ôÎæ£\²œÄr,ç—ð²¥|l¸£/®¤Å�­ßáÕToà!÷RÙµ\Œ# ![•ô%^n Uf#.²eÿÑ—dï•õ‹²Þ¡²~Q�:ì°¸HE ÃF'8<Ñ+ůP´j/4ù¢É!´º�³—å­¶ÅÅã=ØayY~Éæô¦ÛÃeãfH€³Ö’-¯Xè»Â�ò@+ Îcì(y1 ‰K— .úæ^Ü*””Íö)+:ìƒî qI^x0^.w€)‚oj(¨Ù o¡@�ôl€¢¼@ïxÃïQ;Îw×°�o§¨b³ë…�˜b`Èýîv„Üz M$CS8 żQr\ ±ñÚêYñÒ†¸ƒx *à ®4)€l|þF&º*q·“=£÷JƒgP)í)ª;Íäã%Ú’f¨s•»|NÔÃD© 4é\«Ã8¨›V_Å”U/ÂÜÄ~U½‘ŒÏ‚ a²±qDÓFzÄùLóЮQh¬@›G�Š65%"G¡lÊvŠ\G•p'Î;µ§$ôó(BÙ¬@‡A“ˆéˆœJ̪zø¢d¢à.‰"YÑØ¬h¬è�!æœ0‰Rþ6ñ·røò e[ˆNÍ9†"çêƒÊ©[VÔFHòú9ŽVÎOý".ª6I¼.ìp]¿S¹|ðp^�p Æ@u©íüSßÌ4ü`õ1¼\O]@d†ûA0ˆÜèUÄ{cì½+Ùé³Ë�7j¥î’ÞG*†`jÆø˜ÅxòܺáM±[d"¹3�Lñ<žåõžÕSwˆ³×B#¤8Å¥» !ºAC¯¨Ä\õÔšz°7«!žˆÏñ!¬�ŸliŽH»¡¦:˜JÌ7�À«*Vf£X•Úì ³ Ð³ ÑfH—YÐ ýÅxãÅ7@ÿw¶ç(�M¨tù@¯ÊfÜã;ᛂI�Ž6PÍ _ì€8Œo$GÞêé„^â7„^³7â%âkB�JÄ{`—Î }ÅÀh‹WNèGöªþ@¿°�—§ïÙUýŽù¡^s•¶î}ýUi�>½õ#û}i¯>âê†o³/çö+áøé7gŒÿq _’ê·ìÖZ#'Ö@5^XoeŸexæç-¦|•)Ÿ˜õåA¤ã A¯½]ÜnßâP#”2þ(Hôâ¦å�D¿n·¾òÛBL8ÊÈÞqº ËýbоÙn-ÑÌ5LT'—Ð98 À£à0ˆ‘ο\u�¸%Wð Ç@j pP·ÞæÚ¨P`<¯š«Õ÷t³â 7õëI½ß_#­Vf®ÕßËy_&~Ž�õØŽ±'ÃOØ(XÍ!¡Ôý+ð¹ ¢ÌaÀ4¡1ÚWÍyT�˜ú‚y;Xå`[TZ�î°y´š<^Z©z÷*•ï^!²¢Ú¡šÕ¨×'�YÈ}à2Ø�Y±¤…oqicš’ʹ.p …âéFÁîšïX¾h¾ ¸£øV)ýnýšÅwËO†oÖ÷:+ý­„q¼÷€mOU½&á|‰¹Ró…^RV'La9a¢¾†X!ž¼.ß¾¸1|°ks©´˜‘UNГ'qvûiÄcÈèF†v B˜FdSTÀEàÄôJmø±KËÐYî`™ÓåŠß�øŽñ[OZïlV˜á)·½É- ¹ú�¦üÌ=GÛ9>€ž�£“�;àܱPúÂøœãS¢÷pºe¶ONšÏÇOÑd|€IBà543´¶J�K%˜Œ 1º]2ˆ_2–B·Ÿ1µVSÐÃ�¸˜Ár‡ÅbÖE¨A}ZäçKU~P ¥_"^unÊ• §pl Œ>.aã1!ù•(Jº¸u+/‡ª€�º1¬;ƈ_·*+=xM'V\Ïë0WX‘8Ô¿C#eÿ?‘…E gÀVæãRSzp»ÕDÊY 7²…9pP¼éDx¼éfš+·1ãu (B¤ �-× ®ÙÏqw/îTJ›1çI¾³�Aׯ&v‹ª[,×FDO+÷TL}F˜l(Ê›•Ÿ4K¬ù³MÂiÈtŠ˜cH[@ÇŠdäÑĘ´=” $4F˜cyMM´BÔùP²>Æ•z�#áÐàé%'�qÆ|€Ê  f­ ‚½H¶ÛPÔ4rÿÃKæ1zRbÀœm·xõsvž 8��yç^4‘+ €ÐšÙ¹Ý&?´çJɯ.‹Wôg�õâ lU!å�˜+KC‡ºƒÖ šË�ÜæÀ3sq�ÐÈõî[ƒfe‘ܘ؇0ZÜQŸYÇemŸ?ö-¼ÁZ¼ „›ÇçÜI®¼«§ïOÄ m4U\­_ŠÉÿnÊ©3ôiHgg97tIïéš^Ñ[˜£$0wÁùç…žs¾>¼Þ{QL-ÃÂ'™áâïð —´Ö8o]²ûòôÑž©Å£©—êØããõññ´!Š­Â�™Î5T}¯)ÀÞþѳ“ß;1/U«©ôö'cäÊ„‘ðôá×pÿl†‘£f8æø"¦“÷âeC�xÈ…xœA\J¦£OaHX€ñÙ@.jÆ8•ÞŸ¢9¨Úùæ Çí>òhNNά |ã;Ì1(ÛŽ«€Œ* ŽS.�ïÄ€v ºŒ³o9[×nìÐâÛ-{—–‹ÄÊòpe6’àŽ¸1ÿ31wã"àŠÈ4§'dˆâÌb392¦+¯¥6ÈM5ìàCÓƒKaNÔ‹ˆ˜éÏÔä’ÀÔ^‘T´�Ñþ†ù0÷QDq»«´DW!,T1Üš˜Yr¿U:ŠãeyñKyÇî#]â²ÏäÝ‚�ÿŽ“gòR¹àXÉÊ&×û׃*rU2•«’!Èê ¤p%–ðW‘Ð$¤âIEÆ!eµÝ¾´ÐðŠñ4?a ¨#WFF¡^¸ÎG3|ê–åzÔ^Xø§€:›Pg¡xè þ À?:ˆÿ`É'øR!ð'NJûô/èâ»è_ü9ýq�tÿ7é_|“~=Èg?ñ¹Oßë+±¼ÉR.��<ñ£ÈœáÓÏ2s†™`½ð¼ÚÕƒ÷ù·¥m^Ë_ÃX|*•Óh\w)ÒVŲ?õ·[ÃÒJt»%¨Ö=¨ÖšùºUrÝýmqZ¿Ôë¯w¤‹<~ûâSõ½L¾£—™ïè©##,ÂÝ=ãô3yÜ}2Ü'Ÿ@•W’6ÓÂX•1!e®õÜÖ§ j.’œaìÁþÉV¥×´Íß<ø[-¡×†�Ç¿”×(~-Žç—ÝõóEy¼’= ƒÍå]Æ£ �D”1ã…ÛF*þ3¯ãâ; ~$ž_±Æ.Å}ù e²WX¼��Õ_ðÌÇ‹ç‚bëWqn)Âßrð ^À3�–W¯5cKÊ£ºA¨QÚg»™2ÅS)bqº°¿É‰Å<—ð0¡QižJª“3[!´­Ä‰ëº˜­‹q7ËVuØ0Xk Oyhh0³W؉×l Ó¹|Pÿ'æué�å,¨åâd¥iôäϦjGçU=0ŽÕ¨›6âB;îtŠ…oéJ®­ÙÌ `]91˜€u}m_Õ¯p@¹=k×£ãã¥ãHÀ;0[pS{îchßÐ×åvÏ]ýΞ֧öEý¯ƒëÁ'ì5¡—åšK¸Àÿ~c$W|�5�…^€Éí°lP¬pO鮤gÖ%}Cèv�|?Ыì´á;‚6|dWõg]5´>Ö?žÜžE~k]€ö½"'·N£CέíÖ¯oì´>#}3úQ¼ºúÿX»ï¦�¥ÿ¯Ê‘lù %JŸP^ý>´¡¥\_7Gq[ H©$'âÿýÎoö¡]Yν=b=vggW»³³ó´íÈ»ï=÷¾P?¼ü9à¡C@y&0ôB\YŠcêìEÜ+$R;BÕ?�âÎgIºÖçj-AIë,ž¥ÓYGTR‹”Xu®M.n&Œª*ë,%x©l¨ µûmÊâ¼JÈœ6 ™�ÙËHÈUè€L\^<Áª+ùùnä``94´ÝòF?ÌåÄe‚¹ÆÙÐ;¥Ÿí‰÷ ÿ ?ª_ ФpšIœj2í/ìûäjÔO mØÁŠ’”ðØ•!¦D`æ„úу bÛN«Þ›êRC«S˜¹œŒyÕÜ•wå˜ò]n²ÉÇäo§ÁÀ‡¾m ´ÞêÞhÈh–œF‚iÏ/Á*¤u›+S%/Ä 9¦t_®Èv¶n}h†×’Sp©xN;eÛÉÚM¶¨K—‹vWZÙŠ…–Y—ƒK÷ GωèÜDWñdéeKÃ,g·&mZXÒ¦¤Ma»¤9WÐ_:ÈõiÓ ú{8° Ûh�æÝ¥�°Ñ�é¥WV6ˆã„nÀ¾;m;y;È\„a¦›²›´sÝ¥Ëf£³ÊaNΨ1:XÓ&sJ×ewNhP×.«)öG_V Ûé£T$GÚ’è@ÿã“Ñömº~Cg�CÃ¥¯råzèÿ[¡CùÜ÷^‰ËgÁ»Þ�÷G`Úk?5𘠛ž2l f�.û«e® 4Ke­åáX‚X|R Ÿ Ò¿´·ËKçÒ#Åûä}ðÞ»Ò\œm�7´�@ƒ23–¢x,v‘¥5c,œÏDÿ_@i;œ^bN‘7ÅÌxMKø×ûÝ$¿Wòã‹@ø­xOÕ·}ª݆Õ{AGkö˜¿ð/‚_œÍ×·ääøÆ²ã·Vj®•O¼Ô#×ùè$Î3ç4(]—­ðž§�ýÚÌBú#Q¼·�LÍC½vý� #+ÊÍ�<# ¯‚,©‘c@Ï@ÒYÒdB߈N§­LtË•#ÇcîS¸?PV ÚNö0¶¼ s]öÓ0^ØOM)di¨‚ñSVP§—P§#*z; �I oaD[ºE›Ïî[êL¹,Í:ÓvØOhÂuÓvAg ä�hÏ ]LÝÝ/±cr.“ΜҶsI�Ђ†'ÿ±sŠ‹ƒà²}Ù�µ¼¸Ó% Éö”M¡ÁÆ1óvB�îe÷�ÛŸqá/Î!y‡Á5¬¶bEȹÙçàÊС#‘@å¾V|å<*»G{Ÿ! >S©#*ò\àú‚8¶ÏDPôGxahßÁ÷|Ý»Ïuï̯°�p½÷77/ƒø~t¿óuðL+ö*¶òüügÉDÞ÷¿ºþý=6¿xð€K_ýlJñ—ó/üb@/Žäp|RÐ ; Ù ÂøÐ»v>¹µL¦õRÌ‚x?û‹¸[²±¥Ñíu³Ñâ&úé>,Yèr›æ¤|ú£©§O`Œ/+=§�ÛD½™nߪ � ÄbóÍ(fC"âŒén‚ó¾˜4ç„ýõhà|ë_�è¢ã\ì™ ToX°•²ø# ®Ù Þ”@\oD([Î%˼gP œÑÅ%ÿÎèœöŒXµ`(‹»sÚ^®¡y5!¡þŒ½7%)»Ä»äýÀ×ÐWßzÛ–ªÂK-¤±&Üã¿äèx÷üAÁбhŒíLéÔ„â:Bª¥cyÆDÖÞò.J¿Ñ³N)‡1“—C˜¡±™¢�µŠKŒ£"À½á×�_qX bŸ& ÇúÍ0»„ëå¿ò5õé³Ú3�-ÑsÆOϼF¾_Íi"W!½ar�LbC(kýz¯'V�%Ñ´üs3HŸhBÁÖM@ù´70@|Ü Ä Ä\W\ĦëÝm0$ÛI릔ÓSïÝ0w—+«ÅPUþé<õ„L”‹Å_£æ‚ö!ͨ_zcþyéâ*Þ‡ø´œß `³ ¯ƒp^M:bÛònÜ,‚C\�¶·Y¢¶ØµeP"-Wq!¨Ú?�¼!I$ä‚Ì=¹ENø]äW)4Ìî]^©£òxY¹ÎýŠé¸\®jÝ+—®y¶yj›„ C¤ßÎ¥HïMBl²‹@®iÿ«sëY”öŒçU„·’tŒˆp&†€6®¬ê?¢]að™Ô-�9J}ˆ¦]°a`f�¦tYÃÅÕa!‰>œ¦úp ­m;`úÃå¥öD$¾©áLëÕH›$k�GÕ÷ êÄ{L蟓IÊŒ¸«„ÏkÞu*Í6æ£ñ8ªC$!톴“qzRqß '¿¤cèS*§U–²ÂÜÅŠkñ¹¬¹^LµÆã¹gÔlš,T>òŒh‚ÎI“Ê™3»ËÊŽ’g{Irªï;n¡‰®ŸˆúwÙ5C]9”•ïȘ(¶dÎ…»¯ïÌ+~$­ø‘¨âGbƒ9«ø‘¹âGæüY"|…% ap%ùØy<®žË§·Š•Jo»]Ùüá";dÛ=a²ELë”6ͧV¹þ»ÇIµèÍX\N„j®1jZ|{…åÂTÙ | Î,ÊΣ2¿fÚ'‹ýœ%‰ð\®UPºG$8e Qø7:ûi§ïe»nN¤8žXð‘ŒþÛQMyÈ€SCkø®IX åZ–å§qJӳТh-Íb�ªüf‘”qu’LÂf`ÏÙÕÊŠÕõí¼æó&µÛ!fcê ZkëÜ·…#pcÈ¡1¬cQ MSñ;"JèKùy7š2r.Äß›4'5 N½´;t}#¬I$cO‚<Ã=ï°4&߇JÞNüm,kêJ¾Guñ°³�‡‹n¦Žäè§J³ex‰ß†öz¤ äîÁ�ù黸2-puòúñC*qÆE(ž‹§…¸ÙÆM–RçÏÊd<noÊ[éÝIdßUX!I.fÞ˜Ý*Ù³ªñD¨Æ§B$<Ø�ÓžØéÌÝ(à<½sa�êä\ÌÝ·‚±e{N�ÐÚNˆ, ð�q;‹|·¦±êw}ÄhŠ—ûÓöÚp¹õŽ©£«`’onT„!¤Á°R9—ûôtàÃð¸Nknƒ‘î±ð%Ý/GøK|x F¦ãZA?j‡$ÁXŒ-œÚ´a‹Dâ[Ô†“ÃÒSj@Åð‰;Ùþþþp—ˆÙ˜¦FŽéDÌgèÁ�¦ï¥é�ºØ&¸euzrdíCIcÆÙÛY"á},déÁ Žˆ~ ŒXÀ©È»õï¬ôCOœ{|{bC誇*ét¨vàne¸ïÓ< s.u÷»|ƒË=òã¥ÇêÍþÙ1 ¾7ˆÆ&·¨ä{–~ÑñÅÙà“:ì1æpƒ©÷�\“6VR*ynuÊ¥«%PëØÖΣ�«BsóýpàªøÜ|oÚt](f@E •�¼8l›JE忌7ïk6`8ðØý:Û¦£!|èÌø?gðxà@Œl ?*ML' L]b”`„lF:j'&3œž„ýd¯„Ý:�ì'û)ìÓáòÞE¢,hì¶ë0û+0ñ$lW0Û &Ü#Ú„”4£½í‘¶í6Mþ1wÈ=�Öø« ÇÌ�M›-‚°2 Æ­ÃÇÄ{zˆ/ñ9Wz�ÛíÁ¶É•žWñb˜¿¡‘¯3t€¾[}HjÐÝl!„ƒ#LBf°†Š™Í•G5>ǰß�ýØ]ª22:"Qjš —0®TÉ!ZÞY˧9 ¸r™Ø*Z¾pïÒ3ÈÈïéë´’IKÌJ(­²ÄÍbQcj>lë›î“Jæ#/å~ŠX(@ÚíCuÕU÷Z.uVú9�p|¼î®0Ûç¶|þ‰äïLþ^Èß¼åßµCe`QƒÔ-=£»UWt/ùÎØw¸W{×u¨ Ûâû¹FËÖ™ìÎv§éë¬êT¶Ûµe £ô1þ/ßѰ]Ì+Öê4;cí•BçÂxúÙŽ†'Î*ß.—�~ÄKNR@ÅQŽÄêÁéŠW“zWNô2£=Þ³ÅÙ„–Ä…ZbŠ® »"€±X“ÿnÜZ¬yÈr—�þìš)\¼Cvñ.¨uâ¡@¥» ¡]¾½X{¡uзÌ;ÁD1Iì^±T¦˜‘æÎ'ž’;Ò€œL⳼ठæ"¨Œ¨«¯s®$ùx8fÄ4ž"XXr0‹ÄôŒ¨ÿ€.ƒ3e&ó© Á§†àS‡>%{ý(¨@ÏO„²§Ú!ÕŽ‰t»÷ö»Â}?NX´Ñ|ÅÔÕlÁ¥ú€Àö+ã�ÓÜ*Ì�´èÓ®ßp�ÃIøÑ®Š°´‚ìºb]F9Äeëëª\ÂÏ–tþÔª‚¥iÍ~e»] ©"Þ®†²å·ˆÊ×[¼K]¹ aÏi؃Õ?ÈàpðƒÄB³qïtâã�7œ˜²›±ÞBðÈt�¸êlœ ª—Gl£;1“–…Ú �‡øŽ±±ªr J bžÁNIg¦vÔuJ:^Àœ’Qú<[Åa½ÚLÔÎ1 cŸ÷BV)s¨Co!†jÓ�¤tF2"•nB@ÍzEBó_„Rböµ€Ø‰a±z}y{fDV$B0ÒüÅÞpDxÂI•nö‰Ž�c>ê>].pI?îÈ"ýœfW†mEÐê…ës¬ÏržGÅëDØ(¬Q3ÙªeŸ\=‘“'æ³ùöOƒµgs«Zl1>þ8´Eaz“ì ¼²ˆG*&BËoU§ûÈ÷Øúrž¤Ek‹wºR~ 0ÿ.ç‚TO¢Î�CÔE³tûV\ “6½Äy)ɦaB+”þ-=Fn³.y3�…It­5/Ë ¿ß¿ººê]=ìeù¬?ÜÙÙé™—çIkW¿—3¿¡ìö`0èÓ»–ÇüÜû’ öZ°xK…©hC‘?ß¼F±'ý4<�¸¿\4-Ö6Íoû-¤z<ìÜù»>þøÓ þ]ŧk¬'1£ƒæå½×‡Îx|šMyâ÷þ^DùõQÍÇô�L¼ê¥ºxžDø™ˆ�ÇDIEóÞלeëÀã;Ø¿i¨¥'¥ìEé}ÍEFªÒèÓ“�'Ož(µ[ä w¶?2º˜ÝºþÄ6וּ7pGã‰/ˆg\úŸB�lÐS!>†�ù2a€ S”Ò€½3Z2fE� œÅy¡†îçyœœ2À¤ ¢æ˜bݦ@p r 0ydú(ÏM€ÞÔ´Lc%6©z•Fù3ùui¬¬{CTÍáßû…J˜·2”{Š(ÚlÉ&ãÝsþd¨ôøø4,Ããc3„žŽj*Ìò”èp!ƒ®iiu¢Y±Ýp/¡í9tÈÉ;rhfÎrpR´‹DøÅ £x#Ù¡° €�UV#£æÊ=DD,`‡†ù&¼€m‡BðB#è�¬Ä\4I½¡Vç¢ÕB·zÊ,_@X˜—æUcäÁ4¡Cdx Êé$PbQÙŸöЍt¯pMÈ YC½… ™aP‹ÓÞ Õ��GÇlKr´½SZóe„BëF®¹6ú¶¶P£Y£yizR Wïg•Ê8y«A¥h·#Û‚sî¨ô-VÇt粎Éë²ëÜuÏ<‘ €æú 9bNÓÖXÐFö4¢a!fטÿ0&5ÞÕ­¾ `‹—:Å®Õ?H’»�8ÀRîºçÐx‚Å0(îq3Å,~„ä6%‘ú“EÙ,ÏÕæ�ˆd1}�­¸Зfõ§ò‹JÏR'žl\sÒÁ:HR‚мßȸ@ÑhÍhùM=ˆÌvßüóí6 ö* ã¼D,Iš$;�ï“äyó·T†g1 v0¸õç0S›}ô¿���„¯Z0}ûï[$‹†àœNÅE—Nÿ¯›�~sÂõ{ð‹âu\@½C4ô…E¥p'sÒ¤Ùi¤7GÞN‘ªÔ´úö-ÖronZ-;Ÿºm ”iIZ3-‰8g:ÎMç×Owƒ &LÈoÍßX$°ö¬¥ÿ®¹è§†¢¯û¸Îšï:zïr}P˹!~FŠâFZ­ªÀÛ[è‘Y§4€~l®£ŒÍo¢ÒûµZ¾9¯V­Ç)ñ_¯Þ¿ymáûç-øV5Ll_ýרVðÖàúLµŒmï(>¡“�Ê›-v•Cšß=cSiÍ+¯€‹<ºŒ³E±ˆ½Eòw®•`Öš[q—/Ì-ž¦¾µû«Ítì t(ñJ¤Py °Rmš,×¥¹x{;ªu¯%S`ÁXMËAoD`7åsµ…¨ ¢aþôßã�Ì(!�ßz Ž !"÷þ_/o�P+G •Û<-TΫAð r­§õs¥}ÖàR£´7Í£°Œdl•µG´AE6hô1¶»oa»ïä©åÃy.Ô+JE–Šò£?ü—PÀ4šÛ©*¿àÚÔÞå¸'b:5.£ßíšÓ$K#Ttö7]§Z¥�L¬±˜]Sbúÿk[üƒ­üßwg×ñq–r�?ËЄƒõ³ £Þºr¶UÊ]â`¹#L<ˆø—ípqsñd㸥ãN'&^À7¥ç—Ô/ìèMG€ð¢^"ŸÐevT ¶’)‚Ø78 FÝTú‹,…†ê·Öc6ŸQ-ým£Ü°”‡?�ÇÔ>r³¡�P+è°qBÃד<@Q‘�Þ Em F É«0@�)×\FMã$”sŸMŽS®ÇIàGÄù;U‚¬ªD®wn*u&‹¦›ÁŒéà�¥ù†_>æ¾è€ÇPüÔS�ù™'›ò#øÆbÈ%3ŒÏÐ\} ;i1�Hô¹ÒmYÏÒ†Ž÷zÆ“-'Ü|¹Ê×ÛÃݗˆY€ÀƒÙyRª:CF=-ñâÙÄ~•UG# “Ä’ž‰ˆè6ÀŒ<Õ�äyZ£X$H[b1Ä5¯Q0�Ž*ç…¤ *ùYZц@À§r¡VSUK5g[0eŽ£غÖkïÄk8|ʯ¼'ž¾>õn 8f‚9_/Cïõà‰X)K¦fýn}¬�G“†î …fê;Ë€Óæ1[Ú±5­BcÝЂ;:""£Fú{3ØÇž–‡Ä_ÓíÊѶĔ‰šŸKªœGUW×4¬Á?pàAìý%&>Ÿüàý"Y¹âòþ§QŠ%gy²ŒåŒHZˆo5 Š[TØLÝ7@T‡ÏJcÿ9¨ÛZVŸ°ñyÕT(‘«”¶Æ2v/Sì%Ó(]P•ÄUD OòÜûdûã”iàÔ-#p¯!t«Ç‘Œ­S�4©1¨Ê~†V¢”ñ’…>K.�²åY0]›f¥ñ>42ñLÉÄ#-Ï*2ñLJ¨ ”,u‡Ð´I [š«Ã`#¦o×—§ÉrgäIzl*íþ~º§¤¬‡ ¨u¹„‡žØD5§–݃u§²¢ÍˆÔ#´Ê†÷2T ”ÝrfwÖ%è�VÑ&²3¿Š‹+£<Ø‚æ¤]£bÕ�…yù¹ˆ«æ5Å”2_0.I'»ºêµö"­ö"¨õâ~EÔŒZ /a 2¬p§ã…¢ÈÚ'"ߎªa�‡ìñ¢ìñ¯oÂÔ*p=Syxÿ”X.¢Ãæoñ*‚múp³l×{óz÷¶Ùh^έGç–aܦn7½lM|¯Nh¬Gg´‰]C°¾Êç f¬ ²½ªÔV.8¿Fá5‚oÎË‚|[¾mð�8|øí—Lñ³.ÿci³}+5kxzkG�‰l<¥PS²¡°Û<%ýšlž2>ÆAB=G®–ôîîpúÏlp|H¤^£:#ÒäšY×çiJmu¢å2\Ë=>’ö:=PE°öšÛ|nRñLJS?¯á†mÅs±�E(òÀ�©â]}>ÄúhÕѰ½Õ ƒVqB7L(U ö²Â[Üúiåð�L>Vý,‚†tƲ¹Õ}¸¾åR,}+�i¥ 7Hk’XJ®¨Má•Ôéj¤T]s8D?òüÿÃT20Þ‹!ð&þ¥¨<”+PíCì—¨ñàè Ukt«UÖv%®‰ŠÂæhµÞ Ýn´�ÈI)÷B§h2Ð)È$´W׸²3ó-Q“Ö‹8Ûø£·Üj’VÍ)ËÈJÜ’ôŽXÀ#å.'¿|Ðv¸ÍQÂ�$W.I+ÙvJmK\ %a´{™Í[®·ˆûK§,q zÔ&킘«Ö±Ð¢úüh,ÝVB‡}”t|Šá†`•#$ÞþP¬‚,‹ˆ£ÚYøŸ]Sr¶÷£ù~&OŽ�åÉêååe8�‚œ ¦`Hè©ø«˜X”ŽrƒoVÒ«ý0Gª^Ù“2¶ÿ›D ‚}hWó WÓ×!«Ì9ƒ RmŠý!mˬˆ+ÿ¼Ÿ‰…?ïÎ{WÝ+@ËâÑ(ì�Ž\%Ì_& gu¸t›mv¦A/ïÎEF¯Ä²kFwónáoÊtk+Ç‘Ï�UwÕ_v—½´»p�£î²v×Pƒé7}ýf%ß\—]*ëB¥‘Û¿„‚¬áõI÷¯OÜqá;7ýëí�Æ¡[à�s ÑòòÐA“È…B`w£Þµ€)‘àQ7uÛ_ºÏºýí©©¯j_­*5 1Âyé0{3ž½ä��šB´{…3’Á¼HxüQøM·èÆ2âÈÛ¿¿yw$’2ˆVzn Ë1LH‚Áp8„‚!�ï‹6Î+$Ò.G ß8VÍGâ¡ÅÇÌ Žª:Ùrø‰ÕùKŠt&�z ±ŒL€d7B&¯Àa¯¼Y‘BÿŽPVˆè¥Á;“|oý«2\¹»cž7TVCô‚8š°Wµç%ÆM72éUò�(ûµ¹û(¦¬’» è¿y‡¸¦4ŒK'yÿ–ê ã§ï^9*Àká¢;¸AÇHnÈžCè”(^<åß-¬Ã¯µ¼6›šNõ#zÓ�ÕƒÇt’Þ*1/ß%+T¡•ðƒ�¿UX$À2ž“´Ë†´Ÿ†´s†´=†âÔGº$›ÙòL"ü‹ €‘ÕÁ�uC Õõĺ÷ž!.ðëí ®‰´I®ä/q‹Ä#dù“8ºdðý>…=â®—ƒSzéÈÕŒKÄ\¾‹.Ä­£Fv7¶c†aN‰}{í\¸4ÊWèµãöžX÷‚JÒøm· Mã8V'INíh«fíXñ£°uÃ8¤Þ–°–Ò�‚T͉Ôv©@ÛÎ�îõŒÖæá%Òõí¾E]ÐxD¯w9¶‹«q<&–Ô?%@àºL4ƲãR­¡2Ãp•Xö}Üï_npäD1•Xßêt Ç¡ºB@‚C©Ù‡p�àŠ'Nú8” ²þZ]ƒ: é«P¹ˆ!–º¡í6Ió8Éõï Ž ?ïÀ›8X¥a%c·¦¬Ô�¼êߌãÇ„ö¨ù'}?&Ϋn#î-’qžÐûéR &' šû§��Nœü Ž‹Xpô™^«–úÈ‘H€ë\Ë:^BÙO5�îé>M¯®Q‰)ñ½ Þ¹Øg#ñÚù CÓ½O;`%6òã¡×‹E :!ñ˜)Ó $ˆ€�‚¦·ãò �‰y+TUMDW“}ŒEo½£GŠæÒtû^”íÅI¾É±-‹¦d/®^/t{Ž=×ò ¼»[ÀÆ–îi“…‚< �`©Ó‚ôGr/ k7†2¬®JV[™9¹¸ñ4ào-—]þœhÀ7~ætx†:¢Æsú+-Ké"º¦Å ¶¨?Ã2ê7ÿH¼÷¿?ù*QÎǪ›¯Ô¦Â”£c³R^êU1åÌh«Ln[- ùÀ~}­ MR­µÊÑ#�+Bq�hÛa¤%v±Ë`­Þ¸úþ‘Oœ$ñý}uïÚÒ5•CíÓËVŒ,Ø‘Ô÷R1`ĵœE¹,eÒ��ÔógÕï?ѼŒ–Ï'Žºðgj üÏI,‘›µ0§£ÑßžI~š~Y@ì e¡ÎòzËG 5îÓ€�û×*à“­ÇùÆ7“ŽR5úpkq‚­Å jƒE’ßü|Ý3ª•Ž…ªc¡î˜þÒ÷“’ýà›Šuà9u0¿&ÒFÛÝ)ÕA4^²'ôÒ¥ÕTeh�ŠoRnØ;:ÀNÓ^ovìŸ�£=f½QE Ûb¡øQhhÛI8ƒLµ$³Æ–o ×'1+ÇüE‰Ï&4i©÷…Ì_r¥ªûÈli¦é=/‘™dÆ»§8sÜŠHÙRBc+„ÈÂ*�˜�A†Îd­)*Û{ƒ28Zeþ'C $I -Ûâ¾y©à¾yWo¯š÷³@y/áÏÝH€Óê•\…À¼Ó=~øË”ƒž �7ÜXc~jkG_ð�¤Ê¹ìãá6çž'ɲŒ÷‚%Qèóõ^6;çÅ2œ[:¸ŠGா¹O iÇ ÒTÿ »þmŒ½Ï9©èÀ¡uh�C”…ùH<yßØÌ³šð�åŸvc©ûœÑK™=E,824'ˆì q©; ¬Œ t”˜œ�ßàÄ—�Þ‹V,á<�X˜ÔkFz[€¯`•{áQÇGãâà €moÈj”?ÒàK+w×õ‰„ˆ»¡t‹x)þê�þg(ùÜŸ_Š_ý[“wâƒG4®¾ùH72]dá5Þr&†ÞH^|ôl‰Íw '7¼ ´£[aÉ(ònN]Še  C¿ Œä.ÂOä]"ˈe éÓ]&R"N»„’œÀª€Øì8k.wè"ÅŸŒþ©ÓMÑxÙØ»�©éÇÇfH©S@á\Ž7²Ç›èñʰ‚y!èžÛý«¿yNådz2k‰þ^ÆÔlÔ™P¸ÈpFpÔëìÌt¶R+—E@1eôGo {˜¦ªÙ�cÒ0K‘QÑÝ]J?jQ2_9!tÊL<!Ïùºã@‰û#/ë?7Þ�Œã7‚ñƒ”V™0¨.‡ZH¤¥d½â^Ô‹{I8ÖÊpòÁNwò¼Ê7…ýq¥E•€paT´Y‰³LÀ<‰{þ7zq?Ç-žÐÉe†Ê«ˆöF¯£2̨Q§®»"!' v~CqIê–jzM^ììeK¤Zº°ÕUØt€ï©}ùÛÔ|jR£„{ã}T°”èÊöE¦WQ=!B]]¸„~ Ó÷À€A(Á P=æ¬x 8[í»‘ ÙÜÔH/ìQ ½´‡êy$¼‰„º(¨'…~£KüBò�F�B¥ŠÈJ …³BSbŸXÞDÇĹßXvN�r~¦nHÌøÿïÍ’×L‡T“ÉųŸ^½bñÖÄ\yïÃÓ¢üéÛ·òÞUvvš/DÙËyçQ¾žüê}Û)ä ÿ3ú?§ÿ!ý?£ùí¬nÄ^?.ý�‡ š-ñK­ƒ5uò¯žó’ØÀ—~Ý Ð¸(ï bÖ¡SÝ/k>ã¹–ÝÁÀHB}90�§DÖü,¡FÌ’e4—Y›&ß9×M ÿ\#òPoà/Hÿá"}æzHðÖáAºüß?4Ä�ù[å´×Ñ£ ~Ð!Øì›i5¦ú57Vœð„ œYÓia«L¥S�T2¹Úþ@‚©!Uíøi£Ÿ®b2ÇÍ‚�°NµŒ,±F{(3²BîæÃ)\£ ÓC üº¢°ôÖãÎØ¥/ø£if�·~ ™ùœúT¹·îFõÁ�¬QÇ5WV"\¢¹OKÓ-ŸXêŽ�\²B°tW„†™^o6 Ù¸M©@€¦®¬�>–»:ÌM‘æýú›#:¢Ü?œö{ÇgâýsÞûç`òÏy÷Žz.=›†Ï�ù=î'‡ ‘äÌë½ ÏoVN¤åñ¼o¶]Lmò”Ê.ƒ, ÊÏOìØQ!ð¦9Û±~2¨bŒ¿c"Péëð&Dºéè’¨{ºvÙí—IJ—SîB8.a!A¼ô€ z‚?=Ÿ6±�Å1Çž9·1G& ÇåÄ*šê¢©ç¨+ɵ˜Ã `Ì2æÇ–³eè“Gš®ö«µW�QŠO`ú?iXa[c”,ýl³qðÑàÆm²¢l°³a7wHW�1IÓÉ*›Â˜m5è8 é8Iåq¶'v6#4!܉‹ËÓ0µÍ®~ôˆ<¤ã<ÐC>x²ž¤øë9lÏO8³ ’'P·øÞ+”ÉŸÅ;ç¿7âÖò+¾ÜïbVÇ‚0§EjAr…T TŒó­€²¥‰äÚp™N"\„öªfpç¸Ñ†A}m'ζ;ÑÖ>;`Ë5̇K�Ì5ÜRÓ¤ð– ü d…Õ�ƒƒ€Óc$ˆp\jt ^Æ_^÷Õ²Ï súïÃnœWÑpÕ¬Lk›m3µÎwŸûä°eFD¨·Ñ*׿¸•]÷î¨pVà Ä¢ß0[劰T5Ÿ¨€"²‚"þJþ¾î/Zc:<ÕÔ�”¡ù½–aXK»®VV|l×hËM.[ûñ¡üJÜ£+'»»ÒP© {�›È°¬6¹É«±kOó2x-îŸäþšð½÷ÕÒJq‰WyC\½×»0z«…4ª{ξhF¹›—Ҍݱ3¬àRtHÉ›hî[ÊÚ·eL�^ïyέ=¨o|aÎh°þ@òœ‡*›p¤^oÚw�á6êQ¶ŒS.Q¯»ÂÜäõøiÕ’>*Ýv“ª›.ñ ÄrDÌrb±b}pÕí¿üz†\;´*ì€pæ ]NÏØÜ>Ó±8X œ¨ÇâP¼ŒÅX±8Ω6?\ðrŸ‰sñ*·®‚à!©®¼´Œo Óñ{§ùô«¦¹Á#ÚŠà‘îˆàAG™Šáa(¿3±òÛÂxˆ¹ÿÂWDÂ/ü•fª®-¨¾+èyVÓ+¬ÍG猧òJ¬ÄÜ+‘ÈÊ ²©OlQ™L ä�vçÛz4Žê[DÎøÊx×[3ýb2 Fàú³ÌÄXÒK溗ˆQ@ß×c)à~�5Ä¸Ø ˆa¡ƒxÜ&ÿ|ˆÄðrß7`¸Å�·NC^ñØ7Ž×–þñÒOeƪŠO¶Τ-¼ ‚)`=£Ù Ž+A¢ ,‡ãëW2òÌêøînF±×Ïè—è1¼:å†dô§6�Ž&p—ç>wL„PóR÷ü/ô.×ki]l„f…صáašÕƒùé–s; -chƒÜ„ݵ$NšÑ.. ûˆ© Mº$úö–|3Vòôf’ˆÀ¯ÖèI�ß°ÔöÍjÚ¾kû6õ}½­¼ÇÙTù�„}åÈNw|!½ÕÕ�ôÇ>§_åNw|!�½H9K‹•}‰p[œ„ˆé~Qqñ ](¶xÇx¥ûP‹)E£õêN3þð*L×�-›< uÄKËpŸ8a±ŸßÝ)>Ì`à:»“§Þ‡Vž/1Ò4 ¦$Š.fAZàr~ˆû©A d])]ëvù°ÿ â·¥¾%8…L|ò‹”NüìCKÕ¼ƒ$�ªhôÄr´WùŠˆ–Üe[ÒXÅ>ëàëA§']¿µfÓ|±Ì½ _°j_>:Ͻ™®D�‚›oöÎÕõ·¸ˆ«V`ÅA‡z„Šþ×Ì¡åÌbU~ͲÑ-‡å)TÎ︩J'UC�çÞUŽÄj–~#ÜVIÊÝÜÉ?¬•Ò3[ÌzÉZ“ºzaörKK§#£I6 ¾¾í!7¬)è L§éäÊw îÍ9¯„ˆ²ÊÖhçŽÙµ²=€úîê·*dI¿R‘R¥L”¨1ÖaÑxrc�Ð7ÒÐÛÐdž,ñôå ÐüЋ­‹°ê¬Õp;!&!!;‹ªI+�×4xkfí(Â5dí�5˜éÍèf€‡Ê#gh¼!Kuš4|Û`„­XÒgA‰ -*0=Žß¬M‘ý¯!`v‰\TZé$CUƒ§dµÝÎx:„À·ˆl®¼-¤‚ްœ”&j¦Tdcû0ÝÏèo^ÎäŸ"b%Ó&¤igìH�{‘{kj(æ�Zl¬D²›’wútà2÷Nvt@µ¼‘¼Új¿ _yš4ЉÑ'Ÿ±^sï™±äžÿ¤ë(^Ôå_�QÒ¼ÕÚ¥Ü×À¡6̰FÁ ˆå|˘=häq7* Y ˜àªã/��—Q–C±ìæT„�&êÚj.sý~„ðpb­ÂÒZ�;‹V ž@Ÿ¹•”Ú‰Š¥­-&èP>ÃÐÊS`;˜ Iiñ]�©þ4Fry�o=“Οs_J/X[¿%¨8úv¸ õÆ›²ë¹�üÑ$ïÒ?ÏÉût�ËÞÜ*-3ÏïóZdƒ1¬z«¶ª®eê+ãƒ1ï^"êmàYÀnãMiü/Ë ¸¦1ÓÚÇhÀÝÛg&÷ Ím­6Ëm¤é„Ím ýE>a/K†^ü²[ì XnEƒÿL�Î.2p:ÓtM.)hiv©ö× ¹´ˆ ²gˆµbk…wwßç,íú¢g¹òÓ~GCó#6G^À'À­å�êºb/S/†£öÒ2 Q´qob‡F„‰bÍÞE¡ +£b@©Í™& ä’"=Üé+gÑ¢Ð÷¯Y6}«óáÕAU<übq3 õEú¥/NtÉhc€¼1Êužå ­2»Ñº²5aÂ7­aâßäÒ¸¸‰è…•eÎçgÖ|£ä°]Ý„j@Ë`aPÛ[ '?`çá†úTm½jík}7"0ìp˜ïÊ‚=Ý©é¨úh}¬*øÐÈsT?WE?~¹èñç®Â´‰“™:èX_Véªq:èZ_Mšzx¬kiêaÉjºpS÷táuY8 • yÓ`Ô�bò_«ŒÄ2 × :Æë¡«gB‘ÛÊ0ý�Tÿ±µúX“ÜÇÁ°Ìƒ�]‡±š¼{E„Âd0üÖ³ïGÞ`8$Ò¤\–Éhè�¬ùagí®¢H$„ix—³sŽa�ÝÝuˆ‰Å½TDõ´ò϶LZÕnsb°˜ì‡ò‚IË—#ý’/Ø9Im$ùåH9‚¾Ú~9Ò/ù¢4Ÿ-7Sô8�8i/"ŠÌ3jF$¬¿»3¡(†¬u|œLœ¤WÔ &Õ‚…ís÷cnÓÜDnÿ”ÓÈ>æ4‚g9õôCNtÇ‹\œù £CÚ•?�öáÿÛçÛ).qu,>h͵¿—¶?0`@¹»*pÂȲ2¹Ñ{¶Œm)¿xšK¡"o¾�|öVÜZacäûˤÈÂ9m%Uæ�|G§“C&rDfR½¨™E_X™ŸòóÀd§u3fk½BDt)_/¹ +êAxâÏrAu<ÚäY5þI.ƒ�” ¥-A’•pá¹–¡*˜ÉÝ2�/d° DD…ó“Ur퉢¥1J7W!ÖÃcS70Ö”À•ý@�kžŽäÓÑñÝ�£Ó³HƒEYÔ‡£'D7"!ž&Äù~ ¥¯ê[JLo fÇâ™R†fC3A'T}v¤k?ê·Ò…Qm_1úvˆ˜ä щóÄ9u"à�î¾(G‡Çr¡Å•k|>°uŸóÜíXب…Iâ^j±?´V›œKVn3]g�gÖTÛhrNö‹ŠÌK ûèŒÍ•t¬£ÕXôãnÜ »áãÚcºÛóSð6ÑX”« 'êbtw§�‡Þ=ýÚÏð Ÿò4iº(›šìõ«QoŸXiX[9 a³=YðÑ+^"o9ÏTx4ñíhFCí¹†Z{MÞÙ`k 9s-kˆŽh 6¯Ì¿•’g]¿4ë!»�†nDSž²kµh5!AeSkÒ'æ�#‘§îFæ“Ñö'œ:R½ÄGL¼¤~P9�t mÖi5CPfîFÈ€eÕ†$Xún®ÕYø ¯ú3°,ÝE�ïG¸áž8Z‡˜Z”8çëß�p�ëqêŸ:©°bq®9oÊÔA�½3Í ¡ÆÞ™b�`·î ÆÞJ¿G}½•f‘4ù´¯‡¢ ¨¨2ÔÂê&Pg:?‘g:Öª‘¸ù$�(m"iõ\kÂlòe €Jå„Þ¶ ƒƒ*}˜j!æ,àW6æÛ˜#ƒbtŒ  ÜŠ ¸%6¸©CT—ð pEà’ ÀU¿±·µùp¿lX?úúµ¨}êšnºE¹2~v*Êe,C2ò8G°øc´A�&´ñµçÎÎ׫$gÙR?0/Ÿt]»zGT‘ü¶TÄÏhmÚž´]�u.ø6i&™vMò¶æ¼GÍÂÁ1J&%ÿÏé†ïîÔ-ôî#°xÇÝpµ/6\ÿFÜÈøß­†ªÞ½Kl;»&‘'Nõ¯ìÁ†›0í¿KÛ7 Qí�”I´ä°1Öôšf)åù—äµn†PBV˜¯¥±~cò&5ä pR9FòÙ²-“`ê¶ÂRI|UO›hǼ´&â�©X/•±5,0l~ç5¹�Î4Ò¶Ä餅„óÒr�~¶…Ð�–:¹@ M]¸_šÞ~Ûüö[&¸ß6ÃýPC‰Ì˜|a«N4ª»Œ‘±%ÕÉuÁZHÏŠ†µ×³dCº‹ø ÓQ%)dñÐe”k�·««G±I}˜_98PÌ·2+)ßàĈõV³ÓI¡EOê@RG½]CyèT«(O»ŽQ{£–:Fvå¬h‘šœyĨ٨™ùX*è~¿:Õ: ÚöŒÛ•³:ÁT~5¹xÚÇWE 2n9îøÒ`Ôïä‡ÛFuðÑ&7B%(mê=.-!.7.›J`aÕ3赚ŒW¶ìΜ¢-gÚ»Üé(߸0qºQÊ�ûՙ *M[a­aëp¿zƒ{Ô ^%N½W¥ÑŽJ§S­tZÍp,¦Zý ´Âáø˜›ŽÌéúü+Úñîs픻ϕ¢ºé™~v\Áì_Sù•’Àša\É®ûf WJ«Ç'Kè~è®L¯Ì÷z®LjÐIidDñýº—ø9ªOð©qf¿×— D'¤Oø”©ºU‚ɹß×kÙîÛ-êcðNjò ¸l0qÎ «\Nn¼œ‡ r÷Y$uð÷kþ¶}´¹ºÜ +ï�<ƒÕ×Uw­æâš¾®ýl6Döÿ×ááïIóІDhî—7?ú„jæIšõazr™ ¼gv2ÖŸ²“Õ²XDñI0¿Bæß#†|~òiWÙ(KÞ‡á….Ô?³áÃÁi0ÿÓð/ÇG££?Ÿ�f|âdÞÿPKÒV1]æ)ëY¿Üv…imunify-security/assets/ui-app/assets/static/other-root/src_app_components_reputation_reputation_module_ts-_9ddf0.6bbf4d7524c53ce7.jsUT ëÆ«jëÆ«jux è‡ì=ksÛF’ßïW0pâ%*C˜_"UÜœ#Û{¾µlÇ�TmÉ* IX € dZÖ¿îy€x’ %Ú{U¥p0ÓÓÓÝÓ/ Ê*¢�(+VN›ugÊ �¦uõ¿‘ï~¼ a+ôýX¹o¿ýíÛÅ¥ª«hѼ¸P¢Ðš˜A0±üeà{Ô‹£IHƒUlÆŽï¥/—¾½ré$ŽZ“¡mÏÚ 9x¬®\’[£ßn�š‰ UÇ¿¥ZØŒUB5»“ÛwÉØs6tÔ„>Þ©§×fØðÇ´Ùéuû•8p9<ÑÛpÂeo8ètUbÁe¿ktu•¸pièÝîP%&öíêz_%6Bèöz* °k»c´U2çTÁʼn¡ ã/ÛmýD%gxÙ�¶s„c˜ó köaô[Ýí�ÌÂÔs‰ÓÃ>´Îð²×A¤8ýÉI.¿Àe·}‚¦ì²Ý nn¯®áj wz€À.õî°?POg+ÏBâ4®�€ê­3kê�½Ç�­ åÓªm zü¿1ýünÆcO½µ|/ŠÞ8×˃^g¾':«ÚÏÎ2pˉI¼½kG=-™ð%Üß5c }bͦ3såÆBÓ‹\ÆÒ¦§Å뀪êÝ]²�—Ù…4s€©K— _ïc3d+"Ší\+Äè¨M�(N§ßn‰yZάåùq+óQº¡Lä1…Er rEtøS¼y+i&ÞÊu‰Ñ«÷ŽÎž�9¬Ø•Ëx�ïsÏF’6Õâ ‘ó$4íkÓ³/½5ý€†ñn*Wt ;p³Ç´xR3þ„Õ”_…S~¿CRr´ÉKÒErp õQO£çÍ_øá›ÐQ ¥‘ù°/·MÀdXÂD&‡EBeÉ øo[,‰­Íu¼«üä‘é9±ó•~ ÝÉØÆßÜöÑq¦NsM=Û üHSñù¾TŒÓc›æÇr@¹úôÊ¿ÖZ9"c: lS:ù@ øc²6Ø®0žC¿r…qr?…‘ \NñÔæ#4OIRNØ¢j®«W¼ùK�ìŸ~â²­ò†çn+Ìè“§õõÉWÐ'£–%—$îC±¼>ÔŒÔÞ�pPlsý9RöÛ2*þ ÅP‚ÚïŽg ?)ä,i›Ë€(®ë®9 ò¢>_“°ñ˜Fá3G¦¾Eè÷³àìÍÄþWrHV.Mð`1žÒÕ'Ûù»¸-ø] dš0×ßwc'¨d Î– gÌ;Nÿ”JÇ)!ÚÏ |ÊmZPÓ†ýXµp£ŠÄ�:$dÙÁ)VE/Mt„>½“Hoľ€ØW›¢¡Ëô9[ßIÕú† bÑÚ³î¹6½Íæ/N#L–ËælF-ðYŸùKГ;µ þíBÀ´Ï;ÒW6c³uíÐ…èÅM´¡ºÞn{Ncè­”^¾±($y$úbHlN]°$zQá¦&ˆÎ–ï®–Àn½ “žäw �>Ìéoµêmò¾$Ћ¢³—z‹2YØ`a�§ÇÀ¢“Ǣ̛Þ`Ñ%/Ž�E/‡…±Õ#3úä3ØœwÉv9§òo/'µÚez?#¬3Ù͆hNìRa…«ã‚2)Í;Å[&’>Ø×�þµÓécŠÆ#­VÎü•k–i- ¯F¤¸ÃÒvŒ1RL£°å:ßÓðÚ±¨æú¦½Wü“¡CAßšsÇc@Á'm§½…w)o¡R•€ò]ó,\Ë£ÔÆ\@GWï\7~71§tk¹f5<./á Ýsž”"±ÔÛxáDše‡chÃË ]DZlÌ-}Lù XÍÒ‰"¸�ÞNõ"ÊÇ[¼ímèÛ0óØ×þ% :ÑÓkÓqQ[ŽY`ÁZm˜9ô×?�=zÓµ÷«ég`ë�7:áøôùK=›ëµ®^n5UèùÆ{Æ�È^¦†;º”¥kÔÛ�Æ«ÐkxíK-ö?°°33�¿zZ„KnÂ�Wþ�¼�DqM¸ñdòdÎýÎ"BÉ.UÒÉBÓ3猃0Ê)'›�nÊoZ´ðo!¬ 5Ë_N!šx¤Œbµy‘§¹vþ~òæõäÙó󧯟MÞŸ=}]ä�ü�)QØEM86¯èG/v\µ™!’ªjÑjY¡3¥Í[¤Ø(FÂU\Pâ_ŽãÓÿèãÇ?ù¿AÓ‹�Ò?iˆ¨‘Ì¢ŽMqQRØ´¥^�«|†ž†~Èr ·ð?éû»Sï"¤´ÅAñ-33­±ÜZÍxÃozÓŒ¿}óԼ±�$Ϲ¦/=AÔHÚÙÂôæô�)n"ˆw û»8ÊÕæ5z™Ú‹½líŸ5zš�‰Ç" ¬e�7°@¼ÎdvFßbZmä‘t ®2]\¤dW¹¼$èVý±¢áz”t[�•tèŽf£§Êìê(/ožþÂŽ@Ù�F L�äF�ÀTÂ�XˆÅØÓfN›äîŽ,ü(~Lj;ËòE°O×­™K¿H»|ÉúüiBƒ]¢mq¼y”[RY¨ÅkPÛ ÈY¬ãx`8óXˆn]á/ ˆM-7uÈ5Ÿ�mFI´)¯ QR�QØ/sû€ê…ÂT8´Zfh§S ]³؇›ÞļfÖ ¥¸Ï¥óAô„=û<ටƸÌ|zÞˆˆóJt=É¢%ZÀe«�:óÿÅ»³˜“_ÚÜtO¼Õr* lâ/I,ÖgÂ�6*-šäB:�Òj#Öp3ës²C·‚õMººÎÒ‰±[Ò‚sŠ`‚·ò�òb‘qx;h/0ÃÊÔ·×/êâõ*¢¡g.qŒ—¹É`_ƒ;àX¦Û2]gîµb«3pBäfIfÔµ�á½ÿ��ô!ñ¥ë‘Ч>Ž.L9CËç©mZb“Ô'·+ëƒÞJ𴺲ˆã =y2uý¹æ,Wž3[Cg´÷Onf  Z¶�OzÖþ*lÝÐiäÄ´åD­)¸W®±Ç> „,@U&Ðî]1ÉN§_Dt›aLC�"´VèßDb‹¿`‘É,±Só]ùvç4QxU‚íåP*§mˆ˜=ZL}T*˜˜­X' TDd“¼EøžÿŠ�äÚ#?¼lI¾ ;·œ‰IÇ‘y¦—IJ–‘ßIÁƒq—ÑiÎî“{Ûñâgb ȉè[– N=†xÄ) q*Ó1éœtß=Ÿ´ÇãqœöDõ@½�¹ ¨@êYa®�/ Ä[d¢½!gÚKr®ý‹¼Ñ^“·Ú›gd¥-ÈR‹ÉLû@Ú”|ÑÎÍm,™j¯ù>cW/gäo ñ!èv]kïÈ\{6„O1í÷b²ÖÌÁ%a Lþ7ð¤!Ìr@¡a2º˜xs´ï@ØÖ/goÎßþrIš ³ýo‚]Ò¥Ñh¬Üòv×Ѹ_I풣єÎü�Þ{“9Ä[fhÜ~ò�ÜlÍÌ¥ã®G å\,½�ôŒ”Ó¤Ç sïF Ï—¦»igT+iv¾B«Ñ ¾œ6>yØ,<¼QÃñ@¹PP¾uŰŸ _gMèÚðGû€èÁ{”÷¥1 ØŠÓG53ï�zë&4ƒlëÕögXâ}ÖΑBýtåÀúÎK߇@Áš‚5ƒ×NõfX…(§!ëåƒRYÂB_ѹ3u\'^§A/ý¯-?úR€ ›x�¹¤©Îœ Ô„h �…52/¼¡€A5‘ wØM[ø`jqÇ´¦«8ö½2Ö3ž‚ qdãQ¯ƒlkFØøf˜X›�TŒ�%m­ÇÉŽwPß \Ú;Ÿ½ÎÜ#Ö‡c�€Ö?��é‡1�4YÈ‚²w®C -ÌjéŽÈÁh3И»@NÁÍCåÙ#¾ÜÀŽrÐS� ÓµS¿Z r�ðÂQNÓV×­éI7/ñzOt“òÜé‹ÏÁËà�Ùþô�cÇ‹QãD¶ù«·CJâÓ¶™ÜÈ�w5×;šùÖ*"�z�S¼Û�¨%ΧfSïuHcóŸ¶f¨û`ÃÕÑ~3t«g�"t¹k0Èm€ÆÿÕŒ¾šÈ¡öŒN…noÄ” X±Ê™8kÑñèK&}B„!~åJ§r0ë#Õ–POl4j�Mó`”®ê¥†”K_"4‰�öñ/Á'ðùî%†9¿RëÀ!Êž@?ѵÄœF¨Çu€È®i Àâ}f*$6C‹ìàT²`7ì|š\$Œ7 88Ç÷€ £³¢€œÜ*@)è’ â•EQcWŽã�ÀÊ-AKñ¾9xN´ìYÂÌ^-T6=%�2íoF /vjý�©œÙåm•Üý©jYFß%Jù@b÷ ¥Î<€x`ú^¡¹ÂM)jÊG3ö�0Q_0�«B󪡃Ǘ�,ÿ@߉vh¢müË:Xˆc7t¸Ÿ†º±8Ü)@µÖ‘ví+h6 êp(èêÆL 0˜Vž‡’ü^€w¨P“Ü$·âaì>0âñ(ˆ»t–Âû^aAµúÉÄo k¼÷H!�þš!tfo§“÷v¤˜d|ú¤UŠp׆?Zé—¦\žn[šÓ‡–³*jGþ¶’>­6‘ÕÇ‘Ï- >‚ÜÖ^0Û”G’ìí^í#:œõé½Íî€þx�üVgº×7z PÔèöêºzì…~ïÌ…¸ ÚŠ=qV²á¡žÑ8ƒü;ÝbÉ…Òá^|÷¨Z§&�¤†êÏþðSïäì—]Sª¸­MBí£háš,8’Z®?û�€c-»¦/ñdÇ‹<@9`Û¹>’•L¹AF;•U�³Uä;ämÐ�ó¹[mqʃ•}&XRoµw¨•8Á©(Do·yK�'QØÌõÍ8q¨2é6Ýé2›•Ót£�0Uv<ÃÓnÿrôØLbZšŠlô¦ê@žÔÒÈ÷âw6ºÙ¡v_Ånµr¯Uä‚Ë}`²Ón{%Áî�2üó÷Ý>si&æˆsó[æŽD«Ü…ð²,2- 9³±i[tdûÕùÊv”ØoÐtZÊ�ê| Òìù…cÛÔ;MÂ�ÍêºN9‘P@_ä^ïµk»ß“ôGU‡ËB¢þ€ÓÌ>6@ Òù‚ã(’CIx<íó@$ìJÿ‘Âú$<,uóÙÛ™úžq“G~ 9v<Ý$©[æx :y‚iò¬rµÛ.œ_î¿ÖÛhì{Ú †ê8tÆZjà~Ë9lKßcA»·çÃ-(½Õþÿ²Hæêxä wëÚüc&É%‰0B¯��ó�ql˜Ä§l-#ùrQdÁjÝ©fÓp�Í#ýzÃ[ñbµœf¸%aU3«×™¶ý}' Pµ­Ögm:8dæ<^æùxD§Ïž…çß×ÀRìQyÅm#õ:ªùöT‹½)ú€¯Tœ«È<Â3z¿äÏtÚÒõd��–7òpkˆ!(‘ÜCý$ $mæ2^=);»â�H’=)qRpœ³ ¯MwõTæ4÷D%Å�K¥ZKʲ½^XX{)\³WHwè\¶… }D{´C“Û´¤RD% ùðXÏÅîI ^ñ ¾g½+ÉÃ�þïÊDV@ÚšŸØ:{Ž�;éV#PÜ×B@ÊWæôU¦@Gµ‚Fùlþø;�õNíÓ<¡3-¹T21«úQgV}�yñP¼�–‹±K{ý~/«ASoàWN$ÇO{Ó©¥gǧ ÔÍ"êí-ÂZêÈ5�¿ÖÂqíÒ ÿvy§ÞÝÉšGwj“×™†µ×;=¬û /{ývO%a÷~{0Pɬ8{¿—yqyc¨žbåž?sÕÅö¯¸TV¢ܽòE¯ç¼Lþ¦BQi•'Çû\>žWGÂÂÄÍ[þ^V4ºx¦½‹†4ºhgHÆæÅm`‚fQ‚ÿ?7c ~ÌV®«�äC£ßï.�jÚ+ò—önó">E¦Ú™¿\&?ך7ɼ‘/ÚÿО’�Ú? ̹#¬"~æãü«¬DÖ<õ™ñgÃÉpSðßÚÔÞÇÏ轡Á¿À¾`'åøO-V¥,Øð+©ˆv‹ek€ÚwŒëóí5åDŵ©*ëÉeÊÁÅI™7Y˜"Uü�Ùhöû�ú]þ®ºXކÕe¯±`>c»Jv ·•ÒÊ�®WJ+WÊâò’8^°i¼Me”-ÝÁ3@dq)½Ë«KéÃMy©bQ¦|íŒÍ—,DY~ñ7sE›BPC4鯿.¯É”B5)™Äs”¬KiÁ“l.“•;a®6ô BTØZË©®I’”ök–%iꛪ#åcrÅ’±ÐÈvàVü¶Sè&Êov 7DñÝ^¶¸py§þ¦Bo9²(évy�à"*›ÁåÓfz�ײîUMƒ‚+æ‘%„‹l�c;[éX¬Ÿš®=Gè©_UÏ¥œZÙ¥%(Éâä=Ò'1Whß¾å*ïˆ:>ùÑ«�¾â­óÁ«¸?7½¼®IWCí“!LÅT®†U�Uõ76ò4ÔܪZXÈ~‹ŒÓʺ°åצÀ‘nÃqH€ÉeHR�d5Ž%¬…u²xŠ*M[�@\âÒÚ˜ª|¸2Y…îXPî“(!B�ýêf£Êà×>K¬(Ä»mq‚U«³Ü¿’ªø¹ZCVR=È?ÄÄÊCvª6�©=nj)Z•!)O�JºÃFÇŸÙ`ÜÛèJ]†àƒa.´Óû©—SöĈo¼DyMYh ^¹Èú)ž­ÖsÑFú„Øþ˜§¶`­¨§Ó‡Á©æÓÈt –ä þJ”Š)±!>ºÄ¬êИ™¶!⡇Æ1s䟓…�oß•™~xbá?à›pT$˺éð;å©í‘n*¯‘±­ˆRްÀ¯Žüƒ…#f*ц³ùÒ†#'ƒž®ópDĘnº°¸Â7>[�ÞPó^V¶2ž¬KùfÚ™ÕY—ºÅ�tMt{â¥_ƒÛŠ^ú+Nõ¬°—ÿÆL°=É�Ó,ùè@™ýOÕK´«¾ÝÖ©–ûÓÖO,å@¤?±d ¨m'ÞvÖbÑCG»¢ëñxìUhiž*1YîÀŸ%ñ,r÷ޝ$*ËV$KKR“£¨–Ã;>åá®ÐìXæý´tÐ „«þÔ($?%V®Òv®¡Òvî~I¥íÜÆL—Ü–I `öˆÕ„•i ‘¥è§j`/¨ðúײRl^š‘c5gËJ¿ÎÐíþ']çêwJÀïŸQÈlá6žQ¶ AC՗Ѫ¡dÎ+žf?%VÌW”~£h»ÞKom½°sëD\ [-¶J~íŠr»$ÚÕ ¡cT ªZ _^èÿ—�L-F.ÐÏ ¢ÿÄÃÈ(ØÝ»Kõô¿ž$ö6vÒÉžÝ�szsÌÃ0q•ÝwúdT”™Bª¨$hðøß{¥âa÷-:ÙÙÙ/Ó1ºÒ}ýîC*iŽ ‘�?Ô–"ÉùhvUh•k;æÄhmkßþÇ?>|<>Í]1=úð¡V˜Ñïòí©ßUþµŸ€¦þôÃ�?üûÛ³#QWu{üìüòãñO n˜y7vjd¥V8~ü„¿Ùw_EÖH59ǧEžI{T;­xûñ'#¬3Š©Ÿk^ŒÚÙÛwïÄ×_[ø[‰ÚYùës]¾X¶në¦.�ŸäøèéùtÊ‹›¥� cW§#žeG¦.Ž�ËÅÍññ'õõ×Gâä� RêwÖ‘ÇþšI ûÙ|ÐÏÌ©gú\ׯxz~_ÙͲâ'øS>µŽíÔè%SbÉÚÆhsTkrõ�e<ϳÓãq!ìYí�}ScV3n&n.”e¯½QojgKi§Liu¢àw#A¶à™¬öæ*ºœÞ|r¼VoÐvÁʼn}®»W6c–Q`™Ÿ˜äL•Šþ$Nŧ\[¼{â~™â쉧i¬»¥�èÉží8lÖ¯Ýk1a‰|dœƒÅDŒ2ùXXð×(\¹œšv“£)xW�ròHœŽ´S¶þxô黳Z­Cg5iÅþå µçãçz*2aµêP˜9WhS'íR…P ÆÄpe/\–��F¢(¨‰4)ÈÎîu–‰TN‹A3®&~MkÑ1Zäh-’Õçz!bÝÈ ¦HK “gœÛ‚)è{Xrcë•¶ “[ृsÁ`~öÀ[:{1ù‡ZX©HÛ¼bÿG æ@½]àýTÒv}5÷½´{’ÿ³ÎÁ¢F°­}Œ@6‡œ–ò1­p„…,^=?¬ì¥0…? �ðJÙr•#'RñŒš $ÜÄ|&H¥Ò-DË¿tÓbëNx`9ƒ¨\ƒ–¥_=¢jÛÉ==¢$'÷ôŒó f[³ŠõmP“Œ£Ômíä]ÿSHÁÀ©Ó`¸ –,m—œOÊ´�by!3rŘ¾1H/TzÁ³B u!-ð¨òua�W#) ´bÌjÏÏun!Ù%®ÌC™ U�Œ{8Ó€k&x=øý[P1‘*•GŠÏÉŜϑ;ê N{J9ÄÓ€¹«_Q3ÚÙL°”ã¢cièÙF=‘@;c§¤%¤0)ª062¥- „…ç“qšMÔŠ’¢BÞ,•"ϵª`7‡t¾Oë‹JÑJZ¨i–íÄÔã6MûZÑ*º˜@ãùÙH¯¢©³©^*ïXaÆEˆh+ÐjƒŸe!�VDLÒy�/&†+”YƒËMР#Ð�"Š—Bx®Ê€k]ÚÏN¥!i•>·SgŠŠUR�9´\HÎE$ÕH4<:ÁÁTT±WÙÊ'ª·ÞßešÒ[‚šÿ§ÍŽû´ÿY@˜,lƒ•]x%Â%ú/È¡~Pÿ¢NTÚJª"Xj)RUI¶Ô¢¤÷!$æØèŒŒV’ÌRçaˆ•}W£] ¹Æ}¢È›8ÚÃQ?ãäՔߵú=‡B(élöj¶ËÙ�:úÂ/ä@b“鉑Ò6÷ öì6Ê¡/"+Éhˆ#;õRiÄÈòt.É@lùásÞÍÉ3Q�©wˆ[º °6™¿ê,Ñ3(·âÔGì¹ÅJ� š˜A…ŸB± 9¤öÆ ¤Í¡cŽW¹¨?�€ÎBáA,†uºåø P"™³û¸|E\{ù·GjXã¥M‚ú�WÀÿ pU\½l,BX`ÊDóŒ¡ýñ[ëÿ´úKV¦G3‘±ƒ÷�{7�5þÕ×)´O#=ÇÍÆºS1ÕYJ·l]•gl(tHæ‹P1!B}›ÇâéhÑÐ¥Á¼îðÛÈ%J`Á“ùŸfw3ôéÅÒݹ<4  %ÄoÌ“¿®_Im“´hºõmimØ ˆ9› I„„þŽùÆÛ;¤;üÍ}ÿÝÛ Øß±Â‹†Å¢£ÙmÝÂvÎòÐ��/Úê°ôvYŒ.ðb•xCϲ5ÂDf3hëR¶Ô¥\ ì°Ý»åêÐä©5ÔEP&#9†ö f”\¾  g†~‘å6n¢]JÞµ†è²G%(y¢�íúLHÐ gA%È‘5¨”€yð/tÇ¥~2Ç^f¿©�íÀJ.ß´‡çQÔ`ª‡™#)2ó™È,ƒ}‹ =6Ȳ±ó\§ º„ŸS”†lتøØô†/å†Ü&¦<[$ò5rnêŸùÍž²m& ’�_”[E—'ß^êv;æÓõÉÆÈÐÇFÊÀ«ÊïÂÓ ˆæÂC•Ô§è;žd"Æ@ƒ4á÷ûôö|7«ÄF�iµ2 Ä ¢ÓmSs�Á$|ÇÄ7Τ†voRö‡€«K¼ö—âCK#õné2ñTb‚§ _!U*ÆÜe¶�™˜ç¥à2?OSAÚ¨;,C JÍÁY8ܵCDzÓ‰¥,ü1K€‰§E˜`¢kùšfˆBÒþ›Ó¶ÏåÐbÿ×"bel†ÐNeÅúÍm�©fŸŸT¯V­�¢sB•¶¾^éÀ¡ƒ?%ÜJ²é0Ôw¥(Œù¦á•L»|QÊô—�ð—µþ hølívŸÕH œù˜÷?gõ* ù­‚Kæ’î}ö*ŠÏ®gOc™A3×XuÉRxáG™¯¾ï™ ŽÑLBU��ªh  Yà¥ñ”qß’ÄZgV’b¶Ùæ`¹[”å.øKI0½·Ý^-ÃcÍÓ~Å T�ŸtžqZö¢p<}¡,÷�›oȾ)>oÉ`+Ìš» €») Ë Ôs“½j޶¡{õKìÊãËJö¯S¯þ9ñ7«¼¯´þË�¥÷'ý~…-ýÿŸñÿ)ñ)ãc· ÛÉI¤Aâ'+xA÷Þ-± :d36æ#™Aº–^ ½,5ÀæêGÛM»],h3ç¿H5¯i-ôì…®$Š›Sp?Ž’°½æ�øt˜Nâ¦{Ç6IØ612�Û& ¿&¤KÎnC‚n’é²aóž–�çPÇÓ €›$›Îp øOîMNfÔæÔ@í›CÙ–³“Pm®ò€Ô&‰Ô¸x£éFš™þZÐ?%“™wZ�OÔÐ--Òµ-hmæÚtL‹ô\ Û‘`×é› Ágømѵ$›ˆ2Ù¶É0k�<†m“j· [*Ý&¤=Yåþ³g›DJÛHkªÓ&“T”s¤#STÛN¥Î7޹ CêBªR Ò-ò]rAºä‚g3jeÀíGÞ顎 Ø/B'PàNK°Èr>س¾ÄÏU¢Ø Lºð‚ý‚i¹ ÃÕ¬ìH:díðDãüYò7í$»ÖP·+‘™³¤!wHt„6ÛÚß!Ó+Š[°Ž[…ŠÑ!ÁÒqÂnWH@¦ÐδœNzº#°»õ :dZÄ 4th÷ñ2³uÈÄØqRy¸v†ô0ôH™vþ¸µCÖôöŽ[m$~Û­Fº¸c twò’òàdÊvöÇÎ0‡¿BY|œü`öRަûˆê�ÁÂ[È?¾ñî�I(ð }‡LÇA™“†, î�ŠÌ´[\’ñv ‰_µ.IE ‰“õ%iµk£¡K*ÁxIjz‰ucì3ñ%©(бiB»dHta·¶É]2.ºÛjß%áØ-|KðVP—„cpëû>¬K$ÙJAw™û†t~Óx3ø!"‰}Ú%ÁÚ5³B—44 z©H\v¯6ŰKº kw{¥+ÒxW°s÷©àŠ´Ì4¯¡^‘Z_òb*æxøµKp> _i“îö¨Wd_ñÜëvMJv-Ô _“IìZB,®Ë÷5™Æš�dtúè× 3¬!îzMjßÔsí¿BׯIPø] »–Ö˜b!1b®ImÐs¦'×:âkÒÙ/Ý--™ ®Ý2RÐý_áUP¢¨^“mÊ5_óÑ´´i�¬v=î·¯=²ØõÀšÊÃÙåsõÜȧþ铞„*ya…ß>öÈÉzP™ý:¤%Ah¹ü89=Qh;Åž¶GFÎKOô¤�ºœ{d:ë¹Obž8ƒYµGvÜ=±iãz¤Ã@è ‹>iþ>4-³JÝ'-܇­ìÈ“éô¥R}�¥|±eH!Þ]ƒ~ybü¢dϼ ’Yï°>®}hl&¼˜ù®¡O†+¬PLñƒ±‡i±×> ‚P}>P$¶j�% Ïý>­OFyj%l؇†4sþéÈhïã¾s›Nûd>i|YîW§( ªÄâ°¯"Y‚UåKdŸzŸ;(0;löI¸£aWl8f‹>‰ø>6u8J‚;°‘~ûÖ'Á óS>yõÉ„|éÝ@î"ûâ“ Ø%cf ¹íúdëë56–Á\2‚|¾ ²D)Ü’5�ß®dx ä¤Ì226ÚŒu¶9I@22:ö–!“âJ°áç)H€p7´áA"±·þ†c}@£Säþæô€ÄÙ€È�ðÈ`sÒ-Á B”Þ�ax3÷ugHºmíìÕ’~ /ÛðÀ¦h¨³Õ^+9$1ä¹ã,È»Ý6 Étu!3™ËGå :$Ô�Ï6߆¤×@¦0�4HH¬C a+°½è#°3__‡d‚J;âÒ�H:u[A«ñ oH¦Ž!^»ñ¦ 3^$p��!ù°„ÏŠC2²‡ÛØ„þB:ÿv›·¤ïoÁ£?:%½anIìßj±÷5ä–>f[ oIŒßºM³}Kjy»Ä+'0‘ZD\‹TžøÏJ%Ÿˆl£"žAß© ±ó^D÷Sb;�,`("+~<=#ÒvKQ2 Ã!’°AË¡ E 2 ü‘ù¥¼âdöŠ2½ØY?"�‡¢Ï¼­¨½ÂÞ„¯‚\tû—é%ç³Wgoý¥ㇳžÐþáKTjÊe…aѽ>¶A㉱HÏw{­ˆŒ¶J(>»@‚êc†�ËÈ`ó�§ÀÍï9†°äHú“�ˆ,Ë팠åñbD–Þ(tp¼¼ê‘a­ÌV=2ÍGKü"$&;3óR7aS© *OÅ$Œãâ‘s¿nu†/Ïc`;Ë:"‘%°cرö_bÓñ”oÕ Áótý(·¹=&1ëÔ;·Ä1‰OüèÉb9÷î‰It¢Ù0mø‘øŒÝ^u‹IˆÆxÞ‚£$:‘K8‹‰IàÅ€4™r¢±Nx° ‰¹Øá£M&eÌå2hBàj ý,JzGfÒ1ó':cÑw¤‡ï&e2¾#Mzw�BAUxýÈÙl…·J÷PxG†gK°Ýõ€pàŒ´d´ÜWÖ´;RɱNÄB÷¤ž÷܆o ÖcÿþÀ¦ú_¤À¿á`2œ$Cû‚Ýú}Å=%ÖÐN ‰îéOÄá@ Ò¨«öp|Ofù`ÑωI°ÞKa•?å¼'Kí=WŽ[DÐ{2àßÃ>QúLrá¬óµç=]ÕË #côZz�0þµâllîuøµb¿´ÒÖty ½‡Ù¨ü̉4$ 6çàd <Èy“¥ð7oy1M4”H|Ù°�…6ÛW _z–�óòðn ´ÅׇxspŸô-Eûo¹› ËðU²¿bºÖxSò×áü=KàmÃ�î—‹~O/zÇf` –Ê?”þ¥¾ZKñ"°ò­ùöɧTž�åI’AfêîÍÁ‹Þ…KâªËHç\%b� x¹\à$ÕgÌÃí§%ƒýóoY¸áÔ�C#:^±óà!iÊýs¼ J_4‡j%–^ôÌ߯Tnžs3nûYÏu,òiÕÝrÐûŸáãàŠ°:Û>Ÿ ¤±®0ÎÙæaMÝjK?À�a;¢çú”/Ä@,»‡¤¼W%n‰Þ“y§ÝOØ™¾4Ú—Ebœœ±9Ÿ ¼Š\ ï_òC/Îñm~w¸}ž¿OÎ7¯Æ“ÕyÉðÀ-Ðë xê9^Œ[küVÄ’ö{ˆ¦eÞCôíë)ïe:dÔ¾zz” =ÉÖ<_6Î�±âýšž‡ÃUãhßBàb§ pWtÃ%¾S9cQ´á§C·iw8õç�øâz4•¸�� ¼t’ˆÏF!ŒÊÙ ¿^Z ïTx×ø|T•м˜šÊG,! z»T›~k±øâ£šGÒa¥@&_¿m�¾æ|¡_�¿o÷êì®{5ÿ§½7ïnÉòDÿŸÅ9=¶'IÊ[fU©»*Ÿv«R[‰²}:_Îщ XX$Kr~÷w·È€²3»ëÌTvW¦$ ±Ü¸q×ß}·óÓÁ ÅÌSüþ]\¨–¹”DѧD·HO‰âóeÈŽœ7=¶aÛ¥õÞ:œ �Tp~×ão@Ó;ÿ¨(7ï`û”ñº˜…ïþòE�òADæ¼UcŒ7†»—6_D”ð<$ú©±DüG|Dêâc\ÞÅa%¾ªCŠŽž!:E1&ì‰^5dã>›Ø!V_9F«?×Ól$Çu3Þü@ÉyÌfƒ‡Š€0²%í�Þ­�`GÑèà ¸‡3#þù+?H^˜–ç½ïœ‰ñ dÿ/(¥…1TZWGðS8kƒ*‘Op³ÄK�3·“(’߯ ìg }>KÏù>ÊÃ)Å“  ‹\á&¦À$¾Õ†Á>‰¨ßàã@9 A°>b$f/²)%›ÀÙ¨îX¥Çìí ”GDg‰†Á®ff³Õ¯#äG–›vaRàÇ1 iEp'%GQéôqÇÊ—éîÅüSþZ€ùŽÜm¶„çD‚ `¿ Ú €E}ÙךËæL LˆÓi–/0/µ8 Ê‚L©í2É( ¿¸Ì3¸ã<섚QŠ"HA¥‚Î'ê:,K8ùEgJÄG5†;'”P2ê`@= @d¼ í°w:Âßp&*" À›{ÖØNqUm¤&èA»—£âÕKvÍðë�·Í|ƒ±“.K`Ï×’#ß¹$Gö$(éò6G| ¢Ôp §`ÆÛ�Û4S £:ÒŸÎ9%>¬¥àLí*+nFøF:€ûÚaî Jžë¦Óap†Ñ®õY@wù„àĈ¬œ´F4öÅþp×~49k¨jmÛÒÚ zЃ¢kX�M‰ôÙŽ!E{­�vMôYa .3‹(v³r°O-²|€—û æMuõÍ/‡�—�'ÏQ g C3üÞ¼Š"5ˆØ soz§Zé�6Yp…| !ƒíT ŠNöfÀ^<„ Ì-‡WÃ4LîqÀ:ÓœõDëÞb¼g€iƒw@œIÄÆ.2P^ͧD­q`4ÿ\‰ê^@c$a¸,1iø¬ã$†’+æ:‰Ú7Sw ]µQÛÎé—ìSƒë³z ˜ZO!eJVã!F!»¶¸.}‰×_Z8>) —_¿KúÔ9Ž´¤L{Ùyl‘œo…ªW™`$rØÔƒ&¡ó«(‡Žó,1T-–>½A�gýê&2ÇðØ…Õo4¹íc¤ÿJSM0›<¯/>øHVõ`..øSI÷4›Ÿ€Ì¢ï¤$¾ªpfSPÑQß9TÀi�ÚȲVb%?¸q‘Tór\¨|N ¥ ªe4bÌR`Êp<�Q YÛ,AËr}ë?¢—ç¿ïM}[’!Ù:§’tz¤2·íäˆY¨†Àá«jZb(îñÅ@¯¡°ðëlzŠ´Öq®v¡]œ�ͯX9;±‹zºŽ ÈuªÞÒ±º …hߺûõ·ú6»Ü?i¾Ü$ü~@:ò`å8èeCø‚,V¢A/°ÔôÖ:¿|1øb–ó±{+¬£ÙÆ ÙÖ·r.[å’æ�Kc+”�`Ìî½:PÄoJø:,r€#Õxƒ$„Â5°0LåáÆ.ÊÉ_vÕUmÛñ* ä5Œ !±ºuJíÃi•ºššåZä¿ÝJ5䇯\,ºqUþ´•: P§UcmËã~ÿ×>òœÉ¦gÝ–›rº1Y HU rÄÎ<û`$þ„“v ²ÅáÕEAgúÁÅ9üt|ºs� �¾Rö7a=€Nsp¼?ÒŠ œSƒ�äþІÒ,H„1z&€;öýxKŒzœƒÜ¶Ìf†K ïÚ‡iÛz»)hÉZ¦ñ­Â@Ÿ_ûÅ2\\ß÷ïÚ�z §ÿtçÆ}ëe@Æ�,ð¨Ïß휾èÔ=ÂÅ@ôxQ}¯µJ¤ôáÛb EW¦Ï�L"Áš@F6ÁMoÛg ¢ÖԲỪ6»/]LÿgCÛ¬H`}`éÁ¬�'ÙLŒ~`ŽHrwjŒÛ^ò+(b«Ï œ•Bô“ÜeA� d@„P=›sO‘>è!KÜX�—5():¤’ÌaE£;íߨu œg—fòqçð Öõ6šWUZm?’{²Å�µ¡”‰V9†“‹4®RûÿI�ÆÓŒJ,M!9cU²�TAFú(Sé�=Zõ8Ë2'¼Í9Ѥ"#öBEqå>˜jƒb›0�Ûáµkä'ÂÛX¢÷Fú½83ºw ¼V�7²Þ�¹å•ðcQ�ý¢©¬(ÔÝ t`lä]‡�l˜EQ©b ¨›cY€·ðÆ�DOvWYÀMFÍRºÈ¨V/mZ³ÙÙ„ W‡B 6Z™ŸïÂy+ÇÛ•^P,æ�‚îªtž" oëpÎ�|ç‚èÖýž>¶HGâ[D´J XÁâ§¥”ˆ¾ûè•�0C”`‘'ÀÄpA²/ ÐM™e1ðÉ K‰$QAv†Ñ}é 7:¥ø¯¼X�x_œ9~‹£%"2È|vøAà~Ý1'´��d¢5_qÜAWxÞù24n$­˜7íN„˜H€ÉÊÉ�‚=Ï�PÇt<—„g¼òé.B#=�§,‚â^Ê’/@d˜'1ˆgt÷[ßã‰!³g ºt6§Æ´r3ÆÑà¥Ð[žð¹aV>ðÖm 2E&¯…?æÇé²*[Ü?+;€¿c’¡Cô Œ”aËÞLQ �ª°`õ. Ôgµ@ÿÝCH; Uµ…?[@ÿ ‘ïw?`w+û áÃx¥,v¾l뙵*aõ¼Í§Z•íVe™¥>�®°"«©Tg�ó<Î"§½Ë†öä¥ç8)”Øeö¿&øÖè# I´õ ѽñ¤æê¾c:‰ª°l€uzv³–0h�\&R­GkÓmëi&9â;Óõ"?ìc”Фûƒù½¾µ¬ ¦O—/_”ú¦«™ó ,«·Ñ¦7·ÑοLµ{²Þøµ}®e…N�£ÄU¡ãž.td ]ïü-3e±‰3®²>Y°fl+X¿ Kÿœö²´Ì3dÆÔÎWÿ6WÕƒ’�«úÝ·g¯ñoÝ®žf)æQoוYfYW½�³õ*ì<&o»·œK½©´1w5ô`O‹~#<¶ùIìÁCÜ™>Ð IL¹Ñ–ؿӟæ.ÚZ#ãm|yŒh¢€1…ùäƒvùÌSÌa‡cœ\êdBÇ¢½âmcEGµÇEáÎ8¿åÀÃC=ž_º©Ü†/|B¡ƒ:bJï«sR>åi³p#*7¦áþ\=ƒ¸¸¦ CeÆ� y¾²GýÄG'L Ï«*aÇÍ×du¨ˆH;�dãO Aó«åuV9¿ünç4ØÂØu íH[L °’�óB÷÷H•^J—I‘܇ÚÆÍFtΦ@ îJ*gç^jŽuߌgf>꣔g¡ÈQ”k¼Q48§¦J æ‡t¼�±¿u´ ÜU Èy›¼7h†c¶-rCÓ=ͽ f_=yß’é©Ð¯ýÚÿG+gû{ƒ©ŠlYžàà:”¹Ç— úˆ'¾ûT;�qÖj¶ë/=õ¡q¢Á,,ÔN!§s¾Oö”[60¡D ub•§”Jf«`Li"ÃÌâRCãÒ’s‰@¼Ž$°2‡aùâE#úDÅ·*Ú‡î|±Ô¦À½wê蘕–îÐêÕveƧù¹ŸæÎxOú=* áŸ(•‚Ñ3mѶCºGPÆ|Èôv[¬xâ±|Å�ÂËí¤MZož–^8ÿÌVŽ;‘Óo~.oæ…a¶¡»ÏÅ»‹¿± £V¶ûA¨4žCç/8Ç9°{ð"\üK}Ûpá�&|EðñLütÅ>Nýqü+´öÛ/ØfÓ*ÃqáWq®Ô¼¨£¢=:C)/�Rà<.ô¦ò¬ÐÙLðÌó±Œï�Ǥ¨õõl1#0÷ˆŽ5’¯p}Œàuß¼ú‚°ÞÔ%?‹W/a#{Üõqzìð`h´W¹”‡TCäWë©Ùü²ÊgjÇϬ(Àø+L;°Ø~ᕈ뇷Ê![Â@Ëm·C•WÙ>—%pÓ`^͸" 颅® @×G–/àœÁ¿½5ê¼6»™d˜«æ•‡1ð;·�+cWXsNþ©kžòZ¬ÛÂ&Oºt!—äÈÕ]ÏOw_ñØ¿CzÈ‘–•‰�vïK_�ˆ" g“ÆÄ4ù µò®k]¡�)A™� ˆ%ç¼òùÅß/ÄÔ¸bxí5kgz›ô•ٌт*»f”[~ò®ÂßW´Ó's±uoe}Å™û­»‘žKðœ—ó…±ÉxÛŠaä9Éš‚ ³È¼d‹á%Ð@HÖâ~š–â”1¯QàËÉ4~­RLÿqž:C\3åTMwà݉c¬®?Á¬÷iR‘ÎÔrüJ!ÉN‘çüÔPzdX‚þ© y7A¢:J³+kh–~óõãrþ`}Y¹Þ < .¹ã‰7¢ƒK9”)R­V%¾T{&‹wÒ-º�C)F ÿ".f oî~#Oü$(Ò .ay© ¸vüI;�r-�+<í‰ydôs~%Ð=ÙߊÍ"ÀLJ$¥�ïzQð‹T=ƒ‰lÚG#b‘å±²û‚ Ue~„38cm1hQžB°ûX|°œÜÔ�à2IÜbM¦Nñ§ÊÉ ª¨(¦uëgœÞ—«:_I®(Ê~ êWKWEq¤M ¯I¯hh°µò=ÀbÍ2OS­Ç¯t Iÿ)_]gæ¹”J®zE./ŒZç‰/yG½t‰t&ó¢íµJB¼r[ïø‰èùüËyþ>�Ùäjñ7E9`ǧîHÆ" Ú®ó�(DN³Ê™)�E«á÷àýÉ– KbG$›Þ©„þ†Þ³z@òÀŽE·=Uö�ß“´é¼>>*�†*^�kwä–ü[z<¨Tõä{\h×+¸Ò�2I�ëÖΡdà¡|ÖÃsë¨o~® ö?Äó1ûIL?‰±*F±AÀßqJáÙ3GnUtγåRÂKL »âæô9.Y#uh­‰T:Ÿ·r5�ò™—Ö=ްÞsë#ªW_Т‰×8ø¢“ê$]Ë&qY”Ûè� ãmmÍor<Þ³•Î>JÄ·Áèï­I–«-íØzýúÍÿ ¥Žãà þóý«7¯eLïsçYÔ‘«‚£»‡òÉ8kþ} Yè`†È:¤£W¹›}¸«„K€F¡«Ù¢uáÿp“RS�·GDàÉý‹D,x¡Ð118jèzdùÌšÖ$‰òp íÚbT†-\Ó¢Ü*ªå’"T€GlaœO“¾æo]c’|1¼)œøŒk;iô!ÇÎë(@g$ùua 0oq»÷.þwf ÿþ³ü.“ÿ™óèØ‡àMvGîDÚu™È¿‚S‰ÁñÛ�4î%tÂoàjG«�/=£*ÜsÅÆX¯ƒ§�# X^£€‡gç’A’°ºg®ÔcP&W¢¤ÛQW^Ä…öTäÂx<¶t9 dÑRä„ ÷jK·xÉ~ÒÄÛÖ¹½îí ÉH4âÙOl†v݈.2 5hšæðáÆþðå9£°Ø¼o9­¥õX]àÇêFÉ™Ê3 ôhaªµÀƒ¸à÷Ñ~°¯¦˜wT ¥�‘BÀp-€xuo]²º� ¸J¹d#ex! J&sÙ�}âµ¼ÃBh3η‘Òû*wõy`v�búr&ˆG„­ÓÒ(f•ƒY cJ¾€ülÎ'‹^ö9¨÷ :©)G¸¼k�L²?NQÂ’�Ÿß cr·ê<.@äM¯gš›´ îB¼ãð¢Ü*mÍ;$ì0N ªþ8œ©HÍÄÌ1νl'–õYpÂ̲*E_óQÍdžà2¹LšR" �¨å:X6Ì�ˆ—É‹k_ '¹É²*¢wqB¦^Å ¾çïè12÷ÍgVñ0àîFÖ$*Œª ²G xßJ—je�00Œ;Ç !Õj FZ>ã-Îbb%@W|i¢f…(§ÔéãWr²Ã‡%_¢L·f†éU²q‚BEf=&p"»T-ˆâx:2ƒËÝ“�Á7Z3ZXAî뇎tR™–´li$±w&Ÿé‘Ò=n.2½(Ì„©Œœ™\k}LU÷|ÇSᤱ¡…+æ2¾wJ0„*çÎé²Ôi/�Tß‹ºÆ.͉I43(þ�ãÖ°ê㆙øád>Î>;ßÄ„ä1®â—P;è‘Ù!”~¡õ~½N,Ë8|гý®”ηê“úD<«¯°�Í`€E”h&ã„Ù¥ðʶԇó%�Ͻ òRÇ€ÞÃÆ¾M#Ç¢d~È©>VÈ2l÷º4c™­Nf2ÞpÌ£Ö!$‘H'!7°Ä>§X@Ö òßJc¤¹}àlU”´[å�& ™Þ@NøuÍíÀNQÒÓÓM�ÿ GÕ„N@\ÔÐοóÚÃVm[äTõª_GŠ.áºçS¶@uÐöp84±SÓãø¡ØÃ™n[:Å�ƒ7È ”q˜åï½5´ £•?åÉûHHŒ+»IÖ¨œ€RP&%]�’“²;¸B ߨà �³Ph‘x§ŒeçCðüMfÅ‹a0Ê Y�w@ó]ûpH¾zrc¢&Cï[›_<ø¼ ��)Ç]bØ�ó¨Ý‘]$N#æcdÑcŠ0ÑÍæ„_Œ·”Jfí2«b�@B‹ …�j‡«7¿ï8½ƒ«‹æ�U´Ñ˜�{ðß4(JBýaBöÒØGæ1¤%F�&mØY ŸDÿ"NÝ*Vd¤†¼Ó¹ ‚×­Qéed SÛ!q¼%xöø ¸Ø¹Ú{ŸžëF>ÈPéá!ÊQñ:€WN4»œfv6°öY2å0xŽ7S%a/àôÁ~ó• »vîsS)颙Ž7D$m‚M0CÔ6éÿ(@yMgIÌßlÉÝ£'‚ãtêŒ^¦•ð)Gö&�{÷u,VV÷ŽrqKAsN±,ªX‹ÙÑl{´ÅÎ-V»p{²zuÖÛ,¿,õ€š “Ñ“-ózÎðd!…+®vDéÎ?ѽó³«Ë󓃃˞Azöq=Ë›@݋²zAôÕgPt£Íºá�DºTÚˆW±{ò ²ïµ]j`DdUjbôòñG¾ë™pƒó%ƒ‹Ár�“xÞç쾊Ä‹e•Í‹twթϨ¢°�‚Äs1M"WKº®é’`K< P(ÓV µj£4£�tkÝI›Ýâar‹/¯æ&“šÓ(Û®‡Çr�{|„Ħª1¬9a¯/Ù|Œr¾ÍÂ�;0û„Gˆ¢Ä•Z†:±þÕ�X_-²·²Þ}Õ 07ïíuf¸àíï^óXn«-*3"D2;æ!è”ÐÉ]�5·ªX$}PrL˜¾óàÁaåZx÷“ nªdÉ—šË?Õ¯¿a�dLl5‚CîËl·rËØë.ƒ_ßí§}ö8=ÅïγùS&ʰî”Xõy"ÌÉš)#П'jùÜ1’V u×äØöÇ{c gìëbŸ”™#Bˤ&0Ž&gi~–ø·<Æ&oBÁL$€¥†Ú¶˜º6áF¾­}û‚] ¥÷–9þ@Ü¢«Œr7ê–Ùa®Ô޳*ÐQȶ) 2mzæRØ×rŸ=ý´Æº ˜‰œÌo•ŸÁ˜­»µ2ñ£MFÑ!g€$¶CÁšmV\1–ЇKLÆñßVã”´ë`ïxÿŽ”XC a[‚¸6§m¯†¯‡o†oûòÃË­×ø3ü³ýþÙÆxŸí·ðÏööÖëO¶·Þþ©É‹ ÆÎ÷8Nµ�P^âk¾£”áŽ) Ü•w[`ìIÈB‚,¹0 r?8�°“÷)\°YªãýоÙóÖ+0C=¿ cjÅ™'¡›âq0pµÿH¹¼Û=LïõÇT4¤Çï½~”gËmÓàPæ›ÃA9:¹—¾CèìíJ²I˜lÃ}4Ç ÊþŒ‚Î{G¿`÷܈•`@&O%Z:, ó±¯ÞÉ ¾À=c…F_í™Zî¸Ô=%ç~å¢{çåt ý6½‡�ãÙ´ Îïâ(kçû˜âÔÖßVxŒCÛOÏgRL[HÕ†°ÜöF‡ ycÉ”Á.ù€Ø�ÇÞööþ;¨e4Òõ§°_€'Øñ@¬‹U8Ä{>÷žp*ý'ç¢ÇÓwsJÞØe•/3÷=¸Ÿ±˜â9˜?ÇeЬÊÝy»9Õê,Kw òÕ WhEOÙUwúMŦPò`œWÿñã»ã«8åÇW½þîÉÎÞOpÆ?î\ÂoG—;ÿ Çðòøo#Ï÷Ç:]°¾äð÷´Âýþ�¾Jr§`@Ròݯ"ܨ°ßú›Ç¿T¯_¾úsQÆKT'nÂBçà|8°ÿÈXÑv¯F¤AV†ÆYø#æGˆ77Z™ç<ÜfŠºJ,±²ÔƵQm®Ho2óW„M“ûS¬ç fÏR­iQ켉IB¦Â$/Žf*p|7ÇS÷'"äàýàTìgÚRL‘JE*¹mK$®°£·ƒû£µ{œùR–ø>A}hâ^¹ '…óÔzqèÃ+þÜp¶õL]�Ž¥›$Yå”éöðÁfkËÕ×\1Ö.è·^~Z³w1&k™(:@€=z“Fë³]³R¢/}É—lðœÀe fV¥Ã¨”ÀdÙx£øµ˜=–vë?½ìoß¾éë8üKQ$yþ¢eI£P}k¬}üéú[Š¡Á@ˆ.6Xdé^¦‚3Y-¬2Ή‘§š‡¦³DìEä°¶­kÌnµ‹^#“º�ÉÐôÄP†ÎONö��j<Ьl,'×å…ÊüüB#ùŠL€C¡09Ì6O>�¡uüQ�GÔÈ*!3ÌêcðWÎ[ÆŸL“Á_�ë6_Ún» ®šÒ°ðåÄKó9ù ýUj99'd>+ãÐ�i@¥ Lˆ"ðû°¸C%–7’@xë†Èѩ܇©q‰ŽS�îâÃàKPCUq4\Q ­\´Ûk.d ì õ%o’ñIèSØ::mηš.—'ÙÄk<àgxàÅË,sÔ/—ƒ<#Ë�@êh€É(ºÊŽgi–»Q\°b¢.—˜²6¤¥#Ø` ®c�—š"ŒbÐe‚³ç„D¼!RîGc_ß~X†XiE’øbZWÒDq¡=pu§Ç»’uBE–Ç”è dÉÆ…^ áZÙÔ÷�Ýduw�Ðt|Ȩ4XÊ X¶¦Ûn>;”ä|#Ûßí úè8fW¥#kìÄ+YpÎxÝŒól®Ãª´™’g&°ÎVÞ`Ãüx,WFø”òl ‡=¥ÆÙÊ)寛Q 9žúëÕûÒZðj ý��xŽÞˇ0ÙªOÙwß²:@E‡…Š™å¤Kíz¿:0nXÛü„È/+N1�rØÈG*Aá¼ý&7©¨=©R1È«oh'Ì ˆ•L7>ctV;M˜Ä¼�ª-ÞÕë¿Ä1×Êôóþ›’ß4_#å.›Ì:Ãèú¢Í‰Nçy-ã?÷¢1õŠç«~¿¼ÉUXÚmpdu²Œù–�?Cùx©¨ëLÇ‘%°gåض'Œ†âéu,ÿ­F©ëaãÁ?*U©h€y²¨ Aoî= S®Â9SË„¿ÙhŸ¥ƒH¡Sª£9EæaÐ H°«}àÍîl^ßåøº¯¡¢M§‚/eVÌÐÇÔÕìh³9a?TP"œ¹:y¤ê ^êˆ$–xgxš@ªË.1Ê)V¬ÞÛ5™=/¹j¶W˜â¼ÒToÕ…´KO¶(žœ‚+EÊéÝq›T÷ð)úÎDPîÙ ÒC¨ŒdÞU:Ý�$Íb'г–Râ&Ìé» ³};{þ‡6†h;3Øûb†½ dU-[ švƒ´7¨–:¥.c8ÎÛõ\ü˜S]‘á…u¢¿hZjöÞ{…iƒ >ƒÏ{øoNß ™[|÷, Ð#â–x`´™�é�éJXL¶ö|Iê¦AõP%¬/<ø�òÙ¨46“ÃR˜J‚Ÿì º>(k˜.€é 2ýU¨e,¹àZÆkg&ľ½pºËÿ+ÖĈëVûÌyêýÛj5�×Ï^›Ânߟ.,™®ñ,ó·Ø2´ô#§^ ¼îqµKÍCž N§FÙLp³àf'mlûqG'a’Ü#I´ÄûÐÝjgD’[Á¸>­ ¤Wð •ç\Ž”ú.–CŒzT(çzH…ù¹J’5b6¨ÀnàuE¤Í‚gÓ�-¨Îµ@sÈ,‚ƒZÊOÃÂiI‡ x ·¹û®2ßY;¤çT½M›éRi—dw£û£ÝŒ<“Ò,¶mï ²ˆ½Qä!åúI°«!°Ï¾V·ÔF^ØP`}Œr_C�wá¾ñ-d*`U ; N´�mo‹Õ�YÛ¾cm,÷m¾ðêmç]{¬Qz<à¼TJ…œ¶ì¢*\–Ø5CE‰s†Y°xºeÐï42>E×¼ÂGÃ##Æ¡0íûþQáØJwcF¥aT¢Âq»¬„¢ˆ•»ƒä'‡Qa¾^IL(m¦óäú÷Yµ¦#¥ZEÀkZ!G1Dt f$ß—àPþh³™˜v܇гÛÍ4 ›��3Ý…G6É36®Q¢0¹@ÐòÜ�{¯o ®ý 'ùMãí°ŠPǪp¤‘âIøî™ºÒ{ý 'E&UŽêùÊÇ…¿:ñìT±C™kla&PIÙĽ~O�$ÂðôÂáúÐBì[œš8ü%­¯™_Ò­›l¡¶þ׆‹oõýk¹Xöƒÿ5\Þ,×GïõQþÆcg÷É×�ºô”Ð]aøW­‡}Ómç¿ç¶{Oæ¤búuû–Q #êºA~�QÅZÿv�‹SÀ��ömzKÊúе¾Œu'¶íº�bÝÌm÷ã5oK³†•{»·y¯;¾ft…!Éĵ‰·?ÆéE‹‚l9V¬ë}v:lî­àVkuÜúMŠº"iMàP\ÃO‹“ÁOÑò]I&ﵬ‚y×2Õ…-öýðØ?ǬŠ= @ê³H]ÙÆ¨+Ô³™nÿF w‘J`|V˜DùR ¦†„(_ŠŒü§÷:›]0€m,;�[£¦%1^bÕµRmŠþ…gP×+µ8-t0Ykí×8/µS¤V�‘´‘5(ã� *‰=ªŽG>¢b®ƒj„‡Ú‹ Ø-mó-²Ú+²‚ú¦,#ø�éá_úÔ†.¹Õcm.‹®Ù§Â1JžíÄÉèYÀrÀv¥c¹ÅŸõšÌ´Q“à|N.A‰bc™Å…UÛ!^´#/ Cýj BKd&`Ný 9¶°b‹­!ÞÀ�Hn #@ *Å ;÷í¿`ªbJ£qKЏ²ü„Ù”qX}›=l7êh#ÛÈËH¢–ñ¬âatªÉ�CZ›®:<±±„lµrĵ…G^Ï)¿&xÇmlS‹ 7�$ýÎq~ºúºhRî(ŵ·µ7…ychI¹Â2Ž©"i¿\(.J@�fºÔ:ß D|ÆZjQ›ïº“Vƒé, Ô SHÁ®cƒã5Ýr|ÔëŒø½fî_~¤Äw­åòî7Ÿ˜À>—A³u²õk›ÅF} û�ot…A‰Q̽¤æJ1‹j¿ K«ùT•;¢)Ž”jÄSp…3@bm$ío –b%âq6.®Àç߯Ë�s‚™QÞ6�j¨Oydó¼¤PÃVÿÄqÊÀ ¦F-(/þ %˜3D¸Kæu”�Û˧áOth–;het˜mZiJÏ.ÓÓÖ1÷ÆÛX’ú=ççuˆk‹¹qô¾ù¡j´öžª�J!·xPsÓ‰‚E8åŠjºH“ÅCá/m׺亮oƒÝû.q«õÓÛü³aºHêÙý¨mVí>|cóÅ«ý»¿3?2Ò™0~ò±"Íä&jS µJHotwZ4ÞòBYíýéü § H³f(ðW/d›pTsm@æ órÏ›Q_h_§˜3ÏÐ:;)´”Á¹‘±×:ksïX=…Ò«, 5ÇbGb I`fIXC»Ê•p*í=цe8'a<£ÂMd 1ê€| xFÕ­›³D�v@¶Ü»ŒOXëZ½vB¿™ø2•z£¸ÝÎý¡ËÑúXc–ûáv3D¦gu‘ÑÔÓ'tW룾k}1Q3‰žã­€b; ù„ø ;çÎÕAzá &ec/sqÓ¡<Ä)Å'>ïö®)[9F{5òf¿ìc.WEði´±är)w£t@½®Ù€•�æ\e�°´Ys–?²ÂÃÈ¢ªefPÚù®TBÈû^Èlë�³´^U\g—½­‰´10­ë7Rµ‡�ï².8&¯'bÄ�þ‡™2DÍIÆ`·r/ñD,­ÇÞ%ÞÅJé:e ÆvÃ1ÉJQÌ'3@ ë�Ÿ·v¤¨sqÑs¿[¥òo%%�ˆ°æŠ)@uræóXÒä�¨õ 06N{Ã@ƒT*%øÿ]̼lh†½Ã7÷Âô0v‡²´pí@ëMðÅqåÚ“x•]…ÎÜ­²jÐ h|©æ'5ŒHË´´5‰b›H–}^Oé›+z8xy²Y€ÓX´ãγicZüØR:ª…ÁÄjL,¸ÖÍuŒW+rIªÉDB~kÙ®øÊ0¢Á£ |ÌJŽÅ`4 NX;‘’>n{FYWìç’’­Q`»–á¯Q,¾ßê™Þ·ÜÐÄ\/™b…Äåö1@u ©[€–ôLxq¦J™•/À£žå–,?óuh>†É¼¼É³jv3À`³å:œýëüíLï)f¯Që{«!ÿœ^iÜcYÑHÝÞ®Y&�½œá!¯hu—â•(Þû`^O“Kƒ©-â(Úй�~†S¿$ƲÍìi �xJ©,zÑE\«�èâóˆ�•T0¢È”É&)ØŽÎý@çi6#ç4Ý®ØV½í¼áA£du Ç2ÈùŒŒîÃOhuË�ì`Q´Õ½ÓV²á¡ûgèùÆN 2 ~YGj·ÆDÕG¦ðÔèáÀ_¤¶ÉHíkpøS�pßÚ¤±Ãw¥A]ËÛc’m{­`Ì�òZ½V|-!à*¢ Çq‚Eyíö<-VEi.H®¯ÐI€%¿¹Û&Ö¿2 Lž –6*&,ŠŽ¦kƒ<öØû†Ð¶\•»#ãößùiC�-°¸å.4Ó5ÄYÍÙÈM0‡ÎA¯ÔM#5ã–ŠTÍâk+¨c+“ll?!3Ó6*3hŠW[¦k§ÚñBR*ÕŠ �3++�±Qf:Û·ta>‹R†ÁG«Š(½g“~ rP©Óؑ까ùI¡“\‚¥šÀU}à“F>dŒœiw§\íïÁr¯ý\éñSœR&©Â ÎŒSö7pÉ’f²Çûéc¼º‚ÓqFÛËh˜Åºt| –Sq�à ¥w/Ê�µ¸7·ÌÅ0f)õ1¨qû‘`÷¹eR«Z±U‰�”Ö/m¦íàH@8YÈĵ�}Ù9É2'“{§îû;#Å�bûA¢ÂÉ/ŸÃz›ciÀQ ‚’†\ÚX™x¸ö$ÞÚ¯,½}ùvŽG9Î¥ìã•;²Â(bܟ㈪C“/ù&\m”~J–»}.ÅE�/Ú¡ÁºLiN;˜ÝñfaÕíÌRò¤à~ϨòÁËøÆcœgëÐExê/®„²!¨5+/tƒõéi�ýÚâ)ÈÇ’Æ-næ�&×3ƒåŸ6=SˆÕ“[s9N�ãúÊ6�0ÕˆàtMc5ËÄ\.ˆyþYמœØnÐ PÄm ¶ŠºÖû„Õ9aò+èj¨�ÉŽw˜ÊÛ'üˆí^½±½¾‚Í‹µÆ]n²ÝGjŠnf²^!ÝÀîøú¤ˆºUbxê¶›)}Ͷ7òEúz™6nÒ�ü1fû:¾¬¯€Åb°©Mý¸÷ì?»¸‹’4Ѭk9 =õÃÛm£´eK,Þdéí––ÞØØ�¹]‹ÂaК­2hˆt!§úï °ÑnÂ8”¯ò'÷Y²ŒbùšQ•ä‰ÂÃE\`%àÍ8jËxÿÌÛ²¾Ä»éö:ìOÜÙ-�ÎHV*åV‚¨p§�‚Ÿ¸rC`¬(!³’» Å&è|‡ ã¾~-oDiØð¹”Æ~'Þ¾2ű(3ÈÜÊ¡åî¾µŸú ‹¯ìˆì^µo�z*NbŸÇCq‹ðV1’?yɰ Ô;QÖëqšÜWo_=3í°^Ù>6»zGh4L?7¹�žéÚéÊ«så.FËÐñ­ñ�&}s Ž^¢¶5—µní&Çú>�´¹BÞECð€Ø™¡}æÔ` ’ Š�È:•WU³O{|pº}e¹ØÚªÎZs4 —HgìÙøÙySJ¡@³× ò}é=ƒû“nÄ€‘e‹8µ=¼Ä5{_S«(ö»õ�RVHí?Ÿ˜…ï½Ç)Ö?ð$ °�…yˆù-,´¬ÍE¶'ô¶‘¬¶rG¬ôÔ"±]µ5„UÒÄá iyDzµŠÃŠ6ÆJÙR U} HGÜ1Nüëé­VÄí# ú:¨ßOkÌ£§ ÚqÚÄ…ûßDâ^é… ÂŽj$o¾™�$~áu˜g FÇùv•R¢¤ž¬Qêv_£Yè¶+S²î½'«N;ý›láÓg&1~‘ŽÛvïÚ¹‰ªÿö öÁgOr*AèZRêÈ]Q­:çÑNFxel·.àWQF•´È�—pN–>êËÝ¥ D:+!t�˜V=‘˜Qþã²'T‰¹©µYãÙWIxïf 2,ŽO‰qM),èfC!Ú-/“p-µÒ‚¿+u±5i×v9˜©n­ÔI6+³¼#},�·´ü¢}Á Æ ¨ .Cj†"Ê«ØÚ Q£”ãwRzÁØcz ,—ç Y+´Kâý1EÒPiy"åÖÔŠõç«�÷–Ên2a·„áÛ•+ê7�£^yawäPYsIs¿€ƒ�wÊ„GÞb³`IíÔT+ïÉ6O먅X×Üç+q¡{þÐÆ·aW7ëNODoNî©Rb›Ij)MAl²ô”c*tù�¨¼šs¨#a–Qó¹@ëêS0a›Ø½k¦¶bݫȴœ&FUÐ;ìðU¼‘¤eŠ0Ë©‘¥šØ ^Ð{¢ó4qšHG6Ì�ôèîð×Ú„øHÕÜ�î»Â*ª¨¢ÒÛ8ÏRŸŸþ|ôÄ'Ìä>ø"¿Î8Þ ¨®rG,‘û¾ÆÏxú Öb®µ|_µtvO\”ãÜm=8ÈÉ«K×>­ÖYXÇFsC]®�UÌs,ˆü¿^é"¼@‡È5Ùà1óÞÑ”eAiñž8Tx»ZŒU~>½ŠnJÝ!¤Á(RàÂCò#z l:âòCî]½‚» ŸWî¾÷—'Û:IQöüØD?“Ë•¡•êu²*ÜRà”¬ üÀâ�‹ó‘‡•ÀØÓ4¶ÿ DÒìï)Yàß¶T6eç+—âg^4€;(ÕBxvå!̕Ғ¶ÞW„;žyPaà‘h ÷ 8 q7`ºFûw¦¶×†IáJ ‘ {¡X•á +pÜï 1¦­ Á†¦Š_WÀ÷õƳ Ö#uøAÔ5é=�怂.ñæÛ»q/üNƒÂšúuµñEA:÷ÑÏ.ì_æ6ùnñ&Kë¸Ëg«FŒJXs+i\úÁ]¾?çê¸ÀðŸL mÒŽ,�w}ZkÒµî,¡×ÂõŽÿ.ApðÛ5éñ §Ù©?&ÛW’ sã@Â^ãC÷Obÿý1ÅŒu•µdZõ„Ã1Î U ƒÏ–ã§qˆMo?)µlM-ø˜ çïÞqž›Þ†HC¦G‹o}Ò v¹"`×<[”ÁÅ» ,»JYftYÆÞèòÕðrÔZe¾yòBá©_6ŠK’³Eè@-ˆ *ᥳ__ n%•n -[rÛ"u•lŠ ÈzÑ}9²U1FÌ“5r4sÕe¥rõŸY5òXxÉÜ‘ª³¿X]`«â ™ äÊhÿ¶Ê£5 ÙP,Š\­üé9‰j¨A¿  Í┚[¯Hþ`^ÃtKˆrH8eÆùÎïíÓN¹ ‚:Ñôm߀$'¶eîÙëm �j±,ïOADò$XÈbˆF×\�8l$ä~©IòKO'?¹I׎îå÷NÛ ´2é|³e£jnÛq:ÁQ­üØ�p[­Úòê·¸ö8‡ ™˜¯Ä.?$ñKë>Å ·ãnIVù3/Ö‹Ç)¡ D¥¸Ž0™ E#Â�çZíŒ=Ű¿:“tNn<^EÁÁ £S²ú˜Ÿ\ÝÑê�yÍMvwⱞƂZo²ƒ(l%ÉÂh° ó†¡ì@k¬5¾¢Á_0®Û"AÛö°ggµ»˜2¬GËùÙåìçÛ$S‘²ÎÐï£X#„ñfœ7vc‘ì÷¤¦™Ëú·p½ˆTÓÈí J�#Ž ­šfH³8Â\ áæ›ŽŠ9lÞãÎÙ:e¸†WÚœîœ|ܹ@{Ž´éQò¾©£KWà-ݩ혯xWÜrvÄj‘]×má2•oŸfÖ“ï�÷ÿ[©b³Ú˜²½±Š3£Ì3ç¤`ÃPø‰g˜ˆ �ú,i!L<…ó>˜tT:ä#Í{²ágÙoÒA`ÇöNÎZçF¡LŒ¢·(õÇŽ€�8 >Ql7« †Î8¢ÕÖ&ÜêFE(”?¦ÙHÿ¼Þÿ32§ „… aðSσç6ëeéávë�Ê{V'n÷3ü$͈(?ÏÒmyUž{äy ú ¥í~7 ¼²5( /» ±ZkËñƒ¨òO9¡‚FõGdã8¢Ã µ?g¤ûZT®ÛhÒ˜[UÂ)Óò¡Âc«É¿ ²é ]ÃÅ› gvñÚ•äV…aZží×,f¡]u¤é®/¦aáaNÝð"»?�Ÿ¯^íG— Žz†½u}Õ¢{k�fª<;?u€é9¬}�ȳ £ˆ|xxƒ³9í�`]"s L´ççdBhÁ.�ôü/òÊ “ö�¬ö�§LPPHéN²‰¸�6Yô$›‡u]HWòª¹³ŸxS^è¶ý õYy v‚y‡´ÖzÕàG9 û„D;*ÝÆ§g˜¾`Óë=#Ïcõ#Ì‹ñtÛ¸Ät)¸Nû"íöôšáŠ]ë*=2%è¯áÙ�z}k {¡Y±FÔþ³VÍÔ3Ô£io}<¬3ܺH#ú`?`hü;Øäì¨És¤wA*FÿPJ@Øw!•!I2.x”@EÆøFÑa–/:.V\ï‘ßf²_[Iä­3¨Á>4Çüy*æƒéõè©3eÐ�=! ê@©¼ŽmVyB((ÐÑïHX ˆD— d‡AÖkNaû!U–I5s›d.à‰8¡×S~³±$-­g[;›™Y©F�ÃÊÊ¢&С±¯_Êpü»XX¿X5TûÑ*,î¢dR°Kl�‡!ÿèˆXi·|þŽ4ÛR†j_¹hTè“‹oÃï7½¿±ÙFdÑÊÛ•/á­ v. eq_ü#9̳$Óýèï'T(w¬n�ÿ*«€©æ²Â4 |ÂðXKƒójQòù8Î1†/ˆv©Ä( ûYj•€Snû1Á(`Í Ýå PHEï. F"Õ¼– %_N>¬ç_ÈõZ·õwl®âµÖÈWìÏ‘–wÃL¬ ÃJW-ú�Åæ›:á¥7 GZÚÇþéÇ­�UñvUÛB&¥ù»ž}ÒW¬Ü‘?ZÆ×M3Ó^KñŬ}AáT:í¸^í¯ u”7aº.uñ�XV9ÌÌm¬:'{€¶”Êæ‹g '€\iéW”N¶”„ÞîøªÆ¬‘èkæÕäÃCö_ßdwŸ10FE'î�`zÂÃLjxŠA3ãŒÔ Æ¡7ŸPé�xJ"Ó­ "Ò]�ßïÌ<ž�ó%¼Ê"BÎ蓤«BZøc�- û:4Cêýv_ï,hÎzO Z^MÈàŠ"ÈÜçIˆéºé€”óÆJÿ’ž/Œð¾�}RÞê4œ¨ºZ†.ë‚%1Ú }k°J,¶ÀqÀ(BøÒ~[U‘o70µ­ð–jIp£ø–7:mpiØ\Ÿ ö”ñÇÚï6Þ�nhöÛ7w¤�ì¼qD]M´ôþ «E`C}JaÜHýåŽxùTÝ:h¶ÅEˆá!t“fØÂfåëÔoÂ$lY ñ®®ÑÑþ%8€n¥�Á¢ûRÇ1±òR?àf’·^ÔNÙ`ðWýWdhh¯Ué— @OÜfr�¸‹ÁÎÅqÏʼÝ8ï ªå@x8åºÐgÚÛ[ðå!Cã•IÕÕC² !ÙeW˜%ZÕ؇–R4‡ö^ ûŽFÌ(Ü`ºX3ò F¬ž!…{*]S…Ìچ_èÂü’X6Ã_v­åWíÕ“« å6Ë:®éä~‹.Û>y²,P5–S’Ÿ™z€ÒµÁÎø�ïN·˜&H¤ɯ-ÒD» .ðÕ�¤¿aa¾”­�fÅmq«_ÜÅåä…['“6¥$q ¤NòžÚs¼^”ÜÈÿØ3?^9]käMÊ–xÕÉ¡-ÅtyS%Èn-ÀÀµ>4Å©vpñ5ÖxàÝDÄ¢sîÊ~+àJJçâÂnîJ+6Õäš\ãjíÂh,´¦Ê˜=Ý †n¶Öñµs94%xþ‡ÀB¼ŸmLµ¾£´�a«!aú¡úoö…Vº}7†Í±¾ñìyp#Éú�Å6BgëÚ5÷ËœEÂùà1Úáh&HL R·a}D±PÁ2çº,6Ä.¼í "»õZ ƒFˆò`!ñÌÖB¼u.„Ac§3@±È(f²Á­u¬BÚâú¿|Ç\‡Ÿ÷á—Ïã1á£ÂÛõ"—<¯Èç; ±Dj’É/N:›&p[VN |ÌÅ·,2j¶5ê…,‡“qÕÚ¯•ˆtcü†š© %ŽY£\ª¿‚X‚£còI9”|É+ÌqKt aÔZ‡i&uLbÄÙØ K´ˆN¤G�‘ �º* KŽÚ3܀ɬ�ó2²d×…ˆÕ˜�FŒzêÄz5WU®(Õf˜¯^ ÚÄWfá  ³K©7g‰r Þ÷×> 6Ɖ³‹Z›cåºà#!5étYÌ D„ñ•$ãvf®>ë½ìÓ¨�Èc�ÄóLk³¾ÂX¢]G"KÃàü‚ÌHwj&©”Æ à‚–jYIŒ¤ÎG/”y–СíX–=~Uðo]–¤PT�ûBÂ.‘'o?z¿ÿ}û”`à7X®l–9QÛi[%‚‚ÁÍ’šÚPº)‰¨\ðq¥ˆ �‡á]›ÏÙ[P›åî2¢Ì›J0h¬@¨,kˆæ%PÌR>ÄÜ< ôÇìsZY�<‚g–©e…˜Öë3bU)à3õ�k%Æ=|0 ‘+LÚ²ýÂQyFYë¡R½„œ[ÑGÜWèn¦‘Œëák°_ËÆÈtJ‹V–«QNŠé±ZÀ…š`’üu2�®u†lÇOVbQöF‡ƒu˜éã NÕ"l-{7ÅÝÇZ¬é¸Æà…È… Ê(«IMæ�¼Âi\wsv‹·Ë„ö 凯…†–ýlD:8V޹j� ¼ƒB@™‡3‰`_Æ~æ¤7”‰Ôùø¡ÖuX}y~Þcïìš²æŽ{?E¼¨�ôhÄ”2g0ºÃ„3û …/³¶ÀNõ(èšÁÙß`ÜçßÎÉâQÒ)Y�œßmÔÒhuE6uø†¥ã‹pŠeå[„©ò*9j<×´ù¢{`-}Û\§5ºæ;~ÒÁW�Y‹ E1ï6 ¾lGŧø‡¢ÑCOPˆ4ÂûÄ“rw”ÇŸ”N¹ë�á;sß»?ß!È�IÏÓPƒ—T\’êí21�b!wŸ,Ëd©8¶O`µ´� F7÷®‹€ât·ùZ%�ŽÃ¿ÖšCåÅ׊z•©,| Ô¦Š›î‰ŠÐ¤ §m(ß rhRøÆ$ÓX°åÌÜ´ˆ)Iv&…mÔrχɺ«(ïNwŒªA×}ˆ*,=·å¢I/Vc]c<‘ŠNQ¨‹ÞÌN0¦aûñ|4:ØsÞ–Ù ô¿[VÍ3êK8á�s ¶áp“Ô‰3rTIåÈãÔeÛ®4FJ4ì¤ë5x°�˜œ�¸úÎWy¨ä%}峟Õ_Þæî4Ú‰¢ß “ �XDœ4Ê@«O"Î8U ;X 1F „ØG&k…öy-{Ô5°)�Mji4Æ«$2R¡çšîµûõfÙm­ Âè˜×ÕG€ø¥kê°F ý\b™ x£(-ÃŽHÌœX>l£¸ipØ5n…U"ªk GÊØ®YTå¶­ j…Õ¹šÈ)³Œ‡<·}d�rTíE›Äc¨\ÎÚ)G”ØÞwV£”øô3¯‚%ÜŠ C««Îký÷ñMk,T¢¶xMr½"Í4ñ·Où°àÂ~߉ڄÊaÿ8·LšüàuÝ0ì"} ±šo§õGW «°EõòÕ÷ovCJì‚F¶ šóÐ?9 LÛ‘n;œ§‡˜ãÏÞkЍ]JC æg†¯¿zé¦^•ÜVÉŠ�½c8rÛZk„9Iƒ•ZùBK8�J4ØÒI8z‹E³ÎÆuS°…“^0EŠ‡Ê†qÙ¶WNòXí~¦¬óUÔ_rÒÉA\ˆÊtÒîK¸ÇHMô1q.êèâü`ÿèàÃÎI00.)2l‘`ioÜ$Ë�ŠŒbŽÓ,§{ V0·Øð‡ÈLn¨U û,¨”ȉaŠ+žÏÒo$äËwnØÎÉÎå©s|uÞ‚5À¯C�y'7–Þ/'5üty|u|ðÚºe9ø4�hIp™¾ç¢­1Gö2jˆñT›o�ãwO3Íz.Üžç-k&ë;ÕUb­Rã�L÷ùÛ—úC&úý…�½uOéí0øHÃY &™g0ÍmÕc{þ½{$γðqgçr´÷îýÇã³£–á¼ÑÃYF#í…Â"” H|þæ{çHœëìüêø�²8ZòÚ;¼oAñÌ&Y,3BAœ¤¥ÝSaCö9™úñÙá¹�}ïì¾?’�â‚, ¢ô„‚iUÙm�&¸¬�ˆ™t Éã°ˆ É«°ñQ& ?¶0Áœƒ‚Qu¸$ö×þ–e‹$ìûyµ i'†À8EË­]ák¼£jÎÀÈÙQ£ã;@ú¸s8�q*Ê“FÏÁQSý_|­ø°°â‘e—„âšË7\TiO÷@�+oIEÀ „²É�ÕHá~.^»`ž•yÝÜϽËób}•›–Øh@Rè©Á*c 'idf{M,OŸdŠÕ{؈.nÉöNG ÿÁê_¶iMÙNÈCkŒº©ñ™žy¤]ÙvPpÔ:ñÌ=sc¥kt¦nTÀ\¡˜õ7bü§HÚžñ¤Hg PâÃDáL× ç.uh�J;H£C,‰<%±4G] ÊÔfKpàÓ@y*! úrçtHa1ö§�+?\ˆ±·I Æ%U;û­ÍçSòžžâ«Ãgm6;­�ž’,1¨áûîôÑ–@‘=c�ïæ4Ž®AW»°j²Á9Ð"f20§ûN¨Ä’îÐqª-ö ‹ºåðDv��ú *±xûD n³I8®’0γ>Æ�®7C¯ªœX qÜ*RÆÌ0ë0 :G¸ŠV¬iÀ: ©=H5×ñډͅÛ-W çxbÖ'±ºŒH QÿôÖêëVQ÷[ê8óÇé8WÕ|™“# V«ën¹AüÙ’Ïh{ec ¬Tï1ôÏVZÙ(D«"” EJ‰Àõ*ÑÃÀ§¬ž’4hl)ð" ‰ª¿5œÐÈôà æ˜Ý‡aWZæ’Séwõpø Îǯ�¨1±7wQ9U Ë9Œl7‘Z�ð!´¹¦¦å(šÐ¬c �ç0˾ÓožåÄ) _{uê”;ü°ƒ­›‘XñÈXÆ«¯wæê “6Ëáì$ÑvpS–Ëb{këîf1)†æÁ6e«m-Þß¹òÐÕF¶¶Yq"™ºÒ]fé|‰W(¸”÷QnÇSJ†®¢F“�ðüxôÂDY¯\¶ÈŒ+=úå]<'>Í…I8HOé¨7vävÈ•uçò•ÁFò´"(cv äMðKŠ| Ô™D‹þz`E¬E}?!‡ã<šBÉH¥%'î óB¼J�C\ dtsÁäBJïàd©â©„Î ¹¥wÍ—ÿ`æßJù+ûÒIŸ´a¦¸Øø¸60×ÒL…·è¥ÒÄæð”„j] R�êÀÚ3É� ïŒ }±sJQM‰¶"á“~p¹{20F ö¢�|³u�°ËÍÆGlãs¼ØÏn�–6Ž[·{m‘¼ §2ùŽs,­S:€A~G­�H7ŸÛ´\þîs:¼ºxú| ÑÆÓÐw,¢Xùâ»v Ù(ˆì¬ŽA”M*T4Bs… fô°óè ‘‘~Q.w1“=E˜ x„ͺcö•¨ß˜:ù¬ð$Oªûy0Cde• ×\ ³¡7G§¸`Ì%$Ü!S(øt 3GÒ9pÝ$,•NƒÌîN8]¹c":>—+:KÒ2 §áÓåaK¼Tž¢ÏµŽíº “õ¡a(Ëo½ÆÍ€òß~™ëþíélÈuµšgk<}+°u†[ÐK?yß8Ï98¨XC"´ÏÖØ=„ù«£= Fpkÿ[‰’2}`)%ÊNz³‹ÓnÈèxŒ5õn Æ"é]É  8 �qrjd­C=',+-%t>H–«ã17¼ÉŸaét£67•å†ÝÀ(ÎðÕ£\Q€ ü¤ƒWM€I¦ÄûmÚýJÏ«ê½Z3ÔZxmëèý.ê~½&O9VTlžfwé5hTŸA½¹Ö(]ô†) eÄâã‹g¼”5VÉòd*EÓ)þ)gÔŠÃëà�§áç½ý3«LÖœp¶S›Y´*¿øQÝ3tT «,J¦*¹^n.TP�Üß@ˆ`´øìzDQ_Šá¤øQ YÓ¬À~õ8´64”H**%Ó¨ÎÀÐjDV �ŸtWK³‰Û@†¿€ZSg×åXM�»è>2~^V­8fœ/­Àø…ª£«áýñÖÎű¾3n€1Pgú²ÁÀ`:\&xaÉq­A2"µ<$P ‡âævŽKç^PÌ·µ aÅJGb�¡S\ÓÚñ…pYD͘ƈOñÖS1IðŠ3ù M‚† ›Žö/ˆòPŒD�j*mcÆìÄÕi€BwFÓ¢ÂÄ¿–‚:W°Í¼UQJËx€C[…òvçW �Gl£Áë—§»È¬9ó�DFD/Õ?ªØ[¢Š7ä�‰°#~¢60q"f�ÓÛç¼Òh%Q}Cé.ªM‘,èÕ’t0¥#�Ëûàã…þF©ìσz=2Kƒ÷wÆå$q;tè1AÝl¼¤ ·i}(Yƒ&-§®‘ÈÎÉd�#¨®8e‡‡Ä^[ …/\;†­F:É_[Äæûˆ�Éù@–%àC">¶ÓŠ~©^¿úók�þ£ÝIÐÕQ?n Uù|©ÑÓƒ²Ú)Û´AE½R”_R ´†Q�z¥ G±\êS ùN7!$¼]›÷^áu¼fM[!»G�C§oytV¼D^Ü1ÓϹÓçnüý•)®äà[F@cül~Lq_MÃ*iM>€îkŸ”Xog:oMß&‡®.¾}ÖÒjÙ"G4g–[V�…%Œw³¶éí#wmZž@.ºúÀ‰°`a0^øÐ$ï)ÙÕŒ¾ÂÛ�’ÀòŽlŒÈ±\)´k³èŽÎ­±Ú•ìeÝ)§‡á8—5¡€n�¦ÈOY+ʨ³ã,$>ù�Ö)ü½µUZo“ôÅ®u{ÕyÃpÑ’i'ÿ 6è°Ž:èƒÖù}~prX“Æ ±G‘ì&[¤û{r2Ò•˜ÁeG’&®{Mó­Ä¾+ßů½Ðÿ¦”Em}ÆC±·äÜÛ®4ƒ¶…‚º=Yõ-dF#ßäÃ@×¹%i‰eA–Ù¬Æ[hÄ Ö«$beʲ9©…�W%dŒŒD–‰ ®:ÏpZ¦Þcëj½§q¾ÁÔ.hÏ›ëyX.7XL±,«\ ¦å²ÕîFœÑ‰ ˆ&~ ÑU—¸¥ÒÞl/gs&û¯ËesˆÇrú:‡‰ÆØ\… f݈\A:u°2‚ÂŽdrnPòUŸ:±ê£iH Á6d‡ËCåa l”!Hêã@@™¿£êxËÎk ±–ÚÁ“°°›KvÊ Ao¬Ä™’yä÷Ü[eî4@ksfßÜ/^%ì6 ê;þ�nA�Ÿ\DElAøw, É.VE©LDÄÐ6¥²éæÁµ8—¸¬B.kkúþe`›ÛHmÛÂÖƒ^¹ÛQq°™ëí€ Rá8Lç·q^Ûëzf“·’™ÝÜõ $d4YÝUÇÀWpbt+ª� C]ÄêRŽähu݉Úl§Íbñª¶ÀZñ¼x§Ã)H‚ªí€//ˆØJÈ“¦HíD1ÆÄwBy~·ð³© 3•ϼ1¿ŒóÅŒ)~ƒ‘¯.\ÆÑfK€y]Y&FhM¬˜ß ¶—Ðq3FµŽ¯¶ƒì&8“ˆ$2ÄŠ²¡§ì!æ8—,Â0øAA¥.v£ë]1«#$Jé¸5CïR/Â*™c!F¼�®qÂ…SXA÷�Í{j¿ò^Íl £^)ÙÁdö’p±óá’æë®d´–—‘ÛØ…Ãbò*ÓµiV�NâéÖð”Ö•jtºK]z‚ âY™¹Â<[‚-±_¸´„�s»CÉÒŠ.ÑQ\®*^j¿Ú,'o½æˆ=H“FÞÜGèq KÂjge–Ì$§DCãÛêÑòf9˜`j»ªñ¦ÈŸÆ”u8�©k/�ò‚úª6|Î ³Éì„2å;èv—æòú.TBI#b¡Yîfy¼@wDÙ�V¸¯Ev7±ºfÓÿüN•*+7JB•uÕ.<ÁH®Ëö)N9² cµ‚ÁªT2ÅœÐúqT‡‹u»uÁ«XÏ”(*«ò Ö¶/ªOúq²¬º¹áGøÒÎ_¼è Uð ×Ï0ÐåIÐo¼ŽÛ‰]¯§®Rà;aYæñ¸ò»ýœ‡qK‘3]Ýl¥Ø­{.Î*·øéöÐ<–¦m íZÔÂ_ú».Ø,ÛâzUcT­yŒ¼�ÂãŒlRÇÃ1VQƒãÕÌfà¿(‰5Zº3ð\íé–y±ÅôG)º Áý;�™¸Ô8ûìÅÁðv¸¤˜1 ¨`}ê\Ÿ5äÐý†¸—ë³Fê {9WÖ®5ìdu�ذ@+ÓÄdëˆÜ•UÅ&�7#ù‚;&û°Ž˜²æiò£uÐa#tmá(�Õt°ac1{còËHk'(Háü“ ¼Û)Yq:Ç¡Öh»yroÎŽ^:øŒÁðäeb^â·‚çDBÑY‰Ê_Pb®))mË’ª&jÝæ"·[x°sK8_9ëȰìÀ³ñHÑÂ5 }Û¢ *`�HÖ5Ö@#wÉŽã8ç2-ˆ+ Û¨ïð.$”φ¡ŽÖ9´ÒöxµžÃ_°^:ùª j`¥ÞÂ_°d^¥¼éÝQ�ª.€¹�Ì&0l÷¼ Ï)CB>:"� ilÚ™ ‹%ÉÍî¦[öªÕ¼áç !òÅ.!§@ø+軀~Ÿ÷ùèq€. Ê„³�ÍÌÆ²�´ç¯Ôç¯!Tô§y¶Ia+„f'vNTª1%‰$ û×;ÊãEaÞ~d?„uDëY³ôˆ/e«Óî‚‚RõÅÞór£­s«ŠwÁãGZF6_Ý­D¾ZDl(Ö_¯`ed6ddgÁ*"(®±ÁaÝ$ol墭·Ä5±aÀÕ3o©²<.@7—EÉX6ëiÖ¼‹“R#‚ªôßùô(³5J� mv]dÓ¨NÍÚ™›îùÓbžFž]Ç%Rf‰Öž‡�‰ÐŒ9‡‹}*š a è EF‹Í–K©Eˆk„,ìõ4ƒÚ†Áa guƒ Eä’»©`ÅãcÛ¨¾ý:c䄈…õˆÅÓ³Ù k·v«Óâ¿mÒËàýåÉ€< ºJxc¬ñ$ΪâZg”l2쑵¦tycß0pt\@x<2<-·G CÿƈÍr}[%¨ µŸˆŸØÐ•+1bçŒÓömë¾ZwqPSOMÔsJ&ošÛ8À\Yhd†4Æx}·çýƒŒÎ;u}·¼ž�9Úï¤HùäÚ±Âß<[UGñZÓ­?@¨:ŽiF:�žf‘U%\î*Ú`TNÑ;Ñù4òÿV ˆ9Ô çËx X÷�§ÓHŽÊ H¿é¼äœŒ =5xW“EÅÅJU @œIBè¤þ» Ø€.«›Ö™ìÔú9iM.4ûË^a-\¼ñØRÊ@@K'Qº£Á§O£×]R‚º£ÐRHrfnx™æ÷”¤?¥E¥È(3YòÃŽûcm> oÞlnˆ¶iψ Úó"ì²z6´Eú³g1"ìÅ'M`¦°ñ7Ü�±šed´� NB¬Ý»²ÊûÝ—Ç¥íým–¹AÖM*Ñ5Í•MǬ„¸ñ‘Ûåbµ­7IþÍ(Ø'�‘ÁÃÖj¥4o;­aØY±Ä&¥ºv¾áá¬í…¿åÙœ5zý–Ó©§²áÙ\�Îow4¹ûhÖê§ëÜô°êIuÕÕùü&'uewšgI=¼E¼.”Ì=¸·hQ ×œPR‹´m©ÜÈ# "Te¯¢ÆM¤ì�Dý£g)n?Î*PÕ]-gq$öL¨„«z‘-“ŒÀæÐÞí¥øŸÑ•ãt dÓ^kµõT*ÅaÉ\y1¿6j½´NY ƒpiJSVŠsǬBD䟀£´ðbZÇŸôòN’M¢£b9 ¼î�œ™BöAZ-”è@ÖÊm] ]ÍGgŒGMQ 4L §C:;œ1ö—ÚÖßÓÿž³‡ tÆÌZOkÓ9FÊdÛñ¼0ÝSÛ8ã6�ï€Ì@‘ÀÖb~¯þhIͨ‚ÌCËŒ*PÌÂ0Õ€UÝk°Rº¥j®ýV䦪C½¿¿ èÅ@Jý´Ô×[y)mü‰À:¾qޤ ÊÆ²­{ë%ê³%Ú^³ùŠ8[È¿à$ÁÏAƒâ�¾q:Î>KPü2¯M‘e<Á2qÊÄiÍ@ã¼â4iÆ,#É�â˽ z5n©!ÈÅ…Šú¤€ôh(Ž�Йîœõˆõ�ûµmùv„$9€²Ð¨ÔTa E~‚d"ö‚#sòÐT1ö­r(!hz—o Á‡5ºÊö²å=WÖr*Å {`­5�—¤Í–&{:ÆØ²x©cÜãåNäÌûP£ƒ½¾¾¾íË/·^ãÏðÏökøgû ü³ýþÙÞÞúaýÉöÖÛ?Ñ‹ PÞyÛØ]å@ÉþºƒlvŽxˆ˜ŸaÝ)EW9Ø[i朤nå˜ã�ûÀÒ›,' Ip å‘Tøþ~c£��X�>d_%Ý˪+r¯qv«ý_cD«g«%âwÌ9ØݧtC‘¡†¬}¹x¼‚ŽÚC?HñV‚o i&�”b+�òÃà8ÕBla6£¯òÍ�‹PhYÃTâà›Ýãæ§+&ÉFË®Z¼&Üt¦ý©7*©•àT *“º†êiVIq²õ·b£ÀoÝGÇ GÂÆ·dŒh‚lPŒžKŹ 4a°W©AyÕ–p>ÿlÙâ2Åxè.0¿/¦vw½¿>úÙ]꾨\XH…®½ ƒ‡Qɲy¬®J3LJƒ««ŠŽr 7ïâ’g¾ÝŠº„ÈûÂnrá;à*S\Jº»�•3„‰¡·˜à"÷íµ+u�[óˆ>4“Ôj®›få¹o�wŒI_ÉRk'Ï9ýò µI`'%í}¡Â|r³ë K:¤—t Í{¸9)\´KÖ—…„uïOh¨ê�.)’©Ý��\fž8¬äÍG‰«÷êÆYYþ ߺ¾¥‡¯=O_óã·‘»-Þ=½?ºþ‘³»xß4þ)]ÒAËDô[oõ{¾9é_›7=Ó«{ÔEs|sÕoþQ¿iùîà z#kèvûȜY<�¯�볉'¼ýmQ(è©¥¶(Y½.­Ò¢Lÿ'l5rIPÚ¼k€.$�…ƒ2Ù#³^«s’_ÿ`¿Þqh°fæ0øóË^o?Ü�r˜¹ƒÅG\a¦CÒåÅý<Gßõ‚_>�ÿXó(ü3�库K¸Š²ÔYásÓÎô©œpÈâ&\k#ŽÔ?ˆ¼m?ÆI4évÓ>(>§›´ º/ÄŠ ‰Ð®Ï  óA'jÀ­6¸ù…ŽYŸkµ:H¤Õ2,oÜ)8¡h¶ø ­é1¦P4H½Šq:I*·˜[ßq×M1$|¾?·¶â÷ðÖ Öïu\:4åòS cþ£™ÕÕ YéXyin¹šÆŸ�GH�|Oyt4¦ž×PŒg%_¨dò0‘±º )Œ·…œ8u” ©�úåf«üþºí ôF ¿ÃïSî›ÿåµÒûì .ØâVêë ) “~Àg+\Æ(cFÑ)·÷¼ßàê\Ô·£A3›üVù£kÚbž¼yàåΗ˜ý”ZhX$A±Š!a¼Ù¥©¬€ïX�¶:£+ß6J¸ƒžš³ÞZ¶.Æ ,ᮿ2 ½$ö„·Žh¿ÖÑ•lÙ»l ±Ù>]¥ øÆ‰¯góƒtËYeЇ�N&B‹ ‚ˆæ:Yl¸< 뎺.l©ûåK#.Vò£±Íû%9Œ[[5\åÔŠà§}íöµˆM Ã`¹è¶ûü§ÍZG®ö¨6´�¸‰¥h4¾»•;›¤4¬¶½³Ž¨Š6ä’+xŒÁ!‚ZdÂÒ·»m›|öÕçp±L�¼ã•�Ñòwæùû…¹Õ¬´¶’ß6RÝ�N«OÌõK˜{9e1Ã3²R䩯)I�¢†Ù½`Ì[Ë\$bžxô'ÆjIö±”@ Ý—¨‰=H껥 ]G w'N5¯]_oÌËù#bYvÖHÊO·ð˜tŒÕ�‡7µ Þ9:…§gײA_* -x¬ н {"S•äy4&� ªÌ*ÑÅ 4Î,—Ubÿ#ѳ=œB”Ä––‡X‘~ûÇ1»ß×”Æus|F´_©âµÊ„å›\\¯þÄ¿Œkÿ$Æ5A¾)ZÌÍ&k`¥,R·§Êd'×ÇMŠÊn“-�ÐoÒ_o¹©`ú¤ûQu¡ùµ<ö8cNè¬õì2Õ.Ž]öÖ€]²"ö¨’çÁ­ÏkyÔŒ{7E€=]’¨ž¹AßSrÜ„RóÝwêÚæXw&OC:»«ÛÓ n¤y¿yùiÿÕ˹½¬6-úÁ÷¤¸¿º ž¿zY Ä«×7/ìUí8ç5ãäiÔ~1û- §1âþˆ»Ñ–;e]1o¶8­<•ê³|Æ*�Z�˜NQÑtNR§¥à#SùÙëÒæ¬ëOÿw™Ãݼ­¶ÅîÌA„¨þo8 ]ötV€ Æ9õœ.¡”<�R¬³psÁÙå{»¼;*èøâw7ÙÇË'´BÄí)ºq_¾ÉÞÿÏg1þ?Í ÚÅ»þImªßb¸RòÇ=ìK¸Ãš¡ª³IÓTååùŠÀ)ôK uèÄË!ýÅN¼~ùòÕv4þÓööÖ›×Hw“l©ÞÅn"âaâ%jÔЃú3þÏ^h=4œûÐîEï§t)qVF¨–þþ‹ï¹Ö[ÌÈ|ÛtLnÑÜù»YÚÿeµü—Õò_V˧X-�îíí`ß#v~­ ”‘ÐYw™B;åŸÝ|§qbÊ<«î‹ “ø%µ§ÍÖ_“Ø+©€S�G´¨sEzm¡¼)V¶Ê«"¸H*’}œvnètL±êjF8ê·Œgx£MÐÕJZõmG_ÖÔã‚P$LùL±î–-ŠN1;ãLJ™�·²xTŒªÆžã’6µÀG«×D••"ð­—¤›#åjJf´ÞÁg¼ßõ2dz C•™w,Þüð’âŽS8?ºÐU5ŸÂ_d ¸+KÒìL÷QŸu‡WJEæ€ß˜ñ6 Ì³º”iãÜR}/�uÒ"¾5õX>ÑÆ�(Ú6 #+JªgÜs¯N«ÝI£‘à:»Ê�èöài?xGù8*ºx×ÙG5v–ËDŸà0ÎÕ¬§)JUÖÙ°Åi²©å{o¡);LFþìš×o·þ¸r V3k0�ï –‘qsb?ŒìZ–È«6L(~Dšl`ÝÔé�vQÆ'&íf¼Ðñýr2pí6X…VïÍI–ât‹N—@«×°(û0ý’š’3ú,ˆ¨rNæôÙ‡;L;clø´J«v®ãË5¤K³†Œ„ò8§L'¤• v�£í_ÒšS*¸[„þF}8xaÝ\ç5„\+Ѹvrïž)…’ùãT¨µíº�ëaµŠïLÖa©Å€çtR&žs¤;åÔ”jIsj8›¸£Æ»³>>’ƒfÂ<¥]9%bëËzè*ÕŸö$AmUÓ œâhî´æ–«eUÒ1oG¢kNR·âyZ”©Kt®YJ±ú!Pëš   Ý‹þ’ªBŠæeÙŒj‰Ð%LöJß[Lw22Ö!ñn���w¡aT,@}#µ�wP=WÃ4\¨~M`=Í{¸?6¢\ ˆù±M=Ïí1°ïv¯÷ë‹ïzƒ' ®·^-mú¯Ø@^1IªfV>ŽãÙG©*÷8Î"×} d[¥åw=»d�Ê]2'Ù…8𦢔à;¥Ëú&ÜÀlF)�A¬Q3ÏPîfêâüNæ„åu%j6cWñLQ> o$/Τ´r¹œf”¡SýÄTGn`· dóeߪÖáO-²@´þ€«x#øó½‘¸·;>ÑV­¢ë2»Žg©‡k]»ù¼Ïà7•h�=Sþä:ò`ƒ¡4˜r(±~žÈWЈfh[@µÐjÇÖMwhŠQêQ?¸�KÞ® cz($×Ùå£ãzB¬�Kzsä7'\ …L;w$ñêײղ¤ï›Uð̪zU§aœð¾´¡Ñ#ž©)b­7šù½KGü6Ò¬@›Ýi]zµy×4Ö»ªË™áVH¥î~£.¥¦9[]¤W÷×^·ÆêsåÈ×·�îrÆJçé3žj×XÛ�Èý}osÔ¬ƒ„Ò’ùéý<ëRqç Y„©Šæ{äÌ•Üz’ˆûhI5o$*ý~³šf”‡¤—kÌ’á†�ôÎFËG#±Z¢×)š„‘<ݼ[j³Ñ€5*¹P2–æ2|'f‹˜¢Á,–FÙ¾*iKsmA¾¥“ˆŠ*—Œèä•€¹?Út< α…u‚0ÍÁÔ¾ó9~ò ÉG¥cP ƒ­F­<–aNÁ”¸J²©ïa,|º®‚ãmÞŒÕ�Pko9p¥:±ý±¨Ñ p»û¶2ß'ao–ÇŸ<=ù‰ÎÙUssuO±û<ùWbÂÂÐ[qå† ñ7‹—ÜnŒº²R¼�Y 0©Ñ,’¡~ÐèÔwÏ’{;9Éædéé÷ZÕÄixcDZÖ’8÷.±í«šÏ¦šžÓ×ú—<½›Ü½±¾gfouÐ9y8&ªìÖ‘J•W³…aü Ü��Lä@ ·ˆ½Bvò_ ø55­‹K•Á '7Äbè\.“ûÁ3¼s¹À§9].˜Q¹Y;\Î(ø¡sTáb€™9OTz%æ -a«hÈéæ2Aü\Æú/ûyÿñå6šcoªØ„y™šMdy��ˆFZbN’Z~‡±c ©6ò‹ú(·÷Š×ð+þûjOü^³?¶0vöØû.3“ëÑzh“t�¸.W'F½Øp ?bA¸ »[‡p I‹˜u“r1{kÛ~|ÂŽ×*ÖÁs þTËW6°É¬NjYë—4”ZÍ5#²GßÊmê¡ë×jmØ·-šº;]ýÏßÛF’œt¨{[ ·n �þzü%Ý_+9ˆÑ·£k rqÀœ’Ñ6ÛÖ—Þâ~IoÝ‹ß*àìLo” �sžÆ\âœ+®’``¾8½ B0¨aðÃ1KŽèÄ�³ÿ’.ÂÏñ„ D&¤cð�ÖƒP’"¯KŠâcS.¨txö&U½×�Œ3œ�µXÔÑú=öã×Ý?gX,@ œÄeÑ×Û­ÁY4RÑí /€•¬dH‚@jŒÊ/b(u)å[p�.ì!âS»|À¿ìóÿ×Ùç½pÊÓ0òÍQ²Ò_|¹‘ݪhÐmÇ×]šŠ¸u«c�_;�®“›,KW™-é®Þü®ƒFdòšå¿ƒÛØÕŠ÷ ±ÒÜOµ¥×pq†ïsôÓíT°ÔˆÕÓ¼‘O¡ÙÅÑåñß~ötá?!Í>VNH»áøâ+œó^„#Uh{¤¾ÖŸðaÅ~RûžâKh'Ã'7k÷4ÒŒ¹œwÓo¶™Ïà'û ™Sî¶Éú>ÑnH¾È³�6ûÚ¡X�½µŽÛ•CøÄa·Û•k+pgûÖ�ºûé¶Îo¸í_á)xÊ–‹æ¶ù?i»¿Þ{ð„­v wÓmþz¿Áïá082ž‚Æ4|õ$O!HLè0Á?ÅCpFöòCz Éz_åøðÛ8öuêbdË TÏÖë1锵[³£òDN‚P¥êf(—ûDy£¨P v‰?cmÉBÜ…?¶»VïÄ>°æŒjB­h·ÄÆ ì;¯bEèØÐ#QoŽ“Þ6ÓiW§ì^7öH\ûÿ7z"d½Ü¹›¹$¬±<7åW’,Õ Š@üDùT/Æà·¿|ž¾Áÿ‘½Ìf”Kœ•v4M»r�"jÍJjÒßܙѬjº¹Kc­ÝS;kN�7ôjì~«GÃÙÁ×y3~fÁÉ“½V} �Êë¦:ñWõÜ*ðÛþHg÷äÉþ‹µQu©Ä¸Ú\X”$Ö»aN2ö£ñ7:äl8í8,Lí›Ó6P}³›DC±‹LiCë¬ß×]þ�_ÈÃîp‹¬»DÜÚo«iÝkPÿ*�‰r¾pôÇì%æ}=ú v¬ƒHæ=~¤‘IæžT$Ü7�ˆaÄbD”Û~,n²»ô0ÎÝ)6G «`F‚J�ÖÐ"~Pßõ~Ú5æ^¹Úâ»{?ÇŠc¾%ßͼ_‚*�l?b–—F¨z„3¿¸~Õ.24*^«fšU¨g�…pÑÓm©hç¡’d/A¶³Ê„Ó7�F#Sš~±‚o_ئÝËç^Öã3H2xã">€Ð7ˆB¬Ù‹2u¶©··î]Q ©…]bG…çgž-`�,A·þ¾C»‰´vÃ#@“wñœŽ6 £�áøÁ]ì¹É*5lR–J2ýG+À26æ‘çwU±^SR±‰€="fß^½ô �ª�­0ñ�Š4Ñ�üÛŽ9©Tßã3ˆ¤¼”¨hÝé]ƒƒdc¡´ngݤ¶fмAEëN¾¸ ÃiŒÎóÙhÞ Ÿܾ‡|VòMAȸ)�*�Aõ@ÙŽïÝÁ=K»ÀZÁ§*�#ÞxÌ¡[þÉ9Õ¬º£5%ô5¶¾rU††ÊJü¹u_¦ 5§ʼI”ìÒC;¡~ *Ý {²ÇÕý™�þì}ðÓùÅÁ²Ý*Ï=Ù¹ïÞïõtŽÎÜk_sg�‘\œÏZ/ž“&h®10@>­dù®æ�³i�ŀʵÐêÏkŸ])tcò€ÚvBÛ”´1ŒlÝGnI¼˜>ï2Uçr£¨S§ãkÄYovÍnÓ6X;âݤ›÷‚{hu’Çż•­}`†RÀ=5…[4鸉„™°± u»�„}¬vìÜSdE™‡ÓiMDN~#ua„]Pfs+£ù[ {ð1›Ù&ááNsèe ~®²ká‘Ř©UÍÛYɘðʦ ýßPÎ\–—ü«ï.Èë=„Ÿu®µ”¸˜dIµH÷´L© -85�@—Â8Š*)½€gÁåÁèýÉÕÎÎUptðáülŸØ¢nzŒåN}Ð'¬òÀ[Xy‹ÔgìnÃ:/sôÚ×.�>° ¬• \¯�j§<‹˜,Y“$«¢>¼ jÌi”wÉÿZÅÆ™³Êá‡`²×&·Ú)J¹v-”#nI�l÷ÏvðJË¿&l¨ùÜ#„¤XPÐ]Í>j�€}V#*±ýØ‘XH^¬8­!v¼4Ë)Ĉ]¼a×uÎâùE[ǘ~Œxìÿºèõ„­^´$~“ÝïÞp ú]è$®\ÝŸÄ­™à Î;�>Kw'0¢ž®(SL�䜚Ӓ¬VÌä{-yä±ã°1¥«ŽzQeE‡qYåK,$áw?£ P½|¿Õêüæ³/6£­Ÿ35oÕé9tG† äœþU”W8„E— ð¿�•@›Hɫ׳÷êåÂã%fxºW/±¶A%ÖËͪpo^]ûÍËö¢Ùo^ÖõµßtŒôMc¤›Vß´jwƒ"å÷Ž•{^;Š‹Ò˜AÆ÷×Ræ¦�ò¥~ˆÞ+€'ryê´¼_¶î?<Þ¬7ͦû?0ƒÔ|·ñEÞ!>‰Ö�ÛØÂ�:ÿUÉxä’c°£øÁÍ‚q „ýÃ寶Ið IÆ‚úÀ÷x¡Ï2¼¶=ˆ*΢+nCw5ZyªpÁÅOÚÊ·Ôô1W÷Š,Üt»z H”!^ñÛÁÿZÈéøšý;~—�oþº+æ“«G¾õ“ÇîÚ-ô=�or±æIzé¤ @³5‚d³ŸõN|µP,ðyŒ©Œ9Ÿ´vSWÃû`N™šXƒ ?¿Ð`ôuºúcWmeUÌM r«ôœ…rߨOG°Þã„ÐR]ø“XZæ«’d=lȶr K¯$ª¡SDÅdIrØ~.Ïbm›DâKÄB¹A‘#öȧps±Eb¹Z ñIÀ•t‘•v¾¢DS»¬GüJ…‚3Œßq_NI.Ý]‘C¡}Á(hzÅî øy®ÐtÑ%‡¤Ÿ›z‹ª„BŸ <�E»?�Èö{º‹Œñ4ÜWû)î²<§McáfïxÿÒ)e¤² <8=D®À¥Î§nÈ›³z�MÊ …QúZ=ðXœÛ ¿¬ ÃêuÉÕ€¤<C˜p�#òÚ»+â™Ù·�±„…£×¨àAs¬ñ7.Â܃'gz�7Ú¤6=öW®›aü°Õt„RÝÆ�ë†NýŠvœT·ÿø‹¦=¹ÏD‡NÓ UPø/ªÅzÌ8žö6P/ ("nÆr‚ODÿ�¿`#iŒèÉ Ð¼&BO)¤zø•áÇ© ?N7ûð_Û?ŒŸP2�Å €¾ÅdÜÓs¸ˆ>®šÉ6õ <¥k7 cçî&,û� ó±0ú5á¯jÑ3L•F]{çZJlÕµ².­Õ€²gkV%xëˆÊÑ„æ|�¬þÂO{ôŸža&=9©=”£P­ìÏŒc”(¸XI;, d[Û0oø~ê1@_oâ�I²üBÿ…ßKð¯È —M²„°¸é§U3ºÚŒ²ãý¢V~hˆ?Â�ž|Ù#|lLضÂÒ0„¥ÙU‹¨"®é f–6ҳ˕5!ŒÄê:ìq©,[Y¹/lî<|عòÒO$WJq&ýÅ%"òçnÍOóäi–/@ ZuÆ@ÿ,¦ ¹ýÔ /¹Ÿ�vDÞjY/¹rŸ‰þŽ UçYõÈð{]¨Éu¸Z]ª VÛº¦êÝ ¨q b�º¾}í´hRÌ¥Š0Äu •ŽE,õÚºnòuܾ¾ êìºe¸¸ž–Ëk„í¨#_ã¿;+‰ ó×Édv>‹ŽÓ:¼ºð hWn–×ñ]¤åý5ú sï2Ië°±® lòÝEp,}ÔÝà¯éYaF¹uQÀù÷†®mŒX A#k Ù Š±4×7 6åô“JœÖ^bdu}öTZž�‚†ë½¤Ùu÷´Ó|ý�)4�Fo‚½‹÷ƒ˜€"Éx ÂA°ƒ)TÚ"H¼,åßNßoýôá´°Ä;O�Z®ç¢CÁˆ[ÃÙ¡n’å÷ÌA7ß  ‚V_¢lBÀø>ñY|,ðóN+=¶"±‘ŸÑ*qâ$ç£ö2KME²æ›¾’_ÙêÛHQ>‚ë=«ÈáfâóáòJ®'$„ €`&æd u¼þht2 V–±À^ú†v !qKƒˆdPåúÊS�׈ª–›0º16žì‘·Ð©“ý”%ÙbÁ�âæªãÏö¹ú¶ÛO ˆ(ñ)ô¹C¶sºÎLŒ1 ,ŒŽ†gåǵj�@þƒ�Ô\”¾î ðŒGDTIñ‚Û ýà³ý˜M§®^*ôcô)êpÇo.zCŠÌ·–ò2Eºª;] )IV4‹Ó4Ê:áq�Ɉ¹w:€LE±P¯Á£õç¦ÈýÑà¤ÙŒ8�Ĥ‰€‘‚&AÚ)üHa™¾ºœëˆÙÕ �L¡½�ð©3�¡qg¹�Å$ì{mEãb³˜ÏÆ(&°bIàì·U�”ï5AüdŠÓn‚ì‡ýv-; %Ðî=¦�€NËÆhZ¢!çA˜‹SÔ­fhËò¯º.ÞÃ[ÔÕæª*ËMëq]ó‡¹/÷|~ª©4Æe6;OÐüa ²-®dÎlTÅ[R²Ýí}8`&F¿«¦ã„�/,›Ã¯Tyßûö$”â–R¥BÞÅÊKµZÓÈ*ˆÉ'­Ç$Ú¿*Vž¶^ˆM=Q9®ö³ çÀùÖnMÉg¼@�€å] l¸Ã+> qÊìZjÈ÷Á€»Q©¯,ƱYhó€Ã<—_ûoþüÆßé§ýòÅ£Á!4ô_ì.za�Òå¤ìý»~Øö0õ?ÿg/#cOï/A=ÿ¦óî°ì�xiòïÛê×_oQ-þ vÒÏÿòÈ&¡4é�P æ„Ý{1+œ]/ÐéÿÅÆøß»Lñ‰aø~àBr•ÎzÃb™ÄåóÞuï…éptC&¬‡l]¡»!tÿ…ÿÝæCh;t6;E›ÔCm  ´€ð>¼Þx›ª Ø?ac_O‘¼ð ÆA K'× _2…%ñuXͪ˜èKKà€c•_gó2Ãÿ¦°‰ô‡HMèÇ·d:ðAüØõ‚¿¢¿�ŸÀ/`çØ-v‰½5:ʰ,´;äèÿë}§¾{þê/ù‹úòåOüõ׿¼~ù#¶ ÐÂÎbìÍÿÆ(X(²€o¿êß«0çŸßöÉÔ…’×ÉÕvïÝ»íÅ¢×?¹ÉÏÛE¿n÷ö÷§§ƒÿ„àWü=8…ý‡æ_Ý =ˆàŸ`ý)ž‚„”tÎm?N+˜FBÿV�åîß B‚Á³Ý‡�#Õ�ÀHP„¤¿.ø¯èÿyµcîý[dÂú7ü]þý›zF?Güw$Ã>0 ü;»ûû§ÒaH¶àÓSî/dÓ¿ç§ŸðâêßßÓÃO þïrÌÊ¡ !eM©çyÎ~ÒÿÃK8D¿>/Ÿ¿ýóo¿ñâ×_ÿ÷‹ÿ¶¶þGPdU>Q§Àb€Ÿ¿¿<ùK‘O®ãWJ¯Ó„ÿ[~†^ßD¯¿©TøöÍ_ÿðúûá§b¸—ÿ?PKÒV1]<Ü€#™âu`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_es_i18n_txt.1532b88100f49a6d.jsUT ëÆ«jëÆ«jux 臼\ÿs9²ÿWæñÃ=û…x/ok+wlåmŒ ˜õ`ç6Ù­=1#@É Íûò¿¿î–0é!Ù½ª«Ú/µ¤V÷§¿é '¹Ìfïk÷rºÉÇËÜè•)Ò¾´ÆµßÞoþ׿Þÿvz¶rùâäýûZn“ßÕ«¿éßeîÿ_<Mýéõë×?üÐ8‘u]·§oþïÉž¼þþo?¼>ýq-lT¼™9�Êh$8}²²pVGú§MTk¼zóFÂ-k�ðÕçºzÖ©nëE]�>©ÙÉÓ糅ȯïõØš•´Åæ,YvRÔåéi¹x/ûQÿå/'òåíyo,Œ£N $"R@÷Sñ^üÖ(ÎhÒÏuq0'Í÷_¶VþU>£˜«XXsiyu¬5ö¤Öú¿‹H¬VÙ&2³Y.‹Fí…}Q‹  ;wK©‹èŸµúEíŸÑ½*‘6ú¥†ï­‚%Dk‘9Õ^\Æ×£³¼°JÏÕlS½¨�Õ¶ŒË—À¨a%Z! ’ùIƒH:,ôGy&VÆù›'AÃä�'‘¦ÓŸkcå@åEc7C9~­ùëÃì•Hˆ3Êà u¨²$“B»×s –+j¨½P'ò,1Nõ¿‚JŸþÚ¨Õê ùFMf%dà#2¹û"¯}>ý\Oác!¹±;™Z* ƒÃš—BCê'�£¹ºèº,k&‰Ìs®wÛèD¦–„$&JÌr3êmøÕÀhð…Ì£TFsëVH¼4k91­ lˆë2„æ ¶‰MK`nÛï4ö•nÓíg'p…J³‚�6’:J€ %¢w=ß./Í/�fB'ØÑ«…ér]X‘£üH(@i%Nr\î7²PVpb·2/„]k–Ç×w„Âá ©ÌAÏ–F¹¶jàÈŽ÷?Ka“…ZïP>ç‘ #K�Ï<››˜^fÚb9E ѯòü ^a>¡ûÀ$<¯\÷ ‰¡oa7sã×Ëõí£L èl· vZD ç\�E¯[hžÈ6+þC.çΪT¤0ÉZÉû®ÊØ î1AN°©Ó®Èr96¹*ÔZ²úïè5® M(¡78á\ßÔ¯”©Dêœ�u€M‰BegJ³V×Ñ`�è´X²cŒÌrj%N;ÃÍ=¥ìâI‚p6çbÃõ™˜ÔŸÁ¿)è"ˆø™²¼Ë[µ¤x63Î Vµ[þ eÍNy§¤õ¦• ~ž_R‘jiMï nOx' +f8?§§˜˜n%ç2Ê�à¹Þ²jf‘,†FóËFƒ©ˆ–žXÇ W¤æ^³7ƒ¸*怙E9¸%¹¾Àº¨pÒ„x•¨ÃN¹€æŠuÄh\S‘z'°n– ÌB{W%»s1iŽ4ÅBYv˜‰´‰´žÄÙ¼b KXD �Öd¬ Xµ© `ή¢GF>ìU©íàÄÄ–¦Fÿ«Aб3} ‡š¡·ñ€©ð L]ÈÿW HŽò„”#'«D9¬�(ïeª«©À'Ê¿ÛÄ�go9˜ %ÖhÅ:³¦oм(2.¯äX‹ÇÖ¶r=~7ú÷„PÅ»½/:G×úåØÓç4�†mfæ*©ÈxņÚûÝp˜¤Rl(JÆØ²ãòA™"À³–@ÍMlÞõ�XŸ³{Œ [:0=ëóê˜ÛÔ^HH–A³ÍƒþJò´6AÆá}Ní…¸)ˆ‹²îÉf%ëOÀŸx4ª~œ~h†Y"3û¨= ®=ÿL8ö�Éõ™ÈW&94Œo˜¢4•2OÙ·”Ñ Ò)$˜Óá…ùŒa’ˆ�2c1@5@51øih  4ž /ÃdzŒqta²”Ï�kR—(JÅ«V‰Ï,HFCt\NäCUM‘¾jž÷o¢þø»ØA4F+V«oŸ±?>ð¹É®fÙ² X)˜õDLÿÄ¡%TÊ«ùÈð¹´O s¹‚,PvT7@�Ž �Œrb ‚' YhSˆ »¨Ý?¿ñ|�µq2 Û”k¼*æ:Y´rP%z˜ON ‹ñ/Bv¡h…`Pr –ö�ÈÐR~+ó•LÔL¡=ëdçNaV¶\™³ÀÁW¸¨Ã„ ä“6*Ø¥lãíùÕ@@+¦Æ}òÚløŽÄÔ*Z«¦Èïâøb¿>…¶²ƒ˜*úaPˆi&'h£àehç¡ »ž?9:hjEŒ…)=„ú´Ï'n€$¤M£=zòkW|�>™"rÀà‘ÑŠÏGòc£úrôàÃxdXé�ÒH™Ê™pYÑBç ifãɬB½iŸ6øªN`î({¶LB‡R”Å­£ÔÎÑ1Žxäás´G+ô~Ép'¥œ �Ö¤VÍ4•¬ ûã`¤ÚJð¦tK9 í¡…O‡´ˆ(tªç´¡Ôöö|t_i²‚ªÁ¾Ê¢ôC~ÁaŨ‡Û>8uRU1~{ŒJçüŒaï™Çïa@÷sF‚ÁUŠ{üÅ0GvNÀÛì8)Óÿe¾¥e«7Ä'ÃÍ–À^ï·CáËq¿*€Fí`í Ú/ÚÍû�’.±óŰ �.Ÿ]mCyàÆÓLe`j­MŸ�¦]hÅí!Œ?”V-¤€¨M6È:¦ÊÌCWd��”‰É±\€²ž‰1PèñûÉ{ñ¦Ì¤¶© ƽýÈ¥ x§Â‡ûK½ŸËŒH‡›fmaq¿a‰Ý¼?Û…–§¯Ä÷cy_ÉTÎ{™H‰Ý‚>ƒÿ3Ñó€�$$§Çß2˜½çQï?½íþ­•ìæ^<þ�­ãy”ÿs 9Ìž§ ÿé¥ü;*9Ìa0AÆ�¯ØïO…9Ÿówp 3¡É*ób}„T¡ðÁmjŸí¦*_­ÀuAš`´w älí¦ñÔà·.§0µÙv ®ß·_WŒoüð?W0Š+±…Ïj›7üs‰ÕQÄl%–FDM|éé&ìH3©ý¶²Doy^Ü”ZÿÁÆ �~"î4ß±#ʹYûÅ·Z,)¨8D‘‹Â–Ðó ‚g¾@ˆ-ÜhÌæŠf‹E^ËYHðEÔ9–7-x-—A¨"ùµ.x^V*Z7‹G˜�ÂöK¶ÐF½Y´Æ7öÀd£åß‘�…m r|o­Û\Hâ‚EuËdjíWɺe´PVÖ#d¨ Ÿ¤„øLèi±8oY‘+âBÛ AΣ½Íb»²4 ÓgJn/$-êœõ}ÍL.CŒ;g}Îù…»xèÎY垃ܗÂú9XíÑœ—ì9«�gü–Ô¤Ís>Š@LôqªÃZY'qð´·Ãgyaüš;¬‘tæ�õ¡–:,V:VVRwÖWuò•¯¥‘‚õVø¼*~»¬mu•ÆHJ\vYÍtÕÔJ÷ˆÉ E†Ñ�ÔeUƒùÖû]¼zC¡5+'DÖEö,ú\š„UuO;÷L°N´çÄF``GfeN„,&zŽÎÓå)X_Ù[xÌöX}öÔ’«‚.hõXØaîtÞcõÕÁ‹õX'ØsJ0{ãŠÅ¦"s+ÔY��Ý~€ ¨0�Ê Oï±ÚíY”ËÚ@�;…˜ØÙHFŠ C'û:½WÉ¢lÃ1X+vñ®eÐ=Ö%ÅYë×ò²¥ò\8¤b]iÏm¼Ú.X;º€ð]Á�‚•9P¤ŽÎüê|h� íEuÁ.óB(Ì]0i¾`WyáôܖޢϚAj­Òbû¬!ô-B‹ÚYôõs+$ª»Ï ÞGz´×>+‰~€nŸuiÁoÜlYå³5¬~× &¬¬jÁÏIÐâû,DûV|ÂFVÖ}[f�}–¸Œ’KVý"T@—¬/¡*'pÉJé"¡t—�=Ú…Hr©|êtilð%k´—bUºÉ+–§«Pƒ^±~ëJY(rw5óë»ðZ›ÙÐ(¬÷‚QÔTPpÅghfé¾ëW,6°h[âcöýTdPŒT¸QsÅ®»m Æ:FÆÒñ«òƒŒ6¢~HÍ:…+wæ†Í¬7 ˜PË­¼Ø äJ<Š{R°n ¨0°Ñm€=Ì#›Æ€Ì#—”¶?`u3P2YRç…¯-¬#‹­ŠB¤qXAÔTúêuÀÚÎ@æ¦X»¬é*b  �=`ýÚÀ=ÈåÔYª?lZ=�e¦6`õO€ä�Å8*/dzYtCæCÌâ°•Å4͑Ѕ”!‹h螪5yÊ!ë¡€@Ü“Øqˆ‘òÁÈ!k8€Ï†¬ïšGÌ"?9”åˆ5œ‘Xñf3rr •¥È<ª�޵…|N÷nG¬!PZz�™ ÷F¬ŒÔ<8¦ëG t+æŽ(XL�±ðNs‰7?�;±�NœœÓ8,(GrE)ñˆÅ×t�‰æˆEÆHy�³:ñ}'Ëíšµ¾ëmT³jƒ©,ÃþÓ˜UÈØo£`;«�1X,å‘ûјÕʘòê#Þ·¥Ç˜uT]•©U(EǬ�‹�{uÌëÑdocV@èWÇ2µ¸Û8D„geê4æ3Vr2cU$BY"c�o¼Õ�YÏ1ÆaŸ~Ì:¼Eàæ„Ÿ1kù0„OƬ]�=È1ûü™UÿÏ——7¬êo¤ÓÛË€7|zêÀ§—ÉÆ Ø ­w 7,ÈoÂöé »Àà³ü7­€±£X¸4ÔC1›9y­Å‚ö¹ýzb>�’È´3º@\�ÙðÓ\¹˜[ìB�³V+=+*bc~•’¸Næ_ÃĬëä™Y‡,>f÷zâµÈ¦Â¦€ëKÊ6’Xf-éYÊBc ŠŠ1l 0ÞEi<‡•†…±˜²Õ˜Ïð1é!tÇ,¸b³ ¥UÌY �SS9óÈ šÚÛ6ˆY;C‰›hbü•�ؘŠg�(ÚøˆÙ°ÜÉPë°m³¡÷0k‹Y3�•�U1ëèc'Õ¶�9$˜8›dªŸÂNøC‚Ý·Ÿ°þ|WtçQ8߃ |;™Å„…õÄPR>a!={+`á:µïÍ',N'æ#<Œ˜™5etmñJ(kÂbõÏa÷¦c:¡ùˆüd¬´&Ÿ0Í'W:Ç ‹¼ ˜îño~SáEÈÂmâð•)6³Ž$|¿] ‹£‰Ð�!“½e�émbËvV÷óà‹o+÷{òÄ Õtj>Ðýb(€Ê-ãíYýmÅ&ø!k-·Ö…˜vË®óöq*÷‘tǼ)çŸOdÑ�À[ ä§îªªê蟬ô4€Eù=ä�œÜ±QàœÛ#¤(°;Vž^`kžØƒÐ¦»].?2ëûïözlÏðózDãa/ËwJÞYÞ±qøNh' Ø[Ö/¼…jQ¡séºÂ‘ß[}·ZÿÁð•É =5ü…Ú/øþ[+ê¨�)¨ž{Çê4ø{:ÞD"¦ïÊýðw¬½SË©˜:ºœð]L ÄP|^±V¹±Û§ÇF¬0ŽbTøÊ} ¼R‡— ÷é^q„ÿ�Cb�à“L¼ T¾¯öWƒðÆ�¦·&öEÚÞ€ÿË*½ãóWÙ3ºb>Ssg·�üóã쓃p-�Ÿ¾ÚÞ󡫨ù_ÑUñÜM'U׎è,·•ô#%K÷ƒ}11%”Ôkp¥Sy—©¿„u¶‰š^;tÃh!è=Œ„숿ªÞYÓÓôÝÐÔn9•özF_æŸë b~ZÕ³·�úð¡3GxŽowÛÇ;žxb8Ò |ÕÓ(ŸõÔ @ûtkb( }®/ÄZŽä}ÿ£ˆ€ ¨²@ÈjŸëÝúžå dþ6iŸî†)=¥”ß„÷E•¯äÙ(Ÿ¼O7Í0Ù‘‹¡ ‘Î0kè‘ì_h݃4Ïôù³÷Kßvz«Ò¹díõüðáS* HX¶2â±°“M yjÅ ::™¦§ñއð�œSˆÈ¥WdÉÛ©šÍ$¾“÷_»e»ƒ*޾ßI ¿S½6UXwâE:?-R™\‚9Â4¾iñg"üR€L�úâ}äfRåÔúzEY¦ü³u¿:/¡#ØÊ‰ì_�TãÛº„I†\Û»ê\^/¬ÞÏA^¿¹+Áw”T;Ž}+Œ/Þ?y­åãéömËIíû‚-¡à?¥/þWaªå³}dÞtƒ³ã/|÷ª½Ü¤©Óf&)�›BÂo–¥�>öí“YL„b#ðE$“ÿßÞ»v·�œé¢ßϯÀpÖLÛÓ4}íNZ™¤MI6wtkQvŸìíYZ Q°A€YlÙÿý¼·º¬ Û™dï�ž5±l…º¾õ^Ÿ‡ÊCáJ£Œñ˜ëE—:‡¾¡]Š•š �°Ž ˃�* (AçGKl/R‚–mA£«àÄ<.²Q`ú¦Ë*«PJY~Ê‚|Q¥tû&ޝéöÒ%ØàeGzø Jþçº0U�ï§1!ø€X„. üÉçPT50¨ÈåÅJë×[8ýK¼æ ¤se”oÔæ˜ä²vx }¥mWâWø¡Ogªœ”Dcž~µ­3Ú9ÿBP-Eµ‰¡/‹ø2Ül@F”�5cLf™uUÅÅopø øß°T6ÄÇx."'fr<ƒ:K^‡˜TdSͺºMÀº›Áu‹ÇVN—לQ½Â×ìnµÍB¿‘�®7 Œ\J‰çÍrК“MÙƒ’r*XÌ4heC˜óP4Á A? R§¬ Ð׊‡FjPVÐUh†ö´^áþ˃ÙøõlQ ¶Ø¾'ÖÞ‰`ËS©ŸÚAëîmZæs8˜Ÿì/v-‹Øv8Tûµ¶Uñ¾‚f@–ÄÑ%ÌÎìV=½¸E`–&‹�h^qœ¾ë¸¢ š i^æ›GûôfN²TìÛç?>ÕGóÄ·¹Ü Ï\lb«±w· dØ:ºý Ïçõ¶‡´Þh˜¯“‹`B¸jØž¨…![€{F¡�8ILÍPFŠñ,Óœ3w¤ª©*EAJVp"ÑX”7`*n‚<6ü٥жØö®�(” þF½�3*¾¦íت€u·Äƒ7EëÀ;¥.õá ndÍÙC'^ij˜Ö[<éËÆ>nÐÁM¯Öõƒ7¤uÃÈâÊò¨à¡ù(ÕB¦Ö‚m=¬(âÔ~)6‡Ã¨´yÁ1úŒ—:à¶INv®6ÕÜ‚ZØÐôX7j�‹�º¸Lȶ€‘ê'è®4oŠ@IÃb™ƒ|»©âô†‘ �¢Z7.0õ èàQŒÃº “­¨ÃD±xë*ýƦd)ý¨r ~Á…õ¸ù¡{k>�XC¯ú—¬¸´Ùêb"�ofºK`çnÀVs»F×`uüÑŠcÎ×qê|òï¨\ÃFÈA 8}f¯Õ/¹ùUœ»½<' âfUSÎ õtCn/Ö÷àרę‘Ëüê2�²ãO­kPKöÍÚܪî£[ 3bÈ�‹´ÚÂë¥%©ÐÒB†¶2h] ¥RwÔùÝÏgu™ŽRܼJfþ�ªVã GÌGR~QwÅ� ²/g5¥W•v©6Övr�¡À.©LŽJëÝ6¹»û¬^,A$í^®Y¬êëñÊ%¢¡›·a�e¬�3¼‚9”÷Õ£‡Á'{û[>qÚ˘ ÿ©S�ôvTƒ´Î`¿÷õ¬®Š^*ÚË?΄¾)+ìGçt‡éǰˆ�úÕ6wއ?óÄX_Q¡´=9�¤º�Ýá½H÷{r!…ËêðâlÌf¯‡ÁÙ)ü4=ÃÿÂí2z¸c‰� �,ElÎpo¹3³$MŒ Çrž+¼\ Y=ãeMõAÔ…³€âÝ’!|/å¥ è6¶²œ�›½!‘Ú‡ØÓ^É’¾R lüÕå5\&]«ôŸJví¾b'Ø<=~رdꕌ… }§Þÿ´õpÛ 7zsC²¥€È kl­ æcØûv?²¦ý->€Þ‡�¼>¸¤(›gEk¥V°B�/«ŽgÃZ –¤¸Æ ô4†ì»¥8Ÿ �À&Ï8«˜È““òˆÃ’0… ªœŽú–ƒš@¨ ûð>ü×ñaë½ÕxýÎqVíÝQüÖáPç÷žš0º/'0R°T蟄?2gDôúëpkÕ0\bàmãëúêŒaüP<óç�»[æ¹0ètMó‹éJ+0Š+çÑ:†ßà—×¹;J8]!0O(°BÕ£\ eÒ¹‹MEV¾- ÀéÞ„›Jõ÷®¬æ~߉‰Ó+œ.ðX*´Ð:i/Q�¸,áPLÐÝ×›­líÎÖÆ y®eB{�‚Må¼µÚjQ#xediî=_Vü¥u’öcØû‰Â�ò‚’¨ÄJÛh‹ Z®²‚4·öCáy–/:;c=†‡‡ÓH¢¶Gª+XÒ9° "\ðL ªËœ¯x’Ê9!ŒÁÍ^òëPï.¼S]&3ˆaZ¹’�žíØ M:Z›‘O!!A‚—;e¨Xxëê‹«¯ ;_ CY`-_èixóm �üa¾¾:¼5ã®G~�8Kˆ¹ÁýY¾Ü0Ãæî3¸®ÃeÈ‚ Š7ÎjžóÝGAYlçÓ<ß0 e½'ÏÝ×ü –¡Ë²ý�CLì œ/Ó«´Ù-!¥ÛÓV„ñÉOr±5>ýÂ)XÑØ€¹½k¦;-‹i¶®6-Ѻ7ÎY4ý£«œÜ²ñ-9ÃPiÆ’ öÞ¾ �þ=…[•:àÙ›gµ½AÆ\šÔ r'¬ù2çÄK�ààªbâëvðÖIs0­÷µîÃÎ&ïŒ$ÀËj³É³Ä`iÅú&Óƒˆ´˜ç‘Ó—x`CÔêÙ/1Ö–hÄ)‡[¯5}ì—J…Ì­ èj‡ø!Þ¶n§�æg`?ïßSö+‡³{=gfJYÏø÷^{¦­òJ†wtƒÙ7�º?å’’J ÷µºpkwÁCä´Ëëö©¢‰¯mû%ÿ|É{}–‹•˜ÎÀ1gÊa®).THR3tWÕ¨M˜‚áº1 bü3Çõ ÿ`nïá¦mG¬ÖEÏÙ4‘‹HåÄ”p .1 ËÞ5q»íÔtÉâàÛpž††` çæþïn¡eÞÅU3Å̈� ¦ P†…��¨ž1Є dõuÚw\%>€L¥ÁYFt_“î€?I¾ãGÕ n¬](é7wS=XÈÝ`H:¼ƒpŽh—œxJ&èFÅÑ„™[¤ÙéµtáõL%¤Es>‚xýv­Êº*�‚ƒ~C¹¥*‘N-¿sÚ5YÐýæl±12OœIR^Ò²âú¸!X2ǦJ}éHïžÅÿPO–ƒ\f‹Èr<¬Jó÷ñ&ß]øó2¯œ}x=>ĬÓîb9¨sB‘ê0‹7ÞSbÇXª(4D»/â+�ÎØ–9[ú4Òêùï,¯} ~ˆùàH³ò‰¥·aš['‡ž‚VUx_x­s嬗àv —±ß/geøS«`T:áHo÷�’�V,î,0ú»Yðy¦-ùk«tœØ‚±Œ7ðÜÒ}®8�~ÀW&è.¼W·òÓ0¬¹ÝMºF; EœÏq¡xtnDx€©Fg²> ˜Nʹ�xÚÙˆÞ1D+9$./Æ©†=ÂýäœbÊÁ%M:Élïõ5,}ÙyL@…~ž8¹‰£}hÞ—š¯¿€«”o¡Jm¸3öÝ-P‡i‰ñr🌗• 3 ˆú¤ÇT°±Õ‚FrI ©Axƒe^ Mk‰ó…ǧòe·¯…sóbà6¨©ì1F{*y’uâ«nØçªi‚ /µ°> ÝdUçìV•‘ Î^Ÿµ o}Ó¢ø!Wµ¼‡íì<³e%áxq1]ŽÇ€Yá¸&xzè¿»òV�4öáßpêzŒ $yé7Ì`ÿk“„ïÞB‹pÿÆá0bÜú Ú 9%l’MxÁ ¿‘? å¬Gó­s'½ÔÅ"»«qç�?K%ÁНº«Z®†}æËÜs�«'Õ=cùÝüñ’Ïãgm!À¸ÕQ»ó)³5õar~ {§h¬Q­ÀgëN2wǺ*–ñØ/3Î*Ê¢ièüt•”÷V×Sºa´Ni)}[¡¯Ã0.ò}&×pk­’€v¿K\�›Ž$ü¯—RnhIj‹�SXÉ×Ã$NÝ”èÆ!7œ–¶üƽg‹(M °ü �[“r ¥èB/—MP+Áƒã—µjîíŠt^U2(Múåvã®X™„øa‰h†é ú—…«„å‹Ô€wžõn刘Θô¨^Y½–‚_ZÓF½ÏðŽ\ÅEÎ0‡ëzJÙ)>û´5D¬WøùŒV[£ó“’Þëðµœ8¾;—ßq}v¾c êNÍð¡öUy›R^­à�I˜’C@0÷˜Aä=:¿(öÙ�IÆØ÷—WÄ¢�­\¯A\øXK(Ø&›º)LtsÞÅc²+¨¿Rö‰ºaJºî¥À©¢EçµóÀ«�Ì“òu›jãÑ[Øõˆ‚¾Œ£NáUQžtc•õ"}ùÜ2©Š¿¢EÉzI®Vs¼†ÕȳéÂG†¦,?C›¯–Ž ˆkI•zẻ•òqºÄ up«JÓŒ+K@ !Dùب”árlàîƒ[Ñ_åÄ£²"ºgd^›ˆ#4œ ¿’ÊdØ?H†�€™]X„Ìc!qÜl×ñ÷ƒ(xÇÅÌÙ¾ q–-ò¬Ïc»­a°¦ÝlŠm.á~ hPÉéü¢ÈbPë§Ôˆ‚@͹% NeY­ Î�Ë^ý„î#ô©Êu¾G©�.€Ï–íŽjT›G¢aÇÛ›Ó¸2 ˜¼eî©ûk¶a97ôa¹ç·weŽÏ½ÉüËÍÒZ\ë0W<™J¯I§íPy;kåÑÁ]¥! %vû>CüÙãüÌiñ&ãÈœ³å“yZ0ºIX;›c0ÍiŠiþÀ*‚½tðæhüþEL (3Š?Јèò÷ß�úë¼u^cØ=O•È–Ý/Eñ<æX˜tFÝ }`¡:ŽQ¯Úç羺~f�¡Âéx‘z¼\./{ KjnNj ¬gÈ`]{H玑Ð9.÷¹¤<"ÇâFx†5K>ÎIÚ:K” h7ñ T¢‹5­XíÇ2u_< ºÈ6•L¦üP:àYjLÚ©«)-fl†L‡#LJ礢®\Š) =ÌÉ–âb¦ˆ$Öó’ã;5S|Ö`ûlÂÛ³3)>�ß\§¬H¶) —æéWLÜfëÎþ—P!èd´ðwŒ<æÇ5ñn»Î?R„–Vس¯A&g 2æàÕCò“½[`Ì,¥Ó} {=ˆT‡’÷!À©Ì+U9¦Ëw¸P1S¶¤4\•–B¥oœÍiATñF©t˜W> U†bT%oØÚÇn7K(+ˆh„MJ5h)~iú¤2ÂÉ&"{ÌùDbC6±²Áypêð »ýmàùâÛc¸U¢)E—újÌxY!õBŽ dkÅq3ØÝL ÂˆDÄkÞ;wÖìäW¨·4búÊÕÎñ n�Æ‚UŽŽÊË€ƒÓdIã}øŠâ<ûªê‚´w˜L¡„K—�3c›Ü×Ê Ào‚Ü_`r?%GäW¬l©é+.èMA�PÆÍ¢f)ó°V]´ â[‚:ˆ%VøêF²îÖ‡$1ðÌ¢jÀÉ x*ÔSœ­LþÑ­1›’l£ËRe`3"Iü>Ç£!Ð%ÌíÁ}Oê í@ T aO¦å~î×ñ!¡`�î„L%zÐf¸Í52F-ïÞÕ-.™¦ünÎOÔüÌ”ÔAå¸èè&ÁC{¿V'-;%WRˆ¹Èñ«°ÁKÊ<Ç„î:r!«°`^gň¹Õžð➦D¹Š+ 1Å\ôjjLèsëé8TK¥:†"Í—-®òqSìkR™5ö2èÒ[^éD¬Ù&Gxš/y£@ù1öæ†Êwüç—«¥C+~µ¿ä6‹™†¬JÑÎÆrÂ917¾DHX%Üß$E…Ù’ˆ‚J> ‘× BÃM+ž2®(?8 ®Š°Šàêΰ`•ö–I&µ…ì’º‚Ç …Œ¹ª×XÜL�3¾‡DR2´ªŽÕÿjÃ`¦æ°H‚ñ`Šçˆ€ Ém° ¼A-ÏJvcæWS±º¦K $963k�EÉrgJƒErEf5,%Î*W½«–LéEè~ú]ðo\S‹’J È1˜ÖÍ}P.HW�麒)â ¬äÕéÏN ½óxžçhy—•�ÄÁŸ‘Ä'åX½çÌ·}�5º(ãìÅ-y¯ö©’6€ÙÌ`}–Z0ñ/'´ÆJ3]�ñA+Š¢aÉŽâßB.ÀU¥ªü(ß)Ü0¡¸®;£ˆo’’…� ¤| Ï2| ‹LFPÚ“•€GwL¸”-ÆÉkhu�ñ$™õ�1hW!æv£#ªÜ=WïäJ³3#ñªÓøhy_ñ. 1ß&‹öËŽ¬Ùƒm�IjÝ~æ‘Jö¶ŠÀ8D§>t´*¿P—axž‘¬oç>¸çŠYƒ¤;ǬY}�Œü† _Yâ⯠É^»©R¬b›óåÈŠôƒ#—æ|©XIî¤;pDO$e=ãÛ®ï…ЊO±ºN¥ÛBå ‹ŒÞ‡’º¢;)'C,4§­§xa´©¬»rÍDÐyF–$„Äl»®Ðû¨G›IØ¢W±B¥KªššQ¤~‚ybKàM%B†áƒÀªã¢…Ø"¥{±¸S“6Ž+ÊEeE kn«"¡­äa¿Žàþ½ °,|÷6–²M×½"‡F¼˜l‡¤üëf•IFh’’žŠƒ6j—aîN¬è?Ä#ŠZª. À=bØÏI\.&ÄžF!q°0UW´6|¥I@UKÎÕöDDð*8„$â´;}µî±�Ap±ØºÚˆíêÛV”¥›ÏÃc8i½+‡Ñ?TĪÿÓ3�9éÚ’E`g$1EO¦ÕU¼ î�uô·D&%ºîk„ùâ¦ÚØîDÎr�wqÖàß^åù2�Yû!_ÂÍŒ@‘E2¯¶q]׸¥JGɺ§*(Æ øçVF’n_‹> %]Ð7!„¤ z �I…%Ì ~Ç :àùË#î5ºŠW¨|­5iÍî@¯ù²B…„NéØôm|c q¬Ú³ßÓ¶Å!5Ñt…>·¦kÑŒ„^«�FÖCêŠÙÖÅŠM%nVÀ>´¡xc68ãT;L,È?8 |7T‘ŠcÄ n˜ø¤ý`Ìdà¶ämU�S’í‹ÍÞݼ5éÊÊ<úˆ×ñâÃ<¿u»¹á$à"¤ä ?vNkùIuf¹ˆ¨(áSF° 6åûí¾×‰� uoB^P[Õ“é•A*®?’{±\pÖS$“ÛjxülO~ßÑÁ“Zxýr·TγnÝ[Y¢´±öG¸—¼ ´q�ÇJ™©R4§ö‰*²s9ÀZkÕ»¼±–&,ÔôÀ²T‚³§jô`ßuxÕÆtÈ7%UçϺ£Û6éEÎ`—$…ð©›Fö™ŒlíM>²ëZ½Hã2¤¶×NEÃ2K"«Xö˜}y-Û>‹òwÕ³'Ï~ÔuW-Á‡Ã*Ó¡t´Ë��•É�•¤˜3ìœÃ¼xãA/{Ë*wÍnk9Ò¨ˆ¹ÆR-ùViƒ †íP&.•èå3j˜²Óç€9ƦBõÉñÛàÁ+Œö—GÁƒ„P#ÓCí…"ù( +Ef$`L"#š =Q{<¸]à ÍѦŒsÏ1Ì- QÐÄ·ÊÚ ÙR†7]£Š‹vBþTmÃbYÕ§ÁŠ[û«_)xÍ�1Ôo­§îŽ<»º*–;þn«3TʆFÏ‚œ'¨.rб5 MŸR[»däzÔi½è¹¤ðÚ{?¾º"ohÌÆÙ[¶œÙ5„b~'õ �¹ÎЦ÷g[¿=8¦'‡§çÇãÉôÝmôü$Ø?8 ÎÆç“ת _”ül€-Ø“ùh4è°†ƒWs~š:Î8hØ´„þ Q@Œ”ÐáŽ,ùÖà¦=¹H–�›åº¨T�RhaHi!eÔÄÕùO” ÙòO’îòŸ�åïÁ@Ü%ÓìÊ™?­×Òrö™³ÃÓ/[]|s õc¾Ua¯�žç*“û¥Ïô„˜Õ§¤ñ"?äÝ~õ*ÈŸº1,uB«lÙº/�SZ©&ü»|<¹x3>šþÏñy0~}z>Ö_¥\IW–rÎ5ŠaãxëËñ 2ö¸ÃжT`#ÍÄ©d;p§[ÇRÖmÕÏ`JÚ”œ±?@-ôsrz|v~ú’°»#•2à�Ôän͵ÒlÀn‚0¼]ÄpZ|Néë03ùAh(衲þ»-Ÿ|Özg»éÈ7Ë™w¥\½ï`ZúØ%<ód¶eÚI]² XõÓ”ÿõñ¢E¼sy¹qå@gt-2›9Ú½@�–+™º·z•â×ÈJ!uÔÜJqVwB¢C£?±k|öƒJ¶€T<Ö{¦Û¬8ôè7›P<©M‚¹£´Š=V¦Ü)þÓFï?mµ;3æ5—öÉö ü�Yõ�×Gjí-iö¨ÖŸ2Hþ®À¯}µÌJ÷ΨšyŠ^ã勪ÿ=%`ö РCÜ\dE¾ÇÈvh´ø×TI4˜/)ªÉ�ªr̲ÄQÅìud>¢ à˜S6ùËÊCí@.GR‘Üg/PƒÓì8,>¸•?ró4¶ 8Ú˜G"¶:²÷Í{Yþþ1’÷@;7‚cj§L¸ C2âÉ1I~»O:&(àºÄàUâ M]EWáM^ -åÝZ.eæÂI¯åŒ™øón½+�vW—�Zë÷c÷mÇÂ^¡tK=_¦•ü°ˆã±“íŒÙM qYBøŠu(ävÙW�¹ †k†q½ ±�b ”ŽÌú»�²,¿©­:v€òÂÂ(:ä“*MÇ”mëKØ(se�1{ˆ¹fzFÇ9B ¢ƒd�îôdºN/·ñ€°¯p/x:z6z>z1”ž<~†?Ã{Ïà¿=LÚÚ{ÿíí=þq÷7{�_ü¾.ÀJf ñð¨Ø¢Œ\Yx� WÈÏÞb½²ÖD.ò| {.ç=¥@Ɣ܄B�/;‹ù"r`�U”ä>8¦˜`8 Ì=ÞQ…úÞ@ªÏ‡sâM0KÆ0*òµþ‹ä]1Ñ~„È(|é\Üzš/Âtop„ †Kª3¼"ò »=;Ë…áÕ¢¡JÜW§‰XÎox ^u§ˆRÓË"ÑÐ þ§ .ƒsã¹K“ôv£—rv¼uÀãÔn…•QÙÖá_”W-Ût¡Ÿ–Æ^0™j=Uk©`Ïé€ÇsšA† _ü$B� WáoØkQñG|‚ü*ÿ�ó£jäk£A�OÉ{ˆ'=O®á]jaAJÛŽŠ–ª@~*÷dcˆ+ñKÏÁÁ¬Gæh¡üäªp�œ˜™…+»q’‹#æÇiE*BÀ‹",Q¯«qưtÀŸ‡w¿¾ž^ì ^�O&ãÁþœüyopr𠌷!üÏ_à4ŸOgöaf 5É6´’5<ªvPhU+|»n�šK‘*ìEÙu§a†@ýZcaì†Ú�¡¾7=+Mj².á'öÀñ ¸`uxÇx3ÑÞ@c£LÄ ülpPñ¢> RA‚SضyÒ:ÇO­/ÄŸH Y­½ Ôe(ˆ)œ¥Ûc¤×tn«c“S֟Ć"‚ZΔ±g��;!q5õªˆ·xfPyÂ+Æu%ŠÜ.)?­¤ü4w>o�>Ã+Œ_j1Ìx·ô½½n$¾»œ ¦8,`Ç{�Ø—�WÇôJï�fXé˜ÄEšWN}ñ¤šÇ}&™jÝú¯ëúö+Aó÷:!šÇ–‘²Ì(U1‚äŽÕ<%#H²=ÑjŰØ‚±&@k°Æ¨"F°‘‚‹¦Éc7EíüþÉ0xñâùPÿk Ïë:ÇZÚåÖ©v�A§É0áÙPƒa×LõÍ­Aîî±ðÅÈZâÏ—±t [Ncü˜ÿF®_~W#o«G£x¥Šo¼ËΦamôi(:«�èÐx1 ç§ñ(‰ÀFŸÛÑÁÅiîÎqe…¨hØoy�ò”­õ�œEðk<ŸÑkÃ๽Âà“*Î|ô§à• uÃ�úAü‹ j'¦ª¯�Ad5ŠW@Éd˜¡aÚ×—ë:\²Møù³r-ÝQi»‚87“Ð]‘kªç”~¦X˘]óXÀG7J.‚$qk-'” ‚ ÄsJáÈ$#3¯åÍ�>*i¥à\Ȳü˜ÑYF¤Ý%{Š�§’¨h²;°.²ã#;sQËî ×k¼|ž‘7sƒf�Utëõyž» HýM²“UŽ·zQ ­hm]äÓ%R™û§;d·ô¸¤7„Ù2ž:ûËaÐ!%Š|R‹zAyÌ~‹Ìy÷…ß²´É‰“Œ:kýZ:²xX'"ÂÛTÖ¬­—œå02mà�·¨'E·j“]×ö½‹æÎý#øìŽÍs•´²s4zÚ fµu¨¨Wúºù²1Á}£î@sgTÁu¡ë+ÎV�+žsØLÓ ÅîìlcsÂ2úQ�ÆZ=–uó-gò݇µrçóëý¶…ê†&eÏ‹n¨#«F¦êAù0¸!=ß-D¡†ÀÄT�ÕÝ•j¿^ÚìwË·ÚÆÛf[6ŸL2,žAÿcöŽèzÜï®ÖŒ7JŸGE•áýïÄqâÇí„�$Ã�¿ÓmK‚÷·®åT²-T¿àÿ�©’~dsFó�WCeÝ>Ô(°ŽÇBþçA4§Vâ̼º¹.âpc¿ŽRXJºô7U‰9ÿ27®^3W'4Øh†‚ wÛ(;1sÚ¸·�Æ·Ñ#,ýF«-‹œK26‚^çyÓÇk�äÙ£ÝmLr&5¶.�f¨,t~ßÒ—(ÑŒÈŹÙU÷ ('33³çê-¶Íns+6‰OOk÷§j…4"4Qð´aÑZ¹Õ“æýo¶ß¤ü±¸,ذãÙhŸª³aq;ô+YÏ\ÁrÊÇnG³ˆ2&öÃY„ÉjÚ6è¸hÞ݆O'œˆ+]7Ô% ºŽ±¯25tfÙ÷� ‚ð/­†Blâ›õp ÄKØxÕºÅÍ{$ˆü;9§©M°W<&jaªé–}èÁxh2ݬt �+,â*Ü––Ê÷Tªj¢ àÿÒÒñ"¸VºÒñyº!`±âßÂQðVn¥”s©…„ˬéì!UYoéß õý#{p§®X„³µtU~�qEvæk4pOø¥³Ç=åjŠÿÛçTÚüý'±!ܳcÞ(`áÞÝœføÒãŸ5ŠãÔè«j†Í~¨.Ž.C�·ŸG‹úRˆèrƒåæ‹qE-¡ì½Øº=» þ‘5-z:KÖkw2Àa.9ï^Om .G!ó̧»î[œt�J¹%í]#4=胋{Ï9è  þ·%ß’øfpî&|¤[¤ç¾Këè 9iRn*¶Y�—J…¼æ¨å³R“Τñ•Zå«7îèO$øHú‘hw#Y#Ï�9VuNri–¶ÎíË22G‰‡xånèÇ£IvIŠžÇ[x$Ýæ±¥ýêë/=×_Ëk*‚ãqAqa—‰îØ/bÚO\^®¶ ßä— ÒàS¦JTñûÃZ{¤U]RE‹»Cç²ÀÆ +)ŽºsÍ8ÆÙÒ¬kz®|º½E»�T{Îìzf¾ƒÄÁ“-cBM‚_Ê}ñm'¯Ý€Þ!ñ$Gƒ))«Õ*,¶{w)^�¾0ÑŠ]npQ¢QëV8#Á"I‰)ë3+|«˜œL£ÈõÚ Ö›x¿ËÎè>ÌÖ{Zuèuʬ®óÖæ86š† ^ÉØnó�­†öhÆœ¿ãºî óŽfzé?e _]9ï’äJè­Ùu—6x{wc¬o±¸!M·¸ZÒ§D.»*n·ÐJk%„Þ+\"Îv5(èb!㜇P’·5W£;¥3{ãp/7‹� ÚDÅ@ð�ΪÉá2iÉþejIXû ç£NƒÞþã°t:®�)”µ`¤› ÓªB¨už+r?^ä¾38 ‹5–ïߨ¿•ægÛzÌÝ»ˆÓ¸Z™¬0ü<Ì_­ÂõÖ¹²8ŽZ°C —šŒL«Øá­rýlk{ …–î&„ÅA7*"?в­5hnN4&¥q8•r[2¦ðšR`ò’ƒß·)Ä©(Õ¸9$ô�µ†·rÆ›lFL/ïÎBÒ„ÜõˆC·¯³§Ž3£„ˆo÷ÈYÃí�Ï…¢Hûz"œ×Lßݶá,á-t‰µë¦‘ªƒ½È�Ì[ÞèP1ÝÒ]+v›W“0›ÅqËžà�—0{ `D}�ܳOúëõ÷Ä…äq³[�‡†´Óá\Š8›†½è©${tѧ…éY¸Áê=ÿ d†È¯ÔUÅkDBQÈ+¡u (h§æûïÈ¿5èM ’�¸}·óÝC¿K}-]­~iªvýŸ×"º´d´ò´I?Èφ>‰!º"Fï2u'½Ë_ç«øñ/½‘/tŽT?ŸÂ…Úc¹ _„ (†ùصÀNì“¢ sË3pÖ`�´ÐÆá/Ç[« ›B¼  c=P¶’ß1I|+m'`ªg›GqœDÂ�~D*v‘$³Ë¸¥0‘rË Q¤z�­à©�;ë”=’˜iþ^Ó1(²e7k`;Ùÿ\ÝÿsWó=´Ý•'/ºT±ˆ¶µÅiVƒä”yÁŬ M¼*!¡Öé(Ç�Zçh|Ë’�JùS‰Ê—˜“Á¼%+�FCÆ «v•ëö‡Œ•+t½ót�¥…œÂyâ£öEüoá¹(ÒUk¸"=rDàTýýVÔî‰ò ?ª‚=[ÆãÚê‚­�çAgÖ–|üµŒ:ÂWߢv{ ‰«RðÝS¤�¹¢÷S‰�×\G}ŠWúg2K}åzüˆ€îÜQJ´u%åe °¨=— ˆ /£·1ØmäX¿aHO¥½xnô:Ëj´fãªäw]H3}ÑJ]Ô”)ùeÐ#5€È£ÀZ¼O2ûiþégÂ]PÖ9«~��ê¸é’ò¹¶§DÉCýrÌJÎ1KõÛ�óXÛDîIµÔZ=±’‘PiÿÃÃÎÄ?Gʉð'èV8…Aø�i$Ínà£ôÄÕþšÄÛëh¡E<ê_:T³£–…ˆ†ŸÛs¬Ò0aŸ£<_³O©%£ ®Ì»Ò—#úŒøÜøItùEqÚŠÿD3dÚPºï´ÝŒÑ­ê‰U…VѶhŒ%JžLÌeöϸªw2³^xS™t¼¨0�ù[Ö»³i$Gžï/+µÆ4}¯ƒXX]óE”."tèúÓðáRün­ˆÙ ¯J_WÃòáN¶P{6å•7�޲lœt�q-´Àœ×s~Vþ¹¾.Mü§{Σ„·ëÛÕŸ#­ÂáßJ´q¹”[í+”k£Qt°òD{“;†.½s¯©S€ö;g½òÔõÆÎ¶úÊíÈ$6¢†YäÃt[n&þ s–£›W@+7¨ÓFÀö^W°ùò�¦ÚÂaG–®ƒm…ª­kjK+ ˆÅÅþ‘\ckèÞ+�-�Ɉ9¡Œ!Îë8[ß©Ž#³ Üwx¶ÿCû^”}àOHì;'ÖÅ}é„$�faÊÅäìý¶_q¦Äˆ=GÒP ;µDâ%¼…È|ÁSø¸òæŽFJ±†˜]+t’ ¾]§ ¶WÔM¬Mkh˜¬,ܲ e)Ÿ�!làþÞp�@ŠØ�|ñÿcMþ;GF¡xæ­q:P6kÄó_!N?ô‚!{I_Iâ iÇ9Á‹‰/ÿN…ˆ‰"é¢;DBgSÁT�åNÜ *þFXÁIvƒì¢Y[3«•�ÁZH´à6X¤_TÖ!É’‘ÛM°Î€I,¥w©� ‚­Íý§AôŽ{§SH %2rýÎ�[[™àÜQ-K<…¼ì‡¦µ¦yû02�ÍcÕäm÷›®èî°ÚiM¼áOÁ~(eKgôj¯°�PëàGÂy@@ò¾�nù¬ìÖÀ­"x ’’-ÍØ‘²]➤EEª â8üm�<–)³Œ-gS˜eÐuW¦X†{wtvlà3ÿ/mŒÝ¡X±ë´ÿzŒR@�‰‰bGeŽz›¢‚ÔChpº ¾+e¤1ú’Í´Wp'¥B0CÀ$Æ+`jä®Eg�´ÆY÷è¸�»’Û; N »Ä†Ã�BH]ç[ìM Þ3ñÓQWc=e—QÛÛŸÊt §ò®¾‡¶N‡ÌÆËÑqãã'ä�!éÌ6ÊÌjÀÓùº�Ñ%¦Gkª„QGI(4ba;9Òpcá5ynRDÌ��hØpšÛ‰ôôžs¹=™ü5Ì>÷iÈ&,Kjëm H¬J‹„ï,Ñ,.bÅ™‹ÆÛi§Î\?Å„V~ˆÇGyî”ͯó4bJÜÓxqM½7èpø-ÿ—Á=àn²áµÂ/Ïò‰äìûÍÇO^ìšT+"aØh䯆Q4#X­i„Çûarª^ÅÐäÈIJP¢lÅõ1&tf‹kS—{ZeÚÙS å™i‚ÝíT5Â}žU><&gŸßdPxÌ™�¸Ü»]³ÈiÔƒa¡øœ0u»¼À{VIs�ùåÂÛwlgÇàw{ YU>–¦ê¤¬÷•²îüï«2¶Æ[Ö`¦hVagõGà Àº( —þ4lת)´Zå.—¿Ç5¬ˆæK„ó`èÇc~Qè븇 “_ÀÆ=$ø”½�Á 9:Q¹É>ëΔ%hîjžÎÆNøïYx]Œ¶»ðj~îóšø ý,º0@_ÆdóCEâs×L³oÙª!tù’æ%•žá�!5tqÃðfÏlUËÀµ\–££¾Ô.äLöúì ÞÙ@Q+`h§´ÿ½†+ܽ?N$A ¦M_þ"¦ý}Fϱ +RÕowþo¿Vž¡‹6ê$Æ#B|„^wNtª� �–/6c2×�*rð‰ñ‚¤œgŽ%’Ñ$ÇsK'iª%§…ù¯v5y?ðí[7•õ‹›N“9ØÊ--—G‰/l•ÂòyPS¢œËrZ¬¸Íö\6zÿ=¢ºN)hÛ#L<ãDÿM ý¢«�½­ÙUûsÀmÎÖ¡;�ŽÊ‹Ö8¥Ô;i¨¥wQ¿ÅêîX�ÄeÝž<Ê8¡±pOâN²-“tãÏMB¹H(ÑH‰ÉL[Ù: xZIÐ8e+>élUq6´É�%×>ù”Î0’Éj¾ÏA3ÌÞK©K*¾¯³QÈ(-çÿ½I܈SWt_ÿƒ)ˆø¬†Æ¼»‚;Ä£`)õиœX™÷P4ÛZê©kš[« ×íj°E‡;ï? "o¥ÝÏÂ%îæÛ†îÉ’­ìG:76k›gHFÓ–CÆw¯,jœª/=” `å’l\‰cƒPv�eEÄá]㡬rOSb]q¦[}‘wZ컾6.†Î<,ò#P}…•¬³ÿîm&«7ïk.�ë÷v%³52ëú¼ÏZšlƯ4¿ÁðZĵv§º$ä¯ôƒ[O=÷mIÝÌ–�L·ä¤S8à*�C·þ�°+ª´5çv™6´9§ÝY†K80ü}›‹o@v5]X‘üC�G÷d?Ní7³¯ >)Tõ¯èMí&„e¡$4Éqmu'Õ@!ɧ. Á¬, ;Õ[Cj¿O9­D«÷ãø(_–‡yÑR9á’{ª *]p/ÒJÁÇ{Ë�8q`ѵ¡‰/dË Ó¥ñJWnûœ°óŽ£'å )H})Qò˜ÎXv‘ÞlI9\Ò®ÌpoKbÅ(˜Yì—5¿F]ÜRRbö˜Ý'³ö$v†iŸå˜yÓOƒ’ ¾˜òf~?Õ©£‰~*“±Úi©ß]ÚÖÄn ±ßÓ-Qü¶:Ôù,³s[xz‹Í=Ûƒ—’bã´•0ájÕÐâëéÛ®Æ%u»S-ö£ÅìaÄe¡G”ƒð+÷ Y��óKá˜$G’›¥Îs®Áà Ñs�f©›¢Mš“F—¯½ÏÆÓzG4.-,©Ð[Pš¬Fžù’;@½eãKWò´ç¢¸ ÓÊùÄ[Й aóåikËj;§ÐÌ «&:u{7ÎòˆÂ¸ã� ΑQO5™Áôlˆz}ΤCW•}E°¨¦½ƒGÐ{ók˜#‚ ð¬þ.«VЋӫ‹dåÛ²dÊ3°呜µl.]¦Ç˜†Í½¾¯sº¨¼™¤{ [¡S&=QŸ°Ê,Ežõ<Á¼Yg| }ó)‚�p‰4íkøiІìºÏéV–¾vŸSãªËeˆ,AÛ1:ˆú°Ÿôð¢�œ¯Q|¨mÁNå–М�–AíÎ{oKØÞçxiN®}¸g;{°¾“¿´Ë6H0 ¾f¸?®p¯=Æ�Ö¡ ÔµK%€åIô,Þ3+¿uÜû‘BÏãM²kUú¦ÉŸѢBÔ¸oŸ´jP2[ÞÉjå÷ìXm§mÿ·¬¥_Âß>$V©¼Á)Áäp©°�èQ*ÔSºÒà „Œ‚Wì¸ù�®€U¸ KƒR<šùìiî4o(±NŒ‘Nô£˜zKrï4³b�Ÿ‡¾±ÂkpÑ¢g/[�‹|ày°’e²F¶ÄÙ)€K4¼ÛŸÎÆ/�ö÷Ó“×ã—Ó£éÅxÿt0<:}µ78?x5�]œŸ";æ)²c¿¼9 ÿ<= âàhz<=Ÿ7ÂãþâU¡.‹ˆЇÞ$K�«Ë×ÝÁ�/ùÿàF¡/l Äß½ íDkEß"±é¶Ûvh×äã&·íïH’›ýN{*z=Ë›K›¬lþ,?ö×´ñžänê‚qžBw0JAB¬D�uòaÆYpöú¬M;*š¥þ¤CSñпà¦ôð0ÎpĨIæ«Ð�2´�qUzïž}s/¸M_ºˆ×U½ÇD—L~Ð+×¶5ÎllMÁ­�'ÚãVÄwEü—¼šyüI~4h7͆§{Ì”=R7È%!×G Î?§Åš–R1h ¤rÄóH0 x c qþ0 X̤տ§€žß+•š®¯kBáÙ$Yeó^SõìfŸÐ$¬ÊkÍWìK‘ôË–ýv®,-(—lµÞl�A›òÔ5gÄ<%É*4ÿdöê§�ªês?Ô–~æ¸�ÕZï¥OÚ¯®†Ð𩽻c~®)Ä­Z˜ñ{”}S‹F Š™Ÿ«œI>»¡²A<&!º”Ñ«»¦ É<‰‹@Ö‘Z‘K©ØÈ”©„%‚k Š2º0:&§’þÉ%o}îùëüã‘Çy©+ÚâŒ7çá¸ÂèѶ—3s‡÷—€Å‘Ï~ šæ²Â‘€²„GއXÒC×:I‚äºUxâãŠqpZÎо:�¡…Qü­­õ †÷ݵÓûHçÄ­Üî„xÑù=©œ~7ܸY䬟©=3é]åíàDËŠ]yQ¬‹ø±#D/G—wã“¿¸/¤ÌJIÇ“~<>úu|~Т©ÁCg§'ÓñÑÑ_._�Ï�ß]ŽÏÎŽ¦“ñÅôôĹ46f°Î9Þ‘ Zhú`G—8)³Ó 4|ypòjzrpp>=yå¾n—`ÀÇâÂ,ó×Ä^¼>?_\^üåìàòÍÉìì`2=œ‚ÖÞkèoN~Ÿ\ì_ÎN/|“ +O³œ/4¦¹ ç`-G^.›`žo²xLþ}â&qƒgü`E5_[•WϰÄ÷m”Ø—)­èÔ¿¢4ÖÖO¨š}«¥�†Ö×IyÝÞLY!ùÝÆ®{¢„J¦LÛáNÛå:\uMÕ¦˜éôô[ZÁŸ0?‚¯ðAmoÞ~Üñ1ü€Y®¶'žÅbC — ÛÒ ›þ†Ì1ÐÌ·=;k™wl'¥½Ó;ãm+šì({µê^…ö ]0êR•g‘Ÿv:´ƒó¸­¡d-®óÜ]Ad)Vú9”“‰¯º±\äK޵|§]œÉA'1Ÿã¿+áÅ0f š²}+«M' ,ñN]Œk™†À¡¿ªÈ½«{ýÝ)±×j â¯Ïl‹xŒ” h½¸¢zhÎUr^ɯ4à‰à�Õ;IØ,H+.éNÎ¥×´ãŽAÚ\èw¬6’ÙÓ=MÏ™ôRFœfÈ}Å^îéJ�²üÞžNY’…øïºqëµB˜Égñ¬MDÅ¿Î!îã¯Ç’þ¬Ùm4,ÎÎ~ "ù¤ªÕ¶¶í2AÐñ#P‹oÞN¸´“£“.#bj “Mêþçö|�.»Õž%É$Y šåÝÙh¼ë8B#æ.ËgêçÝ.|'p˜ u¼—!aÀR =c<ªr ^½ ^�ƒú=hYÜù]ƒfŽÜ€ o^Í=%¹ÀÞð—˜ý_’�W&¿µ¢m`Û¡¼µÐáëM´ƒJL´Ü’¾ï_¨ïjX3I1ò4D·�óÖxÃÖz�ÄK¥ÿþýàÕËa@¤Hü+¤Åå<+âUZÍ]ß…Ù•€§Ù#i…�ƒ;Odk ÷=¤aAGŽ!§{ƒÙããØúò—ù1P$1�‡üÉ”¢¢å‘o¸nƒú'08´�h`¯ÉuH jÁUH®‘ûªJîú ¹vº µ£¬¸Mt4e'¨î´E¥5ûðd¶œmÜÞÄï8'P“G�0D0‹‡wD+8@i>&Y²Á„Ød3ŠE0p*œÖKÅ&3°þ2Z3<íù¬eÖ~7®@_û�!¸-R_Ò¥º"j£ªÍ¤ù˜>&ðãGØYž£~„šìN.«XÇ”ÈÀ©ª ¹RPj”•¦}ºaæÅªNg'5#êv…™§N<€'Â+#2¤™U¨�[µË[×zâ™N•ÓÖð\×¶Ï~üž\•ä#Éi«B».÷Q‹{ŒmfvÛ®Ójév³�Ño$£ÅMHß®ML õÉãqo?z]×Ó X„“ùÉxÒ?Õ‚>~?úkÕØ}=éŸhËÉ˸6_åGïçÓþ›îÝJÁ#v‰â[ug£~»Mg ħÑn…:$pý.XmË¿¦‡Eþ›*îx;û刘[òl§ŠmÞp@ïJÔ?Ф€6�ȬÊå¾ ³@¼^QÖ¡¢^¬A<}ñf1³@e~fÊh‘F."ÍoOMß$¨ðŠ‹7’Ô´ïÝ¥˜”.‚Ø}Ø^‡œ‹8ÂÈ,ŽLÁ¥âÄ|:z{°-S|¢@ýfÚÖÿ2®¿Ç;à°ÚpzM"[¾á�ßëK¢¨ÎçÞŒ.yÍÊR¹ßÑ„[(M_Æmƒ4’À÷ƒO¥V¼h‡èü¹UÍ×UWùu£‡'þ¹™*5 ÕZi¬ã¶¿Ê5‹ê¸ªK˜ÂÄOS�-zà�jŠ`Ú�ø©çqFÈÕ”u ÍyxµÁ«_2$–ÎQqøíàvƒ¾Ñ‘;yIEátULÏ'ÂØMÝ9ô–~险“,,þÝÅv¼ô„³¦”»ËIjYs ¤" ¶ﺈJè�—Ș‘«$jîÚÜÎ=¶ƒ&ä˜ð4K‰ØÙA /Å£wYÀáW»ôT)ž¢|�|£JsÂYÌÅ� û„X�$+uA²fðöWeñÆPÄ�Ãb,AExÄ÷Ψ¼®OŽO—ûíx¯«žõ�ýDIt÷ ”¸R+i Ú4ÃkèA‹þwº`²X“f1ì¬äÈâ�‡ŽÞSŽ×ø‘­øŸ}`§�ccëþq5‰—`pÀhšè”î¶OЏLÿK-9eH—g éØsS�þ ox¡Ü9Ÿ†p–æ ²¾)Ä<ÊËŸMéÕ3Á‰Õè=!@?YîDÚI¬`Ào®Ð¥ ý¡2åÐupßõ¤€Û¦Qç�kÝ ³¬- W¡×‡$Mȯêå$K�Wd‰àW¢{ñ*Éb3‡>ê=fœ£æé>`øß®é6‰æµ. Ul¤m^[ÞÓz”Ï4oí”’¯"S:)’~þõõñc½�H³lÉfRJ�v—%·4S•¡8›Ø�ì$MønÔÝCWÒÇd³¸FP›ŸQÝe\i°ô ÖZþÏŸ•¾Hq’»�þùÑS/ûk�ë¼FΖ|'ò_ã÷k¡øšoÖq7Weè�pš3åT”jB%ª(Õú–b3jûhÛæß’�Œ ’ݶ¼m˜ËXK2åÒF!VÛAÖt?sN7ß…Ÿ˜q÷üÂaZü-ÆîÁ™]k#’Ê– û‰Q}DÏ�#:²Â2–üP#bçì—ÌFïQYx$@õµ_7XµHVž} —8ËNpô=®¼1Õ-c¬ln‡Çn„9󆋘-޲µc6#c -!~J¸Y�/¸;Ü^ û*=s’5Ÿhå^ß‘k¸by4óð½ Èp¸yîÜCŠêK`ËÇ!Ñ]þ&œ/œ/©›¢õ{?ø_eÇ Zõ9 8Ãû£sÝ=€O`ß„äaÁ/ ¿s½ ñ ñA˜ògïªgOÂÅ»êÉÓž¿„î¢)mýûíO˜�ü{WSo1i’ú¹T§›ø7xø§Ö‰A‡~LÑ}Å„ƒ{úÄûìF5)l§I¡±X}êÜ$%Ûú;6W=HÆõSçVâ]@ Ñ=¥œá§î�# èØAôW>0)¾�ÂÅ«æ·:.8´wC-M$%d7 V»ÈÏ1^ݺQ&jzpS­˜ö§&Ì�I¹Á=òQÉ ašèÐFçFh$º¨’š@›«®Œ™5b7„ꀢ8®Åª2Ü BèH.FÎ_)[¡Œm+ò�ÂJÍ«Te�¨ë�(Ÿ«¸ø ôú¢ÚвG –Ú< )HÌñ›XÐç-âzJRÑÝæ¤ã°aÔôü©àʊ·41ÂËK¢`,†b‰T5ÂTTëºP�;lm`ÊØ›T°EÙnÜ"�yf‹Li£¶"q¦°WÚ‹£XZ­¹Þë¨>â^ï|¬¾ µeä´#òFY[]%�aﶆD~dy³Gõ€ChÉë¸2yĬý–z^ÌT°OßJ�¿|×qy‹’ÅÊñ°Ü(¶D¬§3¶ß"†kɄܛü@¼ä6—5¿[Ÿ�Lš1 ;.«:cY‹ÞÝÉ ïcÐCò½àz³Y—{�¼^-ÊQ|¢z2‘ü¸mÞœÙÞÖ1ìdSZ.öÌqÁf|É!Æ"Žf D¼<�„¾lméÝ,atURG޾àÁtö°qÝ‹_’ ¯¢D¶¬ºh84Â.X�‘º)µqbÐU‘/] ¹õ]v�‚0y£n%V�ÕÙ¸T·¢çF$·j„4ÌUmÈ9“7ñoj0I¶(H� ³F2*�J…>°L^ °ÌÑ|ØTŒƒ´&%|Þ!”;·½Y”ÎÍIkÂy¶«Þ§µ ÎaÝnpB0p‘Y‡%PnÂì7Ž©ä¨ïÞa€J‘3¨‹Ïáò¨§ +anù®ðǨ öl|<Ô™Îu?ÌùË#ñ ¤&ƳËî¸!ø©ÞÁ`ÊØø˜äXàûù ¨R@óK§{W`÷�_ äQ?¾í8`€ßKËT³YÿÝzxñ�4W>b z³ ;¹€†ø=&BŽ�|Q‘ݶ«‘’£ÎÃ,»¬\mÖ/±ºšƒvX×û _ëN骃^‚¥ÌRöÍÉôÿS’Ns­°M³KX+o³œã÷gÇ«òŠ?ÅMñ=Kc9bÈ‚û)àJ3²TÈ… ÏcoÈ .y~í[‡{W¨wu1óéë§[kúÿþF}¬>å=¯„Ë<ƒ õ/ižlå¹Ãá¨ûO•x¢KD#Ó[ça·ŽÄäϸ ;}éöôkeˆÎô¯[t¥ÕÐÉb«Ùɳö­h½Ê¨ Þ÷-W.Ò(€öòl"&v¼ˆœ‹ÖžŸ«÷é]±Ó‡ûj%³¤é\p¢27=1ÆçjÁ«"Þâ‘£µ@—GB–‰í¤PˆÉ½�-ž2d<Ñ¿Bsp²ë¼©û)~¢±÷·ó�¼ÞuÆtžëÉá‡,ÿ˜]Âu}›Äå¥Â°é›„ˆsžå(ž-½¸®™Ñl“±‚�ÉU Ò�Yj ÍÄDð7W)‚Jnƒãðv²Ò6ò}¥’7¾WkGÄ¥¶PmÎâôrÝ_Ç9Öþ*}h†Žÿh63æ£pÔî‰×%#;(Š…ÜÌ*íÁÉa¶iÅé§üѪòIE¢ñjªÁÊ35ÀûX*¾V7Ú>¨À =–Úh7 fÂÕ‘{5,Š•†A½åâÂ’ÜW¥ Ràº[Ô($T…R ­á$]_ÂÊÄñýÖ¨F|Óµ."?lTZ_¹cUÔöªbü•úÓÁ 3Zò»imÄ»Ïdtà Ãb)‘~ƒˆ>.ÂTS¢x 7x@iáôï˜ëÁ9/ †ë“]. Ï »\â"÷W¡×5óÔis‘u\WùI8ØÎbðìIpüRD©í"UXðs,üp§yÌL[ua¦»)9ª9ÿ È@‹IÃ?,ü­tlD%‹›·Få‹|þµODzòœÕ*âd¶û2 .0ê¥Â©ºL€”�J¿"7*jbÀ WM– ^-'N-´¿„ìš@‘žé,}U…FÐj0ŒÀ² ™G�˜3(þ¾“ÉÔÁzÖ1)Vä�¬ºð†T/Q1óyW={úÓ³@q«È_%8­þÚ'©çœ ÂbœRÙ ® Jyj P”jÆô™áá�BñÖãAŸ�U*'àªW1…ñYs0«ç¦+vÍn Ü5Bõ]4á8…Kóʇv¸‹§*ôHÂÔµAkP§Ö8u3ÍÔ†êî…öã*ŒUãܯ}Lfx?¾ Á>ï7Ñjz¨²±Ö4ß™;IË]Y}õÙ¬O¥cmÊX¡+PÒgkݲ”ªXAß]F%Ì$s6y™·�Þí+·u tbŒ{$¦cï½[+¸*„Ò†$ŽÜTÓq€8çÌúÍŸ´²9L@ñ¯¶a€þy•ì’x9Ò‘ª®Á¶É½¦†¹"û@øß)•<8Ý Ód.,¡0ÐÄ�ÊxÀ¿â\’ÁNE†et1ª�éÜÑ:­¼¹ÇvfÃlª¿Ñ–W,(Ž ¿Û™{o,ôaâÞúŸÙ¢žlÚJCŽujGï”S‰’ÉîµjƒJ0|U#¦A]8R+¢Ô¡)mÉ<@}û˜rƒÐîjö6 ‘5Î�MÑgÌ<}mg®çäðs”OUržb¾èÓç?þðÃó�˜¨³ed�V”΋ëÕc¹jS-HR²¯A›:]piðÏ¢pWݘgÒjÉ ª¸5ÍYõH9†ŽˆUêE”{Ùc?ˆ’IéYµ¾.ì(,?8 $ñ,÷ÃmëÖU”b:�LA``J�” <¤b¤"YQ‹nÎóHu3žÁ×j½Œrê¢ËÙ†1­ %)·6Æ‚’Å«Zc�ZÆVÿ‡ˆ½ çÝÞ¹qF™é6BÏ–®$;ÅNZ³ ÕR!†«Z?0æ�:`j†uŸ¨5†:3NY†nvŠŸ|œJmeTBqXä+áè¨L&"ߨ¸@ÛpØYw†Pé|A±GòlA¹ªBïIc`A~è´ø¥bN7;·¼€'�Èòý‚tJ‘¦ä,ܰ¡c·…ªáîEïÁ:vâ�­¦ؤ¹Ö»…åmÄØ$Ó{©erBÜᯓSìNéUçax‰îµ•õVÁX,mùG‡U:¦¢Š‘B©“7LÞ$ xa��,ŒŒç†¢õxì7Š5eLìëž aÌa6Y3 @W‘�pSV’N�1ÒÇO7 ÈkGJ€‡^ò½,þ;ù�xp\Dà ŒbÃ(¯²šè²ç)äι… ‘kM7kûZgWõ’zVzº-ÃXoÐO¯ ¨/ÂáfݽäÕ‰ ‰ñ£«Í:jë9l{øŽ-ÍxÔíTVsô4èU„Öë=œÊñîÞ'–ŒF W0"}›°_�'€<{dX`Öo¦3yã¬6WÙ¸ŽQ9õ!Á$]£~C¨Ã ©‚š¾8´>£S~W{×uâÚfÖØëfŸ˜fëSzÌ…‚ý×]òÉáÄmZK`¿né?ÆóÎà†¸~8Ø€ey[\øj§ü|à‘«\(´Šx߯ÕûBëJÅÔtQ-±èûI2Qšë`’µØ#qÌ·$7ô ¥¬Àëý�«�,;ŒWõ‹ é!PæTô‹Ð½ÉHa»IŠJ¦yXJ™9ýìÕš-·¶¸µÝg�Fê©îxO^´6‡#D=e•üŸÇT�Kº{+ D¬Î*«{íE¹´Á¬š¥ö.9A°…+œ;#a�õ¡?,¹ò?ãDrœÅâƒ@e~Bß­stÊCÇóå•un×IÔw^Tbœ3²áÛõȨo¤0"xS†uP7ûI€J¤®1EwÜ#€aº剑´áâšð_¹@SpÂȬÅ�—l¡0¿ÉÓЏ…l"4h*«âk­6‡è\M™*cƼTh{ ½wJ:®3vUøêNXäV[ûÒf°23E†úš¤ájüöœ†ß øeÍP´k›p3BL¾È…]i*¹:ÀJ9�ÔWFIäAmÇ;TWÚ©8V€ÓMpg7ö>µ±».Ñ¡¡êÆ<ÂM¹%´#èÏEwǹ^•H/,P¸»yŠe?�"sJÌnW‰øy¨ç¶ˆ ŒÇd™SI·)?ò *-‚ç)¨‘ÚÔ®�·Z“4h/zëV"@{îýpQ!yÑ Šæ@Ê[_¯§+Œkmº±w%¦OÔ“Þ ù›*Å+;Ç’¦øJù¯lìt¨^x I; «•ø+Á®ìÂURÂPÿvëôá«�Óv‚Ý—WÅ"FP‰jÅsp·XW}‘"H' Þäì�*w¢X*•ãMf¿A¹%¨°Ý É€Êiðˆo,ïH@S wîŠ7e-§•²dyíÎn"c’ßNÏî9'øÆßdN aF*øè´Ûà“6W]*%m�n7¬ÁhÁ‚?B;¸†½Õâê9PB”¼êÝa‘×9§Y7¤#Íl¥-˜n¾V»Ä´) Ý‹‰¬@ú;7È1œf.�Ïr·/æ¼h;Ñ“g1ºÚÓޛߞܔ¨ supáÊüúª*FÈVZ2‘6ê>{ÇÔ½èÙ ¸½GzUкßwq ”4iþ�ãŒÄH²p³)’yå7Áé×èzî§a�¸ÈW5?óP9u“%Kq“Bˆrp=øB-»¶ãïapª°„ÓÛ(WTÃ�6hÒ±¹öu •°Éà&ð«=òYUîqÃã«“EËÊ!.FJ)5�øJ¢5Ý-ˆ‰ ^ w”ºûÅÍfšÏTÏ€D¥ ÕÈÖà<¿õ"}Í7;±@õô‹Çˆ Ûf>/r^`é}²Œ5€.Û™iËÃ�ž[‘ážè—_²j®å7Ž'Z :öhWÕ@vÃRŠð©È>-¸�Úå&N>Bþ�9ž¡yc`îS÷Šqi,9ϰØÍÐÖCã Û§ß1;kÂŽHÑ[ÉQ&©¢~ù&½GJqo$Ôö…å”˃[¼2z”«—)?‡Y�R™È6Žà�>dÀO«ˆow9û�³i§ñw��ÝÜĈ¸JzZLE="U°1ƒˆÆÎÀÊ´ÑB¬ÐÑ๦cœµ tU]nÃLšD¹®1VßÜ2®ÚÀ™Ií �v V¿‚çöôö!;<_;p*ø¿ÉÈ)�ŽPoß>7«*9“ºWa(Bù ;*È^nÃM„ï²Ñ¯«R©^_Dz]lý¶m¹5–RL[R©&hób*cÅŒÂóKIâB¬^;¾¿}È«q}º®¾¬ÕÁP: ¥º˜#Ó�Pú§>Ú4ÅWEÞÍ$z å-¾�œ¸“'döŒOÞÒ¾P(aq†ªoW™‹|A— œÔ sAÉÝ´×ë [ ³ý»•Éø‰k#Šêh`–×G�­ëCŽnÉ–Ô)²ŸÊdeÞ¾÷È6:ñÞ÷˜ƒºªÃ'ûÝ­Ô!t38H“÷®{gt“HU¤0œï¬ðÉ cq¨Á3ñ‡€QG$Øë›&øi�|x™Ê‚ÏU¤¿ ƒã� °™‰CNu¦›øW§sVÙ)ݽ§šaãÝÞ'j\ô—˜*y0†h’sÞ‘\eOãÛl׈ø+öÑåU×Ak¶“Šñ°/8ê‘{&ã«2µãDf�•Ã)dÀâ�Áó�ÚRmÝ]r°6î3�gE· FŒùÚÑÀŠÐM˨6�”qóRÏq\Uy©Š û â<–’>?jr4"BŸ$Qß8tÌ[×i¹?Å 84@)1ÂDçyÊÛ¥rȶœ·†´Æ<Ï–•Þ_µšG7ÆÓG/±gu<_¾äZ¬¹�*žKù-Šç¡ð!a´ªÔ¥ä#v¹Qp=¾ü¸¾\P´¦ÏXk ÙØVN|ù81»åÙ"�ó�¶kCÝñЫ�r’z^m@Ý‹£¯M>/sT­¾f4 â²´ktŠŽù'ýu&P‚“x‰LïÚ¡Û&ÂÝI •û-‹põUbš¡Ò¶‰ùŠ©¥Ñº´-è”O&ÜÅ+ÊBûîº÷m‹9ß ®õ3†MüüØ3cÈ‘kJ.[õzÑšæ›D+¯\éøYŽùNt* ËI+×FÏ Îåh걊ô>츥ZÆ»jÊÿÞÖåT#f*bÀÞ‰�ׯ¾u ­>ªÙ‰7¾p@l�|áò‰)SÆý–�‹âM‡,Ç~÷�åÏòúKâØ:ßN{Òi‚úh€T¨ªê€{÷T®Ý°§´fyUv|П‡È…ûçÜ$VÃC¾›· ßø²ƒ­†öÇÚÞÇ™®gÊRþ„®‘6™…î“®†y¿sn�ðrïòñÝR†7ˆÐ‰¦„3Úñ ž�ÈC9:˜S¡S¥œÁ‹Çð§§XwñU&.L’¶€½””ÒQÝäëu1� è'Ë*‰œï,+&•Àö!beAŠÐ®jé0‚%¦¨Ç¸k¨®LP¿^Ó÷–!í**:òþ« ]À Í^Û ÇÖR�(U�l1ˆ²¯ê�B÷µ$)ö.®W>.�±2°Âˆ03J*èvòO¹ÂÝ]¨£½µØýæ\LŽNF�õäÉôäÕ›“S Ô{Á·…éŽ|N¸Uh²m¦ÌSÁ.–[ËÎ=ÆFNPU�ÍÃÓs˜´°‚ËdÎÀÙp(ªë¹¾¼Â)Äc ‡{"&^Ʀ�$gI!“¡ÕJL'¢8ÈŸ™dά‡ñ_IP¡J’ÅVRB|.ÕÜŸË„ÅFy�%ÏV¼:lšÉ\nM˜: ­Ïø’âÚTD*�ÒÚíìYò‡rI 2¼jMêÛ�ꙒŇ‹|’¯·Ì¦êŽ� Æ' ?•Ëǰr 'Sa #Š8–Ö­ÃuLøbÃd=ŽÜ•à *ôéèÙèùèÅP~xòøþ ÿí=ƒÿöžÃ{/࿽½Ç?îþfïñ‹ßÓ½�x�Þi°ºI‰Î³”M!R†W|ÏíÀ¦¨Ò¾ð Òß`É ýÍF]©¦ñ²ÂliÂ*ç)¤ B•Н1^) Cî²ÖFGÉfÀÄ�ˆ‰…\�æ ï_… gE‚.ÊÛHtN¹dz7Ð<) œ±"óF‡·Kù8»âF�õ5ÄÃÜ<(´›SdGZ* H󓱾Ѭ4÷ú@GXùÅý^°#̉­5%A‡Rš€zF^KÒ±ÝT é*Š%«©Ž¾2ÂT¨‹¨t[˜¹ ëq“ ÅiuFçj%L«fæû«ªÁÒÓC‡á5˜W„ü—8Ïèt_Â%nZhvÇ£æö1s_&g†õOžW¶ìsßP!ÊóI|±qS®]ñ‡ÏP¥GÓZ$·›íµÆã6˜¨¼!Ê< Q²Œs2Æ ÅZ¼Ibgjã[r£Æ‘çR$²ò^5œuùœå›SßS'ÛRjª%g�+×ÒÔøQË�ürÄ9BX_ _)c ¼t&&ÂCøîš˜¤û,ä½öÄY»Nb}]mcõ…{¼¹®}˜ËÙ5©î˜Öåøë˹O¯�üõðÏðËî_¾ _>óüöÿúEä~oªÁïÜ¿üe`ʾ¸ïïn#ò.…LAØ2ý`¼ g˶qYO?³÷ŒS=�cÛ†CÐ7rëñߙǭ˜,œ]oZ›>À¼ùå zçÓªŸÅ#ï}vß²[ÔÉ£œÆrúòUFzëV-õÁ8b_™ûõ2–Ó-€Š¨:lÒ ù:=WŠñf"&ųíW:ŽÒzÆï(øéÉ .ЯÉxÍÝ,“¸(Dû÷«Ô”¨ü+Ök$Ñ÷ƒàÝíüw5)†¿¡3nÚ9Gw`æä~¿G{ê—%ŠNÔÝ%*ÔCªõWuD�Èÿò¯I-¹¾ÎF‚\ám¡ÅŒоèd]wç~U£Õ!5'Õ¯j îô¹2ù™Ž©P�ÊC€’7Ü\»S—« gæã¤ó"´S%ÍÌ-1Cºµdº! Ê ÛGç)%-â—â[ï[:Ñ—_ƒGãõ&—ÝÎzÆtž Äþµ SçÐ@4 ©ePAP_%·ÎǤ~”¯Ù²ºò<'ÉŒ ßвƒ�ç2”þ/Ö´l6%{„'ÞÚS°zÅö²íÌ+Wlë[üÕw¼b}—ç@ýfqo‘!¹cá–"š‡ëÖ(:æ:n�жq¯ò›¸å �«!/�KµXyìZ[M”'<ú øx-pHÒÂØ’‘<‚+ðØ©ÚÚpÇ�1™êFŽà_„†2J ¿F «¢¦b3­Ö§ Á.~a§ÐÁÚ€`°Òn®Cm›…–¶`Ãìì›0I}Ôéö×-—m” /ý~£àm§ˆ·%Єy"®{$»çD‘z)ÂZÔ°ØîkxFn…pÎÁ'¥[“-þfM¡þ–wU΃ãe¶°<¯)¿TíФ©w÷ãðo[³n@+¥¥çš‡­ÖoeÓc ÂÿrÆaŠPH¢d;²m ×ÃňE˜õ#�j¦q¯Û³+²Â¦¤Áûkq8¡ÑûÉwÍç‰Ïd–^…ø?μÌE;"9çöÚYbQ[r¢Úàþ<ö½Éä¿MGM@d/pªÕ›E)¡w8ëk* .…&¬ÕÒxw†±$ðwX½Û¯HÝ–Æbª±Š¹€�bL‘"1x?Ûd4¬Ç:ID°æj“´ªÄÎÚæˆõ�yÞd–†:vŒ�¼GIY²»ÇšgàÙ5:Éà¨Î¸ó 8ˆ„ÍçÙ?GÞñÞÓ«G ^U<ïïÕþ«­ò‡:Ç_«°®L Çÿéöûvû .ZÙâ*Ÿ4I,9Ó[Œ%³}0qTYnL]pYMféÂ!�¹@{/©€ÿ=åxÓpÙœ<:va‡<©#u")³Š¯ /­ýŽ8hÍ[qi¾$êj_a¦rÀqÚ5º°üû•3r7nð¾¹­ñ¦!\çbjÇ;Hü%ü “ÅdgÐ$÷ó<òÎÝÓ'ìiïûj9 ~@gÃÓëà,ÆÓ'˜+õôÙõC{ª;ÎÓþvžµ‚´Õ~©­s ^¦Ü”±E¾C‰—Mr'9÷Þ€æãJ(ø…@®âÌ])†Ö’},ÄàlÆI5¨ÅþÎAç 7 ‡ ÝXÚúhÿé£ý[ùhµÁûþQ§Z+cR_¸‡çũɓtú€;u,¢É#ö€8ÓK¹ p]Bçÿf7r͉Øí.�òÔ­tÛ>åÆ5Iš/\–7/àGøãGíe¦M,í"/ý߯Y]­— þÀB^Çű�í1!¡áeyôŠhéüöi†ð£Éâƒ&ìš MÀ£j�;lú+"o‘‚–IÏ@�PCRQY'ÅDÝ�®Öæª1Ï]îC©7¤æ×q…žîˆ�oƒm€&ÅÏw!üÜ[šJ.­OÔPñº UB!7ÔøÊW 07 M¿³À‡ Ér£Q/d\C%Í)�\J<Æo¿´¥¼kè³´*Õ“Ó¬ÃùÄ9:†ðÚª>;?%Ëþ¦£ ÓA¬â¨lHj¼Ódi`@L ü(˜UÐ,.âC×ÊÏ^Û´i©c7Õ€Gw¦šüã7Þ}þ…½&ñ¹}é• HpˆjO()kÉêù�O(KdšÁÑš û¬JÜ. ›®Ö?°ïÇGF×3[’ªÊÙ ¾kûªØ�!�¯iò¿Å×qV&7º£î«×°Æ|ŽàoÑ1(Iæ« òq)L=W[Ž‹,N'´ë_£î”A¯—u‚¤ýGÇ‘¤¹XO  Ô«™Á”eÝC+A[ G€2Zò«¸,Iûžù‹µÆ¦F‡ß °hŽ1A`Fœ’¦0—Œ˜•x=жšž;S > e[«ödÌœ‰f™*•¾½ÌÝ>|•T?¢Égm*í% p Ø�©VÆ Š¯“fÛo�Çw™bœ³€.”òƒû¾/‘ g+~k8jäå=‰ÜWUššÍéTjjÈÊ›|C"©UÎ ¡ßmã6ÙÙyæöÞeMHgÛ§FS±5‚D ¤£ãܽ÷�UE¦]‰30×úI£½pw%ÁãÜ–›‚¶–b$.c5ó!Õ]èÅÀ€-›äèä-<ç²Ñ®æTHÕ` ú¦¢;lpçîvesßàn¥ Û®w¤ˆ ŠÞ¢M6‡kwÄÃê¹bé J�Ú$ñºÚ�‰Ö;ÚèEšÆ7’û%ÑÀ:,6iïsjÅ5Ä, ióì‚6¢XØDuÁï̱¦„7ûŒ@²¸@i¼Êóe?ô È{O±»¬s@o–5”Õ�AÑ»kcŸûi+î¾ÏÄ#ØOñÐìùìu p�8Ìí½lÝ(F±ß >?ü~У×pUŒRݺ ä UÐ�L{wódù«ÐéÞÍóÈuy¨Áƒ°�þ¸´Àmƒ^‹¨Ã`pé)­Ü†Ò°Ù%«päæ"gf#$Q)rÛP…·×y¯˜§�HÈxÞ¥ŽèZ�â:3…!?9(¸¼ëýî6|:¦‹ˆVû_pÚ®d5ØjSbï.æÈ4âèr“_&ËÌ#:ÇÆUbáNñy›Úì2ò@P3§ǦåQ‚+ðf¾ðÕG‹S”ökì ö¹(Hm¥Jw‚ –)ãó°* õû Ïš5wå¢v©ì­Ék—é×2Á¦ Í ¾ “”©…jî (Ô0ßY/¶Äñè=¸LcÐÛy¯sÍ6:Ò£­PGœ»Î´ÕNF§Ûs0êÕš)˜ùƒÇÊHÜ­íu³gø›ïÙåÚ':º­¸/{6GD½�ꇄþV5µ¶§X:ñ‚õ=å:dÕ8�4ÓÁîîÙÅ+KAº¨÷ÏjÍ_d®7!gú9XccÏçôØpiµÐúæÝÀ¦:tÿÆ~rì¢6i£¸cŒ S’”ß!b±¤a� ð�ËÕ6á›ñrݪÈOÕ�<o M¶‡¦«Q׎?×ëÚ(ðFAQN*ŒKÝîÜEuE+ü:ÆÄ8˜¢«ÒÙGЄÅFÙQ6×:ž±±‰jôÌý ÇúMR£ä4t»�Ϲ®ݯY.DéÛaEM!Û) á̼Ññ6ÿ*a\i©k¢WömÆ‚hòó-©,œQP`©óQX^ÏsOšÃÙ®²ÌêÆ‘çŒÕU‹6< j*õo{©eq¸Eñx)X'—«< ‰µuC„ î(è:\æ:*¯7;©\W ŸHÖJ2âXņ¸@¹Ÿ‚6z¶;'‹Ý�dµgd0ŽLÛŸu/§yzR0Ÿžµ?I™g>o iP1«#«I¯Ä$Ê5™f)^0ÈM¶pƒ¾¸Jò’¡´„3rï—>^{<Ëη cÄÅfüàjòoèZÐ’þk¶£Þ¶¬àYǺµ®ÖY×�«•Éáu= Õ{Z¾õz¶Áûꮨ¼‘#E²3Ѐd®§t™¦ùô.*‰ß¸Õ† öiJÚÇrﮪš\:Z]Ö�*7¸ÞžfÛ@§ˆó‚è0ñv<ç3‘í¨gÎFOÒ�ð6ñ}|ï]f±? ƒÉ*ú~2d€1myE©Ÿº3�ÄåÕ'ßRcª³ OÆ 9¡æ y‰ß-÷,JûXÖ=LmÐIAkËg-m�œMœ„ ÄäAR\6Ö޵Éì� +`+¯a͉"1ܺƒÞ©Êœ�¼¸„Ž6‰m#KëÅÅaŽÝ"Ò#o^•õЀ’kã7ë4G¡£À뜛ŸàêBÍ×P~Ê1)ÎøR8zCFØâìgÌûÖœ°§ÅBgVè©OR^µÃ,hm­8>Ž&{˹i¼Xsõéãc7ÿ´½wKË")› ù÷b[KfKJ[‰û¼I­¤ôA=¾`ê^ï”»ak|/%k¦w3×^ä1–*ÚÅ*[Ê$=7Æ °×ôíz²US_Õ'£> oÚZ07nQ鑤ö|YH°9©ê&í5�qï-ßÝVîݽzžBKG?Æó’á {6mãî¶rߎêÖ|õÇ}J2\�Û±îµU×oôél÷’Ks½VܳÞÍ&îÙ±ÎÅ–ö{­µg¥›Mܯ‹�ËR\¦�V:ïÖ1ȯRPB yM°³ž¬“² ìîü-)¼q®�qx?Ò<3­wùnl* ß7áäö‘·Ûà†¢ËDòĵ�Ô“ävXÂQÊ"¸•²Ö}•&óØŠgÙ~„�šž~«¯¦Ç±øÒP‡ÞÖïB—Ø€h,Àhï•Ns…-ê-šUìÕªý¾Ž]õ|±ÓØ0¡Kë ]j…ú%Š?µ‹{©oD>ÔËûDÞËλðöö6ÒºWTF‘Ýé˜ (/ÈŠh:R·¦‹A7•æ‹öÅq6ÅoA;­†¥´°Â´wJ-ÚÑŽ{–ª©œOvoÛ²¯eøíw*ã»ã7··aèë`§mˆ¼�›^vC¸8ô…:ˆ¶t¦%*¾˜ZÖ®:¾�òo»�ÉfqMŠî=ލ›«ëâš°SC¤7­€D-?<’B¯GÈ{ïfíõp½N·�ÖXéÑ6’1¥“B7Ï'¬À¦ûÍsz.±_Ó¡ W�°Hé^6#õ~¯–X‹^ n1$$Mlød¸Þ=ÙÃ\"JVÜœø< N|L”P¿x q6¹o9–Z QSîÕ¼b4±êk”�—_Ø,¦†z ôÇSøœûü°ç‚¾»�_ý‚¼®±¹ÄuÑæ¢îÀª“Ú‰ÕH˜”øýàç{ìüØ>ñTº¾ÕÕø^�~ëóTJžÀ(´´TÓÜ»lGZÙ#jLø Êûg ©¿6¦Ñdãj›<*íÏ´ø¾ä#~FÙŸ{ëšîï*Õ³�´¶©–þü.;jç'ÖÇ¥ÚçŠT«íBNËß믑:Ö]O–½ì»šêÏ�ÚÛe„àtPI+æ)¬¨v ÂcL1bäCX-.fÿû( Š¨Ux ½ª¨3S8Åaø.S9q³ŽØzŒkj¡ *&ís}êCWÖ®PW |ÊL‘‚™C̦]:öŸ¿ì’{“1ó9«mXÊÇk�”ÐÀ/¹” ”‹¥�Ê÷Ýš¨2VtÓšt}‡YX3GKùt“'x¦Š›Ïp†œãŸŠ(Ú6KÄ0Âs¿8çXÓÙ_`Q²´Ò±ST¤dFŸ@Fw“–ÅfÚU)ÖϾM7»ˆZ¼Õ­ò«6óL©�é~áÓšÜ ºZ÷®ˆåÀåöÐ'«WlÅÙÄ«óé¬PÅÙÄË£ñÉÄî†'šò )jqˆ¶HŠT¢ÉÅ›ñÑ@UPõh>$E±êóÝ-�PŒÚ’[Š8·èÌ éÆC¨ûŽ:6¬Ý ëÛhU©Bª°]~èñGñÜšËXz£Kç¨¨Ç £„Õ{²ÊU�êHAA{ëžšÃQ(ºa­™ƒì>­XMIù¡UÂ�çóÜ-cÜ{€Ütô‰ç«Ï�ˆi_ߘíMÑû,9â”BS-/Ô Ö¨˜ühRqñ|ã=#ˆ"of»Ä9«‰e#C"Ó)}¬÷�èh•9ÓìªF¶=_¿» ¥î �kª²ƒ[ôœÿê9 bÑyë:È=4£Ë"O«U6Q ©bq~P %D¥8�Ë*Ýú0SN¦'¯��ù$8?˜½9ºïã¾Q¯M‘¬¸ î¥ãŒ•‘u+|Kq:µEcØ^�Ë!†I4FfÈÈ{ÅÆkVÍã!áûþ„°§Îèé¨NShiœ¦ôèÍs';©Uøª²jUH kë]óèH)Ó©_&Pµ`’i®¹•Äe?àÉÌRo•”Žõ1‰–1cŠ*“ƒãl3bIÙ»ë_>j¢oÞ�®«ÆVûþ_ `š·qü-ò î·Ï÷n~ä ([êýO$Ub®ÁÞ ]�¼*â-¶7ð¨V0Òên‚²”™w©\±»Ü}F¿ŸÑï-È/ÑK’“ 9ß^ }�2 ‹�šŽŽd&G×þu¬¸¯ÚÈßÐmQ�÷º*ÖHÍâöݧ"&UW¾ÍÄÓ™ i Ê~û–1VZõLyš$ õ6èÓÊå‚1¢8üoœ¥áoöÚž>YyüLC–ÁÓ'l‰Š/ýÁS·ŸE=�tÑA2Tãz¨;Þ5½£Õ¾a€$¼ù9¢¯nâ3ŽÒ¥T„¨:'é@^@q'�Ø—^õv€:¾¦´TÚ‰-‡St#Ø–1åo ˜}Õ›^®ñZPΙóê·É1È8Â<èF´»97 U¹ŽÉ²'í’oxÛ×�Øùì‘M•˜´á1;—µò;Öi¨å¢K[,ág„ÑÅ =îÁy‚flkì(bd‡+6‘aÒ±ä÷âË«ðvF¾ìã—(*3BÈv»Yd‡Ô6=®^Ažïdýk²¹žL÷Ïû¬²”4gåØé•gÉl�ú©ö´ÁÃp®à[I©¶ÞTæKR&ܦÆÐáV1(S÷AHÃe à¸Ý5×¢’_…ûr†æ°SuD@ÂZ›üêAáÛS?9¿‰ƒ$«Ê»�Í0FÞ«¹�w�f¡Þ3ÿùGóÿpþüà¿ÔÈoqïzœf—é´{;¥ÿ*Cm¥q¶ôJ¹4Ï–ÉWëÓH€B£#z[:æaÃT¯þÉN”éá$Ù=»ð'lÖw„R©_h¬8xó''Ûé«6áÎIR�rÉ)„Žúx‚ˆRà­[ä+°ÌQ ¯BOVо´�¬X±.…6Ï�ä59‘jd!€Q.¾¡ªWQ¿„¿€Ää[L ‡LhY78iH³jŒhf?ÄÐW:ژ²ü˜ƒNE|Ä RÇ”5`ˆÊáK×iJŒ�þ„¿#2œ€imä9Í9ôéL~‚�a8õÎÚ`ºÏ’1á–õ=ô¦”ª;‡ì!Xý4PÌ­ÚÂíÔ"1´L('ca‘^-ºbÇ󉻿5¸À9ªI¿Ú^"ýúÜ¿¡ð´y9žé|ž&KÔŒ™¦zí<�Ù «•$Y¬ƒ`[—W— Ýò¯o•J—a§¦MI‰îç3u¥Nf‡¹Ÿ!÷(×>†aPf/Ëxq®áhðL-.q�˶ú:øòæ™ÓÏLYx¹ö»Ù(‡OfZ(â¹ÎJÍ7ψ•m®.¯6ëK„Ïm'ÄïR^ƒ¾<ßvä€HÝd�oãð‚%Ïõú2Ya¬{³½ääQ«s#êжÙ’ÉŠÔ3Sij(>÷Xæk¿ç7¨b’è)t— Z Ìú¼ã´ ŸâÔé‹çà2æý�dQäY§³àÇÑn3Y~Y–eÜbbä}ÍðZ令”R3›Ížs÷'goFÁ,A£à—ƒã7�ÿüöx„Rì†Ù<ø:¬2q=,µ ¯6ŠÆÐ ©¶A�”H"!rÈí¥p]—Bçi ‹g?¶NÇÅÀ’&Üôú™”;Õ"ç$¥€Ã¾-ñ^ÊŽQÑaÚ^n)"»+ª÷Ç陬у’®›d—¤Æ¥³/Ü6á¢óS¹^îWõRÖ_6=¼äpkmC³fŽÒ7 ÇÃã[ÐîAÚ³¼kü†ü®(y>&o2ôÇ ;gÃ1ô™ømðŸæF4¤üM6B„#"AÍÚwÔ†˜ÏÞ€9jÚ?‡WŠ÷}’󰙈¾¯åF(å ´îgɯ_¡©D¬®g—ü2 f/å?d'H¤´H“Auƒ•Îßßñ»ç¿ÿÁN{fÃâá]<‚í…Xõ´ÀܤŸnP¿l×eüïÿ>ÈÙ£öÇ?â^˯èßTk�üŒw-ÿ}/þü‰5‹?b#ÃÍïØBbH,æåìš||q¶O<¿\…Åe8/àÏí%Xøðÿée¸ÌÁ‚Z_æ‹ ¨7—Q²ŒJ˜­ÍƒÁåà!¨'ñBÀP€ žN« ©«ÈÁ{¹J(?nBøËû ŽXyy“ Y^"´×Ó9JWƒÒ7hu„Mްő´7¦FØÐHZ9Û8Fÿb„]‚·á]x ^âWj/ðtÐL9ÎE�ÂËqF’ç$ÇIIðSø_˜˜rCsƒ¦ßЛ ÿ„i’A´úi§w­Ø{:$wj\G{ƒ×{«Õ`xt1ã÷JX¨£½ÁþþãããÇ�ÿà¯ø÷àEñÇðÿ¤~åû] Óü7 ZžÃÝ�¢�ctwï͇Û& þ­$_2,ËuV$þ&­ÊÈ¥·¬2¢ZXá¿H¢ü þúo‘Îû^ão%+ex}M¿ä,�aD/rü-¢ß©¤Žá17‹›÷ø˜ÛCþ¶¥_p„þ¶¥ßIN- &/"©X€pN·˜(øùò/ÅHÎΈsl†Y•¦ÃyççóƒâÁ‹Ÿ~|ñÃÇŸ?ÿ×Ã?ü?�ÿ+¨ÿXãÇ X`ó¿9?úcY,.“§¿Ï.a‡ÓŸ›ÛÍèéÏŸÍÿû§Ož\½ø)ü1½/G«pýÿPKÒV1]iá¬7�&P¶Limunify-security/assets/ui-app/assets/static/other-root/3rdpartylicenses.txtUT ëÆ«jëÆ«jux è‡ì]ësÛ6¶ÿοã™;µw(9qÒÞ¾f'Š-ÇjmÉW’ëÍGˆ„$¬)BI;ê_Ï9HP’mùÑÎnÊN6Ipp¿óÀƒ&|"’C]¤¹\ˆà¢7Æÿ±s‰4Ap¬–+-góœíGìèÍÛ÷­¥™Hs6žå’§ì"úU¤HÁx3•Ï…f‘Js-'E®t—B/d–I•2™1ø]LVl¦yš‹8dS-SS͹ž‰�å :Z±¥Ð4P“œËT¦³€C¯Ë>™Ï¡›LMó;®Í¨<ËT$9ôÇb �ç8ÞT&"cû@T°7²-öh�Xð„ÉzÌýÄîd>WEÎ`’0�ûá¡()b¤ÁýœÈ…´#`sbQ†�Ìé ÙBÅrŠÿ/hZËb’Èl±Ì oàË ¿$^‡8�C¥Y&’{�@7͵¢Žž�Q‚%24·,¢qïæjQŸ °hZè†1MWËhÄ‹(Ç^ðñ©JuSC‘Åg”ýcø‰OÔ­ ¹ HU¤PËJªö§lÎ�ö‰ Ã`\`/÷¦£qø,ÁKàýRio}šmÿ¬ËFƒÓñugØe½»~ë�tOØ^gŸ÷BvÝŸ ®Æ žvúãÏlpÊ:ýÏì×^ÿ$ ºÿºvG#6²ÞÅåy¯{²^ÿøüê¤×ÿÄ>B»þÔ¼Ê�Ž ´]õºÐî4¸è�Ïàcçcï¼7þ²ÓÞ¸�}žB§vÙŽ{ÇWç�!»¼^F]þ$èú½þéFé^tûã6Œ C±îoð��Î:çç4Tç ¨}ǃËÏÃÞ§³1;œŸtáË�Ýà¼×ùxÞ5CÁ¤ŽÏ;½‹��t.:ŸºÔj½ >f©»>ëÒW0^þ�{ƒ~<9ôÇCøÂ,‡ã²éuoÔ YgØ!CN‡èÙ -Ô ´ëwM/ÈjV“<‚Ÿ¯FÝŠ–“nçúacÿa�fð!�}iå`ðY6z)m°&ø°ÔjªŠ4NÔLF‡s5ãiÐYòh.ZGí7AÀûÏ<\"ÖOþÖ‚Ê ý†ìž\¯ÒÞ¼¿·Ñ<Ï—?ÞÝݵ9 ÓVzvh 6;$êÆÝáÅE�;é!ÃŒŠ\!ƒ‡]ÐÜ“+âcHO�ôFãa49‹¼m³1ˆ#[h»)ïÙíY«Zn°&³ËÈ +‹3Öz´ŽÆ….Û>[‚r€g~0$(ñHD¦“·Ð¿VÅlÎ~(QÖ¡é:]JoV!…ºKÁIÐPæ+Æ @M-ÿ ñl?ÛZäsž#n‘k@LÊ+Ézˆ€G—ºÞ ¢Hq‚PxD½8*ÐO$‰íÆø)ú ¡‰†&¯¥€Y-܇„ˆq6ø-¨*¹·ÅB¥¶'û ¹Ó�°ÍN•&:–…^ªÌá¹´Ü—¾Œöl/{4ðXòÀ4UwB‡ >�  ýÉÔü›\XÄAèøœíÅüDÐlÁS>(<7+¢¹%,o!hú }—Sß>gî$jô²/�O6—Kìi*§9¹ç»ÞÿöÍÿÐp`Ô–ñ®£"G¬Gljb—êz„.'"&Dèj½{tV"ÿ¬Š=¶mñ_zïÀ—:üAžÜʸÀ¾4óõÃv ¾µ2CB*¯•¹Ù@bÙPµŒ� ‚y-Ö5 ⠩КӯSâø AŽ_FdNÀe ÁÀÑašÂøæ2–Éh@J ܯE2¶ó@èì*g…ö"�Šô¹ùMÒ1´¢ï@EBö1Õ;,Ä_)Pí „àŸäN¡€[ ã̰‡º ë´}¬MÌf)Ñ ”‰AÌ4g  z3tóÑ fzkЛ‚c» KÎòÕÒŸöµÒ7 p_Å„C¨i• @„b§Q€a��Ö‚Ç$·\&|’8û÷p)D4EŒ¸U%^âÂZääàÍ�ŽVò} qÈQk»Ø‡ ˆ/|±L(žh57 ñÉÎr)`ä/`LÄT\8ZÞ!~C†d{ë€clç��½íÉðÀ? /%SŒq Ô~ЃU8‰ mán.£¹ ,HÐܵ¸•$JÔb`�µ&€ÃJ»OÐ…³oM¶3ôr”…÷9F¿ 4“3™Â(›2ßÄc‡SÓšùCœµÆ>Ë=Ôf+;êÞz -�¡8ûK®IS�/4 ˆÿE²;HoˆqÐÔ“”/Ä�º ÒS‘“=Y2uƒ(äŽPÓJêÇ.éNm•øº TyM5^É@kpΗ–t`g5™�Ç6q=)Ãj¿ßG|èEލ¯`èÄÁ6$ €<\ÜAÚE”›„2­È#ß+œ”ÉÝ=è-ü@Q™†G}Ÿ`æXqð²›·g{åœöl_Æß—° �D¨€qˆR˜ð„ôèNc»”‚�"µÜgh>ÓEÅ(äd¥¥±ÿ³ðAWTb—?ü©hD” 6†l6‡Þ<—U†BÙ*ËÅ"ó!|n!Ð…Dä#íFüèùL´RÆZ>ÓCFjZàqù1nTdäåiÄᥠ#¯ ñ*×$¾8&Ôçêô¦’-eT¨"ã]p}ƒÐ§«èÈ…\"“³”°TeDŒÝª‰V{}à7g¾­¶÷6Mx-¾.§í,ðÑ�Çg ©Ôes f"@Ÿ d„ä@´?Ne„™ø½ýIpXÈݖʸk x=ó3@tÔfŸ0¬Âa«ê‘‹¬Ø¨,?ÜŸÌxf棲/É<Õ I@p³„o)ràŒS?€¾$¾“k¤*m‘ä3˜1~l¹ª“V+žä«V£ÀD °»Uù†7·ùè²-,ïhD~±‰tœS(.‚¢.¾ «o€fãj× BUÞæ‡ù%S°¼1âwNØbôÎÐ%GÐý ¤³ÍÄ2Gƒ”#w!– MBtÀ–f®žô \‡ÎæüVP”ç¢ÁžÙT»êÇ«x¯Ü´œ<©B7&«k¢ ™\2j-Å%•�Y—ç¢*ãÐDQzNWxYM�áK§|%w±(Œ˜�‚÷m6~e¨MC/øªB¶uªU¦}ÈõÄd�™7ޏ^Èqëê^õù)©™Û´€dz cº0¡kìVMû¾Ê±Q¹z“»í˜”¡ÙÎ(½C7B¤enE±0 AhžHì@&º0Ràb™Í §#Å_Y ¡ŒL|‘ñ¼%C´˜qmÖ•Ös»ð@¡ @2„E/ŽŽ!gnBnƒÙÀaˆÆÖnƒ/°nVF4Xõúkúö#ÐduØ<ì”ÖQì4¥JSµø½�võz2A—N"ǯ¸<�Ô—!îˆ`‚VeÒ�•Ú�ú¬³&'7ë ¶¸Ã©ÿm³™Qê„‹¶Sv ñ'ðeUAIêdeXʼ1Ū`€¤HÉKU +�YÛÏ*R÷‘V,¬§¨þÓX¾¬ ÷ëZùvûØõF޹k[Bz]»¿¢\–÷·ˆ0!Í ð¬ŽfÕL$áJì•I+ ª¶ý„¦¨nXe÷¶l@,0sÜŸwCàz¿åï ÙÆöè ¶ÃÄö±¹ÏÄx[³Z˜àÊп„A%­:ÐÊŒÉ ëê’Ój©q“TJž‚vá#¤âzõR·µ b"œ®ƒk™²—;®È6 Ôí:+Ucý…ÖÍdÖèÞ÷mø\Fç’OdB‹ç=ô¼ Ÿ4':LðUBÅN 2m¯ÔâV²@�r¿d�ŠY"!úŠÄAX®v‡µRnYùyTß÷M €5ýDN( #âfX�(×-Ü�9î@Èhu|»}ô¬¹,Ê8‘%’¶-_ðY½†�­Ý–€js@¶¸¶î­>ƒAA`k–0€15]\�³�:„ÆšÐ�åjmÖÌÑ‹—¾W�×]âfQbLa¾‘©¦‡«~Å`ÿÁ5qGN;QFagJÅw2ñk‡7à”ÕrÉg´ïn±,�ð)—I¡�7âÉ´H«à†œà–� ¸ €Êëóà ,2PÔC Ð× q¶�²˜Îã[I‹¤S»},À2Ámn°Ý ø¡Í:úä‚C^¹S9jÏ(®çº×Íu}±ðÁå6…Fs¥L”*�µÅvª¹BÜ6„'uD!O#a&±4eP‹~+Ò;±HqkIU3lMíLM[…ÊÜVG»mµæƒöbó+é´L0ÎÔfB&•,Füô:®æG;ZÒÄ[ )cn»,BE\û5i£D/E:Õ*J…èU¥ÈS[ÆœIN >£Á{'ÞLKÞÄb éŠi‘q¼¥tÎõ‚�È×%+s.´®VËlå0²rLVM5ܬOV6ب&´BT<-ƒù;O½°±¤Å(p·‚~uÛ6¸ ø€ËŽzÕ¢Õmh|8Ñêhl�â&ÙãÛ��Þ´à¯÷ìÔZ0 _í…í¥Q›ÅÎF4È+m3®JyÁ³¶³{¶OØf¼%Þ`µmÆÁãÛŒÙîÛŒƒ{¶³çm3êÛŒªÆ¾l›1[ÛfüÕÛŒYµÍ8xæ6ã�80Øe›1Ûm›qðÈ6c¶Û6ãà‘mÆìIÛŒƒ{¶³gm3jÛŒ ÜòtV$\ï€/ ´4ÐÒ@K-;C‹ `v8)õCº4øÒàKƒ/O—òhT. ¸4àÒ€Ëk€ rV­I�•¾Öd•‹V"ÒY>ß!Azp‚µäœý2z]$ ž{�{+’O;Èý0’;äÞI‚èÁƒÜ;"IððAîI$ù«�Ä„ká¹»¸EȲS!·Á‘GipÄàHJЃ�;AÇ/JǪ,WÑM /¶›”5•ÚÍ!>$¸MÅö¨g°vŸ¶}oA¢ú‰ûü^°sJµ®ø;8DRžJ3ðMúˆ¡Êxš‰Â†ÝO�¡Õ[è¬ê¸Tqle5ÿa¿HWºZÕ~ø*×-~mtÙ=îuÎA3{Ã.êŸù—=–4êþßôÏøÊ‹MÝÇë³Îx4€‡ ,öê|ìô‘�F#¼Þ•n=éŒ;ØøÄŽvñ—ýî§óÞ§nÿ¸RR²�ÞàjdTð¨ï´º~ÙÂä/:ÔëiPc¿ÕôH%JߣéG�¦7šþÕh:üçy4¿GÙß6ÊÞ(û×£ìšÏEoý«WtÁAã>ŽNZïZÇ ^âô¸Æû¼yˆj"tÎ.EŠw“v@�l‚Œ—tê[º›«~+—9þln°·mâ7xk›6·†fwjÕîë´“c`Ó¶eºæZN‘CÆû�µ{Â(+õ/þô®–zÀ´Bw´¯¥ª†7X¯Q—·´·Q#yp¸[Ë "°÷c<‘W Y¿•Û•½¬˜ç/9öîj.¯ ª]´†3êÛ+ðG¼5¢¼É‰n¡Å»}ÊŸ2KhY7¢C®:jm¯mi ß {ÅBáízæJЬvWóš:}¡ã 0ÐHÒ±fwÝl…‚„t5Dò îãg²¤Í„Ýž 5/=À´ÞÅÁb³á�šW™·”&BÔ6 ÅÂÊÃnàà¹{rfV³\÷§ VS¬�)MÒ!g…¡0/`�[Bm÷_]˜Kgøù~Œ öáˆäøjHdÃèêãhÜ_�»ìÓ`pB|u‡¿õŽ»£ŸÄaæãpèñOøï�W€¡È³^ܯ.:@¼×„ëÇhzBÌôiªÀ Á�JNÛ+0ˆã›0ŽÇþcX;÷æ¸ é±>sP¢;9‰Ï 3ŸЗ�~J.´,Í„$HÖ;e�“ßzH¶}D?êY5!–ŸYv[Ø7WdÝá|×D8M„óÕD83¡îÑó÷�ž7zþUèùØÄõ;™A‡? Z¶œËè\NBV¾sämûí‡øú* Gk1ý÷`ðûñœk\Oû•ëT4Ç®ž}ìÊÌõÕŽ]áÂ^Ðl xæÆ1OÛðèkï‚ì ØWÏßPÔà¥;Ö½)Ý|³TˆM}¬ñª_µWE}U_ÍTÚèz£ë_½®gOTo4ýo éôú/Ùàz£ímÏq¹§ÑôFÓ¿~MÇW—ÉØuÿ[¨ûJ-Eoý+Wt¾ú÷G¡ß~ß*_¢-ùâ¦H›³ŒÍYƯ`É¢9Ëøü³Œ±Ë–ø½ƒ{@ŽBüûýýžýBÛÔÎ@‹$ û_þÁhQtÓNEþO|ðÍl À3Ü)SŽŸ�¾“‚†ÍÛ‘Zü³¡„ú›ƒÐT¦¢óœ·ð�UBç«�®ªl®fh�¤A’IÖ‘Ä‚^éŒ0‚JæA Û‡5@9¦øæÛP@)%xÝ»@ù/”šø@šø‚åúé/øÀ܇ûc“7x_ÿÛoCö«¸¥w^G7B³Ÿo–1ýëà “%“þüY‚Ú�0öÂaoÛ¯|"ìGÂŽ6ixÉ™°W=öìSaïÚ÷ «ˆÆ·Š-ĤyçûçÄv>%V2䑃bú1±x•cbÁÎÅè×?&ffyÿ9±ÀäËω\_~N,(ω±—ž jçÄØ ωsNŒ½Ê9±Àž+5ö¹çÄÀ;ÍóE²v–Çÿ¿cCÃWŠ�âÛ0S|Ãõ<Ï—Ù�‡‡:Ÿ.Ä~¼=;+&m©_ýÁƒñfðÔ#¯oO¹ìiGŠ7ƒ—Ý ö×%°»Å›ÁŸoî~7ØÃçnŸy7Ø_}‚àñx3xöÝ`/8A@o=Ç6W;ÝNÚ=¾èŒ"-—9ÍåâµîlrÖÿÊœµ)‚ýýrÖ�"˜ÈZõ:Ø.ÅôæžãGip¤Ž#BkÕ¼f¡��>øx|ÌDÞ’¹Ðò¢¸kpÊ‹°1â—¢!7lÑ¡„\BÉr®ÇP¸¸~*¡9cöŸ}bm¸�ˆÐ9û<â[ìDüƒöó€�Cv£Âÿך-6³ö—S®efÓ­O9Ô>î²O¸ý“…¨—&(ðôLl�Õû]Lvêž;Ü`{Ï™+®ò•Õß×Òlµ[ì|¸À<Óü7OõJbW¯¦¼Ðg3�øÌ�çùs¨mš¿ö!_rÄw~±�;ISÌàï8\˜5I#³Þd=*ÜxÌŽÕÆÚ¤7íqìÅÚï ¸í­ü¥cGÖò0wùÑ“m¸¶³U,6§Ó‰/JŠ®ejå•ÔrjÅ*Oq£²–,½4“0Ÿ¦&›ÙÚÜ4Ø&;K6#ŸADb '`Õ6GÌwâ¡­ö¯Ÿ¶ö^2Ÿ›|(·Ý™qÀ; t«ãàÞw¶ÙÊ÷j’¾äыϜ´2mž%@Ð1”κ‡gGÝWÿ=?nw~ì¦?5Ôýd[t×:õN·xßG¸{t�µZ,Žd]ï“anfMù°ËjÝÂ(̦ÂÞÏ¥ü眤Ð|-]ò0 ½Ð†WÝÿBË•sêXh3qi‹+4à1j(ˆíuÄúñLø5¾§5BÉyÇÛJD©ë¾„g0({i·Z©~+…Hôö³îæ$ð3CT©À« ¡Ó¬¹{�°ìÌåy8/JS(EÚe}ÏswÕEð‚sÓ‹ÝhW&•9Æ}h·¥ ±›»nûçI“_ ôÁ�š_dOq¬.¨» hv ½‘i�¹6ZbìMKÌÝŽ=´AHÎ^pž ݹ|\yúØ¿ÍØç0¨¥]¢¥™¹�"�è…Ð’±,ãÏ0Æ ;¼�±?²(è�ç�ßéz0ô[à…äF|Ó;žwÁ8ôs˜-N\Ótl(¡e‰�pMÏÀ‘Ï­À7Ï#xàìŒe9B:"ànb�–•ŽKnÈÜ Õ!Œœœ¨!ßZKw-;D7i?¥$�'Êz´`�Lñzå+(Ó†­%Ôp©Ç,—"T ‘ÑýL‹Tcú±sñbzI+IT/ªƒŒÖçýÃ-öh{‹í<Þþ0¿j¸ Eãs~™WW‘R%áüᢛ�¶Ý…V,º»-šI¤?¬î<%mnm²ƒÁCf^fçkX]4‡M°ƒ”Îzɦ÷�&Û>è%8ïnÑ(©whƒÞDk¨0& ÝÍœŒ=6cažê)Ñvå™>Ÿ„É3lÊß`Ïq#‡¦ò ‘®Ãi‹n•Mi5£Ð±�åà AmÀ±{ÉÁÁÀO8/6æq½böY£¡C|™6hp¨ ›b@çÍQîÁ‹V<ŽÚlv]fòPu¡ÂÎ#aº‡„ÂÔé,t€Sâ€Çœ«¨Ì¨Amž«>Ù¸†€U§Ü®â�̼Ùgª½?Șfài�æ¶€»ÿ¯fuA_絩Ì^TmWIÃÔBE¢eLr�Wáb¶\ªƒx:Œkê.{ :kÄC^ÜÇÅyè0•.pç.eZPâPB%è(êÏ’·Ëëäì cÖªÃ×�F¸%‡Vöv:Ȧ òyQ®‰¥dÑ“]àÁÉu%SY¯�éuŒA²‹‹hÊ.”ü´6;\.Û°Pȵ ¢¿µ.¹)�_e*ázWxZSRu³µ‘˜ üy+•š`Sì¡[GÏ~‹a+’™)þàŦ> =˜$íógÉ¡\&?3òãPD‰Ñ¨‹×¬¤ž3z¯'ý J¸1ô¾´Ã¤«Ëc°IÇd¶ac: jF5ö²wñK{(ýðŽ7g À˜µOyÇð!4-é/ü({K{�iÂ�BB½=ZPšº,·éwºò`oOåO.襔"Š7QÝìÎMöŠoݲH~Yx±¬[þî~�UêÍ“W‹Yæ×�¯úW’äZ”�HŒÕ«@ˆwj)¤®W™fΉÐÞ\�c¶èÆíKn;(<·–þ¬X6NåüQ%Ò= Ù_𳡥Ï5FÃNß÷db3Àãr&¨³ÉÔ_¯¬�êÚw<óBèj’Êκø!H)�CW€—A<€'2Ûœ¢Îvtä‚…âq1â#žQ9éì@.£BÄ>ãê ƒ´„V^«^AG «®«P±?‹®¤°Ùç„N} {UѳlÁ†$Р¨rw¨œÇhü¤¥\Üú¤°ù4+¿€èCGœ�é[X¼,|ê&ÊÎyXÞä7è…\›BXØæÛËz°§Lz*®Ú­çÚéÝæ« ìK4z:–µêB0ßàjÔ [dƒô2gzw@fíé­åµßÍ-îÁ¬Š‚%š½¸W®·íw¥†öÅ,kJÓíΦÃu¶üÁÔœÇN4ûÑ(»Œ«¼xСþ癋–ÚÍœŽ|*tþÍŸEîßàB¨!·:c7´Í Û·é«>úª�¾ê£¯úô¯ú¢Ê¿)TáƒðAøÐñáùVrì9ˆD"Ç”0ßoôaÞíF´I‘B!€¬�4ÖLáŒGU-pÄëºa2b¿õˆ$D"ɽ'I8÷=§Š+ò„\„’Hä© Vð@’B!€@2€xWîmÜÈûRÐô(üÄâqä^sÄÆ­Ý.w¡ãE´¬J!„B–DHØÝ–jYõEvŠ%_6¤4ÖÇŒ™²6–@¡Æº_,bÜ�%e/1ˆ%+²$}±ˆñU¿XÄX�%¹‹k}±ˆdIÀ'�~<ˆ*Ñx³ž}z-Üá$æ ƒ´LB¾ÉwÅòMî䛨-#Hò3Mm„ÂGê¬Vß{©ù í~' P(zÈM Š ‚ c2Kˆ%ÄbÉXbaÌMrM'„ÂÉÝq2æ~¥ï€i�•ÀAà p¤‹$*š!9"Äâ ñd ŽH †âš6“Ðf’ûÚLr§Í$¡¨¶©•&4ä€|WÜ äN��@XKîE£3zÄâqDçˆ<áK+" �ä.+"*Ü‘„HB$!’Ü…$W‚_н‚ÁcÙù ²ƒÖT‰ÄbÇ’ì�k©Àñˆý;6ÌZ^1¾"óÙGùñõk(/6Moüœ¨BT!ªÜkª|¼Š–0=kÑaV¶2ÒŽ£Ñ6 0›ìYû(3¿p¼(ÙÂê£(òw[­ì–C¼ùÆxÃþnà0"Î÷Eœ1�FÓ7èU ÿ/vÐ9l÷d°yÖÙc »øí�äïæaäûˆÚ) ‘K$ÕfE| ó+H�mÁDŠB !†C6]¤}ò÷$´O~õ}ò H.Ĥ*J:©OBûKÈ'IPbp�Œß2JÈ'©Œ£€E’&(©=t¿"·„Xòm±ä»qKˆ%+Ïo|Ï™8¼/£Ûëà¿ludOØ!÷ûÞuåz•èËT� \ÀM ’8ð=¨ uE0Õá�e8òïÒFÙ�F<’rY®ÆEà¾/x�HbI+Hµ” ìž}ø‡¼ÇP`4¹”Cqrðº}‚R B)Ó3Ç\‰Ü/–jYc"ØMcVV±1³âØ;>ètÛo@ »'(Z sÉ_ÒÏ>êüû �4ºÌbÖôã¿¶O{o¡ªxœÞÙ›ÓT Ù›·=ÙÒ3ÐýöiÛ€¬ÐSÐÊ^1?:xý¦ûúਣÉ&Š~÷íYÏP¦‚«È'"~|pØ–¥¾bØï¹ <Xh÷ш&~vØÌÅe¾J_+�Á$ƒI“ fÆ4Ão‚-ŠðÜ Û½¿çΦ–gññ3#;~ÆÖrü,÷Å*œB3ôShl §Ð ý»ó)4#=…ÆÖs -úOJ¿ç{Ô Ó±Á0I˜Š=ˆüNC®Ú`Án¾ôÂÈ3/HæIæ¿]™cëq%_ñØá /§Â¹žã )ðù‹ä/Þs1tì¾±ý²·_˜ÈÀCMfLšZ*o®ÏR‰¥d•,å×lÏ =„À×dÏŒ™Hw±gF>’ÀªöÌ(‰$ Û³KŽ1AÓocfæ,?³Î(ñx[û•œ=3=°MüçŸ~޹í¬ó] w^Q��VT¿¥ÕjVío[Q5–ŽXjÕŒ•£æèa¬P#†q÷(€W#˜à5úÞµ°~€ºc_Þz †öŠ�ƒL29ÈyY¡ÄYR¥èuqD"dY‚hqÑèÅ× e5 üPKÒV1]FeKej ¨$ƒimunify-security/assets/ui-app/assets/static/other-root/src_app_standalone-warning_standalone-warning_module_ts.5005c8cdd10672ab.jsUT ëÆ«jëÆ«jux è‡ÍZmsÛ¸þÞ_Á2½ŒØêÕ]µ“sÒ™´Nâ9çÒŠÆ“�„˜X´ãÊúï]¤ÞHÉr|é4™Ø,û< ÅÍ%q¤4VîiC’t2rïÈu†ã›HÎ2®fDø‚s厇‡_?<ŒÆ^�årÖ�\)â+œeWRa–à”3âßaÁ(›Ö5Íy’§äJIwŒ½n»Ó‹ )D¼á_$ å!$ …—«Ñÿ²ƒß›±QºÎ–Þé-’F' Ãax: uP§> )ªRØŠœR]ã&q­‚÷gô€IÕ*s•yÈ&­çOm ØßÈ„Á‡�Ÿ®Þ}¸üôúüüí›'æ±3\~<ûç[=Éë³³·——ï~> ùAFXBXL œ|(L õ£¶†âàš^ë輤P¼Aiðf0FRݧz¬TÆèŠMõðÂÿéìãû‹ŸÆÎâ s6þèlãß œEŽþyºýök. ïF"Â8&>¹%,½ßè»tÇKHžeò]B„‘=1"»‚d̵ÈîöàñTS×l‡ºžžÙër5Ôõ¹úCQ¬S5ø[OÙ×úñ–-€za<…´/”Ù- €9gÖ4ÂÁ/<‡óe?Àrg3š&�Ñ"Ãj�¶ŒKƈæK�e“àåÁyº%2eÅVycêš7¦‚èÂüÆ•Œ-TÖå¶ùÛŠfàþ@f)U ÷ÁõN‹©Ô_H�6U³¿‘‘ƒFSˆ��1ùÖ2·‹ÁÖþwðqÝ®é£?¤u°_ؼ¼`xN¢í⌛å‚D «výÎIÃÏ;YÁÎT��°ßƒµ°‰áÈý³;6ýøzQl½¨ ®Óœ ÃñÐÕ È¡énFAn5¡Í<¥‰Óð_$ý÷À2J—ʦ“,¬cýOÊHÝ«-îhlç´Ã‡¡Ó™Úh0$gj�È ‹¦JTVæ8‡fCŽ�ž8Îz9‡" jSa}k¶Vñ TútG`Ð3IÉdË�rÏ7SÐ^!&Zäk+�Êâ™ì7DÙ¼Õð¤¹Í¬òäÅažÔ§+ž\¥Ã’YFîn 8^"^ðé‘$¨s†6ŠÓK“]†£ñÿ³U–6^ÑѮϑ»ÛROL¼ ¦ž%¦Ö1A�RAL«ësŒl†ƒO6ìÞ=!ôˆ 85ñ'Õ_ ¥ë~jÊ^Z-Fíµ´¹¼áœÂ¸��Ö#>tV7€‡˜±ûÈ$õõv,wEª;{Þ1VDA©þ½>4D.¼j ˆ¡î3–7+;wP;uLò4õMÚu‚�w6?¬Øó:åñÍé6%w�ZánÞÑ“=bŒ2½eþÚæòX™í;ý [’ж¬¥×£uAAÎc.¯«)PÛ,žš›iÿ©fÖ?ÚÛj¢ÖÞâ~Êfp6ÕqkÀİ€®&kH£EæÇ-b¯�‚׆öÛ vàª*„ýàú’¦Ñì‡ ™zÇ­ˆÖMß?v3h ýÇ· €#B¶†^s¥øÜž�Ó íÒ ÃŸŽ³Vìj‘¾´âddÃwÅa¸æibZ ›Cªçöâd¹«–ŠMÚ[3™TlTófÉ´*µ÷�vº×èJßtðvÅL¯SŠ™RHhݵÊÝ�OTãr¯+[4¿wã�.w@ô_Ë •,¶{§xõê…#y.bòˆ ÿúËùð;ÿÿOÐ ÃnÜ�“¤öNZø:ø*¡ÎÎþ PKÒV1]O‡„æ°$ºhimunify-security/assets/ui-app/assets/static/other-root/src_app_core_admin_module_ts.cc050d35ccd500ff.jsUT ëÆ«jëÆ«jux è‡ì< sÛ6Ò…áµ=ò>ˆ!)É–åOí8Ž“¸u7qšö�‡"!‰5Eª$äGý÷Ûø~IŠãÎt¦qKx,û°€¼Œ¨±Ðµ™¼¯DÔ›œË7t¼°ì«£À_lFÃNL¾µWþ|~¡j‹e4SÎÏå(´/­ÅâÒBzi9s׿œÎÒ£—,’/È}×èïîF(ñÕÑ÷÷¾æ(”Ü»C¾¹+uÿÚ ¥`ä+»;ºÙS÷íÀ�˜äŽî› }¥·Û5MUûC; Ëfî5}N'Ô�(ñË9œ¹žRŸCó5ªäð™/Ÿú,º\$=;ŽèZS’á¬j0W_ñµ±ë;ŠOº{ýݾ—²Ñ÷¬‚ÉkÞW%¶å`¹Åèð<МÙ —þË¥:Ñ�ï¼£Qà]Ó0Ê–wcÝEòjEöº{F¯Jž;>¡E…<Ä%$!!|ìïív¡Ô‚�;=³g¨ÄÃÒÝ~wW%vëöÍ®ºïQ&Ù#�ÞÛžE»ç”—6 B_½g37Ò€ëÑÌ¥žsf�£#¼0 –Œ†#ºÊMQôìòGT[†ž-<—)ò²z®_$ßžÊ*�h@Nzûv¢¸ÀÌ�É(÷óàÿŒ‹ý�²eèKU,´k7rÇÅÏ Hž» Š¢“P›[ YòDyb}þü„Á¶·th¤Xªúù³Â4�úS6û!7 Í)`ÿ!ôÎBJA‚5MóµÈsm 0•0@þBû=p}Žü…:Ì÷_Xa„ÝyüYEÌb®-¨÷i©›»ý‰e�&Kø )ž™Ooúù3Së\-Åÿ®ÿ;½¼P7Ž�IÉ(² ‚ˆ6Ìi±a±C1¤Î”M²´gtf]»Aø~9F%PÎï}kN‡rEÔ– j=ð¡üòôDº6eƒ åc‹áÓ§¼�6uÙl9ÖÜ੼"qï—48q5¥`B¤×ÖíkÕ´C41à¤Ã`> ¥žw¼D^wÞϬ�xî•zš.ñ9ûVYžt"@hELz ¶îÒÑ@�žNià.Äÿ&þòÀïâKŒQ�1±ç‹‘[gK-æ¦änAÁ’@´@‘ÑÂ+›)¸ÿ 2J,C u%x§ÂÖ„Ñ ÑžßÇhj�€åèÖ�˜ëO‡ ò®6 ÂÐçwt¢r!Ô/Ô âPÛ‹†;t3ê„K¢bÙ†æ(` ʤ€]®â‚œËnwGïÌá{çÚ¥7Ж—Î(Sx†ŠUì­¡$@Ù8pî^ -‚ϼ¨½W,"¥ŽY)—kÁ§�yzkÓ[ Ò¿jë FcJ±×娳°i—ÄÜ#|Ö¯‚ˆ�Q0\½Ûz?YÜp˜Š·\š-ǽ–‰®*†¹#¼i´XÐËŒ›Ú�·œû21U¥[*ê6uOFî•:ôj¬O2¥OÄ„´±ý5¦Ôˆà‚BpãÛ. º§½%‘vLlííó ¥Ö"Zz\ÇfÅ£¢K™‚Kèô=•,Ñ�ôwv z›£Ã0Œ”N0èÓuJgØ´k€÷ ‡¼×`¨wɃ>ÄSá}Wý:ÓýDõïƒÉ$¢lx¸Ž¤¯V™zûn¨Ë¹-,_nrHf¥C8¨F²Ðò#Nùµ¤nö[Ä/[+F>ý¨eÇÆ•,нŒˆåÑÕðo4‚XêÙ{:Åñ«ÈÇ^ûŠ˜ð„«`Ü_Uä?–4¼;µBkúXî ¶îELp@ì’×j‹£¬Ò®ä(¡M qŸ�«08…û€s„I± ½ÝhGüqüm&îtDÅ·Ó dϼÀ¾Ó -µƒQ[ŽÎÑ÷Ž�°žÇ�Øcmâ†ô x k ÒÍÆŠ:�€�:ÄmNE“':ØýšG×W‚��ìÐ] eGùˆ�òj-õcŠQä=¬1aÞHå`"Ú¦\GAÞ@ôE(‘IÁˆµ.pÎ{°,æVAÃýé[ÿ9ªwJ�žUDµ¥ŸáõEk‰²Ÿºq�>NÖ A²n(KRµé\;­_]|y@À oÂLô Â_ï ÝËüub¢1bêܸ¸ ¨à¼¹oõEµ,ìúa¾ì0ïÕÁÀä5´¨˜©âƒ{ð§/ƒÿ~;Y×÷ÁŽ�ÏUøôF³YõбÙ4·0›kýöBÂ?ω„Õ𥱅tÿÉ—¤9„�J‡îtƆ’¹¸Ýÿä¯>Á ›ym°¡zcØ�äAK’f9N¢b‘ o¸"—G]4„~ŒJO dbù,é•J|øPê`I— =ƒŸµ´D[Ç`Ý ¥‰G“ 6/ßY+ØD°qKŸµv]ïx¾@pÉ1eúk‰¾N- Ù§Xú9vEÔ í™h6ЉÜ?éP2vx›¸ì†ŠŽãÀsÖ�8ØNɨE)íöÖR,¢…0uC–$#ÈÕ�5��ËÑñóñCŽq#’Dc …¸Š:DšG#µÂÅ5.öLwðÑìu÷*¹ÁuÄÞNÇäúÊ�J®pű×íCÙ{ø¸·Û7ÁáÇ�¡ÃÒêîwíííé*9ö&_¨¼APƒ]}Gì-´•ñngi†¤RêDõ�Øø8lL\æ×gbˆzšcá‡Xø8,œPˆêþ"=ü¸=÷™X˜Å2[Ö¬ÝzËðùyÛC'Ž’¡¥ô‡í޾(ƒA£ò'³Òy“Ÿw#>°ž9\†! ÿ K× TO ~*'6ÃdÒ­n½â¶$å»ä +žk_É$wPXjÂr7iŒKÎi;ñºj’ÒUG“éIJš,�Q4Ï«:Ãû=Ó\«Ú9â¿zTâ“nUO¿ŠÙo\sfP=ñþ[0_lŸ´1½_41¼ýÆ ÿKL¹Qƒatpm¹_Ï “ž3xÿÝÞwë26—§ÃeÍYÈ6gð9±Â#ÿF§ÌšQoáÐèJ³½`é@p¹¼Åœ¥mÏ©b€5‡!íÝ §7Øâ¬ìÑ]¿ ­9°oð©?ñR˜„¾.J¨çÏvxî’Ý6<à�×"jTdÿ§/�ýæDG€žÃ'†i‹ÐãÇ/ =Ìê2:wâi�o ¸KÚ¶f™äÙ!IkÖEYiÛ.ù/Ù#†™¥.üI÷ÈO e)¿fDdnO.�'2ÑG£ã¢±¥< ºU¢h¦ñ0ÍG€Ù­…™‹J~ÛJ;xÎéV—4õÁ9Q»£ÍGûUùõñòƒ-ðaìñƒf±¼0T%Ñ5£1qA¸Ï¹Å:®�¡–±I&¢€ÙèЋæŸN&"EGØÔ_h¹ë#Ÿ5Hì$H4úñuËäÛ3 ?‚ KçÙ¸0ß Õ½N#F(WúvL0Œµ\0ÌÒ‹å}Mݵ,¨Á­Þ®¤¿ñv Ä«ú¶2ÔÝõÄÔ(:& >”j©44nH˜U¿˜ÄÃFk$˜wË&ùM¸OaÐj`æ[wɯkZo5I³—Ø"øKˆ¤ˆYu/[ÃÕ¯ÍJ›9Î�Ó©G«ÈçWsOŒšU\.‘Íõ«³Ñ¢¦Tˆ¥¬ Þ ½I.E{=Ñ7²3Ý‚�1×Ú™îz;Ó5Kª‚‡¹Íé[o\jÖ“Uª­&1/fOUº‰O1ûð˜73ó»�ÇPݽ­£z¶ÉaVýÌ_°É±Ùîʦû[£Z-‰áõ@`~ÝD [6»“¨Å\¿Õ½‚0ê«ì…ÖG|Å<É8ð-4Œ¨ŸTµ%R6b•ù÷‡Àã«êöÍ"ƒÅ(ØJ³�Öîý×\£¨$ž�•Ëaz�·Ø~8!î xÛáX·Ô®£9Ó æÿÀ­§²ŽŽí󞹎C}>ó‚ân5ïí·ÁôÅ3¡4cl­`T�yÃY=Ë€–{”OßWÇàÿaÔw”«$=‘6ÝÉÐ~OÃk×N3ãëIiœ²X¶ˆåì9d(ÏÜw(ÒÛœqê’¨Œï Š|"ÌÅ?½{strxðîèòýÙÁÙ‡÷—/ŽÎ_¿y9z¦�œäÓÍÞ‰D¾Q ¦Z–G†ùS9¾Èj!ÕIäyÝ’Ø’´µ|a!—‰:?Ò •ø†y¡-?5Jn¢ð/£4sIMÕ0×êƒÏ\/N&K)«æjôv�ÉBb¾ûiòÔµv *‰güÞW)ëçwxOQbU6Ws&a*Í­Ë šŠZ5£ªÉÁ<§UF«MgSSp½› bŽ£ùô<йwùœ3ªªjîEÆsd¹|>ÓŽ~wŸÏøK‘(0¥ò%g›Í§™ª ´|š¶pÌØ¤#>§ÂÄ #ö‹å-é‹0˜cb`uØE6¹wèÄZz¢ËðI0<¿X­ÔýœÉÅ´+üÿ8”ž~/sÍ�Î'’³çI暤¥ïÞ*Híç8çô“Š {Æ[?5h·Ãi ,´"ÞrChxp¬j׈çÛ‰'0Á7Á�òD÷¶ŽÁ&—¶ fBËßÓª¹á•ªž†q´©ÍV”òŠže*Ö)ySŠ‘,íèõéÙoë²Y!K‘}þL7¹ vPñÕ6/|/Œ–.†åLêÅÁK×?ã «Ò}ªdo¾4HÚÀi¦™ðH¹òŒ¿¹õŽN ,ŸaÌWÆ_ H€©*˜\*@^pM€©Ç×Ö zã÷Öàwvq�;G¼‹â+nhóeÇqc­R‹÷—3§ÜÞ6·"r{cɺ?ƒPöJܪεÍ}4rÐÅ×89†ßèŒ/¾‰D’8‰¤Ô©ˆ>¿/^@±:@n6EEµc![â+ø'œð ¬ºDíåõÑõô˜/½e{æ.ê‡æ=Ä%« ú%×÷Ñ„ˆÔ2ž0±I¼°�¾©’ê �<ë’x)Ê[�Vð¹PûjÜ"ØÐµ:|Ë¼Äø®f ‘ÿÍ äQG|å,IÂ롦B_nˆ;È q£_ºù:¼�¤Ù9ŒÓvøvAUŒ”ªyBÇçá—Vz ^+ÄùÜ¡Úât¯U!*ÂÐ0‰*Jqyþæ%�? Ÿ>m:Ù&•j‘‰'P©ûûÞ%-OþNú$ÙZs8ù'1ÓSϺ#õÜS /7…ºCþØ´é.ù°iÓù˜;H­»‹Ÿ6Ý#?ž "Î\[�ˆuÂéuIºCßû«Ò÷ˆÌïÓ ç{È×3"3íaû4[»ÐâÊ,K‡àVDË~À.Óèúñ†Éò¥oŒ$™÷kŽÐ¼$~ð(ÕeAñv[‚GÛ…çRŒŠ›S�Ìt¾¢.]µÆëÔÇr¢Æ.7KÃÀã« Û†0BûhW�¼„;k‚¡ë/ãW±Ÿk¯-†n›œj¯çä�ö¼t3ûßZHáµS|Lszó´|�ÖìÕ]£ÝÑu^q2Þ“�–�ï+IºfÆÍyÌ7”þ5æxšŽå¹S(Ù-Î~îj+ 0š®Çý1Âo$†óƒpnyâRí'_ËGš�sHo`D ãI |ã:l†3Hné@Œ»Ú‰1±æ®w7”ä·À9é=x:™HüêD4t' $<»ÓÄ{�ðÆ–}5 ƒ¥�oJq"áuœ>µE×MøŸýÜi¤bLÄ9Ð5¡a_ÏÏ8 nGÁ¢•Lƒºf’äΧ�ýc ›=#F#C!‡Á,l�ÌÍàÏ~ÃÌsµÉƦ<-_¹—¤ß—s'w�¸ùPB™¦�1e7”ú¨<²_;û” µb¿Z X®‘pˆ¢!:�“7R ]ÿ¶H½Ÿ£�íµ0À£Vˆ—åÙ,mŸ‹j×aÄUÙ(p{Mo@ÒØÄ¥"Uw©¿d4 Í4ëÆ¿·Ú�˜zƒ^bøC¢s+R…xÉ—±Y´Vž öKs2ºutj…*IÖÚÁô‰eM&EÁå ÚMèlôKf\×­]§�/T7‚¶[‚–#ÄM:�›Ð‰ゾƒ™‘æµ#HR›ýÈ‹aw¯ÀÆT[ Ò)xÍfPÂg‹-Ç]FÉ[!µ6)%vºíD3Ë nPtðñH8[°Ü’â¿>¶ÅzCµaªÒ�±/¾>’³û»8H?¯! “$|ÏTªO÷³©å ìeá@‹ÀM=4·`µƒP¼>—µæk¾øq”29ùnDrtàëi>œ×4L(Ÿ'"h$ÿ÷5ˆØÂÁ=:ÙKáåëÐÅÿ}1šõhõœMÐʯ™m•àA@e¡ky)t9ÊË)tÁ÷²×cêŸ[i³íù•5ˆæ.“¥õ5–6 _gÙ|²%¥ð–D€:Œ(¿yÁÕ½c? ó”kEû hºÚâmœ k¿Zh{V_vV GaµPKÅ™®æìŠå»óXç*C_N,‡º>¨»Þ�xëÎ<ø³“ëRhÀ£qhsCÿÇÞŸø·m#�ãð¿¢hûô‘ž…¸¢n+?µ_ÇNZ·9ÜØm·›ÍÇKK”ÍF"U’òÑÄÿû;ƒƒI€‡Ž$Ý7Ín"Q 0 3ƒ9.ß9a«|ÏâE¯¨ëŒä+éf”†[ô2ñ<+?ÿÙ¢yÙǵƒüý®_’\’.ZI¶øí|zÍ[O—EcóýÒd÷ÿÞÙ÷sßZÚ�~�Gõ=ž‹ ŽfT¡Ã{AwŒ3¿šâWøßfz[¬åpÆŸØ@WzñM¨1ý~J‰ô³ì",iMˆ$qpŒ†ø§Éè)C7B«PæÔ”I!•‚D>µ>R’\µ]tì5©Ã©]� K™+ÌQ‚°Y*í]1¡hTzöS§”ùM+i•¨[ig&4ëÈð&Ú¢ QõØG‘Äà�‰§Ñ•\ÀâY¨^ ªB»B E9©Ú X¨�¹^§O,½j.ú÷�ñ7mׂÓvÍŒ¢)Éœl»‘Å4£ÊqµUh¼¨s€�ãÌjªJéß5 È4«åg[ -ŸÙm½)ÎS”sÛ©äðÉ]M…3õBåì3^”d’Ò"Áïó]‘TbÓöNøÈxîM×Ù¾¤…CÅ‚J0˜ô\æÊû„½F)Ãð¨_戒Ù:E’!Üfª*” ážö—íÓˆqÔëTû;ô7Ú¡olS5.„Ýa ÊÁ–�Š^7%ÊGw{âè�Vð²‹äeæÏƒƒ½T�†ÐWcak¶v¨¶Ñ t­Ä¥jÖž(›3VÈ+¤¦5ø³H›ÖzMiy™ô!Ìù*›çFk4¦.Xö¬x­Ò "M5¦ 6WË›™e$Ð&ÒUTK=;%Gøï›Üé'õ-IOÑgô E�Ž :¡R6Ê!ÀÐY"§ÎQcX÷KgÚº´ÿtl¿Ñ6ú=ByÒ üe6wEÉô!KM^HÔÔ´=Щ^T§š”7CrÌ”­6Ê÷,|WµXù I>M¨¢ÈÇ Î<‰åãmޤˆV k~$´h �Ž?sÑ¿.]Nb¿ã^áÛ=躳^þ³]�Þ�Åmó�<›�_*ö^ošp[²ú‰Ã „+¦Ÿ§^F¥àN…«þ„îm[ÃÞ°—QDe?ŽŒ—mU…¾T0ß‚K`½ñ‚:äV…*ö¢®*L …Ô�D?2Pûí<ãAl­?8x,©!’ïPêÌ�¼KØ¥AöÆSs¥9l櫘¹xÈÕ!K`P/ÿ'_=,‚A¯ÿ•€!2XþOjíÑÕZc±+å ­”Ú&¥œ™±h9NmMñ†‰H µ¹˜~ªX'­‘´‹L»‡¶‘í9 C.qîxÂE½· 'nÃã(�b[è� ôo€Î€ïSß[h�ÍYÃ&÷|´´¨ªkúÃ-f½¢yÄûr/ò¹¡cCs˜œŠ ¹P³JA!Ý•}\T”ß8{‚Š�‹Þú~Ä£C{ ;m³Çw$ ˜ÓÙ|ðI°ÿ9¢p`º(z]B)ãØÊrÜ4¾YýTXùÇ<[�ìÙK´î á(4xFgyIôØ’Ò¤-¾Kª@hóùlÔ75:ÿVÞŒ ! ‚­D€@Æó¬Í#žˆ²Ëa'(¹(å\ç’ˆ@ɦ»9"’ÖñÜëï´�U&žDˆF2I ¿Ÿð˜ÊqPË#h*äa·Øam«î«;™P�+Ûî&T|ÚþE(eÅé•q0üüW)i²ëî&ûnåøö¬`ä¶�»^;¡êžÚÕ´ô ¶ûi﬿Ôb%÷×Á¨ÈUá/µd‰m&Íí¿aá* Ö©u«ê _nè-N³] PÑstGsÚv½6¢þú •:¢wÃ?‹åJ‹T’0_b�´B,ÝVŒìŒÿÁ®Ôe ¬¬â gƤsùæ¢î6\}ýWd»™Ñvrà_}‘Rnî…Ó_f­Òþò£xgý¿¥=s¬šµXÔ,wVk,­»Vd9Â+˜&ë¢D´{lrŠ ô,8%o ÓÜpŒAé1FÑ•†¯æ:«}¨¥×ó£®Õ¦œ‡bÀ‹ï\R¡Á2lùصSØË" 2¢Îûe�Oa]DÓe´»æRšÒ”³=à¬ÿ÷->n´É½qtÕl¼93Vo‰+ß =L¤&²zÅéNë„Vð&%^*Õ4™Y“¿BË/»áÄmŒ:#LkïáçA»KËÐÏæ°Ï}üÜõ±³Åž7É‚>4û˜¨=ÀÏfÿÚNñãA¯;5É ?wFíh2£Ï;í~O*ã|V-b´Ç|aqM1+¸w§¥ ní¥ðP6Ó·&-+É…éÙomgùÙšI�„‚�cV[|Á"çlBëp’ÌçÆRs¾_8K'‡d ÂU8¶âÅ\–[Ì#&ÈÙ~´ª…¥3Ê-»"ÕW™*q¼Q¯ä²À*’¢ië•* —WN%op°Ý4¢ÅÙ1‘«²ÏU ò.éÄDnßMm{V@ä=Ò×y•l䛟ËËRˆ¦ßZûö3¾}ðM³GÖaÞ¬há:Í´Œu`ûtæuAë°åvA·v“åm—ê{Í+óêü��Ç¥ÿ* XÔÐÔá3Êx£ñúcUËÍâØ!W!L@ÚŠžS±kÞ{mÏŸÞ�Â,Èõ·ùi2—!’*Ö[‚¦‚«¨JjóUïkW=‘(s’.ÑÎŽyi> ¬�Ѝ4[¬‰�u»Jñ4ók7¥Ïº­Rª.�¿k ÷ä×"UTñðõËNd°EºU]!.={ÐÚ1+ÚéDÅ­ôu·`…^?ýîâǧ¿Mþ?Fïß/ÞÙ÷×¶oSs–kיߣÛÙ k¾}…zôµŒË—"êÀŠ£¶²,¸\e ³õ%ð÷OV Ⱥ±Ÿ3Þö£}¯,|œžÍ^Ü¢Æx^?ËÔVô¬³b¢]q�­>+iÅêŒiWWË%:ù"WÅŠuXÒKälVìR�–¡tÛ»„F.ßE uåï6EÍoV¯ÊnúZVnñ®A\eùÿÅÛªL•åâ92•]VïÊãÒ½¢ªµ…sé.YO»d½JKÖãK¦­T܃% ¬…T^¯2uº|{,6ªETȧ*ˆîÙT¹9b\…[#Ç9Ás”«Ÿra8ëñé"©)Ü2ÿtTC§�*!]S‡ :p@æÀ²m¡ñ,¼+Ç-Sè;¿âË_�³uß�{G WWôég¡F«‰÷Ò0ÛôT›}Òäbs@° c›fõ:Z• ¼©u%cÒµw{^¶¼[þæCñæ;ß[¯pAñË6ó(ÐÆ†KHŠ9€â0µ¯½µm¼MW¾³´üû:y”•Ðv›ä„ÀYß•l<¢î{8® GWøÕFò“(?ôž¬ï·¬+˜d"ÐßÞ˜ŸžQ€¶Ðê+”|Eù`!˜Äsw=@Ïu¿½7*Ìš]¤�P˜µSNs­ç èäÜ{aùïìP©Žmgt.)³2;ÊÊ·±°U+˜ú6¬Éµæ•æ}>ɾo…¡ïÀ᯼æ�}CËLoÌ%¨£­Çú1Yý�ôRÌîÄe+É÷p3ÞÃ;ÞÃÝÁˆzÉ:Íö3¹~Yi-Ÿ÷ÕK„éö!R}„5o›"Nš[«jµ¡«Ý lÄv¡9tÑZ_ñì@{¶a²èÌ47¼ë´‹/´—Øå/Âå/Â6U}>Íٛʟ_¯®|k&L·Yñt³«=sXú¶é(ZÜßmÓEˆ¨;ÝÜ6¥ežü[ÆÏÇzÕÙØxõðÀ d¿߃Q‹,!�dÙWU笭áÛ¬æêÅÚ_|øÕœ.Üt¹Aæ]—à&./@+÷.êo‹gÉúÛ‘‚5Éè8Ž·°ÿœezmö?¸íòÖô�5Ë‹tc2lvz�¢¥Ëy×aÃÒ*°³ú£ zOyó^½œ‚võî̱\ðõ׊G e—™†Æ’þJMé)©zø6ÛÃåú4Öqòå&Ÿ’ç/'®�îÏ«ÆûEt]3y´’ª•oÜÐøŽ"cÖ¨¿³A×~ øCöX TæÝ@�n#9fT5²ù�¾ªV:¹Ö†¸_k„t>œÎâɰzÑRÉã’eµS¨…5Ë«­êÇ:µ\{‘©}ã9³Zû¡É «ZîøE™rÇ^hd‹f›9¡ñÏÍž?»Hâ³g€ä'kíd[×J~‘ª•̱¸ƒBÉÃ�T(¹Ëê$w¤2ÉÙò¾Âz# Q«8.qŒ×ÆÜó?¦ëöFŽÕ¢ðo�Ê.ÁK/âÙ´ÔjÜ;‰ùw¢Ê¬ä¡­„W6Δ}%ÂË=h/=ËŸµp—³j»hFKö3õ°dø=¸Kd¯|QÍ^¢!-`1üX* Ì`¥¯1îôÒZÚñd`¯×©Ýè„Ý ×£bË-¡$Õ±Ö[À¯ÇaL~�o ¯v:!�%ç‚÷‘rÍÜ¥å,Bo¬»¦Ôa*ÛƒòÖ,çuSA,¢¢ñý` À…=#=SàWA©Êhjk�཰X)ú3 Q…Δp–¤k«° ˆãbl,ÂJ¥ cƒOréZÀ-nR�¿uáâB¸&¹IoˆEkKÔíí�ÓDÕž¶n®Â ­ZíÛ¬d÷ÈNŸL•UMÐtÚ ¢«—W/=8Æ^,ü¹q,mAO(€ÇÏK8ç(mtZD ˆú¡á+4~'‹k‰>GŸŽtYÑ 4É”þNÙYë&3x@æÆ!Êó§ «ª�f‚^h(@º L23FÄØµ¡™º<Ù 5ÉXƒ‡²Ý×jFšÄÜŒ¥B�eÇÈšls‚°ì»Ö¥8Á¸ÖïEIàð)Hš·¬FL•é%N½¢x"–ïQ¤—IEktâ’QeOHÚá£H–v­ú òñRj‚<ÍÌFX,,…S&CKAB3‘.(™L/S±rÃ)DEþv¹ kutm¹WöÔ”šc<ÅòFO—N`>pÁh'|4aWÉÄít,�…© º�—ñZõpý15ƒ_°¦ßæïìî¬è²³¤zUá–1¥^‰{¶¬‚±3-ë6ܹޅd–·™Š­Ç¸}¬?t; ÆïB~CÙc7”=é†Í%¾åö,q3FÕýÄÍ ¿+‹bI‘&¾vå«q³aU:�’÷‹Šì´2ÑKSœk¢SÔ�q8¡,NO;~F�Ü…Ý1Æb„º‰Éî)t¤ª( ¢KË¢W)ÚØ¶VbÎŒ§=“g ã!‚¹Få69IÎQ¶M4ã75p IŒ�P·¾yÏ[Ξߜ$O×ö~•Ý\ëYˆI1FÑíàwz›h«ÕY�N6xRüÛÝ<ìEÜÆøU_ÿÑ�CøE þ“¤úˆQ˜ôiRúÊi�œÐk9«”º}««oß4åN„7.J³§"S°Ù+,å“ÛYnö¿`$ëéê²ù� ÏÓW„Dib޼$c.Bb§—[�A]ŽV0Õ%K–gà©Ö8ÌX�ΫfŠ;@M™2©ÄýNïÕZf¯°èt)4’GID—'“2 å“KI�’­Ë½XxÓ‘N´—¾",;ŒienjMÍ=±Ty|'�áL[Ókg1KÜåŠñ*Ï%$í_¡3¿oñǵ`eMí–E·göZ¶gj�0Ðïmûÿì jö“v>ÙòljE옩K½hB‰š+©I` Ê@}¹™½¼Í`4ºÝïüå’/ªUhãŸBÁäë*y˜çþy,/÷sý`à'® (—rÂh™‰ ‡Üõ!]ˆÂÕÕälµˆ Ó!Š.f£ý8Œä²^ŒŒæ‘¯/Õw]¯@œ‚x&z¬QÇõ�"ÇÓšú„k ‹æ1Lõ©©î' å�˜Åo+s Ç@©ÏÍR@iÏÌŠ@ñ ÎLÊ× `÷}ë”4Ð)D3£‰™ãIð°ïŒDòÑ\ô¶ ÍÅX.S–+Áİ\L�E�J'övÓý¥»ªpn�Eœ iOÔ¦²áÜ—Jäcžñ˜–sž�ðOâÅTÍÌŽ‚}v‹ õçÌçñ`B-(YY!î>oßg»Ï”7`<×òm‹ ò6›`\]�¹!m† 1B>2’pTƇ4HJÔƒ¤°R«ôù…æ~îw{&sÈ9Î3x‡Ü¾|wí »´íb&ã‰xLC•ì lÜ„†µâ¿òˆ'žõX×–ÿÌÛ3',×òÊ–¢_#~펿�†.tD2^ü(lài “#s^wê8œ•ïݨMä,¨á§6rï�íŽC2§ñ“÷ã0†H¹\¯izîƒöÁA“üN}©Ì!fû“.co8„ÏßQß«îõù?Xû¦ÿ™¶é`zð_©¯Vo”b{møüý<èuMò=Ë >80›ä_,qxo¯þHý†}hóuí´‡Mò}µßi�!ý3MHžK�Á#"²f(Ù7š* ãVÁI˜ºå8ƒ#S}ˆ‰· —š«žòoÔÎeˆÁ“úµ3›Ù.�0Ì{…qŠI�E•mž×Ž'þž¶û{}uWßM*‚Ë >Þk{®¦ÒÍÝäËÁKÀ rM~‹ƒÜ m§©²W瘠yFIEè,› ƒEDa¤r‡„6’çAÇŒ.˜íÉ›: L<�ŒÉÄŇÈcâg±‡›gs‡¤cÇN{(ÂCêƒ:‹"'(ÙŠ«;ÏeAU“Ј#¬ 4)7âøEŒX6@Jp.m:ã‘pB¡ûÞ:KÛƒÓßàÔŸ®ƒWn´0 L¯‹Ò�v#V$yЩEdîÌéBNܘÕÂjE——žûÄéCqu)~?(µ?[¸]‹zà(²Œ3†ƒ"Þxúâôü7Ñäˆ^Û¼òŸ,Ö¾²á´ÁK ľ3oÈsi ²€-é­ÐÝͺ²Øµyd>\"t‚Yðé²{U~¦\ð‰¦°*OÙ Ì  ”-±ï-鬛�¬®©/½u`¯WuyÝC¾ììŽê•‹}<ç[/yÓ(åP>°ö*¸L%\ÆÚ�Gm&W!ùÛ#AÖ±†0ì^[îla?õ}Ïÿ´úðAùx‚S湃âê»0ÿïãFcF¬ÄÃm• Ic |ïÞž‰¾Å$I—ÆfÃö£Çî—P¢�]w€-æ¯Ýxs1Âå(„µÕ =ò(¼†¸yÌœ›4`ÒÄ›ÈE“Ø3‹5o4å»>xÀÍe\?H«‡|‹†D‹®ôø�]KÅAÎÛŸ/ÅAÌ¡m¼bx‰pR&BÚ`“8æ3Óže›û$PS€ã¢]¶‚B??%—uäÊ´³í2­\lµc·†Ô)X§�Ù ëÄy»ËŽå3[ŽßBìHß|'ÅqÄ€°{ð3c\çê„ñ|€ÿÖI̲Çõøs]„®›Ì1ÄŒC6¸ú×ß•·‰g+œqÛüƼ’¬-¸Ï·Iì�S«¬¼ºNvö–ÀoÖ*X/Xåô™J›Ÿ´32cÆ>Êk<*=Ô,{¿~¤Yg³­<Ó�¥}µ‘ qò³œ?$?4‹¿›<ë~ùlq•’¤Q;*'Ø83䔈2—{ô·Ì&® E"Û½ ¯¿i+üîZë¤Vo‚¦ÎïZdÇæÅþ’9Ê bÏæa“zÖDŠØ¨ ræ�}¿^v0ýMöÄu2:¹¸ã‡xlÖÏã¸Kô,þúëhjÂkøsPö’ÍH%Ó ÞØÂõÛ2¯‘oï<­gdV„oÒ3›U�ðcf\çê’ŠK;¦±¼‘d9`’e;!Y ©4’Wiþ¦òðl2I ˜°�±g&;shØü =†Sþ´KhŠejiL8úÂb-$m\.R§^¸£…C.O¨ƒsOt³�xTºš¢(U鉸^¡.ÁòæŠÒáHñÉÈÐ"e0J%,¢™i?ÊŸvvžÛúñÊz*ˆöY–/mbÅUþ¼Œ›€t«/ªf–AeÙ¤�^ÖÙ”‘�]¤Œ\À¾ãaU©î»vŸ ?Lk-Ÿ8ÑNœ`DZÉo¡qDþJ rŒ$�©= gp|μ[÷ Bíh³^¨Ÿ/ƒñQ{¦rù_Ú°Çì­ÇÐ;ñTQ^ð©×Nè˦Dp—ÖBºËE¬)ǹjÌý&r:c»«W+N8ë1µ´;Ot© 禫A‡?ê'�{ëù3žhD~zí„6mO¡ä)Hj(˜Öå;`� æ¥çÁÁˆÝZnHp¬ÀžI­)T>Ò±O[y«ÐYÂDŸÃ&¾tNx/w½ôþlyÁ]¦ï+ߺ¦Ö–³E-mí°<µ%,ǹ²ê‘ÿršÝé ³y-T>†b1„%iýŒ?!–¥æ.„寖�Õ¢®ÍÚ#g‰¥3¥ÑD/œGÆã.t7å.6ÎTÔeìE7fÓ…ÃÊvCÉëZø[slô!YÂ3)Æ­iN/G½ŒSC?å«ÙMzà¢?çH<‰“ŸŒÄ3�:p;H/9‚FäKÍwL¯³H­\ã\GCê¦nö»¤ÿÕ6¨¯zih;ª6BO?‚ !½w¡Ü³ì�?hFtèÀy4Ó¦—¡¸ †Ê%®Ä^Œõ¼eL'?›˜`[q†¤»B{#ä/ýT3¾7‘ÒôU<"R %¢Lô>䪀”T'"Ú D'R`BÄð4`§€¶ƒLiûäËu0ÕõR¿ß³¾Îô-®1!l¬uç¾w»EÏðv’rs×a 9sºôÒœZÌ[ûž:ñ–ÜHór½`ËL'qά¢N²ÙµTÜß .0Ëgwx¾2EâP.ån.Méie—@’�øîãL�Jsª˜Ñåß2�5bʆaG›vð�j;Ó+�¥^ãçq7ÔçZ2ª('ŠhStçm·†åb�¶\~´àɈ¤­Ô‚í3#ªÒ FÒŽ “„L=$Ü›Á[+—J"Oqã®±±úËE½Ì6q©÷CŸ9ÞÝ–ž0Ý”{¢ì¢ð¢ƒùÀÞúx(Rè÷§Èç Óý>ˆÑC“£¦‘¥fsßýØ–‹©Vã·/IõÐLpœáÿ<Î9É…K7=îz{å:%‘¸'6T~ôÝ]¸²{œvIªbgí¨ là£,ÁžØrùÑ? ìkÚ% €K‰£X�çvuÇ3çfO§¤Ü–¬ b´ÍU �½Cü <ðê*'ù´ZY©2ÀÒvוU­H–´³ÝN%¤Ž´°ù³ÂH Jæîøö2i•3ÌN¢Â¤Wìxˆ(áß§n–Lý�2E&òAHYÆó9ö†kRŠ#oµÞIí¦€íl>‹b¶²Õ,RÊe•>�ຌ�I2‚m 2ü÷M±Ì¬´Äìqlö“U`h £^ª4S…Ê™ÔM£/¸_�?éŽâû =V®€Þ^#"ŸÆ5ùô8Rwâ_ìÅÂYNÀÐ�Øëývie÷c¢~¯ `sZˆØ¬4=1(Z¶쇑lŠÂýqŸ¡°'PØùB…åQ¸™éæ 횀>&DìÈ#Ÿ£±‘*:Ë÷Úö�4 ᛧÛ3õ—J½[˜Ú*ãmP‚ul:b)6°Ýt6ÛÒ[L¨x{înBòVûë.QÅ…EÒæÙØ×2‰>Ö*ׄý®aÞÈâ.œêî2µîii‹Ð°Çu/�‰ íwPøqjùvhäÀ”JØJ?h%-_ Ó×ç„i¿†åF¹g_¤êʼn ña2má§Ø‚…3þ„{´ÜbT²ë|2~ª ^‡~*ðÿ[Ú3Ǫ5$³Áp0\Ý5YsظW¾5+tME‹¬%t˜h�Øb:ŒpË�%Æ6©ÍbãÁ©Ú>*1·¤ÓNŒ‚^M÷+ÛÂz› ûIãÍ6ÄI}ë®u×eõùaTá.YŸ2ÖìwbνtœWñbSÛsxéÍîõ¿jö)þ¤¹Ÿß×p× §_–½ÌnãáT³c ÚtèL­…Ð:–ÎlïŽ}­-+œÏü�¼æ;csZø<À¨‚ 5í@Ûˆ-\†n+×u4庘ñÕÈï$2åµánõ¹md›Ž¢Óš½Îcµ—?ÕÑgöÔóYÖñ ›÷Ò›B�m"_6ý±'EGô¢×ål–z¦¬w(ºäÔgÅTœ a¸mÝ8�äÈg”ÂUìN�㈬õÄæ/"áõ¥m‡·¶­G¨&×ø%{MÀ£šËX±Lt—–Ÿ4Ãuã+ýr¯·Âëõò2±Z¢/ýbõ»—íá ê@>t¤?«ÍyÛnÒeÂ/q?>Ò¨K"tyÅÍÏ)œY�ˆžjÑjê; ÐVé�äáNÿÒ¾ݶ¦B<\ûÀDÒE’ž3¯(ÿo‘>°J’ž£Œàœì’†4o�e¶ASAZŒïK¥¦”\ö¬z1…-ú÷ùU»ûDÆÉXèßì¾Ýµ£À6C×v“¸Œ^ù6KŠ«nÓõÕÇb¶¸ˆ¨#®rÏN¯æC 8kÈ7õˆ`ËnÆ;YŽT¯@V,m½Ðfµ~P{NѨ¹—r 3Êlº–Eo¸( ß<,…ïaƒT†€rKº³®ãDÌ•™¬¨"Ñ&‚.]¯E½“²§#Ý‹J!o ÂÛ v¶£ÞÝ­O’I·Ý »ÂÍÛi÷¸á{sXek–|n)øV#á —.>U£É:8ªkZU*y%Ÿ…êðìhcÞ�mƒ³m7KÁbhŠ9l¾6»ºÜÙD2•2¶éy,b»µ„+—œÙÑPµšÞ[]øg+äå'�$ÉøY}^­¨Ì$"¾Wþ7[Ÿ`JÓ�M1õ#µ2È©Wvqîž6‡åóéd³ŠÚϹõ)•E,5•'EÞ²d6Á:‚SûÚèWÐâ)z”Hër¬Läíïå'7ÎæíŸêï'٘ğŠXY þäòú–À?•Y’w·u>íÎaÓÌn—›ÊRÝ+ÌeˆÛa±µEF2jŒIzZ p;I&­¦”…¨GzYÅ�C¤µ8$ˆŽÖ¡V©–�\@2"u{©•ó²ò@~!A½Ù#A¸fÉI˜¥½$þ·ÎË~ÙLøcÛãR53æJ¢j.¿W;”€y[yHÊÀŠ~¤° m¶¯«èP•Ìqf»0²æL(þ—'S +µH|âf3a˽WÙrëÎìïõ·äVú1Œý¿¤nÍ–˜D¿.röðÆcV‘äÄN—$¡…Y• À3Û¿q¦¶(Qâz¡3w¦Ôã2EJ(ã Ýl-�=r–kיߟZÓwÖ•=9yñóË“g¿]œýxøÝSR\ºÄ™é«–Ôë¼Z Ödv|ê>À�·o›„cõ¯óâ7¡qÿ«á�=%2h^ý`üFÑ‚n*ùÉI´¼¤›±G©v‹ù,Ѿ§ZLW×ëÅ»D#öèh =oax†i{‰Ð¦)òBÐ �÷:–�±f”V€:i¥[º~\N�ÃõÆ8l6‘þŸ$aYZûºJÅbš�ïñŽ¡ªÈP¤AÇ¢–a’�`M‹4êÉÇH‡Sv•@ 4¼g¹©ÆqÉŒ‡&¯dP1 «z¢éçDcjþaø‹Ñ ðxñoK¨Ð²Í.w… v"™�&“ëÏNì"d_ÐÙ³'À�õßÂ)ÕÉÌ ­qø@«¶ˆ>T(‹€"ö¶c]Q„‰“X`h�Õc*ˆ!6ÜrdáId�s¶��‹Ýkó;F”63VÅe‡å¸j4€Ôð€ ·FtÄp`c…Ûh¢Ø5� Еƒe¸É/t& …>œØ%*gK€e½�“Í~�'%šý LcëêH'v²àÙ7HìÌ­^Ön*j>§+|w„§€Â–+¬¼@ëÐY\¯r½×v»éz6ÝM�ßã·\úŦÞ5·¬¥Ü¬d*7GÀ"µIdÑ*nmÚ%!êT¹‘Ö]ihï4:ݲ`ô¶£šm^`·ÓçÍÂÏÝf£3 ±|+¸1µw'9^®£ 3*ö l¿Ùè¶•Àf·ºðëÒ^òu«ÜòÛí¦�°=%°Y."€Õî¶î`+’�Ý‹‡äïÆÍˆóT½}JÏ{”œwîàä”3i6x'ד±×&wÜ:Qb¶SäVt¥RìeŒ¹ä.BNéd�½lÉöÜuèuÉ� »� UÔçíéÞMUÐÝÂë[‘倨m§WvÖ¬QÖ%T27ØÛÕšgîuvwPŸL&¬?a…¸Y´0¤ Þ„¶ži˜ò9‡-oç]'ª™RÅ›µœ…¹7kCà‹Ú›5Ù¾Pâ:1K×2vd[Cnè•l�ÜÚ°æÉû®jÞ/Õ‘ #Ï‘Â$(%”B–YY@Üî“ q�tÊ.o§bµÇmE_”é ‹Œ%ŽpàÚâæºŒ×'Úët‹¸ üð HWë©ù¡ÊŽÔ•�Jsï”�Kèš™Úéžñ:Ú½dn¼dúédN>qeõÛ�<ÉScFð¶!0NÈw¡�?Bã%™¯ŽÉÏ¡zYqd\’_Cã‚܇ÆRIöŸBãG²�Vˆ½S³%ùŠ~?£–0ò=ýòŠ"žœÐ/OèyNþ…ïþ¿�ècn!§Æ‹¥(ôN›¼6ŽáÙñA\ô½.¼ñŠ¢2¹¤þí SnQ˜,«Ó�ÿÈ4¤Oï�…Í/A~7®½³íUËZ°Ú梤/L›´°µè“ôÍD•mž šÆƒvx•â: m´É½qtÕl¼93Voɉmq†Ú1©U‹Þ#Py¦IrÛr¶2M¥kUÞþ1^¬¾³'n£×ë ›ì~6{&*0OÙóê×Oðs·k¶� žãç¡iA•y‰Ÿ;#|õ?Žú= ·{F»i›màªÏñóAÛ«¿ÐÏ&íæ?÷‡#ô3{MßôàÔÿ?8Cþ¤Cõû#øü¡w0‚wÿ ïö»#hÿ3}×ì´›�ñíW{Òh4'ß¼gŽ*á{à(µ•^ãÝ(½f `A t‹Ä‹z|°ð®ðÿ“7o ʃmbÞ¼Ù (2�G5è³àÖ §×/¬U“Àœœ…-„=¼�:º^»ï`$º–bã�·ÃÈ_P›ZaãÍ{ä˜ãðá­xÕd…¿^Û.ëAÉYÚ~³Ñ·»Íf<ú;ûg7tЃ˜x³iëKÜ—hçJ9ñp I³Ž;8w×Ánè-»eœ­/ñ>—dpA/Ãï_¹O}ßó'�Ì÷ê•{ ’²ïÝ7²ëPt­m'®µí·ÚßÙÆÓ7Ñ?ÛÆïê›hh«¾‰Žøqt&/¢ù×sïêW –Š^ ¢%•Zþ‚ñ{¤Çqÿ®?�9¬3ˆ€ðbj°Sß»qðÜ{ÆZÀhopRo›Ù rÜÉ?ÑíÒô:"°á«(Èüˆ»¥¾%ßã3×À;q_¤CÐÿµ�‹½ÂàŒçw–jJ) ¦¹¯Ú�*w´÷A°;¤ä*;éê Ýy0@ÙŒD\å‰ÇÄDúø´{5çgv�þÑ#?ÂN7hä[³™Žæúmÿnò Ãi¾›|ª±&Ê'ãF_Ý5Þ6<÷‡o¨\ãÓæX`yæ5­x¾õT¡g2:­b­+”­A¥4 ×p‚è $%{ömýÖòÝ:°8ßAì>ON/–a3‚‰Žë@jÖ ½2rõ�]ì©éŠ| ewÓ w7ýs»Éª“N–Ù}„�Ô)·“°_|)7Ô_;Ö„[t¢OïBT(g0ál¼IXíB•Ûõ!À¤þï»ËaáQ`»{¥Â,ü|¨0�Ÿÿw�_èß^Y‘GZv·ÀR'B éu>û|È!Å~"¬H�¢ÃNïgЉ]låÌ7¨GA¢,#)0Ö¯¿Fq7„΃Ãø #•ä�êÝ㳩徶a“m=TÔ‘$y,k¶¨âšy³ü{W`B# 6OƒÛóÒ’_¥2Ôçæy®¥â.%?!]Ö™�K™ÏX³Wê¼ïƒ²^*íMB!«PZgïºræÒ8$9Tp³ÅMÄÑ(7Ûò†ðÚ·)€sÂ^XæàÜ{~cŸ^¯Î¸i)ýv`¹Nèüiÿì/êo÷¬ù ÈA††Äì”@ÑG¹<ÀpÉXMzÓY l'£­Yy‚:'U}dqYצ*ü…‰ G�*BS4ÛùÎP´.O£’0$`иmlà‚V®4=Љë…'Uöý¶×£º^£<`C\ Ú�²Gèž“îõÝ)n'£µ,v(I©K|Qh¤=gé#ã,xÊH銔á™W¤md286lÐÉÅÚZ9·’Rm!®ÁR]D̲É~~º0o�Ì1ƒÔb©çY�“h »ú¥wÇrIîÈBIïYÐç]=Íã¾Ê0N+ÔŠ9´ãm–{µ]²<¾·��ë§�/w%Ñm›Ô¬Cq¬u b†Ü¾‚ÿЛ2ãÖY,žÀ]z7À‚Šì»fêºd)piL{t˜4¦: 6š^Ê~mf„¢Õ—íóeûdè+>ÃÿK7P… n¡Yå-¤J8¥È"¬O8¥È û‰N)øSóî‹Ärª+U)rjêÂê¢D¶*ÊX7$«ü¶ /†‘"¼l—‘&»0Á%ofݹã/YˆnêöTCÛÒ+섨�K4åýnuË[¯�¦* Hqnª2îñ üliË}”ì,ʪïNÞ0ç D7õ bÏãXgx´†æõ7RÓ·ðËÚämý-Yº“÷oÎ�ãØfñvüžeøQ\áóÀðÙš>ùEhoJãèß�ß}€ºvQÞT¼Má©0þÚ•!x s7åðw%ôÇžÜëŒê/ìŸÉd’Àà‡Ú6ÔìþÚ ž±›�½ÓË/Þsâ„v%ݨ”íë[ùgn7ßxά֖»W“¬ë¡ðR^u©¼b‰\c^ü6^ÃiÄp„Ó#z„GÞ~Ÿ=¦ÚÉ‚}Á?GHyÆo¯.0¸Î~äŽ{Ì­gÉ'H&uÞXáªýÆCOB{†i¤²ä=�1?Kx¢ðÒdNVôÒ[Ý֑ëÂcüsì‹õ²£¬ðzånžÑ a“(¨‰�,_³Ñ™,{Ò©ïMmÜÄü9pZŒ]â»›�Q‡Üqà!ë÷J¿/mÿÊæ>°nØÀÔì2´ï%ZEJÓ0�oU–¨9V´Æ{Dýf�°Âí¦ tU}ÛóØ -ÀNúA$a,Ý7Ù]ùöqÈ'–¤VQ.FK² ŸÃæXÕG>Åsø/³OwÑ|ÈÐH‚é¤ × ØÂÒ½ÜÈθù9ƒ”KD'ç_ ù×ø3š›(a}šPë`üˆ ްD�y´o'h7rh�7¨ìèÍ’‡¡ö‰ë„Â;n*oÞw°W̤Ÿ8‘x®1½¶Ü+[õŽÚí<Úr‰>é‘�‚BöLoª\Æ£®"¿ñ”YDÓi>Ô,{žÆ:fPÎG€�âOÏœ·C2EWÿ±mÐ ­eiøY8K'„/ôß‡Ç P⥶5‡¥l{L“w4ÞÓD}.aÕëÃöÍm�,­»_Ù÷,v\tqÆ’%Ã?mcNX/ïùA?F¾fO¹û:sЩó‘ `ÔV W.ÇŠ†$ô$¤§ß˜§÷`¿µè-Öë• TXOì× †¾�"1Ô¿ Þ’:¥©¿ž5Ê�_¾yÉ—"LÃ@,Ñ¿8-Ç´°¦M‰^Óã];XB vYÞ–-ÇT€ãE.S:›/42!E?ÓgBôFù’P! dÀ “ñx‹Î¾÷Œ#Ž“Èbð8©@<Ä¥(÷âÈóýöÌ÷–MLÓ™âÉ,1Tã=ËÊ2ò<‰6œæïå˜â1'a¯€€�Q><À°)ÆÊV�¶Ñ2؇)e`P‰rüA´”�sI;Q^|Ž| }ߺG¡ÿ…ž¿µ�ß=ÇmÔÿíÖ›0–p4=}`¤³…Mdžeå�ܹ¯~†«`ü�̼)¨S o=pÖw˜=ýèQ±´\�*üü ¾´ø—ˆg¤H[Ãb]ñ–䟓�“p|SP.+ [v0¶¤ßää²Õ2ÆW-ÇˆÆÆ•[t$\{ÚR< G`?å誥@·PyK}ò/›ùý³TùV?ðÄ€š¶Ói yGý&zØÑ�Úl~Ì».X9.uvÊ÷‘j“ßl‚Žh÷Óæô«³J*QǪà�¸ãq©•@�2¥_ܼK<—åáÒgà‹[÷ÈÂþÓÑ·ÎæŸÊë¯O6Ê9,)Óîů ÈÌ%D™²*ë,·iʪ»q*=±›è*—uŠ;.[e¾Ûòâ¬jŸùÕL8±“V>šþ*a—çùöA¤ÚöÚÏV™­=²“¶Ë�GóÉ ÒŒ¢pí´Å`†²¾m+²ËU]šøg뮊VÍßÁzµòШqqy1]\0ýÌÎ\:$ÁÛS³t­¡$;ᔘÉ<ÄS ýb„,q�&õί6ùɆŸ1•…"ÓÎÿIÙ‘ÔŒ;ónÝ ŒÄ¬­ ~Lñµgãñ¥=÷|[ÓÌ¢j·hÄRÜÌA˜nÍ­¥³¸×ê/øhµ*©>ŽZÜÚÎÕu8®¹ž¿´ñs ¨â1ÚTk�ÞêîqíÿW;¥ž®@Ò5œE ­ýß?°5G󏿏(Þµ¨þCû¡_¯ù°&}„ ±EYÐR‡£º6k z•í·‚•5E— ÍÄRþÈO¯�Цí)ðø;}°ž1â…yø5Ø‹µ_íË�°v c€‰¬8à€‘Ëwæ÷Åé.=/¼¦C[nøs,P>T=žYsËw Õ¬vtí{K[ôGçæ#ù´éðôܾr.�…Þ«º{æf½»¨¥÷gË î2P¡L­…­êää©xŸ …² d±p®¬z”†éS)Ñ\Ôr®$‘ò©ßÅ?tœéÚðÙÊsðci˜p�BXð¶Ñg‹ŠëéPÃ!ÅwÛèl¨Ì@cú€ õcÖ9Kœ `>ÎÅ ü$!äàpÓdœ®x›½cÌQŽnöþ¥5}‡õ¨ÜÙ˜A J�í²~.�Ìlè»-}t欚?J‘+±[xª«ZM}wÀ°„XÐym$ž8n‹Ý*ÔFâ�Ñ•¶ÅŠ•/Š_|PMn<÷¦kà,Š_$|Ç“oñiøW—ÈT]R‹ÿj�¦vÆ~ªu×Óv÷F¬q2åí¦ ¯²ÿ�A3¢ Q ­&ÊPưSLäHyǨZƸgšø@0ÎμAytv�ø±xCÅ’¬à#“¬(æŒO‰S;wí³'¼~áñ4 ¤Ãš!ç ôÔ˜ÃYƯ åß2�5gv?ÿmNÿãüð®\[-ò"`‡5Døø·iÿÀFåÏá‘ÝÆ? ® qf5~—{�ÙÛã(Y_W0Ñ?[h· 98`ø£á™Íå.l‹Ðo*¤$¶[ÿm+_ôÃ…öÅ…=�ßS‰`*™ëˆ�  a°À?@{¾3ÏœÝôé f𔢧bz3øck�céˆèµË+‡*1™üU°¦êƒb_�ÂüCéoöÁ|`k·ˆ$+çÊȹ‡T¿ÇÓÐ$@Zx˜f³Äpˆæâ¿VŸb¹zR`1Ë<áŸÇ9€¯4;ÞzU—Z1�Ò¯ªæÆvÊH†–ZŠÁпªƒïôQ|ØsÉΦ=¹J»¦Ó–”òJrîNX•««JÍc5/.mw�Ïù#ž$1E³ÝfO¢#8:æ Ï £�œ5ÍŽo/“©avúðù·þœaU»ý?{?*¤J1¼�=5Šv€Ñ .ŸK~Êד§‹®-õ…ÑKgÚ!¾I±H¥¤‘û6üeɱ@\æˆQ�NŠc'y>µyCºÎΟt%ø:Á£ÇÊùêÅ‘Ôw\»vf Ú?Ž“ø{±pV�p½4Òo—;ðòq‘`€2ƒ G–æÓGN×=ÑugPopf—ïPu€ëÞf¤JЇ)Ðãs?¢AǽA* ˆ!œD8¯åœ�1'uÃ\+GÑ:¨»ÙÿÅIxß$!0îfê$„2@‰®8§ÓöUýe©ÜôXÒϱ0Ug1æ‹ß3¦ ×‡†è�Û X!9I€(Ý‘JLHœÛœ) q­6³‚knSŒø%\vñ·�Q�®üYW¾Ïäøo÷ÿ-í™cÕo†«»&k8¿‚#éú?÷@µùÔËÏ€H¯>»î܉Tz‡ •oêØ¨¡“ g5 Æ ׂ%�Šð]î€n†Ú$›{¦mPÔ~é¦pÉ|›Y7öG5ƒÒ $i&/ä�;Ò¾r�¾bµ²–†}ç,�½{ê…§ŸH¯Òƒ¡¥€'2h‘/Ö·êÊ·Œ½d%CHWèhçJ ´ü h{a­VÁÊž"Q^øëîwxHu¶›N5òRÙÁ4˜_̼@舘#è�ªšÂóg%,½¶ËÒ勵³}TE¹Lšùùèì™È9ø@žKÃPìñ‘à3üú‹X›‹9ôˆ ª%Š ~Ši0�Ó2µxvh@#¦q±EU–§ßV$þ�‹$­,“÷æxH:ãéŽû¤7î‘>ü0î’!üÿ?€ÿ›müËÄ¿:㈥øWol‚h8n?ðÔæ\ž$s¾9˵ëÌï�\hηz²ñwŒT'‰‡¯£Óþ¥gù³ü�sê½Sk™ó 7Õþ VïÜ·æ@n9ïá£%6‹’Ñ¥:Šô‡t?<Åê?þO»à+- ßi¹žË3EÓyÁ0ì™]1Wßúæ°>ª{ŽÙ´ž›:½¸Eù”�yãQØd¿sC¬7á–ÎÞ?‡e,®¹ŠÔÙïlãµH�½Š`{„YQèµÚØ&èÝ{Ä�{Ñ©»Ï3s?v¾þšåX~4™8FÜÍ* [�¦7nÈ¿`²à¥å¿; N}'>¥pßGzà3ÛȦ†Õ%Ø-nG“ÿî8ot®Š ðö-OÓÚiXžÖN¿�HÔ:"– yÆ}ÄãÔŠ˜Ò›%øÄïGtyEšÅ©åÞXÿIøm·ëÆŽ2ƒÂŒD@ ‚'^å=HÝÉ)Z¯¢–ñχ£?]Ð<¶ø;Kh[¿†éÀÜg­ÕõŠŽ'%²%<Ñ-Í‹™M,›MG™SN]ÉGc cnòÆŠ¦ü’½õâÕñÅÙÓ#:‹Ô43óê’„T‘‚;i‹cñ=ÆGS�šš¦âWZa NÜ×kÌ άUgŠÕÂS®PÞÕ£O—Á…5¥ž¾±8 ‡¶}$/òͦ‘yüêL…È4 YL�@ðTãˆØ1?ãý‰8õ|(úáI�.h¥M1|c-*$Õ�Rê®|Øà}2ŸkSO_~øòèéñ…e0ÝkTŽfÇŘ �¥=÷cUãFC�BêÀÖÔ¾ö3Ædà ÷Z¤ÉQŸÑÉÑ_Í•S:{q~zñäù«£O^~§!ƒ”½.k竺š\øcÃ�('E:E½p$sC+쑘Kõ•ÁÊ›'/ÏŸ~÷úðüäÕË2Û¤xö´(ÀÅb>» Û2PŽ|øóù«‹_¿?9úüäì\IljšòÖ¡²Ã“—G'ÇO_ž_<õÝw¸Ö<uAf_ºÏ´Æ<|iá"�z‹g]h3h‚…ÃO6¾ýÎèƒs Øa{/ /tqBÖÅï#Åi†¿+Z3pÙ(­è…Ô£V”ü<ýCjY’T¸áÜõòbfÝëˆ<®´v.‘>Ë}‘·DgO__Ÿ ­>¿8>?Öd™ QqG¦á$_‹³«Ç0�ì6zõòüõ«ç§‡/Ÿ>Ïßq¯Î4纆 ÞØ€W�é[Ùßéá‹�¹šôä¥} íäCžè»âöGõ3¾jÕc1K‡Ç/N^^ Z�ÎÕG?éB#—¶ì%͡԰\Z< Åž�PIÍ&ïÀkÌ÷H#2˜S%/8ày‹ Ä¡¬/q›¨xÈ­W í`“�X££‹÷$5�½;ç®›‡ÚtþÌgD{ýºçÑÚÇ$§XçLå�›×!DTuš�n”z?ʯ½cTÝÒÊF©�Ý1 ï Q%ˆhýYKùxdY‡Ï­ üˆE{Å`–ºˆ0;¨÷uUÊ)'r ‚%´Ô%˜“`á .�kl¸xi–­(ÀÌ�@ÖÇH h30sˆÀÔRA§<tÊ]G•¡‚N%*èPAçó¡‚B:èˆúÍFg˜WË‚MMK%�Rò%] tW“ŠB·®1tK_Nfn'¥2ªÍ©§›“—€C›ï³!ZåûêIs¦æ´å„Fº )nó9¨ù4"ÜYÚeý$ÍÌ"]!Wʉj® àÀî�Ø=Õ­íÌ vvR÷t¾›À•Mífì•uÍìe|3¬¹À€;Y¦"\“ò\´Êßáñœú.¢Â˜E¾ÚE޳:g¬œÉ”óÆ*ëŽÕēْõužX9“)åŠÕ/Åú#Ù³Í;YÞ‡yTmzÏÕ…ؤË÷TcÐ&ÐÆeô0.èšiÇKtšô†ÞeP³]ÚBèg7ª™‹\¬4™4¼ Ë‘„õ™ôê£Ùü{ìªqìš!¬ð:V2Оmƒ*ù Jð¸�`k�^³1(ÔJ*qFºžØ�V¢sê^×Ñj(ƒ|•<vÍë†:9E¿£†¥ä”aY9eØÝ¯ê”œÉ”P†e”á0žLQ cÑdtÂIGëÜ6¬ÄÅFÜ­”&Ic}7#.�07L{@�òXŠwuÉ‘Kº¤—ÌrÒ)"Ý|`T}ÅG¥V|TjÅ#0†ÿ•Bâ†7ÿdH5Õ#==UѾJ�Æ�°guÛÍÆ�Y¨(Êïq?íRªu¹]} #Ø®öì<(E°eYÔAZ‡" Rv«zÈËáLäÂ%ƒ*ñL‰ò–mrºÍë&y±Íëòªb0Vâõ.¹Ä×uC·H›+²qµ£º§ Ì™í~!›íì¹™'KéTe!Ó�O9Î×íRÚ³i–UŸM3£?w‹ ‹gf º{87»Å8×Û L³”šT禖Lõ8/°}FÍJéI¦Y:hÍ \êKϼcÆ—f§S$ð›UК¨!<÷®®0á¶bÖbÜ鑞VŠ�[éL"9ëØ)ÐjvJíñQ«¸‡d®_÷•mÚP#|½kÆ‹Ü'½-E^³Y«†M7Òë²{Z¬³‚ÁF×"•D8m‹Aè{î•J˜å£mÏ\ЀÈ&¥*Î̆Qì1©^¾ò•¨ÀÜ!7(vwiícÉ%·_5v9s…Ô-1=Kìå³ÄÄä~³9”’͞ΠÔ׊cf¯¬¶nRC"Ûý--_f_§¨ç@ZÚÞhJÇþ–Á’¦Öâ˜ÃÜÊ™ÍÒ6GS2:ö‹‚%‹˜{Õ3 ?$}­Ü·Ú@~*0SŠfƒÒòÓ +?mH¨;¾Ú'|ÅÞAá%†9ÈÏé±+ûž9Ð�Ü}ýª Ê�܃²7æ så*\¿j† ™ÏÛä�‹a�(nyZ$ú5É™‹"™º¯µúD8жtE/þPµø^ØÓÝ-üp‘­Àl5+½ðÃÌÂ+LîU%’¡�H(ŽÚÅêŽ"�˜K�U°ÎGœ$£r'I�PÂù(“N 2‹”wÄhHžn–ý%F‹îähïáÍëšhvPúä8Èœƒâ¤yýuø¤–÷-·(ôæ¡ô Kž“!9ÁíyL;F9šu¿åÛhÜIJ9¤å@˜fxb ™Úá2L‹º Ò£tîîVÊ<Ø@Ö8(E1�vYŠé´c]q�¶ªÓO;:$FMøÖ� ð­RÒik•’N»Š�†ýypæ�¼LI =ɵà£êìå5@”ùy àü·Š²ì‘En @Ý&i¢àG)“„ô !Ó:îI¡³«S°˜GÕ’I‰�ÚªÓ?á«&‚8O¯W…Éê,¥Swù({ æåPI¥&ìÔ S¢ÐÕä¶ñ©­Ê¢�d*iIýßwV;ˆA«k^ Œ½Wå™( „"kt’@ Ò8Yb§#öÓ¯–ë„ΟöÏþ¢þ6g0ÅMϦô‡>Lf!²¸Þ#Ë·??úëý™¹ô×ú3 éOšceòëùurɯƒY É/†Ï‡úÔ"A’òò0q@ÐʬÌfz‘Ryv±J&¡é¢Ž§Jµ$ÀÂ4!c\µ|}�^›œÔ„}Ý>1»ªüLbö>‹Âßö1c j§¦ÇÿT™µº°�ºyõ‡SÔYö€£(¨g_8"¡×›€´“\‡%Æo笔B™Ø.¥®]ÕFF÷d+ì;Þ¯&yùQ÷kÖ¾§Ú¯8É¥uÚ ËÔнճèïî©¶¬©Ï"ÌÇI\à Žù·�‰ÚÌKçÞN Ç6ÈY{C+pâžjW§†ÿK¡tDèX6Ï[äQ¶7tßî«6Š4tå´½Û`²zúH&}e²¾x ,åW}s‘uÃ<¿°°}Õ^‘ݤyª’Ý2ÜÎGf¸ÇږòL?ã"=¨vS(›�¸÷i˜Åà@µcåéE©ö†dHªM§†â¯„_àˆÊ‹OyfV¹¤ŸMHŸC»“³1åMc»`P´!ù4ä>7Soë4 7ËUÌœºä0—9í:wþ·Ì§9_G°O†{8_7ÞÕÏ×lˆánÎ×-­4]¢¾–N|ú4¦š ±aa1*vÖï-‡4›ŠÎU0ìÏ8Ó#Ï`{+Š5ت¬­[YÒŸ ý¹» ÿ’åÿOúùúk�Ân’XÖX#‘œ�Å¢è7¤T;y{«Ð‚ž¿ÍÑ¥žºLd³¡ó“8Ÿî'ÚéèpO]2ŠÀKgáÛ×¶7©‹‘²P@@e­…ê„åÔæ8R1GÌ[÷뵃ÂOµž4d^Å6“Ðñ¼z儾¼¥“f‡2Ì>yîæCzä�jC¨!”m†o/½[“ã$hú@EÓ%F€YÃùµ¸Çœóú•SdwÙnå:pà¨/ SA ¢6àÞö`ˆè@EâzP LTe‹ßÐ\™f\š/ UÒ”™${ÖTû„úU˜*KD½‡¹JÉæmEI+ª#ùÑTI´Óv4Î1)ô¼³íÕ‰x˜»¿w]5c0—|I �ðRê#ØKq<^³Ì¶ÛŸ¼ €Î•%wrA(ͳwmJÆ0…ŽÆW(o`»³ÃÙÌA áw–°x÷'Þ  •Ú )€Jãp×WŸh똪}5ìWCÇx„ŽÒí'ÁöÅ«êí#Z1_o�‹,n§¶/v¤ÞÚéšÏPŒæžNGÅAX”D*wôÞHj$¥ôâRƒñ±t>Ð�;J—*,^õ‰4=P’;J*ZPk¿;ç�Ò�J{{ï��vÆÎ…¤œUJw)œë<\í¿nªË¥ÇT„ýYBÈ/EõÔZ&DyàÓoy.øJ¿´%¯¥ì5¿¾z}|úúéÙÙÇ~� TÌ$ÛAÉï­_IJiÅR±36[BgÃ8‹N§ :�ñ/\/{x 3{’˜ ♌ß<±�V(j¢�¹ñ’]àÑO'srNg56_hÁ ò\Àóòê¥÷‹¿P|’çÆ1«¤CK�N§vx><~yÅ“sca»u�}B#àñ3õp,êqñ‡Rro¹ýþÔ˜‘_Cã‚ø¡á+4~'?…Æ�d"àØöJWä+úýŒfâ"ßÓ/¯è*‘úå x!§Æ‹%y <”ÚÆ=yfCWÏA%¿Ø†GŽm㜼¶�§dJ_¢êÉï¶q”M’OV°Èo¡qDæØïñ¹váuøëõ[‹a­‚5ShÇ�X&žn*Äi�±.Ükwâ6†ý>¦eø?´G ÿ‰ŸÍAL¢:�ßU«ô™Š6£YÊ8/´é´ �ªäs*QI·Ð–‘/~t‰\ üÒš¾[¯ .(¿ÀÚx¸A�˜î“U2ÿH¤�/ƒ@–Ò=?¡ùƒ3©ƒKÕ5Ý´}~ѯåù³\àRÔÛ{ÏÐuvÀ$Æá+]ùkªte nÔ~w�ª:–Áh4Y•EõÉÚAQÒRRVæ’W¶ä#ÓGnüæ$Ý ïù">¡¯ãL3^ì§ñÈl>ì§ààŸ¡ñ]f³Í¼ÐȪ:Ùf@QNNðÙk{Þ¤ÿ—ÛÜu B�µyKx¶wø-Õ߉{mûNxŒÝRýýÏ -4»¬f!hµQÉBV2Ð_¦EÕ>”›Òª#ø”WY…Hè£Kov/ž° VúXì'Za#U½0Qá¦ä;ºêp2¡aQ ^P‡ÿк¿ð°×óhÿ—êÏÌö¤/RQ¥Š3Ÿ02 Xj¢Í;�͸¡¸?ØÉP2©E”8Z$¥ÕA£Ï[* )©[Á½;-NGIê+í©˜[½bãÐ}ù 1É.é�¨ˆˆ>*½S4£ÂÂi‡ÒD¯€„jù_Ò¦˜éŒüì‚â$ìÍÂ@´Â{¤³�aÁ,{ÊI0ªà—�=ñ¥p [:N¡ƒ@§þ(eËœÜKRböRK(ËÍ Þó¤E!Ø.¼õlá¸ë;8 ‹P_ôúÉnªt܇Æ’æñ/Ô<þt�?˜CÜ‹§€*û¿%Ax¿@¨©˜ýæÂ½â¼¹õ?G¯^œþÏÛÚû»µÚ-^¹· ÉÔ×\ÒZ<þ·ûðo4–³it†±öKË¿rÜVè­ÆµþêÛÖß*µ‰ŸPkèt;#Ð<¿¢Ÿ{½áHÒ ¾�«™ÃçI¶5=ƒD])ç.öªÚ7ߣéNÞ¼} Ì«Á+W×¼y-lºÆj\7XÝjØÑ�ÿâÄõÿê½÷ðŸfS¤àu�ß=ÇmÔ ê³ÑS…b8ââ¾�ÂÔ¬‘fˆ«Ëƒyó§Öôú,Çu½ù8¸uÂéu#4P~‚ùZ� š˜±>3–Øbqÿäþغ^͵íwc6î¾zÏ pÃ{Þtº¦Iš5ùù,z‹þ|¬ïœB3fs&ôå— }Û>È϶{^·ÌÇ´ŽM}2IüüÆyKkr'žèfŽÀxõÓ0‘ÄXÚ³ ßÂT÷céɵ·ö“Of–xióµ^¾ü�aáÛÛ�ç‡�¦zg¡ì)Šúú܇ |O=øOx½öúamÓoí™K?Õù ÙI²WϽg´'XaE¿ ·ôÃzãqìÛ¿§Ø|Ìk ‹¦nÃl&i@Æ$º×œ9@2L.äëîOê´2(]aQ‚˜6ÃZH¬)¥Òop¤:Czª�óZ|«ÔKóòÉ{±8Ö�Koà³ð\*3ü:E-êé¯×áÌ»uóÞäM$ô†×¾w‹J[í)æšiÔÅŒ“µXäl½°k´:$bž|ïj2¨¥4ܬRK<Æåª�>¦ªXh�S\hµTÞ>ãϸV €B§•K×�=DýÎ&€Š]ÆÚ0ž~øìð•Ôj‚sµŒ'öµuãxþÙúõGêßÙL(ÒôX-nÍkhk‚òÌšQ÷O{öDê;¦Î~œ.&ïb×ÁkûØ4áDÆÿ 68ʨîZFh­š”%Іז;[Øg¼vg'¬mìÃÉo…¿^Û.}'”úa,äö†«Èú ÷›�¾Ým¢gï�ý뵂#öð7chNÆ ¹Š¾þú ]U^Â>2|¾Å»íÅ4µFâ5º(ÍÄпÇd; ªkË·©¬�Y#X_¢‘øÒn”;E©¬Î„^ÎÉ�˜¶¤£3`K§gˆ§ç¦'eS¢8 Ï+Ëño�€NªÚÞÀ&z‹odÔr<Ï<×~û&úÈ•pÝüúkû믥'6–­ÈaJ›à5sg'1e~5ǭѵøúëð‘Xß ¼92Ìæƒ†—RÚ±ËÑŽ›üqR_3ÐÝpù³ FöMPðøy"~ç_ñvJà¿khì/¼+gà#—ñÞo�^’Û†>nüä·_¡e´Á6³ê¬zÛÑÖÇk&Wv�¼§mì2Î'Ká·6çvð˜#5ÇŠ`˜ í¢ÒÜL5à]cÏ Ü<ÊîdÇÏ <±½‚ å¸ì7ú‚9 ÉVÀ.¾O¸�4Gº¼ædiĨ‘@Ñlþ]Ù]Ä&ßœ ‘j{À¨ñŸ¦±œ†Àeø‡&½Ž±@ŠÿþûñrY'J� r'\«¨' ¿•¥}”ܸ´;6ÙN�䦅¡£œÓ�tÔÈÜ÷–cÔÂñœûý‚^Ö×TJC 0Þ„¾Å?ã«§<Ÿ , ·¸±õzZñLÑÑ%ßÅHøê½RDÎ ^‘Ù1êÇúl6)9a…m×Z‚Ž}ÌÛFWÍiTj§"}$kJôHîé_¬•óξŸ¸ü;ò·¿ÚsÄÜW0lÆÎýú{h<Ñÿ ÇÔô+ýϯCãD}•ëF}—ÇîiмÌó@#‡fZé=Py4[¥µïG´ðõúLdù~ô»í�díû­Ü�·t£4uüéÂn «,�+î"—;¹ÏN9ï,z¨ç™�‰lûŽî=9IŸ¸§b&ùÎ_ñ„Ä�Z:z`"ÄþsƒË:nƒo‰Yé®›´©¢«$Š.¼ýQßÿUtMJøaĸ_Þ,žùÞŸ¶Ëý“˜ &ôŠl0Í÷Onz¡nŽÂæâ{púøÂàÀá´˜�]{·\²×óùä‘)·}Jc"ϘBK]‚&Ò¯™Œ^”Ùa× ûPæÍkžñÒºq®¨è hf†o™¬ {Ôÿ‡`PüÌAkŸýÆŽ¬¼o`»W¯Üc¦M58t°k7u?®ÿrKx4<µ�½+ã a¼¦3Ùµ§ƒ ½Øa¡3â fì°D:µü™”¢ÿ-Á‡×Îlf»­»€Ÿ/ì;L¼QÿN$̦}iÛá­ DœÎ ›¾Tg ÄÜ>ëÜc>Å�)"à‘%>Ä[˜»;$úXZ àöV}pÛª Ì'`ÏZ˜y0ت'á|ÒbY$èq³MVÕ¯Y|É6%ÉŠ=¡·—8›¤£CrH‘>ªoíBý&ÚÔ§�çµmÑ/xL +š3õ\U˜(?e¤j_Õ=XtÝ9µÃúmƒÈ?¤!êѽ×D� K�æžùlHt¸î¼[×ð£ÃêsÔ›éqņÞrÜ7ë ÕÙJ�+�¶·GÇUû1ãïýô¸ÂJÓÄn];†Žž�‹Ê˜¤GÜæEÌl¶�Ñ™¾œZ†Ð j»Á;ŒÚôÙù3Ô–dj…>B9>I�ù }’zZÅ@[r + –rRʾGþɢ)…gbêÅä¾vxÑbP 6Š3¡ƒ¨·µÈ½‹|M}"ïô°T¨½©¨ ¬ˆ(RJ¬_�'ÿwI?åñÃL£Wvý)lÛù i!�ƒ¢N�÷¼Ë½O†Û:+å0 JÜ<Òà†š¢3îOBr~EI�ˆ¯(¦$¾0™E¸G—ä˜Æ.LE¸Ã…ñŠüè§ä×ø%Çsé%aBåÀ„ÿ½±|Çj-0=À¤“e^J+/ NÄã‹á¿±™S“±iO×^ w³Á8¤†}á;é.á\µ°çá¸Öí0÷*€Ú;ƒúÚÔ¾su�{“…´8†Ó£�äèÎàüiQŠh¦×¤/oT÷_zaè-ǵV/BÛÎ;¬]“B 0 iíƒD çºS*1WNWÒd©kâÔro¬€½GG¾q¤½†¤µX9!A1ÖlgÔ¸Ö†?�ÑMÔ‰öýšzÞ"HÓhäÓw÷ ªk³oÀJ1`ÄEáùãÚßæô?ÞÖÔ0×I \gV3Wwµ¿Ùô¿Ç -Ñ+‡µVû³¬Ü¾×ÊÃNc/hËØ ¯[è|ך^;‹œmlN $tütí¨cé=ÖŠW4×Ð*AáÁ-n[AŒÀl×K7ê!2NDfE¯b®¹TôáÄEu©a@m±Ar&[ê7µÿcoÏá÷Þš�kf�/ }6·–èrX«¿‚òvf¡_ àŸV`û[z�:8µæNˆ¸¢Ñç‚JÌþ) ‹JºÀû ¸[›í”Ko1{,1戚L‰ò‹pGÉÊšNg°Âö,½“¶é*~ Ð6G/Ìèò�¶ðî¦ÅŒmÑêÕ¢ÿÔ¿N×~€¨]yô²î±šŽ­…s嶨Ë,Œµ‘ñYOf{š©èÖîôùÓ�#i3"� |”»s;³ðz\�QªoÑYJóÛá¨ÿů-Ë÷½ÛÈÕ Aßý.þÙbhºD äkÓëoE‰¬ßh“«Ö}ã®ñ ÷mÑXí@IíæÁ6ÃL-ºÆ´]nŒ æÁ(ל)ô‡[ŒÂØwT˜E‹¯Xw605¹á}<Èߪ�ƒö̾jn €DfŠfi6’Ú‡UØI@$êŒxL¥S†; ^`G©~¨ù[Í~ I? ªü,qÞæˆ (&µ"É£ú,ýF1«ÊS�ä¯,÷Ža;HÁ¦ýs&�'ɽ«Ô…Úòy €´âv%€¸J)q4ËH³<ßn¹ömkݨ˜ag$ =\êðgÑÚˆ#ûÒ»ã$u³ Nê\‡F-ÏwàX×nl¤j|7@XZÓ…µ’í2A ÚÍÞí¸ÆnÌd9‡�¾ñ ™ü·õ ú[ŒÙþ�Z+'„SñO¡cP*q­õjeû0€}ý¯:¾Éö0CBotÐo?÷ÌagÔ$~6z&Zªñs·×býOüÜ™mhoÑö]³#{H,¼êùé’°¦6HÕ,U¶d9ØLŠ�޶0x¾ErËt- ‡ ~½§¥Z…ÎÖøµm-h hL{ËÙ’>-I*;�”"Ø!tµ&ñýB·¨¤y5B(�†)—˜k'b�¥¨*[´i3ªÌ§… ,‚"%˜zU³ƒà"xMŠ ç;w牽«lã+g¹Z8S'ÌK B'Ñ£©(·ìnœ�:$äAÛ<'Q„ÛÕ_˜Ëvµ•Ì?—]ùœá´t*(âè6´´ÜÒwqúÝqØ<(’²š<#Í•'‡³ÓýM=€7.zuyÁ“º\Ð}ŠéE?Þ·4Íý̲—ÐóÛ²ÖwÉ3C£¥¾f"¸˜‡«¶›Kí$ïjÚô@®U½¼e tŽ \Û¸Cóbã.mL:>m16)Ï@ò|�鿚H��éµå^Ù�b²ä!&õ¸tS÷ÑWxFWä'å5BãÅáó__?½8;:|ù«B|ûþ×g.de½Ã–Æé¾ÃZÂý"rô˜ƒØ°-e´A†sDLSÆdÆâ] ?̤–™Š>¤EvšçõωúGC²p,S˜’¹Oš¤°ÒžžHØQ¬�GÉh¢¼iÐ&½ÞÜ!IæBIn�Jƒ¨NpÃÎÓ yoÒ–vàÄRú1’ÎQ‰v©$Œ‰÷Ša;¾°¡´ëÓ0¨_Æ,ÇÁÅÜ�àÇ Ëµ÷�MUÝYèßcÊV VèÍ÷–"eîøAÈ»L.Š<€œö(½ÜO�~üùôâõÓ³óW¯Ÿj†ýðcÎaéøÈÚÙŸ”_J)Ôf븸zPF¦-—Š»%&¥Ú¡Â¥­|¾ª.Yx°­šYií²[¡ZÈ×kÐù^¥¢U~Z0 #Ã4Fe•=«Î©Ô*wÊ®r'³ÊŠà�jˆÝœ´Ê:¥ÒÄ1¿4´Ùí\ Ú~eÕ±S*�º–h5*;óƒÌ̳| ôfì¶I�·ͬûlµ\}~×5‰Â¥0µÝê¤Ó-K:˜,šžÐ[‘ t×sï3û®v)ôSϧ°ô#F@x ó¾›�.§ª€ a¬à¡¯—o3‘È«×=‰Ð<²½«SÄYTîÅÕp�ƒ§%ßZ9³ 2±àÐÑJ™ÕëõŠW¯W�‹ôJq‘^©5Ɔ£Œ¥¿*g”ð€¬ªÖ"Œ£]ä%]~!ûfj!¯A”ö7^Ç~‡t ²ß­¼�Xνx!û¥\°á ³�U}5L¯ƒˆ¢Áël3ÑÛHIoôGi‘}a[îz•ltÀ­|�…J¡ë¦¼¬ ÕD(SgØl €L„ÂÕÑÆ\ ´!ɃjyÊ£4©Ú¸eæCÓü1#¹›û{§bžn½=^ï°¿aýbÒé—º9aÆœ½î€3iX �’—FõÊõ;€T®¼ÍÊ\Ä¡îV…Ž6­F:¥pø‚ZÃöWíŠtÍ*pìo){d�»”;/u@ºÝRS®öW±„tËmjbÈï“åGE>(˜Ý<‚–Úgž(,´³ô!¨“ݼ½ú÷çÞkfùÝy©áÁ€Ì½\膤—·cÐ%Š;ó§wN*" ý�H/o[èû÷Âk›¦Ì/1\†%W¨Œµë dÀzy;’ÙÚ_Xw4[ëÇÜ3°azy{&aÅ×f™}ƒ@ÉwyP1öòvK*¹×Ía…lí€\ç²µ]³Ð!ûy›“Ý„<]ÌwzÁTÑÏÛ²ñ¨»¬^—(�}Œ)ÕÞ†Ìmê`?oÛ,gÁÓru«¬ Ì¿Ÿ·-âQË®‰:€¼š{ÈË™>wQ„ìÿªŒÙžñ+q=èÊóŒkâxÆ‚øžñ±ðkªÞX6*·¨‚XäauQÍÊjÜú�úÛ¨TXÎBdw�šjÓqÈ<†§Ý‹ÓEŹs‹vÉ]ï´²»›3«‚f)íâ{¨‚V2#ZÖtP¶RîµoÓ*Ž�HW&²J¦_ ,—ùjù‹zµ¢êÕ™E—( ’HùÁhvŽ'Q†Æ<¢^x¥Š–Etð*AZt_ÙáÑÚ÷aô_û¶®ÈA§&J-Ô¬ŽÕ[¡wu…‡†âª sÿÚ4¹¨PÔK«N$w±ŒáˆŠÁ˜°ùXdsÎ%“(µt¶7[L,N¼ŒÉÁ÷IâyFgrŠ6gqeŸcq-ÊÕQ˜ªƒó°E²Û�×1/‹¥åßç¦ÝØr#±úJ¹œ“§Ï-.¯Ô&/¼ˆI”+¬T&‡‚í(aéKÑKé|òóT¦�ò$2Ú¤O)—jSöU¾ÛÊ\qSóùø�ï™ë£¸Hª+Òu×ÿf¼Á/+cX}�£°’—q×]*ur.“£›WqYÑn¢?Rn1U`mfõL›ÕÑd.„ñò·1L] kÙ~¾ë‚ÄØÈ�ê6¸ÈG¾ªõ½§Èº�5�•5‚ŒH¿´­ê¶qƒ‡`…ª"òî¼á»3~r/ëZ…AlSžäšWº¬K"ûm¥~¦ E'U»ðÜgòŠÞÞUì�&ªn±LÕŠîÎ*u·ð¦–4E¶-žª¤ß7áÛ‡Ç,®à‰§®[¤(<fkóÚ‰*CŠB½^‰ª¼\æÈ-ÇK’òº®%Öà @äß¾ýÇ4õ™HÊÎS‘שKßçuF¢:F¼~‘\Å&]Ëkýì†Î‚WõˆºH”¶ÁL¿º’@ü ½Ü¦h•k5¿�&&f”* â㢖 ©�h¶Yif£y »Â`V &L�-ª|ìhب;Õˆ9RÑå(ôR:ã28�@Lüúk];ZòA­Zž‡•Whˆê<¬ëX5ÓL&1“Ð㥠ý·ÌiÀ ªRû*á3Ú™�Ú,o>f”>Á’8%A¥�•¿)¨”Œš°icsÎ@a{†õXõ»<Çm6ÞˆáÕuH(rÉeM„”÷fóm“¼ŸIæÄñ�çÌj2ŠRI·£‰±µ/Œ� ±Qá‡O¼ÁQ´Z@úàÞ¸y©lÝ´Lù¶�VO$j‘³LBö¬uëÌ€yÕD¶rÄþyºX`gQ¥reXV2˽:£UöR_�,Öe/÷·Ø‹Èž$°õ(¹:û™¦kÜÛö,Õ– 3£¨Fnf“±Dg×b ^xœŽÚ£*Äh#ÇáŠ±í²¯v‘Ãëν)è>Ô›U؃CwÆÝ‘vä†Å3K?Õºau(ÿ2{¹×¡%ýÄÄÖ²/¾4sݨʸh<Ê5Y™˜Ú:¡'6›�Xþȵ4o;:,,Hn™á7·�q¡'×~Ø#�n4fâ’aë�©,EX½æ /¥’]Ùé;Î'÷Õ}|¥²ÿäK›½ &Õ£CmAdF¯)©V•pù}^†SšZMdfëØKž¦®D·µšAefí�Q28Ç¥£Ä yvR‘[P �LÔè[3gDÙåôéü¶„6/ÛßN‘LxP� pûÙhSîr6,`<™ ]ÐLÛ½"w¶=ï�†í ƹòmÛ­2’iN/G½8»8—k0Qå]�V±õÖ!&X}ŸÉ7Ø�³’ÿ�qã–¨5Y„JÚÁ€½_§IA‘¹7Ž®š�7gÆê-yâaſУEëÜ`'tn[anã�iÂÂs–˜°? í%M^ØïtAx>¤I ;í¾Ù¤ùƒžåæâ–©»k_˜õ/`9&â¡áß5=ãÇ3´N;3˜z@Ð OO4¼õ­U#ê 0æ÷;­¯ùÒ¸û¸50ŸSD̈�¿ÐÏíÁ¨ß$ÇôóA¯ ŠÏkš²ßëâ§ÏÍQ§-|nþô&ÿùêý/žqºx¤0Ó@Ë™ý‡.Ìwek^‡áJ¬Nò&ÆVÜ´ðÛ:Ö¨êµgXÜ–- `ЭßFÎçžá²wNfME¨�§çu@ g_¤Y½qúî£G¡ï%­§ì[@ÏË¢.{4]¤­ÆŸy¿²| κ÷XÝöax6¸3{x(“dª´Ãï�,y¥ðÐà€ø‹±Õ·É ¿Ç°ŒM �6P!ZÉœYªT»!Ô"à~øPA!¨ïrGüîß®Ž˜s5#˜8¹ö`§Øt»¯}õeV�¦¿û™îŸƒ!l¥_ñcßvA[ý ?»#äm_áçQ÷`Ÿ¿§ÍMsÛí_,éj¿ÝüHyáè`Ÿ ïöà¿&ù�~6GCxþO¶…Û=žC‡ŽÕÃô–¶Ãûl?Ì!ì`âáçQ»3B‘�>ïôÌ~“ß–úÎ{Œ[õ…eÓñÀ™òõ× úøœ}mÈ¿q¦éÛˆ»^5:Žñ þÖrBÉÔÏv*ëœ`3qSÓ@Ž î�X7b³ó!&· Ux·˜HX@`Óîþ½ez@ä[MsÛÇi-ð³Ù1;#Á°G�‡.NeéìÕ'’ôbƒ_ŸüœœqÝt©ÅŠF. ðßy4±JyL}çWŒÓZÁJÅæ9íHÙ~(rFMÌãã¨L; oQ`Cï>•³(—•ØëlbƒÖiÓ �*”Š¬Þ™?f~З\Ò3Ç0Ó¦¤8h¦ WH§ôÄB¯éëžýã†h®_‡Î½Á²}o¿R.Ð+gòæÍ›:½áÍh½z{€‰ á÷ú›äooëo©¸rå‰+‘»ˆµJVXN¦£ôÙ•«à]Lxu $+¼DÐjýŽ_ÍGÕ–…/ô C_¢û•mÑÎÀ;}'íãuÇž|•túx°ð2³üD±˜NŒ[%3›ÄN"~Øh2a£ÁÄÑI’¯k»zp‚£Ä|R/Ê(á.Þ|Ð~Óæ_“èxà0•»ž»^âDÆoGñli4acÍ�ìfxí{·5*b5˜9š[Í�_¨«®XëðqèßÓ ØÑREÇÝ£ÈñÉ€AþXxD~aÑ›Z4@K>ˆ�¶b°Ðº;û Œ êáù"kË캙6‘XÂäýPäAeò¶¬ÿy;n?$ö »m.á6óUÂmÂfåÆEEp±Öîä%xã�}4ì7í·ð’G©x‰ŠÜä|ö&|‹¾"g¡ï¸W(¾QæÖâ²ʽlðåîh&§Å®Z7šW�áŠÖ<7¨¦€W™&ö£øE|oj™Ç$rßH“zR4+J— âöË£“ã§/Ï/ž¿úî;L…k¬� k�'-íõ‚Ëk>˜í=eÈ=³�¬J N�[Üê—Ð8/ÑÌr g×év“ ¯–é= h„2G×åou"¸Á¸E€=÷Šsسh€™#r÷òÔ½ �ôØì�j¬Ñ�xÔì;à^½ðf4Ã4ÿt”u&v$NüiO‚ôÏ©*ò´^›ë¡Ék‰S›03¨ñ–KäXè€Õ|X6R‰ó|o¹hó¦éHmÿŠy$*˜Ë‚ ‡¥³–ª ®TÖ¬X|<Á�ÑÑ¡±rŠ$àd}rÉ5 J•½%‘eãäâ…ÓUt4 µ’놥oßûdêÓ$ƒ(Ei©àÀ¼bÁù—G1AG>…³¦":©Óy|W¶_)·‡íi)ÙªðÚÚEà‘md%±lñÜ…Cu‘ÜÎ)µiBˆ)†’µuy„rª6®‘d6Å·1qÙ$UqÜ Å U•3…Þ’Fn³]t•S8›ÜÛš’¸�«áá=Fþ}L�ôW.€D/Š8LůÃÈÁ–³i‚‹µÄÔÕ`¥ù’åù¬9þ©0²flUßré¿r³J�eÜ3jJSRì‰òŒü2²ÕJŒŠ¬šývâ~²ÛOQyt]”Ü ]õ=¦Ø#Š{§YoÞ·Ù`·×Nh·‚•5µ±xÕ[î˜r¸Ür_UX/~ÚÞrוžÖ6{³Â´x­ÈS8ü÷ PøMÁ"½?¬™Cø«¿5‹Ýhµšó©h¬:Xª[z³WtMÿIѸšÞ�l7HXü8pÁo–4ÛNLþä[G3‰Ï`÷ä¢7¹òýÏcÿèqù©·P\ fÔÿ<¶Ñøën’OŒ¡1KìûÉÁ˜{Óu Iï3{êù,+’Tõw‡@–¢%›<�·eÕri§]B0ý(L1o‚‰ûã˜ïÉVç#r¸Ä| VVŒÆøe¼|¤ÑéÕK$*;…�š…ª6]ûüÊs\á+öÀeÿòrjîvJãK{îù¶�KèoãZ½^¨¶¶ÌT9s~ÜÂS^Í›WúP$v;?J Fõèã–“ pÌ|ŒížXŽŸ^¡{îÎç¹÷Ý›˜'£1MMMë5:øtG#Lx¿t¨[T·?h’9ósµšäš~îuú=áüq„NKofaM° G•4mµö�ºñ²æåÓïÏŸb`¸ä%tºc/¡#/&¦ JŠâÈ¢@.^, ?«ÚÊöYÀ¡|éVÎU&“¸¿º«Œ‹[Ïôð2NNñ£A HôëÙÔ[Ù̯Q•w­Z!£4^²>0Ÿ9^f¾·ÚZ"Âú¸©Þ˜olq¼ì>&"/(h'cöc"²›qE…wàû•5›9îÕ8Á^9Uã}CŸ%D 1ˆW[ÊD¢`á�ò:,áï µå¨t‰3s’œUùÁ+œB±yál¾xb²ÿ&'”srÓ$2MÑœHm–è =‚ÐZÒ#Ñ—ˆ4.ÕŽ£äFy|\Þ_X—´„¤³JæÜ¼¯L8V�ô²ÇAž¤äjkëZ�Â4­+‹Á®e$é“…Š•ö¬åFzfàÓÞ!o“ðµYnA+¸7ÉeÖ½±€�Œ`é�RØ2oFø©øÜ¥ž{Þ"D„ç\wð’xf×—žåÏâ°ãòþ�s²ÝäGæ" ±Ì¡Áå�JWËšûm�“têÂÛü½,¹´É½Cz‘�Ä�îò›lh‘f“Aóõ×õ—??^GŸ.±hp' ßk7ôï[S{±€ýÑÙ FÞ ‚É?F ç�’±ÐVIŽrV™£0Gô.=Žø¤Í»ÙÁt‹ÅÅÒšmZñ5�ý±—•Çø`Ú¥J†muªP-Ýl“›¨¶¥»^^Úþ«9zÚ³•y爨™Iÿù´hÝqå!…Œ§MO_»}ÑI3=ð§zŽôž6®A‡)ï̾±}'¼�ضº@ ]5 3gNS5„g¶x~°pz…àhûÒZ­ìYI ¤¤Šçrm�ÒzœÛ^Ë2ŠÀ«tЫè6ïd¥Þ‡/¬Uš®NWÔ›�¹xrŽð-RßIBê¸çôzYáü;wX¢X¶ÃRûYQbm½XÐóN€$ƒsX}GljzîhH­-˜¨ci�Ùè®Ú³_-‹'îê`Ñ‚ÔË)*Ÿ´hDuõ¾Vä­ÓK¼o¿¨8)îg¶ìÏÔvªÅíà �àyåmÏÊU">ZÜ$øÔ&tΫLÒÏ*(;É–Ÿ6_”…¨GúÚÒR1ÓO¿ÓlïÓ΀f~Æô©š U¯ýN_Û°Ör„⇪æTet~»yË©˜:äÐ!Ã(åצ%ÇK®iaÖölEÑÒÆ«ÒºL޼×Õ©a ß¡:ÏRF‰|†ÒÛÅ…eòËsI9£\Ú͎½% 9xV5{T hò¤ÁíÛž��X¶ln>K¡ÕÍØìYFîFlÃûEe¨¡‰ä˜ˆ�€äXÉM™^˜4ú“×e/ƒ÷~Wùk y”?U­ýõBÑô;Õ cûU«¥¼þÃQÅ0‡øÄâÑ_ÝžÙþ�3�"Ñ8=ãq�ÔaÕž½¨¢Ÿäd â™” [¤ÏvTÉ|ö�nñ®Åž1óìä¥güüœ=ᘛœ{Æ3цZȱÑúŠ=J’½67'}ví7oÉš\;)±ð¾ßb°¹°Üó<xå•‹Bt&à7[OíFLXüÀ¶…m‚ÆÔ¹“÷Îj,ž\øÆ1ñáƒMW‰ÆÔ=FNpÝp›ñ%yó¶ù˜ z‰å±]?¦>€/‰q�'‚�¦�=Èaz´@N£ù@I ·âÀÎÇÆÛ½·Së$3G+,{m>~d‚Ëa°´bÀâ» þŒ¼ŸY¡5v(È®à“ÌX,_ÿ™ˆ~ù=Гh:.N£Y÷4ØŽXþÕÏ¥ ù�i\nîÍ÷b4ÅFŠÒ[‡Í¨d�`M‹¹5’) ä‡ü²‹²Š÷ìêKŽ ‹»L®!]ª)šÿpJDç=óJ„ÓÁV~Y¢Ùq™8¿ïÊ øÜøÙÅ<,r+ö|‰×Jæ›þ=4žlø‡“ t¯ZÓ¸Qq‚èôÒÈ¢�EvE éœ(YÐda¼‚;NDM÷x”‡:=üö™­wУˆúßa—4M6ûö Ç‚9ûí8š³EsR(xðf"hƒ$Yxî sŸeJŽŸâ±AS7×£ðc̤|ÁO!øÂE]¸Faæ¡éQ²8³„X  Y7–³À¶4?ˆGä¯Â¿áukÊ `¢åT‚*°-óNR¸äj1js^œôW‘4Z]ÐþdE�½q@}r/¥ê–!iE†üº¾} �Ña4¿Ô‰Ç\Y -X¡ç‹áÔ‰ìSöX$?çËGÓxK¨c)ºØ0 ²|ê¤Þ– á žì“¶³ûušî;Ü¥wcŸ{¿â]¾8–â—IäpQ®›'°¶ï º‘‹s{ômìs˜ø�*º¨£1×’_<ã:¸W û•»@BPvÏ,- z´hòŠ~gƉÂÁ kFUžÏ²Oñ–‹0ð9c»(C=vMcÙž±ŒÕØÍ�οJ—Ûuš­Å>øÜ|"þ�wý½„‰îEWŒ£É$Úq:»¶‘·ž3£B$kˆ;¯Dÿ løÝî@Yp9ýÍ-ûnj¯ÂÄË( 'Ë'Ï(Ͼ|Ïàcöôl–é63º4¾ü¾@»?â&3lÌ·Í‘·X/]�æjÆ¿”Ü;8oªÍSgG;©Z§SoÁjÓÖÍv»MÛ g‘°Ÿ;m¤‰ˆ}×Ü‹PúT …Âö™å!ñ6ûM"(9�@"�@2»€:Ú¿NpŠê¬�åûÞm‹U¬† £7}ÜO¶ƒH†À©%ÁH&DPñŒç]%Š!Ð$ ¨·ål4av�ÛEôØ4#=ºôf÷q�Ô,Z\QÊ–í0Ùw^ B]p!z¹žÔ£O˜õ›ÎaöîÆ'`&‡í@,H¿´fˆëæ‚EÒ¤†-áx¼“’ É;Žv3rÅBÕ’1ì¸0c Z3ñNn³ ŒÂƒL¢µzgLäCEö­‰›Ã~°C›}þ¯Üä- „˜‚Ú¸Ï “Ú™�ÔYÿiÈnª1V¼î¥ž9áÔOõ—{Û*–˜Ixü�«B²9f‡)šX«!ùL_!šÉAÊ×ÖÄ<%íôÃü$%Y\9=‰ddKz‰në%œvŸV”_ß ÊKÊîƒÝùÔ˜T¿D+žÌµuc¿´o£KéÂÙäûޤ¯ˆ½Q܃ÜeÆÐŸ�¤|rRt–}¡ìd3wU—o“Ø:“;y�ÚLùÅÉ-²¶›8¿.yí¤ÕƽÚÇèB;]¸é˜ÌÕ)g»€Âš„�p¾ñ¢{\é6c~ß"ÜO¾(²,?ìˆü¹Å°‰k”±Èw¹c©=1«q<8Q Ë»$™1"Ÿñ©%劰Œàðχ…†äC¢Z+æAí“®æT�$£j>z@´îò�²oP¾ªŽ!™Fåë�<áaùfAHE•5oJÑÚvG/¿23Û¸ÙS÷fÄ5~øùìüäÙoO_379­*¹,þC¯¢Ès1èË«—ìlgÆn,ŸÇÒn?¤¾Sž¯Éb›xB¯8àñ3qÝq,\}øCé’ƒ Ë z¼Æ ùÃ3~#?¸äWϸ"?yÆùÊ3^’ï=øõ»ÐÈ!|ý—g8äGÏ8$?xFH~óŒ'dj¼:&ÿôŒûw$tà=Û�\Ǹ&ž¯üBCê|ml——ä>4~ ~}Y¡ñ;ùWhüH~ �_È!æîåTDN�Krå�µc‘¥¿ÿ§¹cüA®ãàò­†§@™¤½É‹1uV<åfÞ­{�F9uò�õBý|áÌÛI�$Î=²Ý,WÎRž(£ð >õÚ ½̦ás�¬…”U±¦xL3út0£O�UëÓ'‚MT¹4G)»¨&‰FÎ(c&H ±2f`Åôò¸·ž?káµdò©2ck�Óº|çÀü)ÌKÏ ¯i·–‹÷rŽØ3©5…ÊÇMêÓVÞ*t–0Ñçö•sé,€aÈ]/½?[^p—éûʷµ°¥Æll؈¾Uâ†åX8WV]T.4Ò÷³…¹¥DϪJb1„%i}†vĸÈn´XÀónÀóí”›% cD]›µG “£g‡FNš…óà@s& tWtȺ1æpu§Qkr,±4±ÙDlåÒ ÷SeS»ƒTR«vm$ž8n‹ç7‰gÀóq;H/2qD/>”œ/K�GjåKk—Í4ç_]Z ³ß%µø¯¶ÑiV�†±£j#ôô#z[´ hÏmè�ýÏè šŠ“_“¼IŠ�i¬rÒƒ'’¨âR£†äs¡O€†mÛŠJÿ›FômZo0>R—~ª¾Í¨/"šˆHø'‚Gä.k‰œò%rJéçS�7„j #€§;´Dg†8,’/SÔ1+^qQf}úwdFØXêÎ}ïv‹žáí$)àJæ` šD/Én1Ú÷ÔÅ£å@Ú˜—ë[f:‰³ßu"çÉgMUÜß @ qõ«ž=ªøÊ‰C¹”»¹4•—¼ûŠe ¾û8S§À¤ Þ¡ü[æ±FLQdýœÓÿøu× ®-˜L2|üÛ´ƒ€ßñçðÈnãŸÄAÇšð»Ük|âÄ™ £ìúQþýƒƒüŒƒ›¢;7·àvkX.·ý€ë“nx2{ýVjA~"Ϊ•EºiiG�IB¦Ï”fèÍà�­•K%‘§WX“dרØý墾ZÅ“=Lxt[zÂr=•]�–/ÕþÍ>˜ì­�‡"…~Š|®0Ýïƒ=4 0j{M³¹ï‰~lËÅ4ÊÌKý€êIõÐLpœáÿä%ðåL‡Iñ½½r�’HÜ*?úî‡.\Ù=N»$U±³vT”høc,ÁžØrùÑ? ìkÚ% €K‰£X�çvuÇ3çfO§¤$uÚ’UAŒ¶¹ ¤±wˆŸy¡0mÿú*XeXÚª Ár°v›=‰´ñH ›/<+Œª„¹Íìøö2i•3ÌN¢Â¤Wìx™¼öÿì]7�*M‘í¬šVâ¨ÚpMJqä­Ö;©Ý°�ÍgQÌV¶šEJ¹¬Ò§\—±3IF°­A¦U ef¥%f�cëë¹$Ë©i*ÿ©4S…Ê™ÔM㊠wø.ÝQQ±…»ÇÊÐÛkwÀx`Ï_;³™í>ŽÔ�ø{±pV�pt'öz¿]ZÙý˜¨ß+Øœ"ö+MÏG¬­'Û öÃH6Eáþ¸ÏŽPØ(ì|¡Âò(ÜÌtó…ö M@¢¨rÚ'<ÿb46REg™ã^£wR a†È £Û¹ðËä×ÒïÖjU½ J°ŽMG,Ŷ›Îf[z‹ oÏÝMHÞjÝ%¶ºLÓ¿î"‰)e+Üîi™Dk•kÂ~×0odqNuw™Z÷´´EhØãº—FƒÄ…ö;(,³|;4r`âÎ.¢]l(ýH •´|%LG\Ÿ¦ýúþrϾT]=ao‰¿}ª-X8ãO¸GË-F%»Î'Ãá§Úàåp˜´*ýÛýK{æXµ†d6†«»&k÷Ê·f…¢±)ÅDï�ÈZò@‡‰‰-¦ÃÁ±ÜYbl“Ú,6œªí£¢±asÛA¢2º‘WÓýʶÐáSa?iœ£Ù8©oݵîZ ¬>?D«rÖÖ%iö;1ç^ºÎ‚«x±©í9Ä”Mú_5ûÒÜÏïk¸ë�†Ó/Ë^f·ñpªÙ±m:t¦ÖBhKg6‹wǾ֖UdMŽ�gþG^ó�‚±9-|`TÁ†šv mÄ.C·•ë:šr]Ìøê?äw‚òÚp·úÜ6²MGÑéÍ^ç±ÚË?§F=€ÌÕÛD¾l8úcOŠŽèE¯Ë™äôLYîPtÉ™q$��ðÏcµÁ©†Û ç3Já*v§ÎqDÖzbó �׺´íðÖ¶õ ù�0U¼ó�÷èkÕ\Æ"¸(˜Âl—–Ÿ4Ãuã+ýr¯·Âëõò2±Z¢/ýbõ»—íá ê@˜AV›ó¶=ܤ˄?^â~|¤3 wáéx LRF¯Ê5?w¤p–›˜EO±T�; ÐøU$®ð:ýÿIûtÛBô¤=.o…s}\ûÀDR—ú‘H\m¦,^}A;EúÀ(IzJŒ2‚s²Kš•o{,³ š ‚Ðb|¿X*5¥ä²gÕ Q*CH x.Ý¿œ…þÍîÛ]»“´ˆM.²ÇPÛF_vÊ n’yˆ0vH@Ìf³L7,8Z!�㉔U¶ªq#ÿÕZ8%˜EâBhôf‚ Ðz5%ôÈ gµrÔ̹)k�3¥ð®iE¶R¤Õ•–T¯Ùé‚|þ÷íCóá‹ÜGWÍÆ›3cõ–üá+ß =TF1k5ͨÈÒ&5InÛt1þÒc,Hò³3q£a×6ɯøÙŒÚMò~ް¬óWôyï`m¾§Ï{í!´ùýÜîb=íñs×ìc›ðóA÷óPþFÛ˜lóOöîKᆾª~HhüÒ›ÔONozXÀé—ý<€Ï�ÐÿðáýC“Ø>Üíz͸ž�ëoTÆò ¹A±Ê*Åé¶*9[˜. Úäåê &­ ‡XS®êèUÆKq¦Èö*ÊÊL7çUEÇ0X.ˆêz9*šzï¬~±ý�E,�ˆÕF|Òh4'ß¼g%°Âôl»³ ö»k¼È–Ãj¾Ö°…MV@ 3=‹X‰ºT¼VD¢ð­#2›¸ömÍ2žØ×Ö�ãùgëK¬ Óxóž®Ð¸Î þœâŒD:î¬Nj›çØ :Ÿ®NÜK0ë„N~ÁDÕ…7ÿ9?:½8yyñÕûø‡ÿyküî9n£N°ð(©<ö«uX8ø«ŸÏ÷1úzV4óŸ�÷5s»hæ8xÙ™¿-¬¨d'**Ù>„% *�¢öâðüâøäðù«ï.ŽÏ3{HS‘¨¸ÙO £}µuå¢0Y¸ˆ ’|Z­¬Â(fjçé ]ªïSß»q0ïÌ3Ö:ó~ÅŽ}# ëÀ~zG#Z6€{9¸@·–?{mÏ›tÛ‡¸é)Ÿ07‘c„œ ÑQ÷oyIsÀJê˜�¸¤NéÌûz:ã_‚*i÷¥b¬R!Mõ�L�Šr4O×ã³ìËe äzÚ: ›Ž–W1ÄÌÔRx �ÙCm‚ÿ-ŠÜjsœy™·êCkk)"©r‰[m¢N©Â-KéÎj¿¶–vXW PøD² ÍøD†»«Y0‰Sùk@Ð&¶5·Il›N\o&óx÷šq™‘ U•1,.…Û%®;DÔžÎ"®<½Ôàªjñà}âù¤“É[”D|—y³ûm‡’m7—¯P–RÏË˧Êi]€!öÕ óä<(ÊÖÕ@Ñaô>ÌÃ�%<ÁL…I)¡+Ç'vJliÂéLk"‘MFçûÑ5NS™ÁêF’=kÕ`šŠêÒ·­wãÚ;Û^µ¬Å"i¥ÌuJ8¿Æ¦~uªKGO�Æ©Þk¡Ùéô†°'>ÕWGýƒ&Õ‚”~�P xQ\È2ßRáÞ1žbr¿§K³n‰´¿<}}vòêå$ô7�úö p9+¼`Âõå‘kxnRÓF0~/¦5®‹Oõd”ü•M:nþ×EñÁ>¯=(ÉI./_&H‹•ÀcI6Ù¿¼V¤‰ý²õy¾Œ2 ñ©òRDŠC]®!ã«g!OܰaÉójGÄB$UA­ÔP­ŒAµÑŠjµkùz"?1[ÒC›g:=Å[Èø% c5‹Á6½—=â·n à½>&m|B×óœ.'ËC™}.qaõž¯ÒÈ>aCì™önK¾)ÞÅ8ŠŸ¨¥XHã‰+bTVqì’#$ý€Fp”$3%cç¸ï1p.X'k¬ìRº“9w˜•jêOBPBE¡qg5£¢â 8²¢âΊVÝ>9~ÝxÔn‚ºŠÕÑðFUn ‡žW«òö¬”-K®¿Æ�&S¿‘þ}?6‹?a²»6+¤ë!kM %tþ!;Ê:RÝ<ÍÞšÍNVç~y‘©«‡GÞSãM­Àf»µ¼ÖŸ®­—,€§®‘—­¶Ç*ÉúÎÕìÚÞ¡õóÖ˜§“Ò½Ã*ïu“es™Âíz\ÅOŽžˆ“kÙ®EÁú’£eñ tî_”ú ”zVíªÛÄ€´f¡æ¦¹óuÑVÌÉ/TR¥ò_ImW\Ðh«û˜Šó™[:ÛÃQçuþZ´6TÊ‹ñb–*7Tç•üØ�܉š.Ë9v•_nbk½~TÄOyÅ’�“ŒÇ<„7ü²Q„䌒åÅsæ7¢Eoò'è¬N¥Þ �}_®ÙÀ–ïX¢Ôlθ7Å–ãîÊv Ð}ÃR�c½€ÃÙ,wÀ�¯Œ�{­èä¦'ØîWø�YHçÊÑ3 Á'NlŸJ,Ÿ2ÿTñÂèH.(c”r²h™mE*‹tæikŽr,A3´þ º�á�IÓWyÖŸ�›î®#�Ö×m"ž¼ÚScæ?ü"~nF�OV9MOVâ–xuhçu·H¼¢ï^üΛÛ3'Ä·�©éÞJ5“^>Y•x5jÄ_¼²¥æhlÄ/ßñ÷ÐCøúcoЇ#ô�—Æ�ZÝÀDµ¾Átz € ‡÷ÎvAã˜ÓBd÷ �E)©k�ÔÕ=èb­È%³3öPx™ãg³ßÁJ‘×Ô9Œ Ím?ö;B_¼ð'oêA¸¾¬¿�^NNÚ*g€í£µ�)ÛÁÛ@8ôÓ yYuO ›ÇxeöÿE²1èZ€›™­PâÂy�|DˆÑ|¢v^ 6³ù˜ã6;˜-fg—6°m²¦8!8’z öÙÅÔñ§ û‚ûKɉ’ûÌ‹½b>{¹õ_…ù©o—�Ê%l¿Ú̱+·f©INñrŒ!<¯Ö·¸ð)ˆ”ª€ïýÎÜr5:q¹Pò"¶HÀÏ/^˜\Æ�k²êa�B;ÚØÊl…�ä×c ðN¤õ¿Ûßnc*²Ù¦>€\ï2Í¢bäïìûõʰƒéî¶á.wá±½ Û°!&UN ixË@ª,(BÕ[ f¯-¬À¾cî¸Ëe™yn.*bã2EývQL–ðì½›^ä‹�¸Yˆ 2¢.R‡újá(°/·`TÍ<,ÒÌU•³Î¡Ø‰Aoj ߺ�¼D/Ažzó†ÚG{1k­€jBïÊ·–ÌÜø–Ü Äõ&ýë[�¿P?¸ÏÕ˜Ã(,ÿ„E—­êÂÐÎýDYi$tgfßo˜þ”;yó–= ¬ÕÕò?kßÇûô âv&>Îü&n˜»*`. êƒØ¿ñ\ í¾Z‡�3³Ý«õÂò9øÚÇ =÷Œ ÌF°¾Ä;ûK›µ �µ?bê–ÍÞC×piÐÊSFd�X2`;Ñjn°›X"ÞŒˆÂqÿùê=ð¿…Ï~Å'öVwÿÁ¹4ØL‚š¤�Ç6M& i$š83þW$ºîÝÇ…ˆù¿Ø>™Ï�Ÿ]´›ÏžI·4ů9ÆkŽÓÎ^:y0*h¼G7ÄŸÖ6¨JIë½�èR#EÍaŒ Å3Ê_�R2Þâ`»×öHõw|jt¼}5› <Ú”Ì&À?@9#ò{ÀusQ&Þãzü9áT0®ãßðÔ¥ä­*n|~Ä]F¥Û#8Î<÷ îß:~:|ÂkÛš=¥>�…â.ˆ’hʲŽèÕ¸HòL ¿Íd‘>Ô€ZÜÄT ý 4¤÷2ü í&‘±‹'ƾõ½!,e»3ÓoãìchèõT¦Í{ò¸y/ÒEŽÐB ®Ò²—YÀè[’ìÇe+¶XTʪ«î±ògÀ2Õžp¿ú�W¬�Û€âÆe– h.Å™µw\²`¬$ZE®0ü,ByS�³ªcÀØJ¢ueKqð¨ÉH™ê�WÀ¿ÙòÝ{%äºÚ�O 'U‰ú »O)xi[.¯ZúÙ˜t›ùFø¥Òç—JŸÿ•>1i‡t6jâ;µ×Ÿ²DèÆ ©0ú¥Âè— £_*Œæç{üRa4‡¾TUžt_*Œ~©0ºU§_*Œæ%®Tè_*Œ~©0úq&ü¥ÂèÆ„/FYÒ¿/F÷3úî‡þRa´Ê|©0ú¥Âè— £_*Œ~©0ú¥Âè— £î— £_j;*NÇ/F¿Tý, e~©0º!â¾TýRa´äˆ_*Œn7¡/F?ÓEúRaTÆÆ— £2¾T•@ûRaôÓïÑ/F?¿TýRa´º>ÿ¥Â¨æ§/Fw8Ü— £J¬|¥=¿TUùê©0ªgÊ_*ŒªzúRaôK…Ñ/FÝ/FúÅþ+Œl+Û<—öÓ¢)B4#ÿjÕ}½²�àæ*É�úIn”Ð…ß§¨öQT4ûTÜž­åÜñí[k±H/&5%£bY°Ÿùï;¬ñt¹žr•Ê¡9”ùc`\Þ_8+Læü‹h4Þ„o›,9·œE›xÄ!¾ÔIªP%С-’iGK!²iGÊ¿q¦öÄ“Þñ'o3{mÏ'¾ôÓ©å[ËàŒ¥¨¦•¦'–!5ž¾8=ÿM±ƒçž5³g9-i¢bÖ÷äý)NÛM±¤OÜ­,jb™Px1ªš÷¶hJ‘ÿÎì‚öä�­F´ÞlxéÜ«CÌï±e£ùÅ:–qûq.¢ãe|I)Ä¥d±Ø§=�½|c6£þSn‡ lÿpöê%æ ìý$§¬3¿‡¦MžhÞ ¹úÑוN¯išÕF¢3l�^ó0�‘}^jûë¯ÃìN‘ׇïêžÞeF޶À{~âþì/’3H÷‰ Dýe�kP1÷4O<±ü«5ÝùÀxwœóÌø¡umÇVhM=Êê¬>|P@B Uù‹#b7ª1£º+¹46ý! #° žY|òês(ÀÊœ+·‘JOÞ†‘ÞÈD<‹ÛDaü‰jÛ`¹öäš42/Å¥'$®e¬ý…¬°©êßÖ›oÚoó’b‰e@d†g¸Ö�s¤Ñxc¿%ï¥YŒCºg_¹Ç6l ï>¹_2³‹»L³�“þ³;&ù;ê}EiôÃD} —g~‰<ú&Ç÷ŒC|¨š½Æ –xå'ט~U¢Ý‰ox¥  —Ëä$)Õž›dëŒþÏ|EJ–|�ÒW‹–Í)‘×?½Drbÿ[ßøI¡”ÈMžúdHƒy 3Ûm%€ä¶‰j¤aÚ g*Ð©Š HÒQTY¿Ôx¹€+`JŦÙ55‡5±Xâ9‘Êžeu?c©çåtýÔË /Ši&þ„0ÍRÐÇ ð5ø†u­‘k—J�ÏZBdzø‹è”ŸfÉ~eVÇRèÏ?h†JµÁÙp^ŠŠÎQ¤èÔ³@ ºÒ o%4¤z°$ÂipOÄYµ–vXW¶·ºnLU©ö¬¬A=Q©ƒâ%‘+p'—bÛ‚ÚŒú²“\2@¢De’ùÎMôo’'<Ñ?«W”_à¥OFXD¸¸m—æ÷«T¾ÊÕ/â•…?³j­ï|ã„PÎ{?H™þÏ|ãErWœ³ ñ¼¢+Ào­‚õ‚yÂvdÍûy Í›Wœàµßõ…» u>Â7-ü‹›!Sx¨âܺ4Ц�¬·Oó—�¬—]µFþ×3_æ¡ì%5Ƥ­–Ç•­–ô £‰ñºëŠí¤n—Zi€iG?ÁCmy´}k¤meÁÉJ8¥Lžé"k¥$=cÂéªÞlÔ]zˆ„ÆùÑi¥ª�‹½«Jps¢€llô¤sYÏsùùx�s( ×ó¹P@džùº3yç�Ò´eæT)Þ vJMúoC´5ŸVÕ«çøÜ[aöJp•F•Þï/ª¢¦l™E,o£õúˆÇª³ t§êŸ›�ªÙ›¤�œªŒø/}-ª³|žwßÿüíœý "Îì¼{%õõw58ú¸£BÏ[„0( |8›E¢¬è½qtÕl¼93VoÉ3ß* =Ôl°êVd‘bU·„Eì;’Q'Þ¼} ø ƒ‘0£o>ìp\o×b�Ÿ÷W[8TPQLf¸±gÚ¢›k…D l¢§%î^6¡-s]¡`,…fH²UI/¿f2-”H亘 ÕnöJ6Y ×øÊ…Ä™:°„r�ÔÔß¾|±Oý¦OVGŒë7<⻸”q!G‹¢N9Ê·m&Qb4<Ér™üÇS]‘b-*3h×£²ë%Pé3uÊ“UCƒCÁ½±@5ÒË œ[UQ/Y4Þ°ï`Ê3v5\ªhº³ú…?w–îîäƒoÓþÞo�Ív»¸ÊzGpß!=]#æ«ü5ʲŠÖƒÝšªV\ïT²¨i4ä̈`ÆÂv¯Â뜽¬¶‡T“ –�×-/`%¸)1‚¯ ,N’í·M~ö‰Ù!¦ÉB7ëH«`ì‡|¿´ùÕ'ÔNF;Sù,JfçŸðb«Ç9Q;mܱç´�Ü49Ò½zæù¯æZœvédºÝ5Ò&njï|øÐoonp¡Å�Yßœ<þ¿FÕòÍSپь ‘Ä÷~n©q¾GÚú%Hc\u¦Iãý«ÚYĶW/�øJéÿŠm‚ùAÐ[ еS‹@Iy&k``8âuùàû‘ã-~òÃþŽÂÏR{)%G#´ˆM¡””RIªÉù"sôûÍŸï©'/»ð¾ã{®:sgJï‘á¹g­Vx™9îÑÜ*)·½Ø»�{î��N¨µš}ýù¾¢�•}=|þ|R· þ¸»lC/3ê6·jx5?9�~—å ÐÇb½È#¯:Æ <ßþcíøö¬Qǰ٘_¬ì•M½âÈs#vu4–Ž‹ 'ù̺k úýnø¨Ï^i°7bÎo³ƒòæu|WxþÉ`y¬àHâˆá@H½÷¬]¸²^@”Þã6¡r%ø½çaÊîT>!wd" 5¹ª6ó�{�÷ Ú¥µj„“o@ôð�%ð(® á³G�`gñß±9z05£�;“ÉÄãÇÄ·!’ÃØ{Ó~+ÁÓ|,œè€à²C>q ]–tjkz#ÛH2´dº°g¼Fü{€gzõ“b=(ܹuŽºN³ >ü:yd&®8°*ÿp·©ä¡ð/,X3Ö£­Ú§†õEG`Êx¥Þk£D;× xL‡®8wÐÁ€á0äè“�~X¾†@fHäøn£Î oÑ- ôN}õha9+Ø1è¯#:âè<–çLì i�õ’¤ S"K.gb=�«#=oIk(­êÉŠ�°8€[nU=¾ªnéUuVš5Å}¯¢›¿ŠÎª5÷½¥XMO^77¹n|V ÞV_7ljÕ8¬DŒW¸t•0+zÕ/݉8|$æ™Æjã�™À8ûncåƒô4‡#ëÑdâR?;ä® .î>Ní–C ›mz' B¹§Ý-)îÇðM\†¯Æ=ÿK¡;š½Ë±žÂv³Ôé^cÞÇFGÜ„¦WqŸOaGŠ$<�Çx.Hîhíá1쿃Cé}ñüc»ø®Ÿì5Eïòo#";ÍǃØãv„ �iK £ªçòoe<—¯Ê¸þ¾�“Í΀C—hö{h<Ù¡§³Ò÷z[ÇäßTŽÉ|ÑéÑlë•ü)Œ×MP+›!ýýWösä�.=;ŠÞP÷):â9©?u§§“‰¢°�üýä4󖈳寲Œ(éV å •‹÷„—ð²Pá`®ËõZ4ÎÀЧœáÄÍVÖ•ãÒÙñfš¦ìSö˜wÜtáP_r WKÀj y/›’3Ä3c>ï˜Iæ¹uï­Ù€¡ÿ”ÙÒgGœ(‡G‹[ÚgÑRÀ±ÄHÎ5æØ\9× Y`à_³ÛŽºüÞ Ât·¢]§ÃÚQì/Ø~cu/ê²8±¥i~6–áF7DæYNщ!«LƒY3¢ã;�B5ývÅŒé\©+ÝbƒŒ‹ëò¯üª?ýëlXï!SºŽ r]3â·l¦tpÊ$³ìvk¾Zfûc à»‚Ç=Ân¡ê$º�’�ø'lùÞ-¥ z�#ÞaÍ,9Ë^ ÚN8/di”5ñ26#Àgšªéœ×«àm%Zd÷ßìq3Cþ)êù\k‰W’%w¯b¢ÒܶŽÎ¡7ÛmzÛÏ$¤ìÅZ•@�È"\æV=) ?Q¹Ñ$nCŸãÍi7ŽÉkÝ#¿$ó¨.š£Ö}rŒ7­¦.´@•%zy@^û„zåÄŽºY·‰Dn’ß9lñ *?Õè…ùÓ',sF¹d&…¾e§ì³YPo*vpÚóP%¾˜&4k&D3»\’kŒ8Ç3á ÄÌ.\Ù f/ Cë§90 Ç0ì@×Cò5€/#>ÈT&ò@=HC5l6:íôCíJF;E¬ =qá�èF,…¸ñç ¯a©r“ÄÎ]ò’ê9i+ú�tŠ"ÚŠ`Ë�‘»“;}ò½Oè½oŒ #c�#wÓw†ä_|r/¾ÜmÞ‘}Ò†?;†ú u.óè¶ÉyÙÛéN–�T‚¥+zµ(ob˜FÍF·“øf½WäÓBjDaãæÓðMûmáµtÐÝ\ÝüpÓ|¸ä;�2À%ÿlàì—ZÅç¾0 R7¬½uk©ÄN\·oìï#ë¹»ê“+©äQ––vÚEApš¬ õ¥œ#÷ŸQ¡ó�Ux¥€M)­Üž¶1­p}wˆ®¯©éµoØä‰�ÑÈG\Z#"jdn¼dšýt2'Ÿ8¤ú6$ÏC‚6ßÀ8!xÆoäWϸ"?yÆYú†K¾òŒ—ä7ÏxB¦Æ«còOϸGlÚ¸ŽqM<~þ94B2÷�cB Ì×¾á“køök½¤bµ�9' Æ‘BüÈÕrj¼X’{Ÿü3$Ï|ÀÎz-ž:+›ÇpáýQ\×W�ãÙ?/Xk&‘ã“el�Ô¨òµyhUXàüì±yçÕ,„(™Ø¾Õ),LœJNmʲ ð,Æ�¸¼‡º\—¶ØÏ|>šwä,½LÍÌi@3±FÉ„E6bž<ÿ0„¢«…$[²PWeLYõ.Q$) �ÈZMŸ&‹î¤Ê¾" e»ˆŠå„ʲ”ŠeèŠhd+·Ä8è â|È9ðD5E„yq‘0³D·e:TÖYÓì¾ÍÇÊÝ›ÛN!¹s Ó7o5 ý¶ÞÑ,Rœi  ìW hn—â•âéžXÝ¥Øqým"Ç?+çZ@¸½“y'wž¤¢²÷)õD÷Sú¡’¸¶Y´,ÁX‹KD¤‚SK§&ïx|*)óJìÛUý­“U•w¨_L©R®'¥ß‰Ü5’º¡¥ ÄùÝöLʸ¶µ[7ïè®-¢õB»�P¹WX!„ƒèêŠZe Ü©3‚=c)Ø’âå"¦ â0;e¼ÂE1l–›£xbo«}‹ø(³Kã£’ÕØh½2j¥Û(¹Jȼ{<]´¨ÑœÙ‰sltCÙ[h5,°[qúe¦o¶«Ìm¹¥€6] YÃSE ˜Õ)À,Ef%0«�™¤‚" Z1´d Þ)E�JtЩB�$dízY›WÑð"YZ§ÝŒíÃåÉ¢“¿à¢U©ˆÈ¦a”Œd”ZÈË›yËã ›¿à¢U~èWÚXÚ©€ƒnâŠJaÔ¯ˆƒnu:è–¢ƒn%:èV¡ƒn’ŠŒýÅ8ÐÒ�–=ôJÑA¯ôªÐA/IE¥FJ`¡×ì¡ßlô`�ù »úòƒVksõ†•â¢5¿Gò .®HÛÐL,d2Ô`2òÙÖÆgEŸ“É$4NN/~yúúìäÕKã—,bËŒ’ŠöœÙQZg­Õ¡žcI_¢éêĽDË•‘ÛK*ÑÄ41K‰4}þ‹ДòÏQ™+HM„Ç™fª æf Sôo‡Ä‚çc Wëp,ö>AŽí¤SßÉP<‚ðÙMSãz¶5>û¤›&G 袱,@¤›&G¨pa·\<à#x’k‡­´z£ò«W‘UYpöHÝ# ÞÑÛ¶?Õƒ¨ßû¼˜0pŽÞ®¸ðð£�e .ô>3. Ì£¿#.<üh§¨ýÏŠ Öî. jGW\xXá �©NñYͬ*Ä M‚ótÍ$r-ÉÇV«3 O¿dÔ/]Uó,ejÊØÚíìØÚ­®hF?v›hÄe.Q=…«k àr6좬_¥}±Uiä$3‘’oÓù š�¾FçÞ°Î`j !»$£þí¬ã&Ú‚ñ£d•îŒUzqµ·»�rWžËx‚ô 8z�ņ”9cJÙ®åª mòOô³ì%ïËU)Òâ~Mb[x˜ GÔ%SöWÖÞåh­rÇâZÄ$ê-¬ê\Øq1ý*Öê(2BÙär“Ý&)Ü8<êV©JI-N�ó#ù¹^‹y[ÔI¯ç&‰ ,ß⣱üÄxvòú鯇ϟÓð¥‹KN1K¬F¢­m • ɰ ﶬë#«Ù ‘+K †×ïÛy¤ÈEWÂ)r³Cu@R§ÂŒùŠ‰Ù•8èó5ËæÍ> è3–ÖâÖòÑûÞZ°)ëHÖÝØ;P›'.•%RÏÚ6]Û¾(T°ûÝ€ÖÈðÙ„Ü%ð?Û`1�îܹ2Xë Ùdq7Ý7_½ßm)É6~%ÙfÌ[·¼1úž? ²¬I£Ñœ|óžå U)Àxú¯(�ÏùãN$üJ$ørU™ÁxÖ¯ôÔ&kãpÀ~ŠõìIÈëwfòÐ%ü�f“¹bá¬A¥¯ ̸ÉNÓG¦pb˜¤`g9i®° á…Ü!zê²¢ŒÍo£µ"væõ`zm/-¾ÊQCšn%üðá‘ýá<Î.ñ£ �3#øŒîäM=ûF�ÔÏ�N/N^^œœÞôø·W?Ÿ‹¯?Ë?â7éÇøÍAòÍAâÍAòÍAý-ñ&˜g¶žÚ�f™|Ӱ߸o'!ü…ùxÞ£È!µ Yüy‚ IHÛp©æPã?ã§fóÊ<ñ0Z: bó6Ë„c’íQv;[¯fÏPtÇn†DYrß'ï1Fhü7ç¸DòzQRèÃCÓ¯¡÷¶lN<Í¥‡Åusúúk8GÎ�¥í­C¶WU½¡ ó�|ÆÚ±hm#¸ön©ÀhªE4Ó»ÙÀHKÌog ÇlÀŠYFh½³›È~é·¹ãZ çOxƒÃ‡¹v` ÊašM©vjü¢&éKtvò'gÔ ^N�ãQX�§ÅNäi�Í–HÓR2µÊÒÈÖ�Ù8 Íú²m"•°(�Jé�©å�ª�;MƒÂˆGÎ.‚aˆ¡šoBÒ=› 0%–{¤ÃR�tR5ŸÇé ¤ dš A¤8`8¹à*‚Ü*Ù Î$3‰Óø¡x—m! <µÜKäŽhݰ\”-Ü_"H9�âD)Dgª?ŠA¤E¤;íˆÏS°+ •¡/xˆ¬¤Eð¸÷XÂևꧤtJŽ„jeµXÛÅ™r ñQS†ò,Õ^\0ï=1ŒŒîbÓ.{8÷)¤ RǃPµÈfXK¦Æ@÷Ùr–F'¬è ƒ¦9fïÎùýüa2ŸËì�xðÂq_{·H:�ÔÖÿaÈXg6æïÀã'#»€²ðð9ÁI)Ÿ P² •ÙÉ…þœ@Nà1Küƒ½ÿg�YÀýœ`’$éÏ(YØÿœ`’e²ÒR?ìôÜXùÎÒ¢9�Ð.é[N`Ï¢S´žÄWL½‘((àXÄì‘e@Q7QÒÖ—M‘ �Û,ª¨›0ÙIv;ƒHª³Ll¦å÷Ÿ]ü¥ÔŒ~G©“FMÆ“?…Æ�dAc%±í3´å“¯è÷3*�ïé—W”W“úå %rlçäµm<%Sú˜’'ùÝ6޲€¬@.%¿…Æ |òÆ`¢ÙXƒ©ˆ4ªÕ &êÿ¨]¶‰-"2Õ�(#ˆZs˜ "¢ñtET¹À¦^—E6ÕÉÿRŠf!Âê�©Zí +Çhߨ‹IݬóW€EZ_¸æÛXiøÆÎ [Û`œ¼pµ�ÁNà¡[_ºÔÚð´m¡æÁu1Ø›t(bàÆ ¢7 ÐLÝ™å‡-JìÍôÚZ—�·X‡6Oeá�­^O¹«ÅÎkפP<îw$R8×�P‰¹Špën'ñÈ{O§ê ŠaÀãZþtD7Q'Ú÷k• Òt€®üî>Au,ÔXa=§ÿe¨�p�YÍ>ú7›þ§ Uæ°Öj¶8<ïÆµƒƒò°K¢ôØ ¯[4,{zí,f�NSŽ¡Žâ§YÇÒ{¬7…°|  Åç%ÄËõ�5V(zMœ`Pч_"~»x#Òr&[ê7µÿcoÏá÷žÍãšÙãËBŸÍ­¥³äÔ_�„S;ƒƒµNjüÓ lßaKï]¢Í­5w0^œ ô8Z=Ã?¥�beD.0 Ü-�(¿ô³Çcލɔ(¿w<_Îp+lÏÒ;i›®2à§msôÂŒ.ß9ak ˆäŽR¨¿øOý«*ä>KǺ€}±Ÿðd¶§™ú�nm¤ÔlF…1%mFä1�ï�‚ƒ2LÒ|(ãÚ@€LÃ7è,¥ùípT‰ÿâ×–åûÞmk½j&Sô»øg‹¡é%hPH‹ý­(‘õmrÕºoÜ5ÍÇ—–½´q�¤¨Ý<Øf˜DˆNMÄàð�`‘f¢?ÜbCä’Cn-¾bݹž€ê½Úªùj��ƒö̾jn €DfŠfi6’Ú‡UØI@$êŒxL¥S†ß_`G©~¨R¥f?…¤Po–Y6_Šú°eøC1©IÕ`1è7ŠYUž‚$e¹w ÛA 6�èŸ;0�zų)Îë²AÖÖM2G Dõ ö7Û-Fýï6•0YœÉ¦¾º%‹íöÈHÄ÷Àqƒ’(vQ¯{D­+Pªþ MZç¢B•ù=]l™yÌÚi.ÎÏEæ=«û•ò†¡ãm¥E©Žôî(ñ1]xëÙg€ G„�Ìu_:»hþýURÚçé«c5ˆ›8Ì~d–Q]ö(EEõE²íÕTF«ÖG�Û䃯Ü5X?-Z§¡†ƒEhGPÛ i¿BJ7‡é�#}ëÊB9|•o:K)á‘‚W ØZÍ)LGÙ”RÓrA‚çz„¬ªˆiEé1ÛF_c)ä)äjU/ ¡Þ[‹(Éšë[NÐ&÷\2•̇Râ9�n‘ °¿ØCÚŒ1õ8«ž$±’~3ª"?Ä)æäÇÃf£§x\T$ƒ…+¼ÚH`μRÆ÷VÀÊËL™M!�•„ô¬Æõô“HyèfüeSª€oëE²’žü3Ó2f�Í3û'Ke{Ê>¯RoZÔ{HýöÚEÛØƒ�ƒ‹¿O­U8½¶äGÈ+ƒë`êÛè¡¶£²;¹n?§+MÁ’+æµí�é“8²wçüD唦‰ÝÄXm%¯5£@©mäœfVÀáLVZ¸12$XñlN_ôV8q™<Ç£k…»†‚àËK<’¡Õ„Ó¿Öv<Åu÷³Þ³þ³aÑzgåºþ'âȦÔÿ±·Éµ%ÓSè,m`•ËUœX p»Üs\}nÅ“ÜY¬t Ÿ¶V5•ëd©ªIÉÑã¬ÒX…pütgéhbM´¾”l– Ö¿´�º•±ú|°âtzÕÒ°mœ…�q¡âÒ¥>ÞÕ·u83põÇXïbêøÓ…}á­CÜÍõtj‰›ýQ'óÎÎÏC°Yv‡�GN3�iò2?HÒ$^ ¬`_ oùAN>ÉÈNZ“ “ ¸ ¯så­W2É„«±…u™—  g rÉäZÄ æVy0Ê%ŠJXÍnû¿C+B¤6‡g~¶Œlæ‹-Ù^~f…*I‰ªÛ³(¶®Cg̨qíEN®õ"[g¡E« ëÀ •?EbÔïKi�q…z¡R?ió¨rèuj]Í1žÞàr#ˆÙ�tæ e¡ŽH£„¥N'éî™ïCã½}·r|Ç:Î4™2ßöF F¯ ~ð>5hû�‘nDO‰ß¿mÇýóÀäxèÇñ�&zŒ“5lŒµ›ÙîC ~nüì¢.;{ca/z17ÅIGˆ¤S<Œyhá�“œ=G|ŒYIY¡ó›µv¬ÃÆðÜc�žüžû¥#¦eº\ ßhßéÒÏXF!õLÈ‘-¬ »¢á’‰ÊÃ’$œTœÓz´Êr ©’rX2åooý³ïrÔi*¾4¡Ó—/‹Î뺬ÇÇ?p0d”�Ø!QhO=*hLùwtÝËü ž÷Kze[}_¢*Ðû Šì QØe{´­ˆz”ÍQR’ÑàҪ褊Y¢~ 5ï½¶çOïà›ÒóyÝ÷€ôñ–']i”ößݰÿ´ùN­¥ëÃŒvO”ŠJ­ãˆ869²ŒWi›jì±Öë`ù¬”Êí^]†Hñ²Æm¿ÒÝGI ¨qi·h9â*Ð$^×"w-á×:Š�øGu©�àx9w-±cR'òçF·v|oð_íÕŒcû¾ç·–,?„Ú³³�sù¡˜¨Ò¹‰º&ſ؋…³ œàq 3²¹GíýFS±ò–î�MÊj匯ur+5~¦ V ’ŽÝ3ÿíâÙ£}Cn”±}Q«1w8½k×Ö ×«�iÔDý«K Ø}�ÿÏ@×1”¢ütKÉ�UöڌNJMsƒt¬ˆÙæÞ�ºùñ��ø-Bt–°õ]šÃ¹xi´Q&¾w«Ý¦ŠÂ|ÁÊšÚ-‹.R®[¨~ æ7xîO¨œð¶âþÙ²kûHK#J'íÜm¶ýl´»qdzi³Y‹o÷l‘í÷hªS!èõóœîË¢SʺÀDD,ÇQ¯)´š-ÞÊ^Þ_8+b'§øÝ ,"Ç¡õ¯BÝ\¸¿êk‰ìÎìÓÿ¯C=^æ`^[¦dXó¥\ùbãxÁUÞ.Ü“ºY} éQÖf‹aeú™¢”Q*f¡Ì7ùì±lHù~g£|Pi9cªäòpRÍå!.•Ó×C~±žRn"â  Mý·¡K‰&UjÙ ¥&‰¼Ø¥µÒ«è‘ÎJ@*Ü ÃÐw€KÐáX 1ŠÍ‚ÑÖ «ÝS߯'Þ)«M2+�\hòÌÚ¤DªoÍ/2' ö䶬.”šÏÿªUQm6êÖ"ªtŸ_m«Òh^I.Å rØâjä�f2³?-·rGÅ•?—¶gèŠ1R-s_›Ä:£°´mö®gW•¥Ø�¦›dvÔœqn]>šL’¿„ ÑÚÞ>„ôÇ„¤ñÀ7ÑyÅñ-o೜¾þ|‹=ijCõUyý¥Uyj꺖ÌüÝ/ôúª²u6Ç|qædZˆ<Áz2¦ã¯\ΈÉûe‰cˆYn¤�–Ù$�~ìú80s´³Jœ±‡ÕÎX~@ ôqeÎÎ<)y[M úJ:êÓÃ4d W ™VÌ佉¤—9R�ÕK/WeÒj=ã«?yžïô“H€õÌ"môWK˜†1~‹nÍR—¹¹)ó{¹÷¡î•¸Gyµx9Ê»ì—J)°å{‹AOÂÐqC¯+`èxÏlƒ¡ß«mUäìÓk{úîÒ»ƒIh <îÓ[ZžŠ7õùz±ÀÈo;ò´’]•ŒOm+ýP žÚZ–ÀnU æw+®¿!-…Öý,#½Äà}·�û÷ +&}^ò¥V1å&ÏR!F0ÒÊ.ã;“E³Uè«è;9â¶r7¤>²VÒÕh%gt�7UK~Þ^lð?ð27Sg§Âð6zHEi˜¢ÛXxSk!}§¨HÄ¿î�U~'ûÝru�ùu�žb½ZÌç°ÖŸÊÑIBÄšd¨ÝâùLTÉò)"å1·[…AaÐXtòˆ –ÓlN=X&¥¦Ð°¤ï;±=uѵ¬¤±~•¿¯ ~õ9‹ÌÿÊLíÇ Sû×g(ë²nPUéÃh(èö�ü¦üõ \‚b[³%:èD¹ýá#¯Ö„oÿSùö¯OŸœ}òôù1zH¹,�Æ *ËåÜ›®{F³Ô&-˜ö¢º{R”)†WÄ C­o~†¥R›ï·–?Òܲ,D=2T»²ÖK:;­C-Ç,Un^@‡²ÈÔj=YÑX0Ú%Á1óMIr[+Yè·€´h-ΨãSq±ù!·ˆØn,© ·öep�èWFþ¢œÛžý“;”ÚFùwY¦Y«ËL3íêÐÊ+ ½ét߯Ñ0½&Èâ´ �-’Š;&志;m`ˆ¹U^w!ÞÖ23· «›IÓ²—Áº™ÑøÜÅînÊ+Çyœ¡R*•cTYÁõ£²M ÿ©^‘Ë+Û›œ:ûS“6¹8ëås¸a’~§ÁœSîv¬"%Ô_ƒ„…²õÊríBŸƒü³ŸÙí�åÂað'þ¤pëÝ-~°bg>[íä ÈüœÿË?äq!`Sy«ØÉX¼ßgÃw>Fy�õËt¶S¤Üþ[Ù»eöuîÉ”‘\û:¯û^¾´ÑÏHŠm‘¿íòOÖaæ`U‘´tš:åNÓb5¦àÙ]àÔA²).!�0ýx À¨Y½òôV÷Ï[IØÝ»\€´’áoÙë#]·B÷J¯ƒ÷Ôö> RÔØ&/Ÿ~wxþtü¨-+ÃÖb·þ¥Yìy¢a–Åd˜Õùd?H@ ÖþD•àYÙbjsÅú¬ûëvþ �2FYôý�A�Ó##}Â|¤$Ì©µÐß'~Æî^ôN'áÉÂ3èÄäü9Õ¼ & =1v“PðÒ¨Ò $ákQÍÚÆÒUŽÔ2ãÌG•fÓuó5Í¡tâ>ÇYÞ…Æp®gQ #ì©Ò�Y��êI;æj3Öü¾å¹-îP>ÊÚÞ²ù"Dà4Ï {w¾¤­�ÖœUÏDz VºdŠDû|[ï´Û«»ú¸ÞÁ ¹þBùûL‚G"ôY ‚ªG÷—S ØÔªì[¸ •ö¡JÉ´‘?•ì!혫j;Fš¥ÞŠ[Ê �à9xŠ|¹JÃëG–^ N’nzëÊ[’^¤ŽTÖ[I _aÔq_³U:·$‰ÏðÝnb9r³0uÉÕ‚ÝñJo% Þ½kƒ¨a�m+“Çä¼uWxWú+ú¡R!l&oÿeå¥ÏO½3ן­—eÞ@ÀœW^`õ¿‡ôIÆD3ß±¢N/�Ì{”Ÿ¼ˆæªØƒ\-¹¶{Û‹àÍ4r.Pü.¸+JÒÕb#¤¤(òÒ^/r/»Uùîºû�"äÌwjP� öpâb~¾`Éê´ôUàJs½H$»;0·ˆ‚(¸Ã¬ e �Ë \”Wý”ê·e�1Ʊk’ãÇìOIÝBZ®‹ ”Å�NêyÒš‚< ï•ç�òŒ„ÿ LŠ”�:ÝL8ÐÞ,}N!Q{>&¨ÁŠôSæ”x‘¿à‰íyº�<ÕÒ4K.µ ^ŽÉ« |HX�H¦ßŒ«ÀóC^6~кAìÅM5‘�æçF 7£^)Éý‡ØVó-¾û8²¦œB‹v¾…î¯$F±ÔO(JÍšÃ&RÓVØûwŠ£™-×ÁÁžÙM�WaË¿QÚ€XZµðá�Ü/²Žqï�àˆDãG&´¹Uö!5j³+�P¾ 'j7ºHy‚¾ùkÐø]aãvÜøLó›:× þ^ûÀ˃=]$  Dâ‡ødA2%+2#WÍ÷XïjMSô±ä{Kof¥“Ï[«f­²'6ûŽÀˆ&.{äz¡3w¦T& &‰ ƒù÷¢©C2¹ yÆBj÷Í콦™<ázM¦¢[,À6YeÂü{|wí¿0yþäŠwÊð49÷ŒgìÉ �õÉŠ'nh|ÒݯNx}trüºñ¨Ís2B›¼ôŒŸŸ‹'Ôæ‹�ÖW¤8Å¢³Ò§V¬×ÉÅÐo›„#1ÿÕ·ä�ã˜I‘M+ꋲ‚¼¾š¤L&HZ+�¥® Å�é%5k_xr¿fËés}ÅoDšm0±³õ%°g…ÀO,Cþj<}qzþ'7;<¶B‹-Ô³fÆ%�4½eAŸñ�†ä˜f¬Í¥Ý�ö&î¬pôÆ8lF?ünñµœôc>DÇŠ"meˆÛoqO¡#–µÆ °°–•à±CËf»X¼–Ú¨8éÃçÏïW¬Ò š®hO¾á{Y²·óË€ÉÓ…Aù^ò¡rûñüö ÌÐ~aóM¯Ÿb~³fIÔ„×¾w[»G78šsÐ ì�ΓnÅ�q%*ÖÒÓ°Åæ"DSËx÷à‚eè'�7À7ß6'ßàÅ1c¨V ŒãNë™ \Oî/p.5± ‚hÄ/b�)d˜óUI (U�ä”n\ïQ]°gÈNVÁØ%ñw6-Ìôè=€Pƒ?`î‚%J¬o¿ ‰óÖ›×\±‡¾oÝsß[6œ&ñ'â_pãåó�·%Ã?ëžM<Ç,!ujI§%‘\qöÇxH¶À|(_±)ñØYò{oš ó=]—±€†°Kq±þ³úlYÿë¯}KATƒ5ÒáÀ&üæ†Àó.U3`ªà Á®Ñ‘³²½�ôàÑ¥|8 éŠ»ÒŠÛñº TÄ£ÐãšS²GÜT†‰°]%ý&³A•‡Øe”WÈ`AÃä îŸá;J¼Ñ`ÃEß8.±O [;’BÜH†ðØPŽ,/øò9oñÃ|ñ0 ¥tÏ�­ Hð0*I@à¬'˜Øß"éÇ4õþzϦ&&òÊÿ™VäåÉÁ¡Yv LEœL# Œ=ÅãX¥Îæ�Á=¡Ì¸9JZþOòñWïƒFÈÿI²Ñ0Ì…R0OšnPmRLˆ>N%‘r@C‚¯Ð"n’´õ@^<Ô$l×Þ­(öKOf$ryë0”Š{'ujÏÝR� ’ëÿ‡®K+ôZ_½·þƒgïÊ¡§Öã,�ö“{3Á�=äÆ~SµW³¤Â\bTž�*!£6ºk7¶¯5‹ê½„‰z/Àž.J|ù=4ždîh²ÍÎ`MK4;÷Œ—%š½�“ÍN|Ã+ÑìÏÐø®D³ïÊôõÔ6þõ®D;Ï@ê¾A ~�‹Wâ•¥qZ¢ÕÌ*ÑèÊ2î¶®Êót‘,ËC¥¬ÃrãØ·?¡�7UˆE狵‡®Æ+EÁE¹Å/¡q^Ðäy ø ÒWfÔýÚžƒºx�×�é)£ ":£v›qTÇ?ÈRòr¡g—]Jœ+êöA:õX¥£a7Qxjù396J,cºÊ/ôÝrVQ�¹pü; Þb‘ uZšGSlˆÔCÁ‹Ù@<é0¯¢D“ô<áu„ø3áœP?9MÀ†#´øÿz”(a„æ@Q4ˆÝë²Ür/}¨‰8¼RuTʉWGR¼&ûï*ÞRuD‡�pF; Ã:mYQq¥ÜRLš�¢õˆpÅÏäj‹l’t Þfë9вõÔ³˦ôQN�9 ,—žÛⵉ´QƒçþÊ~ŽÀ�žE�9š>EGrÅ]JñÓÍ`Œõ¤è¥Ÿ:¿› ³³n,g�{žžÉAüêå}‹“Sf�u´ VA&ÝŠ›@S¨Ä…�2#w�‚õòþ"Ú6‰±àK¦8{L�àl'†j ¨l!÷„½=÷¢iEDåVa› =™ÀF‰‹~g¯¬+ÇEÚÀW€. ÆÐÇŽçÊËÅØ†„Ë[ä%ÛÏ.âÒr×Ö‚vÈ+—×á³Ö‹�®dܽ[æ!në‡y�13ÐÕ»´¯Ü®gè¯)áò— žH 9 zÂÎåNÒ/ Ò{Î|·å×HB'w`j;xBsàk;(3=ýTXã…Í'®˜WGùvÂjV<·®¢“´Ý&g‚4€ß`HSaL4ê*pÑ>Ã�3“�È3ŽfxÂ&‚sgÏž[÷Þší» i» ï_ˆÀæz‚÷Ò:Rqy Ùi»—wÍoF³Fqpض¯é¯ì,E¿ÍΦ¸a‚×ÓBƒ¬V«ÒS³ΕۚÚn(�sß{A˜àÓ¢ÓLö/d|²é_M�–*%˜y7qΟ³ƒZåmóX1Ò°�¸ÓI¢R@ ØeÄ#is^²èˆ•É¡/pÊ9⎒‰J‡I1[óà ªQXPôpå; �Þ§ŠbD^ᶪCYHH.{ÀãèyBÄ1Óç|ê¸VW{¤‡¢�%žQhEVH†3îbO‡$»—~Q÷]J + v¾ÆÊdŒÛ‰ä¥žÛ<ɱ8vTdá‹J±›Ê–(ù½‡bLþ‹¢S=ä†#¨g\N¸,¢ƒ¬´)öÐTêf#1†îh~‚Ð/4“TºÚip}é¡Þ´  ¹ 9?W"ñ–F¢ÃX>V/.ï‡fì‘ÏÉžâD£>÷¾K ê“¶¯ï�+k{HžNfæüb(áÕlÙ~ÌàPòAÃKѲ}…ÎÊL::²ä;¶èœÁ±ÂwH_7W'ìüO4Î*c™Î‘Bn㸹Դ„b^?Ù)Hqœ*àš¹à§{ã°™Š9¨¸Ÿ`ÇÌí;5eÁáôKêâÁSI¡”Ï[ù˜�·¿@;»®Žê'Ë'L`Y ½ô“¾äoŨ—‚©[‹`�\Ö8r’MžÁl ù‘}²=DUXö>‘ì%Da¯µ�¤u;·¨p—œ`êÁ.‹þJÝ÷É9Ï·œí>“P«ZMa�à¡,‹¡É °SW˜%¨Fä¥Å�EÕ•¼Öä�£ˆŸºùé‰Úä¹E=ýé$UTq[“ü‚mU•)Tù÷ã;äuéAºäOœm»Zº$³G~żÚe^�ó}`HÁ½;ݲþ ¦�R,©© ïŠá’Ÿp™†Ñ¢šùì#ò}i�sÛ¦‹üñ„ˆ{t‰Ùk6:"ÃÖÍU™ÂÌ>46aÖ2ó’dtz¢K`2Â"EÑfkƒ]öÓ ªAúáÓàá(õ°S”w+”yvÌU:,dÆ]Žøf£kò%ètàK'Þ€³¦Šºì’Nn¶ƒn�Ø La/`:áY'›ü@„Òé·”h1ж��gÁ Šh@(]XD¿*ÝÌ ·é‡@5½vú¡6çH¯Tªä(#j:WU(¯×M=ìVM`%®’_¬�vRÝ2ÑV¯—4KÑÛJËe–´Ô~TØG½Á_ÑÃÏÑE€ŽÒ€fyMy@³ÞŒÛ‚w�/ËÉʃ§ðÔ« Ÿ,z¶‰…,Ïì•—`úæn$˜~š uóë(çã%Û²åªõ?ä¶ì®V�ÈœvýéæŠ¿ý>Y,˜´É²“us%«þ€EÍ+ŸC}±»Eݬ(ʽ«-þMPl8ñJ¯Ýlô™'"ã{Ú¼kŠÒN"éí6‰ÿ%¼ :d�”È%ÐËʺ•HbÐMO»Ûl zÊikëF(Š“‰iv4í!Yò Œ\zEI Šæ�YnYêåVÑ=�·¢Ò“È]¼£åvÈn“NÕ\EºsfÙsÕÎa�\l”’!¯Ï>yµ }’†¤¯Gª^âMOo˜ì´ÙŽTKÛ×îdEÞWQõ½TZúâù�Lr¹œÆüo”<}‚§Ò×–ˆ‰$?ñ§|])T¼2y ä£nÃPjÞv™×l9Ü׸¼¿ÀìA�ìtìy¦ÈI* #:7 UgÛ¤9�}›lêAšÓS–‘$j]Ê1¤ÎkWh;S¨Ž*¼Eac"“QR¤ÞxÞlʼnrÂÖ;‘š@ä%Î4Ô´;u©§—Ñ9}*òÕH]r—ò(ËwÊâb]d|uHh\‹/Ï-áêCl·ŸÓ_~ý™ÂEï¢��‰¹â RЄÍJ3<š42ùa¯@ìʾï{FTnË`Ŷò¨¨Ì,ì(+¦2ßxá2ÞJùT _¯TFP~W—ƒ¬žIz©úž»¸ÁŸò+ï%üUKF±!�•ÈóÜfòõýb¯Ù¤)‡? ·Èá,n߃‚l/ÊjÁoNO±ÛPRiü‚ ÿð šÁ'Àï`‡ø-;戜|ô‰ÛäÝî-dÖ}` ½Ê't>oM2–šíæ,—fó9�àãªt+[bíÑŽ{å·ä …qwåŠ8+ê Ôs˜ ¤ `’º cEà©!nƒ PÀûm5a¸Ø„J; 4UP¹ªî,µ}¥Ú¼A;í÷t.“ÌIp»„œ’1Ó`#í5I\㇟ÏÎOžývñôå1‹9YÙ.ÈÆSŒQ}óÄ6^Xá7Αµ…__c˜Õ ä,îƒxÆëÈ¥ŠÌ�—Ì‘~:aÿ$ýûè#ê”Cž‹9¼¼zéqRžÇ�bgχÇ/¯¸“ …ë û„ùÜx&T¾cQÅJNnä6$ÏCòÔ˜Œezç'$€ÿÿá¿‘_=ãŠüädé.YZÆ/ä+ÏxI¾÷ Éw¡�?Bøúƒg„dj¼:&ÿôŒûw$tàÛ�—]Ǹ&žm~¡ÍÜ7Ž �ˆš[†O®}üË ¯Ù.ù5„×îCã⇆C¬Ðø�œùˆjÙyîÜw®®lŸœ„ø Çÿ1~F¿%ò}Ìý‹È©ñbI~t�S²vŒ#rï“#ึ ›Y0ákÇxAþ’Wyæ“{ æM7§@«ðùgtó9²›~  žÇoI@ýâÆoþ×XÂjù޵ I߃7îÕ”QYëŽ^½8ýŸ·¤F%�™wë^ ¡+šÔjµõBý|�Ñ×Ì®®h0_Ú 9Û[�aQòÈ¡öþßn­6÷0ùƒµt÷ãZýŸz ÔG-nmôÿ×\ 5k?§XSž9˜æÆài(/1Û3}�~½æý›ôuó£–.4"`÷®ÍÚÚ!Ø VÖ„Õĸ·ž?£^\ɧ(ÈÐöJü�>g@¡Oæ;æOa^z^xM»µÜ�à‘̤Ö*™ŠO[y«ÐYÂDŸÛWÎ¥³pÂ{¹ë¥÷gË î2}_ùÖ}º-5f‹`ÃN÷1#+ ˱p®,\„lf\{7¶�ú'wëV-=]Sêé=®ý­ßÅ?tœéÚð ™¶}úÌC,†°$m£ÏÐŽ§n¢€‚Åžw6z™±Ç´ ƒ êÚ¬=-CÜ0šÐv5+œšKvi »¢CÖ�1f\Ôå¥5}‡§¡;³é®,Ì|K»¾¤«Ð³ô­…¡€kX‹�²Œ[Óœ^ŽziŠ7û¼™ çî€?XZ>èéÐym$ž8.+g3®�Ä38qp;H¿b)ƒâJÎwL “Z¹ÆÒÚÅ(jñÉúW—VÃìwI-þ«mtšU aì¨Ú=ý‚„ÞmÚszcÿ3:ƒfD‡ !hx«!LÙÜ5T;[ÚVèë1b‘þ�GþÈÚ—iÁ¶8{¢o#·Ú´ÞˆÈ ýT}›Q_D4‘ðOˆÀtwTªOÖ£h øãM³�X—�· ©D'¢©Ìð4`§€¶ƒè̇EòeŠ:vÏPÜ6~!œ¤#l¬uç¾w»EÏðv’p%s 0M¢—dví{¬Kß÷ÿkïÛß›6ÒF?…qYÖúv,,_âØù¼= Ð¡$”-lž Ø²-�%W’ iðÿ~Þw.ÒH]lǴݳåyÛÍå�™÷~©±¶©€Û˜Vë[f:¡d¯ÒTâ–¢ö7ƒ ŒZ(Åú1©â;SÆžÜí¹©ü³Œ¼K ñ@üöq¤N9€©6y‡ò³ÌÏ9lJS~7¥ÿqõ¥ÌMX’ P58.øøÝ¸�ÿßñßá'«…ÿ„bOj<—{�)c ­u]û½ ÒÔÁ€ÃÕ é�˜{Ayn nà{¡Gxz›�r4ÉHr‹OÜ�[ž8ô¸—‰£‹n<ï�Ä‚|ô“�N@v®�š¶[ à`ßžf¸�NšÛÇ$ÁÓG¿Š#Ü�À?+—/•XžnK�ÓÛ>gyÐØÏù+½Œ6q«÷s> ¼‡s[yÁôRîédsµßYƒé�µ3y(è÷'È2Ó½°Ñ}ƒ¢F¶×0´}/ô[k.øCÀVÔ箞�Æéâ¿£JΑãâ»{Å:�¸'4T}ôÛºtg÷¸ìЧŠÑÚHÔÞ ®¸{BËÕGÿcÀ¾–]ñp.ñ0–ã¹@ÝñÄþ¼'*)±Aí–¤U£m/åè;ÄcÀ�³™“OqÔÂÊ&,,wµ±¨1Á’b´Zì—H�¤°©ã™aÄP%ÔmFÛ·I­œn´{ð# Lù‚Óð´ZÛ»l&fªTE¶²bZRµåžTÂÈ;íwRº)A;Û¯¢­ì´Š”p¹IŸ4­ûFJ°�§ ÿý³œgVjbö86{d–(ZÅȈ—*ÉT!r&eÓoHï«ý;½Qü¾ÁOGÊÈ×× ìñÀ�gŽ™G‘¸?5ä9ú"îz¯UYØý– ß+Øþ,DèvšÒÇY_°D²-÷‡}n „]ÂöOaun§ºùïÙ+U}Ë1’Gþp”Fc%UDËlwnùv`ºÈ„œÏ¶sæ—ñ¯•ß­Õ6õ6¨€:¶±Øm9Û]éT~=ooAòUûën‘ÐÕ1ÉÁèV¥ùâMKâb„QY¹õ°¼�•Ê5a¿{X4²°…SÙ]>­{ÚÚ20ìqß+ƒAÂBûŽMß õ‚9qg–\NV”~£©UÔ|%TG\žªý¦Oäž}‘¨Ç–#ô-ñ·?ê –®ø¼£Õ6c#½ÎÃ?ê‚WƒaR«ôo÷ÿ.¬‰mÖ’Ú Ð_~ÑXs¸¸3ßœ”:ˆÆª½?"mÉš kLû‡8ˆéNcTg±õàTl?,1v¤ÝJŒ‚^M×KËÄø„m™ý¤rަ5áG}ç®óÌUåù>j•³º.I²¿…)Ø¥KæYbŠÿ7/¦”ÛsxéM®óŸæÜS|”cŸß×pó­†Ëß–½¬nëáT«c Òth�MGH {2‰oǾöV§!çɱ‘æã=¿ÕilþÓØê³m#´pºÍB×Ñ”ëbÆW]ÜI¤*jÃÝê ÛÈ:1‰v¯otÛGj/*£O¬±Çká‰'lÝ´ægÑ&âeÝÎ'{RtD7z]Îdž�”ÕáeFÎŒ#éäÿ©N%3a°m~¶Ž#_Q V±;u�#r®'6QçуÍKË ¯,+ ¢!KE›¼G_óQ­e(‚‹‚1¬Ö¹4ý¤®›ô«½Þ ç«Åeb·D_ù›Õë\¶ú›äCGù´Ú˜¶¬þ6]&üñöñ8:ÔžŽ×0:3•ç©XƦê¸âWð?(3i”N&_¯µÁdø±•czòÙ0øQ8ä´e'M~À½÷rBÉÚ ù÷ü(ð”zº™=‘�”òj¢ŠZ¹‹‰¼t‰�h�@ý*3[~ dÅ‘KíF‰ScHn¢ˆ�øT¸ ¤5®r6^a?_kë5ðe×úñLk¼?Õ—çä±£/}/ôh™p‘nø¯…Çò~¾§¸®Ôœñ«YRé sƒ¶l2§¬äT…ö™r„ÞÉV¬ðÖ¡9 �Êm£zm´ýV�èŒÜÆ ×2XÂÌ3gÔhh£ÞÐê9µ�eãôW¨gÅmâŠßþ($ô›c�-7°hR»‘µ›®¨.Í^a‰¥ïdÚŠ/ysöÖD™Ê�i¦rsnIÅ ÁRsB/gìŠP>Dš!05Š÷�ã*⤰Âcã†%¦ †ï[ƺFÅ�× N%Ÿ�+9óß‘ÓîvÚŒÓþ¡(3+|¼0m'Qc]Áëú`‚@E½»E‚”“ˆüV…}ÿ2�ä±xñD÷¿4~pâ Fݶ$õRÿ²7ÞV ú7Tr5Œ.º¾Í€~¤eN—6âÆçæ#¥ðúžN#ïÚ�~žoÕÐÖ)i—¸¸¨ ¡µ€ˆ¥Ò¡#—ð6Žç�@ø·0'?ýÉpP@ã#€7ý…/n„ŧèÕ;wõ {ÒøEµä£ä¸ôòxqiM€Ýÿņ­IÏ vÖ Ÿ`IÜ !Ä;k rl°Ñté£;-’}ÂV/HÑ„×ðc�ø—5¦8‹Ñº…0/¦¦ƒ�úÞuC‹úU¯.KCKZ[<=¦¤yd…ô’ `,üÌ�XÔTÚ’–¶¦Ûž™5J�»nÍ��—X²|&´u¢A´Q÷îEËŠF›F‹I7•@r —z"Ì>·*,óX€€®°ÂKéÓ-èM¥—Ï$p*1 ¼¤F,Q‚ܘVáÈ Hÿ}�—eO`ZfýœÐb®Áð&ó|¨z…ÿáûìâÔe]½^€j¢��ñ­P��é°¾ …z¨CG‚/¾Oàe|Jž°6°¨ þ‡¡ö³ÃT<›Ô«îk ƒÔ™nº®,dKK)’¨ó ¢2âU�²s+JÖ¾yúê–CF`� Nxá]82™ÅÒWkk$5wK´¤Ý@­÷Ã01å`�GCh¦ª<å¤_¥;`‰¼7+`Å]sa 3 ¸sMŽ÷{7Ôб \…I£.^BmpúA€s7êA¼„=Ày²];Œ0'�<ÿ¿ Ào¼võw—:¶áZ§xÖV<¼»ŽÉtÀGRwt„—åò©ò/DÝ™¦ã–6àœšzh~²Þ¸¡íh ÔZµ& ’«Ë` °…(ZG=ùs3€x€•û9óúÞŒ¹'äú;@ºF|èUhôÎUãÊñb©Æ•Lòp%5V1ø5�ò¡Ê6‘M�q¥Ø¤:ÿPÇ ìc'X5øÛ!ôÐE�ʺãÍl,’HäjVreúsòÞàåµ›ôô'~A£ÿ!™µ¬ãR 7ŠŒH�žýhD:Þ±eM‡_¢ BDÿðã°t~@‡ÆÖÜsò�:�îD4€ôKvŒøa•1(n©'–_ \DYå4ýÊ¥AY@º‹`\g.veeFZHÄ*Å ÐÃØ\Ú!Hõ¿#U!‚߯UD7 %¬iqÁ^é,¨K•r4”[ 4*ñ.  k�¶¨åˆ…¸(ü<Ö¥¦ËàQJ¦ò«ãõ¢½Î­º½KµÊt Âx¡‡ÒBÅ 5`?>/Ý‹OÖõ.K5âs�[šÓhßNC@)?ËI³5eŀݲ’æFoƒ)åð#ÛÖæË¯ø‘*Ì%£‡ÂB(¤§`eb¼­Ç¬@Á´ÐÜmZ°íýâyÅ ÆNuçR8±hJ]2 –̼h´N¡ôCÀxEÏw_4@�*¾RZ4×ïZ{æ¾ò½™�¦ Hxª„É\Uä­ÃªyÄ…<å:ä"É‚u=¦Õå.¢™ò91�¡ç²wy96d÷OæSD.TÅÃ×jå?2îLm£,>»lÐÚ?j´É¦®d;ô« žï”f:Üm!ùnh·¶î‰%­ä¯¶%›¥œøÓnˆ2ÑD½@óðt ÍC>ÿ’GÚ7a6J5 êªÍ›iÚ*MC0ž[Ôþàz§üc¤oˆöŽÌž66�YnõôìjàÈ-ÇŒb>RÖ—¶I�å …œðŽ�kªrù©Š „)Q½é{¬ÅRQžb2s‡‰ÌmIb¦WïŒUf­‹2©q¿,,²Ê DZ¾5׋G@©‘–�+x!ÑÈP<®Ë=ªÛì,&C2¦¨×V в0@ž: t"á§ m›¼ÃÒöB"Ìr”;ce]ÇÌáÞ±T¤ªÇ ÛÈ Ö=²ô³ c&md¾»¯û2ûÝ~· ¥ÿX¥G&„x¿³"�Zxß«¢¹d Ýâ)äJ»²d¼ sEÐ~•©ŠÉ€`oª^>™A®œÛª8”Zv�ÑyÉÝ£SuÝÝ70:oU¯s©9mSE–„®‚¾_X¢îê+ߢ¾� UÎKªݬêíf,G›žÁƒÂ¢¡ W˜q°Z¢E ¶¡UVÉsׂ¢mvVá ×1*�:ž¸±y Ò-&Þ!F!¼aÖÆ†og˜Á_·CµýªzÒÃXOšwÁá··Vf®e¼´mÅçi%I® ƒdqå7b‚e‚.¬& ÌÀÃà­&Ží®¾\xîÅ’  ¿°Â`+`Åúp[•CU•–ÙÝaSÙ~+ #˜\:ˆ`a¥`‘{ ‹éx3Ìó P0vZ‹¼—èŠOFx?ȳtéæ–N1bµ™áÙ þ3¥ ±ÓôÜ&?ßM!׉Èès‘¨ËD"KE(ÑÈ$ÍW²´0_$¤žËMq>ϽÙ[ô„eN!Ô8G·Un—šû0æõy.ƒáýûñåÕGž<ø„µ°ïÏÇ÷}æFÜÈ£�Íô™luqé˜î§¼3i‹?ˆä1–ÔÂ4&¡ A#$ÇyYëfdÌHoÅ0ØY¸‹ðOE)/VäqŠ™}Þ¨˜¡”„ÄùÑ!F�´ Üòfäû¥’-cV?g†R¿}ò+­Zé^s™åÃ*½È¿d‘VQI=Ê{Î* H§Bwù›²‰Ï `(#�“s�¥ö<¹ßq±ß "-XNþÞªJ@Öæj û‘�o¹42^û¾Pò¨ÄUŽW>=®k¾ºJÕ¢3æ"U(Â(62«)4hâIbkaùx‡xï¿áx(édwzÇ‹-±Æà[Ž×E,ZÉκ¿9�¶âåéËÞZLeöÆÒ?’»ùÉI˜8_ë�¸6 Þ3—ÁÊa‰»ÚJ?u;@?õ~«w¨?Ýž!©ÍÌߚ˄q>fw]qU|hŽ`�ð×Tpü²ÇÍØ±ÇŸ$g˜V²±oa´�Åç üûjV1ÏÜÁ¹µlw–XwçÑî<·¢ê“”y…’m%m^¹èÛÐÖ°¥ÕåŠö֤Ȝˆ&äaôi—·q˜íTs˜ÝAÙR¬hSú¹Ä c]~¸D_ Iör¾‘„˜ÝÉ�DÄ šPŸÕïTÐî(¹îÝ̧™ytò�*)}:0cèWxnSÏTu }ÿ™ÕÂÓ%ô„w]®BÙnØl[MzîöìäKWBI^Ý €+íG�ûPÜ'™xG)dƒ*óðJƒÀ>5|)‡¹ÊÜ1z«Âyç(÷6ÃôjÇ=i&—ž» J±ýÆŽ{¡îÈŽv[ûà¡“_º¯½2š(>§™ÝPÁìJ¼­N��Úe0Jªb«…1“aHB/4�¡µ^Ç,çä¯EabµÖj�±ZØdã»øÆü�»Z\Zcê<'ì,�oç! [h.¹×góÒDíR.Ù©6ò@âù[ÔLld¹ÙÛ¥+Ô7:�M�E5 õßϧÁÙ'e,„Lˆúd¬Ö&å*,�|ÍÝ_�âšX6ÐÑ7vï¦ì¡¼Tþdåe{XùÖŽú°—v›,ƒb‹9œXÉ {=ÅÜÏ?\~ý Ð�&²¤R b<7¡~h;ms;¹Lkh@\=g÷‹Æþ£•=–UI3bHÝr‚­}ã;é·È{„™Ù¶—7‹=ÔWn:›á–qÛ] 4âWº¾5»5�Ħ`·%竊YÑI» )͘?æ¬Ð‰!°Ä#¶vƒ0–O€Åvº^hOí1U˜"&–Y,y$,cÕD(l`ùŸí±5òØ×+˜›w5²Ù·(Šs„É4Lýtu‰vJž�an�?;1CS·é `¿ÅoÀ¾võÅR_¹KÓžˆd44\¥d7+ßAm›èÜô-jwŠÌüxWu|«¤ÕÃ}¡@ù¬?ТÿƒFdü4¬R‹cy‡~’�åžÿÄ.³Ì@pV?ºô-óÓ‘Ôq³m÷q¢û ‹‰ÉvX_¯#E¤Âêæré\SÓŸ­�L˜ÝŽ=Ü÷7é-=ƒ�˜RÓð/kl3¦¾·xü^Õì¼Æ)äƒ7µý ¤Ç¨.ùy°¥^DH½NÅ<âðÑÌ«@€Å³:Šñß±¾~EDáAò™¥W6œûÞZýk�}®kE8³µÓ>AöÐ4š½1¾•:B(y˜#`‡,`\œ»䄎Ç{ÊÓf,ÍkÜŒ†¼^€?Ìí­Îù©WŽCN$Gšµã­ÛZúbXŠ‹!Ÿ’œI¸.ü•ë(‘9HBÏ¢ Ž²§h0ƒÇ/^�ýª8�r€kþ�$\|mÁ/Z…„¹FB|ô}Q²ÀûÌÙW%.‰†f0amž±m—¶‡TÐÒ µ†öõkæ(ÄïÐÉ%¡Ë_Hbxù`H[‹'žƒzC�íÃæu¨?ËPe¥›My£Çú¤B«»®¾ªÐ Öx¼/מ´?O—¹óÄÞ<’cMÖ±g W˜ú’Ú•ï°ùiQ÷[…ÛWõ#Êæ7¨�Ïü{VK EO’©=K‡è“:Ö) iMª:V"nå+sõQ$ Px eÚ�[Œ‡é ꘋÉ_Ø.Ý € 7‘›ãàiI¥:S‹$Vžò�¨˜r+ñ'’˜ß"A€ÆxÔW$ýsòÅü*Î(m2 ÐèÞîUî·õ[!༂“iC“?:Á—ÛýCˆEÔóCÓ'ÂüΣ�YŒñw<÷üdÀqÂ@Ÿ²ÎOõGÖØ^˜ŽŽ\f§�£«=Ûâ{ [|V'õÿ‹)>Rº­ÿ\Ù�¢ƒ°vYË×nneVm—›U;±YµÔÉaŸfU ÷ƒã4¹ úJPÕrpl©ÒQ¹4IÈñÆf5£[~æŒCe³·´nõ‹¬„¹R2âb¦¶™9ÒYÊ’Š…0ÇPJVlÒn®ñ2DBS*«—ð°ZžÒ‰K¼nJ¯Â|^¡Ç3Ìcå||˜àãï_§AFþ[%ãš žšžF‰­þ H›æíMñ;9~.QshmŸP­¦éØoØîµ5â0G"“ž7*XD_šwÒ ¼�ë#Ö"X›±ý�<'~rëRÀm1ó[3é)~¼qÞ;°¨‹€¢I~3ÿy#ÍOîÈNY/Ï™2ÁÍqŽroÙ´1 >-¢Èó YòVêÇcĬÙòv¼]W¾m¹(ä­Ìú‡¼™cßsí@Þù‹ƒÜ²~JÙ·W[{0î=Ä-U~j$+tÙQÝ)$4/JìGÉX6e�©=Å·•“õü’P;êÊøÙÏÀñ4ší~.íLÄ£í)äí¿1iߥ½Ç¤ÅîKÅC»¦Ç2V¹²ê�ÌUˆZ®4;¨�Õ"ÇAaÚ)÷D…îÚäBŽQ+L6±sŒZ—¼Rº¡æ‡’åï×Jv°a(Y�oGR•É vDWÖ;ÀÀœ6’�µ]÷ˆ‘Õi~_¯çM‡;öäŒÓ©:ƒ> ÜR•4ÔŠT ¿é�¸ïÁ¸ ¹}CŽàúce´ÖþÆë¡f¾R„ZÕˆ±J¢�Z}ò­}s;TðáÚ¹H…˜ë6Zæ¡ZÁ´—3“ 阘I~˜ŸI6 `ã™ rfrÈügÅT #ò«Íó/-—%6ËQ´»ÐQ9 OìW¶Dèc’ô1u=º­�Â|ù­(_þ®�Fnä šœÛ‘ŒÛ‰#%h�«``MŸ�b4r ú öîåŒ~¼æüL…‡·—ºÑHKn·ä%cv—Â%·Û·R¡Ý‰ÖÜÎÅ årh»K¾È¶Ôv~TU©¾ ½KÍ yN}r©T´s©`»42æ–5ÑùòÖ¶Å UY7.²P,nVÌvü ZÜá–¦f80 ¥@…ZùëW¨O6’Ká ʦS¾Î3n'”Êr‰.«Jù-ß)ª›¥‘Ýës1–u£÷ᆤââ\üâ° Ë%³x÷Šê[‘ßÔ‚Ì ÿÄ÷Ü«ez­‹èº~Ïæ²Þ¬×¹™H•+èO[꯫Xê+©ôi ®]Uú×*[=M“Áæ/g´ï1ËC2ó^~¹.a.`;3Þ»àtz=EÕõ'Œ;a‰ó† îX—ä9ë'ŒñX �Í+;œ7¦?³Ýfè-³6ß©j^(Ÿ‚9{+7ÜÙ�Qa¤¥]ÃÛœ‰Ý¦mÆ9�8ç­�) “5ÖlæY,-„Á_Um�þž ·QÚDVi>%Å�½]öÊ…Æ´H ã§²å\:žŒšÐ+çoä-•—S-=:;W›Sô.NB †øÁQ�™>~»ZtÕ¥ø­ËÑ¥«Ñ)]f¥J'ú—g<Ì‹2$”ÛÃ:äs@Ú4‰`¿1àÑâNÚyo�xüÄV}'vÜ·¦€�„Ê®È`“òh;†°¶‰ÂŽÐˆiá”N¡ÑÿsWÜÊñŸŠª; XËëm!v§Õ³ðC“sEXmkì9«…ËJýÛÕSX7·cÀ'á|Xk·°×{�éËM7ŒúÉ£Û¹ÆM†µ+ñHà¿5ÅþL¬þ[SìO·%ÿù5ÅR¾f×…¾fWi_³Í=ÇT’ᛨ%׳«�$|½”²­í~T¿Ï¤R¤È�XÖgàÒP |瞆SáËGÿ![Š'Õ]`…‘”z:ö(;ñÐ#ïIÉ)Ð4ë̛͋F^ :™Š,üsJH�ÍÀ’¾rBX@*o—&>Ö'i¢øs¨ÿDJ±5•*É]úý”Šâä)ýrBå–dDÙ+ýÅ‚R/ ³€L8GäE\h†²²T®Ïh*×®ahGì,} ”)øÍåò”gá§ÑúckÊ©¹€Wœ›îıà�DˆO+lkX£i€ ò¦µ�žþÄ£×V›X‚ ƒþõKorMÓ|/}–LJág×Cþ£ø~”˜ž>¦£úñé“‹ã““W˜iÀZ¯µÍõ0Ÿ²z[hVN-=TkVðh]d×èò>YîðlåS¯ác<«$2Xšúôœ|Ja¾%àNžÒD¼­�<ÆÏ=£×fó!~î¶zƒC�œáçÃ~­s/ñ³;ßÑÈÚæ`€&¾'´Ÿvÿ §‘ç¬Íà ¯‘_èïƒVúyè^tð‚ÛètúF˜é×tØÁa·/9|ÜÊÕ­�±ñ4טȄ °häsç Ö„�°_*B=a-cGõ¶(^i$ôÅÁÜ»:ƉZ?ú÷•Z˜·À_œÑ ˲ Úˆëòdmo°º £X0Ö [ªµyǺ¼„ª:¡ç¢Þö|áô¥×t25ðuþ÷„ûÈ�©& ÿ€<õ¨¢.œ>a3´Ät–¦oÎ|s9—L ›P±Šü7¯àÕeäGŸF&Ò 2róăÈ}¾™UáFÊt9zà´i´S¶MœµWéÖ U` �!Æ´é˜-”xra†ÃgÈýê+×þÒÀAOì/Öø\æUvaO˜³¥=!,×àEæêŵu-ö”ö-©Âã™.‰6ÞÌõ"šov¨&3†:ýKP5À7ü«ôl·,¯†^‘I€g2è²íäŽç¦;K'†Ö�ÅJC꯿~ñìôôÙÉËSAÇYþW`ý>ý“Ðïé ò.“(Cl¨�kÃdrÕ²Ô«ËJÉvßÃ�?"†7²0ÅûÊAçDxj"�6èshë�{ÓÚ Eþ:\-߯Rк=ŒfiZÜ2$¶¢¥§iö´ñÕ‹ºп [»wÏÖmw쬷6Ü÷Öùûð\ÓØfß1¸«ì�Ö$œiÃÓË�…sæ�i�DÎ+ù&²ôÈ¿ÃF~xè±7-öŠ;zNløßΖ:uŽZGáÿZ¼ã£ðÿÐ,˜Â÷®¾\ó†‡ÓÚñzph—6çÞ½�G|Ýd‡^=s–™vÐæç’Ýs2AÍÊ缞½@7ÞÏž=©µ0Dz�DتŠ&#㙆›×ëQ˜<íº(¤Ì­YìG KAl}Ï,c,™:\&UúïjÙ–“©�á:ÔìIŒðû? xVb%Þ£þÕˆFvW>G–5n+O�'‚ë©_’ßòs@…ä�< OÈÌ'gžþ’<ñȳ@BNýŠLL"Þ"z;;{uñìåÙã×Ç�_��¼>ÅÐ’ÇÜ©{�@"ì!Páò׎èèE xg¡ÿŒM±yè•û»ègq�)ÿä¢ÞÔz��y·Š¼ ô‘³@E~ ôÉó@w/È”< ôw€¿?úò¯€„cha�õñÆð–;†C¥O3GoMŒA¯ßrë+1WŸ4,ródˆnL^Ò¿Ë5?¤è×0hÓ3вׯËì#>í¶»À+šÔ!¢ßÔê`�wãR${ØoÉg<º¡ê¸a}C S¼®³ØÊ—¢°…剀#æ$0` ¼:™ø nò¾P'cs ü¥¹Ñ›ü�:A�Ð`Dܪ³Iò‹õ5½ÌË2y�Ëj YŒËlÉ8V, qY ™íçÏca  Y4³u«O[9Îs¸ °�úøÏ€c;ñßдðÏ�ë‘d:Æ,±·SÍPß.jêÀò _•Zðw¬‰â÷œÄceP<Á9cÕŽc¦¹ðÜ~Šö¸^à�·;’.®üÇ™èÍ_"x¯�'ç“  Môºð‘¿�ŠÀœù OúÌÛØˆÉÑJÞ©T·^:Õ­X�­œ>pøáûÖ¹Žl%À¬ßñb™‚½î�˜(‚UdX¤å$ß�º;P™Í^¢[ƒÉe ;)cðÕ5ë$>ÊÔn¸pñÞe"“­»>[Â*µØ # ï!ZP¯&$.y#ô¯oÄL 6#:Ä�7ƒºc­©ÄHéßÚ½wÏR ô—>Ê�z‡> ЙqèåÐB—5~(L–ñ7Z—ÇŒ õ áꆾç{ bÀAÄÑ�há�?¾~倉E �Ö\ÂG1 Ä…uî!%ëÑ&>1ö¸Tt¯ƒŽáÓ�ÑÈ¥Ötsôºo†^óî�»þ@D³{÷¢fö¨M¬IýÈrë&îËÕ2u|�ú��Ü5ìøĶÏðâÚEª”<�† ”.PŽz�]óIŽÿÜ´—M<Ml['R·JN þœ! Q·cSÑKôoÅò—mþcôVî­›tC?€ÜÇH¡Òùš„Ÿž¡¿^œ2ûdÕ±üÛÊï]þwï?s¾ú6ÙpYiœ$—ë� û©ôÚÁŠF‚4ê©ÒWKv@x Î < Ù˜ðÕXÈ�V¥lÕ*&ÐÏaMíò:Xˆ&ï! ñÉοUÉnM:ý~¯�e^BÊ´8ÓÂÙdZZœgé ú�HkŽÞ×ã ªsî¥ë$Ï}MË�P¬àé´R×ã…†–¿VŒÿî¹ñÆJ&øXÐíH-0ò±þ\¤‡gz/Ö&ô<à—XŒ)Ùat©~˜ dlÖºk¢Ýê1³¹c‰-Ý›Nù¼E÷ÿ†: á9ývdŽ`Ó˜{WglQQNú)ò²ã“jâÉ�á0ý�;{0…õcõ‡DŦhqN6IÝiUÊÒPÑ+úÊ•õ(Ø”]â „9ŒyÊ´ä˜7a²’žÄ±äŽÖðÊœñ@^™½ƒyi¤BS¶®Gâè˜ë¸—î-ÇqÏQ„—[Žc/;¨Qž^ RnbDyÁs1ÀO4MDŸ§^ËDŸ§ž+¢Ï£Ã §ç²E§‹hÂrX; 9 †7üNëüC� -|È"z×’dj —ñ‘͸? ïÇØù±Oâ˜ûbÐm3´C¤&ÌG1Ž ­—¦¶MM.ëˆÇ’ݴСÎËšþ™_Œº“T†ÒT#ÙECZ²I1ÚùÞ¨«2øÖ3ã%|t“Tø'°Îx^²”{�|R¥ˆÈŒy›ÿâÿ²A‘ñ’±˜›Å“uü!�kdŒÿ£AMÀ—ùSÇ»ÖÄýM�7˜ÛÀý¹©ÇTˆnX í¶( Ê“Šb¤|U-JQ.7²ù@.�1[göÂbe%µÊ•ð¿µ`•�È¡Ñ(”‹èv·Õ‰:ïëŽ7;Y…4–?ƒ0“ˆK}@åÞÍwãO£§dþ\¸gOÏ^Í$³dBÑÔ[ÃYÙëGRç«u싳©Ú›¨lŠ„$ÆÈ¨yX£ï~ÝHñ)iìñ^î2™"�F7Ð@ÿúAéN4ž²ÐOõ ƒ“hq©_“yâùÿƒÇ4‰ÓaÇ©>›~|ww93ídÃWÆå¥Î™ÿÞK’÷~¼NbJhÊßSï*\ziÓNêÍëß×q°‰Èû”wŽuîô&½ÑØ×gÖv茎kP+µˆ9}²%v`¤Öö¹kÀ·xg^\yL §Ä zƒ®y‘T‹§>Ýú‘ǹF·<Âþ6]…Üþ}ãôÆÃ…çOêãxFjnI7Œj”\éÝ5w»z`^êò‹ü È"¤äçåk!™>3¶émB\º3ú‡ô�æþ¯èÄOc†ý¡ç.cfgæÎŽ»½A}Þˆ `õ ðcÊq .õïõ™˜öU¦Ã_'Íâ¼Èu?h–‘» :aä�Ðg3‹._Ä4…Öïò&±?ânÏѸëXB$ìÚµôEDnÓåE‡Æ×ÌK�NJÖIä¥ÄÍå€3·Ý3zvfTøLXŒ3�^’piZ•ÀÊYJ=†R8–„WºåÔî)A³n�i€£Àbòô6" É_.ßÓå*æiç»o^¿ýn¦m§š„„¸uµyû/ðÖÚcË�væqšÆkWë;É�¸_¶ˆâëÎ�«y›4.ß«0·¹Ïâ(š{¬séÊÕ`å“Ä ‚�.;iœ¸̶Ñéä«ÓÉ©ÁSKƒ�Í"G¢‹ïE¾O´Î ½±ûîwZÝu;pä| ÓNΧœ� —«ÔÕFBäÓzvÒÕf=—ýçpŠ-Y¼¡AÇ�£˜¹Ú7ÃþÜ�„ó˜x¶yA¸á0±÷„éÖAHwá�±¤V§§ážììoÇ.IÂ`-:�­R¦¥ Ø9�…·#h®¿IÕÞy”ë–ÆáŸ',\ˆ†gÝÿö}yø‰¸Zw¤è¥ä&EÙ(_Ä ÆÙ$ a¾ÇÉþ)ì̘‰cÚÕ(ìr©v›4‚�Ÿßi˜E)µíÁ^¹"jæädBñ8 `±ëÏ'%b+!w…êei-O±¿ár”v®k“"–ËŽRÖLÕÒð\ZQµ9˜ÔÜ~.†ÍÒ¨•,<;�lDª™Õ­EwxÞ«‹gÂXDcÑï»CÓŠáràLFpÉrbq¸÷»ýóÌšxSujÏ7°XN_0Í~ÁÄD#º± žçŠi:¡°æ„MSK|Wä”XÔ^Ç4ÄöÄzä˜;º|¶€-¡ŒÃ+xd˜’¬F§Å¾6õP§~”ß.Ä£„�%º9;+�iÃ.z�üGRÙŒ™X¦dŠo§ô–ÍŠ½‰!pywWàC}‘íÕ—v²Ø½ÂÐRœ{<ô+$éò }±òè’p'»ðí³‚^Þ>5ŽN³h'ÏÇŒ�¼9#kØËM«ö¦{l€RóÈWʺà!þôÈP¢‘nºÇQ-�Ó1´e° ¬ 禊%¸ýžp¯åŽ�½{¬³Q¼öNj­Öù²0[Á_•ÌiàO·j'É îòÿÜ€ÅxT„pxt„ Câ¸Ê�…n·0±Bûµ—¾[Ä×mnþNl¢SšÇØü܆ƦÕ;£æÏ>zQéøßØ¦Ž¾‚Ž´:SQìUÓ±Rµ­§Ô^„Œ§5V>ƒ¢<’"žB9½ÝÎB[õô®¸|R)¼À{¸pâ^ )(zL€¬¹7�H [©�]Ã.ØD˜³�&@þ[µc]]]è–Ø^®.w™•ut÷ävÖ‚x°±nWÆÿyÜý$Û "WÜõš<ÿ�GRPgå)ñFØ1o„�ê�´R’ÞH3�º7¢ÛBðÈ5»jƒþð¡|‡ΜЋ´G!ìt–z` $Â9@îÎQÕ¸Ú$GI°ª„*Vú0± yuKÈë iJØU y„Úå:;…fMt2®Â±sp*hã$Ž{ÎÁI¸IÅfï~lâTȶi*&÷â¯�–âì°Ý“Øý¹Ÿ˜íšS@.­îäBüWðY� xÜß„t‰_ôeÅ~Î<©ÒþÜ{;Ã>þ©^7¾ò‚øÚÕAÿw`Äüõ�r,�°ßp@/� ôÁU^¢ƒ §Ž‘Æštõ¬L$¼˜/üÅÂ<>Tƒã˜IäüóÀoÛ™¤—õ>&uã*H¿´´ UOòz¦ä>Zæ-əϽñø:¥Ii äÏûãƒËX<â+ñ�#*{ÿs³e‡iÚž† ”IX]Wó‰ †4Œ.$ld¦Fé²Àé¬fÔ&Ù™¬B-B5²{BcÂOâv´��²Õ kÛÑ¡–ë,˜å8õØMHW€|Ó¦¸TÃ:”D±ýàcgo8鈨 ,íä¦Ú÷‡ €ý»Î›o[¢=-4.30¦&|»¥»÷ßn�וÍ<ÄkÃ´Óø¸#tiôG¦Í£Ð'FÏÜ}¸È–Aã†mÛ4‹‹¤ÓÞt ~PDè2]=¥—Ý™‹ÞŠE¦ ±8 †‹íM¹}åEr¡&A}�‚íg¦‘ ð}‰~8e‘êÂ-š>MEøÃtcùï…wgøÓ-_�¡¶à‰…‘—;Óòm|b„æEÊn·|z‹+‚¡×$‰n ÔÈ÷ReP ˱øÖÖÛ‹¢Û­o#5èž-,‹Åw™ Ý¢ìÄ%²°Ä“®Ó¯/q –Ø+,ñð|ÜÈÒë�G£bRJ,¦h1UÌ¢ˆTr>Á)’ó€#‘ß’ •ž2ë ?‘é¹#¿Äô�ñ¿Û̹ÏÂgÚůö�¯ßþúO–C óti Š‹Û/¯QÍûñzÓÇRõl~µü°[¢@‚8:—l.Vˆ´p¾Š(4S¡—ç·¯CW61ÙBл»kð¸ãk¼SñQ–ózyjNÚƒxå†R$Éò¡N"p�yƆnÏÃå{Ù«zã|V@¤F�-KOb OÕÒ‰Ä@@)Ú´¬ÞÉøÖV'5>{p4ÕY•ŒUL_áiO~�“·Š!ÃÜk‘Í6ôÍ&å°#žÑ%´dR%ÛµEìí‹×?¢I3%3•…·tyC‡ãFö�A÷Oæ.‰ÿ’ëâzg*�ljÎ} ‡‹o³FMÌÚº�„¦�eˆk*uÍ)ðÿï ZiÓÅ‹,„jA²nRÞÞÝ办]äK+ZÀÈVØDöÅsD~pL¿ˆB™ôa.Â…ñ(4å–�©8EBSŽ|J~ –7e?¤pŒò'ÞSÞñ\ç"ž¦OèSòWöÔ<ñ1÷:ùQð¸ç¸Iáž_º›–[ÔtertàB·àhˆwÉ͇¯.EjO ìþ¼ü/Ðë¯1–ñ´—J¿BàXÀ@uÒÌfå€Üy) W8’fÞ`qª[} kVîœ;9ö¦bà N±õR·Žà¬^Óˆâ�{Ë@wf†.ÜŒŒ¢ÚÁ¡y£›†.mùnu(/¸ò¨Oã€3ø a)ˆÅÄBãÜ ÖFô0hø‰üƒEú¬yl®ƒÈŒƒ«ysG›TúÙÊYë:Îw%dŸß5 Žr£dZY~“ž¨¼Vþ§SðI %u?š-çžÑ-mÿáØÃ¡¬†øÔ�#ŽÜ&òò^Q>eÄOñtF ÎÔp˜� ªÞ:$,ÂZ%ÁkMÞó$¤Z�kÄ÷cðòÀ-]`´—dÔÿö‘Ü.À$¼�€ÇùNþ 뱯%Æ`ËN@–râvø�+×Þv|±9zh~á˜AIœª“'þAب졟ãfи˜ H/¾yb$>½œí²¦Š¿Cÿ],³¡{A #è¹¹‰Ìæ­žE˜WØP0P‹ZqDó0��ãMt\rËñ<Ž#âQ£HE�õFT‚bjG]€POËÓ¦«Èƒ˜DÉ2™–F;áÍð¾#LsÆ-ú ggäI§û´Ô0z[ŽJWL lØA'ƒ(|—µu‡i–ß‹þ(CŠŒ\…ñ†¿CÍ)ÃjËJb[à;€EÒ‡,±mÕF-ÌÚ´¬O¶Ïp�›3ƒïgÓö«FR�·<÷Ž0�Dœhy’>_±‹º˜Ó*[M÷!@BξÞj42í›aÀˌБü±ÔEYˆ²O*+§o£½÷hœ¡™k&7Èx†Æ§@¨!X1îŽúã¶Zšb¬gà8Îøÿi¬ç…pe[:£ÁdÜP�›Ö:ª²(Χk^Q'Jžä?©³­ÔRâ/�Ѻ¦ÑS—=Óè«Ëþ±bÏàÄÄ£õ°’ ž�TyYm@vÚTZS #Ì‚œ“•ªT—×^ò ã—IŒ8µ+ V"|/MýÛ` €Z]ãh�þêÜâÀâ˜ü·Á¢s€n°¼Ç/¹ù„‘§ú’BõÏ8t¶ XÍ îî¬`@DÇtüÔ-‰ãtYíc)Y]]]è;åKt¥/ÑÝû 3bt ”‚._-”?1xèã²¾õJßúÇüŒÚ¢È¦BÁ™5Â3G£×о¾cÕAX…IÐq£>VÒ\Æp ¿ZÌ ©~5Y­(±XÇ`ü�>š†»¥•Z±Ì4‹¿gù©óþís¶ �Ÿ5ò¡BÍ/ET’Š$ƒ+`úÁÂÎÏe¼µô�>Åÿ™)/å‡GjiÿLS^NuæœÛJÚØ~W­T3ÿw’”³�ù ¡–A̽ã|gË kg_`~Ø3üØ‘‡Z@ ·Öµ<÷ Kî"¸Ü«ªœÉ‚Ï’µ©ÂÀ_ma„jŒ<Í_û}¨!æóy�¾HI>Ø<‰j‘ÔÍV†ìxÄ #ÖÞÕ:ŽÝïñ{QïÝ‹zw¤¨Ž5”URE,m‚-1î{1œBðap ]·u¨ãÞþ`pÞ€{_JßÀzÛövZzã²M…/œúÝ>Óþ•䉶Ëtæêú®É¯ÈY—UgIÿ��Y&¤š½…'ˆÊ(,”« VƼØ`ðP"µdÈû¨§ÙYÃóÉ Á¿ú­–),ùø®‚Ê 3õ¶ã{¡è^¨KjÏ1ãê̦:^h†[b³M»pO\ÁÍ�Áïî¶;é¸ )øûë ÿ”‹¬ Yù��ûAø�ßš^ŠË/g»ÿëxYð—Á_ªy%oïh%o‹·#¥v>…Â]¬uuü…@ùAKð@Ý u¶LAñ~çWK,¾V8[¾h†ÈF� _ë%@ésÂAÕ‘RÔ_¬8�{ÿóàÛ‚½co þÙ„X²6»û«zõÙÑx{Võ„5OZ÷¼ø~™ïý¬@*�[giÛ‹&¯¡RŽˆ¤þJRÅ7±è¦P|s¬ì)f kf>¯\ ‰ãµÕï�Q“I‘&‡)+/ëû“AwT¢˜[ñ:ÉŠx£¼´L–Ê’MYÖ¹À¿bd,e·Æç زdšz Eæo’f(2¿!ˆ¯XH?ÊìÃgáÀh}‚£\VŠ{ÇÀÿaFÚ1þ©Œ¨ZÆ^Ê׎ v¤ÓXšvR>cg †½óI[ÍY«�1¶ÌNæÇafY.õk�Q|§47;‹^è;Áâ™�D½Hä¾e‚äÏ`Ùj¢íÃBUžEÚ¡t§Ù0qe˜FÒ0õJ† k0J$ Sã ê–.U@®½j ªGXèEBÿø¿î%öJ„4ÄøhK°¤#ŒÅì½*úl�»*£õ¹±Õ’e<a=Å:f«Ö±ºÆ˜­ñ½´6£€TRïCÎL³1¢&(ÏšÞŸiR@{±‰"Yi¬Ù•g­ïýïMò¬Âþ­‹Riìab57 žóŠå‰=ÌŒÐkÙh^OÆ /c4²¼VÔã÷ñ£«>öÇþ}Éì?ú ÅìU ^Éöï+²O�ÁsAÀ ¬Â(hz ‡¬O¢•NöîMN¨�F¨b~µdzw’%ÓO�(<ü‚Í9†I˜_¶)uÍŠ8º™ª–+@N æ5׬WŠòçq$¡ök¬�®'Í[iÌ’øÎI3×Ô¿PrR‰úÀ8Ã:\¸­ý€ÀE¸ p…W.@ý0€—çý.B Éí·³³<›7þÀÃ¥;ý/Lw6öoLwÆ¥t§Å3ÿ©½ž§¥>×¼%ý¹ÿm™ÈNÃ$�iiy‡Æ©º1³0¼q)šÌàÖ%>š)tVÍÐý9`×*ŽH'5îÌÐòë>™�?n}—VmŠ”dUÛuä46<³ù…°*¾® ›ü~¦z ¦›%MЭ„¥_6ÆPŒQÏ™—Æ5ˆ\ˉ×Þ6V‹tRÖªþFØ�Þš¶ÍñÍÀ;÷Ϋ`f4¨¾&^*sNØ®ëåáÌhf€Î�Ïuü¨¸çÿ.šƒÙ»™yño�£ñxÃ|ò þÇ/Ÿþ+~ãÍ^Lüñ¸ẇ“ÁbäöœòäPKÒV1]RtÉZ"&Eimunify-security/assets/ui-app/assets/static/other-root/manifest.jsonUT ëÆ«jëÆ«jux 臽ZÉrÛ8½ç+R9‡ 6‚à|Àœç6GUc‹éP$‹¤äx¦æß’b“4@€Š•”]2–Æë ÑŸüï‡�? jv�ç?¦âçsûЫ}…E³×æúwü>þ° vQÅm!„dg¥ö�L³ 4ï¢Ú2A . F £"4¬ͺpN‰#dY <ÀÈö«@ó.†��€Kc™AÔªÆU y „p®À)™ò�ahÞ¥J †ÇÂ(œKæ5õ*мKSMrd 0ZNr¨[ŸÚ¼‹«Â`ΰ@Qˆ#¨?®Í»„eI1A´DZè£q}׿] Ýĸ)]LŠBåFÿ´úX›²3ÞÏ å«ñ~vŽ®ENE)”r‡aáKµ½É@ª& ¯ÚC×6¦ÝQhT¥¥L›ª:Ðð:ÌÈ<¬Œ�”²Ü�¶ÓRY¬�áùÌT]�íW¨õf5˜ÍÖ 0Y0FIæ æËl²ªF¨k«¶YVÒë0/+3ÈL¡¨Æ¹Ñ”ð5p:ÿ¦<Âéü;¡3,iAµ*5&…ÂåzÝ~uûzýLù¸XýøœØs¼ÅNÌRNÊSxÔ´�N/þêÔ„²HBË£Ö3:ÃøkßèŒ\ÆMê`R§¦§SŽÝ¤œ2ƒäƒÓKÙßo¢Ù)÷ÄD;ÃR=j¤z|0Õ‰|ŠÙ“™#3€ÑÞ±SÓÛ;6^WhÌd³š‘‹µtùdH%õ …E=›Bäƒïv¯ÁáµAÁ“[øâ�æ;íú›%¡¦þT…š™Ñ*{€Vo×a&cjJ™ßc3"L£àD~D‰kO�ׂ:8%NƒIdŸœ8t´² YbÆIR×g,v¹N/6׆°r!¦Ðæ ¦Íµ~‚¡&±^Nö?ø¢ñOÖÈcN6ðú–.ÅqÆô۫ׯ~þöÆÔ,Öó‚{z듈W Ñ4mãW·ûÄRö{f³9^ ?y FòïYA{|G5m�ÝZÿ$âULºöƒ ]¿HGÜc²\ñ™F¶Fþ®]r­¢™|‚ÖÞ üx¡½£¢Ù#¨0oÃy@«¶^î©ø›iφ}ñ‘븉¶0 â ˶@p‘ÖØÖP±]p\š`�ïC{?R«·Y{&Ç( RÐŽöGþ*ãÀÒ”�Êk¤#F_´ñyé~P�± —š@ΑûaÉ‚ õfŠÜÁŽ*Ðs� ËÙ™_]†<²�½è�(gyë8î|2(J¼3Œ‡%òÜÅ kÄ@ýpm’´Ú½'_Í´IÒl¸8‰…er“Lܶ¤w¶ÜMdjígönÇ¢nL,[Θ–¾©íþ±­žq6J¶Â ~…D„nš�„l4õ×ê�ŒTQ­C¥-(• —Ú•ÔÖvyªÇ%›ôN Œ?v•Ò©�,Ç$j+VOr¶Ð6 ›èmx ¤«žT†•ô¥B“ éH|R|Â@�nPbÀÊjë  &#�ñÐ24�ÃÛI†f5€°Ê ÔHmFb,ò“%ë€Ôͺþ¼§ Äà‹”áaØU¸)ÕÀÁ~d˜�±“{8CÒI`‚–´ëb¡±kç©A`åÖ ¥ÔØ‘¤mEŒ,‘f¯*»‘ �*í�"phhý®—MU¼3MîÐ^É=Þ›ª—eá»D(>}±R—À¼‹`¶¯Ô\㦔5å³…ü›¨�Ýh…€*aÀBix\ðõ™ÛÐwq;4a[|r†�ØÎ�þ,Ô�ÅQN�PkýÄ®}êB¤!u:�ùês)« Ê)ÏcÙ ~/@„ÞS�Õ¤2ÉvŒ8ãþ‰ˆgAÜÇ‹ ÞO êÕO.x a’öÜ#ÝÔ"ø4#‹’·Ó/z;‰˜ä|ú´5á�\ë—f\ž��˜ÓSËY7Î#{YŸU›b«Ï#Ÿ{>ƒÜ¶&XÊ3Iö~¯öž.FøÉæ¡) ?_ ¿×™Á�;&(jáö:ŽqnB?wæ"îmå®°ûAχ‡NNãŒ'âs±Ç’ÇJGyñƒ³j�–L<“j¿úé—nÜÙ3’ÝRª”­MCí³há–[p&µÜ~õ/#ç"»¥Ä^âdÇÇy€jÀ¹;“•̸A=;“UHV;>ªÉw$Ý —K¿ÞâT+‡,°Ætsp¨•:Á™(ımÕ’Fãi¶ðÄS‡*—nsz ¯óY9Ëé ¡QLõ��ÊðØö·g�ÍL+S‘v9LkaªŽÜ“VùIû��nÔÎñT4«•'QQ.�iE«6y¦LìÉ(ß¿6ûÌ•™˜3®­ºPC¢59¥ð²*2­9󱩔ç•|’'*>oÐtQ¹õùÁ;P¼‡úÞšs*ºjžÏŸk¹ÕQËÕoËY¨;z¹*êÔC4͉‹ü$êXÏÛ�Žsí­%_|̯-lþgÞó“¢q¼,|hÂ�jÙ�±©Z˜sÚÝ{u´pu±tW»HšÚ7&¾V¿wL6§“ ÑŽ�Aï¢ú–¿ŒÑ=ì )ÿ5îQt¯"Ô¦ÐË©7{™·#étñ�¼mÊ‚ú;†5¯;4=ä,]$õ&âsQ�pjÀDñ¶{G"âSTàÕî:õž‹Èµ7±ã‰ÖûMÄÉâ¡;ǘßc\ÏÐd`Ü ¤Šg>0ONKð©¢e–¼\¹@­?G,Ÿ†ëïé·›Þå«ÍzžÛ­Výf ûs{<:t!€êmµ³°ñø�¹ûx¹çã#�‘|^|_ÃéêQyMw/ó:‡P5ÉÛS]ùŠù _¨¹W‘{„×~[¼kз×SB^Þ'—ÓdC´b D õÓ4Pòh³�ñ&²ÓÁ’üM‰IÉq΃”ïì?�Ëê€^‚¨åøy¹ÔФü¶—à Ž gòÒ�+Ïo¬BŸá!îãôÅ6+W[¡!'“f/*Tv1_x%¨êeï¦T�ºõ’ð¸�ÿÙ1Y¾Oµ¨¿¥(Û=¤óà‘»&ÔÔF÷ã 9Jx„®Ç-Ù �›jD*o«±šçþò�Ô9ÃŽ·ü¯+Z ËeØ—nv«™´�ÙÈÌ]œ]½Çý¦\ô±ËïMa=�¦rê´&õÜëSG'Á½Å³š¯�ñ‡=>û ¹_ó¸,sÊTõšúíƒÆä’S¸†4é‰O¢´9m¼úéEq‰Ò‹ÉX|ĺ1Ý¢KüóØÐÚ[c»MÊm�ޱ5ûöĔ˥ýK–Kc™riq�4Q.m<ÙCU.MQ»…�ØY !AðsIª !ý´|x¢˜EZ ˆ+Ï'ô}õüè{™ÖóÕ[ŠÑì[WÁzPÚt­oÊ,úÃQ™eÿ”,#¥ s®,•å^^ëÖo$«È×X3JJöº$õ–Ä©ú§¬%¿Š #²*A¾ü’,2S¬ÓÁ9#ó�¬¢K ¢‡¸QûZcà_Rˆ*išéÉ7}kÒå•:oSݤ:•*NeçjSÉóª®àZ&*dÁ{u0^âE‹ºA¶©CøGEý¨Šú#1¨Êò$ùú<À‚¤Úˆ^R`�Ù»�½$3_W>c«"°‚ XÖ;÷Þ5À¯@%ïmV?¸®yF_J38it”É.Td®“µËoWó`FÞ¹–0oŒ&†T8̽éáØaV`.ç> »iÏlS‹'ŠœÍójqRWÝwÉ;¨ÎC«Kð\”Ct[TFཱ‘CKÔ79†M. 9˜«c¦ Ñ�V‘Ë0¦§àôt!>‰•F%áRiŒ=x¡ ϤiVÆûÈ&7¢ÜŒ8 ½Â��VØïWÒ]eŒÑp:î”ýîõÆ£‘²ß“±=SÎvõP=Ù:Sïï¬þRXýþ°×7L$úGÐÛµÛ��JÌÔõ h¸]3MÚç·qd ÿ{ÂdowµVÃB]MÖ¤Œ‘,ßW&L ¦˜Iãã÷ƒn–ѨAõ3M´D ÷m Ô®ôš¨�¸^ŠZ~5cÍž¯�Y[¬�ÉêkX�@‚rû‘P@¿8lÃð÷1E¶¨ŠfÞFGÿϳ‡ŸCëhïQ&ldF&Ýøþåeš©øNüž¥?-±=F‰Ú\ ®=è¯ÿ%|®„™Â”Ö¿#ê‹Æ…�–Ñψ¯þÒiƒÊ_t+¤Ëe¢àA¿2_¿)£›õD#¨ë£9ö‹8©:žWŸLn"ÛD ¦ô´\�]Â/ùU�x‹Ùqñ%ϵ À—º®ÚRZ/ÿýÍ#H®k½¼‡÷Å7�ÄZX¯ùÿ¿¿¹}óúõ/Ûrè‹«y ‚‡o.ÁíÓ°õv3NÆ–._Ó+éÙGB¤õxI�€\?žÅâ;ɼ¸- })r�ì8CÂ|©–ëĤ&«[BnÛÂ|X™Z¾}W¢[µÏ*¸dAlëaÏEë:À lqôÿJ9ñ�NnUð¢Í\”œ®°/TBi¥ª%–9<ÿöp,èPÅ ÃLvÑ?æÃ÷»/ Ÿ¬*xhò‹:*NiÞÅÁˆ³®21XÀÞàEIL˳<+0j]üâìƒ\|•–t±ïgKÂÆí³T”¶f\Ž æÖûi'}ß«1’òГò±;]—ÇI7õìÒòÁ™nöÍœžË«°DyŠÁ&ëà$¸JŸÃáW‚õ؉Z +«º¤®j*X±LbZÚÓ6C³gN¤�²ãzœ{t¦*[¨t!ÏëBž×…Å:†¾ªc¸´Þ¤|0‘õ*%dWÜP¯¿•Qaè­ÒŽ3ê÷ËnÈBº!^MA9$q(2^ˆŒ’½³%*�Ð …Êùí j�âŸ$³Kª©ìámoŒ‹?¼xñL‹‚ sñ+†XýúæÇËÏQQßBÞbâô§îÂñ0õmë}ª3ü/PKÒV1]m±ò5ü&\Άimunify-security/assets/ui-app/assets/static/other-root/src_app_components_cms-protection_cms-protection_module_ts.569d338892a52c4d.jsUT ëÆ«jëÆ«jux è‡ä\ oÛ¸³ÿ*^½nŸõ@¾í8ð.Ò]wsm’^Û Y¦c52åJr7õw3$%ëô‘¤‹‡ÿC�F¦x gÈáoJ›y¬àù®eúÚnÑcöè‹vÏSü}ç9|êøcæ–\Çñµëîê×?~|¹Öétæ�‹_¾hžkö�é´o:“©Ã÷½¾9ñJS×ñ™é[Oþœ8ÙÍú¾§]“Ç�Z¹Ù)râ¦w{dÔ-ú:atXôÉãþÄ;Û�ˆf�"Tù }÷Îp N—[µFµ¦ ëår¹¥åf½¬«Ír Jm¬Ûh–:1±n«V­êdØ͸è¿ÈõG—ù3—8íqÓâ\ºš¬ˆ™ÃÜÍèê¢K1ëúbJ¢ÿÿY±Õþ¯Jc™ú–o3!›ù…“n•À£ižWà’îÌô·¨?úcËËšLw¸°¼+c°gÛÎ=.w;Í£7çzѤ߰ᒠÂõ…ç¾eÊ^%å#Ã\ê ©3Ø}Ñÿñšd´1'Ó¤ †ldq¶(M`ã?Ÿ²' |NÆë€vµjÍr)®@µëk2d¦íuZ” ×iÁ¬_ŒŒjÛ¾o PÓ~‰È{^Ý1 «z¨‘Øj¨�ßôFÛµª|6™¢¸;K�Š›gÃ�#¦:fÆ�¹é=ð’;(çm@JM‘"GʤÈYBÕ:Ù.ÔÅ®ÏÚaÅ鯨¸yðª0¼ÿÃVФ2H3w‹­‰P+hYl]îÏZrªI´xšÛËÑkiqE�Xcħ±}é¯9¶RCO-®÷@ïÀ~›2˜ƒmæÐ !†3!üÄmû!w ±è)ŒMnè€Ìè™Ðƒ�kâùsûÒhÖ†ýÒç7&ªqî—~Ý?;9ÿõºðø/&†{cñÒÀñ}gÒ)Ô*Ó‡ÝøB»^€â TÑB/J|tÈ¢ÝDLt†è§Ò¬ÁãñHµÕ 4FY̪ÂK,¼J_•bÉÙt‰zÉ–¼™�Ѓ’;zClzL®è<%{rðÇÐô�ÿæ( %ÓÄ2è…ñ9 ÿÊqlßšªWgtO¬€ý›Œé'2 #rO�ȵȜ2ò&cÅdëˆSÔ;UÔGh-Õk;°±¿â#ìvØ·{¨Z�*ìæXTø&�Ô±´ÖhÂã+¬»SnƒšùާÙlþ u ì|P ï…©ÂKkçíz˜€�Ö.º!^XqLäCˆ4:W¢¶ „ ‰¢ñUp¶1°Ý\#•\s„kØ^þh¸Üâ7x0/‡,þc{$v/û*M˜ç7yq£æçã˜ï§Ì6æ§lc–fÛçm­¿‰á—¡¸ç¥ÑO.ËVšx>}öLË_eÏÝö P9Ž¡p‘ NDìà?ŸÂ‰œt¥uÀ�²Ž‹¥�EO\:\]#Ÿ‰0cŒOï¹8·4¢)BGâoijo‚Kã&²³2ÙØ±ÑÚ�'ô�dñ�3]…�UÀ¥„ópññP6R%+S†"�ÁmÀ9g#\�‘eôn£e´¹¶*ÀÊZwiý­ œ75`‰µóÆiliÜ©f`Ùý^X¹Ò[ä-Ø�5´ÌKfÀ°Á·/ì±Mþ€þj9ê>£çHÛò'PÓHoó�­ΨŽ›Œ=y“½Ì9ÛX³¯ —}vf—378,¶±}ÓN1F‡†oPô_9olǼ¥Ü˜°gl:´q9µ¿ñÇ¿¥ÏvÆ2cù£ã§.,Šs{–ç3{Œ�¶XHÙÿ�á�œŠÁc/„�ø)Žõ ÀH0ǽÂ+zsÿÉ8£7ƒaaí \Žîrõl¶ssÁF]_ÜÇgwÉÜ;]&ߦfßÕÃh€n�gTè]ö?ž]œ_^^öÏ�ß¿í�¾~�Q¨�ÊõUwÅèô†šûØò|8p�áPýF'ÆT/òîoE.ƒ0ðrÕ±®ë±q”ï‚ÉSèÑ£¥¢/Bã…Ãá×Èr'�Û4d5mÇcÅGÕM'£O*àR‘i­³½’šh¹L˜ËÒN‚ó‘žì]õz{Çgoû{W{©å•ÙÆð‚YlÐà;=Ô†ÇVáq*MPu tÄ àz}]÷ø˜¹–€#XȲ#Yséê­Ô¥¯·Ò^:{H^¡z„³iìÜ+‘¿poÚ‘+¨(IÇÑ"Eg8W%Qǯ|i za P÷aTb ŽoƒIK´©kM »A–ÀŸ ̳)ìFÓð¤ÇØ{›Ý×ðöÈ1g^Y {îðF°_­[U„J¦ gÒ`@Sà ŒhèT 㨨g4u2Jé"Ï¥’ÉP�³aÜWžÝ[%ÖO¼×HO‚%3´ñ¥€p.1hƒ‡PÞ+È/h8| `WôýËxæåzPNÉ,¿xx«dºÆ‚-¾)AõÌ]ÄWÿ¬ÒZµ±Þ oÎÍ'´Eêëi{¹ÒÐÓ†ãƒ!ípþÊmABù‡*ÙO©}}‘'¯4ºS,~½Xü¥RYΩùÔ9EζÜÙd؉Át6ZJsuµÕ�(‚Šëú¡á�Žá—•Š-J£õôbüPø¥”ȃ ¶›ÛaêªØÉ­UĪó(Ùœ}GJª8F¥IþFÓ4 –%LÔ·‡âidºÂ,h¢: ãW«BPéýº½ƒU0 .\ÁÔ”‚z¶µ±ÉÀ50cÓ•¥|e‰ÐÆºÄ D½zðGa°Áý™Gb@ô €d‰ØH4*�‡DýÚä/ú'yOÏa¨=Ô¿ç0—Tt- 6�ªUË2ªöÿ‡c›±ã- Yörn×€á`™w \±»£UšËÑèhfÛ¥{kè�s{o¡Y¹ükØ,D5¹­FPXºgÖÍØïšårØTÆ•´Ü.`®0wI÷ô¡à9¶5,ü+ã¿ÝÔ8 9 slðvÀ”]Ý)gÆ"8ǰC¥Õ­äãs½Ý*7e��ñy\Y0c7°õGÞ Š©ûPäœNU9†v[IbõtMõ"Rµ¦YºI*EF¼ÃßËZ÷.Øhak-ØKLV`Âøœ>dÛ0 äîV£prŠqnØÚH^Î;|IR¦”.£<;\|nTZuP@>×ê "61!8¾MQ¹ZÅÀòPˆw§ÅžjWCHÁEˆZ'7²áNžg²¼)rää˜u 'í‹•Qk4 Ë>>WÚ;mx>õ+í<Ÿ‹þë Œ9�q„nU¡Ï‘ ¡º#¢ß¢Ÿ*€�¨Þ®b¾Þ½ª])C7²i» dÞq™È×À8—™|UŒ�‹a�žf$¦uË_$qlÚ‰æ+z¾3=‡3͸1$Ê=ÿVzÙØeÂácÞ1‘‘¨êhæ}gï]0O_$d!T}o(sR">çË„(²ùR~ÖÄsiRêÿÔ˜°€0Tf‡Ieª¡©�²¸ŸG �†y‹¯~üEr²ÿ7òÓB?–ôw^î‹Og¾×y”¤v4ùVpd6-úK#jµt4õ -”¤&ýÕ¥û#n¥‡¨¥d‹6 v0úÛÀÀôrM;)0ÝåŸCÛcÂGì·ŸHº£JÎ�Éòíî<­±BËä–ËЖ±& ­B.9ÐTöjXN8 (ÌiÖÞá˜82%aÍ®‡I1—6ÁªM$Y)ééÅ%kE (-öF×~Sof å…2Þ-\ˆ³4/f ½^Ãç�ÐÓM8‘vå|xW-ÔÁ\AA!Û¥¶>^­"–©�3ds:÷¡,Ž m=O ÝÊ^$‹P=œn‚ud£Ðµ D‚ògç®å¸–?ïÖH¤VøZà’Ø›©áÜ|]m0ïì‰Ö€%ãÏ? +©«i‰^GÆÌösÞ f7ûž·�SèüÏ@�]mæ[¶G,Qo<ª€( [*‹qÁoÎø¾X&^1ÆjÜ–��²<‰Ä… �IªÁà¸`ß ÄG¾‚ü5PGZ·Û�ö(ÜhºZÈIŸø—L&^ôµ_pzTû)^q“ÓÏ?Åc,Á¬�²Tå 6v´D¨ë\'÷éRb÷¶áû@ÅWj¾*Õ|9æåh«Kêþsì*Ô$RcKOgLÝ+%ºr¯I;Rž]?h&ý¯i+ùŠƒÕú†Ó3À©ôì ¥SêNê“#ÞMùº§Æp†(èÈÅR¡}Ý~ú®&4|8 «¹nG™›!¦8JCæÃ€ƒ¸º.ø½MfËæqÅK´õWº�Ê‚ì#þôäá`²‰t†½-Î í`RóiG„oM@I“)¢ÊðGEý�±4¾\/È7ž^mj fsûÖTYÃ}|’Ý’N‡xAÃ%�ê!/E`dˆ Kp¤šë˜^—I$àüº$Šmó…6hôÂÅšµÛ"`í58§Üù95ÞZ—iD+EŠùi ?‘�4 “P×$'5²}ˆƒùž ¦7 ºY�—„KHœÂ즎·]bD®M&y’Ìp{µÎLŒœ9œEµø[OÛÐAB„¤æõkíôýñ±öK· -BÜ÷mªé̸ïÎ¥-FjIëvCU/ÂŒ—�¡Âù+S±ˆZq�ò~k�"2¹jqYð”{Ÿ½ä×ú8œŸéG››´™>•Šil+zÚ øÜ¨BUPYÉÞ–|60÷lt…gÊZµR'ñàRq—È2}ûDYç©ïEÎÝæ1äg8´¨û|(" ´cš†Çî0£c^²``¡u‚’›�õËø½‚ž“Òøc �ö–ËûiRõÔ*ÍâK†6›Ù¶Ð`IQr>o«Ã²ÜJ¤–ÆOëh üNÒCçhÜåÄeÎ]1t9-�–± èù¹ `ÿþÌua&,vŸå+Lo™SZË�®o“£Z]FÏëiseuø\Î)•é 2[‘© ñÀY—°YÕwÔKwÉ1*bcB£8ßu�›€QßJ/@‚›ê`±½Ÿ #À òºÄb²<¤8¸+¸ÊD¡S²áï«"²é„T\Â{¶ öè<èAÓ;+UÉêœÑ-¦ô²×1êy™Š¢=yÛ9uȼ{Bò ³ ñˆ'õOß wdÚ®ÉÌÚXíÙóÇx%¡¬ù®Y–ÚÒ¼+i׋]éöûÄÓÉ­Ä!q•ÈÑÎPWŠ@d�Ǫ²\¹ã[#Ë–$·b‹ótê«#ߊ€PfÉ2˜ÔÄò<щ«B�Ž1Œåª.–[vzie(t7¼lJ÷ôbÀ�ÿ •ëÎ1î_ðcCSà$/~"�˜ú!# *÷A¦¾Ë`í€<Ì—{³$¿#"‰C­ÄeTñ%•l•b‘ƒ;²\O9]g¢ƒúÊd~°Œ‹‚êŽÜ¹$̨ ¡Ë¿û�;ÇÊ =ðó8ÏÈ3þ]‹I[ê 1 qÓ öy'·†¶+yÉâ+†z3Ó„ÙTx”I¡�¥ê•´t¥7U¬Œ¢äzj‘<®X€‰ìç#ǽ7Û„C-– í·pjWtèx¦k æBËÎÑ€RÝ[v �î-t¹?fæ-R·ÎGËc>ZþãǧMœ´Sº ` ‡y“\d–N®OW‚ ·a^óúZ.§o6¨fpúç³}ΟNg‘[Vº&w€þBÿƆ¡²°>Œð•^eÜü‰Öø@Ï †BŽaáÉ“^øV@P° Çr’óÂEô¦ë@�,u€»B%¤xB—"øv¸‚Ÿu•ý]«DŸx°;Ò/-Ó…ÅQ§¨¡Kù 8ZF®€ºÚ²4æáÇÆIO~XS…bà¯?.™¸sÎób½yÌpͱLÙŽÝbË@/ 7«H5êM1P«RÒ×ÖÄ„f˳€Ä7óyJRP =Z~ý0XƒiäOh„–,Xb(ïÕrÌ©zËð�PâHv.‹Å§Z‚ª¶5±üË�÷%\£’kÖPQd ÃqÇ•9:ª÷h´Meëc½t(£®dE]Çš‡À装˜D+©‘÷9 ï©î‚e“9–z-’| 'ë[1D†WVd¶Ê  Å|ãæ _Gæ ÓU &ÖºëÛ%ö`²©«�¦cš†H×± C%²Ô*årY“×ùdüBŠ"Œ3$%#G}Æqop2§aÃú²ZÔãôkÏ�~´Ï*y‡y©•$ò�óµu×#C´Ñ5¸˜‘Kü<7ÂØM¾$»únXÒ(†ñ"ž¥'ûÜSf)ù%½M6ÍMÊèlÕ¥¾ÕNY°«)[Zˆ¬ë’\@µý½2Ck5á�£½µ¹O¸%×Ý¿ÚÌÊ}ûœK‰j:Õ õù²Ó”€�#ñù]iů›Âjéÿkì€Xg•D0Ùè%äfû³ùQ{~[Rñ„/á4H5ç*hÀÒÐO²Ž±ÙÐuËXa™ BÌŒÊôSá0|¦�×Þ†³ € �„Ñ�çý�{Gý‹÷LJ—ýÃÞÕŠÆŠ‹Pêb,þ®‚Îi›ÓÁän2äô‚xœÞ�)§}rÃé)™qê‘ >ísj‘>§{ä„Ó72}˜œq:&#N}‚žð16pú.öáHrÛš¼¨½ÅLÎ Ÿöž»cø!í,vI eÛ8­DÊbà"ÂS2´]Êvà8I΃Y°^ãòqJ[7iû”Ô¡=¤�Þ3š ³T D`JÔ�ƒušYùN�9AJÆ^®E(QÁÛ[|X%ñ.òOép·d:Ë.cÊÒoƒÄóÞ‹¹ÁžñÖq7óI^â—Uãò<ž²z#ïÍyI ØE÷9/cu$‰çwÄ‹�†ã=]B¦!«gVYš»ŒE6Øduã9îØêe íÑq“ÞPuÔ¬…‰¾.BWu‹€Pbjô?{4=rÈwØrj³ÄPiÔáj‹©'ò6h,›Þ¥·C1H—~¨Ø5$Ò'„Fé~D¶1]ÝX‰Á5œÒÝ�Rä51ÿXÕ"ï&Åž12!«Êvº ˜'–P_&¬£Þy= ¨|&ÎN@ß(�râI|·eü¶* 0“•‚€9…«ˆ—äÏ<Ú÷h%8 е­›#PGfT f�ÙöŒº’ÕäDÊ´¿—^ÃeâZ­ŸmUlfêÌ¡JÉmoMéel—T²�ØêcJ�XKl]0‚ò³B±ÆL)jÊçKò‡mQ÷ƒôÖã‚íïP=[\øŸÏ#øÁúŽ••&|££©M ɉL5Ûq¨QjmÌ÷µ?ØOA=9a|]£¤$�Lkvc»SÄOI”©Iº%³¼0v‚Öî8¦ØIÇ×ÁRê÷^nAuòá¼Á®]ï¾j÷Rü?¬’pY°vÆyk‡‹‰bÓ‹R.ÂÿZ»T2y&"MÑ¡åLÇ�n䯒õ²Ú„©îF>+Ü�ܘ,ÊŽ$»Úª}œ,§ÁÞÛC�Cß�#_iL».6£gŽ…5˜½ŽsÜõ@?wä‚=ÄÚŠœØë«î¡£hœÙ~Î*vr¦t¨?éTë2±#5dÞúá›®�Ù‡m(Ut¯®v'ZØp :RËæ­?�t5lC`Vâ<óãY œ°~ìh—”Ì 9[£h­½ ¤‰wˆŒ (^­Öú§ÜYiÒÀ&ˆv�]-aK^œ1=S¼qá…-×±‡„A¥„ÛœQlÔ¨œíŒ\\“Þ±£š”²[ߌ÷´49,ºi[UË91ÒÈ{Í·êÝÔ¨�ö£¨W+{�"ç\6¡iC¶âFA°½»Œÿü½Þf.�ÄtØ6}äÕZù(¸—eži‰Ë©ú¦CV‘¬×ð²¢DØû³ÒÐÇk€wXñà5ú~� w'{¬×á6 S¦€îùZw‡ÆÎîçd}§  ½,õ‡gšì�=,r¼ EÒ–…ÝiŸ±pÂY8úS ÍYØ.tó§ìÕ†€>g�è–g= ;j>ŒfA*±—…I'Ç0›_=Õ›íù¤êfïözMO¨Ž¶-©�ý†ÓnIï1 úåy¸ÉKíë�"«£žƒ31Ýó¿àIâCbn„c�lÝ,£±+;šÐíVµÌ¿…ß]–ÖŽ¦¶Ž λ1$-Ôm£øáÂKdWô)‡ì‘J?S× #_Jèˆùs<´ßƒ3¶ìd_ðƒÇ[²ßžj ÖŽø רÙd4Šë<Ÿj�›ñP�*ý/úÇ&ðC¯w$… fÓÙöþ˜VÇ w•x~íÑ,”âÀé-y$͈F²ˆél:‡F¼ÈWÚvHÌ¢uãÄmŸ×µ�qömd4TZ�SMÛÀƒƒþm�}58Gî3Qß›´î³€©??ƒ¨r1Ö%yöèbÅwéš~Ö|Їî7µ”¤êÐ?Õ¬Sx¤ù>ßUseWõÍé§¥“ѵnNß…½i.Z•z›Ð÷³ÕÑÕÜÚäÚ¤Ú6ìùŸyÎÚ�ö²ðet£ 7Êe×jáEƒÊ££¹£‹…³ú�ÕDD ¨ª;V_YGŽéðNŒÜ™3�•Ÿò'>º,â„Â#ð'tÜ Ä«MÐËv¨ßö¤Ûñ:¯‡êI¬?c¨¹îP÷‘³p�ÔŸÃÏYyÀ©¦'”·vÛ—�(Ç«ì8uÅAdíIlö¢ý~—¢pù0¸ tz†òŠì!*|óÁï‘×xÊÆrÊ/¥ <Úõ�—¨a¸± ÀXÿúÝî67ÊlqZúÉrÇ7ÃÙ´iC &¤ß«�å0˜µ!©œÇS¾�O±èLÉ·ðü} È@B>•k�¤ë š„Üž¢0༠9W¡|¹͟5¹éI(c^ÞñÃi¤ ½M Lý¨/Â@üÓf.âårÙ©óZ°D=)1/Î*I’ôg.Óš»¡åx·\2’:íE÷‚ƒÀÒ�«ÂŒºÁ8g"]qCIV%€¥¾ïÈÔÂÃ’‰+Ÿ6â¯^ÓKÑzøí[�‰*ÐO¤¤hMƒÕ¯*ãa’àÔEˆk{£4è —WGbOx/±£üð£i@Α¾€×’&˜WF21–¦TïÙé.ùJ·4/³|oW—r®·Y¦7ýM7íÑ30ì éæÚô³„Œ-%¿Ó’äge¢˜ Çw$Àøø7 .0ÞÃ~°ÏWÇG—/íí•õ{do“Åà—[ý|gŠ:ÀðƒÀ²NOÜé±…àßÓùÜ™[üۙ̆'"Å2☀Lrˆ€!úrE§TŸ¼ï!Ãá Oùƒ×ç}#ØO°i|bÓL&'Cn»¤`»�°—l±l›Z,¥ðJŽ»'¼Òuè— ,eOªA–V¨3�%žF¹$qç— ŠD>¤ IŸûµAÉÇÆë¡EŠ6’6WÍ1Çœ‚™ÂËòwIÆæÎÀäÕ�ý”æ¡•ÔÄ Ñ$ÆB2êòbšÃýŒ‡Ò6-Æpç%Dk6x}z« 4Áæ!… …V<ˆÜm ,ÍÏ1¶J¦ÿ¼�L¿ 0ó©4I®ÎIq*Ö–äæcùjM�÷KL{4±JR<³iÓ)ËÙ”Ïw¨Ø)VÏ(76ïÉÜê-£–ÇÚ¤²Tz‹ì扻ÃA8u ¿ræò [ôšU¦u~ §ÏÄé¬Ü ;YƒÄޏNUNÇ"˜\™¾€µÃ�féX›ƒ’N­Y•¾˜Œ]Ó.ÃWi<ûú�µhª°� ‹¥‰·ÚœXƱôVe›Å:³Á´18‡ÈƒØaúon#ÒäÊý÷•`d]ö¿%�lBµ ½lE·û¼Iš�Ü] .Aî;m'%p®¸+°`h6Fq³‹ÂåÃ[lc•óâÇ‹ß~þñ‡ÿ\¿}yþÓ˾ÒÁê1cÐSï™óìÅ‹#=¢+û‹‹õ)ôOû”>ƒ!`{Ø9.¢ë½âýPõ^5ë�Ki°ôÄ𹡻ÂÜûi°ï‚öí‘}‡@ßE°Ø;ˆ\¡ —bcçì€�xè«€Ä3»3CÎ;$Þ*‹` ¯\$!M»ÇÈKÑW‘'W&o4§q­ÑI ˜<)Xh)qâAHžŠæpTá}à¿öâmC ¹Á/$„|Á�NZ–Y°´Ó€l¸}‹Ö6*}$#{©@_,«*Û!ÃUãÂi)XoR¹qͤ��ø/jÈäYiŠ­1u�€•Ñ0‚šãÇèwÍ<ÕL"ŠðwDK×u–åFÑ¡ÁÑíW�²ºÆ Ä”m,£È•¶¢–­°Ð[Ç2‰ò‚àÈ€ƒ0JEÄ®e%Œín;ða[D4x�ÃË?þR°Ðê°eTŒ®‘Á‡Nþªk]›õ)‡¶ÖâIÍ,åST¿ ÒÝ$;ìÙî›3g<ÔÂCiqœ¡i(ÀiЀÀ�×/ÙylB jãLL;´”Ql³ÊnÌ÷èF³H¿Øl.ášñ2m¼H@nå1†JBEòAìG£2´#í’«Gó¬,“õ`bíP 6’^ŒFnl¤ª–§Ö9ûÄ�PFOœü@ó.6½^ÝÃñS±½j ¿Tô×à‹Jk”“Ö Kå ¹aDfA§ªˆŒƒ'´&"#›w©êhŒlêå«IJ$À>³®f—c¨Šâ$ˆ5�UË\™Ô€e-X-ú=裪~Ï­Q³©}Ô§êïÓü ”»7‰ê^쉤ƒ5þï0H:*~…ÄQÑp6öÅÆú—ý“¡à AÅyY¿Ùo­R�o|dŸƒ¿éÛŠ/V‚pàJ§Ws¨&cY޽[òØ/0:*y�JŽJÒèœ|Nò-œ)˜ÍÆxg:WÿMþ UóC?e±l»—ÇB~^]Ä>1úùYžÒ¸S½/ŸÆa`Ë:úDsèK¢AIã©<�7›8b¿þhÿ€Y‘ŠßÞô’\êÙוּýZÁMb�>@Ô%n +üh¯¬·È~oýO!±ö蔼!Ðõ¬D’:Vò`Öû¥µ´ÿk}oýj?\å€X˯xb° ~ Á‘>½ ¢+Ëpž`û;2¯­7ÈR«Ã-©óÛpí]~Úzèö»¡"Hqz� ~–Ñiö8 hüî×øÔ·$¤�ñŒ,p�%^ýG‹¾!×É(ÿeÏ¿—w¹uôxõxu\˜ÅG‹,µSúqf3°ý#d}z s»~¤‹2†s>îdŽ�¸–§;b/-Áÿœ ‡ClÛxp y2š8tÑ®; oOÑ(}¿tÍ&êäÇ…5Ú¯KøéÎ�i ?CÂÏDâ'ã\¨r.éŒsážœ+}_£ídÎy„ñì/ß~û¼—Æ»d\xÛm­~{÷úEš,®ño×BpÓkõC]þ× i⥶;=ñÇãùüdä¹£ÅÄ·ß§öÆÛþPKÒV1]™"å"ž t °imunify-security/assets/ui-app/assets/static/other-root/src_app_components_help-video_help-link_component_ts-src_app_components_help-video_help-link_-f72690.438f93f125ecd819.jsUT ëÆ«jëÆ«jux è‡ì\mwÛ¶’þ+ ·ëCz—ëã8ö]·qâ;éö¸:*MBjŠTIP®*ë¿ï ŠI½8ížÝ› À`^ž€Qcâ�”gò8wܧâ0˜‡lJ¢z†LÚû_¿¼< 5cžÄSõáA‰#wäÌç#7œÍÀ,M‰?¯/¨GBñèÓà){?bqýØNõq×êôÊP_Yf·kT¦:ÑìïWJ“ZÌ"ê2唞è+2Pá•£Ïù¿ÑZ;]8Q�ÚDm÷šKÓCxì´¬®©�º¾Ç5gå†pI\Fê*J|2¢Þ€é4MüðÑñ�¾ QL�l@ôÍ„T÷™C¡ÕYk+6¥±!{ÛLç?7,ìàåå�)7 lúò¢(¢1À&Y›än;(nÙwA>€Tlµ¡‡ÆMeÚé3;ß`üÒ@Uôš¢­×>aµÈVQ0+±v¶Š™Ã¨[ó¡ãe$V™½‚ÅD„%QP Ès�_|T!Œ¼yDâ¸>÷“ ]ÁNõ{Áî0m-x Aà»Ï ŒØfö÷ûÙ Ìâ”�GcçÑ'^žc�؆ì`ÁÇÍ-e*º¢ö`Ë€¥;´Þ0—#~wÙWLv-»²µ¦jk�+ÙmýÀµ4-å:zªL›Çƒ·oa§�e1ÂhòÖ�Ðú# °5pfÄ€ßgø`+§ã$p¨N-ÌMŸ�œ0±ø'ʦªrñõ²®hg¿~·¢ëïVlýë H| ÓlXÝæ�iNù4½œ1uf_Ø’Õnµºšî³j™šÁc·Ù¶ššꬶzÝFGÓ}Þ«i5ÒµºöjBu&d ÜOX<è#�³Ð#µqÕ.¿|8ÍtI0 ò(?$@!ÈDgEOæžÃˆ7P¬†Ù­›f½ÙPÖ§¨ì^AÙó†Î¬‡©Ý† #Qj¶L#;г6Ñ¥Ró¹Ü�â;mŽë’¹4:ègDä÷¦§RãY¾ÓÖÂ.ß)©×�*·cìX8†Íô Ü\íÌ@owJÜ'ì�ã&1r ìÒ¬ tÆÂñÎçÊ¡`Jª¦A™Íã4xcÛyЗj^ˆ]%™‚>(oýúæËÇ뫟G·ç?žÿóRWoÆ »€5„ö¯oAÓŒù©¦&ÝÐ[ðB¿ž¦*zÜÜåÄÄIäÃÄÃ35ß8 :*+'>Xõ‚܇ƒŒd­éoLm 9äËKÅ�Û�›!QC`ߨv¿$`Ví±ãÚ©yªA~óUˆLS�EPŠ¿i𳪑ñ™�vµƒ”m÷ËÈ8‡1hœÏnJßð4ð\å©Ï£pazydLrÍû ·§®XøD–°TPÛ%8ØÍÒuäÑÜ» Ç ë’“4[ Ë:à}þäÞg”ó>Ò»„™ÏA÷Ó6»­¦t?V§Óî§×kY}á~Z�F\•‹´}xðx[¯ÓÖô9<šíV'ðØìôÛà³>ø¯Týg þàž_f~wŠÓ×Vt¬š'Ûdv¸-<°½‹$Š ì¥äD§�(ˆOfðú½6¼o€U):"–m2 “$ �(.(ó“¢otL[ˆ!lÁ¶9$K×g‡V~ècùÔä.•¹‘tú�OÃ篈ÖTP¡Ò4åj€ÒÔ•™Ãê†Vôæ.ÂtÙ–®Äs([%J9»&ð#Ab Fäã+»x^®m½Ù­ñÿØnÑf§QçÚQwQ”°x½½kj(lh$J˜zg� ¹Th€Û®wõÞ!!¶`6ãBˆ¢÷÷*�:Þß¡?�–‹>¡‰ñæ/ëàžàÌüæní’|HÆûÉäÛ5¨„•W‰ÀøŽÎæ`a”7<ÛœDl‰"D3€‘Æ4š)fd‹ÂðyCqXÇ[8BReã.2V0²|3ƒÈØ„¬H;eôOò™Äa¹äKMf££A×õ;- ¢¦Ð)å¼PN¦0=µ$|âé Ÿßççgc 4É#ÁTé-™=ïmßjM¢ë?o�ÿuvæÌæ§ÜÚ2Sšî ®ƒ[À„1¸iù�¯ s£ÜS€Œ úÆöÊsâécèDˆ»ŠN( EÙƒ yv| ´z=EŸ9þ³N…ü@ÈØÁøJê98(¦Õobb@æ ÆÒ0¨Ïœ¦Âí^·”êO$ ˆïrVfÇ„ ïŒ“·�BIÞNÐD!ДßÈÙà›^gëÍ#äêÉ^X¦ÕÛzá‡îñê"o�÷VÃÊ¿@–`}Û“¶ ñÎS9 óc‚«ãLšÝNþu2:¦®“½Ù­ó›n� Ùˆ“ÇØV�p�¢�ݰ%C¥Ç€‹? t|À6shUÙˆÁ$™ªœ)ÚCc˜þdyŠ|ª”Á€ÝõrÛà!0|LØ´n 5M8¡7&ψ�{kO7ëRlÛÞêxr¢BÞµY¶ò¢å´Œ»`T5»JóÈPÉâ‹­!†kÌO³øZ¶7̜ݥ’8¢Cl<AESÌ^‰§ÝÙ¼œ¾H«AM/çÀt ‘ ýmà7Ó¬?‚ $WÙAÌ+…mb¼gê±)ü0�‡¦„N¦€!Π'g”á€ÊÏarñ¯Æ-ª† â8¤{ #�ÿ£$(XiðIÎhài ‚nˆ½N j{þ€ôæ< ÖŸÁ �Ó ¸h9‡´±># ”ÓÚd…± ¾æ´6‡œ bD�uù˜Ž?N|ü9!(}!.D\‚¾¦r-¨+×Õ¢Qoö!õ´A¤Ae4§s"’ '^n9Èq²ô±Þš•Ûd,€�šìèVpù¨ Ú!`#n5%ÓÊ£-®µzPð“å.0ïw4ðL>y:l’Aãs¬£€ ÿ�Ä¥ Ç7>wÝ5nfºgÜ8 U]Ÿ?ê㫞L÷�sÃ-pê\ß¡›bpõvæóš±m<µjÆ<Œ)îÇ ––M¸Âx4Få@PZRçè�¿™9Ñöÿ1d,œ j¦5ÿƒ·�i×cp§¹6ÞUè7´¶d+f›Ü0( ©µ–á#§qC?ŒµköÎßuš¼‰ë<°£ùä�ú$ Ÿµ4¬ v®s0 $«-±Ý×±f¤9«è¼YHC.„2þ6z²E '„bÁk0zØDg'>_ðÀ*A¬F¿Ó?P¹ãE7ž�%Œ0+a8Y…K ­vSV@ºf§Ù•X^-áxÇ­<xM<® sà m¿*Ì}œÜ„^"kF<Ê­«0 ~«î/Â,š¢º‚¬,Œ0ž8DÏYÖ:5¦z˜Z‡l‹Œ‰çòÔ{ÝnÿPééIœ&mKån Ó)æLN�VàÔ¬&/N„®dnqÉCŒ‡‰g¹m“„>ƒ«Ÿ�´àzuýùò§óFï¯ïÎß}¸|/3é7 @© Ϙðß3ð�ÔÇšú†iƒìÇ7)wV+áÌßZì4 O9°EŸøÝlô™íž4 ØävépÂ4½n©:Ø3Í^_T¥a}°Ýj÷d}°Ùh´,Q´LS–-³Û†Æ™4HY™Ú¹’ŠX7° òï‰ râ)•Æéæxv? ˜È:«2޶1^±t,++�R©7‹“ö)•kpdV¦Jëo»ÆhíCµÆPPÊ®qçTdQF‚Õ¬$0eŸVLì:žóÇÆÐªÔ”ª d‘×BÐÄSUÃñ¼ûðz„ÁT˜ô.M,«º”ðº X\V-,‹òLB V™Â¦âÇágQs+wÈu%Õ�¯ÁX³gˆ¶ÞÕÙ>& d(Kƒ?|ÉëµôE•NJýÝRÊÛêbjaÌŠbê~ýK‹©bƒË—ž¯a‡ˆËó^¬@¿£ŽIŠSÝQ§,sËÕ)³Ýs§N0!ר¢*d Rga�rÅdÈë˜%ÅÙ€TSéÝlPªuÀBJeË+*êCÁ »<¬wú…ΗA0ÙAïf Aˆ�ûˆ'Ô¡ñó'ã|ÛÄÖ¥¢bZâHe™Ö³òa�Þž€,l’Å,ìjŒ0ržUç cp1ÞðPÌÛ:•U!ˆÞ”檊?•6fGåà •oÜî.TžÁ•‹7ÛEׯƒWËÔ¯¾ljT�—meéÝ\–.Žj”�é#õ)[ŽÂñ8—žîrœ˜ú¥J”™e>£ÿ[9§ùû†1»ÏrwyørÏ5~gö¹;�æÐ[Í‚3ÚbÓT´šÀ:DÐÜliö˜¬H:‹k8&Ç|yQ1¶mµä2òÝqý�4:éßÀè_^D_fÜ^~¾¹¾»»þôñî Û[M¶h$Tp„>[�Ž· û_—×%F�·:þHFÙü4FY�[õª|¶íŠlÛ3>½‡{ùIörïM‚ ÷RŸïû•¹ÝZowûoþÌ8l½­†­2Ép2e¶[%˜EØÚXÔãgÙÍF_ÀÖ¤—M[%ÄM8Aqí,C»Ó âŽSˆ+ÃäèXi,…pŽÎ)÷ÂeŒÂåw6Þ �»ä�Aº@Tì›ÍÄÅ0yàÄo†]تü¾Y�oN©ø�Nêl“{ˆ%݇¡ÏèX ^#¼Æ@%Í–T =­b„o«!®{ ”e$ޤ£™P‹ 'eL>ïÅÓ“¬tÅâv™¼âV^Èj×~”d©æöQ30�ˆ«uÌy"_`�|yÅ.XÓ ‡�Õ;$7Tf=]…ÑÎf¬­wìÌŠ�놳GPŒ^UÔÔ‡muæQ0÷jµÄ{z[|a‡¯^ ªC-[ÛF!õ†8áðNNÞF¶³{ÖûZ}«©Ña}Á]ä{Â8výLÆ%ϸU¤ò¡¤r�ÿ:‚Ê3&GPÍ�?� šÚ?L•dwNPì½#'¸ÝÎ ­t3šþ[åC: Ò£0œm#ï|TØ`ö}@ÿµ<�E{Àú Ýv¬_¬Ë“�=!T‚ì äŽ"PêõÞ‰ Z™o šƒUÖÀ+dß•OƒfŸNšŽšÎòg?•ˆ”£Èˆô|!>™Ð%U_>çqþÞ·À !žÝN_€T%†Šlq¹Y¨2Lâ‹Àªr.R»[1Ab±,ß\û{«ž«ðƒO/½kŒŒ~"ÎÓ�3?¥`,Õ¿¥c3>¨`"‘­Ä†ãWò ` ‚ém1ÇOO`�"ÖãW9/f Ž»¢>±•…|B¬#7ÞÎ`+5l¥”µ2Có>EtBÇ·•h»iî`o¯ ‚’[~· 1^/)¶!%ÎíÎuàšø,SÌ5pnðú»x‡’­UÿåeµÆ›¶VÓìP�+¾ßÓꤤßì[Ý}I‰ÌD0)i¶ÚmyѶiZíôª-Ï3ªJéRu’cóŒÙÿç;ó 9d=ÜhØÿÉ„ÃÔ“Š*âtoQ0¦ã«ˆ0¹�ÅVã`eâJ^{Ø-Í)Ò{P÷CíÐX° ìŸÂd¢©¾Õ,ü~CÕqz^Š�Â4¾ñãQÈç‹ÞûËcZqY©¨�{Š�è£X ,9Ì[Dé9ÉÁªãßÃò¯`“„úŠBâß…M‚Œœ7w£‹—çËÀÂÀbSóò‹v·Ó8,¥Ú^ßjÈCt«Õì÷DTéwÛVGDk0ª4Û­NS~¿!ÂŽ›Uȼ,aXi·›½Ž+âS3^ê’U/,uõ{f£)J]²6΢Ѩ�.ʇ¸üÎ�¢ ×úme¬ è|NÀ��—ÿ<¿¿¼i@Ø:p@â£kKQGE�„n.\ƒJòPB¢Â­ë­Ó*Jð.‰lº»ÄVx¿¼¿‡ŠSÃuâŠÏÎdˆâ— Î55Ælî.{I‰ïÕ6Ÿ/ê#æOÇã,¼1´D>Ú� ^´ÝßðÏÔ”Kiñü ìûw¢ ¿„½�BPr™ú Hšµ9ÔÿjÓŠßIòéUsZ„Ô;š—Ê8 Æ]~¿£°þÕÎOàäùIºšr‰�Ÿ™! 1ç_ÏŠóã_·5tWÜÀüŠ�¯€D–^]@y}²£©Þáôøw°ØÃé±wU‚IôAªÙQ¼¦ûRíbïãŽßªSmS»öž`—¥YHB<°Â‘e!2Å4˜øäSà/_¦¼WAàFI€û!pN3ŒÌq<4†A«‡Î_õ89ñ#Ë"I©”}»�¤ÁOµ.4¬r爷£ ñpŒ�pdL*ƒ¯Ä]L4õÁ1æCý†WÑBÔqûWl# àÛìµû‡®ø]ò8ù©:Ûî4» y$$ƒÆÉ^£aöä‘PS~dÝ·¬fSDIˆ— ÷˜,«ß‘ß9Zí&À£dÃB…!~§©úÛ¹“ºë ÒÎϨ*zä®Í`†Äq9ÿø9÷Í^ñî=¤Âÿî­z~féÅ�+G;§Ÿ×ÍiDÆâLÄ}"l„ß\¨Óo/Ä·VÅ·Ùí¢òüªÄ”�“ÔÅ~Ae;T\Iå%±j"KVí\'&Ê+¤µãŽÛœ@Ü�ÑœUŒ™G²ÛÔÚ`9ž\oLy½©úâRI“³ï.Swèñ«æ+t;¯¢73܈à7Ù#‡åçró¿2À¤ >ü¿N�þ}Ú÷áŸD ¤K˘Iì°A¡ßò5=—Cãnw\.ö>î[šqY^�1³ÀœæjòsÈ>‰‰¹Ózꥶ>#Áÿq¥Žœ¡PøCJü4¢§�„âüzJvp[°üØoã w]ty7á1¸÷yM7a@¯ë#õü¿Ùûƶq$aþ+Šº·WÚ�8"u+�&�ã$=žÉáÉÕÛ“ñç¡%JfG"Õ$å£ÿ÷¯  ’IÉRÒý¼ÓÞ�Ø$ …BU¡Ž£h»Ï�$?PŠdZ»,üæübic¼�o¼™ÄQöË"oØ÷%BPé 2s¯Pøi$cF6[[ÝñÁX#m|íÎ(äÚ£F $ÈŒ9L«I#·ñÉÔ_nV,^>ÇGc»B�Ì rÅ´Ç`·ä€+�©Ÿ� WÁ€œ }i÷ Á0A¿‚9&è,´WÌv„A¦ çÞ×Á´20 aè�W;ÀÀ~¸è]pj¤˜!ú“©Î¼·~ËÚ„9YÚ6f$0Þ�Ð8!KãgÐU? «ˆ,Œ÷dCo²Þ£hq ¢u´º¤NV"œé¿1&Ç \{IsÂOçÞ‚;ûµþëøÍ«Óÿ:#5c`Ïük�:z)šÔjµÍRý|‰—Lx\83EƒñøÂmÇyð,x¼`rDƒªæöÊ]ÞŽkõW|ê5 n ëIØÕ5�Lò@³—R8bMñ˜FiYžTû—Wî•áJâ·¨�ˆŠvσ¶@‚[áÚž‚R•hµ®{�~zéFmO¡Ä÷ô9 ¦uñÙ…ùS˜W¾ç?v‹7öÒ™I­)TR[@[ùëÈ]ÁD_: îg*w½òkùáM®ïE`߆S{éH�Ù"°{‚V­_«/Ý…]g1dÿò eF#F/6Qä{ª¥OÅ õ:øÃ¢Ý6AˆÏÖ¾‹Ò1 wC,F°$m£ÇÐŽç±zör Ï;!�`«0¶wmÖ±@*@i<‘~­th�»ìÍ2ÊݲnŒ9p£².1yÁ"@ª1›îÚÆ«;Úõ�ÿkKµ{æn`-DÀ¡À­iN/†Ý\\b�7ôÜé§âö óZÉr�ïŠgþ&b±Š1ůíÙŒÒ�øð¾â|Çsº I­ZciíµødƒÅ…�Ξ¤–üOÛ°šÛ@ÃØÑv#tõ#:+Û´ç6ôÆþϰú͘EB5åÖó�28£´#ñ�ÌÈÖcöÅ"ý vnZŒéh?¦mÛâì‰~�ÜhÓþ„aÖH]ú©£¾˜hb"íãO �ˆÄm‰@\m�ʘÝL'öE2CT¥ÑTæx°S@ÛA|fˆÃ"ý1E“[Ê»ÀÆI\/×6Ö�ºóÀ¿~@Ïðušp% aLcêã�àZx­©ƒ[ûkD#Ö`2çîr˜eµZ/Ø2× =ö*�’´�¨¸¿ž£FUÊõ“£Š¯L™8TH¹»KSzZ®ÕXrR!ñÝÇ™:•æ ]ðåw¹Ç1%Ï)¿›ÓÿøuÓ /í�QÇŠFÀïßM-ü~ÇŸÃ#§�?©ƒ&âÎj&¼—{MN& [ëˆsí·– òêhÄñºŒ(A\úaŠyîŠn�{¡Gx»ÏN9›dG²ˆæ¢åž‡øÒ™Kp?H-гŸ”ð”ªÚ;�ê¤Â?Àwž“v:Yi§§JË?$Ü�Á�£•K%‘§ÛÇé¾éL‡�ÃÐ_!êe¶‰K}ú,˜ðè¶ò„é¦<eKµß9£yßyðñP¦ÐN‘/¦{=£&F�b¯i6=ѯm¹à/�[ÑÀŽzZ=4Sg0ÄŸÇ'9g:LŠï”ëTDâ�ØPõÑ÷?téÊpÚ©Š�µ±ª}.\q Ä–«�þmàPÓ®H\J&z<·¨;ž¹W:%%1ÈjKV1Úî*�ÆÞ!^\,–úG­¬l3fVÞZÕŠ…`I 1Ûmö$ÖÆc-l¾ôí(¨Ræ6Ó œUÚ*g˜V¢Â¤W옅§Ýþ¯ƒëfR¥)²�WÓ*U;®I%Žü õNk7%lg÷Y”³•Í"£\nÓ'uaÛÊö`�á¿¿”ËÌJKÌÇf¯ìC«Ø9õR¥™*Tδn*2íÑýêþFwßoðè±rôöÄ0Øó—îlæx�cu'yã,—î:tC΀nÄ^ïµ++»_õe»ÓBÌþ`¥éùX2�í‡a$»¢ðpÜgO(ì Zÿ¡Âê(ÜÍtóÚ+5}MˆØ‘G¾ :J.F#U|–¹Þ¥¸Y„ÂQ/¶‹\²T~­üm­¶­·Aֱ눕ØÀæ³Û–~À„Ê·çþ&$oµ?î [ÓÌnÕ3ÿw¼HbJA*“õ—Iô±Q¹&v ‹FwáTw—©õ@K[††®{e4H\è°ƒÂK,0e’³'†Ò¯ZEËWÊtÄõ9aÚ¯¡k7÷ì‹U=6aoIþúV[°tÆßp�V[Œ­ì:ß ‡ßjƒWÃaÚªô/ïÿÒŠµ†d6ôë›&kwسRÑÄ”b¢÷Gl-¹§Ãă$ÓAˆƒØÞ,5¶Im;NÕöaÙØ0ˆùÐA¬vjôjº];6�ì*ì§�s4¶‚“úƒ»Ö] TÕçhUÎÛº$Í~ ÜK—ÀYr�à!6µ=GXGÿV³Oñ•æ~þPÃ]î4œ~Y2»�‡SÍŽ-0hÓ‘;µ—BëX¹³Y²;µ¶¬¶Jzl<ó¿òšïŒÝiá÷Æ6ØPÓ´�ÙÂEDKùè]G3®‹9_ýûâNbCPQîV_ØF¶é ¬ÞÀìZ�Õ^þ™‚Eñ6o^ú Ø&òeÃÕ{RtD7þch¨·iàë} 5áe—œ9GÒÙ« N%�0ܶhÞö%G_W‰;u�#²Ö›hü² #w~ÛºpœèÚqô ùK˜*ÞùÀwô3�j.c\Na¶Ë ;H›á:É•~µÏ[Ñåfu‘Z-Ñ—~±z�‹ö ¿í@t¤?«ÍyÛìÒeÊ/u?ÞÒéÓ»ðl¼†Ùi²«rÍkK ç`¡Ó,zªEÓì1<@[ÈL’‡­Þe} :m!zJŤ cáe€ÄÒ—ú±H\mf,^=A;eúÀ(I{J s‚sºKšBèáXf4¡Åøa±TiJéeÏ«´¶RpKCHKx.Ý¿œ…~çôœŽÓ‘7WJ-Õxü÷™J)Žcí|¡«Ñ`Ôi—¤‡ù5W‹Œ ›ÒþäSýêgÊrdû)úµ{ÚºŠ›åçV&p ãô½Å1[�wñ'~:aR{«XþuàóijÏ0'@>Î:i@s¡úãz‰êUMþSú%ÿåwSò_î¸b<ƒ½3-¥MŽ”Ì?È6JûDyEöß}]QïhÌ,+¦ö‘ÒØQiª>©˜ÏÚ‡)ˆú£¡ÙcIˆx~>ZLmØñbj¼lÅ:©U±ˆ“Åf2õõzöu™°˜'©�0S_Ïtá×ã¤ØÅ)6µGðë+aH3&½I’Ð^'¹�n’º‰´‡.fGºBhú£Ìç––P´pÂïhƒ@{’®òöy"JÔž%9’ž¬$¦¤  )˜�EUJÎÍÅëéJ9 «ÕÄò^ËÙP�–ˆªìU*e†(´I“]ìµä\6×Á½¥ªø“J½TPkg¸°ëX¦0}q¸ü¢l_�®K,Uq¸©¼D]“×k{¯ÈT‰•†)iò ™iV+ÀÆÔÎ�h6 õwH6œAœ¼Ó†¨×2� ¤úQùZÆ#‰$êb‘âI‹Üñ€ue••†ö¡É?ÔSÉwɧ2Ø‚,6Ñtò¼\!(‰|¥¢ÕäQžÒ· `hSX¹IYÙ0!^ùCè?14³r!˜Hl‹z‹ò¼P²Dú¶—ïè1^X¿®MÓ˼/-�ší7ð€ô·ÂÁÌÁ¢k*“Ä[› oGé4\"!,­™3%3²& ²!+r)tÅ%s"e…/ŸÛ‰‹~ˆô°S–:–g„]R?§RÅ–”Óá¹fyÍÊCD‹{†‰”bëÌ'kMáž{îù ;¹Sj� '›Ìð˜ ÕFk¸‹ïVÚ$ß—1Ðä1aµž_áVZ¹˜ÂDQ“g™®É#W«ù°Žs»ÂùR¥Ô�t2Þ%ÝÅõ^0 ­¿‰Nã’,�¤òË’V~ _¾æIJh†Zúø.H£9V�G¦|Å?(W%[¡óþМ³�&‡úÀnƒ8…WŽoŠ'9²¡6’ÇOýÙ-¹Ã”\ã»û{Þõ”•â)‰hÉíBÝQd*‹ôd2e¿y}þìù«£×ÏÎß½VSišmc¸áL8zŠ/ø³Ó¥íÉ©wãRwgÙU¯Vï‡8´â*�îäÑ#÷'à8A¶æÒ8zœ®…ô”J›1ò&.3>舥ËÙ,(&”]¬;y �â£K\p$lNƒ|¿Ê«›}t'1ê¸×\kÙTdR/ž¼!«àœÐ×sLïþ›±—XâC_‚à•ú>µRwÈ ÆÉw)îí¦S�<õôcÞß &Åäzb> †Ü Õ<'ü`¼„NýµØEÌ%•‹:_¡*··««’и²×M\Èè‰Tq þHJN5iêê%«Pn6ïŨæ�Êò޳ìÜQj +z›s–—;&·òŒÎÁmx™™Ôê–áãÓÙ=Éžkcåi·C1­£ %ig•ŠÍ®±àUi«–�(me«Êw•~Esw—¶Z« ­.±äVi«9æ/mun<­4ç�™å¬ðÑ1Ö+mujœThõ Ⱦ¼Õ›âê« )ìx2éŸ�Q’ÿÇÆ n5õu3#ÅÍaŒÏ¨$êëÜþŠÍ¿ »]¢�" 4²[Ñ«+›H“ˆ¥ÂÇâ®ÀðÖ›(ßqV9ŽÓ–ßs;c'—ÿU®ÂLˆÿ•âÄÿTÿ3@„* Ö˜‡{ÿ$Å#R·šoÔ÷í˜÷íj¨s‡í¯AÙƒ\³â›üLcíM~!M[ñU~¾;é*Ÿé� †Á1ᇻÏ×ìCJzUP"NÙ’…ÑU¬-›ë�7p'9XùÞ¥÷,¢6¯¸×Ûu£þàyIë�d›åŽåWD>ýNá€)¤Y0ö>PÐÃ"JÐ*-¢[®ëIZæãÂ>õÍ“çX?gìÉ…Ÿo*�M6q¶Ø7_ôu¤­X¥×BîëXDì’7¤Ï�S õyÑî.îe¿ìé´Ëãa;J±(Ê, ¥`ÕóBú¶(}_~RË»±t¼Et‰5­JKi"E5¶™œZ²¢ÔUÊeM^fë"­ÃÖ}0ë°æ¯4wý!YËß ~郓šmrãˆÝüŠ›}´u>ݸK©lJEæ÷ü1£÷ø\g^²¿„ˆ0©_FÑ:ÿùÏÐ\â3xŸúgö Ëà ÜÂJô@†-€žÝ@ûU+\;άe{³–3Ÿƒ÷mëÚ�.[�h½­äÌgw‘Y^6 Œå©ô8™ç$;c}ä×�»{Ž:7|å_9ïý“…“9¢T5©c�ÍVä·\ú´zDŒg^làË—ú3§Å<Ÿ¯”�ÄâR•õþI\Qïd=Ç2Ë s�lGÀò Q�ÁÂ.4Xàþº”á ?8¢%|ÜP²]à÷ë“×?Òv!5Zœ*ÏmÞt'ÛEf§ä­.ŒÿþüÙÉÑË7?ž?;z”Û~ªçŸ+´rѤËöB…ÖSãÇ ­fhiÙfdzCTúÁºÈ4“ýºši†sVîÄ'¶#Ûåh~áUm m¦ÿ–ÆæCo ¸ MbÖ1³Î0U0��G ½U½Š�îYÐx‚ì\]ûM:dùŇ(ùÆoG$ªø–CšÄ•K‰Ù©TÙUùEjÅ …_¤ZÔÚ]Âй V¨KT'ºTaîXºÜÉË*‰®×O¡†­$É+©ÚqX5M«#*F“>’�¦°N[™8µ‚2ör��•wdÒ×(òü_P≗:2êÛ‰"Û ætFTÂD÷&š¼ôÙS’B`UܾåÍ[(©ÊsŒ’)†!fRbæ/ n²šzLï7Ä'%a¯×/}æè‰>.¼ESII£wꢲ:ÍqŽ%¤aÛ´¤Gsô”$uRû.yø×ç®7ÏVJ]‰vT·â…ý�£ô^ 0 ôá}w¿u‘_@¶ësé<σ«™‹Ãýö²!¬*B2Ï.hét¶ÐØw!¨¸hgäÃÓv‰Ü¤öå[ß�Ê÷deŽèU2�â0D&tÊ›û‡Rû:ù“oiy;Üé(¨,[(Ć}Ze1C³¸rxª’<»'oUNG¡cÓKêvcî嶘ãÅ»×·-ßkñ;<ˤǪ ¿i\±`–pÁé¥�n‘èƒ aªt~‘n^£¶œ»~°Tlj¤þ$V®¨8uØ´º=6·<Ÿ%Y‡8Y’ œ¹8Œ°*|Y¨rÁ6¢m8�ì´Ó‘ÅüÞ÷—‘».rQ� tgŽk Áp˜,R DoùXEݽ`IÜ#,ÿÓf³Q§~Õ§@;«âXI×4ÉÛb®=8Ü=‚Sp´À ýM0uÎÑš9™L\ã-òÀ!ÐdmŸ/C B'ÞÙ¿ª¶0â8½�?l»� w©Y¸KµBL!ƒ¬ çïFu&J›¥Tç_KØ;Ùõ·§ºùÈ�‚SDU[œº´¯¬hûÛöº#Ë=Ãt#¦úA$Tpb(è½\ì’¤ƒÜiVé^U›ß�‚cV%¹Œð÷ªl�óëÆq¾ºå×~çIY�Ô×°N®½\Þžsg˜Yì|›rúi&�Oð0&°ÃÚWçô^ù•½Î.—¸âKÑr0湦|ÚÂ-C£¦à=³¢Qº ƒïÿì0^ÒPðx’ðÄžN�uäÌÞñ7euÉ÷[¥=8JňN ›¯h÷Q˜;!'%(ÿUµÿ¨M©…[ }~,ödz¹$�ì¯À¡¡ûNÚEß�]ôeadƒ«è@žôU¢(ÃJþöxK}{a �ïc;v!k�R7²´1rN`‰™ÛV~zQ='Û¶¶‘i¢è.?]º+7OÖHðTAg4†·³ü–WKrŒÑ“+ÐCZÈ¢éâ3õWqÓ ¨±7K†L¿¤j.^é"Q¢‹(²kŒm†ß[qßõÃè½-‡Ï)ÁbŽ�z-[Î îúT—(ÊòÛc¦!tI¾3ü/±_8l˜w²ø‰ÜÎeÁÛ¨ImSO©aÌù°c‰âj±ã¤ß�PTR~ÖŠcf¥X¨gîÇeþsÈcL³<rv§†‚ïH¬‚â:?® ”Dç$Q—Ž`"‚ Ä"P_„jƒi1P€ý‡b]ï°ƒ�_\;Ø|ÆoZä…å"¤^í S'ñ`,‹~Ñ_Äô2·6V3v5�:M´Ã¦©L�’ïÀ±Hö:(/»s(GePÆ&mÑ%ç^ý&êÏYÅÁRiÚS¦6õ™¹Mî³¢ Üy²zÖȳ­Y:‹‹~fâWmƒø¤b{³Ecª8þ0=>êG*Ô›*’g‚»6lË*ü+ãÞ²ÈK2 fGm-4Ë ¬%H°:$˜°{¬® ÚÜ{ ¥V`¡¿Uö½"< Èo¤GràjGVÝ“Ö(Ûg·Ùè´•(èÁq-ELí�O§Ø@+Rj7ng»¤…¥«Üée§¨â&I¨bŸüÇî:ÐmͲ}Î~Šò4T½¸HI£ÄËÈý˜Gæ¯ìɯFhŸžLò #2R[MØ|‚=Œ#á4Þü?ª Â/_ ºüZÐ}>ŸN‘æ§ ¸mâ#G@Û™1¹ãù6ÊfÊ¡@¼ËtbØ“Ýμ½^ 4«ØÏglg_³©ÏÜ-}VààV4è—¤¶n PŸXí 1åÀ»@Vv”’d^t{˜Á صUÅú«az³Óž�4]bU!æD?všŒcáTv,œ1ǵ1# ã Ù'deüL.�·dn,ȹñš!9…_ož‘7Æ%¹6"rc¼'ƹ‚F·è½ÎÑ@Þ9�/>Ï óÄ;ñ¹a“÷™Ì(Jk¢6·ÈµÌZ�cÆlÚ|üXvO¤IÂÇ5Ú …mǥį¹Ãc¿�.'r1ŸǙzCž5¥*t¼H©UÿB”©ü�ToAWaDšƒ™QÚk¹óô95„8Ê‚0wJÄi3xÓß&Ÿê2'vúýCB0kÛ«lÖŸd»Øº’à{aqZµÌ’YÖ:YUýu§ðkµ-Û“\Éqs! VŒ—ZXÊ31Uk0LJPLSq2À�Êr ÁÀ¥¨¬Yî¯iµC�§úVé2 Ð(Òe°{9üKû±¾â[ŒœEyܤ4æ?2jW5êͨ]–©£0…Þe©WùÁÄœS¼*BÔ¥Éjˆz:ˆú‡„h@�kjIq˜Zž¬ÊʃºåFÛÝ·-´)ܱj3«ÄlH „z +Ñ×hb2Àw�C‘ZŒ™ ÃØdù³*þ)a4ŠÙÿ¦IØj“�@%À‹ð¦‚@(žoÕÉZ!]UT_Q]Õæ™Z©7�Èâ*©fq Uª¶i�®mš2u.cS§&Ûhg%ñ_¥…*±¬£HP=1NŸ¿}uòîÝÉ›×ï?2±‚ÃÃÆj”ç ©ÚËsNü¾ð£Ã3$JÜ)<*›²áÙWîKby4ß³Ç\i G1Ð+«#È€ƒ¥Âê…4w*ÏàÊ�ÜYà}ê#«;è)*z2ÉŠ‚”ÚÆÎý=-ZF?¦È£˨zø"ðWMø8G=›NãÎ�…c÷¾™Zˆ5«EéU«'ɽ%pûÐïÃk7š^¾Jzឺ´ªe£ûïdwÐñ•ïÎjíû&+¥Û£j•F±ô¢ZckSãªùAŠ]�š}˜eÚa×îýÄ{ñl…G02ì:ؽŽø=I §RÙHå 8аiߟ¼3ùä9U‘Ga®P4xÛr‘kfÙ«ªÄãuŽ;ªŠ5Î*´ZaIÇÒV—ZYÚjŽUK[Ñb�¥­Ž¹g¤þN$Û…æNäoé;z‡·)/‚˜] ¹ bh¼Ç›Ã‚¿•¼ÿÞ§,¤™¶¹BŠ™÷ŠBŠœ~ã2ŠÙáwèRÖàöÙ¯Äaåª�<0V\4õ c±Žb¢Tå‚T1Ìt°›•‡ϺS𝀱_).R+îñX?’×­L@ˆlæ tØbœ/Ãþ2S–r¾tnh$¦½„1Z ~DôOꉊk±ÃBG®O‰wû(ý´èeó¾€]”v¥,]³œœùa±½ôVáE&7ÓL݃…ýR ád`ˆsJ't’U}Èõ¥,×V¾½Œà‚2Ÿ<¡vIÎëR5³(Z4'çKÑ¢gÔÏG‹jõJq¯¥nÐÕ6xx´h¬ÇIÑ Åhqe6ßžýÜr ±s‰êÌ6ÒBê}‰VXY»o+Î Å]½Æ‚Ÿ¯@ÃN%?-Èñ8õJ]¡Ôº½ÉjÒžOÝ`Š�Ø›h S)³•• Ú�ƒùT„ÊÖÞù• ^¾¡Êù¢©µßÔ¥XYZ×ý¿‘C;ËÊ„Äjbµ+�FM@ìVË–ˆý«"ÙÔš`ªá8[€á8<6�ü ñs!š½& ŸU`?ÏHöó»Y ‡Ý öGäÇ`?·å2ЍJ#n¿#?éXäd„9A%«‡ºÕ5«³çlꢿÈL•‰›Í뤈 +Xq÷ìV¿Ð$Ø/«»© �-è´K†ºøXý<òt¨�VÍ6Ìgpú¹h¬üPÛß~`ph[y¼ˆÐ>*Î>“‚Uµðä÷þð 1*¹9LuG£*Ÿa⊪«§ÌGâ•1#oŒ7äÚ8!7ÆÏäÂX�+ã5¹5Bòþ=1\òÙˆÈsŒO|oÜ~&/ Å‘qIžÁÛ_à ê̯� òÑø;yj|$o�%y‰%~…†hxcâ¸ð2å¸ðßFZQ—KŸÁŒfþµGÍ�ê›ë�2Ú¥V[º³(£¦Æã gŽ…6:‹Q,AºMŸÛ+wy;®Õ_ñ©×N¨ê–¨”Â0ésŠ5Åc÷7xju×7�kè" ù¸Jn­ÄÍ€þ)*T˜�ãˆGz`!/—�{€­ã½Ej\,Ê"Bå§´ =¶§Pâ{úœÓºøìb¼òýè’v‹!3 Û¡3“ZS¨$×€¶ò× ÷ÃD_: ÷Â]ºÑ­ÜõÊÿ­å‡7¹¾�}Ní¥#5f‹Àœ`ãÚf° ˆÛõØ¿$«ˆ—†Æô:øÃ`7AˆÏÖ¾‹,!ÛchGŒ»,ÆÔ^.áy'äN5Æ–CV“ÀTU0Ðv5+�š3î,ÐÑ!ëÆ˜›+ëcÄÐ�Ò›�Ùt×6}¥]_90\[ú‹zm`-,îÿ"pkšÓ‹a7KñܨVôÜéóÌÿ:¯ Å×kqoš¡xÆõ‰â¹[Oòá}ÅùŠ�ãj�¥µKPÔâ“ 6(BRKþ§mXÍm aìh»ºú �•mÚszcÿgXýfâ°ÇÎL�~GBE¦ÇW%×&³/9„¡E­Å˜ŽÞ Û¶ÅÙý¹ Цý d ©K?UÐD(õÅDibxXeBß&†µË•§w&óMó�Ø!ˆé¡‘I'¢©Ìð4`§@uŸ´ôÇuLU(ï?ŽÎo6Ö�ºóÀ¿~@Ïðušp% 0Mâ�dC¬ö;Öˆò`2çîr mÌ«õ‚-s�Ðc¯(IKщŠûÛá9Öì)åúÉQÅW¦L*¤ÜÝ¥)=-£ìJ2ß}œ©S `ÒïP~—{¬Sòœò»9ý�Q7­ðÒža¥®6žP5$.øõ»©…?Àïøsxä´ñ'uÐÁDÜYÍ„÷r¯É‰Ã„ê±)εßZ + ¡ŽxP¼ÆÍwgt9?p ¹«p»ÐOø!€k½‰8ó5n?”�‘\‹}‘c=à heµw6^ÕBø8CàÎsÒN'+í2IÉôñSAÂÝü8Z¹Tyº±§ð¾éL‡�ÃÐ_!êe¶‰K}ú,˜ðè¶ò„é¦<eKµß9£yßyðñP¦ÐN‘/¦{=£&F�b¯i6=ѯm¹à/�[Ñ»ŽzZ=4Sg0ÄŸÇ'y*|¢{P®S‰bCÕGßÿÐ¥+{ÀiW¤*vÖK¢‰¾Êˆ-WýÛÀ¡¦]‘¸”8LôxnPwì�,î©î.Së�–¶ \÷Êh�¸Ða…—S;p"£¦Lz¢ÄPú•@«hùJ™Ž¸>'Lûµ™^rϾXÕcÓö–ä¯oµKgü ÷hµÅØÊ®óÍpø­6x5¦­JÿòþïÊ™¹v­!™ ýÁú¦ÉšÃÆ]ö¬ÔA41¥˜èý[Kîé0ñ ‰ÅtÐâ ¶7K�mR›Å΃Sµ}X66 b>t«�½šn׎�ní» ûiã�Íâ¤þà®u×UõùZ•ó¶.I³ßˆ÷Ò%p–\Å#xˆMmÏưêßjö)¾ÒÜÏj¸Ë�†Ó/ËAf·ópªÙ±m:r§öRh+w6Kvǡ֖å L��gþW^󽂱;-ü>ÀØjÚ�¶1[¸ˆ¼V¡ëhÆu1ç«_ÜIl*j#*yµ‘m:«70»Öcµ—¿®Ä¯šÂ"÷�m"_6\ý±'EGtãÏi:RløzCM¸CÙ%gΑt6ÄŸÇjƒS $ ·­+7t�ùŒ2¸JÜ© ‘µžØüCã—M¹óÛÖ…ãD׎£G¨hÈ_ÂTñξ£Ÿ xTs‹à¢p ³]^ØAÚ ×I®ô«}ÞŠ.7«‹Ôj‰¾ô‹Õë\´ým  #ýYmÎÛÎ`—.Sþx©ûñ>�NŸÞ…gã50Øœ^•k^[R8KºÂ¢§XFŒ=†hü*RWxV￲¾�¶=iÏ€ËkáœF„—0‘Ì¥~&«±>ëp™>°JÒžÜàœî’&¿~8–ÙÍAh1~X,UšRzÙóêŶLÜÒÒžK÷/g¡ß9=§ãÄ�mËÃw"ÝΖf�¢ïRÖŽØ~‰aµ­j]¶�rHUåÈlyÏÿ¦¢�uøÆñ¢Ùødë3ò7ŒO�|Ô†DÆ¥–óøiâ;mó8“o|OºmËê”$œžÒ„Ó+)á4O � §û�ΰÏNóÏA’âNwºÝQ›%œ¦µ¾¦4UÞ4U¾Ææùh"ÁqDfcL 8v„Y“LȳL2·ZÞ€ÀU& 0s/ÔUÂJÆQ'7Í|”­lä$7P@«ŒW€Ž�ñV=[TŒ0¿›ÚË¿�õ¤Œ�þú.ÂÈà\ORj�Mm0%t3§^˜Ò¯ÏžJüI~ÞL¬Z«2�ÆŸ1[«¬W?»' EÀ;¬& 4›(tÎýåì|mö*?jË”±)¦Œ$»±z½åd/Ç´°Èè"ÎBëÑwtÄ×Õ Ò«L¿ 0"¡‰†�®ïaEF)´¶§r“ôt¯Ye½aÁ& Da^mžB»ó (g‡âBÕyP³õäÛdÝl6ê4%à)¥âÂoxÆ�ì1^íôC°l@ºÎÑà Hí³S«æöXÝÖ!1 `DKÙ—Âj ^…¹&Wéºk©|È"rÌå&m–Lsǽu0n”f v�çX&ô9­cÜ/œè�Äm“\c,1[Z–y2ñ�Ó¿ÁÆó å“ó—­ïïrm¿|©×ïÿ=þ俊ýèkãÌÎ0Z|¹™9!Ë\ò‰;Í'ÿÆßEŸñsÚ¡ü3&Ãm€*5ï~È=zöô «<3ÉÁùÃò›x´'uÀT}¬E ëµ3{Rg«4Æd¿/P­ƒ_Ũušiö˜¥p«#llÌþw(g§Ë¶š¡¾m*Ðñ¼"t-И×�= Çw1¢Æõø×:‘15®ËÅï€GÄoà÷:KÉ:zO ¹ J¸$ÉZ&OŸ=Å~Ýég”`Çõø×ú=¾Ç Mˆ\O~‡I9½ –^'«–+¤ÇÓ›RÙMãä�"‘)ûçù2tx6L¤–$2Iê^^øv0£F/ššSæÕ).\¡`\ñQßyùòFŬƒ1ja¿HüÄp€‰Ðt„9n)âœÁì†ÙBœªÓ@Je¹AF�iäòyÀ,݇™4`Å"G±08s'pÄY�•(÷}e¯³ç ƒ-êtµYF-L–eëùC‡vv gvœ{,¡c"a~«“5ŸpŒS!føN�Ôl$ÄJ¢|Å-›§tFº$K(ÏÈ2Sž*7w:žVŸTUšÏ÷!6zi7™ºØi4ê¿Î;äÃeI÷Ÿ9¼Jü¸­¨…d¶‡eµ�~¢ªéQ$馼’Ÿ¨©vR)Hê"¡nÚ ±:õ2)?4MJ$a1¤¼²bH¼’Ð"© DKaƒ«†dAÓ.¯…Íj(Í“"Kç´m«a5¤î ƒUJ°’9j�x-ìŽ5uY5$khöy5¤NÔî±zH¼žÒ­@ÔiózH¼àÖCêŽèŒß±rF¢/Ùô™jã½+‡Ä+6½Oê8½ ¥½Û£«‡döúXãèY¢Ùc=¤A¿�µC^'JþǤŽÓSQ¼émR¼é%-Œ4è³rH¼ŒÓ‡¤ŒÓoI§ï“2N?%eœþŠ Ì!,ÿ1)ãô�¤bÓÏIŦ¿%ešþN—ÏB„þ“=µ¡ÿ›”dŠ"ü½�Sð"J#Ì7êDiK…©TRj+G²þéGòy‘p=?Í5@9Þ˜Àé#¦F-È/;XDk˜·¿ÍÑ2åe ü,ãE}ÛáãGͤ q²mÓ›Õä5jù.1!ÇX»Ëå1BÃÎ. *d!—ò¿Š“³¯k§-¹–ÀNîE’hYÖ”ÕãÄ94ïauej*àȯv”ñ„âØ«¿ [ÈÛÖç爼šþÕ9œ ôˆS ’:âÔŸ³{>èÄl‡;Dœºh9Ì"NNCÉSWÕÉ#Ô¢`ìÃÜG)íN±Dér9Š¥Š]ó“ ½-ž‰nV+;¸¥†F¬Ðå5YX1fÛ?Egͦ\œÊŽ22^éVdô7l&T;ÒÑ¢¥£Åδ¨éÈù_7v[ûµ”6œ%–ÇlÑ…edµ-IGÊÓlO)Æõüi¯Û„â¥(x6ê¶;=»Û(u CdÓÏž?¥\½JÇE *§”­¥ÆÈç7iç´4›ÚN¾J™�â#ìÁÀT£‰ãѰo¾ÈÓD¿ M”ƒ§§Žã�ç�­‡Ø�ˆáót²åÒÌà´8 ‘XýãöàÅ!©F!æ‹£Qÿù)D›–<ž_ ^lÙÿ¾h#;GÛ®«Šx 2< ޶ØA»S�Búý�5x(…èÁÓÉóæ‹í1°7:Ãçè$Yš*—Ÿô2sÉ/¥: LNñw³ÛÇjQ3ú{¿�·wëˆÞ+šÝ^“,"z ÙXMÉ)òp—Rgô6™Y¬¼…Y¾�ÂF/\ÏÅ0öÔ%UÉåÔcÍ%VÖàX~/•+ÿ­½”âOÉ0¼:0…——�&++oZ,.÷Aâe$WhU¥òÜ.º9LWFµšxG˜~Öi6:ÙgZ[·µ›ý"õš¿i ñŠÐáß°˜Œmíù0²u^-í)zò{{²–s¾–É“óÌÝI‘±l‘6ü¤�ÐOBwéšÝFiKZl\~³‰–ˆ§ˆÂi*Þ²BêhñDouö»L¥Ç»ÝuºôˆýžßÀ‡¼ÊÓ.ƒ"?XŠf§hR€fZÒŽ¯Ã·ºúÑ/Ú—@Âõwû›B½ÓžÙ‘Í|J�Ù¹‰ò;Þb©tÐ6Vëºðæ½ÊDsú¢ÙÑ�ÒCêÛR | 9FÑò0Tõ'«û?åýû—ÿÓoÃÿÅQ4¯¢|Í�0â¦ÂaÞlM‘°D‹y6D ¢�|‰‡)£Š6=DYÍôn)Áæ‰C¯ò‚è –C1,%Ñ‚Ûñ9æ·ãl”«t³MNKZç«ôê»2£‚-Pv)ý/�ò ¦2$¯"ÅzjÑņθŠ spX"ƒŸÆ7Yú]‘—½¶ß¥}@vá.�ýܷߣh"Úç9 ¤,첚c€tŽì¯«~pÖ!ŸOבþ3áïm]!öN_ýnн|wÌ㦳£x'üu¦ êÌäY]ìæ¾¥cylzÀÀ_´‚yw—ˆ:e{öÊ‘'wUA[Ê©‘¼|¬¥Ê°wòñ«ù&]D„F¤2¦aæ8¨ÎO{ßg½©â"¢p4. çõßšæÔq¦ûsÍÚ ÕZ娵dIjvñȱ9¦¼tvqŽôΣîbä¾ÛŽæ¿f‹è°Sè0ªm¯×o}?⨒)ïd'£Pn!·é$.€Z¡^rÀ.ë³CÞaŸ}ŸIðóvÄב�Ø‘8¡¿ ¦=ï©§ô[þ¥ ßx>|„ÊD˜O!»Ë>—YjD¤|ÕãNu¤á´äAŸïèjÝÑúW‚uL²²?Æ}åøñi‹Š‘ôW• ¿L&<4n¿j(dA=¥[m6[D:§ÃûâØòB¡­~âSûS�P‡AüOZü%lwfð›]ÀVÝÜÅ9ÒðŸêg÷�™ÓìQÚk–ˆ—ø$ !Y’)Y“Y‘sò†\“îT;�“ˆ¹ÁÒÔdïœàÊ�:�?SÏöÜó#wîNi†³pⲇxß³~�zãsG\øÔ ÑI�~Jƒ›Cî‹ë+7 éÇÜe×ÞD—¬ÍT¸þzsw1Yó/0PÕ�E '‹$æ<6ÑNV|&·'«�çÎoçñ qq?Dî2žäöŠÅN®Ù€lC4¹aOOèž\?s,ÊÜj27®øc¶¸?"†ÂÉݧ™1ÿ›Aý9ÎÆò„ý‘¹Ëm²�3­ñj7Û”>Ë´ã·{Ù¦âñ½ ñ¼®›¼¹@{°ñÙ¹!óÒtšJ‡lžùí4å´Í. Yȹ“<ÈïØ¼$wí™ôìß~O=³mã݆"Èï~NÂ㥠|«Ñ”Ÿ¾«-ƒ2~ÌÈXè+ãø¤Ù86~5^±ÕÇÁ�VÈ©ñO|ÄHžéÂAGW¶»D�žuñýoÍFºk²1~~cðÖ+¨2ž„8@ü}£I£óO<Œ_fÛP¾šÐêù«Ó÷?7á?B?ŠìÏÎ6Ÿ°Xè9Ü\„ÓÀ½pä´å­è ­%ÉV2¤Àr ¦ªÝÇa{‘qq{Î(𱊬¼'<��=À¡5€c6ù¦€Ö\žb"EÇã8¶`’ƒÏ/üà×�F™Ç#!kÀ7Æõ‡8aAÉÚ±–œŒíÈÆ‹Â�Ó ¹[‘Ò”¸¯áÿ ®ÐlÊLÐ`wæYt‚¢›Ãý*6‚_½üéèíóóã—Ï�^8…Ýí¬Ïñ`q={I—ð|f߆÷Œ\Ÿ±e+VÉ@ ”Y÷d±žÐÙ?áüáË—»ûÇ2¿˜¯�[ o/Ï(› VBÛ¯U¬“ÃjªùJ ¾8ÇSõÉ“„×(V=µ1î*³9=?SŒ‘Û¯±Ð•â SßÁSE4n¤^Š2 ¬‹&ñ&w¡ RÐ^á¿Ož´ïÅ%6ˆ >ˆ™ü3ÁßWT¥§Ïð— ûz¹wCœØÝ^©EͮԧèìË—Og�㤠ÌÜ)r›¤7(‰éœ+ÉEðŽt³$K ¨{ 'ª%ñ+™L1ÒÒîòfq�™ 4ÙzÓÎh€ÁIäwù(½ ŸPöø‚ÿ÷¾w*¢^4ù‰Þ/¯ÖO vÕüØÔª yÒPH°–]ÆF=æršdtû/­›˜ØÁ‰èï ùy»~,½üd†n©Î°5IQÑf�6Å$Lo¶ƒ¡©ôP¤ç!-Ó )â)Þƒa"õI?8Æmô=& a 6ø¡ŽâG+ò[îÂóÓEDO²B¡ª€÷�%ŽÿÉ0µOãܘ7ÙÉÆbÈî›,yÖb¤k¬ž¹öÒ_PM 0âx Ú�ÊõÈD³Éi ¤9Ç„ ‹nÄ¡î“;ÆÇaqá©Öœd[q@Ñ…ñþ† Ç->ºؽNx d8ÂQ$t¼Ù {:§4Eæ•“AtÉ4Øždaç(Ø\¬Ü(Õ;ýº\šoù6¡‡ ²|ãs¦¬�O°§F‹cïSûì^NV(åxâ¨Êk˜sø(Ž=¢¬0Ü$w3gno– Žñ•ïÎjè:¦Æ[ŠoÈ*¥¬Fhl ?èyœ[s„�2jÝ%ÿÕ�ñ´B« cQ¡Õ•qR¡Õ­Q®wÆÿVhubÌ*´úlü½B«çÆç ­Þ§ZmŒ£« Í|ãc†sUøè…ñ[…VGF>÷E¾Õ3ƒÊ@xmIeïÈ›½ä EÁÆa$ù.•¹ ¹{¡ËÑ ükŠ ÷}|] ÐÒ®³ÄñPâM'5˜ó7é» |€¿ýðÁï­xæõÃ(îžc„‚ä PA´p¦Î:JõßrpŒç:’Ó, )ÈxæÐ<�¤É#^œØ“Y²ôeUêeèØÁôR<¢J!_&TÞÑ1Š.­Ö@— 7Ëõz2Ë}C=+ò­éc³Â§»À“›e{P­¸è�ù½©Û!«)xÕBG…¢÷Ìæƒ XðrйËl:{ÈÀKJ ‰È+’è Ფ½ãÅÌêá­7UÜ¢VIø–äY×ôÂï˜óñüËAÙøÃ*ã�´½dÐf¶óÙLx†EÆ©T´P|�•d¤ }eÑ<¥n¹¦XÕ‹Íòs‹_#ÐŒ!kêMUàŒb‘MDL¢-+v¾í�•ü]*”ªÌɤ¨ß.¹ŒÈ�‡©HYu‹B�Ì^&b§tž�âQe/L†�sœŽÅñj�˜±éP Š˜¼f†BUNºì2�ø§üD6a?ZƒÎÍÚöxô"u',×2É×$#æ@n–9Qõe‘ëÔJfÝPMmpBì ÔÉzBZ]•+¤©öûÅ´ÎëÖC¼×åiÈ NÓÌÄ?™ÛkvîÃÌÜõ”c�b‘–Ýâ·"æ,½ëœ:mr…Ùç2èWìÁ¿Íª¬¯ceú4{ÍF§£\Õ<»yAó¸€ôö³ª�>9á`9Ë\\˦=PM{¨œ¶Ö¯Wá<%ŽÇöž<{MòùÄܵ²¹«^r­{XW»äÝ=-y·Ož£¯ã`OsÇ.Ū‹“³d/çãI¨Mƒ8Eõ)e–xyC<œR;û7&j1y䥮�ãëÐFƒÕƒÈkì™H¬6';O‰?šMz½9ް¸ú%5ÿ�'\” .À¿|ñbC“¸Û%ïóɃS…càÜQl�ÌÅnóË—6]°’˜ /’ö ·¥×«ÙˆmF¼6>’­Gžœ¾¹!Ù’¼¬g¼M™—xÚAÉ+à�þÌžê’æ��M�òI“’§ðU{èX”<M¼Äljÿ�}#вË�•3¹‘Gùô[§ª^SE>ÂÅ]¥ŒhE[§ÍN½ªèÀŠa¯[àû˜ËÿN!Ê+Gð¹?÷I§[ 4ÉZž1‘¡x·+¤ÞŠN>“€4é¥î£�f+×+BÃ>Â*Aî ‹Ð�Ü!m�‚íÁÅT=8�c‡¾÷u`é‘®ò¸°p™p�W$rÍX/I.¹+þC •ä£1#xEöÔ8!o�ŸÉKã-ùÕX�Ækò›’ïáߟ —à%Ù_�§äGãÍ3òã’ü /ð^ ïèþf\�¿#ÿ4ŽiÞX¼•‹"ãUl$^d|$aDðRl¿8¿?�Yd|&ë†YDÆ3€êõ´S@F6õ쉮½¤EcCuMU,>ó¯½s4K©“Mm”)kµ¥»ü)‹6_8s?p<†6Ç“AÊ&9·Wîòv\«¿âS¯�àÔëùdWž™Hi0kŠÇ4;¦…‰mk˜¢·(÷'ýSd5•igãúìÙTµÒ¸×~0ãY|å§šT¬ (Q›Á¼òýè’vk{ ÁµCg&µ¦P¸ÚÊ_Gî &úÒY¸îÒ�nå®Wþo-?¼Éõ½ìÛpj/©1[V3,.€ ˱tv}ûš»IÑqüѦ©•JóörùiíåžwBžw¬ÂØr³¸k³öä¼$£ùrÙDDbÚÒyp ùQž:.Ï̺1æÀöʺ,Jå+2§’≶ÙD¯¦9½vsù`{™Œ¸�>ÀRÉb�u‘$W*ï=Ï|ࢰ$Š�“‹ï+Îw<÷§›�Ôª5V&Ÿ™Þh±w³×!µäÚ†¨ø^mÆŽ¶¡«A�ÐYÙ&Ȫ·úR¡z8Èà4ÓðV#cè/ËùÀzL¹H6Íj̘Ž>›o’|\Îü/õ ´iÂûd¤.ýT‡Q_L41‘öñ'†G”qo‰*îÚ•ß3�Ø¡¿ÜDU:Me€§;Êó§Ó½‹�)ê\òžu î<ð¯Ð3|�&\ÉBBˆ“L³�X¶s–æ\û�:%ºÜHój½`Ë\'ôØ«JÒRt¢âþvxŽ¥+·)®ÇV¦L*¤ÜÝ¥)=-£ìJ2ß}œ©S `ÒïP~—{¬Sòœò»9ý�Q˜4݆Yáñ`ñúðëwS €ßñçðÈiãOê cið1!¾Ükrâ0¡ÙZGœk¿µ@w@B‰$ÓË(Èk¨í.¼‚Ü =ÂÛ}vÊÙ$;’E¶Ö Zîpèñ €³üóí‡2’kqVùXxz^íˆGuR áà �;ÏI;�¬´#È$%ÓÇO wgðãhåRIäé¶ãþ{¦36C…¨—Ù&.õaè³` Ûʦ›ò@”],Õ~çŒæ}çÁÇC™B8E¾P˜îõ@Œ˜5н¦Ù<ôD¿¶å‚¿nE}*êiõÐLqœÁœäœé0)¾{P®S‰bCÕGßÿÐ¥+{ÀiW¤*vÖÆªöA¸pÅ%8[®>ú·!€CM»"r)#ªyp;€ºã™{u SRƒ¬¶dU£í®iìâ5ðÀÅ¢ ú¹¾°QÕVŽ·ÙZÕŠ…`I 1Û¼þQ¬�ÇZØ|éÛQ,P¥Ìm¦ðúf±UÎ0­t«�½šn׎�~î» ûiã 9ç¤þà®u×UõùZ•ó¶.I³ßˆ÷Ò%p–\Åÿ‹çtÒö]ø³[ý[Í>ÅWšûùC w¹Ópúe9ÈìvN5;¶À MGîÔ^ ­cåÎfÉî8ÔÚ²‚×é±ñÌÿÊk¾W0v§…ßÛ`CM;Ð6f ‘×*t͸.æ|õï‹;‰ AEm¸[}aÙ¦#€°z³k=V{ùS}æLýÀfò+ÃæM3ݶ�m"_6\ý±'EGtãÏ1††z›¾ÞÇPîPvÉ™s$� ñç±ÚàT Ãm‹ óep•¸S8"k=±ù‡Æ/›0rç·­ lj®G�PÑ�¿„©â�|G?ð¨æ2ÁEáf»¼°ƒ´®“\éWû¼]nV©Õ}é«×¹húÛ@Gú³Úœ·�Á.]¦üñR÷ã} �>½ ÏÆk`RzU®ymIá,©‹žjјù=†hü*RWxV￲¾�¶=iÏ€ËkáœF„—0‘Ì¥~lW›‹WOÐN™>°JÒžÜàœî’æ‰{8–ÙÍAh1~X,UšRzÙóêÍmÜÒÒžK÷/g¡ß9=§ãtäÍ•RKµжøŸ!§ð ¶‹ÂFrö�Ž%�X½é™Òf$™UÔªwQ¿¹\q©!Eôe“ð¾áä%Ez¹<–Co‘ùÑoÚuONÒÑ�û/eüVã£³Ä \yà"kіЧQ]f|ßBíZí![§2Kú·@a†�Y½ß!ÓÌ4ñ_,£KáM#†b_ŽýYŠÅ–âàѦÌêº ‰—�»¤ ZØöqìF$"a0ã`*…Á¤"åûív1Ô­LE¸Rvq1ŸŠ�bí¸Ò;ý‹öÐ,é1pBLh<;Ÿþ꜡ÚOÏ™âuûA­Å§ÞePä‹-çåÓ.ü”ÀöëÆ0·€Wa²ó¹=ìÌ0ŸX=Éj LFù@ù§3Ýn!ùÅ*ºiÉr1Û‰’+±æÎ¥êètz3÷jÛ‹“=ôŸöUDß5²ñFewÕû™ þVã Äi± vÌx‚ÕGR6¥)ªõ¾Ä~M=û•@{øó¸Èy3#¦Z{› Õ(ªØlF¹£%›v¢Š“ÍàN5ñ÷{Ú#Úþ•"FiÐÍ~&¶�½QqbB¾îBJÚ!ð?7Ÿz¢•èj¤ 6úÁé#?GF$­¯B%ñ$K+ùIr‚‘gy।%g[4?ÿWYTi¼BeíÀ‹›žöá—Y7íœýг&ôÜõÚÑçÇÈå8ân¢êΡ;ïÍÒ�Cî¢"u¨¯§ë)}nå{>m”Fû"Š€J1±=O>Š»™£¸cvû½’,¿#ÜîkwÒ%³ú·k­þ9ÃW@õ^8Ê×Gu‹ãQýßg÷ÍûûF›¸Æñ¢Ùøë3rDÓSG>:�ÐrQÙ*£uZâ�×—*«É¿¸'Ýn¿;cåâ`)X,S £À�FõÇŽ1kxän=Ʋ§î›�¯ì æNœÆ Ó³0]*üÚ 0'¾ ¿vzÝ>< ð×þ¨Ýk’~5GíѰI–øÔŒ í~í:–Õ$3øµßé ûM²†_G�‘5h’>íZ]³I6ðëpصFM²Â§íŽÕn’KøÕ2»]x:Ǧ9„_Ïq´n“÷ãšS|Øë´áý+|hµGðô wÐh®ñi»Ý†qoÆá°ã^àÔ¦ ®Ø,›ä[ö,œÍ;üz…¡Nn˜yó±(‹Rûœ©d³Ðei� T¸Áté´`µ�ƒµ~°úÅ"ŸD§SΫYU%•oxÆ÷)/£í˜Y–8“ÌwX¸ü©™Õ·h>ÎöËsÓJ Q1*¯$ôÜ›} åšЈä¨&é'©Q}²½™q´ÝЦ Ë[L -j5óSSƒ°¤Ú §pl‹ Idð–úžišíx�QÀT¤õ¯š�:F˜¾ñ–·§Rk7<úÈ_%�#Cþ^ó¼å…àvˆÙÎl<,Ü‚…cj|^‰qai]š¸ÀRrqò™t‰iié7ÿuBš¢\G ¼$A†8 i2G’©„Ú+ÊR)R‡‰ëÄ�=c¶ïSh~¿í¦O �q¡4¬K£Ýöêͺ>RÕÂçŒÎN¥ ]Q6‡~%f:i}ÉVî`geiïåN_¸7HôÒWô ™Mö…¢ôî§úŸá @¦µÆvüF¹ó‘úÙ}™�*-’TcŒÕ[bå�Z‚�(vE·–ióãlÁ˜ +,¤¥«`‘Xõì™ûfjû�K|lGi²an+K1ž•7|ÆŽŠÄÜZPÛF"ôKæ/]ïs–l9ò‚Ä¥'NA'¢g�´ËŸmK@6+ã¢!ÅäÑ¿�•0|é†QÙjî�ÈHŠŒWG/:zûüüýÑÓwÆ‹Œ‡_¶Å(€+f´ýÞ)>0vÀD^vÙš¬Ž‹RîGêMšä=Fëë]È«·g~$£"¿ïÄË××õØÕ®R¾B¢ºAÿë¼+Å¿ëTÀsöÃþ:Z�+‘°#÷+mº¤W…VøáQ–Ó…ˆЋ²Ê�¨îó"eqŸ‚Nûd�Êå+Xé–fŠ'üJ%Èô£mÏ(¿>ýÕE/“ÛoÈä._‡ÅñÁƒãRö–â'/w -K�©B~â.pÙç<êêDg™{y^ÛÑôò|f;+߯Wþ,t¦õ³ì°s:ìkb’߉t ÒÆÔž^:YR‹&ysñ‹’÷gç6lDMcNkâ íü°VËr3s°}S,ü s‚ â9×5ßx·¡ÝÊ|À˜^ÚÞ %"û³óÁ‹Ü%@"wÒlb•Óp¸‚r§Y©„;¿;>zýúäõ�¼Ñ¹ŒÒ˜®SÐÀbôª­Éék[8)×-бVù‚sKÆC;]�¨æÇÆCÄŸ×\ãµ}å.h$"l z—·-Þ ÀÁ3Äñ^ ®Úh ¦öÄ�¢>$ÎäÑ#/®\÷½ÖŒrlQ¾ï}¯[æ ]>®ÄäM‹¶8½�ÿòEÍ^š÷¹íq§”B°žõ«ÔõÈ("}Ï"è@]Áø‡Ø.öíYlš{XI9™–wJa‹r…Æ�?Ÿ‡N4ZqWn46ÛmçwÆíûììš ìÊ“¹C*'SJÝÛ 7 ŒÛ÷€�'úD<1h|‰nâ�Œ}Ãóý5̯ÅÜ)ë›ÉÌs{š\y‚Îkp5Õ½Ekš´9#3gº Ç–E®€o�­6¡\›‚r>µƒ 5§—Î xáC ˜}̹ �_ć]¬ðk�jbÉţꂷCÔ×®¹›ÕÜ­¨4ÂBê¡Y6¨ž’(¶G¼Nw]ì–ÔlR§ðÈZ°<›‚N ¾8È•½«“{,šŒ�õ-š@~I{¨>Ï�é"ï@ÕNÄ;Mp‰Ÿ%> ‡ŽŒ#GÎÕ%q’ã¼?Âãð /Ÿ�έnÕ •`§�mUçX–Sm¸´à¹62áZ¦*²JCv9Ƀá9çn“ºð�g C™ÈZ ¾ÊmðI=�DÂï¾á~ùrS'ÃþÈ*›ì[:Ùw‘ýÔëcpF? Ì~gÀ¢Ÿz£QgÈ¢Ÿx8F?õÚýn›E?Yýö`À£Ÿz35K"©Ö,^©;dÁOƒÑ=e1øi0aÔŠÆ6�° ~2ûݑłŸºÝ}2Ûà }™í¶ÉbŸXÕc” _e<¶7¯ªÌt+69U™é^/^ù³ÍÒI¬tJ“®ëý¢þžYý¿gí�qƱ¿Zùë˜òKrl¼È2]«7t)º¸V×ÿ�¡É‚¼†}\Ÿ ³6ä1^Ýö°ßcQ^�^¯ÓcQ^ÃÑÆ0Ê««O?cƒŽ‰Ý>§Qb”ÞÓ_Gá.†ÕÁ<¢1kVÖê1  í/ILÚë8Pí#�#³@,{šÄ±½E è¶@B/q C³$ò+þÚêm’â ‡ñb¿áXCŒi£«ýýwµ�³]�¼�ÆÜߌ£3¯þÔXä–šüôÇ�¨Ž¬A’°£“iü7Ì›’úã–|ãßó(8Þä{õø+¥Ek´ô#Ø`ÔZúP·ƒ‘Œ?#5›Ctý[Îùw¤¥AÚ>fhýgÚ¿Hs£4‰îiÕ©³Ž˜ýH Ú¸ξtðÂP\)ý͈¸kZ™R·á?�¢õ['\ûè@·übÒ›D¦‰¦÷I�+ä93й0¿++ógf¨R$>ë¢y?E§ œáý}³ô *JSôåË?›�̪»â¢ãc¡¾è@r/¢TH)µùŸoüOàq8þg�þ‹þý»1?#ÿ”ƒãUá�¿”6þ—2= ÏŸ(bA»#`)^DùO]¤�ˆr&ž;.{>êÃï>m? g_”Äðø{¸$VŽœ†–‘’ˆ2žaQÊÑì•]ú³pòéoïÞ¼6ðlöxCëGÆŒß_Þ7�mœndƒr[Ú*ˆ ¯[Ú*ŒŒ¿ÿœku¶=½{ŒÞ½zW !ñÇÉÀÆ÷‡ t3ôŠà×v`¯ÐdåF|kdü`7kØLÎ1SAÝËH¿^Ÿ÷±–Q¼–QáXF¥›`J©Îh üYDÏh%ª5ý½?¢‘¬ìyƒÀ7l˜Ÿ·¢» Ûƒæ— Iï P*£» ?ÀóývzxÂÓO;Ü5§ôÓ6�qEwJ·ƒGûº›ú£>—Ù®£ÿ÷N·S”ÕÙeÅ ?X…ü±m0y»udœ^è1è­7oò&2ÞÛ~á:Ë{”nþÄX�< >ö/(y {Èϯ(9ö,”]o) öúÃ^óñÚX“sã'27þIÆŠlŒ�deœ�·Æ3rÏÉs㊼‡/ŒäÈxÛÀ˜“—ðâ¯Æ”ühüJþþ�"ãopd:Â2BØ Ðʼn±!—Ðýc?Rz~§^�›y²wGë8"’8(DÃñ3ã芀ºö{ÆÞ=�Ó•!�kòfô«qûÓø;L¦pqýø‰{žûþýéùÉë÷Ïß??}ÿæí;ìðù pG4[ü“¬6 _�µï«Ä_�©Èè÷Oz3nç⤖¡Dß8¢Õ¡{óÝ×…¿Zo)a†ÆÓXX½²ýŒZÄBë>zJ« i(ýÿ~kÏ\Ÿ?øŒ¨ÃÐ…#´@8ÁÏ©`¼‰ŒÿeÌã:N@~ DqŒDúJaî \ºÄð#µÌ$ÏM’I"d D{ “ä%ÔÐ :ÌÀ2–Ð1+÷ãO¤mÙ±>ʺísŸLÌòòtã.ae„'?wÐR.¼ÎLåÃë{¨<@ß¹Æst`}²Cä𯙸À.fÐÈóæþç Oè‰Ê�:™sï”7ý¹Ezæ!ö¸È•�ËíÌäõ�ù/~5¸#…ÚÏ7ñÐO¬oMöEã5þñä K˜Ã½WgíØÑO—ŽÇ\y¥™…×.ÈO¯¨{+¬+›­»B§ß®Ó¡ŽÔEÞ‚Nâû[„! ~øáÊwgµö#¼ïî#ßÈЉø-›ð"iü)ù¨™&Ãh4cÀ$/™‡ð‹À_5 �/ܬm7¸vAÂmHh ~À„zSW`S -.3¼=¼„a°ê"{âá»ØôXL¤’÷"ïlîaDÏi*úÈ0O˜<;z¾ �u�™ðÖÝÁ¡Ñ-óŸ Я¯´Uˆ~}¥­–Æ�ZM�SµM'Ù¯éAóLô¡óØ«“z|óKqž¸1¡s H †ã;Aãºø­~ŸçêÔ|ZÂÕW”«ÿMâêV¯#¸:ÏCe'‰ª‚$“U˜d²Z&6½ir.Ì’`�˜xÉa°IrV­byŒÚu¹åíº0‡v‡Yv‡í6Æ®SU¢Ïìº#ÐÛ;,§(&ý6Ëi5èô-žÓj4êö,fîì¢=“ç´êöp¬+ª}´»³wZ&K“Z™4�ÐQ-´—¢¹Ó²F}nî„§ÂûØŠú‚â«‹H:æèg‰eá—D¥z�¨EyN­ÇêàåÄ}š&§…o‚Τ�®sMü2-òŽIâ¾${Á€SÎ|ÌüÀÑꑉ÷'€•nÏÓ´sX"†óêL»lP"'×|oŽ˜—³>ÆtÕ³äžù¸hM0ëð*9¹´É[Ò†ô¦ŠÓÔtæ\™“›˪ÔXê–,Ü—9u¹3@* :/éVøï$@}H;ßikÇN–tFù™>ä vöudðš2v~Ëx–n6–Ì_ßâv›ÂПY‚�5‰xàBÂÞm>´s˜†�ÀõWØQ¦}ÊABœ*!í0›ˆàûƒñ-ŠJ×£ôȱb×Bd«; sA½uP›;À^KV€8ß–�‡{JÓú�üSÎêÑV¢õà–r‘Š¢„L��ä‘ÙlÔ]oN‹º QÀ|üM0uÎQ®Á&ã-òà�'‘ù Mc— ã¶Ô˳§ú™]hzAÒÀužŸŽ~ÏŸS½0~Áµ‰xÚv{SGQ”0ö²Ÿ«®]vivÚ¼4¶(»{ÿº cJ‰¿'fì¬Ü½*˜RòóEe˜¶vf�åÛs ¤æÝ±q„þðuü£ØŽWŽˆ5d�©g¢�;795èNáv9?>>Î øãDbuÜ„˜Û-äõó�Þ?G㜔ð‡åà6%äÅíêÍXB°yp…Õ+dçš,�Ÿß°—‘}qÌúZ �ã“fÃÎÇùÆ?y¢¨ÔBŠËWÐë±às§ñ©nfžYgäî×�ÜžÒÄñÝÅ-�¶Ÿ�Ù�âΈØ¡sî/gçìž‘ZËEìË{œŒBw"‚§n7iX+ eN³9Œ94¾ÿ�[fâiÓæí *¢Ê›7fhP)mµ6¨(LgFíå>Y  ¦BÇ"Ô´´é?K[­ G`™ýºZ€¥Z¥n­1zå쌠ú$M0QfиymßcÜ„É�iLIò­3&u‰¼.;$&ÑY“úÔ :›DÌÔÇÜ~1"´Óã¡Ã$"´C$UUŠÅ’ÃöXíR°™HÈ"ÓèC><“�„ÉG€!׳ñÊ [â)½œO=Y�bØB¼ˆ§s¼òÄ ?ÆÑÄo?¹Ñ%üÞŠ¿ü«Fïc�¼žÄ›¡«e=ˆ–-ç†^�Ë�¢^C ÇÀ þ��žB* Sdß) ¡9¿Äu�¦ó$Åa¾óä�¢ó.ÉO–�¯ö¨5)’lKæb쮀®€ËrÄA£YÒ3;4鯒: ©)y^ËeI<¥œ©âf) ™mE%�Tó½Á *¥¸™ÒP×äEçÓKo4ôG‘ÛŒ¹5‡… {ßâP�}СRO ž‚ˆ\`ÚËri´ eð—´{¼ñ! I%›>_# A°+"íz‰µÆæ›;/ß糡ê�_AYhgõZ�>J›§:MŒL=ÊkwŠØAá“�4ÐcA„Üô#¤\Jˆ|2ŽÍ›\…昷iH1„r h¡äY¤™õÈXV3c¶Ì[-‹{Ì⢟™x�epŒo¶ðhÝvFÙñ‡éñɰICó¨éP¯0ω¬|æ~PoYä7BSÜíõV'3u³ÝlX]ÕÜM Fî‰Àdí¦³ú…óøÊÃ-¾n�/ýY2ÃQv†°];må µ6™ŽžƒYûYÞN‡ü8¼%ð›×g«wÕ%ÿ`”¢Ò�õœMÂ)óÇGÞ„ @JR¼š*¶±Àj¡ ªm†ìÀâ&a�²Žƒà™úŽ®lw‰L·áqݲY’‚§ÊõRkh}XR%6žxÙ+4\Œ•O_ø΢ÙHKÆe:¾5 ??ë�h\í£‰—èŽ3ÿAƒ_Pñ¤Ð.¥>¼ÆÆ"Êê<´R“�ïyB\-,y´=,ÀÞñ¨ÐÂBÕ‚2@ò›]Wƒ'Ñ �êK•2WEµ©Ð”±††ÄR%/NSŠ"5kÞàÕx€i! ¨¤] J1G�"mS–¯’A·™�¦½dá±scFΩà 95~&¯Œ×ä�bô,¹1\ �}F®ŒÛÏäÖX�wÆ%9�7Ÿ Œ¿}OžÃ³÷’ç ya8äÈø'yfLÉ/ÐÍkãGr)Ú~TÚ†ÀO—-¡iªˆÃ£Mâ³µï¦B6µ Ò%ÊUÑ–Ýn¯R¬åO’›ÊpdaÙ2? á±ד qI i¸ ([&î$ÔùЊÚkÜÑÝT¬Ž…î‹‹Ä“q“ø±¬X˜šÉk¯q?–yâÔxN=NÚèo|œx·œNâ:m´øZÐ1G•ž9èvòÅטCüs^îsG¬Çv›Ä¡ ›J×B)î„{‘P^™í9ý¦˜õQá‘~GI¤ß³8�/¹ øEÖ@íR?«íüæfª&:åÕsï378¹âûcœÏm Ñë- øX�ÊBDî…:ÙwÉ8òMWªÔ•‚Žô!¤€G®Ø¢ÈWLWPFÑÓÿ (‹"œd Go·#du‰­C`loˆ'v¶ø´ ž¦ΉÐ�nÏ]ÿ|:ÿOkŽë¦¾ô@)òØ5±”vËby·Äõ1š©hdæ6¢FjW‡Ô^¤ hh鯍ÅÌ…–¶ÏAaŸ"P¤kpZûµ²¥lèÞ×i2,ƒ‡Øka7%S3ÛFÑÖ%PÚ×Ò©¥›¿ÙÙ©f·VÍâ¥Põ÷�WjÈâˆ<±C±£±Cݬ<3ÕX«—o¡Q³ÁT€¨Òh—:éäA�Òvucätòld; „ŪÈAÛ­-£EL~)4f©Á4*C�anÚf}¸}¬˜ŽX¥ÚÅ:2×ëÆ¤ÔÉïjž+PûûÃXg ‘Rg¸)u¦u+ ºm‰”ºfÉvµÌ«[‰yU„©[†v}ºÛ¬�š”$£cSvâ;Ü\:F3p 8¤„ŒBÅH¢Ý^¼VÚÓ¥§ƒzÛÈAzÒëq–7å�vŒ–½ôº[.FÆi-Ó>룄^ÞãL#z]z€pr—Û¨7¦ø=FÊó`á®§¶â¡ãŒg¯œWvøYØb´p(6Y¹å¬¦�Úš:WN`/Om áóÂD´�iASÞv(9GiÈcY›¾ †@HRšó2(b9¦Ž Àžð¢b±0šÇŽÀ° ÂÍj�z�1]o vž•áLÁ«$ _9kz�²ûî(ч VœÔm[Me+P@Þ ÒJP.ÝÅe!,ù£hû©e J¹þc½A @Áë÷°Þ tªî§ÒõÖ³ÉPβµzÙ,ÔNNêÝ_P­I¤mõÔv‚CŸeé¨޹�æÿw·+Z­pÌÚ\»Å…ó"°º¤«:?²`U+¬f>éh•ÍýY›*‹;»Û¤,Dn‰IJUm�& ^Q%¡Ë ‹.Z¬l{JÅM|Ø ÑzƒõÑeÆ¿"Lç¤Ä4¾ñýù ^f£U²ÑxÕ°Þ=�ùù†õ¬Ü™Æ9/¦Âú÷»`½È|†Î›>FvË DÃm*\ÒM7²Wë8ô=<ÁÈ%ñ“2JÂ'!YbeÑÂX ZøP+!'*á´ —;¥eð‰ŸŠ¢ *�Þ\¯Å§~Wõgö2SYT(ˆqõG„b’…ÇÀäÇëÆ²¾qî%¯ëØHæhp§¼A)ù45~¤Àº�3kÔ¹3>Ä_ßû¨ˆ�5I¼ÙõÃÔÿ§ÎzK}(QlÁ§Ê/cùÔ ý·¹¥ë6d‡òyÈOe}ÛGf\“0•iÆVdšîËêˆK±ª§ˆåpÒVe³ ÒÙlä4%‰jÂl’š 8 ¸’$,3ãê­ÁËš–§¯qª%ªqž,¤:¨ãE¥L7©Ü5 ¾ ‡ï-¯ÙÊsÚŒiJ›G糚•! Ž[êj†¤á¯«RF#^UI‚brX°jP¿¦–½\RG8 ÝOg¨/ 7ïM¢ ++�'÷4 Oôˆß-—ô ÍÅBÓbÉϪ�¨¥;˜åÀ†‘¨°S‘œ’S·*9¥e—|"³†6wY)ãRŸt3š‚rÑc–Õ8�5e篺6-Åø'É‘Sò¸‘åîÚ-ÃWOdm^a©¡‘`òÇJ»)}LcÓYJ¤/›ä-È%ycýàóßà„E®5�É!¯�[Xï\’.À׸¯¹Ä�ÀSÅÍinÑ×ïNÞÿläÎumK׿—‘óëÔ@Ô‹õ™ä|?)¹°;×ߢ7 ] ….�^.'õOÍ¬Ò®Š¥þgNKVÅRÿós…f—F•Vs̶WÚêÜ8©ÐêCÁK[Ѻ½¥­^7Z½1žêÃʳ_kÂʪV^%¢<3žQºy&¢<Ó8Qžy¯ˆ(ÇGN ”f(áæ¢q?U€XÌš xé¢ÃÔ%á¥Ï‚¼X1Ï�ý yð.žÅ¡(ÔŠq¶°eDëV¥¦òÍœ9¨¾±ß"*ÂÐŽÙÞÑÅ¢uáßäj³Ç"RÝQZ¨Ø°�mÈŽ¢[‹;ª˜,Pºåù×�Íâ¾ÝY¦ ñ˜1•×,ÜšZGðc|Õâ '«gÒAH”Ì áØmÇr�‰ · B¹ö’zÍ…êâ´—îlæx­þšGI3|³D†â9úD6( ³ÖM[,¢É©¿¦ t ].Ñ<=-S@»NÜÒ¥aÙ Ûqéñ“T·R£·ð+ãÎSí¸}UÓòÖL�͵ͭ”˜RÁ»ÒÌ:¦£¬4†‡¼Ìù|”F²ð(h;¶ (¼žº H¦™ µlcå[*@�l * $Ó¸‚,;¨ÆG‚£nlò²ÕW.î “n€øßæÂpAs’"ÎôVš/K!þþr³º ¯ù¬Òƒ«¦”jÁÀY:WÎ2LQÏ4ÍM³Ss} •Á…_‚ 8ƒ–:ç.fìö3!¢´9¦ˆ–Ò-HîSsŒAìyÅ y“ç_K»š§¿ˆo Êò6T»•ÊUŠfI®ò·Èr.,éÌ"¹tO5Oè-O0Ý'ÓwÇìWj¹/uÕ÷”·7]q«ö0�¿^Rt¹»ªjýý´¾w{ðì­ËŽòZwîœ'|þÎ\^(žùSµFÉLò{éÊÐüEOVâøñ@_Lôϧn©˜O@7\Wa®‹ÏéŽßÓÜ J>üÕƒ»Ê‡ÀÁÇÏ8Su +×Éþ…¥qY…‚¦#òºbS«M>ªj³+œnå¯Lò´âWeøHç©xIz=ÒŒÀÔîr9 …Èz@}ÿÙÚ�¬ˆDÑ$ŸÐ´*Ÿ)¦4yªCQ¨œœßørãù 7VùË$)Úä7¹±jÏ&�1_f’ï²ÂòÉ)¶ðEÒ8 {z‡áTBÂD§ò¨M¤Ù(Ò­åÇž„Å^nC;&9é†7T#Œ±Òw …Mlp“t2̇«ï&ÿnûuHå<(Ši`2jì)VÞ<¬weƒþ¾¤ªÀøøVáAý<ÚWG¿C€*,c©›gOŸ>fíÅfvÕ>h*ÔÖÿ”4VlŒTcîT4ü€¯÷$ øÃÜt÷»œq?˜åDåWöÃõÿ©Ó1ª·]ÒA÷Fö¹”¼";ÚünD7¯¯ý�6¨s,—ß�![­�èu­Àã× ®k± €üzÀãâ4ˆËšð‡’®F. —\¿°VL™”§Š%ygœ“¬ÿÙ8%Ï�ãl¦‹¸:9u±È3¹VªÄüI*óÅi ”"U©˜¨JdQ«’qQÓ"±jäíuê† ¨AœÌükï õ·›¥úùÒ5˜�Ù™)ŒÇ¨óà1X-ÂXN�9¼lÍí•»¼×ê¯øêÔN¨}ðqÜâÚq—ѸÛøTòœ.¬â±û<µºë›Ç5LV"U¸çéÇ/ÐÛ�~@ÿ¼äý›ôÕö©D‰{»÷ÖÖAGj5Cç#yÜk?˜Q£OúibeÃçøž>g@Á´.>»h�@˜W¾]Ònm/$¸vè̤Öª7v@[ùëÈ]ÁD_: ÷Â]ºÑ­ÜõÊÿ­å‡7¹¾�} T·t¤ÆlØÏhrç*#,ÇÒ]Øõ8áKÖþ÷ÇÜ<éT4½þhòÜÔŰÐPMÛè1Ê@¢pzX¥åžwB† *èÓ6$1@ªb˜µG¬ "�gLüþ{¦Ÿ4G8Ç.¿àÌb·#:dÝs�yʺ¼°§ŸÑ%Õ›�Ùº¬mLEO»¾€ÝèÀpmé¯V`ÏÜ ÐµlA&Óœ^ »Yîaöx3Á:}þäæ… Ю Å×ÃT¡Ñå¸6ÏüM„¬Eâk{6£{P|x_q¾ã¹?…÷V­±´v ŠZ|²ÁâÂn˜½©%ÿÓ6¬æ6Ð0Ö¾Ý]ý‚„ÎÊv+í¹ ½±ÿ3¬~3ÉFÂH<šsÊI¹U^;[Úl@ €¾X¤!ÀÎ 7Xk?¦mÄÀY=ý97ЦýÉÞD>R—~ª�è/&š˜Hûøóöj‰ÄòÚEKÀošïľýå&ªÒ‰h*sÅÁ›þ˜¢Že´,ï?ŽÎoá6Ö�ºóÀ¿~@Ïðušp% 0Mâ�à8_x-Ô½ ¨�5¢î¶0'•n�½Ém^­l™ë„Š•@IZŠNTÜßÏñÎ¥”ëgsÇ•Š–…”»»dª§e”CIžä»�3u*MÍARãÊïr�5"_žS~7§ÿñ#ê¦^Ú0+<à„ª™ ½Â¯ßM-ü~ÇŸÃ#§�?©ƒ&âÎj&¼—{MN&½ [ëˆsí·hîH¨£Çë2¢qé‡)æ¹+ºAÐ�áí>;ål’Émx-÷ 8ôxÀ—Î\‚ûA*–žý¤tª7kÇ«½£>©µþθóœ´ÓÉJ;‚LRúQüT�pw?ŽV€–Džn[§û¦36C…¨—Ù&.õaè³` Ûʦ›ò@”],Õ~çŒæ}çÁÇC™qäpF‘Baº×1z``Ô(öšfóÐýÚV þ¸M®SO«‡fŠã †øó¸à$çL‡Iñ݃r�ŠH<ª>úþ‡.]ÙN»"U±³6VµÂ…+.Á�ØrõÑ¿ jÚ €K‰ÃD�·‹ìn3÷ê@§¤$Ymɪ FÛ]ÒØ;Äkà�‹…ÚHx§WV¶`åx›­U­X–´³ÝfObm<ÖÂæKߎb�*en3­ÀY¥­r†iõà!*LzÅŽYxÚíÿ:¸n& Uš"Ûy5­ÂQµãšTâÈZï´vSÂvvŸE9[yÐ,2Êå6}ҀĭŒ`þûK¹Ì¬´ÄplöÊ.1´Š �S/Uš©BåLë¦mÞ�îW÷7º£ø~ƒG�•+ ·× î€ñÀžga�cu'yã,—î:tC΀nÄ^ïµ++»_õe»ÓBÌþ`¥éùX2�í‡a$»¢ðpÜgO(ì Zÿ¡Âê(ÜÍtóÚ+5}Mˆâöo2xñÅhb¤ŠÏ2×»t7‹0C€êÅv.ü2ùµò·µZÙ-}Ö-¢ëØuÄJlàaÓÙmK?`BåÛs’·Úw‰„­Žif·ê™ÿ;^$1%®F˜•-�;Ëûب\»†E#‹»pª»ËÔz ¥-CÃ×½2$.tØAáåÔL¯S¢ƒµXˆ¯l(ýJ U´|¥LG\Ÿ¦ýÚÌ/¹—d¬ê±é{Kò×·Ú‚¥3þ†{´Úble×ùf8üV¼ÓV¥yÿwåÌ\»Ö�̃þ`}ÓdÍaã.{VàMÊÚ%¦½?bkÉ=&$±˜úCÄöf©±Mj³Øypª¶ËƆȦbµS£ WÓíÚ±±èç®Â~Ú8G+¸sRp׺k�ªúü­Êy[—¤ÙïÄ‚{é8K®âÿE+ 뜔¡çèŸÝêßjö)¾ÒÜÏj¸Ë�†Ó/ËAf·ópªÙ±m:r§öRh+w6Kvǡ֖—M��gþW^󽂱;-ü>ÀØjÚ�¶1[¸ˆ¼V¡ëhÆu1ç«_ÜIl*jÃÝê ÛÈ6„Õ˜]ë±ÚËŸêè3gê6“_ù6oš<²…lù²áê�=):¢.'©Ñ3eu¸CÙ%gΑt6ÄŸÇjƒS $ ·­+7t�ùŒ2¸JÜ© ‘µžØüCã—M¹óÛÖ…ãD׎£G¨hÈ_ÂTñξ£Ÿ xTs‹@­p ³]^ØAÚ ×I®ô«}ÞŠ0Ô1µZ¢/ýbõ:íAÛ�èHV›ó¶3إ˔?^ê~¼¤Ó§wáÙx Ìd@¯Ê5¯-)œƒ(ç‘h­È�–ÎÃ4~©+<«÷_Y_ƒN[ˆž´gÀåµpN£¢HæR?6‰«ÍŒÅ«'h§LØ%iO‰aNpNwIC’Že¶A3AZŒK•¦”^ö¼zAÓ÷·4b¸„çÒýËYèwNÏé8q`[aÌŸµ÷%• *î Ò!N½øÆÛ{âó%iÉ*g¬81¥ÓTwÊfÎ}3pUº¢�?�Õ±]¥Dßkʲ•+j+-\°˜DñPØ7{Ýl�¢ùu–¢V£ï+˜%C´0Ow×*a(«JÓÕ»°C7vÿÍi²Î!¹Á}¥©—ÇãçM¿›3[³•t@³¨4Jð&Äì/ôˆ‘,>â?ÕÛ‚;Çß ÊjhÙúZòw½âH”y—üî'UxËù»‡>µ$\›|=ö¶—ÌAåQ‰Râ¨ÀÇ‚Œ�öÌY°£PökgžÆ2" m­Ò]Yw–³@|4—ÈeEøÎcs$ÐùUfSäÀ4s~-r˨üÚâE̘¬¯x¸£?+¦ÔþF:7 _´Ìª€�Tæ· 9ûÆçi1¿áQY Ø·‚Jkù¶È*"D!Ì�ÐÕ½/Fìÿ¿±àP¼ÄßP&(ì÷µÈßYUiOü¿µGIY`F MÆŸRmÚÏÞ.Pu¾•œwš{6IÁ퉶‰V™2´¡ŠwÕ6¬°Ôä±ÿÛ …›´Ñ€FfI–ƒŒ0)¦_š)fýu A×¶4‘ž>ߪìs˜¸ü¾§T«Ñ{Åk;ÀË­•†öBoÊKk8Ö(mñâ"áèìë˜Em— O}çx³B5Dm¦L’gîSøÝoÿËrÌØ¥sø»D‡‘®g¥EÌ7ÞÒŸ®#¨ ´�~ùÕçÛÒ­a† Ú1IpìLíå´�(ªý �áÌ&Ðj­fS>p‹Ý”0›ØÛWô’jézÕÛ¦Z†—öÚIÜŠ:-jzi{³¥³r帼Mœ]»¨«Ç·Eª ÞÛ8-`Jø;Ëí=LºŠ—�û{¸ÞŒ•‡n¥DŠ?$M¢‰!ÆÃù9õk}ö|¥óØ·+Ì“• {Èy“õÔSm±‡Ùèÿ +1­ÊVáI(,”#~‡ÓÅý;åµÊŽ—n[}èþçTè/VèWÿ{šÉ·¼Üã4iúÜçÖOJaêµ É§3Îyó{°Ÿ~�å: éð«Mà÷}1þa¡Òn’í½æW³÷~R; ©ó«Mà÷}é^ùc,¶{%¶O›ûÀ¶uϳ:iËZÎQ=kkÙ*F$e×J¹Ÿ—¹§§�c¡ ¤ Mñ‚BB:Zø“?¶ãZR_ÁÚr@s7QHw—3IÑøŠ¢E)ൿÔþç«U»B¥pMê–¦)þ–8< Û ¹¥½»Gj)\¼…´l¹©½v#à)¿íMË»X`^ˤԳMxOì[ÛÎÜÕ¥2®èìÕƒøK•(³‚Q§Ô?ù� ¥îË;*/^¥Ü+_ ä•ñ‘ÉÎûUŽ›•Ù§úø /ò©—*Ïi]ñ%Bë66Ìa»Y‹ë�ÿÜhuGư/nÒ¾ùm£�9uiÔmqé7ŒMg€©0 ˆ¨°êôäÿ}vß¼¿o´‰o/š�O¡±>#?ëÀ�|ÌVBê¾ÇjÅo³\6IQÓVðh¹ÄêÜa•öÞâ�wâ¹¢ï{ÒšÝÞ¸�8ÍÉ_îê›Ð©…QàN£úcǘ5&&ò©CR”ß% «ð¦^-N(y!ç ì…„¦m�~Sés˜† ëqŒOº»*n-áïQ SÙ8A�´µl1OHîší¦z|€–qÉ‚MÙ!˜�Å·;1Ù–ËO¢ˆ´Ôx×>öj"‰×ê*¸Ÿ‚´nRà) gu¼ �ta&ði¾¼Í ÀÆkož‘¥\P}QŸ¥J¥×K¯°’ÿ„8ó´‡?Ò}ë}�Š|¯D÷ÍgZÖ _r Oé�|,ÈÑÕî²ÙêvFCv ó³™ȃžÕgr44ù� go§ËNäž9èv؉<4Íá¨IÖØYo؇_ØÃÐlCƒ =ÝÛ#xºJòKøÕì�€IÏá·ŽÙÃÎÅéΘËqŠ¹Ð —ø$à|†&ÿyçWîÔ™D„>»r�ëc!h½uæ�=‡žæ.@ÅþÂkë—n‰�]öxéã˜øì/Ï =Pžì!ðM'À¨j¶ñü {åbó{”ó@´.ˆHŽ&Øþ1[+Øh®qÔlˆú?Шq‹\¦¥¦acö ¹›Ù‘=¾cvÆuj‘´—Ë:c8 Üuö1Óö>�Ý“, ÆQ+÷Í&l+ŸÊ„pÌQªJ=ª6Ú¼XÔ¼õ}G^þªÙˆ8ö�é¥í-@"l¿mÙŸ�&ncúWxíFÓËWöºÙð&‰²Ëd ßÍœ˜û9ÖdõŒWG/:zûüüÝñÑë×'¯4’·0OÂÇ�>é¹¥×Õ7Ó©†p¦ÃP(÷ºÀDfõ&vtÇ‹mÓ™�¯|wVkß3t•œoQê|‹¾|9n6ìÌAÆl¦WΉ÷ ü|ij<…MYÖÊ6>fÖ¶ÂG3ã´B«µqS¡Õ˜Uhµ1NšÚ3=ûµæL?Vœé1ýÃ9èo¢õð;N¼ã:ÿ¥~Ï�ú^þ¨§½°ˆ#8dáÿèQOêâ;@Êó7a2ÂSxú™ÒÀÚOú{(;�í²YŒÜΡs8°Èx¦±ÑIÿ/�#2Ç¿m�ó´< 1Åí”<¾$ãkÚªÛ/±Œï”ë½ÌöƨgÌÚŽeÛƒtÅækhö‡%ÒÎóœ´ÓB­áÙeÂN¤š!v:½n¿Ã…&¡°3²¬NG˜¨¥…³;hsa‡[*±ØBuÃÍ„³‰qPÛ6e‰åb•ւí�vgž½vg '‘×M½fú8Ô+~¬PýdÍüRfUjˆâ³&æY€8�…Ôs/³ÝˆM�1Ϙ Gî…ZoÉ}-i&— —´QSKÌxÔdPqrE¶Ïi7·T)%G1/7SL2Qr,%7£tiÔÿ?Ëc �ÁÊ£0gCx”²ñœWZĬ"ÊI›:SÊÖ¯‰Iæ ;w³k’‡´ª§ÚfÑãHAf)½ðƒ7ÔÔBgÇÍ)Ç攈ë9lp¡áÌ`> @Áiàú�ÝN,£ÇÞØW¶»D¿B*¡†ÐTç3à̶½ÍúœÞ¦;3BÎÑnNRïg m¥ŸÎÊ¿rfg Ï6S�ØqE'iDŸ¼³É¿µÔôý�wÿoÄÔ Q /U™|#„iÉOrøÖ5º¥pOꈣµØ«×ö þ¼¸=ü¿»Ø,ŽÃðñ5ÑñÙ“W^Ÿ¼øùüôèøïG?>4™ÆòÔpWÏ�ßÂ7?ü€DNM…8†·_7‚UÍ@¤Ë!Wõ!‘–Ë )%'õMä.C–E˜¿¡Ê(ž‘ êÞ1ÌÑOê÷¡Ãt ¶ƒ¼~ Ý2vŸäÞ§šb©ê¡0­e·b^Z_?ë¥õì×[XàÄ.*8Ϩúú��ÜfÄgÍ97‡‘]ãMlÖÆÍ•ÛÒ¿bCБ'¼„öQv2h�QÙãhŸDL«¬;Š`N®SXL§0�t1Q½½�·`6EÊê$æâ)ZKÔ =l“3q ªCSb±ç„ž ÞÜŽÅðb1¤ÎºÎ ÕSã5à ™2ÛÛ̸!¸Øk´¿-¨` míu¸Y²,ÑVÞNf™��U"9>£’ãRm'“.®¬Ž5ì3Ñq8ìZ#&:ÒÛªÇHxË"®N`»*–>s·7Ñ%2GØ­S¯°]EüÏø8g»‡·‚Ãü^ÜÙUµÜÀÎzÔ8 ûÖpCúoøÝtê¬á¼`¬©ù$ûdü)ûä¬i¸Þt¹™9Àã9TÍ&ö‘ù8�ÿi"Þ"[Æ¡g+×c§ã©uݰñE}œz 0²I(2x$éDX¶büQ#þº’ÉFÅ7³w cÌôûœE:ß,0>WhÊfeSÍ�á+õ�È3Ñ�ŽÃn;¡î—#n#( ¦¾�áøŽ½×ÎP@=ýwý>¿éºÃÎhP²éætÓ�ª7×ÌlfDòÛb¾é¦ëôú]¦¯™½jfT_³L‹«k½.êh¨®uú£^Ÿ©kÝž…6ï aضiªå]¦õ¹ùäC5Ô2�‘s…yïŽæ6GpHƒø‰~p:ò„Ó4O¨� ,.¬ÙÆ«,hÞ…à“�&—ø\{é/И ¦ än¿æÌ‚Ë7§öô3ÄÚœ>sÑÄ7~ŽîW çÙˬpLUv%Á.ôCø�\ƒžá_3™¤~Eëpüç?_@#Iæ±gõg6bKøFpQ�z~±´½Ïõ�7gPi?=�•KA ½”ýz )HÔé‰Ãß)YIÍØFx™ÞOX]Ëg8uyÁZâGÞâ˜I“ïâ�޹hb¹l2Ê<Ù¶¢äè¥&M¬¶}Œ‡7R9µÙ«÷T‡F+'-µÀDTÜñ#,Ÿ€´Á'Ñ’Þ%MÙmFg{b¶Wzñÿ®weƒ†Ò˔“4Û`pçÔÙ["$9)äæÃ…¥ÊƒF;e“àÒ;•�ÔßåL&ª²A^‰gšukÔckÄY“8+Û]ê?ŽÁ3hÃlOô!pk|J?· ƒÛ”1¥µñêèýù³“£—o~<vôþֹ웕ñ£ž‘e¿®ÆÈlà7·-ÏvªÊZšé¸ÈZÊÙ߀ñ?+}k»‹Å>ÃUüIƒ[@)S‚}.+¯¥�ÑûÙ³WôƸ>�}~�%`™Oò’ÙKW6È ëMÄ­§³Ï:òöÑ&ò1]BüB¦.à”²e¦.VÖó- ZŠ.õ�\]ÀÙÌŠ[•ÊkY9Í÷RŒñzñÚÿzòŒù?^ϤHº#çðøõ‚ˆ̡(ÿ„nixüBlïØÏ‰?”dK27\rnüBŽ�¿“ScN^ÑÐ<Èü•ÂM®�ã¼ÜLn2Á:Õdzmü‹*Yœ´d†?ª¼kI™ö¢ñÅ/\$ë·Ûå]J2|¥Äq  ÿòRÇu…ü.ÿÅb�‹ }FC7ÑÒÎÚA¨]ã*¹ºM‚‰ßÁ¯ƒNÏ‚My_%·<Ÿ%åA+;´¹ÄÂgÄð<ÄPQ`×ʽRàOiQUϨ$61Eä"PõÛÛºä31I<Ýr½h‹–ÝÏXz…´Í]ò¾ÒÒ•ÞØååÈ”ôsÒCÿètʨŠ—`2Ó6{_¶Å‘­‰7¡rŸY8b¿PÝ�þ ýv­½ès4åüÎLp‹ïRÑw´».ëÚH sÞ=+bðÒõ>£yYdÉ9Êò•òÜÁTv`#—ñjëæý3f°”O`Þ†z<5]‹¦ì üëLÞšŠ¾Åb‡™CŸô€…3›’fŽçç„CÍ`HaõòÆçâÊC¾Ã¨0HÖBWGzl öJê¿¡x~n-�21XAнW“p ;¼¼ðí`Æ[Z/g®ê2¿­ø7}�èaj Dˆ^e~ñU�.ð¤:ŠCƒ´"ì`K$'_ÈÔ×0ÅñÖD üµøÌL¥�zˆÅ¢›8E‚Êqii�ø¼N£vFØÒ€ŸMCòžeÄRŸkyÃNÞ¼·FÛuL(Vk®ã–:•P“ª˜[K�ÕîÁf±~Œ”ARò‚ƒ@Êh/HÁûÒ HAkœ­²šUtõÌÄ÷Z™Uk·*YÇ%Sþlméb�–”ðt?ÁJü ’œ¯õfÎÇó`6‡1ÛZšCE/|…¹ë�¯lÿ‰e½”!H<4–Ž·ˆ.bÛ(1·X)¹§œ9w6öÑ“•ði‚ÌõÙ‰Î7Á2ûIh£ô›ó!Qf¦°üˆ4æ•à•zúTÂë5ˆ~�ù øôˆ•ÅŒl³¬ûØ�¼(höEà#f¿PRzï¿·/t±WqHéóϸ�· ½è�ñ6ž;91Ns¡œ[fêè3™lãþª­¹‹Iœ™ç�-¥ªe\±’ªN»t0[e ›U;›¯ß²JÊçl#’W²F µ5|* ÇùdµŠ muų—~ž®O/¥óu\+A‹Í¥%L,Œ34± +¢ Ú /+Õ™²¶²Ä=Kܸ¡YqLÌ«ó:Iø‘>íb ÈÓ$àÛÄ»û%þÚîàMâ¯I>Á±#øoIfÁï±ig€îL?%>áů:&ÞÑý˜äü~Ön£ö3õVþ–dóù;ªßÿ“¾õ€ÿ¥ľDQ’ŽØÃß]ø¯Iœ(ÉøãFÔ·©ÝÅ$³ušÂyÚ›N)ˆ(ÖãTik„¶Ê%ýt8Dg¦i”D¥Îh›ÑƒÉ×ü[}AÁŒ0žuƒ¿Ó|�M²âÏ;0ÖeDm¡@ç¼ODö9m�ÎúÂ;û8š|rÓ+æICN£¼%èŽá‘Ho1~Ô¾—Üæ_Ej¿ù ïVøÍWÓçX˜ èbùãI[Ez7"›{2í5^êN™Õ�Ó{¾·ØK�;²°Kgc+dc•Ûvѵ¥»ŒÐ‚XrØZ°fMf…kRìÛËó%2ÈŽ›ÜÞ÷FµÌ=º…¾þZ �WGO Íûþ6Ký¦x©Å ŠÅŽ×îæk­]^­þ=­ú…¥$EÊ÷*­! î–úTh!HKç�·¼µ³ ëé†Ïx ÈÚèÝðˆÚ”Ó Š…gm`©Ò¯ßã;ùÒã"Jßz¨5õvA¬ò[Jzò W_cÐK•šéí�©Ûõh})šñS¤¿°ò6™Ò1Ñ[gíc!‰Óа¨šO]§í�î9Á¬À�OÞÙÔ^°B©<>ÞœrÅgO)ó¿ÎgOR�‘ê¹h‹8á„Ô 9Œi¾mx„¿³rì9M ¿à9e¸Á w�<ä_¤âï¤ìgìSÑZþR&¬wÅÔ¬HËHG²†[ÝêUCíLž<þ!zR¶í¤‹w‘œ Š<¨¾!Uõ”0}Ž*^µS@„¢#,S±¨ò<*L®’È'ï£�ny3÷–öÂVáÜÉ_˜cçàNÞ¶’ທš2M^'Õu|L.}ò9bêU"�¼X¾»3ãÖ˜²úF†ôçC|üô¦7ß•†ÂS·HncößçrD¸°¸înˆãëÆûÛÊÌ–ß»‚GÖ'“IdðÚ,Ü'@¥#Ð’A)�)ÛM³#y¦Ö9ðŒÌ´üEÑò“ĬëiFŽžÌÛàµ"8‘V °IH–dFÖdA6dE.¹�½f§ƒð8ÈÖHQÐŽÃU5\eÄ£Ÿ~JDzI¾bAHr!”KöˆÙ]'³T邵ôn²àéâRâ èx£ ¹\%æ¾<ñää2�jjü'Ìú·ßÓä��ñnCm•4ÃÜ3ö*vÍà- <é@š�å�ˆÅuzeq�Ÿ¹áÙW.fm|ªÆŸ±¾ FÞÑô�§˜4ßá4ÆÑ§ö�q;tÎýåì|ÍYQFë½?æ}ó„ýbÑ™.@ÏaáÊ®Kj•¬7œˆ Ü]CbCãç”´ïï¢{á`·û7‘JáWT ø7¯ñàažµ¬JZżèƒg¤1Pçý±|zëF$Ê/4“JÐ]�«íàe6ŠÐG|}2½Ý7ãâ�T”Á«V”�÷ý&p.P¾hg*¬.Ëê Ä‹îÛ³FAÍFióMu- !-�EEŽ%xm>ËQÊü̘7Ǻµ‹“¨=tíxGY;Þ·TSc§EÓ©ó"WòT]i$ˆ+�4À ¼P¸p°ÈÈ�05xOŒ£g¯N^Ÿ¿yýþèøý»'Ì»9|b�ùò¥^'î$¢<¡øx¬á‚3ÇܱËc>ظFt‰Ü ‘ð¼¾iÞpi2dŒüŒD:KŒðõLi!�j‹P^­RïO<`ê @rx¯6TïàIÞø”†]X4êã²–õû̬åœ,…Cñ–yGñ ö„VͼŸ0Áè‰|ëÄï„äúÔ/‘7ï’Æc�ˆF°Jleó”vÌØ5ó l`.`=f[åk1:9âtvCXï÷Úë›:ôY€Ê£ü2¿Éïy_-3p¤‹ÁÚ�8ízD„=;b+Rý|_çOH‹ØüuÆœ†Ä�ÊÓägéTΓ)å¶ñ¾¤Å&9h¦rígZçrígMçù\û²~gÜÏB±C¿ÜÅz¿]r^#WàEû<»NÚ­ž× ¥�ðÌân Ý®Y93Ǧ—"Ù}´¶Qס^ÖÒÓ¥‹�€âÉTT]Sïpqµ_ÊãP_xfbÎö¡¢ºWån¬¤›‹À÷WÅ_¦J£Š.:I°S`¦·;tÒM:á•›A&À›ýÍ)€_œÒôÇÒ%]2¼jÖ½d´Œ×N¾£ôM_rŸ§ž¯Œáz-Üm-×›û©…�_±|qõVv?¤¤1‰òç3žq@Áéøã›ùµÙ¶,-iX‰8“«`¶Éw$ñäÓÕÌïÕ­ö~ÇLÏ�(Ò\É`Xäê `t²KÐé*—@•€ÊÚlQ�m²EÍ}@nqî‚6TnjfYþ�2< sx©ð HÆñÐÕîÙîC’ƒÉI,,r²OÀ.Óœ'Œ©ÑÒ2Š‚ì^2¬]ò>‚e`Åà<üIóå[gþüp5¥qÒUâ!Sâe= äê O«¢ÕÅŒF^Ê÷AüÑÄÒÎè^ð<áh ‡zRÐi/•�(Öyàä•Û¸»ü~ØÁ»Ó#/Š=±©Ÿ wÃÞÕC§*0}rT µ$=æ0T”؃ýAÒ÷ׯÞ�¿y}þìù«£×Ïè�IóË—’kófÞW^¤Oà,®’|yW+6Ñ"†Äê•Îsç ÞœxUB�gÑvq—[MÖÖ -œ¦ðzx¹ô¯�Ù ³Vð{Äà^m†B4è{,MqV%œtD,_–(jÐÚ>5�º ·U•®ç�ü²åzî�‰±O:fÁÄcã˃ÍU91@äÍ3&,<$!$³Å�6ÑVÇŸÌÉ�ÆŒüÃxC~6NÈߌŸÉß�ù§ñšü¯’(‚_<8sˆaÍY72n??‚&6ÀJ|�gÁ«xëxd4˜º�dK²Æðêd��6‘1%«Èø•\âoóÈø9�àí•”'>xüßXíÔ \ôåÅËE$(©Å5¢ÏñÄWGôn–êçK×¹æ¬h0³D„æWf#H©ëæöÊ]ÞŽkõW|ê5 Óëù¨bôT{)ÿ"Ö�Y`2E×0ÊZŠÇåò´ËEXáO²mÒG4½bQ/Æî=‡µu"°bH­·H�{í3jK?½t#‡¶§Pâ{úœÓºøìÂü)Ì+ß�.i·X”Î=;tfRk U€TÐVþ:>ú›óÒY¸îÒ�nå®Wþo-?¼Éõ :ò-츥#5f‹ÀË:‹Ž¨›L­¾tv=ŽT¿ô¯œõd^ªQ£,òö:øÃR!n‚Ÿ­}yG60¹ÇÐŽ§ÜP°\ÂóNÈ#§+Œ=¦mq×fí‘»BË2 4žÈŒÛºKçÁ�æîY ;¢CÖ�1_ÆÅ.µ]^ØÓÏXdÀ›�Ùt×6†.¥‚¸ÛÒ_­Àž¹X +›SÒœ^ »¹(ø^&A§Ÿ S‡Îãàù•KK…cæ‚aœ¨`áv�(~�Ò�øð¾â|ÇsLfOjÕKk— ¨Å',.lŒ'µäÚ†Õܯ޶¡«A�ÐYÙ& =·¡7ö†ÕoÆtèÂé4Ófd02æöjy:ûIžNƒækcLGŸ:Û¶ÅÙýZ$IÿdóŒ©ú©£¾˜hb"íãO ÏÚg»»%œ¶µ=Š–€?Þ4߉}‚úUéD4•9ÍhGOmªÒÇuÌ„PÞ6~#œ»” l¬uç�ý€žáë4)àJ` š$©I€ÿ{-Ðé¢êc�˜ßz�µÍtÒÆ¼Z/Ø2× =ö*�’´�¨¸¿žcî˜R®ŸU|eÊÄ¡BÊÝ]šÒÓ2Ê.¡$ñÝÇ™:•æ ]ðåw¹Ç1%Ï)¿›ÓÿøuÓ /m˜pBÑÔÇðëwS €ßñçðÈiãOê c™J0g‰Ükrâ0¡ÙZGœk¿µ@©@B�8^—%ˆK?L1Ï]Ñ r/ôo÷Ù)g“ìHÙ™ƒh¹gÀ¡ÇƒÎR µJÈH®Å)¬c=à (oµw6Ö¯…ðp†À�krþHÒŽ “”L?$Ü�Á�£•K%‘§Û޳ í™ÎtØ8 ý¢^f›¸Ô‡¡Ï‚ €n+O˜nÊQv±Tû�3š÷�e ýáùBaº×1z``Ô(öšfóÐýÚ– þ¸½®§ÕC3ÅqCüy\p’s¦Ã¤øîA¹NE$ˆ U}ÿC—®ì§]‘ªØY«Úá—à@l¹úè߆5íŠÀ¥Äa¢Çs;€ºã™{u SRƒ¬¶dU£í®iìâ5ðÀÅb©?qÔÊÊ6¬o³µª Á’b¶ÛìI¬�ÇZØ|éÛQ,P¥Ìm¦8«´UÎ0­‹r¶ò Yd”Ëmú40cöVF°ƒ ÿý¥\fVZb86{e—ZÅÈ©—*ÍT¡r¦uÓ$ƒë ~Kwßoðè±rôöÄ0Øó—îlæx�cu'yã,—î:tC΀nÄ^ïµ++»_õe»ÓBÌþ`¥éùX2�í‡a$»¢ðpÜgO(ì Zÿ¡Âê(ÜÍtóÚ+5}MˆØ‘G¾ :J.F#U|–¹¬êTa†eÖ‹íé‚€U¿­Õ¶õ6¨À:v±xØtvÛÒ˜PùöÜß„ä­öÇ]"a«cšƒÙ­zæÿŽIL‰«fe äÎÃò>6*ׄîaÑÈâ.œêî2µhiËÐpÀu¯Œ‰ vPx9µ'2 `Ê”áH ¥_ ´Š–¯”éˆës´_Ãrܳ/VõäÚ*ò_ßj –ÎøîÑj‹±•]ç›áð[mðj8L[•þåýß•3síZC2 úƒõM“57DfÉi#•±Aï�ØZrO‡‰I,¦,¥Ô¬ÙÞ,5¶Im;NÕöaÙØ0ˆùÐAâ²@÷±WÓíÚ±Ñ~Wa?mœ£ñ«œÔܵîZ ª>?@«rÞÖ%iö{±à^ºÎ’«x±©í9Âäú·š}Н4÷ó‡îr§áôËr�Ùí<œjvl�A›ŽÜ©½ZÇÊ�Í’Ýq¨µ5hpfzl<ó¿òšïŒÝiá÷Æ6ØPÓ´�ÙÂEäµ ]G3®‹9_ýûâNbCPQîV_ØF¶é ¬ÞÀìZ�Õ^þTGŸ9S?°™üÊß°yó”9À6‘/®þØ“¢#ºñçCC½M_ïc¨ w(»äÌ9’ΆøóXmp*�„á¶uå†.�#ŸQW‰;u�#²Ö›hü² #w~ÛºpœèÚqô ùK˜*ÞùÀwô3�j.c\Na¶Ë ;H›á:É•~µÏ[Ñåfu‘Z-Ñ—~±z�‹ö ¿í@t¤?«ÍyÛìÒeÊ/u?ÞÒéÓ»ðl¼†Ùi²«rÍkK ç`ùýXôK:µÇð�_Eê ÏêýWÖ× Ó¢'ípy-œÓèƒð2&’¹Ô�Í@âj3cñê Ú)Óv@IÚSb˜œÓ]^aÊׇc™mÐL„ã‡ÅR¥)¥—=¯^ÐJ:ÁmqÝÚ|ÕÐÓq:òæJ©¥�€ÿ>â°/|ãxÑl| �õya:ˆÈGYŸÔ3Õ Xn šXYÿM*}µ/yµ+}(瓪öA&?ÿ螘ý¶5ódÞ“¿ÜaÖÄZî4ª?vŒYÃ#wŸÇ˜ùÍ=«³êb)Б…¥O}¬.Úµºf“ØX‹t4èÀÓ€ÖFí ûMbIÐÎK;-“ê«Ó¤úê,©³º¦%CÛmh» ¿±:é†VWYM²Â2¢fó ]²ÁšIÝ¥¹œîÎWæF9ö3…ŠÚ0e¶3÷Bä-JçŠ)G.*”‡*A¯€C´®*N@¤øyß{æ¬loFc×qÕYþëY\z:FÛy&EïïsIzüÌGéfp°Á°£.íСUŠ^ñã€ÝS|hL—þfö¤` hƒ¤x�T“ ßÖMš±5“JšWZ³lrGK�ƒ$·™“&:£9�ù"`Z¿‚o,r^í›Â[…kºÕ’*K±bB™õb%†øžÈõ³×1‚�‡¹Ýäå;U—‰ÌŒ¤(YºÎÌÆG3/fÚÊÙóhŽÓTÒÈLcMíS¯l­x¾|oq H/¦t uƒ–€,žåjQ‹%†íéØŽÅSFÛHF"ct !jºÊÓo’Æ´œƒ¥jíê9¾jcmË�ºÅ?¤æñ//Åñ_ý‡ü�üüõ^©�f:ÿÿ:ÁQpzÃüo&¬x+‹§¬Š' ìÌQü.SåÎSU¹sµëxå;Œ_¸ž‹7–´Dœo<¿B<­\L…Â1–¿R°×/lÇŽwš�þ�cèô›Ü;*LBcã¦jÔqlQ¤Ž»[cjhÖÝ÷ÅœJéûFR�Ä6g ÚB³q7sP�é:�{*ôÛ¬NI¾‘(AĦûäIj¾ÎDBÅcÎ/ùõ?8â ?Âxm(¿†Hº–qZad ÓéÖôÙ“' ú�,7Áç~pŒ1k4‘1Ÿñgç§Kwé°ú,�ÒáíÃKÀo·|æº+X|/á_ÔëJ øàEî²ÙH¯yªž×r)ª=Ýåé¸jQ”Í�Œ.DU$Ðß8òíôm¶ê�:çs|Yon¹'‹r¯èƒIWÚOÔÓ¹ËíØ:@/Ai3¿�°Ñ$¿¹¤u�×Y?­IU¬I¥keMYÒvV!ªÅj\|:Ã*‘š�pÀ  Ê©@6»TŠ*‘‹®¯H‰%5‘ ŲhZ+*oVZÀxæ¢>gIé#/UúÈûòXaæ´ÊW¾ñ�cZˆë-�åo�yî$̵ÄG¥­¦X㨴ÕÌxª¯¼“ýZSy'Sx‡e�1±Ö(;;#þ&Zo¢p|'³çq]þ«.ŠÁtx-˜¤L�ТPGÜqœ¾7W DHz˜ç4bUÄ£žô•©ëZ.a°Mç´0‚�€°Z¡¤‚^�m“cè׊K jɧ¤‡@xTvI?~•m­±åµJ/9Ì<…VŸmR]½Du=ü %3Ée@\³ ˆ ø&Âäzdc‘þÅ�\¦²Ö5Ng;¹Ý–øÊp—>nMï—xÓîä%[ f·—3h)w™¾›”ÓP&7I7‰ôJÝtv n:»óÞ|ðXMšJ—’x䧃ÐL90MdPìóˆUž>Ž€ée•¼ŠÙÔ‡m£=âýçó.=.tÃÈøÅ˜ÙÆ“¿êʺ)n¹¼[Ñé6ê�w‚0EÇÀÛ§Ò‘�·Ym¼­a©hBºƒŽe•ÜZüJÅ7¾µPT‹ˆŒ¿ú+gRG;Þ3;¼¼ðí`6©Ïįøü„g½ 'u‘�¾Gýµ½\Nêsþ>ýɹ/QjœÔ¯Å¯øü9Ö,�ÔiéRüûãféa†H̃ oR¿J?À6»„W¡{ã«ÓÀgNÏœ9æ°žÔ×âIkÆa³ãWï %Çã¤>]…­uü76xë€Ü@EÈW¶g/¨IaRâ§­Uü›ÿôgy @LêŸéïSлÍ—Mê!û…>ãW„ð�ÿ†OyéI�»&³û†ûåˬ2±Ú�ÒÛ¨ÿ¥ëº”n£ø­ÞFuzÝa—ÝFñ $¼�ôúí»�b×U�Ñ>±ÌØ'¶@Urè “P%×½^¼òg›¥“ˆu÷*¡×õ~QÏDJL½ß¸ciâààs W°|´kâã ù”žü‰-NPþw`¼`2о|i« ‡Ç{Ú•hPnÊj�9±v}F\�Ùs×ë$=izG-ý-½§³—Þ³uV‹›¬nbg0I=äùyrwÌ,Š&œdÙ-áÕâdÊ ÍR9«…¹ÂëDݽÃÑŽÀ;@#e 3'œêßÒ¥ú×ÔQª|’3±W”SŒeÀâYÆ&-¤jíÈjü›Õޤ¿æ¹¤T“L¾P³t ãºO¼ÇŽîpèê‡Þ‡C }D—–�¤¿ötð uðŒö�Y~djÏLs›C“‘*�E¬Ð `ÍÍ®¼èyeûì•­º™Ÿ¹˜¬�,´<ÓÃdé±ÞSñÚcñ1�¤b>`õe‹¢E–Ìå†B2ª°~Ââ¨iòH¦œN„5Ê2e¬ò|8އf>ÅaÒ¬ð}€2þ#õçYÈö+ˆõ¦r`µ8Ä«Büù\”‚ÑœgTÛ<"X¨³@R’Žñ2xÔ{k;x€™ÀÙƒÉþ�¡ÉQåyüîDÆmj O‹ì0¿Ã7<—´p¥r?û° -lÀ…ƒ0�_,mï3…‰¸ì½¨m¥·°Wßù’‘Ý¥&v5€½îzsÿœ§�(Ûîš·’ý=\Ûh©'ùZÆ|D?Š-–}r XèRÆÕ-�¥Œù&�À‰"Þ£"—G‘!V¼)·@ãLD9ÃŽeœ•DSÞi¾øº†·±žJ*MW©©þè‘Gù îÚ´IdÎL"çxŽs´�Sãš¼J»X V¶hPãÒN%M.[,a‹ç~Á´BèYY}F$Ω祿[~àR5E¸õ¥PÅ8ÿ ‹õÑ7ÊTô²Îg%~–ú"$±+ä`0mçCܶšZA-º\ÞKµ‹ß¶åÌJG,O�»¿IŠüt-T)iiøÿ–YâÕ¸¿)§Æ§ÿÓf€0§Åœ°ñ;/¨�€sLÁE¦ Ç$¿®>ÓÆ·}õW…—ÆUϳƒË²yXö-_–6‘» MÔ¬§[ÈðÛ _54H.g¶¬6¼Îê“”ÐÎVÙŽí+Õ³X ¦ø“âÒ"«•ÄÉ =¬»„jyW¨K™£®œÎãV"&õ"32Òѧðü®´«ãD7k´¥/O¶ÒØØ I'DòH¦�M›�£”ŠY‰BVAtêåD§êbÄ{>�7 ]¢¤Éy >3l%žï$ã– ï3 Ž!/~ŒŽpܽßU»0O{¹|º‰^Úaôlý|¼eiYצÐbàß»0QwêæTÎ-¯UQ±Çpó»]Øõ�(—DåE%Œ«ßQç{Kø ™y¿Zš›B:µ@‚/üà 5ÊàµRà®i䨌”£�v¬™ß§Êi-º³¨–hˆ9Ôõ×-ìO«�ò¯û[ÈÛ(£ zÅ‹ÖÙ£ºZ@é&é�ºÈÍG¯„Ék+%4oÂKuøÒõ>[ót qØ]2Ølµ-b;¹­OFŠA³\âÙn" ä Gò–>bæO½J¯Ä|:äðhÆN˜Š2iAp=˜m°�££K’_ÿÔ–áÁÒú½v®�:�'õú8Ê’l³‘XÓ_½ßÖJ£Ê•‡B¦¡_v¢¡�jä_„ó³ëynJûÉóÒ$íÌCLƒÝÄ QO“=ò‚P)-ëæÑÔÜú óf1lÒ�òL>ƒK†í!] Â+ÔTni½Ú ê¯^v`Ž‘Am÷ï1Éi‰y±Ê6À!˜M–-h*—qú™±t¼EtùÀÑ=J8Åý=ÃÙëɧOŸ0k@È®�æ`ï$PRÏ×4QTö›úÿÔÏÈÇɧú§LŸgÐà“Ôý;Ó>ƒï3 ÐÓ;xW“>Á¸9‘#ÆËb²¶ƒÐy–“ß4š4FkoþäF—épŸG,‰ ­ áß|ùBÿdaèü�Í€ÿ.] 9ÂÊÇÍû\f'š8éD’&\ào¢8µß"©“À^8¹»'yü$yhÒI––é$Kn(æ>ydšÄÓ<ïV½ÂH¢X�&3³—°�Â4*)Kmëõ{oq4‡­vÌì6<}J¥d3QŒ}L$cűUJ^aj óŠ–òº@c%àu|ú3z>Akñ¤]þ5Ú"kÏY ¡™_óüž8³Zä×�±5³·ÔV¶·LÜÖ›�¥^5'lF`ãAåÌ2” z%yjö*Œ³å,a™/|À’óÞ]9MÔ¿èÓjÙ—Ò)±h¶tgö½eÃty" ƒ1�Yšõ×6 É[x¢¬LØ£Ñåcxؠ׫“öãèÿxœ·=Žþô§& à}ŠÎM&ü#º”)Þð¨Û×sþKþ ŒÚGôà*©Rë䲿¨Y â ÐÚH2CI{"¿!ˆj’O ž|þIþƒ'J¬ðö¢i£9.læxr+Æn@D’þŠUÀŒ(Ò±JaM? û¦NÿÅÀÚO†aDgã::ž€è GÖíÚñçµ÷[¿¿´ŸÀ’�‘Õ”…öE)³}ôåËÓfVÀ˧Zùã/ßêÒ8˜ì-î� Ÿl NL˜æè¡÷O÷±æ2§y à„äjt@Û¶|€§€Nê•>ÃS�†^¤iD!ç>šâ�å1g�U>˜%áñUšÓì3ï†Z囵zXsÏ®™ý;`d¡ÙÅ«ƒ£oŸ}²­»Ï¥SmŸÝ ™FöhÁÁ�xÖ§¿¢vŠ$Ÿ¹æ²× ©�º_f±AÇ“Ø/¨£4‡Üâ½lA˜mÃViƒþ‘xÕ$G縞ü^'’H4N‹´Íw\ÏR¶¼ç±©(Q©¶gé>^ÿü+åP\õÞ%¿ i´£ê¾S±ûm.ŠÌý"/žŒÏºvyFJ«o6FDïþ^t§îù…ÿ¤ÙGÚìØ8'7ä"v #WÆ{øÿ·RМ‘ö¾”ªÃŸcöïÚfY[º¼4(œã gŽžÁêf,‘•h$ù‹Åñ¯øhµêë™ )O'¹-Чڟÿ§vJ—1gQ÷µÿù³Âç¢%¢³áG‰ûCœæGª[–MJ'�sí3Ê4ÓO1j†¶§Àã{ú`å·`A TïÚOÎÅßݨvÇFç¦Áolº+ßm‡¶A{¶—®òʾ™ßÙsPãiÓãËÀ��÷Gç 5´‡à饳piò²[Uw˜,mîßÄ@­üßZ~x“ƒ 3x„S›§ÝËtrò\|ψ�IñÑd±tv=ŽÍ¤å³�kóœ¢i½8k<Ú!>[ûnÒ$•†ë±EÅõå’ßm£rß³ì@r᮸³öˆEQæc…˜”†�ƒš™½YFYpârG\CžÃ¶M}Ÿ¸ïŒÔ $;^” Ìjùÿä ¦Ý5³îD�~Îãh˜�XŠgùr~’óR\ ;?9QJPñF.”–ó]¢5ÐÌ^‡Ô’ÿi¢š¢7¹aÕîºÚî>‰5N»ˆf+³Y}©2Ï3ȊƃÒT*ð“z¥šrúO*+2.!öL…3Úw1…ý %K\VQ@Ùak/ML }ü‰GÑ‹-¼XÔ˜ùB”/(Aï * SV[„�›™h¹u½:EO(æWì&®˜(Vñš¬A\£�µ`!–Ì1Ž5ÒÇ­áèœ+>Áǹ/÷»Ôy¯<K²Ãs¬Ó™fE gäxJ�Ú…kŸ?áõ �§i(Öœ9¡§ÆÎ2®7Éïr�5gY�N¹Ê¢…µ¾©«qí»©…?¬´¢Å9müIqU©°§Ôk¦Ì*Ý·ÁDk¹p–…ŒF _cê’Ÿ’;7ø-] ¾N"Ú,7_½Ø¡Œ.£‡IòÆY.Ýu膜pãr¹½vµ¯G19uD¡^’Gh[ú(èº+º¶öõgvõU¸îë¸Ö}iÃâƒ99÷cLÊ!È€âö5]=)ŸoXhå([u7;࿼# ï;€”©Z­“ª•-Œ]MÚÈõEßlb•;¹`ªÎ¤ÈÎÒï ÌÈ¢n+`w’Q¹#•˜�:·9SâZ ‹'p›bÌ/Ùàâ°KþÚÕ9ટuÕûL€åuÑyî”-.9œ°¼Irþܧ+­'²Ë ?ÄÑð*dÒS ÚH”»Ë‚Í­zÌWmG?ûÒ±gJù!>#4q²Ó~¢åçähÑ÷'¤¸Ó ûB8áƒèŸÝâ¿þ*`ê7—ò ƒò›Ô›KŒ¶Ö̽'šþ·�¾*_¤áÞú íêy‹Ý‘×J,M#IÎ}/}ÆñnNȧ°èËê LžV oƒ¦ÔÌ™ú�͘Ã`¥[HBHe†ëeŒûm£·Å;Ÿ¿ç¤W9Ì6¥`älJ³!þÔc³×¹hú…½¶°-«øƒ9o;ƒÒïS–ž”Z؇UëS0kîÇ!ª!j^[Òm€Ögck#·6í tÒX½ÿÊêÓ�¶`ý´gÀÒµ°ëÐáe€{.­¸ÆR•PÃ2‚[O¬wÙ±Z6ÿ´ê?Ì�Rzÿ“m³±¦LùZ\vþyøÓ«—?¥§˜r8¸¥óòJ%�uzNÇé¤iÎ^¯ùèþrÆ0çýç.V¬Å�;¶É¯p­M1ޏ-õhK1�.ZîRb›ÞèÿŽ=ľ ÞQS¹�>l¦ç3þŒÆ_uA¶˜\<=+?=±NÅ�ŠX„üý_"Ðvð—šÆ‡'c@�¥Z‡Ÿ²îa"Ï­lYN‹g¨(ŸbÊUM©¼$YW1ÌöÝ)óäìÞ�l>ئƒÅ é˜Ï.ùWe_–¶lõÊlΫ´¬bŠV¤ø¢é)ÀŽ ¶•_Ý·›q7J1«âžÈöÍC¼ —Enu _Ì.„'ÎÈXªKÉmhþLš–¬ Q09¶§iÀ{ ñ‚n3ùžÞoºD¥„Œ½@�J�-u¾{¿c{ߦO—ŽàΊ.Nm¢÷8ÒÑ*ù›a!øåÇÀllZªN«Ú©òÉ£²®+S…'‚AðùÒÁ(9S|êf°_i9�”~j!ä_Ìñg‡¾°¦Íj6mQÅ‹¶H^²ø•H#€Ë¥íTÁÃ6ÃÄ/éz±—©£J¥bðçP€0ãèEîb*úá‡È=g2Mšø F§Žä—@ñ‡�<9†ÄPñ^™^ /†Û èÛ�/`»L/�Y‹,ÎÏ�Ñâ¾ßï\Uч& lwKó\"ˆmþäQ\á¼¥*G+¼va¼¢ë›*§kq_[ ù΄Â�^T9bKïÎàÉ=¶ã~+�;"Î [>Õe”iöZò­v…IkzM‹þäÄùŒŠÛ«º¤©á[²XŸ6è¨TˆªjZjÉ%Y&¹{—aµ³m:$1ëX¸­…¸ô.$¯jéì=bmFþh×F‰ÒÊ3 /1¸&m=©È p?²^t*¥Ÿ'"S¢õå®Rû²ê™žîÝ�¦)ÀÚû1ùª¦¢¨ÚæÍÀ®�/ñÒ»EñO%õr5PV§»»¡p0¤6¸Q´0Xû °¹ÞÜ-.eoHßm¥]Zªq9/þ·~6¿ cåù÷D²õ`;ÓüW€Šªâé-�/­ è¤có«šÚºÕ(ˆ]cb<å)GZURMTÀîdß.ê©ú%N¶\"¡á¨�]ÂÍÅN=sííve^|è8qi}P'ÌÑæ¡½PÉΠvÄyÀX8o8aúª(‘2Ĩ¨„V iDüÑŠ=^Òcå4Ñ®QUˆ+¨oå*t›Êvá’1uÌvÃLì²Z¼ÚïHÔË ïeô}†œ‹È? ô{ü—â»–|Q™´d/”³l²€¶‘QÛ¨Ó�…Q^Éÿ´�A·× Û�u!Ò&#Àb�Ž7µ×á†%0[X�¡Ñ&¾q¼h6>…ÆúŒ<¥'}<Ÿ0wF6·!K¡Ñ¼'f¿×–Ôöû•ÖöÛȵýúqIHVVÏNê@é:�áÁj'ªth[ÔNT~¯¬�è§k'ÚÆKuAŒeR뎺í.¯_8ê™Öˆ!dýÿB\)ç´ÌÔ–œ‘™¨ñ†µ�ú;C›ÿ0„óÍ`)‹Ö¦Æ/dMBÄY+E-Î.ì¬vÉ~}K÷ë\]‹‹Àò®£Q{8`¶7è º¬'/À¹LŠjN“¢š3öÙhÄjqòž‹¤B'Öâ4á׫ÅÙé�z}V‹“ÖÕÄå�§—·lÎñfaÍ6^ÝåòÑ·yn€97š"¬½ôo�¹ÈI›MU˳Óz~äÎA¨cÙgyšÌ™Ù—g_ÁgqÒX\·—.¼áäÎ0 Wzpï{§ñ_Ç´ÐnœÄWú.b9=«æ�¥‰[�™ s5°ð;zîGÎ §*^¸áGJg˜eVÜ~·w·xþA·!K€G“¦½üU³eQ‚_:ïø³ÆÝ§ˆâÁ`©ì~Ä“òl|‡ó8_Ò‰Œ£Ôä›N � ¢L§ 5’̺üÉ;éük/0é}”¬–1]ú¡Ó¸K:N�Ò¼‡­„‰h¥‰š÷÷”觘Qi'RÍt©Ú«eü¡±,ËÈéãæ|&†‚íPöÁsƒ–¶š'ZÁàGïÏŸ�½|óãù³£÷Gúœ Ù¾¶¨)†Øo±o1¤V©\šP®\ dŒå�¤šË’D�ËÒD�lÈi“̃™¯OX8Þ3Duï�3ŠJi&/•fÊ¥Kù­0Î?•E“Žaˆì1n“`Uç!͉ß)]ÒÄo,Ì€åàãéöxä�?»åOh3`ô˜RMüƘ‰ÔžG‡Ç�ÄB*©NHšõÜ–�=ãòbî;Þ‹š¡,;µC–².ÉçXŸ.Ýégu·³Ï/P‘;a>Kû«¤Ú\fó%èâ0ÌÄ9Û¹¤+úcbêºe6I¯Œ‘}‘TP’ëv”Œ$Š T¨Kòãf&Ý#ùÝÉ6A+dwŒF+€–!)¢Jul(²{Lg·%úX*¬ ƒ„Èz…sfd–ÌUšª85ò³ã$0Ô‘À¨ O:¦Àv2“þ®3áR…v"fžÊE'ëáS©¸Ì™Ú�Yx¤Ô‡)¦úÈl6dÆšü͘+>ÈŽ˜ª8¡@Iº~�3I…±ÉH¤.k0çÃz³�üÎL'{älß“:ßjZrornb&*t¥f€Šª"hÑêDSªËðmÅ+dþa¦1º¡tE>ׯëOÙ�Éê7!Á'tY^qž†|cü�¬Œ�¥žËtaÐ\}ZµEIQWóžPM¬DÁ[Qo%)x\Só�ÌNT¹ ±Ó„‰¦† ^gØÆŠ¾É´;ª¦Å5�Ö™¬´nÙ�ÍÊŽcY,WÍ«r/Ôõ²Ô©+îdÚf*î$u ‰WÒô±[@ƒŠù(hP19¤A«Î*ÎzÀe"V˜#Â_udÈZ’7¬’Fæ}®ÂÙâ?+sà•¡ÂWÑÒˆ¹µÙÈk£Åôq¼ 0Á'Ö QÍRSb¬×lˆjqý&.[Ú�ne;º•ín±²š·\bE£;­Y–ƒ NåÜ'k‚%=9´£�ÇH5Š6L°4*Å’¢;!E™{Á cQ¦Šj“ü۲تb´+©lV®u±*ªðd>ý4‡nÔ4hÚ/â”mc~Öå{sÄ&pŒÀYùWΩí ¯‰RoÉô�þXíFÍÂbQ9ø¨|íðçv­®0.ÌÏã3õËfŠ›Ù--KAx­CÍoX¤Ç}º”|YÌå �†Á±J�¦Y,éâ¯/Á]Gž|Òµ3¼+´VÖ‰Ïo1#g†fZb®aOÒg«2gü«ü¸2²P)¦<8d:ÁB>ïz <_w& ¢>E+¯¬Š£E B—C¯H0ÉelI‚ßß’Ägíý=î¬UæŠ(uoÀ Åó‹øŠ@ôœÔ”Õ¸¾§Eèìt:ßc¶‘ ã^<|ïo0$õ÷0¯3vaÐ[çÆÝXW8mZÀêÓ½Âp>ú6Qïã^8éáÛ:kÉmÿª¶tuî3·wÙɶï)g-jbÒZe¼¦›²ú…È îUOx�-^IОÍ(—F�mã0ü%åàl}á·ïS•ß’q‘Þjˆ›ŸxJK¬}Ïk¬e×Úýo�ôp¸+5“\åЙÒðP`ào(Ap:`�,,vwßÄ)>·§—�Æ'ñÎ2HZoÂK^�1p€ v(ƒ§ò B8 &` D’ÔSŽ–ÆŸÿ�'ãOfktö¯Ù]›tî¿À=ü£{ÿ¥ÿ©Ýêâïð¸ßXøþeÁ_øk~ï�5¡£ÖÞ:k>ùþÏͳ&¡\[1K¯Ò,í •ƒXž~jß4ßMFþ5ûv›ÄBbqîîžärm J{ŸÁŠæ ïaÁI‡ñÛD†'’ ð„ñ¼/_êõ¦ùïh�BPoáßJç“×›Õ…ˆ�øQÆ¿j>ö~øá‘¾¶_7\¼óŠ>ygι_ Ed·¿çÌ»ª«F\—§_õ׌Ù~v¼fäggÒ-^¦ëÂúa¾ñúÇó�G/?~þîÝ›·©rbôš–÷ÚfxmK�“¨IV›eäŽá<$¹®Nž½óöÝvÝ`e2v¥8`7ŠÒ…"Úª)Óû¿Xâ§·pø-oÉä~öãµýMª¼-—ïÂw¬Ä˜Ü!ëB]“«žsƒc|ùë<8=’Ì’ßýu¤ëC³Ö€;êc™<ù“gÅä¥Êˆu†5ÚŸ$WÊg=8ø"[»Œ½ZØkM×lËÅ3öè~T�…sÆÄ$%xb‡bÜ(ƒœtŠ“ˆ ú²kÑjf 65ád±DW\8>¯H¦…Ùs@Pg¦�ózåV¦ɲ�׈ªÞnIR¤Z�ïé 3ý-ì2ø#.§vTT’ÝKXÖ¾­Ô²´ÊÃ6'^¥žmzÜÎÐiR„uH{2™ˆa™8ÿ$¾�¥ÀM8–è®I‚¸YÀj‘ùbØ×‹×>?™‘øÆ3V‰žÄGÔMÈà1;sO3—/¹'tH(ÝĄ±ŽÿÍÎ4Úî™8ðˆŸ«S+5“þŽ2Y.uÈ›¥/wŒt"QAÅ/„Š*ãjÜ^z'O½áA2•'ÑdS{Ô~,¿ÄI‰7æãès]¡…‰YåþýÁûìa!€·›%ú¼×¾¿‹îÿݼ‡!v1 ¨ì!p2«AbaSg¡°g¡3åÀÍìuDKm׉BkE=‘:zE£Ø-k‹@¤±ûGé+Ô7P¶ù˜/Þ�KNÚ™osNÚ™÷ 'm±¶j7í` �[bà‰R6˜ü¶†¥Ñ1kºƒÛ8OõÛ«Í�§˜ÇÔ’{JQשÞ`Øí2ï)ÎÖ±ÇÝö‹ ·U  ;^èÐ-4‰bë ŒÙA,|ô nòr•C&¸nmæ;#²¥�ï…Øýéà­é}‹wÆXfÕ�nQ+EH�¸Æ»Ïîú�³œ“üçgg’ÕnȬv#) cI«?ûöÍÛó·ÏOß¼}òúGV1>66àŽ5I�ÚòÏ=nöêpÿŽ÷< @Jnà Y9‡úüžw<ä¤;Zˆr®ÖmRê##<‰Ô~TÌý+wOMWü­Xpv¥A'ð0s·Çe‚|U&­JL¼Q¯J£>©Ûá­7Õ΀9ɹv¶že=ªKÍR .nLJ{¤È¯Ð¤Â¢2J|‡÷Ÿ·Z? 2å9Þõ¨“Ó6€H=‡%¦®ñR\UüÑlæ­Y•íNåf¤Ðp1ÔsE¦Æ{2K�»kãiìÀ„&hURrgdÒîpT&“þDO´Ù6'?ÆBqŒ-“clcôìš$÷�'ÎÊ^^Û�Ó»zo³þœ8f»üÈ‘÷§£·ÏÏ�_>?zýáôk9xMy>w—ι �9öìÜŸŸS=Ï^æÇP_°|vœõ¹¸ â¤�…ç3û6ü½dœ€ N@è,9 ú{: ¤0,ålòw=ÐaE@G±'lþnç�r„v È ·Ô Üû=2MJ ½‚�å^¶ó_|:†pÚê¡Bîð†3Š–gÀb™BqënŒöuFpF‡xF/ጞ¦Îè°Ú¹Ü5VYÞ”_¶×4¦9TÒ4G&=¢™GÊz’»YýT§¶wŽ5y½Ž­s×?ŸÎ­ŸÝ—ª¤\#�&ù…ƒÕßS8¦½p³bt¶'³Ê¾D‚²?€X`�˜XÐiW� Þ½>?yýþùëw'ïÞƒx€>á,�hÚÕ=ÛH}€æ*} Ì:�힎9ká2ñŽvò ½élYÓõ†�H¿†:ÌAby„­ÂzAþÆ;æ/ê%NµÑ]ÿw%ˆüaeŒ$„[¸�¥˜Ñ‘J4HNýáCO}1ü(‰ë1Ed›6úC×– Ž~PŒM§ ­ÌdV¼äÅRL_C!ùØ'à ‰˜•Ä»ŠQB$V»:•XfA<ÙV‹bYR”\ÙYÚ²¶Y 2�úe`h×Ȫ„ý*t²µð\Íõ½™"R/Ò¥ªxZí*�ÄñÿT7à¨9„½Š ß°[“QRƨÝÄm�¥ŠãbáF:ý1¸—þu!¨Œ4üÀÆgC]º‹Ë-c—F0IË䃻þ¡ˆØ ÕIF)!y¡3ÒN¶%HŸ/¸dÒFìŒÈºÙl¨d¢Âh«oLlÀ.­Þ×!6`‰Ö Ml{W&Ô™ˆ)ÿNÅÍí­Á>·û&Þ„LÖú4$ÿåýÄ’ÿ*T/HþÓT¿MþãûE‘‡ä?QF €g¸–<�òÿµ»O~-ÀA�fd­€UÖä?EI†<YU¨Â¨Ù’ÉR=‚~œ«˜�©ò=1G]³ÿÿ§îJ˜ÚF¶õ_ ºS”u§Þ¸—NâHü€LÞÜLÊ%,+Ø’G’YBüßß9½h—,CHÍÔ –Z½÷Ùû;+ì “õí A;?³L}/õÈ3#øÈ«ì пmú—>­#Zø¡i ÇÑ+k˜4käœæõ;¬ä*ù_}¶hK×}zÿø¥Øº S©cQ ¹ûº¹�ÄÁq÷�{ g3Zh82B…ÁNR&îlú/��û½»f=ðî…™+¼©ûŒµü. 4U|ànó5ŸgE>µl—~•’ŸÇ‹áMäójú‰zÖ†P*Ét©ŠR5jíßЮ°¶:°mÙ½ò S£ð{ »Rž[_Äj2 +¶Ídª$ç+¤žkLaƒýSú¥™Íû‚Á{æîˆ$Z>“w¥Zn4V°¨ésº¢3˜É™:74\6Ÿ‘0æ1[˜ (Á¡Å»àû‚ÐîÿËÆ(ùxYü�ökïaܘÝXŸADÌ¡SÆ�P�ä^éh^NUÊ2¶o¨dbëãÜü‚Nìð×fi=©$^¤ö¥T+׺ö_5É»Ìi$õ`l�:eÔE™¥ÝÐ’åV™ææ0Lµ:¾xþ˜äkk RçÃTn®oç¸C˜ì€Ž÷&lap‘X‚°Cô`˜²GÝ£9*×?ÙSéë3pÓÇx�›µêJò=e§ƒuØi³Tj¶;m6ZÕ:c¨Õr±Ua •#Aj>ë� Ö{å³Þ…¯&"޹YlÕŽ«Z©7e2¦mµªA´Èá“áÞ%R͸{@8*Ö¡eå(™ˆÃ­…n2Gá•qÀáâQp4®ToMàA£w™<û²;�Š(|]Ë€Lóœ1�³=Û®•61útvßg²�÷dÃÚ+¤°I‘ˆKâ§ì“rR¶ñh­;øO°%cŒ¼œÎcꘓ‹@ÉGS–¤’¹æ²ƒÐÊaª<ämÄ^ú´ ´@8ÅŽ>P¯�SäØcÛà›ÕÄXçô^…4C~µ AÖe‘2…]¹¢ >š×’H”Âs¢Œ4[¤DüõTÍÖžf÷ü�ÄS¨$°(äZ"à°¯MƇ »ªbÖ*L)òÛj ±41˹¯`.°®èa;l™Ji=|¬ÄáºË¤Á<$.Ž[”Xw„®à,Ü–XnXVšUúF%:ì„ÉÈ ‚­^ר ýŽM[t„2ÈÉÁ=༃ jZÖœÐ+üÇr£›{y®C bÇ:^ÊQz9JM•ï9J ÛRǺKÕ}ÄzãÁý?™¿€Ñ Ä/c•3CàþöO?}è¿ÉöHE¢ß/1�íÐÌ&OmjÀÜJ{‚Š ]�%ɼö…mâ<õØ3/yL�ûà�âÖ“¼}‚nì�JNÝyC1Ò’syˆ]Ÿ1ôäà:Á¸†sà\ê^©•påÏv�Íg»/4ò?mBjéa=­¥‘`™_/ÜÕq?[¶–êzÈ1òÓ£LWU„ayk„Š•¨=)š>i Ÿß „A~aU±FⓞÝhæ»F† æ{Í`½ô»ŠÁÚäˆ4HþPÀ,kWª¢dPMž™½ªÌL¯§ƒõoÿF3‡*™ËqHIB±‘ͨ`Å ‘c�ÃŽm]Ÿ‹™\ˆ0›�8õZC©(¯V* de½o’ij›¡È½éï;µ˜Ùp‹”ª™:X‘”ê›´œi&L@‚Ë0zRx¶™pÓH*†[í »Ëîî…ÕÞib–žÐÌÔ ˆ<&×ÎÆh†¤@?×_ÚÙÝ þâs†eE[±ý¸»›½E7¶¤D†‹aëêˆãÀ=ùíM1Èm¯WÊY„l¯3eL& .ÜΕãÃcå,‡y¶Ü,W]¼}»~ž€y–£J y¶Ù¬–[ÜßÉl²" ‡g™MöÊ·É.™pè )$Á"‚œàiSÕ…;aôŸªti¹”®ë§A¬µ-•¶´_á ý ZT™§¶Ìr¾Î>v�.úö†Ç½7½G½Mîñ` )¤cm±ÊÕL··u‹y>™�’=$W/è²O‚³ÌÛ`/Uûx©È�Ä>ë]Lnåºß’KiáúJDx&×òöè¤0%²3šêY~4üG3Oëyc®ê˜å&ó#K¶ñhšª¸pæÀ ÏT©Br»#§J�uD­¡§C&ÂiÒ�$ÉIZG¨!¡s¬ßúFBôf{¨Îe_FèWŸwë)v’P7’Â’;ñ|Aw#U5Uç x^…DÕE@6Í�W­”Êù‚Ä/Vʤ•Zµ^áðf «Ðñ%U”IË•r³ÎsC2IUóåWàŒI¥¥ZIH¥õj¥Î‚ê¥z«Ä‚¸T;¦¡Õ"°¥¡p�|w–ª­z0¦àtÝ<‡H˜-¾c’Òýôd‡Y)ÁèÑF-‹å†H?Ä�M{ÈâŠÊÐ=‘±†7´×fš¤È)³w—hSCT8-Ûzñ ëe¦Òu:µnu�Î., (ÔæhºÐ0+_¨àÔÝ®»cדÜrE°�Ìýð«ò®µ�· RÂ-ø»¤Ì ‰É±êC�fôîùiöœæµÏˆÒ¿ÕõkM½_“L˜ëQ‚g ¯ñ¸º^‚S6„Ë„ËA_—>žyû?Ü…ê"¯X.p+>Óû£TréHÂV#w„JÒÁ}—<�’‘âg½ ?z¸�ƒ'o“upËÂtŒô‰5¥Wü3•ŽZ¤åà—�±Pò¬Ñ2‘[ r"/÷ÏN^€j|sÞY û—¥e!?ir0›½êJ1âü£ÚJBtàUíW¥Ø�?�Ðf `ÓÝoGQµ9S£¿¾.Éuû‹­œ¼Vð3¡Qaå+éÅ^ÀÁf e –¥fú‹œfzo·eYê¹-ŸGñ%�u¡¹@[ .ûH5™}ƒ–5¸{q?×ÛØGšm4*äFÒŽ&YU¸%V@ƒAüÑV•¿\$Øýs0]8�ÞÁõ“ø¦Êè·.‚Q.G‚¦ žÄ‘à-½Àe>6¶óXOB…{êy!ÉÎ�ÞõŽ?�làMHû“†$ ÷_Ò¸¨äŒw™ÑRœ;&=Lîj„D¥9»žú¤^GZ�gèK¸ÏŒÒA¬ª—Xõ¢|ñ�õǯ‡9~eS ÓËo‘� •p5 z+ýIèLAKI‘ÜB÷Òf(tü¶Dn@Is‘d[&çk}ûè ¡F†qæ—€�ø3‚.=›Õ$­hÓy…¨ìä¢`£]fµ’ǶÆÑ» ;“ºÆ<þon_£9 ƒr «~ZëHèÙxÆìVØQì“H«(]&t$úŒM�o¤Ì9ÊxDÏÜËñ8ßNlõ€ ‡ä »sN{Afø÷Gª3åð«LƒŒ•÷dˆ¾•#åý+xX�ð zT†í3PÎ ø�z•÷R*–Šå¾•÷Ô·r¹Vêß·R©Ö8žo«ØðÁۘ̉2÷�(W¾eá;Qf¾eâûNÆ~p�p­nóf[jtq¶¾Ž[…ÉaÇzc%ä3^!»µlm»#‚�Ÿ b®œxW,Þ|Ô‘é-ø`[qó Þ¬¼a¸©o Iô“¸•¶��ß·êø©¶bÈ&¹élÔùä(k]™¨NŸícNé;;ºØÙƒéâÊ0Ù  X•—J0«‘Tƒ®¨ÚÌ0?«ãϬ|Ë?š&×v*'£v¤C ?)ML°T¾ ‡^eÕvá"ÄÓÑÎZÞl²owÜÄ=úãÇî´1ÿ¹¾+ýÅn¶U¡z/x³©Ækë§í3ÖøF[ ¶RŒ´íî¦ì¼í‡d`•oÛç’‹¶¹­Çó¸$Ù8V^‘ÛÄw3Ò™x€ ïLªÌ”/5'0})Ò�teº§-—|Bÿ©D![`açrNaUÖ¼–EûiµâH>½ó,éÞ[Ê7· ­NBï£å홣\ªSl\[‰µ�¾aŒh¶VîWþŸ¥k¼N—¿k3ËÄTÙqŸûÚ‘R/KÖxÑ‘jyd íçʶáNl[¼ ‘¸%£¹Ìéц–f†ã œPqB†ýÚgúX¸¶9ü‰®%!Çα÷Z ’8ê�®}ödñöN‘=ñœº¯kGû¤| ?wß {Çý‹LÉL�Ë´Rxt°ã®OŸ»»^Œ?,Êðò~HµOi‰¶ô©ãÊà™eæÏˆG=:âAaa Òç�gǃ³Þù¹$w¨Å–Ö“ ½JAj¤ƒ 5ÉërôÑÂÆÛsº¨Þ%Öˤ\µfRfsà-D®:¡xr=0òÏžê¶Îà±F~$ø€¡ª.îåujQ�á¥å},œH]JšUã�‘w^qð´mÚÃÈüÑŽn0ƒñž†ç3bsñë,°Jc›É ‹DI"5â°†DNµ ‡o…YŠŸÍ�ã±DŸúÀ4 >÷Hï!0ÎWf½ç°}fÛ]±Û‰.Š„6ïaòØ; T ú¾˜wqâN-MçÄ’^áZ\Y>ÐwwýLj½D?ÐA¬Bä°¡ŸÙ*±i”vLX�ÿÕ�eh¯D<Òèá¢4†Å?ád´}´­@û|ÙÔù|zÌÈgAÝÖäî¦%›#ƒ‹c¨Ó‚�À_´ÃJrVc!æaHÊàÓ˜ÒëeÊó‡ÐhÄ7�†îDǺ»kìîš»»b©Bƒ6üAƒ¿£{ãg?\};_ 9Â’;üOÖÒÚ ™ÞÄêmSñ\§ó 6C”s—vÚm] +Z Ã|¥SÃH|‘`%UÓ™ ½$(H„œŒ\—@9uJ–âüðóù°Š:t·8¸ék[Y3UuÖòS¬ }­›ÎÂÖƒüÑÁ^®”éIï,L[JÅ”ò$0/X[Ó_Ûæ&û{)a9M%ö PäЖˆ×‰$ø‘‡)c Ò9þбz‚AtS§–LØá ÂKw:¶òö½§Œãu�tŽ¿ª«©0½hâqLê®w8—ÑÉÅ=%Êa6žÈï 0÷té‰IÀÍpUz;Ux9Œ“ÿ§¤€|bµW.ø¡•ÄQ,bˆ*Õô:|~¥&U¢B%˰L!�-=Ei#*bzÞ:uPj¡Á"ÐÎô™áön0CÕN iˆ(Yˆ¿AìÊ®3° D<ŽÏ�Ëáo¢…áŸÐÀ(M1;iÅR[]FÉÌtÿ˜éÖh=)> ¥£¼Ï¤ÛÍñÑT‘æ“Ä6{éWG)ñ�æRFH³¯o‘�tHc yÞâü™•ƒ¡Å©@�‘O&˜¬OrZ‰ž�ƒ -%b|›\Bhrš¨ƒ�Ýι¶“…^™:tϹ¿f¿QrËìrP1Ëߟ zÁ‰îêÞê¼fq2ŸÙRœ«eíªäHôt!c�n²o†~ìu,²ŸGÈKžS ø�ãƒ�„üÑ3˜kÍÒùëKzT„ÕjÈÊ*9BÌËÜ�û¡»qBñ^Â�ò©0ö¹@.ä”`v^4 À§MòqÓO[äÝ5©i¶ãNíphÿÝZ ?YÒf)3·j…$eññ l�pûG\×ëSÀƘ�lË¡Õ!Œ Œš÷Ü­ô=f–~d÷i¥A=ykõ…ŒÔ[«52øžŽ ™3J\ G‰ÏQâWkE‰/ƒÌ”÷dBQÃiï|ð�a>ð�R©Z®®ïÓñã@€8�ï4y€8õ¦ùzêEžÿ®Q«‹­µV«Òdâ�R½Â![ÕbµÆÄ[ÕfK`ï”å& ç¡àúY©Ñ`âåfµÈâÃ)¼%ß¡¨BAðrJcÔK (ðŸbnZ™ÜÒö2Öuçg޽¤cha$î †«—£~�ÃÁG29Ç0¸^&}ü³^+ÂÓkìXµViɤGƒØ+ ˜� ¬ cÛeòÿ¬a}׋³?¼R>â~#• ¹U¦°toÉü=Væä^¹'ç°Ø§ÊŒÜ)éÁÿ/”3zñö8â¦ÜNŠ¿™¥µ»IÔ‡+P§x¿Q(PË$ÍÑ0¿%ÏÔ7m (c6j,è83�yXÕ|¯;ü—Š»ûõÂu½÷¶jø“‰Ÿ½š?qðÉ…eM]cÎÝ(ÿ…á“©rç° ‡ïé+ÿ°ëâøð²Å’KeH®aªß(WX0!µqï*¬88ßèÁ1¼ƒãËQ¾ÏTù$Å:ºFsE[Zàƒ=•>¡é}9é èú‰Š=0®¶dï½)ÿ ¯—ãÇ�è$�sW\Ñ«w´W£Àqn¶ÊÅ*;Îü’=ÎÅz³Æï{° !xœ[­b«ÅÓoUëp@èVe{̹Æ´\clŒ(1ò<æsÕÔ§msI/ûŒô¹Ë>[豩¡ýÃÏ´a)PÅhÒÃlÔ“MídÊžvüëAª2¢Íj¡ß¸ÛºåßPs&³„Á‡4-ó£°Æ¯X)ÏAE½é½»¹aëú®‚înZë'f-Ûø®kô[´QÒ/#7èýÙ;;¤W·FgC1œ#úZiy¥œð/è˜j�&é?Öç�ÏïN_�X ¹þgŸ=@cå-ЋMºbëSKÕ@viþ‘èÐø¬¤K8>ºjJ;m<éÐÉþùÐ3% 'ŸÞö?üø±“ø´¸Óö†¢ÜÎΗj±DŠ_ƒøRüõ�áMLuçšfСÂ_ûSÕ߈u·¯`~ìBpdj¶ ¯½D¿.æø Hr@ꔉ®j4û œ/µ¤6^!ãï˜ÉñÿöŽ©Á‰ºéý“”5–ðü0 ì¡·Ñ ¥+ÄAÿwÁlÃà™3@Ìi;cNwwÂé±ïøRÎUÌ1ç­,û¹Ón³ß‘çÊÜrÜSXeõJçD[òs¨ÐÅßÓÙêKK"ý[’—ôháVàôŽÄèm³#yÔ²£§"òS:È, ÄÁdÚæÕ¸Ý0e`«[ÐIf-ô�©Néb€>°iRR”¶õAæÑ«òRfvcjö%ª}µ@uÄÙÈj‡¹�á[@û@>S^N•ÿ¦à<£õ°m§sP–S–ÓºÖÍ—Œ¹=ÑõûgW cWÉyç±4ǵZ¥VŠ3†È¢ÏªÍF‘çe,UK%~�a€¯LtŒªº›Ø‚7À¥áxîŽúg¡->T컂¡ŒÿG¼à½!œì3öĉ— ¼”½Ì]ñâ·¶:/Īƒ¯¾–EØV—Á�ta§:®®á�_ÌãMz%áÀÙ: ˆW” ãƒÇKï“h°‡˜¤ÔæÃñ0w…HÇ'Fn‡rIk U>ÈN!ÈŠE4Ùƒˆ+yÍj.¸­U@–]}æt®Ÿƒ±x9!óvŸFx˜21‘iQ{V?µkbúxr�á {ô¾û¶RU¦ƒ@²7¼;%>`o{a_�üÆéÜ@OùhÝNx† òA°ºÍr{¥Ó‘»,:⦿¥aÉo�ÆîåÐúæ�d[–+%P�f³¹JHÖbT§ jd%Nu@;¬sí²ViðëÇœQõ²R+‹l°”å¡:œæ€r ÜD�¤@œâè3Õ˜¾1¦ðöõ}ûÁA€} ÑÇŽòÏBµU]yž ÁJHD�¬…éR×JVy^N"@ÐÑŠŽióH °–sÙUVÅ~)èŒyŸÙóžÖª7º6„S«Ƕ5Ëî +} …ß@Ùè÷®•÷ë K" ~ÍœWVÄܤú>iöˆìû#ZFúüI°]3Üm!@‘9…¥_øø7†~K´cµ{¯|žÑ7GP�+‘³0ð‰­Ì�\ˆÞ• “ý £dzQ´%N³z�Rd§ÿÊÉ”·½ÙþòÕ#³”3:Œ‘YíàÌyÉ£±5§ÄMÁMû»ôjï•ô»«Ü°&e™<ð?Bð‡Ä¯èÀT¾Y¨ÛcDéR&ÔÛ>�A©,Ò1Î#Ÿ,ËG�Ì�Šy­OÔòyÔ4Ò\þA`®zw¸IðôS�©›æk4h¨6tZ”‚j�GKº&˜µÔ‹°L^åÐ$e€tý(ÂÈX_Kà“ºž^Â8h³{½Á‡ïõ{Ç0X;N¦” íÙÝÕtØú«åÈèf=ïpJ£µ±y. 2 ¥°‡nŒ+üò‹´�ùˆp,0E'•ï�Ñv€ ¤2¿» æç<9ó«T[ÍU¹vz”ù9æWi”›ÅóãlÎó6'‹·Å¥ij0jÊwåèݧï‡'½o/Þ±wÖx T›×Ruìþ£I�§r‹úÓ±1G(ÔwïEÂÇ �d¿¶ÄšÖªeøØj–Xöh²0¯£²7­ºð0WÝ l6A�É"t>ü©]fÊÅœfâa.RV¦cpŒïú&«ŒTóuáƒëÈŠïñ7òA¸8¾Ãt\80àqÔ+]Ø/t�$ÿøÛþñ·)ï_é?—öþ@¢á¤,ætÀ.p™ó$¶h�=ÆNÓ¸1eª›Wî$hXóˆö¡‰Â<È? èÜL51ö�Õ $E—äÃ1lLjOx…‡ì—Á@w¾|ÅPÅ�r€kŠ6 8+¸Ó±™¼ëº­QS(‰�IIÔ-«ê�zq¥KFc A]�Q Ë—„‘p4U´§U®™Ô\®U«Ü)Ã)K@WgVkK}`‡Ã7ý“‹ÞÙð¸{Ñ•È<üð¼ûgïxøú/‰\µ%ÝÆl©ÖTÎAx›9%Q‹‰Â‹Ž~…Æ–P|ãÑÂq­ÙJbÂÀÊš:î½é~:¹ž÷Þžö>\HáÀGÎk EóÞü”1RAò Á˜j¶nv”/–28ëŸvÏþ~ütqÒ»øÚQx�„ï•Ù1¿˜|«ï•¾*”HÒ2Yyð­ü€rm„îÊàY·Ï™T@=}@ˆƒ?•Þéàâ/o'ÓH~ê)tÚ_$v¬¥¯ì5¬öý€Nrûa)÷ܽ?çÀ/´ÿgï]øÛ6Žõá¯B£©Ù@(Á»¨Ãø•e;q�m¹¶“þ[U?"! 5 °hY‘ùÝß�Ù v‹ )ÉqΑՆ$°÷ËìÌìÌ3^ryyñŒgbv<›x?¾Iƒ¥£˜ÒmÏ¬ÍÆ6Ì ?Ü‹:“ÊotÓIƤ öêéu&eÁ]˜KÅ”Hð1m^é‘Ì}p‹êâÕò¨} N>!‚ëxá$«áÞ¬'Vë¤MñjýÉ_Þ¿¡k¦‰_as…sB \ï¸ôB üSz© i%bkVF+—°R$ 3C—ΔÅ[OòûÁ$Ü‘(¸µQW­ðYÌõCZ ¦î<2nz&ÿü†žüGÇo^¼ü‘ȇ¿¼|óãÙÛßÓgï^Ÿ={ùþðé«çÏ æ ²¢Lã¾²Q½-‡lþØØŒ9äãâÆt.Ö›ã8jŒd™´ƒó«!ò«ù£¹•ž„§Orë:<�À‹Ý%ÏTq\}lj?ðúë�øÙE±Z‹^G\´.æywÌóöö ZÁó^ Ë»0Û-°¸^š¬L�(ó™äoœì€-�d�¨Ÿ™MB ®ïÙÓPyú ëX\A±§o¢”ꛊ!°¨!›í!ÐñpJŸqö.@Ô†~Ô¹wner'›Èi“4ÿ¥^²~w“nx¿ÿe›^ª£Pš†�Ii>Bÿ�5µ—VLˆUû{ vÞË´¿Ö8lòw eþkö¦e[Yº½¥áC¢u‚9²¯Åó˜Vò÷Òh�œÕ¤D/é’Diǹ7ý¸^émxJŸ‘‰^9ÁköU.!ŠB_½…œý˜?kÙ” À;ú ²z³Ù^âÇŸüx/˜Ñž�GïñÉËvÔ{doÄ{Ü)“ÁcðwzÁ’¤aO÷ˆð€ï &ƒ»‰ðø- ºY²®�;”bE�eÇÕ�Ù4½órö4Ãü*%Œx çÓ²[]X®^ÕrM� ²†ÐÁš®J?<Í4€-X °ob�ÌY`%C¿1nòñc½j_9Wß9h¬ÃÒ3¥5⊄ÚÒ¶oPW:Ö öÂG×.Ñhh€øQØÞ©Y&cCØ>Ì¢W’µ…TuæSͶô£°-Ì?EnK–ÉØ¾—³Æèµ°ÆàòºSUÌË{SÅÔQêözƒnÅ9õ1wNuûý~§†N—’ìdb‘nAãöppý˜ªRêœ(’¶7ÍÛEüå#»cjÄŠ+4‘Øï´š®¸"RïÜʼnÖñ{ßÓxIºwˆdõ] Û†Fø»Ü¾8n‘õ5V•V~ %g0PÜ$+n“o…pƒ†qiÞP°k'Dîõ)·¦!¬—ïá)œŒm¶¾w ³i+êa¦^zŸÏp²¹Ä�mi‹›EV$æYý©zõ¤Üþ½öÒK(µYÝ*”�ä =q 8…lµÂªK!♑áNì÷Èk7CS× Ë‚Ây0�4¼=¢›€sù…Y6¥íã$æÍzyN 3Š`�hµ­ß±îx¿_J÷*gþÛv‡eÔ‰™ü¢‘×¾0·�î¡*¬…eW1¿ûF~O0F_@Ó|ÉB"5“IÚá—rïɳ×�«•K@·6$¡b{,ŠÃxM17¹�×¼�ýñdÚhTJ¯sóýf܇¥>”QÆaXìN§p€œŒmÓy[�¨w3B*;xí¢—‰sQürñuwÀ~4¬åÐ2·_ãçÊ|‰Òë´ºöÝnÞ^2x츽Þ>3=B£xú =bæñ«ª "Qég–)‰bI­åÙv¸òÏ“KPDL�±„žm?úê6‰œËòKf>Âm\’à”¬w6SP'Œeª.Oòk�0 ý#,€kæã¥4ȶCp]¦¿­m8Vl’Ëè M>?xç:¢¡Ò©£I¨Ø“ì®GXî4=ços©^f&Jê=Z€™ÞsæñÑ£ô ã}Fƒ3Ð $-Yɬ¾´-�EΛ”¤|j�‰f[V¯&ÛåÆjd~ó ¿õ‘ޱüšmPÅ�¤c còñ/D~m5O”-‡½7P¿fë4×Ú&DÌ<…jo˜]̱֠©¾+7cÀÃÁ$¹W›¯k¼<~SÐ2›üœ�c]Ù³· piq¦?¯è˜°}8(ü'%åú±Ög"å}ù¶àÞBTãŒg¨1 ²Ó å$ŒÃqüæìÙóׇožatÛ{ê¹­ì¤è?¡Ä¼þ>zIv¤óç5 õŒžýØŽ�8â"V.&þî×VsA¸ú¿;�0³DØÒéŽâoÉ•iñ…é  ÎŠ^®œåW¼H%‚¨[¥úGNA½ßÝï0uùEªðO{wÑH/£éGJ&çÓ;ç}­VþŒKyIš�¡š÷CÄiæ]aN9çÿqZ²”çí¥—øY(§I•=†#ðþ^GÎÄœdG\^©Ç_¾0öBpéå`>%{‘¥$²ÐÚ?Ì©¸HRþFKû./‡fÉéË,GxLFǘ¿ÓwrÒhU˜2Z)eêž0¼<€Jé€3~¯ÕÏ’ŠW wAŸF†ñåor…’½ËÒã\¾ˆb TæÅÀ^Jk"—\[ì½¼Bˆ0Â(ÜÛ8šÇh~À¤Ü•xp×’ÂWô8U{æ|ÿ:½î>c ;ûPªy“&áT\wD¾ šaCA;'œ‘…Ñ3ðà]új¿=ÂJ½Z¤œn€ÙÝ~oÔ‡'ÌW™$jw;mÚ x}wØëB‚�;ìcqÃýÁˆ—»��vF½¤aL—ೄ °‡ûø }!ñ 庄Öªî ±éû¤1ìC×íô±Š´Cê h3úÃ~Ÿ ˆíM¨ºr¿K.(EçX;d" l*%Ò³Ý#õ˜‘,‡¡·¸&KEðpËhæ-ûÆž]¿¤®@üy°‰V~H–ô2z 鉸OvÖ _×ì)DÂÈ• R˳À#‚yMd×K›ªÕÑíR´fœnì«`ÙûÃÑê³e(zM× }žËbH£ðü ÚNdeoµ¦•«:Ì /ÏÃ*�¢H©¥H/Ô¤ï~~EŠ,Ì�½6)+ñ~ꕹ˜EÔB:‰WÓw¾7»–‘Üém ¿açÜ›þ2òdè#ì„ ÀT­Ì¡)\nÈÙ²Û¦ñôÇsˆã¬ja$»ú�BAÉ�òÜ!š €¥{ìÎñÿ€›Ã­ÈL•ÃîÃÀ2Rw20$ž»LB{›©„z^-Q4Õ$`Ý/Fêk ú�d,œüJ>Apñç)£‚<®RJ-DÃ* Ñæ5\«5BÃ�ò㙜±ÀTñ”&Wt[C†»[@úWUl—uÚ¢f‹¦Q(Òµ–¾ÎR³ëï“²ë®“ÓƒŠ±e 8K!w)V9›4Ÿto&¯Î(~ †¡DrF öÈñx ¯ýÏeû‹_΀©(z¹ª˜;é½�äe_Ô¡WéËüåQ¦Ðg'¶—”Ä*˜Véå‘p%£Ö"ùÃxS¨ç5_Õcº'Ûé KnR±$ÎÛçï^¿|ÿžœ5{† 㳄¶ˆüòBå®0$ÌJtÖì" ÖQzû ÑJr‘ÙVKÝ”ÕwS�Tä.»+*Xä^è½�KÁ ¢;ÞÝAµú'þ î�3ÙÑuÚYñG5¶–ì€þˆ#.˜°µNØL°0åzñJ 5D«l7Í3?¡u†R·Ô=ß/'ÿúî&rÞ.6WþùÞ:؃û³7›ý˾˜0|sò$Ù#Gã%5Í>«mßu™¦+ð !bŸ0ÔæöšÝ£à„}}ÿ¬¥å‹À½^@P™i¢LÉ¥û¹ÚÈÏè›üí¶èT)Zâ¦øÆ Ê™3[‘“#ô? W3E®æITtGs”4òtÀ ‰’áì"ÇzÌ+§u5”Ç‚o¦å�ÙÇH�“Éðè9�7yÂÊÓæR+rМ(�à¶ã�`MD’ºí½g±ešÖ±GFÔ<‚ÒTßϨ `-¡Ïîþþ/m–òÒæ—iQÒŸð­MßäK @¿L‹cIòÅaVi¦THêL‘šÓVÁgqƒšLÎ>óñø€—ïàĸ‰Ï�ÙÅdŒûŠb$}‡ðÜ×*°k ggä “às„¶‰Õ2„w Ž5{Ÿ^Cª–“•r…ØÁ$dÀ§Ïix.Úà·;?÷ÈÌ5ØÿZ ÙòŸ¤Í 5ö7M¸ß!�Ôš¢zÓ–ƒ‰p¨ÈE�@Œ;Ù™®chÍ+’ŠŽ ¤O0à 8'‹‘�çk2dÉi–N<ž„&€�’Ulr5¶ñðÆ4è´ûöðÍóWÛŸhžø±?[OÉ¢N)�¨ÙôÄ?�„ä?MŽ 5\Nð�“F̬¿•Ñ}û†¦@6ÜŽ„ã8±lú­ƒèQ�Oï‡@–H$¦�‘~"/¸A õöøý˾$�ÖãÔ™�Œ/ìÄ™–°u¤-J3GÉTˆ–¸]fÞ»T7‡³`‹Gú¢ÎÞˆ]óï–|“¡é]Ráb-((ŽI+G&<]=(Þ& Õ6³Bq_%#0 u�S|¿æ/G¼Ñsx‰Œ-˜8Á5Q˜h•—ã‹¶ÉNo–ïÉ“Â$ÑÒ§w‚`Ô†EzëñÆUºœ=jïxô—yy”ªÌS¤4ø«½T�Pÿ�úóN»ïŠU9tÍç·Ü?8q_†S K�pà(rÄ.š'R¨YÙ²-H¾ðô4ª;q�·Ø'‡öóÏD¨Èn©Qœ÷"þíË’s†¨vì(9_£‘-û½\eRéƒÎš�3>‡ƒ†…Gñí™´,}ÒUúùå‹›I±€»æúpÚgòˆ~á2Þ'"FC¸+öU*4õ–+^0|g}üDάðãuȯà(€JZj�/ÉxÁÐM(ÂÀÿcŠrS加ýÇ/¬ëÉ;R8‹ ãL� ’3¨óŒHÞl¸Ñ(#iÓìžd†ÄkH�~‘¨ÛZ¥nË;¡ngÚB”ˆ\¬.R‰‡4¤×˜I‘Âæù®V¤Ö0sVX¾át Se‘l7*ʪ“Nå…‰Ú-�Ú1‹n– B“eÏZbÉňÃ]‰&ÐÒ[þ"Š?À¤ÿ-˜¡ ƒÒ½“†â›7Dpéq�Ò9WXbV¦pûq~}F× c†@‚³(ÆL¦jÑbá$dËõt2åÐSü™¡–}ƒÛ;U‚Î�æ+7Ëhþíô—µ`Ø+hþw¿R£yûˆÂXLíÿG��•ý�.µ)°ços‚“¢Ì/»nw_òµ�eüéŽ; Y7 ‡¯^ÿíù³³—ž¿~!ü€®äß'ûd”#4ùÌ1Fgëã ȃur‘™¨‘*pŽôgf+§DDÔKÃsøˆÇRË‚­Û ³("ÒÀ 5Ccc¿çIc@Äð‹ç�€-{¢#þÚ¶¬ÓS‚×ý̔Ʋ—LvÔh�ÉM£nÙ‰�áô3�¡ÈÄ~rIr§zaéñ¢Ñv;täîL@ý' Y°ƒpµN“ñ ÛÅc‹}±6v´Né;u£Œ-õ7Ié†Èó‡d-mØfþt‘Œ;69Γ±k#y‚±îÚüpëÙV8'ËÆbŸÇ0Úâ=W"t­`ÑkúÅñ­4Êp`Òòá4µgv‡ü)‡~»ÎÙžoJÙ-ò¼×ä ÐˆYßd!˜“O¤lr¤œ,œ74µ=…CÓÙ¹Õsj“ Þ*Y/Ðý’Œ¿|ZÁ“¶Á·¸ßmWñg¿”ñgŒéBh0j³hÆ£yx $uØ/ !D^eNê0‘[3^¢3¦eK}ÈA í¶ô· Ã%<ο|!ëð�À|‰aXÜÕ0°”¸vqÕòJ÷’Ú ’V”‰—JÖ{²òÈJï�r·lÓôì„löïÞ”·¸zÛÜüu¶š7yÎrZ*´Mz@þœß�÷THà‰LA¼ Bè6Dc—·2n]Ì{ ÛÞ©¿Š–4Ô<9c¶TóòB§ÛÊD³à“eÊ#]RÃûX|êBºí‘GŠì Q´HƒŒWJ¿’z(2ÅÎÃ�ŠgœŠ¢òÞÂTÂÓÛ,8ûùú�糞Œ[Ÿºð.›y ä c/ì>ùÓÈ�©3"OמF ‹yÄc… [”�ð?Ï?§1*!êý›Ø¿ §3�›Ø�—.´Z”‹ün ¹!O‹>y¾H(q¥ÏïH›]\ÁÃãpq�½`·3¬²,an¡NN,šX§;ˆ÷Á¦ñtá‹ÓøDÎÊògcK¼µåÁ[ò/úNú^~bÙl“�-ö…Ì„BÆ–úÛ²¹]–ž�zrCJjÊ=³6ŒivsL3²Ê/‘?úJ•´{ög�^À;žÌÎÖ È/üj ¥,!Ï*tmé$d§ gÄÕ,|(¯.‘MšŽMO‚ý²èΦݫ`è‹iD›ðæ}àÍslFÇ�1¿¡…¹ÕÿåK¶ËtV;"¬6¶Ø†o//l¸lžó=1;†‡¬ë§d†¯ËüÄrŒ“srÎÙ�ÎÞ�Ž_¿ýãiãæŸa£1]Çd˜Æ�Uq?€g„¯Ø£N# wÔ]}ƇçQ<#¥ÆÞ,X'äE»Í_3ù=êmÑøÃ…,Ûç½äÒ›EWãF»á®>7úäÿí†æ¾á¸û-©šq#‰Á ÓÿÁwáß’…DæäzܸXø´vø²ÇDv"\4âè Ÿÿ{�@øØ=Öéqcê‹þy‹`îÑ›8ù9–—ŒãFÁ'>e6�ï0�Áƒ•ù å|òÉãÍ?Cg‘Æ0ΗQ’ r£Q{Bì”@rܦ:«+o6 Âù¸±OÐÁ`(Y ­qº¸e[I wßVh!m+´šµµvy¤ne÷ÖÉWw‡M)Ÿcñ@_í�ÜÜ{çd‰®SRJuE‹o¹êtänVKí[ød|:î]- š]¼ƒEV»‹1]Rw®®Æ ë1Ì~¿×›ÝºÖ9ønS¯ëNÏG½êÕÏï•réÜÖ 2€ýe“U'‚M„N¿o7²ÿ´[„ ü±U¹óFw¹ñjtíÎö^ía¤ÛϽÓíW¯£w³kw”mBw·M¨óˆ…ÕÈ,N‡ì =í!s ±"vä�ñÝQU|Ëã ÓRF™–ÒãZJÉS͈q7‚áªÍž o毣ٚټ Üc¼ã —y:€0ܼ – ‘'¬hàyj…´hª*Ö˜XöÊ“XYúÈ0æÝѨSåx” d ‚ Ì|r¿ÛgÎ�ì6?QG¿Ì¨—‰¸È-ñÄmOÐê�ÿÇò^fj —}æ* ꌿé%÷Ö¹#‘ö«XVã N…b=j¶²cˆàÒôè¸ÍôU 7HÜ`RXŠÎè´?c�¾hˆ3¸ ‡hmà™ÿ§´u€žËh þ¿x‰;¡7«ðS¸+S‡fî€�62U ëˆ.ïàâ�ÚâµÒK"4ÒƒÊ?EDîhÛ7ÐîD!‘»þpdÙüç ËL¤¹ÇGY Ò¢�€� ºŸ÷tÆ÷—ë¥bÛ`€×að|Ô!‚éÆnc2¿åUsCLQ ŽkÌãù™lôù¸'‚üê¢øÆÔ¸l+U1S2‰eÝ‹XhcK|�>Õht2�h °Û¹µT0¤¤Ÿ=ߣ’ Ó-,ÉúŒ�‡  T.äôPùÞÂ;÷¤Aª¼„f'{z¤>¦÷�méÖùÇ€ôÛ¼$â% ‘¨ ¡ð&¥ÆVŰ€bL7øKÒÑWþœùÓÊE/£_÷¢äs®l"]'°¼¥Äth$è=î±K¦ƒÐ*Ï¢<2á’/£O~ §üÞù:M#“HV R<óªŠU„LXìwáï HkÁ¸§dÛNŸNÌ—Ù ò¼›0ž¾Fkǘfû6Ó|´å¢InãeKÉä‰!ãZéâ6¨*RkKïl—H‹q.y©*R–Šq˜(Ì�¢m›Q\•à•½åö5½VwÀ,½x„ Šñ'™$4âÏ¢u OÚ[BI×΄íZý_�·Ý¨—X𻼶5n¿k7²ÿ´�Nk›ÖP·] ½âø:­Ú<ºº»3h‰uÈ]® dZ3)Aòµ*‘œéÔîQUä€OÒ?¡Á‚�)ÌlR}cn kdmz'`È««¸«D®ÃÕ'�X¤øíášœ=®>/V hÚåB¸6¨F!’âHP8wèySX€8�ø±¤fÆ¡#]]/‹÷{õ½-À\8‘\nQ2½‘–ÌdéB #E’ˆL2W\˜Ï|§"@øš‹z¥@Ê\!™r¦ª�¼ÇDý½„°Nañ¬ç�863UŒWéÊÝ�o+^ËÀ%%·Åv#êÈk\>†(¿Ë=.`ˆLküg¸âëÀÝMïøþ0íÀ¡wì9yä·á¯èªO*5;q2=o—Ÿk¿î� Y¨ûûåŠß]‡»TÃ{»9dÎv¹"÷ /ÖØÞ®áTݾíB†åZL~‰ã˜Hd�÷HÚ�„|Ê9n§«s;|™(ÒƒxÊ—poFþüB~Vby¤{Ó;^gE£q?ë¯tèe² S}?볤Ã÷°nkw7å=­ìr®öþþÅÀ¿õñP¥:¸?•A)3 ·xîе ¡F+·ußýÚ:a`B£„Xªxè*g8‚¿²ëLFt(ß»WªSsï‰ Õ¯ýî«®œÙ{ìvÍUEÏÚQÕuïט‚{"ËõkÿmÀ}u»æ`\â(“ã™À\ð,øtO§¤ÄuÚ’V�×¶»T ï௠œÏÅ'ŽYXÙ¦‚¥®·µ,I!n»MŸi\Ha‹ÈKC¥ÄþRÕÊ9n§O‚ÀT,ØQ O»ýÇ{—ÍxK�ªÈv^L«qTí8'µ(ò­æ[•n*ÈÎ&+·ê…&\nS&š(o¥»u“É¿ªyf£&æ릯¼ E+ß9ñÒ$™DNU6ÆÔ°_ƒ_qG±ýFg X_cGÙó—Álæ‡BÜÉÞø‹E°J‚„ Ï|¯÷Ûµ…ݯ9ô÷Jv_ ‚ü‘™ÆóÍÛ«í¬£!¼?êsGCØãCØyX…õ‡p7ÕÍÃÚ«T}͉ ïߤòò‹ÑLI%β ¼ÀBmÀn£U̶3æ—ò¯µó6U·ôº•B Ò±k�µÈÀíº³Û–¾E‡ª·çÝuHÞj¿ß)âº:f›ß«{æÓĻĭðkk w®–•±6™&Üï–ÕÌïÂQv—Wë=MmÕ0Üã¼×‰ Ýo¥àÖäÅ~ê”´‰»œG¤†¥¬(ýJM«©ùRTGLžãªýÆÌK.™ ¡õhw¸¾%ûõ[mÁÊÿ†{´Þdl¥×ùÍÆð·ÚàõÆPÕ*ý3üÿ–þ,ðMIm0 WŸ[4¹Ã"/WYAfªêñ˵%¬FT’iL‡ƒTâ…3¥nu;WŽbû¨ªnR‰{ÛJ„§ÙFX5]¯|ïÒ÷ŒÞ¢µµ~B5„~>l©ßºè¢k�ºòü´Êy]—$ÙßAKî¥+ÚYq̓Ñ,,9=�f×Åo ö)¼*¸Ÿ¿¯ê.wª®xZî¥w;Wgê�`"M§ÁÔ[p©cÌfÙ¹¥áaÕºáÌÿÊs~§ÍØ}-|ÍØf4Ìk‡¤dá< ÷JMG5ÓE£³}I!BT–†™Õ—¦‘u:¼�þÐíuÌVþ(£ÏüiSðFþ†ö{ÍÈ€ÙºìÅÇžäÑÙÁ[­Mã¨ØÆ°ÀÝ¡ê’3gH:Áß�YáTÑ:¶{,îë‘6V™9u‰!r¡%6Ëèp�šsßO¯Ê rh6xçCòa6ÞS_ÆÜ�)™’Þ.νXUÃu³+ýzÙ÷ÒËõò\™-^Vñdõ»çíá`ÛŠbRPñYí^´ýá.E*öxÊýø€,��ž¨Û¢Wå¯;’;F”g~Z{i�.ü;t(°«P®ð:ý?ê¶]ׄ%“±¼âÆiø ¹Œ Ñ.õ…ˆ_mj¯>_;UòÀC¢¡PågµHÄ »ý(sð(Å ¢pÄïw”juI�ö¼xÁ¥ÁYµ‚æâþe$ô~ßïú±­Øï&ÇÝgžGEúŠ>'ó�ÞVÕ°s©Š>‰NÙ°J“{›.KúwÓ¶Yþˤ±OŽÂ*ð’¹€3¦ƒaôöC9<^e ²Û!–c³m�XRÛ-‡X¢ã�Ø‘žÆpÔît««ç8†^ADD9ï^Fî– —3ô‘ÏÐà÷ØÂ§Z½·J:à Èã½`Ãyõ®ÿ�X-3¸bV±¡°§A8ë`‰äÏïþ Cú¶õêÕ+«E#’äp½¡„¤˜Û£7{#<Р3ô+VÇ?puD¹Õ�K"º·Íd\[l&c~y3öÊp¿WµWhÈ«¹Loö;m�³ÓëòWû#—£»ïû�“¡ø,²-FÃïЀwûûíý}ðn亣}Çp^ —¢Ú@@‰ Ó¹â˜*aD˜p"Òð"MxÌyà–ŠŽ‹ë÷ëóe� \[ï‚,Û÷Þ'ÿ;ÄdI8&‹ °%{é;±O˜‚÷ÓKé‰P$¤ißIðaöˆ&UòÀxÒ ,rÛÃV“¯ž?Œ©á�§úH �BßjØ5p[ûë‡ ? Åt XO¤Ë¯)×—/MÓãÉÍGÿzlqÞÇ�ÂÚ´ìkˆRJZŸÐÂåE-!ê"�‡ÆHìæ«�iÆÒ¨héJO¢ ô@ô„€ÐÃK Cï¬}k!›¢Û±Á¯‚ØQ«Þ$ÕèBFL ôÝZµ¶�´þX+Èx(Kš�»qŽ2E6G2¾_y±·L À_ÁðãàP÷uqB´x…¬,Îé#ᗫшR…ö¥_¾Ì[ÍEÑÔù7!U©fÎË©VÎ[3¶I:Ñs#¹|ÆËôv®žÀ0€?Ä·à&ó00F,ê c!Ü œ_òé ¤Œc°km�rº ¯Í´˜/ZŽ\Ìí½!æ F Šåh/p’‘Œè%FA/3HH+}8R,yÍX¶iæeY‘ú ЧV"i}´øäÿ�´!º²N[Yšüb&´(O‚l�[†‡jXiÚ�UÀ°Gd•žÄÎêÔžhaÁ2|iJ·)=bƦ•IK‘TÚnoŸþßá<ฯ Zsiÿ?×fn�1À� {ä9å@:ý^oH9�áþ`Ô¡H§7v)Ò‡ €3R—ÆÜmw;ms—ð%½^‹™\³q´Gdl?T_ÓúÑOéSÀª˜×öíÀöìØNìÇäg‡+™ÇØŽ_‰( ¢�zó”b†q~&åa¿x¶Àç×ãa{§~˜øôY,³G£.±yTZÚ“ÉÂÄøD*W4å!Úò�yùQ±yʼn•ÁíÙ8 ìÐÅ x¼3ƒµQ~±±£ ÖÉ•$‹H,ºÕÔSÆ#ËÀJÿžH%c¨Þ N¯¡‘ØXÄ;ö5AòI©Í%ûïÙ3²%•Ñ �~å~``¹ÃämLH,ÙBÍ›é%ihì‡ãGme–…¯ÃcB ƒ™Î× /ÎB§bµN.)k‘Òpñ§ÏÞ½>{öòýáÓWÏŸYwÿ/Èbð]æ”AzïÍ`7‹S,œ‹_N�éwÅogμøåÊ™¿$d§øåº$ætÉ!V¢5ÂáiTqÂý5Þïwúm)2ZD6ÛÍX±) xü—÷Ço€£Oü&~M5¸¸†–æ°ÎD@Hš>†tÖ†(ŽTy’ž@üå“fQ‰ƒÇ��sy4™­¬T_/5hµ|,CPÏ|ˆ4×NüÓ�¿ f°6>alCà;÷»½NÕù9¨féì§ŠO8ú»ýn‡×ñäÄú“ujkžæá‚Am5±¬o$€M´ºÞ‹Â½)!˜*„*iå1K Î�¨¤ð^3Í_/‡¦ª`taÅŒ•JYáÕõqx„UÛÖ4û%¡¨òˆ6– ¯ZˆŸZmŠl9ÆL=ó/L±˜²5cP–Ý.ÅLºx,ü3èU>dZiXæ’xO»‡–Ë�7…Ñ"§…aÜ1ÀSN#š)Äɹ4@B}@Bý_�„j¸ûVPk6õ÷ô÷ô÷ô÷´Ü å÷´d!<àžO¶ÜÓÜÓ[ú€{ZæNc�/pOpO¿N‡pOwV<àžRW„ÜÓû©ýî«~À=Ýf pOpOpOpOpOpOpOÃÜÓÄIÃéø€{ú€{úMÀw>àžî8p¸§¸§5k|À=½]‡pO¿ÑIzÀ=•Gã÷T†ÜS©i¸§¿ý}À=ýZcø€{ú€{º½<ÿ€{Zðê÷ô«{À=5ŽÊ·8ú€{j²ÕÀ=-&ʸ§¦’pOpOpOÃÜSƒ|qÿ¸§9±´`8U6¿Ãûm�j‹Í�²£C¿LïðÃ@Á(Ý/ª…íòzu¡£¢$|Ýká[ÆfÌ>æ@nó�ng40ƒ„N ø¨û¨sdÅÁqi¦Ñ*ðg“G® ‚ô=˜ 5S'ÄUúœ:ZÛµ °l‹™PX­MD�žëb®M\ËŒ�P¦3�}Ò VCÓBÏy«u@x¡‡©c’:ÀRØ"𳸱…³#[i†-›k6š­,9§GÑrI$}ê£mµÐ»Þt‡íÇ�¥lZ7©@g[Åþ'–êˆ.€‰©gI‘­x/­u,9%+Ö:(Ë?AdºFšM““BÉÄ|–>á!D ¡0¾i`9\!8 \-WiÓT¬¡‰d´Ö¾e ú·o¦Ëa›‹ „w7êTÄþ’ì>\òQøÊGø¼¾Âr.-½Ç�›ÚB,È% ßçgÆ.x>¡ˆ^QøVn} Çâ…RÐ0èɶ“kZ(ˆ0@1 g¹U�çg‚މª0ø"‡íÈwþ¡?ÕÉß1Ó©‘Ú™B„?={Ÿ†Ãa™À0ᢠ&/*†É£3�áãIðx‚ê‘°–ÑÚBÖzQb¶Db‰gAb¶>7 ∜zHq2ìü ›) 0zYa†3Ëí¹n·âÐú9Pæ ØZ‚Á»Lf€Á3®—-`ðŒùk¢YƬ×q«Îù3²™§Ûï�2^·ë¶û¯Ûïwû Ïu‡CŠŒ×ŒÚ Ï%ÕŽèPÏj@ÙEfÇOãdrÇÞµsAN‰&á‰�®'-‡  †ýðèQÚ:HYE„¦‰µŠÂ<]ß n•‰š�q~Š q{”Ãc1Ñ’þœfˆV+G 9Þy³ Ú¢š2½'l­×J�Ý8 §—Q½ô Hÿ6Žæ1àd®‚0¬YÑT4ìZº“L…ÔÕˆrTI]—^Šª”ˆÝS ¦<œ²QÇ]ˆ'ò›=Œ½ ü¼Hp@ÅÏëÿ^B@MÇLù ]7 wu«‘»Îr6#Qt#DÖîDñ qŒ°­ž„Nu?Àü»CP±£/×hÒê4%I"ò”Ç�§\Š<ÕÞ s~[(2;% ðº­38(~ö*$…î}»ß�¿LÈ3@!FÏ94>Žø±O@R3�zû½v¯ lþßÿg _ݶ»ß®�C�#û ?Ï*Aç»m<î4Ðùn¯·ßÎ�Î3€úGÈWr!_{í6á6äë â…=_�-»$?Ö+Š› 2t¾Kä,C Óà�ç~z´ŽMç—À¿‚U®Ã8khfmD3ÛÏ!\—³”yPe2>«2m QRKŸ¸©'­å|G6 );Hm¿")ôËWìóžú(_¼ #I'aDõ±¢\ÛBÝ6bPY¹T*<Ûf#ÆÿâÞÆ|²ìA‹Ë ‹Þ±-B½é嬖ª–¼åÕvm+Yya¾VYïvÅ÷i¯ ¥SzM’ ìK»cÓå7ª*o¸Ó*-X…új½ëeHÕ t!:¡·ôKV㈠ÂVVÍ'ümÈâSàÃmš®½ÎÐós­…W�Q¢Ñf…trïdÂpþò²}'H`XÞùÞ î:Et³¡�9›tü Éqdæþ™J†ƒÊÛå:BUÍT…°g`†üXðØA2‰6„3 m…œaµ–ô5dŠžQh´&hóˆŒ�ȾLm:Þl}NòêóclPÒ‚,½W5—ŽÆ+²ÄÙ’jZQ¸7‹=Àö¥ºªg䕼S6:5 #-’K¢¥Pa‹RòM¢b­É�Ž6p�úü₌þ„j9I Ok̽ãÈ~ â‹%›wEŽ•7÷è>Ï&ØÐ\ªï¸ŠƒÔ§@Ë©¦\Åñ[¶T›…%‘Crs„ýØŸå‰�¥Vb^Þì ƒ'´‰¬E)ÙÆð,¿Üƒ—þ$¿ý,nF~±!ÍÉ–ÅJðA½ ¶3éy³iÊ�û­‰¬4“zó3I7‰K…¦o”ŧEyOa¹Éê '?Pùh2b NðÚ{0¾¾á�Ïmq‡ÌjøB<ˆóuøqÌÓžzÆ*³‘‹oÛ‹¢9´mÒøË1¥yY�ŒÛ.GÄÄ<8PÌŸÉ�wä¾O‚ÐÛMÏyAáÎáý ±S7¼}œê^¡Ï?³ÍêPöî!ø2æ¯ñM{‚Ñ`Þ®x[Ú6j*WJå¶6ýª9%ä�z”: ?œ§—-šì„Ê þääÔ&¡ºG%À{N[ÍÜüDNäQ T;tb&“IDO¥Ç�}D�' ð3ÔAæ�lœ3i®[�øLúñA&Î4=XÉ¿Ù$çˆ@Öý8&‡D“þôΉœG(¡@ ÞÃNcn ÛBfB ʇ  ‡É„ÅoE�òx6GµâÙÌjDªYÈjïÑo;½Fø›ÿÔªš‹mf]¨Œ±ròê„#¢5¬å=~t�*áÙ÷’¦)Z«L¤üv'.¿_’÷w.‡<"\Ž^û%fçøá�3» øŽàžàÂXý¾@Oœ±.<‡~‘ÏÁÙžn¹K30vÒŸ“³«0-c<àþ‚a “u¥ ! Ÿ@ï—¼ )È€œÜ¬èñç¼ùñì—ÃW???;<:zþþýñ;{�øÏ?c|�9Y°KB ˆ®qÚ:åŠ,¦Éêfê.EÏÖ1@¦3Œv[QP}dc’3‹–×-d¿d¿°+üJ‹F.31-Ós"«Çò‘ÏÄ%z�÷èøy|Áj§ï�-á«Ržž‰nXÅË‹‚²²a(D€7nê�Ü·'SÃEZjì´êˆÔ¾²Z o6Op¹¸}—²=¾1Fl¡p?ز|–-OµŠ‰0K-!È\å…Jepé¢+]ʯ=™ðÓô ü‹³•ÊO…ã/‰Í%J·m_Øûv‡­‰>7ª¯¡LÎÍ�]^XM¼W‰ìœ_ˆÆø¦ÿüìµ¼ßÀ²a Óâ ºÂ9ÝζƘµr¡QçΚֆo//<ø_€Róª0ô„QÚdòVë[°u0Ÿ¡A‚ûQ< Ðü‚”›? xð4à!hÀCЀ‡ A‚Ô¬í!hÀCЀ‡ ;×~÷U? Øf ‚< xð4à!hÀCЀ‡ áCЀ¸vÃéø4à!hÀ7�}ÿ4`Ç�{ð4 f�Anס‡ ßè$= �Gã!h€< A¤¦= øí÷èCЀ¯5†A‚l/Ï? (xõ4à«{`•o­ÿ!h€ÉVÿ!h@1Q~`*é!hÀCЀ‡ áCЃ|qÿAŇ‹ñÍ‘-áÓ!POÄþŸ½�¸ Wƒ~ÉaàÁŸrPí š¶üa:ƒ¿óíü¦F«Í”†#µ«ìQ=à�:§Ÿ€5�ÔÅnYºMRÍò‹y£ü<›� ¡·©»,üƒìq<Ðl.$IÉŸ8ŽR/Ì™?oݺeQPغ"gMîQ}-f÷Öyéæø»5x2csPseðØ …öÀ~…”ª5{ýªË…j.UGîÜ�’©wkp±îoç«GRFÄ�Ö£›š¯ÚÁ` 3ÑÖHt¯˜Dû£‹Î�l@Õ "!1Á#—cEdEƒ*–Öéí¼ÞuÜ‚ÊŹku•«ôvýP¢êÔZ´·èHùê½“Ž°Õܯ5Õ¬„:G…Ë•¾ùs¡×—Î…V@q+vžûªŽ©ƒåVš íÜüÝf¼fó©m×™ëYð©6=ÛmÍ5ì:…eíUºŸ¹_ï0y…mÞiÞj´™­8Þhz‹HÇ‘s4o5ObgujA¤4vÕ¶80& µ‡ƒ®;ª@8ÿ‘Ͳ¹;ì.9 ›»n§³O‘Íp9 ›;ƒA�cP&“k\\‘žxB7!Žã¢,Vƒ¼L¼�p2¿f@½ÀCÍüÙ3RÞIJ2ðI½$ÌÌøšbêM¼4:oêÙ[ëÅiò· ½lb{{ó µZ_¾4ÓÉ¿²' ﻥªMþÉ?Còdó¯ µ«è…ßX‘vz€ÒÓ¸$E4 ÊqÃúþ/ï�ß8°´Â9‘L´ÙÞXBÅ«pò,Z¾ç]+†ˆÔ ªq‚†› }Úû„p°u"½büÇð!%øG¯¬Ñ«kT¶šŒ×È*I{`lI?,›¯å±Å¿Y5V†« êc�êºÅgƒ˜üôáõ«*¬=ψ½&£ì1@5¯~,«ÌÅ2·µ |ÁÃ;ëTÍá÷¥ø¶Á¬�RÕÞ™z¥×þtY¤5÷Gðw »ì]KŠ0ñð³äY`Œàáv»íªP0K³BŽUÑíX¬Šýýöh˜£èn¿7bA˜hØ ŒU�Ç�U*²03 !Õ<Ãb™f¨ŠP³9àBî…^ÃêcÛiÊð�µL:œ½W‚¦ghHMÏbpäN²>ÿêUÄГ>¬Ì´² êYѸð.ÛCn>e½¸Z¦Ò¸¥£Ý¸Êù"åøW9q>xç,Gy÷:"…yÝts/VÁʧ`™;Ÿ[Ǭ¹ø*b+T Ï«@œ‡É£÷��~#ƒ7(t=“h¡|yCl±ü¸Þ¯‹ƒ×hÕÅ•ûù$ý‹Ö‰¤î’Çú£2ˆm0¯EttÕ‘¡•ꦽ²ûäÏ çòÁ³_1—÷FŒ`˜)‡ˆO±6`sß Lœn6ù\n;Z©Õvó«½�|²mÐÙbl3tÛ­æÚZ°;ØnBØ(z=^�˱9С2|ŒO¾Œuì¿`ãLWòš“p„íÿ³ÛîôHO52~¹ã�V¾€—d ²Ù+<ã$bÇaáHró6Ò< ™÷7>Ió1]äøo~¢’mqK ÆJ€ …Q˜ÊùÏ¿o»½[ ŒÜyÁf󀈀I.så¿pôbL ­’"ß( @A( Gª¼Ý íóÃYÒˆœ×ºì�¬W†•‰Ü¤..~1#â]5ö½‘H„’·Av•´s›�á(µÄôð²û çìÐãF‘šÃš;(¹)߇¿»i³Sá×-NåaÎï¢~òß"³)[ÊÕÌÀÄÈɘòz8À¼Á¬qk´[u”Þ‚¨—ŽD‹|ÝÌç|§p )á6§—Ê e¥ÉÏ‹C$£ŽsøS¬1ÀºÕÞ~³pÑÐä:‡)¾•^Ú&dË[%ë5wêõÔÝa…žú/¨§¾4ë©»ýÞ¨GõÔ½öhЧzj¦œ=õ°ëv÷™žº?h÷©žz4€÷R¹×ïör1•Q}Þ²×™r{™¸ž;K{íü‚ÒÔ彺^šä�-]óË�®W<ÕødåüçÔ¦Ýä×Ì™ÛDPòÒg¸Úh�vOž¢»{âÁˆRÂ~Ç�–âgâºî5û±p^‘#ФÿE2Š>6\\à$T,ˆÿà‚˜™ƒl÷÷‡]¶ Ø,ÆÙ ²½w° úî°×¥ ¢Óí�ÉÇ9�•ÝHc»²;_ÿ• ƸKù³Â ²5”$\<ƒÜ±UœJÊOúŒoˆ—ýxÇ12_ÄѲÅñP�pEØdš|±iµˆ8ãsÖ4ت(Ú^'˜µ`›˜ ïˆñZ¸…#ˆ£‹Æ^j‘dVn€�Ë ±i MŸ±VBSÃâgÊÏñ ¯)?†¶ã8Á“¼fžP– ù´Íøf³Ùd¡ØØÓÅÝô@u¢†äÔ}n3+˜†Õ¢WÜ„»ƒmŠ¡(Å8§6‹ê±.Æ´KÉfÒÜa:2“­l4|eŒ» ®ÍÆ'Lfƒ§N‹‡ÈÏ-…Ïžî:>“ÔIÂ`µòÓxæO¨ìýó»—B½ÒIäºù¢ùÁ³ã×o½8ñc²áFé=zÓ§úÑ?ƒá�E†&šbDZÇ7åš¹0%#̇E²©ü’cvŽúXÉÛe$'ù»(J- GòüüëÏþî&%åž�QÐfÌ~)Þð79�Rè¯Ù\Æÿë»o3nÀkÜ×ÿ²SþpÞÌÿAæÎ¼}Hú‰^îžg¼ "åûÒK÷¦¬¨Ò͆5Á§’ñSöj¬&Üä÷^¯Óíö*VÁšn½Ü*À©�îMJ0ÔR‚1¿,%D¶A°_1¿æŒEû£Î>ãÐÙöð„œv ozØ H4½{TË`6_É}kl·ÉŸªîä²”ªq%ƒŽƒ¨D•é?°Ú�×ä¼NÑJ€=!ƒn²�½›u·[‘iÞëY=²K ¶Ïh´^ÂB¼¤ûŽ©|ÀFÔ˜ò¥ ˆS|zµVI¹`Ä€ÖÿÅî)†’ZŽœ¡¤öÞ`(ɇ<™0u«ÙÎQÜ‘ñ¾ñxp%ÁŒsIé­Snâ+ì"‹—2aؤ+nYºæDtVÑï\`VOè—á›ÚVYŬw¯ÊN�á¦W9öÔ)Vq¿äŒ.˜äß÷Åî� Po «õM´Ðä0¨ò9ù&Z^ê ñM´Ðà’ m½ÖóH•â»r°ršÆ{”êJjWþÏôöU1ÇT£Ñq¯R—ûwd VÛØƒI±nqÌì�Qq·¿ßÙßÚæXã¾{¹¯n.7¥WÊDv©b…!NÀl“…=‹¤ìÍa<ç&qpü®êšÙ7´´qhSoRß–J¶Zǘ°ÑªñQN‡Êô­XÚäÄq_²>ŠB®{•Ê�¹G¤ªItOÎ'ÓïrÓõû6GR–h #±Õóo™1’dm$Ùî€wÌ`ô¿Öܦ¨A=ƒ™�Ä÷õí™Ý¾ù¾B;O4²‘‡†¶ÁÖfwË–üäp~S§LòZ) Bì“ ;äÈÚÎJd+ûuCcKp !äíh•´Âà\�·%‘ Ïζ#lCJøZ9Ö]„ü�=uv\nÂ:«Ü*7ôåÂy¡Ï™ME±I‡±ÄÐ˰'lsrœ²|œ”Z·ÆÈ(Tp¯‘Ó§A�§à†HwÈ,Td\PÝ©YŸ§+,<�Ûêp@m‚"~Ã\Bµ"(YQ†Ê4 iv¢Ç÷¦p0*š¶Q8ˆƒ‚ëð('Á¶D Á6ˆà±çžú«´Dn‡”`Eš¥­8Ÿrã+IèžABʨ…�Ðé×·xÄ¥sicç©"k˜\DøœaT‡c2d{3ó†7 lÐÊBÁá*Šg,¬ýyì{÷à�lz$êeà&±bØï�ÜŠM{�›vº�\!ÙˆPq"ÛÕ‹íx³%êgæv„ÑÃ/¬pNoe¢ÿÞp~dâTk˜ÍsBAŽ+R�(€z·ã÷*3z´D£4¸¦xvíÍ|ÂO-’¼Iº«WCžK}ƒüpÞ©@p´¯k/í£¤ÐI©�ÝÎIé66éZϲw•É,Û�÷P¾Ëv×ã°okŽ þµ¾£Ü°™®WÿÞâF‡lßÖâ9YO§>Ùa�¸MµRÝV¥—´‹b…'ö6¼{ž;ÒŠe*Ï}Ç”ûNœÿ)aºY)”7Þ£ÐU0¯»ái�ü™™ðÚ5”â»^\L‡ÓÁvƨjÍl¾í]ó_yqHX„�óÓžëöì°g}Esvã 4öEÝc·«».–¡¹PU“ÝëzíÞðNF†áéÝí¸Üe¡lT EªcR¶I·Ö�»•»-–�‹±Pmd.¼Qwv'#CÑŒ�hß~8î ,6YIò§s7õVAê-‚_ý;Ü2À:ÞÕN¹UYÊ�’*B‰ƒ*$äP¾9nÜéˆí^`Á°í^`ÁØ•¡ ÞíXì^`ÁXì^`ùXä  o5 œç¿õºuA´×ª'œ]ü§y®�i 껀�º�¿Ï�lLyôn¿+ï¦4Ó„×9Àøm 7W‹›|û�)7ÿöÛònJ« µ%†¥®Nü°*”|sTò½–!(©@”ùò ßO¯;¤:>æ–dúÀE¦ù›fÞaàÖì÷Ô M©'5/ ž` ‡¤ž`�ýN�<½ÌœÊ.„SÙh»ûðð(óJ{›Y„zÎßíÀù{æüb¯œ_í¹³°×Î…½tBû̹D‹Ñ×÷f1úö–£Æü~e‘óTò+Kr>eqΧìHó)[¨>eSÙ§ìÒye_Ôò)ƒ¥Q±¶žæ|ʘ#Y$”®?î LM[[Ì»lй\·Wӥ̘Sn2sŠƒ¥ù“Éng>3zX­Þlò$ØÌ}6Äï|„·™ÜlXɪ÷E¨èåM ¡ñuY0p²ŽÔ¼LdÙDé õç�æfÆ›û!zGË ñu'F‹j~8#ùãÇJÇŸ8ˈLê[Åø÷Ç�›WA8‹® ‰‡àŸ;?(™´Æì¾Ît LNêôÄ �Rf*†@¾n€5¾î6Dˆ]Þ½ÎÉÚhBÒÏɉüë¼&²Ÿñ«¤%ïãØ»&Ë ?•×-²ì¤ŸÎj�\Ú{7.Af9ô��9•¤ä®$Hhq¢ø4½œ:©=*ñ[2ÞÞÜÂo OÊ Úæ¼Ø�]”ÑÖb R„5XË‹k³à·»6‹~G×fûôÚ¬_xmÆ~�â|a¾ƒ[­ë½`¹çaå]S+¤‚ggÁÒ›S()[H)ý6ù•Yø/p |Š=€�ЇÿQ0§Þ¶j¶õy¹À+´Ë4]�ÿüç««+çªëDñüÏÂëý9ù4§€U$Éën×q Û×èœAÏí¿ÂÏö°AŸ�^u†No8è4:=§ÝÞïþâvœ�ÛüÔé8ýN§ÿK§ïÀò|¥•ó�×$Ãþþ~¯ÑÛw†ƒý£Žëô‡]ö«áŽœn¹îhDØc§ÛÝï7zCgäŽzG¤’n§¿ßè œ¾;j�<í^Øèõœa¿Ûm@“ú]òÚÐs�úN‡päwÛéì÷ö]§7r»£Fwè †Ý~£ã¸#·Ýit{Π¿¿ÔvF£ö O¸¤±ƒ^ƒäë¶{¤]�‘Óë(ú¤Ûm÷({€ý6D´+#Q ô¥×îñF`_Ão$t¦Ÿõ‡×=â]ÄTû >PHÇíˆÂJ†ý#6~ÐRG�µ ›ívÚnƒ>p„ë³Øõþ0+‚NGT�ƒ×‰&ÐÁuy qìÙ\�öãÔtú¼w8q¤A¼ó8±Ã¡:ñbìpUŒ:bpÅo6úâ7›–�O/�Ï/¯�Ï?o_¼í|ýð®ñõŻΖ¾:ùÐñÕËÇ–­muáÿ#Û�xñâð°ÿ´„ð»ÅßÍ…·Ýi�ég�á%ð¿Hôþ—K®w33O HS±A&ÞX[à(n²1©B'­¡èë•Ͱ~ ê_z3cØÑ} (ßùÝxS>ÀÊ/ËÍäµ KGvW»Œn™®‹ËKµÐÌï‘]bûF¯µTáA¼}MEÅ)w>²÷—ˆ�hˆ)5õL@M,J[yÏñž…]/dͬeSÚ­v°¿Ì!U2ª½á!¸ÿ j‚4 ãdg9ðüÕ¶Ž, °³1A ß›+‹lzo~+.ó[IshÌ[£‰ÿŸ¡õN#Tè ñ¿p„¶ÇXÿ?2Bt³b‰†°-zyý’š"sé…koqD¡;^RO.ÕCäüyE¤Þ…š-�Ï\Ý—¤FžÎyº;äéqHì8H>&µzˆ)köLJ[Ù#)meO¤´½-Òö·H;Ø"íp‹´£-Òî Àòum³ ¥ô5g*—£r¾r9*g-—£rîr9ú|DÎýпÒzK–'®9jòÊ�P“WŽ‚š¼rÔä•+XM^¹ˆÕä•ëXM^¹”ÕäûÛ%wÛÖéWÒxV»ÁÆÎ¯ß°^´Ïpø»%ê\€QùêìŒ�-×_3ÿ_$µ}b5íˆ(ºìðPÉÏj%:;£áEj¦�æ¶4ù4‰ž<Ú[^³l–­–B½ê•$&�pQR6rŠƒF�lÔ‰«ÐÇ«ªŒs¼•.Mì‡ÕÃÏÒÔý,)ü)«†RIY{$Õ\ ¢ýU´GU I½Ö°ÁUÂ<Ô]Øœú}¦É¿=íâ7ç^®uº/tœB-Øk5‡ìk¡¿[>TëÏþòOEÓÜv¡ž2S›ºÔÊùmíè­#jìˆHdMH|×`Œ‹€ym.·‡ƒ¥þWîÐ^‘-Ö¥2«!ð_M½,5"�Ž ›,µŸ�S§]1N!šËÊÛËUjûnå8uzöü.ÆITÙgÁM¡¼xçók—w~xºtÑ–w9ï�)áÓS ®›ï='HîÝMJ—ï'Ã^É]·{‡[¸ËÑ2Ü~«ÙíÓµéÞtt ç§»ÍüT5jT¹8»ûöZZœU£P¶‰{íZ›¸çJ#ÕëT�T¯8´æ6±5«ÕÇ‘²ÝÒX�½ÆÒ»õ`‰Z‡b'çÉXyØT�§«k¿ÐtêçÕ<öfþ[oîsïÂÄg‡¡·¸&2Pbxʇ»ð„ímsÄ~Ík8Y ²å Ì‘‹J”˜]BTªTuðÁ³­ª0Dæe¿]‹ömWŸ¤·(c_Ÿ1n÷Ê _£y„+�ã} åfZkèªPqÎE^\RªÙ!{K=wÇ¢ðŽ{šé�o³ ʯž ÿüSiç¦4È´UjtMx†NÕfÌ–þóð+¯|r”wªv¦¬$½ãÕ ë�ïy2ÈqÜ©ÚçBIxÇ]UÊ÷·öÉØ­ÚØçëë7Ñ•e°ÇH¸ï�½¸SôÓ(¶Ñ‹·¶ñ�Wvî§W¾o2ÉÈJ¼dÎëÜc |µ¨×Öž÷žŸ)^í¢pfRZjª¬^¡p± ˜†¥¨ËCš¿¢CmûyTn˜¢ùÕjSª6SUgÖHFÕRUÝ®ªVÑãU§¢•îbåƒf.«Ä&gûqSû©µ,1ê™h ó7Ü[F¿î‘Î*¿Ó ,�-›zpãÆ?s/ƒ‹f+'¹Œƒð£XëÅëŒ Ùïʈ±T„õÖ :I²Òù^yñâE±‘j£ÔQ<”ÍAã¸éR¿�×éÔ_çµV¤’M®˜;^[öI¬S“R:ñÖ«ZϦ Žôƒ£ú­"¢Vc]gÅÒ„ŠW"÷Þ‚¬ÐRUµ]»v-Ÿpà%?ȳ5ìâÎ�ô ú6sÄ:¹êÈ" Í�Wpw‹Ük›Vpw‡6�Çdu~ôãmÚÎóäúÐvúþr‹&Ð+�zUÓ´ªûu› îÃ80 £H\§uÏ(ùX)4­Ü…l•Ĺl;® ‹Ú.ÏÑÞN¯æÚQ¨H7+.Ïè¼½ØñÔTYOi…QÆJ‰\µN2 Ï�v¿Ýßj Í ËÀëñW„=ŒàhZDWþ¬´B…Kcã×ïuÍÓÑ/¡Î`´?|V§®âj·‡Ïº/ê•!��l<Üëk§õÅÅE á/º£~÷©2brÈ[d.½[‚?Ñ>ž�ñüÜk¶íûŸÓq[´­¤µ¦‹þL[)wHAjÙ£ûy…ýñ/¹PSÊ¥oÈ+s7fîÀªoqº™‚[©ˆ¹u@Ãù9Áì‰ÁyWx‹>½~9k²„­q�›/Mšœ´OíðñãÐá5íb¢Ç­1U ÉÂðRÆè7•á¥xŒ6íYì %´T0ã~°ùtÁÌ:ÝH¶(Z;ÞrÏyaƒÒ<áîôc©cïü ›¬ŽçŸÉ)„7Ýœ¶Lnï£vÅzºÊG‡ËœÞKÖS±wâ`>÷³õDú>óa§Ð�cI“¹1ÉñyB–ìîIî¹ ˆ?�£kæ@Œf–y4§ÞGÿç�Èñ--q«¥E+ª}C}˜�¡[™›[¨þ…Â*uŠùiYQÌ=ì9âÉä‘k« š@0ÊÀy¿Æðw›p~L‚ïš|§å:ª>C%2Ê>i²¡7¢…N¼�Éuz8'¤$¦@fãC°ô£u* ÈL ò§=Æò�8¡{€ÅÊ´ €ðš~=sºÈufÿ¾óß©C郃ðÑd¢ Ÿm1€¡­t›lx8¾QŒaåš ­¹j9¬[dKå‚u™’³Àuu’)ý� ‘å5iôˆíSF” ‰Y Lþg€ê8LŠˆÌ~ß­DT�ÿÏÄÆët;½*o›Ñ�q2&†û„PLýæŸOþ¹ž�Úí=òA˜¡Ó?Ï×/a‡­bÄ ÔØ<oé�ã 8Ž-²qcoJ¬w´Y–ÍV늜aãGmS  ýA~ÿ»ÇéÂöhTÓ3Û£ø?Gvx†_ÞJCH ìQ 'lÔ «ëöz=ôÂ"Ï<ü¼kÑ‹�®|ÿãÌ»&¤ý$=§ß[Ö]®„Ëê•ÀPµì³â®I±h¡K鯤·²•ðÛ»!mܦ?¤/ÿN*{sT·7¤?—ÑX&g„krâ·ã¾ýDšSÕ?\Œoï�J›º•6毠Òî°ß© ?e�íë‚h ,$q4±Þ<ÿñðÃsK‹ ‚È;Á¨üƒ¨�ÑxÒ$oÇ Éa;yÔn�Éݲš$ÕI`{§Ñ�¤L؈–IK &“IÔa“¬ÿ€‹i*Z�×zâ?I'?<ò¤ÈÆ'Á)ÎHoôg˜¾®Í³ï¤Ï&L¡ˆÝʆ�~995 1¯{!ÅYøá<½üÊ'íÁè\«¥aßu«VÅ»Ïn\““S>Û B.”¨Ùi«åSL¡ò{ÚŸ0>1„á&5²Öú_y ¡e5¯×ïV±�ËÜVbnÐè=íî÷ŒµƒÈù`Gλƒû‹KäÇè^²ù1æ—É�€¿ (;+�CPoÚEAÇë2‘�¥€e•¬A †-g­š_›s$íKÿųÊ#VW@(=ʨ,H«Y—øŽ ißìÐùw„øŠ•þÈýÊö‹§ëôUÍnoìî°ãVm+º$b;*Zü¤:±þ0ô‡ˆÌÒtöÁûîO£#ð6ûÃ~Ø?z߆û£ÁÑSø6è=í¿O·?ô^u_ ñÛ³gíç.ýötpxßFîÑpþv8|þ¬?·ώž‡}ŠóÂè·gýÞ úíé°÷Œ~0Ý¡; ñí~û°wøÜ:UŽÕŒ™:Iÿ±3¥ò0â¹8hÜ#ʉÉ_Þ¿qè«à∰íí¦�¼ÍÊyû�΢åh·«—FÇí�ªDÍŸóQ‘ö;m¦ßëôºû#Jq™Öð*ö k4 ²C±¼ŠN¿‹+ wjÔ'ÇþÖ~"TjWAJxÝôøâ"ñÓÃpö*X©Ðž%i´BÅ™ÇgÌQš†îuÖ¤o3ðÇØ[¾!c4±‚œDðâxO ¸–]´šáz±Èà='!•O/_("]²ž‹µÓ™F~<õ¡¦ RƒAä/©žÅŸ½…ÊAIŠ{Æð(I ³ol}’E6óA¿G÷3Ùâ÷ò¶l¥nP®{©×6±°Ð'7'ê蜎yŠÍøfcC^ÐùÙ8 )ǼQ; ¨`ƒ„x+Xˆòû¥÷Y'BTÑB™ü>Ãûk­Á k0KÆÂ–µ„žóÂ�cŸMWJÆ;n5]¿û'}ÂKfP̹è�ª†åÔj™t¯ð†©]Éþ�"ÈØ t5°‰E•óa«É7÷Ÿ »œ×¾üÅ ëΣrB©ö é§·^Ð7ãOQ0kÀ¦…­ Íz’CIÝ)˜ÏŸIêl1CrÍ|Z'0!+Dù_ø Ä9r^�C:a¿<ç•;ïÈüù1{”T±ÍÝv»W%·= “D™¥…í¿Ç/‰íÓ7SûúcZŠûÙïõ¥ÉCu!9"9W³ëÚe2øµiQ‡Ÿ¢$µ`bQ$m ©x—3š�qi²ädÀëø�~’^-¤<ÀÒNÁQ$gþçc`wm·µ1. ÓÑŒeî†pªq.Fö0%£{¾Fk\ ·Š ‚‘÷©¼Û Ô€úÀÛ¬$9Ñ Z›ƒ_‹ùàPüZ6™�ã’ž¥~ #›ÑçŸàҋвð6ù.’£yЋpµ[Œ/I¹ð�Ãŵ`uæ‹èÜ[(�Éšƒ±ù 6wO¾gKdÜÞø¤Qoi[iC<0ÞÆÑÊ›{ÔÿˆßeúÓ�/EÑdA�I•ºê@QôÄ�ÈI&w³•?·²1\ðCv‚�7Æ“WJûË蓯dÈ·L�—Άƒ5X`ÎçpçIÆ_ψ“Âò° ÚÑÒ@_·¹cpj�r‘u Øvï>÷†t>ÒyãJ/² ¡ûc‹O°Á`¿_�]•­Õ±•}·ìlÁŽ­ì»egS@Î`ñ]~ÅË¿¬�M(9m[qäô¥_,Ù"ØÂ"rþÑU¬(Vz_yñ nY)ÇHH¨”å// åͬKßrb6š òÑ *ØìeîˆÏEˆÆ“‚þel,c�e×ïZïÉÒ>¢þ9¿þøØé±�óøà9Ì­FÙC�æ¾G–•ì¦¨å ³ «8å§\¨·xSð¤>‰B>Ê—æóN„h „Ä’|äsÄ —P{C ;Éä„2�ºÊ©MŸÌ}��§ä,=±N0É)yt¯N­ÓÚÇçŒÛ‚0):ƒ4Z¾¡rKvð²”Ò;-"Ö¼šœéÆ}¯ ®yÂî±»=Ž�#Ù"($i&ȉ@²ÙØáüˆšÓ½e-xloij¯àðÌÈH΢«�‚¡Ð‰#¸ ë€þa±¨!oAZê&@ üsh$—`²ÍÚ«*M)†f6¦¤¯Ð¶X�—Á'S�Ì"{€îY&ðƒ—¶¯„X}SsR¸éžù¤4¸¯¾¾]Jit_hIÆtÄþÈ“J‚;¡·4äå  k lo!¬rƒP8ð_+¥%íèË5öŠj�Á?æÌ‹ã課ÎÊZ…ßy¿œTæ9�ªŠ$où};¦ñ™áôT”Äý¼µDH7�˜ÁÌ‹m ØÇì{®XÅ{°¬4�2A6?9JJê”—Däyp‘µ¥Â¶*??ïùðÆ¢˜œ_aDÃ{ܽ0ó%ü/G ~rΙ5ñÞ�Ž_¿ýã©Ýp gHÒh4Ö óóE T™†ãñ¹O'ÿÖuС,©AòC¸ð–a-ÖkÖõÆKŒžw?ÐÝ ¼XtH°ño€ÁvÞYí|M?æ=ÜÌÕKŠÌ)"ßéÞ R½WDÛê¬>… |˜[ ïñ9m�¿LÛ¼$Ð%ë…)„ÀKü™”[Ã"Š1U´Jƒ%éè+œ‹ ½–‹ç»(ùœ+{{×ÉÔc16ib: ”±ÞãT’L9Ãùú‡iþlô¦ëÐG~þ”ƒN 7,•š�8”)²ÖåçÚ¯{xß1nìïˆðÂ0j—Q¢Ï]‡›ð½¸Ñ¸ËB™Ì@9X(à;n8ð½�†Sgùöm2,×bò£ÈÇDVj¼÷¬‘�Bâà¢ÐÍZp;|™(<}W÷íÍÈŸ_È—J,O/óÀ¿ãuV4÷³þJ‡^&›0Õ÷³>K:|ë¶v‡qSÞÓÊ.çjÿàï_ ü[Uýý ò¥Ìt¿OØè¡kBm#@ë¾;úµ5~Ç‹KK]…â GðwPr’s`êÕ~¯T§æ Þª_ûÝW]9³÷Øíš«Šžµ Î}PášSpOd¹~í¿Í¸¯n×\ŒKer<Ó˜ žŸî锔ؠ ˆH"໋@úþšÐ@0+,ß,¬lSÁÒ×[‹Z‚ –¤—±i\Ha‹ÈKC¥¨ÛÜNŒE’VÎq;}ò¦bÁŽjxÚí?Þ»lÆ[jTE¶óbZ�£jÇ9©E‘o5ߪtSAvvïE5Y¹U/4ár›2ˆ€º•ìÖM&ÿ~¨æ™�š˜{¬›¾ò*­|äÄK“dj9UÙ´-@– � s3P¬¯áˆãÆe0›ùEÅ�ì�¿X«$H82Ç�j×v¿æÐß+Ø}-òGfÏG€Ë’õ÷CHvÂû£>w4„=>„�‡UXwSÝ<¬½JÐ×l=òìßf8*.F3%•8ËO0‡Ûù³íŒù¥ükí¼�ƶÖ5HÇ®5Ö"·ëÎn[úªÞžw×!y«ý~§HîÕ=ó¿áIâ]bb„[[¹sµ¬ŒµÉ4á~ç°¬f~޲»¼Zïij«†áç½ö0HTè~+%/ÑâÙ)i3v9�H KYQú•šVS󥨎˜<ÇUû�™—\2Ë>!êÑîp}Köë·Ú‚•=þ ÷h½ÉØJ¯ó›�áoµÁë�¡ªUúgøÿ-ýYà5š’Ú`8®>·hr²q1†Y•¤�Ã;pmÉ«•dÓá`•xáL©ÛE�ÅΕ£Ø>ªª›TâÞ¶’N[©¬š®W¾^g»2ûªr.kD¶Ôo]tѵ@]y~Zå¼®K’ìï ‰%÷Òí¬¸Š‡æÁh–œB�îâ·û^ÜÏßWu—;UW<-÷Ò»�«3õŽN0‘¦Ó`ê-¸Ô± f³lwÜ×Ü:èƒ«Ö gþWžó;mÆîkáÛhÆ6£a^;$­ çi¸Wj:ª™.ælõ7å…EPYfV_šFÖéðFtúC·GcÌä­üQFŸùÓ(¦±øÚoäÈ&Ðe'(>ö$È>4hmGÅ6†îU—œ9CÒÙþÌ §Š–бÝû$Á9�ò¢�UfN]bˆ\h‰Í2:<„×¹Oc¾–T'TÜ?�cî\D±ØÏ½XUÃu³+ýzÙ÷ÒËõò\™-^Vñdõ»çíá`ÛŠbRPñYí^´ýá.E*öxÊýø€,��1ê„ÅÆ«ò‚×É�H ÷ž¢‘‚îÐ= À®B¹Âëôÿ¨ÛtÛJ´42–WÜ8Í>MWñ«Í¢°YUòÀC¢ZJŒrŒ³Z$¢¡Þ~”éÕœ Gü~G©V—ÔiÏ‹ˆÉÓ˜k4W ,ä÷ý®/ÛœÌ ½X½[ì´W ·(-´T­P£9L?D§`oP¥š­jK±x^¿-l™H�)Í;£´É¤›–4ÆÔ•ú-7÷Û3Þj #g³íô[¹’«ìvóeîÊ‹-U¹W�†ÉÔ^‘³‹%Õ§M�b*ŸÅrËŠ{¬4°j`J}GÁ¿6�)ÞEÅ4Ø»²]P•×´öúû F{ wÂVí¡û²o0'DãEGBê(f~º¯pÅFå˜ÄÊò¦·u-ª+šQßJ¸Vø1RÛv¤fk²Öj#;Ò$;Pv¨É×Õrû]I+Uœ•S“ù¤¢Ž3Uâ¶GÒúíͪ>¯Ø¥F=»æ¯;·Úìò†–œÞ…óYyzW®…N ëŒ\UƒÊ�ðº b“9T-0ƒŠ÷Œ,QB~ *ÏòÊëÜ~×ZÓ- öÍáÿòå ø?ß‘QK2~–[ ›ªcÏÉ,·é õat²ãÐ<4Ì«ÞjÞ�¹SÖs(õ97>æ>.ñN~ã)`QX/�×díB\G@Ñ:Œþ} Uµòiy#rå¯cÿ›gºAÖ„ÚÉ;â²y‘pÞ•2mX1K®½²»€›§ÎR~Š–z@ÜŠËïÚKRzO/¿WwžË‹FÓB:±dþé�eåâ§±Vô… O6=­,û†(x4iF“ðý?yÁ=Љ‹‘?æ-Z¹v—ÑÏ<™…�5™Lü’’ª–é‹(>&…¶w³1©›ð3�RsìL¶®&'§ C¸uƒ ®þ{BÌÒh¿ŒÌ¾Ë§3·’Mna—d˜`– . ž{Ó˦Oº€8ðƒìs dÁ�ávû@´Â]9õ0A@Îë�ÅœÆ(C•œ*ˆvr*áðjÕTÄ#~æ£Û^š’Êg²“"v¶3ÄNB,ø®èÑ6Dô±çm)ù‘!»Ê°—º«}‚�_`$S¾h•|´Dì‰Éu\Hi+5‹)WÛ¾$ îJ„´�ÃŒ�7´ÁvLáCm‡�8ÇÏì…siO�gû5¢ˆw\·*ˆ8�¢ùÙŒ^Ì8_`wG`q5n—AÃÖ_”o}¾óR猰ï?ÍY¤ÝýÁÄG�û)üaï14ÜäÓœÇ^&›qA’ì/àŒs`\N^²×ↄâïXìR`öÍ™^‹aÎZ<[:i¤ÿ�{Ï(ÀAúý÷œšIoOÒSˆ~"ð𛾽°²f7ôíÑ{%y×ÐâÔ)ë @)“¿¤Ï4¸ñئ*�ò~“M˜ "9Ôm\ˆÓL–š1 #±*áæ »šqèxý1ve}­±;•°¶Y¿ó8¨LlrU±ÉŒ›"-e9ÊQµ1ø6r">ùB™“¨ ‰»§”tòC-Ò`•�·3äwëÑd¶ä$–i@ëàXtÉYII›# øýüÐIŒiarç­ÖV8®Òa$€Saeêòß²Öôë3ŸÇO7ÎüWŸB¤¯¯ º9øw~"-Û»ln #>±˜ÏŒ5¶þÐy烮Eæ[lm¹ä»])ƒ�VÊ>®”¼ÃDõ‹š¢úÙ¶„€¢.ça•¡ç’¦T4�íý»Üùl¥TÂîn¤<€~¹ ò)ÚZ-™G*Š^Ø©2‘G÷��„oƒM.)E*"!ÔݼՑÄv�5">Óˆ”-»5¡ºÃ*tIƒ²´;¶Û®Â/—„í3’¡WŒ<®Å`ÈëP4ùy'BÇ1»óèû�ÄÀåƒÇ´2ðq‘¾,yñTµs@ÀVOŸ[VLÓ·+I–ûy„Œ·&BI9&…P¾®E(MªJ3#dh¯QûlNÔµ•ÐÍE+±BI�-È»#£üHÉ Új?w¦¥' ‹!Þ– j±4+˜mâºp:Ç“‹Æš$«% ö¥länŒ½iOQT¦ª–³ØŸ�ù×ð »x9‹0jl&dÉ�M/aöm #ÐìgÀrP6!� &‘FH-×ð€ˆ¼äßÞâŠ4é"H.!lÆÖ^¬—ðu6ÛN æ!iÛž‡üËyEø6ô×`Ò±ð½�¬pºå³�<2 ýXŠtÞ‚(¯ ‹ï³ ×%oã ™’+S6%Ï™••²ëMéEç…«½*ʰ¬{£R�ÒnQ]�R·D«$Â6’Ž-<6L+Ô¡Z¡n¦²p,D„•† ÜЫ4fÉ~Ò›tLùGǤÀ8˜ùLA´e9Ü‹Q&7ZB %ñÏG¬ëW¤¸½”óÔ4ÒIž —ùnY#V£<.qžúVñLrŒšm[RU᮪Q®1ºÎÝiõM©¨�È8 cè(¼Þk’t_¿÷p‹¢°È¼@áJµå�³º †aGHòH’¥ÕæTŸ …ÍJ©ö“é¹ì…=MèÌy¶o¯œë,„ŠE-j½ÕŠÙÖÒÝV�N†9·l2­SLL·*€šhdùÍY3ºó¢:1c-ƒÀíJÐLø¤¼üðV :zHŠNÇ�Ž5›ŽíìM5"� fê�#,x 5ó@olÛ�yÕ›"×IS>�gQkn›KÐ�a]C±ÚAWP�䚃ÎV�›ƒQ»3ª²”yƒW¯Í–2£î g'Óéìú¹ÈÆLÍËídPßËÔ¼ºAÌ&§÷bÌIzº±e› ;ÔUA6r0\se‹;þqXhÏQçrxÕµx^C”·Ô)ÕU!dö aí¤Û˜åÔ·Y á4w4WQ¦g¯«-ædŠPG²­QC óeê@kÂ鼡A&ŪêNVT[Y�ÜÁ,‚’ À®ŠKªóÐ#ó7t\Þ|üøQ*E8–gçb—]e0Ñ4¯]{ ³Ey’[l,}t¥”æ¡·—`ëÉp°Gôùd2I�¿üüþÃË?{ÿáð݇V>/JÅ¥9Ÿ¿yv Kf¿‘:îž™D°ëÌ'êÓ1X§@Í3/õ@KùŒ³ß™™Å¦Pµ^9¿¨V¼kům¤HÒTÚ'R²ˆêsƒúûÛ³|Sît0¬u,êøíPg7¶Þù²à²GŒÑÛ{!ìgÔT�j·ó”]Q�•§½#Ù­–_žŒŠ‚Y£ý6­´Ðng7FËœheR;¯×ª²­AÞ–4"ç¥nø‘¬I¹"¨1£ \¦PʼnЍüŠ�½‰E©#<Öd¾šL¦g`]¦YŠ�µôèD¯ÆÐ¤SI˜¯½ÕJ/!¾kè_5žÇ1éï¿~?†ÑUÈ�·Ç ë»CÎ�õ¯V¹Å›Ü�J³75ñ}Ø£ÅNj�îÑ -a^¯²ªP²±¥þ¶ìlUò î¨}ØìhÁFÖ®fÀf;Ž9±]nä¦ï¤—Ô—ñŒªDezJ£5Œªu JQ-8`C‰>MÈT[bf9 ¬î »¹Úó1­Íxj”ê;Ô°•Ý]潟iØÊŽƒ·dä:Ŷ)©AQFWª•W‚%Âþ/¡°$¯[€Ö lÿìY‘ÖK_Åš¯m¼ãÍ¡þT|»,T®Éû©°…Ža] ``ëÈk³¬v¹5µxÛ–W¬Ô«* whYŸ1A]ÕͰGþU¨nÒœ““dõÙßv{Ìê´8 ºµÛn˜T7Ý®Ûfª›^Çí0[=ªÏY©~OóÉ ®}Òƒ5ùŠ—�çÑgÙë©À“ælA@ +j´;S Å,i²jRarP`7²½=ˆ&¤GÐÖÃÅ¢‰f „Ž2A¶Ü2 -8úm›§´eÌTjÝíW˜�ìfרÊ!–ÞÞÂ;÷…wòT(éªB åRÈøñ5“·‘É<.-ø)›9}Òà�ò Puu� ¿g0ã)³‡ÊÕFêÀE>(>¼¹G na]ævJÝ•XiËV½Cg½"ò„ÿžÅ”Bª¦ÉlªÒRIÖ»ínP+¯¶ôÄwðë‹À_ÌNÉP!¶ yaö””§KP°0 —( „@ÒßY�+˜É–~2D—3Ûôµ:Œ�fçù'12¢dÁÚÜo¼&€ÈTô©J ¹¬F¶ ă(|矯Ò¬Èy¿>O¦q°BK•ç¯ß~ø»ž&ë§³ˆ»4s`»6Ñ%gæŸGdµù‚¥ß"B~ËIhyç>Q6­R!0J`{+šFÆÀ'/£Ã8ö®É¬r³Ò>ðÿ;åfþ>˜ùÓò‚ XÕ„äðœü:0Õ¯`¨?&3}z¢�ýéd"¥!‹†ˆ›Aë<ö½�±sì âÿ ø½Åì§t¹hB9`d8Œš�±km ÄÖù¦eš=}0 3§�ÕÝ6ÓÉ)¯ºå,½}‚˶¥®ÔrOòE³a3-Œ|þÚÜÿB~ * uÞ”B³uõ(Ÿ×–s¢x³/\ô×Ô…ÉS%ŸÂ’ÿŠ¡^Ò>p¹Áeeòè’3Ó8ul^AUñŒPÍ8"+óFÝÎ:Ì&x'I¿ÒJˆ¬Ï5¹œ¤÷bJ¤S("ý}"õ×µ_kâ_‘q¢HO*šÌøå÷kr 25zýèäý?�î�AÎ�K8¾ô®uâe�Ï&9”€ÇålÃnFâ$oÝ·C¹Ù¢³�Ð’dTgleßËœpJµ žQ â9ñi®ÅŠŽb%F×Θ%åÀÔ¹%ÁZ˜yßbgA¥PvèrÆFZœý.ZöJ(êÃ:�Bk*ÁªY·2-?é¾ÎýUØ]¹¨£ç�í¬�¸’C×q,À‚‡ï{êœÙ3Ðh¬Ð›Qh3ä&”À³ðŠøír3ŽÜûX± á/‰Dm� ÝѰ[!A?ÍIÐýQg¿ÇŒ¨´¬HÐLªN„¬ÍXáÅÄzIFðìÃáÓWÏÏžÿ¿·‡ož=wöìðá…–­Ó¼e+·p,-¢©·xOH¨7GÁ^4ö_Þ¿q Áá<¸¸Fÿl"=¼5q"\å˜jEv¨ßTÊ™órZ_¾X72�ô¤zFŽM6(¨AO[´ Gîg’ð$�ª"5=}üù,ÂöP~ ž‘¢ñ“0’| ÀA =EÆáóñ9½üÇ�÷ÜÉd=Á7èt¶Æþ—/ôñ—/ø<æÝoF€NÀŽg6Báö“çŸq Îèæá’p®¥lP|l°O[ÂtÿDȃšø]t¥¸‘çÊ|d#ºhŸÃaI9(ô‘'Ý —äœ|`ÏÕæ†»é¦S¨ù$1Ãô Ïá裒ƒ˜ÔæÙã4«Óf'Âìe8¶ùÇ2úiÎ2[ž•Ðýd*†½’‰ºk™„%F9Ít“—è„ë3C>A£s/Ž£++—ªè^ŽY-MÎ6¢â¡—˜kÊ›/@´IÈõ@º_\›7éõ‡u£Â~$tüÏ+�¬û8Ý­(E��Óöpþ¨²•K“³ÈYÚ“´¾oúOöÛãvë{KB•tú-P£ìÜ�—h¾0õÂçØ¯íåh [êm$ãþ¹0Íì½"…ËÔTàö%Yú�·ô'O®JÓ\ØVS³’bÚv"8À aúOe^fÝD¬ŸèBà�õ�î+YÿÁ{3ZZÓTç@"y-Lè£4ÙÑ4õŸ/ÏýÉ ‰šÊˆð£]ØyÑbM¥H\‚V‹ô“ ;¢£rq¢›ô t»ž’Ú˜ezÁ�kæðg„´V5üê& ÝQ‘P/&®Å¤]¹»¶i^Ÿ˜fU¬£Ö¸`4²¶qæXõÚwäÓ�"ï“?£�à´ÿ Snf0Ë:"Ö§8tŸ&fBHk¡´¸°žF³kº¨$…"jv¤'3Mgì\ÄѵO­&_¨NˆwV !‚sÎ-¡ŠÉúèÿ¦Á2é%çuDùÕð$7;ã‚nF4¦jr™—ª7ä†Åk®•B¹îuBrO7|%UnÛ.+^l ù@u�ÜZؘ–ŒLì|þ’wWì Þï‰÷ÖNº�A2h9Ž$LÁ(&{î�ÊçšÖHCF±þÄȸÕÓŸèg"™ôê�ÁdQ’1òÈÒh•J¹àüõíÀù (S$]IR¡ÓH*u:‘úI¿¡‘ù±¥= ¬‰a�-ÓSE+’Ü‘V$ÙQ+"¡ •ˆÐ 0¼UÍèîUˆî&`(’÷ŒCÓ ÊÑÉ6š†bÖµmÏ ¦í&~]³ÚíiY NA3jØb{å?Ë]×AýìŽö»£ qþŠóKó…¸ðe`Wß ’Ûq;#z!NoÁ§Ihv¯@(h ÌÑm5™'YP¹9z;ä�ý¿Ê•w§Þ¥2S…r¸Nš~¦ çj #$gêuƒM~GëxêWßù5‹Þóaì²ÑËß�²~ä‡O¯a»+ìN‰Ÿy´B1;GB_~¹ ç%% GìF§æõuy¦- y`‰¨v£…à¶·�¨ÊÌîU)@ý¨g¢{_ø*Tt­ZÔx™Ô¢éŸ/_õ«AÏŸ¨sMÜö®ÈJ~Ôm0þ7à`i¨Ã†~Øjvï†üÔEbÉ”w‚Æ¢P¢ÿô.¨Œ¾ìîÔ![†y«&ó.?ñ2ÇL6ª;Y#dݲ·@Zu“tÈ^SSiø oË•ºÀ³ª~m>áû®ÍÕ‰S[8EÒ�« ñ©?–Æà 7êôÂÚ§7Ö/C¸¼¾QùDkåíÆ› ÈE}ªaÙðûŸ�ÍýÜâ{÷t?¯lD"7�}CÅ4yaŒ-ù×¶WѺÑ}Þ.ÿWÑ�LèÚÂò½"„!.‰“› dtÅÐ1‹s÷ËÙµo–”Òx"òažLΆ¬¨[\ ¯è5¯z×PÁ[Í gåÞ üé’8+ò6¡»âO”£KÄÜœþµ—¾‡ü€<‰½pÎF"»yþ¯ÿ°Œà´~þðbod@LE¬¶µ0+�õ¢±Ä~�Ïý ž$£ñ§x"1’ éÞ…· à.ôšÕÖx‰Bü�HqÅìéÃ(^z‹ì9¶Ýð8ø•<íôVŸþSãmì_�1ògˆ‰Ô€·�?ýYñB´ÛG\(³? *…ËLþ}8t÷ D%FA•šsÅ3´|WŸ^’óÓcãá=>'m}¿^APÒ�ÃÿüÍ?ÿŸ mœÇÑUBH…ÃÎcAÑî.£ˆP9¨Ú S2~�—ø3S‰ï½ /0¦ÐÑeLŽ^ö-†uc9Ñ* –dœ^ùs{e*î!½ÑgѨeôë^”|εj{×xf*äåsžŸ.J¼D\@²,ÁܳDŒ]±£†{¥ÈžE�×$4ˆþAE?½"9Œfi°´2…Žœ8Þz‘êÍÁYP· ²·•ür 8l5aOý0•3°`&žë˜p‹„/€;“FB>ÈÚ‹ƒ‹Üé ÃR‰ž*Œ’xÊg¡7#~áq,=�Uo¨xoäå°Í¨™ÊÀÑ/ÂòCéþþÅÀ/Ü"¯\Ê#—Rý>9ž†®M–Fâv[5ªÛ�5N˜Tl³T†ÅU¦y8‚¿ƒ   yõ¶�jC?jg5õ�î”QA3 WKu3гššÁvú(;ìg@ΦOÅËUÚ5)2©ÈP“rgídŠjÌf¤±—~¸.§ü‚&IDÑm·é“|üÓ‹Eä¥b'«AÑ;±¿T9RÇíôÉC ßÅç å¨Úí?ÞûQÁ[jdÕHóEä]]ÆÆ�V¨|éò3fWO—¢´Nr™c“$Š4iä4Js“ÿx2CÌ.wĘN'ñ£žO\ç9øg‚Íyt`ìo1Ûý$ öJŠÅÉ“ì�¿X«$HØÂq|ûíz^ù‰åDF‰TŸ¥å룤è/ºs­ÞáÌ®_ é/ÊM—ª]]M…ô˜�ûb fQÝå†8\«¬ÂhRâdNXªå¨šs1;ŒuAÒ¸ïÐ$Î0G–"¡N£xQÜ祷‘+ ߬…È�ÇRq+f*,ùê|†kvx LWp‘DK‰�¨]�‰MPÎmÛNÀ™—\2�¢ —´r~Øe¿vê\ãêŸuõËÔc5³XërŒõá@ ±¾^ÍÉ®j³ÃɱPœ?Jôö¦Ä» #(1ÌO�z5!uUUDJt·*±ÓVŠü' XâÁ�Œ‘Ç#Ú˲eW˜Åx  �}ÊÎvpay\@…VÈ`P´“dHáâ>cø`æ7—òlƒ1�ò†a8“³$ ¦Þ‚“Ä%á ²12·ƒ"å¨9aÛ·¯NµÝ[ç(¬ÃÜOòB ÷yîeš&MI’SAo¤â0˜j8{ ŸÂ¼¬Nèö:f4P3ÅÔd’¿¡m]F3Ò XB°Êœ ÌAF÷DZ¸óAâGLÝR f¯0r:¥ÙþÌü€\-�= EÂ¥5½Ë™²’³à…JM–J2�û~zåûa²¿$¦á5�Çü&*™’.Î=�³éfò©!í^z¹^ž+ÃÉ3�f¿{ÞJK�=®[6Ñ÷¢í+ó+šE,�Y ¨«ûÝn‹Jˆ¯;ÒmZ°K®= Ѻ«’»âL:i:ý?êòt·ÍI?–LFéŠëu(îÖe {N\WÅÅ0�qøøUÇjUÿUÑ”;¥Ôüègºåøqx7E•_8–÷Ûÿ|ûÕÙËŸÒ¸*¾–Â+pÒD…’—?ø}¿ëwÕ5‡ l²)KÑ 0$1“­Ûºlí÷ƒ¾�\™®"t48µâ$ŠÓ=Z{Õ©UŒbkb—$TMIŠîO*jûÎålªØx:y»d’]éôòìì’°~‹œüHφÜ}Í}T={âÎ(ÓíþsÝq÷ÛT¹‹Ìþçeé‚î_›/ùþ«Hßþ~¯ß©_anöIvÒÇ\bƒ×ARbTîrÀ½–óØ)Üx-í8žál½ªBw«6¾/«­§ÔŒpU}M>z±Õ”5ÄݲÛR#¦÷Ôˆ:£!5ã~�Pì¼ÕVºÜWÅŠ#ß�c4\.6ãæÝqùNÈû¬âèßôð4:Al»ìi5¥�;{vb÷í¶„>^œ¶o/(’@`öd ö´$áí<[J Ôó�ÏûIyn„i©W¸’<[÷7€;?yã_½Ğ̇û`ÃÄo^²(F”JÓq8Zòq“ô òâàaÇxš*ùò…ƒ^  4‚ͬÞ÷iklY¥]7ôoÊÕL½Ä'c6¦ûžÌô>ÙO¾·˜‰ÙXöR#n2Œ¾‹øŠÉýØ\g¢ �~A1¿ðòõA[úËŽÂÅõ1”-öŲňŒ-ñÕÚØáœ�¬¿�Y1;j·—\æd•p€ÝÒø‹ÔÂYî¤MP”>¯Ð›½Ì=6³ž¦~¯rTÂY´ãEŠcŒ[¨;ÍJi\-¿ÑËvKSììüxæ_˜ÎÅV{fí®À/¿S$.�GÙ“íŸeñœ\’—&sâ�Æ·K%8ò¬•›y• OrQ‹Š`Ê+PµkVÊl�-µZ-¶†eæµÔ\šá´�¡Ý&+u*väu¸‹ ¹–Š[êZXã …Tˆ1 Š1SIŒÙïtº]*Æ F#—c�{�gr8W9iXix².j�¬ãxN–ÿÛ8ˆb2)“ŽÓ—Ž,Ƨ_¾ˆã‹sìÔø…�žjha"=¡ØI è®1öÑd⳯_¾N†:þ`•“ œ“ž¶ã‚¬6ç2’jÀ¡þWü1= ©£âð”TK{Rxß$�Q„fµæÒÙN$üZ¬yüÖ:�!#Î7©eÜŇˆ~&¯ƒ_)RùF9nsõKíd5@¬cÄ,Á1ã1–õœ'íS�qaB^²¾}žs~Ü,™%2›�4À°5Žg[4bÏE°<>ä"áI–à”º9N Üçïf7Gt¥M_ I™¯ZtU$¼eµ ïòtФxT¨û:;¿¶6ÏØ’å ¡—*ø³t€lXeµœ dOyÆ¡úH�nA™ãÈÊ+[CƆµ[›ò<[·ÓaüÏuÒÓ±’k&—ÁE ÛNYJŠçk¶·2eŠ™Œ¦ò¯Uå�Ü3A¾Ä®Ë¸rÁ…ïäWÛfV•$�蹑U}ÆË(bUyxk¾ý„iæú§[â²gˆFÚT2/ñ�YÙ1~Î [ÐȺΠ‚Tè³»@'àaÙná6€eùViø êg5*Â&h�íl’AÆ&�5oelnBë©î…�[±»>‚9Å\ÅtçcðÕ�ìÒ�„·qûW AyÉwÂèoäÛVZ�‚éW±ØÓæÏ&rì¬t'] PFÎû+/žj”+²“¥,yY�Ò�-¨ÄÚPmʪD›Âh&ytÌ×è›&‚ ÐnOµuçÿ›M�Xt…0ˆ 4“a²"éyt«BYÈÜ;Â~½-{.½â²ð£0êš-V �KŠBnËó4¶ä_¼¤£h[ŠÆ~’œûal±/–M§wlÑÏ-ÝÊg­bOð®›LÙK;yƒo•ã®Ü B€;yì­2OnPû ½s-nª :ÿUܶ™†"€ðÂk-o»U@_ÇÈ K ¢{iq¯`]JÙƒá¨í² åÃÁþ�E¾b\ }uú]@ó®ºdYT^²,ªÎiƒî‰½„—Уe—¯^2ˆ!Š "Ó-[!Ì×¢üxb3‘/MBùBaóHn8�eîxXNECÅ �]‚8Âô+a�[ ñ–ø�2ÀªÊy"t²¨S‚¡Ãí8ªè»Æ/”÷\Š ¾0ð ¯!<#‘ì=ÍÕŒJ@ÎP0bŸ:øÅ¶VŸó=òR²³Î×4ÔÖ”Óm�!FäsÉÄ¢r®hÀ$3ÚUáL˜˜óE QHŒÎ\»V”Y‡“Ûn…ÖŽ#¦3d¥—†Š'ù¤ýòÅ´ó¤È¶YÞ–œz½õºŸÕ\÷n~F~O ÿ6Kxy/KxM#�’ øK¸sË5|w˵(ˆ^­ÕJ¤Ìýòa]Ú�<ðMg»µ{Ò sOˆbûî²Ò�W%Êkûâ”Fñb—Qt]4‚íj Æ]æÇ‰u“0  9Üb½ó [—¾{°F! áVåMâ�¨kcÔüPdy®I·}¨"Eˆ«ãÓq'¬ax‡´ß|¾†|Ö˜6zçu@ýõðÀö’£Ë`1{Í(´}¶Îî–—­AÖò¶8T­{Èß[ys0ïƒèÒpmTÂòRx­·ž+ùÙ]M Hïx;²Óº®Ä޼f€í8h©PùMN¨¦—ÐÈôúµŸ$8¼ è=µßNN¬ùÅ)‡_OÞ_/Ï£è‚(hûËD ‘`µPås¬©|i’"ÍkúöØÿÏšLƒ¡gêpçùP{‡‰¡u“ž¼>�ÀCïÄëðx�&ÁÌ? çë…KP�œ*ÒM—l1Ô°°œ �á¼ÙÊGQC„ð¦eÑŠƒ†Àv¬xU“-NûJpš|•Ñ�æ-‚ð˜üR5„[¦¢}òa ’÷HHßr:ʯ\•Uòh›‚~µ[ù@.lžÀ~‰ ~MÃ&g¡*"A".Z­q³tlä}áƒá2ÆÂ¤+I …©­cV€þtAßÁ¬l#õ�4'�>9Í ¿QW_�5,éÌ�ªéØô1n±Ø_8¹>»„&ûëû4?ÐjhÒî5:Ÿ¿\8oæÿ Ë8w$˜’bbTæòœ¼Üeˆœá|°GÅ6tzþ-´Ú,âYíhº™�†ñLq¥hZŽ\4 �U1Dø¤Œ†÷¬Œzª•'G5��ŸÀª·$Eâë‘Ooß~mwdÁOïlhÔÓË,¤èð[Eo,›’Ô±E? ÏÃU€cY5˜#œ$ƒþÈl9ù–Ý;Œè½Ã@ †Ê5’r]9u­j”ÈÖ2ž}¼°êè†**² š�}ù�ÿ@xÅ,2ŒÎb”É”Ê{ÊEI­¶Ó¤L«Â‹— 1ñR€Ý-PÉ›rÀVÚ¢SÇxn¸Ô«ÊëÊ]‚ŒÙÕ;KËÄ!„5‘ –Ïu[@ùbYº¨ºÁ)”?©èQ•Ä#|”**fô*¨ä‚ RÒêð•e»ˆáŸÆ¥uöìù.Ê‘’û<-¨ò‚»â¾payʼX»Æ¡}fêCžv<ù™ÝNrú%½Q�‘×삹³r@"!•›:¹ /„hp eêC9ÔûãÇ�ݾ|” ¯R\Žø±ç-UsyLJKÝá¾cª¯b­µÅ@>ÿ³þazÇk��Q ±ØvpLe˜¬{»ñ*hêVcXÝT6®¦¶šNæ¨;¬CCoÉ1š—Áp‡cuÛSÒ¸ vérõyuŒ•iØvµZ�¿kîÃ0ò¢í¦Ci‡eyË£ÝÔÄþVþÖ'±qŠMm0e.¦ Í›«6›’;*ìÏö Y ¯� ¤¬²‹‹Ñ·S`7ó ÀcµF8`´í­å³løÝN0±ž‰KË—ËÕÂÚØ ¸¢œË9”¬�™‘q”¹Á‚½q·Ýîu¨½q×íõ˜½1³B{ãa�ücöƽ^‡<�Á×ö>ù¶#f0}nÙóÌ4y-L“íeæðtÉžì xíûÉr™Y{dæGê¥Ã¼Äý̺_l u0/SÝ ñuºðS“Ñ£°Ix›]}‰{üD§›MÖ·×ÚýɼŽÒ�˜r½æ®>zŒ~]æz̦bZZÕ”£ÛÒÇLQ…Ziðç14ܹ:wçR‚µ.Ë:ö_°AuQüÌ©ËÂrE›îvÌ–íþ•i"y�J¼Ø³€2¬,yV?×_ Ç† öaõg@Ž5n;Y[/ð|2^|Õ”tì+;,�ÅÆë¼ÖÎ0™n·k&˩ǬðòI³½Bg1öqánÙÊrõ7Q^Ÿ\±¼ˆœ¿ ÿ8\\?~ì—Ç/O™×°2Ÿîe6^Û]0q§4ÍD-DÚŽ}NÒö ÷:ùÁÉ )»`v¼Óä•NWç–ÓU�0éåÔ¯ƒ]‘¤<œ™<‘×Ò%`ÅÈàüe9ßß˸&ë³� âÙûÖ¦M§Œ@A¨"¥÷dÌØã <ëO�v̸œ—+OÑË�x‚AÑ�Iæª À¥ÏÜOË‚£Oyáæg¿l{ö'²3sÑ[ ôU¹V}oºä4dÊ�(ns6î:ãb�ÈdF«¿Ñ_%[2OˆOh ó¾G÷#$‡øý)¾¸Å^7Ñ“[wëµ-/æ�:óþ¼>oôñ7bÞ? A1î˜ àŒ?‰©‰�úð|½ø¸§�dï9‘�j@— }�b1‹ ¼À|K²3öÀJj//¢’÷ùW ‘¯gÞ‚Lo·Š~1Qûgë}³Kúe['ù�Âc¹'§"�ÚÃóìQ¾Å§ ËðP3ņpÈl“"’�Ÿ‚!m´N%ãÙlç ›b*¤ëOIÂwÐtù¹‚ ÄáþÐj.ìa•#â_#vž9O�?|8~=Î×À‘mðà@døpüv¬5±$éÙ»—?þôaljª–‹ã ¦—ÉfÓÏ©ùëÏáÇmHí¡G·êK]Â=`8ù&XƒÅ;‚ĈƒW³†#…µå‰£¦ÔMÖ[ŠIs‘ÅzNÔ›X²WŽòÚâæÃ21&élɳ¼ûrÐÌãÕ= ßÑ^1{òÀ`ï^l„®æÍÛ}k†è7es–7X|.³É²R¯j¹ `M‡Bì%´Øsü÷­fªŒ,ÇfҾ˧ÛÁ:X#æy³Üµó!w˜åSÍ †Á…¦¼zi[˜ò‚í%ÃõÍyõ>æìyWh›ã,ôd '­“,rþn÷TóZ-KÎV{o°�UÙ�̺öö%«<Í]–ÌÎ�z&ÍZq²½òÌù«àGîj<%zj2%ÎQDZ•{fÁ2A›`ù·‚Q¢µÈ€Q’áéâ¬Àé¤pÎÔñ ßyγP{yÚ:5Y%¿àx®=j–ÜÍÌ’¹ ÃC p!ŸG+z» ¤›BCdaLÌB±Èq›u›fš„¤UYLÕ/Õ…`-‹YV†0@æXÒÄ3»^€u%‡y°Zøgžè­ .–/Š1ºGÕqjWLI Ú�$*V½ÞÑ [ãB µ5Γñ× °“µ=FÙFÂE·+t«ÔI=°ÿ-Kз Üì·¼§ƒ ²¾X0ÚGDpv©3ßäò ¥rFöK{þùXeE×ö 'Œ:úíb„p›uYe…É:Ü´¼DoÔµŸ×n](組ÌgxKA»I%íPâL©”-?áêÀ/_ô#ñË—¬ƒ¨®?5‹ê%]0N¸iT.:™´tÞдö’‚'Á‡JBl8J/�gûö…s�!?ÿ—£âZÌ’õ¸Ù&ËåFc½0?—"GÅæÞº­¤Sü÷׬ë�—ÐuS\1�ç�ˆÝÞ"{.Â+k�1ZPâÅ4¨µµ@iBD�Îâé* Òn:HB‹ÜÈ´¥pÄ4’“êEó7P¨O ‚õÒFñ`_´ÍË("¼9 äè$âðLJ�­Ša‘Ř*"‚Ö’tô•?΃E�^ËE/£_÷¢äs®ìyì]#úµ”˜Nå~D(2äôö,° 1ªÑ²žj; æs�aM6 Jd»~†ÏÍ£ø,€è�0s�uËÚEà,4y�@Q³Ê~°F3 ƒÞhÊŠƒ(³UEÊÑ–°»+À$›Š‚€Ý�âÐGr|,Lʰ"~µˆÚ)9CŒø³|ÌB)¼»ìZ«¿<^b½Ärx»œá F®sû]»‘ý§íððuõ*(™l®¡W\_B§U›@�º×HQ÷ÈaANŒÚêh:Èš˜5ud^-R‘á'fÆ4œl1òD}bµ!kÓ;�Xt°ºŠ»J„*\}bшE:€?ÑîH³Çýh¶s¹Ñ áq¾j"‡ãNz ` 6/eÆ¡£ Fuµ‚è…ÇÑÕ-J±5ùR€™,]"ð Í$Ko…ùÌ�ä °D½Rò!( T­‰WUH>xž‰ú{É„o­¤úŠùœͺ�*]¹»sSÅkx—Dâ�BÅ1 9€‹ å¡6äw¹ÇlJUøX9)˜€CxsòõÓüÑè£úÈoßrÐIag¥Rµ(½HÖºü\ûc ’…º¿_jKºóp—œÞrk9'ܦá…fª·l¸êÞp+± ˜ü(rÀ1‘¥ï=¸¼k$äƒP†8¸Èq;]�ÛáËDáéÅS%gFþüB¾Tbyzí ›å;�ûY¥C/“M˜êûYŸ%¾‡u[»Ã¸)ïie—sµJhøûèïO�/e¦û}ÂF]›j 6-¢,ý¯Ñ\°—„Z¡ŠÊRÅCW¡8Ãü”œäÜ_�»Þ½R�šƒxOd¨~íw_uåÌÞc·k®*zÖŽ*<‚¾ÊÜY®_ûo³î«Û5ãG™Ïôæ‚gÁ§{:%%6¨Ó–´ ¼¶ÝE }ÍB‰–oV¶©`é‡ë­E-ÁKRˆÛnÓ'BRØÅ"òRÁP)ê6·Ã±A„VÎq;}ò¦bÁŽjx8ÞÈ}Êf¼¥FUd;/¦Õ8ªvœ“ZùVó­J7dg÷^T“•[õB.·)ÓI.ëè™$%Ø­›LþýPÍ351÷X7}åU(Zùȉ—&ÉÔ rª²i›%ÄýüŠ;J8W~>0Î@±¾ÆŽ²ç)ˆÚ�w²7þb¬’ aè3ßëývma÷ký½€Ýׂ à¢ç#ºøJú‚û!$»áýQŸ;ÂÂÎÃ*¬?„»©nÖ^¥ èk¶ˆyöo3£™’Jœe ª ˜Ã̓‹Ùv/¯vÞFc[kƒ¤c×k‘�Ûug·-}‹UoÏ»ë�¼Õ~¿S¤aÏôêžùßð$é@>µ5�;WËÊX›LîwËjæwá(»Ë«õž¦¶jîqÞkƒD…î·RòrêÅ~ê”´ICYÍ¥_©i55_ŠêHÆv%ÌÌK.™eŸ‚£“é[²_¿Õ¬ìño¸GëMÆVz�ßl « ^o U­Ò?ÃÿoéϯєÔÃÁpõ¹E““�;�½Y¥�h¦JqÁúChK6X�¨DBkŒ /œ)u»¨³Ø¹rÛGUu“JÜÛVÒi+µ€UÓõÊ÷À¯gWf_UΡÙ;[ê·.ºèZ ®ÌÆÛcê˘;%SÒÛŹ§áˆv³+ýzÙ÷ÒËõò\™-“Ô8Yýîy{8ض"fR|V»m¸K‘Š=žr?> Kg€wếàâUyÁëŽäÎ�h.Ì{j/ Ò…‡î…qH$~¸Óÿ£nkÐmsÖK&cyÅ�ÓðAr"¢]ê 5¿ÚÔ4^"tJ•<°Ã�¨–£ã¬‰è+·eºA5'ˆÂ¿ßQªÕ%uÚóâ®Æ×èBZAs•x3~ßïú±�´Muû¯C” 8ÇŽæÓ_4-¹‚qžü�êJdºvÁÅú@Ò ¡†… tfÇÃ>Ð÷ð íŒ Ê9(ª‡/åÔ‘QNËQ�QËURÓåÑPÔ`8ñ‡ o˜½™©ÅfE˜ÞEU—áz—å©›�õb는Þk;ºÊ,³¤å%âey¶ïív{ËéšènQÂFù¢2å�@¸›÷y´˜),tÏï}eùe^¹Û/?s÷_’Åål9wÒ Ê16Ç+Ùn-´tëõ]\ÎÝ ÝNû zèT�h¾,G�½dg»|ê)Z2qpË~áx�ÿrl*p ŒQ5ð¡¶xiLÐíì÷Ñ¡9'kqí«Ðɶ5ãµ6þÓO/U·×+¦eCá €G)¾Ê'åå�Žd�UÍþVð2KÐ[•³};ò›ÿªå ; ÜŠèç�`*E'`±"0 ƒZ÷4°Ü  Iˆð0¡Õ²[†Ãç› 0à kiuìÙ ÆP¿Œ`aú§“Æ“ëO– ñÉаHîØãàž MÅ 5åLs1iÛS Ps*�52„À…ÿÉ_L¾ÿ~¡Á.ööv@ô+ÝÓFbн �Uà£ñ1[â«9r ÆÒX'C³ˆ  ±u!7¡N èVÒUPŽt-/ÒUaQ5–iifÄÁÊ-?­Ôµ= ÌŒ…¤åèIújNÉ®%Ô òX^x{¸\¿äêPâÅæ˜ ‘š-ÿ¢P„8BNPîhS…ªÌXX“oºÙ^™»Ü �[ÍávCU,ÚzËeÂK10„ŒÅÓá„©¸l,'–kUÈ™Äa»]X"9Òa.ë´ÌuµãnØ'Ò¹w�«O‚õ)P ÏŸ¾I¢\Å>(p}z�ä��á`XÔæ��kéØíwÚ,¨ ;A ¨Íþ~{4¤AmFÝþ GƒÚtzÃa—µ $Íãß`®Y¨‚Út»n»OƒÚô:Àl@L›î¨?èÓ˜6—´qû½QŸ†´�Ø6¹€6âÌŠjÑ„a«ÉáÓF-ˆQ!‡�Dˆv­Í¢«F~)¯¬'ÈÈx@ö‹jÔ©E`¸pÜ£Ò³T‰qRžô *¢;�|ã%ºC†óC·†ˆê%í|á?±¬±¡×bÃÅî± åŽà _þb–X­VÓâð8CâüX#)öðÃÙ³—‡¯Ž<{vøá°7Z/« ‹‘/DšS ”W+ï%µ2ÅâQ+ÀyO;¢Ll_bbqâ%fä‰=£c…²ô:/#ê,{ÓšáÐ"·}³¼G£]QèXXE?òßµàv v¥ZØjÌ¢(`M2q–(jŽTV1è•G-�L€CÀ˜%äÆkÒ;×ÎS}æ6ç³N«�q$ª�V3Ãw…3šŸè•‘e€—5DfÉŸü…‡z~œËÎà‚˜p¥n—¯hJd?àú¥‘ÜŠÏÇ|¯åC [Ë6½/)©ê8ȨÉÎK2  ]leÛS^æ›ù›èoÌpFì)wØ"'œ®“ül9yü‚÷â§gì¡´Iì™d�Q@ִ∇:Ÿ;göÚ ì¥óoûÒùûÂy¶ŸãÉ‘É~ ¬­;ìuy@Êã‰õ’l ³‡O_=?;:~õóë7äãÍ‹—?þüîðÃËã7go_?·P qU­�ÀI†—“B{ý1Î¥XâýIz*H\‡Ó¿éå«hê‘щbo æ~ ?05„* ¬Ì£\[!Â(¼ˆ£¥ZÔ�Þ4ÇqÒltô2¿|99ÝL¾àO¡þÙ>©ŸO^Ú óã›4¾¾YH�6TÍcû/ï�ß8 )…óà⺩VGÖãÔÃÀ&´ãD�u|0ã†ñ÷ÉH·†\ü˜p¤À GÃÆ+_‘“Éo*Í›óæµ¾|±n6–Ô –ÓØ¨šsA*Í7ˆ0¦óyµ×›uÊÀøá©}ôCr¬“:HC®ÇiV§ÍÀïg/ñGQjwÐg-GDtd;è|ÂŽn��l�˜ÃðÊNdx�Ö1`©þ‚)ò2Q�ZÔpzø‚OƒÁ‘£<˜~´l1š­-1a^`‹±ZSÞ§J‰� K¾4Ÿ÷ tÖ+ †T®"ç̦è8¢áθ.CšÏÝÎë¦âT+?dæ¥äXÃC—kס· ¦ìØ bd ő늙Eä^Þûñ§`êsÙƒšPÉÐß<…w‡…Û€ 7‘óüŒÁ2¤g¿†iRå6j^Ç'šÕ:*=d (Ò[u¶o`«PšÌÖ Y²�sØjòµø§&ß )dZ!!Ùþä¾4Re°2eaó­}ÇvkcœÖï‡Ô ;;÷ÇáfÓ: »ÖÏZyŒáƒ2’#†¼á­mž�©<%Ó¶œ¥·‚ßð‹ì¦Òvd§cÖ²$¤à¹òì@Œ6Ь݇<öÚyZC¼ººkqŠIÐǽ©žÃ…,ë´œëþ ? ”Ñ— –S8…ªtƒ9�ePgwƒQ§B�£:;–ÔÙÝ® údŒÑÞë�˜:›j¶‘¡Žõyw ‘­;ñL;RˆE;Ò‹h¹ŒBvaÍÂfÊ­ìÒDKä@B�ó B î™a¬*FøYn„¥ ƒZ#,ô�¤]šøBU�D2ðâù8‰„©¯´ r,Ò< ‡‹Ê;‹0$§‚“¥Â0m4î†Ès¥´K ’3óXn¥% aõ›Ê3Äý:¾€JÜÒz´’ùéŽTñ­{ˤ© ^¼œ“öé!©cȱ�ƒ Ðo¢Í—^BÓLÔ.DK ŸÁWMç[`0Ô%�Ïׂ£Îbçå§Jw^·Tb* {(†½°8yàÅCeäQ«Ë#Q¶‡ì±e�ø ™ ì‚(¸  Z"0ÙÕ,=CÎËç>§.M T£“©ZÓŸ½ âŠ ­VÓ§”ÈXõ£DÖp!]ò?à Î!ÐH~„©Yh¡„³JèW‰²6O¦�ÊT�©ÉTdÓÁ˙ŠaŠî�ôÍ3 £�oiS¼!E�Ju<6ãŠIÎ`f×$l:܇R!3T™Èñ2‰Øäº ¶¯XUÝR˜mCX°N¿Û«š’ãTœÙðóÈ|‚tzÝý=AúûÃn�^9ïû�½rfG \9wºÝ½rîíz}¼rvÂæ”�âJ™Pr²Ñ,™ÜXn{i�OVI”¾Âuê'¶Û>µ­®áE^¸—âùOáVl—<ìé{äa'÷´C§D^º†ÇøåÔ¾&ÃçÇì™øA²g"÷3ï:±‡Ø*í!6i_ºß>嫱�Õ0"“Nš –>ƒxép b«šmŒÝnýÙõ»ÙªnÌ!ò)+E4L”Ä :Hµ’è~)’ž³„ö‚Œ‡ßZ{.­&Ëo›óû4?zZÿ!JQ Ë�7Wšµ&“;¬F"²Ëe‡jÙ©¡lµdÚØT&$Í Ô÷`tƒl3YÿÖ%¤³È3БÓ�ßë0øÜl)E´•Ès“Ñ·Ô È“$_éÍ[\àO¯AÈ‘ŠMŸ|Š‚Y£ýh2‘÷‘�OÜÓ'ú£ö©3…%…|úÖ¸,CkLûÐÛ;Ü‚s��MÚ\û„™¢%�„BÙâÒAcVÁ�$ÒS�Ä�z¬3+0"vû�.µ#a|?Ø‘ì�Üv—…3Á~ŽbÉ¥stíz“TÇlûv`GÚ¥5iS*ú‚?Ä]õ¯DúæwÕSã±8 ¤èÃñ$¢¿€¶N,ª™šˆÒÊžCù?s‡¯IýxÀÅ1ËL•šïÉÑ\S/LÙÕ›ÞØÿDë¤è=‰Yü±÷´Ù˜ÅÐ<Ê0Îf¢õOýK�T³dMº8 Øü3)xt>+.9Jú*d Ä`Êd¤ÏÉØ¾‚8õi«y’MŒ<`Ò|�¾�<9m9 [lb!„±kez%Æjûìââ€�¹}²‡Ã–÷œ�š>Ù®Í 0_¸9�/<ЦSÚr ™¢ YM$ Üi4Åji)�NHªŒ †<&âéZÖ²ƒ ááƒÇ�GæÌIj%öDžithsZLM„HÃδpÚe⋲r¥YIBo•\F©’>ß0,`Lwé\ËñV«½Ö²3I»®X,íiÚ`¶…s²°P-›å߃=—œI!T 2s2Z‘¬Êè¡XZÅ:v ¿N¼�×iÌüÃp¾^x1åú‹)… &¹—ˆ&% dØñåÌ?'']-r"¶Láèyóhƒj¬k²Øæ!kZ\ÝlÌ{‚ÒŠlOðML 2ƒ™¡:¼øuvTJç¦B½á!¶ ÙbsM‰íóÿ¬½E³Eä\ÓAfDHèŠÎª’æÁrß´4Sü’Ó˜µÐüÒÑÔ­,ÞÌ›-ÈÝf°9€£ï;¬”'¶ÂÊV{â ¤cçŒôÔN'“ÉÂyë¼ùùÕ«³__ýü¼2žª}à/ÿ†òÙ+'Ï0ð”>ý´}ÂtÑpõD2#ÿ²ªEäXŸÈ±³3 égp³Œ-ÅÄùw‚ 7¾mAS`xšÈƒ·l­ô4**¸Æ¢’IkõrÃ�²îĨÊçlÙ2ùIÙ)J(W.Ÿy¶ø¹KÇî‘{@¶g“-�FtÑH[PnIÅ'á)gÞÍU�YéìK»J¥ÍôË—³Vs]uÿ´tááÙ;8K[v�,˜2®‘tí¼™ÿƒ�ÄI/�gö¨Fº gf¾2-�ž»@Ks&n˜$Q�©ºö˜2„)ÊØKëÔñÖ)DKdFÇû"_AQ9¶è§ÅÜÁÈö…¤Í´fë­´f䊜£99ÕbgujŸ‘õ¥tÉÆêè}½� tôgu5ô Øûo½yâma‹6”‘9jÛ…®‘Æl�Ʊwí ~’£êñc+º¸ §�ÃIñ„î�¥÷ù &!ÛoßÒ:´$“dã,ÂmL&"ÿãÇ*tEŸ±Zëù}† _¾´y�”5 ïLý»¾3õoÍ¥^ þ͹AÛ›­ùÂ…Zz=•h×Séæ4·±·Òwíá°Bù•�M%-$sV‰2ÐB¢f“j!;�}ðVAÇ—ö~Ÿ*!Ý~§Ë_¨‹ :¾ z ›Ç·ãvFÔñeè -(-Fí¶;¢J‹¤¼ÌÔ ª’ú¬ÚàoF9&(_è(9ÖG¤§f Üô^<•¸™&å�Om’‡.õÛ® œÆdŽÐ¬©ÉŽNQC놫û²J³*±»„< ³×°g¼„3Q›HDÂÛ“ ¥ÚÑT£è°¸¨»ƒTsn�`mô…jé×L…�ï¢+!ï½äê%á·1IA`;‚¼˜�q®4¼;áU³—¨>©úœšh�-"åf‹KPÞbÐ�Éf¦BÃ'4b¼x®KcI¶‹i�>1¶â˜ìªjN�õ Ý!j$Ç:Ò©•ö�è(Tqû…f"Õ|í0R-3.üÕXM˜_—Eþ;gù[)E úIîb¦½š„™Ü(*0j^Eß?�fטæÀuxv›jFñ·-nÇù*7;Yfí2wÕ~tOó CÄ­Ž^á¸äLC.v>:í×õf¾|ÞkNöOè3G§»lVåéÿz3|?³÷ó¼§ùCVæ�i‡�v˾‚Ë�N§K„_0™îì §q.nN?Á%k¿×&ìÍ5d"®·Ûï“%ôN¸ƒ¿‚ú.¸{ÿ–ÍhDÞÿ O{ä_Ëþ¹â8‘‡Wþû]Âÿ Vc¿ë’5úd¸}òõGÌKø¯�´×‡û½¿#·Þî‘þ‚˵×%MüÖ®–ýü6ì“÷ÿwCÍÓYðX„ðm _™f7‡>ïî»à#߇íÞ�¤ñð{wÐÛ„]ã{¤x¶’”oÔLÁ¯~ÌLêùò_¤÷bu²û*ãKËÐ`¾¬’TÅý�,a©Û¡PÞó%ÌV{h[þuµ£¡Öƒ£!újÉ8 ©ƒwÁÊ%Ò°>Êkê`MnQM]ÛBˆ×`A¨NUUD ƱfÄ�*,ˆ D¤$)xöpÜ C zêSÂb³ºؽ†ø:X¹c{– ×Xû¿Q¯GÉoï‡ñ\F3ó†~3ÍÖ ÕÚ9Ÿ?ÿmÎO%+pEjÞ˜éqmàÄ�)·Þ¡â ¾÷G#@^ÿŒƒ@ÄY²�Ïáû 3Ìü†? n�‘çÙ^â{ñô’²ë‚Ö^o}Ú1Dn(‹Ipw�lIe8Ð¹Š“îNÏ:Å÷–áoZ¶/°8[M‹‹¢D¶ÈÆœú—Ñ»ä;ÒO¼ø>ELE*ö¼Ì­>ò…Xn¯*™°8âÅ$ýòÅbs&f D]Ñ“ãCLºNƒS= s¶óZ Ml5 4W]òžO¹Ìþ$ëä¤NMÊ�â|=?JÔ¨Oä%býŽ5¦�“)žùŽ¥5% ËX]GbÚÉsþ•ŒLØØbóÆDÒO© Ÿò}Z|£Ôd�=}›ºYЉ…­¶¦èHÞ¶ ÈÃFi�šM²AÚæˆÖQ1ËÎå¶}�RïÏ2”?Ù,šoçyNDº²ò‡ûgç�ýÉ9·á�¯w”}Dʽß-ãs<¾ú½¡Üà»Ûå~�iFm—e‡H¹Ó·e?K…oHF ÿ�n¥F ¸ $Ä€‰¶åÅqtuakÎÖ«[ªºåµõ”Ú zYU} ]cðf»1(k‰»e¿¥Vür_­¨3R;ž¦fÔ�¼££~Ô“dóÊ¡rÐ-q!èGšͅ´2ÐòýøN øQÞY{KV¤zåÓjºet«gÿ;%’‡Ø ½²Ä}ûMjwlº†úe)ö/e)õ-µ!K¦S²d*ø(:«„Çbø‰h̆t…ÅäWZ¾kÏšL&wTÖ÷rYœ™{'3s¯tfÎx=㥽ââ º-€×„´WØLáZ$ªõ óî_Q_„g)¸—€ÙÇ q៿~ûáï²·srZb.ÊÒÚèhÏðÎÈ»&gD;g½�™7£g³ÁĆW£ª‹8ôÏæ†f)7ïÌ:Ah§Þ- JǧjQÿ ¶ëoø`³ë.0„}ã_æ™Ïïla“­Ÿ“DqÊa0Ùºå=i†ÔDa O¿|i·öš©þhœ´—ÏØÊ¯j�D‘d´fÙ˜qœ•acƒÆYÛ68´W©Ôf6Ƚ Œ`m”¹I®ÄÑ’rL½Ä'û`Ìì�÷¬|²'ž|o0犱|Ã-Vø. ZÕý!Ù•÷ÂÒÜsÐ{ÊôÉL<z ?,[ôql‰¯*¨J6¡©’ý2cÊ¿ã<»Kyv× A“Ú—Ó¢±³¶€[w•ÌššLÁd`MëTôklPÄÕ–hÒ,ZC%äP€N‘B¿SA<•üÆ;³{•ž¦öºÏ´| ‚²äp(VDæ‚€$Ry@C†ñV«†#OgA$¯\Üž Ý–+Á‘§�–'GÜú¾’äY.jQ‘ªÑûC„ø¨YiÀbŽË1Qè}Uqd®F±ØwsÜH¦ÞÂo¶�¡Ýp[[TìÈ që ‚…µÈ‘ÅŒ?U‚¢ýŸÿEúJûç¢ š€ÃŠ óOòë›|z-X)GeM>ÉÜ ‹þØœ­¨aw›C誜úœJ¤!Z–ÚÙ+tÎ#�™›ÉKøùäI¥+É×3«»p>d`UµÒ¿LiÀ»gÁÅ…œž·6ì¢ÎÙ²Uô` Þ–™Ìóä³:ñcKý­8�ÜÂ>ìç4óqÎÐ ”®‘Dñ ¢Ü'§)w%<&+ ÷)0†¾ÁJ&bø�€¨À—pÁpãn"ˆ^„ñ> lãÚ9v–^üÐöÂ|AdzŸÒ%€éÀ2dìà™büGVdB &TÙ3vVKBÍ Ÿ/Ï}ðÐDƒBšŒŸw6ÈbŸ1ÑMB8`³`ï¹ä-Rk‰º‹|°vF3sÑñ¨2×XC³f~ >˜~«EïoX--8Ìú̱Y{&ØÍ°¨Q!bʶ$—²\ÊÂVšÙÁg³ø’œÐ)9H8]^íÅ­JZÀ›hhDkƒš½_ñ¾¥ÏûÓpzÒ’ 7M™ -Û~'á±G‘óΧÆ�°§�C‘�ØÏ© ÍžÍàå…Ù„•~¿fþ‡h>_øìñYÊ÷D•rUoS{îÚß9¾}™:¯ìóÔù‡ýó<Åài,ÝRû(uÖö¯©37›~ü�éW[öOô~mØo�ýkÿè¼´áÊüÊù» :ßsç­ýÜùŒºßkòþ¥3·?:í«Ôù`?sÎì;¡ý!u~±ß8oì_HN�È/vœ’_O�À~EÊ8NÏþiùßHžŸ�ÔþÕyj¿'ã�ñß�ë�ö_HIÿCŠþÎ¥ýçÚ>&Ÿ/Rç';…‚b’'qþj/œg¶GÊRç…¥Nl‡ð?%Ï—ð nŸI�~h_¤¤ÁSç¯Léöc:9�‚_“MsI& Jß+Ÿê:þú;^Â+ný0þ1µ¯ëù'Hx¸N#ˆûÏ, ®s´œÕZìöw)Êå—¾nùã§Br~?�ÐF öÀ‰8Gl&åü�Ô»${…¼ÄUyd¿%Üžýšˆty3S±°�N`Qy鄸là7û£Î~¯Â�í/ç¬&¾w0bcÆ_âM«ñJ4€«»p�:ZŽA †îÖxjfŸ¥Uó‰áòµš0ç³±ñ¶ªb2þŠ“q,MÃ0‹Ð �̦Œ�‰>…ÌÓ0ÉÌíÀ©°»ßq²uJœef+Akž]œ­y¸,JÑ–f {4’…bÛpÉÌÈă ÍÖÁ+Õì‹û0�.±º4 usyJMù¼RE¼ÒÈ+Ñ{eúo¾Ž×é-Äú—MïÎô!Ó=Õ²Aùˆ�ý/±·µH°žÙHí—�Ñ ºBW`»,m‡h¡ióÝÚ>pV鸼G¥2ŒGHqÍw`ZШŸÉbˆv_Ø×æ[Î_iYB¼.Ưàƒ›Y¼—ÇCn›2¼5 d±i³%ÖÛ˜VIöŒšƒäzǘv^·&/UÝñ×cÓóœX93)Vœ| 彂à`…²S5/ß±_Û.Ã2@ûRßÔ0ÖÜ󎜿Âp:ä§ñ-˜¯—f2;ò&ÍS¡å›R-|¨S‡�èÔK_a±H?Ù¢ jQ —³rÎìy¦©´×JøœÿrL[z[¿TáÌÔ]}np¯$æwÛ—ýT{Â×T­“�»¡ãñ¹OV¹ÏM™ñƒeÉ.Êû¬6nѰ¯6fOñšåÎQ™[ܸñ‡/znÏ¥ÏÑ› ½š¤·Á ÞÂ?öö3øâb¿™ßytP2Lyï¬?–Œ†iÀ?™îŠÂ)Ò}µùH¸ÃBçmÒ‚ò婑ݪjz=77ˆ{Ü”æÿeƒuéÍ¢+2ì°D.Y äk$¥U P�„�d@µ†ÈÙ`æ¹C‘`ðlùPpb�Qš»­„ KÍ�C8pPaP×£E½L`íe$øvš»œMk4™“œ¢A¹ÍÎ_xç¾±Q7†�×çKÞ™ki8ÓëÆì•ÞÐIqÂÐÐöâr3~ÖÔ4W´­N Øk['|Ƥ03˜¼.ùãtN§ŒÒuM”NпbŠ–›ƒ/ ¼RZ ,ôá³ý˜‚lù­Š�6Q ¶6t±˜Jæ]§§ïÕãÀ.#âËô’°Aa{I†Óô.+d[‰3Ý`©½â;‚¯o�F*·ÐÎñŽHÛW\{ÜC 5â#Ûë6Â÷Xu^Ÿ•õP422-éÖØ·lɳ—¬/DëŒÙZ#ï²=ÒS¼ðgiœ§KþÄ0Á¸(|«Ì¯Üw«t‚¯¬Ÿ$%rúô5÷dqíþÚ£l6Ã’QÆkê-¦Í~û��=Ä?j±áûlxß㯠Ŵ{íVŠ!f+ŽAJq)¬DzÇ'´9t6‚?“TÙ©!�Ýu×YrªÜÉ>‘øâ üøµÖ¹Ú A$�2PŽ]<£?÷Î óM›»§'ÝCÇ,r<_£‡0bE²Õ&~ç–ìW#2„¾nAÅoÑœ"ç”Âf&ÏC‰�I‡ÿ.\¡:ÉÝETyéìÁÖ×ýRÞ®Çx³[0v›ÿ2à¼#P@…IÖ/h’µ–L²(öi$ Ku‹¬N·3â±&)vêB€£Nð$»oŸqC«óë=¦«–m«VªÙK¡z•Æ€£;ø¹ç!cv²BÉðZ¸ï|rã-ãÒ»`t@oÉbÝZv°ªŸ!XY6FEˆ¯ëgb¬ Z-®Ëoz¹]"·/˜(¡æø¯6”Pe¬óë3:_¡ ‹¿³ Y :¡[Ä”‡ ¦º¿ ÂDBÔ—Ql¼O^°€ÌXu2™o ±›R\Nr6êØ:™JÜŸ/_,˜<î½+§e±b<ºë‰yçÝ&"ß- «f ñEëà†&"ödøc8³Ð²¦ ÉÔŽSG‰@kJÖ’Úu/7³ÓïjÝÄ–`ëìvAjÀÖ‘© Çb�"Üt3ü™gØ,Å–÷N*@œíÚnÅÊßHÐeHú h²¦í…slOë@Ëll+®8ÎðD¸4‡f瀗íH Á3b! ˆ§âD™ehÚ+ý˜˜“c‚ÝΞÚk~f° pNýÔ£ci6ì‹* û"ã°çM+I‡«'Ȉ_X!æ¼2Ð E«Æ®íy’õ>ÜÇörÈ÷•ÚѼgáy”‹K-W¡\.Ý…O‰]rÚ”/L2‚#%]p- ÷¢æÞòëΊgÉr6n*X[i‹í ì=ò0Ú{Ýb.*º+usí7sMK�ÄÀ‘ë€pžGò&×ᔜ!Á ˜cxÿ‰ÿÈÕ¯Üã–´ NÖ8Zú]¨ÌRì²ÊRŒÆ±‰hî[ÆZ„

cwÚØƒµø)1iìAG¢[/ò ËÓ Ôg`mÖ‘ Kmµú,X �ô²ð8µõdmäÙ,�òœ&°¼ª‚Çä�ÀӈϘÝ[:A­ „É´ä<«žçc<¯û/(”›ïżKP>ÇCIbÞí a@ל{u�ìR¸DÔ¤ªÕAª&T)�½9äf” [—À�¥³�A:ÛêÇ £ÛD¯Ô­“$µ:“".¸˜¢�(9`v�”GZ à ]ÿÍZF¢Jâö"XÝ@«ÒRWr$$YúÕe÷€3$](4Š:#ì—ÐúV£»ZÉ͈�ÐHù•¥×­ îT½ÞÀpô�˜¬£UY;áç¨HÁ*�5È'ÊÜ‹œ2nôà`ÚØëmo ZMe|»DPBX+Ur=è 8ì�¼ÀËóþƒéýig(íCeúm!FH{Ôè ~g‰eÆCþLûN•ÈšC)�VìîÜ]eÔµÌ,jU+�‰žû!Û’¾7ÜÙfÙª�‡­^՞ɤt% ¶éäXsB¢ÞÃT☙ŒE®öð$gÅádTj•Ì÷}NŽ9Ý�Wï‰PunY³DæHÃ~ƒ)mp–“­Êæ8àÆé€lÐ/ÞEª5Á¾äÒY'9”¹ðòdŽÊ4©L©„fÿÂeÈÉñ¢(”ë„Px¦»_Š$�TNjQ49"Ì™ëtÿ$ZXvš™ •’éÊ÷ÃêÃ6t›0Óè©Kõ ×Ö}teâÍÙ¥1A.ŽÒÍ;iV¯‘�gX­“… ÂPÃÈ´^w–1À®‹�³…Là0<æqÌa’ K]±G\.ò‹ ÂV‰ ™£Ñâ1 8Ê:%Ã¼Š‡ãFᳬƒÃ¤�â1š $çèµAñðFDMóÞ.†Êˆqvžé&m…8Òvì北ðV]dfƈ7£ð Ä}�c„Í(¼T.?:Ub¬x ‡›X€¥ø´q° MÎcˆÙ Ç _–$®R„Jä_RLøyRxaÂxHó¤ptˆ­œGŠOãùPñXƒbïɇ´YZ×9‰"=d¾^@nè&²~œmÿ éx øàd R3£¡ØŠOòÌ}ñ ²Á-m¾ÄšœÀŠˆ&(n…œ­VÔ)y`UþIü³óï¯ø ù¯ð_¥³} ’h`ƒ`Û&òϳ©È²Š’C<ç)Á¸Pa8&)ºƒ;âx‹�UŒ4xÏ¢ÒQ&HÏ*˜s~�ƒC>:¶NÓ8�ÚU²dNT‹+$µSâ\5§è 4R?ëþìT8ÕÄAÉF&{ðÖ o^Îðz®8áŸ).¡æpYf˜eR­¬_uQÌ2:�ÂçÃþ:à´Ø‡áÇHãµ³Ôs”*Í•âGØ•³Ýž)ÙCÙW1ª ª™¥£Xä4gO€G�z†¹Æ²)¹|÷(wð°Sœˆ¤«2aV�a}ùwIâ§XáLñ bÕ²ñÓ„ÌZb5ë€V<ΕI™Ë÷˜†ö…9¨x\|Á× '³'9¤¼%:¸¤¸(ùÔ/Vf8¾�À=!æ(aÓ:×3Ê¿÷í´8ÊÙ©Âù9“"�Äxž\ûS`œÃ^4}£­â*ë<¢vIÐÚj¦�!Gä*§,F‚fr®slRGÙ"Âx´öñå�ç�‡…“xµ¢&ý,Ë�«-ŽôÇ@·¶äq85gÝmu$ñlßÙ¹ðÑuYè?öp!xŒØ¿¬ã6 /U#g–�–.å«RÁR#¦J¦—óu~¯~ØŒ¨‘N ʪxuìdac.®¯Öh3—#¬ ÙÆñþÛÿDµ3EùS\ñMø…‹m¬¬vâï£búü�´*.NSÃØÇŠºÊ��°f�ä¡IÌá™X:+~?Ê¢8¯™:VC\lŽJ̇à0GŠÚV1Fsy>åS{0RXû(~B‹YÂç,gJ¥sà8&„¥„T×IÄÔ+5¦“lé$ëùI¿h=R{^xåÅ�‘3Ò‰¼“8q”“tèspeËKçÓ\§L°Àt’� ÊÛ÷é€{R¨ 6K 1Ϊ–X£cK^r×cTïP�CbÁ Oq6-såQH#8¢xDJ G—X>�ëÌùtøó3* ê4¸.»Ìå«N¸ ¼™1ŒªsìZ˜/†Çˆ×£~ͦ‹KÝÔh¶fÐ6s.•É£ÑB�žúŠ1m1:î^f/%­Gâ×|pµ¬tu~VÚ7Q$7@y–×¥ø6¤<7tÚ5© Ésd×%·_ÉNø5¤’y&®û�®+úS¬FJS+b�oêñ«BÉßß9›œŠ—n¿.’µL¿ ›$1]8[?ëi¥B¡äJ‘!U<â[<á‹éòaÌ¿X‘Pm#.ÿŽ_mM�?ê°…g£„žÒ©"š¡J3Õ3hhg�}ÂØ$ˆ•ïx©"l�WíPÈ*Õyã~ŒŠë#€Ýo2C?+¨˜ ÷œäµ� ¤‘¦ìRØ(OqîËKôæ(T’¸/eJÌ É,¨(ÂøY¶ºËø/TÉ“3SÀ‰Þȉ‡H>â^äI1REÊÙg+.1Tõ—5ï³ ÎôIå×Q¿|!S·a½UZÌsœbJ?Lˆic¤*S¢ç;®ɾÌñ‡#0‡Õ+rTvú${:ç Ð¥ÞhÂ/:£µH�~[î¬ÎÝ—Êo$tKé�šðÐ�pOTë´õ1ý¡‹¾Âá¤$“*¿•¨ÚBðQGx8¸ªq¡;#1]$Z–ªkDôÓÄ?'DN™ã”³a Åãþ5#ÕX ç\¸Õ+/ Ç«päºÞ¾6¢'(ÕS™ó„_ÿ°V€ùS›'ò#}.7¨çDt—ý‚A.÷}QË͕Ǵ¾ì,¿·¹ÀŒ ©'|™‡˜åwªÜxüàE¦AÕ \ª7|ÑH!8"™Uçß >8¡ËÈó¡‚ÁïìtQø¸Äv�;ãþ’p‘zð¨OOä cö-ÑÆ´±MWD»+î¾( þ$z Ip™z™ÃgPßX¨hÑð’´RçØmC<èfÊo½9"�úþîÇçòÐËD¢ã’Ѫ�ÖjX8 =V*Ïa+ߣ4®‹õt³_iÏãº6£–:R;sávu�¨ÚÝÐÿ÷NùjN±zX½ÚóOFKÙµÛd£ðùð�Ð%>`Â//©02 Ÿ«6ø"ûò´Î¾´¡êè&b�Õ¨O¾‚ÞOÌ’½ÙjóU>T„n„äæ˜?›Ìð} ÷&Õ>€\¬i1Rü™Ö™ÌÿÄFöt5¤NèË�ð¥jÉ&5ÞŠìEŸw¤I(u›œ½ª÷šGeq�,ƒnñ»¾´»Ì÷Ù*·Jr¥ì#„kSYR~åç_WqÁtH>+Ax£„*®+ÖxùG– ±¥Sl3Õãë).qfØ+/RJŸ\‹XP}í«15ܶ�WU>•e_¿üô‘}6b¹Pr_b”›úÞDÏÐÍÿä{––”µþB牨n¢q¡¬ê§³ß<0áº%§®éʼèËê2Ó²ä@0R_ ÑLÕAýÓ¶2†$ׂy 2��âÐi~‚ÒVä.Xz#¹G•ß~pvx–ƒQ´ Æ!×r3,wðå7ã³^&é‰*ô|Esêdµ—oŠG±ö½1Òß“"Ê—Uéðqò˾œq ß Dr55åþmQ�–A·1“ÑËWä”k¾>ÈT”š³ ìOëb�¿ÂU=Ä¿'žõ²Y‡¨+Ü9‘Mß¡eä ©,•ËÇ ÜÅõ+5² 2¼)ÎvZO‘¦³uö¯WøVÁ–T5àñ禡Ê�[“ŃÅodìU>`„¾rø= )Š~‡  ¹kܦ*©‹üî7/òÏOÊ¿êëéZxR®Ü”&÷Œ.©óþíÈ'¨è/ B_›NI�ê_NDÊ»ÓÅ*_9•n´*o&™<ÐÊ":læi¿OdâÏs…Pñ‹‘|<|WS5&F?¶×¼¢ò{‚� ÷1A·Q6( ç¯ø!:ú;AåßfIÿ-EŒòÏêÂKðQ«<þ‡v?_x>¦­x„´L¢ÖâîÎÝW½–+� ®ý[ž²Ïü:�„’ÿCN?3~>RÑè8^æ8ŸÓw‹ãŒvLLö)!’&ŠÃgbÚ©%RÅãµïÕ¥ý—äúEôBzœ�·`¡Qñ…mLZ·)ßn.kÑŒ×ÊTûº»¯¨JŸ€+Ê ~?Î?´-¯ZøFšÅÌ÷:“•ß«gh0r…B~_í+ìiq]m yúÊ@~6"Qú¤ø-¥ïel°gH(¿5T\ ëÊwª¢c êË3á@Ïc:KÕ–&"t(?— ~"Çò¾·N¨|,ñcKð9¸6ÑüÛ;.·'ÂÀEo$Äßfª²[v'A=èL�ëù+ÎÕŠbŒµ),Ê~ðPc °¹†UÜüŽeý¼ø·ûãg–Î$'�s”B}T¥bñkVt¥29Ø�h™Ïèß²ÊÏ¢w´ÚFéB«Üh’ŒÿPKÒV1]IìjÎE;4imunify-security/languages/imunify-security-sk_SK.moUT ëÆ«jëÆ«jux 臭Z{Œ\Wy¿¥!)†`;±c¯ñÁ‰×»öÎx_~dŒ“Úk'¶’µïÆ Úž™{væîܹwr³ž)DA� .ˆ‚xT…¬�ÕšbâQáÖV`v�QRúG)m¡EA*EâQ•¦*…ö÷�ïÜÇì®RÕ’ýÍ=÷<¾çïû¾sý­;ny�…?Oãï6ú{«¥ÿl{YFïÝú+ # @K ¯=zè†> ºôCfÝ' ]]ú н ÿjÆïº�ÏÝs;¿tôÕ Eз�KW ý<èm _í}ôqÐç@_:õrË:ú±—3¿/YkY/½c-¯Û Š©–0´Z}%è/ƒÎ�b©å�î}èKAŸZËr}ôè5PRÑmëXî  �€î= zôЯ¬c¹ž=ú�u|Îîõ,ÏÞõÌç(è!ÐàC èÐ…õÌß·A‚Þ~ïtèûî0ú¸ƒõùÌ,ï³ kHφþôµdPLz Èë@!‚U= :'ïÿ©;yý÷ͼßÉrüôN拌Haó]ÝÀök‚ö�^ÝúG˜¯k†.m`½~uûÏ?l`ýýØÐŸo`=¿t#ó»i#Ïß¹‘í4 ¬6²ÿœ5ïk#ëíâFÖçÍú¯nd{}ôý ß�ým«CòÜÅþÛÚÄr¼oó¿°‰õòg›XŸ_ÝDú7ô¹MÌÏÚÍ|Îöͼn`3ósl3¯ÕfæWnæuÑfæçífü7³ÜŸ0û\3ôˆþ è.Ðomfþnéãõ·ƒ€Þmžêc~�ícÿz/è‹@ÿ �í÷Á>Öχûxÿ�˜çÏô1?ÞÇ~úµ>¶ß?÷±<×Ç~ð3óþ¶-l§>Р»¶°'¶ð>g·0¿j óç™ç7šç'·0ÿïßÂ~ð…-¬Ÿ¿ÝÂ|þp ûÓ¿›uë·"&A·låóߺ•ù~ïVæãƒ[™ß�˜÷O›÷_ßÊøðw[Ù´)Í[·�ß÷ocý¶ñ9Ó ûA_»�åy—™ÿ¡mì¿ŸÙÆû_ÛÆû}mŸÿím,Ç÷Í|k;Ës×v–£ Zoׯ,{;ÛëÍÛyŸwšç§@ôcfÝÚ»áë C  P÷nŽ÷oÞÍü¯ÙÁ~·tt/(TfýÚ¶[{ïûÆÌ×Å,LJw°¼²ƒùþôƯ¿0ôŸv°?ú/¿„³�ÿð¼îÖ�,ÇZÐ Òè= O˜ñ÷ìd½j'ËñÍ�Ìçs;™�õ÷0~ýá‰{Øo¾‡ùùcÐéôèÞÃòì»—Ïß/ûãý÷ò9'AŸõAßI~ ú; Á.¶Ïíâù·ö³]×õ›|ÖÏþ:ÒÏûï縩›q¿ŸóÏ›û™¯Oö³|_­€>ÛÏþpr7Ëw~7ç�h7¿ÿÚnöç±^ô5 “|Îå–çÊÇãgAO‚~~€í¼fв~´4Èøö›ƒŒÓŸdyº´¼‡å¼¸‡ù~ÿÞ÷£{xßÏìa=? ê‚þõ£¿½<ÿä^Î[¯=AúßËþõƒ½<ï'æùö²>nEx%Ùaˆ÷†Gß*(^†ØŸb>þ~ˆ÷yvˆýñCì÷ÿ=Ä~ö²�o-pÜ Xž£¶Ód�ù—æ7}«™ô4è× Ìç+Š|Þ@‘×�‚^�}è÷@/‚ÎAɻɿöñy๕âm˜×�f9^=Ì8 ³?¿{˜ýø“†~i˜ýâ‡Y®Ÿ³½_:Âq#Fx߃#,Ïôó]ásÞ8Âò¿s„åûàˆñ7ЇÈßFXO/e>¶ƒ>zd”÷}Ë(ûõS SäO£¬÷ŸzÛÓuc<¯oŒÏëcû��q�óÀóWÄX­1öß÷˜y0ï/™}>:Hü™÷?cy~jæ½lœãCŒ³~GÇùýýãßgÆwœõøáqæósãÌÏÆùœï‚~ô߯YÿïÚÏöýø~–ãsûyüKûy¿g÷3ß?ÛÏñò¢¬§û°Ÿž?À8øú\ϼåóûÉŒKKXßk²ýï>È|Ý h±Ž4uÓA^7�íõ¶ƒ,ÇSÙ¾Ÿ=ÈqüWYŸ??È8¹ýËuôÇËió샶‰¯CœÇÿT�î¾�ë—‹÷±?ì.1ÿ~‰åœ/1þ¿¾Äü~¼Äxù—%æë™ûÍwKl‡fºþ0¯ßnžwf\*f?%åí¹7 i+±k¿v�ÝZ»l±O4�~Ô!«>ÿ “Ÿ éÎË@‰Y?öìÕ/�ìxéÂPUr?Óáy¥ê ¥ãwíþ¬�®+¢@ÎÎ:•t¬ìGÙX("?’®Ô± £ÐÚ+0ÖðÁÈ©)!m;Páêƒ*´†DSɺãU…ŒÄ.{É{XŸ™lv°#þ¼²‹xéDb^†¢ìú•:�2RÂuNDÕU3¢I³�ßN£)+z¸íÇ��H­£"¬ùA$¸Ñ�A{HT•§h›E5X­ªŠ±Ð:Š |O“–²Ž2'LCž«'@ ¢ø…m~n¾œ—a­ìËÀƯHYÇU¤ÅŸ~Õ#pÎ/Mz€YõìÉäǧ§ÅÀDà‡aaš°eº8M:wð†+��th§?D¹-j¤nÄ än9¶ ²—X=ß,°ö‹ÍZ3{“‡v¥˜³Nx¼ùƒúÄ Læñ8¹Ýihëy¾<¡c(yÐ!aΪªº`=èeǶÔöà!ƒTýh …O‚o2E 7¡uÝEö E„á7!)……N²²¬+Ï:7Ë-'$D—=šÊ‹j0]~Q"C ¶²*òÂÐÊ6ËóâŠ�45ݸêh8%�o ¾kÊ Ó€?ß%,WÙ))äBäC0q æ‰“Ìu9¯"V‚Xƒ„­ŸžØd‡Î«2ÙI}gu¥š!öölFSœëT?Fu5Vª#żÔ�+y tÇQ¨ÜY“u'ë¯Q-%�…$ÅP¹rEµ/]2??_¬PÿáRÿAË,�pÆ"nS‘­e`c�ÐD†•öç”Ûz¸›“¥ht? í,7oà”er�n{ª'véÔ#¢%/ÊPYçk<`éúâ; WØ_rÝ+õU%@ƒç&P …ÍQˆ Ó1@ñ()¾\:6¬û¿Ð¦ žq ¢úÄ˸éåÏ î0Ï×â)í8°cÒÙ‹×eêpÝàN2è—çT#î…QÔ2uש“W佌ÍzlZ¦Ž_džŠÎÕ-ò­L‰]©oàÏ1p^ú0•mÝOÀ¢‡‘×@ôœ‚z 32Ðf,^÷[Ê€î5˜ )¯t/G�ÔoÂÄ$ „K/¤VÙšõË¡¬‘£ÄÆ"€KÍ·Q´‚.›ØÐKš~rOJq<„¢�7ójåzµ¾ž§[sáûtQ *ûú®þ ;l6Žjuü æ ûîBਗ਼/€oÐï*\£qîÑb7¹ºœžŒä©Üð¸Øà{àÔpLH8¢�Þ«þpÛÊm­Œ‰’0ðIØ£”U“ Á½ÎËR(ÌŸ»ÊÏb‰”†ŒÜ;�Ýê×áRZ£t¸‡Â~I/��_ÎLë°Þ&±×4’/q6i¹{µLW$½Ò +"‚1 -²*e*Óüä©$äøåˆåÇôåÙ$œÚ&˜Xžœ8­{%¬Cõùï阩J¬ézÐÆcÜô¦BÒ:I�˜"E ä”G>F¸ÙdTåªÝ‚P–UÖâµØ머2pG©éÜh<©ú�Õ¿(Ü P.êíÀbVò®ø²0ÅŸV”(pöÜ}?¼¥ŽhqÕê<ò@4�[�*@°Ö•gR¢iâ¡´šK¾5P}AMº.5€>Ð ²»>mI%—q�Ü7ŽUnûMîô$ÐgÁîÈ\)Èÿa"$Ÿ‚•¤MÊ\î^/Ùð#Æ|q€„Š4‡5À‹à¢Å€æP…°‚�,÷æGwj 5úªæh¢ŽÀùI¥B. ô$×z즅®Püx`ø�BiÑ¢/¤àÔl&Ó{h `\®¼è;„“”ƒ§u…€–sñ" —¥QÂ'…®;Òe&µÙ”`ª ¿Ù«k¢¬:M…ݰ-=š�Ù^öâÕ¥ë�Êñ©T…#Nå"D¨€Š¼tôr·JÍ9üÖ­Yò᢭?\ "­¥§zjô,û`ú¤q¿Þê4éb7æ ½éÌ‹Óm&t†#/ï)?¬SË É䓯‡XäI€íU ¿ò€µø{¦ÙÌ z^®@­j[¨‘Ì5—…λº3[V ¢´S�¬¥”0VS¬š®ŸW¶ÓÖÿÿxlƒ7z‡½•íÞ ,@ÓœQ©‰¹x=ñUt•ùŽ J=�>[ööQ|¶\VÌÓì��Í�+8itLÊÅè¤iÙÓÏ/(¯—¥þé¥óD@zpµ7_æ&mýIÆÔçIY�1Ù²)oûåÄ÷Ãf÷êÒÂÒ%±5C×}™Ü¹Šß´ Ö9Q×hº—чŸ]y®ÈÙ—.�«ãAÔ)l]Ú5ýi>Óœ'³À¯¸`cÐ�UªËÓª•4²éljŽ·ó˜Dÿ�N%˜gÍWêØ2[g’Ù÷©v6˜û>•mµuT’£²Ïùß…]Kãvuû¥_¢¸r"—M—Ûùî•çyÍÙnñí¾Ö:• VÖ³{äê�Ó[L,Ïb-ÃÍïAøú%R©1r÷—üq+AEr®|"½5º"ʱ�†eâ†&/4·5çäÒ‚Ì®z4n˜û¸FÓŸ#†²(@uWV/xg"( ó�;$Í™¾*1;Ä!¡V36%⪧ø€ˆÕ¢ÿE¤ï¨zê^uýZ›ïàÐ/dÍêlÁP’¹ÙúJP›¶*g-ªµR„KܧwÖžïE™Ðk®(&ÿ¿?¨9u»m¥elN#Ö š›4ke‘*­|Ôj.u»äó×´“%Ç2}C˜¹�õ¿PKÒV1]äÁ_);4imunify-security/languages/imunify-security-de_DE.moUT ëÆ«jëÆ«jux 臵Z �Gyˆ��ˆ±-ëuzXmÉ'�¤›Õ½ôð áœîNÒa�tÖž-ãà„Ù�ÞÝÑÎÎ,Ó3·¾£ UPÁE ’²)Œ±H “€\!\CQTÐA7‚~lóõŒ¡º�õú• l?³�õ÷}C´�õüš�Ìïæ�<~×F>§aPˆ`ݾ‘íç¼ùþö�¬·7²>ÿÌÌÿÊF>¯o‚~ô{ ]Ð_Âa-’<›Ø~ç7³ofþßÌzùÜfÖç—A7“þ }q3ósýÞgÇž7°…ù9±…çß¹…ùu¶ð¼x óó^Óÿ¡-,÷'Í:ÏúECÿ´ôÛ[˜¿«úxþu  7›ö©>æçÐ!ÐzÛ×C ¯}¤�ÏïÃ}¬Ÿ'úxý�›ö§û˜ŸË}l§_íãóû»>¶ƒûØ^2߯ÙÊçÔº´+Ë1µ•×9¿•ù•[™¿À´ßaÚïÞÊüp+ÛÁ¶²~¾±•ù|a+ÛÓ¿›y7nƒO‚nÝÆû¿kóýÐ6æãÃÛ˜ß�›ïŸ7ßÿ|LJomãó EiÜ Ûùûží¬_{;ïS=ú¦í,ÏûÍøÇ¶³ý~z;¯ÿÌv^ï«Ûyÿïlg9ž7ã­,Ϧ,G GhݱC²Ü|^ïÜÁëüªiôÍ Ošy×ß [mƒú7³¿ÿõÍÌÿº�lw7‚Ž€…ʬ_ØÉç¶°“×}ÇNæëÁ�,Ç;YÞOìd¾'ǯ/ú·;ÙŽ_ýÊ+°—°,¨ÐúË[Øþånÿ'è^’s·_oè½»Øæw±}¼gïÿÛ†þÑ.¶Ó¿Ý úªÝg÷ïæýg@Žô´›åÿ�Ý,ïww³\ÿ¼›í÷_wsžx ôý oEl&{}+hØÏãž7ôýÌÿ+ö°_¿fëçŽ{÷°ß4öðøè­$Ç>çGöðù ÔýÃ=l'Ûö²Ü ÐIÐôá½lÏ×°ž¯õAw ð>ï`~>`è‡@'h}ÐQâô Äß>äZЋ 'I éÿ[?¿Ÿç¿k?ëý}û™ÿ�ú»ûù<ÿ`?ûѳ¦äËÔ%½àüð©¬ïëyÝMƒ¬w1ÈñÏ ÇÿÊ ëåAPAþ<ÈvûYЛɟÍüJIŒìq�Íþ°Åæý‡mæoÜf{˜µy|ló9½Ý´ßo³ÿ< :Nûج×ÿ=K~Pb»~s‰åóJobÐGI? ï%ýäöïäøpfˆ×WC¼þÛ†X�� 1ŸOšþg‡Ø¯¿;ÄvðÒ�ÉÃìw;†y¿£ÃÌ÷ô0ËuŸiûÃl/ fùŸ0ýO™þÏ›þ¯sÞÿ³î†ö�~Ð׃¾n„íî­#üý!Р¿5Âöõ¼¡/Œð9ýÛëç¿G˜ïkG™¿M£œûGyýS£&ŽŒòø…QÖç;Í÷ͼK£?Ÿåõ¾5Êrþ£ùþÃQækݯ³mŒÏëÖ1öÿÛÆØN.ޱ^ß3ÆçðøÛÿ'ÆL|ý4É3Æò>~ˆÇ=sˆõôì!>�oâõ¿wˆí÷G‡XWf»=ÌûÍæïáa>ÿùÃÌ߇3>ûÍüÞó‡9~½t˜÷Ûq„ãÔÞ#ÌïްœUÓ~˶—÷aý}ôã”gLÿ÷ް½ò(¯/Ž²ßŒeýU@cPç(óýuÐô*8Û§@oc÷Ï”yÝÏ•ùœ¾dæ½Pfy_4ó ü‘ý]}Œç­?Æö¿‰@aÿð­J´WŠþüê½UYý®8(Ú^@?š‘p!ÿRé϶ãw�HŠz˜îê^� ö‚l¢’µÂϬ»+e+¥´}¿ëÂñ}GN½îÕ²¾jç}JÄaìø"’oI¤Š•u@ ¯‚‘éYá¸n$Õê�RYƒ¢#�–4„‹~÷ É{Lï™.v0 =aWº%|ôbÑu”¨úa­Å=‘Ká{m/¦…Z²Ó z¶…×î85ݽ&‘P^,KÖ¸PÍ0Š…JÚm'Z HZÄåIq6‘l OYãX 4™—Ö8sÂTñX=j�(¬I,„Ã_À^qìÔZÐ1„ðÃF«IŒq&�¸«Óˆèì±Àt; ¼úÂèá!jÉÀ©ú8Ïú¸0~’–�¥Þ 'qØÖÝòEñ©^—tˆzIð¾�vÍa%/¤ÂˆùÐOÚR|á3ãÁ°èäjp�X <÷Àg÷‘ÅEr^"j8¤ž½C:ˆ Êš¸{Êš ûðAbÙ£k¢)±†W‰‚ŠÀLÛþ3„êÈq .„‘;KAûtœªçÃDy¢¢™Ž€Mú.tÄŽ…ùÔyÇO ¨•ƒ!Œã¯*œz >”ƒãõvÇUfßïѱ¾NMÍ ØÁì¹Êœp�ØYm4œ­Ö”´ÂNâ;æwHÒlj±ã²]R]wœÈiKâH«gzR¸!"¿×‹²ò³3æÐ`ƒ-ž-7€Sf b§ª0>�‡f7Œ÷¥ÃcštH>„¥†ò~¨$ý�¸g¼ ¹ßš0&4ÒŸJ¸žÓB²B­ ¡÷ŹԽFéxç!lDPµ`}§4®®¬;‰‹£‡Ç††ðadL4÷�©° çÃø…ɹU6ÃÄwµ2’ŽKy‚¼1�£X9&öì)„ÆhÁ6RZ9·è?WžN&Õ¬†NäâW,­Ikñ+wž�€ÍöŽIÐ"«ží#|O¥"&¢P)»B±¥R‹¼í»oÍ™ž"ºÙQ]MR7ürÏ{®Œò�˜ÝíØ¬ýR§ÙÉ¿C;õ’ÏYS/~Rï8aœÉ4'ÉìÎB[Sdù¦sJûPÚÐ.açeCÞo� £ªçºj;…ð�‡TÝ4…Oƒo:Š,Ü(ë42º�ì�(S §p£H),tš•�– ¬ÓIayÞS‘Õ²¦A^„Á4ü¢D¶•x¢² Àfy^\ÑQM?ix:œ’Å·áßM(„i„¿Ð§X.#:§È)ä’ƒ8âHv‰“Üt9¯ÂW¢D W¦6]G°É7íÊ*�!’ú ÎZRvÖ\ަØ×«yat56"‘¢F-Ä•¢=PºwpRŠÇ±’~Ýd�èGi@�˜Ã‘b•}�sþ˜uìѰ­j!Xém)!‹®§!¢:d©5�h ‡§š¼-É“t [‡õX«ÔãÈ«f%Sž8­á‡Jè�= é$;Ã"â�ç‹ÊÛ^ÐÀb¿KûT*c¶da¬ ÂpQ !N'Ë3d´„ç!Ÿâ�v?cŠê^PƒÅˆG°Å‚ÚgÍ亢Ç�*ÒDÞvÑa0çyƒ“…KDMê ¬VËR5�Á*�Ñ:Ÿ 7^€o�¡?JgÓY:›Lc�UqP+UL’¤RÀdRÄ…O4PÌJ“ì 7ÒR¯üwE ”¤Ë‹lô � WêHHºLÑe¥v¹ ʼnG Gû¥!4¾lUVƒÜÅÞÛ õ$X�ÿñÚ«ÀÝê�› ËÛ$d?�мZlQœ£RÀ‡U k�Oô¸9eÉšÃÆ:cC¬÷âær4ÕIíA a-Grs¨ tØÅrÜ€9öæý»‚Vvƒ” '- ÑC§G…³�V–fÝ�~ŸµÈéú`-ï¬L�[¥WI'V•$jî»=Ù康XÙFÚª­ ²*Æ;ß qÒ$Ç5?pÔ»@·ét:’\íB’³bs2 ‚Z¹ù¾1Lt!g*ðÕ«°�#T¿ê)–È©;-0¹ Žt²Q¢n‰6ˆ²zq/­ñ9—^ñ£e ^î&Ó™„YÐþ… z'Ç[¾Ä Paa‰ØQ-=H:~ÂX€šæ¬qzº ìÙÍ©@¥dFg•úáêÝζÖtÔÔ9^ÑØºNW&ñU3â¢ÕŒãŽ*<èåõ5ÐRÚ´Ók¹2¢:˜Mév»¥Õ>Õ4Í (ÎXÄm&²µ,ؘHh<ÃÊêsÊm=Ü]3ÜIÎy•FŒtoИw§ceOŒ[ ‹´ Pö„�P¬´§]¦Oø¢¼òfe¸4TZÇ!ÜžQ ϵO$ eÏ…e‘ Šü¥ëÃR5ª¤Cƒu,×Ô:ÂöÒŒòÄ�²Èk4|  "‘='�vYœòq‚u3Ó3S9‹àh�©¬ì¹…Ž,‹¹Ûþ8Ðùñø]s'í£ù8Ú€Öž j!UY­zñºÙssöÌ‘ŽÞ¦Ò¨,F†FÙCÃöÈðÜÐmåá±òèØ�¡¡òÐÛç%áô—16¤ (ü‹“Sëf}D@ßF…ÑVettS9&øçñ�@Ür\ ï;¶îû_’n.ÌÚg¦ÅHi˜Ä¾Çž„'xP ­òµmÓX€¾µ Žôý˜¯og¨įJì–Äb2F+[)kÈ:�� ÖìÃZ…Y=­Šl­ÙºÂì³_âºR³ê´qT‚Ká¼%›‘Ê¿ÓÍ‘¹StÍ;Ô)c2S<—ou»‘F_ìÚã|¯»V` ÊÄB"Æ·E¥ãÅ‹2èʈ.ŒºþÕúÒ÷¿2ß®›ª¨! ÒI=Dy’?˜{9,BÝ.º UÙF\LË 0!Ê^øñx¢º^ÔB7a„¤.¦›àð—H%kŠòm+‰îM a[ul™P †¤/ˆ¾¦ SÕ ¸ úx‹¯ŠAæ­{3†­©Èw’j<ˆ`¢”f’Gš‹b qƒ0æbŒ� dƺ¤ëoÚ• nØBî¡�ÁL%ðj͸ ¿8¹t⢂  ãìºW šß÷¢©5EÒÖòÌcQ/]BHJ¹0~Ò®ÔšI¼� ‡$Áâ¤ôIl™æ¥åï± ¯K—xae�Ò¢ü”8/lÆ{�Ùt=™_�F£NµÜ+Â.í…£¡K4c8Ø*$pÝ2W�‹,DC..]jú± r«:Q•Œ�àEL{Ã?º!´É7ך¥ìgœÿ¢Ën öûò+oÝ.X íÖðªì@tëm�q—ž2“hér­•]~›#,üÔ—Þú²›ãO¦|}õm®¾ÓßvE껡 C{ªV¸ŒêTCEqÏ=ø$)0ÓiO+»°¬N–.à º$¾¢N½½§��+îÐ0ü§naq1�L9ÉÙ5 ­EQ4º2µ^¯QéP,é5+©­–VuÙx¯°*¢b›08«/]nT�¨g =Ð!�¥Ë8¢Û�À\žŸ%0vGÁ¦ª¬©ÓˆÎè!“•>Æ5´‰â÷l]z>AìÇ i'¯¡( B®¶ÅGæ ‚yR3ݳ�W«(„)'Ü‘¢3”¥ËuXxXÅFmqB¢ð\„`ÚâªHn^9#¿^²OHZ“òêNQ\ƒ|ù¤¾ Çü _q†,8nìÃgV›�Bôy`/à-8w¬²�êD¤�Õ—â[x[„´]ÄÛ¹‘#�F]>ÛÕ§ò†3‰¢0‚ÃŽø†~éR¤Ó‰«O®Å�LªDÅ3Ÿ†9åìê^;¡äHj‡m&’q�§PTò³ÐÎ#é ‹T°¦À$ªÙˆÆg[E•B–¤[°]Äè¥ÇÈ:ò+ü Ãuº#Ä~®oñ¥«ÕèFM-Sy¤ád‰æ.Öªê8¡�i‡ z'r5(ÜèëˆX²îH/õ¥54Q%“Ž(én�)Jâ\žv@4À áP£XR¨ãs60)µ$Nx1L.¬òN>Ø™Ä&2dÞß³Ûÿ}ññ`Ñiú½�I@®ÄôJ`g×*vÌéj¥—²Á(]ó!…ç»ð\Ð;s2�ÖÝa[œæ¬RõôSR!vBù½o=ÇW&ÍâgTPc"ÝÇ^e<Ÿ[/M@M2f¼ŠÛk~Î�²Í^™ÔZ´;jO} ›c AØV€©,]& g PyiÓØP!Oè�*ñÒå@C�AáD“YExÖAÊ¡Œ_' CÊ3ÙšJ§CN3#EÎ¥ÁŠÔ­Ú)GbÿU_#ÖFí%³Ø-Àðo”Ë×~Ÿ°gÓ÷ �0�Xê¾Ò¶saèkøšÖ&v%{œH¯YR¤A0ÞYÅ4•ÔFª“ÅÎ|3c.Jh“‹Wy& ‡ `ªUpâZ]Oº&5E@ˆÓú ±�´Š"9\¤2™Ó3?Y(éW!c;Qô€ó«¦q1uß•ÌP™÷²vÒ…•Èžün‘Å- �„†UŒ�± Á„Aµ‚ŽŠ&�´S]LT�W}ÕHýÇ ´úÀC\EÁ\¡d®f™“% y˜ia—pÖzÕêüC"ù=O•¶Á q γ© Fª ±µ©éžž.”ŽRÍ�i)==5YJħi’M…<9×À\¿kfl0ÒL¼£Ò]xûp} ·½›KøËåMïêúÛÞÅÅýåpø×‚\N36åÁˆ³Y®{·ïzï�öúúÛDЩ9ÝÍÕÍåJžW­¶û¶¯¤åÏ[¦¼ –?Ñݘ�_C3m¸ýæaô6x³IKw›p\ÊPEBN»ðf,¬£Ü�‚¾æÌâ)Áê¸ë ´¿ ^}9jÕí´»ŸþY»Ým·‹ Á=Ÿ ³¢ÿé²wÜÜ=øî®{sõÙßïn/í�Á;.¹Îµò~ô¯¯ ÓzÕ)dù1¸P3¼{|zýèã œÚá–Í8¨‰óˆÜ¥l›yÝ/Ö<Ü_ù÷—V/.ðú‹v+T³gviP¸Àö Ü„Z¤¤¿ý®ïÑÃäa!y?<Ý.æÒˆ9«T‚ìÐhh.˜±dÁ42)ñ‹ŒÍ,I ÕÊ¢ïãé'ÀdBZ�‘q âÅL0|V‡.øØËMk[’^fc¤ô ±ŠÛš];5¼X,Z!qIˆ iyƒS©,i²ÉD„ýR®gÂ�0[—­ˆç,Á¥•Pk�\6’ ™f"f™—ì>ÃdtuAÑü× •yéú*K"�ÊB–"3cü¸2ÞÈZ´“!äÌ =õØ}}?vÆb@+BóRVtmnlÃ’Ù¶ ­R—Á<Óu²HŒ¸ètÉwfÌRR.¶££fÒžÀëîê°ÓMÞtØá«O úmÄá°ƒŸ_Ò|îaÔE{³Çòƒ¦Â¨0(:šd†>cyÉûÄQR`0‹Oqu—Lµbtüb8ùÐÿBôCÌÕäÚmÈ–¼³*Cße3&�²!�TÈK’;¡ÿüý<:<ÜÞï3Ï× ,,˜�q¢ÂÇÇû4ùG"f‚¼yjißD«fÑ”…îë¥Ê4P”×0¡»TŠ^pL-ø�ZÔŠEHL§@c:Œ�KŒonI{Wj¶H°~5Ò /ï ä£T t…Ìb­@ú‰æ%?t^/Ÿ ÿP¨ÌÔR8[zWÞǨÉãù_ üì•$%“¥oýœlê[¸U¹1wGe.ôÊ"*7<Œà¶£ X"ª ½ùàœ%L†~�¾3Ò哨Î늸Åtáøüš±¤�Lh ÷|ÊŸ|Ë?‡X‚‹¼ë•ÿûk¸’ŠÄÜHzCÅ£§ÏR6É6œ(¨mŽÝ2åg!À�rí7­…~¦5•²ã§!fÜ[b>bļ�ÅžTÀ�1(-¾»"Ü Gõ¥¬``cÌ‘% cC÷qù‚ŠuáVM,Öïà Iy9å!\XV3Ìç`�øÍaÉ=†…埱Üs?¦„0æ´]ói–0�jrè�Œ�RÆ×þ«äŽ`€ü稯•1Á£†9˜“Óc,.–¹ãdqX­®Kfäk¢òµý÷;¹H¬ Ý„¬4+yæoùžUæð>ì„2›�¹kØŠ@XÃø v ªà÷OìÉ4FN±bª%dÿsû—Õ<åçW¿ìq\?Ö�›Z÷7sÙýÿ:.F'_?,Ö5gÅz÷Qeq¦¸Žy’þÍ—’2Ž]S»vSôéâOo¢é“ãgi ( L2ç耎áëMœyàøsª›û”y¤vw–RmÂ$7¥ºâo›'è£~ßgX $–Ê:LW…ÌÄcÅtô§¦´‚ÀE‡D·§´›0,M”òÉO*P|Ž;«–üýcm_ç,>öfó�]~@ÍlæÕÖyÁþ¨Žyžþ\çYã?¾€I†T$pÑ.¢à4„ô» 7Ü»ÆLN½ž3ds¿GQ7�xÇ"UÏiਲÂi‘¼¢öÊ~ «D¬ ƒå!Ç0άƒeà éTS �¥áªȹBAÄÉuoÞºUîE§khÐjÔÞË»ß:Ù'»½0z�/yýdsÿùy£÷ì6˜rØQÁ‰j�Ë㤔!Ûxø/ò‘Oáµ}Ba?© ¨ðq—-ׇVaŽêÜL4�ÑC`­¢‘ }]F¤‹ Œt 3—=½f!ª¢ÁèÔ¨%$„þ0þ©‘�ŸRraˆ_sœ²ƒž¦uÛ[NÀ(0Ø‹D°Ì<æ !Ã$Ë¡S¨EtâÀ�Ü|Ü—ÎØÒEJïŸMò $H^S”¨ex©œîÜÕ¥ËÛìºIYa¼ÄœkÜÄ «È\Dþ&·¢Ç¼»HƒÔ·ÒØ[ü*â]î¹é(=Q´cœƒu?¤/“IV ‚ÍZJjåOW¥VÝÔfÅh-×y™‹�nîGyÄàÁ¤ìŸ¾­…_s¢-óÉ3oØbC›Îì!VMãff'EôEù £‚õš ÊsÖ‡Ô(8õxÀªûË$›3‘�57b‰pi’#‹g¯»p`YôóšHZ`k¢UV¢ç8 0HÔ>î¼ùànâ û¢?­©ƒý²éjúl•eÉæ z5Å3›ËÞËoêQù/}¿¥›5a•­wJBYkL¯¥ÅóYpñ^àú£+)ÕÅykuNNs–ØxI•ìÐ+Ùa=ÚY�ïó¦°k†ø|>ÿB®ë¿Íum­vè\= ¼‡¨‡)b¾ z÷zçÙ‹ i0FÁ´F°Ün¼¼Tbõ>ÐÔ†­£+8:ë|åå%°>k¿®Eí.U4p¨šñm…cVH–'eÏ“?šÓå嬜ý°GîÍ·j³ñv ^8‚Tt§„¢%M”5›Œ¨„x7¾§nÌÒ”×4Z=01F;˜l6cE›æoî(P5åeSlñ¦TܽÚ[VÕ dµmOL]ëtE�•^AŠ �xËÍ‘ØÂÑŸ¿ÿû˜`$J]i©¨OˆŠøH ô>M­…UiÝûÊ­Âê…ù yW]ÂO J&ÕZ£*ÕRoR¡WÇÚç“û†\Ü«íG(IÝ;ºe˼•ÃQ {{Ñù²ªs•d3Þ¨uÍç˜Ks%Ú¨ÞþzhïWÉ\í"˜dÏÖÈXÑ$a-ƒ|†»¡ç¬–·ó‡�f¿ì±Ås?¬²Ö›`¥)-Á�Éd£äÍz>ˆñ9RhXá‡êŸŸWÓבíþ§½½âU�¢ñÅ}tÑ©¹ÃûÞÛµŸ,4ÿÀB*õ‡íUçñ·«@øÓÔ i±‚¬jbÝtLä� B¢2’šiÛ;ôõ•xu�—rX‘†·]ßªÄøñ¿ìñ§¦mÊ®šª¦`óœ óDù»Ÿ ÍØ_PÎË}XUg¦þTš‰¿€-y ¶³ØæI[±}ÏÇÐKÓ¤(ð¶üeÒ3æ;6x«µp[U¦—€š -ä:\¡3�n·æÖ>Ý7%£a¬yÄ”%þäM5Ø®´G_"¦^¯¦è5Âß“ÌR%q»wñ‡K×I?‘ð?ö)•{7åq�I¿û½/8\×Óß;²½ënáŸb+³±ð_PKÒV1]æb¹÷ýC4imunify-security/languages/imunify-security-de_DE.poUT ëÆ«jëÆ«jux 臵[ÍrÜ8’¾÷S`=ã9FU–dÏl�:ús[Û–[cÉ­žžÝ˜@‘`ºH°†U–NsØ7Ø=nÄ^ü ½>­Þdžd3 ™ Y’zcöÐÑ™’‰üùòª°s�Š'O¾(ìܺ ÿõä¼*T‰›œ¦“ïTeuiöÅiQ�݈ •Ô•v7bwº3ÝùgâïÕª¬Üä gšÖs;¹,÷Ź•Ýþ|]VéªRÖNËjþÜÖ+~¾Êë¹6ϵŸubì4ß[iÝä²’ÆæÒ•Õ¾8ÊË:}«Mý1¼7óZÎÕäRÉb_|­ªBzsvzvÒ©¼ô;*�S¦¼Y©}áÔG\^jó•H²²Ê½úpùzòe,‹Ëgªšœ˜¤Lµ™ï‹/gÚ‘Ìù·—“£JI«LŽ¥ƒI÷vö~3ÙÙ�ìí^îün÷åþ‹—¿ÞÙÙßÙ &ïÕµ¶�•o>p_¤êÏÇ'~޼®d>y]V…ÝfEÚW{_ ÿÏW[FüÃ+±ûì+ÿ~òµ2ªòö»:Ÿ½={ÓÝÆ$ßOŽËL°/Ævà‹_LÅ9m�x' %ÊL¸…~ÏÐQÐcúÑyÐð Nx¬lRéíqŠ+ðœsôœ (´R$eî´PÆêk%\Yæ0ìì‘(d¾–•6‘ÆÀƒm‘éJ­ež‹UU:ðiX}[H“ m\U㎀�à ‘•[t­fV;e§Ý—K; „vÄä¼QÓ ÿ¯‹LZ«Lª¬¸=·E ãÏ¼Ž“‹VÇ×AGx´¨Ý­¨A½mfU�,¬ª–ʘ>.»ûÌÔ›\õÄLø©·òAíð£î¨û"þŒ�ÿðþt|Ž6ª×ëi‚cs;…Méæ¼O…÷щ'¸G`§Ðì…tOš%~gÝ\?Nñ¯Þ(§‹Á¨ù¾ݸ7ûÚ�kó„Íî¾Àø[j:ŸŠ'{¿¯Lž<Û{ûâ' /¾„HçgOž}ñ‹m±Z¬&~±5ÚõŸîþ¼Ó‰§{¿´�ô´.ÂÓn|çsc8?ŽY€^o¼§“ã~ÕÉŸ9ËUÚ‰,�¾Öªr� ¤{ Ê@4«L™DuÒøjI¯ «:¥S=¯qÑfè»Ò5‘Åy§“…sˆøÅÝgwËÖj£§Ì}Ä´�I´±B€O2"ê„¡™ƒtü_+×ç‹ßî æ�gBU ™C~�¾½¯ü×#jcI¢¬²ßɽU ¢*ÚŠ}f¨/}ÑwwŸ ”Ç„Ë6ge%Ä}7äÈ ªI`Ê ÞrÅ/LYÞ’ç°ujÈ7îVJû#ð4…âQ3E9b­ÔÒ}œü9¥·Á'ÿì‹Lû¸uñ?íü =¼*“Eë7Úe:�¨Û‰u­ªNÂhÅÞ•hØ…JëÈOLp6¨éÆEÅëÁ,¦[×Àì4@#“õj€Ê0»ýœ±ÍºÇÚöÂñXÉa@6»~”+iêÕ0ÆUîÑ‹ÅSs-sø‡õž‘†a†éF0ó»Ï¹Ós%‚åSY£µð’ÆC¡ÚÖûéFŸzsì<£ÞÞ8ÑÐÛcÚ d)nׯB̪Ú‰Jåu”h fïF×›µ^AºÁ$7Dz;\Ks~÷©Îx–3Y/©À}ïòj 6wÚÄr"<¿ûd˜ï0KS®£Íœ©%Ô€^IÆ>›qs�[g™N4ÚcøY[„Bê|0·5| pª~,D}­2Ó§kÐ�+—$0t:+.pºj¡´³�XmVµÃ¢(Gç@\4—3…U“­U é#”¶E¯ñáu I?ö– ý—tO bWf”¾8º æ‘‹»Où@ü½š«�''œ×à5à‹‹)@½e7Ã÷PŠBèæ€Ç““²¬ú‡·âÔüðÄÈ8˜´c3œáöƒÉ•œé<ó¯Õ"¸ ‘…J–Vè �yF®h0f¾>¹€%Ï¿½¸ìïèyu÷9sÛ¢œR&ëøQ¦Ê¢^Étˆ`zïÒ´£ð§]©Dƒ pªZ ™aéµÒh§o))> Š‘ÉB <ȱ b¦,ྻ‚pf{z¯jIðž�rh‚‹š±EÉéî]3„®HÎ&+ØjÄÑMVÒ�M²ƒÿ䳚  õ­ßz·½ûœ,Õ¸ ¼#Z�μuT•в\@D] ™?¸ì$)m‚Ê=/ñ®êpŠÉ�™Wú<>ׄÍTî'†F ÝÉcŽ#§UaÃZ´¸5tml‹WlÏ»ö2 6¶)þPèa.‚­°&�¥È T9¬—¼\×U²È©íDó2Y²’†B‘â"y^®-a(é�çJ¬2‰R'Xþóü&2].뙣^׊Tƒ£,i˜—EÀê  vk]¥Óž6ÑRبWÊÕÎË�ð—]A¡âaÓhíøjØCÏõÌyÓÁHØ=·†µ”5ôÚ郰JZiÒÍðÞ 9/G@¼±í+†o.Ôr ëCBë#þæ!4Í4´ý›xç¸Z埡ZgÚlP‹¿y@­EYW›•ZTtZTã–ré&K±7}¼|Þrc�ŸªAÚç²Ê cç e.å\=c9 ¦á“« ŽZ pxek ›G }wÂHü£…ØQEYL±† ŸW2åëÔ|�s+ìSBÆD3çå|Á? †-Ù ãOÁ®|Xá”Èɱ>ÿRDBˆ¬ÎsquðšqqS¾bÈ® {*—¥ïò·…D?ó­Þ¬ ø©x}÷yé �¥¢ªÕ¨ ëŒë�bòÛF"&%@‘çñu ˆÒ F óv[‹¦‹2{3-@ðNá¢VûW,cž•€3Ê*"gîþÔ_ªˆÀÓMs:¬ äcQ{� „Šj@ÝðQvFX,j|J«¢­{Ýý'yí²8=Æ‚TB/N9¥ –C¬šOHfÑ Øü~ÁLp±(×¢(aû!×9‡ÙWèÁ`⤚«™�šö7· �ûózËñô1Œn±õ4}¶)ÄÃËÖE7lãv|ÝMñß[ý±¶WåŒê=ñD\VbˆW2!À5mÐîKj‘™fŠ0ÈBÝt b¡©œC*ÅàZ5óCmµ"¼Ü,ñöî'ØÞBûšXáq`² ’‘X†©Àñgj¨ºß4Ê”KŒâ0gˆf€ �ÀÌ"£$¸„«n Óî9ß ’y*Ͻ�#W~Xº°—ðh†m{}ˆN€øÚR¹÷‰b*5`YYÎÖØ®úd`Á‘�ªÝ}*[[†ûa¯îE&ázÿÕ ;Ç3#mÒ@ÂDÆâmwŸ¶ÆÈBÏí�Ü©´qð#HýÛâÅ~·ös¶ÆxMGb»ÀœˆÔ¶xúbÀz/Nï� Fc¹ �¹RrÙèC° 3løµ‡;ãJlÓ8BذVúd;%¶[W/ÄÅJ#²Æí¸çÙ3ÚÙ1km4ÐÞ¸�Èrr ¤Œ%È.þ0-R,ÓqÕßÔ…„J.‚ëK¢ÙÈdûë¿£ÙÒ§Oû³±¬§ŒÅl¾�ùô¸ddp®Ñ¹0¸`#$5’Ô\_ãñD:s¿¯ ‹µ´m]ï–ü 6ês þÌŠ0ZaXå,�»²T+‡³eUY]¬ÕÃ《Ϯ¢©¼¿G�f€L”¹ÅŽÔ[h(x•£~ú…eS ¡¾Cåá,RíÕú"|R®{Ÿ‚§ Mþ3þ£ ¨„Ô$±¿üm"âz 8à̼Šù» zìD!ak°s™äàT$•\ç�6ÌðÍéäÈKŒ ¿8ùö¡ñ 2œ ˆ`9W‚r‚°¥UóÖg.%~¨=&ãÓ\7š@Vaø#Ÿk®Ç! °2®]Ö¶7éÉOiðãhňí{<7êÕöK*¨szÎDOÏ')vÈÁWˆR*ÁSô5‰К(MÎ ò;ðлϳñߕ޽û5‡­ÓnÈp­CbqöImCj€&繈R= «�c€¦ü­8´<”¹4ItðWÛ¹Z—ó!z\B^À“<âO{œewè6B¤â £ºª�Fþ`9žñî€fÇZ¨0Ö6#ÆDÑaãÝçlŒ]tXKZ /Ì,®HiÙ‚!ÖÙÀ/¢> ä!¶d�Ö$þ•¬ l"ùE” äm…‚Ø5Z=ñÈoBc4Á£WÓ\c „Üè=¶Qª]Ï›c C&(põ\ð1 3xK‘§A~(B<`x¤¿R-ç¦$è‰T— {FøQCøW×ЕoyÎôUÃlƒ™Ä/¾üíË�x±÷R,ž±¯»�èäı_Ä“óhn_|Øò4,k›ù é:ÐÙFxeRY¥TªÙ‚Øö?c_öé§…ÊW¿�Z¦»Ÿõtˆ­Þè?Ŷ½K®xj€�›K¹ |p©ÔJT5Ý›âå !{ìî’;ë7f}ŒIpúèÎŒ}“;ÿ«47¦Äìð•%þê˵Ny·ñ4oüÛÉ�¡ ±‹72”œõjâ!ðÒOt'zóÀDÿ‡¸eÓÐÅK6EXƒVV3�¦Ñ�Øm‰ÑÛ3²¨Â¯|-Ã;^|›†“ËjïT\6ßE™;dQ„v™aŽÞýè6*ÕÍ™‚‹¦?Fûľ•Æ8xÔ‡ó8¶>Áx¤Á ­ºqrQ e7»–§-˜£µr �55~pKÜÊuä*„ ÂbS¶C•Jýít‰W¸D|>±* Ûd¸Ášrè„ �L϶X†¥o=Hk0:Õ0˜UV3¬TiÜØ$“æ9{.�=5|[× ×F^K�c”Då„àUæoÈõÙõ°XuÓ�^[dÂð²ðþÏ%LÃ;t©ó{2ª÷¹6Q‡%êH:O‚qžá4¤ ñräLݨÛZÜý”e»kÄ’²ížþ“ø+Íxt£ØÒkÑÉ¢Vìð.:jZ`¹›ßˆ0 ÂhS29ÁNƒãÊwÈAú#Î�ßбâ]Ž˜Ù=c5ª‡£ÜÀê)Þ`è�Ûùkƒ³»÷÷]ß`}!÷'ü,a{ãsTx2‰iGH ˆI<­ vöq~_f8Ý”šóñe¸‰l¤ï¢BwG=Å4 Œ9^—y]¨{ºR×€a¼ÿþjÄs)–‚‰ütæ±Î‰|Þ× 'oôpMÿ áˆ×@Ÿ7»Zöx&¸Œñ�Õ•C(vz.dêÞT��Ä"]°ë„ûõwL¦W}IdnäuŸ•ß 2üB± ½3õûAFѰÇûÛØÍfY¿ôgGþǧý®½ 9¹aîéÛþ jý ïÄ àô2:9ÿJÚŠèÅá'pî1ŠÌTïbæ{~…úû/„÷çû?š4þá'nREwëðȼŸ݉u Y®òE’.ã̪r�'Ök<’ò4t‰&/%Ò �eÚh»€8V)tQ¯xêèë€åܧzvrcÄ:hžC=LWUy‹¿„Àš‹4c!½íOñˆ# ´;-Á„ø#£j�g:tdœÿTGÎnë®ìLﱞ Xü2O:ßk/NßxS�®­ê½Ù(•Z:VSÞTQ1(€K+7FÕh&|61ø�²dp¯T`h‹ÚZ ;k~Ù1]ÿ PKÒV1]Ä·{ …D4imunify-security/languages/imunify-security-es_ES.poUT ëÆ«jëÆ«jux 臭\ÍŽ¹‘¾ÏSpe nÁ]Õ?’íq ‚Ñjµ4 è§§»%�±»0X™¬*ª3É2³J5'?„O{Óq:é°€.\oâ'Ùˆ 3“ÌÌêj{˜™®Ì`0ŒŸ/‚ÌÉí\¦ìÞ½ïr;·¥Á¿î]ýA$åè<½ÆJ­&ì<¯”œ­Ù•H*#Ë5;ŽÿKù¥(´)G¯�Óèi5·£k=a‹²,ìäà`¥MZaíX›ù�­ $>(²j.Õ�t\GÖs%~/¹-G׆+›ñR› ;Ít•¾”ªúèß«yÅçbt-x>aWWÒ.èÕ«óWg­ÌG^ÀS­J¡€çºVŠ�8?—ê1KÜXQ>y{ý|ô}L‹óÏ„�©D§RÍ'ìû©,‰æâÍõèÔ^Â,£g¼¦Ç‡Ç�Ž�®ÿ<9z4yøè÷‡‡“ÃC?`t)–ÒÞ•¾^á„ û·³+Ç#« ÏFϵÉí„©‚~Ú'Ç�™ûóÉžbÿñ„=xLä?�^%ŒSàû‹ÑéËsv<>ªUòÓè™ÎA6´ßýfÌ.h‡Økž ¦g¬\æ6 -M¦k­ õß ÃgÂ&F¨´»1dïÁt.Ðtf÷Žÿ¶šÜ{°ÏŽ'ì™ú߃²‹W÷|÷Ø¥E1r“ ˆÑÌÿè·`³%»ü[ÛŠáž²Œ[ÿ¢eÑã�^±: 7Þò¯¼å6Ûš˜'jG�)>ÍDÚŸÀÜKžê–’LJ”2*-1=°œÕ$¼õZ—µÇ…ì_k÷h‚)_Ò³’~®€�T¶Ã€Úšª¦4¸Q¹ùäé#é_ˆ²¦{øÇÖϛi‰á1z¬¸+÷E_hÌRg&-Ùæ2Ø}]{õ$Ð$�.õ…Ù|ù¸…\7¡l¦+kÐBØ€¤Þ¿ùR“µC¯”Ö¿�á„Si[h\oA�{p?…”RåSA!b%Ä�íÛ8ÙsJo½AþÍ¥žæqcâÿyøßôЊœ+Þ<= ŸÚ®Ì}q[ %–ø³&P•JkCc±ÉB¤Ud,ЬmØÙD›ÕvÆ1ÙØƧN­Š‘‡0ýøö-cëyŸIÛñDH—¼çŒµ—Ÿf‚«ªh©_ʼ�â>èåçjÉ3øÃ:ÓHaÏ0ÂsÁ“&­¨|+ÝoPáró ó�VS,¤ÌÜ:³ÝjC}ãŽ�iÐøk£ª_z' ÅÖ§Œ�tjšt(ÙC@fD®—!¡{Q€‰LæRE[ã·‚�3:ȽÛ#š·aüS³N¼qO"þ?V�âU)#ÑÏKà¹@¹x«n”^©È˜@:‘ÝØ8£ëÐÀ�PT[Íf`¨ B˜\ZD !Fº §€C$Ò:RQ=s¬¡S©o„ 8\ão4E+æ@‘ò´µC=ÀHª¢*1_ò€ dt�!E#@ à‹P˜çRd);û(mi£4“ð¼€�Æ¢GþsØ{ˆV È=c¼;mðöÐ ´QPRo–K1饂�8�@¦øˆù«�e<œ?]]Aâö˜"4ˆIQŒ|ÉÎÕ�BvŽ•j]ÿ‚‘A¨BËH~Ê >•YT <çÀ`=�· îpàH ‘Ü€g€�f¤Ú´'öâìš ½xsuÝÝïS, *1Eì· f¨÷E± ­�l‚˜�ñ­³Ò&ÃO[ˆD‚!3°6@î|V‚wX(:Kù ÒmR´Óÿ\A Ï`,>ƒ¿` Ùn>_„f¶¨6¿’¹f¼áMZ½UÆÄ[UOÊ�"ÕF7(ЭsB$‡T‹SzcóöGµTÁKÐÎn�tlÇoP}kÄqæhÑbÙÞ©ÑÖŽ® áì¥ÒRÍÚ.9‰¬¼ÀÝÀ@,8Ðq(Äne™M*¼ˆƒ>#ŸùV z^´{bÚܕʂ1^ν»†Ð£É€Fû«²�H¤f`¥³¾{ÖA£áÀff<Ê¥ "ÑÓL'7-ü„Ň¡ê$ËôÊ(ãN‘%¸DL!²lÝM4°aXNƒ×p¯?²lµùêlË�Ã%Œ;¢D3aGÀˆ²2äK�Â/Ä 6ô$/r8ÖäËJdKAúÂA°£%±ï„L�µJ·CmxÏø\$xc›W56ú�'‚áËOw!8¨Ç!UoGm`ÐÃâ䃶ˆ/¢ç;DZèÊlha¶È³0ÛÅY ³èƒì‹¦cÔ)C3¼_�½SvR¸ ÙÖsßÀ ò_ÝÒOâD˜¸6ÎJLà 6«` ” ¢ÌÞŸ "¬íƒ^Ái"á¨6Ÿ9’5aŠ—Auõ\$‹Ÿ` €ÉUÇz¬êôÝY@€?À€µY[^À9Jêäà ÉF'>f¢â3=ŸƒËOÔae7Eo阽- –K±çÔíøKPƒÍ*Péû“çA¯/ðÞ—Ú6JhÈ-€ÀòöÇj„‡ðtê\\�ÙIRBþ‡, ñ ˜�m®03ÂfN]7ù‚hS‹ �?¸ËrAýt5ƒ¢Å� Õ£¨£ ëÄ�‡ lü•ðæß”ÍÄ 17�ÃjX�,«0ÿB4ÈRòíª 6ç´m¢ž¬(€Yì×nYš5Äs@º� ®¶àuŠE9o] ÁÿPÙÒ¡«¢¿Õ0#°?WåæW€ÐµGU%–ú61!±—¤yûÿ."‚†Ôíß)˜ß•v¢FÉ=;@$†ìhB» x.¨ñí,¹im 9ˆáûìá¤à ˜f8Ic§;Çè‡�nvÿa¯ n*dó%$ô¼Bð›ZÂÖˆ\ÕÌÌá–aöi!ãØ`_úòâubQNO3¤ ­:9Ö ) Ü(ÁóŸ9�£¡›[졌‡%þ¡ÊÁ`ð´çõÊCM‘‚þý÷ ’Òû÷»ÜâLGã9‚2Ôµ¦¹�%Çü ¾ð,)¹R Øn>ujÁÇoÙŠÛ&#·S>n“çæK4Ä ã`» ݈݅¢D.3£s&óC <^ÌÃã+±„¤BÛÞäRdÚ×#KY‚ÑüL9VS˜–YY¹C°HTRc7+ñ�c¥Ñ—¿p5‹0Tz¤°P<¡ Ü&`û wˆÄ¹IAæ’²k›Ú`ûœoO7_-LŸr¶¤QIÜ�lX�œ³ÄðUÁ¹åsÉá?Cºcv~²ƒËÕÙ›]l�d�‰o2^•L2:r�À€RjXôû‰oÕ²–£kP7Á/j¿ M yÔ«+;4(w/m8€ü#®4­ŽŽÞ/À’0E‚$çéùf쬒¸·Xc£�aµ–6›Ëæ`Ó* Ð핆¨œ7ˆ,€LïÉ`ZˆS�‚±NÝÖËÄtë"Ù–ÀUÊ‹âWû¤ÁZ¥‘I0ÿ™¥Á.=åWIÔDp—É©‰ÚÍ®ùLƒµàY5Hz‘ªß"EòÓÊ`Sš½µ!:yM RÑö\:ŒÑ�­Ò°Pq­¨r‘¼nFá�€©Å©(¢`E߇,m«ÃEÓƒò熿2ì7a±ãMb±m°:ö#ÒÊ6© ƒpÕ…x�zd$Mâ4‘­}U3ƒ@ò­�ËW×:J…ë�A8†É =h$Ä5D­´@¹¸ÖƒRôYëšj¾É2j_¥’Ï!C ¤ÄV#GHN‚z̪ë=×}R÷.öAžÜξÿã£ÃCxqüˆ-Ë»ÂB‚^ën–›nó…p)êÖWó×ñ´{®5ù„Nø&ÞŽxFnÜùˤ7mc†Ø5Zˆ¬øK+Ê¿þùZ$#˜ÍºJù_ÂÙ.¦š›ðÔ—+‘í¬55Nì3#ÂÜý ‰Q2lclqkt�"%ärühq{Í‚Q³„¥+( uJê¼>šd'Ã0 ð²²Q@‰âÄS/ê^,èÓV˜½Ž(°í�� 8E5.$` /œ \…³¼“båÊ{Ô¶G< u¼KÖr€ˆ *XÔ¥¸¦j g(G+Ä6¦(C•‡Ë[’ ü<L?¦2 üW|¼~˜†¯O1âý÷;*¶” k¬éÀ'„@±/]2±1Ú @Ê�Ñ�ÆOêlΦ<…„ðùÍÍ¢@N®†Š’B£e£g¥m60Cý—ÛÛ/žÈÕPÎA8q(¯×“ õ>"½wN„å ™xäcüÒ¾‹±:û×ÿ¢c·Ä¸ÛÑ„}ÉKß‘¶½á—uÛÙöG¡ç_ûi ZñÅæ`V?Û½ãª-y ‰+í„‚ºd¥“m ¼'ÿdRÝ õ`T슴%0þUW /Tùî^P|'.qÑMBhïc!ÞQlçãã:�R´�èp#DÁLE7¤Â“çx¢Õ¶õŒOZMå!º‹Å_Æý¿5î/lÀ¤µ5£¹»À6«vv0¶vz]¼9sk‘– ¡�‹ §x®I5N‡Á”ƒW†¡ý�Îp³¦[ÙÒÿµ®¶P½¿ÃìÅ­@èÙ,8…÷µzf� ÂCø²´›Ïxâ”ëA¦Ø6éòÝÐÒÞÑa`ª7®ø$@žR�îcF‚&8" âú.Ž0çkŠP°}ãa)í4}–ž¤ûÔ�Ê.“ÚJ4+wz°’ƒ¸¶½0Äk´ÅR4Íß�#y7ŸœE ¬©ñ zоhâƒH ‚‡°ëRŒ„“[Ew[õ4ܬg ¼ OÖð.7å]7”t×*¾ÖènmnÝóÇCêë*'ÐãvMÔ·žØt ÉR+.Íš€�Å=t™w øÎy@Ä` jUŒªC�æ+zT=F;¼Ó1rOºS ¡ßa©¥ÍT¦itbÙBN‡¯»ðîÉÆIÒ½¬5Žã?…AT®oäÛ ¥ŽÙu½*жXëÖÕmˆ¶âDï#[“Ú‰±h/eã³FX±ÔTÎl˜…¾Çê"Šƒ'ÀÏ–nk²Îü ;¬ãÁ|ØýÖü×b§:w÷n~[¾ŠŒƒ<.§°Ô Ù÷Ù'u÷Î9Þ¶bÑþ]oAM¥»FFß›52¶}šÏ7Wö]ÂŽ<1Z³9PbÞ‰Ì 1ª×6¶ao°W ‹ik×Jñ%‡tŽåYI·ÜgîúZl!<Ëy©Û9f?…�òö*o*ëP„q‘%ǽ—q]dYÖ=@gøw8Q®ë3WA g¬$$åÕ$Bw}ñ�ÇvO_ñ7¾2a ê�êø{„ßÌfƒ¤WšGR]HG•ÑE”ÝÃÚv©KžÅ}ìm}'‡ü¨=Š6I”QG'°®»³•~ßeð0aÆ»!z©SWáù²oº¶€±¯Îaˆ·EˆJ¦xÜS»‰ëûúcúLà\)ýìé]^ùa Á³r±F¸~?ÐçIì4‰LJ]“már›ßÕ�³æÅóøXßU¿A—>¼µ:XkF ¦À5¹ý¬ö[O=î÷O4Â>çðÙÄ�æsØís”½¹oë Ä'6¬ë�ÁÜ©™”À^Ì!ABÚ “Vßû®×k…ú¶ ¼‡a- _wïÙ RÉö „nÝ`¥”Ö/7Ÿy+hÞ^ÂéÙ¾ŽÃB�í=:þsØñåzý¼×›ztøp¨7U¿Ò2ӈțoy¶é¿âÑ€ÍÜ·™¤È‹ <ÿ#[ï×�Àz²Å›.ôÖ÷Üø�›r�ï1Ÿì³ÍWŸa°¦Ç±#–‡õ4®—FŸßÄmÉÁvd¡PØ�õQKÜÆ‚`ª ëWàŒŠÊ0ŽŠ&GD9Žâ~¶ù¬g%ê M‰ÐaŽÔ†ILö»ÿ ^"ºÿcµùë?�˜%êðœ0 —ÌVyÎ lÅÜ} Ððù܈9ÖE-Ç·PR±t—V húqX\bª”T{´·49±ˆŽ�ž®˜t¾¸À-n [çNÏÕï t:F`,µ¢$ £wÀÄ%Ûû÷ß¿> «P B™ õ>Ráa9î ~àˆ-ÆRñÉÈC!óƒгdn�ƒ þ áÏLf^*óbP“ï4g ã/’6ƒ×ûÍ}ç}ßý§ë8}ÎVPž\@šÁc�‚gá•¥×P6àÌ�N³k¶†å#â,Ø6†!Û¥"=Ù|U®Gu/~€…k³汇’ Þô%S=t1"êñ™ï'tè.`ðAt@wy[�kFaÈŽ‘\ØnÑá×°…U u‡€àkª¶ ¡ÁtÛ©>ĽKp¨1æRgàH·Z/:~=�“ýnØL=�ƒ¹žèN›DóB�cóòGlÓp3OÜç{öµï„Ö¦Ñ�g•�Eœ�§)^—Þšr<Ü%¹–¸›p‡h:é–HR(ñ}nB¼[eÛ�†z5 QÓiˆEðW˦;«È C ¸ïUcÑ;›u«Gwä>0�sÄŽì`ùØ«!z#5b}GtꢑâËtpUaÍö�Sü¯¥4w/êäWt@uç /ñã²ôN½éÛ§îõüWnŒ×‡(xÊÜà·wl¥Í X0¥Jº¥35z…ç× Ó>vï¡(£ 6™æØ×HèÈh&ñÿÉÞrãúª"ØÝž à¥ÍutÚ�—þ-5ÔüÁ/à ÀÏí9e© ÂÚ’’®qí4èp "ËÍ)ý,Å/.øƒcãïÑGyã[´ƒWã:Ô·ê(ì9õ€ž0äøF¬³u%DjéM8õDiªß\"ƒ­?dTwÖOÔ3ün„‘Ø2ÅQ›ÏtÃi‰ Yù3q§üb€@ÿPKÒV1]s@²e D;4imunify-security/languages/imunify-security-es_ES.moUT ëÆ«jëÆ«jux 臭Z{�]w]?J¤ MӤɿÑüšt›ÝäÞ»ÏdÓ»Ül6i4�mvÛy”ßÞó»÷žäÜs.çwÎnnFT©�A‘G†?˜E†JµŠ]pªéÈŠUG…Á3hÅÏ÷÷ý�ǽ{“ÆÌd¿çüÎïñ}¿~÷››Ö½ÍÁ¿OãÿNúÿ|ÇüÛù³9¼pà Ç7Vo<xàk,|àFÀ÷Úuµð3€7~ ðà·íøMøÜýøûqÀ1À—Vï$”¶ð/¯| ð6À'ï|ð•€ó/vœ_üÈ‹ß^ï8?¸éz^· Saa° øs€Ï<ˆ¥N¸ðW_ø¾ë™®ž|�XtÝF¦{3àIÀ€g/®||#ÓõàQÀ§6ò9ûn`zÜÀxŽœ,Æ€w^¾�ñ{p pÃ&Þpð›,?61?ŸØÄôþ3àzâ³…ÿ ø (&½à•€ ÁiN®ÜÈû_¹‘×ÇÎûÞ�LÇßÈx‘ðo(of¼›Y~mÀÀ·~`3ãõˆ…ŸÝÌ|ýüfÖŸØÌüûž…ÿ»™ùü¢-ŒïÖ-<Ï–Ó Hp^º…õç¬ýþ«[˜ola~þ•]ÿù-,¯¯¾ðßWºDôÜÄú»¼•éxÇVÆÿòVæËŸne~>¸•øoá3[Ÿë·ñ9»¶ñº¡mŒÏ‘m¼þ®mŒ¯ÜÆëâmŒÏoÛñwocº?j÷yÄÂÇ,ü"à à7·1~ëxýÀ!À›íûñÆç^ÀQÀúë×Ûð],¿÷ 0Þ?Àûоb€ñù³ÖÓ/ °üþq€õà™Öƒÿ±ß¯ÛÎrÜ 8¸�é˜ÛÎûœÝÎøªíŒ_`ß_kßß´�ñçvÖƒG·3¾º�ñ|z;ëÓ÷íºvÀ&·ïàóß°ƒñ~ûÆã=;ßÚßÿnû‡¯ï`yЦ4oãNþ~ÛNæoy'Ÿ³xð;™žßµóß»“õ÷;yÿGvò~_ØÉç?¹“éøŽ�ïìbznÚÅtT!Bçw™OŽ»‹åõk»xŸ·Ø÷÷¾ð#vÝõ7C×K€-@ÿf¶÷oÜÌø¯ßÍzwà8à@°ÌyÕn–[g7ïûÚ݌׻™Ž÷ïfz?´›ñþønö_má·v³?ø·?…³Óóå[xÝwoa»ø¯[جßÃß§öðø™=¼omÓ}qãù;vÞ‡ö°ž®îa|¿¸�èÝËçNíe¿wl/û™ßØËxÿù^kß{Y?¿—÷ù*`ø‚[ç7é<@ðG·²|üAÆûâ ¯{ý ËñþAæÿ»yŸ‡Ùn¾9Èx>5Èüþá ëí~(TÉ™|à¹Û˜ÞOþ `�è¹�ýËË÷±>eÛÅßÞøûøœÓCŒ×Ù!¶Ç—'ûœ$=\ü§!ÖË©aŽ­a¦÷cÃÌŸ=û™/¯Øoùnß/îç}_»Ÿùðæý¬G¿oÇ×`ü¯?Àñs/àiÀ_>Àx=~€õèK~ãŸ÷-À#d�%Þ÷•%öÇ^‰õöm%–÷ÇJÌïÏ•x¿¯”˜ïO–˜ß+ñùëÊ,‡meÖ§¡2ãww™ç½ºÌót™õó�eö÷ï±ß¿Zf¼¿]æsn¯°Þ©°Üæ¯JÀ7n�PßBraÿPe<ïe¹ß7Êç­Œ²½Þ“s„J9��2ßåýdçmc:*c¼þ%c¬ßgÇØO¶Æßì÷÷�ñú�ÛuŸµß¿<ÆûÿÛëÁǘÏ#ãŒß4àÏ.Ø÷·Ž³¿ú0àK?5Îó0nãÆà Þdáî ¦{h‚ýàøŸ{ïã}~‚åþ;ï~@Aò�`þ~ªä|Æî÷ôÛï&˜Žë&™Î퓌Oe’Ç«“ì×NMrü}`’õæ�&ÙÎ?7Éø|i’÷ý!ໟw�é½|�Ç?u�ñxô Ë牃¬Odýþ!¶› ‡8ÞÌb9ù‡xý›1ïËá1À*à×íûæ)ö_ƒSŒÿKìû/L1]µ)ž·2Åç¿iŠéøÀóé3S¬ÏÿbÇ7fzG󺻳þ-f¾ÿ` ø®ÃLÿF›<ø àÞÎ~þX•ùÔ©²y}•ÇßPe¹ýI•åöÅ*óçëUö[ÿZe9>ošéÙ0Íë¦YÿvÙ÷ò4ËiŒ’ÂÁ±[µhIW‰Áq< Nܪ�AWŒˆ–ÐC3²ò“N[Ò_‘‘õ0 Üþ^�Mö‚l¡VµÂc6¼¢Ô…Òñƒƒ"¬ éû"Žd½îÕ²±¥0ÎÇ´ˆÃXú"R¯I”޵s@`¬‘óBºn¤tÿA¥�’h+yÁ BÆbÐ!z§Í™év@‹0®(·‚�^,V¤K~X»À#‘Œ•ð½–ÓFT;¦Iõ(l ¯Õ–53Ü “Hh/VgFèfÅB'­–Œ:%ÑP�¢M\^7q`£©Æ´3ƒ ÂÀ€eåÌ0& 5Ï5ÀюšÂ6AA~gű¬]�A„6ø¸”Ęgˆ»Û�ˆd� N´’À«w&�Ò› ä’y&àǹ™c´}¬ÌaØ8‰Ã–ÁyIºå‚D„§ü“Ì Ú‰d«‹»§»ÚùbAÕ’È‹;BËAT7qñU<õº·Šš/µöêžrK¢5ŒéA.ñ›âG¤/ƒ8x„Îä¿é¦ �O6‡ó·ÉÑ ûÖÅkÚ2Rq‘V L›n‡�†x�„1ýó·z^Å´ÜòDÀDøDLY´:]xmÙPfÀ, M"Íôp\�…±˜±¡&Ðéw í�‡QÑZ r¹¥_D¸¬"{-sZ9e»ŽeìéØƒ™ÖBß·à,¢�8Z¯WФ±}‘F]+WÛL3PFó!ÏH10N¹,=Ÿ”®wS|ª× Ñl Ü;™°k’™ÜI‰Ë¡Ÿ´”xô�1ǃb‘äj0�X =õº‡‡Iã"µ¬à5$±gù�6<ƒvfï™sfI?|€X5¨ãÌ6öðê"Ñ`�iy8—|†ÐmU# Ĺ0rçÉ©àœ¶\ò|¨(/Ô´R è¤ï‚‡A,�+Ì—.K?£ÖN1Ò_;UÈz <´„x½K’ͱÏꋉúu|nQ@æÏ,, WƲßl[­©è0¸�Ä—Ö·‰â[Æ8±ç””×mÉ–"Œ {Nnˆ�ÈîͦÌüLÆìÊ@‹¦g[ÆM8à°X.iÌÏý¡= ó}%¡x “6Ñ·Ô0N~Öµ¢¿‰{Ò ’‹Î¬UÙ ‘>jáz²„¤…†œ ¹Ô½FçÁmD`µb~ßAa* \]®ªËÄ�ÅáC“££ø0>)šÃ@*lÁø�0ž°8 ³jÁ €f˜ø®aFÒv)N�5æ~;Ç„ž†¾ƒ ×uàü¡#•µk‹ösíuÀä¨ÔÍ¥PF.žbåU±!ᮓ ð¼=^Úð.2ëY?ÒÉ÷.,ˆ¡Ù(Ôº¼@¾e¡ym:wøª+=MÈY�¨•l�¤RÀFRø�O´  q˜ MÒƒnOK¼fó¿k¦‘È’Ly‘Í.Ѭ€óJã ‰—iv¹Ð W¸ …D‘G`ÄØ¥4¿ê,ôK¹‹£mÖI°mþìÜ[° wYoÜìô¾‘ƒ4+òj±C~ŽJZ�¨A6Ñe^d”gW`• ¾Þ‹›½ÙT;ÕK8%¸µ<“[DaÜ.¶ã¨cwÜ¿;¸„+A …LËBŒ�ô¨ÐcÒÊÓœ{Ò/3'D-’+>PËæÎôÕJFÈUU€‰šûO­pÝ[¬l#£ÕÎ9µ$fÚmßf☠ŽWýÀ^兩MÙn+2µsMHÆŠÃI5(ÕÊÕ÷eab 9[�÷¯ÂBöPƒº«X"u¤á´Àä282ÁVD‰q¸: ÊêÅ}$Z ò9–^ó£qeVî&”¦qfJ)LÇØèÚœ ¯w‹’Ðaa‹Xê œô èø ç,h2D¨³ÉÓÓ“hb×i²F *3’Uj‡ý‡=ȶ֔jê<_1¹u�Z&ñºSâ¼ÓŒã¶®ŽŒxy}�l)}-§!¶ŒÌ•3ª‘lÉÊÊJ¥Fõ‡Oõ-sò3a›‘ìô8ë ­e8Y}N±­ »óâ’q®3#õ­�4æÃéÜFÕ3§EF(zBOÈW–O¸e¨>åÕµ�•±Êhet=»ðò)ÝðÜò‘¤¡Ë‹aUd„"~™ú°F��´iòˆeG/§ÖS~Q^D˜Ñ¾„ߩмF÷ ‘À••lUÅü)Ò¨õ§NœšËqJëmiU^ì´UUÄþ8ùÿ´€D#È;î^œÏ£ó�Ñ–ç‚ZHZU‡—¼xýü™Åò,ô‘d_¦Ú¨*ÆGÇ–GÇÊãc‹£·WÇ&«“FG«££˜\>«(QsSJªBéûæÖÏûp�~%FKWEÐ6¯úŽñiÁ�w â–;ÄØðôú{ËǹHÌ97_ž=yBŒWƈì{ËGa ˜°†­Ü·)¾wiõJ¿Þí�¹)¥y…§B§‰˜ÇöÕÙ²âfÅg]x2ý\Ô'2²}\Óòs-IçW/CçÃôC>B³Œ/„÷)׌¯îðr×…O­Õ¼Õ+ur[«—u×8ªp�} ` ’€Þ.z-sBÖäEÍl²ìØS‘鞺RS¶W<»ÂóàJa‘«WèÕ—œ IÆ;.£ @²ŒJŠC¯1=˜+DÃ8!_è…-”p&ú·@7~ÁIm”Ø‹h??Ôdô!5Æ©Lb˜a’¹ "E4ˆ»é“2g5iYCô‚Õ‡•á·ƒ ÅŠs’ö�%y"  °ÀR¨…”¤fË "p`BêE„Z¶mC!##:—3`>›:ÅT]úŠ “¹‚€S¯~‰H¶ÒNK0váÓ�kcc'E†=;#Ù¸ è îk­#„„à‡‹¯d2zSÿ»a‰;y”Ö˜�:¥&‡‚ÐŒìÔ÷–Œ]±h¥ùäJÝfÁífÉÎô^”hÈ.'ʇö$�4íf ¦ùÌ=çù‚ Ø€Ùœ®2žv¡STTÀݬœU©=ί^†W—ÆŠ{¿A¼¼G.P“œÓ¥I±?=—ñ‘ì üNæÛ5x‰>žIzÁ¤Göƒ:`O_F��]ЧZíµ¬©´ÚžŸ[+ñÌ]}ˆ’)©ûúš²zošÜ…â�ìVq�ìVYý7*.ýÜ JHªÞÃçx”ÛåQMäQ¦'�†Ã7P—£çT6†åÔ¹/n…ÏCw3Ýd?ACÜ7DÝ)’�¦¼d*’9T¬Ž„²)mMcl‰ú*ä áHÛµÚÒgnÙ÷B›šmå«IÓ�µ$Á"0E$Õ%dN·H¨3¤Ñ]ê�[‡I�íÕ‡oÚ(CÒK«5Ùaˆ)^«í… œ³Êzò¡3«¢ˆt$oÊŸµ&À¦Ï–‡ÀÖ´çW¯�Ý'AÖ�» Ë!–%uç 6Ó%B‘\:B"9âêUÛôÊöé=““x<�š@šxì‘/RTNà y>Ñ1›A»¿O­ˆX…Èà�‰Z+?ÎÆ]nã*ÛÍR»æãÌË@ùÎ1²^Û²—Ylw飓âHm’.m%‡dä[Y³òMÿ«o‘úʰøl¢ª2Mãe¥ÜФ7 å¼õ“]sÕš«€î�y$¦/5¤KP«™ôÔ9¿ÇGä#¤ÀÆpó!P 5¢ë¿ÂXÏœk•}l”BkÓ[ò(æŸYŠ)™+Þ ¤CeqÎÔ¸Á(»JàŒÕøëfHiÏêÃ>ª8ø^ÒYrÖ’ìÃò2M8åGpî¡;è(jÒÝrEÊð–× §k(×í¾j€€ìmCŸ4½B¦)“?Z̼×Þ;€qö~aMebJ~# Ìu®h’g0Š ³|Ѹž°ŽƒÈPÒr^a+“R—Ýa<»–èp*—}È®%”æÓ�â˜Ëˆ‘>7ØÓNÅ8YúU…6Jh] (Oó³[?‘íøævÂ#•§U«™úb!R �„CeDۣµpЙ_zŽ(�ðÈeS2Dœ=ØÌÍ$Ö0™… Ãüeu‰c½ed ãÀMJ£Ó+‹¹,]áË ²:¾¼�iB9¼G×|‹AõÓLž»,¯^¦¤B÷‘ìë•©2eþÑdêtqa¢�Lš�ÇbxÿLÌ퉓öz�pVÿÀ‘¹áˆ ¼<¦JUMtvÓ¡øª"Òæ×Åú!m8ÔÞ^ôË«[Ïú‰[�s¹j§»[›Q¦säìĦ'ΣqÚj‚H'qåKqôê•‹]”"ú4e§+Ì2ÝÀ¤y]>‡Ø…Ävì¯>Dµ¥ _Ö(PߦTæa-¯£Ì¶†Ÿ¶RºÖ!§�'.ä&iÜzƒ*ܙՇ�l‰†€´…\D–îFÓ6-nʬvtÂû*†¦,ZØú9ræÓM—Î<&�Ø+ÇÎI&_w×øˆ£‘€ÔH_sý¢¥H/d$]V“e‘í§½oè!@;ç3Úzü5…áWkH=yŒ† ’175á0)¬g 3}°74÷„>%÷öþØEÄ /t¹pòêªb�enlL©i¯lÝÙÈÚfœÆOPa‘{álÖ¬oà/ˆ —|¯A0/MJ É8ÇÁœ¾6¯jð‡bRUqŽGtáCéRÕ(ÚœWý"� °µ¬”yNuÕ>ümd 7[Ü)euEÉf±æ‡iq¥“Þâ ¶Mº™Î•½2­Ÿyòq]åÙB´šeÎýÙS‚JÕÜ Su^šd,^ô¥ÖSçÖ“€Ò¦("` Wg¦{–ýÚ;&à@—LFûa�¢ „Œ+’>÷Z¤m‘ì籸âíâÛBZˆg‰ZvãDÖÑ}ê–Ìl'+wQŸŒ3 ÈàÂô·‰i)ÿpÄõ|3U³�»,Ó—äõœ³´QÇ%bªNÌtÍïúLWUÅ�§Â8]¶´ú°†#teׄ{”É·­§YUØ_œÙí%åæÒʶO‘$]ó#ǰ» ÜäuCúm‘}68ž+­Ót¿ebf;mXêËF±áÌS/HÛ‰ÏâS°9]zõxÏ‘nÚr¶Ò°�)ÍY]�ik@yÄ¢íÊ’À¸…ä€Ô�ò5d3­ð¹Íš&ïEy©7bu^âY¾™‚X¶$1‡#–:�l/¦iOG³"qÍI%£Á>ñ}Ee¡d×Y¥‚Lú¡eÚ¡«—S«ÏëpR‘ÒL‰ónÑÑ¥ÊÔû!oסšZBšëÐÝÕÿóÍä)� Ìé �~Ž=�Z™å;Ïbðâ›4à s™vgÕs´JõÆèu+þPKÒV1]d¾uá€mD4imunify-security/languages/imunify-security-sk_SK.poUT ëÆ«jëÆ«jux 臵[Os¹u¿ï§@É–M•9#’’�õlEiwY^I´Hí®å¤\˜nÌ4ØÝ@§Ñ=£™“�>XÙCrÊÉ<ìAž’ªT±J:dÈ/âO’÷€þóÐÓ3”’ÊAUbxxx© Ù�;Ÿ¥fjŠÿwç$×ç"(Çáà[‘©Õˆ§¥’“;A™ËbÁö‡{ýT0ý¥Èt^ ž!¥ÁãrjgzÄ¢¢ÈÌèþý¹ÎÃ,Æ u>½oÊ 'ßÏ’r*Õ}é¨LEÕÒû†›bp–se^è|ÄŽ]†ßHU¾©ÆÕ´äS18<±ÓDÏxlGž?{Ú²¼_ñw¤U!�\dbÄ ñ·çR}Á‚ˆçF�^�}9øÜŸ‹ÛOD>xªJ5±ÏDz°sN^œ ŽrÁ Øeð„@ô`ïà—ƒ½ýÁÁþÙÞ¯GûGþboo´·W-¼3i>v~}À3ñOëh$eΓÁ—:O͈©Ìþi=ø‚¹ÿ>ÚQ�íßc¿a{lÄvÔ?<:`?ûSÿè!~܇�_XJß¾JäN´ß� ޾9fÃýZZßžè¤3b}Êùì'CvbuÇžóT0=aE$˜S'ÚS×VZãZA‚O„ r™¡–òdÎsÁLÀ•‚»l"s1çI²\`î°û.ã*dRy‰Êb¡¨ØDçdÓ¹Y3lOV e�S`ˆ,<,&ñF­Þ3µº€µúœeZ­®b~¾º $è\(°h%2=[½ËË]¦ƒ,²l˜.á¸È]Èö�BÉXÏìnÀœ†U H¯.TL„5tâ>,‹ŽÓ+éÖÕÚ£Ñodý«—Çý4ϟχ®Mpí´ÓÒÜ6'Å›‚ÝAe±<åŸòâN½Å9{ÖÒ:â_�U…L×VMG’¶ë¾Iw ¢‰5àZû#†>ÊvÄp:dw~ æܹ·ËFì ‰VŸƒ·²“gwî}ö“]–EÙÀmÖÃF³ÿÝýŸ‚™ìîÁOMˆýª«�íòÖöúðŒ�÷ ÀU–~ZYz;ï´µ¬g•eµËž*>NDH,ZÏt"Ôê];žÀ¹žˆ‰P� ³a(.V—3ÅÙ k¬¼]÷\µ—Ñž ˜6êoÒ¸�žö àÛ He °|J§à1·Ã£��)ˆ_70O»zßÒþJõÜ¿Úk ½^]š˜ßüè ’Sw9?êáÓ– /#*C +ôÆFö#"ÈEÝ%×ÿ“› 8Gÿ ÝD²‰.•'Ì1Ä;)ç¡ÀàróAòP-êÒ’8UZ/­A‘]_„‰† ÅG=^q7„¤S¦caãÆ\ˆØ¬Û½µñÐŽV†úG—œšÏ�ÙÿaïŸìÇbõþæC(nþÜ ìÓÕXØè÷›?ëY÷D=‡i§(1y;¢e¸ £Õ‰°ôÌ«±¦,m[[zç¥À[C lÌ CÛÜ̳A…„ÖC㧬­÷}"MÇ‹_óxu±äž¥Öâ(�S²vò·‹ë·Òê�ÇjÆø�q‚f1>Q\U€ ²ðúêæCÌ™¶šzüV›ªÍòjjœqo´°uðM­×E¬É=oüÃMs®AL¯žðŽLXxFØ�"2‡Ú£•+UB#Wª… j²\¤zFg¿�è\^«TÁê³:�Áb,EÄY£Eª¼I'†ÁÄ ¾iü®ä ¢Búì³Ø~]½S„â++=÷Ô¿ݧ·=q¿‰¶ª¡\šr2‘�DÁd"O¥A F�ÖsjH…¾~‹ZÒi¦ÐĆ=¦ZðBC4®›ê{6ËL- ŠÖ»”¤ÊÊS1ï¡òŽÍLQføŸÕUÈÏ!ð¥IÈž¾�PUAje?–çbmò?—€í;“ g`d àîl´#ÈwÝù­¨‡øK1ÜÁŸ%D·2Ålõ>çK£×Hîþþô²}…EÚuOøä ÆI$þÝ7ìX�WÀeÛ2œ)a&üAX|†ú´~Ä3>–‰W;E«÷c‹‘Ñ:Y|‰ 6LNOìY­€ :ËWOÏ`Ö“§g]%þä—ëDµ‹Žç'ªa3§Q°TKƒ'�f-™áÖ�­áO“‰@‚A3°¢R0>) ÚHê…\Úè¹…иå%ÓõŠÕE ee¬ÌaR!ÎY¤CH`b+CAe$k,Ý&ˆÚŒªíVWÕvåÖí \C:ÅÝr´/žƒ@mÍ"ãHaÛÉíÎKfᨳ¥ÎKG MUDº2VÊ…³6ƒÉvŽrmÌàä8ØÖ–jz°wÁ-§ªâ³c HbЇ]]AXl#EìÂ:L#µ‰;gøÔ½©ƒlÛÍ e_0-ÀÊiåCDÓmô8ÖºôË›€ä¡ì¸þ g’Öó rUq¾zW(ÏÿZâ1s/-a!ᡱljâvü‰‰ˆÎ8L=7Yq'¿Bc* „¡<�$ "½W)à µºd£|3›Q/“Q/‹Ñ:´>izJ×¹²˜Ùe5lL۵߉1;̲D63°/«^OK¡þRõx�Bm"cÌ «KZŠ‚â°b$ UE;áfaîèÂÏ¡¢±…f=ma§�Ý#± (‘¶^Ž�t Ki0i>5³¾}J²8þÑÀ¬Ê¼Xô OÖ†Fƒ#Àñ (×oÙà° ­(øDO§ Þ1€5¬êÆèç"²WÙ4ç!vI�� Û÷`“ÄúÝá—¤Hü~õï6&CF^ò¥â)€rà°È."¦„ � ²Ã¸€ô/—åy�Õ#Ù¦��L�ñ£�3�ØB{–(XZ÷ø€ ©jÆk·üÔ;Ø°Æ ›ò%±A `Aç^ë§úæú íÔ¯¥¥\`–°FGÂöiœ/€x™iȾªªáš2DAÃâ,—‚jì%TÒìø æ£ÀØmHÄ YÎg2L8Ø:¥ðLN}é9K5(¢p™PèüZ�á¸Øª¸þ¡j•€+`Ÿ%^|Z•Ù1Ö]˜íÜ ïÝæÇÕ¤[öG kܲÿMa ÃÅöXPsS'ä\�mÞ7À�³\‚“�vÈ (#™õ¸®ƒL¶ºº¹¸ùrgK¦ZhØ\‘m¸C 9…xŠ”Õ{`×N‹z‡(DÔ~ZÓDG2àPÇÍ$¢ ¥Kk-7?ÚOJOla�Üv´ø,ö�®.“Ðzz™Ù>é¸m5¢ðŒ(¯lÙnÀÿóÄ|€Â´Œ³Œ …W>¸pºZ©…á Ùâ¹L4úmëyCv¯®Ð�!�,±C´�5¬Z­Ì'³…ÍL\»ºŒÿ×üTúhé·åk³Lß´>÷ÚY‘cL´-rgËPî×ú#�à½ËŒZî“mú³6öÄS {Øgw¬5Ìg €£�ÇÉx¯ëe‚Ç5+|ƒå�äÁ^¾éß×®³(º2÷ 8ÁÁ”¿‘i™6#}RÙ(ˆƒ~AX �ßøÔÞ¬¡wYlˆ ûùüºL¹bxµˆûVCñX±üíOÿ†¢ ïÞíR#íæ÷ehb˜ÑÀÌÔ–—�¬å+ûÉÁLQÄà•í*ˆ’XÛbÙœ›&·[~“`&;Ü4¼…9:K"S‰.Âb‘Hk‚1V¦Âuø¼ÈÇðÎ#¬Ç©—¶,™ä"çÁê vÂNºË9ð<˒ŬÄÄ\]‘•Þö(§Æ`æ2Çb¤s'� K <VOÕµ !ú- (ú¾óµPS©1逃lÓq¶ˆ ¼ ]Æé¡pxÌ‚œÏˆÂ=ËÛÑEÏÚÓ§/¶-&ÃduÕæc¼,4Xžã~õ˜�BHÉ ¡YÍD CÉèš + Ë@êÒtÜü5Öa"gk ¬;߸)lù.ƒÁ$<Ÿ�‰Ç'Œ‡€4hKm!^£IH­kàŠi•Ð{m(�ÓbQ ô\;S&Õ®X¶vº©/Þ fR©6„¨?î3/>µ_4Uä2 :_]ÚË}Ì®¿e=[]`ëžv‡]ñ‰†á•žmjvÚŽJ¬w5qîQ™çØÔ}e(ðx.-.±V_ø�¼°yf“X§÷TD¨ëî>ÜÍ ,ò×ÁHoÏiFaFÕ÷ØÐ誣zÆs0lëÙ @ÛåƒyßvÁìö�;}²¨ê“$"œ¾…ÄÈT™s{åÒ ;J�VY-MÄc2JVU˜–k]©$‰íX�³Lm lwŠY™z O*8)T-lÇ54Õ½Œ]Š ¤Î>ÿÕý=8xÈ¢{´w�2Ì]ÿ€ý“v«¸éšÃ =L˜6Û ¶ãÚŽÜî—*\ìZ�VÛµ]ÛÆQ$’ì7ÔP‹\Œ�‹�<ÕÁohÁk¢±æ9 søLC¨øö;,DB�çV‰1š@‚×ÃÈö*6øòcXï—”ÊÁÃhSâ�*Î'YK‚%w!®îí±��¼(ii:êôÒ`ÑŽÏàë–“w8æqЇ4k‘W§Ľp—ù«Ë‚Dïo¥˜»:å\A�7>(ë+]]ýOd“j¬ zk‡=LáI´®ëcÂBq5%±h™B §áþ;éJ®ÝCa˜%�×y ¬W97èǰ�ƘîWI€È÷%*8±åÚ;·`ÁvH\@hºº*J"õÃ:‡³1TŠ2?¹sbg %›ž‰§zpà“;è忢Jßh V ÝÆŠßU×QiÈ:TÀ*ëKh¤;tHnë#TÀÀÊÓ¿”u›Î¬ ¿ßä=�#¾óØC,>.gÿý_èåíä 8ÛÍ£}Ç—U¯Ú¬‘xáRƒX_ƒ‘à¬Ú8ãÔ¬O.æ·xÌi[ÐfÒ‘ÄÍ_«1 ‘—U%[?ŸðC(üK¤ŠÑ¤0PvÙÚ+¯K†/¬ªþ)®—ÎìkB{ïb¡ÝÆUlõãç:¶Ú0<"cyi_Mõ&®êñ­ÆÓÕJ*°ÈÈÀÝ욺®p×�µ ia¢Yc(—àqáê –a; T=)Õ´{]qVæø4râΊ•kíÞ…8AÖtHŒ9x,�ú¯±IÐðÞÎþ}]^¡ŒŽY�ƒ³BLÉ„ìËo.šÓr×™pAô‘és ƧœÅ�µÇ¢—>¶Iº[ì2£Û9¬à&võ§TAR†¶0¯‚L€V9°pÅõYÜÄ”/luoaXG ïçwvŽñ4Þ H,‰Žîꇫ¶ü(cÛpU°ª:qîænÆ´uw»–Fâ ] 6ë©ú¥3»:2±ˆ�úâ‰4xáGc %ù±º´²j]Kð¤·EÝ@ü_;¢£²·H¢~ÌÄ ÀG@ëÔW2¤%Ú~YØ¢ÓÄ ˆOà¦õ’²‡ €©y6pÀv¡¥‡ä¤ÕÕÐ�™kÄ6»¤%´Å%í[J¯«�(é“ ��ezOWÚ]=ÏTx÷æ¢}“…7–´˜y\'y”kÕ¤7$³ÙY},h±â­‹\ŠÀÈfÕE.ÆH—×g‹^ˆ÷=ºà7ºµ£Ê„:(Á��š^T=TAfA“šy�ÒDõ§e…͆½ ÑCÿklõ!ª:…¯½7|îÙˆu¹Êc›!»Uú ÝãsŽO¥˜§Â[àT œì˜I ÊCj\ccÍ­wÆÀ‡¬ß�]@Ø­s”µø3çÁZ‹ä4¨�K›Ú $ì\Â9Ûz·T|Æe‚®âå`˜C÷(Í»i³z�hç¥Ù> ‚WG©†“®àUöe˜}†ÕfÝê §¶M?|Lwqûõ¼-ÑêºÍÕè#s©B=ßGìë_¼ Ƶ_ºÀÕcAÍ«KÒ˜yAS1wƒŒN&ëe­l÷ê'¿È6¤t9é ´“ÛQYÛÂ. òNüFö¦v”ñ'Ó¾½iÛRÄhk ‰Î¾qhzöZ™Ø"pb¸  ÓWÅì¡KÑ€e/tmáâÇA¾ ÂB2Æ«œÚ \“·º±¿8VJ?y¼Ap§Õ²Hð¤tpý®éõ ˆV»Õ#œzêJE£[“&¼ÿÀ4T�Õ°|½Ýx ói÷w×ï,hsó ÄGíO“×öýÉÌÎþÛ+#ÿ^æÖÛ–�j, ‘©Î¥0Cš°ÖýìÄ»’p|}ù^™ðÂa#ÓÝg5½³d{×aÙÌp<ƱÕ䲑^Ú>¸ñgZŒ:“¶Nê«åÙÎÃ_ÓZSÑ×#k ­‡{66´ÜXŸ&^g´¿üé× Ìë·Üз�9’ÅnÝ(ŒÐ­ >lq¸~ÇcAÕ×øãD=Ó»›Lƒu>.°cÇö.O�³pÿ¹ísí·,{[•Tk»Ø|†�¼ú"Hä]õûѹ ƒ“Ó²6C9%(³DÆç!'½«ü 7zÀD¶´m> a·mò^ D<Ë„÷¨ýú/Ú>CÀ_ <ÇLÙ„™2MyÚ˜ºßJ‚š»>�æbŠuéÞc-˜jå�žðIÊ®¬¬e ‹`MÓ–­jBb?‹�_Uœ8%ÖHÍVNô¡ ¾Ué´‘À\jÿD3(MÝ=L.ØÎßþtuϾ}z“YÌÙÌÞÅYxGŽjÀßö~Œ@Ó[l–˜àšõY#¥ ’']¨¨­¼÷>ɃÝh£sOʘ»]p³1Mÿh¸—síän’î›ÓIÑvJõÀŽ7§ã^’¦sõ?’£É@:Q5Ë‚¦wáóé]Èó;·U�¤Û e¾ßÆúy2éV›îÆÉý|õc›»›ªÎª!e&BiwuUÿ vèò¬áÂѸ÷$Ômì%(ÖöŸÊ�w#€ò Û¾ƒÛýw]k;T¿n/LÛ×j¦9þ6�Íuƒ]ÛÜjŸôŒs=Ç‹q†ØÛÿPÕÙ9‰æØ ìEÔD*i"p}Á±YÏÊŒ¾.íòPÿ”N&äîÉýš_!Ú K�¥ñÍÃE¤mŘ`4€h8d§¤ã‰¿�RÜõHÜ»êгÀ¡º~‹Í¥æxÃ-¢ÁëƒGqýì­¢ $'Â̪�ë¬[ {5'œlüW·k�)g±ŠÑê"\òíÒYk �`xªÝkQÇ x�@ÛÀä�‹±{ÐdeámÿPK ÒV1]imunify-security/lib/UT ëÆ«jëÆ«jux è‡PK ÒV1] imunify-security/lib/CloudLinux/UT ëÆ«jëÆ«jux è‡PK ÒV1](imunify-security/lib/CloudLinux/Imunify/UT ëÆ«jëÆ«jux è‡PK ÒV1]1imunify-security/lib/CloudLinux/Imunify/Composer/UT ëÆ«jëÆ«jux è‡PK ÒV1]8imunify-security/lib/CloudLinux/Imunify/Composer/Semver/UT ëÆ«jëÆ«jux è‡PKÒV1]À1y= XIimunify-security/lib/CloudLinux/Imunify/Composer/Semver/VersionParser.phpUT ëÆ«jëÆ«jux è‡í ƒ)�RÀÍâdéeA9lrÚn~‹Ãqè÷o/ßüøá� 1[x»õRæi–“<ã>»üðÈOã<™r@äs$yg'ò–<]yÐxƹÿ}åwã·Ë< f÷c5•ñšåéÎNžnÓ~G€Þ ¢Lûú6Êx2T§Oóƒ—M¯Â°lz”<Ì‚ßB B«øž¤°<(i) /½<[ÀúþGœø{Ïç�Åììw"¿¿Lyè»~Ak1 ½4U°Þ¨�/; >„?{ì=Ÿó;–Ål‰ a«„.„Â÷2�uÓ˜$´çÊjàw9ÇaoúùÖKü”D¤j„Av¢º16`oa†ÜóQÎ9 ß4ˆælq¿Zp�@/byä‘Ó8áócÀ–°(ù‚^ }H²—pø›ÆÌ›Nù dÐÕáÿ= ïYšy„:à)yMø4žGÁ¯ ®“ûr @a| í@=LwÊ}hbQ¾äI0õBø<Ê‚Y@Œ/‘ü¨: bD§3ª‘ ž¥ùjœã¾ÃRœâi–š,lø¬•ÏZu¿Zz¿Äɵ{µ "ú»Â%»fƒ+�˜kÖ¿šäAè–<óp ¯ ¬/o¼„áfŽæ²iŸþ®’àÆË822 ¦lwû4'!!ç¬såþ<¸uG']äuÈ×À°ž¬ß_®½pµðÖÞš(Z¯Âõjíó›^:_¹0hì÷{{ýÞ¨7êÒo|8ê€ÀKiÔ‰j¢G[à‚$IP@´2¸ºô,O¢”Tœu�"é±±EÌåy ÛÏ[*ªve/³SBp« …¡‹ ‰ò©$´³î¼¿„ÿ!±ð‡È…¿Hpu)ò hk5óYM³B|P´wE=#v6~T;0¨+È꡸ÎNø*uÙí|ù“Ûß}è8¬ÿŠ><É<ü3z›§@£€àA§ÇÎÏÏÙ[¯Yg€S ßi>�þZçÁq¯§‡Å±Pªõ¡ÄJÔ’BZ;Ì…-ÎNN ‘tYäkÜw÷z£Ý‡¦˜³7wI@ÏIFH欞ñå ™H¯Ž®OeÊa vëMì):Û&F£9X'ƒ`œV?Ô1 ‘² 2ÛP q%ÓGÀ¹ß°¢­ V×¥ R[%cŠ5õ`löBCü ·{„nZ&LÛò]µM_ê´s}”»»jî„ úÙKOv™ZÔL`ÓÃr;R %#Bt`“eIÎkŸ-’ø–Eü–�ßF70ÿU2;eoîÐŽÃ,»ùDSÊržwÜ’ ·óÜaünŧè�ÆGÕ-ˆsØûK‡!a@5’…‘eݶr�t†�È‘4�HNÙ‰ö°I^~T‹“–DŽnø“�<¤8©ÐYøGI�‚¿ô³ {”½QOGê1zøÊOŒ‰•^H8BF³NÑ<¸ál >tÇù.3±Ób¥lüŸ‘bó?¼0çÅJm³*ò\dÍ,Tè?÷+ [ìàXvm†ªèC S‚S=N+‚ŽH„~Ñ�›2kV‡¤‰Òþ>M²~DxiÁ ‰²bÉ>u¯>9ãôºßï±~œÔ~¿l!{¬ñG­u%O %¹™´RÔg¡×BàK°§š¹­y\`q{ÂÒ>†ÐšKp@–:äQi¥ÁÁVMbZ`J›&VÈ-Y$û |¢Ïû>Ÿy�±IâEÓlL�zôT0$e°ÙëKººw"€'Î;Dl¾Ü±BM‹€,­pj\ªÉb&RI 2P%B-1�ªQã�p§€¹›d ¨Hø?ó á¨B1} ¦:ƒÏ 1ö¤¸'lzpA‹ ×âù]µ¡×ü¥Ó~‚%ë¸�Þ6ƒ�ªƒ�5ø¸:øøQƒ_T¿(W½»Ý ò)êûæ´¾° c¼›KÞcw´e}SÞ´ÊǬžP´úeøÐƒuÿ¦ÒvèAë�ϾöB7Åiãï(Js;Ž. MŒ6 ¿ç aŠÞå½t]0Ç'0ø• ¤)Ϻ…5¸1WSt­Bª¿ò(5G_e„å³Õd9_³¥à® V¨WLY.À»ñ"_ó©k4¸Å´«�XŸaHòç?CÜÌžÕɧç Ê!¹+¶‡¸–¨vAÀMñÖV¬�µhhgouʶøÈ¦æ7Y¹ÁøMaX›5f×ÝõT†gKO!Kîms)Œ¼�ŠP,]Ñöš(ÑÂîºD ØKŠ�|ô‚Éø#_ÐtROX|˜F@æT&m°DŸ9ÏRÜ£³àNåÁÑHâ£%÷dvI"%·#]ÄyèÛ.<ðÇžT¼È„{þ=»]pLø¤Ò;)fnÝS*CSò¬jág(¾M{«¼i{=°)ÉDw\l·ß�ïBà‘x?ð4õæ}MDkÒÄÈGÆ­KÍÿÌãŒk.£Èÿ�Ïê6x¬n§‡¹¡N5Þ¨kb“*D~¢ÎУ@A(.1ùúl™§EzD¦Þ4SÊTO5Øœß=)Á›ÿ­™És�¦ :å–ñ*â~çRä•6¸6ðu}u÷q\‹Ñ“›¤ÉGäÛ9¾ÃEÁ�Þ&<9<Ç–��·Ï  6ù;5‡�‚ `GáMËX}ê�—wît·šF`àq·•פC&@�oÅGsyH›ÏÌ0›Ø¶• V3Ru.weBesd=]I’ñ•„µxèsÊ@™¦R _cfT$`åÇ>ì)­%žü&¶vmC- V“ K!ÆfãRwUÃQÓj YYv¯‘­Éú@MÅ� �‡¤ïÒ¸NJ§{ãõx=‚¿è5êR'¥WuI…•¥hµ‚ å°ã}a.Bó_þêaQr ‰’¼F�SÁ¯ ‰6·Oâ|…ÓŠLWî 5¹‡¹Áðä*-5E ÒѲîèìÙ§µ—®¯Î/Θúq›½+‡]wGðž9Øe·G¾h[U�¼¬¢¶©÷ßÅÐBê'�ãi º5š.Ø¡Õõw±™ôU1{—‹cpW§ÒÔ¡•Dl줮 SÿÕ6àíSººÆ¸Û¦>Ã:Së-"Ú–™[M4ÅC‚�I”C7µÂ5döDÊT×;Þ\Ÿ>zvxʲl(hI­s*4�X ©e]ôx[,`E�œœLA¼0U�™08m�3¸ë)é´ëº5•­�W¼ fËãør–¦1zâ©%íÖš¬žâGq4  Ü€zŸY ÞEÕâÉŠ¥&“§¯µið¾þQb‰«ù¥*çÛ(¾¬ž&¦U—~æ|…�2:ð¡‡>hžòÍôï�z/»[9>zB•,í¥fËï`%ö:u %; ¯i¨JV[•DÁ‡dJ½äáÐÔ �óŒ%UFþ BíTK‚‡Lu„t49¹/Šƒ)gÙÆStF‰¯/¯û£uñm,³ Tõõ4V¶Ë†…”›Þˆ‚BEp¸·=jkaúÝÕÆ†,¸¾Ã»¨qµ ع8ÇPíÀ•ÿ‘SÞkW¸5xõÒánÃYµ ‹zÅ"æÆdˆøÚmÿ£íØi =‰ÓE�%a‘'ªeµ¥”¼Ÿ‚Ðçì½͹֬÷ø>øÌÙ-t›zIåTÜay”æ3‘ÏŽö”¥Þ½(‡ ï¾H!ÎÉÆ`qºGá ºm7Aœ§:Ê"½n‰,@|"Ïà—h ì„2Í“S]* Õ÷ºìoð8â¤Ë(éÅ<(‘éûŸ$°š�f˜‰÷ØÅ¹< ‰#+fAû5ÅÎnËæøíb¤÷›'‡õbÉ¡èi}@ç·‹¦c}ül“lµúw�KÊêbÀNVMKwj‚&¥ý†)�`£ JéÆ+žx˜�ç¿]Þñ‘ñQâ£�ˆ�¶D<´#6 nD<Ü֙ׯn5:À#P€†Âcþ �øqËÅ) Èwºf™¨Mç°ƒ|F÷xP¼Q¾œ óyº 2¼\ »ìëÏKLÞ$¾áíæ˜òmà ²ša¿¿i~—^8ÍÑÓ3*ê…F­ºÅÓBÝÖó¾H£Aâ7b™�Ö³¶6MÇD¼ÝÁø.Ø­Ð8{îªr¨Š¦3Q9ìÐô+v©"÷5¢¾Œkž‰†Y�ž$ËñrW¾¥Ä&ÄA ¢©,#£ªÌ#ÖÈRþ5 æø S4œŽ sÊpÌïJÑ>`·¤ëÁjaÈç^X�†Ñ}éÝums `ê§õ!5Ž.½(X‘ÉG*�”«êTQ!G- u‚O\iâìYÇ©P`r¶âàÕe¨\5§þ°D\}ØX w †%kõ»^¡û’²éû¤Âòc²¼äôÝÓJ‡|– –qšQ˜ú+Obæs<©¦L\rÝr˜¼*”å«�»:¶· +Ð?�5OüÔ‘™{A ¢èŽ €ìa™UªŸv¦ìýhêDšG¢ÒûZ<¼”¸Á¥:pa¸ A¯Yᣟþ±Å™²úRÝÝÞ#¼©¯ët Ó$ï`5OCj-‹’·7X¦ñ),e óЊù¨ófýSiÚõ?LɦDNã©vaõÿÊ&|l·]Süè0�X¶=°¸÷ÈQU¹þcb <Ÿ“æ”wcp U½Ê xécMÃ+º�”ÅÒ,A21ÒÍ(š÷1]áüÇÑï°TDÏ)„•8 LV×€�‰ò™–Ú¨»*mòSÒ$"ˤJÇ·Ž¡ÿˆ¦þïGSV%ú-Ѩ"¾²ú©'“uÂ1�l$›½¬i­Gd.k˜6Z�ºjÛHÏ– ïot÷¿Uë}@2£ËüèƒMÃ<Å l º.{‹éø‹å@ Û¿µ·›ÕjAl‹“ŵ¥!í^êyÝM­°§Ñ¶â:§**S:•;DÃký×Qå×qå× øe¸ ‡ßTolÁoXBºÂk¬~0êÇD?mÑX©³:Éy·%÷íwÁ‡Y%hÄaÖ˜b‹Û°`ÿÂ(ãµ—B(pIÌx|Òr�çS÷ìbýì|}q>ZŸÁ¿óóQ çºî^o{÷Ú~±ÇÞJSºÙb# m»¨¼�Òt¨e¹Ÿ¢±_ÈeÝ?šgó*0Ã+¶^Å/¹{ÊÉ»`9ñè]¸˜óL^­êÚíÍ6u vãí¬·*!‰§ŸÅ×8ai°\á;Øèö¤š«85ËÚ?ˆ÷°•®*¦È¾¼ ƒès­<¯÷` –Uˆ´Ê¬ÐðèµP¦Ð‹,�2Áèª.ô=t†Î‘sl@Äaz DõceYøœR±2¢SXÀ�*Ò´ûS =�窪ù'>?Qè¤^ƒíÕiy3Œ rM6U¯¥QÒ!âò7¼5M•Zê]],–ýÊ*›<<Áykž¦äf¥1w…ŽRêËH/èÒ;8eƒAýY|®å™,ž¸v¿HTû6^#M\š—‚î�ÀûçZïºÒó¾YuÞù^L�oâPÑ(s²úسfU¼qÊê\UsµX[Iô{YŒ‹B…^’\ô×f``-–䦵€_}’ö«ÚmºÏ¼¬x(/)¢îÔÒ«µ¶#KÛ±¥íÅu“Â|C¯6@¯4Á Žå�Z°»Ãþn÷ÊÃG½­a³Ö^·ðèW˜Ùß\–‚ö¥;åSc¥Éoîx�“&ëm}Ñ�5ieyŸ´2ÉÖ°¾X�%Ó–aµ·éÉÛi�#ÌšáçAJÑÃÎÿPKÒV1] –ÖPEimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Intervals.phpUT ëÆ«jëÆ«jux è‡ÕksÛ6ò»<㩤X~¤÷ÍÕöÜ´—™ÖÉMz½¹s<H„$4Á¤eµñ¿]€(ÊjrwúK €}`ŸØe&_%«äèèâÅyA~ZqIhõë8cé}Î6?Òl¾ú&ŠCFír+bvà6y”qs 4% cQr3�¨”dÉb–©ÇK� ý�F †©XÃé•Ke!EJDa8ƒAIòŒG<ã ¦‹ôª˜BΔÌÒ¹Ú‘Æ„=‚„à÷z;²YñùŠÌáéŒ ,$™Àe33"ÐA#ÄF`î:Û’yÊ4–”X„‘+]A!]Óxk"N¶"'+úÀÎ üVlþwÚ¬¬I‘ùL² U�–ßaK œQ.¾»"ÿ‚-åJäQ$ :�®¤HÁ"e€[ þ»R#õ=Ý ‘.‚‹>4e$D ¹D4”ƨÃPª¢�åuyGø¨£ÃÏ ò5 ™ÑøìÀÒ4¥Û ê`¼ë_ â|ÍR>\UÛÜÝ�É`–Òˆ—0^ND­„Ÿz½šÄçQ2œ ==M °êo’òš»2 pNN*‘¹¡°3 ôÆÃ[¬a“n("y'ÒìMÂa• ôø ¦Á€Srö—q=6ÑC_CS5dŽLôÂb�ç² øS»F•ÅÔØå(�ÏÀÓÂ/®[ÂÕßÙMÉ¥"z/£ žc5–Oâ¿É2¶N çÁ¼)ÉøšÿÎÚÙ’%ÊÿĤ(Yb&bMÅ�–Z}àŸ­JØà7�ülK"š.!ÒPɈG¥”Ùáfm‘*Õ¢™Š¢ÁEFš9°d0)œÑH:õލ·¢©R@†ñ+®†))q´UÉ5lÉdF蹌±nšÃ@¹+0I)¸žŒ¶¬ÂëÜ£îåìØkŽrøŒø÷Øv6�Ì£WÆâíÚ¡Q&†f0iÈ‹•—¨ç+*oµ®”¦Šîw¢-% ÀÓ¼$_|á/1Ée3Z Ì€¤¤åê /8þÍR3zo©#φ€9�Þ É3޶~Ò˜mÛñŽÉ­»{`D"šÑÍPËfüµaçñ«ßrÝt~ nÀ˜_ªd( �t ¤�I1œžº}µØKû ¿¿>j­»¸@™çiÊ”›°8”úÞqBn•¥ˆÙ£ñ|Æ–xU¥fLaƆ)+&74Ѧ ïŽ�Úã€Üº€ÎòLOŒ •i]Ñ$cDÑÁiþªÔB ö˜¤LJÔøÊl7¢ê&#­.©l*\p‘ —4()ÈÝ4øqL&·Ê‹ÜMoáûÛ{ŒÖôƒã Aä¼x[Þ´ÉP�‘.ˆÊÄã]Æï §ìÁÃà8Œ]¹uS„;PÀsäqÎÜ3Ú>µÍñ®S�0ÕÇOejÀ rYÈšÄÂÔ©•ˆ"±1ëê&-´I”!Ð °Ã`y#Ä3ˆ(½&¢ëbÂ'=ýzŸst@õ�€�qÚí/‘ ÐJž2‹+¿æóbqøU»$/Oºñe'�v,ãJ¹W—“vWäÒ ÕÅîK�£ðpv�ȨüøuÈC�\ ¹äDtþ�LòHÎÈÿÔ‘7˜E�ÁÇ^×í³”Ûé•SîíÕ‚A{A‡Ï¼^Ð),¦U ÚVÍIæŸqÆ wÞЛÐ^j¯Å~§‘:,ù艢ׅuêf/kP\À¸À9]ÚÈk+š^ÊyIx²�F7òÎKÅVGrÓç¶¡œ}¯”«…íTÎwfE"¯˜êh2èf~0ÅœdÃeÃe”•lÛi?+ ½V¡[Æ©Ëåº}¬w‰‡uÝ}ë¬Ço7α?–0tVûª@A]å8Æ‚Ö�” v¾<ǃÎB¨4ÎÌM«<ÔL#í}§äËóKs—5†…à5s]»h|è ™‘ȼgbj„ËÌü‚·šlè\‹m œ1ËÜ VÔUX"DÒ°±PÎâ–„0<—Jv5ôÐØ•º�Ã’O" =�EÌÚfl¨W«::©m�·ß²‡¡¯2«®ËÖ3óáŸÛ%×§„­5{V~N>°-1;*Ì:N³>¤Xœíbw¸M;t혻w¨­[»ûôë넦t­8JNd&’7ñw<•ÙÏ4âa‰�}àŸûl›­‰ÆáÚŒÚqÔc?‰e}ìSôÁ騧â ê@¨D`èŠÆ=ΑÉcÜ»­°~Kpc�—¶ZåLuøÍyåéãhúí‹ñND›ºõ/b–¸ôÓµ*ÃÙ*åßÿ#f� ›g,1ÌÙ«Ç9KP¨‡ƒŸšn%¡›µÁYã ;iÂg6²pìŽíÍ1YŠŒ Î߃müE5>7h>œÜ„[q�ñS]‘L#Ý?)dãûT䉻\]ïô×Ò9¦Õi­‰æ°óVÉ7ev{¥]Ñm`¥od`‘Qü²æ·q4ÕIW¹=›rùmk:*Ö³š µ6ÇB)s«jÜbJÅD•ß{ÓúY�^O, Þ=?%›‘´i~¥Ð%©bˆ½i6�uv�—!:ôèÌì (Ç3,©Áø:G_ýicMJyRè¼l¶'áíA}õÌKt/[�+%C�zÇHK  Tå>çXäqÍ,ŒiˆÇ7í‚= 4§‚´EqL3OqŒöáXÝGe·>ìÁæ�/Cƒ›cÇäÞéj'ÏÿTÑý‡!Eþ<Žô¿wö9­z£ý?˜uã:²}ÆEþ­5#§”v}‡ÌãíZmŠÆÏ4à�lY·‰WŽìcI­ín«°›(ð?*UW¬¨,ó3…ü­ÿ,Föò²äÞØÖl=˜—ÏqXÖΦÿt4Ý÷â÷Nþꇯ #×LG4 ÜG g#óžå~ªú[\#áðã“Çü·Üe$ìúdyÚȺï@™°•d\ÞÛ9q…ˆ'ãš |ÿrG6Ô̯Ð9,ñ«�f½@=.^9q¿že¿«Ø7w…ƒÆ»]þ¾ ·¼tß±¤îj€5’wÕµ7pÇ~È9z2ºQsµ[4cqh£å–Åæk´Å�1Xï‘K–„�ëk®òå |k~‹[y£(à¬øEµÁ§ ðô®bO¡xÕO‹ eÑ‹}°Í¯ãÍ!•;QqôþžœY�g�Ç�¥�jû&ƒž· t®ïÁêúKãF�ãíû†âM«Æ µŸz×ø§äô+…ö%—7µÝŽÈWÄc&®ÈKcgÝz�8�"—þ–J®Â:á:WíeÕ£;-„ºìXê‡K{-þœžZ,÷y{áÙ™OÌKÌŽ ±iÉ>•iàä¬ãŠOÍò}Ex->cR úĸnîéÀnÒ9p� ŽIœj^çñÞ¨ˆ`dZu˜�ñ®ì8ó´—9^Kqò¶éjSÆ)Œœ[¢/÷ún@»½Z1­ÍþºñÌ»/f°][;öölÝõšy¬Þ-®#Ê!÷í/iíPHhuo¯É?Wl=‘�†Zë�»}µŒ®à{VçÃMÈkÖ\ß®L¹‚£Š³»¢"WÕê«å/'ð]5G‘8nÔk­1¤,ÑŠÆaÄ\ïÊB#�…G‰�C{k3Â2ð`äööÝŽTÍ0n5ö*ñ\·ú9Ì6(UêÆ7†Ëúy¡1dM·ºš=Æ2l Ó‹‰¶À°CõJ &Œøî#dF![¨Vu³ïÃô$Úø»;j KвϭݹÛ�ìôž¥ÍgWMíKr¹­I×;|ÀûDtÖÿ"S~|f¡=Ñm&š;J‡")¶ô»Cºï ðÔ=:GÙ¶Q^>¨Z[ÔwøûП”èOýÉè»%×4U‡aìU)£?ÿ8xÄ ÃÚÔˆÁ>™É# ÓÇ¢e†œ¢yx±­-êA¼Ý>:ŒýbïjRlÀ°w›vîÖG„,qnùß8€@�¯ÿLÎÖáë^ÜîæB°ƒ ­Cè^`0¥·¼>=ýPKÒV1]U„™†Y Limunify-security/lib/CloudLinux/Imunify/Composer/Semver/CompilingMatcher.phpUT ëÆ«jëÆ«jux 臥VMoã6½ëWÌ$ŠÝ³§ 7 šf»MnÉ ¥‘E”¢’rÖ òß;Ô—eÙJ¼»¼Ø¢æÍ›™7êê×<ÉgráÀ<&\CÌýæLÈb³4Ï4ª‰Æt‹jL†ÖÖ }XÔ¯à*1&×ÓÉdÃMR¬Ç„™4¸ëð{¦À$q!9ÍwŠoLF xˆR«Œ3•2Ã3@.�ÑÞ–ã‹…[èÝíbyÿ°¬B4 3ðÂ4D\Å×…Á^ˆŸÞPø:+TˆD¡ yâ8’¥¨sF› ‘Ñ—Å·çÛ´�<Þ=7©ÿU¢ø-'2MMí‘lGIj'Œ2š9ÌÐÜѬ²Vý¬éŽ`)œ˜\]o=kë¿¿Z¦£cÔg¨ŽÐIDiYÍ€ž÷�èkÍì9?G³²(ÞÉûÈ‚–¸¯sWá?qGªµ qÇר�¹ãÆGݰvñ<®5ï¸ažz¾¿ú~‡Ø®:ë3 û–{;$¯±õ„ù|’nõ>Sß >=s¹ªÔµ‘Øt5yn@^¥žO=ÂWÊÏ¥»Ý‚W�ÚõýŒ*ÐïF× îÓ!í�§oeÙ‹qy]ê�Ú“øÒiȦû ýÔŠùµÓþÉjŽÂz`v˜Û�ì§&ÀSëñXùQùÐ˪vâµì�@;"~Àe½¶e^~exn]êfßm©kÿµÞwÇe@Ôåo3·[@A_O½Ø;ÞÏ éd½¿OýN䕊��/ô×Ùp#Ü^º~y~iÇî›ó?PKÒV1]Y #h j Fimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Comparator.phpUT ëÆ«jëÆ«jux è‡Í–Mk1†ïú0Ä6Ž—ä¸öºãB 4¥öÑdyÖ+ÐJª>ì„’ÿÞÙõgÝ`J»ïE²¤÷�™g´x‡ŸlaKº º0+¤‡\*-wL”Öxt‰Çr�®O«³mÑ�ñn †EÖ§I²’¡ˆ‹>i’½n´|1B��G¥ÈÔ¾9¹*p½%jOQun\Ƀ4ºV!§µµÄM%¯¤O�ãÉ×éd›b(x€ ÷°”>8¹ˆ—°¡ø´Cé{�@ ´Ä*å„1ÍKô–ÓâX™¸|’:¾Î˨eþ6ß—2ŸÖU‹þoÒoMá¹ÔádJr¡¸÷5!îx0Žýd@OÒíÖ#U4Ysy@_׆¯Ö¡÷Tz -2®f÷0:Ìú;Ý^þ¹2.¡ª]¯Ž’ËÛç&CtƨÝZR�6.¨+$§nê™UW`å�2v³‚ëö!dïhß©ÅÛR«ggïQåi*jx*¼Ýžªµð�ýªìzY=»É�ÈÕÌ4-kŒÚðÊ )J±¹Û5lŽÓµÝ®=¨†¯Ö°¹«•]2lTÖ¨›k¥MhôRÝ4Ǫe,Öÿ§M!Ûûý7Ñ£Aa ¨¾Û? Òt:ûþòüí¥ „½ØŽ�ôÚÒ‡Ð��ÆÍI.í ì¼§'w#ú2ÅÔ¢�¹í3Ãß_ˆûN‚‹xèõ;ûPK ÒV1]Cimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/UT ëÆ«jëÆ«jux è‡PKÒV1]ê ÍH�T%Vimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MultiConstraint.phpUT ëÆ«jëÆ«jux è‡Ý]oÓJö=¿b�"ìpÓ¤)<¥i€¥\ÝJ°\-\­Vm…\{’ÌÊöXžqB–ö¿ßsÆ_ãñØI)¼¬HmŸï9ßfñ:Ù$ƒÁôÅ€¼ _6L� )�ßÄK%á+âó(ႦSA£-M'ˆ°®?"ïŠWd±‘2óétÍä&»›Î´Ä[¿ó”È %«, �h²OÙz#‰$d>�p�W<�<Éx<&IH=x¶et‡èˆúáêÝû~~Ÿ‹(7ž$;O�€ ™²»LÒ€ì€?¼ñÏRŸ£€¢ÈÓÁ ö"*¾ y|`qöíæ*Êb¶Úß”ªÜ|VZÂ} T=Ës´ŽÒà’®XLñ€jüß,ö%ÛRj�Õ­ …ÕJ|‘³÷COò1 %«i�š(R?½Š%MW èàû€À¥Øãõ‚¼Ùz© òú¶‚€óÒ‹O2æñ �¹?ñÒÔÛ/,˜Ëqª~“”Kê£%‡š`‚BŽ\´w¼¾�ñ$ÛˆIJ¥ÜV0�ÃVœ;ÎmÀÚ˜ÿàYt1 ùަ âQhY’´Ðj›{©ÙÏ¥aHòÖâ¥nëÒÕ%ÿÞP‡<œtêbó0 w)õPl�n_-Wüå&å;An®â­²àmºÎÐ5ßói‚1I®V$¤àÅz19k°öR C4ý)»ƒà†˜GŽ@áë×)ó¥«\²ažqSÍ P#£#E(�¼ØŠ¸7>„tuÜY�³‘‡—ÒˆÄt×­”Û@ÀËù˜ ‰G¿e%�d0I"w¼¡1¤*ÈF@OÈ_�³œI›(žUJ×YØ`’§¤Åcý0á6Üãy}ô¤¿y†BCdÓ ùÏHFÌ:˜ÒÍç¾ò wDvæoDì˜Ó ép¾`5Ȅćì Ï3É1#û^î'NƒÅ輺}T1ýž,uS]Ù¤ ª�y3°5âzÀAŠÉÒ¸7ÚpMe�$\Ó¹ ºmI‚QÛ˘‰wµ^‡ùk�#ø^ÖßÅ÷ÙñŒ¿¿a1ä&/¹ÿÐË(Ôî�c²úéÓ“<5%bŸ�.¢Ò�«ù¸9õÀI]‹GA^Ó\Ê û!Vý¦×!ºUœó&&—ûâ‚ò�cR/á,F³�jfÎé�·@O 5$Yyð¬S”ÇK’Ó;N ©üÔ º�h®3Q‚Nœ‘A°&¦å‡Üt ß²3 ÈëÂvdÞ]£ÝG[-�Òuž?wƤ`^?¿¿¯Ÿw†]g¥Ç¾GUŒÔ,«ÇFj„™ž ·—¸­*ƒ(79ì?T%·J”“e)±ŽuÀñðzÝÀæJKë©O§PÎha@h �K›×èÑ#,‹z±ÝQ(~ðBrÂ$&h•¶Eƒ¥#BÑÕ¹ªL²c`üu]E´TÀV+šB¯Aò]ŸIOA _vt] óª½S]t%�8öyšB— ü(]�¬'äz9Sª/În ŒœÅõb†}Å{!”úl­ØîIÀ¡«€‘�N½†�U§ïq¼ð)¨cN3ÏŸÍ;ŒÊÓìwB×´7?î¾EÚy´ïÚ½¯é´í T»ùS*(Ì jÔÛ­Z…4·ˆ‚%°9�=U¢µ!‘-YéOômíFuEALá=]™¯_%?¬GΔ<ƒôŠ£a¿*¢[‰a³#þ¹íNªJrm¨úÍõR”Nã\;dRF{9&ª“û{âŒIs›çÖù)¾ö¡šÕ['THE¿[_*�æl¡šåµÂXÏþ=“â¾f~=: 匭ÊE˜çpÎÆ¼]ÇáúK¹wìY¬iv}!ñlöWµ¨ø96«¿Àf5ñÇÙL߯Ømö%e8ÊòjÆmmK ¨¢ ~.» é˜DÔ‹!J*) 2î§>C/@c é‡w�•þ¤ÄºäÀkiL}*„—2˜å Z+ƒª ‚õKÛ#xŒË%UÅÞ#B­ 5Öf»ùÿ±‹êðmþ”�Ñ3_sus Gè+²; XØwŒ—¡|šË<&/ÛœºV`�¸·/ÂX‘mTGÑìí!ŠWžh:_WtÍ£÷£XmÛ�3ê~¥-Ëæ¯kìطRªo•"ý¶Ë?¼hÔïšýŽ5Ÿ>J½J»mÔqžúGG4/Pà¾|ºü4'Д:BUÕ$Ľ0Å$“$âPI ÑÕŸíÎêÿ¡�I[ΌϷE�P5ÆèhiœÕøøì˜‘;gú Ö|ÝS?¶ÇÏ·êÈ[$ŒÏJÆ–¢í-6 úÌÞ¦ Z¤ØLÆ–¼ø^Ô)Xþ :®/Üm)5.¥4¾Râ¢g©= Ǻ}šyŽPA·ŒE…Úª}*,” Ë^~ð|ôxÍÿ}ü PKÒV1]ë©gÉZimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/ConstraintInterface.phpUT ëÆ«jëÆ«jux 臥UÛNÛ@}ÏWLj.‚¤í#PŠJS5�HÐ7¤hmOâUíÝÕ^¬¶ÿÞ_Hb.ª„_¬ìî93çÌYçì‹IM¯7õ`w©t°’½�°ô b�íÐNæÚ1䳃x—Íœ¥Þw2™¬¥OC4&̤Å�7€ïÚ‚OV!ˈԔV®SB%�É•£ªj¥m.¼ÔêL†‚Ö ‰†3ôjv9½¹�Ö-úTx؉tÞÊ(xL`Cõi‡Úw:Ø©P‚Üò¤×S"Gg-^f:$WR…‡ûY”\•÷­”ûÛJ%ýVÄ*¤ò§ìN¥àÛnæw0»^\M¯§7wu!:‚vE´c˜y6N«¬„…ò@r 8±F >øÒ ¤`6©Hwd…•èÀbVJµ&l×o a[$Wh¿$U 7|ªíâL8W[DŽÈœŒËQy×i�[Sš ŒÑ–í dpÌ.ó6’#x�ÌfÂn+ÕoUskêÙ« (|03�E2ïj¿·…·^ÎÚµÞïÐSËÏ.SŒ9ؤHÅ뤬e�{J+JGµXõ\ÒüË�™o�6¬-ù…YäÏ5‡ÆêB&h»�F^¤uÖ¬Mª· å•b¬b*P^ãÝàUò!¥¨#xQoq.ØWŠtd²cNºvlÀŽô•ÞõD´Âë¶gº¸ø”$ÎCD³…Å�Ð�h<¼1nQÓŒ±´·œoÕ¸é>AA1Q†î¤ÃaŸ«žøúQ6[(EƒÙ„Åj4;€ˆí€©,§‘ñ-P²J«ãÎõ€.ˆŠS8OŸ#WÏú Áâø`ؘÃݨ�œÌËÑ£o}$X§(„Ì*æÖC÷èÇ>¾=m²ûï¨ã÷ïÛþ–�ªÁaqý�ã}z�÷‡ýÓçÓÆc;Ô,vÞ”¢ëý´ÅrW›ú„95ä„:îæ¹Q»_îÕØ6ìCžÉiÛÐWTò*åýOCDÕÉÁ[©®ôæ?¨ölz‘kA§}y[�}–­ö³&û£øŠ®îóÂŒ -_—á:¥÷Hߦj¹ôz+èoïPKÒV1]w5…W ÕZimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MatchNoneConstraint.phpUT ëÆ«jëÆ«jux 臭RÁnÚ@½û+怄‰) M%$šV¢=•*ZÖc¼ª½»ÚCQÊ¿g֘ĥ� Ø˳ïÍ{ofo>ÚÜFQrÁ|Ï•‡LüµÂ˜ ¤)­ñè�å Ý€�ËŒ›#¸É‰¬Ÿ$KEyµ0'ÙónÂgã€r„¬* nj7N-s¡S(”DíYUgÆ•‚”Ñ}° ®­®=P§“ñýÃì~g‘rA°RåÉ©EE˜Âšõù„í{S9‰,”b°œD‘%z+¸8.L•N•®þÌ'e¥U¶™ï£ÌguJþ×ÜU(MÃ0�:Á]!äïܰv=–=À÷AÖÔK@/…EŠjIYïá‹ ™?�¯=A•¯D&Ãku¢ ]Æ£§øaY­„ƒ�O/ÿê09nά3„2DîX‡D›Y�a³ ³þ²éïQ”ÇTÓ¬TŠ®Á¾P¸aå4,Œ)šZ#Z-xU¼A-ÃŽ  ÉÐÇo6ïÕÔ]¢ð4Í3QxÖÕí¦ŸFJçè}2rû¦…pËø6ÄÞº¯� sJ³[‹vÏWõHßZS�ÿÙÁ¡x'ÜÇëÛ6>®í\GËG‡&Tñ#½¤5¨#Èá ®±Ù‚ǾiVóÎóøHæDŽý&þºÀyh?,_™;Séô””Æ5ìÝwƒæ½NqÕíïîpï">¦f})ÛèPKÒV1]ǶQ,– 2Qimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/Constraint.phpUT ëÆ«jëÆ«jux è‡íÛrÛ¸õ]_í8¡äQì$m_lI{ñj5žñØÙÚíË:£�(Hâ„&¹(ÙMüï=A7Ò”¬´}¨’É88÷+@LÖI§szÜAÇènP´ B‚à;Á)CñùñCS’žRò°!é lä{{~]H®KèÙéé*`ël~8§ÞX"ü§ˆ­ ZfaD“§4X­ÂÑ…�O" \£eœ>`ÄÑ%!Á°¶ È–£sÔ«Ë‹Éõí$‘­1C[LÑ" , æ# ´þñiœ¥>F ÂE>ít"ü@h‚añ"Œ³ÅUe�÷—Y,Ÿî Uîo…–ðwTq±sn¡Á¯dD„" T hNÛ1¥¨ÂAÁˆÿ@"¦®^FŒ¤K óµƒàszŒâ„¤˜�eLV`É 3`4ùÁÝ|šM~G#ôþ\_¼ºƒÅæâ?‹S¾ó/æ"ßùWcñš/þ t6ä6ŽVNùnïþ>+dôF#ïÜ›ý,Äõœà4t‚&äDjyc'H ��hBG¯[+rºÒ ÇâBà¦0‹K—�s#ЍE ÏCobw�ôÓ§§)~*W é(ÃÑ»2¤$\ž�I)Ž(ÿ›ÿK¬ÜäIl0#ààè£#Áý&¹e)-Hõòýðc£Ñ¸"5ù} Àš€Cvu§Â Ä«‰ë°©Š86§*âÐÀ¼V�ݑط=tYx%®b÷�R½Sx«•‡@0ÛCŠõ¹‚Ü)ÈrÌ�â‚Mr˜qš#Ž�°qìD¼Î�Ýè0´°ä€Ób•­ ÓÄŒø¼PΩçe�± *Sp {ÿ·ˆw)I cO·b�‰ùKœAï±qÂxKRl‹‘%‰…Q˜å–@(#‘w;©�PÞ#qJDÛ²b ø¡°Gi¯°$jÒ`ë4ÞRtAá?§«Œw¥É£O‘Á|(`J/¢hlHdK$=,Yk9`I(­”Í¡»CÓ�|Áo6Ë{gæ³^‰1(åï ¤¯e@‚x½n@)a½œ�Rïþ(ñ?÷û ÿ½QD¶õª÷($jÄ–= ‘¼KÓ"?¼¡?ä6 ò˜än�#óÑzC• *>•nˆÏ0•ô¼òŠJ²"ì¢(N�pÑch¯ß×�ûýóòïçNùóˆÏ;ïÆ¥°#Ôdªs¯Ç‘’b 5ã!™²4’1×èfÐçŸ9±žéRIDç¾K+‹MZ@¾$_aæ:u#BõþÃ0ôçZ¡óüp ~¼ Å›`ARSÉtÇa£à0ûkB{�Ä]YT!ß¹Ñ|³=×ÑLÝ?‚ß-D|° üŠˆ;OO‘ÀH¼,áTTL¨t09/`p+ ª’¨'¸÷ë üõ§ Z“4`¿Æþs£¹ p|RZ@Ok¦™¤Êêžzy­D+C"§¯lAš½d‹hxFß>›±¸`_§Ñ”ÀÙ z*-Ê’lV%Š V‹�ŒÔYª.]C8· ©ÜtrŽR-誕î,‚̾�'j7�ZÝe×÷^I¼š~jZäK=²¦„Õ•/‡% ˆz€#¥©¶*k®ÞPk�¸f}¾ÛèÂkÏ:9ýñÜÿ¾#Œ]g9ÝÈnv‘kÔ;Â0ÙÌHt m¡À,qHÉÿŸ=|Is;ò™‡¥IL…ɽÙ¼óúh4*ïLÄö¹cûÜÚ®Wâjªåwèí[X®8û¦¶ÜQÔ]Œº€4wê!U��B±† .×(— ØŒêÙ@wÞ® Ä~züäÅLv~. -�ý¯Á0Õîˆ@tç Ž1Ol]dR…®Ûû˜JdCS»—I6óë²ìs§„@;f€pSSR¹ÖE iã¬T¦ªO=ùs§éÃ¥‰R‹¦ èÀRLW$¾w4á²$xƒUq:ƒ ‡D´t�ÓQS°òM£„üao » "�—�HœŠ(y"Î<C ¶Zmþ“núnFxµŸ<ÎËÛÅÞ K³µëcÊóf?g˜Ž°kÎfþw@é½÷ú{8æùåPÛYÌ<\„íî-¬ËUZœB=±s¦œù½÷†¶d³Gü íí˜R¥×{�­.rUÒí€*4›¹së:Žˆî.¯!~’5°µevRhÁED=x‹›õv*?G‹ó¸ÈI ÈåâL_.Âÿâ9�„ë7éüæb„ /A´ Åk;y ÀA?Üâ'ŠÖxCF43V>+,*ƒfd~èp©î¬)&¤a×m5¢,GèʈíŽÑJ)0n Œz¡ˆZ/˜½âq—SþÎâ<Öj`ÁËi‹±N× ¼¨t˜ÞÒ•¿ `U¥ÚA8Bäó× ÐR¾ùåÇÑ"`2†‡#ôñä=z‹†èÃÉû²Ñ»#=çù½‡R1Õä-+^ÍXÔmuÙ#F»¶íž±äæüéS?šOlÏ�ÍàÜ¢òÑ¢b!qJŽÇ±‚ŠòX¹ŽJ¹åÌ®Å.ߘÁW¨[½ðÑ} ,zŠ# M—AQÞ_qˆ|LÉ‘“Õ 8òÏ,H �xЉ·1¤FJ|“Ü;Ϙø†Ð�3F9 'kIa!^K78t–»½vý²&$­´çEéžžß:GMDìI®M-€æTs)oW¼W½H >ª4ŸÖÏéaÆôàßIËwvz–{U¾,dÉ'¹‘GÍgbí©ã�^’Õ׎ Ø?Êw’^+˜úvS³?7q°Ð咯•‚< Áx�/ru«±®2‹»*×õ}DGû_Ö[r@%ßggÿ"iÜ3.k,£UÛ�5´¿ ¹Œ–A°'Íæ/hD·Íöf Ëk�Úîά”w©Ãæ¡â<¤Ù×¼.%w&2O þrÞ þÕ];ñ¼±»°ùki'ÿi÷5í´¥iw·ÓŽñ¿»ä-Í|�˜>¤à×ß/>öóYVôçοPKÒV1]-(8 ×Yimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MatchAllConstraint.phpUT ëÆ«jëÆ«jux 臭TKoÚ@¾ûWÌ)µñÒ”–¤}H´7¤hm�ñJöîjwJSþ{g��¨ñÅòì|ó=få›�¦4Q” "ÀÏR:(d…Ào#,�. ÓµÑmâ°^¡½æÆÐg}˜´GpS7L’¥¤Ò§×ŒI:Üm ø¢-P‰Pøªâ¡fcå²$*‡Jf¨³ªBÛZ�Ôê˜ ×V× ³éäþÛü~'‘JA°réÈÊÔæ°f~>aùN{›!å$'Q¤D�Î.N*íó™Tþ÷bZ{%‹Í¢³²˜7.ù[ñT!�B:�ƒ;,¤B×H©CÅ£8 Á$]s—N“ä¾ l*+Š<{ÃúÔr'*«„sð5œ~ªª=)ÈšýרÈÁ¾:U„¶`Ñcü°.¯„…€ZþU!ZžΌՄYȤg,mæM»i‘Í›¥ŽyÑ¢>Å�z%s´mï„z« Õºjk-©Oy—¼b•…%v¶ãW‡÷èÎQxÚád=Žšâö…æÇ±T%ZIw:Û¾ª ÜB¾-qOóÖìwƒV�>Gy8¯.'uH?2�Ÿmà˜»®ëûÛÃøp¼´K-�‹�Ä'„ôZr:Ñ9zêke´Ç®Öà.7óð@úŒ�n‘ƒ7Ø"göËð…ù¬½ÊÏ15‡Ã!ÿ;$ÉNÿ"$mâþ›ðÏôúÿøÿ Õ{ÎmôPKÒV1]©¥�‡€ Limunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/Bound.phpUT ëÆ«jëÆ«jux 臭V]oÛ8|ׯØi%ŠÕ¾6_×Ë¥¨�\�6AQ\]Œ´²ˆ“I�¤ìøŠþ÷.)ʱå’•QÜÝ™áîÈG§UQA²À>Ü\CÎKºWL�9¤rQI�*ѸX¢ÓF»7JGpæ_ÁQaL¥ß%Éœ›¢¾SLÒÆ�ø€R�)òº,)iµV|^`"ƒ’§(4U¹T f¸1T%2Z[r\Ùpz19;¿¼>o š‚X1 ×FñÛÚ`+ªOo¾–µJ‘ eh!'A ØuÅhñ¬”uvÁE}7�,jÁóõ´¥2½v,éYPVÆ…9 ‚´dZß²Yð#º’ý}w'`,™‹@ÌýRâî•âKfö(�&F”g(òVÊr8Žë‰HËZó%ÄÒñ°…¯»©Ñ{ksÓóv¦n©ú–¤§©Õf³ÔÑ®Sµ)ãNøÈÅ5ØkÏj}pâ÷ÂñÛÞ–­$v[‡œÝöó!E…¦VbPÛð9š/Mݨ�Ð'é}ªäÃCéÜ‚ÿDÅ}FÕPÉ' nkÇÇǾûßA†Ë^¿À�~º+©¹¡d‘sÁÍú¥H¯>^Í&—7³¿ß‡-hxç%ˆí,3…�¦™#Éf$9ˆj ‚Áœ�*f¤õ4Ù7ðÔÀ.ò‘ÁkSô3”LþÔSó©Bó’Y„ޱdüåÙå(SB«BnAF’¿2ñÂ|žTm.±Qk@ ÐoÏôCºÕŒš¦_ïâŸ*†Ño´ZijôÉŠ„oƒñº’øk´NË\“‰_$½D{ï‘¢C>͘6­·ƒœÈôÀVHŒm5Ójõµ:Âm ;¿(Ùì¬_<ƒHúWg4ÕÉn«©Ú¤Ý�¸nq‰Âñ(ìCønÐ\)–aw¿“ÛàHr ý–j�´\Ü)Ã-/q*3.¹Ýœ”^ž´á°ðȒÂì¹"wî¾Üͧ·ó¯¿ Â�Q¯˜tLòφÙ9V1ylL3ÂS÷c"ÿ1î¡>Ô‘6w_ãÆ´f›§°:!Ã!øóT.ü¤ÇáR¤àB)±=SÀ',�4ıÏоA3¤¢wK.UVd¢† ŒÆM Ûbã£t°áÿ&Õ ]�¯M*¨À迬šŸþ¥ºŒ ³—· žPKÒV1]N¹^éu Bimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Semver.phpUT ëÆ«jëÆ«jux è‡ÕWÝoÛ6×_q*ŠÕ¾Ú±×ÕÉ€E7ÄÁ^£`$*"&SIÙõŠüï;~H¢d%KÚbÀôKäÝï¾~wd.©ò*âóÎá6g2VPÀߊeI¹«JIE,énOŵl˜L`å¶à2Wª’³8~`*¯ï§¨7zK§ð[)@岺(´: ö�+ <…‚%”K´Ê³Rìˆb%� *(Áµ=£­®U?}\]^_[UNˆ„”I%Ø}­h ´�;è¾,k‘P4”Rírœì¨¬.®Š²N?1^½û¸«9ËŽwM(wkå<jùAüæhž0®¼WTO "%X¡à[ø$zÖ¿ßÜ~ùu½‚¼›ׯ®ÍÆøüÞ?©�˜–?ˆÐùÆpôn%Øž( RaÎ8ÛûB‚ùÅ^QEÅŽqLtlO98 � 3F¥[OÚPäÔ©7(ï‘d:çü¡µùÄ®‡3„TÕ‚Ã}YnÍUß#š˜²š'ªçaؘŒzð£l­ 1äšj‹Å$-²Ù¬ŸŸ‰'¬Ÿ1,§‡~òÃɼÕ{ Ú×Å1¼Nó¬垥­‰Ž;á›ÅâM4À»XrÝû›¶ñO&>œK;‰¸C#㉄½üÍ»X\iNA/–Ø�I®‹ÐøïœxyžÌÀK; çØŸ2A�›¯¶¦µÑÖcÑFž¡ÿÛÐô´™¡ßŸq Ÿ (k%qØjâÙÿPKÒV1]ÅÜ;‚uimunify-security/uninstall.phpUT ëÆ«jëÆ«jux è‡m�MKÃ@@Ïî¯OIƒ6÷V�¢ �BµôXÖì¤Ùì®û¡-âwCQ/e/ÃÂ{ó˜»{;ZVƒZ¤!jÒ>¥`Z*t�ï�“­Cïaêa …‹ebflµ‡Ä ä�%8|�è|R!ŒöìÖ&À«1Á'¬EyÞPFH?ËÞb¢f@Ä`æß´>˜äKæ<«ÐÝJ3‰K©~Ž*£r¸‰i”9dû–y~ÙÔ5oëÝSÕd°Hï‹]ᑚ}36W“Cnt�Àùcµå–�•¤ûò7h™.–­ë”‰²&�]5¥’áÔm¬íj°?õ ÿ§Õê/4_¬ÙPK ÒV1]imunify-security/views/UT ëÆ«jëÆ«jux è‡PKÒV1]—)pÅÈè/imunify-security/views/widget-not-installed.phpUT ëÆ«jëÆ«jux 臕RM‹Û0=G¿b*œ u¼PXJ'…J.K¡[r(‹ÑÚcKT–�4N¥ÿ½ã�¤ÐvKв4óÞ¼73ëm«[‘,°7E…ƒG(¹ G�H#ìêΙò¡)é¨<‚ àã)k±X2GOóþ <(ïÕ n E ±n­"„þÖg%B˜æð ,�ÃbÑþÓîáC·ü}³ÂàJü¸¤™� „ó‰qÊ/éXl~; nZÛUÆ}ñ–CÂ×èò=­„Ønĺ0È­ !•fôÌ;oè”eDZ/â˜mÇÛr#f×ðÅyãõù× #†ìÙÚÔŸ§rÝ 0× `ȳÎ[îÉ/ËKˆ˜)$¦V†$hƒ¶ˆy`θj÷xÛ�e)•û1 �k’NåÛ; M¥iø´&,öjÑÜê‚ÜLBY£¦ÚfÈ#~àmi}C˜Ñkˆ~'™¤ý_ÁC`«­xÞÙÏ/íìU*h�e*5QÞ%Éxs·Ì›:aÄ-ì�{6vÞ E¦q‰<ëîˆã·žçãOÃøTfÏV¹oÓ´ÿ4ò‘÷qw)ûÕüT¿’£üéø PKÒV1]E©ÊÎÙ £=!imunify-security/views/widget.phpUT ëÆ«jëÆ«jux è‡ík“Ó8òóäWhsI'°·W{5/–à  8n‡=>,[SJ¬L´ãØ)KNÈü÷ëÖÖmÙqfXîêj¡ ŽÕênu·ú%åäñj±êMîÝë‘{ä=¯˜$kÎ6cøŽ¯~XÓ”Ð4¥[rRIÉ;¶\ET2‚ßjÒëñ9’oHÈæS¯cŪHm±¹H>œGI¾âqöñÃËeóùöÓÕêÃë$dч Ã89´Kè8ñ¹fí—_É¡å²ãÌ×4ÚД½”l‰³—Å×�%9”‰¤‘zžd±Ì§I¿‹dó:IÙ�™”Iœ ™òøªA{&þ¼ºJiØ47Ó£îÔ­„µŠw\F¬aìåLaœôr‰’üÏ©Vã/…½üzÜ;Ì-¢W ZA{æ–‚p®H+pî�‚­Ù…­ )ð²ÔËk* • ‹µÕ íÚjZP.“CwF bð+솻w[Æo¡ËšÌŠ!ÍA¡Ú³Å�Šš®k6rUQ"_^V¡ÖóØûþˆ €mCç®™x°iˆ2¦ü�ÆÒ;Œ¨�¸ñßñ%Cέ5gàT_9ƒ°˜åj8Ê1ûØ<å�3˜OéM&ä§ dÉã˜VÈø¨­qQJãïéü‚Í$oPw1ìѵ;¨eó,¦Óˆ…M‚1ÃTî€Fó:‰¹LÔžö¡)†ë˜Ü1@–ÂúE³²ÔpYWöÕ‘Jöê“­X˜ôàQ/�ÒAoT°à¸AIVi"�à…ù\Òô:[‘áÓgσï¾}øçG£1ù1‘osHt�Ìá4ãQ(ˆ\0òâÝëWdÃå‚p)H²‰ Y� ‘� #l¶H`P%™$) ,ÃÔ%ôS²y!—Q}©>¨òº Ìþ)�¾¥1SdZ©X¨2H!ìsÍ2‘•Íw� 3ågçIJbºæWT ?âñõØzc ª=ò)yxl3ˆòÓmX&TŒÎ$O…~ÒÃ^¬÷O5LpÆKǽƒÏ˜Wd‚‘†0þ‚E+–аÿnùçIº¤R²ô¸Ó¬d–-�œZw§o©\84ŸõNB¾&3pcâ´ÏõŒÌ8K¹Ü^^n”�öÏz'ßyMyLPG$ð]ëÜÂý&÷3XD·cn²f)f¤ ´#l�{× X h'Ø€C²NøòŠˆtvÚ?ÁLZïGØ�—Y�åIȘ (î1áKzÅÄd¯Ü�7:&�Ïú„Fò´ov8]ÃìïP.Nû}Ø' ƯR=[¶'À÷>K�sûg–°Û†¥dL3å wÕdµƒÕ2¨ò7Ь˜iƒXò¹4£{XkÈ$å‘èd°ù¤4Ùv«¸p&䩵ìû[˜@Ùí˜gí-K…Âyh õ§¢ÃZ2pt4W�v~êÖàúLXi@�Ú]~Ì€Û¦•[泃©|Yƒø‚jÆ"꿤æRqw{5—ÐuVs‚«_°0‹šܾê.ó§"æ©äðM‘‚Cz-tޏÃL o0a7QÍÉ/l~^êÀŒœxÖ ±ÇöìØ¦Î³VCÞ†év3ɧIЛ×4MÇŽ%OGíJY'rmK2é`°Ì lÿ&JˆY;äYÜ–)9|:f¢Q¢™æ³ÑþOýŠƒ’Á>÷U£CU§ýÛhÄ rúqr�È”Æ"ÂH#ŽÈ�ðˆÄÙrÊR’Ìspe|÷&=ß>�sÆr>$——^“á�pÔ ½µÖ¬³Ëm*}+ )ºÝ�Š.¢xÒ#AŠÕDeÇ·ý²ö¨«»<Á­lM·Aôé©4zÜ* R.8=ª»w½5ø—5•¼ÿÆòþÉs§5ÑÉXÞ³)�ò<â3í7Ÿó”mhu2™râÁlœ=_³“ßÁoßV©eפ‹]âï뤙Ÿ×CÛ^랎Ùë™ÿÐÉ œNãú†š)5š\1>L&ØVvc îßRÛù'˜ÊRØ€ÓmK šˆÄàôm&“û$Nâ# ‡¾ˆøšLJ‰L(Ê„‘(¹â³±Á¼ÍÄ¿Š¡‚$ï“4|›2!ÆFãgˆ�ý=“«LŽõÇ›Dê·!$�y=U¬ ²²ýmÖ�uEJyVo·[9ÂÇžÕœu?QÀÝTÝ ¨žâd©fµ¥ìÑ ÔÚúTYZbžÆÀrúÅä䢿±Ÿ“BR¾áêËEbš#¹»b-�</ 0P…ð¹Ù¸Â»Q^)�µnê(´P¬éK›¤«hM™Ç7»J‰µ±u ö¿� Ñ0çqG¸_Øq‡·Â²` ¼ß]ÎS:»Î¥œñùÜæ±y[æ×î-Û¦‘\x¬Þ¾™´*(lŠÔ˜!Å`#wÂzâyWÍ¢÷϶m×J¤¨r[õX*F:�‚Ê„t¥ç¶pKŠm\»ÐέuKTÝí€ÃNp�±ó¤•‹†#…ÒQ“mm¼Jâ+(–ª•êUÞât›L» Òb1ÑÛÛ‚-‘Ò=ÑgÁVÏ…8G¼Þ&mñ h¿úÛ®u¥¶ë ›hkù¬ »P ¸˜6}®-°—ç®$�Ss¨ã¥ØØózÊLGˆ gص}R :v²«UÕØÎvÚ»Ýô<�üÂîŒö çŽJù”Ê#±DùtßžØxÕ2AH%DÉ¡±Ö˜+>k9¤Ššyé�›{Uì7ˆ¡EqþGõUH&¤ÓP~LlES[àØ×sinÌ´38¥�ôzJ!õÞ-€P‚@ÄyÈ$‰$_}‘ÒÈÒZˆÛYª½Ùãô:(a õÇ“}¯·ÊS‘ÁúŽº8Z©q5F;&•ՉĚ¾x ­ýHÜÖÊ4wÚráSºÑVÀ´v çÉr{4–·DóÏg·Cp�'Z8㖫ɺ®Se¡ŸÈinK�Œ¶«DÅ‘|͆«—ˆÌ!’sˆïª7ìb)!¨»)Ð$ñ4ÑF4žÃ|ýáž4gÖ@Ú ç`7'´fÕ#qÏ/ ´fx*Uj2ïŽç•¹ÞÛ¡£Ó~œ$+C±ƒåüœ¥)†¤Ö¥¯Y9|;þÎ6P=‹¨- á@…H�@Y í¾²wLûgA93ô9i½?öÕ¥0»¹¢PûåÐŽ«¬�œª ‚fÌÝ@Œœ�’ïÝXÏm) ~µ((|vúÚu:ß݂Β…<[V)Ý]”l\ö¡³®óUùk©2+m5‘.þ/u~_ÚòÈ›ÇßÄnÔ5ÐöÝVqªUoS¸u¿57^‹�‰¹ç‡gŒÉ{§¼ðd[Îh@fÌåÿyû2ɦî£×;›;ü_½ÒêP_iÕûóªºAƒ~Üûz­uOcÝÞËÕà�aÓ|ÝqíB⿘ªõ¢–ïÄN,¤ Buí³+ZÃl»öwš/Nj¿¤p+*‚E°rÂÃ*$¦KXŽ!YTx,“ƒ“~tŒŸ'ðáþýRý•¬”Ôu¢šuWËË7þ:D+¦v@›ö*B›®ªšˆuoìŸrßA³^L¹Aä…�¦z6·uåvËÙt N­|“·E�­ºÓ³‘.M£ÍY”Õ’p¿CЇÅy®£]+ @ #ýzíéë"Ä vÜæ�ö-'´tg‹‰YÊWÒ �K'¿Ñ5Õo�ÖoÿÈXº†Æ‘ŽÆžÂípžÅjßUZ¢~ÏóåÓ,¥æB�þòð¸§œŠ¹·…¿®À€Ûµwp8Œ›Î£1 Ì">S†3vn_À÷œ4Óƒ“YcaÁæüëP™rt¨ñáo †rÁÅh¬¤/d+q;[gáÎd¼÷1 ÿÐ!þ&@u·N-¹ñœÇáPq�ÿ"Á™ Ñ¶O�û†<þ8KEÓç4d‹ƒè”àùhLæ8¯ »Z¼9_cO=tÕãÑd•[jÆË¸4A±ÿÿÿ<ªj\¨Úœ±ýµ›÷Ⱦ¢za¢T®‰ £Œ麢3Cʧ6Gj.K]õVÒs«Öðxµ±ÏzÿPK ÒV1]íAimunify-security/assets/UTëÆ«jux è‡PK ÒV1]íARimunify-security/assets/css/UTëÆ«jux è‡PKÒV1]’>Ìù¾ dI)¤�¨imunify-security/assets/css/admin.min.cssUTëÆ«jux è‡PKÒV1]õ˜LI Í4/¤�Éimunify-security/assets/css/bot-traffic.min.cssUTëÆ«jux è‡PKÒV1]4ãk]à-¤�Qimunify-security/assets/css/admin.min.css.mapUTëÆ«jux è‡PKÒV1]5Tq^•½ 3¤�!imunify-security/assets/css/bot-traffic.min.css.mapUTëÆ«jux è‡PK ÒV1]íA'imunify-security/assets/images/UTëÆ«jux è‡PKÒV1]çøê±Õ· /¤�p'imunify-security/assets/images/shield-check.svgUTëÆ«jux è‡PKÒV1]Ë D/´‡ 1¤�®-imunify-security/assets/images/shield-warning.svgUTëÆ«jux è‡PK ÒV1]%íAÍ4imunify-security/assets/images/icons/UTëÆ«jux è‡PK ÒV1]y�3çöö<¤�,5imunify-security/assets/images/icons/imunify-security@2x.pngUTëÆ«jux è‡PKÒV1]åî>¸ÕO9¤�˜>imunify-security/assets/images/icons/imunify-security.svgUTëÆ«jux è‡PK ÒV1]ÁR†tcc9¤�àAimunify-security/assets/images/icons/imunify-security.pngUTëÆ«jux è‡PK ÒV1]íA¶Fimunify-security/assets/js/UTëÆ«jux è‡PKÒV1]m=ÇDYw'¤� Gimunify-security/assets/js/admin.min.jsUTëÆ«jux è‡PKÒV1]d¼Þ­?,¤�ÅOimunify-security/assets/js/sw-cleanup.min.jsUTëÆ«jux è‡PKÒV1]wv›yc Ž-¤�Øcimunify-security/assets/js/bot-traffic.min.jsUTëÆ«jux è‡PK ÒV1]íA¢nimunify-security/assets/ui-app/UTëÆ«jux è‡PK ÒV1]&íAûnimunify-security/assets/ui-app/assets/UTëÆ«jux è‡PK ÒV1])íA[oimunify-security/assets/ui-app/assets/js/UTëÆ«jux è‡PKÒV1]P¡cî ð2¤�¾oimunify-security/assets/ui-app/assets/js/config.jsUTëÆ«jux è‡PK ÒV1]-íA3qimunify-security/assets/ui-app/assets/static/UTëÆ«jux è‡PKÒV1]¯„0¦ð5¤�šqimunify-security/assets/ui-app/assets/static/index.jsUTëÆ«jux è‡PKÒV1]®Ë‘D˜:¤�ùsimunify-security/assets/ui-app/assets/static/container.cssUTëÆ«jux è‡PK ÒV1]3íA±uimunify-security/assets/ui-app/assets/static/fonts/UTëÆ«jux è‡PK ÒV1]�RKphphU¤�vimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-normal.woff2UTëÆ«jux è‡PKÒV1]ª3΂ÄxÄR¤�ßimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-italic.woff2UTëÆ«jux è‡PKÒV1]SÆ·~tõ`õL¤�+¤imunify-security/assets/ui-app/assets/static/fonts/material-icons-v143.woff2UTëÆ«jux è‡PKÒV1]¾Ë©ƒ&ÁÁY¤�%šimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-ext-normal.woff2UTëÆ«jux è‡PK ÒV1]àíËÖ˜a˜aT¤�Þ[imunify-security/assets/ui-app/assets/static/fonts/opensans-v40-symbols-normal.woff2UTëÆ«jux è‡PKÒV1]“¯_û¼ …<¤�¾imunify-security/assets/ui-app/assets/static/fonts/fonts.cssUTëÆ«jux è‡PKÒV1]äë*vv¼l¼R¤�6Æimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-normal.woff2UTëÆ«jux è‡PKÒV1]†tÛ¯rÖhÖY¤�8ƒimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-ext-italic.woff2UTëÆ«jux è‡PKÒV1]�„Ñ÷>Å4ÅQ¤�=Zimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-math-italic.woff2UTëÆ«jux è‡PKÒV1]áAHz ŠŠV¤� imunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-ext-normal.woff2UTëÆ«jux è‡PK ÒV1]ÆÀ.jÌ}Ì}U¤� ªimunify-security/assets/ui-app/assets/static/fonts/opensans-v40-cyrillic-italic.woff2UTëÆ«jux è‡PKÒV1]••bAJ“@“V¤�û(imunify-security/assets/ui-app/assets/static/fonts/opensans-v40-latin-ext-italic.woff2UTëÆ«jux è‡PK ÒV1]ëE(pepeT¤�Õ¼imunify-security/assets/ui-app/assets/static/fonts/opensans-v40-symbols-italic.woff2UTëÆ«jux è‡PKÒV1]@X* *¸ ¸Q¤�Ó" imunify-security/assets/ui-app/assets/static/fonts/opensans-v40-math-normal.woff2UTëÆ«jux è‡PKÒV1]’£§íK¤�ˆÛ imunify-security/assets/ui-app/assets/static/systemjs-conflict-patch-pre.jsUTëÆ«jux è‡PKÒV1]#Ý™�ƒ3;¤�´Ü imunify-security/assets/ui-app/assets/static/importmap.jsonUTëÆ«jux è‡PK ÒV1]6íA¬â imunify-security/assets/ui-app/assets/static/nav-root/UTëÆ«jux è‡PKÒV1]zÎüª?s¤�ã imunify-security/assets/ui-app/assets/static/nav-root/src_app_empty-route_empty-route_module_ts.ff022345e5e1d835.jsUTëÆ«jux è‡PKÒV1] 7SFéX^^¤�så imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_ru_i18n_txt.fb4a36787b33eec0.jsUTëÆ«jux è‡PKÒV1]ÄZå=y‚ÜJ¤�Ï imunify-security/assets/ui-app/assets/static/nav-root/main.4eae6dfcf8ce.jsUTëÆ«jux è‡PKÒV1]÷/¿Ãá™$p^¤�ÚHimunify-security/assets/ui-app/assets/static/nav-root/src_i18n_pt_i18n_txt.64c45d9e3e142cbf.jsUTëÆ«jux è‡PKÒV1]Œg Û‘†„^¤�Sãimunify-security/assets/ui-app/assets/static/nav-root/src_i18n_en_i18n_txt.ad9412b1a967b1cd.jsUTëÆ«jux è‡PKÒV1]¡QeMâç@¤�|jimunify-security/assets/ui-app/assets/static/nav-root/index.htmlUTëÆ«jux è‡PKÒV1]NíP®Í�͉^¤�Ølimunify-security/assets/ui-app/assets/static/nav-root/src_i18n_fr_i18n_txt.133ef09002826cca.jsUTëÆ«jux è‡PKÒV1]û û?—±. ^¤�= imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_ja_i18n_txt.46c6022645ef08a8.jsUTëÆ«jux è‡PK ÒV1]=íAl½imunify-security/assets/ui-app/assets/static/nav-root/images/UTëÆ«jux è‡PK ÒV1]DíAã½imunify-security/assets/ui-app/assets/static/nav-root/images/common/UTëÆ«jux è‡PKÒV1]< 6ž·W¤�a¾imunify-security/assets/ui-app/assets/static/nav-root/images/common/contact-support.svgUTëÆ«jux è‡PKÒV1](K<ÃáN¤��Àimunify-security/assets/ui-app/assets/static/nav-root/images/common/loader.svgUTëÆ«jux è‡PKÒV1]¹U±ÿ« å_¤�ÛÈimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAVPlus-grey.svgUTëÆ«jux è‡PKÒV1]IÜý. =+V¤�Ôimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-myimunify.svgUTëÆ«jux è‡PKÒV1]B`€ÿ´"T¤�Ýàimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunify.svgUTëÆ«jux è‡PKÒV1]³¦Ä Û1T¤�jñimunify-security/assets/ui-app/assets/static/nav-root/images/common/check-circle.svgUTëÆ«jux è‡PKÒV1] -,‰Å¼N¤�Óòimunify-security/assets/ui-app/assets/static/nav-root/images/common/person.svgUTëÆ«jux è‡PKÒV1]ÛåIM ×)Z¤� õimunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAVPlus.svgUTëÆ«jux è‡PKÒV1]¡ÂÄ’P¤�imunify-security/assets/ui-app/assets/static/nav-root/images/common/ellipsis.svgUTëÆ«jux è‡PKÒV1]¿úS{(ÓK¤�imunify-security/assets/ui-app/assets/static/nav-root/images/common/key.svgUTëÆ«jux è‡PKÒV1]Y -ÁðU¤�Êimunify-security/assets/ui-app/assets/static/nav-root/images/common/configuration.svgUTëÆ«jux è‡PKÒV1]§\ŽnõN¤�imunify-security/assets/ui-app/assets/static/nav-root/images/common/vector.svgUTëÆ«jux è‡PKÒV1]ŒŠ�ob+L¤�¥ imunify-security/assets/ui-app/assets/static/nav-root/images/common/bell.svgUTëÆ«jux è‡PKÒV1]üýE û$V¤�� imunify-security/assets/ui-app/assets/static/nav-root/images/common/logo-imunifyAV.svgUTëÆ«jux è‡PKÒV1]_\¸úÔO¤�bimunify-security/assets/ui-app/assets/static/nav-root/images/common/support.svgUTëÆ«jux è‡PK ÒV1]FíAåimunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/UTëÆ«jux è‡PKÒV1]\ÖD¬Q¤�eimunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/profile.svgUTëÆ«jux è‡PKÒV1]%&(xç ^¤�òimunify-security/assets/ui-app/assets/static/nav-root/images/nav-root/events-notifications.svgUTëÆ«jux è‡PKÒV1]S ;æ!�×o^¤� imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_de_i18n_txt.6f50bd410c80fbc7.jsUTëÆ«jux è‡PKÒV1]‘ÿª÷˜õV^¤�»½imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_nl_i18n_txt.ef65283776aeaffe.jsUTëÆ«jux è‡PKÒV1]TóødûÇMJ¤�JWimunify-security/assets/ui-app/assets/static/nav-root/3rdpartylicenses.txtUTëÆ«jux è‡PKÒV1]ˆ„²5`�н^¤�Ékimunify-security/assets/ui-app/assets/static/nav-root/src_i18n_tr_i18n_txt.f491631103c32956.jsUTëÆ«jux è‡PKÒV1]Ä"’Fí C¤�Á imunify-security/assets/ui-app/assets/static/nav-root/manifest.jsonUTëÆ«jux è‡PKÒV1]¼˜pß–Z^^¤�„ imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_it_i18n_txt.71f131973ef0b990.jsUTëÆ«jux è‡PKÒV1]d™ÇK™Úu^¤�û£imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_es_i18n_txt.c7495bda2f1db494.jsUTëÆ«jux è‡PKÒV1]?¾4Ÿéða¤�°=imunify-security/assets/ui-app/assets/static/nav-root/src_i18n_zh-cn_i18n_txt.7b61c92cfa54d74f.jsUTëÆ«jux è‡PK ÒV1]AíAgÝimunify-security/assets/ui-app/assets/static/shared-dependencies/UTëÆ«jux è‡PKÒV1]ÏÍÕL-F^¤�âÝimunify-security/assets/ui-app/assets/static/shared-dependencies/snack-bar.min.7dba8278fcaa.jsUTëÆ«jux è‡PKÒV1]?zó‰šfg¤�Æòimunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-angular.min.bdb623fff3fc.jsUTëÆ«jux è‡PKÒV1]zo�3f[ë×_¤�ùimunify-security/assets/ui-app/assets/static/shared-dependencies/datepicker.min.c926943f5449.jsUTëÆ«jux è‡PKÒV1]¸_ût É3e¤�Uimunify-security/assets/ui-app/assets/static/shared-dependencies/progress-spinner.min.f33726165c0f.jsUTëÆ«jux è‡PKÒV1]%l�O([¤�aimunify-security/assets/ui-app/assets/static/shared-dependencies/common.min.f4e51f6198f8.jsUTëÆ«jux è‡PKÒV1]á‡`"½2Y¤�E±imunify-security/assets/ui-app/assets/static/shared-dependencies/tabs.min.aa00260496ec.jsUTëÆ«jux è‡PKÒV1]#+Ð.¤K¤�•äimunify-security/assets/ui-app/assets/static/shared-dependencies/amd.min.jsUTëÆ«jux è‡PKÒV1]  úËcY¤�¾çimunify-security/assets/ui-app/assets/static/shared-dependencies/http.min.12f2ce67c679.jsUTëÆ«jux è‡PKÒV1]Ö†´$k…b¤�Kimunify-security/assets/ui-app/assets/static/shared-dependencies/material-core.min.f38751e883b7.jsUTëÆ«jux è‡PKÒV1]®`} ±0Y¤�›,imunify-security/assets/ui-app/assets/static/shared-dependencies/card.min.184ca3e28bfb.jsUTëÆ«jux è‡PKÒV1]ÃrõHÝ™:^¤�L7imunify-security/assets/ui-app/assets/static/shared-dependencies/paginator.min.9eccb30bf204.jsUTëÆ«jux è‡PKÒV1]“zm:[É ^¤�ÁFimunify-security/assets/ui-app/assets/static/shared-dependencies/observers.min.6ca1c95412da.jsUTëÆ«jux è‡PKÒV1]©ÈËð"¯Y¤�´Kimunify-security/assets/ui-app/assets/static/shared-dependencies/a11y.min.ce689e492df7.jsUTëÆ«jux è‡PKÒV1]šP2þñÃW\¤�]nimunify-security/assets/ui-app/assets/static/shared-dependencies/tooltip.min.da561be58fbc.jsUTëÆ«jux è‡PKÒV1]ZJgçÁ]¤�ä‡imunify-security/assets/ui-app/assets/static/shared-dependencies/platform.min.61901f70edd7.jsUTëÆ«jux è‡PKÒV1]Ï„ßÐm¥`¤�”Žimunify-security/assets/ui-app/assets/static/shared-dependencies/collections.min.14a09bd08bab.jsUTëÆ«jux è‡PKÒV1]ép„È£Z¤�›•imunify-security/assets/ui-app/assets/static/shared-dependencies/chart.min.f5b7ba1a5f51.jsUTëÆ«jux è‡PKÒV1]ïu×J"[¤�Ò˜imunify-security/assets/ui-app/assets/static/shared-dependencies/portal.min.2a05df026609.jsUTëÆ«jux è‡PKÒV1]$•zía Ø!a¤�± imunify-security/assets/ui-app/assets/static/shared-dependencies/bottom-sheet.min.a7038420e2d6.jsUTëÆ«jux è‡PKÒV1]Ãé»¶dé[¤�­¬imunify-security/assets/ui-app/assets/static/shared-dependencies/button.min.5f0179a517c9.jsUTëÆ«jux è‡PKÒV1]ÒEª²�%·[¤�¦Êimunify-security/assets/ui-app/assets/static/shared-dependencies/slider.min.3675ed49c537.jsUTëÆ«jux è‡PKÒV1]ã×Ã�Ñ‘<b¤�Èðimunify-security/assets/ui-app/assets/static/shared-dependencies/button-toggle.min.8dfec20549f5.jsUTëÆ«jux è‡PKÒV1]°5äoå5Y¤�5imunify-security/assets/ui-app/assets/static/shared-dependencies/icon.min.2f75492e841b.jsUTëÆ«jux è‡PKÒV1]N5D#7¹³e¤�Èimunify-security/assets/ui-app/assets/static/shared-dependencies/platform-browser.min.89420d4c46ff.jsUTëÆ«jux è‡PKÒV1]¢ SM�¬P¤�ŠJimunify-security/assets/ui-app/assets/static/shared-dependencies/zone-testing.jsUTëÆ«jux è‡PKÒV1]kŽ@ÉV1‘IZ¤�˜imunify-security/assets/ui-app/assets/static/shared-dependencies/chips.min.5c60e889dcb4.jsUTëÆ«jux è‡PKÒV1]¦ßlk„¦U¤�Êimunify-security/assets/ui-app/assets/static/shared-dependencies/named-exports.min.jsUTëÆ«jux è‡PKÒV1]*:ÿdR.ÜŒL¤�Ìimunify-security/assets/ui-app/assets/static/shared-dependencies/zone.min.jsUTëÆ«jux è‡PKÒV1]c·{¢ÇïV¤�ëúimunify-security/assets/ui-app/assets/static/shared-dependencies/named-register.min.jsUTëÆ«jux è‡PKÒV1]rÔ²#æF)\Y¤�Býimunify-security/assets/ui-app/assets/static/shared-dependencies/list.min.a8dc60a33fb5.jsUTëÆ«jux è‡PKÒV1]œÊ´'V N:a¤�»Dimunify-security/assets/ui-app/assets/static/shared-dependencies/progress-bar.min.ccc5df63f89c.jsUTëÆ«jux è‡PKÒV1]Óú—^-~-_¤�¬Rimunify-security/assets/ui-app/assets/static/shared-dependencies/form-field.min.8296e3449a30.jsUTëÆ«jux è‡PKÒV1]O®>÷L£._¤�£€imunify-security/assets/ui-app/assets/static/shared-dependencies/cdk-dialog.min.c05ce39af4a7.jsUTëÆ«jux è‡PKÒV1])B à‰ò]a¤�ˆ�imunify-security/assets/ui-app/assets/static/shared-dependencies/autocomplete.min.fe6c6c0a1f38.jsUTëÆ«jux è‡PKÒV1]�g¨QƒP_¤�¬¬imunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa.min.1ef7e0b9902d.jsUTëÆ«jux è‡PKÒV1]·mܰ:Ff¤�–Æimunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-layout.min.5bf6d9cda318.jsUTëÆ«jux è‡PKÒV1]|ň\ båW]¤�æÝimunify-security/assets/ui-app/assets/static/shared-dependencies/rxjs.umd.min.67c4c1e73767.jsUTëÆ«jux è‡PKÒV1]§ÿ(‡ Û3^¤�Š@imunify-security/assets/ui-app/assets/static/shared-dependencies/grid-list.min.59600b43bfe3.jsUTëÆ«jux è‡PKÒV1]›;êl}Î^a¤�©Mimunify-security/assets/ui-app/assets/static/shared-dependencies/slide-toggle.min.0bb5fd380b32.jsUTëÆ«jux è‡PKÒV1]m¡ç•ÛY¤�Áaimunify-security/assets/ui-app/assets/static/shared-dependencies/bidi.min.bbba85baa284.jsUTëÆ«jux è‡PKÒV1]ß²”ÐËé\¤�éeimunify-security/assets/ui-app/assets/static/shared-dependencies/divider.min.0b5784315aab.jsUTëÆ«jux è‡PKÒV1]+·võ’òf¤�Jiimunify-security/assets/ui-app/assets/static/shared-dependencies/observers-private.min.a9758369de9b.jsUTëÆ«jux è‡PKÒV1]—¨;u×]¤�|limunify-security/assets/ui-app/assets/static/shared-dependencies/coercion.min.013a86266a88.jsUTëÆ«jux è‡PKÒV1]ˆi²†W±[Z¤�ˆnimunify-security/assets/ui-app/assets/static/shared-dependencies/radio.min.3fc7f593c694.jsUTëÆ«jux è‡PKÒV1]9644åÞ m¤�s‚imunify-security/assets/ui-app/assets/static/shared-dependencies/platform-browser-dynamic.min.420eb84ff6c5.jsUTëÆ«jux è‡PKÒV1]…®ÕùS_¤�ÿ‡imunify-security/assets/ui-app/assets/static/shared-dependencies/text-field.min.78b6cd7a8ef8.jsUTëÆ«jux è‡PKÒV1]³ó&W2`Y¤�‘‘imunify-security/assets/ui-app/assets/static/shared-dependencies/tree.min.72617c4ee9b2.jsUTëÆ«jux è‡PKÒV1]ä@sê©-žèZ¤�Všimunify-security/assets/ui-app/assets/static/shared-dependencies/forms.min.c5b9dc689dbc.jsUTëÆ«jux è‡PKÒV1]uÅL¨?}]¤�“Èimunify-security/assets/ui-app/assets/static/shared-dependencies/long-stack-trace-zone.min.jsUTëÆ«jux è‡PKÒV1]Ž¿×w”¾gd¤�iÍimunify-security/assets/ui-app/assets/static/shared-dependencies/material-dialog.min.d78408ea8fe2.jsUTëÆ«jux è‡PKÒV1]&*`< )¦©\¤�›çimunify-security/assets/ui-app/assets/static/shared-dependencies/overlay.min.ff04e5e40e8c.jsUTëÆ«jux è‡PKÒV1]¢ÓúÃfo[¤�;imunify-security/assets/ui-app/assets/static/shared-dependencies/select.min.4eb32d6c484a.jsUTëÆ«jux è‡PKÒV1]£õß‹aAè\¤�“1imunify-security/assets/ui-app/assets/static/shared-dependencies/browser.min.74a4f8e10ca4.jsUTëÆ«jux è‡PKÒV1]—ÕI ý¨:L¤�Šsimunify-security/assets/ui-app/assets/static/shared-dependencies/minified.jsUTëÆ«jux è‡PKÒV1]ɧ|Q£Íhp¤� zimunify-security/assets/ui-app/assets/static/shared-dependencies/platform-browser-animations.min.30c1ceeadaae.jsUTëÆ«jux è‡PKÒV1]ÅŸ‹j>6Y¤�Zšimunify-security/assets/ui-app/assets/static/shared-dependencies/sort.min.bd840d67decc.jsUTëÆ«jux è‡PKÒV1]GBŒº\¤�Wªimunify-security/assets/ui-app/assets/static/shared-dependencies/toolbar.min.45ee94c67f00.jsUTëÆ«jux è‡PKÒV1]éf™2ŽMÄ]¤�§°imunify-security/assets/ui-app/assets/static/shared-dependencies/compiler.min.11d72842cbc8.jsUTëÆ«jux è‡PKÒV1]Á:¢ÖfÇ/N¤�p? imunify-security/assets/ui-app/assets/static/shared-dependencies/system.min.jsUTëÆ«jux è‡PKÒV1]ÚmÐq“e^¤�^R imunify-security/assets/ui-app/assets/static/shared-dependencies/scrolling.min.e0e5145224b1.jsUTëÆ«jux è‡PKÒV1]Ƥ�02q¤�‰l imunify-security/assets/ui-app/assets/static/shared-dependencies/single-spa-angular-internals.min.54102a2f063e.jsUTëÆ«jux è‡PKÒV1]õ¨l É3Y¤�dn imunify-security/assets/ui-app/assets/static/shared-dependencies/core.min.a5597cfc37d1.jsUTëÆ«jux è‡PKÒV1])B¦Ë húz[¤�cy!imunify-security/assets/ui-app/assets/static/shared-dependencies/router.min.2a288de38537.jsUTëÆ«jux è‡PKÒV1]""ý}‰]¤�â!imunify-security/assets/ui-app/assets/static/shared-dependencies/material.min.fc80fa0defcb.jsUTëÆ«jux è‡PKÒV1]{ ×�ÌjY¤�ã!imunify-security/assets/ui-app/assets/static/shared-dependencies/menu.min.9b6d2f246065.jsUTëÆ«jux è‡PKÒV1]>=|D‹£X¤�9"imunify-security/assets/ui-app/assets/static/shared-dependencies/cdk.min.ec26af3b5158.jsUTëÆ«jux è‡PKÒV1] Ÿ5\SÕ[¤�V"imunify-security/assets/ui-app/assets/static/shared-dependencies/layout.min.ee2b6ecf34bc.jsUTëÆ«jux è‡PKÒV1]¶B~~e ^¤�> "imunify-security/assets/ui-app/assets/static/shared-dependencies/accordion.min.265d3d09c637.jsUTëÆ«jux è‡PKÒV1]Y‰.ã¢]¤�T"imunify-security/assets/ui-app/assets/static/shared-dependencies/keycodes.min.80231c429683.jsUTëÆ«jux è‡PKÒV1]—UFWšéZ¤��"imunify-security/assets/ui-app/assets/static/shared-dependencies/badge.min.57bae3a9c91a.jsUTëÆ«jux è‡PKÒV1]Åt¬§o Z¤�»"imunify-security/assets/ui-app/assets/static/shared-dependencies/input.min.0847ebe85fe0.jsUTëÆ«jux è‡PKÒV1]…òá´IÔ_¤�¾#"imunify-security/assets/ui-app/assets/static/shared-dependencies/animations.min.c341a49c52d9.jsUTëÆ«jux è‡PKÒV1] xèYS²�]¤� ("imunify-security/assets/ui-app/assets/static/shared-dependencies/checkbox.min.70e4785f3a16.jsUTëÆ«jux è‡PKÒV1],[µ—ÈJL¤�Š@"imunify-security/assets/ui-app/assets/static/systemjs-conflict-patch-post.jsUTëÆ«jux è‡PKÒV1]Ïš¿0 G¤�ØC"imunify-security/assets/ui-app/assets/static/load-scripts-after-zone.jsUTëÆ«jux è‡PK ÒV1]8íAH"imunify-security/assets/ui-app/assets/static/other-root/UTëÆ«jux è‡PKÒV1] ˆP.D†n¤�ŠH"imunify-security/assets/ui-app/assets/static/other-root/src_app_components_av_av_module_ts.41b373dc9d127c19.jsUTëÆ«jux è‡PKÒV1]èèë°Ju¤�Qw$imunify-security/assets/ui-app/assets/static/other-root/src_app_empty-route_empty-route_module_ts.7c5c8753898cc482.jsUTëÆ«jux è‡PKÒV1]¿ÁÎ�Õ‰`¤�°y$imunify-security/assets/ui-app/assets/static/other-root/src_i18n_fr_i18n_txt.4008bbaa6bef4e03.jsUTëÆ«jux è‡PKÒV1]Y4}cš±6 `¤�%imunify-security/assets/ui-app/assets/static/other-root/src_i18n_ja_i18n_txt.c93ae4a618ec15b4.jsUTëÆ«jux è‡PKÒV1]HÊ)´h…¤�LÊ%imunify-security/assets/ui-app/assets/static/other-root/src_app_components_reputation_reputation_module_ts-_9ddf1.fe077c6faac9ebb7.jsUTëÆ«jux è‡PKÒV1](Q¢zc]ìÛ|¤� à%imunify-security/assets/ui-app/assets/static/other-root/src_app_components_dashboard_dashboard_module_ts.52c0c93047e50e9e.jsUTëÆ«jux è‡PKÒV1]»Tt)ç™,p`¤�$>&imunify-security/assets/ui-app/assets/static/other-root/src_i18n_pt_i18n_txt.6c7e16418072c060.jsUTëÆ«jux è‡PKÒV1]„_G€Y­» y¤�¥Ø&imunify-security/assets/ui-app/assets/static/other-root/src_app_components_dashboard_maps_topojson_ts.8266946db05c564b.jsUTëÆ«jux è‡PKÒV1]™e2i"Ÿ•°¤�±†'imunify-security/assets/ui-app/assets/static/other-root/src_app_components_text-input_text-input_component_ts-src_app_components_text-input_text-inpu-b63fbf.8ee8babab6c636a9.jsUTëÆ«jux è‡PKÒV1]¡QeMâçB¤�ª'imunify-security/assets/ui-app/assets/static/other-root/index.htmlUTëÆ«jux è‡PKÒV1]]4%�Þo`¤�b¬'imunify-security/assets/ui-app/assets/static/other-root/src_i18n_de_i18n_txt.3c6f788b48a0649d.jsUTëÆ«jux è‡PKÒV1]-�d3>i¤�!J(imunify-security/assets/ui-app/assets/static/other-root/src_app_core_shared_module_ts.084c4abe8088cdc9.jsUTëÆ«jux è‡PKÒV1]¡V¯Ÿñðc¤�([(imunify-security/assets/ui-app/assets/static/other-root/src_i18n_zh-cn_i18n_txt.5f2b5aa1fac2e0ee.jsUTëÆ«jux è‡PKÒV1]WÅèë: v*t¤�ãú(imunify-security/assets/ui-app/assets/static/other-root/src_app_components_login_login_module_ts.643d9a9f53d690dd.jsUTëÆ«jux è‡PKÒV1]uc¦îb<°¤�Ë)imunify-security/assets/ui-app/assets/static/other-root/src_app_components_showcase_showcase_module_ts-node_modules_dayjs_plugin_duration_js-node_mod-18c606.717c1cdeba8142ff.jsUTëÆ«jux è‡PK ÒV1]?íA·)imunify-security/assets/ui-app/assets/static/other-root/images/UTëÆ«jux è‡PK ÒV1]FíA0)imunify-security/assets/ui-app/assets/static/other-root/images/common/UTëÆ«jux è‡PKÒV1]< 6ž·Y¤�°)imunify-security/assets/ui-app/assets/static/other-root/images/common/contact-support.svgUTëÆ«jux è‡PKÒV1](K<ÃáP¤�á)imunify-security/assets/ui-app/assets/static/other-root/images/common/loader.svgUTëÆ«jux è‡PKÒV1]¹U±ÿ« åa¤�.&)imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAVPlus-grey.svgUTëÆ«jux è‡PKÒV1]IÜý. =+X¤�t1)imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-myimunify.svgUTëÆ«jux è‡PKÒV1]B`€ÿ´"V¤�4>)imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunify.svgUTëÆ«jux è‡PKÒV1]³¦Ä Û1V¤�ÃN)imunify-security/assets/ui-app/assets/static/other-root/images/common/check-circle.svgUTëÆ«jux è‡PKÒV1] -,‰Å¼P¤�.P)imunify-security/assets/ui-app/assets/static/other-root/images/common/person.svgUTëÆ«jux è‡PKÒV1]ÛåIM ×)\¤�}R)imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAVPlus.svgUTëÆ«jux è‡PKÒV1]¡ÂÄ’R¤�`_)imunify-security/assets/ui-app/assets/static/other-root/images/common/ellipsis.svgUTëÆ«jux è‡PKÒV1]¿úS{(ÓM¤�~`)imunify-security/assets/ui-app/assets/static/other-root/images/common/key.svgUTëÆ«jux è‡PKÒV1]Y -ÁðW¤�-b)imunify-security/assets/ui-app/assets/static/other-root/images/common/configuration.svgUTëÆ«jux è‡PKÒV1]§\ŽnõP¤�e)imunify-security/assets/ui-app/assets/static/other-root/images/common/vector.svgUTëÆ«jux è‡PKÒV1]ŒŠ�ob+N¤� g)imunify-security/assets/ui-app/assets/static/other-root/images/common/bell.svgUTëÆ«jux è‡PKÒV1]üýE û$X¤�öh)imunify-security/assets/ui-app/assets/static/other-root/images/common/logo-imunifyAV.svgUTëÆ«jux è‡PKÒV1]_\¸úÔQ¤�Ís)imunify-security/assets/ui-app/assets/static/other-root/images/common/support.svgUTëÆ«jux è‡PK ÒV1]JíARw)imunify-security/assets/ui-app/assets/static/other-root/images/other-root/UTëÆ«jux è‡PKÒV1]»íe;8(æfT¤�Öw)imunify-security/assets/ui-app/assets/static/other-root/images/other-root/rocket.svgUTëÆ«jux è‡PKÒV1]%…ð™[¤�œ )imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-question.svgUTëÆ«jux è‡PKÒV1]bŸ×|›¼ X¤�B¢)imunify-security/assets/ui-app/assets/static/other-root/images/other-root/ignore-all.svgUTëÆ«jux è‡PKÒV1]UU¤+•ê e¤�o§)imunify-security/assets/ui-app/assets/static/other-root/images/other-root/new-features-management.svgUTëÆ«jux è‡PKÒV1]dèáû—Q¤�£ª)imunify-security/assets/ui-app/assets/static/other-root/images/other-root/dmc.svgUTëÆ«jux è‡PKÒV1]�ü+ŠHÔR¤�)Å*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/chip.svgUTëÆ«jux è‡PKÒV1]#$Z¢¤ßR¤�ýÇ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/done.svgUTëÆ«jux è‡PKÒV1]�<{ ÝúT¤�-É*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/add-ip.svgUTëÆ«jux è‡PKÒV1]h�­)õY¤�˜Ì*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/full-access.svgUTëÆ«jux è‡PKÒV1]àhâ÷£W¤�TÎ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/read-more.svgUTëÆ«jux è‡PKÒV1]ˆÛ¼kn^¤�ÜÏ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-exclamation.svgUTëÆ«jux è‡PKÒV1]6ýß;W R¤�ßÑ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/fish.svgUTëÆ«jux è‡PKÒV1]Ѩ@´Ê#V¤�ÂÓ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-key.svgUTëÆ«jux è‡PKÒV1]Ë* ÿµõW¤�Õ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-info.svgUTëÆ«jux è‡PKÒV1]WÃkÚ>Se¤�bÖ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/dashboard-no-data-found.svgUTëÆ«jux è‡PKÒV1]êýL'ˆ±T¤�?Ø*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/update.svgUTëÆ«jux è‡PKÒV1]¥óÐ \¤�UÚ*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/shield-malware.svgUTëÆ«jux è‡PKÒV1]ÃFQÔã®`¤�»à*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/undraw-server-down.svgUTëÆ«jux è‡PKÒV1]!‘kÔþºg¤�8ä*imunify-security/assets/ui-app/assets/static/other-root/images/other-root/license-extension-preview.pngUTëÆ«jux è‡PKÒV1]Bm6…¸qS¤�­ã+imunify-security/assets/ui-app/assets/static/other-root/images/other-root/broom.svgUTëÆ«jux è‡PKÒV1]öÁÃ|£e’p_¤�òç+imunify-security/assets/ui-app/assets/static/other-root/images/other-root/dashboard-preview.pngUTëÆ«jux è‡PKÒV1]·Vó�T*UQ¤�.N.imunify-security/assets/ui-app/assets/static/other-root/images/other-root/dog.pngUTëÆ«jux è‡PKÒV1]Aç�P S¤�F£.imunify-security/assets/ui-app/assets/static/other-root/images/other-root/clock.svgUTëÆ«jux è‡PKÒV1]ï”qµ¾S¤�#¨.imunify-security/assets/ui-app/assets/static/other-root/images/other-root/atoms.svgUTëÆ«jux è‡PKÒV1]µÞ‹ö‚dS¤�e°.imunify-security/assets/ui-app/assets/static/other-root/images/other-root/shark.svgUTëÆ«jux è‡PKÒV1]Âh€ tÂ$_¤�t³.imunify-security/assets/ui-app/assets/static/other-root/images/other-root/proactive-preview.pngUTëÆ«jux è‡PKÒV1]»ú¾?„�V¤��Ç/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/aquarium.svgUTëÆ«jux è‡PKÒV1]váH–Ça¤�•Ê/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-bell-in-circle.svgUTëÆ«jux è‡PKÒV1]}*j&ngW¤�ÆÍ/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/logo-grey.svgUTëÆ«jux è‡PKÒV1]D±ƒÙÍ]¤�ÅÒ/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/analyst-cleanup.svgUTëÆ«jux è‡PKÒV1]X~$2«iU¤�5×/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/storage.svgUTëÆ«jux è‡PKÒV1]j’ÀùHiY¤�oÛ/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/icon-delete.svgUTëÆ«jux è‡PKÒV1]j°Vô½VÏe¤�JÞ/imunify-security/assets/ui-app/assets/static/other-root/images/other-root/malware-scanner-preview.pngUTëÆ«jux è‡PK ÒV1]PíAÝœ0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UTëÆ«jux è‡PK ÒV1]L•°Gõ õ V¤�g�0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NF.pngUTëÆ«jux è‡PK ÒV1]û˸ÃË Ë V¤�ì©0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SJ.pngUTëÆ«jux è‡PK ÒV1]¾|šÃÐ Ð V¤�G¶0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SC.pngUTëÆ«jux è‡PK ÒV1]jí×ä ä V¤�§Ã0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AI.pngUTëÆ«jux è‡PK ÒV1]8`½  V¤�Ñ0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BD.pngUTëÆ«jux è‡PK ÒV1]jˆ¿V  V¤�¯Ý0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SM.pngUTëÆ«jux è‡PK ÒV1] ÔŸUä ä V¤�[é0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VG.pngUTëÆ«jux è‡PK ÒV1]HøS>é é c¤�Ïö0imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/Cyprus_Northern.pngUTëÆ«jux è‡PK ÒV1]t¡.]Ó Ó V¤�U1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SO.pngUTëÆ«jux è‡PK ÒV1]ÕÖõ° ° V¤�¸1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ZM.pngUTëÆ«jux è‡PK ÒV1],Š£ V¤�ø1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LC.pngUTëÆ«jux è‡PKÒV1]¹ž.XfgV¤�”(1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IO.pngUTëÆ«jux è‡PK ÒV1]äÞ¦øk k V¤�Š-1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AE.pngUTëÆ«jux è‡PK ÒV1]ÙhT�ž ž V¤�…91imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TZ.pngUTëÆ«jux è‡PK ÒV1]G&Â1 1 V¤�³F1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MG.pngUTëÆ«jux è‡PKÒV1]B»•,V¤�tR1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MP.pngUTëÆ«jux è‡PK ÒV1]³Š© V¤� U1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MF.pngUTëÆ«jux è‡PK ÒV1]jf®ü¬ ¬ V¤�¦`1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VN.pngUTëÆ«jux è‡PK ÒV1]Ç}3Ñ Ñ V¤�âl1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LA.pngUTëÆ«jux è‡PK ÒV1]u°Þ( ( V¤�Cy1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GL.pngUTëÆ«jux è‡PK ÒV1]=þ-ù ù V¤�û…1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TR.pngUTëÆ«jux è‡PK ÒV1]Gîîd  V¤�„’1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CU.pngUTëÆ«jux è‡PK ÒV1]Pvd   V¤�Ÿ1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TM.pngUTëÆ«jux è‡PK ÒV1]oŸXîÑ Ñ V¤�¼«1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MD.pngUTëÆ«jux è‡PKÒV1] ãɵ¼V¤�¸1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CW.pngUTëÆ«jux è‡PKÒV1]v…a•$DV¤�b¹1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JE.pngUTëÆ«jux è‡PK ÒV1] R~ÌÜ Ü V¤�¼1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NZ.pngUTëÆ«jux è‡PK ÒV1]2‡V5 5 V¤�‚É1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BQ.pngUTëÆ«jux è‡PK ÒV1]Søž= = V¤�GÕ1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LT.pngUTëÆ«jux è‡PK ÒV1]irðl l V¤�á1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/WF.pngUTëÆ«jux è‡PK ÒV1]®ÓNKç ç V¤�î1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PF.pngUTëÆ«jux è‡PK ÒV1]’ užT T V¤�‡ú1imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PM.pngUTëÆ«jux è‡PK ÒV1]…‘ëê® ® V¤�k2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KR.pngUTëÆ«jux è‡PK ÒV1]OïÅ=œ œ V¤�©2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CN.pngUTëÆ«jux è‡PKÒV1]¡»-í¼½V¤�Õ!2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PS.pngUTëÆ«jux è‡PK ÒV1]já`, , V¤�!#2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TV.pngUTëÆ«jux è‡PK ÒV1]¸Ù•ôâ â V¤�Ý02imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AZ.pngUTëÆ«jux è‡PK ÒV1]Œh“% % V¤�O=2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CD.pngUTëÆ«jux è‡PK ÒV1]^Oªó ó V¤�J2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CX.pngUTëÆ«jux è‡PK ÒV1]ÀQ_£9 9 V¤�‡W2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CV.pngUTëÆ«jux è‡PK ÒV1]-<     V¤�Pd2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GH.pngUTëÆ«jux è‡PK ÒV1]€òÿ) ) V¤�€p2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EE.pngUTëÆ«jux è‡PK ÒV1]0¶éû û V¤�9|2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GU.pngUTëÆ«jux è‡PK ÒV1]!tBJ§ § V¤�Ĉ2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SE.pngUTëÆ«jux è‡PK ÒV1]­ú²i¢ ¢ Y¤�û”2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/Tibet.pngUTëÆ«jux è‡PK ÒV1]©Ø¥#ó ó V¤�0£2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TN.pngUTëÆ«jux è‡PK ÒV1]îóŸÖ Ö V¤�³¯2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IQ.pngUTëÆ«jux è‡PK ÒV1]RWˆ°¿ ¿ V¤�¼2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MM.pngUTëÆ«jux è‡PK ÒV1]>ÃÚ  V¤�hÈ2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BG.pngUTëÆ«jux è‡PK ÒV1]ݱ'Õ( ( V¤�Ô2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MY.pngUTëÆ«jux è‡PK ÒV1]EÉì·) ) V¤�Îà2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DE.pngUTëÆ«jux è‡PK ÒV1]V|â½ ½ V¤�‡ì2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BN.pngUTëÆ«jux è‡PKÒV1]>õImjœV¤�Ôù2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TK.pngUTëÆ«jux è‡PK ÒV1]¸sb××V¤�Îû2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BL.pngUTëÆ«jux è‡PK ÒV1]À«à6C C V¤�5þ2imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BI.pngUTëÆ«jux è‡PK ÒV1])ž€”€ € V¤� 3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MA.pngUTëÆ«jux è‡PK ÒV1]LEÂ%  V¤�3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RO.pngUTëÆ«jux è‡PK ÒV1]»¹£ñ5 5 V¤�Æ#3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CS.pngUTëÆ«jux è‡PK ÒV1]j�NÞ� � V¤�‹/3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GI.pngUTëÆ«jux è‡PK ÒV1]Ē؛ŠŠV¤�¸;3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IR.pngUTëÆ«jux è‡PK ÒV1]˜âìÚÈ È V¤� H3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UG.pngUTëÆ«jux è‡PK ÒV1]ú)ü´ü ü V¤�eT3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FK.pngUTëÆ«jux è‡PK ÒV1]ÐôÔ Ô V¤�ña3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SD.pngUTëÆ«jux è‡PKÒV1]#™–âabV¤�Un3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CC.pngUTëÆ«jux è‡PK ÒV1]Ì[tî‘ ‘ V¤�Fp3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PG.pngUTëÆ«jux è‡PK ÒV1]�££œ· · V¤�g}3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CY.pngUTëÆ«jux è‡PK ÒV1]Î(à Î Î V¤�®‰3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/OM.pngUTëÆ«jux è‡PK ÒV1]oÕ[e  V¤� –3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PW.pngUTëÆ«jux è‡PK ÒV1]«ÏûqÓ Ó V¤�¶¢3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MX.pngUTëÆ«jux è‡PK ÒV1]²–ך š V¤�¯3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IN.pngUTëÆ«jux è‡PK ÒV1]¾—îÂ2 2 V¤�C»3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AU.pngUTëÆ«jux è‡PK ÒV1]ÙÞ�' ' V¤�É3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MU.pngUTëÆ«jux è‡PK ÒV1]âƒûú  V¤�¼Ô3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GE.pngUTëÆ«jux è‡PK ÒV1]�Í'Xþ þ V¤�â3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AD.pngUTëÆ«jux è‡PK ÒV1]{* I³ ³ V¤�œî3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LK.pngUTëÆ«jux è‡PK ÒV1]í�Ò ù ù V¤�ßû3imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AN.pngUTëÆ«jux è‡PK ÒV1]ôe’;G G V¤�h4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SA.pngUTëÆ«jux è‡PK ÒV1]Ô´›Ð˜ ˜ V¤�?4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BT.pngUTëÆ«jux è‡PKÒV1]°Ò—Â4VV¤�g"4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SS.pngUTëÆ«jux è‡PK ÒV1]6‚�çD D V¤�+%4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BA.pngUTëÆ«jux è‡PK ÒV1]©˜MC  V¤�ÿ14imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HR.pngUTëÆ«jux è‡PK ÒV1]ÂqßÖ€ € V¤��>4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FI.pngUTëÆ«jux è‡PK ÒV1]Ù8„8î î V¤�­J4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KP.pngUTëÆ«jux è‡PK ÒV1]åY‰`× × V¤�+W4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KN.pngUTëÆ«jux è‡PK ÒV1]K/Ë› › V¤�’d4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TO.pngUTëÆ«jux è‡PK ÒV1]!€@Òo o V¤�½p4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DK.pngUTëÆ«jux è‡PK ÒV1]Ù–m Ê Ê V¤�¼|4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BS.pngUTëÆ«jux è‡PK ÒV1]åÂêaÛ Û V¤�‰4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BM.pngUTëÆ«jux è‡PK ÒV1]Ç��Ÿ Ÿ V¤��–4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MN.pngUTëÆ«jux è‡PK ÒV1]üŠLº  V¤�°¢4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CA.pngUTëÆ«jux è‡PK ÒV1]ùíõIÄ Ä V¤�D¯4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ER.pngUTëÆ«jux è‡PK ÒV1][ì@X± ± V¤�˜¼4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FO.pngUTëÆ«jux è‡PK ÒV1]oŠv * * V¤�ÙÈ4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NU.pngUTëÆ«jux è‡PK ÒV1]¥Õw9– – V¤�“Õ4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LR.pngUTëÆ«jux è‡PK ÒV1]r��ì ì V¤�¹á4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VI.pngUTëÆ«jux è‡PK ÒV1]JžŒ�¡ ¡ V¤�5ï4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BY.pngUTëÆ«jux è‡PK ÒV1] ý< < V¤�fû4imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NA.pngUTëÆ«jux è‡PK ÒV1]�p[À À V¤�2 5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BR.pngUTëÆ«jux è‡PK ÒV1]Å öÈ4 4 V¤�‚5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RS.pngUTëÆ«jux è‡PKÒV1]SÄÛMzV¤�F"5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/XK.pngUTëÆ«jux è‡PK ÒV1]Úñ§<  V¤�#$5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TD.pngUTëÆ«jux è‡PK ÒV1]¡à*¾| | V¤�Ñ/5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NE.pngUTëÆ«jux è‡PK ÒV1]U°öôôV¤�Ý;5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RE.pngUTëÆ«jux è‡PK ÒV1]|,;†‰ ‰ V¤�a=5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SH.pngUTëÆ«jux è‡PK ÒV1]Õ½ V¤�zK5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IE.pngUTëÆ«jux è‡PK ÒV1]Å]‹‚‹‹V¤�W5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NC.pngUTëÆ«jux è‡PK ÒV1]‹ l9 9 V¤�/Y5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SK.pngUTëÆ«jux è‡PK ÒV1]mdŠ¥ˆ ˆ V¤�øe5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NI.pngUTëÆ«jux è‡PK ÒV1]s¦&Åû û V¤�r5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GD.pngUTëÆ«jux è‡PK ÒV1]|…‘æÄ Ä V¤�›5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VC.pngUTëÆ«jux è‡PK ÒV1]u¼ ¼ V¤�ï‹5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SY.pngUTëÆ«jux è‡PK ÒV1]-mpŠ  V¤�;˜5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DZ.pngUTëÆ«jux è‡PK ÒV1]Ôº V¤�Τ5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MH.pngUTëÆ«jux è‡PK ÒV1]ÑP�·æ æ V¤�~²5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GR.pngUTëÆ«jux è‡PK ÒV1]¸ºú/  V¤�ô¾5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NP.pngUTëÆ«jux è‡PK ÒV1]S<—y y V¤�ˆÌ5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CM.pngUTëÆ«jux è‡PK ÒV1]¯<ãëG G V¤�‘Ø5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KM.pngUTëÆ«jux è‡PK ÒV1]O�µ`½ ½ V¤�hå5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AG.pngUTëÆ«jux è‡PK ÒV1]�–pV4 4 V¤�µò5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RU.pngUTëÆ«jux è‡PK ÒV1]R6üi V¤�yþ5imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UA.pngUTëÆ«jux è‡PK ÒV1]zHð ð V¤� 6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UY.pngUTëÆ«jux è‡PK ÒV1]¾*•s% % V¤�–6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MR.pngUTëÆ«jux è‡PK ÒV1] ³f V¤�K#6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CI.pngUTëÆ«jux è‡PK ÒV1]X–¢–= = V¤�ä.6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KH.pngUTëÆ«jux è‡PK ÒV1]ÛÏþ þ V¤�±;6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LY.pngUTëÆ«jux è‡PK ÒV1]“™Å×f f V¤�?G6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HN.pngUTëÆ«jux è‡PK ÒV1]uгW: : V¤�5S6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CO.pngUTëÆ«jux è‡PK ÒV1] Qè è V¤�ÿ^6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SB.pngUTëÆ«jux è‡PK ÒV1]ÈAÕ;Î Î V¤�wl6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/US.pngUTëÆ«jux è‡PK ÒV1]³Š© V¤�Õx6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FR.pngUTëÆ«jux è‡PK ÒV1]³Š© V¤�o„6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/YT.pngUTëÆ«jux è‡PK ÒV1]Ñ­ø0= = V¤� �6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CF.pngUTëÆ«jux è‡PK ÒV1]ÊIaê  V¤�Öœ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PK.pngUTëÆ«jux è‡PK ÒV1]ú¦øê7 7 V¤�y©6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BW.pngUTëÆ«jux è‡PK ÒV1]ªa”h" " V¤�@µ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MC.pngUTëÆ«jux è‡PK ÒV1]ê©å+ó ó V¤�òÀ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JM.pngUTëÆ«jux è‡PK ÒV1]Q�39\ \ V¤�uÎ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AM.pngUTëÆ«jux è‡PK ÒV1]Ë]“}Ê Ê V¤�aÚ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/RW.pngUTëÆ«jux è‡PK ÒV1]ùOfä ä V¤�»æ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CZ.pngUTëÆ«jux è‡PK ÒV1]Wl’1  V¤�/ó6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AF.pngUTëÆ«jux è‡PK ÒV1]ÀJŸ¦ V¤�×ÿ6imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PH.pngUTëÆ«jux è‡PK ÒV1]1í`œ¼ ¼ V¤�‡ 7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MO.pngUTëÆ«jux è‡PK ÒV1]uÕQÓ Ó V¤�Ó7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TG.pngUTëÆ«jux è‡PK ÒV1]³]¼& & V¤�6&7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ZW.pngUTëÆ«jux è‡PK ÒV1]´Óº¤� � V¤�ì27imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SV.pngUTëÆ«jux è‡PK ÒV1]j�~F  V¤�ý>7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GN.pngUTëÆ«jux è‡PK ÒV1]טÀœ@ @ V¤�¤J7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CK.pngUTëÆ«jux è‡PK ÒV1]Wîÿ  V¤�tX7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GM.pngUTëÆ«jux è‡PK ÒV1]û˸ÃË Ë V¤�#d7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/NO.pngUTëÆ«jux è‡PK ÒV1]bÔ˜¥« « V¤�~p7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MS.pngUTëÆ«jux è‡PK ÒV1]äð%  V¤�¹}7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PE.pngUTëÆ«jux è‡PK ÒV1]0fôÛÑ Ñ V¤�X‰7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ET.pngUTëÆ«jux è‡PK ÒV1]9‡Õõç ç V¤�¹•7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VA.pngUTëÆ«jux è‡PK ÒV1]ƒè�. . V¤�0¢7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HT.pngUTëÆ«jux è‡PK ÒV1]ä�Ôx� � V¤�î­7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/VE.pngUTëÆ«jux è‡PK ÒV1]i|S¥1 1 V¤� º7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PR.pngUTëÆ«jux è‡PK ÒV1]G€Í+ + V¤�ÎÆ7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PA.pngUTëÆ«jux è‡PK ÒV1]€¼LO§ § V¤�‰Ó7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CL.pngUTëÆ«jux è‡PKÒV1]>A�6V¤�Àß7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GG.pngUTëÆ«jux è‡PK ÒV1]µëúùv v V¤�fâ7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BZ.pngUTëÆ«jux è‡PK ÒV1]$¥e/  V¤�lï7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MV.pngUTëÆ«jux è‡PK ÒV1]5ŠZ¨ ¨ V¤�ü7imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KW.pngUTëÆ«jux è‡PK ÒV1]A6Ö2 2 V¤�:8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GQ.pngUTëÆ«jux è‡PK ÒV1]ÁÑÞ Þ V¤�ü8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AL.pngUTëÆ«jux è‡PK ÒV1]5#Ê3é é V¤�j!8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AO.pngUTëÆ«jux è‡PK ÒV1]ƒ±±  V¤�ã-8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PL.pngUTëÆ«jux è‡PK ÒV1]jL‹›± ± V¤��98imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KG.pngUTëÆ«jux è‡PK ÒV1]÷ÉÆ Æ V¤�ÐE8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IS.pngUTëÆ«jux è‡PK ÒV1]üÇÆcú ú V¤�&R8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MZ.pngUTëÆ«jux è‡PK ÒV1]ß¹QÞ Þ V¤�°^8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GS.pngUTëÆ«jux è‡PK ÒV1]}޼l l V¤�l8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BH.pngUTëÆ«jux è‡PK ÒV1]t, ÉÄ Ä V¤�x8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BO.pngUTëÆ«jux è‡PKÒV1]b™@`V¤�n„8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GF.pngUTëÆ«jux è‡PK ÒV1]Ωc+ + V¤�>‡8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AX.pngUTëÆ«jux è‡PK ÒV1]m¢¸l` ` V¤�ù“8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MT.pngUTëÆ«jux è‡PKÒV1]óU¥ f…V¤�éŸ8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SX.pngUTëÆ«jux è‡PK ÒV1]—/ãZ  V¤�ߢ8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TL.pngUTëÆ«jux è‡PK ÒV1]oªwõÜ Ü V¤�¯8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FJ.pngUTëÆ«jux è‡PK ÒV1]ÈAÕ;Î Î V¤�ë¼8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UM.pngUTëÆ«jux è‡PK ÒV1]ú�çW¨ ¨ V¤�IÉ8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ZA.pngUTëÆ«jux è‡PK ÒV1]µ÷Å È È V¤��Ö8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IL.pngUTëÆ«jux è‡PK ÒV1]S~î÷ ÷ V¤�Ùâ8imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/MK.pngUTëÆ«jux è‡PK ÒV1]V¤�޵9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ME.pngUTëÆ«jux è‡PKÒV1]ùöÎI‰§V¤�;¸9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TF.pngUTëÆ«jux è‡PK ÒV1]‡p• • V¤�T»9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UZ.pngUTëÆ«jux è‡PK ÒV1]®4­Ø Ø V¤�yÇ9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TC.pngUTëÆ«jux è‡PK ÒV1]>Ô%ú- - V¤�áÔ9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ES.pngUTëÆ«jux è‡PK ÒV1]íl88V¤�žà9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AQ.pngUTëÆ«jux è‡PK ÒV1]Ìv¬• • V¤�fâ9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AR.pngUTëÆ«jux è‡PK ÒV1]hHZ Z V¤�‹î9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/QA.pngUTëÆ«jux è‡PK ÒV1]¾—îÂ2 2 V¤�uú9imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HM.pngUTëÆ«jux è‡PK ÒV1]JÌP  V¤�7:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LU.pngUTëÆ«jux è‡PK ÒV1]K?5C– – V¤�ä:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TJ.pngUTëÆ«jux è‡PK ÒV1]ì§ÜD  V¤� :imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HK.pngUTëÆ«jux è‡PKÒV1]ô ¸ùV¤�¶,:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EH.pngUTëÆ«jux è‡PK ÒV1]0üSÍ¥ ¥ V¤�?/:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DO.pngUTëÆ«jux è‡PK ÒV1]lÍÁl¤ ¤ V¤�t;:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GT.pngUTëÆ«jux è‡PK ÒV1]l/{  V¤�¨G:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/YE.pngUTëÆ«jux è‡PK ÒV1]~Ç   V¤�FS:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/HU.pngUTëÆ«jux è‡PK ÒV1]%ßýš  V¤�ì^:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/PN.pngUTëÆ«jux è‡PK ÒV1]ÞÔŒ Œ V¤��l:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AW.pngUTëÆ«jux è‡PK ÒV1]|,;†‰ ‰ V¤�«x:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GB.pngUTëÆ«jux è‡PK ÒV1]‹¦¦8' ' V¤�Ć:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LV.pngUTëÆ«jux è‡PK ÒV1]Ûæå7 7 V¤�{’:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SL.pngUTëÆ«jux è‡PK ÒV1]XÖ°zà à V¤�Bž:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/FM.pngUTëÆ«jux è‡PK ÒV1]“]ÿ� � V¤�²ª:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GW.pngUTëÆ«jux è‡PK ÒV1]±æ�U> > V¤�϶:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GA.pngUTëÆ«jux è‡PK ÒV1].M%‚¼ ¼ V¤��Â:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LI.pngUTëÆ«jux è‡PK ÒV1]~üD D V¤�éÎ:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KZ.pngUTëÆ«jux è‡PK ÒV1]ó¥äæ æ V¤�½Û:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/LB.pngUTëÆ«jux è‡PK ÒV1]:Bcãj j V¤�3è:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CG.pngUTëÆ«jux è‡PK ÒV1]ƒ…/  V¤�-õ:imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BE.pngUTëÆ«jux è‡PK ÒV1]Å7`) ) V¤�Ë;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KI.pngUTëÆ«jux è‡PK ÒV1]¥©âAŒ Œ V¤�„;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SR.pngUTëÆ«jux è‡PK ÒV1]ž»=Ä Ä V¤� ;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TW.pngUTëÆ«jux è‡PK ÒV1]Cï#e  V¤�ô&;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AT.pngUTëÆ«jux è‡PK ÒV1]¹ÈóÎÝ Ý V¤�—2;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BB.pngUTëÆ«jux è‡PK ÒV1];…¢z V¤�?;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/KY.pngUTëÆ«jux è‡PK ÒV1]>ß³Ëð ð V¤�”L;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/AS.pngUTëÆ«jux è‡PK ÒV1]äÞ¦øk k W¤�Z;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/UAE.pngUTëÆ«jux è‡PK ÒV1]RȆ  V¤�f;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/CH.pngUTëÆ«jux è‡PK ÒV1]@hDS S V¤�¡r;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/BJ.pngUTëÆ«jux è‡PK ÒV1]T†÷—· · V¤�„~;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JP.pngUTëÆ«jux è‡PK ÒV1]@=÷ V¤�ËŠ;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IT.pngUTëÆ«jux è‡PKÒV1]8Æü—$DV¤�d–;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/IM.pngUTëÆ«jux è‡PK ÒV1] HY    V¤�™;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SZ.pngUTëÆ«jux è‡PK ÒV1]?d_ˆä ä V¤�H¦;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/DJ.pngUTëÆ«jux è‡PK ÒV1]]«e~  V¤�¼²;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ML.pngUTëÆ«jux è‡PK ÒV1]Q<Í Í V¤�j¾;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/EC.pngUTëÆ«jux è‡PK ÒV1]|©Eë÷ ÷ V¤�ÇÊ;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/JO.pngUTëÆ«jux è‡PK ÒV1]Š+Ÿ V¤�N×;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/ID.pngUTëÆ«jux è‡PK ÒV1]›ù­r r V¤�çâ;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/TT.pngUTëÆ«jux è‡PK ÒV1]*Œ\z z V¤�éï;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/SN.pngUTëÆ«jux è‡PK ÒV1]"F„ÎÈ È V¤�óû;imunify-security/assets/ui-app/assets/static/other-root/images/other-root/flags/GY.pngUTëÆ«jux è‡PK ÒV1]Åm¦d�ؽ`¤�ÀZ=imunify-security/assets/ui-app/assets/static/other-root/src_i18n_tr_i18n_txt.ab50e6e988b87c50.jsUTëÆ«jux è‡PKÒV1]“Xþ—+gß\|¤�¾ø=imunify-security/assets/ui-app/assets/static/other-root/src_app_components_webshield_webshield_module_ts.c0d8e32b45e1470f.jsUTëÆ«jux è‡PKÒV1]{Z‡u#`½‚¤�Ÿ`>imunify-security/assets/ui-app/assets/static/other-root/src_app_components_installation_installation_module_ts.20ab57c3d15ed326.jsUTëÆ«jux è‡PKÒV1]íNqCì²/L¤�Є>imunify-security/assets/ui-app/assets/static/other-root/main.1e097939ed9b.jsUTëÆ«jux è‡PKÒV1]‹K´0B¤{°¤�™qCimunify-security/assets/ui-app/assets/static/other-root/src_app_components_eula_eula_interceptor_ts-src_app_components_eula_eula_module_ts-src_app_co-09f16f.0c522b4bf422cb7c.jsUTëÆ«jux è‡PKÒV1]8”÷ùÎi|5°¤�³´Cimunify-security/assets/ui-app/assets/static/other-root/vendors-node_modules_dayjs_plugin_advancedFormat_js-node_modules_dayjs_plugin_isoWeek_js-node-f0ac04.bad609042127f1c9.jsUTëÆ«jux è‡PKÒV1]æ)ëY¿Üv…¤�kDimunify-security/assets/ui-app/assets/static/other-root/src_app_components_reputation_reputation_module_ts-_9ddf0.6bbf4d7524c53ce7.jsUTëÆ«jux è‡PKÒV1]fz*ö˜ûV`¤�é7Dimunify-security/assets/ui-app/assets/static/other-root/src_i18n_nl_i18n_txt.d3d250eea4372625.jsUTëÆ«jux è‡PKÒV1]<Ü€#™âu`¤�yÑDimunify-security/assets/ui-app/assets/static/other-root/src_i18n_es_i18n_txt.1532b88100f49a6d.jsUTëÆ«jux è‡PKÒV1]iá¬7�&P¶L¤�6kEimunify-security/assets/ui-app/assets/static/other-root/3rdpartylicenses.txtUTëÆ«jux è‡PKÒV1]FeKej ¨$ƒ¤�I’Eimunify-security/assets/ui-app/assets/static/other-root/src_app_standalone-warning_standalone-warning_module_ts.5005c8cdd10672ab.jsUTëÆ«jux è‡PKÒV1]O‡„æ°$ºh¤�p�Eimunify-security/assets/ui-app/assets/static/other-root/src_app_core_admin_module_ts.cc050d35ccd500ff.jsUTëÆ«jux è‡PKÒV1] „ñ¶¨¹N°¤�ÂÂFimunify-security/assets/ui-app/assets/static/other-root/src_app_components_navigation-tabs_navigation-tabs_module_ts-src_app_components_navigation-ta-28267c.f8c7729db584f6cd.jsUTëÆ«jux è‡PKÒV1]RtÉZ"&E¤�T×Fimunify-security/assets/ui-app/assets/static/other-root/manifest.jsonUTëÆ«jux è‡PKÒV1]É´¾Û='`°¤�-ÞFimunify-security/assets/ui-app/assets/static/other-root/src_app_components_incidents_incident-details_incident-details_component_ts-src_app_component-4abbb9.adf8139cf1dee630.jsUTëÆ«jux è‡PKÒV1]m±ò5ü&\Ά¤�TðFimunify-security/assets/ui-app/assets/static/other-root/src_app_components_cms-protection_cms-protection_module_ts.569d338892a52c4d.jsUTëÆ«jux è‡PKÒV1]™"å"ž t °¤�Gimunify-security/assets/ui-app/assets/static/other-root/src_app_components_help-video_help-link_component_ts-src_app_components_help-video_help-link_-f72690.438f93f125ecd819.jsUTëÆ«jux è‡PKÒV1]•Q˜4“†‰`¤�˜#Iimunify-security/assets/ui-app/assets/static/other-root/src_i18n_en_i18n_txt.3df48276b743e438.jsUTëÆ«jux è‡PKÒV1]À÷ŒTi�ˆ¤�ŪIimunify-security/assets/ui-app/assets/static/other-root/src_app_components_vulnerabilities_vulnerabilities_module_ts.151590d435294a21.jsUTëÆ«jux è‡PKÒV1]T¢á“H- 挤�ðÉIimunify-security/assets/ui-app/assets/static/other-root/src_app_components_proactive-defense_proactive-defense_module_ts.b9a0d23b3636236b.jsUTëÆ«jux è‡PKÒV1]ð릀½²°¤�þ÷Iimunify-security/assets/ui-app/assets/static/other-root/vendors-node_modules_dayjs_plugin_customParseFormat_js-node_modules_dayjs_plugin_duration_js--375296.64366804eba9be3c.jsUTëÆ«jux è‡PKÒV1]Ö¦¬–â–b^`¤�ìxJimunify-security/assets/ui-app/assets/static/other-root/src_i18n_it_i18n_txt.3a3a2266cae2bb4c.jsUTëÆ«jux è‡PKÒV1]3žfd‘|Rx¤�hKimunify-security/assets/ui-app/assets/static/other-root/src_app_components_support_support_module_ts.83f55e386cfc1ad4.jsUTëÆ«jux è‡PKÒV1]L©(VŒ %¤�«&Kimunify-security/imunify-security.phpUTëÆ«jux è‡PK ÒV1]íA`,Kimunify-security/inc/UTëÆ«jux è‡PK ÒV1]íA¯,Kimunify-security/inc/App/UTëÆ«jux è‡PKÒV1]ŽÈÀ\ÿ‹/#¤�-Kimunify-security/inc/App/Plugin.phpUTëÆ«jux è‡PK ÒV1]!íA^¤�š+Mimunify-security/inc/App/Bot/data/bot-ip-ranges/duckduckgo.phpUTëÆ«jux è‡PKÒV1]ãO¬{…9¤�98Mimunify-security/inc/App/Bot/data/bot-ip-ranges/apple.phpUTëÆ«jux è‡PKÒV1]D׉. è@A¤�':Mimunify-security/inc/App/Bot/data/bot-ip-ranges/duckassistbot.phpUTëÆ«jux è‡PKÒV1]¸É;p¾ÙQ8¤�ÐFMimunify-security/inc/App/Bot/data/bot-ip-ranges/meta.phpUTëÆ«jux è‡PKÒV1]§Ý+J&&:¤�PMimunify-security/inc/App/Bot/data/bot-ip-ranges/openai.phpUTëÆ«jux è‡PKÒV1]^âp¼ü¶=¤�šWMimunify-security/inc/App/Bot/data/bot-ip-ranges/anthropic.phpUTëÆ«jux è‡PKÒV1]È.Ý]?>¤� ZMimunify-security/inc/App/Bot/data/bot-ip-ranges/perplexity.phpUTëÆ«jux è‡PKÒV1]åWu‹68¤�â[Mimunify-security/inc/App/Bot/data/bot-ip-ranges/bing.phpUTëÆ«jux è‡PKÒV1]æOvà :¤�c^Mimunify-security/inc/App/Bot/data/bot-ip-ranges/ahrefs.phpUTëÆ«jux è‡PKÒV1]¤PlÓ6ü>¤�åaMimunify-security/inc/App/Bot/data/bot-ip-ranges/barkrowler.phpUTëÆ«jux è‡PKÒV1]Þ�%Uà:¤�“cMimunify-security/inc/App/Bot/data/bot-ip-ranges/google.phpUTëÆ«jux è‡PK ÒV1]-íA,zMimunify-security/inc/App/Bot/data/signatures/UTëÆ«jux è‡PKÒV1]¹)�ÈÈ_I¤�“zMimunify-security/inc/App/Bot/data/signatures/ua-seo-crawler-providers.phpUTëÆ«jux è‡PKÒV1]}² ¢@¤�Þ|Mimunify-security/inc/App/Bot/data/signatures/ua-seo-crawlers.phpUTëÆ«jux è‡PKÒV1]C?•òØB¤�t~Mimunify-security/inc/App/Bot/data/signatures/ua-search-engines.phpUTëÆ«jux è‡PKÒV1]zÂmÔý`D¤�È€Mimunify-security/inc/App/Bot/data/signatures/ua-ai-rdns-suffixes.phpUTëÆ«jux è‡PKÒV1]”ÑÏŽÅE¤�CƒMimunify-security/inc/App/Bot/data/signatures/ua-seo-rdns-suffixes.phpUTëÆ«jux è‡PKÒV1]åΚC™] A¤�‡…Mimunify-security/inc/App/Bot/data/signatures/ua-rdns-suffixes.phpUTëÆ«jux è‡PKÒV1]½'€m H¤�›‰Mimunify-security/inc/App/Bot/data/signatures/ua-ai-crawler-providers.phpUTëÆ«jux è‡PKÒV1]<ãrè‚??¤�,�Mimunify-security/inc/App/Bot/data/signatures/ua-ai-crawlers.phpUTëÆ«jux è‡PKÒV1]„P¸ Þ=¤�'“Mimunify-security/inc/App/Bot/data/signatures/ua-malicious.phpUTëÆ«jux è‡PKÒV1]Ø6R¢øq K¤�§•Mimunify-security/inc/App/Bot/data/signatures/ua-search-engine-providers.phpUTëÆ«jux è‡PK ÒV1]0íA$™Mimunify-security/inc/App/Bot/data/cdn-ip-ranges/UTëÆ«jux è‡PKÒV1]n¦�‡¦+;¤�Ž™Mimunify-security/inc/App/Bot/data/cdn-ip-ranges/imperva.phpUTëÆ«jux è‡PKÒV1]{0éœù;>¤�©›Mimunify-security/inc/App/Bot/data/cdn-ip-ranges/cloudflare.phpUTëÆ«jux è‡PKÒV1]÷˜¬ðô#>¤�žMimunify-security/inc/App/Bot/data/cdn-ip-ranges/cloudfront.phpUTëÆ«jux è‡PKÒV1]\öŸZÏ:¤�‚¥Mimunify-security/inc/App/Bot/data/cdn-ip-ranges/akamai.phpUTëÆ«jux è‡PKÒV1]…ûã)àš:¤�ŧMimunify-security/inc/App/Bot/data/cdn-ip-ranges/fastly.phpUTëÆ«jux è‡PKÒV1]äRòÑz©>¤�ªMimunify-security/inc/App/Bot/data/cdn-ip-ranges/quic-cloud.phpUTëÆ«jux è‡PKÒV1]„k¡j\…:¤� ¬Mimunify-security/inc/App/Bot/data/cdn-ip-ranges/sucuri.phpUTëÆ«jux è‡PK ÒV1]7íAÛ­Mimunify-security/inc/App/Bot/data/datacenter-ip-ranges/UTëÆ«jux è‡PKÒV1]þòÐÅ!½ G¤�L®Mimunify-security/inc/App/Bot/data/datacenter-ip-ranges/digitalocean.phpUTëÆ«jux è‡PKÒV1]àôšŠq-†>¤�îÁMimunify-security/inc/App/Bot/data/datacenter-ip-ranges/gcp.phpUTëÆ«jux è‡PKÒV1]uS n…OAB¤�×ÒMimunify-security/inc/App/Bot/data/datacenter-ip-ranges/hetzner.phpUTëÆ«jux è‡PKÒV1])¨_¿ ¦�–>¤�ØÛMimunify-security/inc/App/Bot/data/datacenter-ip-ranges/aws.phpUTëÆ«jux è‡PKÒV1]ÛÄ…%‚´l>¤�p‚Nimunify-security/inc/App/Bot/data/datacenter-ip-ranges/ovh.phpUTëÆ«jux è‡PKÒV1]¸ÒÃÑ¿6�Ã@¤�j”Nimunify-security/inc/App/Bot/data/datacenter-ip-ranges/azure.phpUTëÆ«jux è‡PKÒV1]*ñ=¹|1¤�£ËNimunify-security/inc/App/Bot/NullBlockStorage.phpUTëÆ«jux è‡PKÒV1]º˜¿Ì)¤�ÇÍNimunify-security/inc/App/Bot/Category.phpUTëÆ«jux è‡PKÒV1]_@>à.Œ1¤�öÓNimunify-security/inc/App/Bot/RequestAllowlist.phpUTëÆ«jux è‡PKÒV1]¥@gh€ -¤��×Nimunify-security/inc/App/Bot/DailyCounter.phpUTëÆ«jux è‡PKÒV1]E¼µ/ 3¤�^ÝNimunify-security/inc/App/Bot/WooCommerceMatcher.phpUTëÆ«jux è‡PKÒV1]…E^‰2…>)¤�ÌãNimunify-security/inc/App/Bot/MuLoader.phpUTëÆ«jux è‡PKÒV1]f�ܳxõ3¤�aùNimunify-security/inc/App/Bot/DailyBotAggregator.phpUTëÆ«jux è‡PKÒV1]õÈYÒœ3¤�FOimunify-security/inc/App/Bot/NullCounterStorage.phpUTëÆ«jux è‡PKÒV1]Ž«÷ G3¤�…Oimunify-security/inc/App/Bot/MuPluginSelfHealer.phpUTëÆ«jux è‡PKÒV1]`?†ú ë!/¤�´Oimunify-security/inc/App/Bot/RealIpResolver.phpUTëÆ«jux è‡PKÒV1]·¦ŒØM ²'¤�Oimunify-security/inc/App/Bot/Preset.phpUTëÆ«jux è‡PKÒV1]�@’]ÑÒ=)¤�Å$Oimunify-security/inc/App/Bot/Pipeline.phpUTëÆ«jux è‡PKÒV1]õqƒ&¬5¤�ù8Oimunify-security/inc/App/Bot/MonitoringUserAgents.phpUTëÆ«jux è‡PKÒV1]ÿô4¸ä' /¤�Ž-¤�ÛAOimunify-security/inc/App/Bot/IpNormalizer.phpUTëÆ«jux è‡PKÒV1],7ï6ѧ3¤�AFOimunify-security/inc/App/Bot/DatacenterDetector.phpUTëÆ«jux è‡PKÒV1]ôŸ�©Œ˜'3¤�IOimunify-security/inc/App/Bot/SelfOriginDetector.phpUTëÆ«jux è‡PKÒV1]”)çÛd° ,¤�xXOimunify-security/inc/App/Bot/IpWhitelist.phpUTëÆ«jux è‡PKÒV1]`º¾©©‡1¤�B_Oimunify-security/inc/App/Bot/AllowlistMatcher.phpUTëÆ«jux è‡PKÒV1]+ºfŒ}.¤�VbOimunify-security/inc/App/Bot/IpRangeLookup.phpUTëÆ«jux è‡PKÒV1]—¯}¦ g&4¤�;jOimunify-security/inc/App/Bot/UserAgentSignatures.phpUTëÆ«jux è‡PKÒV1]ÑG»KFo 1¤�OwOimunify-security/inc/App/Bot/DbStorageFactory.phpUTëÆ«jux è‡PKÒV1]ԧɺ�oR1¤�|Oimunify-security/inc/App/Bot/BotDataConverter.phpUTëÆ«jux è‡PK ÒV1]#íAú‘Oimunify-security/inc/App/Exception/UTëÆ«jux è‡PKÒV1]w"‡¤ 3¤�W’Oimunify-security/inc/App/Exception/ApiException.phpUTëÆ«jux è‡PKÒV1]vŒY\(¤�h”Oimunify-security/inc/App/AssetLoader.phpUTëÆ«jux è‡PKÒV1]éݓڱ(¤�#šOimunify-security/inc/App/Environment.phpUTëÆ«jux è‡PKÒV1]-÷ÓY„(;&¤� �Oimunify-security/inc/App/DataStore.phpUTëÆ«jux è‡PKÒV1]‡êù~*¤�„°Oimunify-security/inc/App/AccessManager.phpUTëÆ«jux è‡PK ÒV1]íAf¶Oimunify-security/inc/App/Views/UTëÆ«jux è‡PKÒV1]DsÝé®4å¶=¤�¿¶Oimunify-security/inc/App/Views/BotProtectionWidgetSection.phpUTëÆ«jux è‡PKÒV1]HÉéHU.—´1¤�äëOimunify-security/inc/App/Views/BotTrafficPage.phpUTëÆ«jux è‡PKÒV1]m¹  ˜-)¤�¤Pimunify-security/inc/App/Views/Widget.phpUTëÆ«jux è‡PKÒV1]- ,bñ T),¤�§(Pimunify-security/inc/App/Views/AdminPage.phpUTëÆ«jux è‡PK ÒV1]'íAþ6Pimunify-security/inc/App/Views/Display/UTëÆ«jux è‡PKÒV1]òŠH¹Ý 6¤�_7Pimunify-security/inc/App/Views/Display/RuleDisplay.phpUTëÆ«jux è‡PKÒV1]›Ô£j-ñC"¤�¬;Pimunify-security/inc/App/Debug.phpUTëÆ«jux è‡PK ÒV1]"íA5PPimunify-security/inc/App/Defender/UTëÆ«jux è‡PKÒV1] ¤�Y“Qimunify-security/inc/App/Defender/Handler/HandlerInterface.phpUTëÆ«jux è‡PKÒV1]ÆÔ7h‹°4¤�4•Qimunify-security/inc/App/Defender/RuleHitTracker.phpUTëÆ«jux è‡PKÒV1]âçðÕ;!¤�-œQimunify-security/inc/autoload.phpUTëÆ«jux è‡PK ÒV1]íA¡žQimunify-security/languages/UTëÆ«jux è‡PKÒV1]NŒÍT KV4¤�öžQimunify-security/languages/imunify-security-ru_RU.poUTëÆ«jux è‡PKÒV1];gˆÅ#M4¤�¹Qimunify-security/languages/imunify-security-ru_RU.moUTëÆ«jux è‡PKÒV1]IìjÎE;4¤�7ÖQimunify-security/languages/imunify-security-sk_SK.moUTëÆ«jux è‡PKÒV1]äÁ_);4¤�sðQimunify-security/languages/imunify-security-de_DE.moUTëÆ«jux è‡PKÒV1]Ýy[ t*/¤�@ Rimunify-security/languages/imunify-security.potUTëÆ«jux è‡PKÒV1]æb¹÷ýC4¤�Rimunify-security/languages/imunify-security-de_DE.poUTëÆ«jux è‡PKÒV1]Ä·{ …D4¤�i-Rimunify-security/languages/imunify-security-es_ES.poUTëÆ«jux è‡PKÒV1]s@²e D;4¤�\CRimunify-security/languages/imunify-security-es_ES.moUTëÆ«jux è‡PKÒV1]d¾uá€mD4¤�ê\Rimunify-security/languages/imunify-security-sk_SK.poUTëÆ«jux è‡PK ÒV1]íAØsRimunify-security/lib/UTëÆ«jux è‡PK ÒV1] íA'tRimunify-security/lib/CloudLinux/UTëÆ«jux è‡PK ÒV1](íA�tRimunify-security/lib/CloudLinux/Imunify/UTëÆ«jux è‡PK ÒV1]1íAãtRimunify-security/lib/CloudLinux/Imunify/Composer/UTëÆ«jux è‡PK ÒV1]8íANuRimunify-security/lib/CloudLinux/Imunify/Composer/Semver/UTëÆ«jux è‡PKÒV1]À1y= XI¤�ÀuRimunify-security/lib/CloudLinux/Imunify/Composer/Semver/VersionParser.phpUTëÆ«jux è‡PKÒV1] –ÖPE¤�€‹Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Intervals.phpUTëÆ«jux è‡PKÒV1]U„™†Y L¤�œRimunify-security/lib/CloudLinux/Imunify/Composer/Semver/CompilingMatcher.phpUTëÆ«jux è‡PKÒV1]Y #h j F¤� Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Comparator.phpUTëÆ«jux è‡PK ÒV1]CíA¦¢Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/UTëÆ«jux è‡PKÒV1]ê ÍH�T%V¤�#£Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MultiConstraint.phpUTëÆ«jux è‡PKÒV1]ë©gÉZ¤�P¬Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/ConstraintInterface.phpUTëÆ«jux è‡PKÒV1]w5…W ÕZ¤�ü¯Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MatchNoneConstraint.phpUTëÆ«jux è‡PKÒV1]ǶQ,– 2Q¤�™²Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/Constraint.phpUTëÆ«jux è‡PKÒV1]-(8 ×Y¤�º¼Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/MatchAllConstraint.phpUTëÆ«jux è‡PKÒV1]©¥�‡€ L¤�`¿Rimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Constraint/Bound.phpUTëÆ«jux è‡PKÒV1]inÅ�h¨D¤�mÃRimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Interval.phpUTëÆ«jux è‡PKÒV1]N¹^éu B¤�SÆRimunify-security/lib/CloudLinux/Imunify/Composer/Semver/Semver.phpUTëÆ«jux è‡PKÒV1]ÅÜ;‚u¤�¸ÊRimunify-security/uninstall.phpUTëÆ«jux è‡PK ÒV1]íAÌRimunify-security/views/UTëÆ«jux è‡PKÒV1]—)pÅÈè/¤�iÌRimunify-security/views/widget-not-installed.phpUTëÆ«jux è‡PKÒV1]E©ÊÎÙ £=!¤�šÎRimunify-security/views/widget.phpUTëÆ«jux è‡PKÌÌ šÎÛRwp-plugins/wp-cli000075500027177335152572267170010041 0ustar00#!/usr/bin/env php ÚmD wp-cli.phar#vendor/wp-cli/wp-cli/php/compat.phpn’¢ž`nºze¤(vendor/wp-cli/wp-cli/php/config-spec.php_ ’¢ž`_ ß=�W¤&vendor/wp-cli/wp-cli/php/bootstrap.php|’¢ž`|`¬F¤*vendor/wp-cli/wp-cli/php/commands/help.php”’¢ž`”lD³¤)vendor/wp-cli/wp-cli/php/commands/cli.phpÔ’¢ž`Ôjn’ü¤5vendor/wp-cli/wp-cli/php/commands/src/CLI_Command.phpýN’¢ž`ýN»ga¤;vendor/wp-cli/wp-cli/php/commands/src/CLI_Cache_Command.php·’¢ž`·ýn?í¤6vendor/wp-cli/wp-cli/php/commands/src/Help_Command.phpW’¢ž`Wï¼q¤;vendor/wp-cli/wp-cli/php/commands/src/CLI_Alias_Command.phpy3’¢ž`y3¼>Ùi¤$vendor/wp-cli/wp-cli/php/boot-fs.php’’¢ž`’<ùײ¤,vendor/wp-cli/wp-cli/php/wp-settings-cli.phpoC’¢ž`oCµ‚g¤1vendor/wp-cli/wp-cli/php/class-wp-cli-command.php�’¢ž`�É*Ãú¤)vendor/wp-cli/wp-cli/php/class-wp-cli.phpK¢’¢ž`K¢zZN¤'vendor/wp-cli/wp-cli/php/dispatcher.phpM’¢ž`Má×:J¤+vendor/wp-cli/wp-cli/php/WP_CLI/Process.phpT ’¢ž`T éDk¤-vendor/wp-cli/wp-cli/php/WP_CLI/Inflector.phpæ?’¢ž`æ?bÊåè¤?vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandNamespace.php«’¢ž`«rF|¤=vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandFactory.php "’¢ž` "ÁÞn6¤>vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CommandAddition.php#’¢ž`#Ï躛¤?vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/CompositeCommand.phpa’¢ž`am|2ÿ¤:vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/RootCommand.phpK’¢ž`KŸyÕ¤9vendor/wp-cli/wp-cli/php/WP_CLI/Dispatcher/Subcommand.phpŠ5’¢ž`Š5psݤ-vendor/wp-cli/wp-cli/php/WP_CLI/Formatter.php%’¢ž`%ËW§«¤,vendor/wp-cli/wp-cli/php/WP_CLI/WpOrgApi.php­’¢ž`­Ô9ܤ-vendor/wp-cli/wp-cli/php/WP_CLI/DocParser.php’¢ž` xP¤2vendor/wp-cli/wp-cli/php/WP_CLI/SynopsisParser.phpp’¢ž`pœW‡]¤(vendor/wp-cli/wp-cli/php/WP_CLI/NoOp.phpÝ’¢ž`ÝDÊ1¤1vendor/wp-cli/wp-cli/php/WP_CLI/Fetchers/Base.php•’¢ž`•˜ŠÂU¤4vendor/wp-cli/wp-cli/php/WP_CLI/Fetchers/Comment.php}’¢ž`}èáÚ¤1vendor/wp-cli/wp-cli/php/WP_CLI/Fetchers/Site.php˜’¢ž`˜xkX¤1vendor/wp-cli/wp-cli/php/WP_CLI/Fetchers/Post.php9’¢ž`9ÈÑòë¤1vendor/wp-cli/wp-cli/php/WP_CLI/Fetchers/User.php0’¢ž`0þæö¤.vendor/wp-cli/wp-cli/php/WP_CLI/Autoloader.php-’¢ž`- lñѤ.vendor/wp-cli/wp-cli/php/WP_CLI/ComposerIO.php‚’¢ž`‚‘É+Q¤0vendor/wp-cli/wp-cli/php/WP_CLI/Configurator.php–%’¢ž`–%�ñá¤Fvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareFallbackFunctions.phpC’¢ž`C@*Bg¤Dvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeColorization.phpL’¢ž`L¤Ø'=¤>vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareMainClass.php’¢ž`·Tj¤Gvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFallbackAutoloader.phpµ’¢ž`µ°øÎS¤>vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/InitializeLogger.php*’¢ž`*\©°3¤=vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/ConfigureRunner.php5’¢ž`5‰ß¶-¤Gvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterFrameworkCommands.phpg’¢ž`gÖ>ëV¤<vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapState.php¤’¢ž`¤¢À‚פFvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RegisterDeferredCommands.php•’¢ž`•øk ¤<vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/RunnerInstance.php£’¢ž`£²k�¤Fvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludePackageAutoloader.php’¢ž`ðïF¤<vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/AutoloaderStep.php) ’¢ž`) ƒë¬¤;vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/BootstrapStep.phpÇ’¢ž`ÇA7/ ¤Hvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DeclareAbstractBaseCommand.phpA’¢ž`A¯@<@¤Hvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/IncludeFrameworkAutoloader.phpÊ’¢ž`ʇt?ߤ:vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LaunchRunner.php(’¢ž`(°zÜ\¤Bvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadUtilityFunctions.php)’¢ž`)TYMݤAvendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadRequiredCommand.php¢’¢ž`¢þØîÓ¤=vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadExecCommand.phpW’¢ž`Wy~¥¤<vendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/LoadDispatcher.php5’¢ž`5U Û4¤Evendor/wp-cli/wp-cli/php/WP_CLI/Bootstrap/DefineProtectedCommands.phpç’¢ž`ç8Å>2¤Avendor/wp-cli/wp-cli/php/WP_CLI/PackageManagerEventSubscriber.php~’¢ž`~ns\¤1vendor/wp-cli/wp-cli/php/WP_CLI/ExitException.phpS’¢ž`S{uׄ¤*vendor/wp-cli/wp-cli/php/WP_CLI/Runner.php™Ö’¢ž`™Ö 2J¤0vendor/wp-cli/wp-cli/php/WP_CLI/UpgraderSkin.php+’¢ž`+î6Ф5vendor/wp-cli/wp-cli/php/WP_CLI/SynopsisValidator.phpÙ’¢ž`Ùkê•%¤-vendor/wp-cli/wp-cli/php/WP_CLI/FileCache.php²!’¢ž`²!k ÊÓ¤-vendor/wp-cli/wp-cli/php/WP_CLI/Extractor.phpB'’¢ž`B'<ÓZϤJvendor/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_6/FeedbackMethodTrait.php³’¢ž`³<ªNÓ¤>vendor/wp-cli/wp-cli/php/WP_CLI/Compat/FeedbackMethodTrait.phpÎ’¢ž`ÎÈøé–¤Jvendor/wp-cli/wp-cli/php/WP_CLI/Compat/Min_PHP_5_4/FeedbackMethodTrait.php’¢ž`Ü šÓ¤.vendor/wp-cli/wp-cli/php/WP_CLI/ProcessRun.php(’¢ž`(cÌ홤0vendor/wp-cli/wp-cli/php/WP_CLI/Loggers/Base.php×’¢ž`׫ŸEe¤5vendor/wp-cli/wp-cli/php/WP_CLI/Loggers/Execution.phpa’¢ž`at†W¤1vendor/wp-cli/wp-cli/php/WP_CLI/Loggers/Quiet.php¥’¢ž`¥59\¢¤3vendor/wp-cli/wp-cli/php/WP_CLI/Loggers/Regular.php’¢ž`5šÁ!¤/vendor/wp-cli/wp-cli/php/WP_CLI/Completions.phpÇ’¢ž`LJãɪ¤6vendor/wp-cli/wp-cli/php/WP_CLI/WpHttpCacheManager.phpk ’¢ž`k j¡¤3vendor/wp-cli/wp-cli/php/WP_CLI/Iterators/Table.phpe ’¢ž`e @+¤3vendor/wp-cli/wp-cli/php/WP_CLI/Iterators/Query.php ’¢ž` éíÖ½¤7vendor/wp-cli/wp-cli/php/WP_CLI/Iterators/Transform.phpÇ’¢ž`ÇÓ€tY¤1vendor/wp-cli/wp-cli/php/WP_CLI/Iterators/CSV.php¡’¢ž`¡ø�bO¤7vendor/wp-cli/wp-cli/php/WP_CLI/Iterators/Exception.phph’¢ž`h0L6Ò¤#vendor/wp-cli/wp-cli/php/wp-cli.php’¢ž`æ¬áñ¤"vendor/wp-cli/wp-cli/php/utils.php©Ä’¢ž`©Ä®ŠDѤ/vendor/wp-cli/wp-cli/php/fallback-functions.phpô’¢ž`ô†[F¤%vendor/wp-cli/wp-cli/php/utils-wp.php­8’¢ž`­8Í?w#¤php/boot-phar.php9’¢ž`9Y�½s¤0vendor/mustache/mustache/bin/build_bootstrap.php;’¢ž`;­ÀÏú¤Avendor/mustache/mustache/src/Mustache/Source/FilesystemSource.phpj’¢ž`jÀ…ý@¤0vendor/mustache/mustache/src/Mustache/Loader.phpB’¢ž`BQ€Çy¤9vendor/mustache/mustache/src/Mustache/Cache/NoopCache.phpA’¢ž`A”ˆŽÙ¤?vendor/mustache/mustache/src/Mustache/Cache/FilesystemCache.phph’¢ž`h(}4¤=vendor/mustache/mustache/src/Mustache/Cache/AbstractCache.phpá’¢ž`áV߀ۤ?vendor/mustache/mustache/src/Mustache/Logger/AbstractLogger.phpv ’¢ž`v nåY6¤=vendor/mustache/mustache/src/Mustache/Logger/StreamLogger.php¹’¢ž`¹¶‹ýJ¤2vendor/mustache/mustache/src/Mustache/Template.php‹’¢ž`‹8©¤0vendor/mustache/mustache/src/Mustache/Logger.php$ ’¢ž`$ ÷@Y9¤6vendor/mustache/mustache/src/Mustache/LambdaHelper.phpÜ’¢ž`ÜŠpÕ¤0vendor/mustache/mustache/src/Mustache/Source.php’¢ž`b×¶m¤0vendor/mustache/mustache/src/Mustache/Engine.phpøc’¢ž`øcÿCÔ¤:vendor/mustache/mustache/src/Mustache/HelperCollection.phpŸ’¢ž`Ÿ‡ŽÓ¤4vendor/mustache/mustache/src/Mustache/Autoloader.php’¢ž`=c«Ö¤2vendor/mustache/mustache/src/Mustache/Compiler.php|X’¢ž`|XVsþ‰¤1vendor/mustache/mustache/src/Mustache/Context.phpñ’¢ž`ñ�þD¤3vendor/mustache/mustache/src/Mustache/Exception.phpR’¢ž`R]u·¤0vendor/mustache/mustache/src/Mustache/Parser.phpœ*’¢ž`œ*ÛVÊ„¤Jvendor/mustache/mustache/src/Mustache/Exception/UnknownFilterException.phpÅ’¢ž`ÅéfýÞ¤Lvendor/mustache/mustache/src/Mustache/Exception/InvalidArgumentException.php¢’¢ž`¢¬ØQ¤Cvendor/mustache/mustache/src/Mustache/Exception/SyntaxException.php™’¢ž`™ÿNƒš¤Bvendor/mustache/mustache/src/Mustache/Exception/LogicException.phpƒ’¢ž`ƒÂ}A¯¤Lvendor/mustache/mustache/src/Mustache/Exception/UnknownTemplateException.phpÛ’¢ž`Û-¸[¤Dvendor/mustache/mustache/src/Mustache/Exception/RuntimeException.php‰’¢ž`‰1]ÐÓ¤Jvendor/mustache/mustache/src/Mustache/Exception/UnknownHelperException.phpÅ’¢ž`ÅëHÞj¤3vendor/mustache/mustache/src/Mustache/Tokenizer.php_,’¢ž`_,s†^P¤Avendor/mustache/mustache/src/Mustache/Loader/FilesystemLoader.phpÓ’¢ž`ÓL$yŸ¤<vendor/mustache/mustache/src/Mustache/Loader/ArrayLoader.phpã’¢ž`ãÛ!“¤=vendor/mustache/mustache/src/Mustache/Loader/InlineLoader.phpî’¢ž`î\‰ á¤=vendor/mustache/mustache/src/Mustache/Loader/StringLoader.phpÐ’¢ž`Ð<%¡¤@vendor/mustache/mustache/src/Mustache/Loader/CascadingLoader.phpú’¢ž`ú婤Kvendor/mustache/mustache/src/Mustache/Loader/ProductionFilesystemLoader.phpf ’¢ž`f ‹±�¤>vendor/mustache/mustache/src/Mustache/Loader/MutableLoader.php°’¢ž`°á¸Ïg¤/vendor/mustache/mustache/src/Mustache/Cache.phpÿ’¢ž`ÿ% H ¤+vendor/rmccue/requests/library/Requests.phpÝv’¢ž`ÝvêxRä2vendor/rmccue/requests/library/Requests/Hooker.phpÅ’¢ž`Å=‚u‰¤3vendor/rmccue/requests/library/Requests/Session.php’¢ž`±óp¤7vendor/rmccue/requests/library/Requests/IDNAEncoder.php-’¢ž`-ëÌ“ð¤6vendor/rmccue/requests/library/Requests/Auth/Basic.php“’¢ž`“çJÔA¤1vendor/rmccue/requests/library/Requests/Proxy.php-’¢ž`-Ëßɧ¤0vendor/rmccue/requests/library/Requests/IPv6.php’’¢ž`’ój{m¤6vendor/rmccue/requests/library/Requests/Cookie/Jar.php’¢ž`©�ññ¤2vendor/rmccue/requests/library/Requests/Cookie.phpé2’¢ž`é2Ÿš…á¤Dvendor/rmccue/requests/library/Requests/Utility/FilteredIterator.phpœ’¢ž`œ ™ò^¤Mvendor/rmccue/requests/library/Requests/Utility/CaseInsensitiveDictionary.phpû’¢ž`û‘÷ñD¤/vendor/rmccue/requests/library/Requests/SSL.phpæ’¢ž`æ¥ý6ʤ<vendor/rmccue/requests/library/Requests/Response/Headers.phpW’¢ž`Wö=Q7¤5vendor/rmccue/requests/library/Requests/Exception.php’¢ž`ì%Ф/vendor/rmccue/requests/library/Requests/IRI.php‰o’¢ž`‰o n ¤5vendor/rmccue/requests/library/Requests/Transport.phpÅ’¢ž`Åäý*ù¤?vendor/rmccue/requests/library/Requests/Exception/Transport.phpJ’¢ž`JÅ9[¡¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/415.php¥’¢ž`¥R­;פ>vendor/rmccue/requests/library/Requests/Exception/HTTP/402.php“’¢ž`“Ha�¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/405.php™’¢ž`™�z]ð¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/403.php~’¢ž`~ºD1¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/305.php~’¢ž`~4-O“¤Bvendor/rmccue/requests/library/Requests/Exception/HTTP/Unknown.phpd’¢ž`dñµç¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/418.phpß’¢ž`ßÝ„¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/500.php¢’¢ž`¢�g?¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/411.php�’¢ž`�ãy>vendor/rmccue/requests/library/Requests/Exception/HTTP/502.php„’¢ž`„ï.ö¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/414.php¢’¢ž`¢âΰ¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/504.php�’¢ž`��ÖY¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/410.phpo’¢ž`oü_�7¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/503.phpœ’¢ž`œØIÛé¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/431.php’¢ž`ÏÖ�¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/417.php™’¢ž`™ Eƒ¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/413.php«’¢ž`«§ÍHý¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/400.php„’¢ž`„Di§Q¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/412.phpœ’¢ž`œïø·¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/306.php‡’¢ž`‡MŒo–¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/409.php{’¢ž`{†wZB¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/416.phpÀ’¢ž`ÀÄâér¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/429.php&’¢ž`&mMc'¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/428.phpú’¢ž`úJ”ø2¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/408.php�’¢ž`�ï1Š"¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/404.php~’¢ž`~_º¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/505.php±’¢ž`±¸�+f¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/304.php‡’¢ž`‡9öAJ¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/511.php’¢ž`šéf¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/406.php�’¢ž`�Vç"¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/407.phpº’¢ž`ºko½‘¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/401.php‡’¢ž`‡jˆùX¤>vendor/rmccue/requests/library/Requests/Exception/HTTP/501.php�’¢ž`�a4�¢¤:vendor/rmccue/requests/library/Requests/Exception/HTTP.phpŒ’¢ž`Œ¦èŽr¤Dvendor/rmccue/requests/library/Requests/Exception/Transport/cURL.php—’¢ž`—]ñ�’¤1vendor/rmccue/requests/library/Requests/Hooks.phpx’¢ž`xK–l5¤0vendor/rmccue/requests/library/Requests/Auth.php*’¢ž`*u�é¤:vendor/rmccue/requests/library/Requests/Transport/cURL.php¾B’¢ž`¾B(Ù}á¤?vendor/rmccue/requests/library/Requests/Transport/fsockopen.phpÌ2’¢ž`Ì2žmì¤4vendor/rmccue/requests/library/Requests/Response.phpÓ ’¢ž`Ó q³ù‰¤6vendor/rmccue/requests/library/Requests/Proxy/HTTP.php  ’¢ž`  A°$¤.vendor/composer/xdebug-handler/src/Process.phpš’¢ž`šq;¡†¤0vendor/composer/xdebug-handler/src/PhpConfig.php5’¢ž`5j$õ£¤4vendor/composer/xdebug-handler/src/XdebugHandler.phptI’¢ž`tI¢x¤-vendor/composer/xdebug-handler/src/Status.php’¢ž`«±fë¤%vendor/composer/InstalledVersions.phpA’¢ž`A�ÎÀˆ¤%vendor/composer/autoload_classmap.php€’¢ž`€;ë´¤2vendor/composer/spdx-licenses/src/SpdxLicenses.phpý#’¢ž`ý#–¤‚�¤!vendor/composer/autoload_psr4.php ’¢ž` –Ú`¤"vendor/composer/platform_check.php�’¢ž`�T‘‘t¤'vendor/composer/autoload_namespaces.phpÃ’¢ž`Ã'o泤#vendor/composer/autoload_static.php.’¢ž`.¶:�»¤1vendor/composer/composer/src/Composer/Factory.phpg’¢ž`g¤0vendor/composer/composer/src/Composer/Config.phpØD’¢ž`ØD/N›a¤3vendor/composer/composer/src/Composer/Installer.php¦Á’¢ž`¦Á%þ�¤?vendor/composer/composer/src/Composer/Platform/HhvmDetector.phpN’¢ž`Nv%Y¤:vendor/composer/composer/src/Composer/Platform/Version.phpý ’¢ž`ý R:vendor/composer/composer/src/Composer/Platform/Runtime.phpì’¢ž`ìHjÁQ¤;vendor/composer/composer/src/Composer/InstalledVersions.php¨&’¢ž`¨&w'/å¤Hvendor/composer/composer/src/Composer/Repository/CompositeRepository.php󒢞`ózɤBvendor/composer/composer/src/Composer/Repository/VcsRepository.php$H’¢ž`$H.:nh¤Mvendor/composer/composer/src/Composer/Repository/InstalledArrayRepository.phpÅ’¢ž`ÅÌŒ�¤Bvendor/composer/composer/src/Composer/Repository/RepositorySet.php§*’¢ž`§*‰WBO¤Gvendor/composer/composer/src/Composer/Repository/ArtifactRepository.php>’¢ž`>_È:¤Qvendor/composer/composer/src/Composer/Repository/InstalledRepositoryInterface.php¿’¢ž`¿ßÉÚÀ¤Pvendor/composer/composer/src/Composer/Repository/RepositorySecurityException.phpâ’¢ž`â<9ï¤Evendor/composer/composer/src/Composer/Repository/FilterRepository.php’¢ž`"Â^t¤Hvendor/composer/composer/src/Composer/Repository/RepositoryInterface.phpº’¢ž`ºà—¦¤Cvendor/composer/composer/src/Composer/Repository/PathRepository.phpq’¢ž`qÑË"¤Cvendor/composer/composer/src/Composer/Repository/PearRepository.php*’¢ž`*Ï"´í¤Gvendor/composer/composer/src/Composer/Repository/PlatformRepository.php0m’¢ž`0m"¸Í­¤Evendor/composer/composer/src/Composer/Repository/Vcs/GitHubDriver.phpÊN’¢ž`ÊNÉŒ~¤Avendor/composer/composer/src/Composer/Repository/Vcs/HgDriver.php+’¢ž`+;:¤Bvendor/composer/composer/src/Composer/Repository/Vcs/SvnDriver.php~/’¢ž`~/²Âb¤Kvendor/composer/composer/src/Composer/Repository/Vcs/VcsDriverInterface.phpŸ ’¢ž`Ÿ Éǧ»¤Hvendor/composer/composer/src/Composer/Repository/Vcs/BitbucketDriver.php6’¢ž`6�‚Dë¤Bvendor/composer/composer/src/Composer/Repository/Vcs/GitDriver.php`’¢ž``Vp°¤Bvendor/composer/composer/src/Composer/Repository/Vcs/VcsDriver.phpÃ’¢ž`ü½?¤Evendor/composer/composer/src/Composer/Repository/Vcs/GitLabDriver.phpôF’¢ž`ôFz‡^¤Gvendor/composer/composer/src/Composer/Repository/Vcs/PerforceDriver.php’¢ž`ì# ¤Kvendor/composer/composer/src/Composer/Repository/Vcs/GitBitbucketDriver.phpJ ’¢ž`J qr3{¤Jvendor/composer/composer/src/Composer/Repository/Vcs/HgBitbucketDriver.phpD ’¢ž`D ¬Óê[¤Evendor/composer/composer/src/Composer/Repository/Vcs/FossilDriver.phpÚ’¢ž`ÚÙcÝy¤Dvendor/composer/composer/src/Composer/Repository/ArrayRepository.phpü"’¢ž`ü"¬ôåc¤Hvendor/composer/composer/src/Composer/Repository/LockArrayRepository.phpm’¢ž`mÏþ!‡¤Fvendor/composer/composer/src/Composer/Repository/RepositoryManager.php’¢ž`0äPvendor/composer/composer/src/Composer/Repository/WritableRepositoryInterface.php©’¢ž`©:qñ¤Jvendor/composer/composer/src/Composer/Repository/RootPackageRepository.php ’¢ž` bSÀ"¤Fvendor/composer/composer/src/Composer/Repository/RepositoryFactory.php™’¢ž`™_5gé¤Ovendor/composer/composer/src/Composer/Repository/InvalidRepositoryException.phpß’¢ž`ßæœç$¤Tvendor/composer/composer/src/Composer/Repository/ConfigurableRepositoryInterface.phpÞ’¢ž`Þ6{£¤Ivendor/composer/composer/src/Composer/Repository/FilesystemRepository.php$#’¢ž`$#¥nÔ#¤Jvendor/composer/composer/src/Composer/Repository/VersionCacheInterface.php�’¢ž`�gÔ0¤Hvendor/composer/composer/src/Composer/Repository/InstalledRepository.phpZ/’¢ž`Z/n©°°¤Gvendor/composer/composer/src/Composer/Repository/ComposerRepository.php¢Õ’¢ž`¢ÕDÂØm¤Fvendor/composer/composer/src/Composer/Repository/PackageRepository.phpØ’¢ž`ØŠÙA¿¤Lvendor/composer/composer/src/Composer/Repository/WritableArrayRepository.phpÄ’¢ž`Ä›ÒפRvendor/composer/composer/src/Composer/Repository/InstalledFilesystemRepository.phpÐ’¢ž`ÐÂ~‹¤Cvendor/composer/composer/src/Composer/Console/GithubActionError.php"’¢ž`"‚]³¤Evendor/composer/composer/src/Composer/Console/HtmlOutputFormatter.php ’¢ž` ¦RÄܤ=vendor/composer/composer/src/Composer/Console/Application.phpbW’¢ž`bW± †y¤Mvendor/composer/composer/src/Composer/Question/StrictConfirmationQuestion.phpk ’¢ž`k —ö|F¤6vendor/composer/composer/src/Composer/Package/Link.php2’¢ž`2ë˜�Ĥ8vendor/composer/composer/src/Composer/Package/Locker.php:@’¢ž`:@ ̃s¤>vendor/composer/composer/src/Composer/Package/AliasPackage.php)’¢ž`)pAeî¤Jvendor/composer/composer/src/Composer/Package/CompletePackageInterface.php¸ ’¢ž`¸ Åd±1¤=vendor/composer/composer/src/Composer/Package/RootPackage.php€ ’¢ž`€ ¿¦(b¤Gvendor/composer/composer/src/Composer/Package/Version/VersionParser.php� ’¢ž`� ë”Ðñ¤Ivendor/composer/composer/src/Composer/Package/Version/VersionSelector.phpC’¢ž`Cþj¤Hvendor/composer/composer/src/Composer/Package/Version/VersionGuesser.php…8’¢ž`…8sjù6¤Ivendor/composer/composer/src/Composer/Package/Version/StabilityFilter.php’¢ž`F¦rߤFvendor/composer/composer/src/Composer/Package/RootPackageInterface.phpˆ ’¢ž`ˆ ' Íf¤=vendor/composer/composer/src/Composer/Package/BasePackage.php"’¢ž`"\³Y¤Ivendor/composer/composer/src/Composer/Package/Archiver/ArchiveManager.phpµ’¢ž`µèxÔm¤Gvendor/composer/composer/src/Composer/Package/Archiver/PharArchiver.phpF ’¢ž`F õL ¤Pvendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFinder.phpS ’¢ž`S ׂ²¤Kvendor/composer/composer/src/Composer/Package/Archiver/GitExcludeFilter.php9’¢ž`9â$žŒ¤Lvendor/composer/composer/src/Composer/Package/Archiver/BaseExcludeFilter.phpl’¢ž`l�|¥÷¤Lvendor/composer/composer/src/Composer/Package/Archiver/ArchiverInterface.php÷’¢ž`÷lØ©ã¤Pvendor/composer/composer/src/Composer/Package/Archiver/ArchivableFilesFilter.phpÞ’¢ž`ÞÔ´=¤Jvendor/composer/composer/src/Composer/Package/Archiver/HgExcludeFilter.phpò ’¢ž`ò Ò±S¤Pvendor/composer/composer/src/Composer/Package/Archiver/ComposerExcludeFilter.phpZ’¢ž`ZHInw¤Fvendor/composer/composer/src/Composer/Package/Archiver/ZipArchiver.phpE ’¢ž`E XC¤¤Bvendor/composer/composer/src/Composer/Package/RootAliasPackage.phpf’¢ž`f�ѤAvendor/composer/composer/src/Composer/Package/CompletePackage.phpy’¢ž`yIøã¤9vendor/composer/composer/src/Composer/Package/Package.phpb7’¢ž`b7p¬M¤Cvendor/composer/composer/src/Composer/Package/Comparer/Comparer.phpg’¢ž`gN/楤Dvendor/composer/composer/src/Composer/Package/Loader/ArrayLoader.php³:’¢ž`³:Bê²ã¤Hvendor/composer/composer/src/Composer/Package/Loader/LoaderInterface.phpB’¢ž`B*ùJ¤¤Pvendor/composer/composer/src/Composer/Package/Loader/InvalidPackageException.phpé’¢ž`éIQªØ¤Jvendor/composer/composer/src/Composer/Package/Loader/RootPackageLoader.php/'’¢ž`/'¨¹Ó[¤Nvendor/composer/composer/src/Composer/Package/Loader/ValidatingArrayLoader.php·\’¢ž`·\H†:¤Cvendor/composer/composer/src/Composer/Package/Loader/JsonLoader.phpS’¢ž`S&uÂC¤Dvendor/composer/composer/src/Composer/Package/Dumper/ArrayDumper.phpP’¢ž`P‡0‰Ë¤Bvendor/composer/composer/src/Composer/Package/PackageInterface.php]*’¢ž`]*ý¡¡_¤8vendor/composer/composer/src/Composer/IO/IOInterface.php¹’¢ž`¹ÞÍ•¿¤6vendor/composer/composer/src/Composer/IO/ConsoleIO.phpÝ*’¢ž`Ý*Çõ¡&¤3vendor/composer/composer/src/Composer/IO/BaseIO.phpÇ!’¢ž`Ç!ìKìó¤5vendor/composer/composer/src/Composer/IO/BufferIO.php, ’¢ž`, ß.Ž>¤3vendor/composer/composer/src/Composer/IO/NullIO.php ’¢ž` Íÿ¾¤8vendor/composer/composer/src/Composer/Util/Bitbucket.phpª!’¢ž`ª!îÀäî¤9vendor/composer/composer/src/Composer/Util/SyncHelper.php¥ ’¢ž`¥ ÌÜÊü¤>vendor/composer/composer/src/Composer/Util/ProcessExecutor.phpl5’¢ž`l5Á- £¤Bvendor/composer/composer/src/Composer/Util/Http/CurlDownloader.phpáY’¢ž`áYRÎʤ¤?vendor/composer/composer/src/Composer/Util/Http/ProxyHelper.phpÏ’¢ž`Ï�1«–¤@vendor/composer/composer/src/Composer/Util/Http/CurlResponse.php¯’¢ž`¯©§�¤@vendor/composer/composer/src/Composer/Util/Http/RequestProxy.phpo’¢ž`o|$�a¤@vendor/composer/composer/src/Composer/Util/Http/ProxyManager.php·’¢ž`·häâR¤<vendor/composer/composer/src/Composer/Util/Http/Response.php ’¢ž` Ãï<ˤ=vendor/composer/composer/src/Composer/Util/NoProxyPattern.php*’¢ž`*†&qù¤9vendor/composer/composer/src/Composer/Util/Filesystem.phpé_’¢ž`é_¢tGN¤7vendor/composer/composer/src/Composer/Util/Perforce.phpöC’¢ž`öCr3Žn¤2vendor/composer/composer/src/Composer/Util/Url.php:’¢ž`:?_›¤7vendor/composer/composer/src/Composer/Util/Platform.phpº’¢ž`ºa•*¤2vendor/composer/composer/src/Composer/Util/Zip.php,’¢ž`,&«nŒ¤2vendor/composer/composer/src/Composer/Util/Tar.phpX’¢ž`X«W W¤9vendor/composer/composer/src/Composer/Util/AuthHelper.php0’¢ž`0˜’*¡¤?vendor/composer/composer/src/Composer/Util/MetadataMinifier.phpq’¢ž`qñ’tX¤5vendor/composer/composer/src/Composer/Util/GitLab.phpi’¢ž`ià w¤8vendor/composer/composer/src/Composer/Util/TlsHelper.phpá’¢ž`áZ?U¤Cvendor/composer/composer/src/Composer/Util/StreamContextFactory.phpH$’¢ž`H$—‰o*¤2vendor/composer/composer/src/Composer/Util/Svn.php9'’¢ž`9'úÞ=vendor/composer/composer/src/Composer/Util/ComposerMirror.phpû’¢ž`ûþ¸ÞQ¤<vendor/composer/composer/src/Composer/Util/PackageSorter.php¸ ’¢ž`¸ QÎɤ5vendor/composer/composer/src/Composer/Util/GitHub.phpé’¢ž`éBjð§¤?vendor/composer/composer/src/Composer/Util/RemoteFilesystem.php>�’¢ž`>�¢qk¤=vendor/composer/composer/src/Composer/Util/HttpDownloader.phpm=’¢ž`m=SG%¤3vendor/composer/composer/src/Composer/Util/Loop.phps ’¢ž`s Ooc@¤2vendor/composer/composer/src/Composer/Util/Git.php}G’¢ž`}G„è©N¤7vendor/composer/composer/src/Composer/Util/Silencer.phpv’¢ž`v˜G‰¤1vendor/composer/composer/src/Composer/Util/Hg.phpÿ ’¢ž`ÿ 6K6@¤>vendor/composer/composer/src/Composer/Util/ConfigValidator.php?"’¢ž`?"B-v¤8vendor/composer/composer/src/Composer/Util/IniHelper.php`’¢ž``ÊÈÈX¤;vendor/composer/composer/src/Composer/Util/ErrorHandler.phpC ’¢ž`C Ê÷«²¤6vendor/composer/composer/src/Composer/Script/Event.phpÆ ’¢ž`Æ µ‘hÀ¤=vendor/composer/composer/src/Composer/Script/ScriptEvents.php'’¢ž`'ù �ƤCvendor/composer/composer/src/Composer/Plugin/PrePoolCreateEvent.php± ’¢ž`± _Ywj¤@vendor/composer/composer/src/Composer/Plugin/PluginInterface.php­’¢ž`­Ú¶]÷¤Evendor/composer/composer/src/Composer/Plugin/PreFileDownloadEvent.php0 ’¢ž`0 ›æ>‹¤Fvendor/composer/composer/src/Composer/Plugin/PostFileDownloadEvent.php𒢞`ð P›W¤=vendor/composer/composer/src/Composer/Plugin/PluginEvents.php'’¢ž`'õÒ=í¤=vendor/composer/composer/src/Composer/Plugin/CommandEvent.php­’¢ž`­#­ ¤Fvendor/composer/composer/src/Composer/Plugin/Capability/Capability.phpå’¢ž`åY9±3¤Kvendor/composer/composer/src/Composer/Plugin/Capability/CommandProvider.php_’¢ž`_‚μè¤8vendor/composer/composer/src/Composer/Plugin/Capable.php›’¢ž`›'ñ}¤Cvendor/composer/composer/src/Composer/Plugin/PreCommandRunEvent.phpM’¢ž`MÃ’@ ¤>vendor/composer/composer/src/Composer/Plugin/PluginManager.phpÏR’¢ž`ÏRMȤRvendor/composer/composer/src/Composer/EventDispatcher/EventSubscriberInterface.php’¢ž`�#g¤Rvendor/composer/composer/src/Composer/EventDispatcher/ScriptExecutionException.php¦’¢ž`¦\!'Ƥ?vendor/composer/composer/src/Composer/EventDispatcher/Event.phpf’¢ž`fKxÕ¤Ivendor/composer/composer/src/Composer/EventDispatcher/EventDispatcher.phpT’¢ž`TšÅ¸¼¤2vendor/composer/composer/src/Composer/Compiler.php*’¢ž`*/×ѤDvendor/composer/composer/src/Composer/Autoload/AutoloadGenerator.phpï²’¢ž`ï²ìkÁ¤>vendor/composer/composer/src/Composer/Autoload/ClassLoader.php8’¢ž`8l=ú-¤Dvendor/composer/composer/src/Composer/Autoload/ClassMapGenerator.php 3’¢ž` 3R&˜è¤Avendor/composer/composer/src/Composer/Command/LicensesCommand.php«’¢ž`«ÙXb¢¤Dvendor/composer/composer/src/Composer/Command/ScriptAliasCommand.phpÓ’¢ž`ÓÉfO¢¤@vendor/composer/composer/src/Composer/Command/ArchiveCommand.php{’¢ž`{Èh‡¤=vendor/composer/composer/src/Composer/Command/InitCommand.php>ˆ’¢ž`>ˆ[(°§¤Bvendor/composer/composer/src/Composer/Command/RunScriptCommand.php»’¢ž`»YÞâ¤?vendor/composer/composer/src/Composer/Command/SearchCommand.phpý ’¢ž`ý K€5Ó¤Avendor/composer/composer/src/Composer/Command/DiagnoseCommand.phprf’¢ž`rf'P�€¤=vendor/composer/composer/src/Composer/Command/HomeCommand.phpz’¢ž`zÂ�¤=vendor/composer/composer/src/Composer/Command/ShowCommand.phpÂÍ’¢ž`ÂͶ€w™¤Avendor/composer/composer/src/Composer/Command/OutdatedCommand.php’¢ž`¾aRj¤=vendor/composer/composer/src/Composer/Command/FundCommand.php’¢ž`î*²W¤Avendor/composer/composer/src/Composer/Command/SuggestsCommand.phpÏ’¢ž`ÏÚ¼ó“¤@vendor/composer/composer/src/Composer/Command/DependsCommand.phpm’¢ž`m¦âŤ?vendor/composer/composer/src/Composer/Command/StatusCommand.php�!’¢ž`�!‡sϤEvendor/composer/composer/src/Composer/Command/DumpAutoloadCommand.php’¢ž`R€Q¤>vendor/composer/composer/src/Composer/Command/AboutCommand.php”’¢ž`”'û|¤Jvendor/composer/composer/src/Composer/Command/CheckPlatformReqsCommand.php²’¢ž`²¦z<¤Fvendor/composer/composer/src/Composer/Command/CreateProjectCommand.phpV’¢ž`V¼ „.¤?vendor/composer/composer/src/Composer/Command/ConfigCommand.php'~’¢ž`'~( ¤=vendor/composer/composer/src/Composer/Command/BaseCommand.phpF’¢ž`F±kÌå¤?vendor/composer/composer/src/Composer/Command/RemoveCommand.php 7’¢ž` 7 VǤCvendor/composer/composer/src/Composer/Command/ClearCacheCommand.php±’¢ž`±)Å©©¤Gvendor/composer/composer/src/Composer/Command/BaseDependencyCommand.php&’¢ž`&ç–©¤?vendor/composer/composer/src/Composer/Command/UpdateCommand.phpm>’¢ž`m>SmÌÞ¤=vendor/composer/composer/src/Composer/Command/ExecCommand.phpŒ ’¢ž`Œ ¶Ê%�¤Avendor/composer/composer/src/Composer/Command/ValidateCommand.phpU’¢ž`U.H Ú¤@vendor/composer/composer/src/Composer/Command/InstallCommand.php}’¢ž`}r‹TS¤Bvendor/composer/composer/src/Composer/Command/ProhibitsCommand.phpŽ’¢ž`Žø�ëÙ¤?vendor/composer/composer/src/Composer/Command/GlobalCommand.phpD’¢ž`D%¹®=¤@vendor/composer/composer/src/Composer/Command/RequireCommand.php¼G’¢ž`¼GÉ¥¾¤Cvendor/composer/composer/src/Composer/Command/SelfUpdateCommand.php›`’¢ž`›`Î<@̤9vendor/composer/composer/src/Composer/SelfUpdate/Keys.phpj’¢ž`jÜï�A¤=vendor/composer/composer/src/Composer/SelfUpdate/Versions.php ’¢ž` Ÿa›ã¤Fvendor/composer/composer/src/Composer/Json/JsonValidationException.phpÀ’¢ž`À—”JȤ>vendor/composer/composer/src/Composer/Json/JsonManipulator.phpÁQ’¢ž`ÁQ3'þþ¤<vendor/composer/composer/src/Composer/Json/JsonFormatter.php¡’¢ž`¡Sé¤7vendor/composer/composer/src/Composer/Json/JsonFile.php³)’¢ž`³)éò­¤Bvendor/composer/composer/src/Composer/Exception/NoSslException.phpÚ’¢ž`Ú8M5í¤Rvendor/composer/composer/src/Composer/Exception/IrrecoverableDownloadException.php¦’¢ž`¦Š‹-¤Gvendor/composer/composer/src/Composer/Installer/InstallationManager.php`Y’¢ž``Y¸àáw¤Cvendor/composer/composer/src/Composer/Installer/PluginInstaller.phpÃ’¢ž`ÃÜ~¥X¤@vendor/composer/composer/src/Composer/Installer/PackageEvent.phpM ’¢ž`M ?yÇ%¤Dvendor/composer/composer/src/Composer/Installer/ProjectInstaller.php ’¢ž` ÇÅ›¦¤Cvendor/composer/composer/src/Composer/Installer/BinaryInstaller.phph!’¢ž`h!²¬´g¤Avendor/composer/composer/src/Composer/Installer/PackageEvents.phpä’¢ž`äZ»V¬¤Dvendor/composer/composer/src/Composer/Installer/LibraryInstaller.phpÑ'’¢ž`Ñ'ò“Ì•¤Mvendor/composer/composer/src/Composer/Installer/SuggestedPackagesReporter.phpñ ’¢ž`ñ �/—¾¤Avendor/composer/composer/src/Composer/Installer/NoopInstaller.php* ’¢ž`* ¢`XܤFvendor/composer/composer/src/Composer/Installer/InstallerInterface.php¶’¢ž`¶ü}’{¤Cvendor/composer/composer/src/Composer/Installer/InstallerEvents.php{’¢ž`{ôÙ3ã¤Hvendor/composer/composer/src/Composer/Installer/MetapackageInstaller.php‘ ’¢ž`‘ 5 à@¤Kvendor/composer/composer/src/Composer/Installer/BinaryPresenceInterface.phpÛ’¢ž`Û©Çô¤Bvendor/composer/composer/src/Composer/Installer/InstallerEvent.phpø’¢ž`ø~¸,¤2vendor/composer/composer/src/Composer/Composer.phpŸ’¢ž`Ÿ  x?¤Hvendor/composer/composer/src/Composer/Downloader/DownloaderInterface.php¿’¢ž`¿á°1¤Bvendor/composer/composer/src/Composer/Downloader/RarDownloader.phpe ’¢ž`e EÓù¤Bvendor/composer/composer/src/Composer/Downloader/TarDownloader.phpü’¢ž`üÎ ·f¤Gvendor/composer/composer/src/Composer/Downloader/PerforceDownloader.php° ’¢ž`° XèŤDvendor/composer/composer/src/Composer/Downloader/DownloadManager.phpï<’¢ž`ï<¿~rl¤Fvendor/composer/composer/src/Composer/Downloader/ArchiveDownloader.php“’¢ž`“ã`Qä¤Hvendor/composer/composer/src/Composer/Downloader/FilesystemException.php ’¢ž` ¿ì”¤Lvendor/composer/composer/src/Composer/Downloader/DvcsDownloaderInterface.php’¢ž`êv (¤Bvendor/composer/composer/src/Composer/Downloader/GitDownloader.phpþ\’¢ž`þ\oQ�®¤Evendor/composer/composer/src/Composer/Downloader/FossilDownloader.php,’¢ž`,Åz ­¤Cvendor/composer/composer/src/Composer/Downloader/PathDownloader.php*&’¢ž`*&Ö[hò¤Jvendor/composer/composer/src/Composer/Downloader/ChangeReportInterface.phpþ’¢ž`þÙ)Ÿ¤Cvendor/composer/composer/src/Composer/Downloader/PharDownloader.phpì’¢ž`ìH$+å¤Rvendor/composer/composer/src/Composer/Downloader/VcsCapableDownloaderInterface.php’¢ž` œ™¤Gvendor/composer/composer/src/Composer/Downloader/TransportException.php9’¢ž`9ý¤Bvendor/composer/composer/src/Composer/Downloader/SvnDownloader.phpó ’¢ž`ó >�愤Avendor/composer/composer/src/Composer/Downloader/HgDownloader.php ’¢ž` ˆ’q¤Avendor/composer/composer/src/Composer/Downloader/XzDownloader.phpé’¢ž`éˤQvendor/composer/composer/src/Composer/Downloader/MaxFileSizeExceededException.phpo’¢ž`o¿:®§¤Bvendor/composer/composer/src/Composer/Downloader/VcsDownloader.php00’¢ž`00nè¤Bvendor/composer/composer/src/Composer/Downloader/ZipDownloader.phpÞ)’¢ž`Þ)@¾¤Cvendor/composer/composer/src/Composer/Downloader/GzipDownloader.php±’¢ž`±u²Æî¤Cvendor/composer/composer/src/Composer/Downloader/FileDownloader.php‚D’¢ž`‚Dm?HÛ¤Avendor/composer/composer/src/Composer/Config/JsonConfigSource.phpZ(’¢ž`Z(¥B‘y¤Fvendor/composer/composer/src/Composer/Config/ConfigSourceInterface.phpß’¢ž`ßt¯¯:¤Ovendor/composer/composer/src/Composer/DependencyResolver/SolverBugException.phpþ’¢ž`þ¾8|4¤Jvendor/composer/composer/src/Composer/DependencyResolver/DefaultPolicy.php­’¢ž`­óñ\�¤Jvendor/composer/composer/src/Composer/DependencyResolver/Rule2Literals.phpQ ’¢ž`Q û°Ñ6¤Kvendor/composer/composer/src/Composer/DependencyResolver/RuleWatchChain.phpz’¢ž`zd]_C¤Wvendor/composer/composer/src/Composer/DependencyResolver/Operation/InstallOperation.php’¢ž`ã‹¶t¤Yvendor/composer/composer/src/Composer/DependencyResolver/Operation/UninstallOperation.phpí’¢ž`í"×jb¤Yvendor/composer/composer/src/Composer/DependencyResolver/Operation/OperationInterface.php“’¢ž`“ Y/z¤bvendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasInstalledOperation.php ’¢ž` ûEឤVvendor/composer/composer/src/Composer/DependencyResolver/Operation/UpdateOperation.php ’¢ž` _^¤dvendor/composer/composer/src/Composer/DependencyResolver/Operation/MarkAliasUninstalledOperation.php’¢ž`s[ §¤Vvendor/composer/composer/src/Composer/DependencyResolver/Operation/SolverOperation.php’¢ž`a‘ÈY¤Lvendor/composer/composer/src/Composer/DependencyResolver/RuleSetIterator.php ’¢ž` 98A ¤Kvendor/composer/composer/src/Composer/DependencyResolver/RuleWatchGraph.phpì’¢ž`ìy¡¤Tvendor/composer/composer/src/Composer/DependencyResolver/SolverProblemsException.php¸’¢ž`¸4žAå¤Hvendor/composer/composer/src/Composer/DependencyResolver/PoolBuilder.phpâY’¢ž`âYw.ÌÚ¤Dvendor/composer/composer/src/Composer/DependencyResolver/Request.php<’¢ž`<öJIp¤Lvendor/composer/composer/src/Composer/DependencyResolver/PolicyInterface.phpp’¢ž`pw:ŤCvendor/composer/composer/src/Composer/DependencyResolver/Solver.phpÅg’¢ž`Åg)”L¨¤Hvendor/composer/composer/src/Composer/DependencyResolver/Transaction.php¬4’¢ž`¬4al³¤Avendor/composer/composer/src/Composer/DependencyResolver/Pool.phpÀ’¢ž`À»,½¤Avendor/composer/composer/src/Composer/DependencyResolver/Rule.phpÝ;’¢ž`Ý;¹/¶¤Nvendor/composer/composer/src/Composer/DependencyResolver/MultiConflictRule.phpc ’¢ž`c UtÏñ¤Qvendor/composer/composer/src/Composer/DependencyResolver/LocalRepoTransaction.phpÂ’¢ž`Âo*¤Mvendor/composer/composer/src/Composer/DependencyResolver/RuleSetGenerator.php¡/’¢ž`¡/r®¤Dvendor/composer/composer/src/Composer/DependencyResolver/Problem.phpƒO’¢ž`ƒOåȃô¤Hvendor/composer/composer/src/Composer/DependencyResolver/GenericRule.php0’¢ž`0X·9À¤Dvendor/composer/composer/src/Composer/DependencyResolver/RuleSet.php’¢ž`RµUà¤Jvendor/composer/composer/src/Composer/DependencyResolver/RuleWatchNode.php ’¢ž` ˰7 ¤Lvendor/composer/composer/src/Composer/DependencyResolver/LockTransaction.phpy’¢ž`ywè�=¤Fvendor/composer/composer/src/Composer/DependencyResolver/Decisions.php4’¢ž`4¯Už¤/vendor/composer/composer/src/Composer/Cache.php‰ ’¢ž`‰ _®_'¤*vendor/composer/composer/src/bootstrap.phpÉ’¢ž`ÉcAlé¤vendor/composer/ClassLoader.php8’¢ž`8l=ú-¤vendor/composer/installed.php1’¢ž`1í t®¤:vendor/composer/metadata-minifier/src/MetadataMinifier.php² ’¢ž`² Ölï3¤,vendor/composer/semver/src/VersionParser.php;R’¢ž`;R‰×”ô¤%vendor/composer/semver/src/Semver.php# ’¢ž`# ts à¤/vendor/composer/semver/src/CompilingMatcher.phpÛ’¢ž`Û‘î“(¤)vendor/composer/semver/src/Comparator.php ’¢ž` Sw ¨¤'vendor/composer/semver/src/Interval.php~’¢ž`~E|¼V¤9vendor/composer/semver/src/Constraint/MultiConstraint.php÷ ’¢ž`÷ ¢7þ$¤<vendor/composer/semver/src/Constraint/MatchAllConstraint.php¯’¢ž`¯¥pÕç¤=vendor/composer/semver/src/Constraint/MatchNoneConstraint.php©’¢ž`©µ2” ¤=vendor/composer/semver/src/Constraint/ConstraintInterface.phpT’¢ž`T$xbФ/vendor/composer/semver/src/Constraint/Bound.php ’¢ž` ”!IO¤4vendor/composer/semver/src/Constraint/Constraint.phpn/’¢ž`n/»6c¤(vendor/composer/semver/src/Intervals.phpÎO’¢ž`ÎO»tT¤!vendor/composer/autoload_real.phpõ ’¢ž`õ Š�¤"vendor/composer/autoload_files.phpÚ ’¢ž`Ú O�¤*vendor/composer/ca-bundle/src/CaBundle.php<’¢ž`<À«è&¤"vendor/symfony/process/Process.phpÓÙ’¢ž`ÓÙöÌž'¤&vendor/symfony/process/InputStream.php ’¢ž` w'˜È¤'vendor/symfony/process/ProcessUtils.php­’¢ž`­aXa¤/vendor/symfony/process/Pipes/PipesInterface.phpø’¢ž`øã+’³¤-vendor/symfony/process/Pipes/WindowsPipes.phpu’¢ž`uu¹¤.vendor/symfony/process/Pipes/AbstractPipes.php®’¢ž`®†ó<¤*vendor/symfony/process/Pipes/UnixPipes.php,’¢ž`,q¤.vendor/symfony/process/PhpExecutableFinder.phpG ’¢ž`G _¤#¤+vendor/symfony/process/ExecutableFinder.php" ’¢ž`" %"x´¤=vendor/symfony/process/Exception/InvalidArgumentException.php𒢞`ðË…�ë¤3vendor/symfony/process/Exception/LogicException.phpÒ’¢ž`Ò°¨W¤5vendor/symfony/process/Exception/RuntimeException.phpá’¢ž`á>H–™¤7vendor/symfony/process/Exception/ExceptionInterface.php¯’¢ž`¯�<ž¤=vendor/symfony/process/Exception/ProcessTimedOutException.php{’¢ž`{4±¤;vendor/symfony/process/Exception/ProcessFailedException.php�’¢ž`�PÁ´5¤)vendor/symfony/process/ProcessBuilder.php ’¢ž` j'Uh¤%vendor/symfony/process/PhpProcess.phpÀ ’¢ž`À ø¡¶¤+vendor/symfony/polyfill-ctype/bootstrap.php’¢ž`À01ö¤'vendor/symfony/polyfill-ctype/Ctype.php}’¢ž`}\Šè°¤(vendor/symfony/filesystem/Filesystem.phpGt’¢ž`Gt.WXˆ¤)vendor/symfony/filesystem/LockHandler.php>’¢ž`>8H ¤<vendor/symfony/filesystem/Exception/IOExceptionInterface.php¦’¢ž`¦¨™i”¤=vendor/symfony/filesystem/Exception/FileNotFoundException.php·’¢ž`·þ0z¤:vendor/symfony/filesystem/Exception/ExceptionInterface.php½’¢ž`½hª ¤3vendor/symfony/filesystem/Exception/IOException.phpª’¢ž`ªÑ‘„A¤.vendor/symfony/polyfill-mbstring/bootstrap.php�’¢ž`�m |D¤@vendor/symfony/polyfill-mbstring/Resources/unidata/lowerCase.phpÙ_’¢ž`Ù_Z¶ŸŠ¤Fvendor/symfony/polyfill-mbstring/Resources/unidata/titleCaseRegexp.php9’¢ž`9>|zK¤@vendor/symfony/polyfill-mbstring/Resources/unidata/upperCase.phpò`’¢ž`ò`ŠSéý¤Dvendor/symfony/polyfill-mbstring/Resources/mb_convert_variables.php8?’¢ž`?òï ¤-vendor/symfony/polyfill-mbstring/Mbstring.phpn’¢ž`np^çC¤3vendor/symfony/console/Tester/ApplicationTester.php ’¢ž` Z™çé¤/vendor/symfony/console/Tester/CommandTester.phpí’¢ž`í›Ddž¤,vendor/symfony/console/Question/Question.phpá’¢ž`á�Ί�¤2vendor/symfony/console/Question/ChoiceQuestion.php]’¢ž`]�5ˆ'¤8vendor/symfony/console/Question/ConfirmationQuestion.php#’¢ž`#Ï�û¤/vendor/symfony/console/Logger/ConsoleLogger.phpÚ’¢ž`Ú÷†U¤?vendor/symfony/console/CommandLoader/CommandLoaderInterface.php ’¢ž` ºÇö¤?vendor/symfony/console/CommandLoader/ContainerCommandLoader.php>’¢ž`>#º“*¤=vendor/symfony/console/CommandLoader/FactoryCommandLoader.php7’¢ž`7‚m_ò¤0vendor/symfony/console/Descriptor/Descriptor.phpd ’¢ž`d ¡ÖåT¤8vendor/symfony/console/Descriptor/MarkdownDescriptor.php½’¢ž`½f 0>¤4vendor/symfony/console/Descriptor/TextDescriptor.phpf0’¢ž`f0£ÇW¤9vendor/symfony/console/Descriptor/DescriptorInterface.phpƒ’¢ž`ƒPÚZö¤3vendor/symfony/console/Descriptor/XmlDescriptor.phpñ#’¢ž`ñ#ÇÐdK¤<vendor/symfony/console/Descriptor/ApplicationDescription.php‹’¢ž`‹ÕѬ¤4vendor/symfony/console/Descriptor/JsonDescriptor.php’¢ž`nô¤>vendor/symfony/console/Formatter/OutputFormatterStyleStack.phpµ ’¢ž`µ —¿‹Ò¤9vendor/symfony/console/Formatter/OutputFormatterStyle.php2’¢ž`2S»›¤=vendor/symfony/console/Formatter/OutputFormatterInterface.php¦’¢ž`¦#7êu¤Bvendor/symfony/console/Formatter/OutputFormatterStyleInterface.php<’¢ž`<Ÿ½ÐZ¤4vendor/symfony/console/Formatter/OutputFormatter.php¡’¢ž`¡Nˆ‘x¤1vendor/symfony/console/Output/OutputInterface.php ’¢ž` ’³é&¤(vendor/symfony/console/Output/Output.php{’¢ž`{îžø7¤8vendor/symfony/console/Output/ConsoleOutputInterface.phpÞ’¢ž`Þ¿ ƒ¤,vendor/symfony/console/Output/NullOutput.phpn’¢ž`nt�D»¤.vendor/symfony/console/Output/StreamOutput.phpo’¢ž`o Ã~¤0vendor/symfony/console/Output/BufferedOutput.phpI’¢ž`I…\ü¤/vendor/symfony/console/Output/ConsoleOutput.php§’¢ž`§·JDb¤/vendor/symfony/console/Helper/ProcessHelper.phpÏ’¢ž`Ïþtû¤7vendor/symfony/console/Helper/SymfonyQuestionHelper.php‡’¢ž`‡9‹ôð¤(vendor/symfony/console/Helper/Helper.php°’¢ž`°}Ku·¤'vendor/symfony/console/Helper/Table.php¸M’¢ž`¸Më!<¤2vendor/symfony/console/Helper/InputAwareHelper.phpë’¢ž`ë¼�¤2vendor/symfony/console/Helper/DescriptorHelper.php‘ ’¢ž`‘ Ëûþ¤6vendor/symfony/console/Helper/DebugFormatterHelper.phpH’¢ž`H]R`A¤,vendor/symfony/console/Helper/TableStyle.php{’¢ž`{²pn¤+vendor/symfony/console/Helper/TableCell.phpR’¢ž`RíJ{¿¤1vendor/symfony/console/Helper/HelperInterface.phpp’¢ž`p‘àñn¤0vendor/symfony/console/Helper/QuestionHelper.phpB’¢ž`B§Ý—^¤1vendor/symfony/console/Helper/FormatterHelper.phpá ’¢ž`á Uúö¤+vendor/symfony/console/Helper/HelperSet.phpÁ ’¢ž`Á Ã3C ¤-vendor/symfony/console/Helper/ProgressBar.php?C’¢ž`?C8™°¤3vendor/symfony/console/Helper/ProgressIndicator.php¦’¢ž`¦ŠÐ”P¤0vendor/symfony/console/Helper/TableSeparator.php’¢ž`&Šª ¤#vendor/symfony/console/Terminal.phpÒ’¢ž`Òu¾ï¤.vendor/symfony/console/Command/ListCommand.phpÿ ’¢ž`ÿ ñ›#¤*vendor/symfony/console/Command/Command.php†L’¢ž`†LFúåý¤.vendor/symfony/console/Command/HelpCommand.php? ’¢ž`? ø�ä'¤0vendor/symfony/console/Command/LockableTrait.phpä’¢ž`äŠîO¤(vendor/symfony/console/ConsoleEvents.php!’¢ž`!Ÿ“Ω¤-vendor/symfony/console/Style/SymfonyStyle.phpO/’¢ž`O/A z¤,vendor/symfony/console/Style/OutputStyle.phpþ ’¢ž`þ “±¢~¤/vendor/symfony/console/Style/StyleInterface.php( ’¢ž`( ¯5 ñ¤=vendor/symfony/console/Exception/CommandNotFoundException.php½’¢ž`½.—o£¤=vendor/symfony/console/Exception/InvalidArgumentException.php¾’¢ž`¾îu i¤3vendor/symfony/console/Exception/LogicException.phpª’¢ž`ªSML�¤;vendor/symfony/console/Exception/InvalidOptionException.phpü’¢ž`üí“;¤5vendor/symfony/console/Exception/RuntimeException.php®’¢ž`®¶*b¤7vendor/symfony/console/Exception/ExceptionInterface.php–’¢ž`–ãëÚU¤&vendor/symfony/console/Application.php6­’¢ž`6­÷A§c¤Dvendor/symfony/console/DependencyInjection/AddConsoleCommandPass.phpš’¢ž`šA|\¤2vendor/symfony/console/Event/ConsoleErrorEvent.phpÅ’¢ž`Ål›�¤6vendor/symfony/console/Event/ConsoleExceptionEvent.phpT’¢ž`TÃÞã¤4vendor/symfony/console/Event/ConsoleCommandEvent.php%’¢ž`%{˾à¤-vendor/symfony/console/Event/ConsoleEvent.phpÄ’¢ž`ÄxS*¤6vendor/symfony/console/Event/ConsoleTerminateEvent.php’¢ž`{eð¤,vendor/symfony/console/Input/StringInput.phpF ’¢ž`F ý¥c:¤/vendor/symfony/console/Input/InputInterface.php±’¢ž`±õΈڤ0vendor/symfony/console/Input/InputDefinition.phpÓ+’¢ž`Ó+»|¤9vendor/symfony/console/Input/StreamableInputInterface.phpi’¢ž`iõ™í¤&vendor/symfony/console/Input/Input.phpr’¢ž`rU‚jx¤4vendor/symfony/console/Input/InputAwareInterface.php:’¢ž`:± '´¤.vendor/symfony/console/Input/InputArgument.phpO ’¢ž`O (ÐÀâ¤,vendor/symfony/console/Input/InputOption.php¢’¢ž`¢œ«6]¤+vendor/symfony/console/Input/ArrayInput.php0’¢ž`0mQj¤*vendor/symfony/console/Input/ArgvInput.php&/’¢ž`&/Œüƒ¤6vendor/symfony/console/EventListener/ErrorListener.phpô ’¢ž`ô e?Ãߤvendor/symfony/finder/Glob.phpí’¢ž`홾²{¤6vendor/symfony/finder/Exception/ExceptionInterface.php"’¢ž`"Ú€fW¤9vendor/symfony/finder/Exception/AccessDeniedException.php«’¢ž`«ÊcWÞ¤5vendor/symfony/finder/Iterator/PathFilterIterator.php«’¢ž`«}£¬¤9vendor/symfony/finder/Iterator/FileTypeFilterIterator.php>’¢ž`>pÀŸY¤:vendor/symfony/finder/Iterator/DateRangeFilterIterator.php¥’¢ž`¥$99¤=vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php.’¢ž`.ó�sÓ¤;vendor/symfony/finder/Iterator/DepthRangeFilterIterator.phpÌ’¢ž`ÌÛ*¬¤7vendor/symfony/finder/Iterator/CustomFilterIterator.phpé’¢ž`éµß ¤<vendor/symfony/finder/Iterator/FilecontentFilterIterator.php¦’¢ž`¦rÜ~¤Avendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php– ’¢ž`– tð褤9vendor/symfony/finder/Iterator/FilenameFilterIterator.php•’¢ž`• ËpÀ¤3vendor/symfony/finder/Iterator/SortableIterator.php@ ’¢ž`@ Î[ ¤=vendor/symfony/finder/Iterator/MultiplePcreFilterIterator.phpz ’¢ž`z 6©ì¦¤1vendor/symfony/finder/Iterator/FilterIterator.phpÉ’¢ž`ÉVASs¤:vendor/symfony/finder/Iterator/SizeRangeFilterIterator.php‚’¢ž`‚8Kµ¤/vendor/symfony/finder/Comparator/Comparator.php’¢ž`~4�ؤ5vendor/symfony/finder/Comparator/NumberComparator.php ’¢ž` ØÙº¤3vendor/symfony/finder/Comparator/DateComparator.phpž’¢ž`žмGä vendor/symfony/finder/Finder.php{N’¢ž`{N™Iîí¤%vendor/symfony/finder/SplFileInfo.phpW’¢ž`W!tVb¤-vendor/react/promise/src/PromiseInterface.phpø’¢ž`ø^© Ǥ,vendor/react/promise/src/RejectedPromise.php¡’¢ž`¡�M®0¤8vendor/react/promise/src/UnhandledRejectionException.phpe’¢ž`eg4ߤ(vendor/react/promise/src/LazyPromise.phpÏ’¢ž`Ï”M…J¤.vendor/react/promise/src/functions_include.phpa’¢ž`a…|â¤%vendor/react/promise/src/Deferred.php¼’¢ž`¼ ̤&vendor/react/promise/src/functions.phpŒ/’¢ž`Œ/ hzì¤.vendor/react/promise/src/PromisorInterface.phpÃ’¢ž`Ãwµ;¤-vendor/react/promise/src/FulfilledPromise.php^’¢ž`^Áv¤$vendor/react/promise/src/Promise.phpŒ"’¢ž`Œ"Éàm¤5vendor/react/promise/src/ExtendedPromiseInterface.phpv ’¢ž`v ŽÉI¤8vendor/react/promise/src/CancellablePromiseInterface.php¶’¢ž`¶²\lb¤.vendor/react/promise/src/CancellationQueue.phpu’¢ž`uœ�¤n¤6vendor/react/promise/src/Exception/LengthException.php^’¢ž`^?q¤/vendor/wp-cli/entity-command/entity-command.phpç ’¢ž`ç é³%®¤6vendor/wp-cli/entity-command/src/Term_Meta_Command.php“’¢ž`“ŸBÑs¤5vendor/wp-cli/entity-command/src/Taxonomy_Command.php³’¢ž`³¯;ìf¤6vendor/wp-cli/entity-command/src/Network_Namespace.php*’¢ž`*{Þd¤4vendor/wp-cli/entity-command/src/Comment_Command.phpB’¢ž`BÀ\K¤9vendor/wp-cli/entity-command/src/Comment_Meta_Command.phpý’¢ž`ýCq¨ð¤1vendor/wp-cli/entity-command/src/User_Command.phpo‰’¢ž`o‰O({A¤3vendor/wp-cli/entity-command/src/Option_Command.php,?’¢ž`,?uú¤6vendor/wp-cli/entity-command/src/User_Meta_Command.php»$’¢ž`»$RI|K¤:vendor/wp-cli/entity-command/src/Menu_Location_Command.php»’¢ž`»dûñ¤8vendor/wp-cli/entity-command/src/Site_Option_Command.php€'’¢ž`€'WW™ù¤1vendor/wp-cli/entity-command/src/Term_Command.phpÀK’¢ž`ÀK­G¤6vendor/wp-cli/entity-command/src/Menu_Item_Command.phpð3’¢ž`ð3~_«×¤6vendor/wp-cli/entity-command/src/Post_Type_Command.phpç’¢ž`çÍz›_¤9vendor/wp-cli/entity-command/src/User_Session_Command.phpä’¢ž`äÌiýŒ¤1vendor/wp-cli/entity-command/src/Menu_Command.php ’¢ž` õÄÏͤ6vendor/wp-cli/entity-command/src/Post_Term_Command.php’¢ž`)7Œ¿¤8vendor/wp-cli/entity-command/src/WP_CLI/Entity/Utils.php�’¢ž`�·y㦤Rvendor/wp-cli/entity-command/src/WP_CLI/Entity/RecursiveDataStructureTraverser.php’¢ž`ÃLm¤Jvendor/wp-cli/entity-command/src/WP_CLI/Entity/NonExistentKeyException.phpË’¢ž`ËÍ̱h¤;vendor/wp-cli/entity-command/src/WP_CLI/CommandWithMeta.php;9’¢ž`;9y€ü ¤<vendor/wp-cli/entity-command/src/WP_CLI/CommandWithTerms.phpe’¢ž`e(Q>§¤?vendor/wp-cli/entity-command/src/WP_CLI/CommandWithDBObject.php£’¢ž`£ƒ”#¤6vendor/wp-cli/entity-command/src/Site_Meta_Command.php�’¢ž`�Úv”­¤9vendor/wp-cli/entity-command/src/Network_Meta_Command.php]’¢ž`]ékN¤6vendor/wp-cli/entity-command/src/User_Term_Command.php&’¢ž`&¡{b¤6vendor/wp-cli/entity-command/src/Post_Meta_Command.php“’¢ž`“×ÿÔû¤1vendor/wp-cli/entity-command/src/Post_Command.phpJm’¢ž`JmÕVÈã¤1vendor/wp-cli/entity-command/src/Site_Command.php�U’¢ž`�UM¬–¸¤5vendor/wp-cli/extension-command/extension-command.php)’¢ž`)°¤Avendor/wp-cli/extension-command/src/Theme_AutoUpdates_Command.php’¢ž`(cx¤5vendor/wp-cli/extension-command/src/Theme_Command.phpÔ_’¢ž`Ô_«»êI¤Bvendor/wp-cli/extension-command/src/Plugin_AutoUpdates_Command.php„’¢ž`„Ç%�¤9vendor/wp-cli/extension-command/src/Theme_Mod_Command.phpÎ’¢ž`Îñ{¯(¤Hvendor/wp-cli/extension-command/src/WP_CLI/DestructivePluginUpgrader.php«’¢ž`«I�ɤ>vendor/wp-cli/extension-command/src/WP_CLI/Fetchers/Plugin.php"’¢ž`" Fä ¤=vendor/wp-cli/extension-command/src/WP_CLI/Fetchers/Theme.php ’¢ž` Øú3¬¤Avendor/wp-cli/extension-command/src/WP_CLI/CommandWithUpgrade.phpt[’¢ž`t[²ŽæP¤Cvendor/wp-cli/extension-command/src/WP_CLI/ParsePluginNameInput.phpˆ’¢ž`ˆG0”-¤Bvendor/wp-cli/extension-command/src/WP_CLI/ParseThemeNameInput.phph’¢ž`hôG€¤Gvendor/wp-cli/extension-command/src/WP_CLI/DestructiveThemeUpgrader.php¨’¢ž`¨SŒý¤6vendor/wp-cli/extension-command/src/Plugin_Command.phpá’’¢ž`á’¢±Ò¤/vendor/wp-cli/import-command/import-command.php’¢ž`‡äʤ3vendor/wp-cli/import-command/src/Import_Command.php9’¢ž`9…Œ¤/vendor/wp-cli/server-command/server-command.phpö’¢ž`öª+Á¤'vendor/wp-cli/server-command/router.phpN’¢ž`N7¦ý¤3vendor/wp-cli/server-command/src/Server_Command.php, ’¢ž`, š�6\¤'vendor/wp-cli/db-command/db-command.phpû’¢ž`ûÌýík¤+vendor/wp-cli/db-command/src/DB_Command.phpÂô’¢ž`Âô„ßý4¤?vendor/wp-cli/wp-config-transformer/src/WPConfigTransformer.phpô)’¢ž`ô)–¯%פ-vendor/wp-cli/media-command/media-command.php’’¢ž`’6ˆX“¤1vendor/wp-cli/media-command/src/Media_Command.phpà�’¢ž`à�§¤4vendor/wp-cli/embed-command/src/Embeds_Namespace.phpØ’¢ž`Øðüq¥¤1vendor/wp-cli/embed-command/src/Fetch_Command.phpÉ$’¢ž`É$›‰þ¤1vendor/wp-cli/embed-command/src/Cache_Command.phpš’¢ž`šmóPø¤7vendor/wp-cli/mustangostang-spyc/includes/functions.php’¢ž`¸±:¤)vendor/wp-cli/mustangostang-spyc/Spyc.phpË’¢ž`Ë–ªÑx¤.vendor/wp-cli/mustangostang-spyc/php4/5to4.phpØ’¢ž`ØuS])¤/vendor/wp-cli/mustangostang-spyc/php4/spyc.php4Iu’¢ž`Iuý-.¤/vendor/wp-cli/mustangostang-spyc/php4/test.php4‡’¢ž`‡ f3P¤-vendor/wp-cli/mustangostang-spyc/src/Spyc.phpË…’¢ž`Ë…è~ã¤+vendor/wp-cli/i18n-command/i18n-command.php$’¢ž`$ðT¤8vendor/wp-cli/i18n-command/src/IterableCodeExtractor.php¸!’¢ž`¸!to¾ñ¤/vendor/wp-cli/i18n-command/src/JedGenerator.phpm’¢ž`m¡Ê“¤2vendor/wp-cli/i18n-command/src/JsCodeExtractor.php’¢ž`-“Kç¤0vendor/wp-cli/i18n-command/src/MakeMoCommand.phpF’¢ž`Fºñ¾&¤3vendor/wp-cli/i18n-command/src/CommandNamespace.php–’¢ž`–õlhš¤1vendor/wp-cli/i18n-command/src/MakePotCommand.php\u’¢ž`\uer×Ó¤6vendor/wp-cli/i18n-command/src/PhpFunctionsScanner.phpË’¢ž`ËÂI”¤3vendor/wp-cli/i18n-command/src/MapCodeExtractor.php�’¢ž`�¨cºd¤5vendor/wp-cli/i18n-command/src/JsFunctionsScanner.phpî*’¢ž`î*zœ#¤/vendor/wp-cli/i18n-command/src/PotGenerator.phpQ’¢ž`Qƒì¤1vendor/wp-cli/i18n-command/src/BlockExtractor.phpž’¢ž`žŒѤ2vendor/wp-cli/i18n-command/src/MakeJsonCommand.php’¢ž`ø¦û¤3vendor/wp-cli/i18n-command/src/PhpCodeExtractor.php�’¢ž`�g®ˆ”¤+vendor/wp-cli/role-command/role-command.php;’¢ž`;aðv¤7vendor/wp-cli/role-command/src/Capabilities_Command.php3’¢ž`3å÷¤/vendor/wp-cli/role-command/src/Role_Command.phpr)’¢ž`r)€µ/Ô¤1vendor/wp-cli/rewrite-command/rewrite-command.php’¢ž`K«¤5vendor/wp-cli/rewrite-command/src/Rewrite_Command.php0’¢ž`0æ;¿¤3vendor/wp-cli/scaffold-command/scaffold-command.php’¢ž`æ´ƒ¤;vendor/wp-cli/scaffold-command/templates/block-php.mustache.’¢ž`.F^‚¤7vendor/wp-cli/scaffold-command/src/Scaffold_Command.php –’¢ž` –E�A¤*vendor/wp-cli/export-command/functions.phpp’¢ž`p葤/vendor/wp-cli/export-command/export-command.php’¢ž`ßÿ2d¤9vendor/wp-cli/export-command/src/WP_Post_IDs_Iterator.phpI’¢ž`I§ÚC¤:vendor/wp-cli/export-command/src/WP_Export_File_Writer.php>’¢ž`>R}T›¤8vendor/wp-cli/export-command/src/WP_Export_Exception.php>’¢ž`>Mˤ4vendor/wp-cli/export-command/src/WP_Export_Query.php64’¢ž`64Þ ™¤=vendor/wp-cli/export-command/src/WP_Export_Term_Exception.phpC’¢ž`CêǤ4vendor/wp-cli/export-command/src/WP_Map_Iterator.php@’¢ž`@ѱ�¤7vendor/wp-cli/export-command/src/WP_Export_Returner.phpB’¢ž`B³××M¤3vendor/wp-cli/export-command/src/Export_Command.php3’¢ž`3Ì&3¤<vendor/wp-cli/export-command/src/WP_Export_WXR_Formatter.php¸&’¢ž`¸&FŒ˜�¤5vendor/wp-cli/export-command/src/WP_Export_Oxymel.phpŽ’¢ž`Žh(­•¤Avendor/wp-cli/export-command/src/WP_Export_Split_Files_Writer.php- ’¢ž`- %@i¤:vendor/wp-cli/export-command/src/WP_Iterator_Exception.php9’¢ž`9¦w¤<vendor/wp-cli/export-command/src/WP_Export_XML_Over_HTTP.phpa’¢ž`a]€ž¿¤:vendor/wp-cli/export-command/src/WP_Export_Base_Writer.php¬’¢ž`¬Ç´b÷¤$vendor/wp-cli/php-cli-tools/test.phpi’¢ž`i3M™¤5vendor/wp-cli/php-cli-tools/lib/cli/tree/Renderer.phpO’¢ž`O›c"Ó¤5vendor/wp-cli/php-cli-tools/lib/cli/tree/Markdown.php¨’¢ž`¨ŒTé­¤2vendor/wp-cli/php-cli-tools/lib/cli/tree/Ascii.phpx’¢ž`x9�Õö¤-vendor/wp-cli/php-cli-tools/lib/cli/Table.php¡’¢ž`¡táˆ*¤0vendor/wp-cli/php-cli-tools/lib/cli/Progress.phpÉ ’¢ž`É ´aª¤4vendor/wp-cli/php-cli-tools/lib/cli/progress/Bar.php¶ ’¢ž`¶ n (O¤:vendor/wp-cli/php-cli-tools/lib/cli/arguments/Argument.php ’¢ž` =Æéé¤<vendor/wp-cli/php-cli-tools/lib/cli/arguments/HelpScreen.php  ’¢ž`  ýO$v¤7vendor/wp-cli/php-cli-tools/lib/cli/arguments/Lexer.php^ ’¢ž`^ üGؤBvendor/wp-cli/php-cli-tools/lib/cli/arguments/InvalidArguments.php’¢ž`µúØ#¤,vendor/wp-cli/php-cli-tools/lib/cli/Tree.php³’¢ž`³îý@¤.vendor/wp-cli/php-cli-tools/lib/cli/Colors.phpk!’¢ž`k!y6)¤.vendor/wp-cli/php-cli-tools/lib/cli/Notify.phpÍ’¢ž`Í,§¦¤+vendor/wp-cli/php-cli-tools/lib/cli/cli.phpÇ@’¢ž`Ç@ý~zפ5vendor/wp-cli/php-cli-tools/lib/cli/table/Tabular.php²’¢ž`²ùˆ¡l¤6vendor/wp-cli/php-cli-tools/lib/cli/table/Renderer.phpG’¢ž`GY†ß’¤3vendor/wp-cli/php-cli-tools/lib/cli/table/Ascii.php ’¢ž` �@%=¤6vendor/wp-cli/php-cli-tools/lib/cli/notify/Spinner.php’¢ž`8ûu¤3vendor/wp-cli/php-cli-tools/lib/cli/notify/Dots.phpd’¢ž`dÛwáz¤/vendor/wp-cli/php-cli-tools/lib/cli/Streams.php£"’¢ž`£"+Éf ¤-vendor/wp-cli/php-cli-tools/lib/cli/Shell.phpä ’¢ž`ä ‡mÅ»¤/vendor/wp-cli/php-cli-tools/lib/cli/Memoize.phpû’¢ž`ûÞô¤1vendor/wp-cli/php-cli-tools/lib/cli/Arguments.php/’¢ž`/à,7{¤5vendor/wp-cli/php-cli-tools/lib/cli/unicode/regex.phpb’¢ž`bɶ9ͤ,vendor/wp-cli/php-cli-tools/http-console.php’¢ž`ç‘È>¤+vendor/wp-cli/cron-command/cron-command.php�’¢ž`�²².¤5vendor/wp-cli/cron-command/src/Cron_Event_Command.phpß9’¢ž`ß9«Å»‰¤/vendor/wp-cli/cron-command/src/Cron_Command.php ’¢ž` ‡ão�¤8vendor/wp-cli/cron-command/src/Cron_Schedule_Command.phpi ’¢ž`i Ÿ¿@¤+vendor/wp-cli/core-command/core-command.php’¢ž`©:ˆ¯¤/vendor/wp-cli/core-command/src/Core_Command.phpž¯’¢ž`ž¯9ét¤;vendor/wp-cli/core-command/src/WP_CLI/Core/CoreUpgrader.php¼’¢ž`¼2ÿG(¤Ivendor/wp-cli/core-command/src/WP_CLI/Core/NonDestructiveCoreUpgrader.phpŸ’¢ž`Ÿ�!z~¤+vendor/wp-cli/wp-cli/utils/contrib-list.phpÃ’¢ž`ÃTE:¤#vendor/wp-cli/wp-cli/utils/find-php\’¢ž`\–\†)¤@vendor/wp-cli/wp-cli/utils/get-package-require-from-composer.phpä’¢ž`äæŸ ¤9vendor/wp-cli/super-admin-command/super-admin-command.php¾’¢ž`¾œÿˆ¤=vendor/wp-cli/super-admin-command/src/Super_Admin_Command.php8’¢ž`8Å*Ó|¤1vendor/wp-cli/package-command/package-command.php:’¢ž`:`†õ7¤<vendor/wp-cli/package-command/src/WP_CLI/JsonManipulator.phpS’¢ž`SÏ¢‡è¤5vendor/wp-cli/package-command/src/Package_Command.phpªÂ’¢ž`ªÂN+Ô¤?vendor/wp-cli/search-replace-command/search-replace-command.php7’¢ž`7®Ôæ¤Cvendor/wp-cli/search-replace-command/src/Search_Replace_Command.phpÆ’’¢ž`Æ’�秤Bvendor/wp-cli/search-replace-command/src/WP_CLI/SearchReplacer.phpR’¢ž`R$e¬¤-vendor/wp-cli/cache-command/cache-command.phpC’¢ž`C&'e¤5vendor/wp-cli/cache-command/src/Transient_Command.phpöD’¢ž`öDJo†¤1vendor/wp-cli/cache-command/src/Cache_Command.php1’¢ž`1É5¾Å¤-vendor/wp-cli/shell-command/shell-command.php ’¢ž` ÕÙ·¤1vendor/wp-cli/shell-command/src/Shell_Command.phpU’¢ž`UÃn*¤5vendor/wp-cli/shell-command/src/WP_CLI/Shell/REPL.phpÚ ’¢ž`Ú Db¤3vendor/wp-cli/checksum-command/checksum-command.php𒢞`ð[zßs¤?vendor/wp-cli/checksum-command/src/Plugin_Command_Namespace.php½’¢ž`½¦:f¤<vendor/wp-cli/checksum-command/src/Checksum_Base_Command.php ’¢ž` NŠº¤=vendor/wp-cli/checksum-command/src/Core_Command_Namespace.phpÀ’¢ž`À{Òêñ¤>vendor/wp-cli/checksum-command/src/Checksum_Plugin_Command.php1!’¢ž`1!3g21¤Gvendor/wp-cli/checksum-command/src/WP_CLI/Fetchers/UnfilteredPlugin.php:’¢ž`:<§g¤<vendor/wp-cli/checksum-command/src/Checksum_Core_Command.phpÐ’¢ž`ÐÉ!M¤3vendor/wp-cli/language-command/language-command.php1’¢ž`1ž7Èg¤>vendor/wp-cli/language-command/src/Plugin_Language_Command.php3’¢ž`3…BMº¤Cvendor/wp-cli/language-command/src/Site_Switch_Language_Command.php‚’¢ž`‚‡1¤=vendor/wp-cli/language-command/src/Theme_Language_Command.php]1’¢ž`]1íÛök¤9vendor/wp-cli/language-command/src/Language_Namespace.phpá’¢ž`á¿)|ƒ¤<vendor/wp-cli/language-command/src/Core_Language_Command.php›&’¢ž`›&)Ë Ê¤Dvendor/wp-cli/language-command/src/WP_CLI/CommandWithTranslation.phpÝ ’¢ž`Ý ,’Ù¤Bvendor/wp-cli/language-command/src/WP_CLI/LanguagePackUpgrader.phpñ ’¢ž`ñ ‹n°¤+vendor/wp-cli/eval-command/eval-command.php=’¢ž`=¶‡Ak¤/vendor/wp-cli/eval-command/src/Eval_Command.php]’¢ž`]'¦¬“¤3vendor/wp-cli/eval-command/src/EvalFile_Command.php+’¢ž`+7§‰>¤/vendor/wp-cli/widget-command/widget-command.phpD’¢ž`DÝî ¯¤3vendor/wp-cli/widget-command/src/Widget_Command.php•F’¢ž`•F*Wn¤4vendor/wp-cli/widget-command/src/Sidebar_Command.phpÒ’¢ž`Ò�d³ƒ¤/vendor/wp-cli/config-command/config-command.php’¢ž`7ÌÈQ¤3vendor/wp-cli/config-command/src/Config_Command.php¥j’¢ž`¥j,j¸ø¤vendor/nb/oxymel/Oxymel.php)’¢ž`)è(rÕ¤vendor/nb/oxymel/OxymelTest.php‚’¢ž`‚BL©V¤)vendor/psr/log/Psr/Log/AbstractLogger.php ’¢ž` Gœëâ¤/vendor/psr/log/Psr/Log/LoggerAwareInterface.php)’¢ž`)Èj ±¤#vendor/psr/log/Psr/Log/LogLevel.phpP’¢ž`P�òº¤+vendor/psr/log/Psr/Log/LoggerAwareTrait.php’’¢ž`’Q'¯¤3vendor/psr/log/Psr/Log/InvalidArgumentException.php`’¢ž`` ˆX1¤&vendor/psr/log/Psr/Log/LoggerTrait.phpW ’¢ž`W ¹Wåj¤*vendor/psr/log/Psr/Log/LoggerInterface.php* ’¢ž`* 1b!q¤%vendor/psr/log/Psr/Log/NullLogger.phpÃ’¢ž`ÃÑâÕI¤@vendor/seld/jsonlint/src/Seld/JsonLint/DuplicateKeyException.phpR’¢ž`Rë£y#¤;vendor/seld/jsonlint/src/Seld/JsonLint/ParsingException.phpÖ’¢ž`ÖÔ;§¤5vendor/seld/jsonlint/src/Seld/JsonLint/JsonParser.php(Q’¢ž`(QË{¤4vendor/seld/jsonlint/src/Seld/JsonLint/Undefined.php’¢ž`‚gð¤0vendor/seld/jsonlint/src/Seld/JsonLint/Lexer.php’¢ž``Ÿ¤)vendor/seld/phar-utils/src/Timestamps.phpñ’¢ž`ñ��–â¤%vendor/seld/phar-utils/src/Linter.phpŒ ’¢ž`Œ Ô]ka¤Fvendor/justinrainbow/json-schema/src/JsonSchema/Entity/JsonPointer.php> ’¢ž`> �W¤=vendor/justinrainbow/json-schema/src/JsonSchema/Validator.phpî ’¢ž`î 8”›ë¤;vendor/justinrainbow/json-schema/src/JsonSchema/Rfc3339.phpv’¢ž`vxÁ$�¤Jvendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorageInterface.php"’¢ž`"x&7¤Gvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Factory.phpF’¢ž`F:0À/¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/CollectionConstraint.phpÆ’¢ž`ÆNˆèæ¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ObjectConstraint.php�’¢ž`�Fgc„¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/FormatConstraint.php•"’¢ž`•"Í¥#K¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/NumberConstraint.php‡ ’¢ž`‡ ±é9|¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/StringConstraint.phpÆ’¢ž`Æ~ºÈG¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/BaseConstraint.php%’¢ž`%’Ý2£¤Svendor/justinrainbow/json-schema/src/JsonSchema/Constraints/ConstraintInterface.php’¢ž`t±eä¤Svendor/justinrainbow/json-schema/src/JsonSchema/Constraints/UndefinedConstraint.php±>’¢ž`±>}ÈÁ¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeConstraint.php&’¢ž`&ÙŒ]¤\vendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/TypeCheckInterface.php¡’¢ž`¡c>°Ï¤Yvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/StrictTypeCheck.php+’¢ž`+û²QܤXvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/TypeCheck/LooseTypeCheck.php’¢ž`¹ üÀ¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/EnumConstraint.phpq’¢ž`qÅ`È ¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/SchemaConstraint.phpÏ’¢ž`ÏÂfK ¤Jvendor/justinrainbow/json-schema/src/JsonSchema/Constraints/Constraint.phpX’¢ž`X¿¤^vendor/justinrainbow/json-schema/src/JsonSchema/Exception/UnresolvableJsonPointerException.phpŠ’¢ž`Š.ºmi¤Svendor/justinrainbow/json-schema/src/JsonSchema/Exception/JsonDecodingException.phpÛ’¢ž`ÛÙ£½¤Qvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ValidationException.php’¢ž`EåB*¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Exception/UriResolverException.phpJ’¢ž`Jïð-¤Vvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidArgumentException.phpy’¢ž`y€WΖ¤Wvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ResourceNotFoundException.phpT’¢ž`TðØ:¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidConfigException.phpQ’¢ž`QÖJï¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaException.phpN’¢ž`N�¯Ý ¤Nvendor/justinrainbow/json-schema/src/JsonSchema/Exception/RuntimeException.phpa’¢ž`a`Ú—¤Pvendor/justinrainbow/json-schema/src/JsonSchema/Exception/ExceptionInterface.phpI’¢ž`I%|°¤]vendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSchemaMediaTypeException.phpW’¢ž`W%*)Ö¤Wvendor/justinrainbow/json-schema/src/JsonSchema/Exception/InvalidSourceUriException.php\’¢ž`\ªiR¤Kvendor/justinrainbow/json-schema/src/JsonSchema/Iterator/ObjectIterator.phpç ’¢ž`ç H¸©¤Ivendor/justinrainbow/json-schema/src/JsonSchema/UriRetrieverInterface.php’¢ž`5Ô|[¤Hvendor/justinrainbow/json-schema/src/JsonSchema/UriResolverInterface.php’¢ž`IËÐѤAvendor/justinrainbow/json-schema/src/JsonSchema/SchemaStorage.php+’¢ž`+¡ž_¤Cvendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriResolver.php;’¢ž`;óÇä¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/PredefinedArray.php’¢ž`0á¤Tvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/AbstractRetriever.phpr’¢ž`r–ŠúM¤Gvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/Curl.phpo’¢ž`o†n¤Xvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/UriRetrieverInterface.phpê’¢ž`ê?Ér@¤Rvendor/justinrainbow/json-schema/src/JsonSchema/Uri/Retrievers/FileGetContents.phpj ’¢ž`j [}x#¤Dvendor/justinrainbow/json-schema/src/JsonSchema/Uri/UriRetriever.phpº$’¢ž`º$XËh±¤)vendor/gettext/languages/src/Language.php½?’¢ž`½?FéLš¤)vendor/gettext/languages/src/CldrData.php'6’¢ž`'6ë8 �¤.vendor/gettext/languages/src/Exporter/Html.php ’¢ž` K‘å/¤-vendor/gettext/languages/src/Exporter/Php.php’¢ž`Ô­Eì¤.vendor/gettext/languages/src/Exporter/Docs.phpy’¢ž`y”ZUĤ,vendor/gettext/languages/src/Exporter/Po.phpº’¢ž`ºAÿüç¤2vendor/gettext/languages/src/Exporter/Exporter.phpÊ’¢ž`Êh´3¤4vendor/gettext/languages/src/Exporter/Prettyjson.phpD’¢ž`DV& €¤-vendor/gettext/languages/src/Exporter/Xml.phpý’¢ž`ýe$e¹¤.vendor/gettext/languages/src/Exporter/Json.phpà’¢ž`àÆnöG¤)vendor/gettext/languages/src/Category.phpl’¢ž`lœg4/¤1vendor/gettext/languages/src/FormulaConverter.phpz’¢ž`z"˜ü¤+vendor/gettext/languages/src/autoloader.phpZ’¢ž`ZŽ.ór¤2vendor/gettext/gettext/src/TranslatorInterface.php% ’¢ž`% Íø�¤¤.vendor/gettext/gettext/src/Extractors/Twig.php<’¢ž`<ÿóKó¤1vendor/gettext/gettext/src/Extractors/PhpCode.php?’¢ž`?Â…�'¤/vendor/gettext/gettext/src/Extractors/Xliff.php™ ’¢ž`™ W}ô¤/vendor/gettext/gettext/src/Extractors/Blade.phpû’¢ž`û5 x¤,vendor/gettext/gettext/src/Extractors/Po.phpÉ’¢ž`É ŽÔ¤.vendor/gettext/gettext/src/Extractors/Yaml.php]’¢ž`]jÑ�"¤Avendor/gettext/gettext/src/Extractors/ExtractorMultiInterface.php•’¢ž`•¹¦]‡¤7vendor/gettext/gettext/src/Extractors/CsvDictionary.phpR’¢ž`RW‚G‡¤-vendor/gettext/gettext/src/Extractors/Jed.php’¢ž`{c¾¤/vendor/gettext/gettext/src/Extractors/VueJs.phpn6’¢ž`n6…˜>¤,vendor/gettext/gettext/src/Extractors/Mo.phpm’¢ž`me¨p¤8vendor/gettext/gettext/src/Extractors/YamlDictionary.phpQ’¢ž`Q•t·s¤2vendor/gettext/gettext/src/Extractors/PhpArray.phpG’¢ž`G‡/DѤ8vendor/gettext/gettext/src/Extractors/JsonDictionary.php(’¢ž`(²-Ñ*¤0vendor/gettext/gettext/src/Extractors/JsCode.php(’¢ž`(8‘vU¤.vendor/gettext/gettext/src/Extractors/Json.php.’¢ž`.Åw=u¤<vendor/gettext/gettext/src/Extractors/ExtractorInterface.php ’¢ž` p}YФ3vendor/gettext/gettext/src/Extractors/Extractor.phpŒ’¢ž`Œ {ên¤-vendor/gettext/gettext/src/Extractors/Csv.php’¢ž`˜m8¤0vendor/gettext/gettext/src/GettextTranslator.php¾’¢ž`¾Þ¼£|¤)vendor/gettext/gettext/src/Translator.php¤’¢ž`¤Jô>¤$vendor/gettext/gettext/src/Merge.phpD’¢ž`D‡m6P¤-vendor/gettext/gettext/src/BaseTranslator.php¦’¢ž`¦3vôĤ+vendor/gettext/gettext/src/Translations.phpå@’¢ž`å@þ;š¤*vendor/gettext/gettext/src/Translation.php”+’¢ž`”+ÏÛ9â¤/vendor/gettext/gettext/src/Generators/Xliff.php6’¢ž`6þQ¦¤,vendor/gettext/gettext/src/Generators/Po.php ’¢ž` š¹(S¤.vendor/gettext/gettext/src/Generators/Yaml.phpÚ’¢ž`ÚÕý¶¯¤3vendor/gettext/gettext/src/Generators/Generator.php¼’¢ž`¼³3¤7vendor/gettext/gettext/src/Generators/CsvDictionary.php¦’¢ž`¦CT ¤-vendor/gettext/gettext/src/Generators/Jed.phpp’¢ž`p£,k.¤,vendor/gettext/gettext/src/Generators/Mo.phpë’¢ž`ë0©Ð¤8vendor/gettext/gettext/src/Generators/YamlDictionary.phpÎ’¢ž`ÎL5¢¬¤2vendor/gettext/gettext/src/Generators/PhpArray.php«’¢ž`«®HÖ;¤<vendor/gettext/gettext/src/Generators/GeneratorInterface.php§’¢ž`§£ g¤8vendor/gettext/gettext/src/Generators/JsonDictionary.php=’¢ž`=Òé{¤.vendor/gettext/gettext/src/Generators/Json.phpO’¢ž`Of˜'N¤-vendor/gettext/gettext/src/Generators/Csv.php‡’¢ž`‡‘ê‹{¤2vendor/gettext/gettext/src/Utils/ParsedComment.php\ ’¢ž`\ ‹ÜºC¤8vendor/gettext/gettext/src/Utils/PhpFunctionsScanner.phpþ’¢ž`þ©m,¤7vendor/gettext/gettext/src/Utils/JsFunctionsScanner.phpê$’¢ž`ê$(�íd¤3vendor/gettext/gettext/src/Utils/ParsedFunction.phpq’¢ž`qB‰Wc¤:vendor/gettext/gettext/src/Utils/HeadersGeneratorTrait.php7’¢ž`76ÉG¤?vendor/gettext/gettext/src/Utils/MultidimensionalArrayTrait.php¼ ’¢ž`¼ Äi$a¤4vendor/gettext/gettext/src/Utils/DictionaryTrait.phpî’¢ž`îØ'�¤:vendor/gettext/gettext/src/Utils/HeadersExtractorTrait.php~’¢ž`~ý½ÃФ1vendor/gettext/gettext/src/Utils/StringReader.php³’¢ž`³P�õ�¤5vendor/gettext/gettext/src/Utils/FunctionsScanner.php2’¢ž`2vendor/mck89/peast/lib/Peast/Syntax/Node/ImportDeclaration.php‚’¢ž`‚XŸ9¤?vendor/mck89/peast/lib/Peast/Syntax/Node/VariableDeclarator.php«’¢ž`«ÑböÙ¤6vendor/mck89/peast/lib/Peast/Syntax/Node/Function_.phpÙ ’¢ž`Ù wŸvñ¤@vendor/mck89/peast/lib/Peast/Syntax/Node/VariableDeclaration.phpc’¢ž`c·£I¤:vendor/mck89/peast/lib/Peast/Syntax/Node/BigIntLiteral.phpú’¢ž`ú><¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ImportSpecifier.php�’¢ž`�H¾ê½¤6vendor/mck89/peast/lib/Peast/Syntax/Node/Statement.php…’¢ž`……—’¤;vendor/mck89/peast/lib/Peast/Syntax/Node/BooleanLiteral.phpI’¢ž`ImÎÎ|¤>vendor/mck89/peast/lib/Peast/Syntax/Node/AssignmentPattern.php±’¢ž`±ÀRY¤<vendor/mck89/peast/lib/Peast/Syntax/Node/UnaryExpression.phpR ’¢ž`R ~uÒ¤5vendor/mck89/peast/lib/Peast/Syntax/Node/Property.php’¢ž`™ü ©¤9vendor/mck89/peast/lib/Peast/Syntax/Node/ChainElement.phpÇ’¢ž`Ç"Ì +¤>vendor/mck89/peast/lib/Peast/Syntax/Node/ContinueStatement.php‚’¢ž`‚ìÈZY¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ChainExpression.php‰’¢ž`‰ø‚e¤>vendor/mck89/peast/lib/Peast/Syntax/Node/ModuleDeclaration.php�’¢ž`�Ônt«¤=vendor/mck89/peast/lib/Peast/Syntax/Node/ObjectExpression.phpÍ’¢ž`Í'!E¤<vendor/mck89/peast/lib/Peast/Syntax/Node/AwaitExpression.phpU’¢ž`U¡Üø¤?vendor/mck89/peast/lib/Peast/Syntax/Node/AssignmentProperty.php˜’¢ž`˜Œ½±Y¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ReturnStatement.phpõ’¢ž`õÖ:Cë¤=vendor/mck89/peast/lib/Peast/Syntax/Node/MethodDefinition.php…’¢ž`…ƒu—Ѥ:vendor/mck89/peast/lib/Peast/Syntax/Node/NewExpression.php®’¢ž`®ï°>¬¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ModuleSpecifier.phpO’¢ž`O9EM¤8vendor/mck89/peast/lib/Peast/Syntax/Node/RestElement.php–’¢ž`–Ä�›Œ¤:vendor/mck89/peast/lib/Peast/Syntax/Node/WithStatement.phpd’¢ž`dº|J¤:vendor/mck89/peast/lib/Peast/Syntax/Node/ObjectPattern.phpÖ’¢ž`Ö¿ýçܤ;vendor/mck89/peast/lib/Peast/Syntax/Node/WhileStatement.php*’¢ž`*ꮓ‡¤?vendor/mck89/peast/lib/Peast/Syntax/Node/FunctionExpression.phpÕ’¢ž`ÕÁ½ÁU¤Bvendor/mck89/peast/lib/Peast/Syntax/Node/ConditionalExpression.php ’¢ž` –ú¨‰¤:vendor/mck89/peast/lib/Peast/Syntax/Node/SpreadElement.php…’¢ž`…â‚%¯¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ArrayExpression.php’¢ž`t8¬î¤9vendor/mck89/peast/lib/Peast/Syntax/Node/MetaProperty.php’¢ž`™ù: ¤>vendor/mck89/peast/lib/Peast/Syntax/Node/DebuggerStatement.php¾’¢ž`¾diã¤4vendor/mck89/peast/lib/Peast/Syntax/Node/Comment.phpX’¢ž`XüX ¤7vendor/mck89/peast/lib/Peast/Syntax/Node/Identifier.php’¢ž`’²¤<vendor/mck89/peast/lib/Peast/Syntax/Node/TemplateLiteral.phpN ’¢ž`N ¶¸D¤4vendor/mck89/peast/lib/Peast/Syntax/Node/Pattern.php�’¢ž`�ÅÕ¾¤3vendor/mck89/peast/lib/Peast/Syntax/Node/Class_.phpy’¢ž`ynà�¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ExportSpecifier.php„’¢ž`„LÛ¨¤;vendor/mck89/peast/lib/Peast/Syntax/Node/ForOfStatement.phpš’¢ž`šý¿,é¤<vendor/mck89/peast/lib/Peast/Syntax/Node/YieldExpression.php3’¢ž`3£Û5œ¤@vendor/mck89/peast/lib/Peast/Syntax/Node/ExpressionStatement.phpŒ’¢ž`Œ[´m¤9vendor/mck89/peast/lib/Peast/Syntax/Node/TryStatement.php ’¢ž` Š8µ"¤2vendor/mck89/peast/lib/Peast/Syntax/Node/Super.php‚’¢ž`‚RCÜ(¤Evendor/mck89/peast/lib/Peast/Syntax/Node/TaggedTemplateExpression.php\’¢ž`\è×ߤDvendor/mck89/peast/lib/Peast/Syntax/Node/ArrowFunctionExpression.phpý’¢ž`ýÑ…Ï÷¤=vendor/mck89/peast/lib/Peast/Syntax/Node/ImportExpression.phpO’¢ž`O«„Lò¤<vendor/mck89/peast/lib/Peast/Syntax/Node/SwitchStatement.phpî’¢ž`î¥Áè¤9vendor/mck89/peast/lib/Peast/Syntax/Node/ForStatement.phpC ’¢ž`C 1¡ª¤=vendor/mck89/peast/lib/Peast/Syntax/Node/UpdateExpression.php; ’¢ž`; 3mÌÿ¤?vendor/mck89/peast/lib/Peast/Syntax/Node/SequenceExpression.phpÊ’¢ž`ÊòÜÓ¤@vendor/mck89/peast/lib/Peast/Syntax/Node/FunctionDeclaration.phpÕ’¢ž`ÕD*ê¤=vendor/mck89/peast/lib/Peast/Syntax/Node/MemberExpression.phpå ’¢ž`å Ë#E„¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/ExportNamedDeclaration.phpÑ ’¢ž`Ñ ž÷£€¤8vendor/mck89/peast/lib/Peast/Syntax/Node/NullLiteral.php’¢ž`ÝKÚ¤Dvendor/mck89/peast/lib/Peast/Syntax/Node/ParenthesizedExpression.phpˆ’¢ž`ˆ(‚åÓ¤Avendor/mck89/peast/lib/Peast/Syntax/Node/ExportAllDeclaration.phpž’¢ž`ž}fx¤Evendor/mck89/peast/lib/Peast/Syntax/Node/ExportDefaultDeclaration.php’¢ž`3" ¤9vendor/mck89/peast/lib/Peast/Syntax/Node/ArrayPattern.php—’¢ž`—ÞÊ‘(¤;vendor/mck89/peast/lib/Peast/Syntax/Node/ThisExpression.php ’¢ž` â%a‚¤<vendor/mck89/peast/lib/Peast/Syntax/Node/ClassExpression.phpÂ’¢ž`Âp~ªÃ¤=vendor/mck89/peast/lib/Peast/Syntax/Node/LabeledStatement.phpæ’¢ž`æ(Ž’¤=vendor/mck89/peast/lib/Peast/Syntax/Node/BinaryExpression.phpW’¢ž`WÆðÃ[¤=vendor/mck89/peast/lib/Peast/Syntax/Node/ClassDeclaration.phpÐ’¢ž`Ð%^éj¤Evendor/mck89/peast/lib/Peast/Syntax/Node/ImportNamespaceSpecifier.phpÝ’¢ž`ÝMóžc¤<vendor/mck89/peast/lib/Peast/Syntax/Node/TemplateElement.phpô ’¢ž`ô 7†ÿѤ;vendor/mck89/peast/lib/Peast/Syntax/Node/EmptyStatement.php£’¢ž`£n²½¤Avendor/mck89/peast/lib/Peast/Syntax/Node/AssignmentExpression.php2 ’¢ž`2 �úTޤ;vendor/mck89/peast/lib/Peast/Syntax/Node/BreakStatement.phpy’¢ž`y‘ ‹2¤>vendor/mck89/peast/lib/Peast/Syntax/Node/LogicalExpression.phpZ’¢ž`Z¿ÑSž¤;vendor/mck89/peast/lib/Peast/Syntax/Node/NumericLiteral.php¢’¢ž`¢©Ðö ¤;vendor/mck89/peast/lib/Peast/Syntax/Node/CallExpression.phpW’¢ž`WûŽ› ¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/ImportDefaultSpecifier.phpç’¢ž`çáäJ¤;vendor/mck89/peast/lib/Peast/Syntax/Node/ForInStatement.php ’¢ž` P㛤:vendor/mck89/peast/lib/Peast/Syntax/Node/StringLiteral.php¿ ’¢ž`¿ 5¿vâ¤;vendor/mck89/peast/lib/Peast/Syntax/Node/ThrowStatement.phpl’¢ž`lƒ¢±€¤8vendor/mck89/peast/lib/Peast/Syntax/Node/IfStatement.php� ’¢ž`� {•›¤:vendor/mck89/peast/lib/Peast/Syntax/Node/RegExpLiteral.phpX ’¢ž`X õD49¤;vendor/mck89/peast/lib/Peast/Syntax/Node/BlockStatement.phpž’¢ž`žŸà†¤=vendor/mck89/peast/lib/Peast/Syntax/Node/DoWhileStatement.php2’¢ž`2¨¥¡�¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXEmptyExpression.php³’¢ž`³:¶8ÿ¤Dvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXMemberExpression.php\’¢ž`\ xN¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadAttribute.phpÅ’¢ž`ÅK&Q�¤Bvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingElement.php¦’¢ž`¦Ýfó¡¤>vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXIdentifier.php´’¢ž`´ƒ™àL¤8vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXText.phpø’¢ž`ø™Æ‘¹¤;vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXElement.php¢ ’¢ž`¢  Œ¤Bvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXNamespacedName.phpz’¢ž`zÂÔ„=¤<vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXFragment.php‚ ’¢ž`‚ N”O/¤?vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXSpreadChild.php£’¢ž`£¬}6î¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningFragment.php·’¢ž`·•ä´¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXClosingFragment.php·’¢ž`·Nè‡\¤=vendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXAttribute.phpw’¢ž`w‰œk>¤Bvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXOpeningElement.php’¢ž`>OÐó¤Cvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXBoundaryElement.phpy’¢ž`y¼ù¢Ï¤Gvendor/mck89/peast/lib/Peast/Syntax/Node/JSX/JSXExpressionContainer.phpÂ’¢ž`ÂúwƤ1vendor/mck89/peast/lib/Peast/Syntax/Node/Node.phpU"’¢ž`U"§âM‘¤4vendor/mck89/peast/lib/Peast/Syntax/Node/Literal.php’¢ž`Ä5ʤ2vendor/mck89/peast/lib/Peast/Syntax/JSX/Parser.phpr6’¢ž`r6q†©©¤3vendor/mck89/peast/lib/Peast/Syntax/JSX/Scanner.phpe ’¢ž`e – ËѤ*vendor/mck89/peast/lib/Peast/Traverser.php®’¢ž`®½Ô#¤1vendor/mck89/peast/lib/Peast/Selector/Matches.phpß’¢ž`ߙކM¤3vendor/mck89/peast/lib/Peast/Selector/Exception.php×’¢ž`×BQ:�¤0vendor/mck89/peast/lib/Peast/Selector/Parser.phpŸB’¢ž`ŸB†mʤ:vendor/mck89/peast/lib/Peast/Selector/Node/Part/Pseudo.php¶’¢ž`¶@-핤@vendor/mck89/peast/lib/Peast/Selector/Node/Part/PseudoSimple.phpk’¢ž`kx™×·¤8vendor/mck89/peast/lib/Peast/Selector/Node/Part/Type.php’¢ž`°â)¤Bvendor/mck89/peast/lib/Peast/Selector/Node/Part/PseudoSelector.php_’¢ž`_øË— ¤?vendor/mck89/peast/lib/Peast/Selector/Node/Part/PseudoIndex.php- ’¢ž`- ´Fž¨¤=vendor/mck89/peast/lib/Peast/Selector/Node/Part/Attribute.phpÁ’¢ž`Á×2¿¤8vendor/mck89/peast/lib/Peast/Selector/Node/Part/Part.phpr’¢ž`r¡¼Y'¤7vendor/mck89/peast/lib/Peast/Selector/Node/Selector.php÷’¢ž`÷Š:rÕ¤9vendor/mck89/peast/lib/Peast/Selector/Node/Combinator.phpS’¢ž`S¸®Ý¤4vendor/mck89/peast/lib/Peast/Selector/Node/Group.php ’¢ž` H;ó¤2vendor/wp-cli/wp-cli/templates/man-params.mustache?’¢ž`?“Ín¤+vendor/wp-cli/wp-cli/templates/man.mustacheþ’¢ž`þ©I<¤9vendor/wp-cli/config-command/templates/wp-config.mustacheË ’¢ž`Ë Ü Fú¤6vendor/wp-cli/core-command/templates/versions.mustacheŒ’¢ž`ŒSU"´¤@vendor/wp-cli/extension-command/templates/plugin-status.mustacheš’¢ž`šo[Æ5¤?vendor/wp-cli/extension-command/templates/theme-status.mustachex’¢ž`xÇ�gѤBvendor/wp-cli/scaffold-command/templates/plugin-bootstrap.mustachek’¢ž`k[ßW¤Bvendor/wp-cli/scaffold-command/templates/plugin-gruntfile.mustache¥’¢ž`¥ÑT‹¤Dvendor/wp-cli/scaffold-command/templates/post_type_extended.mustache�’¢ž`�‡;~e¤<vendor/wp-cli/scaffold-command/templates/install-wp-tests.sht’¢ž`t¥¦½¤8vendor/wp-cli/scaffold-command/templates/.phpcs.xml.dist=’¢ž`=[º-¤Avendor/wp-cli/scaffold-command/templates/theme-bootstrap.mustache™’¢ž`™>ëúʤ9vendor/wp-cli/scaffold-command/templates/phpunit.xml.dist…’¢ž`…%ÕõF¤?vendor/wp-cli/scaffold-command/templates/plugin-gitlab.mustache\’¢ž`\âü  ¤?vendor/wp-cli/scaffold-command/templates/plugin-readme.mustache’¢ž`b û¤Avendor/wp-cli/scaffold-command/templates/block-style-css.mustache’¢ž`®—ؤ;vendor/wp-cli/scaffold-command/templates/post_type.mustache´ ’¢ž`´ ¡3$§¤Dvendor/wp-cli/scaffold-command/templates/plugin-test-sample.mustache'’¢ž`'\~§¤Gvendor/wp-cli/scaffold-command/templates/child_theme_functions.mustacheN’¢ž`N.‘ߤCvendor/wp-cli/scaffold-command/templates/plugin-distignore.mustacheH’¢ž`H1EA¨¤8vendor/wp-cli/scaffold-command/templates/plugin.mustacheq’¢ž`qG‰qÒ¤Avendor/wp-cli/scaffold-command/templates/plugin-packages.mustache^’¢ž`^£5‰+¤Cvendor/wp-cli/scaffold-command/templates/theme-test-sample.mustache&’¢ž`&ý•î¤Bvendor/wp-cli/scaffold-command/templates/plugin-gitignore.mustache^’¢ž`^ÇÁ怤6vendor/wp-cli/scaffold-command/templates/.editorconfigÀ’¢ž`À¦hѤ>vendor/wp-cli/scaffold-command/templates/theme-status.mustachex’¢ž`xÇ�gѤ?vendor/wp-cli/scaffold-command/templates/plugin-circle.mustache< ’¢ž`< yé5¤Bvendor/wp-cli/scaffold-command/templates/plugin-bitbucket.mustache‘’¢ž`‘ZBgm¤?vendor/wp-cli/scaffold-command/templates/plugin-travis.mustacheù’¢ž`ùaG•R¤@vendor/wp-cli/scaffold-command/templates/block-index-js.mustacheä ’¢ž`ä "½µ0¤:vendor/wp-cli/scaffold-command/templates/taxonomy.mustachei ’¢ž`i ø®Rx¤=vendor/wp-cli/scaffold-command/templates/child_theme.mustacheÔ’¢ž`Ôéýö¹¤Bvendor/wp-cli/scaffold-command/templates/block-editor-css.mustacheË’¢ž`Ë“,V]¤Cvendor/wp-cli/scaffold-command/templates/taxonomy_extended.mustacheè’¢ž`è›{×,¤vendor/autoload.php²’¢ž`²;žª“¤ vendor/composer/composer/LICENSE,’¢ž`,V†g‚¤1vendor/composer/composer/res/composer-schema.jsonÿª’¢ž`ÿªÛp…¤<vendor/rmccue/requests/library/Requests/Transport/cacert.pem>’¢ž`>¶UV¤&vendor/wp-cli/wp-cli/COMPOSER_VERSIONS_’¢ž`_Àw)ž¤vendor/wp-cli/wp-cli/VERSION’¢ž` ÚPR¤ [ 'runtime' => '=', 'file' => '', 'desc' => 'Path to the WordPress files.', ], 'url' => [ 'runtime' => '=', 'file' => '', 'desc' => 'Pretend request came from given URL. In multisite, this argument is how the target site is specified.', ], 'ssh' => [ 'runtime' => '=[:][@][:][]', 'file' => '[:][@][:][]', 'desc' => 'Perform operation against a remote server over SSH (or a container using scheme of "docker", "docker-compose", "vagrant").', ], 'http' => [ 'runtime' => '=', 'file' => '', 'desc' => 'Perform operation against a remote WordPress installation over HTTP.', ], 'blog' => [ 'deprecated' => 'Use --url instead.', 'runtime' => '=', ], 'user' => [ 'runtime' => '=', 'file' => '', 'desc' => 'Set the WordPress user.', ], 'skip-plugins' => [ 'runtime' => '[=]', 'file' => '', 'desc' => 'Skip loading all plugins, or a comma-separated list of plugins. Note: mu-plugins are still loaded.', 'default' => '', ], 'skip-themes' => [ 'runtime' => '[=]', 'file' => '', 'desc' => 'Skip loading all themes, or a comma-separated list of themes.', 'default' => '', ], 'skip-packages' => [ 'runtime' => '', 'file' => '', 'desc' => 'Skip loading all installed packages.', 'default' => false, ], 'require' => [ 'runtime' => '=', 'file' => '', 'desc' => 'Load PHP file before running the command (may be used more than once).', 'multiple' => true, 'default' => [], ], 'exec' => [ 'runtime' => '=', 'file' => '', 'desc' => 'Execute PHP code before running the command (may be used more than once).', 'multiple' => true, 'default' => [], ], 'disabled_commands' => [ 'file' => '', 'default' => [], 'desc' => '(Sub)commands to disable.', ], 'color' => [ 'runtime' => true, 'file' => '', 'default' => 'auto', 'desc' => 'Whether to colorize the output.', ], 'debug' => [ 'runtime' => '[=]', 'file' => '', 'default' => false, 'desc' => 'Show all PHP errors and add verbosity to WP-CLI output. Built-in groups include: bootstrap, commandfactory, and help.', ], 'prompt' => [ 'runtime' => '[=]', 'file' => false, 'default' => false, 'desc' => 'Prompt the user to enter values for all command arguments, or a subset specified as comma-separated values.', ], 'quiet' => [ 'runtime' => '', 'file' => '', 'default' => false, 'desc' => 'Suppress informational messages.', ], 'apache_modules' => [ 'file' => '', 'desc' => 'List of Apache Modules that are to be reported as loaded.', 'multiple' => true, 'default' => [], ], # --allow-root => (NOT RECOMMENDED) Allow wp-cli to run as root. This poses # a security risk, so you probably do not want to do this. 'allow-root' => [ 'file' => false, # Explicit. Just in case the default changes. 'runtime' => '', 'hidden' => true, ], ]; add_namespace( 'WP_CLI\Bootstrap', WP_CLI_ROOT . '/php/WP_CLI/Bootstrap' )->register(); } /** * Initialize and return the bootstrap state to pass from step to step. * * @return BootstrapState */ function initialize_bootstrap_state() { return new BootstrapState(); } /** * Process the bootstrapping steps. * * Loops over each of the provided steps, instantiates it and then calls its * `process()` method. */ function bootstrap() { prepare_bootstrap(); $state = initialize_bootstrap_state(); foreach ( get_bootstrap_steps() as $step ) { /** @var BootstrapStep $step_instance */ $step_instance = new $step(); $state = $step_instance->process( $state ); } } $command->get_name(), 'description' => $command->get_shortdesc(), 'longdesc' => $command->get_longdesc(), ]; foreach ( $command->get_subcommands() as $subcommand ) { $dump['subcommands'][] = $this->command_to_array( $subcommand ); } if ( empty( $dump['subcommands'] ) ) { $dump['synopsis'] = (string) $command->get_synopsis(); } return $dump; } /** * Prints WP-CLI version. * * ## EXAMPLES * * # Display CLI version. * $ wp cli version * WP-CLI 0.24.1 */ public function version() { WP_CLI::line( 'WP-CLI ' . WP_CLI_VERSION ); } /** * Prints various details about the WP-CLI environment. * * Helpful for diagnostic purposes, this command shares: * * * OS information. * * Shell information. * * PHP binary used. * * PHP binary version. * * php.ini configuration file used (which is typically different than web). * * WP-CLI root dir: where WP-CLI is installed (if non-Phar install). * * WP-CLI global config: where the global config YAML file is located. * * WP-CLI project config: where the project config YAML file is located. * * WP-CLI version: currently installed version. * * See [config docs](https://wp-cli.org/config/) for more details on global * and project config YAML files. * * ## OPTIONS * * [--format=] * : Render output in a particular format. * --- * default: list * options: * - list * - json * --- * * ## EXAMPLES * * # Display various data about the CLI environment. * $ wp cli info * OS: Linux 4.10.0-42-generic #46~16.04.1-Ubuntu SMP Mon Dec 4 15:57:59 UTC 2017 x86_64 * Shell: /usr/bin/zsh * PHP binary: /usr/bin/php * PHP version: 7.1.12-1+ubuntu16.04.1+deb.sury.org+1 * php.ini used: /etc/php/7.1/cli/php.ini * WP-CLI root dir: phar://wp-cli.phar * WP-CLI packages dir: /home/person/.wp-cli/packages/ * WP-CLI global config: * WP-CLI project config: * WP-CLI version: 1.5.0 */ public function info( $_, $assoc_args ) { // php_uname() $mode argument was only added with PHP 7.0+. Fall back to // entire string for older versions. $system_os = PHP_MAJOR_VERSION < 7 ? php_uname() : sprintf( '%s %s %s %s', php_uname( 's' ), php_uname( 'r' ), php_uname( 'v' ), php_uname( 'm' ) ); $shell = getenv( 'SHELL' ); if ( ! $shell && Utils\is_windows() ) { $shell = getenv( 'ComSpec' ); } $php_bin = Utils\get_php_binary(); $runner = WP_CLI::get_runner(); $packages_dir = $runner->get_packages_dir_path(); if ( ! is_dir( $packages_dir ) ) { $packages_dir = null; } if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'json' ) { $info = [ 'system_os' => $system_os, 'shell' => $shell, 'php_binary_path' => $php_bin, 'php_version' => PHP_VERSION, 'php_ini_used' => get_cfg_var( 'cfg_file_path' ), 'mysql_binary_path' => Utils\get_mysql_binary_path(), 'mysql_version' => Utils\get_mysql_version(), 'sql_modes' => Utils\get_sql_modes(), 'wp_cli_dir_path' => WP_CLI_ROOT, 'wp_cli_vendor_path' => WP_CLI_VENDOR_DIR, 'wp_cli_phar_path' => defined( 'WP_CLI_PHAR_PATH' ) ? WP_CLI_PHAR_PATH : '', 'wp_cli_packages_dir_path' => $packages_dir, 'global_config_path' => $runner->global_config_path, 'project_config_path' => $runner->project_config_path, 'wp_cli_version' => WP_CLI_VERSION, ]; WP_CLI::line( json_encode( $info ) ); } else { WP_CLI::line( "OS:\t" . $system_os ); WP_CLI::line( "Shell:\t" . $shell ); WP_CLI::line( "PHP binary:\t" . $php_bin ); WP_CLI::line( "PHP version:\t" . PHP_VERSION ); WP_CLI::line( "php.ini used:\t" . get_cfg_var( 'cfg_file_path' ) ); WP_CLI::line( "MySQL binary:\t" . Utils\get_mysql_binary_path() ); WP_CLI::line( "MySQL version:\t" . Utils\get_mysql_version() ); WP_CLI::line( "SQL modes:\t" . implode( ',', Utils\get_sql_modes() ) ); WP_CLI::line( "WP-CLI root dir:\t" . WP_CLI_ROOT ); WP_CLI::line( "WP-CLI vendor dir:\t" . WP_CLI_VENDOR_DIR ); WP_CLI::line( "WP_CLI phar path:\t" . ( defined( 'WP_CLI_PHAR_PATH' ) ? WP_CLI_PHAR_PATH : '' ) ); WP_CLI::line( "WP-CLI packages dir:\t" . $packages_dir ); WP_CLI::line( "WP-CLI global config:\t" . $runner->global_config_path ); WP_CLI::line( "WP-CLI project config:\t" . $runner->project_config_path ); WP_CLI::line( "WP-CLI version:\t" . WP_CLI_VERSION ); } } /** * Checks to see if there is a newer version of WP-CLI available. * * Queries the Github releases API. Returns available versions if there are * updates available, or success message if using the latest release. * * ## OPTIONS * * [--patch] * : Only list patch updates. * * [--minor] * : Only list minor updates. * * [--major] * : Only list major updates. * * [--field=] * : Prints the value of a single field for each update. * * [--fields=] * : Limit the output to specific object fields. Defaults to version,update_type,package_url. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## EXAMPLES * * # Check for update. * $ wp cli check-update * Success: WP-CLI is at the latest version. * * # Check for update and new version is available. * $ wp cli check-update * +---------+-------------+-------------------------------------------------------------------------------+ * | version | update_type | package_url | * +---------+-------------+-------------------------------------------------------------------------------+ * | 0.24.1 | patch | https://github.com/wp-cli/wp-cli/releases/download/v0.24.1/wp-cli-0.24.1.phar | * +---------+-------------+-------------------------------------------------------------------------------+ * * @subcommand check-update */ public function check_update( $_, $assoc_args ) { $updates = $this->get_updates( $assoc_args ); if ( $updates ) { $formatter = new Formatter( $assoc_args, [ 'version', 'update_type', 'package_url' ] ); $formatter->display_items( $updates ); } elseif ( empty( $assoc_args['format'] ) || 'table' === $assoc_args['format'] ) { $update_type = $this->get_update_type_str( $assoc_args ); WP_CLI::success( "WP-CLI is at the latest{$update_type}version." ); } } /** * Updates WP-CLI to the latest release. * * Default behavior is to check the releases API for the newest stable * version, and prompt if one is available. * * Use `--stable` to install or reinstall the latest stable version. * * Use `--nightly` to install the latest built version of the master branch. * While not recommended for production, nightly contains the latest and * greatest, and should be stable enough for development and staging * environments. * * Only works for the Phar installation mechanism. * * ## OPTIONS * * [--patch] * : Only perform patch updates. * * [--minor] * : Only perform minor updates. * * [--major] * : Only perform major updates. * * [--stable] * : Update to the latest stable release. Skips update check. * * [--nightly] * : Update to the latest built version of the master branch. Potentially unstable. * * [--yes] * : Do not prompt for confirmation. * * [--insecure] * : Retry without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Update CLI. * $ wp cli update * You have version 0.24.0. Would you like to update to 0.24.1? [y/n] y * Downloading from https://github.com/wp-cli/wp-cli/releases/download/v0.24.1/wp-cli-0.24.1.phar... * New version works. Proceeding to replace. * Success: Updated WP-CLI to 0.24.1. */ public function update( $_, $assoc_args ) { if ( ! Utils\inside_phar() ) { WP_CLI::error( 'You can only self-update Phar files.' ); } $old_phar = realpath( $_SERVER['argv'][0] ); if ( ! is_writable( $old_phar ) ) { WP_CLI::error( sprintf( '%s is not writable by current user.', $old_phar ) ); } elseif ( ! is_writable( dirname( $old_phar ) ) ) { WP_CLI::error( sprintf( '%s is not writable by current user.', dirname( $old_phar ) ) ); } if ( Utils\get_flag_value( $assoc_args, 'nightly' ) ) { WP_CLI::confirm( sprintf( 'You have version %s. Would you like to update to the latest nightly?', WP_CLI_VERSION ), $assoc_args ); $download_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar'; $md5_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar.md5'; } elseif ( Utils\get_flag_value( $assoc_args, 'stable' ) ) { WP_CLI::confirm( sprintf( 'You have version %s. Would you like to update to the latest stable release?', WP_CLI_VERSION ), $assoc_args ); $download_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar'; $md5_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar.md5'; } else { $updates = $this->get_updates( $assoc_args ); if ( empty( $updates ) ) { $update_type = $this->get_update_type_str( $assoc_args ); WP_CLI::success( "WP-CLI is at the latest{$update_type}version." ); return; } $newest = $updates[0]; WP_CLI::confirm( sprintf( 'You have version %s. Would you like to update to %s?', WP_CLI_VERSION, $newest['version'] ), $assoc_args ); $download_url = $newest['package_url']; $md5_url = str_replace( '.phar', '.phar.md5', $download_url ); } WP_CLI::log( sprintf( 'Downloading from %s...', $download_url ) ); $temp = Utils\get_temp_dir() . uniqid( 'wp_', true ) . '.phar'; $headers = []; $options = [ 'timeout' => 600, // 10 minutes ought to be enough for everybody. 'filename' => $temp, 'insecure' => (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ), ]; Utils\http_request( 'GET', $download_url, null, $headers, $options ); unset( $options['filename'] ); $md5_response = Utils\http_request( 'GET', $md5_url, null, $headers, $options ); if ( '20' !== substr( $md5_response->status_code, 0, 2 ) ) { WP_CLI::error( "Couldn't access md5 hash for release (HTTP code {$md5_response->status_code})." ); } $md5_file = md5_file( $temp ); $release_hash = trim( $md5_response->body ); if ( $md5_file === $release_hash ) { WP_CLI::log( 'md5 hash verified: ' . $release_hash ); } else { WP_CLI::error( "md5 hash for download ({$md5_file}) is different than the release hash ({$release_hash})." ); } $allow_root = WP_CLI::get_runner()->config['allow-root'] ? '--allow-root' : ''; $php_binary = Utils\get_php_binary(); $process = Process::create( "{$php_binary} $temp --info {$allow_root}" ); $result = $process->run(); if ( 0 !== $result->return_code || false === stripos( $result->stdout, 'WP-CLI version' ) ) { $multi_line = explode( PHP_EOL, $result->stderr ); WP_CLI::error_multi_line( $multi_line ); WP_CLI::error( 'The downloaded PHAR is broken, try running wp cli update again.' ); } WP_CLI::log( 'New version works. Proceeding to replace.' ); $mode = fileperms( $old_phar ) & 511; if ( false === chmod( $temp, $mode ) ) { WP_CLI::error( sprintf( 'Cannot chmod %s.', $temp ) ); } class_exists( '\cli\Colors' ); // This autoloads \cli\Colors - after we move the file we no longer have access to this class. if ( false === rename( $temp, $old_phar ) ) { WP_CLI::error( sprintf( 'Cannot move %s to %s', $temp, $old_phar ) ); } if ( Utils\get_flag_value( $assoc_args, 'nightly', false ) ) { $updated_version = 'the latest nightly release'; } elseif ( Utils\get_flag_value( $assoc_args, 'stable', false ) ) { $updated_version = 'the latest stable release'; } else { $updated_version = isset( $newest['version'] ) ? $newest['version'] : ''; } WP_CLI::success( sprintf( 'Updated WP-CLI to %s.', $updated_version ) ); } /** * Returns update information. */ private function get_updates( $assoc_args ) { $url = 'https://api.github.com/repos/wp-cli/wp-cli/releases?per_page=100'; $options = [ 'timeout' => 30, 'insecure' => (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ), ]; $headers = [ 'Accept' => 'application/json', ]; $github_token = getenv( 'GITHUB_TOKEN' ); if ( false !== $github_token ) { $headers['Authorization'] = 'token ' . $github_token; } $response = Utils\http_request( 'GET', $url, null, $headers, $options ); if ( ! $response->success || 200 !== $response->status_code ) { WP_CLI::error( sprintf( 'Failed to get latest version (HTTP code %d).', $response->status_code ) ); } $release_data = json_decode( $response->body ); $updates = [ 'major' => false, 'minor' => false, 'patch' => false, ]; foreach ( $release_data as $release ) { // Get rid of leading "v" if there is one set. $release_version = $release->tag_name; if ( 'v' === substr( $release_version, 0, 1 ) ) { $release_version = ltrim( $release_version, 'v' ); } $update_type = Utils\get_named_sem_ver( $release_version, WP_CLI_VERSION ); if ( ! $update_type ) { continue; } if ( ! isset( $release->assets[0]->browser_download_url ) ) { continue; } if ( ! empty( $updates[ $update_type ] ) && ! Comparator::greaterThan( $release_version, $updates[ $update_type ]['version'] ) ) { continue; } $updates[ $update_type ] = [ 'version' => $release_version, 'update_type' => $update_type, 'package_url' => $release->assets[0]->browser_download_url, ]; } foreach ( $updates as $type => $value ) { if ( empty( $value ) ) { unset( $updates[ $type ] ); } } foreach ( [ 'major', 'minor', 'patch' ] as $type ) { if ( true === Utils\get_flag_value( $assoc_args, $type ) ) { return ! empty( $updates[ $type ] ) ? [ $updates[ $type ] ] : false; } } if ( empty( $updates ) && preg_match( '#-alpha-(.+)$#', WP_CLI_VERSION, $matches ) ) { $version_url = 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/NIGHTLY_VERSION'; $response = Utils\http_request( 'GET', $version_url, null, [], $options ); if ( ! $response->success || 200 !== $response->status_code ) { WP_CLI::error( sprintf( 'Failed to get current nightly version (HTTP code %d)', $response->status_code ) ); } $nightly_version = trim( $response->body ); if ( WP_CLI_VERSION !== $nightly_version ) { $updates['nightly'] = [ 'version' => $nightly_version, 'update_type' => 'nightly', 'package_url' => 'https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli-nightly.phar', ]; } } return array_values( $updates ); } /** * Dumps the list of global parameters, as JSON or in var_export format. * * ## OPTIONS * * [--with-values] * : Display current values also. * * [--format=] * : Render output in a particular format. * --- * default: json * options: * - var_export * - json * --- * * ## EXAMPLES * * # Dump the list of global parameters. * $ wp cli param-dump --format=var_export * array ( * 'path' => * array ( * 'runtime' => '=', * 'file' => '', * 'synopsis' => '', * 'default' => NULL, * 'multiple' => false, * 'desc' => 'Path to the WordPress files.', * ), * 'url' => * array ( * * @subcommand param-dump */ public function param_dump( $_, $assoc_args ) { $spec = WP_CLI::get_configurator()->get_spec(); if ( Utils\get_flag_value( $assoc_args, 'with-values' ) ) { $config = WP_CLI::get_configurator()->to_array(); // Copy current config values to $spec. foreach ( $spec as $key => $value ) { $current = null; if ( isset( $config[0][ $key ] ) ) { $current = $config[0][ $key ]; } $spec[ $key ]['current'] = $current; } } if ( 'var_export' === Utils\get_flag_value( $assoc_args, 'format' ) ) { var_export( $spec ); } else { echo json_encode( $spec ); } } /** * Dumps the list of installed commands, as JSON. * * ## EXAMPLES * * # Dump the list of installed commands. * $ wp cli cmd-dump * {"name":"wp","description":"Manage WordPress through the command-line.","longdesc":"\n\n## GLOBAL PARAMETERS\n\n --path=\n Path to the WordPress files.\n\n --ssh=\n Perform operation against a remote server over SSH (or a container using scheme of "docker" or "docker-compose").\n\n --url=\n Pretend request came from given URL. In multisite, this argument is how the target site is specified. \n\n --user=\n * * @subcommand cmd-dump */ public function cmd_dump() { echo json_encode( $this->command_to_array( WP_CLI::get_root_command() ) ); } /** * Generates tab completion strings. * * ## OPTIONS * * --line= * : The current command line to be executed. * * --point= * : The index to the current cursor position relative to the beginning of the command. * * ## EXAMPLES * * # Generate tab completion strings. * $ wp cli completions --line='wp eva' --point=100 * eval * eval-file */ public function completions( $_, $assoc_args ) { $line = substr( $assoc_args['line'], 0, $assoc_args['point'] ); $compl = new Completions( $line ); $compl->render(); } /** * Get a string representing the type of update being checked for. */ private function get_update_type_str( $assoc_args ) { $update_type = ' '; foreach ( [ 'major', 'minor', 'patch' ] as $type ) { if ( true === Utils\get_flag_value( $assoc_args, $type ) ) { $update_type = ' ' . $type . ' '; break; } } return $update_type; } /** * Detects if a command exists * * This commands checks if a command is registered with WP-CLI. * If the command is found then it returns with exit status 0. * If the command doesn't exist, then it will exit with status 1. * * ## OPTIONS * ... * : The command * * ## EXAMPLES * * # The "site delete" command is registered. * $ wp cli has-command "site delete" * $ echo $? * 0 * * # The "foo bar" command is not registered. * $ wp cli has-command "foo bar" * $ echo $? * 1 * * @subcommand has-command * * @when after_wp_load */ public function has_command( $_, $assoc_args ) { // If command is input as a string, then explode it into array. $command = explode( ' ', implode( ' ', $_ ) ); WP_CLI::halt( is_array( WP_CLI::get_runner()->find_command_to_run( $command ) ) ? 0 : 1 ); } } is_enabled() ) { WP_CLI::error( 'Cache directory does not exist.' ); } $cache->clear(); WP_CLI::success( 'Cache cleared.' ); } /** * Prunes the internal cache. * * Removes all cached files except for the newest version of each one. * * ## EXAMPLES * * $ wp cli cache prune * Success: Cache pruned. * * @subcommand prune */ public function cache_prune() { $cache = WP_CLI::get_cache(); if ( ! $cache->is_enabled() ) { WP_CLI::error( 'Cache directory does not exist.' ); } $cache->prune(); WP_CLI::success( 'Cache pruned.' ); } } ...] * : Get help on a specific command. * * ## EXAMPLES * * # get help for `core` command * wp help core * * # get help for `core download` subcommand * wp help core download */ public function __invoke( $args, $assoc_args ) { $r = WP_CLI::get_runner()->find_command_to_run( $args ); if ( is_array( $r ) ) { list( $command ) = $r; self::show_help( $command ); exit; } } private static function show_help( $command ) { $out = self::get_initial_markdown( $command ); // Remove subcommands if in columns - will wordwrap separately. $subcommands = ''; $column_subpattern = '[ \t]+[^\t]+\t+'; if ( preg_match( '/(^## SUBCOMMANDS[^\n]*\n+' . $column_subpattern . '.+?)(?:^##|\z)/ms', $out, $matches, PREG_OFFSET_CAPTURE ) ) { $subcommands = $matches[1][0]; $subcommands_header = "## SUBCOMMANDS\n"; $out = substr_replace( $out, $subcommands_header, $matches[1][1], strlen( $subcommands ) ); } $out .= self::parse_reference_links( $command->get_longdesc() ); // Definition lists. $out = preg_replace_callback( '/([^\n]+)\n: (.+?)(\n\n|$)/s', [ __CLASS__, 'rewrap_param_desc' ], $out ); // Ensure lines with no leading whitespace that aren't section headers are indented. $out = preg_replace( '/^((?! |\t|##).)/m', "\t$1", $out ); $tab = str_repeat( ' ', 2 ); // Need to de-tab for wordwrapping to work properly. $out = str_replace( "\t", $tab, $out ); $wordwrap_width = Shell::columns(); // Wordwrap with indent. $out = preg_replace_callback( '/^( *)([^\n]+)\n/m', function ( $matches ) use ( $wordwrap_width ) { return $matches[1] . str_replace( "\n", "\n{$matches[1]}", wordwrap( $matches[2], $wordwrap_width - strlen( $matches[1] ) ) ) . "\n"; }, $out ); if ( $subcommands ) { // Wordwrap with column indent. $subcommands = preg_replace_callback( '/^(' . $column_subpattern . ')([^\n]+)\n/m', function ( $matches ) use ( $wordwrap_width, $tab ) { // Need to de-tab for wordwrapping to work properly. $matches[1] = str_replace( "\t", $tab, $matches[1] ); $matches[2] = str_replace( "\t", $tab, $matches[2] ); $padding_len = strlen( $matches[1] ); $padding = str_repeat( ' ', $padding_len ); return $matches[1] . str_replace( "\n", "\n$padding", wordwrap( $matches[2], $wordwrap_width - $padding_len ) ) . "\n"; }, $subcommands ); // Put subcommands back. $out = str_replace( $subcommands_header, $subcommands, $out ); } // Section headers. $out = preg_replace( '/^## ([A-Z ]+)/m', WP_CLI::colorize( '%9\1%n' ), $out ); self::pass_through_pager( $out ); } private static function rewrap_param_desc( $matches ) { $param = $matches[1]; $desc = self::indent( "\t\t", $matches[2] ); return "\t$param\n$desc\n\n"; } private static function indent( $whitespace, $text ) { $lines = explode( "\n", $text ); foreach ( $lines as &$line ) { $line = $whitespace . $line; } return implode( "\n", $lines ); } private static function pass_through_pager( $out ) { if ( ! Utils\check_proc_available( null /*context*/, true /*return*/ ) ) { WP_CLI::line( $out ); WP_CLI::debug( 'Warning: check_proc_available() failed in pass_through_pager().', 'help' ); return -1; } $pager = getenv( 'PAGER' ); if ( false === $pager ) { $pager = Utils\is_windows() ? 'more' : 'less -r'; } // For Windows 7 need to set code page to something other than Unicode (65001) to get around "Not enough memory." error with `more.com` on PHP 7.1+. if ( 'more' === $pager && defined( 'PHP_WINDOWS_VERSION_MAJOR' ) && PHP_WINDOWS_VERSION_MAJOR < 10 && function_exists( 'sapi_windows_cp_set' ) ) { // Note will also apply to Windows 8 (see https://msdn.microsoft.com/en-us/library/windows/desktop/ms724832.aspx) but probably harmless anyway. $cp = getenv( 'WP_CLI_WINDOWS_CODE_PAGE' ) ?: 1252; // Code page 1252 is the most used so probably the most compat. // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions -- Wrapped in function_exists() call. sapi_windows_cp_set( $cp ); // `sapi_windows_cp_set()` introduced PHP 7.1. } // Convert string to file handle. $fd = fopen( 'php://temp', 'r+b' ); fwrite( $fd, $out ); rewind( $fd ); $descriptorspec = [ 0 => $fd, 1 => STDOUT, 2 => STDERR, ]; return proc_close( Utils\proc_open_compat( $pager, $descriptorspec, $pipes ) ); } private static function get_initial_markdown( $command ) { $name = implode( ' ', Dispatcher\get_path( $command ) ); $binding = [ 'name' => $name, 'shortdesc' => $command->get_shortdesc(), ]; $binding['synopsis'] = "$name " . $command->get_synopsis(); $alias = $command->get_alias(); if ( $alias ) { $binding['alias'] = $alias; } if ( $command->can_have_subcommands() ) { $binding['has-subcommands']['subcommands'] = self::render_subcommands( $command ); } return Utils\mustache_render( 'man.mustache', $binding ); } private static function render_subcommands( $command ) { $subcommands = []; foreach ( $command->get_subcommands() as $subcommand ) { if ( WP_CLI::get_runner()->is_command_disabled( $subcommand ) ) { continue; } $subcommands[ $subcommand->get_name() ] = $subcommand->get_shortdesc(); } $max_len = self::get_max_len( array_keys( $subcommands ) ); $lines = []; foreach ( $subcommands as $name => $desc ) { $lines[] = str_pad( $name, $max_len ) . "\t\t\t" . $desc; } return $lines; } private static function get_max_len( $strings ) { $max_len = 0; foreach ( $strings as $str ) { $len = strlen( $str ); if ( $len > $max_len ) { $max_len = $len; } } return $max_len; } /** * Parse reference links from longdescription. * * @param string $longdesc The longdescription from the `$command->get_longdesc()`. * @return string The longdescription which has links as footnote. */ private static function parse_reference_links( $longdesc ) { $description = ''; foreach ( explode( "\n", $longdesc ) as $line ) { if ( 0 === strpos( $line, '#' ) ) { break; } $description .= $line . "\n"; } // Fires if it has description text at the head of `$longdesc`. if ( $description ) { $links = []; // An array of URLs from the description. $pattern = '/\[.+?\]\((https?:\/\/.+?)\)/'; $newdesc = preg_replace_callback( $pattern, function( $matches ) use ( &$links ) { static $count = 0; $count++; $links[] = $matches[1]; return str_replace( '(' . $matches[1] . ')', '[' . $count . ']', $matches[0] ); }, $description ); $footnote = ''; $link_count = count( $links ); for ( $i = 0; $i < $link_count; $i++ ) { $n = $i + 1; $footnote .= '[' . $n . '] ' . $links[ $i ] . "\n"; } if ( $footnote ) { $newdesc = trim( $newdesc ) . "\n\n---\n" . $footnote; $longdesc = str_replace( trim( $description ), trim( $newdesc ), $longdesc ); } } return $longdesc; } } ] * : Render output in a particular format. * --- * default: yaml * options: * - yaml * - json * - var_export * --- * * ## EXAMPLES * * # List all available aliases. * $ wp cli alias list * --- * @all: Run command against every registered alias. * @prod: * ssh: runcommand@runcommand.io~/webapps/production * @dev: * ssh: vagrant@192.168.50.10/srv/www/runcommand.dev * @both: * - @prod * - @dev * * @subcommand list */ public function list_( $args, $assoc_args ) { WP_CLI::print_value( WP_CLI::get_runner()->aliases, $assoc_args ); } /** * Gets the value for an alias. * * ## OPTIONS * * * : Key for the alias. * * ## EXAMPLES * * # Get alias. * $ wp cli alias get @prod * ssh: dev@somedeve.env:12345/home/dev/ */ public function get( $args, $assoc_args ) { list( $alias ) = $args; $aliases = WP_CLI::get_runner()->aliases; if ( empty( $aliases[ $alias ] ) ) { WP_CLI::error( "No alias found with key '{$alias}'." ); } foreach ( $aliases[ $alias ] as $key => $value ) { WP_CLI::log( "{$key}: {$value}" ); } } /** * Creates an alias. * * ## OPTIONS * * * : Key for the alias. * * [--set-user=] * : Set user for alias. * * [--set-url=] * : Set url for alias. * * [--set-path=] * : Set path for alias. * * [--set-ssh=] * : Set ssh for alias. * * [--set-http=] * : Set http for alias. * * [--grouping=] * : For grouping multiple aliases. * * [--config=] * : Config file to be considered for operations. * --- * default: global * options: * - global * - project * --- * * ## EXAMPLES * * # Add alias to global config. * $ wp cli alias add @prod --set-ssh=login@host --set-path=/path/to/wordpress/install/ --set-user=wpcli * Success: Added '@prod' alias. * * # Add alias to project config. * $ wp cli alias add @prod --set-ssh=login@host --set-path=/path/to/wordpress/install/ --set-user=wpcli --config=project * Success: Added '@prod' alias. * * # Add group of aliases. * $ wp cli alias add @multiservers --grouping=servera,serverb * Success: Added '@multiservers' alias. */ public function add( $args, $assoc_args ) { $config = ( ! empty( $assoc_args['config'] ) ? $assoc_args['config'] : 'global' ); list( $config_path, $aliases ) = $this->get_aliases_data( $config, '', true ); $this->validate_config_file( $config_path ); $alias = $args[0]; $grouping = Utils\get_flag_value( $assoc_args, 'grouping' ); $this->validate_input( $assoc_args, $grouping ); if ( isset( $aliases[ $alias ] ) ) { WP_CLI::error( "Key '{$alias}' exists already." ); } if ( null === $grouping ) { $aliases = $this->build_aliases( $aliases, $alias, $assoc_args, false ); } else { $aliases = $this->build_aliases( $aliases, $alias, $assoc_args, true, $grouping ); } $this->process_aliases( $aliases, $alias, $config_path, 'Added' ); } /** * Deletes an alias. * * ## OPTIONS * * * : Key for the alias. * * [--config=] * : Config file to be considered for operations. * --- * options: * - global * - project * --- * * ## EXAMPLES * * # Delete alias. * $ wp cli alias delete @prod * Success: Deleted '@prod' alias. * * # Delete project alias. * $ wp cli alias delete @prod --config=project * Success: Deleted '@prod' alias. */ public function delete( $args, $assoc_args ) { list( $alias ) = $args; $config = ( ! empty( $assoc_args['config'] ) ? $assoc_args['config'] : '' ); list( $config_path, $aliases ) = $this->get_aliases_data( $config, $alias ); $this->validate_config_file( $config_path ); if ( empty( $aliases[ $alias ] ) ) { WP_CLI::error( "No alias found with key '{$alias}'." ); } unset( $aliases[ $alias ] ); $this->process_aliases( $aliases, $alias, $config_path, 'Deleted' ); } /** * Updates an alias. * * ## OPTIONS * * * : Key for the alias. * * [--set-user=] * : Set user for alias. * * [--set-url=] * : Set url for alias. * * [--set-path=] * : Set path for alias. * * [--set-ssh=] * : Set ssh for alias. * * [--set-http=] * : Set http for alias. * * [--grouping=] * : For grouping multiple aliases. * * [--config=] * : Config file to be considered for operations. * --- * options: * - global * - project * --- * * ## EXAMPLES * * # Update alias. * $ wp cli alias update @prod --set-user=newuser --set-path=/new/path/to/wordpress/install/ * Success: Updated 'prod' alias. * * # Update project alias. * $ wp cli alias update @prod --set-user=newuser --set-path=/new/path/to/wordpress/install/ --config=project * Success: Updated 'prod' alias. */ public function update( $args, $assoc_args ) { $config = ( ! empty( $assoc_args['config'] ) ? $assoc_args['config'] : '' ); $alias = $args[0]; $grouping = Utils\get_flag_value( $assoc_args, 'grouping' ); list( $config_path, $aliases ) = $this->get_aliases_data( $config, $alias, true ); $this->validate_config_file( $config_path ); $this->validate_input( $assoc_args, $grouping ); if ( empty( $aliases[ $alias ] ) ) { WP_CLI::error( "No alias found with key '{$alias}'." ); } if ( null === $grouping ) { $aliases = $this->build_aliases( $aliases, $alias, $assoc_args, false, '', true ); } else { $aliases = $this->build_aliases( $aliases, $alias, $assoc_args, true, $grouping, true ); } $this->process_aliases( $aliases, $alias, $config_path, 'Updated' ); } /** * Get config path and aliases data based on config type. * * @param string $config Type of config to get data from. * @param string $alias Alias to be used for Add/Update/Delete. * @param bool $create_config_file Optional. If a config file doesn't exist, * should it be created? Defaults to false. * * @return array Config Path and Aliases in it. * @throws ExitException */ private function get_aliases_data( $config, $alias, $create_config_file = false ) { $global_config_path = WP_CLI::get_runner()->get_global_config_path( $create_config_file ); $global_aliases = Spyc::YAMLLoad( $global_config_path ); $project_config_path = WP_CLI::get_runner()->get_project_config_path(); $project_aliases = Spyc::YAMLLoad( $project_config_path ); if ( 'global' === $config ) { $config_path = $global_config_path; $aliases = $global_aliases; } elseif ( 'project' === $config ) { $config_path = $project_config_path; $aliases = $project_aliases; } else { $is_global_alias = array_key_exists( $alias, $global_aliases ); $is_project_alias = array_key_exists( $alias, $project_aliases ); if ( $is_global_alias && $is_project_alias ) { WP_CLI::error( "Key '{$alias}' found in more than one path. Please pass --config param." ); } elseif ( $is_global_alias ) { $config_path = $global_config_path; $aliases = $global_aliases; } else { $config_path = $project_config_path; $aliases = $project_aliases; } } return [ $config_path, $aliases ]; } /** * Check if the config file exists and is writable. * * @param string $config_path Path to config file. * * @return void */ private function validate_config_file( $config_path ) { if ( ! file_exists( $config_path ) || ! is_writable( $config_path ) ) { WP_CLI::error( "Config file does not exist: {$config_path}" ); } } /** * Return aliases array. * * @param array $aliases Current aliases data. * @param string $alias Name of alias. * @param array $assoc_args Associative arguments. * @param bool $is_grouping Check if its a grouping operation. * @param string $grouping Grouping value. * @param bool $is_update Is this an update operation? * * @return mixed */ private function build_aliases( $aliases, $alias, $assoc_args, $is_grouping, $grouping = '', $is_update = false ) { if ( $is_grouping ) { $valid_assoc_args = [ 'config', 'grouping' ]; $invalid_args = array_diff( array_keys( $assoc_args ), $valid_assoc_args ); // Check for invalid args. if ( ! empty( $invalid_args ) ) { $args_info = implode( ',', $invalid_args ); WP_CLI::error( "--grouping argument works alone. Found invalid arg(s) '$args_info'." ); } } if ( $is_update ) { $this->validate_alias_type( $aliases, $alias, $assoc_args, $grouping ); } if ( ! $is_grouping ) { foreach ( $assoc_args as $key => $value ) { if ( strpos( $key, 'set-' ) !== false ) { $alias_key_info = explode( '-', $key ); $alias_key = empty( $alias_key_info[1] ) ? '' : $alias_key_info[1]; if ( ! empty( $alias_key ) && ! empty( $value ) ) { $aliases[ $alias ][ $alias_key ] = $value; } } } } else { if ( ! empty( $grouping ) ) { $group_alias_list = explode( ',', $grouping ); $group_alias = array_map( function ( $current_alias ) { return '@' . ltrim( $current_alias, '@' ); }, $group_alias_list ); $aliases[ $alias ] = $group_alias; } } return $aliases; } /** * Validate input of passed arguments. * * @param array $assoc_args Arguments array. * @param string $grouping Grouping argument value. * * @throws ExitException */ private function validate_input( $assoc_args, $grouping ) { // Check if valid arguments were passed. $arg_match = preg_grep( '/^set-(\w+)/i', array_keys( $assoc_args ) ); // Verify passed-arguments. if ( empty( $grouping ) && empty( $arg_match ) ) { WP_CLI::error( 'No valid arguments passed.' ); } // Check whether passed arguments contain value or not. $assoc_arg_values = array_filter( array_intersect_key( $assoc_args, array_flip( $arg_match ) ) ); if ( empty( $grouping ) && empty( $assoc_arg_values ) ) { WP_CLI::error( 'No value passed to arguments.' ); } } /** * Validate alias type before update. * * @param array $aliases Existing aliases data. * @param string $alias Alias Name. * @param array $assoc_args Arguments array. * @param string $grouping Grouping argument value. * * @throws ExitException */ private function validate_alias_type( $aliases, $alias, $assoc_args, $grouping ) { $alias_data = $aliases[ $alias ]; $group_aliases_match = preg_grep( '/^@(\w+)/i', $alias_data ); $arg_match = preg_grep( '/^set-(\w+)/i', array_keys( $assoc_args ) ); if ( ! empty( $group_aliases_match ) && ! empty( $arg_match ) ) { WP_CLI::error( 'Trying to update group alias with invalid arguments.' ); } elseif ( empty( $group_aliases_match ) && ! empty( $grouping ) ) { WP_CLI::error( 'Trying to update simple alias with invalid --grouping argument.' ); } } /** * Save aliases data to config file. * * @param array $aliases Current aliases data. * @param string $alias Name of alias. * @param string $config_path Path to config file. * @param string $operation Current operation string fro message. */ private function process_aliases( $aliases, $alias, $config_path, $operation = '' ) { // Convert data to YAML string. $yaml_data = Spyc::YAMLDump( $aliases ); // Add data in config file. if ( file_put_contents( $config_path, $yaml_data ) ) { WP_CLI::success( "$operation '{$alias}' alias." ); } } } error ) ) { wp_die( $wpdb->error ); } // Set the database table prefix and the format specifiers for database table columns. $GLOBALS['table_prefix'] = $table_prefix; wp_set_wpdb_vars(); // Start the WordPress object cache, or an external object cache if the drop-in is present. wp_start_object_cache(); // Attach the default filters. require ABSPATH . WPINC . '/default-filters.php'; // Initialize multisite if enabled. if ( is_multisite() ) { Utils\maybe_require( '4.6-alpha-37575', ABSPATH . WPINC . '/class-wp-site-query.php' ); Utils\maybe_require( '4.6-alpha-37896', ABSPATH . WPINC . '/class-wp-network-query.php' ); require ABSPATH . WPINC . '/ms-blogs.php'; require ABSPATH . WPINC . '/ms-settings.php'; } elseif ( ! defined( 'MULTISITE' ) ) { define( 'MULTISITE', false ); } register_shutdown_function( 'shutdown_action_hook' ); // Stop most of WordPress from being loaded if we just want the basics. if ( SHORTINIT ) { return false; } // Load the L10n library. require_once ABSPATH . WPINC . '/l10n.php'; // WP-CLI: Permit Utils\wp_not_installed() to run on < WP 4.0 apply_filters( 'nocache_headers', [] ); // Run the installer if WordPress is not installed. wp_not_installed(); // Load most of WordPress. require ABSPATH . WPINC . '/class-wp-walker.php'; require ABSPATH . WPINC . '/class-wp-ajax-response.php'; require ABSPATH . WPINC . '/formatting.php'; require ABSPATH . WPINC . '/capabilities.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-roles.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-role.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-user.php' ); require ABSPATH . WPINC . '/query.php'; Utils\maybe_require( '3.7-alpha-25139', ABSPATH . WPINC . '/date.php' ); require ABSPATH . WPINC . '/theme.php'; require ABSPATH . WPINC . '/class-wp-theme.php'; require ABSPATH . WPINC . '/template.php'; require ABSPATH . WPINC . '/user.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-user-query.php' ); Utils\maybe_require( '4.0', ABSPATH . WPINC . '/session.php' ); require ABSPATH . WPINC . '/meta.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-meta-query.php' ); Utils\maybe_require( '4.5-alpha-35776', ABSPATH . WPINC . '/class-wp-metadata-lazyloader.php' ); require ABSPATH . WPINC . '/general-template.php'; require ABSPATH . WPINC . '/link-template.php'; require ABSPATH . WPINC . '/author-template.php'; require ABSPATH . WPINC . '/post.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-walker-page.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-walker-page-dropdown.php' ); Utils\maybe_require( '4.6-alpha-37890', ABSPATH . WPINC . '/class-wp-post-type.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-post.php' ); require ABSPATH . WPINC . '/post-template.php'; Utils\maybe_require( '3.6-alpha-23451', ABSPATH . WPINC . '/revision.php' ); Utils\maybe_require( '3.6-alpha-23451', ABSPATH . WPINC . '/post-formats.php' ); require ABSPATH . WPINC . '/post-thumbnail-template.php'; require ABSPATH . WPINC . '/category.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-walker-category.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-walker-category-dropdown.php' ); require ABSPATH . WPINC . '/category-template.php'; require ABSPATH . WPINC . '/comment.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-comment.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-comment-query.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-walker-comment.php' ); require ABSPATH . WPINC . '/comment-template.php'; require ABSPATH . WPINC . '/rewrite.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-rewrite.php' ); require ABSPATH . WPINC . '/feed.php'; require ABSPATH . WPINC . '/bookmark.php'; require ABSPATH . WPINC . '/bookmark-template.php'; require ABSPATH . WPINC . '/kses.php'; require ABSPATH . WPINC . '/cron.php'; require ABSPATH . WPINC . '/deprecated.php'; require ABSPATH . WPINC . '/script-loader.php'; require ABSPATH . WPINC . '/taxonomy.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-term.php' ); Utils\maybe_require( '4.6-alpha-37575', ABSPATH . WPINC . '/class-wp-term-query.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-tax-query.php' ); require ABSPATH . WPINC . '/update.php'; require ABSPATH . WPINC . '/canonical.php'; require ABSPATH . WPINC . '/shortcodes.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/embed.php' ); require ABSPATH . WPINC . '/class-wp-embed.php'; require ABSPATH . WPINC . '/media.php'; Utils\maybe_require( '4.4-alpha-34903', ABSPATH . WPINC . '/class-wp-oembed-controller.php' ); require ABSPATH . WPINC . '/http.php'; require_once ABSPATH . WPINC . '/class-http.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-streams.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-curl.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-proxy.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-cookie.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-encoding.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-http-response.php' ); Utils\maybe_require( '4.6-alpha-37438', ABSPATH . WPINC . '/class-wp-http-requests-response.php' ); require ABSPATH . WPINC . '/widgets.php'; Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-widget.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/class-wp-widget-factory.php' ); require ABSPATH . WPINC . '/nav-menu.php'; require ABSPATH . WPINC . '/nav-menu-template.php'; require ABSPATH . WPINC . '/admin-bar.php'; Utils\maybe_require( '4.4-alpha-34928', ABSPATH . WPINC . '/rest-api.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/rest-api/class-wp-rest-server.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/rest-api/class-wp-rest-response.php' ); Utils\maybe_require( '4.4-beta4-35719', ABSPATH . WPINC . '/rest-api/class-wp-rest-request.php' ); // Load multisite-specific files. if ( is_multisite() ) { require ABSPATH . WPINC . '/ms-functions.php'; require ABSPATH . WPINC . '/ms-default-filters.php'; require ABSPATH . WPINC . '/ms-deprecated.php'; } // Define constants that rely on the API to obtain the default value. // Define must-use plugin directory constants, which may be overridden in the sunrise.php drop-in. wp_plugin_directory_constants(); $symlinked_plugins_supported = function_exists( 'wp_register_plugin_realpath' ); if ( $symlinked_plugins_supported ) { $GLOBALS['wp_plugin_paths'] = []; } // Load must-use plugins. foreach ( wp_get_mu_plugins() as $mu_plugin ) { include_once $mu_plugin; } unset( $mu_plugin ); // Load network activated plugins. if ( is_multisite() ) { foreach ( wp_get_active_network_plugins() as $network_plugin ) { if ( $symlinked_plugins_supported ) { wp_register_plugin_realpath( $network_plugin ); } include_once $network_plugin; } unset( $network_plugin ); } do_action( 'muplugins_loaded' ); if ( is_multisite() ) { ms_cookie_constants(); } // Define constants after multisite is loaded. Cookie-related constants may be overridden in ms_network_cookies(). wp_cookie_constants(); // Define and enforce our SSL constants. wp_ssl_constants(); // Create common globals. require ABSPATH . WPINC . '/vars.php'; // Make taxonomies and posts available to plugins and themes. // @plugin authors: warning: these get registered again on the init hook. create_initial_taxonomies(); create_initial_post_types(); // Register the default theme directory root register_theme_directory( get_theme_root() ); // Load active plugins. foreach ( wp_get_active_and_valid_plugins() as $plugin ) { if ( $symlinked_plugins_supported ) { wp_register_plugin_realpath( $plugin ); } include_once $plugin; } unset( $plugin, $symlinked_plugins_supported ); // Load pluggable functions. require ABSPATH . WPINC . '/pluggable.php'; require ABSPATH . WPINC . '/pluggable-deprecated.php'; // Set internal encoding. wp_set_internal_encoding(); // Run wp_cache_postload() if object cache is enabled and the function exists. if ( WP_CACHE && function_exists( 'wp_cache_postload' ) ) { wp_cache_postload(); } do_action( 'plugins_loaded' ); // Define constants which affect functionality if not already defined. wp_functionality_constants(); if ( ! function_exists( 'get_magic_quotes_gpc' ) ) { // Provide compat fallback for newer PHP version (7.4+) on older WordPress core versions. function get_magic_quotes_gpc() { return false; } } // Add magic quotes and set up $_REQUEST ( $_GET + $_POST ) wp_magic_quotes(); do_action( 'sanitize_comment_cookies' ); /** * WordPress Query object * @global object $wp_the_query * @since 2.0.0 */ $GLOBALS['wp_the_query'] = new WP_Query(); /** * Holds the reference to @see $wp_the_query * Use this global for WordPress queries * @global object $wp_query * @since 1.5.0 */ $GLOBALS['wp_query'] = $GLOBALS['wp_the_query']; /** * Holds the WordPress Rewrite object for creating pretty URLs * @global object $wp_rewrite * @since 1.5.0 */ $GLOBALS['wp_rewrite'] = new WP_Rewrite(); /** * WordPress Object * @global object $wp * @since 2.0.0 */ $GLOBALS['wp'] = new WP(); /** * WordPress Widget Factory Object * @global object $wp_widget_factory * @since 2.8.0 */ $GLOBALS['wp_widget_factory'] = new WP_Widget_Factory(); /** * WordPress User Roles * @global object $wp_roles * @since 2.0.0 */ $GLOBALS['wp_roles'] = new WP_Roles(); do_action( 'setup_theme' ); // Define the template related constants. wp_templating_constants(); // Load the default text localization domain. load_default_textdomain(); $locale = get_locale(); $locale_file = WP_LANG_DIR . "/$locale.php"; if ( ( 0 === validate_file( $locale ) ) && is_readable( $locale_file ) ) { require $locale_file; } unset( $locale_file ); // Pull in locale data after loading text domain. require_once ABSPATH . WPINC . '/locale.php'; /** * WordPress Locale object for loading locale domain date and various strings. * @global object $wp_locale * @since 2.1.0 */ $GLOBALS['wp_locale'] = new WP_Locale(); // Load the functions for the active theme, for both parent and child theme if applicable. // phpcs:disable WordPress.WP.DiscouragedConstants.STYLESHEETPATHUsageFound,WordPress.WP.DiscouragedConstants.TEMPLATEPATHUsageFound global $pagenow; if ( ! defined( 'WP_INSTALLING' ) || 'wp-activate.php' === $pagenow ) { if ( TEMPLATEPATH !== STYLESHEETPATH && file_exists( STYLESHEETPATH . '/functions.php' ) ) { include STYLESHEETPATH . '/functions.php'; } if ( file_exists( TEMPLATEPATH . '/functions.php' ) ) { include TEMPLATEPATH . '/functions.php'; } } // phpcs:enable WordPress.WP.DiscouragedConstants do_action( 'after_setup_theme' ); // Set up current user. $GLOBALS['wp']->init(); /** * Most of WP is loaded at this stage, and the user is authenticated. WP continues * to load on the init hook that follows (e.g. widgets), and many plugins instantiate * themselves on it for all sorts of reasons (e.g. they need a user, a taxonomy, etc.). * * If you wish to plug an action once WP is loaded, use the wp_loaded hook below. */ do_action( 'init' ); // Check site status # if ( is_multisite() ) { // WP-CLI if ( is_multisite() && ! defined( 'WP_INSTALLING' ) ) { $file = ms_site_check(); if ( true !== $file ) { require $file; die(); } unset( $file ); } /** * This hook is fired once WP, all plugins, and the theme are fully loaded and instantiated. * * AJAX requests should use wp-admin/admin-ajax.php. admin-ajax.php can handle requests for * users not logged in. * * @link https://codex.wordpress.org/AJAX_in_Plugins * * @since 3.0.0 */ do_action( 'wp_loaded' ); clean(); } ); } } return $cache; } /** * Set the context in which WP-CLI should be run */ public static function set_url( $url ) { self::debug( 'Set URL: ' . $url, 'bootstrap' ); $url_parts = Utils\parse_url( $url ); self::set_url_params( $url_parts ); } private static function set_url_params( $url_parts ) { $f = function( $key ) use ( $url_parts ) { return Utils\get_flag_value( $url_parts, $key, '' ); }; if ( isset( $url_parts['host'] ) ) { if ( isset( $url_parts['scheme'] ) && 'https' === strtolower( $url_parts['scheme'] ) ) { $_SERVER['HTTPS'] = 'on'; } $_SERVER['HTTP_HOST'] = $url_parts['host']; if ( isset( $url_parts['port'] ) ) { $_SERVER['HTTP_HOST'] .= ':' . $url_parts['port']; } $_SERVER['SERVER_NAME'] = $url_parts['host']; } $_SERVER['REQUEST_URI'] = $f( 'path' ) . ( isset( $url_parts['query'] ) ? '?' . $url_parts['query'] : '' ); $_SERVER['SERVER_PORT'] = Utils\get_flag_value( $url_parts, 'port', '80' ); $_SERVER['QUERY_STRING'] = $f( 'query' ); } /** * @return WpHttpCacheManager */ public static function get_http_cache_manager() { static $http_cacher; if ( ! $http_cacher ) { $http_cacher = new WpHttpCacheManager( self::get_cache() ); } return $http_cacher; } /** * Colorize a string for output. * * Yes, you can change the color of command line text too. For instance, * here's how `WP_CLI::success()` colorizes "Success: " * * ``` * WP_CLI::colorize( "%GSuccess:%n " ) * ``` * * Uses `\cli\Colors::colorize()` to transform color tokens to display * settings. Choose from the following tokens (and note 'reset'): * * * %y => ['color' => 'yellow'], * * %g => ['color' => 'green'], * * %b => ['color' => 'blue'], * * %r => ['color' => 'red'], * * %p => ['color' => 'magenta'], * * %m => ['color' => 'magenta'], * * %c => ['color' => 'cyan'], * * %w => ['color' => 'grey'], * * %k => ['color' => 'black'], * * %n => ['color' => 'reset'], * * %Y => ['color' => 'yellow', 'style' => 'bright'], * * %G => ['color' => 'green', 'style' => 'bright'], * * %B => ['color' => 'blue', 'style' => 'bright'], * * %R => ['color' => 'red', 'style' => 'bright'], * * %P => ['color' => 'magenta', 'style' => 'bright'], * * %M => ['color' => 'magenta', 'style' => 'bright'], * * %C => ['color' => 'cyan', 'style' => 'bright'], * * %W => ['color' => 'grey', 'style' => 'bright'], * * %K => ['color' => 'black', 'style' => 'bright'], * * %N => ['color' => 'reset', 'style' => 'bright'], * * %3 => ['background' => 'yellow'], * * %2 => ['background' => 'green'], * * %4 => ['background' => 'blue'], * * %1 => ['background' => 'red'], * * %5 => ['background' => 'magenta'], * * %6 => ['background' => 'cyan'], * * %7 => ['background' => 'grey'], * * %0 => ['background' => 'black'], * * %F => ['style' => 'blink'], * * %U => ['style' => 'underline'], * * %8 => ['style' => 'inverse'], * * %9 => ['style' => 'bright'], * * %_ => ['style' => 'bright'] * * @access public * @category Output * * @param string $string String to colorize for output, with color tokens. * @return string Colorized string. */ public static function colorize( $string ) { return Colors::colorize( $string, self::get_runner()->in_color() ); } /** * Schedule a callback to be executed at a certain point. * * Hooks conceptually are very similar to WordPress actions. WP-CLI hooks * are typically called before WordPress is loaded. * * WP-CLI hooks include: * * * `before_add_command:` - Before the command is added. * * `after_add_command:` - After the command was added. * * `before_invoke:` - Just before a command is invoked. * * `after_invoke:` - Just after a command is invoked. * * `find_command_to_run_pre` - Just before WP-CLI finds the command to run. * * `before_wp_load` - Just before the WP load process begins. * * `before_wp_config_load` - After wp-config.php has been located. * * `after_wp_config_load` - After wp-config.php has been loaded into scope. * * `after_wp_load` - Just after the WP load process has completed. * * `before_run_command` - Just before the command is executed. * * WP-CLI commands can create their own hooks with `WP_CLI::do_hook()`. * * If additional arguments are passed through the `WP_CLI::do_hook()` call, * these will be passed on to the callback provided by `WP_CLI::add_hook()`. * * ``` * # `wp network meta` confirms command is executing in multisite context. * WP_CLI::add_command( 'network meta', 'Network_Meta_Command', array( * 'before_invoke' => function () { * if ( !is_multisite() ) { * WP_CLI::error( 'This is not a multisite installation.' ); * } * } * ) ); * ``` * * @access public * @category Registration * * @param string $when Identifier for the hook. * @param mixed $callback Callback to execute when hook is called. * @return null */ public static function add_hook( $when, $callback ) { if ( array_key_exists( $when, self::$hooks_passed ) ) { self::debug( sprintf( 'Immediately invoking on passed hook "%s": %s', $when, Utils\describe_callable( $callback ) ), 'hooks' ); call_user_func_array( $callback, (array) self::$hooks_passed[ $when ] ); } self::$hooks[ $when ][] = $callback; } /** * Execute callbacks registered to a given hook. * * See `WP_CLI::add_hook()` for details on WP-CLI's internal hook system. * Commands can provide and call their own hooks. * * @access public * @category Registration * * @param string $when Identifier for the hook. * @param mixed ... Optional. Arguments that will be passed onto the * callback provided by `WP_CLI::add_hook()`. * @return null */ public static function do_hook( $when ) { $args = func_num_args() > 1 ? array_slice( func_get_args(), 1 ) : []; self::$hooks_passed[ $when ] = $args; if ( ! isset( self::$hooks[ $when ] ) ) { return; } self::debug( sprintf( 'Processing hook "%s" with %d callbacks', $when, count( self::$hooks[ $when ] ) ), 'hooks' ); foreach ( self::$hooks[ $when ] as $callback ) { self::debug( sprintf( 'On hook "%s": %s', $when, Utils\describe_callable( $callback ) ), 'hooks' ); call_user_func_array( $callback, $args ); } } /** * Add a callback to a WordPress action or filter. * * `add_action()` without needing access to `add_action()`. If WordPress is * already loaded though, you should use `add_action()` (and `add_filter()`) * instead. * * @access public * @category Registration * * @param string $tag Named WordPress action or filter. * @param mixed $function_to_add Callable to execute when the action or filter is evaluated. * @param integer $priority Priority to add the callback as. * @param integer $accepted_args Number of arguments to pass to callback. * @return true */ public static function add_wp_hook( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { global $wp_filter, $merged_filters; if ( function_exists( 'add_filter' ) ) { add_filter( $tag, $function_to_add, $priority, $accepted_args ); } else { $idx = self::wp_hook_build_unique_id( $tag, $function_to_add, $priority ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- This is intentional & the purpose of this function. $wp_filter[ $tag ][ $priority ][ $idx ] = [ 'function' => $function_to_add, 'accepted_args' => $accepted_args, ]; unset( $merged_filters[ $tag ] ); } return true; } /** * Build Unique ID for storage and retrieval. * * Essentially _wp_filter_build_unique_id() without needing access to _wp_filter_build_unique_id() */ private static function wp_hook_build_unique_id( $tag, $function, $priority ) { global $wp_filter; static $filter_id_count = 0; if ( is_string( $function ) ) { return $function; } if ( is_object( $function ) ) { // Closures are currently implemented as objects $function = [ $function, '' ]; } else { $function = (array) $function; } if ( is_object( $function[0] ) ) { // Object Class Calling if ( function_exists( 'spl_object_hash' ) ) { return spl_object_hash( $function[0] ) . $function[1]; } $obj_idx = get_class( $function[0] ) . $function[1]; if ( ! isset( $function[0]->wp_filter_id ) ) { if ( false === $priority ) { return false; } $obj_idx .= isset( $wp_filter[ $tag ][ $priority ] ) ? count( (array) $wp_filter[ $tag ][ $priority ] ) : $filter_id_count; $function[0]->wp_filter_id = $filter_id_count; ++$filter_id_count; } else { $obj_idx .= $function[0]->wp_filter_id; } return $obj_idx; } if ( is_string( $function[0] ) ) { // Static Calling return $function[0] . '::' . $function[1]; } } /** * Register a command to WP-CLI. * * WP-CLI supports using any callable class, function, or closure as a * command. `WP_CLI::add_command()` is used for both internal and * third-party command registration. * * Command arguments are parsed from PHPDoc by default, but also can be * supplied as an optional third argument during registration. * * ``` * # Register a custom 'foo' command to output a supplied positional param. * # * # $ wp foo bar --append=qux * # Success: bar qux * * /** * * My awesome closure command * * * * * * : An awesome message to display * * * * --append= * * : An awesome message to append to the original message. * * * * @when before_wp_load * *\/ * $foo = function( $args, $assoc_args ) { * WP_CLI::success( $args[0] . ' ' . $assoc_args['append'] ); * }; * WP_CLI::add_command( 'foo', $foo ); * ``` * * @access public * @category Registration * * @param string $name Name for the command (e.g. "post list" or "site empty"). * @param callable $callable Command implementation as a class, function or closure. * @param array $args { * Optional. An associative array with additional registration parameters. * * @type callable $before_invoke Callback to execute before invoking the command. * @type callable $after_invoke Callback to execute after invoking the command. * @type string $shortdesc Short description (80 char or less) for the command. * @type string $longdesc Description of arbitrary length for examples, etc. * @type string $synopsis The synopsis for the command (string or array). * @type string $when Execute callback on a named WP-CLI hook (e.g. before_wp_load). * @type bool $is_deferred Whether the command addition had already been deferred. * } * @return bool True on success, false if deferred, hard error if registration failed. */ public static function add_command( $name, $callable, $args = [] ) { // Bail immediately if the WP-CLI executable has not been run. if ( ! defined( 'WP_CLI' ) ) { return false; } $valid = false; if ( is_callable( $callable ) ) { $valid = true; } elseif ( is_string( $callable ) && class_exists( (string) $callable ) ) { $valid = true; } elseif ( is_object( $callable ) ) { $valid = true; } elseif ( Utils\is_valid_class_and_method_pair( $callable ) ) { $valid = true; } if ( ! $valid ) { if ( is_array( $callable ) ) { $callable[0] = is_object( $callable[0] ) ? get_class( $callable[0] ) : $callable[0]; $callable = [ $callable[0], $callable[1] ]; } self::error( sprintf( 'Callable %s does not exist, and cannot be registered as `wp %s`.', json_encode( $callable ), $name ) ); } $addition = new CommandAddition(); self::do_hook( "before_add_command:{$name}", $addition ); if ( $addition->was_aborted() ) { self::warning( "Aborting the addition of the command '{$name}' with reason: {$addition->get_reason()}." ); return false; } foreach ( [ 'before_invoke', 'after_invoke' ] as $when ) { if ( isset( $args[ $when ] ) ) { self::add_hook( "{$when}:{$name}", $args[ $when ] ); } } $path = preg_split( '/\s+/', $name ); $leaf_name = array_pop( $path ); $command = self::get_root_command(); while ( ! empty( $path ) ) { $subcommand_name = $path[0]; $parent = implode( ' ', $path ); $subcommand = $command->find_subcommand( $path ); // Parent not found. Defer addition or create an empty container as // needed. if ( ! $subcommand ) { if ( isset( $args['is_deferred'] ) && $args['is_deferred'] ) { $subcommand = new CompositeCommand( $command, $subcommand_name, new DocParser( '' ) ); self::debug( "Adding empty container for deferred command: {$name}", 'commands' ); $command->add_subcommand( $subcommand_name, $subcommand ); } else { self::debug( "Deferring command: {$name}", 'commands' ); self::defer_command_addition( $name, $parent, $callable, $args ); return false; } } $command = $subcommand; } $leaf_command = CommandFactory::create( $leaf_name, $callable, $command ); // Only add a command namespace if the command itself does not exist yet. if ( $leaf_command instanceof CommandNamespace && array_key_exists( $leaf_name, $command->get_subcommands() ) ) { return false; } // Reattach commands attached to namespace to real command. $subcommand_name = (array) $leaf_name; $existing_command = $command->find_subcommand( $subcommand_name ); if ( false !== $existing_command ) { $subcommands = $existing_command->get_subcommands(); if ( ! empty( $subcommands ) && ( $leaf_command instanceof CompositeCommand || $leaf_command->can_have_subcommands ) ) { foreach ( $subcommands as $subname => $subcommand ) { $leaf_command->add_subcommand( $subname, $subcommand ); } } } /** @var Dispatcher\Subcommand|Dispatcher\CompositeCommand|Dispatcher\CommandNamespace $leaf_command */ if ( ! $command->can_have_subcommands() ) { throw new Exception( sprintf( "'%s' can't have subcommands.", implode( ' ', get_path( $command ) ) ) ); } if ( isset( $args['shortdesc'] ) ) { $leaf_command->set_shortdesc( $args['shortdesc'] ); } if ( isset( $args['longdesc'] ) ) { $leaf_command->set_longdesc( $args['longdesc'] ); } if ( isset( $args['synopsis'] ) ) { if ( is_string( $args['synopsis'] ) ) { $leaf_command->set_synopsis( $args['synopsis'] ); } elseif ( is_array( $args['synopsis'] ) ) { $synopsis = SynopsisParser::render( $args['synopsis'] ); $leaf_command->set_synopsis( $synopsis ); $long_desc = ''; $bits = explode( ' ', $synopsis ); foreach ( $args['synopsis'] as $key => $arg ) { $long_desc .= $bits[ $key ] . "\n"; if ( ! empty( $arg['description'] ) ) { $long_desc .= ': ' . $arg['description'] . "\n"; } $yamlify = []; foreach ( [ 'default', 'options' ] as $key ) { if ( isset( $arg[ $key ] ) ) { $yamlify[ $key ] = $arg[ $key ]; } } if ( ! empty( $yamlify ) ) { $long_desc .= Spyc::YAMLDump( $yamlify ); $long_desc .= '---' . "\n"; } $long_desc .= "\n"; } if ( ! empty( $long_desc ) ) { $long_desc = rtrim( $long_desc, "\r\n" ); $long_desc = '## OPTIONS' . "\n\n" . $long_desc; if ( ! empty( $args['longdesc'] ) ) { $long_desc .= "\n\n" . ltrim( $args['longdesc'], "\r\n" ); } $leaf_command->set_longdesc( $long_desc ); } } } if ( isset( $args['when'] ) ) { self::get_runner()->register_early_invoke( $args['when'], $leaf_command ); } if ( ! empty( $parent ) ) { $sub_command = trim( str_replace( $parent, '', $name ) ); self::debug( "Adding command: {$sub_command} in {$parent} Namespace", 'commands' ); } else { self::debug( "Adding command: {$name}", 'commands' ); } $command->add_subcommand( $leaf_name, $leaf_command ); self::do_hook( "after_add_command:{$name}" ); return true; } /** * Defer command addition for a sub-command if the parent command is not yet * registered. * * @param string $name Name for the sub-command. * @param string $parent Name for the parent command. * @param string $callable Command implementation as a class, function or closure. * @param array $args Optional. See `WP_CLI::add_command()` for details. */ private static function defer_command_addition( $name, $parent, $callable, $args = [] ) { $args['is_deferred'] = true; self::$deferred_additions[ $name ] = [ 'parent' => $parent, 'callable' => $callable, 'args' => $args, ]; self::add_hook( "after_add_command:$parent", function () use ( $name ) { $deferred_additions = WP_CLI::get_deferred_additions(); if ( ! array_key_exists( $name, $deferred_additions ) ) { return; } $callable = $deferred_additions[ $name ]['callable']; $args = $deferred_additions[ $name ]['args']; WP_CLI::remove_deferred_addition( $name ); WP_CLI::add_command( $name, $callable, $args ); } ); } /** * Get the list of outstanding deferred command additions. * * @return array Array of outstanding command additions. */ public static function get_deferred_additions() { return self::$deferred_additions; } /** * Remove a command addition from the list of outstanding deferred additions. */ public static function remove_deferred_addition( $name ) { if ( ! array_key_exists( $name, self::$deferred_additions ) ) { self::warning( "Trying to remove a non-existent command addition '{$name}'." ); } unset( self::$deferred_additions[ $name ] ); } /** * Display informational message without prefix, and ignore `--quiet`. * * Message is written to STDOUT. `WP_CLI::log()` is typically recommended; * `WP_CLI::line()` is included for historical compat. * * @access public * @category Output * * @param string $message Message to display to the end user. * @return null */ public static function line( $message = '' ) { echo $message . "\n"; } /** * Display informational message without prefix. * * Message is written to STDOUT, or discarded when `--quiet` flag is supplied. * * ``` * # `wp cli update` lets user know of each step in the update process. * WP_CLI::log( sprintf( 'Downloading from %s...', $download_url ) ); * ``` * * @access public * @category Output * * @param string $message Message to write to STDOUT. */ public static function log( $message ) { if ( null === self::$logger ) { return; } self::$logger->info( $message ); } /** * Display success message prefixed with "Success: ". * * Success message is written to STDOUT. * * Typically recommended to inform user of successful script conclusion. * * ``` * # wp rewrite flush expects 'rewrite_rules' option to be set after flush. * flush_rewrite_rules( \WP_CLI\Utils\get_flag_value( $assoc_args, 'hard' ) ); * if ( ! get_option( 'rewrite_rules' ) ) { * WP_CLI::warning( "Rewrite rules are empty." ); * } else { * WP_CLI::success( 'Rewrite rules flushed.' ); * } * ``` * * @access public * @category Output * * @param string $message Message to write to STDOUT. * @return null */ public static function success( $message ) { if ( null === self::$logger ) { return; } self::$logger->success( $message ); } /** * Display debug message prefixed with "Debug: " when `--debug` is used. * * Debug message is written to STDERR, and includes script execution time. * * Helpful for optionally showing greater detail when needed. Used throughout * WP-CLI bootstrap process for easier debugging and profiling. * * ``` * # Called in `WP_CLI\Runner::set_wp_root()`. * private static function set_wp_root( $path ) { * define( 'ABSPATH', Utils\trailingslashit( $path ) ); * WP_CLI::debug( 'ABSPATH defined: ' . ABSPATH ); * $_SERVER['DOCUMENT_ROOT'] = realpath( $path ); * } * * # Debug details only appear when `--debug` is used. * # $ wp --debug * # [...] * # Debug: ABSPATH defined: /srv/www/wordpress-develop.dev/src/ (0.225s) * ``` * * @access public * @category Output * * @param string|WP_Error|Exception|Throwable $message Message to write to STDERR. * @param string|bool $group Organize debug message to a specific group. * Use `false` to not group the message. * @return null */ public static function debug( $message, $group = false ) { static $storage = []; if ( ! self::$logger ) { $storage[] = [ $message, $group ]; return; } if ( ! empty( $storage ) && self::$logger ) { foreach ( $storage as $entry ) { list( $stored_message, $stored_group ) = $entry; self::$logger->debug( self::error_to_string( $stored_message ), $stored_group ); } $storage = []; } self::$logger->debug( self::error_to_string( $message ), $group ); } /** * Display warning message prefixed with "Warning: ". * * Warning message is written to STDERR. * * Use instead of `WP_CLI::debug()` when script execution should be permitted * to continue. * * ``` * # `wp plugin activate` skips activation when plugin is network active. * $status = $this->get_status( $plugin->file ); * // Network-active is the highest level of activation status * if ( 'active-network' === $status ) { * WP_CLI::warning( "Plugin '{$plugin->name}' is already network active." ); * continue; * } * ``` * * @access public * @category Output * * @param string|WP_Error|Exception|Throwable $message Message to write to STDERR. * @return null */ public static function warning( $message ) { if ( null === self::$logger ) { return; } self::$logger->warning( self::error_to_string( $message ) ); } /** * Display error message prefixed with "Error: " and exit script. * * Error message is written to STDERR. Defaults to halting script execution * with return code 1. * * Use `WP_CLI::warning()` instead when script execution should be permitted * to continue. * * ``` * # `wp cache flush` considers flush failure to be a fatal error. * if ( false === wp_cache_flush() ) { * WP_CLI::error( 'The object cache could not be flushed.' ); * } * ``` * * @access public * @category Output * * @param string|WP_Error|Exception|Throwable $message Message to write to STDERR. * @param boolean|integer $exit True defaults to exit(1). * @return null */ public static function error( $message, $exit = true ) { if ( null !== self::$logger && ! isset( self::get_runner()->assoc_args['completions'] ) ) { self::$logger->error( self::error_to_string( $message ) ); } $return_code = false; if ( true === $exit ) { $return_code = 1; } elseif ( is_int( $exit ) && $exit >= 1 ) { $return_code = $exit; } if ( $return_code ) { if ( self::$capture_exit ) { throw new ExitException( null, $return_code ); } exit( $return_code ); } } /** * Halt script execution with a specific return code. * * Permits script execution to be overloaded by `WP_CLI::runcommand()` * * @access public * @category Output * * @param integer $return_code */ public static function halt( $return_code ) { if ( self::$capture_exit ) { throw new ExitException( null, $return_code ); } exit( $return_code ); } /** * Display a multi-line error message in a red box. Doesn't exit script. * * Error message is written to STDERR. * * @access public * @category Output * * @param array $message_lines Multi-line error message to be displayed. */ public static function error_multi_line( $message_lines ) { if ( null === self::$logger ) { return; } if ( ! isset( self::get_runner()->assoc_args['completions'] ) && is_array( $message_lines ) ) { self::$logger->error_multi_line( array_map( [ __CLASS__, 'error_to_string' ], $message_lines ) ); } } /** * Ask for confirmation before running a destructive operation. * * If 'y' is provided to the question, the script execution continues. If * 'n' or any other response is provided to the question, script exits. * * ``` * # `wp db drop` asks for confirmation before dropping the database. * * WP_CLI::confirm( "Are you sure you want to drop the database?", $assoc_args ); * ``` * * @access public * @category Input * * @param string $question Question to display before the prompt. * @param array $assoc_args Skips prompt if 'yes' is provided. */ public static function confirm( $question, $assoc_args = [] ) { if ( ! Utils\get_flag_value( $assoc_args, 'yes' ) ) { fwrite( STDOUT, $question . ' [y/n] ' ); $answer = strtolower( trim( fgets( STDIN ) ) ); if ( 'y' !== $answer ) { exit; } } } /** * Read value from a positional argument or from STDIN. * * @param array $args The list of positional arguments. * @param int $index At which position to check for the value. * * @return string */ public static function get_value_from_arg_or_stdin( $args, $index ) { if ( isset( $args[ $index ] ) ) { $raw_value = $args[ $index ]; } else { // We don't use file_get_contents() here because it doesn't handle // Ctrl-D properly, when typing in the value interactively. $raw_value = ''; while ( false !== ( $line = fgets( STDIN ) ) ) { $raw_value .= $line; } } return $raw_value; } /** * Read a value, from various formats. * * @access public * @category Input * * @param mixed $raw_value * @param array $assoc_args */ public static function read_value( $raw_value, $assoc_args = [] ) { if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'json' ) { $value = json_decode( $raw_value, true ); if ( null === $value ) { self::error( sprintf( 'Invalid JSON: %s', $raw_value ) ); } } else { $value = $raw_value; } return $value; } /** * Display a value, in various formats * * @param mixed $value Value to display. * @param array $assoc_args Arguments passed to the command, determining format. */ public static function print_value( $value, $assoc_args = [] ) { if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'json' ) { $value = json_encode( $value ); } elseif ( Utils\get_flag_value( $assoc_args, 'format' ) === 'yaml' ) { $value = Spyc::YAMLDump( $value, 2, 0 ); } elseif ( is_array( $value ) || is_object( $value ) ) { $value = var_export( $value, true ); } echo $value . "\n"; } /** * Convert a WP_Error or Exception into a string * * @param string|WP_Error|Exception|Throwable $errors * @throws InvalidArgumentException * * @return string */ public static function error_to_string( $errors ) { if ( is_string( $errors ) ) { return $errors; } // Only json_encode() the data when it needs it $render_data = function( $data ) { if ( is_array( $data ) || is_object( $data ) ) { return json_encode( $data ); } return '"' . $data . '"'; }; if ( $errors instanceof WP_Error ) { foreach ( $errors->get_error_messages() as $message ) { if ( $errors->get_error_data() ) { return $message . ' ' . $render_data( $errors->get_error_data() ); } return $message; } } // PHP 7+: internal and user exceptions must implement Throwable interface. // PHP 5: internal and user exceptions must extend Exception class. if ( interface_exists( 'Throwable' ) && ( $errors instanceof Throwable ) || ( $errors instanceof Exception ) ) { return get_class( $errors ) . ': ' . $errors->getMessage(); } throw new InvalidArgumentException( sprintf( "Unsupported argument type passed to WP_CLI::error_to_string(): '%s'", gettype( $errors ) ) ); } /** * Launch an arbitrary external process that takes over I/O. * * ``` * # `wp core download` falls back to the `tar` binary when PharData isn't available * if ( ! class_exists( 'PharData' ) ) { * $cmd = "tar xz --strip-components=1 --directory=%s -f $tarball"; * WP_CLI::launch( Utils\esc_cmd( $cmd, $dest ) ); * return; * } * ``` * * @access public * @category Execution * * @param string $command External process to launch. * @param boolean $exit_on_error Whether to exit if the command returns an elevated return code. * @param boolean $return_detailed Whether to return an exit status (default) or detailed execution results. * @return int|ProcessRun The command exit status, or a ProcessRun object for full details. */ public static function launch( $command, $exit_on_error = true, $return_detailed = false ) { Utils\check_proc_available( 'launch' ); $proc = Process::create( $command ); $results = $proc->run(); if ( -1 === $results->return_code ) { self::warning( "Spawned process returned exit code {$results->return_code}, which could be caused by a custom compiled version of PHP that uses the --enable-sigchild option." ); } if ( $results->return_code && $exit_on_error ) { exit( $results->return_code ); } if ( $return_detailed ) { return $results; } return $results->return_code; } /** * Run a WP-CLI command in a new process reusing the current runtime arguments. * * Use `WP_CLI::runcommand()` instead, which is easier to use and works better. * * Note: While this command does persist a limited set of runtime arguments, * it *does not* persist environment variables. Practically speaking, WP-CLI * packages won't be loaded when using WP_CLI::launch_self() because the * launched process doesn't have access to the current process $HOME. * * @access public * @category Execution * * @param string $command WP-CLI command to call. * @param array $args Positional arguments to include when calling the command. * @param array $assoc_args Associative arguments to include when calling the command. * @param bool $exit_on_error Whether to exit if the command returns an elevated return code. * @param bool $return_detailed Whether to return an exit status (default) or detailed execution results. * @param array $runtime_args Override one or more global args (path,url,user,allow-root) * @return int|ProcessRun The command exit status, or a ProcessRun instance */ public static function launch_self( $command, $args = [], $assoc_args = [], $exit_on_error = true, $return_detailed = false, $runtime_args = [] ) { $reused_runtime_args = [ 'path', 'url', 'user', 'allow-root', ]; foreach ( $reused_runtime_args as $key ) { if ( isset( $runtime_args[ $key ] ) ) { $assoc_args[ $key ] = $runtime_args[ $key ]; continue; } $value = self::get_runner()->config[ $key ]; if ( $value ) { $assoc_args[ $key ] = $value; } } $php_bin = escapeshellarg( Utils\get_php_binary() ); $script_path = $GLOBALS['argv'][0]; if ( getenv( 'WP_CLI_CONFIG_PATH' ) ) { $config_path = getenv( 'WP_CLI_CONFIG_PATH' ); } else { $config_path = Utils\get_home_dir() . '/.wp-cli/config.yml'; } $config_path = escapeshellarg( $config_path ); $args = implode( ' ', array_map( 'escapeshellarg', $args ) ); $assoc_args = Utils\assoc_args_to_str( $assoc_args ); $full_command = "WP_CLI_CONFIG_PATH={$config_path} {$php_bin} {$script_path} {$command} {$args} {$assoc_args}"; return self::launch( $full_command, $exit_on_error, $return_detailed ); } /** * Get the path to the PHP binary used when executing WP-CLI. * * Environment values permit specific binaries to be indicated. * * Note: moved to Utils, left for BC. * * @access public * @category System * * @return string */ public static function get_php_binary() { return Utils\get_php_binary(); } /** * Confirm that a global configuration parameter does exist. * * @access public * @category Input * * @param string $key Config parameter key to check. * * @return bool */ public static function has_config( $key ) { return array_key_exists( $key, self::get_runner()->config ); } /** * Get values of global configuration parameters. * * Provides access to `--path=`, `--url=`, and other values of * the [global configuration parameters](https://wp-cli.org/config/). * * ``` * WP_CLI::log( 'The --url= value is: ' . WP_CLI::get_config( 'url' ) ); * ``` * * @access public * @category Input * * @param string $key Get value for a specific global configuration parameter. * @return mixed */ public static function get_config( $key = null ) { if ( null === $key ) { return self::get_runner()->config; } if ( ! isset( self::get_runner()->config[ $key ] ) ) { self::warning( "Unknown config option '$key'." ); return null; } return self::get_runner()->config[ $key ]; } /** * Run a WP-CLI command. * * Launches a new child process to run a specified WP-CLI command. * Optionally: * * * Run the command in an existing process. * * Prevent halting script execution on error. * * Capture and return STDOUT, or full details about command execution. * * Parse JSON output if the command rendered it. * * ``` * $options = array( * 'return' => true, // Return 'STDOUT'; use 'all' for full object. * 'parse' => 'json', // Parse captured STDOUT to JSON array. * 'launch' => false, // Reuse the current process. * 'exit_error' => true, // Halt script execution on error. * ); * $plugins = WP_CLI::runcommand( 'plugin list --format=json', $options ); * ``` * * @access public * @category Execution * * @param string $command WP-CLI command to run, including arguments. * @param array $options Configuration options for command execution. * @return mixed */ public static function runcommand( $command, $options = [] ) { $defaults = [ 'launch' => true, // Launch a new process, or reuse the existing. 'exit_error' => true, // Exit on error by default. 'return' => false, // Capture and return output, or render in realtime. 'parse' => false, // Parse returned output as a particular format. ]; $options = array_merge( $defaults, $options ); $launch = $options['launch']; $exit_error = $options['exit_error']; $return = $options['return']; $parse = $options['parse']; $retval = null; if ( $launch ) { Utils\check_proc_available( 'launch option' ); $descriptors = [ 0 => STDIN, 1 => STDOUT, 2 => STDERR, ]; if ( $return ) { $descriptors = [ 0 => STDIN, 1 => [ 'pipe', 'w' ], 2 => [ 'pipe', 'w' ], ]; } $php_bin = escapeshellarg( Utils\get_php_binary() ); $script_path = $GLOBALS['argv'][0]; // Persist runtime arguments unless they've been specified otherwise. $configurator = self::get_configurator(); $argv = array_slice( $GLOBALS['argv'], 1 ); list( $ignore1, $ignore2, $runtime_config ) = $configurator->parse_args( $argv ); foreach ( $runtime_config as $k => $v ) { if ( preg_match( "|^--{$k}=?$|", $command ) ) { unset( $runtime_config[ $k ] ); } } $runtime_config = Utils\assoc_args_to_str( $runtime_config ); $runcommand = "{$php_bin} {$script_path} {$runtime_config} {$command}"; $pipes = []; $proc = Utils\proc_open_compat( $runcommand, $descriptors, $pipes, getcwd() ); if ( $return ) { $stdout = stream_get_contents( $pipes[1] ); fclose( $pipes[1] ); $stderr = stream_get_contents( $pipes[2] ); fclose( $pipes[2] ); } $return_code = proc_close( $proc ); if ( -1 === $return_code ) { self::warning( 'Spawned process returned exit code -1, which could be caused by a custom compiled version of PHP that uses the --enable-sigchild option.' ); } elseif ( $return_code && $exit_error ) { exit( $return_code ); } if ( true === $return || 'stdout' === $return ) { $retval = trim( $stdout ); } elseif ( 'stderr' === $return ) { $retval = trim( $stderr ); } elseif ( 'return_code' === $return ) { $retval = $return_code; } elseif ( 'all' === $return ) { $retval = (object) [ 'stdout' => trim( $stdout ), 'stderr' => trim( $stderr ), 'return_code' => $return_code, ]; } } else { $configurator = self::get_configurator(); $argv = Utils\parse_str_to_argv( $command ); list( $args, $assoc_args, $runtime_config ) = $configurator->parse_args( $argv ); if ( $return ) { $existing_logger = self::$logger; self::$logger = new Execution(); self::$logger->ob_start(); } if ( ! $exit_error ) { self::$capture_exit = true; } try { self::get_runner()->run_command( $args, $assoc_args, [ 'back_compat_conversions' => true, ] ); $return_code = 0; } catch ( ExitException $e ) { $return_code = $e->getCode(); } if ( $return ) { $execution_logger = self::$logger; $execution_logger->ob_end(); self::$logger = $existing_logger; $stdout = $execution_logger->stdout; $stderr = $execution_logger->stderr; if ( true === $return || 'stdout' === $return ) { $retval = trim( $stdout ); } elseif ( 'stderr' === $return ) { $retval = trim( $stderr ); } elseif ( 'return_code' === $return ) { $retval = $return_code; } elseif ( 'all' === $return ) { $retval = (object) [ 'stdout' => trim( $stdout ), 'stderr' => trim( $stderr ), 'return_code' => $return_code, ]; } } if ( ! $exit_error ) { self::$capture_exit = false; } } if ( ( true === $return || 'stdout' === $return ) && 'json' === $parse ) { $retval = json_decode( $retval, true ); } return $retval; } /** * Run a given command within the current process using the same global * parameters. * * Use `WP_CLI::runcommand()` instead, which is easier to use and works better. * * To run a command using a new process with the same global parameters, * use WP_CLI::launch_self(). To run a command using a new process with * different global parameters, use WP_CLI::launch(). * * ``` * ob_start(); * WP_CLI::run_command( array( 'cli', 'cmd-dump' ) ); * $ret = ob_get_clean(); * ``` * * @access public * @category Execution * * @param array $args Positional arguments including command name. * @param array $assoc_args */ public static function run_command( $args, $assoc_args = [] ) { self::get_runner()->run_command( $args, $assoc_args ); } // DEPRECATED STUFF public static function add_man_dir() { trigger_error( 'WP_CLI::add_man_dir() is deprecated. Add docs inline.', E_USER_WARNING ); } // back-compat public static function out( $str ) { fwrite( STDOUT, $str ); } // back-compat // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.MethodNameInvalid -- Deprecated method. public static function addCommand( $name, $class ) { trigger_error( sprintf( 'wp %s: %s is deprecated. use WP_CLI::add_command() instead.', $name, __FUNCTION__ ), E_USER_WARNING ); self::add_command( $name, $class ); } } get_name() ); } while ( $command = $command->get_parent() ); return $path; } STDIN, 1 => [ 'pipe', 'w' ], 2 => [ 'pipe', 'w' ], ]; /** * @var bool Whether to log run time info or not. */ public static $log_run_times = false; /** * @var array Array of process run time info, keyed by process command, each a 2-element array containing run time and run count. */ public static $run_times = []; /** * @param string $command Command to execute. * @param string $cwd Directory to execute the command in. * @param array $env Environment variables to set when running the command. * * @return Process */ public static function create( $command, $cwd = null, $env = [] ) { $proc = new self(); $proc->command = $command; $proc->cwd = $cwd; $proc->env = $env; return $proc; } private function __construct() {} /** * Run the command. * * @return ProcessRun */ public function run() { $start_time = microtime( true ); $pipes = []; $proc = Utils\proc_open_compat( $this->command, self::$descriptors, $pipes, $this->cwd, $this->env ); $stdout = stream_get_contents( $pipes[1] ); fclose( $pipes[1] ); $stderr = stream_get_contents( $pipes[2] ); fclose( $pipes[2] ); $return_code = proc_close( $proc ); $run_time = microtime( true ) - $start_time; if ( self::$log_run_times ) { if ( ! isset( self::$run_times[ $this->command ] ) ) { self::$run_times[ $this->command ] = [ 0, 0 ]; } self::$run_times[ $this->command ][0] += $run_time; self::$run_times[ $this->command ][1]++; } return new ProcessRun( [ 'stdout' => $stdout, 'stderr' => $stderr, 'return_code' => $return_code, 'command' => $this->command, 'cwd' => $this->cwd, 'env' => $this->env, 'run_time' => $run_time, ] ); } /** * Run the command, but throw an Exception on error. * * @return ProcessRun */ public function run_check() { $r = $this->run(); if ( $r->return_code ) { throw new RuntimeException( $r ); } return $r; } /** * Run the command, but throw an Exception on error. * Same as `run_check()` above, but checks the correct stderr. * * @return ProcessRun */ public function run_check_stderr() { $r = $this->run(); if ( $r->return_code || ! empty( $r->stderr ) ) { throw new RuntimeException( $r ); } return $r; } } . */ namespace WP_CLI; /** * Doctrine inflector has static methods for inflecting text. * * The methods in these classes are from several different sources collected * across several different php projects and several different authors. The * original author names and emails are not known. * * Pluralize & Singularize implementation are borrowed from CakePHP with some modifications. * * @link www.doctrine-project.org * @since 1.0 * @author Konsta Vesterinen * @author Jonathan H. Wage */ class Inflector { /** * Plural inflector rules. * * @var array */ private static $plural = [ 'rules' => [ '/(s)tatus$/i' => '\1\2tatuses', '/(quiz)$/i' => '\1zes', '/^(ox)$/i' => '\1\2en', '/([m|l])ouse$/i' => '\1ice', '/(matr|vert|ind)(ix|ex)$/i' => '\1ices', '/(x|ch|ss|sh)$/i' => '\1es', '/([^aeiouy]|qu)y$/i' => '\1ies', '/(hive)$/i' => '\1s', '/(?:([^f])fe|([lr])f)$/i' => '\1\2ves', '/sis$/i' => 'ses', '/([ti])um$/i' => '\1a', '/(p)erson$/i' => '\1eople', '/(m)an$/i' => '\1en', '/(c)hild$/i' => '\1hildren', '/(f)oot$/i' => '\1eet', '/(buffal|her|potat|tomat|volcan)o$/i' => '\1\2oes', '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|vir)us$/i' => '\1i', '/us$/i' => 'uses', '/(alias)$/i' => '\1es', '/(analys|ax|cris|test|thes)is$/i' => '\1es', '/s$/' => 's', '/^$/' => '', '/$/' => 's', ], 'uninflected' => [ '.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', 'people', 'cookie', ], 'irregular' => [ 'atlas' => 'atlases', 'axe' => 'axes', 'beef' => 'beefs', 'brother' => 'brothers', 'cafe' => 'cafes', 'chateau' => 'chateaux', 'child' => 'children', 'cookie' => 'cookies', 'corpus' => 'corpuses', 'cow' => 'cows', 'criterion' => 'criteria', 'curriculum' => 'curricula', 'demo' => 'demos', 'domino' => 'dominoes', 'echo' => 'echoes', 'foot' => 'feet', 'fungus' => 'fungi', 'ganglion' => 'ganglions', 'genie' => 'genies', 'genus' => 'genera', 'graffito' => 'graffiti', 'hippopotamus' => 'hippopotami', 'hoof' => 'hoofs', 'human' => 'humans', 'iris' => 'irises', 'leaf' => 'leaves', 'loaf' => 'loaves', 'man' => 'men', 'medium' => 'media', 'memorandum' => 'memoranda', 'money' => 'monies', 'mongoose' => 'mongooses', 'motto' => 'mottoes', 'move' => 'moves', 'mythos' => 'mythoi', 'niche' => 'niches', 'nucleus' => 'nuclei', 'numen' => 'numina', 'occiput' => 'occiputs', 'octopus' => 'octopuses', 'opus' => 'opuses', 'ox' => 'oxen', 'penis' => 'penises', 'person' => 'people', 'plateau' => 'plateaux', 'runner-up' => 'runners-up', 'sex' => 'sexes', 'soliloquy' => 'soliloquies', 'son-in-law' => 'sons-in-law', 'syllabus' => 'syllabi', 'testis' => 'testes', 'thief' => 'thieves', 'tooth' => 'teeth', 'tornado' => 'tornadoes', 'trilby' => 'trilbys', 'turf' => 'turfs', 'volcano' => 'volcanoes', ], ]; /** * Singular inflector rules. * * @var array */ private static $singular = [ 'rules' => [ '/(s)tatuses$/i' => '\1\2tatus', '/^(.*)(menu)s$/i' => '\1\2', '/(quiz)zes$/i' => '\\1', '/(matr)ices$/i' => '\1ix', '/(vert|ind)ices$/i' => '\1ex', '/^(ox)en/i' => '\1', '/(alias)(es)*$/i' => '\1', '/(buffal|her|potat|tomat|volcan)oes$/i' => '\1o', '/(alumn|bacill|cact|foc|fung|nucle|radi|stimul|syllab|termin|viri?)i$/i' => '\1us', '/([ftw]ax)es/i' => '\1', '/(analys|ax|cris|test|thes)es$/i' => '\1is', '/(shoe|slave)s$/i' => '\1', '/(o)es$/i' => '\1', '/ouses$/' => 'ouse', '/([^a])uses$/' => '\1us', '/([m|l])ice$/i' => '\1ouse', '/(x|ch|ss|sh)es$/i' => '\1', '/(m)ovies$/i' => '\1\2ovie', '/(s)eries$/i' => '\1\2eries', '/([^aeiouy]|qu)ies$/i' => '\1y', '/([lr])ves$/i' => '\1f', '/(tive)s$/i' => '\1', '/(hive)s$/i' => '\1', '/(drive)s$/i' => '\1', '/([^fo])ves$/i' => '\1fe', '/(^analy)ses$/i' => '\1sis', '/(analy|diagno|^ba|(p)arenthe|(p)rogno|(s)ynop|(t)he)ses$/i' => '\1\2sis', '/([ti])a$/i' => '\1um', '/(p)eople$/i' => '\1\2erson', '/(m)en$/i' => '\1an', '/(c)hildren$/i' => '\1\2hild', '/(f)eet$/i' => '\1oot', '/(n)ews$/i' => '\1\2ews', '/eaus$/' => 'eau', '/^(.*us)$/' => '\\1', '/s$/i' => '', ], 'uninflected' => [ '.*[nrlm]ese', '.*deer', '.*fish', '.*measles', '.*ois', '.*pox', '.*sheep', '.*ss', ], 'irregular' => [ 'criteria' => 'criterion', 'curves' => 'curve', 'emphases' => 'emphasis', 'foes' => 'foe', 'hoaxes' => 'hoax', 'media' => 'medium', 'neuroses' => 'neurosis', 'waves' => 'wave', 'oases' => 'oasis', ], ]; /** * Words that should not be inflected. * * @var array */ private static $uninflected = [ 'Amoyese', 'bison', 'Borghese', 'bream', 'breeches', 'britches', 'buffalo', 'cantus', 'carp', 'chassis', 'clippers', 'cod', 'coitus', 'Congoese', 'contretemps', 'corps', 'debris', 'diabetes', 'djinn', 'eland', 'elk', 'equipment', 'Faroese', 'flounder', 'Foochowese', 'gallows', 'Genevese', 'Genoese', 'Gilbertese', 'graffiti', 'headquarters', 'herpes', 'hijinks', 'Hottentotese', 'information', 'innings', 'jackanapes', 'Kiplingese', 'Kongoese', 'Lucchese', 'mackerel', 'Maltese', '.*?media', 'mews', 'moose', 'mumps', 'Nankingese', 'news', 'nexus', 'Niasese', 'Pekingese', 'Piedmontese', 'pincers', 'Pistoiese', 'pliers', 'Portuguese', 'proceedings', 'rabies', 'rice', 'rhinoceros', 'salmon', 'Sarawakese', 'scissors', 'sea[- ]bass', 'series', 'Shavese', 'shears', 'siemens', 'species', 'staff', 'swine', 'testes', 'trousers', 'trout', 'tuna', 'Vermontese', 'Wenchowese', 'whiting', 'wildebeest', 'Yengeese', ]; /** * Method cache array. * * @var array */ private static $cache = []; /** * The initial state of Inflector so reset() works. * * @var array */ private static $initial_state = []; /** * Converts a word into the format for a Doctrine table name. Converts 'ModelName' to 'model_name'. * * @param string $word The word to tableize. * * @return string The tableized word. */ public static function tableize( $word ) { return strtolower( preg_replace( '~(?<=\\w)([A-Z])~', '_$1', $word ) ); } /** * Converts a word into the format for a Doctrine class name. Converts 'table_name' to 'TableName'. * * @param string $word The word to classify. * * @return string The classified word. */ public static function classify( $word ) { return str_replace( ' ', '', ucwords( strtr( $word, '_-', ' ' ) ) ); } /** * Camelizes a word. This uses the classify() method and turns the first character to lowercase. * * @param string $word The word to camelize. * * @return string The camelized word. */ public static function camelize( $word ) { return lcfirst( self::classify( $word ) ); } /** * Uppercases words with configurable delimeters between words. * * Takes a string and capitalizes all of the words, like PHP's built-in * ucwords function. This extends that behavior, however, by allowing the * word delimeters to be configured, rather than only separating on * whitespace. * * Here is an example: * * * * * @param string $string The string to operate on. * @param string $delimiters A list of word separators. * * @return string The string with all delimeter-separated words capitalized. */ public static function ucwords( $string, $delimiters = " \n\t\r\0\x0B-" ) { return preg_replace_callback( '/[^' . preg_quote( $delimiters, '/' ) . ']+/', function( $matches ) { return ucfirst( $matches[0] ); }, $string ); } /** * Clears Inflectors inflected value caches, and resets the inflection * rules to the initial values. * * @return void */ public static function reset() { if ( empty( self::$initial_state ) ) { self::$initial_state = get_class_vars( 'Inflector' ); return; } foreach ( self::$initial_state as $key => $val ) { if ( 'initial_state' !== $key ) { self::${$key} = $val; } } } /** * Adds custom inflection $rules, of either 'plural' or 'singular' $type. * * ### Usage: * * {{{ * Inflector::rules('plural', array('/^(inflect)or$/i' => '\1ables')); * Inflector::rules('plural', array( * 'rules' => array('/^(inflect)ors$/i' => '\1ables'), * 'uninflected' => array('dontinflectme'), * 'irregular' => array('red' => 'redlings') * )); * }}} * * @param string $type The type of inflection, either 'plural' or 'singular' * @param array $rules An array of rules to be added. * @param boolean $reset If true, will unset default inflections for all * new rules that are being defined in $rules. * * @return void */ public static function rules( $type, $rules, $reset = false ) { foreach ( $rules as $rule => $pattern ) { if ( ! is_array( $pattern ) ) { continue; } if ( $reset ) { self::${$type}[ $rule ] = $pattern; } else { self::${$type}[ $rule ] = ( 'uninflected' === $rule ) ? array_merge( $pattern, self::${$type}[ $rule ] ) : $pattern + self::${$type}[ $rule ]; } unset( $rules[ $rule ], self::${$type}[ 'cache' . ucfirst( $rule ) ] ); if ( isset( self::${$type}['merged'][ $rule ] ) ) { unset( self::${$type}['merged'][ $rule ] ); } if ( 'plural' === $type ) { self::$cache['pluralize'] = []; self::$cache['tableize'] = []; } elseif ( 'singular' === $type ) { self::$cache['singularize'] = []; } } self::${$type}['rules'] = $rules + self::${$type}['rules']; } /** * Returns a word in plural form. * * @param string $word The word in singular form. * * @return string The word in plural form. */ public static function pluralize( $word ) { if ( isset( self::$cache['pluralize'][ $word ] ) ) { return self::$cache['pluralize'][ $word ]; } if ( ! isset( self::$plural['merged']['irregular'] ) ) { self::$plural['merged']['irregular'] = self::$plural['irregular']; } if ( ! isset( self::$plural['merged']['uninflected'] ) ) { self::$plural['merged']['uninflected'] = array_merge( self::$plural['uninflected'], self::$uninflected ); } if ( ! isset( self::$plural['cacheUninflected'] ) || ! isset( self::$plural['cacheIrregular'] ) ) { self::$plural['cacheUninflected'] = '(?:' . implode( '|', self::$plural['merged']['uninflected'] ) . ')'; self::$plural['cacheIrregular'] = '(?:' . implode( '|', array_keys( self::$plural['merged']['irregular'] ) ) . ')'; } if ( preg_match( '/(.*)\\b(' . self::$plural['cacheIrregular'] . ')$/i', $word, $regs ) ) { self::$cache['pluralize'][ $word ] = $regs[1] . substr( $word, 0, 1 ) . substr( self::$plural['merged']['irregular'][ strtolower( $regs[2] ) ], 1 ); return self::$cache['pluralize'][ $word ]; } if ( preg_match( '/^(' . self::$plural['cacheUninflected'] . ')$/i', $word, $regs ) ) { self::$cache['pluralize'][ $word ] = $word; return $word; } foreach ( self::$plural['rules'] as $rule => $replacement ) { if ( preg_match( $rule, $word ) ) { self::$cache['pluralize'][ $word ] = preg_replace( $rule, $replacement, $word ); return self::$cache['pluralize'][ $word ]; } } } /** * Returns a word in singular form. * * @param string $word The word in plural form. * * @return string The word in singular form. */ public static function singularize( $word ) { if ( isset( self::$cache['singularize'][ $word ] ) ) { return self::$cache['singularize'][ $word ]; } if ( ! isset( self::$singular['merged']['uninflected'] ) ) { self::$singular['merged']['uninflected'] = array_merge( self::$singular['uninflected'], self::$uninflected ); } if ( ! isset( self::$singular['merged']['irregular'] ) ) { self::$singular['merged']['irregular'] = array_merge( self::$singular['irregular'], array_flip( self::$plural['irregular'] ) ); } if ( ! isset( self::$singular['cacheUninflected'] ) || ! isset( self::$singular['cacheIrregular'] ) ) { self::$singular['cacheUninflected'] = '(?:' . join( '|', self::$singular['merged']['uninflected'] ) . ')'; self::$singular['cacheIrregular'] = '(?:' . join( '|', array_keys( self::$singular['merged']['irregular'] ) ) . ')'; } if ( preg_match( '/(.*)\\b(' . self::$singular['cacheIrregular'] . ')$/i', $word, $regs ) ) { self::$cache['singularize'][ $word ] = $regs[1] . substr( $word, 0, 1 ) . substr( self::$singular['merged']['irregular'][ strtolower( $regs[2] ) ], 1 ); return self::$cache['singularize'][ $word ]; } if ( preg_match( '/^(' . self::$singular['cacheUninflected'] . ')$/i', $word, $regs ) ) { self::$cache['singularize'][ $word ] = $word; return $word; } foreach ( self::$singular['rules'] as $rule => $replacement ) { if ( preg_match( $rule, $word ) ) { self::$cache['singularize'][ $word ] = preg_replace( $rule, $replacement, $word ); return self::$cache['singularize'][ $word ]; } } self::$cache['singularize'][ $word ] = $word; return $word; } } get_subcommands(); $i = 0; $count = 0; foreach ( $methods as $subcommand ) { $prefix = ( 0 === $i ) ? 'usage: ' : ' or: '; $i++; if ( \WP_CLI::get_runner()->is_command_disabled( $subcommand ) ) { continue; } \WP_CLI::line( $subcommand->get_usage( $prefix ) ); $count++; } $cmd_name = implode( ' ', array_slice( get_path( $this ), 1 ) ); $message = $count > 0 ? "See 'wp help $cmd_name ' for more information on a specific command." : "The namespace $cmd_name does not contain any usable commands in the current context."; \WP_CLI::line(); \WP_CLI::line( $message ); } } getMethod( $callable[1] ) ); } else { $reflection = new ReflectionClass( $callable ); if ( $reflection->isSubclassOf( '\WP_CLI\Dispatcher\CommandNamespace' ) ) { $command = self::create_namespace( $parent, $name, $callable ); } elseif ( $reflection->hasMethod( '__invoke' ) ) { $class = is_object( $callable ) ? $callable : $reflection->name; $command = self::create_subcommand( $parent, $name, [ $class, '__invoke' ], $reflection->getMethod( '__invoke' ) ); } else { $command = self::create_composite_command( $parent, $name, $callable ); } } return $command; } /** * Clear the file contents cache. */ public static function clear_file_contents_cache() { self::$file_contents = []; } /** * Create a new Subcommand instance. * * @param mixed $parent The new command's parent Composite command * @param string|bool $name Represents how the command should be invoked. * If false, will be determined from the documented subject, represented by `$reflection`. * @param mixed $callable A callable function or closure, or class name and method * @param object $reflection Reflection instance, for doc parsing */ private static function create_subcommand( $parent, $name, $callable, $reflection ) { $doc_comment = self::get_doc_comment( $reflection ); $docparser = new DocParser( $doc_comment ); if ( is_array( $callable ) ) { if ( ! $name ) { $name = $docparser->get_tag( 'subcommand' ); } if ( ! $name ) { $name = $reflection->name; } } if ( ! $doc_comment ) { WP_CLI::debug( null === $doc_comment ? "Failed to get doc comment for {$name}." : "No doc comment for {$name}.", 'commandfactory' ); } $when_invoked = function ( $args, $assoc_args ) use ( $callable ) { if ( is_array( $callable ) ) { $callable[0] = is_object( $callable[0] ) ? $callable[0] : new $callable[0](); call_user_func( [ $callable[0], $callable[1] ], $args, $assoc_args ); } else { call_user_func( $callable, $args, $assoc_args ); } }; return new Subcommand( $parent, $name, $docparser, $when_invoked ); } /** * Create a new Composite command instance. * * @param mixed $parent The new command's parent Root or Composite command * @param string $name Represents how the command should be invoked * @param mixed $callable */ private static function create_composite_command( $parent, $name, $callable ) { $reflection = new ReflectionClass( $callable ); $doc_comment = self::get_doc_comment( $reflection ); if ( ! $doc_comment ) { WP_CLI::debug( null === $doc_comment ? "Failed to get doc comment for {$name}." : "No doc comment for {$name}.", 'commandfactory' ); } $docparser = new DocParser( $doc_comment ); $container = new CompositeCommand( $parent, $name, $docparser ); foreach ( $reflection->getMethods() as $method ) { if ( ! self::is_good_method( $method ) ) { continue; } $class = is_object( $callable ) ? $callable : $reflection->name; $subcommand = self::create_subcommand( $container, false, [ $class, $method->name ], $method ); $subcommand_name = $subcommand->get_name(); $container->add_subcommand( $subcommand_name, $subcommand ); } return $container; } /** * Create a new command namespace instance. * * @param mixed $parent The new namespace's parent Root or Composite command. * @param string $name Represents how the command should be invoked * @param mixed $callable */ private static function create_namespace( $parent, $name, $callable ) { $reflection = new ReflectionClass( $callable ); $doc_comment = self::get_doc_comment( $reflection ); if ( ! $doc_comment ) { WP_CLI::debug( null === $doc_comment ? "Failed to get doc comment for {$name}." : "No doc comment for {$name}.", 'commandfactory' ); } $docparser = new DocParser( $doc_comment ); return new CommandNamespace( $parent, $name, $docparser ); } /** * Check whether a method is actually callable. * * @param ReflectionMethod $method * @return bool */ private static function is_good_method( $method ) { return $method->isPublic() && ! $method->isStatic() && 0 !== strpos( $method->getName(), '__' ); } /** * Gets the document comment. Caters for PHP directive `opcache.save comments` being disabled. * * @param ReflectionMethod|ReflectionClass|ReflectionFunction $reflection Reflection instance. * @return string|false|null Doc comment string if any, false if none (same as `Reflection*::getDocComment()`), null if error. */ private static function get_doc_comment( $reflection ) { $contents = null; $doc_comment = $reflection->getDocComment(); if ( false !== $doc_comment || ! ( ini_get( 'opcache.enable_cli' ) && ! ini_get( 'opcache.save_comments' ) ) ) { // phpcs:ignore PHPCompatibility.IniDirectives.NewIniDirectives // Either have doc comment, or no doc comment and save comments enabled - standard situation. if ( ! getenv( 'WP_CLI_TEST_GET_DOC_COMMENT' ) ) { return $doc_comment; } } $filename = $reflection->getFileName(); if ( isset( self::$file_contents[ $filename ] ) ) { $contents = self::$file_contents[ $filename ]; } elseif ( is_readable( $filename ) ) { $contents = file_get_contents( $filename ); if ( is_string( $contents ) && '' !== $contents ) { $contents = explode( "\n", $contents ); self::$file_contents[ $filename ] = $contents; } } if ( ! empty( $contents ) ) { return self::extract_last_doc_comment( implode( "\n", array_slice( $contents, 0, $reflection->getStartLine() ) ) ); } WP_CLI::debug( "Could not read contents for filename '{$filename}'.", 'commandfactory' ); return null; } /** * Returns the last doc comment if any in `$content`. * * @param string $content The content, which should end at the class or function declaration. * @return string|bool The last doc comment if any, or false if none. */ private static function extract_last_doc_comment( $content ) { $content = trim( $content ); $comment_end_pos = strrpos( $content, '*/' ); if ( false === $comment_end_pos ) { return false; } // Make sure comment end belongs to this class/function. if ( preg_match_all( '/(?:^|[\s;}])(?:class|function)\s+/', substr( $content, $comment_end_pos + 2 ), $dummy /*needed for PHP 5.3*/ ) > 1 ) { return false; } $content = substr( $content, 0, $comment_end_pos + 2 ); $comment_start_pos = strrpos( $content, '/**' ); if ( false === $comment_start_pos || ( $comment_start_pos + 2 ) === $comment_end_pos ) { return false; } // Make sure comment start belongs to this comment end. $comment_end2_pos = strpos( substr( $content, $comment_start_pos ), '*/' ); if ( false !== $comment_end2_pos && ( $comment_start_pos + $comment_end2_pos ) < $comment_end_pos ) { return false; } // Allow for '/**' within doc comment. $subcontent = substr( $content, 0, $comment_start_pos ); while ( false !== ( $comment_start2_pos = strrpos( $subcontent, '/**' ) ) && false === strpos( $subcontent, '*/', $comment_start2_pos ) ) { $comment_start_pos = $comment_start2_pos; $subcontent = substr( $subcontent, 0, $comment_start_pos ); } return substr( $content, $comment_start_pos, $comment_end_pos + 2 ); } } abort = true; $this->reason = (string) $reason; } /** * Check whether the command addition was aborted. * * @return bool */ public function was_aborted() { return $this->abort; } /** * Get the reason as to why the addition was aborted. * * @return string */ public function get_reason() { return $this->reason; } } parent = $parent; $this->name = $name; $this->shortdesc = $docparser->get_shortdesc(); $this->longdesc = $docparser->get_longdesc(); $this->docparser = $docparser; $when_to_invoke = $docparser->get_tag( 'when' ); if ( $when_to_invoke ) { WP_CLI::get_runner()->register_early_invoke( $when_to_invoke, $this ); } } /** * Get the parent composite (or root) command * * @return mixed */ public function get_parent() { return $this->parent; } /** * Add a named subcommand to this composite command's * set of contained subcommands. * * @param string $name Represents how subcommand should be invoked * @param Subcommand|CompositeCommand $command */ public function add_subcommand( $name, $command ) { $this->subcommands[ $name ] = $command; } /** * Remove a named subcommand from this composite command's set of contained * subcommands * * @param string $name Represents how subcommand should be invoked */ public function remove_subcommand( $name ) { if ( isset( $this->subcommands[ $name ] ) ) { unset( $this->subcommands[ $name ] ); } } /** * Composite commands always contain subcommands. * * @return true */ public function can_have_subcommands() { return true; } /** * Get the subcommands contained by this composite * command. * * @return array */ public function get_subcommands() { ksort( $this->subcommands ); return $this->subcommands; } /** * Get the name of this composite command. * * @return string */ public function get_name() { return $this->name; } /** * Get the short description for this composite * command. * * @return string */ public function get_shortdesc() { return $this->shortdesc; } /** * Set the short description for this composite command. * * @param string $shortdesc */ public function set_shortdesc( $shortdesc ) { $this->shortdesc = Utils\normalize_eols( $shortdesc ); } /** * Get the long description for this composite * command. * * @return string */ public function get_longdesc() { return $this->longdesc . $this->get_global_params(); } /** * Set the long description for this composite command * * @param string $longdesc */ public function set_longdesc( $longdesc ) { $this->longdesc = Utils\normalize_eols( $longdesc ); } /** * Get the synopsis for this composite command. * As a collection of subcommands, the composite * command is only intended to invoke those * subcommands. * * @return string */ public function get_synopsis() { return ''; } /** * Get the usage for this composite command. * * @return string */ public function get_usage( $prefix ) { return sprintf( '%s%s %s', $prefix, implode( ' ', get_path( $this ) ), $this->get_synopsis() ); } /** * Show the usage for all subcommands contained * by the composite command. */ public function show_usage() { $methods = $this->get_subcommands(); $i = 0; foreach ( $methods as $subcommand ) { $prefix = ( 0 === $i ) ? 'usage: ' : ' or: '; $i++; if ( WP_CLI::get_runner()->is_command_disabled( $subcommand ) ) { continue; } WP_CLI::line( $subcommand->get_usage( $prefix ) ); } $cmd_name = implode( ' ', array_slice( get_path( $this ), 1 ) ); WP_CLI::line(); WP_CLI::line( "See 'wp help $cmd_name ' for more information on a specific command." ); } /** * When a composite command is invoked, it shows usage * docs for its subcommands. * * @param array $args * @param array $assoc_args * @param array $extra_args */ public function invoke( $args, $assoc_args, $extra_args ) { $this->show_usage(); } /** * Given supplied arguments, find a contained * subcommand * * @param array $args * @return Subcommand|false */ public function find_subcommand( &$args ) { $name = array_shift( $args ); $subcommands = $this->get_subcommands(); if ( ! isset( $subcommands[ $name ] ) ) { $aliases = self::get_aliases( $subcommands ); if ( isset( $aliases[ $name ] ) ) { $name = $aliases[ $name ]; } } if ( ! isset( $subcommands[ $name ] ) ) { return false; } return $subcommands[ $name ]; } /** * Get any registered aliases for this composite command's * subcommands. * * @param array $subcommands * @return array */ private static function get_aliases( $subcommands ) { $aliases = []; foreach ( $subcommands as $name => $subcommand ) { $alias = $subcommand->get_alias(); if ( $alias ) { $aliases[ $alias ] = $name; } } return $aliases; } /** * Composite commands can only be known by one name. * * @return false */ public function get_alias() { return false; } /*** * Get the list of global parameters * * @param string $root_command whether to include or not root command specific description * @return string */ protected function get_global_params( $root_command = false ) { $binding = []; $binding['root_command'] = $root_command; if ( ! $this->can_have_subcommands() || ( is_object( $this->parent ) && get_class( $this->parent ) === 'WP_CLI\Dispatcher\CompositeCommand' ) ) { $binding['is_subcommand'] = true; } foreach ( WP_CLI::get_configurator()->get_spec() as $key => $details ) { if ( false === $details['runtime'] ) { continue; } if ( isset( $details['deprecated'] ) ) { continue; } if ( isset( $details['hidden'] ) ) { continue; } if ( true === $details['runtime'] ) { $synopsis = "--[no-]$key"; } else { $synopsis = "--$key" . $details['runtime']; } // Check if global parameters synopsis should be displayed or not. if ( 'true' !== getenv( 'WP_CLI_SUPPRESS_GLOBAL_PARAMS' ) ) { $binding['parameters'][] = [ 'synopsis' => $synopsis, 'desc' => $details['desc'], ]; $binding['has_parameters'] = true; } } if ( $this->get_subcommands() ) { $binding['has_subcommands'] = true; } return Utils\mustache_render( 'man-params.mustache', $binding ); } } parent = false; $this->name = 'wp'; $this->shortdesc = 'Manage WordPress through the command-line.'; } /** * Get the human-readable long description. * * @return string */ public function get_longdesc() { return $this->get_global_params( true ); } /** * Find a subcommand registered on the root * command. * * @param array $args * @return Subcommand|false */ public function find_subcommand( &$args ) { $command = array_shift( $args ); Utils\load_command( $command ); if ( ! isset( $this->subcommands[ $command ] ) ) { return false; } return $this->subcommands[ $command ]; } } when_invoked = $when_invoked; $this->alias = $docparser->get_tag( 'alias' ); $this->synopsis = $docparser->get_synopsis(); if ( ! $this->synopsis && $this->longdesc ) { $this->synopsis = self::extract_synopsis( $this->longdesc ); } } /** * Extract the synopsis from PHPdoc string. * * @param string $longdesc Command docs via PHPdoc * @return string */ private static function extract_synopsis( $longdesc ) { preg_match_all( '/(.+?)[\r\n]+:/', $longdesc, $matches ); return implode( ' ', $matches[1] ); } /** * Subcommands can't have subcommands because they * represent code to be executed. * * @return bool */ public function can_have_subcommands() { return false; } /** * Get the synopsis string for this subcommand. * A synopsis defines what runtime arguments are * expected, useful to humans and argument validation. * * @return string */ public function get_synopsis() { return $this->synopsis; } /** * Set the synopsis string for this subcommand. * * @param string $synopsis */ public function set_synopsis( $synopsis ) { $this->synopsis = $synopsis; } /** * If an alias is set, grant access to it. * Aliases permit subcommands to be instantiated * with a secondary identity. * * @return string */ public function get_alias() { return $this->alias; } /** * Print the usage details to the end user. * * @param string $prefix */ public function show_usage( $prefix = 'usage: ' ) { \WP_CLI::line( $this->get_usage( $prefix ) ); } /** * Get the usage of the subcommand as a formatted string. * * @param string $prefix * @return string */ public function get_usage( $prefix ) { return sprintf( '%s%s %s', $prefix, implode( ' ', get_path( $this ) ), $this->get_synopsis() ); } /** * Wrapper for CLI Tools' prompt() method. * * @param string $question * @param string $default * @return string|false */ private function prompt( $question, $default ) { $question .= ': '; if ( function_exists( 'readline' ) ) { return readline( $question ); } echo $question; $ret = stream_get_line( STDIN, 1024, "\n" ); if ( Utils\is_windows() && "\r" === substr( $ret, -1 ) ) { $ret = substr( $ret, 0, -1 ); } return $ret; } /** * Interactively prompt the user for input * based on defined synopsis and passed arguments. * * @param array $args * @param array $assoc_args * @return array */ private function prompt_args( $args, $assoc_args ) { $synopsis = $this->get_synopsis(); if ( ! $synopsis ) { return [ $args, $assoc_args ]; } // To skip the already provided positional arguments, we need to count // how many we had already received. $arg_index = 0; $spec = array_filter( SynopsisParser::parse( $synopsis ), function( $spec_arg ) use ( $args, $assoc_args, &$arg_index ) { switch ( $spec_arg['type'] ) { case 'positional': // Only prompt for the positional arguments that are not // yet provided, based purely on number. return $arg_index++ >= count( $args ); case 'generic': // Always prompt for generic arguments. return true; case 'assoc': case 'flag': default: // Prompt for the specific flags that were not provided // yet, based on name. return ! isset( $assoc_args[ $spec_arg['name'] ] ); } } ); $spec = array_values( $spec ); $prompt_args = WP_CLI::get_config( 'prompt' ); if ( true !== $prompt_args ) { $prompt_args = explode( ',', $prompt_args ); } // 'positional' arguments are positional (aka zero-indexed) // so $args needs to be reset before prompting for new arguments $args = []; foreach ( $spec as $key => $spec_arg ) { // When prompting for specific arguments (e.g. --prompt=user_pass), // ignore all arguments that don't match. if ( is_array( $prompt_args ) ) { if ( 'assoc' !== $spec_arg['type'] ) { continue; } if ( ! in_array( $spec_arg['name'], $prompt_args, true ) ) { continue; } } $current_prompt = ( $key + 1 ) . '/' . count( $spec ) . ' '; $default = $spec_arg['optional'] ? '' : false; // 'generic' permits arbitrary key=value (e.g. [--=] ) if ( 'generic' === $spec_arg['type'] ) { list( $key_token, $value_token ) = explode( '=', $spec_arg['token'] ); $repeat = false; do { if ( ! $repeat ) { $key_prompt = $current_prompt . $key_token; } else { $key_prompt = str_repeat( ' ', strlen( $current_prompt ) ) . $key_token; } $key = $this->prompt( $key_prompt, $default ); if ( false === $key ) { return [ $args, $assoc_args ]; } if ( $key ) { $key_prompt_count = strlen( $key_prompt ) - strlen( $value_token ) - 1; $value_prompt = str_repeat( ' ', $key_prompt_count ) . '=' . $value_token; $value = $this->prompt( $value_prompt, $default ); if ( false === $value ) { return [ $args, $assoc_args ]; } $assoc_args[ $key ] = $value; $repeat = true; } else { $repeat = false; } } while ( $repeat ); } else { $prompt = $current_prompt . $spec_arg['token']; if ( 'flag' === $spec_arg['type'] ) { $prompt .= ' (Y/n)'; } $response = $this->prompt( $prompt, $default ); if ( false === $response ) { return [ $args, $assoc_args ]; } if ( $response ) { switch ( $spec_arg['type'] ) { case 'positional': if ( $spec_arg['repeating'] ) { $response = explode( ' ', $response ); } else { $response = [ $response ]; } $args = array_merge( $args, $response ); break; case 'assoc': $assoc_args[ $spec_arg['name'] ] = $response; break; case 'flag': if ( 'Y' === strtoupper( $response ) ) { $assoc_args[ $spec_arg['name'] ] = true; } break; } } } } return [ $args, $assoc_args ]; } /** * Validate the supplied arguments to the command. * Throws warnings or errors if arguments are missing * or invalid. * * @param array $args * @param array $assoc_args * @param array $extra_args * @return array list of invalid $assoc_args keys to unset */ private function validate_args( $args, $assoc_args, $extra_args ) { $synopsis = $this->get_synopsis(); if ( ! $synopsis ) { return [ [], $args, $assoc_args, $extra_args ]; } $validator = new SynopsisValidator( $synopsis ); $cmd_path = implode( ' ', get_path( $this ) ); foreach ( $validator->get_unknown() as $token ) { \WP_CLI::warning( sprintf( 'The `%s` command has an invalid synopsis part: %s', $cmd_path, $token ) ); } if ( ! $validator->enough_positionals( $args ) ) { $this->show_usage(); exit( 1 ); } $unknown_positionals = $validator->unknown_positionals( $args ); if ( ! empty( $unknown_positionals ) ) { \WP_CLI::error( 'Too many positional arguments: ' . implode( ' ', $unknown_positionals ) ); } $synopsis_spec = SynopsisParser::parse( $synopsis ); $i = 0; $errors = [ 'fatal' => [], 'warning' => [], ]; $mock_doc = [ $this->get_shortdesc(), '' ]; $mock_doc = array_merge( $mock_doc, explode( "\n", $this->get_longdesc() ) ); $mock_doc = '/**' . PHP_EOL . '* ' . implode( PHP_EOL . '* ', $mock_doc ) . PHP_EOL . '*/'; $docparser = new DocParser( $mock_doc ); foreach ( $synopsis_spec as $spec ) { if ( 'positional' === $spec['type'] ) { $spec_args = $docparser->get_arg_args( $spec['name'] ); if ( ! isset( $args[ $i ] ) ) { if ( isset( $spec_args['default'] ) ) { $args[ $i ] = $spec_args['default']; } } if ( isset( $spec_args['options'] ) ) { if ( ! empty( $spec['repeating'] ) ) { do { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict -- This is a loose comparison by design. if ( isset( $args[ $i ] ) && ! in_array( $args[ $i ], $spec_args['options'] ) ) { \WP_CLI::error( 'Invalid value specified for positional arg.' ); } $i++; } while ( isset( $args[ $i ] ) ); } else { // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict -- This is a loose comparison by design. if ( isset( $args[ $i ] ) && ! in_array( $args[ $i ], $spec_args['options'] ) ) { \WP_CLI::error( 'Invalid value specified for positional arg.' ); } } } $i++; } elseif ( 'assoc' === $spec['type'] ) { $spec_args = $docparser->get_param_args( $spec['name'] ); if ( ! isset( $assoc_args[ $spec['name'] ] ) && ! isset( $extra_args[ $spec['name'] ] ) ) { if ( isset( $spec_args['default'] ) ) { $assoc_args[ $spec['name'] ] = $spec_args['default']; } } if ( isset( $assoc_args[ $spec['name'] ] ) && isset( $spec_args['options'] ) ) { $value = $assoc_args[ $spec['name'] ]; $options = $spec_args['options']; // phpcs:ignore WordPress.PHP.StrictInArray.MissingTrueStrict -- This is a loose comparison by design. if ( ! in_array( $value, $options ) ) { // Try whether it might be a comma-separated list of multiple values. $values = array_map( 'trim', explode( ',', $value ) ); $count = count( $values ); if ( $count > 1 && count( array_filter( $values, static function ( $value ) use ( $options ) { return in_array( $value, $options, true ); } ) ) === $count ) { continue; } $errors['fatal'][ $spec['name'] ] = "Invalid value specified for '{$spec['name']}'"; } } } } list( $returned_errors, $to_unset ) = $validator->validate_assoc( array_merge( \WP_CLI::get_config(), $extra_args, $assoc_args ) ); foreach ( [ 'fatal', 'warning' ] as $error_type ) { $errors[ $error_type ] = array_merge( $errors[ $error_type ], $returned_errors[ $error_type ] ); } if ( 'help' !== $this->name ) { foreach ( $validator->unknown_assoc( $assoc_args ) as $key ) { $suggestion = Utils\get_suggestion( $key, $this->get_parameters( $synopsis_spec ), $threshold = 2 ); $errors['fatal'][] = sprintf( 'unknown --%s parameter%s', $key, ! empty( $suggestion ) ? PHP_EOL . "Did you mean '--{$suggestion}'?" : '' ); } } if ( ! empty( $errors['fatal'] ) ) { $out = 'Parameter errors:'; foreach ( $errors['fatal'] as $key => $error ) { $out .= "\n {$error}"; $desc = $docparser->get_param_desc( $key ); if ( '' !== $desc ) { $out .= " ({$desc})"; } } \WP_CLI::error( $out ); } array_map( '\\WP_CLI::warning', $errors['warning'] ); return [ $to_unset, $args, $assoc_args, $extra_args ]; } /** * Invoke the subcommand with the supplied arguments. * Given a --prompt argument, interactively request input * from the end user. * * @param array $args * @param array $assoc_args */ public function invoke( $args, $assoc_args, $extra_args ) { static $prompted_once = false; if ( 'help' !== $this->name ) { if ( \WP_CLI::get_config( 'prompt' ) && ! $prompted_once ) { list( $_args, $assoc_args ) = $this->prompt_args( $args, $assoc_args ); $args = array_merge( $args, $_args ); $prompted_once = true; } } $extra_positionals = []; foreach ( $extra_args as $k => $v ) { if ( is_numeric( $k ) ) { if ( ! isset( $args[ $k ] ) ) { $extra_positionals[ $k ] = $v; } unset( $extra_args[ $k ] ); } } $args += $extra_positionals; list( $to_unset, $args, $assoc_args, $extra_args ) = $this->validate_args( $args, $assoc_args, $extra_args ); foreach ( $to_unset as $key ) { unset( $assoc_args[ $key ] ); } $path = get_path( $this->get_parent() ); $parent = implode( ' ', array_slice( $path, 1 ) ); $cmd = $this->name; if ( $parent ) { WP_CLI::do_hook( "before_invoke:{$parent}" ); $cmd = $parent . ' ' . $cmd; } WP_CLI::do_hook( "before_invoke:{$cmd}" ); // Check if `--prompt` arg passed or not. if ( $prompted_once ) { // Unset empty args. $actual_args = $assoc_args; foreach ( $actual_args as $key ) { if ( empty( $actual_args[ $key ] ) ) { unset( $actual_args[ $key ] ); } } WP_CLI::log( sprintf( 'wp %s %s', $cmd, ltrim( Utils\assoc_args_to_str( $actual_args ), ' ' ) ) ); } call_user_func( $this->when_invoked, $args, array_merge( $extra_args, $assoc_args ) ); if ( $parent ) { WP_CLI::do_hook( "after_invoke:{$parent}" ); } WP_CLI::do_hook( "after_invoke:{$cmd}" ); } /** * Get an array of parameter names, by merging the command-specific and the * global parameters. * * @param array $spec Optional. Specification of the current command. * * @return array Array of parameter names */ private function get_parameters( $spec = [] ) { $local_parameters = array_column( $spec, 'name' ); $global_parameters = array_column( SynopsisParser::parse( $this->get_global_params() ), 'name' ); return array_unique( array_merge( $local_parameters, $global_parameters ) ); } } 'table', 'fields' => $fields, 'field' => null, ]; foreach ( [ 'format', 'fields', 'field' ] as $key ) { if ( isset( $assoc_args[ $key ] ) ) { $format_args[ $key ] = $assoc_args[ $key ]; unset( $assoc_args[ $key ] ); } } if ( ! is_array( $format_args['fields'] ) ) { $format_args['fields'] = explode( ',', $format_args['fields'] ); } $format_args['fields'] = array_map( 'trim', $format_args['fields'] ); $this->args = $format_args; $this->prefix = $prefix; } /** * Magic getter for arguments. * * @param string $key * @return mixed */ public function __get( $key ) { return $this->args[ $key ]; } /** * Display multiple items according to the output arguments. * * @param array|Iterator $items The items to display. * @param bool|array $ascii_pre_colorized Optional. A boolean or an array of booleans to pass to `format()` if items in the table are pre-colorized. Default false. */ public function display_items( $items, $ascii_pre_colorized = false ) { if ( $this->args['field'] ) { $this->show_single_field( $items, $this->args['field'] ); } else { if ( in_array( $this->args['format'], [ 'csv', 'json', 'table' ], true ) ) { $item = is_array( $items ) && ! empty( $items ) ? array_shift( $items ) : false; if ( $item && ! empty( $this->args['fields'] ) ) { foreach ( $this->args['fields'] as &$field ) { $field = $this->find_item_key( $item, $field ); } array_unshift( $items, $item ); } } if ( in_array( $this->args['format'], [ 'table', 'csv' ], true ) ) { if ( $items instanceof Iterator ) { $items = Utils\iterator_map( $items, [ $this, 'transform_item_values_to_json' ] ); } else { $items = array_map( [ $this, 'transform_item_values_to_json' ], $items ); } } $this->format( $items, $ascii_pre_colorized ); } } /** * Display a single item according to the output arguments. * * @param mixed $item * @param bool|array $ascii_pre_colorized Optional. A boolean or an array of booleans to pass to `show_multiple_fields()` if the item in the table is pre-colorized. Default false. */ public function display_item( $item, $ascii_pre_colorized = false ) { if ( isset( $this->args['field'] ) ) { $item = (object) $item; $key = $this->find_item_key( $item, $this->args['field'] ); $value = $item->$key; if ( in_array( $this->args['format'], [ 'table', 'csv' ], true ) && ( is_object( $value ) || is_array( $value ) ) ) { $value = json_encode( $value ); } WP_CLI::print_value( $value, [ 'format' => $this->args['format'], ] ); } else { $this->show_multiple_fields( $item, $this->args['format'], $ascii_pre_colorized ); } } /** * Format items according to arguments. * * @param array $items * @param bool|array $ascii_pre_colorized Optional. A boolean or an array of booleans to pass to `show_table()` if items in the table are pre-colorized. Default false. */ private function format( $items, $ascii_pre_colorized = false ) { $fields = $this->args['fields']; switch ( $this->args['format'] ) { case 'count': if ( ! is_array( $items ) ) { $items = iterator_to_array( $items ); } echo count( $items ); break; case 'ids': if ( ! is_array( $items ) ) { $items = iterator_to_array( $items ); } echo implode( ' ', $items ); break; case 'table': self::show_table( $items, $fields, $ascii_pre_colorized ); break; case 'csv': Utils\write_csv( STDOUT, $items, $fields ); break; case 'json': case 'yaml': $out = []; foreach ( $items as $item ) { $out[] = Utils\pick_fields( $item, $fields ); } if ( 'json' === $this->args['format'] ) { if ( defined( 'JSON_PARTIAL_OUTPUT_ON_ERROR' ) ) { // phpcs:ignore PHPCompatibility.Constants.NewConstants.json_partial_output_on_errorFound echo json_encode( $out, JSON_PARTIAL_OUTPUT_ON_ERROR ); } else { echo json_encode( $out ); } } elseif ( 'yaml' === $this->args['format'] ) { echo Spyc::YAMLDump( $out, 2, 0 ); } break; default: WP_CLI::error( 'Invalid format: ' . $this->args['format'] ); } } /** * Show a single field from a list of items. * * @param array $items Array of objects to show fields from * @param string $field The field to show */ private function show_single_field( $items, $field ) { $key = null; $values = []; foreach ( $items as $item ) { $item = (object) $item; if ( null === $key ) { $key = $this->find_item_key( $item, $field ); } if ( 'json' === $this->args['format'] ) { $values[] = $item->$key; } else { WP_CLI::print_value( $item->$key, [ 'format' => $this->args['format'], ] ); } } if ( 'json' === $this->args['format'] ) { echo json_encode( $values ); } } /** * Find an object's key. * If $prefix is set, a key with that prefix will be prioritized. * * @param object $item * @param string $field * @return string */ private function find_item_key( $item, $field ) { foreach ( [ $field, $this->prefix . '_' . $field ] as $maybe_key ) { if ( ( is_object( $item ) && ( property_exists( $item, $maybe_key ) || isset( $item->$maybe_key ) ) ) || ( is_array( $item ) && array_key_exists( $maybe_key, $item ) ) ) { $key = $maybe_key; break; } } if ( ! isset( $key ) ) { WP_CLI::error( "Invalid field: $field." ); } return $key; } /** * Show multiple fields of an object. * * @param object|array $data Data to display * @param string $format Format to display the data in * @param bool|array $ascii_pre_colorized Optional. A boolean or an array of booleans to pass to `show_table()` if the item in the table is pre-colorized. Default false. */ private function show_multiple_fields( $data, $format, $ascii_pre_colorized = false ) { $true_fields = []; foreach ( $this->args['fields'] as $field ) { $true_fields[] = $this->find_item_key( $data, $field ); } foreach ( $data as $key => $value ) { if ( ! in_array( $key, $true_fields, true ) ) { if ( is_array( $data ) ) { unset( $data[ $key ] ); } elseif ( is_object( $data ) ) { unset( $data->$key ); } } } switch ( $format ) { case 'table': case 'csv': $rows = $this->assoc_array_to_rows( $data ); $fields = [ 'Field', 'Value' ]; if ( 'table' === $format ) { self::show_table( $rows, $fields, $ascii_pre_colorized ); } elseif ( 'csv' === $format ) { Utils\write_csv( STDOUT, $rows, $fields ); } break; case 'yaml': case 'json': WP_CLI::print_value( $data, [ 'format' => $format, ] ); break; default: WP_CLI::error( 'Invalid format: ' . $format ); break; } } /** * Show items in a \cli\Table. * * @param array $items * @param array $fields * @param bool|array $ascii_pre_colorized Optional. A boolean or an array of booleans to pass to `Table::setAsciiPreColorized()` if items in the table are pre-colorized. Default false. */ private static function show_table( $items, $fields, $ascii_pre_colorized = false ) { $table = new Table(); $enabled = Colors::shouldColorize(); if ( $enabled ) { Colors::disable( true ); } $table->setAsciiPreColorized( $ascii_pre_colorized ); $table->setHeaders( $fields ); foreach ( $items as $item ) { $table->addRow( array_values( Utils\pick_fields( $item, $fields ) ) ); } foreach ( $table->getDisplayLines() as $line ) { WP_CLI::line( $line ); } if ( $enabled ) { Colors::enable( true ); } } /** * Format an associative array as a table. * * @param array $fields Fields and values to format * @return array */ private function assoc_array_to_rows( $fields ) { $rows = []; foreach ( $fields as $field => $value ) { if ( ! is_string( $value ) ) { $value = json_encode( $value ); } $rows[] = (object) [ 'Field' => $field, 'Value' => $value, ]; } return $rows; } /** * Transforms objects and arrays to JSON as necessary * * @param mixed $item * @return mixed */ public function transform_item_values_to_json( $item ) { foreach ( $this->args['fields'] as $field ) { $true_field = $this->find_item_key( $item, $field ); $value = is_object( $item ) ? $item->$true_field : $item[ $true_field ]; if ( is_array( $value ) || is_object( $value ) ) { if ( is_object( $item ) ) { $item->$true_field = json_encode( $value ); } elseif ( is_array( $item ) ) { $item[ $true_field ] = json_encode( $value ); } } } return $item; } } options = $options; } /** * Gets the checksums for the given version of WordPress core. * * @param string $version Version string to query. * @param string $locale Optional. Locale to query. Defaults to 'en_US'. * @return bool|array False on failure. An array of checksums on success. * @throws RuntimeException If the remote request fails. */ public function get_core_checksums( $version, $locale = 'en_US' ) { $url = sprintf( '%s?%s', self::CORE_CHECKSUMS_ENDPOINT, http_build_query( compact( 'version', 'locale' ), null, '&' ) ); $response = $this->json_get_request( $url ); if ( ! is_array( $response ) || ! isset( $response['checksums'] ) || ! is_array( $response['checksums'] ) ) { return false; } return $response['checksums']; } /** * Gets a core version check. * * @param string $locale Optional. Locale to request a version check for. Defaults to 'en_US'. * @return array|false False on failure. Associative array of the offer on success. * @throws RuntimeException If the remote request failed. */ public function get_core_version_check( $locale = 'en_US' ) { $url = sprintf( '%s?%s', self::VERSION_CHECK_ENDPOINT, http_build_query( compact( 'locale' ), null, '&' ) ); $response = $this->json_get_request( $url ); if ( ! is_array( $response ) ) { return false; } return $response; } /** * Gets a download offer. * * @param string $locale Optional. Locale to request an offer from. Defaults to 'en_US'. * @return array|false False on failure. Associative array of the offer on success. * @throws RuntimeException If the remote request failed. */ public function get_core_download_offer( $locale = 'en_US' ) { $response = $this->get_core_version_check( $locale ); if ( ! is_array( $response ) || ! isset( $response['offers'] ) || ! is_array( $response['offers'] ) ) { return false; } $offer = $response['offers'][0]; if ( ! array_key_exists( 'locale', $offer ) || $locale !== $offer['locale'] ) { return false; } return $offer; } /** * Gets the checksums for the given version of plugin. * * @param string $plugin Plugin slug to query. * @param string $version Version string to query. * @return bool|array False on failure. An array of checksums on success. * @throws RuntimeException If the remote request fails. */ public function get_plugin_checksums( $plugin, $version ) { $url = sprintf( '%s%s/%s.json', self::PLUGIN_CHECKSUMS_ENDPOINT, $plugin, $version ); $response = $this->json_get_request( $url ); if ( ! is_array( $response ) || ! isset( $response['files'] ) || ! is_array( $response['files'] ) ) { return false; } return $response['files']; } /** * Gets a plugin's info. * * @param string $plugin Plugin slug to query. * @param string $locale Optional. Locale to request info for. Defaults to 'en_US'. * @return array|false False on failure. Associative array of the offer on success. * @throws RuntimeException If the remote request failed. */ public function get_plugin_info( $plugin, $locale = 'en_US' ) { $action = 'plugin_information'; $request = [ 'locale' => $locale, 'slug' => $plugin, ]; $url = sprintf( '%s?%s', self::PLUGIN_INFO_ENDPOINT, http_build_query( compact( 'action', 'request' ), null, '&' ) ); $response = $this->json_get_request( $url ); if ( ! is_array( $response ) ) { return false; } return $response; } /** * Gets a theme's info. * * @param string $theme Theme slug to query. * @param string $locale Optional. Locale to request info for. Defaults to 'en_US'. * @return array|false False on failure. Associative array of the offer on success. * @throws RuntimeException If the remote request failed. */ public function get_theme_info( $theme, $locale = 'en_US' ) { $action = 'theme_information'; $request = [ 'locale' => $locale, 'slug' => $theme, ]; $url = sprintf( '%s?%s', self::THEME_INFO_ENDPOINT, http_build_query( compact( 'action', 'request' ), null, '&' ) ); $response = $this->json_get_request( $url ); if ( ! is_array( $response ) ) { return false; } return $response; } /** * Gets a set of salts in the format required by `wp-config.php`. * * @return bool|string False on failure. A string of PHP define() statements on success. * @throws RuntimeException If the remote request fails. */ public function get_salts() { return $this->get_request( self::SALT_ENDPOINT ); } /** * Execute a remote GET request. * * @param string $url URL to execute the GET request on. * @param array $headers Optional. Associative array of headers. * @param array $options Optional. Associative array of options. * @return mixed|false False on failure. Decoded JSON on success. * @throws RuntimeException If the JSON could not be decoded. */ private function json_get_request( $url, $headers = [], $options = [] ) { $headers = array_merge( [ 'Accept' => 'application/json', ], $headers ); $response = $this->get_request( $url, $headers, $options ); if ( false === $response ) { return $response; } $data = json_decode( $response, true ); if ( JSON_ERROR_NONE !== json_last_error() ) { throw new RuntimeException( 'Failed to decode JSON: ' . json_last_error_msg() ); } return $data; } /** * Execute a remote GET request. * * @param string $url URL to execute the GET request on. * @param array $headers Optional. Associative array of headers. * @param array $options Optional. Associative array of options. * @return string|false False on failure. Response body string on success. * @throws RuntimeException If the remote request fails. */ private function get_request( $url, $headers = [], $options = [] ) { $options = array_merge( $this->options, [ 'halt_on_error' => false, ], $options ); $response = Utils\http_request( 'GET', $url, null, $headers, $options ); if ( ! $response->success || 200 > (int) $response->status_code || 300 <= $response->status_code ) { throw new RuntimeException( "Couldn't fetch response from {$url} (HTTP code {$response->status_code})." ); } return trim( $response->body ); } } doc_comment = self::remove_decorations( $doc_comment ); } /** * Remove unused cruft from PHPdoc comment. * * @param string $comment PHPdoc comment. * @return string */ private static function remove_decorations( $comment ) { $comment = preg_replace( '|^/\*\*[\r\n]+|', '', $comment ); $comment = preg_replace( '|\n[\t ]*\*/$|', '', $comment ); $comment = preg_replace( '|^[\t ]*\* ?|m', '', $comment ); return $comment; } /** * Get the command's short description (e.g. summary). * * @return string */ public function get_shortdesc() { if ( ! preg_match( '|^([^@][^\n]+)\n*|', $this->doc_comment, $matches ) ) { return ''; } return $matches[1]; } /** * Get the command's full description * * @return string */ public function get_longdesc() { $shortdesc = $this->get_shortdesc(); if ( ! $shortdesc ) { return ''; } $longdesc = substr( $this->doc_comment, strlen( $shortdesc ) ); $lines = []; foreach ( explode( "\n", $longdesc ) as $line ) { if ( 0 === strpos( $line, '@' ) ) { break; } $lines[] = $line; } return trim( implode( "\n", $lines ) ); } /** * Get the value for a given tag (e.g. "@alias" or "@subcommand") * * @param string $name Name for the tag, without '@' * @return string */ public function get_tag( $name ) { if ( preg_match( '|^@' . $name . '\s+([a-z-_0-9]+)|m', $this->doc_comment, $matches ) ) { return $matches[1]; } return ''; } /** * Get the command's synopsis. * * @return string */ public function get_synopsis() { if ( ! preg_match( '|^@synopsis\s+(.+)|m', $this->doc_comment, $matches ) ) { return ''; } return $matches[1]; } /** * Get the description for a given argument. * * @param string $name Argument's doc name. * @return string */ public function get_arg_desc( $name ) { if ( preg_match( "/\[?<{$name}>.+\n: (.+?)(\n|$)/", $this->doc_comment, $matches ) ) { return $matches[1]; } return ''; } /** * Get the arguments for a given argument. * * @param string $name Argument's doc name. * @return mixed|null */ public function get_arg_args( $name ) { return $this->get_arg_or_param_args( "/^\[?<{$name}>.*/" ); } /** * Get the description for a given parameter. * * @param string $key Parameter's key. * @return string */ public function get_param_desc( $key ) { if ( preg_match( "/\[?--{$key}=.+\n: (.+?)(\n|$)/", $this->doc_comment, $matches ) ) { return $matches[1]; } return ''; } /** * Get the arguments for a given parameter. * * @param string $key Parameter's key. * @return mixed|null */ public function get_param_args( $key ) { return $this->get_arg_or_param_args( "/^\[?--{$key}=.*/" ); } /** * Get the args for an arg or param * * @param string $regex Pattern to match against * @return array|null Interpreted YAML document, or null. */ private function get_arg_or_param_args( $regex ) { $bits = explode( "\n", $this->doc_comment ); $within_arg = false; $within_doc = false; $document = []; foreach ( $bits as $bit ) { if ( preg_match( $regex, $bit ) ) { $within_arg = true; } if ( $within_arg && $within_doc && '---' === $bit ) { $within_doc = false; } if ( $within_arg && ! $within_doc && '---' === $bit ) { $within_doc = true; } if ( $within_doc ) { $document[] = $bit; } if ( $within_arg && '' === $bit ) { $within_arg = false; break; } } if ( $document ) { return Spyc::YAMLLoadString( implode( "\n", $document ) ); } return null; } } ..." * into [ optional=>false, type=>positional, repeating=>true, name=>object-id ] */ class SynopsisParser { /** * @param string $synopsis A synopsis * @return array List of parameters */ public static function parse( $synopsis ) { $tokens = array_filter( preg_split( '/[\s\t]+/', $synopsis ) ); $params = []; foreach ( $tokens as $token ) { $param = self::classify_token( $token ); // Some types of parameters shouldn't be mandatory if ( isset( $param['optional'] ) && ! $param['optional'] ) { if ( 'flag' === $param['type'] || ( 'assoc' === $param['type'] && $param['value']['optional'] ) ) { $param['type'] = 'unknown'; } } $param['token'] = $token; $params[] = $param; } return $params; } /** * Render the Synopsis into a format string. * * @param array $synopsis A structured synopsis. This might get reordered * to match the parsed output. * @return string Rendered synopsis. */ public static function render( &$synopsis ) { if ( ! is_array( $synopsis ) ) { return ''; } $bits = [ 'positional' => '', 'assoc' => '', 'generic' => '', 'flag' => '', ]; $reordered_synopsis = [ 'positional' => [], 'assoc' => [], 'generic' => [], 'flag' => [], ]; foreach ( $bits as $key => &$value ) { foreach ( $synopsis as $arg ) { if ( empty( $arg['type'] ) || $key !== $arg['type'] ) { continue; } if ( empty( $arg['name'] ) && 'generic' !== $arg['type'] ) { continue; } if ( 'positional' === $key ) { $rendered_arg = "<{$arg['name']}>"; $reordered_synopsis['positional'] [] = $arg; } elseif ( 'assoc' === $key ) { $arg_value = isset( $arg['value']['name'] ) ? $arg['value']['name'] : $arg['name']; $rendered_arg = "--{$arg['name']}=<{$arg_value}>"; $reordered_synopsis['assoc'] [] = $arg; } elseif ( 'generic' === $key ) { $rendered_arg = '--='; $reordered_synopsis['generic'] [] = $arg; } elseif ( 'flag' === $key ) { $rendered_arg = "--{$arg['name']}"; $reordered_synopsis['flag'] [] = $arg; } if ( ! empty( $arg['repeating'] ) ) { $rendered_arg = "{$rendered_arg}..."; } if ( ! empty( $arg['optional'] ) ) { $rendered_arg = "[{$rendered_arg}]"; } $value .= "{$rendered_arg} "; } } $rendered = ''; foreach ( $bits as $v ) { if ( ! empty( $v ) ) { $rendered .= $v; } } $synopsis = array_merge( $reordered_synopsis['positional'], $reordered_synopsis['assoc'], $reordered_synopsis['generic'], $reordered_synopsis['flag'] ); return rtrim( $rendered, ' ' ); } /** * Classify argument attributes based on its syntax. * * @param string $token * @return array */ private static function classify_token( $token ) { $param = []; list( $param['optional'], $token ) = self::is_optional( $token ); list( $param['repeating'], $token ) = self::is_repeating( $token ); $p_name = '([a-z-_0-9]+)'; $p_value = '([a-zA-Z-_|,0-9]+)'; if ( '--=' === $token ) { $param['type'] = 'generic'; } elseif ( preg_match( "/^<($p_value)>$/", $token, $matches ) ) { $param['type'] = 'positional'; $param['name'] = $matches[1]; } elseif ( preg_match( "/^--(?:\\[no-\\])?$p_name/", $token, $matches ) ) { $param['name'] = $matches[1]; $value = substr( $token, strlen( $matches[0] ) ); // substr returns false <= PHP 5.6, and '' PHP 7+ if ( false === $value || '' === $value ) { $param['type'] = 'flag'; } else { $param['type'] = 'assoc'; list( $param['value']['optional'], $value ) = self::is_optional( $value ); if ( preg_match( "/^=<$p_value>$/", $value, $matches ) ) { $param['value']['name'] = $matches[1]; } else { $param = [ 'type' => 'unknown', ]; } } } else { $param['type'] = 'unknown'; } return $param; } /** * An optional parameter is surrounded by square brackets. * * @param string $token * @return array */ private static function is_optional( $token ) { if ( '[' === substr( $token, 0, 1 ) && ']' === substr( $token, -1 ) ) { return [ true, substr( $token, 1, -1 ) ]; } return [ false, $token ]; } /** * A repeating parameter is followed by an ellipsis. * * @param string $token * @return array */ private static function is_repeating( $token ) { if ( '...' === substr( $token, -3 ) ) { return [ true, substr( $token, 0, -3 ) ]; } return [ false, $token ]; } } get( $arg ); if ( ! $item ) { WP_CLI::error( sprintf( $this->msg, $arg ) ); } return $item; } /** * Get multiple items. * * @param array $args The raw CLI arguments. * @return array The list of found items. */ public function get_many( $args ) { $items = []; foreach ( $args as $arg ) { $item = $this->get( $arg ); if ( $item ) { $items[] = $item; } else { WP_CLI::warning( sprintf( $this->msg, $arg ) ); } } return $items; } } get_site( $site_id ); } /** * Get site (blog) data for a given id. * * @param string $arg The raw CLI argument. * @return array|false The item if found; false otherwise. */ private function get_site( $arg ) { global $wpdb; // Load site data $site = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$wpdb->blogs} WHERE blog_id = %d", $arg ) ); if ( ! empty( $site ) ) { // Only care about domain and path which are set here return $site; } return false; } } unregister(); } /** * Registers the autoload callback with the SPL autoload system. */ public function register() { spl_autoload_register( [ $this, 'autoload' ] ); } /** * Unregisters the autoload callback with the SPL autoload system. */ public function unregister() { spl_autoload_unregister( [ $this, 'autoload' ] ); } /** * Add a specific namespace structure with our custom autoloader. * * @param string $root Root namespace name. * @param string $base_dir Directory containing the class files. * @param string $prefix Prefix to be added before the class. * @param string $suffix Suffix to be added after the class. * @param boolean $lowercase Whether the class should be changed to * lowercase. * @param boolean $underscores Whether the underscores should be changed to * hyphens. * * @return self */ public function add_namespace( $root, $base_dir, $prefix = '', $suffix = '.php', $lowercase = false, $underscores = false ) { $this->namespaces[] = [ 'root' => $this->normalize_root( (string) $root ), 'base_dir' => $this->add_trailing_slash( (string) $base_dir ), 'prefix' => (string) $prefix, 'suffix' => (string) $suffix, 'lowercase' => (bool) $lowercase, 'underscores' => (bool) $underscores, ]; return $this; } /** * The autoload function that gets registered with the SPL Autoloader * system. * * @param string $class The class that got requested by the spl_autoloader. */ public function autoload( $class ) { // Iterate over namespaces to find a match. foreach ( $this->namespaces as $namespace ) { // Move on if the object does not belong to the current namespace. if ( 0 !== strpos( $class, $namespace['root'] ) ) { continue; } // Remove namespace root level to correspond with root filesystem, and // replace the namespace separator "\" by the system-dependent directory separator. $filename = str_replace( [ $namespace['root'], '\\' ], [ '', DIRECTORY_SEPARATOR ], $class ); // Remove a leading backslash from the class name. $filename = $this->remove_leading_backslash( $filename ); // Change to lower case if requested. if ( $namespace['lowercase'] ) { $filename = strtolower( $filename ); } // Change underscores into hyphens if requested. if ( $namespace['underscores'] ) { $filename = str_replace( '_', '-', $filename ); } // Add base_dir, prefix and suffix. $filepath = $namespace['base_dir'] . $namespace['prefix'] . $filename . $namespace['suffix']; // Throw an exception if the file does not exist or is not readable. if ( is_readable( $filepath ) ) { require_once $filepath; } } } /** * Normalize a namespace root. * * @param string $root Namespace root that needs to be normalized. * * @return string Normalized namespace root. */ protected function normalize_root( $root ) { $root = $this->remove_leading_backslash( $root ); return $this->add_trailing_backslash( $root ); } /** * Remove a leading backslash from a string. * * @param string $string String to remove the leading backslash from. * * @return string Modified string. */ protected function remove_leading_backslash( $string ) { return ltrim( $string, '\\' ); } /** * Make sure a string ends with a trailing backslash. * * @param string $string String to check the trailing backslash of. * * @return string Modified string. */ protected function add_trailing_backslash( $string ) { return rtrim( $string, '\\' ) . '\\'; } /** * Make sure a string ends with a trailing slash. * * @param string $string String to check the trailing slash of. * * @return string Modified string. */ protected function add_trailing_slash( $string ) { return rtrim( $string, '/\\' ) . '/'; } } ]+)>#', '$1$2', $messages ); foreach ( $messages as $message ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.strip_tags_strip_tags WP_CLI::log( strip_tags( trim( $message ) ) ); } } } spec = include $path; $defaults = [ 'runtime' => false, 'file' => false, 'synopsis' => '', 'default' => null, 'multiple' => false, ]; foreach ( $this->spec as $key => &$details ) { $details = array_merge( $defaults, $details ); $this->config[ $key ] = $details['default']; } } /** * Get declared configuration values as an array. * * @return array */ public function to_array() { return [ $this->config, $this->extra_config ]; } /** * Get configuration specification, i.e. list of accepted keys. * * @return array */ public function get_spec() { return $this->spec; } /** * Get any aliases defined in config files. * * @return array */ public function get_aliases() { $runtime_alias = getenv( 'WP_CLI_RUNTIME_ALIAS' ); if ( false !== $runtime_alias ) { $returned_aliases = []; foreach ( json_decode( $runtime_alias, true ) as $key => $value ) { if ( preg_match( '#' . self::ALIAS_REGEX . '#', $key ) ) { $returned_aliases[ $key ] = []; foreach ( self::$alias_spec as $i ) { if ( isset( $value[ $i ] ) ) { $returned_aliases[ $key ][ $i ] = $value[ $i ]; } } } } return $returned_aliases; } return $this->aliases; } /** * Splits a list of arguments into positional, associative and config. * * @param array(string) $arguments * @return array(array) */ public function parse_args( $arguments ) { list( $positional_args, $mixed_args, $global_assoc, $local_assoc ) = self::extract_assoc( $arguments ); list( $assoc_args, $runtime_config ) = $this->unmix_assoc_args( $mixed_args, $global_assoc, $local_assoc ); return [ $positional_args, $assoc_args, $runtime_config ]; } /** * Splits positional args from associative args. * * @param array $arguments * @return array(array) */ public static function extract_assoc( $arguments ) { $positional_args = []; $assoc_args = []; $global_assoc = []; $local_assoc = []; foreach ( $arguments as $arg ) { $positional_arg = null; $assoc_arg = null; if ( preg_match( '|^--no-([^=]+)$|', $arg, $matches ) ) { $assoc_arg = [ $matches[1], false ]; } elseif ( preg_match( '|^--([^=]+)$|', $arg, $matches ) ) { $assoc_arg = [ $matches[1], true ]; } elseif ( preg_match( '|^--([^=]+)=(.*)|s', $arg, $matches ) ) { $assoc_arg = [ $matches[1], $matches[2] ]; } else { $positional = $arg; } if ( ! is_null( $assoc_arg ) ) { $assoc_args[] = $assoc_arg; if ( count( $positional_args ) ) { $local_assoc[] = $assoc_arg; } else { $global_assoc[] = $assoc_arg; } } elseif ( ! is_null( $positional ) ) { $positional_args[] = $positional; } } return [ $positional_args, $assoc_args, $global_assoc, $local_assoc ]; } /** * Separate runtime parameters from command-specific parameters. * * @param array $mixed_args * @return array */ private function unmix_assoc_args( $mixed_args, $global_assoc = [], $local_assoc = [] ) { $assoc_args = []; $runtime_config = []; if ( getenv( 'WP_CLI_STRICT_ARGS_MODE' ) ) { foreach ( $global_assoc as $tmp ) { list( $key, $value ) = $tmp; if ( isset( $this->spec[ $key ] ) && false !== $this->spec[ $key ]['runtime'] ) { $this->assoc_arg_to_runtime_config( $key, $value, $runtime_config ); } } foreach ( $local_assoc as $tmp ) { $assoc_args[ $tmp[0] ] = $tmp[1]; } } else { foreach ( $mixed_args as $tmp ) { list( $key, $value ) = $tmp; if ( isset( $this->spec[ $key ] ) && false !== $this->spec[ $key ]['runtime'] ) { $this->assoc_arg_to_runtime_config( $key, $value, $runtime_config ); } else { $assoc_args[ $key ] = $value; } } } return [ $assoc_args, $runtime_config ]; } /** * Handle turning an $assoc_arg into a runtime arg. */ private function assoc_arg_to_runtime_config( $key, $value, &$runtime_config ) { $details = $this->spec[ $key ]; if ( isset( $details['deprecated'] ) ) { fwrite( STDERR, "WP-CLI: The --{$key} global parameter is deprecated. {$details['deprecated']}\n" ); } if ( $details['multiple'] ) { $runtime_config[ $key ][] = $value; } else { $runtime_config[ $key ] = $value; } } /** * Load a YAML file of parameters into scope. * * @param string $path Path to YAML file. */ public function merge_yml( $path, $current_alias = null ) { $yaml = self::load_yml( $path ); if ( ! empty( $yaml['_']['inherit'] ) ) { $this->merge_yml( $yaml['_']['inherit'], $current_alias ); } // Prepare the base path for absolutized alias paths. $yml_file_dir = $path ? dirname( $path ) : false; foreach ( $yaml as $key => $value ) { if ( preg_match( '#' . self::ALIAS_REGEX . '#', $key ) ) { $this->aliases[ $key ] = []; $is_alias = false; foreach ( self::$alias_spec as $i ) { if ( isset( $value[ $i ] ) ) { if ( 'path' === $i && ! isset( $value['ssh'] ) ) { self::absolutize( $value[ $i ], $yml_file_dir ); } $this->aliases[ $key ][ $i ] = $value[ $i ]; $is_alias = true; } } // If it's not an alias, it might be a group of aliases. if ( ! $is_alias && is_array( $value ) ) { $alias_group = []; foreach ( $value as $k ) { if ( preg_match( '#' . self::ALIAS_REGEX . '#', $k ) ) { $alias_group[] = $k; } } $this->aliases[ $key ] = $alias_group; } } elseif ( ! isset( $this->spec[ $key ] ) || false === $this->spec[ $key ]['file'] ) { if ( isset( $this->extra_config[ $key ] ) && ! empty( $yaml['_']['merge'] ) && is_array( $this->extra_config[ $key ] ) && is_array( $value ) ) { $this->extra_config[ $key ] = array_merge( $this->extra_config[ $key ], $value ); } else { $this->extra_config[ $key ] = $value; } } elseif ( $this->spec[ $key ]['multiple'] ) { self::arrayify( $value ); $this->config[ $key ] = array_merge( $this->config[ $key ], $value ); } else { if ( $current_alias && in_array( $key, self::$alias_spec, true ) ) { continue; } $this->config[ $key ] = $value; } } } /** * Merge an array of values into the configurator config. * * @param array $config */ public function merge_array( $config ) { foreach ( $this->spec as $key => $details ) { if ( false !== $details['runtime'] && isset( $config[ $key ] ) ) { $value = $config[ $key ]; if ( 'require' === $key ) { $value = Utils\expand_globs( $value ); } if ( $details['multiple'] ) { self::arrayify( $value ); $this->config[ $key ] = array_merge( $this->config[ $key ], $value ); } else { $this->config[ $key ] = $value; } } } } /** * Load values from a YAML file. * * @param string $yml_file Path to the YAML file * @return array Declared configuration values */ private static function load_yml( $yml_file ) { if ( ! $yml_file ) { return []; } $config = Spyc::YAMLLoad( $yml_file ); // Make sure config-file-relative paths are made absolute. $yml_file_dir = dirname( $yml_file ); if ( isset( $config['path'] ) ) { self::absolutize( $config['path'], $yml_file_dir ); } if ( isset( $config['require'] ) ) { self::arrayify( $config['require'] ); $config['require'] = Utils\expand_globs( $config['require'] ); foreach ( $config['require'] as &$path ) { self::absolutize( $path, $yml_file_dir ); } } // Backwards compat // Command 'core config' was moved to 'config create'. if ( isset( $config['core config'] ) ) { $config['config create'] = $config['core config']; unset( $config['core config'] ); } // Command 'checksum core' was moved to 'core verify-checksums'. if ( isset( $config['checksum core'] ) ) { $config['core verify-checksums'] = $config['checksum core']; unset( $config['checksum core'] ); } // Command 'checksum plugin' was moved to 'plugin verify-checksums'. if ( isset( $config['checksum plugin'] ) ) { $config['plugin verify-checksums'] = $config['checksum plugin']; unset( $config['checksum plugin'] ); } return $config; } /** * Conform a variable to an array. * * @param mixed $val A string or an array */ private static function arrayify( &$val ) { $val = (array) $val; } /** * Make a path absolute. * * @param string $path Path to file. * @param string $base Base path to prepend. */ private static function absolutize( &$path, $base ) { if ( ! empty( $path ) && ! Utils\is_path_absolute( $path ) ) { $path = $base . DIRECTORY_SEPARATOR . $path; } } } init_colorization(); return $state; } } get_custom_vendor_folder(); if ( false !== $custom_vendor ) { array_unshift( $autoloader_paths, WP_CLI_ROOT . '/../../../' . $custom_vendor . '/autoload.php' ); } WP_CLI::debug( sprintf( 'Fallback autoloader paths: %s', implode( ', ', $autoloader_paths ) ), 'bootstrap' ); return $autoloader_paths; } } declare_loggers(); $runner = new RunnerInstance(); $runner()->init_logger(); return $state; } /** * Load the class declarations for the loggers. */ private function declare_loggers() { $logger_dir = WP_CLI_ROOT . '/php/WP_CLI/Loggers'; $iterator = new DirectoryIterator( $logger_dir ); // Make sure the base class is declared first. include_once "$logger_dir/Base.php"; foreach ( $iterator as $filename ) { if ( '.php' !== substr( $filename, - 4 ) ) { continue; } include_once "$logger_dir/$filename"; } } } init_config(); return $state; } } getMessage() ); } } return $state; } } state ) ? $this->state[ $key ] : $fallback; } /** * Set the state value for a given key. * * @param string $key Key to set the state for. * @param mixed $value Value to set the state for the given key to. * * @return void */ public function setValue( $key, $value ) { $this->state[ $key ] = $value; } } add_deferred_commands(); // Process deferred command additions for commands added through // plugins. WP_CLI::add_hook( 'before_run_command', [ $this, 'add_deferred_commands' ] ); return $state; } /** * Add deferred commands that are still waiting to be processed. */ public function add_deferred_commands() { $deferred_additions = WP_CLI::get_deferred_additions(); foreach ( $deferred_additions as $name => $addition ) { $addition_data = []; foreach ( $addition as $addition_key => $addition_value ) { // Describe the callable as a string instead of directly printing it // for better debug info. if ( 'callable' === $addition_key ) { $addition_value = Utils\describe_callable( $addition_value ); } elseif ( is_array( $addition_value ) ) { $addition_value = json_encode( $addition_value ); } $addition_data[] = sprintf( '%s: %s', $addition_key, $addition_value ); } WP_CLI::debug( sprintf( 'Adding deferred command: %s (%s)', $name, implode( ', ', $addition_data ) ), 'bootstrap' ); WP_CLI::add_command( $name, $addition['callable'], $addition['args'] ); } } } state->getValue( BootstrapState::IS_PROTECTED_COMMAND, false ) ) { return false; } $runner = new RunnerInstance(); $skip_packages = $runner()->config['skip-packages']; if ( true === $skip_packages ) { WP_CLI::debug( 'Skipped loading packages.', 'bootstrap' ); return false; } $autoloader_path = $runner()->get_packages_dir_path() . 'vendor/autoload.php'; if ( is_readable( $autoloader_path ) ) { WP_CLI::debug( 'Loading packages from: ' . $autoloader_path, 'bootstrap' ); return [ $autoloader_path, ]; } return false; } /** * Handle the failure to find an autoloader. * * @return void */ protected function handle_failure() { WP_CLI::debug( 'No package autoload found to load.', 'bootstrap' ); } } state = $state; $found_autoloader = false; $autoloader_paths = $this->get_autoloader_paths(); if ( false === $autoloader_paths ) { // Skip this autoloading step. return $state; } foreach ( $autoloader_paths as $autoloader_path ) { if ( is_readable( $autoloader_path ) ) { try { WP_CLI::debug( sprintf( 'Loading detected autoloader: %s', $autoloader_path ), 'bootstrap' ); require $autoloader_path; $found_autoloader = true; } catch ( Exception $exception ) { WP_CLI::warning( "Failed to load autoloader '{$autoloader_path}'. Reason: " . $exception->getMessage() ); } } } if ( ! $found_autoloader ) { $this->handle_failure(); } return $this->state; } /** * Get the name of the custom vendor folder as set in `composer.json`. * * @return string|false Name of the custom vendor folder or false if none. */ protected function get_custom_vendor_folder() { $maybe_composer_json = WP_CLI_ROOT . '/../../../composer.json'; if ( ! is_readable( $maybe_composer_json ) ) { return false; } $composer = json_decode( file_get_contents( $maybe_composer_json ) ); if ( ! empty( $composer->config ) && ! empty( $composer->config->{'vendor-dir'} ) ) { return $composer->config->{'vendor-dir'}; } return false; } /** * Handle the failure to find an autoloader. * * @return void */ protected function handle_failure() { } /** * Get the autoloader paths to scan for an autoloader. * * @return string[]|false Array of strings with autoloader paths, or false * to skip. */ abstract protected function get_autoloader_paths(); } WP_CLI_ROOT . '/php/WP_CLI', 'cli' => WP_CLI_VENDOR_DIR . '/wp-cli/php-cli-tools/lib/cli', 'Requests' => WP_CLI_VENDOR_DIR . '/rmccue/requests/library/Requests', 'Symfony\Component\Finder' => WP_CLI_VENDOR_DIR . '/symfony/finder/', ]; foreach ( $mappings as $namespace => $folder ) { $autoloader->add_namespace( $namespace, $folder ); } include_once WP_CLI_VENDOR_DIR . '/rmccue/requests/library/Requests.php'; include_once WP_CLI_VENDOR_DIR . '/wp-cli/mustangostang-spyc/Spyc.php'; $autoloader->register(); return $state; } } start(); return $state; } } ` option. * * @package WP_CLI\Bootstrap */ final class LoadRequiredCommand implements BootstrapStep { /** * Process this single bootstrapping step. * * @param BootstrapState $state Contextual state to pass into the step. * * @return BootstrapState Modified state to pass to the next step. */ public function process( BootstrapState $state ) { if ( $state->getValue( BootstrapState::IS_PROTECTED_COMMAND, false ) ) { return $state; } $runner = new RunnerInstance(); if ( ! isset( $runner()->config['require'] ) ) { return $state; } foreach ( $runner()->config['require'] as $path ) { if ( ! file_exists( $path ) ) { $context = ''; $required_files = $runner()->get_required_files(); foreach ( [ 'global', 'project', 'runtime' ] as $scope ) { if ( in_array( $path, $required_files[ $scope ], true ) ) { switch ( $scope ) { case 'global': $context = ' (from global ' . Utils\basename( $runner()->get_global_config_path() ) . ')'; break; case 'project': $context = ' (from project\'s ' . Utils\basename( $runner()->get_project_config_path() ) . ')'; break; case 'runtime': $context = ' (from runtime argument)'; break; } break; } } WP_CLI::error( sprintf( "Required file '%s' doesn't exist%s.", Utils\basename( $path ), $context ) ); } Utils\load_file( $path ); WP_CLI::debug( 'Required file from config: ' . $path, 'bootstrap' ); } return $state; } } ` option. * * @package WP_CLI\Bootstrap */ final class LoadExecCommand implements BootstrapStep { /** * Process this single bootstrapping step. * * @param BootstrapState $state Contextual state to pass into the step. * * @return BootstrapState Modified state to pass to the next step. */ public function process( BootstrapState $state ) { if ( $state->getValue( BootstrapState::IS_PROTECTED_COMMAND, false ) ) { return $state; } $runner = new RunnerInstance(); if ( ! isset( $runner()->config['exec'] ) ) { return $state; } foreach ( $runner()->config['exec'] as $php_code ) { eval( $php_code ); // phpcs:ignore Squiz.PHP.Eval.Discouraged } return $state; } } get_protected_commands(); $current_command = $this->get_current_command(); foreach ( $commands as $command ) { if ( 0 === strpos( $current_command, $command ) ) { $state->setValue( BootstrapState::IS_PROTECTED_COMMAND, true ); } } return $state; } /** * Get the list of protected commands. * * @return array */ private function get_protected_commands() { return [ 'cli info', 'package', ]; } /** * Get the current command as a string. * * @return string Current command to be executed. */ private function get_current_command() { $runner = new RunnerInstance(); return implode( ' ', (array) $runner()->arguments ); } } 'pre_install', PackageEvents::POST_PACKAGE_INSTALL => 'post_install', ]; } public static function pre_install( PackageEvent $event ) { $operation_message = $event->getOperation()->__toString(); WP_CLI::log( ' - ' . $operation_message ); } public static function post_install( PackageEvent $event ) { $operation = $event->getOperation(); // getReason() was removed in Composer v2 without replacement. if ( ! method_exists( $operation, 'getReason' ) ) { return; } $reason = $operation->getReason(); if ( $reason instanceof Rule ) { switch ( $reason->getReason() ) { case Rule::RULE_PACKAGE_CONFLICT: case Rule::RULE_PACKAGE_SAME_NAME: case Rule::RULE_PACKAGE_REQUIRES: $composer_error = $reason->getPrettyString( $event->getPool() ); break; } if ( ! empty( $composer_error ) ) { WP_CLI::log( sprintf( ' - Warning: %s', $composer_error ) ); } } } } $key; } /** * Register a command for early invocation, generally before WordPress loads. * * @param string $when Named execution hook * @param Subcommand $command */ public function register_early_invoke( $when, $command ) { $this->early_invoke[ $when ][] = array_slice( Dispatcher\get_path( $command ), 1 ); } /** * Perform the early invocation of a command. * * @param string $when Named execution hook */ private function do_early_invoke( $when ) { if ( ! isset( $this->early_invoke[ $when ] ) ) { return; } // Search the value of @when from the command method. $real_when = ''; $r = $this->find_command_to_run( $this->arguments ); if ( is_array( $r ) ) { list( $command, $final_args, $cmd_path ) = $r; foreach ( $this->early_invoke as $_when => $_path ) { foreach ( $_path as $cmd ) { if ( $cmd === $cmd_path ) { $real_when = $_when; } } } } foreach ( $this->early_invoke[ $when ] as $path ) { if ( $this->cmd_starts_with( $path ) ) { if ( empty( $real_when ) || ( $real_when && $real_when === $when ) ) { $this->run_command_and_exit(); } } } } /** * Get the path to the global configuration YAML file. * * @param bool $create_config_file Optional. If a config file doesn't exist, * should it be created? Defaults to false. * * @return string|false */ public function get_global_config_path( $create_config_file = false ) { if ( getenv( 'WP_CLI_CONFIG_PATH' ) ) { $config_path = getenv( 'WP_CLI_CONFIG_PATH' ); $this->global_config_path_debug = 'Using global config from WP_CLI_CONFIG_PATH env var: ' . $config_path; } else { $config_path = Utils\get_home_dir() . '/.wp-cli/config.yml'; $this->global_config_path_debug = 'Using default global config: ' . $config_path; } // If global config doesn't exist create one. if ( true === $create_config_file && ! file_exists( $config_path ) ) { $this->global_config_path_debug = "Default global config doesn't exist, creating one in {$config_path}"; Process::create( Utils\esc_cmd( 'touch %s', $config_path ) )->run(); } if ( is_readable( $config_path ) ) { return $config_path; } $this->global_config_path_debug = 'No readable global config found'; return false; } /** * Get the path to the project-specific configuration * YAML file. * wp-cli.local.yml takes priority over wp-cli.yml. * * @return string|false */ public function get_project_config_path() { $config_files = [ 'wp-cli.local.yml', 'wp-cli.yml', ]; // Stop looking upward when we find we have emerged from a subdirectory // installation into a parent installation $project_config_path = Utils\find_file_upward( $config_files, getcwd(), static function ( $dir ) { static $wp_load_count = 0; $wp_load_path = $dir . DIRECTORY_SEPARATOR . 'wp-load.php'; if ( file_exists( $wp_load_path ) ) { ++ $wp_load_count; } return $wp_load_count > 1; } ); $this->project_config_path_debug = 'No project config found'; if ( ! empty( $project_config_path ) ) { $this->project_config_path_debug = 'Using project config: ' . $project_config_path; } return $project_config_path; } /** * Get the path to the packages directory * * @return string */ public function get_packages_dir_path() { if ( getenv( 'WP_CLI_PACKAGES_DIR' ) ) { $packages_dir = Utils\trailingslashit( getenv( 'WP_CLI_PACKAGES_DIR' ) ); } else { $packages_dir = Utils\get_home_dir() . '/.wp-cli/packages/'; } return $packages_dir; } /** * Attempts to find the path to the WP installation inside index.php * * @param string $index_path * @return string|false */ private static function extract_subdir_path( $index_path ) { $index_code = file_get_contents( $index_path ); if ( ! preg_match( '|^\s*require\s*\(?\s*(.+?)/wp-blog-header\.php([\'"])|m', $index_code, $matches ) ) { return false; } $wp_path_src = $matches[1] . $matches[2]; $wp_path_src = Utils\replace_path_consts( $wp_path_src, $index_path ); $wp_path = eval( "return $wp_path_src;" ); // phpcs:ignore Squiz.PHP.Eval.Discouraged if ( ! Utils\is_path_absolute( $wp_path ) ) { $wp_path = dirname( $index_path ) . "/$wp_path"; } return $wp_path; } /** * Find the directory that contains the WordPress files. * Defaults to the current working dir. * * @return string An absolute path */ private function find_wp_root() { if ( ! empty( $this->config['path'] ) ) { $path = $this->config['path']; if ( ! Utils\is_path_absolute( $path ) ) { $path = getcwd() . '/' . $path; } return $path; } if ( $this->cmd_starts_with( [ 'core', 'download' ] ) ) { return getcwd(); } $dir = getcwd(); while ( is_readable( $dir ) ) { if ( file_exists( "$dir/wp-load.php" ) ) { return $dir; } if ( file_exists( "$dir/index.php" ) ) { $path = self::extract_subdir_path( "$dir/index.php" ); if ( ! empty( $path ) ) { return $path; } } $parent_dir = dirname( $dir ); if ( empty( $parent_dir ) || $parent_dir === $dir ) { break; } $dir = $parent_dir; } } /** * Set WordPress root as a given path. * * @param string $path */ private static function set_wp_root( $path ) { if ( ! defined( 'ABSPATH' ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- Declaring a WP native constant. define( 'ABSPATH', Utils\normalize_path( Utils\trailingslashit( $path ) ) ); } elseif ( ! is_null( $path ) ) { WP_CLI::error_multi_line( [ 'The --path parameter cannot be used when ABSPATH is already defined elsewhere', 'ABSPATH is defined as: "' . ABSPATH . '"', ] ); } WP_CLI::debug( 'ABSPATH defined: ' . ABSPATH, 'bootstrap' ); $_SERVER['DOCUMENT_ROOT'] = realpath( $path ); } /** * Guess which URL context WP-CLI has been invoked under. * * @param array $assoc_args * @return string|false */ private static function guess_url( $assoc_args ) { if ( isset( $assoc_args['blog'] ) ) { $assoc_args['url'] = $assoc_args['blog']; } if ( isset( $assoc_args['url'] ) ) { $url = $assoc_args['url']; if ( true === $url ) { WP_CLI::warning( 'The --url parameter expects a value.' ); } return $url; } return false; } private function cmd_starts_with( $prefix ) { return array_slice( $this->arguments, 0, count( $prefix ) ) === $prefix; } /** * Given positional arguments, find the command to execute. * * @param array $args * @return array|string Command, args, and path on success; error message on failure */ public function find_command_to_run( $args ) { $command = WP_CLI::get_root_command(); WP_CLI::do_hook( 'find_command_to_run_pre' ); $cmd_path = []; while ( ! empty( $args ) && $command->can_have_subcommands() ) { $cmd_path[] = $args[0]; $full_name = implode( ' ', $cmd_path ); $subcommand = $command->find_subcommand( $args ); if ( ! $subcommand ) { if ( count( $cmd_path ) > 1 ) { $child = array_pop( $cmd_path ); $parent_name = implode( ' ', $cmd_path ); $suggestion = $this->get_subcommand_suggestion( $child, $command ); return sprintf( "'%s' is not a registered subcommand of '%s'. See 'wp help %s' for available subcommands.%s", $child, $parent_name, $parent_name, ! empty( $suggestion ) ? PHP_EOL . "Did you mean '{$suggestion}'?" : '' ); } $suggestion = $this->get_subcommand_suggestion( $full_name, $command ); return sprintf( "'%s' is not a registered wp command. See 'wp help' for available commands.%s", $full_name, ! empty( $suggestion ) ? PHP_EOL . "Did you mean '{$suggestion}'?" : '' ); } if ( $this->is_command_disabled( $subcommand ) ) { return sprintf( "The '%s' command has been disabled from the config file.", $full_name ); } $command = $subcommand; } return [ $command, $args, $cmd_path ]; } /** * Find the WP-CLI command to run given arguments, and invoke it. * * @param array $args Positional arguments including command name * @param array $assoc_args Associative arguments for the command. * @param array $options Configuration options for the function. */ public function run_command( $args, $assoc_args = [], $options = [] ) { WP_CLI::do_hook( 'before_run_command' ); if ( ! empty( $options['back_compat_conversions'] ) ) { list( $args, $assoc_args ) = self::back_compat_conversions( $args, $assoc_args ); } $r = $this->find_command_to_run( $args ); if ( is_string( $r ) ) { WP_CLI::error( $r ); } list( $command, $final_args, $cmd_path ) = $r; $name = implode( ' ', $cmd_path ); $extra_args = []; if ( isset( $this->extra_config[ $name ] ) ) { $extra_args = $this->extra_config[ $name ]; } WP_CLI::debug( 'Running command: ' . $name, 'bootstrap' ); try { $command->invoke( $final_args, $assoc_args, $extra_args ); } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } } /** * Show synopsis if the called command is a composite command */ public function show_synopsis_if_composite_command() { $r = $this->find_command_to_run( $this->arguments ); if ( is_array( $r ) ) { list( $command ) = $r; if ( $command->can_have_subcommands() ) { $command->show_usage(); exit; } } } private function run_command_and_exit( $help_exit_warning = '' ) { $this->show_synopsis_if_composite_command(); $this->run_command( $this->arguments, $this->assoc_args ); if ( $this->cmd_starts_with( [ 'help' ] ) ) { // Help couldn't find the command so exit with suggestion. $suggestion_or_disabled = $this->find_command_to_run( array_slice( $this->arguments, 1 ) ); if ( is_string( $suggestion_or_disabled ) ) { if ( $help_exit_warning ) { WP_CLI::warning( $help_exit_warning ); } WP_CLI::error( $suggestion_or_disabled ); } // Should never get here. } exit; } /** * Perform a command against a remote server over SSH (or a container using * scheme of "docker" or "docker-compose"). * * @param string $connection_string Passed connection string. * @return void */ private function run_ssh_command( $connection_string ) { WP_CLI::do_hook( 'before_ssh' ); $bits = Utils\parse_ssh_url( $connection_string ); $pre_cmd = getenv( 'WP_CLI_SSH_PRE_CMD' ); if ( $pre_cmd ) { $message = WP_CLI::warning( "WP_CLI_SSH_PRE_CMD found, executing the following command(s) on the remote machine:\n $pre_cmd" ); WP_CLI::log( $message ); $pre_cmd = rtrim( $pre_cmd, ';' ) . '; '; } if ( ! empty( $bits['path'] ) ) { $pre_cmd .= 'cd ' . escapeshellarg( $bits['path'] ) . '; '; } $env_vars = ''; if ( getenv( 'WP_CLI_STRICT_ARGS_MODE' ) ) { $env_vars .= 'WP_CLI_STRICT_ARGS_MODE=1 '; } $wp_binary = 'wp'; $wp_args = array_slice( $GLOBALS['argv'], 1 ); if ( $this->alias && ! empty( $wp_args[0] ) && $this->alias === $wp_args[0] ) { array_shift( $wp_args ); $runtime_alias = []; foreach ( $this->aliases[ $this->alias ] as $key => $value ) { if ( 'ssh' === $key ) { continue; } $runtime_alias[ $key ] = $value; } if ( ! empty( $runtime_alias ) ) { $encoded_alias = json_encode( [ $this->alias => $runtime_alias, ] ); $wp_binary = "WP_CLI_RUNTIME_ALIAS='{$encoded_alias}' {$wp_binary} {$this->alias}"; } } foreach ( $wp_args as $k => $v ) { if ( preg_match( '#--ssh=#', $v ) ) { unset( $wp_args[ $k ] ); } } $wp_command = $pre_cmd . $env_vars . $wp_binary . ' ' . implode( ' ', array_map( 'escapeshellarg', $wp_args ) ); $escaped_command = $this->generate_ssh_command( $bits, $wp_command ); passthru( $escaped_command, $exit_code ); if ( 255 === $exit_code ) { WP_CLI::error( 'Cannot connect over SSH using provided configuration.', 255 ); } else { exit( $exit_code ); } } /** * Generate a shell command from the parsed connection string. * * @param array $bits Parsed connection string. * @param string $wp_command WP-CLI command to run. * @return string */ private function generate_ssh_command( $bits, $wp_command ) { $escaped_command = ''; // Set default values. foreach ( [ 'scheme', 'user', 'host', 'port', 'path', 'key' ] as $bit ) { if ( ! isset( $bits[ $bit ] ) ) { $bits[ $bit ] = null; } WP_CLI::debug( 'SSH ' . $bit . ': ' . $bits[ $bit ], 'bootstrap' ); } $is_tty = function_exists( 'posix_isatty' ) && posix_isatty( STDOUT ); if ( 'docker' === $bits['scheme'] ) { $command = 'docker exec %s%s%s sh -c %s'; $escaped_command = sprintf( $command, $bits['user'] ? '--user ' . escapeshellarg( $bits['user'] ) . ' ' : '', $is_tty ? '-t ' : '', escapeshellarg( $bits['host'] ), escapeshellarg( $wp_command ) ); } if ( 'docker-compose' === $bits['scheme'] ) { $command = 'docker-compose exec %s%s%s sh -c %s'; $escaped_command = sprintf( $command, $bits['user'] ? '--user ' . escapeshellarg( $bits['user'] ) . ' ' : '', $is_tty ? '' : '-T ', escapeshellarg( $bits['host'] ), escapeshellarg( $wp_command ) ); } // Vagrant ssh-config. if ( 'vagrant' === $bits['scheme'] ) { $cache = WP_CLI::get_cache(); $cache_key = 'vagrant:' . $this->project_config_path; if ( $cache->has( $cache_key ) ) { $cached = $cache->read( $cache_key ); $values = json_decode( $cached, true ); } else { $ssh_config = shell_exec( 'vagrant ssh-config 2>/dev/null' ); if ( preg_match_all( '#\s*(?[a-zA-Z]+)\s(?.+)\s*#', $ssh_config, $matches ) ) { $values = array_combine( $matches['NAME'], $matches['VALUE'] ); $cache->write( $cache_key, json_encode( $values ) ); } } if ( empty( $bits['host'] ) || ( isset( $values['Host'] ) && $bits['host'] === $values['Host'] ) ) { $bits['scheme'] = 'ssh'; $bits['host'] = $values['HostName']; $bits['port'] = $values['Port']; $bits['user'] = $values['User']; $bits['key'] = $values['IdentityFile']; } // If we could not resolve the bits still, fallback to just `vagrant ssh` if ( 'vagrant' === $bits['scheme'] ) { $command = 'vagrant ssh -c %s %s'; $escaped_command = sprintf( $command, escapeshellarg( $wp_command ), escapeshellarg( $bits['host'] ) ); } } // Default scheme is SSH. if ( 'ssh' === $bits['scheme'] || null === $bits['scheme'] ) { $command = 'ssh -q %s %s %s'; if ( $bits['user'] ) { $bits['host'] = $bits['user'] . '@' . $bits['host']; } $command_args = [ $bits['port'] ? '-p ' . (int) $bits['port'] . ' ' : '', $bits['key'] ? sprintf( '-i %s', $bits['key'] ) : '', $is_tty ? '-t' : '-T', ]; $escaped_command = sprintf( $command, implode( ' ', array_filter( $command_args ) ), escapeshellarg( $bits['host'] ), escapeshellarg( $wp_command ) ); } WP_CLI::debug( 'Running SSH command: ' . $escaped_command, 'bootstrap' ); return $escaped_command; } /** * Check whether a given command is disabled by the config. * * @return bool */ public function is_command_disabled( $command ) { $path = implode( ' ', array_slice( Dispatcher\get_path( $command ), 1 ) ); return in_array( $path, $this->config['disabled_commands'], true ); } /** * Returns wp-config.php code, skipping the loading of wp-settings.php. * * @param string $wp_config_path Optional. Config file path. If left empty, it tries to * locate the wp-config.php file automatically. * * @return string */ public function get_wp_config_code( $wp_config_path = '' ) { if ( empty( $wp_config_path ) ) { $wp_config_path = Utils\locate_wp_config(); } $wp_config_code = explode( "\n", file_get_contents( $wp_config_path ) ); $found_wp_settings = false; $lines_to_run = []; foreach ( $wp_config_code as $line ) { if ( preg_match( '/^\s*require.+wp-settings\.php/', $line ) ) { $found_wp_settings = true; continue; } $lines_to_run[] = $line; } if ( ! $found_wp_settings ) { WP_CLI::error( 'Strange wp-config.php file: wp-settings.php is not loaded directly.' ); } $source = implode( "\n", $lines_to_run ); $source = Utils\replace_path_consts( $source, $wp_config_path ); return preg_replace( '|^\s*\<\?php\s*|', '', $source ); } /** * Transparently convert deprecated syntaxes * * @param array $args * @param array $assoc_args * @return array */ private static function back_compat_conversions( $args, $assoc_args ) { $top_level_aliases = [ 'sql' => 'db', 'blog' => 'site', ]; if ( count( $args ) > 0 ) { foreach ( $top_level_aliases as $old => $new ) { if ( $old === $args[0] ) { $args[0] = $new; break; } } } // *-meta -> * meta if ( ! empty( $args ) && preg_match( '/(post|comment|user|network)-meta/', $args[0], $matches ) ) { array_shift( $args ); array_unshift( $args, 'meta' ); array_unshift( $args, $matches[1] ); } // cli aliases -> cli alias list if ( [ 'cli', 'aliases' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1], $args[2] ) = [ 'cli', 'alias', 'list' ]; } // core (multsite-)install --admin_name= -> --admin_user= if ( count( $args ) > 0 && 'core' === $args[0] && isset( $assoc_args['admin_name'] ) ) { $assoc_args['admin_user'] = $assoc_args['admin_name']; unset( $assoc_args['admin_name'] ); } // core config -> config create if ( [ 'core', 'config' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1] ) = [ 'config', 'create' ]; } // core language -> language core if ( [ 'core', 'language' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1] ) = [ 'language', 'core' ]; } // checksum core -> core verify-checksums if ( [ 'checksum', 'core' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1] ) = [ 'core', 'verify-checksums' ]; } // checksum plugin -> plugin verify-checksums if ( [ 'checksum', 'plugin' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1] ) = [ 'plugin', 'verify-checksums' ]; } // site create --site_id= -> site create --network_id= if ( count( $args ) >= 2 && 'site' === $args[0] && 'create' === $args[1] && isset( $assoc_args['site_id'] ) ) { $assoc_args['network_id'] = $assoc_args['site_id']; unset( $assoc_args['site_id'] ); } // {plugin|theme} update-all -> {plugin|theme} update --all if ( count( $args ) > 1 && in_array( $args[0], [ 'plugin', 'theme' ], true ) && 'update-all' === $args[1] ) { $args[1] = 'update'; $assoc_args['all'] = true; } // transient delete-expired -> transient delete --expired if ( count( $args ) > 1 && 'transient' === $args[0] && 'delete-expired' === $args[1] ) { $args[1] = 'delete'; $assoc_args['expired'] = true; } // transient delete-all -> transient delete --all if ( count( $args ) > 1 && 'transient' === $args[0] && 'delete-all' === $args[1] ) { $args[1] = 'delete'; $assoc_args['all'] = true; } // plugin scaffold -> scaffold plugin if ( [ 'plugin', 'scaffold' ] === array_slice( $args, 0, 2 ) ) { list( $args[0], $args[1] ) = [ $args[1], $args[0] ]; } // foo --help -> help foo if ( isset( $assoc_args['help'] ) ) { array_unshift( $args, 'help' ); unset( $assoc_args['help'] ); } // {post|user} list --ids -> {post|user} list --format=ids if ( count( $args ) > 1 && in_array( $args[0], [ 'post', 'user' ], true ) && 'list' === $args[1] && isset( $assoc_args['ids'] ) ) { $assoc_args['format'] = 'ids'; unset( $assoc_args['ids'] ); } // --json -> --format=json if ( isset( $assoc_args['json'] ) ) { $assoc_args['format'] = 'json'; unset( $assoc_args['json'] ); } // --{version|info} -> cli {version|info} if ( empty( $args ) ) { $special_flags = [ 'version', 'info' ]; foreach ( $special_flags as $key ) { if ( isset( $assoc_args[ $key ] ) ) { $args = [ 'cli', $key ]; unset( $assoc_args[ $key ] ); break; } } } // (post|comment|site|term) url --> (post|comment|site|term) list --*__in --field=url if ( count( $args ) >= 2 && in_array( $args[0], [ 'post', 'comment', 'site', 'term' ], true ) && 'url' === $args[1] ) { switch ( $args[0] ) { case 'post': $post_ids = array_slice( $args, 2 ); $args = [ 'post', 'list' ]; $assoc_args['post__in'] = implode( ',', $post_ids ); $assoc_args['post_type'] = 'any'; $assoc_args['orderby'] = 'post__in'; $assoc_args['field'] = 'url'; break; case 'comment': $comment_ids = array_slice( $args, 2 ); $args = [ 'comment', 'list' ]; $assoc_args['comment__in'] = implode( ',', $comment_ids ); $assoc_args['orderby'] = 'comment__in'; $assoc_args['field'] = 'url'; break; case 'site': $site_ids = array_slice( $args, 2 ); $args = [ 'site', 'list' ]; $assoc_args['site__in'] = implode( ',', $site_ids ); $assoc_args['field'] = 'url'; break; case 'term': $taxonomy = ''; if ( isset( $args[2] ) ) { $taxonomy = $args[2]; } $term_ids = array_slice( $args, 3 ); $args = [ 'term', 'list', $taxonomy ]; $assoc_args['include'] = implode( ',', $term_ids ); $assoc_args['orderby'] = 'include'; $assoc_args['field'] = 'url'; break; } } // config get --[global|constant]= --> config get --type=constant|variable // config get --> config list if ( count( $args ) === 2 && 'config' === $args[0] && 'get' === $args[1] ) { if ( isset( $assoc_args['global'] ) ) { $name = $assoc_args['global']; $type = 'variable'; unset( $assoc_args['global'] ); } elseif ( isset( $assoc_args['constant'] ) ) { $name = $assoc_args['constant']; $type = 'constant'; unset( $assoc_args['constant'] ); } if ( ! empty( $name ) && ! empty( $type ) ) { $args[] = $name; $assoc_args['type'] = $type; } else { // We had a 'config get' without a '', so assume 'list' was wanted. $args[1] = 'list'; } } return [ $args, $assoc_args ]; } /** * Whether or not the output should be rendered in color * * @return bool */ public function in_color() { return $this->colorize; } public function init_colorization() { if ( 'auto' === $this->config['color'] ) { $this->colorize = ( ! Utils\isPiped() && ! Utils\is_windows() ); } else { $this->colorize = $this->config['color']; } } public function init_logger() { if ( $this->config['quiet'] ) { $logger = new Loggers\Quiet(); } else { $logger = new Loggers\Regular( $this->in_color() ); } WP_CLI::set_logger( $logger ); } public function get_required_files() { return $this->required_files; } /** * Do WordPress core files exist? * * @return bool */ private function wp_exists() { return file_exists( ABSPATH . 'wp-includes/version.php' ); } /** * Are WordPress core files readable? * * @return bool */ private function wp_is_readable() { return is_readable( ABSPATH . 'wp-includes/version.php' ); } private function check_wp_version() { $wp_exists = $this->wp_exists(); $wp_is_readable = $this->wp_is_readable(); if ( ! $wp_exists || ! $wp_is_readable ) { $this->show_synopsis_if_composite_command(); // If the command doesn't exist use as error. $args = $this->cmd_starts_with( [ 'help' ] ) ? array_slice( $this->arguments, 1 ) : $this->arguments; $suggestion_or_disabled = $this->find_command_to_run( $args ); if ( is_string( $suggestion_or_disabled ) ) { if ( ! preg_match( '/disabled from the config file.$/', $suggestion_or_disabled ) ) { WP_CLI::warning( "No WordPress installation found. If the command '" . implode( ' ', $args ) . "' is in a plugin or theme, pass --path=`path/to/wordpress`." ); } WP_CLI::error( $suggestion_or_disabled ); } if ( $wp_exists && ! $wp_is_readable ) { WP_CLI::error( 'It seems, the WordPress core files do not have the proper file permissions.' ); } WP_CLI::error( "This does not seem to be a WordPress installation.\n" . 'Pass --path=`path/to/wordpress` or run `wp core download`.' ); } global $wp_version; include ABSPATH . 'wp-includes/version.php'; $minimum_version = '3.7'; if ( version_compare( $wp_version, $minimum_version, '<' ) ) { WP_CLI::error( "WP-CLI needs WordPress $minimum_version or later to work properly. " . "The version currently installed is $wp_version.\n" . 'Try running `wp core download --force`.' ); } } public function init_config() { $configurator = WP_CLI::get_configurator(); $argv = array_slice( $GLOBALS['argv'], 1 ); $this->alias = null; if ( ! empty( $argv[0] ) && preg_match( '#' . Configurator::ALIAS_REGEX . '#', $argv[0], $matches ) ) { $this->alias = array_shift( $argv ); } // File config { $this->global_config_path = $this->get_global_config_path(); $this->project_config_path = $this->get_project_config_path(); $configurator->merge_yml( $this->global_config_path, $this->alias ); $config = $configurator->to_array(); $this->required_files['global'] = $config[0]['require']; $configurator->merge_yml( $this->project_config_path, $this->alias ); $config = $configurator->to_array(); $this->required_files['project'] = $config[0]['require']; } // Runtime config and args { list( $args, $assoc_args, $this->runtime_config ) = $configurator->parse_args( $argv ); list( $this->arguments, $this->assoc_args ) = self::back_compat_conversions( $args, $assoc_args ); $configurator->merge_array( $this->runtime_config ); } list( $this->config, $this->extra_config ) = $configurator->to_array(); $this->aliases = $configurator->get_aliases(); if ( count( $this->aliases ) && ! isset( $this->aliases['@all'] ) ) { $this->aliases = array_reverse( $this->aliases ); $this->aliases['@all'] = 'Run command against every registered alias.'; $this->aliases = array_reverse( $this->aliases ); } $this->required_files['runtime'] = $this->config['require']; } private function check_root() { if ( $this->config['allow-root'] || getenv( 'WP_CLI_ALLOW_ROOT' ) ) { return; # they're aware of the risks! } if ( count( $this->arguments ) >= 2 && 'cli' === $this->arguments[0] && in_array( $this->arguments[1], [ 'update', 'info' ], true ) ) { return; # make it easier to update root-owned copies } if ( ! function_exists( 'posix_geteuid' ) ) { return; # posix functions not available } if ( posix_geteuid() !== 0 ) { return; # not root } WP_CLI::error( "YIKES! It looks like you're running this as root. You probably meant to " . "run this as the user that your WordPress installation exists under.\n" . "\n" . "If you REALLY mean to run this as root, we won't stop you, but just " . 'bear in mind that any code on this site will then have full control of ' . "your server, making it quite DANGEROUS.\n" . "\n" . "If you'd like to continue as root, please run this again, adding this " . "flag: --allow-root\n" . "\n" . "If you'd like to run it as the user that this site is under, you can " . "run the following to become the respective user:\n" . "\n" . " sudo -u USER -i -- wp \n" . "\n" ); } private function run_alias_group( $aliases ) { Utils\check_proc_available( 'group alias' ); $php_bin = escapeshellarg( Utils\get_php_binary() ); $script_path = $GLOBALS['argv'][0]; if ( getenv( 'WP_CLI_CONFIG_PATH' ) ) { $config_path = getenv( 'WP_CLI_CONFIG_PATH' ); } else { $config_path = Utils\get_home_dir() . '/.wp-cli/config.yml'; } $config_path = escapeshellarg( $config_path ); foreach ( $aliases as $alias ) { WP_CLI::log( $alias ); $args = implode( ' ', array_map( 'escapeshellarg', $this->arguments ) ); $assoc_args = Utils\assoc_args_to_str( $this->assoc_args ); $runtime_config = Utils\assoc_args_to_str( $this->runtime_config ); $full_command = "WP_CLI_CONFIG_PATH={$config_path} {$php_bin} {$script_path} {$alias} {$args}{$assoc_args}{$runtime_config}"; $pipes = []; $proc = Utils\proc_open_compat( $full_command, [ STDIN, STDOUT, STDERR ], $pipes ); proc_close( $proc ); } } private function set_alias( $alias ) { $orig_config = $this->config; $alias_config = $this->aliases[ $alias ]; $this->config = array_merge( $orig_config, $alias_config ); foreach ( $alias_config as $key => $_ ) { if ( isset( $orig_config[ $key ] ) && ! is_null( $orig_config[ $key ] ) ) { $this->assoc_args[ $key ] = $orig_config[ $key ]; } } } public function start() { // Enable PHP error reporting to stderr if testing. Will need to be re-enabled after WP loads. if ( getenv( 'BEHAT_RUN' ) ) { $this->enable_error_reporting(); } WP_CLI::debug( $this->global_config_path_debug, 'bootstrap' ); WP_CLI::debug( $this->project_config_path_debug, 'bootstrap' ); WP_CLI::debug( 'argv: ' . implode( ' ', $GLOBALS['argv'] ), 'bootstrap' ); $this->check_root(); if ( $this->alias ) { if ( '@all' === $this->alias && ! isset( $this->aliases['@all'] ) ) { WP_CLI::error( "Cannot use '@all' when no aliases are registered." ); } if ( '@all' === $this->alias && is_string( $this->aliases['@all'] ) ) { $aliases = array_keys( $this->aliases ); $k = array_search( '@all', $aliases, true ); unset( $aliases[ $k ] ); $this->run_alias_group( $aliases ); exit; } if ( ! array_key_exists( $this->alias, $this->aliases ) ) { $error_msg = "Alias '{$this->alias}' not found."; $suggestion = Utils\get_suggestion( $this->alias, array_keys( $this->aliases ), $threshold = 2 ); if ( $suggestion ) { $error_msg .= PHP_EOL . "Did you mean '{$suggestion}'?"; } WP_CLI::error( $error_msg ); } // Numerically indexed means a group of aliases if ( isset( $this->aliases[ $this->alias ][0] ) ) { $group_aliases = $this->aliases[ $this->alias ]; $all_aliases = array_keys( $this->aliases ); $diff = array_diff( $group_aliases, $all_aliases ); if ( ! empty( $diff ) ) { WP_CLI::error( "Group '{$this->alias}' contains one or more invalid aliases: " . implode( ', ', $diff ) ); } $this->run_alias_group( $group_aliases ); exit; } $this->set_alias( $this->alias ); } if ( empty( $this->arguments ) ) { $this->arguments[] = 'help'; } // Protect 'cli info' from most of the runtime, // except when the command will be run over SSH if ( 'cli' === $this->arguments[0] && ! empty( $this->arguments[1] ) && 'info' === $this->arguments[1] && ! $this->config['ssh'] ) { $this->run_command_and_exit(); } if ( isset( $this->config['http'] ) && ! class_exists( '\WP_REST_CLI\Runner' ) ) { WP_CLI::error( "RESTful WP-CLI needs to be installed. Try 'wp package install wp-cli/restful'." ); } if ( $this->config['ssh'] ) { $this->run_ssh_command( $this->config['ssh'] ); return; } // Handle --path parameter self::set_wp_root( $this->find_wp_root() ); // First try at showing man page - if help command and either haven't found 'version.php' or 'wp-config.php' (so won't be loading WP & adding commands) or help on subcommand. if ( $this->cmd_starts_with( [ 'help' ] ) && ( ! $this->wp_exists() || ! Utils\locate_wp_config() || count( $this->arguments ) > 2 ) ) { $this->auto_check_update(); $this->run_command( $this->arguments, $this->assoc_args ); // Help didn't exit so failed to find the command at this stage. } // Handle --url parameter $url = self::guess_url( $this->config ); if ( $url ) { WP_CLI::set_url( $url ); } $this->do_early_invoke( 'before_wp_load' ); $this->check_wp_version(); if ( $this->cmd_starts_with( [ 'config', 'create' ] ) ) { $this->run_command_and_exit(); } if ( ! Utils\locate_wp_config() ) { WP_CLI::error( "'wp-config.php' not found.\n" . 'Either create one manually or use `wp config create`.' ); } // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- Declaring WP native constants. if ( $this->cmd_starts_with( [ 'core', 'is-installed' ] ) || $this->cmd_starts_with( [ 'core', 'update-db' ] ) ) { define( 'WP_INSTALLING', true ); } if ( count( $this->arguments ) >= 2 && 'core' === $this->arguments[0] && in_array( $this->arguments[1], [ 'install', 'multisite-install' ], true ) ) { define( 'WP_INSTALLING', true ); // We really need a URL here if ( ! isset( $_SERVER['HTTP_HOST'] ) ) { $url = 'http://example.com'; WP_CLI::set_url( $url ); } if ( 'multisite-install' === $this->arguments[1] ) { // need to fake some globals to skip the checks in wp-includes/ms-settings.php $url_parts = Utils\parse_url( $url ); self::fake_current_site_blog( $url_parts ); if ( ! defined( 'COOKIEHASH' ) ) { define( 'COOKIEHASH', md5( $url_parts['host'] ) ); } } } if ( $this->cmd_starts_with( [ 'import' ] ) ) { define( 'WP_LOAD_IMPORTERS', true ); define( 'WP_IMPORTING', true ); } if ( $this->cmd_starts_with( [ 'cron', 'event', 'run' ] ) ) { define( 'DOING_CRON', true ); } // phpcs:enable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound $this->load_wordpress(); $this->run_command_and_exit(); } /** * Load WordPress, if it hasn't already been loaded */ public function load_wordpress() { static $wp_cli_is_loaded; // Globals not explicitly globalized in WordPress global $site_id, $wpdb, $public, $current_site, $current_blog, $path, $shortcode_tags; if ( ! empty( $wp_cli_is_loaded ) ) { return; } $wp_cli_is_loaded = true; WP_CLI::debug( 'Begin WordPress load', 'bootstrap' ); WP_CLI::do_hook( 'before_wp_load' ); $this->check_wp_version(); $wp_config_path = Utils\locate_wp_config(); if ( ! $wp_config_path ) { WP_CLI::error( "'wp-config.php' not found.\n" . 'Either create one manually or use `wp config create`.' ); } WP_CLI::debug( 'wp-config.php path: ' . $wp_config_path, 'bootstrap' ); WP_CLI::do_hook( 'before_wp_config_load' ); // Load wp-config.php code, in the global scope $wp_cli_original_defined_vars = get_defined_vars(); eval( $this->get_wp_config_code() ); // phpcs:ignore Squiz.PHP.Eval.Discouraged foreach ( get_defined_vars() as $key => $var ) { if ( array_key_exists( $key, $wp_cli_original_defined_vars ) || 'wp_cli_original_defined_vars' === $key ) { continue; } // phpcs:ignore PHPCompatibility.Variables.ForbiddenGlobalVariableVariable.NonBareVariableFound global ${$key}; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedVariableFound ${$key} = $var; } $this->maybe_update_url_from_domain_constant(); WP_CLI::do_hook( 'after_wp_config_load' ); $this->do_early_invoke( 'after_wp_config_load' ); // Prevent error notice from wp_guess_url() when core isn't installed if ( $this->cmd_starts_with( [ 'core', 'is-installed' ] ) && ! defined( 'COOKIEHASH' ) ) { define( 'COOKIEHASH', md5( 'wp-cli' ) ); } // Load WP-CLI utilities require WP_CLI_ROOT . '/php/utils-wp.php'; // Set up WordPress bootstrap actions and filters $this->setup_bootstrap_hooks(); // Load Core, mu-plugins, plugins, themes etc. if ( Utils\wp_version_compare( '4.6-alpha-37575', '>=' ) ) { if ( $this->cmd_starts_with( [ 'help' ] ) ) { // Hack: define `WP_DEBUG` and `WP_DEBUG_DISPLAY` to get `wpdb::bail()` to `wp_die()`. if ( ! defined( 'WP_DEBUG' ) ) { define( 'WP_DEBUG', true ); } if ( ! defined( 'WP_DEBUG_DISPLAY' ) ) { define( 'WP_DEBUG_DISPLAY', true ); } } require ABSPATH . 'wp-settings.php'; } else { require WP_CLI_ROOT . '/php/wp-settings-cli.php'; } // Fix memory limit. See https://core.trac.wordpress.org/ticket/14889 // phpcs:ignore WordPress.PHP.IniSet.memory_limit_Blacklisted -- This is perfectly fine for CLI usage. ini_set( 'memory_limit', -1 ); // Load all the admin APIs, for convenience require ABSPATH . 'wp-admin/includes/admin.php'; add_filter( 'filesystem_method', static function () { return 'direct'; }, 99 ); // Re-enable PHP error reporting to stderr if testing. if ( getenv( 'BEHAT_RUN' ) ) { $this->enable_error_reporting(); } WP_CLI::debug( 'Loaded WordPress', 'bootstrap' ); WP_CLI::do_hook( 'after_wp_load' ); } private static function fake_current_site_blog( $url_parts ) { global $current_site, $current_blog; if ( ! isset( $url_parts['path'] ) ) { $url_parts['path'] = '/'; } // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Intentional override. $current_site = (object) [ 'id' => 1, 'blog_id' => 1, 'domain' => $url_parts['host'], 'path' => $url_parts['path'], 'cookie_domain' => $url_parts['host'], 'site_name' => 'Fake Site', ]; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Intentional override. $current_blog = (object) [ 'blog_id' => 1, 'site_id' => 1, 'domain' => $url_parts['host'], 'path' => $url_parts['path'], 'public' => '1', 'archived' => '0', 'mature' => '0', 'spam' => '0', 'deleted' => '0', 'lang_id' => '0', ]; } /** * Called after wp-config.php is eval'd, to potentially reset `--url` */ private function maybe_update_url_from_domain_constant() { if ( ! empty( $this->config['url'] ) || ! empty( $this->config['blog'] ) ) { return; } if ( defined( 'DOMAIN_CURRENT_SITE' ) ) { $url = DOMAIN_CURRENT_SITE; if ( defined( 'PATH_CURRENT_SITE' ) ) { $url .= PATH_CURRENT_SITE; } WP_CLI::set_url( $url ); } } /** * Set up hooks meant to run during the WordPress bootstrap process */ private function setup_bootstrap_hooks() { if ( $this->config['skip-plugins'] ) { $this->setup_skip_plugins_filters(); } if ( $this->config['skip-themes'] ) { WP_CLI::add_wp_hook( 'setup_theme', [ $this, 'action_setup_theme_wp_cli_skip_themes' ], 999 ); } if ( $this->cmd_starts_with( [ 'help' ] ) ) { // Try to trap errors on help. $help_handler = [ $this, 'help_wp_die_handler' ]; // Avoid any cross PHP version issues by not using $this in anon function. WP_CLI::add_wp_hook( 'wp_die_handler', function () use ( $help_handler ) { return $help_handler; } ); } else { WP_CLI::add_wp_hook( 'wp_die_handler', static function () { return '\WP_CLI\Utils\wp_die_handler'; } ); } // Prevent code from performing a redirect WP_CLI::add_wp_hook( 'wp_redirect', 'WP_CLI\\Utils\\wp_redirect_handler' ); WP_CLI::add_wp_hook( 'nocache_headers', static function ( $headers ) { // WordPress might be calling nocache_headers() because of a dead db global $wpdb; if ( ! empty( $wpdb->error ) ) { Utils\wp_die_handler( $wpdb->error ); } // Otherwise, WP might be calling nocache_headers() because WP isn't installed Utils\wp_not_installed(); return $headers; } ); WP_CLI::add_wp_hook( 'setup_theme', static function () { // Polyfill is_customize_preview(), as it is needed by TwentyTwenty to // check for starter content. if ( ! function_exists( 'is_customize_preview' ) ) { function is_customize_preview() { return false; } } }, 0 ); // ALTERNATE_WP_CRON might trigger a redirect, which we can't handle if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { WP_CLI::add_wp_hook( 'muplugins_loaded', static function () { remove_action( 'init', 'wp_cron' ); } ); } // Get rid of warnings when converting single site to multisite if ( defined( 'WP_INSTALLING' ) && $this->is_multisite() ) { $values = [ 'ms_files_rewriting' => null, 'active_sitewide_plugins' => [], '_site_transient_update_core' => null, '_site_transient_update_themes' => null, '_site_transient_update_plugins' => null, 'WPLANG' => '', ]; foreach ( $values as $key => $value ) { WP_CLI::add_wp_hook( "pre_site_option_$key", static function () use ( $values, $key ) { return $values[ $key ]; } ); } } // Always permit operations against sites, regardless of status WP_CLI::add_wp_hook( 'ms_site_check', '__return_true' ); // Always permit operations against WordPress, regardless of maintenance mode WP_CLI::add_wp_hook( 'enable_maintenance_mode', static function () { return false; } ); // Use our own debug mode handling instead of WP core WP_CLI::add_wp_hook( 'enable_wp_debug_mode_checks', static function ( $ret ) { Utils\wp_debug_mode(); return false; } ); // Never load advanced-cache.php drop-in when WP-CLI is operating WP_CLI::add_wp_hook( 'enable_loading_advanced_cache_dropin', static function () { return false; } ); // In a multisite installation, die if unable to find site given in --url parameter if ( $this->is_multisite() ) { $run_on_site_not_found = false; if ( $this->cmd_starts_with( [ 'cache', 'flush' ] ) ) { $run_on_site_not_found = 'cache flush'; } if ( $this->cmd_starts_with( [ 'search-replace' ] ) ) { // Table-specified // Bits: search-replace [...] // Or not against a specific blog if ( count( $this->arguments ) > 3 || ! empty( $this->assoc_args['network'] ) || ! empty( $this->assoc_args['all-tables'] ) || ! empty( $this->assoc_args['all-tables-with-prefix'] ) ) { $run_on_site_not_found = 'search-replace'; } } if ( $run_on_site_not_found && Utils\wp_version_compare( '4.0', '>=' ) ) { WP_CLI::add_wp_hook( 'ms_site_not_found', static function () use ( $run_on_site_not_found ) { // esc_sql() isn't yet loaded, but needed. if ( 'search-replace' === $run_on_site_not_found ) { require_once ABSPATH . WPINC . '/formatting.php'; } // PHP 5.3 compatible implementation of run_command_and_exit(). $runner = WP_CLI::get_runner(); $runner->run_command( $runner->arguments, $runner->assoc_args ); exit; }, 1 ); } WP_CLI::add_wp_hook( 'ms_site_not_found', static function ( $current_site, $domain, $path ) { $url = $domain . $path; $message = $url ? "Site '{$url}' not found." : 'Site not found.'; $has_param = isset( WP_CLI::get_runner()->config['url'] ); $has_const = defined( 'DOMAIN_CURRENT_SITE' ); $explanation = ''; if ( $has_param ) { $explanation = 'Verify `--url=` matches an existing site.'; } else { $explanation = "Define DOMAIN_CURRENT_SITE in 'wp-config.php' or use `--url=` to override."; if ( $has_const ) { $explanation = 'Verify DOMAIN_CURRENT_SITE matches an existing site or use `--url=` to override.'; } } if ( $explanation ) { $message .= ' ' . $explanation; } WP_CLI::error( $message ); }, 10, 3 ); } // The APC cache is not available on the command-line, so bail, to prevent cache poisoning WP_CLI::add_wp_hook( 'muplugins_loaded', static function () { if ( $GLOBALS['_wp_using_ext_object_cache'] && class_exists( 'APC_Object_Cache' ) ) { WP_CLI::warning( 'Running WP-CLI while the APC object cache is activated can result in cache corruption.' ); WP_CLI::confirm( 'Given the consequences, do you wish to continue?' ); } }, 0 ); // Handle --user parameter if ( ! defined( 'WP_INSTALLING' ) ) { $config = $this->config; WP_CLI::add_wp_hook( 'init', static function () use ( $config ) { if ( isset( $config['user'] ) ) { $fetcher = new Fetchers\User(); $user = $fetcher->get_check( $config['user'] ); wp_set_current_user( $user->ID ); } else { add_action( 'init', 'kses_remove_filters', 11 ); } }, 0 ); } // Avoid uncaught exception when using wp_mail() without defined $_SERVER['SERVER_NAME'] WP_CLI::add_wp_hook( 'wp_mail_from', static function ( $from_email ) { if ( 'wordpress@' === $from_email ) { $sitename = strtolower( Utils\parse_url( site_url(), PHP_URL_HOST ) ); if ( substr( $sitename, 0, 4 ) === 'www.' ) { $sitename = substr( $sitename, 4 ); } $from_email = 'wordpress@' . $sitename; } return $from_email; } ); // Don't apply set_url_scheme in get_site_url() WP_CLI::add_wp_hook( 'site_url', static function ( $url, $path, $scheme, $blog_id ) { if ( empty( $blog_id ) || ! is_multisite() ) { $url = get_option( 'siteurl' ); } else { switch_to_blog( $blog_id ); $url = get_option( 'siteurl' ); restore_current_blog(); } if ( $path && is_string( $path ) ) { $url .= '/' . ltrim( $path, '/' ); } return $url; }, 0, 4 ); // Set up hook for plugins and themes to conditionally add WP-CLI commands. WP_CLI::add_wp_hook( 'init', static function () { do_action( 'cli_init' ); } ); } /** * Set up the filters to skip the loaded plugins */ private function setup_skip_plugins_filters() { $wp_cli_filter_active_plugins = static function ( $plugins ) { $skipped_plugins = WP_CLI::get_runner()->config['skip-plugins']; if ( true === $skipped_plugins ) { return []; } if ( ! is_array( $plugins ) ) { return $plugins; } foreach ( $plugins as $a => $b ) { // active_sitewide_plugins stores plugin name as the key. if ( false !== strpos( current_filter(), 'active_sitewide_plugins' ) && Utils\is_plugin_skipped( $a ) ) { unset( $plugins[ $a ] ); // active_plugins stores plugin name as the value. } elseif ( false !== strpos( current_filter(), 'active_plugins' ) && Utils\is_plugin_skipped( $b ) ) { unset( $plugins[ $a ] ); } } // Reindex because active_plugins expects a numeric index. if ( false !== strpos( current_filter(), 'active_plugins' ) ) { $plugins = array_values( $plugins ); } return $plugins; }; $hooks = [ 'pre_site_option_active_sitewide_plugins', 'site_option_active_sitewide_plugins', 'pre_option_active_plugins', 'option_active_plugins', ]; foreach ( $hooks as $hook ) { WP_CLI::add_wp_hook( $hook, $wp_cli_filter_active_plugins, 999 ); } WP_CLI::add_wp_hook( 'plugins_loaded', static function () use ( $hooks, $wp_cli_filter_active_plugins ) { foreach ( $hooks as $hook ) { remove_filter( $hook, $wp_cli_filter_active_plugins, 999 ); } }, 0 ); } /** * Set up the filters to skip the loaded theme */ public function action_setup_theme_wp_cli_skip_themes() { $wp_cli_filter_active_theme = static function ( $value ) { $skipped_themes = WP_CLI::get_runner()->config['skip-themes']; if ( true === $skipped_themes ) { return ''; } if ( ! is_array( $skipped_themes ) ) { $skipped_themes = explode( ',', $skipped_themes ); } $checked_value = $value; // Always check against the stylesheet value // This ensures a child theme can be skipped when template differs if ( false !== stripos( current_filter(), 'option_template' ) ) { $checked_value = get_option( 'stylesheet' ); } if ( '' === $checked_value || in_array( $checked_value, $skipped_themes, true ) ) { return ''; } return $value; }; $hooks = [ 'pre_option_template', 'option_template', 'pre_option_stylesheet', 'option_stylesheet', ]; foreach ( $hooks as $hook ) { add_filter( $hook, $wp_cli_filter_active_theme, 999 ); } // Clean up after the TEMPLATEPATH and STYLESHEETPATH constants are defined WP_CLI::add_wp_hook( 'after_setup_theme', static function () use ( $hooks, $wp_cli_filter_active_theme ) { foreach ( $hooks as $hook ) { remove_filter( $hook, $wp_cli_filter_active_theme, 999 ); } }, 0 ); } /** * Whether or not this WordPress installation is multisite. * * For use after wp-config.php has loaded, but before the rest of WordPress * is loaded. */ private function is_multisite() { if ( defined( 'MULTISITE' ) ) { return MULTISITE; } if ( defined( 'SUBDOMAIN_INSTALL' ) || defined( 'VHOST' ) || defined( 'SUNRISE' ) ) { return true; } return false; } /** * Error handler for `wp_die()` when the command is help to try to trap errors (db connection failure in particular) during WordPress load. */ public function help_wp_die_handler( $message ) { $help_exit_warning = 'Error during WordPress load.'; if ( $message instanceof WP_Error ) { $help_exit_warning = Utils\wp_clean_error_message( $message->get_error_message() ); } elseif ( is_string( $message ) ) { $help_exit_warning = Utils\wp_clean_error_message( $message ); } $this->run_command_and_exit( $help_exit_warning ); } /** * Check whether there's a WP-CLI update available, and suggest update if so. */ private function auto_check_update() { // `wp cli update` only works with Phars at this time. if ( ! Utils\inside_phar() ) { return; } $existing_phar = realpath( $_SERVER['argv'][0] ); // Phar needs to be writable to be easily updateable. if ( ! is_writable( $existing_phar ) || ! is_writable( dirname( $existing_phar ) ) ) { return; } // Only check for update when a human is operating. if ( ! function_exists( 'posix_isatty' ) || ! posix_isatty( STDOUT ) ) { return; } // Allow hosts and other providers to disable automatic check update. if ( getenv( 'WP_CLI_DISABLE_AUTO_CHECK_UPDATE' ) ) { return; } // Permit configuration of number of days between checks. $days_between_checks = getenv( 'WP_CLI_AUTO_CHECK_UPDATE_DAYS' ); if ( false === $days_between_checks ) { $days_between_checks = 1; } $cache = WP_CLI::get_cache(); $cache_key = 'wp-cli-update-check'; // Bail early on the first check, so we don't always check on an unwritable cache. if ( ! $cache->has( $cache_key ) ) { $cache->write( $cache_key, time() ); return; } // Bail if last check is still within our update check time period. $last_check = (int) $cache->read( $cache_key ); if ( ( time() - ( 24 * 60 * 60 * $days_between_checks ) ) < $last_check ) { return; } // In case the operation fails, ensure the timestamp has been updated. $cache->write( $cache_key, time() ); // Check whether any updates are available. ob_start(); WP_CLI::run_command( [ 'cli', 'check-update' ], [ 'format' => 'count', ] ); $count = ob_get_clean(); if ( ! $count ) { return; } // Looks like an update is available, so let's prompt to update. WP_CLI::run_command( [ 'cli', 'update' ] ); // If the Phar was replaced, we can't proceed with the original process. exit; } /** * Get a suggestion on similar (sub)commands when the user entered an * unknown (sub)command. * * @param string $entry User entry that didn't match an * existing command. * @param CompositeCommand $root_command Root command to start search for * suggestions at. * * @return string Suggestion that fits the user entry, or an empty string. */ private function get_subcommand_suggestion( $entry, CompositeCommand $root_command = null ) { $commands = []; $this->enumerate_commands( $root_command ?: WP_CLI::get_root_command(), $commands ); return Utils\get_suggestion( $entry, $commands, $threshold = 2 ); } /** * Recursive method to enumerate all known commands. * * @param CompositeCommand $command Composite command to recurse over. * @param array $list Reference to list accumulating results. * @param string $parent Parent command to use as prefix. */ private function enumerate_commands( CompositeCommand $command, array &$list, $parent = '' ) { foreach ( $command->get_subcommands() as $subcommand ) { /** @var CompositeCommand $subcommand */ $command_string = empty( $parent ) ? $subcommand->get_name() : "{$parent} {$subcommand->get_name()}"; $list[] = $command_string; $this->enumerate_commands( $subcommand, $list, $command_string ); } } /** * Enables (almost) full PHP error reporting to stderr. */ private function enable_error_reporting() { if ( E_ALL !== error_reporting() ) { // Don't enable E_DEPRECATED as old versions of WP use PHP 4 style constructors and the mysql extension. error_reporting( E_ALL & ~E_DEPRECATED ); } ini_set( 'display_errors', 'stderr' ); // phpcs:ignore WordPress.PHP.IniSet.display_errors_Blacklisted } } upgrader->strings[ $error ] ) ) { $error = $this->upgrader->strings[ $error ]; } // TODO: show all errors, not just the first one WP_CLI::warning( $error ); } /** * Process the feedback collected through the compat indirection. * * @param string $string String to use as feedback message. * @param array $args Array of additional arguments to process. */ public function process_feedback( $string, $args ) { if ( 'parent_theme_prepare_install' === $string ) { WP_CLI::get_http_cache_manager()->whitelist_package( $this->api->download_link, 'theme', $this->api->slug, $this->api->version ); } if ( isset( $this->upgrader->strings[ $string ] ) ) { $string = $this->upgrader->strings[ $string ]; } if ( ! empty( $args ) && strpos( $string, '%' ) !== false ) { $string = vsprintf( $string, $args ); } if ( empty( $string ) ) { return; } $string = str_replace( '…', '...', Utils\strip_tags( $string ) ); $string = html_entity_decode( $string, ENT_QUOTES, get_bloginfo( 'charset' ) ); WP_CLI::log( $string ); } } spec = SynopsisParser::parse( $synopsis ); } /** * Get any unknown arguments. * * @return array */ public function get_unknown() { return array_column( $this->query_spec( [ 'type' => 'unknown', ] ), 'token' ); } /** * Check whether there are enough positional arguments. * * @param array $args Positional arguments. * @return bool */ public function enough_positionals( $args ) { $positional = $this->query_spec( [ 'type' => 'positional', 'optional' => false, ] ); return count( $args ) >= count( $positional ); } /** * Check for any unknown positionals. * * @param array $args Positional arguments. * @return array */ public function unknown_positionals( $args ) { $positional_repeating = $this->query_spec( [ 'type' => 'positional', 'repeating' => true, ] ); // At least one positional supports as many as possible. if ( ! empty( $positional_repeating ) ) { return []; } $positional = $this->query_spec( [ 'type' => 'positional', 'repeating' => false, ] ); return array_slice( $args, count( $positional ) ); } /** * Check that all required keys are present and that they have values. * * @param array $assoc_args Parameters passed to command. * @return array */ public function validate_assoc( $assoc_args ) { $assoc_spec = $this->query_spec( [ 'type' => 'assoc', ] ); $errors = [ 'fatal' => [], 'warning' => [], ]; $to_unset = []; foreach ( $assoc_spec as $param ) { $key = $param['name']; if ( ! isset( $assoc_args[ $key ] ) ) { if ( ! $param['optional'] ) { $errors['fatal'][ $key ] = "missing --$key parameter"; } } else { if ( true === $assoc_args[ $key ] && ! $param['value']['optional'] ) { $error_type = ( ! $param['optional'] ) ? 'fatal' : 'warning'; $errors[ $error_type ][ $key ] = "--$key parameter needs a value"; $to_unset[] = $key; } } } return [ $errors, $to_unset ]; } /** * Check whether there are unknown parameters supplied. * * @param array $assoc_args Parameters passed to command. * @return array|false */ public function unknown_assoc( $assoc_args ) { $generic = $this->query_spec( [ 'type' => 'generic', ] ); if ( count( $generic ) ) { return []; } $known_assoc = []; foreach ( $this->spec as $param ) { if ( in_array( $param['type'], [ 'assoc', 'flag' ], true ) ) { $known_assoc[] = $param['name']; } } return array_diff( array_keys( $assoc_args ), $known_assoc ); } /** * Filters a list of associative arrays, based on a set of key => value arguments. * * @param array $args An array of key => value arguments to match against * @param string $operator * @return array */ private function query_spec( $args, $operator = 'AND' ) { $operator = strtoupper( $operator ); $count = count( $args ); $filtered = []; foreach ( $this->spec as $key => $to_match ) { $matched = 0; foreach ( $args as $m_key => $m_value ) { if ( array_key_exists( $m_key, $to_match ) && $m_value === $to_match[ $m_key ] ) { $matched++; } } if ( ( 'AND' === $operator && $matched === $count ) || ( 'OR' === $operator && $matched > 0 ) || ( 'NOT' === $operator && 0 === $matched ) ) { $filtered[ $key ] = $to_match; } } return $filtered; } } * Jordi Boggiano */ namespace WP_CLI; use DateTime; use Exception; use Symfony\Component\Finder\Finder; use WP_CLI; /** * Reads/writes to a filesystem cache */ class FileCache { /** * @var string cache path */ protected $root; /** * @var bool */ protected $enabled = true; /** * @var int files time to live */ protected $ttl; /** * @var int max total size */ protected $max_size; /** * @var string key allowed chars (regex class) */ protected $whitelist; /** * @param string $cache_dir location of the cache * @param int $ttl cache files default time to live (expiration) * @param int $max_size max total cache size * @param string $whitelist List of characters that are allowed in path names (used in a regex character class) */ public function __construct( $cache_dir, $ttl, $max_size, $whitelist = 'a-z0-9._-' ) { $this->root = Utils\trailingslashit( $cache_dir ); $this->ttl = (int) $ttl; $this->max_size = (int) $max_size; $this->whitelist = $whitelist; if ( ! $this->ensure_dir_exists( $this->root ) ) { $this->enabled = false; } } /** * Cache is enabled * * @return bool */ public function is_enabled() { return $this->enabled; } /** * Cache root * * @return string */ public function get_root() { return $this->root; } /** * Check if a file is in cache and return its filename * * @param string $key cache key * @param int $ttl time to live * @return bool|string filename or false */ public function has( $key, $ttl = null ) { if ( ! $this->enabled ) { return false; } $filename = $this->filename( $key ); if ( ! file_exists( $filename ) ) { return false; } // Use ttl param or global ttl. if ( null === $ttl ) { $ttl = $this->ttl; } elseif ( $this->ttl > 0 ) { $ttl = min( (int) $ttl, $this->ttl ); } else { $ttl = (int) $ttl; } // if ( $ttl > 0 && ( filemtime( $filename ) + $ttl ) < time() ) { if ( $this->ttl > 0 && $ttl >= $this->ttl ) { unlink( $filename ); } return false; } return $filename; } /** * Write to cache file * * @param string $key cache key * @param string $contents file contents * @return bool */ public function write( $key, $contents ) { $filename = $this->prepare_write( $key ); if ( $filename ) { return file_put_contents( $filename, $contents ) && touch( $filename ); } return false; } /** * Read from cache file * * @param string $key cache key * @param int $ttl time to live * @return bool|string file contents or false */ public function read( $key, $ttl = null ) { $filename = $this->has( $key, $ttl ); if ( $filename ) { return file_get_contents( $filename ); } return false; } /** * Copy a file into the cache * * @param string $key cache key * @param string $source source filename * @return bool */ public function import( $key, $source ) { $filename = $this->prepare_write( $key ); if ( $filename ) { return copy( $source, $filename ) && touch( $filename ); } return false; } /** * Copy a file out of the cache * * @param string $key cache key * @param string $target target filename * @param int $ttl time to live * @return bool */ public function export( $key, $target, $ttl = null ) { $filename = $this->has( $key, $ttl ); if ( $filename && $this->ensure_dir_exists( dirname( $target ) ) ) { return copy( $filename, $target ); } return false; } /** * Remove file from cache * * @param string $key cache key * @return bool */ public function remove( $key ) { if ( ! $this->enabled ) { return false; } $filename = $this->filename( $key ); if ( file_exists( $filename ) ) { return unlink( $filename ); } return false; } /** * Clean cache based on time to live and max size * * @return bool */ public function clean() { if ( ! $this->enabled ) { return false; } $ttl = $this->ttl; $max_size = $this->max_size; // Unlink expired files. if ( $ttl > 0 ) { try { $expire = new DateTime(); $expire->modify( '-' . $ttl . ' seconds' ); $finder = $this->get_finder()->date( 'until ' . $expire->format( 'Y-m-d H:i:s' ) ); foreach ( $finder as $file ) { unlink( $file->getRealPath() ); } } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } } // Unlink older files if max cache size is exceeded. if ( $max_size > 0 ) { $files = array_reverse( iterator_to_array( $this->get_finder()->sortByAccessedTime()->getIterator() ) ); $total = 0; foreach ( $files as $file ) { if ( ( $total + $file->getSize() ) <= $max_size ) { $total += $file->getSize(); } else { unlink( $file->getRealPath() ); } } } return true; } /** * Remove all cached files. * * @return bool */ public function clear() { if ( ! $this->enabled ) { return false; } $finder = $this->get_finder(); foreach ( $finder as $file ) { unlink( $file->getRealPath() ); } return true; } /** * Remove all cached files except for the newest version of one. * * @return bool */ public function prune() { if ( ! $this->enabled ) { return false; } /** @var Finder $finder */ $finder = $this->get_finder()->sortByName(); $files_to_delete = []; foreach ( $finder as $file ) { $pieces = explode( '-', $file->getBasename( $file->getExtension() ) ); $timestamp = end( $pieces ); // No way to compare versions, do nothing. if ( ! is_numeric( $timestamp ) ) { continue; } $basename_without_timestamp = str_replace( '-' . $timestamp, '', $file->getBasename() ); // There's a file with an older timestamp, delete it. if ( isset( $files_to_delete[ $basename_without_timestamp ] ) ) { unlink( $files_to_delete[ $basename_without_timestamp ] ); } $files_to_delete[ $basename_without_timestamp ] = $file->getRealPath(); } return true; } /** * Ensure directory exists * * @param string $dir directory * @return bool */ protected function ensure_dir_exists( $dir ) { if ( ! is_dir( $dir ) ) { // Disable the cache if a null device like /dev/null is being used. if ( preg_match( '{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $dir ) ) { return false; } if ( ! @mkdir( $dir, 0777, true ) ) { $message = "Failed to create directory '{$dir}'"; $error = error_get_last(); if ( is_array( $error ) && array_key_exists( 'message', $error ) ) { $message .= ": {$error['message']}"; } WP_CLI::warning( "{$message}." ); return false; } } return true; } /** * Prepare cache write * * @param string $key cache key * @return bool|string filename or false */ protected function prepare_write( $key ) { if ( ! $this->enabled ) { return false; } $filename = $this->filename( $key ); if ( ! $this->ensure_dir_exists( dirname( $filename ) ) ) { return false; } return $filename; } /** * Validate cache key * * @param string $key cache key * @return string relative filename */ protected function validate_key( $key ) { $url_parts = Utils\parse_url( $key, -1, false ); if ( array_key_exists( 'path', $url_parts ) && ! empty( $url_parts['scheme'] ) ) { // is url $parts = [ 'misc' ]; $parts[] = $url_parts['scheme'] . ( empty( $url_parts['host'] ) ? '' : '-' . $url_parts['host'] ) . ( empty( $url_parts['port'] ) ? '' : '-' . $url_parts['port'] ); $parts[] = substr( $url_parts['path'], 1 ) . ( empty( $url_parts['query'] ) ? '' : '-' . $url_parts['query'] ); } else { $key = str_replace( '\\', '/', $key ); $parts = explode( '/', ltrim( $key ) ); } $parts = preg_replace( "#[^{$this->whitelist}]#i", '-', $parts ); return implode( '/', $parts ); } /** * Filename from key * * @param string $key * @return string filename */ protected function filename( $key ) { return $this->root . $this->validate_key( $key ); } /** * Get a Finder that iterates in cache root only the files * * @return Finder */ protected function get_finder() { return Finder::create()->in( $this->root )->files(); } } open( $zipfile ); if ( true === $res ) { $name = Utils\basename( $zipfile ); $tempdir = Utils\get_temp_dir() . uniqid( 'wp-cli-extract-zipfile-', true ) . "-{$name}"; $zip->extractTo( $tempdir ); $zip->close(); self::copy_overwrite_files( self::get_first_subfolder( $tempdir ), $dest ); self::rmdir( $tempdir ); } else { throw new Exception( sprintf( "ZipArchive failed to unzip '%s': %s.", $zipfile, self::zip_error_msg( $res ) ) ); } } /** * Extract a tarball to a specific destination. * * @param string $tarball * @param string $dest */ private static function extract_tarball( $tarball, $dest ) { // Ensure the destination folder exists or can be created. if ( ! self::ensure_dir_exists( $dest ) ) { throw new Exception( "Could not create folder '{$dest}'." ); } if ( class_exists( 'PharData' ) ) { try { $phar = new PharData( $tarball ); $name = Utils\basename( $tarball ); $tempdir = Utils\get_temp_dir() . uniqid( 'wp-cli-extract-tarball-', true ) . "-{$name}"; $phar->extractTo( $tempdir ); self::copy_overwrite_files( self::get_first_subfolder( $tempdir ), $dest ); self::rmdir( $tempdir ); return; } catch ( Exception $e ) { WP_CLI::warning( "PharData failed, falling back to 'tar xz' (" . $e->getMessage() . ')' ); // Fall through to trying `tar xz` below. } } // Ensure relative paths cannot be misinterpreted as hostnames. // Prepending `./` will force tar to interpret it as a filesystem path. if ( self::path_is_relative( $tarball ) ) { $tarball = "./{$tarball}"; } if ( ! file( $tarball ) || ! is_readable( $tarball ) || filesize( $tarball ) <= 0 ) { throw new Exception( "Invalid zip file '{$tarball}'." ); } // Note: directory must exist for tar --directory to work. $cmd = Utils\esc_cmd( 'tar xz --strip-components=1 --directory=%s -f %s', $dest, $tarball ); $process_run = WP_CLI::launch( $cmd, false /*exit_on_error*/, true /*return_detailed*/ ); if ( 0 !== $process_run->return_code ) { throw new Exception( sprintf( 'Failed to execute `%s`: %s.', $cmd, self::tar_error_msg( $process_run ) ) ); } } /** * Copy files from source directory to destination directory. Source * directory must exist. * * @param string $source * @param string $dest */ public static function copy_overwrite_files( $source, $dest ) { $iterator = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $source, RecursiveDirectoryIterator::SKIP_DOTS ), RecursiveIteratorIterator::SELF_FIRST ); $error = 0; if ( ! is_dir( $dest ) ) { mkdir( $dest, 0777, true ); } foreach ( $iterator as $item ) { $dest_path = $dest . DIRECTORY_SEPARATOR . $iterator->getSubPathName(); if ( $item->isDir() ) { if ( ! is_dir( $dest_path ) ) { mkdir( $dest_path ); } } else { if ( file_exists( $dest_path ) && is_writable( $dest_path ) ) { copy( $item, $dest_path ); } elseif ( ! file_exists( $dest_path ) ) { copy( $item, $dest_path ); } else { $error = 1; WP_CLI::warning( "Unable to copy '" . $iterator->getSubPathName() . "' to current directory." ); } } } if ( $error ) { throw new Exception( 'There was an error overwriting existing files.' ); } } /** * Delete all files and directories recursively from directory. Directory * must exist. * * @param string $dir */ public static function rmdir( $dir ) { $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $dir, RecursiveDirectoryIterator::SKIP_DOTS ), RecursiveIteratorIterator::CHILD_FIRST ); foreach ( $files as $fileinfo ) { $todo = $fileinfo->isDir() ? 'rmdir' : 'unlink'; $path = $fileinfo->getRealPath(); if ( 0 !== strpos( $path, $fileinfo->getRealPath() ) ) { WP_CLI::warning( "Temporary file or folder to be removed was found outside of temporary folder, aborting removal: '{$path}'" ); } $todo( $path ); } rmdir( $dir ); } /** * Return formatted ZipArchive error message from error code. * * @param int $error_code * @return string|int The error message corresponding to the specified * code, if found; Other wise the same error code, * unmodified. */ public static function zip_error_msg( $error_code ) { // From https://github.com/php/php-src/blob/php-5.3.0/ext/zip/php_zip.c#L2623-L2646. static $zip_err_msgs = [ ZipArchive::ER_OK => 'No error', ZipArchive::ER_MULTIDISK => 'Multi-disk zip archives not supported', ZipArchive::ER_RENAME => 'Renaming temporary file failed', ZipArchive::ER_CLOSE => 'Closing zip archive failed', ZipArchive::ER_SEEK => 'Seek error', ZipArchive::ER_READ => 'Read error', ZipArchive::ER_WRITE => 'Write error', ZipArchive::ER_CRC => 'CRC error', ZipArchive::ER_ZIPCLOSED => 'Containing zip archive was closed', ZipArchive::ER_NOENT => 'No such file', ZipArchive::ER_EXISTS => 'File already exists', ZipArchive::ER_OPEN => 'Can\'t open file', ZipArchive::ER_TMPOPEN => 'Failure to create temporary file', ZipArchive::ER_ZLIB => 'Zlib error', ZipArchive::ER_MEMORY => 'Malloc failure', ZipArchive::ER_CHANGED => 'Entry has been changed', ZipArchive::ER_COMPNOTSUPP => 'Compression method not supported', ZipArchive::ER_EOF => 'Premature EOF', ZipArchive::ER_INVAL => 'Invalid argument', ZipArchive::ER_NOZIP => 'Not a zip archive', ZipArchive::ER_INTERNAL => 'Internal error', ZipArchive::ER_INCONS => 'Zip archive inconsistent', ZipArchive::ER_REMOVE => 'Can\'t remove file', ZipArchive::ER_DELETED => 'Entry has been deleted', ]; if ( isset( $zip_err_msgs[ $error_code ] ) ) { return sprintf( '%s (%d)', $zip_err_msgs[ $error_code ], $error_code ); } return $error_code; } /** * Return formatted error message from ProcessRun of tar command. * * @param Processrun $process_run * @return string|int The error message of the process, if available; * otherwise the return code. */ public static function tar_error_msg( $process_run ) { $stderr = trim( $process_run->stderr ); $nl_pos = strpos( $stderr, "\n" ); if ( false !== $nl_pos ) { $stderr = trim( substr( $stderr, 0, $nl_pos ) ); } if ( $stderr ) { return sprintf( '%s (%d)', $stderr, $process_run->return_code ); } return $process_run->return_code; } /** * Return the first subfolder within a given path. * * Falls back to the provided path if no subfolder was detected. * * @param string $path Path to find the first subfolder in. * @return string First subfolder, or same as $path if none found. */ private static function get_first_subfolder( $path ) { $iterator = new DirectoryIterator( $path ); foreach ( $iterator as $fileinfo ) { if ( $fileinfo->isDir() && ! $fileinfo->isDot() ) { return "{$path}/{$fileinfo->getFilename()}"; } } return $path; } /** * Ensure directory exists. * * @param string $dir Directory to ensure the existence of. * @return bool Whether the existence could be asserted. */ private static function ensure_dir_exists( $dir ) { if ( ! is_dir( $dir ) ) { if ( ! @mkdir( $dir, 0777, true ) ) { $error = error_get_last(); WP_CLI::warning( sprintf( "Failed to create directory '%s': %s.", $dir, $error['message'] ) ); return false; } } return true; } /** * Check whether a path is relative- * * @param string $path Path to check. * @return bool Whether the path is relative. */ private static function path_is_relative( $path ) { if ( '' === $path ) { return true; } // Strip scheme. $scheme_position = strpos( $path, '://' ); if ( false !== $scheme_position ) { $path = substr( $path, $scheme_position + 3 ); } // UNIX root "/" or "\" (Windows style). if ( '/' === $path[0] || '\\' === $path[0] ) { return false; } // Windows root. if ( strlen( $path ) > 1 && ctype_alpha( $path[0] ) && ':' === $path[1] ) { // Special case: only drive letter, like "C:". if ( 2 === strlen( $path ) ) { return false; } // Regular Windows path starting with drive letter, like "C:/ or "C:\". if ( '/' === $path[2] || '\\' === $path[2] ) { return false; } } return true; } } process_feedback( $string, $args ); } } = 50600 ) { require_once __DIR__ . '/Min_PHP_5_6/FeedbackMethodTrait.php'; trait FeedbackMethodTrait { use Min_PHP_5_6\FeedbackMethodTrait; } return; } require_once __DIR__ . '/Min_PHP_5_4/FeedbackMethodTrait.php'; trait FeedbackMethodTrait { use Min_PHP_5_4\FeedbackMethodTrait; } process_feedback( $string, $args ); } } $value ) { $this->$key = $value; } } /** * Return properties of executed command as a string. * * @return string */ public function __toString() { $out = "$ $this->command\n"; $out .= "$this->stdout\n$this->stderr"; $out .= "cwd: $this->cwd\n"; $out .= "run time: $this->run_time\n"; $out .= "exit status: $this->return_code"; return $out; } } get_runner()->config['debug']; if ( ! $debug ) { return; } if ( true !== $debug && $group !== $debug ) { return; } $time = round( microtime( true ) - ( defined( 'WP_CLI_START_MICROTIME' ) ? WP_CLI_START_MICROTIME : $start_time ), 3 ); $prefix = 'Debug'; if ( $group && true === $debug ) { $prefix = 'Debug (' . $group . ')'; } $this->_line( "$message ({$time}s)", $prefix, '%B', STDERR ); } /** * Write a string to a resource. * * @param resource $handle Commonly STDOUT or STDERR. * @param string $str Message to write. */ protected function write( $handle, $str ) { fwrite( $handle, $str ); } /** * Output one line of message to a resource. * * @param string $message Message to write. * @param string $label Prefix message with a label. * @param string $color Colorize label with a given color. * @param resource $handle Resource to write to. Defaults to STDOUT. */ protected function _line( $message, $label, $color, $handle = STDOUT ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Used in third party extensions. if ( class_exists( 'cli\Colors' ) ) { $label = Colors::colorize( "$color$label:%n", $this->in_color ); } else { $label = "$label:"; } $this->write( $handle, "$label $message\n" ); } } write( STDERR, WP_CLI::colorize( "%RError:%n\n$message\n" ) ); $this->write( STDERR, WP_CLI::colorize( "%R---------%n\n\n" ) ); } /** * Write a string to a resource. * * @param resource $handle Commonly STDOUT or STDERR. * @param string $str Message to write. */ protected function write( $handle, $str ) { switch ( $handle ) { case STDOUT: $this->stdout .= $str; break; case STDERR: $this->stderr .= $str; break; } } /** * Starts output buffering, using a callback to capture output from `echo`, `print`, `printf` (which write to the output buffer 'php://output' rather than STDOUT). */ public function ob_start() { ob_start( [ $this, 'ob_start_callback' ], 1 ); } /** * Callback for `ob_start()`. * * @param string $str String to write. * @return string Returns zero-length string so nothing gets written to the output buffer. */ public function ob_start_callback( $str ) { $this->write( STDOUT, $str ); return ''; } /** * To match `ob_start() above. Does an `ob_end_flush()`. */ public function ob_end() { ob_end_flush(); } } write( STDERR, WP_CLI::colorize( "%RError:%n $message\n" ) ); } /** * Similar to error( $message ), but outputs $message in a red box. * * @param array $message_lines Message to write. */ public function error_multi_line( $message_lines ) { $message = implode( "\n", $message_lines ); $this->write( STDERR, WP_CLI::colorize( "%RError:%n\n$message\n" ) ); $this->write( STDERR, WP_CLI::colorize( "%R---------%n\n\n" ) ); } } in_color = $in_color; } /** * Write an informational message to STDOUT. * * @param string $message Message to write. */ public function info( $message ) { $this->write( STDOUT, $message . "\n" ); } /** * Write a success message, prefixed with "Success: ". * * @param string $message Message to write. */ public function success( $message ) { $this->_line( $message, 'Success', '%G' ); } /** * Write a warning message to STDERR, prefixed with "Warning: ". * * @param string $message Message to write. */ public function warning( $message ) { $this->_line( $message, 'Warning', '%C', STDERR ); } /** * Write an message to STDERR, prefixed with "Error: ". * * @param string $message Message to write. */ public function error( $message ) { $this->_line( $message, 'Error', '%R', STDERR ); } /** * Similar to error( $message ), but outputs $message in a red box. * * @param array $message_lines Message to write. */ public function error_multi_line( $message_lines ) { // Convert tabs to four spaces, as some shells will output the tabs as variable-length. $message_lines = array_map( function( $line ) { return str_replace( "\t", ' ', $line ); }, $message_lines ); $longest = max( array_map( 'strlen', $message_lines ) ); // Write an empty line before the message. $empty_line = Colors::colorize( '%w%1 ' . str_repeat( ' ', $longest ) . ' %n' ); $this->write( STDERR, "\n\t$empty_line\n" ); foreach ( $message_lines as $line ) { $padding = str_repeat( ' ', $longest - strlen( $line ) ); $line = Colors::colorize( "%w%1 $line $padding%n" ); $this->write( STDERR, "\t$line\n" ); } // Write an empty line after the message. $this->write( STDERR, "\t$empty_line\n\n" ); } } words = explode( ' ', $line ); // First word is always `wp`. array_shift( $this->words ); // Last word is either empty or an incomplete subcommand. $this->cur_word = end( $this->words ); if ( '' !== $this->cur_word && ! preg_match( '/^\-/', $this->cur_word ) ) { array_pop( $this->words ); } $is_alias = false; $is_help = false; if ( ! empty( $this->words[0] ) && preg_match( '/^@/', $this->words[0] ) ) { array_shift( $this->words ); // `wp @al` is false, but `wp @all ` is true. if ( count( $this->words ) ) { $is_alias = true; } } elseif ( ! empty( $this->words[0] ) && 'help' === $this->words[0] ) { array_shift( $this->words ); $is_help = true; } $r = $this->get_command( $this->words ); if ( ! is_array( $r ) ) { return; } list( $command, $args, $assoc_args ) = $r; $spec = SynopsisParser::parse( $command->get_synopsis() ); foreach ( $spec as $arg ) { if ( 'positional' === $arg['type'] && 'file' === $arg['name'] ) { $this->add( ' ' ); return; } } if ( $command->can_have_subcommands() ) { // Add completion when command is `wp` and alias isn't set. if ( 'wp' === $command->get_name() && false === $is_alias && false === $is_help ) { $aliases = WP_CLI::get_configurator()->get_aliases(); foreach ( $aliases as $name => $_ ) { $this->add( "$name " ); } } foreach ( $command->get_subcommands() as $name => $_ ) { $this->add( "$name " ); } } else { foreach ( $spec as $arg ) { if ( in_array( $arg['type'], [ 'flag', 'assoc' ], true ) ) { if ( isset( $assoc_args[ $arg['name'] ] ) ) { continue; } $opt = "--{$arg['name']}"; if ( 'flag' === $arg['type'] ) { $opt .= ' '; } elseif ( ! $arg['value']['optional'] ) { $opt .= '='; } $this->add( $opt ); } } foreach ( $this->get_global_parameters() as $param => $runtime ) { if ( isset( $assoc_args[ $param ] ) ) { continue; } $opt = "--{$param}"; if ( '' === $runtime || ! is_string( $runtime ) ) { $opt .= ' '; } else { $opt .= '='; } $this->add( $opt ); } } } private function get_command( $words ) { $positional_args = []; $assoc_args = []; foreach ( $words as $arg ) { if ( preg_match( '|^--([^=]+)=?|', $arg, $matches ) ) { $assoc_args[ $matches[1] ] = true; } else { $positional_args[] = $arg; } } $r = WP_CLI::get_runner()->find_command_to_run( $positional_args ); if ( ! is_array( $r ) && array_pop( $positional_args ) === $this->cur_word ) { $r = WP_CLI::get_runner()->find_command_to_run( $positional_args ); } if ( ! is_array( $r ) ) { return $r; } list( $command, $args ) = $r; return [ $command, $args, $assoc_args ]; } private function get_global_parameters() { $params = []; foreach ( WP_CLI::get_configurator()->get_spec() as $key => $details ) { if ( false === $details['runtime'] ) { continue; } if ( isset( $details['deprecated'] ) ) { continue; } if ( isset( $details['hidden'] ) ) { continue; } $params[ $key ] = $details['runtime']; // Add additional option like `--[no-]color`. if ( true === $details['runtime'] ) { $params[ 'no-' . $key ] = ''; } } return $params; } private function add( $opt ) { if ( '' !== $this->cur_word ) { if ( 0 !== strpos( $opt, $this->cur_word ) ) { return; } } $this->opts[] = $opt; } public function render() { foreach ( $this->opts as $opt ) { WP_CLI::line( $opt ); } } } cache = $cache; // hook into wp http api add_filter( 'pre_http_request', [ $this, 'filter_pre_http_request' ], 10, 3 ); add_filter( 'http_response', [ $this, 'filter_http_response' ], 10, 3 ); } /** * short circuit wp http api with cached file */ public function filter_pre_http_request( $response, $args, $url ) { // check if whitelisted if ( ! isset( $this->whitelist[ $url ] ) ) { return $response; } // check if downloading if ( 'GET' !== $args['method'] || empty( $args['filename'] ) ) { return $response; } // check cache and export to designated location $filename = $this->cache->has( $this->whitelist[ $url ]['key'], $this->whitelist[ $url ]['ttl'] ); if ( $filename ) { WP_CLI::log( sprintf( 'Using cached file \'%s\'...', $filename ) ); if ( copy( $filename, $args['filename'] ) ) { // simulate successful download response return [ 'response' => [ 'code' => 200, 'message' => 'OK', ], 'filename' => $args['filename'], ]; } WP_CLI::error( sprintf( 'Error copying cached file %s to %s', $filename, $url ) ); } return $response; } /** * cache wp http api downloads * * @param array $response * @param array $args * @param string $url * @return array */ public function filter_http_response( $response, $args, $url ) { // check if whitelisted if ( ! isset( $this->whitelist[ $url ] ) ) { return $response; } // check if downloading if ( 'GET' !== $args['method'] || empty( $args['filename'] ) ) { return $response; } // check if download was successful if ( is_wp_error( $response ) || 200 !== wp_remote_retrieve_response_code( $response ) ) { return $response; } // cache downloaded file $this->cache->import( $this->whitelist[ $url ]['key'], $response['filename'] ); return $response; } /** * whitelist a package url * * @param string $url * @param string $group package group (themes, plugins, ...) * @param string $slug package slug * @param string $version package version * @param int $ttl */ public function whitelist_package( $url, $group, $slug, $version, $ttl = null ) { $ext = pathinfo( Utils\parse_url( $url, PHP_URL_PATH ), PATHINFO_EXTENSION ); $key = "$group/$slug-$version.$ext"; $this->whitelist_url( $url, $key, $ttl ); wp_update_plugins(); } /** * whitelist a url * * @param string $url * @param string $key * @param int $ttl */ public function whitelist_url( $url, $key = null, $ttl = null ) { $key = $key ? : $url; $this->whitelist[ $url ] = compact( 'key', 'ttl' ); } /** * check if url is whitelisted * * @param string $url * @return bool */ public function is_whitelisted( $url ) { return isset( $this->whitelist[ $url ] ); } } * foreach( new Iterators\Table( array( 'table' => $wpdb->posts, 'fields' => array( 'ID', 'post_content' ) ) ) as $post ) { * count_words_for( $post->ID, $post->post_content ); * } * * * * foreach( new Iterators\Table( array( 'table' => $wpdb->posts, 'where' => 'ID = 8 OR post_status = "publish"' ) ) as $post ) { * … * } * * * * foreach( new PostIterator( array( 'table' => $wpdb->posts, 'where' => array( 'post_status' => 'publish', 'post_date_gmt BETWEEN x AND y' ) ) ) as $post ) { * … * } * * * @param array $args Supported arguments: * table – the name of the database table * fields – an array of columns to get from the table, '*' is a valid value and the default * where – conditions for filtering rows. Supports two formats: * = string – this will be the where clause * = array – each element is treated as a condition if it's positional, or as column => value if * it's a key/value pair. In the latter case the value is automatically quoted and escaped * append - add arbitrary extra SQL */ public function __construct( $args = [] ) { $defaults = [ 'fields' => '*', 'where' => [], 'append' => '', 'table' => null, 'chunk_size' => 500, ]; $table = $args['table']; $args = array_merge( $defaults, $args ); $fields = self::build_fields( $args['fields'] ); $conditions = self::build_where_conditions( $args['where'] ); $where_sql = $conditions ? " WHERE $conditions" : ''; $query = "SELECT $fields FROM `$table` $where_sql {$args['append']}"; parent::__construct( $query, $args['chunk_size'] ); } private static function build_fields( $fields ) { if ( '*' === $fields ) { return $fields; } return implode( ', ', array_map( function ( $v ) { return "`$v`"; }, $fields ) ); } private static function build_where_conditions( $where ) { global $wpdb; if ( is_array( $where ) ) { $conditions = []; foreach ( $where as $key => $value ) { if ( is_array( $value ) ) { $conditions[] = $key . ' IN (' . esc_sql( implode( ',', $value ) ) . ')'; } elseif ( is_numeric( $key ) ) { $conditions[] = $value; } else { $conditions[] = $key . $wpdb->prepare( ' = %s', $value ); } } $where = implode( ' AND ', $conditions ); } return $where; } } * foreach( new Iterators\Query( 'SELECT * FROM users', 100 ) as $user ) { * tickle( $user ); * } * * * @param string $query The query as a string. It shouldn't include any LIMIT clauses * @param int $chunk_size How many rows to retrieve at once; default value is 500 (optional) */ public function __construct( $query, $chunk_size = 500 ) { $this->query = $query; $this->count_query = preg_replace( '/^.*? FROM /', 'SELECT COUNT(*) FROM ', $query, 1, $replacements ); if ( 1 !== $replacements ) { $this->count_query = ''; } $this->chunk_size = $chunk_size; $this->db = $GLOBALS['wpdb']; } /** * Reduces the offset when the query row count shrinks * * In cases where the iterated rows are being updated such that they will no * longer be returned by the original query, the offset must be reduced to * iterate over all remaining rows. */ private function adjust_offset_for_shrinking_result_set() { if ( empty( $this->count_query ) ) { return; } $row_count = $this->db->get_var( $this->count_query ); if ( $row_count < $this->row_count ) { $this->offset -= $this->row_count - $row_count; } $this->row_count = $row_count; } private function load_items_from_db() { $this->adjust_offset_for_shrinking_result_set(); $query = $this->query . sprintf( ' LIMIT %d OFFSET %d', $this->chunk_size, $this->offset ); $this->results = $this->db->get_results( $query ); if ( ! $this->results ) { if ( $this->db->last_error ) { throw new Exception( 'Database error: ' . $this->db->last_error ); } return false; } $this->offset += $this->chunk_size; return true; } public function current() { return $this->results[ $this->index_in_results ]; } public function key() { return $this->global_index; } public function next() { $this->index_in_results++; $this->global_index++; } public function rewind() { $this->results = []; $this->global_index = 0; $this->index_in_results = 0; $this->offset = 0; $this->depleted = false; } public function valid() { if ( $this->depleted ) { return false; } if ( ! isset( $this->results[ $this->index_in_results ] ) ) { $items_loaded = $this->load_items_from_db(); if ( ! $items_loaded ) { $this->rewind(); $this->depleted = true; return false; } $this->index_in_results = 0; } return true; } } transformers[] = $fn; } public function current() { $value = parent::current(); foreach ( $this->transformers as $fn ) { $value = call_user_func( $fn, $value ); } return $value; } } filename = $filename; $this->file_pointer = fopen( $filename, 'rb' ); if ( ! $this->file_pointer ) { WP_CLI::error( sprintf( 'Could not open file: %s', $filename ) ); } $this->delimiter = $delimiter; } public function rewind() { rewind( $this->file_pointer ); $this->columns = fgetcsv( $this->file_pointer, self::ROW_SIZE, $this->delimiter ); $this->current_index = -1; $this->next(); } public function current() { return $this->current_element; } public function key() { return $this->current_index; } public function next() { $this->current_element = false; while ( true ) { $str = fgets( $this->file_pointer ); if ( false === $str ) { break; } $row = str_getcsv( $str, $this->delimiter ); $element = []; foreach ( $this->columns as $i => $key ) { if ( isset( $row[ $i ] ) ) { $element[ $key ] = $row[ $i ]; } } if ( ! empty( $element ) ) { $this->current_element = $element; $this->current_index++; break; } } } public function count() { $file = new SplFileObject( $this->filename, 'r' ); $file->seek( PHP_INT_MAX ); return $file->key() + 1; } public function valid() { return is_array( $this->current_element ); } } #.*?$)|(?>//.*?$)|(?>/\*.*?\*/)|(?>\'(?:(?=(\\\\?))\1.)*?\')|(?>"(?:(?=(\\\\?))\2.)*?")|(?\b__FILE__\b)|(?\b__DIR__\b)%ms'; function inside_phar() { return 0 === strpos( WP_CLI_ROOT, PHAR_STREAM_PREFIX ); } // Files that need to be read by external programs have to be extracted from the Phar archive. function extract_from_phar( $path ) { if ( ! inside_phar() ) { return $path; } $fname = basename( $path ); $tmp_path = get_temp_dir() . uniqid( 'wp-cli-extract-from-phar-', true ) . "-$fname"; copy( $path, $tmp_path ); register_shutdown_function( function() use ( $tmp_path ) { if ( file_exists( $tmp_path ) ) { unlink( $tmp_path ); } } ); return $tmp_path; } function load_dependencies() { if ( inside_phar() ) { if ( file_exists( WP_CLI_ROOT . '/vendor/autoload.php' ) ) { require WP_CLI_ROOT . '/vendor/autoload.php'; } elseif ( file_exists( dirname( dirname( WP_CLI_ROOT ) ) . '/autoload.php' ) ) { require dirname( dirname( WP_CLI_ROOT ) ) . '/autoload.php'; } return; } $has_autoload = false; foreach ( get_vendor_paths() as $vendor_path ) { if ( file_exists( $vendor_path . '/autoload.php' ) ) { require $vendor_path . '/autoload.php'; $has_autoload = true; break; } } if ( ! $has_autoload ) { fwrite( STDERR, "Internal error: Can't find Composer autoloader.\nTry running: composer install\n" ); exit( 3 ); } } function get_vendor_paths() { $vendor_paths = [ WP_CLI_ROOT . '/../../../vendor', // Part of a larger project / installed via Composer (preferred). WP_CLI_ROOT . '/vendor', // Top-level project / installed as Git clone. ]; $maybe_composer_json = WP_CLI_ROOT . '/../../../composer.json'; if ( file_exists( $maybe_composer_json ) && is_readable( $maybe_composer_json ) ) { $composer = json_decode( file_get_contents( $maybe_composer_json ) ); if ( ! empty( $composer->config ) && ! empty( $composer->config->{'vendor-dir'} ) ) { array_unshift( $vendor_paths, WP_CLI_ROOT . '/../../../' . $composer->config->{'vendor-dir'} ); } } return $vendor_paths; } // Using require() directly inside a class grants access to private methods to the loaded code. function load_file( $path ) { require_once $path; } function load_command( $name ) { $path = WP_CLI_ROOT . "/php/commands/$name.php"; if ( is_readable( $path ) ) { include_once $path; } } /** * Like array_map(), except it returns a new iterator, instead of a modified array. * * Example: * * $arr = array('Football', 'Socker'); * * $it = iterator_map($arr, 'strtolower', function($val) { * return str_replace('foo', 'bar', $val); * }); * * foreach ( $it as $val ) { * var_dump($val); * } * * @param array|object $it Either a plain array or another iterator. * @param callback $fn The function to apply to an element. * @return object An iterator that applies the given callback(s). */ function iterator_map( $it, $fn ) { if ( is_array( $it ) ) { $it = new ArrayIterator( $it ); } if ( ! method_exists( $it, 'add_transform' ) ) { $it = new Transform( $it ); } foreach ( array_slice( func_get_args(), 1 ) as $fn ) { $it->add_transform( $fn ); } return $it; } /** * Search for file by walking up the directory tree until the first file is found or until $stop_check($dir) returns true. * * @param string|array $files The files (or file) to search for. * @param string|null $dir The directory to start searching from; defaults to CWD. * @param callable $stop_check Function which is passed the current dir each time a directory level is traversed. * @return null|string Null if the file was not found. */ function find_file_upward( $files, $dir = null, $stop_check = null ) { $files = (array) $files; if ( is_null( $dir ) ) { $dir = getcwd(); } while ( is_readable( $dir ) ) { // Stop walking up when the supplied callable returns true being passed the $dir if ( is_callable( $stop_check ) && call_user_func( $stop_check, $dir ) ) { return null; } foreach ( $files as $file ) { $path = $dir . DIRECTORY_SEPARATOR . $file; if ( file_exists( $path ) ) { return $path; } } $parent_dir = dirname( $dir ); if ( empty( $parent_dir ) || $parent_dir === $dir ) { break; } $dir = $parent_dir; } return null; } function is_path_absolute( $path ) { // Windows if ( isset( $path[1] ) && ':' === $path[1] ) { return true; } return '/' === $path[0]; } /** * Composes positional arguments into a command string. * * @param array $args Positional arguments to compose. * @return string */ function args_to_str( $args ) { return ' ' . implode( ' ', array_map( 'escapeshellarg', $args ) ); } /** * Composes associative arguments into a command string. * * @param array $assoc_args Associative arguments to compose. * @return string */ function assoc_args_to_str( $assoc_args ) { $str = ''; foreach ( $assoc_args as $key => $value ) { if ( true === $value ) { $str .= " --$key"; } elseif ( is_array( $value ) ) { foreach ( $value as $v ) { $str .= assoc_args_to_str( [ $key => $v, ] ); } } else { $str .= " --$key=" . escapeshellarg( $value ); } } return $str; } /** * Given a template string and an arbitrary number of arguments, * returns the final command, with the parameters escaped. */ function esc_cmd( $cmd ) { if ( func_num_args() < 2 ) { trigger_error( 'esc_cmd() requires at least two arguments.', E_USER_WARNING ); } $args = func_get_args(); $cmd = array_shift( $args ); return vsprintf( $cmd, array_map( 'escapeshellarg', $args ) ); } /** * Gets path to WordPress configuration. * * @return string */ function locate_wp_config() { static $path; if ( null === $path ) { $path = false; if ( getenv( 'WP_CONFIG_PATH' ) && file_exists( getenv( 'WP_CONFIG_PATH' ) ) ) { $path = getenv( 'WP_CONFIG_PATH' ); } elseif ( file_exists( ABSPATH . 'wp-config.php' ) ) { $path = ABSPATH . 'wp-config.php'; } elseif ( file_exists( dirname( ABSPATH ) . '/wp-config.php' ) && ! file_exists( dirname( ABSPATH ) . '/wp-settings.php' ) ) { $path = dirname( ABSPATH ) . '/wp-config.php'; } if ( $path ) { $path = realpath( $path ); } } return $path; } function wp_version_compare( $since, $operator ) { $wp_version = str_replace( '-src', '', $GLOBALS['wp_version'] ); $since = str_replace( '-src', '', $since ); return version_compare( $wp_version, $since, $operator ); } /** * Render a collection of items as an ASCII table, JSON, CSV, YAML, list of ids, or count. * * Given a collection of items with a consistent data structure: * * ``` * $items = array( * array( * 'key' => 'foo', * 'value' => 'bar', * ) * ); * ``` * * Render `$items` as an ASCII table: * * ``` * WP_CLI\Utils\format_items( 'table', $items, array( 'key', 'value' ) ); * * # +-----+-------+ * # | key | value | * # +-----+-------+ * # | foo | bar | * # +-----+-------+ * ``` * * Or render `$items` as YAML: * * ``` * WP_CLI\Utils\format_items( 'yaml', $items, array( 'key', 'value' ) ); * * # --- * # - * # key: foo * # value: bar * ``` * * @access public * @category Output * * @param string $format Format to use: 'table', 'json', 'csv', 'yaml', 'ids', 'count'. * @param array $items An array of items to output. * @param array|string $fields Named fields for each item of data. Can be array or comma-separated list. */ function format_items( $format, $items, $fields ) { $assoc_args = compact( 'format', 'fields' ); $formatter = new Formatter( $assoc_args ); $formatter->display_items( $items ); } /** * Write data as CSV to a given file. * * @access public * * @param resource $fd File descriptor. * @param array $rows Array of rows to output. * @param array $headers List of CSV columns (optional). */ function write_csv( $fd, $rows, $headers = [] ) { if ( ! empty( $headers ) ) { fputcsv( $fd, $headers ); } foreach ( $rows as $row ) { if ( ! empty( $headers ) ) { $row = pick_fields( $row, $headers ); } fputcsv( $fd, array_values( $row ) ); } } /** * Pick fields from an associative array or object. * * @param array|object $item Associative array or object to pick fields from. * @param array $fields List of fields to pick. * @return array */ function pick_fields( $item, $fields ) { $values = []; if ( is_object( $item ) ) { foreach ( $fields as $field ) { $values[ $field ] = isset( $item->$field ) ? $item->$field : null; } } else { foreach ( $fields as $field ) { $values[ $field ] = isset( $item[ $field ] ) ? $item[ $field ] : null; } } return $values; } /** * Launch system's $EDITOR for the user to edit some text. * * @access public * @category Input * * @param string $input Some form of text to edit (e.g. post content). * @param string $title Title to display in the editor. * @param string $ext Extension to use with the temp file. * @return string|bool Edited text, if file is saved from editor; false, if no change to file. */ function launch_editor_for_input( $input, $title = 'WP-CLI', $ext = 'tmp' ) { check_proc_available( 'launch_editor_for_input' ); $tmpdir = get_temp_dir(); do { $tmpfile = basename( $title ); $tmpfile = preg_replace( '|\.[^.]*$|', '', $tmpfile ); $tmpfile .= '-' . substr( md5( mt_rand() ), 0, 6 ); // phpcs:ignore WordPress.WP.AlternativeFunctions.rand_mt_rand -- no crypto and WP not loaded. $tmpfile = $tmpdir . $tmpfile . '.' . $ext; $fp = fopen( $tmpfile, 'xb' ); if ( ! $fp && is_writable( $tmpdir ) && file_exists( $tmpfile ) ) { $tmpfile = ''; continue; } if ( $fp ) { fclose( $fp ); } } while ( ! $tmpfile ); if ( ! $tmpfile ) { WP_CLI::error( 'Error creating temporary file.' ); } file_put_contents( $tmpfile, $input ); $editor = getenv( 'EDITOR' ); if ( ! $editor ) { $editor = is_windows() ? 'notepad' : 'vi'; } $descriptorspec = [ STDIN, STDOUT, STDERR ]; $process = proc_open_compat( "$editor " . escapeshellarg( $tmpfile ), $descriptorspec, $pipes ); $r = proc_close( $process ); if ( $r ) { exit( $r ); } $output = file_get_contents( $tmpfile ); unlink( $tmpfile ); if ( $output === $input ) { return false; } return $output; } /** * @param string $raw_host MySQL host string, as defined in wp-config.php. * * @return array */ function mysql_host_to_cli_args( $raw_host ) { $assoc_args = []; /** * If the host string begins with 'p:' for a persistent db connection, * replace 'p:' with nothing. */ if ( substr( $raw_host, 0, 2 ) === 'p:' ) { $raw_host = substr_replace( $raw_host, '', 0, 2 ); } $host_parts = explode( ':', $raw_host ); if ( count( $host_parts ) === 2 ) { list( $assoc_args['host'], $extra ) = $host_parts; $extra = trim( $extra ); if ( is_numeric( $extra ) ) { $assoc_args['port'] = (int) $extra; $assoc_args['protocol'] = 'tcp'; } elseif ( '' !== $extra ) { $assoc_args['socket'] = $extra; } } else { $assoc_args['host'] = $raw_host; } return $assoc_args; } /** * Run a MySQL command and optionally return the output. * * @since v2.5.0 Deprecated $descriptors argument. * * @param string $cmd Command to run. * @param array $assoc_args Associative array of arguments to use. * @param mixed $_ Deprecated. Former $descriptors argument. * @param bool $send_to_shell Optional. Whether to send STDOUT and STDERR * immediately to the shell. Defaults to true. * @param bool $interactive Optional. Whether MySQL is meant to be * executed as an interactive process. Defaults * to false. * * @return array { * Associative array containing STDOUT and STDERR output. * * @type string $stdout Output that was sent to STDOUT. * @type string $stderr Output that was sent to STDERR. * @type int $exit_code Exit code of the process. * } */ function run_mysql_command( $cmd, $assoc_args, $_ = null, $send_to_shell = true, $interactive = false ) { check_proc_available( 'run_mysql_command' ); $descriptors = $interactive ? [ 0 => STDIN, 1 => STDOUT, 2 => STDERR, ] : [ 0 => STDIN, 1 => [ 'pipe', 'w' ], 2 => [ 'pipe', 'w' ], ]; $stdout = ''; $stderr = ''; $pipes = []; if ( isset( $assoc_args['host'] ) ) { // phpcs:ignore WordPress.DB.RestrictedFunctions.mysql_mysql_host_to_cli_args -- Misidentified as PHP native MySQL function. $assoc_args = array_merge( $assoc_args, mysql_host_to_cli_args( $assoc_args['host'] ) ); } if ( isset( $assoc_args['pass'] ) ) { $old_password = getenv( 'MYSQL_PWD' ); putenv( 'MYSQL_PWD=' . $assoc_args['pass'] ); unset( $assoc_args['pass'] ); } $final_cmd = force_env_on_nix_systems( $cmd ) . assoc_args_to_str( $assoc_args ); WP_CLI::debug( 'Final MySQL command: ' . $final_cmd, 'db' ); $process = proc_open_compat( $final_cmd, $descriptors, $pipes ); if ( isset( $old_password ) ) { putenv( 'MYSQL_PWD=' . $old_password ); } if ( ! $process ) { exit( 1 ); } if ( ! $interactive && is_resource( $process ) ) { $stdout = stream_get_contents( $pipes[1] ); $stderr = stream_get_contents( $pipes[2] ); fclose( $pipes[1] ); fclose( $pipes[2] ); } $exit_code = proc_close( $process ); if ( $interactive && $exit_code ) { exit( $exit_code ); } if ( $send_to_shell ) { fwrite( STDOUT, $stdout ); fwrite( STDERR, $stderr ); if ( $exit_code ) { exit( $exit_code ); } } return [ $stdout, $stderr, $exit_code, ]; } /** * Render PHP or other types of files using Mustache templates. * * IMPORTANT: Automatic HTML escaping is disabled! */ function mustache_render( $template_name, $data = [] ) { if ( ! file_exists( $template_name ) ) { $template_name = WP_CLI_ROOT . "/templates/$template_name"; } $template = file_get_contents( $template_name ); $m = new Mustache_Engine( [ 'escape' => function ( $val ) { return $val; }, ] ); return $m->render( $template, $data ); } /** * Create a progress bar to display percent completion of a given operation. * * Progress bar is written to STDOUT, and disabled when command is piped. Progress * advances with `$progress->tick()`, and completes with `$progress->finish()`. * Process bar also indicates elapsed time and expected total time. * * ``` * # `wp user generate` ticks progress bar each time a new user is created. * # * # $ wp user generate --count=500 * # Generating users 22 % [=======> ] 0:05 / 0:23 * * $progress = \WP_CLI\Utils\make_progress_bar( 'Generating users', $count ); * for ( $i = 0; $i < $count; $i++ ) { * // uses wp_insert_user() to insert the user * $progress->tick(); * } * $progress->finish(); * ``` * * @access public * @category Output * * @param string $message Text to display before the progress bar. * @param integer $count Total number of ticks to be performed. * @param int $interval Optional. The interval in milliseconds between updates. Default 100. * @return cli\progress\Bar|NoOp */ function make_progress_bar( $message, $count, $interval = 100 ) { if ( Shell::isPiped() ) { return new NoOp(); } return new Bar( $message, $count, $interval ); } /** * Helper function to use wp_parse_url when available or fall back to PHP's * parse_url if not. * * Additionally, this adds 'http://' to the URL if no scheme was found. * * @param string $url The URL to parse. * @param int $component Optional. The specific component to retrieve. * Use one of the PHP predefined constants to * specify which one. Defaults to -1 (= return * all parts as an array). * @param bool $auto_add_scheme Optional. Automatically add an http:// scheme if * none was found. Defaults to true. * @return mixed False on parse failure; Array of URL components on success; * When a specific component has been requested: null if the * component doesn't exist in the given URL; a string or - in the * case of PHP_URL_PORT - integer when it does. See parse_url()'s * return values. */ function parse_url( $url, $component = - 1, $auto_add_scheme = true ) { if ( function_exists( 'wp_parse_url' ) && ( -1 === $component || wp_version_compare( '4.7', '>=' ) ) ) { $url_parts = wp_parse_url( $url, $component ); } else { // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url -- Fallback. $url_parts = \parse_url( $url, $component ); } // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url -- Own version based on WP one. if ( $auto_add_scheme && ! parse_url( $url, PHP_URL_SCHEME, false ) ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url -- Own version based on WP one. $url_parts = parse_url( 'http://' . $url, $component, false ); } return $url_parts; } /** * Check if we're running in a Windows environment (cmd.exe). * * @return bool */ function is_windows() { $test_is_windows = getenv( 'WP_CLI_TEST_IS_WINDOWS' ); return false !== $test_is_windows ? (bool) $test_is_windows : strtoupper( substr( PHP_OS, 0, 3 ) ) === 'WIN'; } /** * Replace magic constants in some PHP source code. * * Replaces the __FILE__ and __DIR__ magic constants with the values they are * supposed to represent at runtime. * * @param string $source The PHP code to manipulate. * @param string $path The path to use instead of the magic constants. * @return string Adapted PHP code. */ function replace_path_consts( $source, $path ) { // Solve issue with Windows allowing single quotes in account names. $file = addslashes( $path ); if ( file_exists( $file ) ) { $file = realpath( $file ); } $dir = dirname( $file ); // Replace __FILE__ and __DIR__ constants with value of $file or $dir. return preg_replace_callback( FILE_DIR_PATTERN, static function ( $matches ) use ( $file, $dir ) { if ( ! empty( $matches['file'] ) ) { return "'{$file}'"; } if ( ! empty( $matches['dir'] ) ) { return "'{$dir}'"; } return $matches[0]; }, $source ); } /** * Make a HTTP request to a remote URL. * * Wraps the Requests HTTP library to ensure every request includes a cert. * * ``` * # `wp core download` verifies the hash for a downloaded WordPress archive * * $md5_response = Utils\http_request( 'GET', $download_url . '.md5' ); * if ( 20 != substr( $md5_response->status_code, 0, 2 ) ) { * WP_CLI::error( "Couldn't access md5 hash for release (HTTP code {$response->status_code})" ); * } * ``` * * @access public * * @param string $method HTTP method (GET, POST, DELETE, etc.). * @param string $url URL to make the HTTP request to. * @param array $headers Add specific headers to the request. * @param array $options { * Optional. An associative array of additional request options. * * @type bool $halt_on_error Whether or not command execution should be halted on error. Default: true * @type bool|string $verify A boolean to use enable/disable SSL verification * or string absolute path to CA cert to use. * Defaults to detected CA cert bundled with the Requests library. * @type bool $insecure Whether to retry automatically without certificate validation. * } * @return object * @throws RuntimeException If the request failed. * @throws ExitException If the request failed and $halt_on_error is true. */ function http_request( $method, $url, $data = null, $headers = [], $options = [] ) { if ( ! class_exists( 'Requests_Hooks' ) ) { // Autoloader for the Requests library has not been registered yet. Requests::register_autoloader(); } $insecure = isset( $options['insecure'] ) && (bool) $options['insecure']; $halt_on_error = ! isset( $options['halt_on_error'] ) || (bool) $options['halt_on_error']; unset( $options['halt_on_error'] ); if ( ! isset( $options['verify'] ) ) { // 'curl.cainfo' enforces the CA file to use, otherwise fallback to system-wide defaults then use the embedded CA file. $options['verify'] = ! empty( ini_get( 'curl.cainfo' ) ) ? ini_get( 'curl.cainfo' ) : true; } try { try { return Requests::request( $url, $headers, $data, $method, $options ); } catch ( Requests_Exception $ex ) { if ( true !== $options['verify'] || 'curlerror' !== $ex->getType() || curl_errno( $ex->getData() ) !== CURLE_SSL_CACERT ) { throw $ex; } $options['verify'] = get_default_cacert( $halt_on_error ); return Requests::request( $url, $headers, $data, $method, $options ); } } catch ( Requests_Exception $ex ) { // CURLE_SSL_CACERT_BADFILE only defined for PHP >= 7. if ( ! $insecure || 'curlerror' !== $ex->getType() || ! in_array( curl_errno( $ex->getData() ), [ CURLE_SSL_CONNECT_ERROR, CURLE_SSL_CERTPROBLEM, 77 /*CURLE_SSL_CACERT_BADFILE*/ ], true ) ) { $error_msg = sprintf( "Failed to get url '%s': %s.", $url, $ex->getMessage() ); if ( $halt_on_error ) { WP_CLI::error( $error_msg ); } throw new RuntimeException( $error_msg, null, $ex ); } $warning = sprintf( "Re-trying without verify after failing to get verified url '%s' %s.", $url, $ex->getMessage() ); WP_CLI::warning( $warning ); // Disable certificate validation for the next try. $options['verify'] = false; try { return Requests::request( $url, $headers, $data, $method, $options ); } catch ( Requests_Exception $ex ) { $error_msg = sprintf( "Failed to get non-verified url '%s' %s.", $url, $ex->getMessage() ); if ( $halt_on_error ) { WP_CLI::error( $error_msg ); } throw new RuntimeException( $error_msg, null, $ex ); } } } /** * Gets the full path to the default CA cert. * * @param bool $halt_on_error Whether or not command execution should be halted on error. Default: false * @return string Absolute path to the default CA cert. * @throws RuntimeException If unable to locate the cert. * @throws ExitException If unable to locate the cert and $halt_on_error is true. */ function get_default_cacert( $halt_on_error = false ) { $cert_path = '/rmccue/requests/library/Requests/Transport/cacert.pem'; $error_msg = 'Cannot find SSL certificate.'; if ( inside_phar() ) { // cURL can't read Phar archives return extract_from_phar( WP_CLI_VENDOR_DIR . $cert_path ); } foreach ( get_vendor_paths() as $vendor_path ) { if ( file_exists( $vendor_path . $cert_path ) ) { return $vendor_path . $cert_path; } } if ( $halt_on_error ) { WP_CLI::error( $error_msg ); } throw new RuntimeException( $error_msg ); } /** * Increments a version string using the "x.y.z-pre" format. * * Can increment the major, minor or patch number by one. * If $new_version == "same" the version string is not changed. * If $new_version is not a known keyword, it will be used as the new version string directly. * * @param string $current_version * @param string $new_version * @return string */ function increment_version( $current_version, $new_version ) { // split version assuming the format is x.y.z-pre $current_version = explode( '-', $current_version, 2 ); $current_version[0] = explode( '.', $current_version[0] ); switch ( $new_version ) { case 'same': // do nothing break; case 'patch': $current_version[0][2]++; $current_version = [ $current_version[0] ]; // Drop possible pre-release info. break; case 'minor': $current_version[0][1]++; $current_version[0][2] = 0; $current_version = [ $current_version[0] ]; // Drop possible pre-release info. break; case 'major': $current_version[0][0]++; $current_version[0][1] = 0; $current_version[0][2] = 0; $current_version = [ $current_version[0] ]; // Drop possible pre-release info. break; default: // not a keyword $current_version = [ [ $new_version ] ]; break; } // Reconstruct version string. $current_version[0] = implode( '.', $current_version[0] ); $current_version = implode( '-', $current_version ); return $current_version; } /** * Compare two version strings to get the named semantic version. * * @access public * * @param string $new_version * @param string $original_version * @return string 'major', 'minor', 'patch' */ function get_named_sem_ver( $new_version, $original_version ) { if ( ! Comparator::greaterThan( $new_version, $original_version ) ) { return ''; } $parts = explode( '-', $original_version ); $bits = explode( '.', $parts[0] ); $major = $bits[0]; if ( isset( $bits[1] ) ) { $minor = $bits[1]; } if ( isset( $bits[2] ) ) { $patch = $bits[2]; } if ( isset( $minor ) && Semver::satisfies( $new_version, "{$major}.{$minor}.x" ) ) { return 'patch'; } if ( Semver::satisfies( $new_version, "{$major}.x.x" ) ) { return 'minor'; } return 'major'; } /** * Return the flag value or, if it's not set, the $default value. * * Because flags can be negated (e.g. --no-quiet to negate --quiet), this * function provides a safer alternative to using * `isset( $assoc_args['quiet'] )` or similar. * * @access public * @category Input * * @param array $assoc_args Arguments array. * @param string $flag Flag to get the value. * @param mixed $default Default value for the flag. Default: NULL. * @return mixed */ function get_flag_value( $assoc_args, $flag, $default = null ) { return isset( $assoc_args[ $flag ] ) ? $assoc_args[ $flag ] : $default; } /** * Get the home directory. * * @access public * @category System * * @return string */ function get_home_dir() { $home = getenv( 'HOME' ); if ( ! $home ) { // In Windows $HOME may not be defined $home = getenv( 'HOMEDRIVE' ) . getenv( 'HOMEPATH' ); } return rtrim( $home, '/\\' ); } /** * Appends a trailing slash. * * @access public * @category System * * @param string $string What to add the trailing slash to. * @return string String with trailing slash added. */ function trailingslashit( $string ) { return rtrim( $string, '/\\' ) . '/'; } /** * Normalize a filesystem path. * * On Windows systems, replaces backslashes with forward slashes * and forces upper-case drive letters. * Allows for two leading slashes for Windows network shares, but * ensures that all other duplicate slashes are reduced to a single one. * Ensures upper-case drive letters on Windows systems. * * @access public * @category System * * @param string $path Path to normalize. * @return string Normalized path. */ function normalize_path( $path ) { $path = str_replace( '\\', '/', $path ); $path = preg_replace( '|(?<=.)/+|', '/', $path ); if ( ':' === substr( $path, 1, 1 ) ) { $path = ucfirst( $path ); } return $path; } /** * Convert Windows EOLs to *nix. * * @param string $str String to convert. * @return string String with carriage return / newline pairs reduced to newlines. */ function normalize_eols( $str ) { return str_replace( "\r\n", "\n", $str ); } /** * Get the system's temp directory. Warns user if it isn't writable. * * @access public * @category System * * @return string */ function get_temp_dir() { static $temp = ''; if ( $temp ) { return $temp; } // `sys_get_temp_dir()` introduced PHP 5.2.1. Will always return something. $temp = trailingslashit( sys_get_temp_dir() ); if ( ! is_writable( $temp ) ) { WP_CLI::warning( "Temp directory isn't writable: {$temp}" ); } return $temp; } /** * Parse a SSH url for its host, port, and path. * * Similar to parse_url(), but adds support for defined SSH aliases. * * ``` * host OR host/path/to/wordpress OR host:port/path/to/wordpress * ``` * * @access public * * @return mixed */ function parse_ssh_url( $url, $component = -1 ) { preg_match( '#^((docker|docker\-compose|ssh|vagrant):)?(([^@:]+)@)?([^:/~]+)(:([\d]*))?((/|~)(.+))?$#', $url, $matches ); $bits = []; foreach ( [ 2 => 'scheme', 4 => 'user', 5 => 'host', 7 => 'port', 8 => 'path', ] as $i => $key ) { if ( ! empty( $matches[ $i ] ) ) { $bits[ $key ] = $matches[ $i ]; } } // Find the hostname from `vagrant ssh-config` automatically. if ( preg_match( '/^vagrant:?/', $url ) ) { if ( 'vagrant' === $bits['host'] && empty( $bits['scheme'] ) ) { $bits['scheme'] = 'vagrant'; $bits['host'] = ''; } } switch ( $component ) { case PHP_URL_SCHEME: return isset( $bits['scheme'] ) ? $bits['scheme'] : null; case PHP_URL_USER: return isset( $bits['user'] ) ? $bits['user'] : null; case PHP_URL_HOST: return isset( $bits['host'] ) ? $bits['host'] : null; case PHP_URL_PATH: return isset( $bits['path'] ) ? $bits['path'] : null; case PHP_URL_PORT: return isset( $bits['port'] ) ? $bits['port'] : null; default: return $bits; } } /** * Report the results of the same operation against multiple resources. * * @access public * @category Input * * @param string $noun Resource being affected (e.g. plugin). * @param string $verb Type of action happening to the noun (e.g. activate). * @param integer $total Total number of resource being affected. * @param integer $successes Number of successful operations. * @param integer $failures Number of failures. * @param null|integer $skips Optional. Number of skipped operations. Default null (don't show skips). */ function report_batch_operation_results( $noun, $verb, $total, $successes, $failures, $skips = null ) { $plural_noun = $noun . 's'; $past_tense_verb = past_tense_verb( $verb ); $past_tense_verb_upper = ucfirst( $past_tense_verb ); if ( $failures ) { $failed_skipped_message = null === $skips ? '' : " ({$failures} failed" . ( $skips ? ", {$skips} skipped" : '' ) . ')'; if ( $successes ) { WP_CLI::error( "Only {$past_tense_verb} {$successes} of {$total} {$plural_noun}{$failed_skipped_message}." ); } else { WP_CLI::error( "No {$plural_noun} {$past_tense_verb}{$failed_skipped_message}." ); } } else { $skipped_message = $skips ? " ({$skips} skipped)" : ''; if ( $successes || $skips ) { WP_CLI::success( "{$past_tense_verb_upper} {$successes} of {$total} {$plural_noun}{$skipped_message}." ); } else { $message = $total > 1 ? ucfirst( $plural_noun ) : ucfirst( $noun ); WP_CLI::success( "{$message} already {$past_tense_verb}." ); } } } /** * Parse a string of command line arguments into an $argv-esqe variable. * * @access public * @category Input * * @param string $arguments * @return array */ function parse_str_to_argv( $arguments ) { preg_match_all( '/(?:--[^\s=]+=(["\'])((\\{2})*|(?:[^\1]+?[^\\\\](\\{2})*))\1|--[^\s=]+=[^\s]+|--[^\s=]+|(["\'])((\\{2})*|(?:[^\5]+?[^\\\\](\\{2})*))\5|[^\s]+)/', $arguments, $matches ); $argv = isset( $matches[0] ) ? $matches[0] : []; return array_map( static function ( $arg ) { foreach ( [ '"', "'" ] as $char ) { if ( substr( $arg, 0, 1 ) === $char && substr( $arg, -1 ) === $char ) { $arg = substr( $arg, 1, -1 ); break; } } return $arg; }, $argv ); } /** * Locale-independent version of basename() * * @access public * * @param string $path * @param string $suffix * @return string */ function basename( $path, $suffix = '' ) { // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.urlencode_urlencode -- Format required by wordpress.org API. return urldecode( \basename( str_replace( [ '%2F', '%5C' ], '/', urlencode( $path ) ), $suffix ) ); } /** * Checks whether the output of the current script is a TTY or a pipe / redirect * * Returns true if STDOUT output is being redirected to a pipe or a file; false is * output is being sent directly to the terminal. * * If an env variable SHELL_PIPE exists, returned result depends on its * value. Strings like 1, 0, yes, no, that validate to booleans are accepted. * * To enable ASCII formatting even when the shell is piped, use the * ENV variable SHELL_PIPE=0. * * @access public * * @return bool */ function isPiped() { // phpcs:ignore WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid -- Renaming would break BC. $shell_pipe = getenv( 'SHELL_PIPE' ); if ( false !== $shell_pipe ) { return filter_var( $shell_pipe, FILTER_VALIDATE_BOOLEAN ); } return function_exists( 'posix_isatty' ) && ! posix_isatty( STDOUT ); } /** * Expand within paths to their matching paths. * * Has no effect on paths which do not use glob patterns. * * @param string|array $paths Single path as a string, or an array of paths. * @param int $flags Optional. Flags to pass to glob. Defaults to GLOB_BRACE. * @return array Expanded paths. */ function expand_globs( $paths, $flags = 'default' ) { // Compatibility for systems without GLOB_BRACE. $glob_func = 'glob'; if ( 'default' === $flags ) { if ( ! defined( 'GLOB_BRACE' ) || getenv( 'WP_CLI_TEST_EXPAND_GLOBS_NO_GLOB_BRACE' ) ) { $glob_func = 'WP_CLI\Utils\glob_brace'; } else { $flags = GLOB_BRACE; } } $expanded = []; foreach ( (array) $paths as $path ) { $matching = [ $path ]; if ( preg_match( '/[' . preg_quote( '*?[]{}!', '/' ) . ']/', $path ) ) { $matching = $glob_func( $path, $flags ) ?: []; } $expanded = array_merge( $expanded, $matching ); } return array_values( array_unique( $expanded ) ); } /** * Simulate a `glob()` with the `GLOB_BRACE` flag set. For systems (eg Alpine Linux) built against a libc library (eg https://www.musl-libc.org/) that lacks it. * Copied and adapted from Zend Framework's `Glob::fallbackGlob()` and Glob::nextBraceSub()`. * * Zend Framework (https://framework.zend.com/) * * @link https://github.com/zendframework/zf2 for the canonical source repository * @copyright Copyright (c) 2005-2015 Zend Technologies USA Inc. (https://www.zend.com) * @license https://framework.zend.com/license/new-bsd New BSD License * * @param string $pattern Filename pattern. * @param void $dummy_flags Not used. * @return array Array of paths. */ function glob_brace( $pattern, $dummy_flags = null ) { static $next_brace_sub; if ( ! $next_brace_sub ) { // Find the end of the subpattern in a brace expression. $next_brace_sub = function ( $pattern, $current ) { $length = strlen( $pattern ); $depth = 0; while ( $current < $length ) { if ( '\\' === $pattern[ $current ] ) { if ( ++$current === $length ) { break; } $current++; } else { if ( ( '}' === $pattern[ $current ] && 0 === $depth-- ) || ( ',' === $pattern[ $current ] && 0 === $depth ) ) { break; } if ( '{' === $pattern[ $current++ ] ) { $depth++; } } } return $current < $length ? $current : null; }; } $length = strlen( $pattern ); // Find first opening brace. for ( $begin = 0; $begin < $length; $begin++ ) { if ( '\\' === $pattern[ $begin ] ) { $begin++; } elseif ( '{' === $pattern[ $begin ] ) { break; } } // Find comma or matching closing brace. $next = $next_brace_sub( $pattern, $begin + 1 ); if ( null === $next ) { return glob( $pattern ); } $rest = $next; // Point `$rest` to matching closing brace. while ( '}' !== $pattern[ $rest ] ) { $rest = $next_brace_sub( $pattern, $rest + 1 ); if ( null === $rest ) { return glob( $pattern ); } } $paths = []; $p = $begin + 1; // For each comma-separated subpattern. do { $subpattern = substr( $pattern, 0, $begin ) . substr( $pattern, $p, $next - $p ) . substr( $pattern, $rest + 1 ); $result = glob_brace( $subpattern ); if ( ! empty( $result ) ) { $paths = array_merge( $paths, $result ); } if ( '}' === $pattern[ $next ] ) { break; } $p = $next + 1; $next = $next_brace_sub( $pattern, $p ); } while ( null !== $next ); return array_values( array_unique( $paths ) ); } /** * Get the closest suggestion for a mis-typed target term amongst a list of * options. * * Uses the Levenshtein algorithm to calculate the relative "distance" between * terms. * * If the "distance" to the closest term is higher than the threshold, an empty * string is returned. * * @param string $target Target term to get a suggestion for. * @param array $options Array with possible options. * @param int $threshold Threshold above which to return an empty string. * @return string */ function get_suggestion( $target, array $options, $threshold = 2 ) { $suggestion_map = [ 'add' => 'create', 'check' => 'check-update', 'capability' => 'cap', 'clear' => 'flush', 'decrement' => 'decr', 'del' => 'delete', 'directory' => 'dir', 'exec' => 'eval', 'exec-file' => 'eval-file', 'increment' => 'incr', 'language' => 'locale', 'lang' => 'locale', 'new' => 'create', 'number' => 'count', 'remove' => 'delete', 'regen' => 'regenerate', 'rep' => 'replace', 'repl' => 'replace', 'trash' => 'delete', 'v' => 'version', ]; if ( array_key_exists( $target, $suggestion_map ) && in_array( $suggestion_map[ $target ], $options, true ) ) { return $suggestion_map[ $target ]; } if ( empty( $options ) ) { return ''; } foreach ( $options as $option ) { $distance = levenshtein( $option, $target ); $levenshtein[ $option ] = $distance; } // Sort known command strings by distance to user entry. asort( $levenshtein ); // Fetch the closest command string. reset( $levenshtein ); $suggestion = key( $levenshtein ); // Only return a suggestion if below a given threshold. return $levenshtein[ $suggestion ] <= $threshold && $suggestion !== $target ? (string) $suggestion : ''; } /** * Get a Phar-safe version of a path. * * For paths inside a Phar, this strips the outer filesystem's location to * reduce the path to what it needs to be within the Phar archive. * * Use the __FILE__ or __DIR__ constants as a starting point. * * @param string $path An absolute path that might be within a Phar. * @return string A Phar-safe version of the path. */ function phar_safe_path( $path ) { if ( ! inside_phar() ) { return $path; } return str_replace( PHAR_STREAM_PREFIX . WP_CLI_PHAR_PATH . '/', PHAR_STREAM_PREFIX, $path ); } /** * Maybe prefix command string with "/usr/bin/env". * Removes (if there) if Windows, adds (if not there) if not. * * @param string $command * @return string */ function force_env_on_nix_systems( $command ) { $env_prefix = '/usr/bin/env '; $env_prefix_len = strlen( $env_prefix ); if ( is_windows() ) { if ( 0 === strncmp( $command, $env_prefix, $env_prefix_len ) ) { $command = substr( $command, $env_prefix_len ); } } elseif ( 0 !== strncmp( $command, $env_prefix, $env_prefix_len ) ) { $command = $env_prefix . $command; } return $command; } /** * Check that `proc_open()` and `proc_close()` haven't been disabled. * * @param string $context Optional. If set will appear in error message. Default null. * @param bool $return Optional. If set will return false rather than error out. Default false. * @return bool */ function check_proc_available( $context = null, $return = false ) { if ( ! function_exists( 'proc_open' ) || ! function_exists( 'proc_close' ) ) { if ( $return ) { return false; } $msg = 'The PHP functions `proc_open()` and/or `proc_close()` are disabled. Please check your PHP ini directive `disable_functions` or suhosin settings.'; if ( $context ) { WP_CLI::error( sprintf( "Cannot do '%s': %s", $context, $msg ) ); } else { WP_CLI::error( $msg ); } } return true; } /** * Returns past tense of verb, with limited accuracy. Only regular verbs catered for, apart from "reset". * * @param string $verb Verb to return past tense of. * @return string */ function past_tense_verb( $verb ) { static $irregular = [ 'reset' => 'reset', ]; if ( isset( $irregular[ $verb ] ) ) { return $irregular[ $verb ]; } $last = substr( $verb, -1 ); if ( 'e' === $last ) { $verb = substr( $verb, 0, -1 ); } elseif ( 'y' === $last && ! preg_match( '/[aeiou]y$/', $verb ) ) { $verb = substr( $verb, 0, -1 ) . 'i'; } elseif ( preg_match( '/^[^aeiou]*[aeiou][^aeiouhwxy]$/', $verb ) ) { // Rule of thumb that most (all?) one-voweled regular verbs ending in vowel + consonant (excluding "h", "w", "x", "y") double their final consonant - misses many cases (eg "submit"). $verb .= $last; } return $verb . 'ed'; } /** * Get the path to the PHP binary used when executing WP-CLI. * * Environment values permit specific binaries to be indicated. * * @access public * @category System * * @return string */ function get_php_binary() { $wp_cli_php_used = getenv( 'WP_CLI_PHP_USED' ); if ( false !== $wp_cli_php_used ) { return $wp_cli_php_used; } $wp_cli_php = getenv( 'WP_CLI_PHP' ); if ( false !== $wp_cli_php ) { return $wp_cli_php; } return PHP_BINARY; } /** * Windows compatible `proc_open()`. * Works around bug in PHP, and also deals with *nix-like `ENV_VAR=blah cmd` environment variable prefixes. * * @access public * * @param string $cmd Command to execute. * @param array $descriptorspec Indexed array of descriptor numbers and their values. * @param array &$pipes Indexed array of file pointers that correspond to PHP's end of any pipes that are created. * @param string $cwd Initial working directory for the command. * @param array $env Array of environment variables. * @param array $other_options Array of additional options (Windows only). * @return resource Command stripped of any environment variable settings. */ function proc_open_compat( $cmd, $descriptorspec, &$pipes, $cwd = null, $env = null, $other_options = null ) { if ( is_windows() ) { // Need to encompass the whole command in double quotes - PHP bug https://bugs.php.net/bug.php?id=49139 $cmd = '"' . _proc_open_compat_win_env( $cmd, $env ) . '"'; } return proc_open( $cmd, $descriptorspec, $pipes, $cwd, $env, $other_options ); } /** * For use by `proc_open_compat()` only. Separated out for ease of testing. Windows only. * Turns *nix-like `ENV_VAR=blah command` environment variable prefixes into stripped `cmd` with prefixed environment variables added to passed in environment array. * * @access private * * @param string $cmd Command to execute. * @param array &$env Array of existing environment variables. Will be modified if any settings in command. * @return string Command stripped of any environment variable settings. */ function _proc_open_compat_win_env( $cmd, &$env ) { if ( false !== strpos( $cmd, '=' ) ) { while ( preg_match( '/^([A-Za-z_][A-Za-z0-9_]*)=("[^"]*"|[^ ]*) /', $cmd, $matches ) ) { $cmd = substr( $cmd, strlen( $matches[0] ) ); if ( null === $env ) { $env = []; } $env[ $matches[1] ] = isset( $matches[2][0] ) && '"' === $matches[2][0] ? substr( $matches[2], 1, -1 ) : $matches[2]; } } return $cmd; } /** * First half of escaping for LIKE special characters % and _ before preparing for MySQL. * * Use this only before wpdb::prepare() or esc_sql(). Reversing the order is very bad for security. * * Copied from core "wp-includes/wp-db.php". Avoids dependency on WP 4.4 wpdb. * * @access public * * @param string $text The raw text to be escaped. The input typed by the user should have no * extra or deleted slashes. * @return string Text in the form of a LIKE phrase. The output is not SQL safe. Call $wpdb::prepare() * or real_escape next. */ function esc_like( $text ) { return addcslashes( $text, '_%\\' ); } /** * Escapes (backticks) MySQL identifiers (aka schema object names) - i.e. column names, table names, and database/index/alias/view etc names. * See https://dev.mysql.com/doc/refman/5.5/en/identifiers.html * * @param string|array $idents A single identifier or an array of identifiers. * @return string|array An escaped string if given a string, or an array of escaped strings if given an array of strings. */ function esc_sql_ident( $idents ) { $backtick = static function ( $v ) { // Escape any backticks in the identifier by doubling. return '`' . str_replace( '`', '``', $v ) . '`'; }; if ( is_string( $idents ) ) { return $backtick( $idents ); } return array_map( $backtick, $idents ); } /** * Check whether a given string is a valid JSON representation. * * @param string $argument String to evaluate. * @param bool $ignore_scalars Optional. Whether to ignore scalar values. * Defaults to true. * @return bool Whether the provided string is a valid JSON representation. */ function is_json( $argument, $ignore_scalars = true ) { if ( ! is_string( $argument ) || '' === $argument ) { return false; } if ( $ignore_scalars && ! in_array( $argument[0], [ '{', '[' ], true ) ) { return false; } json_decode( $argument, $assoc = true ); return json_last_error() === JSON_ERROR_NONE; } /** * Parse known shell arrays included in the $assoc_args array. * * @param array $assoc_args Associative array of arguments. * @param array $array_arguments Array of argument keys that should receive an * array through the shell. * @return array */ function parse_shell_arrays( $assoc_args, $array_arguments ) { if ( empty( $assoc_args ) || empty( $array_arguments ) ) { return $assoc_args; } foreach ( $array_arguments as $key ) { if ( array_key_exists( $key, $assoc_args ) && is_json( $assoc_args[ $key ] ) ) { $assoc_args[ $key ] = json_decode( $assoc_args[ $key ], $assoc = true ); } } return $assoc_args; } /** * Describe a callable as a string. * * @param callable $callable The callable to describe. * @return string String description of the callable. */ function describe_callable( $callable ) { try { if ( $callable instanceof Closure ) { $reflection = new ReflectionFunction( $callable ); return "Closure in file {$reflection->getFileName()} at line {$reflection->getStartLine()}"; } if ( is_array( $callable ) ) { if ( is_object( $callable[0] ) ) { return sprintf( '%s->%s()', get_class( $callable[0] ), $callable[1] ); } return sprintf( '%s::%s()', $callable[0], $callable[1] ); } return gettype( $callable ); } catch ( Exception $exception ) { return 'Callable of unknown type'; } } /** * Checks if the given class and method pair is a valid callable. * * This accommodates changes to `is_callable()` in PHP 8 that mean an array of a * classname and instance method is no longer callable. * * @param array $pair The class and method pair to check. * @return bool */ function is_valid_class_and_method_pair( $pair ) { if ( ! is_array( $pair ) || 2 !== count( $pair ) ) { return false; } if ( ! is_string( $pair[0] ) || ! is_string( $pair[1] ) ) { return false; } if ( ! class_exists( $pair[0] ) ) { return false; } if ( ! method_exists( $pair[0], $pair[1] ) ) { return false; } return true; } /** * Pluralizes a noun in a grammatically correct way. * * @param string $noun Noun to be pluralized. Needs to be in singular form. * @param int|null $count Optional. Count of the nouns, to decide whether to * pluralize. Will pluralize unconditionally if none * provided. * @return string Pluralized noun. */ function pluralize( $noun, $count = null ) { if ( 1 === $count ) { return $noun; } return Inflector::pluralize( $noun ); } /** * Get the path to the mysql binary. * * @return string Path to the mysql binary, or an empty string if not found. */ function get_mysql_binary_path() { static $path = null; if ( null === $path ) { $result = Process::create( '/usr/bin/env which mysql', null, null )->run(); if ( 0 !== $result->return_code ) { $path = ''; } else { $path = trim( $result->stdout ); } } return $path; } /** * Get the version of the MySQL database. * * @return string Version of the MySQL database, or an empty string if not * found. */ function get_mysql_version() { static $version = null; if ( null === $version ) { $result = Process::create( '/usr/bin/env mysql --version', null, null )->run(); if ( 0 !== $result->return_code ) { $version = ''; } else { $version = trim( $result->stdout ); } } return $version; } /** * Get the SQL modes of the MySQL session. * * @return string[] Array of SQL modes, or an empty array if they couldn't be * read. */ function get_sql_modes() { static $sql_modes = null; if ( null === $sql_modes ) { $result = Process::create( '/usr/bin/env mysql --no-auto-rehash --batch --skip-column-names --execute="SELECT @@SESSION.sql_mode"', null, null )->run(); if ( 0 !== $result->return_code ) { $sql_modes = []; } else { $sql_modes = array_filter( array_map( 'trim', preg_split( "/\r\n|\n|\r/", $result->stdout ) ) ); } } return $sql_modes; } = 8 && ! function_exists( 'ini_set' ) ) { function ini_set( $option, $value ) { return false; } } get_col( "SHOW TABLES LIKE '%_options'" ); $found_prefixes = []; if ( count( $tables ) ) { foreach ( $tables as $table ) { $maybe_prefix = substr( $table, 0, - strlen( 'options' ) ); if ( $maybe_prefix !== $table_prefix ) { $found_prefixes[] = $maybe_prefix; } } } if ( count( $found_prefixes ) ) { $prefix_list = implode( ', ', $found_prefixes ); $install_label = count( $found_prefixes ) > 1 ? 'installations' : 'installation'; WP_CLI::error( "The site you have requested is not installed.\n" . "Your table prefix is '{$table_prefix}'. Found {$install_label} with table prefix: {$prefix_list}.\n" . 'Or, run `wp core install` to create database tables.' ); } else { WP_CLI::error( "The site you have requested is not installed.\n" . 'Run `wp core install` to create database tables.' ); } } } // phpcs:disable WordPress.PHP.IniSet -- Intentional & correct usage. function wp_debug_mode() { if ( WP_CLI::get_config( 'debug' ) ) { if ( ! defined( 'WP_DEBUG' ) ) { define( 'WP_DEBUG', true ); } error_reporting( E_ALL & ~E_DEPRECATED & ~E_STRICT ); } else { if ( WP_DEBUG ) { error_reporting( E_ALL ); if ( WP_DEBUG_DISPLAY ) { ini_set( 'display_errors', 1 ); } elseif ( null !== WP_DEBUG_DISPLAY ) { ini_set( 'display_errors', 0 ); } if ( WP_DEBUG_LOG ) { ini_set( 'log_errors', 1 ); ini_set( 'error_log', WP_CONTENT_DIR . '/debug.log' ); } } else { error_reporting( E_CORE_ERROR | E_CORE_WARNING | E_COMPILE_ERROR | E_ERROR | E_WARNING | E_PARSE | E_USER_ERROR | E_USER_WARNING | E_RECOVERABLE_ERROR ); } if ( defined( 'XMLRPC_REQUEST' ) || defined( 'REST_REQUEST' ) || ( defined( 'DOING_AJAX' ) && DOING_AJAX ) ) { ini_set( 'display_errors', 0 ); } } // XDebug already sends errors to STDERR. ini_set( 'display_errors', function_exists( 'xdebug_debug_zval' ) ? false : 'STDERR' ); } // phpcs:enable function replace_wp_die_handler() { \remove_filter( 'wp_die_handler', '_default_wp_die_handler' ); \add_filter( 'wp_die_handler', function() { return __NAMESPACE__ . '\\wp_die_handler'; } ); } function wp_die_handler( $message ) { if ( $message instanceof \WP_Error ) { $message = $message->get_error_message(); } $message = wp_clean_error_message( $message ); WP_CLI::error( $message ); } /** * Clean HTML error message so suitable for text display. */ function wp_clean_error_message( $message ) { $original_message = trim( $message ); $message = $original_message; if ( preg_match( '|^\

(.+?)

|', $original_message, $matches ) ) { $message = $matches[1] . '.'; } if ( preg_match( '|\

(.+?)

|', $original_message, $matches ) ) { $message .= ' ' . $matches[1]; } $search_replace = [ '' => '`', '' => '`', ]; $message = str_replace( array_keys( $search_replace ), array_values( $search_replace ), $message ); $message = namespace\strip_tags( $message ); $message = html_entity_decode( $message, ENT_COMPAT, 'UTF-8' ); return $message; } function wp_redirect_handler( $url ) { WP_CLI::warning( 'Some code is trying to do a URL redirect. Backtrace:' ); ob_start(); debug_print_backtrace(); fwrite( STDERR, ob_get_clean() ); return $url; } function maybe_require( $since, $path ) { if ( wp_version_compare( $since, '>=' ) ) { require $path; } } function get_upgrader( $class, $insecure = false ) { if ( ! class_exists( '\WP_Upgrader' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; } $uses_insecure_flag = false; $reflection = new ReflectionClass( $class ); if ( $reflection ) { $constructor = $reflection->getConstructor(); if ( $constructor ) { $arguments = $constructor->getParameters(); /** @var ReflectionParameter $argument */ foreach ( $arguments as $argument ) { if ( 'insecure' === $argument->name ) { $uses_insecure_flag = true; break; } } } } if ( $uses_insecure_flag ) { return new $class( new UpgraderSkin(), $insecure ); } else { return new $class( new UpgraderSkin() ); } } /** * Converts a plugin basename back into a friendly slug. */ function get_plugin_name( $basename ) { if ( false === strpos( $basename, '/' ) ) { $name = basename( $basename, '.php' ); } else { $name = dirname( $basename ); } return $name; } function is_plugin_skipped( $file ) { $name = get_plugin_name( str_replace( WP_PLUGIN_DIR . '/', '', $file ) ); $skipped_plugins = WP_CLI::get_runner()->config['skip-plugins']; if ( true === $skipped_plugins ) { return true; } if ( ! is_array( $skipped_plugins ) ) { $skipped_plugins = explode( ',', $skipped_plugins ); } return in_array( $name, array_filter( $skipped_plugins ), true ); } function get_theme_name( $path ) { return basename( $path ); } function is_theme_skipped( $path ) { $name = get_theme_name( $path ); $skipped_themes = WP_CLI::get_runner()->config['skip-themes']; if ( true === $skipped_themes ) { return true; } if ( ! is_array( $skipped_themes ) ) { $skipped_themes = explode( ',', $skipped_themes ); } return in_array( $name, array_filter( $skipped_themes ), true ); } /** * Register the sidebar for unused widgets. * Core does this in /wp-admin/widgets.php, which isn't helpful. */ function wp_register_unused_sidebar() { register_sidebar( [ 'name' => __( 'Inactive Widgets' ), 'id' => 'wp_inactive_widgets', 'class' => 'inactive-sidebar', 'description' => __( 'Drag widgets here to remove them from the sidebar but keep their settings.' ), 'before_widget' => '', 'after_widget' => '', 'before_title' => '', 'after_title' => '', ] ); } /** * Attempts to determine which object cache is being used. * * Note that the guesses made by this function are based on the WP_Object_Cache classes * that define the 3rd party object cache extension. Changes to those classes could render * problems with this function's ability to determine which object cache is being used. * * @return string */ function wp_get_cache_type() { global $_wp_using_ext_object_cache, $wp_object_cache; if ( ! empty( $_wp_using_ext_object_cache ) ) { // Test for Memcached PECL extension memcached object cache (https://github.com/tollmanz/wordpress-memcached-backend) if ( isset( $wp_object_cache->m ) && $wp_object_cache->m instanceof \Memcached ) { $message = 'Memcached'; // Test for Memcache PECL extension memcached object cache (https://wordpress.org/extend/plugins/memcached/) } elseif ( isset( $wp_object_cache->mc ) ) { $is_memcache = true; foreach ( $wp_object_cache->mc as $bucket ) { if ( ! $bucket instanceof \Memcache && ! $bucket instanceof \Memcached ) { $is_memcache = false; } } if ( $is_memcache ) { $message = 'Memcache'; } // Test for Xcache object cache (https://plugins.svn.wordpress.org/xcache/trunk/object-cache.php) } elseif ( $wp_object_cache instanceof \XCache_Object_Cache ) { $message = 'Xcache'; // Test for WinCache object cache (https://wordpress.org/extend/plugins/wincache-object-cache-backend/) } elseif ( class_exists( 'WinCache_Object_Cache' ) ) { $message = 'WinCache'; // Test for APC object cache (https://wordpress.org/extend/plugins/apc/) } elseif ( class_exists( 'APC_Object_Cache' ) ) { $message = 'APC'; // Test for WP Redis (https://wordpress.org/plugins/wp-redis/) } elseif ( isset( $wp_object_cache->redis ) && $wp_object_cache->redis instanceof \Redis ) { $message = 'Redis'; // Test for Redis Object Cache (https://wordpress.org/plugins/redis-cache/) } elseif ( method_exists( $wp_object_cache, 'redis_instance' ) && method_exists( $wp_object_cache, 'redis_status' ) ) { $message = 'Redis'; // Test for WP LCache Object cache (https://github.com/lcache/wp-lcache) } elseif ( isset( $wp_object_cache->lcache ) && $wp_object_cache->lcache instanceof \LCache\Integrated ) { $message = 'WP LCache'; } elseif ( function_exists( 'w3_instance' ) ) { $config = w3_instance( 'W3_Config' ); $message = 'Unknown'; if ( $config->get_boolean( 'objectcache.enabled' ) ) { $message = 'W3TC ' . $config->get_string( 'objectcache.engine' ); } } else { $message = 'Unknown'; } } else { $message = 'Default'; } return $message; } /** * Clear WordPress internal object caches. * * In long-running scripts, the internal caches on `$wp_object_cache` and `$wpdb` * can grow to consume gigabytes of memory. Periodically calling this utility * can help with memory management. * * @access public * @category System * @deprecated 1.5.0 */ function wp_clear_object_cache() { global $wpdb, $wp_object_cache; $wpdb->queries = []; if ( ! is_object( $wp_object_cache ) ) { return; } // The following are Memcached (Redux) plugin specific (see https://core.trac.wordpress.org/ticket/31463). if ( isset( $wp_object_cache->group_ops ) ) { $wp_object_cache->group_ops = []; } if ( isset( $wp_object_cache->stats ) ) { $wp_object_cache->stats = []; } if ( isset( $wp_object_cache->memcache_debug ) ) { $wp_object_cache->memcache_debug = []; } // Used by `WP_Object_Cache` also. if ( isset( $wp_object_cache->cache ) ) { $wp_object_cache->cache = []; } } /** * Get a set of tables in the database. * * Interprets common command-line options into a resolved set of table names. * * @param array $args Provided table names, or tables with wildcards. * @param array $assoc_args Optional flags for groups of tables (e.g. --network) * @return array */ function wp_get_table_names( $args, $assoc_args = [] ) { global $wpdb; $tables = []; // Abort if incompatible args supplied. if ( get_flag_value( $assoc_args, 'base-tables-only' ) && get_flag_value( $assoc_args, 'views-only' ) ) { WP_CLI::error( 'You cannot supply --base-tables-only and --views-only at the same time.' ); } // Pre-load tables SQL query with Views restriction if needed. if ( get_flag_value( $assoc_args, 'base-tables-only' ) ) { $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "BASE TABLE"'; } elseif ( get_flag_value( $assoc_args, 'views-only' ) ) { $tables_sql = 'SHOW FULL TABLES WHERE Table_Type = "VIEW"'; } if ( get_flag_value( $assoc_args, 'all-tables' ) ) { if ( empty( $tables_sql ) ) { $tables_sql = 'SHOW TABLES'; } // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Query is safe, see above. $tables = $wpdb->get_col( $tables_sql, 0 ); } elseif ( get_flag_value( $assoc_args, 'all-tables-with-prefix' ) ) { if ( empty( $tables_sql ) ) { $tables_sql = $wpdb->prepare( 'SHOW TABLES LIKE %s', esc_like( $wpdb->get_blog_prefix() ) . '%' ); } else { $tables_sql .= sprintf( " AND %s LIKE '%s'", esc_sql_ident( 'Tables_in_' . $wpdb->dbname ), esc_like( $wpdb->get_blog_prefix() ) . '%' ); } // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Query is prepared, see above. $tables = $wpdb->get_col( $tables_sql, 0 ); } else { $scope = get_flag_value( $assoc_args, 'scope', 'all' ); // Note: BC change 1.5.0, taking scope into consideration for network also. if ( get_flag_value( $assoc_args, 'network' ) && is_multisite() ) { $network_global_scope = in_array( $scope, [ 'all', 'global', 'ms_global' ], true ) ? ( 'all' === $scope ? 'global' : $scope ) : ''; $wp_tables = array_values( $wpdb->tables( $network_global_scope ) ); if ( in_array( $scope, [ 'all', 'blog' ], true ) ) { // Do directly for compat with old WP versions. Note: private, deleted, archived sites are not excluded. $blog_ids = $wpdb->get_col( "SELECT blog_id FROM $wpdb->blogs WHERE site_id = $wpdb->siteid" ); foreach ( $blog_ids as $blog_id ) { $wp_tables = array_merge( $wp_tables, array_values( $wpdb->tables( 'blog', true /*prefix*/, $blog_id ) ) ); } } } else { $wp_tables = array_values( $wpdb->tables( $scope ) ); } if ( ! global_terms_enabled() ) { // Only include sitecategories when it's actually enabled. $wp_tables = array_values( array_diff( $wp_tables, [ $wpdb->sitecategories ] ) ); } // Note: BC change 1.5.0, tables are sorted (via TABLES view). // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- uses esc_sql_ident() and $wpdb->_escape(). $tables = $wpdb->get_col( sprintf( "SHOW TABLES WHERE %s IN ('%s')", esc_sql_ident( 'Tables_in_' . $wpdb->dbname ), implode( "', '", $wpdb->_escape( $wp_tables ) ) ) ); if ( get_flag_value( $assoc_args, 'base-tables-only' ) || get_flag_value( $assoc_args, 'views-only' ) ) { // Apply Views restriction args if needed. // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Query is prepared, see above. $views_query_tables = $wpdb->get_col( $tables_sql, 0 ); $tables = array_intersect( $tables, $views_query_tables ); } } // Filter by `$args`. if ( $args ) { $args_tables = []; foreach ( $args as $arg ) { if ( false !== strpos( $arg, '*' ) || false !== strpos( $arg, '?' ) ) { $args_tables = array_merge( $args_tables, array_filter( $tables, function ( $v ) use ( $arg ) { return fnmatch( $arg, $v ); } ) ); } else { $args_tables[] = $arg; } } $args_tables = array_values( array_unique( $args_tables ) ); $tables = array_values( array_intersect( $tables, $args_tables ) ); if ( empty( $tables ) ) { WP_CLI::error( sprintf( "Couldn't find any tables matching: %s", implode( ' ', $args ) ) ); } } return $tables; } /** * Failsafe use of the WordPress wp_strip_all_tags() function. * * Automatically falls back to strip_tags() function if the WP function is not * available. * * @param string $string String to strip the tags from. * @return string String devoid of tags. */ function strip_tags( $string ) { if ( function_exists( 'wp_strip_all_tags' ) ) { return \wp_strip_all_tags( $string ); } $string = preg_replace( '@<(script|style)[^>]*?>.*?@si', '', $string ); // phpcs:ignore WordPress.WP.AlternativeFunctions.strip_tags_strip_tags -- Fallback. $string = \strip_tags( $string ); return trim( $string ); } */ class SymfonyClassCollectionLoader { private static $loaded; const HEADER = <<<'EOS' \s*$/'), '', file_get_contents($r->getFileName())); } $cache = $cacheDir . '/' . $name . $extension; $header = sprintf(self::HEADER, strftime('%Y')); self::writeCacheFile($cache, $header . substr(self::stripComments('fileName = $fileName; $this->statProps = $statProps; } /** * Get the Source key (used to generate the compiled class name). * * @throws RuntimeException when a source file cannot be read * * @return string */ public function getKey() { $chunks = array( 'fileName' => $this->fileName, ); if (!empty($this->statProps)) { if (!isset($this->stat)) { $this->stat = @stat($this->fileName); } if ($this->stat === false) { throw new RuntimeException(sprintf('Failed to read source file "%s".', $this->fileName)); } foreach ($this->statProps as $prop) { $chunks[$prop] = $this->stat[$prop]; } } return json_encode($chunks); } /** * Get the template Source. * * @return string */ public function getSource() { return file_get_contents($this->fileName); } } log( Mustache_Logger::WARNING, 'Template cache disabled, evaluating "{className}" class at runtime', array('className' => $key) ); eval('?>' . $value); } } cache($className, $compiledSource); * * The FilesystemCache benefits from any opcode caching that may be setup in your environment. So do that, k? */ class Mustache_Cache_FilesystemCache extends Mustache_Cache_AbstractCache { private $baseDir; private $fileMode; /** * Filesystem cache constructor. * * @param string $baseDir Directory for compiled templates * @param int $fileMode Override default permissions for cache files. Defaults to using the system-defined umask */ public function __construct($baseDir, $fileMode = null) { $this->baseDir = $baseDir; $this->fileMode = $fileMode; } /** * Load the class from cache using `require_once`. * * @param string $key * * @return bool */ public function load($key) { $fileName = $this->getCacheFilename($key); if (!is_file($fileName)) { return false; } require_once $fileName; return true; } /** * Cache and load the compiled class. * * @param string $key * @param string $value */ public function cache($key, $value) { $fileName = $this->getCacheFilename($key); $this->log( Mustache_Logger::DEBUG, 'Writing to template cache: "{fileName}"', array('fileName' => $fileName) ); $this->writeFile($fileName, $value); $this->load($key); } /** * Build the cache filename. * Subclasses should override for custom cache directory structures. * * @param string $name * * @return string */ protected function getCacheFilename($name) { return sprintf('%s/%s.php', $this->baseDir, $name); } /** * Create cache directory. * * @throws Mustache_Exception_RuntimeException If unable to create directory * * @param string $fileName * * @return string */ private function buildDirectoryForFilename($fileName) { $dirName = dirname($fileName); if (!is_dir($dirName)) { $this->log( Mustache_Logger::INFO, 'Creating Mustache template cache directory: "{dirName}"', array('dirName' => $dirName) ); @mkdir($dirName, 0777, true); // @codeCoverageIgnoreStart if (!is_dir($dirName)) { throw new Mustache_Exception_RuntimeException(sprintf('Failed to create cache directory "%s".', $dirName)); } // @codeCoverageIgnoreEnd } return $dirName; } /** * Write cache file. * * @throws Mustache_Exception_RuntimeException If unable to write file * * @param string $fileName * @param string $value */ private function writeFile($fileName, $value) { $dirName = $this->buildDirectoryForFilename($fileName); $this->log( Mustache_Logger::DEBUG, 'Caching compiled template to "{fileName}"', array('fileName' => $fileName) ); $tempFile = tempnam($dirName, basename($fileName)); if (false !== @file_put_contents($tempFile, $value)) { if (@rename($tempFile, $fileName)) { $mode = isset($this->fileMode) ? $this->fileMode : (0666 & ~umask()); @chmod($fileName, $mode); return; } // @codeCoverageIgnoreStart $this->log( Mustache_Logger::ERROR, 'Unable to rename Mustache temp cache file: "{tempName}" -> "{fileName}"', array('tempName' => $tempFile, 'fileName' => $fileName) ); // @codeCoverageIgnoreEnd } // @codeCoverageIgnoreStart throw new Mustache_Exception_RuntimeException(sprintf('Failed to write cache file "%s".', $fileName)); // @codeCoverageIgnoreEnd } } logger; } /** * Set a logger instance. * * @param Mustache_Logger|Psr\Log\LoggerInterface $logger */ public function setLogger($logger = null) { if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); } $this->logger = $logger; } /** * Add a log record if logging is enabled. * * @param int $level The logging level * @param string $message The log message * @param array $context The log context */ protected function log($level, $message, array $context = array()) { if (isset($this->logger)) { $this->logger->log($level, $message, $context); } } } log(Mustache_Logger::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param array $context */ public function alert($message, array $context = array()) { $this->log(Mustache_Logger::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param array $context */ public function critical($message, array $context = array()) { $this->log(Mustache_Logger::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param array $context */ public function error($message, array $context = array()) { $this->log(Mustache_Logger::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param array $context */ public function warning($message, array $context = array()) { $this->log(Mustache_Logger::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param array $context */ public function notice($message, array $context = array()) { $this->log(Mustache_Logger::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param array $context */ public function info($message, array $context = array()) { $this->log(Mustache_Logger::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param array $context */ public function debug($message, array $context = array()) { $this->log(Mustache_Logger::DEBUG, $message, $context); } } 100, self::INFO => 200, self::NOTICE => 250, self::WARNING => 300, self::ERROR => 400, self::CRITICAL => 500, self::ALERT => 550, self::EMERGENCY => 600, ); protected $level; protected $stream = null; protected $url = null; /** * @throws InvalidArgumentException if the logging level is unknown * * @param resource|string $stream Resource instance or URL * @param int $level The minimum logging level at which this handler will be triggered */ public function __construct($stream, $level = Mustache_Logger::ERROR) { $this->setLevel($level); if (is_resource($stream)) { $this->stream = $stream; } else { $this->url = $stream; } } /** * Close stream resources. */ public function __destruct() { if (is_resource($this->stream)) { fclose($this->stream); } } /** * Set the minimum logging level. * * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown * * @param int $level The minimum logging level which will be written */ public function setLevel($level) { if (!array_key_exists($level, self::$levels)) { throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); } $this->level = $level; } /** * Get the current minimum logging level. * * @return int */ public function getLevel() { return $this->level; } /** * Logs with an arbitrary level. * * @throws Mustache_Exception_InvalidArgumentException if the logging level is unknown * * @param mixed $level * @param string $message * @param array $context */ public function log($level, $message, array $context = array()) { if (!array_key_exists($level, self::$levels)) { throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected logging level: %s', $level)); } if (self::$levels[$level] >= self::$levels[$this->level]) { $this->writeLog($level, $message, $context); } } /** * Write a record to the log. * * @throws Mustache_Exception_LogicException If neither a stream resource nor url is present * @throws Mustache_Exception_RuntimeException If the stream url cannot be opened * * @param int $level The logging level * @param string $message The log message * @param array $context The log context */ protected function writeLog($level, $message, array $context = array()) { if (!is_resource($this->stream)) { if (!isset($this->url)) { throw new Mustache_Exception_LogicException('Missing stream url, the stream can not be opened. This may be caused by a premature call to close().'); } $this->stream = fopen($this->url, 'a'); if (!is_resource($this->stream)) { // @codeCoverageIgnoreStart throw new Mustache_Exception_RuntimeException(sprintf('The stream or file "%s" could not be opened.', $this->url)); // @codeCoverageIgnoreEnd } } fwrite($this->stream, self::formatLine($level, $message, $context)); } /** * Gets the name of the logging level. * * @throws InvalidArgumentException if the logging level is unknown * * @param int $level * * @return string */ protected static function getLevelName($level) { return strtoupper($level); } /** * Format a log line for output. * * @param int $level The logging level * @param string $message The log message * @param array $context The log context * * @return string */ protected static function formatLine($level, $message, array $context = array()) { return sprintf( "%s: %s\n", self::getLevelName($level), self::interpolateMessage($message, $context) ); } /** * Interpolate context values into the message placeholders. * * @param string $message * @param array $context * * @return string */ protected static function interpolateMessage($message, array $context = array()) { if (strpos($message, '{') === false) { return $message; } // build a replacement array with braces around the context keys $replace = array(); foreach ($context as $key => $val) { $replace['{' . $key . '}'] = $val; } // interpolate replacement values into the the message and return return strtr($message, $replace); } } mustache = $mustache; } /** * Mustache Template instances can be treated as a function and rendered by simply calling them. * * $m = new Mustache_Engine; * $tpl = $m->loadTemplate('Hello, {{ name }}!'); * echo $tpl(array('name' => 'World')); // "Hello, World!" * * @see Mustache_Template::render * * @param mixed $context Array or object rendering context (default: array()) * * @return string Rendered template */ public function __invoke($context = array()) { return $this->render($context); } /** * Render this template given the rendering context. * * @param mixed $context Array or object rendering context (default: array()) * * @return string Rendered template */ public function render($context = array()) { return $this->renderInternal( $this->prepareContextStack($context) ); } /** * Internal rendering method implemented by Mustache Template concrete subclasses. * * This is where the magic happens :) * * NOTE: This method is not part of the Mustache.php public API. * * @param Mustache_Context $context * @param string $indent (default: '') * * @return string Rendered template */ abstract public function renderInternal(Mustache_Context $context, $indent = ''); /** * Tests whether a value should be iterated over (e.g. in a section context). * * In most languages there are two distinct array types: list and hash (or whatever you want to call them). Lists * should be iterated, hashes should be treated as objects. Mustache follows this paradigm for Ruby, Javascript, * Java, Python, etc. * * PHP, however, treats lists and hashes as one primitive type: array. So Mustache.php needs a way to distinguish * between between a list of things (numeric, normalized array) and a set of variables to be used as section context * (associative array). In other words, this will be iterated over: * * $items = array( * array('name' => 'foo'), * array('name' => 'bar'), * array('name' => 'baz'), * ); * * ... but this will be used as a section context block: * * $items = array( * 1 => array('name' => 'foo'), * 'banana' => array('name' => 'bar'), * 42 => array('name' => 'baz'), * ); * * @param mixed $value * * @return bool True if the value is 'iterable' */ protected function isIterable($value) { switch (gettype($value)) { case 'object': return $value instanceof Traversable; case 'array': $i = 0; foreach ($value as $k => $v) { if ($k !== $i++) { return false; } } return true; default: return false; } } /** * Helper method to prepare the Context stack. * * Adds the Mustache HelperCollection to the stack's top context frame if helpers are present. * * @param mixed $context Optional first context frame (default: null) * * @return Mustache_Context */ protected function prepareContextStack($context = null) { $stack = new Mustache_Context(); $helpers = $this->mustache->getHelpers(); if (!$helpers->isEmpty()) { $stack->push($helpers); } if (!empty($context)) { $stack->push($context); } return $stack; } /** * Resolve a context value. * * Invoke the value if it is callable, otherwise return the value. * * @param mixed $value * @param Mustache_Context $context * * @return string */ protected function resolveValue($value, Mustache_Context $context) { if (($this->strictCallables ? is_object($value) : !is_string($value)) && is_callable($value)) { return $this->mustache ->loadLambda((string) call_user_func($value)) ->renderInternal($context); } return $value; } } =}}`. (default: null) */ public function __construct(Mustache_Engine $mustache, Mustache_Context $context, $delims = null) { $this->mustache = $mustache; $this->context = $context; $this->delims = $delims; } /** * Render a string as a Mustache template with the current rendering context. * * @param string $string * * @return string Rendered template */ public function render($string) { return $this->mustache ->loadLambda((string) $string, $this->delims) ->renderInternal($this->context); } /** * Render a string as a Mustache template with the current rendering context. * * @param string $string * * @return string Rendered template */ public function __invoke($string) { return $this->render($string); } /** * Get a Lambda Helper with custom delimiters. * * @param string $delims Custom delimiters, in the format `{{= <% %> =}}` * * @return Mustache_LambdaHelper */ public function withDelimiters($delims) { return new self($this->mustache, $this->context, $delims); } } true, self::PRAGMA_BLOCKS => true, self::PRAGMA_ANCHORED_DOT => true, ); // Template cache private $templates = array(); // Environment private $templateClassPrefix = '__Mustache_'; private $cache; private $lambdaCache; private $cacheLambdaTemplates = false; private $loader; private $partialsLoader; private $helpers; private $escape; private $entityFlags = ENT_COMPAT; private $charset = 'UTF-8'; private $logger; private $strictCallables = false; private $pragmas = array(); private $delimiters; // Services private $tokenizer; private $parser; private $compiler; /** * Mustache class constructor. * * Passing an $options array allows overriding certain Mustache options during instantiation: * * $options = array( * // The class prefix for compiled templates. Defaults to '__Mustache_'. * 'template_class_prefix' => '__MyTemplates_', * * // A Mustache cache instance or a cache directory string for compiled templates. * // Mustache will not cache templates unless this is set. * 'cache' => dirname(__FILE__).'/tmp/cache/mustache', * * // Override default permissions for cache files. Defaults to using the system-defined umask. It is * // *strongly* recommended that you configure your umask properly rather than overriding permissions here. * 'cache_file_mode' => 0666, * * // Optionally, enable caching for lambda section templates. This is generally not recommended, as lambda * // sections are often too dynamic to benefit from caching. * 'cache_lambda_templates' => true, * * // Customize the tag delimiters used by this engine instance. Note that overriding here changes the * // delimiters used to parse all templates and partials loaded by this instance. To override just for a * // single template, use an inline "change delimiters" tag at the start of the template file: * // * // {{=<% %>=}} * // * 'delimiters' => '<% %>', * * // A Mustache template loader instance. Uses a StringLoader if not specified. * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), * * // A Mustache loader instance for partials. * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), * * // An array of Mustache partials. Useful for quick-and-dirty string template loading, but not as * // efficient or lazy as a Filesystem (or database) loader. * 'partials' => array('foo' => file_get_contents(dirname(__FILE__).'/views/partials/foo.mustache')), * * // An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order * // sections), or any other valid Mustache context value. They will be prepended to the context stack, * // so they will be available in any template loaded by this Mustache instance. * 'helpers' => array('i18n' => function ($text) { * // do something translatey here... * }), * * // An 'escape' callback, responsible for escaping double-mustache variables. * 'escape' => function ($value) { * return htmlspecialchars($buffer, ENT_COMPAT, 'UTF-8'); * }, * * // Type argument for `htmlspecialchars`. Defaults to ENT_COMPAT. You may prefer ENT_QUOTES. * 'entity_flags' => ENT_QUOTES, * * // Character set for `htmlspecialchars`. Defaults to 'UTF-8'. Use 'UTF-8'. * 'charset' => 'ISO-8859-1', * * // A Mustache Logger instance. No logging will occur unless this is set. Using a PSR-3 compatible * // logging library -- such as Monolog -- is highly recommended. A simple stream logger implementation is * // available as well: * 'logger' => new Mustache_Logger_StreamLogger('php://stderr'), * * // Only treat Closure instances and invokable classes as callable. If true, values like * // `array('ClassName', 'methodName')` and `array($classInstance, 'methodName')`, which are traditionally * // "callable" in PHP, are not called to resolve variables for interpolation or section contexts. This * // helps protect against arbitrary code execution when user input is passed directly into the template. * // This currently defaults to false, but will default to true in v3.0. * 'strict_callables' => true, * * // Enable pragmas across all templates, regardless of the presence of pragma tags in the individual * // templates. * 'pragmas' => [Mustache_Engine::PRAGMA_FILTERS], * ); * * @throws Mustache_Exception_InvalidArgumentException If `escape` option is not callable * * @param array $options (default: array()) */ public function __construct(array $options = array()) { if (isset($options['template_class_prefix'])) { if ((string) $options['template_class_prefix'] === '') { throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "template_class_prefix" must not be empty'); } $this->templateClassPrefix = $options['template_class_prefix']; } if (isset($options['cache'])) { $cache = $options['cache']; if (is_string($cache)) { $mode = isset($options['cache_file_mode']) ? $options['cache_file_mode'] : null; $cache = new Mustache_Cache_FilesystemCache($cache, $mode); } $this->setCache($cache); } if (isset($options['cache_lambda_templates'])) { $this->cacheLambdaTemplates = (bool) $options['cache_lambda_templates']; } if (isset($options['loader'])) { $this->setLoader($options['loader']); } if (isset($options['partials_loader'])) { $this->setPartialsLoader($options['partials_loader']); } if (isset($options['partials'])) { $this->setPartials($options['partials']); } if (isset($options['helpers'])) { $this->setHelpers($options['helpers']); } if (isset($options['escape'])) { if (!is_callable($options['escape'])) { throw new Mustache_Exception_InvalidArgumentException('Mustache Constructor "escape" option must be callable'); } $this->escape = $options['escape']; } if (isset($options['entity_flags'])) { $this->entityFlags = $options['entity_flags']; } if (isset($options['charset'])) { $this->charset = $options['charset']; } if (isset($options['logger'])) { $this->setLogger($options['logger']); } if (isset($options['strict_callables'])) { $this->strictCallables = $options['strict_callables']; } if (isset($options['delimiters'])) { $this->delimiters = $options['delimiters']; } if (isset($options['pragmas'])) { foreach ($options['pragmas'] as $pragma) { if (!isset(self::$knownPragmas[$pragma])) { throw new Mustache_Exception_InvalidArgumentException(sprintf('Unknown pragma: "%s".', $pragma)); } $this->pragmas[$pragma] = true; } } } /** * Shortcut 'render' invocation. * * Equivalent to calling `$mustache->loadTemplate($template)->render($context);` * * @see Mustache_Engine::loadTemplate * @see Mustache_Template::render * * @param string $template * @param mixed $context (default: array()) * * @return string Rendered template */ public function render($template, $context = array()) { return $this->loadTemplate($template)->render($context); } /** * Get the current Mustache escape callback. * * @return callable|null */ public function getEscape() { return $this->escape; } /** * Get the current Mustache entitity type to escape. * * @return int */ public function getEntityFlags() { return $this->entityFlags; } /** * Get the current Mustache character set. * * @return string */ public function getCharset() { return $this->charset; } /** * Get the current globally enabled pragmas. * * @return array */ public function getPragmas() { return array_keys($this->pragmas); } /** * Set the Mustache template Loader instance. * * @param Mustache_Loader $loader */ public function setLoader(Mustache_Loader $loader) { $this->loader = $loader; } /** * Get the current Mustache template Loader instance. * * If no Loader instance has been explicitly specified, this method will instantiate and return * a StringLoader instance. * * @return Mustache_Loader */ public function getLoader() { if (!isset($this->loader)) { $this->loader = new Mustache_Loader_StringLoader(); } return $this->loader; } /** * Set the Mustache partials Loader instance. * * @param Mustache_Loader $partialsLoader */ public function setPartialsLoader(Mustache_Loader $partialsLoader) { $this->partialsLoader = $partialsLoader; } /** * Get the current Mustache partials Loader instance. * * If no Loader instance has been explicitly specified, this method will instantiate and return * an ArrayLoader instance. * * @return Mustache_Loader */ public function getPartialsLoader() { if (!isset($this->partialsLoader)) { $this->partialsLoader = new Mustache_Loader_ArrayLoader(); } return $this->partialsLoader; } /** * Set partials for the current partials Loader instance. * * @throws Mustache_Exception_RuntimeException If the current Loader instance is immutable * * @param array $partials (default: array()) */ public function setPartials(array $partials = array()) { if (!isset($this->partialsLoader)) { $this->partialsLoader = new Mustache_Loader_ArrayLoader(); } if (!$this->partialsLoader instanceof Mustache_Loader_MutableLoader) { throw new Mustache_Exception_RuntimeException('Unable to set partials on an immutable Mustache Loader instance'); } $this->partialsLoader->setTemplates($partials); } /** * Set an array of Mustache helpers. * * An array of 'helpers'. Helpers can be global variables or objects, closures (e.g. for higher order sections), or * any other valid Mustache context value. They will be prepended to the context stack, so they will be available in * any template loaded by this Mustache instance. * * @throws Mustache_Exception_InvalidArgumentException if $helpers is not an array or Traversable * * @param array|Traversable $helpers */ public function setHelpers($helpers) { if (!is_array($helpers) && !$helpers instanceof Traversable) { throw new Mustache_Exception_InvalidArgumentException('setHelpers expects an array of helpers'); } $this->getHelpers()->clear(); foreach ($helpers as $name => $helper) { $this->addHelper($name, $helper); } } /** * Get the current set of Mustache helpers. * * @see Mustache_Engine::setHelpers * * @return Mustache_HelperCollection */ public function getHelpers() { if (!isset($this->helpers)) { $this->helpers = new Mustache_HelperCollection(); } return $this->helpers; } /** * Add a new Mustache helper. * * @see Mustache_Engine::setHelpers * * @param string $name * @param mixed $helper */ public function addHelper($name, $helper) { $this->getHelpers()->add($name, $helper); } /** * Get a Mustache helper by name. * * @see Mustache_Engine::setHelpers * * @param string $name * * @return mixed Helper */ public function getHelper($name) { return $this->getHelpers()->get($name); } /** * Check whether this Mustache instance has a helper. * * @see Mustache_Engine::setHelpers * * @param string $name * * @return bool True if the helper is present */ public function hasHelper($name) { return $this->getHelpers()->has($name); } /** * Remove a helper by name. * * @see Mustache_Engine::setHelpers * * @param string $name */ public function removeHelper($name) { $this->getHelpers()->remove($name); } /** * Set the Mustache Logger instance. * * @throws Mustache_Exception_InvalidArgumentException If logger is not an instance of Mustache_Logger or Psr\Log\LoggerInterface * * @param Mustache_Logger|Psr\Log\LoggerInterface $logger */ public function setLogger($logger = null) { if ($logger !== null && !($logger instanceof Mustache_Logger || is_a($logger, 'Psr\\Log\\LoggerInterface'))) { throw new Mustache_Exception_InvalidArgumentException('Expected an instance of Mustache_Logger or Psr\\Log\\LoggerInterface.'); } if ($this->getCache()->getLogger() === null) { $this->getCache()->setLogger($logger); } $this->logger = $logger; } /** * Get the current Mustache Logger instance. * * @return Mustache_Logger|Psr\Log\LoggerInterface */ public function getLogger() { return $this->logger; } /** * Set the Mustache Tokenizer instance. * * @param Mustache_Tokenizer $tokenizer */ public function setTokenizer(Mustache_Tokenizer $tokenizer) { $this->tokenizer = $tokenizer; } /** * Get the current Mustache Tokenizer instance. * * If no Tokenizer instance has been explicitly specified, this method will instantiate and return a new one. * * @return Mustache_Tokenizer */ public function getTokenizer() { if (!isset($this->tokenizer)) { $this->tokenizer = new Mustache_Tokenizer(); } return $this->tokenizer; } /** * Set the Mustache Parser instance. * * @param Mustache_Parser $parser */ public function setParser(Mustache_Parser $parser) { $this->parser = $parser; } /** * Get the current Mustache Parser instance. * * If no Parser instance has been explicitly specified, this method will instantiate and return a new one. * * @return Mustache_Parser */ public function getParser() { if (!isset($this->parser)) { $this->parser = new Mustache_Parser(); } return $this->parser; } /** * Set the Mustache Compiler instance. * * @param Mustache_Compiler $compiler */ public function setCompiler(Mustache_Compiler $compiler) { $this->compiler = $compiler; } /** * Get the current Mustache Compiler instance. * * If no Compiler instance has been explicitly specified, this method will instantiate and return a new one. * * @return Mustache_Compiler */ public function getCompiler() { if (!isset($this->compiler)) { $this->compiler = new Mustache_Compiler(); } return $this->compiler; } /** * Set the Mustache Cache instance. * * @param Mustache_Cache $cache */ public function setCache(Mustache_Cache $cache) { if (isset($this->logger) && $cache->getLogger() === null) { $cache->setLogger($this->getLogger()); } $this->cache = $cache; } /** * Get the current Mustache Cache instance. * * If no Cache instance has been explicitly specified, this method will instantiate and return a new one. * * @return Mustache_Cache */ public function getCache() { if (!isset($this->cache)) { $this->setCache(new Mustache_Cache_NoopCache()); } return $this->cache; } /** * Get the current Lambda Cache instance. * * If 'cache_lambda_templates' is enabled, this is the default cache instance. Otherwise, it is a NoopCache. * * @see Mustache_Engine::getCache * * @return Mustache_Cache */ protected function getLambdaCache() { if ($this->cacheLambdaTemplates) { return $this->getCache(); } if (!isset($this->lambdaCache)) { $this->lambdaCache = new Mustache_Cache_NoopCache(); } return $this->lambdaCache; } /** * Helper method to generate a Mustache template class. * * This method must be updated any time options are added which make it so * the same template could be parsed and compiled multiple different ways. * * @param string|Mustache_Source $source * * @return string Mustache Template class name */ public function getTemplateClassName($source) { // For the most part, adding a new option here should do the trick. // // Pick a value here which is unique for each possible way the template // could be compiled... but not necessarily unique per option value. See // escape below, which only needs to differentiate between 'custom' and // 'default' escapes. // // Keep this list in alphabetical order :) $chunks = array( 'charset' => $this->charset, 'delimiters' => $this->delimiters ? $this->delimiters : '{{ }}', 'entityFlags' => $this->entityFlags, 'escape' => isset($this->escape) ? 'custom' : 'default', 'key' => ($source instanceof Mustache_Source) ? $source->getKey() : 'source', 'pragmas' => $this->getPragmas(), 'strictCallables' => $this->strictCallables, 'version' => self::VERSION, ); $key = json_encode($chunks); // Template Source instances have already provided their own source key. For strings, just include the whole // source string in the md5 hash. if (!$source instanceof Mustache_Source) { $key .= "\n" . $source; } return $this->templateClassPrefix . md5($key); } /** * Load a Mustache Template by name. * * @param string $name * * @return Mustache_Template */ public function loadTemplate($name) { return $this->loadSource($this->getLoader()->load($name)); } /** * Load a Mustache partial Template by name. * * This is a helper method used internally by Template instances for loading partial templates. You can most likely * ignore it completely. * * @param string $name * * @return Mustache_Template */ public function loadPartial($name) { try { if (isset($this->partialsLoader)) { $loader = $this->partialsLoader; } elseif (isset($this->loader) && !$this->loader instanceof Mustache_Loader_StringLoader) { $loader = $this->loader; } else { throw new Mustache_Exception_UnknownTemplateException($name); } return $this->loadSource($loader->load($name)); } catch (Mustache_Exception_UnknownTemplateException $e) { // If the named partial cannot be found, log then return null. $this->log( Mustache_Logger::WARNING, 'Partial not found: "{name}"', array('name' => $e->getTemplateName()) ); } } /** * Load a Mustache lambda Template by source. * * This is a helper method used by Template instances to generate subtemplates for Lambda sections. You can most * likely ignore it completely. * * @param string $source * @param string $delims (default: null) * * @return Mustache_Template */ public function loadLambda($source, $delims = null) { if ($delims !== null) { $source = $delims . "\n" . $source; } return $this->loadSource($source, $this->getLambdaCache()); } /** * Instantiate and return a Mustache Template instance by source. * * Optionally provide a Mustache_Cache instance. This is used internally by Mustache_Engine::loadLambda to respect * the 'cache_lambda_templates' configuration option. * * @see Mustache_Engine::loadTemplate * @see Mustache_Engine::loadPartial * @see Mustache_Engine::loadLambda * * @param string|Mustache_Source $source * @param Mustache_Cache $cache (default: null) * * @return Mustache_Template */ private function loadSource($source, Mustache_Cache $cache = null) { $className = $this->getTemplateClassName($source); if (!isset($this->templates[$className])) { if ($cache === null) { $cache = $this->getCache(); } if (!class_exists($className, false)) { if (!$cache->load($className)) { $compiled = $this->compile($source); $cache->cache($className, $compiled); } } $this->log( Mustache_Logger::DEBUG, 'Instantiating template: "{className}"', array('className' => $className) ); $this->templates[$className] = new $className($this); } return $this->templates[$className]; } /** * Helper method to tokenize a Mustache template. * * @see Mustache_Tokenizer::scan * * @param string $source * * @return array Tokens */ private function tokenize($source) { return $this->getTokenizer()->scan($source, $this->delimiters); } /** * Helper method to parse a Mustache template. * * @see Mustache_Parser::parse * * @param string $source * * @return array Token tree */ private function parse($source) { $parser = $this->getParser(); $parser->setPragmas($this->getPragmas()); return $parser->parse($this->tokenize($source)); } /** * Helper method to compile a Mustache template. * * @see Mustache_Compiler::compile * * @param string|Mustache_Source $source * * @return string generated Mustache template class code */ private function compile($source) { $name = $this->getTemplateClassName($source); $this->log( Mustache_Logger::INFO, 'Compiling template to "{className}" class', array('className' => $name) ); if ($source instanceof Mustache_Source) { $source = $source->getSource(); } $tree = $this->parse($source); $compiler = $this->getCompiler(); $compiler->setPragmas($this->getPragmas()); return $compiler->compile($source, $tree, $name, isset($this->escape), $this->charset, $this->strictCallables, $this->entityFlags); } /** * Add a log record if logging is enabled. * * @param int $level The logging level * @param string $message The log message * @param array $context The log context */ private function log($level, $message, array $context = array()) { if (isset($this->logger)) { $this->logger->log($level, $message, $context); } } } $helper` pairs. * * @throws Mustache_Exception_InvalidArgumentException if the $helpers argument isn't an array or Traversable * * @param array|Traversable $helpers (default: null) */ public function __construct($helpers = null) { if ($helpers === null) { return; } if (!is_array($helpers) && !$helpers instanceof Traversable) { throw new Mustache_Exception_InvalidArgumentException('HelperCollection constructor expects an array of helpers'); } foreach ($helpers as $name => $helper) { $this->add($name, $helper); } } /** * Magic mutator. * * @see Mustache_HelperCollection::add * * @param string $name * @param mixed $helper */ public function __set($name, $helper) { $this->add($name, $helper); } /** * Add a helper to this collection. * * @param string $name * @param mixed $helper */ public function add($name, $helper) { $this->helpers[$name] = $helper; } /** * Magic accessor. * * @see Mustache_HelperCollection::get * * @param string $name * * @return mixed Helper */ public function __get($name) { return $this->get($name); } /** * Get a helper by name. * * @throws Mustache_Exception_UnknownHelperException If helper does not exist * * @param string $name * * @return mixed Helper */ public function get($name) { if (!$this->has($name)) { throw new Mustache_Exception_UnknownHelperException($name); } return $this->helpers[$name]; } /** * Magic isset(). * * @see Mustache_HelperCollection::has * * @param string $name * * @return bool True if helper is present */ public function __isset($name) { return $this->has($name); } /** * Check whether a given helper is present in the collection. * * @param string $name * * @return bool True if helper is present */ public function has($name) { return array_key_exists($name, $this->helpers); } /** * Magic unset(). * * @see Mustache_HelperCollection::remove * * @param string $name */ public function __unset($name) { $this->remove($name); } /** * Check whether a given helper is present in the collection. * * @throws Mustache_Exception_UnknownHelperException if the requested helper is not present * * @param string $name */ public function remove($name) { if (!$this->has($name)) { throw new Mustache_Exception_UnknownHelperException($name); } unset($this->helpers[$name]); } /** * Clear the helper collection. * * Removes all helpers from this collection */ public function clear() { $this->helpers = array(); } /** * Check whether the helper collection is empty. * * @return bool True if the collection is empty */ public function isEmpty() { return empty($this->helpers); } } baseDir = $realDir; } else { $this->baseDir = $baseDir; } } /** * Register a new instance as an SPL autoloader. * * @param string $baseDir Mustache library base directory (default: dirname(__FILE__).'/..') * * @return Mustache_Autoloader Registered Autoloader instance */ public static function register($baseDir = null) { $key = $baseDir ? $baseDir : 0; if (!isset(self::$instances[$key])) { self::$instances[$key] = new self($baseDir); } $loader = self::$instances[$key]; spl_autoload_register(array($loader, 'autoload')); return $loader; } /** * Autoload Mustache classes. * * @param string $class */ public function autoload($class) { if ($class[0] === '\\') { $class = substr($class, 1); } if (strpos($class, 'Mustache') !== 0) { return; } $file = sprintf('%s/%s.php', $this->baseDir, str_replace('_', '/', $class)); if (is_file($file)) { require $file; } } } pragmas = $this->defaultPragmas; $this->sections = array(); $this->blocks = array(); $this->source = $source; $this->indentNextLine = true; $this->customEscape = $customEscape; $this->entityFlags = $entityFlags; $this->charset = $charset; $this->strictCallables = $strictCallables; return $this->writeCode($tree, $name); } /** * Enable pragmas across all templates, regardless of the presence of pragma * tags in the individual templates. * * @internal Users should set global pragmas in Mustache_Engine, not here :) * * @param string[] $pragmas */ public function setPragmas(array $pragmas) { $this->pragmas = array(); foreach ($pragmas as $pragma) { $this->pragmas[$pragma] = true; } $this->defaultPragmas = $this->pragmas; } /** * Helper function for walking the Mustache token parse tree. * * @throws Mustache_Exception_SyntaxException upon encountering unknown token types * * @param array $tree Parse tree of Mustache tokens * @param int $level (default: 0) * * @return string Generated PHP source code */ private function walk(array $tree, $level = 0) { $code = ''; $level++; foreach ($tree as $node) { switch ($node[Mustache_Tokenizer::TYPE]) { case Mustache_Tokenizer::T_PRAGMA: $this->pragmas[$node[Mustache_Tokenizer::NAME]] = true; break; case Mustache_Tokenizer::T_SECTION: $code .= $this->section( $node[Mustache_Tokenizer::NODES], $node[Mustache_Tokenizer::NAME], isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), $node[Mustache_Tokenizer::INDEX], $node[Mustache_Tokenizer::END], $node[Mustache_Tokenizer::OTAG], $node[Mustache_Tokenizer::CTAG], $level ); break; case Mustache_Tokenizer::T_INVERTED: $code .= $this->invertedSection( $node[Mustache_Tokenizer::NODES], $node[Mustache_Tokenizer::NAME], isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), $level ); break; case Mustache_Tokenizer::T_PARTIAL: $code .= $this->partial( $node[Mustache_Tokenizer::NAME], isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', $level ); break; case Mustache_Tokenizer::T_PARENT: $code .= $this->parent( $node[Mustache_Tokenizer::NAME], isset($node[Mustache_Tokenizer::INDENT]) ? $node[Mustache_Tokenizer::INDENT] : '', $node[Mustache_Tokenizer::NODES], $level ); break; case Mustache_Tokenizer::T_BLOCK_ARG: $code .= $this->blockArg( $node[Mustache_Tokenizer::NODES], $node[Mustache_Tokenizer::NAME], $node[Mustache_Tokenizer::INDEX], $node[Mustache_Tokenizer::END], $node[Mustache_Tokenizer::OTAG], $node[Mustache_Tokenizer::CTAG], $level ); break; case Mustache_Tokenizer::T_BLOCK_VAR: $code .= $this->blockVar( $node[Mustache_Tokenizer::NODES], $node[Mustache_Tokenizer::NAME], $node[Mustache_Tokenizer::INDEX], $node[Mustache_Tokenizer::END], $node[Mustache_Tokenizer::OTAG], $node[Mustache_Tokenizer::CTAG], $level ); break; case Mustache_Tokenizer::T_COMMENT: break; case Mustache_Tokenizer::T_ESCAPED: case Mustache_Tokenizer::T_UNESCAPED: case Mustache_Tokenizer::T_UNESCAPED_2: $code .= $this->variable( $node[Mustache_Tokenizer::NAME], isset($node[Mustache_Tokenizer::FILTERS]) ? $node[Mustache_Tokenizer::FILTERS] : array(), $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_ESCAPED, $level ); break; case Mustache_Tokenizer::T_TEXT: $code .= $this->text($node[Mustache_Tokenizer::VALUE], $level); break; default: throw new Mustache_Exception_SyntaxException(sprintf('Unknown token type: %s', $node[Mustache_Tokenizer::TYPE]), $node); } } return $code; } const KLASS = 'lambdaHelper = new Mustache_LambdaHelper($this->mustache, $context); $buffer = \'\'; %s return $buffer; } %s %s }'; const KLASS_NO_LAMBDAS = 'walk($tree); $sections = implode("\n", $this->sections); $blocks = implode("\n", $this->blocks); $klass = empty($this->sections) && empty($this->blocks) ? self::KLASS_NO_LAMBDAS : self::KLASS; $callable = $this->strictCallables ? $this->prepare(self::STRICT_CALLABLE) : ''; return sprintf($this->prepare($klass, 0, false, true), $name, $callable, $code, $sections, $blocks); } const BLOCK_VAR = ' $blockFunction = $context->findInBlock(%s); if (is_callable($blockFunction)) { $buffer .= call_user_func($blockFunction, $context); %s} '; const BLOCK_VAR_ELSE = '} else {%s'; /** * Generate Mustache Template inheritance block variable PHP source. * * @param array $nodes Array of child tokens * @param string $id Section name * @param int $start Section start offset * @param int $end Section end offset * @param string $otag Current Mustache opening tag * @param string $ctag Current Mustache closing tag * @param int $level * * @return string Generated PHP source code */ private function blockVar($nodes, $id, $start, $end, $otag, $ctag, $level) { $id = var_export($id, true); $else = $this->walk($nodes, $level); if ($else !== '') { $else = sprintf($this->prepare(self::BLOCK_VAR_ELSE, $level + 1, false, true), $else); } return sprintf($this->prepare(self::BLOCK_VAR, $level), $id, $else); } const BLOCK_ARG = '%s => array($this, \'block%s\'),'; /** * Generate Mustache Template inheritance block argument PHP source. * * @param array $nodes Array of child tokens * @param string $id Section name * @param int $start Section start offset * @param int $end Section end offset * @param string $otag Current Mustache opening tag * @param string $ctag Current Mustache closing tag * @param int $level * * @return string Generated PHP source code */ private function blockArg($nodes, $id, $start, $end, $otag, $ctag, $level) { $key = $this->block($nodes); $keystr = var_export($key, true); $id = var_export($id, true); return sprintf($this->prepare(self::BLOCK_ARG, $level), $id, $key); } const BLOCK_FUNCTION = ' public function block%s($context) { $indent = $buffer = \'\';%s return $buffer; } '; /** * Generate Mustache Template inheritance block function PHP source. * * @param array $nodes Array of child tokens * * @return string key of new block function */ private function block($nodes) { $code = $this->walk($nodes, 0); $key = ucfirst(md5($code)); if (!isset($this->blocks[$key])) { $this->blocks[$key] = sprintf($this->prepare(self::BLOCK_FUNCTION, 0), $key, $code); } return $key; } const SECTION_CALL = ' // %s section $value = $context->%s(%s);%s $buffer .= $this->section%s($context, $indent, $value); '; const SECTION = ' private function section%s(Mustache_Context $context, $indent, $value) { $buffer = \'\'; if (%s) { $source = %s; $result = call_user_func($value, $source, %s); if (strpos($result, \'{{\') === false) { $buffer .= $result; } else { $buffer .= $this->mustache ->loadLambda((string) $result%s) ->renderInternal($context); } } elseif (!empty($value)) { $values = $this->isIterable($value) ? $value : array($value); foreach ($values as $value) { $context->push($value); %s $context->pop(); } } return $buffer; } '; /** * Generate Mustache Template section PHP source. * * @param array $nodes Array of child tokens * @param string $id Section name * @param string[] $filters Array of filters * @param int $start Section start offset * @param int $end Section end offset * @param string $otag Current Mustache opening tag * @param string $ctag Current Mustache closing tag * @param int $level * * @return string Generated section PHP source code */ private function section($nodes, $id, $filters, $start, $end, $otag, $ctag, $level) { $source = var_export(substr($this->source, $start, $end - $start), true); $callable = $this->getCallable(); if ($otag !== '{{' || $ctag !== '}}') { $delimTag = var_export(sprintf('{{= %s %s =}}', $otag, $ctag), true); $helper = sprintf('$this->lambdaHelper->withDelimiters(%s)', $delimTag); $delims = ', ' . $delimTag; } else { $helper = '$this->lambdaHelper'; $delims = ''; } $key = ucfirst(md5($delims . "\n" . $source)); if (!isset($this->sections[$key])) { $this->sections[$key] = sprintf($this->prepare(self::SECTION), $key, $callable, $source, $helper, $delims, $this->walk($nodes, 2)); } $method = $this->getFindMethod($id); $id = var_export($id, true); $filters = $this->getFilters($filters, $level); return sprintf($this->prepare(self::SECTION_CALL, $level), $id, $method, $id, $filters, $key); } const INVERTED_SECTION = ' // %s inverted section $value = $context->%s(%s);%s if (empty($value)) { %s } '; /** * Generate Mustache Template inverted section PHP source. * * @param array $nodes Array of child tokens * @param string $id Section name * @param string[] $filters Array of filters * @param int $level * * @return string Generated inverted section PHP source code */ private function invertedSection($nodes, $id, $filters, $level) { $method = $this->getFindMethod($id); $id = var_export($id, true); $filters = $this->getFilters($filters, $level); return sprintf($this->prepare(self::INVERTED_SECTION, $level), $id, $method, $id, $filters, $this->walk($nodes, $level)); } const PARTIAL_INDENT = ', $indent . %s'; const PARTIAL = ' if ($partial = $this->mustache->loadPartial(%s)) { $buffer .= $partial->renderInternal($context%s); } '; /** * Generate Mustache Template partial call PHP source. * * @param string $id Partial name * @param string $indent Whitespace indent to apply to partial * @param int $level * * @return string Generated partial call PHP source code */ private function partial($id, $indent, $level) { if ($indent !== '') { $indentParam = sprintf(self::PARTIAL_INDENT, var_export($indent, true)); } else { $indentParam = ''; } return sprintf( $this->prepare(self::PARTIAL, $level), var_export($id, true), $indentParam ); } const PARENT = ' if ($parent = $this->mustache->loadPartial(%s)) { $context->pushBlockContext(array(%s )); $buffer .= $parent->renderInternal($context, $indent); $context->popBlockContext(); } '; const PARENT_NO_CONTEXT = ' if ($parent = $this->mustache->loadPartial(%s)) { $buffer .= $parent->renderInternal($context, $indent); } '; /** * Generate Mustache Template inheritance parent call PHP source. * * @param string $id Parent tag name * @param string $indent Whitespace indent to apply to parent * @param array $children Child nodes * @param int $level * * @return string Generated PHP source code */ private function parent($id, $indent, array $children, $level) { $realChildren = array_filter($children, array(__CLASS__, 'onlyBlockArgs')); if (empty($realChildren)) { return sprintf($this->prepare(self::PARENT_NO_CONTEXT, $level), var_export($id, true)); } return sprintf( $this->prepare(self::PARENT, $level), var_export($id, true), $this->walk($realChildren, $level + 1) ); } /** * Helper method for filtering out non-block-arg tokens. * * @param array $node * * @return bool True if $node is a block arg token */ private static function onlyBlockArgs(array $node) { return $node[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_BLOCK_ARG; } const VARIABLE = ' $value = $this->resolveValue($context->%s(%s), $context);%s $buffer .= %s%s; '; /** * Generate Mustache Template variable interpolation PHP source. * * @param string $id Variable name * @param string[] $filters Array of filters * @param bool $escape Escape the variable value for output? * @param int $level * * @return string Generated variable interpolation PHP source */ private function variable($id, $filters, $escape, $level) { $method = $this->getFindMethod($id); $id = ($method !== 'last') ? var_export($id, true) : ''; $filters = $this->getFilters($filters, $level); $value = $escape ? $this->getEscape() : '$value'; return sprintf($this->prepare(self::VARIABLE, $level), $method, $id, $filters, $this->flushIndent(), $value); } const FILTER = ' $filter = $context->%s(%s); if (!(%s)) { throw new Mustache_Exception_UnknownFilterException(%s); } $value = call_user_func($filter, $value);%s '; /** * Generate Mustache Template variable filtering PHP source. * * @param string[] $filters Array of filters * @param int $level * * @return string Generated filter PHP source */ private function getFilters(array $filters, $level) { if (empty($filters)) { return ''; } $name = array_shift($filters); $method = $this->getFindMethod($name); $filter = ($method !== 'last') ? var_export($name, true) : ''; $callable = $this->getCallable('$filter'); $msg = var_export($name, true); return sprintf($this->prepare(self::FILTER, $level), $method, $filter, $callable, $msg, $this->getFilters($filters, $level)); } const LINE = '$buffer .= "\n";'; const TEXT = '$buffer .= %s%s;'; /** * Generate Mustache Template output Buffer call PHP source. * * @param string $text * @param int $level * * @return string Generated output Buffer call PHP source */ private function text($text, $level) { $indentNextLine = (substr($text, -1) === "\n"); $code = sprintf($this->prepare(self::TEXT, $level), $this->flushIndent(), var_export($text, true)); $this->indentNextLine = $indentNextLine; return $code; } /** * Prepare PHP source code snippet for output. * * @param string $text * @param int $bonus Additional indent level (default: 0) * @param bool $prependNewline Prepend a newline to the snippet? (default: true) * @param bool $appendNewline Append a newline to the snippet? (default: false) * * @return string PHP source code snippet */ private function prepare($text, $bonus = 0, $prependNewline = true, $appendNewline = false) { $text = ($prependNewline ? "\n" : '') . trim($text); if ($prependNewline) { $bonus++; } if ($appendNewline) { $text .= "\n"; } return preg_replace("/\n( {8})?/", "\n" . str_repeat(' ', $bonus * 4), $text); } const DEFAULT_ESCAPE = 'htmlspecialchars(%s, %s, %s)'; const CUSTOM_ESCAPE = 'call_user_func($this->mustache->getEscape(), %s)'; /** * Get the current escaper. * * @param string $value (default: '$value') * * @return string Either a custom callback, or an inline call to `htmlspecialchars` */ private function getEscape($value = '$value') { if ($this->customEscape) { return sprintf(self::CUSTOM_ESCAPE, $value); } return sprintf(self::DEFAULT_ESCAPE, $value, var_export($this->entityFlags, true), var_export($this->charset, true)); } /** * Select the appropriate Context `find` method for a given $id. * * The return value will be one of `find`, `findDot`, `findAnchoredDot` or `last`. * * @see Mustache_Context::find * @see Mustache_Context::findDot * @see Mustache_Context::last * * @param string $id Variable name * * @return string `find` method name */ private function getFindMethod($id) { if ($id === '.') { return 'last'; } if (isset($this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) && $this->pragmas[Mustache_Engine::PRAGMA_ANCHORED_DOT]) { if (substr($id, 0, 1) === '.') { return 'findAnchoredDot'; } } if (strpos($id, '.') === false) { return 'find'; } return 'findDot'; } const IS_CALLABLE = '!is_string(%s) && is_callable(%s)'; const STRICT_IS_CALLABLE = 'is_object(%s) && is_callable(%s)'; /** * Helper function to compile strict vs lax "is callable" logic. * * @param string $variable (default: '$value') * * @return string "is callable" logic */ private function getCallable($variable = '$value') { $tpl = $this->strictCallables ? self::STRICT_IS_CALLABLE : self::IS_CALLABLE; return sprintf($tpl, $variable, $variable); } const LINE_INDENT = '$indent . '; /** * Get the current $indent prefix to write to the buffer. * * @return string "$indent . " or "" */ private function flushIndent() { if (!$this->indentNextLine) { return ''; } $this->indentNextLine = false; return self::LINE_INDENT; } } stack = array($context); } } /** * Push a new Context frame onto the stack. * * @param mixed $value Object or array to use for context */ public function push($value) { array_push($this->stack, $value); } /** * Push a new Context frame onto the block context stack. * * @param mixed $value Object or array to use for block context */ public function pushBlockContext($value) { array_push($this->blockStack, $value); } /** * Pop the last Context frame from the stack. * * @return mixed Last Context frame (object or array) */ public function pop() { return array_pop($this->stack); } /** * Pop the last block Context frame from the stack. * * @return mixed Last block Context frame (object or array) */ public function popBlockContext() { return array_pop($this->blockStack); } /** * Get the last Context frame. * * @return mixed Last Context frame (object or array) */ public function last() { return end($this->stack); } /** * Find a variable in the Context stack. * * Starting with the last Context frame (the context of the innermost section), and working back to the top-level * rendering context, look for a variable with the given name: * * * If the Context frame is an associative array which contains the key $id, returns the value of that element. * * If the Context frame is an object, this will check first for a public method, then a public property named * $id. Failing both of these, it will try `__isset` and `__get` magic methods. * * If a value named $id is not found in any Context frame, returns an empty string. * * @param string $id Variable name * * @return mixed Variable value, or '' if not found */ public function find($id) { return $this->findVariableInStack($id, $this->stack); } /** * Find a 'dot notation' variable in the Context stack. * * Note that dot notation traversal bubbles through scope differently than the regular find method. After finding * the initial chunk of the dotted name, each subsequent chunk is searched for only within the value of the previous * result. For example, given the following context stack: * * $data = array( * 'name' => 'Fred', * 'child' => array( * 'name' => 'Bob' * ), * ); * * ... and the Mustache following template: * * {{ child.name }} * * ... the `name` value is only searched for within the `child` value of the global Context, not within parent * Context frames. * * @param string $id Dotted variable selector * * @return mixed Variable value, or '' if not found */ public function findDot($id) { $chunks = explode('.', $id); $first = array_shift($chunks); $value = $this->findVariableInStack($first, $this->stack); foreach ($chunks as $chunk) { if ($value === '') { return $value; } $value = $this->findVariableInStack($chunk, array($value)); } return $value; } /** * Find an 'anchored dot notation' variable in the Context stack. * * This is the same as findDot(), except it looks in the top of the context * stack for the first value, rather than searching the whole context stack * and starting from there. * * @see Mustache_Context::findDot * * @throws Mustache_Exception_InvalidArgumentException if given an invalid anchored dot $id * * @param string $id Dotted variable selector * * @return mixed Variable value, or '' if not found */ public function findAnchoredDot($id) { $chunks = explode('.', $id); $first = array_shift($chunks); if ($first !== '') { throw new Mustache_Exception_InvalidArgumentException(sprintf('Unexpected id for findAnchoredDot: %s', $id)); } $value = $this->last(); foreach ($chunks as $chunk) { if ($value === '') { return $value; } $value = $this->findVariableInStack($chunk, array($value)); } return $value; } /** * Find an argument in the block context stack. * * @param string $id * * @return mixed Variable value, or '' if not found */ public function findInBlock($id) { foreach ($this->blockStack as $context) { if (array_key_exists($id, $context)) { return $context[$id]; } } return ''; } /** * Helper function to find a variable in the Context stack. * * @see Mustache_Context::find * * @param string $id Variable name * @param array $stack Context stack * * @return mixed Variable value, or '' if not found */ private function findVariableInStack($id, array $stack) { for ($i = count($stack) - 1; $i >= 0; $i--) { $frame = &$stack[$i]; switch (gettype($frame)) { case 'object': if (!($frame instanceof Closure)) { // Note that is_callable() *will not work here* // See https://github.com/bobthecow/mustache.php/wiki/Magic-Methods if (method_exists($frame, $id)) { return $frame->$id(); } if (isset($frame->$id)) { return $frame->$id; } if ($frame instanceof ArrayAccess && isset($frame[$id])) { return $frame[$id]; } } break; case 'array': if (array_key_exists($id, $frame)) { return $frame[$id]; } break; } } return ''; } } lineNum = -1; $this->lineTokens = 0; $this->pragmas = $this->defaultPragmas; $this->pragmaFilters = isset($this->pragmas[Mustache_Engine::PRAGMA_FILTERS]); $this->pragmaBlocks = isset($this->pragmas[Mustache_Engine::PRAGMA_BLOCKS]); return $this->buildTree($tokens); } /** * Enable pragmas across all templates, regardless of the presence of pragma * tags in the individual templates. * * @internal Users should set global pragmas in Mustache_Engine, not here :) * * @param string[] $pragmas */ public function setPragmas(array $pragmas) { $this->pragmas = array(); foreach ($pragmas as $pragma) { $this->enablePragma($pragma); } $this->defaultPragmas = $this->pragmas; } /** * Helper method for recursively building a parse tree. * * @throws Mustache_Exception_SyntaxException when nesting errors or mismatched section tags are encountered * * @param array &$tokens Set of Mustache tokens * @param array $parent Parent token (default: null) * * @return array Mustache Token parse tree */ private function buildTree(array &$tokens, array $parent = null) { $nodes = array(); while (!empty($tokens)) { $token = array_shift($tokens); if ($token[Mustache_Tokenizer::LINE] === $this->lineNum) { $this->lineTokens++; } else { $this->lineNum = $token[Mustache_Tokenizer::LINE]; $this->lineTokens = 0; } if ($this->pragmaFilters && isset($token[Mustache_Tokenizer::NAME])) { list($name, $filters) = $this->getNameAndFilters($token[Mustache_Tokenizer::NAME]); if (!empty($filters)) { $token[Mustache_Tokenizer::NAME] = $name; $token[Mustache_Tokenizer::FILTERS] = $filters; } } switch ($token[Mustache_Tokenizer::TYPE]) { case Mustache_Tokenizer::T_DELIM_CHANGE: $this->checkIfTokenIsAllowedInParent($parent, $token); $this->clearStandaloneLines($nodes, $tokens); break; case Mustache_Tokenizer::T_SECTION: case Mustache_Tokenizer::T_INVERTED: $this->checkIfTokenIsAllowedInParent($parent, $token); $this->clearStandaloneLines($nodes, $tokens); $nodes[] = $this->buildTree($tokens, $token); break; case Mustache_Tokenizer::T_END_SECTION: if (!isset($parent)) { $msg = sprintf( 'Unexpected closing tag: /%s on line %d', $token[Mustache_Tokenizer::NAME], $token[Mustache_Tokenizer::LINE] ); throw new Mustache_Exception_SyntaxException($msg, $token); } if ($token[Mustache_Tokenizer::NAME] !== $parent[Mustache_Tokenizer::NAME]) { $msg = sprintf( 'Nesting error: %s (on line %d) vs. %s (on line %d)', $parent[Mustache_Tokenizer::NAME], $parent[Mustache_Tokenizer::LINE], $token[Mustache_Tokenizer::NAME], $token[Mustache_Tokenizer::LINE] ); throw new Mustache_Exception_SyntaxException($msg, $token); } $this->clearStandaloneLines($nodes, $tokens); $parent[Mustache_Tokenizer::END] = $token[Mustache_Tokenizer::INDEX]; $parent[Mustache_Tokenizer::NODES] = $nodes; return $parent; case Mustache_Tokenizer::T_PARTIAL: $this->checkIfTokenIsAllowedInParent($parent, $token); //store the whitespace prefix for laters! if ($indent = $this->clearStandaloneLines($nodes, $tokens)) { $token[Mustache_Tokenizer::INDENT] = $indent[Mustache_Tokenizer::VALUE]; } $nodes[] = $token; break; case Mustache_Tokenizer::T_PARENT: $this->checkIfTokenIsAllowedInParent($parent, $token); $nodes[] = $this->buildTree($tokens, $token); break; case Mustache_Tokenizer::T_BLOCK_VAR: if ($this->pragmaBlocks) { // BLOCKS pragma is enabled, let's do this! if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_BLOCK_ARG; } $this->clearStandaloneLines($nodes, $tokens); $nodes[] = $this->buildTree($tokens, $token); } else { // pretend this was just a normal "escaped" token... $token[Mustache_Tokenizer::TYPE] = Mustache_Tokenizer::T_ESCAPED; // TODO: figure out how to figure out if there was a space after this dollar: $token[Mustache_Tokenizer::NAME] = '$' . $token[Mustache_Tokenizer::NAME]; $nodes[] = $token; } break; case Mustache_Tokenizer::T_PRAGMA: $this->enablePragma($token[Mustache_Tokenizer::NAME]); // no break case Mustache_Tokenizer::T_COMMENT: $this->clearStandaloneLines($nodes, $tokens); $nodes[] = $token; break; default: $nodes[] = $token; break; } } if (isset($parent)) { $msg = sprintf( 'Missing closing tag: %s opened on line %d', $parent[Mustache_Tokenizer::NAME], $parent[Mustache_Tokenizer::LINE] ); throw new Mustache_Exception_SyntaxException($msg, $parent); } return $nodes; } /** * Clear standalone line tokens. * * Returns a whitespace token for indenting partials, if applicable. * * @param array $nodes Parsed nodes * @param array $tokens Tokens to be parsed * * @return array|null Resulting indent token, if any */ private function clearStandaloneLines(array &$nodes, array &$tokens) { if ($this->lineTokens > 1) { // this is the third or later node on this line, so it can't be standalone return; } $prev = null; if ($this->lineTokens === 1) { // this is the second node on this line, so it can't be standalone // unless the previous node is whitespace. if ($prev = end($nodes)) { if (!$this->tokenIsWhitespace($prev)) { return; } } } if ($next = reset($tokens)) { // If we're on a new line, bail. if ($next[Mustache_Tokenizer::LINE] !== $this->lineNum) { return; } // If the next token isn't whitespace, bail. if (!$this->tokenIsWhitespace($next)) { return; } if (count($tokens) !== 1) { // Unless it's the last token in the template, the next token // must end in newline for this to be standalone. if (substr($next[Mustache_Tokenizer::VALUE], -1) !== "\n") { return; } } // Discard the whitespace suffix array_shift($tokens); } if ($prev) { // Return the whitespace prefix, if any return array_pop($nodes); } } /** * Check whether token is a whitespace token. * * True if token type is T_TEXT and value is all whitespace characters. * * @param array $token * * @return bool True if token is a whitespace token */ private function tokenIsWhitespace(array $token) { if ($token[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_TEXT) { return preg_match('/^\s*$/', $token[Mustache_Tokenizer::VALUE]); } return false; } /** * Check whether a token is allowed inside a parent tag. * * @throws Mustache_Exception_SyntaxException if an invalid token is found inside a parent tag * * @param array|null $parent * @param array $token */ private function checkIfTokenIsAllowedInParent($parent, array $token) { if (isset($parent) && $parent[Mustache_Tokenizer::TYPE] === Mustache_Tokenizer::T_PARENT) { throw new Mustache_Exception_SyntaxException('Illegal content in < parent tag', $token); } } /** * Split a tag name into name and filters. * * @param string $name * * @return array [Tag name, Array of filters] */ private function getNameAndFilters($name) { $filters = array_map('trim', explode('|', $name)); $name = array_shift($filters); return array($name, $filters); } /** * Enable a pragma. * * @param string $name */ private function enablePragma($name) { $this->pragmas[$name] = true; switch ($name) { case Mustache_Engine::PRAGMA_BLOCKS: $this->pragmaBlocks = true; break; case Mustache_Engine::PRAGMA_FILTERS: $this->pragmaFilters = true; break; } } } filterName = $filterName; $message = sprintf('Unknown filter: %s', $filterName); if (version_compare(PHP_VERSION, '5.3.0', '>=')) { parent::__construct($message, 0, $previous); } else { parent::__construct($message); // @codeCoverageIgnore } } public function getFilterName() { return $this->filterName; } } token = $token; if (version_compare(PHP_VERSION, '5.3.0', '>=')) { parent::__construct($msg, 0, $previous); } else { parent::__construct($msg); // @codeCoverageIgnore } } /** * @return array */ public function getToken() { return $this->token; } } templateName = $templateName; $message = sprintf('Unknown template: %s', $templateName); if (version_compare(PHP_VERSION, '5.3.0', '>=')) { parent::__construct($message, 0, $previous); } else { parent::__construct($message); // @codeCoverageIgnore } } public function getTemplateName() { return $this->templateName; } } helperName = $helperName; $message = sprintf('Unknown helper: %s', $helperName); if (version_compare(PHP_VERSION, '5.3.0', '>=')) { parent::__construct($message, 0, $previous); } else { parent::__construct($message); // @codeCoverageIgnore } } public function getHelperName() { return $this->helperName; } } '; const T_PARENT = '<'; const T_DELIM_CHANGE = '='; const T_ESCAPED = '_v'; const T_UNESCAPED = '{'; const T_UNESCAPED_2 = '&'; const T_TEXT = '_t'; const T_PRAGMA = '%'; const T_BLOCK_VAR = '$'; const T_BLOCK_ARG = '$arg'; // Valid token types private static $tagTypes = array( self::T_SECTION => true, self::T_INVERTED => true, self::T_END_SECTION => true, self::T_COMMENT => true, self::T_PARTIAL => true, self::T_PARENT => true, self::T_DELIM_CHANGE => true, self::T_ESCAPED => true, self::T_UNESCAPED => true, self::T_UNESCAPED_2 => true, self::T_PRAGMA => true, self::T_BLOCK_VAR => true, ); // Token properties const TYPE = 'type'; const NAME = 'name'; const OTAG = 'otag'; const CTAG = 'ctag'; const LINE = 'line'; const INDEX = 'index'; const END = 'end'; const INDENT = 'indent'; const NODES = 'nodes'; const VALUE = 'value'; const FILTERS = 'filters'; private $state; private $tagType; private $buffer; private $tokens; private $seenTag; private $line; private $otag; private $otagChar; private $otagLen; private $ctag; private $ctagChar; private $ctagLen; /** * Scan and tokenize template source. * * @throws Mustache_Exception_SyntaxException when mismatched section tags are encountered * @throws Mustache_Exception_InvalidArgumentException when $delimiters string is invalid * * @param string $text Mustache template source to tokenize * @param string $delimiters Optionally, pass initial opening and closing delimiters (default: null) * * @return array Set of Mustache tokens */ public function scan($text, $delimiters = null) { // Setting mbstring.func_overload makes things *really* slow. // Let's do everyone a favor and scan this string as ASCII instead. // // @codeCoverageIgnoreStart $encoding = null; if (function_exists('mb_internal_encoding') && ini_get('mbstring.func_overload') & 2) { $encoding = mb_internal_encoding(); mb_internal_encoding('ASCII'); } // @codeCoverageIgnoreEnd $this->reset(); if ($delimiters = trim($delimiters)) { $this->setDelimiters($delimiters); } $len = strlen($text); for ($i = 0; $i < $len; $i++) { switch ($this->state) { case self::IN_TEXT: $char = $text[$i]; // Test whether it's time to change tags. if ($char === $this->otagChar && substr($text, $i, $this->otagLen) === $this->otag) { $i--; $this->flushBuffer(); $this->state = self::IN_TAG_TYPE; } else { $this->buffer .= $char; if ($char === "\n") { $this->flushBuffer(); $this->line++; } } break; case self::IN_TAG_TYPE: $i += $this->otagLen - 1; $char = $text[$i + 1]; if (isset(self::$tagTypes[$char])) { $tag = $char; $this->tagType = $tag; } else { $tag = null; $this->tagType = self::T_ESCAPED; } if ($this->tagType === self::T_DELIM_CHANGE) { $i = $this->changeDelimiters($text, $i); $this->state = self::IN_TEXT; } elseif ($this->tagType === self::T_PRAGMA) { $i = $this->addPragma($text, $i); $this->state = self::IN_TEXT; } else { if ($tag !== null) { $i++; } $this->state = self::IN_TAG; } $this->seenTag = $i; break; default: $char = $text[$i]; // Test whether it's time to change tags. if ($char === $this->ctagChar && substr($text, $i, $this->ctagLen) === $this->ctag) { $token = array( self::TYPE => $this->tagType, self::NAME => trim($this->buffer), self::OTAG => $this->otag, self::CTAG => $this->ctag, self::LINE => $this->line, self::INDEX => ($this->tagType === self::T_END_SECTION) ? $this->seenTag - $this->otagLen : $i + $this->ctagLen, ); if ($this->tagType === self::T_UNESCAPED) { // Clean up `{{{ tripleStache }}}` style tokens. if ($this->ctag === '}}') { if (($i + 2 < $len) && $text[$i + 2] === '}') { $i++; } else { $msg = sprintf( 'Mismatched tag delimiters: %s on line %d', $token[self::NAME], $token[self::LINE] ); throw new Mustache_Exception_SyntaxException($msg, $token); } } else { $lastName = $token[self::NAME]; if (substr($lastName, -1) === '}') { $token[self::NAME] = trim(substr($lastName, 0, -1)); } else { $msg = sprintf( 'Mismatched tag delimiters: %s on line %d', $token[self::NAME], $token[self::LINE] ); throw new Mustache_Exception_SyntaxException($msg, $token); } } } $this->buffer = ''; $i += $this->ctagLen - 1; $this->state = self::IN_TEXT; $this->tokens[] = $token; } else { $this->buffer .= $char; } break; } } $this->flushBuffer(); // Restore the user's encoding... // @codeCoverageIgnoreStart if ($encoding) { mb_internal_encoding($encoding); } // @codeCoverageIgnoreEnd return $this->tokens; } /** * Helper function to reset tokenizer internal state. */ private function reset() { $this->state = self::IN_TEXT; $this->tagType = null; $this->buffer = ''; $this->tokens = array(); $this->seenTag = false; $this->line = 0; $this->otag = '{{'; $this->otagChar = '{'; $this->otagLen = 2; $this->ctag = '}}'; $this->ctagChar = '}'; $this->ctagLen = 2; } /** * Flush the current buffer to a token. */ private function flushBuffer() { if (strlen($this->buffer) > 0) { $this->tokens[] = array( self::TYPE => self::T_TEXT, self::LINE => $this->line, self::VALUE => $this->buffer, ); $this->buffer = ''; } } /** * Change the current Mustache delimiters. Set new `otag` and `ctag` values. * * @throws Mustache_Exception_SyntaxException when delimiter string is invalid * * @param string $text Mustache template source * @param int $index Current tokenizer index * * @return int New index value */ private function changeDelimiters($text, $index) { $startIndex = strpos($text, '=', $index) + 1; $close = '=' . $this->ctag; $closeIndex = strpos($text, $close, $index); $token = array( self::TYPE => self::T_DELIM_CHANGE, self::LINE => $this->line, ); try { $this->setDelimiters(trim(substr($text, $startIndex, $closeIndex - $startIndex))); } catch (Mustache_Exception_InvalidArgumentException $e) { throw new Mustache_Exception_SyntaxException($e->getMessage(), $token); } $this->tokens[] = $token; return $closeIndex + strlen($close) - 1; } /** * Set the current Mustache `otag` and `ctag` delimiters. * * @throws Mustache_Exception_InvalidArgumentException when delimiter string is invalid * * @param string $delimiters */ private function setDelimiters($delimiters) { if (!preg_match('/^\s*(\S+)\s+(\S+)\s*$/', $delimiters, $matches)) { throw new Mustache_Exception_InvalidArgumentException(sprintf('Invalid delimiters: %s', $delimiters)); } list($_, $otag, $ctag) = $matches; $this->otag = $otag; $this->otagChar = $otag[0]; $this->otagLen = strlen($otag); $this->ctag = $ctag; $this->ctagChar = $ctag[0]; $this->ctagLen = strlen($ctag); } /** * Add pragma token. * * Pragmas are hoisted to the front of the template, so all pragma tokens * will appear at the front of the token list. * * @param string $text * @param int $index * * @return int New index value */ private function addPragma($text, $index) { $end = strpos($text, $this->ctag, $index); $pragma = trim(substr($text, $index + 2, $end - $index - 2)); // Pragmas are hoisted to the front of the template. array_unshift($this->tokens, array( self::TYPE => self::T_PRAGMA, self::NAME => $pragma, self::LINE => 0, )); return $end + $this->ctagLen - 1; } } load('foo'); // equivalent to `file_get_contents(dirname(__FILE__).'/views/foo.mustache'); * * This is probably the most useful Mustache Loader implementation. It can be used for partials and normal Templates: * * $m = new Mustache(array( * 'loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'), * 'partials_loader' => new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views/partials'), * )); */ class Mustache_Loader_FilesystemLoader implements Mustache_Loader { private $baseDir; private $extension = '.mustache'; private $templates = array(); /** * Mustache filesystem Loader constructor. * * Passing an $options array allows overriding certain Loader options during instantiation: * * $options = array( * // The filename extension used for Mustache templates. Defaults to '.mustache' * 'extension' => '.ms', * ); * * @throws Mustache_Exception_RuntimeException if $baseDir does not exist * * @param string $baseDir Base directory containing Mustache template files * @param array $options Array of Loader options (default: array()) */ public function __construct($baseDir, array $options = array()) { $this->baseDir = $baseDir; if (strpos($this->baseDir, '://') === false) { $this->baseDir = realpath($this->baseDir); } if ($this->shouldCheckPath() && !is_dir($this->baseDir)) { throw new Mustache_Exception_RuntimeException(sprintf('FilesystemLoader baseDir must be a directory: %s', $baseDir)); } if (array_key_exists('extension', $options)) { if (empty($options['extension'])) { $this->extension = ''; } else { $this->extension = '.' . ltrim($options['extension'], '.'); } } } /** * Load a Template by name. * * $loader = new Mustache_Loader_FilesystemLoader(dirname(__FILE__).'/views'); * $loader->load('admin/dashboard'); // loads "./views/admin/dashboard.mustache"; * * @param string $name * * @return string Mustache Template source */ public function load($name) { if (!isset($this->templates[$name])) { $this->templates[$name] = $this->loadFile($name); } return $this->templates[$name]; } /** * Helper function for loading a Mustache file by name. * * @throws Mustache_Exception_UnknownTemplateException If a template file is not found * * @param string $name * * @return string Mustache Template source */ protected function loadFile($name) { $fileName = $this->getFileName($name); if ($this->shouldCheckPath() && !file_exists($fileName)) { throw new Mustache_Exception_UnknownTemplateException($name); } return file_get_contents($fileName); } /** * Helper function for getting a Mustache template file name. * * @param string $name * * @return string Template file name */ protected function getFileName($name) { $fileName = $this->baseDir . '/' . $name; if (substr($fileName, 0 - strlen($this->extension)) !== $this->extension) { $fileName .= $this->extension; } return $fileName; } /** * Only check if baseDir is a directory and requested templates are files if * baseDir is using the filesystem stream wrapper. * * @return bool Whether to check `is_dir` and `file_exists` */ protected function shouldCheckPath() { return strpos($this->baseDir, '://') === false || strpos($this->baseDir, 'file://') === 0; } } '{{ bar }}', * 'baz' => 'Hey {{ qux }}!' * ); * * $tpl = $loader->load('foo'); // '{{ bar }}' * * The ArrayLoader is used internally as a partials loader by Mustache_Engine instance when an array of partials * is set. It can also be used as a quick-and-dirty Template loader. */ class Mustache_Loader_ArrayLoader implements Mustache_Loader, Mustache_Loader_MutableLoader { private $templates; /** * ArrayLoader constructor. * * @param array $templates Associative array of Template source (default: array()) */ public function __construct(array $templates = array()) { $this->templates = $templates; } /** * Load a Template. * * @throws Mustache_Exception_UnknownTemplateException If a template file is not found * * @param string $name * * @return string Mustache Template source */ public function load($name) { if (!isset($this->templates[$name])) { throw new Mustache_Exception_UnknownTemplateException($name); } return $this->templates[$name]; } /** * Set an associative array of Template sources for this loader. * * @param array $templates */ public function setTemplates(array $templates) { $this->templates = $templates; } /** * Set a Template source by name. * * @param string $name * @param string $template Mustache Template source */ public function setTemplate($name, $template) { $this->templates[$name] = $template; } } load('hello'); * $goodbye = $loader->load('goodbye'); * * __halt_compiler(); * * @@ hello * Hello, {{ planet }}! * * @@ goodbye * Goodbye, cruel {{ planet }} * * Templates are deliniated by lines containing only `@@ name`. * * The InlineLoader is well-suited to micro-frameworks such as Silex: * * $app->register(new MustacheServiceProvider, array( * 'mustache.loader' => new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__) * )); * * $app->get('/{name}', function ($name) use ($app) { * return $app['mustache']->render('hello', compact('name')); * }) * ->value('name', 'world'); * * // ... * * __halt_compiler(); * * @@ hello * Hello, {{ name }}! */ class Mustache_Loader_InlineLoader implements Mustache_Loader { protected $fileName; protected $offset; protected $templates; /** * The InlineLoader requires a filename and offset to process templates. * * The magic constants `__FILE__` and `__COMPILER_HALT_OFFSET__` are usually * perfectly suited to the job: * * $loader = new Mustache_Loader_InlineLoader(__FILE__, __COMPILER_HALT_OFFSET__); * * Note that this only works if the loader is instantiated inside the same * file as the inline templates. If the templates are located in another * file, it would be necessary to manually specify the filename and offset. * * @param string $fileName The file to parse for inline templates * @param int $offset A string offset for the start of the templates. * This usually coincides with the `__halt_compiler` * call, and the `__COMPILER_HALT_OFFSET__` */ public function __construct($fileName, $offset) { if (!is_file($fileName)) { throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid filename.'); } if (!is_int($offset) || $offset < 0) { throw new Mustache_Exception_InvalidArgumentException('InlineLoader expects a valid file offset.'); } $this->fileName = $fileName; $this->offset = $offset; } /** * Load a Template by name. * * @throws Mustache_Exception_UnknownTemplateException If a template file is not found * * @param string $name * * @return string Mustache Template source */ public function load($name) { $this->loadTemplates(); if (!array_key_exists($name, $this->templates)) { throw new Mustache_Exception_UnknownTemplateException($name); } return $this->templates[$name]; } /** * Parse and load templates from the end of a source file. */ protected function loadTemplates() { if ($this->templates === null) { $this->templates = array(); $data = file_get_contents($this->fileName, false, null, $this->offset); foreach (preg_split("/^@@(?= [\w\d\.]+$)/m", $data, -1) as $chunk) { if (trim($chunk)) { list($name, $content) = explode("\n", $chunk, 2); $this->templates[trim($name)] = trim($content); } } } } } load('{{ foo }}'); // '{{ foo }}' * * This is the default Template Loader instance used by Mustache: * * $m = new Mustache; * $tpl = $m->loadTemplate('{{ foo }}'); * echo $tpl->render(array('foo' => 'bar')); // "bar" */ class Mustache_Loader_StringLoader implements Mustache_Loader { /** * Load a Template by source. * * @param string $name Mustache Template source * * @return string Mustache Template source */ public function load($name) { return $name; } } loaders = array(); foreach ($loaders as $loader) { $this->addLoader($loader); } } /** * Add a Loader instance. * * @param Mustache_Loader $loader */ public function addLoader(Mustache_Loader $loader) { $this->loaders[] = $loader; } /** * Load a Template by name. * * @throws Mustache_Exception_UnknownTemplateException If a template file is not found * * @param string $name * * @return string Mustache Template source */ public function load($name) { foreach ($this->loaders as $loader) { try { return $loader->load($name); } catch (Mustache_Exception_UnknownTemplateException $e) { // do nothing, check the next loader. } } throw new Mustache_Exception_UnknownTemplateException($name); } } '.ms', * 'stat_props' => array('size', 'mtime'), * ); * * Specifying 'stat_props' overrides the stat properties used to invalidate the template cache. By default, this * uses 'mtime' and 'size', but this can be set to any of the properties supported by stat(): * * http://php.net/manual/en/function.stat.php * * You can also disable filesystem stat entirely: * * $options = array('stat_props' => null); * * But with great power comes great responsibility. Namely, if you disable stat-based cache invalidation, * YOU MUST CLEAR THE TEMPLATE CACHE YOURSELF when your templates change. Make it part of your build or deploy * process so you don't forget! * * @throws Mustache_Exception_RuntimeException if $baseDir does not exist. * * @param string $baseDir Base directory containing Mustache template files. * @param array $options Array of Loader options (default: array()) */ public function __construct($baseDir, array $options = array()) { parent::__construct($baseDir, $options); if (array_key_exists('stat_props', $options)) { if (empty($options['stat_props'])) { $this->statProps = array(); } else { $this->statProps = $options['stat_props']; } } else { $this->statProps = array('size', 'mtime'); } } /** * Helper function for loading a Mustache file by name. * * @throws Mustache_Exception_UnknownTemplateException If a template file is not found. * * @param string $name * * @return Mustache_Source Mustache Template source */ protected function loadFile($name) { $fileName = $this->getFileName($name); if (!file_exists($fileName)) { throw new Mustache_Exception_UnknownTemplateException($name); } return new Mustache_Source_FilesystemSource($fileName, $this->statProps); } } dispatch('requests.before_request', array(&$url, &$headers, &$data, &$type, &$options)); if (!empty($options['transport'])) { $transport = $options['transport']; if (is_string($options['transport'])) { $transport = new $transport(); } } else { $need_ssl = (stripos($url, 'https://') === 0); $capabilities = array('ssl' => $need_ssl); $transport = self::get_transport($capabilities); } $response = $transport->request($url, $headers, $data, $options); $options['hooks']->dispatch('requests.before_parse', array(&$response, $url, $headers, $data, $type, $options)); return self::parse_response($response, $url, $headers, $data, $options); } /** * Send multiple HTTP requests simultaneously * * The `$requests` parameter takes an associative or indexed array of * request fields. The key of each request can be used to match up the * request with the returned data, or with the request passed into your * `multiple.request.complete` callback. * * The request fields value is an associative array with the following keys: * * - `url`: Request URL Same as the `$url` parameter to * {@see Requests::request} * (string, required) * - `headers`: Associative array of header fields. Same as the `$headers` * parameter to {@see Requests::request} * (array, default: `array()`) * - `data`: Associative array of data fields or a string. Same as the * `$data` parameter to {@see Requests::request} * (array|string, default: `array()`) * - `type`: HTTP request type (use Requests constants). Same as the `$type` * parameter to {@see Requests::request} * (string, default: `Requests::GET`) * - `cookies`: Associative array of cookie name to value, or cookie jar. * (array|Requests_Cookie_Jar) * * If the `$options` parameter is specified, individual requests will * inherit options from it. This can be used to use a single hooking system, * or set all the types to `Requests::POST`, for example. * * In addition, the `$options` parameter takes the following global options: * * - `complete`: A callback for when a request is complete. Takes two * parameters, a Requests_Response/Requests_Exception reference, and the * ID from the request array (Note: this can also be overridden on a * per-request basis, although that's a little silly) * (callback) * * @param array $requests Requests data (see description for more information) * @param array $options Global and default options (see {@see Requests::request}) * @return array Responses (either Requests_Response or a Requests_Exception object) */ public static function request_multiple($requests, $options = array()) { $options = array_merge(self::get_default_options(true), $options); if (!empty($options['hooks'])) { $options['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple')); if (!empty($options['complete'])) { $options['hooks']->register('multiple.request.complete', $options['complete']); } } foreach ($requests as $id => &$request) { if (!isset($request['headers'])) { $request['headers'] = array(); } if (!isset($request['data'])) { $request['data'] = array(); } if (!isset($request['type'])) { $request['type'] = self::GET; } if (!isset($request['options'])) { $request['options'] = $options; $request['options']['type'] = $request['type']; } else { if (empty($request['options']['type'])) { $request['options']['type'] = $request['type']; } $request['options'] = array_merge($options, $request['options']); } self::set_defaults($request['url'], $request['headers'], $request['data'], $request['type'], $request['options']); // Ensure we only hook in once if ($request['options']['hooks'] !== $options['hooks']) { $request['options']['hooks']->register('transport.internal.parse_response', array('Requests', 'parse_multiple')); if (!empty($request['options']['complete'])) { $request['options']['hooks']->register('multiple.request.complete', $request['options']['complete']); } } } unset($request); if (!empty($options['transport'])) { $transport = $options['transport']; if (is_string($options['transport'])) { $transport = new $transport(); } } else { $transport = self::get_transport(); } $responses = $transport->request_multiple($requests, $options); foreach ($responses as $id => &$response) { // If our hook got messed with somehow, ensure we end up with the // correct response if (is_string($response)) { $request = $requests[$id]; self::parse_multiple($response, $request); $request['options']['hooks']->dispatch('multiple.request.complete', array(&$response, $id)); } } return $responses; } /** * Get the default options * * @see Requests::request() for values returned by this method * @param boolean $multirequest Is this a multirequest? * @return array Default option values */ protected static function get_default_options($multirequest = false) { $defaults = array( 'timeout' => 10, 'connect_timeout' => 10, 'useragent' => 'php-requests/' . self::VERSION, 'protocol_version' => 1.1, 'redirected' => 0, 'redirects' => 10, 'follow_redirects' => true, 'blocking' => true, 'type' => self::GET, 'filename' => false, 'auth' => false, 'proxy' => false, 'cookies' => false, 'max_bytes' => false, 'idn' => true, 'hooks' => null, 'transport' => null, 'verify' => self::get_certificate_path(), 'verifyname' => true, ); if ($multirequest !== false) { $defaults['complete'] = null; } return $defaults; } /** * Get default certificate path. * * @return string Default certificate path. */ public static function get_certificate_path() { if (!empty(self::$certificate_path)) { return self::$certificate_path; } return dirname(__FILE__) . '/Requests/Transport/cacert.pem'; } /** * Set default certificate path. * * @param string $path Certificate path, pointing to a PEM file. */ public static function set_certificate_path($path) { self::$certificate_path = $path; } /** * Set the default values * * @param string $url URL to request * @param array $headers Extra headers to send with the request * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests * @param string $type HTTP request type * @param array $options Options for the request * @return array $options */ protected static function set_defaults(&$url, &$headers, &$data, &$type, &$options) { if (!preg_match('/^http(s)?:\/\//i', $url, $matches)) { throw new Requests_Exception('Only HTTP(S) requests are handled.', 'nonhttp', $url); } if (empty($options['hooks'])) { $options['hooks'] = new Requests_Hooks(); } if (is_array($options['auth'])) { $options['auth'] = new Requests_Auth_Basic($options['auth']); } if ($options['auth'] !== false) { $options['auth']->register($options['hooks']); } if (is_string($options['proxy']) || is_array($options['proxy'])) { $options['proxy'] = new Requests_Proxy_HTTP($options['proxy']); } if ($options['proxy'] !== false) { $options['proxy']->register($options['hooks']); } if (is_array($options['cookies'])) { $options['cookies'] = new Requests_Cookie_Jar($options['cookies']); } elseif (empty($options['cookies'])) { $options['cookies'] = new Requests_Cookie_Jar(); } if ($options['cookies'] !== false) { $options['cookies']->register($options['hooks']); } if ($options['idn'] !== false) { $iri = new Requests_IRI($url); $iri->host = Requests_IDNAEncoder::encode($iri->ihost); $url = $iri->uri; } // Massage the type to ensure we support it. $type = strtoupper($type); if (!isset($options['data_format'])) { if (in_array($type, array(self::HEAD, self::GET, self::DELETE), true)) { $options['data_format'] = 'query'; } else { $options['data_format'] = 'body'; } } } /** * HTTP response parser * * @throws Requests_Exception On missing head/body separator (`requests.no_crlf_separator`) * @throws Requests_Exception On missing head/body separator (`noversion`) * @throws Requests_Exception On missing head/body separator (`toomanyredirects`) * * @param string $headers Full response text including headers and body * @param string $url Original request URL * @param array $req_headers Original $headers array passed to {@link request()}, in case we need to follow redirects * @param array $req_data Original $data array passed to {@link request()}, in case we need to follow redirects * @param array $options Original $options array passed to {@link request()}, in case we need to follow redirects * @return Requests_Response */ protected static function parse_response($headers, $url, $req_headers, $req_data, $options) { $return = new Requests_Response(); if (!$options['blocking']) { return $return; } $return->raw = $headers; $return->url = (string) $url; $return->body = ''; if (!$options['filename']) { $pos = strpos($headers, "\r\n\r\n"); if ($pos === false) { // Crap! throw new Requests_Exception('Missing header/body separator', 'requests.no_crlf_separator'); } $headers = substr($return->raw, 0, $pos); // Headers will always be separated from the body by two new lines - `\n\r\n\r`. $body = substr($return->raw, $pos + 4); if (!empty($body)) { $return->body = $body; } } // Pretend CRLF = LF for compatibility (RFC 2616, section 19.3) $headers = str_replace("\r\n", "\n", $headers); // Unfold headers (replace [CRLF] 1*( SP | HT ) with SP) as per RFC 2616 (section 2.2) $headers = preg_replace('/\n[ \t]/', ' ', $headers); $headers = explode("\n", $headers); preg_match('#^HTTP/(1\.\d)[ \t]+(\d+)#i', array_shift($headers), $matches); if (empty($matches)) { throw new Requests_Exception('Response could not be parsed', 'noversion', $headers); } $return->protocol_version = (float) $matches[1]; $return->status_code = (int) $matches[2]; if ($return->status_code >= 200 && $return->status_code < 300) { $return->success = true; } foreach ($headers as $header) { list($key, $value) = explode(':', $header, 2); $value = trim($value); preg_replace('#(\s+)#i', ' ', $value); $return->headers[$key] = $value; } if (isset($return->headers['transfer-encoding'])) { $return->body = self::decode_chunked($return->body); unset($return->headers['transfer-encoding']); } if (isset($return->headers['content-encoding'])) { $return->body = self::decompress($return->body); } //fsockopen and cURL compatibility if (isset($return->headers['connection'])) { unset($return->headers['connection']); } $options['hooks']->dispatch('requests.before_redirect_check', array(&$return, $req_headers, $req_data, $options)); if ($return->is_redirect() && $options['follow_redirects'] === true) { if (isset($return->headers['location']) && $options['redirected'] < $options['redirects']) { if ($return->status_code === 303) { $options['type'] = self::GET; } $options['redirected']++; $location = $return->headers['location']; if (strpos($location, 'http://') !== 0 && strpos($location, 'https://') !== 0) { // relative redirect, for compatibility make it absolute $location = Requests_IRI::absolutize($url, $location); $location = $location->uri; } $hook_args = array( &$location, &$req_headers, &$req_data, &$options, $return, ); $options['hooks']->dispatch('requests.before_redirect', $hook_args); $redirected = self::request($location, $req_headers, $req_data, $options['type'], $options); $redirected->history[] = $return; return $redirected; } elseif ($options['redirected'] >= $options['redirects']) { throw new Requests_Exception('Too many redirects', 'toomanyredirects', $return); } } $return->redirects = $options['redirected']; $options['hooks']->dispatch('requests.after_request', array(&$return, $req_headers, $req_data, $options)); return $return; } /** * Callback for `transport.internal.parse_response` * * Internal use only. Converts a raw HTTP response to a Requests_Response * while still executing a multiple request. * * @param string $response Full response text including headers and body (will be overwritten with Response instance) * @param array $request Request data as passed into {@see Requests::request_multiple()} * @return null `$response` is either set to a Requests_Response instance, or a Requests_Exception object */ public static function parse_multiple(&$response, $request) { try { $url = $request['url']; $headers = $request['headers']; $data = $request['data']; $options = $request['options']; $response = self::parse_response($response, $url, $headers, $data, $options); } catch (Requests_Exception $e) { $response = $e; } } /** * Decoded a chunked body as per RFC 2616 * * @see https://tools.ietf.org/html/rfc2616#section-3.6.1 * @param string $data Chunked body * @return string Decoded body */ protected static function decode_chunked($data) { if (!preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', trim($data))) { return $data; } $decoded = ''; $encoded = $data; while (true) { $is_chunked = (bool) preg_match('/^([0-9a-f]+)(?:;(?:[\w-]*)(?:=(?:(?:[\w-]*)*|"(?:[^\r\n])*"))?)*\r\n/i', $encoded, $matches); if (!$is_chunked) { // Looks like it's not chunked after all return $data; } $length = hexdec(trim($matches[1])); if ($length === 0) { // Ignore trailer headers return $decoded; } $chunk_length = strlen($matches[0]); $decoded .= substr($encoded, $chunk_length, $length); $encoded = substr($encoded, $chunk_length + $length + 2); if (trim($encoded) === '0' || empty($encoded)) { return $decoded; } } // We'll never actually get down here // @codeCoverageIgnoreStart } // @codeCoverageIgnoreEnd /** * Convert a key => value array to a 'key: value' array for headers * * @param array $array Dictionary of header values * @return array List of headers */ public static function flatten($array) { $return = array(); foreach ($array as $key => $value) { $return[] = sprintf('%s: %s', $key, $value); } return $return; } /** * Convert a key => value array to a 'key: value' array for headers * * @codeCoverageIgnore * @deprecated Misspelling of {@see Requests::flatten} * @param array $array Dictionary of header values * @return array List of headers */ public static function flattern($array) { return self::flatten($array); } /** * Decompress an encoded body * * Implements gzip, compress and deflate. Guesses which it is by attempting * to decode. * * @param string $data Compressed data in one of the above formats * @return string Decompressed string */ public static function decompress($data) { if (substr($data, 0, 2) !== "\x1f\x8b" && substr($data, 0, 2) !== "\x78\x9c") { // Not actually compressed. Probably cURL ruining this for us. return $data; } if (function_exists('gzdecode')) { // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.gzdecodeFound -- Wrapped in function_exists() for PHP 5.2. $decoded = @gzdecode($data); if ($decoded !== false) { return $decoded; } } if (function_exists('gzinflate')) { $decoded = @gzinflate($data); if ($decoded !== false) { return $decoded; } } $decoded = self::compatible_gzinflate($data); if ($decoded !== false) { return $decoded; } if (function_exists('gzuncompress')) { $decoded = @gzuncompress($data); if ($decoded !== false) { return $decoded; } } return $data; } /** * Decompression of deflated string while staying compatible with the majority of servers. * * Certain Servers will return deflated data with headers which PHP's gzinflate() * function cannot handle out of the box. The following function has been created from * various snippets on the gzinflate() PHP documentation. * * Warning: Magic numbers within. Due to the potential different formats that the compressed * data may be returned in, some "magic offsets" are needed to ensure proper decompression * takes place. For a simple progmatic way to determine the magic offset in use, see: * https://core.trac.wordpress.org/ticket/18273 * * @since 2.8.1 * @link https://core.trac.wordpress.org/ticket/18273 * @link https://secure.php.net/manual/en/function.gzinflate.php#70875 * @link https://secure.php.net/manual/en/function.gzinflate.php#77336 * * @param string $gz_data String to decompress. * @return string|bool False on failure. */ public static function compatible_gzinflate($gz_data) { // Compressed data might contain a full zlib header, if so strip it for // gzinflate() if (substr($gz_data, 0, 3) === "\x1f\x8b\x08") { $i = 10; $flg = ord(substr($gz_data, 3, 1)); if ($flg > 0) { if ($flg & 4) { list($xlen) = unpack('v', substr($gz_data, $i, 2)); $i += 2 + $xlen; } if ($flg & 8) { $i = strpos($gz_data, "\0", $i) + 1; } if ($flg & 16) { $i = strpos($gz_data, "\0", $i) + 1; } if ($flg & 2) { $i += 2; } } $decompressed = self::compatible_gzinflate(substr($gz_data, $i)); if ($decompressed !== false) { return $decompressed; } } // If the data is Huffman Encoded, we must first strip the leading 2 // byte Huffman marker for gzinflate() // The response is Huffman coded by many compressors such as // java.util.zip.Deflater, Ruby’s Zlib::Deflate, and .NET's // System.IO.Compression.DeflateStream. // // See https://decompres.blogspot.com/ for a quick explanation of this // data type $huffman_encoded = false; // low nibble of first byte should be 0x08 list(, $first_nibble) = unpack('h', $gz_data); // First 2 bytes should be divisible by 0x1F list(, $first_two_bytes) = unpack('n', $gz_data); if ($first_nibble === 0x08 && ($first_two_bytes % 0x1F) === 0) { $huffman_encoded = true; } if ($huffman_encoded) { $decompressed = @gzinflate(substr($gz_data, 2)); if ($decompressed !== false) { return $decompressed; } } if (substr($gz_data, 0, 4) === "\x50\x4b\x03\x04") { // ZIP file format header // Offset 6: 2 bytes, General-purpose field // Offset 26: 2 bytes, filename length // Offset 28: 2 bytes, optional field length // Offset 30: Filename field, followed by optional field, followed // immediately by data list(, $general_purpose_flag) = unpack('v', substr($gz_data, 6, 2)); // If the file has been compressed on the fly, 0x08 bit is set of // the general purpose field. We can use this to differentiate // between a compressed document, and a ZIP file $zip_compressed_on_the_fly = ((0x08 & $general_purpose_flag) === 0x08); if (!$zip_compressed_on_the_fly) { // Don't attempt to decode a compressed zip file return $gz_data; } // Determine the first byte of data, based on the above ZIP header // offsets: $first_file_start = array_sum(unpack('v2', substr($gz_data, 26, 4))); $decompressed = @gzinflate(substr($gz_data, 30 + $first_file_start)); if ($decompressed !== false) { return $decompressed; } return false; } // Finally fall back to straight gzinflate $decompressed = @gzinflate($gz_data); if ($decompressed !== false) { return $decompressed; } // Fallback for all above failing, not expected, but included for // debugging and preventing regressions and to track stats $decompressed = @gzinflate(substr($gz_data, 2)); if ($decompressed !== false) { return $decompressed; } return false; } public static function match_domain($host, $reference) { // Check for a direct match if ($host === $reference) { return true; } // Calculate the valid wildcard match if the host is not an IP address // Also validates that the host has 3 parts or more, as per Firefox's // ruleset. $parts = explode('.', $host); if (ip2long($host) === false && count($parts) >= 3) { $parts[0] = '*'; $wildcard = implode('.', $parts); if ($wildcard === $reference) { return true; } } return false; } } 0 is executed later */ public function register($hook, $callback, $priority = 0); /** * Dispatch a message * * @param string $hook Hook name * @param array $parameters Parameters to pass to callbacks * @return boolean Successfulness */ public function dispatch($hook, $parameters = array()); } useragent = 'X';` * * @var array */ public $options = array(); /** * Create a new session * * @param string|null $url Base URL for requests * @param array $headers Default headers for requests * @param array $data Default data for requests * @param array $options Default options for requests */ public function __construct($url = null, $headers = array(), $data = array(), $options = array()) { $this->url = $url; $this->headers = $headers; $this->data = $data; $this->options = $options; if (empty($this->options['cookies'])) { $this->options['cookies'] = new Requests_Cookie_Jar(); } } /** * Get a property's value * * @param string $key Property key * @return mixed|null Property value, null if none found */ public function __get($key) { if (isset($this->options[$key])) { return $this->options[$key]; } return null; } /** * Set a property's value * * @param string $key Property key * @param mixed $value Property value */ public function __set($key, $value) { $this->options[$key] = $value; } /** * Remove a property's value * * @param string $key Property key */ public function __isset($key) { return isset($this->options[$key]); } /** * Remove a property's value * * @param string $key Property key */ public function __unset($key) { if (isset($this->options[$key])) { unset($this->options[$key]); } } /**#@+ * @see request() * @param string $url * @param array $headers * @param array $options * @return Requests_Response */ /** * Send a GET request */ public function get($url, $headers = array(), $options = array()) { return $this->request($url, $headers, null, Requests::GET, $options); } /** * Send a HEAD request */ public function head($url, $headers = array(), $options = array()) { return $this->request($url, $headers, null, Requests::HEAD, $options); } /** * Send a DELETE request */ public function delete($url, $headers = array(), $options = array()) { return $this->request($url, $headers, null, Requests::DELETE, $options); } /**#@-*/ /**#@+ * @see request() * @param string $url * @param array $headers * @param array $data * @param array $options * @return Requests_Response */ /** * Send a POST request */ public function post($url, $headers = array(), $data = array(), $options = array()) { return $this->request($url, $headers, $data, Requests::POST, $options); } /** * Send a PUT request */ public function put($url, $headers = array(), $data = array(), $options = array()) { return $this->request($url, $headers, $data, Requests::PUT, $options); } /** * Send a PATCH request * * Note: Unlike {@see post} and {@see put}, `$headers` is required, as the * specification recommends that should send an ETag * * @link https://tools.ietf.org/html/rfc5789 */ public function patch($url, $headers, $data = array(), $options = array()) { return $this->request($url, $headers, $data, Requests::PATCH, $options); } /**#@-*/ /** * Main interface for HTTP requests * * This method initiates a request and sends it via a transport before * parsing. * * @see Requests::request() * * @throws Requests_Exception On invalid URLs (`nonhttp`) * * @param string $url URL to request * @param array $headers Extra headers to send with the request * @param array|null $data Data to send either as a query string for GET/HEAD requests, or in the body for POST requests * @param string $type HTTP request type (use Requests constants) * @param array $options Options for the request (see {@see Requests::request}) * @return Requests_Response */ public function request($url, $headers = array(), $data = array(), $type = Requests::GET, $options = array()) { $request = $this->merge_request(compact('url', 'headers', 'data', 'options')); return Requests::request($request['url'], $request['headers'], $request['data'], $type, $request['options']); } /** * Send multiple HTTP requests simultaneously * * @see Requests::request_multiple() * * @param array $requests Requests data (see {@see Requests::request_multiple}) * @param array $options Global and default options (see {@see Requests::request}) * @return array Responses (either Requests_Response or a Requests_Exception object) */ public function request_multiple($requests, $options = array()) { foreach ($requests as $key => $request) { $requests[$key] = $this->merge_request($request, false); } $options = array_merge($this->options, $options); // Disallow forcing the type, as that's a per request setting unset($options['type']); return Requests::request_multiple($requests, $options); } /** * Merge a request's data with the default data * * @param array $request Request data (same form as {@see request_multiple}) * @param boolean $merge_options Should we merge options as well? * @return array Request data */ protected function merge_request($request, $merge_options = true) { if ($this->url !== null) { $request['url'] = Requests_IRI::absolutize($this->url, $request['url']); $request['url'] = $request['url']->uri; } if (empty($request['headers'])) { $request['headers'] = array(); } $request['headers'] = array_merge($this->headers, $request['headers']); if (empty($request['data'])) { if (is_array($this->data)) { $request['data'] = $this->data; } } elseif (is_array($request['data']) && is_array($this->data)) { $request['data'] = array_merge($this->data, $request['data']); } if ($merge_options !== false) { $request['options'] = array_merge($this->options, $request['options']); // Disallow forcing the type, as that's a per request setting unset($request['options']['type']); } return $request; } } 0) { if ($position + $length > $strlen) { throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character); } for ($position++; $remaining > 0; $position++) { $value = ord($input[$position]); // If it is invalid, count the sequence as invalid and reprocess the current byte: if (($value & 0xC0) !== 0x80) { throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character); } --$remaining; $character |= ($value & 0x3F) << ($remaining * 6); } $position--; } if (// Non-shortest form sequences are invalid $length > 1 && $character <= 0x7F || $length > 2 && $character <= 0x7FF || $length > 3 && $character <= 0xFFFF // Outside of range of ucschar codepoints // Noncharacters || ($character & 0xFFFE) === 0xFFFE || $character >= 0xFDD0 && $character <= 0xFDEF || ( // Everything else not in ucschar $character > 0xD7FF && $character < 0xF900 || $character < 0x20 || $character > 0x7E && $character < 0xA0 || $character > 0xEFFFD ) ) { throw new Requests_Exception('Invalid Unicode codepoint', 'idna.invalidcodepoint', $character); } $codepoints[] = $character; } return $codepoints; } /** * RFC3492-compliant encoder * * @internal Pseudo-code from Section 6.3 is commented with "#" next to relevant code * @throws Requests_Exception On character outside of the domain (never happens with Punycode) (`idna.character_outside_domain`) * * @param string $input UTF-8 encoded string to encode * @return string Punycode-encoded string */ public static function punycode_encode($input) { $output = ''; // let n = initial_n $n = self::BOOTSTRAP_INITIAL_N; // let delta = 0 $delta = 0; // let bias = initial_bias $bias = self::BOOTSTRAP_INITIAL_BIAS; // let h = b = the number of basic code points in the input $h = 0; $b = 0; // see loop // copy them to the output in order $codepoints = self::utf8_to_codepoints($input); $extended = array(); foreach ($codepoints as $char) { if ($char < 128) { // Character is valid ASCII // TODO: this should also check if it's valid for a URL $output .= chr($char); $h++; } // Check if the character is non-ASCII, but below initial n // This never occurs for Punycode, so ignore in coverage // @codeCoverageIgnoreStart elseif ($char < $n) { throw new Requests_Exception('Invalid character', 'idna.character_outside_domain', $char); } // @codeCoverageIgnoreEnd else { $extended[$char] = true; } } $extended = array_keys($extended); sort($extended); $b = $h; // [copy them] followed by a delimiter if b > 0 if (strlen($output) > 0) { $output .= '-'; } // {if the input contains a non-basic code point < n then fail} // while h < length(input) do begin $codepointcount = count($codepoints); while ($h < $codepointcount) { // let m = the minimum code point >= n in the input $m = array_shift($extended); //printf('next code point to insert is %s' . PHP_EOL, dechex($m)); // let delta = delta + (m - n) * (h + 1), fail on overflow $delta += ($m - $n) * ($h + 1); // let n = m $n = $m; // for each code point c in the input (in order) do begin for ($num = 0; $num < $codepointcount; $num++) { $c = $codepoints[$num]; // if c < n then increment delta, fail on overflow if ($c < $n) { $delta++; } // if c == n then begin elseif ($c === $n) { // let q = delta $q = $delta; // for k = base to infinity in steps of base do begin for ($k = self::BOOTSTRAP_BASE; ; $k += self::BOOTSTRAP_BASE) { // let t = tmin if k <= bias {+ tmin}, or // tmax if k >= bias + tmax, or k - bias otherwise if ($k <= ($bias + self::BOOTSTRAP_TMIN)) { $t = self::BOOTSTRAP_TMIN; } elseif ($k >= ($bias + self::BOOTSTRAP_TMAX)) { $t = self::BOOTSTRAP_TMAX; } else { $t = $k - $bias; } // if q < t then break if ($q < $t) { break; } // output the code point for digit t + ((q - t) mod (base - t)) $digit = $t + (($q - $t) % (self::BOOTSTRAP_BASE - $t)); $output .= self::digit_to_char($digit); // let q = (q - t) div (base - t) $q = floor(($q - $t) / (self::BOOTSTRAP_BASE - $t)); } // end // output the code point for digit q $output .= self::digit_to_char($q); // let bias = adapt(delta, h + 1, test h equals b?) $bias = self::adapt($delta, $h + 1, $h === $b); // let delta = 0 $delta = 0; // increment h $h++; } // end } // end // increment delta and n $delta++; $n++; } // end return $output; } /** * Convert a digit to its respective character * * @see https://tools.ietf.org/html/rfc3492#section-5 * @throws Requests_Exception On invalid digit (`idna.invalid_digit`) * * @param int $digit Digit in the range 0-35 * @return string Single character corresponding to digit */ protected static function digit_to_char($digit) { // @codeCoverageIgnoreStart // As far as I know, this never happens, but still good to be sure. if ($digit < 0 || $digit > 35) { throw new Requests_Exception(sprintf('Invalid digit %d', $digit), 'idna.invalid_digit', $digit); } // @codeCoverageIgnoreEnd $digits = 'abcdefghijklmnopqrstuvwxyz0123456789'; return substr($digits, $digit, 1); } /** * Adapt the bias * * @see https://tools.ietf.org/html/rfc3492#section-6.1 * @param int $delta * @param int $numpoints * @param bool $firsttime * @return int New bias * * function adapt(delta,numpoints,firsttime): */ protected static function adapt($delta, $numpoints, $firsttime) { // if firsttime then let delta = delta div damp if ($firsttime) { $delta = floor($delta / self::BOOTSTRAP_DAMP); } // else let delta = delta div 2 else { $delta = floor($delta / 2); } // let delta = delta + (delta div numpoints) $delta += floor($delta / $numpoints); // let k = 0 $k = 0; // while delta > ((base - tmin) * tmax) div 2 do begin $max = floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN) * self::BOOTSTRAP_TMAX) / 2); while ($delta > $max) { // let delta = delta div (base - tmin) $delta = floor($delta / (self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN)); // let k = k + base $k += self::BOOTSTRAP_BASE; } // end // return k + (((base - tmin + 1) * delta) div (delta + skew)) return $k + floor(((self::BOOTSTRAP_BASE - self::BOOTSTRAP_TMIN + 1) * $delta) / ($delta + self::BOOTSTRAP_SKEW)); } } user, $this->pass) = $args; } } /** * Register the necessary callbacks * * @see curl_before_send * @see fsockopen_header * @param Requests_Hooks $hooks Hook system */ public function register(Requests_Hooks $hooks) { $hooks->register('curl.before_send', array($this, 'curl_before_send')); $hooks->register('fsockopen.after_headers', array($this, 'fsockopen_header')); } /** * Set cURL parameters before the data is sent * * @param resource $handle cURL resource */ public function curl_before_send(&$handle) { curl_setopt($handle, CURLOPT_HTTPAUTH, CURLAUTH_BASIC); curl_setopt($handle, CURLOPT_USERPWD, $this->getAuthString()); } /** * Add extra headers to the request before sending * * @param string $out HTTP header string */ public function fsockopen_header(&$out) { $out .= sprintf("Authorization: Basic %s\r\n", base64_encode($this->getAuthString())); } /** * Get the authentication string (user:pass) * * @return string */ public function getAuthString() { return $this->user . ':' . $this->pass; } } FF01:0:0:0:0:0:0:101 * ::1 -> 0:0:0:0:0:0:0:1 * * @author Alexander Merz * @author elfrink at introweb dot nl * @author Josh Peck * @copyright 2003-2005 The PHP Group * @license http://www.opensource.org/licenses/bsd-license.php * @param string $ip An IPv6 address * @return string The uncompressed IPv6 address */ public static function uncompress($ip) { if (substr_count($ip, '::') !== 1) { return $ip; } list($ip1, $ip2) = explode('::', $ip); $c1 = ($ip1 === '') ? -1 : substr_count($ip1, ':'); $c2 = ($ip2 === '') ? -1 : substr_count($ip2, ':'); if (strpos($ip2, '.') !== false) { $c2++; } // :: if ($c1 === -1 && $c2 === -1) { $ip = '0:0:0:0:0:0:0:0'; } // ::xxx elseif ($c1 === -1) { $fill = str_repeat('0:', 7 - $c2); $ip = str_replace('::', $fill, $ip); } // xxx:: elseif ($c2 === -1) { $fill = str_repeat(':0', 7 - $c1); $ip = str_replace('::', $fill, $ip); } // xxx::xxx else { $fill = ':' . str_repeat('0:', 6 - $c2 - $c1); $ip = str_replace('::', $fill, $ip); } return $ip; } /** * Compresses an IPv6 address * * RFC 4291 allows you to compress consecutive zero pieces in an address to * '::'. This method expects a valid IPv6 address and compresses consecutive * zero pieces to '::'. * * Example: FF01:0:0:0:0:0:0:101 -> FF01::101 * 0:0:0:0:0:0:0:1 -> ::1 * * @see uncompress() * @param string $ip An IPv6 address * @return string The compressed IPv6 address */ public static function compress($ip) { // Prepare the IP to be compressed $ip = self::uncompress($ip); $ip_parts = self::split_v6_v4($ip); // Replace all leading zeros $ip_parts[0] = preg_replace('/(^|:)0+([0-9])/', '\1\2', $ip_parts[0]); // Find bunches of zeros if (preg_match_all('/(?:^|:)(?:0(?::|$))+/', $ip_parts[0], $matches, PREG_OFFSET_CAPTURE)) { $max = 0; $pos = null; foreach ($matches[0] as $match) { if (strlen($match[0]) > $max) { $max = strlen($match[0]); $pos = $match[1]; } } $ip_parts[0] = substr_replace($ip_parts[0], '::', $pos, $max); } if ($ip_parts[1] !== '') { return implode(':', $ip_parts); } else { return $ip_parts[0]; } } /** * Splits an IPv6 address into the IPv6 and IPv4 representation parts * * RFC 4291 allows you to represent the last two parts of an IPv6 address * using the standard IPv4 representation * * Example: 0:0:0:0:0:0:13.1.68.3 * 0:0:0:0:0:FFFF:129.144.52.38 * * @param string $ip An IPv6 address * @return string[] [0] contains the IPv6 represented part, and [1] the IPv4 represented part */ protected static function split_v6_v4($ip) { if (strpos($ip, '.') !== false) { $pos = strrpos($ip, ':'); $ipv6_part = substr($ip, 0, $pos); $ipv4_part = substr($ip, $pos + 1); return array($ipv6_part, $ipv4_part); } else { return array($ip, ''); } } /** * Checks an IPv6 address * * Checks if the given IP is a valid IPv6 address * * @param string $ip An IPv6 address * @return bool true if $ip is a valid IPv6 address */ public static function check_ipv6($ip) { $ip = self::uncompress($ip); list($ipv6, $ipv4) = self::split_v6_v4($ip); $ipv6 = explode(':', $ipv6); $ipv4 = explode('.', $ipv4); if (count($ipv6) === 8 && count($ipv4) === 1 || count($ipv6) === 6 && count($ipv4) === 4) { foreach ($ipv6 as $ipv6_part) { // The section can't be empty if ($ipv6_part === '') { return false; } // Nor can it be over four characters if (strlen($ipv6_part) > 4) { return false; } // Remove leading zeros (this is safe because of the above) $ipv6_part = ltrim($ipv6_part, '0'); if ($ipv6_part === '') { $ipv6_part = '0'; } // Check the value is valid $value = hexdec($ipv6_part); if (dechex($value) !== strtolower($ipv6_part) || $value < 0 || $value > 0xFFFF) { return false; } } if (count($ipv4) === 4) { foreach ($ipv4 as $ipv4_part) { $value = (int) $ipv4_part; if ((string) $value !== $ipv4_part || $value < 0 || $value > 0xFF) { return false; } } } return true; } else { return false; } } } cookies = $cookies; } /** * Normalise cookie data into a Requests_Cookie * * @param string|Requests_Cookie $cookie * @return Requests_Cookie */ public function normalize_cookie($cookie, $key = null) { if ($cookie instanceof Requests_Cookie) { return $cookie; } return Requests_Cookie::parse($cookie, $key); } /** * Normalise cookie data into a Requests_Cookie * * @codeCoverageIgnore * @deprecated Use {@see Requests_Cookie_Jar::normalize_cookie} * @return Requests_Cookie */ public function normalizeCookie($cookie, $key = null) { return $this->normalize_cookie($cookie, $key); } /** * Check if the given item exists * * @param string $key Item key * @return boolean Does the item exist? */ public function offsetExists($key) { return isset($this->cookies[$key]); } /** * Get the value for the item * * @param string $key Item key * @return string|null Item value (null if offsetExists is false) */ public function offsetGet($key) { if (!isset($this->cookies[$key])) { return null; } return $this->cookies[$key]; } /** * Set the given item * * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`) * * @param string $key Item name * @param string $value Item value */ public function offsetSet($key, $value) { if ($key === null) { throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset'); } $this->cookies[$key] = $value; } /** * Unset the given header * * @param string $key */ public function offsetUnset($key) { unset($this->cookies[$key]); } /** * Get an iterator for the data * * @return ArrayIterator */ public function getIterator() { return new ArrayIterator($this->cookies); } /** * Register the cookie handler with the request's hooking system * * @param Requests_Hooker $hooks Hooking system */ public function register(Requests_Hooker $hooks) { $hooks->register('requests.before_request', array($this, 'before_request')); $hooks->register('requests.before_redirect_check', array($this, 'before_redirect_check')); } /** * Add Cookie header to a request if we have any * * As per RFC 6265, cookies are separated by '; ' * * @param string $url * @param array $headers * @param array $data * @param string $type * @param array $options */ public function before_request($url, &$headers, &$data, &$type, &$options) { if (!$url instanceof Requests_IRI) { $url = new Requests_IRI($url); } if (!empty($this->cookies)) { $cookies = array(); foreach ($this->cookies as $key => $cookie) { $cookie = $this->normalize_cookie($cookie, $key); // Skip expired cookies if ($cookie->is_expired()) { continue; } if ($cookie->domain_matches($url->host)) { $cookies[] = $cookie->format_for_header(); } } $headers['Cookie'] = implode('; ', $cookies); } } /** * Parse all cookies from a response and attach them to the response * * @var Requests_Response $response */ public function before_redirect_check(Requests_Response $return) { $url = $return->url; if (!$url instanceof Requests_IRI) { $url = new Requests_IRI($url); } $cookies = Requests_Cookie::parse_from_headers($return->headers, $url); $this->cookies = array_merge($this->cookies, $cookies); $return->cookies = $this; } } name = $name; $this->value = $value; $this->attributes = $attributes; $default_flags = array( 'creation' => time(), 'last-access' => time(), 'persistent' => false, 'host-only' => true, ); $this->flags = array_merge($default_flags, $flags); $this->reference_time = time(); if ($reference_time !== null) { $this->reference_time = $reference_time; } $this->normalize(); } /** * Check if a cookie is expired. * * Checks the age against $this->reference_time to determine if the cookie * is expired. * * @return boolean True if expired, false if time is valid. */ public function is_expired() { // RFC6265, s. 4.1.2.2: // If a cookie has both the Max-Age and the Expires attribute, the Max- // Age attribute has precedence and controls the expiration date of the // cookie. if (isset($this->attributes['max-age'])) { $max_age = $this->attributes['max-age']; return $max_age < $this->reference_time; } if (isset($this->attributes['expires'])) { $expires = $this->attributes['expires']; return $expires < $this->reference_time; } return false; } /** * Check if a cookie is valid for a given URI * * @param Requests_IRI $uri URI to check * @return boolean Whether the cookie is valid for the given URI */ public function uri_matches(Requests_IRI $uri) { if (!$this->domain_matches($uri->host)) { return false; } if (!$this->path_matches($uri->path)) { return false; } return empty($this->attributes['secure']) || $uri->scheme === 'https'; } /** * Check if a cookie is valid for a given domain * * @param string $string Domain to check * @return boolean Whether the cookie is valid for the given domain */ public function domain_matches($string) { if (!isset($this->attributes['domain'])) { // Cookies created manually; cookies created by Requests will set // the domain to the requested domain return true; } $domain_string = $this->attributes['domain']; if ($domain_string === $string) { // The domain string and the string are identical. return true; } // If the cookie is marked as host-only and we don't have an exact // match, reject the cookie if ($this->flags['host-only'] === true) { return false; } if (strlen($string) <= strlen($domain_string)) { // For obvious reasons, the string cannot be a suffix if the domain // is shorter than the domain string return false; } if (substr($string, -1 * strlen($domain_string)) !== $domain_string) { // The domain string should be a suffix of the string. return false; } $prefix = substr($string, 0, strlen($string) - strlen($domain_string)); if (substr($prefix, -1) !== '.') { // The last character of the string that is not included in the // domain string should be a %x2E (".") character. return false; } // The string should be a host name (i.e., not an IP address). return !preg_match('#^(.+\.)\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$#', $string); } /** * Check if a cookie is valid for a given path * * From the path-match check in RFC 6265 section 5.1.4 * * @param string $request_path Path to check * @return boolean Whether the cookie is valid for the given path */ public function path_matches($request_path) { if (empty($request_path)) { // Normalize empty path to root $request_path = '/'; } if (!isset($this->attributes['path'])) { // Cookies created manually; cookies created by Requests will set // the path to the requested path return true; } $cookie_path = $this->attributes['path']; if ($cookie_path === $request_path) { // The cookie-path and the request-path are identical. return true; } if (strlen($request_path) > strlen($cookie_path) && substr($request_path, 0, strlen($cookie_path)) === $cookie_path) { if (substr($cookie_path, -1) === '/') { // The cookie-path is a prefix of the request-path, and the last // character of the cookie-path is %x2F ("/"). return true; } if (substr($request_path, strlen($cookie_path), 1) === '/') { // The cookie-path is a prefix of the request-path, and the // first character of the request-path that is not included in // the cookie-path is a %x2F ("/") character. return true; } } return false; } /** * Normalize cookie and attributes * * @return boolean Whether the cookie was successfully normalized */ public function normalize() { foreach ($this->attributes as $key => $value) { $orig_value = $value; $value = $this->normalize_attribute($key, $value); if ($value === null) { unset($this->attributes[$key]); continue; } if ($value !== $orig_value) { $this->attributes[$key] = $value; } } return true; } /** * Parse an individual cookie attribute * * Handles parsing individual attributes from the cookie values. * * @param string $name Attribute name * @param string|boolean $value Attribute value (string value, or true if empty/flag) * @return mixed Value if available, or null if the attribute value is invalid (and should be skipped) */ protected function normalize_attribute($name, $value) { switch (strtolower($name)) { case 'expires': // Expiration parsing, as per RFC 6265 section 5.2.1 if (is_int($value)) { return $value; } $expiry_time = strtotime($value); if ($expiry_time === false) { return null; } return $expiry_time; case 'max-age': // Expiration parsing, as per RFC 6265 section 5.2.2 if (is_int($value)) { return $value; } // Check that we have a valid age if (!preg_match('/^-?\d+$/', $value)) { return null; } $delta_seconds = (int) $value; if ($delta_seconds <= 0) { $expiry_time = 0; } else { $expiry_time = $this->reference_time + $delta_seconds; } return $expiry_time; case 'domain': // Domains are not required as per RFC 6265 section 5.2.3 if (empty($value)) { return null; } // Domain normalization, as per RFC 6265 section 5.2.3 if ($value[0] === '.') { $value = substr($value, 1); } return $value; default: return $value; } } /** * Format a cookie for a Cookie header * * This is used when sending cookies to a server. * * @return string Cookie formatted for Cookie header */ public function format_for_header() { return sprintf('%s=%s', $this->name, $this->value); } /** * Format a cookie for a Cookie header * * @codeCoverageIgnore * @deprecated Use {@see Requests_Cookie::format_for_header} * @return string */ public function formatForHeader() { return $this->format_for_header(); } /** * Format a cookie for a Set-Cookie header * * This is used when sending cookies to clients. This isn't really * applicable to client-side usage, but might be handy for debugging. * * @return string Cookie formatted for Set-Cookie header */ public function format_for_set_cookie() { $header_value = $this->format_for_header(); if (!empty($this->attributes)) { $parts = array(); foreach ($this->attributes as $key => $value) { // Ignore non-associative attributes if (is_numeric($key)) { $parts[] = $value; } else { $parts[] = sprintf('%s=%s', $key, $value); } } $header_value .= '; ' . implode('; ', $parts); } return $header_value; } /** * Format a cookie for a Set-Cookie header * * @codeCoverageIgnore * @deprecated Use {@see Requests_Cookie::format_for_set_cookie} * @return string */ public function formatForSetCookie() { return $this->format_for_set_cookie(); } /** * Get the cookie value * * Attributes and other data can be accessed via methods. */ public function __toString() { return $this->value; } /** * Parse a cookie string into a cookie object * * Based on Mozilla's parsing code in Firefox and related projects, which * is an intentional deviation from RFC 2109 and RFC 2616. RFC 6265 * specifies some of this handling, but not in a thorough manner. * * @param string Cookie header value (from a Set-Cookie header) * @return Requests_Cookie Parsed cookie object */ public static function parse($string, $name = '', $reference_time = null) { $parts = explode(';', $string); $kvparts = array_shift($parts); if (!empty($name)) { $value = $string; } elseif (strpos($kvparts, '=') === false) { // Some sites might only have a value without the equals separator. // Deviate from RFC 6265 and pretend it was actually a blank name // (`=foo`) // // https://bugzilla.mozilla.org/show_bug.cgi?id=169091 $name = ''; $value = $kvparts; } else { list($name, $value) = explode('=', $kvparts, 2); } $name = trim($name); $value = trim($value); // Attribute key are handled case-insensitively $attributes = new Requests_Utility_CaseInsensitiveDictionary(); if (!empty($parts)) { foreach ($parts as $part) { if (strpos($part, '=') === false) { $part_key = $part; $part_value = true; } else { list($part_key, $part_value) = explode('=', $part, 2); $part_value = trim($part_value); } $part_key = trim($part_key); $attributes[$part_key] = $part_value; } } return new Requests_Cookie($name, $value, $attributes, array(), $reference_time); } /** * Parse all Set-Cookie headers from request headers * * @param Requests_Response_Headers $headers Headers to parse from * @param Requests_IRI|null $origin URI for comparing cookie origins * @param int|null $time Reference time for expiration calculation * @return array */ public static function parse_from_headers(Requests_Response_Headers $headers, Requests_IRI $origin = null, $time = null) { $cookie_headers = $headers->getValues('Set-Cookie'); if (empty($cookie_headers)) { return array(); } $cookies = array(); foreach ($cookie_headers as $header) { $parsed = self::parse($header, '', $time); // Default domain/path attributes if (empty($parsed->attributes['domain']) && !empty($origin)) { $parsed->attributes['domain'] = $origin->host; $parsed->flags['host-only'] = true; } else { $parsed->flags['host-only'] = false; } $path_is_valid = (!empty($parsed->attributes['path']) && $parsed->attributes['path'][0] === '/'); if (!$path_is_valid && !empty($origin)) { $path = $origin->path; // Default path normalization as per RFC 6265 section 5.1.4 if (substr($path, 0, 1) !== '/') { // If the uri-path is empty or if the first character of // the uri-path is not a %x2F ("/") character, output // %x2F ("/") and skip the remaining steps. $path = '/'; } elseif (substr_count($path, '/') === 1) { // If the uri-path contains no more than one %x2F ("/") // character, output %x2F ("/") and skip the remaining // step. $path = '/'; } else { // Output the characters of the uri-path from the first // character up to, but not including, the right-most // %x2F ("/"). $path = substr($path, 0, strrpos($path, '/')); } $parsed->attributes['path'] = $path; } // Reject invalid cookie domains if (!empty($origin) && !$parsed->domain_matches($origin->host)) { continue; } $cookies[$parsed->name] = $parsed; } return $cookies; } /** * Parse all Set-Cookie headers from request headers * * @codeCoverageIgnore * @deprecated Use {@see Requests_Cookie::parse_from_headers} * @return array */ public static function parseFromHeaders(Requests_Response_Headers $headers) { return self::parse_from_headers($headers); } } callback = $callback; } /** * Get the current item's value after filtering * * @return string */ public function current() { $value = parent::current(); if (is_callable($this->callback)) { $value = call_user_func($this->callback, $value); } return $value; } /** * @inheritdoc */ public function unserialize($serialized) {} /** * @inheritdoc * * @phpcs:disable PHPCompatibility.FunctionNameRestrictions.NewMagicMethods.__unserializeFound */ public function __unserialize($serialized) {} public function __wakeup() { unset($this->callback); } } $value) { $this->offsetSet($key, $value); } } /** * Check if the given item exists * * @param string $key Item key * @return boolean Does the item exist? */ public function offsetExists($key) { $key = strtolower($key); return isset($this->data[$key]); } /** * Get the value for the item * * @param string $key Item key * @return string|null Item value (null if offsetExists is false) */ public function offsetGet($key) { $key = strtolower($key); if (!isset($this->data[$key])) { return null; } return $this->data[$key]; } /** * Set the given item * * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`) * * @param string $key Item name * @param string $value Item value */ public function offsetSet($key, $value) { if ($key === null) { throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset'); } $key = strtolower($key); $this->data[$key] = $value; } /** * Unset the given header * * @param string $key */ public function offsetUnset($key) { unset($this->data[strtolower($key)]); } /** * Get an iterator for the data * * @return ArrayIterator */ public function getIterator() { return new ArrayIterator($this->data); } /** * Get the headers as an array * * @return array Header data */ public function getAll() { return $this->data; } } data[$key])) { return null; } return $this->flatten($this->data[$key]); } /** * Set the given item * * @throws Requests_Exception On attempting to use dictionary as list (`invalidset`) * * @param string $key Item name * @param string $value Item value */ public function offsetSet($key, $value) { if ($key === null) { throw new Requests_Exception('Object is a dictionary, not a list', 'invalidset'); } $key = strtolower($key); if (!isset($this->data[$key])) { $this->data[$key] = array(); } $this->data[$key][] = $value; } /** * Get all values for a given header * * @param string $key * @return array|null Header values */ public function getValues($key) { $key = strtolower($key); if (!isset($this->data[$key])) { return null; } return $this->data[$key]; } /** * Flattens a value into a string * * Converts an array into a string by imploding values with a comma, as per * RFC2616's rules for folding headers. * * @param string|array $value Value to flatten * @return string Flattened value */ public function flatten($value) { if (is_array($value)) { $value = implode(',', $value); } return $value; } /** * Get an iterator for the data * * Converts the internal * @return ArrayIterator */ public function getIterator() { return new Requests_Utility_FilteredIterator($this->data, array($this, 'flatten')); } } type = $type; $this->data = $data; } /** * Like {@see getCode()}, but a string code. * * @codeCoverageIgnore * @return string */ public function getType() { return $this->type; } /** * Gives any relevant data * * @codeCoverageIgnore * @return mixed */ public function getData() { return $this->data; } } array( 'port' => 674 ), 'dict' => array( 'port' => 2628 ), 'file' => array( 'ihost' => 'localhost' ), 'http' => array( 'port' => 80, ), 'https' => array( 'port' => 443, ), ); /** * Return the entire IRI when you try and read the object as a string * * @return string */ public function __toString() { return $this->get_iri(); } /** * Overload __set() to provide access via properties * * @param string $name Property name * @param mixed $value Property value */ public function __set($name, $value) { if (method_exists($this, 'set_' . $name)) { call_user_func(array($this, 'set_' . $name), $value); } elseif ( $name === 'iauthority' || $name === 'iuserinfo' || $name === 'ihost' || $name === 'ipath' || $name === 'iquery' || $name === 'ifragment' ) { call_user_func(array($this, 'set_' . substr($name, 1)), $value); } } /** * Overload __get() to provide access via properties * * @param string $name Property name * @return mixed */ public function __get($name) { // isset() returns false for null, we don't want to do that // Also why we use array_key_exists below instead of isset() $props = get_object_vars($this); if ( $name === 'iri' || $name === 'uri' || $name === 'iauthority' || $name === 'authority' ) { $method = 'get_' . $name; $return = $this->$method(); } elseif (array_key_exists($name, $props)) { $return = $this->$name; } // host -> ihost elseif (($prop = 'i' . $name) && array_key_exists($prop, $props)) { $name = $prop; $return = $this->$prop; } // ischeme -> scheme elseif (($prop = substr($name, 1)) && array_key_exists($prop, $props)) { $name = $prop; $return = $this->$prop; } else { trigger_error('Undefined property: ' . get_class($this) . '::' . $name, E_USER_NOTICE); $return = null; } if ($return === null && isset($this->normalization[$this->scheme][$name])) { return $this->normalization[$this->scheme][$name]; } else { return $return; } } /** * Overload __isset() to provide access via properties * * @param string $name Property name * @return bool */ public function __isset($name) { return (method_exists($this, 'get_' . $name) || isset($this->$name)); } /** * Overload __unset() to provide access via properties * * @param string $name Property name */ public function __unset($name) { if (method_exists($this, 'set_' . $name)) { call_user_func(array($this, 'set_' . $name), ''); } } /** * Create a new IRI object, from a specified string * * @param string|null $iri */ public function __construct($iri = null) { $this->set_iri($iri); } /** * Create a new IRI object by resolving a relative IRI * * Returns false if $base is not absolute, otherwise an IRI. * * @param Requests_IRI|string $base (Absolute) Base IRI * @param Requests_IRI|string $relative Relative IRI * @return Requests_IRI|false */ public static function absolutize($base, $relative) { if (!($relative instanceof Requests_IRI)) { $relative = new Requests_IRI($relative); } if (!$relative->is_valid()) { return false; } elseif ($relative->scheme !== null) { return clone $relative; } if (!($base instanceof Requests_IRI)) { $base = new Requests_IRI($base); } if ($base->scheme === null || !$base->is_valid()) { return false; } if ($relative->get_iri() !== '') { if ($relative->iuserinfo !== null || $relative->ihost !== null || $relative->port !== null) { $target = clone $relative; $target->scheme = $base->scheme; } else { $target = new Requests_IRI; $target->scheme = $base->scheme; $target->iuserinfo = $base->iuserinfo; $target->ihost = $base->ihost; $target->port = $base->port; if ($relative->ipath !== '') { if ($relative->ipath[0] === '/') { $target->ipath = $relative->ipath; } elseif (($base->iuserinfo !== null || $base->ihost !== null || $base->port !== null) && $base->ipath === '') { $target->ipath = '/' . $relative->ipath; } elseif (($last_segment = strrpos($base->ipath, '/')) !== false) { $target->ipath = substr($base->ipath, 0, $last_segment + 1) . $relative->ipath; } else { $target->ipath = $relative->ipath; } $target->ipath = $target->remove_dot_segments($target->ipath); $target->iquery = $relative->iquery; } else { $target->ipath = $base->ipath; if ($relative->iquery !== null) { $target->iquery = $relative->iquery; } elseif ($base->iquery !== null) { $target->iquery = $base->iquery; } } $target->ifragment = $relative->ifragment; } } else { $target = clone $base; $target->ifragment = null; } $target->scheme_normalization(); return $target; } /** * Parse an IRI into scheme/authority/path/query/fragment segments * * @param string $iri * @return array */ protected function parse_iri($iri) { $iri = trim($iri, "\x20\x09\x0A\x0C\x0D"); $has_match = preg_match('/^((?P[^:\/?#]+):)?(\/\/(?P[^\/?#]*))?(?P[^?#]*)(\?(?P[^#]*))?(#(?P.*))?$/', $iri, $match); if (!$has_match) { throw new Requests_Exception('Cannot parse supplied IRI', 'iri.cannot_parse', $iri); } if ($match[1] === '') { $match['scheme'] = null; } if (!isset($match[3]) || $match[3] === '') { $match['authority'] = null; } if (!isset($match[5])) { $match['path'] = ''; } if (!isset($match[6]) || $match[6] === '') { $match['query'] = null; } if (!isset($match[8]) || $match[8] === '') { $match['fragment'] = null; } return $match; } /** * Remove dot segments from a path * * @param string $input * @return string */ protected function remove_dot_segments($input) { $output = ''; while (strpos($input, './') !== false || strpos($input, '/.') !== false || $input === '.' || $input === '..') { // A: If the input buffer begins with a prefix of "../" or "./", // then remove that prefix from the input buffer; otherwise, if (strpos($input, '../') === 0) { $input = substr($input, 3); } elseif (strpos($input, './') === 0) { $input = substr($input, 2); } // B: if the input buffer begins with a prefix of "/./" or "/.", // where "." is a complete path segment, then replace that prefix // with "/" in the input buffer; otherwise, elseif (strpos($input, '/./') === 0) { $input = substr($input, 2); } elseif ($input === '/.') { $input = '/'; } // C: if the input buffer begins with a prefix of "/../" or "/..", // where ".." is a complete path segment, then replace that prefix // with "/" in the input buffer and remove the last segment and its // preceding "/" (if any) from the output buffer; otherwise, elseif (strpos($input, '/../') === 0) { $input = substr($input, 3); $output = substr_replace($output, '', strrpos($output, '/')); } elseif ($input === '/..') { $input = '/'; $output = substr_replace($output, '', strrpos($output, '/')); } // D: if the input buffer consists only of "." or "..", then remove // that from the input buffer; otherwise, elseif ($input === '.' || $input === '..') { $input = ''; } // E: move the first path segment in the input buffer to the end of // the output buffer, including the initial "/" character (if any) // and any subsequent characters up to, but not including, the next // "/" character or the end of the input buffer elseif (($pos = strpos($input, '/', 1)) !== false) { $output .= substr($input, 0, $pos); $input = substr_replace($input, '', 0, $pos); } else { $output .= $input; $input = ''; } } return $output . $input; } /** * Replace invalid character with percent encoding * * @param string $string Input string * @param string $extra_chars Valid characters not in iunreserved or * iprivate (this is ASCII-only) * @param bool $iprivate Allow iprivate * @return string */ protected function replace_invalid_with_pct_encoding($string, $extra_chars, $iprivate = false) { // Normalize as many pct-encoded sections as possible $string = preg_replace_callback('/(?:%[A-Fa-f0-9]{2})+/', array($this, 'remove_iunreserved_percent_encoded'), $string); // Replace invalid percent characters $string = preg_replace('/%(?![A-Fa-f0-9]{2})/', '%25', $string); // Add unreserved and % to $extra_chars (the latter is safe because all // pct-encoded sections are now valid). $extra_chars .= 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-._~%'; // Now replace any bytes that aren't allowed with their pct-encoded versions $position = 0; $strlen = strlen($string); while (($position += strspn($string, $extra_chars, $position)) < $strlen) { $value = ord($string[$position]); // Start position $start = $position; // By default we are valid $valid = true; // No one byte sequences are valid due to the while. // Two byte sequence: if (($value & 0xE0) === 0xC0) { $character = ($value & 0x1F) << 6; $length = 2; $remaining = 1; } // Three byte sequence: elseif (($value & 0xF0) === 0xE0) { $character = ($value & 0x0F) << 12; $length = 3; $remaining = 2; } // Four byte sequence: elseif (($value & 0xF8) === 0xF0) { $character = ($value & 0x07) << 18; $length = 4; $remaining = 3; } // Invalid byte: else { $valid = false; $length = 1; $remaining = 0; } if ($remaining) { if ($position + $length <= $strlen) { for ($position++; $remaining; $position++) { $value = ord($string[$position]); // Check that the byte is valid, then add it to the character: if (($value & 0xC0) === 0x80) { $character |= ($value & 0x3F) << (--$remaining * 6); } // If it is invalid, count the sequence as invalid and reprocess the current byte: else { $valid = false; $position--; break; } } } else { $position = $strlen - 1; $valid = false; } } // Percent encode anything invalid or not in ucschar if ( // Invalid sequences !$valid // Non-shortest form sequences are invalid || $length > 1 && $character <= 0x7F || $length > 2 && $character <= 0x7FF || $length > 3 && $character <= 0xFFFF // Outside of range of ucschar codepoints // Noncharacters || ($character & 0xFFFE) === 0xFFFE || $character >= 0xFDD0 && $character <= 0xFDEF || ( // Everything else not in ucschar $character > 0xD7FF && $character < 0xF900 || $character < 0xA0 || $character > 0xEFFFD ) && ( // Everything not in iprivate, if it applies !$iprivate || $character < 0xE000 || $character > 0x10FFFD ) ) { // If we were a character, pretend we weren't, but rather an error. if ($valid) { $position--; } for ($j = $start; $j <= $position; $j++) { $string = substr_replace($string, sprintf('%%%02X', ord($string[$j])), $j, 1); $j += 2; $position += 2; $strlen += 2; } } } return $string; } /** * Callback function for preg_replace_callback. * * Removes sequences of percent encoded bytes that represent UTF-8 * encoded characters in iunreserved * * @param array $match PCRE match * @return string Replacement */ protected function remove_iunreserved_percent_encoded($match) { // As we just have valid percent encoded sequences we can just explode // and ignore the first member of the returned array (an empty string). $bytes = explode('%', $match[0]); // Initialize the new string (this is what will be returned) and that // there are no bytes remaining in the current sequence (unsurprising // at the first byte!). $string = ''; $remaining = 0; // Loop over each and every byte, and set $value to its value for ($i = 1, $len = count($bytes); $i < $len; $i++) { $value = hexdec($bytes[$i]); // If we're the first byte of sequence: if (!$remaining) { // Start position $start = $i; // By default we are valid $valid = true; // One byte sequence: if ($value <= 0x7F) { $character = $value; $length = 1; } // Two byte sequence: elseif (($value & 0xE0) === 0xC0) { $character = ($value & 0x1F) << 6; $length = 2; $remaining = 1; } // Three byte sequence: elseif (($value & 0xF0) === 0xE0) { $character = ($value & 0x0F) << 12; $length = 3; $remaining = 2; } // Four byte sequence: elseif (($value & 0xF8) === 0xF0) { $character = ($value & 0x07) << 18; $length = 4; $remaining = 3; } // Invalid byte: else { $valid = false; $remaining = 0; } } // Continuation byte: else { // Check that the byte is valid, then add it to the character: if (($value & 0xC0) === 0x80) { $remaining--; $character |= ($value & 0x3F) << ($remaining * 6); } // If it is invalid, count the sequence as invalid and reprocess the current byte as the start of a sequence: else { $valid = false; $remaining = 0; $i--; } } // If we've reached the end of the current byte sequence, append it to Unicode::$data if (!$remaining) { // Percent encode anything invalid or not in iunreserved if ( // Invalid sequences !$valid // Non-shortest form sequences are invalid || $length > 1 && $character <= 0x7F || $length > 2 && $character <= 0x7FF || $length > 3 && $character <= 0xFFFF // Outside of range of iunreserved codepoints || $character < 0x2D || $character > 0xEFFFD // Noncharacters || ($character & 0xFFFE) === 0xFFFE || $character >= 0xFDD0 && $character <= 0xFDEF // Everything else not in iunreserved (this is all BMP) || $character === 0x2F || $character > 0x39 && $character < 0x41 || $character > 0x5A && $character < 0x61 || $character > 0x7A && $character < 0x7E || $character > 0x7E && $character < 0xA0 || $character > 0xD7FF && $character < 0xF900 ) { for ($j = $start; $j <= $i; $j++) { $string .= '%' . strtoupper($bytes[$j]); } } else { for ($j = $start; $j <= $i; $j++) { $string .= chr(hexdec($bytes[$j])); } } } } // If we have any bytes left over they are invalid (i.e., we are // mid-way through a multi-byte sequence) if ($remaining) { for ($j = $start; $j < $len; $j++) { $string .= '%' . strtoupper($bytes[$j]); } } return $string; } protected function scheme_normalization() { if (isset($this->normalization[$this->scheme]['iuserinfo']) && $this->iuserinfo === $this->normalization[$this->scheme]['iuserinfo']) { $this->iuserinfo = null; } if (isset($this->normalization[$this->scheme]['ihost']) && $this->ihost === $this->normalization[$this->scheme]['ihost']) { $this->ihost = null; } if (isset($this->normalization[$this->scheme]['port']) && $this->port === $this->normalization[$this->scheme]['port']) { $this->port = null; } if (isset($this->normalization[$this->scheme]['ipath']) && $this->ipath === $this->normalization[$this->scheme]['ipath']) { $this->ipath = ''; } if (isset($this->ihost) && empty($this->ipath)) { $this->ipath = '/'; } if (isset($this->normalization[$this->scheme]['iquery']) && $this->iquery === $this->normalization[$this->scheme]['iquery']) { $this->iquery = null; } if (isset($this->normalization[$this->scheme]['ifragment']) && $this->ifragment === $this->normalization[$this->scheme]['ifragment']) { $this->ifragment = null; } } /** * Check if the object represents a valid IRI. This needs to be done on each * call as some things change depending on another part of the IRI. * * @return bool */ public function is_valid() { $isauthority = $this->iuserinfo !== null || $this->ihost !== null || $this->port !== null; if ($this->ipath !== '' && ( $isauthority && $this->ipath[0] !== '/' || ( $this->scheme === null && !$isauthority && strpos($this->ipath, ':') !== false && (strpos($this->ipath, '/') === false ? true : strpos($this->ipath, ':') < strpos($this->ipath, '/')) ) ) ) { return false; } return true; } /** * Set the entire IRI. Returns true on success, false on failure (if there * are any invalid characters). * * @param string $iri * @return bool */ protected function set_iri($iri) { static $cache; if (!$cache) { $cache = array(); } if ($iri === null) { return true; } if (isset($cache[$iri])) { list($this->scheme, $this->iuserinfo, $this->ihost, $this->port, $this->ipath, $this->iquery, $this->ifragment, $return) = $cache[$iri]; return $return; } $parsed = $this->parse_iri((string) $iri); $return = $this->set_scheme($parsed['scheme']) && $this->set_authority($parsed['authority']) && $this->set_path($parsed['path']) && $this->set_query($parsed['query']) && $this->set_fragment($parsed['fragment']); $cache[$iri] = array($this->scheme, $this->iuserinfo, $this->ihost, $this->port, $this->ipath, $this->iquery, $this->ifragment, $return); return $return; } /** * Set the scheme. Returns true on success, false on failure (if there are * any invalid characters). * * @param string $scheme * @return bool */ protected function set_scheme($scheme) { if ($scheme === null) { $this->scheme = null; } elseif (!preg_match('/^[A-Za-z][0-9A-Za-z+\-.]*$/', $scheme)) { $this->scheme = null; return false; } else { $this->scheme = strtolower($scheme); } return true; } /** * Set the authority. Returns true on success, false on failure (if there are * any invalid characters). * * @param string $authority * @return bool */ protected function set_authority($authority) { static $cache; if (!$cache) { $cache = array(); } if ($authority === null) { $this->iuserinfo = null; $this->ihost = null; $this->port = null; return true; } if (isset($cache[$authority])) { list($this->iuserinfo, $this->ihost, $this->port, $return) = $cache[$authority]; return $return; } $remaining = $authority; if (($iuserinfo_end = strrpos($remaining, '@')) !== false) { $iuserinfo = substr($remaining, 0, $iuserinfo_end); $remaining = substr($remaining, $iuserinfo_end + 1); } else { $iuserinfo = null; } if (($port_start = strpos($remaining, ':', strpos($remaining, ']'))) !== false) { $port = substr($remaining, $port_start + 1); if ($port === false || $port === '') { $port = null; } $remaining = substr($remaining, 0, $port_start); } else { $port = null; } $return = $this->set_userinfo($iuserinfo) && $this->set_host($remaining) && $this->set_port($port); $cache[$authority] = array($this->iuserinfo, $this->ihost, $this->port, $return); return $return; } /** * Set the iuserinfo. * * @param string $iuserinfo * @return bool */ protected function set_userinfo($iuserinfo) { if ($iuserinfo === null) { $this->iuserinfo = null; } else { $this->iuserinfo = $this->replace_invalid_with_pct_encoding($iuserinfo, '!$&\'()*+,;=:'); $this->scheme_normalization(); } return true; } /** * Set the ihost. Returns true on success, false on failure (if there are * any invalid characters). * * @param string $ihost * @return bool */ protected function set_host($ihost) { if ($ihost === null) { $this->ihost = null; return true; } if (substr($ihost, 0, 1) === '[' && substr($ihost, -1) === ']') { if (Requests_IPv6::check_ipv6(substr($ihost, 1, -1))) { $this->ihost = '[' . Requests_IPv6::compress(substr($ihost, 1, -1)) . ']'; } else { $this->ihost = null; return false; } } else { $ihost = $this->replace_invalid_with_pct_encoding($ihost, '!$&\'()*+,;='); // Lowercase, but ignore pct-encoded sections (as they should // remain uppercase). This must be done after the previous step // as that can add unescaped characters. $position = 0; $strlen = strlen($ihost); while (($position += strcspn($ihost, 'ABCDEFGHIJKLMNOPQRSTUVWXYZ%', $position)) < $strlen) { if ($ihost[$position] === '%') { $position += 3; } else { $ihost[$position] = strtolower($ihost[$position]); $position++; } } $this->ihost = $ihost; } $this->scheme_normalization(); return true; } /** * Set the port. Returns true on success, false on failure (if there are * any invalid characters). * * @param string $port * @return bool */ protected function set_port($port) { if ($port === null) { $this->port = null; return true; } if (strspn($port, '0123456789') === strlen($port)) { $this->port = (int) $port; $this->scheme_normalization(); return true; } $this->port = null; return false; } /** * Set the ipath. * * @param string $ipath * @return bool */ protected function set_path($ipath) { static $cache; if (!$cache) { $cache = array(); } $ipath = (string) $ipath; if (isset($cache[$ipath])) { $this->ipath = $cache[$ipath][(int) ($this->scheme !== null)]; } else { $valid = $this->replace_invalid_with_pct_encoding($ipath, '!$&\'()*+,;=@:/'); $removed = $this->remove_dot_segments($valid); $cache[$ipath] = array($valid, $removed); $this->ipath = ($this->scheme !== null) ? $removed : $valid; } $this->scheme_normalization(); return true; } /** * Set the iquery. * * @param string $iquery * @return bool */ protected function set_query($iquery) { if ($iquery === null) { $this->iquery = null; } else { $this->iquery = $this->replace_invalid_with_pct_encoding($iquery, '!$&\'()*+,;=:@/?', true); $this->scheme_normalization(); } return true; } /** * Set the ifragment. * * @param string $ifragment * @return bool */ protected function set_fragment($ifragment) { if ($ifragment === null) { $this->ifragment = null; } else { $this->ifragment = $this->replace_invalid_with_pct_encoding($ifragment, '!$&\'()*+,;=:@/?'); $this->scheme_normalization(); } return true; } /** * Convert an IRI to a URI (or parts thereof) * * @param string|bool IRI to convert (or false from {@see get_iri}) * @return string|false URI if IRI is valid, false otherwise. */ protected function to_uri($string) { if (!is_string($string)) { return false; } static $non_ascii; if (!$non_ascii) { $non_ascii = implode('', range("\x80", "\xFF")); } $position = 0; $strlen = strlen($string); while (($position += strcspn($string, $non_ascii, $position)) < $strlen) { $string = substr_replace($string, sprintf('%%%02X', ord($string[$position])), $position, 1); $position += 3; $strlen += 2; } return $string; } /** * Get the complete IRI * * @return string|false */ protected function get_iri() { if (!$this->is_valid()) { return false; } $iri = ''; if ($this->scheme !== null) { $iri .= $this->scheme . ':'; } if (($iauthority = $this->get_iauthority()) !== null) { $iri .= '//' . $iauthority; } $iri .= $this->ipath; if ($this->iquery !== null) { $iri .= '?' . $this->iquery; } if ($this->ifragment !== null) { $iri .= '#' . $this->ifragment; } return $iri; } /** * Get the complete URI * * @return string */ protected function get_uri() { return $this->to_uri($this->get_iri()); } /** * Get the complete iauthority * * @return string|null */ protected function get_iauthority() { if ($this->iuserinfo === null && $this->ihost === null && $this->port === null) { return null; } $iauthority = ''; if ($this->iuserinfo !== null) { $iauthority .= $this->iuserinfo . '@'; } if ($this->ihost !== null) { $iauthority .= $this->ihost; } if ($this->port !== null) { $iauthority .= ':' . $this->port; } return $iauthority; } /** * Get the complete authority * * @return string */ protected function get_authority() { $iauthority = $this->get_iauthority(); if (is_string($iauthority)) { return $this->to_uri($iauthority); } else { return $iauthority; } } } code = $data->status_code; } parent::__construct($reason, $data); } } reason = $reason; } $message = sprintf('%d %s', $this->code, $this->reason); parent::__construct($message, 'httpresponse', $data, $this->code); } /** * Get the status message */ public function getReason() { return $this->reason; } /** * Get the correct exception class for a given error code * * @param int|bool $code HTTP status code, or false if unavailable * @return string Exception class name to use */ public static function get_class($code) { if (!$code) { return 'Requests_Exception_HTTP_Unknown'; } $class = sprintf('Requests_Exception_HTTP_%d', $code); if (class_exists($class)) { return $class; } return 'Requests_Exception_HTTP_Unknown'; } } type = $type; } if ($code !== null) { $this->code = $code; } if ($message !== null) { $this->reason = $message; } $message = sprintf('%d %s', $this->code, $this->reason); parent::__construct($message, $this->type, $data, $this->code); } /** * Get the error message */ public function getReason() { return $this->reason; } } 0 is executed later */ public function register($hook, $callback, $priority = 0) { if (!isset($this->hooks[$hook])) { $this->hooks[$hook] = array(); } if (!isset($this->hooks[$hook][$priority])) { $this->hooks[$hook][$priority] = array(); } $this->hooks[$hook][$priority][] = $callback; } /** * Dispatch a message * * @param string $hook Hook name * @param array $parameters Parameters to pass to callbacks * @return boolean Successfulness */ public function dispatch($hook, $parameters = array()) { if (empty($this->hooks[$hook])) { return false; } foreach ($this->hooks[$hook] as $priority => $hooked) { foreach ($hooked as $callback) { call_user_func_array($callback, $parameters); } } return true; } } version = $curl['version_number']; $this->handle = curl_init(); curl_setopt($this->handle, CURLOPT_HEADER, false); curl_setopt($this->handle, CURLOPT_RETURNTRANSFER, 1); if ($this->version >= self::CURL_7_10_5) { curl_setopt($this->handle, CURLOPT_ENCODING, ''); } if (defined('CURLOPT_PROTOCOLS')) { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_protocolsFound curl_setopt($this->handle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); } if (defined('CURLOPT_REDIR_PROTOCOLS')) { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_redir_protocolsFound curl_setopt($this->handle, CURLOPT_REDIR_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); } } /** * Destructor */ public function __destruct() { if (is_resource($this->handle)) { curl_close($this->handle); } } /** * Perform a request * * @throws Requests_Exception On a cURL error (`curlerror`) * * @param string $url URL to request * @param array $headers Associative array of request headers * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD * @param array $options Request options, see {@see Requests::response()} for documentation * @return string Raw HTTP result */ public function request($url, $headers = array(), $data = array(), $options = array()) { $this->hooks = $options['hooks']; $this->setup_handle($url, $headers, $data, $options); $options['hooks']->dispatch('curl.before_send', array(&$this->handle)); if ($options['filename'] !== false) { $this->stream_handle = fopen($options['filename'], 'wb'); } $this->response_data = ''; $this->response_bytes = 0; $this->response_byte_limit = false; if ($options['max_bytes'] !== false) { $this->response_byte_limit = $options['max_bytes']; } if (isset($options['verify'])) { if ($options['verify'] === false) { curl_setopt($this->handle, CURLOPT_SSL_VERIFYHOST, 0); curl_setopt($this->handle, CURLOPT_SSL_VERIFYPEER, 0); } elseif (is_string($options['verify'])) { curl_setopt($this->handle, CURLOPT_CAINFO, $options['verify']); } } if (isset($options['verifyname']) && $options['verifyname'] === false) { curl_setopt($this->handle, CURLOPT_SSL_VERIFYHOST, 0); } curl_exec($this->handle); $response = $this->response_data; $options['hooks']->dispatch('curl.after_send', array()); if (curl_errno($this->handle) === 23 || curl_errno($this->handle) === 61) { // Reset encoding and try again curl_setopt($this->handle, CURLOPT_ENCODING, 'none'); $this->response_data = ''; $this->response_bytes = 0; curl_exec($this->handle); $response = $this->response_data; } $this->process_response($response, $options); // Need to remove the $this reference from the curl handle. // Otherwise Requests_Transport_cURL wont be garbage collected and the curl_close() will never be called. curl_setopt($this->handle, CURLOPT_HEADERFUNCTION, null); curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, null); return $this->headers; } /** * Send multiple requests simultaneously * * @param array $requests Request data * @param array $options Global options * @return array Array of Requests_Response objects (may contain Requests_Exception or string responses as well) */ public function request_multiple($requests, $options) { // If you're not requesting, we can't get any responses ¯\_(ツ)_/¯ if (empty($requests)) { return array(); } $multihandle = curl_multi_init(); $subrequests = array(); $subhandles = array(); $class = get_class($this); foreach ($requests as $id => $request) { $subrequests[$id] = new $class(); $subhandles[$id] = $subrequests[$id]->get_subrequest_handle($request['url'], $request['headers'], $request['data'], $request['options']); $request['options']['hooks']->dispatch('curl.before_multi_add', array(&$subhandles[$id])); curl_multi_add_handle($multihandle, $subhandles[$id]); } $completed = 0; $responses = array(); $subrequestcount = count($subrequests); $request['options']['hooks']->dispatch('curl.before_multi_exec', array(&$multihandle)); do { $active = 0; do { $status = curl_multi_exec($multihandle, $active); } while ($status === CURLM_CALL_MULTI_PERFORM); $to_process = array(); // Read the information as needed while ($done = curl_multi_info_read($multihandle)) { $key = array_search($done['handle'], $subhandles, true); if (!isset($to_process[$key])) { $to_process[$key] = $done; } } // Parse the finished requests before we start getting the new ones foreach ($to_process as $key => $done) { $options = $requests[$key]['options']; if ($done['result'] !== CURLE_OK) { //get error string for handle. $reason = curl_error($done['handle']); $exception = new Requests_Exception_Transport_cURL( $reason, Requests_Exception_Transport_cURL::EASY, $done['handle'], $done['result'] ); $responses[$key] = $exception; $options['hooks']->dispatch('transport.internal.parse_error', array(&$responses[$key], $requests[$key])); } else { $responses[$key] = $subrequests[$key]->process_response($subrequests[$key]->response_data, $options); $options['hooks']->dispatch('transport.internal.parse_response', array(&$responses[$key], $requests[$key])); } curl_multi_remove_handle($multihandle, $done['handle']); curl_close($done['handle']); if (!is_string($responses[$key])) { $options['hooks']->dispatch('multiple.request.complete', array(&$responses[$key], $key)); } $completed++; } } while ($active || $completed < $subrequestcount); $request['options']['hooks']->dispatch('curl.after_multi_exec', array(&$multihandle)); curl_multi_close($multihandle); return $responses; } /** * Get the cURL handle for use in a multi-request * * @param string $url URL to request * @param array $headers Associative array of request headers * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD * @param array $options Request options, see {@see Requests::response()} for documentation * @return resource Subrequest's cURL handle */ public function &get_subrequest_handle($url, $headers, $data, $options) { $this->setup_handle($url, $headers, $data, $options); if ($options['filename'] !== false) { $this->stream_handle = fopen($options['filename'], 'wb'); } $this->response_data = ''; $this->response_bytes = 0; $this->response_byte_limit = false; if ($options['max_bytes'] !== false) { $this->response_byte_limit = $options['max_bytes']; } $this->hooks = $options['hooks']; return $this->handle; } /** * Setup the cURL handle for the given data * * @param string $url URL to request * @param array $headers Associative array of request headers * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD * @param array $options Request options, see {@see Requests::response()} for documentation */ protected function setup_handle($url, $headers, $data, $options) { $options['hooks']->dispatch('curl.before_request', array(&$this->handle)); // Force closing the connection for old versions of cURL (<7.22). if (!isset($headers['Connection'])) { $headers['Connection'] = 'close'; } /** * Add "Expect" header. * * By default, cURL adds a "Expect: 100-Continue" to most requests. This header can * add as much as a second to the time it takes for cURL to perform a request. To * prevent this, we need to set an empty "Expect" header. To match the behaviour of * Guzzle, we'll add the empty header to requests that are smaller than 1 MB and use * HTTP/1.1. * * https://curl.se/mail/lib-2017-07/0013.html */ if (!isset($headers['Expect']) && $options['protocol_version'] === 1.1) { $headers['Expect'] = $this->get_expect_header($data); } $headers = Requests::flatten($headers); if (!empty($data)) { $data_format = $options['data_format']; if ($data_format === 'query') { $url = self::format_get($url, $data); $data = ''; } elseif (!is_string($data)) { $data = http_build_query($data, null, '&'); } } switch ($options['type']) { case Requests::POST: curl_setopt($this->handle, CURLOPT_POST, true); curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data); break; case Requests::HEAD: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); curl_setopt($this->handle, CURLOPT_NOBODY, true); break; case Requests::TRACE: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); break; case Requests::PATCH: case Requests::PUT: case Requests::DELETE: case Requests::OPTIONS: default: curl_setopt($this->handle, CURLOPT_CUSTOMREQUEST, $options['type']); if (!empty($data)) { curl_setopt($this->handle, CURLOPT_POSTFIELDS, $data); } } // cURL requires a minimum timeout of 1 second when using the system // DNS resolver, as it uses `alarm()`, which is second resolution only. // There's no way to detect which DNS resolver is being used from our // end, so we need to round up regardless of the supplied timeout. // // https://github.com/curl/curl/blob/4f45240bc84a9aa648c8f7243be7b79e9f9323a5/lib/hostip.c#L606-L609 $timeout = max($options['timeout'], 1); if (is_int($timeout) || $this->version < self::CURL_7_16_2) { curl_setopt($this->handle, CURLOPT_TIMEOUT, ceil($timeout)); } else { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_timeout_msFound curl_setopt($this->handle, CURLOPT_TIMEOUT_MS, round($timeout * 1000)); } if (is_int($options['connect_timeout']) || $this->version < self::CURL_7_16_2) { curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT, ceil($options['connect_timeout'])); } else { // phpcs:ignore PHPCompatibility.Constants.NewConstants.curlopt_connecttimeout_msFound curl_setopt($this->handle, CURLOPT_CONNECTTIMEOUT_MS, round($options['connect_timeout'] * 1000)); } curl_setopt($this->handle, CURLOPT_URL, $url); curl_setopt($this->handle, CURLOPT_REFERER, $url); curl_setopt($this->handle, CURLOPT_USERAGENT, $options['useragent']); if (!empty($headers)) { curl_setopt($this->handle, CURLOPT_HTTPHEADER, $headers); } if ($options['protocol_version'] === 1.1) { curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_1); } else { curl_setopt($this->handle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_1_0); } if ($options['blocking'] === true) { curl_setopt($this->handle, CURLOPT_HEADERFUNCTION, array($this, 'stream_headers')); curl_setopt($this->handle, CURLOPT_WRITEFUNCTION, array($this, 'stream_body')); curl_setopt($this->handle, CURLOPT_BUFFERSIZE, Requests::BUFFER_SIZE); } } /** * Process a response * * @param string $response Response data from the body * @param array $options Request options * @return string|false HTTP response data including headers. False if non-blocking. * @throws Requests_Exception */ public function process_response($response, $options) { if ($options['blocking'] === false) { $fake_headers = ''; $options['hooks']->dispatch('curl.after_request', array(&$fake_headers)); return false; } if ($options['filename'] !== false && $this->stream_handle) { fclose($this->stream_handle); $this->headers = trim($this->headers); } else { $this->headers .= $response; } if (curl_errno($this->handle)) { $error = sprintf( 'cURL error %s: %s', curl_errno($this->handle), curl_error($this->handle) ); throw new Requests_Exception($error, 'curlerror', $this->handle); } $this->info = curl_getinfo($this->handle); $options['hooks']->dispatch('curl.after_request', array(&$this->headers, &$this->info)); return $this->headers; } /** * Collect the headers as they are received * * @param resource $handle cURL resource * @param string $headers Header string * @return integer Length of provided header */ public function stream_headers($handle, $headers) { // Why do we do this? cURL will send both the final response and any // interim responses, such as a 100 Continue. We don't need that. // (We may want to keep this somewhere just in case) if ($this->done_headers) { $this->headers = ''; $this->done_headers = false; } $this->headers .= $headers; if ($headers === "\r\n") { $this->done_headers = true; } return strlen($headers); } /** * Collect data as it's received * * @since 1.6.1 * * @param resource $handle cURL resource * @param string $data Body data * @return integer Length of provided data */ public function stream_body($handle, $data) { $this->hooks->dispatch('request.progress', array($data, $this->response_bytes, $this->response_byte_limit)); $data_length = strlen($data); // Are we limiting the response size? if ($this->response_byte_limit) { if ($this->response_bytes === $this->response_byte_limit) { // Already at maximum, move on return $data_length; } if (($this->response_bytes + $data_length) > $this->response_byte_limit) { // Limit the length $limited_length = ($this->response_byte_limit - $this->response_bytes); $data = substr($data, 0, $limited_length); } } if ($this->stream_handle) { fwrite($this->stream_handle, $data); } else { $this->response_data .= $data; } $this->response_bytes += strlen($data); return $data_length; } /** * Format a URL given GET data * * @param string $url * @param array|object $data Data to build query using, see {@see https://secure.php.net/http_build_query} * @return string URL with data */ protected static function format_get($url, $data) { if (!empty($data)) { $query = ''; $url_parts = parse_url($url); if (empty($url_parts['query'])) { $url_parts['query'] = ''; } else { $query = $url_parts['query']; } $query .= '&' . http_build_query($data, null, '&'); $query = trim($query, '&'); if (empty($url_parts['query'])) { $url .= '?' . $query; } else { $url = str_replace($url_parts['query'], $query, $url); } } return $url; } /** * Whether this transport is valid * * @codeCoverageIgnore * @return boolean True if the transport is valid, false otherwise. */ public static function test($capabilities = array()) { if (!function_exists('curl_init') || !function_exists('curl_exec')) { return false; } // If needed, check that our installed curl version supports SSL if (isset($capabilities['ssl']) && $capabilities['ssl']) { $curl_version = curl_version(); if (!(CURL_VERSION_SSL & $curl_version['features'])) { return false; } } return true; } /** * Get the correct "Expect" header for the given request data. * * @param string|array $data Data to send either as the POST body, or as parameters in the URL for a GET/HEAD. * @return string The "Expect" header. */ protected function get_expect_header($data) { if (!is_array($data)) { return strlen((string) $data) >= 1048576 ? '100-Continue' : ''; } $bytesize = 0; $iterator = new RecursiveIteratorIterator(new RecursiveArrayIterator($data)); foreach ($iterator as $datum) { $bytesize += strlen((string) $datum); if ($bytesize >= 1048576) { return '100-Continue'; } } return ''; } } dispatch('fsockopen.before_request'); $url_parts = parse_url($url); if (empty($url_parts)) { throw new Requests_Exception('Invalid URL.', 'invalidurl', $url); } $host = $url_parts['host']; $context = stream_context_create(); $verifyname = false; $case_insensitive_headers = new Requests_Utility_CaseInsensitiveDictionary($headers); // HTTPS support if (isset($url_parts['scheme']) && strtolower($url_parts['scheme']) === 'https') { $remote_socket = 'ssl://' . $host; if (!isset($url_parts['port'])) { $url_parts['port'] = 443; } $context_options = array( 'verify_peer' => true, 'capture_peer_cert' => true, ); $verifyname = true; // SNI, if enabled (OpenSSL >=0.9.8j) // phpcs:ignore PHPCompatibility.Constants.NewConstants.openssl_tlsext_server_nameFound if (defined('OPENSSL_TLSEXT_SERVER_NAME') && OPENSSL_TLSEXT_SERVER_NAME) { $context_options['SNI_enabled'] = true; if (isset($options['verifyname']) && $options['verifyname'] === false) { $context_options['SNI_enabled'] = false; } } if (isset($options['verify'])) { if ($options['verify'] === false) { $context_options['verify_peer'] = false; $context_options['verify_peer_name'] = false; $verifyname = false; } elseif (is_string($options['verify'])) { $context_options['cafile'] = $options['verify']; } } if (isset($options['verifyname']) && $options['verifyname'] === false) { $context_options['verify_peer_name'] = false; $verifyname = false; } stream_context_set_option($context, array('ssl' => $context_options)); } else { $remote_socket = 'tcp://' . $host; } $this->max_bytes = $options['max_bytes']; if (!isset($url_parts['port'])) { $url_parts['port'] = 80; } $remote_socket .= ':' . $url_parts['port']; // phpcs:ignore WordPress.PHP.DevelopmentFunctions.error_log_set_error_handler set_error_handler(array($this, 'connect_error_handler'), E_WARNING | E_NOTICE); $options['hooks']->dispatch('fsockopen.remote_socket', array(&$remote_socket)); $socket = stream_socket_client($remote_socket, $errno, $errstr, ceil($options['connect_timeout']), STREAM_CLIENT_CONNECT, $context); restore_error_handler(); if ($verifyname && !$this->verify_certificate_from_context($host, $context)) { throw new Requests_Exception('SSL certificate did not match the requested domain name', 'ssl.no_match'); } if (!$socket) { if ($errno === 0) { // Connection issue throw new Requests_Exception(rtrim($this->connect_error), 'fsockopen.connect_error'); } throw new Requests_Exception($errstr, 'fsockopenerror', null, $errno); } $data_format = $options['data_format']; if ($data_format === 'query') { $path = self::format_get($url_parts, $data); $data = ''; } else { $path = self::format_get($url_parts, array()); } $options['hooks']->dispatch('fsockopen.remote_host_path', array(&$path, $url)); $request_body = ''; $out = sprintf("%s %s HTTP/%.1F\r\n", $options['type'], $path, $options['protocol_version']); if ($options['type'] !== Requests::TRACE) { if (is_array($data)) { $request_body = http_build_query($data, '', '&'); } else { $request_body = $data; } // Always include Content-length on POST requests to prevent // 411 errors from some servers when the body is empty. if (!empty($data) || $options['type'] === Requests::POST) { if (!isset($case_insensitive_headers['Content-Length'])) { $headers['Content-Length'] = strlen($request_body); } if (!isset($case_insensitive_headers['Content-Type'])) { $headers['Content-Type'] = 'application/x-www-form-urlencoded; charset=UTF-8'; } } } if (!isset($case_insensitive_headers['Host'])) { $out .= sprintf('Host: %s', $url_parts['host']); if ((strtolower($url_parts['scheme']) === 'http' && $url_parts['port'] !== 80) || (strtolower($url_parts['scheme']) === 'https' && $url_parts['port'] !== 443)) { $out .= ':' . $url_parts['port']; } $out .= "\r\n"; } if (!isset($case_insensitive_headers['User-Agent'])) { $out .= sprintf("User-Agent: %s\r\n", $options['useragent']); } $accept_encoding = $this->accept_encoding(); if (!isset($case_insensitive_headers['Accept-Encoding']) && !empty($accept_encoding)) { $out .= sprintf("Accept-Encoding: %s\r\n", $accept_encoding); } $headers = Requests::flatten($headers); if (!empty($headers)) { $out .= implode("\r\n", $headers) . "\r\n"; } $options['hooks']->dispatch('fsockopen.after_headers', array(&$out)); if (substr($out, -2) !== "\r\n") { $out .= "\r\n"; } if (!isset($case_insensitive_headers['Connection'])) { $out .= "Connection: Close\r\n"; } $out .= "\r\n" . $request_body; $options['hooks']->dispatch('fsockopen.before_send', array(&$out)); fwrite($socket, $out); $options['hooks']->dispatch('fsockopen.after_send', array($out)); if (!$options['blocking']) { fclose($socket); $fake_headers = ''; $options['hooks']->dispatch('fsockopen.after_request', array(&$fake_headers)); return ''; } $timeout_sec = (int) floor($options['timeout']); if ($timeout_sec === $options['timeout']) { $timeout_msec = 0; } else { $timeout_msec = self::SECOND_IN_MICROSECONDS * $options['timeout'] % self::SECOND_IN_MICROSECONDS; } stream_set_timeout($socket, $timeout_sec, $timeout_msec); $response = ''; $body = ''; $headers = ''; $this->info = stream_get_meta_data($socket); $size = 0; $doingbody = false; $download = false; if ($options['filename']) { $download = fopen($options['filename'], 'wb'); } while (!feof($socket)) { $this->info = stream_get_meta_data($socket); if ($this->info['timed_out']) { throw new Requests_Exception('fsocket timed out', 'timeout'); } $block = fread($socket, Requests::BUFFER_SIZE); if (!$doingbody) { $response .= $block; if (strpos($response, "\r\n\r\n")) { list($headers, $block) = explode("\r\n\r\n", $response, 2); $doingbody = true; } } // Are we in body mode now? if ($doingbody) { $options['hooks']->dispatch('request.progress', array($block, $size, $this->max_bytes)); $data_length = strlen($block); if ($this->max_bytes) { // Have we already hit a limit? if ($size === $this->max_bytes) { continue; } if (($size + $data_length) > $this->max_bytes) { // Limit the length $limited_length = ($this->max_bytes - $size); $block = substr($block, 0, $limited_length); } } $size += strlen($block); if ($download) { fwrite($download, $block); } else { $body .= $block; } } } $this->headers = $headers; if ($download) { fclose($download); } else { $this->headers .= "\r\n\r\n" . $body; } fclose($socket); $options['hooks']->dispatch('fsockopen.after_request', array(&$this->headers, &$this->info)); return $this->headers; } /** * Send multiple requests simultaneously * * @param array $requests Request data (array of 'url', 'headers', 'data', 'options') as per {@see Requests_Transport::request} * @param array $options Global options, see {@see Requests::response()} for documentation * @return array Array of Requests_Response objects (may contain Requests_Exception or string responses as well) */ public function request_multiple($requests, $options) { $responses = array(); $class = get_class($this); foreach ($requests as $id => $request) { try { $handler = new $class(); $responses[$id] = $handler->request($request['url'], $request['headers'], $request['data'], $request['options']); $request['options']['hooks']->dispatch('transport.internal.parse_response', array(&$responses[$id], $request)); } catch (Requests_Exception $e) { $responses[$id] = $e; } if (!is_string($responses[$id])) { $request['options']['hooks']->dispatch('multiple.request.complete', array(&$responses[$id], $id)); } } return $responses; } /** * Retrieve the encodings we can accept * * @return string Accept-Encoding header value */ protected static function accept_encoding() { $type = array(); if (function_exists('gzinflate')) { $type[] = 'deflate;q=1.0'; } if (function_exists('gzuncompress')) { $type[] = 'compress;q=0.5'; } $type[] = 'gzip;q=0.5'; return implode(', ', $type); } /** * Format a URL given GET data * * @param array $url_parts * @param array|object $data Data to build query using, see {@see https://secure.php.net/http_build_query} * @return string URL with data */ protected static function format_get($url_parts, $data) { if (!empty($data)) { if (empty($url_parts['query'])) { $url_parts['query'] = ''; } $url_parts['query'] .= '&' . http_build_query($data, '', '&'); $url_parts['query'] = trim($url_parts['query'], '&'); } if (isset($url_parts['path'])) { if (isset($url_parts['query'])) { $get = $url_parts['path'] . '?' . $url_parts['query']; } else { $get = $url_parts['path']; } } else { $get = '/'; } return $get; } /** * Error handler for stream_socket_client() * * @param int $errno Error number (e.g. E_WARNING) * @param string $errstr Error message */ public function connect_error_handler($errno, $errstr) { // Double-check we can handle it if (($errno & E_WARNING) === 0 && ($errno & E_NOTICE) === 0) { // Return false to indicate the default error handler should engage return false; } $this->connect_error .= $errstr . "\n"; return true; } /** * Verify the certificate against common name and subject alternative names * * Unfortunately, PHP doesn't check the certificate against the alternative * names, leading things like 'https://www.github.com/' to be invalid. * Instead * * @see https://tools.ietf.org/html/rfc2818#section-3.1 RFC2818, Section 3.1 * * @throws Requests_Exception On failure to connect via TLS (`fsockopen.ssl.connect_error`) * @throws Requests_Exception On not obtaining a match for the host (`fsockopen.ssl.no_match`) * @param string $host Host name to verify against * @param resource $context Stream context * @return bool */ public function verify_certificate_from_context($host, $context) { $meta = stream_context_get_options($context); // If we don't have SSL options, then we couldn't make the connection at // all if (empty($meta) || empty($meta['ssl']) || empty($meta['ssl']['peer_certificate'])) { throw new Requests_Exception(rtrim($this->connect_error), 'ssl.connect_error'); } $cert = openssl_x509_parse($meta['ssl']['peer_certificate']); return Requests_SSL::verify_certificate($host, $cert); } /** * Whether this transport is valid * * @codeCoverageIgnore * @return boolean True if the transport is valid, false otherwise. */ public static function test($capabilities = array()) { if (!function_exists('fsockopen')) { return false; } // If needed, check that streams support SSL if (isset($capabilities['ssl']) && $capabilities['ssl']) { if (!extension_loaded('openssl') || !function_exists('openssl_x509_parse')) { return false; } // Currently broken, thanks to https://github.com/facebook/hhvm/issues/2156 if (defined('HHVM_VERSION')) { return false; } } return true; } } headers = new Requests_Response_Headers(); $this->cookies = new Requests_Cookie_Jar(); } /** * Response body * * @var string */ public $body = ''; /** * Raw HTTP data from the transport * * @var string */ public $raw = ''; /** * Headers, as an associative array * * @var Requests_Response_Headers Array-like object representing headers */ public $headers = array(); /** * Status code, false if non-blocking * * @var integer|boolean */ public $status_code = false; /** * Protocol version, false if non-blocking * * @var float|boolean */ public $protocol_version = false; /** * Whether the request succeeded or not * * @var boolean */ public $success = false; /** * Number of redirects the request used * * @var integer */ public $redirects = 0; /** * URL requested * * @var string */ public $url = ''; /** * Previous requests (from redirects) * * @var array Array of Requests_Response objects */ public $history = array(); /** * Cookies from the request * * @var Requests_Cookie_Jar Array-like object representing a cookie jar */ public $cookies = array(); /** * Is the response a redirect? * * @return boolean True if redirect (3xx status), false if not. */ public function is_redirect() { $code = $this->status_code; return in_array($code, array(300, 301, 302, 303, 307), true) || $code > 307 && $code < 400; } /** * Throws an exception if the request was not successful * * @throws Requests_Exception If `$allow_redirects` is false, and code is 3xx (`response.no_redirects`) * @throws Requests_Exception_HTTP On non-successful status code. Exception class corresponds to code (e.g. {@see Requests_Exception_HTTP_404}) * @param boolean $allow_redirects Set to false to throw on a 3xx as well */ public function throw_for_status($allow_redirects = true) { if ($this->is_redirect()) { if (!$allow_redirects) { throw new Requests_Exception('Redirection not allowed', 'response.no_redirects', $this); } } elseif (!$this->success) { $exception = Requests_Exception_HTTP::get_class($this->status_code); throw new $exception(null, $this); } } } proxy = $args; } elseif (is_array($args)) { if (count($args) === 1) { list($this->proxy) = $args; } elseif (count($args) === 3) { list($this->proxy, $this->user, $this->pass) = $args; $this->use_authentication = true; } else { throw new Requests_Exception('Invalid number of arguments', 'proxyhttpbadargs'); } } } /** * Register the necessary callbacks * * @since 1.6 * @see curl_before_send * @see fsockopen_remote_socket * @see fsockopen_remote_host_path * @see fsockopen_header * @param Requests_Hooks $hooks Hook system */ public function register(Requests_Hooks $hooks) { $hooks->register('curl.before_send', array($this, 'curl_before_send')); $hooks->register('fsockopen.remote_socket', array($this, 'fsockopen_remote_socket')); $hooks->register('fsockopen.remote_host_path', array($this, 'fsockopen_remote_host_path')); if ($this->use_authentication) { $hooks->register('fsockopen.after_headers', array($this, 'fsockopen_header')); } } /** * Set cURL parameters before the data is sent * * @since 1.6 * @param resource $handle cURL resource */ public function curl_before_send(&$handle) { curl_setopt($handle, CURLOPT_PROXYTYPE, CURLPROXY_HTTP); curl_setopt($handle, CURLOPT_PROXY, $this->proxy); if ($this->use_authentication) { curl_setopt($handle, CURLOPT_PROXYAUTH, CURLAUTH_ANY); curl_setopt($handle, CURLOPT_PROXYUSERPWD, $this->get_auth_string()); } } /** * Alter remote socket information before opening socket connection * * @since 1.6 * @param string $remote_socket Socket connection string */ public function fsockopen_remote_socket(&$remote_socket) { $remote_socket = $this->proxy; } /** * Alter remote path before getting stream data * * @since 1.6 * @param string $path Path to send in HTTP request string ("GET ...") * @param string $url Full URL we're requesting */ public function fsockopen_remote_host_path(&$path, $url) { $path = $url; } /** * Add extra headers to the request before sending * * @since 1.6 * @param string $out HTTP header string */ public function fsockopen_header(&$out) { $out .= sprintf("Proxy-Authorization: Basic %s\r\n", base64_encode($this->get_auth_string())); } /** * Get the authentication string (user:pass) * * @since 1.6 * @return string */ public function get_auth_string() { return $this->user . ':' . $this->pass; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\XdebugHandler; /** * Provides utility functions to prepare a child process command-line and set * environment variables in that process. * * @author John Stevenson * @internal */ class Process { /** * Returns an array of parameters, including a color option if required * * A color option is needed because child process output is piped. * * @param array $args The script parameters * @param string $colorOption The long option to force color output * * @return array */ public static function addColorOption(array $args, $colorOption) { if (!$colorOption || in_array($colorOption, $args) || !preg_match('/^--([a-z]+$)|(^--[a-z]+=)/', $colorOption, $matches)) { return $args; } if (isset($matches[2])) { // Handle --color(s)= options if (false !== ($index = array_search($matches[2].'auto', $args))) { $args[$index] = $colorOption; return $args; } elseif (preg_grep('/^'.$matches[2].'/', $args)) { return $args; } } elseif (in_array('--no-'.$matches[1], $args)) { return $args; } // Check for NO_COLOR variable (https://no-color.org/) if (false !== getenv('NO_COLOR')) { return $args; } if (false !== ($index = array_search('--', $args))) { // Position option before double-dash delimiter array_splice($args, $index, 0, $colorOption); } else { $args[] = $colorOption; } return $args; } /** * Escapes a string to be used as a shell argument. * * From https://github.com/johnstevenson/winbox-args * MIT Licensed (c) John Stevenson * * @param string $arg The argument to be escaped * @param bool $meta Additionally escape cmd.exe meta characters * @param bool $module The argument is the module to invoke * * @return string The escaped argument */ public static function escape($arg, $meta = true, $module = false) { if (!defined('PHP_WINDOWS_VERSION_BUILD')) { return "'".str_replace("'", "'\\''", $arg)."'"; } $quote = strpbrk($arg, " \t") !== false || $arg === ''; $arg = preg_replace('/(\\\\*)"/', '$1$1\\"', $arg, -1, $dquotes); if ($meta) { $meta = $dquotes || preg_match('/%[^%]+%/', $arg); if (!$meta) { $quote = $quote || strpbrk($arg, '^&|<>()') !== false; } elseif ($module && !$dquotes && $quote) { $meta = false; } } if ($quote) { $arg = '"'.preg_replace('/(\\\\*)$/', '$1$1', $arg).'"'; } if ($meta) { $arg = preg_replace('/(["^&|<>()%])/', '^$1', $arg); } return $arg; } /** * Returns true if the output stream supports colors * * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo * terminals via named pipes, so we can only check the environment. * * @param mixed $output A valid CLI output stream * * @return bool */ public static function supportsColor($output) { if ('Hyper' === getenv('TERM_PROGRAM')) { return true; } if (defined('PHP_WINDOWS_VERSION_BUILD')) { return (function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support($output)) || false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM'); } if (function_exists('stream_isatty')) { return stream_isatty($output); } if (function_exists('posix_isatty')) { return posix_isatty($output); } $stat = fstat($output); // Check if formatted mode is S_IFCHR return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; } /** * Makes putenv environment changes available in $_SERVER and $_ENV * * @param string $name * @param string|false $value A false value unsets the variable * * @return bool Whether the environment variable was set */ public static function setEnv($name, $value = false) { $unset = false === $value; if (!putenv($unset ? $name : $name.'='.$value)) { return false; } if ($unset) { unset($_SERVER[$name]); } else { $_SERVER[$name] = $value; } // Update $_ENV if it is being used if (false !== stripos((string) ini_get('variables_order'), 'E')) { if ($unset) { unset($_ENV[$name]); } else { $_ENV[$name] = $value; } } return true; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\XdebugHandler; /** * @author John Stevenson */ class PhpConfig { /** * Use the original PHP configuration * * @return array PHP cli options */ public function useOriginal() { $this->getDataAndReset(); return array(); } /** * Use standard restart settings * * @return array PHP cli options */ public function useStandard() { if ($data = $this->getDataAndReset()) { return array('-n', '-c', $data['tmpIni']); } return array(); } /** * Use environment variables to persist settings * * @return array PHP cli options */ public function usePersistent() { if ($data = $this->getDataAndReset()) { Process::setEnv('PHPRC', $data['tmpIni']); Process::setEnv('PHP_INI_SCAN_DIR', ''); } return array(); } /** * Returns restart data if available and resets the environment * * @return array|null */ private function getDataAndReset() { if ($data = XdebugHandler::getRestartSettings()) { Process::setEnv('PHPRC', $data['phprc']); Process::setEnv('PHP_INI_SCAN_DIR', $data['scanDir']); } return $data; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\XdebugHandler; use Psr\Log\LoggerInterface; /** * @author John Stevenson */ class XdebugHandler { const SUFFIX_ALLOW = '_ALLOW_XDEBUG'; const SUFFIX_INIS = '_ORIGINAL_INIS'; const RESTART_ID = 'internal'; const RESTART_SETTINGS = 'XDEBUG_HANDLER_SETTINGS'; const DEBUG = 'XDEBUG_HANDLER_DEBUG'; /** @var string|null */ protected $tmpIni; private static $inRestart; private static $name; private static $skipped; private $cli; private $colorOption; private $debug; private $envAllowXdebug; private $envOriginalInis; private $loaded; private $persistent; private $script; /** @var Status|null */ private $statusWriter; /** * Constructor * * The $envPrefix is used to create distinct environment variables. It is * uppercased and prepended to the default base values. For example 'myapp' * would result in MYAPP_ALLOW_XDEBUG and MYAPP_ORIGINAL_INIS. * * @param string $envPrefix Value used in environment variables * @param string $colorOption Command-line long option to force color output * @throws \RuntimeException If a parameter is invalid */ public function __construct($envPrefix, $colorOption = '') { if (!is_string($envPrefix) || empty($envPrefix) || !is_string($colorOption)) { throw new \RuntimeException('Invalid constructor parameter'); } self::$name = strtoupper($envPrefix); $this->envAllowXdebug = self::$name.self::SUFFIX_ALLOW; $this->envOriginalInis = self::$name.self::SUFFIX_INIS; $this->colorOption = $colorOption; if (extension_loaded('xdebug')) { $ext = new \ReflectionExtension('xdebug'); $this->loaded = $ext->getVersion() ?: 'unknown'; } if ($this->cli = PHP_SAPI === 'cli') { $this->debug = getenv(self::DEBUG); } $this->statusWriter = new Status($this->envAllowXdebug, (bool) $this->debug); } /** * Activates status message output to a PSR3 logger * * @param LoggerInterface $logger * * @return $this */ public function setLogger(LoggerInterface $logger) { $this->statusWriter->setLogger($logger); return $this; } /** * Sets the main script location if it cannot be called from argv * * @param string $script * * @return $this */ public function setMainScript($script) { $this->script = $script; return $this; } /** * Persist the settings to keep Xdebug out of sub-processes * * @return $this */ public function setPersistent() { $this->persistent = true; return $this; } /** * Checks if Xdebug is loaded and the process needs to be restarted * * This behaviour can be disabled by setting the MYAPP_ALLOW_XDEBUG * environment variable to 1. This variable is used internally so that * the restarted process is created only once. */ public function check() { $this->notify(Status::CHECK, $this->loaded); $envArgs = explode('|', (string) getenv($this->envAllowXdebug)); if (empty($envArgs[0]) && $this->requiresRestart((bool) $this->loaded)) { // Restart required $this->notify(Status::RESTART); if ($this->prepareRestart()) { $command = $this->getCommand(); $this->restart($command); } return; } if (self::RESTART_ID === $envArgs[0] && count($envArgs) === 5) { // Restarted, so unset environment variable and use saved values $this->notify(Status::RESTARTED); Process::setEnv($this->envAllowXdebug); self::$inRestart = true; if (!$this->loaded) { // Skipped version is only set if Xdebug is not loaded self::$skipped = $envArgs[1]; } $this->tryEnableSignals(); // Put restart settings in the environment $this->setEnvRestartSettings($envArgs); return; } $this->notify(Status::NORESTART); if ($settings = self::getRestartSettings()) { // Called with existing settings, so sync our settings $this->syncSettings($settings); } } /** * Returns an array of php.ini locations with at least one entry * * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. * The loaded ini location is the first entry and may be empty. * * @return array */ public static function getAllIniFiles() { if (!empty(self::$name)) { $env = getenv(self::$name.self::SUFFIX_INIS); if (false !== $env) { return explode(PATH_SEPARATOR, $env); } } $paths = array((string) php_ini_loaded_file()); if ($scanned = php_ini_scanned_files()) { $paths = array_merge($paths, array_map('trim', explode(',', $scanned))); } return $paths; } /** * Returns an array of restart settings or null * * Settings will be available if the current process was restarted, or * called with the settings from an existing restart. * * @return array|null */ public static function getRestartSettings() { $envArgs = explode('|', (string) getenv(self::RESTART_SETTINGS)); if (count($envArgs) !== 6 || (!self::$inRestart && php_ini_loaded_file() !== $envArgs[0])) { return null; } return array( 'tmpIni' => $envArgs[0], 'scannedInis' => (bool) $envArgs[1], 'scanDir' => '*' === $envArgs[2] ? false : $envArgs[2], 'phprc' => '*' === $envArgs[3] ? false : $envArgs[3], 'inis' => explode(PATH_SEPARATOR, $envArgs[4]), 'skipped' => $envArgs[5], ); } /** * Returns the Xdebug version that triggered a successful restart * * @return string */ public static function getSkippedVersion() { return (string) self::$skipped; } /** * Returns true if Xdebug is loaded, or as directed by an extending class * * @param bool $isLoaded Whether Xdebug is loaded * * @return bool */ protected function requiresRestart($isLoaded) { return $isLoaded; } /** * Allows an extending class to access the tmpIni * * @param string $command */ protected function restart($command) { $this->doRestart($command); } /** * Executes the restarted command then deletes the tmp ini * * @param string $command */ private function doRestart($command) { $this->tryEnableSignals(); $this->notify(Status::RESTARTING, $command); // Prefer proc_open to keep fds intact, because passthru pipes to stdout if (function_exists('proc_open')) { if (defined('PHP_WINDOWS_VERSION_BUILD') && PHP_VERSION_ID < 80000) { $command = '"'.$command.'"'; } $process = proc_open($command, array(), $pipes); if (is_resource($process)) { $exitCode = proc_close($process); } } else { passthru($command, $exitCode); } if (!isset($exitCode)) { // Unlikely that the default shell cannot be invoked $this->notify(Status::ERROR, 'Unable to restart process'); $exitCode = -1; } else { $this->notify(Status::INFO, 'Restarted process exited '.$exitCode); } if ($this->debug === '2') { $this->notify(Status::INFO, 'Temp ini saved: '.$this->tmpIni); } else { @unlink($this->tmpIni); } exit($exitCode); } /** * Returns true if everything was written for the restart * * If any of the following fails (however unlikely) we must return false to * stop potential recursion: * - tmp ini file creation * - environment variable creation * * @return bool */ private function prepareRestart() { $error = ''; $iniFiles = self::getAllIniFiles(); $scannedInis = count($iniFiles) > 1; $tmpDir = sys_get_temp_dir(); if (!$this->cli) { $error = 'Unsupported SAPI: '.PHP_SAPI; } elseif (!defined('PHP_BINARY')) { $error = 'PHP version is too old: '.PHP_VERSION; } elseif (!$this->checkConfiguration($info)) { $error = $info; } elseif (!$this->checkScanDirConfig()) { $error = 'PHP version does not report scanned inis: '.PHP_VERSION; } elseif (!$this->checkMainScript()) { $error = 'Unable to access main script: '.$this->script; } elseif (!$this->writeTmpIni($iniFiles, $tmpDir, $error)) { $error = $error ?: 'Unable to create temp ini file at: '.$tmpDir; } elseif (!$this->setEnvironment($scannedInis, $iniFiles)) { $error = 'Unable to set environment variables'; } if ($error) { $this->notify(Status::ERROR, $error); } return empty($error); } /** * Returns true if the tmp ini file was written * * @param array $iniFiles All ini files used in the current process * @param string $tmpDir The system temporary directory * @param string $error Set by method if ini file cannot be read * * @return bool */ private function writeTmpIni(array $iniFiles, $tmpDir, &$error) { if (!$this->tmpIni = @tempnam($tmpDir, '')) { return false; } // $iniFiles has at least one item and it may be empty if (empty($iniFiles[0])) { array_shift($iniFiles); } $content = ''; $regex = '/^\s*(zend_extension\s*=.*xdebug.*)$/mi'; foreach ($iniFiles as $file) { // Check for inaccessible ini files if (($data = @file_get_contents($file)) === false) { $error = 'Unable to read ini: '.$file; return false; } $content .= preg_replace($regex, ';$1', $data).PHP_EOL; } // Merge loaded settings into our ini content, if it is valid if ($config = parse_ini_string($content)) { $loaded = ini_get_all(null, false); $content .= $this->mergeLoadedConfig($loaded, $config); } // Work-around for https://bugs.php.net/bug.php?id=75932 $content .= 'opcache.enable_cli=0'.PHP_EOL; return @file_put_contents($this->tmpIni, $content); } /** * Returns the restart command line * * @return string */ private function getCommand() { $php = array(PHP_BINARY); $args = array_slice($_SERVER['argv'], 1); if (!$this->persistent) { // Use command-line options array_push($php, '-n', '-c', $this->tmpIni); } if (defined('STDOUT') && Process::supportsColor(STDOUT)) { $args = Process::addColorOption($args, $this->colorOption); } $args = array_merge($php, array($this->script), $args); $cmd = Process::escape(array_shift($args), true, true); foreach ($args as $arg) { $cmd .= ' '.Process::escape($arg); } return $cmd; } /** * Returns true if the restart environment variables were set * * No need to update $_SERVER since this is set in the restarted process. * * @param bool $scannedInis Whether there were scanned ini files * @param array $iniFiles All ini files used in the current process * * @return bool */ private function setEnvironment($scannedInis, array $iniFiles) { $scanDir = getenv('PHP_INI_SCAN_DIR'); $phprc = getenv('PHPRC'); // Make original inis available to restarted process if (!putenv($this->envOriginalInis.'='.implode(PATH_SEPARATOR, $iniFiles))) { return false; } if ($this->persistent) { // Use the environment to persist the settings if (!putenv('PHP_INI_SCAN_DIR=') || !putenv('PHPRC='.$this->tmpIni)) { return false; } } // Flag restarted process and save values for it to use $envArgs = array( self::RESTART_ID, $this->loaded, (int) $scannedInis, false === $scanDir ? '*' : $scanDir, false === $phprc ? '*' : $phprc, ); return putenv($this->envAllowXdebug.'='.implode('|', $envArgs)); } /** * Logs status messages * * @param string $op Status handler constant * @param null|string $data Optional data */ private function notify($op, $data = null) { $this->statusWriter->report($op, $data); } /** * Returns default, changed and command-line ini settings * * @param array $loadedConfig All current ini settings * @param array $iniConfig Settings from user ini files * * @return string */ private function mergeLoadedConfig(array $loadedConfig, array $iniConfig) { $content = ''; foreach ($loadedConfig as $name => $value) { // Value will either be null, string or array (HHVM only) if (!is_string($value) || strpos($name, 'xdebug') === 0 || $name === 'apc.mmap_file_mask') { continue; } if (!isset($iniConfig[$name]) || $iniConfig[$name] !== $value) { // Double-quote escape each value $content .= $name.'="'.addcslashes($value, '\\"').'"'.PHP_EOL; } } return $content; } /** * Returns true if the script name can be used * * @return bool */ private function checkMainScript() { if (null !== $this->script) { // Allow an application to set -- for standard input return file_exists($this->script) || '--' === $this->script; } if (file_exists($this->script = $_SERVER['argv'][0])) { return true; } // Use a backtrace to resolve Phar and chdir issues $options = PHP_VERSION_ID >= 50306 ? DEBUG_BACKTRACE_IGNORE_ARGS : false; $trace = debug_backtrace($options); if (($main = end($trace)) && isset($main['file'])) { return file_exists($this->script = $main['file']); } return false; } /** * Adds restart settings to the environment * * @param string[] $envArgs */ private function setEnvRestartSettings($envArgs) { $settings = array( php_ini_loaded_file(), $envArgs[2], $envArgs[3], $envArgs[4], getenv($this->envOriginalInis), self::$skipped, ); Process::setEnv(self::RESTART_SETTINGS, implode('|', $settings)); } /** * Syncs settings and the environment if called with existing settings * * @param array $settings */ private function syncSettings(array $settings) { if (false === getenv($this->envOriginalInis)) { // Called by another app, so make original inis available Process::setEnv($this->envOriginalInis, implode(PATH_SEPARATOR, $settings['inis'])); } self::$skipped = $settings['skipped']; $this->notify(Status::INFO, 'Process called with existing restart settings'); } /** * Returns true if there are scanned inis and PHP is able to report them * * php_ini_scanned_files will fail when PHP_CONFIG_FILE_SCAN_DIR is empty. * Fixed in 7.1.13 and 7.2.1 * * @return bool */ private function checkScanDirConfig() { return !(getenv('PHP_INI_SCAN_DIR') && !PHP_CONFIG_FILE_SCAN_DIR && (PHP_VERSION_ID < 70113 || PHP_VERSION_ID === 70200)); } /** * Returns true if there are no known configuration issues * * @param string $info Set by method * @return bool */ private function checkConfiguration(&$info) { if (!function_exists('proc_open') && !function_exists('passthru')) { $info = 'execution functions have been disabled (proc_open or passthru required)'; return false; } if (extension_loaded('uopz') && !ini_get('uopz.disable')) { // uopz works at opcode level and disables exit calls if (function_exists('uopz_allow_exit')) { @uopz_allow_exit(true); } else { $info = 'uopz extension is not compatible'; return false; } } return true; } /** * Enables async signals and control interrupts in the restarted process * * Available on Unix PHP 7.1+ with the pcntl extension and Windows PHP 7.4+. */ private function tryEnableSignals() { if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { pcntl_async_signals(true); $message = 'Async signals enabled'; if (!self::$inRestart) { // Restarting, so ignore SIGINT in parent pcntl_signal(SIGINT, SIG_IGN); $message .= ' (SIGINT = SIG_IGN)'; } elseif (is_int(pcntl_signal_get_handler(SIGINT))) { // Restarted, no handler set so force default action pcntl_signal(SIGINT, SIG_DFL); $message .= ' (SIGINT = SIG_DFL)'; } $this->notify(Status::INFO, $message); } if (!self::$inRestart && function_exists('sapi_windows_set_ctrl_handler')) { // Restarting, so set a handler to ignore CTRL events in the parent. // This ensures that CTRL+C events will be available in the child // process without having to enable them there, which is unreliable. sapi_windows_set_ctrl_handler(function ($evt) {}); $this->notify(Status::INFO, 'CTRL signals suppressed'); } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\XdebugHandler; use Psr\Log\LoggerInterface; use Psr\Log\LogLevel; /** * @author John Stevenson * @internal */ class Status { const ENV_RESTART = 'XDEBUG_HANDLER_RESTART'; const CHECK = 'Check'; const ERROR = 'Error'; const INFO = 'Info'; const NORESTART = 'NoRestart'; const RESTART = 'Restart'; const RESTARTING = 'Restarting'; const RESTARTED = 'Restarted'; private $debug; private $envAllowXdebug; private $loaded; private $logger; private $time; /** * Constructor * * @param string $envAllowXdebug Prefixed _ALLOW_XDEBUG name * @param bool $debug Whether debug output is required */ public function __construct($envAllowXdebug, $debug) { $start = getenv(self::ENV_RESTART); Process::setEnv(self::ENV_RESTART); $this->time = $start ? round((microtime(true) - $start) * 1000) : 0; $this->envAllowXdebug = $envAllowXdebug; $this->debug = $debug && defined('STDERR'); } /** * @param LoggerInterface $logger */ public function setLogger(LoggerInterface $logger) { $this->logger = $logger; } /** * Calls a handler method to report a message * * @param string $op The handler constant * @param null|string $data Data required by the handler */ public function report($op, $data) { if ($this->logger || $this->debug) { call_user_func(array($this, 'report'.$op), $data); } } /** * Outputs a status message * * @param string $text * @param string $level */ private function output($text, $level = null) { if ($this->logger) { $this->logger->log($level ?: LogLevel::DEBUG, $text); } if ($this->debug) { fwrite(STDERR, sprintf('xdebug-handler[%d] %s', getmypid(), $text.PHP_EOL)); } } private function reportCheck($loaded) { $this->loaded = $loaded; $this->output('Checking '.$this->envAllowXdebug); } private function reportError($error) { $this->output(sprintf('No restart (%s)', $error), LogLevel::WARNING); } private function reportInfo($info) { $this->output($info); } private function reportNoRestart() { $this->output($this->getLoadedMessage()); if ($this->loaded) { $text = sprintf('No restart (%s)', $this->getEnvAllow()); if (!getenv($this->envAllowXdebug)) { $text .= ' Allowed by application'; } $this->output($text); } } private function reportRestart() { $this->output($this->getLoadedMessage()); Process::setEnv(self::ENV_RESTART, (string) microtime(true)); } private function reportRestarted() { $loaded = $this->getLoadedMessage(); $text = sprintf('Restarted (%d ms). %s', $this->time, $loaded); $level = $this->loaded ? LogLevel::WARNING : null; $this->output($text, $level); } private function reportRestarting($command) { $text = sprintf('Process restarting (%s)', $this->getEnvAllow()); $this->output($text); $text = 'Running '.$command; $this->output($text); } /** * Returns the _ALLOW_XDEBUG environment variable as name=value * * @return string */ private function getEnvAllow() { return $this->envAllowXdebug.'='.getenv($this->envAllowXdebug); } /** * Returns the Xdebug status and version * * @return string */ private function getLoadedMessage() { $loaded = $this->loaded ? sprintf('loaded (%s)', $this->loaded) : 'not loaded'; return 'The Xdebug extension is '.$loaded; } } array ( 'pretty_version' => 'dev-release-2-5-0', 'version' => 'dev-release-2-5-0', 'aliases' => array ( ), 'reference' => '500580cc740e92a2b92dc26eeec9f046a1acae6d', 'name' => 'wp-cli/wp-cli-bundle', ), 'versions' => array ( 'composer/ca-bundle' => array ( 'pretty_version' => '1.2.9', 'version' => '1.2.9.0', 'aliases' => array ( ), 'reference' => '78a0e288fdcebf92aa2318a8d3656168da6ac1a5', ), 'composer/composer' => array ( 'pretty_version' => '2.0.13', 'version' => '2.0.13.0', 'aliases' => array ( ), 'reference' => '986e8b86b7b570632ad0a905c3726c33dd4c0efb', ), 'composer/metadata-minifier' => array ( 'pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'aliases' => array ( ), 'reference' => 'c549d23829536f0d0e984aaabbf02af91f443207', ), 'composer/semver' => array ( 'pretty_version' => '3.2.4', 'version' => '3.2.4.0', 'aliases' => array ( ), 'reference' => 'a02fdf930a3c1c3ed3a49b5f63859c0c20e10464', ), 'composer/spdx-licenses' => array ( 'pretty_version' => '1.5.5', 'version' => '1.5.5.0', 'aliases' => array ( ), 'reference' => 'de30328a7af8680efdc03e396aad24befd513200', ), 'composer/xdebug-handler' => array ( 'pretty_version' => '1.4.6', 'version' => '1.4.6.0', 'aliases' => array ( ), 'reference' => 'f27e06cd9675801df441b3656569b328e04aa37c', ), 'gettext/gettext' => array ( 'pretty_version' => 'v4.8.4', 'version' => '4.8.4.0', 'aliases' => array ( ), 'reference' => '58bc0f7f37e78efb0f9758f93d4a0f669f0f84a1', ), 'gettext/languages' => array ( 'pretty_version' => '2.6.0', 'version' => '2.6.0.0', 'aliases' => array ( ), 'reference' => '38ea0482f649e0802e475f0ed19fa993bcb7a618', ), 'justinrainbow/json-schema' => array ( 'pretty_version' => '5.2.10', 'version' => '5.2.10.0', 'aliases' => array ( ), 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b', ), 'mck89/peast' => array ( 'pretty_version' => 'v1.12.0', 'version' => '1.12.0.0', 'aliases' => array ( ), 'reference' => '833be7a294627a8c5b1c482cbf489f73bf9b8086', ), 'mustache/mustache' => array ( 'pretty_version' => 'v2.13.0', 'version' => '2.13.0.0', 'aliases' => array ( ), 'reference' => 'e95c5a008c23d3151d59ea72484d4f72049ab7f4', ), 'nb/oxymel' => array ( 'pretty_version' => 'v0.1.0', 'version' => '0.1.0.0', 'aliases' => array ( ), 'reference' => 'cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c', ), 'psr/log' => array ( 'pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'aliases' => array ( ), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'psr/log-implementation' => array ( 'provided' => array ( 0 => '1.0', ), ), 'react/promise' => array ( 'pretty_version' => 'v2.8.0', 'version' => '2.8.0.0', 'aliases' => array ( ), 'reference' => 'f3cff96a19736714524ca0dd1d4130de73dbbbc4', ), 'rmccue/requests' => array ( 'pretty_version' => 'v1.8.0', 'version' => '1.8.0.0', 'aliases' => array ( ), 'reference' => 'afbe4790e4def03581c4a0963a1e8aa01f6030f1', ), 'seld/jsonlint' => array ( 'pretty_version' => '1.8.3', 'version' => '1.8.3.0', 'aliases' => array ( ), 'reference' => '9ad6ce79c342fbd44df10ea95511a1b24dee5b57', ), 'seld/phar-utils' => array ( 'pretty_version' => '1.1.1', 'version' => '1.1.1.0', 'aliases' => array ( ), 'reference' => '8674b1d84ffb47cc59a101f5d5a3b61e87d23796', ), 'symfony/console' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'a10b1da6fc93080c180bba7219b5ff5b7518fe81', ), 'symfony/debug' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'ab42889de57fdfcfcc0759ab102e2fd4ea72dcae', ), 'symfony/filesystem' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'e58d7841cddfed6e846829040dca2cca0ebbbbb3', ), 'symfony/finder' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'b6b6ad3db3edb1b4b1c1896b1975fb684994de6e', ), 'symfony/polyfill-ctype' => array ( 'pretty_version' => 'v1.19.0', 'version' => '1.19.0.0', 'aliases' => array ( ), 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b', ), 'symfony/polyfill-mbstring' => array ( 'pretty_version' => 'v1.19.0', 'version' => '1.19.0.0', 'aliases' => array ( ), 'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce', ), 'symfony/process' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'b8648cf1d5af12a44a51d07ef9bf980921f15fca', ), 'wp-cli/cache-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => 'bf5d3d335de5f9d93180682f107c238a83c4b02c', ), 'wp-cli/checksum-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '0f58af914a4af3018ce83449869300d65df9f613', ), 'wp-cli/config-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '46b096eae2c116bed30c8d649f6e2a1d4db035c1', ), 'wp-cli/core-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => 'b7f44f03a3a3514798cda21b61a418f08aece324', ), 'wp-cli/cron-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => 'f0d493ff4d4f20ee6d6fd5495da1bc1760f9da15', ), 'wp-cli/db-command' => array ( 'pretty_version' => 'v2.0.13', 'version' => '2.0.13.0', 'aliases' => array ( ), 'reference' => '269bf26a66915d6526b1015f7c759ffe04386bf7', ), 'wp-cli/embed-command' => array ( 'pretty_version' => 'v2.0.9', 'version' => '2.0.9.0', 'aliases' => array ( ), 'reference' => 'ec74f3f34cb9c028fd39ebf8cca3a1504fd599ba', ), 'wp-cli/entity-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '9b3c030d5b056f3f7b8835e117139f92799340a9', ), 'wp-cli/eval-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => 'dcda02194bd0ca773ce03dec6093ac0d271f8976', ), 'wp-cli/export-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => 'e94f5f9e84768919aa6cd2193eb0c8b994e7f4c9', ), 'wp-cli/extension-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '7ad4f9c0c93a1ee737521f825f161d4b79a46945', ), 'wp-cli/i18n-command' => array ( 'pretty_version' => 'v2.2.8', 'version' => '2.2.8.0', 'aliases' => array ( ), 'reference' => '8bc234617edc533590ac0f41080164a8d85ec9ce', ), 'wp-cli/import-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => '75e6d4273b4a9dbf510d69a44f9371eee0d01294', ), 'wp-cli/language-command' => array ( 'pretty_version' => 'v2.0.10', 'version' => '2.0.10.0', 'aliases' => array ( ), 'reference' => '4c02ef431e2825eac7b02e5cf4804c47167b6baf', ), 'wp-cli/maintenance-mode-command' => array ( 'pretty_version' => 'v2.0.6', 'version' => '2.0.6.0', 'aliases' => array ( ), 'reference' => '26c1c0a79ed1194c863cb95fa364b4db7929d7cc', ), 'wp-cli/media-command' => array ( 'pretty_version' => 'v2.0.11', 'version' => '2.0.11.0', 'aliases' => array ( ), 'reference' => '165a462e234e55db2174f9f0f6fab72040e9c510', ), 'wp-cli/mustangostang-spyc' => array ( 'pretty_version' => '0.6.3', 'version' => '0.6.3.0', 'aliases' => array ( ), 'reference' => '6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7', ), 'wp-cli/package-command' => array ( 'pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', 'aliases' => array ( ), 'reference' => '2e345df6c67d4f9b4bf42ce12a7fa07b2b44399d', ), 'wp-cli/php-cli-tools' => array ( 'pretty_version' => 'v0.11.12', 'version' => '0.11.12.0', 'aliases' => array ( ), 'reference' => 'e472e08489f7504d9e8c5c5a057e1419cd1b2b3e', ), 'wp-cli/rewrite-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => '468358e07943a7a8be70c95e20d45412d82899ac', ), 'wp-cli/role-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => '7460566febe82b14c34b105c4c6326d3e23f9295', ), 'wp-cli/scaffold-command' => array ( 'pretty_version' => 'v2.0.14', 'version' => '2.0.14.0', 'aliases' => array ( ), 'reference' => 'cde44524fd0499c0364a5ae3a6dc492796e80e0a', ), 'wp-cli/search-replace-command' => array ( 'pretty_version' => 'v2.0.12', 'version' => '2.0.12.0', 'aliases' => array ( ), 'reference' => '7d93abbdfd0c323902ac21fc34186041be743fd0', ), 'wp-cli/server-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => '29976aef5c2bdf159b8700eab26bafc943f0be0c', ), 'wp-cli/shell-command' => array ( 'pretty_version' => 'v2.0.9', 'version' => '2.0.9.0', 'aliases' => array ( ), 'reference' => 'f27b34a87b515da646d2e7018a8abc1254416fec', ), 'wp-cli/super-admin-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => 'ad4bd4e6b6a53afa4ba8664a6dd695be6feb692e', ), 'wp-cli/widget-command' => array ( 'pretty_version' => 'v2.1.4', 'version' => '2.1.4.0', 'aliases' => array ( ), 'reference' => '5c7b4e147b77e3d768a9a034693ebc7ba1980707', ), 'wp-cli/wp-cli' => array ( 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'aliases' => array ( 0 => '2.5.x-dev', ), 'reference' => '0bcf0c54f4d35685211d435e25219cc7acbe6d48', ), 'wp-cli/wp-cli-bundle' => array ( 'pretty_version' => 'dev-release-2-5-0', 'version' => 'dev-release-2-5-0', 'aliases' => array ( ), 'reference' => '500580cc740e92a2b92dc26eeec9f046a1acae6d', ), 'wp-cli/wp-config-transformer' => array ( 'pretty_version' => 'v1.2.8', 'version' => '1.2.8.0', 'aliases' => array ( ), 'reference' => '0bb2b9162c38ca72370380aea11dc06e431e13a5', ), ), ); private static $canGetVendors; private static $installedByVendor = array(); public static function getInstalledPackages() { $packages = array(); foreach (self::getInstalled() as $installed) { $packages[] = array_keys($installed['versions']); } if (1 === \count($packages)) { return $packages[0]; } return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); } public static function isInstalled($packageName) { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { return true; } } return false; } public static function satisfies(VersionParser $parser, $packageName, $constraint) { $constraint = $parser->parseConstraints($constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); } public static function getVersionRanges($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } $ranges = array(); if (isset($installed['versions'][$packageName]['pretty_version'])) { $ranges[] = $installed['versions'][$packageName]['pretty_version']; } if (array_key_exists('aliases', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); } if (array_key_exists('replaced', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); } if (array_key_exists('provided', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); } return implode(' || ', $ranges); } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } public static function getVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['version'])) { return null; } return $installed['versions'][$packageName]['version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } public static function getPrettyVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['pretty_version'])) { return null; } return $installed['versions'][$packageName]['pretty_version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } public static function getReference($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['reference'])) { return null; } return $installed['versions'][$packageName]['reference']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } public static function getRootPackage() { $installed = self::getInstalled(); return $installed[0]['root']; } public static function getRawData() { return self::$installed; } public static function reload($data) { self::$installed = $data; self::$installedByVendor = array(); } private static function getInstalled() { if (null === self::$canGetVendors) { self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); } $installed = array(); if (self::$canGetVendors) { foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; } } } $installed[] = self::$installed; return $installed; } } $vendorDir . '/composer/InstalledVersions.php', 'WP_CLI' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli.php', 'WP_CLI_Command' => $vendorDir . '/wp-cli/wp-cli/php/class-wp-cli-command.php', ); * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Spdx; class SpdxLicenses { /** @var string */ const LICENSES_FILE = 'spdx-licenses.json'; /** @var string */ const EXCEPTIONS_FILE = 'spdx-exceptions.json'; /** * Contains all the licenses. * * The array is indexed by license identifiers, which contain * a numerically indexed array with license details. * * [ lowercased license identifier => * [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] * , ... * ] * * @var array */ private $licenses; /** * @var string */ private $licensesExpression; /** * Contains all the license exceptions. * * The array is indexed by license exception identifiers, which contain * a numerically indexed array with license exception details. * * [ lowercased exception identifier => * [ 0 => exception identifier (string), 1 => full name (string) ] * , ... * ] * * @var array */ private $exceptions; /** * @var string */ private $exceptionsExpression; public function __construct() { $this->loadLicenses(); $this->loadExceptions(); } /** * Returns license metadata by license identifier. * * This function adds a link to the full license text to the license metadata. * The array returned is in the form of: * * [ 0 => full name (string), 1 => osi certified, 2 => link to license text (string), 3 => deprecation status (bool) ] * * @param string $identifier * * @return array|null */ public function getLicenseByIdentifier($identifier) { $key = strtolower($identifier); if (!isset($this->licenses[$key])) { return; } list($identifier, $name, $isOsiApproved, $isDeprecatedLicenseId) = $this->licenses[$key]; return array( $name, $isOsiApproved, 'https://spdx.org/licenses/' . $identifier . '.html#licenseText', $isDeprecatedLicenseId, ); } /** * Returns all licenses information, keyed by the lowercased license identifier. * * @return array[] Each item is [ 0 => identifier (string), 1 => full name (string), 2 => osi certified (bool), 3 => deprecated (bool) ] */ public function getLicenses() { return $this->licenses; } /** * Returns license exception metadata by license exception identifier. * * This function adds a link to the full license exception text to the license exception metadata. * The array returned is in the form of: * * [ 0 => full name (string), 1 => link to license text (string) ] * * @param string $identifier * * @return array|null */ public function getExceptionByIdentifier($identifier) { $key = strtolower($identifier); if (!isset($this->exceptions[$key])) { return; } list($identifier, $name) = $this->exceptions[$key]; return array( $name, 'https://spdx.org/licenses/' . $identifier . '.html#licenseExceptionText', ); } /** * Returns the short identifier of a license (or license exception) by full name. * * @param string $name * * @return string|null */ public function getIdentifierByName($name) { foreach ($this->licenses as $licenseData) { if ($licenseData[1] === $name) { return $licenseData[0]; } } foreach ($this->exceptions as $licenseData) { if ($licenseData[1] === $name) { return $licenseData[0]; } } } /** * Returns the OSI Approved status for a license by identifier. * * @param string $identifier * * @return bool */ public function isOsiApprovedByIdentifier($identifier) { return $this->licenses[strtolower($identifier)][2]; } /** * Returns the deprecation status for a license by identifier. * * @param string $identifier * * @return bool */ public function isDeprecatedByIdentifier($identifier) { return $this->licenses[strtolower($identifier)][3]; } /** * @param array|string $license * * @throws \InvalidArgumentException * * @return bool */ public function validate($license) { if (is_array($license)) { $count = count($license); if ($count !== count(array_filter($license, 'is_string'))) { throw new \InvalidArgumentException('Array of strings expected.'); } $license = $count > 1 ? '(' . implode(' OR ', $license) . ')' : (string) reset($license); } if (!is_string($license)) { throw new \InvalidArgumentException(sprintf( 'Array or String expected, %s given.', gettype($license) )); } return $this->isValidLicenseString($license); } /** * @return string */ public static function getResourcesDir() { return dirname(__DIR__) . '/res'; } private function loadLicenses() { if (null !== $this->licenses) { return; } $json = file_get_contents(self::getResourcesDir() . '/' . self::LICENSES_FILE); $this->licenses = array(); foreach (json_decode($json, true) as $identifier => $license) { $this->licenses[strtolower($identifier)] = array($identifier, $license[0], $license[1], $license[2]); } } private function loadExceptions() { if (null !== $this->exceptions) { return; } $json = file_get_contents(self::getResourcesDir() . '/' . self::EXCEPTIONS_FILE); $this->exceptions = array(); foreach (json_decode($json, true) as $identifier => $exception) { $this->exceptions[strtolower($identifier)] = array($identifier, $exception[0]); } } /** * @return string */ private function getLicensesExpression() { if (null === $this->licensesExpression) { $licenses = array_map('preg_quote', array_keys($this->licenses)); rsort($licenses); $licenses = implode('|', $licenses); $this->licensesExpression = $licenses; } return $this->licensesExpression; } /** * @return string */ private function getExceptionsExpression() { if (null === $this->exceptionsExpression) { $exceptions = array_map('preg_quote', array_keys($this->exceptions)); rsort($exceptions); $exceptions = implode('|', $exceptions); $this->exceptionsExpression = $exceptions; } return $this->exceptionsExpression; } /** * @param string $license * * @throws \RuntimeException * * @return bool */ private function isValidLicenseString($license) { if (isset($this->licenses[strtolower($license)])) { return true; } $licenses = $this->getLicensesExpression(); $exceptions = $this->getExceptionsExpression(); $regex = <<[\pL\pN.-]{1,}) # license-id: taken from list (?${licenses}) # license-exception-id: taken from list (?${exceptions}) # license-ref: [DocumentRef-1*(idstring):]LicenseRef-1*(idstring) (?(?:DocumentRef-(?&idstring):)?LicenseRef-(?&idstring)) # simple-expresssion: license-id / license-id+ / license-ref (?(?&licenseid)\+? | (?&licenseid) | (?&licenseref)) # compound-expression: 1*( # simple-expression / # simple-expression WITH license-exception-id / # compound-expression AND compound-expression / # compound-expression OR compound-expression # ) / ( compound-expression ) ) (? (?&simple_expression) ( \s+ WITH \s+ (?&licenseexceptionid))? | \( \s* (?&compound_expression) \s* \) ) (? (?&compound_head) (?: \s+ (?:AND|OR) \s+ (?&compound_expression))? ) # license-expression: 1*1(simple-expression / compound-expression) (?(?&compound_expression) | (?&simple_expression)) ) # end of define ^(NONE | NOASSERTION | (?&license_expression))$ }xi REGEX; $match = preg_match($regex, $license); if (0 === $match) { return false; } if (false === $match) { throw new \RuntimeException('Regex failed to compile/run.'); } return true; } } array($vendorDir . '/wp-cli/maintenance-mode-command/src'), 'WP_CLI\\I18n\\' => array($vendorDir . '/wp-cli/i18n-command/src'), 'WP_CLI\\Embeds\\' => array($vendorDir . '/wp-cli/embed-command/src'), 'WP_CLI\\' => array($vendorDir . '/wp-cli/entity-command/src/WP_CLI', $vendorDir . '/wp-cli/shell-command/src/WP_CLI'), 'Symfony\\Polyfill\\Mbstring\\' => array($vendorDir . '/symfony/polyfill-mbstring'), 'Symfony\\Polyfill\\Ctype\\' => array($vendorDir . '/symfony/polyfill-ctype'), 'Symfony\\Component\\Process\\' => array($vendorDir . '/symfony/process'), 'Symfony\\Component\\Finder\\' => array($vendorDir . '/symfony/finder'), 'Symfony\\Component\\Filesystem\\' => array($vendorDir . '/symfony/filesystem'), 'Symfony\\Component\\Console\\' => array($vendorDir . '/symfony/console'), 'Seld\\PharUtils\\' => array($vendorDir . '/seld/phar-utils/src'), 'Seld\\JsonLint\\' => array($vendorDir . '/seld/jsonlint/src/Seld/JsonLint'), 'React\\Promise\\' => array($vendorDir . '/react/promise/src'), 'Psr\\Log\\' => array($vendorDir . '/psr/log/Psr/Log'), 'Peast\\test\\' => array($vendorDir . '/mck89/peast/test/Peast'), 'Peast\\' => array($vendorDir . '/mck89/peast/lib/Peast'), 'Mustangostang\\' => array($vendorDir . '/wp-cli/mustangostang-spyc/src'), 'JsonSchema\\' => array($vendorDir . '/justinrainbow/json-schema/src/JsonSchema'), 'Gettext\\Languages\\' => array($vendorDir . '/gettext/languages/src'), 'Gettext\\' => array($vendorDir . '/gettext/gettext/src'), 'Composer\\XdebugHandler\\' => array($vendorDir . '/composer/xdebug-handler/src'), 'Composer\\Semver\\' => array($vendorDir . '/composer/semver/src'), 'Composer\\MetadataMinifier\\' => array($vendorDir . '/composer/metadata-minifier/src'), 'Composer\\CaBundle\\' => array($vendorDir . '/composer/ca-bundle/src'), 'Composer\\' => array($vendorDir . '/composer/composer/src/Composer'), '' => array($vendorDir . '/wp-cli/cache-command/src', $vendorDir . '/wp-cli/checksum-command/src', $vendorDir . '/wp-cli/config-command/src', $vendorDir . '/wp-cli/core-command/src', $vendorDir . '/wp-cli/cron-command/src', $vendorDir . '/wp-cli/db-command/src', $vendorDir . '/wp-cli/entity-command/src', $vendorDir . '/wp-cli/eval-command/src', $vendorDir . '/wp-cli/export-command/src', $vendorDir . '/wp-cli/extension-command/src', $vendorDir . '/wp-cli/import-command/src', $vendorDir . '/wp-cli/language-command/src', $vendorDir . '/wp-cli/media-command/src', $vendorDir . '/wp-cli/package-command/src', $vendorDir . '/wp-cli/rewrite-command/src', $vendorDir . '/wp-cli/role-command/src', $vendorDir . '/wp-cli/scaffold-command/src', $vendorDir . '/wp-cli/search-replace-command/src', $vendorDir . '/wp-cli/server-command/src', $vendorDir . '/wp-cli/shell-command/src', $vendorDir . '/wp-cli/super-admin-command/src', $vendorDir . '/wp-cli/widget-command/src'), ); = 50600)) { $issues[] = 'Your Composer dependencies require a PHP version ">= 5.6.0". You are running ' . PHP_VERSION . '.'; } if ($issues) { if (!headers_sent()) { header('HTTP/1.1 500 Internal Server Error'); } if (!ini_get('display_errors')) { if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { fwrite(STDERR, 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . implode(PHP_EOL, $issues) . PHP_EOL.PHP_EOL); } elseif (!headers_sent()) { echo 'Composer detected issues in your platform:' . PHP_EOL.PHP_EOL . str_replace('You are running '.PHP_VERSION.'.', '', implode(PHP_EOL, $issues)) . PHP_EOL.PHP_EOL; } } trigger_error( 'Composer detected issues in your platform: ' . implode(' ', $issues), E_USER_ERROR ); } array($vendorDir . '/wp-cli/php-cli-tools/lib'), 'WP_CLI\\' => array($vendorDir . '/wp-cli/wp-cli/php'), 'Requests' => array($vendorDir . '/rmccue/requests/library'), 'Oxymel' => array($vendorDir . '/nb/oxymel'), 'Mustache' => array($vendorDir . '/mustache/mustache/src'), ); __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib/cli/cli.php', '3937806105cc8e221b8fa8db5b70d2f2' => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/includes/functions.php', '8a0ad02df6a5087f2c380f8fd52db273' => __DIR__ . '/..' . '/wp-cli/cache-command/cache-command.php', 'f3f0199a3ecd9f501d0a3b361bd2f61c' => __DIR__ . '/..' . '/wp-cli/entity-command/entity-command.php', '3f201033d5aceb2293314273be88f7c6' => __DIR__ . '/..' . '/wp-cli/extension-command/extension-command.php', 'c65f753375faee349b7adc48c2ee7cc2' => __DIR__ . '/..' . '/wp-cli/db-command/db-command.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => __DIR__ . '/..' . '/symfony/polyfill-mbstring/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => __DIR__ . '/..' . '/symfony/polyfill-ctype/bootstrap.php', 'ad155f8f1cf0d418fe49e248db8c661b' => __DIR__ . '/..' . '/react/promise/src/functions_include.php', 'd979c11fe80ba96ae3037b43429fe546' => __DIR__ . '/..' . '/wp-cli/scaffold-command/scaffold-command.php', '5c6ec5cff8f9d625772c8ed147f6b894' => __DIR__ . '/..' . '/wp-cli/export-command/export-command.php', 'b66d29757fcb2fb7a9608d068e3716b0' => __DIR__ . '/..' . '/wp-cli/checksum-command/checksum-command.php', 'ac949ce40a981819ba132473518a9a31' => __DIR__ . '/..' . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', '30cbb6e4122dc988e494c6b9c0438233' => __DIR__ . '/..' . '/wp-cli/import-command/import-command.php', '5e099d3cac677dd2bec1003ea7707745' => __DIR__ . '/..' . '/wp-cli/media-command/media-command.php', 'ba366f96f4fddbdef61ad7a862b44f61' => __DIR__ . '/..' . '/wp-cli/package-command/package-command.php', '5deaf6ce9c8bbdfb65104c7e938d5875' => __DIR__ . '/..' . '/wp-cli/config-command/config-command.php', '68c39b88215b6cf7a0da164166670ef9' => __DIR__ . '/..' . '/wp-cli/core-command/core-command.php', '7654e00bf0e632580764400bd8293a9c' => __DIR__ . '/..' . '/wp-cli/cron-command/cron-command.php', '021d3a13471556f0b57038d679f7f8ea' => __DIR__ . '/..' . '/wp-cli/embed-command/embed-command.php', 'f958dca3f412fd7975da1700912a9321' => __DIR__ . '/..' . '/wp-cli/eval-command/eval-command.php', 'ffb465a494c3101218c4417180c2c9a2' => __DIR__ . '/..' . '/wp-cli/i18n-command/i18n-command.php', 'ace0d205db7f4135ec32132a0076d555' => __DIR__ . '/..' . '/wp-cli/language-command/language-command.php', '1c88c1eff05217a8cac80c64c9ac2080' => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', 'f399c1c8d0c787d5c94c09884cdd9762' => __DIR__ . '/..' . '/wp-cli/rewrite-command/rewrite-command.php', '080fadd667195d055c5a23386f270261' => __DIR__ . '/..' . '/wp-cli/role-command/role-command.php', '8ecb13f8bbc22b1b34d12b14ec01077a' => __DIR__ . '/..' . '/wp-cli/search-replace-command/search-replace-command.php', '9f04dd0aa5d67ec75a75c88c345a079e' => __DIR__ . '/..' . '/wp-cli/server-command/server-command.php', '129d58fa8151374aceb8571bcaa97504' => __DIR__ . '/..' . '/wp-cli/shell-command/shell-command.php', '8519779bbb65eeb842af2f629ce7b6f8' => __DIR__ . '/..' . '/wp-cli/super-admin-command/super-admin-command.php', '1f05372afcc7d0c51a305cef1d56dd01' => __DIR__ . '/..' . '/wp-cli/widget-command/widget-command.php', ); public static $prefixLengthsPsr4 = array ( 'W' => array ( 'WP_CLI\\MaintenanceMode\\' => 23, 'WP_CLI\\I18n\\' => 12, 'WP_CLI\\Embeds\\' => 14, 'WP_CLI\\' => 7, ), 'S' => array ( 'Symfony\\Polyfill\\Mbstring\\' => 26, 'Symfony\\Polyfill\\Ctype\\' => 23, 'Symfony\\Component\\Process\\' => 26, 'Symfony\\Component\\Finder\\' => 25, 'Symfony\\Component\\Filesystem\\' => 29, 'Symfony\\Component\\Debug\\' => 24, 'Symfony\\Component\\Console\\' => 26, 'Seld\\PharUtils\\' => 15, 'Seld\\JsonLint\\' => 14, ), 'R' => array ( 'React\\Promise\\' => 14, ), 'P' => array ( 'Psr\\Log\\' => 8, 'Peast\\test\\' => 11, 'Peast\\' => 6, ), 'M' => array ( 'Mustangostang\\' => 14, ), 'J' => array ( 'JsonSchema\\' => 11, ), 'G' => array ( 'Gettext\\Languages\\' => 18, 'Gettext\\' => 8, ), 'C' => array ( 'Composer\\XdebugHandler\\' => 23, 'Composer\\Spdx\\' => 14, 'Composer\\Semver\\' => 16, 'Composer\\MetadataMinifier\\' => 26, 'Composer\\CaBundle\\' => 18, 'Composer\\' => 9, ), ); public static $prefixDirsPsr4 = array ( 'WP_CLI\\MaintenanceMode\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/maintenance-mode-command/src', ), 'WP_CLI\\I18n\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/i18n-command/src', ), 'WP_CLI\\Embeds\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/embed-command/src', ), 'WP_CLI\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/entity-command/src/WP_CLI', 1 => __DIR__ . '/..' . '/wp-cli/shell-command/src/WP_CLI', ), 'Symfony\\Polyfill\\Mbstring\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-mbstring', ), 'Symfony\\Polyfill\\Ctype\\' => array ( 0 => __DIR__ . '/..' . '/symfony/polyfill-ctype', ), 'Symfony\\Component\\Process\\' => array ( 0 => __DIR__ . '/..' . '/symfony/process', ), 'Symfony\\Component\\Finder\\' => array ( 0 => __DIR__ . '/..' . '/symfony/finder', ), 'Symfony\\Component\\Filesystem\\' => array ( 0 => __DIR__ . '/..' . '/symfony/filesystem', ), 'Symfony\\Component\\Debug\\' => array ( ), 'Symfony\\Component\\Console\\' => array ( 0 => __DIR__ . '/..' . '/symfony/console', ), 'Seld\\PharUtils\\' => array ( 0 => __DIR__ . '/..' . '/seld/phar-utils/src', ), 'Seld\\JsonLint\\' => array ( 0 => __DIR__ . '/..' . '/seld/jsonlint/src/Seld/JsonLint', ), 'React\\Promise\\' => array ( 0 => __DIR__ . '/..' . '/react/promise/src', ), 'Psr\\Log\\' => array ( 0 => __DIR__ . '/..' . '/psr/log/Psr/Log', ), 'Peast\\test\\' => array ( 0 => __DIR__ . '/..' . '/mck89/peast/test/Peast', ), 'Peast\\' => array ( 0 => __DIR__ . '/..' . '/mck89/peast/lib/Peast', ), 'Mustangostang\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/mustangostang-spyc/src', ), 'JsonSchema\\' => array ( 0 => __DIR__ . '/..' . '/justinrainbow/json-schema/src/JsonSchema', ), 'Gettext\\Languages\\' => array ( 0 => __DIR__ . '/..' . '/gettext/languages/src', ), 'Gettext\\' => array ( 0 => __DIR__ . '/..' . '/gettext/gettext/src', ), 'Composer\\XdebugHandler\\' => array ( 0 => __DIR__ . '/..' . '/composer/xdebug-handler/src', ), 'Composer\\Spdx\\' => array ( ), 'Composer\\Semver\\' => array ( 0 => __DIR__ . '/..' . '/composer/semver/src', ), 'Composer\\MetadataMinifier\\' => array ( 0 => __DIR__ . '/..' . '/composer/metadata-minifier/src', ), 'Composer\\CaBundle\\' => array ( 0 => __DIR__ . '/..' . '/composer/ca-bundle/src', ), 'Composer\\' => array ( 0 => __DIR__ . '/..' . '/composer/composer/src/Composer', ), ); public static $fallbackDirsPsr4 = array ( 0 => __DIR__ . '/..' . '/wp-cli/cache-command/src', 1 => __DIR__ . '/..' . '/wp-cli/checksum-command/src', 2 => __DIR__ . '/..' . '/wp-cli/config-command/src', 3 => __DIR__ . '/..' . '/wp-cli/core-command/src', 4 => __DIR__ . '/..' . '/wp-cli/cron-command/src', 5 => __DIR__ . '/..' . '/wp-cli/db-command/src', 6 => __DIR__ . '/..' . '/wp-cli/entity-command/src', 7 => __DIR__ . '/..' . '/wp-cli/eval-command/src', 8 => __DIR__ . '/..' . '/wp-cli/export-command/src', 9 => __DIR__ . '/..' . '/wp-cli/extension-command/src', 10 => __DIR__ . '/..' . '/wp-cli/import-command/src', 11 => __DIR__ . '/..' . '/wp-cli/language-command/src', 12 => __DIR__ . '/..' . '/wp-cli/media-command/src', 13 => __DIR__ . '/..' . '/wp-cli/package-command/src', 14 => __DIR__ . '/..' . '/wp-cli/rewrite-command/src', 15 => __DIR__ . '/..' . '/wp-cli/role-command/src', 16 => __DIR__ . '/..' . '/wp-cli/scaffold-command/src', 17 => __DIR__ . '/..' . '/wp-cli/search-replace-command/src', 18 => __DIR__ . '/..' . '/wp-cli/server-command/src', 19 => __DIR__ . '/..' . '/wp-cli/shell-command/src', 20 => __DIR__ . '/..' . '/wp-cli/super-admin-command/src', 21 => __DIR__ . '/..' . '/wp-cli/widget-command/src', ); public static $prefixesPsr0 = array ( 'c' => array ( 'cli' => array ( 0 => __DIR__ . '/..' . '/wp-cli/php-cli-tools/lib', ), ), 'W' => array ( 'WP_CLI\\' => array ( 0 => __DIR__ . '/..' . '/wp-cli/wp-cli/php', ), ), 'R' => array ( 'Requests' => array ( 0 => __DIR__ . '/..' . '/rmccue/requests/library', ), ), 'O' => array ( 'Oxymel' => array ( 0 => __DIR__ . '/..' . '/nb/oxymel', ), ), 'M' => array ( 'Mustache' => array ( 0 => __DIR__ . '/..' . '/mustache/mustache/src', ), ), ); public static $classMap = array ( 'Composer\\InstalledVersions' => __DIR__ . '/..' . '/composer/InstalledVersions.php', 'WP_CLI' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli.php', 'WP_CLI_Command' => __DIR__ . '/..' . '/wp-cli/wp-cli/php/class-wp-cli-command.php', ); public static function getInitializer(ClassLoader $loader) { return \Closure::bind(function () use ($loader) { $loader->prefixLengthsPsr4 = ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$prefixLengthsPsr4; $loader->prefixDirsPsr4 = ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$prefixDirsPsr4; $loader->fallbackDirsPsr4 = ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$fallbackDirsPsr4; $loader->prefixesPsr0 = ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$prefixesPsr0; $loader->classMap = ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$classMap; }, null, ClassLoader::class); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Config\JsonConfigSource; use Composer\Json\JsonFile; use Composer\IO\IOInterface; use Composer\Package\Archiver; use Composer\Package\Version\VersionGuesser; use Composer\Package\RootPackageInterface; use Composer\Repository\RepositoryManager; use Composer\Repository\RepositoryFactory; use Composer\Repository\WritableRepositoryInterface; use Composer\Util\Filesystem; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Composer\Util\HttpDownloader; use Composer\Util\Loop; use Composer\Util\Silencer; use Composer\Plugin\PluginEvents; use Composer\EventDispatcher\Event; use Seld\JsonLint\DuplicateKeyException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Output\ConsoleOutput; use Composer\EventDispatcher\EventDispatcher; use Composer\Autoload\AutoloadGenerator; use Composer\Package\Version\VersionParser; use Composer\Downloader\TransportException; use Seld\JsonLint\JsonParser; /** * Creates a configured instance of composer. * * @author Ryan Weaver * @author Jordi Boggiano * @author Igor Wiedler * @author Nils Adermann */ class Factory { /** * @throws \RuntimeException * @return string */ protected static function getHomeDir() { $home = getenv('COMPOSER_HOME'); if ($home) { return $home; } if (Platform::isWindows()) { if (!getenv('APPDATA')) { throw new \RuntimeException('The APPDATA or COMPOSER_HOME environment variable must be set for composer to run correctly'); } return rtrim(strtr(getenv('APPDATA'), '\\', '/'), '/') . '/Composer'; } $userDir = self::getUserDir(); $dirs = array(); if (self::useXdg()) { // XDG Base Directory Specifications $xdgConfig = getenv('XDG_CONFIG_HOME'); if (!$xdgConfig) { $xdgConfig = $userDir . '/.config'; } $dirs[] = $xdgConfig . '/composer'; } $dirs[] = $userDir . '/.composer'; // select first dir which exists of: $XDG_CONFIG_HOME/composer or ~/.composer foreach ($dirs as $dir) { if (Silencer::call('is_dir', $dir)) { return $dir; } } // if none exists, we default to first defined one (XDG one if system uses it, or ~/.composer otherwise) return $dirs[0]; } /** * @param string $home * @return string */ protected static function getCacheDir($home) { $cacheDir = getenv('COMPOSER_CACHE_DIR'); if ($cacheDir) { return $cacheDir; } $homeEnv = getenv('COMPOSER_HOME'); if ($homeEnv) { return $homeEnv . '/cache'; } if (Platform::isWindows()) { if ($cacheDir = getenv('LOCALAPPDATA')) { $cacheDir .= '/Composer'; } else { $cacheDir = $home . '/cache'; } return rtrim(strtr($cacheDir, '\\', '/'), '/'); } $userDir = self::getUserDir(); if ($home === $userDir . '/.composer' && is_dir($home . '/cache')) { return $home . '/cache'; } if (self::useXdg()) { $xdgCache = getenv('XDG_CACHE_HOME') ?: $userDir . '/.cache'; return $xdgCache . '/composer'; } return $home . '/cache'; } /** * @param string $home * @return string */ protected static function getDataDir($home) { $homeEnv = getenv('COMPOSER_HOME'); if ($homeEnv) { return $homeEnv; } if (Platform::isWindows()) { return strtr($home, '\\', '/'); } $userDir = self::getUserDir(); if ($home !== $userDir . '/.composer' && self::useXdg()) { $xdgData = getenv('XDG_DATA_HOME') ?: $userDir . '/.local/share'; return $xdgData . '/composer'; } return $home; } /** * @param IOInterface|null $io * @return Config */ public static function createConfig(IOInterface $io = null, $cwd = null) { $cwd = $cwd ?: getcwd(); $config = new Config(true, $cwd); // determine and add main dirs to the config $home = self::getHomeDir(); $config->merge(array('config' => array( 'home' => $home, 'cache-dir' => self::getCacheDir($home), 'data-dir' => self::getDataDir($home), ))); // load global config $file = new JsonFile($config->get('home').'/config.json'); if ($file->exists()) { if ($io && $io->isDebug()) { $io->writeError('Loading config file ' . $file->getPath()); } $config->merge($file->read()); } $config->setConfigSource(new JsonConfigSource($file)); $htaccessProtect = (bool) $config->get('htaccess-protect'); if ($htaccessProtect) { // Protect directory against web access. Since HOME could be // the www-data's user home and be web-accessible it is a // potential security risk $dirs = array($config->get('home'), $config->get('cache-dir'), $config->get('data-dir')); foreach ($dirs as $dir) { if (!file_exists($dir . '/.htaccess')) { if (!is_dir($dir)) { Silencer::call('mkdir', $dir, 0777, true); } Silencer::call('file_put_contents', $dir . '/.htaccess', 'Deny from all'); } } } // load global auth file $file = new JsonFile($config->get('home').'/auth.json'); if ($file->exists()) { if ($io && $io->isDebug()) { $io->writeError('Loading config file ' . $file->getPath()); } $config->merge(array('config' => $file->read())); } $config->setAuthConfigSource(new JsonConfigSource($file, true)); // load COMPOSER_AUTH environment variable if set if ($composerAuthEnv = getenv('COMPOSER_AUTH')) { $authData = json_decode($composerAuthEnv, true); if (null === $authData) { throw new \UnexpectedValueException('COMPOSER_AUTH environment variable is malformed, should be a valid JSON object'); } if ($io && $io->isDebug()) { $io->writeError('Loading auth config from COMPOSER_AUTH'); } $config->merge(array('config' => $authData)); } return $config; } public static function getComposerFile() { return trim(getenv('COMPOSER')) ?: './composer.json'; } public static function getLockFile($composerFile) { return "json" === pathinfo($composerFile, PATHINFO_EXTENSION) ? substr($composerFile, 0, -4).'lock' : $composerFile . '.lock'; } public static function createAdditionalStyles() { return array( 'highlight' => new OutputFormatterStyle('red'), 'warning' => new OutputFormatterStyle('black', 'yellow'), ); } /** * Creates a ConsoleOutput instance * * @return ConsoleOutput */ public static function createOutput() { $styles = self::createAdditionalStyles(); $formatter = new OutputFormatter(false, $styles); return new ConsoleOutput(ConsoleOutput::VERBOSITY_NORMAL, null, $formatter); } /** * Creates a Composer instance * * @param IOInterface $io IO instance * @param array|string|null $localConfig either a configuration array or a filename to read from, if null it will * read from the default filename * @param bool $disablePlugins Whether plugins should not be loaded * @param bool $fullLoad Whether to initialize everything or only main project stuff (used when loading the global composer) * @throws \InvalidArgumentException * @throws \UnexpectedValueException * @return Composer */ public function createComposer(IOInterface $io, $localConfig = null, $disablePlugins = false, $cwd = null, $fullLoad = true) { $cwd = $cwd ?: getcwd(); // load Composer configuration if (null === $localConfig) { $localConfig = static::getComposerFile(); } if (is_string($localConfig)) { $composerFile = $localConfig; $file = new JsonFile($localConfig, null, $io); if (!$file->exists()) { if ($localConfig === './composer.json' || $localConfig === 'composer.json') { $message = 'Composer could not find a composer.json file in '.$cwd; } else { $message = 'Composer could not find the config file: '.$localConfig; } $instructions = $fullLoad ? 'To initialize a project, please create a composer.json file as described in the https://getcomposer.org/ "Getting Started" section' : ''; throw new \InvalidArgumentException($message.PHP_EOL.$instructions); } $file->validateSchema(JsonFile::LAX_SCHEMA); $jsonParser = new JsonParser; try { $jsonParser->parse(file_get_contents($localConfig), JsonParser::DETECT_KEY_CONFLICTS); } catch (DuplicateKeyException $e) { $details = $e->getDetails(); $io->writeError('Key '.$details['key'].' is a duplicate in '.$localConfig.' at line '.$details['line'].''); } $localConfig = $file->read(); } // Load config and override with local config/auth config $config = static::createConfig($io, $cwd); $config->merge($localConfig); if (isset($composerFile)) { $io->writeError('Loading config file ' . $composerFile .' ('.realpath($composerFile).')', true, IOInterface::DEBUG); $config->setConfigSource(new JsonConfigSource(new JsonFile(realpath($composerFile), null, $io))); $localAuthFile = new JsonFile(dirname(realpath($composerFile)) . '/auth.json', null, $io); if ($localAuthFile->exists()) { $io->writeError('Loading config file ' . $localAuthFile->getPath(), true, IOInterface::DEBUG); $config->merge(array('config' => $localAuthFile->read())); $config->setAuthConfigSource(new JsonConfigSource($localAuthFile, true)); } } $vendorDir = $config->get('vendor-dir'); // initialize composer $composer = new Composer(); $composer->setConfig($config); if ($fullLoad) { // load auth configs into the IO instance $io->loadConfiguration($config); // load existing Composer\InstalledVersions instance if available if (!class_exists('Composer\InstalledVersions', false) && file_exists($installedVersionsPath = $config->get('vendor-dir').'/composer/InstalledVersions.php')) { include $installedVersionsPath; } } $httpDownloader = self::createHttpDownloader($io, $config); $process = new ProcessExecutor($io); $loop = new Loop($httpDownloader, $process); $composer->setLoop($loop); // initialize event dispatcher $dispatcher = new EventDispatcher($composer, $io, $process); $composer->setEventDispatcher($dispatcher); // initialize repository manager $rm = RepositoryFactory::manager($io, $config, $httpDownloader, $dispatcher, $process); $composer->setRepositoryManager($rm); // force-set the version of the global package if not defined as // guessing it adds no value and only takes time if (!$fullLoad && !isset($localConfig['version'])) { $localConfig['version'] = '1.0.0'; } // load package $parser = new VersionParser; $guesser = new VersionGuesser($config, $process, $parser); $loader = $this->loadRootPackage($rm, $config, $parser, $guesser, $io); $package = $loader->load($localConfig, 'Composer\Package\RootPackage', $cwd); $composer->setPackage($package); // load local repository $this->addLocalRepository($io, $rm, $vendorDir, $package); // initialize installation manager $im = $this->createInstallationManager($loop, $io, $dispatcher); $composer->setInstallationManager($im); if ($fullLoad) { // initialize download manager $dm = $this->createDownloadManager($io, $config, $httpDownloader, $process, $dispatcher); $composer->setDownloadManager($dm); // initialize autoload generator $generator = new AutoloadGenerator($dispatcher, $io); $composer->setAutoloadGenerator($generator); // initialize archive manager $am = $this->createArchiveManager($config, $dm, $loop); $composer->setArchiveManager($am); } // add installers to the manager (must happen after download manager is created since they read it out of $composer) $this->createDefaultInstallers($im, $composer, $io, $process); if ($fullLoad) { $globalComposer = null; if (realpath($config->get('home')) !== $cwd) { $globalComposer = $this->createGlobalComposer($io, $config, $disablePlugins); } $pm = $this->createPluginManager($io, $composer, $globalComposer, $disablePlugins); $composer->setPluginManager($pm); $pm->loadInstalledPlugins(); } // init locker if possible if ($fullLoad && isset($composerFile)) { $lockFile = self::getLockFile($composerFile); $locker = new Package\Locker($io, new JsonFile($lockFile, null, $io), $im, file_get_contents($composerFile), $process); $composer->setLocker($locker); } if ($fullLoad) { $initEvent = new Event(PluginEvents::INIT); $composer->getEventDispatcher()->dispatch($initEvent->getName(), $initEvent); // once everything is initialized we can // purge packages from local repos if they have been deleted on the filesystem if ($rm->getLocalRepository()) { $this->purgePackages($rm->getLocalRepository(), $im); } } return $composer; } /** * @param IOInterface $io IO instance * @param bool $disablePlugins Whether plugins should not be loaded * @return Composer|null */ public static function createGlobal(IOInterface $io, $disablePlugins = false) { $factory = new static(); return $factory->createGlobalComposer($io, static::createConfig($io), $disablePlugins, true); } /** * @param Repository\RepositoryManager $rm * @param string $vendorDir */ protected function addLocalRepository(IOInterface $io, RepositoryManager $rm, $vendorDir, RootPackageInterface $rootPackage) { $rm->setLocalRepository(new Repository\InstalledFilesystemRepository(new JsonFile($vendorDir.'/composer/installed.json', null, $io), true, $rootPackage)); } /** * @param Config $config * @return Composer|null */ protected function createGlobalComposer(IOInterface $io, Config $config, $disablePlugins, $fullLoad = false) { $composer = null; try { $composer = $this->createComposer($io, $config->get('home') . '/composer.json', $disablePlugins, $config->get('home'), $fullLoad); } catch (\Exception $e) { $io->writeError('Failed to initialize global composer: '.$e->getMessage(), true, IOInterface::DEBUG); } return $composer; } /** * @param IO\IOInterface $io * @param Config $config * @param EventDispatcher $eventDispatcher * @return Downloader\DownloadManager */ public function createDownloadManager(IOInterface $io, Config $config, HttpDownloader $httpDownloader, ProcessExecutor $process, EventDispatcher $eventDispatcher = null) { $cache = null; if ($config->get('cache-files-ttl') > 0) { $cache = new Cache($io, $config->get('cache-files-dir'), 'a-z0-9_./'); $cache->setReadOnly($config->get('cache-read-only')); } $fs = new Filesystem($process); $dm = new Downloader\DownloadManager($io, false, $fs); switch ($preferred = $config->get('preferred-install')) { case 'dist': $dm->setPreferDist(true); break; case 'source': $dm->setPreferSource(true); break; case 'auto': default: // noop break; } if (is_array($preferred)) { $dm->setPreferences($preferred); } $dm->setDownloader('git', new Downloader\GitDownloader($io, $config, $process, $fs)); $dm->setDownloader('svn', new Downloader\SvnDownloader($io, $config, $process, $fs)); $dm->setDownloader('fossil', new Downloader\FossilDownloader($io, $config, $process, $fs)); $dm->setDownloader('hg', new Downloader\HgDownloader($io, $config, $process, $fs)); $dm->setDownloader('perforce', new Downloader\PerforceDownloader($io, $config, $process, $fs)); $dm->setDownloader('zip', new Downloader\ZipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('rar', new Downloader\RarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('tar', new Downloader\TarDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('gzip', new Downloader\GzipDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('xz', new Downloader\XzDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('phar', new Downloader\PharDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('file', new Downloader\FileDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); $dm->setDownloader('path', new Downloader\PathDownloader($io, $config, $httpDownloader, $eventDispatcher, $cache, $fs, $process)); return $dm; } /** * @param Config $config The configuration * @param Downloader\DownloadManager $dm Manager use to download sources * @return Archiver\ArchiveManager */ public function createArchiveManager(Config $config, Downloader\DownloadManager $dm, Loop $loop) { $am = new Archiver\ArchiveManager($dm, $loop); $am->addArchiver(new Archiver\ZipArchiver); $am->addArchiver(new Archiver\PharArchiver); return $am; } /** * @param IOInterface $io * @param Composer $composer * @param Composer $globalComposer * @param bool $disablePlugins * @return Plugin\PluginManager */ protected function createPluginManager(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) { return new Plugin\PluginManager($io, $composer, $globalComposer, $disablePlugins); } /** * @return Installer\InstallationManager */ public function createInstallationManager(Loop $loop, IOInterface $io, EventDispatcher $eventDispatcher = null) { return new Installer\InstallationManager($loop, $io, $eventDispatcher); } /** * @param Installer\InstallationManager $im * @param Composer $composer * @param IO\IOInterface $io */ protected function createDefaultInstallers(Installer\InstallationManager $im, Composer $composer, IOInterface $io, ProcessExecutor $process = null) { $fs = new Filesystem($process); $binaryInstaller = new Installer\BinaryInstaller($io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $fs); $im->addInstaller(new Installer\LibraryInstaller($io, $composer, null, $fs, $binaryInstaller)); $im->addInstaller(new Installer\PluginInstaller($io, $composer, $fs, $binaryInstaller)); $im->addInstaller(new Installer\MetapackageInstaller($io)); } /** * @param WritableRepositoryInterface $repo repository to purge packages from * @param Installer\InstallationManager $im manager to check whether packages are still installed */ protected function purgePackages(WritableRepositoryInterface $repo, Installer\InstallationManager $im) { foreach ($repo->getPackages() as $package) { if (!$im->isPackageInstalled($repo, $package)) { $repo->removePackage($package); } } } protected function loadRootPackage(RepositoryManager $rm, Config $config, VersionParser $parser, VersionGuesser $guesser, IOInterface $io) { return new Package\Loader\RootPackageLoader($rm, $config, $parser, $guesser, $io); } /** * @param IOInterface $io IO instance * @param mixed $config either a configuration array or a filename to read from, if null it will read from * the default filename * @param bool $disablePlugins Whether plugins should not be loaded * @return Composer */ public static function create(IOInterface $io, $config = null, $disablePlugins = false) { $factory = new static(); return $factory->createComposer($io, $config, $disablePlugins); } /** * If you are calling this in a plugin, you probably should instead use $composer->getLoop()->getHttpDownloader() * * @param IOInterface $io IO instance * @param Config $config Config instance * @param array $options Array of options passed directly to HttpDownloader constructor * @return HttpDownloader */ public static function createHttpDownloader(IOInterface $io, Config $config, $options = array()) { static $warned = false; $disableTls = false; // allow running the config command if disable-tls is in the arg list, even if openssl is missing, to allow disabling it via the config command if (isset($_SERVER['argv']) && in_array('disable-tls', $_SERVER['argv']) && (in_array('conf', $_SERVER['argv']) || in_array('config', $_SERVER['argv']))) { $warned = true; $disableTls = !extension_loaded('openssl'); } elseif ($config && $config->get('disable-tls') === true) { if (!$warned) { $io->writeError('You are running Composer with SSL/TLS protection disabled.'); } $warned = true; $disableTls = true; } elseif (!extension_loaded('openssl')) { throw new Exception\NoSslException('The openssl extension is required for SSL/TLS protection but is not available. ' . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); } $httpDownloaderOptions = array(); if ($disableTls === false) { if ($config && $config->get('cafile')) { $httpDownloaderOptions['ssl']['cafile'] = $config->get('cafile'); } if ($config && $config->get('capath')) { $httpDownloaderOptions['ssl']['capath'] = $config->get('capath'); } $httpDownloaderOptions = array_replace_recursive($httpDownloaderOptions, $options); } try { $httpDownloader = new HttpDownloader($io, $config, $httpDownloaderOptions, $disableTls); } catch (TransportException $e) { if (false !== strpos($e->getMessage(), 'cafile')) { $io->write('Unable to locate a valid CA certificate file. You must set a valid \'cafile\' option.'); $io->write('A valid CA certificate file is required for SSL/TLS protection.'); if (PHP_VERSION_ID < 50600) { $io->write('It is recommended you upgrade to PHP 5.6+ which can detect your system CA file automatically.'); } $io->write('You can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); } throw $e; } return $httpDownloader; } /** * @return bool */ private static function useXdg() { foreach (array_keys($_SERVER) as $key) { if (strpos($key, 'XDG_') === 0) { return true; } } if (Silencer::call('is_dir', '/etc/xdg')) { return true; } return false; } /** * @throws \RuntimeException * @return string */ private static function getUserDir() { $home = getenv('HOME'); if (!$home) { throw new \RuntimeException('The HOME or COMPOSER_HOME environment variable must be set for composer to run correctly'); } return rtrim(strtr($home, '\\', '/'), '/'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Config\ConfigSourceInterface; use Composer\Downloader\TransportException; use Composer\IO\IOInterface; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; /** * @author Jordi Boggiano */ class Config { const RELATIVE_PATHS = 1; public static $defaultConfig = array( 'process-timeout' => 300, 'use-include-path' => false, 'preferred-install' => 'auto', 'notify-on-install' => true, 'github-protocols' => array('https', 'ssh', 'git'), 'vendor-dir' => 'vendor', 'bin-dir' => '{$vendor-dir}/bin', 'cache-dir' => '{$home}/cache', 'data-dir' => '{$home}', 'cache-files-dir' => '{$cache-dir}/files', 'cache-repo-dir' => '{$cache-dir}/repo', 'cache-vcs-dir' => '{$cache-dir}/vcs', 'cache-ttl' => 15552000, // 6 months 'cache-files-ttl' => null, // fallback to cache-ttl 'cache-files-maxsize' => '300MiB', 'cache-read-only' => false, 'bin-compat' => 'auto', 'discard-changes' => false, 'autoloader-suffix' => null, 'sort-packages' => false, 'optimize-autoloader' => false, 'classmap-authoritative' => false, 'apcu-autoloader' => false, 'prepend-autoloader' => true, 'github-domains' => array('github.com'), 'bitbucket-expose-hostname' => true, 'disable-tls' => false, 'secure-http' => true, 'cafile' => null, 'capath' => null, 'github-expose-hostname' => true, 'gitlab-domains' => array('gitlab.com'), 'store-auths' => 'prompt', 'platform' => array(), 'archive-format' => 'tar', 'archive-dir' => '.', 'htaccess-protect' => true, 'use-github-api' => true, 'lock' => true, 'platform-check' => 'php-only', // valid keys without defaults (auth config stuff): // bitbucket-oauth // github-oauth // gitlab-oauth // gitlab-token // http-basic // bearer ); public static $defaultRepositories = array( 'packagist.org' => array( 'type' => 'composer', 'url' => 'https://repo.packagist.org', ), ); private $config; private $baseDir; private $repositories; /** @var ConfigSourceInterface */ private $configSource; /** @var ConfigSourceInterface */ private $authConfigSource; private $useEnvironment; private $warnedHosts = array(); /** * @param bool $useEnvironment Use COMPOSER_ environment variables to replace config settings * @param string $baseDir Optional base directory of the config */ public function __construct($useEnvironment = true, $baseDir = null) { // load defaults $this->config = static::$defaultConfig; $this->repositories = static::$defaultRepositories; $this->useEnvironment = (bool) $useEnvironment; $this->baseDir = $baseDir; } public function setConfigSource(ConfigSourceInterface $source) { $this->configSource = $source; } public function getConfigSource() { return $this->configSource; } public function setAuthConfigSource(ConfigSourceInterface $source) { $this->authConfigSource = $source; } public function getAuthConfigSource() { return $this->authConfigSource; } /** * Merges new config values with the existing ones (overriding) * * @param array $config */ public function merge($config) { // override defaults with given config if (!empty($config['config']) && is_array($config['config'])) { foreach ($config['config'] as $key => $val) { if (in_array($key, array('bitbucket-oauth', 'github-oauth', 'gitlab-oauth', 'gitlab-token', 'http-basic', 'bearer')) && isset($this->config[$key])) { $this->config[$key] = array_merge($this->config[$key], $val); } elseif (in_array($key, array('gitlab-domains', 'github-domains')) && isset($this->config[$key])) { $this->config[$key] = array_unique(array_merge($this->config[$key], $val)); } elseif ('preferred-install' === $key && isset($this->config[$key])) { if (is_array($val) || is_array($this->config[$key])) { if (is_string($val)) { $val = array('*' => $val); } if (is_string($this->config[$key])) { $this->config[$key] = array('*' => $this->config[$key]); } $this->config[$key] = array_merge($this->config[$key], $val); // the full match pattern needs to be last if (isset($this->config[$key]['*'])) { $wildcard = $this->config[$key]['*']; unset($this->config[$key]['*']); $this->config[$key]['*'] = $wildcard; } } else { $this->config[$key] = $val; } } else { $this->config[$key] = $val; } } } if (!empty($config['repositories']) && is_array($config['repositories'])) { $this->repositories = array_reverse($this->repositories, true); $newRepos = array_reverse($config['repositories'], true); foreach ($newRepos as $name => $repository) { // disable a repository by name if (false === $repository) { $this->disableRepoByName($name); continue; } // disable a repository with an anonymous {"name": false} repo if (is_array($repository) && 1 === count($repository) && false === current($repository)) { $this->disableRepoByName(key($repository)); continue; } // auto-deactivate the default packagist.org repo if it gets redefined if (isset($repository['type'], $repository['url']) && $repository['type'] === 'composer' && preg_match('{^https?://(?:[a-z0-9-.]+\.)?packagist.org(/|$)}', $repository['url'])) { $this->disableRepoByName('packagist.org'); } // store repo if (is_int($name)) { $this->repositories[] = $repository; } else { if ($name === 'packagist') { // BC support for default "packagist" named repo $this->repositories[$name . '.org'] = $repository; } else { $this->repositories[$name] = $repository; } } } $this->repositories = array_reverse($this->repositories, true); } } /** * @return array */ public function getRepositories() { return $this->repositories; } /** * Returns a setting * * @param string $key * @param int $flags Options (see class constants) * @throws \RuntimeException * @return mixed */ public function get($key, $flags = 0) { switch ($key) { // strings/paths with env var and {$refs} support case 'vendor-dir': case 'bin-dir': case 'process-timeout': case 'data-dir': case 'cache-dir': case 'cache-files-dir': case 'cache-repo-dir': case 'cache-vcs-dir': case 'cafile': case 'capath': // convert foo-bar to COMPOSER_FOO_BAR and check if it exists since it overrides the local config $env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); $val = $this->getComposerEnv($env); $val = rtrim((string) $this->process(false !== $val ? $val : $this->config[$key], $flags), '/\\'); $val = Platform::expandPath($val); if (substr($key, -4) !== '-dir') { return $val; } return (($flags & self::RELATIVE_PATHS) == self::RELATIVE_PATHS) ? $val : $this->realpath($val); // booleans with env var support case 'cache-read-only': case 'htaccess-protect': // convert foo-bar to COMPOSER_FOO_BAR and check if it exists since it overrides the local config $env = 'COMPOSER_' . strtoupper(strtr($key, '-', '_')); $val = $this->getComposerEnv($env); if (false === $val) { $val = $this->config[$key]; } return $val !== 'false' && (bool) $val; // booleans without env var support case 'disable-tls': case 'secure-http': case 'use-github-api': case 'lock': // special case for secure-http if ($key === 'secure-http' && $this->get('disable-tls') === true) { return false; } return $this->config[$key] !== 'false' && (bool) $this->config[$key]; // ints without env var support case 'cache-ttl': return (int) $this->config[$key]; // numbers with kb/mb/gb support, without env var support case 'cache-files-maxsize': if (!preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $this->config[$key], $matches)) { throw new \RuntimeException( "Could not parse the value of '$key': {$this->config[$key]}" ); } $size = $matches[1]; if (isset($matches[2])) { switch (strtolower($matches[2])) { case 'g': $size *= 1024; // intentional fallthrough // no break case 'm': $size *= 1024; // intentional fallthrough // no break case 'k': $size *= 1024; break; } } return $size; // special cases below case 'cache-files-ttl': if (isset($this->config[$key])) { return (int) $this->config[$key]; } return (int) $this->config['cache-ttl']; case 'home': $val = preg_replace('#^(\$HOME|~)(/|$)#', rtrim(getenv('HOME') ?: getenv('USERPROFILE'), '/\\') . '/', $this->config[$key]); return rtrim($this->process($val, $flags), '/\\'); case 'bin-compat': $value = $this->getComposerEnv('COMPOSER_BIN_COMPAT') ?: $this->config[$key]; if (!in_array($value, array('auto', 'full'))) { throw new \RuntimeException( "Invalid value for 'bin-compat': {$value}. Expected auto, full" ); } return $value; case 'discard-changes': if ($env = $this->getComposerEnv('COMPOSER_DISCARD_CHANGES')) { if (!in_array($env, array('stash', 'true', 'false', '1', '0'), true)) { throw new \RuntimeException( "Invalid value for COMPOSER_DISCARD_CHANGES: {$env}. Expected 1, 0, true, false or stash" ); } if ('stash' === $env) { return 'stash'; } // convert string value to bool return $env !== 'false' && (bool) $env; } if (!in_array($this->config[$key], array(true, false, 'stash'), true)) { throw new \RuntimeException( "Invalid value for 'discard-changes': {$this->config[$key]}. Expected true, false or stash" ); } return $this->config[$key]; case 'github-protocols': $protos = $this->config['github-protocols']; if ($this->config['secure-http'] && false !== ($index = array_search('git', $protos))) { unset($protos[$index]); } if (reset($protos) === 'http') { throw new \RuntimeException('The http protocol for github is not available anymore, update your config\'s github-protocols to use "https", "git" or "ssh"'); } return $protos; default: if (!isset($this->config[$key])) { return null; } return $this->process($this->config[$key], $flags); } } public function all($flags = 0) { $all = array( 'repositories' => $this->getRepositories(), ); foreach (array_keys($this->config) as $key) { $all['config'][$key] = $this->get($key, $flags); } return $all; } public function raw() { return array( 'repositories' => $this->getRepositories(), 'config' => $this->config, ); } /** * Checks whether a setting exists * * @param string $key * @return bool */ public function has($key) { return array_key_exists($key, $this->config); } /** * Replaces {$refs} inside a config string * * @param string|int|null $value a config string that can contain {$refs-to-other-config} * @param int $flags Options (see class constants) * @return string|int|null */ private function process($value, $flags) { $config = $this; if (!is_string($value)) { return $value; } return preg_replace_callback('#\{\$(.+)\}#', function ($match) use ($config, $flags) { return $config->get($match[1], $flags); }, $value); } /** * Turns relative paths in absolute paths without realpath() * * Since the dirs might not exist yet we can not call realpath or it will fail. * * @param string $path * @return string */ private function realpath($path) { if (preg_match('{^(?:/|[a-z]:|[a-z0-9.]+://)}i', $path)) { return $path; } return $this->baseDir . '/' . $path; } /** * Reads the value of a Composer environment variable * * This should be used to read COMPOSER_ environment variables * that overload config values. * * @param string $var * @return string|bool */ private function getComposerEnv($var) { if ($this->useEnvironment) { return getenv($var); } return false; } private function disableRepoByName($name) { if (isset($this->repositories[$name])) { unset($this->repositories[$name]); } elseif ($name === 'packagist') { // BC support for default "packagist" named repo unset($this->repositories['packagist.org']); } } /** * Validates that the passed URL is allowed to be used by current config, or throws an exception. * * @param string $url * @param IOInterface $io */ public function prohibitUrlByConfig($url, IOInterface $io = null) { // Return right away if the URL is malformed or custom (see issue #5173) if (false === filter_var($url, FILTER_VALIDATE_URL)) { return; } // Extract scheme and throw exception on known insecure protocols $scheme = parse_url($url, PHP_URL_SCHEME); if (in_array($scheme, array('http', 'git', 'ftp', 'svn'))) { if ($this->get('secure-http')) { throw new TransportException("Your configuration does not allow connections to $url. See https://getcomposer.org/doc/06-config.md#secure-http for details."); } if ($io) { $host = parse_url($url, PHP_URL_HOST); if (!isset($this->warnedHosts[$host])) { $io->writeError("Warning: Accessing $host over $scheme which is an insecure protocol."); } $this->warnedHosts[$host] = true; } } } /** * Used by long-running custom scripts in composer.json * * "scripts": { * "watch": [ * "Composer\\Config::disableProcessTimeout", * "vendor/bin/long-running-script --watch" * ] * } */ public static function disableProcessTimeout() { // Override global timeout set earlier by environment or config ProcessExecutor::setTimeout(0); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Autoload\AutoloadGenerator; use Composer\Console\GithubActionError; use Composer\DependencyResolver\DefaultPolicy; use Composer\DependencyResolver\LocalRepoTransaction; use Composer\DependencyResolver\LockTransaction; use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UninstallOperation; use Composer\DependencyResolver\Pool; use Composer\DependencyResolver\Request; use Composer\DependencyResolver\Solver; use Composer\DependencyResolver\SolverProblemsException; use Composer\DependencyResolver\PolicyInterface; use Composer\Downloader\DownloadManager; use Composer\EventDispatcher\EventDispatcher; use Composer\Installer\InstallationManager; use Composer\Installer\InstallerEvents; use Composer\Installer\SuggestedPackagesReporter; use Composer\IO\IOInterface; use Composer\Package\AliasPackage; use Composer\Package\RootAliasPackage; use Composer\Package\BasePackage; use Composer\Package\CompletePackage; use Composer\Package\CompletePackageInterface; use Composer\Package\Link; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Dumper\ArrayDumper; use Composer\Package\Version\VersionParser; use Composer\Package\Package; use Composer\Repository\ArrayRepository; use Composer\Repository\RepositorySet; use Composer\Repository\CompositeRepository; use Composer\Semver\Constraint\Constraint; use Composer\Package\Locker; use Composer\Package\RootPackageInterface; use Composer\Repository\InstalledArrayRepository; use Composer\Repository\InstalledRepositoryInterface; use Composer\Repository\InstalledRepository; use Composer\Repository\FilterRepository; use Composer\Repository\RootPackageRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\RepositoryInterface; use Composer\Repository\RepositoryManager; use Composer\Repository\LockArrayRepository; use Composer\Script\ScriptEvents; /** * @author Jordi Boggiano * @author Beau Simensen * @author Konstantin Kudryashov * @author Nils Adermann */ class Installer { /** * @var IOInterface */ protected $io; /** * @var Config */ protected $config; /** * @var RootPackageInterface */ protected $package; // TODO can we get rid of the below and just use the package itself? /** * @var RootPackageInterface */ protected $fixedRootPackage; /** * @var DownloadManager */ protected $downloadManager; /** * @var RepositoryManager */ protected $repositoryManager; /** * @var Locker */ protected $locker; /** * @var InstallationManager */ protected $installationManager; /** * @var EventDispatcher */ protected $eventDispatcher; /** * @var AutoloadGenerator */ protected $autoloadGenerator; protected $preferSource = false; protected $preferDist = false; protected $optimizeAutoloader = false; protected $classMapAuthoritative = false; protected $apcuAutoloader = false; protected $apcuAutoloaderPrefix; protected $devMode = false; protected $dryRun = false; protected $verbose = false; protected $update = false; protected $install = true; protected $dumpAutoloader = true; protected $runScripts = true; protected $ignorePlatformReqs = false; protected $preferStable = false; protected $preferLowest = false; protected $writeLock; protected $executeOperations = true; /** * Array of package names/globs flagged for update * * @var array|null */ protected $updateMirrors = false; protected $updateAllowList; protected $updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; /** * @var SuggestedPackagesReporter */ protected $suggestedPackagesReporter; /** * @var RepositoryInterface */ protected $additionalFixedRepository; /** * Constructor * * @param IOInterface $io * @param Config $config * @param RootPackageInterface $package * @param DownloadManager $downloadManager * @param RepositoryManager $repositoryManager * @param Locker $locker * @param InstallationManager $installationManager * @param EventDispatcher $eventDispatcher * @param AutoloadGenerator $autoloadGenerator */ public function __construct(IOInterface $io, Config $config, RootPackageInterface $package, DownloadManager $downloadManager, RepositoryManager $repositoryManager, Locker $locker, InstallationManager $installationManager, EventDispatcher $eventDispatcher, AutoloadGenerator $autoloadGenerator) { $this->io = $io; $this->config = $config; $this->package = $package; $this->downloadManager = $downloadManager; $this->repositoryManager = $repositoryManager; $this->locker = $locker; $this->installationManager = $installationManager; $this->eventDispatcher = $eventDispatcher; $this->autoloadGenerator = $autoloadGenerator; $this->writeLock = $config->get('lock'); } /** * Run installation (or update) * * @throws \Exception * @return int 0 on success or a positive error code on failure */ public function run() { // Disable GC to save CPU cycles, as the dependency solver can create hundreds of thousands // of PHP objects, the GC can spend quite some time walking the tree of references looking // for stuff to collect while there is nothing to collect. This slows things down dramatically // and turning it off results in much better performance. Do not try this at home however. gc_collect_cycles(); gc_disable(); if ($this->updateAllowList && $this->updateMirrors) { throw new \RuntimeException("The installer options updateMirrors and updateAllowList are mutually exclusive."); } $isFreshInstall = $this->repositoryManager->getLocalRepository()->isFresh(); // Force update if there is no lock file present if (!$this->update && !$this->locker->isLocked()) { $this->io->writeError('No lock file found. Updating dependencies instead of installing from lock file. Use composer update over composer install if you do not have a lock file.'); $this->update = true; } if ($this->dryRun) { $this->verbose = true; $this->runScripts = false; $this->executeOperations = false; $this->writeLock = false; $this->dumpAutoloader = false; $this->mockLocalRepositories($this->repositoryManager); } if ($this->update && !$this->install) { $this->dumpAutoloader = false; } if ($this->runScripts) { $_SERVER['COMPOSER_DEV_MODE'] = $this->devMode ? '1' : '0'; putenv('COMPOSER_DEV_MODE='.$_SERVER['COMPOSER_DEV_MODE']); // dispatch pre event // should we treat this more strictly as running an update and then running an install, triggering events multiple times? $eventName = $this->update ? ScriptEvents::PRE_UPDATE_CMD : ScriptEvents::PRE_INSTALL_CMD; $this->eventDispatcher->dispatchScript($eventName, $this->devMode); } $this->downloadManager->setPreferSource($this->preferSource); $this->downloadManager->setPreferDist($this->preferDist); $localRepo = $this->repositoryManager->getLocalRepository(); if (!$this->suggestedPackagesReporter) { $this->suggestedPackagesReporter = new SuggestedPackagesReporter($this->io); } try { if ($this->update) { $res = $this->doUpdate($localRepo, $this->install); } else { $res = $this->doInstall($localRepo); } if ($res !== 0) { return $res; } } catch (\Exception $e) { if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { $this->installationManager->notifyInstalls($this->io); } throw $e; } if ($this->executeOperations && $this->install && $this->config->get('notify-on-install')) { $this->installationManager->notifyInstalls($this->io); } if ($this->update) { $installedRepo = new InstalledRepository(array( $this->locker->getLockedRepository($this->devMode), $this->createPlatformRepo(false), new RootPackageRepository(clone $this->package), )); if ($isFreshInstall) { $this->suggestedPackagesReporter->addSuggestionsFromPackage($this->package); } $this->suggestedPackagesReporter->outputMinimalistic($installedRepo); } // Find abandoned packages and warn user $lockedRepository = $this->locker->getLockedRepository(true); foreach ($lockedRepository->getPackages() as $package) { if (!$package instanceof CompletePackage || !$package->isAbandoned()) { continue; } $replacement = is_string($package->getReplacementPackage()) ? 'Use ' . $package->getReplacementPackage() . ' instead' : 'No replacement was suggested'; $this->io->writeError( sprintf( "Package %s is abandoned, you should avoid using it. %s.", $package->getPrettyName(), $replacement ) ); } if ($this->dumpAutoloader) { // write autoloader if ($this->optimizeAutoloader) { $this->io->writeError('Generating optimized autoload files'); } else { $this->io->writeError('Generating autoload files'); } $this->autoloadGenerator->setDevMode($this->devMode); $this->autoloadGenerator->setClassMapAuthoritative($this->classMapAuthoritative); $this->autoloadGenerator->setApcu($this->apcuAutoloader, $this->apcuAutoloaderPrefix); $this->autoloadGenerator->setRunScripts($this->runScripts); $this->autoloadGenerator->setIgnorePlatformRequirements($this->ignorePlatformReqs); $this->autoloadGenerator->dump($this->config, $localRepo, $this->package, $this->installationManager, 'composer', $this->optimizeAutoloader); } if ($this->install && $this->executeOperations) { // force binaries re-generation in case they are missing foreach ($localRepo->getPackages() as $package) { $this->installationManager->ensureBinariesPresence($package); } } $fundingCount = 0; foreach ($localRepo->getPackages() as $package) { if ($package instanceof CompletePackageInterface && !$package instanceof AliasPackage && $package->getFunding()) { $fundingCount++; } } if ($fundingCount) { $this->io->writeError(array( sprintf( "%d package%s you are using %s looking for funding.", $fundingCount, 1 === $fundingCount ? '' : 's', 1 === $fundingCount ? 'is' : 'are' ), 'Use the `composer fund` command to find out more!', )); } if ($this->runScripts) { // dispatch post event $eventName = $this->update ? ScriptEvents::POST_UPDATE_CMD : ScriptEvents::POST_INSTALL_CMD; $this->eventDispatcher->dispatchScript($eventName, $this->devMode); } // re-enable GC except on HHVM which triggers a warning here if (!defined('HHVM_VERSION')) { gc_enable(); } return 0; } protected function doUpdate(InstalledRepositoryInterface $localRepo, $doInstall) { $platformRepo = $this->createPlatformRepo(true); $aliases = $this->getRootAliases(true); $lockedRepository = null; try { if ($this->locker->isLocked()) { $lockedRepository = $this->locker->getLockedRepository(true); } } catch (\Seld\JsonLint\ParsingException $e) { if ($this->updateAllowList || $this->updateMirrors) { // in case we are doing a partial update or updating mirrors, the lock file is needed so we error throw $e; } // otherwise, ignoring parse errors as the lock file will be regenerated from scratch when // doing a full update } if (($this->updateAllowList || $this->updateMirrors) && !$lockedRepository) { $this->io->writeError('Cannot update ' . ($this->updateMirrors ? 'lock file information' : 'only a partial set of packages') . ' without a lock file present. Run `composer update` to generate a lock file.', true, IOInterface::QUIET); return 1; } $this->io->writeError('Loading composer repositories with package information'); // creating repository set $policy = $this->createPolicy(true); $repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); $repositories = $this->repositoryManager->getRepositories(); foreach ($repositories as $repository) { $repositorySet->addRepository($repository); } if ($lockedRepository) { $repositorySet->addRepository($lockedRepository); } $request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); $this->requirePackagesForUpdate($request, $lockedRepository, true); // pass the allow list into the request, so the pool builder can apply it if ($this->updateAllowList) { $request->setUpdateAllowList($this->updateAllowList, $this->updateAllowTransitiveDependencies); } $pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher); $this->io->writeError('Updating dependencies'); // solve dependencies $solver = new Solver($policy, $pool, $this->io); try { $lockTransaction = $solver->solve($request, $this->ignorePlatformReqs); $ruleSetSize = $solver->getRuleSetSize(); $solver = null; } catch (SolverProblemsException $e) { $err = 'Your requirements could not be resolved to an installable set of packages.'; $prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); $this->io->writeError(''. $err .'', true, IOInterface::QUIET); $this->io->writeError($prettyProblem); if (!$this->devMode) { $this->io->writeError('Running update with --no-dev does not mean require-dev is ignored, it just means the packages will not be installed. If dev requirements are blocking the update you have to resolve those problems.', true, IOInterface::QUIET); } $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); return max(1, $e->getCode()); } $this->io->writeError("Analyzed ".count($pool)." packages to resolve dependencies", true, IOInterface::VERBOSE); $this->io->writeError("Analyzed ".$ruleSetSize." rules to resolve dependencies", true, IOInterface::VERBOSE); if (!$lockTransaction->getOperations()) { $this->io->writeError('Nothing to modify in lock file'); } $exitCode = $this->extractDevPackages($lockTransaction, $platformRepo, $aliases, $policy, $lockedRepository); if ($exitCode !== 0) { return $exitCode; } // write lock $platformReqs = $this->extractPlatformRequirements($this->package->getRequires()); $platformDevReqs = $this->extractPlatformRequirements($this->package->getDevRequires()); $installsUpdates = $uninstalls = array(); if ($lockTransaction->getOperations()) { $installNames = $updateNames = $uninstallNames = array(); foreach ($lockTransaction->getOperations() as $operation) { if ($operation instanceof InstallOperation) { $installsUpdates[] = $operation; $installNames[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); } elseif ($operation instanceof UpdateOperation) { // when mirrors/metadata from a package gets updated we do not want to list it as an // update in the output as it is only an internal lock file metadata update if ($this->updateMirrors && $operation->getInitialPackage()->getName() == $operation->getTargetPackage()->getName() && $operation->getInitialPackage()->getVersion() == $operation->getTargetPackage()->getVersion() ) { continue; } $installsUpdates[] = $operation; $updateNames[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); } elseif ($operation instanceof UninstallOperation) { $uninstalls[] = $operation; $uninstallNames[] = $operation->getPackage()->getPrettyName(); } } $this->io->writeError(sprintf( "Lock file operations: %d install%s, %d update%s, %d removal%s", count($installNames), 1 === count($installNames) ? '' : 's', count($updateNames), 1 === count($updateNames) ? '' : 's', count($uninstalls), 1 === count($uninstalls) ? '' : 's' )); if ($installNames) { $this->io->writeError("Installs: ".implode(', ', $installNames), true, IOInterface::VERBOSE); } if ($updateNames) { $this->io->writeError("Updates: ".implode(', ', $updateNames), true, IOInterface::VERBOSE); } if ($uninstalls) { $this->io->writeError("Removals: ".implode(', ', $uninstallNames), true, IOInterface::VERBOSE); } } $sortByName = function ($a, $b) { if ($a instanceof UpdateOperation) { $a = $a->getTargetPackage()->getName(); } else { $a = $a->getPackage()->getName(); } if ($b instanceof UpdateOperation) { $b = $b->getTargetPackage()->getName(); } else { $b = $b->getPackage()->getName(); } return strcmp($a, $b); }; usort($uninstalls, $sortByName); usort($installsUpdates, $sortByName); foreach (array_merge($uninstalls, $installsUpdates) as $operation) { // collect suggestions if ($operation instanceof InstallOperation) { $this->suggestedPackagesReporter->addSuggestionsFromPackage($operation->getPackage()); } // output op, but alias op only in debug verbosity if (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug()) { $this->io->writeError(' - ' . $operation->show(true)); } } $updatedLock = $this->locker->setLockData( $lockTransaction->getNewLockPackages(false, $this->updateMirrors), $lockTransaction->getNewLockPackages(true, $this->updateMirrors), $platformReqs, $platformDevReqs, $lockTransaction->getAliases($aliases), $this->package->getMinimumStability(), $this->package->getStabilityFlags(), $this->preferStable || $this->package->getPreferStable(), $this->preferLowest, $this->config->get('platform') ?: array(), $this->writeLock && $this->executeOperations ); if ($updatedLock && $this->writeLock && $this->executeOperations) { $this->io->writeError('Writing lock file'); } // see https://github.com/composer/composer/issues/2764 if ($this->executeOperations && count($lockTransaction->getOperations()) > 0) { $vendorDir = $this->config->get('vendor-dir'); if (is_dir($vendorDir)) { // suppress errors as this fails sometimes on OSX for no apparent reason // see https://github.com/composer/composer/issues/4070#issuecomment-129792748 @touch($vendorDir); } } if ($doInstall) { // TODO ensure lock is used from locker as-is, since it may not have been written to disk in case of executeOperations == false return $this->doInstall($localRepo, true); } return 0; } /** * Run the solver a second time on top of the existing update result with only the current result set in the pool * and see what packages would get removed if we only had the non-dev packages in the solver request */ protected function extractDevPackages(LockTransaction $lockTransaction, PlatformRepository $platformRepo, array $aliases, PolicyInterface $policy, LockArrayRepository $lockedRepository = null) { if (!$this->package->getDevRequires()) { return 0; } $resultRepo = new ArrayRepository(array()); $loader = new ArrayLoader(null, true); $dumper = new ArrayDumper(); foreach ($lockTransaction->getNewLockPackages(false) as $pkg) { $resultRepo->addPackage($loader->load($dumper->dump($pkg))); } $repositorySet = $this->createRepositorySet(true, $platformRepo, $aliases); $repositorySet->addRepository($resultRepo); $request = $this->createRequest($this->fixedRootPackage, $platformRepo); $this->requirePackagesForUpdate($request, $lockedRepository, false); $pool = $repositorySet->createPoolWithAllPackages(); $solver = new Solver($policy, $pool, $this->io); try { $nonDevLockTransaction = $solver->solve($request, $this->ignorePlatformReqs); $solver = null; } catch (SolverProblemsException $e) { $err = 'Unable to find a compatible set of packages based on your non-dev requirements alone.'; $prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose(), true); $this->io->writeError(''. $err .'', true, IOInterface::QUIET); $this->io->writeError('Your requirements can be resolved successfully when require-dev packages are present.'); $this->io->writeError('You may need to move packages from require-dev or some of their dependencies to require.'); $this->io->writeError($prettyProblem); $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); return max(1, $e->getCode()); } $lockTransaction->setNonDevPackages($nonDevLockTransaction); return 0; } /** * @param InstalledRepositoryInterface $localRepo * @param bool $alreadySolved Whether the function is called as part of an update command or independently * @return int exit code */ protected function doInstall(InstalledRepositoryInterface $localRepo, $alreadySolved = false) { $this->io->writeError('Installing dependencies from lock file'.($this->devMode ? ' (including require-dev)' : '').''); $lockedRepository = $this->locker->getLockedRepository($this->devMode); // verify that the lock file works with the current platform repository // we can skip this part if we're doing this as the second step after an update if (!$alreadySolved) { $this->io->writeError('Verifying lock file contents can be installed on current platform.'); $platformRepo = $this->createPlatformRepo(false); // creating repository set $policy = $this->createPolicy(false); // use aliases from lock file only, so empty root aliases here $repositorySet = $this->createRepositorySet(false, $platformRepo, array(), $lockedRepository); $repositorySet->addRepository($lockedRepository); // creating requirements request $request = $this->createRequest($this->fixedRootPackage, $platformRepo, $lockedRepository); if (!$this->locker->isFresh()) { $this->io->writeError('Warning: The lock file is not up to date with the latest changes in composer.json. You may be getting outdated dependencies. It is recommended that you run `composer update` or `composer update `.', true, IOInterface::QUIET); } foreach ($lockedRepository->getPackages() as $package) { $request->fixLockedPackage($package); } foreach ($this->locker->getPlatformRequirements($this->devMode) as $link) { $request->requireName($link->getTarget(), $link->getConstraint()); } $pool = $repositorySet->createPool($request, $this->io, $this->eventDispatcher); // solve dependencies $solver = new Solver($policy, $pool, $this->io); try { $lockTransaction = $solver->solve($request, $this->ignorePlatformReqs); $solver = null; // installing the locked packages on this platform resulted in lock modifying operations, there wasn't a conflict, but the lock file as-is seems to not work on this system if (0 !== count($lockTransaction->getOperations())) { $this->io->writeError('Your lock file cannot be installed on this system without changes. Please run composer update.', true, IOInterface::QUIET); return 1; } } catch (SolverProblemsException $e) { $err = 'Your lock file does not contain a compatible set of packages. Please run composer update.'; $prettyProblem = $e->getPrettyString($repositorySet, $request, $pool, $this->io->isVerbose()); $this->io->writeError(''. $err .'', true, IOInterface::QUIET); $this->io->writeError($prettyProblem); $ghe = new GithubActionError($this->io); $ghe->emit($err."\n".$prettyProblem); return max(1, $e->getCode()); } } // TODO in how far do we need to do anything here to ensure dev packages being updated to latest in lock without version change are treated correctly? $localRepoTransaction = new LocalRepoTransaction($lockedRepository, $localRepo); $this->eventDispatcher->dispatchInstallerEvent(InstallerEvents::PRE_OPERATIONS_EXEC, $this->devMode, $this->executeOperations, $localRepoTransaction); if (!$localRepoTransaction->getOperations()) { $this->io->writeError('Nothing to install, update or remove'); } if ($localRepoTransaction->getOperations()) { $installs = $updates = $uninstalls = array(); foreach ($localRepoTransaction->getOperations() as $operation) { if ($operation instanceof InstallOperation) { $installs[] = $operation->getPackage()->getPrettyName().':'.$operation->getPackage()->getFullPrettyVersion(); } elseif ($operation instanceof UpdateOperation) { $updates[] = $operation->getTargetPackage()->getPrettyName().':'.$operation->getTargetPackage()->getFullPrettyVersion(); } elseif ($operation instanceof UninstallOperation) { $uninstalls[] = $operation->getPackage()->getPrettyName(); } } $this->io->writeError(sprintf( "Package operations: %d install%s, %d update%s, %d removal%s", count($installs), 1 === count($installs) ? '' : 's', count($updates), 1 === count($updates) ? '' : 's', count($uninstalls), 1 === count($uninstalls) ? '' : 's' )); if ($installs) { $this->io->writeError("Installs: ".implode(', ', $installs), true, IOInterface::VERBOSE); } if ($updates) { $this->io->writeError("Updates: ".implode(', ', $updates), true, IOInterface::VERBOSE); } if ($uninstalls) { $this->io->writeError("Removals: ".implode(', ', $uninstalls), true, IOInterface::VERBOSE); } } if ($this->executeOperations) { $localRepo->setDevPackageNames($this->locker->getDevPackageNames()); $this->installationManager->execute($localRepo, $localRepoTransaction->getOperations(), $this->devMode, $this->runScripts); } else { foreach ($localRepoTransaction->getOperations() as $operation) { // output op, but alias op only in debug verbosity if (false === strpos($operation->getOperationType(), 'Alias') || $this->io->isDebug()) { $this->io->writeError(' - ' . $operation->show(false)); } } } return 0; } protected function createPlatformRepo($forUpdate) { if ($forUpdate) { $platformOverrides = $this->config->get('platform') ?: array(); } else { $platformOverrides = $this->locker->getPlatformOverrides(); } return new PlatformRepository(array(), $platformOverrides); } /** * @param bool $forUpdate * @param PlatformRepository $platformRepo * @param array $rootAliases * @param RepositoryInterface|null $lockedRepository * @return RepositorySet */ private function createRepositorySet($forUpdate, PlatformRepository $platformRepo, array $rootAliases = array(), $lockedRepository = null) { if ($forUpdate) { $minimumStability = $this->package->getMinimumStability(); $stabilityFlags = $this->package->getStabilityFlags(); $requires = array_merge($this->package->getRequires(), $this->package->getDevRequires()); } else { $minimumStability = $this->locker->getMinimumStability(); $stabilityFlags = $this->locker->getStabilityFlags(); $requires = array(); foreach ($lockedRepository->getPackages() as $package) { $constraint = new Constraint('=', $package->getVersion()); $constraint->setPrettyString($package->getPrettyVersion()); $requires[$package->getName()] = $constraint; } } $rootRequires = array(); foreach ($requires as $req => $constraint) { // skip platform requirements from the root package to avoid filtering out existing platform packages if ((true === $this->ignorePlatformReqs || (is_array($this->ignorePlatformReqs) && in_array($req, $this->ignorePlatformReqs, true))) && PlatformRepository::isPlatformPackage($req)) { continue; } if ($constraint instanceof Link) { $rootRequires[$req] = $constraint->getConstraint(); } else { $rootRequires[$req] = $constraint; } } $this->fixedRootPackage = clone $this->package; $this->fixedRootPackage->setRequires(array()); $this->fixedRootPackage->setDevRequires(array()); $stabilityFlags[$this->package->getName()] = BasePackage::$stabilities[VersionParser::parseStability($this->package->getVersion())]; $repositorySet = new RepositorySet($minimumStability, $stabilityFlags, $rootAliases, $this->package->getReferences(), $rootRequires); $repositorySet->addRepository(new RootPackageRepository($this->fixedRootPackage)); $repositorySet->addRepository($platformRepo); if ($this->additionalFixedRepository) { // allow using installed repos if needed to avoid warnings about installed repositories being used in the RepositorySet // see https://github.com/composer/composer/pull/9574 $additionalFixedRepositories = $this->additionalFixedRepository; if ($additionalFixedRepositories instanceof CompositeRepository) { $additionalFixedRepositories = $additionalFixedRepositories->getRepositories(); } else { $additionalFixedRepositories = array($additionalFixedRepositories); } foreach ($additionalFixedRepositories as $additionalFixedRepository) { if ($additionalFixedRepository instanceof InstalledRepository || $additionalFixedRepository instanceof InstalledRepositoryInterface) { $repositorySet->allowInstalledRepositories(); break; } } $repositorySet->addRepository($this->additionalFixedRepository); } return $repositorySet; } /** * @return DefaultPolicy */ private function createPolicy($forUpdate) { $preferStable = null; $preferLowest = null; if (!$forUpdate) { $preferStable = $this->locker->getPreferStable(); $preferLowest = $this->locker->getPreferLowest(); } // old lock file without prefer stable/lowest will return null // so in this case we use the composer.json info if (null === $preferStable) { $preferStable = $this->preferStable || $this->package->getPreferStable(); } if (null === $preferLowest) { $preferLowest = $this->preferLowest; } return new DefaultPolicy($preferStable, $preferLowest); } /** * @return Request */ private function createRequest(RootPackageInterface $rootPackage, PlatformRepository $platformRepo, LockArrayRepository $lockedRepository = null) { $request = new Request($lockedRepository); $request->fixPackage($rootPackage); if ($rootPackage instanceof RootAliasPackage) { $request->fixPackage($rootPackage->getAliasOf()); } $fixedPackages = $platformRepo->getPackages(); if ($this->additionalFixedRepository) { $fixedPackages = array_merge($fixedPackages, $this->additionalFixedRepository->getPackages()); } // fix the version of all platform packages + additionally installed packages // to prevent the solver trying to remove or update those // TODO why not replaces? $provided = $rootPackage->getProvides(); foreach ($fixedPackages as $package) { // skip platform packages that are provided by the root package if ($package->getRepository() !== $platformRepo || !isset($provided[$package->getName()]) || !$provided[$package->getName()]->getConstraint()->matches(new Constraint('=', $package->getVersion())) ) { $request->fixPackage($package); } } return $request; } private function requirePackagesForUpdate(Request $request, LockArrayRepository $lockedRepository = null, $includeDevRequires = true) { // if we're updating mirrors we want to keep exactly the same versions installed which are in the lock file, but we want current remote metadata if ($this->updateMirrors) { $excludedPackages = array(); if (!$includeDevRequires) { $excludedPackages = array_flip($this->locker->getDevPackageNames()); } foreach ($lockedRepository->getPackages() as $lockedPackage) { // exclude alias packages here as for root aliases, both alias and aliased are // present in the lock repo and we only want to require the aliased version if (!$lockedPackage instanceof AliasPackage && !isset($excludedPackages[$lockedPackage->getName()])) { $request->requireName($lockedPackage->getName(), new Constraint('==', $lockedPackage->getVersion())); } } } else { $links = $this->package->getRequires(); if ($includeDevRequires) { $links = array_merge($links, $this->package->getDevRequires()); } foreach ($links as $link) { $request->requireName($link->getTarget(), $link->getConstraint()); } } } /** * @param bool $forUpdate * @return array */ private function getRootAliases($forUpdate) { if ($forUpdate) { $aliases = $this->package->getAliases(); } else { $aliases = $this->locker->getAliases(); } return $aliases; } /** * @param array $links * @return array */ private function extractPlatformRequirements(array $links) { $platformReqs = array(); foreach ($links as $link) { if (PlatformRepository::isPlatformPackage($link->getTarget())) { $platformReqs[$link->getTarget()] = $link->getPrettyConstraint(); } } return $platformReqs; } /** * Replace local repositories with InstalledArrayRepository instances * * This is to prevent any accidental modification of the existing repos on disk * * @param RepositoryManager $rm */ private function mockLocalRepositories(RepositoryManager $rm) { $packages = array(); foreach ($rm->getLocalRepository()->getPackages() as $package) { $packages[(string) $package] = clone $package; } foreach ($packages as $key => $package) { if ($package instanceof AliasPackage) { $alias = (string) $package->getAliasOf(); $packages[$key] = new AliasPackage($packages[$alias], $package->getVersion(), $package->getPrettyVersion()); } } $rm->setLocalRepository( new InstalledArrayRepository($packages) ); } /** * Create Installer * * @param IOInterface $io * @param Composer $composer * @return Installer */ public static function create(IOInterface $io, Composer $composer) { return new static( $io, $composer->getConfig(), $composer->getPackage(), $composer->getDownloadManager(), $composer->getRepositoryManager(), $composer->getLocker(), $composer->getInstallationManager(), $composer->getEventDispatcher(), $composer->getAutoloadGenerator() ); } /** * @param RepositoryInterface $additionalFixedRepository * @return $this */ public function setAdditionalFixedRepository(RepositoryInterface $additionalFixedRepository) { $this->additionalFixedRepository = $additionalFixedRepository; return $this; } /** * Whether to run in drymode or not * * @param bool $dryRun * @return Installer */ public function setDryRun($dryRun = true) { $this->dryRun = (bool) $dryRun; return $this; } /** * Checks, if this is a dry run (simulation mode). * * @return bool */ public function isDryRun() { return $this->dryRun; } /** * prefer source installation * * @param bool $preferSource * @return Installer */ public function setPreferSource($preferSource = true) { $this->preferSource = (bool) $preferSource; return $this; } /** * prefer dist installation * * @param bool $preferDist * @return Installer */ public function setPreferDist($preferDist = true) { $this->preferDist = (bool) $preferDist; return $this; } /** * Whether or not generated autoloader are optimized * * @param bool $optimizeAutoloader * @return Installer */ public function setOptimizeAutoloader($optimizeAutoloader) { $this->optimizeAutoloader = (bool) $optimizeAutoloader; if (!$this->optimizeAutoloader) { // Force classMapAuthoritative off when not optimizing the // autoloader $this->setClassMapAuthoritative(false); } return $this; } /** * Whether or not generated autoloader considers the class map * authoritative. * * @param bool $classMapAuthoritative * @return Installer */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = (bool) $classMapAuthoritative; if ($this->classMapAuthoritative) { // Force optimizeAutoloader when classmap is authoritative $this->setOptimizeAutoloader(true); } return $this; } /** * Whether or not generated autoloader considers APCu caching. * * @param bool $apcuAutoloader * @param string|null $apcuAutoloaderPrefix * @return Installer */ public function setApcuAutoloader($apcuAutoloader, $apcuAutoloaderPrefix = null) { $this->apcuAutoloader = $apcuAutoloader; $this->apcuAutoloaderPrefix = $apcuAutoloaderPrefix; return $this; } /** * update packages * * @param bool $update * @return Installer */ public function setUpdate($update) { $this->update = (bool) $update; return $this; } /** * Allows disabling the install step after an update * * @param bool $install * @return Installer */ public function setInstall($install) { $this->install = (bool) $install; return $this; } /** * enables dev packages * * @param bool $devMode * @return Installer */ public function setDevMode($devMode = true) { $this->devMode = (bool) $devMode; return $this; } /** * set whether to run autoloader or not * * This is disabled implicitly when enabling dryRun * * @param bool $dumpAutoloader * @return Installer */ public function setDumpAutoloader($dumpAutoloader = true) { $this->dumpAutoloader = (bool) $dumpAutoloader; return $this; } /** * set whether to run scripts or not * * This is disabled implicitly when enabling dryRun * * @param bool $runScripts * @return Installer */ public function setRunScripts($runScripts = true) { $this->runScripts = (bool) $runScripts; return $this; } /** * set the config instance * * @param Config $config * @return Installer */ public function setConfig(Config $config) { $this->config = $config; return $this; } /** * run in verbose mode * * @param bool $verbose * @return Installer */ public function setVerbose($verbose = true) { $this->verbose = (bool) $verbose; return $this; } /** * Checks, if running in verbose mode. * * @return bool */ public function isVerbose() { return $this->verbose; } /** * set ignore Platform Package requirements * * If this is set to true, all platform requirements are ignored * If this is set to false, no platform requirements are ignored * If this is set to string[], those packages will be ignored * * @param bool|array $ignorePlatformReqs * @return Installer */ public function setIgnorePlatformRequirements($ignorePlatformReqs) { if (is_array($ignorePlatformReqs)) { $this->ignorePlatformReqs = array_filter($ignorePlatformReqs, function ($req) { return PlatformRepository::isPlatformPackage($req); }); } else { $this->ignorePlatformReqs = (bool) $ignorePlatformReqs; } return $this; } /** * Update the lock file to the exact same versions and references but use current remote metadata like URLs and mirror info * * @param bool $updateMirrors * @return Installer */ public function setUpdateMirrors($updateMirrors) { $this->updateMirrors = $updateMirrors; return $this; } /** * restrict the update operation to a few packages, all other packages * that are already installed will be kept at their current version * * @param array $packages * @return Installer */ public function setUpdateAllowList(array $packages) { $this->updateAllowList = array_flip(array_map('strtolower', $packages)); return $this; } /** * Should dependencies of packages marked for update be updated? * * Depending on the chosen constant this will either only update the directly named packages, all transitive * dependencies which are not root requirement or all transitive dependencies including root requirements * * @param int $updateAllowTransitiveDependencies One of the UPDATE_ constants on the Request class * @return Installer */ public function setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) { if (!in_array($updateAllowTransitiveDependencies, array(Request::UPDATE_ONLY_LISTED, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE, Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS), true)) { throw new \RuntimeException("Invalid value for updateAllowTransitiveDependencies supplied"); } $this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; return $this; } /** * Should packages be preferred in a stable version when updating? * * @param bool $preferStable * @return Installer */ public function setPreferStable($preferStable = true) { $this->preferStable = (bool) $preferStable; return $this; } /** * Should packages be preferred in a lowest version when updating? * * @param bool $preferLowest * @return Installer */ public function setPreferLowest($preferLowest = true) { $this->preferLowest = (bool) $preferLowest; return $this; } /** * Should the lock file be updated when updating? * * This is disabled implicitly when enabling dryRun * * @param bool $writeLock * @return Installer */ public function setWriteLock($writeLock = true) { $this->writeLock = (bool) $writeLock; return $this; } /** * Should the operations (package install, update and removal) be executed on disk? * * This is disabled implicitly when enabling dryRun * * @param bool $executeOperations * @return Installer */ public function setExecuteOperations($executeOperations = true) { $this->executeOperations = (bool) $executeOperations; return $this; } /** * Disables plugins. * * Call this if you want to ensure that third-party code never gets * executed. The default is to automatically install, and execute * custom third-party installers. * * @return Installer */ public function disablePlugins() { $this->installationManager->disablePlugins(); return $this; } /** * @param SuggestedPackagesReporter $suggestedPackagesReporter * @return Installer */ public function setSuggestedPackagesReporter(SuggestedPackagesReporter $suggestedPackagesReporter) { $this->suggestedPackagesReporter = $suggestedPackagesReporter; return $this; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Platform; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Symfony\Component\Process\ExecutableFinder; class HhvmDetector { private static $hhvmVersion; private $executableFinder; private $processExecutor; public function __construct(ExecutableFinder $executableFinder = null, ProcessExecutor $processExecutor = null) { $this->executableFinder = $executableFinder; $this->processExecutor = $processExecutor; } public function reset() { self::$hhvmVersion = null; } public function getVersion() { if (null !== self::$hhvmVersion) { return self::$hhvmVersion ?: null; } self::$hhvmVersion = defined('HHVM_VERSION') ? HHVM_VERSION : null; if (self::$hhvmVersion === null && !Platform::isWindows()) { self::$hhvmVersion = false; $this->executableFinder = $this->executableFinder ?: new ExecutableFinder(); $hhvmPath = $this->executableFinder->find('hhvm'); if ($hhvmPath !== null) { $this->processExecutor = $this->processExecutor ?: new ProcessExecutor(); $exitCode = $this->processExecutor->execute( ProcessExecutor::escape($hhvmPath). ' --php -d hhvm.jit=0 -r "echo HHVM_VERSION;" 2>/dev/null', self::$hhvmVersion ); if ($exitCode !== 0) { self::$hhvmVersion = false; } } } return self::$hhvmVersion; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Platform; /** * @author Lars Strojny */ class Version { /** * @param string $opensslVersion * @param bool $isFips * @return string|null */ public static function parseOpenssl($opensslVersion, &$isFips) { $isFips = false; if (!preg_match('/^(?[0-9.]+)(?[a-z]{0,2})?(?(?:-?(?:dev|pre|alpha|beta|rc|fips)[\d]*)*)?$/', $opensslVersion, $matches)) { return null; } $isFips = strpos($matches['suffix'], 'fips') !== false; $suffix = strtr('-'.ltrim($matches['suffix'], '-'), array('-fips' => '', '-pre' => '-alpha')); $patch = self::convertAlphaVersionToIntVersion($matches['patch']); return rtrim($matches['version'].'.'.$patch.$suffix, '-'); } /** * @param string $libjpegVersion * @return string|null */ public static function parseLibjpeg($libjpegVersion) { if (!preg_match('/^(?\d+)(?[a-z]*)$/', $libjpegVersion, $matches)) { return null; } return $matches['major'].'.'.self::convertAlphaVersionToIntVersion($matches['minor']); } /** * @param string $zoneinfoVersion * @return string|null */ public static function parseZoneinfoVersion($zoneinfoVersion) { if (!preg_match('/^(?\d{4})(?[a-z]*)$/', $zoneinfoVersion, $matches)) { return null; } return $matches['year'].'.'.self::convertAlphaVersionToIntVersion($matches['revision']); } /** * "" => 0, "a" => 1, "zg" => 33 * * @param string $alpha * @return int */ private static function convertAlphaVersionToIntVersion($alpha) { return strlen($alpha) * (-ord('a') + 1) + array_sum(array_map('ord', str_split($alpha))); } /** * @param int $versionId * @return string */ public static function convertLibxpmVersionId($versionId) { return self::convertVersionId($versionId, 100); } /** * @param int $versionId * @return string */ public static function convertOpenldapVersionId($versionId) { return self::convertVersionId($versionId, 100); } private static function convertVersionId($versionId, $base) { return sprintf( '%d.%d.%d', $versionId / ($base * $base), ($versionId / $base) % $base, $versionId % $base ); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Platform; class Runtime { /** * @param string $constant * @param class-string $class * @return bool */ public function hasConstant($constant, $class = null) { return defined(ltrim($class.'::'.$constant, ':')); } /** * @param bool $constant * @param class-string $class * @return mixed */ public function getConstant($constant, $class = null) { return constant(ltrim($class.'::'.$constant, ':')); } /** * @param string $fn * @return bool */ public function hasFunction($fn) { return function_exists($fn); } /** * @param callable $callable * @param array $arguments * @return mixed */ public function invoke($callable, array $arguments = array()) { return call_user_func_array($callable, $arguments); } /** * @param class-string $class * @return bool */ public function hasClass($class) { return class_exists($class, false); } /** * @param class-string $class * @param array $arguments * @return object */ public function construct($class, array $arguments = array()) { if (empty($arguments)) { return new $class; } $refl = new \ReflectionClass($class); return $refl->newInstanceArgs($arguments); } /** @return string[] */ public function getExtensions() { return get_loaded_extensions(); } /** * @param string $extension * @return string */ public function getExtensionVersion($extension) { return phpversion($extension); } /** * @param string $extension * @return string */ public function getExtensionInfo($extension) { $reflector = new \ReflectionExtension($extension); ob_start(); $reflector->info(); return ob_get_clean(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Autoload\ClassLoader; use Composer\Semver\VersionParser; /** * This class is copied in every Composer installed project and available to all * * See also https://getcomposer.org/doc/07-runtime.md#installed-versions * * To require it's presence, you can require `composer-runtime-api ^2.0` */ class InstalledVersions { private static $installed; private static $canGetVendors; private static $installedByVendor = array(); /** * Returns a list of all package names which are present, either by being installed, replaced or provided * * @return string[] * @psalm-return list */ public static function getInstalledPackages() { $packages = array(); foreach (self::getInstalled() as $installed) { $packages[] = array_keys($installed['versions']); } if (1 === \count($packages)) { return $packages[0]; } return array_keys(array_flip(\call_user_func_array('array_merge', $packages))); } /** * Checks whether the given package is installed * * This also returns true if the package name is provided or replaced by another package * * @param string $packageName * @return bool */ public static function isInstalled($packageName) { foreach (self::getInstalled() as $installed) { if (isset($installed['versions'][$packageName])) { return true; } } return false; } /** * Checks whether the given package satisfies a version constraint * * e.g. If you want to know whether version 2.3+ of package foo/bar is installed, you would call: * * Composer\InstalledVersions::satisfies(new VersionParser, 'foo/bar', '^2.3') * * @param VersionParser $parser Install composer/semver to have access to this class and functionality * @param string $packageName * @param string|null $constraint A version constraint to check for, if you pass one you have to make sure composer/semver is required by your package * * @return bool */ public static function satisfies(VersionParser $parser, $packageName, $constraint) { $constraint = $parser->parseConstraints($constraint); $provided = $parser->parseConstraints(self::getVersionRanges($packageName)); return $provided->matches($constraint); } /** * Returns a version constraint representing all the range(s) which are installed for a given package * * It is easier to use this via isInstalled() with the $constraint argument if you need to check * whether a given version of a package is installed, and not just whether it exists * * @param string $packageName * @return string Version constraint usable with composer/semver */ public static function getVersionRanges($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } $ranges = array(); if (isset($installed['versions'][$packageName]['pretty_version'])) { $ranges[] = $installed['versions'][$packageName]['pretty_version']; } if (array_key_exists('aliases', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['aliases']); } if (array_key_exists('replaced', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['replaced']); } if (array_key_exists('provided', $installed['versions'][$packageName])) { $ranges = array_merge($ranges, $installed['versions'][$packageName]['provided']); } return implode(' || ', $ranges); } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present */ public static function getVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['version'])) { return null; } return $installed['versions'][$packageName]['version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as version, use satisfies or getVersionRanges if you need to know if a given version is present */ public static function getPrettyVersion($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['pretty_version'])) { return null; } return $installed['versions'][$packageName]['pretty_version']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @param string $packageName * @return string|null If the package is being replaced or provided but is not really installed, null will be returned as reference */ public static function getReference($packageName) { foreach (self::getInstalled() as $installed) { if (!isset($installed['versions'][$packageName])) { continue; } if (!isset($installed['versions'][$packageName]['reference'])) { return null; } return $installed['versions'][$packageName]['reference']; } throw new \OutOfBoundsException('Package "' . $packageName . '" is not installed'); } /** * @return array * @psalm-return array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]} */ public static function getRootPackage() { $installed = self::getInstalled(); return $installed[0]['root']; } /** * Returns the raw installed.php data for custom implementations * * @return array[] * @psalm-return array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: array} */ public static function getRawData() { return self::$installed; } /** * Lets you reload the static array from another file * * This is only useful for complex integrations in which a project needs to use * this class but then also needs to execute another project's autoloader in process, * and wants to ensure both projects have access to their version of installed.php. * * A typical case would be PHPUnit, where it would need to make sure it reads all * the data it needs from this class, then call reload() with * `require $CWD/vendor/composer/installed.php` (or similar) as input to make sure * the project in which it runs can then also use this class safely, without * interference between PHPUnit's dependencies and the project's dependencies. * * @param array[] $data A vendor/composer/installed.php data set * @return void * * @psalm-param array{root: array{name: string, version: string, reference: string, pretty_version: string, aliases: string[]}, versions: array} $data */ public static function reload($data) { self::$installed = $data; self::$installedByVendor = array(); } /** * @return array[] * @psalm-return list}> */ private static function getInstalled() { if (null === self::$canGetVendors) { self::$canGetVendors = method_exists('Composer\Autoload\ClassLoader', 'getRegisteredLoaders'); } $installed = array(); if (self::$canGetVendors) { foreach (ClassLoader::getRegisteredLoaders() as $vendorDir => $loader) { if (isset(self::$installedByVendor[$vendorDir])) { $installed[] = self::$installedByVendor[$vendorDir]; } elseif (is_file($vendorDir.'/composer/installed.php')) { $installed[] = self::$installedByVendor[$vendorDir] = require $vendorDir.'/composer/installed.php'; } } } $installed[] = self::$installed; return $installed; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\PackageInterface; /** * Composite repository. * * @author Beau Simensen */ class CompositeRepository implements RepositoryInterface { /** * List of repositories * @var array */ private $repositories; /** * Constructor * @param array $repositories */ public function __construct(array $repositories) { $this->repositories = array(); foreach ($repositories as $repo) { $this->addRepository($repo); } } public function getRepoName() { return 'composite repo ('.implode(', ', array_map(function ($repo) { return $repo->getRepoName(); }, $this->repositories)).')'; } /** * Returns all the wrapped repositories * * @return array */ public function getRepositories() { return $this->repositories; } /** * {@inheritdoc} */ public function hasPackage(PackageInterface $package) { foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ if ($repository->hasPackage($package)) { return true; } } return false; } /** * {@inheritdoc} */ public function findPackage($name, $constraint) { foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $package = $repository->findPackage($name, $constraint); if (null !== $package) { return $package; } } return null; } /** * {@inheritdoc} */ public function findPackages($name, $constraint = null) { $packages = array(); foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $packages[] = $repository->findPackages($name, $constraint); } return $packages ? call_user_func_array('array_merge', $packages) : array(); } /** * {@inheritDoc} */ public function loadPackages(array $packageMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = array()) { $packages = array(); $namesFound = array(); foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $result = $repository->loadPackages($packageMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); $packages[] = $result['packages']; $namesFound[] = $result['namesFound']; } return array( 'packages' => $packages ? call_user_func_array('array_merge', $packages) : array(), 'namesFound' => $namesFound ? array_unique(call_user_func_array('array_merge', $namesFound)) : array(), ); } /** * {@inheritdoc} */ public function search($query, $mode = 0, $type = null) { $matches = array(); foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $matches[] = $repository->search($query, $mode, $type); } return $matches ? call_user_func_array('array_merge', $matches) : array(); } /** * {@inheritdoc} */ public function getPackages() { $packages = array(); foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $packages[] = $repository->getPackages(); } return $packages ? call_user_func_array('array_merge', $packages) : array(); } /** * {@inheritdoc} */ public function getProviders($packageName) { $results = array(); foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $results[] = $repository->getProviders($packageName); } return $results ? call_user_func_array('array_merge', $results) : array(); } /** * {@inheritdoc} */ public function removePackage(PackageInterface $package) { foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $repository->removePackage($package); } } /** * {@inheritdoc} */ public function count() { $total = 0; foreach ($this->repositories as $repository) { /* @var $repository RepositoryInterface */ $total += $repository->count(); } return $total; } /** * Add a repository. * @param RepositoryInterface $repository */ public function addRepository(RepositoryInterface $repository) { if ($repository instanceof self) { foreach ($repository->getRepositories() as $repo) { $this->addRepository($repo); } } else { $this->repositories[] = $repository; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Downloader\TransportException; use Composer\Repository\Vcs\VcsDriverInterface; use Composer\Package\Version\VersionParser; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ValidatingArrayLoader; use Composer\Package\Loader\InvalidPackageException; use Composer\Package\Loader\LoaderInterface; use Composer\EventDispatcher\EventDispatcher; use Composer\Util\ProcessExecutor; use Composer\Util\HttpDownloader; use Composer\Util\Url; use Composer\Semver\Constraint\Constraint; use Composer\IO\IOInterface; use Composer\Config; /** * @author Jordi Boggiano */ class VcsRepository extends ArrayRepository implements ConfigurableRepositoryInterface { protected $url; protected $packageName; protected $isVerbose; protected $isVeryVerbose; protected $io; protected $config; protected $versionParser; protected $type; protected $loader; protected $repoConfig; protected $httpDownloader; protected $processExecutor; protected $branchErrorOccurred = false; private $drivers; /** @var VcsDriverInterface */ private $driver; /** @var VersionCacheInterface */ private $versionCache; private $emptyReferences = array(); private $versionTransportExceptions = array(); public function __construct(array $repoConfig, IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $dispatcher = null, ProcessExecutor $process = null, array $drivers = null, VersionCacheInterface $versionCache = null) { parent::__construct(); $this->drivers = $drivers ?: array( 'github' => 'Composer\Repository\Vcs\GitHubDriver', 'gitlab' => 'Composer\Repository\Vcs\GitLabDriver', 'git-bitbucket' => 'Composer\Repository\Vcs\GitBitbucketDriver', 'git' => 'Composer\Repository\Vcs\GitDriver', 'hg-bitbucket' => 'Composer\Repository\Vcs\HgBitbucketDriver', 'hg' => 'Composer\Repository\Vcs\HgDriver', 'perforce' => 'Composer\Repository\Vcs\PerforceDriver', 'fossil' => 'Composer\Repository\Vcs\FossilDriver', // svn must be last because identifying a subversion server for sure is practically impossible 'svn' => 'Composer\Repository\Vcs\SvnDriver', ); $this->url = $repoConfig['url']; $this->io = $io; $this->type = isset($repoConfig['type']) ? $repoConfig['type'] : 'vcs'; $this->isVerbose = $io->isVerbose(); $this->isVeryVerbose = $io->isVeryVerbose(); $this->config = $config; $this->repoConfig = $repoConfig; $this->versionCache = $versionCache; $this->httpDownloader = $httpDownloader; $this->processExecutor = $process ?: new ProcessExecutor($io); } public function getRepoName() { $driverClass = get_class($this->getDriver()); $driverType = array_search($driverClass, $this->drivers); if (!$driverType) { $driverType = $driverClass; } return 'vcs repo ('.$driverType.' '.Url::sanitize($this->url).')'; } public function getRepoConfig() { return $this->repoConfig; } public function setLoader(LoaderInterface $loader) { $this->loader = $loader; } public function getDriver() { if ($this->driver) { return $this->driver; } if (isset($this->drivers[$this->type])) { $class = $this->drivers[$this->type]; $this->driver = new $class($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); $this->driver->initialize(); return $this->driver; } foreach ($this->drivers as $driver) { if ($driver::supports($this->io, $this->config, $this->url)) { $this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); $this->driver->initialize(); return $this->driver; } } foreach ($this->drivers as $driver) { if ($driver::supports($this->io, $this->config, $this->url, true)) { $this->driver = new $driver($this->repoConfig, $this->io, $this->config, $this->httpDownloader, $this->processExecutor); $this->driver->initialize(); return $this->driver; } } } public function hadInvalidBranches() { return $this->branchErrorOccurred; } public function getEmptyReferences() { return $this->emptyReferences; } public function getVersionTransportExceptions() { return $this->versionTransportExceptions; } protected function initialize() { parent::initialize(); $isVerbose = $this->isVerbose; $isVeryVerbose = $this->isVeryVerbose; $driver = $this->getDriver(); if (!$driver) { throw new \InvalidArgumentException('No driver found to handle VCS repository '.$this->url); } $this->versionParser = new VersionParser; if (!$this->loader) { $this->loader = new ArrayLoader($this->versionParser); } $hasRootIdentifierComposerJson = false; try { $hasRootIdentifierComposerJson = $driver->hasComposerFile($driver->getRootIdentifier()); if ($hasRootIdentifierComposerJson) { $data = $driver->getComposerInformation($driver->getRootIdentifier()); $this->packageName = !empty($data['name']) ? $data['name'] : null; } } catch (\Exception $e) { if ($isVeryVerbose) { $this->io->writeError('Skipped parsing '.$driver->getRootIdentifier().', '.$e->getMessage().''); } } foreach ($driver->getTags() as $tag => $identifier) { $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $tag . ')'; if ($isVeryVerbose) { $this->io->writeError($msg); } elseif ($isVerbose) { $this->io->overwriteError($msg, false); } // strip the release- prefix from tags if present $tag = str_replace('release-', '', $tag); $cachedPackage = $this->getCachedPackageVersion($tag, $identifier, $isVerbose, $isVeryVerbose); if ($cachedPackage) { $this->addPackage($cachedPackage); continue; } if ($cachedPackage === false) { $this->emptyReferences[] = $identifier; continue; } if (!$parsedTag = $this->validateTag($tag)) { if ($isVeryVerbose) { $this->io->writeError('Skipped tag '.$tag.', invalid tag name'); } continue; } try { if (!$data = $driver->getComposerInformation($identifier)) { if ($isVeryVerbose) { $this->io->writeError('Skipped tag '.$tag.', no composer file'); } $this->emptyReferences[] = $identifier; continue; } // manually versioned package if (isset($data['version'])) { $data['version_normalized'] = $this->versionParser->normalize($data['version']); } else { // auto-versioned package, read value from tag $data['version'] = $tag; $data['version_normalized'] = $parsedTag; } // make sure tag packages have no -dev flag $data['version'] = preg_replace('{[.-]?dev$}i', '', $data['version']); $data['version_normalized'] = preg_replace('{(^dev-|[.-]?dev$)}i', '', $data['version_normalized']); // make sure tag do not contain the default-branch marker unset($data['default-branch']); // broken package, version doesn't match tag if ($data['version_normalized'] !== $parsedTag) { if ($isVeryVerbose) { if (preg_match('{(^dev-|[.-]?dev$)}i', $parsedTag)) { $this->io->writeError('Skipped tag '.$tag.', invalid tag name, tags can not use dev prefixes or suffixes'); } else { $this->io->writeError('Skipped tag '.$tag.', tag ('.$parsedTag.') does not match version ('.$data['version_normalized'].') in composer.json'); } } continue; } $tagPackageName = $this->packageName ?: (isset($data['name']) ? $data['name'] : ''); if ($existingPackage = $this->findPackage($tagPackageName, $data['version_normalized'])) { if ($isVeryVerbose) { $this->io->writeError('Skipped tag '.$tag.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$data['version_normalized'].' internally'); } continue; } if ($isVeryVerbose) { $this->io->writeError('Importing tag '.$tag.' ('.$data['version_normalized'].')'); } $this->addPackage($this->loader->load($this->preProcess($driver, $data, $identifier))); } catch (\Exception $e) { if ($e instanceof TransportException) { $this->versionTransportExceptions['tags'][$tag] = $e; if ($e->getCode() === 404) { $this->emptyReferences[] = $identifier; } if ($e->getCode() === 401 || $e->getCode() === 403) { throw $e; } } if ($isVeryVerbose) { $this->io->writeError('Skipped tag '.$tag.', '.($e instanceof TransportException ? 'no composer file was found (' . $e->getCode() . ' HTTP status code)' : $e->getMessage()).''); } continue; } } if (!$isVeryVerbose) { $this->io->overwriteError('', false); } $branches = $driver->getBranches(); // make sure the root identifier branch gets loaded first if ($hasRootIdentifierComposerJson && isset($branches[$driver->getRootIdentifier()])) { $branches = array($driver->getRootIdentifier() => $branches[$driver->getRootIdentifier()]) + $branches; } foreach ($branches as $branch => $identifier) { $msg = 'Reading composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $branch . ')'; if ($isVeryVerbose) { $this->io->writeError($msg); } elseif ($isVerbose) { $this->io->overwriteError($msg, false); } if (!$parsedBranch = $this->validateBranch($branch)) { if ($isVeryVerbose) { $this->io->writeError('Skipped branch '.$branch.', invalid name'); } continue; } // make sure branch packages have a dev flag if (strpos($parsedBranch, 'dev-') === 0 || VersionParser::DEFAULT_BRANCH_ALIAS === $parsedBranch) { $version = 'dev-' . $branch; } else { $prefix = strpos($branch, 'v') === 0 ? 'v' : ''; $version = $prefix . preg_replace('{(\.9{7})+}', '.x', $parsedBranch); } $cachedPackage = $this->getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose, $driver->getRootIdentifier() === $branch); if ($cachedPackage) { $this->addPackage($cachedPackage); continue; } if ($cachedPackage === false) { $this->emptyReferences[] = $identifier; continue; } try { if (!$data = $driver->getComposerInformation($identifier)) { if ($isVeryVerbose) { $this->io->writeError('Skipped branch '.$branch.', no composer file'); } $this->emptyReferences[] = $identifier; continue; } // branches are always auto-versioned, read value from branch name $data['version'] = $version; $data['version_normalized'] = $parsedBranch; unset($data['default-branch']); if ($driver->getRootIdentifier() === $branch) { $data['default-branch'] = true; } if ($isVeryVerbose) { $this->io->writeError('Importing branch '.$branch.' ('.$data['version'].')'); } $packageData = $this->preProcess($driver, $data, $identifier); $package = $this->loader->load($packageData); if ($this->loader instanceof ValidatingArrayLoader && $this->loader->getWarnings()) { throw new InvalidPackageException($this->loader->getErrors(), $this->loader->getWarnings(), $packageData); } $this->addPackage($package); } catch (TransportException $e) { $this->versionTransportExceptions['branches'][$branch] = $e; if ($e->getCode() === 404) { $this->emptyReferences[] = $identifier; } if ($e->getCode() === 401 || $e->getCode() === 403) { throw $e; } if ($isVeryVerbose) { $this->io->writeError('Skipped branch '.$branch.', no composer file was found (' . $e->getCode() . ' HTTP status code)'); } continue; } catch (\Exception $e) { if (!$isVeryVerbose) { $this->io->writeError(''); } $this->branchErrorOccurred = true; $this->io->writeError('Skipped branch '.$branch.', '.$e->getMessage().''); $this->io->writeError(''); continue; } } $driver->cleanup(); if (!$isVeryVerbose) { $this->io->overwriteError('', false); } if (!$this->getPackages()) { throw new InvalidRepositoryException('No valid composer.json was found in any branch or tag of '.$this->url.', could not load a package from it.'); } } protected function preProcess(VcsDriverInterface $driver, array $data, $identifier) { // keep the name of the main identifier for all packages // this ensures that a package can be renamed in one place and that all old tags // will still be installable using that new name without requiring re-tagging $dataPackageName = isset($data['name']) ? $data['name'] : null; $data['name'] = $this->packageName ?: $dataPackageName; if (!isset($data['dist'])) { $data['dist'] = $driver->getDist($identifier); } if (!isset($data['source'])) { $data['source'] = $driver->getSource($identifier); } return $data; } private function validateBranch($branch) { try { $normalizedBranch = $this->versionParser->normalizeBranch($branch); // validate that the branch name has no weird characters conflicting with constraints $this->versionParser->parseConstraints($normalizedBranch); return $normalizedBranch; } catch (\Exception $e) { } return false; } private function validateTag($version) { try { return $this->versionParser->normalize($version); } catch (\Exception $e) { } return false; } private function getCachedPackageVersion($version, $identifier, $isVerbose, $isVeryVerbose, $isDefaultBranch = false) { if (!$this->versionCache) { return; } $cachedPackage = $this->versionCache->getVersionPackage($version, $identifier); if ($cachedPackage === false) { if ($isVeryVerbose) { $this->io->writeError('Skipped '.$version.', no composer file (cached from ref '.$identifier.')'); } return false; } if ($cachedPackage) { $msg = 'Found cached composer.json of ' . ($this->packageName ?: $this->url) . ' (' . $version . ')'; if ($isVeryVerbose) { $this->io->writeError($msg); } elseif ($isVerbose) { $this->io->overwriteError($msg, false); } unset($cachedPackage['default-branch']); if ($isDefaultBranch) { $cachedPackage['default-branch'] = true; } if ($existingPackage = $this->findPackage($cachedPackage['name'], new Constraint('=', $cachedPackage['version_normalized']))) { if ($isVeryVerbose) { $this->io->writeError('Skipped cached version '.$version.', it conflicts with an another tag ('.$existingPackage->getPrettyVersion().') as both resolve to '.$cachedPackage['version_normalized'].' internally'); } $cachedPackage = null; } } if ($cachedPackage) { return $this->loader->load($cachedPackage); } return null; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Installed array repository. * * This is used as an in-memory InstalledRepository mostly for testing purposes * * @author Jordi Boggiano */ class InstalledArrayRepository extends WritableArrayRepository implements InstalledRepositoryInterface { public function getRepoName() { return 'installed '.parent::getRepoName(); } /** * {@inheritDoc} */ public function isFresh() { // this is not a completely correct implementation but there is no way to // distinguish an empty repo and a newly created one given this is all in-memory return $this->count() === 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\DependencyResolver\Pool; use Composer\DependencyResolver\PoolBuilder; use Composer\DependencyResolver\Request; use Composer\EventDispatcher\EventDispatcher; use Composer\IO\IOInterface; use Composer\IO\NullIO; use Composer\Package\BasePackage; use Composer\Package\AliasPackage; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Package\Version\StabilityFilter; /** * @author Nils Adermann */ class RepositorySet { /** * Packages are returned even though their stability does not match the required stability */ const ALLOW_UNACCEPTABLE_STABILITIES = 1; /** * Packages will be looked up in all repositories, even after they have been found in a higher prio one */ const ALLOW_SHADOWED_REPOSITORIES = 2; /** * @var array[] * @psalm-var array> */ private $rootAliases; /** * @var string[] * @psalm-var array */ private $rootReferences; /** @var RepositoryInterface[] */ private $repositories = array(); /** * @var int[] array of stability => BasePackage::STABILITY_* value * @psalm-var array */ private $acceptableStabilities; /** * @var int[] array of package name => BasePackage::STABILITY_* value * @psalm-var array */ private $stabilityFlags; private $rootRequires; /** @var bool */ private $locked = false; /** @var bool */ private $allowInstalledRepositories = false; /** * In most cases if you are looking to use this class as a way to find packages from repositories * passing minimumStability is all you need to worry about. The rest is for advanced pool creation including * aliases, pinned references and other special cases. * * @param string $minimumStability * @param int[] $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @psalm-param array $stabilityFlags * @param array[] $rootAliases * @psalm-param list $rootAliases * @param string[] $rootReferences an array of package name => source reference * @psalm-param array $rootReferences */ public function __construct($minimumStability = 'stable', array $stabilityFlags = array(), array $rootAliases = array(), array $rootReferences = array(), array $rootRequires = array()) { $this->rootAliases = self::getRootAliasesPerPackage($rootAliases); $this->rootReferences = $rootReferences; $this->acceptableStabilities = array(); foreach (BasePackage::$stabilities as $stability => $value) { if ($value <= BasePackage::$stabilities[$minimumStability]) { $this->acceptableStabilities[$stability] = $value; } } $this->stabilityFlags = $stabilityFlags; $this->rootRequires = $rootRequires; foreach ($rootRequires as $name => $constraint) { if (PlatformRepository::isPlatformPackage($name)) { unset($this->rootRequires[$name]); } } } public function allowInstalledRepositories($allow = true) { $this->allowInstalledRepositories = $allow; } public function getRootRequires() { return $this->rootRequires; } /** * Adds a repository to this repository set * * The first repos added have a higher priority. As soon as a package is found in any * repository the search for that package ends, and following repos will not be consulted. * * @param RepositoryInterface $repo A package repository */ public function addRepository(RepositoryInterface $repo) { if ($this->locked) { throw new \RuntimeException("Pool has already been created from this repository set, it cannot be modified anymore."); } if ($repo instanceof CompositeRepository) { $repos = $repo->getRepositories(); } else { $repos = array($repo); } foreach ($repos as $repo) { $this->repositories[] = $repo; } } /** * Find packages providing or matching a name and optionally meeting a constraint in all repositories * * Returned in the order of repositories, matching priority * * @param string $name * @param ConstraintInterface|null $constraint * @param int $flags any of the ALLOW_* constants from this class to tweak what is returned * @return array */ public function findPackages($name, ConstraintInterface $constraint = null, $flags = 0) { $ignoreStability = ($flags & self::ALLOW_UNACCEPTABLE_STABILITIES) !== 0; $loadFromAllRepos = ($flags & self::ALLOW_SHADOWED_REPOSITORIES) !== 0; $packages = array(); if ($loadFromAllRepos) { foreach ($this->repositories as $repository) { $packages[] = $repository->findPackages($name, $constraint) ?: array(); } } else { foreach ($this->repositories as $repository) { $result = $repository->loadPackages(array($name => $constraint), $ignoreStability ? BasePackage::$stabilities : $this->acceptableStabilities, $ignoreStability ? array() : $this->stabilityFlags); $packages[] = $result['packages']; foreach ($result['namesFound'] as $nameFound) { // avoid loading the same package again from other repositories once it has been found if ($name === $nameFound) { break 2; } } } } $candidates = $packages ? call_user_func_array('array_merge', $packages) : array(); // when using loadPackages above (!$loadFromAllRepos) the repos already filter for stability so no need to do it again if ($ignoreStability || !$loadFromAllRepos) { return $candidates; } $result = array(); foreach ($candidates as $candidate) { if ($this->isPackageAcceptable($candidate->getNames(), $candidate->getStability())) { $result[] = $candidate; } } return $result; } public function getProviders($packageName) { $providers = array(); foreach ($this->repositories as $repository) { if ($repoProviders = $repository->getProviders($packageName)) { $providers = array_merge($providers, $repoProviders); } } return $providers; } public function isPackageAcceptable($names, $stability) { return StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $names, $stability); } /** * Create a pool for dependency resolution from the packages in this repository set. * * @return Pool */ public function createPool(Request $request, IOInterface $io, EventDispatcher $eventDispatcher = null) { $poolBuilder = new PoolBuilder($this->acceptableStabilities, $this->stabilityFlags, $this->rootAliases, $this->rootReferences, $io, $eventDispatcher); foreach ($this->repositories as $repo) { if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { throw new \LogicException('The pool can not accept packages from an installed repository'); } } $this->locked = true; return $poolBuilder->buildPool($this->repositories, $request); } /** * Create a pool for dependency resolution from the packages in this repository set. * * @return Pool */ public function createPoolWithAllPackages() { foreach ($this->repositories as $repo) { if (($repo instanceof InstalledRepositoryInterface || $repo instanceof InstalledRepository) && !$this->allowInstalledRepositories) { throw new \LogicException('The pool can not accept packages from an installed repository'); } } $this->locked = true; $packages = array(); foreach ($this->repositories as $repository) { foreach ($repository->getPackages() as $package) { $packages[] = $package; if (isset($this->rootAliases[$package->getName()][$package->getVersion()])) { $alias = $this->rootAliases[$package->getName()][$package->getVersion()]; while ($package instanceof AliasPackage) { $package = $package->getAliasOf(); } $aliasPackage = new AliasPackage($package, $alias['alias_normalized'], $alias['alias']); $aliasPackage->setRootPackageAlias(true); $packages[] = $aliasPackage; } } } return new Pool($packages); } // TODO unify this with above in some simpler version without "request"? public function createPoolForPackage($packageName, LockArrayRepository $lockedRepo = null) { return $this->createPoolForPackages(array($packageName), $lockedRepo); } public function createPoolForPackages($packageNames, LockArrayRepository $lockedRepo = null) { $request = new Request($lockedRepo); foreach ($packageNames as $packageName) { if (PlatformRepository::isPlatformPackage($packageName)) { throw new \LogicException('createPoolForPackage(s) can not be used for platform packages, as they are never loaded by the PoolBuilder which expects them to be fixed. Use createPoolWithAllPackages or pass in a proper request with the platform packages you need fixed in it.'); } $request->requireName($packageName); } return $this->createPool($request, new NullIO()); } private static function getRootAliasesPerPackage(array $aliases) { $normalizedAliases = array(); foreach ($aliases as $alias) { $normalizedAliases[$alias['package']][$alias['version']] = array( 'alias' => $alias['alias'], 'alias_normalized' => $alias['alias_normalized'], ); } return $normalizedAliases; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\LoaderInterface; use Composer\Util\Tar; use Composer\Util\Zip; /** * @author Serge Smertin */ class ArtifactRepository extends ArrayRepository implements ConfigurableRepositoryInterface { /** @var LoaderInterface */ protected $loader; protected $lookup; protected $repoConfig; private $io; public function __construct(array $repoConfig, IOInterface $io) { parent::__construct(); if (!extension_loaded('zip')) { throw new \RuntimeException('The artifact repository requires PHP\'s zip extension'); } $this->loader = new ArrayLoader(); $this->lookup = $repoConfig['url']; $this->io = $io; $this->repoConfig = $repoConfig; } public function getRepoName() { return 'artifact repo ('.$this->lookup.')'; } public function getRepoConfig() { return $this->repoConfig; } protected function initialize() { parent::initialize(); $this->scanDirectory($this->lookup); } private function scanDirectory($path) { $io = $this->io; $directory = new \RecursiveDirectoryIterator($path, \RecursiveDirectoryIterator::FOLLOW_SYMLINKS); $iterator = new \RecursiveIteratorIterator($directory); $regex = new \RegexIterator($iterator, '/^.+\.(zip|phar|tar|gz|tgz)$/i'); foreach ($regex as $file) { /* @var $file \SplFileInfo */ if (!$file->isFile()) { continue; } $package = $this->getComposerInformation($file); if (!$package) { $io->writeError("File {$file->getBasename()} doesn't seem to hold a package", true, IOInterface::VERBOSE); continue; } $template = 'Found package %s (%s) in file %s'; $io->writeError(sprintf($template, $package->getName(), $package->getPrettyVersion(), $file->getBasename()), true, IOInterface::VERBOSE); $this->addPackage($package); } } private function getComposerInformation(\SplFileInfo $file) { $json = null; $fileType = null; $fileExtension = pathinfo($file->getPathname(), PATHINFO_EXTENSION); if (in_array($fileExtension, array('gz', 'tar', 'tgz'), true)) { $fileType = 'tar'; } elseif ($fileExtension === 'zip') { $fileType = 'zip'; } else { throw new \RuntimeException('Files with "'.$fileExtension.'" extensions aren\'t supported. Only ZIP and TAR/TAR.GZ/TGZ archives are supported.'); } try { if ($fileType === 'tar') { $json = Tar::getComposerJson($file->getPathname()); } else { $json = Zip::getComposerJson($file->getPathname()); } } catch (\Exception $exception) { $this->io->write('Failed loading package '.$file->getPathname().': '.$exception->getMessage(), false, IOInterface::VERBOSE); } if (null === $json) { return false; } $package = JsonFile::parseJson($json, $file->getPathname().'#composer.json'); $package['dist'] = array( 'type' => $fileType, 'url' => strtr($file->getPathname(), '\\', '/'), 'shasum' => sha1_file($file->getRealPath()), ); try { $package = $this->loader->load($package); } catch (\UnexpectedValueException $e) { throw new \UnexpectedValueException('Failed loading package in '.$file.': '.$e->getMessage(), 0, $e); } return $package; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Installable repository interface. * * Just used to tag installed repositories so the base classes can act differently on Alias packages * * @author Jordi Boggiano */ interface InstalledRepositoryInterface extends WritableRepositoryInterface { /** * @return bool true if packages were never installed in this repository */ public function isFresh(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Thrown when a security problem, like a broken or missing signature * * @author Eric Daspet */ class RepositorySecurityException extends \Exception { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\PackageInterface; use Composer\Package\BasePackage; /** * Filters which packages are seen as canonical on this repo by loadPackages * * @author Jordi Boggiano */ class FilterRepository implements RepositoryInterface { private $only = array(); private $exclude = array(); private $canonical = true; private $repo; public function __construct(RepositoryInterface $repo, array $options) { if (isset($options['only'])) { if (!is_array($options['only'])) { throw new \InvalidArgumentException('"only" key for repository '.$repo->getRepoName().' should be an array'); } $this->only = '{^'.implode('|', array_map(function ($val) { return BasePackage::packageNameToRegexp($val, '%s'); }, $options['only'])) .'$}iD'; } if (isset($options['exclude'])) { if (!is_array($options['exclude'])) { throw new \InvalidArgumentException('"exclude" key for repository '.$repo->getRepoName().' should be an array'); } $this->exclude = '{^'.implode('|', array_map(function ($val) { return BasePackage::packageNameToRegexp($val, '%s'); }, $options['exclude'])) .'$}iD'; } if ($this->exclude && $this->only) { throw new \InvalidArgumentException('Only one of "only" and "exclude" can be specified for repository '.$repo->getRepoName()); } if (isset($options['canonical'])) { if (!is_bool($options['canonical'])) { throw new \InvalidArgumentException('"canonical" key for repository '.$repo->getRepoName().' should be a boolean'); } $this->canonical = $options['canonical']; } $this->repo = $repo; } public function getRepoName() { return $this->repo->getRepoName(); } /** * Returns the wrapped repositories * * @return RepositoryInterface */ public function getRepository() { return $this->repo; } /** * {@inheritdoc} */ public function hasPackage(PackageInterface $package) { return $this->repo->hasPackage($package); } /** * {@inheritdoc} */ public function findPackage($name, $constraint) { if (!$this->isAllowed($name)) { return null; } return $this->repo->findPackage($name, $constraint); } /** * {@inheritdoc} */ public function findPackages($name, $constraint = null) { if (!$this->isAllowed($name)) { return array(); } return $this->repo->findPackages($name, $constraint); } /** * {@inheritDoc} */ public function loadPackages(array $packageMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = array()) { foreach ($packageMap as $name => $constraint) { if (!$this->isAllowed($name)) { unset($packageMap[$name]); } } if (!$packageMap) { return array('namesFound' => array(), 'packages' => array()); } $result = $this->repo->loadPackages($packageMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); if (!$this->canonical) { $result['namesFound'] = array(); } return $result; } /** * {@inheritdoc} */ public function search($query, $mode = 0, $type = null) { $result = array(); foreach ($this->repo->search($query, $mode, $type) as $package) { if ($this->isAllowed($package['name'])) { $result[] = $package; } } return $result; } /** * {@inheritdoc} */ public function getPackages() { $result = array(); foreach ($this->repo->getPackages() as $package) { if ($this->isAllowed($package->getName())) { $result[] = $package; } } return $result; } /** * {@inheritdoc} */ public function getProviders($packageName) { $result = array(); foreach ($this->repo->getProviders($packageName) as $provider) { if ($this->isAllowed($provider['name'])) { $result[] = $provider; } } return $result; } /** * {@inheritdoc} */ public function removePackage(PackageInterface $package) { return $this->repo->removePackage($package); } /** * {@inheritdoc} */ public function count() { if ($this->repo->count() > 0) { return count($this->getPackages()); } return 0; } private function isAllowed($name) { if (!$this->only && !$this->exclude) { return true; } if ($this->only) { return (bool) preg_match($this->only, $name); } return !preg_match($this->exclude, $name); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\PackageInterface; use Composer\Package\BasePackage; use Composer\Semver\Constraint\ConstraintInterface; /** * Repository interface. * * @author Nils Adermann * @author Konstantin Kudryashov * @author Jordi Boggiano */ interface RepositoryInterface extends \Countable { const SEARCH_FULLTEXT = 0; const SEARCH_NAME = 1; /** * Checks if specified package registered (installed). * * @param PackageInterface $package package instance * * @return bool */ public function hasPackage(PackageInterface $package); /** * Searches for the first match of a package by name and version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return PackageInterface|null */ public function findPackage($name, $constraint); /** * Searches for all packages matching a name and optionally a version. * * @param string $name package name * @param string|ConstraintInterface $constraint package version or version constraint to match against * * @return PackageInterface[] */ public function findPackages($name, $constraint = null); /** * Returns list of registered packages. * * @return PackageInterface[] */ public function getPackages(); /** * Returns list of registered packages with the supplied name * * - The packages returned are the packages found which match the constraints, acceptable stability and stability flags provided * - The namesFound returned are names which should be considered as canonically found in this repository, that should not be looked up in any further lower priority repositories * * @param ConstraintInterface[] $packageNameMap package names pointing to constraints * @param int[] $acceptableStabilities array of stability => BasePackage::STABILITY_* value * @psalm-param array $acceptableStabilities * @param int[] $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @psalm-param array $stabilityFlags * @param array[] $alreadyLoaded an array of package name => package version => package * @psalm-param array> $alreadyLoaded * * @return array [namesFound => string[], packages => PackageInterface[]] * @psalm-return array{namesFound: string[], packages: PackageInterface[]} */ public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = array()); /** * Searches the repository for packages containing the query * * @param string $query search query * @param int $mode a set of SEARCH_* constants to search on, implementations should do a best effort only * @param string $type The type of package to search for. Defaults to all types of packages * * @return array[] an array of array('name' => '...', 'description' => '...') * @psalm-return list */ public function search($query, $mode = 0, $type = null); /** * Returns a list of packages providing a given package name * * Packages which have the same name as $packageName should not be returned, only those that have a "provide" on it. * * @param string $packageName package name which must be provided * * @return array[] an array with the provider name as key and value of array('name' => '...', 'description' => '...', 'type' => '...') * @psalm-return array */ public function getProviders($packageName); /** * Returns a name representing this repository to the user * * This is best effort and definitely can not always be very precise * * @return string */ public function getRepoName(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Config; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionParser; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Composer\Util\Filesystem; use Composer\Util\Url; use Composer\Util\Git as GitUtil; /** * This repository allows installing local packages that are not necessarily under their own VCS. * * The local packages will be symlinked when possible, else they will be copied. * * @code * "require": { * "/": "*" * }, * "repositories": [ * { * "type": "path", * "url": "../../relative/path/to/package/" * }, * { * "type": "path", * "url": "/absolute/path/to/package/" * }, * { * "type": "path", * "url": "/absolute/path/to/several/packages/*" * }, * { * "type": "path", * "url": "../../relative/path/to/package/", * "options": { * "symlink": false * } * }, * ] * @endcode * * @author Samuel Roze * @author Johann Reinke */ class PathRepository extends ArrayRepository implements ConfigurableRepositoryInterface { /** * @var ArrayLoader */ private $loader; /** * @var VersionGuesser */ private $versionGuesser; /** * @var string */ private $url; /** * @var array */ private $repoConfig; /** * @var ProcessExecutor */ private $process; /** * @var array */ private $options; /** * Initializes path repository. * * @param array $repoConfig * @param IOInterface $io * @param Config $config */ public function __construct(array $repoConfig, IOInterface $io, Config $config) { if (!isset($repoConfig['url'])) { throw new \RuntimeException('You must specify the `url` configuration for the path repository'); } $this->loader = new ArrayLoader(null, true); $this->url = Platform::expandPath($repoConfig['url']); $this->process = new ProcessExecutor($io); $this->versionGuesser = new VersionGuesser($config, $this->process, new VersionParser()); $this->repoConfig = $repoConfig; $this->options = isset($repoConfig['options']) ? $repoConfig['options'] : array(); if (!isset($this->options['relative'])) { $filesystem = new Filesystem(); $this->options['relative'] = !$filesystem->isAbsolutePath($this->url); } parent::__construct(); } public function getRepoName() { return 'path repo ('.Url::sanitize($this->repoConfig['url']).')'; } public function getRepoConfig() { return $this->repoConfig; } /** * Initializes path repository. * * This method will basically read the folder and add the found package. */ protected function initialize() { parent::initialize(); $urlMatches = $this->getUrlMatches(); if (empty($urlMatches)) { if (preg_match('{[*{}]}', $this->url)) { $url = $this->url; while (preg_match('{[*{}]}', $url)) { $url = dirname($url); } // the parent directory before any wildcard exists, so we assume it is correctly configured but simply empty if (is_dir($url)) { return; } } throw new \RuntimeException('The `url` supplied for the path (' . $this->url . ') repository does not exist'); } foreach ($urlMatches as $url) { $path = realpath($url) . DIRECTORY_SEPARATOR; $composerFilePath = $path.'composer.json'; if (!file_exists($composerFilePath)) { continue; } $json = file_get_contents($composerFilePath); $package = JsonFile::parseJson($json, $composerFilePath); $package['dist'] = array( 'type' => 'path', 'url' => $url, 'reference' => sha1($json . serialize($this->options)), ); $package['transport-options'] = $this->options; unset($package['transport-options']['versions']); // use the version provided as option if available if (isset($package['name'], $this->options['versions'][$package['name']])) { $package['version'] = $this->options['versions'][$package['name']]; } // carry over the root package version if this path repo is in the same git repository as root package if (!isset($package['version']) && ($rootVersion = getenv('COMPOSER_ROOT_VERSION'))) { if ( 0 === $this->process->execute('git rev-parse HEAD', $ref1, $path) && 0 === $this->process->execute('git rev-parse HEAD', $ref2) && $ref1 === $ref2 ) { $package['version'] = $rootVersion; } } $output = ''; if (is_dir($path . DIRECTORY_SEPARATOR . '.git') && 0 === $this->process->execute('git log -n1 --pretty=%H'.GitUtil::getNoShowSignatureFlag($this->process), $output, $path)) { $package['dist']['reference'] = trim($output); } if (!isset($package['version'])) { $versionData = $this->versionGuesser->guessVersion($package, $path); if (is_array($versionData) && $versionData['pretty_version']) { // if there is a feature branch detected, we add a second packages with the feature branch version if (!empty($versionData['feature_pretty_version'])) { $package['version'] = $versionData['feature_pretty_version']; $this->addPackage($this->loader->load($package)); } $package['version'] = $versionData['pretty_version']; } else { $package['version'] = 'dev-master'; } } $package = $this->loader->load($package); $this->addPackage($package); } } /** * Get a list of all (possibly relative) path names matching given url (supports globbing). * * @return string[] */ private function getUrlMatches() { $flags = GLOB_MARK | GLOB_ONLYDIR; if (defined('GLOB_BRACE')) { $flags |= GLOB_BRACE; } elseif (strpos($this->url, '{') !== false || strpos($this->url, '}') !== false) { throw new \RuntimeException('The operating system does not support GLOB_BRACE which is required for the url '. $this->url); } // Ensure environment-specific path separators are normalized to URL separators return array_map(function ($val) { return rtrim(str_replace(DIRECTORY_SEPARATOR, '/', $val), '/'); }, glob($this->url, $flags)); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Builds list of package from PEAR channel. * * Packages read from channel are named as 'pear-{channelName}/{packageName}' * and has aliased as 'pear-{channelAlias}/{packageName}' * * @author Benjamin Eberlei * @author Jordi Boggiano * @deprecated * @private */ class PearRepository extends ArrayRepository { public function __construct() { throw new \RuntimeException('The PEAR repository has been removed from Composer 2.0'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Composer; use Composer\Package\CompletePackage; use Composer\Package\Link; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionParser; use Composer\Platform\HhvmDetector; use Composer\Platform\Runtime; use Composer\Platform\Version; use Composer\Plugin\PluginInterface; use Composer\Semver\Constraint\Constraint; use Composer\Util\Silencer; use Composer\XdebugHandler\XdebugHandler; /** * @author Jordi Boggiano */ class PlatformRepository extends ArrayRepository { const PLATFORM_PACKAGE_REGEX = '{^(?:php(?:-64bit|-ipv6|-zts|-debug)?|hhvm|(?:ext|lib)-[a-z0-9](?:[_.-]?[a-z0-9]+)*|composer-(?:plugin|runtime)-api)$}iD'; /** * @var VersionParser */ private $versionParser; /** * Defines overrides so that the platform can be mocked * * Should be an array of package name => version number mappings * * @var array */ private $overrides = array(); private $runtime; private $hhvmDetector; public function __construct(array $packages = array(), array $overrides = array(), Runtime $runtime = null, HhvmDetector $hhvmDetector = null) { $this->runtime = $runtime ?: new Runtime(); $this->hhvmDetector = $hhvmDetector ?: new HhvmDetector(); foreach ($overrides as $name => $version) { $this->overrides[strtolower($name)] = array('name' => $name, 'version' => $version); } parent::__construct($packages); } public function getRepoName() { return 'platform repo'; } protected function initialize() { parent::initialize(); $this->versionParser = new VersionParser(); // Add each of the override versions as options. // Later we might even replace the extensions instead. foreach ($this->overrides as $override) { // Check that it's a platform package. if (!self::isPlatformPackage($override['name'])) { throw new \InvalidArgumentException('Invalid platform package name in config.platform: '.$override['name']); } $this->addOverriddenPackage($override); } $prettyVersion = PluginInterface::PLUGIN_API_VERSION; $version = $this->versionParser->normalize($prettyVersion); $composerPluginApi = new CompletePackage('composer-plugin-api', $version, $prettyVersion); $composerPluginApi->setDescription('The Composer Plugin API'); $this->addPackage($composerPluginApi); $prettyVersion = Composer::RUNTIME_API_VERSION; $version = $this->versionParser->normalize($prettyVersion); $composerRuntimeApi = new CompletePackage('composer-runtime-api', $version, $prettyVersion); $composerRuntimeApi->setDescription('The Composer Runtime API'); $this->addPackage($composerRuntimeApi); try { $prettyVersion = $this->runtime->getConstant('PHP_VERSION'); $version = $this->versionParser->normalize($prettyVersion); } catch (\UnexpectedValueException $e) { $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', $this->runtime->getConstant('PHP_VERSION')); $version = $this->versionParser->normalize($prettyVersion); } $php = new CompletePackage('php', $version, $prettyVersion); $php->setDescription('The PHP interpreter'); $this->addPackage($php); if ($this->runtime->getConstant('PHP_DEBUG')) { $phpdebug = new CompletePackage('php-debug', $version, $prettyVersion); $phpdebug->setDescription('The PHP interpreter, with debugging symbols'); $this->addPackage($phpdebug); } if ($this->runtime->hasConstant('PHP_ZTS') && $this->runtime->getConstant('PHP_ZTS')) { $phpzts = new CompletePackage('php-zts', $version, $prettyVersion); $phpzts->setDescription('The PHP interpreter, with Zend Thread Safety'); $this->addPackage($phpzts); } if ($this->runtime->getConstant('PHP_INT_SIZE') === 8) { $php64 = new CompletePackage('php-64bit', $version, $prettyVersion); $php64->setDescription('The PHP interpreter, 64bit'); $this->addPackage($php64); } // The AF_INET6 constant is only defined if ext-sockets is available but // IPv6 support might still be available. if ($this->runtime->hasConstant('AF_INET6') || Silencer::call(array($this->runtime, 'invoke'), 'inet_pton', array('::')) !== false) { $phpIpv6 = new CompletePackage('php-ipv6', $version, $prettyVersion); $phpIpv6->setDescription('The PHP interpreter, with IPv6 support'); $this->addPackage($phpIpv6); } $loadedExtensions = $this->runtime->getExtensions(); // Extensions scanning foreach ($loadedExtensions as $name) { if (in_array($name, array('standard', 'Core'))) { continue; } $this->addExtension($name, $this->runtime->getExtensionVersion($name)); } // Check for Xdebug in a restarted process if (!in_array('xdebug', $loadedExtensions, true) && ($prettyVersion = XdebugHandler::getSkippedVersion())) { $this->addExtension('xdebug', $prettyVersion); } // Another quick loop, just for possible libraries // Doing it this way to know that functions or constants exist before // relying on them. foreach ($loadedExtensions as $name) { switch ($name) { case 'amqp': $info = $this->runtime->getExtensionInfo($name); // librabbitmq version => 0.9.0 if (preg_match('/^librabbitmq version => (?.+)$/im', $info, $librabbitmqMatches)) { $this->addLibrary($name.'-librabbitmq', $librabbitmqMatches['version'], 'AMQP librabbitmq version'); } // AMQP protocol version => 0-9-1 if (preg_match('/^AMQP protocol version => (?.+)$/im', $info, $protocolMatches)) { $this->addLibrary($name.'-protocol', str_replace('-', '.', $protocolMatches['version']), 'AMQP protocol version'); } break; case 'bz2': $info = $this->runtime->getExtensionInfo($name); // BZip2 Version => 1.0.6, 6-Sept-2010 if (preg_match('/^BZip2 Version => (?.*),/im', $info, $matches)) { $this->addLibrary($name, $matches['version']); } break; case 'curl': $curlVersion = $this->runtime->invoke('curl_version'); $this->addLibrary($name, $curlVersion['version']); $info = $this->runtime->getExtensionInfo($name); // SSL Version => OpenSSL/1.0.1t if (preg_match('{^SSL Version => (?[^/]+)/(?.+)$}im', $info, $sslMatches)) { $library = strtolower($sslMatches['library']); if ($library === 'openssl') { $parsedVersion = Version::parseOpenssl($sslMatches['version'], $isFips); $this->addLibrary($name.'-openssl'.($isFips ? '-fips' : ''), $parsedVersion, 'curl OpenSSL version ('.$parsedVersion.')', array(), $isFips ? array('curl-openssl') : array()); } else { $this->addLibrary($name.'-'.$library, $sslMatches['version'], 'curl '.$library.' version ('.$sslMatches['version'].')', array('curl-openssl')); } } // libSSH Version => libssh2/1.4.3 if (preg_match('{^libSSH Version => (?[^/]+)/(?.+?)(?:/.*)?$}im', $info, $sshMatches)) { $this->addLibrary($name.'-'.strtolower($sshMatches['library']), $sshMatches['version'], 'curl '.$sshMatches['library'].' version'); } // ZLib Version => 1.2.8 if (preg_match('{^ZLib Version => (?.+)$}im', $info, $zlibMatches)) { $this->addLibrary($name.'-zlib', $zlibMatches['version'], 'curl zlib version'); } break; case 'date': $info = $this->runtime->getExtensionInfo($name); // timelib version => 2018.03 if (preg_match('/^timelib version => (?.+)$/im', $info, $timelibMatches)) { $this->addLibrary($name.'-timelib', $timelibMatches['version'], 'date timelib version'); } // Timezone Database => internal if (preg_match('/^Timezone Database => (?internal|external)$/im', $info, $zoneinfoSourceMatches)) { $external = $zoneinfoSourceMatches['source'] === 'external'; if (preg_match('/^"Olson" Timezone Database Version => (?.+?)(\.system)?$/im', $info, $zoneinfoMatches)) { // If the timezonedb is provided by ext/timezonedb, register that version as a replacement if ($external && in_array('timezonedb', $loadedExtensions, true)) { $this->addLibrary('timezonedb-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date (replaced by timezonedb)', array($name.'-zoneinfo')); } else { $this->addLibrary($name.'-zoneinfo', $zoneinfoMatches['version'], 'zoneinfo ("Olson") database for date'); } } } break; case 'fileinfo': $info = $this->runtime->getExtensionInfo($name); // libmagic => 537 if (preg_match('/^libmagic => (?.+)$/im', $info, $magicMatches)) { $this->addLibrary($name.'-libmagic', $magicMatches['version'], 'fileinfo libmagic version'); } break; case 'gd': $this->addLibrary($name, $this->runtime->getConstant('GD_VERSION')); $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^libJPEG Version => (?.+?)(?: compatible)?$/im', $info, $libjpegMatches)) { $this->addLibrary($name.'-libjpeg', Version::parseLibjpeg($libjpegMatches['version']), 'libjpeg version for gd'); } if (preg_match('/^libPNG Version => (?.+)$/im', $info, $libpngMatches)) { $this->addLibrary($name.'-libpng', $libpngMatches['version'], 'libpng version for gd'); } if (preg_match('/^FreeType Version => (?.+)$/im', $info, $freetypeMatches)) { $this->addLibrary($name.'-freetype', $freetypeMatches['version'], 'freetype version for gd'); } if (preg_match('/^libXpm Version => (?\d+)$/im', $info, $libxpmMatches)) { $this->addLibrary($name.'-libxpm', Version::convertLibxpmVersionId($libxpmMatches['versionId']), 'libxpm version for gd'); } break; case 'gmp': $this->addLibrary($name, $this->runtime->getConstant('GMP_VERSION')); break; case 'iconv': $this->addLibrary($name, $this->runtime->getConstant('ICONV_VERSION')); break; case 'intl': $info = $this->runtime->getExtensionInfo($name); $description = 'The ICU unicode and globalization support library'; // Truthy check is for testing only so we can make the condition fail if ($this->runtime->hasConstant('INTL_ICU_VERSION')) { $this->addLibrary('icu', $this->runtime->getConstant('INTL_ICU_VERSION'), $description); } elseif (preg_match('/^ICU version => (?.+)$/im', $info, $matches)) { $this->addLibrary('icu', $matches['version'], $description); } // ICU TZData version => 2019c if (preg_match('/^ICU TZData version => (?.*)$/im', $info, $zoneinfoMatches)) { $this->addLibrary('icu-zoneinfo', Version::parseZoneinfoVersion($zoneinfoMatches['version']), 'zoneinfo ("Olson") database for icu'); } // Add a separate version for the CLDR library version if ($this->runtime->hasClass('ResourceBundle')) { $cldrVersion = $this->runtime->invoke(array('ResourceBundle', 'create'), array('root', 'ICUDATA', false))->get('Version'); $this->addLibrary('icu-cldr', $cldrVersion, 'ICU CLDR project version'); } if ($this->runtime->hasClass('IntlChar')) { $this->addLibrary('icu-unicode', implode('.', array_slice($this->runtime->invoke(array('IntlChar', 'getUnicodeVersion')), 0, 3)), 'ICU unicode version'); } break; case 'imagick': $imageMagickVersion = $this->runtime->construct('Imagick')->getVersion(); // 6.x: ImageMagick 6.2.9 08/24/06 Q16 http://www.imagemagick.org // 7.x: ImageMagick 7.0.8-34 Q16 x86_64 2019-03-23 https://imagemagick.org preg_match('/^ImageMagick (?[\d.]+)(?:-(?\d+))?/', $imageMagickVersion['versionString'], $matches); $version = $matches['version']; if (isset($matches['patch'])) { $version .= '.'.$matches['patch']; } $this->addLibrary($name.'-imagemagick', $version, null, array('imagick')); break; case 'ldap': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^Vendor Version => (?\d+)$/im', $info, $matches) && preg_match('/^Vendor Name => (?.+)$/im', $info, $vendorMatches)) { $this->addLibrary($name.'-'.strtolower($vendorMatches['vendor']), Version::convertOpenldapVersionId($matches['versionId']), $vendorMatches['vendor'].' version of ldap'); } break; case 'libxml': // ext/dom, ext/simplexml, ext/xmlreader and ext/xmlwriter use the same libxml as the ext/libxml $libxmlProvides = array_map(function ($extension) { return $extension . '-libxml'; }, array_intersect($loadedExtensions, array('dom', 'simplexml', 'xml', 'xmlreader', 'xmlwriter'))); $this->addLibrary($name, $this->runtime->getConstant('LIBXML_DOTTED_VERSION'), 'libxml library version', array(), $libxmlProvides); break; case 'mbstring': $info = $this->runtime->getExtensionInfo($name); // libmbfl version => 1.3.2 if (preg_match('/^libmbfl version => (?.+)$/im', $info, $libmbflMatches)) { $this->addLibrary($name.'-libmbfl', $libmbflMatches['version'], 'mbstring libmbfl version'); } if ($this->runtime->hasConstant('MB_ONIGURUMA_VERSION')) { $this->addLibrary($name.'-oniguruma', $this->runtime->getConstant('MB_ONIGURUMA_VERSION'), 'mbstring oniguruma version'); // Multibyte regex (oniguruma) version => 5.9.5 // oniguruma version => 6.9.0 } elseif (preg_match('/^(?:oniguruma|Multibyte regex \(oniguruma\)) version => (?.+)$/im', $info, $onigurumaMatches)) { $this->addLibrary($name.'-oniguruma', $onigurumaMatches['version'], 'mbstring oniguruma version'); } break; case 'memcached': $info = $this->runtime->getExtensionInfo($name); // libmemcached version => 1.0.18 if (preg_match('/^libmemcached version => (?.+)$/im', $info, $matches)) { $this->addLibrary($name.'-libmemcached', $matches['version'], 'libmemcached version'); } break; case 'openssl': // OpenSSL 1.1.1g 21 Apr 2020 if (preg_match('{^(?:OpenSSL|LibreSSL)?\s*(?\S+)}i', $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), $matches)) { $parsedVersion = Version::parseOpenssl($matches['version'], $isFips); $this->addLibrary($name.($isFips ? '-fips' : ''), $parsedVersion, $this->runtime->getConstant('OPENSSL_VERSION_TEXT'), array(), $isFips ? array($name) : array()); } break; case 'pcre': $this->addLibrary($name, preg_replace('{^(\S+).*}', '$1', $this->runtime->getConstant('PCRE_VERSION'))); $info = $this->runtime->getExtensionInfo($name); // PCRE Unicode Version => 12.1.0 if (preg_match('/^PCRE Unicode Version => (?.+)$/im', $info, $pcreUnicodeMatches)) { $this->addLibrary($name.'-unicode', $pcreUnicodeMatches['version'], 'PCRE Unicode version support'); } break; case 'mysqlnd': case 'pdo_mysql': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^(?:Client API version|Version) => mysqlnd (?.+?) /mi', $info, $matches)) { $this->addLibrary($name.'-mysqlnd', $matches['version'], 'mysqlnd library version for '.$name); } break; case 'mongodb': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^libmongoc bundled version => (?.+)$/im', $info, $libmongocMatches)) { $this->addLibrary($name.'-libmongoc', $libmongocMatches['version'], 'libmongoc version of mongodb'); } if (preg_match('/^libbson bundled version => (?.+)$/im', $info, $libbsonMatches)) { $this->addLibrary($name.'-libbson', $libbsonMatches['version'], 'libbson version of mongodb'); } break; case 'pgsql': case 'pdo_pgsql': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^PostgreSQL\(libpq\) Version => (?.*)$/im', $info, $matches)) { $this->addLibrary($name.'-libpq', $matches['version'], 'libpq for '.$name); } break; case 'libsodium': case 'sodium': if ($this->runtime->hasConstant('SODIUM_LIBRARY_VERSION')) { $this->addLibrary('libsodium', $this->runtime->getConstant('SODIUM_LIBRARY_VERSION')); } break; case 'sqlite3': case 'pdo_sqlite': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^SQLite Library => (?.+)$/im', $info, $matches)) { $this->addLibrary($name.'-sqlite', $matches['version']); } break; case 'ssh2': $info = $this->runtime->getExtensionInfo($name); if (preg_match('/^libssh2 version => (?.+)$/im', $info, $matches)) { $this->addLibrary($name.'-libssh2', $matches['version']); } break; case 'xsl': $this->addLibrary('libxslt', $this->runtime->getConstant('LIBXSLT_DOTTED_VERSION'), null, array('xsl')); $info = $this->runtime->getExtensionInfo('xsl'); if (preg_match('/^libxslt compiled against libxml Version => (?.+)$/im', $info, $matches)) { $this->addLibrary('libxslt-libxml', $matches['version'], 'libxml version libxslt is compiled against'); } break; case 'yaml': $info = $this->runtime->getExtensionInfo('yaml'); if (preg_match('/^LibYAML Version => (?.+)$/im', $info, $matches)) { $this->addLibrary($name.'-libyaml', $matches['version'], 'libyaml version of yaml'); } break; case 'zip': if ($this->runtime->hasConstant('LIBZIP_VERSION', 'ZipArchive')) { $this->addLibrary($name.'-libzip', $this->runtime->getConstant('LIBZIP_VERSION', 'ZipArchive'), null, array('zip')); } break; case 'zlib': if ($this->runtime->hasConstant('ZLIB_VERSION')) { $this->addLibrary($name, $this->runtime->getConstant('ZLIB_VERSION')); // Linked Version => 1.2.8 } elseif (preg_match('/^Linked Version => (?.+)$/im', $this->runtime->getExtensionInfo($name), $matches)) { $this->addLibrary($name, $matches['version']); } break; default: break; } } $hhvmVersion = $this->hhvmDetector->getVersion(); if ($hhvmVersion) { try { $prettyVersion = $hhvmVersion; $version = $this->versionParser->normalize($prettyVersion); } catch (\UnexpectedValueException $e) { $prettyVersion = preg_replace('#^([^~+-]+).*$#', '$1', $hhvmVersion); $version = $this->versionParser->normalize($prettyVersion); } $hhvm = new CompletePackage('hhvm', $version, $prettyVersion); $hhvm->setDescription('The HHVM Runtime (64bit)'); $this->addPackage($hhvm); } } /** * {@inheritDoc} */ public function addPackage(PackageInterface $package) { // Skip if overridden if (isset($this->overrides[$package->getName()])) { $overrider = $this->findPackage($package->getName(), '*'); if ($package->getVersion() === $overrider->getVersion()) { $actualText = 'same as actual'; } else { $actualText = 'actual: '.$package->getPrettyVersion(); } $overrider->setDescription($overrider->getDescription().', '.$actualText); return; } // Skip if PHP is overridden and we are adding a php-* package if (isset($this->overrides['php']) && 0 === strpos($package->getName(), 'php-')) { $overrider = $this->addOverriddenPackage($this->overrides['php'], $package->getPrettyName()); if ($package->getVersion() === $overrider->getVersion()) { $actualText = 'same as actual'; } else { $actualText = 'actual: '.$package->getPrettyVersion(); } $overrider->setDescription($overrider->getDescription().', '.$actualText); return; } parent::addPackage($package); } private function addOverriddenPackage(array $override, $name = null) { $version = $this->versionParser->normalize($override['version']); $package = new CompletePackage($name ?: $override['name'], $version, $override['version']); $package->setDescription('Package overridden via config.platform'); $package->setExtra(array('config.platform' => true)); parent::addPackage($package); return $package; } /** * Parses the version and adds a new package to the repository * * @param string $name * @param null|string $prettyVersion */ private function addExtension($name, $prettyVersion) { $extraDescription = null; try { $version = $this->versionParser->normalize($prettyVersion); } catch (\UnexpectedValueException $e) { $extraDescription = ' (actual version: '.$prettyVersion.')'; if (preg_match('{^(\d+\.\d+\.\d+(?:\.\d+)?)}', $prettyVersion, $match)) { $prettyVersion = $match[1]; } else { $prettyVersion = '0'; } $version = $this->versionParser->normalize($prettyVersion); } $packageName = $this->buildPackageName($name); $ext = new CompletePackage($packageName, $version, $prettyVersion); $ext->setDescription('The '.$name.' PHP extension'.$extraDescription); if ($name === 'uuid') { $ext->setReplaces(array( new Link('ext-uuid', 'lib-uuid', new Constraint('=', $version), Link::TYPE_REPLACE, $ext->getPrettyVersion()), )); } $this->addPackage($ext); } /** * @param string $name * @return string */ private function buildPackageName($name) { return 'ext-' . str_replace(' ', '-', strtolower($name)); } /** * @param string $name * @param string $prettyVersion * @param string|null $description * @param string[] $replaces * @param string[] $provides */ private function addLibrary($name, $prettyVersion, $description = null, array $replaces = array(), array $provides = array()) { try { $version = $this->versionParser->normalize($prettyVersion); } catch (\UnexpectedValueException $e) { return; } if ($description === null) { $description = 'The '.$name.' library'; } $lib = new CompletePackage('lib-'.$name, $version, $prettyVersion); $lib->setDescription($description); $links = function ($alias) use ($name, $version, $lib) { return new Link('lib-'.$name, 'lib-'.$alias, new Constraint('=', $version), Link::TYPE_REPLACE, $lib->getPrettyVersion()); }; $lib->setReplaces(array_map($links, $replaces)); $lib->setProvides(array_map($links, $provides)); $this->addPackage($lib); } /** * Check if a package name is a platform package. * * @param string $name * @return bool */ public static function isPlatformPackage($name) { static $cache = array(); if (isset($cache[$name])) { return $cache[$name]; } return $cache[$name] = (bool) preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $name); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\Downloader\TransportException; use Composer\Json\JsonFile; use Composer\Cache; use Composer\IO\IOInterface; use Composer\Util\GitHub; use Composer\Util\Http\Response; /** * @author Jordi Boggiano */ class GitHubDriver extends VcsDriver { protected $owner; protected $repository; protected $tags; protected $branches; protected $rootIdentifier; protected $repoData; protected $hasIssues; protected $isPrivate = false; private $isArchived = false; private $fundingInfo; /** * Git Driver * * @var GitDriver */ protected $gitDriver; /** * {@inheritDoc} */ public function initialize() { preg_match('#^(?:(?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $this->url, $match); $this->owner = $match[3]; $this->repository = $match[4]; $this->originUrl = strtolower(!empty($match[1]) ? $match[1] : $match[2]); if ($this->originUrl === 'www.github.com') { $this->originUrl = 'github.com'; } $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->owner.'/'.$this->repository); $this->cache->setReadOnly($this->config->get('cache-read-only')); if ($this->config->get('use-github-api') === false || (isset($this->repoConfig['no-api']) && $this->repoConfig['no-api'])) { $this->setupGitDriver($this->url); return; } $this->fetchRootIdentifier(); } public function getRepositoryUrl() { return 'https://'.$this->originUrl.'/'.$this->owner.'/'.$this->repository; } /** * {@inheritDoc} */ public function getRootIdentifier() { if ($this->gitDriver) { return $this->gitDriver->getRootIdentifier(); } return $this->rootIdentifier; } /** * {@inheritDoc} */ public function getUrl() { if ($this->gitDriver) { return $this->gitDriver->getUrl(); } return 'https://' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; } /** * {@inheritDoc} */ protected function getApiUrl() { if ('github.com' === $this->originUrl) { $apiUrl = 'api.github.com'; } else { $apiUrl = $this->originUrl . '/api/v3'; } return 'https://' . $apiUrl; } /** * {@inheritDoc} */ public function getSource($identifier) { if ($this->gitDriver) { return $this->gitDriver->getSource($identifier); } if ($this->isPrivate) { // Private GitHub repositories should be accessed using the // SSH version of the URL. $url = $this->generateSshUrl(); } else { $url = $this->getUrl(); } return array('type' => 'git', 'url' => $url, 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { $url = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/zipball/'.$identifier; return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); } /** * {@inheritDoc} */ public function getComposerInformation($identifier) { if ($this->gitDriver) { return $this->gitDriver->getComposerInformation($identifier); } if (!isset($this->infoCache[$identifier])) { if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { $composer = JsonFile::parseJson($res); } else { $composer = $this->getBaseComposerInformation($identifier); if ($this->shouldCache($identifier)) { $this->cache->write($identifier, json_encode($composer)); } } if ($composer) { // specials for github if (!isset($composer['support']['source'])) { $label = array_search($identifier, $this->getTags()) ?: array_search($identifier, $this->getBranches()) ?: $identifier; $composer['support']['source'] = sprintf('https://%s/%s/%s/tree/%s', $this->originUrl, $this->owner, $this->repository, $label); } if (!isset($composer['support']['issues']) && $this->hasIssues) { $composer['support']['issues'] = sprintf('https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository); } if (!isset($composer['abandoned']) && $this->isArchived) { $composer['abandoned'] = true; } if (!isset($composer['funding']) && $funding = $this->getFundingInfo()) { $composer['funding'] = $funding; } } $this->infoCache[$identifier] = $composer; } return $this->infoCache[$identifier]; } private function getFundingInfo() { if (null !== $this->fundingInfo) { return $this->fundingInfo; } if ($this->originUrl !== 'github.com') { return $this->fundingInfo = false; } foreach (array($this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/.github/FUNDING.yml', $this->getApiUrl() . '/repos/'.$this->owner.'/.github/contents/FUNDING.yml') as $file) { try { $response = $this->httpDownloader->get($file, array( 'retry-auth-failure' => false, ))->decodeJson(); } catch (TransportException $e) { continue; } if (empty($response['content']) || $response['encoding'] !== 'base64' || !($funding = base64_decode($response['content']))) { continue; } break; } if (empty($funding)) { return $this->fundingInfo = false; } $result = array(); $key = null; foreach (preg_split('{\r?\n}', $funding) as $line) { $line = trim($line); if (preg_match('{^(\w+)\s*:\s*(.+)$}', $line, $match)) { if (preg_match('{^\[(.*)\](?:\s*#.*)?$}', $match[2], $match2)) { foreach (array_map('trim', preg_split('{[\'"]?\s*,\s*[\'"]?}', $match2[1])) as $item) { $result[] = array('type' => $match[1], 'url' => trim($item, '"\' ')); } } elseif (preg_match('{^([^#].*?)(\s+#.*)?$}', $match[2], $match2)) { $result[] = array('type' => $match[1], 'url' => trim($match2[1], '"\' ')); } $key = null; } elseif (preg_match('{^(\w+)\s*:\s*#\s*$}', $line, $match)) { $key = $match[1]; } elseif ($key && preg_match('{^-\s*(.+)(\s+#.*)?$}', $line, $match)) { $result[] = array('type' => $key, 'url' => trim($match[1], '"\' ')); } } foreach ($result as $key => $item) { switch ($item['type']) { case 'tidelift': $result[$key]['url'] = 'https://tidelift.com/funding/github/' . $item['url']; break; case 'github': $result[$key]['url'] = 'https://github.com/' . basename($item['url']); break; case 'patreon': $result[$key]['url'] = 'https://www.patreon.com/' . basename($item['url']); break; case 'otechie': $result[$key]['url'] = 'https://otechie.com/' . basename($item['url']); break; case 'open_collective': $result[$key]['url'] = 'https://opencollective.com/' . basename($item['url']); break; case 'liberapay': $result[$key]['url'] = 'https://liberapay.com/' . basename($item['url']); break; case 'ko_fi': $result[$key]['url'] = 'https://ko-fi.com/' . basename($item['url']); break; case 'issuehunt': $result[$key]['url'] = 'https://issuehunt.io/r/' . $item['url']; break; case 'community_bridge': $result[$key]['url'] = 'https://funding.communitybridge.org/projects/' . basename($item['url']); break; } } return $this->fundingInfo = $result; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { if ($this->gitDriver) { return $this->gitDriver->getFileContent($file, $identifier); } $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/contents/' . $file . '?ref='.urlencode($identifier); $resource = $this->getContents($resource)->decodeJson(); if (empty($resource['content']) || $resource['encoding'] !== 'base64' || !($content = base64_decode($resource['content']))) { throw new \RuntimeException('Could not retrieve ' . $file . ' for '.$identifier); } return $content; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { if ($this->gitDriver) { return $this->gitDriver->getChangeDate($identifier); } $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/commits/'.urlencode($identifier); $commit = $this->getContents($resource)->decodeJson(); return new \DateTime($commit['commit']['committer']['date']); } /** * {@inheritDoc} */ public function getTags() { if ($this->gitDriver) { return $this->gitDriver->getTags(); } if (null === $this->tags) { $this->tags = array(); $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/tags?per_page=100'; do { $response = $this->getContents($resource); $tagsData = $response->decodeJson(); foreach ($tagsData as $tag) { $this->tags[$tag['name']] = $tag['commit']['sha']; } $resource = $this->getNextPage($response); } while ($resource); } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if ($this->gitDriver) { return $this->gitDriver->getBranches(); } if (null === $this->branches) { $this->branches = array(); $resource = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository.'/git/refs/heads?per_page=100'; do { $response = $this->getContents($resource); $branchData = $response->decodeJson(); foreach ($branchData as $branch) { $name = substr($branch['ref'], 11); if ($name !== 'gh-pages') { $this->branches[$name] = $branch['object']['sha']; } } $resource = $this->getNextPage($response); } while ($resource); } return $this->branches; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (!preg_match('#^((?:https?|git)://([^/]+)/|git@([^:]+):/?)([^/]+)/(.+?)(?:\.git|/)?$#', $url, $matches)) { return false; } $originUrl = !empty($matches[2]) ? $matches[2] : $matches[3]; if (!in_array(strtolower(preg_replace('{^www\.}i', '', $originUrl)), $config->get('github-domains'))) { return false; } if (!extension_loaded('openssl')) { $io->writeError('Skipping GitHub driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); return false; } return true; } /** * Gives back the loaded /repos// result * * @return array|null */ public function getRepoData() { $this->fetchRootIdentifier(); return $this->repoData; } /** * Generate an SSH URL * * @return string */ protected function generateSshUrl() { if (false !== strpos($this->originUrl, ':')) { return 'ssh://git@' . $this->originUrl . '/'.$this->owner.'/'.$this->repository.'.git'; } return 'git@' . $this->originUrl . ':'.$this->owner.'/'.$this->repository.'.git'; } /** * {@inheritDoc} */ protected function getContents($url, $fetchingRepoData = false) { try { return parent::getContents($url); } catch (TransportException $e) { $gitHubUtil = new GitHub($this->io, $this->config, $this->process, $this->httpDownloader); switch ($e->getCode()) { case 401: case 404: // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 if (!$fetchingRepoData) { throw $e; } if ($gitHubUtil->authorizeOAuth($this->originUrl)) { return parent::getContents($url); } if (!$this->io->isInteractive()) { if ($this->attemptCloneFallback()) { return new Response(array('url' => 'dummy'), 200, array(), 'null'); } } $scopesIssued = array(); $scopesNeeded = array(); if ($headers = $e->getHeaders()) { if ($scopes = Response::findHeaderValue($headers, 'X-OAuth-Scopes')) { $scopesIssued = explode(' ', $scopes); } if ($scopes = Response::findHeaderValue($headers, 'X-Accepted-OAuth-Scopes')) { $scopesNeeded = explode(' ', $scopes); } } $scopesFailed = array_diff($scopesNeeded, $scopesIssued); // non-authenticated requests get no scopesNeeded, so ask for credentials // authenticated requests which failed some scopes should ask for new credentials too if (!$headers || !count($scopesNeeded) || count($scopesFailed)) { $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'Your GitHub credentials are required to fetch private repository metadata ('.$this->url.')'); } return parent::getContents($url); case 403: if (!$this->io->hasAuthentication($this->originUrl) && $gitHubUtil->authorizeOAuth($this->originUrl)) { return parent::getContents($url); } if (!$this->io->isInteractive() && $fetchingRepoData) { if ($this->attemptCloneFallback()) { return new Response(array('url' => 'dummy'), 200, array(), 'null'); } } $rateLimited = $gitHubUtil->isRateLimited($e->getHeaders()); if (!$this->io->hasAuthentication($this->originUrl)) { if (!$this->io->isInteractive()) { $this->io->writeError('GitHub API limit exhausted. Failed to get metadata for the '.$this->url.' repository, try running in interactive mode so that you can enter your GitHub credentials to increase the API limit'); throw $e; } $gitHubUtil->authorizeOAuthInteractively($this->originUrl, 'API limit exhausted. Enter your GitHub credentials to get a larger API limit ('.$this->url.')'); return parent::getContents($url); } if ($rateLimited) { $rateLimit = $gitHubUtil->getRateLimit($e->getHeaders()); $this->io->writeError(sprintf( 'GitHub API limit (%d calls/hr) is exhausted. You are already authorized so you have to wait until %s before doing more requests', $rateLimit['limit'], $rateLimit['reset'] )); } throw $e; default: throw $e; } } } /** * Fetch root identifier from GitHub * * @throws TransportException */ protected function fetchRootIdentifier() { if ($this->repoData) { return; } $repoDataUrl = $this->getApiUrl() . '/repos/'.$this->owner.'/'.$this->repository; try { $this->repoData = $this->getContents($repoDataUrl, true)->decodeJson(); } catch (TransportException $e) { if ($e->getCode() === 499) { $this->attemptCloneFallback(); } else { throw $e; } } if (null === $this->repoData && null !== $this->gitDriver) { return; } $this->owner = $this->repoData['owner']['login']; $this->repository = $this->repoData['name']; $this->isPrivate = !empty($this->repoData['private']); if (isset($this->repoData['default_branch'])) { $this->rootIdentifier = $this->repoData['default_branch']; } elseif (isset($this->repoData['master_branch'])) { $this->rootIdentifier = $this->repoData['master_branch']; } else { $this->rootIdentifier = 'master'; } $this->hasIssues = !empty($this->repoData['has_issues']); $this->isArchived = !empty($this->repoData['archived']); } protected function attemptCloneFallback() { $this->isPrivate = true; try { // If this repository may be private (hard to say for sure, // GitHub returns 404 for private repositories) and we // cannot ask for authentication credentials (because we // are not interactive) then we fallback to GitDriver. $this->setupGitDriver($this->generateSshUrl()); return true; } catch (\RuntimeException $e) { $this->gitDriver = null; $this->io->writeError('Failed to clone the '.$this->generateSshUrl().' repository, try running in interactive mode so that you can enter your GitHub credentials'); throw $e; } } protected function setupGitDriver($url) { $this->gitDriver = new GitDriver( array('url' => $url), $this->io, $this->config, $this->httpDownloader, $this->process ); $this->gitDriver->initialize(); } protected function getNextPage(Response $response) { $header = $response->getHeader('link'); $links = explode(',', $header); foreach ($links as $link) { if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { return $match[1]; } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\Cache; use Composer\Util\Hg as HgUtils; use Composer\Util\ProcessExecutor; use Composer\Util\Filesystem; use Composer\IO\IOInterface; /** * @author Per Bernhardt */ class HgDriver extends VcsDriver { protected $tags; protected $branches; protected $rootIdentifier; protected $repoDir; /** * {@inheritDoc} */ public function initialize() { if (Filesystem::isLocalPath($this->url)) { $this->repoDir = $this->url; } else { if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { throw new \RuntimeException('HgDriver requires a usable cache directory, and it looks like you set it to be disabled'); } $cacheDir = $this->config->get('cache-vcs-dir'); $this->repoDir = $cacheDir . '/' . preg_replace('{[^a-z0-9]}i', '-', $this->url) . '/'; $fs = new Filesystem(); $fs->ensureDirectoryExists($cacheDir); if (!is_writable(dirname($this->repoDir))) { throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$cacheDir.'" directory is not writable by the current user.'); } // Ensure we are allowed to use this URL by config $this->config->prohibitUrlByConfig($this->url, $this->io); $hgUtils = new HgUtils($this->io, $this->config, $this->process); // update the repo if it is a valid hg repository if (is_dir($this->repoDir) && 0 === $this->process->execute('hg summary', $output, $this->repoDir)) { if (0 !== $this->process->execute('hg pull', $output, $this->repoDir)) { $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); } } else { // clean up directory and do a fresh clone into it $fs->removeDirectory($this->repoDir); $repoDir = $this->repoDir; $command = function ($url) use ($repoDir) { return sprintf('hg clone --noupdate -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($repoDir)); }; $hgUtils->runCommand($command, $this->url, null); } } $this->getTags(); $this->getBranches(); } /** * {@inheritDoc} */ public function getRootIdentifier() { if (null === $this->rootIdentifier) { $this->process->execute(sprintf('hg tip --template "{node}"'), $output, $this->repoDir); $output = $this->process->splitLines($output); $this->rootIdentifier = $output[0]; } return $this->rootIdentifier; } /** * {@inheritDoc} */ public function getUrl() { return $this->url; } /** * {@inheritDoc} */ public function getSource($identifier) { return array('type' => 'hg', 'url' => $this->getUrl(), 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { return null; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { $resource = sprintf('hg cat -r %s %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); $this->process->execute($resource, $content, $this->repoDir); if (!trim($content)) { return; } return $content; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { $this->process->execute( sprintf( 'hg log --template "{date|rfc3339date}" -r %s', ProcessExecutor::escape($identifier) ), $output, $this->repoDir ); return new \DateTime(trim($output), new \DateTimeZone('UTC')); } /** * {@inheritDoc} */ public function getTags() { if (null === $this->tags) { $tags = array(); $this->process->execute('hg tags', $output, $this->repoDir); foreach ($this->process->splitLines($output) as $tag) { if ($tag && preg_match('(^([^\s]+)\s+\d+:(.*)$)', $tag, $match)) { $tags[$match[1]] = $match[2]; } } unset($tags['tip']); $this->tags = $tags; } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if (null === $this->branches) { $branches = array(); $bookmarks = array(); $this->process->execute('hg branches', $output, $this->repoDir); foreach ($this->process->splitLines($output) as $branch) { if ($branch && preg_match('(^([^\s]+)\s+\d+:([a-f0-9]+))', $branch, $match)) { $branches[$match[1]] = $match[2]; } } $this->process->execute('hg bookmarks', $output, $this->repoDir); foreach ($this->process->splitLines($output) as $branch) { if ($branch && preg_match('(^(?:[\s*]*)([^\s]+)\s+\d+:(.*)$)', $branch, $match)) { $bookmarks[$match[1]] = $match[2]; } } // Branches will have preference over bookmarks $this->branches = array_merge($bookmarks, $branches); } return $this->branches; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (preg_match('#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i', $url)) { return true; } // local filesystem if (Filesystem::isLocalPath($url)) { $url = Filesystem::getPlatformPath($url); if (!is_dir($url)) { return false; } $process = new ProcessExecutor($io); // check whether there is a hg repo in that path if ($process->execute('hg summary', $output, $url) === 0) { return true; } } if (!$deep) { return false; } $process = new ProcessExecutor($io); $exit = $process->execute(sprintf('hg identify -- %s', ProcessExecutor::escape($url)), $ignored); return $exit === 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Cache; use Composer\Config; use Composer\Json\JsonFile; use Composer\Util\ProcessExecutor; use Composer\Util\Filesystem; use Composer\Util\Url; use Composer\Util\Svn as SvnUtil; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; /** * @author Jordi Boggiano * @author Till Klampaeckel */ class SvnDriver extends VcsDriver { protected $baseUrl; protected $tags; protected $branches; protected $rootIdentifier; protected $trunkPath = 'trunk'; protected $branchesPath = 'branches'; protected $tagsPath = 'tags'; protected $packagePath = ''; protected $cacheCredentials = true; /** * @var \Composer\Util\Svn */ private $util; /** * {@inheritDoc} */ public function initialize() { $this->url = $this->baseUrl = rtrim(self::normalizeUrl($this->url), '/'); SvnUtil::cleanEnv(); if (isset($this->repoConfig['trunk-path'])) { $this->trunkPath = $this->repoConfig['trunk-path']; } if (isset($this->repoConfig['branches-path'])) { $this->branchesPath = $this->repoConfig['branches-path']; } if (isset($this->repoConfig['tags-path'])) { $this->tagsPath = $this->repoConfig['tags-path']; } if (array_key_exists('svn-cache-credentials', $this->repoConfig)) { $this->cacheCredentials = (bool) $this->repoConfig['svn-cache-credentials']; } if (isset($this->repoConfig['package-path'])) { $this->packagePath = '/' . trim($this->repoConfig['package-path'], '/'); } if (false !== ($pos = strrpos($this->url, '/' . $this->trunkPath))) { $this->baseUrl = substr($this->url, 0, $pos); } $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->baseUrl))); $this->cache->setReadOnly($this->config->get('cache-read-only')); $this->getBranches(); $this->getTags(); } /** * {@inheritDoc} */ public function getRootIdentifier() { return $this->rootIdentifier ?: $this->trunkPath; } /** * {@inheritDoc} */ public function getUrl() { return $this->url; } /** * {@inheritDoc} */ public function getSource($identifier) { return array('type' => 'svn', 'url' => $this->baseUrl, 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { return null; } /** * {@inheritdoc} */ protected function shouldCache($identifier) { return $this->cache && preg_match('{@\d+$}', $identifier); } /** * {@inheritdoc} */ public function getComposerInformation($identifier) { if (!isset($this->infoCache[$identifier])) { if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier.'.json')) { return $this->infoCache[$identifier] = JsonFile::parseJson($res); } try { $composer = $this->getBaseComposerInformation($identifier); } catch (TransportException $e) { $message = $e->getMessage(); if (stripos($message, 'path not found') === false && stripos($message, 'svn: warning: W160013') === false) { throw $e; } // remember a not-existent composer.json $composer = ''; } if ($this->shouldCache($identifier)) { $this->cache->write($identifier.'.json', json_encode($composer)); } $this->infoCache[$identifier] = $composer; } return $this->infoCache[$identifier]; } /** * @param string $file * @param string $identifier */ public function getFileContent($file, $identifier) { $identifier = '/' . trim($identifier, '/') . '/'; preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); if (!empty($match[2])) { $path = $match[1]; $rev = $match[2]; } else { $path = $identifier; $rev = ''; } try { $resource = $path.$file; $output = $this->execute('svn cat', $this->baseUrl . $resource . $rev); if (!trim($output)) { return null; } } catch (\RuntimeException $e) { throw new TransportException($e->getMessage()); } return $output; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { $identifier = '/' . trim($identifier, '/') . '/'; preg_match('{^(.+?)(@\d+)?/$}', $identifier, $match); if (!empty($match[2])) { $path = $match[1]; $rev = $match[2]; } else { $path = $identifier; $rev = ''; } $output = $this->execute('svn info', $this->baseUrl . $path . $rev); foreach ($this->process->splitLines($output) as $line) { if ($line && preg_match('{^Last Changed Date: ([^(]+)}', $line, $match)) { return new \DateTime($match[1], new \DateTimeZone('UTC')); } } return null; } /** * {@inheritDoc} */ public function getTags() { if (null === $this->tags) { $this->tags = array(); if ($this->tagsPath !== false) { $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->tagsPath); if ($output) { foreach ($this->process->splitLines($output) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if (isset($match[1], $match[2]) && $match[2] !== './') { $this->tags[rtrim($match[2], '/')] = $this->buildIdentifier( '/' . $this->tagsPath . '/' . $match[2], $match[1] ); } } } } } } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if (null === $this->branches) { $this->branches = array(); if (false === $this->trunkPath) { $trunkParent = $this->baseUrl . '/'; } else { $trunkParent = $this->baseUrl . '/' . $this->trunkPath; } $output = $this->execute('svn ls --verbose', $trunkParent); if ($output) { foreach ($this->process->splitLines($output) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if (isset($match[1], $match[2]) && $match[2] === './') { $this->branches['trunk'] = $this->buildIdentifier( '/' . $this->trunkPath, $match[1] ); $this->rootIdentifier = $this->branches['trunk']; break; } } } } unset($output); if ($this->branchesPath !== false) { $output = $this->execute('svn ls --verbose', $this->baseUrl . '/' . $this->branchesPath); if ($output) { foreach ($this->process->splitLines(trim($output)) as $line) { $line = trim($line); if ($line && preg_match('{^\s*(\S+).*?(\S+)\s*$}', $line, $match)) { if (isset($match[1], $match[2]) && $match[2] !== './') { $this->branches[rtrim($match[2], '/')] = $this->buildIdentifier( '/' . $this->branchesPath . '/' . $match[2], $match[1] ); } } } } } } return $this->branches; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { $url = self::normalizeUrl($url); if (preg_match('#(^svn://|^svn\+ssh://|svn\.)#i', $url)) { return true; } // proceed with deep check for local urls since they are fast to process if (!$deep && !Filesystem::isLocalPath($url)) { return false; } $process = new ProcessExecutor($io); $exit = $process->execute( "svn info --non-interactive -- ".ProcessExecutor::escape($url), $ignoredOutput ); if ($exit === 0) { // This is definitely a Subversion repository. return true; } // Subversion client 1.7 and older if (false !== stripos($process->getErrorOutput(), 'authorization failed:')) { // This is likely a remote Subversion repository that requires // authentication. We will handle actual authentication later. return true; } // Subversion client 1.8 and newer if (false !== stripos($process->getErrorOutput(), 'Authentication failed')) { // This is likely a remote Subversion or newer repository that requires // authentication. We will handle actual authentication later. return true; } return false; } /** * An absolute path (leading '/') is converted to a file:// url. * * @param string $url * * @return string */ protected static function normalizeUrl($url) { $fs = new Filesystem(); if ($fs->isAbsolutePath($url)) { return 'file://' . strtr($url, '\\', '/'); } return $url; } /** * Execute an SVN command and try to fix up the process with credentials * if necessary. * * @param string $command The svn command to run. * @param string $url The SVN URL. * @throws \RuntimeException * @return string */ protected function execute($command, $url) { if (null === $this->util) { $this->util = new SvnUtil($this->baseUrl, $this->io, $this->config, $this->process); $this->util->setCacheCredentials($this->cacheCredentials); } try { return $this->util->execute($command, $url); } catch (\RuntimeException $e) { if (null === $this->util->binaryVersion()) { throw new \RuntimeException('Failed to load '.$this->url.', svn was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput()); } throw new \RuntimeException( 'Repository '.$this->url.' could not be processed, '.$e->getMessage() ); } } /** * Build the identifier respecting "package-path" config option * * @param string $baseDir The path to trunk/branch/tag * @param int $revision The revision mark to add to identifier * * @return string */ protected function buildIdentifier($baseDir, $revision) { return rtrim($baseDir, '/') . $this->packagePath . '/@' . $revision; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\IO\IOInterface; /** * @author Jordi Boggiano */ interface VcsDriverInterface { /** * Initializes the driver (git clone, svn checkout, fetch info etc) */ public function initialize(); /** * Return the composer.json file information * * @param string $identifier Any identifier to a specific branch/tag/commit * @return array containing all infos from the composer.json file */ public function getComposerInformation($identifier); /** * Return the content of $file or null if the file does not exist. * * @param string $file * @param string $identifier * @return string|null */ public function getFileContent($file, $identifier); /** * Get the changedate for $identifier. * * @param string $identifier * @return \DateTime|null */ public function getChangeDate($identifier); /** * Return the root identifier (trunk, master, default/tip ..) * * @return string Identifier */ public function getRootIdentifier(); /** * Return list of branches in the repository * * @return array Branch names as keys, identifiers as values */ public function getBranches(); /** * Return list of tags in the repository * * @return array Tag names as keys, identifiers as values */ public function getTags(); /** * @param string $identifier Any identifier to a specific branch/tag/commit * @return array|null With type, url reference and shasum keys. */ public function getDist($identifier); /** * @param string $identifier Any identifier to a specific branch/tag/commit * @return array With type, url and reference keys. */ public function getSource($identifier); /** * Return the URL of the repository * * @return string */ public function getUrl(); /** * Return true if the repository has a composer file for a given identifier, * false otherwise. * * @param string $identifier Any identifier to a specific branch/tag/commit * @return bool Whether the repository has a composer file for a given identifier. */ public function hasComposerFile($identifier); /** * Performs any cleanup necessary as the driver is not longer needed */ public function cleanup(); /** * Checks if this driver can handle a given url * * @param IOInterface $io IO instance * @param Config $config current $config * @param string $url URL to validate/check * @param bool $deep unless true, only shallow checks (url matching typically) should be done * @return bool */ public static function supports(IOInterface $io, Config $config, $url, $deep = false); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Cache; use Composer\Downloader\TransportException; use Composer\Json\JsonFile; use Composer\Util\Bitbucket; use Composer\Util\Http\Response; abstract class BitbucketDriver extends VcsDriver { protected $owner; protected $repository; protected $hasIssues; protected $rootIdentifier; protected $tags; protected $branches; protected $branchesUrl = ''; protected $tagsUrl = ''; protected $homeUrl = ''; protected $website = ''; protected $cloneHttpsUrl = ''; /** * @var VcsDriver */ protected $fallbackDriver; /** @var string|null if set either git or hg */ protected $vcsType; /** * {@inheritDoc} */ public function initialize() { preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+?)(\.git|/?)$#i', $this->url, $match); $this->owner = $match[1]; $this->repository = $match[2]; $this->originUrl = 'bitbucket.org'; $this->cache = new Cache( $this->io, implode('/', array( $this->config->get('cache-repo-dir'), $this->originUrl, $this->owner, $this->repository, )) ); $this->cache->setReadOnly($this->config->get('cache-read-only')); } /** * {@inheritDoc} */ public function getUrl() { if ($this->fallbackDriver) { return $this->fallbackDriver->getUrl(); } return $this->cloneHttpsUrl; } /** * Attempts to fetch the repository data via the BitBucket API and * sets some parameters which are used in other methods * * @return bool */ protected function getRepoData() { $resource = sprintf( 'https://api.bitbucket.org/2.0/repositories/%s/%s?%s', $this->owner, $this->repository, http_build_query( array('fields' => '-project,-owner'), null, '&' ) ); $repoData = $this->fetchWithOAuthCredentials($resource, true)->decodeJson(); if ($this->fallbackDriver) { return false; } $this->parseCloneUrls($repoData['links']['clone']); $this->hasIssues = !empty($repoData['has_issues']); $this->branchesUrl = $repoData['links']['branches']['href']; $this->tagsUrl = $repoData['links']['tags']['href']; $this->homeUrl = $repoData['links']['html']['href']; $this->website = $repoData['website']; $this->vcsType = $repoData['scm']; return true; } /** * {@inheritDoc} */ public function getComposerInformation($identifier) { if ($this->fallbackDriver) { return $this->fallbackDriver->getComposerInformation($identifier); } if (!isset($this->infoCache[$identifier])) { if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { $composer = JsonFile::parseJson($res); } else { $composer = $this->getBaseComposerInformation($identifier); if ($this->shouldCache($identifier)) { $this->cache->write($identifier, json_encode($composer)); } } if ($composer) { // specials for bitbucket if (!isset($composer['support']['source'])) { $label = array_search( $identifier, $this->getTags() ) ?: array_search( $identifier, $this->getBranches() ) ?: $identifier; if (array_key_exists($label, $tags = $this->getTags())) { $hash = $tags[$label]; } elseif (array_key_exists($label, $branches = $this->getBranches())) { $hash = $branches[$label]; } if (!isset($hash)) { $composer['support']['source'] = sprintf( 'https://%s/%s/%s/src', $this->originUrl, $this->owner, $this->repository ); } else { $composer['support']['source'] = sprintf( 'https://%s/%s/%s/src/%s/?at=%s', $this->originUrl, $this->owner, $this->repository, $hash, $label ); } } if (!isset($composer['support']['issues']) && $this->hasIssues) { $composer['support']['issues'] = sprintf( 'https://%s/%s/%s/issues', $this->originUrl, $this->owner, $this->repository ); } if (!isset($composer['homepage'])) { $composer['homepage'] = empty($this->website) ? $this->homeUrl : $this->website; } } $this->infoCache[$identifier] = $composer; } return $this->infoCache[$identifier]; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { if ($this->fallbackDriver) { return $this->fallbackDriver->getFileContent($file, $identifier); } if (strpos($identifier, '/') !== false) { $branches = $this->getBranches(); if (isset($branches[$identifier])) { $identifier = $branches[$identifier]; } } $resource = sprintf( 'https://api.bitbucket.org/2.0/repositories/%s/%s/src/%s/%s', $this->owner, $this->repository, $identifier, $file ); return $this->fetchWithOAuthCredentials($resource)->getBody(); } /** * {@inheritdoc} */ public function getChangeDate($identifier) { if ($this->fallbackDriver) { return $this->fallbackDriver->getChangeDate($identifier); } if (strpos($identifier, '/') !== false) { $branches = $this->getBranches(); if (isset($branches[$identifier])) { $identifier = $branches[$identifier]; } } $resource = sprintf( 'https://api.bitbucket.org/2.0/repositories/%s/%s/commit/%s?fields=date', $this->owner, $this->repository, $identifier ); $commit = $this->fetchWithOAuthCredentials($resource)->decodeJson(); return new \DateTime($commit['date']); } /** * {@inheritDoc} */ public function getSource($identifier) { if ($this->fallbackDriver) { return $this->fallbackDriver->getSource($identifier); } return array('type' => $this->vcsType, 'url' => $this->getUrl(), 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { if ($this->fallbackDriver) { return $this->fallbackDriver->getDist($identifier); } $url = sprintf( 'https://bitbucket.org/%s/%s/get/%s.zip', $this->owner, $this->repository, $identifier ); return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); } /** * {@inheritDoc} */ public function getTags() { if ($this->fallbackDriver) { return $this->fallbackDriver->getTags(); } if (null === $this->tags) { $this->tags = array(); $resource = sprintf( '%s?%s', $this->tagsUrl, http_build_query( array( 'pagelen' => 100, 'fields' => 'values.name,values.target.hash,next', 'sort' => '-target.date', ), null, '&' ) ); $hasNext = true; while ($hasNext) { $tagsData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); foreach ($tagsData['values'] as $data) { $this->tags[$data['name']] = $data['target']['hash']; } if (empty($tagsData['next'])) { $hasNext = false; } else { $resource = $tagsData['next']; } } if ($this->vcsType === 'hg') { unset($this->tags['tip']); } } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if ($this->fallbackDriver) { return $this->fallbackDriver->getBranches(); } if (null === $this->branches) { $this->branches = array(); $resource = sprintf( '%s?%s', $this->branchesUrl, http_build_query( array( 'pagelen' => 100, 'fields' => 'values.name,values.target.hash,values.heads,next', 'sort' => '-target.date', ), null, '&' ) ); $hasNext = true; while ($hasNext) { $branchData = $this->fetchWithOAuthCredentials($resource)->decodeJson(); foreach ($branchData['values'] as $data) { // skip headless branches which seem to be deleted branches that bitbucket nevertheless returns in the API if ($this->vcsType === 'hg' && empty($data['heads'])) { continue; } $this->branches[$data['name']] = $data['target']['hash']; } if (empty($branchData['next'])) { $hasNext = false; } else { $resource = $branchData['next']; } } } return $this->branches; } /** * Get the remote content. * * @param string $url The URL of content * @param bool $fetchingRepoData * * @return Response The result */ protected function fetchWithOAuthCredentials($url, $fetchingRepoData = false) { try { return parent::getContents($url); } catch (TransportException $e) { $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process, $this->httpDownloader); if (403 === $e->getCode() || (401 === $e->getCode() && strpos($e->getMessage(), 'Could not authenticate against') === 0)) { if (!$this->io->hasAuthentication($this->originUrl) && $bitbucketUtil->authorizeOAuth($this->originUrl) ) { return parent::getContents($url); } if (!$this->io->isInteractive() && $fetchingRepoData) { if ($this->attemptCloneFallback()) { return new Response(array('url' => 'dummy'), 200, array(), 'null'); } } } throw $e; } } /** * Generate an SSH URL * * @return string */ abstract protected function generateSshUrl(); protected function attemptCloneFallback() { try { $this->setupFallbackDriver($this->generateSshUrl()); return true; } catch (\RuntimeException $e) { $this->fallbackDriver = null; $this->io->writeError( 'Failed to clone the ' . $this->generateSshUrl() . ' repository, try running in interactive mode' . ' so that you can enter your Bitbucket OAuth consumer credentials' ); throw $e; } } /** * @param string $url * @return void */ abstract protected function setupFallbackDriver($url); /** * @param array $cloneLinks * @return void */ protected function parseCloneUrls(array $cloneLinks) { foreach ($cloneLinks as $cloneLink) { if ($cloneLink['name'] === 'https') { // Format: https://(user@)bitbucket.org/{user}/{repo} // Strip username from URL (only present in clone URL's for private repositories) $this->cloneHttpsUrl = preg_replace('/https:\/\/([^@]+@)?/', 'https://', $cloneLink['href']); } } } /** * @return array|null */ protected function getMainBranchData() { $resource = sprintf( 'https://api.bitbucket.org/2.0/repositories/%s/%s?fields=mainbranch', $this->owner, $this->repository ); $data = $this->fetchWithOAuthCredentials($resource)->decodeJson(); if (isset($data['mainbranch'])) { return $data['mainbranch']; } return null; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Util\ProcessExecutor; use Composer\Util\Filesystem; use Composer\Util\Url; use Composer\Util\Git as GitUtil; use Composer\IO\IOInterface; use Composer\Cache; use Composer\Config; /** * @author Jordi Boggiano */ class GitDriver extends VcsDriver { protected $tags; protected $branches; protected $rootIdentifier; protected $repoDir; /** * {@inheritDoc} */ public function initialize() { if (Filesystem::isLocalPath($this->url)) { $this->url = preg_replace('{[\\/]\.git/?$}', '', $this->url); if (!is_dir($this->url)) { throw new \RuntimeException('Failed to read package information from '.$this->url.' as the path does not exist'); } $this->repoDir = $this->url; $cacheUrl = realpath($this->url); } else { if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { throw new \RuntimeException('GitDriver requires a usable cache directory, and it looks like you set it to be disabled'); } $this->repoDir = $this->config->get('cache-vcs-dir') . '/' . preg_replace('{[^a-z0-9.]}i', '-', $this->url) . '/'; GitUtil::cleanEnv(); $fs = new Filesystem(); $fs->ensureDirectoryExists(dirname($this->repoDir)); if (!is_writable(dirname($this->repoDir))) { throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.dirname($this->repoDir).'" directory is not writable by the current user.'); } if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $this->url)) { throw new \InvalidArgumentException('The source URL '.$this->url.' is invalid, ssh URLs should have a port number after ":".'."\n".'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); } $gitUtil = new GitUtil($this->io, $this->config, $this->process, $fs); if (!$gitUtil->syncMirror($this->url, $this->repoDir)) { if (!is_dir($this->repoDir)) { throw new \RuntimeException('Failed to clone '.$this->url.' to read package information from it'); } $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated'); } $cacheUrl = $this->url; } $this->getTags(); $this->getBranches(); $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', Url::sanitize($cacheUrl))); $this->cache->setReadOnly($this->config->get('cache-read-only')); } /** * {@inheritDoc} */ public function getRootIdentifier() { if (null === $this->rootIdentifier) { $this->rootIdentifier = 'master'; // select currently checked out branch if master is not available $this->process->execute('git branch --no-color', $output, $this->repoDir); $branches = $this->process->splitLines($output); if (!in_array('* master', $branches)) { foreach ($branches as $branch) { if ($branch && preg_match('{^\* +(\S+)}', $branch, $match)) { $this->rootIdentifier = $match[1]; break; } } } } return $this->rootIdentifier; } /** * {@inheritDoc} */ public function getUrl() { return $this->url; } /** * {@inheritDoc} */ public function getSource($identifier) { return array('type' => 'git', 'url' => $this->getUrl(), 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { return null; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { $resource = sprintf('%s:%s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); $this->process->execute(sprintf('git show %s', $resource), $content, $this->repoDir); if (!trim($content)) { return null; } return $content; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { $this->process->execute(sprintf( 'git -c log.showSignature=false log -1 --format=%%at %s', ProcessExecutor::escape($identifier) ), $output, $this->repoDir); return new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); } /** * {@inheritDoc} */ public function getTags() { if (null === $this->tags) { $this->tags = array(); $this->process->execute('git show-ref --tags --dereference', $output, $this->repoDir); foreach ($output = $this->process->splitLines($output) as $tag) { if ($tag && preg_match('{^([a-f0-9]{40}) refs/tags/(\S+?)(\^\{\})?$}', $tag, $match)) { $this->tags[$match[2]] = $match[1]; } } } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if (null === $this->branches) { $branches = array(); $this->process->execute('git branch --no-color --no-abbrev -v', $output, $this->repoDir); foreach ($this->process->splitLines($output) as $branch) { if ($branch && !preg_match('{^ *[^/]+/HEAD }', $branch)) { if (preg_match('{^(?:\* )? *(\S+) *([a-f0-9]+)(?: .*)?$}', $branch, $match)) { $branches[$match[1]] = $match[2]; } } } $this->branches = $branches; } return $this->branches; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (preg_match('#(^git://|\.git/?$|git(?:olite)?@|//git\.|//github.com/)#i', $url)) { return true; } // local filesystem if (Filesystem::isLocalPath($url)) { $url = Filesystem::getPlatformPath($url); if (!is_dir($url)) { return false; } $process = new ProcessExecutor($io); // check whether there is a git repo in that path if ($process->execute('git tag', $output, $url) === 0) { return true; } } if (!$deep) { return false; } $gitUtil = new GitUtil($io, $config, new ProcessExecutor($io), new Filesystem()); GitUtil::cleanEnv(); try { $gitUtil->runCommand(function ($url) { return 'git ls-remote --heads -- ' . ProcessExecutor::escape($url); }, $url, sys_get_temp_dir()); } catch (\RuntimeException $e) { return false; } return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Cache; use Composer\Downloader\TransportException; use Composer\Config; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Util\ProcessExecutor; use Composer\Util\HttpDownloader; use Composer\Util\Filesystem; use Composer\Util\Http\Response; /** * A driver implementation for driver with authentication interaction. * * @author François Pluchino */ abstract class VcsDriver implements VcsDriverInterface { /** @var string */ protected $url; /** @var string */ protected $originUrl; /** @var array */ protected $repoConfig; /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var ProcessExecutor */ protected $process; /** @var HttpDownloader */ protected $httpDownloader; /** @var array */ protected $infoCache = array(); /** @var Cache */ protected $cache; /** * Constructor. * * @param array $repoConfig The repository configuration * @param IOInterface $io The IO instance * @param Config $config The composer configuration * @param HttpDownloader $httpDownloader Remote Filesystem, injectable for mocking * @param ProcessExecutor $process Process instance, injectable for mocking */ final public function __construct(array $repoConfig, IOInterface $io, Config $config, HttpDownloader $httpDownloader, ProcessExecutor $process) { if (Filesystem::isLocalPath($repoConfig['url'])) { $repoConfig['url'] = Filesystem::getPlatformPath($repoConfig['url']); } $this->url = $repoConfig['url']; $this->originUrl = $repoConfig['url']; $this->repoConfig = $repoConfig; $this->io = $io; $this->config = $config; $this->httpDownloader = $httpDownloader; $this->process = $process; } /** * Returns whether or not the given $identifier should be cached or not. * * @param string $identifier * @return bool */ protected function shouldCache($identifier) { return $this->cache && preg_match('{^[a-f0-9]{40}$}iD', $identifier); } /** * {@inheritdoc} */ public function getComposerInformation($identifier) { if (!isset($this->infoCache[$identifier])) { if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { return $this->infoCache[$identifier] = JsonFile::parseJson($res); } $composer = $this->getBaseComposerInformation($identifier); if ($this->shouldCache($identifier)) { $this->cache->write($identifier, json_encode($composer)); } $this->infoCache[$identifier] = $composer; } return $this->infoCache[$identifier]; } protected function getBaseComposerInformation($identifier) { $composerFileContent = $this->getFileContent('composer.json', $identifier); if (!$composerFileContent) { return null; } $composer = JsonFile::parseJson($composerFileContent, $identifier . ':composer.json'); if (empty($composer['time']) && $changeDate = $this->getChangeDate($identifier)) { $composer['time'] = $changeDate->format(DATE_RFC3339); } return $composer; } /** * {@inheritDoc} */ public function hasComposerFile($identifier) { try { return (bool) $this->getComposerInformation($identifier); } catch (TransportException $e) { } return false; } /** * Get the https or http protocol depending on SSL support. * * Call this only if you know that the server supports both. * * @return string The correct type of protocol */ protected function getScheme() { if (extension_loaded('openssl')) { return 'https'; } return 'http'; } /** * Get the remote content. * * @param string $url The URL of content * * @return Response */ protected function getContents($url) { $options = isset($this->repoConfig['options']) ? $this->repoConfig['options'] : array(); return $this->httpDownloader->get($url, $options); } /** * {@inheritDoc} */ public function cleanup() { return; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\Cache; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Downloader\TransportException; use Composer\Util\HttpDownloader; use Composer\Util\GitLab; use Composer\Util\Http\Response; /** * Driver for GitLab API, use the Git driver for local checkouts. * * @author Henrik Bjørnskov * @author Jérôme Tamarelle */ class GitLabDriver extends VcsDriver { private $scheme; private $namespace; private $repository; /** * @var array Project data returned by GitLab API */ private $project; /** * @var array Keeps commits returned by GitLab API */ private $commits = array(); /** * @var array List of tag => reference */ private $tags; /** * @var array List of branch => reference */ private $branches; /** * Git Driver * * @var GitDriver */ protected $gitDriver; /** * Defaults to true unless we can make sure it is public * * @var bool defines whether the repo is private or not */ private $isPrivate = true; /** * @var bool true if the origin has a port number or a path component in it */ private $hasNonstandardOrigin = false; const URL_REGEX = '#^(?:(?Phttps?)://(?P.+?)(?::(?P[0-9]+))?/|git@(?P[^:]+):)(?P.+)/(?P[^/]+?)(?:\.git|/)?$#'; /** * Extracts information from the repository url. * * SSH urls use https by default. Set "secure-http": false on the repository config to use http instead. * * {@inheritDoc} */ public function initialize() { if (!preg_match(self::URL_REGEX, $this->url, $match)) { throw new \InvalidArgumentException('The URL provided is invalid. It must be the HTTP URL of a GitLab project.'); } $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; $configuredDomains = $this->config->get('gitlab-domains'); $urlParts = explode('/', $match['parts']); $this->scheme = !empty($match['scheme']) ? $match['scheme'] : (isset($this->repoConfig['secure-http']) && $this->repoConfig['secure-http'] === false ? 'http' : 'https') ; $this->originUrl = self::determineOrigin($configuredDomains, $guessedDomain, $urlParts, $match['port']); if (false !== strpos($this->originUrl, ':') || false !== strpos($this->originUrl, '/')) { $this->hasNonstandardOrigin = true; } $this->namespace = implode('/', $urlParts); $this->repository = preg_replace('#(\.git)$#', '', $match['repo']); $this->cache = new Cache($this->io, $this->config->get('cache-repo-dir').'/'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository); $this->cache->setReadOnly($this->config->get('cache-read-only')); $this->fetchProject(); } /** * Updates the HttpDownloader instance. * Mainly useful for tests. * * @internal */ public function setHttpDownloader(HttpDownloader $httpDownloader) { $this->httpDownloader = $httpDownloader; } /** * {@inheritDoc} */ public function getComposerInformation($identifier) { if ($this->gitDriver) { return $this->gitDriver->getComposerInformation($identifier); } if (!isset($this->infoCache[$identifier])) { if ($this->shouldCache($identifier) && $res = $this->cache->read($identifier)) { $composer = JsonFile::parseJson($res); } else { $composer = $this->getBaseComposerInformation($identifier); if ($this->shouldCache($identifier)) { $this->cache->write($identifier, json_encode($composer)); } } if ($composer) { // specials for gitlab (this data is only available if authentication is provided) if (!isset($composer['support']['issues']) && isset($this->project['_links']['issues'])) { $composer['support']['issues'] = $this->project['_links']['issues']; } if (!isset($composer['abandoned']) && !empty($this->project['archived'])) { $composer['abandoned'] = true; } } $this->infoCache[$identifier] = $composer; } return $this->infoCache[$identifier]; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { if ($this->gitDriver) { return $this->gitDriver->getFileContent($file, $identifier); } // Convert the root identifier to a cacheable commit id if (!preg_match('{[a-f0-9]{40}}i', $identifier)) { $branches = $this->getBranches(); if (isset($branches[$identifier])) { $identifier = $branches[$identifier]; } } $resource = $this->getApiUrl().'/repository/files/'.$this->urlEncodeAll($file).'/raw?ref='.$identifier; try { $content = $this->getContents($resource)->getBody(); } catch (TransportException $e) { if ($e->getCode() !== 404) { throw $e; } return null; } return $content; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { if ($this->gitDriver) { return $this->gitDriver->getChangeDate($identifier); } if (isset($this->commits[$identifier])) { return new \DateTime($this->commits[$identifier]['committed_date']); } return new \DateTime(); } /** * {@inheritDoc} */ public function getRepositoryUrl() { return $this->isPrivate ? $this->project['ssh_url_to_repo'] : $this->project['http_url_to_repo']; } /** * {@inheritDoc} */ public function getUrl() { if ($this->gitDriver) { return $this->gitDriver->getUrl(); } return $this->project['web_url']; } /** * {@inheritDoc} */ public function getDist($identifier) { $url = $this->getApiUrl().'/repository/archive.zip?sha='.$identifier; return array('type' => 'zip', 'url' => $url, 'reference' => $identifier, 'shasum' => ''); } /** * {@inheritDoc} */ public function getSource($identifier) { if ($this->gitDriver) { return $this->gitDriver->getSource($identifier); } return array('type' => 'git', 'url' => $this->getRepositoryUrl(), 'reference' => $identifier); } /** * {@inheritDoc} */ public function getRootIdentifier() { if ($this->gitDriver) { return $this->gitDriver->getRootIdentifier(); } return $this->project['default_branch']; } /** * {@inheritDoc} */ public function getBranches() { if ($this->gitDriver) { return $this->gitDriver->getBranches(); } if (!$this->branches) { $this->branches = $this->getReferences('branches'); } return $this->branches; } /** * {@inheritDoc} */ public function getTags() { if ($this->gitDriver) { return $this->gitDriver->getTags(); } if (!$this->tags) { $this->tags = $this->getReferences('tags'); } return $this->tags; } /** * @return string Base URL for GitLab API v3 */ public function getApiUrl() { return $this->scheme.'://'.$this->originUrl.'/api/v4/projects/'.$this->urlEncodeAll($this->namespace).'%2F'.$this->urlEncodeAll($this->repository); } /** * Urlencode all non alphanumeric characters. rawurlencode() can not be used as it does not encode `.` * * @param string $string * @return string */ private function urlEncodeAll($string) { $encoded = ''; for ($i = 0; isset($string[$i]); $i++) { $character = $string[$i]; if (!ctype_alnum($character) && !in_array($character, array('-', '_'), true)) { $character = '%' . sprintf('%02X', ord($character)); } $encoded .= $character; } return $encoded; } /** * @param string $type * * @return string[] where keys are named references like tags or branches and the value a sha */ protected function getReferences($type) { $perPage = 100; $resource = $this->getApiUrl().'/repository/'.$type.'?per_page='.$perPage; $references = array(); do { $response = $this->getContents($resource); $data = $response->decodeJson(); foreach ($data as $datum) { $references[$datum['name']] = $datum['commit']['id']; // Keep the last commit date of a reference to avoid // unnecessary API call when retrieving the composer file. $this->commits[$datum['commit']['id']] = $datum['commit']; } if (count($data) >= $perPage) { $resource = $this->getNextPage($response); } else { $resource = false; } } while ($resource); return $references; } protected function fetchProject() { // we need to fetch the default branch from the api $resource = $this->getApiUrl(); $this->project = $this->getContents($resource, true)->decodeJson(); if (isset($this->project['visibility'])) { $this->isPrivate = $this->project['visibility'] !== 'public'; } else { // client is not authendicated, therefore repository has to be public $this->isPrivate = false; } } protected function attemptCloneFallback() { if ($this->isPrivate === false) { $url = $this->generatePublicUrl(); } else { $url = $this->generateSshUrl(); } try { // If this repository may be private and we // cannot ask for authentication credentials (because we // are not interactive) then we fallback to GitDriver. $this->setupGitDriver($url); return true; } catch (\RuntimeException $e) { $this->gitDriver = null; $this->io->writeError('Failed to clone the '.$url.' repository, try running in interactive mode so that you can enter your credentials'); throw $e; } } /** * Generate an SSH URL * * @return string */ protected function generateSshUrl() { if ($this->hasNonstandardOrigin) { return 'ssh://git@'.$this->originUrl.'/'.$this->namespace.'/'.$this->repository.'.git'; } return 'git@' . $this->originUrl . ':'.$this->namespace.'/'.$this->repository.'.git'; } protected function generatePublicUrl() { return $this->scheme . '://' . $this->originUrl . '/'.$this->namespace.'/'.$this->repository.'.git'; } protected function setupGitDriver($url) { $this->gitDriver = new GitDriver( array('url' => $url), $this->io, $this->config, $this->httpDownloader, $this->process ); $this->gitDriver->initialize(); } /** * {@inheritDoc} */ protected function getContents($url, $fetchingRepoData = false) { try { $response = parent::getContents($url); if ($fetchingRepoData) { $json = $response->decodeJson(); // Accessing the API with a token with Guest (10) access will return // more data than unauthenticated access but no default_branch data // accessing files via the API will then also fail if (!isset($json['default_branch']) && isset($json['permissions'])) { $this->isPrivate = $json['visibility'] !== 'public'; $moreThanGuestAccess = false; // Check both access levels (e.g. project, group) // - value will be null if no access is set // - value will be array with key access_level if set foreach ($json['permissions'] as $permission) { if ($permission && $permission['access_level'] > 10) { $moreThanGuestAccess = true; } } if (!$moreThanGuestAccess) { $this->io->writeError('GitLab token with Guest only access detected'); return $this->attemptCloneFallback(); } } // force auth as the unauthenticated version of the API is broken if (!isset($json['default_branch'])) { if (!empty($json['id'])) { $this->isPrivate = false; } throw new TransportException('GitLab API seems to not be authenticated as it did not return a default_branch', 401); } } return $response; } catch (TransportException $e) { $gitLabUtil = new GitLab($this->io, $this->config, $this->process, $this->httpDownloader); switch ($e->getCode()) { case 401: case 404: // try to authorize only if we are fetching the main /repos/foo/bar data, otherwise it must be a real 404 if (!$fetchingRepoData) { throw $e; } if ($gitLabUtil->authorizeOAuth($this->originUrl)) { return parent::getContents($url); } if (!$this->io->isInteractive()) { if ($this->attemptCloneFallback()) { return new Response(array('url' => 'dummy'), 200, array(), 'null'); } } $this->io->writeError('Failed to download ' . $this->namespace . '/' . $this->repository . ':' . $e->getMessage() . ''); $gitLabUtil->authorizeOAuthInteractively($this->scheme, $this->originUrl, 'Your credentials are required to fetch private repository metadata ('.$this->url.')'); return parent::getContents($url); case 403: if (!$this->io->hasAuthentication($this->originUrl) && $gitLabUtil->authorizeOAuth($this->originUrl)) { return parent::getContents($url); } if (!$this->io->isInteractive() && $fetchingRepoData) { if ($this->attemptCloneFallback()) { return new Response(array('url' => 'dummy'), 200, array(), 'null'); } } throw $e; default: throw $e; } } } /** * Uses the config `gitlab-domains` to see if the driver supports the url for the * repository given. * * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (!preg_match(self::URL_REGEX, $url, $match)) { return false; } $scheme = !empty($match['scheme']) ? $match['scheme'] : null; $guessedDomain = !empty($match['domain']) ? $match['domain'] : $match['domain2']; $urlParts = explode('/', $match['parts']); if (false === self::determineOrigin((array) $config->get('gitlab-domains'), $guessedDomain, $urlParts, $match['port'])) { return false; } if ('https' === $scheme && !extension_loaded('openssl')) { $io->writeError('Skipping GitLab driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); return false; } return true; } protected function getNextPage(Response $response) { $header = $response->getHeader('link'); $links = explode(',', $header); foreach ($links as $link) { if (preg_match('{<(.+?)>; *rel="next"}', $link, $match)) { return $match[1]; } } } /** * @param array $configuredDomains * @param string $guessedDomain * @param array $urlParts * @return bool|string */ private static function determineOrigin(array $configuredDomains, $guessedDomain, array &$urlParts, $portNumber) { $guessedDomain = strtolower($guessedDomain); if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array($guessedDomain.':'.$portNumber, $configuredDomains))) { if ($portNumber) { return $guessedDomain.':'.$portNumber; } return $guessedDomain; } if ($portNumber) { $guessedDomain .= ':'.$portNumber; } while (null !== ($part = array_shift($urlParts))) { $guessedDomain .= '/' . $part; if (in_array($guessedDomain, $configuredDomains) || ($portNumber && in_array(preg_replace('{:\d+}', '', $guessedDomain), $configuredDomains))) { return $guessedDomain; } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\Cache; use Composer\IO\IOInterface; use Composer\Util\ProcessExecutor; use Composer\Util\Perforce; /** * @author Matt Whittom */ class PerforceDriver extends VcsDriver { protected $depot; protected $branch; /** @var Perforce */ protected $perforce; /** * {@inheritDoc} */ public function initialize() { $this->depot = $this->repoConfig['depot']; $this->branch = ''; if (!empty($this->repoConfig['branch'])) { $this->branch = $this->repoConfig['branch']; } $this->initPerforce($this->repoConfig); $this->perforce->p4Login(); $this->perforce->checkStream(); $this->perforce->writeP4ClientSpec(); $this->perforce->connectClient(); return true; } private function initPerforce($repoConfig) { if (!empty($this->perforce)) { return; } if (!Cache::isUsable($this->config->get('cache-vcs-dir'))) { throw new \RuntimeException('PerforceDriver requires a usable cache directory, and it looks like you set it to be disabled'); } $repoDir = $this->config->get('cache-vcs-dir') . '/' . $this->depot; $this->perforce = Perforce::create($repoConfig, $this->getUrl(), $repoDir, $this->process, $this->io); } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { return $this->perforce->getFileContent($file, $identifier); } /** * {@inheritdoc} */ public function getChangeDate($identifier) { return null; } /** * {@inheritDoc} */ public function getRootIdentifier() { return $this->branch; } /** * {@inheritDoc} */ public function getBranches() { return $this->perforce->getBranches(); } /** * {@inheritDoc} */ public function getTags() { return $this->perforce->getTags(); } /** * {@inheritDoc} */ public function getDist($identifier) { return null; } /** * {@inheritDoc} */ public function getSource($identifier) { return array( 'type' => 'perforce', 'url' => $this->repoConfig['url'], 'reference' => $identifier, 'p4user' => $this->perforce->getUser(), ); } /** * {@inheritDoc} */ public function getUrl() { return $this->url; } /** * {@inheritDoc} */ public function hasComposerFile($identifier) { $composerInfo = $this->perforce->getComposerInformation('//' . $this->depot . '/' . $identifier); return !empty($composerInfo); } /** * {@inheritDoc} */ public function getContents($url) { return false; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if ($deep || preg_match('#\b(perforce|p4)\b#i', $url)) { return Perforce::checkServerExists($url, new ProcessExecutor($io)); } return false; } /** * {@inheritDoc} */ public function cleanup() { $this->perforce->cleanupClientSpec(); $this->perforce = null; } public function getDepot() { return $this->depot; } public function getBranch() { return $this->branch; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\IO\IOInterface; /** * @author Per Bernhardt */ class GitBitbucketDriver extends BitbucketDriver { /** * {@inheritDoc} */ public function getRootIdentifier() { if ($this->fallbackDriver) { return $this->fallbackDriver->getRootIdentifier(); } if (null === $this->rootIdentifier) { if (!$this->getRepoData()) { return $this->fallbackDriver->getRootIdentifier(); } if ($this->vcsType !== 'git') { throw new \RuntimeException( $this->url.' does not appear to be a git repository, use '. $this->cloneHttpsUrl.' if this is a mercurial bitbucket repository' ); } $mainBranchData = $this->getMainBranchData(); $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'master'; } return $this->rootIdentifier; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (!preg_match('#^https?://bitbucket\.org/([^/]+)/(.+?)\.git$#i', $url)) { return false; } if (!extension_loaded('openssl')) { $io->writeError('Skipping Bitbucket git driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); return false; } return true; } /** * {@inheritdoc} */ protected function setupFallbackDriver($url) { $this->fallbackDriver = new GitDriver( array('url' => $url), $this->io, $this->config, $this->httpDownloader, $this->process ); $this->fallbackDriver->initialize(); } /** * {@inheritdoc} */ protected function generateSshUrl() { return 'git@' . $this->originUrl . ':' . $this->owner.'/'.$this->repository.'.git'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Config; use Composer\IO\IOInterface; /** * @author Per Bernhardt */ class HgBitbucketDriver extends BitbucketDriver { /** * {@inheritDoc} */ public function getRootIdentifier() { if ($this->fallbackDriver) { return $this->fallbackDriver->getRootIdentifier(); } if (null === $this->rootIdentifier) { if (!$this->getRepoData()) { return $this->fallbackDriver->getRootIdentifier(); } if ($this->vcsType !== 'hg') { throw new \RuntimeException( $this->url.' does not appear to be a mercurial repository, use '. $this->cloneHttpsUrl.' if this is a git bitbucket repository' ); } $mainBranchData = $this->getMainBranchData(); $this->rootIdentifier = !empty($mainBranchData['name']) ? $mainBranchData['name'] : 'default'; } return $this->rootIdentifier; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (!preg_match('#^https?://bitbucket\.org/([^/]+)/([^/]+)/?$#i', $url)) { return false; } if (!extension_loaded('openssl')) { $io->writeError('Skipping Bitbucket hg driver for '.$url.' because the OpenSSL PHP extension is missing.', true, IOInterface::VERBOSE); return false; } return true; } /** * {@inheritdoc} */ protected function setupFallbackDriver($url) { $this->fallbackDriver = new HgDriver( array('url' => $url), $this->io, $this->config, $this->httpDownloader, $this->process ); $this->fallbackDriver->initialize(); } /** * {@inheritdoc} */ protected function generateSshUrl() { return 'ssh://hg@' . $this->originUrl . '/' . $this->owner.'/'.$this->repository; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository\Vcs; use Composer\Cache; use Composer\Config; use Composer\Util\ProcessExecutor; use Composer\Util\Filesystem; use Composer\IO\IOInterface; /** * @author BohwaZ */ class FossilDriver extends VcsDriver { protected $tags; protected $branches; protected $rootIdentifier; protected $repoFile; protected $checkoutDir; /** * {@inheritDoc} */ public function initialize() { // Make sure fossil is installed and reachable. $this->checkFossil(); // Ensure we are allowed to use this URL by config. $this->config->prohibitUrlByConfig($this->url, $this->io); // Only if url points to a locally accessible directory, assume it's the checkout directory. // Otherwise, it should be something fossil can clone from. if (Filesystem::isLocalPath($this->url) && is_dir($this->url)) { $this->checkoutDir = $this->url; } else { if (!Cache::isUsable($this->config->get('cache-repo-dir')) || !Cache::isUsable($this->config->get('cache-vcs-dir'))) { throw new \RuntimeException('FossilDriver requires a usable cache directory, and it looks like you set it to be disabled'); } $localName = preg_replace('{[^a-z0-9]}i', '-', $this->url); $this->repoFile = $this->config->get('cache-repo-dir') . '/' . $localName . '.fossil'; $this->checkoutDir = $this->config->get('cache-vcs-dir') . '/' . $localName . '/'; $this->updateLocalRepo(); } $this->getTags(); $this->getBranches(); } /** * Check that fossil can be invoked via command line. */ protected function checkFossil() { if (0 !== $this->process->execute('fossil version', $ignoredOutput)) { throw new \RuntimeException("fossil was not found, check that it is installed and in your PATH env.\n\n" . $this->process->getErrorOutput()); } } /** * Clone or update existing local fossil repository. */ protected function updateLocalRepo() { $fs = new Filesystem(); $fs->ensureDirectoryExists($this->checkoutDir); if (!is_writable(dirname($this->checkoutDir))) { throw new \RuntimeException('Can not clone '.$this->url.' to access package information. The "'.$this->checkoutDir.'" directory is not writable by the current user.'); } // update the repo if it is a valid fossil repository if (is_file($this->repoFile) && is_dir($this->checkoutDir) && 0 === $this->process->execute('fossil info', $output, $this->checkoutDir)) { if (0 !== $this->process->execute('fossil pull', $output, $this->checkoutDir)) { $this->io->writeError('Failed to update '.$this->url.', package information from this repository may be outdated ('.$this->process->getErrorOutput().')'); } } else { // clean up directory and do a fresh clone into it $fs->removeDirectory($this->checkoutDir); $fs->remove($this->repoFile); $fs->ensureDirectoryExists($this->checkoutDir); if (0 !== $this->process->execute(sprintf('fossil clone -- %s %s', ProcessExecutor::escape($this->url), ProcessExecutor::escape($this->repoFile)), $output)) { $output = $this->process->getErrorOutput(); throw new \RuntimeException('Failed to clone '.$this->url.' to repository ' . $this->repoFile . "\n\n" .$output); } if (0 !== $this->process->execute(sprintf('fossil open --nested -- %s', ProcessExecutor::escape($this->repoFile)), $output, $this->checkoutDir)) { $output = $this->process->getErrorOutput(); throw new \RuntimeException('Failed to open repository '.$this->repoFile.' in ' . $this->checkoutDir . "\n\n" .$output); } } } /** * {@inheritDoc} */ public function getRootIdentifier() { if (null === $this->rootIdentifier) { $this->rootIdentifier = 'trunk'; } return $this->rootIdentifier; } /** * {@inheritDoc} */ public function getUrl() { return $this->url; } /** * {@inheritDoc} */ public function getSource($identifier) { return array('type' => 'fossil', 'url' => $this->getUrl(), 'reference' => $identifier); } /** * {@inheritDoc} */ public function getDist($identifier) { return null; } /** * {@inheritdoc} */ public function getFileContent($file, $identifier) { $command = sprintf('fossil cat -r %s -- %s', ProcessExecutor::escape($identifier), ProcessExecutor::escape($file)); $this->process->execute($command, $content, $this->checkoutDir); if (!trim($content)) { return null; } return $content; } /** * {@inheritdoc} */ public function getChangeDate($identifier) { $this->process->execute('fossil finfo -b -n 1 composer.json', $output, $this->checkoutDir); list(, $date) = explode(' ', trim($output), 3); return new \DateTime($date, new \DateTimeZone('UTC')); } /** * {@inheritDoc} */ public function getTags() { if (null === $this->tags) { $tags = array(); $this->process->execute('fossil tag list', $output, $this->checkoutDir); foreach ($this->process->splitLines($output) as $tag) { $tags[$tag] = $tag; } $this->tags = $tags; } return $this->tags; } /** * {@inheritDoc} */ public function getBranches() { if (null === $this->branches) { $branches = array(); $this->process->execute('fossil branch list', $output, $this->checkoutDir); foreach ($this->process->splitLines($output) as $branch) { $branch = trim(preg_replace('/^\*/', '', trim($branch))); $branches[$branch] = $branch; } $this->branches = $branches; } return $this->branches; } /** * {@inheritDoc} */ public static function supports(IOInterface $io, Config $config, $url, $deep = false) { if (preg_match('#(^(?:https?|ssh)://(?:[^@]@)?(?:chiselapp\.com|fossil\.))#i', $url)) { return true; } if (preg_match('!/fossil/|\.fossil!', $url)) { return true; } // local filesystem if (Filesystem::isLocalPath($url)) { $url = Filesystem::getPlatformPath($url); if (!is_dir($url)) { return false; } $process = new ProcessExecutor($io); // check whether there is a fossil repo in that path if ($process->execute('fossil info', $output, $url) === 0) { return true; } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\AliasPackage; use Composer\Package\PackageInterface; use Composer\Package\CompletePackageInterface; use Composer\Package\Version\VersionParser; use Composer\Package\Version\StabilityFilter; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\Constraint; /** * A repository implementation that simply stores packages in an array * * @author Nils Adermann */ class ArrayRepository implements RepositoryInterface { /** @var PackageInterface[] */ protected $packages; /** * @var PackageInterface[] indexed by package unique name and used to cache hasPackage calls */ protected $packageMap; public function __construct(array $packages = array()) { foreach ($packages as $package) { $this->addPackage($package); } } public function getRepoName() { return 'array repo (defining '.$this->count().' package'.($this->count() > 1 ? 's' : '').')'; } /** * {@inheritDoc} */ public function loadPackages(array $packageMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = array()) { $packages = $this->getPackages(); $result = array(); $namesFound = array(); foreach ($packages as $package) { if (array_key_exists($package->getName(), $packageMap)) { if ( (!$packageMap[$package->getName()] || $packageMap[$package->getName()]->matches(new Constraint('==', $package->getVersion()))) && StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, $package->getNames(), $package->getStability()) && !isset($alreadyLoaded[$package->getName()][$package->getVersion()]) ) { // add selected packages which match stability requirements $result[spl_object_hash($package)] = $package; // add the aliased package for packages where the alias matches if ($package instanceof AliasPackage && !isset($result[spl_object_hash($package->getAliasOf())])) { $result[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); } } $namesFound[$package->getName()] = true; } } // add aliases of packages that were selected, even if the aliases did not match foreach ($packages as $package) { if ($package instanceof AliasPackage) { if (isset($result[spl_object_hash($package->getAliasOf())])) { $result[spl_object_hash($package)] = $package; } } } return array('namesFound' => array_keys($namesFound), 'packages' => $result); } /** * {@inheritDoc} */ public function findPackage($name, $constraint) { $name = strtolower($name); if (!$constraint instanceof ConstraintInterface) { $versionParser = new VersionParser(); $constraint = $versionParser->parseConstraints($constraint); } foreach ($this->getPackages() as $package) { if ($name === $package->getName()) { $pkgConstraint = new Constraint('==', $package->getVersion()); if ($constraint->matches($pkgConstraint)) { return $package; } } } return null; } /** * {@inheritDoc} */ public function findPackages($name, $constraint = null) { // normalize name $name = strtolower($name); $packages = array(); if (null !== $constraint && !$constraint instanceof ConstraintInterface) { $versionParser = new VersionParser(); $constraint = $versionParser->parseConstraints($constraint); } foreach ($this->getPackages() as $package) { if ($name === $package->getName()) { if (null === $constraint || $constraint->matches(new Constraint('==', $package->getVersion()))) { $packages[] = $package; } } } return $packages; } /** * {@inheritDoc} */ public function search($query, $mode = 0, $type = null) { $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; $matches = array(); foreach ($this->getPackages() as $package) { $name = $package->getName(); if (isset($matches[$name])) { continue; } if (preg_match($regex, $name) || ($mode === self::SEARCH_FULLTEXT && $package instanceof CompletePackageInterface && preg_match($regex, implode(' ', (array) $package->getKeywords()) . ' ' . $package->getDescription())) ) { if (null !== $type && $package->getType() !== $type) { continue; } $matches[$name] = array( 'name' => $package->getPrettyName(), 'description' => $package instanceof CompletePackageInterface ? $package->getDescription() : null, ); } } return array_values($matches); } /** * {@inheritDoc} */ public function hasPackage(PackageInterface $package) { if ($this->packageMap === null) { $this->packageMap = array(); foreach ($this->getPackages() as $repoPackage) { $this->packageMap[$repoPackage->getUniqueName()] = $repoPackage; } } return isset($this->packageMap[$package->getUniqueName()]); } /** * Adds a new package to the repository * * @param PackageInterface $package */ public function addPackage(PackageInterface $package) { if (null === $this->packages) { $this->initialize(); } $package->setRepository($this); $this->packages[] = $package; if ($package instanceof AliasPackage) { $aliasedPackage = $package->getAliasOf(); if (null === $aliasedPackage->getRepository()) { $this->addPackage($aliasedPackage); } } // invalidate package map cache $this->packageMap = null; } /** * {@inheritDoc} */ public function getProviders($packageName) { $result = array(); foreach ($this->getPackages() as $candidate) { if (isset($result[$candidate->getName()])) { continue; } foreach ($candidate->getProvides() as $link) { if ($packageName === $link->getTarget()) { $result[$candidate->getName()] = array( 'name' => $candidate->getName(), 'description' => $candidate->getDescription(), 'type' => $candidate->getType(), ); continue 2; } } } return $result; } protected function createAliasPackage(PackageInterface $package, $alias, $prettyAlias) { return new AliasPackage($package instanceof AliasPackage ? $package->getAliasOf() : $package, $alias, $prettyAlias); } /** * Removes package from repository. * * @param PackageInterface $package package instance */ public function removePackage(PackageInterface $package) { $packageId = $package->getUniqueName(); foreach ($this->getPackages() as $key => $repoPackage) { if ($packageId === $repoPackage->getUniqueName()) { array_splice($this->packages, $key, 1); // invalidate package map cache $this->packageMap = null; return; } } } /** * {@inheritDoc} */ public function getPackages() { if (null === $this->packages) { $this->initialize(); } return $this->packages; } /** * Returns the number of packages in this repository * * @return int Number of packages */ public function count() { if (null === $this->packages) { $this->initialize(); } return count($this->packages); } /** * Initializes the packages array. Mostly meant as an extension point. */ protected function initialize() { $this->packages = array(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Lock array repository. * * Regular array repository, only uses a different type to identify the lock file as the source of info * * @author Nils Adermann */ class LockArrayRepository extends ArrayRepository { public function getRepoName() { return 'lock repo'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\IO\IOInterface; use Composer\Config; use Composer\EventDispatcher\EventDispatcher; use Composer\Package\PackageInterface; use Composer\Util\HttpDownloader; use Composer\Util\ProcessExecutor; /** * Repositories manager. * * @author Jordi Boggiano * @author Konstantin Kudryashov * @author François Pluchino */ class RepositoryManager { /** @var InstalledRepositoryInterface */ private $localRepository; /** @var list */ private $repositories = array(); /** @var array */ private $repositoryClasses = array(); /** @var IOInterface */ private $io; /** @var Config */ private $config; /** @var HttpDownloader */ private $httpDownloader; /** @var ?EventDispatcher */ private $eventDispatcher; /** @var ProcessExecutor */ private $process; public function __construct(IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $eventDispatcher = null, ProcessExecutor $process = null) { $this->io = $io; $this->config = $config; $this->httpDownloader = $httpDownloader; $this->eventDispatcher = $eventDispatcher; $this->process = $process ?: new ProcessExecutor($io); } /** * Searches for a package by it's name and version in managed repositories. * * @param string $name package name * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against * * @return PackageInterface|null */ public function findPackage($name, $constraint) { foreach ($this->repositories as $repository) { /** @var RepositoryInterface $repository */ if ($package = $repository->findPackage($name, $constraint)) { return $package; } } return null; } /** * Searches for all packages matching a name and optionally a version in managed repositories. * * @param string $name package name * @param string|\Composer\Semver\Constraint\ConstraintInterface $constraint package version or version constraint to match against * * @return PackageInterface[] */ public function findPackages($name, $constraint) { $packages = array(); foreach ($this->getRepositories() as $repository) { $packages = array_merge($packages, $repository->findPackages($name, $constraint)); } return $packages; } /** * Adds repository * * @param RepositoryInterface $repository repository instance */ public function addRepository(RepositoryInterface $repository) { $this->repositories[] = $repository; } /** * Adds a repository to the beginning of the chain * * This is useful when injecting additional repositories that should trump Packagist, e.g. from a plugin. * * @param RepositoryInterface $repository repository instance */ public function prependRepository(RepositoryInterface $repository) { array_unshift($this->repositories, $repository); } /** * Returns a new repository for a specific installation type. * * @param string $type repository type * @param array $config repository configuration * @param string $name repository name * @throws \InvalidArgumentException if repository for provided type is not registered * @return RepositoryInterface */ public function createRepository($type, $config, $name = null) { if (!isset($this->repositoryClasses[$type])) { throw new \InvalidArgumentException('Repository type is not registered: '.$type); } if (isset($config['packagist']) && false === $config['packagist']) { $this->io->writeError('Repository "'.$name.'" ('.json_encode($config).') has a packagist key which should be in its own repository definition'); } $class = $this->repositoryClasses[$type]; if (isset($config['only']) || isset($config['exclude']) || isset($config['canonical'])) { $filterConfig = $config; unset($config['only'], $config['exclude'], $config['canonical']); } $repository = new $class($config, $this->io, $this->config, $this->httpDownloader, $this->eventDispatcher, $this->process); if (isset($filterConfig)) { $repository = new FilterRepository($repository, $filterConfig); } return $repository; } /** * Stores repository class for a specific installation type. * * @param string $type installation type * @param string $class class name of the repo implementation */ public function setRepositoryClass($type, $class) { $this->repositoryClasses[$type] = $class; } /** * Returns all repositories, except local one. * * @return RepositoryInterface[] */ public function getRepositories() { return $this->repositories; } /** * Sets local repository for the project. * * @param InstalledRepositoryInterface $repository repository instance */ public function setLocalRepository(InstalledRepositoryInterface $repository) { $this->localRepository = $repository; } /** * Returns local repository for the project. * * @return InstalledRepositoryInterface */ public function getLocalRepository() { return $this->localRepository; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\PackageInterface; use Composer\Installer\InstallationManager; /** * Writable repository interface. * * @author Konstantin Kudryashov */ interface WritableRepositoryInterface extends RepositoryInterface { /** * Writes repository (f.e. to the disc). * * @param bool $devMode Whether dev requirements were included or not in this installation */ public function write($devMode, InstallationManager $installationManager); /** * Adds package to the repository. * * @param PackageInterface $package package instance */ public function addPackage(PackageInterface $package); /** * Removes package from the repository. * * @param PackageInterface $package package instance */ public function removePackage(PackageInterface $package); /** * Get unique packages (at most one package of each name), with aliases resolved and removed. * * @return PackageInterface[] */ public function getCanonicalPackages(); /** * Forces a reload of all packages. */ public function reload(); /** * @param string[] $devPackageNames */ public function setDevPackageNames(array $devPackageNames); /** * @return string[] Names of dependencies installed through require-dev */ public function getDevPackageNames(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\RootPackageInterface; /** * Root package repository. * * This is used for serving the RootPackage inside an in-memory InstalledRepository * * @author Jordi Boggiano */ class RootPackageRepository extends ArrayRepository { public function __construct(RootPackageInterface $package) { parent::__construct(array($package)); } public function getRepoName() { return 'root package repo'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Config; use Composer\EventDispatcher\EventDispatcher; use Composer\Util\HttpDownloader; use Composer\Util\ProcessExecutor; use Composer\Json\JsonFile; /** * @author Jordi Boggiano */ class RepositoryFactory { /** * @param IOInterface $io * @param Config $config * @param string $repository * @param bool $allowFilesystem * @return array|mixed */ public static function configFromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false) { if (0 === strpos($repository, 'http')) { $repoConfig = array('type' => 'composer', 'url' => $repository); } elseif ("json" === pathinfo($repository, PATHINFO_EXTENSION)) { $json = new JsonFile($repository, Factory::createHttpDownloader($io, $config)); $data = $json->read(); if (!empty($data['packages']) || !empty($data['includes']) || !empty($data['provider-includes'])) { $repoConfig = array('type' => 'composer', 'url' => 'file://' . strtr(realpath($repository), '\\', '/')); } elseif ($allowFilesystem) { $repoConfig = array('type' => 'filesystem', 'json' => $json); } else { throw new \InvalidArgumentException("Invalid repository URL ($repository) given. This file does not contain a valid composer repository."); } } elseif (strpos($repository, '{') === 0) { // assume it is a json object that makes a repo config $repoConfig = JsonFile::parseJson($repository); } else { throw new \InvalidArgumentException("Invalid repository url ($repository) given. Has to be a .json file, an http url or a JSON object."); } return $repoConfig; } /** * @param IOInterface $io * @param Config $config * @param string $repository * @param bool $allowFilesystem * @return RepositoryInterface */ public static function fromString(IOInterface $io, Config $config, $repository, $allowFilesystem = false, RepositoryManager $rm = null) { $repoConfig = static::configFromString($io, $config, $repository, $allowFilesystem); return static::createRepo($io, $config, $repoConfig, $rm); } /** * @param IOInterface $io * @param Config $config * @param array $repoConfig * @return RepositoryInterface */ public static function createRepo(IOInterface $io, Config $config, array $repoConfig, RepositoryManager $rm = null) { if (!$rm) { $rm = static::manager($io, $config, Factory::createHttpDownloader($io, $config)); } $repos = static::createRepos($rm, array($repoConfig)); return reset($repos); } /** * @param IOInterface|null $io * @param Config|null $config * @param RepositoryManager|null $rm * @return RepositoryInterface[] */ public static function defaultRepos(IOInterface $io = null, Config $config = null, RepositoryManager $rm = null) { if (!$config) { $config = Factory::createConfig($io); } if ($io) { $io->loadConfiguration($config); } if (!$rm) { if (!$io) { throw new \InvalidArgumentException('This function requires either an IOInterface or a RepositoryManager'); } $rm = static::manager($io, $config, Factory::createHttpDownloader($io, $config)); } return static::createRepos($rm, $config->getRepositories()); } /** * @param IOInterface $io * @param Config $config * @param EventDispatcher $eventDispatcher * @param HttpDownloader $httpDownloader * @return RepositoryManager */ public static function manager(IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $eventDispatcher = null, ProcessExecutor $process = null) { $rm = new RepositoryManager($io, $config, $httpDownloader, $eventDispatcher, $process); $rm->setRepositoryClass('composer', 'Composer\Repository\ComposerRepository'); $rm->setRepositoryClass('vcs', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('package', 'Composer\Repository\PackageRepository'); $rm->setRepositoryClass('pear', 'Composer\Repository\PearRepository'); $rm->setRepositoryClass('git', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('git-bitbucket', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('github', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('gitlab', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('svn', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('fossil', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('perforce', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('hg', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('hg-bitbucket', 'Composer\Repository\VcsRepository'); $rm->setRepositoryClass('artifact', 'Composer\Repository\ArtifactRepository'); $rm->setRepositoryClass('path', 'Composer\Repository\PathRepository'); return $rm; } /** * @return RepositoryInterface[] */ private static function createRepos(RepositoryManager $rm, array $repoConfigs) { $repos = array(); foreach ($repoConfigs as $index => $repo) { if (is_string($repo)) { throw new \UnexpectedValueException('"repositories" should be an array of repository definitions, only a single repository was given'); } if (!is_array($repo)) { throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') should be an array, '.gettype($repo).' given'); } if (!isset($repo['type'])) { throw new \UnexpectedValueException('Repository "'.$index.'" ('.json_encode($repo).') must have a type defined'); } $name = self::generateRepositoryName($index, $repo, $repos); if ($repo['type'] === 'filesystem') { $repos[$name] = new FilesystemRepository($repo['json']); } else { $repos[$name] = $rm->createRepository($repo['type'], $repo, $index); } } return $repos; } public static function generateRepositoryName($index, array $repo, array $existingRepos) { $name = is_int($index) && isset($repo['url']) ? preg_replace('{^https?://}i', '', $repo['url']) : $index; while (isset($existingRepos[$name])) { $name .= '2'; } return $name; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Exception thrown when a package repository is utterly broken * * @author Jordi Boggiano */ class InvalidRepositoryException extends \Exception { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Configurable repository interface. * * @author Lukas Homza */ interface ConfigurableRepositoryInterface { public function getRepoConfig(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Json\JsonFile; use Composer\Package\Loader\ArrayLoader; use Composer\Package\RootPackageInterface; use Composer\Package\AliasPackage; use Composer\Package\Dumper\ArrayDumper; use Composer\Installer\InstallationManager; use Composer\Util\Filesystem; /** * Filesystem repository. * * @author Konstantin Kudryashov * @author Jordi Boggiano */ class FilesystemRepository extends WritableArrayRepository { protected $file; private $dumpVersions; private $rootPackage; /** * Initializes filesystem repository. * * @param JsonFile $repositoryFile repository json file * @param bool $dumpVersions * @param ?RootPackageInterface $rootPackage Must be provided if $dumpVersions is true */ public function __construct(JsonFile $repositoryFile, $dumpVersions = false, RootPackageInterface $rootPackage = null) { parent::__construct(); $this->file = $repositoryFile; $this->dumpVersions = $dumpVersions; $this->rootPackage = $rootPackage; if ($dumpVersions && !$rootPackage) { throw new \InvalidArgumentException('Expected a root package instance if $dumpVersions is true'); } } /** * Initializes repository (reads file, or remote address). */ protected function initialize() { parent::initialize(); if (!$this->file->exists()) { return; } try { $data = $this->file->read(); if (isset($data['packages'])) { $packages = $data['packages']; } else { $packages = $data; } if (isset($data['dev-package-names'])) { $this->setDevPackageNames($data['dev-package-names']); } if (!is_array($packages)) { throw new \UnexpectedValueException('Could not parse package list from the repository'); } } catch (\Exception $e) { throw new InvalidRepositoryException('Invalid repository data in '.$this->file->getPath().', packages could not be loaded: ['.get_class($e).'] '.$e->getMessage()); } $loader = new ArrayLoader(null, true); foreach ($packages as $packageData) { $package = $loader->load($packageData); $this->addPackage($package); } } public function reload() { $this->packages = null; $this->initialize(); } /** * Writes writable repository. */ public function write($devMode, InstallationManager $installationManager) { $data = array('packages' => array(), 'dev' => $devMode, 'dev-package-names' => array()); $dumper = new ArrayDumper(); $fs = new Filesystem(); $repoDir = dirname($fs->normalizePath($this->file->getPath())); foreach ($this->getCanonicalPackages() as $package) { $pkgArray = $dumper->dump($package); $path = $installationManager->getInstallPath($package); $pkgArray['install-path'] = ('' !== $path && null !== $path) ? $fs->findShortestPath($repoDir, $fs->isAbsolutePath($path) ? $path : getcwd() . '/' . $path, true) : null; $data['packages'][] = $pkgArray; // only write to the files the names which are really installed, as we receive the full list // of dev package names before they get installed during composer install if (in_array($package->getName(), $this->devPackageNames, true)) { $data['dev-package-names'][] = $package->getName(); } } sort($data['dev-package-names']); usort($data['packages'], function ($a, $b) { return strcmp($a['name'], $b['name']); }); $this->file->write($data); if ($this->dumpVersions) { $versions = $this->generateInstalledVersions($installationManager); $fs->filePutContentsIfModified($repoDir.'/installed.php', 'filePutContentsIfModified($repoDir.'/InstalledVersions.php', $installedVersionsClass); \Composer\InstalledVersions::reload($versions); } } /** * @return ?array */ private function generateInstalledVersions(InstallationManager $installationManager) { if (!$this->dumpVersions) { return null; } $versions = array('versions' => array()); $packages = $this->getPackages(); $packages[] = $rootPackage = $this->rootPackage; while ($rootPackage instanceof AliasPackage) { $rootPackage = $rootPackage->getAliasOf(); $packages[] = $rootPackage; } // add real installed packages foreach ($packages as $package) { if ($package instanceof AliasPackage) { continue; } $reference = null; if ($package->getInstallationSource()) { $reference = $package->getInstallationSource() === 'source' ? $package->getSourceReference() : $package->getDistReference(); } if (null === $reference) { $reference = ($package->getSourceReference() ?: $package->getDistReference()) ?: null; } $versions['versions'][$package->getName()] = array( 'pretty_version' => $package->getPrettyVersion(), 'version' => $package->getVersion(), 'aliases' => array(), 'reference' => $reference, ); if ($package instanceof RootPackageInterface) { $versions['root'] = $versions['versions'][$package->getName()]; $versions['root']['name'] = $package->getName(); } } // add provided/replaced packages foreach ($packages as $package) { foreach ($package->getReplaces() as $replace) { // exclude platform replaces as when they are really there we can not check for their presence if (PlatformRepository::isPlatformPackage($replace->getTarget())) { continue; } $replaced = $replace->getPrettyConstraint(); if ($replaced === 'self.version') { $replaced = $package->getPrettyVersion(); } if (!isset($versions['versions'][$replace->getTarget()]['replaced']) || !in_array($replaced, $versions['versions'][$replace->getTarget()]['replaced'], true)) { $versions['versions'][$replace->getTarget()]['replaced'][] = $replaced; } } foreach ($package->getProvides() as $provide) { // exclude platform provides as when they are really there we can not check for their presence if (PlatformRepository::isPlatformPackage($provide->getTarget())) { continue; } $provided = $provide->getPrettyConstraint(); if ($provided === 'self.version') { $provided = $package->getPrettyVersion(); } if (!isset($versions['versions'][$provide->getTarget()]['provided']) || !in_array($provided, $versions['versions'][$provide->getTarget()]['provided'], true)) { $versions['versions'][$provide->getTarget()]['provided'][] = $provided; } } } // add aliases foreach ($packages as $package) { if (!$package instanceof AliasPackage) { continue; } $versions['versions'][$package->getName()]['aliases'][] = $package->getPrettyVersion(); if ($package instanceof RootPackageInterface) { $versions['root']['aliases'][] = $package->getPrettyVersion(); } } ksort($versions['versions']); ksort($versions); return $versions; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; interface VersionCacheInterface { /** * @param string $version * @param string $identifier * @return array|null|false Package version data if found, false to indicate the identifier is known but has no package, null for an unknown identifier */ public function getVersionPackage($version, $identifier); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\Version\VersionParser; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Package\RootPackageInterface; use Composer\Package\Link; /** * Installed repository is a composite of all installed repo types. * * The main use case is tagging a repo as an "installed" repository, and offering a way to get providers/replacers easily. * * Installed repos are LockArrayRepository, InstalledRepositoryInterface, RootPackageRepository and PlatformRepository * * @author Jordi Boggiano */ class InstalledRepository extends CompositeRepository { public function findPackagesWithReplacersAndProviders($name, $constraint = null) { $name = strtolower($name); if (null !== $constraint && !$constraint instanceof ConstraintInterface) { $versionParser = new VersionParser(); $constraint = $versionParser->parseConstraints($constraint); } $matches = array(); foreach ($this->getRepositories() as $repo) { foreach ($repo->getPackages() as $candidate) { if ($name === $candidate->getName()) { if (null === $constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { $matches[] = $candidate; } continue; } foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { if ( $name === $link->getTarget() && ($constraint === null || $link->getConstraint() === null || $constraint->matches($link->getConstraint())) ) { $matches[] = $candidate; continue 2; } } } } return $matches; } /** * Returns a list of links causing the requested needle packages to be installed, as an associative array with the * dependent's name as key, and an array containing in order the PackageInterface and Link describing the relationship * as values. If recursive lookup was requested a third value is returned containing an identically formed array up * to the root package. That third value will be false in case a circular recursion was detected. * * @param string|string[] $needle The package name(s) to inspect. * @param ConstraintInterface|null $constraint Optional constraint to filter by. * @param bool $invert Whether to invert matches to discover reasons for the package *NOT* to be installed. * @param bool $recurse Whether to recursively expand the requirement tree up to the root package. * @param string[] $packagesFound Used internally when recurring * @return array An associative array of arrays as described above. */ public function getDependents($needle, $constraint = null, $invert = false, $recurse = true, $packagesFound = null) { $needles = array_map('strtolower', (array) $needle); $results = array(); // initialize the array with the needles before any recursion occurs if (null === $packagesFound) { $packagesFound = $needles; } // locate root package for use below $rootPackage = null; foreach ($this->getPackages() as $package) { if ($package instanceof RootPackageInterface) { $rootPackage = $package; break; } } // Loop over all currently installed packages. foreach ($this->getPackages() as $package) { $links = $package->getRequires(); // each loop needs its own "tree" as we want to show the complete dependent set of every needle // without warning all the time about finding circular deps $packagesInTree = $packagesFound; // Replacements are considered valid reasons for a package to be installed during forward resolution if (!$invert) { $links += $package->getReplaces(); // On forward search, check if any replaced package was required and add the replaced // packages to the list of needles. Contrary to the cross-reference link check below, // replaced packages are the target of links. foreach ($package->getReplaces() as $link) { foreach ($needles as $needle) { if ($link->getSource() === $needle) { if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { // already displayed this node's dependencies, cutting short if (in_array($link->getTarget(), $packagesInTree)) { $results[] = array($package, $link, false); continue; } $packagesInTree[] = $link->getTarget(); $dependents = $recurse ? $this->getDependents($link->getTarget(), null, false, true, $packagesInTree) : array(); $results[] = array($package, $link, $dependents); $needles[] = $link->getTarget(); } } } } } // Require-dev is only relevant for the root package if ($package instanceof RootPackageInterface) { $links += $package->getDevRequires(); } // Cross-reference all discovered links to the needles foreach ($links as $link) { foreach ($needles as $needle) { if ($link->getTarget() === $needle) { if ($constraint === null || ($link->getConstraint()->matches($constraint) === !$invert)) { // already displayed this node's dependencies, cutting short if (in_array($link->getSource(), $packagesInTree)) { $results[] = array($package, $link, false); continue; } $packagesInTree[] = $link->getSource(); $dependents = $recurse ? $this->getDependents($link->getSource(), null, false, true, $packagesInTree) : array(); $results[] = array($package, $link, $dependents); } } } } // When inverting, we need to check for conflicts of the needles against installed packages if ($invert && in_array($package->getName(), $needles)) { foreach ($package->getConflicts() as $link) { foreach ($this->findPackages($link->getTarget()) as $pkg) { $version = new Constraint('=', $pkg->getVersion()); if ($link->getConstraint()->matches($version) === $invert) { $results[] = array($package, $link, false); } } } } // When inverting, we need to check for conflicts of the needles' requirements against installed packages if ($invert && $constraint && in_array($package->getName(), $needles) && $constraint->matches(new Constraint('=', $package->getVersion()))) { foreach ($package->getRequires() as $link) { if (PlatformRepository::isPlatformPackage($link->getTarget())) { if ($this->findPackage($link->getTarget(), $link->getConstraint())) { continue; } $platformPkg = $this->findPackage($link->getTarget(), '*'); $description = $platformPkg ? 'but '.$platformPkg->getPrettyVersion().' is installed' : 'but it is missing'; $results[] = array($package, new Link($package->getName(), $link->getTarget(), new MatchAllConstraint, Link::TYPE_REQUIRE, $link->getPrettyConstraint().' '.$description), false); continue; } foreach ($this->getPackages() as $pkg) { if (!in_array($link->getTarget(), $pkg->getNames())) { continue; } $version = new Constraint('=', $pkg->getVersion()); if ($link->getTarget() !== $pkg->getName()) { foreach (array_merge($pkg->getReplaces(), $pkg->getProvides()) as $prov) { if ($link->getTarget() === $prov->getTarget()) { $version = $prov->getConstraint(); break; } } } if (!$link->getConstraint()->matches($version)) { // if we have a root package (we should but can not guarantee..) we show // the root requires as well to perhaps allow to find an issue there if ($rootPackage) { foreach (array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires()) as $rootReq) { if (in_array($rootReq->getTarget(), $pkg->getNames()) && !$rootReq->getConstraint()->matches($link->getConstraint())) { $results[] = array($package, $link, false); $results[] = array($rootPackage, $rootReq, false); continue 3; } } $results[] = array($package, $link, false); $results[] = array($rootPackage, new Link($rootPackage->getName(), $link->getTarget(), new MatchAllConstraint, 'does not require', 'but ' . $pkg->getPrettyVersion() . ' is installed'), false); } else { // no root so let's just print whatever we found $results[] = array($package, $link, false); } } continue 2; } } } } ksort($results); return $results; } public function getRepoName() { return 'installed repo ('.implode(', ', array_map(function ($repo) { return $repo->getRepoName(); }, $this->getRepositories())).')'; } /** * Add a repository. * @param RepositoryInterface $repository */ public function addRepository(RepositoryInterface $repository) { if ( $repository instanceof LockArrayRepository || $repository instanceof InstalledRepositoryInterface || $repository instanceof RootPackageRepository || $repository instanceof PlatformRepository ) { return parent::addRepository($repository); } throw new \LogicException('An InstalledRepository can not contain a repository of type '.get_class($repository).' ('.$repository->getRepoName().')'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\BasePackage; use Composer\Package\Loader\ArrayLoader; use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Package\Version\VersionParser; use Composer\Package\Version\StabilityFilter; use Composer\Json\JsonFile; use Composer\Cache; use Composer\Config; use Composer\IO\IOInterface; use Composer\Semver\CompilingMatcher; use Composer\Util\HttpDownloader; use Composer\Util\Loop; use Composer\Plugin\PluginEvents; use Composer\Plugin\PreFileDownloadEvent; use Composer\EventDispatcher\EventDispatcher; use Composer\Downloader\TransportException; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Util\Http\Response; use Composer\MetadataMinifier\MetadataMinifier; use Composer\Util\Url; /** * @author Jordi Boggiano */ class ComposerRepository extends ArrayRepository implements ConfigurableRepositoryInterface { private $repoConfig; private $options; private $url; private $baseUrl; private $io; private $httpDownloader; private $loop; protected $cache; protected $notifyUrl; protected $searchUrl; /** @var string|null a URL containing %package% which can be queried to get providers of a given name */ protected $providersApiUrl; protected $hasProviders = false; protected $providersUrl; protected $listUrl; /** @var bool Indicates whether a comprehensive list of packages this repository might provide is expressed in the repository root. **/ protected $hasAvailablePackageList = false; protected $availablePackages; protected $availablePackagePatterns; protected $lazyProvidersUrl; protected $providerListing; protected $loader; private $allowSslDowngrade = false; private $eventDispatcher; private $sourceMirrors; private $distMirrors; private $degradedMode = false; private $rootData; private $hasPartialPackages; private $partialPackagesByName; /** * TODO v3 should make this private once we can drop PHP 5.3 support * @private * @var array list of package names which are fresh and can be loaded from the cache directly in case loadPackage is called several times * useful for v2 metadata repositories with lazy providers */ public $freshMetadataUrls = array(); /** * TODO v3 should make this private once we can drop PHP 5.3 support * @private * @var array list of package names which returned a 404 and should not be re-fetched in case loadPackage is called several times * useful for v2 metadata repositories with lazy providers */ public $packagesNotFoundCache = array(); /** * TODO v3 should make this private once we can drop PHP 5.3 support * @private */ public $versionParser; public function __construct(array $repoConfig, IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $eventDispatcher = null) { parent::__construct(); if (!preg_match('{^[\w.]+\??://}', $repoConfig['url'])) { // assume http as the default protocol $repoConfig['url'] = 'http://'.$repoConfig['url']; } $repoConfig['url'] = rtrim($repoConfig['url'], '/'); if (strpos($repoConfig['url'], 'https?') === 0) { $repoConfig['url'] = (extension_loaded('openssl') ? 'https' : 'http') . substr($repoConfig['url'], 6); } $urlBits = parse_url($repoConfig['url']); if ($urlBits === false || empty($urlBits['scheme'])) { throw new \UnexpectedValueException('Invalid url given for Composer repository: '.$repoConfig['url']); } if (!isset($repoConfig['options'])) { $repoConfig['options'] = array(); } if (isset($repoConfig['allow_ssl_downgrade']) && true === $repoConfig['allow_ssl_downgrade']) { $this->allowSslDowngrade = true; } $this->options = $repoConfig['options']; $this->url = $repoConfig['url']; // force url for packagist.org to repo.packagist.org if (preg_match('{^(?Phttps?)://packagist\.org/?$}i', $this->url, $match)) { $this->url = $match['proto'].'://repo.packagist.org'; } $this->baseUrl = rtrim(preg_replace('{(?:/[^/\\\\]+\.json)?(?:[?#].*)?$}', '', $this->url), '/'); $this->io = $io; $this->cache = new Cache($io, $config->get('cache-repo-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', Url::sanitize($this->url)), 'a-z0-9.$~'); $this->cache->setReadOnly($config->get('cache-read-only')); $this->versionParser = new VersionParser(); $this->loader = new ArrayLoader($this->versionParser); $this->httpDownloader = $httpDownloader; $this->eventDispatcher = $eventDispatcher; $this->repoConfig = $repoConfig; $this->loop = new Loop($this->httpDownloader); } public function getRepoName() { return 'composer repo ('.Url::sanitize($this->url).')'; } public function getRepoConfig() { return $this->repoConfig; } /** * {@inheritDoc} */ public function findPackage($name, $constraint) { // this call initializes loadRootServerFile which is needed for the rest below to work $hasProviders = $this->hasProviders(); $name = strtolower($name); if (!$constraint instanceof ConstraintInterface) { $constraint = $this->versionParser->parseConstraints($constraint); } if ($this->lazyProvidersUrl) { if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { return $this->filterPackages($this->whatProvides($name), $constraint, true); } if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { return; } $packages = $this->loadAsyncPackages(array($name => $constraint)); return reset($packages['packages']); } if ($hasProviders) { foreach ($this->getProviderNames() as $providerName) { if ($name === $providerName) { return $this->filterPackages($this->whatProvides($providerName), $constraint, true); } } return; } return parent::findPackage($name, $constraint); } /** * {@inheritDoc} */ public function findPackages($name, $constraint = null) { // this call initializes loadRootServerFile which is needed for the rest below to work $hasProviders = $this->hasProviders(); $name = strtolower($name); if (null !== $constraint && !$constraint instanceof ConstraintInterface) { $constraint = $this->versionParser->parseConstraints($constraint); } if ($this->lazyProvidersUrl) { if ($this->hasPartialPackages() && isset($this->partialPackagesByName[$name])) { return $this->filterPackages($this->whatProvides($name), $constraint); } if ($this->hasAvailablePackageList && !$this->lazyProvidersRepoContains($name)) { return array(); } $result = $this->loadAsyncPackages(array($name => $constraint)); return $result['packages']; } if ($hasProviders) { foreach ($this->getProviderNames() as $providerName) { if ($name === $providerName) { return $this->filterPackages($this->whatProvides($providerName), $constraint); } } return array(); } return parent::findPackages($name, $constraint); } private function filterPackages(array $packages, $constraint = null, $returnFirstMatch = false) { if (null === $constraint) { if ($returnFirstMatch) { return reset($packages); } return $packages; } $filteredPackages = array(); foreach ($packages as $package) { $pkgConstraint = new Constraint('==', $package->getVersion()); if ($constraint->matches($pkgConstraint)) { if ($returnFirstMatch) { return $package; } $filteredPackages[] = $package; } } if ($returnFirstMatch) { return null; } return $filteredPackages; } public function getPackages() { $hasProviders = $this->hasProviders(); if ($this->lazyProvidersUrl) { if (is_array($this->availablePackages) && !$this->availablePackagePatterns) { $packageMap = array(); foreach ($this->availablePackages as $name) { $packageMap[$name] = new MatchAllConstraint(); } $result = $this->loadAsyncPackages($packageMap); return array_values($result['packages']); } if ($this->hasPartialPackages()) { return array_values($this->partialPackagesByName); } throw new \LogicException('Composer repositories that have lazy providers and no available-packages list can not load the complete list of packages, use getPackageNames instead.'); } if ($hasProviders) { throw new \LogicException('Composer repositories that have providers can not load the complete list of packages, use getPackageNames instead.'); } return parent::getPackages(); } public function getPackageNames($packageFilter = null) { $hasProviders = $this->hasProviders(); $packageFilterCb = function ($name) { return true; }; if (null !== $packageFilter) { $packageFilterRegex = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; $packageFilterCb = function ($name) use ($packageFilterRegex) { return (bool) preg_match($packageFilterRegex, $name); }; } if ($this->lazyProvidersUrl) { if (is_array($this->availablePackages)) { return array_filter(array_keys($this->availablePackages), $packageFilterCb); } if ($this->listUrl) { $url = $this->listUrl; if ($packageFilter) { $url .= '?filter='.urlencode($packageFilter); } $result = $this->httpDownloader->get($url, $this->options)->decodeJson(); return $result['packageNames']; } if ($this->hasPartialPackages()) { return array_filter(array_keys($this->partialPackagesByName), $packageFilterCb); } return array(); } if ($hasProviders) { return array_filter($this->getProviderNames(), $packageFilterCb); } $names = array(); foreach ($this->getPackages() as $package) { if ($packageFilterCb($package->getName())) { $names[] = $package->getPrettyName(); } } return $names; } public function loadPackages(array $packageNameMap, array $acceptableStabilities, array $stabilityFlags, array $alreadyLoaded = array()) { // this call initializes loadRootServerFile which is needed for the rest below to work $hasProviders = $this->hasProviders(); if (!$hasProviders && !$this->hasPartialPackages() && !$this->lazyProvidersUrl) { return parent::loadPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); } $packages = array(); $namesFound = array(); if ($hasProviders || $this->hasPartialPackages()) { foreach ($packageNameMap as $name => $constraint) { $matches = array(); // if a repo has no providers but only partial packages and the partial packages are missing // then we don't want to call whatProvides as it would try to load from the providers and fail if (!$hasProviders && !isset($this->partialPackagesByName[$name])) { continue; } $candidates = $this->whatProvides($name, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); foreach ($candidates as $candidate) { if ($candidate->getName() !== $name) { throw new \LogicException('whatProvides should never return a package with a different name than the requested one'); } $namesFound[$name] = true; if (!$constraint || $constraint->matches(new Constraint('==', $candidate->getVersion()))) { $matches[spl_object_hash($candidate)] = $candidate; if ($candidate instanceof AliasPackage && !isset($matches[spl_object_hash($candidate->getAliasOf())])) { $matches[spl_object_hash($candidate->getAliasOf())] = $candidate->getAliasOf(); } } } // add aliases of matched packages even if they did not match the constraint foreach ($candidates as $candidate) { if ($candidate instanceof AliasPackage) { if (isset($matches[spl_object_hash($candidate->getAliasOf())])) { $matches[spl_object_hash($candidate)] = $candidate; } } } $packages = array_merge($packages, $matches); unset($packageNameMap[$name]); } } if ($this->lazyProvidersUrl && count($packageNameMap)) { if ($this->hasAvailablePackageList) { foreach ($packageNameMap as $name => $constraint) { if (!$this->lazyProvidersRepoContains(strtolower($name))) { unset($packageNameMap[$name]); } } } $result = $this->loadAsyncPackages($packageNameMap, $acceptableStabilities, $stabilityFlags, $alreadyLoaded); $packages = array_merge($packages, $result['packages']); $namesFound = array_merge($namesFound, $result['namesFound']); } return array('namesFound' => array_keys($namesFound), 'packages' => $packages); } /** * {@inheritDoc} */ public function search($query, $mode = 0, $type = null) { $this->loadRootServerFile(); if ($this->searchUrl && $mode === self::SEARCH_FULLTEXT) { $url = str_replace(array('%query%', '%type%'), array($query, $type), $this->searchUrl); $search = $this->httpDownloader->get($url, $this->options)->decodeJson(); if (empty($search['results'])) { return array(); } $results = array(); foreach ($search['results'] as $result) { // do not show virtual packages in results as they are not directly useful from a composer perspective if (empty($result['virtual'])) { $results[] = $result; } } return $results; } if ($this->hasProviders() || $this->lazyProvidersUrl) { $results = array(); $regex = '{(?:'.implode('|', preg_split('{\s+}', $query)).')}i'; foreach ($this->getPackageNames() as $name) { if (preg_match($regex, $name)) { $results[] = array('name' => $name); } } return $results; } return parent::search($query, $mode); } public function getProviders($packageName) { $this->loadRootServerFile(); $result = array(); if ($this->providersApiUrl) { $apiResult = $this->httpDownloader->get(str_replace('%package%', $packageName, $this->providersApiUrl), $this->options)->decodeJson(); foreach ($apiResult['providers'] as $provider) { $result[$provider['name']] = $provider; } return $result; } if ($this->hasPartialPackages()) { foreach ($this->partialPackagesByName as $versions) { foreach ($versions as $candidate) { if (isset($result[$candidate['name']]) || !isset($candidate['provide'][$packageName])) { continue; } $result[$candidate['name']] = array( 'name' => $candidate['name'], 'description' => isset($candidate['description']) ? $candidate['description'] : '', 'type' => isset($candidate['type']) ? $candidate['type'] : '', ); } } } if ($this->packages) { $result = array_merge($result, parent::getProviders($packageName)); } return $result; } private function getProviderNames() { $this->loadRootServerFile(); if (null === $this->providerListing) { $this->loadProviderListings($this->loadRootServerFile()); } if ($this->lazyProvidersUrl) { // Can not determine list of provided packages for lazy repositories return array(); } if ($this->providersUrl) { return array_keys($this->providerListing); } return array(); } protected function configurePackageTransportOptions(PackageInterface $package) { foreach ($package->getDistUrls() as $url) { if (strpos($url, $this->baseUrl) === 0) { $package->setTransportOptions($this->options); return; } } } private function hasProviders() { $this->loadRootServerFile(); return $this->hasProviders; } /** * @param string $name package name * @return array|mixed */ private function whatProvides($name, array $acceptableStabilities = null, array $stabilityFlags = null, array $alreadyLoaded = array()) { $packagesSource = null; if (!$this->hasPartialPackages() || !isset($this->partialPackagesByName[$name])) { // skip platform packages, root package and composer-plugin-api if (PlatformRepository::isPlatformPackage($name) || '__root__' === $name) { return array(); } if (null === $this->providerListing) { $this->loadProviderListings($this->loadRootServerFile()); } $useLastModifiedCheck = false; if ($this->lazyProvidersUrl && !isset($this->providerListing[$name])) { $hash = null; $url = str_replace('%package%', $name, $this->lazyProvidersUrl); $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; $useLastModifiedCheck = true; } elseif ($this->providersUrl) { // package does not exist in this repo if (!isset($this->providerListing[$name])) { return array(); } $hash = $this->providerListing[$name]['sha256']; $url = str_replace(array('%package%', '%hash%'), array($name, $hash), $this->providersUrl); $cacheKey = 'provider-'.strtr($name, '/', '$').'.json'; } else { return array(); } $packages = null; if ($cacheKey) { if (!$useLastModifiedCheck && $hash && $this->cache->sha256($cacheKey) === $hash) { $packages = json_decode($this->cache->read($cacheKey), true); $packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; } elseif ($useLastModifiedCheck) { if ($contents = $this->cache->read($cacheKey)) { $contents = json_decode($contents, true); // we already loaded some packages from this file, so assume it is fresh and avoid fetching it again if (isset($alreadyLoaded[$name])) { $packages = $contents; $packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; } elseif (isset($contents['last-modified'])) { $response = $this->fetchFileIfLastModified($url, $cacheKey, $contents['last-modified']); $packages = true === $response ? $contents : $response; $packagesSource = true === $response ? 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')' : 'downloaded file ('.Url::sanitize($url).')'; } } } } if (!$packages) { try { $packages = $this->fetchFile($url, $cacheKey, $hash, $useLastModifiedCheck); $packagesSource = 'downloaded file ('.Url::sanitize($url).')'; } catch (TransportException $e) { // 404s are acceptable for lazy provider repos if ($this->lazyProvidersUrl && in_array($e->getStatusCode(), array(404, 499), true)) { $packages = array('packages' => array()); $packagesSource = 'not-found file ('.Url::sanitize($url).')'; if ($e->getStatusCode() === 499) { $this->io->error('' . $e->getMessage() . ''); } } else { throw $e; } } } $loadingPartialPackage = false; } else { $packages = array('packages' => array('versions' => $this->partialPackagesByName[$name])); $packagesSource = 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')'; $loadingPartialPackage = true; } $result = array(); $versionsToLoad = array(); foreach ($packages['packages'] as $versions) { foreach ($versions as $version) { $normalizedName = strtolower($version['name']); // only load the actual named package, not other packages that might find themselves in the same file if ($normalizedName !== $name) { continue; } if (!$loadingPartialPackage && $this->hasPartialPackages() && isset($this->partialPackagesByName[$normalizedName])) { continue; } if (!isset($versionsToLoad[$version['uid']])) { if (!isset($version['version_normalized'])) { $version['version_normalized'] = $this->versionParser->normalize($version['version']); } elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { // handling of existing repos which need to remain composer v1 compatible, in case the version_normalized contained VersionParser::DEFAULT_BRANCH_ALIAS, we renormalize it $version['version_normalized'] = $this->versionParser->normalize($version['version']); } // avoid loading packages which have already been loaded if (isset($alreadyLoaded[$name][$version['version_normalized']])) { continue; } if ($this->isVersionAcceptable(null, $normalizedName, $version, $acceptableStabilities, $stabilityFlags)) { $versionsToLoad[$version['uid']] = $version; } } } } // load acceptable packages in the providers $loadedPackages = $this->createPackages($versionsToLoad, $packagesSource); $uids = array_keys($versionsToLoad); foreach ($loadedPackages as $index => $package) { $package->setRepository($this); $uid = $uids[$index]; if ($package instanceof AliasPackage) { $aliased = $package->getAliasOf(); $aliased->setRepository($this); $result[$uid] = $aliased; $result[$uid.'-alias'] = $package; } else { $result[$uid] = $package; } } return $result; } /** * {@inheritDoc} */ protected function initialize() { parent::initialize(); $repoData = $this->loadDataFromServer(); foreach ($this->createPackages($repoData, 'root file ('.Url::sanitize($this->getPackagesJsonUrl()).')') as $package) { $this->addPackage($package); } } /** * Adds a new package to the repository * * @param PackageInterface $package */ public function addPackage(PackageInterface $package) { parent::addPackage($package); $this->configurePackageTransportOptions($package); } /** * @param array $packageNames array of package name => ConstraintInterface|null - if a constraint is provided, only packages matching it will be loaded */ private function loadAsyncPackages(array $packageNames, array $acceptableStabilities = null, array $stabilityFlags = null, array $alreadyLoaded = array()) { $this->loadRootServerFile(); $packages = array(); $namesFound = array(); $promises = array(); $repo = $this; if (!$this->lazyProvidersUrl) { throw new \LogicException('loadAsyncPackages only supports v2 protocol composer repos with a metadata-url'); } // load ~dev versions of the packages as well if needed foreach ($packageNames as $name => $constraint) { if ($acceptableStabilities === null || $stabilityFlags === null || StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, array($name), 'dev')) { $packageNames[$name.'~dev'] = $constraint; } // if only dev stability is requested, we skip loading the non dev file if (isset($acceptableStabilities['dev']) && count($acceptableStabilities) === 1 && count($stabilityFlags) === 0) { unset($packageNames[$name]); } } foreach ($packageNames as $name => $constraint) { $name = strtolower($name); $realName = preg_replace('{~dev$}', '', $name); // skip platform packages, root package and composer-plugin-api if (PlatformRepository::isPlatformPackage($realName) || '__root__' === $realName) { continue; } $url = str_replace('%package%', $name, $this->lazyProvidersUrl); $cacheKey = 'provider-'.strtr($name, '/', '~').'.json'; $lastModified = null; if ($contents = $this->cache->read($cacheKey)) { $contents = json_decode($contents, true); $lastModified = isset($contents['last-modified']) ? $contents['last-modified'] : null; } $promises[] = $this->asyncFetchFile($url, $cacheKey, $lastModified) ->then(function ($response) use (&$packages, &$namesFound, $url, $cacheKey, $contents, $realName, $constraint, $repo, $acceptableStabilities, $stabilityFlags, $alreadyLoaded) { $packagesSource = 'downloaded file ('.Url::sanitize($url).')'; if (true === $response) { $packagesSource = 'cached file ('.$cacheKey.' originating from '.Url::sanitize($url).')'; $response = $contents; } if (!isset($response['packages'][$realName])) { return; } $versions = $response['packages'][$realName]; if (isset($response['minified']) && $response['minified'] === 'composer/2.0') { $versions = MetadataMinifier::expand($versions); } $namesFound[$realName] = true; $versionsToLoad = array(); foreach ($versions as $version) { if (!isset($version['version_normalized'])) { $version['version_normalized'] = $repo->versionParser->normalize($version['version']); } elseif ($version['version_normalized'] === VersionParser::DEFAULT_BRANCH_ALIAS) { // handling of existing repos which need to remain composer v1 compatible, in case the version_normalized contained VersionParser::DEFAULT_BRANCH_ALIAS, we renormalize it $version['version_normalized'] = $repo->versionParser->normalize($version['version']); } // avoid loading packages which have already been loaded if (isset($alreadyLoaded[$realName][$version['version_normalized']])) { continue; } if ($repo->isVersionAcceptable($constraint, $realName, $version, $acceptableStabilities, $stabilityFlags)) { $versionsToLoad[] = $version; } } $loadedPackages = $repo->createPackages($versionsToLoad, $packagesSource); foreach ($loadedPackages as $package) { $package->setRepository($repo); $packages[spl_object_hash($package)] = $package; if ($package instanceof AliasPackage && !isset($packages[spl_object_hash($package->getAliasOf())])) { $package->getAliasOf()->setRepository($repo); $packages[spl_object_hash($package->getAliasOf())] = $package->getAliasOf(); } } }); } $this->loop->wait($promises); return array('namesFound' => $namesFound, 'packages' => $packages); // RepositorySet should call loadMetadata, getMetadata when all promises resolved, then metadataComplete when done so we can GC the loaded json and whatnot then as needed } /** * TODO v3 should make this private once we can drop PHP 5.3 support * * @param string $name package name (must be lowercased already) * @private */ public function isVersionAcceptable($constraint, $name, $versionData, array $acceptableStabilities = null, array $stabilityFlags = null) { $versions = array($versionData['version_normalized']); if ($alias = $this->loader->getBranchAlias($versionData)) { $versions[] = $alias; } foreach ($versions as $version) { if (null !== $acceptableStabilities && null !== $stabilityFlags && !StabilityFilter::isPackageAcceptable($acceptableStabilities, $stabilityFlags, array($name), VersionParser::parseStability($version))) { continue; } if ($constraint && !CompilingMatcher::match($constraint, Constraint::OP_EQ, $version)) { continue; } return true; } return false; } private function getPackagesJsonUrl() { $jsonUrlParts = parse_url($this->url); if (isset($jsonUrlParts['path']) && false !== strpos($jsonUrlParts['path'], '.json')) { return $this->url; } return $this->url . '/packages.json'; } protected function loadRootServerFile() { if (null !== $this->rootData) { return $this->rootData; } if (!extension_loaded('openssl') && strpos($this->url, 'https') === 0) { throw new \RuntimeException('You must enable the openssl extension in your php.ini to load information from '.$this->url); } $data = $this->fetchFile($this->getPackagesJsonUrl(), 'packages.json'); if (!empty($data['notify-batch'])) { $this->notifyUrl = $this->canonicalizeUrl($data['notify-batch']); } elseif (!empty($data['notify'])) { $this->notifyUrl = $this->canonicalizeUrl($data['notify']); } if (!empty($data['search'])) { $this->searchUrl = $this->canonicalizeUrl($data['search']); } if (!empty($data['mirrors'])) { foreach ($data['mirrors'] as $mirror) { if (!empty($mirror['git-url'])) { $this->sourceMirrors['git'][] = array('url' => $mirror['git-url'], 'preferred' => !empty($mirror['preferred'])); } if (!empty($mirror['hg-url'])) { $this->sourceMirrors['hg'][] = array('url' => $mirror['hg-url'], 'preferred' => !empty($mirror['preferred'])); } if (!empty($mirror['dist-url'])) { $this->distMirrors[] = array( 'url' => $this->canonicalizeUrl($mirror['dist-url']), 'preferred' => !empty($mirror['preferred']), ); } } } if (!empty($data['providers-lazy-url'])) { $this->lazyProvidersUrl = $this->canonicalizeUrl($data['providers-lazy-url']); $this->hasProviders = true; $this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); } // Horrible hack to workaround https://github.com/composer/composer/issues/9297 and bad mirrors, should be disabled if possible once they fix things if (!empty($data['metadata-url']) && !empty($data['list']) && $data['metadata-url'] === '/p/%package%.json' && $data['list'] === 'https://packagist.org/packages/list.json') { $this->io->writeError('Composer 2 repository support for '.$this->url.' has been disabled due to what seems like a misconfiguration. If this is a packagist.org mirror we recommend removing it as Composer 2 handles network operations much faster and should work fine without.'); unset($data['metadata-url']); } // metadata-url indicates V2 repo protocol so it takes over from all the V1 types // V2 only has lazyProviders and possibly partial packages, but no ability to process anything else, // V2 also supports async loading if (!empty($data['metadata-url'])) { $this->lazyProvidersUrl = $this->canonicalizeUrl($data['metadata-url']); $this->providersUrl = null; $this->hasProviders = false; $this->hasPartialPackages = !empty($data['packages']) && is_array($data['packages']); $this->allowSslDowngrade = false; // provides a list of package names that are available in this repo // this disables lazy-provider behavior in the sense that if a list is available we assume it is finite and won't search for other packages in that repo // while if no list is there lazyProvidersUrl is used when looking for any package name to see if the repo knows it if (!empty($data['available-packages'])) { $availPackages = array_map('strtolower', $data['available-packages']); $this->availablePackages = array_combine($availPackages, $availPackages); $this->hasAvailablePackageList = true; } // Provides a list of package name patterns (using * wildcards to match any substring, e.g. "vendor/*") that are available in this repo // Disables lazy-provider behavior as with available-packages, but may allow much more compact expression of packages covered by this repository. // Over-specifying covered packages is safe, but may result in increased traffic to your repository. if (!empty($data['available-package-patterns'])) { $this->availablePackagePatterns = array_map(function ($pattern) { return BasePackage::packageNameToRegexp($pattern); }, $data['available-package-patterns']); $this->hasAvailablePackageList = true; } // Remove legacy keys as most repos need to be compatible with Composer v1 // as well but we are not interested in the old format anymore at this point unset($data['providers-url'], $data['providers'], $data['providers-includes']); } if ($this->allowSslDowngrade) { $this->url = str_replace('https://', 'http://', $this->url); $this->baseUrl = str_replace('https://', 'http://', $this->baseUrl); } if (!empty($data['providers-url'])) { $this->providersUrl = $this->canonicalizeUrl($data['providers-url']); $this->hasProviders = true; } if (!empty($data['list'])) { $this->listUrl = $this->canonicalizeUrl($data['list']); } if (!empty($data['providers']) || !empty($data['providers-includes'])) { $this->hasProviders = true; } if (!empty($data['providers-api'])) { $this->providersApiUrl = $this->canonicalizeUrl($data['providers-api']); } return $this->rootData = $data; } private function canonicalizeUrl($url) { if ('/' === $url[0]) { if (preg_match('{^[^:]++://[^/]*+}', $this->url, $matches)) { return $matches[0] . $url; } return $this->url; } return $url; } private function loadDataFromServer() { $data = $this->loadRootServerFile(); return $this->loadIncludes($data); } private function hasPartialPackages() { if ($this->hasPartialPackages && null === $this->partialPackagesByName) { $this->initializePartialPackages(); } return $this->hasPartialPackages; } private function loadProviderListings($data) { if (isset($data['providers'])) { if (!is_array($this->providerListing)) { $this->providerListing = array(); } $this->providerListing = array_merge($this->providerListing, $data['providers']); } if ($this->providersUrl && isset($data['provider-includes'])) { $includes = $data['provider-includes']; foreach ($includes as $include => $metadata) { $url = $this->baseUrl . '/' . str_replace('%hash%', $metadata['sha256'], $include); $cacheKey = str_replace(array('%hash%','$'), '', $include); if ($this->cache->sha256($cacheKey) === $metadata['sha256']) { $includedData = json_decode($this->cache->read($cacheKey), true); } else { $includedData = $this->fetchFile($url, $cacheKey, $metadata['sha256']); } $this->loadProviderListings($includedData); } } } private function loadIncludes($data) { $packages = array(); // legacy repo handling if (!isset($data['packages']) && !isset($data['includes'])) { foreach ($data as $pkg) { foreach ($pkg['versions'] as $metadata) { $packages[] = $metadata; } } return $packages; } if (isset($data['packages'])) { foreach ($data['packages'] as $package => $versions) { foreach ($versions as $version => $metadata) { $packages[] = $metadata; } } } if (isset($data['includes'])) { foreach ($data['includes'] as $include => $metadata) { if (isset($metadata['sha1']) && $this->cache->sha1($include) === $metadata['sha1']) { $includedData = json_decode($this->cache->read($include), true); } else { $includedData = $this->fetchFile($include); } $packages = array_merge($packages, $this->loadIncludes($includedData)); } } return $packages; } /** * TODO v3 should make this private once we can drop PHP 5.3 support * * @private */ public function createPackages(array $packages, $source = null) { if (!$packages) { return array(); } try { foreach ($packages as &$data) { if (!isset($data['notification-url'])) { $data['notification-url'] = $this->notifyUrl; } } $packageInstances = $this->loader->loadPackages($packages, 'Composer\Package\CompletePackage'); foreach ($packageInstances as $package) { if (isset($this->sourceMirrors[$package->getSourceType()])) { $package->setSourceMirrors($this->sourceMirrors[$package->getSourceType()]); } $package->setDistMirrors($this->distMirrors); $this->configurePackageTransportOptions($package); } return $packageInstances; } catch (\Exception $e) { throw new \RuntimeException('Could not load packages '.(isset($packages[0]['name']) ? $packages[0]['name'] : json_encode($packages)).' in '.$this->getRepoName().($source ? ' from '.$source : '').': ['.get_class($e).'] '.$e->getMessage(), 0, $e); } } protected function fetchFile($filename, $cacheKey = null, $sha256 = null, $storeLastModifiedTime = false) { if (null === $cacheKey) { $cacheKey = $filename; $filename = $this->baseUrl.'/'.$filename; } // url-encode $ signs in URLs as bad proxies choke on them if (($pos = strpos($filename, '$')) && preg_match('{^https?://}i', $filename)) { $filename = substr($filename, 0, $pos) . '%24' . substr($filename, $pos + 1); } $retries = 3; while ($retries--) { try { if ($this->eventDispatcher) { $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata'); $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); $filename = $preFileDownloadEvent->getProcessedUrl(); } $response = $this->httpDownloader->get($filename, $this->options); $json = $response->getBody(); if ($sha256 && $sha256 !== hash('sha256', $json)) { // undo downgrade before trying again if http seems to be hijacked or modifying content somehow if ($this->allowSslDowngrade) { $this->url = str_replace('http://', 'https://', $this->url); $this->baseUrl = str_replace('http://', 'https://', $this->baseUrl); $filename = str_replace('http://', 'https://', $filename); } if ($retries) { usleep(100000); continue; } // TODO use scarier wording once we know for sure it doesn't do false positives anymore throw new RepositorySecurityException('The contents of '.$filename.' do not match its signature. This could indicate a man-in-the-middle attack or e.g. antivirus software corrupting files. Try running composer again and report this if you think it is a mistake.'); } $data = $response->decodeJson(); HttpDownloader::outputWarnings($this->io, $this->url, $data); if ($cacheKey && !$this->cache->isReadOnly()) { if ($storeLastModifiedTime) { $lastModifiedDate = $response->getHeader('last-modified'); if ($lastModifiedDate) { $data['last-modified'] = $lastModifiedDate; $json = json_encode($data); } } $this->cache->write($cacheKey, $json); } $response->collect(); break; } catch (\Exception $e) { if ($e instanceof \LogicException) { throw $e; } if ($e instanceof TransportException && $e->getStatusCode() === 404) { throw $e; } if ($retries) { usleep(100000); continue; } if ($e instanceof RepositorySecurityException) { throw $e; } if ($cacheKey && ($contents = $this->cache->read($cacheKey))) { if (!$this->degradedMode) { $this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); } $this->degradedMode = true; $data = JsonFile::parseJson($contents, $this->cache->getRoot().$cacheKey); break; } throw $e; } } if (!isset($data)) { throw new \LogicException("ComposerRepository: Undefined \$data. Please report at https://github.com/composer/composer/issues/new."); } return $data; } private function fetchFileIfLastModified($filename, $cacheKey, $lastModifiedTime) { $retries = 3; while ($retries--) { try { if ($this->eventDispatcher) { $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata'); $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); $filename = $preFileDownloadEvent->getProcessedUrl(); } $options = $this->options; if (isset($options['http']['header'])) { $options['http']['header'] = (array) $options['http']['header']; } $options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; $response = $this->httpDownloader->get($filename, $options); $json = $response->getBody(); if ($json === '' && $response->getStatusCode() === 304) { return true; } $data = $response->decodeJson(); HttpDownloader::outputWarnings($this->io, $this->url, $data); $lastModifiedDate = $response->getHeader('last-modified'); $response->collect(); if ($lastModifiedDate) { $data['last-modified'] = $lastModifiedDate; $json = json_encode($data); } if (!$this->cache->isReadOnly()) { $this->cache->write($cacheKey, $json); } return $data; } catch (\Exception $e) { if ($e instanceof \LogicException) { throw $e; } if ($e instanceof TransportException && $e->getStatusCode() === 404) { throw $e; } if ($retries) { usleep(100000); continue; } if (!$this->degradedMode) { $this->io->writeError(''.$this->url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); } $this->degradedMode = true; return true; } } } private function asyncFetchFile($filename, $cacheKey, $lastModifiedTime = null) { $retries = 3; if (isset($this->packagesNotFoundCache[$filename])) { return \React\Promise\resolve(array('packages' => array())); } if (isset($this->freshMetadataUrls[$filename]) && $lastModifiedTime) { // make it look like we got a 304 response return \React\Promise\resolve(true); } $httpDownloader = $this->httpDownloader; if ($this->eventDispatcher) { $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $this->httpDownloader, $filename, 'metadata'); $this->eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); $filename = $preFileDownloadEvent->getProcessedUrl(); } $options = $this->options; if ($lastModifiedTime) { if (isset($options['http']['header'])) { $options['http']['header'] = (array) $options['http']['header']; } $options['http']['header'][] = 'If-Modified-Since: '.$lastModifiedTime; } $io = $this->io; $url = $this->url; $cache = $this->cache; $degradedMode = &$this->degradedMode; $repo = $this; $accept = function ($response) use ($io, $url, $filename, $cache, $cacheKey, $repo) { // package not found is acceptable for a v2 protocol repository if ($response->getStatusCode() === 404) { $repo->packagesNotFoundCache[$filename] = true; return array('packages' => array()); } $json = $response->getBody(); if ($json === '' && $response->getStatusCode() === 304) { $repo->freshMetadataUrls[$filename] = true; return true; } $data = $response->decodeJson(); HttpDownloader::outputWarnings($io, $url, $data); $lastModifiedDate = $response->getHeader('last-modified'); $response->collect(); if ($lastModifiedDate) { $data['last-modified'] = $lastModifiedDate; $json = JsonFile::encode($data, JsonFile::JSON_UNESCAPED_SLASHES | JsonFile::JSON_UNESCAPED_UNICODE); } if (!$cache->isReadOnly()) { $cache->write($cacheKey, $json); } $repo->freshMetadataUrls[$filename] = true; return $data; }; $reject = function ($e) use (&$retries, $httpDownloader, $filename, $options, &$reject, $accept, $io, $url, &$degradedMode, $repo) { if ($e instanceof TransportException && $e->getStatusCode() === 404) { $repo->packagesNotFoundCache[$filename] = true; return false; } // special error code returned when network is being artificially disabled if ($e instanceof TransportException && $e->getStatusCode() === 499) { $retries = 0; } if (--$retries > 0) { usleep(100000); return $httpDownloader->add($filename, $options)->then($accept, $reject); } if (!$degradedMode) { $io->writeError(''.$url.' could not be fully loaded ('.$e->getMessage().'), package information was loaded from the local cache and may be out of date'); } $degradedMode = true; // special error code returned when network is being artificially disabled if ($e instanceof TransportException && $e->getStatusCode() === 499) { return $accept(new Response(array('url' => $url), 404, array(), '')); } throw $e; }; return $httpDownloader->add($filename, $options)->then($accept, $reject); } /** * This initializes the packages key of a partial packages.json that contain some packages inlined + a providers-lazy-url * * This should only be called once */ private function initializePartialPackages() { $rootData = $this->loadRootServerFile(); $this->partialPackagesByName = array(); foreach ($rootData['packages'] as $package => $versions) { foreach ($versions as $version) { $this->partialPackagesByName[strtolower($version['name'])][] = $version; } } // wipe rootData as it is fully consumed at this point and this saves some memory $this->rootData = true; } /** * Checks if the package name is present in this lazy providers repo * * @param string $name * @return bool true if the package name is present in availablePackages or matched by availablePackagePatterns */ protected function lazyProvidersRepoContains($name) { if (!$this->hasAvailablePackageList) { throw new \LogicException('lazyProvidersRepoContains should not be called unless hasAvailablePackageList is true'); } if (is_array($this->availablePackages) && isset($this->availablePackages[$name])) { return true; } if (is_array($this->availablePackagePatterns)) { foreach ($this->availablePackagePatterns as $providerRegex) { if (preg_match($providerRegex, $name)) { return true; } } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ValidatingArrayLoader; /** * Package repository. * * @author Jordi Boggiano */ class PackageRepository extends ArrayRepository { private $config; /** * Initializes filesystem repository. * * @param array $config package definition */ public function __construct(array $config) { parent::__construct(); $this->config = $config['package']; // make sure we have an array of package definitions if (!is_numeric(key($this->config))) { $this->config = array($this->config); } } /** * Initializes repository (reads file, or remote address). */ protected function initialize() { parent::initialize(); $loader = new ValidatingArrayLoader(new ArrayLoader(null, true), false); foreach ($this->config as $package) { try { $package = $loader->load($package); } catch (\Exception $e) { throw new InvalidRepositoryException('A repository of type "package" contains an invalid package definition: '.$e->getMessage()."\n\nInvalid package definition:\n".json_encode($package)); } $this->addPackage($package); } } public function getRepoName() { return preg_replace('{^array }', 'package ', parent::getRepoName()); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; use Composer\Package\AliasPackage; use Composer\Installer\InstallationManager; /** * Writable array repository. * * @author Jordi Boggiano */ class WritableArrayRepository extends ArrayRepository implements WritableRepositoryInterface { /** * @var string[] */ protected $devPackageNames = array(); /** * {@inheritDoc} */ public function setDevPackageNames(array $devPackageNames) { $this->devPackageNames = $devPackageNames; } /** * {@inheritDoc} */ public function getDevPackageNames() { return $this->devPackageNames; } /** * {@inheritDoc} */ public function write($devMode, InstallationManager $installationManager) { } /** * {@inheritDoc} */ public function reload() { } /** * {@inheritDoc} */ public function getCanonicalPackages() { $packages = $this->getPackages(); // get at most one package of each name, preferring non-aliased ones $packagesByName = array(); foreach ($packages as $package) { if (!isset($packagesByName[$package->getName()]) || $packagesByName[$package->getName()] instanceof AliasPackage) { $packagesByName[$package->getName()] = $package; } } $canonicalPackages = array(); // unfold aliased packages foreach ($packagesByName as $package) { while ($package instanceof AliasPackage) { $package = $package->getAliasOf(); } $canonicalPackages[] = $package; } return $canonicalPackages; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Repository; /** * Installed filesystem repository. * * @author Jordi Boggiano */ class InstalledFilesystemRepository extends FilesystemRepository implements InstalledRepositoryInterface { public function getRepoName() { return 'installed '.parent::getRepoName(); } /** * {@inheritDoc} */ public function isFresh() { return !$this->file->exists(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Console; use Composer\IO\IOInterface; final class GithubActionError { /** * @var IOInterface */ protected $io; public function __construct(IOInterface $io) { $this->io = $io; } /** * @param string $message * @param null|string $file * @param null|int $line */ public function emit($message, $file = null, $line = null) { if (getenv('GITHUB_ACTIONS') && !getenv('COMPOSER_TESTS_ARE_RUNNING')) { // newlines need to be encoded // see https://github.com/actions/starter-workflows/issues/68#issuecomment-581479448 $message = str_replace("\n", '%0A', $message); if ($file && $line) { $this->io->write("::error file=". $file .",line=". $line ."::". $message); } elseif ($file) { $this->io->write("::error file=". $file ."::". $message); } else { $this->io->write("::error ::". $message); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Console; use Symfony\Component\Console\Formatter\OutputFormatter; /** * @author Jordi Boggiano */ class HtmlOutputFormatter extends OutputFormatter { private static $availableForegroundColors = array( 30 => 'black', 31 => 'red', 32 => 'green', 33 => 'yellow', 34 => 'blue', 35 => 'magenta', 36 => 'cyan', 37 => 'white', ); private static $availableBackgroundColors = array( 40 => 'black', 41 => 'red', 42 => 'green', 43 => 'yellow', 44 => 'blue', 45 => 'magenta', 46 => 'cyan', 47 => 'white', ); private static $availableOptions = array( 1 => 'bold', 4 => 'underscore', //5 => 'blink', //7 => 'reverse', //8 => 'conceal' ); /** * @param array $styles Array of "name => FormatterStyle" instances */ public function __construct(array $styles = array()) { parent::__construct(true, $styles); } public function format($message) { $formatted = parent::format($message); $clearEscapeCodes = '(?:39|49|0|22|24|25|27|28)'; return preg_replace_callback("{\033\[([0-9;]+)m(.*?)\033\[(?:".$clearEscapeCodes.";)*?".$clearEscapeCodes."m}s", array($this, 'formatHtml'), $formatted); } private function formatHtml($matches) { $out = ''.$matches[2].''; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Console; use Composer\IO\NullIO; use Composer\Util\Platform; use Composer\Util\Silencer; use Symfony\Component\Console\Application as BaseApplication; use Symfony\Component\Console\Exception\CommandNotFoundException; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Seld\JsonLint\ParsingException; use Composer\Command; use Composer\Composer; use Composer\Factory; use Composer\IO\IOInterface; use Composer\IO\ConsoleIO; use Composer\Json\JsonValidationException; use Composer\Util\ErrorHandler; use Composer\Util\HttpDownloader; use Composer\EventDispatcher\ScriptExecutionException; use Composer\Exception\NoSslException; /** * The console application that handles the commands * * @author Ryan Weaver * @author Jordi Boggiano * @author François Pluchino */ class Application extends BaseApplication { /** * @var Composer */ protected $composer; /** * @var IOInterface */ protected $io; private static $logo = ' ______ / ____/___ ____ ___ ____ ____ ________ _____ / / / __ \/ __ `__ \/ __ \/ __ \/ ___/ _ \/ ___/ / /___/ /_/ / / / / / / /_/ / /_/ (__ ) __/ / \____/\____/_/ /_/ /_/ .___/\____/____/\___/_/ /_/ '; private $hasPluginCommands = false; private $disablePluginsByDefault = false; /** * @var string Store the initial working directory at startup time */ private $initialWorkingDirectory; public function __construct() { static $shutdownRegistered = false; if (function_exists('ini_set') && extension_loaded('xdebug')) { ini_set('xdebug.show_exception_trace', false); ini_set('xdebug.scream', false); } if (function_exists('date_default_timezone_set') && function_exists('date_default_timezone_get')) { date_default_timezone_set(Silencer::call('date_default_timezone_get')); } if (!$shutdownRegistered) { if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { pcntl_async_signals(true); pcntl_signal(SIGINT, function ($sig) { exit(130); }); } $shutdownRegistered = true; register_shutdown_function(function () { $lastError = error_get_last(); if ($lastError && $lastError['message'] && (strpos($lastError['message'], 'Allowed memory') !== false /*Zend PHP out of memory error*/ || strpos($lastError['message'], 'exceeded memory') !== false /*HHVM out of memory errors*/)) { echo "\n". 'Check https://getcomposer.org/doc/articles/troubleshooting.md#memory-limit-errors for more info on how to handle out of memory errors.'; } }); } $this->io = new NullIO(); $this->initialWorkingDirectory = getcwd(); parent::__construct('Composer', Composer::getVersion()); } /** * {@inheritDoc} */ public function run(InputInterface $input = null, OutputInterface $output = null) { if (null === $output) { $output = Factory::createOutput(); } return parent::run($input, $output); } /** * {@inheritDoc} */ public function doRun(InputInterface $input, OutputInterface $output) { $this->disablePluginsByDefault = $input->hasParameterOption('--no-plugins'); if (getenv('COMPOSER_NO_INTERACTION') || !Platform::isTty(defined('STDIN') ? STDIN : fopen('php://stdin', 'r'))) { $input->setInteractive(false); } $io = $this->io = new ConsoleIO($input, $output, new HelperSet(array( new QuestionHelper(), ))); ErrorHandler::register($io); if ($input->hasParameterOption('--no-cache')) { $io->writeError('Disabling cache usage', true, IOInterface::DEBUG); $_SERVER['COMPOSER_CACHE_DIR'] = Platform::isWindows() ? 'nul' : '/dev/null'; putenv('COMPOSER_CACHE_DIR='.$_SERVER['COMPOSER_CACHE_DIR']); } // switch working dir if ($newWorkDir = $this->getNewWorkingDir($input)) { $oldWorkingDir = getcwd(); chdir($newWorkDir); $this->initialWorkingDirectory = $newWorkDir; $io->writeError('Changed CWD to ' . getcwd(), true, IOInterface::DEBUG); } // determine command name to be executed without including plugin commands $commandName = ''; if ($name = $this->getCommandName($input)) { try { $commandName = $this->find($name)->getName(); } catch (CommandNotFoundException $e) { // we'll check command validity again later after plugins are loaded $commandName = false; } catch (\InvalidArgumentException $e) { } } // prompt user for dir change if no composer.json is present in current dir if ($io->isInteractive() && !$newWorkDir && !in_array($commandName, array('', 'list', 'init', 'about', 'help', 'diagnose', 'self-update', 'global', 'create-project', 'outdated'), true) && !file_exists(Factory::getComposerFile())) { $dir = dirname(getcwd()); $home = realpath(getenv('HOME') ?: getenv('USERPROFILE') ?: '/'); // abort when we reach the home dir or top of the filesystem while (dirname($dir) !== $dir && $dir !== $home) { if (file_exists($dir.'/'.Factory::getComposerFile())) { if ($io->askConfirmation('No composer.json in current directory, do you want to use the one at '.$dir.'? [Y,n]? ')) { $oldWorkingDir = getcwd(); chdir($dir); } break; } $dir = dirname($dir); } } if (!$this->disablePluginsByDefault && !$this->hasPluginCommands && 'global' !== $commandName) { try { foreach ($this->getPluginCommands() as $command) { if ($this->has($command->getName())) { $io->writeError('Plugin command '.$command->getName().' ('.get_class($command).') would override a Composer command and has been skipped'); } else { $this->add($command); } } } catch (NoSslException $e) { // suppress these as they are not relevant at this point } catch (ParsingException $e) { $details = $e->getDetails(); $file = realpath(Factory::getComposerFile()); $line = null; if ($details && isset($details['line'])) { $line = $details['line']; } $ghe = new GithubActionError($this->io); $ghe->emit($e->getMessage(), $file, $line); throw $e; } $this->hasPluginCommands = true; } // determine command name to be executed incl plugin commands, and check if it's a proxy command $isProxyCommand = false; if ($name = $this->getCommandName($input)) { try { $command = $this->find($name); $commandName = $command->getName(); $isProxyCommand = ($command instanceof Command\BaseCommand && $command->isProxyCommand()); } catch (\InvalidArgumentException $e) { } } if (!$isProxyCommand) { $io->writeError(sprintf( 'Running %s (%s) with %s on %s', Composer::getVersion(), Composer::RELEASE_DATE, defined('HHVM_VERSION') ? 'HHVM '.HHVM_VERSION : 'PHP '.PHP_VERSION, function_exists('php_uname') ? php_uname('s') . ' / ' . php_uname('r') : 'Unknown OS' ), true, IOInterface::DEBUG); if (PHP_VERSION_ID < 50302) { $io->writeError('Composer only officially supports PHP 5.3.2 and above, you will most likely encounter problems with your PHP '.PHP_VERSION.', upgrading is strongly recommended.'); } if (extension_loaded('xdebug') && !getenv('COMPOSER_DISABLE_XDEBUG_WARN')) { $io->writeError('Composer is operating slower than normal because you have Xdebug enabled. See https://getcomposer.org/xdebug'); } if (defined('COMPOSER_DEV_WARNING_TIME') && $commandName !== 'self-update' && $commandName !== 'selfupdate' && time() > COMPOSER_DEV_WARNING_TIME) { $io->writeError(sprintf('Warning: This development build of Composer is over 60 days old. It is recommended to update it by running "%s self-update" to get the latest version.', $_SERVER['PHP_SELF'])); } if ( !Platform::isWindows() && function_exists('exec') && !getenv('COMPOSER_ALLOW_SUPERUSER') && (ini_get('open_basedir') || !file_exists('/.dockerenv')) ) { if (function_exists('posix_getuid') && posix_getuid() === 0) { if ($commandName !== 'self-update' && $commandName !== 'selfupdate') { $io->writeError('Do not run Composer as root/super user! See https://getcomposer.org/root for details'); if ($io->isInteractive()) { if (!$io->askConfirmation('Continue as root/super user [yes]? ')) { return 1; } } } if ($uid = (int) getenv('SUDO_UID')) { // Silently clobber any sudo credentials on the invoking user to avoid privilege escalations later on // ref. https://github.com/composer/composer/issues/5119 Silencer::call('exec', "sudo -u \\#{$uid} sudo -K > /dev/null 2>&1"); } } // Silently clobber any remaining sudo leases on the current user as well to avoid privilege escalations Silencer::call('exec', 'sudo -K > /dev/null 2>&1'); } // Check system temp folder for usability as it can cause weird runtime issues otherwise Silencer::call(function () use ($io) { $tempfile = sys_get_temp_dir() . '/temp-' . md5(microtime()); if (!(file_put_contents($tempfile, __FILE__) && (file_get_contents($tempfile) == __FILE__) && unlink($tempfile) && !file_exists($tempfile))) { $io->writeError(sprintf('PHP temp directory (%s) does not exist or is not writable to Composer. Set sys_temp_dir in your php.ini', sys_get_temp_dir())); } }); // add non-standard scripts as own commands $file = Factory::getComposerFile(); if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { if (isset($composer['scripts']) && is_array($composer['scripts'])) { foreach ($composer['scripts'] as $script => $dummy) { if (!defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { if ($this->has($script)) { $io->writeError('A script named '.$script.' would override a Composer command and has been skipped'); } else { $description = null; if (isset($composer['scripts-descriptions'][$script])) { $description = $composer['scripts-descriptions'][$script]; } $this->add(new Command\ScriptAliasCommand($script, $description)); } } } } } } try { if ($input->hasParameterOption('--profile')) { $startTime = microtime(true); $this->io->enableDebugging($startTime); } $result = parent::doRun($input, $output); // chdir back to $oldWorkingDir if set if (isset($oldWorkingDir)) { Silencer::call('chdir', $oldWorkingDir); } if (isset($startTime)) { $io->writeError('Memory usage: '.round(memory_get_usage() / 1024 / 1024, 2).'MiB (peak: '.round(memory_get_peak_usage() / 1024 / 1024, 2).'MiB), time: '.round(microtime(true) - $startTime, 2).'s'); } restore_error_handler(); return $result; } catch (ScriptExecutionException $e) { return (int) $e->getCode(); } catch (\Exception $e) { $ghe = new GithubActionError($this->io); $ghe->emit($e->getMessage()); $this->hintCommonErrors($e); restore_error_handler(); throw $e; } } /** * @param InputInterface $input * @throws \RuntimeException * @return string */ private function getNewWorkingDir(InputInterface $input) { $workingDir = $input->getParameterOption(array('--working-dir', '-d')); if (false !== $workingDir && !is_dir($workingDir)) { throw new \RuntimeException('Invalid working directory specified, '.$workingDir.' does not exist.'); } return $workingDir; } /** * {@inheritDoc} */ private function hintCommonErrors($exception) { $io = $this->getIO(); Silencer::suppress(); try { $composer = $this->getComposer(false, true); if ($composer) { $config = $composer->getConfig(); $minSpaceFree = 1024 * 1024; if ((($df = disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) || (($df = disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) || (($df = disk_free_space($dir = sys_get_temp_dir())) !== false && $df < $minSpaceFree) ) { $io->writeError('The disk hosting '.$dir.' is full, this may be the cause of the following exception', true, IOInterface::QUIET); } } } catch (\Exception $e) { } Silencer::restore(); if (Platform::isWindows() && false !== strpos($exception->getMessage(), 'The system cannot find the path specified')) { $io->writeError('The following exception may be caused by a stale entry in your cmd.exe AutoRun', true, IOInterface::QUIET); $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#-the-system-cannot-find-the-path-specified-windows- for details', true, IOInterface::QUIET); } if (false !== strpos($exception->getMessage(), 'fork failed - Cannot allocate memory')) { $io->writeError('The following exception is caused by a lack of memory or swap, or not having swap configured', true, IOInterface::QUIET); $io->writeError('Check https://getcomposer.org/doc/articles/troubleshooting.md#proc-open-fork-failed-errors for details', true, IOInterface::QUIET); } if ($hints = HttpDownloader::getExceptionHints($exception)) { foreach ($hints as $hint) { $io->writeError($hint, true, IOInterface::QUIET); } } } /** * @param bool $required * @param bool|null $disablePlugins * @throws JsonValidationException * @return \Composer\Composer */ public function getComposer($required = true, $disablePlugins = null) { if (null === $disablePlugins) { $disablePlugins = $this->disablePluginsByDefault; } if (null === $this->composer) { try { $this->composer = Factory::create($this->io, null, $disablePlugins); } catch (\InvalidArgumentException $e) { if ($required) { $this->io->writeError($e->getMessage()); exit(1); } } catch (JsonValidationException $e) { $errors = ' - ' . implode(PHP_EOL . ' - ', $e->getErrors()); $message = $e->getMessage() . ':' . PHP_EOL . $errors; throw new JsonValidationException($message); } } return $this->composer; } /** * Removes the cached composer instance */ public function resetComposer() { $this->composer = null; if ($this->getIO() && method_exists($this->getIO(), 'resetAuthentications')) { $this->getIO()->resetAuthentications(); } } /** * @return IOInterface */ public function getIO() { return $this->io; } public function getHelp() { return self::$logo . parent::getHelp(); } /** * Initializes all the composer commands. */ protected function getDefaultCommands() { $commands = array_merge(parent::getDefaultCommands(), array( new Command\AboutCommand(), new Command\ConfigCommand(), new Command\DependsCommand(), new Command\ProhibitsCommand(), new Command\InitCommand(), new Command\InstallCommand(), new Command\CreateProjectCommand(), new Command\UpdateCommand(), new Command\SearchCommand(), new Command\ValidateCommand(), new Command\ShowCommand(), new Command\SuggestsCommand(), new Command\RequireCommand(), new Command\DumpAutoloadCommand(), new Command\StatusCommand(), new Command\ArchiveCommand(), new Command\DiagnoseCommand(), new Command\RunScriptCommand(), new Command\LicensesCommand(), new Command\GlobalCommand(), new Command\ClearCacheCommand(), new Command\RemoveCommand(), new Command\HomeCommand(), new Command\ExecCommand(), new Command\OutdatedCommand(), new Command\CheckPlatformReqsCommand(), new Command\FundCommand(), )); if (strpos(__FILE__, 'phar:') === 0) { $commands[] = new Command\SelfUpdateCommand(); } return $commands; } /** * {@inheritDoc} */ public function getLongVersion() { if (Composer::BRANCH_ALIAS_VERSION && Composer::BRANCH_ALIAS_VERSION !== '@package_branch_alias_version'.'@') { return sprintf( '%s version %s (%s) %s', $this->getName(), Composer::BRANCH_ALIAS_VERSION, $this->getVersion(), Composer::RELEASE_DATE ); } return parent::getLongVersion() . ' ' . Composer::RELEASE_DATE; } /** * {@inheritDoc} */ protected function getDefaultInputDefinition() { $definition = parent::getDefaultInputDefinition(); $definition->addOption(new InputOption('--profile', null, InputOption::VALUE_NONE, 'Display timing and memory usage information')); $definition->addOption(new InputOption('--no-plugins', null, InputOption::VALUE_NONE, 'Whether to disable plugins.')); $definition->addOption(new InputOption('--working-dir', '-d', InputOption::VALUE_REQUIRED, 'If specified, use the given directory as working directory.')); $definition->addOption(new InputOption('--no-cache', null, InputOption::VALUE_NONE, 'Prevent use of the cache')); return $definition; } private function getPluginCommands() { $commands = array(); $composer = $this->getComposer(false, false); if (null === $composer) { $composer = Factory::createGlobal($this->io); } if (null !== $composer) { $pm = $composer->getPluginManager(); foreach ($pm->getPluginCapabilities('Composer\Plugin\Capability\CommandProvider', array('composer' => $composer, 'io' => $this->io)) as $capability) { $newCommands = $capability->getCommands(); if (!is_array($newCommands)) { throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' failed to return an array from getCommands'); } foreach ($newCommands as $command) { if (!$command instanceof Command\BaseCommand) { throw new \UnexpectedValueException('Plugin capability '.get_class($capability).' returned an invalid value, we expected an array of Composer\Command\BaseCommand objects'); } } $commands = array_merge($commands, $newCommands); } } return $commands; } /** * Get the working directory at startup time * * @return string */ public function getInitialWorkingDirectory() { return $this->initialWorkingDirectory; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Question; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Question\Question; /** * Represents a yes/no question * Enforces strict responses rather than non-standard answers counting as default * Based on Symfony\Component\Console\Question\ConfirmationQuestion * * @author Theo Tonge */ class StrictConfirmationQuestion extends Question { private $trueAnswerRegex; private $falseAnswerRegex; /** * Constructor.s * * @param string $question The question to ask to the user * @param bool $default The default answer to return, true or false * @param string $trueAnswerRegex A regex to match the "yes" answer * @param string $falseAnswerRegex A regex to match the "no" answer */ public function __construct($question, $default = true, $trueAnswerRegex = '/^y(?:es)?$/i', $falseAnswerRegex = '/^no?$/i') { parent::__construct($question, (bool) $default); $this->trueAnswerRegex = $trueAnswerRegex; $this->falseAnswerRegex = $falseAnswerRegex; $this->setNormalizer($this->getDefaultNormalizer()); $this->setValidator($this->getDefaultValidator()); } /** * Returns the default answer normalizer. * * @return callable */ private function getDefaultNormalizer() { $default = $this->getDefault(); $trueRegex = $this->trueAnswerRegex; $falseRegex = $this->falseAnswerRegex; return function ($answer) use ($default, $trueRegex, $falseRegex) { if (is_bool($answer)) { return $answer; } if (empty($answer) && !empty($default)) { return $default; } if (preg_match($trueRegex, $answer)) { return true; } if (preg_match($falseRegex, $answer)) { return false; } return null; }; } /** * Returns the default answer validator. * * @return callable */ private function getDefaultValidator() { return function ($answer) { if (!is_bool($answer)) { throw new InvalidArgumentException('Please answer yes, y, no, or n.'); } return $answer; }; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Semver\Constraint\ConstraintInterface; /** * Represents a link between two packages, represented by their names * * @author Nils Adermann */ class Link { const TYPE_REQUIRE = 'requires'; const TYPE_DEV_REQUIRE = 'devRequires'; const TYPE_PROVIDE = 'provides'; const TYPE_CONFLICT = 'conflicts'; const TYPE_REPLACE = 'replaces'; /** * Will be converted into a constant once the min PHP version allows this * * @internal * @var string[] */ public static $TYPES = array( self::TYPE_REQUIRE, self::TYPE_DEV_REQUIRE, self::TYPE_PROVIDE, self::TYPE_CONFLICT, self::TYPE_REPLACE, ); /** * @var string */ protected $source; /** * @var string */ protected $target; /** * @var ConstraintInterface */ protected $constraint; /** * @var string * @phpstan-var self::TYPE_* $description */ protected $description; /** * @var string|null */ protected $prettyConstraint; /** * Creates a new package link. * * @param string $source * @param string $target * @param ConstraintInterface $constraint Constraint applying to the target of this link * @param string $description Used to create a descriptive string representation * @phpstan-param self::TYPE_* $description * @param string|null $prettyConstraint */ public function __construct( $source, $target, ConstraintInterface $constraint, $description = 'relates to', $prettyConstraint = null ) { $this->source = strtolower($source); $this->target = strtolower($target); $this->constraint = $constraint; $this->description = $description; $this->prettyConstraint = $prettyConstraint; } /** * @return string */ public function getDescription() { return $this->description; } /** * @return string */ public function getSource() { return $this->source; } /** * @return string */ public function getTarget() { return $this->target; } /** * @return ConstraintInterface */ public function getConstraint() { return $this->constraint; } /** * @throws \UnexpectedValueException If no pretty constraint was provided * @return string */ public function getPrettyConstraint() { if (null === $this->prettyConstraint) { throw new \UnexpectedValueException(sprintf('Link %s has been misconfigured and had no prettyConstraint given.', $this)); } return $this->prettyConstraint; } /** * @return string */ public function __toString() { return $this->source.' '.$this->description.' '.$this->target.' ('.$this->constraint.')'; } /** * @param PackageInterface $sourcePackage * @return string */ public function getPrettyString(PackageInterface $sourcePackage) { return $sourcePackage->getPrettyString().' '.$this->description.' '.$this->target.($this->constraint ? ' '.$this->constraint->getPrettyString() : ''); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Json\JsonFile; use Composer\Installer\InstallationManager; use Composer\Repository\LockArrayRepository; use Composer\Util\ProcessExecutor; use Composer\Package\Dumper\ArrayDumper; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Version\VersionParser; use Composer\Plugin\PluginInterface; use Composer\Util\Git as GitUtil; use Composer\IO\IOInterface; use Seld\JsonLint\ParsingException; /** * Reads/writes project lockfile (composer.lock). * * @author Konstantin Kudryashiv * @author Jordi Boggiano */ class Locker { /** @var JsonFile */ private $lockFile; /** @var InstallationManager */ private $installationManager; /** @var string */ private $hash; /** @var string */ private $contentHash; /** @var ArrayLoader */ private $loader; /** @var ArrayDumper */ private $dumper; /** @var ProcessExecutor */ private $process; private $lockDataCache; private $virtualFileWritten; /** * Initializes packages locker. * * @param IOInterface $io * @param JsonFile $lockFile lockfile loader * @param InstallationManager $installationManager installation manager instance * @param string $composerFileContents The contents of the composer file */ public function __construct(IOInterface $io, JsonFile $lockFile, InstallationManager $installationManager, $composerFileContents, ProcessExecutor $process = null) { $this->lockFile = $lockFile; $this->installationManager = $installationManager; $this->hash = md5($composerFileContents); $this->contentHash = self::getContentHash($composerFileContents); $this->loader = new ArrayLoader(null, true); $this->dumper = new ArrayDumper(); $this->process = $process ?: new ProcessExecutor($io); } /** * Returns the md5 hash of the sorted content of the composer file. * * @param string $composerFileContents The contents of the composer file. * * @return string */ public static function getContentHash($composerFileContents) { $content = json_decode($composerFileContents, true); $relevantKeys = array( 'name', 'version', 'require', 'require-dev', 'conflict', 'replace', 'provide', 'minimum-stability', 'prefer-stable', 'repositories', 'extra', ); $relevantContent = array(); foreach (array_intersect($relevantKeys, array_keys($content)) as $key) { $relevantContent[$key] = $content[$key]; } if (isset($content['config']['platform'])) { $relevantContent['config']['platform'] = $content['config']['platform']; } ksort($relevantContent); return md5(json_encode($relevantContent)); } /** * Checks whether locker has been locked (lockfile found). * * @return bool */ public function isLocked() { if (!$this->virtualFileWritten && !$this->lockFile->exists()) { return false; } $data = $this->getLockData(); return isset($data['packages']); } /** * Checks whether the lock file is still up to date with the current hash * * @return bool */ public function isFresh() { $lock = $this->lockFile->read(); if (!empty($lock['content-hash'])) { // There is a content hash key, use that instead of the file hash return $this->contentHash === $lock['content-hash']; } // BC support for old lock files without content-hash if (!empty($lock['hash'])) { return $this->hash === $lock['hash']; } // should not be reached unless the lock file is corrupted, so assume it's out of date return false; } /** * Searches and returns an array of locked packages, retrieved from registered repositories. * * @param bool $withDevReqs true to retrieve the locked dev packages * @throws \RuntimeException * @return \Composer\Repository\LockArrayRepository */ public function getLockedRepository($withDevReqs = false) { $lockData = $this->getLockData(); $packages = new LockArrayRepository(); $lockedPackages = $lockData['packages']; if ($withDevReqs) { if (isset($lockData['packages-dev'])) { $lockedPackages = array_merge($lockedPackages, $lockData['packages-dev']); } else { throw new \RuntimeException('The lock file does not contain require-dev information, run install with the --no-dev option or delete it and run composer update to generate a new lock file.'); } } if (empty($lockedPackages)) { return $packages; } if (isset($lockedPackages[0]['name'])) { $packageByName = array(); foreach ($lockedPackages as $info) { $package = $this->loader->load($info); $packages->addPackage($package); $packageByName[$package->getName()] = $package; if ($package instanceof AliasPackage) { $packageByName[$package->getAliasOf()->getName()] = $package->getAliasOf(); } } if (isset($lockData['aliases'])) { foreach ($lockData['aliases'] as $alias) { if (isset($packageByName[$alias['package']])) { $aliasPkg = new AliasPackage($packageByName[$alias['package']], $alias['alias_normalized'], $alias['alias']); $aliasPkg->setRootPackageAlias(true); $packages->addPackage($aliasPkg); } } } return $packages; } throw new \RuntimeException('Your composer.lock is invalid. Run "composer update" to generate a new one.'); } /** * @return string[] Names of dependencies installed through require-dev */ public function getDevPackageNames() { $names = array(); $lockData = $this->getLockData(); if (isset($lockData['packages-dev'])) { foreach ($lockData['packages-dev'] as $package) { $names[] = strtolower($package['name']); } } return $names; } /** * Returns the platform requirements stored in the lock file * * @param bool $withDevReqs if true, the platform requirements from the require-dev block are also returned * @return \Composer\Package\Link[] */ public function getPlatformRequirements($withDevReqs = false) { $lockData = $this->getLockData(); $requirements = array(); if (!empty($lockData['platform'])) { $requirements = $this->loader->parseLinks( '__root__', '1.0.0', Link::TYPE_REQUIRE, isset($lockData['platform']) ? $lockData['platform'] : array() ); } if ($withDevReqs && !empty($lockData['platform-dev'])) { $devRequirements = $this->loader->parseLinks( '__root__', '1.0.0', Link::TYPE_REQUIRE, isset($lockData['platform-dev']) ? $lockData['platform-dev'] : array() ); $requirements = array_merge($requirements, $devRequirements); } return $requirements; } public function getMinimumStability() { $lockData = $this->getLockData(); return isset($lockData['minimum-stability']) ? $lockData['minimum-stability'] : 'stable'; } public function getStabilityFlags() { $lockData = $this->getLockData(); return isset($lockData['stability-flags']) ? $lockData['stability-flags'] : array(); } public function getPreferStable() { $lockData = $this->getLockData(); // return null if not set to allow caller logic to choose the // right behavior since old lock files have no prefer-stable return isset($lockData['prefer-stable']) ? $lockData['prefer-stable'] : null; } public function getPreferLowest() { $lockData = $this->getLockData(); // return null if not set to allow caller logic to choose the // right behavior since old lock files have no prefer-lowest return isset($lockData['prefer-lowest']) ? $lockData['prefer-lowest'] : null; } public function getPlatformOverrides() { $lockData = $this->getLockData(); return isset($lockData['platform-overrides']) ? $lockData['platform-overrides'] : array(); } public function getAliases() { $lockData = $this->getLockData(); return isset($lockData['aliases']) ? $lockData['aliases'] : array(); } public function getLockData() { if (null !== $this->lockDataCache) { return $this->lockDataCache; } if (!$this->lockFile->exists()) { throw new \LogicException('No lockfile found. Unable to read locked packages'); } return $this->lockDataCache = $this->lockFile->read(); } /** * Locks provided data into lockfile. * * @param array $packages array of packages * @param mixed $devPackages array of dev packages or null if installed without --dev * @param array $platformReqs array of package name => constraint for required platform packages * @param mixed $platformDevReqs array of package name => constraint for dev-required platform packages * @param array $aliases array of aliases * @param string $minimumStability * @param array $stabilityFlags * @param bool $preferStable * @param bool $preferLowest * @param array $platformOverrides * @param bool $write Whether to actually write data to disk, useful in tests and for --dry-run * * @return bool */ public function setLockData(array $packages, $devPackages, array $platformReqs, $platformDevReqs, array $aliases, $minimumStability, array $stabilityFlags, $preferStable, $preferLowest, array $platformOverrides, $write = true) { // keep old default branch names normalized to DEFAULT_BRANCH_ALIAS for BC as that is how Composer 1 outputs the lock file // when loading the lock file the version is anyway ignored in Composer 2, so it has no adverse effect $aliases = array_map(function ($alias) { if (in_array($alias['version'], array('dev-master', 'dev-trunk', 'dev-default'), true)) { $alias['version'] = VersionParser::DEFAULT_BRANCH_ALIAS; } return $alias; }, $aliases); $lock = array( '_readme' => array('This file locks the dependencies of your project to a known state', 'Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies', 'This file is @gener'.'ated automatically', ), 'content-hash' => $this->contentHash, 'packages' => null, 'packages-dev' => null, 'aliases' => $aliases, 'minimum-stability' => $minimumStability, 'stability-flags' => $stabilityFlags, 'prefer-stable' => $preferStable, 'prefer-lowest' => $preferLowest, ); $lock['packages'] = $this->lockPackages($packages); if (null !== $devPackages) { $lock['packages-dev'] = $this->lockPackages($devPackages); } $lock['platform'] = $platformReqs; $lock['platform-dev'] = $platformDevReqs; if ($platformOverrides) { $lock['platform-overrides'] = $platformOverrides; } $lock['plugin-api-version'] = PluginInterface::PLUGIN_API_VERSION; try { $isLocked = $this->isLocked(); } catch (ParsingException $e) { $isLocked = false; } if (!$isLocked || $lock !== $this->getLockData()) { if ($write) { $this->lockFile->write($lock); $this->lockDataCache = null; $this->virtualFileWritten = false; } else { $this->virtualFileWritten = true; $this->lockDataCache = JsonFile::parseJson(JsonFile::encode($lock, 448 & JsonFile::JSON_PRETTY_PRINT)); } return true; } return false; } private function lockPackages(array $packages) { $locked = array(); foreach ($packages as $package) { if ($package instanceof AliasPackage) { continue; } $name = $package->getPrettyName(); $version = $package->getPrettyVersion(); if (!$name || !$version) { throw new \LogicException(sprintf( 'Package "%s" has no version or name and can not be locked', $package )); } $spec = $this->dumper->dump($package); unset($spec['version_normalized']); // always move time to the end of the package definition $time = isset($spec['time']) ? $spec['time'] : null; unset($spec['time']); if ($package->isDev() && $package->getInstallationSource() === 'source') { // use the exact commit time of the current reference if it's a dev package $time = $this->getPackageTime($package) ?: $time; } if (null !== $time) { $spec['time'] = $time; } unset($spec['installation-source']); $locked[] = $spec; } usort($locked, function ($a, $b) { $comparison = strcmp($a['name'], $b['name']); if (0 !== $comparison) { return $comparison; } // If it is the same package, compare the versions to make the order deterministic return strcmp($a['version'], $b['version']); }); return $locked; } /** * Returns the packages's datetime for its source reference. * * @param PackageInterface $package The package to scan. * @return string|null The formatted datetime or null if none was found. */ private function getPackageTime(PackageInterface $package) { if (!function_exists('proc_open')) { return null; } $path = realpath($this->installationManager->getInstallPath($package)); $sourceType = $package->getSourceType(); $datetime = null; if ($path && in_array($sourceType, array('git', 'hg'))) { $sourceRef = $package->getSourceReference() ?: $package->getDistReference(); switch ($sourceType) { case 'git': GitUtil::cleanEnv(); if (0 === $this->process->execute('git log -n1 --pretty=%ct '.ProcessExecutor::escape($sourceRef).GitUtil::getNoShowSignatureFlag($this->process), $output, $path) && preg_match('{^\s*\d+\s*$}', $output)) { $datetime = new \DateTime('@'.trim($output), new \DateTimeZone('UTC')); } break; case 'hg': if (0 === $this->process->execute('hg log --template "{date|hgdate}" -r '.ProcessExecutor::escape($sourceRef), $output, $path) && preg_match('{^\s*(\d+)\s*}', $output, $match)) { $datetime = new \DateTime('@'.$match[1], new \DateTimeZone('UTC')); } break; } } return $datetime ? $datetime->format(DATE_RFC3339) : null; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Semver\Constraint\Constraint; use Composer\Package\Version\VersionParser; /** * @author Jordi Boggiano */ class AliasPackage extends BasePackage implements CompletePackageInterface { protected $version; protected $prettyVersion; protected $dev; protected $rootPackageAlias = false; protected $stability; protected $hasSelfVersionRequires = false; /** @var PackageInterface */ protected $aliasOf; /** @var Link[] */ protected $requires; /** @var Link[] */ protected $devRequires; /** @var Link[] */ protected $conflicts; /** @var Link[] */ protected $provides; /** @var Link[] */ protected $replaces; /** * All descendants' constructors should call this parent constructor * * @param PackageInterface $aliasOf The package this package is an alias of * @param string $version The version the alias must report * @param string $prettyVersion The alias's non-normalized version */ public function __construct(PackageInterface $aliasOf, $version, $prettyVersion) { parent::__construct($aliasOf->getName()); $this->version = $version; $this->prettyVersion = $prettyVersion; $this->aliasOf = $aliasOf; $this->stability = VersionParser::parseStability($version); $this->dev = $this->stability === 'dev'; foreach (Link::$TYPES as $type) { $links = $aliasOf->{'get' . ucfirst($type)}(); $this->$type = $this->replaceSelfVersionDependencies($links, $type); } } /** * @return PackageInterface */ public function getAliasOf() { return $this->aliasOf; } /** * {@inheritDoc} */ public function getVersion() { return $this->version; } /** * {@inheritDoc} */ public function getStability() { return $this->stability; } /** * {@inheritDoc} */ public function getPrettyVersion() { return $this->prettyVersion; } /** * {@inheritDoc} */ public function isDev() { return $this->dev; } /** * {@inheritDoc} */ public function getRequires() { return $this->requires; } /** * {@inheritDoc} */ public function getConflicts() { return $this->conflicts; } /** * {@inheritDoc} */ public function getProvides() { return $this->provides; } /** * {@inheritDoc} */ public function getReplaces() { return $this->replaces; } /** * {@inheritDoc} */ public function getDevRequires() { return $this->devRequires; } /** * Stores whether this is an alias created by an aliasing in the requirements of the root package or not * * Use by the policy for sorting manually aliased packages first, see #576 * * @param bool $value * * @return mixed */ public function setRootPackageAlias($value) { return $this->rootPackageAlias = $value; } /** * @see setRootPackageAlias * @return bool */ public function isRootPackageAlias() { return $this->rootPackageAlias; } /** * @param Link[] $links * @param string $linkType * * @return Link[] */ protected function replaceSelfVersionDependencies(array $links, $linkType) { // for self.version requirements, we use the original package's branch name instead, to avoid leaking the magic dev-master-alias to users $prettyVersion = $this->prettyVersion; if ($prettyVersion === VersionParser::DEFAULT_BRANCH_ALIAS) { $prettyVersion = $this->aliasOf->getPrettyVersion(); } if (\in_array($linkType, array(Link::TYPE_CONFLICT, Link::TYPE_PROVIDE, Link::TYPE_REPLACE), true)) { $newLinks = array(); foreach ($links as $link) { // link is self.version, but must be replacing also the replaced version if ('self.version' === $link->getPrettyConstraint()) { $newLinks[] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); $constraint->setPrettyString($prettyVersion); } } $links = array_merge($links, $newLinks); } else { foreach ($links as $index => $link) { if ('self.version' === $link->getPrettyConstraint()) { if ($linkType === Link::TYPE_REQUIRE) { $this->hasSelfVersionRequires = true; } $links[$index] = new Link($link->getSource(), $link->getTarget(), $constraint = new Constraint('=', $this->version), $linkType, $prettyVersion); $constraint->setPrettyString($prettyVersion); } } } return $links; } public function hasSelfVersionRequires() { return $this->hasSelfVersionRequires; } /*************************************** * Wrappers around the aliased package * ***************************************/ public function getType() { return $this->aliasOf->getType(); } public function getTargetDir() { return $this->aliasOf->getTargetDir(); } public function getExtra() { return $this->aliasOf->getExtra(); } public function setInstallationSource($type) { $this->aliasOf->setInstallationSource($type); } public function getInstallationSource() { return $this->aliasOf->getInstallationSource(); } public function getSourceType() { return $this->aliasOf->getSourceType(); } public function getSourceUrl() { return $this->aliasOf->getSourceUrl(); } public function getSourceUrls() { return $this->aliasOf->getSourceUrls(); } public function getSourceReference() { return $this->aliasOf->getSourceReference(); } public function setSourceReference($reference) { return $this->aliasOf->setSourceReference($reference); } public function setSourceMirrors($mirrors) { return $this->aliasOf->setSourceMirrors($mirrors); } public function getSourceMirrors() { return $this->aliasOf->getSourceMirrors(); } public function getDistType() { return $this->aliasOf->getDistType(); } public function getDistUrl() { return $this->aliasOf->getDistUrl(); } public function getDistUrls() { return $this->aliasOf->getDistUrls(); } public function getDistReference() { return $this->aliasOf->getDistReference(); } public function setDistReference($reference) { return $this->aliasOf->setDistReference($reference); } public function getDistSha1Checksum() { return $this->aliasOf->getDistSha1Checksum(); } public function setTransportOptions(array $options) { return $this->aliasOf->setTransportOptions($options); } public function getTransportOptions() { return $this->aliasOf->getTransportOptions(); } public function setDistMirrors($mirrors) { return $this->aliasOf->setDistMirrors($mirrors); } public function getDistMirrors() { return $this->aliasOf->getDistMirrors(); } public function getScripts() { return $this->aliasOf->getScripts(); } public function getLicense() { return $this->aliasOf->getLicense(); } public function getAutoload() { return $this->aliasOf->getAutoload(); } public function getDevAutoload() { return $this->aliasOf->getDevAutoload(); } public function getIncludePaths() { return $this->aliasOf->getIncludePaths(); } public function getRepositories() { return $this->aliasOf->getRepositories(); } public function getReleaseDate() { return $this->aliasOf->getReleaseDate(); } public function getBinaries() { return $this->aliasOf->getBinaries(); } public function getKeywords() { return $this->aliasOf->getKeywords(); } public function getDescription() { return $this->aliasOf->getDescription(); } public function getHomepage() { return $this->aliasOf->getHomepage(); } public function getSuggests() { return $this->aliasOf->getSuggests(); } public function getAuthors() { return $this->aliasOf->getAuthors(); } public function getSupport() { return $this->aliasOf->getSupport(); } public function getFunding() { return $this->aliasOf->getFunding(); } public function getNotificationUrl() { return $this->aliasOf->getNotificationUrl(); } public function getArchiveName() { return $this->aliasOf->getArchiveName(); } public function getArchiveExcludes() { return $this->aliasOf->getArchiveExcludes(); } public function isDefaultBranch() { return $this->aliasOf->isDefaultBranch(); } public function isAbandoned() { return $this->aliasOf->isAbandoned(); } public function getReplacementPackage() { return $this->aliasOf->getReplacementPackage(); } public function __toString() { return parent::__toString().' ('.($this->rootPackageAlias ? 'root ' : ''). 'alias of '.$this->aliasOf->getVersion().')'; } public function setDistUrl($url) { return $this->aliasOf->setDistUrl($url); } public function setDistType($type) { return $this->aliasOf->setDistType($type); } public function setSourceDistReferences($reference) { return $this->aliasOf->setSourceDistReferences($reference); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; /** * Defines package metadata that is not necessarily needed for solving and installing packages * * @author Nils Adermann */ interface CompletePackageInterface extends PackageInterface { /** * Returns the scripts of this package * * @return array[] array('script name' => array('listeners')) * @psalm-return array */ public function getScripts(); /** * Returns an array of repositories * * @return array[] Repositories * @psalm-return array */ public function getRepositories(); /** * Returns the package license, e.g. MIT, BSD, GPL * * @return string[] The package licenses */ public function getLicense(); /** * Returns an array of keywords relating to the package * * @return string[] */ public function getKeywords(); /** * Returns the package description * * @return string */ public function getDescription(); /** * Returns the package homepage * * @return string */ public function getHomepage(); /** * Returns an array of authors of the package * * Each item can contain name/homepage/email keys * * @return array[] * @psalm-return array */ public function getAuthors(); /** * Returns the support information * * @return array * @psalm-return array */ public function getSupport(); /** * Returns an array of funding options for the package * * Each item will contain type and url keys * * @return array[] * @psalm-return array */ public function getFunding(); /** * Returns if the package is abandoned or not * * @return bool */ public function isAbandoned(); /** * If the package is abandoned and has a suggested replacement, this method returns it * * @return string */ public function getReplacementPackage(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; /** * The root package represents the project's composer.json and contains additional metadata * * @author Jordi Boggiano */ class RootPackage extends CompletePackage implements RootPackageInterface { const DEFAULT_PRETTY_VERSION = '1.0.0+no-version-set'; protected $minimumStability = 'stable'; protected $preferStable = false; protected $stabilityFlags = array(); protected $config = array(); protected $references = array(); protected $aliases = array(); /** * Set the minimumStability * * @param string $minimumStability */ public function setMinimumStability($minimumStability) { $this->minimumStability = $minimumStability; } /** * {@inheritDoc} */ public function getMinimumStability() { return $this->minimumStability; } /** * Set the stabilityFlags * * @param array $stabilityFlags */ public function setStabilityFlags(array $stabilityFlags) { $this->stabilityFlags = $stabilityFlags; } /** * {@inheritDoc} */ public function getStabilityFlags() { return $this->stabilityFlags; } /** * Set the preferStable * * @param bool $preferStable */ public function setPreferStable($preferStable) { $this->preferStable = $preferStable; } /** * {@inheritDoc} */ public function getPreferStable() { return $this->preferStable; } /** * Set the config * * @param array $config */ public function setConfig(array $config) { $this->config = $config; } /** * {@inheritDoc} */ public function getConfig() { return $this->config; } /** * Set the references * * @param array $references */ public function setReferences(array $references) { $this->references = $references; } /** * {@inheritDoc} */ public function getReferences() { return $this->references; } /** * Set the aliases * * @param array $aliases */ public function setAliases(array $aliases) { $this->aliases = $aliases; } /** * {@inheritDoc} */ public function getAliases() { return $this->aliases; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Version; use Composer\Repository\PlatformRepository; use Composer\Semver\VersionParser as SemverVersionParser; use Composer\Semver\Semver; class VersionParser extends SemverVersionParser { const DEFAULT_BRANCH_ALIAS = '9999999-dev'; private static $constraints = array(); /** * {@inheritDoc} */ public function parseConstraints($constraints) { if (!isset(self::$constraints[$constraints])) { self::$constraints[$constraints] = parent::parseConstraints($constraints); } return self::$constraints[$constraints]; } /** * Parses an array of strings representing package/version pairs. * * The parsing results in an array of arrays, each of which * contain a 'name' key with value and optionally a 'version' key with value. * * @param array $pairs a set of package/version pairs separated by ":", "=" or " " * * @return array[] array of arrays containing a name and (if provided) a version */ public function parseNameVersionPairs(array $pairs) { $pairs = array_values($pairs); $result = array(); for ($i = 0, $count = count($pairs); $i < $count; $i++) { $pair = preg_replace('{^([^=: ]+)[=: ](.*)$}', '$1 $2', trim($pairs[$i])); if (false === strpos($pair, ' ') && isset($pairs[$i + 1]) && false === strpos($pairs[$i + 1], '/') && !PlatformRepository::isPlatformPackage($pairs[$i + 1])) { $pair .= ' '.$pairs[$i + 1]; $i++; } if (strpos($pair, ' ')) { list($name, $version) = explode(' ', $pair, 2); $result[] = array('name' => $name, 'version' => $version); } else { $result[] = array('name' => $pair); } } return $result; } /** * @return bool */ public static function isUpgrade($normalizedFrom, $normalizedTo) { if ($normalizedFrom === $normalizedTo) { return true; } if (in_array($normalizedFrom, array('dev-master', 'dev-trunk', 'dev-default'), true)) { $normalizedFrom = VersionParser::DEFAULT_BRANCH_ALIAS; } if (in_array($normalizedTo, array('dev-master', 'dev-trunk', 'dev-default'), true)) { $normalizedTo = VersionParser::DEFAULT_BRANCH_ALIAS; } if (strpos($normalizedFrom, 'dev-') === 0 || strpos($normalizedTo, 'dev-') === 0) { return true; } $sorted = Semver::sort(array($normalizedTo, $normalizedFrom)); return $sorted[0] === $normalizedFrom; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Version; use Composer\Package\BasePackage; use Composer\Package\AliasPackage; use Composer\Package\PackageInterface; use Composer\Composer; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Dumper\ArrayDumper; use Composer\Repository\RepositorySet; use Composer\Repository\PlatformRepository; use Composer\Semver\Constraint\Constraint; /** * Selects the best possible version for a package * * @author Ryan Weaver * @author Jordi Boggiano */ class VersionSelector { private $repositorySet; private $platformConstraints = array(); private $parser; /** * @param PlatformRepository $platformRepo If passed in, the versions found will be filtered against their requirements to eliminate any not matching the current platform packages */ public function __construct(RepositorySet $repositorySet, PlatformRepository $platformRepo = null) { $this->repositorySet = $repositorySet; if ($platformRepo) { foreach ($platformRepo->getPackages() as $package) { $this->platformConstraints[$package->getName()][] = new Constraint('==', $package->getVersion()); } } } /** * Given a package name and optional version, returns the latest PackageInterface * that matches. * * @param string $packageName * @param string $targetPackageVersion * @param string $preferredStability * @param bool|array $ignorePlatformReqs * @return PackageInterface|false */ public function findBestCandidate($packageName, $targetPackageVersion = null, $preferredStability = 'stable', $ignorePlatformReqs = false, $repoSetFlags = 0) { if (!isset(BasePackage::$stabilities[$preferredStability])) { // If you get this, maybe you are still relying on the Composer 1.x signature where the 3rd arg was the php version throw new \UnexpectedValueException('Expected a valid stability name as 3rd argument, got '.$preferredStability); } $constraint = $targetPackageVersion ? $this->getParser()->parseConstraints($targetPackageVersion) : null; $candidates = $this->repositorySet->findPackages(strtolower($packageName), $constraint, $repoSetFlags); if ($this->platformConstraints && true !== $ignorePlatformReqs) { $platformConstraints = $this->platformConstraints; $ignorePlatformReqs = $ignorePlatformReqs ?: array(); $candidates = array_filter($candidates, function ($pkg) use ($platformConstraints, $ignorePlatformReqs) { $reqs = $pkg->getRequires(); foreach ($reqs as $name => $link) { if (!in_array($name, $ignorePlatformReqs, true) && isset($platformConstraints[$name])) { foreach ($platformConstraints[$name] as $constraint) { if ($link->getConstraint()->matches($constraint)) { continue 2; } } return false; } } return true; }); } if (!$candidates) { return false; } // select highest version if we have many $package = reset($candidates); $minPriority = BasePackage::$stabilities[$preferredStability]; foreach ($candidates as $candidate) { $candidatePriority = $candidate->getStabilityPriority(); $currentPriority = $package->getStabilityPriority(); // candidate is less stable than our preferred stability, // and current package is more stable than candidate, skip it if ($minPriority < $candidatePriority && $currentPriority < $candidatePriority) { continue; } // candidate is less stable than our preferred stability, // and current package is less stable than candidate, select candidate if ($minPriority < $candidatePriority && $candidatePriority < $currentPriority) { $package = $candidate; continue; } // candidate is more stable than our preferred stability, // and current package is less stable than preferred stability, select candidate if ($minPriority >= $candidatePriority && $minPriority < $currentPriority) { $package = $candidate; continue; } // select highest version of the two if (version_compare($package->getVersion(), $candidate->getVersion(), '<')) { $package = $candidate; } } // if we end up with 9999999-dev as selected package, make sure we use the original version instead of the alias if ($package instanceof AliasPackage && $package->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { $package = $package->getAliasOf(); } return $package; } /** * Given a concrete version, this returns a ^ constraint (when possible) * that should be used, for example, in composer.json. * * For example: * * 1.2.1 -> ^1.2 * * 1.2 -> ^1.2 * * v3.2.1 -> ^3.2 * * 2.0-beta.1 -> ^2.0@beta * * dev-master -> ^2.1@dev (dev version with alias) * * dev-master -> dev-master (dev versions are untouched) * * @param PackageInterface $package * @return string */ public function findRecommendedRequireVersion(PackageInterface $package) { $version = $package->getVersion(); if (!$package->isDev()) { return $this->transformVersion($version, $package->getPrettyVersion(), $package->getStability()); } $loader = new ArrayLoader($this->getParser()); $dumper = new ArrayDumper(); $extra = $loader->getBranchAlias($dumper->dump($package)); if ($extra && $extra !== VersionParser::DEFAULT_BRANCH_ALIAS) { $extra = preg_replace('{^(\d+\.\d+\.\d+)(\.9999999)-dev$}', '$1.0', $extra, -1, $count); if ($count) { $extra = str_replace('.9999999', '.0', $extra); return $this->transformVersion($extra, $extra, 'dev'); } } return $package->getPrettyVersion(); } private function transformVersion($version, $prettyVersion, $stability) { // attempt to transform 2.1.1 to 2.1 // this allows you to upgrade through minor versions $semanticVersionParts = explode('.', $version); // check to see if we have a semver-looking version if (count($semanticVersionParts) == 4 && preg_match('{^0\D?}', $semanticVersionParts[3])) { // remove the last parts (i.e. the patch version number and any extra) if ($semanticVersionParts[0] === '0') { unset($semanticVersionParts[3]); } else { unset($semanticVersionParts[2], $semanticVersionParts[3]); } $version = implode('.', $semanticVersionParts); } else { return $prettyVersion; } // append stability flag if not default if ($stability != 'stable') { $version .= '@'.$stability; } // 2.1 -> ^2.1 return '^' . $version; } private function getParser() { if ($this->parser === null) { $this->parser = new VersionParser(); } return $this->parser; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Version; use Composer\Config; use Composer\Repository\Vcs\HgDriver; use Composer\IO\NullIO; use Composer\Semver\VersionParser as SemverVersionParser; use Composer\Util\Git as GitUtil; use Composer\Util\HttpDownloader; use Composer\Util\ProcessExecutor; use Composer\Util\Svn as SvnUtil; /** * Try to guess the current version number based on different VCS configuration. * * @author Jordi Boggiano * @author Samuel Roze */ class VersionGuesser { /** * @var Config */ private $config; /** * @var ProcessExecutor */ private $process; /** * @var SemverVersionParser */ private $versionParser; /** * @param Config $config * @param ProcessExecutor $process * @param SemverVersionParser $versionParser */ public function __construct(Config $config, ProcessExecutor $process, SemverVersionParser $versionParser) { $this->config = $config; $this->process = $process; $this->versionParser = $versionParser; } /** * @param array $packageConfig * @param string $path Path to guess into * * @return null|array versionData, 'version', 'pretty_version' and 'commit' keys, if the version is a feature branch, 'feature_version' and 'feature_pretty_version' keys may also be returned */ public function guessVersion(array $packageConfig, $path) { if (!function_exists('proc_open')) { return null; } $versionData = $this->guessGitVersion($packageConfig, $path); if (null !== $versionData && null !== $versionData['version']) { return $this->postprocess($versionData); } $versionData = $this->guessHgVersion($packageConfig, $path); if (null !== $versionData && null !== $versionData['version']) { return $this->postprocess($versionData); } $versionData = $this->guessFossilVersion($path); if (null !== $versionData && null !== $versionData['version']) { return $this->postprocess($versionData); } $versionData = $this->guessSvnVersion($packageConfig, $path); if (null !== $versionData && null !== $versionData['version']) { return $this->postprocess($versionData); } return null; } private function postprocess(array $versionData) { if (!empty($versionData['feature_version']) && $versionData['feature_version'] === $versionData['version'] && $versionData['feature_pretty_version'] === $versionData['pretty_version']) { unset($versionData['feature_version'], $versionData['feature_pretty_version']); } if ('-dev' === substr($versionData['version'], -4) && preg_match('{\.9{7}}', $versionData['version'])) { $versionData['pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['version']); } if (!empty($versionData['feature_version']) && '-dev' === substr($versionData['feature_version'], -4) && preg_match('{\.9{7}}', $versionData['feature_version'])) { $versionData['feature_pretty_version'] = preg_replace('{(\.9{7})+}', '.x', $versionData['feature_version']); } return $versionData; } private function guessGitVersion(array $packageConfig, $path) { GitUtil::cleanEnv(); $commit = null; $version = null; $prettyVersion = null; $featureVersion = null; $featurePrettyVersion = null; $isDetached = false; // try to fetch current version from git branch if (0 === $this->process->execute('git branch -a --no-color --no-abbrev -v', $output, $path)) { $branches = array(); $isFeatureBranch = false; // find current branch and collect all branch names foreach ($this->process->splitLines($output) as $branch) { if ($branch && preg_match('{^(?:\* ) *(\(no branch\)|\(detached from \S+\)|\(HEAD detached at \S+\)|\S+) *([a-f0-9]+) .*$}', $branch, $match)) { if ( $match[1] === '(no branch)' || strpos($match[1], '(detached ') === 0 || strpos($match[1], '(HEAD detached at') === 0 ) { $version = 'dev-' . $match[2]; $prettyVersion = $version; $isFeatureBranch = true; $isDetached = true; } else { $version = $this->versionParser->normalizeBranch($match[1]); $prettyVersion = 'dev-' . $match[1]; $isFeatureBranch = $this->isFeatureBranch($packageConfig, $match[1]); } if ($match[2]) { $commit = $match[2]; } } if ($branch && !preg_match('{^ *.+/HEAD }', $branch)) { if (preg_match('{^(?:\* )? *((?:remotes/(?:origin|upstream)/)?[^\s/]+) *([a-f0-9]+) .*$}', $branch, $match)) { $branches[] = $match[1]; } } } if ($isFeatureBranch) { $featureVersion = $version; $featurePrettyVersion = $prettyVersion; // try to find the best (nearest) version branch to assume this feature's version $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'git rev-list %candidate%..%branch%', $path); $version = $result['version']; $prettyVersion = $result['pretty_version']; } } if (!$version || $isDetached) { $result = $this->versionFromGitTags($path); if ($result) { $version = $result['version']; $prettyVersion = $result['pretty_version']; $featureVersion = null; $featurePrettyVersion = null; } } if (!$commit) { $command = 'git log --pretty="%H" -n1 HEAD'.GitUtil::getNoShowSignatureFlag($this->process); if (0 === $this->process->execute($command, $output, $path)) { $commit = trim($output) ?: null; } } if ($featureVersion) { return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion, 'feature_version' => $featureVersion, 'feature_pretty_version' => $featurePrettyVersion); } return array('version' => $version, 'commit' => $commit, 'pretty_version' => $prettyVersion); } private function versionFromGitTags($path) { // try to fetch current version from git tags if (0 === $this->process->execute('git describe --exact-match --tags', $output, $path)) { try { $version = $this->versionParser->normalize(trim($output)); return array('version' => $version, 'pretty_version' => trim($output)); } catch (\Exception $e) { } } return null; } private function guessHgVersion(array $packageConfig, $path) { // try to fetch current version from hg branch if (0 === $this->process->execute('hg branch', $output, $path)) { $branch = trim($output); $version = $this->versionParser->normalizeBranch($branch); $isFeatureBranch = 0 === strpos($version, 'dev-'); if (VersionParser::DEFAULT_BRANCH_ALIAS === $version) { return array('version' => $version, 'commit' => null, 'pretty_version' => 'dev-'.$branch); } if (!$isFeatureBranch) { return array('version' => $version, 'commit' => null, 'pretty_version' => $version); } // re-use the HgDriver to fetch branches (this properly includes bookmarks) $io = new NullIO(); $driver = new HgDriver(array('url' => $path), $io, $this->config, new HttpDownloader($io, $this->config), $this->process); $branches = array_keys($driver->getBranches()); // try to find the best (nearest) version branch to assume this feature's version $result = $this->guessFeatureVersion($packageConfig, $version, $branches, 'hg log -r "not ancestors(\'%candidate%\') and ancestors(\'%branch%\')" --template "{node}\\n"', $path); $result['commit'] = ''; $result['feature_version'] = $version; $result['feature_pretty_version'] = $version; return $result; } } private function guessFeatureVersion(array $packageConfig, $version, array $branches, $scmCmdline, $path) { $prettyVersion = $version; // ignore feature branches if they have no branch-alias or self.version is used // and find the branch they came from to use as a version instead if (!isset($packageConfig['extra']['branch-alias'][$version]) || strpos(json_encode($packageConfig), '"self.version"') ) { $branch = preg_replace('{^dev-}', '', $version); $length = PHP_INT_MAX; // return directly, if branch is configured to be non-feature branch if (!$this->isFeatureBranch($packageConfig, $branch)) { return array('version' => $version, 'pretty_version' => $prettyVersion); } // sort local branches first then remote ones // and sort numeric branches below named ones, to make sure if the branch has the same distance from main and 1.10 and 1.9 for example, main is picked // and sort using natural sort so that 1.10 will appear before 1.9 usort($branches, function ($a, $b) { $aRemote = 0 === strpos($a, 'remotes/'); $bRemote = 0 === strpos($b, 'remotes/'); if ($aRemote !== $bRemote) { return $aRemote ? 1 : -1; } return strnatcasecmp($b, $a); }); foreach ($branches as $candidate) { $candidateVersion = preg_replace('{^remotes/\S+/}', '', $candidate); // do not compare against itself or other feature branches if ($candidate === $branch || $this->isFeatureBranch($packageConfig, $candidateVersion)) { continue; } $cmdLine = str_replace(array('%candidate%', '%branch%'), array($candidate, $branch), $scmCmdline); if (0 !== $this->process->execute($cmdLine, $output, $path)) { continue; } if (strlen($output) < $length) { $length = strlen($output); $version = $this->versionParser->normalizeBranch($candidateVersion); $prettyVersion = 'dev-' . $candidateVersion; if ($length === 0) { break; } } } } return array('version' => $version, 'pretty_version' => $prettyVersion); } private function isFeatureBranch(array $packageConfig, $branchName) { $nonFeatureBranches = ''; if (!empty($packageConfig['non-feature-branches'])) { $nonFeatureBranches = implode('|', $packageConfig['non-feature-branches']); } return !preg_match('{^(' . $nonFeatureBranches . '|master|main|latest|next|current|support|tip|trunk|default|develop|\d+\..+)$}', $branchName, $match); } private function guessFossilVersion($path) { $version = null; $prettyVersion = null; // try to fetch current version from fossil if (0 === $this->process->execute('fossil branch list', $output, $path)) { $branch = trim($output); $version = $this->versionParser->normalizeBranch($branch); $prettyVersion = 'dev-' . $branch; } // try to fetch current version from fossil tags if (0 === $this->process->execute('fossil tag list', $output, $path)) { try { $version = $this->versionParser->normalize(trim($output)); $prettyVersion = trim($output); } catch (\Exception $e) { } } return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); } private function guessSvnVersion(array $packageConfig, $path) { SvnUtil::cleanEnv(); // try to fetch current version from svn if (0 === $this->process->execute('svn info --xml', $output, $path)) { $trunkPath = isset($packageConfig['trunk-path']) ? preg_quote($packageConfig['trunk-path'], '#') : 'trunk'; $branchesPath = isset($packageConfig['branches-path']) ? preg_quote($packageConfig['branches-path'], '#') : 'branches'; $tagsPath = isset($packageConfig['tags-path']) ? preg_quote($packageConfig['tags-path'], '#') : 'tags'; $urlPattern = '#.*/(' . $trunkPath . '|(' . $branchesPath . '|' . $tagsPath . ')/(.*))#'; if (preg_match($urlPattern, $output, $matches)) { if (isset($matches[2]) && ($branchesPath === $matches[2] || $tagsPath === $matches[2])) { // we are in a branches path $version = $this->versionParser->normalizeBranch($matches[3]); $prettyVersion = 'dev-' . $matches[3]; return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); } $prettyVersion = trim($matches[1]); if ($prettyVersion === 'trunk') { $version = 'dev-trunk'; } else { $version = $this->versionParser->normalize($prettyVersion); } return array('version' => $version, 'commit' => '', 'pretty_version' => $prettyVersion); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Version; use Composer\Package\BasePackage; /** * @author Jordi Boggiano */ class StabilityFilter { /** * Checks if any of the provided package names in the given stability match the configured acceptable stability and flags * * @param int[] $acceptableStabilities array of stability => BasePackage::STABILITY_* value * @psalm-param array $acceptableStabilities * @param int[] $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @psalm-param array $stabilityFlags * @param string[] $names The package name(s) to check for stability flags * @param string $stability one of 'stable', 'RC', 'beta', 'alpha' or 'dev' * @return bool true if any package name is acceptable */ public static function isPackageAcceptable(array $acceptableStabilities, array $stabilityFlags, $names, $stability) { foreach ($names as $name) { // allow if package matches the package-specific stability flag if (isset($stabilityFlags[$name])) { if (BasePackage::$stabilities[$stability] <= $stabilityFlags[$name]) { return true; } } elseif (isset($acceptableStabilities[$stability])) { // allow if package matches the global stability requirement and has no exception return true; } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; /** * Defines additional fields that are only needed for the root package * * @author Jordi Boggiano */ interface RootPackageInterface extends CompletePackageInterface { /** * Returns a set of package names and their aliases * * @return array */ public function getAliases(); /** * Returns the minimum stability of the package * * @return string */ public function getMinimumStability(); /** * Returns the stability flags to apply to dependencies * * array('foo/bar' => 'dev') * * @return array */ public function getStabilityFlags(); /** * Returns a set of package names and source references that must be enforced on them * * array('foo/bar' => 'abcd1234') * * @return array */ public function getReferences(); /** * Returns true if the root package prefers picking stable packages over unstable ones * * @return bool */ public function getPreferStable(); /** * Returns the root package's configuration * * @return array */ public function getConfig(); /** * Set the required packages * * @param Link[] $requires A set of package links */ public function setRequires(array $requires); /** * Set the recommended packages * * @param Link[] $devRequires A set of package links */ public function setDevRequires(array $devRequires); /** * Set the conflicting packages * * @param Link[] $conflicts A set of package links */ public function setConflicts(array $conflicts); /** * Set the provided virtual packages * * @param Link[] $provides A set of package links */ public function setProvides(array $provides); /** * Set the packages this one replaces * * @param Link[] $replaces A set of package links */ public function setReplaces(array $replaces); /** * Set the repositories * * @param array $repositories */ public function setRepositories($repositories); /** * Set the autoload mapping * * @param array $autoload Mapping of autoloading rules */ public function setAutoload(array $autoload); /** * Set the dev autoload mapping * * @param array $devAutoload Mapping of dev autoloading rules */ public function setDevAutoload(array $devAutoload); /** * Set the stabilityFlags * * @param array $stabilityFlags */ public function setStabilityFlags(array $stabilityFlags); /** * Set the suggested packages * * @param array $suggests A set of package names/comments */ public function setSuggests(array $suggests); /** * @param array $extra */ public function setExtra(array $extra); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Repository\RepositoryInterface; use Composer\Repository\PlatformRepository; /** * Base class for packages providing name storage and default match implementation * * @author Nils Adermann */ abstract class BasePackage implements PackageInterface { /** * @phpstan-var array */ public static $supportedLinkTypes = array( 'require' => array('description' => 'requires', 'method' => Link::TYPE_REQUIRE), 'conflict' => array('description' => 'conflicts', 'method' => Link::TYPE_CONFLICT), 'provide' => array('description' => 'provides', 'method' => Link::TYPE_PROVIDE), 'replace' => array('description' => 'replaces', 'method' => Link::TYPE_REPLACE), 'require-dev' => array('description' => 'requires (for development)', 'method' => Link::TYPE_DEV_REQUIRE), ); const STABILITY_STABLE = 0; const STABILITY_RC = 5; const STABILITY_BETA = 10; const STABILITY_ALPHA = 15; const STABILITY_DEV = 20; public static $stabilities = array( 'stable' => self::STABILITY_STABLE, 'RC' => self::STABILITY_RC, 'beta' => self::STABILITY_BETA, 'alpha' => self::STABILITY_ALPHA, 'dev' => self::STABILITY_DEV, ); /** * READ-ONLY: The package id, public for fast access in dependency solver * @var int */ public $id; /** @var string */ protected $name; /** @var string */ protected $prettyName; /** @var RepositoryInterface */ protected $repository; /** @var array */ protected $transportOptions = array(); /** * All descendants' constructors should call this parent constructor * * @param string $name The package's name */ public function __construct($name) { $this->prettyName = $name; $this->name = strtolower($name); $this->id = -1; } /** * {@inheritDoc} */ public function getName() { return $this->name; } /** * {@inheritDoc} */ public function getPrettyName() { return $this->prettyName; } /** * {@inheritDoc} */ public function getNames($provides = true) { $names = array( $this->getName() => true, ); if ($provides) { foreach ($this->getProvides() as $link) { $names[$link->getTarget()] = true; } } foreach ($this->getReplaces() as $link) { $names[$link->getTarget()] = true; } return array_keys($names); } /** * {@inheritDoc} */ public function setId($id) { $this->id = $id; } /** * {@inheritDoc} */ public function getId() { return $this->id; } /** * {@inheritDoc} */ public function setRepository(RepositoryInterface $repository) { if ($this->repository && $repository !== $this->repository) { throw new \LogicException('A package can only be added to one repository'); } $this->repository = $repository; } /** * {@inheritDoc} */ public function getRepository() { return $this->repository; } /** * {@inheritDoc} */ public function getTransportOptions() { return $this->transportOptions; } /** * Configures the list of options to download package dist files * * @param array $options */ public function setTransportOptions(array $options) { $this->transportOptions = $options; } /** * checks if this package is a platform package * * @return bool */ public function isPlatform() { return $this->getRepository() instanceof PlatformRepository; } /** * Returns package unique name, constructed from name, version and release type. * * @return string */ public function getUniqueName() { return $this->getName().'-'.$this->getVersion(); } public function equals(PackageInterface $package) { $self = $this; if ($this instanceof AliasPackage) { $self = $this->getAliasOf(); } if ($package instanceof AliasPackage) { $package = $package->getAliasOf(); } return $package === $self; } /** * Converts the package into a readable and unique string * * @return string */ public function __toString() { return $this->getUniqueName(); } public function getPrettyString() { return $this->getPrettyName().' '.$this->getPrettyVersion(); } /** * {@inheritDoc} */ public function getFullPrettyVersion($truncate = true, $displayMode = PackageInterface::DISPLAY_SOURCE_REF_IF_DEV) { if ($displayMode === PackageInterface::DISPLAY_SOURCE_REF_IF_DEV && (!$this->isDev() || !\in_array($this->getSourceType(), array('hg', 'git'))) ) { return $this->getPrettyVersion(); } switch ($displayMode) { case PackageInterface::DISPLAY_SOURCE_REF_IF_DEV: case PackageInterface::DISPLAY_SOURCE_REF: $reference = $this->getSourceReference(); break; case PackageInterface::DISPLAY_DIST_REF: $reference = $this->getDistReference(); break; default: throw new \UnexpectedValueException('Display mode '.$displayMode.' is not supported'); } // if source reference is a sha1 hash -- truncate if ($truncate && \strlen($reference) === 40 && $this->getSourceType() !== 'svn') { return $this->getPrettyVersion() . ' ' . substr($reference, 0, 7); } return $this->getPrettyVersion() . ' ' . $reference; } public function getStabilityPriority() { return self::$stabilities[$this->getStability()]; } public function __clone() { $this->repository = null; $this->id = -1; } /** * Build a regexp from a package name, expanding * globs as required * * @param string $allowPattern * @param string $wrap Wrap the cleaned string by the given string * @return string */ public static function packageNameToRegexp($allowPattern, $wrap = '{^%s$}i') { $cleanedAllowPattern = str_replace('\\*', '.*', preg_quote($allowPattern)); return sprintf($wrap, $cleanedAllowPattern); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use Composer\Downloader\DownloadManager; use Composer\Package\PackageInterface; use Composer\Package\RootPackageInterface; use Composer\Util\Filesystem; use Composer\Util\Loop; use Composer\Json\JsonFile; /** * @author Matthieu Moquet * @author Till Klampaeckel */ class ArchiveManager { /** @var DownloadManager */ protected $downloadManager; /** @var Loop */ protected $loop; /** * @var ArchiverInterface[] */ protected $archivers = array(); /** * @var bool */ protected $overwriteFiles = true; /** * @param DownloadManager $downloadManager A manager used to download package sources */ public function __construct(DownloadManager $downloadManager, Loop $loop) { $this->downloadManager = $downloadManager; $this->loop = $loop; } /** * @param ArchiverInterface $archiver */ public function addArchiver(ArchiverInterface $archiver) { $this->archivers[] = $archiver; } /** * Set whether existing archives should be overwritten * * @param bool $overwriteFiles New setting * * @return $this */ public function setOverwriteFiles($overwriteFiles) { $this->overwriteFiles = $overwriteFiles; return $this; } /** * Generate a distinct filename for a particular version of a package. * * @param PackageInterface $package The package to get a name for * * @return string A filename without an extension */ public function getPackageFilename(PackageInterface $package) { if ($package->getArchiveName()) { $baseName = $package->getArchiveName(); } else { $baseName = preg_replace('#[^a-z0-9-_]#i', '-', $package->getName()); } $nameParts = array($baseName); if (preg_match('{^[a-f0-9]{40}$}', $package->getDistReference())) { array_push($nameParts, $package->getDistReference(), $package->getDistType()); } else { array_push($nameParts, $package->getPrettyVersion(), $package->getDistReference()); } if ($package->getSourceReference()) { $nameParts[] = substr(sha1($package->getSourceReference()), 0, 6); } $name = implode('-', array_filter($nameParts, function ($p) { return !empty($p); })); return str_replace('/', '-', $name); } /** * Create an archive of the specified package. * * @param PackageInterface $package The package to archive * @param string $format The format of the archive (zip, tar, ...) * @param string $targetDir The directory where to build the archive * @param string|null $fileName The relative file name to use for the archive, or null to generate * the package name. Note that the format will be appended to this name * @param bool $ignoreFilters Ignore filters when looking for files in the package * @throws \InvalidArgumentException * @throws \RuntimeException * @return string The path of the created archive */ public function archive(PackageInterface $package, $format, $targetDir, $fileName = null, $ignoreFilters = false) { if (empty($format)) { throw new \InvalidArgumentException('Format must be specified'); } // Search for the most appropriate archiver $usableArchiver = null; foreach ($this->archivers as $archiver) { if ($archiver->supports($format, $package->getSourceType())) { $usableArchiver = $archiver; break; } } // Checks the format/source type are supported before downloading the package if (null === $usableArchiver) { throw new \RuntimeException(sprintf('No archiver found to support %s format', $format)); } $filesystem = new Filesystem(); if ($package instanceof RootPackageInterface) { $sourcePath = realpath('.'); } else { // Directory used to download the sources $sourcePath = sys_get_temp_dir().'/composer_archive'.uniqid(); $filesystem->ensureDirectoryExists($sourcePath); try { // Download sources $promise = $this->downloadManager->download($package, $sourcePath); $this->loop->wait(array($promise)); $this->downloadManager->install($package, $sourcePath); } catch (\Exception $e) { $filesystem->removeDirectory($sourcePath); throw $e; } // Check exclude from downloaded composer.json if (file_exists($composerJsonPath = $sourcePath.'/composer.json')) { $jsonFile = new JsonFile($composerJsonPath); $jsonData = $jsonFile->read(); if (!empty($jsonData['archive']['name'])) { $package->setArchiveName($jsonData['archive']['name']); } if (!empty($jsonData['archive']['exclude'])) { $package->setArchiveExcludes($jsonData['archive']['exclude']); } } } if (null === $fileName) { $packageName = $this->getPackageFilename($package); } else { $packageName = $fileName; } // Archive filename $filesystem->ensureDirectoryExists($targetDir); $target = realpath($targetDir).'/'.$packageName.'.'.$format; $filesystem->ensureDirectoryExists(dirname($target)); if (!$this->overwriteFiles && file_exists($target)) { return $target; } // Create the archive $tempTarget = sys_get_temp_dir().'/composer_archive'.uniqid().'.'.$format; $filesystem->ensureDirectoryExists(dirname($tempTarget)); $archivePath = $usableArchiver->archive($sourcePath, $tempTarget, $format, $package->getArchiveExcludes(), $ignoreFilters); $filesystem->rename($archivePath, $target); // cleanup temporary download if (!$package instanceof RootPackageInterface) { $filesystem->removeDirectory($sourcePath); } $filesystem->remove($tempTarget); return $target; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; /** * @author Till Klampaeckel * @author Nils Adermann * @author Matthieu Moquet */ class PharArchiver implements ArchiverInterface { protected static $formats = array( 'zip' => \Phar::ZIP, 'tar' => \Phar::TAR, 'tar.gz' => \Phar::TAR, 'tar.bz2' => \Phar::TAR, ); protected static $compressFormats = array( 'tar.gz' => \Phar::GZ, 'tar.bz2' => \Phar::BZ2, ); /** * {@inheritdoc} */ public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) { $sources = realpath($sources); // Phar would otherwise load the file which we don't want if (file_exists($target)) { unlink($target); } try { $filename = substr($target, 0, strrpos($target, $format) - 1); // Check if compress format if (isset(static::$compressFormats[$format])) { // Current compress format supported base on tar $target = $filename . '.tar'; } $phar = new \PharData($target, null, null, static::$formats[$format]); $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); $filesOnly = new ArchivableFilesFilter($files); $phar->buildFromIterator($filesOnly, $sources); $filesOnly->addEmptyDir($phar, $sources); if (isset(static::$compressFormats[$format])) { // Check can be compressed? if (!$phar->canCompress(static::$compressFormats[$format])) { throw new \RuntimeException(sprintf('Can not compress to %s format', $format)); } // Delete old tar unlink($target); // Compress the new tar $phar->compress(static::$compressFormats[$format]); // Make the correct filename $target = $filename . '.' . $format; } return $target; } catch (\UnexpectedValueException $e) { $message = sprintf( "Could not create archive '%s' from '%s': %s", $target, $sources, $e->getMessage() ); throw new \RuntimeException($message, $e->getCode(), $e); } } /** * {@inheritdoc} */ public function supports($format, $sourceType) { return isset(static::$formats[$format]); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use Composer\Util\Filesystem; use FilesystemIterator; use Symfony\Component\Finder\Finder; use Symfony\Component\Finder\SplFileInfo; /** * A Symfony Finder wrapper which locates files that should go into archives * * Handles .gitignore, .gitattributes and .hgignore files as well as composer's * own exclude rules from composer.json * * @author Nils Adermann */ class ArchivableFilesFinder extends \FilterIterator { /** * @var Finder */ protected $finder; /** * Initializes the internal Symfony Finder with appropriate filters * * @param string $sources Path to source files to be archived * @param array $excludes Composer's own exclude rules from composer.json * @param bool $ignoreFilters Ignore filters when looking for files */ public function __construct($sources, array $excludes, $ignoreFilters = false) { $fs = new Filesystem(); $sources = $fs->normalizePath(realpath($sources)); if ($ignoreFilters) { $filters = array(); } else { $filters = array( new HgExcludeFilter($sources), new GitExcludeFilter($sources), new ComposerExcludeFilter($sources, $excludes), ); } $this->finder = new Finder(); $filter = function (\SplFileInfo $file) use ($sources, $filters, $fs) { if ($file->isLink() && strpos($file->getRealPath(), $sources) !== 0) { return false; } $relativePath = preg_replace( '#^'.preg_quote($sources, '#').'#', '', $fs->normalizePath($file->getRealPath()) ); $exclude = false; foreach ($filters as $filter) { $exclude = $filter->filter($relativePath, $exclude); } return !$exclude; }; if (method_exists($filter, 'bindTo')) { $filter = $filter->bindTo(null); } $this->finder ->in($sources) ->filter($filter) ->ignoreVCS(true) ->ignoreDotFiles(false); parent::__construct($this->finder->getIterator()); } public function accept() { /** @var SplFileInfo $current */ $current = $this->getInnerIterator()->current(); if (!$current->isDir()) { return true; } $iterator = new FilesystemIterator($current, FilesystemIterator::SKIP_DOTS); return !$iterator->valid(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; /** * An exclude filter that processes gitignore and gitattributes * * It respects export-ignore git attributes * * @author Nils Adermann */ class GitExcludeFilter extends BaseExcludeFilter { /** * Parses .gitignore and .gitattributes files if they exist * * @param string $sourcePath */ public function __construct($sourcePath) { parent::__construct($sourcePath); if (file_exists($sourcePath.'/.gitignore')) { $this->excludePatterns = $this->parseLines( file($sourcePath.'/.gitignore'), array($this, 'parseGitIgnoreLine') ); } if (file_exists($sourcePath.'/.gitattributes')) { $this->excludePatterns = array_merge( $this->excludePatterns, $this->parseLines( file($sourcePath.'/.gitattributes'), array($this, 'parseGitAttributesLine') ) ); } } /** * Callback line parser which process gitignore lines * * @param string $line A line from .gitignore * * @return array An exclude pattern for filter() */ public function parseGitIgnoreLine($line) { return $this->generatePattern($line); } /** * Callback parser which finds export-ignore rules in git attribute lines * * @param string $line A line from .gitattributes * * @return array|null An exclude pattern for filter() */ public function parseGitAttributesLine($line) { $parts = preg_split('#\s+#', $line); if (count($parts) == 2 && $parts[1] === 'export-ignore') { return $this->generatePattern($parts[0]); } return null; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use Symfony\Component\Finder; /** * @author Nils Adermann */ abstract class BaseExcludeFilter { /** * @var string */ protected $sourcePath; /** * @var array */ protected $excludePatterns; /** * @param string $sourcePath Directory containing sources to be filtered */ public function __construct($sourcePath) { $this->sourcePath = $sourcePath; $this->excludePatterns = array(); } /** * Checks the given path against all exclude patterns in this filter * * Negated patterns overwrite exclude decisions of previous filters. * * @param string $relativePath The file's path relative to the sourcePath * @param bool $exclude Whether a previous filter wants to exclude this file * * @return bool Whether the file should be excluded */ public function filter($relativePath, $exclude) { foreach ($this->excludePatterns as $patternData) { list($pattern, $negate, $stripLeadingSlash) = $patternData; if ($stripLeadingSlash) { $path = substr($relativePath, 1); } else { $path = $relativePath; } if (@preg_match($pattern, $path)) { $exclude = !$negate; } } return $exclude; } /** * Processes a file containing exclude rules of different formats per line * * @param array $lines A set of lines to be parsed * @param callable $lineParser The parser to be used on each line * * @return array Exclude patterns to be used in filter() */ protected function parseLines(array $lines, $lineParser) { return array_filter( array_map( function ($line) use ($lineParser) { $line = trim($line); if (!$line || 0 === strpos($line, '#')) { return null; } return call_user_func($lineParser, $line); }, $lines ), function ($pattern) { return $pattern !== null; } ); } /** * Generates a set of exclude patterns for filter() from gitignore rules * * @param array $rules A list of exclude rules in gitignore syntax * * @return array Exclude patterns */ protected function generatePatterns($rules) { $patterns = array(); foreach ($rules as $rule) { $patterns[] = $this->generatePattern($rule); } return $patterns; } /** * Generates an exclude pattern for filter() from a gitignore rule * * @param string $rule An exclude rule in gitignore syntax * * @return array An exclude pattern */ protected function generatePattern($rule) { $negate = false; $pattern = ''; if ($rule !== '' && $rule[0] === '!') { $negate = true; $rule = ltrim($rule, '!'); } $firstSlashPosition = strpos($rule, '/'); if (0 === $firstSlashPosition) { $pattern = '^/'; } elseif (false === $firstSlashPosition || strlen($rule) - 1 === $firstSlashPosition) { $pattern = '/'; } $rule = trim($rule, '/'); // remove delimiters as well as caret (^) and dollar sign ($) from the regex $rule = substr(Finder\Glob::toRegex($rule), 2, -2); return array('{'.$pattern.$rule.'(?=$|/)}', $negate, false); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; /** * @author Till Klampaeckel * @author Matthieu Moquet * @author Nils Adermann */ interface ArchiverInterface { /** * Create an archive from the sources. * * @param string $sources The sources directory * @param string $target The target file * @param string $format The format used for archive * @param array $excludes A list of patterns for files to exclude * * @return string The path to the written archive file */ public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false); /** * Format supported by the archiver. * * @param string $format The archive format * @param string $sourceType The source type (git, svn, hg, etc.) * * @return bool true if the format is supported by the archiver */ public function supports($format, $sourceType); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use FilterIterator; use PharData; class ArchivableFilesFilter extends FilterIterator { private $dirs = array(); /** * @return bool true if the current element is acceptable, otherwise false. */ public function accept() { $file = $this->getInnerIterator()->current(); if ($file->isDir()) { $this->dirs[] = (string) $file; return false; } return true; } public function addEmptyDir(PharData $phar, $sources) { foreach ($this->dirs as $filepath) { $localname = str_replace($sources . "/", '', $filepath); $phar->addEmptyDir($localname); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use Symfony\Component\Finder; /** * An exclude filter that processes hgignore files * * @author Nils Adermann */ class HgExcludeFilter extends BaseExcludeFilter { const HG_IGNORE_REGEX = 1; const HG_IGNORE_GLOB = 2; /** * Either HG_IGNORE_REGEX or HG_IGNORE_GLOB * @var int */ protected $patternMode; /** * Parses .hgignore file if it exist * * @param string $sourcePath */ public function __construct($sourcePath) { parent::__construct($sourcePath); $this->patternMode = self::HG_IGNORE_REGEX; if (file_exists($sourcePath.'/.hgignore')) { $this->excludePatterns = $this->parseLines( file($sourcePath.'/.hgignore'), array($this, 'parseHgIgnoreLine') ); } } /** * Callback line parser which process hgignore lines * * @param string $line A line from .hgignore * * @return array|null An exclude pattern for filter() */ public function parseHgIgnoreLine($line) { if (preg_match('#^syntax\s*:\s*(glob|regexp)$#', $line, $matches)) { if ($matches[1] === 'glob') { $this->patternMode = self::HG_IGNORE_GLOB; } else { $this->patternMode = self::HG_IGNORE_REGEX; } return null; } if ($this->patternMode == self::HG_IGNORE_GLOB) { return $this->patternFromGlob($line); } return $this->patternFromRegex($line); } /** * Generates an exclude pattern for filter() from a hg glob expression * * @param string $line A line from .hgignore in glob mode * * @return array An exclude pattern for filter() */ protected function patternFromGlob($line) { $pattern = '#'.substr(Finder\Glob::toRegex($line), 2, -1).'#'; $pattern = str_replace('[^/]*', '.*', $pattern); return array($pattern, false, true); } /** * Generates an exclude pattern for filter() from a hg regexp expression * * @param string $line A line from .hgignore in regexp mode * * @return array An exclude pattern for filter() */ public function patternFromRegex($line) { // WTF need to escape the delimiter safely $pattern = '#'.preg_replace('/((?:\\\\\\\\)*)(\\\\?)#/', '\1\2\2\\#', $line).'#'; return array($pattern, false, true); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; /** * An exclude filter which processes composer's own exclude rules * * @author Nils Adermann */ class ComposerExcludeFilter extends BaseExcludeFilter { /** * @param string $sourcePath Directory containing sources to be filtered * @param array $excludeRules An array of exclude rules from composer.json */ public function __construct($sourcePath, array $excludeRules) { parent::__construct($sourcePath); $this->excludePatterns = $this->generatePatterns($excludeRules); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Archiver; use ZipArchive; use Composer\Util\Filesystem; /** * @author Jan Prieser */ class ZipArchiver implements ArchiverInterface { protected static $formats = array( 'zip' => 1, ); /** * {@inheritdoc} */ public function archive($sources, $target, $format, array $excludes = array(), $ignoreFilters = false) { $fs = new Filesystem(); $sources = $fs->normalizePath($sources); $zip = new ZipArchive(); $res = $zip->open($target, ZipArchive::CREATE); if ($res === true) { $files = new ArchivableFilesFinder($sources, $excludes, $ignoreFilters); foreach ($files as $file) { /** @var \SplFileInfo $file */ $filepath = strtr($file->getPath()."/".$file->getFilename(), '\\', '/'); $localname = $filepath; if (strpos($localname, $sources . '/') === 0) { $localname = substr($localname, strlen($sources . '/')); } if ($file->isDir()) { $zip->addEmptyDir($localname); } else { $zip->addFile($filepath, $localname); } /** * ZipArchive::setExternalAttributesName is available from >= PHP 5.6 */ if (PHP_VERSION_ID >= 50600) { $perms = fileperms($filepath); /** * Ensure to preserve the permission umasks for the filepath in the archive. */ $zip->setExternalAttributesName($localname, ZipArchive::OPSYS_UNIX, $perms << 16); } } if ($zip->close()) { return $target; } } $message = sprintf( "Could not create archive '%s' from '%s': %s", $target, $sources, $zip->getStatusString() ); throw new \RuntimeException($message); } /** * {@inheritdoc} */ public function supports($format, $sourceType) { return isset(static::$formats[$format]) && $this->compressionAvailable(); } private function compressionAvailable() { return class_exists('ZipArchive'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; /** * @author Jordi Boggiano */ class RootAliasPackage extends AliasPackage implements RootPackageInterface { public function __construct(RootPackageInterface $aliasOf, $version, $prettyVersion) { parent::__construct($aliasOf, $version, $prettyVersion); } /** * {@inheritDoc} */ public function getAliases() { return $this->aliasOf->getAliases(); } /** * {@inheritDoc} */ public function getMinimumStability() { return $this->aliasOf->getMinimumStability(); } /** * {@inheritDoc} */ public function getStabilityFlags() { return $this->aliasOf->getStabilityFlags(); } /** * {@inheritDoc} */ public function getReferences() { return $this->aliasOf->getReferences(); } /** * {@inheritDoc} */ public function getPreferStable() { return $this->aliasOf->getPreferStable(); } /** * {@inheritDoc} */ public function getConfig() { return $this->aliasOf->getConfig(); } /** * {@inheritDoc} */ public function setRequires(array $require) { $this->requires = $this->replaceSelfVersionDependencies($require, Link::TYPE_REQUIRE); $this->aliasOf->setRequires($require); } /** * {@inheritDoc} */ public function setDevRequires(array $devRequire) { $this->devRequires = $this->replaceSelfVersionDependencies($devRequire, Link::TYPE_DEV_REQUIRE); $this->aliasOf->setDevRequires($devRequire); } /** * {@inheritDoc} */ public function setConflicts(array $conflicts) { $this->conflicts = $this->replaceSelfVersionDependencies($conflicts, Link::TYPE_CONFLICT); $this->aliasOf->setConflicts($conflicts); } /** * {@inheritDoc} */ public function setProvides(array $provides) { $this->provides = $this->replaceSelfVersionDependencies($provides, Link::TYPE_PROVIDE); $this->aliasOf->setProvides($provides); } /** * {@inheritDoc} */ public function setReplaces(array $replaces) { $this->replaces = $this->replaceSelfVersionDependencies($replaces, Link::TYPE_REPLACE); $this->aliasOf->setReplaces($replaces); } /** * {@inheritDoc} */ public function setRepositories($repositories) { $this->aliasOf->setRepositories($repositories); } /** * {@inheritDoc} */ public function setAutoload(array $autoload) { $this->aliasOf->setAutoload($autoload); } /** * {@inheritDoc} */ public function setDevAutoload(array $devAutoload) { $this->aliasOf->setDevAutoload($devAutoload); } /** * {@inheritDoc} */ public function setStabilityFlags(array $stabilityFlags) { $this->aliasOf->setStabilityFlags($stabilityFlags); } /** * {@inheritDoc} */ public function setSuggests(array $suggests) { $this->aliasOf->setSuggests($suggests); } /** * {@inheritDoc} */ public function setExtra(array $extra) { $this->aliasOf->setExtra($extra); } public function __clone() { parent::__clone(); $this->aliasOf = clone $this->aliasOf; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; /** * Package containing additional metadata that is not used by the solver * * @author Nils Adermann */ class CompletePackage extends Package implements CompletePackageInterface { protected $repositories; protected $license = array(); protected $keywords; protected $authors; protected $description; protected $homepage; protected $scripts = array(); protected $support = array(); protected $funding = array(); protected $abandoned = false; /** * @param array $scripts */ public function setScripts(array $scripts) { $this->scripts = $scripts; } /** * {@inheritDoc} */ public function getScripts() { return $this->scripts; } /** * Set the repositories * * @param array $repositories */ public function setRepositories($repositories) { $this->repositories = $repositories; } /** * {@inheritDoc} */ public function getRepositories() { return $this->repositories; } /** * Set the license * * @param array $license */ public function setLicense(array $license) { $this->license = $license; } /** * {@inheritDoc} */ public function getLicense() { return $this->license; } /** * Set the keywords * * @param array $keywords */ public function setKeywords(array $keywords) { $this->keywords = $keywords; } /** * {@inheritDoc} */ public function getKeywords() { return $this->keywords; } /** * Set the authors * * @param array $authors */ public function setAuthors(array $authors) { $this->authors = $authors; } /** * {@inheritDoc} */ public function getAuthors() { return $this->authors; } /** * Set the description * * @param string $description */ public function setDescription($description) { $this->description = $description; } /** * {@inheritDoc} */ public function getDescription() { return $this->description; } /** * Set the homepage * * @param string $homepage */ public function setHomepage($homepage) { $this->homepage = $homepage; } /** * {@inheritDoc} */ public function getHomepage() { return $this->homepage; } /** * Set the support information * * @param array $support */ public function setSupport(array $support) { $this->support = $support; } /** * {@inheritDoc} */ public function getSupport() { return $this->support; } /** * Set the funding * * @param array $funding */ public function setFunding(array $funding) { $this->funding = $funding; } /** * {@inheritDoc} */ public function getFunding() { return $this->funding; } /** * @return bool */ public function isAbandoned() { return (bool) $this->abandoned; } /** * @param bool|string $abandoned */ public function setAbandoned($abandoned) { $this->abandoned = $abandoned; } /** * If the package is abandoned and has a suggested replacement, this method returns it * * @return string|null */ public function getReplacementPackage() { return \is_string($this->abandoned) ? $this->abandoned : null; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Package\Version\VersionParser; use Composer\Util\ComposerMirror; /** * Core package definitions that are needed to resolve dependencies and install packages * * @author Nils Adermann */ class Package extends BasePackage { protected $type; protected $targetDir; protected $installationSource; protected $sourceType; protected $sourceUrl; protected $sourceReference; protected $sourceMirrors; protected $distType; protected $distUrl; protected $distReference; protected $distSha1Checksum; protected $distMirrors; protected $version; protected $prettyVersion; protected $releaseDate; protected $extra = array(); protected $binaries = array(); protected $dev; protected $stability; protected $notificationUrl; /** @var Link[] */ protected $requires = array(); /** @var Link[] */ protected $conflicts = array(); /** @var Link[] */ protected $provides = array(); /** @var Link[] */ protected $replaces = array(); /** @var Link[] */ protected $devRequires = array(); protected $suggests = array(); protected $autoload = array(); protected $devAutoload = array(); protected $includePaths = array(); protected $archiveName; protected $archiveExcludes = array(); protected $isDefaultBranch = false; /** * Creates a new in memory package. * * @param string $name The package's name * @param string $version The package's version * @param string $prettyVersion The package's non-normalized version */ public function __construct($name, $version, $prettyVersion) { parent::__construct($name); $this->version = $version; $this->prettyVersion = $prettyVersion; $this->stability = VersionParser::parseStability($version); $this->dev = $this->stability === 'dev'; } /** * {@inheritDoc} */ public function isDev() { return $this->dev; } /** * @param string $type */ public function setType($type) { $this->type = $type; } /** * {@inheritDoc} */ public function getType() { return $this->type ?: 'library'; } /** * {@inheritDoc} */ public function getStability() { return $this->stability; } /** * @param string $targetDir */ public function setTargetDir($targetDir) { $this->targetDir = $targetDir; } /** * {@inheritDoc} */ public function getTargetDir() { if (null === $this->targetDir) { return; } return ltrim(preg_replace('{ (?:^|[\\\\/]+) \.\.? (?:[\\\\/]+|$) (?:\.\.? (?:[\\\\/]+|$) )*}x', '/', $this->targetDir), '/'); } /** * @param array $extra */ public function setExtra(array $extra) { $this->extra = $extra; } /** * {@inheritDoc} */ public function getExtra() { return $this->extra; } /** * @param array $binaries */ public function setBinaries(array $binaries) { $this->binaries = $binaries; } /** * {@inheritDoc} */ public function getBinaries() { return $this->binaries; } /** * {@inheritDoc} */ public function setInstallationSource($type) { $this->installationSource = $type; } /** * {@inheritDoc} */ public function getInstallationSource() { return $this->installationSource; } /** * @param string $type */ public function setSourceType($type) { $this->sourceType = $type; } /** * {@inheritDoc} */ public function getSourceType() { return $this->sourceType; } /** * @param string $url */ public function setSourceUrl($url) { $this->sourceUrl = $url; } /** * {@inheritDoc} */ public function getSourceUrl() { return $this->sourceUrl; } /** * @param string $reference */ public function setSourceReference($reference) { $this->sourceReference = $reference; } /** * {@inheritDoc} */ public function getSourceReference() { return $this->sourceReference; } /** * @param array|null $mirrors */ public function setSourceMirrors($mirrors) { $this->sourceMirrors = $mirrors; } /** * {@inheritDoc} */ public function getSourceMirrors() { return $this->sourceMirrors; } /** * {@inheritDoc} */ public function getSourceUrls() { return $this->getUrls($this->sourceUrl, $this->sourceMirrors, $this->sourceReference, $this->sourceType, 'source'); } /** * @param string $type */ public function setDistType($type) { $this->distType = $type; } /** * {@inheritDoc} */ public function getDistType() { return $this->distType; } /** * @param string $url */ public function setDistUrl($url) { $this->distUrl = $url; } /** * {@inheritDoc} */ public function getDistUrl() { return $this->distUrl; } /** * @param string $reference */ public function setDistReference($reference) { $this->distReference = $reference; } /** * {@inheritDoc} */ public function getDistReference() { return $this->distReference; } /** * @param string $sha1checksum */ public function setDistSha1Checksum($sha1checksum) { $this->distSha1Checksum = $sha1checksum; } /** * {@inheritDoc} */ public function getDistSha1Checksum() { return $this->distSha1Checksum; } /** * @param array|null $mirrors */ public function setDistMirrors($mirrors) { $this->distMirrors = $mirrors; } /** * {@inheritDoc} */ public function getDistMirrors() { return $this->distMirrors; } /** * {@inheritDoc} */ public function getDistUrls() { return $this->getUrls($this->distUrl, $this->distMirrors, $this->distReference, $this->distType, 'dist'); } /** * {@inheritDoc} */ public function getVersion() { return $this->version; } /** * {@inheritDoc} */ public function getPrettyVersion() { return $this->prettyVersion; } /** * Set the releaseDate * * @param \DateTime $releaseDate */ public function setReleaseDate(\DateTime $releaseDate) { $this->releaseDate = $releaseDate; } /** * {@inheritDoc} */ public function getReleaseDate() { return $this->releaseDate; } /** * Set the required packages * * @param Link[] $requires A set of package links */ public function setRequires(array $requires) { $this->requires = $requires; } /** * {@inheritDoc} */ public function getRequires() { return $this->requires; } /** * Set the conflicting packages * * @param Link[] $conflicts A set of package links */ public function setConflicts(array $conflicts) { $this->conflicts = $conflicts; } /** * {@inheritDoc} */ public function getConflicts() { return $this->conflicts; } /** * Set the provided virtual packages * * @param Link[] $provides A set of package links */ public function setProvides(array $provides) { $this->provides = $provides; } /** * {@inheritDoc} */ public function getProvides() { return $this->provides; } /** * Set the packages this one replaces * * @param Link[] $replaces A set of package links */ public function setReplaces(array $replaces) { $this->replaces = $replaces; } /** * {@inheritDoc} */ public function getReplaces() { return $this->replaces; } /** * Set the recommended packages * * @param Link[] $devRequires A set of package links */ public function setDevRequires(array $devRequires) { $this->devRequires = $devRequires; } /** * {@inheritDoc} */ public function getDevRequires() { return $this->devRequires; } /** * Set the suggested packages * * @param array $suggests A set of package names/comments */ public function setSuggests(array $suggests) { $this->suggests = $suggests; } /** * {@inheritDoc} */ public function getSuggests() { return $this->suggests; } /** * Set the autoload mapping * * @param array $autoload Mapping of autoloading rules */ public function setAutoload(array $autoload) { $this->autoload = $autoload; } /** * {@inheritDoc} */ public function getAutoload() { return $this->autoload; } /** * Set the dev autoload mapping * * @param array $devAutoload Mapping of dev autoloading rules */ public function setDevAutoload(array $devAutoload) { $this->devAutoload = $devAutoload; } /** * {@inheritDoc} */ public function getDevAutoload() { return $this->devAutoload; } /** * Sets the list of paths added to PHP's include path. * * @param array $includePaths List of directories. */ public function setIncludePaths(array $includePaths) { $this->includePaths = $includePaths; } /** * {@inheritDoc} */ public function getIncludePaths() { return $this->includePaths; } /** * Sets the notification URL * * @param string $notificationUrl */ public function setNotificationUrl($notificationUrl) { $this->notificationUrl = $notificationUrl; } /** * {@inheritDoc} */ public function getNotificationUrl() { return $this->notificationUrl; } /** * Sets default base filename for archive * * @param string $name */ public function setArchiveName($name) { $this->archiveName = $name; } /** * {@inheritDoc} */ public function getArchiveName() { return $this->archiveName; } /** * Sets a list of patterns to be excluded from archives * * @param array $excludes */ public function setArchiveExcludes(array $excludes) { $this->archiveExcludes = $excludes; } /** * {@inheritDoc} */ public function getArchiveExcludes() { return $this->archiveExcludes; } /** * @param bool $defaultBranch */ public function setIsDefaultBranch($defaultBranch) { $this->isDefaultBranch = $defaultBranch; } /** * {@inheritDoc} */ public function isDefaultBranch() { return $this->isDefaultBranch; } /** * {@inheritDoc} */ public function setSourceDistReferences($reference) { $this->setSourceReference($reference); // only bitbucket, github and gitlab have auto generated dist URLs that easily allow replacing the reference in the dist URL // TODO generalize this a bit for self-managed/on-prem versions? Some kind of replace token in dist urls which allow this? if (preg_match('{^https?://(?:(?:www\.)?bitbucket\.org|(api\.)?github\.com|(?:www\.)?gitlab\.com)/}i', $this->getDistUrl())) { $this->setDistReference($reference); $this->setDistUrl(preg_replace('{(?<=/|sha=)[a-f0-9]{40}(?=/|$)}i', $reference, $this->getDistUrl())); } elseif ($this->getDistReference()) { // update the dist reference if there was one, but if none was provided ignore it $this->setDistReference($reference); } } /** * Replaces current version and pretty version with passed values. * It also sets stability. * * @param string $version The package's normalized version * @param string $prettyVersion The package's non-normalized version */ public function replaceVersion($version, $prettyVersion) { $this->version = $version; $this->prettyVersion = $prettyVersion; $this->stability = VersionParser::parseStability($version); $this->dev = $this->stability === 'dev'; } protected function getUrls($url, $mirrors, $ref, $type, $urlType) { if (!$url) { return array(); } $urls = array($url); if ($mirrors) { foreach ($mirrors as $mirror) { if ($urlType === 'dist') { $mirrorUrl = ComposerMirror::processUrl($mirror['url'], $this->name, $this->version, $ref, $type); } elseif ($urlType === 'source' && $type === 'git') { $mirrorUrl = ComposerMirror::processGitUrl($mirror['url'], $this->name, $url, $type); } elseif ($urlType === 'source' && $type === 'hg') { $mirrorUrl = ComposerMirror::processHgUrl($mirror['url'], $this->name, $url, $type); } else { continue; } if (!\in_array($mirrorUrl, $urls)) { $func = $mirror['preferred'] ? 'array_unshift' : 'array_push'; $func($urls, $mirrorUrl); } } } return $urls; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Comparer; /** * class Comparer * * @author Hector Prats */ class Comparer { private $source; private $update; private $changed; public function setSource($source) { $this->source = $source; } public function setUpdate($update) { $this->update = $update; } public function getChanged($toString = false, $explicated = false) { $changed = $this->changed; if (!count($changed)) { return false; } if ($explicated) { foreach ($changed as $sectionKey => $itemSection) { foreach ($itemSection as $itemKey => $item) { $changed[$sectionKey][$itemKey] = $item.' ('.$sectionKey.')'; } } } if ($toString) { foreach ($changed as $sectionKey => $itemSection) { foreach ($itemSection as $itemKey => $item) { $changed['string'][] = $item."\r\n"; } } $changed = implode("\r\n", $changed['string']); } return $changed; } public function doCompare() { $source = array(); $destination = array(); $this->changed = array(); $currentDirectory = getcwd(); chdir($this->source); $source = $this->doTree('.', $source); if (!is_array($source)) { return; } chdir($currentDirectory); chdir($this->update); $destination = $this->doTree('.', $destination); if (!is_array($destination)) { exit; } chdir($currentDirectory); foreach ($source as $dir => $value) { foreach ($value as $file => $hash) { if (isset($destination[$dir][$file])) { if ($hash !== $destination[$dir][$file]) { $this->changed['changed'][] = $dir.'/'.$file; } } else { $this->changed['removed'][] = $dir.'/'.$file; } } } foreach ($destination as $dir => $value) { foreach ($value as $file => $hash) { if (!isset($source[$dir][$file])) { $this->changed['added'][] = $dir.'/'.$file; } } } } private function doTree($dir, &$array) { if ($dh = opendir($dir)) { while ($file = readdir($dh)) { if ($file !== '.' && $file !== '..') { if (is_link($dir.'/'.$file)) { $array[$dir][$file] = readlink($dir.'/'.$file); } elseif (is_dir($dir.'/'.$file)) { if (!count($array)) { $array[0] = 'Temp'; } if (!$this->doTree($dir.'/'.$file, $array)) { return false; } } elseif (is_file($dir.'/'.$file) && filesize($dir.'/'.$file)) { $array[$dir][$file] = md5_file($dir.'/'.$file); } } } if (count($array) > 1 && isset($array['0'])) { unset($array['0']); } return $array; } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; use Composer\Package; use Composer\Package\AliasPackage; use Composer\Package\Link; use Composer\Package\RootAliasPackage; use Composer\Package\RootPackageInterface; use Composer\Package\Version\VersionParser; /** * @author Konstantin Kudryashiv * @author Jordi Boggiano */ class ArrayLoader implements LoaderInterface { protected $versionParser; protected $loadOptions; public function __construct(VersionParser $parser = null, $loadOptions = false) { if (!$parser) { $parser = new VersionParser; } $this->versionParser = $parser; $this->loadOptions = $loadOptions; } public function load(array $config, $class = 'Composer\Package\CompletePackage') { $package = $this->createObject($config, $class); foreach (Package\BasePackage::$supportedLinkTypes as $type => $opts) { if (isset($config[$type])) { $method = 'set'.ucfirst($opts['method']); $package->{$method}( $this->parseLinks( $package->getName(), $package->getPrettyVersion(), $opts['description'], $config[$type] ) ); } } $package = $this->configureObject($package, $config); return $package; } public function loadPackages(array $versions, $class) { $packages = array(); $linkCache = array(); foreach ($versions as $version) { $package = $this->createObject($version, $class); $this->configureCachedLinks($linkCache, $package, $version); $package = $this->configureObject($package, $version); $packages[] = $package; } return $packages; } private function createObject(array $config, $class) { if (!isset($config['name'])) { throw new \UnexpectedValueException('Unknown package has no name defined ('.json_encode($config).').'); } if (!isset($config['version'])) { throw new \UnexpectedValueException('Package '.$config['name'].' has no version defined.'); } // handle already normalized versions if (isset($config['version_normalized'])) { $version = $config['version_normalized']; // handling of existing repos which need to remain composer v1 compatible, in case the version_normalized contained VersionParser::DEFAULT_BRANCH_ALIAS, we renormalize it if ($version === VersionParser::DEFAULT_BRANCH_ALIAS) { $version = $this->versionParser->normalize($config['version']); } } else { $version = $this->versionParser->normalize($config['version']); } return new $class($config['name'], $version, $config['version']); } private function configureObject($package, array $config) { $package->setType(isset($config['type']) ? strtolower($config['type']) : 'library'); if (isset($config['target-dir'])) { $package->setTargetDir($config['target-dir']); } if (isset($config['extra']) && \is_array($config['extra'])) { $package->setExtra($config['extra']); } if (isset($config['bin'])) { if (!\is_array($config['bin'])) { $config['bin'] = array($config['bin']); } foreach ($config['bin'] as $key => $bin) { $config['bin'][$key] = ltrim($bin, '/'); } $package->setBinaries($config['bin']); } if (isset($config['installation-source'])) { $package->setInstallationSource($config['installation-source']); } if (isset($config['default-branch']) && $config['default-branch'] === true) { $package->setIsDefaultBranch(true); } if (isset($config['source'])) { if (!isset($config['source']['type'], $config['source']['url'], $config['source']['reference'])) { throw new \UnexpectedValueException(sprintf( "Package %s's source key should be specified as {\"type\": ..., \"url\": ..., \"reference\": ...},\n%s given.", $config['name'], json_encode($config['source']) )); } $package->setSourceType($config['source']['type']); $package->setSourceUrl($config['source']['url']); $package->setSourceReference(isset($config['source']['reference']) ? $config['source']['reference'] : null); if (isset($config['source']['mirrors'])) { $package->setSourceMirrors($config['source']['mirrors']); } } if (isset($config['dist'])) { if (!isset($config['dist']['type'], $config['dist']['url'])) { throw new \UnexpectedValueException(sprintf( "Package %s's dist key should be specified as ". "{\"type\": ..., \"url\": ..., \"reference\": ..., \"shasum\": ...},\n%s given.", $config['name'], json_encode($config['dist']) )); } $package->setDistType($config['dist']['type']); $package->setDistUrl($config['dist']['url']); $package->setDistReference(isset($config['dist']['reference']) ? $config['dist']['reference'] : null); $package->setDistSha1Checksum(isset($config['dist']['shasum']) ? $config['dist']['shasum'] : null); if (isset($config['dist']['mirrors'])) { $package->setDistMirrors($config['dist']['mirrors']); } } if (isset($config['suggest']) && \is_array($config['suggest'])) { foreach ($config['suggest'] as $target => $reason) { if ('self.version' === trim($reason)) { $config['suggest'][$target] = $package->getPrettyVersion(); } } $package->setSuggests($config['suggest']); } if (isset($config['autoload'])) { $package->setAutoload($config['autoload']); } if (isset($config['autoload-dev'])) { $package->setDevAutoload($config['autoload-dev']); } if (isset($config['include-path'])) { $package->setIncludePaths($config['include-path']); } if (!empty($config['time'])) { $time = preg_match('/^\d++$/D', $config['time']) ? '@'.$config['time'] : $config['time']; try { $date = new \DateTime($time, new \DateTimeZone('UTC')); $package->setReleaseDate($date); } catch (\Exception $e) { } } if (!empty($config['notification-url'])) { $package->setNotificationUrl($config['notification-url']); } if (!empty($config['archive']['name'])) { $package->setArchiveName($config['archive']['name']); } if (!empty($config['archive']['exclude'])) { $package->setArchiveExcludes($config['archive']['exclude']); } if ($package instanceof Package\CompletePackageInterface) { if (isset($config['scripts']) && \is_array($config['scripts'])) { foreach ($config['scripts'] as $event => $listeners) { $config['scripts'][$event] = (array) $listeners; } if (isset($config['scripts']['composer'])) { trigger_error('The `composer` script name is reserved for internal use, please avoid defining it', E_USER_DEPRECATED); } $package->setScripts($config['scripts']); } if (!empty($config['description']) && \is_string($config['description'])) { $package->setDescription($config['description']); } if (!empty($config['homepage']) && \is_string($config['homepage'])) { $package->setHomepage($config['homepage']); } if (!empty($config['keywords']) && \is_array($config['keywords'])) { $package->setKeywords($config['keywords']); } if (!empty($config['license'])) { $package->setLicense(\is_array($config['license']) ? $config['license'] : array($config['license'])); } if (!empty($config['authors']) && \is_array($config['authors'])) { $package->setAuthors($config['authors']); } if (isset($config['support'])) { $package->setSupport($config['support']); } if (!empty($config['funding']) && \is_array($config['funding'])) { $package->setFunding($config['funding']); } if (isset($config['abandoned'])) { $package->setAbandoned($config['abandoned']); } } if ($this->loadOptions && isset($config['transport-options'])) { $package->setTransportOptions($config['transport-options']); } if ($aliasNormalized = $this->getBranchAlias($config)) { $prettyAlias = preg_replace('{(\.9{7})+}', '.x', $aliasNormalized); if ($package instanceof RootPackageInterface) { return new RootAliasPackage($package, $aliasNormalized, $prettyAlias); } return new AliasPackage($package, $aliasNormalized, $prettyAlias); } return $package; } private function configureCachedLinks(&$linkCache, $package, array $config) { $name = $package->getName(); $prettyVersion = $package->getPrettyVersion(); foreach (Package\BasePackage::$supportedLinkTypes as $type => $opts) { if (isset($config[$type])) { $method = 'set'.ucfirst($opts['method']); $links = array(); foreach ($config[$type] as $prettyTarget => $constraint) { $target = strtolower($prettyTarget); if ($constraint === 'self.version') { $links[$target] = $this->createLink($name, $prettyVersion, $opts['description'], $target, $constraint); } else { if (!isset($linkCache[$name][$type][$target][$constraint])) { $linkCache[$name][$type][$target][$constraint] = array($target, $this->createLink($name, $prettyVersion, $opts['description'], $target, $constraint)); } list($target, $link) = $linkCache[$name][$type][$target][$constraint]; $links[$target] = $link; } } $package->{$method}($links); } } } /** * @param string $source source package name * @param string $sourceVersion source package version (pretty version ideally) * @param string $description link description (e.g. requires, replaces, ..) * @phpstan-param Link::TYPE_* $description * @param array $links array of package name => constraint mappings * @return Link[] */ public function parseLinks($source, $sourceVersion, $description, $links) { $res = array(); foreach ($links as $target => $constraint) { $res[strtolower($target)] = $this->createLink($source, $sourceVersion, $description, $target, $constraint); } return $res; } private function createLink($source, $sourceVersion, $description, $target, $prettyConstraint) { if (!\is_string($prettyConstraint)) { throw new \UnexpectedValueException('Link constraint in '.$source.' '.$description.' > '.$target.' should be a string, got '.\gettype($prettyConstraint) . ' (' . var_export($prettyConstraint, true) . ')'); } if ('self.version' === $prettyConstraint) { $parsedConstraint = $this->versionParser->parseConstraints($sourceVersion); } else { $parsedConstraint = $this->versionParser->parseConstraints($prettyConstraint); } return new Link($source, $target, $parsedConstraint, $description, $prettyConstraint); } /** * Retrieves a branch alias (dev-master => 1.0.x-dev for example) if it exists * * @param array $config the entire package config * @return string|null normalized version of the branch alias or null if there is none */ public function getBranchAlias(array $config) { if (strpos($config['version'], 'dev-') !== 0 && '-dev' !== substr($config['version'], -4)) { return; } if (isset($config['extra']['branch-alias']) && \is_array($config['extra']['branch-alias'])) { foreach ($config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { // ensure it is an alias to a -dev package if ('-dev' !== substr($targetBranch, -4)) { continue; } // normalize without -dev and ensure it's a numeric branch that is parseable if ($targetBranch === VersionParser::DEFAULT_BRANCH_ALIAS) { $validatedTargetBranch = VersionParser::DEFAULT_BRANCH_ALIAS; } else { $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); } if ('-dev' !== substr($validatedTargetBranch, -4)) { continue; } // ensure that it is the current branch aliasing itself if (strtolower($config['version']) !== strtolower($sourceBranch)) { continue; } // If using numeric aliases ensure the alias is a valid subversion if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) && (stripos($targetPrefix, $sourcePrefix) !== 0) ) { continue; } return $validatedTargetBranch; } } if ( isset($config['default-branch']) && $config['default-branch'] === true && false === $this->versionParser->parseNumericAliasPrefix($config['version']) ) { return VersionParser::DEFAULT_BRANCH_ALIAS; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; /** * Defines a loader that takes an array to create package instances * * @author Jordi Boggiano */ interface LoaderInterface { /** * Converts a package from an array to a real instance * * @param array $package Package config * @param string $class Package class to use * @return \Composer\Package\PackageInterface */ public function load(array $package, $class = 'Composer\Package\CompletePackage'); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; /** * @author Jordi Boggiano */ class InvalidPackageException extends \Exception { private $errors; private $warnings; private $data; public function __construct(array $errors, array $warnings, array $data) { $this->errors = $errors; $this->warnings = $warnings; $this->data = $data; parent::__construct("Invalid package information: \n".implode("\n", array_merge($errors, $warnings))); } public function getData() { return $this->data; } public function getErrors() { return $this->errors; } public function getWarnings() { return $this->warnings; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; use Composer\Package\BasePackage; use Composer\Package\AliasPackage; use Composer\Config; use Composer\IO\IOInterface; use Composer\Package\RootPackageInterface; use Composer\Repository\RepositoryFactory; use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionParser; use Composer\Package\RootPackage; use Composer\Repository\RepositoryManager; use Composer\Util\ProcessExecutor; /** * ArrayLoader built for the sole purpose of loading the root package * * Sets additional defaults and loads repositories * * @author Jordi Boggiano */ class RootPackageLoader extends ArrayLoader { /** * @var RepositoryManager */ private $manager; /** * @var Config */ private $config; /** * @var VersionGuesser */ private $versionGuesser; public function __construct(RepositoryManager $manager, Config $config, VersionParser $parser = null, VersionGuesser $versionGuesser = null, IOInterface $io = null) { parent::__construct($parser); $this->manager = $manager; $this->config = $config; $this->versionGuesser = $versionGuesser ?: new VersionGuesser($config, new ProcessExecutor($io), $this->versionParser); } /** * @param array $config package data * @param string $class FQCN to be instantiated * @param string $cwd cwd of the root package to be used to guess the version if it is not provided * @return RootPackageInterface */ public function load(array $config, $class = 'Composer\Package\RootPackage', $cwd = null) { if (!isset($config['name'])) { $config['name'] = '__root__'; } elseif ($err = ValidatingArrayLoader::hasPackageNamingError($config['name'])) { throw new \RuntimeException('Your package name '.$err); } $autoVersioned = false; if (!isset($config['version'])) { $commit = null; // override with env var if available if (getenv('COMPOSER_ROOT_VERSION')) { $config['version'] = getenv('COMPOSER_ROOT_VERSION'); } else { $versionData = $this->versionGuesser->guessVersion($config, $cwd ?: getcwd()); if ($versionData) { $config['version'] = $versionData['pretty_version']; $config['version_normalized'] = $versionData['version']; $commit = $versionData['commit']; } } if (!isset($config['version'])) { $config['version'] = '1.0.0'; $autoVersioned = true; } if ($commit) { $config['source'] = array( 'type' => '', 'url' => '', 'reference' => $commit, ); $config['dist'] = array( 'type' => '', 'url' => '', 'reference' => $commit, ); } } $realPackage = $package = parent::load($config, $class); if ($realPackage instanceof AliasPackage) { $realPackage = $package->getAliasOf(); } if ($autoVersioned) { $realPackage->replaceVersion($realPackage->getVersion(), RootPackage::DEFAULT_PRETTY_VERSION); } if (isset($config['minimum-stability'])) { $realPackage->setMinimumStability(VersionParser::normalizeStability($config['minimum-stability'])); } $aliases = array(); $stabilityFlags = array(); $references = array(); foreach (array('require', 'require-dev') as $linkType) { if (isset($config[$linkType])) { $linkInfo = BasePackage::$supportedLinkTypes[$linkType]; $method = 'get'.ucfirst($linkInfo['method']); $links = array(); foreach ($realPackage->$method() as $link) { $links[$link->getTarget()] = $link->getConstraint()->getPrettyString(); } $aliases = $this->extractAliases($links, $aliases); $stabilityFlags = $this->extractStabilityFlags($links, $stabilityFlags, $realPackage->getMinimumStability()); $references = $this->extractReferences($links, $references); if (isset($links[$config['name']])) { throw new \RuntimeException(sprintf('Root package \'%s\' cannot require itself in its composer.json' . PHP_EOL . 'Did you accidentally name your root package after an external package?', $config['name'])); } } } foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { if (isset($config[$linkType])) { foreach ($config[$linkType] as $linkName => $constraint) { if ($err = ValidatingArrayLoader::hasPackageNamingError($linkName, true)) { throw new \RuntimeException($linkType.'.'.$err); } } } } $realPackage->setAliases($aliases); $realPackage->setStabilityFlags($stabilityFlags); $realPackage->setReferences($references); if (isset($config['prefer-stable'])) { $realPackage->setPreferStable((bool) $config['prefer-stable']); } if (isset($config['config'])) { $realPackage->setConfig($config['config']); } $repos = RepositoryFactory::defaultRepos(null, $this->config, $this->manager); foreach ($repos as $repo) { $this->manager->addRepository($repo); } $realPackage->setRepositories($this->config->getRepositories()); return $package; } private function extractAliases(array $requires, array $aliases) { foreach ($requires as $reqName => $reqVersion) { if (preg_match('{^([^,\s#]+)(?:#[^ ]+)? +as +([^,\s]+)$}', $reqVersion, $match)) { $aliases[] = array( 'package' => strtolower($reqName), 'version' => $this->versionParser->normalize($match[1], $reqVersion), 'alias' => $match[2], 'alias_normalized' => $this->versionParser->normalize($match[2], $reqVersion), ); } elseif (strpos($reqVersion, ' as ') !== false) { throw new \UnexpectedValueException('Invalid alias definition in "'.$reqName.'": "'.$reqVersion.'". Aliases should be in the form "exact-version as other-exact-version".'); } } return $aliases; } private function extractStabilityFlags(array $requires, array $stabilityFlags, $minimumStability) { $stabilities = BasePackage::$stabilities; $minimumStability = $stabilities[$minimumStability]; foreach ($requires as $reqName => $reqVersion) { $constraints = array(); // extract all sub-constraints in case it is an OR/AND multi-constraint $orSplit = preg_split('{\s*\|\|?\s*}', trim($reqVersion)); foreach ($orSplit as $orConstraint) { $andSplit = preg_split('{(?< ,]) *(? $stability) { continue; } $stabilityFlags[$name] = $stability; $match = true; } } if ($match) { continue; } foreach ($constraints as $constraint) { // infer flags for requirements that have an explicit -dev or -beta version specified but only // for those that are more unstable than the minimumStability or existing flags $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $constraint); if (preg_match('{^[^,\s@]+$}', $reqVersion) && 'stable' !== ($stabilityName = VersionParser::parseStability($reqVersion))) { $name = strtolower($reqName); $stability = $stabilities[$stabilityName]; if ((isset($stabilityFlags[$name]) && $stabilityFlags[$name] > $stability) || ($minimumStability > $stability)) { continue; } $stabilityFlags[$name] = $stability; } } } return $stabilityFlags; } private function extractReferences(array $requires, array $references) { foreach ($requires as $reqName => $reqVersion) { $reqVersion = preg_replace('{^([^,\s@]+) as .+$}', '$1', $reqVersion); if (preg_match('{^[^,\s@]+?#([a-f0-9]+)$}', $reqVersion, $match) && 'dev' === VersionParser::parseStability($reqVersion)) { $name = strtolower($reqName); $references[$name] = $match[1]; } } return $references; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; use Composer\Package\BasePackage; use Composer\Semver\Constraint\Constraint; use Composer\Package\Version\VersionParser; use Composer\Repository\PlatformRepository; use Composer\Spdx\SpdxLicenses; /** * @author Jordi Boggiano */ class ValidatingArrayLoader implements LoaderInterface { const CHECK_ALL = 3; const CHECK_UNBOUND_CONSTRAINTS = 1; const CHECK_STRICT_CONSTRAINTS = 2; private $loader; private $versionParser; private $errors; private $warnings; private $config; private $strictName; private $flags; public function __construct(LoaderInterface $loader, $strictName = true, VersionParser $parser = null, $flags = 0) { $this->loader = $loader; $this->versionParser = $parser ?: new VersionParser(); $this->strictName = $strictName; $this->flags = $flags; } public function load(array $config, $class = 'Composer\Package\CompletePackage') { $this->errors = array(); $this->warnings = array(); $this->config = $config; if ($err = self::hasPackageNamingError($config['name'])) { $this->warnings[] = 'Deprecation warning: Your package name '.$err.' Make sure you fix this as Composer 2.0 will error.'; } if ($this->strictName) { $this->validateRegex('name', '[A-Za-z0-9][A-Za-z0-9_.-]*/[A-Za-z0-9][A-Za-z0-9_.-]*', true); } else { $this->validateString('name', true); } if (!empty($this->config['version'])) { try { $this->versionParser->normalize($this->config['version']); } catch (\Exception $e) { $this->errors[] = 'version : invalid value ('.$this->config['version'].'): '.$e->getMessage(); unset($this->config['version']); } } if (!empty($this->config['config']['platform'])) { foreach ((array) $this->config['config']['platform'] as $key => $platform) { try { $this->versionParser->normalize($platform); } catch (\Exception $e) { $this->errors[] = 'config.platform.' . $key . ' : invalid value ('.$platform.'): '.$e->getMessage(); } } } $this->validateRegex('type', '[A-Za-z0-9-]+'); $this->validateString('target-dir'); $this->validateArray('extra'); if (isset($this->config['bin'])) { if (is_string($this->config['bin'])) { $this->validateString('bin'); } else { $this->validateFlatArray('bin'); } } $this->validateArray('scripts'); // TODO validate event names & listener syntax $this->validateString('description'); $this->validateUrl('homepage'); $this->validateFlatArray('keywords', '[\p{N}\p{L} ._-]+'); $releaseDate = null; $this->validateString('time'); if (!empty($this->config['time'])) { try { $releaseDate = new \DateTime($this->config['time'], new \DateTimeZone('UTC')); } catch (\Exception $e) { $this->errors[] = 'time : invalid value ('.$this->config['time'].'): '.$e->getMessage(); unset($this->config['time']); } } // check for license validity on newly updated branches if (isset($this->config['license']) && (!$releaseDate || $releaseDate->getTimestamp() >= strtotime('-8days'))) { if (is_array($this->config['license']) || is_string($this->config['license'])) { $licenses = (array) $this->config['license']; $licenseValidator = new SpdxLicenses(); foreach ($licenses as $license) { // replace proprietary by MIT for validation purposes since it's not a valid SPDX identifier, but is accepted by composer if ('proprietary' === $license) { continue; } $licenseToValidate = str_replace('proprietary', 'MIT', $license); if (!$licenseValidator->validate($licenseToValidate)) { if ($licenseValidator->validate(trim($licenseToValidate))) { $this->warnings[] = sprintf( 'License %s must not contain extra spaces, make sure to trim it.', json_encode($license) ); } else { $this->warnings[] = sprintf( 'License %s is not a valid SPDX license identifier, see https://spdx.org/licenses/ if you use an open license.' . PHP_EOL . 'If the software is closed-source, you may use "proprietary" as license.', json_encode($license) ); } } } } } if ($this->validateArray('authors') && !empty($this->config['authors'])) { foreach ($this->config['authors'] as $key => $author) { if (!is_array($author)) { $this->errors[] = 'authors.'.$key.' : should be an array, '.gettype($author).' given'; unset($this->config['authors'][$key]); continue; } foreach (array('homepage', 'email', 'name', 'role') as $authorData) { if (isset($author[$authorData]) && !is_string($author[$authorData])) { $this->errors[] = 'authors.'.$key.'.'.$authorData.' : invalid value, must be a string'; unset($this->config['authors'][$key][$authorData]); } } if (isset($author['homepage']) && !$this->filterUrl($author['homepage'])) { $this->warnings[] = 'authors.'.$key.'.homepage : invalid value ('.$author['homepage'].'), must be an http/https URL'; unset($this->config['authors'][$key]['homepage']); } if (isset($author['email']) && !filter_var($author['email'], FILTER_VALIDATE_EMAIL)) { $this->warnings[] = 'authors.'.$key.'.email : invalid value ('.$author['email'].'), must be a valid email address'; unset($this->config['authors'][$key]['email']); } if (empty($this->config['authors'][$key])) { unset($this->config['authors'][$key]); } } if (empty($this->config['authors'])) { unset($this->config['authors']); } } if ($this->validateArray('support') && !empty($this->config['support'])) { foreach (array('issues', 'forum', 'wiki', 'source', 'email', 'irc', 'docs', 'rss', 'chat') as $key) { if (isset($this->config['support'][$key]) && !is_string($this->config['support'][$key])) { $this->errors[] = 'support.'.$key.' : invalid value, must be a string'; unset($this->config['support'][$key]); } } if (isset($this->config['support']['email']) && !filter_var($this->config['support']['email'], FILTER_VALIDATE_EMAIL)) { $this->warnings[] = 'support.email : invalid value ('.$this->config['support']['email'].'), must be a valid email address'; unset($this->config['support']['email']); } if (isset($this->config['support']['irc']) && !$this->filterUrl($this->config['support']['irc'], array('irc'))) { $this->warnings[] = 'support.irc : invalid value ('.$this->config['support']['irc'].'), must be a irc:/// URL'; unset($this->config['support']['irc']); } foreach (array('issues', 'forum', 'wiki', 'source', 'docs', 'chat') as $key) { if (isset($this->config['support'][$key]) && !$this->filterUrl($this->config['support'][$key])) { $this->warnings[] = 'support.'.$key.' : invalid value ('.$this->config['support'][$key].'), must be an http/https URL'; unset($this->config['support'][$key]); } } if (empty($this->config['support'])) { unset($this->config['support']); } } if ($this->validateArray('funding') && !empty($this->config['funding'])) { foreach ($this->config['funding'] as $key => $fundingOption) { if (!is_array($fundingOption)) { $this->errors[] = 'funding.'.$key.' : should be an array, '.gettype($fundingOption).' given'; unset($this->config['funding'][$key]); continue; } foreach (array('type', 'url') as $fundingData) { if (isset($fundingOption[$fundingData]) && !is_string($fundingOption[$fundingData])) { $this->errors[] = 'funding.'.$key.'.'.$fundingData.' : invalid value, must be a string'; unset($this->config['funding'][$key][$fundingData]); } } if (isset($fundingOption['url']) && !$this->filterUrl($fundingOption['url'])) { $this->warnings[] = 'funding.'.$key.'.url : invalid value ('.$fundingOption['url'].'), must be an http/https URL'; unset($this->config['funding'][$key]['url']); } if (empty($this->config['funding'][$key])) { unset($this->config['funding'][$key]); } } if (empty($this->config['funding'])) { unset($this->config['funding']); } } $unboundConstraint = new Constraint('=', '10000000-dev'); $stableConstraint = new Constraint('=', '1.0.0'); foreach (array_keys(BasePackage::$supportedLinkTypes) as $linkType) { if ($this->validateArray($linkType) && isset($this->config[$linkType])) { foreach ($this->config[$linkType] as $package => $constraint) { if ($err = self::hasPackageNamingError($package, true)) { $this->warnings[] = 'Deprecation warning: '.$linkType.'.'.$err.' Make sure you fix this as Composer 2.0 will error.'; } elseif (!preg_match('{^[A-Za-z0-9_./-]+$}', $package)) { $this->warnings[] = $linkType.'.'.$package.' : invalid key, package names must be strings containing only [A-Za-z0-9_./-]'; } if (!is_string($constraint)) { $this->errors[] = $linkType.'.'.$package.' : invalid value, must be a string containing a version constraint'; unset($this->config[$linkType][$package]); } elseif ('self.version' !== $constraint) { try { $linkConstraint = $this->versionParser->parseConstraints($constraint); } catch (\Exception $e) { $this->errors[] = $linkType.'.'.$package.' : invalid version constraint ('.$e->getMessage().')'; unset($this->config[$linkType][$package]); continue; } // check requires for unbound constraints on non-platform packages if ( ($this->flags & self::CHECK_UNBOUND_CONSTRAINTS) && 'require' === $linkType && $linkConstraint->matches($unboundConstraint) && !PlatformRepository::isPlatformPackage($package) ) { $this->warnings[] = $linkType.'.'.$package.' : unbound version constraints ('.$constraint.') should be avoided'; } elseif ( // check requires for exact constraints ($this->flags & self::CHECK_STRICT_CONSTRAINTS) && 'require' === $linkType && strpos($linkConstraint, '=') === 0 && $stableConstraint->versionCompare($stableConstraint, $linkConstraint, '<=') ) { $this->warnings[] = $linkType.'.'.$package.' : exact version constraints ('.$constraint.') should be avoided if the package follows semantic versioning'; } } } } } if ($this->validateArray('suggest') && !empty($this->config['suggest'])) { foreach ($this->config['suggest'] as $package => $description) { if (!is_string($description)) { $this->errors[] = 'suggest.'.$package.' : invalid value, must be a string describing why the package is suggested'; unset($this->config['suggest'][$package]); } } } if ($this->validateString('minimum-stability') && !empty($this->config['minimum-stability'])) { if (!isset(BasePackage::$stabilities[$this->config['minimum-stability']])) { $this->errors[] = 'minimum-stability : invalid value ('.$this->config['minimum-stability'].'), must be one of '.implode(', ', array_keys(BasePackage::$stabilities)); unset($this->config['minimum-stability']); } } if ($this->validateArray('autoload') && !empty($this->config['autoload'])) { $types = array('psr-0', 'psr-4', 'classmap', 'files', 'exclude-from-classmap'); foreach ($this->config['autoload'] as $type => $typeConfig) { if (!in_array($type, $types)) { $this->errors[] = 'autoload : invalid value ('.$type.'), must be one of '.implode(', ', $types); unset($this->config['autoload'][$type]); } if ($type === 'psr-4') { foreach ($typeConfig as $namespace => $dirs) { if ($namespace !== '' && '\\' !== substr($namespace, -1)) { $this->errors[] = 'autoload.psr-4 : invalid value ('.$namespace.'), namespaces must end with a namespace separator, should be '.$namespace.'\\\\'; } } } } } if (!empty($this->config['autoload']['psr-4']) && !empty($this->config['target-dir'])) { $this->errors[] = 'target-dir : this can not be used together with the autoload.psr-4 setting, remove target-dir to upgrade to psr-4'; // Unset the psr-4 setting, since unsetting target-dir might // interfere with other settings. unset($this->config['autoload']['psr-4']); } // TODO validate dist // TODO validate source // TODO validate repositories // TODO validate package repositories' packages using this recursively $this->validateFlatArray('include-path'); $this->validateArray('transport-options'); // branch alias validation if (isset($this->config['extra']['branch-alias'])) { if (!is_array($this->config['extra']['branch-alias'])) { $this->errors[] = 'extra.branch-alias : must be an array of versions => aliases'; } else { foreach ($this->config['extra']['branch-alias'] as $sourceBranch => $targetBranch) { // ensure it is an alias to a -dev package if ('-dev' !== substr($targetBranch, -4)) { $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must end in -dev'; unset($this->config['extra']['branch-alias'][$sourceBranch]); continue; } // normalize without -dev and ensure it's a numeric branch that is parseable $validatedTargetBranch = $this->versionParser->normalizeBranch(substr($targetBranch, 0, -4)); if ('-dev' !== substr($validatedTargetBranch, -4)) { $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') must be a parseable number like 2.0-dev'; unset($this->config['extra']['branch-alias'][$sourceBranch]); continue; } // If using numeric aliases ensure the alias is a valid subversion if (($sourcePrefix = $this->versionParser->parseNumericAliasPrefix($sourceBranch)) && ($targetPrefix = $this->versionParser->parseNumericAliasPrefix($targetBranch)) && (stripos($targetPrefix, $sourcePrefix) !== 0) ) { $this->warnings[] = 'extra.branch-alias.'.$sourceBranch.' : the target branch ('.$targetBranch.') is not a valid numeric alias for this version'; unset($this->config['extra']['branch-alias'][$sourceBranch]); } } } } if ($this->errors) { throw new InvalidPackageException($this->errors, $this->warnings, $config); } $package = $this->loader->load($this->config, $class); $this->config = null; return $package; } public function getWarnings() { return $this->warnings; } public function getErrors() { return $this->errors; } public static function hasPackageNamingError($name, $isLink = false) { if (PlatformRepository::isPlatformPackage($name)) { return; } if (!preg_match('{^[a-z0-9](?:[_.-]?[a-z0-9]+)*/[a-z0-9](?:(?:[_.]?|-{0,2})[a-z0-9]+)*$}iD', $name)) { return $name.' is invalid, it should have a vendor name, a forward slash, and a package name. The vendor and package name can be words separated by -, . or _. The complete name should match "^[a-z0-9]([_.-]?[a-z0-9]+)*/[a-z0-9](([_.]?|-{0,2})[a-z0-9]+)*$".'; } $reservedNames = array('nul', 'con', 'prn', 'aux', 'com1', 'com2', 'com3', 'com4', 'com5', 'com6', 'com7', 'com8', 'com9', 'lpt1', 'lpt2', 'lpt3', 'lpt4', 'lpt5', 'lpt6', 'lpt7', 'lpt8', 'lpt9'); $bits = explode('/', strtolower($name)); if (in_array($bits[0], $reservedNames, true) || in_array($bits[1], $reservedNames, true)) { return $name.' is reserved, package and vendor names can not match any of: '.implode(', ', $reservedNames).'.'; } if (preg_match('{\.json$}', $name)) { return $name.' is invalid, package names can not end in .json, consider renaming it or perhaps using a -json suffix instead.'; } if (preg_match('{[A-Z]}', $name)) { if ($isLink) { return $name.' is invalid, it should not contain uppercase characters. Please use '.strtolower($name).' instead.'; } $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); $suggestName = strtolower($suggestName); return $name.' is invalid, it should not contain uppercase characters. We suggest using '.$suggestName.' instead.'; } } private function validateRegex($property, $regex, $mandatory = false) { if (!$this->validateString($property, $mandatory)) { return false; } if (!preg_match('{^'.$regex.'$}u', $this->config[$property])) { $message = $property.' : invalid value ('.$this->config[$property].'), must match '.$regex; if ($mandatory) { $this->errors[] = $message; } else { $this->warnings[] = $message; } unset($this->config[$property]); return false; } return true; } private function validateString($property, $mandatory = false) { if (isset($this->config[$property]) && !is_string($this->config[$property])) { $this->errors[] = $property.' : should be a string, '.gettype($this->config[$property]).' given'; unset($this->config[$property]); return false; } if (!isset($this->config[$property]) || trim($this->config[$property]) === '') { if ($mandatory) { $this->errors[] = $property.' : must be present'; } unset($this->config[$property]); return false; } return true; } private function validateArray($property, $mandatory = false) { if (isset($this->config[$property]) && !is_array($this->config[$property])) { $this->errors[] = $property.' : should be an array, '.gettype($this->config[$property]).' given'; unset($this->config[$property]); return false; } if (!isset($this->config[$property]) || !count($this->config[$property])) { if ($mandatory) { $this->errors[] = $property.' : must be present and contain at least one element'; } unset($this->config[$property]); return false; } return true; } private function validateFlatArray($property, $regex = null, $mandatory = false) { if (!$this->validateArray($property, $mandatory)) { return false; } $pass = true; foreach ($this->config[$property] as $key => $value) { if (!is_string($value) && !is_numeric($value)) { $this->errors[] = $property.'.'.$key.' : must be a string or int, '.gettype($value).' given'; unset($this->config[$property][$key]); $pass = false; continue; } if ($regex && !preg_match('{^'.$regex.'$}u', $value)) { $this->warnings[] = $property.'.'.$key.' : invalid value ('.$value.'), must match '.$regex; unset($this->config[$property][$key]); $pass = false; } } return $pass; } private function validateUrl($property, $mandatory = false) { if (!$this->validateString($property, $mandatory)) { return false; } if (!$this->filterUrl($this->config[$property])) { $this->warnings[] = $property.' : invalid value ('.$this->config[$property].'), must be an http/https URL'; unset($this->config[$property]); return false; } return true; } private function filterUrl($value, array $schemes = array('http', 'https')) { if ($value === '') { return true; } $bits = parse_url($value); if (empty($bits['scheme']) || empty($bits['host'])) { return false; } if (!in_array($bits['scheme'], $schemes, true)) { return false; } return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Loader; use Composer\Json\JsonFile; /** * @author Konstantin Kudryashiv */ class JsonLoader { private $loader; public function __construct(LoaderInterface $loader) { $this->loader = $loader; } /** * @param string|JsonFile $json A filename, json string or JsonFile instance to load the package from * @return \Composer\Package\PackageInterface */ public function load($json) { if ($json instanceof JsonFile) { $config = $json->read(); } elseif (file_exists($json)) { $config = JsonFile::parseJson(file_get_contents($json), $json); } elseif (is_string($json)) { $config = JsonFile::parseJson($json); } else { throw new \InvalidArgumentException(sprintf( "JsonLoader: Unknown \$json parameter %s. Please report at https://github.com/composer/composer/issues/new.", gettype($json) )); } return $this->loader->load($config); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package\Dumper; use Composer\Package\BasePackage; use Composer\Package\PackageInterface; use Composer\Package\CompletePackageInterface; use Composer\Package\RootPackageInterface; /** * @author Konstantin Kudryashiv * @author Jordi Boggiano */ class ArrayDumper { public function dump(PackageInterface $package) { $keys = array( 'binaries' => 'bin', 'type', 'extra', 'installationSource' => 'installation-source', 'autoload', 'devAutoload' => 'autoload-dev', 'notificationUrl' => 'notification-url', 'includePaths' => 'include-path', ); $data = array(); $data['name'] = $package->getPrettyName(); $data['version'] = $package->getPrettyVersion(); $data['version_normalized'] = $package->getVersion(); if ($package->getTargetDir()) { $data['target-dir'] = $package->getTargetDir(); } if ($package->getSourceType()) { $data['source']['type'] = $package->getSourceType(); $data['source']['url'] = $package->getSourceUrl(); if (null !== ($value = $package->getSourceReference())) { $data['source']['reference'] = $value; } if ($mirrors = $package->getSourceMirrors()) { $data['source']['mirrors'] = $mirrors; } } if ($package->getDistType()) { $data['dist']['type'] = $package->getDistType(); $data['dist']['url'] = $package->getDistUrl(); if (null !== ($value = $package->getDistReference())) { $data['dist']['reference'] = $value; } if (null !== ($value = $package->getDistSha1Checksum())) { $data['dist']['shasum'] = $value; } if ($mirrors = $package->getDistMirrors()) { $data['dist']['mirrors'] = $mirrors; } } if ($package->getArchiveName()) { $data['archive']['name'] = $package->getArchiveName(); } if ($package->getArchiveExcludes()) { $data['archive']['exclude'] = $package->getArchiveExcludes(); } foreach (BasePackage::$supportedLinkTypes as $type => $opts) { if ($links = $package->{'get'.ucfirst($opts['method'])}()) { foreach ($links as $link) { $data[$type][$link->getTarget()] = $link->getPrettyConstraint(); } ksort($data[$type]); } } if ($packages = $package->getSuggests()) { ksort($packages); $data['suggest'] = $packages; } if ($package->getReleaseDate()) { $data['time'] = $package->getReleaseDate()->format(DATE_RFC3339); } if ($package->isDefaultBranch()) { $data['default-branch'] = true; } $data = $this->dumpValues($package, $keys, $data); if ($package instanceof CompletePackageInterface) { $keys = array( 'scripts', 'license', 'authors', 'description', 'homepage', 'keywords', 'repositories', 'support', 'funding', ); $data = $this->dumpValues($package, $keys, $data); if (isset($data['keywords']) && \is_array($data['keywords'])) { sort($data['keywords']); } if ($package->isAbandoned()) { $data['abandoned'] = $package->getReplacementPackage() ?: true; } } if ($package instanceof RootPackageInterface) { $minimumStability = $package->getMinimumStability(); if ($minimumStability) { $data['minimum-stability'] = $minimumStability; } } if (\count($package->getTransportOptions()) > 0) { $data['transport-options'] = $package->getTransportOptions(); } return $data; } private function dumpValues(PackageInterface $package, array $keys, array $data) { foreach ($keys as $method => $key) { if (is_numeric($method)) { $method = $key; } $getter = 'get'.ucfirst($method); $value = $package->$getter(); if (null !== $value && !(\is_array($value) && 0 === \count($value))) { $data[$key] = $value; } } return $data; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Package; use Composer\Repository\RepositoryInterface; /** * Defines the essential information a package has that is used during solving/installation * * @author Jordi Boggiano */ interface PackageInterface { const DISPLAY_SOURCE_REF_IF_DEV = 0; const DISPLAY_SOURCE_REF = 1; const DISPLAY_DIST_REF = 2; /** * Returns the package's name without version info, thus not a unique identifier * * @return string package name */ public function getName(); /** * Returns the package's pretty (i.e. with proper case) name * * @return string package name */ public function getPrettyName(); /** * Returns a set of names that could refer to this package * * No version or release type information should be included in any of the * names. Provided or replaced package names need to be returned as well. * * @param bool $provides Whether provided names should be included * * @return string[] An array of strings referring to this package */ public function getNames($provides = true); /** * Allows the solver to set an id for this package to refer to it. * * @param int $id */ public function setId($id); /** * Retrieves the package's id set through setId * * @return int The previously set package id */ public function getId(); /** * Returns whether the package is a development virtual package or a concrete one * * @return bool */ public function isDev(); /** * Returns the package type, e.g. library * * @return string The package type */ public function getType(); /** * Returns the package targetDir property * * @return string|null The package targetDir */ public function getTargetDir(); /** * Returns the package extra data * * @return array The package extra data */ public function getExtra(); /** * Sets source from which this package was installed (source/dist). * * @param string $type source/dist */ public function setInstallationSource($type); /** * Returns source from which this package was installed (source/dist). * * @return string source/dist */ public function getInstallationSource(); /** * Returns the repository type of this package, e.g. git, svn * * @return string The repository type */ public function getSourceType(); /** * Returns the repository url of this package, e.g. git://github.com/naderman/composer.git * * @return string The repository url */ public function getSourceUrl(); /** * Returns the repository urls of this package including mirrors, e.g. git://github.com/naderman/composer.git * * @return string[] */ public function getSourceUrls(); /** * Returns the repository reference of this package, e.g. master, 1.0.0 or a commit hash for git * * @return string The repository reference */ public function getSourceReference(); /** * Returns the source mirrors of this package * * @return array|null */ public function getSourceMirrors(); /** * Returns the type of the distribution archive of this version, e.g. zip, tarball * * @return string The repository type */ public function getDistType(); /** * Returns the url of the distribution archive of this version * * @return string */ public function getDistUrl(); /** * Returns the urls of the distribution archive of this version, including mirrors * * @return string[] */ public function getDistUrls(); /** * Returns the reference of the distribution archive of this version, e.g. master, 1.0.0 or a commit hash for git * * @return string */ public function getDistReference(); /** * Returns the sha1 checksum for the distribution archive of this version * * @return string */ public function getDistSha1Checksum(); /** * Returns the dist mirrors of this package * * @return array|null */ public function getDistMirrors(); /** * Returns the version of this package * * @return string version */ public function getVersion(); /** * Returns the pretty (i.e. non-normalized) version string of this package * * @return string version */ public function getPrettyVersion(); /** * Returns the pretty version string plus a git or hg commit hash of this package * * @see getPrettyVersion * * @param bool $truncate If the source reference is a sha1 hash, truncate it * @param int $displayMode One of the DISPLAY_ constants on this interface determining display of references * @return string version * * @psalm-param self::DISPLAY_SOURCE_REF_IF_DEV|self::DISPLAY_SOURCE_REF|self::DISPLAY_DIST_REF $displayMode */ public function getFullPrettyVersion($truncate = true, $displayMode = self::DISPLAY_SOURCE_REF_IF_DEV); /** * Returns the release date of the package * * @return \DateTime */ public function getReleaseDate(); /** * Returns the stability of this package: one of (dev, alpha, beta, RC, stable) * * @return string */ public function getStability(); /** * Returns a set of links to packages which need to be installed before * this package can be installed * * @return Link[] An array of package links defining required packages */ public function getRequires(); /** * Returns a set of links to packages which must not be installed at the * same time as this package * * @return Link[] An array of package links defining conflicting packages */ public function getConflicts(); /** * Returns a set of links to virtual packages that are provided through * this package * * @return Link[] An array of package links defining provided packages */ public function getProvides(); /** * Returns a set of links to packages which can alternatively be * satisfied by installing this package * * @return Link[] An array of package links defining replaced packages */ public function getReplaces(); /** * Returns a set of links to packages which are required to develop * this package. These are installed if in dev mode. * * @return Link[] An array of package links defining packages required for development */ public function getDevRequires(); /** * Returns a set of package names and reasons why they are useful in * combination with this package. * * @return array An array of package suggestions with descriptions * @psalm-return array */ public function getSuggests(); /** * Returns an associative array of autoloading rules * * {"": {""}} * * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to * directories for autoloading using the type specified. * * @return array Mapping of autoloading rules * @psalm-return array{psr-0?: array, psr-4?: array, classmap?: list, files?: list} */ public function getAutoload(); /** * Returns an associative array of dev autoloading rules * * {"": {""}} * * Type is either "psr-4", "psr-0", "classmap" or "files". Namespaces are mapped to * directories for autoloading using the type specified. * * @return array Mapping of dev autoloading rules * @psalm-return array{psr-0?: array, psr-4?: array, classmap?: list, files?: list} */ public function getDevAutoload(); /** * Returns a list of directories which should get added to PHP's * include path. * * @return string[] */ public function getIncludePaths(); /** * Stores a reference to the repository that owns the package * * @param RepositoryInterface $repository */ public function setRepository(RepositoryInterface $repository); /** * Returns a reference to the repository that owns the package * * @return RepositoryInterface */ public function getRepository(); /** * Returns the package binaries * * @return string[] */ public function getBinaries(); /** * Returns package unique name, constructed from name and version. * * @return string */ public function getUniqueName(); /** * Returns the package notification url * * @return string */ public function getNotificationUrl(); /** * Converts the package into a readable and unique string * * @return string */ public function __toString(); /** * Converts the package into a pretty readable string * * @return string */ public function getPrettyString(); /** * Returns default base filename for archive * * @return array */ public function getArchiveName(); /** * Returns a list of patterns to exclude from package archives * * @return array */ public function getArchiveExcludes(); /** * @return bool */ public function isDefaultBranch(); /** * Returns a list of options to download package dist files * * @return array */ public function getTransportOptions(); /** * @param string $reference * * @return void */ public function setSourceReference($reference); /** * @param string $url * * @return void */ public function setDistUrl($url); /** * @param string $type * * @return void */ public function setDistType($type); /** * @param string $reference * * @return void */ public function setDistReference($reference); /** * Set dist and source references and update dist URL for ones that contain a reference * * @param string $reference * * @return void */ public function setSourceDistReferences($reference); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\IO; use Composer\Config; use Psr\Log\LoggerInterface; /** * The Input/Output helper interface. * * @author François Pluchino */ interface IOInterface extends LoggerInterface { const QUIET = 1; const NORMAL = 2; const VERBOSE = 4; const VERY_VERBOSE = 8; const DEBUG = 16; /** * Is this input means interactive? * * @return bool */ public function isInteractive(); /** * Is this output verbose? * * @return bool */ public function isVerbose(); /** * Is the output very verbose? * * @return bool */ public function isVeryVerbose(); /** * Is the output in debug verbosity? * * @return bool */ public function isDebug(); /** * Is this output decorated? * * @return bool */ public function isDecorated(); /** * Writes a message to the output. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function write($messages, $newline = true, $verbosity = self::NORMAL); /** * Writes a message to the error output. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function writeError($messages, $newline = true, $verbosity = self::NORMAL); /** * Writes a message to the output, without formatting it. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL); /** * Writes a message to the error output, without formatting it. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL); /** * Overwrites a previous message to the output. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $size The size of line * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL); /** * Overwrites a previous message to the error output. * * @param string|array $messages The message as an array of lines or a single string * @param bool $newline Whether to add a newline or not * @param int $size The size of line * @param int $verbosity Verbosity level from the VERBOSITY_* constants */ public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL); /** * Asks a question to the user. * * @param string $question The question to ask * @param string $default The default answer if none is given by the user * * @throws \RuntimeException If there is no data to read in the input stream * @return string|null The user answer */ public function ask($question, $default = null); /** * Asks a confirmation to the user. * * The question will be asked until the user answers by nothing, yes, or no. * * @param string $question The question to ask * @param bool $default The default answer if the user enters nothing * * @return bool true if the user has confirmed, false otherwise */ public function askConfirmation($question, $default = true); /** * Asks for a value and validates the response. * * The validator receives the data to validate. It must return the * validated data when the data is valid and throw an exception * otherwise. * * @param string $question The question to ask * @param callable $validator A PHP callback * @param null|int $attempts Max number of times to ask before giving up (default of null means infinite) * @param mixed $default The default answer if none is given by the user * * @throws \Exception When any of the validators return an error * @return mixed */ public function askAndValidate($question, $validator, $attempts = null, $default = null); /** * Asks a question to the user and hide the answer. * * @param string $question The question to ask * * @return string|null The answer */ public function askAndHideAnswer($question); /** * Asks the user to select a value. * * @param string $question The question to ask * @param array $choices List of choices to pick from * @param bool|string $default The default answer if the user enters nothing * @param bool|int $attempts Max number of times to ask before giving up (false by default, which means infinite) * @param string $errorMessage Message which will be shown if invalid value from choice list would be picked * @param bool $multiselect Select more than one value separated by comma * * @throws \InvalidArgumentException * @return int|string|array|bool The selected value or values (the key of the choices array) */ public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false); /** * Get all authentication information entered. * * @return array The map of authentication data */ public function getAuthentications(); /** * Verify if the repository has a authentication information. * * @param string $repositoryName The unique name of repository * * @return bool */ public function hasAuthentication($repositoryName); /** * Get the username and password of repository. * * @param string $repositoryName The unique name of repository * * @return array The 'username' and 'password' */ public function getAuthentication($repositoryName); /** * Set the authentication information for the repository. * * @param string $repositoryName The unique name of repository * @param string $username The username * @param string $password The password */ public function setAuthentication($repositoryName, $username, $password = null); /** * Loads authentications from a config instance * * @param Config $config */ public function loadConfiguration(Config $config); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\IO; use Composer\Question\StrictConfirmationQuestion; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\Question; /** * The Input/Output helper. * * @author François Pluchino * @author Jordi Boggiano */ class ConsoleIO extends BaseIO { /** @var InputInterface */ protected $input; /** @var OutputInterface */ protected $output; /** @var HelperSet */ protected $helperSet; /** @var string */ protected $lastMessage; /** @var string */ protected $lastMessageErr; /** @var float */ private $startTime; /** @var array */ private $verbosityMap; /** * Constructor. * * @param InputInterface $input The input instance * @param OutputInterface $output The output instance * @param HelperSet $helperSet The helperSet instance */ public function __construct(InputInterface $input, OutputInterface $output, HelperSet $helperSet) { $this->input = $input; $this->output = $output; $this->helperSet = $helperSet; $this->verbosityMap = array( self::QUIET => OutputInterface::VERBOSITY_QUIET, self::NORMAL => OutputInterface::VERBOSITY_NORMAL, self::VERBOSE => OutputInterface::VERBOSITY_VERBOSE, self::VERY_VERBOSE => OutputInterface::VERBOSITY_VERY_VERBOSE, self::DEBUG => OutputInterface::VERBOSITY_DEBUG, ); } /** * @param float $startTime */ public function enableDebugging($startTime) { $this->startTime = $startTime; } /** * {@inheritDoc} */ public function isInteractive() { return $this->input->isInteractive(); } /** * {@inheritDoc} */ public function isDecorated() { return $this->output->isDecorated(); } /** * {@inheritDoc} */ public function isVerbose() { return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERBOSE; } /** * {@inheritDoc} */ public function isVeryVerbose() { return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_VERY_VERBOSE; } /** * {@inheritDoc} */ public function isDebug() { return $this->output->getVerbosity() >= OutputInterface::VERBOSITY_DEBUG; } /** * {@inheritDoc} */ public function write($messages, $newline = true, $verbosity = self::NORMAL) { $this->doWrite($messages, $newline, false, $verbosity); } /** * {@inheritDoc} */ public function writeError($messages, $newline = true, $verbosity = self::NORMAL) { $this->doWrite($messages, $newline, true, $verbosity); } /** * {@inheritDoc} */ public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) { $this->doWrite($messages, $newline, false, $verbosity, true); } /** * {@inheritDoc} */ public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) { $this->doWrite($messages, $newline, true, $verbosity, true); } /** * @param array|string $messages * @param bool $newline * @param bool $stderr * @param int $verbosity */ private function doWrite($messages, $newline, $stderr, $verbosity, $raw = false) { $sfVerbosity = $this->verbosityMap[$verbosity]; if ($sfVerbosity > $this->output->getVerbosity()) { return; } // hack to keep our usage BC with symfony<2.8 versions // this removes the quiet output but there is no way around it // see https://github.com/composer/composer/pull/4913 if (OutputInterface::VERBOSITY_QUIET === 0) { $sfVerbosity = OutputInterface::OUTPUT_NORMAL; } if ($raw) { if ($sfVerbosity === OutputInterface::OUTPUT_NORMAL) { $sfVerbosity = OutputInterface::OUTPUT_RAW; } else { $sfVerbosity |= OutputInterface::OUTPUT_RAW; } } if (null !== $this->startTime) { $memoryUsage = memory_get_usage() / 1024 / 1024; $timeSpent = microtime(true) - $this->startTime; $messages = array_map(function ($message) use ($memoryUsage, $timeSpent) { return sprintf('[%.1fMiB/%.2fs] %s', $memoryUsage, $timeSpent, $message); }, (array) $messages); } if (true === $stderr && $this->output instanceof ConsoleOutputInterface) { $this->output->getErrorOutput()->write($messages, $newline, $sfVerbosity); $this->lastMessageErr = implode($newline ? "\n" : '', (array) $messages); return; } $this->output->write($messages, $newline, $sfVerbosity); $this->lastMessage = implode($newline ? "\n" : '', (array) $messages); } /** * {@inheritDoc} */ public function overwrite($messages, $newline = true, $size = null, $verbosity = self::NORMAL) { $this->doOverwrite($messages, $newline, $size, false, $verbosity); } /** * {@inheritDoc} */ public function overwriteError($messages, $newline = true, $size = null, $verbosity = self::NORMAL) { $this->doOverwrite($messages, $newline, $size, true, $verbosity); } /** * @param array|string $messages * @param bool $newline * @param int|null $size * @param bool $stderr * @param int $verbosity */ private function doOverwrite($messages, $newline, $size, $stderr, $verbosity) { // messages can be an array, let's convert it to string anyway $messages = implode($newline ? "\n" : '', (array) $messages); // since overwrite is supposed to overwrite last message... if (!isset($size)) { // removing possible formatting of lastMessage with strip_tags $size = strlen(strip_tags($stderr ? $this->lastMessageErr : $this->lastMessage)); } // ...let's fill its length with backspaces $this->doWrite(str_repeat("\x08", $size), false, $stderr, $verbosity); // write the new message $this->doWrite($messages, false, $stderr, $verbosity); // In cmd.exe on Win8.1 (possibly 10?), the line can not be cleared, so we need to // track the length of previous output and fill it with spaces to make sure the line is cleared. // See https://github.com/composer/composer/pull/5836 for more details $fill = $size - strlen(strip_tags($messages)); if ($fill > 0) { // whitespace whatever has left $this->doWrite(str_repeat(' ', $fill), false, $stderr, $verbosity); // move the cursor back $this->doWrite(str_repeat("\x08", $fill), false, $stderr, $verbosity); } if ($newline) { $this->doWrite('', true, $stderr, $verbosity); } if ($stderr) { $this->lastMessageErr = $messages; } else { $this->lastMessage = $messages; } } /** * @param int $max * @return ProgressBar */ public function getProgressBar($max = 0) { return new ProgressBar($this->getErrorOutput(), $max); } /** * {@inheritDoc} */ public function ask($question, $default = null) { /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ $helper = $this->helperSet->get('question'); $question = new Question($question, $default); return $helper->ask($this->input, $this->getErrorOutput(), $question); } /** * {@inheritDoc} */ public function askConfirmation($question, $default = true) { /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ $helper = $this->helperSet->get('question'); $question = new StrictConfirmationQuestion($question, $default); return $helper->ask($this->input, $this->getErrorOutput(), $question); } /** * {@inheritDoc} */ public function askAndValidate($question, $validator, $attempts = null, $default = null) { /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ $helper = $this->helperSet->get('question'); $question = new Question($question, $default); $question->setValidator($validator); $question->setMaxAttempts($attempts); return $helper->ask($this->input, $this->getErrorOutput(), $question); } /** * {@inheritDoc} */ public function askAndHideAnswer($question) { /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ $helper = $this->helperSet->get('question'); $question = new Question($question); $question->setHidden(true); return $helper->ask($this->input, $this->getErrorOutput(), $question); } /** * {@inheritDoc} */ public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) { /** @var \Symfony\Component\Console\Helper\QuestionHelper $helper */ $helper = $this->helperSet->get('question'); $question = new ChoiceQuestion($question, $choices, $default); $question->setMaxAttempts($attempts ?: null); // IOInterface requires false, and Question requires null or int $question->setErrorMessage($errorMessage); $question->setMultiselect($multiselect); $result = $helper->ask($this->input, $this->getErrorOutput(), $question); if (!is_array($result)) { return (string) array_search($result, $choices, true); } $results = array(); foreach ($choices as $index => $choice) { if (in_array($choice, $result, true)) { $results[] = (string) $index; } } return $results; } /** * @return OutputInterface */ private function getErrorOutput() { if ($this->output instanceof ConsoleOutputInterface) { return $this->output->getErrorOutput(); } return $this->output; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\IO; use Composer\Config; use Composer\Util\ProcessExecutor; use Psr\Log\LogLevel; abstract class BaseIO implements IOInterface { protected $authentications = array(); /** * {@inheritDoc} */ public function getAuthentications() { return $this->authentications; } /** * {@inheritDoc} */ public function resetAuthentications() { $this->authentications = array(); } /** * {@inheritDoc} */ public function hasAuthentication($repositoryName) { return isset($this->authentications[$repositoryName]); } /** * {@inheritDoc} */ public function getAuthentication($repositoryName) { if (isset($this->authentications[$repositoryName])) { return $this->authentications[$repositoryName]; } return array('username' => null, 'password' => null); } /** * {@inheritDoc} */ public function setAuthentication($repositoryName, $username, $password = null) { $this->authentications[$repositoryName] = array('username' => $username, 'password' => $password); } /** * {@inheritDoc} */ public function writeRaw($messages, $newline = true, $verbosity = self::NORMAL) { $this->write($messages, $newline, $verbosity); } /** * {@inheritDoc} */ public function writeErrorRaw($messages, $newline = true, $verbosity = self::NORMAL) { $this->writeError($messages, $newline, $verbosity); } /** * Check for overwrite and set the authentication information for the repository. * * @param string $repositoryName The unique name of repository * @param string $username The username * @param string $password The password */ protected function checkAndSetAuthentication($repositoryName, $username, $password = null) { if ($this->hasAuthentication($repositoryName)) { $auth = $this->getAuthentication($repositoryName); if ($auth['username'] === $username && $auth['password'] === $password) { return; } $this->writeError( sprintf( "Warning: You should avoid overwriting already defined auth settings for %s.", $repositoryName ) ); } $this->setAuthentication($repositoryName, $username, $password); } /** * {@inheritDoc} */ public function loadConfiguration(Config $config) { $bitbucketOauth = $config->get('bitbucket-oauth') ?: array(); $githubOauth = $config->get('github-oauth') ?: array(); $gitlabOauth = $config->get('gitlab-oauth') ?: array(); $gitlabToken = $config->get('gitlab-token') ?: array(); $httpBasic = $config->get('http-basic') ?: array(); $bearerToken = $config->get('bearer') ?: array(); // reload oauth tokens from config if available foreach ($bitbucketOauth as $domain => $cred) { $this->checkAndSetAuthentication($domain, $cred['consumer-key'], $cred['consumer-secret']); } foreach ($githubOauth as $domain => $token) { // allowed chars for GH tokens are from https://github.blog/changelog/2021-03-04-authentication-token-format-updates/ // plus dots which were at some point used for GH app integration tokens if (!preg_match('{^[.A-Za-z0-9_]+$}', $token)) { throw new \UnexpectedValueException('Your github oauth token for '.$domain.' contains invalid characters: "'.$token.'"'); } $this->checkAndSetAuthentication($domain, $token, 'x-oauth-basic'); } foreach ($gitlabOauth as $domain => $token) { $this->checkAndSetAuthentication($domain, $token, 'oauth2'); } foreach ($gitlabToken as $domain => $token) { $username = is_array($token) && array_key_exists("username", $token) ? $token["username"] : $token; $password = is_array($token) && array_key_exists("token", $token) ? $token["token"] : 'private-token'; $this->checkAndSetAuthentication($domain, $username, $password); } // reload http basic credentials from config if available foreach ($httpBasic as $domain => $cred) { $this->checkAndSetAuthentication($domain, $cred['username'], $cred['password']); } foreach ($bearerToken as $domain => $token) { $this->checkAndSetAuthentication($domain, $token, 'bearer'); } // setup process timeout ProcessExecutor::setTimeout((int) $config->get('process-timeout')); } /** * System is unusable. * * @param string $message * @param array $context * @return null */ public function emergency($message, array $context = array()) { return $this->log(LogLevel::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param array $context * @return null */ public function alert($message, array $context = array()) { return $this->log(LogLevel::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param array $context * @return null */ public function critical($message, array $context = array()) { return $this->log(LogLevel::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param array $context * @return null */ public function error($message, array $context = array()) { return $this->log(LogLevel::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param array $context * @return null */ public function warning($message, array $context = array()) { return $this->log(LogLevel::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param array $context * @return null */ public function notice($message, array $context = array()) { return $this->log(LogLevel::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param array $context * @return null */ public function info($message, array $context = array()) { return $this->log(LogLevel::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param array $context * @return null */ public function debug($message, array $context = array()) { return $this->log(LogLevel::DEBUG, $message, $context); } /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * @return null */ public function log($level, $message, array $context = array()) { if (in_array($level, array(LogLevel::EMERGENCY, LogLevel::ALERT, LogLevel::CRITICAL, LogLevel::ERROR))) { $this->writeError(''.$message.''); } elseif ($level === LogLevel::WARNING) { $this->writeError(''.$message.''); } elseif ($level === LogLevel::NOTICE) { $this->writeError(''.$message.'', true, self::VERBOSE); } elseif ($level === LogLevel::INFO) { $this->writeError(''.$message.'', true, self::VERY_VERBOSE); } else { $this->writeError($message, true, self::DEBUG); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\IO; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Output\StreamOutput; use Symfony\Component\Console\Formatter\OutputFormatterInterface; use Symfony\Component\Console\Input\StreamableInputInterface; use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Helper\HelperSet; /** * @author Jordi Boggiano */ class BufferIO extends ConsoleIO { /** * @param string $input * @param int $verbosity * @param OutputFormatterInterface|null $formatter */ public function __construct($input = '', $verbosity = StreamOutput::VERBOSITY_NORMAL, OutputFormatterInterface $formatter = null) { $input = new StringInput($input); $input->setInteractive(false); $output = new StreamOutput(fopen('php://memory', 'rw'), $verbosity, $formatter ? $formatter->isDecorated() : false, $formatter); parent::__construct($input, $output, new HelperSet(array( new QuestionHelper(), ))); } public function getOutput() { fseek($this->output->getStream(), 0); $output = stream_get_contents($this->output->getStream()); $output = preg_replace_callback("{(?<=^|\n|\x08)(.+?)(\x08+)}", function ($matches) { $pre = strip_tags($matches[1]); if (strlen($pre) === strlen($matches[2])) { return ''; } // TODO reverse parse the string, skipping span tags and \033\[([0-9;]+)m(.*?)\033\[0m style blobs return rtrim($matches[1])."\n"; }, $output); return $output; } public function setUserInputs(array $inputs) { if (!$this->input instanceof StreamableInputInterface) { throw new \RuntimeException('Setting the user inputs requires at least the version 3.2 of the symfony/console component.'); } $this->input->setStream($this->createStream($inputs)); $this->input->setInteractive(true); } private function createStream(array $inputs) { $stream = fopen('php://memory', 'r+'); foreach ($inputs as $input) { fwrite($stream, $input.PHP_EOL); } rewind($stream); return $stream; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\IO; /** * IOInterface that is not interactive and never writes the output * * @author Christophe Coevoet */ class NullIO extends BaseIO { /** * {@inheritDoc} */ public function isInteractive() { return false; } /** * {@inheritDoc} */ public function isVerbose() { return false; } /** * {@inheritDoc} */ public function isVeryVerbose() { return false; } /** * {@inheritDoc} */ public function isDebug() { return false; } /** * {@inheritDoc} */ public function isDecorated() { return false; } /** * {@inheritDoc} */ public function write($messages, $newline = true, $verbosity = self::NORMAL) { } /** * {@inheritDoc} */ public function writeError($messages, $newline = true, $verbosity = self::NORMAL) { } /** * {@inheritDoc} */ public function overwrite($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) { } /** * {@inheritDoc} */ public function overwriteError($messages, $newline = true, $size = 80, $verbosity = self::NORMAL) { } /** * {@inheritDoc} */ public function ask($question, $default = null) { return $default; } /** * {@inheritDoc} */ public function askConfirmation($question, $default = true) { return $default; } /** * {@inheritDoc} */ public function askAndValidate($question, $validator, $attempts = false, $default = null) { return $default; } /** * {@inheritDoc} */ public function askAndHideAnswer($question) { return null; } /** * {@inheritDoc} */ public function select($question, $choices, $default, $attempts = false, $errorMessage = 'Value "%s" is invalid', $multiselect = false) { return $default; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Config; use Composer\Downloader\TransportException; /** * @author Paul Wenke */ class Bitbucket { /** @var IOInterface */ private $io; /** @var Config */ private $config; /** @var ProcessExecutor */ private $process; /** @var HttpDownloader */ private $httpDownloader; /** @var array */ private $token = array(); /** @var int|null */ private $time; const OAUTH2_ACCESS_TOKEN_URL = 'https://bitbucket.org/site/oauth2/access_token'; /** * Constructor. * * @param IOInterface $io The IO instance * @param Config $config The composer configuration * @param ProcessExecutor $process Process instance, injectable for mocking * @param HttpDownloader $httpDownloader Remote Filesystem, injectable for mocking * @param int $time Timestamp, injectable for mocking */ public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, HttpDownloader $httpDownloader = null, $time = null) { $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor($io); $this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); $this->time = $time; } /** * @return string */ public function getToken() { if (!isset($this->token['access_token'])) { return ''; } return $this->token['access_token']; } /** * Attempts to authorize a Bitbucket domain via OAuth * * @param string $originUrl The host this Bitbucket instance is located at * @return bool true on success */ public function authorizeOAuth($originUrl) { if ($originUrl !== 'bitbucket.org') { return false; } // if available use token from git config if (0 === $this->process->execute('git config bitbucket.accesstoken', $output)) { $this->io->setAuthentication($originUrl, 'x-token-auth', trim($output)); return true; } return false; } /** * @return bool */ private function requestAccessToken() { try { $response = $this->httpDownloader->get(self::OAUTH2_ACCESS_TOKEN_URL, array( 'retry-auth-failure' => false, 'http' => array( 'method' => 'POST', 'content' => 'grant_type=client_credentials', ), )); $this->token = $response->decodeJson(); } catch (TransportException $e) { if ($e->getCode() === 400) { $this->io->writeError('Invalid OAuth consumer provided.'); $this->io->writeError('This can have two reasons:'); $this->io->writeError('1. You are authenticating with a bitbucket username/password combination'); $this->io->writeError('2. You are using an OAuth consumer, but didn\'t configure a (dummy) callback url'); return false; } if (in_array($e->getCode(), array(403, 401))) { $this->io->writeError('Invalid OAuth consumer provided.'); $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); return false; } throw $e; } return true; } /** * Authorizes a Bitbucket domain interactively via OAuth * * @param string $originUrl The host this Bitbucket instance is located at * @param string $message The reason this authorization is required * @throws \RuntimeException * @throws TransportException|\Exception * @return bool true on success */ public function authorizeOAuthInteractively($originUrl, $message = null) { if ($message) { $this->io->writeError($message); } $url = 'https://support.atlassian.com/bitbucket-cloud/docs/use-oauth-on-bitbucket-cloud/'; $this->io->writeError(sprintf('Follow the instructions on %s', $url)); $this->io->writeError(sprintf('to create a consumer. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); $this->io->writeError('Ensure you enter a "Callback URL" (http://example.com is fine) or it will not be possible to create an Access Token (this callback url will not be used by composer)'); $consumerKey = trim($this->io->askAndHideAnswer('Consumer Key (hidden): ')); if (!$consumerKey) { $this->io->writeError('No consumer key given, aborting.'); $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); return false; } $consumerSecret = trim($this->io->askAndHideAnswer('Consumer Secret (hidden): ')); if (!$consumerSecret) { $this->io->writeError('No consumer secret given, aborting.'); $this->io->writeError('You can also add it manually later by using "composer config --global --auth bitbucket-oauth.bitbucket.org "'); return false; } $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); if (!$this->requestAccessToken()) { return false; } // store value in user config $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); // Remove conflicting basic auth credentials (if available) $this->config->getAuthConfigSource()->removeConfigSetting('http-basic.' . $originUrl); $this->io->writeError('Consumer stored successfully.'); return true; } /** * Retrieves an access token from Bitbucket. * * @param string $originUrl * @param string $consumerKey * @param string $consumerSecret * @return string */ public function requestToken($originUrl, $consumerKey, $consumerSecret) { if (!empty($this->token) || $this->getTokenFromConfig($originUrl)) { return $this->token['access_token']; } $this->io->setAuthentication($originUrl, $consumerKey, $consumerSecret); if (!$this->requestAccessToken()) { return ''; } $this->storeInAuthConfig($originUrl, $consumerKey, $consumerSecret); return $this->token['access_token']; } /** * Store the new/updated credentials to the configuration * @param string $originUrl * @param string $consumerKey * @param string $consumerSecret */ private function storeInAuthConfig($originUrl, $consumerKey, $consumerSecret) { $this->config->getConfigSource()->removeConfigSetting('bitbucket-oauth.'.$originUrl); $time = null === $this->time ? time() : $this->time; $consumer = array( "consumer-key" => $consumerKey, "consumer-secret" => $consumerSecret, "access-token" => $this->token['access_token'], "access-token-expiration" => $time + $this->token['expires_in'], ); $this->config->getAuthConfigSource()->addConfigSetting('bitbucket-oauth.'.$originUrl, $consumer); } /** * @param string $originUrl * @return bool */ private function getTokenFromConfig($originUrl) { $authConfig = $this->config->get('bitbucket-oauth'); if ( !isset($authConfig[$originUrl]['access-token'], $authConfig[$originUrl]['access-token-expiration']) || time() > $authConfig[$originUrl]['access-token-expiration'] ) { return false; } $this->token = array( 'access_token' => $authConfig[$originUrl]['access-token'], ); return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Downloader\DownloaderInterface; use Composer\Package\PackageInterface; use React\Promise\PromiseInterface; class SyncHelper { /** * Helps you download + install a single package in a synchronous way * * This executes all the required steps and waits for promises to complete * * @param Loop $loop Loop instance which you can get from $composer->getLoop() * @param DownloaderInterface $downloader Downloader instance you can get from $composer->getDownloadManager()->getDownloader('zip') for example * @param string $path the installation path for the package * @param PackageInterface $package the package to install * @param PackageInterface|null $prevPackage the previous package if this is an update and not an initial installation */ public static function downloadAndInstallPackageSync(Loop $loop, DownloaderInterface $downloader, $path, PackageInterface $package, PackageInterface $prevPackage = null) { $type = $prevPackage ? 'update' : 'install'; try { self::await($loop, $downloader->download($package, $path, $prevPackage)); self::await($loop, $downloader->prepare($type, $package, $path, $prevPackage)); if ($type === 'update') { self::await($loop, $downloader->update($package, $path, $prevPackage)); } else { self::await($loop, $downloader->install($package, $path, $prevPackage)); } } catch (\Exception $e) { self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); throw $e; } self::await($loop, $downloader->cleanup($type, $package, $path, $prevPackage)); } /** * Waits for a promise to resolve * * @param Loop $loop Loop instance which you can get from $composer->getLoop() * @param PromiseInterface|null $promise */ public static function await(Loop $loop, PromiseInterface $promise = null) { if ($promise) { $loop->wait(array($promise)); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\IO\IOInterface; use Symfony\Component\Process\Process; use Symfony\Component\Process\ProcessUtils; use Symfony\Component\Process\Exception\RuntimeException; use React\Promise\Promise; /** * @author Robert Schönthal * @author Jordi Boggiano */ class ProcessExecutor { const STATUS_QUEUED = 1; const STATUS_STARTED = 2; const STATUS_COMPLETED = 3; const STATUS_FAILED = 4; const STATUS_ABORTED = 5; protected static $timeout = 300; protected $captureOutput; protected $errorOutput; protected $io; /** * @psalm-var array> */ private $jobs = array(); private $runningJobs = 0; private $maxJobs = 10; private $idGen = 0; private $allowAsync = false; public function __construct(IOInterface $io = null) { $this->io = $io; } /** * runs a process on the commandline * * @param string $command the command to execute * @param mixed $output the output will be written into this var if passed by ref * if a callable is passed it will be used as output handler * @param string $cwd the working directory * @return int statuscode */ public function execute($command, &$output = null, $cwd = null) { if (func_num_args() > 1) { return $this->doExecute($command, $cwd, false, $output); } return $this->doExecute($command, $cwd, false); } /** * runs a process on the commandline in TTY mode * * @param string $command the command to execute * @param string $cwd the working directory * @return int statuscode */ public function executeTty($command, $cwd = null) { if (Platform::isTty()) { return $this->doExecute($command, $cwd, true); } return $this->doExecute($command, $cwd, false); } private function doExecute($command, $cwd, $tty, &$output = null) { if ($this->io && $this->io->isDebug()) { $safeCommand = preg_replace_callback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', function ($m) { // if the username looks like a long (12char+) hex string, or a modern github token (e.g. ghp_xxx) we obfuscate that if (preg_match('{^([a-f0-9]{12,}|gh[a-z]_[a-zA-Z0-9_]+)$}', $m['user'])) { return '://***:***@'; } return '://'.$m['user'].':***@'; }, $command); $safeCommand = preg_replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); $this->io->writeError('Executing command ('.($cwd ?: 'CWD').'): '.$safeCommand); } // TODO in 2.2, these two checks can be dropped as Symfony 4+ supports them out of the box // make sure that null translate to the proper directory in case the dir is a symlink // and we call a git command, because msysgit does not handle symlinks properly if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) { $cwd = realpath(getcwd()); } if (null !== $cwd && !is_dir($cwd)) { throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd); } $this->captureOutput = func_num_args() > 3; $this->errorOutput = null; // TODO in v3, commands should be passed in as arrays of cmd + args if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); } else { $process = new Process($command, $cwd, null, null, static::getTimeout()); } if (!Platform::isWindows() && $tty) { try { $process->setTty(true); } catch (RuntimeException $e) { // ignore TTY enabling errors } } $callback = is_callable($output) ? $output : array($this, 'outputHandler'); $process->run($callback); if ($this->captureOutput && !is_callable($output)) { $output = $process->getOutput(); } $this->errorOutput = $process->getErrorOutput(); return $process->getExitCode(); } /** * starts a process on the commandline in async mode * * @param string $command the command to execute * @param string $cwd the working directory * @return Promise */ public function executeAsync($command, $cwd = null) { if (!$this->allowAsync) { throw new \LogicException('You must use the ProcessExecutor instance which is part of a Composer\Loop instance to be able to run async processes'); } $job = array( 'id' => $this->idGen++, 'status' => self::STATUS_QUEUED, 'command' => $command, 'cwd' => $cwd, ); $resolver = function ($resolve, $reject) use (&$job) { $job['status'] = ProcessExecutor::STATUS_QUEUED; $job['resolve'] = $resolve; $job['reject'] = $reject; }; $self = $this; $canceler = function () use (&$job) { if ($job['status'] === ProcessExecutor::STATUS_QUEUED) { $job['status'] = ProcessExecutor::STATUS_ABORTED; } if ($job['status'] !== ProcessExecutor::STATUS_STARTED) { return; } $job['status'] = ProcessExecutor::STATUS_ABORTED; try { if (defined('SIGINT')) { $job['process']->signal(SIGINT); } } catch (\Exception $e) { // signal can throw in various conditions, but we don't care if it fails } $job['process']->stop(1); throw new \RuntimeException('Aborted process'); }; $promise = new Promise($resolver, $canceler); $promise = $promise->then(function () use (&$job, $self) { if ($job['process']->isSuccessful()) { $job['status'] = ProcessExecutor::STATUS_COMPLETED; } else { $job['status'] = ProcessExecutor::STATUS_FAILED; } // TODO 3.0 this should be done directly on $this when PHP 5.3 is dropped $self->markJobDone(); return $job['process']; }, function ($e) use (&$job, $self) { $job['status'] = ProcessExecutor::STATUS_FAILED; $self->markJobDone(); throw $e; }); $this->jobs[$job['id']] = &$job; if ($this->runningJobs < $this->maxJobs) { $this->startJob($job['id']); } return $promise; } private function startJob($id) { $job = &$this->jobs[$id]; if ($job['status'] !== self::STATUS_QUEUED) { return; } // start job $job['status'] = self::STATUS_STARTED; $this->runningJobs++; $command = $job['command']; $cwd = $job['cwd']; if ($this->io && $this->io->isDebug()) { $safeCommand = preg_replace_callback('{://(?P[^:/\s]+):(?P[^@\s/]+)@}i', function ($m) { if (preg_match('{^[a-f0-9]{12,}$}', $m['user'])) { return '://***:***@'; } return '://'.$m['user'].':***@'; }, $command); $safeCommand = preg_replace("{--password (.*[^\\\\]\') }", '--password \'***\' ', $safeCommand); $this->io->writeError('Executing async command ('.($cwd ?: 'CWD').'): '.$safeCommand); } // TODO in 2.2, these two checks can be dropped as Symfony 4+ supports them out of the box // make sure that null translate to the proper directory in case the dir is a symlink // and we call a git command, because msysgit does not handle symlinks properly if (null === $cwd && Platform::isWindows() && false !== strpos($command, 'git') && getcwd()) { $cwd = realpath(getcwd()); } if (null !== $cwd && !is_dir($cwd)) { throw new \RuntimeException('The given CWD for the process does not exist: '.$cwd); } // TODO in v3, commands should be passed in as arrays of cmd + args if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, $cwd, null, null, static::getTimeout()); } else { $process = new Process($command, $cwd, null, null, static::getTimeout()); } $job['process'] = $process; $process->start(); } public function wait($index = null) { while (true) { if (!$this->countActiveJobs($index)) { return; } usleep(1000); } } /** * @internal */ public function enableAsync() { $this->allowAsync = true; } /** * @internal * * @return int number of active (queued or started) jobs */ public function countActiveJobs($index = null) { // tick foreach ($this->jobs as $job) { if ($job['status'] === self::STATUS_STARTED) { if (!$job['process']->isRunning()) { call_user_func($job['resolve'], $job['process']); } } if ($this->runningJobs < $this->maxJobs) { if ($job['status'] === self::STATUS_QUEUED) { $this->startJob($job['id']); } } } if (null !== $index) { return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; } $active = 0; foreach ($this->jobs as $job) { if ($job['status'] < self::STATUS_COMPLETED) { $active++; } else { unset($this->jobs[$job['id']]); } } return $active; } /** * @private */ public function markJobDone() { $this->runningJobs--; } /** * @return string[] */ public function splitLines($output) { $output = trim($output); return ((string) $output === '') ? array() : preg_split('{\r?\n}', $output); } /** * Get any error output from the last command * * @return string */ public function getErrorOutput() { return $this->errorOutput; } public function outputHandler($type, $buffer) { if ($this->captureOutput) { return; } if (null === $this->io) { echo $buffer; return; } if (Process::ERR === $type) { $this->io->writeErrorRaw($buffer, false); } else { $this->io->writeRaw($buffer, false); } } public static function getTimeout() { return static::$timeout; } public static function setTimeout($timeout) { static::$timeout = $timeout; } /** * Escapes a string to be used as a shell argument. * * @param string $argument The argument that will be escaped * * @return string The escaped argument */ public static function escape($argument) { return self::escapeArgument($argument); } /** * Copy of ProcessUtils::escapeArgument() that is deprecated in Symfony 3.3 and removed in Symfony 4. * * @param string $argument * * @return string */ private static function escapeArgument($argument) { //Fix for PHP bug #43784 escapeshellarg removes % from given string //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows //@see https://bugs.php.net/bug.php?id=43784 //@see https://bugs.php.net/bug.php?id=49446 if ('\\' === DIRECTORY_SEPARATOR) { if ((string) $argument === '') { return escapeshellarg($argument); } $escapedArgument = ''; $quote = false; foreach (preg_split('/(")/', $argument, -1, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE) as $part) { if ('"' === $part) { $escapedArgument .= '\\"'; } elseif (self::isSurroundedBy($part, '%')) { // Avoid environment variable expansion $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%'; } else { // escape trailing backslash if ('\\' === substr($part, -1)) { $part .= '\\'; } $quote = true; $escapedArgument .= $part; } } if ($quote) { $escapedArgument = '"'.$escapedArgument.'"'; } return $escapedArgument; } return "'".str_replace("'", "'\\''", $argument)."'"; } private static function isSurroundedBy($arg, $char) { return 2 < strlen($arg) && $char === $arg[0] && $char === $arg[strlen($arg) - 1]; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; use Composer\Config; use Composer\Downloader\MaxFileSizeExceededException; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; use Composer\Util\StreamContextFactory; use Composer\Util\AuthHelper; use Composer\Util\Url; use Composer\Util\HttpDownloader; use React\Promise\Promise; /** * @internal * @author Jordi Boggiano * @author Nicolas Grekas */ class CurlDownloader { private $multiHandle; private $shareHandle; private $jobs = array(); /** @var IOInterface */ private $io; /** @var Config */ private $config; /** @var AuthHelper */ private $authHelper; private $selectTimeout = 5.0; private $maxRedirects = 20; /** @var ProxyManager */ private $proxyManager; private $supportsSecureProxy; protected $multiErrors = array( CURLM_BAD_HANDLE => array('CURLM_BAD_HANDLE', 'The passed-in handle is not a valid CURLM handle.'), CURLM_BAD_EASY_HANDLE => array('CURLM_BAD_EASY_HANDLE', "An easy handle was not good/valid. It could mean that it isn't an easy handle at all, or possibly that the handle already is in used by this or another multi handle."), CURLM_OUT_OF_MEMORY => array('CURLM_OUT_OF_MEMORY', 'You are doomed.'), CURLM_INTERNAL_ERROR => array('CURLM_INTERNAL_ERROR', 'This can only be returned if libcurl bugs. Please report it to us!'), ); private static $options = array( 'http' => array( 'method' => CURLOPT_CUSTOMREQUEST, 'content' => CURLOPT_POSTFIELDS, 'header' => CURLOPT_HTTPHEADER, 'timeout' => CURLOPT_TIMEOUT, ), 'ssl' => array( 'cafile' => CURLOPT_CAINFO, 'capath' => CURLOPT_CAPATH, 'verify_peer' => CURLOPT_SSL_VERIFYPEER, 'verify_peer_name' => CURLOPT_SSL_VERIFYHOST, 'local_cert' => CURLOPT_SSLCERT, 'local_pk' => CURLOPT_SSLKEY, 'passphrase' => CURLOPT_SSLKEYPASSWD, ), ); private static $timeInfo = array( 'total_time' => true, 'namelookup_time' => true, 'connect_time' => true, 'pretransfer_time' => true, 'starttransfer_time' => true, 'redirect_time' => true, ); public function __construct(IOInterface $io, Config $config, array $options = array(), $disableTls = false) { $this->io = $io; $this->config = $config; $this->multiHandle = $mh = curl_multi_init(); if (function_exists('curl_multi_setopt')) { curl_multi_setopt($mh, CURLMOPT_PIPELINING, PHP_VERSION_ID >= 70400 ? /* CURLPIPE_MULTIPLEX */ 2 : /*CURLPIPE_HTTP1 | CURLPIPE_MULTIPLEX*/ 3); if (defined('CURLMOPT_MAX_HOST_CONNECTIONS') && !defined('HHVM_VERSION')) { curl_multi_setopt($mh, CURLMOPT_MAX_HOST_CONNECTIONS, 8); } } if (function_exists('curl_share_init')) { $this->shareHandle = $sh = curl_share_init(); curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE); curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_DNS); curl_share_setopt($sh, CURLSHOPT_SHARE, CURL_LOCK_DATA_SSL_SESSION); } $this->authHelper = new AuthHelper($io, $config); $this->proxyManager = ProxyManager::getInstance(); $version = curl_version(); $features = $version['features']; $this->supportsSecureProxy = defined('CURL_VERSION_HTTPS_PROXY') && ($features & CURL_VERSION_HTTPS_PROXY); } /** * @return int internal job id */ public function download($resolve, $reject, $origin, $url, $options, $copyTo = null) { $attributes = array(); if (isset($options['retry-auth-failure'])) { $attributes['retryAuthFailure'] = $options['retry-auth-failure']; unset($options['retry-auth-failure']); } return $this->initDownload($resolve, $reject, $origin, $url, $options, $copyTo, $attributes); } /** * @return int internal job id */ private function initDownload($resolve, $reject, $origin, $url, $options, $copyTo = null, array $attributes = array()) { $attributes = array_merge(array( 'retryAuthFailure' => true, 'redirects' => 0, 'storeAuth' => false, ), $attributes); $originalOptions = $options; // check URL can be accessed (i.e. is not insecure), but allow insecure Packagist calls to $hashed providers as file integrity is verified with sha256 if (!preg_match('{^http://(repo\.)?packagist\.org/p/}', $url) || (false === strpos($url, '$') && false === strpos($url, '%24'))) { $this->config->prohibitUrlByConfig($url, $this->io); } $curlHandle = curl_init(); $headerHandle = fopen('php://temp/maxmemory:32768', 'w+b'); if ($copyTo) { $errorMessage = ''; set_error_handler(function ($code, $msg) use (&$errorMessage) { if ($errorMessage) { $errorMessage .= "\n"; } $errorMessage .= preg_replace('{^fopen\(.*?\): }', '', $msg); }); $bodyHandle = fopen($copyTo.'~', 'w+b'); restore_error_handler(); if (!$bodyHandle) { throw new TransportException('The "'.$url.'" file could not be written to '.$copyTo.': '.$errorMessage); } } else { $bodyHandle = @fopen('php://temp/maxmemory:524288', 'w+b'); } curl_setopt($curlHandle, CURLOPT_URL, $url); curl_setopt($curlHandle, CURLOPT_FOLLOWLOCATION, false); curl_setopt($curlHandle, CURLOPT_CONNECTTIMEOUT, 10); curl_setopt($curlHandle, CURLOPT_TIMEOUT, 300); curl_setopt($curlHandle, CURLOPT_WRITEHEADER, $headerHandle); curl_setopt($curlHandle, CURLOPT_FILE, $bodyHandle); curl_setopt($curlHandle, CURLOPT_ENCODING, "gzip"); curl_setopt($curlHandle, CURLOPT_PROTOCOLS, CURLPROTO_HTTP | CURLPROTO_HTTPS); if (function_exists('curl_share_init')) { curl_setopt($curlHandle, CURLOPT_SHARE, $this->shareHandle); } if (!isset($options['http']['header'])) { $options['http']['header'] = array(); } $options['http']['header'] = array_diff($options['http']['header'], array('Connection: close')); $options['http']['header'][] = 'Connection: keep-alive'; $version = curl_version(); $features = $version['features']; if (0 === strpos($url, 'https://') && \defined('CURL_VERSION_HTTP2') && \defined('CURL_HTTP_VERSION_2_0') && (CURL_VERSION_HTTP2 & $features)) { curl_setopt($curlHandle, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2_0); } $options['http']['header'] = $this->authHelper->addAuthenticationHeader($options['http']['header'], $origin, $url); $options = StreamContextFactory::initOptions($url, $options, true); foreach (self::$options as $type => $curlOptions) { foreach ($curlOptions as $name => $curlOption) { if (isset($options[$type][$name])) { if ($type === 'ssl' && $name === 'verify_peer_name') { curl_setopt($curlHandle, $curlOption, $options[$type][$name] === true ? 2 : $options[$type][$name]); } else { curl_setopt($curlHandle, $curlOption, $options[$type][$name]); } } } } // Always set CURLOPT_PROXY to enable/disable proxy handling // Any proxy authorization is included in the proxy url $proxy = $this->proxyManager->getProxyForRequest($url); curl_setopt($curlHandle, CURLOPT_PROXY, $proxy->getUrl()); // Curl needs certificate locations for secure proxies. // CURLOPT_PROXY_SSL_VERIFY_PEER/HOST are enabled by default if ($proxy->isSecure()) { if (!$this->supportsSecureProxy) { throw new TransportException('Connecting to a secure proxy using curl is not supported on PHP versions below 7.3.0.'); } if (!empty($options['ssl']['cafile'])) { curl_setopt($curlHandle, CURLOPT_PROXY_CAINFO, $options['ssl']['cafile']); } if (!empty($options['ssl']['capath'])) { curl_setopt($curlHandle, CURLOPT_PROXY_CAPATH, $options['ssl']['capath']); } } $progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); $this->jobs[(int) $curlHandle] = array( 'url' => $url, 'origin' => $origin, 'attributes' => $attributes, 'options' => $originalOptions, 'progress' => $progress, 'curlHandle' => $curlHandle, 'filename' => $copyTo, 'headerHandle' => $headerHandle, 'bodyHandle' => $bodyHandle, 'resolve' => $resolve, 'reject' => $reject, ); $usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); $ifModified = false !== stripos(implode(',', $options['http']['header']), 'if-modified-since:') ? ' if modified' : ''; if ($attributes['redirects'] === 0) { $this->io->writeError('Downloading ' . Url::sanitize($url) . $usingProxy . $ifModified, true, IOInterface::DEBUG); } $this->checkCurlResult(curl_multi_add_handle($this->multiHandle, $curlHandle)); // TODO progress return (int) $curlHandle; } public function abortRequest($id) { if (isset($this->jobs[$id], $this->jobs[$id]['handle'])) { $job = $this->jobs[$id]; curl_multi_remove_handle($this->multiHandle, $job['handle']); curl_close($job['handle']); if (is_resource($job['headerHandle'])) { fclose($job['headerHandle']); } if (is_resource($job['bodyHandle'])) { fclose($job['bodyHandle']); } if ($job['filename']) { @unlink($job['filename'].'~'); } unset($this->jobs[$id]); } } public function tick() { if (!$this->jobs) { return; } $active = true; $this->checkCurlResult(curl_multi_exec($this->multiHandle, $active)); if (-1 === curl_multi_select($this->multiHandle, $this->selectTimeout)) { // sleep in case select returns -1 as it can happen on old php versions or some platforms where curl does not manage to do the select usleep(150); } while ($progress = curl_multi_info_read($this->multiHandle)) { $curlHandle = $progress['handle']; $result = $progress['result']; $i = (int) $curlHandle; if (!isset($this->jobs[$i])) { continue; } $progress = curl_getinfo($curlHandle); $job = $this->jobs[$i]; unset($this->jobs[$i]); $error = curl_error($curlHandle); $errno = curl_errno($curlHandle); curl_multi_remove_handle($this->multiHandle, $curlHandle); curl_close($curlHandle); $headers = null; $statusCode = null; $response = null; try { // TODO progress if (CURLE_OK !== $errno || $error || $result !== CURLE_OK) { $errno = $errno ?: $result; if (!$error && function_exists('curl_strerror')) { $error = curl_strerror($errno); } throw new TransportException('curl error '.$errno.' while downloading '.Url::sanitize($progress['url']).': '.$error); } $statusCode = $progress['http_code']; rewind($job['headerHandle']); $headers = explode("\r\n", rtrim(stream_get_contents($job['headerHandle']))); fclose($job['headerHandle']); if ($statusCode === 0) { throw new \LogicException('Received unexpected http status code 0 without error for '.Url::sanitize($progress['url']).': headers '.var_export($headers, true).' curl info '.var_export($progress, true)); } // prepare response object if ($job['filename']) { $contents = $job['filename'].'~'; if ($statusCode >= 300) { rewind($job['bodyHandle']); $contents = stream_get_contents($job['bodyHandle']); } $response = new CurlResponse(array('url' => $progress['url']), $statusCode, $headers, $contents, $progress); $this->io->writeError('['.$statusCode.'] '.Url::sanitize($progress['url']), true, IOInterface::DEBUG); } else { rewind($job['bodyHandle']); $contents = stream_get_contents($job['bodyHandle']); $response = new CurlResponse(array('url' => $progress['url']), $statusCode, $headers, $contents, $progress); $this->io->writeError('['.$statusCode.'] '.Url::sanitize($progress['url']), true, IOInterface::DEBUG); } fclose($job['bodyHandle']); if ($response->getStatusCode() >= 400 && $response->getHeader('content-type') === 'application/json') { HttpDownloader::outputWarnings($this->io, $job['origin'], json_decode($response->getBody(), true)); } $result = $this->isAuthenticatedRetryNeeded($job, $response); if ($result['retry']) { $this->restartJob($job, $job['url'], array('storeAuth' => $result['storeAuth'])); continue; } // handle 3xx redirects, 304 Not Modified is excluded if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $job['attributes']['redirects'] < $this->maxRedirects) { $location = $this->handleRedirect($job, $response); if ($location) { $this->restartJob($job, $location, array('redirects' => $job['attributes']['redirects'] + 1)); continue; } } // fail 4xx and 5xx responses and capture the response if ($statusCode >= 400 && $statusCode <= 599) { throw $this->failResponse($job, $response, $response->getStatusMessage()); } if ($job['attributes']['storeAuth']) { $this->authHelper->storeAuth($job['origin'], $job['attributes']['storeAuth']); } // resolve promise if ($job['filename']) { rename($job['filename'].'~', $job['filename']); call_user_func($job['resolve'], $response); } else { call_user_func($job['resolve'], $response); } } catch (\Exception $e) { if ($e instanceof TransportException && $headers) { $e->setHeaders($headers); $e->setStatusCode($statusCode); } if ($e instanceof TransportException && $response) { $e->setResponse($response->getBody()); } if ($e instanceof TransportException && $progress) { $e->setResponseInfo($progress); } $this->rejectJob($job, $e); } } foreach ($this->jobs as $i => $curlHandle) { if (!isset($this->jobs[$i])) { continue; } $curlHandle = $this->jobs[$i]['curlHandle']; $progress = array_diff_key(curl_getinfo($curlHandle), self::$timeInfo); if ($this->jobs[$i]['progress'] !== $progress) { $this->jobs[$i]['progress'] = $progress; if (isset($this->jobs[$i]['options']['max_file_size'])) { // Compare max_file_size with the content-length header this value will be -1 until the header is parsed if ($this->jobs[$i]['options']['max_file_size'] < $progress['download_content_length']) { $this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Content-length header indicates ' . $progress['download_content_length'] . ' bytes. Allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); } // Compare max_file_size with the download size in bytes if ($this->jobs[$i]['options']['max_file_size'] < $progress['size_download']) { $this->rejectJob($this->jobs[$i], new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . $progress['size_download'] . ' of allowed ' . $this->jobs[$i]['options']['max_file_size'] . ' bytes')); } } // TODO progress } } } private function handleRedirect(array $job, Response $response) { if ($locationHeader = $response->getHeader('location')) { if (parse_url($locationHeader, PHP_URL_SCHEME)) { // Absolute URL; e.g. https://example.com/composer $targetUrl = $locationHeader; } elseif (parse_url($locationHeader, PHP_URL_HOST)) { // Scheme relative; e.g. //example.com/foo $targetUrl = parse_url($job['url'], PHP_URL_SCHEME).':'.$locationHeader; } elseif ('/' === $locationHeader[0]) { // Absolute path; e.g. /foo $urlHost = parse_url($job['url'], PHP_URL_HOST); // Replace path using hostname as an anchor. $targetUrl = preg_replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $job['url']); } else { // Relative path; e.g. foo // This actually differs from PHP which seems to add duplicate slashes. $targetUrl = preg_replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $job['url']); } } if (!empty($targetUrl)) { $this->io->writeError(sprintf('Following redirect (%u) %s', $job['attributes']['redirects'] + 1, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); return $targetUrl; } throw new TransportException('The "'.$job['url'].'" file could not be downloaded, got redirect without Location ('.$response->getStatusMessage().')'); } private function isAuthenticatedRetryNeeded(array $job, Response $response) { if (in_array($response->getStatusCode(), array(401, 403)) && $job['attributes']['retryAuthFailure']) { $result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], $response->getStatusCode(), $response->getStatusMessage(), $response->getHeaders()); if ($result['retry']) { return $result; } } $locationHeader = $response->getHeader('location'); $needsAuthRetry = false; // check for bitbucket login page asking to authenticate if ( $job['origin'] === 'bitbucket.org' && !$this->authHelper->isPublicBitBucketDownload($job['url']) && substr($job['url'], -4) === '.zip' && (!$locationHeader || substr($locationHeader, -4) !== '.zip') && preg_match('{^text/html\b}i', $response->getHeader('content-type')) ) { $needsAuthRetry = 'Bitbucket requires authentication and it was not provided'; } // check for gitlab 404 when downloading archives if ( $response->getStatusCode() === 404 && $this->config && in_array($job['origin'], $this->config->get('gitlab-domains'), true) && false !== strpos($job['url'], 'archive.zip') ) { $needsAuthRetry = 'GitLab requires authentication and it was not provided'; } if ($needsAuthRetry) { if ($job['attributes']['retryAuthFailure']) { $result = $this->authHelper->promptAuthIfNeeded($job['url'], $job['origin'], 401); if ($result['retry']) { return $result; } } throw $this->failResponse($job, $response, $needsAuthRetry); } return array('retry' => false, 'storeAuth' => false); } private function restartJob(array $job, $url, array $attributes = array()) { if ($job['filename']) { @unlink($job['filename'].'~'); } $attributes = array_merge($job['attributes'], $attributes); $origin = Url::getOrigin($this->config, $url); $this->initDownload($job['resolve'], $job['reject'], $origin, $url, $job['options'], $job['filename'], $attributes); } private function failResponse(array $job, Response $response, $errorMessage) { if ($job['filename']) { @unlink($job['filename'].'~'); } $details = ''; if ($response->getHeader('content-type') === 'application/json') { $details = ':'.PHP_EOL.substr($response->getBody(), 0, 200).(strlen($response->getBody()) > 200 ? '...' : ''); } return new TransportException('The "'.$job['url'].'" file could not be downloaded ('.$errorMessage.')' . $details, $response->getStatusCode()); } private function rejectJob(array $job, \Exception $e) { if (is_resource($job['headerHandle'])) { fclose($job['headerHandle']); } if (is_resource($job['bodyHandle'])) { fclose($job['bodyHandle']); } if ($job['filename']) { @unlink($job['filename'].'~'); } call_user_func($job['reject'], $e); } private function checkCurlResult($code) { if ($code != CURLM_OK && $code != CURLM_CALL_MULTI_PERFORM) { throw new \RuntimeException( isset($this->multiErrors[$code]) ? "cURL error: {$code} ({$this->multiErrors[$code][0]}): cURL message: {$this->multiErrors[$code][1]}" : 'Unexpected cURL error: ' . $code ); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; /** * Proxy discovery and helper class * * @internal * @author John Stevenson */ class ProxyHelper { /** * Returns proxy environment values * * @throws \RuntimeException on malformed url * @return array httpProxy, httpsProxy, noProxy values */ public static function getProxyData() { $httpProxy = null; $httpsProxy = null; // Handle http_proxy/HTTP_PROXY on CLI only for security reasons if (PHP_SAPI === 'cli' || PHP_SAPI === 'phpdbg') { if ($env = self::getProxyEnv(array('http_proxy', 'HTTP_PROXY'), $name)) { $httpProxy = self::checkProxy($env, $name); } } // Prefer CGI_HTTP_PROXY if available if ($env = self::getProxyEnv(array('CGI_HTTP_PROXY'), $name)) { $httpProxy = self::checkProxy($env, $name); } // Handle https_proxy/HTTPS_PROXY if ($env = self::getProxyEnv(array('https_proxy', 'HTTPS_PROXY'), $name)) { $httpsProxy = self::checkProxy($env, $name); } else { $httpsProxy = $httpProxy; } // Handle no_proxy $noProxy = self::getProxyEnv(array('no_proxy', 'NO_PROXY'), $name); return array($httpProxy, $httpsProxy, $noProxy); } /** * Returns http context options for the proxy url * * @param string $proxyUrl * @return array */ public static function getContextOptions($proxyUrl) { $proxy = parse_url($proxyUrl); // Remove any authorization $proxyUrl = self::formatParsedUrl($proxy, false); $proxyUrl = str_replace(array('http://', 'https://'), array('tcp://', 'ssl://'), $proxyUrl); $options['http']['proxy'] = $proxyUrl; // Handle any authorization if (isset($proxy['user'])) { $auth = rawurldecode($proxy['user']); if (isset($proxy['pass'])) { $auth .= ':' . rawurldecode($proxy['pass']); } $auth = base64_encode($auth); // Set header as a string $options['http']['header'] = "Proxy-Authorization: Basic {$auth}"; } return $options; } /** * Sets/unsets request_fulluri value in http context options array * * @param string $requestUrl * @param array $options Set by method */ public static function setRequestFullUri($requestUrl, array &$options) { if ('http' === parse_url($requestUrl, PHP_URL_SCHEME)) { $options['http']['request_fulluri'] = true; } else { unset($options['http']['request_fulluri']); } } /** * Searches $_SERVER for case-sensitive values * * @param array $names Names to search for * @param mixed $name Name of any found value * @return string|null The found value */ private static function getProxyEnv(array $names, &$name) { foreach ($names as $name) { if (!empty($_SERVER[$name])) { return $_SERVER[$name]; } } } /** * Checks and formats a proxy url from the environment * * @param string $proxyUrl * @param string $envName * @throws \RuntimeException on malformed url * @return string The formatted proxy url */ private static function checkProxy($proxyUrl, $envName) { $error = sprintf('malformed %s url', $envName); $proxy = parse_url($proxyUrl); // We need parse_url to have identified a host if (!isset($proxy['host'])) { throw new \RuntimeException($error); } $proxyUrl = self::formatParsedUrl($proxy, true); // We need a port because streams and curl use different defaults if (!parse_url($proxyUrl, PHP_URL_PORT)) { throw new \RuntimeException($error); } return $proxyUrl; } /** * Formats a url from its component parts * * @param array $proxy Values from parse_url * @param bool $includeAuth Whether to include authorization values * @return string The formatted value */ private static function formatParsedUrl(array $proxy, $includeAuth) { $proxyUrl = isset($proxy['scheme']) ? strtolower($proxy['scheme']) . '://' : ''; if ($includeAuth && isset($proxy['user'])) { $proxyUrl .= $proxy['user']; if (isset($proxy['pass'])) { $proxyUrl .= ':' . $proxy['pass']; } $proxyUrl .= '@'; } $proxyUrl .= $proxy['host']; if (isset($proxy['port'])) { $proxyUrl .= ':' . $proxy['port']; } elseif (strpos($proxyUrl, 'http://') === 0) { $proxyUrl .= ':80'; } elseif (strpos($proxyUrl, 'https://') === 0) { $proxyUrl .= ':443'; } return $proxyUrl; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; class CurlResponse extends Response { private $curlInfo; public function __construct(array $request, $code, array $headers, $body, array $curlInfo) { parent::__construct($request, $code, $headers, $body); $this->curlInfo = $curlInfo; } /** * @return array */ public function getCurlInfo() { return $this->curlInfo; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; use Composer\Util\Url; /** * @internal * @author John Stevenson */ class RequestProxy { private $contextOptions; private $isSecure; private $formattedUrl; private $url; /** * @param string $url * @param array $contextOptions * @param string $formattedUrl */ public function __construct($url, array $contextOptions, $formattedUrl) { $this->url = $url; $this->contextOptions = $contextOptions; $this->formattedUrl = $formattedUrl; $this->isSecure = 0 === strpos($url, 'https://'); } /** * Returns an array of context options * * @return array */ public function getContextOptions() { return $this->contextOptions; } /** * Returns the safe proxy url from the last request * * @param string|null $format Output format specifier * @return string Safe proxy, no proxy or empty */ public function getFormattedUrl($format = '') { $result = ''; if ($this->formattedUrl) { $format = $format ?: '%s'; $result = sprintf($format, $this->formattedUrl); } return $result; } /** * Returns the proxy url * * @return string Proxy url or empty */ public function getUrl() { return $this->url; } /** * Returns true if this is a secure-proxy * * @return bool False if not secure or there is no proxy */ public function isSecure() { return $this->isSecure; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; use Composer\Downloader\TransportException; use Composer\Util\NoProxyPattern; use Composer\Util\Url; /** * @internal * @author John Stevenson */ class ProxyManager { private $error; private $fullProxy; private $safeProxy; private $streams; private $hasProxy; private $info; private $lastProxy; /** @var NoProxyPattern */ private $noProxyHandler; /** @var ProxyManager */ private static $instance; private function __construct() { $this->fullProxy = $this->safeProxy = array( 'http' => null, 'https' => null, ); $this->streams['http'] = $this->streams['https'] = array( 'options' => null, ); $this->hasProxy = false; $this->initProxyData(); } /** * @return ProxyManager */ public static function getInstance() { if (!self::$instance) { self::$instance = new self(); } return self::$instance; } /** * Clears the persistent instance */ public static function reset() { self::$instance = null; } /** * Returns a RequestProxy instance for the request url * * @param string $requestUrl * @return RequestProxy */ public function getProxyForRequest($requestUrl) { if ($this->error) { throw new TransportException('Unable to use a proxy: '.$this->error); } $scheme = parse_url($requestUrl, PHP_URL_SCHEME) ?: 'http'; $proxyUrl = ''; $options = array(); $formattedProxyUrl = ''; if ($this->hasProxy && in_array($scheme, array('http', 'https'), true) && $this->fullProxy[$scheme]) { if ($this->noProxy($requestUrl)) { $formattedProxyUrl = 'excluded by no_proxy'; } else { $proxyUrl = $this->fullProxy[$scheme]; $options = $this->streams[$scheme]['options']; ProxyHelper::setRequestFullUri($requestUrl, $options); $formattedProxyUrl = $this->safeProxy[$scheme]; } } return new RequestProxy($proxyUrl, $options, $formattedProxyUrl); } /** * Returns true if a proxy is being used * * @return bool If false any error will be in $message */ public function isProxying() { return $this->hasProxy; } /** * Returns proxy configuration info which can be shown to the user * * @return string|null Safe proxy URL or an error message if setting up proxy failed or null if no proxy was configured */ public function getFormattedProxy() { return $this->hasProxy ? $this->info : $this->error; } /** * Initializes proxy values from the environment */ private function initProxyData() { try { list($httpProxy, $httpsProxy, $noProxy) = ProxyHelper::getProxyData(); } catch (\RuntimeException $e) { $this->error = $e->getMessage(); return; } $info = array(); if ($httpProxy) { $info[] = $this->setData($httpProxy, 'http'); } if ($httpsProxy) { $info[] = $this->setData($httpsProxy, 'https'); } if ($this->hasProxy) { $this->info = implode(', ', $info); if ($noProxy) { $this->noProxyHandler = array(new NoProxyPattern($noProxy), 'test'); } } } /** * Sets initial data * * @param string $url Proxy url * @param string $scheme Environment variable scheme */ private function setData($url, $scheme) { $safeProxy = Url::sanitize($url); $this->fullProxy[$scheme] = $url; $this->safeProxy[$scheme] = $safeProxy; $this->streams[$scheme]['options'] = ProxyHelper::getContextOptions($url); $this->hasProxy = true; return sprintf('%s=%s', $scheme, $safeProxy); } /** * Returns true if a url matches no_proxy value * * @param string $requestUrl * @return bool */ private function noProxy($requestUrl) { if ($this->noProxyHandler) { if (call_user_func($this->noProxyHandler, $requestUrl)) { $this->lastProxy = 'excluded by no_proxy'; return true; } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util\Http; use Composer\Json\JsonFile; class Response { private $request; private $code; private $headers; private $body; public function __construct(array $request, $code, array $headers, $body) { if (!isset($request['url'])) { throw new \LogicException('url key missing from request array'); } $this->request = $request; $this->code = (int) $code; $this->headers = $headers; $this->body = $body; } public function getStatusCode() { return $this->code; } /** * @return string|null */ public function getStatusMessage() { $value = null; foreach ($this->headers as $header) { if (preg_match('{^HTTP/\S+ \d+}i', $header)) { // In case of redirects, headers contain the headers of all responses // so we can not return directly and need to keep iterating $value = $header; } } return $value; } public function getHeaders() { return $this->headers; } public function getHeader($name) { return self::findHeaderValue($this->headers, $name); } public function getBody() { return $this->body; } public function decodeJson() { return JsonFile::parseJson($this->body, $this->request['url']); } public function collect() { $this->request = $this->code = $this->headers = $this->body = null; } /** * @param array $headers array of returned headers like from getLastHeaders() * @param string $name header name (case insensitive) * @return string|null */ public static function findHeaderValue(array $headers, $name) { $value = null; foreach ($headers as $header) { if (preg_match('{^'.preg_quote($name).':\s*(.+?)\s*$}i', $header, $match)) { $value = $match[1]; } } return $value; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use stdClass; /** * Tests URLs against NO_PROXY patterns */ class NoProxyPattern { /** * @var string[] */ protected $hostNames = array(); /** * @var object[] */ protected $rules = array(); /** * @var bool */ protected $noproxy; /** * @param string $pattern NO_PROXY pattern */ public function __construct($pattern) { $this->hostNames = preg_split('{[\s,]+}', $pattern, null, PREG_SPLIT_NO_EMPTY); $this->noproxy = empty($this->hostNames) || '*' === $this->hostNames[0]; } /** * Returns true if a URL matches the NO_PROXY pattern * * @param string $url * * @return bool */ public function test($url) { if ($this->noproxy) { return true; } if (!$urlData = $this->getUrlData($url)) { return false; } foreach ($this->hostNames as $index => $hostName) { if ($this->match($index, $hostName, $urlData)) { return true; } } return false; } /** * Returns false is the url cannot be parsed, otherwise a data object * * @param string $url * * @return bool|stdclass */ protected function getUrlData($url) { if (!$host = parse_url($url, PHP_URL_HOST)) { return false; } $port = parse_url($url, PHP_URL_PORT); if (empty($port)) { switch (parse_url($url, PHP_URL_SCHEME)) { case 'http': $port = 80; break; case 'https': $port = 443; break; } } $hostName = $host . ($port ? ':' . $port : ''); list($host, $port, $err) = $this->splitHostPort($hostName); if ($err || !$this->ipCheckData($host, $ipdata)) { return false; } return $this->makeData($host, $port, $ipdata); } /** * Returns true if the url is matched by a rule * * @param int $index * @param string $hostName * @param string $url * * @return bool */ protected function match($index, $hostName, $url) { if (!$rule = $this->getRule($index, $hostName)) { // Data must have been misformatted return false; } if ($rule->ipdata) { // Match ipdata first if (!$url->ipdata) { return false; } if ($rule->ipdata->netmask) { return $this->matchRange($rule->ipdata, $url->ipdata); } $match = $rule->ipdata->ip === $url->ipdata->ip; } else { // Match host and port $haystack = substr($url->name, -strlen($rule->name)); $match = stripos($haystack, $rule->name) === 0; } if ($match && $rule->port) { $match = $rule->port === $url->port; } return $match; } /** * Returns true if the target ip is in the network range * * @param stdClass $network * @param stdClass $target * * @return bool */ protected function matchRange(stdClass $network, stdClass $target) { $net = unpack('C*', $network->ip); $mask = unpack('C*', $network->netmask); $ip = unpack('C*', $target->ip); for ($i = 1; $i < 17; ++$i) { if (($net[$i] & $mask[$i]) !== ($ip[$i] & $mask[$i])) { return false; } } return true; } /** * Finds or creates rule data for a hostname * * @param int $index * @param string $hostName * * @return null|stdClass Null if the hostname is invalid */ private function getRule($index, $hostName) { if (array_key_exists($index, $this->rules)) { return $this->rules[$index]; } $this->rules[$index] = null; list($host, $port, $err) = $this->splitHostPort($hostName); if ($err || !$this->ipCheckData($host, $ipdata, true)) { return null; } $this->rules[$index] = $this->makeData($host, $port, $ipdata); return $this->rules[$index]; } /** * Creates an object containing IP data if the host is an IP address * * @param string $host * @param null|stdclass $ipdata Set by method if IP address found * @param bool $allowPrefix Whether a CIDR prefix-length is expected * * @return bool False if the host contains invalid data */ private function ipCheckData($host, &$ipdata, $allowPrefix = false) { $ipdata = null; $netmask = null; $prefix = null; $modified = false; // Check for a CIDR prefix-length if (strpos($host, '/') !== false) { list($host, $prefix) = explode('/', $host); if (!$allowPrefix || !$this->validateInt($prefix, 0, 128)) { return false; } $prefix = (int) $prefix; $modified = true; } // See if this is an ip address if (!filter_var($host, FILTER_VALIDATE_IP)) { return !$modified; } list($ip, $size) = $this->ipGetAddr($host); if ($prefix !== null) { // Check for a valid prefix if ($prefix > $size * 8) { return false; } list($ip, $netmask) = $this->ipGetNetwork($ip, $size, $prefix); } $ipdata = $this->makeIpData($ip, $size, $netmask); return true; } /** * Returns an array of the IP in_addr and its byte size * * IPv4 addresses are always mapped to IPv6, which simplifies handling * and comparison. * * @param string $host * * @return mixed[] in_addr, size */ private function ipGetAddr($host) { $ip = inet_pton($host); $size = strlen($ip); $mapped = $this->ipMapTo6($ip, $size); return array($mapped, $size); } /** * Returns the binary network mask mapped to IPv6 * * @param string $prefix CIDR prefix-length * @param int $size Byte size of in_addr * * @return string */ private function ipGetMask($prefix, $size) { $mask = ''; if ($ones = floor($prefix / 8)) { $mask = str_repeat(chr(255), $ones); } if ($remainder = $prefix % 8) { $mask .= chr(0xff ^ (0xff >> $remainder)); } $mask = str_pad($mask, $size, chr(0)); return $this->ipMapTo6($mask, $size); } /** * Calculates and returns the network and mask * * @param string $rangeIp IP in_addr * @param int $size Byte size of in_addr * @param string $prefix CIDR prefix-length * * @return string[] network in_addr, binary mask */ private function ipGetNetwork($rangeIp, $size, $prefix) { $netmask = $this->ipGetMask($prefix, $size); // Get the network from the address and mask $mask = unpack('C*', $netmask); $ip = unpack('C*', $rangeIp); $net = ''; for ($i = 1; $i < 17; ++$i) { $net .= chr($ip[$i] & $mask[$i]); } return array($net, $netmask); } /** * Maps an IPv4 address to IPv6 * * @param string $binary in_addr * @param int $size Byte size of in_addr * * @return string Mapped or existing in_addr */ private function ipMapTo6($binary, $size) { if ($size === 4) { $prefix = str_repeat(chr(0), 10) . str_repeat(chr(255), 2); $binary = $prefix . $binary; } return $binary; } /** * Creates a rule data object * * @param string $host * @param int $port * @param null|stdclass $ipdata * * @return stdclass */ private function makeData($host, $port, $ipdata) { return (object) array( 'host' => $host, 'name' => '.' . ltrim($host, '.'), 'port' => $port, 'ipdata' => $ipdata, ); } /** * Creates an ip data object * * @param string $ip in_addr * @param int $size Byte size of in_addr * @param null|string $netmask Network mask * * @return stdclass */ private function makeIpData($ip, $size, $netmask) { return (object) array( 'ip' => $ip, 'size' => $size, 'netmask' => $netmask, ); } /** * Splits the hostname into host and port components * * @param string $hostName * * @return mixed[] host, port, if there was error */ private function splitHostPort($hostName) { // host, port, err $error = array('', '', true); $port = 0; $ip6 = ''; // Check for square-bracket notation if ($hostName[0] === '[') { $index = strpos($hostName, ']'); // The smallest ip6 address is :: if (false === $index || $index < 3) { return $error; } $ip6 = substr($hostName, 1, $index - 1); $hostName = substr($hostName, $index + 1); if (strpbrk($hostName, '[]') !== false || substr_count($hostName, ':') > 1) { return $error; } } if (substr_count($hostName, ':') === 1) { $index = strpos($hostName, ':'); $port = substr($hostName, $index + 1); $hostName = substr($hostName, 0, $index); if (!$this->validateInt($port, 1, 65535)) { return $error; } $port = (int) $port; } $host = $ip6 . $hostName; return array($host, $port, false); } /** * Wrapper around filter_var FILTER_VALIDATE_INT * * @param string $int * @param int $min * @param int $max */ private function validateInt($int, $min, $max) { $options = array( 'options' => array( 'min_range' => $min, 'max_range' => $max, ), ); return false !== filter_var($int, FILTER_VALIDATE_INT, $options); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Finder\Finder; /** * @author Jordi Boggiano * @author Johannes M. Schmitt */ class Filesystem { /** @var ProcessExecutor */ private $processExecutor; public function __construct(ProcessExecutor $executor = null) { $this->processExecutor = $executor; } public function remove($file) { if (is_dir($file)) { return $this->removeDirectory($file); } if (file_exists($file)) { return $this->unlink($file); } return false; } /** * Checks if a directory is empty * * @param string $dir * @return bool */ public function isDirEmpty($dir) { $finder = Finder::create() ->ignoreVCS(false) ->ignoreDotFiles(false) ->depth(0) ->in($dir); return \count($finder) === 0; } public function emptyDirectory($dir, $ensureDirectoryExists = true) { if (is_link($dir) && file_exists($dir)) { $this->unlink($dir); } if ($ensureDirectoryExists) { $this->ensureDirectoryExists($dir); } if (is_dir($dir)) { $finder = Finder::create() ->ignoreVCS(false) ->ignoreDotFiles(false) ->depth(0) ->in($dir); foreach ($finder as $path) { $this->remove((string) $path); } } } /** * Recursively remove a directory * * Uses the process component if proc_open is enabled on the PHP * installation. * * @param string $directory * @throws \RuntimeException * @return bool */ public function removeDirectory($directory) { if ($this->isSymlinkedDirectory($directory)) { return $this->unlinkSymlinkedDirectory($directory); } if ($this->isJunction($directory)) { return $this->removeJunction($directory); } if (is_link($directory)) { return unlink($directory); } if (!is_dir($directory) || !file_exists($directory)) { return true; } if (preg_match('{^(?:[a-z]:)?[/\\\\]+$}i', $directory)) { throw new \RuntimeException('Aborting an attempted deletion of '.$directory.', this was probably not intended, if it is a real use case please report it.'); } if (!\function_exists('proc_open')) { return $this->removeDirectoryPhp($directory); } if (Platform::isWindows()) { $cmd = sprintf('rmdir /S /Q %s', ProcessExecutor::escape(realpath($directory))); } else { $cmd = sprintf('rm -rf %s', ProcessExecutor::escape($directory)); } $result = $this->getProcess()->execute($cmd, $output) === 0; // clear stat cache because external processes aren't tracked by the php stat cache clearstatcache(); if ($result && !is_dir($directory)) { return true; } return $this->removeDirectoryPhp($directory); } /** * Recursively delete directory using PHP iterators. * * Uses a CHILD_FIRST RecursiveIteratorIterator to sort files * before directories, creating a single non-recursive loop * to delete files/directories in the correct order. * * @param string $directory * @return bool */ public function removeDirectoryPhp($directory) { try { $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); } catch (\UnexpectedValueException $e) { // re-try once after clearing the stat cache if it failed as it // sometimes fails without apparent reason, see https://github.com/composer/composer/issues/4009 clearstatcache(); usleep(100000); if (!is_dir($directory)) { return true; } $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); } $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); foreach ($ri as $file) { if ($file->isDir()) { $this->rmdir($file->getPathname()); } else { $this->unlink($file->getPathname()); } } return $this->rmdir($directory); } public function ensureDirectoryExists($directory) { if (!is_dir($directory)) { if (file_exists($directory)) { throw new \RuntimeException( $directory.' exists and is not a directory.' ); } if (!@mkdir($directory, 0777, true)) { throw new \RuntimeException( $directory.' does not exist and could not be created.' ); } } } /** * Attempts to unlink a file and in case of failure retries after 350ms on windows * * @param string $path * @throws \RuntimeException * @return bool */ public function unlink($path) { $unlinked = @$this->unlinkImplementation($path); if (!$unlinked) { // retry after a bit on windows since it tends to be touchy with mass removals if (Platform::isWindows()) { usleep(350000); $unlinked = @$this->unlinkImplementation($path); } if (!$unlinked) { $error = error_get_last(); $message = 'Could not delete '.$path.': ' . @$error['message']; if (Platform::isWindows()) { $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; } throw new \RuntimeException($message); } } return true; } /** * Attempts to rmdir a file and in case of failure retries after 350ms on windows * * @param string $path * @throws \RuntimeException * @return bool */ public function rmdir($path) { $deleted = @rmdir($path); if (!$deleted) { // retry after a bit on windows since it tends to be touchy with mass removals if (Platform::isWindows()) { usleep(350000); $deleted = @rmdir($path); } if (!$deleted) { $error = error_get_last(); $message = 'Could not delete '.$path.': ' . @$error['message']; if (Platform::isWindows()) { $message .= "\nThis can be due to an antivirus or the Windows Search Indexer locking the file while they are analyzed"; } throw new \RuntimeException($message); } } return true; } /** * Copy then delete is a non-atomic version of {@link rename}. * * Some systems can't rename and also don't have proc_open, * which requires this solution. * * @param string $source * @param string $target */ public function copyThenRemove($source, $target) { $this->copy($source, $target); if (!is_dir($source)) { $this->unlink($source); return; } $this->removeDirectoryPhp($source); } /** * Copies a file or directory from $source to $target. * * @param string $source * @param string $target * @return bool */ public function copy($source, $target) { if (!is_dir($source)) { return copy($source, $target); } $it = new RecursiveDirectoryIterator($source, RecursiveDirectoryIterator::SKIP_DOTS); $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::SELF_FIRST); $this->ensureDirectoryExists($target); $result = true; /** @var RecursiveDirectoryIterator $ri */ foreach ($ri as $file) { $targetPath = $target . DIRECTORY_SEPARATOR . $ri->getSubPathname(); if ($file->isDir()) { $this->ensureDirectoryExists($targetPath); } else { $result = $result && copy($file->getPathname(), $targetPath); } } return $result; } public function rename($source, $target) { if (true === @rename($source, $target)) { return; } if (!\function_exists('proc_open')) { $this->copyThenRemove($source, $target); return; } if (Platform::isWindows()) { // Try to copy & delete - this is a workaround for random "Access denied" errors. $command = sprintf('xcopy %s %s /E /I /Q /Y', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); $result = $this->getProcess()->execute($command, $output); // clear stat cache because external processes aren't tracked by the php stat cache clearstatcache(); if (0 === $result) { $this->remove($source); return; } } else { // We do not use PHP's "rename" function here since it does not support // the case where $source, and $target are located on different partitions. $command = sprintf('mv %s %s', ProcessExecutor::escape($source), ProcessExecutor::escape($target)); $result = $this->getProcess()->execute($command, $output); // clear stat cache because external processes aren't tracked by the php stat cache clearstatcache(); if (0 === $result) { return; } } $this->copyThenRemove($source, $target); } /** * Returns the shortest path from $from to $to * * @param string $from * @param string $to * @param bool $directories if true, the source/target are considered to be directories * @throws \InvalidArgumentException * @return string */ public function findShortestPath($from, $to, $directories = false) { if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); } $from = lcfirst($this->normalizePath($from)); $to = lcfirst($this->normalizePath($to)); if ($directories) { $from = rtrim($from, '/') . '/dummy_file'; } if (\dirname($from) === \dirname($to)) { return './'.basename($to); } $commonPath = $to; while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath)) { $commonPath = strtr(\dirname($commonPath), '\\', '/'); } if (0 !== strpos($from, $commonPath) || '/' === $commonPath) { return $to; } $commonPath = rtrim($commonPath, '/') . '/'; $sourcePathDepth = substr_count(substr($from, \strlen($commonPath)), '/'); $commonPathCode = str_repeat('../', $sourcePathDepth); return ($commonPathCode . substr($to, \strlen($commonPath))) ?: './'; } /** * Returns PHP code that, when executed in $from, will return the path to $to * * @param string $from * @param string $to * @param bool $directories if true, the source/target are considered to be directories * @param bool $staticCode * @throws \InvalidArgumentException * @return string */ public function findShortestPathCode($from, $to, $directories = false, $staticCode = false) { if (!$this->isAbsolutePath($from) || !$this->isAbsolutePath($to)) { throw new \InvalidArgumentException(sprintf('$from (%s) and $to (%s) must be absolute paths.', $from, $to)); } $from = lcfirst($this->normalizePath($from)); $to = lcfirst($this->normalizePath($to)); if ($from === $to) { return $directories ? '__DIR__' : '__FILE__'; } $commonPath = $to; while (strpos($from.'/', $commonPath.'/') !== 0 && '/' !== $commonPath && !preg_match('{^[a-z]:/?$}i', $commonPath) && '.' !== $commonPath) { $commonPath = strtr(\dirname($commonPath), '\\', '/'); } if (0 !== strpos($from, $commonPath) || '/' === $commonPath || '.' === $commonPath) { return var_export($to, true); } $commonPath = rtrim($commonPath, '/') . '/'; if (strpos($to, $from.'/') === 0) { return '__DIR__ . '.var_export(substr($to, \strlen($from)), true); } $sourcePathDepth = substr_count(substr($from, \strlen($commonPath)), '/') + $directories; if ($staticCode) { $commonPathCode = "__DIR__ . '".str_repeat('/..', $sourcePathDepth)."'"; } else { $commonPathCode = str_repeat('dirname(', $sourcePathDepth).'__DIR__'.str_repeat(')', $sourcePathDepth); } $relTarget = substr($to, \strlen($commonPath)); return $commonPathCode . (\strlen($relTarget) ? '.' . var_export('/' . $relTarget, true) : ''); } /** * Checks if the given path is absolute * * @param string $path * @return bool */ public function isAbsolutePath($path) { return strpos($path, '/') === 0 || substr($path, 1, 1) === ':' || strpos($path, '\\\\') === 0; } /** * Returns size of a file or directory specified by path. If a directory is * given, it's size will be computed recursively. * * @param string $path Path to the file or directory * @throws \RuntimeException * @return int */ public function size($path) { if (!file_exists($path)) { throw new \RuntimeException("$path does not exist."); } if (is_dir($path)) { return $this->directorySize($path); } return filesize($path); } /** * Normalize a path. This replaces backslashes with slashes, removes ending * slash and collapses redundant separators and up-level references. * * @param string $path Path to the file or directory * @return string */ public function normalizePath($path) { $parts = array(); $path = strtr($path, '\\', '/'); $prefix = ''; $absolute = false; // extract a prefix being a protocol://, protocol:, protocol://drive: or simply drive: if (preg_match('{^( [0-9a-z]{2,}+: (?: // (?: [a-z]: )? )? | [a-z]: )}ix', $path, $match)) { $prefix = $match[1]; $path = substr($path, \strlen($prefix)); } if (strpos($path, '/') === 0) { $absolute = true; $path = substr($path, 1); } $up = false; foreach (explode('/', $path) as $chunk) { if ('..' === $chunk && ($absolute || $up)) { array_pop($parts); $up = !(empty($parts) || '..' === end($parts)); } elseif ('.' !== $chunk && '' !== $chunk) { $parts[] = $chunk; $up = '..' !== $chunk; } } return $prefix.($absolute ? '/' : '').implode('/', $parts); } /** * Remove trailing slashes if present to avoid issues with symlinks * * And other possible unforeseen disasters, see https://github.com/composer/composer/pull/9422 * * @param string $path * @return bool */ public static function trimTrailingSlash($path) { if (!preg_match('{^[/\\\\]+$}', $path)) { $path = rtrim($path, '/\\'); } return $path; } /** * Return if the given path is local * * @param string $path * @return bool */ public static function isLocalPath($path) { return (bool) preg_match('{^(file://(?!//)|/(?!/)|/?[a-z]:[\\\\/]|\.\.[\\\\/]|[a-z0-9_.-]+[\\\\/])}i', $path); } public static function getPlatformPath($path) { if (Platform::isWindows()) { $path = preg_replace('{^(?:file:///([a-z]):?/)}i', 'file://$1:/', $path); } return preg_replace('{^file://}i', '', $path); } protected function directorySize($directory) { $it = new RecursiveDirectoryIterator($directory, RecursiveDirectoryIterator::SKIP_DOTS); $ri = new RecursiveIteratorIterator($it, RecursiveIteratorIterator::CHILD_FIRST); $size = 0; foreach ($ri as $file) { if ($file->isFile()) { $size += $file->getSize(); } } return $size; } /** * @return ProcessExecutor */ protected function getProcess() { if (!$this->processExecutor) { $this->processExecutor = new ProcessExecutor(); } return $this->processExecutor; } /** * delete symbolic link implementation (commonly known as "unlink()") * * symbolic links on windows which link to directories need rmdir instead of unlink * * @param string $path * * @return bool */ private function unlinkImplementation($path) { if (Platform::isWindows() && is_dir($path) && is_link($path)) { return rmdir($path); } return unlink($path); } /** * Creates a relative symlink from $link to $target * * @param string $target The path of the binary file to be symlinked * @param string $link The path where the symlink should be created * @return bool */ public function relativeSymlink($target, $link) { if (!function_exists('symlink')) { return false; } $cwd = getcwd(); $relativePath = $this->findShortestPath($link, $target); chdir(\dirname($link)); $result = @symlink($relativePath, $link); chdir($cwd); return $result; } /** * return true if that directory is a symlink. * * @param string $directory * * @return bool */ public function isSymlinkedDirectory($directory) { if (!is_dir($directory)) { return false; } $resolved = $this->resolveSymlinkedDirectorySymlink($directory); return is_link($resolved); } /** * @param string $directory * * @return bool */ private function unlinkSymlinkedDirectory($directory) { $resolved = $this->resolveSymlinkedDirectorySymlink($directory); return $this->unlink($resolved); } /** * resolve pathname to symbolic link of a directory * * @param string $pathname directory path to resolve * * @return string resolved path to symbolic link or original pathname (unresolved) */ private function resolveSymlinkedDirectorySymlink($pathname) { if (!is_dir($pathname)) { return $pathname; } $resolved = rtrim($pathname, '/'); if (!\strlen($resolved)) { return $pathname; } return $resolved; } /** * Creates an NTFS junction. * * @param string $target * @param string $junction */ public function junction($target, $junction) { if (!Platform::isWindows()) { throw new \LogicException(sprintf('Function %s is not available on non-Windows platform', __CLASS__)); } if (!is_dir($target)) { throw new IOException(sprintf('Cannot junction to "%s" as it is not a directory.', $target), 0, null, $target); } $cmd = sprintf( 'mklink /J %s %s', ProcessExecutor::escape(str_replace('/', DIRECTORY_SEPARATOR, $junction)), ProcessExecutor::escape(realpath($target)) ); if ($this->getProcess()->execute($cmd, $output) !== 0) { throw new IOException(sprintf('Failed to create junction to "%s" at "%s".', $target, $junction), 0, null, $target); } clearstatcache(true, $junction); } /** * Returns whether the target directory is a Windows NTFS Junction. * * We test if the path is a directory and not an ordinary link, then check * that the mode value returned from lstat (which gives the status of the * link itself) is not a directory, by replicating the POSIX S_ISDIR test. * * This logic works because PHP does not set the mode value for a junction, * since there is no universal file type flag for it. Unfortunately an * uninitialized variable in PHP prior to 7.2.16 and 7.3.3 may cause a * random value to be returned. See https://bugs.php.net/bug.php?id=77552 * * If this random value passes the S_ISDIR test, then a junction will not be * detected and a recursive delete operation could lead to loss of data in * the target directory. Note that Windows rmdir can handle this situation * and will only delete the junction (from Windows 7 onwards). * * @param string $junction Path to check. * @return bool */ public function isJunction($junction) { if (!Platform::isWindows()) { return false; } // Important to clear all caches first clearstatcache(true, $junction); if (!is_dir($junction) || is_link($junction)) { return false; } $stat = lstat($junction); // S_ISDIR test (S_IFDIR is 0x4000, S_IFMT is 0xF000 bitmask) return $stat ? 0x4000 !== ($stat['mode'] & 0xF000) : false; } /** * Removes a Windows NTFS junction. * * @param string $junction * @return bool */ public function removeJunction($junction) { if (!Platform::isWindows()) { return false; } $junction = rtrim(str_replace('/', DIRECTORY_SEPARATOR, $junction), DIRECTORY_SEPARATOR); if (!$this->isJunction($junction)) { throw new IOException(sprintf('%s is not a junction and thus cannot be removed as one', $junction)); } return $this->rmdir($junction); } public function filePutContentsIfModified($path, $content) { $currentContent = @file_get_contents($path); if (!$currentContent || ($currentContent != $content)) { return file_put_contents($path, $content); } return 0; } /** * Copy file using stream_copy_to_stream to work around https://bugs.php.net/bug.php?id=6463 * * @param string $source * @param string $target */ public function safeCopy($source, $target) { if (!file_exists($target) || !file_exists($source) || !$this->filesAreEqual($source, $target)) { $source = fopen($source, 'r'); $target = fopen($target, 'w+'); stream_copy_to_stream($source, $target); fclose($source); fclose($target); } } /** * compare 2 files * https://stackoverflow.com/questions/3060125/can-i-use-file-get-contents-to-compare-two-files */ private function filesAreEqual($a, $b) { // Check if filesize is different if (filesize($a) !== filesize($b)) { return false; } // Check if content is different $ah = fopen($a, 'rb'); $bh = fopen($b, 'rb'); $result = true; while (!feof($ah)) { if (fread($ah, 8192) != fread($bh, 8192)) { $result = false; break; } } fclose($ah); fclose($bh); return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\IO\IOInterface; use Symfony\Component\Process\Process; /** * @author Matt Whittom */ class Perforce { protected $path; protected $p4Depot; protected $p4Client; protected $p4User; protected $p4Password; protected $p4Port; protected $p4Stream; protected $p4ClientSpec; protected $p4DepotType; protected $p4Branch; protected $process; protected $uniquePerforceClientName; protected $windowsFlag; protected $commandResult; protected $io; protected $filesystem; public function __construct($repoConfig, $port, $path, ProcessExecutor $process, $isWindows, IOInterface $io) { $this->windowsFlag = $isWindows; $this->p4Port = $port; $this->initializePath($path); $this->process = $process; $this->initialize($repoConfig); $this->io = $io; } public static function create($repoConfig, $port, $path, ProcessExecutor $process, IOInterface $io) { return new Perforce($repoConfig, $port, $path, $process, Platform::isWindows(), $io); } public static function checkServerExists($url, ProcessExecutor $processExecutor) { $output = null; return 0 === $processExecutor->execute('p4 -p ' . ProcessExecutor::escape($url) . ' info -s', $output); } public function initialize($repoConfig) { $this->uniquePerforceClientName = $this->generateUniquePerforceClientName(); if (!$repoConfig) { return; } if (isset($repoConfig['unique_perforce_client_name'])) { $this->uniquePerforceClientName = $repoConfig['unique_perforce_client_name']; } if (isset($repoConfig['depot'])) { $this->p4Depot = $repoConfig['depot']; } if (isset($repoConfig['branch'])) { $this->p4Branch = $repoConfig['branch']; } if (isset($repoConfig['p4user'])) { $this->p4User = $repoConfig['p4user']; } else { $this->p4User = $this->getP4variable('P4USER'); } if (isset($repoConfig['p4password'])) { $this->p4Password = $repoConfig['p4password']; } } public function initializeDepotAndBranch($depot, $branch) { if (isset($depot)) { $this->p4Depot = $depot; } if (isset($branch)) { $this->p4Branch = $branch; } } public function generateUniquePerforceClientName() { return gethostname() . "_" . time(); } public function cleanupClientSpec() { $client = $this->getClient(); $task = 'client -d ' . ProcessExecutor::escape($client); $useP4Client = false; $command = $this->generateP4Command($task, $useP4Client); $this->executeCommand($command); $clientSpec = $this->getP4ClientSpec(); $fileSystem = $this->getFilesystem(); $fileSystem->remove($clientSpec); } protected function executeCommand($command) { $this->commandResult = ''; return $this->process->execute($command, $this->commandResult); } public function getClient() { if (!isset($this->p4Client)) { $cleanStreamName = str_replace(array('//', '/', '@'), array('', '_', ''), $this->getStream()); $this->p4Client = 'composer_perforce_' . $this->uniquePerforceClientName . '_' . $cleanStreamName; } return $this->p4Client; } protected function getPath() { return $this->path; } public function initializePath($path) { $this->path = $path; $fs = $this->getFilesystem(); $fs->ensureDirectoryExists($path); } protected function getPort() { return $this->p4Port; } public function setStream($stream) { $this->p4Stream = $stream; $index = strrpos($stream, '/'); //Stream format is //depot/stream, while non-streaming depot is //depot if ($index > 2) { $this->p4DepotType = 'stream'; } } public function isStream() { return (strcmp($this->p4DepotType, 'stream') === 0); } public function getStream() { if (!isset($this->p4Stream)) { if ($this->isStream()) { $this->p4Stream = '//' . $this->p4Depot . '/' . $this->p4Branch; } else { $this->p4Stream = '//' . $this->p4Depot; } } return $this->p4Stream; } public function getStreamWithoutLabel($stream) { $index = strpos($stream, '@'); if ($index === false) { return $stream; } return substr($stream, 0, $index); } public function getP4ClientSpec() { return $this->path . '/' . $this->getClient() . '.p4.spec'; } public function getUser() { return $this->p4User; } public function setUser($user) { $this->p4User = $user; } public function queryP4User() { $this->getUser(); if (strlen($this->p4User) > 0) { return; } $this->p4User = $this->getP4variable('P4USER'); if (strlen($this->p4User) > 0) { return; } $this->p4User = $this->io->ask('Enter P4 User:'); if ($this->windowsFlag) { $command = 'p4 set P4USER=' . $this->p4User; } else { $command = 'export P4USER=' . $this->p4User; } $this->executeCommand($command); } protected function getP4variable($name) { if ($this->windowsFlag) { $command = 'p4 set'; $this->executeCommand($command); $result = trim($this->commandResult); $resArray = explode(PHP_EOL, $result); foreach ($resArray as $line) { $fields = explode('=', $line); if (strcmp($name, $fields[0]) == 0) { $index = strpos($fields[1], ' '); if ($index === false) { $value = $fields[1]; } else { $value = substr($fields[1], 0, $index); } $value = trim($value); return $value; } } return null; } $command = 'echo $' . $name; $this->executeCommand($command); $result = trim($this->commandResult); return $result; } public function queryP4Password() { if (isset($this->p4Password)) { return $this->p4Password; } $password = $this->getP4variable('P4PASSWD'); if (strlen($password) <= 0) { $password = $this->io->askAndHideAnswer('Enter password for Perforce user ' . $this->getUser() . ': '); } $this->p4Password = $password; return $password; } public function generateP4Command($command, $useClient = true) { $p4Command = 'p4 '; $p4Command .= '-u ' . $this->getUser() . ' '; if ($useClient) { $p4Command .= '-c ' . $this->getClient() . ' '; } $p4Command .= '-p ' . $this->getPort() . ' ' . $command; return $p4Command; } public function isLoggedIn() { $command = $this->generateP4Command('login -s', false); $exitCode = $this->executeCommand($command); if ($exitCode) { $errorOutput = $this->process->getErrorOutput(); $index = strpos($errorOutput, $this->getUser()); if ($index === false) { $index = strpos($errorOutput, 'p4'); if ($index === false) { return false; } throw new \Exception('p4 command not found in path: ' . $errorOutput); } throw new \Exception('Invalid user name: ' . $this->getUser()); } return true; } public function connectClient() { $p4CreateClientCommand = $this->generateP4Command( 'client -i < ' . str_replace(" ", "\\ ", $this->getP4ClientSpec()) ); $this->executeCommand($p4CreateClientCommand); } public function syncCodeBase($sourceReference) { $prevDir = getcwd(); chdir($this->path); $p4SyncCommand = $this->generateP4Command('sync -f '); if (null !== $sourceReference) { $p4SyncCommand .= '@' . $sourceReference; } $this->executeCommand($p4SyncCommand); chdir($prevDir); } public function writeClientSpecToFile($spec) { fwrite($spec, 'Client: ' . $this->getClient() . PHP_EOL . PHP_EOL); fwrite($spec, 'Update: ' . date('Y/m/d H:i:s') . PHP_EOL . PHP_EOL); fwrite($spec, 'Access: ' . date('Y/m/d H:i:s') . PHP_EOL); fwrite($spec, 'Owner: ' . $this->getUser() . PHP_EOL . PHP_EOL); fwrite($spec, 'Description:' . PHP_EOL); fwrite($spec, ' Created by ' . $this->getUser() . ' from composer.' . PHP_EOL . PHP_EOL); fwrite($spec, 'Root: ' . $this->getPath() . PHP_EOL . PHP_EOL); fwrite($spec, 'Options: noallwrite noclobber nocompress unlocked modtime rmdir' . PHP_EOL . PHP_EOL); fwrite($spec, 'SubmitOptions: revertunchanged' . PHP_EOL . PHP_EOL); fwrite($spec, 'LineEnd: local' . PHP_EOL . PHP_EOL); if ($this->isStream()) { fwrite($spec, 'Stream:' . PHP_EOL); fwrite($spec, ' ' . $this->getStreamWithoutLabel($this->p4Stream) . PHP_EOL); } else { fwrite( $spec, 'View: ' . $this->getStream() . '/... //' . $this->getClient() . '/... ' . PHP_EOL ); } } public function writeP4ClientSpec() { $clientSpec = $this->getP4ClientSpec(); $spec = fopen($clientSpec, 'w'); try { $this->writeClientSpecToFile($spec); } catch (\Exception $e) { fclose($spec); throw $e; } fclose($spec); } protected function read($pipe, $name) { if (feof($pipe)) { return; } $line = fgets($pipe); while ($line !== false) { $line = fgets($pipe); } } public function windowsLogin($password) { $command = $this->generateP4Command(' login -a'); // TODO in v3 generate command as an array if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { $process = Process::fromShellCommandline($command, null, null, $password); } else { $process = new Process($command, null, null, $password); } return $process->run(); } public function p4Login() { $this->queryP4User(); if (!$this->isLoggedIn()) { $password = $this->queryP4Password(); if ($this->windowsFlag) { $this->windowsLogin($password); } else { $command = 'echo ' . ProcessExecutor::escape($password) . ' | ' . $this->generateP4Command(' login -a', false); $exitCode = $this->executeCommand($command); if ($exitCode) { throw new \Exception("Error logging in:" . $this->process->getErrorOutput()); } } } } public function getComposerInformation($identifier) { $composerFileContent = $this->getFileContent('composer.json', $identifier); if (!$composerFileContent) { return; } return json_decode($composerFileContent, true); } public function getFileContent($file, $identifier) { $path = $this->getFilePath($file, $identifier); $command = $this->generateP4Command(' print ' . ProcessExecutor::escape($path)); $this->executeCommand($command); $result = $this->commandResult; if (!trim($result)) { return null; } return $result; } public function getFilePath($file, $identifier) { $index = strpos($identifier, '@'); if ($index === false) { return $identifier. '/' . $file; } $path = substr($identifier, 0, $index) . '/' . $file . substr($identifier, $index); $command = $this->generateP4Command(' files ' . ProcessExecutor::escape($path), false); $this->executeCommand($command); $result = $this->commandResult; $index2 = strpos($result, 'no such file(s).'); if ($index2 === false) { $index3 = strpos($result, 'change'); if ($index3 !== false) { $phrase = trim(substr($result, $index3)); $fields = explode(' ', $phrase); return substr($identifier, 0, $index) . '/' . $file . '@' . $fields[1]; } } return null; } public function getBranches() { $possibleBranches = array(); if (!$this->isStream()) { $possibleBranches[$this->p4Branch] = $this->getStream(); } else { $command = $this->generateP4Command('streams '.ProcessExecutor::escape('//' . $this->p4Depot . '/...')); $this->executeCommand($command); $result = $this->commandResult; $resArray = explode(PHP_EOL, $result); foreach ($resArray as $line) { $resBits = explode(' ', $line); if (count($resBits) > 4) { $branch = preg_replace('/[^A-Za-z0-9 ]/', '', $resBits[4]); $possibleBranches[$branch] = $resBits[1]; } } } $command = $this->generateP4Command('changes '. ProcessExecutor::escape($this->getStream() . '/...'), false); $this->executeCommand($command); $result = $this->commandResult; $resArray = explode(PHP_EOL, $result); $lastCommit = $resArray[0]; $lastCommitArr = explode(' ', $lastCommit); $lastCommitNum = $lastCommitArr[1]; return array('master' => $possibleBranches[$this->p4Branch] . '@'. $lastCommitNum); } public function getTags() { $command = $this->generateP4Command('labels'); $this->executeCommand($command); $result = $this->commandResult; $resArray = explode(PHP_EOL, $result); $tags = array(); foreach ($resArray as $line) { if (strpos($line, 'Label') !== false) { $fields = explode(' ', $line); $tags[$fields[1]] = $this->getStream() . '@' . $fields[1]; } } return $tags; } public function checkStream() { $command = $this->generateP4Command('depots', false); $this->executeCommand($command); $result = $this->commandResult; $resArray = explode(PHP_EOL, $result); foreach ($resArray as $line) { if (strpos($line, 'Depot') !== false) { $fields = explode(' ', $line); if (strcmp($this->p4Depot, $fields[1]) === 0) { $this->p4DepotType = $fields[3]; return $this->isStream(); } } } return false; } /** * @param string $reference * @return mixed|null */ protected function getChangeList($reference) { $index = strpos($reference, '@'); if ($index === false) { return null; } $label = substr($reference, $index); $command = $this->generateP4Command(' changes -m1 ' . ProcessExecutor::escape($label)); $this->executeCommand($command); $changes = $this->commandResult; if (strpos($changes, 'Change') !== 0) { return null; } $fields = explode(' ', $changes); return $fields[1]; } /** * @param string $fromReference * @param string $toReference * @return mixed|null */ public function getCommitLogs($fromReference, $toReference) { $fromChangeList = $this->getChangeList($fromReference); if ($fromChangeList === null) { return null; } $toChangeList = $this->getChangeList($toReference); if ($toChangeList === null) { return null; } $index = strpos($fromReference, '@'); $main = substr($fromReference, 0, $index) . '/...'; $command = $this->generateP4Command('filelog ' . ProcessExecutor::escape($main . '@' . $fromChangeList. ',' . $toChangeList)); $this->executeCommand($command); return $this->commandResult; } public function getFilesystem() { if (empty($this->filesystem)) { $this->filesystem = new Filesystem($this->process); } return $this->filesystem; } public function setFilesystem(Filesystem $fs) { $this->filesystem = $fs; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; /** * @author Jordi Boggiano */ class Url { /** * @param Config $config * @param string $url * @param string $ref * @return string the updated URL */ public static function updateDistReference(Config $config, $url, $ref) { $host = parse_url($url, PHP_URL_HOST); if ($host === 'api.github.com' || $host === 'github.com' || $host === 'www.github.com') { if (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/(zip|tar)ball/(.+)$}i', $url, $match)) { // update legacy github archives to API calls with the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } elseif (preg_match('{^https?://(?:www\.)?github\.com/([^/]+)/([^/]+)/archive/.+\.(zip|tar)(?:\.gz)?$}i', $url, $match)) { // update current github web archives to API calls with the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } elseif (preg_match('{^https?://api\.github\.com/repos/([^/]+)/([^/]+)/(zip|tar)ball(?:/.+)?$}i', $url, $match)) { // update api archives to the proper reference $url = 'https://api.github.com/repos/' . $match[1] . '/'. $match[2] . '/' . $match[3] . 'ball/' . $ref; } } elseif ($host === 'bitbucket.org' || $host === 'www.bitbucket.org') { if (preg_match('{^https?://(?:www\.)?bitbucket\.org/([^/]+)/([^/]+)/get/(.+)\.(zip|tar\.gz|tar\.bz2)$}i', $url, $match)) { // update Bitbucket archives to the proper reference $url = 'https://bitbucket.org/' . $match[1] . '/'. $match[2] . '/get/' . $ref . '.' . $match[4]; } } elseif ($host === 'gitlab.com' || $host === 'www.gitlab.com') { if (preg_match('{^https?://(?:www\.)?gitlab\.com/api/v[34]/projects/([^/]+)/repository/archive\.(zip|tar\.gz|tar\.bz2|tar)\?sha=.+$}i', $url, $match)) { // update Gitlab archives to the proper reference $url = 'https://gitlab.com/api/v4/projects/' . $match[1] . '/repository/archive.' . $match[2] . '?sha=' . $ref; } } elseif (in_array($host, $config->get('github-domains'), true)) { $url = preg_replace('{(/repos/[^/]+/[^/]+/(zip|tar)ball)(?:/.+)?$}i', '$1/'.$ref, $url); } elseif (in_array($host, $config->get('gitlab-domains'), true)) { $url = preg_replace('{(/api/v[34]/projects/[^/]+/repository/archive\.(?:zip|tar\.gz|tar\.bz2|tar)\?sha=).+$}i', '${1}'.$ref, $url); } return $url; } /** * @param string $url * @return string */ public static function getOrigin(Config $config, $url) { if (0 === strpos($url, 'file://')) { return $url; } $origin = (string) parse_url($url, PHP_URL_HOST); if ($port = parse_url($url, PHP_URL_PORT)) { $origin .= ':'.$port; } if (strpos($origin, '.github.com') === (strlen($origin) - 11)) { return 'github.com'; } if ($origin === 'repo.packagist.org') { return 'packagist.org'; } if ($origin === '') { $origin = $url; } // Gitlab can be installed in a non-root context (i.e. gitlab.com/foo). When downloading archives the originUrl // is the host without the path, so we look for the registered gitlab-domains matching the host here if ( is_array($config->get('gitlab-domains')) && false === strpos($origin, '/') && !in_array($origin, $config->get('gitlab-domains')) ) { foreach ($config->get('gitlab-domains') as $gitlabDomain) { if (0 === strpos($gitlabDomain, $origin)) { return $gitlabDomain; } } } return $origin; } public static function sanitize($url) { // GitHub repository rename result in redirect locations containing the access_token as GET parameter // e.g. https://api.github.com/repositories/9999999999?access_token=github_token $url = preg_replace('{([&?]access_token=)[^&]+}', '$1***', $url); $url = preg_replace_callback('{(?P://|^)(?P[^:/\s@]+):(?P[^@\s/]+)@}i', function ($m) { // if the username looks like a long (12char+) hex string, or a modern github token (e.g. gp1_xxx) we obfuscate that if (preg_match('{^([a-f0-9]{12,}|g[a-z]\d_[a-zA-Z0-9_]+)$}', $m['user'])) { return $m['prefix'].'***:***@'; } return $m['prefix'].$m['user'].':***@'; }, $url); return $url; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; /** * Platform helper for uniform platform-specific tests. * * @author Niels Keurentjes */ class Platform { /** @var ?bool */ private static $isVirtualBoxGuest = null; /** * Parses tildes and environment variables in paths. * * @param string $path * @return string */ public static function expandPath($path) { if (preg_match('#^~[\\/]#', $path)) { return self::getUserDirectory() . substr($path, 1); } return preg_replace_callback('#^(\$|(?P%))(?P\w++)(?(percent)%)(?P.*)#', function ($matches) { // Treat HOME as an alias for USERPROFILE on Windows for legacy reasons if (Platform::isWindows() && $matches['var'] == 'HOME') { return (getenv('HOME') ?: getenv('USERPROFILE')) . $matches['path']; } return getenv($matches['var']) . $matches['path']; }, $path); } /** * @throws \RuntimeException If the user home could not reliably be determined * @return string The formal user home as detected from environment parameters */ public static function getUserDirectory() { if (false !== ($home = getenv('HOME'))) { return $home; } if (self::isWindows() && false !== ($home = getenv('USERPROFILE'))) { return $home; } if (\function_exists('posix_getuid') && \function_exists('posix_getpwuid')) { $info = posix_getpwuid(posix_getuid()); return $info['dir']; } throw new \RuntimeException('Could not determine user directory'); } /** * @return bool Whether the host machine is running a Windows OS */ public static function isWindows() { return \defined('PHP_WINDOWS_VERSION_BUILD'); } /** * @param string $str * @return int return a guaranteed binary length of the string, regardless of silly mbstring configs */ public static function strlen($str) { static $useMbString = null; if (null === $useMbString) { $useMbString = \function_exists('mb_strlen') && ini_get('mbstring.func_overload'); } if ($useMbString) { return mb_strlen($str, '8bit'); } return \strlen($str); } public static function isTty($fd = null) { if ($fd === null) { $fd = defined('STDOUT') ? STDOUT : fopen('php://stdout', 'w'); } // detect msysgit/mingw and assume this is a tty because detection // does not work correctly, see https://github.com/composer/composer/issues/9690 if (in_array(strtoupper(getenv('MSYSTEM') ?: ''), array('MINGW32', 'MINGW64'), true)) { return true; } // modern cross-platform function, includes the fstat // fallback so if it is present we trust it if (function_exists('stream_isatty')) { return stream_isatty($fd); } // only trusting this if it is positive, otherwise prefer fstat fallback if (function_exists('posix_isatty') && posix_isatty($fd)) { return true; } $stat = @fstat($fd); // Check if formatted mode is S_IFCHR return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; } public static function workaroundFilesystemIssues() { if (self::isVirtualBoxGuest()) { usleep(200000); } } /** * Attempts detection of VirtualBox guest VMs * * This works based on the process' user being "vagrant", the COMPOSER_RUNTIME_ENV env var being set to "virtualbox", or lsmod showing the virtualbox guest additions are loaded * * @return bool */ private static function isVirtualBoxGuest() { if (null === self::$isVirtualBoxGuest) { self::$isVirtualBoxGuest = false; if (self::isWindows()) { return self::$isVirtualBoxGuest; } if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { $processUser = posix_getpwuid(posix_geteuid()); if ($processUser && $processUser['name'] === 'vagrant') { return self::$isVirtualBoxGuest = true; } } if (getenv('COMPOSER_RUNTIME_ENV') === 'virtualbox') { return self::$isVirtualBoxGuest = true; } if (defined('PHP_OS_FAMILY') && PHP_OS_FAMILY === 'Linux') { $process = new ProcessExecutor(); try { if (0 === $process->execute('lsmod | grep vboxguest', $ignoredOutput)) { return self::$isVirtualBoxGuest = true; } } catch (\Exception $e) { // noop } } } return self::$isVirtualBoxGuest; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; /** * @author Andreas Schempp */ class Zip { /** * Gets content of the root composer.json inside a ZIP archive. * * @param string $pathToZip * * @return string|null */ public static function getComposerJson($pathToZip) { if (!extension_loaded('zip')) { throw new \RuntimeException('The Zip Util requires PHP\'s zip extension'); } $zip = new \ZipArchive(); if ($zip->open($pathToZip) !== true) { return null; } if (0 == $zip->numFiles) { $zip->close(); return null; } $foundFileIndex = self::locateFile($zip, 'composer.json'); if (false === $foundFileIndex) { $zip->close(); return null; } $content = null; $configurationFileName = $zip->getNameIndex($foundFileIndex); $stream = $zip->getStream($configurationFileName); if (false !== $stream) { $content = stream_get_contents($stream); } $zip->close(); return $content; } /** * Find a file by name, returning the one that has the shortest path. * * @param \ZipArchive $zip * @param string $filename * @throws \RuntimeException * * @return int */ private static function locateFile(\ZipArchive $zip, $filename) { // return root composer.json if it is there and is a file if (false !== ($index = $zip->locateName($filename)) && $zip->getFromIndex($index) !== false) { return $index; } $topLevelPaths = array(); for ($i = 0; $i < $zip->numFiles; $i++) { $name = $zip->getNameIndex($i); $dirname = dirname($name); // ignore OSX specific resource fork folder if (strpos($name, '__MACOSX') !== false) { continue; } // handle archives with proper TOC if ($dirname === '.') { $topLevelPaths[$name] = true; if (\count($topLevelPaths) > 1) { throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); } continue; } // handle archives which do not have a TOC record for the directory itself if (false === strpos($dirname, '\\') && false === strpos($dirname, '/')) { $topLevelPaths[$dirname.'/'] = true; if (\count($topLevelPaths) > 1) { throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); } } } if ($topLevelPaths && false !== ($index = $zip->locateName(key($topLevelPaths).$filename)) && $zip->getFromIndex($index) !== false) { return $index; } throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; /** * @author Wissem Riahi */ class Tar { /** * @param string $pathToArchive * * @return string|null */ public static function getComposerJson($pathToArchive) { $phar = new \PharData($pathToArchive); if (!$phar->valid()) { return null; } return self::extractComposerJsonFromFolder($phar); } /** * @param \PharData $phar * * @throws \RuntimeException * * @return string */ private static function extractComposerJsonFromFolder(\PharData $phar) { if (isset($phar['composer.json'])) { return $phar['composer.json']->getContent(); } $topLevelPaths = array(); foreach ($phar as $folderFile) { $name = $folderFile->getBasename(); if ($folderFile->isDir()) { $topLevelPaths[$name] = true; if (\count($topLevelPaths) > 1) { throw new \RuntimeException('Archive has more than one top level directories, and no composer.json was found on the top level, so it\'s an invalid archive. Top level paths found were: '.implode(',', array_keys($topLevelPaths))); } } } $composerJsonPath = key($topLevelPaths).'/composer.json'; if ($topLevelPaths && isset($phar[$composerJsonPath])) { return $phar[$composerJsonPath]->getContent(); } throw new \RuntimeException('No composer.json found either at the top level or within the topmost directory'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; /** * @author Jordi Boggiano */ class AuthHelper { protected $io; protected $config; private $displayedOriginAuthentications = array(); public function __construct(IOInterface $io, Config $config) { $this->io = $io; $this->config = $config; } /** * @param string $origin * @param string|bool $storeAuth */ public function storeAuth($origin, $storeAuth) { $store = false; $configSource = $this->config->getAuthConfigSource(); if ($storeAuth === true) { $store = $configSource; } elseif ($storeAuth === 'prompt') { $answer = $this->io->askAndValidate( 'Do you want to store credentials for '.$origin.' in '.$configSource->getName().' ? [Yn] ', function ($value) { $input = strtolower(substr(trim($value), 0, 1)); if (in_array($input, array('y','n'))) { return $input; } throw new \RuntimeException('Please answer (y)es or (n)o'); }, null, 'y' ); if ($answer === 'y') { $store = $configSource; } } if ($store) { $store->addConfigSetting( 'http-basic.'.$origin, $this->io->getAuthentication($origin) ); } } /** * @param string $url * @param string $origin * @param int $statusCode HTTP status code that triggered this call * @param string|null $reason a message/description explaining why this was called * @param string[] $headers * @return array|null containing retry (bool) and storeAuth (string|bool) keys, if retry is true the request should be * retried, if storeAuth is true then on a successful retry the authentication should be persisted to auth.json */ public function promptAuthIfNeeded($url, $origin, $statusCode, $reason = null, $headers = array()) { $storeAuth = false; if (in_array($origin, $this->config->get('github-domains'), true)) { $gitHubUtil = new GitHub($this->io, $this->config, null); $message = "\n"; $rateLimited = $gitHubUtil->isRateLimited($headers); if ($rateLimited) { $rateLimit = $gitHubUtil->getRateLimit($headers); if ($this->io->hasAuthentication($origin)) { $message = 'Review your configured GitHub OAuth token or enter a new one to go over the API rate limit.'; } else { $message = 'Create a GitHub OAuth token to go over the API rate limit.'; } $message = sprintf( 'GitHub API limit (%d calls/hr) is exhausted, could not fetch '.$url.'. '.$message.' You can also wait until %s for the rate limit to reset.', $rateLimit['limit'], $rateLimit['reset'] )."\n"; } else { $message .= 'Could not fetch '.$url.', please '; if ($this->io->hasAuthentication($origin)) { $message .= 'review your configured GitHub OAuth token or enter a new one to access private repos'; } else { $message .= 'create a GitHub OAuth token to access private repos'; } } if (!$gitHubUtil->authorizeOAuth($origin) && (!$this->io->isInteractive() || !$gitHubUtil->authorizeOAuthInteractively($origin, $message)) ) { throw new TransportException('Could not authenticate against '.$origin, 401); } } elseif (in_array($origin, $this->config->get('gitlab-domains'), true)) { $message = "\n".'Could not fetch '.$url.', enter your ' . $origin . ' credentials ' .($statusCode === 401 ? 'to access private repos' : 'to go over the API rate limit'); $gitLabUtil = new GitLab($this->io, $this->config, null); if ($this->io->hasAuthentication($origin) && ($auth = $this->io->getAuthentication($origin)) && in_array($auth['password'], array('gitlab-ci-token', 'private-token', 'oauth2'), true)) { throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); } if (!$gitLabUtil->authorizeOAuth($origin) && (!$this->io->isInteractive() || !$gitLabUtil->authorizeOAuthInteractively(parse_url($url, PHP_URL_SCHEME), $origin, $message)) ) { throw new TransportException('Could not authenticate against '.$origin, 401); } } elseif ($origin === 'bitbucket.org' || $origin === 'api.bitbucket.org') { $askForOAuthToken = true; $origin = 'bitbucket.org'; if ($this->io->hasAuthentication($origin)) { $auth = $this->io->getAuthentication($origin); if ($auth['username'] !== 'x-token-auth') { $bitbucketUtil = new Bitbucket($this->io, $this->config); $accessToken = $bitbucketUtil->requestToken($origin, $auth['username'], $auth['password']); if (!empty($accessToken)) { $this->io->setAuthentication($origin, 'x-token-auth', $accessToken); $askForOAuthToken = false; } } else { throw new TransportException('Could not authenticate against ' . $origin, 401); } } if ($askForOAuthToken) { $message = "\n".'Could not fetch ' . $url . ', please create a bitbucket OAuth token to ' . (($statusCode === 401 || $statusCode === 403) ? 'access private repos' : 'go over the API rate limit'); $bitBucketUtil = new Bitbucket($this->io, $this->config); if (!$bitBucketUtil->authorizeOAuth($origin) && (!$this->io->isInteractive() || !$bitBucketUtil->authorizeOAuthInteractively($origin, $message)) ) { throw new TransportException('Could not authenticate against ' . $origin, 401); } } } else { // 404s are only handled for github if ($statusCode === 404) { return; } // fail if the console is not interactive if (!$this->io->isInteractive()) { if ($statusCode === 401) { $message = "The '" . $url . "' URL required authentication.\nYou must be using the interactive console to authenticate"; } elseif ($statusCode === 403) { $message = "The '" . $url . "' URL could not be accessed: " . $reason; } else { $message = "Unknown error code '" . $statusCode . "', reason: " . $reason; } throw new TransportException($message, $statusCode); } // fail if we already have auth if ($this->io->hasAuthentication($origin)) { throw new TransportException("Invalid credentials for '" . $url . "', aborting.", $statusCode); } $this->io->writeError(' Authentication required ('.$origin.'):'); $username = $this->io->ask(' Username: '); $password = $this->io->askAndHideAnswer(' Password: '); $this->io->setAuthentication($origin, $username, $password); $storeAuth = $this->config->get('store-auths'); } return array('retry' => true, 'storeAuth' => $storeAuth); } /** * @param array $headers * @param string $origin * @param string $url * @return array updated headers array */ public function addAuthenticationHeader(array $headers, $origin, $url) { if ($this->io->hasAuthentication($origin)) { $authenticationDisplayMessage = null; $auth = $this->io->getAuthentication($origin); if ($auth['password'] === 'bearer') { $headers[] = 'Authorization: Bearer '.$auth['username']; } elseif ('github.com' === $origin && 'x-oauth-basic' === $auth['password']) { // only add the access_token if it is actually a github API URL if (preg_match('{^https?://api\.github\.com/}', $url)) { $headers[] = 'Authorization: token '.$auth['username']; $authenticationDisplayMessage = 'Using GitHub token authentication'; } } elseif ( in_array($origin, $this->config->get('gitlab-domains'), true) && in_array($auth['password'], array('oauth2', 'private-token', 'gitlab-ci-token'), true) ) { if ($auth['password'] === 'oauth2') { $headers[] = 'Authorization: Bearer '.$auth['username']; $authenticationDisplayMessage = 'Using GitLab OAuth token authentication'; } elseif ($auth['password'] === 'private-token' || $auth['password'] === 'gitlab-ci-token') { $headers[] = 'PRIVATE-TOKEN: '.$auth['username']; $authenticationDisplayMessage = 'Using GitLab private token authentication'; } } elseif ( 'bitbucket.org' === $origin && $url !== Bitbucket::OAUTH2_ACCESS_TOKEN_URL && 'x-token-auth' === $auth['username'] ) { if (!$this->isPublicBitBucketDownload($url)) { $headers[] = 'Authorization: Bearer ' . $auth['password']; $authenticationDisplayMessage = 'Using Bitbucket OAuth token authentication'; } } else { $authStr = base64_encode($auth['username'] . ':' . $auth['password']); $headers[] = 'Authorization: Basic '.$authStr; $authenticationDisplayMessage = 'Using HTTP basic authentication with username "' . $auth['username'] . '"'; } if ($authenticationDisplayMessage && (!isset($this->displayedOriginAuthentications[$origin]) || $this->displayedOriginAuthentications[$origin] !== $authenticationDisplayMessage)) { $this->io->writeError($authenticationDisplayMessage, true, IOInterface::DEBUG); $this->displayedOriginAuthentications[$origin] = $authenticationDisplayMessage; } } elseif (in_array($origin, array('api.bitbucket.org', 'api.github.com'), true)) { return $this->addAuthenticationHeader($headers, str_replace('api.', '', $origin), $url); } return $headers; } /** * @link https://github.com/composer/composer/issues/5584 * * @param string $urlToBitBucketFile URL to a file at bitbucket.org. * * @return bool Whether the given URL is a public BitBucket download which requires no authentication. */ public function isPublicBitBucketDownload($urlToBitBucketFile) { $domain = parse_url($urlToBitBucketFile, PHP_URL_HOST); if (strpos($domain, 'bitbucket.org') === false) { // Bitbucket downloads are hosted on amazonaws. // We do not need to authenticate there at all return true; } $path = parse_url($urlToBitBucketFile, PHP_URL_PATH); // Path for a public download follows this pattern /{user}/{repo}/downloads/{whatever} // {@link https://blog.bitbucket.org/2009/04/12/new-feature-downloads/} $pathParts = explode('/', $path); return count($pathParts) >= 4 && $pathParts[3] == 'downloads'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; @trigger_error('Composer\Util\MetadataMinifier is deprecated, use Composer\MetadataMinifier\MetadataMinifier from composer/metadata-minifier instead.', E_USER_DEPRECATED); /** * @deprecated Use Composer\MetadataMinifier\MetadataMinifier instead */ class MetadataMinifier extends \Composer\MetadataMinifier\MetadataMinifier { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\IO\IOInterface; use Composer\Config; use Composer\Factory; use Composer\Downloader\TransportException; /** * @author Roshan Gautam */ class GitLab { /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var ProcessExecutor */ protected $process; /** @var HttpDownloader */ protected $httpDownloader; /** * Constructor. * * @param IOInterface $io The IO instance * @param Config $config The composer configuration * @param ProcessExecutor $process Process instance, injectable for mocking * @param HttpDownloader $httpDownloader Remote Filesystem, injectable for mocking */ public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, HttpDownloader $httpDownloader = null) { $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor($io); $this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); } /** * Attempts to authorize a GitLab domain via OAuth. * * @param string $originUrl The host this GitLab instance is located at * * @return bool true on success */ public function authorizeOAuth($originUrl) { // before composer 1.9, origin URLs had no port number in them $bcOriginUrl = preg_replace('{:\d+}', '', $originUrl); if (!in_array($originUrl, $this->config->get('gitlab-domains'), true) && !in_array($bcOriginUrl, $this->config->get('gitlab-domains'), true)) { return false; } // if available use token from git config if (0 === $this->process->execute('git config gitlab.accesstoken', $output)) { $this->io->setAuthentication($originUrl, trim($output), 'oauth2'); return true; } // if available use deploy token from git config if (0 === $this->process->execute('git config gitlab.deploytoken.user', $tokenUser) && 0 === $this->process->execute('git config gitlab.deploytoken.token', $tokenPassword)) { $this->io->setAuthentication($originUrl, trim($tokenUser), trim($tokenPassword)); return true; } // if available use token from composer config $authTokens = $this->config->get('gitlab-token'); if (isset($authTokens[$originUrl])) { $token = $authTokens[$originUrl]; } if (isset($authTokens[$bcOriginUrl])) { $token = $authTokens[$bcOriginUrl]; } if (isset($token)) { $username = is_array($token) && array_key_exists("username", $token) ? $token["username"] : $token; $password = is_array($token) && array_key_exists("token", $token) ? $token["token"] : 'private-token'; $this->io->setAuthentication($originUrl, $username, $password); return true; } return false; } /** * Authorizes a GitLab domain interactively via OAuth. * * @param string $scheme Scheme used in the origin URL * @param string $originUrl The host this GitLab instance is located at * @param string $message The reason this authorization is required * * @throws \RuntimeException * @throws TransportException|\Exception * * @return bool true on success */ public function authorizeOAuthInteractively($scheme, $originUrl, $message = null) { if ($message) { $this->io->writeError($message); } $this->io->writeError(sprintf('A token will be created and stored in "%s", your password will never be stored', $this->config->getAuthConfigSource()->getName())); $this->io->writeError('To revoke access to this token you can visit '.$scheme.'://'.$originUrl.'/profile/applications'); $attemptCounter = 0; while ($attemptCounter++ < 5) { try { $response = $this->createToken($scheme, $originUrl); } catch (TransportException $e) { // 401 is bad credentials, // 403 is max login attempts exceeded if (in_array($e->getCode(), array(403, 401))) { if (401 === $e->getCode()) { $response = json_decode($e->getResponse(), true); if (isset($response['error']) && $response['error'] === 'invalid_grant') { $this->io->writeError('Bad credentials. If you have two factor authentication enabled you will have to manually create a personal access token'); } else { $this->io->writeError('Bad credentials.'); } } else { $this->io->writeError('Maximum number of login attempts exceeded. Please try again later.'); } $this->io->writeError('You can also manually create a personal access token enabling the "read_api" scope at '.$scheme.'://'.$originUrl.'/profile/personal_access_tokens'); $this->io->writeError('Add it using "composer config --global --auth gitlab-token.'.$originUrl.' "'); continue; } throw $e; } $this->io->setAuthentication($originUrl, $response['access_token'], 'oauth2'); // store value in user config in auth file $this->config->getAuthConfigSource()->addConfigSetting('gitlab-oauth.'.$originUrl, $response['access_token']); return true; } throw new \RuntimeException('Invalid GitLab credentials 5 times in a row, aborting.'); } private function createToken($scheme, $originUrl) { $username = $this->io->ask('Username: '); $password = $this->io->askAndHideAnswer('Password: '); $headers = array('Content-Type: application/x-www-form-urlencoded'); $apiUrl = $originUrl; $data = http_build_query(array( 'username' => $username, 'password' => $password, 'grant_type' => 'password', ), null, '&'); $options = array( 'retry-auth-failure' => false, 'http' => array( 'method' => 'POST', 'header' => $headers, 'content' => $data, ), ); $token = $this->httpDownloader->get($scheme.'://'.$apiUrl.'/oauth/token', $options)->decodeJson(); $this->io->writeError('Token successfully created'); return $token; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\CaBundle\CaBundle; /** * @author Chris Smith */ final class TlsHelper { /** * Match hostname against a certificate. * * @param mixed $certificate X.509 certificate * @param string $hostname Hostname in the URL * @param string $cn Set to the common name of the certificate iff match found * * @return bool */ public static function checkCertificateHost($certificate, $hostname, &$cn = null) { $names = self::getCertificateNames($certificate); if (empty($names)) { return false; } $combinedNames = array_merge($names['san'], array($names['cn'])); $hostname = strtolower($hostname); foreach ($combinedNames as $certName) { $matcher = self::certNameMatcher($certName); if ($matcher && $matcher($hostname)) { $cn = $names['cn']; return true; } } return false; } /** * Extract DNS names out of an X.509 certificate. * * @param mixed $certificate X.509 certificate * * @return array|null */ public static function getCertificateNames($certificate) { if (is_array($certificate)) { $info = $certificate; } elseif (CaBundle::isOpensslParseSafe()) { $info = openssl_x509_parse($certificate, false); } if (!isset($info['subject']['commonName'])) { return null; } $commonName = strtolower($info['subject']['commonName']); $subjectAltNames = array(); if (isset($info['extensions']['subjectAltName'])) { $subjectAltNames = preg_split('{\s*,\s*}', $info['extensions']['subjectAltName']); $subjectAltNames = array_filter(array_map(function ($name) { if (0 === strpos($name, 'DNS:')) { return strtolower(ltrim(substr($name, 4))); } return null; }, $subjectAltNames)); $subjectAltNames = array_values($subjectAltNames); } return array( 'cn' => $commonName, 'san' => $subjectAltNames, ); } /** * Get the certificate pin. * * By Kevin McArthur of StormTide Digital Studios Inc. * @KevinSMcArthur / https://github.com/StormTide * * See https://tools.ietf.org/html/draft-ietf-websec-key-pinning-02 * * This method was adapted from Sslurp. * https://github.com/EvanDotPro/Sslurp * * (c) Evan Coury * * For the full copyright and license information, please see below: * * Copyright (c) 2013, Evan Coury * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ public static function getCertificateFingerprint($certificate) { $pubkeydetails = openssl_pkey_get_details(openssl_get_publickey($certificate)); $pubkeypem = $pubkeydetails['key']; //Convert PEM to DER before SHA1'ing $start = '-----BEGIN PUBLIC KEY-----'; $end = '-----END PUBLIC KEY-----'; $pemtrim = substr($pubkeypem, strpos($pubkeypem, $start) + strlen($start), (strlen($pubkeypem) - strpos($pubkeypem, $end)) * (-1)); $der = base64_decode($pemtrim); return sha1($der); } /** * Test if it is safe to use the PHP function openssl_x509_parse(). * * This checks if OpenSSL extensions is vulnerable to remote code execution * via the exploit documented as CVE-2013-6420. * * @return bool */ public static function isOpensslParseSafe() { return CaBundle::isOpensslParseSafe(); } /** * Convert certificate name into matching function. * * @param string $certName CN/SAN * * @return callable|void */ private static function certNameMatcher($certName) { $wildcards = substr_count($certName, '*'); if (0 === $wildcards) { // Literal match. return function ($hostname) use ($certName) { return $hostname === $certName; }; } if (1 === $wildcards) { $components = explode('.', $certName); if (3 > count($components)) { // Must have 3+ components return; } $firstComponent = $components[0]; // Wildcard must be the last character. if ('*' !== $firstComponent[strlen($firstComponent) - 1]) { return; } $wildcardRegex = preg_quote($certName); $wildcardRegex = str_replace('\\*', '[a-z0-9-]+', $wildcardRegex); $wildcardRegex = "{^{$wildcardRegex}$}"; return function ($hostname) use ($wildcardRegex) { return 1 === preg_match($wildcardRegex, $hostname); }; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Composer; use Composer\CaBundle\CaBundle; use Composer\Downloader\TransportException; use Composer\Util\Http\ProxyManager; use Psr\Log\LoggerInterface; /** * Allows the creation of a basic context supporting http proxy * * @author Jordan Alliot * @author Markus Tacker */ final class StreamContextFactory { /** * Creates a context supporting HTTP proxies * * @param string $url URL the context is to be used for * @psalm-param array{http: array{follow_location?: int, max_redirects?: int, header?: string|array}} $defaultOptions * @param array $defaultOptions Options to merge with the default * @param array $defaultParams Parameters to specify on the context * @throws \RuntimeException if https proxy required and OpenSSL uninstalled * @return resource Default context */ public static function getContext($url, array $defaultOptions = array(), array $defaultParams = array()) { $options = array('http' => array( // specify defaults again to try and work better with curlwrappers enabled 'follow_location' => 1, 'max_redirects' => 20, )); $options = array_replace_recursive($options, self::initOptions($url, $defaultOptions)); unset($defaultOptions['http']['header']); $options = array_replace_recursive($options, $defaultOptions); if (isset($options['http']['header'])) { $options['http']['header'] = self::fixHttpHeaderField($options['http']['header']); } return stream_context_create($options, $defaultParams); } /** * @param string $url * @param array $options * @param bool $forCurl When true, will not add proxy values as these are handled separately * @psalm-return array{http:{header: string[], proxy?: string, request_fulluri: bool}, ssl: array} * @return array formatted as a stream context array */ public static function initOptions($url, array $options, $forCurl = false) { // Make sure the headers are in an array form if (!isset($options['http']['header'])) { $options['http']['header'] = array(); } if (is_string($options['http']['header'])) { $options['http']['header'] = explode("\r\n", $options['http']['header']); } // Add stream proxy options if there is a proxy if (!$forCurl) { $proxy = ProxyManager::getInstance()->getProxyForRequest($url); if ($proxyOptions = $proxy->getContextOptions()) { $isHttpsRequest = 0 === strpos($url, 'https://'); if ($proxy->isSecure()) { if (!extension_loaded('openssl')) { throw new TransportException('You must enable the openssl extension to use a secure proxy.'); } if ($isHttpsRequest) { throw new TransportException('You must enable the curl extension to make https requests through a secure proxy.'); } } elseif ($isHttpsRequest && !extension_loaded('openssl')) { throw new TransportException('You must enable the openssl extension to make https requests through a proxy.'); } // Header will be a Proxy-Authorization string or not set if (isset($proxyOptions['http']['header'])) { $options['http']['header'][] = $proxyOptions['http']['header']; unset($proxyOptions['http']['header']); } $options = array_replace_recursive($options, $proxyOptions); } } if (defined('HHVM_VERSION')) { $phpVersion = 'HHVM ' . HHVM_VERSION; } else { $phpVersion = 'PHP ' . PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION . '.' . PHP_RELEASE_VERSION; } if ($forCurl) { $curl = curl_version(); $httpVersion = 'cURL '.$curl['version']; } else { $httpVersion = 'streams'; } if (!isset($options['http']['header']) || false === stripos(implode('', $options['http']['header']), 'user-agent')) { $options['http']['header'][] = sprintf( 'User-Agent: Composer/%s (%s; %s; %s; %s%s)', Composer::getVersion(), function_exists('php_uname') ? php_uname('s') : 'Unknown', function_exists('php_uname') ? php_uname('r') : 'Unknown', $phpVersion, $httpVersion, getenv('CI') ? '; CI' : '' ); } return $options; } /** * @param array $options * * @return array */ public static function getTlsDefaults(array $options, LoggerInterface $logger = null) { $ciphers = implode(':', array( 'ECDHE-RSA-AES128-GCM-SHA256', 'ECDHE-ECDSA-AES128-GCM-SHA256', 'ECDHE-RSA-AES256-GCM-SHA384', 'ECDHE-ECDSA-AES256-GCM-SHA384', 'DHE-RSA-AES128-GCM-SHA256', 'DHE-DSS-AES128-GCM-SHA256', 'kEDH+AESGCM', 'ECDHE-RSA-AES128-SHA256', 'ECDHE-ECDSA-AES128-SHA256', 'ECDHE-RSA-AES128-SHA', 'ECDHE-ECDSA-AES128-SHA', 'ECDHE-RSA-AES256-SHA384', 'ECDHE-ECDSA-AES256-SHA384', 'ECDHE-RSA-AES256-SHA', 'ECDHE-ECDSA-AES256-SHA', 'DHE-RSA-AES128-SHA256', 'DHE-RSA-AES128-SHA', 'DHE-DSS-AES128-SHA256', 'DHE-RSA-AES256-SHA256', 'DHE-DSS-AES256-SHA', 'DHE-RSA-AES256-SHA', 'AES128-GCM-SHA256', 'AES256-GCM-SHA384', 'AES128-SHA256', 'AES256-SHA256', 'AES128-SHA', 'AES256-SHA', 'AES', 'CAMELLIA', 'DES-CBC3-SHA', '!aNULL', '!eNULL', '!EXPORT', '!DES', '!RC4', '!MD5', '!PSK', '!aECDH', '!EDH-DSS-DES-CBC3-SHA', '!EDH-RSA-DES-CBC3-SHA', '!KRB5-DES-CBC3-SHA', )); /** * CN_match and SNI_server_name are only known once a URL is passed. * They will be set in the getOptionsForUrl() method which receives a URL. * * cafile or capath can be overridden by passing in those options to constructor. */ $defaults = array( 'ssl' => array( 'ciphers' => $ciphers, 'verify_peer' => true, 'verify_depth' => 7, 'SNI_enabled' => true, 'capture_peer_cert' => true, ), ); if (isset($options['ssl'])) { $defaults['ssl'] = array_replace_recursive($defaults['ssl'], $options['ssl']); } /** * Attempt to find a local cafile or throw an exception if none pre-set * The user may go download one if this occurs. */ if (!isset($defaults['ssl']['cafile']) && !isset($defaults['ssl']['capath'])) { $result = CaBundle::getSystemCaRootBundlePath($logger); if (is_dir($result)) { $defaults['ssl']['capath'] = $result; } else { $defaults['ssl']['cafile'] = $result; } } if (isset($defaults['ssl']['cafile']) && (!is_readable($defaults['ssl']['cafile']) || !CaBundle::validateCaFile($defaults['ssl']['cafile'], $logger))) { throw new TransportException('The configured cafile was not valid or could not be read.'); } if (isset($defaults['ssl']['capath']) && (!is_dir($defaults['ssl']['capath']) || !is_readable($defaults['ssl']['capath']))) { throw new TransportException('The configured capath was not valid or could not be read.'); } /** * Disable TLS compression to prevent CRIME attacks where supported. */ if (PHP_VERSION_ID >= 50413) { $defaults['ssl']['disable_compression'] = true; } return $defaults; } /** * A bug in PHP prevents the headers from correctly being sent when a content-type header is present and * NOT at the end of the array * * This method fixes the array by moving the content-type header to the end * * @link https://bugs.php.net/bug.php?id=61548 * @param string|array $header * @return array */ private static function fixHttpHeaderField($header) { if (!is_array($header)) { $header = explode("\r\n", $header); } uasort($header, function ($el) { return stripos($el, 'content-type') === 0 ? 1 : -1; }); return $header; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\IO\IOInterface; /** * @author Till Klampaeckel * @author Jordi Boggiano */ class Svn { const MAX_QTY_AUTH_TRIES = 5; /** * @var array */ protected $credentials; /** * @var bool */ protected $hasAuth; /** * @var \Composer\IO\IOInterface */ protected $io; /** * @var string */ protected $url; /** * @var bool */ protected $cacheCredentials = true; /** * @var ProcessExecutor */ protected $process; /** * @var int */ protected $qtyAuthTries = 0; /** * @var \Composer\Config */ protected $config; /** * @var string|null */ private static $version; /** * @param string $url * @param \Composer\IO\IOInterface $io * @param Config $config * @param ProcessExecutor $process */ public function __construct($url, IOInterface $io, Config $config, ProcessExecutor $process = null) { $this->url = $url; $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor($io); } public static function cleanEnv() { // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 putenv("DYLD_LIBRARY_PATH"); unset($_SERVER['DYLD_LIBRARY_PATH']); } /** * Execute an SVN remote command and try to fix up the process with credentials * if necessary. * * @param string $command SVN command to run * @param string $url SVN url * @param string $cwd Working directory * @param string $path Target for a checkout * @param bool $verbose Output all output to the user * * @throws \RuntimeException * @return string */ public function execute($command, $url, $cwd = null, $path = null, $verbose = false) { // Ensure we are allowed to use this URL by config $this->config->prohibitUrlByConfig($url, $this->io); return $this->executeWithAuthRetry($command, $cwd, $url, $path, $verbose); } /** * Execute an SVN local command and try to fix up the process with credentials * if necessary. * * @param string $command SVN command to run * @param string $path Path argument passed thru to the command * @param string $cwd Working directory * @param bool $verbose Output all output to the user * * @throws \RuntimeException * @return string */ public function executeLocal($command, $path, $cwd = null, $verbose = false) { // A local command has no remote url return $this->executeWithAuthRetry($command, $cwd, '', $path, $verbose); } private function executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose) { // Regenerate the command at each try, to use the newly user-provided credentials $command = $this->getCommand($svnCommand, $url, $path); $output = null; $io = $this->io; $handler = function ($type, $buffer) use (&$output, $io, $verbose) { if ($type !== 'out') { return; } if (strpos($buffer, 'Redirecting to URL ') === 0) { return; } $output .= $buffer; if ($verbose) { $io->writeError($buffer, false); } }; $status = $this->process->execute($command, $handler, $cwd); if (0 === $status) { return $output; } $errorOutput = $this->process->getErrorOutput(); $fullOutput = implode("\n", array($output, $errorOutput)); // the error is not auth-related if (false === stripos($fullOutput, 'Could not authenticate to server:') && false === stripos($fullOutput, 'authorization failed') && false === stripos($fullOutput, 'svn: E170001:') && false === stripos($fullOutput, 'svn: E215004:')) { throw new \RuntimeException($fullOutput); } if (!$this->hasAuth()) { $this->doAuthDance(); } // try to authenticate if maximum quantity of tries not reached if ($this->qtyAuthTries++ < self::MAX_QTY_AUTH_TRIES) { // restart the process return $this->executeWithAuthRetry($svnCommand, $cwd, $url, $path, $verbose); } throw new \RuntimeException( 'wrong credentials provided ('.$fullOutput.')' ); } /** * @param bool $cacheCredentials */ public function setCacheCredentials($cacheCredentials) { $this->cacheCredentials = $cacheCredentials; } /** * Repositories requests credentials, let's put them in. * * @throws \RuntimeException * @return \Composer\Util\Svn */ protected function doAuthDance() { // cannot ask for credentials in non interactive mode if (!$this->io->isInteractive()) { throw new \RuntimeException( 'can not ask for authentication in non interactive mode' ); } $this->io->writeError("The Subversion server ({$this->url}) requested credentials:"); $this->hasAuth = true; $this->credentials['username'] = $this->io->ask("Username: "); $this->credentials['password'] = $this->io->askAndHideAnswer("Password: "); $this->cacheCredentials = $this->io->askConfirmation("Should Subversion cache these credentials? (yes/no) "); return $this; } /** * A method to create the svn commands run. * * @param string $cmd Usually 'svn ls' or something like that. * @param string $url Repo URL. * @param string $path Target for a checkout * * @return string */ protected function getCommand($cmd, $url, $path = null) { $cmd = sprintf( '%s %s%s -- %s', $cmd, '--non-interactive ', $this->getCredentialString(), ProcessExecutor::escape($url) ); if ($path) { $cmd .= ' ' . ProcessExecutor::escape($path); } return $cmd; } /** * Return the credential string for the svn command. * * Adds --no-auth-cache when credentials are present. * * @return string */ protected function getCredentialString() { if (!$this->hasAuth()) { return ''; } return sprintf( ' %s--username %s --password %s ', $this->getAuthCache(), ProcessExecutor::escape($this->getUsername()), ProcessExecutor::escape($this->getPassword()) ); } /** * Get the password for the svn command. Can be empty. * * @throws \LogicException * @return string */ protected function getPassword() { if ($this->credentials === null) { throw new \LogicException("No svn auth detected."); } return isset($this->credentials['password']) ? $this->credentials['password'] : ''; } /** * Get the username for the svn command. * * @throws \LogicException * @return string */ protected function getUsername() { if ($this->credentials === null) { throw new \LogicException("No svn auth detected."); } return $this->credentials['username']; } /** * Detect Svn Auth. * * @return bool */ protected function hasAuth() { if (null !== $this->hasAuth) { return $this->hasAuth; } if (false === $this->createAuthFromConfig()) { $this->createAuthFromUrl(); } return (bool) $this->hasAuth; } /** * Return the no-auth-cache switch. * * @return string */ protected function getAuthCache() { return $this->cacheCredentials ? '' : '--no-auth-cache '; } /** * Create the auth params from the configuration file. * * @return bool */ private function createAuthFromConfig() { if (!$this->config->has('http-basic')) { return $this->hasAuth = false; } $authConfig = $this->config->get('http-basic'); $host = parse_url($this->url, PHP_URL_HOST); if (isset($authConfig[$host])) { $this->credentials['username'] = $authConfig[$host]['username']; $this->credentials['password'] = $authConfig[$host]['password']; return $this->hasAuth = true; } return $this->hasAuth = false; } /** * Create the auth params from the url * * @return bool */ private function createAuthFromUrl() { $uri = parse_url($this->url); if (empty($uri['user'])) { return $this->hasAuth = false; } $this->credentials['username'] = $uri['user']; if (!empty($uri['pass'])) { $this->credentials['password'] = $uri['pass']; } return $this->hasAuth = true; } /** * Returns the version of the svn binary contained in PATH * * @return string|null */ public function binaryVersion() { if (!self::$version) { if (0 === $this->process->execute('svn --version', $output)) { if (preg_match('{(\d+(?:\.\d+)+)}', $output, $match)) { self::$version = $match[1]; } } } return self::$version; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; /** * Composer mirror utilities * * @author Jordi Boggiano */ class ComposerMirror { public static function processUrl($mirrorUrl, $packageName, $version, $reference, $type) { if ($reference) { $reference = preg_match('{^([a-f0-9]*|%reference%)$}', $reference) ? $reference : md5($reference); } $version = strpos($version, '/') === false ? $version : md5($version); return str_replace( array('%package%', '%version%', '%reference%', '%type%'), array($packageName, $version, $reference, $type), $mirrorUrl ); } public static function processGitUrl($mirrorUrl, $packageName, $url, $type) { if (preg_match('#^(?:(?:https?|git)://github\.com/|git@github\.com:)([^/]+)/(.+?)(?:\.git)?$#', $url, $match)) { $url = 'gh-'.$match[1].'/'.$match[2]; } elseif (preg_match('#^https://bitbucket\.org/([^/]+)/(.+?)(?:\.git)?/?$#', $url, $match)) { $url = 'bb-'.$match[1].'/'.$match[2]; } else { $url = preg_replace('{[^a-z0-9_.-]}i', '-', trim($url, '/')); } return str_replace( array('%package%', '%normalizedUrl%', '%type%'), array($packageName, $url, $type), $mirrorUrl ); } public static function processHgUrl($mirrorUrl, $packageName, $url, $type) { return self::processGitUrl($mirrorUrl, $packageName, $url, $type); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Package\Link; use Composer\Package\PackageInterface; class PackageSorter { /** * Sorts packages by dependency weight * * Packages of equal weight retain the original order * * @param array $packages * @return array */ public static function sortPackages(array $packages) { $usageList = array(); foreach ($packages as $package) { /** @var PackageInterface $package */ foreach (array_merge($package->getRequires(), $package->getDevRequires()) as $link) { /** @var Link $link */ $target = $link->getTarget(); $usageList[$target][] = $package->getName(); } } $computing = array(); $computed = array(); $computeImportance = function ($name) use (&$computeImportance, &$computing, &$computed, $usageList) { // reusing computed importance if (isset($computed[$name])) { return $computed[$name]; } // canceling circular dependency if (isset($computing[$name])) { return 0; } $computing[$name] = true; $weight = 0; if (isset($usageList[$name])) { foreach ($usageList[$name] as $user) { $weight -= 1 - $computeImportance($user); } } unset($computing[$name]); $computed[$name] = $weight; return $weight; }; $weightList = array(); foreach ($packages as $index => $package) { $weight = $computeImportance($package->getName()); $weightList[$index] = $weight; } $stable_sort = function (&$array) { static $transform, $restore; $i = 0; if (!$transform) { $transform = function (&$v, $k) use (&$i) { $v = array($v, ++$i, $k, $v); }; $restore = function (&$v) { $v = $v[3]; }; } array_walk($array, $transform); asort($array); array_walk($array, $restore); }; $stable_sort($weightList); $sortedPackages = array(); foreach (array_keys($weightList) as $index) { $sortedPackages[] = $packages[$index]; } return $sortedPackages; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Config; use Composer\Downloader\TransportException; /** * @author Jordi Boggiano */ class GitHub { /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var ProcessExecutor */ protected $process; /** @var HttpDownloader */ protected $httpDownloader; /** * Constructor. * * @param IOInterface $io The IO instance * @param Config $config The composer configuration * @param ProcessExecutor $process Process instance, injectable for mocking * @param HttpDownloader $httpDownloader Remote Filesystem, injectable for mocking */ public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, HttpDownloader $httpDownloader = null) { $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor($io); $this->httpDownloader = $httpDownloader ?: Factory::createHttpDownloader($this->io, $config); } /** * Attempts to authorize a GitHub domain via OAuth * * @param string $originUrl The host this GitHub instance is located at * @return bool true on success */ public function authorizeOAuth($originUrl) { if (!in_array($originUrl, $this->config->get('github-domains'))) { return false; } // if available use token from git config if (0 === $this->process->execute('git config github.accesstoken', $output)) { $this->io->setAuthentication($originUrl, trim($output), 'x-oauth-basic'); return true; } return false; } /** * Authorizes a GitHub domain interactively via OAuth * * @param string $originUrl The host this GitHub instance is located at * @param string $message The reason this authorization is required * @throws \RuntimeException * @throws TransportException|\Exception * @return bool true on success */ public function authorizeOAuthInteractively($originUrl, $message = null) { if ($message) { $this->io->writeError($message); } $note = 'Composer'; if ($this->config->get('github-expose-hostname') === true && 0 === $this->process->execute('hostname', $output)) { $note .= ' on ' . trim($output); } $note .= ' ' . date('Y-m-d Hi'); $url = 'https://'.$originUrl.'/settings/tokens/new?scopes=repo&description=' . str_replace('%20', '+', rawurlencode($note)); $this->io->writeError(sprintf('Head to %s', $url)); $this->io->writeError(sprintf('to retrieve a token. It will be stored in "%s" for future use by Composer.', $this->config->getAuthConfigSource()->getName())); $token = trim($this->io->askAndHideAnswer('Token (hidden): ')); if (!$token) { $this->io->writeError('No token given, aborting.'); $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); return false; } $this->io->setAuthentication($originUrl, $token, 'x-oauth-basic'); try { $apiUrl = ('github.com' === $originUrl) ? 'api.github.com/' : $originUrl . '/api/v3/'; $this->httpDownloader->get('https://'. $apiUrl, array( 'retry-auth-failure' => false, )); } catch (TransportException $e) { if (in_array($e->getCode(), array(403, 401))) { $this->io->writeError('Invalid token provided.'); $this->io->writeError('You can also add it manually later by using "composer config --global --auth github-oauth.github.com "'); return false; } throw $e; } // store value in user config $this->config->getConfigSource()->removeConfigSetting('github-oauth.'.$originUrl); $this->config->getAuthConfigSource()->addConfigSetting('github-oauth.'.$originUrl, $token); $this->io->writeError('Token stored successfully.'); return true; } /** * Extract ratelimit from response. * * @param array $headers Headers from Composer\Downloader\TransportException. * * @return array Associative array with the keys limit and reset. */ public function getRateLimit(array $headers) { $rateLimit = array( 'limit' => '?', 'reset' => '?', ); foreach ($headers as $header) { $header = trim($header); if (false === strpos($header, 'X-RateLimit-')) { continue; } list($type, $value) = explode(':', $header, 2); switch ($type) { case 'X-RateLimit-Limit': $rateLimit['limit'] = (int) trim($value); break; case 'X-RateLimit-Reset': $rateLimit['reset'] = date('Y-m-d H:i:s', (int) trim($value)); break; } } return $rateLimit; } /** * Finds whether a request failed due to rate limiting * * @param array $headers Headers from Composer\Downloader\TransportException. * * @return bool */ public function isRateLimited(array $headers) { foreach ($headers as $header) { if (preg_match('{^X-RateLimit-Remaining: *0$}i', trim($header))) { return true; } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\Downloader\MaxFileSizeExceededException; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; use Composer\CaBundle\CaBundle; use Composer\Util\Http\Response; use Composer\Util\Http\ProxyManager; /** * @internal * @author François Pluchino * @author Jordi Boggiano * @author Nils Adermann */ class RemoteFilesystem { private $io; private $config; private $scheme; private $bytesMax; private $originUrl; private $fileUrl; private $fileName; private $retry; private $progress; private $lastProgress; private $options = array(); private $peerCertificateMap = array(); private $disableTls = false; private $lastHeaders; private $storeAuth; private $authHelper; private $degradedMode = false; private $redirects; private $maxRedirects = 20; private $proxyManager; /** * Constructor. * * @param IOInterface $io The IO instance * @param Config $config The config * @param array $options The options * @param bool $disableTls * @param AuthHelper $authHelper */ public function __construct(IOInterface $io, Config $config, array $options = array(), $disableTls = false, AuthHelper $authHelper = null) { $this->io = $io; // Setup TLS options // The cafile option can be set via config.json if ($disableTls === false) { $this->options = StreamContextFactory::getTlsDefaults($options, $io); } else { $this->disableTls = true; } // handle the other externally set options normally. $this->options = array_replace_recursive($this->options, $options); $this->config = $config; $this->authHelper = isset($authHelper) ? $authHelper : new AuthHelper($io, $config); $this->proxyManager = ProxyManager::getInstance(); } /** * Copy the remote file in local. * * @param string $originUrl The origin URL * @param string $fileUrl The file URL * @param string $fileName the local filename * @param bool $progress Display the progression * @param array $options Additional context options * * @return bool true */ public function copy($originUrl, $fileUrl, $fileName, $progress = true, $options = array()) { return $this->get($originUrl, $fileUrl, $options, $fileName, $progress); } /** * Get the content. * * @param string $originUrl The origin URL * @param string $fileUrl The file URL * @param bool $progress Display the progression * @param array $options Additional context options * * @return bool|string The content */ public function getContents($originUrl, $fileUrl, $progress = true, $options = array()) { return $this->get($originUrl, $fileUrl, $options, null, $progress); } /** * Retrieve the options set in the constructor * * @return array Options */ public function getOptions() { return $this->options; } /** * Merges new options * * @param array $options */ public function setOptions(array $options) { $this->options = array_replace_recursive($this->options, $options); } /** * Check is disable TLS. * * @return bool */ public function isTlsDisabled() { return $this->disableTls === true; } /** * Returns the headers of the last request * * @return array */ public function getLastHeaders() { return $this->lastHeaders; } /** * @param array $headers array of returned headers like from getLastHeaders() * @return int|null */ public static function findStatusCode(array $headers) { $value = null; foreach ($headers as $header) { if (preg_match('{^HTTP/\S+ (\d+)}i', $header, $match)) { // In case of redirects, http_response_headers contains the headers of all responses // so we can not return directly and need to keep iterating $value = (int) $match[1]; } } return $value; } /** * @param array $headers array of returned headers like from getLastHeaders() * @return string|null */ public function findStatusMessage(array $headers) { $value = null; foreach ($headers as $header) { if (preg_match('{^HTTP/\S+ \d+}i', $header)) { // In case of redirects, http_response_headers contains the headers of all responses // so we can not return directly and need to keep iterating $value = $header; } } return $value; } /** * Get file content or copy action. * * @param string $originUrl The origin URL * @param string $fileUrl The file URL * @param array $additionalOptions context options * @param string $fileName the local filename * @param bool $progress Display the progression * * @throws TransportException|\Exception * @throws TransportException When the file could not be downloaded * * @return bool|string */ protected function get($originUrl, $fileUrl, $additionalOptions = array(), $fileName = null, $progress = true) { $this->scheme = parse_url($fileUrl, PHP_URL_SCHEME); $this->bytesMax = 0; $this->originUrl = $originUrl; $this->fileUrl = $fileUrl; $this->fileName = $fileName; $this->progress = $progress; $this->lastProgress = null; $retryAuthFailure = true; $this->lastHeaders = array(); $this->redirects = 1; // The first request counts. $tempAdditionalOptions = $additionalOptions; if (isset($tempAdditionalOptions['retry-auth-failure'])) { $retryAuthFailure = (bool) $tempAdditionalOptions['retry-auth-failure']; unset($tempAdditionalOptions['retry-auth-failure']); } $isRedirect = false; if (isset($tempAdditionalOptions['redirects'])) { $this->redirects = $tempAdditionalOptions['redirects']; $isRedirect = true; unset($tempAdditionalOptions['redirects']); } $options = $this->getOptionsForUrl($originUrl, $tempAdditionalOptions); unset($tempAdditionalOptions); $origFileUrl = $fileUrl; if (isset($options['gitlab-token'])) { $fileUrl .= (false === strpos($fileUrl, '?') ? '?' : '&') . 'access_token='.$options['gitlab-token']; unset($options['gitlab-token']); } if (isset($options['http'])) { $options['http']['ignore_errors'] = true; } if ($this->degradedMode && strpos($fileUrl, 'http://repo.packagist.org/') === 0) { // access packagist using the resolved IPv4 instead of the hostname to force IPv4 protocol $fileUrl = 'http://' . gethostbyname('repo.packagist.org') . substr($fileUrl, 20); $degradedPackagist = true; } $maxFileSize = null; if (isset($options['max_file_size'])) { $maxFileSize = $options['max_file_size']; unset($options['max_file_size']); } $ctx = StreamContextFactory::getContext($fileUrl, $options, array('notification' => array($this, 'callbackGet'))); $proxy = $this->proxyManager->getProxyForRequest($fileUrl); $usingProxy = $proxy->getFormattedUrl(' using proxy (%s)'); $this->io->writeError((strpos($origFileUrl, 'http') === 0 ? 'Downloading ' : 'Reading ') . Url::sanitize($origFileUrl) . $usingProxy, true, IOInterface::DEBUG); unset($origFileUrl, $proxy, $usingProxy); // Check for secure HTTP, but allow insecure Packagist calls to $hashed providers as file integrity is verified with sha256 if ((!preg_match('{^http://(repo\.)?packagist\.org/p/}', $fileUrl) || (false === strpos($fileUrl, '$') && false === strpos($fileUrl, '%24'))) && empty($degradedPackagist) && $this->config) { $this->config->prohibitUrlByConfig($fileUrl, $this->io); } if ($this->progress && !$isRedirect) { $this->io->writeError("Downloading (connecting...)", false); } $errorMessage = ''; $errorCode = 0; $result = false; set_error_handler(function ($code, $msg) use (&$errorMessage) { if ($errorMessage) { $errorMessage .= "\n"; } $errorMessage .= preg_replace('{^file_get_contents\(.*?\): }', '', $msg); return true; }); $http_response_header = array(); try { $result = $this->getRemoteContents($originUrl, $fileUrl, $ctx, $http_response_header, $maxFileSize); if (!empty($http_response_header[0])) { $statusCode = self::findStatusCode($http_response_header); if ($statusCode >= 400 && Response::findHeaderValue($http_response_header, 'content-type') === 'application/json') { HttpDownloader::outputWarnings($this->io, $originUrl, json_decode($result, true)); } if (in_array($statusCode, array(401, 403)) && $retryAuthFailure) { $this->promptAuthAndRetry($statusCode, $this->findStatusMessage($http_response_header), $http_response_header); } } $contentLength = !empty($http_response_header[0]) ? Response::findHeaderValue($http_response_header, 'content-length') : null; if ($contentLength && Platform::strlen($result) < $contentLength) { // alas, this is not possible via the stream callback because STREAM_NOTIFY_COMPLETED is documented, but not implemented anywhere in PHP $e = new TransportException('Content-Length mismatch, received '.Platform::strlen($result).' bytes out of the expected '.$contentLength); $e->setHeaders($http_response_header); $e->setStatusCode(self::findStatusCode($http_response_header)); try { $e->setResponse($this->decodeResult($result, $http_response_header)); } catch (\Exception $e) { $e->setResponse($result); } $this->io->writeError('Content-Length mismatch, received '.Platform::strlen($result).' out of '.$contentLength.' bytes: (' . base64_encode($result).')', true, IOInterface::DEBUG); throw $e; } if (PHP_VERSION_ID < 50600 && !empty($options['ssl']['peer_fingerprint'])) { // Emulate fingerprint validation on PHP < 5.6 $params = stream_context_get_params($ctx); $expectedPeerFingerprint = $options['ssl']['peer_fingerprint']; $peerFingerprint = TlsHelper::getCertificateFingerprint($params['options']['ssl']['peer_certificate']); // Constant time compare??! if ($expectedPeerFingerprint !== $peerFingerprint) { throw new TransportException('Peer fingerprint did not match'); } } } catch (\Exception $e) { if ($e instanceof TransportException && !empty($http_response_header[0])) { $e->setHeaders($http_response_header); $e->setStatusCode(self::findStatusCode($http_response_header)); } if ($e instanceof TransportException && $result !== false) { $e->setResponse($this->decodeResult($result, $http_response_header)); } $result = false; } if ($errorMessage && !filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { $errorMessage = 'allow_url_fopen must be enabled in php.ini ('.$errorMessage.')'; } restore_error_handler(); if (isset($e) && !$this->retry) { if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { $this->degradedMode = true; $this->io->writeError(''); $this->io->writeError(array( ''.$e->getMessage().'', 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', )); return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); } throw $e; } $statusCode = null; $contentType = null; $locationHeader = null; if (!empty($http_response_header[0])) { $statusCode = self::findStatusCode($http_response_header); $contentType = Response::findHeaderValue($http_response_header, 'content-type'); $locationHeader = Response::findHeaderValue($http_response_header, 'location'); } // check for bitbucket login page asking to authenticate if ($originUrl === 'bitbucket.org' && !$this->authHelper->isPublicBitBucketDownload($fileUrl) && substr($fileUrl, -4) === '.zip' && (!$locationHeader || substr(parse_url($locationHeader, PHP_URL_PATH), -4) !== '.zip') && $contentType && preg_match('{^text/html\b}i', $contentType) ) { $result = false; if ($retryAuthFailure) { $this->promptAuthAndRetry(401); } } // check for gitlab 404 when downloading archives if ($statusCode === 404 && $this->config && in_array($originUrl, $this->config->get('gitlab-domains'), true) && false !== strpos($fileUrl, 'archive.zip') ) { $result = false; if ($retryAuthFailure) { $this->promptAuthAndRetry(401); } } // handle 3xx redirects, 304 Not Modified is excluded $hasFollowedRedirect = false; if ($statusCode >= 300 && $statusCode <= 399 && $statusCode !== 304 && $this->redirects < $this->maxRedirects) { $hasFollowedRedirect = true; $result = $this->handleRedirect($http_response_header, $additionalOptions, $result); } // fail 4xx and 5xx responses and capture the response if ($statusCode && $statusCode >= 400 && $statusCode <= 599) { if (!$this->retry) { if ($this->progress && !$isRedirect) { $this->io->overwriteError("Downloading (failed)", false); } $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded ('.$http_response_header[0].')', $statusCode); $e->setHeaders($http_response_header); $e->setResponse($this->decodeResult($result, $http_response_header)); $e->setStatusCode($statusCode); throw $e; } $result = false; } if ($this->progress && !$this->retry && !$isRedirect) { $this->io->overwriteError("Downloading (".($result === false ? 'failed' : '100%').")", false); } // decode gzip if ($result && extension_loaded('zlib') && strpos($fileUrl, 'http') === 0 && !$hasFollowedRedirect) { try { $result = $this->decodeResult($result, $http_response_header); } catch (\Exception $e) { if ($this->degradedMode) { throw $e; } $this->degradedMode = true; $this->io->writeError(array( '', 'Failed to decode response: '.$e->getMessage().'', 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', )); return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); } } // handle copy command if download was successful if (false !== $result && null !== $fileName && !$isRedirect) { if ('' === $result) { throw new TransportException('"'.$this->fileUrl.'" appears broken, and returned an empty 200 response'); } $errorMessage = ''; set_error_handler(function ($code, $msg) use (&$errorMessage) { if ($errorMessage) { $errorMessage .= "\n"; } $errorMessage .= preg_replace('{^file_put_contents\(.*?\): }', '', $msg); return true; }); $result = (bool) file_put_contents($fileName, $result); restore_error_handler(); if (false === $result) { throw new TransportException('The "'.$this->fileUrl.'" file could not be written to '.$fileName.': '.$errorMessage); } } // Handle SSL cert match issues if (false === $result && false !== strpos($errorMessage, 'Peer certificate') && PHP_VERSION_ID < 50600) { // Certificate name error, PHP doesn't support subjectAltName on PHP < 5.6 // The procedure to handle sAN for older PHP's is: // // 1. Open socket to remote server and fetch certificate (disabling peer // validation because PHP errors without giving up the certificate.) // // 2. Verifying the domain in the URL against the names in the sAN field. // If there is a match record the authority [host/port], certificate // common name, and certificate fingerprint. // // 3. Retry the original request but changing the CN_match parameter to // the common name extracted from the certificate in step 2. // // 4. To prevent any attempt at being hoodwinked by switching the // certificate between steps 2 and 3 the fingerprint of the certificate // presented in step 3 is compared against the one recorded in step 2. if (CaBundle::isOpensslParseSafe()) { $certDetails = $this->getCertificateCnAndFp($this->fileUrl, $options); if ($certDetails) { $this->peerCertificateMap[$this->getUrlAuthority($this->fileUrl)] = $certDetails; $this->retry = true; } } else { $this->io->writeError(''); $this->io->writeError(sprintf( 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', PHP_VERSION )); } } if ($this->retry) { $this->retry = false; $result = $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); if ($this->storeAuth && $this->config) { $this->authHelper->storeAuth($this->originUrl, $this->storeAuth); $this->storeAuth = false; } return $result; } if (false === $result) { $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded: '.$errorMessage, $errorCode); if (!empty($http_response_header[0])) { $e->setHeaders($http_response_header); } if (!$this->degradedMode && false !== strpos($e->getMessage(), 'Operation timed out')) { $this->degradedMode = true; $this->io->writeError(''); $this->io->writeError(array( ''.$e->getMessage().'', 'Retrying with degraded mode, check https://getcomposer.org/doc/articles/troubleshooting.md#degraded-mode for more info', )); return $this->get($this->originUrl, $this->fileUrl, $additionalOptions, $this->fileName, $this->progress); } throw $e; } if (!empty($http_response_header[0])) { $this->lastHeaders = $http_response_header; } return $result; } /** * Get contents of remote URL. * * @param string $originUrl The origin URL * @param string $fileUrl The file URL * @param resource $context The stream context * @param int $maxFileSize The maximum allowed file size * * @return string|false The response contents or false on failure */ protected function getRemoteContents($originUrl, $fileUrl, $context, array &$responseHeaders = null, $maxFileSize = null) { $result = false; try { $e = null; if ($maxFileSize !== null) { $result = file_get_contents($fileUrl, false, $context, 0, $maxFileSize); } else { // passing `null` to file_get_contents will convert `null` to `0` and return 0 bytes $result = file_get_contents($fileUrl, false, $context); } } catch (\Throwable $e) { } catch (\Exception $e) { } if ($maxFileSize !== null && Platform::strlen($result) >= $maxFileSize) { throw new MaxFileSizeExceededException('Maximum allowed download size reached. Downloaded ' . Platform::strlen($result) . ' of allowed ' . $maxFileSize . ' bytes'); } // https://www.php.net/manual/en/reserved.variables.httpresponseheader.php $responseHeaders = isset($http_response_header) ? $http_response_header : array(); if (null !== $e) { throw $e; } return $result; } /** * Get notification action. * * @param int $notificationCode The notification code * @param int $severity The severity level * @param string $message The message * @param int $messageCode The message code * @param int $bytesTransferred The loaded size * @param int $bytesMax The total size * @throws TransportException */ protected function callbackGet($notificationCode, $severity, $message, $messageCode, $bytesTransferred, $bytesMax) { switch ($notificationCode) { case STREAM_NOTIFY_FAILURE: if (400 === $messageCode) { // This might happen if your host is secured by ssl client certificate authentication // but you do not send an appropriate certificate throw new TransportException("The '" . $this->fileUrl . "' URL could not be accessed: " . $message, $messageCode); } break; case STREAM_NOTIFY_FILE_SIZE_IS: $this->bytesMax = $bytesMax; break; case STREAM_NOTIFY_PROGRESS: if ($this->bytesMax > 0 && $this->progress) { $progression = min(100, round($bytesTransferred / $this->bytesMax * 100)); if ((0 === $progression % 5) && 100 !== $progression && $progression !== $this->lastProgress) { $this->lastProgress = $progression; $this->io->overwriteError("Downloading ($progression%)", false); } } break; default: break; } } protected function promptAuthAndRetry($httpStatus, $reason = null, $headers = array()) { $result = $this->authHelper->promptAuthIfNeeded($this->fileUrl, $this->originUrl, $httpStatus, $reason, $headers); $this->storeAuth = $result['storeAuth']; $this->retry = $result['retry']; if ($this->retry) { throw new TransportException('RETRY'); } } protected function getOptionsForUrl($originUrl, $additionalOptions) { $tlsOptions = array(); // Setup remaining TLS options - the matching may need monitoring, esp. www vs none in CN if ($this->disableTls === false && PHP_VERSION_ID < 50600 && !stream_is_local($this->fileUrl)) { $host = parse_url($this->fileUrl, PHP_URL_HOST); if (PHP_VERSION_ID < 50304) { // PHP < 5.3.4 does not support follow_location, for those people // do some really nasty hard coded transformations. These will // still breakdown if the site redirects to a domain we don't // expect. if ($host === 'github.com' || $host === 'api.github.com') { $host = '*.github.com'; } } $tlsOptions['ssl']['CN_match'] = $host; $tlsOptions['ssl']['SNI_server_name'] = $host; $urlAuthority = $this->getUrlAuthority($this->fileUrl); if (isset($this->peerCertificateMap[$urlAuthority])) { // Handle subjectAltName on lesser PHP's. $certMap = $this->peerCertificateMap[$urlAuthority]; $this->io->writeError('', true, IOInterface::DEBUG); $this->io->writeError(sprintf( 'Using %s as CN for subjectAltName enabled host %s', $certMap['cn'], $urlAuthority ), true, IOInterface::DEBUG); $tlsOptions['ssl']['CN_match'] = $certMap['cn']; $tlsOptions['ssl']['peer_fingerprint'] = $certMap['fp']; } elseif (!CaBundle::isOpensslParseSafe() && $host === 'repo.packagist.org') { // handle subjectAltName for packagist.org's repo domain on very old PHPs $tlsOptions['ssl']['CN_match'] = 'packagist.org'; } } $headers = array(); if (extension_loaded('zlib')) { $headers[] = 'Accept-Encoding: gzip'; } $options = array_replace_recursive($this->options, $tlsOptions, $additionalOptions); if (!$this->degradedMode) { // degraded mode disables HTTP/1.1 which causes issues with some bad // proxies/software due to the use of chunked encoding $options['http']['protocol_version'] = 1.1; $headers[] = 'Connection: close'; } $headers = $this->authHelper->addAuthenticationHeader($headers, $originUrl, $this->fileUrl); $options['http']['follow_location'] = 0; if (isset($options['http']['header']) && !is_array($options['http']['header'])) { $options['http']['header'] = explode("\r\n", trim($options['http']['header'], "\r\n")); } foreach ($headers as $header) { $options['http']['header'][] = $header; } return $options; } private function handleRedirect(array $http_response_header, array $additionalOptions, $result) { if ($locationHeader = Response::findHeaderValue($http_response_header, 'location')) { if (parse_url($locationHeader, PHP_URL_SCHEME)) { // Absolute URL; e.g. https://example.com/composer $targetUrl = $locationHeader; } elseif (parse_url($locationHeader, PHP_URL_HOST)) { // Scheme relative; e.g. //example.com/foo $targetUrl = $this->scheme.':'.$locationHeader; } elseif ('/' === $locationHeader[0]) { // Absolute path; e.g. /foo $urlHost = parse_url($this->fileUrl, PHP_URL_HOST); // Replace path using hostname as an anchor. $targetUrl = preg_replace('{^(.+(?://|@)'.preg_quote($urlHost).'(?::\d+)?)(?:[/\?].*)?$}', '\1'.$locationHeader, $this->fileUrl); } else { // Relative path; e.g. foo // This actually differs from PHP which seems to add duplicate slashes. $targetUrl = preg_replace('{^(.+/)[^/?]*(?:\?.*)?$}', '\1'.$locationHeader, $this->fileUrl); } } if (!empty($targetUrl)) { $this->redirects++; $this->io->writeError('', true, IOInterface::DEBUG); $this->io->writeError(sprintf('Following redirect (%u) %s', $this->redirects, Url::sanitize($targetUrl)), true, IOInterface::DEBUG); $additionalOptions['redirects'] = $this->redirects; return $this->get(parse_url($targetUrl, PHP_URL_HOST), $targetUrl, $additionalOptions, $this->fileName, $this->progress); } if (!$this->retry) { $e = new TransportException('The "'.$this->fileUrl.'" file could not be downloaded, got redirect without Location ('.$http_response_header[0].')'); $e->setHeaders($http_response_header); $e->setResponse($this->decodeResult($result, $http_response_header)); throw $e; } return false; } /** * Fetch certificate common name and fingerprint for validation of SAN. * * @todo Remove when PHP 5.6 is minimum supported version. */ private function getCertificateCnAndFp($url, $options) { if (PHP_VERSION_ID >= 50600) { throw new \BadMethodCallException(sprintf( '%s must not be used on PHP >= 5.6', __METHOD__ )); } $context = StreamContextFactory::getContext($url, $options, array('options' => array( 'ssl' => array( 'capture_peer_cert' => true, 'verify_peer' => false, // Yes this is fucking insane! But PHP is lame. ), ), )); // Ideally this would just use stream_socket_client() to avoid sending a // HTTP request but that does not capture the certificate. if (false === $handle = @fopen($url, 'rb', false, $context)) { return; } // Close non authenticated connection without reading any content. fclose($handle); $handle = null; $params = stream_context_get_params($context); if (!empty($params['options']['ssl']['peer_certificate'])) { $peerCertificate = $params['options']['ssl']['peer_certificate']; if (TlsHelper::checkCertificateHost($peerCertificate, parse_url($url, PHP_URL_HOST), $commonName)) { return array( 'cn' => $commonName, 'fp' => TlsHelper::getCertificateFingerprint($peerCertificate), ); } } } private function getUrlAuthority($url) { $defaultPorts = array( 'ftp' => 21, 'http' => 80, 'https' => 443, 'ssh2.sftp' => 22, 'ssh2.scp' => 22, ); $scheme = parse_url($url, PHP_URL_SCHEME); if (!isset($defaultPorts[$scheme])) { throw new \InvalidArgumentException(sprintf( 'Could not get default port for unknown scheme: %s', $scheme )); } $defaultPort = $defaultPorts[$scheme]; $port = parse_url($url, PHP_URL_PORT) ?: $defaultPort; return parse_url($url, PHP_URL_HOST).':'.$port; } private function decodeResult($result, $http_response_header) { // decode gzip if ($result && extension_loaded('zlib')) { $contentEncoding = Response::findHeaderValue($http_response_header, 'content-encoding'); $decode = $contentEncoding && 'gzip' === strtolower($contentEncoding); if ($decode) { if (PHP_VERSION_ID >= 50400) { $result = zlib_decode($result); } else { // work around issue with gzuncompress & co that do not work with all gzip checksums $result = file_get_contents('compress.zlib://data:application/octet-stream;base64,'.base64_encode($result)); } if ($result === false) { throw new TransportException('Failed to decode zlib stream'); } } } return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; use Composer\Util\Http\Response; use Composer\Composer; use Composer\Package\Version\VersionParser; use Composer\Semver\Constraint\Constraint; use Composer\Exception\IrrecoverableDownloadException; use React\Promise\Promise; /** * @author Jordi Boggiano */ class HttpDownloader { const STATUS_QUEUED = 1; const STATUS_STARTED = 2; const STATUS_COMPLETED = 3; const STATUS_FAILED = 4; const STATUS_ABORTED = 5; private $io; private $config; private $jobs = array(); private $options = array(); private $runningJobs = 0; private $maxJobs = 12; private $curl; private $rfs; private $idGen = 0; private $disabled; private $allowAsync = false; /** * @param IOInterface $io The IO instance * @param Config $config The config * @param array $options The options * @param bool $disableTls */ public function __construct(IOInterface $io, Config $config, array $options = array(), $disableTls = false) { $this->io = $io; $this->disabled = (bool) getenv('COMPOSER_DISABLE_NETWORK'); // Setup TLS options // The cafile option can be set via config.json if ($disableTls === false) { $this->options = StreamContextFactory::getTlsDefaults($options, $io); } // handle the other externally set options normally. $this->options = array_replace_recursive($this->options, $options); $this->config = $config; if (self::isCurlEnabled()) { $this->curl = new Http\CurlDownloader($io, $config, $options, $disableTls); } $this->rfs = new RemoteFilesystem($io, $config, $options, $disableTls); if (is_numeric($maxJobs = getenv('COMPOSER_MAX_PARALLEL_HTTP'))) { $this->maxJobs = max(1, min(50, (int) $maxJobs)); } } /** * Download a file synchronously * * @param string $url URL to download * @param array $options Stream context options e.g. https://www.php.net/manual/en/context.http.php * although not all options are supported when using the default curl downloader * @return Response * * @throws TransportException */ public function get($url, $options = array()) { list($job) = $this->addJob(array('url' => $url, 'options' => $options, 'copyTo' => false), true); $this->wait($job['id']); $response = $this->getResponse($job['id']); // check for failed curl response (empty body but successful looking response) if ( $this->curl && PHP_VERSION_ID < 70000 && $response->getBody() === null && $response->getStatusCode() === 200 && $response->getHeader('content-length') !== '0' ) { $this->io->writeError('cURL downloader failed to return a response, disabling it and proceeding in slow mode.'); $this->curl = null; list($job) = $this->addJob(array('url' => $url, 'options' => $options, 'copyTo' => false), true); $this->wait($job['id']); $response = $this->getResponse($job['id']); } return $response; } /** * Create an async download operation * * @param string $url URL to download * @param array $options Stream context options e.g. https://www.php.net/manual/en/context.http.php * although not all options are supported when using the default curl downloader * @return Promise * * @throws TransportException */ public function add($url, $options = array()) { list(, $promise) = $this->addJob(array('url' => $url, 'options' => $options, 'copyTo' => false)); return $promise; } /** * Copy a file synchronously * * @param string $url URL to download * @param string $to Path to copy to * @param array $options Stream context options e.g. https://www.php.net/manual/en/context.http.php * although not all options are supported when using the default curl downloader * @return Response * * @throws TransportException */ public function copy($url, $to, $options = array()) { list($job) = $this->addJob(array('url' => $url, 'options' => $options, 'copyTo' => $to), true); $this->wait($job['id']); return $this->getResponse($job['id']); } /** * Create an async copy operation * * @param string $url URL to download * @param string $to Path to copy to * @param array $options Stream context options e.g. https://www.php.net/manual/en/context.http.php * although not all options are supported when using the default curl downloader * @return Promise * * @throws TransportException */ public function addCopy($url, $to, $options = array()) { list(, $promise) = $this->addJob(array('url' => $url, 'options' => $options, 'copyTo' => $to)); return $promise; } /** * Retrieve the options set in the constructor * * @return array Options */ public function getOptions() { return $this->options; } /** * Merges new options * * @return void */ public function setOptions(array $options) { $this->options = array_replace_recursive($this->options, $options); } private function addJob($request, $sync = false) { $request['options'] = array_replace_recursive($this->options, $request['options']); $job = array( 'id' => $this->idGen++, 'status' => self::STATUS_QUEUED, 'request' => $request, 'sync' => $sync, 'origin' => Url::getOrigin($this->config, $request['url']), ); if (!$sync && !$this->allowAsync) { throw new \LogicException('You must use the HttpDownloader instance which is part of a Composer\Loop instance to be able to run async http requests'); } // capture username/password from URL if there is one if (preg_match('{^https?://([^:/]+):([^@/]+)@([^/]+)}i', $request['url'], $match)) { $this->io->setAuthentication($job['origin'], rawurldecode($match[1]), rawurldecode($match[2])); } $rfs = $this->rfs; if ($this->canUseCurl($job)) { $resolver = function ($resolve, $reject) use (&$job) { $job['status'] = HttpDownloader::STATUS_QUEUED; $job['resolve'] = $resolve; $job['reject'] = $reject; }; } else { $resolver = function ($resolve, $reject) use (&$job, $rfs) { // start job $url = $job['request']['url']; $options = $job['request']['options']; $job['status'] = HttpDownloader::STATUS_STARTED; if ($job['request']['copyTo']) { $rfs->copy($job['origin'], $url, $job['request']['copyTo'], false /* TODO progress */, $options); $headers = $rfs->getLastHeaders(); $response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $job['request']['copyTo'].'~'); $resolve($response); } else { $body = $rfs->getContents($job['origin'], $url, false /* TODO progress */, $options); $headers = $rfs->getLastHeaders(); $response = new Http\Response($job['request'], $rfs->findStatusCode($headers), $headers, $body); $resolve($response); } }; } $downloader = $this; $curl = $this->curl; $canceler = function () use (&$job, $curl) { if ($job['status'] === HttpDownloader::STATUS_QUEUED) { $job['status'] = HttpDownloader::STATUS_ABORTED; } if ($job['status'] !== HttpDownloader::STATUS_STARTED) { return; } $job['status'] = HttpDownloader::STATUS_ABORTED; if (isset($job['curl_id'])) { $curl->abortRequest($job['curl_id']); } throw new IrrecoverableDownloadException('Download of ' . Url::sanitize($job['request']['url']) . ' canceled'); }; $promise = new Promise($resolver, $canceler); $promise = $promise->then(function ($response) use (&$job, $downloader) { $job['status'] = HttpDownloader::STATUS_COMPLETED; $job['response'] = $response; // TODO 3.0 this should be done directly on $this when PHP 5.3 is dropped $downloader->markJobDone(); return $response; }, function ($e) use (&$job, $downloader) { $job['status'] = HttpDownloader::STATUS_FAILED; $job['exception'] = $e; $downloader->markJobDone(); throw $e; }); $this->jobs[$job['id']] = &$job; if ($this->runningJobs < $this->maxJobs) { $this->startJob($job['id']); } return array($job, $promise); } private function startJob($id) { $job = &$this->jobs[$id]; if ($job['status'] !== self::STATUS_QUEUED) { return; } // start job $job['status'] = self::STATUS_STARTED; $this->runningJobs++; $resolve = $job['resolve']; $reject = $job['reject']; $url = $job['request']['url']; $options = $job['request']['options']; $origin = $job['origin']; if ($this->disabled) { if (isset($job['request']['options']['http']['header']) && false !== stripos(implode('', $job['request']['options']['http']['header']), 'if-modified-since')) { $resolve(new Response(array('url' => $url), 304, array(), '')); } else { $e = new TransportException('Network disabled, request canceled: '.Url::sanitize($url), 499); $e->setStatusCode(499); $reject($e); } return; } try { if ($job['request']['copyTo']) { $job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options, $job['request']['copyTo']); } else { $job['curl_id'] = $this->curl->download($resolve, $reject, $origin, $url, $options); } } catch (\Exception $exception) { $reject($exception); } } /** * @private */ public function markJobDone() { $this->runningJobs--; } /** * Wait for current async download jobs to complete * * @param int|null $index For internal use only, the job id */ public function wait($index = null) { do { $jobCount = $this->countActiveJobs($index); } while ($jobCount); } /** * @internal */ public function enableAsync() { $this->allowAsync = true; } /** * @internal * * @param int|null $index For internal use only, the job id * @return int number of active (queued or started) jobs */ public function countActiveJobs($index = null) { if ($this->runningJobs < $this->maxJobs) { foreach ($this->jobs as $job) { if ($job['status'] === self::STATUS_QUEUED && $this->runningJobs < $this->maxJobs) { $this->startJob($job['id']); } } } if ($this->curl) { $this->curl->tick(); } if (null !== $index) { return $this->jobs[$index]['status'] < self::STATUS_COMPLETED ? 1 : 0; } $active = 0; foreach ($this->jobs as $job) { if ($job['status'] < self::STATUS_COMPLETED) { $active++; } elseif (!$job['sync']) { unset($this->jobs[$job['id']]); } } return $active; } private function getResponse($index) { if (!isset($this->jobs[$index])) { throw new \LogicException('Invalid request id'); } if ($this->jobs[$index]['status'] === self::STATUS_FAILED) { throw $this->jobs[$index]['exception']; } if (!isset($this->jobs[$index]['response'])) { throw new \LogicException('Response not available yet, call wait() first'); } $resp = $this->jobs[$index]['response']; unset($this->jobs[$index]); return $resp; } /** * @internal */ public static function outputWarnings(IOInterface $io, $url, $data) { foreach (array('warning', 'info') as $type) { if (empty($data[$type])) { continue; } if (!empty($data[$type . '-versions'])) { $versionParser = new VersionParser(); $constraint = $versionParser->parseConstraints($data[$type . '-versions']); $composer = new Constraint('==', $versionParser->normalize(Composer::getVersion())); if (!$constraint->matches($composer)) { continue; } } $io->writeError('<'.$type.'>'.ucfirst($type).' from '.Url::sanitize($url).': '.$data[$type].''); } } /** * @internal */ public static function getExceptionHints(\Exception $e) { if (!$e instanceof TransportException) { return; } if ( false !== strpos($e->getMessage(), 'Resolving timed out') || false !== strpos($e->getMessage(), 'Could not resolve host') ) { Silencer::suppress(); $testConnectivity = file_get_contents('https://8.8.8.8', false, stream_context_create(array( 'ssl' => array('verify_peer' => false), 'http' => array('follow_location' => false, 'ignore_errors' => true), ))); Silencer::restore(); if (false !== $testConnectivity) { return array( 'The following exception probably indicates you have misconfigured DNS resolver(s)', ); } return array( 'The following exception probably indicates you are offline or have misconfigured DNS resolver(s)', ); } } private function canUseCurl(array $job) { if (!$this->curl) { return false; } if (!preg_match('{^https?://}i', $job['request']['url'])) { return false; } if (!empty($job['request']['options']['ssl']['allow_self_signed'])) { return false; } return true; } /** * @internal */ public static function isCurlEnabled() { return \extension_loaded('curl') && \function_exists('curl_multi_exec') && \function_exists('curl_multi_init'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use React\Promise\Promise; use Symfony\Component\Console\Helper\ProgressBar; /** * @author Jordi Boggiano */ class Loop { /** @var HttpDownloader */ private $httpDownloader; /** @var ProcessExecutor|null */ private $processExecutor; /** @var Promise[][] */ private $currentPromises = array(); /** @var int */ private $waitIndex = 0; public function __construct(HttpDownloader $httpDownloader, ProcessExecutor $processExecutor = null) { $this->httpDownloader = $httpDownloader; $this->httpDownloader->enableAsync(); $this->processExecutor = $processExecutor; if ($this->processExecutor) { $this->processExecutor->enableAsync(); } } /** * @return HttpDownloader */ public function getHttpDownloader() { return $this->httpDownloader; } /** * @return ProcessExecutor|null */ public function getProcessExecutor() { return $this->processExecutor; } public function wait(array $promises, ProgressBar $progress = null) { /** @var \Exception|null */ $uncaught = null; \React\Promise\all($promises)->then( function () { }, function ($e) use (&$uncaught) { $uncaught = $e; } ); // keep track of every group of promises that is waited on, so abortJobs can // cancel them all, even if wait() was called within a wait() $waitIndex = $this->waitIndex++; $this->currentPromises[$waitIndex] = $promises; if ($progress) { $totalJobs = 0; if ($this->httpDownloader) { $totalJobs += $this->httpDownloader->countActiveJobs(); } if ($this->processExecutor) { $totalJobs += $this->processExecutor->countActiveJobs(); } $progress->start($totalJobs); } $lastUpdate = 0; while (true) { $activeJobs = 0; if ($this->httpDownloader) { $activeJobs += $this->httpDownloader->countActiveJobs(); } if ($this->processExecutor) { $activeJobs += $this->processExecutor->countActiveJobs(); } if ($progress && microtime(true) - $lastUpdate > 0.1) { $lastUpdate = microtime(true); $progress->setProgress($progress->getMaxSteps() - $activeJobs); } if (!$activeJobs) { break; } } // as we skip progress updates if they are too quick, make sure we do one last one here at 100% if ($progress) { $progress->setProgress($progress->getMaxSteps()); } unset($this->currentPromises[$waitIndex]); if ($uncaught) { throw $uncaught; } } public function abortJobs() { foreach ($this->currentPromises as $promiseGroup) { foreach ($promiseGroup as $promise) { $promise->cancel(); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\IO\IOInterface; /** * @author Jordi Boggiano */ class Git { private static $version = false; /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var ProcessExecutor */ protected $process; /** @var Filesystem */ protected $filesystem; public function __construct(IOInterface $io, Config $config, ProcessExecutor $process, Filesystem $fs) { $this->io = $io; $this->config = $config; $this->process = $process; $this->filesystem = $fs; } public function runCommand($commandCallable, $url, $cwd, $initialClone = false) { // Ensure we are allowed to use this URL by config $this->config->prohibitUrlByConfig($url, $this->io); if ($initialClone) { $origCwd = $cwd; $cwd = null; } if (preg_match('{^ssh://[^@]+@[^:]+:[^0-9]+}', $url)) { throw new \InvalidArgumentException('The source URL ' . $url . ' is invalid, ssh URLs should have a port number after ":".' . "\n" . 'Use ssh://git@example.com:22/path or just git@example.com:path if you do not want to provide a password or custom port.'); } if (!$initialClone) { // capture username/password from URL if there is one and we have no auth configured yet $this->process->execute('git remote -v', $output, $cwd); if (preg_match('{^(?:composer|origin)\s+https?://(.+):(.+)@([^/]+)}im', $output, $match) && !$this->io->hasAuthentication($match[3])) { $this->io->setAuthentication($match[3], rawurldecode($match[1]), rawurldecode($match[2])); } } $protocols = $this->config->get('github-protocols'); if (!is_array($protocols)) { throw new \RuntimeException('Config value "github-protocols" must be an array, got ' . gettype($protocols)); } // public github, autoswitch protocols if (preg_match('{^(?:https?|git)://' . self::getGitHubDomainsRegex($this->config) . '/(.*)}', $url, $match)) { $messages = array(); foreach ($protocols as $protocol) { if ('ssh' === $protocol) { $protoUrl = "git@" . $match[1] . ":" . $match[2]; } else { $protoUrl = $protocol . "://" . $match[1] . "/" . $match[2]; } if (0 === $this->process->execute(call_user_func($commandCallable, $protoUrl), $ignoredOutput, $cwd)) { return; } $messages[] = '- ' . $protoUrl . "\n" . preg_replace('#^#m', ' ', $this->process->getErrorOutput()); if ($initialClone && isset($origCwd)) { $this->filesystem->removeDirectory($origCwd); } } // failed to checkout, first check git accessibility if (!$this->io->hasAuthentication($match[1]) && !$this->io->isInteractive()) { $this->throwException('Failed to clone ' . $url . ' via ' . implode(', ', $protocols) . ' protocols, aborting.' . "\n\n" . implode("\n", $messages), $url); } } // if we have a private github url and the ssh protocol is disabled then we skip it and directly fallback to https $bypassSshForGitHub = preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url) && !in_array('ssh', $protocols, true); $command = call_user_func($commandCallable, $url); $auth = null; if ($bypassSshForGitHub || 0 !== $this->process->execute($command, $ignoredOutput, $cwd)) { $errorMsg = $this->process->getErrorOutput(); // private github repository without ssh key access, try https with auth if (preg_match('{^git@' . self::getGitHubDomainsRegex($this->config) . ':(.+?)\.git$}i', $url, $match) || preg_match('{^https?://' . self::getGitHubDomainsRegex($this->config) . '/(.*?)(?:\.git)?$}i', $url, $match) ) { if (!$this->io->hasAuthentication($match[1])) { $gitHubUtil = new GitHub($this->io, $this->config, $this->process); $message = 'Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private repos'; if (!$gitHubUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { $gitHubUtil->authorizeOAuthInteractively($match[1], $message); } } if ($this->io->hasAuthentication($match[1])) { $auth = $this->io->getAuthentication($match[1]); $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; $command = call_user_func($commandCallable, $authUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } $errorMsg = $this->process->getErrorOutput(); } } elseif (preg_match('{^https://(bitbucket\.org)/(.*?)(?:\.git)?$}i', $url, $match)) { //bitbucket oauth $bitbucketUtil = new Bitbucket($this->io, $this->config, $this->process); if (!$this->io->hasAuthentication($match[1])) { $message = 'Enter your Bitbucket credentials to access private repos'; if (!$bitbucketUtil->authorizeOAuth($match[1]) && $this->io->isInteractive()) { $bitbucketUtil->authorizeOAuthInteractively($match[1], $message); $accessToken = $bitbucketUtil->getToken(); $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); } } else { //We're authenticating with a locally stored consumer. $auth = $this->io->getAuthentication($match[1]); //We already have an access_token from a previous request. if ($auth['username'] !== 'x-token-auth') { $accessToken = $bitbucketUtil->requestToken($match[1], $auth['username'], $auth['password']); if (!empty($accessToken)) { $this->io->setAuthentication($match[1], 'x-token-auth', $accessToken); } } } if ($this->io->hasAuthentication($match[1])) { $auth = $this->io->getAuthentication($match[1]); $authUrl = 'https://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[1] . '/' . $match[2] . '.git'; $command = call_user_func($commandCallable, $authUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } $errorMsg = $this->process->getErrorOutput(); } else { // Falling back to ssh $sshUrl = 'git@bitbucket.org:' . $match[2] . '.git'; $this->io->writeError(' No bitbucket authentication configured. Falling back to ssh.'); $command = call_user_func($commandCallable, $sshUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } $errorMsg = $this->process->getErrorOutput(); } } elseif ( preg_match('{^(git)@' . self::getGitLabDomainsRegex($this->config) . ':(.+?\.git)$}i', $url, $match) || preg_match('{^(https?)://' . self::getGitLabDomainsRegex($this->config) . '/(.*)}i', $url, $match) ) { if ($match[1] === 'git') { $match[1] = 'https'; } if (!$this->io->hasAuthentication($match[2])) { $gitLabUtil = new GitLab($this->io, $this->config, $this->process); $message = 'Cloning failed, enter your GitLab credentials to access private repos'; if (!$gitLabUtil->authorizeOAuth($match[2]) && $this->io->isInteractive()) { $gitLabUtil->authorizeOAuthInteractively($match[1], $match[2], $message); } } if ($this->io->hasAuthentication($match[2])) { $auth = $this->io->getAuthentication($match[2]); if ($auth['password'] === 'private-token' || $auth['password'] === 'oauth2' || $auth['password'] === 'gitlab-ci-token') { $authUrl = $match[1] . '://' . rawurlencode($auth['password']) . ':' . rawurlencode($auth['username']) . '@' . $match[2] . '/' . $match[3]; // swap username and password } else { $authUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . '/' . $match[3]; } $command = call_user_func($commandCallable, $authUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } $errorMsg = $this->process->getErrorOutput(); } } elseif ($this->isAuthenticationFailure($url, $match)) { // private non-github/gitlab/bitbucket repo that failed to authenticate if (strpos($match[2], '@')) { list($authParts, $match[2]) = explode('@', $match[2], 2); } $storeAuth = false; if ($this->io->hasAuthentication($match[2])) { $auth = $this->io->getAuthentication($match[2]); } elseif ($this->io->isInteractive()) { $defaultUsername = null; if (isset($authParts) && $authParts) { if (false !== strpos($authParts, ':')) { list($defaultUsername, ) = explode(':', $authParts, 2); } else { $defaultUsername = $authParts; } } $this->io->writeError(' Authentication required (' . $match[2] . '):'); $auth = array( 'username' => $this->io->ask(' Username: ', $defaultUsername), 'password' => $this->io->askAndHideAnswer(' Password: '), ); $storeAuth = $this->config->get('store-auths'); } if ($auth) { $authUrl = $match[1] . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[2] . $match[3]; $command = call_user_func($commandCallable, $authUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { $this->io->setAuthentication($match[2], $auth['username'], $auth['password']); $authHelper = new AuthHelper($this->io, $this->config); $authHelper->storeAuth($match[2], $storeAuth); return; } $errorMsg = $this->process->getErrorOutput(); } } if ($initialClone && isset($origCwd)) { $this->filesystem->removeDirectory($origCwd); } $this->throwException('Failed to execute ' . $command . "\n\n" . $errorMsg, $url); } } public function syncMirror($url, $dir) { if (getenv('COMPOSER_DISABLE_NETWORK') && getenv('COMPOSER_DISABLE_NETWORK') !== 'prime') { $this->io->writeError('Aborting git mirror sync of '.$url.' as network is disabled'); return false; } // update the repo if it is a valid git repository if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { try { $commandCallable = function ($url) { $sanitizedUrl = preg_replace('{://([^@]+?):(.+?)@}', '://', $url); return sprintf('git remote set-url origin -- %s && git remote update --prune origin && git remote set-url origin -- %s && git gc --auto', ProcessExecutor::escape($url), ProcessExecutor::escape($sanitizedUrl)); }; $this->runCommand($commandCallable, $url, $dir); } catch (\Exception $e) { $this->io->writeError('Sync mirror failed: ' . $e->getMessage() . '', true, IOInterface::DEBUG); return false; } return true; } // clean up directory and do a fresh clone into it $this->filesystem->removeDirectory($dir); $commandCallable = function ($url) use ($dir) { return sprintf('git clone --mirror -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($dir)); }; $this->runCommand($commandCallable, $url, $dir, true); return true; } public function fetchRefOrSyncMirror($url, $dir, $ref) { if ($this->checkRefIsInMirror($dir, $ref)) { return true; } if ($this->syncMirror($url, $dir)) { return $this->checkRefIsInMirror($dir, $ref); } return false; } public static function getNoShowSignatureFlag(ProcessExecutor $process) { $gitVersion = self::getVersion($process); if ($gitVersion && version_compare($gitVersion, '2.10.0-rc0', '>=')) { return ' --no-show-signature'; } return ''; } private function checkRefIsInMirror($dir, $ref) { if (is_dir($dir) && 0 === $this->process->execute('git rev-parse --git-dir', $output, $dir) && trim($output) === '.') { $escapedRef = ProcessExecutor::escape($ref.'^{commit}'); $exitCode = $this->process->execute(sprintf('git rev-parse --quiet --verify %s', $escapedRef), $ignoredOutput, $dir); if ($exitCode === 0) { return true; } } return false; } private function isAuthenticationFailure($url, &$match) { if (!preg_match('{^(https?://)([^/]+)(.*)$}i', $url, $match)) { return false; } $authFailures = array( 'fatal: Authentication failed', 'remote error: Invalid username or password.', 'error: 401 Unauthorized', 'fatal: unable to access', 'fatal: could not read Username', ); $errorOutput = $this->process->getErrorOutput(); foreach ($authFailures as $authFailure) { if (strpos($errorOutput, $authFailure) !== false) { return true; } } return false; } public static function cleanEnv() { if (PHP_VERSION_ID < 50400 && ini_get('safe_mode') && false === strpos(ini_get('safe_mode_allowed_env_vars'), 'GIT_ASKPASS')) { throw new \RuntimeException('safe_mode is enabled and safe_mode_allowed_env_vars does not contain GIT_ASKPASS, can not set env var. You can disable safe_mode with "-dsafe_mode=0" when running composer'); } // added in git 1.7.1, prevents prompting the user for username/password if (getenv('GIT_ASKPASS') !== 'echo') { putenv('GIT_ASKPASS=echo'); $_SERVER['GIT_ASKPASS'] = 'echo'; } // clean up rogue git env vars in case this is running in a git hook if (getenv('GIT_DIR')) { putenv('GIT_DIR'); unset($_SERVER['GIT_DIR']); } if (getenv('GIT_WORK_TREE')) { putenv('GIT_WORK_TREE'); unset($_SERVER['GIT_WORK_TREE']); } // Run processes with predictable LANGUAGE if (getenv('LANGUAGE') !== 'C') { putenv('LANGUAGE=C'); $_SERVER['LANGUAGE'] = 'C'; } // clean up env for OSX, see https://github.com/composer/composer/issues/2146#issuecomment-35478940 putenv("DYLD_LIBRARY_PATH"); unset($_SERVER['DYLD_LIBRARY_PATH']); } public static function getGitHubDomainsRegex(Config $config) { return '(' . implode('|', array_map('preg_quote', $config->get('github-domains'))) . ')'; } public static function getGitLabDomainsRegex(Config $config) { return '(' . implode('|', array_map('preg_quote', $config->get('gitlab-domains'))) . ')'; } private function throwException($message, $url) { // git might delete a directory when it fails and php will not know clearstatcache(); if (0 !== $this->process->execute('git --version', $ignoredOutput)) { throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', git was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); } throw new \RuntimeException(Url::sanitize($message)); } /** * Retrieves the current git version. * * @return string|null The git version number, if present. */ public static function getVersion(ProcessExecutor $process) { if (false === self::$version) { self::$version = null; if (0 === $process->execute('git --version', $output) && preg_match('/^git version (\d+(?:\.\d+)+)/m', $output, $matches)) { self::$version = $matches[1]; } } return self::$version; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; /** * Temporarily suppress PHP error reporting, usually warnings and below. * * @author Niels Keurentjes */ class Silencer { /** * @var int[] Unpop stack */ private static $stack = array(); /** * Suppresses given mask or errors. * * @param int|null $mask Error levels to suppress, default value NULL indicates all warnings and below. * @return int The old error reporting level. */ public static function suppress($mask = null) { if (!isset($mask)) { $mask = E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_DEPRECATED | E_USER_DEPRECATED | E_STRICT; } $old = error_reporting(); self::$stack[] = $old; error_reporting($old & ~$mask); return $old; } /** * Restores a single state. */ public static function restore() { if (!empty(self::$stack)) { error_reporting(array_pop(self::$stack)); } } /** * Calls a specified function while silencing warnings and below. * * Future improvement: when PHP requirements are raised add Callable type hint (5.4) and variadic parameters (5.6) * * @param callable $callable Function to execute. * @throws \Exception Any exceptions from the callback are rethrown. * @return mixed Return value of the callback. */ public static function call($callable /*, ...$parameters */) { try { self::suppress(); $result = call_user_func_array($callable, array_slice(func_get_args(), 1)); self::restore(); return $result; } catch (\Exception $e) { // Use a finally block for this when requirements are raised to PHP 5.5 self::restore(); throw $e; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Config; use Composer\IO\IOInterface; /** * @author Jonas Renaudot */ class Hg { private static $version = false; /** * @var \Composer\IO\IOInterface */ private $io; /** * @var \Composer\Config */ private $config; /** * @var \Composer\Util\ProcessExecutor */ private $process; public function __construct(IOInterface $io, Config $config, ProcessExecutor $process) { $this->io = $io; $this->config = $config; $this->process = $process; } public function runCommand($commandCallable, $url, $cwd) { $this->config->prohibitUrlByConfig($url, $this->io); // Try as is $command = call_user_func($commandCallable, $url); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } // Try with the authentication information available if (preg_match('{^(https?)://((.+)(?:\:(.+))?@)?([^/]+)(/.*)?}mi', $url, $match) && $this->io->hasAuthentication($match[5])) { $auth = $this->io->getAuthentication($match[5]); $authenticatedUrl = $match[1] . '://' . rawurlencode($auth['username']) . ':' . rawurlencode($auth['password']) . '@' . $match[5] . (!empty($match[6]) ? $match[6] : null); $command = call_user_func($commandCallable, $authenticatedUrl); if (0 === $this->process->execute($command, $ignoredOutput, $cwd)) { return; } $error = $this->process->getErrorOutput(); } else { $error = 'The given URL (' . $url . ') does not match the required format (http(s)://(username:password@)example.com/path-to-repository)'; } $this->throwException('Failed to clone ' . $url . ', ' . "\n\n" . $error, $url); } private function throwException($message, $url) { if (null === self::getVersion($this->process)) { throw new \RuntimeException(Url::sanitize('Failed to clone ' . $url . ', hg was not found, check that it is installed and in your PATH env.' . "\n\n" . $this->process->getErrorOutput())); } throw new \RuntimeException(Url::sanitize($message)); } /** * Retrieves the current hg version. * * @return string|null The hg version number, if present. */ public static function getVersion(ProcessExecutor $process) { if (false === self::$version) { self::$version = null; if (0 === $process->execute('hg --version', $output) && preg_match('/^.+? (\d+(?:\.\d+)+)\)?\r?\n/', $output, $matches)) { self::$version = $matches[1]; } } return self::$version; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\Package\Loader\ArrayLoader; use Composer\Package\Loader\ValidatingArrayLoader; use Composer\Package\Loader\InvalidPackageException; use Composer\Json\JsonValidationException; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Spdx\SpdxLicenses; /** * Validates a composer configuration. * * @author Robert Schönthal * @author Jordi Boggiano */ class ConfigValidator { const CHECK_VERSION = 1; private $io; public function __construct(IOInterface $io) { $this->io = $io; } /** * Validates the config, and returns the result. * * @param string $file The path to the file * @param int $arrayLoaderValidationFlags Flags for ArrayLoader validation * @param int $flags Flags for validation * * @return array a triple containing the errors, publishable errors, and warnings */ public function validate($file, $arrayLoaderValidationFlags = ValidatingArrayLoader::CHECK_ALL, $flags = self::CHECK_VERSION) { $errors = array(); $publishErrors = array(); $warnings = array(); // validate json schema $laxValid = false; try { $json = new JsonFile($file, null, $this->io); $manifest = $json->read(); $json->validateSchema(JsonFile::LAX_SCHEMA); $laxValid = true; $json->validateSchema(); } catch (JsonValidationException $e) { foreach ($e->getErrors() as $message) { if ($laxValid) { $publishErrors[] = $message; } else { $errors[] = $message; } } } catch (\Exception $e) { $errors[] = $e->getMessage(); return array($errors, $publishErrors, $warnings); } // validate actual data if (empty($manifest['license'])) { $warnings[] = 'No license specified, it is recommended to do so. For closed-source software you may use "proprietary" as license.'; } else { $licenses = (array) $manifest['license']; // strip proprietary since it's not a valid SPDX identifier, but is accepted by composer foreach ($licenses as $key => $license) { if ('proprietary' === $license) { unset($licenses[$key]); } } $licenseValidator = new SpdxLicenses(); foreach ($licenses as $license) { $spdxLicense = $licenseValidator->getLicenseByIdentifier($license); if ($spdxLicense && $spdxLicense[3]) { if (preg_match('{^[AL]?GPL-[123](\.[01])?\+$}i', $license)) { $warnings[] = sprintf( 'License "%s" is a deprecated SPDX license identifier, use "'.str_replace('+', '', $license).'-or-later" instead', $license ); } elseif (preg_match('{^[AL]?GPL-[123](\.[01])?$}i', $license)) { $warnings[] = sprintf( 'License "%s" is a deprecated SPDX license identifier, use "'.$license.'-only" or "'.$license.'-or-later" instead', $license ); } else { $warnings[] = sprintf( 'License "%s" is a deprecated SPDX license identifier, see https://spdx.org/licenses/', $license ); } } } } if (($flags & self::CHECK_VERSION) && isset($manifest['version'])) { $warnings[] = 'The version field is present, it is recommended to leave it out if the package is published on Packagist.'; } if (!empty($manifest['name']) && preg_match('{[A-Z]}', $manifest['name'])) { $suggestName = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $manifest['name']); $suggestName = strtolower($suggestName); $publishErrors[] = sprintf( 'Name "%s" does not match the best practice (e.g. lower-cased/with-dashes). We suggest using "%s" instead. As such you will not be able to submit it to Packagist.', $manifest['name'], $suggestName ); } if (!empty($manifest['type']) && $manifest['type'] == 'composer-installer') { $warnings[] = "The package type 'composer-installer' is deprecated. Please distribute your custom installers as plugins from now on. See https://getcomposer.org/doc/articles/plugins.md for plugin documentation."; } // check for require-dev overrides if (isset($manifest['require'], $manifest['require-dev'])) { $requireOverrides = array_intersect_key($manifest['require'], $manifest['require-dev']); if (!empty($requireOverrides)) { $plural = (count($requireOverrides) > 1) ? 'are' : 'is'; $warnings[] = implode(', ', array_keys($requireOverrides)). " {$plural} required both in require and require-dev, this can lead to unexpected behavior"; } } // check for meaningless provide/replace satisfying requirements foreach (array('provide', 'replace') as $linkType) { if (isset($manifest[$linkType])) { foreach (array('require', 'require-dev') as $requireType) { if (isset($manifest[$requireType])) { foreach ($manifest[$linkType] as $provide => $constraint) { if (isset($manifest[$requireType][$provide])) { $warnings[] = 'The package ' . $provide . ' in '.$requireType.' is also listed in '.$linkType.' which satisfies the requirement. Remove it from '.$linkType.' if you wish to install it.'; } } } } } } // check for commit references $require = isset($manifest['require']) ? $manifest['require'] : array(); $requireDev = isset($manifest['require-dev']) ? $manifest['require-dev'] : array(); $packages = array_merge($require, $requireDev); foreach ($packages as $package => $version) { if (preg_match('/#/', $version) === 1) { $warnings[] = sprintf( 'The package "%s" is pointing to a commit-ref, this is bad practice and can cause unforeseen issues.', $package ); } } // report scripts-descriptions for non-existent scripts $scriptsDescriptions = isset($manifest['scripts-descriptions']) ? $manifest['scripts-descriptions'] : array(); $scripts = isset($manifest['scripts']) ? $manifest['scripts'] : array(); foreach ($scriptsDescriptions as $scriptName => $scriptDescription) { if (!array_key_exists($scriptName, $scripts)) { $warnings[] = sprintf( 'Description for non-existent script "%s" found in "scripts-descriptions"', $scriptName ); } } // check for empty psr-0/psr-4 namespace prefixes if (isset($manifest['autoload']['psr-0'][''])) { $warnings[] = "Defining autoload.psr-0 with an empty namespace prefix is a bad idea for performance"; } if (isset($manifest['autoload']['psr-4'][''])) { $warnings[] = "Defining autoload.psr-4 with an empty namespace prefix is a bad idea for performance"; } $loader = new ValidatingArrayLoader(new ArrayLoader(), true, null, $arrayLoaderValidationFlags); try { if (!isset($manifest['version'])) { $manifest['version'] = '1.0.0'; } if (!isset($manifest['name'])) { $manifest['name'] = 'dummy/dummy'; } $loader->load($manifest); } catch (InvalidPackageException $e) { $errors = array_merge($errors, $e->getErrors()); } $warnings = array_merge($warnings, $loader->getWarnings()); return array($errors, $publishErrors, $warnings); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\XdebugHandler\XdebugHandler; /** * Provides ini file location functions that work with and without a restart. * When the process has restarted it uses a tmp ini and stores the original * ini locations in an environment variable. * * @author John Stevenson */ class IniHelper { /** * Returns an array of php.ini locations with at least one entry * * The equivalent of calling php_ini_loaded_file then php_ini_scanned_files. * The loaded ini location is the first entry and may be empty. * * @return array */ public static function getAll() { return XdebugHandler::getAllIniFiles(); } /** * Describes the location of the loaded php.ini file(s) * * @return string */ public static function getMessage() { $paths = self::getAll(); if (empty($paths[0])) { array_shift($paths); } $ini = array_shift($paths); if (empty($ini)) { return 'A php.ini file does not exist. You will have to create one.'; } if (!empty($paths)) { return 'Your command-line PHP is using multiple ini files. Run `php --ini` to show them.'; } return 'The php.ini used by your command-line PHP is: '.$ini; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Util; use Composer\IO\IOInterface; /** * Convert PHP errors into exceptions * * @author Artem Lopata */ class ErrorHandler { private static $io; /** * Error handler * * @param int $level Level of the error raised * @param string $message Error message * @param string $file Filename that the error was raised in * @param int $line Line number the error was raised at * * @static * @throws \ErrorException * @return bool */ public static function handle($level, $message, $file, $line) { // error code is not included in error_reporting if (!(error_reporting() & $level)) { return; } if (filter_var(ini_get('xdebug.scream'), FILTER_VALIDATE_BOOLEAN)) { $message .= "\n\nWarning: You have xdebug.scream enabled, the warning above may be". "\na legitimately suppressed error that you were not supposed to see."; } if ($level !== E_DEPRECATED && $level !== E_USER_DEPRECATED) { throw new \ErrorException($message, 0, $level, $file, $line); } if (self::$io) { self::$io->writeError('Deprecation Notice: '.$message.' in '.$file.':'.$line.''); if (self::$io->isVerbose()) { self::$io->writeError('Stack trace:'); self::$io->writeError(array_filter(array_map(function ($a) { if (isset($a['line'], $a['file'])) { return ' '.$a['file'].':'.$a['line'].''; } return null; }, array_slice(debug_backtrace(), 2)))); } } return true; } /** * Register error handler. * * @param IOInterface|null $io */ public static function register(IOInterface $io = null) { set_error_handler(array(__CLASS__, 'handle')); error_reporting(E_ALL | E_STRICT); self::$io = $io; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Script; use Composer\Composer; use Composer\IO\IOInterface; use Composer\EventDispatcher\Event as BaseEvent; /** * The script event class * * @author François Pluchino * @author Nils Adermann */ class Event extends BaseEvent { /** * @var Composer The composer instance */ private $composer; /** * @var IOInterface The IO instance */ private $io; /** * @var bool Dev mode flag */ private $devMode; /** * @var BaseEvent */ private $originatingEvent; /** * Constructor. * * @param string $name The event name * @param Composer $composer The composer object * @param IOInterface $io The IOInterface object * @param bool $devMode Whether or not we are in dev mode * @param array $args Arguments passed by the user * @param array $flags Optional flags to pass data not as argument */ public function __construct($name, Composer $composer, IOInterface $io, $devMode = false, array $args = array(), array $flags = array()) { parent::__construct($name, $args, $flags); $this->composer = $composer; $this->io = $io; $this->devMode = $devMode; } /** * Returns the composer instance. * * @return Composer */ public function getComposer() { return $this->composer; } /** * Returns the IO instance. * * @return IOInterface */ public function getIO() { return $this->io; } /** * Return the dev mode flag * * @return bool */ public function isDevMode() { return $this->devMode; } /** * Set the originating event. * * @return \Composer\EventDispatcher\Event|null */ public function getOriginatingEvent() { return $this->originatingEvent; } /** * Set the originating event. * * @param \Composer\EventDispatcher\Event $event * @return $this */ public function setOriginatingEvent(BaseEvent $event) { $this->originatingEvent = $this->calculateOriginatingEvent($event); return $this; } /** * Returns the upper-most event in chain. * * @param \Composer\EventDispatcher\Event $event * @return \Composer\EventDispatcher\Event */ private function calculateOriginatingEvent(BaseEvent $event) { if ($event instanceof Event && $event->getOriginatingEvent()) { return $this->calculateOriginatingEvent($event->getOriginatingEvent()); } return $event; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Script; /** * The Script Events. * * @author François Pluchino * @author Jordi Boggiano */ class ScriptEvents { /** * The PRE_INSTALL_CMD event occurs before the install command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const PRE_INSTALL_CMD = 'pre-install-cmd'; /** * The POST_INSTALL_CMD event occurs after the install command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_INSTALL_CMD = 'post-install-cmd'; /** * The PRE_UPDATE_CMD event occurs before the update command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const PRE_UPDATE_CMD = 'pre-update-cmd'; /** * The POST_UPDATE_CMD event occurs after the update command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_UPDATE_CMD = 'post-update-cmd'; /** * The PRE_STATUS_CMD event occurs before the status command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const PRE_STATUS_CMD = 'pre-status-cmd'; /** * The POST_STATUS_CMD event occurs after the status command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_STATUS_CMD = 'post-status-cmd'; /** * The PRE_AUTOLOAD_DUMP event occurs before the autoload file is generated. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const PRE_AUTOLOAD_DUMP = 'pre-autoload-dump'; /** * The POST_AUTOLOAD_DUMP event occurs after the autoload file has been generated. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_AUTOLOAD_DUMP = 'post-autoload-dump'; /** * The POST_ROOT_PACKAGE_INSTALL event occurs after the root package has been installed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_ROOT_PACKAGE_INSTALL = 'post-root-package-install'; /** * The POST_CREATE_PROJECT event occurs after the create-project command has been executed. * Note: Event occurs after POST_INSTALL_CMD * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_CREATE_PROJECT_CMD = 'post-create-project-cmd'; /** * The PRE_ARCHIVE_CMD event occurs before the update command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const PRE_ARCHIVE_CMD = 'pre-archive-cmd'; /** * The POST_ARCHIVE_CMD event occurs after the status command is executed. * * The event listener method receives a Composer\Script\Event instance. * * @var string */ const POST_ARCHIVE_CMD = 'post-archive-cmd'; } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\EventDispatcher\Event; use Composer\Repository\RepositoryInterface; use Composer\DependencyResolver\Request; use Composer\Package\PackageInterface; /** * The pre command run event. * * @author Jordi Boggiano */ class PrePoolCreateEvent extends Event { /** * @var RepositoryInterface[] */ private $repositories; /** * @var Request */ private $request; /** * @var array */ private $acceptableStabilities; /** * @var array */ private $stabilityFlags; /** * @var array */ private $rootAliases; /** * @var array */ private $rootReferences; /** * @var PackageInterface[] */ private $packages; /** * @var PackageInterface[] */ private $unacceptableFixedPackages; /** * @param string $name The event name * @param RepositoryInterface[] $repositories */ public function __construct($name, array $repositories, Request $request, array $acceptableStabilities, array $stabilityFlags, array $rootAliases, array $rootReferences, array $packages, array $unacceptableFixedPackages) { parent::__construct($name); $this->repositories = $repositories; $this->request = $request; $this->acceptableStabilities = $acceptableStabilities; $this->stabilityFlags = $stabilityFlags; $this->rootAliases = $rootAliases; $this->rootReferences = $rootReferences; $this->packages = $packages; $this->unacceptableFixedPackages = $unacceptableFixedPackages; } /** * @return RepositoryInterface[] */ public function getRepositories() { return $this->repositories; } /** * @return Request */ public function getRequest() { return $this->request; } /** * @return array */ public function getAcceptableStabilities() { return $this->acceptableStabilities; } /** * @return array */ public function getStabilityFlags() { return $this->stabilityFlags; } /** * @return array[] of package => version => [alias, alias_normalized] * @psalm-return array> */ public function getRootAliases() { return $this->rootAliases; } /** * @return array */ public function getRootReferences() { return $this->rootReferences; } /** * @return PackageInterface[] */ public function getPackages() { return $this->packages; } /** * @return PackageInterface[] */ public function getUnacceptableFixedPackages() { return $this->unacceptableFixedPackages; } /** * @param PackageInterface[] $packages */ public function setPackages(array $packages) { $this->packages = $packages; } /** * @param PackageInterface[] $packages */ public function setUnacceptableFixedPackages(array $packages) { $this->unacceptableFixedPackages = $packages; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\Composer; use Composer\IO\IOInterface; /** * Plugin interface * * @author Nils Adermann */ interface PluginInterface { /** * Version number of the internal composer-plugin-api package * * This is used to denote the API version of Plugin specific * features, but is also bumped to a new major if Composer * includes a major break in internal APIs which are susceptible * to be used by plugins. * * @var string */ const PLUGIN_API_VERSION = '2.0.0'; /** * Apply plugin modifications to Composer * * @param Composer $composer * @param IOInterface $io */ public function activate(Composer $composer, IOInterface $io); /** * Remove any hooks from Composer * * This will be called when a plugin is deactivated before being * uninstalled, but also before it gets upgraded to a new version * so the old one can be deactivated and the new one activated. * * @param Composer $composer * @param IOInterface $io */ public function deactivate(Composer $composer, IOInterface $io); /** * Prepare the plugin to be uninstalled * * This will be called after deactivate. * * @param Composer $composer * @param IOInterface $io */ public function uninstall(Composer $composer, IOInterface $io); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\EventDispatcher\Event; use Composer\Util\HttpDownloader; /** * The pre file download event. * * @author Nils Adermann */ class PreFileDownloadEvent extends Event { /** * @var HttpDownloader */ private $httpDownloader; /** * @var string */ private $processedUrl; /** * @var string|null */ private $customCacheKey; /** * @var string */ private $type; /** * @var mixed */ private $context; /** * Constructor. * * @param string $name The event name * @param HttpDownloader $httpDownloader * @param string $processedUrl * @param string $type * @param mixed $context */ public function __construct($name, HttpDownloader $httpDownloader, $processedUrl, $type, $context = null) { parent::__construct($name); $this->httpDownloader = $httpDownloader; $this->processedUrl = $processedUrl; $this->type = $type; $this->context = $context; } /** * @return HttpDownloader */ public function getHttpDownloader() { return $this->httpDownloader; } /** * Retrieves the processed URL that will be downloaded. * * @return string */ public function getProcessedUrl() { return $this->processedUrl; } /** * Sets the processed URL that will be downloaded. * * @param string $processedUrl New processed URL */ public function setProcessedUrl($processedUrl) { $this->processedUrl = $processedUrl; } /** * Retrieves a custom package cache key for this download. * * @return string|null */ public function getCustomCacheKey() { return $this->customCacheKey; } /** * Sets a custom package cache key for this download. * * @param string|null $customCacheKey New cache key */ public function setCustomCacheKey($customCacheKey) { $this->customCacheKey = $customCacheKey; } /** * Returns the type of this download (package, metadata). * * @return string */ public function getType() { return $this->type; } /** * Returns the context of this download, if any. * * If this download is of type package, the package object is returned. * * @return mixed */ public function getContext() { return $this->context; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\EventDispatcher\Event; use Composer\Package\PackageInterface; /** * The post file download event. * * @author Nils Adermann */ class PostFileDownloadEvent extends Event { /** * @var string */ private $fileName; /** * @var string|null */ private $checksum; /** * @var string */ private $url; /** * @var \Composer\Package\PackageInterface */ private $package; /** * Constructor. * * @param string $name The event name * @param string $fileName The file name * @param string|null $checksum The checksum * @param string $url The processed url * @param PackageInterface $package The package. */ public function __construct($name, $fileName, $checksum, $url, PackageInterface $package) { parent::__construct($name); $this->fileName = $fileName; $this->checksum = $checksum; $this->url = $url; $this->package = $package; } /** * Retrieves the target file name location. * * @return string */ public function getFileName() { return $this->fileName; } /** * Gets the checksum. * * @return string|null */ public function getChecksum() { return $this->checksum; } /** * Gets the processed URL. * * @return string */ public function getUrl() { return $this->url; } /** * Get the package. * * @return \Composer\Package\PackageInterface The package. */ public function getPackage() { return $this->package; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; /** * The Plugin Events. * * @author Nils Adermann */ class PluginEvents { /** * The INIT event occurs after a Composer instance is done being initialized * * The event listener method receives a * Composer\EventDispatcher\Event instance. * * @var string */ const INIT = 'init'; /** * The COMMAND event occurs as a command begins * * The event listener method receives a * Composer\Plugin\CommandEvent instance. * * @var string */ const COMMAND = 'command'; /** * The PRE_FILE_DOWNLOAD event occurs before downloading a file * * The event listener method receives a * Composer\Plugin\PreFileDownloadEvent instance. * * @var string */ const PRE_FILE_DOWNLOAD = 'pre-file-download'; /** * The POST_FILE_DOWNLOAD event occurs after downloading a package dist file * * The event listener method receives a * Composer\Plugin\PostFileDownloadEvent instance. * * @var string */ const POST_FILE_DOWNLOAD = 'post-file-download'; /** * The PRE_COMMAND_RUN event occurs before a command is executed and lets you modify the input arguments/options * * The event listener method receives a * Composer\Plugin\PreCommandRunEvent instance. * * @var string */ const PRE_COMMAND_RUN = 'pre-command-run'; /** * The PRE_POOL_CREATE event occurs before the Pool of packages is created, and lets * you filter the list of packages which is going to enter the Solver * * The event listener method receives a * Composer\Plugin\PrePoolCreateEvent instance. * * @var string */ const PRE_POOL_CREATE = 'pre-pool-create'; } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\EventDispatcher\Event; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * An event for all commands. * * @author Nils Adermann */ class CommandEvent extends Event { /** * @var string */ private $commandName; /** * @var InputInterface */ private $input; /** * @var OutputInterface */ private $output; /** * Constructor. * * @param string $name The event name * @param string $commandName The command name * @param InputInterface $input * @param OutputInterface $output * @param array $args Arguments passed by the user * @param array $flags Optional flags to pass data not as argument */ public function __construct($name, $commandName, $input, $output, array $args = array(), array $flags = array()) { parent::__construct($name, $args, $flags); $this->commandName = $commandName; $this->input = $input; $this->output = $output; } /** * Returns the command input interface * * @return InputInterface */ public function getInput() { return $this->input; } /** * Retrieves the command output interface * * @return OutputInterface */ public function getOutput() { return $this->output; } /** * Retrieves the name of the command being run * * @return string */ public function getCommandName() { return $this->commandName; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin\Capability; /** * Marker interface for Plugin capabilities. * Every new Capability which is added to the Plugin API must implement this interface. * * @api */ interface Capability { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin\Capability; /** * Commands Provider Interface * * This capability will receive an array with 'composer' and 'io' keys as * constructor argument. Those contain Composer\Composer and Composer\IO\IOInterface * instances. It also contains a 'plugin' key containing the plugin instance that * created the capability. * * @author Jérémy Derussé */ interface CommandProvider extends Capability { /** * Retrieves an array of commands * * @return \Composer\Command\BaseCommand[] */ public function getCommands(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; /** * Plugins which need to expose various implementations * of the Composer Plugin Capabilities must have their * declared Plugin class implementing this interface. * * @api */ interface Capable { /** * Method by which a Plugin announces its API implementations, through an array * with a special structure. * * The key must be a string, representing a fully qualified class/interface name * which Composer Plugin API exposes. * The value must be a string as well, representing the fully qualified class name * of the implementing class. * * @tutorial * * return array( * 'Composer\Plugin\Capability\CommandProvider' => 'My\CommandProvider', * 'Composer\Plugin\Capability\Validator' => 'My\Validator', * ); * * @return string[] */ public function getCapabilities(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\EventDispatcher\Event; use Symfony\Component\Console\Input\InputInterface; /** * The pre command run event. * * @author Jordi Boggiano */ class PreCommandRunEvent extends Event { /** * @var InputInterface */ private $input; /** * @var string */ private $command; /** * Constructor. * * @param string $name The event name * @param InputInterface $input * @param string $command The command about to be executed */ public function __construct($name, InputInterface $input, $command) { parent::__construct($name); $this->input = $input; $this->command = $command; } /** * Returns the console input * * @return InputInterface */ public function getInput() { return $this->input; } /** * Returns the command about to be executed * * @return string */ public function getCommand() { return $this->command; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Plugin; use Composer\Composer; use Composer\EventDispatcher\EventSubscriberInterface; use Composer\IO\IOInterface; use Composer\Package\CompletePackage; use Composer\Package\Package; use Composer\Package\RootPackage; use Composer\Package\Version\VersionParser; use Composer\Repository\RepositoryInterface; use Composer\Repository\InstalledRepository; use Composer\Repository\RootPackageRepository; use Composer\Package\PackageInterface; use Composer\Package\RootPackageInterface; use Composer\Package\Link; use Composer\Semver\Constraint\Constraint; use Composer\Plugin\Capability\Capability; use Composer\Util\PackageSorter; /** * Plugin manager * * @author Nils Adermann * @author Jordi Boggiano */ class PluginManager { /** @var Composer */ protected $composer; /** @var IOInterface */ protected $io; /** @var Composer */ protected $globalComposer; /** @var VersionParser */ protected $versionParser; /** @var bool */ protected $disablePlugins = false; /** @var array */ protected $plugins = array(); /** @var array */ protected $registeredPlugins = array(); /** @var int */ private static $classCounter = 0; /** * Initializes plugin manager * * @param IOInterface $io * @param Composer $composer * @param Composer $globalComposer * @param bool $disablePlugins */ public function __construct(IOInterface $io, Composer $composer, Composer $globalComposer = null, $disablePlugins = false) { $this->io = $io; $this->composer = $composer; $this->globalComposer = $globalComposer; $this->versionParser = new VersionParser(); $this->disablePlugins = $disablePlugins; } /** * Loads all plugins from currently installed plugin packages */ public function loadInstalledPlugins() { if ($this->disablePlugins) { return; } $repo = $this->composer->getRepositoryManager()->getLocalRepository(); $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; if ($repo) { $this->loadRepository($repo, false); } if ($globalRepo) { $this->loadRepository($globalRepo, true); } } /** * Gets all currently active plugin instances * * @return array plugins */ public function getPlugins() { return $this->plugins; } /** * Gets global composer or null when main composer is not fully loaded * * @return Composer|null */ public function getGlobalComposer() { return $this->globalComposer; } /** * Register a plugin package, activate it etc. * * If it's of type composer-installer it is registered as an installer * instead for BC * * @param PackageInterface $package * @param bool $failOnMissingClasses By default this silently skips plugins that can not be found, but if set to true it fails with an exception * @param bool $isGlobalPlugin Set to true to denote plugins which are installed in the global Composer directory * * @throws \UnexpectedValueException */ public function registerPackage(PackageInterface $package, $failOnMissingClasses = false, $isGlobalPlugin = false) { if ($this->disablePlugins) { return; } if ($package->getType() === 'composer-plugin') { $requiresComposer = null; foreach ($package->getRequires() as $link) { /** @var Link $link */ if ('composer-plugin-api' === $link->getTarget()) { $requiresComposer = $link->getConstraint(); break; } } if (!$requiresComposer) { throw new \RuntimeException("Plugin ".$package->getName()." is missing a require statement for a version of the composer-plugin-api package."); } $currentPluginApiVersion = $this->getPluginApiVersion(); $currentPluginApiConstraint = new Constraint('==', $this->versionParser->normalize($currentPluginApiVersion)); if ($requiresComposer->getPrettyString() === $this->getPluginApiVersion()) { $this->io->writeError('The "' . $package->getName() . '" plugin requires composer-plugin-api '.$this->getPluginApiVersion().', this *WILL* break in the future and it should be fixed ASAP (require ^'.$this->getPluginApiVersion().' instead for example).'); } elseif (!$requiresComposer->matches($currentPluginApiConstraint)) { $this->io->writeError('The "' . $package->getName() . '" plugin '.($isGlobalPlugin ? '(installed globally) ' : '').'was skipped because it requires a Plugin API version ("' . $requiresComposer->getPrettyString() . '") that does not match your Composer installation ("' . $currentPluginApiVersion . '"). You may need to run composer update with the "--no-plugins" option.'); return; } if ($package->getName() === 'symfony/flex' && preg_match('{^[0-9.]+$}', $package->getVersion()) && version_compare($package->getVersion(), '1.9.8', '<')) { $this->io->writeError('The "' . $package->getName() . '" plugin '.($isGlobalPlugin ? '(installed globally) ' : '').'was skipped because it is not compatible with Composer 2+. Make sure to update it to version 1.9.8 or greater.'); return; } } $oldInstallerPlugin = ($package->getType() === 'composer-installer'); if (isset($this->registeredPlugins[$package->getName()])) { return; } $extra = $package->getExtra(); if (empty($extra['class'])) { throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); } $classes = is_array($extra['class']) ? $extra['class'] : array($extra['class']); $localRepo = $this->composer->getRepositoryManager()->getLocalRepository(); $globalRepo = $this->globalComposer ? $this->globalComposer->getRepositoryManager()->getLocalRepository() : null; $rootPackage = clone $this->composer->getPackage(); $rootPackageRepo = new RootPackageRepository($rootPackage); $installedRepo = new InstalledRepository(array($localRepo, $rootPackageRepo)); if ($globalRepo) { $installedRepo->addRepository($globalRepo); } $autoloadPackages = array($package->getName() => $package); $autoloadPackages = $this->collectDependencies($installedRepo, $autoloadPackages, $package); $generator = $this->composer->getAutoloadGenerator(); $autoloads = array(array($rootPackage, '')); foreach ($autoloadPackages as $autoloadPackage) { if ($autoloadPackage === $rootPackage) { continue; } $downloadPath = $this->getInstallPath($autoloadPackage, $globalRepo && $globalRepo->hasPackage($autoloadPackage)); $autoloads[] = array($autoloadPackage, $downloadPath); } $map = $generator->parseAutoloads($autoloads, $rootPackage); $classLoader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); $classLoader->register(false); foreach ($classes as $class) { if (class_exists($class, false)) { $class = trim($class, '\\'); $path = $classLoader->findFile($class); $code = file_get_contents($path); $separatorPos = strrpos($class, '\\'); $className = $class; if ($separatorPos) { $className = substr($class, $separatorPos + 1); } $code = preg_replace('{^((?:final\s+)?(?:\s*))class\s+('.preg_quote($className).')}mi', '$1class $2_composer_tmp'.self::$classCounter, $code, 1); $code = strtr($code, array( '__FILE__' => var_export($path, true), '__DIR__' => var_export(dirname($path), true), '__CLASS__' => var_export($class, true), )); $code = preg_replace('/^\s*<\?(php)?/i', '', $code, 1); eval($code); $class .= '_composer_tmp'.self::$classCounter; self::$classCounter++; } if ($oldInstallerPlugin) { $this->io->writeError('Loading "'.$package->getName() . '" '.($isGlobalPlugin ? '(installed globally) ' : '').'which is a legacy composer-installer built for Composer 1.x, it is likely to cause issues as you are running Composer 2.x.'); $installer = new $class($this->io, $this->composer); $this->composer->getInstallationManager()->addInstaller($installer); $this->registeredPlugins[$package->getName()] = $installer; } elseif (class_exists($class)) { $plugin = new $class(); $this->addPlugin($plugin, $isGlobalPlugin, $package); $this->registeredPlugins[$package->getName()] = $plugin; } elseif ($failOnMissingClasses) { throw new \UnexpectedValueException('Plugin '.$package->getName().' could not be initialized, class not found: '.$class); } } } /** * Deactivates a plugin package * * If it's of type composer-installer it is unregistered from the installers * instead for BC * * @param PackageInterface $package * * @throws \UnexpectedValueException */ public function deactivatePackage(PackageInterface $package) { if ($this->disablePlugins) { return; } $oldInstallerPlugin = ($package->getType() === 'composer-installer'); if (!isset($this->registeredPlugins[$package->getName()])) { return; } if ($oldInstallerPlugin) { $installer = $this->registeredPlugins[$package->getName()]; unset($this->registeredPlugins[$package->getName()]); $this->composer->getInstallationManager()->removeInstaller($installer); } else { $plugin = $this->registeredPlugins[$package->getName()]; unset($this->registeredPlugins[$package->getName()]); $this->removePlugin($plugin); } } /** * Uninstall a plugin package * * If it's of type composer-installer it is unregistered from the installers * instead for BC * * @param PackageInterface $package * * @throws \UnexpectedValueException */ public function uninstallPackage(PackageInterface $package) { if ($this->disablePlugins) { return; } $oldInstallerPlugin = ($package->getType() === 'composer-installer'); if (!isset($this->registeredPlugins[$package->getName()])) { return; } if ($oldInstallerPlugin) { $this->deactivatePackage($package); } else { $plugin = $this->registeredPlugins[$package->getName()]; unset($this->registeredPlugins[$package->getName()]); $this->removePlugin($plugin); $this->uninstallPlugin($plugin); } } /** * Returns the version of the internal composer-plugin-api package. * * @return string */ protected function getPluginApiVersion() { return PluginInterface::PLUGIN_API_VERSION; } /** * Adds a plugin, activates it and registers it with the event dispatcher * * Ideally plugin packages should be registered via registerPackage, but if you use Composer * programmatically and want to register a plugin class directly this is a valid way * to do it. * * @param PluginInterface $plugin plugin instance * @param ?PackageInterface $sourcePackage Package from which the plugin comes from */ public function addPlugin(PluginInterface $plugin, $isGlobalPlugin = false, PackageInterface $sourcePackage = null) { $details = array(); if ($sourcePackage) { $details[] = 'from '.$sourcePackage->getName(); } if ($isGlobalPlugin) { $details[] = 'installed globally'; } $this->io->writeError('Loading plugin '.get_class($plugin).($details ? ' ('.implode(', ', $details).')' : ''), true, IOInterface::DEBUG); $this->plugins[] = $plugin; $plugin->activate($this->composer, $this->io); if ($plugin instanceof EventSubscriberInterface) { $this->composer->getEventDispatcher()->addSubscriber($plugin); } } /** * Removes a plugin, deactivates it and removes any listener the plugin has set on the plugin instance * * Ideally plugin packages should be deactivated via deactivatePackage, but if you use Composer * programmatically and want to deregister a plugin class directly this is a valid way * to do it. * * @param PluginInterface $plugin plugin instance */ public function removePlugin(PluginInterface $plugin) { $index = array_search($plugin, $this->plugins, true); if ($index === false) { return; } $this->io->writeError('Unloading plugin '.get_class($plugin), true, IOInterface::DEBUG); unset($this->plugins[$index]); $plugin->deactivate($this->composer, $this->io); $this->composer->getEventDispatcher()->removeListener($plugin); } /** * Notifies a plugin it is being uninstalled and should clean up * * Ideally plugin packages should be uninstalled via uninstallPackage, but if you use Composer * programmatically and want to deregister a plugin class directly this is a valid way * to do it. * * @param PluginInterface $plugin plugin instance */ public function uninstallPlugin(PluginInterface $plugin) { $this->io->writeError('Uninstalling plugin '.get_class($plugin), true, IOInterface::DEBUG); $plugin->uninstall($this->composer, $this->io); } /** * Load all plugins and installers from a repository * * If a plugin requires another plugin, the required one will be loaded first * * Note that plugins in the specified repository that rely on events that * have fired prior to loading will be missed. This means you likely want to * call this method as early as possible. * * @param RepositoryInterface $repo Repository to scan for plugins to install * * @throws \RuntimeException */ private function loadRepository(RepositoryInterface $repo, $isGlobalRepo) { $packages = $repo->getPackages(); $sortedPackages = PackageSorter::sortPackages($packages); foreach ($sortedPackages as $package) { if (!($package instanceof CompletePackage)) { continue; } if ('composer-plugin' === $package->getType()) { $this->registerPackage($package, false, $isGlobalRepo); // Backward compatibility } elseif ('composer-installer' === $package->getType()) { $this->registerPackage($package, false, $isGlobalRepo); } } } /** * Recursively generates a map of package names to packages for all deps * * @param InstalledRepository $installedRepo Set of local repos * @param array $collected Current state of the map for recursion * @param PackageInterface $package The package to analyze * * @return array Map of package names to packages */ private function collectDependencies(InstalledRepository $installedRepo, array $collected, PackageInterface $package) { foreach ($package->getRequires() as $requireLink) { foreach ($installedRepo->findPackagesWithReplacersAndProviders($requireLink->getTarget()) as $requiredPackage) { if (!isset($collected[$requiredPackage->getName()])) { $collected[$requiredPackage->getName()] = $requiredPackage; $collected = $this->collectDependencies($installedRepo, $collected, $requiredPackage); } } } return $collected; } /** * Retrieves the path a package is installed to. * * @param PackageInterface $package * @param bool $global Whether this is a global package * * @return string Install path */ private function getInstallPath(PackageInterface $package, $global = false) { if (!$global) { return $this->composer->getInstallationManager()->getInstallPath($package); } return $this->globalComposer->getInstallationManager()->getInstallPath($package); } /** * @param PluginInterface $plugin * @param string $capability * @throws \RuntimeException On empty or non-string implementation class name value * @return null|string The fully qualified class of the implementation or null if Plugin is not of Capable type or does not provide it */ protected function getCapabilityImplementationClassName(PluginInterface $plugin, $capability) { if (!($plugin instanceof Capable)) { return null; } $capabilities = (array) $plugin->getCapabilities(); if (!empty($capabilities[$capability]) && is_string($capabilities[$capability]) && trim($capabilities[$capability])) { return trim($capabilities[$capability]); } if ( array_key_exists($capability, $capabilities) && (empty($capabilities[$capability]) || !is_string($capabilities[$capability]) || !trim($capabilities[$capability])) ) { throw new \UnexpectedValueException('Plugin '.get_class($plugin).' provided invalid capability class name(s), got '.var_export($capabilities[$capability], 1)); } } /** * @param PluginInterface $plugin * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide * an implementation of. * @param array $ctorArgs Arguments passed to Capability's constructor. * Keeping it an array will allow future values to be passed w\o changing the signature. * @return null|Capability */ public function getPluginCapability(PluginInterface $plugin, $capabilityClassName, array $ctorArgs = array()) { if ($capabilityClass = $this->getCapabilityImplementationClassName($plugin, $capabilityClassName)) { if (!class_exists($capabilityClass)) { throw new \RuntimeException("Cannot instantiate Capability, as class $capabilityClass from plugin ".get_class($plugin)." does not exist."); } $ctorArgs['plugin'] = $plugin; $capabilityObj = new $capabilityClass($ctorArgs); // FIXME these could use is_a and do the check *before* instantiating once drop support for php<5.3.9 if (!$capabilityObj instanceof Capability || !$capabilityObj instanceof $capabilityClassName) { throw new \RuntimeException( 'Class ' . $capabilityClass . ' must implement both Composer\Plugin\Capability\Capability and '. $capabilityClassName . '.' ); } return $capabilityObj; } } /** * @param string $capabilityClassName The fully qualified name of the API interface which the plugin may provide * an implementation of. * @param array $ctorArgs Arguments passed to Capability's constructor. * Keeping it an array will allow future values to be passed w\o changing the signature. * @return Capability[] */ public function getPluginCapabilities($capabilityClassName, array $ctorArgs = array()) { $capabilities = array(); foreach ($this->getPlugins() as $plugin) { if ($capability = $this->getPluginCapability($plugin, $capabilityClassName, $ctorArgs)) { $capabilities[] = $capability; } } return $capabilities; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\EventDispatcher; /** * An EventSubscriber knows which events it is interested in. * * If an EventSubscriber is added to an EventDispatcher, the manager invokes * {@link getSubscribedEvents} and registers the subscriber as a listener for all * returned events. * * @author Guilherme Blanco * @author Jonathan Wage * @author Roman Borschel * @author Bernhard Schussek */ interface EventSubscriberInterface { /** * Returns an array of event names this subscriber wants to listen to. * * The array keys are event names and the value can be: * * * The method name to call (priority defaults to 0) * * An array composed of the method name to call and the priority * * An array of arrays composed of the method names to call and respective * priorities, or 0 if unset * * For instance: * * * array('eventName' => 'methodName') * * array('eventName' => array('methodName', $priority)) * * array('eventName' => array(array('methodName1', $priority), array('methodName2')) * * @return array The event names to listen to */ public static function getSubscribedEvents(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\EventDispatcher; /** * @author Jordi Boggiano */ class ScriptExecutionException extends \RuntimeException { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\EventDispatcher; /** * The base event class * * @author Nils Adermann */ class Event { /** * @var string This event's name */ protected $name; /** * @var array Arguments passed by the user, these will be forwarded to CLI script handlers */ protected $args; /** * @var array Flags usable in PHP script handlers */ protected $flags; /** * @var bool Whether the event should not be passed to more listeners */ private $propagationStopped = false; /** * Constructor. * * @param string $name The event name * @param array $args Arguments passed by the user * @param array $flags Optional flags to pass data not as argument */ public function __construct($name, array $args = array(), array $flags = array()) { $this->name = $name; $this->args = $args; $this->flags = $flags; } /** * Returns the event's name. * * @return string The event name */ public function getName() { return $this->name; } /** * Returns the event's arguments. * * @return array The event arguments */ public function getArguments() { return $this->args; } /** * Returns the event's flags. * * @return array The event flags */ public function getFlags() { return $this->flags; } /** * Checks if stopPropagation has been called * * @return bool Whether propagation has been stopped */ public function isPropagationStopped() { return $this->propagationStopped; } /** * Prevents the event from being passed to further listeners */ public function stopPropagation() { $this->propagationStopped = true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\EventDispatcher; use Composer\DependencyResolver\Transaction; use Composer\Installer\InstallerEvent; use Composer\IO\IOInterface; use Composer\Composer; use Composer\Util\Platform; use Composer\DependencyResolver\Operation\OperationInterface; use Composer\Repository\RepositoryInterface; use Composer\Script; use Composer\Installer\PackageEvent; use Composer\Installer\BinaryInstaller; use Composer\Util\ProcessExecutor; use Composer\Script\Event as ScriptEvent; use Composer\ClassLoader; use Symfony\Component\Process\PhpExecutableFinder; /** * The Event Dispatcher. * * Example in command: * $dispatcher = new EventDispatcher($this->getComposer(), $this->getApplication()->getIO()); * // ... * $dispatcher->dispatch(ScriptEvents::POST_INSTALL_CMD); * // ... * * @author François Pluchino * @author Jordi Boggiano * @author Nils Adermann */ class EventDispatcher { /** @var Composer */ protected $composer; /** @var IOInterface */ protected $io; /** @var ?ClassLoader */ protected $loader; /** @var ProcessExecutor */ protected $process; /** @var array>> */ protected $listeners = array(); /** @var list */ private $eventStack; /** * Constructor. * * @param Composer $composer The composer instance * @param IOInterface $io The IOInterface instance * @param ProcessExecutor $process */ public function __construct(Composer $composer, IOInterface $io, ProcessExecutor $process = null) { $this->composer = $composer; $this->io = $io; $this->process = $process ?: new ProcessExecutor($io); $this->eventStack = array(); } /** * Dispatch an event * * @param string $eventName An event name * @param Event $event * @return int return code of the executed script if any, for php scripts a false return * value is changed to 1, anything else to 0 */ public function dispatch($eventName, Event $event = null) { if (null === $event) { $event = new Event($eventName); } return $this->doDispatch($event); } /** * Dispatch a script event. * * @param string $eventName The constant in ScriptEvents * @param bool $devMode * @param array $additionalArgs Arguments passed by the user * @param array $flags Optional flags to pass data not as argument * @return int return code of the executed script if any, for php scripts a false return * value is changed to 1, anything else to 0 */ public function dispatchScript($eventName, $devMode = false, $additionalArgs = array(), $flags = array()) { return $this->doDispatch(new Script\Event($eventName, $this->composer, $this->io, $devMode, $additionalArgs, $flags)); } /** * Dispatch a package event. * * @param string $eventName The constant in PackageEvents * @param bool $devMode Whether or not we are in dev mode * @param RepositoryInterface $localRepo The installed repository * @param array $operations The list of operations * @param OperationInterface $operation The package being installed/updated/removed * * @return int return code of the executed script if any, for php scripts a false return * value is changed to 1, anything else to 0 */ public function dispatchPackageEvent($eventName, $devMode, RepositoryInterface $localRepo, array $operations, OperationInterface $operation) { return $this->doDispatch(new PackageEvent($eventName, $this->composer, $this->io, $devMode, $localRepo, $operations, $operation)); } /** * Dispatch a installer event. * * @param string $eventName The constant in InstallerEvents * @param bool $devMode Whether or not we are in dev mode * @param bool $executeOperations True if operations will be executed, false in --dry-run * @param Transaction $transaction The transaction contains the list of operations * * @return int return code of the executed script if any, for php scripts a false return * value is changed to 1, anything else to 0 */ public function dispatchInstallerEvent($eventName, $devMode, $executeOperations, Transaction $transaction) { return $this->doDispatch(new InstallerEvent($eventName, $this->composer, $this->io, $devMode, $executeOperations, $transaction)); } /** * Triggers the listeners of an event. * * @param Event $event The event object to pass to the event handlers/listeners. * @throws \RuntimeException|\Exception * @return int return code of the executed script if any, for php scripts a false return * value is changed to 1, anything else to 0 */ protected function doDispatch(Event $event) { if (getenv('COMPOSER_DEBUG_EVENTS')) { $details = null; if ($event instanceof PackageEvent) { $details = (string) $event->getOperation(); } $this->io->writeError('Dispatching '.$event->getName().''.($details ? ' ('.$details.')' : '').' event'); } $listeners = $this->getListeners($event); $this->pushEvent($event); $returnMax = 0; foreach ($listeners as $callable) { $return = 0; $this->ensureBinDirIsInPath(); if (!is_string($callable)) { if (!is_callable($callable)) { $className = is_object($callable[0]) ? get_class($callable[0]) : $callable[0]; throw new \RuntimeException('Subscriber '.$className.'::'.$callable[1].' for event '.$event->getName().' is not callable, make sure the function is defined and public'); } if (is_array($callable) && (is_string($callable[0]) || is_object($callable[0])) && is_string($callable[1])) { $this->io->writeError(sprintf('> %s: %s', $event->getName(), (is_object($callable[0]) ? get_class($callable[0]) : $callable[0]).'->'.$callable[1]), true, IOInterface::VERBOSE); } $return = false === call_user_func($callable, $event) ? 1 : 0; } elseif ($this->isComposerScript($callable)) { $this->io->writeError(sprintf('> %s: %s', $event->getName(), $callable), true, IOInterface::VERBOSE); $script = explode(' ', substr($callable, 1)); $scriptName = $script[0]; unset($script[0]); $args = array_merge($script, $event->getArguments()); $flags = $event->getFlags(); if (strpos($callable, '@composer ') === 0) { $exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(getenv('COMPOSER_BINARY')) . ' ' . implode(' ', $args); if (0 !== ($exitCode = $this->executeTty($exec))) { $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); } } else { if (!$this->getListeners(new Event($scriptName))) { $this->io->writeError(sprintf('You made a reference to a non-existent script %s', $callable), true, IOInterface::QUIET); } try { /** @var InstallerEvent $event */ $scriptEvent = new Script\Event($scriptName, $event->getComposer(), $event->getIO(), $event->isDevMode(), $args, $flags); $scriptEvent->setOriginatingEvent($event); $return = $this->dispatch($scriptName, $scriptEvent); } catch (ScriptExecutionException $e) { $this->io->writeError(sprintf('Script %s was called via %s', $callable, $event->getName()), true, IOInterface::QUIET); throw $e; } } } elseif ($this->isPhpScript($callable)) { $className = substr($callable, 0, strpos($callable, '::')); $methodName = substr($callable, strpos($callable, '::') + 2); if (!class_exists($className)) { $this->io->writeError('Class '.$className.' is not autoloadable, can not call '.$event->getName().' script', true, IOInterface::QUIET); continue; } if (!is_callable($callable)) { $this->io->writeError('Method '.$callable.' is not callable, can not call '.$event->getName().' script', true, IOInterface::QUIET); continue; } try { $return = false === $this->executeEventPhpScript($className, $methodName, $event) ? 1 : 0; } catch (\Exception $e) { $message = "Script %s handling the %s event terminated with an exception"; $this->io->writeError(''.sprintf($message, $callable, $event->getName()).'', true, IOInterface::QUIET); throw $e; } } else { $args = implode(' ', array_map(array('Composer\Util\ProcessExecutor', 'escape'), $event->getArguments())); $exec = $callable . ($args === '' ? '' : ' '.$args); if ($this->io->isVerbose()) { $this->io->writeError(sprintf('> %s: %s', $event->getName(), $exec)); } elseif ($event->getName() !== '__exec_command') { // do not output the command being run when using `composer exec` as it is fairly obvious the user is running it $this->io->writeError(sprintf('> %s', $exec)); } $possibleLocalBinaries = $this->composer->getPackage()->getBinaries(); if ($possibleLocalBinaries) { foreach ($possibleLocalBinaries as $localExec) { if (preg_match('{\b'.preg_quote($callable).'$}', $localExec)) { $caller = BinaryInstaller::determineBinaryCaller($localExec); $exec = preg_replace('{^'.preg_quote($callable).'}', $caller . ' ' . $localExec, $exec); break; } } } if (strpos($exec, '@putenv ') === 0) { putenv(substr($exec, 8)); list($var, $value) = explode('=', substr($exec, 8), 2); $_SERVER[$var] = $value; continue; } if (strpos($exec, '@php ') === 0) { $pathAndArgs = substr($exec, 5); if (Platform::isWindows()) { $pathAndArgs = preg_replace_callback('{^\S+}', function ($path) { return str_replace('/', '\\', $path[0]); }, $pathAndArgs); } $exec = $this->getPhpExecCommand() . ' ' . $pathAndArgs; } else { $finder = new PhpExecutableFinder(); $phpPath = $finder->find(false); if ($phpPath) { $_SERVER['PHP_BINARY'] = $phpPath; putenv('PHP_BINARY=' . $_SERVER['PHP_BINARY']); } if (Platform::isWindows()) { $exec = preg_replace_callback('{^\S+}', function ($path) { return str_replace('/', '\\', $path[0]); }, $exec); } } // if composer is being executed, make sure it runs the expected composer from current path // resolution, even if bin-dir contains composer too because the project requires composer/composer // see https://github.com/composer/composer/issues/8748 if (strpos($exec, 'composer ') === 0) { $exec = $this->getPhpExecCommand() . ' ' . ProcessExecutor::escape(getenv('COMPOSER_BINARY')) . substr($exec, 8); } if (0 !== ($exitCode = $this->executeTty($exec))) { $this->io->writeError(sprintf('Script %s handling the %s event returned with error code '.$exitCode.'', $callable, $event->getName()), true, IOInterface::QUIET); throw new ScriptExecutionException('Error Output: '.$this->process->getErrorOutput(), $exitCode); } } $returnMax = max($returnMax, $return); if ($event->isPropagationStopped()) { break; } } $this->popEvent(); return $returnMax; } protected function executeTty($exec) { if ($this->io->isInteractive()) { return $this->process->executeTty($exec); } return $this->process->execute($exec); } protected function getPhpExecCommand() { $finder = new PhpExecutableFinder(); $phpPath = $finder->find(false); if (!$phpPath) { throw new \RuntimeException('Failed to locate PHP binary to execute '.$phpPath); } $phpArgs = $finder->findArguments(); $phpArgs = $phpArgs ? ' ' . implode(' ', $phpArgs) : ''; $allowUrlFOpenFlag = ' -d allow_url_fopen=' . ProcessExecutor::escape(ini_get('allow_url_fopen')); $disableFunctionsFlag = ' -d disable_functions=' . ProcessExecutor::escape(ini_get('disable_functions')); $memoryLimitFlag = ' -d memory_limit=' . ProcessExecutor::escape(ini_get('memory_limit')); return ProcessExecutor::escape($phpPath) . $phpArgs . $allowUrlFOpenFlag . $disableFunctionsFlag . $memoryLimitFlag; } /** * @param string $className * @param string $methodName * @param Event $event Event invoking the PHP callable */ protected function executeEventPhpScript($className, $methodName, Event $event) { if ($this->io->isVerbose()) { $this->io->writeError(sprintf('> %s: %s::%s', $event->getName(), $className, $methodName)); } else { $this->io->writeError(sprintf('> %s::%s', $className, $methodName)); } return $className::$methodName($event); } /** * Add a listener for a particular event * * @param string $eventName The event name - typically a constant * @param callable $listener A callable expecting an event argument * @param int $priority A higher value represents a higher priority */ public function addListener($eventName, $listener, $priority = 0) { $this->listeners[$eventName][$priority][] = $listener; } /** * @param callable|object $listener A callable or an object instance for which all listeners should be removed */ public function removeListener($listener) { foreach ($this->listeners as $eventName => $priorities) { foreach ($priorities as $priority => $listeners) { foreach ($listeners as $index => $candidate) { if ($listener === $candidate || (is_array($candidate) && is_object($listener) && $candidate[0] === $listener)) { unset($this->listeners[$eventName][$priority][$index]); } } } } } /** * Adds object methods as listeners for the events in getSubscribedEvents * * @see EventSubscriberInterface * * @param EventSubscriberInterface $subscriber */ public function addSubscriber(EventSubscriberInterface $subscriber) { foreach ($subscriber->getSubscribedEvents() as $eventName => $params) { if (is_string($params)) { $this->addListener($eventName, array($subscriber, $params)); } elseif (is_string($params[0])) { $this->addListener($eventName, array($subscriber, $params[0]), isset($params[1]) ? $params[1] : 0); } else { foreach ($params as $listener) { $this->addListener($eventName, array($subscriber, $listener[0]), isset($listener[1]) ? $listener[1] : 0); } } } } /** * Retrieves all listeners for a given event * * @param Event $event * @return array All listeners: callables and scripts */ protected function getListeners(Event $event) { $scriptListeners = $this->getScriptListeners($event); if (!isset($this->listeners[$event->getName()][0])) { $this->listeners[$event->getName()][0] = array(); } krsort($this->listeners[$event->getName()]); $listeners = $this->listeners; $listeners[$event->getName()][0] = array_merge($listeners[$event->getName()][0], $scriptListeners); return call_user_func_array('array_merge', $listeners[$event->getName()]); } /** * Checks if an event has listeners registered * * @param Event $event * @return bool */ public function hasEventListeners(Event $event) { $listeners = $this->getListeners($event); return count($listeners) > 0; } /** * Finds all listeners defined as scripts in the package * * @param Event $event Event object * @return array Listeners */ protected function getScriptListeners(Event $event) { $package = $this->composer->getPackage(); $scripts = $package->getScripts(); if (empty($scripts[$event->getName()])) { return array(); } if ($this->loader) { $this->loader->unregister(); } $generator = $this->composer->getAutoloadGenerator(); if ($event instanceof ScriptEvent) { $generator->setDevMode($event->isDevMode()); } $packages = $this->composer->getRepositoryManager()->getLocalRepository()->getCanonicalPackages(); $packageMap = $generator->buildPackageMap($this->composer->getInstallationManager(), $package, $packages); $map = $generator->parseAutoloads($packageMap, $package); $this->loader = $generator->createLoader($map, $this->composer->getConfig()->get('vendor-dir')); $this->loader->register(false); return $scripts[$event->getName()]; } /** * Checks if string given references a class path and method * * @param string $callable * @return bool */ protected function isPhpScript($callable) { return false === strpos($callable, ' ') && false !== strpos($callable, '::'); } /** * Checks if string given references a composer run-script * * @param string $callable * @return bool */ protected function isComposerScript($callable) { return strpos($callable, '@') === 0 && strpos($callable, '@php ') !== 0 && strpos($callable, '@putenv ') !== 0; } /** * Push an event to the stack of active event * * @param Event $event * @throws \RuntimeException * @return int */ protected function pushEvent(Event $event) { $eventName = $event->getName(); if (in_array($eventName, $this->eventStack)) { throw new \RuntimeException(sprintf("Circular call to script handler '%s' detected", $eventName)); } return array_push($this->eventStack, $eventName); } /** * Pops the active event from the stack * * @return mixed */ protected function popEvent() { return array_pop($this->eventStack); } private function ensureBinDirIsInPath() { $pathStr = 'PATH'; if (!isset($_SERVER[$pathStr]) && isset($_SERVER['Path'])) { $pathStr = 'Path'; } // add the bin dir to the PATH to make local binaries of deps usable in scripts $binDir = $this->composer->getConfig()->get('bin-dir'); if (is_dir($binDir)) { $binDir = realpath($binDir); if (isset($_SERVER[$pathStr]) && !preg_match('{(^|'.PATH_SEPARATOR.')'.preg_quote($binDir).'($|'.PATH_SEPARATOR.')}', $_SERVER[$pathStr])) { $_SERVER[$pathStr] = $binDir.PATH_SEPARATOR.getenv($pathStr); putenv($pathStr.'='.$_SERVER[$pathStr]); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Json\JsonFile; use Composer\CaBundle\CaBundle; use Symfony\Component\Finder\Finder; use Symfony\Component\Process\Process; use Seld\PharUtils\Timestamps; use Seld\PharUtils\Linter; /** * The Compiler class compiles composer into a phar * * @author Fabien Potencier * @author Jordi Boggiano */ class Compiler { private $version; private $branchAliasVersion = ''; private $versionDate; /** * Compiles composer into a single phar file * * @param string $pharFile The full path to the file to create * @throws \RuntimeException */ public function compile($pharFile = 'composer.phar') { if (file_exists($pharFile)) { unlink($pharFile); } $process = new Process('git log --pretty="%H" -n1 HEAD', __DIR__); if ($process->run() != 0) { throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); } $this->version = trim($process->getOutput()); $process = new Process('git log -n1 --pretty=%ci HEAD', __DIR__); if ($process->run() != 0) { throw new \RuntimeException('Can\'t run git log. You must ensure to run compile from composer git repository clone and that git binary is available.'); } $this->versionDate = new \DateTime(trim($process->getOutput())); $this->versionDate->setTimezone(new \DateTimeZone('UTC')); $process = new Process('git describe --tags --exact-match HEAD'); if ($process->run() == 0) { $this->version = trim($process->getOutput()); } else { // get branch-alias defined in composer.json for dev-master (if any) $localConfig = __DIR__.'/../../composer.json'; $file = new JsonFile($localConfig); $localConfig = $file->read(); if (isset($localConfig['extra']['branch-alias']['dev-master'])) { $this->branchAliasVersion = $localConfig['extra']['branch-alias']['dev-master']; } } $phar = new \Phar($pharFile, 0, 'composer.phar'); $phar->setSignatureAlgorithm(\Phar::SHA1); $phar->startBuffering(); $finderSort = function ($a, $b) { return strcmp(strtr($a->getRealPath(), '\\', '/'), strtr($b->getRealPath(), '\\', '/')); }; // Add Composer sources $finder = new Finder(); $finder->files() ->ignoreVCS(true) ->name('*.php') ->notName('Compiler.php') ->notName('ClassLoader.php') ->in(__DIR__.'/..') ->sort($finderSort) ; foreach ($finder as $file) { $this->addFile($phar, $file); } // Add ClassLoader separately to make sure it retains the docblocks as it will get copied into projects $this->addFile($phar, new \SplFileInfo(__DIR__ . '/Autoload/ClassLoader.php'), false); // Add Composer resources $finder = new Finder(); $finder->files() ->in(__DIR__.'/../../res') ->sort($finderSort) ; foreach ($finder as $file) { $this->addFile($phar, $file, false); } // Add vendor files $finder = new Finder(); $finder->files() ->ignoreVCS(true) ->notPath('/\/(composer\.(json|lock)|[A-Z]+\.md|\.gitignore|appveyor.yml|phpunit\.xml\.dist|phpstan\.neon\.dist|phpstan-config\.neon)$/') ->notPath('/bin\/(jsonlint|validate-json|simple-phpunit)(\.bat)?$/') ->notPath('symfony/debug/Resources/ext/') ->notPath('justinrainbow/json-schema/demo/') ->notPath('justinrainbow/json-schema/dist/') ->notPath('composer/installed.json') ->notPath('composer/LICENSE') ->exclude('Tests') ->exclude('tests') ->exclude('docs') ->in(__DIR__.'/../../vendor/') ->sort($finderSort) ; $extraFiles = array( realpath(__DIR__ . '/../../vendor/composer/spdx-licenses/res/spdx-exceptions.json'), realpath(__DIR__ . '/../../vendor/composer/spdx-licenses/res/spdx-licenses.json'), realpath(CaBundle::getBundledCaBundlePath()), realpath(__DIR__ . '/../../vendor/symfony/console/Resources/bin/hiddeninput.exe'), realpath(__DIR__ . '/../../vendor/symfony/polyfill-mbstring/Resources/mb_convert_variables.php8'), ); $unexpectedFiles = array(); foreach ($finder as $file) { if (in_array(realpath($file), $extraFiles, true)) { unset($extraFiles[array_search(realpath($file), $extraFiles, true)]); } elseif (!preg_match('{(/LICENSE|\.php)$}', $file)) { $unexpectedFiles[] = (string) $file; } if (preg_match('{\.php[\d.]*$}', $file)) { $this->addFile($phar, $file); } else { $this->addFile($phar, $file, false); } } if ($extraFiles) { throw new \RuntimeException('These files were expected but not added to the phar, they might be excluded or gone from the source package:'.PHP_EOL.implode(PHP_EOL, $extraFiles)); } if ($unexpectedFiles) { throw new \RuntimeException('These files were unexpectedly added to the phar, make sure they are excluded or listed in $extraFiles:'.PHP_EOL.implode(PHP_EOL, $unexpectedFiles)); } // Add bin/composer $this->addComposerBin($phar); // Stubs $phar->setStub($this->getStub()); $phar->stopBuffering(); // disabled for interoperability with systems without gzip ext // $phar->compressFiles(\Phar::GZ); $this->addFile($phar, new \SplFileInfo(__DIR__.'/../../LICENSE'), false); unset($phar); // re-sign the phar with reproducible timestamp / signature $util = new Timestamps($pharFile); $util->updateTimestamps($this->versionDate); $util->save($pharFile, \Phar::SHA1); Linter::lint($pharFile); } /** * @param \SplFileInfo $file * @return string */ private function getRelativeFilePath($file) { $realPath = $file->getRealPath(); $pathPrefix = dirname(dirname(__DIR__)).DIRECTORY_SEPARATOR; $pos = strpos($realPath, $pathPrefix); $relativePath = ($pos !== false) ? substr_replace($realPath, '', $pos, strlen($pathPrefix)) : $realPath; return strtr($relativePath, '\\', '/'); } private function addFile($phar, $file, $strip = true) { $path = $this->getRelativeFilePath($file); $content = file_get_contents($file); if ($strip) { $content = $this->stripWhitespace($content); } elseif ('LICENSE' === basename($file)) { $content = "\n".$content."\n"; } if ($path === 'src/Composer/Composer.php') { $content = strtr( $content, array( '@package_version@' => $this->version, '@package_branch_alias_version@' => $this->branchAliasVersion, '@release_date@' => $this->versionDate->format('Y-m-d H:i:s'), ) ); $content = preg_replace('{SOURCE_VERSION = \'[^\']+\';}', 'SOURCE_VERSION = \'\';', $content); } $phar->addFromString($path, $content); } private function addComposerBin($phar) { $content = file_get_contents(__DIR__.'/../../bin/composer'); $content = preg_replace('{^#!/usr/bin/env php\s*}', '', $content); $phar->addFromString('bin/composer', $content); } /** * Removes whitespace from a PHP source string while preserving line numbers. * * @param string $source A PHP string * @return string The PHP string with the whitespace removed */ private function stripWhitespace($source) { if (!function_exists('token_get_all')) { return $source; } $output = ''; foreach (token_get_all($source) as $token) { if (is_string($token)) { $output .= $token; } elseif (in_array($token[0], array(T_COMMENT, T_DOC_COMMENT))) { $output .= str_repeat("\n", substr_count($token[1], "\n")); } elseif (T_WHITESPACE === $token[0]) { // reduce wide spaces $whitespace = preg_replace('{[ \t]+}', ' ', $token[1]); // normalize newlines to \n $whitespace = preg_replace('{(?:\r\n|\r|\n)}', "\n", $whitespace); // trim leading spaces $whitespace = preg_replace('{\n +}', "\n", $whitespace); $output .= $whitespace; } else { $output .= $token[1]; } } return $output; } private function getStub() { $stub = <<<'EOF' #!/usr/bin/env php * Jordi Boggiano * * For the full copyright and license information, please view * the license that is located at the bottom of this file. */ // Avoid APC causing random fatal errors per https://github.com/composer/composer/issues/264 if (extension_loaded('apc') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN) && filter_var(ini_get('apc.cache_by_default'), FILTER_VALIDATE_BOOLEAN)) { if (version_compare(phpversion('apc'), '3.0.12', '>=')) { ini_set('apc.cache_by_default', 0); } else { fwrite(STDERR, 'Warning: APC <= 3.0.12 may cause fatal errors when running composer commands.'.PHP_EOL); fwrite(STDERR, 'Update APC, or set apc.enable_cli or apc.cache_by_default to 0 in your php.ini.'.PHP_EOL); } } Phar::mapPhar('composer.phar'); EOF; // add warning once the phar is older than 60 days if (preg_match('{^[a-f0-9]+$}', $this->version)) { $warningTime = $this->versionDate->format('U') + 60 * 86400; $stub .= "define('COMPOSER_DEV_WARNING_TIME', $warningTime);\n"; } return $stub . <<<'EOF' require 'phar://composer.phar/bin/composer'; __HALT_COMPILER(); EOF; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Autoload; use Composer\Config; use Composer\EventDispatcher\EventDispatcher; use Composer\Installer\InstallationManager; use Composer\IO\IOInterface; use Composer\Package\AliasPackage; use Composer\Package\PackageInterface; use Composer\Package\RootPackageInterface; use Composer\Repository\InstalledRepositoryInterface; use Composer\Repository\PlatformRepository; use Composer\Semver\Constraint\Bound; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Util\Filesystem; use Composer\Script\ScriptEvents; use Composer\Util\PackageSorter; /** * @author Igor Wiedler * @author Jordi Boggiano */ class AutoloadGenerator { /** * @var EventDispatcher */ private $eventDispatcher; /** * @var IOInterface */ private $io; /** * @var bool */ private $devMode = false; /** * @var bool */ private $classMapAuthoritative = false; /** * @var bool */ private $apcu = false; /** * @var string|null */ private $apcuPrefix; /** * @var bool */ private $runScripts = false; /** * @var bool|array */ private $ignorePlatformReqs = false; public function __construct(EventDispatcher $eventDispatcher, IOInterface $io = null) { $this->eventDispatcher = $eventDispatcher; $this->io = $io; } public function setDevMode($devMode = true) { $this->devMode = (bool) $devMode; } /** * Whether or not generated autoloader considers the class map * authoritative. * * @param bool $classMapAuthoritative */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = (bool) $classMapAuthoritative; } /** * Whether or not generated autoloader considers APCu caching. * * @param bool $apcu * @param string|null $apcuPrefix */ public function setApcu($apcu, $apcuPrefix = null) { $this->apcu = (bool) $apcu; $this->apcuPrefix = $apcuPrefix !== null ? (string) $apcuPrefix : $apcuPrefix; } /** * Set whether to run scripts or not * * @param bool $runScripts */ public function setRunScripts($runScripts = true) { $this->runScripts = (bool) $runScripts; } /** * Sets whether platform requirements should be ignored * * If this is set to true, the platform check file will not be generated * If this is set to false, the platform check file will be generated with all requirements * If this is set to string[], those packages will be ignored from the platform check file * * @param array|bool $ignorePlatformReqs */ public function setIgnorePlatformRequirements($ignorePlatformReqs) { if (is_array($ignorePlatformReqs)) { $this->ignorePlatformReqs = array_filter($ignorePlatformReqs, function ($req) { return PlatformRepository::isPlatformPackage($req); }); } else { $this->ignorePlatformReqs = (bool) $ignorePlatformReqs; } } public function dump(Config $config, InstalledRepositoryInterface $localRepo, RootPackageInterface $rootPackage, InstallationManager $installationManager, $targetDir, $scanPsrPackages = false, $suffix = '') { if ($this->classMapAuthoritative) { // Force scanPsrPackages when classmap is authoritative $scanPsrPackages = true; } if ($this->runScripts) { $this->eventDispatcher->dispatchScript(ScriptEvents::PRE_AUTOLOAD_DUMP, $this->devMode, array(), array( 'optimize' => (bool) $scanPsrPackages, )); } $filesystem = new Filesystem(); $filesystem->ensureDirectoryExists($config->get('vendor-dir')); // Do not remove double realpath() calls. // Fixes failing Windows realpath() implementation. // See https://bugs.php.net/bug.php?id=72738 $basePath = $filesystem->normalizePath(realpath(realpath(getcwd()))); $vendorPath = $filesystem->normalizePath(realpath(realpath($config->get('vendor-dir')))); $useGlobalIncludePath = (bool) $config->get('use-include-path'); $prependAutoloader = $config->get('prepend-autoloader') === false ? 'false' : 'true'; $targetDir = $vendorPath.'/'.$targetDir; $filesystem->ensureDirectoryExists($targetDir); $vendorPathCode = $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true); $vendorPathCode52 = str_replace('__DIR__', 'dirname(__FILE__)', $vendorPathCode); $vendorPathToTargetDirCode = $filesystem->findShortestPathCode($vendorPath, realpath($targetDir), true); $appBaseDirCode = $filesystem->findShortestPathCode($vendorPath, $basePath, true); $appBaseDirCode = str_replace('__DIR__', '$vendorDir', $appBaseDirCode); $namespacesFile = <<getDevPackageNames(); $packageMap = $this->buildPackageMap($installationManager, $rootPackage, $localRepo->getCanonicalPackages()); if ($this->devMode) { // if dev mode is enabled, then we do not filter any dev packages out so disable this entirely $filteredDevPackages = false; } else { // if the list of dev package names is available we use that straight, otherwise pass true which means use legacy algo to figure them out $filteredDevPackages = $devPackageNames ?: true; } $autoloads = $this->parseAutoloads($packageMap, $rootPackage, $filteredDevPackages); // Process the 'psr-0' base directories. foreach ($autoloads['psr-0'] as $namespace => $paths) { $exportedPaths = array(); foreach ($paths as $path) { $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); } $exportedPrefix = var_export($namespace, true); $namespacesFile .= " $exportedPrefix => "; $namespacesFile .= "array(".implode(', ', $exportedPaths)."),\n"; } $namespacesFile .= ");\n"; // Process the 'psr-4' base directories. foreach ($autoloads['psr-4'] as $namespace => $paths) { $exportedPaths = array(); foreach ($paths as $path) { $exportedPaths[] = $this->getPathCode($filesystem, $basePath, $vendorPath, $path); } $exportedPrefix = var_export($namespace, true); $psr4File .= " $exportedPrefix => "; $psr4File .= "array(".implode(', ', $exportedPaths)."),\n"; } $psr4File .= ");\n"; $classmapFile = <<getAutoload(); if ($rootPackage->getTargetDir() && !empty($mainAutoload['psr-0'])) { $levels = substr_count($filesystem->normalizePath($rootPackage->getTargetDir()), '/') + 1; $prefixes = implode(', ', array_map(function ($prefix) { return var_export($prefix, true); }, array_keys($mainAutoload['psr-0']))); $baseDirFromTargetDirCode = $filesystem->findShortestPathCode($targetDir, $basePath, true); $targetDirLoader = <<addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, null, null, $classMap, $ambiguousClasses, $scannedFiles); } if ($scanPsrPackages) { $namespacesToScan = array(); // Scan the PSR-0/4 directories for class files, and add them to the class map foreach (array('psr-4', 'psr-0') as $psrType) { foreach ($autoloads[$psrType] as $namespace => $paths) { $namespacesToScan[$namespace][] = array('paths' => $paths, 'type' => $psrType); } } krsort($namespacesToScan); foreach ($namespacesToScan as $namespace => $groups) { foreach ($groups as $group) { foreach ($group['paths'] as $dir) { $dir = $filesystem->normalizePath($filesystem->isAbsolutePath($dir) ? $dir : $basePath.'/'.$dir); if (!is_dir($dir)) { continue; } $classMap = $this->addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, $namespace, $group['type'], $classMap, $ambiguousClasses, $scannedFiles); } } } } foreach ($ambiguousClasses as $className => $ambigiousPaths) { $cleanPath = str_replace(array('$vendorDir . \'', '$baseDir . \'', "',\n"), array($vendorPath, $basePath, ''), $classMap[$className]); $this->io->writeError( 'Warning: Ambiguous class resolution, "'.$className.'"'. ' was found '. (count($ambigiousPaths) + 1) .'x: in "'.$cleanPath.'" and "'. implode('", "', $ambigiousPaths) .'", the first will be used.' ); } $classMap['Composer\\InstalledVersions'] = "\$vendorDir . '/composer/InstalledVersions.php',\n"; ksort($classMap); foreach ($classMap as $class => $code) { $classmapFile .= ' '.var_export($class, true).' => '.$code; } $classmapFile .= ");\n"; if (!$suffix) { if (!$config->get('autoloader-suffix') && is_readable($vendorPath.'/autoload.php')) { $content = file_get_contents($vendorPath.'/autoload.php'); if (preg_match('{ComposerAutoloaderInit([^:\s]+)::}', $content, $match)) { $suffix = $match[1]; } } if (!$suffix) { $suffix = $config->get('autoloader-suffix') ?: md5(uniqid('', true)); } } $filesystem->filePutContentsIfModified($targetDir.'/autoload_namespaces.php', $namespacesFile); $filesystem->filePutContentsIfModified($targetDir.'/autoload_psr4.php', $psr4File); $filesystem->filePutContentsIfModified($targetDir.'/autoload_classmap.php', $classmapFile); $includePathFilePath = $targetDir.'/include_paths.php'; if ($includePathFileContents = $this->getIncludePathsFile($packageMap, $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { $filesystem->filePutContentsIfModified($includePathFilePath, $includePathFileContents); } elseif (file_exists($includePathFilePath)) { unlink($includePathFilePath); } $includeFilesFilePath = $targetDir.'/autoload_files.php'; if ($includeFilesFileContents = $this->getIncludeFilesFile($autoloads['files'], $filesystem, $basePath, $vendorPath, $vendorPathCode52, $appBaseDirCode)) { $filesystem->filePutContentsIfModified($includeFilesFilePath, $includeFilesFileContents); } elseif (file_exists($includeFilesFilePath)) { unlink($includeFilesFilePath); } $filesystem->filePutContentsIfModified($targetDir.'/autoload_static.php', $this->getStaticFile($suffix, $targetDir, $vendorPath, $basePath, $staticPhpVersion)); $checkPlatform = $config->get('platform-check') && $this->ignorePlatformReqs !== true; $platformCheckContent = null; if ($checkPlatform) { $platformCheckContent = $this->getPlatformCheck($packageMap, $this->ignorePlatformReqs ?: array(), $config->get('platform-check'), $devPackageNames); if (null === $platformCheckContent) { $checkPlatform = false; } } if ($checkPlatform) { $filesystem->filePutContentsIfModified($targetDir.'/platform_check.php', $platformCheckContent); } elseif (file_exists($targetDir.'/platform_check.php')) { unlink($targetDir.'/platform_check.php'); } $filesystem->filePutContentsIfModified($vendorPath.'/autoload.php', $this->getAutoloadFile($vendorPathToTargetDirCode, $suffix)); $filesystem->filePutContentsIfModified($targetDir.'/autoload_real.php', $this->getAutoloadRealFile(true, (bool) $includePathFileContents, $targetDirLoader, (bool) $includeFilesFileContents, $vendorPathCode, $appBaseDirCode, $suffix, $useGlobalIncludePath, $prependAutoloader, $staticPhpVersion, $checkPlatform)); $filesystem->safeCopy(__DIR__.'/ClassLoader.php', $targetDir.'/ClassLoader.php'); $filesystem->safeCopy(__DIR__.'/../../../LICENSE', $targetDir.'/LICENSE'); if ($this->runScripts) { $this->eventDispatcher->dispatchScript(ScriptEvents::POST_AUTOLOAD_DUMP, $this->devMode, array(), array( 'optimize' => (bool) $scanPsrPackages, )); } return count($classMap); } private function addClassMapCode($filesystem, $basePath, $vendorPath, $dir, $excluded, $namespaceFilter, $autoloadType, array $classMap, array &$ambiguousClasses, array &$scannedFiles) { foreach ($this->generateClassMap($dir, $excluded, $namespaceFilter, $autoloadType, true, $scannedFiles) as $class => $path) { $pathCode = $this->getPathCode($filesystem, $basePath, $vendorPath, $path).",\n"; if (!isset($classMap[$class])) { $classMap[$class] = $pathCode; } elseif ($this->io && $classMap[$class] !== $pathCode && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($classMap[$class].' '.$path, '\\', '/'))) { $ambiguousClasses[$class][] = $path; } } return $classMap; } /** * @param ?array $excluded */ private function generateClassMap($dir, $excluded, $namespaceFilter, $autoloadType, $showAmbiguousWarning, array &$scannedFiles) { if ($excluded) { // filter excluded patterns here to only use those matching $dir // exclude-from-classmap patterns are all realpath'd so we can only filter them if $dir exists so that realpath($dir) will work // if $dir does not exist, it should anyway not find anything there so no trouble if (file_exists($dir)) { // transform $dir in the same way that exclude-from-classmap patterns are transformed so we can match them against each other $dirMatch = preg_quote(strtr(realpath($dir), '\\', '/')); foreach ($excluded as $index => $pattern) { // extract the constant string prefix of the pattern here, until we reach a non-escaped regex special character $pattern = preg_replace('{^(([^.+*?\[^\]$(){}=!<>|:\\\\#-]+|\\\\[.+*?\[^\]$(){}=!<>|:#-])*).*}', '$1', $pattern); // if the pattern is not a subset or superset of $dir, it is unrelated and we skip it if (0 !== strpos($pattern, $dirMatch) && 0 !== strpos($dirMatch, $pattern)) { unset($excluded[$index]); } } } $excluded = $excluded ? '{(' . implode('|', $excluded) . ')}' : null; } return ClassMapGenerator::createMap($dir, $excluded, $showAmbiguousWarning ? $this->io : null, $namespaceFilter, $autoloadType, $scannedFiles); } /** * @param RootPackageInterface $rootPackage */ public function buildPackageMap(InstallationManager $installationManager, PackageInterface $rootPackage, array $packages) { // build package => install path map $packageMap = array(array($rootPackage, '')); foreach ($packages as $package) { if ($package instanceof AliasPackage) { continue; } $this->validatePackage($package); $packageMap[] = array( $package, $installationManager->getInstallPath($package), ); } return $packageMap; } /** * @param PackageInterface $package * * @throws \InvalidArgumentException Throws an exception, if the package has illegal settings. */ protected function validatePackage(PackageInterface $package) { $autoload = $package->getAutoload(); if (!empty($autoload['psr-4']) && null !== $package->getTargetDir()) { $name = $package->getName(); $package->getTargetDir(); throw new \InvalidArgumentException("PSR-4 autoloading is incompatible with the target-dir property, remove the target-dir in package '$name'."); } if (!empty($autoload['psr-4'])) { foreach ($autoload['psr-4'] as $namespace => $dirs) { if ($namespace !== '' && '\\' !== substr($namespace, -1)) { throw new \InvalidArgumentException("psr-4 namespaces must end with a namespace separator, '$namespace' does not, use '$namespace\\'."); } } } } /** * Compiles an ordered list of namespace => path mappings * * @param array $packageMap array of array(package, installDir-relative-to-composer.json) * @param RootPackageInterface $rootPackage root package instance * @param bool|string[] $filteredDevPackages If an array, the list of packages that must be removed. If bool, whether to filter out require-dev packages * @return array array('psr-0' => array('Ns\\Foo' => array('installDir'))) */ public function parseAutoloads(array $packageMap, PackageInterface $rootPackage, $filteredDevPackages = false) { $rootPackageMap = array_shift($packageMap); if (is_array($filteredDevPackages)) { $packageMap = array_filter($packageMap, function ($item) use ($filteredDevPackages) { return !in_array($item[0]->getName(), $filteredDevPackages, true); }); } elseif ($filteredDevPackages) { $packageMap = $this->filterPackageMap($packageMap, $rootPackage); } $sortedPackageMap = $this->sortPackageMap($packageMap); $sortedPackageMap[] = $rootPackageMap; array_unshift($packageMap, $rootPackageMap); $psr0 = $this->parseAutoloadsType($packageMap, 'psr-0', $rootPackage); $psr4 = $this->parseAutoloadsType($packageMap, 'psr-4', $rootPackage); $classmap = $this->parseAutoloadsType(array_reverse($sortedPackageMap), 'classmap', $rootPackage); $files = $this->parseAutoloadsType($sortedPackageMap, 'files', $rootPackage); $exclude = $this->parseAutoloadsType($sortedPackageMap, 'exclude-from-classmap', $rootPackage); krsort($psr0); krsort($psr4); return array( 'psr-0' => $psr0, 'psr-4' => $psr4, 'classmap' => $classmap, 'files' => $files, 'exclude-from-classmap' => $exclude, ); } /** * Registers an autoloader based on an autoload map returned by parseAutoloads * * @param array $autoloads see parseAutoloads return value * @return ClassLoader */ public function createLoader(array $autoloads, $vendorDir = null) { $loader = new ClassLoader($vendorDir); if (isset($autoloads['psr-0'])) { foreach ($autoloads['psr-0'] as $namespace => $path) { $loader->add($namespace, $path); } } if (isset($autoloads['psr-4'])) { foreach ($autoloads['psr-4'] as $namespace => $path) { $loader->addPsr4($namespace, $path); } } if (isset($autoloads['classmap'])) { $excluded = null; if (!empty($autoloads['exclude-from-classmap'])) { $excluded = $autoloads['exclude-from-classmap']; } $scannedFiles = array(); foreach ($autoloads['classmap'] as $dir) { try { $loader->addClassMap($this->generateClassMap($dir, $excluded, null, null, false, $scannedFiles)); } catch (\RuntimeException $e) { $this->io->writeError(''.$e->getMessage().''); } } } return $loader; } protected function getIncludePathsFile(array $packageMap, Filesystem $filesystem, $basePath, $vendorPath, $vendorPathCode, $appBaseDirCode) { $includePaths = array(); foreach ($packageMap as $item) { list($package, $installPath) = $item; if (null !== $package->getTargetDir() && strlen($package->getTargetDir()) > 0) { $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); } foreach ($package->getIncludePaths() as $includePath) { $includePath = trim($includePath, '/'); $includePaths[] = empty($installPath) ? $includePath : $installPath.'/'.$includePath; } } if (!$includePaths) { return; } $includePathsCode = ''; foreach ($includePaths as $path) { $includePathsCode .= " " . $this->getPathCode($filesystem, $basePath, $vendorPath, $path) . ",\n"; } return << $functionFile) { $filesCode .= ' ' . var_export($fileIdentifier, true) . ' => ' . $this->getPathCode($filesystem, $basePath, $vendorPath, $functionFile) . ",\n"; } if (!$filesCode) { return false; } return <<isAbsolutePath($path)) { $path = $basePath . '/' . $path; } $path = $filesystem->normalizePath($path); $baseDir = ''; if (strpos($path.'/', $vendorPath.'/') === 0) { $path = substr($path, strlen($vendorPath)); $baseDir = '$vendorDir'; if ($path !== false) { $baseDir .= " . "; } } else { $path = $filesystem->normalizePath($filesystem->findShortestPath($basePath, $path, true)); if (!$filesystem->isAbsolutePath($path)) { $baseDir = '$baseDir . '; $path = '/' . $path; } } if (strpos($path, '.phar') !== false) { $baseDir = "'phar://' . " . $baseDir; } return $baseDir . (($path !== false) ? var_export($path, true) : ""); } protected function getPlatformCheck(array $packageMap, array $ignorePlatformReqs, $checkPlatform, array $devPackageNames) { $lowestPhpVersion = Bound::zero(); $requiredExtensions = array(); $extensionProviders = array(); foreach ($packageMap as $item) { $package = $item[0]; foreach (array_merge($package->getReplaces(), $package->getProvides()) as $link) { if (preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) { $extensionProviders[$match[1]][] = $link->getConstraint() ?: new MatchAllConstraint(); } } } foreach ($packageMap as $item) { $package = $item[0]; // skip dev dependencies platform requirements as platform-check really should only be a production safeguard if (in_array($package->getName(), $devPackageNames, true)) { continue; } foreach ($package->getRequires() as $link) { if (in_array($link->getTarget(), $ignorePlatformReqs, true)) { continue; } if ('php' === $link->getTarget() && ($constraint = $link->getConstraint())) { if ($constraint->getLowerBound()->compareTo($lowestPhpVersion, '>')) { $lowestPhpVersion = $constraint->getLowerBound(); } } if ($checkPlatform === true && preg_match('{^ext-(.+)$}iD', $link->getTarget(), $match)) { // skip extension checks if they have a valid provider/replacer if (isset($extensionProviders[$match[1]])) { foreach ($extensionProviders[$match[1]] as $provided) { if (!$link->getConstraint() || $provided->matches($link->getConstraint())) { continue 2; } } } if ($match[1] === 'zend-opcache') { $match[1] = 'zend opcache'; } $extension = var_export($match[1], true); if ($match[1] === 'pcntl' || $match[1] === 'readline') { $requiredExtensions[$extension] = "PHP_SAPI !== 'cli' || extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; } else { $requiredExtensions[$extension] = "extension_loaded($extension) || \$missingExtensions[] = $extension;\n"; } } } } ksort($requiredExtensions); $formatToPhpVersionId = function (Bound $bound) { if ($bound->isZero()) { return 0; } if ($bound->isPositiveInfinity()) { return 99999; } $version = str_replace('-', '.', $bound->getVersion()); $chunks = array_map('intval', explode('.', $version)); return $chunks[0] * 10000 + $chunks[1] * 100 + $chunks[2]; }; $formatToHumanReadable = function (Bound $bound) { if ($bound->isZero()) { return 0; } if ($bound->isPositiveInfinity()) { return 99999; } $version = str_replace('-', '.', $bound->getVersion()); $chunks = explode('.', $version); $chunks = array_slice($chunks, 0, 3); return implode('.', $chunks); }; $requiredPhp = ''; $requiredPhpError = ''; if (!$lowestPhpVersion->isZero()) { $operator = $lowestPhpVersion->isInclusive() ? '>=' : '>'; $requiredPhp = 'PHP_VERSION_ID '.$operator.' '.$formatToPhpVersionId($lowestPhpVersion); $requiredPhpError = '"'.$operator.' '.$formatToHumanReadable($lowestPhpVersion).'"'; } if ($requiredPhp) { $requiredPhp = <<= $staticPhpVersion && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if (\$useStaticLoader) { require __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInit$suffix::getInitializer(\$loader)); } else { STATIC_INIT; if (!$this->classMapAuthoritative) { $file .= <<<'PSR04' $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->set($namespace, $path); } $map = require __DIR__ . '/autoload_psr4.php'; foreach ($map as $namespace => $path) { $loader->setPsr4($namespace, $path); } PSR04; } if ($useClassMap) { $file .= <<<'CLASSMAP' $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { $loader->addClassMap($classMap); } CLASSMAP; } $file .= " }\n\n"; if ($this->classMapAuthoritative) { $file .= <<<'CLASSMAPAUTHORITATIVE' $loader->setClassMapAuthoritative(true); CLASSMAPAUTHORITATIVE; } if ($this->apcu) { $apcuPrefix = var_export(($this->apcuPrefix !== null ? $this->apcuPrefix : substr(base64_encode(md5(uniqid('', true), true)), 0, -3)), true); $file .= <<setApcuPrefix($apcuPrefix); APCU; } if ($useGlobalIncludePath) { $file .= <<<'INCLUDEPATH' $loader->setUseIncludePath(true); INCLUDEPATH; } if ($targetDirLoader) { $file .= <<register($prependAutoloader); REGISTER_LOADER; if ($useIncludeFiles) { $file .= << \$file) { composerRequire$suffix(\$fileIdentifier, \$file); } INCLUDE_FILES; } $file .= << $path) { $loader->set($namespace, $path); } $map = require $targetDir . '/autoload_psr4.php'; foreach ($map as $namespace => $path) { $loader->setPsr4($namespace, $path); } $classMap = require $targetDir . '/autoload_classmap.php'; if ($classMap) { $loader->addClassMap($classMap); } $filesystem = new Filesystem(); $vendorPathCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; $vendorPharPathCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $vendorPath, true, true) . " . '/"; $appBaseDirCode = ' => ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; $appBaseDirPharCode = ' => \'phar://\' . ' . $filesystem->findShortestPathCode(realpath($targetDir), $basePath, true, true) . " . '/"; $absoluteVendorPathCode = ' => ' . substr(var_export(rtrim($vendorDir, '\\/') . '/', true), 0, -1); $absoluteVendorPharPathCode = ' => ' . substr(var_export(rtrim('phar://' . $vendorDir, '\\/') . '/', true), 0, -1); $absoluteAppBaseDirCode = ' => ' . substr(var_export(rtrim($baseDir, '\\/') . '/', true), 0, -1); $absoluteAppBaseDirPharCode = ' => ' . substr(var_export(rtrim('phar://' . $baseDir, '\\/') . '/', true), 0, -1); $initializer = ''; $prefix = "\0Composer\Autoload\ClassLoader\0"; $prefixLen = strlen($prefix); if (file_exists($targetDir . '/autoload_files.php')) { $maps = array('files' => require $targetDir . '/autoload_files.php'); } else { $maps = array(); } foreach ((array) $loader as $prop => $value) { if ($value && 0 === strpos($prop, $prefix)) { $maps[substr($prop, $prefixLen)] = $value; } } foreach ($maps as $prop => $value) { if (count($value) > 32767) { // Static arrays are limited to 32767 values on PHP 5.6 // See https://bugs.php.net/68057 $staticPhpVersion = 70000; } $value = strtr( var_export($value, true), array( $absoluteVendorPathCode => $vendorPathCode, $absoluteVendorPharPathCode => $vendorPharPathCode, $absoluteAppBaseDirCode => $appBaseDirCode, $absoluteAppBaseDirPharCode => $appBaseDirPharCode, ) ); $value = ltrim(preg_replace('/^ */m', ' $0$0', $value)); $file .= sprintf(" public static $%s = %s;\n\n", $prop, $value); if ('files' !== $prop) { $initializer .= " \$loader->$prop = ComposerStaticInit$suffix::\$$prop;\n"; } } return $file . <<getAutoload(); if ($this->devMode && $package === $rootPackage) { $autoload = array_merge_recursive($autoload, $package->getDevAutoload()); } // skip misconfigured packages if (!isset($autoload[$type]) || !is_array($autoload[$type])) { continue; } if (null !== $package->getTargetDir() && $package !== $rootPackage) { $installPath = substr($installPath, 0, -strlen('/'.$package->getTargetDir())); } foreach ($autoload[$type] as $namespace => $paths) { foreach ((array) $paths as $path) { if (($type === 'files' || $type === 'classmap' || $type === 'exclude-from-classmap') && $package->getTargetDir() && !is_readable($installPath.'/'.$path)) { // remove target-dir from file paths of the root package if ($package === $rootPackage) { $targetDir = str_replace('\\', '[\\\\/]', preg_quote(str_replace(array('/', '\\'), '', $package->getTargetDir()))); $path = ltrim(preg_replace('{^'.$targetDir.'}', '', ltrim($path, '\\/')), '\\/'); } else { // add target-dir from file paths that don't have it $path = $package->getTargetDir() . '/' . $path; } } if ($type === 'exclude-from-classmap') { // first escape user input $path = preg_replace('{/+}', '/', preg_quote(trim(strtr($path, '\\', '/'), '/'))); // add support for wildcards * and ** $path = strtr($path, array('\\*\\*' => '.+?', '\\*' => '[^/]+?')); // add support for up-level relative paths $updir = null; $path = preg_replace_callback( '{^((?:(?:\\\\\\.){1,2}+/)+)}', function ($matches) use (&$updir) { if (isset($matches[1])) { // undo preg_quote for the matched string $updir = str_replace('\\.', '.', $matches[1]); } return ''; }, $path ); if (empty($installPath)) { $installPath = strtr(getcwd(), '\\', '/'); } $resolvedPath = realpath($installPath . '/' . $updir); $autoloads[] = preg_quote(strtr($resolvedPath, '\\', '/')) . '/' . $path . '($|/)'; continue; } $relativePath = empty($installPath) ? (empty($path) ? '.' : $path) : $installPath.'/'.$path; if ($type === 'files') { $autoloads[$this->getFileIdentifier($package, $path)] = $relativePath; continue; } if ($type === 'classmap') { $autoloads[] = $relativePath; continue; } $autoloads[$namespace][] = $relativePath; } } } return $autoloads; } protected function getFileIdentifier(PackageInterface $package, $path) { return md5($package->getName() . ':' . $path); } /** * Filters out dev-dependencies * * @param array $packageMap * @param RootPackageInterface $rootPackage * @return array */ protected function filterPackageMap(array $packageMap, RootPackageInterface $rootPackage) { $packages = array(); $include = array(); $replacedBy = array(); foreach ($packageMap as $item) { $package = $item[0]; $name = $package->getName(); $packages[$name] = $package; foreach ($package->getReplaces() as $replace) { $replacedBy[$replace->getTarget()] = $name; } } $add = function (PackageInterface $package) use (&$add, $packages, &$include, $replacedBy) { foreach ($package->getRequires() as $link) { $target = $link->getTarget(); if (isset($replacedBy[$target])) { $target = $replacedBy[$target]; } if (!isset($include[$target])) { $include[$target] = true; if (isset($packages[$target])) { $add($packages[$target]); } } } }; $add($rootPackage); return array_filter( $packageMap, function ($item) use ($include) { $package = $item[0]; foreach ($package->getNames() as $name) { if (isset($include[$name])) { return true; } } return false; } ); } /** * Sorts packages by dependency weight * * Packages of equal weight retain the original order * * @param array $packageMap * @return array */ protected function sortPackageMap(array $packageMap) { $packages = array(); $paths = array(); foreach ($packageMap as $item) { list($package, $path) = $item; $name = $package->getName(); $packages[$name] = $package; $paths[$name] = $path; } $sortedPackages = PackageSorter::sortPackages($packages); $sortedPackageMap = array(); foreach ($sortedPackages as $package) { $name = $package->getName(); $sortedPackageMap[] = array($packages[$name], $paths[$name]); } return $sortedPackageMap; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Autoload; /** * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. * * $loader = new \Composer\Autoload\ClassLoader(); * * // register classes with namespaces * $loader->add('Symfony\Component', __DIR__.'/component'); * $loader->add('Symfony', __DIR__.'/framework'); * * // activate the autoloader * $loader->register(); * * // to enable searching the include path (eg. for PEAR packages) * $loader->setUseIncludePath(true); * * In this example, if you try to use a class in the Symfony\Component * namespace or one of its children (Symfony\Component\Console for instance), * the autoloader will first look for the class under the component/ * directory, and it will then fallback to the framework/ directory if not * found before giving up. * * This class is loosely based on the Symfony UniversalClassLoader. * * @author Fabien Potencier * @author Jordi Boggiano * @see https://www.php-fig.org/psr/psr-0/ * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { private $vendorDir; // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); private $fallbackDirsPsr4 = array(); // PSR-0 private $prefixesPsr0 = array(); private $fallbackDirsPsr0 = array(); private $useIncludePath = false; private $classMap = array(); private $classMapAuthoritative = false; private $missingClasses = array(); private $apcuPrefix; private static $registeredLoaders = array(); public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; } public function getPrefixes() { if (!empty($this->prefixesPsr0)) { return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); } public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } public function getFallbackDirs() { return $this->fallbackDirsPsr0; } public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } public function getClassMap() { return $this->classMap; } /** * @param array $classMap Class to filename map */ public function addClassMap(array $classMap) { if ($this->classMap) { $this->classMap = array_merge($this->classMap, $classMap); } else { $this->classMap = $classMap; } } /** * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 root directories * @param bool $prepend Whether to prepend the directories */ public function add($prefix, $paths, $prepend = false) { if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( (array) $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, (array) $paths ); } return; } $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( (array) $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], (array) $paths ); } } /** * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException */ public function addPsr4($prefix, $paths, $prepend = false) { if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( (array) $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, (array) $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { // Register directories for a new namespace. $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( (array) $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], (array) $paths ); } } /** * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 base directories */ public function set($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr0 = (array) $paths; } else { $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; } } /** * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException */ public function setPsr4($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr4 = (array) $paths; } else { $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } } /** * Turns on searching the include path for class files. * * @param bool $useIncludePath */ public function setUseIncludePath($useIncludePath) { $this->useIncludePath = $useIncludePath; } /** * Can be used to check if the autoloader uses the include path to check * for classes. * * @return bool */ public function getUseIncludePath() { return $this->useIncludePath; } /** * Turns off searching the prefix and fallback directories for classes * that have not been registered with the class map. * * @param bool $classMapAuthoritative */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = $classMapAuthoritative; } /** * Should class lookup fail if not found in the current class map? * * @return bool */ public function isClassMapAuthoritative() { return $this->classMapAuthoritative; } /** * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix */ public function setApcuPrefix($apcuPrefix) { $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; } /** * The APCu prefix in use, or null if APCu caching is not enabled. * * @return string|null */ public function getApcuPrefix() { return $this->apcuPrefix; } /** * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not */ public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); if (null === $this->vendorDir) { return; } if ($prepend) { self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; } else { unset(self::$registeredLoaders[$this->vendorDir]); self::$registeredLoaders[$this->vendorDir] = $this; } } /** * Unregisters this instance as an autoloader. */ public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); if (null !== $this->vendorDir) { unset(self::$registeredLoaders[$this->vendorDir]); } } /** * Loads the given class or interface. * * @param string $class The name of the class * @return bool|null True if loaded, null otherwise */ public function loadClass($class) { if ($file = $this->findFile($class)) { includeFile($file); return true; } } /** * Finds the path to the file where the class is defined. * * @param string $class The name of the class * * @return string|false The path if found, false otherwise */ public function findFile($class) { // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { return false; } if (null !== $this->apcuPrefix) { $file = apcu_fetch($this->apcuPrefix.$class, $hit); if ($hit) { return $file; } } $file = $this->findFileWithExtension($class, '.php'); // Search for Hack files if we are running on HHVM if (false === $file && defined('HHVM_VERSION')) { $file = $this->findFileWithExtension($class, '.hh'); } if (null !== $this->apcuPrefix) { apcu_add($this->apcuPrefix.$class, $file); } if (false === $file) { // Remember that this class does not exist. $this->missingClasses[$class] = true; } return $file; } /** * Returns the currently registered loaders indexed by their corresponding vendor directories. * * @return self[] */ public static function getRegisteredLoaders() { return self::$registeredLoaders; } private function findFileWithExtension($class, $ext) { // PSR-4 lookup $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { if (file_exists($file = $dir . $pathEnd)) { return $file; } } } } } // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } // PSR-0 lookup if (false !== $pos = strrpos($class, '\\')) { // namespaced class name $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } if (isset($this->prefixesPsr0[$first])) { foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } } } } // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } // PSR-0 include paths. if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } return false; } } /** * Scope isolated include. * * Prevents access to $this/self from included files. */ function includeFile($file) { include $file; } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ /* * This file is copied from the Symfony package. * * (c) Fabien Potencier */ namespace Composer\Autoload; use Symfony\Component\Finder\Finder; use Composer\IO\IOInterface; use Composer\Util\Filesystem; /** * ClassMapGenerator * * @author Gyula Sallai * @author Jordi Boggiano */ class ClassMapGenerator { /** * Generate a class map file * * @param \Traversable $dirs Directories or a single path to search in * @param string $file The name of the class map file */ public static function dump($dirs, $file) { $maps = array(); foreach ($dirs as $dir) { $maps = array_merge($maps, static::createMap($dir)); } file_put_contents($file, sprintf('files()->followLinks()->name('/\.(php|inc|hh)$/')->in($path); } else { throw new \RuntimeException( 'Could not scan for classes inside "'.$path. '" which does not appear to be a file nor a folder' ); } } elseif (null !== $autoloadType) { throw new \RuntimeException('Path must be a string when specifying an autoload type'); } $map = array(); $filesystem = new Filesystem(); $cwd = realpath(getcwd()); foreach ($path as $file) { $filePath = $file->getPathname(); if (!in_array(pathinfo($filePath, PATHINFO_EXTENSION), array('php', 'inc', 'hh'))) { continue; } if (!$filesystem->isAbsolutePath($filePath)) { $filePath = $cwd . '/' . $filePath; $filePath = $filesystem->normalizePath($filePath); } else { $filePath = preg_replace('{[\\\\/]{2,}}', '/', $filePath); } $realPath = realpath($filePath); // if a list of scanned files is given, avoid scanning twice the same file to save cycles and avoid generating warnings // in case a PSR-0/4 declaration follows another more specific one, or a classmap declaration, which covered this file already if (isset($scannedFiles[$realPath])) { continue; } // check the realpath of the file against the excluded paths as the path might be a symlink and the excluded path is realpath'd so symlink are resolved if ($excluded && preg_match($excluded, strtr($realPath, '\\', '/'))) { continue; } // check non-realpath of file for directories symlink in project dir if ($excluded && preg_match($excluded, strtr($filePath, '\\', '/'))) { continue; } $classes = self::findClasses($filePath); if (null !== $autoloadType) { $classes = self::filterByNamespace($classes, $filePath, $namespace, $autoloadType, $basePath, $io); // if no valid class was found in the file then we do not mark it as scanned as it might still be matched by another rule later if ($classes) { $scannedFiles[$realPath] = true; } } else { // classmap autoload rules always collect all classes so for these we definitely do not want to scan again $scannedFiles[$realPath] = true; } foreach ($classes as $class) { // skip classes not within the given namespace prefix if (null === $autoloadType && null !== $namespace && '' !== $namespace && 0 !== strpos($class, $namespace)) { continue; } if (!isset($map[$class])) { $map[$class] = $filePath; } elseif ($io && $map[$class] !== $filePath && !preg_match('{/(test|fixture|example|stub)s?/}i', strtr($map[$class].' '.$filePath, '\\', '/'))) { $io->writeError( 'Warning: Ambiguous class resolution, "'.$class.'"'. ' was found in both "'.$map[$class].'" and "'.$filePath.'", the first will be used.' ); } } } return $map; } /** * Remove classes which could not have been loaded by namespace autoloaders * * @param array $classes found classes in given file * @param string $filePath current file * @param string $baseNamespace prefix of given autoload mapping * @param string $namespaceType psr-0|psr-4 * @param string $basePath root directory of given autoload mapping * @param IOInterface $io IO object * @return array valid classes */ private static function filterByNamespace($classes, $filePath, $baseNamespace, $namespaceType, $basePath, $io) { $validClasses = array(); $rejectedClasses = array(); $realSubPath = substr($filePath, strlen($basePath) + 1); $realSubPath = substr($realSubPath, 0, strrpos($realSubPath, '.')); foreach ($classes as $class) { // silently skip if ns doesn't have common root if ('' !== $baseNamespace && 0 !== strpos($class, $baseNamespace)) { continue; } // transform class name to file path and validate if ('psr-0' === $namespaceType) { $namespaceLength = strrpos($class, '\\'); if (false !== $namespaceLength) { $namespace = substr($class, 0, $namespaceLength + 1); $className = substr($class, $namespaceLength + 1); $subPath = str_replace('\\', DIRECTORY_SEPARATOR, $namespace) . str_replace('_', DIRECTORY_SEPARATOR, $className); } else { $subPath = str_replace('_', DIRECTORY_SEPARATOR, $class); } } elseif ('psr-4' === $namespaceType) { $subNamespace = ('' !== $baseNamespace) ? substr($class, strlen($baseNamespace)) : $class; $subPath = str_replace('\\', DIRECTORY_SEPARATOR, $subNamespace); } else { throw new \RuntimeException("namespaceType must be psr-0 or psr-4, $namespaceType given"); } if ($subPath === $realSubPath) { $validClasses[] = $class; } else { $rejectedClasses[] = $class; } } // warn only if no valid classes, else silently skip invalid if (empty($validClasses)) { foreach ($rejectedClasses as $class) { if ($io) { $io->writeError("Class $class located in ".preg_replace('{^'.preg_quote(getcwd()).'}', '.', $filePath, 1)." does not comply with $namespaceType autoloading standard. Skipping."); } } return array(); } return $validClasses; } /** * Extract the classes in the given file * * @param string $path The file to check * @throws \RuntimeException * @return array The found classes */ private static function findClasses($path) { $extraTypes = PHP_VERSION_ID < 50400 ? '' : '|trait'; if (defined('HHVM_VERSION') && version_compare(HHVM_VERSION, '3.3', '>=')) { $extraTypes .= '|enum'; } // Use @ here instead of Silencer to actively suppress 'unhelpful' output // @link https://github.com/composer/composer/pull/4886 $contents = @php_strip_whitespace($path); if (!$contents) { if (!file_exists($path)) { $message = 'File at "%s" does not exist, check your classmap definitions'; } elseif (!is_readable($path)) { $message = 'File at "%s" is not readable, check its permissions'; } elseif ('' === trim(file_get_contents($path))) { // The input file was really empty and thus contains no classes return array(); } else { $message = 'File at "%s" could not be parsed as PHP, it may be binary or corrupted'; } $error = error_get_last(); if (isset($error['message'])) { $message .= PHP_EOL . 'The following message may be helpful:' . PHP_EOL . $error['message']; } throw new \RuntimeException(sprintf($message, $path)); } // return early if there is no chance of matching anything in this file if (!preg_match('{\b(?:class|interface'.$extraTypes.')\s}i', $contents)) { return array(); } // strip heredocs/nowdocs $contents = preg_replace('{<<<[ \t]*([\'"]?)(\w+)\\1(?:\r\n|\n|\r)(?:.*?)(?:\r\n|\n|\r)(?:\s*)\\2(?=\s+|[;,.)])}s', 'null', $contents); // strip strings $contents = preg_replace('{"[^"\\\\]*+(\\\\.[^"\\\\]*+)*+"|\'[^\'\\\\]*+(\\\\.[^\'\\\\]*+)*+\'}s', 'null', $contents); // strip leading non-php code if needed if (strpos($contents, '(?:[^<]++|<(?!\?))*+<\?}s', '?>'); if (false !== $pos && false === strpos(substr($contents, $pos), '])(?Pclass|interface'.$extraTypes.') \s++ (?P[a-zA-Z_\x7f-\xff:][a-zA-Z0-9_\x7f-\xff:\-]*+) | \b(?])(?Pnamespace) (?P\s++[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+(?:\s*+\\\\\s*+[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*+)*+)? \s*+ [\{;] ) }ix', $contents, $matches); $classes = array(); $namespace = ''; for ($i = 0, $len = count($matches['type']); $i < $len; $i++) { if (!empty($matches['ns'][$i])) { $namespace = str_replace(array(' ', "\t", "\r", "\n"), '', $matches['nsname'][$i]) . '\\'; } else { $name = $matches['name'][$i]; // skip anon classes extending/implementing if ($name === 'extends' || $name === 'implements') { continue; } if ($name[0] === ':') { // This is an XHP class, https://github.com/facebook/xhp $name = 'xhp'.substr(str_replace(array('-', ':'), array('_', '__'), $name), 1); } elseif ($matches['type'][$i] === 'enum') { // In Hack, something like: // enum Foo: int { HERP = '123'; } // The regex above captures the colon, which isn't part of // the class name. $name = rtrim($name, ':'); } $classes[] = ltrim($namespace . $name, '\\'); } } return $classes; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Json\JsonFile; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Package\PackageInterface; use Composer\Repository\RepositoryInterface; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Style\SymfonyStyle; /** * @author Benoît Merlet */ class LicensesCommand extends BaseCommand { protected function configure() { $this ->setName('licenses') ->setDescription('Shows information about licenses of dependencies.') ->setDefinition(array( new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text, json or summary', 'text'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), )) ->setHelp( <<getComposer(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'licenses', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $root = $composer->getPackage(); $repo = $composer->getRepositoryManager()->getLocalRepository(); if ($input->getOption('no-dev')) { $packages = $this->filterRequiredPackages($repo, $root); } else { $packages = $this->appendPackages($repo->getPackages(), array()); } ksort($packages); $io = $this->getIO(); switch ($format = $input->getOption('format')) { case 'text': $io->write('Name: '.$root->getPrettyName().''); $io->write('Version: '.$root->getFullPrettyVersion().''); $io->write('Licenses: '.(implode(', ', $root->getLicense()) ?: 'none').''); $io->write('Dependencies:'); $io->write(''); $table = new Table($output); $table->setStyle('compact'); $tableStyle = $table->getStyle(); if (method_exists($tableStyle, 'setVerticalBorderChars')) { $tableStyle->setVerticalBorderChars(''); } else { $tableStyle->setVerticalBorderChar(''); } $tableStyle->setCellRowContentFormat('%s '); $table->setHeaders(array('Name', 'Version', 'License')); foreach ($packages as $package) { $table->addRow(array( $package->getPrettyName(), $package->getFullPrettyVersion(), implode(', ', $package->getLicense()) ?: 'none', )); } $table->render(); break; case 'json': $dependencies = array(); foreach ($packages as $package) { $dependencies[$package->getPrettyName()] = array( 'version' => $package->getFullPrettyVersion(), 'license' => $package->getLicense(), ); } $io->write(JsonFile::encode(array( 'name' => $root->getPrettyName(), 'version' => $root->getFullPrettyVersion(), 'license' => $root->getLicense(), 'dependencies' => $dependencies, ))); break; case 'summary': $usedLicenses = array(); foreach ($packages as $package) { $license = $package->getLicense(); $licenseName = $license[0]; if (!isset($usedLicenses[$licenseName])) { $usedLicenses[$licenseName] = 0; } $usedLicenses[$licenseName]++; } // Sort licenses so that the most used license will appear first arsort($usedLicenses, SORT_NUMERIC); $rows = array(); foreach ($usedLicenses as $usedLicense => $numberOfDependencies) { $rows[] = array($usedLicense, $numberOfDependencies); } $symfonyIo = new SymfonyStyle($input, $output); $symfonyIo->table( array('License', 'Number of dependencies'), $rows ); break; default: throw new \RuntimeException(sprintf('Unsupported format "%s". See help for supported formats.', $format)); } return 0; } /** * Find package requires and child requires * * @param RepositoryInterface $repo * @param PackageInterface $package * @param array $bucket * @return array */ private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array()) { $requires = array_keys($package->getRequires()); $packageListNames = array_keys($bucket); $packages = array_filter( $repo->getPackages(), function ($package) use ($requires, $packageListNames) { return in_array($package->getName(), $requires) && !in_array($package->getName(), $packageListNames); } ); $bucket = $this->appendPackages($packages, $bucket); foreach ($packages as $package) { $bucket = $this->filterRequiredPackages($repo, $package, $bucket); } return $bucket; } /** * Adds packages to the package list * * @param array $packages the list of packages to add * @param array $bucket the list to add packages to * @return array */ public function appendPackages(array $packages, array $bucket) { foreach ($packages as $package) { $bucket[$package->getName()] = $package; } return $bucket; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano */ class ScriptAliasCommand extends BaseCommand { private $script; private $description; public function __construct($script, $description) { $this->script = $script; $this->description = empty($description) ? 'Runs the '.$script.' script as defined in composer.json.' : $description; parent::__construct(); } protected function configure() { $this ->setName($this->script) ->setDescription($this->description) ->setDefinition(array( new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), )) ->setHelp( <<run-script command runs scripts defined in composer.json: php composer.phar run-script post-update-cmd Read more at https://getcomposer.org/doc/03-cli.md#run-script EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(); $args = $input->getArguments(); return $composer->getEventDispatcher()->dispatchScript($this->script, $input->getOption('dev') || !$input->getOption('no-dev'), $args['args']); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Config; use Composer\Composer; use Composer\Repository\CompositeRepository; use Composer\Repository\RepositoryFactory; use Composer\Script\ScriptEvents; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Util\Filesystem; use Composer\Util\Loop; use Composer\Util\ProcessExecutor; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Creates an archive of a package for distribution. * * @author Nils Adermann */ class ArchiveCommand extends BaseCommand { protected function configure() { $this ->setName('archive') ->setDescription('Creates an archive of this composer package.') ->setDefinition(array( new InputArgument('package', InputArgument::OPTIONAL, 'The package to archive instead of the current project'), new InputArgument('version', InputArgument::OPTIONAL, 'A version constraint to find the package to archive'), new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the resulting archive: tar or zip'), new InputOption('dir', null, InputOption::VALUE_REQUIRED, 'Write the archive to this directory'), new InputOption('file', null, InputOption::VALUE_REQUIRED, 'Write the archive with the given file name.' .' Note that the format will be appended.'), new InputOption('ignore-filters', false, InputOption::VALUE_NONE, 'Ignore filters when saving package'), )) ->setHelp( <<archive command creates an archive of the specified format containing the files and directories of the Composer project or the specified package in the specified version and writes it to the specified directory. php composer.phar archive [--format=zip] [--dir=/foo] [package [version]] Read more at https://getcomposer.org/doc/03-cli.md#archive EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(false); $config = null; if ($composer) { $config = $composer->getConfig(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'archive', $input, $output); $eventDispatcher = $composer->getEventDispatcher(); $eventDispatcher->dispatch($commandEvent->getName(), $commandEvent); $eventDispatcher->dispatchScript(ScriptEvents::PRE_ARCHIVE_CMD); } if (!$config) { $config = Factory::createConfig(); } if (null === $input->getOption('format')) { $input->setOption('format', $config->get('archive-format')); } if (null === $input->getOption('dir')) { $input->setOption('dir', $config->get('archive-dir')); } $returnCode = $this->archive( $this->getIO(), $config, $input->getArgument('package'), $input->getArgument('version'), $input->getOption('format'), $input->getOption('dir'), $input->getOption('file'), $input->getOption('ignore-filters'), $composer ); if (0 === $returnCode && $composer) { $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ARCHIVE_CMD); } return $returnCode; } protected function archive(IOInterface $io, Config $config, $packageName = null, $version = null, $format = 'tar', $dest = '.', $fileName = null, $ignoreFilters = false, Composer $composer = null) { if ($composer) { $archiveManager = $composer->getArchiveManager(); } else { $factory = new Factory; $process = new ProcessExecutor(); $httpDownloader = Factory::createHttpDownloader($io, $config); $downloadManager = $factory->createDownloadManager($io, $config, $httpDownloader, $process); $archiveManager = $factory->createArchiveManager($config, $downloadManager, new Loop($httpDownloader, $process)); } if ($packageName) { $package = $this->selectPackage($io, $packageName, $version); if (!$package) { return 1; } } else { $package = $this->getComposer()->getPackage(); } $io->writeError('Creating the archive into "'.$dest.'".'); $packagePath = $archiveManager->archive($package, $format, $dest, $fileName, $ignoreFilters); $fs = new Filesystem; $shortPath = $fs->findShortestPath(getcwd(), $packagePath, true); $io->writeError('Created: ', false); $io->write(strlen($shortPath) < strlen($packagePath) ? $shortPath : $packagePath); return 0; } protected function selectPackage(IOInterface $io, $packageName, $version = null) { $io->writeError('Searching for the specified package.'); if ($composer = $this->getComposer(false)) { $localRepo = $composer->getRepositoryManager()->getLocalRepository(); $repo = new CompositeRepository(array_merge(array($localRepo), $composer->getRepositoryManager()->getRepositories())); } else { $defaultRepos = RepositoryFactory::defaultRepos($this->getIO()); $io->writeError('No composer.json found in the current directory, searching packages from ' . implode(', ', array_keys($defaultRepos))); $repo = new CompositeRepository($defaultRepos); } $packages = $repo->findPackages($packageName, $version); if (count($packages) > 1) { $package = reset($packages); $io->writeError('Found multiple matches, selected '.$package->getPrettyString().'.'); $io->writeError('Alternatives were '.implode(', ', array_map(function ($p) { return $p->getPrettyString(); }, $packages)).'.'); $io->writeError('Please use a more specific constraint to pick a different package.'); } elseif ($packages) { $package = reset($packages); $io->writeError('Found an exact match '.$package->getPrettyString().'.'); } else { $io->writeError('Could not find a package matching '.$packageName.'.'); return false; } return $package; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Factory; use Composer\Json\JsonFile; use Composer\Package\BasePackage; use Composer\Package\Package; use Composer\Package\Version\VersionParser; use Composer\Package\Version\VersionSelector; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\RepositoryFactory; use Composer\Repository\RepositorySet; use Composer\Util\ProcessExecutor; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Process\ExecutableFinder; use Symfony\Component\Process\Process; /** * @author Justin Rainbow * @author Jordi Boggiano */ class InitCommand extends BaseCommand { /** @var CompositeRepository */ protected $repos; /** @var array */ private $gitConfig; /** @var RepositorySet[] */ private $repositorySets; /** * {@inheritdoc} */ protected function configure() { $this ->setName('init') ->setDescription('Creates a basic composer.json file in current directory.') ->setDefinition(array( new InputOption('name', null, InputOption::VALUE_REQUIRED, 'Name of the package'), new InputOption('description', null, InputOption::VALUE_REQUIRED, 'Description of package'), new InputOption('author', null, InputOption::VALUE_REQUIRED, 'Author name of package'), // new InputOption('version', null, InputOption::VALUE_NONE, 'Version of package'), new InputOption('type', null, InputOption::VALUE_OPTIONAL, 'Type of package (e.g. library, project, metapackage, composer-plugin)'), new InputOption('homepage', null, InputOption::VALUE_REQUIRED, 'Homepage of package'), new InputOption('require', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), new InputOption('require-dev', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Package to require for development with a version constraint, e.g. foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum stability (empty or one of: '.implode(', ', array_keys(BasePackage::$stabilities)).')'), new InputOption('license', 'l', InputOption::VALUE_REQUIRED, 'License of package'), new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories, either by URL or using JSON arrays'), )) ->setHelp( <<init command creates a basic composer.json file in the current directory. php composer.phar init Read more at https://getcomposer.org/doc/03-cli.md#init EOT ) ; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $io = $this->getIO(); $allowlist = array('name', 'description', 'author', 'type', 'homepage', 'require', 'require-dev', 'stability', 'license'); $options = array_filter(array_intersect_key($input->getOptions(), array_flip($allowlist))); if (isset($options['author'])) { $options['authors'] = $this->formatAuthors($options['author']); unset($options['author']); } $repositories = $input->getOption('repository'); if ($repositories) { $config = Factory::createConfig($io); foreach ($repositories as $repo) { $options['repositories'][] = RepositoryFactory::configFromString($io, $config, $repo, true); } } if (isset($options['stability'])) { $options['minimum-stability'] = $options['stability']; unset($options['stability']); } $options['require'] = isset($options['require']) ? $this->formatRequirements($options['require']) : new \stdClass; if (array() === $options['require']) { $options['require'] = new \stdClass; } if (isset($options['require-dev'])) { $options['require-dev'] = $this->formatRequirements($options['require-dev']); if (array() === $options['require-dev']) { $options['require-dev'] = new \stdClass; } } $file = new JsonFile(Factory::getComposerFile()); $json = JsonFile::encode($options); if ($input->isInteractive()) { $io->writeError(array('', $json, '')); if (!$io->askConfirmation('Do you confirm generation [yes]? ')) { $io->writeError('Command aborted'); return 1; } } else { if (json_encode($options) === '{"require":{}}') { throw new \RuntimeException('You have to run this command in interactive mode, or specify at least some data using --name, --require, etc.'); } $io->writeError('Writing composer.json'); } $file->write($options); if ($input->isInteractive() && is_dir('.git')) { $ignoreFile = realpath('.gitignore'); if (false === $ignoreFile) { $ignoreFile = realpath('.') . '/.gitignore'; } if (!$this->hasVendorIgnore($ignoreFile)) { $question = 'Would you like the vendor directory added to your .gitignore [yes]? '; if ($io->askConfirmation($question)) { $this->addVendorIgnore($ignoreFile); } } } $question = 'Would you like to install dependencies now [yes]? '; if ($input->isInteractive() && $this->hasDependencies($options) && $io->askConfirmation($question)) { $this->updateDependencies($output); } return 0; } /** * {@inheritdoc} */ protected function interact(InputInterface $input, OutputInterface $output) { $git = $this->getGitConfig(); $io = $this->getIO(); $formatter = $this->getHelperSet()->get('formatter'); // initialize repos if configured $repositories = $input->getOption('repository'); if ($repositories) { $config = Factory::createConfig($io); $repos = array(new PlatformRepository); $createDefaultPackagistRepo = true; foreach ($repositories as $repo) { $repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); if ( (isset($repoConfig['packagist']) && $repoConfig === array('packagist' => false)) || (isset($repoConfig['packagist.org']) && $repoConfig === array('packagist.org' => false)) ) { $createDefaultPackagistRepo = false; continue; } $repos[] = RepositoryFactory::createRepo($io, $config, $repoConfig); } if ($createDefaultPackagistRepo) { $repos[] = RepositoryFactory::createRepo($io, $config, array( 'type' => 'composer', 'url' => 'https://repo.packagist.org', )); } $this->repos = new CompositeRepository($repos); unset($repos, $config, $repositories); } $io->writeError(array( '', $formatter->formatBlock('Welcome to the Composer config generator', 'bg=blue;fg=white', true), '', )); // namespace $io->writeError(array( '', 'This command will guide you through creating your composer.json config.', '', )); $cwd = realpath("."); if (!$name = $input->getOption('name')) { $name = basename($cwd); $name = preg_replace('{(?:([a-z])([A-Z])|([A-Z])([A-Z][a-z]))}', '\\1\\3-\\2\\4', $name); $name = strtolower($name); if (!empty($_SERVER['COMPOSER_DEFAULT_VENDOR'])) { $name = $_SERVER['COMPOSER_DEFAULT_VENDOR'] . '/' . $name; } elseif (isset($git['github.user'])) { $name = $git['github.user'] . '/' . $name; } elseif (!empty($_SERVER['USERNAME'])) { $name = $_SERVER['USERNAME'] . '/' . $name; } elseif (!empty($_SERVER['USER'])) { $name = $_SERVER['USER'] . '/' . $name; } elseif (get_current_user()) { $name = get_current_user() . '/' . $name; } else { // package names must be in the format foo/bar $name .= '/' . $name; } $name = strtolower($name); } else { if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $name)) { throw new \InvalidArgumentException( 'The package name '.$name.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' ); } } $name = $io->askAndValidate( 'Package name (/) ['.$name.']: ', function ($value) use ($name) { if (null === $value) { return $name; } if (!preg_match('{^[a-z0-9_.-]+/[a-z0-9_.-]+$}D', $value)) { throw new \InvalidArgumentException( 'The package name '.$value.' is invalid, it should be lowercase and have a vendor name, a forward slash, and a package name, matching: [a-z0-9_.-]+/[a-z0-9_.-]+' ); } return $value; }, null, $name ); $input->setOption('name', $name); $description = $input->getOption('description') ?: false; $description = $io->ask( 'Description ['.$description.']: ', $description ); $input->setOption('description', $description); if (null === $author = $input->getOption('author')) { if (!empty($_SERVER['COMPOSER_DEFAULT_AUTHOR'])) { $author_name = $_SERVER['COMPOSER_DEFAULT_AUTHOR']; } elseif (isset($git['user.name'])) { $author_name = $git['user.name']; } if (!empty($_SERVER['COMPOSER_DEFAULT_EMAIL'])) { $author_email = $_SERVER['COMPOSER_DEFAULT_EMAIL']; } elseif (isset($git['user.email'])) { $author_email = $git['user.email']; } if (isset($author_name, $author_email)) { $author = sprintf('%s <%s>', $author_name, $author_email); } } $self = $this; $author = $io->askAndValidate( 'Author ['.$author.', n to skip]: ', function ($value) use ($self, $author) { if ($value === 'n' || $value === 'no') { return; } $value = $value ?: $author; $author = $self->parseAuthorString($value); return sprintf('%s <%s>', $author['name'], $author['email']); }, null, $author ); $input->setOption('author', $author); $minimumStability = $input->getOption('stability') ?: null; $minimumStability = $io->askAndValidate( 'Minimum Stability ['.$minimumStability.']: ', function ($value) use ($minimumStability) { if (null === $value) { return $minimumStability; } if (!isset(BasePackage::$stabilities[$value])) { throw new \InvalidArgumentException( 'Invalid minimum stability "'.$value.'". Must be empty or one of: '. implode(', ', array_keys(BasePackage::$stabilities)) ); } return $value; }, null, $minimumStability ); $input->setOption('stability', $minimumStability); $type = $input->getOption('type') ?: false; $type = $io->ask( 'Package Type (e.g. library, project, metapackage, composer-plugin) ['.$type.']: ', $type ); $input->setOption('type', $type); if (null === $license = $input->getOption('license')) { if (!empty($_SERVER['COMPOSER_DEFAULT_LICENSE'])) { $license = $_SERVER['COMPOSER_DEFAULT_LICENSE']; } } $license = $io->ask( 'License ['.$license.']: ', $license ); $input->setOption('license', $license); $io->writeError(array('', 'Define your dependencies.', '')); // prepare to resolve dependencies $repos = $this->getRepos(); $preferredStability = $minimumStability ?: 'stable'; $platformRepo = null; if ($repos instanceof CompositeRepository) { foreach ($repos->getRepositories() as $candidateRepo) { if ($candidateRepo instanceof PlatformRepository) { $platformRepo = $candidateRepo; break; } } } $question = 'Would you like to define your dependencies (require) interactively [yes]? '; $require = $input->getOption('require'); $requirements = array(); if ($require || $io->askConfirmation($question)) { $requirements = $this->determineRequirements($input, $output, $require, $platformRepo, $preferredStability); } $input->setOption('require', $requirements); $question = 'Would you like to define your dev dependencies (require-dev) interactively [yes]? '; $requireDev = $input->getOption('require-dev'); $devRequirements = array(); if ($requireDev || $io->askConfirmation($question)) { $devRequirements = $this->determineRequirements($input, $output, $requireDev, $platformRepo, $preferredStability); } $input->setOption('require-dev', $devRequirements); } /** * @private * @param string $author * @return array */ public function parseAuthorString($author) { if (preg_match('/^(?P[- .,\p{L}\p{N}\p{Mn}\'’"()]+) <(?P.+?)>$/u', $author, $match)) { if ($this->isValidEmail($match['email'])) { return array( 'name' => trim($match['name']), 'email' => $match['email'], ); } } throw new \InvalidArgumentException( 'Invalid author string. Must be in the format: '. 'John Smith ' ); } protected function findPackages($name) { return $this->getRepos()->search($name); } protected function getRepos() { if (!$this->repos) { $this->repos = new CompositeRepository(array_merge( array(new PlatformRepository), RepositoryFactory::defaultRepos($this->getIO()) )); } return $this->repos; } final protected function determineRequirements(InputInterface $input, OutputInterface $output, $requires = array(), PlatformRepository $platformRepo = null, $preferredStability = 'stable', $checkProvidedVersions = true, $fixed = false) { if ($requires) { $requires = $this->normalizeRequirements($requires); $result = array(); $io = $this->getIO(); foreach ($requires as $requirement) { if (!isset($requirement['version'])) { // determine the best version automatically list($name, $version) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $platformRepo, $preferredStability, null, null, $fixed); $requirement['version'] = $version; // replace package name from packagist.org $requirement['name'] = $name; $io->writeError(sprintf( 'Using version %s for %s', $requirement['version'], $requirement['name'] )); } else { // check that the specified version/constraint exists before we proceed list($name) = $this->findBestVersionAndNameForPackage($input, $requirement['name'], $platformRepo, $preferredStability, $checkProvidedVersions ? $requirement['version'] : null, 'dev', $fixed); // replace package name from packagist.org $requirement['name'] = $name; } $result[] = $requirement['name'] . ' ' . $requirement['version']; } return $result; } $versionParser = new VersionParser(); // Collect existing packages $composer = $this->getComposer(false); $installedRepo = $composer ? $composer->getRepositoryManager()->getLocalRepository() : null; $existingPackages = array(); if ($installedRepo) { foreach ($installedRepo->getPackages() as $package) { $existingPackages[] = $package->getName(); } } unset($composer, $installedRepo); $io = $this->getIO(); while (null !== $package = $io->ask('Search for a package: ')) { $matches = $this->findPackages($package); if (count($matches)) { // Remove existing packages from search results. foreach ($matches as $position => $foundPackage) { if (in_array($foundPackage['name'], $existingPackages, true)) { unset($matches[$position]); } } $matches = array_values($matches); $exactMatch = null; $choices = array(); foreach ($matches as $position => $foundPackage) { $abandoned = ''; if (isset($foundPackage['abandoned'])) { if (is_string($foundPackage['abandoned'])) { $replacement = sprintf('Use %s instead', $foundPackage['abandoned']); } else { $replacement = 'No replacement was suggested'; } $abandoned = sprintf('Abandoned. %s.', $replacement); } $choices[] = sprintf(' %5s %s %s', "[$position]", $foundPackage['name'], $abandoned); if ($foundPackage['name'] === $package) { $exactMatch = true; break; } } // no match, prompt which to pick if (!$exactMatch) { $io->writeError(array( '', sprintf('Found %s packages matching %s', count($matches), $package), '', )); $io->writeError($choices); $io->writeError(''); $validator = function ($selection) use ($matches, $versionParser) { if ('' === $selection) { return false; } if (is_numeric($selection) && isset($matches[(int) $selection])) { $package = $matches[(int) $selection]; return $package['name']; } if (preg_match('{^\s*(?P[\S/]+)(?:\s+(?P\S+))?\s*$}', $selection, $packageMatches)) { if (isset($packageMatches['version'])) { // parsing `acme/example ~2.3` // validate version constraint $versionParser->parseConstraints($packageMatches['version']); return $packageMatches['name'].' '.$packageMatches['version']; } // parsing `acme/example` return $packageMatches['name']; } throw new \Exception('Not a valid selection'); }; $package = $io->askAndValidate( 'Enter package # to add, or the complete package name if it is not listed: ', $validator, 3, false ); } // no constraint yet, determine the best version automatically if (false !== $package && false === strpos($package, ' ')) { $validator = function ($input) { $input = trim($input); return $input ?: false; }; $constraint = $io->askAndValidate( 'Enter the version constraint to require (or leave blank to use the latest version): ', $validator, 3, false ); if (false === $constraint) { list(, $constraint) = $this->findBestVersionAndNameForPackage($input, $package, $platformRepo, $preferredStability); $io->writeError(sprintf( 'Using version %s for %s', $constraint, $package )); } $package .= ' '.$constraint; } if (false !== $package) { $requires[] = $package; $existingPackages[] = substr($package, 0, strpos($package, ' ')); } } } return $requires; } protected function formatAuthors($author) { return array($this->parseAuthorString($author)); } protected function getGitConfig() { if (null !== $this->gitConfig) { return $this->gitConfig; } $finder = new ExecutableFinder(); $gitBin = $finder->find('git'); // TODO in v3 always call with an array if (method_exists('Symfony\Component\Process\Process', 'fromShellCommandline')) { $cmd = new Process(array($gitBin, 'config', '-l')); } else { $cmd = new Process(sprintf('%s config -l', ProcessExecutor::escape($gitBin))); } $cmd->run(); if ($cmd->isSuccessful()) { $this->gitConfig = array(); preg_match_all('{^([^=]+)=(.*)$}m', $cmd->getOutput(), $matches, PREG_SET_ORDER); foreach ($matches as $match) { $this->gitConfig[$match[1]] = $match[2]; } return $this->gitConfig; } return $this->gitConfig = array(); } /** * Checks the local .gitignore file for the Composer vendor directory. * * Tested patterns include: * "/$vendor" * "$vendor" * "$vendor/" * "/$vendor/" * "/$vendor/*" * "$vendor/*" * * @param string $ignoreFile * @param string $vendor * * @return bool */ protected function hasVendorIgnore($ignoreFile, $vendor = 'vendor') { if (!file_exists($ignoreFile)) { return false; } $pattern = sprintf('{^/?%s(/\*?)?$}', preg_quote($vendor)); $lines = file($ignoreFile, FILE_IGNORE_NEW_LINES); foreach ($lines as $line) { if (preg_match($pattern, $line)) { return true; } } return false; } protected function addVendorIgnore($ignoreFile, $vendor = '/vendor/') { $contents = ""; if (file_exists($ignoreFile)) { $contents = file_get_contents($ignoreFile); if (strpos($contents, "\n") !== 0) { $contents .= "\n"; } } file_put_contents($ignoreFile, $contents . $vendor. "\n"); } protected function isValidEmail($email) { // assume it's valid if we can't validate it if (!function_exists('filter_var')) { return true; } // php <5.3.3 has a very broken email validator, so bypass checks if (PHP_VERSION_ID < 50303) { return true; } return false !== filter_var($email, FILTER_VALIDATE_EMAIL); } private function getRepositorySet(InputInterface $input, $minimumStability = null) { $key = $minimumStability ?: 'default'; if (!isset($this->repositorySets[$key])) { $this->repositorySets[$key] = $repositorySet = new RepositorySet($minimumStability ?: $this->getMinimumStability($input)); $repositorySet->addRepository($this->getRepos()); } return $this->repositorySets[$key]; } private function getMinimumStability(InputInterface $input) { if ($input->hasOption('stability')) { return VersionParser::normalizeStability($input->getOption('stability') ?: 'stable'); } $file = Factory::getComposerFile(); if (is_file($file) && is_readable($file) && is_array($composer = json_decode(file_get_contents($file), true))) { if (!empty($composer['minimum-stability'])) { return VersionParser::normalizeStability($composer['minimum-stability']); } } return 'stable'; } /** * Given a package name, this determines the best version to use in the require key. * * This returns a version with the ~ operator prefixed when possible. * * @param InputInterface $input * @param string $name * @param PlatformRepository|null $platformRepo * @param string $preferredStability * @param string|null $requiredVersion * @param string $minimumStability * @param bool $fixed * @throws \InvalidArgumentException * @return array name version */ private function findBestVersionAndNameForPackage(InputInterface $input, $name, PlatformRepository $platformRepo = null, $preferredStability = 'stable', $requiredVersion = null, $minimumStability = null, $fixed = null) { // handle ignore-platform-reqs flag if present $ignorePlatformReqs = false; if ($input->hasOption('ignore-platform-reqs') && $input->hasOption('ignore-platform-req')) { $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); } // find the latest version allowed in this repo set $versionSelector = new VersionSelector($this->getRepositorySet($input, $minimumStability), $platformRepo); $package = $versionSelector->findBestCandidate($name, $requiredVersion, $preferredStability, $ignorePlatformReqs); if (!$package) { // platform packages can not be found in the pool in versions other than the local platform's has // so if platform reqs are ignored we just take the user's word for it if ((true === $ignorePlatformReqs || (is_array($ignorePlatformReqs) && in_array($name, $ignorePlatformReqs))) && PlatformRepository::isPlatformPackage($name)) { return array($name, $requiredVersion ?: '*'); } // Check whether the PHP version was the problem if (true !== $ignorePlatformReqs && $versionSelector->findBestCandidate($name, $requiredVersion, $preferredStability, true)) { throw new \InvalidArgumentException(sprintf( 'Package %s%s has a PHP requirement incompatible with your PHP version, PHP extensions and Composer version', $name, $requiredVersion ? ' at version '.$requiredVersion : '' )); } // Check whether the minimum stability was the problem but the package exists if ($package = $versionSelector->findBestCandidate($name, $requiredVersion, $preferredStability, $ignorePlatformReqs, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { // we must first verify if a valid package would be found in a lower priority repository if ($allReposPackage = $versionSelector->findBestCandidate($name, $requiredVersion, $preferredStability, $ignorePlatformReqs, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { throw new \InvalidArgumentException( 'Package '.$name.' exists in '.$allReposPackage->getRepository()->getRepoName().' and '.$package->getRepository()->getRepoName().' which has a higher repository priority. The packages with higher priority do not match your minimum-stability and are therefore not installable. See https://getcomposer.org/repoprio for details and assistance.' ); } throw new \InvalidArgumentException(sprintf( 'Could not find a version of package %s matching your minimum-stability (%s). Require it with an explicit version constraint allowing its desired stability.', $name, $this->getMinimumStability($input) )); } // Check whether the required version was the problem if ($requiredVersion && $package = $versionSelector->findBestCandidate($name, null, $preferredStability, $ignorePlatformReqs)) { // we must first verify if a valid package would be found in a lower priority repository if ($allReposPackage = $versionSelector->findBestCandidate($name, $requiredVersion, $preferredStability, false, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { throw new \InvalidArgumentException( 'Package '.$name.' exists in '.$allReposPackage->getRepository()->getRepoName().' and '.$package->getRepository()->getRepoName().' which has a higher repository priority. The packages with higher priority do not match your constraint and are therefore not installable. See https://getcomposer.org/repoprio for details and assistance.' ); } throw new \InvalidArgumentException(sprintf( 'Could not find package %s in a version matching %s', $name, $requiredVersion )); } // Check whether the PHP version was the problem for all versions if (true !== $ignorePlatformReqs && $versionSelector->findBestCandidate($name, null, $preferredStability, true)) { throw new \InvalidArgumentException(sprintf( 'Could not find package %s in any version matching your PHP version, PHP extensions and Composer version', $name )); } // Check for similar names/typos $similar = $this->findSimilar($name); if ($similar) { throw new \InvalidArgumentException(sprintf( "Could not find package %s.\n\nDid you mean " . (count($similar) > 1 ? 'one of these' : 'this') . "?\n %s", $name, implode("\n ", $similar) )); } throw new \InvalidArgumentException(sprintf( 'Could not find a matching version of package %s. Check the package spelling, your version constraint and that the package is available in a stability which matches your minimum-stability (%s).', $name, $this->getMinimumStability($input) )); } return array( $package->getPrettyName(), $fixed ? $package->getPrettyVersion() : $versionSelector->findRecommendedRequireVersion($package), ); } private function findSimilar($package) { try { $results = $this->repos->search($package); } catch (\Exception $e) { // ignore search errors return array(); } $similarPackages = array(); $installedRepo = $this->getComposer()->getRepositoryManager()->getLocalRepository(); foreach ($results as $result) { if ($installedRepo->findPackage($result['name'], '*')) { // Ignore installed package continue; } $similarPackages[$result['name']] = levenshtein($package, $result['name']); } asort($similarPackages); return array_keys(array_slice($similarPackages, 0, 5)); } private function updateDependencies($output) { try { $updateCommand = $this->getApplication()->find('update'); $this->getApplication()->resetComposer(); $updateCommand->run(new ArrayInput(array()), $output); } catch (\Exception $e) { $this->getIO()->writeError('Could not update dependencies. Run `composer update` to see more information.'); } } private function hasDependencies($options) { $requires = (array) $options['require']; $devRequires = isset($options['require-dev']) ? (array) $options['require-dev'] : array(); return !empty($requires) || !empty($devRequires); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Script\Event as ScriptEvent; use Composer\Script\ScriptEvents; use Composer\Util\ProcessExecutor; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; /** * @author Fabien Potencier */ class RunScriptCommand extends BaseCommand { /** * @var array Array with command events */ protected $scriptEvents = array( ScriptEvents::PRE_INSTALL_CMD, ScriptEvents::POST_INSTALL_CMD, ScriptEvents::PRE_UPDATE_CMD, ScriptEvents::POST_UPDATE_CMD, ScriptEvents::PRE_STATUS_CMD, ScriptEvents::POST_STATUS_CMD, ScriptEvents::POST_ROOT_PACKAGE_INSTALL, ScriptEvents::POST_CREATE_PROJECT_CMD, ScriptEvents::PRE_ARCHIVE_CMD, ScriptEvents::POST_ARCHIVE_CMD, ScriptEvents::PRE_AUTOLOAD_DUMP, ScriptEvents::POST_AUTOLOAD_DUMP, ); protected function configure() { $this ->setName('run-script') ->setAliases(array('run')) ->setDescription('Runs the scripts defined in composer.json.') ->setDefinition(array( new InputArgument('script', InputArgument::OPTIONAL, 'Script name to run.'), new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), new InputOption('timeout', null, InputOption::VALUE_REQUIRED, 'Sets script timeout in seconds, or 0 for never.'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Sets the dev mode.'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables the dev mode.'), new InputOption('list', 'l', InputOption::VALUE_NONE, 'List scripts.'), )) ->setHelp( <<run-script command runs scripts defined in composer.json: php composer.phar run-script post-update-cmd Read more at https://getcomposer.org/doc/03-cli.md#run-script EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { if ($input->getOption('list')) { return $this->listScripts($output); } if (!$input->getArgument('script')) { throw new \RuntimeException('Missing required argument "script"'); } $script = $input->getArgument('script'); if (!in_array($script, $this->scriptEvents)) { if (defined('Composer\Script\ScriptEvents::'.str_replace('-', '_', strtoupper($script)))) { throw new \InvalidArgumentException(sprintf('Script "%s" cannot be run with this command', $script)); } } $composer = $this->getComposer(); $devMode = $input->getOption('dev') || !$input->getOption('no-dev'); $event = new ScriptEvent($script, $composer, $this->getIO(), $devMode); $hasListeners = $composer->getEventDispatcher()->hasEventListeners($event); if (!$hasListeners) { throw new \InvalidArgumentException(sprintf('Script "%s" is not defined in this package', $script)); } $args = $input->getArgument('args'); if (null !== $timeout = $input->getOption('timeout')) { if (!ctype_digit($timeout)) { throw new \RuntimeException('Timeout value must be numeric and positive if defined, or 0 for forever'); } // Override global timeout set before in Composer by environment or config ProcessExecutor::setTimeout((int) $timeout); } return $composer->getEventDispatcher()->dispatchScript($script, $devMode, $args); } protected function listScripts(OutputInterface $output) { $scripts = $this->getComposer()->getPackage()->getScripts(); if (!count($scripts)) { return 0; } $io = $this->getIO(); $io->writeError('scripts:'); $table = array(); foreach ($scripts as $name => $script) { $description = ''; try { $cmd = $this->getApplication()->find($name); if ($cmd instanceof ScriptAliasCommand) { $description = $cmd->getDescription(); } } catch (\Symfony\Component\Console\Exception\CommandNotFoundException $e) { // ignore scripts that have no command associated, like native Composer script listeners } $table[] = array(' '.$name, $description); } $this->renderTable($table, $output); return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Factory; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\RepositoryInterface; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; /** * @author Robert Schönthal */ class SearchCommand extends BaseCommand { protected $matches; protected $lowMatches = array(); protected $tokens; protected $output; protected $onlyName; protected function configure() { $this ->setName('search') ->setDescription('Searches for packages.') ->setDefinition(array( new InputOption('only-name', 'N', InputOption::VALUE_NONE, 'Search only in name'), new InputOption('type', 't', InputOption::VALUE_REQUIRED, 'Search for a specific package type'), new InputArgument('tokens', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'tokens to search for'), )) ->setHelp( <<php composer.phar search symfony composer Read more at https://getcomposer.org/doc/03-cli.md#search EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { // init repos $platformRepo = new PlatformRepository; $io = $this->getIO(); if (!($composer = $this->getComposer(false))) { $composer = Factory::create($this->getIO(), array(), $input->hasParameterOption('--no-plugins')); } $localRepo = $composer->getRepositoryManager()->getLocalRepository(); $installedRepo = new CompositeRepository(array($localRepo, $platformRepo)); $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'search', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $onlyName = $input->getOption('only-name'); $type = $input->getOption('type') ?: null; $flags = $onlyName ? RepositoryInterface::SEARCH_NAME : RepositoryInterface::SEARCH_FULLTEXT; $results = $repos->search(implode(' ', $input->getArgument('tokens')), $flags, $type); foreach ($results as $result) { $io->write($result['name'] . (isset($result['description']) ? ' '. $result['description'] : '')); } return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Composer; use Composer\Factory; use Composer\Config; use Composer\Downloader\TransportException; use Composer\Repository\PlatformRepository; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Util\ConfigValidator; use Composer\Util\IniHelper; use Composer\Util\ProcessExecutor; use Composer\Util\HttpDownloader; use Composer\Util\StreamContextFactory; use Composer\SelfUpdate\Keys; use Composer\SelfUpdate\Versions; use Composer\IO\NullIO; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Process\ExecutableFinder; /** * @author Jordi Boggiano */ class DiagnoseCommand extends BaseCommand { /** @var HttpDownloader */ protected $httpDownloader; /** @var ProcessExecutor */ protected $process; /** @var int */ protected $exitCode = 0; protected function configure() { $this ->setName('diagnose') ->setDescription('Diagnoses the system to identify common errors.') ->setHelp( <<diagnose command checks common errors to help debugging problems. The process exit code will be 1 in case of warnings and 2 for errors. Read more at https://getcomposer.org/doc/03-cli.md#diagnose EOT ) ; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(false); $io = $this->getIO(); if ($composer) { $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'diagnose', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $io->write('Checking composer.json: ', false); $this->outputResult($this->checkComposerSchema()); } if ($composer) { $config = $composer->getConfig(); } else { $config = Factory::createConfig(); } $config->merge(array('config' => array('secure-http' => false))); $config->prohibitUrlByConfig('http://repo.packagist.org', new NullIO); $this->httpDownloader = Factory::createHttpDownloader($io, $config); $this->process = new ProcessExecutor($io); $io->write('Checking platform settings: ', false); $this->outputResult($this->checkPlatform()); $io->write('Checking git settings: ', false); $this->outputResult($this->checkGit()); $io->write('Checking http connectivity to packagist: ', false); $this->outputResult($this->checkHttp('http', $config)); $io->write('Checking https connectivity to packagist: ', false); $this->outputResult($this->checkHttp('https', $config)); $opts = stream_context_get_options(StreamContextFactory::getContext('http://example.org')); if (!empty($opts['http']['proxy'])) { $io->write('Checking HTTP proxy: ', false); $this->outputResult($this->checkHttpProxy()); } if ($oauth = $config->get('github-oauth')) { foreach ($oauth as $domain => $token) { $io->write('Checking '.$domain.' oauth access: ', false); $this->outputResult($this->checkGithubOauth($domain, $token)); } } else { $io->write('Checking github.com rate limit: ', false); try { $rate = $this->getGithubRateLimit('github.com'); if (!is_array($rate)) { $this->outputResult($rate); } elseif (10 > $rate['remaining']) { $io->write('WARNING'); $io->write(sprintf( 'Github has a rate limit on their API. ' . 'You currently have %u ' . 'out of %u requests left.' . PHP_EOL . 'See https://developer.github.com/v3/#rate-limiting and also' . PHP_EOL . ' https://getcomposer.org/doc/articles/troubleshooting.md#api-rate-limit-and-oauth-tokens', $rate['remaining'], $rate['limit'] )); } else { $this->outputResult(true); } } catch (\Exception $e) { if ($e instanceof TransportException && $e->getCode() === 401) { $this->outputResult('The oauth token for github.com seems invalid, run "composer config --global --unset github-oauth.github.com" to remove it'); } else { $this->outputResult($e); } } } $io->write('Checking disk free space: ', false); $this->outputResult($this->checkDiskSpace($config)); if (strpos(__FILE__, 'phar:') === 0) { $io->write('Checking pubkeys: ', false); $this->outputResult($this->checkPubKeys($config)); $io->write('Checking composer version: ', false); $this->outputResult($this->checkVersion($config)); } $io->write(sprintf('Composer version: %s', Composer::getVersion())); $platformOverrides = $config->get('platform') ?: array(); $platformRepo = new PlatformRepository(array(), $platformOverrides); $phpPkg = $platformRepo->findPackage('php', '*'); $phpVersion = $phpPkg->getPrettyVersion(); if (false !== strpos($phpPkg->getDescription(), 'overridden')) { $phpVersion .= ' - ' . $phpPkg->getDescription(); } $io->write(sprintf('PHP version: %s', $phpVersion)); if (defined('PHP_BINARY')) { $io->write(sprintf('PHP binary path: %s', PHP_BINARY)); } $io->write('OpenSSL version: ' . (defined('OPENSSL_VERSION_TEXT') ? ''.OPENSSL_VERSION_TEXT.'' : 'missing')); $io->write('cURL version: ' . $this->getCurlVersion()); $finder = new ExecutableFinder; $hasSystemUnzip = (bool) $finder->find('unzip'); $io->write( 'zip: ' . (extension_loaded('zip') ? 'extension present' : 'extension not loaded') . ', ' . ($hasSystemUnzip ? 'unzip present' : 'unzip not available') ); return $this->exitCode; } private function checkComposerSchema() { $validator = new ConfigValidator($this->getIO()); list($errors, , $warnings) = $validator->validate(Factory::getComposerFile()); if ($errors || $warnings) { $messages = array( 'error' => $errors, 'warning' => $warnings, ); $output = ''; foreach ($messages as $style => $msgs) { foreach ($msgs as $msg) { $output .= '<' . $style . '>' . $msg . '' . PHP_EOL; } } return rtrim($output); } return true; } private function checkGit() { $this->process->execute('git config color.ui', $output); if (strtolower(trim($output)) === 'always') { return 'Your git color.ui setting is set to always, this is known to create issues. Use "git config --global color.ui true" to set it correctly.'; } return true; } private function checkHttp($proto, Config $config) { $result = $this->checkConnectivity(); if ($result !== true) { return $result; } $result = array(); if ($proto === 'https' && $config->get('disable-tls') === true) { $tlsWarning = 'Composer is configured to disable SSL/TLS protection. This will leave remote HTTPS requests vulnerable to Man-In-The-Middle attacks.'; } try { $this->httpDownloader->get($proto . '://repo.packagist.org/packages.json'); } catch (TransportException $e) { if ($hints = HttpDownloader::getExceptionHints($e)) { foreach ($hints as $hint) { $result[] = $hint; } } $result[] = '[' . get_class($e) . '] ' . $e->getMessage() . ''; } if (isset($tlsWarning)) { $result[] = $tlsWarning; } if (count($result) > 0) { return $result; } return true; } private function checkHttpProxy() { $result = $this->checkConnectivity(); if ($result !== true) { return $result; } $protocol = extension_loaded('openssl') ? 'https' : 'http'; try { $json = $this->httpDownloader->get($protocol . '://repo.packagist.org/packages.json')->decodeJson(); $hash = reset($json['provider-includes']); $hash = $hash['sha256']; $path = str_replace('%hash%', $hash, key($json['provider-includes'])); $provider = $this->httpDownloader->get($protocol . '://repo.packagist.org/'.$path)->getBody(); if (hash('sha256', $provider) !== $hash) { return 'It seems that your proxy is modifying http traffic on the fly'; } } catch (\Exception $e) { return $e; } return true; } private function checkGithubOauth($domain, $token) { $result = $this->checkConnectivity(); if ($result !== true) { return $result; } $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); try { $url = $domain === 'github.com' ? 'https://api.'.$domain.'/' : 'https://'.$domain.'/api/v3/'; return $this->httpDownloader->get($url, array( 'retry-auth-failure' => false, )) ? true : 'Unexpected error'; } catch (\Exception $e) { if ($e instanceof TransportException && $e->getCode() === 401) { return 'The oauth token for '.$domain.' seems invalid, run "composer config --global --unset github-oauth.'.$domain.'" to remove it'; } return $e; } } /** * @param string $domain * @param string $token * @throws TransportException * @return array|string */ private function getGithubRateLimit($domain, $token = null) { $result = $this->checkConnectivity(); if ($result !== true) { return $result; } if ($token) { $this->getIO()->setAuthentication($domain, $token, 'x-oauth-basic'); } $url = $domain === 'github.com' ? 'https://api.'.$domain.'/rate_limit' : 'https://'.$domain.'/api/rate_limit'; $data = $this->httpDownloader->get($url, array('retry-auth-failure' => false))->decodeJson(); return $data['resources']['core']; } private function checkDiskSpace($config) { $minSpaceFree = 1024 * 1024; if ((($df = @disk_free_space($dir = $config->get('home'))) !== false && $df < $minSpaceFree) || (($df = @disk_free_space($dir = $config->get('vendor-dir'))) !== false && $df < $minSpaceFree) ) { return 'The disk hosting '.$dir.' is full'; } return true; } private function checkPubKeys($config) { $home = $config->get('home'); $errors = array(); $io = $this->getIO(); if (file_exists($home.'/keys.tags.pub') && file_exists($home.'/keys.dev.pub')) { $io->write(''); } if (file_exists($home.'/keys.tags.pub')) { $io->write('Tags Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.tags.pub')); } else { $errors[] = 'Missing pubkey for tags verification'; } if (file_exists($home.'/keys.dev.pub')) { $io->write('Dev Public Key Fingerprint: ' . Keys::fingerprint($home.'/keys.dev.pub')); } else { $errors[] = 'Missing pubkey for dev verification'; } if ($errors) { $errors[] = 'Run composer self-update --update-keys to set them up'; } return $errors ?: true; } private function checkVersion($config) { $result = $this->checkConnectivity(); if ($result !== true) { return $result; } $versionsUtil = new Versions($config, $this->httpDownloader); try { $latest = $versionsUtil->getLatest(); } catch (\Exception $e) { return $e; } if (Composer::VERSION !== $latest['version'] && Composer::VERSION !== '@package_version@') { return 'You are not running the latest '.$versionsUtil->getChannel().' version, run `composer self-update` to update ('.Composer::VERSION.' => '.$latest['version'].')'; } return true; } private function getCurlVersion() { if (extension_loaded('curl')) { if (!HttpDownloader::isCurlEnabled()) { return 'disabled via disable_functions, using php streams fallback, which reduces performance'; } $version = curl_version(); return ''.$version['version'].' '. 'libz '.(isset($version['libz_version']) ? $version['libz_version'] : 'missing').' '. 'ssl '.(isset($version['ssl_version']) ? $version['ssl_version'] : 'missing').''; } return 'missing, using php streams fallback, which reduces performance'; } /** * @param bool|string|\Exception $result */ private function outputResult($result) { $io = $this->getIO(); if (true === $result) { $io->write('OK'); return; } $hadError = false; $hadWarning = false; if ($result instanceof \Exception) { $result = '['.get_class($result).'] '.$result->getMessage().''; } if (!$result) { // falsey results should be considered as an error, even if there is nothing to output $hadError = true; } else { if (!is_array($result)) { $result = array($result); } foreach ($result as $message) { if (false !== strpos($message, '')) { $hadError = true; } elseif (false !== strpos($message, '')) { $hadWarning = true; } } } if ($hadError) { $io->write('FAIL'); $this->exitCode = max($this->exitCode, 2); } elseif ($hadWarning) { $io->write('WARNING'); $this->exitCode = max($this->exitCode, 1); } if ($result) { foreach ($result as $message) { $io->write($message); } } } private function checkPlatform() { $output = ''; $out = function ($msg, $style) use (&$output) { $output .= '<'.$style.'>'.$msg.''.PHP_EOL; }; // code below taken from getcomposer.org/installer, any changes should be made there and replicated here $errors = array(); $warnings = array(); $displayIniMessage = false; $iniMessage = PHP_EOL.PHP_EOL.IniHelper::getMessage(); $iniMessage .= PHP_EOL.'If you can not modify the ini file, you can also run `php -d option=value` to modify ini values on the fly. You can use -d multiple times.'; if (!function_exists('json_decode')) { $errors['json'] = true; } if (!extension_loaded('Phar')) { $errors['phar'] = true; } if (!extension_loaded('filter')) { $errors['filter'] = true; } if (!extension_loaded('hash')) { $errors['hash'] = true; } if (!extension_loaded('iconv') && !extension_loaded('mbstring')) { $errors['iconv_mbstring'] = true; } if (!filter_var(ini_get('allow_url_fopen'), FILTER_VALIDATE_BOOLEAN)) { $errors['allow_url_fopen'] = true; } if (extension_loaded('ionCube Loader') && ioncube_loader_iversion() < 40009) { $errors['ioncube'] = ioncube_loader_version(); } if (PHP_VERSION_ID < 50302) { $errors['php'] = PHP_VERSION; } if (!isset($errors['php']) && PHP_VERSION_ID < 50304) { $warnings['php'] = PHP_VERSION; } if (!extension_loaded('openssl')) { $errors['openssl'] = true; } if (extension_loaded('openssl') && OPENSSL_VERSION_NUMBER < 0x1000100f) { $warnings['openssl_version'] = true; } if (!defined('HHVM_VERSION') && !extension_loaded('apcu') && filter_var(ini_get('apc.enable_cli'), FILTER_VALIDATE_BOOLEAN)) { $warnings['apc_cli'] = true; } if (!extension_loaded('zlib')) { $warnings['zlib'] = true; } ob_start(); phpinfo(INFO_GENERAL); $phpinfo = ob_get_clean(); if (preg_match('{Configure Command(?: *
|$)}m', $phpinfo, $match)) { $configure = $match[1]; if (false !== strpos($configure, '--enable-sigchild')) { $warnings['sigchild'] = true; } if (false !== strpos($configure, '--with-curlwrappers')) { $warnings['curlwrappers'] = true; } } if (filter_var(ini_get('xdebug.profiler_enabled'), FILTER_VALIDATE_BOOLEAN)) { $warnings['xdebug_profile'] = true; } elseif (extension_loaded('xdebug')) { $warnings['xdebug_loaded'] = true; } if (defined('PHP_WINDOWS_VERSION_BUILD') && (version_compare(PHP_VERSION, '7.2.23', '<') || (version_compare(PHP_VERSION, '7.3.0', '>=') && version_compare(PHP_VERSION, '7.3.10', '<')))) { $warnings['onedrive'] = PHP_VERSION; } if (!empty($errors)) { foreach ($errors as $error => $current) { switch ($error) { case 'json': $text = PHP_EOL."The json extension is missing.".PHP_EOL; $text .= "Install it or recompile php without --disable-json"; break; case 'phar': $text = PHP_EOL."The phar extension is missing.".PHP_EOL; $text .= "Install it or recompile php without --disable-phar"; break; case 'filter': $text = PHP_EOL."The filter extension is missing.".PHP_EOL; $text .= "Install it or recompile php without --disable-filter"; break; case 'hash': $text = PHP_EOL."The hash extension is missing.".PHP_EOL; $text .= "Install it or recompile php without --disable-hash"; break; case 'iconv_mbstring': $text = PHP_EOL."The iconv OR mbstring extension is required and both are missing.".PHP_EOL; $text .= "Install either of them or recompile php without --disable-iconv"; break; case 'php': $text = PHP_EOL."Your PHP ({$current}) is too old, you must upgrade to PHP 5.3.2 or higher."; break; case 'allow_url_fopen': $text = PHP_EOL."The allow_url_fopen setting is incorrect.".PHP_EOL; $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; $text .= " allow_url_fopen = On"; $displayIniMessage = true; break; case 'ioncube': $text = PHP_EOL."Your ionCube Loader extension ($current) is incompatible with Phar files.".PHP_EOL; $text .= "Upgrade to ionCube 4.0.9 or higher or remove this line (path may be different) from your `php.ini` to disable it:".PHP_EOL; $text .= " zend_extension = /usr/lib/php5/20090626+lfs/ioncube_loader_lin_5.3.so"; $displayIniMessage = true; break; case 'openssl': $text = PHP_EOL."The openssl extension is missing, which means that secure HTTPS transfers are impossible.".PHP_EOL; $text .= "If possible you should enable it or recompile php with --with-openssl"; break; default: throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown error type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $error)); } $out($text, 'error'); } $output .= PHP_EOL; } if (!empty($warnings)) { foreach ($warnings as $warning => $current) { switch ($warning) { case 'apc_cli': $text = "The apc.enable_cli setting is incorrect.".PHP_EOL; $text .= "Add the following to the end of your `php.ini`:".PHP_EOL; $text .= " apc.enable_cli = Off"; $displayIniMessage = true; break; case 'zlib': $text = 'The zlib extension is not loaded, this can slow down Composer a lot.'.PHP_EOL; $text .= 'If possible, enable it or recompile php with --with-zlib'.PHP_EOL; $displayIniMessage = true; break; case 'sigchild': $text = "PHP was compiled with --enable-sigchild which can cause issues on some platforms.".PHP_EOL; $text .= "Recompile it without this flag if possible, see also:".PHP_EOL; $text .= " https://bugs.php.net/bug.php?id=22999"; break; case 'curlwrappers': $text = "PHP was compiled with --with-curlwrappers which will cause issues with HTTP authentication and GitHub.".PHP_EOL; $text .= " Recompile it without this flag if possible"; break; case 'php': $text = "Your PHP ({$current}) is quite old, upgrading to PHP 5.3.4 or higher is recommended.".PHP_EOL; $text .= " Composer works with 5.3.2+ for most people, but there might be edge case issues."; break; case 'openssl_version': // Attempt to parse version number out, fallback to whole string value. $opensslVersion = strstr(trim(strstr(OPENSSL_VERSION_TEXT, ' ')), ' ', true); $opensslVersion = $opensslVersion ?: OPENSSL_VERSION_TEXT; $text = "The OpenSSL library ({$opensslVersion}) used by PHP does not support TLSv1.2 or TLSv1.1.".PHP_EOL; $text .= "If possible you should upgrade OpenSSL to version 1.0.1 or above."; break; case 'xdebug_loaded': $text = "The xdebug extension is loaded, this can slow down Composer a little.".PHP_EOL; $text .= " Disabling it when using Composer is recommended."; break; case 'xdebug_profile': $text = "The xdebug.profiler_enabled setting is enabled, this can slow down Composer a lot.".PHP_EOL; $text .= "Add the following to the end of your `php.ini` to disable it:".PHP_EOL; $text .= " xdebug.profiler_enabled = 0"; $displayIniMessage = true; break; case 'onedrive': $text = "The Windows OneDrive folder is not supported on PHP versions below 7.2.23 and 7.3.10.".PHP_EOL; $text .= "Upgrade your PHP ({$current}) to use this location with Composer.".PHP_EOL; break; default: throw new \InvalidArgumentException(sprintf("DiagnoseCommand: Unknown warning type \"%s\". Please report at https://github.com/composer/composer/issues/new.", $warning)); } $out($text, 'comment'); } } if ($displayIniMessage) { $out($iniMessage, 'comment'); } return !$warnings && !$errors ? true : $output; } /** * Check if allow_url_fopen is ON * * @return true|string */ private function checkConnectivity() { if (!ini_get('allow_url_fopen')) { return 'Skipped because allow_url_fopen is missing.'; } return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Package\CompletePackageInterface; use Composer\Repository\RepositoryInterface; use Composer\Repository\RootPackageRepository; use Composer\Repository\RepositoryFactory; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Robert Schönthal */ class HomeCommand extends BaseCommand { /** * {@inheritDoc} */ protected function configure() { $this ->setName('browse') ->setAliases(array('home')) ->setDescription('Opens the package\'s repository URL or homepage in your browser.') ->setDefinition(array( new InputArgument('packages', InputArgument::IS_ARRAY, 'Package(s) to browse to.'), new InputOption('homepage', 'H', InputOption::VALUE_NONE, 'Open the homepage instead of the repository URL.'), new InputOption('show', 's', InputOption::VALUE_NONE, 'Only show the homepage or repository URL.'), )) ->setHelp( <<initializeRepos(); $io = $this->getIO(); $return = 0; $packages = $input->getArgument('packages'); if (!$packages) { $io->writeError('No package specified, opening homepage for the root package'); $packages = array($this->getComposer()->getPackage()->getName()); } foreach ($packages as $packageName) { $handled = false; $packageExists = false; foreach ($repos as $repo) { foreach ($repo->findPackages($packageName) as $package) { $packageExists = true; if ($package instanceof CompletePackageInterface && $this->handlePackage($package, $input->getOption('homepage'), $input->getOption('show'))) { $handled = true; break 2; } } } if (!$packageExists) { $return = 1; $io->writeError('Package '.$packageName.' not found'); } if (!$handled) { $return = 1; $io->writeError(''.($input->getOption('homepage') ? 'Invalid or missing homepage' : 'Invalid or missing repository URL').' for '.$packageName.''); } } return $return; } private function handlePackage(CompletePackageInterface $package, $showHomepage, $showOnly) { $support = $package->getSupport(); $url = isset($support['source']) ? $support['source'] : $package->getSourceUrl(); if (!$url || $showHomepage) { $url = $package->getHomepage(); } if (!$url || !filter_var($url, FILTER_VALIDATE_URL)) { return false; } if ($showOnly) { $this->getIO()->write(sprintf('%s', $url)); } else { $this->openBrowser($url); } return true; } /** * opens a url in your system default browser * * @param string $url */ private function openBrowser($url) { $url = ProcessExecutor::escape($url); $process = new ProcessExecutor($this->getIO()); if (Platform::isWindows()) { return $process->execute('start "web" explorer "' . $url . '"', $output); } $linux = $process->execute('which xdg-open', $output); $osx = $process->execute('which open', $output); if (0 === $linux) { $process->execute('xdg-open ' . $url, $output); } elseif (0 === $osx) { $process->execute('open ' . $url, $output); } else { $this->getIO()->writeError('No suitable browser opening command found, open yourself: ' . $url); } } /** * Initializes repositories * * Returns an array of repos in order they should be checked in * * @return RepositoryInterface[] */ private function initializeRepos() { $composer = $this->getComposer(false); if ($composer) { return array_merge( array(new RootPackageRepository($composer->getPackage())), // root package array($composer->getRepositoryManager()->getLocalRepository()), // installed packages $composer->getRepositoryManager()->getRepositories() // remotes ); } return RepositoryFactory::defaultRepos($this->getIO()); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Composer; use Composer\DependencyResolver\DefaultPolicy; use Composer\Json\JsonFile; use Composer\Package\BasePackage; use Composer\Package\CompletePackageInterface; use Composer\Package\Link; use Composer\Package\AliasPackage; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionParser; use Composer\Package\Version\VersionSelector; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Repository\InstalledArrayRepository; use Composer\Repository\ComposerRepository; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\RepositoryFactory; use Composer\Repository\InstalledRepository; use Composer\Repository\RepositoryInterface; use Composer\Repository\RepositorySet; use Composer\Repository\RootPackageRepository; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Semver; use Composer\Spdx\SpdxLicenses; use Composer\Util\Platform; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Terminal; /** * @author Robert Schönthal * @author Jordi Boggiano * @author Jérémy Romey * @author Mihai Plasoianu */ class ShowCommand extends BaseCommand { /** @var VersionParser */ protected $versionParser; protected $colors; /** @var RepositorySet */ private $repositorySet; protected function configure() { $this ->setName('show') ->setAliases(array('info')) ->setDescription('Shows information about packages.') ->setDefinition(array( new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), new InputArgument('version', InputArgument::OPTIONAL, 'Version or version constraint to inspect'), new InputOption('all', null, InputOption::VALUE_NONE, 'List all packages'), new InputOption('locked', null, InputOption::VALUE_NONE, 'List all locked packages'), new InputOption('installed', 'i', InputOption::VALUE_NONE, 'List installed packages only (enabled by default, only present for BC).'), new InputOption('platform', 'p', InputOption::VALUE_NONE, 'List platform packages only'), new InputOption('available', 'a', InputOption::VALUE_NONE, 'List available packages only'), new InputOption('self', 's', InputOption::VALUE_NONE, 'Show the root package information'), new InputOption('name-only', 'N', InputOption::VALUE_NONE, 'List package names only'), new InputOption('path', 'P', InputOption::VALUE_NONE, 'Show package paths'), new InputOption('tree', 't', InputOption::VALUE_NONE, 'List the dependencies as a tree'), new InputOption('latest', 'l', InputOption::VALUE_NONE, 'Show the latest version'), new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show the latest version but only for packages that are outdated'), new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), )) ->setHelp( <<versionParser = new VersionParser; if ($input->getOption('tree')) { $this->initStyles($output); } $composer = $this->getComposer(false); $io = $this->getIO(); if ($input->getOption('installed')) { $io->writeError('You are using the deprecated option "installed". Only installed packages are shown by default now. The --all option can be used to show all packages.'); } if ($input->getOption('outdated')) { $input->setOption('latest', true); } elseif ($input->getOption('ignore')) { $io->writeError('You are using the option "ignore" for action other than "outdated", it will be ignored.'); } if ($input->getOption('direct') && ($input->getOption('all') || $input->getOption('available') || $input->getOption('platform'))) { $io->writeError('The --direct (-D) option is not usable in combination with --all, --platform (-p) or --available (-a)'); return 1; } if ($input->getOption('tree') && ($input->getOption('all') || $input->getOption('available'))) { $io->writeError('The --tree (-t) option is not usable in combination with --all or --available (-a)'); return 1; } if ($input->getOption('tree') && $input->getOption('latest')) { $io->writeError('The --tree (-t) option is not usable in combination with --latest (-l)'); return 1; } if ($input->getOption('tree') && $input->getOption('path')) { $io->writeError('The --tree (-t) option is not usable in combination with --path (-P)'); return 1; } $format = $input->getOption('format'); if (!in_array($format, array('text', 'json'))) { $io->writeError(sprintf('Unsupported format "%s". See help for supported formats.', $format)); return 1; } // init repos $platformOverrides = array(); if ($composer) { $platformOverrides = $composer->getConfig()->get('platform') ?: array(); } $platformRepo = new PlatformRepository(array(), $platformOverrides); $lockedRepo = null; if ($input->getOption('self')) { $package = $this->getComposer()->getPackage(); if ($input->getOption('name-only')) { $io->write($package->getName()); return 0; } $repos = $installedRepo = new InstalledRepository(array(new RootPackageRepository($package))); } elseif ($input->getOption('platform')) { $repos = $installedRepo = new InstalledRepository(array($platformRepo)); } elseif ($input->getOption('available')) { $installedRepo = new InstalledRepository(array($platformRepo)); if ($composer) { $repos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); $installedRepo->addRepository($composer->getRepositoryManager()->getLocalRepository()); } else { $defaultRepos = RepositoryFactory::defaultRepos($io); $repos = new CompositeRepository($defaultRepos); $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); } } elseif ($input->getOption('all') && $composer) { $localRepo = $composer->getRepositoryManager()->getLocalRepository(); $locker = $composer->getLocker(); if ($locker->isLocked()) { $lockedRepo = $locker->getLockedRepository(true); $installedRepo = new InstalledRepository(array($lockedRepo, $localRepo, $platformRepo)); } else { $installedRepo = new InstalledRepository(array($localRepo, $platformRepo)); } $repos = new CompositeRepository(array_merge(array($installedRepo), $composer->getRepositoryManager()->getRepositories())); } elseif ($input->getOption('all')) { $defaultRepos = RepositoryFactory::defaultRepos($io); $io->writeError('No composer.json found in the current directory, showing available packages from ' . implode(', ', array_keys($defaultRepos))); $installedRepo = new InstalledRepository(array($platformRepo)); $repos = new CompositeRepository(array_merge(array($installedRepo), $defaultRepos)); } elseif ($input->getOption('locked')) { if (!$composer || !$composer->getLocker()->isLocked()) { throw new \UnexpectedValueException('A valid composer.json and composer.lock files is required to run this command with --locked'); } $locker = $composer->getLocker(); $lockedRepo = $locker->getLockedRepository(!$input->getOption('no-dev')); $repos = $installedRepo = new InstalledRepository(array($lockedRepo)); } else { // --installed / default case if (!$composer) { $composer = $this->getComposer(); } $rootPkg = $composer->getPackage(); $repos = $installedRepo = new InstalledRepository(array($composer->getRepositoryManager()->getLocalRepository())); if ($input->getOption('no-dev')) { $packages = $this->filterRequiredPackages($installedRepo, $rootPkg); $repos = $installedRepo = new InstalledRepository(array(new InstalledArrayRepository(array_map(function ($pkg) { return clone $pkg; }, $packages)))); } if (!$installedRepo->getPackages() && ($rootPkg->getRequires() || $rootPkg->getDevRequires())) { $io->writeError('No dependencies installed. Try running composer install or update.'); } } if ($composer) { $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'show', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); } if ($input->getOption('latest') && null === $composer) { $io->writeError('No composer.json found in the current directory, disabling "latest" option'); $input->setOption('latest', false); } $packageFilter = $input->getArgument('package'); // show single package or single version if (($packageFilter && false === strpos($packageFilter, '*')) || !empty($package)) { if (empty($package)) { list($package, $versions) = $this->getPackage($installedRepo, $repos, $input->getArgument('package'), $input->getArgument('version')); if (empty($package)) { $options = $input->getOptions(); if (!isset($options['working-dir']) || !file_exists('composer.json')) { if (PlatformRepository::isPlatformPackage($input->getArgument('package')) && !$input->getOption('platform')) { throw new \InvalidArgumentException('Package ' . $packageFilter . ' not found, try using --platform (-p) to show platform packages.'); } throw new \InvalidArgumentException('Package ' . $packageFilter . ' not found'); } $io->writeError('Package ' . $packageFilter . ' not found in ' . $options['working-dir'] . '/composer.json'); return 1; } } else { $versions = array($package->getPrettyVersion() => $package->getVersion()); } $exitCode = 0; if ($input->getOption('tree')) { $arrayTree = $this->generatePackageTree($package, $installedRepo, $repos); if ('json' === $format) { $io->write(JsonFile::encode(array('installed' => array($arrayTree)))); } else { $this->displayPackageTree(array($arrayTree)); } } else { $latestPackage = null; if ($input->getOption('latest')) { $latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $input->getOption('minor-only')); } if ($input->getOption('outdated') && $input->getOption('strict') && $latestPackage && $latestPackage->getFullPrettyVersion() !== $package->getFullPrettyVersion() && !$latestPackage->isAbandoned()) { $exitCode = 1; } if ($input->getOption('path')) { $io->write($package->getName(), false); $io->write(' ' . strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n")); return $exitCode; } if ('json' === $format) { $this->printPackageInfoAsJson($package, $versions, $installedRepo, $latestPackage ?: null); } else { $this->printPackageInfo($package, $versions, $installedRepo, $latestPackage ?: null); } } return $exitCode; } // show tree view if requested if ($input->getOption('tree')) { $rootRequires = $this->getRootRequires(); $packages = $installedRepo->getPackages(); usort($packages, 'strcmp'); $arrayTree = array(); foreach ($packages as $package) { if (in_array($package->getName(), $rootRequires, true)) { $arrayTree[] = $this->generatePackageTree($package, $installedRepo, $repos); } } if ('json' === $format) { $io->write(JsonFile::encode(array('installed' => $arrayTree))); } else { $this->displayPackageTree($arrayTree); } return 0; } if ($repos instanceof CompositeRepository) { $repos = $repos->getRepositories(); } elseif (!is_array($repos)) { $repos = array($repos); } // list packages $packages = array(); $packageFilterRegex = null; if (null !== $packageFilter) { $packageFilterRegex = '{^'.str_replace('\\*', '.*?', preg_quote($packageFilter)).'$}i'; } $packageListFilter = array(); if ($input->getOption('direct')) { $packageListFilter = $this->getRootRequires(); } if (class_exists('Symfony\Component\Console\Terminal')) { $terminal = new Terminal(); $width = $terminal->getWidth(); } else { // For versions of Symfony console before 3.2 list($width) = $this->getApplication()->getTerminalDimensions(); } if (null === $width) { // In case the width is not detected, we're probably running the command // outside of a real terminal, use space without a limit $width = PHP_INT_MAX; } if (Platform::isWindows()) { $width--; } else { $width = max(80, $width); } if ($input->getOption('path') && null === $composer) { $io->writeError('No composer.json found in the current directory, disabling "path" option'); $input->setOption('path', false); } foreach ($repos as $repo) { if ($repo === $platformRepo) { $type = 'platform'; } elseif ($lockedRepo !== null && $repo === $lockedRepo) { $type = 'locked'; } elseif ($repo === $installedRepo || in_array($repo, $installedRepo->getRepositories(), true)) { $type = 'installed'; } else { $type = 'available'; } if ($repo instanceof ComposerRepository) { foreach ($repo->getPackageNames($packageFilter) as $name) { $packages[$type][$name] = $name; } } else { foreach ($repo->getPackages() as $package) { if (!isset($packages[$type][$package->getName()]) || !is_object($packages[$type][$package->getName()]) || version_compare($packages[$type][$package->getName()]->getVersion(), $package->getVersion(), '<') ) { while ($package instanceof AliasPackage) { $package = $package->getAliasOf(); } if (!$packageFilterRegex || preg_match($packageFilterRegex, $package->getName())) { if (!$packageListFilter || in_array($package->getName(), $packageListFilter, true)) { $packages[$type][$package->getName()] = $package; } } } } } } $showAllTypes = $input->getOption('all'); $showLatest = $input->getOption('latest'); $showMinorOnly = $input->getOption('minor-only'); $ignoredPackages = array_map('strtolower', $input->getOption('ignore')); $indent = $showAllTypes ? ' ' : ''; $latestPackages = array(); $exitCode = 0; $viewData = array(); $viewMetaData = array(); foreach (array('platform' => true, 'locked' => true, 'available' => false, 'installed' => true) as $type => $showVersion) { if (isset($packages[$type])) { ksort($packages[$type]); $nameLength = $versionLength = $latestLength = 0; if ($showLatest && $showVersion) { foreach ($packages[$type] as $package) { if (is_object($package)) { $latestPackage = $this->findLatestPackage($package, $composer, $platformRepo, $showMinorOnly); if ($latestPackage === false) { continue; } $latestPackages[$package->getPrettyName()] = $latestPackage; } } } $writePath = !$input->getOption('name-only') && $input->getOption('path'); $writeVersion = !$input->getOption('name-only') && !$input->getOption('path') && $showVersion; $writeLatest = $writeVersion && $showLatest; $writeDescription = !$input->getOption('name-only') && !$input->getOption('path'); $hasOutdatedPackages = false; $viewData[$type] = array(); foreach ($packages[$type] as $package) { $packageViewData = array(); if (is_object($package)) { $latestPackage = null; if ($showLatest && isset($latestPackages[$package->getPrettyName()])) { $latestPackage = $latestPackages[$package->getPrettyName()]; } // Determine if Composer is checking outdated dependencies and if current package should trigger non-default exit code $packageIsUpToDate = $latestPackage && $latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion() && !$latestPackage->isAbandoned(); $packageIsIgnored = \in_array($package->getPrettyName(), $ignoredPackages, true); if ($input->getOption('outdated') && ($packageIsUpToDate || $packageIsIgnored)) { continue; } if ($input->getOption('outdated') || $input->getOption('strict')) { $hasOutdatedPackages = true; } $packageViewData['name'] = $package->getPrettyName(); $nameLength = max($nameLength, strlen($package->getPrettyName())); if ($writeVersion) { $packageViewData['version'] = $package->getFullPrettyVersion(); $versionLength = max($versionLength, strlen($package->getFullPrettyVersion())); } if ($writeLatest && $latestPackage) { $packageViewData['latest'] = $latestPackage->getFullPrettyVersion(); $packageViewData['latest-status'] = $this->getUpdateStatus($latestPackage, $package); $latestLength = max($latestLength, strlen($latestPackage->getFullPrettyVersion())); } if ($writeDescription) { $packageViewData['description'] = $package->getDescription(); } if ($writePath) { $packageViewData['path'] = strtok(realpath($composer->getInstallationManager()->getInstallPath($package)), "\r\n"); } if ($latestPackage && $latestPackage->isAbandoned()) { $replacement = is_string($latestPackage->getReplacementPackage()) ? 'Use ' . $latestPackage->getReplacementPackage() . ' instead' : 'No replacement was suggested'; $packageWarning = sprintf( 'Package %s is abandoned, you should avoid using it. %s.', $package->getPrettyName(), $replacement ); $packageViewData['warning'] = $packageWarning; } } else { $packageViewData['name'] = $package; $nameLength = max($nameLength, strlen($package)); } $viewData[$type][] = $packageViewData; } $viewMetaData[$type] = array( 'nameLength' => $nameLength, 'versionLength' => $versionLength, 'latestLength' => $latestLength, ); if ($input->getOption('strict') && $hasOutdatedPackages) { $exitCode = 1; break; } } } if ('json' === $format) { $io->write(JsonFile::encode($viewData)); } else { foreach ($viewData as $type => $packages) { $nameLength = $viewMetaData[$type]['nameLength']; $versionLength = $viewMetaData[$type]['versionLength']; $latestLength = $viewMetaData[$type]['latestLength']; $writeVersion = $nameLength + $versionLength + 3 <= $width; $writeLatest = $nameLength + $versionLength + $latestLength + 3 <= $width; $writeDescription = $nameLength + $versionLength + $latestLength + 24 <= $width; if ($writeLatest && !$io->isDecorated()) { $latestLength += 2; } if ($showAllTypes) { if ('available' === $type) { $io->write('' . $type . ':'); } else { $io->write('' . $type . ':'); } } foreach ($packages as $package) { $io->write($indent . str_pad($package['name'], $nameLength, ' '), false); if (isset($package['version']) && $writeVersion) { $io->write(' ' . str_pad($package['version'], $versionLength, ' '), false); } if (isset($package['latest']) && $writeLatest) { $latestVersion = $package['latest']; $updateStatus = $package['latest-status']; $style = $this->updateStatusToVersionStyle($updateStatus); if (!$io->isDecorated()) { $latestVersion = str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('=', '!', '~'), $updateStatus) . ' ' . $latestVersion; } $io->write(' <' . $style . '>' . str_pad($latestVersion, $latestLength, ' ') . '', false); } if (isset($package['description']) && $writeDescription) { $description = strtok($package['description'], "\r\n"); $remaining = $width - $nameLength - $versionLength - 4; if ($writeLatest) { $remaining -= $latestLength; } if (strlen($description) > $remaining) { $description = substr($description, 0, $remaining - 3) . '...'; } $io->write(' ' . $description, false); } if (isset($package['path'])) { $io->write(' ' . $package['path'], false); } $io->write(''); if (isset($package['warning'])) { $io->write('' . $package['warning'] . ''); } } if ($showAllTypes) { $io->write(''); } } } return $exitCode; } protected function getRootRequires() { $rootPackage = $this->getComposer()->getPackage(); return array_map( 'strtolower', array_keys(array_merge($rootPackage->getRequires(), $rootPackage->getDevRequires())) ); } protected function getVersionStyle(PackageInterface $latestPackage, PackageInterface $package) { return $this->updateStatusToVersionStyle($this->getUpdateStatus($latestPackage, $package)); } /** * finds a package by name and version if provided * * @param InstalledRepository $installedRepo * @param RepositoryInterface $repos * @param string $name * @param ConstraintInterface|string $version * @throws \InvalidArgumentException * @return array array(CompletePackageInterface, array of versions) */ protected function getPackage(InstalledRepository $installedRepo, RepositoryInterface $repos, $name, $version = null) { $name = strtolower($name); $constraint = is_string($version) ? $this->versionParser->parseConstraints($version) : $version; $policy = new DefaultPolicy(); $repositorySet = new RepositorySet('dev'); $repositorySet->allowInstalledRepositories(); $repositorySet->addRepository($repos); $matchedPackage = null; $versions = array(); if (PlatformRepository::isPlatformPackage($name)) { $pool = $repositorySet->createPoolWithAllPackages(); } else { $pool = $repositorySet->createPoolForPackage($name); } $matches = $pool->whatProvides($name, $constraint); foreach ($matches as $index => $package) { // select an exact match if it is in the installed repo and no specific version was required if (null === $version && $installedRepo->hasPackage($package)) { $matchedPackage = $package; } $versions[$package->getPrettyVersion()] = $package->getVersion(); $matches[$index] = $package->getId(); } // select preferred package according to policy rules if (!$matchedPackage && $matches && $preferred = $policy->selectPreferredPackages($pool, $matches)) { $matchedPackage = $pool->literalToPackage($preferred[0]); } return array($matchedPackage, $versions); } /** * Prints package info. * * @param CompletePackageInterface $package * @param array $versions * @param InstalledRepository $installedRepo * @param PackageInterface|null $latestPackage */ protected function printPackageInfo(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null) { $io = $this->getIO(); $this->printMeta($package, $versions, $installedRepo, $latestPackage ?: null); $this->printLinks($package, Link::TYPE_REQUIRE); $this->printLinks($package, Link::TYPE_DEV_REQUIRE, 'requires (dev)'); if ($package->getSuggests()) { $io->write("\nsuggests"); foreach ($package->getSuggests() as $suggested => $reason) { $io->write($suggested . ' ' . $reason . ''); } } $this->printLinks($package, Link::TYPE_PROVIDE); $this->printLinks($package, Link::TYPE_CONFLICT); $this->printLinks($package, Link::TYPE_REPLACE); } /** * Prints package metadata. * * @param CompletePackageInterface $package * @param array $versions * @param InstalledRepository $installedRepo * @param PackageInterface|null $latestPackage */ protected function printMeta(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null) { $io = $this->getIO(); $io->write('name : ' . $package->getPrettyName()); $io->write('descrip. : ' . $package->getDescription()); $io->write('keywords : ' . implode(', ', $package->getKeywords() ?: array())); $this->printVersions($package, $versions, $installedRepo); if ($latestPackage) { $style = $this->getVersionStyle($latestPackage, $package); $io->write('latest : <'.$style.'>' . $latestPackage->getPrettyVersion() . ''); } else { $latestPackage = $package; } $io->write('type : ' . $package->getType()); $this->printLicenses($package); $io->write('homepage : ' . $package->getHomepage()); $io->write('source : ' . sprintf('[%s] %s %s', $package->getSourceType(), $package->getSourceUrl(), $package->getSourceReference())); $io->write('dist : ' . sprintf('[%s] %s %s', $package->getDistType(), $package->getDistUrl(), $package->getDistReference())); if ($installedRepo->hasPackage($package)) { $io->write('path : ' . sprintf('%s', realpath($this->getComposer()->getInstallationManager()->getInstallPath($package)))); } $io->write('names : ' . implode(', ', $package->getNames())); if ($latestPackage->isAbandoned()) { $replacement = ($latestPackage->getReplacementPackage() !== null) ? ' The author suggests using the ' . $latestPackage->getReplacementPackage(). ' package instead.' : null; $io->writeError( sprintf('Attention: This package is abandoned and no longer maintained.%s', $replacement) ); } if ($package->getSupport()) { $io->write("\nsupport"); foreach ($package->getSupport() as $type => $value) { $io->write('' . $type . ' : '.$value); } } if ($package->getAutoload()) { $io->write("\nautoload"); foreach ($package->getAutoload() as $type => $autoloads) { $io->write('' . $type . ''); if ($type === 'psr-0' || $type === 'psr-4') { foreach ($autoloads as $name => $path) { $io->write(($name ?: '*') . ' => ' . (is_array($path) ? implode(', ', $path) : ($path ?: '.'))); } } elseif ($type === 'classmap') { $io->write(implode(', ', $autoloads)); } } if ($package->getIncludePaths()) { $io->write('include-path'); $io->write(implode(', ', $package->getIncludePaths())); } } } /** * Prints all available versions of this package and highlights the installed one if any. * * @param CompletePackageInterface $package * @param array $versions * @param InstalledRepository $installedRepo */ protected function printVersions(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo) { $versions = array_keys($versions); $versions = Semver::rsort($versions); // highlight installed version if ($installedPackages = $installedRepo->findPackages($package->getName())) { foreach ($installedPackages as $installedPackage) { $installedVersion = $installedPackage->getPrettyVersion(); $key = array_search($installedVersion, $versions); if (false !== $key) { $versions[$key] = '* ' . $installedVersion . ''; } } } $versions = implode(', ', $versions); $this->getIO()->write('versions : ' . $versions); } /** * print link objects * * @param CompletePackageInterface $package * @param string $linkType * @param string $title */ protected function printLinks(CompletePackageInterface $package, $linkType, $title = null) { $title = $title ?: $linkType; $io = $this->getIO(); if ($links = $package->{'get'.ucfirst($linkType)}()) { $io->write("\n" . $title . ""); foreach ($links as $link) { $io->write($link->getTarget() . ' ' . $link->getPrettyConstraint() . ''); } } } /** * Prints the licenses of a package with metadata * * @param CompletePackageInterface $package */ protected function printLicenses(CompletePackageInterface $package) { $spdxLicenses = new SpdxLicenses(); $licenses = $package->getLicense(); $io = $this->getIO(); foreach ($licenses as $licenseId) { $license = $spdxLicenses->getLicenseByIdentifier($licenseId); // keys: 0 fullname, 1 osi, 2 url if (!$license) { $out = $licenseId; } else { // is license OSI approved? if ($license[1] === true) { $out = sprintf('%s (%s) (OSI approved) %s', $license[0], $licenseId, $license[2]); } else { $out = sprintf('%s (%s) %s', $license[0], $licenseId, $license[2]); } } $io->write('license : ' . $out); } } /** * Prints package info in JSON format. * * @param CompletePackageInterface $package * @param array $versions * @param InstalledRepository $installedRepo * @param PackageInterface|null $latestPackage */ protected function printPackageInfoAsJson(CompletePackageInterface $package, array $versions, InstalledRepository $installedRepo, PackageInterface $latestPackage = null) { $json = array( 'name' => $package->getPrettyName(), 'description' => $package->getDescription(), 'keywords' => $package->getKeywords() ?: array(), 'type' => $package->getType(), 'homepage' => $package->getHomepage(), 'names' => $package->getNames(), ); $json = $this->appendVersions($json, $versions); $json = $this->appendLicenses($json, $package); if ($latestPackage) { $json['latest'] = $latestPackage->getPrettyVersion(); } else { $latestPackage = $package; } if ($package->getSourceType()) { $json['source'] = array( 'type' => $package->getSourceType(), 'url' => $package->getSourceUrl(), 'reference' => $package->getSourceReference(), ); } if ($package->getDistType()) { $json['dist'] = array( 'type' => $package->getDistType(), 'url' => $package->getDistUrl(), 'reference' => $package->getDistReference(), ); } if ($installedRepo->hasPackage($package)) { $json['path'] = realpath($this->getComposer()->getInstallationManager()->getInstallPath($package)); if ($json['path'] === false) { unset($json['path']); } } if ($latestPackage->isAbandoned()) { $json['replacement'] = $latestPackage->getReplacementPackage(); } if ($package->getSuggests()) { $json['suggests'] = $package->getSuggests(); } if ($package->getSupport()) { $json['support'] = $package->getSupport(); } $json = $this->appendAutoload($json, $package); if ($package->getIncludePaths()) { $json['include_path'] = $package->getIncludePaths(); } $json = $this->appendLinks($json, $package); $this->getIO()->write(JsonFile::encode($json)); } private function appendVersions($json, array $versions) { uasort($versions, 'version_compare'); $versions = array_keys(array_reverse($versions)); $json['versions'] = $versions; return $json; } private function appendLicenses($json, CompletePackageInterface $package) { if ($licenses = $package->getLicense()) { $spdxLicenses = new SpdxLicenses(); $json['licenses'] = array_map(function ($licenseId) use ($spdxLicenses) { $license = $spdxLicenses->getLicenseByIdentifier($licenseId); // keys: 0 fullname, 1 osi, 2 url if (!$license) { return $licenseId; } return array( 'name' => $license[0], 'osi' => $licenseId, 'url' => $license[2], ); }, $licenses); } return $json; } private function appendAutoload($json, CompletePackageInterface $package) { if ($package->getAutoload()) { $autoload = array(); foreach ($package->getAutoload() as $type => $autoloads) { if ($type === 'psr-0' || $type === 'psr-4') { $psr = array(); foreach ($autoloads as $name => $path) { if (!$path) { $path = '.'; } $psr[$name ?: '*'] = $path; } $autoload[$type] = $psr; } elseif ($type === 'classmap') { $autoload['classmap'] = $autoloads; } } $json['autoload'] = $autoload; } return $json; } private function appendLinks($json, CompletePackageInterface $package) { foreach (Link::$TYPES as $linkType) { $json = $this->appendLink($json, $package, $linkType); } return $json; } private function appendLink($json, CompletePackageInterface $package, $linkType) { $links = $package->{'get' . ucfirst($linkType)}(); if ($links) { $json[$linkType] = array(); foreach ($links as $link) { $json[$linkType][$link->getTarget()] = $link->getPrettyConstraint(); } } return $json; } /** * Init styles for tree * * @param OutputInterface $output */ protected function initStyles(OutputInterface $output) { $this->colors = array( 'green', 'yellow', 'cyan', 'magenta', 'blue', ); foreach ($this->colors as $color) { $style = new OutputFormatterStyle($color); $output->getFormatter()->setStyle($color, $style); } } /** * Display the tree * * @param array $arrayTree */ protected function displayPackageTree(array $arrayTree) { $io = $this->getIO(); foreach ($arrayTree as $package) { $io->write(sprintf('%s', $package['name']), false); $io->write(' ' . $package['version'], false); $io->write(' ' . strtok($package['description'], "\r\n")); if (isset($package['requires'])) { $requires = $package['requires']; $treeBar = '├'; $j = 0; $total = count($requires); foreach ($requires as $require) { $requireName = $require['name']; $j++; if ($j === $total) { $treeBar = '└'; } $level = 1; $color = $this->colors[$level]; $info = sprintf( '%s──<%s>%s %s', $treeBar, $color, $requireName, $color, $require['version'] ); $this->writeTreeLine($info); $treeBar = str_replace('└', ' ', $treeBar); $packagesInTree = array($package['name'], $requireName); $this->displayTree($require, $packagesInTree, $treeBar, $level + 1); } } } } /** * Generate the package tree * * @param PackageInterface $package * @param InstalledRepository $installedRepo * @param RepositoryInterface $remoteRepos * @return array */ protected function generatePackageTree( PackageInterface $package, InstalledRepository $installedRepo, RepositoryInterface $remoteRepos ) { $requires = $package->getRequires(); ksort($requires); $children = array(); foreach ($requires as $requireName => $require) { $packagesInTree = array($package->getName(), $requireName); $treeChildDesc = array( 'name' => $requireName, 'version' => $require->getPrettyConstraint(), ); $deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $packagesInTree); if ($deepChildren) { $treeChildDesc['requires'] = $deepChildren; } $children[] = $treeChildDesc; } $tree = array( 'name' => $package->getPrettyName(), 'version' => $package->getPrettyVersion(), 'description' => $package->getDescription(), ); if ($children) { $tree['requires'] = $children; } return $tree; } /** * Display a package tree * * @param array|string $package * @param array $packagesInTree * @param string $previousTreeBar * @param int $level */ protected function displayTree( $package, array $packagesInTree, $previousTreeBar = '├', $level = 1 ) { $previousTreeBar = str_replace('├', '│', $previousTreeBar); if (is_array($package) && isset($package['requires'])) { $requires = $package['requires']; $treeBar = $previousTreeBar . ' ├'; $i = 0; $total = count($requires); foreach ($requires as $require) { $currentTree = $packagesInTree; $i++; if ($i === $total) { $treeBar = $previousTreeBar . ' └'; } $colorIdent = $level % count($this->colors); $color = $this->colors[$colorIdent]; $circularWarn = in_array( $require['name'], $currentTree, true ) ? '(circular dependency aborted here)' : ''; $info = rtrim(sprintf( '%s──<%s>%s %s %s', $treeBar, $color, $require['name'], $color, $require['version'], $circularWarn )); $this->writeTreeLine($info); $treeBar = str_replace('└', ' ', $treeBar); $currentTree[] = $require['name']; $this->displayTree($require, $currentTree, $treeBar, $level + 1); } } } /** * Display a package tree * * @param string $name * @param PackageInterface|string $package * @param InstalledRepository $installedRepo * @param RepositoryInterface $remoteRepos * @param array $packagesInTree * @return array */ protected function addTree( $name, $package, InstalledRepository $installedRepo, RepositoryInterface $remoteRepos, array $packagesInTree ) { $children = array(); list($package) = $this->getPackage( $installedRepo, $remoteRepos, $name, $package->getPrettyConstraint() === 'self.version' ? $package->getConstraint() : $package->getPrettyConstraint() ); if (is_object($package)) { $requires = $package->getRequires(); ksort($requires); foreach ($requires as $requireName => $require) { $currentTree = $packagesInTree; $treeChildDesc = array( 'name' => $requireName, 'version' => $require->getPrettyConstraint(), ); if (!in_array($requireName, $currentTree, true)) { $currentTree[] = $requireName; $deepChildren = $this->addTree($requireName, $require, $installedRepo, $remoteRepos, $currentTree); if ($deepChildren) { $treeChildDesc['requires'] = $deepChildren; } } $children[] = $treeChildDesc; } } return $children; } private function updateStatusToVersionStyle($updateStatus) { // 'up-to-date' is printed green // 'semver-safe-update' is printed red // 'update-possible' is printed yellow return str_replace(array('up-to-date', 'semver-safe-update', 'update-possible'), array('info', 'highlight', 'comment'), $updateStatus); } private function getUpdateStatus(PackageInterface $latestPackage, PackageInterface $package) { if ($latestPackage->getFullPrettyVersion() === $package->getFullPrettyVersion()) { return 'up-to-date'; } $constraint = $package->getVersion(); if (0 !== strpos($constraint, 'dev-')) { $constraint = '^'.$constraint; } if ($latestPackage->getVersion() && Semver::satisfies($latestPackage->getVersion(), $constraint)) { // it needs an immediate semver-compliant upgrade return 'semver-safe-update'; } // it needs an upgrade but has potential BC breaks so is not urgent return 'update-possible'; } private function writeTreeLine($line) { $io = $this->getIO(); if (!$io->isDecorated()) { $line = str_replace(array('└', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); } $io->write($line); } /** * Given a package, this finds the latest package matching it * * @param PackageInterface $package * @param Composer $composer * @param PlatformRepository $platformRepo * @param bool $minorOnly * * @return PackageInterface|false */ private function findLatestPackage(PackageInterface $package, Composer $composer, PlatformRepository $platformRepo, $minorOnly = false) { // find the latest version allowed in this repo set $name = $package->getName(); $versionSelector = new VersionSelector($this->getRepositorySet($composer), $platformRepo); $stability = $composer->getPackage()->getMinimumStability(); $flags = $composer->getPackage()->getStabilityFlags(); if (isset($flags[$name])) { $stability = array_search($flags[$name], BasePackage::$stabilities, true); } $bestStability = $stability; if ($composer->getPackage()->getPreferStable()) { $bestStability = $package->getStability(); } $targetVersion = null; if (0 === strpos($package->getVersion(), 'dev-')) { $targetVersion = $package->getVersion(); } if ($targetVersion === null && $minorOnly) { $targetVersion = '^' . $package->getVersion(); } $candidate = $versionSelector->findBestCandidate($name, $targetVersion, $bestStability); while ($candidate instanceof AliasPackage) { $candidate = $candidate->getAliasOf(); } return $candidate; } private function getRepositorySet(Composer $composer) { if (!$this->repositorySet) { $this->repositorySet = new RepositorySet($composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags()); $this->repositorySet->addRepository(new CompositeRepository($composer->getRepositoryManager()->getRepositories())); } return $this->repositorySet; } /** * Find package requires and child requires * * @param RepositoryInterface $repo * @param PackageInterface $package * @param array $bucket * @return array */ private function filterRequiredPackages(RepositoryInterface $repo, PackageInterface $package, $bucket = array()) { $requires = $package->getRequires(); foreach ($repo->getPackages() as $candidate) { foreach ($candidate->getNames() as $name) { if (isset($requires[$name])) { if (!in_array($candidate, $bucket, true)) { $bucket[] = $candidate; $bucket = $this->filterRequiredPackages($repo, $candidate, $bucket); } break; } } } return $bucket; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano */ class OutdatedCommand extends ShowCommand { protected function configure() { $this ->setName('outdated') ->setDescription('Shows a list of installed packages that have updates available, including their latest version.') ->setDefinition(array( new InputArgument('package', InputArgument::OPTIONAL, 'Package to inspect. Or a name including a wildcard (*) to filter lists of packages instead.'), new InputOption('outdated', 'o', InputOption::VALUE_NONE, 'Show only packages that are outdated (this is the default, but present here for compat with `show`'), new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show all installed packages with their latest versions'), new InputOption('locked', null, InputOption::VALUE_NONE, 'Shows updates for packages from the lock file, regardless of what is currently in vendor dir'), new InputOption('direct', 'D', InputOption::VALUE_NONE, 'Shows only packages that are directly required by the root package'), new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code when there are outdated packages'), new InputOption('minor-only', 'm', InputOption::VALUE_NONE, 'Show only packages that have minor SemVer-compatible updates. Use with the --outdated option.'), new InputOption('format', 'f', InputOption::VALUE_REQUIRED, 'Format of the output: text or json', 'text'), new InputOption('ignore', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore specified package(s). Use it with the --outdated option if you don\'t want to be informed about new versions of some packages.'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables search in require-dev packages.'), )) ->setHelp( <<green (=): Dependency is in the latest version and is up to date. - yellow (~): Dependency has a new version available that includes backwards compatibility breaks according to semver, so upgrade when you can but it may involve work. - red (!): Dependency has a new version that is semver-compatible and you should upgrade it. Read more at https://getcomposer.org/doc/03-cli.md#outdated EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $args = array( 'command' => 'show', '--latest' => true, ); if (!$input->getOption('all')) { $args['--outdated'] = true; } if ($input->getOption('direct')) { $args['--direct'] = true; } if ($input->getArgument('package')) { $args['package'] = $input->getArgument('package'); } if ($input->getOption('strict')) { $args['--strict'] = true; } if ($input->getOption('minor-only')) { $args['--minor-only'] = true; } if ($input->getOption('locked')) { $args['--locked'] = true; } if ($input->getOption('no-dev')) { $args['--no-dev'] = true; } $args['--format'] = $input->getOption('format'); $args['--ignore'] = $input->getOption('ignore'); $input = new ArrayInput($args); return $this->getApplication()->run($input, $output); } /** * {@inheritDoc} */ public function isProxyCommand() { return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Package\CompletePackageInterface; use Composer\Package\AliasPackage; use Composer\Package\BasePackage; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Repository\CompositeRepository; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Nicolas Grekas * @author Jordi Boggiano */ class FundCommand extends BaseCommand { protected function configure() { $this->setName('fund') ->setDescription('Discover how to help fund the maintenance of your dependencies.') ; } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(); $repo = $composer->getRepositoryManager()->getLocalRepository(); $remoteRepos = new CompositeRepository($composer->getRepositoryManager()->getRepositories()); $fundings = array(); $packagesToLoad = array(); foreach ($repo->getPackages() as $package) { if ($package instanceof AliasPackage) { continue; } $packagesToLoad[$package->getName()] = new MatchAllConstraint(); } // load all packages dev versions in parallel $result = $remoteRepos->loadPackages($packagesToLoad, array('dev' => BasePackage::STABILITY_DEV), array()); // collect funding data from default branches foreach ($result['packages'] as $package) { if ( !$package instanceof AliasPackage && $package instanceof CompletePackageInterface && $package->isDefaultBranch() && $package->getFunding() && isset($packagesToLoad[$package->getName()]) ) { $fundings = $this->insertFundingData($fundings, $package); unset($packagesToLoad[$package->getName()]); } } // collect funding from installed packages if none was found in the default branch above foreach ($repo->getPackages() as $package) { if ($package instanceof AliasPackage || !isset($packagesToLoad[$package->getName()])) { continue; } if ($package instanceof CompletePackageInterface && $package->getFunding()) { $fundings = $this->insertFundingData($fundings, $package); } } ksort($fundings); $io = $this->getIO(); if ($fundings) { $prev = null; $io->write('The following packages were found in your dependencies which publish funding information:'); foreach ($fundings as $vendor => $links) { $io->write(''); $io->write(sprintf("%s", $vendor)); foreach ($links as $url => $packages) { $line = sprintf(' %s', implode(', ', $packages)); if ($prev !== $line) { $io->write($line); $prev = $line; } $io->write(sprintf(' %s', $url)); } } $io->write(""); $io->write("Please consider following these links and sponsoring the work of package authors!"); $io->write("Thank you!"); } else { $io->write("No funding links were found in your package dependencies. This doesn't mean they don't need your support!"); } return 0; } private function insertFundingData(array $fundings, CompletePackageInterface $package) { foreach ($package->getFunding() as $fundingOption) { list($vendor, $packageName) = explode('/', $package->getPrettyName()); // ignore malformed funding entries if (empty($fundingOption['url'])) { continue; } $url = $fundingOption['url']; if (!empty($fundingOption['type']) && $fundingOption['type'] === 'github' && preg_match('{^https://github.com/([^/]+)$}', $url, $match)) { $url = 'https://github.com/sponsors/'.$match[1]; } $fundings[$vendor][$url][] = $packageName; } return $fundings; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Repository\PlatformRepository; use Composer\Repository\RootPackageRepository; use Composer\Repository\InstalledRepository; use Composer\Installer\SuggestedPackagesReporter; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; class SuggestsCommand extends BaseCommand { protected function configure() { $this ->setName('suggests') ->setDescription('Shows package suggestions.') ->setDefinition(array( new InputOption('by-package', null, InputOption::VALUE_NONE, 'Groups output by suggesting package (default)'), new InputOption('by-suggestion', null, InputOption::VALUE_NONE, 'Groups output by suggested package'), new InputOption('all', 'a', InputOption::VALUE_NONE, 'Show suggestions from all dependencies, including transitive ones'), new InputOption('list', null, InputOption::VALUE_NONE, 'Show only list of suggested package names'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Exclude suggestions from require-dev packages'), new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that you want to list suggestions from.'), )) ->setHelp( <<%command.name% command shows a sorted list of suggested packages. Read more at https://getcomposer.org/doc/03-cli.md#suggests EOT ) ; } /** * {@inheritDoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(); $installedRepos = array( new RootPackageRepository(clone $composer->getPackage()), ); $locker = $composer->getLocker(); if ($locker->isLocked()) { $installedRepos[] = new PlatformRepository(array(), $locker->getPlatformOverrides()); $installedRepos[] = $locker->getLockedRepository(!$input->getOption('no-dev')); } else { $installedRepos[] = new PlatformRepository(array(), $composer->getConfig()->get('platform') ?: array()); $installedRepos[] = $composer->getRepositoryManager()->getLocalRepository(); } $installedRepo = new InstalledRepository($installedRepos); $reporter = new SuggestedPackagesReporter($this->getIO()); $filter = $input->getArgument('packages'); $packages = $installedRepo->getPackages(); $packages[] = $composer->getPackage(); foreach ($packages as $package) { if (!empty($filter) && !in_array($package->getName(), $filter)) { continue; } $reporter->addSuggestionsFromPackage($package); } // Determine output mode, default is by-package $mode = SuggestedPackagesReporter::MODE_BY_PACKAGE; // if by-suggestion is given we override the default if ($input->getOption('by-suggestion')) { $mode = SuggestedPackagesReporter::MODE_BY_SUGGESTION; } // unless by-package is also present then we enable both if ($input->getOption('by-package')) { $mode |= SuggestedPackagesReporter::MODE_BY_PACKAGE; } // list is exclusive and overrides everything else if ($input->getOption('list')) { $mode = SuggestedPackagesReporter::MODE_LIST; } $reporter->output($mode, $installedRepo, empty($filter) && !$input->getOption('all') ? $composer->getPackage() : null); return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Niels Keurentjes */ class DependsCommand extends BaseDependencyCommand { /** * Configure command metadata. */ protected function configure() { parent::configure(); $this ->setName('depends') ->setAliases(array('why')) ->setDescription('Shows which packages cause the given package to be installed.') ->setHelp( <<php composer.phar depends composer/composer Read more at https://getcomposer.org/doc/03-cli.md#depends-why- EOT ) ; } /** * Execute the function. * * @param InputInterface $input * @param OutputInterface $output * @return int */ protected function execute(InputInterface $input, OutputInterface $output) { return parent::doExecute($input, $output); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Downloader\ChangeReportInterface; use Composer\Downloader\DvcsDownloaderInterface; use Composer\Downloader\VcsCapableDownloaderInterface; use Composer\Package\Dumper\ArrayDumper; use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionParser; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Script\ScriptEvents; use Composer\Util\ProcessExecutor; /** * @author Tiago Ribeiro * @author Rui Marinho */ class StatusCommand extends BaseCommand { const EXIT_CODE_ERRORS = 1; const EXIT_CODE_UNPUSHED_CHANGES = 2; const EXIT_CODE_VERSION_CHANGES = 4; /** * @throws \Symfony\Component\Console\Exception\InvalidArgumentException */ protected function configure() { $this ->setName('status') ->setDescription('Shows a list of locally modified packages.') ->setDefinition(array( new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Show modified files for each directory that contains changes.'), )) ->setHelp( <<getComposer(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'status', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); // Dispatch pre-status-command $composer->getEventDispatcher()->dispatchScript(ScriptEvents::PRE_STATUS_CMD, true); $exitCode = $this->doExecute($input); // Dispatch post-status-command $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_STATUS_CMD, true); return $exitCode; } /** * @param InputInterface $input * @return int */ private function doExecute(InputInterface $input) { // init repos $composer = $this->getComposer(); $installedRepo = $composer->getRepositoryManager()->getLocalRepository(); $dm = $composer->getDownloadManager(); $im = $composer->getInstallationManager(); $errors = array(); $io = $this->getIO(); $unpushedChanges = array(); $vcsVersionChanges = array(); $parser = new VersionParser; $guesser = new VersionGuesser($composer->getConfig(), new ProcessExecutor($io), $parser); $dumper = new ArrayDumper; // list packages foreach ($installedRepo->getCanonicalPackages() as $package) { $downloader = $dm->getDownloaderForPackage($package); $targetDir = $im->getInstallPath($package); if ($downloader instanceof ChangeReportInterface) { if (is_link($targetDir)) { $errors[$targetDir] = $targetDir . ' is a symbolic link.'; } if ($changes = $downloader->getLocalChanges($package, $targetDir)) { $errors[$targetDir] = $changes; } } if ($downloader instanceof VcsCapableDownloaderInterface) { if ($downloader->getVcsReference($package, $targetDir)) { switch ($package->getInstallationSource()) { case 'source': $previousRef = $package->getSourceReference(); break; case 'dist': $previousRef = $package->getDistReference(); break; default: $previousRef = null; } $currentVersion = $guesser->guessVersion($dumper->dump($package), $targetDir); if ($previousRef && $currentVersion && $currentVersion['commit'] !== $previousRef) { $vcsVersionChanges[$targetDir] = array( 'previous' => array( 'version' => $package->getPrettyVersion(), 'ref' => $previousRef, ), 'current' => array( 'version' => $currentVersion['pretty_version'], 'ref' => $currentVersion['commit'], ), ); } } } if ($downloader instanceof DvcsDownloaderInterface) { if ($unpushed = $downloader->getUnpushedChanges($package, $targetDir)) { $unpushedChanges[$targetDir] = $unpushed; } } } // output errors/warnings if (!$errors && !$unpushedChanges && !$vcsVersionChanges) { $io->writeError('No local changes'); return 0; } if ($errors) { $io->writeError('You have changes in the following dependencies:'); foreach ($errors as $path => $changes) { if ($input->getOption('verbose')) { $indentedChanges = implode("\n", array_map(function ($line) { return ' ' . ltrim($line); }, explode("\n", $changes))); $io->write(''.$path.':'); $io->write($indentedChanges); } else { $io->write($path); } } } if ($unpushedChanges) { $io->writeError('You have unpushed changes on the current branch in the following dependencies:'); foreach ($unpushedChanges as $path => $changes) { if ($input->getOption('verbose')) { $indentedChanges = implode("\n", array_map(function ($line) { return ' ' . ltrim($line); }, explode("\n", $changes))); $io->write(''.$path.':'); $io->write($indentedChanges); } else { $io->write($path); } } } if ($vcsVersionChanges) { $io->writeError('You have version variations in the following dependencies:'); foreach ($vcsVersionChanges as $path => $changes) { if ($input->getOption('verbose')) { // If we don't can't find a version, use the ref instead. $currentVersion = $changes['current']['version'] ?: $changes['current']['ref']; $previousVersion = $changes['previous']['version'] ?: $changes['previous']['ref']; if ($io->isVeryVerbose()) { // Output the ref regardless of whether or not it's being used as the version $currentVersion .= sprintf(' (%s)', $changes['current']['ref']); $previousVersion .= sprintf(' (%s)', $changes['previous']['ref']); } $io->write(''.$path.':'); $io->write(sprintf(' From %s to %s', $previousVersion, $currentVersion)); } else { $io->write($path); } } } if (($errors || $unpushedChanges || $vcsVersionChanges) && !$input->getOption('verbose')) { $io->writeError('Use --verbose (-v) to see a list of files'); } return ($errors ? self::EXIT_CODE_ERRORS : 0) + ($unpushedChanges ? self::EXIT_CODE_UNPUSHED_CHANGES : 0) + ($vcsVersionChanges ? self::EXIT_CODE_VERSION_CHANGES : 0); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano */ class DumpAutoloadCommand extends BaseCommand { protected function configure() { $this ->setName('dump-autoload') ->setAliases(array('dumpautoload')) ->setDescription('Dumps the autoloader.') ->setDefinition(array( new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('optimize', 'o', InputOption::VALUE_NONE, 'Optimizes PSR0 and PSR4 packages to be loaded with classmaps too, good for production.'), new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize`.'), new InputOption('apcu', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), new InputOption('apcu-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables autoload-dev rules.'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), )) ->setHelp( <<php composer.phar dump-autoload Read more at https://getcomposer.org/doc/03-cli.md#dump-autoload-dumpautoload- EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'dump-autoload', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $installationManager = $composer->getInstallationManager(); $localRepo = $composer->getRepositoryManager()->getLocalRepository(); $package = $composer->getPackage(); $config = $composer->getConfig(); $optimize = $input->getOption('optimize') || $config->get('optimize-autoloader'); $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); $apcuPrefix = $input->getOption('apcu-prefix'); $apcu = $apcuPrefix !== null || $input->getOption('apcu') || $config->get('apcu-autoloader'); if ($authoritative) { $this->getIO()->write('Generating optimized autoload files (authoritative)'); } elseif ($optimize) { $this->getIO()->write('Generating optimized autoload files'); } else { $this->getIO()->write('Generating autoload files'); } $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); $generator = $composer->getAutoloadGenerator(); $generator->setDevMode(!$input->getOption('no-dev')); $generator->setClassMapAuthoritative($authoritative); $generator->setApcu($apcu, $apcuPrefix); $generator->setRunScripts(!$input->getOption('no-scripts')); $generator->setIgnorePlatformRequirements($ignorePlatformReqs); $numberOfClasses = $generator->dump($config, $localRepo, $package, $installationManager, 'composer', $optimize); if ($authoritative) { $this->getIO()->write('Generated optimized autoload files (authoritative) containing '. $numberOfClasses .' classes'); } elseif ($optimize) { $this->getIO()->write('Generated optimized autoload files containing '. $numberOfClasses .' classes'); } else { $this->getIO()->write('Generated autoload files'); } return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano */ class AboutCommand extends BaseCommand { protected function configure() { $this ->setName('about') ->setDescription('Shows the short information about Composer.') ->setHelp( <<php composer.phar about EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $this->getIO()->write( <<Composer - Dependency Manager for PHP Composer is a dependency manager tracking local dependencies of your projects and libraries. See https://getcomposer.org/ for more information. EOT ); return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Package\Link; use Composer\Semver\Constraint\Constraint; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Repository\PlatformRepository; use Composer\Repository\RootPackageRepository; use Composer\Repository\InstalledRepository; class CheckPlatformReqsCommand extends BaseCommand { protected function configure() { $this->setName('check-platform-reqs') ->setDescription('Check that platform requirements are satisfied.') ->setDefinition(array( new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables checking of require-dev packages requirements.'), new InputOption('lock', null, InputOption::VALUE_NONE, 'Checks requirements only from the lock file, not from installed packages.'), )) ->setHelp( <<php composer.phar check-platform-reqs EOT ); } protected function execute(InputInterface $input, OutputInterface $output) { $composer = $this->getComposer(); $requires = array(); $removePackages = array(); if ($input->getOption('lock')) { $this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements using the lock file'); $installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); } else { $installedRepo = $composer->getRepositoryManager()->getLocalRepository(); // fallback to lockfile if installed repo is empty if (!$installedRepo->getPackages()) { $this->getIO()->writeError('No vendor dir present, checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements from the lock file'); $installedRepo = $composer->getLocker()->getLockedRepository(!$input->getOption('no-dev')); } else { if ($input->getOption('no-dev')) { $removePackages = $installedRepo->getDevPackageNames(); } $this->getIO()->writeError('Checking '.($input->getOption('no-dev') ? 'non-dev ' : '').'platform requirements for packages in the vendor dir'); } } if (!$input->getOption('no-dev')) { $requires += $composer->getPackage()->getDevRequires(); } foreach ($requires as $require => $link) { $requires[$require] = array($link); } $installedRepo = new InstalledRepository(array($installedRepo, new RootPackageRepository($composer->getPackage()))); foreach ($installedRepo->getPackages() as $package) { if (in_array($package->getName(), $removePackages, true)) { continue; } foreach ($package->getRequires() as $require => $link) { $requires[$require][] = $link; } } ksort($requires); $installedRepo->addRepository(new PlatformRepository(array(), array())); $results = array(); $exitCode = 0; /** * @var Link[] $links */ foreach ($requires as $require => $links) { if (PlatformRepository::isPlatformPackage($require)) { $candidates = $installedRepo->findPackagesWithReplacersAndProviders($require); if ($candidates) { $reqResults = array(); foreach ($candidates as $candidate) { $candidateConstraint = null; if ($candidate->getName() === $require) { $candidateConstraint = new Constraint('=', $candidate->getVersion()); $candidateConstraint->setPrettyString($candidate->getPrettyVersion()); } else { foreach (array_merge($candidate->getProvides(), $candidate->getReplaces()) as $link) { if ($link->getTarget() === $require) { $candidateConstraint = $link->getConstraint(); break; } } } // safety check for phpstan, but it should not be possible to get a candidate out of findPackagesWithReplacersAndProviders without a constraint matching $require if (!$candidateConstraint) { continue; } foreach ($links as $link) { if (!$link->getConstraint()->matches($candidateConstraint)) { $reqResults[] = array( $candidate->getName() === $require ? $candidate->getPrettyName() : $require, $candidateConstraint->getPrettyString(), $link, 'failed'.($candidate->getName() === $require ? '' : ' provided by '.$candidate->getPrettyName().''), ); // skip to next candidate continue 2; } } $results[] = array( $candidate->getName() === $require ? $candidate->getPrettyName() : $require, $candidateConstraint->getPrettyString(), null, 'success'.($candidate->getName() === $require ? '' : ' provided by '.$candidate->getPrettyName().''), ); // candidate matched, skip to next requirement continue 2; } // show the first error from every failed candidate $results = array_merge($results, $reqResults); $exitCode = max($exitCode, 1); continue; } $results[] = array( $require, 'n/a', $links[0], 'missing', ); $exitCode = max($exitCode, 2); } } $this->printTable($output, $results); return $exitCode; } protected function printTable(OutputInterface $output, $results) { $rows = array(); foreach ($results as $result) { /** * @var Link|null $link */ list($platformPackage, $version, $link, $status) = $result; $rows[] = array( $platformPackage, $version, $link ? sprintf('%s %s %s (%s)', $link->getSource(), $link->getDescription(), $link->getTarget(), $link->getPrettyConstraint()) : '', $status, ); } $this->renderTable($rows, $output); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Config; use Composer\Factory; use Composer\Installer; use Composer\Installer\ProjectInstaller; use Composer\Installer\SuggestedPackagesReporter; use Composer\IO\IOInterface; use Composer\Package\BasePackage; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\Package\Version\VersionSelector; use Composer\Package\AliasPackage; use Composer\Repository\RepositoryFactory; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\InstalledFilesystemRepository; use Composer\Repository\RepositorySet; use Composer\Script\ScriptEvents; use Composer\Util\Silencer; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Finder\Finder; use Composer\Json\JsonFile; use Composer\Config\JsonConfigSource; use Composer\Util\Filesystem; use Composer\Util\ProcessExecutor; use Composer\Package\Version\VersionParser; /** * Install a package as new project into new directory. * * @author Benjamin Eberlei * @author Jordi Boggiano * @author Tobias Munk * @author Nils Adermann */ class CreateProjectCommand extends BaseCommand { /** * @var SuggestedPackagesReporter */ protected $suggestedPackagesReporter; protected function configure() { $this ->setName('create-project') ->setDescription('Creates new project from a package into given directory.') ->setDefinition(array( new InputArgument('package', InputArgument::OPTIONAL, 'Package name to be installed'), new InputArgument('directory', InputArgument::OPTIONAL, 'Directory where the files should be created'), new InputArgument('version', InputArgument::OPTIONAL, 'Version, will default to latest'), new InputOption('stability', 's', InputOption::VALUE_REQUIRED, 'Minimum-stability allowed (unless a version is specified).'), new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), new InputOption('repository', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Add custom repositories to look the package up, either by URL or using JSON arrays'), new InputOption('repository-url', null, InputOption::VALUE_REQUIRED, 'DEPRECATED: Use --repository instead.'), new InputOption('add-repository', null, InputOption::VALUE_NONE, 'Add the custom repository in the composer.json. If a lock file is present it will be deleted and an update will be run instead of install.'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Enables installation of require-dev packages (enabled by default, only present for BC).'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), new InputOption('no-custom-installers', null, InputOption::VALUE_NONE, 'DEPRECATED: Use no-plugins instead.'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Whether to prevent execution of all defined scripts in the root package.'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('no-secure-http', null, InputOption::VALUE_NONE, 'Disable the secure-http config option temporarily while installing the root package. Use at your own risk. Using this flag is a bad idea.'), new InputOption('keep-vcs', null, InputOption::VALUE_NONE, 'Whether to prevent deleting the vcs folder.'), new InputOption('remove-vcs', null, InputOption::VALUE_NONE, 'Whether to force deletion of the vcs folder without prompting.'), new InputOption('no-install', null, InputOption::VALUE_NONE, 'Whether to skip installation of the package dependencies.'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), new InputOption('ask', null, InputOption::VALUE_NONE, 'Whether to ask for project directory.'), )) ->setHelp( <<create-project command creates a new project from a given package into a new directory. If executed without params and in a directory with a composer.json file it installs the packages for the current project. You can use this command to bootstrap new projects or setup a clean version-controlled installation for developers of your project. php composer.phar create-project vendor/project target-directory [version] You can also specify the version with the package name using = or : as separator. php composer.phar create-project vendor/project:version target-directory To install unstable packages, either specify the version you want, or use the --stability=dev (where dev can be one of RC, beta, alpha or dev). To setup a developer workable version you should create the project using the source controlled code by appending the '--prefer-source' flag. To install a package from another repository than the default one you can pass the '--repository=https://myrepository.org' flag. Read more at https://getcomposer.org/doc/03-cli.md#create-project EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $config = Factory::createConfig(); $io = $this->getIO(); list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input, true); if ($input->getOption('dev')) { $io->writeError('You are using the deprecated option "dev". Dev packages are installed by default now.'); } if ($input->getOption('no-custom-installers')) { $io->writeError('You are using the deprecated option "no-custom-installers". Use "no-plugins" instead.'); $input->setOption('no-plugins', true); } if ($input->isInteractive() && $input->getOption('ask')) { $parts = explode("/", strtolower($input->getArgument('package')), 2); $input->setArgument('directory', $io->ask('New project directory ['.array_pop($parts).']: ')); } $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); return $this->installProject( $io, $config, $input, $input->getArgument('package'), $input->getArgument('directory'), $input->getArgument('version'), $input->getOption('stability'), $preferSource, $preferDist, !$input->getOption('no-dev'), $input->getOption('repository') ?: $input->getOption('repository-url'), $input->getOption('no-plugins'), $input->getOption('no-scripts'), $input->getOption('no-progress'), $input->getOption('no-install'), $ignorePlatformReqs, !$input->getOption('no-secure-http'), $input->getOption('add-repository') ); } public function installProject(IOInterface $io, Config $config, InputInterface $input, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, $repositories = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $noInstall = false, $ignorePlatformReqs = false, $secureHttp = true, $addRepository = false) { $oldCwd = getcwd(); if ($repositories !== null && !is_array($repositories)) { $repositories = (array) $repositories; } // we need to manually load the configuration to pass the auth credentials to the io interface! $io->loadConfiguration($config); $this->suggestedPackagesReporter = new SuggestedPackagesReporter($io); if ($packageName !== null) { $installedFromVcs = $this->installRootPackage($io, $config, $packageName, $directory, $packageVersion, $stability, $preferSource, $preferDist, $installDevPackages, $repositories, $disablePlugins, $noScripts, $noProgress, $ignorePlatformReqs, $secureHttp); } else { $installedFromVcs = false; } if ($repositories !== null && $addRepository && is_file('composer.lock')) { unlink('composer.lock'); } $composer = Factory::create($io, null, $disablePlugins); // add the repository to the composer.json and use it for the install run later if ($repositories !== null && $addRepository) { foreach ($repositories as $index => $repo) { $repoConfig = RepositoryFactory::configFromString($io, $composer->getConfig(), $repo, true); $composerJsonRepositoriesConfig = $composer->getConfig()->getRepositories(); $name = RepositoryFactory::generateRepositoryName($index, $repoConfig, $composerJsonRepositoriesConfig); $configSource = new JsonConfigSource(new JsonFile('composer.json')); if ( (isset($repoConfig['packagist']) && $repoConfig === array('packagist' => false)) || (isset($repoConfig['packagist.org']) && $repoConfig === array('packagist.org' => false)) ) { $configSource->addRepository('packagist.org', false); } else { $configSource->addRepository($name, $repoConfig, false); } $composer = Factory::create($io, null, $disablePlugins); } } $process = new ProcessExecutor($io); $fs = new Filesystem($process); if ($noScripts === false) { // dispatch event $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_ROOT_PACKAGE_INSTALL, $installDevPackages); } // use the new config including the newly installed project $config = $composer->getConfig(); list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); // install dependencies of the created project if ($noInstall === false) { $composer->getInstallationManager()->setOutputProgress(!$noProgress); $installer = Installer::create($io, $composer); $installer->setPreferSource($preferSource) ->setPreferDist($preferDist) ->setDevMode($installDevPackages) ->setRunScripts(!$noScripts) ->setIgnorePlatformRequirements($ignorePlatformReqs) ->setSuggestedPackagesReporter($this->suggestedPackagesReporter) ->setOptimizeAutoloader($config->get('optimize-autoloader')) ->setClassMapAuthoritative($config->get('classmap-authoritative')) ->setApcuAutoloader($config->get('apcu-autoloader')); if (!$composer->getLocker()->isLocked()) { $installer->setUpdate(true); } if ($disablePlugins) { $installer->disablePlugins(); } $status = $installer->run(); if (0 !== $status) { return $status; } } $hasVcs = $installedFromVcs; if ( !$input->getOption('keep-vcs') && $installedFromVcs && ( $input->getOption('remove-vcs') || !$io->isInteractive() || $io->askConfirmation('Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? ') ) ) { $finder = new Finder(); $finder->depth(0)->directories()->in(getcwd())->ignoreVCS(false)->ignoreDotFiles(false); foreach (array('.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg', '.fslckout', '_FOSSIL_') as $vcsName) { $finder->name($vcsName); } try { $dirs = iterator_to_array($finder); unset($finder); foreach ($dirs as $dir) { if (!$fs->removeDirectory($dir)) { throw new \RuntimeException('Could not remove '.$dir); } } } catch (\Exception $e) { $io->writeError('An error occurred while removing the VCS metadata: '.$e->getMessage().''); } $hasVcs = false; } // rewriting self.version dependencies with explicit version numbers if the package's vcs metadata is gone if (!$hasVcs) { $package = $composer->getPackage(); $configSource = new JsonConfigSource(new JsonFile('composer.json')); foreach (BasePackage::$supportedLinkTypes as $type => $meta) { foreach ($package->{'get'.$meta['method']}() as $link) { if ($link->getPrettyConstraint() === 'self.version') { $configSource->addLink($type, $link->getTarget(), $package->getPrettyVersion()); } } } } if ($noScripts === false) { // dispatch event $composer->getEventDispatcher()->dispatchScript(ScriptEvents::POST_CREATE_PROJECT_CMD, $installDevPackages); } chdir($oldCwd); $vendorComposerDir = $config->get('vendor-dir').'/composer'; if (is_dir($vendorComposerDir) && $fs->isDirEmpty($vendorComposerDir)) { Silencer::call('rmdir', $vendorComposerDir); $vendorDir = $config->get('vendor-dir'); if (is_dir($vendorDir) && $fs->isDirEmpty($vendorDir)) { Silencer::call('rmdir', $vendorDir); } } return 0; } protected function installRootPackage(IOInterface $io, Config $config, $packageName, $directory = null, $packageVersion = null, $stability = 'stable', $preferSource = false, $preferDist = false, $installDevPackages = false, array $repositories = null, $disablePlugins = false, $noScripts = false, $noProgress = false, $ignorePlatformReqs = false, $secureHttp = true) { if (!$secureHttp) { $config->merge(array('config' => array('secure-http' => false))); } $parser = new VersionParser(); $requirements = $parser->parseNameVersionPairs(array($packageName)); $name = strtolower($requirements[0]['name']); if (!$packageVersion && isset($requirements[0]['version'])) { $packageVersion = $requirements[0]['version']; } // if no directory was specified, use the 2nd part of the package name if (null === $directory) { $parts = explode("/", $name, 2); $directory = getcwd() . DIRECTORY_SEPARATOR . array_pop($parts); } $process = new ProcessExecutor($io); $fs = new Filesystem($process); if (!$fs->isAbsolutePath($directory)) { $directory = getcwd() . DIRECTORY_SEPARATOR . $directory; } $io->writeError('Creating a "' . $packageName . '" project at "' . $fs->findShortestPath(getcwd(), $directory, true) . '"'); if (file_exists($directory)) { if (!is_dir($directory)) { throw new \InvalidArgumentException('Cannot create project directory at "'.$directory.'", it exists as a file.'); } if (!$fs->isDirEmpty($directory)) { throw new \InvalidArgumentException('Project directory "'.$directory.'" is not empty.'); } } if (null === $stability) { if (null === $packageVersion) { $stability = 'stable'; } elseif (preg_match('{^[^,\s]*?@('.implode('|', array_keys(BasePackage::$stabilities)).')$}i', $packageVersion, $match)) { $stability = $match[1]; } else { $stability = VersionParser::parseStability($packageVersion); } } $stability = VersionParser::normalizeStability($stability); if (!isset(BasePackage::$stabilities[$stability])) { throw new \InvalidArgumentException('Invalid stability provided ('.$stability.'), must be one of: '.implode(', ', array_keys(BasePackage::$stabilities))); } $composer = Factory::create($io, $config->all(), $disablePlugins); $config = $composer->getConfig(); $rm = $composer->getRepositoryManager(); $repositorySet = new RepositorySet($stability); if (null === $repositories) { $repositorySet->addRepository(new CompositeRepository(RepositoryFactory::defaultRepos($io, $config, $rm))); } else { foreach ($repositories as $repo) { $repoConfig = RepositoryFactory::configFromString($io, $config, $repo, true); if ( (isset($repoConfig['packagist']) && $repoConfig === array('packagist' => false)) || (isset($repoConfig['packagist.org']) && $repoConfig === array('packagist.org' => false)) ) { continue; } $repositorySet->addRepository(RepositoryFactory::createRepo($io, $config, $repoConfig, $rm)); } } $platformOverrides = $config->get('platform') ?: array(); $platformRepo = new PlatformRepository(array(), $platformOverrides); // find the latest version if there are multiple $versionSelector = new VersionSelector($repositorySet, $platformRepo); $package = $versionSelector->findBestCandidate($name, $packageVersion, $stability, $ignorePlatformReqs); if (!$package) { $errorMessage = "Could not find package $name with " . ($packageVersion ? "version $packageVersion" : "stability $stability"); if (true !== $ignorePlatformReqs && $versionSelector->findBestCandidate($name, $packageVersion, $stability, true)) { throw new \InvalidArgumentException($errorMessage .' in a version installable using your PHP version, PHP extensions and Composer version.'); } throw new \InvalidArgumentException($errorMessage .'.'); } // handler Ctrl+C for unix-like systems if (function_exists('pcntl_async_signals') && function_exists('pcntl_signal')) { @mkdir($directory, 0777, true); if ($realDir = realpath($directory)) { pcntl_async_signals(true); pcntl_signal(SIGINT, function () use ($realDir) { $fs = new Filesystem(); $fs->removeDirectory($realDir); exit(130); }); } } // handler Ctrl+C for Windows on PHP 7.4+ if (function_exists('sapi_windows_set_ctrl_handler') && PHP_SAPI === 'cli') { @mkdir($directory, 0777, true); if ($realDir = realpath($directory)) { sapi_windows_set_ctrl_handler(function () use ($realDir) { $fs = new Filesystem(); $fs->removeDirectory($realDir); exit(130); }); } } // avoid displaying 9999999-dev as version if default-branch was selected if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { $package = $package->getAliasOf(); } $io->writeError('Installing ' . $package->getName() . ' (' . $package->getFullPrettyVersion(false) . ')'); if ($disablePlugins) { $io->writeError('Plugins have been disabled.'); } if ($package instanceof AliasPackage) { $package = $package->getAliasOf(); } $dm = $composer->getDownloadManager(); $dm->setPreferSource($preferSource) ->setPreferDist($preferDist); $projectInstaller = new ProjectInstaller($directory, $dm, $fs); $im = $composer->getInstallationManager(); $im->setOutputProgress(!$noProgress); $im->addInstaller($projectInstaller); $im->execute(new InstalledFilesystemRepository(new JsonFile('php://memory')), array(new InstallOperation($package))); $im->notifyInstalls($io); // collect suggestions $this->suggestedPackagesReporter->addSuggestionsFromPackage($package); $installedFromVcs = 'source' === $package->getInstallationSource(); $io->writeError('Created project in ' . $directory . ''); chdir($directory); $_SERVER['COMPOSER_ROOT_VERSION'] = $package->getPrettyVersion(); putenv('COMPOSER_ROOT_VERSION='.$_SERVER['COMPOSER_ROOT_VERSION']); return $installedFromVcs; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Util\Platform; use Composer\Util\Silencer; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Config; use Composer\Config\JsonConfigSource; use Composer\Factory; use Composer\IO\IOInterface; use Composer\Json\JsonFile; use Composer\Semver\VersionParser; use Composer\Package\BasePackage; /** * @author Joshua Estes * @author Jordi Boggiano */ class ConfigCommand extends BaseCommand { /** * @var Config */ protected $config; /** * @var JsonFile */ protected $configFile; /** * @var JsonConfigSource */ protected $configSource; /** * @var JsonFile */ protected $authConfigFile; /** * @var JsonConfigSource */ protected $authConfigSource; /** * {@inheritDoc} */ protected function configure() { $this ->setName('config') ->setDescription('Sets config options.') ->setDefinition(array( new InputOption('global', 'g', InputOption::VALUE_NONE, 'Apply command to the global config file'), new InputOption('editor', 'e', InputOption::VALUE_NONE, 'Open editor'), new InputOption('auth', 'a', InputOption::VALUE_NONE, 'Affect auth config file (only used for --editor)'), new InputOption('unset', null, InputOption::VALUE_NONE, 'Unset the given setting-key'), new InputOption('list', 'l', InputOption::VALUE_NONE, 'List configuration settings'), new InputOption('file', 'f', InputOption::VALUE_REQUIRED, 'If you want to choose a different composer.json or config.json'), new InputOption('absolute', null, InputOption::VALUE_NONE, 'Returns absolute paths when fetching *-dir config values instead of relative'), new InputOption('json', 'j', InputOption::VALUE_NONE, 'JSON decode the setting value, to be used with extra.* keys'), new InputOption('merge', 'm', InputOption::VALUE_NONE, 'Merge the setting value with the current value, to be used with extra.* keys in combination with --json'), new InputOption('append', null, InputOption::VALUE_NONE, 'When adding a repository, append it (lowest priority) to the existing ones instead of prepending it (highest priority)'), new InputArgument('setting-key', null, 'Setting key'), new InputArgument('setting-value', InputArgument::IS_ARRAY, 'Setting value'), )) ->setHelp( <<%command.full_name% bin-dir bin/ To read a config setting: %command.full_name% bin-dir Outputs: bin To edit the global config.json file: %command.full_name% --global To add a repository: %command.full_name% repositories.foo vcs https://bar.com To remove a repository (repo is a short alias for repositories): %command.full_name% --unset repo.foo To disable packagist: %command.full_name% repo.packagist false You can alter repositories in the global config.json file by passing in the --global option. To add or edit suggested packages you can use: %command.full_name% suggest.package reason for the suggestion To add or edit extra properties you can use: %command.full_name% extra.property value Or to add a complex value you can use json with: %command.full_name% extra.property --json '{"foo":true, "bar": []}' To edit the file in an external editor: %command.full_name% --editor To choose your editor you can set the "EDITOR" env variable. To get a list of configuration values in the file: %command.full_name% --list You can always pass more than one option. As an example, if you want to edit the global config.json file. %command.full_name% --editor --global Read more at https://getcomposer.org/doc/03-cli.md#config EOT ) ; } /** * {@inheritDoc} */ protected function initialize(InputInterface $input, OutputInterface $output) { parent::initialize($input, $output); if ($input->getOption('global') && null !== $input->getOption('file')) { throw new \RuntimeException('--file and --global can not be combined'); } $io = $this->getIO(); $this->config = Factory::createConfig($io); // Get the local composer.json, global config.json, or if the user // passed in a file to use $configFile = $input->getOption('global') ? ($this->config->get('home') . '/config.json') : ($input->getOption('file') ?: Factory::getComposerFile()); // Create global composer.json if this was invoked using `composer global config` if ( ($configFile === 'composer.json' || $configFile === './composer.json') && !file_exists($configFile) && realpath(getcwd()) === realpath($this->config->get('home')) ) { file_put_contents($configFile, "{\n}\n"); } $this->configFile = new JsonFile($configFile, null, $io); $this->configSource = new JsonConfigSource($this->configFile); $authConfigFile = $input->getOption('global') ? ($this->config->get('home') . '/auth.json') : dirname(realpath($configFile)) . '/auth.json'; $this->authConfigFile = new JsonFile($authConfigFile, null, $io); $this->authConfigSource = new JsonConfigSource($this->authConfigFile, true); // Initialize the global file if it's not there, ignoring any warnings or notices if ($input->getOption('global') && !$this->configFile->exists()) { touch($this->configFile->getPath()); $this->configFile->write(array('config' => new \ArrayObject)); Silencer::call('chmod', $this->configFile->getPath(), 0600); } if ($input->getOption('global') && !$this->authConfigFile->exists()) { touch($this->authConfigFile->getPath()); $this->authConfigFile->write(array('bitbucket-oauth' => new \ArrayObject, 'github-oauth' => new \ArrayObject, 'gitlab-oauth' => new \ArrayObject, 'gitlab-token' => new \ArrayObject, 'http-basic' => new \ArrayObject, 'bearer' => new \ArrayObject)); Silencer::call('chmod', $this->authConfigFile->getPath(), 0600); } if (!$this->configFile->exists()) { throw new \RuntimeException(sprintf('File "%s" cannot be found in the current directory', $configFile)); } } /** * {@inheritDoc} */ protected function execute(InputInterface $input, OutputInterface $output) { // Open file in editor if ($input->getOption('editor')) { $editor = escapeshellcmd(getenv('EDITOR')); if (!$editor) { if (Platform::isWindows()) { $editor = 'notepad'; } else { foreach (array('editor', 'vim', 'vi', 'nano', 'pico', 'ed') as $candidate) { if (exec('which '.$candidate)) { $editor = $candidate; break; } } } } $file = $input->getOption('auth') ? $this->authConfigFile->getPath() : $this->configFile->getPath(); system($editor . ' ' . $file . (Platform::isWindows() ? '' : ' > `tty`')); return 0; } if (!$input->getOption('global')) { $this->config->merge($this->configFile->read()); $this->config->merge(array('config' => $this->authConfigFile->exists() ? $this->authConfigFile->read() : array())); } // List the configuration of the file settings if ($input->getOption('list')) { $this->listConfiguration($this->config->all(), $this->config->raw(), $output); return 0; } $settingKey = $input->getArgument('setting-key'); if (!$settingKey || !is_string($settingKey)) { return 0; } // If the user enters in a config variable, parse it and save to file if (array() !== $input->getArgument('setting-value') && $input->getOption('unset')) { throw new \RuntimeException('You can not combine a setting value with --unset'); } // show the value if no value is provided if (array() === $input->getArgument('setting-value') && !$input->getOption('unset')) { $properties = array('name', 'type', 'description', 'homepage', 'version', 'minimum-stability', 'prefer-stable', 'keywords', 'license', 'extra'); $rawData = $this->configFile->read(); $data = $this->config->all(); if (preg_match('/^repos?(?:itories)?(?:\.(.+))?/', $settingKey, $matches)) { if (!isset($matches[1]) || $matches[1] === '') { $value = isset($data['repositories']) ? $data['repositories'] : array(); } else { if (!isset($data['repositories'][$matches[1]])) { throw new \InvalidArgumentException('There is no '.$matches[1].' repository defined'); } $value = $data['repositories'][$matches[1]]; } } elseif (strpos($settingKey, '.')) { $bits = explode('.', $settingKey); if ($bits[0] === 'extra') { $data = $rawData; } else { $data = $data['config']; } $match = false; foreach ($bits as $bit) { $key = isset($key) ? $key.'.'.$bit : $bit; $match = false; if (isset($data[$key])) { $match = true; $data = $data[$key]; unset($key); } } if (!$match) { throw new \RuntimeException($settingKey.' is not defined.'); } $value = $data; } elseif (isset($data['config'][$settingKey])) { $value = $this->config->get($settingKey, $input->getOption('absolute') ? 0 : Config::RELATIVE_PATHS); } elseif (isset($rawData[$settingKey]) && in_array($settingKey, $properties, true)) { $value = $rawData[$settingKey]; } else { throw new \RuntimeException($settingKey.' is not defined'); } if (is_array($value)) { $value = json_encode($value); } $this->getIO()->write($value, true, IOInterface::QUIET); return 0; } $values = $input->getArgument('setting-value'); // what the user is trying to add/change $booleanValidator = function ($val) { return in_array($val, array('true', 'false', '1', '0'), true); }; $booleanNormalizer = function ($val) { return $val !== 'false' && (bool) $val; }; // handle config values $uniqueConfigValues = array( 'process-timeout' => array('is_numeric', 'intval'), 'use-include-path' => array($booleanValidator, $booleanNormalizer), 'use-github-api' => array($booleanValidator, $booleanNormalizer), 'preferred-install' => array( function ($val) { return in_array($val, array('auto', 'source', 'dist'), true); }, function ($val) { return $val; }, ), 'store-auths' => array( function ($val) { return in_array($val, array('true', 'false', 'prompt'), true); }, function ($val) { if ('prompt' === $val) { return 'prompt'; } return $val !== 'false' && (bool) $val; }, ), 'notify-on-install' => array($booleanValidator, $booleanNormalizer), 'vendor-dir' => array('is_string', function ($val) { return $val; }), 'bin-dir' => array('is_string', function ($val) { return $val; }), 'archive-dir' => array('is_string', function ($val) { return $val; }), 'archive-format' => array('is_string', function ($val) { return $val; }), 'data-dir' => array('is_string', function ($val) { return $val; }), 'cache-dir' => array('is_string', function ($val) { return $val; }), 'cache-files-dir' => array('is_string', function ($val) { return $val; }), 'cache-repo-dir' => array('is_string', function ($val) { return $val; }), 'cache-vcs-dir' => array('is_string', function ($val) { return $val; }), 'cache-ttl' => array('is_numeric', 'intval'), 'cache-files-ttl' => array('is_numeric', 'intval'), 'cache-files-maxsize' => array( function ($val) { return preg_match('/^\s*([0-9.]+)\s*(?:([kmg])(?:i?b)?)?\s*$/i', $val) > 0; }, function ($val) { return $val; }, ), 'bin-compat' => array( function ($val) { return in_array($val, array('auto', 'full')); }, function ($val) { return $val; }, ), 'discard-changes' => array( function ($val) { return in_array($val, array('stash', 'true', 'false', '1', '0'), true); }, function ($val) { if ('stash' === $val) { return 'stash'; } return $val !== 'false' && (bool) $val; }, ), 'autoloader-suffix' => array('is_string', function ($val) { return $val === 'null' ? null : $val; }), 'sort-packages' => array($booleanValidator, $booleanNormalizer), 'optimize-autoloader' => array($booleanValidator, $booleanNormalizer), 'classmap-authoritative' => array($booleanValidator, $booleanNormalizer), 'apcu-autoloader' => array($booleanValidator, $booleanNormalizer), 'prepend-autoloader' => array($booleanValidator, $booleanNormalizer), 'disable-tls' => array($booleanValidator, $booleanNormalizer), 'secure-http' => array($booleanValidator, $booleanNormalizer), 'cafile' => array( function ($val) { return file_exists($val) && is_readable($val); }, function ($val) { return $val === 'null' ? null : $val; }, ), 'capath' => array( function ($val) { return is_dir($val) && is_readable($val); }, function ($val) { return $val === 'null' ? null : $val; }, ), 'github-expose-hostname' => array($booleanValidator, $booleanNormalizer), 'htaccess-protect' => array($booleanValidator, $booleanNormalizer), 'lock' => array($booleanValidator, $booleanNormalizer), 'platform-check' => array( function ($val) { return in_array($val, array('php-only', 'true', 'false', '1', '0'), true); }, function ($val) { if ('php-only' === $val) { return 'php-only'; } return $val !== 'false' && (bool) $val; }, ), ); $multiConfigValues = array( 'github-protocols' => array( function ($vals) { if (!is_array($vals)) { return 'array expected'; } foreach ($vals as $val) { if (!in_array($val, array('git', 'https', 'ssh'))) { return 'valid protocols include: git, https, ssh'; } } return true; }, function ($vals) { return $vals; }, ), 'github-domains' => array( function ($vals) { if (!is_array($vals)) { return 'array expected'; } return true; }, function ($vals) { return $vals; }, ), 'gitlab-domains' => array( function ($vals) { if (!is_array($vals)) { return 'array expected'; } return true; }, function ($vals) { return $vals; }, ), ); if ($input->getOption('unset') && (isset($uniqueConfigValues[$settingKey]) || isset($multiConfigValues[$settingKey]))) { if ($settingKey === 'disable-tls' && $this->config->get('disable-tls')) { $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); } $this->configSource->removeConfigSetting($settingKey); return 0; } if (isset($uniqueConfigValues[$settingKey])) { $this->handleSingleValue($settingKey, $uniqueConfigValues[$settingKey], $values, 'addConfigSetting'); return 0; } if (isset($multiConfigValues[$settingKey])) { $this->handleMultiValue($settingKey, $multiConfigValues[$settingKey], $values, 'addConfigSetting'); return 0; } // handle preferred-install per-package config if (preg_match('/^preferred-install\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeConfigSetting($settingKey); return 0; } list($validator) = $uniqueConfigValues['preferred-install']; if (!$validator($values[0])) { throw new \RuntimeException('Invalid value for '.$settingKey.'. Should be one of: auto, source, or dist'); } $this->configSource->addConfigSetting($settingKey, $values[0]); return 0; } // handle properties $uniqueProps = array( 'name' => array('is_string', function ($val) { return $val; }), 'type' => array('is_string', function ($val) { return $val; }), 'description' => array('is_string', function ($val) { return $val; }), 'homepage' => array('is_string', function ($val) { return $val; }), 'version' => array('is_string', function ($val) { return $val; }), 'minimum-stability' => array( function ($val) { return isset(BasePackage::$stabilities[VersionParser::normalizeStability($val)]); }, function ($val) { return VersionParser::normalizeStability($val); }, ), 'prefer-stable' => array($booleanValidator, $booleanNormalizer), ); $multiProps = array( 'keywords' => array( function ($vals) { if (!is_array($vals)) { return 'array expected'; } return true; }, function ($vals) { return $vals; }, ), 'license' => array( function ($vals) { if (!is_array($vals)) { return 'array expected'; } return true; }, function ($vals) { return $vals; }, ), ); if ($input->getOption('global') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]) || strpos($settingKey, 'extra.') === 0)) { throw new \InvalidArgumentException('The '.$settingKey.' property can not be set in the global config.json file. Use `composer global config` to apply changes to the global composer.json'); } if ($input->getOption('unset') && (isset($uniqueProps[$settingKey]) || isset($multiProps[$settingKey]))) { $this->configSource->removeProperty($settingKey); return 0; } if (isset($uniqueProps[$settingKey])) { $this->handleSingleValue($settingKey, $uniqueProps[$settingKey], $values, 'addProperty'); return 0; } if (isset($multiProps[$settingKey])) { $this->handleMultiValue($settingKey, $multiProps[$settingKey], $values, 'addProperty'); return 0; } // handle repositories if (preg_match('/^repos?(?:itories)?\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeRepository($matches[1]); return 0; } if (2 === count($values)) { $this->configSource->addRepository($matches[1], array( 'type' => $values[0], 'url' => $values[1], ), $input->getOption('append')); return 0; } if (1 === count($values)) { $value = strtolower($values[0]); if (true === $booleanValidator($value)) { if (false === $booleanNormalizer($value)) { $this->configSource->addRepository($matches[1], false, $input->getOption('append')); return 0; } } else { $value = JsonFile::parseJson($values[0]); $this->configSource->addRepository($matches[1], $value, $input->getOption('append')); return 0; } } throw new \RuntimeException('You must pass the type and a url. Example: php composer.phar config repositories.foo vcs https://bar.com'); } // handle extra if (preg_match('/^extra\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeProperty($settingKey); return 0; } $value = $values[0]; if ($input->getOption('json')) { $value = JsonFile::parseJson($value); if ($input->getOption('merge')) { $currentValue = $this->configFile->read(); $bits = explode('.', $settingKey); foreach ($bits as $bit) { $currentValue = isset($currentValue[$bit]) ? $currentValue[$bit] : null; } if (is_array($currentValue)) { $value = array_merge($currentValue, $value); } } } $this->configSource->addProperty($settingKey, $value); return 0; } // handle suggest if (preg_match('/^suggest\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeProperty($settingKey); return 0; } $this->configSource->addProperty($settingKey, implode(' ', $values)); return 0; } // handle unsetting extra/suggest if (in_array($settingKey, array('suggest', 'extra'), true) && $input->getOption('unset')) { $this->configSource->removeProperty($settingKey); return 0; } // handle platform if (preg_match('/^platform\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeConfigSetting($settingKey); return 0; } $this->configSource->addConfigSetting($settingKey, $values[0]); return 0; } // handle unsetting platform if ($settingKey === 'platform' && $input->getOption('unset')) { $this->configSource->removeConfigSetting($settingKey); return 0; } // handle auth if (preg_match('/^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|http-basic|bearer)\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->authConfigSource->removeConfigSetting($matches[1].'.'.$matches[2]); $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); return 0; } if ($matches[1] === 'bitbucket-oauth') { if (2 !== count($values)) { throw new \RuntimeException('Expected two arguments (consumer-key, consumer-secret), got '.count($values)); } $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('consumer-key' => $values[0], 'consumer-secret' => $values[1])); } elseif ($matches[1] === 'gitlab-token' && 2 === count($values)) { $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('username' => $values[0], 'token' => $values[1])); } elseif (in_array($matches[1], array('github-oauth', 'gitlab-oauth', 'gitlab-token', 'bearer'), true)) { if (1 !== count($values)) { throw new \RuntimeException('Too many arguments, expected only one token'); } $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], $values[0]); } elseif ($matches[1] === 'http-basic') { if (2 !== count($values)) { throw new \RuntimeException('Expected two arguments (username, password), got '.count($values)); } $this->configSource->removeConfigSetting($matches[1].'.'.$matches[2]); $this->authConfigSource->addConfigSetting($matches[1].'.'.$matches[2], array('username' => $values[0], 'password' => $values[1])); } return 0; } // handle script if (preg_match('/^scripts\.(.+)/', $settingKey, $matches)) { if ($input->getOption('unset')) { $this->configSource->removeProperty($settingKey); return 0; } $this->configSource->addProperty($settingKey, count($values) > 1 ? $values : $values[0]); return 0; } throw new \InvalidArgumentException('Setting '.$settingKey.' does not exist or is not supported by this command'); } protected function handleSingleValue($key, array $callbacks, array $values, $method) { list($validator, $normalizer) = $callbacks; if (1 !== count($values)) { throw new \RuntimeException('You can only pass one value. Example: php composer.phar config process-timeout 300'); } if (true !== $validation = $validator($values[0])) { throw new \RuntimeException(sprintf( '"%s" is an invalid value'.($validation ? ' ('.$validation.')' : ''), $values[0] )); } $normalizedValue = $normalizer($values[0]); if ($key === 'disable-tls') { if (!$normalizedValue && $this->config->get('disable-tls')) { $this->getIO()->writeError('You are now running Composer with SSL/TLS protection enabled.'); } elseif ($normalizedValue && !$this->config->get('disable-tls')) { $this->getIO()->writeError('You are now running Composer with SSL/TLS protection disabled.'); } } return call_user_func(array($this->configSource, $method), $key, $normalizedValue); } protected function handleMultiValue($key, array $callbacks, array $values, $method) { list($validator, $normalizer) = $callbacks; if (true !== $validation = $validator($values)) { throw new \RuntimeException(sprintf( '%s is an invalid value'.($validation ? ' ('.$validation.')' : ''), json_encode($values) )); } return call_user_func(array($this->configSource, $method), $key, $normalizer($values)); } /** * Display the contents of the file in a pretty formatted way * * @param array $contents * @param array $rawContents * @param OutputInterface $output * @param string|null $k */ protected function listConfiguration(array $contents, array $rawContents, OutputInterface $output, $k = null) { $origK = $k; $io = $this->getIO(); foreach ($contents as $key => $value) { if ($k === null && !in_array($key, array('config', 'repositories'))) { continue; } $rawVal = isset($rawContents[$key]) ? $rawContents[$key] : null; if (is_array($value) && (!is_numeric(key($value)) || ($key === 'repositories' && null === $k))) { $k .= preg_replace('{^config\.}', '', $key . '.'); $this->listConfiguration($value, $rawVal, $output, $k); $k = $origK; continue; } if (is_array($value)) { $value = array_map(function ($val) { return is_array($val) ? json_encode($val) : $val; }, $value); $value = '['.implode(', ', $value).']'; } if (is_bool($value)) { $value = var_export($value, true); } if (is_string($rawVal) && $rawVal != $value) { $io->write('[' . $k . $key . '] ' . $rawVal . ' (' . $value . ')', true, IOInterface::QUIET); } else { $io->write('[' . $k . $key . '] ' . $value . '', true, IOInterface::QUIET); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Composer; use Composer\Config; use Composer\Console\Application; use Composer\Factory; use Composer\IO\IOInterface; use Composer\IO\NullIO; use Composer\Plugin\PreCommandRunEvent; use Composer\Package\Version\VersionParser; use Composer\Plugin\PluginEvents; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Command\Command; /** * Base class for Composer commands * * @method Application getApplication() * * @author Ryan Weaver * @author Konstantin Kudryashov */ abstract class BaseCommand extends Command { /** * @var Composer|null */ private $composer; /** * @var IOInterface */ private $io; /** * @param bool $required * @param bool|null $disablePlugins * @throws \RuntimeException * @return Composer|null */ public function getComposer($required = true, $disablePlugins = null) { if (null === $this->composer) { $application = $this->getApplication(); if ($application instanceof Application) { /* @var $application Application */ $this->composer = $application->getComposer($required, $disablePlugins); } elseif ($required) { throw new \RuntimeException( 'Could not create a Composer\Composer instance, you must inject '. 'one if this command is not used with a Composer\Console\Application instance' ); } } return $this->composer; } /** * @param Composer $composer */ public function setComposer(Composer $composer) { $this->composer = $composer; } /** * Removes the cached composer instance */ public function resetComposer() { $this->composer = null; $this->getApplication()->resetComposer(); } /** * Whether or not this command is meant to call another command. * * This is mainly needed to avoid duplicated warnings messages. * * @return bool */ public function isProxyCommand() { return false; } /** * @return IOInterface */ public function getIO() { if (null === $this->io) { $application = $this->getApplication(); if ($application instanceof Application) { /* @var $application Application */ $this->io = $application->getIO(); } else { $this->io = new NullIO(); } } return $this->io; } /** * @param IOInterface $io */ public function setIO(IOInterface $io) { $this->io = $io; } /** * {@inheritDoc} */ protected function initialize(InputInterface $input, OutputInterface $output) { // initialize a plugin-enabled Composer instance, either local or global $disablePlugins = $input->hasParameterOption('--no-plugins'); $composer = $this->getComposer(false, $disablePlugins); if (null === $composer) { $composer = Factory::createGlobal($this->getIO(), $disablePlugins); } if ($composer) { $preCommandRunEvent = new PreCommandRunEvent(PluginEvents::PRE_COMMAND_RUN, $input, $this->getName()); $composer->getEventDispatcher()->dispatch($preCommandRunEvent->getName(), $preCommandRunEvent); } if (true === $input->hasParameterOption(array('--no-ansi')) && $input->hasOption('no-progress')) { $input->setOption('no-progress', true); } parent::initialize($input, $output); } /** * Returns preferSource and preferDist values based on the configuration. * * @param Config $config * @param InputInterface $input * @param bool $keepVcsRequiresPreferSource * * @return bool[] An array composed of the preferSource and preferDist values */ protected function getPreferredInstallOptions(Config $config, InputInterface $input, $keepVcsRequiresPreferSource = false) { $preferSource = false; $preferDist = false; switch ($config->get('preferred-install')) { case 'source': $preferSource = true; break; case 'dist': $preferDist = true; break; case 'auto': default: // noop break; } if ($input->getOption('prefer-source') || $input->getOption('prefer-dist') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs'))) { $preferSource = $input->getOption('prefer-source') || ($keepVcsRequiresPreferSource && $input->hasOption('keep-vcs') && $input->getOption('keep-vcs')); $preferDist = (bool) $input->getOption('prefer-dist'); } return array($preferSource, $preferDist); } protected function formatRequirements(array $requirements) { $requires = array(); $requirements = $this->normalizeRequirements($requirements); foreach ($requirements as $requirement) { if (!isset($requirement['version'])) { throw new \UnexpectedValueException('Option '.$requirement['name'] .' is missing a version constraint, use e.g. '.$requirement['name'].':^1.0'); } $requires[$requirement['name']] = $requirement['version']; } return $requires; } protected function normalizeRequirements(array $requirements) { $parser = new VersionParser(); return $parser->parseNameVersionPairs($requirements); } protected function renderTable(array $table, OutputInterface $output) { $renderer = new Table($output); $renderer->setStyle('compact'); $rendererStyle = $renderer->getStyle(); if (method_exists($rendererStyle, 'setVerticalBorderChars')) { $rendererStyle->setVerticalBorderChars(''); } else { $rendererStyle->setVerticalBorderChar(''); } $rendererStyle->setCellRowContentFormat('%s '); $renderer->setRows($table)->render(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Config\JsonConfigSource; use Composer\DependencyResolver\Request; use Composer\Installer; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Json\JsonFile; use Composer\Factory; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; use Composer\Package\BasePackage; /** * @author Pierre du Plessis * @author Jordi Boggiano */ class RemoveCommand extends BaseCommand { protected function configure() { $this ->setName('remove') ->setDescription('Removes a package from the require or require-dev.') ->setDefinition(array( new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::REQUIRED, 'Packages that should be removed.'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Removes a package from the require-dev section.'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated with explicit dependencies. (Deprecrated, is now default behavior)'), new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), new InputOption('no-update-with-dependencies', null, InputOption::VALUE_NONE, 'Does not allow inherited dependencies to be updated with explicit dependencies.'), new InputOption('unused', null, InputOption::VALUE_NONE, 'Remove all packages which are locked but not required by any other package.'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), )) ->setHelp( <<remove command removes a package from the current list of installed packages php composer.phar remove Read more at https://getcomposer.org/doc/03-cli.md#remove EOT ) ; } protected function interact(InputInterface $input, OutputInterface $output) { if ($input->getOption('unused')) { $composer = $this->getComposer(); $locker = $composer->getLocker(); if (!$locker->isLocked()) { throw new \UnexpectedValueException('A valid composer.lock file is required to run this command with --unused'); } $lockedPackages = $locker->getLockedRepository()->getPackages(); $required = array(); foreach (array_merge($composer->getPackage()->getRequires(), $composer->getPackage()->getDevRequires()) as $link) { $required[$link->getTarget()] = true; } do { $found = false; foreach ($lockedPackages as $index => $package) { foreach ($package->getNames() as $name) { if (isset($required[$name])) { foreach ($package->getRequires() as $link) { $required[$link->getTarget()] = true; } $found = true; unset($lockedPackages[$index]); break; } } } } while ($found); $unused = array(); foreach ($lockedPackages as $package) { $unused[] = $package->getName(); } $input->setArgument('packages', array_merge($input->getArgument('packages'), $unused)); if (!$input->getArgument('packages')) { $this->getIO()->writeError('No unused packages to remove'); $this->setCode(function () { return 0; }); } } } protected function execute(InputInterface $input, OutputInterface $output) { $packages = $input->getArgument('packages'); $packages = array_map('strtolower', $packages); $file = Factory::getComposerFile(); $jsonFile = new JsonFile($file); $composer = $jsonFile->read(); $composerBackup = file_get_contents($jsonFile->getPath()); $json = new JsonConfigSource($jsonFile); $type = $input->getOption('dev') ? 'require-dev' : 'require'; $altType = !$input->getOption('dev') ? 'require-dev' : 'require'; $io = $this->getIO(); if ($input->getOption('update-with-dependencies')) { $io->writeError('You are using the deprecated option "update-with-dependencies". This is now default behaviour. The --no-update-with-dependencies option can be used to remove a package without its dependencies.'); } // make sure name checks are done case insensitively foreach (array('require', 'require-dev') as $linkType) { if (isset($composer[$linkType])) { foreach ($composer[$linkType] as $name => $version) { $composer[$linkType][strtolower($name)] = $name; } } } $dryRun = $input->getOption('dry-run'); $toRemove = array(); foreach ($packages as $package) { if (isset($composer[$type][$package])) { if ($dryRun) { $toRemove[$type][] = $composer[$type][$package]; } else { $json->removeLink($type, $composer[$type][$package]); } } elseif (isset($composer[$altType][$package])) { $io->writeError('' . $composer[$altType][$package] . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); if ($io->isInteractive()) { if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { if ($dryRun) { $toRemove[$altType][] = $composer[$altType][$package]; } else { $json->removeLink($altType, $composer[$altType][$package]); } } } } elseif (isset($composer[$type]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$type]))) { foreach ($matches as $matchedPackage) { if ($dryRun) { $toRemove[$type][] = $matchedPackage; } else { $json->removeLink($type, $matchedPackage); } } } elseif (isset($composer[$altType]) && $matches = preg_grep(BasePackage::packageNameToRegexp($package), array_keys($composer[$altType]))) { foreach ($matches as $matchedPackage) { $io->writeError('' . $matchedPackage . ' could not be found in ' . $type . ' but it is present in ' . $altType . ''); if ($io->isInteractive()) { if ($io->askConfirmation('Do you want to remove it from ' . $altType . ' [yes]? ')) { if ($dryRun) { $toRemove[$altType][] = $matchedPackage; } else { $json->removeLink($altType, $matchedPackage); } } } } } else { $io->writeError(''.$package.' is not required in your composer.json and has not been removed'); } } $io->writeError(''.$file.' has been updated'); if ($input->getOption('no-update')) { return 0; } // Update packages $this->resetComposer(); $composer = $this->getComposer(true, $input->getOption('no-plugins')); if ($dryRun) { $rootPackage = $composer->getPackage(); $links = array( 'require' => $rootPackage->getRequires(), 'require-dev' => $rootPackage->getDevRequires(), ); foreach ($toRemove as $type => $names) { foreach ($names as $name) { unset($links[$type][$name]); } } $rootPackage->setRequires($links['require']); $rootPackage->setDevRequires($links['require-dev']); } $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'remove', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); $install = Installer::create($io, $composer); $updateDevMode = !$input->getOption('update-no-dev'); $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); $apcuPrefix = $input->getOption('apcu-autoloader-prefix'); $apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; $flags = ''; if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; $flags .= ' --with-all-dependencies'; } elseif ($input->getOption('no-update-with-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; $flags .= ' --with-dependencies'; } $io->writeError('Running composer update '.implode(' ', $packages).$flags.''); $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); $install ->setVerbose($input->getOption('verbose')) ->setDevMode($updateDevMode) ->setOptimizeAutoloader($optimize) ->setClassMapAuthoritative($authoritative) ->setApcuAutoloader($apcu, $apcuPrefix) ->setUpdate(true) ->setInstall(!$input->getOption('no-install')) ->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) ->setIgnorePlatformRequirements($ignorePlatformReqs) ->setRunScripts(!$input->getOption('no-scripts')) ->setDryRun($dryRun) ; // if no lock is present, we do not do a partial update as // this is not supported by the Installer if ($composer->getLocker()->isLocked()) { $install->setUpdateAllowList($packages); } $status = $install->run(); if ($status !== 0) { $io->writeError("\n".'Removal failed, reverting '.$file.' to its original content.'); file_put_contents($jsonFile->getPath(), $composerBackup); } if (!$dryRun) { foreach ($packages as $package) { if ($composer->getRepositoryManager()->getLocalRepository()->findPackages($package)) { $io->writeError('Removal failed, '.$package.' is still present, it may be required by another package. See `composer why '.$package.'`.'); return 2; } } } return $status; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Cache; use Composer\Factory; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author David Neilsen */ class ClearCacheCommand extends BaseCommand { protected function configure() { $this ->setName('clear-cache') ->setAliases(array('clearcache', 'cc')) ->setDescription('Clears composer\'s internal package cache.') ->setHelp( <<clear-cache deletes all cached packages from composer's cache directory. Read more at https://getcomposer.org/doc/03-cli.md#clear-cache-clearcache-cc EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $config = Factory::createConfig(); $io = $this->getIO(); $cachePaths = array( 'cache-vcs-dir' => $config->get('cache-vcs-dir'), 'cache-repo-dir' => $config->get('cache-repo-dir'), 'cache-files-dir' => $config->get('cache-files-dir'), 'cache-dir' => $config->get('cache-dir'), ); foreach ($cachePaths as $key => $cachePath) { $cachePath = realpath($cachePath); if (!$cachePath) { $io->writeError("Cache directory does not exist ($key): $cachePath"); continue; } $cache = new Cache($io, $cachePath); $cache->setReadOnly($config->get('cache-read-only')); if (!$cache->isEnabled()) { $io->writeError("Cache is not enabled ($key): $cachePath"); continue; } $io->writeError("Clearing cache ($key): $cachePath"); $cache->clear(); } $io->writeError('All caches cleared.'); return 0; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Package\Link; use Composer\Package\PackageInterface; use Composer\Package\RootPackage; use Composer\Repository\InstalledArrayRepository; use Composer\Repository\CompositeRepository; use Composer\Repository\RootPackageRepository; use Composer\Repository\InstalledRepository; use Composer\Repository\PlatformRepository; use Composer\Repository\RepositoryFactory; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Composer\Package\Version\VersionParser; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Base implementation for commands mapping dependency relationships. * * @author Niels Keurentjes */ class BaseDependencyCommand extends BaseCommand { const ARGUMENT_PACKAGE = 'package'; const ARGUMENT_CONSTRAINT = 'constraint'; const OPTION_RECURSIVE = 'recursive'; const OPTION_TREE = 'tree'; protected $colors; /** * Set common options and arguments. */ protected function configure() { $this->setDefinition(array( new InputArgument(self::ARGUMENT_PACKAGE, InputArgument::REQUIRED, 'Package to inspect'), new InputArgument(self::ARGUMENT_CONSTRAINT, InputArgument::OPTIONAL, 'Optional version constraint', '*'), new InputOption(self::OPTION_RECURSIVE, 'r', InputOption::VALUE_NONE, 'Recursively resolves up to the root package'), new InputOption(self::OPTION_TREE, 't', InputOption::VALUE_NONE, 'Prints the results as a nested tree'), )); } /** * Execute the command. * * @param InputInterface $input * @param OutputInterface $output * @param bool $inverted Whether to invert matching process (why-not vs why behaviour) * @return int Exit code of the operation. */ protected function doExecute(InputInterface $input, OutputInterface $output, $inverted = false) { // Emit command event on startup $composer = $this->getComposer(); $commandEvent = new CommandEvent(PluginEvents::COMMAND, $this->getName(), $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $platformOverrides = $composer->getConfig()->get('platform') ?: array(); $installedRepo = new InstalledRepository(array( new RootPackageRepository($composer->getPackage()), $composer->getRepositoryManager()->getLocalRepository(), new PlatformRepository(array(), $platformOverrides), )); // Parse package name and constraint list($needle, $textConstraint) = array_pad( explode(':', $input->getArgument(self::ARGUMENT_PACKAGE)), 2, $input->getArgument(self::ARGUMENT_CONSTRAINT) ); // Find packages that are or provide the requested package first $packages = $installedRepo->findPackagesWithReplacersAndProviders($needle); if (empty($packages)) { throw new \InvalidArgumentException(sprintf('Could not find package "%s" in your project', $needle)); } // If the version we ask for is not installed then we need to locate it in remote repos and add it. // This is needed for why-not to resolve conflicts from an uninstalled version against installed packages. if (!$installedRepo->findPackage($needle, $textConstraint)) { $defaultRepos = new CompositeRepository(RepositoryFactory::defaultRepos($this->getIO())); if ($match = $defaultRepos->findPackage($needle, $textConstraint)) { $installedRepo->addRepository(new InstalledArrayRepository(array(clone $match))); } } // Include replaced packages for inverted lookups as they are then the actual starting point to consider $needles = array($needle); if ($inverted) { foreach ($packages as $package) { $needles = array_merge($needles, array_map(function (Link $link) { return $link->getTarget(); }, $package->getReplaces())); } } // Parse constraint if one was supplied if ('*' !== $textConstraint) { $versionParser = new VersionParser(); $constraint = $versionParser->parseConstraints($textConstraint); } else { $constraint = null; } // Parse rendering options $renderTree = $input->getOption(self::OPTION_TREE); $recursive = $renderTree || $input->getOption(self::OPTION_RECURSIVE); // Resolve dependencies $results = $installedRepo->getDependents($needles, $constraint, $inverted, $recursive); if (empty($results)) { $extra = (null !== $constraint) ? sprintf(' in versions %smatching %s', $inverted ? 'not ' : '', $textConstraint) : ''; $this->getIO()->writeError(sprintf( 'There is no installed package depending on "%s"%s', $needle, $extra )); } elseif ($renderTree) { $this->initStyles($output); $root = $packages[0]; $this->getIO()->write(sprintf('%s %s %s', $root->getPrettyName(), $root->getPrettyVersion(), $root->getDescription())); $this->printTree($results); } else { $this->printTable($output, $results); } return 0; } /** * Assembles and prints a bottom-up table of the dependencies. * * @param OutputInterface $output * @param array $results */ protected function printTable(OutputInterface $output, $results) { $table = array(); $doubles = array(); do { $queue = array(); $rows = array(); foreach ($results as $result) { /** * @var PackageInterface $package * @var Link $link */ list($package, $link, $children) = $result; $unique = (string) $link; if (isset($doubles[$unique])) { continue; } $doubles[$unique] = true; $version = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '-' : $package->getPrettyVersion(); $rows[] = array($package->getPrettyName(), $version, $link->getDescription(), sprintf('%s (%s)', $link->getTarget(), $link->getPrettyConstraint())); if ($children) { $queue = array_merge($queue, $children); } } $results = $queue; $table = array_merge($rows, $table); } while (!empty($results)); $this->renderTable($table, $output); } /** * Init styles for tree * * @param OutputInterface $output */ protected function initStyles(OutputInterface $output) { $this->colors = array( 'green', 'yellow', 'cyan', 'magenta', 'blue', ); foreach ($this->colors as $color) { $style = new OutputFormatterStyle($color); $output->getFormatter()->setStyle($color, $style); } } /** * Recursively prints a tree of the selected results. * * @param array $results Results to be printed at this level. * @param string $prefix Prefix of the current tree level. * @param int $level Current level of recursion. */ protected function printTree($results, $prefix = '', $level = 1) { $count = count($results); $idx = 0; foreach ($results as $result) { /** * @var PackageInterface $package * @var Link $link * @var array|bool $children */ list($package, $link, $children) = $result; $color = $this->colors[$level % count($this->colors)]; $prevColor = $this->colors[($level - 1) % count($this->colors)]; $isLast = (++$idx == $count); $versionText = $package->getPrettyVersion() === RootPackage::DEFAULT_PRETTY_VERSION ? '' : $package->getPrettyVersion(); $packageText = rtrim(sprintf('<%s>%s %s', $color, $package->getPrettyName(), $versionText)); $linkText = sprintf('%s <%s>%s %s', $link->getDescription(), $prevColor, $link->getTarget(), $link->getPrettyConstraint()); $circularWarn = $children === false ? '(circular dependency aborted here)' : ''; $this->writeTreeLine(rtrim(sprintf("%s%s%s (%s) %s", $prefix, $isLast ? '└──' : '├──', $packageText, $linkText, $circularWarn))); if ($children) { $this->printTree($children, $prefix . ($isLast ? ' ' : '│ '), $level + 1); } } } private function writeTreeLine($line) { $io = $this->getIO(); if (!$io->isDecorated()) { $line = str_replace(array('└', '├', '──', '│'), array('`-', '|-', '-', '|'), $line); } $io->write($line); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Composer; use Composer\DependencyResolver\Request; use Composer\Installer; use Composer\IO\IOInterface; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Package\Version\VersionParser; use Composer\Util\HttpDownloader; use Composer\Semver\Constraint\MultiConstraint; use Composer\Package\Link; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\Question; /** * @author Jordi Boggiano * @author Nils Adermann */ class UpdateCommand extends BaseCommand { protected function configure() { $this ->setName('update') ->setAliases(array('u', 'upgrade')) ->setDescription('Upgrades your dependencies to the latest version according to composer.json, and updates the composer.lock file.') ->setDefinition(array( new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Packages that should be updated, if not provided all packages are.'), new InputOption('with', null, InputOption::VALUE_IS_ARRAY | InputOption::VALUE_REQUIRED, 'Temporary version constraint to add, e.g. foo/bar:1.0.0 or foo/bar=1.0.0'), new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), new InputOption('lock', null, InputOption::VALUE_NONE, 'Overwrites the lock file hash to suppress warning about the lock file being out of date without updating package versions. Package metadata like mirrors and URLs are updated if they changed.'), new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('with-dependencies', 'w', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, except those which are root requirements.'), new InputOption('with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Update also dependencies of packages in the argument list, including those which are root requirements.'), new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump.'), new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), new InputOption('interactive', 'i', InputOption::VALUE_NONE, 'Interactive interface with autocompletion to select the packages to update.'), new InputOption('root-reqs', null, InputOption::VALUE_NONE, 'Restricts the update to your first degree dependencies.'), )) ->setHelp( <<update command reads the composer.json file from the current directory, processes it, and updates, removes or installs all the dependencies. php composer.phar update To limit the update operation to a few packages, you can list the package(s) you want to update as such: php composer.phar update vendor/package1 foo/mypackage [...] You may also use an asterisk (*) pattern to limit the update operation to package(s) from a specific vendor: php composer.phar update vendor/package1 foo/* [...] To run an update with more restrictive constraints you can use: php composer.phar update --with vendor/package:1.0.* To run a partial update with more restrictive constraints you can use the shorthand: php composer.phar update vendor/package:1.0.* To select packages names interactively with auto-completion use -i. Read more at https://getcomposer.org/doc/03-cli.md#update-u EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $io = $this->getIO(); if ($input->getOption('dev')) { $io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); } if ($input->getOption('no-suggest')) { $io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); } $composer = $this->getComposer(true, $input->getOption('no-plugins')); if (!HttpDownloader::isCurlEnabled()) { $io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); } $packages = $input->getArgument('packages'); $reqs = $this->formatRequirements($input->getOption('with')); // extract --with shorthands from the allowlist if ($packages) { $allowlistPackagesWithRequirements = array_filter($packages, function ($pkg) { return preg_match('{\S+[ =:]\S+}', $pkg) > 0; }); foreach ($this->formatRequirements($allowlistPackagesWithRequirements) as $package => $constraint) { $reqs[$package] = $constraint; } // replace the foo/bar:req by foo/bar in the allowlist foreach ($allowlistPackagesWithRequirements as $package) { $packageName = preg_replace('{^([^ =:]+)[ =:].*$}', '$1', $package); $index = array_search($package, $packages); $packages[$index] = $packageName; } } $rootRequires = $composer->getPackage()->getRequires(); $rootDevRequires = $composer->getPackage()->getDevRequires(); foreach ($reqs as $package => $constraint) { if (isset($rootRequires[$package])) { $rootRequires[$package] = $this->appendConstraintToLink($rootRequires[$package], $constraint); } elseif (isset($rootDevRequires[$package])) { $rootDevRequires[$package] = $this->appendConstraintToLink($rootDevRequires[$package], $constraint); } else { throw new \UnexpectedValueException('Only root package requirements can receive temporary constraints and '.$package.' is not one'); } } $composer->getPackage()->setRequires($rootRequires); $composer->getPackage()->setDevRequires($rootDevRequires); if ($input->getOption('interactive')) { $packages = $this->getPackagesInteractively($io, $input, $output, $composer, $packages); } if ($input->getOption('root-reqs')) { $requires = array_keys($rootRequires); if (!$input->getOption('no-dev')) { $requires = array_merge($requires, array_keys($rootDevRequires)); } if (!empty($packages)) { $packages = array_intersect($packages, $requires); } else { $packages = $requires; } } // the arguments lock/nothing/mirrors are not package names but trigger a mirror update instead // they are further mutually exclusive with listing actual package names $filteredPackages = array_filter($packages, function ($package) { return !in_array($package, array('lock', 'nothing', 'mirrors'), true); }); $updateMirrors = $input->getOption('lock') || count($filteredPackages) != count($packages); $packages = $filteredPackages; if ($updateMirrors && !empty($packages)) { $io->writeError('You cannot simultaneously update only a selection of packages and regenerate the lock file metadata.'); return -1; } $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'update', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); $install = Installer::create($io, $composer); $config = $composer->getConfig(); list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); $apcuPrefix = $input->getOption('apcu-autoloader-prefix'); $apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); $updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; if ($input->getOption('with-all-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; } elseif ($input->getOption('with-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; } $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); $install ->setDryRun($input->getOption('dry-run')) ->setVerbose($input->getOption('verbose')) ->setPreferSource($preferSource) ->setPreferDist($preferDist) ->setDevMode(!$input->getOption('no-dev')) ->setDumpAutoloader(!$input->getOption('no-autoloader')) ->setRunScripts(!$input->getOption('no-scripts')) ->setOptimizeAutoloader($optimize) ->setClassMapAuthoritative($authoritative) ->setApcuAutoloader($apcu, $apcuPrefix) ->setUpdate(true) ->setInstall(!$input->getOption('no-install')) ->setUpdateMirrors($updateMirrors) ->setUpdateAllowList($packages) ->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) ->setIgnorePlatformRequirements($ignorePlatformReqs) ->setPreferStable($input->getOption('prefer-stable')) ->setPreferLowest($input->getOption('prefer-lowest')) ; if ($input->getOption('no-plugins')) { $install->disablePlugins(); } return $install->run(); } private function getPackagesInteractively(IOInterface $io, InputInterface $input, OutputInterface $output, Composer $composer, array $packages) { if (!$input->isInteractive()) { throw new \InvalidArgumentException('--interactive cannot be used in non-interactive terminals.'); } $requires = array_merge( $composer->getPackage()->getRequires(), $composer->getPackage()->getDevRequires() ); $autocompleterValues = array(); foreach ($requires as $require) { $target = $require->getTarget(); $autocompleterValues[strtolower($target)] = $target; } $installedPackages = $composer->getRepositoryManager()->getLocalRepository()->getPackages(); foreach ($installedPackages as $package) { $autocompleterValues[$package->getName()] = $package->getPrettyName(); } $helper = $this->getHelper('question'); $question = new Question('Enter package name: ', null); $io->writeError('Press enter without value to end submission'); do { $autocompleterValues = array_diff($autocompleterValues, $packages); $question->setAutocompleterValues($autocompleterValues); $addedPackage = $helper->ask($input, $output, $question); if (!is_string($addedPackage) || empty($addedPackage)) { break; } $addedPackage = strtolower($addedPackage); if (!in_array($addedPackage, $packages)) { $packages[] = $addedPackage; } } while (true); $packages = array_filter($packages); if (!$packages) { throw new \InvalidArgumentException('You must enter minimum one package.'); } $table = new Table($output); $table->setHeaders(array('Selected packages')); foreach ($packages as $package) { $table->addRow(array($package)); } $table->render(); if ($io->askConfirmation(sprintf( 'Would you like to continue and update the above package%s [yes]? ', 1 === count($packages) ? '' : 's' ))) { return $packages; } throw new \RuntimeException('Installation aborted.'); } private function appendConstraintToLink(Link $link, $constraint) { $parser = new VersionParser; $oldPrettyString = $link->getConstraint()->getPrettyString(); $newConstraint = MultiConstraint::create(array($link->getConstraint(), $parser->parseConstraints($constraint))); $newConstraint->setPrettyString($oldPrettyString.', '.$constraint); return new Link( $link->getSource(), $link->getTarget(), $newConstraint, $link->getDescription(), $link->getPrettyConstraint() . ', ' . $constraint ); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Input\InputArgument; /** * @author Davey Shafik */ class ExecCommand extends BaseCommand { protected function configure() { $this ->setName('exec') ->setDescription('Executes a vendored binary/script.') ->setDefinition(array( new InputOption('list', 'l', InputOption::VALUE_NONE), new InputArgument('binary', InputArgument::OPTIONAL, 'The binary to run, e.g. phpunit'), new InputArgument( 'args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Arguments to pass to the binary. Use -- to separate from composer arguments' ), )) ->setHelp( <<getComposer(); $binDir = $composer->getConfig()->get('bin-dir'); if ($input->getOption('list') || !$input->getArgument('binary')) { $bins = glob($binDir . '/*'); $bins = array_merge($bins, array_map(function ($e) { return "$e (local)"; }, $composer->getPackage()->getBinaries())); if (!$bins) { throw new \RuntimeException("No binaries found in composer.json or in bin-dir ($binDir)"); } $this->getIO()->write( <<Available binaries: EOT ); foreach ($bins as $bin) { // skip .bat copies if (isset($previousBin) && $bin === $previousBin.'.bat') { continue; } $previousBin = $bin; $bin = basename($bin); $this->getIO()->write( <<- $bin EOT ); } return 0; } $binary = $input->getArgument('binary'); $dispatcher = $composer->getEventDispatcher(); $dispatcher->addListener('__exec_command', $binary); // If the CWD was modified, we restore it to what it was initially, as it was // most likely modified by the global command, and we want exec to run in the local working directory // not the global one if (getcwd() !== $this->getApplication()->getInitialWorkingDirectory()) { try { chdir($this->getApplication()->getInitialWorkingDirectory()); } catch (\Exception $e) { throw new \RuntimeException('Could not switch back to working directory "'.$this->getApplication()->getInitialWorkingDirectory().'"', 0, $e); } } return $dispatcher->dispatchScript('__exec_command', true, $input->getArgument('args')); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Factory; use Composer\Package\Loader\ValidatingArrayLoader; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Util\ConfigValidator; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * ValidateCommand * * @author Robert Schönthal * @author Jordi Boggiano */ class ValidateCommand extends BaseCommand { /** * configure */ protected function configure() { $this ->setName('validate') ->setDescription('Validates a composer.json and composer.lock.') ->setDefinition(array( new InputOption('no-check-all', null, InputOption::VALUE_NONE, 'Do not validate requires for overly strict/loose constraints'), new InputOption('no-check-lock', null, InputOption::VALUE_NONE, 'Do not check if lock file is up to date'), new InputOption('no-check-publish', null, InputOption::VALUE_NONE, 'Do not check for publish errors'), new InputOption('no-check-version', null, InputOption::VALUE_NONE, 'Do not report a warning if the version field is present'), new InputOption('with-dependencies', 'A', InputOption::VALUE_NONE, 'Also validate the composer.json of all installed dependencies'), new InputOption('strict', null, InputOption::VALUE_NONE, 'Return a non-zero exit code for warnings as well as errors'), new InputArgument('file', InputArgument::OPTIONAL, 'path to composer.json file'), )) ->setHelp( <<getArgument('file') ?: Factory::getComposerFile(); $io = $this->getIO(); if (!file_exists($file)) { $io->writeError('' . $file . ' not found.'); return 3; } if (!is_readable($file)) { $io->writeError('' . $file . ' is not readable.'); return 3; } $validator = new ConfigValidator($io); $checkAll = $input->getOption('no-check-all') ? 0 : ValidatingArrayLoader::CHECK_ALL; $checkPublish = !$input->getOption('no-check-publish'); $checkLock = !$input->getOption('no-check-lock'); $checkVersion = $input->getOption('no-check-version') ? 0 : ConfigValidator::CHECK_VERSION; $isStrict = $input->getOption('strict'); list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll, $checkVersion); $lockErrors = array(); $composer = Factory::create($io, $file, $input->hasParameterOption('--no-plugins')); $locker = $composer->getLocker(); if ($locker->isLocked() && !$locker->isFresh()) { $lockErrors[] = 'The lock file is not up to date with the latest changes in composer.json, it is recommended that you run `composer update` or `composer update `.'; } $this->outputResult($io, $file, $errors, $warnings, $checkPublish, $publishErrors, $checkLock, $lockErrors, true); // $errors include publish and lock errors when exists $exitCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); if ($input->getOption('with-dependencies')) { $localRepo = $composer->getRepositoryManager()->getLocalRepository(); foreach ($localRepo->getPackages() as $package) { $path = $composer->getInstallationManager()->getInstallPath($package); $file = $path . '/composer.json'; if (is_dir($path) && file_exists($file)) { list($errors, $publishErrors, $warnings) = $validator->validate($file, $checkAll, $checkVersion); $this->outputResult($io, $package->getPrettyName(), $errors, $warnings, $checkPublish, $publishErrors); // $errors include publish errors when exists $depCode = $errors ? 2 : ($isStrict && $warnings ? 1 : 0); $exitCode = max($depCode, $exitCode); } } } $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'validate', $input, $output); $eventCode = $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); return max($eventCode, $exitCode); } private function outputResult($io, $name, &$errors, &$warnings, $checkPublish = false, $publishErrors = array(), $checkLock = false, $lockErrors = array(), $printSchemaUrl = false) { $doPrintSchemaUrl = false; if ($errors) { $io->writeError('' . $name . ' is invalid, the following errors/warnings were found:'); } elseif ($publishErrors) { $io->writeError('' . $name . ' is valid for simple usage with composer but has'); $io->writeError('strict errors that make it unable to be published as a package:'); $doPrintSchemaUrl = $printSchemaUrl; } elseif ($warnings) { $io->writeError('' . $name . ' is valid, but with a few warnings'); $doPrintSchemaUrl = $printSchemaUrl; } else { $io->write('' . $name . ' is valid'); // if ($lockErrors) then they will be displayed below } if ($doPrintSchemaUrl) { $io->writeError('See https://getcomposer.org/doc/04-schema.md for details on the schema'); } // Avoid setting the exit code to 1 in case --strict and --no-check-publish/--no-check-lock are combined $extraWarnings = array(); // If checking publish errors, display them as errors, otherwise just show them as warnings if ($checkPublish) { $errors = array_merge($errors, $publishErrors); } else { $extraWarnings = array_merge($extraWarnings, $publishErrors); } // If checking lock errors, display them as errors, otherwise just show them as warnings if ($checkLock) { $errors = array_merge($errors, $lockErrors); } else { $extraWarnings = array_merge($extraWarnings, $lockErrors); } $messages = array( 'error' => $errors, 'warning' => array_merge($warnings, $extraWarnings), ); foreach ($messages as $style => $msgs) { foreach ($msgs as $msg) { $io->writeError('<' . $style . '>' . $msg . ''); } } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Installer; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Util\HttpDownloader; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano * @author Ryan Weaver * @author Konstantin Kudryashov * @author Nils Adermann */ class InstallCommand extends BaseCommand { protected function configure() { $this ->setName('install') ->setAliases(array('i')) ->setDescription('Installs the project dependencies from the composer.lock file if present, or falls back on the composer.json.') ->setDefinition(array( new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('dev', null, InputOption::VALUE_NONE, 'DEPRECATED: Enables installation of require-dev packages (enabled by default, only present for BC).'), new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), new InputOption('no-dev', null, InputOption::VALUE_NONE, 'Disables installation of require-dev packages.'), new InputOption('no-autoloader', null, InputOption::VALUE_NONE, 'Skips autoloader generation'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('no-install', null, InputOption::VALUE_NONE, 'Do not use, only defined here to catch misuse of the install command.'), new InputOption('verbose', 'v|vv|vvv', InputOption::VALUE_NONE, 'Shows more details including new commits pulled in when updating packages.'), new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Should not be provided, use composer require instead to add a given package to composer.json.'), )) ->setHelp( <<install command reads the composer.lock file from the current directory, processes it, and downloads and installs all the libraries and dependencies outlined in that file. If the file does not exist it will look for composer.json and do the same. php composer.phar install Read more at https://getcomposer.org/doc/03-cli.md#install-i EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $io = $this->getIO(); if ($input->getOption('dev')) { $io->writeError('You are using the deprecated option "--dev". It has no effect and will break in Composer 3.'); } if ($input->getOption('no-suggest')) { $io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); } if ($args = $input->getArgument('packages')) { $io->writeError('Invalid argument '.implode(' ', $args).'. Use "composer require '.implode(' ', $args).'" instead to add packages to your composer.json.'); return 1; } if ($input->getOption('no-install')) { $io->writeError('Invalid option "--no-install". Use "composer update --no-install" instead if you are trying to update the composer.lock file.'); return 1; } $composer = $this->getComposer(true, $input->getOption('no-plugins')); if ((!$composer->getLocker() || !$composer->getLocker()->isLocked()) && !HttpDownloader::isCurlEnabled()) { $io->writeError('Composer is operating significantly slower than normal because you do not have the PHP curl extension enabled.'); } $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'install', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $install = Installer::create($io, $composer); $config = $composer->getConfig(); list($preferSource, $preferDist) = $this->getPreferredInstallOptions($config, $input); $optimize = $input->getOption('optimize-autoloader') || $config->get('optimize-autoloader'); $authoritative = $input->getOption('classmap-authoritative') || $config->get('classmap-authoritative'); $apcuPrefix = $input->getOption('apcu-autoloader-prefix'); $apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $config->get('apcu-autoloader'); $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); $composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); $install ->setDryRun($input->getOption('dry-run')) ->setVerbose($input->getOption('verbose')) ->setPreferSource($preferSource) ->setPreferDist($preferDist) ->setDevMode(!$input->getOption('no-dev')) ->setDumpAutoloader(!$input->getOption('no-autoloader')) ->setRunScripts(!$input->getOption('no-scripts')) ->setOptimizeAutoloader($optimize) ->setClassMapAuthoritative($authoritative) ->setApcuAutoloader($apcu, $apcuPrefix) ->setIgnorePlatformRequirements($ignorePlatformReqs) ; if ($input->getOption('no-plugins')) { $install->disablePlugins(); } return $install->run(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * @author Niels Keurentjes */ class ProhibitsCommand extends BaseDependencyCommand { /** * Configure command metadata. */ protected function configure() { parent::configure(); $this ->setName('prohibits') ->setAliases(array('why-not')) ->setDescription('Shows which packages prevent the given package from being installed.') ->setHelp( <<php composer.phar prohibits composer/composer Read more at https://getcomposer.org/doc/03-cli.md#prohibits-why-not- EOT ) ; } /** * Execute the function. * * @param InputInterface $input * @param OutputInterface $output * @return int */ protected function execute(InputInterface $input, OutputInterface $output) { return parent::doExecute($input, $output, true); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Factory; use Composer\Util\Filesystem; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\StringInput; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jordi Boggiano */ class GlobalCommand extends BaseCommand { protected function configure() { $this ->setName('global') ->setDescription('Allows running commands in the global composer dir ($COMPOSER_HOME).') ->setDefinition(array( new InputArgument('command-name', InputArgument::REQUIRED, ''), new InputArgument('args', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, ''), )) ->setHelp( <<\AppData\Roaming\Composer on Windows and /home//.composer on unix systems. If your system uses freedesktop.org standards, then it will first check XDG_CONFIG_HOME or default to /home//.config/composer Note: This path may vary depending on customizations to bin-dir in composer.json or the environmental variable COMPOSER_BIN_DIR. Read more at https://getcomposer.org/doc/03-cli.md#global EOT ) ; } public function run(InputInterface $input, OutputInterface $output) { // extract real command name $tokens = preg_split('{\s+}', $input->__toString()); $args = array(); foreach ($tokens as $token) { if ($token && $token[0] !== '-') { $args[] = $token; if (count($args) >= 2) { break; } } } // show help for this command if no command was found if (count($args) < 2) { return parent::run($input, $output); } // The COMPOSER env var should not apply to the global execution scope if (getenv('COMPOSER')) { putenv('COMPOSER'); unset($_SERVER['COMPOSER']); } // change to global dir $config = Factory::createConfig(); $home = $config->get('home'); if (!is_dir($home)) { $fs = new Filesystem(); $fs->ensureDirectoryExists($home); if (!is_dir($home)) { throw new \RuntimeException('Could not create home directory'); } } try { chdir($home); } catch (\Exception $e) { throw new \RuntimeException('Could not switch to home directory "'.$home.'"', 0, $e); } $this->getIO()->writeError('Changed current directory to '.$home.''); // create new input without "global" command prefix $input = new StringInput(preg_replace('{\bg(?:l(?:o(?:b(?:a(?:l)?)?)?)?)?\b}', '', $input->__toString(), 1)); $this->getApplication()->resetComposer(); return $this->getApplication()->run($input, $output); } /** * {@inheritDoc} */ public function isProxyCommand() { return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\DependencyResolver\Request; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; use Composer\Factory; use Composer\Installer; use Composer\Json\JsonFile; use Composer\Json\JsonManipulator; use Composer\Package\Version\VersionParser; use Composer\Package\Loader\ArrayLoader; use Composer\Package\BasePackage; use Composer\Plugin\CommandEvent; use Composer\Plugin\PluginEvents; use Composer\Repository\CompositeRepository; use Composer\Repository\PlatformRepository; use Composer\IO\IOInterface; use Composer\Util\Silencer; /** * @author Jérémy Romey * @author Jordi Boggiano */ class RequireCommand extends InitCommand { private $newlyCreated; private $firstRequire; private $json; private $file; private $composerBackup; /** @var string file name */ private $lock; /** @var ?string contents before modification if the lock file exists */ private $lockBackup; protected function configure() { $this ->setName('require') ->setDescription('Adds required packages to your composer.json and installs them.') ->setDefinition(array( new InputArgument('packages', InputArgument::IS_ARRAY | InputArgument::OPTIONAL, 'Optional package name can also include a version constraint, e.g. foo/bar or foo/bar:1.0.0 or foo/bar=1.0.0 or "foo/bar 1.0.0"'), new InputOption('dev', null, InputOption::VALUE_NONE, 'Add requirement to require-dev.'), new InputOption('dry-run', null, InputOption::VALUE_NONE, 'Outputs the operations but will not execute anything (implicitly enables --verbose).'), new InputOption('prefer-source', null, InputOption::VALUE_NONE, 'Forces installation from package sources when possible, including VCS information.'), new InputOption('prefer-dist', null, InputOption::VALUE_NONE, 'Forces installation from package dist even for dev versions.'), new InputOption('fixed', null, InputOption::VALUE_NONE, 'Write fixed version to the composer.json.'), new InputOption('no-suggest', null, InputOption::VALUE_NONE, 'DEPRECATED: This flag does not exist anymore.'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('no-update', null, InputOption::VALUE_NONE, 'Disables the automatic update of the dependencies (implies --no-install).'), new InputOption('no-install', null, InputOption::VALUE_NONE, 'Skip the install step after updating the composer.lock file.'), new InputOption('no-scripts', null, InputOption::VALUE_NONE, 'Skips the execution of all scripts defined in composer.json file.'), new InputOption('update-no-dev', null, InputOption::VALUE_NONE, 'Run the dependency update with the --no-dev option.'), new InputOption('update-with-dependencies', 'w', InputOption::VALUE_NONE, 'Allows inherited dependencies to be updated, except those that are root requirements.'), new InputOption('update-with-all-dependencies', 'W', InputOption::VALUE_NONE, 'Allows all inherited dependencies to be updated, including those that are root requirements.'), new InputOption('with-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-dependencies'), new InputOption('with-all-dependencies', null, InputOption::VALUE_NONE, 'Alias for --update-with-all-dependencies'), new InputOption('ignore-platform-req', null, InputOption::VALUE_REQUIRED | InputOption::VALUE_IS_ARRAY, 'Ignore a specific platform requirement (php & ext- packages).'), new InputOption('ignore-platform-reqs', null, InputOption::VALUE_NONE, 'Ignore all platform requirements (php & ext- packages).'), new InputOption('prefer-stable', null, InputOption::VALUE_NONE, 'Prefer stable versions of dependencies.'), new InputOption('prefer-lowest', null, InputOption::VALUE_NONE, 'Prefer lowest versions of dependencies.'), new InputOption('sort-packages', null, InputOption::VALUE_NONE, 'Sorts packages when adding/updating a new dependency'), new InputOption('optimize-autoloader', 'o', InputOption::VALUE_NONE, 'Optimize autoloader during autoloader dump'), new InputOption('classmap-authoritative', 'a', InputOption::VALUE_NONE, 'Autoload classes from the classmap only. Implicitly enables `--optimize-autoloader`.'), new InputOption('apcu-autoloader', null, InputOption::VALUE_NONE, 'Use APCu to cache found/not-found classes.'), new InputOption('apcu-autoloader-prefix', null, InputOption::VALUE_REQUIRED, 'Use a custom prefix for the APCu autoloader cache. Implicitly enables --apcu-autoloader'), )) ->setHelp( <<file = Factory::getComposerFile(); $io = $this->getIO(); if ($input->getOption('no-suggest')) { $io->writeError('You are using the deprecated option "--no-suggest". It has no effect and will break in Composer 3.'); } $this->newlyCreated = !file_exists($this->file); if ($this->newlyCreated && !file_put_contents($this->file, "{\n}\n")) { $io->writeError(''.$this->file.' could not be created.'); return 1; } // check for readability by reading the file as is_readable can not be trusted on network-mounts // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 if (!is_readable($this->file) && false === Silencer::call('file_get_contents', $this->file)) { $io->writeError(''.$this->file.' is not readable.'); return 1; } if (filesize($this->file) === 0) { file_put_contents($this->file, "{\n}\n"); } $this->json = new JsonFile($this->file); $this->lock = Factory::getLockFile($this->file); $this->composerBackup = file_get_contents($this->json->getPath()); $this->lockBackup = file_exists($this->lock) ? file_get_contents($this->lock) : null; // check for writability by writing to the file as is_writable can not be trusted on network-mounts // see https://github.com/composer/composer/issues/8231 and https://bugs.php.net/bug.php?id=68926 if (!is_writable($this->file) && !Silencer::call('file_put_contents', $this->file, $this->composerBackup)) { $io->writeError(''.$this->file.' is not writable.'); return 1; } if ($input->getOption('fixed') === true) { $config = $this->json->read(); $packageType = empty($config['type']) ? 'library' : $config['type']; /** * @see https://github.com/composer/composer/pull/8313#issuecomment-532637955 */ if ($packageType !== 'project') { $io->writeError('"--fixed" option is allowed for "project" package types only to prevent possible misuses.'); if (empty($config['type'])) { $io->writeError('If your package is not library, you should explicitly specify "type" parameter in composer.json.'); } return 1; } } $composer = $this->getComposer(true, $input->getOption('no-plugins')); $repos = $composer->getRepositoryManager()->getRepositories(); $platformOverrides = $composer->getConfig()->get('platform') ?: array(); // initialize $this->repos as it is used by the parent InitCommand $this->repos = new CompositeRepository(array_merge( array($platformRepo = new PlatformRepository(array(), $platformOverrides)), $repos )); if ($composer->getPackage()->getPreferStable()) { $preferredStability = 'stable'; } else { $preferredStability = $composer->getPackage()->getMinimumStability(); } try { $requirements = $this->determineRequirements( $input, $output, $input->getArgument('packages'), $platformRepo, $preferredStability, !$input->getOption('no-update'), $input->getOption('fixed') ); } catch (\Exception $e) { if ($this->newlyCreated) { throw new \RuntimeException('No composer.json present in the current directory ('.$this->file.'), this may be the cause of the following exception.', 0, $e); } throw $e; } $requireKey = $input->getOption('dev') ? 'require-dev' : 'require'; $removeKey = $input->getOption('dev') ? 'require' : 'require-dev'; $requirements = $this->formatRequirements($requirements); // validate requirements format $versionParser = new VersionParser(); foreach ($requirements as $package => $constraint) { if (strtolower($package) === $composer->getPackage()->getName()) { $io->writeError(sprintf('Root package \'%s\' cannot require itself in its composer.json', $package)); return 1; } $versionParser->parseConstraints($constraint); } $sortPackages = $input->getOption('sort-packages') || $composer->getConfig()->get('sort-packages'); $this->firstRequire = $this->newlyCreated; if (!$this->firstRequire) { $composerDefinition = $this->json->read(); if (empty($composerDefinition['require']) && empty($composerDefinition['require-dev'])) { $this->firstRequire = true; } } if (!$input->getOption('dry-run') && !$this->updateFileCleanly($this->json, $requirements, $requireKey, $removeKey, $sortPackages)) { $composerDefinition = $this->json->read(); foreach ($requirements as $package => $version) { $composerDefinition[$requireKey][$package] = $version; unset($composerDefinition[$removeKey][$package]); if (isset($composerDefinition[$removeKey]) && count($composerDefinition[$removeKey]) === 0) { unset($composerDefinition[$removeKey]); } } $this->json->write($composerDefinition); } $io->writeError(''.$this->file.' has been '.($this->newlyCreated ? 'created' : 'updated').''); if ($input->getOption('no-update')) { return 0; } try { return $this->doUpdate($input, $output, $io, $requirements, $requireKey, $removeKey); } catch (\Exception $e) { $this->revertComposerFile(false); throw $e; } } private function doUpdate(InputInterface $input, OutputInterface $output, IOInterface $io, array $requirements, $requireKey, $removeKey) { // Update packages $this->resetComposer(); $composer = $this->getComposer(true, $input->getOption('no-plugins')); if ($input->getOption('dry-run')) { $rootPackage = $composer->getPackage(); $links = array( 'require' => $rootPackage->getRequires(), 'require-dev' => $rootPackage->getDevRequires(), ); $loader = new ArrayLoader(); $newLinks = $loader->parseLinks($rootPackage->getName(), $rootPackage->getPrettyVersion(), BasePackage::$supportedLinkTypes[$requireKey]['description'], $requirements); $links[$requireKey] = array_merge($links[$requireKey], $newLinks); foreach ($requirements as $package => $constraint) { unset($links[$removeKey][$package]); } $rootPackage->setRequires($links['require']); $rootPackage->setDevRequires($links['require-dev']); } $updateDevMode = !$input->getOption('update-no-dev'); $optimize = $input->getOption('optimize-autoloader') || $composer->getConfig()->get('optimize-autoloader'); $authoritative = $input->getOption('classmap-authoritative') || $composer->getConfig()->get('classmap-authoritative'); $apcuPrefix = $input->getOption('apcu-autoloader-prefix'); $apcu = $apcuPrefix !== null || $input->getOption('apcu-autoloader') || $composer->getConfig()->get('apcu-autoloader'); $updateAllowTransitiveDependencies = Request::UPDATE_ONLY_LISTED; $flags = ''; if ($input->getOption('update-with-all-dependencies') || $input->getOption('with-all-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; $flags .= ' --with-all-dependencies'; } elseif ($input->getOption('update-with-dependencies') || $input->getOption('with-dependencies')) { $updateAllowTransitiveDependencies = Request::UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE; $flags .= ' --with-dependencies'; } $io->writeError('Running composer update '.implode(' ', array_keys($requirements)).$flags.''); $commandEvent = new CommandEvent(PluginEvents::COMMAND, 'require', $input, $output); $composer->getEventDispatcher()->dispatch($commandEvent->getName(), $commandEvent); $composer->getInstallationManager()->setOutputProgress(!$input->getOption('no-progress')); $install = Installer::create($io, $composer); $ignorePlatformReqs = $input->getOption('ignore-platform-reqs') ?: ($input->getOption('ignore-platform-req') ?: false); $install ->setDryRun($input->getOption('dry-run')) ->setVerbose($input->getOption('verbose')) ->setPreferSource($input->getOption('prefer-source')) ->setPreferDist($input->getOption('prefer-dist')) ->setDevMode($updateDevMode) ->setRunScripts(!$input->getOption('no-scripts')) ->setOptimizeAutoloader($optimize) ->setClassMapAuthoritative($authoritative) ->setApcuAutoloader($apcu, $apcuPrefix) ->setUpdate(true) ->setInstall(!$input->getOption('no-install')) ->setUpdateAllowTransitiveDependencies($updateAllowTransitiveDependencies) ->setIgnorePlatformRequirements($ignorePlatformReqs) ->setPreferStable($input->getOption('prefer-stable')) ->setPreferLowest($input->getOption('prefer-lowest')) ; // if no lock is present, or the file is brand new, we do not do a // partial update as this is not supported by the Installer if (!$this->firstRequire && $composer->getLocker()->isLocked()) { $install->setUpdateAllowList(array_keys($requirements)); } $status = $install->run(); if ($status !== 0) { $this->revertComposerFile(false); } return $status; } private function updateFileCleanly($json, array $new, $requireKey, $removeKey, $sortPackages) { $contents = file_get_contents($json->getPath()); $manipulator = new JsonManipulator($contents); foreach ($new as $package => $constraint) { if (!$manipulator->addLink($requireKey, $package, $constraint, $sortPackages)) { return false; } if (!$manipulator->removeSubNode($removeKey, $package)) { return false; } } $manipulator->removeMainKeyIfEmpty($removeKey); file_put_contents($json->getPath(), $manipulator->getContents()); return true; } protected function interact(InputInterface $input, OutputInterface $output) { return; } public function revertComposerFile($hardExit = true) { $io = $this->getIO(); if ($this->newlyCreated) { $io->writeError("\n".'Installation failed, deleting '.$this->file.'.'); unlink($this->json->getPath()); if (file_exists($this->lock)) { unlink($this->lock); } } else { $msg = ' to its '; if ($this->lockBackup) { $msg = ' and '.$this->lock.' to their '; } $io->writeError("\n".'Installation failed, reverting '.$this->file.$msg.'original content.'); file_put_contents($this->json->getPath(), $this->composerBackup); if ($this->lockBackup) { file_put_contents($this->lock, $this->lockBackup); } } if ($hardExit) { exit(1); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Command; use Composer\Composer; use Composer\Factory; use Composer\Config; use Composer\Util\Filesystem; use Composer\Util\Platform; use Composer\SelfUpdate\Keys; use Composer\SelfUpdate\Versions; use Composer\IO\IOInterface; use Composer\Downloader\FilesystemException; use Composer\Downloader\TransportException; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Finder\Finder; /** * @author Igor Wiedler * @author Kevin Ran * @author Jordi Boggiano */ class SelfUpdateCommand extends BaseCommand { const HOMEPAGE = 'getcomposer.org'; const OLD_INSTALL_EXT = '-old.phar'; protected function configure() { $this ->setName('self-update') ->setAliases(array('selfupdate')) ->setDescription('Updates composer.phar to the latest version.') ->setDefinition(array( new InputOption('rollback', 'r', InputOption::VALUE_NONE, 'Revert to an older installation of composer'), new InputOption('clean-backups', null, InputOption::VALUE_NONE, 'Delete old backups during an update. This makes the current version of composer the only backup available after the update'), new InputArgument('version', InputArgument::OPTIONAL, 'The version to update to'), new InputOption('no-progress', null, InputOption::VALUE_NONE, 'Do not output download progress.'), new InputOption('update-keys', null, InputOption::VALUE_NONE, 'Prompt user for a key update'), new InputOption('stable', null, InputOption::VALUE_NONE, 'Force an update to the stable channel'), new InputOption('preview', null, InputOption::VALUE_NONE, 'Force an update to the preview channel'), new InputOption('snapshot', null, InputOption::VALUE_NONE, 'Force an update to the snapshot channel'), new InputOption('1', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 1.x versions'), new InputOption('2', null, InputOption::VALUE_NONE, 'Force an update to the stable channel, but only use 2.x versions'), new InputOption('set-channel-only', null, InputOption::VALUE_NONE, 'Only store the channel as the default one and then exit'), )) ->setHelp( <<self-update command checks getcomposer.org for newer versions of composer and if found, installs the latest. php composer.phar self-update Read more at https://getcomposer.org/doc/03-cli.md#self-update-selfupdate- EOT ) ; } protected function execute(InputInterface $input, OutputInterface $output) { $config = Factory::createConfig(); if ($config->get('disable-tls') === true) { $baseUrl = 'http://' . self::HOMEPAGE; } else { $baseUrl = 'https://' . self::HOMEPAGE; } $io = $this->getIO(); $httpDownloader = Factory::createHttpDownloader($io, $config); $versionsUtil = new Versions($config, $httpDownloader); // switch channel if requested $requestedChannel = null; foreach (Versions::$channels as $channel) { if ($input->getOption($channel)) { $requestedChannel = $channel; $versionsUtil->setChannel($channel); break; } } if ($input->getOption('set-channel-only')) { return 0; } $cacheDir = $config->get('cache-dir'); $rollbackDir = $config->get('data-dir'); $home = $config->get('home'); $localFilename = realpath($_SERVER['argv'][0]) ?: $_SERVER['argv'][0]; if ($input->getOption('update-keys')) { return $this->fetchKeys($io, $config); } // ensure composer.phar location is accessible if (!file_exists($localFilename)) { throw new FilesystemException('Composer update failed: the "'.$localFilename.'" is not accessible'); } // check if current dir is writable and if not try the cache dir from settings $tmpDir = is_writable(dirname($localFilename)) ? dirname($localFilename) : $cacheDir; // check for permissions in local filesystem before start connection process if (!is_writable($tmpDir)) { throw new FilesystemException('Composer update failed: the "'.$tmpDir.'" directory used to download the temp file could not be written'); } // check if composer is running as the same user that owns the directory root, only if POSIX is defined and callable if (function_exists('posix_getpwuid') && function_exists('posix_geteuid')) { $composeUser = posix_getpwuid(posix_geteuid()); $homeOwner = posix_getpwuid(fileowner($home)); if (isset($composeUser['name'], $homeOwner['name']) && $composeUser['name'] !== $homeOwner['name']) { $io->writeError('You are running Composer as "'.$composeUser['name'].'", while "'.$home.'" is owned by "'.$homeOwner['name'].'"'); } } if ($input->getOption('rollback')) { return $this->rollback($output, $rollbackDir, $localFilename); } $latest = $versionsUtil->getLatest(); $latestStable = $versionsUtil->getLatest('stable'); try { $latestPreview = $versionsUtil->getLatest('preview'); } catch (\UnexpectedValueException $e) { $latestPreview = $latestStable; } $latestVersion = $latest['version']; $updateVersion = $input->getArgument('version') ?: $latestVersion; $currentMajorVersion = preg_replace('{^(\d+).*}', '$1', Composer::getVersion()); $updateMajorVersion = preg_replace('{^(\d+).*}', '$1', $updateVersion); $previewMajorVersion = preg_replace('{^(\d+).*}', '$1', $latestPreview['version']); if ($versionsUtil->getChannel() === 'stable' && !$input->getArgument('version')) { // if requesting stable channel and no specific version, avoid automatically upgrading to the next major // simply output a warning that the next major stable is available and let users upgrade to it manually if ($currentMajorVersion < $updateMajorVersion) { $skippedVersion = $updateVersion; $versionsUtil->setChannel($currentMajorVersion); $latest = $versionsUtil->getLatest(); $latestStable = $versionsUtil->getLatest('stable'); $latestVersion = $latest['version']; $updateVersion = $latestVersion; $io->writeError('A new stable major version of Composer is available ('.$skippedVersion.'), run "composer self-update --'.$updateMajorVersion.'" to update to it. See also https://getcomposer.org/'.$updateMajorVersion.''); } elseif ($currentMajorVersion < $previewMajorVersion) { // promote next major version if available in preview $io->writeError('A preview release of the next major version of Composer is available ('.$latestPreview['version'].'), run "composer self-update --preview" to give it a try. See also https://github.com/composer/composer/releases for changelogs.'); } } if ($requestedChannel && is_numeric($requestedChannel) && strpos($latestStable['version'], $requestedChannel) !== 0) { $io->writeError('Warning: You forced the install of '.$latestVersion.' via --'.$requestedChannel.', but '.$latestStable['version'].' is the latest stable version. Updating to it via composer self-update --stable is recommended.'); } if (preg_match('{^[0-9a-f]{40}$}', $updateVersion) && $updateVersion !== $latestVersion) { $io->writeError('You can not update to a specific SHA-1 as those phars are not available for download'); return 1; } $channelString = $versionsUtil->getChannel(); if (is_numeric($channelString)) { $channelString .= '.x'; } if (Composer::VERSION === $updateVersion) { $io->writeError( sprintf( 'You are already using the latest available Composer version %s (%s channel).', $updateVersion, $channelString ) ); // remove all backups except for the most recent, if any if ($input->getOption('clean-backups')) { $this->cleanBackups($rollbackDir, $this->getLastBackupVersion($rollbackDir)); } return 0; } $tempFilename = $tmpDir . '/' . basename($localFilename, '.phar').'-temp.phar'; $backupFile = sprintf( '%s/%s-%s%s', $rollbackDir, strtr(Composer::RELEASE_DATE, ' :', '_-'), preg_replace('{^([0-9a-f]{7})[0-9a-f]{33}$}', '$1', Composer::VERSION), self::OLD_INSTALL_EXT ); $updatingToTag = !preg_match('{^[0-9a-f]{40}$}', $updateVersion); $io->write(sprintf("Upgrading to version %s (%s channel).", $updateVersion, $channelString)); $remoteFilename = $baseUrl . ($updatingToTag ? "/download/{$updateVersion}/composer.phar" : '/composer.phar'); try { $signature = $httpDownloader->get($remoteFilename.'.sig')->getBody(); } catch (TransportException $e) { if ($e->getStatusCode() === 404) { throw new \InvalidArgumentException('Version "'.$updateVersion.'" could not be found.', 0, $e); } throw $e; } $io->writeError(' ', false); $httpDownloader->copy($remoteFilename, $tempFilename); $io->writeError(''); if (!file_exists($tempFilename) || !$signature) { $io->writeError('The download of the new composer version failed for an unexpected reason'); return 1; } // verify phar signature if (!extension_loaded('openssl') && $config->get('disable-tls')) { $io->writeError('Skipping phar signature verification as you have disabled OpenSSL via config.disable-tls'); } else { if (!extension_loaded('openssl')) { throw new \RuntimeException('The openssl extension is required for phar signatures to be verified but it is not available. ' . 'If you can not enable the openssl extension, you can disable this error, at your own risk, by setting the \'disable-tls\' option to true.'); } $sigFile = 'file://'.$home.'/' . ($updatingToTag ? 'keys.tags.pub' : 'keys.dev.pub'); if (!file_exists($sigFile)) { file_put_contents( $home.'/keys.dev.pub', <<getOption('clean-backups')) { $this->cleanBackups($rollbackDir); } if (!$this->setLocalPhar($localFilename, $tempFilename, $backupFile)) { @unlink($tempFilename); return 1; } if (file_exists($backupFile)) { $io->writeError(sprintf( 'Use composer self-update --rollback to return to version %s', Composer::VERSION )); } else { $io->writeError('A backup of the current version could not be written to '.$backupFile.', no rollback possible'); } return 0; } protected function fetchKeys(IOInterface $io, Config $config) { if (!$io->isInteractive()) { throw new \RuntimeException('Public keys can not be fetched in non-interactive mode, please run Composer interactively'); } $io->write('Open https://composer.github.io/pubkeys.html to find the latest keys'); $validator = function ($value) { if (!preg_match('{^-----BEGIN PUBLIC KEY-----$}', trim($value))) { throw new \UnexpectedValueException('Invalid input'); } return trim($value)."\n"; }; $devKey = ''; while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $devKey, $match)) { $devKey = $io->askAndValidate('Enter Dev / Snapshot Public Key (including lines with -----): ', $validator); while ($line = $io->ask('')) { $devKey .= trim($line)."\n"; if (trim($line) === '-----END PUBLIC KEY-----') { break; } } } file_put_contents($keyPath = $config->get('home').'/keys.dev.pub', $match[0]); $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); $tagsKey = ''; while (!preg_match('{(-----BEGIN PUBLIC KEY-----.+?-----END PUBLIC KEY-----)}s', $tagsKey, $match)) { $tagsKey = $io->askAndValidate('Enter Tags Public Key (including lines with -----): ', $validator); while ($line = $io->ask('')) { $tagsKey .= trim($line)."\n"; if (trim($line) === '-----END PUBLIC KEY-----') { break; } } } file_put_contents($keyPath = $config->get('home').'/keys.tags.pub', $match[0]); $io->write('Stored key with fingerprint: ' . Keys::fingerprint($keyPath)); $io->write('Public keys stored in '.$config->get('home')); } protected function rollback(OutputInterface $output, $rollbackDir, $localFilename) { $rollbackVersion = $this->getLastBackupVersion($rollbackDir); if (!$rollbackVersion) { throw new \UnexpectedValueException('Composer rollback failed: no installation to roll back to in "'.$rollbackDir.'"'); } $oldFile = $rollbackDir . '/' . $rollbackVersion . self::OLD_INSTALL_EXT; if (!is_file($oldFile)) { throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be found'); } if (!is_readable($oldFile)) { throw new FilesystemException('Composer rollback failed: "'.$oldFile.'" could not be read'); } $io = $this->getIO(); $io->writeError(sprintf("Rolling back to version %s.", $rollbackVersion)); if (!$this->setLocalPhar($localFilename, $oldFile)) { return 1; } return 0; } /** * Checks if the downloaded/rollback phar is valid then moves it * * @param string $localFilename The composer.phar location * @param string $newFilename The downloaded or backup phar * @param string $backupTarget The filename to use for the backup * @throws FilesystemException If the file cannot be moved * @return bool Whether the phar is valid and has been moved */ protected function setLocalPhar($localFilename, $newFilename, $backupTarget = null) { $io = $this->getIO(); @chmod($newFilename, fileperms($localFilename)); // check phar validity if (!$this->validatePhar($newFilename, $error)) { $io->writeError('The '.($backupTarget ? 'update' : 'backup').' file is corrupted ('.$error.')'); if ($backupTarget) { $io->writeError('Please re-run the self-update command to try again.'); } return false; } // copy current file into backups dir if ($backupTarget) { @copy($localFilename, $backupTarget); } try { if (Platform::isWindows()) { // use copy to apply permissions from the destination directory // as rename uses source permissions and may block other users copy($newFilename, $localFilename); @unlink($newFilename); } else { rename($newFilename, $localFilename); } return true; } catch (\Exception $e) { // see if we can run this operation as an Admin on Windows if (!is_writable(dirname($localFilename)) && $io->isInteractive() && $this->isWindowsNonAdminUser()) { return $this->tryAsWindowsAdmin($localFilename, $newFilename); } $action = 'Composer '.($backupTarget ? 'update' : 'rollback'); throw new FilesystemException($action.' failed: "'.$localFilename.'" could not be written.'.PHP_EOL.$e->getMessage()); } } protected function cleanBackups($rollbackDir, $except = null) { $finder = $this->getOldInstallationFinder($rollbackDir); $io = $this->getIO(); $fs = new Filesystem; foreach ($finder as $file) { if ($except && $file->getBasename(self::OLD_INSTALL_EXT) === $except) { continue; } $file = (string) $file; $io->writeError('Removing: '.$file.''); $fs->remove($file); } } protected function getLastBackupVersion($rollbackDir) { $finder = $this->getOldInstallationFinder($rollbackDir); $finder->sortByName(); $files = iterator_to_array($finder); if (count($files)) { return basename(end($files), self::OLD_INSTALL_EXT); } return false; } protected function getOldInstallationFinder($rollbackDir) { return Finder::create() ->depth(0) ->files() ->name('*' . self::OLD_INSTALL_EXT) ->in($rollbackDir); } /** * Validates the downloaded/backup phar file * * @param string $pharFile The downloaded or backup phar * @param null|string $error Set by method on failure * * Code taken from getcomposer.org/installer. Any changes should be made * there and replicated here * * @throws \Exception * @return bool If the operation succeeded */ protected function validatePhar($pharFile, &$error) { if (ini_get('phar.readonly')) { return true; } try { // Test the phar validity $phar = new \Phar($pharFile); // Free the variable to unlock the file unset($phar); $result = true; } catch (\Exception $e) { if (!$e instanceof \UnexpectedValueException && !$e instanceof \PharException) { throw $e; } $error = $e->getMessage(); $result = false; } return $result; } /** * Returns true if this is a non-admin Windows user account * * @return bool */ protected function isWindowsNonAdminUser() { if (!Platform::isWindows()) { return false; } // fltmc.exe manages filter drivers and errors without admin privileges exec('fltmc.exe filters', $output, $exitCode); return $exitCode !== 0; } /** * Invokes a UAC prompt to update composer.phar as an admin * * Uses a .vbs script to elevate and run the cmd.exe copy command. * * @param string $localFilename The composer.phar location * @param string $newFilename The downloaded or backup phar * @return bool Whether composer.phar has been updated */ protected function tryAsWindowsAdmin($localFilename, $newFilename) { $io = $this->getIO(); $io->writeError('Unable to write "'.$localFilename.'". Access is denied.'); $helpMessage = 'Please run the self-update command as an Administrator.'; $question = 'Complete this operation with Administrator privileges [Y,n]? '; if (!$io->askConfirmation($question, false)) { $io->writeError('Operation cancelled. '.$helpMessage.''); return false; } $tmpFile = tempnam(sys_get_temp_dir(), ''); $script = $tmpFile.'.vbs'; rename($tmpFile, $script); $checksum = hash_file('sha256', $newFilename); // cmd's internal copy is fussy about backslashes $source = str_replace('/', '\\', $newFilename); $destination = str_replace('/', '\\', $localFilename); $vbs = <<writeError('Operation succeeded.'); @unlink($newFilename); } else { $io->writeError('Operation failed.'.$helpMessage.''); } return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\SelfUpdate; /** * @author Jordi Boggiano */ class Keys { public static function fingerprint($path) { $hash = strtoupper(hash('sha256', preg_replace('{\s}', '', file_get_contents($path)))); return implode(' ', array( substr($hash, 0, 8), substr($hash, 8, 8), substr($hash, 16, 8), substr($hash, 24, 8), '', // Extra space substr($hash, 32, 8), substr($hash, 40, 8), substr($hash, 48, 8), substr($hash, 56, 8), )); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\SelfUpdate; use Composer\Util\HttpDownloader; use Composer\Config; /** * @author Jordi Boggiano */ class Versions { public static $channels = array('stable', 'preview', 'snapshot', '1', '2'); private $httpDownloader; private $config; private $channel; private $versionsData; public function __construct(Config $config, HttpDownloader $httpDownloader) { $this->httpDownloader = $httpDownloader; $this->config = $config; } public function getChannel() { if ($this->channel) { return $this->channel; } $channelFile = $this->config->get('home').'/update-channel'; if (file_exists($channelFile)) { $channel = trim(file_get_contents($channelFile)); if (in_array($channel, array('stable', 'preview', 'snapshot'), true)) { return $this->channel = $channel; } } return $this->channel = 'stable'; } public function setChannel($channel) { if (!in_array($channel, self::$channels, true)) { throw new \InvalidArgumentException('Invalid channel '.$channel.', must be one of: ' . implode(', ', self::$channels)); } $channelFile = $this->config->get('home').'/update-channel'; $this->channel = $channel; file_put_contents($channelFile, (is_numeric($channel) ? 'stable' : $channel).PHP_EOL); } public function getLatest($channel = null) { $versions = $this->getVersionsData(); foreach ($versions[$channel ?: $this->getChannel()] as $version) { if ($version['min-php'] <= PHP_VERSION_ID) { return $version; } } throw new \UnexpectedValueException('There is no version of Composer available for your PHP version ('.PHP_VERSION.')'); } private function getVersionsData() { if (!$this->versionsData) { if ($this->config->get('disable-tls') === true) { $protocol = 'http'; } else { $protocol = 'https'; } $this->versionsData = $this->httpDownloader->get($protocol . '://getcomposer.org/versions')->decodeJson(); } return $this->versionsData; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Json; use Exception; /** * @author Jordi Boggiano */ class JsonValidationException extends Exception { protected $errors; public function __construct($message, $errors = array(), Exception $previous = null) { $this->errors = $errors; parent::__construct($message, 0, $previous); } public function getErrors() { return $this->errors; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Json; use Composer\Repository\PlatformRepository; /** * @author Jordi Boggiano */ class JsonManipulator { private static $DEFINES = '(?(DEFINE) (? -? (?= [1-9]|0(?!\d) ) \d++ (\.\d++)? ([eE] [+-]?+ \d++)? ) (? true | false | null ) (? " ([^"\\\\]*+ | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9A-Fa-f]{4} )* " ) (? \[ (?: (?&json) \s*+ (?: , (?&json) \s*+ )*+ )?+ \s*+ \] ) (? \s*+ (?&string) \s*+ : (?&json) \s*+ ) (? \{ (?: (?&pair) (?: , (?&pair) )*+ )?+ \s*+ \} ) (? \s*+ (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) )'; private $contents; private $newline; private $indent; public function __construct($contents) { $contents = trim($contents); if ($contents === '') { $contents = '{}'; } if (!$this->pregMatch('#^\{(.*)\}$#s', $contents)) { throw new \InvalidArgumentException('The json file must be an object ({})'); } $this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; $this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; $this->detectIndenting(); } public function getContents() { return $this->contents . $this->newline; } public function addLink($type, $package, $constraint, $sortPackages = false) { $decoded = JsonFile::parseJson($this->contents); // no link of that type yet if (!isset($decoded[$type])) { return $this->addMainKey($type, array($package => $constraint)); } $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P(?&json))(?P.*)}sx'; if (!$this->pregMatch($regex, $this->contents, $matches)) { return false; } $links = $matches['value']; // try to find existing link $packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); $regex = '{'.self::$DEFINES.'"(?P'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; if ($this->pregMatch($regex, $links, $packageMatches)) { // update existing link $existingPackage = $packageMatches['package']; $packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); $links = preg_replace_callback('{'.self::$DEFINES.'"'.$packageRegex.'"(?P\s*:\s*)(?&string)}ix', function ($m) use ($existingPackage, $constraint) { return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; }, $links); } else { if ($this->pregMatch('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { // link missing but non empty links $links = preg_replace( '{'.preg_quote($match[1]).'$}', // addcslashes is used to double up backslashes/$ since preg_replace resolves them as back references otherwise, see #1588 addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), $links ); } else { // links empty $links = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . $this->indent . '}'; } } if (true === $sortPackages) { $requirements = json_decode($links, true); $this->sortPackages($requirements); $links = $this->format($requirements); } $this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; return true; } /** * Sorts packages by importance (platform packages first, then PHP dependencies) and alphabetically. * * @link https://getcomposer.org/doc/02-libraries.md#platform-packages * * @param array $packages */ private function sortPackages(array &$packages = array()) { $prefix = function ($requirement) { if (PlatformRepository::isPlatformPackage($requirement)) { return preg_replace( array( '/^php/', '/^hhvm/', '/^ext/', '/^lib/', '/^\D/', ), array( '0-$0', '1-$0', '2-$0', '3-$0', '4-$0', ), $requirement ); } return '5-'.$requirement; }; uksort($packages, function ($a, $b) use ($prefix) { return strnatcmp($prefix($a), $prefix($b)); }); } public function addRepository($name, $config, $append = true) { return $this->addSubNode('repositories', $name, $config, $append); } public function removeRepository($name) { return $this->removeSubNode('repositories', $name); } public function addConfigSetting($name, $value) { return $this->addSubNode('config', $name, $value); } public function removeConfigSetting($name) { return $this->removeSubNode('config', $name); } public function addProperty($name, $value) { if (strpos($name, 'suggest.') === 0) { return $this->addSubNode('suggest', substr($name, 8), $value); } if (strpos($name, 'extra.') === 0) { return $this->addSubNode('extra', substr($name, 6), $value); } if (strpos($name, 'scripts.') === 0) { return $this->addSubNode('scripts', substr($name, 8), $value); } return $this->addMainKey($name, $value); } public function removeProperty($name) { if (strpos($name, 'suggest.') === 0) { return $this->removeSubNode('suggest', substr($name, 8)); } if (strpos($name, 'extra.') === 0) { return $this->removeSubNode('extra', substr($name, 6)); } if (strpos($name, 'scripts.') === 0) { return $this->removeSubNode('scripts', substr($name, 8)); } return $this->removeMainKey($name); } public function addSubNode($mainNode, $name, $value, $append = true) { $decoded = JsonFile::parseJson($this->contents); $subName = null; if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { list($name, $subName) = explode('.', $name, 2); } // no main node yet if (!isset($decoded[$mainNode])) { if ($subName !== null) { $this->addMainKey($mainNode, array($name => array($subName => $value))); } else { $this->addMainKey($mainNode, array($name => $value)); } return true; } // main node content not match-able $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; try { if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { return false; } } catch (\RuntimeException $e) { if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { return false; } throw $e; } $children = $match['content']; // invalid match due to un-regexable content, abort if (!@json_decode($children)) { return false; } $that = $this; // child exists $childRegex = '{'.self::$DEFINES.'(?P"'.preg_quote($name).'"\s*:\s*)(?P(?&json))(?P,?)}x'; if ($this->pregMatch($childRegex, $children, $matches)) { $children = preg_replace_callback($childRegex, function ($matches) use ($subName, $value, $that) { if ($subName !== null) { $curVal = json_decode($matches['content'], true); if (!is_array($curVal)) { $curVal = array(); } $curVal[$subName] = $value; $value = $curVal; } return $matches['start'] . $that->format($value, 1) . $matches['end']; }, $children); } else { $this->pregMatch('#^{ (?P\s*?) (?P\S+.*?)? (?P\s*) }$#sx', $children, $match); $whitespace = ''; if (!empty($match['trailingspace'])) { $whitespace = $match['trailingspace']; } if (!empty($match['content'])) { if ($subName !== null) { $value = array($subName => $value); } // child missing but non empty children if ($append) { $children = preg_replace( '#'.$whitespace.'}$#', addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), $children ); } else { $whitespace = ''; if (!empty($match['leadingspace'])) { $whitespace = $match['leadingspace']; } $children = preg_replace( '#^{'.$whitespace.'#', addcslashes('{' . $whitespace . JsonFile::encode($name).': '.$this->format($value, 1) . ',' . $this->newline . $this->indent . $this->indent, '\\$'), $children ); } } else { if ($subName !== null) { $value = array($subName => $value); } // children present but empty $children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; } } $this->contents = preg_replace_callback($nodeRegex, function ($m) use ($children) { return $m['start'] . $children . $m['end']; }, $this->contents); return true; } public function removeSubNode($mainNode, $name) { $decoded = JsonFile::parseJson($this->contents); // no node or empty node if (empty($decoded[$mainNode])) { return true; } // no node content match-able $nodeRegex = '{'.self::$DEFINES.'^(?P \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P(?&object))(?P.*)}sx'; try { if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { return false; } } catch (\RuntimeException $e) { if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { return false; } throw $e; } $children = $match['content']; // invalid match due to un-regexable content, abort if (!@json_decode($children, true)) { return false; } $subName = null; if (in_array($mainNode, array('config', 'extra', 'scripts')) && false !== strpos($name, '.')) { list($name, $subName) = explode('.', $name, 2); } // no node to remove if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { return true; } // try and find a match for the subkey $keyRegex = str_replace('/', '\\\\?/', preg_quote($name)); if ($this->pregMatch('{"'.$keyRegex.'"\s*:}i', $children)) { // find best match for the value of "name" if (preg_match_all('{'.self::$DEFINES.'"'.$keyRegex.'"\s*:\s*(?:(?&json))}x', $children, $matches)) { $bestMatch = ''; foreach ($matches[0] as $match) { if (strlen($bestMatch) < strlen($match)) { $bestMatch = $match; } } $childrenClean = preg_replace('{,\s*'.preg_quote($bestMatch).'}i', '', $children, -1, $count); if (1 !== $count) { $childrenClean = preg_replace('{'.preg_quote($bestMatch).'\s*,?\s*}i', '', $childrenClean, -1, $count); if (1 !== $count) { return false; } } } } else { $childrenClean = $children; } if (!isset($childrenClean)) { throw new \InvalidArgumentException("JsonManipulator: \$childrenClean is not defined. Please report at https://github.com/composer/composer/issues/new."); } // no child data left, $name was the only key in $this->pregMatch('#^{ \s*? (?P\S+.*?)? (?P\s*) }$#sx', $childrenClean, $match); if (empty($match['content'])) { $newline = $this->newline; $indent = $this->indent; $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($indent, $newline) { return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; }, $this->contents); // we have a subname, so we restore the rest of $name if ($subName !== null) { $curVal = json_decode($children, true); unset($curVal[$name][$subName]); $this->addSubNode($mainNode, $name, $curVal[$name]); } return true; } $that = $this; $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($that, $name, $subName, $childrenClean) { if ($subName !== null) { $curVal = json_decode($matches['content'], true); unset($curVal[$name][$subName]); $childrenClean = $that->format($curVal); } return $matches['start'] . $childrenClean . $matches['end']; }, $this->contents); return true; } public function addMainKey($key, $content) { $decoded = JsonFile::parseJson($this->contents); $content = $this->format($content); // key exists already $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P.*)}sx'; if (isset($decoded[$key]) && $this->pregMatch($regex, $this->contents, $matches)) { // invalid match due to un-regexable content, abort if (!@json_decode('{'.$matches['key'].'}')) { return false; } $this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; return true; } // append at the end of the file and keep whitespace if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { $this->contents = preg_replace( '#'.$match[1].'\}$#', addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), $this->contents ); return true; } // append at the end of the file $this->contents = preg_replace( '#\}$#', addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), $this->contents ); return true; } public function removeMainKey($key) { $decoded = JsonFile::parseJson($this->contents); if (!array_key_exists($key, $decoded)) { return true; } // key exists already $regex = '{'.self::$DEFINES.'^(?P\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P.*)}sx'; if ($this->pregMatch($regex, $this->contents, $matches)) { // invalid match due to un-regexable content, abort if (!@json_decode('{'.$matches['removal'].'}')) { return false; } // check that we are not leaving a dangling comma on the previous line if the last line was removed if (preg_match('#,\s*$#', $matches['start']) && preg_match('#^\}$#', $matches['end'])) { $matches['start'] = rtrim(preg_replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); } $this->contents = $matches['start'] . $matches['end']; if (preg_match('#^\{\s*\}\s*$#', $this->contents)) { $this->contents = "{\n}"; } return true; } return false; } public function removeMainKeyIfEmpty($key) { $decoded = JsonFile::parseJson($this->contents); if (!array_key_exists($key, $decoded)) { return true; } if (is_array($decoded[$key]) && count($decoded[$key]) === 0) { return $this->removeMainKey($key); } return true; } public function format($data, $depth = 0) { if (is_array($data)) { reset($data); if (is_numeric(key($data))) { foreach ($data as $key => $val) { $data[$key] = $this->format($val, $depth + 1); } return '['.implode(', ', $data).']'; } $out = '{' . $this->newline; $elems = array(); foreach ($data as $key => $val) { $elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); } return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; } return JsonFile::encode($data); } protected function detectIndenting() { if ($this->pregMatch('{^([ \t]+)"}m', $this->contents, $match)) { $this->indent = $match[1]; } else { $this->indent = ' '; } } protected function pregMatch($re, $str, &$matches = array()) { $count = preg_match($re, $str, $matches); if ($count === false) { switch (preg_last_error()) { case PREG_NO_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_NO_ERROR', PREG_NO_ERROR); case PREG_INTERNAL_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_INTERNAL_ERROR', PREG_INTERNAL_ERROR); case PREG_BACKTRACK_LIMIT_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BACKTRACK_LIMIT_ERROR', PREG_BACKTRACK_LIMIT_ERROR); case PREG_RECURSION_LIMIT_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_RECURSION_LIMIT_ERROR', PREG_RECURSION_LIMIT_ERROR); case PREG_BAD_UTF8_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_ERROR', PREG_BAD_UTF8_ERROR); case PREG_BAD_UTF8_OFFSET_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_OFFSET_ERROR', PREG_BAD_UTF8_OFFSET_ERROR); case 6: // PREG_JIT_STACKLIMIT_ERROR if (PHP_VERSION_ID > 70000) { throw new \RuntimeException('Failed to execute regex: PREG_JIT_STACKLIMIT_ERROR', 6); } // no break default: throw new \RuntimeException('Failed to execute regex: Unknown error'); } } return $count; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Json; /** * Formats json strings used for php < 5.4 because the json_encode doesn't * supports the flags JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE * in these versions * * @author Konstantin Kudryashiv * @author Jordi Boggiano */ class JsonFormatter { /** * This code is based on the function found at: * http://recursive-design.com/blog/2008/03/11/format-json-with-php/ * * Originally licensed under MIT by Dave Perrett * * * @param string $json * @param bool $unescapeUnicode Un escape unicode * @param bool $unescapeSlashes Un escape slashes * @return string */ public static function format($json, $unescapeUnicode, $unescapeSlashes) { $result = ''; $pos = 0; $strLen = strlen($json); $indentStr = ' '; $newLine = "\n"; $outOfQuotes = true; $buffer = ''; $noescape = true; for ($i = 0; $i < $strLen; $i++) { // Grab the next character in the string $char = substr($json, $i, 1); // Are we inside a quoted string? if ('"' === $char && $noescape) { $outOfQuotes = !$outOfQuotes; } if (!$outOfQuotes) { $buffer .= $char; $noescape = '\\' === $char ? !$noescape : true; continue; } if ('' !== $buffer) { if ($unescapeSlashes) { $buffer = str_replace('\\/', '/', $buffer); } if ($unescapeUnicode && function_exists('mb_convert_encoding')) { // https://stackoverflow.com/questions/2934563/how-to-decode-unicode-escape-sequences-like-u00ed-to-proper-utf-8-encoded-cha $buffer = preg_replace_callback('/(\\\\+)u([0-9a-f]{4})/i', function ($match) { $l = strlen($match[1]); if ($l % 2) { $code = hexdec($match[2]); // 0xD800..0xDFFF denotes UTF-16 surrogate pair which won't be unescaped // see https://github.com/composer/composer/issues/7510 if (0xD800 <= $code && 0xDFFF >= $code) { return $match[0]; } return str_repeat('\\', $l - 1) . mb_convert_encoding( pack('H*', $match[2]), 'UTF-8', 'UCS-2BE' ); } return $match[0]; }, $buffer); } $result .= $buffer.$char; $buffer = ''; continue; } if (':' === $char) { // Add a space after the : character $char .= ' '; } elseif ('}' === $char || ']' === $char) { $pos--; $prevChar = substr($json, $i - 1, 1); if ('{' !== $prevChar && '[' !== $prevChar) { // If this character is the end of an element, // output a new line and indent the next line $result .= $newLine; for ($j = 0; $j < $pos; $j++) { $result .= $indentStr; } } else { // Collapse empty {} and [] $result = rtrim($result); } } $result .= $char; // If the last character was the beginning of an element, // output a new line and indent the next line if (',' === $char || '{' === $char || '[' === $char) { $result .= $newLine; if ('{' === $char || '[' === $char) { $pos++; } for ($j = 0; $j < $pos; $j++) { $result .= $indentStr; } } } return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Json; use JsonSchema\Validator; use Seld\JsonLint\JsonParser; use Seld\JsonLint\ParsingException; use Composer\Util\HttpDownloader; use Composer\IO\IOInterface; use Composer\Downloader\TransportException; /** * Reads/writes json files. * * @author Konstantin Kudryashiv * @author Jordi Boggiano */ class JsonFile { const LAX_SCHEMA = 1; const STRICT_SCHEMA = 2; const JSON_UNESCAPED_SLASHES = 64; const JSON_PRETTY_PRINT = 128; const JSON_UNESCAPED_UNICODE = 256; const COMPOSER_SCHEMA_PATH = '/../../../res/composer-schema.json'; private $path; private $httpDownloader; private $io; /** * Initializes json file reader/parser. * * @param string $path path to a lockfile * @param HttpDownloader $httpDownloader required for loading http/https json files * @param IOInterface $io * @throws \InvalidArgumentException */ public function __construct($path, HttpDownloader $httpDownloader = null, IOInterface $io = null) { $this->path = $path; if (null === $httpDownloader && preg_match('{^https?://}i', $path)) { throw new \InvalidArgumentException('http urls require a HttpDownloader instance to be passed'); } $this->httpDownloader = $httpDownloader; $this->io = $io; } /** * @return string */ public function getPath() { return $this->path; } /** * Checks whether json file exists. * * @return bool */ public function exists() { return is_file($this->path); } /** * Reads json file. * * @throws ParsingException * @throws \RuntimeException * @return mixed */ public function read() { try { if ($this->httpDownloader) { $json = $this->httpDownloader->get($this->path)->getBody(); } else { if ($this->io && $this->io->isDebug()) { $realpathInfo = ''; $realpath = realpath($this->path); if (false !== $realpath && $realpath !== $this->path) { $realpathInfo = ' (' . $realpath . ')'; } $this->io->writeError('Reading ' . $this->path . $realpathInfo); } $json = file_get_contents($this->path); } } catch (TransportException $e) { throw new \RuntimeException($e->getMessage(), 0, $e); } catch (\Exception $e) { throw new \RuntimeException('Could not read '.$this->path."\n\n".$e->getMessage()); } return static::parseJson($json, $this->path); } /** * Writes json file. * * @param array $hash writes hash into json file * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) * @throws \UnexpectedValueException|\Exception */ public function write(array $hash, $options = 448) { if ($this->path === 'php://memory') { file_put_contents($this->path, static::encode($hash, $options)); return; } $dir = dirname($this->path); if (!is_dir($dir)) { if (file_exists($dir)) { throw new \UnexpectedValueException( realpath($dir).' exists and is not a directory.' ); } if (!@mkdir($dir, 0777, true)) { throw new \UnexpectedValueException( $dir.' does not exist and could not be created.' ); } } $retries = 3; while ($retries--) { try { $this->filePutContentsIfModified($this->path, static::encode($hash, $options). ($options & self::JSON_PRETTY_PRINT ? "\n" : '')); break; } catch (\Exception $e) { if ($retries) { usleep(500000); continue; } throw $e; } } } /** * modify file properties only if content modified */ private function filePutContentsIfModified($path, $content) { $currentContent = @file_get_contents($path); if (!$currentContent || ($currentContent != $content)) { return file_put_contents($path, $content); } return 0; } /** * Validates the schema of the current json file according to composer-schema.json rules * * @param int $schema a JsonFile::*_SCHEMA constant * @param string|null $schemaFile a path to the schema file * @throws JsonValidationException * @throws ParsingException * @return bool true on success */ public function validateSchema($schema = self::STRICT_SCHEMA, $schemaFile = null) { $content = file_get_contents($this->path); $data = json_decode($content); if (null === $data && 'null' !== $content) { self::validateSyntax($content, $this->path); } if (null === $schemaFile) { $schemaFile = __DIR__ . self::COMPOSER_SCHEMA_PATH; } // Prepend with file:// only when not using a special schema already (e.g. in the phar) if (false === strpos($schemaFile, '://')) { $schemaFile = 'file://' . $schemaFile; } $schemaData = (object) array('$ref' => $schemaFile); if ($schema === self::LAX_SCHEMA) { $schemaData->additionalProperties = true; $schemaData->required = array(); } $validator = new Validator(); $validator->check($data, $schemaData); // TODO add more validation like check version constraints and such, perhaps build that into the arrayloader? if (!$validator->isValid()) { $errors = array(); foreach ((array) $validator->getErrors() as $error) { $errors[] = ($error['property'] ? $error['property'].' : ' : '').$error['message']; } throw new JsonValidationException('"'.$this->path.'" does not match the expected JSON schema', $errors); } return true; } /** * Encodes an array into (optionally pretty-printed) JSON * * @param mixed $data Data to encode into a formatted JSON string * @param int $options json_encode options (defaults to JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT | JSON_UNESCAPED_UNICODE) * @return string Encoded json */ public static function encode($data, $options = 448) { if (PHP_VERSION_ID >= 50400) { $json = json_encode($data, $options); if (false === $json) { self::throwEncodeError(json_last_error()); } // compact brackets to follow recent php versions if (PHP_VERSION_ID < 50428 || (PHP_VERSION_ID >= 50500 && PHP_VERSION_ID < 50512) || (defined('JSON_C_VERSION') && version_compare(phpversion('json'), '1.3.6', '<'))) { $json = preg_replace('/\[\s+\]/', '[]', $json); $json = preg_replace('/\{\s+\}/', '{}', $json); } return $json; } $json = json_encode($data); if (false === $json) { self::throwEncodeError(json_last_error()); } $prettyPrint = (bool) ($options & self::JSON_PRETTY_PRINT); $unescapeUnicode = (bool) ($options & self::JSON_UNESCAPED_UNICODE); $unescapeSlashes = (bool) ($options & self::JSON_UNESCAPED_SLASHES); if (!$prettyPrint && !$unescapeUnicode && !$unescapeSlashes) { return $json; } return JsonFormatter::format($json, $unescapeUnicode, $unescapeSlashes); } /** * Throws an exception according to a given code with a customized message * * @param int $code return code of json_last_error function * @throws \RuntimeException */ private static function throwEncodeError($code) { switch ($code) { case JSON_ERROR_DEPTH: $msg = 'Maximum stack depth exceeded'; break; case JSON_ERROR_STATE_MISMATCH: $msg = 'Underflow or the modes mismatch'; break; case JSON_ERROR_CTRL_CHAR: $msg = 'Unexpected control character found'; break; case JSON_ERROR_UTF8: $msg = 'Malformed UTF-8 characters, possibly incorrectly encoded'; break; default: $msg = 'Unknown error'; } throw new \RuntimeException('JSON encoding failed: '.$msg); } /** * Parses json string and returns hash. * * @param string $json json string * @param string $file the json file * * @throws ParsingException * @return mixed */ public static function parseJson($json, $file = null) { if (null === $json) { return; } $data = json_decode($json, true); if (null === $data && JSON_ERROR_NONE !== json_last_error()) { self::validateSyntax($json, $file); } return $data; } /** * Validates the syntax of a JSON string * * @param string $json * @param string $file * @throws \UnexpectedValueException * @throws ParsingException * @return bool true on success */ protected static function validateSyntax($json, $file = null) { $parser = new JsonParser(); $result = $parser->lint($json); if (null === $result) { if (defined('JSON_ERROR_UTF8') && JSON_ERROR_UTF8 === json_last_error()) { throw new \UnexpectedValueException('"'.$file.'" is not UTF-8, could not parse as JSON'); } return true; } throw new ParsingException('"'.$file.'" does not contain valid JSON'."\n".$result->getMessage(), $result->getDetails()); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Exception; /** * Specific exception for Composer\Util\HttpDownloader creation. * * @author Jordi Boggiano */ class NoSslException extends \RuntimeException { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Exception; /** * @author Jordi Boggiano */ class IrrecoverableDownloadException extends \RuntimeException { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\IO\IOInterface; use Composer\IO\ConsoleIO; use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Repository\RepositoryInterface; use Composer\Repository\InstalledRepositoryInterface; use Composer\DependencyResolver\Operation\OperationInterface; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Operation\UninstallOperation; use Composer\DependencyResolver\Operation\MarkAliasInstalledOperation; use Composer\DependencyResolver\Operation\MarkAliasUninstalledOperation; use Composer\EventDispatcher\EventDispatcher; use Composer\Util\Loop; use Composer\Util\Platform; use React\Promise\PromiseInterface; /** * Package operation manager. * * @author Konstantin Kudryashov * @author Jordi Boggiano * @author Nils Adermann */ class InstallationManager { /** @var array */ private $installers = array(); /** @var array */ private $cache = array(); /** @var array> */ private $notifiablePackages = array(); /** @var Loop */ private $loop; /** @var IOInterface */ private $io; /** @var EventDispatcher */ private $eventDispatcher; /** @var bool */ private $outputProgress; public function __construct(Loop $loop, IOInterface $io, EventDispatcher $eventDispatcher = null) { $this->loop = $loop; $this->io = $io; $this->eventDispatcher = $eventDispatcher; } public function reset() { $this->notifiablePackages = array(); } /** * Adds installer * * @param InstallerInterface $installer installer instance */ public function addInstaller(InstallerInterface $installer) { array_unshift($this->installers, $installer); $this->cache = array(); } /** * Removes installer * * @param InstallerInterface $installer installer instance */ public function removeInstaller(InstallerInterface $installer) { if (false !== ($key = array_search($installer, $this->installers, true))) { array_splice($this->installers, $key, 1); $this->cache = array(); } } /** * Disables plugins. * * We prevent any plugins from being instantiated by simply * deactivating the installer for them. This ensure that no third-party * code is ever executed. */ public function disablePlugins() { foreach ($this->installers as $i => $installer) { if (!$installer instanceof PluginInstaller) { continue; } unset($this->installers[$i]); } } /** * Returns installer for a specific package type. * * @param string $type package type * * @throws \InvalidArgumentException if installer for provided type is not registered * @return InstallerInterface */ public function getInstaller($type) { $type = strtolower($type); if (isset($this->cache[$type])) { return $this->cache[$type]; } foreach ($this->installers as $installer) { if ($installer->supports($type)) { return $this->cache[$type] = $installer; } } throw new \InvalidArgumentException('Unknown installer type: '.$type); } /** * Checks whether provided package is installed in one of the registered installers. * * @param InstalledRepositoryInterface $repo repository in which to check * @param PackageInterface $package package instance * * @return bool */ public function isPackageInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { if ($package instanceof AliasPackage) { return $repo->hasPackage($package) && $this->isPackageInstalled($repo, $package->getAliasOf()); } return $this->getInstaller($package->getType())->isInstalled($repo, $package); } /** * Install binary for the given package. * If the installer associated to this package doesn't handle that function, it'll do nothing. * * @param PackageInterface $package Package instance */ public function ensureBinariesPresence(PackageInterface $package) { try { $installer = $this->getInstaller($package->getType()); } catch (\InvalidArgumentException $e) { // no installer found for the current package type (@see `getInstaller()`) return; } // if the given installer support installing binaries if ($installer instanceof BinaryPresenceInterface) { $installer->ensureBinariesPresence($package); } } /** * Executes solver operation. * * @param RepositoryInterface $repo repository in which to add/remove/update packages * @param OperationInterface[] $operations operations to execute * @param bool $devMode whether the install is being run in dev mode * @param bool $runScripts whether to dispatch script events */ public function execute(RepositoryInterface $repo, array $operations, $devMode = true, $runScripts = true) { $cleanupPromises = array(); $loop = $this->loop; $io = $this->io; $runCleanup = function () use (&$cleanupPromises, $loop) { $promises = array(); $loop->abortJobs(); foreach ($cleanupPromises as $cleanup) { $promises[] = new \React\Promise\Promise(function ($resolve, $reject) use ($cleanup) { $promise = $cleanup(); if (!$promise instanceof PromiseInterface) { $resolve(); } else { $promise->then(function () use ($resolve) { $resolve(); }); } }); } if (!empty($promises)) { $loop->wait($promises); } }; $handleInterruptsUnix = function_exists('pcntl_async_signals') && function_exists('pcntl_signal'); $handleInterruptsWindows = function_exists('sapi_windows_set_ctrl_handler') && PHP_SAPI === 'cli'; $prevHandler = null; $windowsHandler = null; if ($handleInterruptsUnix) { pcntl_async_signals(true); $prevHandler = pcntl_signal_get_handler(SIGINT); pcntl_signal(SIGINT, function ($sig) use ($runCleanup, $prevHandler, $io) { $io->writeError('Received SIGINT, aborting', true, IOInterface::DEBUG); $runCleanup(); if (!in_array($prevHandler, array(SIG_DFL, SIG_IGN), true)) { call_user_func($prevHandler, $sig); } exit(130); }); } if ($handleInterruptsWindows) { $windowsHandler = function ($event) use ($runCleanup, $io) { if ($event !== PHP_WINDOWS_EVENT_CTRL_C) { return; } $io->writeError('Received CTRL+C, aborting', true, IOInterface::DEBUG); $runCleanup(); exit(130); }; sapi_windows_set_ctrl_handler($windowsHandler); } try { // execute operations in batches to make sure download-modifying-plugins are installed // before the other packages get downloaded $batches = array(); $batch = array(); foreach ($operations as $index => $operation) { if (in_array($operation->getOperationType(), array('update', 'install'), true)) { $package = $operation->getOperationType() === 'update' ? $operation->getTargetPackage() : $operation->getPackage(); if ($package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true) { if ($batch) { $batches[] = $batch; } $batches[] = array($index => $operation); $batch = array(); continue; } } $batch[$index] = $operation; } if ($batch) { $batches[] = $batch; } foreach ($batches as $batch) { $this->downloadAndExecuteBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $operations); } } catch (\Exception $e) { $runCleanup(); if ($handleInterruptsUnix) { pcntl_signal(SIGINT, $prevHandler); } if ($handleInterruptsWindows) { sapi_windows_set_ctrl_handler($prevHandler, false); } throw $e; } if ($handleInterruptsUnix) { pcntl_signal(SIGINT, $prevHandler); } if ($handleInterruptsWindows) { sapi_windows_set_ctrl_handler($prevHandler, false); } // do a last write so that we write the repository even if nothing changed // as that can trigger an update of some files like InstalledVersions.php if // running a new composer version $repo->write($devMode, $this); } /** * @param array $operations List of operations to execute in this batch * @param array $allOperations Complete list of operations to be executed in the install job, used for event listeners */ private function downloadAndExecuteBatch(RepositoryInterface $repo, array $operations, array &$cleanupPromises, $devMode, $runScripts, array $allOperations) { $promises = array(); foreach ($operations as $index => $operation) { $opType = $operation->getOperationType(); // ignoring alias ops as they don't need to execute anything at this stage if (!in_array($opType, array('update', 'install', 'uninstall'))) { continue; } if ($opType === 'update') { $package = $operation->getTargetPackage(); $initialPackage = $operation->getInitialPackage(); } else { $package = $operation->getPackage(); $initialPackage = null; } $installer = $this->getInstaller($package->getType()); $cleanupPromises[$index] = function () use ($opType, $installer, $package, $initialPackage) { // avoid calling cleanup if the download was not even initialized for a package // as without installation source configured nothing will work if (!$package->getInstallationSource()) { return; } return $installer->cleanup($opType, $package, $initialPackage); }; if ($opType !== 'uninstall') { $promise = $installer->download($package, $initialPackage); if ($promise) { $promises[] = $promise; } } } // execute all downloads first if (count($promises)) { $this->waitOnPromises($promises); } // execute operations in batches to make sure every plugin is installed in the // right order and activated before the packages depending on it are installed $batches = array(); $batch = array(); foreach ($operations as $index => $operation) { if (in_array($operation->getOperationType(), array('update', 'install'), true)) { $package = $operation->getOperationType() === 'update' ? $operation->getTargetPackage() : $operation->getPackage(); if ($package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer') { if ($batch) { $batches[] = $batch; } $batches[] = array($index => $operation); $batch = array(); continue; } } $batch[$index] = $operation; } if ($batch) { $batches[] = $batch; } foreach ($batches as $batch) { $this->executeBatch($repo, $batch, $cleanupPromises, $devMode, $runScripts, $allOperations); } } /** * @param array $operations List of operations to execute in this batch * @param array $allOperations Complete list of operations to be executed in the install job, used for event listeners */ private function executeBatch(RepositoryInterface $repo, array $operations, array $cleanupPromises, $devMode, $runScripts, array $allOperations) { $promises = array(); $postExecCallbacks = array(); foreach ($operations as $index => $operation) { $opType = $operation->getOperationType(); // ignoring alias ops as they don't need to execute anything if (!in_array($opType, array('update', 'install', 'uninstall'))) { // output alias ops in debug verbosity as they have no output otherwise if ($this->io->isDebug()) { $this->io->writeError(' - ' . $operation->show(false)); } $this->$opType($repo, $operation); continue; } if ($opType === 'update') { $package = $operation->getTargetPackage(); $initialPackage = $operation->getInitialPackage(); } else { $package = $operation->getPackage(); $initialPackage = null; } $installer = $this->getInstaller($package->getType()); $event = 'Composer\Installer\PackageEvents::PRE_PACKAGE_'.strtoupper($opType); if (defined($event) && $runScripts && $this->eventDispatcher) { $this->eventDispatcher->dispatchPackageEvent(constant($event), $devMode, $repo, $allOperations, $operation); } $dispatcher = $this->eventDispatcher; $installManager = $this; $io = $this->io; $promise = $installer->prepare($opType, $package, $initialPackage); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $promise = $promise->then(function () use ($opType, $installManager, $repo, $operation) { return $installManager->$opType($repo, $operation); })->then($cleanupPromises[$index]) ->then(function () use ($installManager, $devMode, $repo) { $repo->write($devMode, $installManager); }, function ($e) use ($opType, $package, $io) { $io->writeError(' ' . ucfirst($opType) .' of '.$package->getPrettyName().' failed'); throw $e; }); $postExecCallbacks[] = function () use ($opType, $runScripts, $dispatcher, $devMode, $repo, $allOperations, $operation) { $event = 'Composer\Installer\PackageEvents::POST_PACKAGE_'.strtoupper($opType); if (defined($event) && $runScripts && $dispatcher) { $dispatcher->dispatchPackageEvent(constant($event), $devMode, $repo, $allOperations, $operation); } }; $promises[] = $promise; } // execute all prepare => installs/updates/removes => cleanup steps if (count($promises)) { $this->waitOnPromises($promises); } Platform::workaroundFilesystemIssues(); foreach ($postExecCallbacks as $cb) { $cb(); } } private function waitOnPromises(array $promises) { $progress = null; if ($this->outputProgress && $this->io instanceof ConsoleIO && !$this->io->isDebug() && count($promises) > 1) { $progress = $this->io->getProgressBar(); } $this->loop->wait($promises, $progress); if ($progress) { $progress->clear(); } } /** * Executes install operation. * * @param RepositoryInterface $repo repository in which to check * @param InstallOperation $operation operation instance */ public function install(RepositoryInterface $repo, InstallOperation $operation) { $package = $operation->getPackage(); $installer = $this->getInstaller($package->getType()); $promise = $installer->install($repo, $package); $this->markForNotification($package); return $promise; } /** * Executes update operation. * * @param RepositoryInterface $repo repository in which to check * @param UpdateOperation $operation operation instance */ public function update(RepositoryInterface $repo, UpdateOperation $operation) { $initial = $operation->getInitialPackage(); $target = $operation->getTargetPackage(); $initialType = $initial->getType(); $targetType = $target->getType(); if ($initialType === $targetType) { $installer = $this->getInstaller($initialType); $promise = $installer->update($repo, $initial, $target); $this->markForNotification($target); } else { $promise = $this->getInstaller($initialType)->uninstall($repo, $initial); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $installer = $this->getInstaller($targetType); $promise->then(function () use ($installer, $repo, $target) { return $installer->install($repo, $target); }); } return $promise; } /** * Uninstalls package. * * @param RepositoryInterface $repo repository in which to check * @param UninstallOperation $operation operation instance */ public function uninstall(RepositoryInterface $repo, UninstallOperation $operation) { $package = $operation->getPackage(); $installer = $this->getInstaller($package->getType()); return $installer->uninstall($repo, $package); } /** * Executes markAliasInstalled operation. * * @param RepositoryInterface $repo repository in which to check * @param MarkAliasInstalledOperation $operation operation instance */ public function markAliasInstalled(RepositoryInterface $repo, MarkAliasInstalledOperation $operation) { $package = $operation->getPackage(); if (!$repo->hasPackage($package)) { $repo->addPackage(clone $package); } } /** * Executes markAlias operation. * * @param RepositoryInterface $repo repository in which to check * @param MarkAliasUninstalledOperation $operation operation instance */ public function markAliasUninstalled(RepositoryInterface $repo, MarkAliasUninstalledOperation $operation) { $package = $operation->getPackage(); $repo->removePackage($package); } /** * Returns the installation path of a package * * @param PackageInterface $package * @return string path */ public function getInstallPath(PackageInterface $package) { $installer = $this->getInstaller($package->getType()); return $installer->getInstallPath($package); } public function setOutputProgress($outputProgress) { $this->outputProgress = $outputProgress; } public function notifyInstalls(IOInterface $io) { $promises = array(); try { foreach ($this->notifiablePackages as $repoUrl => $packages) { // non-batch API, deprecated if (strpos($repoUrl, '%package%')) { foreach ($packages as $package) { $url = str_replace('%package%', $package->getPrettyName(), $repoUrl); $params = array( 'version' => $package->getPrettyVersion(), 'version_normalized' => $package->getVersion(), ); $opts = array( 'retry-auth-failure' => false, 'http' => array( 'method' => 'POST', 'header' => array('Content-type: application/x-www-form-urlencoded'), 'content' => http_build_query($params, '', '&'), 'timeout' => 3, ), ); $promises[] = $this->loop->getHttpDownloader()->add($url, $opts); } continue; } $postData = array('downloads' => array()); foreach ($packages as $package) { $postData['downloads'][] = array( 'name' => $package->getPrettyName(), 'version' => $package->getVersion(), ); } $opts = array( 'retry-auth-failure' => false, 'http' => array( 'method' => 'POST', 'header' => array('Content-Type: application/json'), 'content' => json_encode($postData), 'timeout' => 6, ), ); $promises[] = $this->loop->getHttpDownloader()->add($repoUrl, $opts); } $this->loop->wait($promises); } catch (\Exception $e) { } $this->reset(); } private function markForNotification(PackageInterface $package) { if ($package->getNotificationUrl()) { $this->notifiablePackages[$package->getNotificationUrl()][$package->getName()] = $package; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Composer; use Composer\IO\IOInterface; use Composer\Repository\InstalledRepositoryInterface; use Composer\Package\PackageInterface; use Composer\Util\Filesystem; use Composer\Installer\InstallationManager; use Composer\Util\Platform; use React\Promise\PromiseInterface; /** * Installer for plugin packages * * @author Jordi Boggiano * @author Nils Adermann */ class PluginInstaller extends LibraryInstaller { /** * Initializes Plugin installer. * * @param IOInterface $io * @param Composer $composer */ public function __construct(IOInterface $io, Composer $composer, Filesystem $fs = null, BinaryInstaller $binaryInstaller = null) { parent::__construct($io, $composer, 'composer-plugin', $fs, $binaryInstaller); } /** * {@inheritDoc} */ public function supports($packageType) { return $packageType === 'composer-plugin' || $packageType === 'composer-installer'; } /** * {@inheritDoc} */ public function download(PackageInterface $package, PackageInterface $prevPackage = null) { $extra = $package->getExtra(); if (empty($extra['class'])) { throw new \UnexpectedValueException('Error while installing '.$package->getPrettyName().', composer-plugin packages should have a class defined in their extra key to be usable.'); } return parent::download($package, $prevPackage); } /** * {@inheritDoc} */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { $promise = parent::install($repo, $package); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $pluginManager = $this->composer->getPluginManager(); $self = $this; return $promise->then(function () use ($self, $pluginManager, $package, $repo) { try { Platform::workaroundFilesystemIssues(); $pluginManager->registerPackage($package, true); } catch (\Exception $e) { $self->rollbackInstall($e, $repo, $package); } }); } /** * {@inheritDoc} */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { $promise = parent::update($repo, $initial, $target); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $pluginManager = $this->composer->getPluginManager(); $self = $this; return $promise->then(function () use ($self, $pluginManager, $initial, $target, $repo) { try { Platform::workaroundFilesystemIssues(); $pluginManager->deactivatePackage($initial, true); $pluginManager->registerPackage($target, true); } catch (\Exception $e) { $self->rollbackInstall($e, $repo, $target); } }); } public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { $this->composer->getPluginManager()->uninstallPackage($package, true); return parent::uninstall($repo, $package); } /** * TODO v3 should make this private once we can drop PHP 5.3 support * @private */ public function rollbackInstall(\Exception $e, InstalledRepositoryInterface $repo, PackageInterface $package) { $this->io->writeError('Plugin initialization failed ('.$e->getMessage().'), uninstalling plugin'); parent::uninstall($repo, $package); throw $e; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Composer; use Composer\IO\IOInterface; use Composer\DependencyResolver\Operation\OperationInterface; use Composer\Repository\RepositoryInterface; use Composer\EventDispatcher\Event; /** * The Package Event. * * @author Jordi Boggiano */ class PackageEvent extends Event { /** * @var Composer */ private $composer; /** * @var IOInterface */ private $io; /** * @var bool */ private $devMode; /** * @var RepositoryInterface */ private $localRepo; /** * @var OperationInterface[] */ private $operations; /** * @var OperationInterface The operation instance which is being executed */ private $operation; /** * Constructor. * * @param string $eventName * @param Composer $composer * @param IOInterface $io * @param bool $devMode * @param RepositoryInterface $localRepo * @param OperationInterface[] $operations * @param OperationInterface $operation */ public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, RepositoryInterface $localRepo, array $operations, OperationInterface $operation) { parent::__construct($eventName); $this->composer = $composer; $this->io = $io; $this->devMode = $devMode; $this->localRepo = $localRepo; $this->operations = $operations; $this->operation = $operation; } /** * @return Composer */ public function getComposer() { return $this->composer; } /** * @return IOInterface */ public function getIO() { return $this->io; } /** * @return bool */ public function isDevMode() { return $this->devMode; } /** * @return RepositoryInterface */ public function getLocalRepo() { return $this->localRepo; } /** * @return OperationInterface[] */ public function getOperations() { return $this->operations; } /** * Returns the package instance. * * @return OperationInterface */ public function getOperation() { return $this->operation; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Package\PackageInterface; use Composer\Downloader\DownloadManager; use Composer\Repository\InstalledRepositoryInterface; use Composer\Util\Filesystem; /** * Project Installer is used to install a single package into a directory as * root project. * * @author Benjamin Eberlei */ class ProjectInstaller implements InstallerInterface { private $installPath; private $downloadManager; private $filesystem; public function __construct($installPath, DownloadManager $dm, Filesystem $fs) { $this->installPath = rtrim(strtr($installPath, '\\', '/'), '/').'/'; $this->downloadManager = $dm; $this->filesystem = $fs; } /** * Decides if the installer supports the given type * * @param string $packageType * @return bool */ public function supports($packageType) { return true; } /** * {@inheritDoc} */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { return false; } /** * {@inheritDoc} */ public function download(PackageInterface $package, PackageInterface $prevPackage = null) { $installPath = $this->installPath; if (file_exists($installPath) && !$this->filesystem->isDirEmpty($installPath)) { throw new \InvalidArgumentException("Project directory $installPath is not empty."); } if (!is_dir($installPath)) { mkdir($installPath, 0777, true); } return $this->downloadManager->download($package, $installPath, $prevPackage); } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, PackageInterface $prevPackage = null) { return $this->downloadManager->prepare($type, $package, $this->installPath, $prevPackage); } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, PackageInterface $prevPackage = null) { return $this->downloadManager->cleanup($type, $package, $this->installPath, $prevPackage); } /** * {@inheritDoc} */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { return $this->downloadManager->install($package, $this->installPath); } /** * {@inheritDoc} */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { throw new \InvalidArgumentException("not supported"); } /** * {@inheritDoc} */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { throw new \InvalidArgumentException("not supported"); } /** * Returns the installation path of a package * * @param PackageInterface $package * @return string path */ public function getInstallPath(PackageInterface $package) { return $this->installPath; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\IO\IOInterface; use Composer\Package\PackageInterface; use Composer\Util\Filesystem; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Composer\Util\Silencer; /** * Utility to handle installation of package "bin"/binaries * * @author Jordi Boggiano * @author Konstantin Kudryashov * @author Helmut Hummel */ class BinaryInstaller { protected $binDir; protected $binCompat; protected $io; protected $filesystem; /** * @param IOInterface $io * @param string $binDir * @param string $binCompat * @param Filesystem $filesystem */ public function __construct(IOInterface $io, $binDir, $binCompat, Filesystem $filesystem = null) { $this->binDir = $binDir; $this->binCompat = $binCompat; $this->io = $io; $this->filesystem = $filesystem ?: new Filesystem(); } public function installBinaries(PackageInterface $package, $installPath, $warnOnOverwrite = true) { $binaries = $this->getBinaries($package); if (!$binaries) { return; } foreach ($binaries as $bin) { $binPath = $installPath.'/'.$bin; if (!file_exists($binPath)) { $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': file not found in package'); continue; } // in case a custom installer returned a relative path for the // $package, we can now safely turn it into a absolute path (as we // already checked the binary's existence). The following helpers // will require absolute paths to work properly. $binPath = realpath($binPath); $this->initializeBinDir(); $link = $this->binDir.'/'.basename($bin); if (file_exists($link)) { if (is_link($link)) { // likely leftover from a previous install, make sure // that the target is still executable in case this // is a fresh install of the vendor. Silencer::call('chmod', $link, 0777 & ~umask()); } if ($warnOnOverwrite) { $this->io->writeError(' Skipped installation of bin '.$bin.' for package '.$package->getName().': name conflicts with an existing file'); } continue; } if ($this->binCompat === "auto") { if (Platform::isWindows()) { $this->installFullBinaries($binPath, $link, $bin, $package); } else { $this->installSymlinkBinaries($binPath, $link); } } elseif ($this->binCompat === "full") { $this->installFullBinaries($binPath, $link, $bin, $package); } Silencer::call('chmod', $link, 0777 & ~umask()); } } public function removeBinaries(PackageInterface $package) { $this->initializeBinDir(); $binaries = $this->getBinaries($package); if (!$binaries) { return; } foreach ($binaries as $bin) { $link = $this->binDir.'/'.basename($bin); if (is_link($link) || file_exists($link)) { $this->filesystem->unlink($link); } if (file_exists($link.'.bat')) { $this->filesystem->unlink($link.'.bat'); } } // attempt removing the bin dir in case it is left empty if (is_dir($this->binDir) && $this->filesystem->isDirEmpty($this->binDir)) { Silencer::call('rmdir', $this->binDir); } } public static function determineBinaryCaller($bin) { if ('.bat' === substr($bin, -4) || '.exe' === substr($bin, -4)) { return 'call'; } $handle = fopen($bin, 'r'); $line = fgets($handle); fclose($handle); if (preg_match('{^#!/(?:usr/bin/env )?(?:[^/]+/)*(.+)$}m', $line, $match)) { return trim($match[1]); } return 'php'; } protected function getBinaries(PackageInterface $package) { return $package->getBinaries(); } protected function installFullBinaries($binPath, $link, $bin, PackageInterface $package) { // add unixy support for cygwin and similar environments if ('.bat' !== substr($binPath, -4)) { $this->installUnixyProxyBinaries($binPath, $link); @chmod($link, 0777 & ~umask()); $link .= '.bat'; if (file_exists($link)) { $this->io->writeError(' Skipped installation of bin '.$bin.'.bat proxy for package '.$package->getName().': a .bat proxy was already installed'); } } if (!file_exists($link)) { file_put_contents($link, $this->generateWindowsProxyCode($binPath, $link)); } } protected function installSymlinkBinaries($binPath, $link) { if (!$this->filesystem->relativeSymlink($binPath, $link)) { $this->installUnixyProxyBinaries($binPath, $link); } } protected function installUnixyProxyBinaries($binPath, $link) { file_put_contents($link, $this->generateUnixyProxyCode($binPath, $link)); } protected function initializeBinDir() { $this->filesystem->ensureDirectoryExists($this->binDir); $this->binDir = realpath($this->binDir); } protected function generateWindowsProxyCode($bin, $link) { $binPath = $this->filesystem->findShortestPath($link, $bin); $caller = self::determineBinaryCaller($bin); return "@ECHO OFF\r\n". "setlocal DISABLEDELAYEDEXPANSION\r\n". "SET BIN_TARGET=%~dp0/".trim(ProcessExecutor::escape($binPath), '"\'')."\r\n". "{$caller} \"%BIN_TARGET%\" %*\r\n"; } protected function generateUnixyProxyCode($bin, $link) { $binPath = $this->filesystem->findShortestPath($link, $bin); $binDir = ProcessExecutor::escape(dirname($binPath)); $binFile = basename($binPath); $binContents = file_get_contents($bin); // For php files, we generate a PHP proxy instead of a shell one, // which allows calling the proxy with a custom php process if (preg_match('{^(?:#!(?:/usr)?/bin/env php|#!(?:/usr)?/bin/php| var_export(\$binPath, true), '__DIR__' => var_export(dirname(\$binPath), true), )); eval(\$contents); exit(0); } include \$binPath; PROXY; } } $proxyCode = << /dev/null; cd $binDir && pwd) if [ -d /proc/cygdrive ]; then case \$(which php) in \$(readlink -n /proc/cygdrive)/*) # We are in Cygwin using Windows php, so the path must be translated dir=\$(cygpath -m "\$dir"); ;; esac fi "\${dir}/$binFile" "\$@" PROXY; return $proxyCode; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; /** * Package Events. * * @author Jordi Boggiano */ class PackageEvents { /** * The PRE_PACKAGE_INSTALL event occurs before a package is installed. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const PRE_PACKAGE_INSTALL = 'pre-package-install'; /** * The POST_PACKAGE_INSTALL event occurs after a package is installed. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const POST_PACKAGE_INSTALL = 'post-package-install'; /** * The PRE_PACKAGE_UPDATE event occurs before a package is updated. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const PRE_PACKAGE_UPDATE = 'pre-package-update'; /** * The POST_PACKAGE_UPDATE event occurs after a package is updated. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const POST_PACKAGE_UPDATE = 'post-package-update'; /** * The PRE_PACKAGE_UNINSTALL event occurs before a package has been uninstalled. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const PRE_PACKAGE_UNINSTALL = 'pre-package-uninstall'; /** * The POST_PACKAGE_UNINSTALL event occurs after a package has been uninstalled. * * The event listener method receives a Composer\Installer\PackageEvent instance. * * @var string */ const POST_PACKAGE_UNINSTALL = 'post-package-uninstall'; } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Composer; use Composer\IO\IOInterface; use Composer\Repository\InstalledRepositoryInterface; use Composer\Package\PackageInterface; use Composer\Util\Filesystem; use Composer\Util\Silencer; use Composer\Util\Platform; use React\Promise\PromiseInterface; /** * Package installation manager. * * @author Jordi Boggiano * @author Konstantin Kudryashov */ class LibraryInstaller implements InstallerInterface, BinaryPresenceInterface { protected $composer; protected $vendorDir; protected $binDir; protected $downloadManager; protected $io; protected $type; protected $filesystem; protected $binCompat; protected $binaryInstaller; /** * Initializes library installer. * * @param IOInterface $io * @param Composer $composer * @param string|null $type * @param Filesystem $filesystem * @param BinaryInstaller $binaryInstaller */ public function __construct(IOInterface $io, Composer $composer, $type = 'library', Filesystem $filesystem = null, BinaryInstaller $binaryInstaller = null) { $this->composer = $composer; $this->downloadManager = $composer->getDownloadManager(); $this->io = $io; $this->type = $type; $this->filesystem = $filesystem ?: new Filesystem(); $this->vendorDir = rtrim($composer->getConfig()->get('vendor-dir'), '/'); $this->binaryInstaller = $binaryInstaller ?: new BinaryInstaller($this->io, rtrim($composer->getConfig()->get('bin-dir'), '/'), $composer->getConfig()->get('bin-compat'), $this->filesystem); } /** * {@inheritDoc} */ public function supports($packageType) { return $packageType === $this->type || null === $this->type; } /** * {@inheritDoc} */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { return false; } $installPath = $this->getInstallPath($package); if (is_readable($installPath)) { return true; } return (Platform::isWindows() && $this->filesystem->isJunction($installPath)) || is_link($installPath); } /** * {@inheritDoc} */ public function download(PackageInterface $package, PackageInterface $prevPackage = null) { $this->initializeVendorDir(); $downloadPath = $this->getInstallPath($package); return $this->downloadManager->download($package, $downloadPath, $prevPackage); } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, PackageInterface $prevPackage = null) { $this->initializeVendorDir(); $downloadPath = $this->getInstallPath($package); return $this->downloadManager->prepare($type, $package, $downloadPath, $prevPackage); } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, PackageInterface $prevPackage = null) { $this->initializeVendorDir(); $downloadPath = $this->getInstallPath($package); return $this->downloadManager->cleanup($type, $package, $downloadPath, $prevPackage); } /** * {@inheritDoc} */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { $this->initializeVendorDir(); $downloadPath = $this->getInstallPath($package); // remove the binaries if it appears the package files are missing if (!is_readable($downloadPath) && $repo->hasPackage($package)) { $this->binaryInstaller->removeBinaries($package); } $promise = $this->installCode($package); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $binaryInstaller = $this->binaryInstaller; $installPath = $this->getInstallPath($package); return $promise->then(function () use ($binaryInstaller, $installPath, $package, $repo) { $binaryInstaller->installBinaries($package, $installPath); if (!$repo->hasPackage($package)) { $repo->addPackage(clone $package); } }); } /** * {@inheritDoc} */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { if (!$repo->hasPackage($initial)) { throw new \InvalidArgumentException('Package is not installed: '.$initial); } $this->initializeVendorDir(); $this->binaryInstaller->removeBinaries($initial); $promise = $this->updateCode($initial, $target); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $binaryInstaller = $this->binaryInstaller; $installPath = $this->getInstallPath($target); return $promise->then(function () use ($binaryInstaller, $installPath, $target, $initial, $repo) { $binaryInstaller->installBinaries($target, $installPath); $repo->removePackage($initial); if (!$repo->hasPackage($target)) { $repo->addPackage(clone $target); } }); } /** * {@inheritDoc} */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { throw new \InvalidArgumentException('Package is not installed: '.$package); } $promise = $this->removeCode($package); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $binaryInstaller = $this->binaryInstaller; $downloadPath = $this->getPackageBasePath($package); $filesystem = $this->filesystem; return $promise->then(function () use ($binaryInstaller, $filesystem, $downloadPath, $package, $repo) { $binaryInstaller->removeBinaries($package); $repo->removePackage($package); if (strpos($package->getName(), '/')) { $packageVendorDir = dirname($downloadPath); if (is_dir($packageVendorDir) && $filesystem->isDirEmpty($packageVendorDir)) { Silencer::call('rmdir', $packageVendorDir); } } }); } /** * {@inheritDoc} */ public function getInstallPath(PackageInterface $package) { $this->initializeVendorDir(); $basePath = ($this->vendorDir ? $this->vendorDir.'/' : '') . $package->getPrettyName(); $targetDir = $package->getTargetDir(); return $basePath . ($targetDir ? '/'.$targetDir : ''); } /** * Make sure binaries are installed for a given package. * * @param PackageInterface $package Package instance */ public function ensureBinariesPresence(PackageInterface $package) { $this->binaryInstaller->installBinaries($package, $this->getInstallPath($package), false); } /** * Returns the base path of the package without target-dir path * * It is used for BC as getInstallPath tends to be overridden by * installer plugins but not getPackageBasePath * * @param PackageInterface $package * @return string */ protected function getPackageBasePath(PackageInterface $package) { $installPath = $this->getInstallPath($package); $targetDir = $package->getTargetDir(); if ($targetDir) { return preg_replace('{/*'.str_replace('/', '/+', preg_quote($targetDir)).'/?$}', '', $installPath); } return $installPath; } protected function installCode(PackageInterface $package) { $downloadPath = $this->getInstallPath($package); return $this->downloadManager->install($package, $downloadPath); } protected function updateCode(PackageInterface $initial, PackageInterface $target) { $initialDownloadPath = $this->getInstallPath($initial); $targetDownloadPath = $this->getInstallPath($target); if ($targetDownloadPath !== $initialDownloadPath) { // if the target and initial dirs intersect, we force a remove + install // to avoid the rename wiping the target dir as part of the initial dir cleanup if (strpos($initialDownloadPath, $targetDownloadPath) === 0 || strpos($targetDownloadPath, $initialDownloadPath) === 0 ) { $promise = $this->removeCode($initial); if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $self = $this; return $promise->then(function () use ($self, $target) { $reflMethod = new \ReflectionMethod($self, 'installCode'); $reflMethod->setAccessible(true); // equivalent of $this->installCode($target) with php 5.3 support // TODO remove this once 5.3 support is dropped return $reflMethod->invoke($self, $target); }); } $this->filesystem->rename($initialDownloadPath, $targetDownloadPath); } return $this->downloadManager->update($initial, $target, $targetDownloadPath); } protected function removeCode(PackageInterface $package) { $downloadPath = $this->getPackageBasePath($package); return $this->downloadManager->remove($package, $downloadPath); } protected function initializeVendorDir() { $this->filesystem->ensureDirectoryExists($this->vendorDir); $this->vendorDir = realpath($this->vendorDir); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\IO\IOInterface; use Composer\Package\PackageInterface; use Composer\Repository\InstalledRepository; use Symfony\Component\Console\Formatter\OutputFormatter; /** * Add suggested packages from different places to output them in the end. * * @author Haralan Dobrev */ class SuggestedPackagesReporter { const MODE_LIST = 1; const MODE_BY_PACKAGE = 2; const MODE_BY_SUGGESTION = 4; /** * @var array */ protected $suggestedPackages = array(); /** * @var IOInterface */ private $io; public function __construct(IOInterface $io) { $this->io = $io; } /** * @return array Suggested packages with source, target and reason keys. */ public function getPackages() { return $this->suggestedPackages; } /** * Add suggested packages to be listed after install * * Could be used to add suggested packages both from the installer * or from CreateProjectCommand. * * @param string $source Source package which made the suggestion * @param string $target Target package to be suggested * @param string $reason Reason the target package to be suggested * @return SuggestedPackagesReporter */ public function addPackage($source, $target, $reason) { $this->suggestedPackages[] = array( 'source' => $source, 'target' => $target, 'reason' => $reason, ); return $this; } /** * Add all suggestions from a package. * * @param PackageInterface $package * @return SuggestedPackagesReporter */ public function addSuggestionsFromPackage(PackageInterface $package) { $source = $package->getPrettyName(); foreach ($package->getSuggests() as $target => $reason) { $this->addPackage( $source, $target, $reason ); } return $this; } /** * Output suggested packages. * * Do not list the ones already installed if installed repository provided. * * @param int $mode One of the MODE_* constants from this class * @param InstalledRepository|null $installedRepo If passed in, suggested packages which are installed already will be skipped * @param PackageInterface|null $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown * @return SuggestedPackagesReporter */ public function output($mode, InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null) { $suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); $suggesters = array(); $suggested = array(); foreach ($suggestedPackages as $suggestion) { $suggesters[$suggestion['source']][$suggestion['target']] = $suggestion['reason']; $suggested[$suggestion['target']][$suggestion['source']] = $suggestion['reason']; } ksort($suggesters); ksort($suggested); // Simple mode if ($mode & self::MODE_LIST) { foreach (array_keys($suggested) as $name) { $this->io->write(sprintf('%s', $name)); } return 0; } // Grouped by package if ($mode & self::MODE_BY_PACKAGE) { foreach ($suggesters as $suggester => $suggestions) { $this->io->write(sprintf('%s suggests:', $suggester)); foreach ($suggestions as $suggestion => $reason) { $this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggestion, $this->escapeOutput($reason))); } $this->io->write(''); } } // Grouped by suggestion if ($mode & self::MODE_BY_SUGGESTION) { // Improve readability in full mode if ($mode & self::MODE_BY_PACKAGE) { $this->io->write(str_repeat('-', 78)); } foreach ($suggested as $suggestion => $suggesters) { $this->io->write(sprintf('%s is suggested by:', $suggestion)); foreach ($suggesters as $suggester => $reason) { $this->io->write(sprintf(' - %s' . ($reason ? ': %s' : ''), $suggester, $this->escapeOutput($reason))); } $this->io->write(''); } } if ($onlyDependentsOf) { $allSuggestedPackages = $this->getFilteredSuggestions($installedRepo); $diff = count($allSuggestedPackages) - count($suggestedPackages); if ($diff) { $this->io->write(''.$diff.' additional suggestions by transitive dependencies can be shown with --all'); } } return $this; } /** * Output number of new suggested packages and a hint to use suggest command. * * @param InstalledRepository|null $installedRepo If passed in, suggested packages which are installed already will be skipped * @param PackageInterface|null $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown * @return SuggestedPackagesReporter */ public function outputMinimalistic(InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null) { $suggestedPackages = $this->getFilteredSuggestions($installedRepo, $onlyDependentsOf); if ($suggestedPackages) { $this->io->writeError(''.count($suggestedPackages).' package suggestions were added by new dependencies, use `composer suggest` to see details.'); } return $this; } /** * @param InstalledRepository|null $installedRepo If passed in, suggested packages which are installed already will be skipped * @param PackageInterface|null $onlyDependentsOf If passed in, only the suggestions from direct dependents of that package, or from the package itself, will be shown * @return array[] */ private function getFilteredSuggestions(InstalledRepository $installedRepo = null, PackageInterface $onlyDependentsOf = null) { $suggestedPackages = $this->getPackages(); $installedNames = array(); if (null !== $installedRepo && !empty($suggestedPackages)) { foreach ($installedRepo->getPackages() as $package) { $installedNames = array_merge( $installedNames, $package->getNames() ); } } $sourceFilter = array(); if ($onlyDependentsOf) { $sourceFilter = array_map(function ($link) { return $link->getTarget(); }, array_merge($onlyDependentsOf->getRequires(), $onlyDependentsOf->getDevRequires())); $sourceFilter[] = $onlyDependentsOf->getName(); } $suggestions = array(); foreach ($suggestedPackages as $suggestion) { if (in_array($suggestion['target'], $installedNames) || ($sourceFilter && !in_array($suggestion['source'], $sourceFilter))) { continue; } $suggestions[] = $suggestion; } return $suggestions; } /** * @param string $string * @return string */ private function escapeOutput($string) { return OutputFormatter::escape( $this->removeControlCharacters($string) ); } /** * @param string $string * @return string */ private function removeControlCharacters($string) { return preg_replace( '/[[:cntrl:]]/', '', str_replace("\n", ' ', $string) ); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Repository\InstalledRepositoryInterface; use Composer\Package\PackageInterface; /** * Does not install anything but marks packages installed in the repo * * Useful for dry runs * * @author Jordi Boggiano */ class NoopInstaller implements InstallerInterface { /** * {@inheritDoc} */ public function supports($packageType) { return true; } /** * {@inheritDoc} */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { return $repo->hasPackage($package); } /** * {@inheritDoc} */ public function download(PackageInterface $package, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { $repo->addPackage(clone $package); } } /** * {@inheritDoc} */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { if (!$repo->hasPackage($initial)) { throw new \InvalidArgumentException('Package is not installed: '.$initial); } $repo->removePackage($initial); if (!$repo->hasPackage($target)) { $repo->addPackage(clone $target); } } /** * {@inheritDoc} */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { throw new \InvalidArgumentException('Package is not installed: '.$package); } $repo->removePackage($package); } /** * {@inheritDoc} */ public function getInstallPath(PackageInterface $package) { $targetDir = $package->getTargetDir(); return $package->getPrettyName() . ($targetDir ? '/'.$targetDir : ''); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Package\PackageInterface; use Composer\Repository\InstalledRepositoryInterface; use InvalidArgumentException; use React\Promise\PromiseInterface; /** * Interface for the package installation manager. * * @author Konstantin Kudryashov * @author Jordi Boggiano */ interface InstallerInterface { /** * Decides if the installer supports the given type * * @param string $packageType * @return bool */ public function supports($packageType); /** * Checks that provided package is installed. * * @param InstalledRepositoryInterface $repo repository in which to check * @param PackageInterface $package package instance * * @return bool */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package); /** * Downloads the files needed to later install the given package. * * @param PackageInterface $package package instance * @param PackageInterface $prevPackage previous package instance in case of an update * @return PromiseInterface|null */ public function download(PackageInterface $package, PackageInterface $prevPackage = null); /** * Do anything that needs to be done between all downloads have been completed and the actual operation is executed * * All packages get first downloaded, then all together prepared, then all together installed/updated/uninstalled. Therefore * for error recovery it is important to avoid failing during install/update/uninstall as much as possible, and risky things or * user prompts should happen in the prepare step rather. In case of failure, cleanup() will be called so that changes can * be undone as much as possible. * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param PackageInterface $prevPackage previous package instance in case of an update * @return PromiseInterface|null */ public function prepare($type, PackageInterface $package, PackageInterface $prevPackage = null); /** * Installs specific package. * * @param InstalledRepositoryInterface $repo repository in which to check * @param PackageInterface $package package instance * @return PromiseInterface|null */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package); /** * Updates specific package. * * @param InstalledRepositoryInterface $repo repository in which to check * @param PackageInterface $initial already installed package version * @param PackageInterface $target updated version * @throws InvalidArgumentException if $initial package is not installed * @return PromiseInterface|null */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target); /** * Uninstalls specific package. * * @param InstalledRepositoryInterface $repo repository in which to check * @param PackageInterface $package package instance * @return PromiseInterface|null */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package); /** * Do anything to cleanup changes applied in the prepare or install/update/uninstall steps * * Note that cleanup will be called for all packages regardless if they failed an operation or not, to give * all installers a change to cleanup things they did previously, so you need to keep track of changes * applied in the installer/downloader themselves. * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param PackageInterface $prevPackage previous package instance in case of an update * @return PromiseInterface|null */ public function cleanup($type, PackageInterface $package, PackageInterface $prevPackage = null); /** * Returns the installation path of a package * * @param PackageInterface $package * @return string path to install to, which MUST not end with a slash */ public function getInstallPath(PackageInterface $package); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; class InstallerEvents { /** * The PRE_OPERATIONS_EXEC event occurs before the lock file gets * installed and operations are executed. * * The event listener method receives an Composer\Installer\InstallerEvent instance. * * @var string */ const PRE_OPERATIONS_EXEC = 'pre-operations-exec'; } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Repository\InstalledRepositoryInterface; use Composer\Package\PackageInterface; use Composer\IO\IOInterface; use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UninstallOperation; /** * Metapackage installation manager. * * @author Martin Hasoň */ class MetapackageInstaller implements InstallerInterface { private $io; public function __construct(IOInterface $io) { $this->io = $io; } /** * {@inheritDoc} */ public function supports($packageType) { return $packageType === 'metapackage'; } /** * {@inheritDoc} */ public function isInstalled(InstalledRepositoryInterface $repo, PackageInterface $package) { return $repo->hasPackage($package); } /** * {@inheritDoc} */ public function download(PackageInterface $package, PackageInterface $prevPackage = null) { // noop } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, PackageInterface $prevPackage = null) { // noop } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, PackageInterface $prevPackage = null) { // noop } /** * {@inheritDoc} */ public function install(InstalledRepositoryInterface $repo, PackageInterface $package) { $this->io->writeError(" - " . InstallOperation::format($package)); $repo->addPackage(clone $package); } /** * {@inheritDoc} */ public function update(InstalledRepositoryInterface $repo, PackageInterface $initial, PackageInterface $target) { if (!$repo->hasPackage($initial)) { throw new \InvalidArgumentException('Package is not installed: '.$initial); } $this->io->writeError(" - " . UpdateOperation::format($initial, $target)); $repo->removePackage($initial); $repo->addPackage(clone $target); } /** * {@inheritDoc} */ public function uninstall(InstalledRepositoryInterface $repo, PackageInterface $package) { if (!$repo->hasPackage($package)) { throw new \InvalidArgumentException('Package is not installed: '.$package); } $this->io->writeError(" - " . UninstallOperation::format($package)); $repo->removePackage($package); } /** * {@inheritDoc} */ public function getInstallPath(PackageInterface $package) { return ''; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Package\PackageInterface; /** * Interface for the package installation manager that handle binary installation. * * @author Jordi Boggiano */ interface BinaryPresenceInterface { /** * Make sure binaries are installed for a given package. * * @param PackageInterface $package package instance */ public function ensureBinariesPresence(PackageInterface $package); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Installer; use Composer\Composer; use Composer\DependencyResolver\Transaction; use Composer\EventDispatcher\Event; use Composer\IO\IOInterface; class InstallerEvent extends Event { /** * @var Composer */ private $composer; /** * @var IOInterface */ private $io; /** * @var bool */ private $devMode; /** * @var bool */ private $executeOperations; /** * @var Transaction */ private $transaction; /** * Constructor. * * @param string $eventName * @param Composer $composer * @param IOInterface $io * @param bool $devMode * @param bool $executeOperations * @param Transaction $transaction */ public function __construct($eventName, Composer $composer, IOInterface $io, $devMode, $executeOperations, Transaction $transaction) { parent::__construct($eventName); $this->composer = $composer; $this->io = $io; $this->devMode = $devMode; $this->executeOperations = $executeOperations; $this->transaction = $transaction; } /** * @return Composer */ public function getComposer() { return $this->composer; } /** * @return IOInterface */ public function getIO() { return $this->io; } /** * @return bool */ public function isDevMode() { return $this->devMode; } /** * @return bool */ public function isExecutingOperations() { return $this->executeOperations; } /** * @return Transaction|null */ public function getTransaction() { return $this->transaction; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\Package\RootPackageInterface; use Composer\Package\Locker; use Composer\Util\Loop; use Composer\Repository\RepositoryManager; use Composer\Installer\InstallationManager; use Composer\Plugin\PluginManager; use Composer\Downloader\DownloadManager; use Composer\EventDispatcher\EventDispatcher; use Composer\Autoload\AutoloadGenerator; use Composer\Package\Archiver\ArchiveManager; /** * @author Jordi Boggiano * @author Konstantin Kudryashiv * @author Nils Adermann */ class Composer { /* * Examples of the following constants in the various configurations they can be in * * releases (phar): * const VERSION = '1.8.2'; * const BRANCH_ALIAS_VERSION = ''; * const RELEASE_DATE = '2019-01-29 15:00:53'; * const SOURCE_VERSION = ''; * * snapshot builds (phar): * const VERSION = 'd3873a05650e168251067d9648845c220c50e2d7'; * const BRANCH_ALIAS_VERSION = '1.9-dev'; * const RELEASE_DATE = '2019-02-20 07:43:56'; * const SOURCE_VERSION = ''; * * source (git clone): * const VERSION = '@package_version@'; * const BRANCH_ALIAS_VERSION = '@package_branch_alias_version@'; * const RELEASE_DATE = '@release_date@'; * const SOURCE_VERSION = '1.8-dev+source'; */ const VERSION = '2.0.13'; const BRANCH_ALIAS_VERSION = ''; const RELEASE_DATE = '2021-04-27 13:11:08'; const SOURCE_VERSION = ''; /** * Version number of the internal composer-runtime-api package * * This is used to version features available to projects at runtime * like the platform-check file, the Composer\InstalledVersions class * and possibly others in the future. * * @var string */ const RUNTIME_API_VERSION = '2.0.0'; public static function getVersion() { // no replacement done, this must be a source checkout if (self::VERSION === '@package_version'.'@') { return self::SOURCE_VERSION; } // we have a branch alias and version is a commit id, this must be a snapshot build if (self::BRANCH_ALIAS_VERSION !== '' && preg_match('{^[a-f0-9]{40}$}', self::VERSION)) { return self::BRANCH_ALIAS_VERSION.'+'.self::VERSION; } return self::VERSION; } /** * @var RootPackageInterface */ private $package; /** * @var Locker */ private $locker; /** * @var Loop */ private $loop; /** * @var Repository\RepositoryManager */ private $repositoryManager; /** * @var Downloader\DownloadManager */ private $downloadManager; /** * @var Installer\InstallationManager */ private $installationManager; /** * @var Plugin\PluginManager */ private $pluginManager; /** * @var Config */ private $config; /** * @var EventDispatcher */ private $eventDispatcher; /** * @var Autoload\AutoloadGenerator */ private $autoloadGenerator; /** * @var ArchiveManager */ private $archiveManager; /** * @param RootPackageInterface $package * @return void */ public function setPackage(RootPackageInterface $package) { $this->package = $package; } /** * @return RootPackageInterface */ public function getPackage() { return $this->package; } /** * @param Config $config */ public function setConfig(Config $config) { $this->config = $config; } /** * @return Config */ public function getConfig() { return $this->config; } /** * @param Locker $locker */ public function setLocker(Locker $locker) { $this->locker = $locker; } /** * @return Locker */ public function getLocker() { return $this->locker; } /** * @param Loop $loop */ public function setLoop(Loop $loop) { $this->loop = $loop; } /** * @return Loop */ public function getLoop() { return $this->loop; } /** * @param RepositoryManager $manager */ public function setRepositoryManager(RepositoryManager $manager) { $this->repositoryManager = $manager; } /** * @return RepositoryManager */ public function getRepositoryManager() { return $this->repositoryManager; } /** * @param DownloadManager $manager */ public function setDownloadManager(DownloadManager $manager) { $this->downloadManager = $manager; } /** * @return DownloadManager */ public function getDownloadManager() { return $this->downloadManager; } /** * @param ArchiveManager $manager */ public function setArchiveManager(ArchiveManager $manager) { $this->archiveManager = $manager; } /** * @return ArchiveManager */ public function getArchiveManager() { return $this->archiveManager; } /** * @param InstallationManager $manager */ public function setInstallationManager(InstallationManager $manager) { $this->installationManager = $manager; } /** * @return InstallationManager */ public function getInstallationManager() { return $this->installationManager; } /** * @param PluginManager $manager */ public function setPluginManager(PluginManager $manager) { $this->pluginManager = $manager; } /** * @return PluginManager */ public function getPluginManager() { return $this->pluginManager; } /** * @param EventDispatcher $eventDispatcher */ public function setEventDispatcher(EventDispatcher $eventDispatcher) { $this->eventDispatcher = $eventDispatcher; } /** * @return EventDispatcher */ public function getEventDispatcher() { return $this->eventDispatcher; } /** * @param AutoloadGenerator $autoloadGenerator */ public function setAutoloadGenerator(AutoloadGenerator $autoloadGenerator) { $this->autoloadGenerator = $autoloadGenerator; } /** * @return AutoloadGenerator */ public function getAutoloadGenerator() { return $this->autoloadGenerator; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use React\Promise\PromiseInterface; /** * Downloader interface. * * @author Konstantin Kudryashov * @author Jordi Boggiano */ interface DownloaderInterface { /** * Returns installation source (either source or dist). * * @return string "source" or "dist" */ public function getInstallationSource(); /** * This should do any network-related tasks to prepare for an upcoming install/update * * @return PromiseInterface|null */ public function download(PackageInterface $package, $path, PackageInterface $prevPackage = null); /** * Do anything that needs to be done between all downloads have been completed and the actual operation is executed * * All packages get first downloaded, then all together prepared, then all together installed/updated/uninstalled. Therefore * for error recovery it is important to avoid failing during install/update/uninstall as much as possible, and risky things or * user prompts should happen in the prepare step rather. In case of failure, cleanup() will be called so that changes can * be undone as much as possible. * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param string $path download path * @param PackageInterface $prevPackage previous package instance in case of an update * @return PromiseInterface|null */ public function prepare($type, PackageInterface $package, $path, PackageInterface $prevPackage = null); /** * Installs specific package into specific folder. * * @param PackageInterface $package package instance * @param string $path download path */ public function install(PackageInterface $package, $path); /** * Updates specific package in specific folder from initial to target version. * * @param PackageInterface $initial initial package * @param PackageInterface $target updated package * @param string $path download path */ public function update(PackageInterface $initial, PackageInterface $target, $path); /** * Removes specific package from specific folder. * * @param PackageInterface $package package instance * @param string $path download path */ public function remove(PackageInterface $package, $path); /** * Do anything to cleanup changes applied in the prepare or install/update/uninstall steps * * Note that cleanup will be called for all packages, either after install/update/uninstall is complete, * or if any package failed any operation. This is to give all installers a change to cleanup things * they did previously, so you need to keep track of changes applied in the installer/downloader themselves. * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param string $path download path * @param PackageInterface $prevPackage previous package instance in case of an update * @return PromiseInterface|null */ public function cleanup($type, PackageInterface $package, $path, PackageInterface $prevPackage = null); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Util\IniHelper; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Composer\Package\PackageInterface; use RarArchive; /** * RAR archive downloader. * * Based on previous work by Jordi Boggiano ({@see ZipDownloader}). * * @author Derrick Nelson */ class RarDownloader extends ArchiveDownloader { protected function extract(PackageInterface $package, $file, $path) { $processError = null; // Try to use unrar on *nix if (!Platform::isWindows()) { $command = 'unrar x -- ' . ProcessExecutor::escape($file) . ' ' . ProcessExecutor::escape($path) . ' >/dev/null && chmod -R u+w ' . ProcessExecutor::escape($path); if (0 === $this->process->execute($command, $ignoredOutput)) { return; } $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); } if (!class_exists('RarArchive')) { // php.ini path is added to the error message to help users find the correct file $iniMessage = IniHelper::getMessage(); $error = "Could not decompress the archive, enable the PHP rar extension or install unrar.\n" . $iniMessage . "\n" . $processError; if (!Platform::isWindows()) { $error = "Could not decompress the archive, enable the PHP rar extension.\n" . $iniMessage; } throw new \RuntimeException($error); } $rarArchive = RarArchive::open($file); if (false === $rarArchive) { throw new \UnexpectedValueException('Could not open RAR archive: ' . $file); } $entries = $rarArchive->getEntries(); if (false === $entries) { throw new \RuntimeException('Could not retrieve RAR archive entries'); } foreach ($entries as $entry) { if (false === $entry->extract($path)) { throw new \RuntimeException('Could not extract entry'); } } $rarArchive->close(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; /** * Downloader for tar files: tar, tar.gz or tar.bz2 * * @author Kirill chEbba Chebunin */ class TarDownloader extends ArchiveDownloader { /** * {@inheritDoc} */ protected function extract(PackageInterface $package, $file, $path) { // Can throw an UnexpectedValueException $archive = new \PharData($file); $archive->extractTo($path, null, true); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Repository\VcsRepository; use Composer\Util\Perforce; /** * @author Matt Whittom */ class PerforceDownloader extends VcsDownloader { /** @var Perforce */ protected $perforce; /** * {@inheritDoc} */ protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ public function doInstall(PackageInterface $package, $path, $url) { $ref = $package->getSourceReference(); $label = $this->getLabelFromSourceReference($ref); $this->io->writeError('Cloning ' . $ref); $this->initPerforce($package, $path, $url); $this->perforce->setStream($ref); $this->perforce->p4Login(); $this->perforce->writeP4ClientSpec(); $this->perforce->connectClient(); $this->perforce->syncCodeBase($label); $this->perforce->cleanupClientSpec(); } private function getLabelFromSourceReference($ref) { $pos = strpos($ref, '@'); if (false !== $pos) { return substr($ref, $pos + 1); } return null; } public function initPerforce(PackageInterface $package, $path, $url) { if (!empty($this->perforce)) { $this->perforce->initializePath($path); return; } $repository = $package->getRepository(); $repoConfig = null; if ($repository instanceof VcsRepository) { $repoConfig = $this->getRepoConfig($repository); } $this->perforce = Perforce::create($repoConfig, $url, $path, $this->process, $this->io); } private function getRepoConfig(VcsRepository $repository) { return $repository->getRepoConfig(); } /** * {@inheritDoc} */ protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) { $this->doInstall($target, $path, $url); } /** * {@inheritDoc} */ public function getLocalChanges(PackageInterface $package, $path) { $this->io->writeError('Perforce driver does not check for local changes before overriding'); } /** * {@inheritDoc} */ protected function getCommitLogs($fromReference, $toReference, $path) { return $this->perforce->getCommitLogs($fromReference, $toReference); } public function setPerforce($perforce) { $this->perforce = $perforce; } /** * {@inheritDoc} */ protected function hasMetadataRepository($path) { return true; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\IO\IOInterface; use Composer\Util\Filesystem; use Composer\Exception\IrrecoverableDownloadException; use React\Promise\PromiseInterface; /** * Downloaders manager. * * @author Konstantin Kudryashov */ class DownloadManager { /** @var IOInterface */ private $io; /** @var bool */ private $preferDist = false; /** @var bool */ private $preferSource; /** @var array */ private $packagePreferences = array(); /** @var Filesystem */ private $filesystem; /** @var array */ private $downloaders = array(); /** * Initializes download manager. * * @param IOInterface $io The Input Output Interface * @param bool $preferSource prefer downloading from source * @param Filesystem|null $filesystem custom Filesystem object */ public function __construct(IOInterface $io, $preferSource = false, Filesystem $filesystem = null) { $this->io = $io; $this->preferSource = $preferSource; $this->filesystem = $filesystem ?: new Filesystem(); } /** * Makes downloader prefer source installation over the dist. * * @param bool $preferSource prefer downloading from source * @return DownloadManager */ public function setPreferSource($preferSource) { $this->preferSource = $preferSource; return $this; } /** * Makes downloader prefer dist installation over the source. * * @param bool $preferDist prefer downloading from dist * @return DownloadManager */ public function setPreferDist($preferDist) { $this->preferDist = $preferDist; return $this; } /** * Sets fine tuned preference settings for package level source/dist selection. * * @param array $preferences array of preferences by package patterns * @return DownloadManager */ public function setPreferences(array $preferences) { $this->packagePreferences = $preferences; return $this; } /** * Sets installer downloader for a specific installation type. * * @param string $type installation type * @param DownloaderInterface $downloader downloader instance * @return DownloadManager */ public function setDownloader($type, DownloaderInterface $downloader) { $type = strtolower($type); $this->downloaders[$type] = $downloader; return $this; } /** * Returns downloader for a specific installation type. * * @param string $type installation type * @throws \InvalidArgumentException if downloader for provided type is not registered * @return DownloaderInterface */ public function getDownloader($type) { $type = strtolower($type); if (!isset($this->downloaders[$type])) { throw new \InvalidArgumentException(sprintf('Unknown downloader type: %s. Available types: %s.', $type, implode(', ', array_keys($this->downloaders)))); } return $this->downloaders[$type]; } /** * Returns downloader for already installed package. * * @param PackageInterface $package package instance * @throws \InvalidArgumentException if package has no installation source specified * @throws \LogicException if specific downloader used to load package with * wrong type * @return DownloaderInterface|null */ public function getDownloaderForPackage(PackageInterface $package) { $installationSource = $package->getInstallationSource(); if ('metapackage' === $package->getType()) { return; } if ('dist' === $installationSource) { $downloader = $this->getDownloader($package->getDistType()); } elseif ('source' === $installationSource) { $downloader = $this->getDownloader($package->getSourceType()); } else { throw new \InvalidArgumentException( 'Package '.$package.' does not have an installation source set' ); } if ($installationSource !== $downloader->getInstallationSource()) { throw new \LogicException(sprintf( 'Downloader "%s" is a %s type downloader and can not be used to download %s for package %s', get_class($downloader), $downloader->getInstallationSource(), $installationSource, $package )); } return $downloader; } public function getDownloaderType(DownloaderInterface $downloader) { return array_search($downloader, $this->downloaders); } /** * Downloads package into target dir. * * @param PackageInterface $package package instance * @param string $targetDir target dir * @param PackageInterface|null $prevPackage previous package instance in case of updates * * @throws \InvalidArgumentException if package have no urls to download from * @throws \RuntimeException * @return PromiseInterface */ public function download(PackageInterface $package, $targetDir, PackageInterface $prevPackage = null) { $targetDir = $this->normalizeTargetDir($targetDir); $this->filesystem->ensureDirectoryExists(dirname($targetDir)); $sources = $this->getAvailableSources($package, $prevPackage); $io = $this->io; $self = $this; $download = function ($retry = false) use (&$sources, $io, $package, $self, $targetDir, &$download, $prevPackage) { $source = array_shift($sources); if ($retry) { $io->writeError(' Now trying to download from ' . $source . ''); } $package->setInstallationSource($source); $downloader = $self->getDownloaderForPackage($package); if (!$downloader) { return \React\Promise\resolve(); } $handleError = function ($e) use ($sources, $source, $package, $io, $download) { if ($e instanceof \RuntimeException && !$e instanceof IrrecoverableDownloadException) { if (!$sources) { throw $e; } $io->writeError( ' Failed to download '. $package->getPrettyName(). ' from ' . $source . ': '. $e->getMessage().'' ); return $download(true); } throw $e; }; try { $result = $downloader->download($package, $targetDir, $prevPackage); } catch (\Exception $e) { return $handleError($e); } if (!$result instanceof PromiseInterface) { return \React\Promise\resolve($result); } $res = $result->then(function ($res) { return $res; }, $handleError); return $res; }; return $download(); } /** * Prepares an operation execution * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param string $targetDir target dir * @param PackageInterface|null $prevPackage previous package instance in case of updates * * @return PromiseInterface|null */ public function prepare($type, PackageInterface $package, $targetDir, PackageInterface $prevPackage = null) { $targetDir = $this->normalizeTargetDir($targetDir); $downloader = $this->getDownloaderForPackage($package); if ($downloader) { return $downloader->prepare($type, $package, $targetDir, $prevPackage); } } /** * Installs package into target dir. * * @param PackageInterface $package package instance * @param string $targetDir target dir * * @throws \InvalidArgumentException if package have no urls to download from * @throws \RuntimeException * @return PromiseInterface|null */ public function install(PackageInterface $package, $targetDir) { $targetDir = $this->normalizeTargetDir($targetDir); $downloader = $this->getDownloaderForPackage($package); if ($downloader) { return $downloader->install($package, $targetDir); } } /** * Updates package from initial to target version. * * @param PackageInterface $initial initial package version * @param PackageInterface $target target package version * @param string $targetDir target dir * * @throws \InvalidArgumentException if initial package is not installed * @return PromiseInterface|null */ public function update(PackageInterface $initial, PackageInterface $target, $targetDir) { $targetDir = $this->normalizeTargetDir($targetDir); $downloader = $this->getDownloaderForPackage($target); $initialDownloader = $this->getDownloaderForPackage($initial); // no downloaders present means update from metapackage to metapackage, nothing to do if (!$initialDownloader && !$downloader) { return; } // if we have a downloader present before, but not after, the package became a metapackage and its files should be removed if (!$downloader) { return $initialDownloader->remove($initial, $targetDir); } $initialType = $this->getDownloaderType($initialDownloader); $targetType = $this->getDownloaderType($downloader); if ($initialType === $targetType) { try { return $downloader->update($initial, $target, $targetDir); } catch (\RuntimeException $e) { if (!$this->io->isInteractive()) { throw $e; } $this->io->writeError(' Update failed ('.$e->getMessage().')'); if (!$this->io->askConfirmation(' Would you like to try reinstalling the package instead [yes]? ')) { throw $e; } } } // if downloader type changed, or update failed and user asks for reinstall, // we wipe the dir and do a new install instead of updating it $promise = $initialDownloader->remove($initial, $targetDir); if ($promise) { $self = $this; return $promise->then(function ($res) use ($self, $target, $targetDir) { return $self->install($target, $targetDir); }); } return $this->install($target, $targetDir); } /** * Removes package from target dir. * * @param PackageInterface $package package instance * @param string $targetDir target dir * * @return PromiseInterface|null */ public function remove(PackageInterface $package, $targetDir) { $targetDir = $this->normalizeTargetDir($targetDir); $downloader = $this->getDownloaderForPackage($package); if ($downloader) { return $downloader->remove($package, $targetDir); } } /** * Cleans up a failed operation * * @param string $type one of install/update/uninstall * @param PackageInterface $package package instance * @param string $targetDir target dir * @param PackageInterface|null $prevPackage previous package instance in case of updates * * @return PromiseInterface|null */ public function cleanup($type, PackageInterface $package, $targetDir, PackageInterface $prevPackage = null) { $targetDir = $this->normalizeTargetDir($targetDir); $downloader = $this->getDownloaderForPackage($package); if ($downloader) { return $downloader->cleanup($type, $package, $targetDir, $prevPackage); } } /** * Determines the install preference of a package * * @param PackageInterface $package package instance * * @return string */ protected function resolvePackageInstallPreference(PackageInterface $package) { foreach ($this->packagePreferences as $pattern => $preference) { $pattern = '{^'.str_replace('\\*', '.*', preg_quote($pattern)).'$}i'; if (preg_match($pattern, $package->getName())) { if ('dist' === $preference || (!$package->isDev() && 'auto' === $preference)) { return 'dist'; } return 'source'; } } return $package->isDev() ? 'source' : 'dist'; } /** * @return string[] */ private function getAvailableSources(PackageInterface $package, PackageInterface $prevPackage = null) { $sourceType = $package->getSourceType(); $distType = $package->getDistType(); // add source before dist by default $sources = array(); if ($sourceType) { $sources[] = 'source'; } if ($distType) { $sources[] = 'dist'; } if (empty($sources)) { throw new \InvalidArgumentException('Package '.$package.' must have a source or dist specified'); } if ( $prevPackage // if we are updating, we want to keep the same source as the previously installed package (if available in the new one) && in_array($prevPackage->getInstallationSource(), $sources, true) // unless the previous package was stable dist (by default) and the new package is dev, then we allow the new default to take over && !(!$prevPackage->isDev() && $prevPackage->getInstallationSource() === 'dist' && $package->isDev()) ) { $prevSource = $prevPackage->getInstallationSource(); usort($sources, function ($a, $b) use ($prevSource) { return $a === $prevSource ? -1 : 1; }); return $sources; } // reverse sources in case dist is the preferred source for this package if (!$this->preferSource && ($this->preferDist || 'dist' === $this->resolvePackageInstallPreference($package))) { $sources = array_reverse($sources); } return $sources; } /** * Downloaders expect a /path/to/dir without trailing slash * * If any Installer provides a path with a trailing slash, this can cause bugs so make sure we remove them * * @return string */ private function normalizeTargetDir($dir) { if ($dir === '\\' || $dir === '/') { return $dir; } return rtrim($dir, '\\/'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Symfony\Component\Finder\Finder; use React\Promise\PromiseInterface; use Composer\DependencyResolver\Operation\InstallOperation; /** * Base downloader for archives * * @author Kirill chEbba Chebunin * @author Jordi Boggiano * @author François Pluchino */ abstract class ArchiveDownloader extends FileDownloader { /** * {@inheritDoc} * @throws \RuntimeException * @throws \UnexpectedValueException */ public function install(PackageInterface $package, $path, $output = true) { if ($output) { $this->io->writeError(" - " . InstallOperation::format($package).": Extracting archive"); } else { $this->io->writeError('Extracting archive', false); } $vendorDir = $this->config->get('vendor-dir'); // clean up the target directory, unless it contains the vendor dir, as the vendor dir contains // the archive to be extracted. This is the case when installing with create-project in the current directory // but in that case we ensure the directory is empty already in ProjectInstaller so no need to empty it here. if (false === strpos($this->filesystem->normalizePath($vendorDir), $this->filesystem->normalizePath($path.DIRECTORY_SEPARATOR))) { $this->filesystem->emptyDirectory($path); } do { $temporaryDir = $vendorDir.'/composer/'.substr(md5(uniqid('', true)), 0, 8); } while (is_dir($temporaryDir)); $this->addCleanupPath($package, $temporaryDir); // avoid cleaning up $path if installing in "." for eg create-project as we can not // delete the directory we are currently in on windows if (!is_dir($path) || realpath($path) !== getcwd()) { $this->addCleanupPath($package, $path); } $this->filesystem->ensureDirectoryExists($temporaryDir); $fileName = $this->getFileName($package, $path); $filesystem = $this->filesystem; $self = $this; $cleanup = function () use ($path, $filesystem, $temporaryDir, $package, $self) { // remove cache if the file was corrupted $self->clearLastCacheWrite($package); // clean up $filesystem->removeDirectory($temporaryDir); if (is_dir($path) && realpath($path) !== getcwd()) { $filesystem->removeDirectory($path); } $self->removeCleanupPath($package, $temporaryDir); $self->removeCleanupPath($package, realpath($path)); }; $promise = null; try { $promise = $this->extract($package, $fileName, $temporaryDir); } catch (\Exception $e) { $cleanup(); throw $e; } if (!$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } return $promise->then(function () use ($self, $package, $filesystem, $fileName, $temporaryDir, $path) { $filesystem->unlink($fileName); /** * Returns the folder content, excluding .DS_Store * * @param string $dir Directory * @return \SplFileInfo[] */ $getFolderContent = function ($dir) { $finder = Finder::create() ->ignoreVCS(false) ->ignoreDotFiles(false) ->notName('.DS_Store') ->depth(0) ->in($dir); return iterator_to_array($finder); }; $renameRecursively = null; /** * Renames (and recursively merges if needed) a folder into another one * * For custom installers, where packages may share paths, and given Composer 2's parallelism, we need to make sure * that the source directory gets merged into the target one if the target exists. Otherwise rename() by default would * put the source into the target e.g. src/ => target/src/ (assuming target exists) instead of src/ => target/ * * @param string $from Directory * @param string $to Directory * @return void */ $renameRecursively = function ($from, $to) use ($filesystem, $getFolderContent, $package, &$renameRecursively) { $contentDir = $getFolderContent($from); // move files back out of the temp dir foreach ($contentDir as $file) { $file = (string) $file; if (is_dir($to . '/' . basename($file))) { if (!is_dir($file)) { throw new \RuntimeException('Installing '.$package.' would lead to overwriting the '.$to.'/'.basename($file).' directory with a file from the package, invalid operation.'); } $renameRecursively($file, $to . '/' . basename($file)); } else { $filesystem->rename($file, $to . '/' . basename($file)); } } }; $renameAsOne = false; if (!file_exists($path) || ($filesystem->isDirEmpty($path) && $filesystem->removeDirectory($path))) { $renameAsOne = true; } $contentDir = $getFolderContent($temporaryDir); $singleDirAtTopLevel = 1 === count($contentDir) && is_dir(reset($contentDir)); if ($renameAsOne) { // if the target $path is clear, we can rename the whole package in one go instead of looping over the contents if ($singleDirAtTopLevel) { $extractedDir = (string) reset($contentDir); } else { $extractedDir = $temporaryDir; } $filesystem->rename($extractedDir, $path); } else { // only one dir in the archive, extract its contents out of it $from = $temporaryDir; if ($singleDirAtTopLevel) { $from = (string) reset($contentDir); } $renameRecursively($from, $path); } $filesystem->removeDirectory($temporaryDir); $self->removeCleanupPath($package, $temporaryDir); $self->removeCleanupPath($package, $path); }, function ($e) use ($cleanup) { $cleanup(); throw $e; }); } /** * Extract file to directory * * @param string $file Extracted file * @param string $path Directory * * @throws \UnexpectedValueException If can not extract downloaded file to path * @return PromiseInterface|null */ abstract protected function extract(PackageInterface $package, $file, $path); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; /** * Exception thrown when issues exist on local filesystem * * @author Javier Spagnoletti */ class FilesystemException extends \Exception { public function __construct($message = '', $code = 0, \Exception $previous = null) { parent::__construct("Filesystem exception: \n".$message, $code, $previous); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; /** * DVCS Downloader interface. * * @author James Titcumb */ interface DvcsDownloaderInterface { /** * Checks for unpushed changes to a current branch * * @param PackageInterface $package package directory * @param string $path package directory * @return string|null changes or null */ public function getUnpushedChanges(PackageInterface $package, $path); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Config; use Composer\IO\IOInterface; use Composer\Package\PackageInterface; use Composer\Util\Filesystem; use Composer\Util\Git as GitUtil; use Composer\Util\Url; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Composer\Cache; /** * @author Jordi Boggiano */ class GitDownloader extends VcsDownloader implements DvcsDownloaderInterface { /** * @var bool[] * @psalm-var array */ private $hasStashedChanges = array(); /** * @var bool[] * @psalm-var array */ private $hasDiscardedChanges = array(); /** * @var GitUtil */ private $gitUtil; /** * @var array * @psalm-var array> */ private $cachedPackages = array(); public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) { parent::__construct($io, $config, $process, $fs); $this->gitUtil = new GitUtil($this->io, $this->config, $this->process, $this->filesystem); } /** * {@inheritDoc} */ protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null) { GitUtil::cleanEnv(); $cachePath = $this->config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $url).'/'; $gitVersion = GitUtil::getVersion($this->process); // --dissociate option is only available since git 2.3.0-rc0 if ($gitVersion && version_compare($gitVersion, '2.3.0-rc0', '>=') && Cache::isUsable($cachePath)) { $this->io->writeError(" - Syncing " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") into cache"); $this->io->writeError(sprintf(' Cloning to cache at %s', ProcessExecutor::escape($cachePath)), true, IOInterface::DEBUG); $ref = $package->getSourceReference(); if ($this->gitUtil->fetchRefOrSyncMirror($url, $cachePath, $ref) && is_dir($cachePath)) { $this->cachedPackages[$package->getId()][$ref] = true; } } elseif (null === $gitVersion) { throw new \RuntimeException('git was not found in your PATH, skipping source download'); } } /** * {@inheritDoc} */ protected function doInstall(PackageInterface $package, $path, $url) { GitUtil::cleanEnv(); $path = $this->normalizePath($path); $cachePath = $this->config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $url).'/'; $ref = $package->getSourceReference(); $flag = Platform::isWindows() ? '/D ' : ''; if (!empty($this->cachedPackages[$package->getId()][$ref])) { $msg = "Cloning ".$this->getShortHash($ref).' from cache'; $command = 'git clone --no-checkout %cachePath% %path% --dissociate --reference %cachePath% ' . '&& cd '.$flag.'%path% ' . '&& git remote set-url origin -- %sanitizedUrl% && git remote add composer -- %sanitizedUrl%'; } else { $msg = "Cloning ".$this->getShortHash($ref); $command = 'git clone --no-checkout -- %url% %path% && cd '.$flag.'%path% && git remote add composer -- %url% && git fetch composer && git remote set-url origin -- %sanitizedUrl% && git remote set-url composer -- %sanitizedUrl%'; if (getenv('COMPOSER_DISABLE_NETWORK')) { throw new \RuntimeException('The required git reference for '.$package->getName().' is not in cache and network is disabled, aborting'); } } $this->io->writeError($msg); $commandCallable = function ($url) use ($path, $command, $cachePath) { return str_replace( array('%url%', '%path%', '%cachePath%', '%sanitizedUrl%'), array( ProcessExecutor::escape($url), ProcessExecutor::escape($path), ProcessExecutor::escape($cachePath), ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)), ), $command ); }; $this->gitUtil->runCommand($commandCallable, $url, $path, true); if ($url !== $package->getSourceUrl()) { $this->updateOriginUrl($path, $package->getSourceUrl()); } else { $this->setPushUrl($path, $url); } if ($newRef = $this->updateToCommit($path, $ref, $package->getPrettyVersion(), $package->getReleaseDate())) { if ($package->getDistReference() === $package->getSourceReference()) { $package->setDistReference($newRef); } $package->setSourceReference($newRef); } } /** * {@inheritDoc} */ protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) { GitUtil::cleanEnv(); $path = $this->normalizePath($path); if (!$this->hasMetadataRepository($path)) { throw new \RuntimeException('The .git directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); } $cachePath = $this->config->get('cache-vcs-dir').'/'.preg_replace('{[^a-z0-9.]}i', '-', $url).'/'; $ref = $target->getSourceReference(); if (!empty($this->cachedPackages[$target->getId()][$ref])) { $msg = "Checking out ".$this->getShortHash($ref).' from cache'; $command = '(git rev-parse --quiet --verify %ref% || (git remote set-url composer -- %cachePath% && git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; } else { $msg = "Checking out ".$this->getShortHash($ref); $command = '(git remote set-url composer -- %url% && git rev-parse --quiet --verify %ref% || (git fetch composer && git fetch --tags composer)) && git remote set-url composer -- %sanitizedUrl%'; if (getenv('COMPOSER_DISABLE_NETWORK')) { throw new \RuntimeException('The required git reference for '.$target->getName().' is not in cache and network is disabled, aborting'); } } $this->io->writeError($msg); $commandCallable = function ($url) use ($ref, $command, $cachePath) { return str_replace( array('%url%', '%ref%', '%cachePath%', '%sanitizedUrl%'), array( ProcessExecutor::escape($url), ProcessExecutor::escape($ref.'^{commit}'), ProcessExecutor::escape($cachePath), ProcessExecutor::escape(preg_replace('{://([^@]+?):(.+?)@}', '://', $url)), ), $command ); }; $this->gitUtil->runCommand($commandCallable, $url, $path); if ($newRef = $this->updateToCommit($path, $ref, $target->getPrettyVersion(), $target->getReleaseDate())) { if ($target->getDistReference() === $target->getSourceReference()) { $target->setDistReference($newRef); } $target->setSourceReference($newRef); } $updateOriginUrl = false; if ( 0 === $this->process->execute('git remote -v', $output, $path) && preg_match('{^origin\s+(?P\S+)}m', $output, $originMatch) && preg_match('{^composer\s+(?P\S+)}m', $output, $composerMatch) ) { if ($originMatch['url'] === $composerMatch['url'] && $composerMatch['url'] !== $target->getSourceUrl()) { $updateOriginUrl = true; } } if ($updateOriginUrl) { $this->updateOriginUrl($path, $target->getSourceUrl()); } } /** * {@inheritDoc} */ public function getLocalChanges(PackageInterface $package, $path) { GitUtil::cleanEnv(); if (!$this->hasMetadataRepository($path)) { return; } $command = 'git status --porcelain --untracked-files=no'; if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } return trim($output) ?: null; } public function getUnpushedChanges(PackageInterface $package, $path) { GitUtil::cleanEnv(); $path = $this->normalizePath($path); if (!$this->hasMetadataRepository($path)) { return; } $command = 'git show-ref --head -d'; if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $refs = trim($output); if (!preg_match('{^([a-f0-9]+) HEAD$}mi', $refs, $match)) { // could not match the HEAD for some reason return; } $headRef = $match[1]; if (!preg_match_all('{^'.$headRef.' refs/heads/(.+)$}mi', $refs, $matches)) { // not on a branch, we are either on a not-modified tag or some sort of detached head, so skip this return; } $candidateBranches = $matches[1]; // use the first match as branch name for now $branch = $candidateBranches[0]; $unpushedChanges = null; $branchNotFoundError = false; // do two passes, as if we find anything we want to fetch and then re-try for ($i = 0; $i <= 1; $i++) { $remoteBranches = array(); // try to find matching branch names in remote repos foreach ($candidateBranches as $candidate) { if (preg_match_all('{^[a-f0-9]+ refs/remotes/((?:[^/]+)/'.preg_quote($candidate).')$}mi', $refs, $matches)) { foreach ($matches[1] as $match) { $branch = $candidate; $remoteBranches[] = $match; } break; } } // if it doesn't exist, then we assume it is an unpushed branch // this is bad as we have no reference point to do a diff so we just bail listing // the branch as being unpushed if (!$remoteBranches) { $unpushedChanges = 'Branch ' . $branch . ' could not be found on any remote and appears to be unpushed'; $branchNotFoundError = true; } else { // if first iteration found no remote branch but it has now found some, reset $unpushedChanges // so we get the real diff output no matter its length if ($branchNotFoundError) { $unpushedChanges = null; } foreach ($remoteBranches as $remoteBranch) { $command = sprintf('git diff --name-status %s...%s --', $remoteBranch, $branch); if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $output = trim($output); // keep the shortest diff from all remote branches we compare against if ($unpushedChanges === null || strlen($output) < strlen($unpushedChanges)) { $unpushedChanges = $output; } } } // first pass and we found unpushed changes, fetch from all remotes to make sure we have up to date // remotes and then try again as outdated remotes can sometimes cause false-positives if ($unpushedChanges && $i === 0) { $this->process->execute('git fetch --all', $output, $path); // update list of refs after fetching $command = 'git show-ref --head -d'; if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $refs = trim($output); } // abort after first pass if we didn't find anything if (!$unpushedChanges) { break; } } return $unpushedChanges; } /** * {@inheritDoc} */ protected function cleanChanges(PackageInterface $package, $path, $update) { GitUtil::cleanEnv(); $path = $this->normalizePath($path); $unpushed = $this->getUnpushedChanges($package, $path); if ($unpushed && ($this->io->isInteractive() || $this->config->get('discard-changes') !== true)) { throw new \RuntimeException('Source directory ' . $path . ' has unpushed changes on the current branch: '."\n".$unpushed); } if (!$changes = $this->getLocalChanges($package, $path)) { return; } if (!$this->io->isInteractive()) { $discardChanges = $this->config->get('discard-changes'); if (true === $discardChanges) { return $this->discardChanges($path); } if ('stash' === $discardChanges) { if (!$update) { return parent::cleanChanges($package, $path, $update); } return $this->stashChanges($path); } return parent::cleanChanges($package, $path, $update); } $changes = array_map(function ($elem) { return ' '.$elem; }, preg_split('{\s*\r?\n\s*}', $changes)); $this->io->writeError(' '.$package->getPrettyName().' has modified files:'); $this->io->writeError(array_slice($changes, 0, 10)); if (count($changes) > 10) { $this->io->writeError(' ' . (count($changes) - 10) . ' more files modified, choose "v" to view the full list'); } while (true) { switch ($this->io->ask(' Discard changes [y,n,v,d,'.($update ? 's,' : '').'?]? ', '?')) { case 'y': $this->discardChanges($path); break 2; case 's': if (!$update) { goto help; } $this->stashChanges($path); break 2; case 'n': throw new \RuntimeException('Update aborted'); case 'v': $this->io->writeError($changes); break; case 'd': $this->viewDiff($path); break; case '?': default: help: $this->io->writeError(array( ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', ' v - view modified files', ' d - view local modifications (diff)', )); if ($update) { $this->io->writeError(' s - stash changes and try to reapply them after the update'); } $this->io->writeError(' ? - print help'); break; } } } /** * {@inheritDoc} */ protected function reapplyChanges($path) { $path = $this->normalizePath($path); if (!empty($this->hasStashedChanges[$path])) { unset($this->hasStashedChanges[$path]); $this->io->writeError(' Re-applying stashed changes'); if (0 !== $this->process->execute('git stash pop', $output, $path)) { throw new \RuntimeException("Failed to apply stashed changes:\n\n".$this->process->getErrorOutput()); } } unset($this->hasDiscardedChanges[$path]); } /** * Updates the given path to the given commit ref * * @param string $path * @param string $reference * @param string $branch * @param \DateTime $date * @throws \RuntimeException * @return null|string if a string is returned, it is the commit reference that was checked out if the original could not be found */ protected function updateToCommit($path, $reference, $branch, $date) { $force = !empty($this->hasDiscardedChanges[$path]) || !empty($this->hasStashedChanges[$path]) ? '-f ' : ''; // This uses the "--" sequence to separate branch from file parameters. // // Otherwise git tries the branch name as well as file name. // If the non-existent branch is actually the name of a file, the file // is checked out. $template = 'git checkout '.$force.'%s -- && git reset --hard %1$s --'; $branch = preg_replace('{(?:^dev-|(?:\.x)?-dev$)}i', '', $branch); $branches = null; if (0 === $this->process->execute('git branch -r', $output, $path)) { $branches = $output; } // check whether non-commitish are branches or tags, and fetch branches with the remote name $gitRef = $reference; if (!preg_match('{^[a-f0-9]{40}$}', $reference) && $branches && preg_match('{^\s+composer/'.preg_quote($reference).'$}m', $branches) ) { $command = sprintf('git checkout '.$force.'-B %s %s -- && git reset --hard %2$s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$reference)); if (0 === $this->process->execute($command, $output, $path)) { return null; } } // try to checkout branch by name and then reset it so it's on the proper branch name if (preg_match('{^[a-f0-9]{40}$}', $reference)) { // add 'v' in front of the branch if it was stripped when generating the pretty name if (!preg_match('{^\s+composer/'.preg_quote($branch).'$}m', $branches) && preg_match('{^\s+composer/v'.preg_quote($branch).'$}m', $branches)) { $branch = 'v' . $branch; } $command = sprintf('git checkout %s --', ProcessExecutor::escape($branch)); $fallbackCommand = sprintf('git checkout '.$force.'-B %s %s --', ProcessExecutor::escape($branch), ProcessExecutor::escape('composer/'.$branch)); $resetCommand = sprintf('git reset --hard %s --', ProcessExecutor::escape($reference)); if (0 === $this->process->execute("($command || $fallbackCommand) && $resetCommand", $output, $path)) { return null; } } $command = sprintf($template, ProcessExecutor::escape($gitRef)); if (0 === $this->process->execute($command, $output, $path)) { return null; } // reference was not found (prints "fatal: reference is not a tree: $ref") if (false !== strpos($this->process->getErrorOutput(), $reference)) { $this->io->writeError(' '.$reference.' is gone (history was rewritten?)'); } throw new \RuntimeException(Url::sanitize('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput())); } protected function updateOriginUrl($path, $url) { $this->process->execute(sprintf('git remote set-url origin -- %s', ProcessExecutor::escape($url)), $output, $path); $this->setPushUrl($path, $url); } protected function setPushUrl($path, $url) { // set push url for github projects if (preg_match('{^(?:https?|git)://'.GitUtil::getGitHubDomainsRegex($this->config).'/([^/]+)/([^/]+?)(?:\.git)?$}', $url, $match)) { $protocols = $this->config->get('github-protocols'); $pushUrl = 'git@'.$match[1].':'.$match[2].'/'.$match[3].'.git'; if (!in_array('ssh', $protocols, true)) { $pushUrl = 'https://' . $match[1] . '/'.$match[2].'/'.$match[3].'.git'; } $cmd = sprintf('git remote set-url --push origin -- %s', ProcessExecutor::escape($pushUrl)); $this->process->execute($cmd, $ignoredOutput, $path); } } /** * {@inheritDoc} */ protected function getCommitLogs($fromReference, $toReference, $path) { $path = $this->normalizePath($path); $command = sprintf('git log %s..%s --pretty=format:"%%h - %%an: %%s"'.GitUtil::getNoShowSignatureFlag($this->process), ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } return $output; } /** * @param string $path * @throws \RuntimeException */ protected function discardChanges($path) { $path = $this->normalizePath($path); if (0 !== $this->process->execute('git clean -df && git reset --hard', $output, $path)) { throw new \RuntimeException("Could not reset changes\n\n:".$output); } $this->hasDiscardedChanges[$path] = true; } /** * @param string $path * @throws \RuntimeException */ protected function stashChanges($path) { $path = $this->normalizePath($path); if (0 !== $this->process->execute('git stash --include-untracked', $output, $path)) { throw new \RuntimeException("Could not stash changes\n\n:".$output); } $this->hasStashedChanges[$path] = true; } /** * @param string $path * @throws \RuntimeException */ protected function viewDiff($path) { $path = $this->normalizePath($path); if (0 !== $this->process->execute('git diff HEAD', $output, $path)) { throw new \RuntimeException("Could not view diff\n\n:".$output); } $this->io->writeError($output); } protected function normalizePath($path) { if (Platform::isWindows() && strlen($path) > 0) { $basePath = $path; $removed = array(); while (!is_dir($basePath) && $basePath !== '\\') { array_unshift($removed, basename($basePath)); $basePath = dirname($basePath); } if ($basePath === '\\') { return $path; } $path = rtrim(realpath($basePath) . '/' . implode('/', $removed), '/'); } return $path; } /** * {@inheritDoc} */ protected function hasMetadataRepository($path) { $path = $this->normalizePath($path); return is_dir($path.'/.git'); } protected function getShortHash($reference) { if (!$this->io->isVerbose() && preg_match('{^[0-9a-f]{40}$}', $reference)) { return substr($reference, 0, 10); } return $reference; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\ProcessExecutor; /** * @author BohwaZ */ class FossilDownloader extends VcsDownloader { /** * {@inheritDoc} */ protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ protected function doInstall(PackageInterface $package, $path, $url) { // Ensure we are allowed to use this URL by config $this->config->prohibitUrlByConfig($url, $this->io); $url = ProcessExecutor::escape($url); $ref = ProcessExecutor::escape($package->getSourceReference()); $repoFile = $path . '.fossil'; $this->io->writeError("Cloning ".$package->getSourceReference()); $command = sprintf('fossil clone -- %s %s', $url, ProcessExecutor::escape($repoFile)); if (0 !== $this->process->execute($command, $ignoredOutput)) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $command = sprintf('fossil open --nested -- %s', ProcessExecutor::escape($repoFile)); if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $command = sprintf('fossil update -- %s', $ref); if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } } /** * {@inheritDoc} */ protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) { // Ensure we are allowed to use this URL by config $this->config->prohibitUrlByConfig($url, $this->io); $ref = ProcessExecutor::escape($target->getSourceReference()); $this->io->writeError(" Updating to ".$target->getSourceReference()); if (!$this->hasMetadataRepository($path)) { throw new \RuntimeException('The .fslckout file is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); } $command = sprintf('fossil pull && fossil up %s', $ref); if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } } /** * {@inheritDoc} */ public function getLocalChanges(PackageInterface $package, $path) { if (!$this->hasMetadataRepository($path)) { return null; } $this->process->execute('fossil changes', $output, realpath($path)); return trim($output) ?: null; } /** * {@inheritDoc} */ protected function getCommitLogs($fromReference, $toReference, $path) { $command = sprintf('fossil timeline -t ci -W 0 -n 0 before %s', ProcessExecutor::escape($toReference)); if (0 !== $this->process->execute($command, $output, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } $log = ''; $match = '/\d\d:\d\d:\d\d\s+\[' . $toReference . '\]/'; foreach ($this->process->splitLines($output) as $line) { if (preg_match($match, $line)) { break; } $log .= $line; } return $log; } /** * {@inheritDoc} */ protected function hasMetadataRepository($path) { return is_file($path . '/.fslckout') || is_file($path . '/_FOSSIL_'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\Archiver\ArchivableFilesFinder; use Composer\Package\Dumper\ArrayDumper; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionParser; use Composer\Util\Platform; use Composer\Util\Filesystem; use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Filesystem\Filesystem as SymfonyFilesystem; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UninstallOperation; /** * Download a package from a local path. * * @author Samuel Roze * @author Johann Reinke */ class PathDownloader extends FileDownloader implements VcsCapableDownloaderInterface { const STRATEGY_SYMLINK = 10; const STRATEGY_MIRROR = 20; /** * {@inheritdoc} */ public function download(PackageInterface $package, $path, PackageInterface $prevPackage = null, $output = true) { $path = Filesystem::trimTrailingSlash($path); $url = $package->getDistUrl(); $realUrl = realpath($url); if (false === $realUrl || !file_exists($realUrl) || !is_dir($realUrl)) { throw new \RuntimeException(sprintf( 'Source path "%s" is not found for package %s', $url, $package->getName() )); } if (realpath($path) === $realUrl) { return; } if (strpos(realpath($path) . DIRECTORY_SEPARATOR, $realUrl . DIRECTORY_SEPARATOR) === 0) { // IMPORTANT NOTICE: If you wish to change this, don't. You are wasting your time and ours. // // Please see https://github.com/composer/composer/pull/5974 and https://github.com/composer/composer/pull/6174 // for previous attempts that were shut down because they did not work well enough or introduced too many risks. throw new \RuntimeException(sprintf( 'Package %s cannot install to "%s" inside its source at "%s"', $package->getName(), realpath($path), $realUrl )); } } /** * {@inheritdoc} */ public function install(PackageInterface $package, $path, $output = true) { $path = Filesystem::trimTrailingSlash($path); $url = $package->getDistUrl(); $realUrl = realpath($url); if (realpath($path) === $realUrl) { if ($output) { $this->io->writeError(" - " . InstallOperation::format($package).': Source already present'); } else { $this->io->writeError('Source already present', false); } return; } // Get the transport options with default values $transportOptions = $package->getTransportOptions() + array('symlink' => null, 'relative' => true); // When symlink transport option is null, both symlink and mirror are allowed $currentStrategy = self::STRATEGY_SYMLINK; $allowedStrategies = array(self::STRATEGY_SYMLINK, self::STRATEGY_MIRROR); $mirrorPathRepos = getenv('COMPOSER_MIRROR_PATH_REPOS'); if ($mirrorPathRepos) { $currentStrategy = self::STRATEGY_MIRROR; } if (true === $transportOptions['symlink']) { $currentStrategy = self::STRATEGY_SYMLINK; $allowedStrategies = array(self::STRATEGY_SYMLINK); } elseif (false === $transportOptions['symlink']) { $currentStrategy = self::STRATEGY_MIRROR; $allowedStrategies = array(self::STRATEGY_MIRROR); } // Check we can use junctions safely if we are on Windows if (Platform::isWindows() && self::STRATEGY_SYMLINK === $currentStrategy && !$this->safeJunctions()) { $currentStrategy = self::STRATEGY_MIRROR; $allowedStrategies = array(self::STRATEGY_MIRROR); } $symfonyFilesystem = new SymfonyFilesystem(); $this->filesystem->removeDirectory($path); if ($output) { $this->io->writeError(" - " . InstallOperation::format($package).': ', false); } $isFallback = false; if (self::STRATEGY_SYMLINK == $currentStrategy) { try { if (Platform::isWindows()) { // Implement symlinks as NTFS junctions on Windows $this->io->writeError(sprintf('Junctioning from %s', $url), false); $this->filesystem->junction($realUrl, $path); } else { $absolutePath = $path; if (!$this->filesystem->isAbsolutePath($absolutePath)) { $absolutePath = getcwd() . DIRECTORY_SEPARATOR . $path; } $shortestPath = $this->filesystem->findShortestPath($absolutePath, $realUrl); $path = rtrim($path, "/"); $this->io->writeError(sprintf('Symlinking from %s', $url), false); if ($transportOptions['relative']) { $symfonyFilesystem->symlink($shortestPath, $path); } else { $symfonyFilesystem->symlink($realUrl, $path); } } } catch (IOException $e) { if (in_array(self::STRATEGY_MIRROR, $allowedStrategies)) { $this->io->writeError(''); $this->io->writeError(' Symlink failed, fallback to use mirroring!'); $currentStrategy = self::STRATEGY_MIRROR; $isFallback = true; } else { throw new \RuntimeException(sprintf('Symlink from "%s" to "%s" failed!', $realUrl, $path)); } } } // Fallback if symlink failed or if symlink is not allowed for the package if (self::STRATEGY_MIRROR == $currentStrategy) { $realUrl = $this->filesystem->normalizePath($realUrl); $this->io->writeError(sprintf('%sMirroring from %s', $isFallback ? ' ' : '', $url), false); $iterator = new ArchivableFilesFinder($realUrl, array()); $symfonyFilesystem->mirror($realUrl, $path, $iterator); } if ($output) { $this->io->writeError(''); } } /** * {@inheritDoc} */ public function remove(PackageInterface $package, $path, $output = true) { $path = Filesystem::trimTrailingSlash($path); /** * realpath() may resolve Windows junctions to the source path, so we'll check for a junction first * to prevent a false positive when checking if the dist and install paths are the same. * See https://bugs.php.net/bug.php?id=77639 * * For junctions don't blindly rely on Filesystem::removeDirectory as it may be overzealous. If a process * inadvertently locks the file the removal will fail, but it would fall back to recursive delete which * is disastrous within a junction. So in that case we have no other real choice but to fail hard. */ if (Platform::isWindows() && $this->filesystem->isJunction($path)) { if ($output) { $this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); } if (!$this->filesystem->removeJunction($path)) { $this->io->writeError(" Could not remove junction at " . $path . " - is another process locking it?"); throw new \RuntimeException('Could not reliably remove junction for package ' . $package->getName()); } } elseif (realpath($path) === realpath($package->getDistUrl())) { if ($output) { $this->io->writeError(" - " . UninstallOperation::format($package).", source is still present in $path"); } } else { parent::remove($package, $path, $output); } } /** * {@inheritDoc} */ public function getVcsReference(PackageInterface $package, $path) { $path = Filesystem::trimTrailingSlash($path); $parser = new VersionParser; $guesser = new VersionGuesser($this->config, $this->process, $parser); $dumper = new ArrayDumper; $packageConfig = $dumper->dump($package); if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { return $packageVersion['commit']; } } /** * Returns true if junctions can be created and safely used on Windows * * A PHP bug makes junction detection fragile, leading to possible data loss * when removing a package. See https://bugs.php.net/bug.php?id=77552 * * For safety we require a minimum version of Windows 7, so we can call the * system rmdir which will preserve target content if given a junction. * * The PHP bug was fixed in 7.2.16 and 7.3.3 (requires at least Windows 7). * * @return bool */ private function safeJunctions() { // We need to call mklink, and rmdir on Windows 7 (version 6.1) return function_exists('proc_open') && (PHP_WINDOWS_VERSION_MAJOR > 6 || (PHP_WINDOWS_VERSION_MAJOR === 6 && PHP_WINDOWS_VERSION_MINOR >= 1)); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; /** * ChangeReport interface. * * @author Sascha Egerer */ interface ChangeReportInterface { /** * Checks for changes to the local copy * * @param PackageInterface $package package instance * @param string $path package directory * @return string|null changes or null */ public function getLocalChanges(PackageInterface $package, $path); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; /** * Downloader for phar files * * @author Kirill chEbba Chebunin */ class PharDownloader extends ArchiveDownloader { /** * {@inheritDoc} */ protected function extract(PackageInterface $package, $file, $path) { // Can throw an UnexpectedValueException $archive = new \Phar($file); $archive->extractTo($path, null, true); /* TODO: handle openssl signed phars * https://github.com/composer/composer/pull/33#issuecomment-2250768 * https://github.com/koto/phar-util * http://blog.kotowicz.net/2010/08/hardening-php-how-to-securely-include.html */ } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; /** * VCS Capable Downloader interface. * * @author Steve Buzonas */ interface VcsCapableDownloaderInterface { /** * Gets the VCS Reference for the package at path * * @param PackageInterface $package package directory * @param string $path package directory * @return string|null reference or null */ public function getVcsReference(PackageInterface $package, $path); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; /** * @author Jordi Boggiano */ class TransportException extends \RuntimeException { protected $headers; protected $response; protected $statusCode; protected $responseInfo = array(); public function setHeaders($headers) { $this->headers = $headers; } public function getHeaders() { return $this->headers; } public function setResponse($response) { $this->response = $response; } public function getResponse() { return $this->response; } public function setStatusCode($statusCode) { $this->statusCode = $statusCode; } public function getStatusCode() { return $this->statusCode; } /** * @return array */ public function getResponseInfo() { return $this->responseInfo; } /** * @param array $responseInfo */ public function setResponseInfo(array $responseInfo) { $this->responseInfo = $responseInfo; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\Svn as SvnUtil; use Composer\Repository\VcsRepository; use Composer\Util\ProcessExecutor; /** * @author Ben Bieker * @author Till Klampaeckel */ class SvnDownloader extends VcsDownloader { protected $cacheCredentials = true; /** * {@inheritDoc} */ protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null) { SvnUtil::cleanEnv(); $util = new SvnUtil($url, $this->io, $this->config, $this->process); if (null === $util->binaryVersion()) { throw new \RuntimeException('svn was not found in your PATH, skipping source download'); } } /** * {@inheritDoc} */ protected function doInstall(PackageInterface $package, $path, $url) { SvnUtil::cleanEnv(); $ref = $package->getSourceReference(); $repo = $package->getRepository(); if ($repo instanceof VcsRepository) { $repoConfig = $repo->getRepoConfig(); if (array_key_exists('svn-cache-credentials', $repoConfig)) { $this->cacheCredentials = (bool) $repoConfig['svn-cache-credentials']; } } $this->io->writeError(" Checking out ".$package->getSourceReference()); $this->execute($package, $url, "svn co", sprintf("%s/%s", $url, $ref), null, $path); } /** * {@inheritDoc} */ protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) { SvnUtil::cleanEnv(); $ref = $target->getSourceReference(); if (!$this->hasMetadataRepository($path)) { throw new \RuntimeException('The .svn directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); } $util = new SvnUtil($url, $this->io, $this->config, $this->process); $flags = ""; if (version_compare($util->binaryVersion(), '1.7.0', '>=')) { $flags .= ' --ignore-ancestry'; } $this->io->writeError(" Checking out " . $ref); $this->execute($target, $url, "svn switch" . $flags, sprintf("%s/%s", $url, $ref), $path); } /** * {@inheritDoc} */ public function getLocalChanges(PackageInterface $package, $path) { if (!$this->hasMetadataRepository($path)) { return null; } $this->process->execute('svn status --ignore-externals', $output, $path); return preg_match('{^ *[^X ] +}m', $output) ? $output : null; } /** * Execute an SVN command and try to fix up the process with credentials * if necessary. * * @param string $baseUrl Base URL of the repository * @param string $command SVN command to run * @param string $url SVN url * @param string $cwd Working directory * @param string $path Target for a checkout * @throws \RuntimeException * @return string */ protected function execute(PackageInterface $package, $baseUrl, $command, $url, $cwd = null, $path = null) { $util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); $util->setCacheCredentials($this->cacheCredentials); try { return $util->execute($command, $url, $cwd, $path, $this->io->isVerbose()); } catch (\RuntimeException $e) { throw new \RuntimeException( $package->getPrettyName().' could not be downloaded, '.$e->getMessage() ); } } /** * {@inheritDoc} */ protected function cleanChanges(PackageInterface $package, $path, $update) { if (!$changes = $this->getLocalChanges($package, $path)) { return; } if (!$this->io->isInteractive()) { if (true === $this->config->get('discard-changes')) { return $this->discardChanges($path); } return parent::cleanChanges($package, $path, $update); } $changes = array_map(function ($elem) { return ' '.$elem; }, preg_split('{\s*\r?\n\s*}', $changes)); $countChanges = count($changes); $this->io->writeError(sprintf(' '.$package->getPrettyName().' has modified file%s:', $countChanges === 1 ? '' : 's')); $this->io->writeError(array_slice($changes, 0, 10)); if ($countChanges > 10) { $remainingChanges = $countChanges - 10; $this->io->writeError( sprintf( ' '.$remainingChanges.' more file%s modified, choose "v" to view the full list', $remainingChanges === 1 ? '' : 's' ) ); } while (true) { switch ($this->io->ask(' Discard changes [y,n,v,?]? ', '?')) { case 'y': $this->discardChanges($path); break 2; case 'n': throw new \RuntimeException('Update aborted'); case 'v': $this->io->writeError($changes); break; case '?': default: $this->io->writeError(array( ' y - discard changes and apply the '.($update ? 'update' : 'uninstall'), ' n - abort the '.($update ? 'update' : 'uninstall').' and let you manually clean things up', ' v - view modified files', ' ? - print help', )); break; } } } /** * {@inheritDoc} */ protected function getCommitLogs($fromReference, $toReference, $path) { if (preg_match('{@(\d+)$}', $fromReference) && preg_match('{@(\d+)$}', $toReference)) { // retrieve the svn base url from the checkout folder $command = sprintf('svn info --non-interactive --xml -- %s', ProcessExecutor::escape($path)); if (0 !== $this->process->execute($command, $output, $path)) { throw new \RuntimeException( 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput() ); } $urlPattern = '#(.*)#'; if (preg_match($urlPattern, $output, $matches)) { $baseUrl = $matches[1]; } else { throw new \RuntimeException( 'Unable to determine svn url for path '. $path ); } // strip paths from references and only keep the actual revision $fromRevision = preg_replace('{.*@(\d+)$}', '$1', $fromReference); $toRevision = preg_replace('{.*@(\d+)$}', '$1', $toReference); $command = sprintf('svn log -r%s:%s --incremental', ProcessExecutor::escape($fromRevision), ProcessExecutor::escape($toRevision)); $util = new SvnUtil($baseUrl, $this->io, $this->config, $this->process); $util->setCacheCredentials($this->cacheCredentials); try { return $util->executeLocal($command, $path, null, $this->io->isVerbose()); } catch (\RuntimeException $e) { throw new \RuntimeException( 'Failed to execute ' . $command . "\n\n".$e->getMessage() ); } } return "Could not retrieve changes between $fromReference and $toReference due to missing revision information"; } protected function discardChanges($path) { if (0 !== $this->process->execute('svn revert -R .', $output, $path)) { throw new \RuntimeException("Could not reset changes\n\n:".$this->process->getErrorOutput()); } } /** * {@inheritDoc} */ protected function hasMetadataRepository($path) { return is_dir($path.'/.svn'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\ProcessExecutor; use Composer\Util\Hg as HgUtils; /** * @author Per Bernhardt */ class HgDownloader extends VcsDownloader { /** * {@inheritDoc} */ protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null) { if (null === HgUtils::getVersion($this->process)) { throw new \RuntimeException('hg was not found in your PATH, skipping source download'); } } /** * {@inheritDoc} */ protected function doInstall(PackageInterface $package, $path, $url) { $hgUtils = new HgUtils($this->io, $this->config, $this->process); $cloneCommand = function ($url) use ($path) { return sprintf('hg clone -- %s %s', ProcessExecutor::escape($url), ProcessExecutor::escape($path)); }; $hgUtils->runCommand($cloneCommand, $url, $path); $ref = ProcessExecutor::escape($package->getSourceReference()); $command = sprintf('hg up -- %s', $ref); if (0 !== $this->process->execute($command, $ignoredOutput, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } } /** * {@inheritDoc} */ protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url) { $hgUtils = new HgUtils($this->io, $this->config, $this->process); $ref = $target->getSourceReference(); $this->io->writeError(" Updating to ".$target->getSourceReference()); if (!$this->hasMetadataRepository($path)) { throw new \RuntimeException('The .hg directory is missing from '.$path.', see https://getcomposer.org/commit-deps for more information'); } $command = function ($url) use ($ref) { return sprintf('hg pull -- %s && hg up -- %s', ProcessExecutor::escape($url), ProcessExecutor::escape($ref)); }; $hgUtils->runCommand($command, $url, $path); } /** * {@inheritDoc} */ public function getLocalChanges(PackageInterface $package, $path) { if (!is_dir($path.'/.hg')) { return null; } $this->process->execute('hg st', $output, realpath($path)); return trim($output) ?: null; } /** * {@inheritDoc} */ protected function getCommitLogs($fromReference, $toReference, $path) { $command = sprintf('hg log -r %s:%s --style compact', ProcessExecutor::escape($fromReference), ProcessExecutor::escape($toReference)); if (0 !== $this->process->execute($command, $output, realpath($path))) { throw new \RuntimeException('Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput()); } return $output; } /** * {@inheritDoc} */ protected function hasMetadataRepository($path) { return is_dir($path . '/.hg'); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\ProcessExecutor; /** * Xz archive downloader. * * @author Pavel Puchkin * @author Pierre Rudloff */ class XzDownloader extends ArchiveDownloader { protected function extract(PackageInterface $package, $file, $path) { $command = 'tar -xJf ' . ProcessExecutor::escape($file) . ' -C ' . ProcessExecutor::escape($path); if (0 === $this->process->execute($command, $ignoredOutput)) { return; } $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); throw new \RuntimeException($processError); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; class MaxFileSizeExceededException extends TransportException { } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Config; use Composer\Package\Dumper\ArrayDumper; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionGuesser; use Composer\Package\Version\VersionParser; use Composer\Util\ProcessExecutor; use Composer\IO\IOInterface; use Composer\Util\Filesystem; use React\Promise\PromiseInterface; use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UninstallOperation; /** * @author Jordi Boggiano */ abstract class VcsDownloader implements DownloaderInterface, ChangeReportInterface, VcsCapableDownloaderInterface { /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var ProcessExecutor */ protected $process; /** @var Filesystem */ protected $filesystem; /** @var array */ protected $hasCleanedChanges = array(); public function __construct(IOInterface $io, Config $config, ProcessExecutor $process = null, Filesystem $fs = null) { $this->io = $io; $this->config = $config; $this->process = $process ?: new ProcessExecutor($io); $this->filesystem = $fs ?: new Filesystem($this->process); } /** * {@inheritDoc} */ public function getInstallationSource() { return 'source'; } /** * {@inheritDoc} */ public function download(PackageInterface $package, $path, PackageInterface $prevPackage = null) { if (!$package->getSourceReference()) { throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); } $urls = $this->prepareUrls($package->getSourceUrls()); while ($url = array_shift($urls)) { try { return $this->doDownload($package, $path, $url, $prevPackage); } catch (\Exception $e) { // rethrow phpunit exceptions to avoid hard to debug bug failures if ($e instanceof \PHPUnit\Framework\Exception) { throw $e; } if ($this->io->isDebug()) { $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); } elseif (count($urls)) { $this->io->writeError(' Failed, trying the next URL'); } if (!count($urls)) { throw $e; } } } } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, $path, PackageInterface $prevPackage = null) { if ($type === 'update') { $this->cleanChanges($prevPackage, $path, true); $this->hasCleanedChanges[$prevPackage->getUniqueName()] = true; } elseif ($type === 'install') { $this->filesystem->emptyDirectory($path); } elseif ($type === 'uninstall') { $this->cleanChanges($package, $path, false); } } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, $path, PackageInterface $prevPackage = null) { if ($type === 'update' && isset($this->hasCleanedChanges[$prevPackage->getUniqueName()])) { $this->reapplyChanges($path); unset($this->hasCleanedChanges[$prevPackage->getUniqueName()]); } } /** * {@inheritDoc} */ public function install(PackageInterface $package, $path) { if (!$package->getSourceReference()) { throw new \InvalidArgumentException('Package '.$package->getPrettyName().' is missing reference information'); } $this->io->writeError(" - " . InstallOperation::format($package).': ', false); $urls = $this->prepareUrls($package->getSourceUrls()); while ($url = array_shift($urls)) { try { $this->doInstall($package, $path, $url); break; } catch (\Exception $e) { // rethrow phpunit exceptions to avoid hard to debug bug failures if ($e instanceof \PHPUnit\Framework\Exception) { throw $e; } if ($this->io->isDebug()) { $this->io->writeError('Failed: ['.get_class($e).'] '.$e->getMessage()); } elseif (count($urls)) { $this->io->writeError(' Failed, trying the next URL'); } if (!count($urls)) { throw $e; } } } } /** * {@inheritDoc} */ public function update(PackageInterface $initial, PackageInterface $target, $path) { if (!$target->getSourceReference()) { throw new \InvalidArgumentException('Package '.$target->getPrettyName().' is missing reference information'); } $this->io->writeError(" - " . UpdateOperation::format($initial, $target).': ', false); $urls = $this->prepareUrls($target->getSourceUrls()); $exception = null; while ($url = array_shift($urls)) { try { $this->doUpdate($initial, $target, $path, $url); $exception = null; break; } catch (\Exception $exception) { // rethrow phpunit exceptions to avoid hard to debug bug failures if ($exception instanceof \PHPUnit\Framework\Exception) { throw $exception; } if ($this->io->isDebug()) { $this->io->writeError('Failed: ['.get_class($exception).'] '.$exception->getMessage()); } elseif (count($urls)) { $this->io->writeError(' Failed, trying the next URL'); } } } // print the commit logs if in verbose mode and VCS metadata is present // because in case of missing metadata code would trigger another exception if (!$exception && $this->io->isVerbose() && $this->hasMetadataRepository($path)) { $message = 'Pulling in changes:'; $logs = $this->getCommitLogs($initial->getSourceReference(), $target->getSourceReference(), $path); if (!trim($logs)) { $message = 'Rolling back changes:'; $logs = $this->getCommitLogs($target->getSourceReference(), $initial->getSourceReference(), $path); } if (trim($logs)) { $logs = implode("\n", array_map(function ($line) { return ' ' . $line; }, explode("\n", $logs))); // escape angle brackets for proper output in the console $logs = str_replace('<', '\<', $logs); $this->io->writeError(' '.$message); $this->io->writeError($logs); } } if (!$urls && $exception) { throw $exception; } } /** * {@inheritDoc} */ public function remove(PackageInterface $package, $path) { $this->io->writeError(" - " . UninstallOperation::format($package)); if (!$this->filesystem->removeDirectory($path)) { throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); } } /** * {@inheritDoc} */ public function getVcsReference(PackageInterface $package, $path) { $parser = new VersionParser; $guesser = new VersionGuesser($this->config, $this->process, $parser); $dumper = new ArrayDumper; $packageConfig = $dumper->dump($package); if ($packageVersion = $guesser->guessVersion($packageConfig, $path)) { return $packageVersion['commit']; } } /** * Prompt the user to check if changes should be stashed/removed or the operation aborted * * @param PackageInterface $package * @param string $path * @param bool $update if true (update) the changes can be stashed and reapplied after an update, * if false (remove) the changes should be assumed to be lost if the operation is not aborted * @throws \RuntimeException in case the operation must be aborted */ protected function cleanChanges(PackageInterface $package, $path, $update) { // the default implementation just fails if there are any changes, override in child classes to provide stash-ability if (null !== $this->getLocalChanges($package, $path)) { throw new \RuntimeException('Source directory ' . $path . ' has uncommitted changes.'); } } /** * Reapply previously stashes changes if applicable, only called after an update (regardless if successful or not) * * @param string $path * @throws \RuntimeException in case the operation must be aborted or the patch does not apply cleanly */ protected function reapplyChanges($path) { } /** * Downloads data needed to run an install/update later * * @param PackageInterface $package package instance * @param string $path download path * @param string $url package url * @param PackageInterface|null $prevPackage previous package (in case of an update) * * @return PromiseInterface|null */ abstract protected function doDownload(PackageInterface $package, $path, $url, PackageInterface $prevPackage = null); /** * Downloads specific package into specific folder. * * @param PackageInterface $package package instance * @param string $path download path * @param string $url package url * * @return PromiseInterface|null */ abstract protected function doInstall(PackageInterface $package, $path, $url); /** * Updates specific package in specific folder from initial to target version. * * @param PackageInterface $initial initial package * @param PackageInterface $target updated package * @param string $path download path * @param string $url package url * * @return PromiseInterface|null */ abstract protected function doUpdate(PackageInterface $initial, PackageInterface $target, $path, $url); /** * Fetches the commit logs between two commits * * @param string $fromReference the source reference * @param string $toReference the target reference * @param string $path the package path * @return string */ abstract protected function getCommitLogs($fromReference, $toReference, $path); /** * Checks if VCS metadata repository has been initialized * repository example: .git|.svn|.hg * * @param string $path * @return bool */ abstract protected function hasMetadataRepository($path); private function prepareUrls(array $urls) { foreach ($urls as $index => $url) { if (Filesystem::isLocalPath($url)) { // realpath() below will not understand // url that starts with "file://" $fileProtocol = 'file://'; $isFileProtocol = false; if (0 === strpos($url, $fileProtocol)) { $url = substr($url, strlen($fileProtocol)); $isFileProtocol = true; } // realpath() below will not understand %20 spaces etc. if (false !== strpos($url, '%')) { $url = rawurldecode($url); } $urls[$index] = realpath($url); if ($isFileProtocol) { $urls[$index] = $fileProtocol . $urls[$index]; } } } return $urls; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\IniHelper; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; use Symfony\Component\Process\ExecutableFinder; use ZipArchive; /** * @author Jordi Boggiano */ class ZipDownloader extends ArchiveDownloader { protected static $hasSystemUnzip; private static $hasZipArchive; private static $isWindows; /** @var ZipArchive|null */ private $zipArchiveObject; /** * {@inheritDoc} */ public function download(PackageInterface $package, $path, PackageInterface $prevPackage = null, $output = true) { if (null === self::$hasSystemUnzip) { $finder = new ExecutableFinder; self::$hasSystemUnzip = (bool) $finder->find('unzip'); } if (null === self::$hasZipArchive) { self::$hasZipArchive = class_exists('ZipArchive'); } if (!self::$hasZipArchive && !self::$hasSystemUnzip) { // php.ini path is added to the error message to help users find the correct file $iniMessage = IniHelper::getMessage(); $error = "The zip extension and unzip command are both missing, skipping.\n" . $iniMessage; throw new \RuntimeException($error); } if (null === self::$isWindows) { self::$isWindows = Platform::isWindows(); if (!self::$isWindows && !self::$hasSystemUnzip) { $this->io->writeError("As there is no 'unzip' command installed zip files are being unpacked using the PHP zip extension."); $this->io->writeError("This may cause invalid reports of corrupted archives. Besides, any UNIX permissions (e.g. executable) defined in the archives will be lost."); $this->io->writeError("Installing 'unzip' may remediate them."); } } return parent::download($package, $path, $prevPackage, $output); } /** * extract $file to $path with "unzip" command * * @param string $file File to extract * @param string $path Path where to extract file * @param bool $isLastChance If true it is called as a fallback and should throw an exception */ private function extractWithSystemUnzip(PackageInterface $package, $file, $path, $isLastChance, $async = false) { if (!self::$hasZipArchive) { // Force Exception throwing if the Other alternative is not available $isLastChance = true; } if (!self::$hasSystemUnzip && !$isLastChance) { // This was call as the favorite extract way, but is not available // We switch to the alternative return $this->extractWithZipArchive($package, $file, $path, true); } // When called after a ZipArchive failed, perhaps there is some files to overwrite $overwrite = $isLastChance ? '-o' : ''; $command = 'unzip -qq '.$overwrite.' '.ProcessExecutor::escape($file).' -d '.ProcessExecutor::escape($path); if ($async) { $self = $this; $io = $this->io; $tryFallback = function ($processError) use ($isLastChance, $io, $self, $file, $path, $package) { if ($isLastChance) { throw $processError; } if (!is_file($file)) { $io->writeError(' '.$processError->getMessage().''); $io->writeError(' This most likely is due to a custom installer plugin not handling the returned Promise from the downloader'); $io->writeError(' See https://github.com/composer/installers/commit/5006d0c28730ade233a8f42ec31ac68fb1c5c9bb for an example fix'); } else { $io->writeError(' '.$processError->getMessage().''); $io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); $io->writeError(' Unzip with unzip command failed, falling back to ZipArchive class'); } return $self->extractWithZipArchive($package, $file, $path, true); }; try { $promise = $this->process->executeAsync($command); return $promise->then(function ($process) use ($tryFallback, $command, $package, $file) { if (!$process->isSuccessful()) { $output = $process->getErrorOutput(); $output = str_replace(', '.$file.'.zip or '.$file.'.ZIP', '', $output); return $tryFallback(new \RuntimeException('Failed to extract '.$package->getName().': ('.$process->getExitCode().') '.$command."\n\n".$output)); } }); } catch (\Exception $e) { return $tryFallback($e); } catch (\Throwable $e) { return $tryFallback($e); } } $processError = null; try { if (0 === $exitCode = $this->process->execute($command, $ignoredOutput)) { return \React\Promise\resolve(); } $processError = new \RuntimeException('Failed to execute ('.$exitCode.') '.$command."\n\n".$this->process->getErrorOutput()); } catch (\Exception $e) { $processError = $e; } if ($isLastChance) { throw $processError; } $this->io->writeError(' '.$processError->getMessage().''); $this->io->writeError(' The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems)'); $this->io->writeError(' Unzip with unzip command failed, falling back to ZipArchive class'); return $this->extractWithZipArchive($package, $file, $path, true); } /** * extract $file to $path with ZipArchive * * @param string $file File to extract * @param string $path Path where to extract file * @param bool $isLastChance If true it is called as a fallback and should throw an exception * * TODO v3 should make this private once we can drop PHP 5.3 support * @protected */ public function extractWithZipArchive(PackageInterface $package, $file, $path, $isLastChance) { if (!self::$hasSystemUnzip) { // Force Exception throwing if the Other alternative is not available $isLastChance = true; } if (!self::$hasZipArchive && !$isLastChance) { // This was call as the favorite extract way, but is not available // We switch to the alternative return $this->extractWithSystemUnzip($package, $file, $path, true); } $processError = null; $zipArchive = $this->zipArchiveObject ?: new ZipArchive(); try { if (true === ($retval = $zipArchive->open($file))) { $extractResult = $zipArchive->extractTo($path); if (true === $extractResult) { $zipArchive->close(); return \React\Promise\resolve(); } $processError = new \RuntimeException(rtrim("There was an error extracting the ZIP file, it is either corrupted or using an invalid format.\n")); } else { $processError = new \UnexpectedValueException(rtrim($this->getErrorMessage($retval, $file)."\n"), $retval); } } catch (\ErrorException $e) { $processError = new \RuntimeException('The archive may contain identical file names with different capitalization (which fails on case insensitive filesystems): '.$e->getMessage(), 0, $e); } catch (\Exception $e) { $processError = $e; } catch (\Throwable $e) { $processError = $e; } if ($isLastChance) { throw $processError; } $this->io->writeError(' '.$processError->getMessage().''); $this->io->writeError(' Unzip with ZipArchive class failed, falling back to unzip command'); return $this->extractWithSystemUnzip($package, $file, $path, true); } /** * extract $file to $path * * @param string $file File to extract * @param string $path Path where to extract file * * TODO v3 should make this private once we can drop PHP 5.3 support * @protected */ public function extract(PackageInterface $package, $file, $path) { // Each extract calls its alternative if not available or fails if (self::$isWindows) { return $this->extractWithZipArchive($package, $file, $path, false); } return $this->extractWithSystemUnzip($package, $file, $path, false, true); } /** * Give a meaningful error message to the user. * * @param int $retval * @param string $file * @return string */ protected function getErrorMessage($retval, $file) { switch ($retval) { case ZipArchive::ER_EXISTS: return sprintf("File '%s' already exists.", $file); case ZipArchive::ER_INCONS: return sprintf("Zip archive '%s' is inconsistent.", $file); case ZipArchive::ER_INVAL: return sprintf("Invalid argument (%s)", $file); case ZipArchive::ER_MEMORY: return sprintf("Malloc failure (%s)", $file); case ZipArchive::ER_NOENT: return sprintf("No such zip file: '%s'", $file); case ZipArchive::ER_NOZIP: return sprintf("'%s' is not a zip archive.", $file); case ZipArchive::ER_OPEN: return sprintf("Can't open zip file: %s", $file); case ZipArchive::ER_READ: return sprintf("Zip read error (%s)", $file); case ZipArchive::ER_SEEK: return sprintf("Zip seek error (%s)", $file); default: return sprintf("'%s' is not a valid zip archive, got error code: %s", $file, $retval); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Package\PackageInterface; use Composer\Util\Platform; use Composer\Util\ProcessExecutor; /** * GZip archive downloader. * * @author Pavel Puchkin */ class GzipDownloader extends ArchiveDownloader { protected function extract(PackageInterface $package, $file, $path) { $filename = pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_FILENAME); $targetFilepath = $path . DIRECTORY_SEPARATOR . $filename; // Try to use gunzip on *nix if (!Platform::isWindows()) { $command = 'gzip -cd -- ' . ProcessExecutor::escape($file) . ' > ' . ProcessExecutor::escape($targetFilepath); if (0 === $this->process->execute($command, $ignoredOutput)) { return; } if (extension_loaded('zlib')) { // Fallback to using the PHP extension. $this->extractUsingExt($file, $targetFilepath); return; } $processError = 'Failed to execute ' . $command . "\n\n" . $this->process->getErrorOutput(); throw new \RuntimeException($processError); } // Windows version of PHP has built-in support of gzip functions $this->extractUsingExt($file, $targetFilepath); } private function extractUsingExt($file, $targetFilepath) { $archiveFile = gzopen($file, 'rb'); $targetFile = fopen($targetFilepath, 'wb'); while ($string = gzread($archiveFile, 4096)) { fwrite($targetFile, $string, Platform::strlen($string)); } gzclose($archiveFile); fclose($targetFile); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Downloader; use Composer\Config; use Composer\Cache; use Composer\IO\IOInterface; use Composer\IO\NullIO; use Composer\Exception\IrrecoverableDownloadException; use Composer\Package\Comparer\Comparer; use Composer\DependencyResolver\Operation\UpdateOperation; use Composer\DependencyResolver\Operation\InstallOperation; use Composer\DependencyResolver\Operation\UninstallOperation; use Composer\Package\PackageInterface; use Composer\Plugin\PluginEvents; use Composer\Plugin\PostFileDownloadEvent; use Composer\Plugin\PreFileDownloadEvent; use Composer\EventDispatcher\EventDispatcher; use Composer\Util\Filesystem; use Composer\Util\Silencer; use Composer\Util\HttpDownloader; use Composer\Util\Url as UrlUtil; use Composer\Util\ProcessExecutor; use React\Promise\PromiseInterface; /** * Base downloader for files * * @author Kirill chEbba Chebunin * @author Jordi Boggiano * @author François Pluchino * @author Nils Adermann */ class FileDownloader implements DownloaderInterface, ChangeReportInterface { /** @var IOInterface */ protected $io; /** @var Config */ protected $config; /** @var HttpDownloader */ protected $httpDownloader; /** @var Filesystem */ protected $filesystem; /** @var Cache */ protected $cache; /** @var EventDispatcher */ protected $eventDispatcher; /** @var ProcessExecutor */ protected $process; /** * @private this is only public for php 5.3 support in closures */ public $lastCacheWrites = array(); private $additionalCleanupPaths = array(); /** * Constructor. * * @param IOInterface $io The IO instance * @param Config $config The config * @param HttpDownloader $httpDownloader The remote filesystem * @param EventDispatcher $eventDispatcher The event dispatcher * @param Cache $cache Cache instance * @param Filesystem $filesystem The filesystem */ public function __construct(IOInterface $io, Config $config, HttpDownloader $httpDownloader, EventDispatcher $eventDispatcher = null, Cache $cache = null, Filesystem $filesystem = null, ProcessExecutor $process = null) { $this->io = $io; $this->config = $config; $this->eventDispatcher = $eventDispatcher; $this->httpDownloader = $httpDownloader; $this->cache = $cache; $this->process = $process ?: new ProcessExecutor($io); $this->filesystem = $filesystem ?: new Filesystem($this->process); if ($this->cache && $this->cache->gcIsNecessary()) { $this->cache->gc($config->get('cache-files-ttl'), $config->get('cache-files-maxsize')); } } /** * {@inheritDoc} */ public function getInstallationSource() { return 'dist'; } /** * {@inheritDoc} */ public function download(PackageInterface $package, $path, PackageInterface $prevPackage = null, $output = true) { if (!$package->getDistUrl()) { throw new \InvalidArgumentException('The given package is missing url information'); } $cacheKeyGenerator = function (PackageInterface $package, $key) { $cacheKey = sha1($key); return $package->getName().'/'.$cacheKey.'.'.$package->getDistType(); }; $retries = 3; $urls = $package->getDistUrls(); foreach ($urls as $index => $url) { $processedUrl = $this->processUrl($package, $url); $urls[$index] = array( 'base' => $url, 'processed' => $processedUrl, // we use the complete download url here to avoid conflicting entries // from different packages, which would potentially allow a given package // in a third party repo to pre-populate the cache for the same package in // packagist for example. 'cacheKey' => $cacheKeyGenerator($package, $processedUrl), ); } $fileName = $this->getFileName($package, $path); $this->filesystem->ensureDirectoryExists($path); $this->filesystem->ensureDirectoryExists(dirname($fileName)); $io = $this->io; $cache = $this->cache; $httpDownloader = $this->httpDownloader; $eventDispatcher = $this->eventDispatcher; $filesystem = $this->filesystem; $self = $this; $accept = null; $reject = null; $download = function () use ($io, $output, $httpDownloader, $cache, $cacheKeyGenerator, $eventDispatcher, $package, $fileName, &$urls, &$accept, &$reject) { $url = reset($urls); $index = key($urls); if ($eventDispatcher) { $preFileDownloadEvent = new PreFileDownloadEvent(PluginEvents::PRE_FILE_DOWNLOAD, $httpDownloader, $url['processed'], 'package', $package); $eventDispatcher->dispatch($preFileDownloadEvent->getName(), $preFileDownloadEvent); if ($preFileDownloadEvent->getCustomCacheKey() !== null) { $url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getCustomCacheKey()); } elseif ($preFileDownloadEvent->getProcessedUrl() !== $url['processed']) { $url['cacheKey'] = $cacheKeyGenerator($package, $preFileDownloadEvent->getProcessedUrl()); } $url['processed'] = $preFileDownloadEvent->getProcessedUrl(); } $urls[$index] = $url; $checksum = $package->getDistSha1Checksum(); $cacheKey = $url['cacheKey']; // use from cache if it is present and has a valid checksum or we have no checksum to check against if ($cache && (!$checksum || $checksum === $cache->sha1($cacheKey)) && $cache->copyTo($cacheKey, $fileName)) { if ($output) { $io->writeError(" - Loading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ") from cache", true, IOInterface::VERY_VERBOSE); } $result = \React\Promise\resolve($fileName); } else { if ($output) { $io->writeError(" - Downloading " . $package->getName() . " (" . $package->getFullPrettyVersion() . ")"); } $result = $httpDownloader->addCopy($url['processed'], $fileName, $package->getTransportOptions()) ->then($accept, $reject); } return $result->then(function ($result) use ($fileName, $checksum, $url, $package, $eventDispatcher) { // in case of retry, the first call's Promise chain finally calls this twice at the end, // once with $result being the returned $fileName from $accept, and then once for every // failed request with a null result, which can be skipped. if (null === $result) { return $fileName; } if (!file_exists($fileName)) { throw new \UnexpectedValueException($url['base'].' could not be saved to '.$fileName.', make sure the' .' directory is writable and you have internet connectivity'); } if ($checksum && hash_file('sha1', $fileName) !== $checksum) { throw new \UnexpectedValueException('The checksum verification of the file failed (downloaded from '.$url['base'].')'); } if ($eventDispatcher) { $postFileDownloadEvent = new PostFileDownloadEvent(PluginEvents::POST_FILE_DOWNLOAD, $fileName, $checksum, $url['processed'], $package); $eventDispatcher->dispatch($postFileDownloadEvent->getName(), $postFileDownloadEvent); } return $fileName; }); }; $accept = function ($response) use ($cache, $package, $fileName, $self, &$urls) { $url = reset($urls); $cacheKey = $url['cacheKey']; if ($cache && !$cache->isReadOnly()) { $self->lastCacheWrites[$package->getName()] = $cacheKey; $cache->copyFrom($cacheKey, $fileName); } $response->collect(); return $fileName; }; $reject = function ($e) use ($io, &$urls, $download, $fileName, $package, &$retries, $filesystem, $self) { // clean up if (file_exists($fileName)) { $filesystem->unlink($fileName); } $self->clearLastCacheWrite($package); if ($e instanceof IrrecoverableDownloadException) { throw $e; } if ($e instanceof MaxFileSizeExceededException) { throw $e; } if ($e instanceof TransportException) { // if we got an http response with a proper code, then requesting again will probably not help, abort if ((0 !== $e->getCode() && !in_array($e->getCode(), array(500, 502, 503, 504))) || !$retries) { $retries = 0; } } // special error code returned when network is being artificially disabled if ($e instanceof TransportException && $e->getStatusCode() === 499) { $retries = 0; $urls = array(); } if ($retries) { usleep(500000); $retries--; return $download(); } array_shift($urls); if ($urls) { if ($io->isDebug()) { $io->writeError(' Failed downloading '.$package->getName().': ['.get_class($e).'] '.$e->getCode().': '.$e->getMessage()); $io->writeError(' Trying the next URL for '.$package->getName()); } else { $io->writeError(' Failed downloading '.$package->getName().', trying the next URL ('.$e->getCode().': '.$e->getMessage().')'); } $retries = 3; usleep(100000); return $download(); } throw $e; }; return $download(); } /** * {@inheritDoc} */ public function prepare($type, PackageInterface $package, $path, PackageInterface $prevPackage = null) { } /** * {@inheritDoc} */ public function cleanup($type, PackageInterface $package, $path, PackageInterface $prevPackage = null) { $fileName = $this->getFileName($package, $path); if (file_exists($fileName)) { $this->filesystem->unlink($fileName); } $dirsToCleanUp = array( $this->config->get('vendor-dir').'/composer/', $this->config->get('vendor-dir'), $path, ); if (isset($this->additionalCleanupPaths[$package->getName()])) { foreach ($this->additionalCleanupPaths[$package->getName()] as $path) { $this->filesystem->remove($path); } } foreach ($dirsToCleanUp as $dir) { if (is_dir($dir) && $this->filesystem->isDirEmpty($dir) && realpath($dir) !== getcwd()) { $this->filesystem->removeDirectory($dir); } } } /** * {@inheritDoc} */ public function install(PackageInterface $package, $path, $output = true) { if ($output) { $this->io->writeError(" - " . InstallOperation::format($package)); } $this->filesystem->emptyDirectory($path); $this->filesystem->ensureDirectoryExists($path); $this->filesystem->rename($this->getFileName($package, $path), $path . '/' . pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_BASENAME)); if ($package->getBinaries()) { // Single files can not have a mode set like files in archives // so we make sure if the file is a binary that it is executable foreach ($package->getBinaries() as $bin) { if (file_exists($path . '/' . $bin) && !is_executable($path . '/' . $bin)) { Silencer::call('chmod', $path . '/' . $bin, 0777 & ~umask()); } } } } /** * TODO mark private in v3 * @protected This is public due to PHP 5.3 */ public function clearLastCacheWrite(PackageInterface $package) { if ($this->cache && isset($this->lastCacheWrites[$package->getName()])) { $this->cache->remove($this->lastCacheWrites[$package->getName()]); unset($this->lastCacheWrites[$package->getName()]); } } /** * TODO mark private in v3 * @protected This is public due to PHP 5.3 */ public function addCleanupPath(PackageInterface $package, $path) { $this->additionalCleanupPaths[$package->getName()][] = $path; } /** * TODO mark private in v3 * @protected This is public due to PHP 5.3 */ public function removeCleanupPath(PackageInterface $package, $path) { if (isset($this->additionalCleanupPaths[$package->getName()])) { $idx = array_search($path, $this->additionalCleanupPaths[$package->getName()]); if (false !== $idx) { unset($this->additionalCleanupPaths[$package->getName()][$idx]); } } } /** * {@inheritDoc} */ public function update(PackageInterface $initial, PackageInterface $target, $path) { $this->io->writeError(" - " . UpdateOperation::format($initial, $target) . ": ", false); $promise = $this->remove($initial, $path, false); if ($promise === null || !$promise instanceof PromiseInterface) { $promise = \React\Promise\resolve(); } $self = $this; $io = $this->io; return $promise->then(function () use ($self, $target, $path, $io) { $promise = $self->install($target, $path, false); $io->writeError(''); return $promise; }); } /** * {@inheritDoc} */ public function remove(PackageInterface $package, $path, $output = true) { if ($output) { $this->io->writeError(" - " . UninstallOperation::format($package)); } if (!$this->filesystem->removeDirectory($path)) { throw new \RuntimeException('Could not completely delete '.$path.', aborting.'); } } /** * Gets file name for specific package * * @param PackageInterface $package package instance * @param string $path download path * @return string file name */ protected function getFileName(PackageInterface $package, $path) { return rtrim($this->config->get('vendor-dir').'/composer/tmp-'.md5($package.spl_object_hash($package)).'.'.pathinfo(parse_url($package->getDistUrl(), PHP_URL_PATH), PATHINFO_EXTENSION), '.'); } /** * Process the download url * * @param PackageInterface $package package the url is coming from * @param string $url download url * @throws \RuntimeException If any problem with the url * @return string url */ protected function processUrl(PackageInterface $package, $url) { if (!extension_loaded('openssl') && 0 === strpos($url, 'https:')) { throw new \RuntimeException('You must enable the openssl extension to download files via https'); } if ($package->getDistReference()) { $url = UrlUtil::updateDistReference($this->config, $url, $package->getDistReference()); } return $url; } /** * {@inheritDoc} * @throws \RuntimeException */ public function getLocalChanges(PackageInterface $package, $targetDir) { $prevIO = $this->io; $this->io = new NullIO; $this->io->loadConfiguration($this->config); $e = null; $output = ''; $targetDir = Filesystem::trimTrailingSlash($targetDir); try { if (is_dir($targetDir.'_compare')) { $this->filesystem->removeDirectory($targetDir.'_compare'); } $this->download($package, $targetDir.'_compare', null, false); $this->httpDownloader->wait(); $this->install($package, $targetDir.'_compare', false); $this->process->wait(); $comparer = new Comparer(); $comparer->setSource($targetDir.'_compare'); $comparer->setUpdate($targetDir); $comparer->doCompare(); $output = $comparer->getChanged(true, true); $this->filesystem->removeDirectory($targetDir.'_compare'); } catch (\Exception $e) { } $this->io = $prevIO; if ($e) { throw $e; } return trim($output); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Config; use Composer\Json\JsonFile; use Composer\Json\JsonManipulator; use Composer\Json\JsonValidationException; use Composer\Util\Silencer; /** * JSON Configuration Source * * @author Jordi Boggiano * @author Beau Simensen */ class JsonConfigSource implements ConfigSourceInterface { /** * @var JsonFile */ private $file; /** * @var bool */ private $authConfig; /** * Constructor * * @param JsonFile $file * @param bool $authConfig */ public function __construct(JsonFile $file, $authConfig = false) { $this->file = $file; $this->authConfig = $authConfig; } /** * {@inheritdoc} */ public function getName() { return $this->file->getPath(); } /** * {@inheritdoc} */ public function addRepository($name, $config, $append = true) { $this->manipulateJson('addRepository', $name, $config, $append, function (&$config, $repo, $repoConfig) use ($append) { // if converting from an array format to hashmap format, and there is a {"packagist.org":false} repo, we have // to convert it to "packagist.org": false key on the hashmap otherwise it fails schema validation if (isset($config['repositories'])) { foreach ($config['repositories'] as $index => $val) { if ($index === $repo) { continue; } if (is_numeric($index) && ($val === array('packagist' => false) || $val === array('packagist.org' => false))) { unset($config['repositories'][$index]); $config['repositories']['packagist.org'] = false; break; } } } if ($append) { $config['repositories'][$repo] = $repoConfig; } else { $config['repositories'] = array($repo => $repoConfig) + $config['repositories']; } }); } /** * {@inheritdoc} */ public function removeRepository($name) { $this->manipulateJson('removeRepository', $name, function (&$config, $repo) { unset($config['repositories'][$repo]); }); } /** * {@inheritdoc} */ public function addConfigSetting($name, $value) { $authConfig = $this->authConfig; $this->manipulateJson('addConfigSetting', $name, $value, function (&$config, $key, $val) use ($authConfig) { if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { list($key, $host) = explode('.', $key, 2); if ($authConfig) { $config[$key][$host] = $val; } else { $config['config'][$key][$host] = $val; } } else { $config['config'][$key] = $val; } }); } /** * {@inheritdoc} */ public function removeConfigSetting($name) { $authConfig = $this->authConfig; $this->manipulateJson('removeConfigSetting', $name, function (&$config, $key) use ($authConfig) { if (preg_match('{^(bitbucket-oauth|github-oauth|gitlab-oauth|gitlab-token|bearer|http-basic|platform)\.}', $key)) { list($key, $host) = explode('.', $key, 2); if ($authConfig) { unset($config[$key][$host]); } else { unset($config['config'][$key][$host]); } } else { unset($config['config'][$key]); } }); } /** * {@inheritdoc} */ public function addProperty($name, $value) { $this->manipulateJson('addProperty', $name, $value, function (&$config, $key, $val) { if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { $bits = explode('.', $key); $last = array_pop($bits); $arr = &$config[reset($bits)]; foreach ($bits as $bit) { if (!isset($arr[$bit])) { $arr[$bit] = array(); } $arr = &$arr[$bit]; } $arr[$last] = $val; } else { $config[$key] = $val; } }); } /** * {@inheritdoc} */ public function removeProperty($name) { $this->manipulateJson('removeProperty', $name, function (&$config, $key) { if (strpos($key, 'extra.') === 0 || strpos($key, 'scripts.') === 0) { $bits = explode('.', $key); $last = array_pop($bits); $arr = &$config[reset($bits)]; foreach ($bits as $bit) { if (!isset($arr[$bit])) { return; } $arr = &$arr[$bit]; } unset($arr[$last]); } else { unset($config[$key]); } }); } /** * {@inheritdoc} */ public function addLink($type, $name, $value) { $this->manipulateJson('addLink', $type, $name, $value, function (&$config, $type, $name, $value) { $config[$type][$name] = $value; }); } /** * {@inheritdoc} */ public function removeLink($type, $name) { $this->manipulateJson('removeSubNode', $type, $name, function (&$config, $type, $name) { unset($config[$type][$name]); }); $this->manipulateJson('removeMainKeyIfEmpty', $type, function (&$config, $type) { if (0 === count($config[$type])) { unset($config[$type]); } }); } protected function manipulateJson($method, $args, $fallback) { $args = func_get_args(); // remove method & fallback array_shift($args); $fallback = array_pop($args); if ($this->file->exists()) { if (!is_writable($this->file->getPath())) { throw new \RuntimeException(sprintf('The file "%s" is not writable.', $this->file->getPath())); } if (!is_readable($this->file->getPath())) { throw new \RuntimeException(sprintf('The file "%s" is not readable.', $this->file->getPath())); } $contents = file_get_contents($this->file->getPath()); } elseif ($this->authConfig) { $contents = "{\n}\n"; } else { $contents = "{\n \"config\": {\n }\n}\n"; } $manipulator = new JsonManipulator($contents); $newFile = !$this->file->exists(); // override manipulator method for auth config files if ($this->authConfig && $method === 'addConfigSetting') { $method = 'addSubNode'; list($mainNode, $name) = explode('.', $args[0], 2); $args = array($mainNode, $name, $args[1]); } elseif ($this->authConfig && $method === 'removeConfigSetting') { $method = 'removeSubNode'; list($mainNode, $name) = explode('.', $args[0], 2); $args = array($mainNode, $name); } // try to update cleanly if (call_user_func_array(array($manipulator, $method), $args)) { file_put_contents($this->file->getPath(), $manipulator->getContents()); } else { // on failed clean update, call the fallback and rewrite the whole file $config = $this->file->read(); $this->arrayUnshiftRef($args, $config); call_user_func_array($fallback, $args); // avoid ending up with arrays for keys that should be objects foreach (array('require', 'require-dev', 'conflict', 'provide', 'replace', 'suggest', 'config', 'autoload', 'autoload-dev', 'scripts', 'scripts-descriptions', 'support') as $prop) { if (isset($config[$prop]) && $config[$prop] === array()) { $config[$prop] = new \stdClass; } } foreach (array('psr-0', 'psr-4') as $prop) { if (isset($config['autoload'][$prop]) && $config['autoload'][$prop] === array()) { $config['autoload'][$prop] = new \stdClass; } if (isset($config['autoload-dev'][$prop]) && $config['autoload-dev'][$prop] === array()) { $config['autoload-dev'][$prop] = new \stdClass; } } foreach (array('platform', 'http-basic', 'bearer', 'gitlab-token', 'gitlab-oauth', 'github-oauth', 'preferred-install') as $prop) { if (isset($config['config'][$prop]) && $config['config'][$prop] === array()) { $config['config'][$prop] = new \stdClass; } } $this->file->write($config); } try { $this->file->validateSchema(JsonFile::LAX_SCHEMA); } catch (JsonValidationException $e) { // restore contents to the original state file_put_contents($this->file->getPath(), $contents); throw new \RuntimeException('Failed to update composer.json with a valid format, reverting to the original content. Please report an issue to us with details (command you run and a copy of your composer.json).', 0, $e); } if ($newFile) { Silencer::call('chmod', $this->file->getPath(), 0600); } } /** * Prepend a reference to an element to the beginning of an array. * * @param array $array * @param mixed $value * @return int */ private function arrayUnshiftRef(&$array, &$value) { $return = array_unshift($array, ''); $array[0] = &$value; return $return; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Config; /** * Configuration Source Interface * * @author Jordi Boggiano * @author Beau Simensen */ interface ConfigSourceInterface { /** * Add a repository * * @param string $name Name * @param array|false $config Configuration */ public function addRepository($name, $config, $append = true); /** * Remove a repository * * @param string $name */ public function removeRepository($name); /** * Add a config setting * * @param string $name Name * @param string|array $value Value */ public function addConfigSetting($name, $value); /** * Remove a config setting * * @param string $name */ public function removeConfigSetting($name); /** * Add a property * * @param string $name Name * @param string $value Value */ public function addProperty($name, $value); /** * Remove a property * * @param string $name */ public function removeProperty($name); /** * Add a package link * * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) * @param string $name Name * @param string $value Value */ public function addLink($type, $name, $value); /** * Remove a package link * * @param string $type Type (require, require-dev, provide, suggest, replace, conflict) * @param string $name Name */ public function removeLink($type, $name); /** * Gives a user-friendly name to this source (file path or so) * * @return string */ public function getName(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * @author Nils Adermann */ class SolverBugException extends \RuntimeException { public function __construct($message) { parent::__construct( $message."\nThis exception was most likely caused by a bug in Composer.\n". "Please report the command you ran, the exact error you received, and your composer.json on https://github.com/composer/composer/issues - thank you!\n" ); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Package\BasePackage; use Composer\Semver\Constraint\Constraint; /** * @author Nils Adermann * @author Jordi Boggiano */ class DefaultPolicy implements PolicyInterface { private $preferStable; private $preferLowest; public function __construct($preferStable = false, $preferLowest = false) { $this->preferStable = $preferStable; $this->preferLowest = $preferLowest; } public function versionCompare(PackageInterface $a, PackageInterface $b, $operator) { if ($this->preferStable && ($stabA = $a->getStability()) !== ($stabB = $b->getStability())) { return BasePackage::$stabilities[$stabA] < BasePackage::$stabilities[$stabB]; } $constraint = new Constraint($operator, $b->getVersion()); $version = new Constraint('==', $a->getVersion()); return $constraint->matchSpecific($version, true); } public function selectPreferredPackages(Pool $pool, array $literals, $requiredPackage = null) { $packages = $this->groupLiteralsByName($pool, $literals); $policy = $this; foreach ($packages as &$nameLiterals) { usort($nameLiterals, function ($a, $b) use ($policy, $pool, $requiredPackage) { return $policy->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage, true); }); } foreach ($packages as &$sortedLiterals) { $sortedLiterals = $this->pruneToBestVersion($pool, $sortedLiterals); $sortedLiterals = $this->pruneRemoteAliases($pool, $sortedLiterals); } $selected = \call_user_func_array('array_merge', array_values($packages)); // now sort the result across all packages to respect replaces across packages usort($selected, function ($a, $b) use ($policy, $pool, $requiredPackage) { return $policy->compareByPriority($pool, $pool->literalToPackage($a), $pool->literalToPackage($b), $requiredPackage); }); return $selected; } protected function groupLiteralsByName(Pool $pool, $literals) { $packages = array(); foreach ($literals as $literal) { $packageName = $pool->literalToPackage($literal)->getName(); if (!isset($packages[$packageName])) { $packages[$packageName] = array(); } $packages[$packageName][] = $literal; } return $packages; } /** * @protected */ public function compareByPriority(Pool $pool, PackageInterface $a, PackageInterface $b, $requiredPackage = null, $ignoreReplace = false) { // prefer aliases to the original package if ($a->getName() === $b->getName()) { $aAliased = $a instanceof AliasPackage; $bAliased = $b instanceof AliasPackage; if ($aAliased && !$bAliased) { return -1; // use a } if (!$aAliased && $bAliased) { return 1; // use b } } if (!$ignoreReplace) { // return original, not replaced if ($this->replaces($a, $b)) { return 1; // use b } if ($this->replaces($b, $a)) { return -1; // use a } // for replacers not replacing each other, put a higher prio on replacing // packages with the same vendor as the required package if ($requiredPackage && false !== ($pos = strpos($requiredPackage, '/'))) { $requiredVendor = substr($requiredPackage, 0, $pos); $aIsSameVendor = strpos($a->getName(), $requiredVendor) === 0; $bIsSameVendor = strpos($b->getName(), $requiredVendor) === 0; if ($bIsSameVendor !== $aIsSameVendor) { return $aIsSameVendor ? -1 : 1; } } } // priority equal, sort by package id to make reproducible if ($a->id === $b->id) { return 0; } return ($a->id < $b->id) ? -1 : 1; } /** * Checks if source replaces a package with the same name as target. * * Replace constraints are ignored. This method should only be used for * prioritisation, not for actual constraint verification. * * @param PackageInterface $source * @param PackageInterface $target * @return bool */ protected function replaces(PackageInterface $source, PackageInterface $target) { foreach ($source->getReplaces() as $link) { if ($link->getTarget() === $target->getName() // && (null === $link->getConstraint() || // $link->getConstraint()->matches(new Constraint('==', $target->getVersion())))) { ) { return true; } } return false; } protected function pruneToBestVersion(Pool $pool, $literals) { $operator = $this->preferLowest ? '<' : '>'; $bestLiterals = array($literals[0]); $bestPackage = $pool->literalToPackage($literals[0]); foreach ($literals as $i => $literal) { if (0 === $i) { continue; } $package = $pool->literalToPackage($literal); if ($this->versionCompare($package, $bestPackage, $operator)) { $bestPackage = $package; $bestLiterals = array($literal); } elseif ($this->versionCompare($package, $bestPackage, '==')) { $bestLiterals[] = $literal; } } return $bestLiterals; } /** * Assumes that locally aliased (in root package requires) packages take priority over branch-alias ones * * If no package is a local alias, nothing happens */ protected function pruneRemoteAliases(Pool $pool, array $literals) { $hasLocalAlias = false; foreach ($literals as $literal) { $package = $pool->literalToPackage($literal); if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { $hasLocalAlias = true; break; } } if (!$hasLocalAlias) { return $literals; } $selected = array(); foreach ($literals as $literal) { $package = $pool->literalToPackage($literal); if ($package instanceof AliasPackage && $package->isRootPackageAlias()) { $selected[] = $literal; } } return $selected; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; use Composer\Package\Link; /** * @author Nils Adermann */ class Rule2Literals extends Rule { protected $literal1; protected $literal2; /** * @param int $literal1 * @param int $literal2 * @param int $reason A RULE_* constant describing the reason for generating this rule * @param Link|PackageInterface $reasonData */ public function __construct($literal1, $literal2, $reason, $reasonData) { parent::__construct($reason, $reasonData); if ($literal1 < $literal2) { $this->literal1 = $literal1; $this->literal2 = $literal2; } else { $this->literal1 = $literal2; $this->literal2 = $literal1; } } public function getLiterals() { return array($this->literal1, $this->literal2); } public function getHash() { return $this->literal1.','.$this->literal2; } /** * Checks if this rule is equal to another one * * Ignores whether either of the rules is disabled. * * @param Rule $rule The rule to check against * @return bool Whether the rules are equal */ public function equals(Rule $rule) { // specialized fast-case if ($rule instanceof self) { if ($this->literal1 !== $rule->literal1) { return false; } if ($this->literal2 !== $rule->literal2) { return false; } return true; } $literals = $rule->getLiterals(); if (2 != \count($literals)) { return false; } if ($this->literal1 !== $literals[0]) { return false; } if ($this->literal2 !== $literals[1]) { return false; } return true; } public function isAssertion() { return false; } /** * Formats a rule as a string of the format (Literal1|Literal2|...) * * @return string */ public function __toString() { $result = $this->isDisabled() ? 'disabled(' : '('; $result .= $this->literal1 . '|' . $this->literal2 . ')'; return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * An extension of SplDoublyLinkedList with seek and removal of current element * * SplDoublyLinkedList only allows deleting a particular offset and has no * method to set the internal iterator to a particular offset. * * @author Nils Adermann */ class RuleWatchChain extends \SplDoublyLinkedList { protected $offset = 0; /** * Moves the internal iterator to the specified offset * * @param int $offset The offset to seek to. */ public function seek($offset) { $this->rewind(); for ($i = 0; $i < $offset; $i++, $this->next()); } /** * Removes the current element from the list * * As SplDoublyLinkedList only allows deleting a particular offset and * incorrectly sets the internal iterator if you delete the current value * this method sets the internal iterator back to the following element * using the seek method. */ public function remove() { $offset = $this->key(); $this->offsetUnset($offset); $this->seek($offset); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; use Composer\Package\PackageInterface; /** * Solver install operation. * * @author Konstantin Kudryashov */ class InstallOperation extends SolverOperation implements OperationInterface { const TYPE = 'install'; /** * @var PackageInterface */ protected $package; public function __construct(PackageInterface $package) { $this->package = $package; } /** * Returns package instance. * * @return PackageInterface */ public function getPackage() { return $this->package; } /** * {@inheritDoc} */ public function show($lock) { return self::format($this->package, $lock); } public static function format(PackageInterface $package, $lock = false) { return ($lock ? 'Locking ' : 'Installing ').''.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; use Composer\Package\PackageInterface; /** * Solver uninstall operation. * * @author Konstantin Kudryashov */ class UninstallOperation extends SolverOperation implements OperationInterface { const TYPE = 'uninstall'; /** * @var PackageInterface */ protected $package; public function __construct(PackageInterface $package) { $this->package = $package; } /** * Returns package instance. * * @return PackageInterface */ public function getPackage() { return $this->package; } /** * {@inheritDoc} */ public function show($lock) { return self::format($this->package, $lock); } public static function format(PackageInterface $package, $lock = false) { return 'Removing '.$package->getPrettyName().' ('.$package->getFullPrettyVersion().')'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; /** * Solver operation interface. * * @author Konstantin Kudryashov */ interface OperationInterface { /** * Returns operation type. * * @return string */ public function getOperationType(); /** * Serializes the operation in a human readable format * * @param bool $lock Whether this is an operation on the lock file * @return string */ public function show($lock); /** * Serializes the operation in a human readable format * * @return string */ public function __toString(); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; use Composer\Package\AliasPackage; /** * Solver install operation. * * @author Nils Adermann */ class MarkAliasInstalledOperation extends SolverOperation implements OperationInterface { const TYPE = 'markAliasInstalled'; /** * @var AliasPackage */ protected $package; public function __construct(AliasPackage $package) { $this->package = $package; } /** * Returns package instance. * * @return AliasPackage */ public function getPackage() { return $this->package; } /** * {@inheritDoc} */ public function show($lock) { return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as installed, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionParser; /** * Solver update operation. * * @author Konstantin Kudryashov */ class UpdateOperation extends SolverOperation implements OperationInterface { const TYPE = 'update'; /** * @var PackageInterface */ protected $initialPackage; /** * @var PackageInterface */ protected $targetPackage; /** * @param PackageInterface $initial initial package * @param PackageInterface $target target package (updated) */ public function __construct(PackageInterface $initial, PackageInterface $target) { $this->initialPackage = $initial; $this->targetPackage = $target; } /** * Returns initial package. * * @return PackageInterface */ public function getInitialPackage() { return $this->initialPackage; } /** * Returns target package. * * @return PackageInterface */ public function getTargetPackage() { return $this->targetPackage; } /** * {@inheritDoc} */ public function show($lock) { return self::format($this->initialPackage, $this->targetPackage, $lock); } public static function format(PackageInterface $initialPackage, PackageInterface $targetPackage, $lock = false) { $fromVersion = $initialPackage->getFullPrettyVersion(); $toVersion = $targetPackage->getFullPrettyVersion(); if ($fromVersion === $toVersion && $initialPackage->getSourceReference() !== $targetPackage->getSourceReference()) { $fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); $toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_SOURCE_REF); } elseif ($fromVersion === $toVersion && $initialPackage->getDistReference() !== $targetPackage->getDistReference()) { $fromVersion = $initialPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); $toVersion = $targetPackage->getFullPrettyVersion(true, PackageInterface::DISPLAY_DIST_REF); } $actionName = VersionParser::isUpgrade($initialPackage->getVersion(), $targetPackage->getVersion()) ? 'Upgrading' : 'Downgrading'; return $actionName.' '.$initialPackage->getPrettyName().' ('.$fromVersion.' => '.$toVersion.')'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; use Composer\Package\AliasPackage; /** * Solver install operation. * * @author Nils Adermann */ class MarkAliasUninstalledOperation extends SolverOperation implements OperationInterface { const TYPE = 'markAliasUninstalled'; /** * @var AliasPackage */ protected $package; public function __construct(AliasPackage $package) { $this->package = $package; } /** * Returns package instance. * * @return AliasPackage */ public function getPackage() { return $this->package; } /** * {@inheritDoc} */ public function show($lock) { return 'Marking '.$this->package->getPrettyName().' ('.$this->package->getFullPrettyVersion().') as uninstalled, alias of '.$this->package->getAliasOf()->getPrettyName().' ('.$this->package->getAliasOf()->getFullPrettyVersion().')'; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver\Operation; /** * Abstract operation class. * * @author Aleksandr Bezpiatov */ abstract class SolverOperation implements OperationInterface { const TYPE = null; /** * Returns operation type. * * @return string */ public function getOperationType() { return static::TYPE; } /** * {@inheritDoc} */ public function __toString() { return $this->show(false); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * @author Nils Adermann */ class RuleSetIterator implements \Iterator { protected $rules; protected $types; protected $currentOffset; protected $currentType; protected $currentTypeOffset; public function __construct(array $rules) { $this->rules = $rules; $this->types = array_keys($rules); sort($this->types); $this->rewind(); } public function current() { return $this->rules[$this->currentType][$this->currentOffset]; } public function key() { return $this->currentType; } public function next() { $this->currentOffset++; if (!isset($this->rules[$this->currentType])) { return; } if ($this->currentOffset >= \count($this->rules[$this->currentType])) { $this->currentOffset = 0; do { $this->currentTypeOffset++; if (!isset($this->types[$this->currentTypeOffset])) { $this->currentType = -1; break; } $this->currentType = $this->types[$this->currentTypeOffset]; } while (isset($this->types[$this->currentTypeOffset]) && !\count($this->rules[$this->currentType])); } } public function rewind() { $this->currentOffset = 0; $this->currentTypeOffset = -1; $this->currentType = -1; do { $this->currentTypeOffset++; if (!isset($this->types[$this->currentTypeOffset])) { $this->currentType = -1; break; } $this->currentType = $this->types[$this->currentTypeOffset]; } while (isset($this->types[$this->currentTypeOffset]) && !\count($this->rules[$this->currentType])); } public function valid() { return isset($this->rules[$this->currentType], $this->rules[$this->currentType][$this->currentOffset]); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * The RuleWatchGraph efficiently propagates decisions to other rules * * All rules generated for solving a SAT problem should be inserted into the * graph. When a decision on a literal is made, the graph can be used to * propagate the decision to all other rules involving the literal, leading to * other trivial decisions resulting from unit clauses. * * @author Nils Adermann */ class RuleWatchGraph { protected $watchChains = array(); /** * Inserts a rule node into the appropriate chains within the graph * * The node is prepended to the watch chains for each of the two literals it * watches. * * Assertions are skipped because they only depend on a single package and * have no alternative literal that could be true, so there is no need to * watch changes in any literals. * * @param RuleWatchNode $node The rule node to be inserted into the graph */ public function insert(RuleWatchNode $node) { if ($node->getRule()->isAssertion()) { return; } if (!$node->getRule() instanceof MultiConflictRule) { foreach (array($node->watch1, $node->watch2) as $literal) { if (!isset($this->watchChains[$literal])) { $this->watchChains[$literal] = new RuleWatchChain; } $this->watchChains[$literal]->unshift($node); } } else { foreach ($node->getRule()->getLiterals() as $literal) { if (!isset($this->watchChains[$literal])) { $this->watchChains[$literal] = new RuleWatchChain; } $this->watchChains[$literal]->unshift($node); } } } /** * Propagates a decision on a literal to all rules watching the literal * * If a decision, e.g. +A has been made, then all rules containing -A, e.g. * (-A|+B|+C) now need to satisfy at least one of the other literals, so * that the rule as a whole becomes true, since with +A applied the rule * is now (false|+B|+C) so essentially (+B|+C). * * This means that all rules watching the literal -A need to be updated to * watch 2 other literals which can still be satisfied instead. So literals * that conflict with previously made decisions are not an option. * * Alternatively it can occur that a unit clause results: e.g. if in the * above example the rule was (-A|+B), then A turning true means that * B must now be decided true as well. * * @param int $decidedLiteral The literal which was decided (A in our example) * @param int $level The level at which the decision took place and at which * all resulting decisions should be made. * @param Decisions $decisions Used to check previous decisions and to * register decisions resulting from propagation * @return Rule|null If a conflict is found the conflicting rule is returned */ public function propagateLiteral($decidedLiteral, $level, $decisions) { // we invert the decided literal here, example: // A was decided => (-A|B) now requires B to be true, so we look for // rules which are fulfilled by -A, rather than A. $literal = -$decidedLiteral; if (!isset($this->watchChains[$literal])) { return null; } $chain = $this->watchChains[$literal]; $chain->rewind(); while ($chain->valid()) { $node = $chain->current(); if (!$node->getRule() instanceof MultiConflictRule) { $otherWatch = $node->getOtherWatch($literal); if (!$node->getRule()->isDisabled() && !$decisions->satisfy($otherWatch)) { $ruleLiterals = $node->getRule()->getLiterals(); $alternativeLiterals = array_filter($ruleLiterals, function ($ruleLiteral) use ($literal, $otherWatch, $decisions) { return $literal !== $ruleLiteral && $otherWatch !== $ruleLiteral && !$decisions->conflict($ruleLiteral); }); if ($alternativeLiterals) { reset($alternativeLiterals); $this->moveWatch($literal, current($alternativeLiterals), $node); continue; } if ($decisions->conflict($otherWatch)) { return $node->getRule(); } $decisions->decide($otherWatch, $level, $node->getRule()); } } else { foreach ($node->getRule()->getLiterals() as $otherLiteral) { if ($literal !== $otherLiteral && !$decisions->satisfy($otherLiteral)) { if ($decisions->conflict($otherLiteral)) { return $node->getRule(); } $decisions->decide($otherLiteral, $level, $node->getRule()); } } } $chain->next(); } return null; } /** * Moves a rule node from one watch chain to another * * The rule node's watched literals are updated accordingly. * * @param int $fromLiteral A literal the node used to watch * @param int $toLiteral A literal the node should watch now * @param RuleWatchNode $node The rule node to be moved */ protected function moveWatch($fromLiteral, $toLiteral, $node) { if (!isset($this->watchChains[$toLiteral])) { $this->watchChains[$toLiteral] = new RuleWatchChain; } $node->moveWatch($fromLiteral, $toLiteral); $this->watchChains[$fromLiteral]->remove(); $this->watchChains[$toLiteral]->unshift($node); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Util\IniHelper; use Composer\Repository\RepositorySet; /** * @author Nils Adermann */ class SolverProblemsException extends \RuntimeException { protected $problems; protected $learnedPool; public function __construct(array $problems, array $learnedPool) { $this->problems = $problems; $this->learnedPool = $learnedPool; parent::__construct('Failed resolving dependencies with '.count($problems).' problems, call getPrettyString to get formatted details', 2); } public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, $isVerbose, $isDevExtraction = false) { $installedMap = $request->getPresentMap(true); $hasExtensionProblems = false; $isCausedByLock = false; $problems = array(); foreach ($this->problems as $problem) { $problems[] = $problem->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $this->learnedPool)."\n"; if (!$hasExtensionProblems && $this->hasExtensionProblems($problem->getReasons())) { $hasExtensionProblems = true; } $isCausedByLock |= $problem->isCausedByLock($repositorySet, $request, $pool); } $i = 1; $text = "\n"; foreach (array_unique($problems) as $problem) { $text .= " Problem ".($i++).$problem; } $hints = array(); if (!$isDevExtraction && (strpos($text, 'could not be found') || strpos($text, 'no matching package found'))) { $hints[] = "Potential causes:\n - A typo in the package name\n - The package is not available in a stable-enough version according to your minimum-stability setting\n see for more details.\n - It's a private package and you forgot to add a custom repository to find it\n\nRead for further common problems."; } if ($hasExtensionProblems) { $hints[] = $this->createExtensionHint(); } if ($isCausedByLock && !$isDevExtraction && !$request->getUpdateAllowTransitiveRootDependencies()) { $hints[] = "Use the option --with-all-dependencies (-W) to allow upgrades, downgrades and removals for packages currently locked to specific versions."; } if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match') && strpos($text, '- ocramius/package-versions')) { $hints[] = "ocramius/package-versions only provides support for Composer 2 in 1.8+, which requires PHP 7.4.\nIf you can not upgrade PHP you can require composer/package-versions-deprecated to resolve this with PHP 7.0+."; } if (!class_exists('PHPUnit\Framework\TestCase', false)) { if (strpos($text, 'found composer-plugin-api[2.0.0] but it does not match')) { $hints[] = "You are using Composer 2, which some of your plugins seem to be incompatible with. Make sure you update your plugins or report a plugin-issue to ask them to support Composer 2."; } } if ($hints) { $text .= "\n" . implode("\n\n", $hints); } return $text; } public function getProblems() { return $this->problems; } private function createExtensionHint() { $paths = IniHelper::getAll(); if (count($paths) === 1 && empty($paths[0])) { return ''; } $text = "To enable extensions, verify that they are enabled in your .ini files:\n - "; $text .= implode("\n - ", $paths); $text .= "\nYou can also run `php --ini` inside terminal to see which files are used by PHP in CLI mode."; return $text; } private function hasExtensionProblems(array $reasonSets) { foreach ($reasonSets as $reasonSet) { foreach ($reasonSet as $rule) { if (0 === strpos($rule->getRequiredPackage(), 'ext-')) { return true; } } } return false; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\EventDispatcher\EventDispatcher; use Composer\IO\IOInterface; use Composer\Package\AliasPackage; use Composer\Package\BasePackage; use Composer\Package\PackageInterface; use Composer\Package\Version\StabilityFilter; use Composer\Plugin\PluginEvents; use Composer\Plugin\PrePoolCreateEvent; use Composer\Repository\PlatformRepository; use Composer\Repository\RootPackageRepository; use Composer\Semver\CompilingMatcher; use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Semver\Constraint\MultiConstraint; use Composer\Semver\Intervals; /** * @author Nils Adermann */ class PoolBuilder { /** * @var int[] */ private $acceptableStabilities; /** * @var int[] */ private $stabilityFlags; /** * @psalm-var array> */ private $rootAliases; /** * @psalm-var array */ private $rootReferences; /** * @var EventDispatcher */ private $eventDispatcher; /** * @var IOInterface */ private $io; /** * @psalm-var array */ private $aliasMap = array(); /** * @psalm-var array */ private $packagesToLoad = array(); /** * @psalm-var array */ private $loadedPackages = array(); /** * @psalm-var array>> */ private $loadedPerRepo = array(); /** * @psalm-var Package[] */ private $packages = array(); /** * @psalm-var list */ private $unacceptableFixedOrLockedPackages = array(); private $updateAllowList = array(); private $skippedLoad = array(); /** * Keeps a list of dependencies which are root requirements, and as such * have already their maximum required range loaded and can not be * extended by markPackageNameForLoading * * Packages get cleared from this list if they get unlocked as in that case * we need to actually load them */ private $maxExtendedReqs = array(); /** * @psalm-var array */ private $updateAllowWarned = array(); private $indexCounter = 0; /** * @param int[] $acceptableStabilities array of stability => BasePackage::STABILITY_* value * @psalm-param array $acceptableStabilities * @param int[] $stabilityFlags an array of package name => BasePackage::STABILITY_* value * @psalm-param array $stabilityFlags * @param array[] $rootAliases * @psalm-param array> $rootAliases * @param string[] $rootReferences an array of package name => source reference * @psalm-param array $rootReferences */ public function __construct(array $acceptableStabilities, array $stabilityFlags, array $rootAliases, array $rootReferences, IOInterface $io, EventDispatcher $eventDispatcher = null) { $this->acceptableStabilities = $acceptableStabilities; $this->stabilityFlags = $stabilityFlags; $this->rootAliases = $rootAliases; $this->rootReferences = $rootReferences; $this->eventDispatcher = $eventDispatcher; $this->io = $io; } public function buildPool(array $repositories, Request $request) { if ($request->getUpdateAllowList()) { $this->updateAllowList = $request->getUpdateAllowList(); $this->warnAboutNonMatchingUpdateAllowList($request); foreach ($request->getLockedRepository()->getPackages() as $lockedPackage) { if (!$this->isUpdateAllowed($lockedPackage)) { $request->lockPackage($lockedPackage); $lockedName = $lockedPackage->getName(); // remember which packages we skipped loading remote content for in this partial update $this->skippedLoad[$lockedName] = $lockedName; foreach ($lockedPackage->getReplaces() as $link) { $this->skippedLoad[$link->getTarget()] = $lockedName; } } } } foreach ($request->getFixedOrLockedPackages() as $package) { // using MatchAllConstraint here because fixed packages do not need to retrigger // loading any packages $this->loadedPackages[$package->getName()] = new MatchAllConstraint(); // replace means conflict, so if a fixed package replaces a name, no need to load that one, packages would conflict anyways foreach ($package->getReplaces() as $link) { $this->loadedPackages[$link->getTarget()] = new MatchAllConstraint(); } // TODO in how far can we do the above for conflicts? It's more tricky cause conflicts can be limited to // specific versions while replace is a conflict with all versions of the name if ( $package->getRepository() instanceof RootPackageRepository || $package->getRepository() instanceof PlatformRepository || StabilityFilter::isPackageAcceptable($this->acceptableStabilities, $this->stabilityFlags, $package->getNames(), $package->getStability()) ) { $this->loadPackage($request, $package, false); } else { $this->unacceptableFixedOrLockedPackages[] = $package; } } foreach ($request->getRequires() as $packageName => $constraint) { // fixed and locked packages have already been added, so if a root require needs one of them, no need to do anything if (isset($this->loadedPackages[$packageName])) { continue; } $this->packagesToLoad[$packageName] = $constraint; $this->maxExtendedReqs[$packageName] = true; } // clean up packagesToLoad for anything we manually marked loaded above foreach ($this->packagesToLoad as $name => $constraint) { if (isset($this->loadedPackages[$name])) { unset($this->packagesToLoad[$name]); } } while (!empty($this->packagesToLoad)) { $this->loadPackagesMarkedForLoading($request, $repositories); } foreach ($this->packages as $i => $package) { // we check all alias related packages at once, so no need to check individual aliases // isset also checks non-null value if (!$package instanceof AliasPackage) { $constraint = new Constraint('==', $package->getVersion()); $aliasedPackages = array($i => $package); if (isset($this->aliasMap[spl_object_hash($package)])) { $aliasedPackages += $this->aliasMap[spl_object_hash($package)]; } $found = false; foreach ($aliasedPackages as $packageOrAlias) { if (CompilingMatcher::match($constraint, Constraint::OP_EQ, $packageOrAlias->getVersion())) { $found = true; } } if (!$found) { foreach ($aliasedPackages as $index => $packageOrAlias) { unset($this->packages[$index]); } } } } if ($this->eventDispatcher) { $prePoolCreateEvent = new PrePoolCreateEvent( PluginEvents::PRE_POOL_CREATE, $repositories, $request, $this->acceptableStabilities, $this->stabilityFlags, $this->rootAliases, $this->rootReferences, $this->packages, $this->unacceptableFixedOrLockedPackages ); $this->eventDispatcher->dispatch($prePoolCreateEvent->getName(), $prePoolCreateEvent); $this->packages = $prePoolCreateEvent->getPackages(); $this->unacceptableFixedOrLockedPackages = $prePoolCreateEvent->getUnacceptableFixedPackages(); } $pool = new Pool($this->packages, $this->unacceptableFixedOrLockedPackages); $this->aliasMap = array(); $this->packagesToLoad = array(); $this->loadedPackages = array(); $this->loadedPerRepo = array(); $this->packages = array(); $this->unacceptableFixedOrLockedPackages = array(); $this->maxExtendedReqs = array(); $this->skippedLoad = array(); $this->indexCounter = 0; Intervals::clear(); return $pool; } private function markPackageNameForLoading(Request $request, $name, ConstraintInterface $constraint) { // Skip platform requires at this stage if (PlatformRepository::isPlatformPackage($name)) { return; } // Root require (which was not unlocked) already loaded the maximum range so no // need to check anything here if (isset($this->maxExtendedReqs[$name])) { return; } // Root requires can not be overruled by dependencies so there is no point in // extending the loaded constraint for those. // This is triggered when loading a root require which was locked but got unlocked, then // we make sure that we load at most the intervals covered by the root constraint. $rootRequires = $request->getRequires(); if (isset($rootRequires[$name]) && !Intervals::isSubsetOf($constraint, $rootRequires[$name])) { $constraint = $rootRequires[$name]; } // Not yet loaded or already marked for a reload, set the constraint to be loaded if (!isset($this->loadedPackages[$name])) { // Maybe it was already marked before but not loaded yet. In that case // we have to extend the constraint (we don't check if they are identical because // MultiConstraint::create() will optimize anyway) if (isset($this->packagesToLoad[$name])) { // Already marked for loading and this does not expand the constraint to be loaded, nothing to do if (Intervals::isSubsetOf($constraint, $this->packagesToLoad[$name])) { return; } // extend the constraint to be loaded $constraint = Intervals::compactConstraint(MultiConstraint::create(array($this->packagesToLoad[$name], $constraint), false)); } $this->packagesToLoad[$name] = $constraint; return; } // No need to load this package with this constraint because it is // a subset of the constraint with which we have already loaded packages if (Intervals::isSubsetOf($constraint, $this->loadedPackages[$name])) { return; } // We have already loaded that package but not in the constraint that's // required. We extend the constraint and mark that package as not being loaded // yet so we get the required package versions $this->packagesToLoad[$name] = Intervals::compactConstraint(MultiConstraint::create(array($this->loadedPackages[$name], $constraint), false)); unset($this->loadedPackages[$name]); } private function loadPackagesMarkedForLoading(Request $request, $repositories) { foreach ($this->packagesToLoad as $name => $constraint) { $this->loadedPackages[$name] = $constraint; } $packageBatch = $this->packagesToLoad; $this->packagesToLoad = array(); foreach ($repositories as $repoIndex => $repository) { if (empty($packageBatch)) { break; } // these repos have their packages fixed or locked if they need to be loaded so we // never need to load anything else from them if ($repository instanceof PlatformRepository || $repository === $request->getLockedRepository()) { continue; } $result = $repository->loadPackages($packageBatch, $this->acceptableStabilities, $this->stabilityFlags, isset($this->loadedPerRepo[$repoIndex]) ? $this->loadedPerRepo[$repoIndex] : array()); foreach ($result['namesFound'] as $name) { // avoid loading the same package again from other repositories once it has been found unset($packageBatch[$name]); } foreach ($result['packages'] as $package) { $this->loadedPerRepo[$repoIndex][$package->getName()][$package->getVersion()] = $package; $this->loadPackage($request, $package); } } } private function loadPackage(Request $request, PackageInterface $package, $propagateUpdate = true) { $index = $this->indexCounter++; $this->packages[$index] = $package; if ($package instanceof AliasPackage) { $this->aliasMap[spl_object_hash($package->getAliasOf())][$index] = $package; } $name = $package->getName(); // we're simply setting the root references on all versions for a name here and rely on the solver to pick the // right version. It'd be more work to figure out which versions and which aliases of those versions this may // apply to if (isset($this->rootReferences[$name])) { // do not modify the references on already locked or fixed packages if (!$request->isLockedPackage($package) && !$request->isFixedPackage($package)) { $package->setSourceDistReferences($this->rootReferences[$name]); } } // if propogateUpdate is false we are loading a fixed or locked package, root aliases do not apply as they are // manually loaded as separate packages in this case if ($propagateUpdate && isset($this->rootAliases[$name][$package->getVersion()])) { $alias = $this->rootAliases[$name][$package->getVersion()]; if ($package instanceof AliasPackage) { $basePackage = $package->getAliasOf(); } else { $basePackage = $package; } $aliasPackage = new AliasPackage($basePackage, $alias['alias_normalized'], $alias['alias']); $aliasPackage->setRootPackageAlias(true); $newIndex = $this->indexCounter++; $this->packages[$newIndex] = $aliasPackage; $this->aliasMap[spl_object_hash($aliasPackage->getAliasOf())][$newIndex] = $aliasPackage; } foreach ($package->getRequires() as $link) { $require = $link->getTarget(); $linkConstraint = $link->getConstraint(); // if the required package is loaded as a locked package only and hasn't had its deps analyzed if (isset($this->skippedLoad[$require])) { // if we're doing a full update or this is a partial update with transitive deps and we're currently // looking at a package which needs to be updated we need to unlock the package we now know is a // dependency of another package which we are trying to update, and then attempt to load it again if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { if ($request->getUpdateAllowTransitiveRootDependencies() || !$this->isRootRequire($request, $this->skippedLoad[$require])) { $this->unlockPackage($request, $require); $this->markPackageNameForLoading($request, $require, $linkConstraint); } elseif (!isset($this->updateAllowWarned[$this->skippedLoad[$require]])) { $this->updateAllowWarned[$this->skippedLoad[$require]] = true; $this->io->writeError('Dependency "'.$this->skippedLoad[$require].'" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); } } } else { $this->markPackageNameForLoading($request, $require, $linkConstraint); } } // if we're doing a partial update with deps we also need to unlock packages which are being replaced in case // they are currently locked and thus prevent this updateable package from being installable/updateable if ($propagateUpdate && $request->getUpdateAllowTransitiveDependencies()) { foreach ($package->getReplaces() as $link) { $replace = $link->getTarget(); if (isset($this->loadedPackages[$replace], $this->skippedLoad[$replace])) { if ($request->getUpdateAllowTransitiveRootDependencies() || !$this->isRootRequire($request, $this->skippedLoad[$replace])) { $this->unlockPackage($request, $replace); $this->markPackageNameForLoading($request, $replace, $link->getConstraint()); } elseif (!$request->getUpdateAllowTransitiveRootDependencies() && $this->isRootRequire($request, $replace) && !isset($this->updateAllowWarned[$replace])) { $this->updateAllowWarned[$replace] = true; $this->io->writeError('Dependency "'.$replace.'" is also a root requirement. Package has not been listed as an update argument, so keeping locked at old version. Use --with-all-dependencies (-W) to include root dependencies.'); } } } } } /** * Checks if a particular name is required directly in the request * * @return bool */ private function isRootRequire(Request $request, $name) { $rootRequires = $request->getRequires(); return isset($rootRequires[$name]); } /** * Checks whether the update allow list allows this package in the lock file to be updated * @return bool */ private function isUpdateAllowed(PackageInterface $package) { foreach ($this->updateAllowList as $pattern => $void) { $patternRegexp = BasePackage::packageNameToRegexp($pattern); if (preg_match($patternRegexp, $package->getName())) { return true; } } return false; } private function warnAboutNonMatchingUpdateAllowList(Request $request) { foreach ($this->updateAllowList as $pattern => $void) { $patternRegexp = BasePackage::packageNameToRegexp($pattern); // update pattern matches a locked package? => all good foreach ($request->getLockedRepository()->getPackages() as $package) { if (preg_match($patternRegexp, $package->getName())) { continue 2; } } // update pattern matches a root require? => all good, probably a new package foreach ($request->getRequires() as $packageName => $constraint) { if (preg_match($patternRegexp, $packageName)) { continue 2; } } if (strpos($pattern, '*') !== false) { $this->io->writeError('Pattern "' . $pattern . '" listed for update does not match any locked packages.'); } else { $this->io->writeError('Package "' . $pattern . '" listed for update is not locked.'); } } } /** * Reverts the decision to use a locked package if a partial update with transitive dependencies * found that this package actually needs to be updated */ private function unlockPackage(Request $request, $name) { if ( // if we unfixed a replaced package name, we also need to unfix the replacer itself $this->skippedLoad[$name] !== $name // as long as it was not unfixed yet && isset($this->skippedLoad[$this->skippedLoad[$name]]) ) { $this->unlockPackage($request, $this->skippedLoad[$name]); } unset($this->skippedLoad[$name], $this->loadedPackages[$name], $this->maxExtendedReqs[$name]); // remove locked package by this name which was already initialized foreach ($request->getLockedPackages() as $lockedPackage) { if (!($lockedPackage instanceof AliasPackage) && $lockedPackage->getName() === $name) { if (false !== $index = array_search($lockedPackage, $this->packages, true)) { $request->unlockPackage($lockedPackage); $this->removeLoadedPackage($request, $lockedPackage, $index); // make sure that any requirements for this package by other locked or fixed packages are now // also loaded, as they were previously ignored because the locked (now unlocked) package already // satisfied their requirements foreach ($request->getFixedOrLockedPackages() as $fixedOrLockedPackage) { if ($fixedOrLockedPackage !== $lockedPackage && isset($this->skippedLoad[$fixedOrLockedPackage->getName()])) { foreach ($fixedOrLockedPackage->getRequires() as $requireLink) { if ($requireLink->getTarget() === $lockedPackage->getName()) { $this->markPackageNameForLoading($request, $lockedPackage->getName(), $requireLink->getConstraint()); } } } } } } } } private function removeLoadedPackage(Request $request, PackageInterface $package, $index) { unset($this->packages[$index]); if (isset($this->aliasMap[spl_object_hash($package)])) { foreach ($this->aliasMap[spl_object_hash($package)] as $aliasIndex => $aliasPackage) { $request->unlockPackage($aliasPackage); unset($this->packages[$aliasIndex]); } unset($this->aliasMap[spl_object_hash($package)]); } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\Package; use Composer\Package\PackageInterface; use Composer\Repository\LockArrayRepository; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\MatchAllConstraint; /** * @author Nils Adermann */ class Request { /** * Identifies a partial update for listed packages only, all dependencies will remain at locked versions */ const UPDATE_ONLY_LISTED = 0; /** * Identifies a partial update for listed packages and recursively all their dependencies, however dependencies * also directly required by the root composer.json and their dependencies will remain at the locked version. */ const UPDATE_LISTED_WITH_TRANSITIVE_DEPS_NO_ROOT_REQUIRE = 1; /** * Identifies a partial update for listed packages and recursively all their dependencies, even dependencies * also directly required by the root composer.json will be updated. */ const UPDATE_LISTED_WITH_TRANSITIVE_DEPS = 2; protected $lockedRepository; protected $requires = array(); protected $fixedPackages = array(); protected $lockedPackages = array(); protected $fixedLockedPackages = array(); protected $updateAllowList = array(); protected $updateAllowTransitiveDependencies = false; public function __construct(LockArrayRepository $lockedRepository = null) { $this->lockedRepository = $lockedRepository; } public function requireName($packageName, ConstraintInterface $constraint = null) { $packageName = strtolower($packageName); if ($constraint === null) { $constraint = new MatchAllConstraint(); } if (isset($this->requires[$packageName])) { throw new \LogicException('Overwriting requires seems like a bug ('.$packageName.' '.$this->requires[$packageName]->getPrettyString().' => '.$constraint->getPrettyString().', check why it is happening, might be a root alias'); } $this->requires[$packageName] = $constraint; } /** * Mark a package as currently present and having to remain installed * * This is used for platform packages which cannot be modified by Composer. A rule enforcing their installation is * generated for dependency resolution. Partial updates with dependencies cannot in any way modify these packages. */ public function fixPackage(PackageInterface $package) { $this->fixedPackages[spl_object_hash($package)] = $package; } /** * Mark a package as locked to a specific version but removable * * This is used for lock file packages which need to be treated similar to fixed packages by the pool builder in * that by default they should really only have the currently present version loaded and no remote alternatives. * * However unlike fixed packages there will not be a special rule enforcing their installation for the solver, so * if nothing requires these packages they will be removed. Additionally in a partial update these packages can be * unlocked, meaning other versions can be installed if explicitly requested as part of the update. */ public function lockPackage(PackageInterface $package) { $this->lockedPackages[spl_object_hash($package)] = $package; } /** * Marks a locked package fixed. So it's treated irremovable like a platform package. * * This is necessary for the composer install step which verifies the lock file integrity and should not allow * removal of any packages. At the same time lock packages there cannot simply be marked fixed, as error reporting * would then report them as platform packages, so this still marks them as locked packages at the same time. */ public function fixLockedPackage(PackageInterface $package) { $this->fixedPackages[spl_object_hash($package)] = $package; $this->fixedLockedPackages[spl_object_hash($package)] = $package; } public function unlockPackage(PackageInterface $package) { unset($this->lockedPackages[spl_object_hash($package)]); } public function setUpdateAllowList($updateAllowList, $updateAllowTransitiveDependencies) { $this->updateAllowList = $updateAllowList; $this->updateAllowTransitiveDependencies = $updateAllowTransitiveDependencies; } public function getUpdateAllowList() { return $this->updateAllowList; } public function getUpdateAllowTransitiveDependencies() { return $this->updateAllowTransitiveDependencies !== self::UPDATE_ONLY_LISTED; } public function getUpdateAllowTransitiveRootDependencies() { return $this->updateAllowTransitiveDependencies === self::UPDATE_LISTED_WITH_TRANSITIVE_DEPS; } public function getRequires() { return $this->requires; } public function getFixedPackages() { return $this->fixedPackages; } public function isFixedPackage(PackageInterface $package) { return isset($this->fixedPackages[spl_object_hash($package)]); } public function getLockedPackages() { return $this->lockedPackages; } public function isLockedPackage(PackageInterface $package) { return isset($this->lockedPackages[spl_object_hash($package)]) || isset($this->fixedLockedPackages[spl_object_hash($package)]); } public function getFixedOrLockedPackages() { return array_merge($this->fixedPackages, $this->lockedPackages); } // TODO look into removing the packageIds option, the only place true is used is for the installed map in the solver problems // some locked packages may not be in the pool so they have a package->id of -1 public function getPresentMap($packageIds = false) { $presentMap = array(); if ($this->lockedRepository) { foreach ($this->lockedRepository->getPackages() as $package) { $presentMap[$packageIds ? $package->id : spl_object_hash($package)] = $package; } } foreach ($this->fixedPackages as $package) { $presentMap[$packageIds ? $package->id : spl_object_hash($package)] = $package; } return $presentMap; } public function getFixedPackagesMap() { $fixedPackagesMap = array(); foreach ($this->fixedPackages as $package) { $fixedPackagesMap[$package->id] = $package; } return $fixedPackagesMap; } public function getLockedRepository() { return $this->lockedRepository; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; /** * @author Nils Adermann */ interface PolicyInterface { public function versionCompare(PackageInterface $a, PackageInterface $b, $operator); public function selectPreferredPackages(Pool $pool, array $literals, $requiredPackage = null); } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\IO\IOInterface; use Composer\Package\PackageInterface; use Composer\Repository\PlatformRepository; /** * @author Nils Adermann */ class Solver { const BRANCH_LITERALS = 0; const BRANCH_LEVEL = 1; /** @var PolicyInterface */ protected $policy; /** @var Pool */ protected $pool; /** @var RuleSet */ protected $rules; /** @var RuleWatchGraph */ protected $watchGraph; /** @var Decisions */ protected $decisions; /** @var PackageInterface[] */ protected $fixedMap; /** @var int */ protected $propagateIndex; /** @var array[] */ protected $branches = array(); /** @var Problem[] */ protected $problems = array(); /** @var array */ protected $learnedPool = array(); /** @var array */ protected $learnedWhy = array(); /** @var bool */ public $testFlagLearnedPositiveLiteral = false; /** @var IOInterface */ protected $io; /** * @param PolicyInterface $policy * @param Pool $pool * @param IOInterface $io */ public function __construct(PolicyInterface $policy, Pool $pool, IOInterface $io) { $this->io = $io; $this->policy = $policy; $this->pool = $pool; } /** * @return int */ public function getRuleSetSize() { return \count($this->rules); } public function getPool() { return $this->pool; } // aka solver_makeruledecisions private function makeAssertionRuleDecisions() { $decisionStart = \count($this->decisions) - 1; $rulesCount = \count($this->rules); for ($ruleIndex = 0; $ruleIndex < $rulesCount; $ruleIndex++) { $rule = $this->rules->ruleById[$ruleIndex]; if (!$rule->isAssertion() || $rule->isDisabled()) { continue; } $literals = $rule->getLiterals(); $literal = $literals[0]; if (!$this->decisions->decided($literal)) { $this->decisions->decide($literal, 1, $rule); continue; } if ($this->decisions->satisfy($literal)) { continue; } // found a conflict if (RuleSet::TYPE_LEARNED === $rule->getType()) { $rule->disable(); continue; } $conflict = $this->decisions->decisionRule($literal); if ($conflict && RuleSet::TYPE_PACKAGE === $conflict->getType()) { $problem = new Problem(); $problem->addRule($rule); $problem->addRule($conflict); $rule->disable(); $this->problems[] = $problem; continue; } // conflict with another root require/fixed package $problem = new Problem(); $problem->addRule($rule); $problem->addRule($conflict); // push all of our rules (can only be root require/fixed package rules) // asserting this literal on the problem stack foreach ($this->rules->getIteratorFor(RuleSet::TYPE_REQUEST) as $assertRule) { if ($assertRule->isDisabled() || !$assertRule->isAssertion()) { continue; } $assertRuleLiterals = $assertRule->getLiterals(); $assertRuleLiteral = $assertRuleLiterals[0]; if (abs($literal) !== abs($assertRuleLiteral)) { continue; } $problem->addRule($assertRule); $assertRule->disable(); } $this->problems[] = $problem; $this->decisions->resetToOffset($decisionStart); $ruleIndex = -1; } } protected function setupFixedMap(Request $request) { $this->fixedMap = array(); foreach ($request->getFixedPackages() as $package) { $this->fixedMap[$package->id] = $package; } } /** * @param Request $request * @param bool|array $ignorePlatformReqs */ protected function checkForRootRequireProblems(Request $request, $ignorePlatformReqs) { foreach ($request->getRequires() as $packageName => $constraint) { if ((true === $ignorePlatformReqs || (is_array($ignorePlatformReqs) && in_array($packageName, $ignorePlatformReqs, true))) && PlatformRepository::isPlatformPackage($packageName)) { continue; } if (!$this->pool->whatProvides($packageName, $constraint)) { $problem = new Problem(); $problem->addRule(new GenericRule(array(), Rule::RULE_ROOT_REQUIRE, array('packageName' => $packageName, 'constraint' => $constraint))); $this->problems[] = $problem; } } } /** * @param Request $request * @param bool|array $ignorePlatformReqs * @return LockTransaction */ public function solve(Request $request, $ignorePlatformReqs = false) { $this->setupFixedMap($request); $this->io->writeError('Generating rules', true, IOInterface::DEBUG); $ruleSetGenerator = new RuleSetGenerator($this->policy, $this->pool); $this->rules = $ruleSetGenerator->getRulesFor($request, $ignorePlatformReqs); unset($ruleSetGenerator); $this->checkForRootRequireProblems($request, $ignorePlatformReqs); $this->decisions = new Decisions($this->pool); $this->watchGraph = new RuleWatchGraph; foreach ($this->rules as $rule) { $this->watchGraph->insert(new RuleWatchNode($rule)); } /* make decisions based on root require/fix assertions */ $this->makeAssertionRuleDecisions(); $this->io->writeError('Resolving dependencies through SAT', true, IOInterface::DEBUG); $before = microtime(true); $this->runSat(); $this->io->writeError('', true, IOInterface::DEBUG); $this->io->writeError(sprintf('Dependency resolution completed in %.3f seconds', microtime(true) - $before), true, IOInterface::VERBOSE); if ($this->problems) { throw new SolverProblemsException($this->problems, $this->learnedPool); } return new LockTransaction($this->pool, $request->getPresentMap(), $request->getFixedPackagesMap(), $this->decisions); } /** * Makes a decision and propagates it to all rules. * * Evaluates each term affected by the decision (linked through watches) * If we find unit rules we make new decisions based on them * * @param int $level * @return Rule|null A rule on conflict, otherwise null. */ protected function propagate($level) { while ($this->decisions->validOffset($this->propagateIndex)) { $decision = $this->decisions->atOffset($this->propagateIndex); $conflict = $this->watchGraph->propagateLiteral( $decision[Decisions::DECISION_LITERAL], $level, $this->decisions ); $this->propagateIndex++; if ($conflict) { return $conflict; } } return null; } /** * Reverts a decision at the given level. * * @param int $level */ private function revert($level) { while (!$this->decisions->isEmpty()) { $literal = $this->decisions->lastLiteral(); if ($this->decisions->undecided($literal)) { break; } $decisionLevel = $this->decisions->decisionLevel($literal); if ($decisionLevel <= $level) { break; } $this->decisions->revertLast(); $this->propagateIndex = \count($this->decisions); } while (!empty($this->branches) && $this->branches[\count($this->branches) - 1][self::BRANCH_LEVEL] >= $level) { array_pop($this->branches); } } /** * setpropagatelearn * * add free decision (a positive literal) to decision queue * increase level and propagate decision * return if no conflict. * * in conflict case, analyze conflict rule, add resulting * rule to learnt rule set, make decision from learnt * rule (always unit) and re-propagate. * * returns the new solver level or 0 if unsolvable * * @param int $level * @param string|int $literal * @param Rule $rule * @return int */ private function setPropagateLearn($level, $literal, Rule $rule) { $level++; $this->decisions->decide($literal, $level, $rule); while (true) { $rule = $this->propagate($level); if (!$rule) { break; } if ($level == 1) { return $this->analyzeUnsolvable($rule); } // conflict list($learnLiteral, $newLevel, $newRule, $why) = $this->analyze($level, $rule); if ($newLevel <= 0 || $newLevel >= $level) { throw new SolverBugException( "Trying to revert to invalid level ".(int) $newLevel." from level ".(int) $level."." ); } if (!$newRule) { throw new SolverBugException( "No rule was learned from analyzing $rule at level $level." ); } $level = $newLevel; $this->revert($level); $this->rules->add($newRule, RuleSet::TYPE_LEARNED); $this->learnedWhy[spl_object_hash($newRule)] = $why; $ruleNode = new RuleWatchNode($newRule); $ruleNode->watch2OnHighest($this->decisions); $this->watchGraph->insert($ruleNode); $this->decisions->decide($learnLiteral, $level, $newRule); } return $level; } /** * @param int $level * @param array $decisionQueue * @param Rule $rule * @return int */ private function selectAndInstall($level, array $decisionQueue, Rule $rule) { // choose best package to install from decisionQueue $literals = $this->policy->selectPreferredPackages($this->pool, $decisionQueue, $rule->getRequiredPackage()); $selectedLiteral = array_shift($literals); // if there are multiple candidates, then branch if (\count($literals)) { $this->branches[] = array($literals, $level); } return $this->setPropagateLearn($level, $selectedLiteral, $rule); } /** * @param int $level * @param Rule $rule * @return array */ protected function analyze($level, Rule $rule) { $analyzedRule = $rule; $ruleLevel = 1; $num = 0; $l1num = 0; $seen = array(); $learnedLiterals = array(null); $decisionId = \count($this->decisions); $this->learnedPool[] = array(); while (true) { $this->learnedPool[\count($this->learnedPool) - 1][] = $rule; foreach ($rule->getLiterals() as $literal) { // multiconflictrule is really a bunch of rules in one, so some may not have finished propagating yet if ($rule instanceof MultiConflictRule && !$this->decisions->decided($literal)) { continue; } // skip the one true literal if ($this->decisions->satisfy($literal)) { continue; } if (isset($seen[abs($literal)])) { continue; } $seen[abs($literal)] = true; $l = $this->decisions->decisionLevel($literal); if (1 === $l) { $l1num++; } elseif ($level === $l) { $num++; } else { // not level1 or conflict level, add to new rule $learnedLiterals[] = $literal; if ($l > $ruleLevel) { $ruleLevel = $l; } } } unset($literal); $l1retry = true; while ($l1retry) { $l1retry = false; if (!$num && !--$l1num) { // all level 1 literals done break 2; } while (true) { if ($decisionId <= 0) { throw new SolverBugException( "Reached invalid decision id $decisionId while looking through $rule for a literal present in the analyzed rule $analyzedRule." ); } $decisionId--; $decision = $this->decisions->atOffset($decisionId); $literal = $decision[Decisions::DECISION_LITERAL]; if (isset($seen[abs($literal)])) { break; } } unset($seen[abs($literal)]); if ($num && 0 === --$num) { if ($literal < 0) { $this->testFlagLearnedPositiveLiteral = true; } $learnedLiterals[0] = -$literal; if (!$l1num) { break 2; } foreach ($learnedLiterals as $i => $learnedLiteral) { if ($i !== 0) { unset($seen[abs($learnedLiteral)]); } } // only level 1 marks left $l1num++; $l1retry = true; } else { $decision = $this->decisions->atOffset($decisionId); $rule = $decision[Decisions::DECISION_REASON]; if ($rule instanceof MultiConflictRule) { // there is only ever exactly one positive decision in a multiconflict rule foreach ($rule->getLiterals() as $literal) { if (!isset($seen[abs($literal)]) && $this->decisions->satisfy(-$literal)) { $this->learnedPool[\count($this->learnedPool) - 1][] = $rule; $l = $this->decisions->decisionLevel($literal); if (1 === $l) { $l1num++; } elseif ($level === $l) { $num++; } else { // not level1 or conflict level, add to new rule $learnedLiterals[] = $literal; if ($l > $ruleLevel) { $ruleLevel = $l; } } $seen[abs($literal)] = true; break; } } $l1retry = true; } } } $decision = $this->decisions->atOffset($decisionId); $rule = $decision[Decisions::DECISION_REASON]; } $why = \count($this->learnedPool) - 1; if (!$learnedLiterals[0]) { throw new SolverBugException( "Did not find a learnable literal in analyzed rule $analyzedRule." ); } $newRule = new GenericRule($learnedLiterals, Rule::RULE_LEARNED, $why); return array($learnedLiterals[0], $ruleLevel, $newRule, $why); } private function analyzeUnsolvableRule(Problem $problem, Rule $conflictRule, array &$ruleSeen) { $why = spl_object_hash($conflictRule); $ruleSeen[$why] = true; if ($conflictRule->getType() == RuleSet::TYPE_LEARNED) { $learnedWhy = $this->learnedWhy[$why]; $problemRules = $this->learnedPool[$learnedWhy]; foreach ($problemRules as $problemRule) { if (!isset($ruleSeen[spl_object_hash($problemRule)])) { $this->analyzeUnsolvableRule($problem, $problemRule, $ruleSeen); } } return; } if ($conflictRule->getType() == RuleSet::TYPE_PACKAGE) { // package rules cannot be part of a problem return; } $problem->nextSection(); $problem->addRule($conflictRule); } /** * @param Rule $conflictRule * @return int */ private function analyzeUnsolvable(Rule $conflictRule) { $problem = new Problem(); $problem->addRule($conflictRule); $ruleSeen = array(); $this->analyzeUnsolvableRule($problem, $conflictRule, $ruleSeen); $this->problems[] = $problem; $seen = array(); $literals = $conflictRule->getLiterals(); foreach ($literals as $literal) { // skip the one true literal if ($this->decisions->satisfy($literal)) { continue; } $seen[abs($literal)] = true; } foreach ($this->decisions as $decision) { $literal = $decision[Decisions::DECISION_LITERAL]; // skip literals that are not in this rule if (!isset($seen[abs($literal)])) { continue; } $why = $decision[Decisions::DECISION_REASON]; $problem->addRule($why); $this->analyzeUnsolvableRule($problem, $why, $ruleSeen); $literals = $why->getLiterals(); foreach ($literals as $literal) { // skip the one true literal if ($this->decisions->satisfy($literal)) { continue; } $seen[abs($literal)] = true; } } return 0; } /** * enable/disable learnt rules * * we have enabled or disabled some of our rules. We now re-enable all * of our learnt rules except the ones that were learnt from rules that * are now disabled. */ private function enableDisableLearnedRules() { foreach ($this->rules->getIteratorFor(RuleSet::TYPE_LEARNED) as $rule) { $why = $this->learnedWhy[spl_object_hash($rule)]; $problemRules = $this->learnedPool[$why]; $foundDisabled = false; foreach ($problemRules as $problemRule) { if ($problemRule->isDisabled()) { $foundDisabled = true; break; } } if ($foundDisabled && $rule->isEnabled()) { $rule->disable(); } elseif (!$foundDisabled && $rule->isDisabled()) { $rule->enable(); } } } private function runSat() { $this->propagateIndex = 0; /* * here's the main loop: * 1) propagate new decisions (only needed once) * 2) fulfill root requires/fixed packages * 3) fulfill all unresolved rules * 4) minimalize solution if we had choices * if we encounter a problem, we rewind to a safe level and restart * with step 1 */ $level = 1; $systemLevel = $level + 1; while (true) { if (1 === $level) { $conflictRule = $this->propagate($level); if (null !== $conflictRule) { if ($this->analyzeUnsolvable($conflictRule)) { continue; } return; } } // handle root require/fixed package rules if ($level < $systemLevel) { $iterator = $this->rules->getIteratorFor(RuleSet::TYPE_REQUEST); foreach ($iterator as $rule) { if ($rule->isEnabled()) { $decisionQueue = array(); $noneSatisfied = true; foreach ($rule->getLiterals() as $literal) { if ($this->decisions->satisfy($literal)) { $noneSatisfied = false; break; } if ($literal > 0 && $this->decisions->undecided($literal)) { $decisionQueue[] = $literal; } } if ($noneSatisfied && \count($decisionQueue)) { // if any of the options in the decision queue are fixed, only use those $prunedQueue = array(); foreach ($decisionQueue as $literal) { if (isset($this->fixedMap[abs($literal)])) { $prunedQueue[] = $literal; } } if (!empty($prunedQueue)) { $decisionQueue = $prunedQueue; } } if ($noneSatisfied && \count($decisionQueue)) { $oLevel = $level; $level = $this->selectAndInstall($level, $decisionQueue, $rule); if (0 === $level) { return; } if ($level <= $oLevel) { break; } } } } $systemLevel = $level + 1; // root requires/fixed packages left $iterator->next(); if ($iterator->valid()) { continue; } } if ($level < $systemLevel) { $systemLevel = $level; } $rulesCount = \count($this->rules); $pass = 1; $this->io->writeError('Looking at all rules.', true, IOInterface::DEBUG); for ($i = 0, $n = 0; $n < $rulesCount; $i++, $n++) { if ($i == $rulesCount) { if (1 === $pass) { $this->io->writeError("Something's changed, looking at all rules again (pass #$pass)", false, IOInterface::DEBUG); } else { $this->io->overwriteError("Something's changed, looking at all rules again (pass #$pass)", false, null, IOInterface::DEBUG); } $i = 0; $pass++; } $rule = $this->rules->ruleById[$i]; $literals = $rule->getLiterals(); if ($rule->isDisabled()) { continue; } $decisionQueue = array(); // make sure that // * all negative literals are installed // * no positive literal is installed // i.e. the rule is not fulfilled and we // just need to decide on the positive literals // foreach ($literals as $literal) { if ($literal <= 0) { if (!$this->decisions->decidedInstall($literal)) { continue 2; // next rule } } else { if ($this->decisions->decidedInstall($literal)) { continue 2; // next rule } if ($this->decisions->undecided($literal)) { $decisionQueue[] = $literal; } } } // need to have at least 2 item to pick from if (\count($decisionQueue) < 2) { continue; } $level = $this->selectAndInstall($level, $decisionQueue, $rule); if (0 === $level) { return; } // something changed, so look at all rules again $rulesCount = \count($this->rules); $n = -1; } if ($level < $systemLevel) { continue; } // minimization step if (\count($this->branches)) { $lastLiteral = null; $lastLevel = null; $lastBranchIndex = 0; $lastBranchOffset = 0; for ($i = \count($this->branches) - 1; $i >= 0; $i--) { list($literals, $l) = $this->branches[$i]; foreach ($literals as $offset => $literal) { if ($literal && $literal > 0 && $this->decisions->decisionLevel($literal) > $l + 1) { $lastLiteral = $literal; $lastBranchIndex = $i; $lastBranchOffset = $offset; $lastLevel = $l; } } } if ($lastLiteral) { unset($this->branches[$lastBranchIndex][self::BRANCH_LITERALS][$lastBranchOffset]); $level = $lastLevel; $this->revert($level); $why = $this->decisions->lastReason(); $level = $this->setPropagateLearn($level, $lastLiteral, $why); if ($level == 0) { return; } continue; } } break; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\AliasPackage; use Composer\Package\Link; use Composer\Package\PackageInterface; use Composer\Repository\PlatformRepository; /** * @author Nils Adermann * @internal */ class Transaction { /** * @var array */ protected $operations; /** * Packages present at the beginning of the transaction * @var array */ protected $presentPackages; /** * Package set resulting from this transaction * @var array */ protected $resultPackageMap; /** * @var array */ protected $resultPackagesByName = array(); public function __construct($presentPackages, $resultPackages) { $this->presentPackages = $presentPackages; $this->setResultPackageMaps($resultPackages); $this->operations = $this->calculateOperations(); } public function getOperations() { return $this->operations; } private function setResultPackageMaps($resultPackages) { $packageSort = function (PackageInterface $a, PackageInterface $b) { // sort alias packages by the same name behind their non alias version if ($a->getName() == $b->getName()) { if ($a instanceof AliasPackage != $b instanceof AliasPackage) { return $a instanceof AliasPackage ? -1 : 1; } // if names are the same, compare version, e.g. to sort aliases reliably, actual order does not matter return strcmp($b->getVersion(), $a->getVersion()); } return strcmp($b->getName(), $a->getName()); }; $this->resultPackageMap = array(); foreach ($resultPackages as $package) { $this->resultPackageMap[spl_object_hash($package)] = $package; foreach ($package->getNames() as $name) { $this->resultPackagesByName[$name][] = $package; } } uasort($this->resultPackageMap, $packageSort); foreach ($this->resultPackagesByName as $name => $packages) { uasort($this->resultPackagesByName[$name], $packageSort); } } protected function calculateOperations() { $operations = array(); $presentPackageMap = array(); $removeMap = array(); $presentAliasMap = array(); $removeAliasMap = array(); foreach ($this->presentPackages as $package) { if ($package instanceof AliasPackage) { $presentAliasMap[$package->getName().'::'.$package->getVersion()] = $package; $removeAliasMap[$package->getName().'::'.$package->getVersion()] = $package; } else { $presentPackageMap[$package->getName()] = $package; $removeMap[$package->getName()] = $package; } } $stack = $this->getRootPackages(); $visited = array(); $processed = array(); while (!empty($stack)) { $package = array_pop($stack); if (isset($processed[spl_object_hash($package)])) { continue; } if (!isset($visited[spl_object_hash($package)])) { $visited[spl_object_hash($package)] = true; $stack[] = $package; if ($package instanceof AliasPackage) { $stack[] = $package->getAliasOf(); } else { foreach ($package->getRequires() as $link) { $possibleRequires = $this->getProvidersInResult($link); foreach ($possibleRequires as $require) { $stack[] = $require; } } } } elseif (!isset($processed[spl_object_hash($package)])) { $processed[spl_object_hash($package)] = true; if ($package instanceof AliasPackage) { $aliasKey = $package->getName().'::'.$package->getVersion(); if (isset($presentAliasMap[$aliasKey])) { unset($removeAliasMap[$aliasKey]); } else { $operations[] = new Operation\MarkAliasInstalledOperation($package); } } else { if (isset($presentPackageMap[$package->getName()])) { $source = $presentPackageMap[$package->getName()]; // do we need to update? // TODO different for lock? if ($package->getVersion() != $presentPackageMap[$package->getName()]->getVersion() || $package->getDistReference() !== $presentPackageMap[$package->getName()]->getDistReference() || $package->getSourceReference() !== $presentPackageMap[$package->getName()]->getSourceReference() ) { $operations[] = new Operation\UpdateOperation($source, $package); } unset($removeMap[$package->getName()]); } else { $operations[] = new Operation\InstallOperation($package); unset($removeMap[$package->getName()]); } } } } foreach ($removeMap as $name => $package) { array_unshift($operations, new Operation\UninstallOperation($package)); } foreach ($removeAliasMap as $nameVersion => $package) { $operations[] = new Operation\MarkAliasUninstalledOperation($package); } $operations = $this->movePluginsToFront($operations); // TODO fix this: // we have to do this again here even though the above stack code did it because moving plugins moves them before uninstalls $operations = $this->moveUninstallsToFront($operations); // TODO skip updates which don't update? is this needed? we shouldn't schedule this update in the first place? /* if ('update' === $opType) { $targetPackage = $operation->getTargetPackage(); if ($targetPackage->isDev()) { $initialPackage = $operation->getInitialPackage(); if ($targetPackage->getVersion() === $initialPackage->getVersion() && (!$targetPackage->getSourceReference() || $targetPackage->getSourceReference() === $initialPackage->getSourceReference()) && (!$targetPackage->getDistReference() || $targetPackage->getDistReference() === $initialPackage->getDistReference()) ) { $this->io->writeError(' - Skipping update of ' . $targetPackage->getPrettyName() . ' to the same reference-locked version', true, IOInterface::DEBUG); $this->io->writeError('', true, IOInterface::DEBUG); continue; } } }*/ return $this->operations = $operations; } /** * Determine which packages in the result are not required by any other packages in it. * * These serve as a starting point to enumerate packages in a topological order despite potential cycles. * If there are packages with a cycle on the top level the package with the lowest name gets picked * * @return array */ protected function getRootPackages() { $roots = $this->resultPackageMap; foreach ($this->resultPackageMap as $packageHash => $package) { if (!isset($roots[$packageHash])) { continue; } foreach ($package->getRequires() as $link) { $possibleRequires = $this->getProvidersInResult($link); foreach ($possibleRequires as $require) { if ($require !== $package) { unset($roots[spl_object_hash($require)]); } } } } return $roots; } protected function getProvidersInResult(Link $link) { if (!isset($this->resultPackagesByName[$link->getTarget()])) { return array(); } return $this->resultPackagesByName[$link->getTarget()]; } /** * Workaround: if your packages depend on plugins, we must be sure * that those are installed / updated first; else it would lead to packages * being installed multiple times in different folders, when running Composer * twice. * * While this does not fix the root-causes of https://github.com/composer/composer/issues/1147, * it at least fixes the symptoms and makes usage of composer possible (again) * in such scenarios. * * @param Operation\OperationInterface[] $operations * @return Operation\OperationInterface[] reordered operation list */ private function movePluginsToFront(array $operations) { $dlModifyingPluginsNoDeps = array(); $dlModifyingPluginsWithDeps = array(); $dlModifyingPluginRequires = array(); $pluginsNoDeps = array(); $pluginsWithDeps = array(); $pluginRequires = array(); foreach (array_reverse($operations, true) as $idx => $op) { if ($op instanceof Operation\InstallOperation) { $package = $op->getPackage(); } elseif ($op instanceof Operation\UpdateOperation) { $package = $op->getTargetPackage(); } else { continue; } $isDownloadsModifyingPlugin = $package->getType() === 'composer-plugin' && ($extra = $package->getExtra()) && isset($extra['plugin-modifies-downloads']) && $extra['plugin-modifies-downloads'] === true; // is this a downloads modifying plugin or a dependency of one? if ($isDownloadsModifyingPlugin || count(array_intersect($package->getNames(), $dlModifyingPluginRequires))) { // get the package's requires, but filter out any platform requirements $requires = array_filter(array_keys($package->getRequires()), function ($req) { return !PlatformRepository::isPlatformPackage($req); }); // is this a plugin with no meaningful dependencies? if ($isDownloadsModifyingPlugin && !count($requires)) { // plugins with no dependencies go to the very front array_unshift($dlModifyingPluginsNoDeps, $op); } else { // capture the requirements for this package so those packages will be moved up as well $dlModifyingPluginRequires = array_merge($dlModifyingPluginRequires, $requires); // move the operation to the front array_unshift($dlModifyingPluginsWithDeps, $op); } unset($operations[$idx]); continue; } // is this package a plugin? $isPlugin = $package->getType() === 'composer-plugin' || $package->getType() === 'composer-installer'; // is this a plugin or a dependency of a plugin? if ($isPlugin || count(array_intersect($package->getNames(), $pluginRequires))) { // get the package's requires, but filter out any platform requirements $requires = array_filter(array_keys($package->getRequires()), function ($req) { return !PlatformRepository::isPlatformPackage($req); }); // is this a plugin with no meaningful dependencies? if ($isPlugin && !count($requires)) { // plugins with no dependencies go to the very front array_unshift($pluginsNoDeps, $op); } else { // capture the requirements for this package so those packages will be moved up as well $pluginRequires = array_merge($pluginRequires, $requires); // move the operation to the front array_unshift($pluginsWithDeps, $op); } unset($operations[$idx]); } } return array_merge($dlModifyingPluginsNoDeps, $dlModifyingPluginsWithDeps, $pluginsNoDeps, $pluginsWithDeps, $operations); } /** * Removals of packages should be executed before installations in * case two packages resolve to the same path (due to custom installers) * * @param Operation\OperationInterface[] $operations * @return Operation\OperationInterface[] reordered operation list */ private function moveUninstallsToFront(array $operations) { $uninstOps = array(); foreach ($operations as $idx => $op) { if ($op instanceof Operation\UninstallOperation || $op instanceof Operation\MarkAliasUninstalledOperation) { $uninstOps[] = $op; unset($operations[$idx]); } } return array_merge($uninstOps, $operations); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\Version\VersionParser; use Composer\Semver\CompilingMatcher; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\Constraint; use Composer\Package\PackageInterface; /** * A package pool contains all packages for dependency resolution * * @author Nils Adermann * @author Jordi Boggiano */ class Pool implements \Countable { protected $packages = array(); protected $packageByName = array(); protected $versionParser; protected $providerCache = array(); protected $unacceptableFixedOrLockedPackages; public function __construct(array $packages = array(), array $unacceptableFixedOrLockedPackages = array()) { $this->versionParser = new VersionParser; $this->setPackages($packages); $this->unacceptableFixedOrLockedPackages = $unacceptableFixedOrLockedPackages; } private function setPackages(array $packages) { $id = 1; foreach ($packages as $package) { $this->packages[] = $package; $package->id = $id++; foreach ($package->getNames() as $provided) { $this->packageByName[$provided][] = $package; } } } public function getPackages() { return $this->packages; } /** * Retrieves the package object for a given package id. * * @param int $id * @return PackageInterface */ public function packageById($id) { return $this->packages[$id - 1]; } /** * Returns how many packages have been loaded into the pool */ public function count() { return \count($this->packages); } /** * Searches all packages providing the given package name and match the constraint * * @param string $name The package name to be searched for * @param ConstraintInterface $constraint A constraint that all returned * packages must match or null to return all * @return PackageInterface[] A set of packages */ public function whatProvides($name, ConstraintInterface $constraint = null) { $key = (string) $constraint; if (isset($this->providerCache[$name][$key])) { return $this->providerCache[$name][$key]; } return $this->providerCache[$name][$key] = $this->computeWhatProvides($name, $constraint); } /** * @see whatProvides */ private function computeWhatProvides($name, $constraint) { if (!isset($this->packageByName[$name])) { return array(); } $matches = array(); foreach ($this->packageByName[$name] as $candidate) { if ($this->match($candidate, $name, $constraint)) { $matches[] = $candidate; } } return $matches; } public function literalToPackage($literal) { $packageId = abs($literal); return $this->packageById($packageId); } public function literalToPrettyString($literal, $installedMap) { $package = $this->literalToPackage($literal); if (isset($installedMap[$package->id])) { $prefix = ($literal > 0 ? 'keep' : 'remove'); } else { $prefix = ($literal > 0 ? 'install' : 'don\'t install'); } return $prefix.' '.$package->getPrettyString(); } /** * Checks if the package matches the given constraint directly or through * provided or replaced packages * * @param PackageInterface $candidate * @param string $name Name of the package to be matched * @param ConstraintInterface $constraint The constraint to verify * @return bool */ public function match($candidate, $name, ConstraintInterface $constraint = null) { $candidateName = $candidate->getName(); $candidateVersion = $candidate->getVersion(); if ($candidateName === $name) { return $constraint === null || CompilingMatcher::match($constraint, Constraint::OP_EQ, $candidateVersion); } $provides = $candidate->getProvides(); $replaces = $candidate->getReplaces(); // aliases create multiple replaces/provides for one target so they can not use the shortcut below if (isset($replaces[0]) || isset($provides[0])) { foreach ($provides as $link) { if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { return true; } } foreach ($replaces as $link) { if ($link->getTarget() === $name && ($constraint === null || $constraint->matches($link->getConstraint()))) { return true; } } return false; } if (isset($provides[$name]) && ($constraint === null || $constraint->matches($provides[$name]->getConstraint()))) { return true; } if (isset($replaces[$name]) && ($constraint === null || $constraint->matches($replaces[$name]->getConstraint()))) { return true; } return false; } public function isUnacceptableFixedOrLockedPackage(PackageInterface $package) { return \in_array($package, $this->unacceptableFixedOrLockedPackages, true); } public function __toString() { $str = "Pool:\n"; foreach ($this->packages as $package) { $str .= '- '.str_pad($package->id, 6, ' ', STR_PAD_LEFT).': '.$package->getName()."\n"; } return $str; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\Link; use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Repository\RepositorySet; use Composer\Repository\PlatformRepository; use Composer\Package\Version\VersionParser; use Composer\Semver\Constraint\Constraint; /** * @author Nils Adermann * @author Ruben Gonzalez */ abstract class Rule { // reason constants const RULE_ROOT_REQUIRE = 2; const RULE_FIXED = 3; const RULE_PACKAGE_CONFLICT = 6; const RULE_PACKAGE_REQUIRES = 7; const RULE_PACKAGE_SAME_NAME = 10; const RULE_LEARNED = 12; const RULE_PACKAGE_ALIAS = 13; const RULE_PACKAGE_INVERSE_ALIAS = 14; // bitfield defs const BITFIELD_TYPE = 0; const BITFIELD_REASON = 8; const BITFIELD_DISABLED = 16; protected $bitfield; protected $request; protected $reasonData; /** * @param int $reason A RULE_* constant describing the reason for generating this rule * @param Link|PackageInterface $reasonData */ public function __construct($reason, $reasonData) { $this->reasonData = $reasonData; $this->bitfield = (0 << self::BITFIELD_DISABLED) | ($reason << self::BITFIELD_REASON) | (255 << self::BITFIELD_TYPE); } abstract public function getLiterals(); abstract public function getHash(); abstract public function equals(Rule $rule); public function getReason() { return ($this->bitfield & (255 << self::BITFIELD_REASON)) >> self::BITFIELD_REASON; } public function getReasonData() { return $this->reasonData; } public function getRequiredPackage() { $reason = $this->getReason(); if ($reason === self::RULE_ROOT_REQUIRE) { return $this->reasonData['packageName']; } if ($reason === self::RULE_FIXED) { return $this->reasonData['package']->getName(); } if ($reason === self::RULE_PACKAGE_REQUIRES) { return $this->reasonData->getTarget(); } } public function setType($type) { $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_TYPE)) | ((255 & $type) << self::BITFIELD_TYPE); } public function getType() { return ($this->bitfield & (255 << self::BITFIELD_TYPE)) >> self::BITFIELD_TYPE; } public function disable() { $this->bitfield = ($this->bitfield & ~(255 << self::BITFIELD_DISABLED)) | (1 << self::BITFIELD_DISABLED); } public function enable() { $this->bitfield &= ~(255 << self::BITFIELD_DISABLED); } public function isDisabled() { return (bool) (($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); } public function isEnabled() { return !(($this->bitfield & (255 << self::BITFIELD_DISABLED)) >> self::BITFIELD_DISABLED); } abstract public function isAssertion(); public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool) { if ($this->getReason() === self::RULE_PACKAGE_REQUIRES) { if (PlatformRepository::isPlatformPackage($this->reasonData->getTarget())) { return false; } if ($request->getLockedRepository()) { foreach ($request->getLockedRepository()->getPackages() as $package) { if ($package->getName() === $this->reasonData->getTarget()) { if ($pool->isUnacceptableFixedOrLockedPackage($package)) { return true; } if (!$this->reasonData->getConstraint()->matches(new Constraint('=', $package->getVersion()))) { return true; } // required package was locked but has been unlocked and still matches if (!$request->isLockedPackage($package)) { return true; } break; } } } } if ($this->getReason() === self::RULE_ROOT_REQUIRE) { if (PlatformRepository::isPlatformPackage($this->reasonData['packageName'])) { return false; } if ($request->getLockedRepository()) { foreach ($request->getLockedRepository()->getPackages() as $package) { if ($package->getName() === $this->reasonData['packageName']) { if ($pool->isUnacceptableFixedOrLockedPackage($package)) { return true; } if (!$this->reasonData['constraint']->matches(new Constraint('=', $package->getVersion()))) { return true; } break; } } } } return false; } public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, $isVerbose, array $installedMap = array(), array $learnedPool = array()) { $literals = $this->getLiterals(); switch ($this->getReason()) { case self::RULE_ROOT_REQUIRE: $packageName = $this->reasonData['packageName']; $constraint = $this->reasonData['constraint']; $packages = $pool->whatProvides($packageName, $constraint); if (!$packages) { return 'No package found to satisfy root composer.json require '.$packageName.($constraint ? ' '.$constraint->getPrettyString() : ''); } $packagesNonAlias = array_values(array_filter($packages, function ($p) { return !($p instanceof AliasPackage); })); if (count($packagesNonAlias) === 1) { $package = $packagesNonAlias[0]; if ($request->isLockedPackage($package)) { return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion()." and an update of this package was not requested."; } } return 'Root composer.json requires '.$packageName.($constraint ? ' '.$constraint->getPrettyString() : '').' -> satisfiable by '.$this->formatPackagesUnique($pool, $packages, $isVerbose).'.'; case self::RULE_FIXED: $package = $this->deduplicateDefaultBranchAlias($this->reasonData['package']); if ($request->isLockedPackage($package)) { return $package->getPrettyName().' is locked to version '.$package->getPrettyVersion().' and an update of this package was not requested.'; } return $package->getPrettyName().' is present at version '.$package->getPrettyVersion() . ' and cannot be modified by Composer'; case self::RULE_PACKAGE_CONFLICT: $package1 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); $package2 = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); return $package2->getPrettyString().' conflicts with '.$package1->getPrettyString().'.'; case self::RULE_PACKAGE_REQUIRES: $sourceLiteral = array_shift($literals); $sourcePackage = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($sourceLiteral)); $requires = array(); foreach ($literals as $literal) { $requires[] = $pool->literalToPackage($literal); } $text = $this->reasonData->getPrettyString($sourcePackage); if ($requires) { $text .= ' -> satisfiable by ' . $this->formatPackagesUnique($pool, $requires, $isVerbose) . '.'; } else { $targetName = $this->reasonData->getTarget(); $reason = Problem::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $targetName, $this->reasonData->getConstraint()); return $text . ' -> ' . $reason[1]; } return $text; case self::RULE_PACKAGE_SAME_NAME: $packageNames = array(); foreach ($literals as $literal) { $package = $pool->literalToPackage($literal); $packageNames[$package->getName()] = true; } $replacedName = $this->reasonData; if (count($packageNames) > 1) { $reason = null; if (!isset($packageNames[$replacedName])) { $reason = 'They '.(count($literals) == 2 ? 'both' : 'all').' replace '.$replacedName.' and thus cannot coexist.'; } else { $replacerNames = $packageNames; unset($replacerNames[$replacedName]); $replacerNames = array_keys($replacerNames); if (count($replacerNames) == 1) { $reason = $replacerNames[0] . ' replaces '; } else { $reason = '['.implode(', ', $replacerNames).'] replace '; } $reason .= $replacedName.' and thus cannot coexist with it.'; } $installedPackages = array(); $removablePackages = array(); foreach ($literals as $literal) { if (isset($installedMap[abs($literal)])) { $installedPackages[] = $pool->literalToPackage($literal); } else { $removablePackages[] = $pool->literalToPackage($literal); } } if ($installedPackages && $removablePackages) { return $this->formatPackagesUnique($pool, $removablePackages, $isVerbose).' cannot be installed as that would require removing '.$this->formatPackagesUnique($pool, $installedPackages, $isVerbose).'. '.$reason; } return 'Only one of these can be installed: '.$this->formatPackagesUnique($pool, $literals, $isVerbose).'. '.$reason; } return 'You can only install one version of a package, so only one of these can be installed: ' . $this->formatPackagesUnique($pool, $literals, $isVerbose) . '.'; case self::RULE_LEARNED: /** @TODO currently still generates way too much output to be helpful, and in some cases can even lead to endless recursion */ // if (isset($learnedPool[$this->reasonData])) { // echo $this->reasonData."\n"; // $learnedString = ', learned rules:' . Problem::formatDeduplicatedRules($learnedPool[$this->reasonData], ' ', $repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); // } else { // $learnedString = ' (reasoning unavailable)'; // } $learnedString = ' (conflict analysis result)'; if (count($literals) === 1) { $ruleText = $pool->literalToPrettyString($literals[0], $installedMap); } else { $groups = array(); foreach ($literals as $literal) { $package = $pool->literalToPackage($literal); if (isset($installedMap[$package->id])) { $group = $literal > 0 ? 'keep' : 'remove'; } else { $group = $literal > 0 ? 'install' : 'don\'t install'; } $groups[$group][] = $this->deduplicateDefaultBranchAlias($package); } $ruleTexts = array(); foreach ($groups as $group => $packages) { $ruleTexts[] = $group . (count($packages) > 1 ? ' one of' : '').' ' . $this->formatPackagesUnique($pool, $packages, $isVerbose); } $ruleText = implode(' | ', $ruleTexts); } return 'Conclusion: '.$ruleText.$learnedString; case self::RULE_PACKAGE_ALIAS: $aliasPackage = $pool->literalToPackage($literals[0]); // avoid returning content like "9999999-dev is an alias of dev-master" as it is useless if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { return ''; } $package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[1])); return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and thus requires it to be installed too.'; case self::RULE_PACKAGE_INVERSE_ALIAS: // inverse alias rules work the other way around than above $aliasPackage = $pool->literalToPackage($literals[1]); // avoid returning content like "9999999-dev is an alias of dev-master" as it is useless if ($aliasPackage->getVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { return ''; } $package = $this->deduplicateDefaultBranchAlias($pool->literalToPackage($literals[0])); return $aliasPackage->getPrettyString() .' is an alias of '.$package->getPrettyString().' and must be installed with it.'; default: $ruleText = ''; foreach ($literals as $i => $literal) { if ($i != 0) { $ruleText .= '|'; } $ruleText .= $pool->literalToPrettyString($literal, $installedMap); } return '('.$ruleText.')'; } } /** * @param Pool $pool * @param array $packages * * @return string */ protected function formatPackagesUnique($pool, array $packages, $isVerbose) { foreach ($packages as $index => $package) { if (!\is_object($package)) { $packages[$index] = $pool->literalToPackage($package); } } return Problem::getPackageList($packages, $isVerbose); } private function deduplicateDefaultBranchAlias(PackageInterface $package) { if ($package instanceof AliasPackage && $package->getPrettyVersion() === VersionParser::DEFAULT_BRANCH_ALIAS) { $package = $package->getAliasOf(); } return $package; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; use Composer\Package\Link; /** * @author Nils Adermann * * MultiConflictRule([A, B, C]) acts as Rule([-A, -B]), Rule([-A, -C]), Rule([-B, -C]) */ class MultiConflictRule extends Rule { protected $literals; /** * @param array $literals * @param int $reason A RULE_* constant describing the reason for generating this rule * @param Link|PackageInterface $reasonData */ public function __construct(array $literals, $reason, $reasonData) { parent::__construct($reason, $reasonData); if (\count($literals) < 3) { throw new \RuntimeException("multi conflict rule requires at least 3 literals"); } // sort all packages ascending by id sort($literals); $this->literals = $literals; } public function getLiterals() { return $this->literals; } public function getHash() { $data = unpack('ihash', md5('c:'.implode(',', $this->literals), true)); return $data['hash']; } /** * Checks if this rule is equal to another one * * Ignores whether either of the rules is disabled. * * @param Rule $rule The rule to check against * @return bool Whether the rules are equal */ public function equals(Rule $rule) { if ($rule instanceof MultiConflictRule) { return $this->literals === $rule->getLiterals(); } return false; } public function isAssertion() { return false; } public function disable() { throw new \RuntimeException("Disabling multi conflict rules is not possible. Please contact composer at https://github.com/composer/composer to let us debug what lead to this situation."); } /** * Formats a rule as a string of the format (Literal1|Literal2|...) * * @return string */ public function __toString() { // TODO multi conflict? $result = $this->isDisabled() ? 'disabled(multi(' : '(multi('; foreach ($this->literals as $i => $literal) { if ($i != 0) { $result .= '|'; } $result .= $literal; } $result .= '))'; return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Repository\RepositoryInterface; /** * @author Nils Adermann * @internal */ class LocalRepoTransaction extends Transaction { public function __construct(RepositoryInterface $lockedRepository, $localRepository) { parent::__construct( $localRepository->getPackages(), $lockedRepository->getPackages() ); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; use Composer\Package\AliasPackage; use Composer\Repository\PlatformRepository; /** * @author Nils Adermann */ class RuleSetGenerator { protected $policy; protected $pool; protected $rules; protected $addedMap; protected $conflictAddedMap; protected $addedPackagesByNames; protected $conflictsForName; public function __construct(PolicyInterface $policy, Pool $pool) { $this->policy = $policy; $this->pool = $pool; } /** * Creates a new rule for the requirements of a package * * This rule is of the form (-A|B|C), where B and C are the providers of * one requirement of the package A. * * @param PackageInterface $package The package with a requirement * @param array $providers The providers of the requirement * @param int $reason A RULE_* constant describing the * reason for generating this rule * @param mixed $reasonData Any data, e.g. the requirement name, * that goes with the reason * @return Rule|null The generated rule or null if tautological */ protected function createRequireRule(PackageInterface $package, array $providers, $reason, $reasonData = null) { $literals = array(-$package->id); foreach ($providers as $provider) { // self fulfilling rule? if ($provider === $package) { return null; } $literals[] = $provider->id; } return new GenericRule($literals, $reason, $reasonData); } /** * Creates a rule to install at least one of a set of packages * * The rule is (A|B|C) with A, B and C different packages. If the given * set of packages is empty an impossible rule is generated. * * @param array $packages The set of packages to choose from * @param int $reason A RULE_* constant describing the reason for * generating this rule * @param array $reasonData Additional data like the root require or fix request info * @return Rule The generated rule */ protected function createInstallOneOfRule(array $packages, $reason, $reasonData) { $literals = array(); foreach ($packages as $package) { $literals[] = $package->id; } return new GenericRule($literals, $reason, $reasonData); } /** * Creates a rule for two conflicting packages * * The rule for conflicting packages A and B is (-A|-B). A is called the issuer * and B the provider. * * @param PackageInterface $issuer The package declaring the conflict * @param PackageInterface $provider The package causing the conflict * @param int $reason A RULE_* constant describing the * reason for generating this rule * @param mixed $reasonData Any data, e.g. the package name, that * goes with the reason * @return Rule|null The generated rule */ protected function createRule2Literals(PackageInterface $issuer, PackageInterface $provider, $reason, $reasonData = null) { // ignore self conflict if ($issuer === $provider) { return null; } return new Rule2Literals(-$issuer->id, -$provider->id, $reason, $reasonData); } protected function createMultiConflictRule(array $packages, $reason, $reasonData = null) { $literals = array(); foreach ($packages as $package) { $literals[] = -$package->id; } if (\count($literals) == 2) { return new Rule2Literals($literals[0], $literals[1], $reason, $reasonData); } return new MultiConflictRule($literals, $reason, $reasonData); } /** * Adds a rule unless it duplicates an existing one of any type * * To be able to directly pass in the result of one of the rule creation * methods null is allowed which will not insert a rule. * * @param int $type A TYPE_* constant defining the rule type * @param Rule $newRule The rule about to be added */ private function addRule($type, Rule $newRule = null) { if (!$newRule) { return; } $this->rules->add($newRule, $type); } protected function addRulesForPackage(PackageInterface $package, $ignorePlatformReqs) { $workQueue = new \SplQueue; $workQueue->enqueue($package); while (!$workQueue->isEmpty()) { /** @var PackageInterface $package */ $package = $workQueue->dequeue(); if (isset($this->addedMap[$package->id])) { continue; } $this->addedMap[$package->id] = $package; if (!$package instanceof AliasPackage) { foreach ($package->getNames(false) as $name) { $this->addedPackagesByNames[$name][] = $package; } } else { $workQueue->enqueue($package->getAliasOf()); $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, array($package->getAliasOf()), Rule::RULE_PACKAGE_ALIAS, $package)); // aliases must be installed with their main package, so create a rule the other way around as well $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package->getAliasOf(), array($package), Rule::RULE_PACKAGE_INVERSE_ALIAS, $package->getAliasOf())); // if alias package has no self.version requires, its requirements do not // need to be added as the aliased package processing will take care of it if (!$package->hasSelfVersionRequires()) { continue; } } foreach ($package->getRequires() as $link) { if ((true === $ignorePlatformReqs || (is_array($ignorePlatformReqs) && in_array($link->getTarget(), $ignorePlatformReqs, true))) && PlatformRepository::isPlatformPackage($link->getTarget())) { continue; } $possibleRequires = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRequireRule($package, $possibleRequires, Rule::RULE_PACKAGE_REQUIRES, $link)); foreach ($possibleRequires as $require) { $workQueue->enqueue($require); } } } } protected function addConflictRules($ignorePlatformReqs = false) { /** @var PackageInterface $package */ foreach ($this->addedMap as $package) { foreach ($package->getConflicts() as $link) { // even if conlict ends up being with an alias, there would be at least one actual package by this name if (!isset($this->addedPackagesByNames[$link->getTarget()])) { continue; } if ((true === $ignorePlatformReqs || (is_array($ignorePlatformReqs) && in_array($link->getTarget(), $ignorePlatformReqs, true))) && PlatformRepository::isPlatformPackage($link->getTarget())) { continue; } $conflicts = $this->pool->whatProvides($link->getTarget(), $link->getConstraint()); foreach ($conflicts as $conflict) { // define the conflict rule for regular packages, for alias packages it's only needed if the name // matches the conflict exactly, otherwise the name match is by provide/replace which means the // package which this is an alias of will conflict anyway, so no need to create additional rules if (!$conflict instanceof AliasPackage || $conflict->getName() === $link->getTarget()) { $this->addRule(RuleSet::TYPE_PACKAGE, $this->createRule2Literals($package, $conflict, Rule::RULE_PACKAGE_CONFLICT, $link)); } } } } foreach ($this->addedPackagesByNames as $name => $packages) { if (\count($packages) > 1) { $reason = Rule::RULE_PACKAGE_SAME_NAME; $this->addRule(RuleSet::TYPE_PACKAGE, $this->createMultiConflictRule($packages, $reason, $name)); } } } protected function addRulesForRequest(Request $request, $ignorePlatformReqs) { foreach ($request->getFixedPackages() as $package) { if ($package->id == -1) { // fixed package was not added to the pool as it did not pass the stability requirements, this is fine if ($this->pool->isUnacceptableFixedOrLockedPackage($package)) { continue; } // otherwise, looks like a bug throw new \LogicException("Fixed package ".$package->getPrettyString()." was not added to solver pool."); } $this->addRulesForPackage($package, $ignorePlatformReqs); $rule = $this->createInstallOneOfRule(array($package), Rule::RULE_FIXED, array( 'package' => $package, )); $this->addRule(RuleSet::TYPE_REQUEST, $rule); } foreach ($request->getRequires() as $packageName => $constraint) { if ((true === $ignorePlatformReqs || (is_array($ignorePlatformReqs) && in_array($packageName, $ignorePlatformReqs, true))) && PlatformRepository::isPlatformPackage($packageName)) { continue; } $packages = $this->pool->whatProvides($packageName, $constraint); if ($packages) { foreach ($packages as $package) { $this->addRulesForPackage($package, $ignorePlatformReqs); } $rule = $this->createInstallOneOfRule($packages, Rule::RULE_ROOT_REQUIRE, array( 'packageName' => $packageName, 'constraint' => $constraint, )); $this->addRule(RuleSet::TYPE_REQUEST, $rule); } } } protected function addRulesForRootAliases($ignorePlatformReqs) { foreach ($this->pool->getPackages() as $package) { // ensure that rules for root alias packages and aliases of packages which were loaded are also loaded // even if the alias itself isn't required, otherwise a package could be installed without its alias which // leads to unexpected behavior if (!isset($this->addedMap[$package->id]) && $package instanceof AliasPackage && ($package->isRootPackageAlias() || isset($this->addedMap[$package->getAliasOf()->id])) ) { $this->addRulesForPackage($package, $ignorePlatformReqs); } } } /** * @param bool|array $ignorePlatformReqs */ public function getRulesFor(Request $request, $ignorePlatformReqs = false) { $this->rules = new RuleSet; $this->addedMap = array(); $this->conflictAddedMap = array(); $this->addedPackagesByNames = array(); $this->conflictsForName = array(); $this->addRulesForRequest($request, $ignorePlatformReqs); $this->addRulesForRootAliases($ignorePlatformReqs); $this->addConflictRules($ignorePlatformReqs); // Remove references to packages $this->addedMap = $this->addedPackagesByNames = null; return $this->rules; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\CompletePackageInterface; use Composer\Package\AliasPackage; use Composer\Repository\RepositorySet; use Composer\Repository\LockArrayRepository; use Composer\Semver\Constraint\Constraint; use Composer\Package\Version\VersionParser; /** * Represents a problem detected while solving dependencies * * @author Nils Adermann */ class Problem { /** * A map containing the id of each rule part of this problem as a key * @var array */ protected $reasonSeen; /** * A set of reasons for the problem, each is a rule or a root require and a rule * @var array */ protected $reasons = array(); protected $section = 0; /** * Add a rule as a reason * * @param Rule $rule A rule which is a reason for this problem */ public function addRule(Rule $rule) { $this->addReason(spl_object_hash($rule), $rule); } /** * Retrieve all reasons for this problem * * @return array The problem's reasons */ public function getReasons() { return $this->reasons; } /** * A human readable textual representation of the problem's reasons * * @param array $installedMap A map of all present packages * @return string */ public function getPrettyString(RepositorySet $repositorySet, Request $request, Pool $pool, $isVerbose, array $installedMap = array(), array $learnedPool = array()) { // TODO doesn't this entirely defeat the purpose of the problem sections? what's the point of sections? $reasons = call_user_func_array('array_merge', array_reverse($this->reasons)); if (count($reasons) === 1) { reset($reasons); $rule = current($reasons); if (!in_array($rule->getReason(), array(Rule::RULE_ROOT_REQUIRE, Rule::RULE_FIXED), true)) { throw new \LogicException("Single reason problems must contain a request rule."); } $reasonData = $rule->getReasonData(); $packageName = $reasonData['packageName']; $constraint = $reasonData['constraint']; if (isset($constraint)) { $packages = $pool->whatProvides($packageName, $constraint); } else { $packages = array(); } if (empty($packages)) { return "\n ".implode(self::getMissingPackageReason($repositorySet, $request, $pool, $isVerbose, $packageName, $constraint)); } } return self::formatDeduplicatedRules($reasons, ' ', $repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); } /** * @internal */ public static function formatDeduplicatedRules($rules, $indent, RepositorySet $repositorySet, Request $request, Pool $pool, $isVerbose, array $installedMap = array(), array $learnedPool = array()) { $messages = array(); $templates = array(); $parser = new VersionParser; $deduplicatableRuleTypes = array(Rule::RULE_PACKAGE_REQUIRES, Rule::RULE_PACKAGE_CONFLICT); foreach ($rules as $rule) { $message = $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose, $installedMap, $learnedPool); if (in_array($rule->getReason(), $deduplicatableRuleTypes, true) && preg_match('{^(?P\S+) (?P\S+) (?Prequires|conflicts)}', $message, $m)) { $template = preg_replace('{^\S+ \S+ }', '%s%s ', $message); $messages[] = $template; $templates[$template][$m[1]][$parser->normalize($m[2])] = $m[2]; } elseif ($message !== '') { $messages[] = $message; } } $result = array(); foreach (array_unique($messages) as $message) { if (isset($templates[$message])) { foreach ($templates[$message] as $package => $versions) { uksort($versions, 'version_compare'); if (!$isVerbose) { $versions = self::condenseVersionList($versions, 1); } if (count($versions) > 1) { // remove the s from requires/conflicts to correct grammar $message = preg_replace('{^(%s%s (?:require|conflict))s}', '$1', $message); $result[] = sprintf($message, $package, '['.implode(', ', $versions).']'); } else { $result[] = sprintf($message, $package, ' '.reset($versions)); } } } else { $result[] = $message; } } return "\n$indent- ".implode("\n$indent- ", $result); } public function isCausedByLock(RepositorySet $repositorySet, Request $request, Pool $pool) { foreach ($this->reasons as $sectionRules) { foreach ($sectionRules as $rule) { if ($rule->isCausedByLock($repositorySet, $request, $pool)) { return true; } } } } /** * Store a reason descriptor but ignore duplicates * * @param string $id A canonical identifier for the reason * @param Rule $reason The reason descriptor */ protected function addReason($id, Rule $reason) { // TODO: if a rule is part of a problem description in two sections, isn't this going to remove a message // that is important to understand the issue? if (!isset($this->reasonSeen[$id])) { $this->reasonSeen[$id] = true; $this->reasons[$this->section][] = $reason; } } public function nextSection() { $this->section++; } /** * @internal */ public static function getMissingPackageReason(RepositorySet $repositorySet, Request $request, Pool $pool, $isVerbose, $packageName, $constraint = null) { // handle php/hhvm if ($packageName === 'php' || $packageName === 'php-64bit' || $packageName === 'hhvm') { $version = phpversion(); $available = $pool->whatProvides($packageName); if (count($available)) { $firstAvailable = reset($available); $version = $firstAvailable->getPrettyVersion(); $extra = $firstAvailable->getExtra(); if ($firstAvailable instanceof CompletePackageInterface && isset($extra['config.platform']) && $extra['config.platform'] === true) { $version .= '; ' . str_replace('Package ', '', $firstAvailable->getDescription()); } } $msg = "- Root composer.json requires ".$packageName.self::constraintToText($constraint).' but '; if (defined('HHVM_VERSION') || (count($available) && $packageName === 'hhvm')) { return array($msg, 'your HHVM version does not satisfy that requirement.'); } if ($packageName === 'hhvm') { return array($msg, 'you are running this with PHP and not HHVM.'); } return array($msg, 'your '.$packageName.' version ('. $version .') does not satisfy that requirement.'); } // handle php extensions if (0 === stripos($packageName, 'ext-')) { if (false !== strpos($packageName, ' ')) { return array('- ', "PHP extension ".$packageName.' should be required as '.str_replace(' ', '-', $packageName).'.'); } $ext = substr($packageName, 4); $error = extension_loaded($ext) ? 'it has the wrong version ('.(phpversion($ext) ?: '0').') installed' : 'it is missing from your system'; return array("- Root composer.json requires PHP extension ".$packageName.self::constraintToText($constraint).' but ', $error.'. Install or enable PHP\'s '.$ext.' extension.'); } // handle linked libs if (0 === stripos($packageName, 'lib-')) { if (strtolower($packageName) === 'lib-icu') { $error = extension_loaded('intl') ? 'it has the wrong version installed, try upgrading the intl extension.' : 'it is missing from your system, make sure the intl extension is loaded.'; return array("- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', $error); } return array("- Root composer.json requires linked library ".$packageName.self::constraintToText($constraint).' but ', 'it has the wrong version installed or is missing from your system, make sure to load the extension providing it.'); } $lockedPackage = null; foreach ($request->getLockedPackages() as $package) { if ($package->getName() === $packageName) { $lockedPackage = $package; if ($pool->isUnacceptableFixedOrLockedPackage($package)) { return array("- ", $package->getPrettyName().' is fixed to '.$package->getPrettyVersion().' (lock file version) by a partial update but that version is rejected by your minimum-stability. Make sure you list it as an argument for the update command.'); } break; } } // first check if the actual requested package is found in normal conditions // if so it must mean it is rejected by another constraint than the one given here if ($packages = $repositorySet->findPackages($packageName, $constraint)) { $rootReqs = $repositorySet->getRootRequires(); if (isset($rootReqs[$packageName])) { $filtered = array_filter($packages, function ($p) use ($rootReqs, $packageName) { return $rootReqs[$packageName]->matches(new Constraint('==', $p->getVersion())); }); if (0 === count($filtered)) { return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' but '.(self::hasMultipleNames($packages) ? 'these conflict' : 'it conflicts').' with your root composer.json require ('.$rootReqs[$packageName]->getPrettyString().').'); } } if ($lockedPackage) { $fixedConstraint = new Constraint('==', $lockedPackage->getVersion()); $filtered = array_filter($packages, function ($p) use ($fixedConstraint) { return $fixedConstraint->matches(new Constraint('==', $p->getVersion())); }); if (0 === count($filtered)) { return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' but the package is fixed to '.$lockedPackage->getPrettyVersion().' (lock file version) by a partial update and that version does not match. Make sure you list it as an argument for the update command.'); } } $nonLockedPackages = array_filter($packages, function ($p) { return !$p->getRepository() instanceof LockArrayRepository; }); if (!$nonLockedPackages) { return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' in the lock file but not in remote repositories, make sure you avoid updating this package to keep the one from the lock file.'); } return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' but these were not loaded, likely because '.(self::hasMultipleNames($packages) ? 'they conflict' : 'it conflicts').' with another require.'); } // check if the package is found when bypassing stability checks if ($packages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { // we must first verify if a valid package would be found in a lower priority repository if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { return self::computeCheckForLowerPrioRepo($isVerbose, $packageName, $constraint, $packages, $allReposPackages, 'minimum-stability'); } return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match your minimum-stability.'); } // check if the package is found when bypassing the constraint and stability checks if ($packages = $repositorySet->findPackages($packageName, null, RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES)) { // we must first verify if a valid package would be found in a lower priority repository if ($allReposPackages = $repositorySet->findPackages($packageName, $constraint, RepositorySet::ALLOW_SHADOWED_REPOSITORIES)) { return self::computeCheckForLowerPrioRepo($isVerbose, $packageName, $constraint, $packages, $allReposPackages, 'constraint'); } return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', ', 'found '.self::getPackageList($packages, $isVerbose).' but '.(self::hasMultipleNames($packages) ? 'these do' : 'it does').' not match the constraint.'); } if (!preg_match('{^[A-Za-z0-9_./-]+$}', $packageName)) { $illegalChars = preg_replace('{[A-Za-z0-9_./-]+}', '', $packageName); return array("- Root composer.json requires $packageName, it ", 'could not be found, it looks like its name is invalid, "'.$illegalChars.'" is not allowed in package names.'); } if ($providers = $repositorySet->getProviders($packageName)) { $maxProviders = 20; $providersStr = implode(array_map(function ($p) { $description = $p['description'] ? ' '.substr($p['description'], 0, 100) : ''; return " - ${p['name']}".$description."\n"; }, count($providers) > $maxProviders + 1 ? array_slice($providers, 0, $maxProviders) : $providers)); if (count($providers) > $maxProviders + 1) { $providersStr .= ' ... and '.(count($providers) - $maxProviders).' more.'."\n"; } return array("- Root composer.json requires $packageName".self::constraintToText($constraint).", it ", "could not be found in any version, but the following packages provide it:\n".$providersStr." Consider requiring one of these to satisfy the $packageName requirement."); } return array("- Root composer.json requires $packageName, it ", "could not be found in any version, there may be a typo in the package name."); } /** * @internal */ public static function getPackageList(array $packages, $isVerbose) { $prepared = array(); $hasDefaultBranch = array(); foreach ($packages as $package) { $prepared[$package->getName()]['name'] = $package->getPrettyName(); $prepared[$package->getName()]['versions'][$package->getVersion()] = $package->getPrettyVersion().($package instanceof AliasPackage ? ' (alias of '.$package->getAliasOf()->getPrettyVersion().')' : ''); if ($package->isDefaultBranch()) { $hasDefaultBranch[$package->getName()] = true; } } foreach ($prepared as $name => $package) { // remove the implicit default branch alias to avoid cruft in the display if (isset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS], $hasDefaultBranch[$name])) { unset($package['versions'][VersionParser::DEFAULT_BRANCH_ALIAS]); } uksort($package['versions'], 'version_compare'); if (!$isVerbose) { $package['versions'] = self::condenseVersionList($package['versions'], 4); } $prepared[$name] = $package['name'].'['.implode(', ', $package['versions']).']'; } return implode(', ', $prepared); } /** * @param string[] $versions an array of pretty versions, with normalized versions as keys * @return list a list of pretty versions and '...' where versions were removed */ private static function condenseVersionList(array $versions, $max) { if (count($versions) <= $max) { return $versions; } $filtered = array(); $byMajor = array(); foreach ($versions as $version => $pretty) { $byMajor[preg_replace('{^(\d+)\..*}', '$1', $version)][] = $pretty; } foreach ($byMajor as $versionsForMajor) { if (count($versionsForMajor) > $max) { $filtered[] = $versionsForMajor[0]; $filtered[] = '...'; $filtered[] = $versionsForMajor[count($versionsForMajor) - 1]; } else { $filtered = array_merge($filtered, $versionsForMajor); } } return $filtered; } private static function hasMultipleNames(array $packages) { $name = null; foreach ($packages as $package) { if ($name === null || $name === $package->getName()) { $name = $package->getName(); } else { return true; } } return false; } private static function computeCheckForLowerPrioRepo($isVerbose, $packageName, $constraint, array $higherRepoPackages, array $allReposPackages, $reason) { $nextRepoPackages = array(); $nextRepo = null; foreach ($allReposPackages as $package) { if ($nextRepo === null || $nextRepo === $package->getRepository()) { $nextRepoPackages[] = $package; $nextRepo = $package->getRepository(); } else { break; } } if ($nextRepo instanceof LockArrayRepository) { $singular = count($higherRepoPackages) === 1; return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', it is ', 'found '.self::getPackageList($nextRepoPackages, $isVerbose).' in the lock file and '.self::getPackageList($higherRepoPackages, $isVerbose).' from '.reset($higherRepoPackages)->getRepository()->getRepoName().' but ' . ($singular ? 'it does' : 'these do') . ' not match your '.$reason.' and ' . ($singular ? 'is' : 'are') . ' therefore not installable. Make sure you either fix the '.$reason.' or avoid updating this package to keep the one from the lock file.'); } return array("- Root composer.json requires $packageName".self::constraintToText($constraint) . ', it is ', 'satisfiable by '.self::getPackageList($nextRepoPackages, $isVerbose).' from '.$nextRepo->getRepoName().' but '.self::getPackageList($higherRepoPackages, $isVerbose).' from '.reset($higherRepoPackages)->getRepository()->getRepoName().' has higher repository priority. The packages with higher priority do not match your '.$reason.' and are therefore not installable. See https://getcomposer.org/repoprio for details and assistance.'); } /** * Turns a constraint into text usable in a sentence describing a request * * @param \Composer\Semver\Constraint\ConstraintInterface $constraint * @return string */ protected static function constraintToText($constraint) { return $constraint ? ' '.$constraint->getPrettyString() : ''; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\PackageInterface; use Composer\Package\Link; /** * @author Nils Adermann */ class GenericRule extends Rule { protected $literals; /** * @param array $literals * @param int|null $reason A RULE_* constant describing the reason for generating this rule * @param Link|PackageInterface|int|null $reasonData */ public function __construct(array $literals, $reason, $reasonData) { parent::__construct($reason, $reasonData); // sort all packages ascending by id sort($literals); $this->literals = $literals; } public function getLiterals() { return $this->literals; } public function getHash() { $data = unpack('ihash', md5(implode(',', $this->literals), true)); return $data['hash']; } /** * Checks if this rule is equal to another one * * Ignores whether either of the rules is disabled. * * @param Rule $rule The rule to check against * @return bool Whether the rules are equal */ public function equals(Rule $rule) { return $this->literals === $rule->getLiterals(); } public function isAssertion() { return 1 === \count($this->literals); } /** * Formats a rule as a string of the format (Literal1|Literal2|...) * * @return string */ public function __toString() { $result = $this->isDisabled() ? 'disabled(' : '('; foreach ($this->literals as $i => $literal) { if ($i != 0) { $result .= '|'; } $result .= $literal; } $result .= ')'; return $result; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Repository\RepositorySet; /** * @author Nils Adermann */ class RuleSet implements \IteratorAggregate, \Countable { // highest priority => lowest number const TYPE_PACKAGE = 0; const TYPE_REQUEST = 1; const TYPE_LEARNED = 4; /** * READ-ONLY: Lookup table for rule id to rule object * * @var Rule[] */ public $ruleById; protected static $types = array( 255 => 'UNKNOWN', self::TYPE_PACKAGE => 'PACKAGE', self::TYPE_REQUEST => 'REQUEST', self::TYPE_LEARNED => 'LEARNED', ); protected $rules; protected $nextRuleId; protected $rulesByHash; public function __construct() { $this->nextRuleId = 0; foreach ($this->getTypes() as $type) { $this->rules[$type] = array(); } $this->rulesByHash = array(); } public function add(Rule $rule, $type) { if (!isset(self::$types[$type])) { throw new \OutOfBoundsException('Unknown rule type: ' . $type); } $hash = $rule->getHash(); // Do not add if rule already exists if (isset($this->rulesByHash[$hash])) { $potentialDuplicates = $this->rulesByHash[$hash]; if (\is_array($potentialDuplicates)) { foreach ($potentialDuplicates as $potentialDuplicate) { if ($rule->equals($potentialDuplicate)) { return; } } } else { if ($rule->equals($potentialDuplicates)) { return; } } } if (!isset($this->rules[$type])) { $this->rules[$type] = array(); } $this->rules[$type][] = $rule; $this->ruleById[$this->nextRuleId] = $rule; $rule->setType($type); $this->nextRuleId++; if (!isset($this->rulesByHash[$hash])) { $this->rulesByHash[$hash] = $rule; } elseif (\is_array($this->rulesByHash[$hash])) { $this->rulesByHash[$hash][] = $rule; } else { $originalRule = $this->rulesByHash[$hash]; $this->rulesByHash[$hash] = array($originalRule, $rule); } } public function count() { return $this->nextRuleId; } public function ruleById($id) { return $this->ruleById[$id]; } public function getRules() { return $this->rules; } public function getIterator() { return new RuleSetIterator($this->getRules()); } public function getIteratorFor($types) { if (!\is_array($types)) { $types = array($types); } $allRules = $this->getRules(); $rules = array(); foreach ($types as $type) { $rules[$type] = $allRules[$type]; } return new RuleSetIterator($rules); } public function getIteratorWithout($types) { if (!\is_array($types)) { $types = array($types); } $rules = $this->getRules(); foreach ($types as $type) { unset($rules[$type]); } return new RuleSetIterator($rules); } public function getTypes() { $types = self::$types; unset($types[255]); return array_keys($types); } public function getPrettyString(RepositorySet $repositorySet = null, Request $request = null, Pool $pool = null, $isVerbose = false) { $string = "\n"; foreach ($this->rules as $type => $rules) { $string .= str_pad(self::$types[$type], 8, ' ') . ": "; foreach ($rules as $rule) { $string .= ($repositorySet && $request && $pool ? $rule->getPrettyString($repositorySet, $request, $pool, $isVerbose) : $rule)."\n"; } $string .= "\n\n"; } return $string; } public function __toString() { return $this->getPrettyString(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * Wrapper around a Rule which keeps track of the two literals it watches * * Used by RuleWatchGraph to store rules in two RuleWatchChains. * * @author Nils Adermann */ class RuleWatchNode { public $watch1; public $watch2; protected $rule; /** * Creates a new node watching the first and second literals of the rule. * * @param Rule $rule The rule to wrap */ public function __construct($rule) { $this->rule = $rule; $literals = $rule->getLiterals(); $literalCount = \count($literals); $this->watch1 = $literalCount > 0 ? $literals[0] : 0; $this->watch2 = $literalCount > 1 ? $literals[1] : 0; } /** * Places the second watch on the rule's literal, decided at the highest level * * Useful for learned rules where the literal for the highest rule is most * likely to quickly lead to further decisions. * * @param Decisions $decisions The decisions made so far by the solver */ public function watch2OnHighest(Decisions $decisions) { $literals = $this->rule->getLiterals(); // if there are only 2 elements, both are being watched anyway if (\count($literals) < 3 || $this->rule instanceof MultiConflictRule) { return; } $watchLevel = 0; foreach ($literals as $literal) { $level = $decisions->decisionLevel($literal); if ($level > $watchLevel) { $this->watch2 = $literal; $watchLevel = $level; } } } /** * Returns the rule this node wraps * * @return Rule */ public function getRule() { return $this->rule; } /** * Given one watched literal, this method returns the other watched literal * * @param int $literal The watched literal that should not be returned * @return int A literal */ public function getOtherWatch($literal) { if ($this->watch1 == $literal) { return $this->watch2; } return $this->watch1; } /** * Moves a watch from one literal to another * * @param int $from The previously watched literal * @param int $to The literal to be watched now */ public function moveWatch($from, $to) { if ($this->watch1 == $from) { $this->watch1 = $to; } else { $this->watch2 = $to; } } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; use Composer\Package\AliasPackage; use Composer\Package\RootAliasPackage; /** * @author Nils Adermann * @internal */ class LockTransaction extends Transaction { /** * packages in current lock file, platform repo or otherwise present * @var array */ protected $presentMap; /** * Packages which cannot be mapped, platform repo, root package, other fixed repos * @var array */ protected $unlockableMap; /** * @var array */ protected $resultPackages; public function __construct(Pool $pool, $presentMap, $unlockableMap, $decisions) { $this->presentMap = $presentMap; $this->unlockableMap = $unlockableMap; $this->setResultPackages($pool, $decisions); parent::__construct($this->presentMap, $this->resultPackages['all']); } // TODO make this a bit prettier instead of the two text indexes? public function setResultPackages(Pool $pool, Decisions $decisions) { $this->resultPackages = array('all' => array(), 'non-dev' => array(), 'dev' => array()); foreach ($decisions as $i => $decision) { $literal = $decision[Decisions::DECISION_LITERAL]; if ($literal > 0) { $package = $pool->literalToPackage($literal); $this->resultPackages['all'][] = $package; if (!isset($this->unlockableMap[$package->id])) { $this->resultPackages['non-dev'][] = $package; } } } } public function setNonDevPackages(LockTransaction $extractionResult) { $packages = $extractionResult->getNewLockPackages(false); $this->resultPackages['dev'] = $this->resultPackages['non-dev']; $this->resultPackages['non-dev'] = array(); foreach ($packages as $package) { foreach ($this->resultPackages['dev'] as $i => $resultPackage) { // TODO this comparison is probably insufficient, aliases, what about modified versions? I guess they aren't possible? if ($package->getName() == $resultPackage->getName()) { $this->resultPackages['non-dev'][] = $resultPackage; unset($this->resultPackages['dev'][$i]); } } } } // TODO additionalFixedRepository needs to be looked at here as well? public function getNewLockPackages($devMode, $updateMirrors = false) { $packages = array(); foreach ($this->resultPackages[$devMode ? 'dev' : 'non-dev'] as $package) { if (!($package instanceof AliasPackage) && !($package instanceof RootAliasPackage)) { // if we're just updating mirrors we need to reset references to the same as currently "present" packages' references to keep the lock file as-is // we do not reset references if the currently present package didn't have any, or if the type of VCS has changed if ($updateMirrors && !isset($this->presentMap[spl_object_hash($package)])) { foreach ($this->presentMap as $presentPackage) { if ($package->getName() == $presentPackage->getName() && $package->getVersion() == $presentPackage->getVersion()) { if ($presentPackage->getSourceReference() && $presentPackage->getSourceType() === $package->getSourceType()) { $package->setSourceDistReferences($presentPackage->getSourceReference()); } if ($presentPackage->getReleaseDate()) { $package->setReleaseDate($presentPackage->getReleaseDate()); } } } } $packages[] = $package; } } return $packages; } /** * Checks which of the given aliases from composer.json are actually in use for the lock file */ public function getAliases($aliases) { $usedAliases = array(); foreach ($this->resultPackages['all'] as $package) { if ($package instanceof AliasPackage) { foreach ($aliases as $index => $alias) { if ($alias['package'] === $package->getName()) { $usedAliases[] = $alias; unset($aliases[$index]); } } } } usort($usedAliases, function ($a, $b) { return strcmp($a['package'], $b['package']); }); return $usedAliases; } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\DependencyResolver; /** * Stores decisions on installing, removing or keeping packages * * @author Nils Adermann */ class Decisions implements \Iterator, \Countable { const DECISION_LITERAL = 0; const DECISION_REASON = 1; protected $pool; protected $decisionMap; protected $decisionQueue = array(); public function __construct($pool) { $this->pool = $pool; $this->decisionMap = array(); } public function decide($literal, $level, $why) { $this->addDecision($literal, $level); $this->decisionQueue[] = array( self::DECISION_LITERAL => $literal, self::DECISION_REASON => $why, ); } public function satisfy($literal) { $packageId = abs($literal); return ( $literal > 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 || $literal < 0 && isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 ); } public function conflict($literal) { $packageId = abs($literal); return ( (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0 && $literal < 0) || (isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] < 0 && $literal > 0) ); } public function decided($literalOrPackageId) { return !empty($this->decisionMap[abs($literalOrPackageId)]); } public function undecided($literalOrPackageId) { return empty($this->decisionMap[abs($literalOrPackageId)]); } public function decidedInstall($literalOrPackageId) { $packageId = abs($literalOrPackageId); return isset($this->decisionMap[$packageId]) && $this->decisionMap[$packageId] > 0; } public function decisionLevel($literalOrPackageId) { $packageId = abs($literalOrPackageId); if (isset($this->decisionMap[$packageId])) { return abs($this->decisionMap[$packageId]); } return 0; } public function decisionRule($literalOrPackageId) { $packageId = abs($literalOrPackageId); foreach ($this->decisionQueue as $i => $decision) { if ($packageId === abs($decision[self::DECISION_LITERAL])) { return $decision[self::DECISION_REASON]; } } return null; } public function atOffset($queueOffset) { return $this->decisionQueue[$queueOffset]; } public function validOffset($queueOffset) { return $queueOffset >= 0 && $queueOffset < \count($this->decisionQueue); } public function lastReason() { return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_REASON]; } public function lastLiteral() { return $this->decisionQueue[\count($this->decisionQueue) - 1][self::DECISION_LITERAL]; } public function reset() { while ($decision = array_pop($this->decisionQueue)) { $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; } } public function resetToOffset($offset) { while (\count($this->decisionQueue) > $offset + 1) { $decision = array_pop($this->decisionQueue); $this->decisionMap[abs($decision[self::DECISION_LITERAL])] = 0; } } public function revertLast() { $this->decisionMap[abs($this->lastLiteral())] = 0; array_pop($this->decisionQueue); } public function count() { return \count($this->decisionQueue); } public function rewind() { end($this->decisionQueue); } public function current() { return current($this->decisionQueue); } public function key() { return key($this->decisionQueue); } public function next() { return prev($this->decisionQueue); } public function valid() { return false !== current($this->decisionQueue); } public function isEmpty() { return \count($this->decisionQueue) === 0; } protected function addDecision($literal, $level) { $packageId = abs($literal); $previousDecision = isset($this->decisionMap[$packageId]) ? $this->decisionMap[$packageId] : null; if ($previousDecision != 0) { $literalString = $this->pool->literalToPrettyString($literal, array()); $package = $this->pool->literalToPackage($literal); throw new SolverBugException( "Trying to decide $literalString on level $level, even though $package was previously decided as ".(int) $previousDecision."." ); } if ($literal > 0) { $this->decisionMap[$packageId] = $level; } else { $this->decisionMap[$packageId] = -$level; } } public function toString(Pool $pool = null) { $decisionMap = $this->decisionMap; ksort($decisionMap); $str = '['; foreach ($decisionMap as $packageId => $level) { $str .= (($pool) ? $pool->literalToPackage($packageId) : $packageId).':'.$level.','; } $str .= ']'; return $str; } public function __toString() { return $this->toString(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer; use Composer\IO\IOInterface; use Composer\Util\Filesystem; use Composer\Util\Silencer; use Symfony\Component\Finder\Finder; /** * Reads/writes to a filesystem cache * * @author Jordi Boggiano */ class Cache { private static $cacheCollected = false; private $io; private $root; private $enabled = true; private $allowlist; private $filesystem; private $readOnly; /** * @param IOInterface $io * @param string $cacheDir location of the cache * @param string $allowlist List of characters that are allowed in path names (used in a regex character class) * @param Filesystem $filesystem optional filesystem instance * @param bool $readOnly whether the cache is in readOnly mode */ public function __construct(IOInterface $io, $cacheDir, $allowlist = 'a-z0-9.', Filesystem $filesystem = null, $readOnly = false) { $this->io = $io; $this->root = rtrim($cacheDir, '/\\') . '/'; $this->allowlist = $allowlist; $this->filesystem = $filesystem ?: new Filesystem(); $this->readOnly = (bool) $readOnly; if (!self::isUsable($cacheDir)) { $this->enabled = false; return; } if ( (!is_dir($this->root) && !Silencer::call('mkdir', $this->root, 0777, true)) || !is_writable($this->root) ) { $this->io->writeError('Cannot create cache directory ' . $this->root . ', or directory is not writable. Proceeding without cache'); $this->enabled = false; } } /** * @param bool $readOnly */ public function setReadOnly($readOnly) { $this->readOnly = (bool) $readOnly; } /** * @return bool */ public function isReadOnly() { return $this->readOnly; } public static function isUsable($path) { return !preg_match('{(^|[\\\\/])(\$null|nul|NUL|/dev/null)([\\\\/]|$)}', $path); } public function isEnabled() { return $this->enabled; } public function getRoot() { return $this->root; } public function read($file) { if ($this->enabled) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); if (file_exists($this->root . $file)) { $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); return file_get_contents($this->root . $file); } } return false; } public function write($file, $contents) { if ($this->enabled && !$this->readOnly) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); $this->io->writeError('Writing '.$this->root . $file.' into cache', true, IOInterface::DEBUG); $tempFileName = $this->root . $file . uniqid('.', true) . '.tmp'; try { return file_put_contents($tempFileName, $contents) !== false && rename($tempFileName, $this->root . $file); } catch (\ErrorException $e) { $this->io->writeError('Failed to write into cache: '.$e->getMessage().'', true, IOInterface::DEBUG); if (preg_match('{^file_put_contents\(\): Only ([0-9]+) of ([0-9]+) bytes written}', $e->getMessage(), $m)) { // Remove partial file. unlink($tempFileName); $message = sprintf( 'Writing %1$s into cache failed after %2$u of %3$u bytes written, only %4$u bytes of free space available', $tempFileName, $m[1], $m[2], @disk_free_space(dirname($tempFileName)) ); $this->io->writeError($message); return false; } throw $e; } } return false; } /** * Copy a file into the cache */ public function copyFrom($file, $source) { if ($this->enabled && !$this->readOnly) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); $this->filesystem->ensureDirectoryExists(dirname($this->root . $file)); if (!file_exists($source)) { $this->io->writeError(''.$source.' does not exist, can not write into cache'); } elseif ($this->io->isDebug()) { $this->io->writeError('Writing '.$this->root . $file.' into cache from '.$source); } return copy($source, $this->root . $file); } return false; } /** * Copy a file out of the cache */ public function copyTo($file, $target) { if ($this->enabled) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); if (file_exists($this->root . $file)) { try { touch($this->root . $file, filemtime($this->root . $file), time()); } catch (\ErrorException $e) { // fallback in case the above failed due to incorrect ownership // see https://github.com/composer/composer/issues/4070 Silencer::call('touch', $this->root . $file); } $this->io->writeError('Reading '.$this->root . $file.' from cache', true, IOInterface::DEBUG); return copy($this->root . $file, $target); } } return false; } public function gcIsNecessary() { return (!self::$cacheCollected && !mt_rand(0, 50)); } public function remove($file) { if ($this->enabled) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); if (file_exists($this->root . $file)) { return $this->filesystem->unlink($this->root . $file); } } return false; } public function clear() { if ($this->enabled) { $this->filesystem->emptyDirectory($this->root); return true; } return false; } public function gc($ttl, $maxSize) { if ($this->enabled) { $expire = new \DateTime(); $expire->modify('-'.$ttl.' seconds'); $finder = $this->getFinder()->date('until '.$expire->format('Y-m-d H:i:s')); foreach ($finder as $file) { $this->filesystem->unlink($file->getPathname()); } $totalSize = $this->filesystem->size($this->root); if ($totalSize > $maxSize) { $iterator = $this->getFinder()->sortByAccessedTime()->getIterator(); while ($totalSize > $maxSize && $iterator->valid()) { $filepath = $iterator->current()->getPathname(); $totalSize -= $this->filesystem->size($filepath); $this->filesystem->unlink($filepath); $iterator->next(); } } self::$cacheCollected = true; return true; } return false; } public function sha1($file) { if ($this->enabled) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); if (file_exists($this->root . $file)) { return sha1_file($this->root . $file); } } return false; } public function sha256($file) { if ($this->enabled) { $file = preg_replace('{[^'.$this->allowlist.']}i', '-', $file); if (file_exists($this->root . $file)) { return hash_file('sha256', $this->root . $file); } } return false; } protected function getFinder() { return Finder::create()->in($this->root)->files(); } } * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ function includeIfExists($file) { return file_exists($file) ? include $file : false; } if ((!$loader = includeIfExists(__DIR__.'/../vendor/autoload.php')) && (!$loader = includeIfExists(__DIR__.'/../../../autoload.php'))) { echo 'You must set up the project dependencies using `composer install`'.PHP_EOL. 'See https://getcomposer.org/download/ for instructions on installing Composer'.PHP_EOL; exit(1); } return $loader; * Jordi Boggiano * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\Autoload; /** * ClassLoader implements a PSR-0, PSR-4 and classmap class loader. * * $loader = new \Composer\Autoload\ClassLoader(); * * // register classes with namespaces * $loader->add('Symfony\Component', __DIR__.'/component'); * $loader->add('Symfony', __DIR__.'/framework'); * * // activate the autoloader * $loader->register(); * * // to enable searching the include path (eg. for PEAR packages) * $loader->setUseIncludePath(true); * * In this example, if you try to use a class in the Symfony\Component * namespace or one of its children (Symfony\Component\Console for instance), * the autoloader will first look for the class under the component/ * directory, and it will then fallback to the framework/ directory if not * found before giving up. * * This class is loosely based on the Symfony UniversalClassLoader. * * @author Fabien Potencier * @author Jordi Boggiano * @see https://www.php-fig.org/psr/psr-0/ * @see https://www.php-fig.org/psr/psr-4/ */ class ClassLoader { private $vendorDir; // PSR-4 private $prefixLengthsPsr4 = array(); private $prefixDirsPsr4 = array(); private $fallbackDirsPsr4 = array(); // PSR-0 private $prefixesPsr0 = array(); private $fallbackDirsPsr0 = array(); private $useIncludePath = false; private $classMap = array(); private $classMapAuthoritative = false; private $missingClasses = array(); private $apcuPrefix; private static $registeredLoaders = array(); public function __construct($vendorDir = null) { $this->vendorDir = $vendorDir; } public function getPrefixes() { if (!empty($this->prefixesPsr0)) { return call_user_func_array('array_merge', array_values($this->prefixesPsr0)); } return array(); } public function getPrefixesPsr4() { return $this->prefixDirsPsr4; } public function getFallbackDirs() { return $this->fallbackDirsPsr0; } public function getFallbackDirsPsr4() { return $this->fallbackDirsPsr4; } public function getClassMap() { return $this->classMap; } /** * @param array $classMap Class to filename map */ public function addClassMap(array $classMap) { if ($this->classMap) { $this->classMap = array_merge($this->classMap, $classMap); } else { $this->classMap = $classMap; } } /** * Registers a set of PSR-0 directories for a given prefix, either * appending or prepending to the ones previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 root directories * @param bool $prepend Whether to prepend the directories */ public function add($prefix, $paths, $prepend = false) { if (!$prefix) { if ($prepend) { $this->fallbackDirsPsr0 = array_merge( (array) $paths, $this->fallbackDirsPsr0 ); } else { $this->fallbackDirsPsr0 = array_merge( $this->fallbackDirsPsr0, (array) $paths ); } return; } $first = $prefix[0]; if (!isset($this->prefixesPsr0[$first][$prefix])) { $this->prefixesPsr0[$first][$prefix] = (array) $paths; return; } if ($prepend) { $this->prefixesPsr0[$first][$prefix] = array_merge( (array) $paths, $this->prefixesPsr0[$first][$prefix] ); } else { $this->prefixesPsr0[$first][$prefix] = array_merge( $this->prefixesPsr0[$first][$prefix], (array) $paths ); } } /** * Registers a set of PSR-4 directories for a given namespace, either * appending or prepending to the ones previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * @param bool $prepend Whether to prepend the directories * * @throws \InvalidArgumentException */ public function addPsr4($prefix, $paths, $prepend = false) { if (!$prefix) { // Register directories for the root namespace. if ($prepend) { $this->fallbackDirsPsr4 = array_merge( (array) $paths, $this->fallbackDirsPsr4 ); } else { $this->fallbackDirsPsr4 = array_merge( $this->fallbackDirsPsr4, (array) $paths ); } } elseif (!isset($this->prefixDirsPsr4[$prefix])) { // Register directories for a new namespace. $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } elseif ($prepend) { // Prepend directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( (array) $paths, $this->prefixDirsPsr4[$prefix] ); } else { // Append directories for an already registered namespace. $this->prefixDirsPsr4[$prefix] = array_merge( $this->prefixDirsPsr4[$prefix], (array) $paths ); } } /** * Registers a set of PSR-0 directories for a given prefix, * replacing any others previously set for this prefix. * * @param string $prefix The prefix * @param array|string $paths The PSR-0 base directories */ public function set($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr0 = (array) $paths; } else { $this->prefixesPsr0[$prefix[0]][$prefix] = (array) $paths; } } /** * Registers a set of PSR-4 directories for a given namespace, * replacing any others previously set for this namespace. * * @param string $prefix The prefix/namespace, with trailing '\\' * @param array|string $paths The PSR-4 base directories * * @throws \InvalidArgumentException */ public function setPsr4($prefix, $paths) { if (!$prefix) { $this->fallbackDirsPsr4 = (array) $paths; } else { $length = strlen($prefix); if ('\\' !== $prefix[$length - 1]) { throw new \InvalidArgumentException("A non-empty PSR-4 prefix must end with a namespace separator."); } $this->prefixLengthsPsr4[$prefix[0]][$prefix] = $length; $this->prefixDirsPsr4[$prefix] = (array) $paths; } } /** * Turns on searching the include path for class files. * * @param bool $useIncludePath */ public function setUseIncludePath($useIncludePath) { $this->useIncludePath = $useIncludePath; } /** * Can be used to check if the autoloader uses the include path to check * for classes. * * @return bool */ public function getUseIncludePath() { return $this->useIncludePath; } /** * Turns off searching the prefix and fallback directories for classes * that have not been registered with the class map. * * @param bool $classMapAuthoritative */ public function setClassMapAuthoritative($classMapAuthoritative) { $this->classMapAuthoritative = $classMapAuthoritative; } /** * Should class lookup fail if not found in the current class map? * * @return bool */ public function isClassMapAuthoritative() { return $this->classMapAuthoritative; } /** * APCu prefix to use to cache found/not-found classes, if the extension is enabled. * * @param string|null $apcuPrefix */ public function setApcuPrefix($apcuPrefix) { $this->apcuPrefix = function_exists('apcu_fetch') && filter_var(ini_get('apc.enabled'), FILTER_VALIDATE_BOOLEAN) ? $apcuPrefix : null; } /** * The APCu prefix in use, or null if APCu caching is not enabled. * * @return string|null */ public function getApcuPrefix() { return $this->apcuPrefix; } /** * Registers this instance as an autoloader. * * @param bool $prepend Whether to prepend the autoloader or not */ public function register($prepend = false) { spl_autoload_register(array($this, 'loadClass'), true, $prepend); if (null === $this->vendorDir) { return; } if ($prepend) { self::$registeredLoaders = array($this->vendorDir => $this) + self::$registeredLoaders; } else { unset(self::$registeredLoaders[$this->vendorDir]); self::$registeredLoaders[$this->vendorDir] = $this; } } /** * Unregisters this instance as an autoloader. */ public function unregister() { spl_autoload_unregister(array($this, 'loadClass')); if (null !== $this->vendorDir) { unset(self::$registeredLoaders[$this->vendorDir]); } } /** * Loads the given class or interface. * * @param string $class The name of the class * @return bool|null True if loaded, null otherwise */ public function loadClass($class) { if ($file = $this->findFile($class)) { includeFile($file); return true; } } /** * Finds the path to the file where the class is defined. * * @param string $class The name of the class * * @return string|false The path if found, false otherwise */ public function findFile($class) { // class map lookup if (isset($this->classMap[$class])) { return $this->classMap[$class]; } if ($this->classMapAuthoritative || isset($this->missingClasses[$class])) { return false; } if (null !== $this->apcuPrefix) { $file = apcu_fetch($this->apcuPrefix.$class, $hit); if ($hit) { return $file; } } $file = $this->findFileWithExtension($class, '.php'); // Search for Hack files if we are running on HHVM if (false === $file && defined('HHVM_VERSION')) { $file = $this->findFileWithExtension($class, '.hh'); } if (null !== $this->apcuPrefix) { apcu_add($this->apcuPrefix.$class, $file); } if (false === $file) { // Remember that this class does not exist. $this->missingClasses[$class] = true; } return $file; } /** * Returns the currently registered loaders indexed by their corresponding vendor directories. * * @return self[] */ public static function getRegisteredLoaders() { return self::$registeredLoaders; } private function findFileWithExtension($class, $ext) { // PSR-4 lookup $logicalPathPsr4 = strtr($class, '\\', DIRECTORY_SEPARATOR) . $ext; $first = $class[0]; if (isset($this->prefixLengthsPsr4[$first])) { $subPath = $class; while (false !== $lastPos = strrpos($subPath, '\\')) { $subPath = substr($subPath, 0, $lastPos); $search = $subPath . '\\'; if (isset($this->prefixDirsPsr4[$search])) { $pathEnd = DIRECTORY_SEPARATOR . substr($logicalPathPsr4, $lastPos + 1); foreach ($this->prefixDirsPsr4[$search] as $dir) { if (file_exists($file = $dir . $pathEnd)) { return $file; } } } } } // PSR-4 fallback dirs foreach ($this->fallbackDirsPsr4 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr4)) { return $file; } } // PSR-0 lookup if (false !== $pos = strrpos($class, '\\')) { // namespaced class name $logicalPathPsr0 = substr($logicalPathPsr4, 0, $pos + 1) . strtr(substr($logicalPathPsr4, $pos + 1), '_', DIRECTORY_SEPARATOR); } else { // PEAR-like class name $logicalPathPsr0 = strtr($class, '_', DIRECTORY_SEPARATOR) . $ext; } if (isset($this->prefixesPsr0[$first])) { foreach ($this->prefixesPsr0[$first] as $prefix => $dirs) { if (0 === strpos($class, $prefix)) { foreach ($dirs as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } } } } // PSR-0 fallback dirs foreach ($this->fallbackDirsPsr0 as $dir) { if (file_exists($file = $dir . DIRECTORY_SEPARATOR . $logicalPathPsr0)) { return $file; } } // PSR-0 include paths. if ($this->useIncludePath && $file = stream_resolve_include_path($logicalPathPsr0)) { return $file; } return false; } } /** * Scope isolated include. * * Prevents access to $this/self from included files. */ function includeFile($file) { include $file; } array ( 'pretty_version' => 'dev-release-2-5-0', 'version' => 'dev-release-2-5-0', 'aliases' => array ( ), 'reference' => '500580cc740e92a2b92dc26eeec9f046a1acae6d', 'name' => 'wp-cli/wp-cli-bundle', ), 'versions' => array ( 'composer/ca-bundle' => array ( 'pretty_version' => '1.2.9', 'version' => '1.2.9.0', 'aliases' => array ( ), 'reference' => '78a0e288fdcebf92aa2318a8d3656168da6ac1a5', ), 'composer/composer' => array ( 'pretty_version' => '2.0.13', 'version' => '2.0.13.0', 'aliases' => array ( ), 'reference' => '986e8b86b7b570632ad0a905c3726c33dd4c0efb', ), 'composer/metadata-minifier' => array ( 'pretty_version' => '1.0.0', 'version' => '1.0.0.0', 'aliases' => array ( ), 'reference' => 'c549d23829536f0d0e984aaabbf02af91f443207', ), 'composer/semver' => array ( 'pretty_version' => '3.2.4', 'version' => '3.2.4.0', 'aliases' => array ( ), 'reference' => 'a02fdf930a3c1c3ed3a49b5f63859c0c20e10464', ), 'composer/spdx-licenses' => array ( 'pretty_version' => '1.5.5', 'version' => '1.5.5.0', 'aliases' => array ( ), 'reference' => 'de30328a7af8680efdc03e396aad24befd513200', ), 'composer/xdebug-handler' => array ( 'pretty_version' => '1.4.6', 'version' => '1.4.6.0', 'aliases' => array ( ), 'reference' => 'f27e06cd9675801df441b3656569b328e04aa37c', ), 'gettext/gettext' => array ( 'pretty_version' => 'v4.8.4', 'version' => '4.8.4.0', 'aliases' => array ( ), 'reference' => '58bc0f7f37e78efb0f9758f93d4a0f669f0f84a1', ), 'gettext/languages' => array ( 'pretty_version' => '2.6.0', 'version' => '2.6.0.0', 'aliases' => array ( ), 'reference' => '38ea0482f649e0802e475f0ed19fa993bcb7a618', ), 'justinrainbow/json-schema' => array ( 'pretty_version' => '5.2.10', 'version' => '5.2.10.0', 'aliases' => array ( ), 'reference' => '2ba9c8c862ecd5510ed16c6340aa9f6eadb4f31b', ), 'mck89/peast' => array ( 'pretty_version' => 'v1.12.0', 'version' => '1.12.0.0', 'aliases' => array ( ), 'reference' => '833be7a294627a8c5b1c482cbf489f73bf9b8086', ), 'mustache/mustache' => array ( 'pretty_version' => 'v2.13.0', 'version' => '2.13.0.0', 'aliases' => array ( ), 'reference' => 'e95c5a008c23d3151d59ea72484d4f72049ab7f4', ), 'nb/oxymel' => array ( 'pretty_version' => 'v0.1.0', 'version' => '0.1.0.0', 'aliases' => array ( ), 'reference' => 'cbe626ef55d5c4cc9b5e6e3904b395861ea76e3c', ), 'psr/log' => array ( 'pretty_version' => '1.1.4', 'version' => '1.1.4.0', 'aliases' => array ( ), 'reference' => 'd49695b909c3b7628b6289db5479a1c204601f11', ), 'psr/log-implementation' => array ( 'provided' => array ( 0 => '1.0', ), ), 'react/promise' => array ( 'pretty_version' => 'v2.8.0', 'version' => '2.8.0.0', 'aliases' => array ( ), 'reference' => 'f3cff96a19736714524ca0dd1d4130de73dbbbc4', ), 'rmccue/requests' => array ( 'pretty_version' => 'v1.8.0', 'version' => '1.8.0.0', 'aliases' => array ( ), 'reference' => 'afbe4790e4def03581c4a0963a1e8aa01f6030f1', ), 'seld/jsonlint' => array ( 'pretty_version' => '1.8.3', 'version' => '1.8.3.0', 'aliases' => array ( ), 'reference' => '9ad6ce79c342fbd44df10ea95511a1b24dee5b57', ), 'seld/phar-utils' => array ( 'pretty_version' => '1.1.1', 'version' => '1.1.1.0', 'aliases' => array ( ), 'reference' => '8674b1d84ffb47cc59a101f5d5a3b61e87d23796', ), 'symfony/console' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'a10b1da6fc93080c180bba7219b5ff5b7518fe81', ), 'symfony/debug' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'ab42889de57fdfcfcc0759ab102e2fd4ea72dcae', ), 'symfony/filesystem' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'e58d7841cddfed6e846829040dca2cca0ebbbbb3', ), 'symfony/finder' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'b6b6ad3db3edb1b4b1c1896b1975fb684994de6e', ), 'symfony/polyfill-ctype' => array ( 'pretty_version' => 'v1.19.0', 'version' => '1.19.0.0', 'aliases' => array ( ), 'reference' => 'aed596913b70fae57be53d86faa2e9ef85a2297b', ), 'symfony/polyfill-mbstring' => array ( 'pretty_version' => 'v1.19.0', 'version' => '1.19.0.0', 'aliases' => array ( ), 'reference' => 'b5f7b932ee6fa802fc792eabd77c4c88084517ce', ), 'symfony/process' => array ( 'pretty_version' => 'v3.4.47', 'version' => '3.4.47.0', 'aliases' => array ( ), 'reference' => 'b8648cf1d5af12a44a51d07ef9bf980921f15fca', ), 'wp-cli/cache-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => 'bf5d3d335de5f9d93180682f107c238a83c4b02c', ), 'wp-cli/checksum-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '0f58af914a4af3018ce83449869300d65df9f613', ), 'wp-cli/config-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '46b096eae2c116bed30c8d649f6e2a1d4db035c1', ), 'wp-cli/core-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => 'b7f44f03a3a3514798cda21b61a418f08aece324', ), 'wp-cli/cron-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => 'f0d493ff4d4f20ee6d6fd5495da1bc1760f9da15', ), 'wp-cli/db-command' => array ( 'pretty_version' => 'v2.0.13', 'version' => '2.0.13.0', 'aliases' => array ( ), 'reference' => '269bf26a66915d6526b1015f7c759ffe04386bf7', ), 'wp-cli/embed-command' => array ( 'pretty_version' => 'v2.0.9', 'version' => '2.0.9.0', 'aliases' => array ( ), 'reference' => 'ec74f3f34cb9c028fd39ebf8cca3a1504fd599ba', ), 'wp-cli/entity-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '9b3c030d5b056f3f7b8835e117139f92799340a9', ), 'wp-cli/eval-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => 'dcda02194bd0ca773ce03dec6093ac0d271f8976', ), 'wp-cli/export-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => 'e94f5f9e84768919aa6cd2193eb0c8b994e7f4c9', ), 'wp-cli/extension-command' => array ( 'pretty_version' => 'v2.1.0', 'version' => '2.1.0.0', 'aliases' => array ( ), 'reference' => '7ad4f9c0c93a1ee737521f825f161d4b79a46945', ), 'wp-cli/i18n-command' => array ( 'pretty_version' => 'v2.2.8', 'version' => '2.2.8.0', 'aliases' => array ( ), 'reference' => '8bc234617edc533590ac0f41080164a8d85ec9ce', ), 'wp-cli/import-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => '75e6d4273b4a9dbf510d69a44f9371eee0d01294', ), 'wp-cli/language-command' => array ( 'pretty_version' => 'v2.0.10', 'version' => '2.0.10.0', 'aliases' => array ( ), 'reference' => '4c02ef431e2825eac7b02e5cf4804c47167b6baf', ), 'wp-cli/maintenance-mode-command' => array ( 'pretty_version' => 'v2.0.6', 'version' => '2.0.6.0', 'aliases' => array ( ), 'reference' => '26c1c0a79ed1194c863cb95fa364b4db7929d7cc', ), 'wp-cli/media-command' => array ( 'pretty_version' => 'v2.0.11', 'version' => '2.0.11.0', 'aliases' => array ( ), 'reference' => '165a462e234e55db2174f9f0f6fab72040e9c510', ), 'wp-cli/mustangostang-spyc' => array ( 'pretty_version' => '0.6.3', 'version' => '0.6.3.0', 'aliases' => array ( ), 'reference' => '6aa0b4da69ce9e9a2c8402dab8d43cf32c581cc7', ), 'wp-cli/package-command' => array ( 'pretty_version' => 'v2.1.1', 'version' => '2.1.1.0', 'aliases' => array ( ), 'reference' => '2e345df6c67d4f9b4bf42ce12a7fa07b2b44399d', ), 'wp-cli/php-cli-tools' => array ( 'pretty_version' => 'v0.11.12', 'version' => '0.11.12.0', 'aliases' => array ( ), 'reference' => 'e472e08489f7504d9e8c5c5a057e1419cd1b2b3e', ), 'wp-cli/rewrite-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => '468358e07943a7a8be70c95e20d45412d82899ac', ), 'wp-cli/role-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => '7460566febe82b14c34b105c4c6326d3e23f9295', ), 'wp-cli/scaffold-command' => array ( 'pretty_version' => 'v2.0.14', 'version' => '2.0.14.0', 'aliases' => array ( ), 'reference' => 'cde44524fd0499c0364a5ae3a6dc492796e80e0a', ), 'wp-cli/search-replace-command' => array ( 'pretty_version' => 'v2.0.12', 'version' => '2.0.12.0', 'aliases' => array ( ), 'reference' => '7d93abbdfd0c323902ac21fc34186041be743fd0', ), 'wp-cli/server-command' => array ( 'pretty_version' => 'v2.0.8', 'version' => '2.0.8.0', 'aliases' => array ( ), 'reference' => '29976aef5c2bdf159b8700eab26bafc943f0be0c', ), 'wp-cli/shell-command' => array ( 'pretty_version' => 'v2.0.9', 'version' => '2.0.9.0', 'aliases' => array ( ), 'reference' => 'f27b34a87b515da646d2e7018a8abc1254416fec', ), 'wp-cli/super-admin-command' => array ( 'pretty_version' => 'v2.0.7', 'version' => '2.0.7.0', 'aliases' => array ( ), 'reference' => 'ad4bd4e6b6a53afa4ba8664a6dd695be6feb692e', ), 'wp-cli/widget-command' => array ( 'pretty_version' => 'v2.1.4', 'version' => '2.1.4.0', 'aliases' => array ( ), 'reference' => '5c7b4e147b77e3d768a9a034693ebc7ba1980707', ), 'wp-cli/wp-cli' => array ( 'pretty_version' => 'dev-master', 'version' => 'dev-master', 'aliases' => array ( 0 => '2.5.x-dev', ), 'reference' => '0bcf0c54f4d35685211d435e25219cc7acbe6d48', ), 'wp-cli/wp-cli-bundle' => array ( 'pretty_version' => 'dev-release-2-5-0', 'version' => 'dev-release-2-5-0', 'aliases' => array ( ), 'reference' => '500580cc740e92a2b92dc26eeec9f046a1acae6d', ), 'wp-cli/wp-config-transformer' => array ( 'pretty_version' => 'v1.2.8', 'version' => '1.2.8.0', 'aliases' => array ( ), 'reference' => '0bb2b9162c38ca72370380aea11dc06e431e13a5', ), ), ); * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Composer\MetadataMinifier; class MetadataMinifier { /** * Expands an array of minified versions back to their original format * * @param array[] $versions A list of minified version arrays * @return array[] A list of version arrays */ public static function expand(array $versions) { $expanded = array(); $expandedVersion = null; foreach ($versions as $versionData) { if (!$expandedVersion) { $expandedVersion = $versionData; $expanded[] = $expandedVersion; continue; } // add any changes from the previous version to the expanded one foreach ($versionData as $key => $val) { if ($val === '__unset') { unset($expandedVersion[$key]); } else { $expandedVersion[$key] = $val; } } $expanded[] = $expandedVersion; } return $expanded; } /** * Minifies an array of versions into a set of version diffs * * @param array[] $versions A list of version arrays * @return array[] A list of versions minified with each array only containing the differences to the previous one */ public static function minify(array $versions) { $minifiedVersions = array(); $lastKnownVersionData = null; foreach ($versions as $version) { if (!$lastKnownVersionData) { $lastKnownVersionData = $version; $minifiedVersions[] = $version; continue; } $minifiedVersion = array(); // add any changes from the previous version foreach ($version as $key => $val) { if (!isset($lastKnownVersionData[$key]) || $lastKnownVersionData[$key] !== $val) { $minifiedVersion[$key] = $val; $lastKnownVersionData[$key] = $val; } } // store any deletions from the previous version for keys missing in current one foreach ($lastKnownVersionData as $key => $val) { if (!isset($version[$key])) { $minifiedVersion[$key] = "__unset"; unset($lastKnownVersionData[$key]); } } $minifiedVersions[] = $minifiedVersion; } return $minifiedVersions; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Semver\Constraint\MultiConstraint; use Composer\Semver\Constraint\Constraint; /** * Version parser. * * @author Jordi Boggiano */ class VersionParser { /** * Regex to match pre-release data (sort of). * * Due to backwards compatibility: * - Instead of enforcing hyphen, an underscore, dot or nothing at all are also accepted. * - Only stabilities as recognized by Composer are allowed to precede a numerical identifier. * - Numerical-only pre-release identifiers are not supported, see tests. * * |--------------| * [major].[minor].[patch] -[pre-release] +[build-metadata] * * @var string */ private static $modifierRegex = '[._-]?(?:(stable|beta|b|RC|alpha|a|patch|pl|p)((?:[.-]?\d+)*+)?)?([.-]?dev)?'; /** @var string */ private static $stabilitiesRegex = 'stable|RC|beta|alpha|dev'; /** * Returns the stability of a version. * * @param string $version * * @return string */ public static function parseStability($version) { $version = preg_replace('{#.+$}', '', $version); if (strpos($version, 'dev-') === 0 || '-dev' === substr($version, -4)) { return 'dev'; } preg_match('{' . self::$modifierRegex . '(?:\+.*)?$}i', strtolower($version), $match); if (!empty($match[3])) { return 'dev'; } if (!empty($match[1])) { if ('beta' === $match[1] || 'b' === $match[1]) { return 'beta'; } if ('alpha' === $match[1] || 'a' === $match[1]) { return 'alpha'; } if ('rc' === $match[1]) { return 'RC'; } } return 'stable'; } /** * @param string $stability * * @return string */ public static function normalizeStability($stability) { $stability = strtolower($stability); return $stability === 'rc' ? 'RC' : $stability; } /** * Normalizes a version string to be able to perform comparisons on it. * * @param string $version * @param string $fullVersion optional complete version string to give more context * * @throws \UnexpectedValueException * * @return string */ public function normalize($version, $fullVersion = null) { $version = trim($version); $origVersion = $version; if (null === $fullVersion) { $fullVersion = $version; } // strip off aliasing if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $version, $match)) { $version = $match[1]; } // strip off stability flag if (preg_match('{@(?:' . self::$stabilitiesRegex . ')$}i', $version, $match)) { $version = substr($version, 0, strlen($version) - strlen($match[0])); } // normalize master/trunk/default branches to dev-name for BC with 1.x as these used to be valid constraints if (\in_array($version, array('master', 'trunk', 'default'), true)) { $version = 'dev-' . $version; } // if requirement is branch-like, use full name if (stripos($version, 'dev-') === 0) { return 'dev-' . substr($version, 4); } // strip off build metadata if (preg_match('{^([^,\s+]++)\+[^\s]++$}', $version, $match)) { $version = $match[1]; } // match classical versioning if (preg_match('{^v?(\d{1,5})(\.\d++)?(\.\d++)?(\.\d++)?' . self::$modifierRegex . '$}i', $version, $matches)) { $version = $matches[1] . (!empty($matches[2]) ? $matches[2] : '.0') . (!empty($matches[3]) ? $matches[3] : '.0') . (!empty($matches[4]) ? $matches[4] : '.0'); $index = 5; // match date(time) based versioning } elseif (preg_match('{^v?(\d{4}(?:[.:-]?\d{2}){1,6}(?:[.:-]?\d{1,3})?)' . self::$modifierRegex . '$}i', $version, $matches)) { $version = preg_replace('{\D}', '.', $matches[1]); $index = 2; } // add version modifiers if a version was matched if (isset($index)) { if (!empty($matches[$index])) { if ('stable' === $matches[$index]) { return $version; } $version .= '-' . $this->expandStability($matches[$index]) . (isset($matches[$index + 1]) && '' !== $matches[$index + 1] ? ltrim($matches[$index + 1], '.-') : ''); } if (!empty($matches[$index + 2])) { $version .= '-dev'; } return $version; } // match dev branches if (preg_match('{(.*?)[.-]?dev$}i', $version, $match)) { try { $normalized = $this->normalizeBranch($match[1]); // a branch ending with -dev is only valid if it is numeric // if it gets prefixed with dev- it means the branch name should // have had a dev- prefix already when passed to normalize if (strpos($normalized, 'dev-') === false) { return $normalized; } } catch (\Exception $e) { } } $extraMessage = ''; if (preg_match('{ +as +' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))?$}', $fullVersion)) { $extraMessage = ' in "' . $fullVersion . '", the alias must be an exact version'; } elseif (preg_match('{^' . preg_quote($version) . '(?:@(?:'.self::$stabilitiesRegex.'))? +as +}', $fullVersion)) { $extraMessage = ' in "' . $fullVersion . '", the alias source must be an exact version, if it is a branch name you should prefix it with dev-'; } throw new \UnexpectedValueException('Invalid version string "' . $origVersion . '"' . $extraMessage); } /** * Extract numeric prefix from alias, if it is in numeric format, suitable for version comparison. * * @param string $branch Branch name (e.g. 2.1.x-dev) * * @return string|false Numeric prefix if present (e.g. 2.1.) or false */ public function parseNumericAliasPrefix($branch) { if (preg_match('{^(?P(\d++\\.)*\d++)(?:\.x)?-dev$}i', $branch, $matches)) { return $matches['version'] . '.'; } return false; } /** * Normalizes a branch name to be able to perform comparisons on it. * * @param string $name * * @return string */ public function normalizeBranch($name) { $name = trim($name); if (preg_match('{^v?(\d++)(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?(\.(?:\d++|[xX*]))?$}i', $name, $matches)) { $version = ''; for ($i = 1; $i < 5; ++$i) { $version .= isset($matches[$i]) ? str_replace(array('*', 'X'), 'x', $matches[$i]) : '.x'; } return str_replace('x', '9999999', $version) . '-dev'; } return 'dev-' . $name; } /** * Normalizes a default branch name (i.e. master on git) to 9999999-dev. * * @param string $name * * @return string */ public function normalizeDefaultBranch($name) { if ($name === 'dev-master' || $name === 'dev-default' || $name === 'dev-trunk') { return '9999999-dev'; } return $name; } /** * Parses a constraint string into MultiConstraint and/or Constraint objects. * * @param string $constraints * * @return ConstraintInterface */ public function parseConstraints($constraints) { $prettyConstraint = $constraints; $orConstraints = preg_split('{\s*\|\|?\s*}', trim($constraints)); $orGroups = array(); foreach ($orConstraints as $constraints) { $andConstraints = preg_split('{(?< ,]) *(? 1) { $constraintObjects = array(); foreach ($andConstraints as $constraint) { foreach ($this->parseConstraint($constraint) as $parsedConstraint) { $constraintObjects[] = $parsedConstraint; } } } else { $constraintObjects = $this->parseConstraint($andConstraints[0]); } if (1 === \count($constraintObjects)) { $constraint = $constraintObjects[0]; } else { $constraint = new MultiConstraint($constraintObjects); } $orGroups[] = $constraint; } $constraint = MultiConstraint::create($orGroups, false); $constraint->setPrettyString($prettyConstraint); return $constraint; } /** * @param string $constraint * * @throws \UnexpectedValueException * * @return array */ private function parseConstraint($constraint) { // strip off aliasing if (preg_match('{^([^,\s]++) ++as ++([^,\s]++)$}', $constraint, $match)) { $constraint = $match[1]; } // strip @stability flags, and keep it for later use if (preg_match('{^([^,\s]*?)@(' . self::$stabilitiesRegex . ')$}i', $constraint, $match)) { $constraint = '' !== $match[1] ? $match[1] : '*'; if ($match[2] !== 'stable') { $stabilityModifier = $match[2]; } } // get rid of #refs as those are used by composer only if (preg_match('{^(dev-[^,\s@]+?|[^,\s@]+?\.x-dev)#.+$}i', $constraint, $match)) { $constraint = $match[1]; } if (preg_match('{^(v)?[xX*](\.[xX*])*$}i', $constraint, $match)) { if (!empty($match[1]) || !empty($match[2])) { return array(new Constraint('>=', '0.0.0.0-dev')); } return array(new MatchAllConstraint()); } $versionRegex = 'v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.(\d++))?(?:' . self::$modifierRegex . '|\.([xX*][.-]?dev))(?:\+[^\s]+)?'; // Tilde Range // // Like wildcard constraints, unsuffixed tilde constraints say that they must be greater than the previous // version, to ensure that unstable instances of the current version are allowed. However, if a stability // suffix is added to the constraint, then a >= match on the current version is used instead. if (preg_match('{^~>?' . $versionRegex . '$}i', $constraint, $matches)) { if (strpos($constraint, '~>') === 0) { throw new \UnexpectedValueException( 'Could not parse version constraint ' . $constraint . ': ' . 'Invalid operator "~>", you probably meant to use the "~" operator' ); } // Work out which position in the version we are operating at if (isset($matches[4]) && '' !== $matches[4] && null !== $matches[4]) { $position = 4; } elseif (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; } // when matching 2.x-dev or 3.0.x-dev we have to shift the second or third number, despite no second/third number matching above if (!empty($matches[8])) { $position++; } // Calculate the stability suffix $stabilitySuffix = ''; if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { $stabilitySuffix .= '-dev'; } $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); $lowerBound = new Constraint('>=', $lowVersion); // For upper bound, we increment the position of one more significance, // but highPosition = 0 would be illegal $highPosition = max(1, $position - 1); $highVersion = $this->manipulateVersionString($matches, $highPosition, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); return array( $lowerBound, $upperBound, ); } // Caret Range // // Allows changes that do not modify the left-most non-zero digit in the [major, minor, patch] tuple. // In other words, this allows patch and minor updates for versions 1.0.0 and above, patch updates for // versions 0.X >=0.1.0, and no updates for versions 0.0.X if (preg_match('{^\^' . $versionRegex . '($)}i', $constraint, $matches)) { // Work out which position in the version we are operating at if ('0' !== $matches[1] || '' === $matches[2] || null === $matches[2]) { $position = 1; } elseif ('0' !== $matches[2] || '' === $matches[3] || null === $matches[3]) { $position = 2; } else { $position = 3; } // Calculate the stability suffix $stabilitySuffix = ''; if (empty($matches[5]) && empty($matches[7]) && empty($matches[8])) { $stabilitySuffix .= '-dev'; } $lowVersion = $this->normalize(substr($constraint . $stabilitySuffix, 1)); $lowerBound = new Constraint('>=', $lowVersion); // For upper bound, we increment the position of one more significance, // but highPosition = 0 would be illegal $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); return array( $lowerBound, $upperBound, ); } // X Range // // Any of X, x, or * may be used to "stand in" for one of the numeric values in the [major, minor, patch] tuple. // A partial version range is treated as an X-Range, so the special character is in fact optional. if (preg_match('{^v?(\d++)(?:\.(\d++))?(?:\.(\d++))?(?:\.[xX*])++$}', $constraint, $matches)) { if (isset($matches[3]) && '' !== $matches[3] && null !== $matches[3]) { $position = 3; } elseif (isset($matches[2]) && '' !== $matches[2] && null !== $matches[2]) { $position = 2; } else { $position = 1; } $lowVersion = $this->manipulateVersionString($matches, $position) . '-dev'; $highVersion = $this->manipulateVersionString($matches, $position, 1) . '-dev'; if ($lowVersion === '0.0.0.0-dev') { return array(new Constraint('<', $highVersion)); } return array( new Constraint('>=', $lowVersion), new Constraint('<', $highVersion), ); } // Hyphen Range // // Specifies an inclusive set. If a partial version is provided as the first version in the inclusive range, // then the missing pieces are replaced with zeroes. If a partial version is provided as the second version in // the inclusive range, then all versions that start with the supplied parts of the tuple are accepted, but // nothing that would be greater than the provided tuple parts. if (preg_match('{^(?P' . $versionRegex . ') +- +(?P' . $versionRegex . ')($)}i', $constraint, $matches)) { // Calculate the stability suffix $lowStabilitySuffix = ''; if (empty($matches[6]) && empty($matches[8]) && empty($matches[9])) { $lowStabilitySuffix = '-dev'; } $lowVersion = $this->normalize($matches['from']); $lowerBound = new Constraint('>=', $lowVersion . $lowStabilitySuffix); $empty = function ($x) { return ($x === 0 || $x === '0') ? false : empty($x); }; if ((!$empty($matches[12]) && !$empty($matches[13])) || !empty($matches[15]) || !empty($matches[17]) || !empty($matches[18])) { $highVersion = $this->normalize($matches['to']); $upperBound = new Constraint('<=', $highVersion); } else { $highMatch = array('', $matches[11], $matches[12], $matches[13], $matches[14]); // validate to version $this->normalize($matches['to']); $highVersion = $this->manipulateVersionString($highMatch, $empty($matches[12]) ? 1 : 2, 1) . '-dev'; $upperBound = new Constraint('<', $highVersion); } return array( $lowerBound, $upperBound, ); } // Basic Comparators if (preg_match('{^(<>|!=|>=?|<=?|==?)?\s*(.*)}', $constraint, $matches)) { try { try { $version = $this->normalize($matches[2]); } catch (\UnexpectedValueException $e) { // recover from an invalid constraint like foobar-dev which should be dev-foobar // except if the constraint uses a known operator, in which case it must be a parse error if (substr($matches[2], -4) === '-dev' && preg_match('{^[0-9a-zA-Z-./]+$}', $matches[2])) { $version = $this->normalize('dev-'.substr($matches[2], 0, -4)); } else { throw $e; } } $op = $matches[1] ?: '='; if ($op !== '==' && $op !== '=' && !empty($stabilityModifier) && self::parseStability($version) === 'stable') { $version .= '-' . $stabilityModifier; } elseif ('<' === $op || '>=' === $op) { if (!preg_match('/-' . self::$modifierRegex . '$/', strtolower($matches[2]))) { if (strpos($matches[2], 'dev-') !== 0) { $version .= '-dev'; } } } return array(new Constraint($matches[1] ?: '=', $version)); } catch (\Exception $e) { } } $message = 'Could not parse version constraint ' . $constraint; if (isset($e)) { $message .= ': ' . $e->getMessage(); } throw new \UnexpectedValueException($message); } /** * Increment, decrement, or simply pad a version number. * * Support function for {@link parseConstraint()} * * @param array $matches Array with version parts in array indexes 1,2,3,4 * @param int $position 1,2,3,4 - which segment of the version to increment/decrement * @param int $increment * @param string $pad The string to pad version parts after $position * * @return string|null The new version */ private function manipulateVersionString($matches, $position, $increment = 0, $pad = '0') { for ($i = 4; $i > 0; --$i) { if ($i > $position) { $matches[$i] = $pad; } elseif ($i === $position && $increment) { $matches[$i] += $increment; // If $matches[$i] was 0, carry the decrement if ($matches[$i] < 0) { $matches[$i] = $pad; --$position; // Return null on a carry overflow if ($i === 1) { return null; } } } } return $matches[1] . '.' . $matches[2] . '.' . $matches[3] . '.' . $matches[4]; } /** * Expand shorthand stability string to long version. * * @param string $stability * * @return string */ private function expandStability($stability) { $stability = strtolower($stability); switch ($stability) { case 'a': return 'alpha'; case 'b': return 'beta'; case 'p': case 'pl': return 'patch'; case 'rc': return 'RC'; default: return $stability; } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\Constraint; class Semver { const SORT_ASC = 1; const SORT_DESC = -1; /** @var VersionParser */ private static $versionParser; /** * Determine if given version satisfies given constraints. * * @param string $version * @param string $constraints * * @return bool */ public static function satisfies($version, $constraints) { if (null === self::$versionParser) { self::$versionParser = new VersionParser(); } $versionParser = self::$versionParser; $provider = new Constraint('==', $versionParser->normalize($version)); $parsedConstraints = $versionParser->parseConstraints($constraints); return $parsedConstraints->matches($provider); } /** * Return all versions that satisfy given constraints. * * @param array $versions * @param string $constraints * * @return array */ public static function satisfiedBy(array $versions, $constraints) { $versions = array_filter($versions, function ($version) use ($constraints) { return Semver::satisfies($version, $constraints); }); return array_values($versions); } /** * Sort given array of versions. * * @param array $versions * * @return array */ public static function sort(array $versions) { return self::usort($versions, self::SORT_ASC); } /** * Sort given array of versions in reverse. * * @param array $versions * * @return array */ public static function rsort(array $versions) { return self::usort($versions, self::SORT_DESC); } /** * @param array $versions * @param int $direction * * @return array */ private static function usort(array $versions, $direction) { if (null === self::$versionParser) { self::$versionParser = new VersionParser(); } $versionParser = self::$versionParser; $normalized = array(); // Normalize outside of usort() scope for minor performance increase. // Creates an array of arrays: [[normalized, key], ...] foreach ($versions as $key => $version) { $normalizedVersion = $versionParser->normalize($version); $normalizedVersion = $versionParser->normalizeDefaultBranch($normalizedVersion); $normalized[] = array($normalizedVersion, $key); } usort($normalized, function (array $left, array $right) use ($direction) { if ($left[0] === $right[0]) { return 0; } if (Comparator::lessThan($left[0], $right[0])) { return -$direction; } return $direction; }); // Recreate input array, using the original indexes which are now in sorted order. $sorted = array(); foreach ($normalized as $item) { $sorted[] = $versions[$item[1]]; } return $sorted; } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\ConstraintInterface; /** * Helper class to evaluate constraint by compiling and reusing the code to evaluate */ class CompilingMatcher { private static $compiledCheckerCache = array(); private static $enabled; /** * @phpstan-var array */ private static $transOpInt = array( Constraint::OP_EQ => '==', Constraint::OP_LT => '<', Constraint::OP_LE => '<=', Constraint::OP_GT => '>', Constraint::OP_GE => '>=', Constraint::OP_NE => '!=', ); /** * Evaluates the expression: $constraint match $operator $version * * @param ConstraintInterface $constraint * @param int $operator * @phpstan-param Constraint::OP_* $operator * @param string $version * * @return mixed */ public static function match(ConstraintInterface $constraint, $operator, $version) { if (self::$enabled === null) { self::$enabled = !\in_array('eval', explode(',', ini_get('disable_functions')), true); } if (!self::$enabled) { return $constraint->matches(new Constraint(self::$transOpInt[$operator], $version)); } $cacheKey = $operator.$constraint; if (!isset(self::$compiledCheckerCache[$cacheKey])) { $code = $constraint->compile($operator); self::$compiledCheckerCache[$cacheKey] = $function = eval('return function($v, $b){return '.$code.';};'); } else { $function = self::$compiledCheckerCache[$cacheKey]; } return $function($version, strpos($version, 'dev-') === 0); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\Constraint; class Comparator { /** * Evaluates the expression: $version1 > $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function greaterThan($version1, $version2) { return self::compare($version1, '>', $version2); } /** * Evaluates the expression: $version1 >= $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function greaterThanOrEqualTo($version1, $version2) { return self::compare($version1, '>=', $version2); } /** * Evaluates the expression: $version1 < $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function lessThan($version1, $version2) { return self::compare($version1, '<', $version2); } /** * Evaluates the expression: $version1 <= $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function lessThanOrEqualTo($version1, $version2) { return self::compare($version1, '<=', $version2); } /** * Evaluates the expression: $version1 == $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function equalTo($version1, $version2) { return self::compare($version1, '==', $version2); } /** * Evaluates the expression: $version1 != $version2. * * @param string $version1 * @param string $version2 * * @return bool */ public static function notEqualTo($version1, $version2) { return self::compare($version1, '!=', $version2); } /** * Evaluates the expression: $version1 $operator $version2. * * @param string $version1 * @param string $operator * @param string $version2 * * @return bool */ public static function compare($version1, $operator, $version2) { $constraint = new Constraint($operator, $version2); return $constraint->matchSpecific(new Constraint('==', $version1), true); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\Constraint; class Interval { /** @var Constraint */ private $start; /** @var Constraint */ private $end; public function __construct(Constraint $start, Constraint $end) { $this->start = $start; $this->end = $end; } /** * @return Constraint */ public function getStart() { return $this->start; } /** * @return Constraint */ public function getEnd() { return $this->end; } /** * @return Constraint */ public static function fromZero() { static $zero; if (null === $zero) { $zero = new Constraint('>=', '0.0.0.0-dev'); } return $zero; } /** * @return Constraint */ public static function untilPositiveInfinity() { static $positiveInfinity; if (null === $positiveInfinity) { $positiveInfinity = new Constraint('<', PHP_INT_MAX.'.0.0.0'); } return $positiveInfinity; } /** * @return self */ public static function any() { return new self(self::fromZero(), self::untilPositiveInfinity()); } /** * @return array{'names': string[], 'exclude': bool} */ public static function anyDev() { // any == exclude nothing return array('names' => array(), 'exclude' => true); } /** * @return array{'names': string[], 'exclude': bool} */ public static function noDev() { // nothing == no names included return array('names' => array(), 'exclude' => false); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; /** * Defines a conjunctive or disjunctive set of constraints. */ class MultiConstraint implements ConstraintInterface { /** @var ConstraintInterface[] */ protected $constraints; /** @var string|null */ protected $prettyString; /** @var string|null */ protected $string; /** @var bool */ protected $conjunctive; /** @var Bound|null */ protected $lowerBound; /** @var Bound|null */ protected $upperBound; /** * @param ConstraintInterface[] $constraints A set of constraints * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive * * @throws \InvalidArgumentException If less than 2 constraints are passed */ public function __construct(array $constraints, $conjunctive = true) { if (\count($constraints) < 2) { throw new \InvalidArgumentException( 'Must provide at least two constraints for a MultiConstraint. Use '. 'the regular Constraint class for one constraint only or MatchAllConstraint for none. You may use '. 'MultiConstraint::create() which optimizes and handles those cases automatically.' ); } $this->constraints = $constraints; $this->conjunctive = $conjunctive; } /** * @return ConstraintInterface[] */ public function getConstraints() { return $this->constraints; } /** * @return bool */ public function isConjunctive() { return $this->conjunctive; } /** * @return bool */ public function isDisjunctive() { return !$this->conjunctive; } public function compile($otherOperator) { $parts = array(); foreach ($this->constraints as $constraint) { $code = $constraint->compile($otherOperator); if ($code === 'true') { if (!$this->conjunctive) { return 'true'; } } elseif ($code === 'false') { if ($this->conjunctive) { return 'false'; } } else { $parts[] = '('.$code.')'; } } if (!$parts) { return $this->conjunctive ? 'true' : 'false'; } return $this->conjunctive ? implode('&&', $parts) : implode('||', $parts); } /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { if (false === $this->conjunctive) { foreach ($this->constraints as $constraint) { if ($provider->matches($constraint)) { return true; } } return false; } foreach ($this->constraints as $constraint) { if (!$provider->matches($constraint)) { return false; } } return true; } /** * @param string|null $prettyString */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * @return string */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * @return string */ public function __toString() { if ($this->string !== null) { return $this->string; } $constraints = array(); foreach ($this->constraints as $constraint) { $constraints[] = (string) $constraint; } return $this->string = '[' . implode($this->conjunctive ? ' ' : ' || ', $constraints) . ']'; } /** * {@inheritDoc} */ public function getLowerBound() { $this->extractBounds(); return $this->lowerBound; } /** * {@inheritDoc} */ public function getUpperBound() { $this->extractBounds(); return $this->upperBound; } /** * Tries to optimize the constraints as much as possible, meaning * reducing/collapsing congruent constraints etc. * Does not necessarily return a MultiConstraint instance if * things can be reduced to a simple constraint * * @param ConstraintInterface[] $constraints A set of constraints * @param bool $conjunctive Whether the constraints should be treated as conjunctive or disjunctive * * @return ConstraintInterface */ public static function create(array $constraints, $conjunctive = true) { if (0 === \count($constraints)) { return new MatchAllConstraint(); } if (1 === \count($constraints)) { return $constraints[0]; } $optimized = self::optimizeConstraints($constraints, $conjunctive); if ($optimized !== null) { list($constraints, $conjunctive) = $optimized; if (\count($constraints) === 1) { return $constraints[0]; } } return new self($constraints, $conjunctive); } /** * @return array|null */ private static function optimizeConstraints(array $constraints, $conjunctive) { // parse the two OR groups and if they are contiguous we collapse // them into one constraint // [>= 1 < 2] || [>= 2 < 3] || [>= 3 < 4] => [>= 1 < 4] if (!$conjunctive) { $left = $constraints[0]; $mergedConstraints = array(); $optimized = false; for ($i = 1, $l = \count($constraints); $i < $l; $i++) { $right = $constraints[$i]; if ( $left instanceof self && $left->conjunctive && $right instanceof self && $right->conjunctive && \count($left->constraints) === 2 && \count($right->constraints) === 2 && ($left0 = (string) $left->constraints[0]) && $left0[0] === '>' && $left0[1] === '=' && ($left1 = (string) $left->constraints[1]) && $left1[0] === '<' && ($right0 = (string) $right->constraints[0]) && $right0[0] === '>' && $right0[1] === '=' && ($right1 = (string) $right->constraints[1]) && $right1[0] === '<' && substr($left1, 2) === substr($right0, 3) ) { $optimized = true; $left = new MultiConstraint( array( $left->constraints[0], $right->constraints[1], ), true); } else { $mergedConstraints[] = $left; $left = $right; } } if ($optimized) { $mergedConstraints[] = $left; return array($mergedConstraints, false); } } // TODO: Here's the place to put more optimizations return null; } private function extractBounds() { if (null !== $this->lowerBound) { return; } foreach ($this->constraints as $constraint) { if (null === $this->lowerBound && null === $this->upperBound) { $this->lowerBound = $constraint->getLowerBound(); $this->upperBound = $constraint->getUpperBound(); continue; } if ($constraint->getLowerBound()->compareTo($this->lowerBound, $this->isConjunctive() ? '>' : '<')) { $this->lowerBound = $constraint->getLowerBound(); } if ($constraint->getUpperBound()->compareTo($this->upperBound, $this->isConjunctive() ? '<' : '>')) { $this->upperBound = $constraint->getUpperBound(); } } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; /** * Defines the absence of a constraint. * * This constraint matches everything. */ class MatchAllConstraint implements ConstraintInterface { /** @var string|null */ protected $prettyString; /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { return true; } public function compile($operator) { return 'true'; } /** * @param string|null $prettyString */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * @return string */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * @return string */ public function __toString() { return '*'; } /** * {@inheritDoc} */ public function getUpperBound() { return Bound::positiveInfinity(); } /** * {@inheritDoc} */ public function getLowerBound() { return Bound::zero(); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; /** * Blackhole of constraints, nothing escapes it */ class MatchNoneConstraint implements ConstraintInterface { /** @var string|null */ protected $prettyString; /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { return false; } public function compile($operator) { return 'false'; } /** * @param string|null $prettyString */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * @return string */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return (string) $this; } /** * @return string */ public function __toString() { return '[]'; } /** * {@inheritDoc} */ public function getUpperBound() { return new Bound('0.0.0.0-dev', false); } /** * {@inheritDoc} */ public function getLowerBound() { return new Bound('0.0.0.0-dev', false); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; /** * DO NOT IMPLEMENT this interface. It is only meant for usage as a type hint * in libraries relying on composer/semver but creating your own constraint class * that implements this interface is not a supported use case and will cause the * composer/semver components to return unexpected results. */ interface ConstraintInterface { /** * Checks whether the given constraint intersects in any way with this constraint * * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider); /** * Provides a compiled version of the constraint for the given operator * The compiled version must be a PHP expression. * Executor of compile version must provide 2 variables: * - $v = the string version to compare with * - $b = whether or not the version is a non-comparable branch (starts with "dev-") * * @see Constraint::OP_* for the list of available operators. * @example return '!$b && version_compare($v, '1.0', '>')'; * * @param int $operator one Constraint::OP_* * * @return string */ public function compile($operator); /** * @return Bound */ public function getUpperBound(); /** * @return Bound */ public function getLowerBound(); /** * @return string */ public function getPrettyString(); /** * @param string|null $prettyString */ public function setPrettyString($prettyString); /** * @return string */ public function __toString(); } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; class Bound { /** * @var string */ private $version; /** * @var bool */ private $isInclusive; /** * @param string $version * @param bool $isInclusive */ public function __construct($version, $isInclusive) { $this->version = $version; $this->isInclusive = $isInclusive; } /** * @return string */ public function getVersion() { return $this->version; } /** * @return bool */ public function isInclusive() { return $this->isInclusive; } public function isZero() { return $this->getVersion() === '0.0.0.0-dev' && $this->isInclusive(); } public function isPositiveInfinity() { return $this->getVersion() === PHP_INT_MAX.'.0.0.0' && !$this->isInclusive(); } /** * Compares a bound to another with a given operator. * * @param Bound $other * @param string $operator * * @return bool */ public function compareTo(Bound $other, $operator) { if (!\in_array($operator, array('<', '>'), true)) { throw new \InvalidArgumentException('Does not support any other operator other than > or <.'); } // If they are the same it doesn't matter if ($this == $other) { return false; } $compareResult = version_compare($this->getVersion(), $other->getVersion()); // Not the same version means we don't need to check if the bounds are inclusive or not if (0 !== $compareResult) { return (('>' === $operator) ? 1 : -1) === $compareResult; } // Question we're answering here is "am I higher than $other?" return '>' === $operator ? $other->isInclusive() : !$other->isInclusive(); } public function __toString() { return sprintf( '%s [%s]', $this->getVersion(), $this->isInclusive() ? 'inclusive' : 'exclusive' ); } /** * @return self */ public static function zero() { return new Bound('0.0.0.0-dev', true); } /** * @return self */ public static function positiveInfinity() { return new Bound(PHP_INT_MAX.'.0.0.0', false); } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver\Constraint; /** * Defines a constraint. */ class Constraint implements ConstraintInterface { /* operator integer values */ const OP_EQ = 0; const OP_LT = 1; const OP_LE = 2; const OP_GT = 3; const OP_GE = 4; const OP_NE = 5; /** * Operator to integer translation table. * * @var array * @phpstan-var array */ private static $transOpStr = array( '=' => self::OP_EQ, '==' => self::OP_EQ, '<' => self::OP_LT, '<=' => self::OP_LE, '>' => self::OP_GT, '>=' => self::OP_GE, '<>' => self::OP_NE, '!=' => self::OP_NE, ); /** * Integer to operator translation table. * * @var array * @phpstan-var array */ private static $transOpInt = array( self::OP_EQ => '==', self::OP_LT => '<', self::OP_LE => '<=', self::OP_GT => '>', self::OP_GE => '>=', self::OP_NE => '!=', ); /** * @var int * @phpstan-var self::OP_* */ protected $operator; /** @var string */ protected $version; /** @var string|null */ protected $prettyString; /** @var Bound */ protected $lowerBound; /** @var Bound */ protected $upperBound; /** * Sets operator and version to compare with. * * @param string $operator * @param string $version * * @throws \InvalidArgumentException if invalid operator is given. */ public function __construct($operator, $version) { if (!isset(self::$transOpStr[$operator])) { throw new \InvalidArgumentException(sprintf( 'Invalid operator "%s" given, expected one of: %s', $operator, implode(', ', self::getSupportedOperators()) )); } $this->operator = self::$transOpStr[$operator]; $this->version = $version; } public function getVersion() { return $this->version; } public function getOperator() { return self::$transOpInt[$this->operator]; } /** * @param ConstraintInterface $provider * * @return bool */ public function matches(ConstraintInterface $provider) { if ($provider instanceof self) { return $this->matchSpecific($provider); } // turn matching around to find a match return $provider->matches($this); } /** * @param string|null $prettyString */ public function setPrettyString($prettyString) { $this->prettyString = $prettyString; } /** * @return string */ public function getPrettyString() { if ($this->prettyString) { return $this->prettyString; } return $this->__toString(); } /** * Get all supported comparison operators. * * @return array */ public static function getSupportedOperators() { return array_keys(self::$transOpStr); } /** * @param string $operator * @return int * * @phpstan-return self::OP_* */ public static function getOperatorConstant($operator) { return self::$transOpStr[$operator]; } /** * @param string $a * @param string $b * @param string $operator * @param bool $compareBranches * * @throws \InvalidArgumentException if invalid operator is given. * * @return bool */ public function versionCompare($a, $b, $operator, $compareBranches = false) { if (!isset(self::$transOpStr[$operator])) { throw new \InvalidArgumentException(sprintf( 'Invalid operator "%s" given, expected one of: %s', $operator, implode(', ', self::getSupportedOperators()) )); } $aIsBranch = strpos($a, 'dev-') === 0; $bIsBranch = strpos($b, 'dev-') === 0; if ($operator === '!=' && ($aIsBranch || $bIsBranch)) { return $a !== $b; } if ($aIsBranch && $bIsBranch) { return $operator === '==' && $a === $b; } // when branches are not comparable, we make sure dev branches never match anything if (!$compareBranches && ($aIsBranch || $bIsBranch)) { return false; } return \version_compare($a, $b, $operator); } public function compile($otherOperator) { if (strpos($this->version, 'dev-') === 0) { if (self::OP_EQ === $this->operator) { if (self::OP_EQ === $otherOperator) { return sprintf('$b && $v === %s', \var_export($this->version, true)); } if (self::OP_NE === $otherOperator) { return sprintf('!$b || $v !== %s', \var_export($this->version, true)); } return 'false'; } if (self::OP_NE === $this->operator) { if (self::OP_EQ === $otherOperator) { return sprintf('!$b || $v !== %s', \var_export($this->version, true)); } if (self::OP_NE === $otherOperator) { return 'true'; } return '!$b'; } return 'false'; } if (self::OP_EQ === $this->operator) { if (self::OP_EQ === $otherOperator) { return sprintf('\version_compare($v, %s, \'==\')', \var_export($this->version, true)); } if (self::OP_NE === $otherOperator) { return sprintf('$b || \version_compare($v, %s, \'!=\')', \var_export($this->version, true)); } return sprintf('!$b && \version_compare(%s, $v, \'%s\')', \var_export($this->version, true), self::$transOpInt[$otherOperator]); } if (self::OP_NE === $this->operator) { if (self::OP_EQ === $otherOperator) { return sprintf('$b || (!$b && \version_compare($v, %s, \'!=\'))', \var_export($this->version, true)); } if (self::OP_NE === $otherOperator) { return 'true'; } return '!$b'; } if (self::OP_LT === $this->operator || self::OP_LE === $this->operator) { if (self::OP_LT === $otherOperator || self::OP_LE === $otherOperator) { return '!$b'; } } elseif (self::OP_GT === $this->operator || self::OP_GE === $this->operator) { if (self::OP_GT === $otherOperator || self::OP_GE === $otherOperator) { return '!$b'; } } if (self::OP_NE === $otherOperator) { return 'true'; } $codeComparison = sprintf('\version_compare($v, %s, \'%s\')', \var_export($this->version, true), self::$transOpInt[$this->operator]); if ($this->operator === self::OP_LE) { if ($otherOperator === self::OP_GT) { return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; } } elseif ($this->operator === self::OP_GE) { if ($otherOperator === self::OP_LT) { return sprintf('!$b && \version_compare($v, %s, \'!=\') && ', \var_export($this->version, true)) . $codeComparison; } } return sprintf('!$b && %s', $codeComparison); } /** * @param Constraint $provider * @param bool $compareBranches * * @return bool */ public function matchSpecific(Constraint $provider, $compareBranches = false) { $noEqualOp = str_replace('=', '', self::$transOpInt[$this->operator]); $providerNoEqualOp = str_replace('=', '', self::$transOpInt[$provider->operator]); $isEqualOp = self::OP_EQ === $this->operator; $isNonEqualOp = self::OP_NE === $this->operator; $isProviderEqualOp = self::OP_EQ === $provider->operator; $isProviderNonEqualOp = self::OP_NE === $provider->operator; // '!=' operator is match when other operator is not '==' operator or version is not match // these kinds of comparisons always have a solution if ($isNonEqualOp || $isProviderNonEqualOp) { if ($isNonEqualOp && !$isProviderNonEqualOp && !$isProviderEqualOp && strpos($provider->version, 'dev-') === 0) { return false; } if ($isProviderNonEqualOp && !$isNonEqualOp && !$isEqualOp && strpos($this->version, 'dev-') === 0) { return false; } if (!$isEqualOp && !$isProviderEqualOp) { return true; } return $this->versionCompare($provider->version, $this->version, '!=', $compareBranches); } // an example for the condition is <= 2.0 & < 1.0 // these kinds of comparisons always have a solution if ($this->operator !== self::OP_EQ && $noEqualOp === $providerNoEqualOp) { return !(strpos($this->version, 'dev-') === 0 || strpos($provider->version, 'dev-') === 0); } $version1 = $isEqualOp ? $this->version : $provider->version; $version2 = $isEqualOp ? $provider->version : $this->version; $operator = $isEqualOp ? $provider->operator : $this->operator; if ($this->versionCompare($version1, $version2, self::$transOpInt[$operator], $compareBranches)) { // special case, e.g. require >= 1.0 and provide < 1.0 // 1.0 >= 1.0 but 1.0 is outside of the provided interval return !(self::$transOpInt[$provider->operator] === $providerNoEqualOp && self::$transOpInt[$this->operator] !== $noEqualOp && \version_compare($provider->version, $this->version, '==')); } return false; } /** * @return string */ public function __toString() { return self::$transOpInt[$this->operator] . ' ' . $this->version; } /** * {@inheritDoc} */ public function getLowerBound() { $this->extractBounds(); return $this->lowerBound; } /** * {@inheritDoc} */ public function getUpperBound() { $this->extractBounds(); return $this->upperBound; } private function extractBounds() { if (null !== $this->lowerBound) { return; } // Branches if (strpos($this->version, 'dev-') === 0) { $this->lowerBound = Bound::zero(); $this->upperBound = Bound::positiveInfinity(); return; } switch ($this->operator) { case self::OP_EQ: $this->lowerBound = new Bound($this->version, true); $this->upperBound = new Bound($this->version, true); break; case self::OP_LT: $this->lowerBound = Bound::zero(); $this->upperBound = new Bound($this->version, false); break; case self::OP_LE: $this->lowerBound = Bound::zero(); $this->upperBound = new Bound($this->version, true); break; case self::OP_GT: $this->lowerBound = new Bound($this->version, false); $this->upperBound = Bound::positiveInfinity(); break; case self::OP_GE: $this->lowerBound = new Bound($this->version, true); $this->upperBound = Bound::positiveInfinity(); break; case self::OP_NE: $this->lowerBound = Bound::zero(); $this->upperBound = Bound::positiveInfinity(); break; } } } * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\Semver; use Composer\Semver\Constraint\Constraint; use Composer\Semver\Constraint\ConstraintInterface; use Composer\Semver\Constraint\MatchAllConstraint; use Composer\Semver\Constraint\MatchNoneConstraint; use Composer\Semver\Constraint\MultiConstraint; /** * Helper class generating intervals from constraints * * This contains utilities for: * * - compacting an existing constraint which can be used to combine several into one * by creating a MultiConstraint out of the many constraints you have. * * - checking whether one subset is a subset of another. * * Note: You should call clear to free memoization memory usage when you are done using this class */ class Intervals { /** * @phpstan-var array */ private static $intervalsCache = array(); /** * @phpstan-var array */ private static $opSortOrder = array( '>=' => -3, '<' => -2, '>' => 2, '<=' => 3, ); /** * Clears the memoization cache once you are done * * @return void */ public static function clear() { self::$intervalsCache = array(); } /** * Checks whether $candidate is a subset of $constraint * * @return bool */ public static function isSubsetOf(ConstraintInterface $candidate, ConstraintInterface $constraint) { if ($constraint instanceof MatchAllConstraint) { return true; } if ($candidate instanceof MatchNoneConstraint || $constraint instanceof MatchNoneConstraint) { return false; } $intersectionIntervals = self::get(new MultiConstraint(array($candidate, $constraint), true)); $candidateIntervals = self::get($candidate); if (\count($intersectionIntervals['numeric']) !== \count($candidateIntervals['numeric'])) { return false; } foreach ($intersectionIntervals['numeric'] as $index => $interval) { if (!isset($candidateIntervals['numeric'][$index])) { return false; } if ((string) $candidateIntervals['numeric'][$index]->getStart() !== (string) $interval->getStart()) { return false; } if ((string) $candidateIntervals['numeric'][$index]->getEnd() !== (string) $interval->getEnd()) { return false; } } if ($intersectionIntervals['branches']['exclude'] !== $candidateIntervals['branches']['exclude']) { return false; } if (\count($intersectionIntervals['branches']['names']) !== \count($candidateIntervals['branches']['names'])) { return false; } foreach ($intersectionIntervals['branches']['names'] as $index => $name) { if ($name !== $candidateIntervals['branches']['names'][$index]) { return false; } } return true; } /** * Checks whether $a and $b have any intersection, equivalent to $a->matches($b) * * @return bool */ public static function haveIntersections(ConstraintInterface $a, ConstraintInterface $b) { if ($a instanceof MatchAllConstraint || $b instanceof MatchAllConstraint) { return true; } if ($a instanceof MatchNoneConstraint || $b instanceof MatchNoneConstraint) { return false; } $intersectionIntervals = self::generateIntervals(new MultiConstraint(array($a, $b), true), true); return \count($intersectionIntervals['numeric']) > 0 || $intersectionIntervals['branches']['exclude'] || \count($intersectionIntervals['branches']['names']) > 0; } /** * Attempts to optimize a MultiConstraint * * When merging MultiConstraints together they can get very large, this will * compact it by looking at the real intervals covered by all the constraints * and then creates a new constraint containing only the smallest amount of rules * to match the same intervals. * * @return ConstraintInterface */ public static function compactConstraint(ConstraintInterface $constraint) { if (!$constraint instanceof MultiConstraint) { return $constraint; } $intervals = self::generateIntervals($constraint); $constraints = array(); $hasNumericMatchAll = false; if (\count($intervals['numeric']) === 1 && (string) $intervals['numeric'][0]->getStart() === (string) Interval::fromZero() && (string) $intervals['numeric'][0]->getEnd() === (string) Interval::untilPositiveInfinity()) { $constraints[] = $intervals['numeric'][0]->getStart(); $hasNumericMatchAll = true; } else { $unEqualConstraints = array(); for ($i = 0, $count = \count($intervals['numeric']); $i < $count; $i++) { $interval = $intervals['numeric'][$i]; // if current interval ends with < N and next interval begins with > N we can swap this out for != N // but this needs to happen as a conjunctive expression together with the start of the current interval // and end of next interval, so [>=M, N, [>=M, !=N, getEnd()->getOperator() === '<' && $i+1 < $count) { $nextInterval = $intervals['numeric'][$i+1]; if ($interval->getEnd()->getVersion() === $nextInterval->getStart()->getVersion() && $nextInterval->getStart()->getOperator() === '>') { // only add a start if we didn't already do so, can be skipped if we're looking at second // interval in [>=M, N, P, =M, !=N] already and we only want to add !=P right now if (\count($unEqualConstraints) === 0 && (string) $interval->getStart() !== (string) Interval::fromZero()) { $unEqualConstraints[] = $interval->getStart(); } $unEqualConstraints[] = new Constraint('!=', $interval->getEnd()->getVersion()); continue; } } if (\count($unEqualConstraints) > 0) { // this is where the end of the following interval of a != constraint is added as explained above if ((string) $interval->getEnd() !== (string) Interval::untilPositiveInfinity()) { $unEqualConstraints[] = $interval->getEnd(); } // count is 1 if entire constraint is just one != expression if (\count($unEqualConstraints) > 1) { $constraints[] = new MultiConstraint($unEqualConstraints, true); } else { $constraints[] = $unEqualConstraints[0]; } $unEqualConstraints = array(); continue; } // convert back >= x - <= x intervals to == x if ($interval->getStart()->getVersion() === $interval->getEnd()->getVersion() && $interval->getStart()->getOperator() === '>=' && $interval->getEnd()->getOperator() === '<=') { $constraints[] = new Constraint('==', $interval->getStart()->getVersion()); continue; } if ((string) $interval->getStart() === (string) Interval::fromZero()) { $constraints[] = $interval->getEnd(); } elseif ((string) $interval->getEnd() === (string) Interval::untilPositiveInfinity()) { $constraints[] = $interval->getStart(); } else { $constraints[] = new MultiConstraint(array($interval->getStart(), $interval->getEnd()), true); } } } $devConstraints = array(); if (0 === \count($intervals['branches']['names'])) { if ($intervals['branches']['exclude']) { if ($hasNumericMatchAll) { return new MatchAllConstraint; } // otherwise constraint should contain a != operator and already cover this } } else { foreach ($intervals['branches']['names'] as $branchName) { if ($intervals['branches']['exclude']) { $devConstraints[] = new Constraint('!=', $branchName); } else { $devConstraints[] = new Constraint('==', $branchName); } } // excluded branches, e.g. != dev-foo are conjunctive with the interval, so // > 2.0 != dev-foo must return a conjunctive constraint if ($intervals['branches']['exclude']) { if (\count($constraints) > 1) { return new MultiConstraint(array_merge( array(new MultiConstraint($constraints, false)), $devConstraints ), true); } if (\count($constraints) === 1 && (string)$constraints[0] === (string)Interval::fromZero()) { if (\count($devConstraints) > 1) { return new MultiConstraint($devConstraints, true); } return $devConstraints[0]; } return new MultiConstraint(array_merge($constraints, $devConstraints), true); } // otherwise devConstraints contains a list of == operators for branches which are disjunctive with the // rest of the constraint $constraints = array_merge($constraints, $devConstraints); } if (\count($constraints) > 1) { return new MultiConstraint($constraints, false); } if (\count($constraints) === 1) { return $constraints[0]; } return new MatchNoneConstraint; } /** * Creates an array of numeric intervals and branch constraints representing a given constraint * * if the returned numeric array is empty it means the constraint matches nothing in the numeric range (0 - +inf) * if the returned branches array is empty it means no dev-* versions are matched * if a constraint matches all possible dev-* versions, branches will contain Interval::anyDev() * * @return array * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} */ public static function get(ConstraintInterface $constraint) { $key = (string) $constraint; if (!isset(self::$intervalsCache[$key])) { self::$intervalsCache[$key] = self::generateIntervals($constraint); } return self::$intervalsCache[$key]; } /** * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}} */ private static function generateIntervals(ConstraintInterface $constraint, $stopOnFirstValidInterval = false) { if ($constraint instanceof MatchAllConstraint) { return array('numeric' => array(new Interval(Interval::fromZero(), Interval::untilPositiveInfinity())), 'branches' => Interval::anyDev()); } if ($constraint instanceof MatchNoneConstraint) { return array('numeric' => array(), 'branches' => array('names' => array(), 'exclude' => false)); } if ($constraint instanceof Constraint) { return self::generateSingleConstraintIntervals($constraint); } if (!$constraint instanceof MultiConstraint) { throw new \UnexpectedValueException('The constraint passed in should be an MatchAllConstraint, Constraint or MultiConstraint instance, got '.\get_class($constraint).'.'); } $constraints = $constraint->getConstraints(); $numericGroups = array(); $constraintBranches = array(); foreach ($constraints as $c) { $res = self::get($c); $numericGroups[] = $res['numeric']; $constraintBranches[] = $res['branches']; } if ($constraint->isDisjunctive()) { $branches = Interval::noDev(); foreach ($constraintBranches as $b) { if ($b['exclude']) { if ($branches['exclude']) { // disjunctive constraint, so only exclude what's excluded in all constraints // !=a,!=b || !=b,!=c => !=b $branches['names'] = array_intersect($branches['names'], $b['names']); } else { // disjunctive constraint so exclude all names which are not explicitly included in the alternative // (==b || ==c) || !=a,!=b => !=a $branches['exclude'] = true; $branches['names'] = array_diff($b['names'], $branches['names']); } } else { if ($branches['exclude']) { // disjunctive constraint so exclude all names which are not explicitly included in the alternative // !=a,!=b || (==b || ==c) => !=a $branches['names'] = array_diff($branches['names'], $b['names']); } else { // disjunctive constraint, so just add all the other branches // (==a || ==b) || ==c => ==a || ==b || ==c $branches['names'] = array_merge($branches['names'], $b['names']); } } } } else { $branches = Interval::anyDev(); foreach ($constraintBranches as $b) { if ($b['exclude']) { if ($branches['exclude']) { // conjunctive, so just add all branch names to be excluded // !=a && !=b => !=a,!=b $branches['names'] = array_merge($branches['names'], $b['names']); } else { // conjunctive, so only keep included names which are not excluded // (==a||==c) && !=a,!=b => ==c $branches['names'] = array_diff($branches['names'], $b['names']); } } else { if ($branches['exclude']) { // conjunctive, so only keep included names which are not excluded // !=a,!=b && (==a||==c) => ==c $branches['names'] = array_diff($b['names'], $branches['names']); $branches['exclude'] = false; } else { // conjunctive, so only keep names that are included in both // (==a||==b) && (==a||==c) => ==a $branches['names'] = array_intersect($branches['names'], $b['names']); } } } } $branches['names'] = array_unique($branches['names']); if (\count($numericGroups) === 1) { return array('numeric' => $numericGroups[0], 'branches' => $branches); } $borders = array(); foreach ($numericGroups as $group) { foreach ($group as $interval) { $borders[] = array('version' => $interval->getStart()->getVersion(), 'operator' => $interval->getStart()->getOperator(), 'side' => 'start'); $borders[] = array('version' => $interval->getEnd()->getVersion(), 'operator' => $interval->getEnd()->getOperator(), 'side' => 'end'); } } $opSortOrder = self::$opSortOrder; usort($borders, function ($a, $b) use ($opSortOrder) { $order = version_compare($a['version'], $b['version']); if ($order === 0) { return $opSortOrder[$a['operator']] - $opSortOrder[$b['operator']]; } return $order; }); $activeIntervals = 0; $intervals = array(); $index = 0; $activationThreshold = $constraint->isConjunctive() ? \count($numericGroups) : 1; $active = false; $start = null; foreach ($borders as $border) { if ($border['side'] === 'start') { $activeIntervals++; } else { $activeIntervals--; } if (!$active && $activeIntervals >= $activationThreshold) { $start = new Constraint($border['operator'], $border['version']); $active = true; } if ($active && $activeIntervals < $activationThreshold) { $active = false; // filter out invalid intervals like > x - <= x, or >= x - < x if ( version_compare($start->getVersion(), $border['version'], '=') && ( ($start->getOperator() === '>' && $border['operator'] === '<=') || ($start->getOperator() === '>=' && $border['operator'] === '<') ) ) { unset($intervals[$index]); } else { $intervals[$index] = new Interval($start, new Constraint($border['operator'], $border['version'])); $index++; if ($stopOnFirstValidInterval) { break; } } $start = null; } } return array('numeric' => $intervals, 'branches' => $branches); } /** * @phpstan-return array{'numeric': Interval[], 'branches': array{'names': string[], 'exclude': bool}}} */ private static function generateSingleConstraintIntervals(Constraint $constraint) { $op = $constraint->getOperator(); // handle branch constraints first if (strpos($constraint->getVersion(), 'dev-') === 0) { $intervals = array(); $branches = array('names' => array(), 'exclude' => false); // != dev-foo means any numeric version may match, we treat >/< like != they are not really defined for branches if ($op === '!=') { $intervals[] = new Interval(Interval::fromZero(), Interval::untilPositiveInfinity()); $branches = array('names' => array($constraint->getVersion()), 'exclude' => true); } elseif ($op === '==') { $branches['names'][] = $constraint->getVersion(); } return array( 'numeric' => $intervals, 'branches' => $branches, ); } if ($op[0] === '>') { // > & >= return array('numeric' => array(new Interval($constraint, Interval::untilPositiveInfinity())), 'branches' => Interval::noDev()); } if ($op[0] === '<') { // < & <= return array('numeric' => array(new Interval(Interval::fromZero(), $constraint)), 'branches' => Interval::noDev()); } if ($op === '!=') { // convert !=x to intervals of 0 - x - +inf + dev* return array('numeric' => array( new Interval(Interval::fromZero(), new Constraint('<', $constraint->getVersion())), new Interval(new Constraint('>', $constraint->getVersion()), Interval::untilPositiveInfinity()), ), 'branches' => Interval::anyDev()); } // convert ==x to an interval of >=x - <=x return array('numeric' => array( new Interval(new Constraint('>=', $constraint->getVersion()), new Constraint('<=', $constraint->getVersion())), ), 'branches' => Interval::noDev()); } } = 50600 && !defined('HHVM_VERSION') && (!function_exists('zend_loader_file_encoded') || !zend_loader_file_encoded()); if ($useStaticLoader) { require __DIR__ . '/autoload_static.php'; call_user_func(\Composer\Autoload\ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::getInitializer($loader)); } else { $map = require __DIR__ . '/autoload_namespaces.php'; foreach ($map as $namespace => $path) { $loader->set($namespace, $path); } $map = require __DIR__ . '/autoload_psr4.php'; foreach ($map as $namespace => $path) { $loader->setPsr4($namespace, $path); } $classMap = require __DIR__ . '/autoload_classmap.php'; if ($classMap) { $loader->addClassMap($classMap); } } $loader->register(true); if ($useStaticLoader) { $includeFiles = Composer\Autoload\ComposerStaticInitbf109e091d29166e0494611e22e7dbd8::$files; } else { $includeFiles = require __DIR__ . '/autoload_files.php'; } foreach ($includeFiles as $fileIdentifier => $file) { composerRequirebf109e091d29166e0494611e22e7dbd8($fileIdentifier, $file); } return $loader; } } function composerRequirebf109e091d29166e0494611e22e7dbd8($fileIdentifier, $file) { if (empty($GLOBALS['__composer_autoload_files'][$fileIdentifier])) { require $file; $GLOBALS['__composer_autoload_files'][$fileIdentifier] = true; } } $vendorDir . '/wp-cli/php-cli-tools/lib/cli/cli.php', '3937806105cc8e221b8fa8db5b70d2f2' => $vendorDir . '/wp-cli/mustangostang-spyc/includes/functions.php', '8a0ad02df6a5087f2c380f8fd52db273' => $vendorDir . '/wp-cli/cache-command/cache-command.php', 'f3f0199a3ecd9f501d0a3b361bd2f61c' => $vendorDir . '/wp-cli/entity-command/entity-command.php', '3f201033d5aceb2293314273be88f7c6' => $vendorDir . '/wp-cli/extension-command/extension-command.php', 'c65f753375faee349b7adc48c2ee7cc2' => $vendorDir . '/wp-cli/db-command/db-command.php', '0e6d7bf4a5811bfa5cf40c5ccd6fae6a' => $vendorDir . '/symfony/polyfill-mbstring/bootstrap.php', '320cde22f66dd4f5d3fd621d3e88b98f' => $vendorDir . '/symfony/polyfill-ctype/bootstrap.php', 'ad155f8f1cf0d418fe49e248db8c661b' => $vendorDir . '/react/promise/src/functions_include.php', 'd979c11fe80ba96ae3037b43429fe546' => $vendorDir . '/wp-cli/scaffold-command/scaffold-command.php', '5c6ec5cff8f9d625772c8ed147f6b894' => $vendorDir . '/wp-cli/export-command/export-command.php', 'b66d29757fcb2fb7a9608d068e3716b0' => $vendorDir . '/wp-cli/checksum-command/checksum-command.php', 'ac949ce40a981819ba132473518a9a31' => $vendorDir . '/wp-cli/wp-config-transformer/src/WPConfigTransformer.php', '30cbb6e4122dc988e494c6b9c0438233' => $vendorDir . '/wp-cli/import-command/import-command.php', '5e099d3cac677dd2bec1003ea7707745' => $vendorDir . '/wp-cli/media-command/media-command.php', 'ba366f96f4fddbdef61ad7a862b44f61' => $vendorDir . '/wp-cli/package-command/package-command.php', '5deaf6ce9c8bbdfb65104c7e938d5875' => $vendorDir . '/wp-cli/config-command/config-command.php', '68c39b88215b6cf7a0da164166670ef9' => $vendorDir . '/wp-cli/core-command/core-command.php', '7654e00bf0e632580764400bd8293a9c' => $vendorDir . '/wp-cli/cron-command/cron-command.php', '021d3a13471556f0b57038d679f7f8ea' => $vendorDir . '/wp-cli/embed-command/embed-command.php', 'f958dca3f412fd7975da1700912a9321' => $vendorDir . '/wp-cli/eval-command/eval-command.php', 'ffb465a494c3101218c4417180c2c9a2' => $vendorDir . '/wp-cli/i18n-command/i18n-command.php', 'ace0d205db7f4135ec32132a0076d555' => $vendorDir . '/wp-cli/language-command/language-command.php', '1c88c1eff05217a8cac80c64c9ac2080' => $vendorDir . '/wp-cli/maintenance-mode-command/maintenance-mode-command.php', 'f399c1c8d0c787d5c94c09884cdd9762' => $vendorDir . '/wp-cli/rewrite-command/rewrite-command.php', '080fadd667195d055c5a23386f270261' => $vendorDir . '/wp-cli/role-command/role-command.php', '8ecb13f8bbc22b1b34d12b14ec01077a' => $vendorDir . '/wp-cli/search-replace-command/search-replace-command.php', '9f04dd0aa5d67ec75a75c88c345a079e' => $vendorDir . '/wp-cli/server-command/server-command.php', '129d58fa8151374aceb8571bcaa97504' => $vendorDir . '/wp-cli/shell-command/shell-command.php', '8519779bbb65eeb842af2f629ce7b6f8' => $vendorDir . '/wp-cli/super-admin-command/super-admin-command.php', '1f05372afcc7d0c51a305cef1d56dd01' => $vendorDir . '/wp-cli/widget-command/widget-command.php', ); * * For the full copyright and license information, please view * the LICENSE file that was distributed with this source code. */ namespace Composer\CaBundle; use Psr\Log\LoggerInterface; use Symfony\Component\Process\PhpProcess; /** * @author Chris Smith * @author Jordi Boggiano */ class CaBundle { /** @var string|null */ private static $caPath; /** @var array */ private static $caFileValidity = array(); /** @var bool|null */ private static $useOpensslParse; /** * Returns the system CA bundle path, or a path to the bundled one * * This method was adapted from Sslurp. * https://github.com/EvanDotPro/Sslurp * * (c) Evan Coury * * For the full copyright and license information, please see below: * * Copyright (c) 2013, Evan Coury * All rights reserved. * * Redistribution and use in source and binary forms, with or without modification, * are permitted provided that the following conditions are met: * * * Redistributions of source code must retain the above copyright notice, * this list of conditions and the following disclaimer. * * * Redistributions in binary form must reproduce the above copyright notice, * this list of conditions and the following disclaimer in the documentation * and/or other materials provided with the distribution. * * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * * @param LoggerInterface $logger optional logger for information about which CA files were loaded * @return string path to a CA bundle file or directory */ public static function getSystemCaRootBundlePath(LoggerInterface $logger = null) { if (self::$caPath !== null) { return self::$caPath; } $caBundlePaths = array(); // If SSL_CERT_FILE env variable points to a valid certificate/bundle, use that. // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. $caBundlePaths[] = self::getEnvVariable('SSL_CERT_FILE'); // If SSL_CERT_DIR env variable points to a valid certificate/bundle, use that. // This mimics how OpenSSL uses the SSL_CERT_FILE env variable. $caBundlePaths[] = self::getEnvVariable('SSL_CERT_DIR'); $caBundlePaths[] = ini_get('openssl.cafile'); $caBundlePaths[] = ini_get('openssl.capath'); $otherLocations = array( '/etc/pki/tls/certs/ca-bundle.crt', // Fedora, RHEL, CentOS (ca-certificates package) '/etc/ssl/certs/ca-certificates.crt', // Debian, Ubuntu, Gentoo, Arch Linux (ca-certificates package) '/etc/ssl/ca-bundle.pem', // SUSE, openSUSE (ca-certificates package) '/usr/local/share/certs/ca-root-nss.crt', // FreeBSD (ca_root_nss_package) '/usr/ssl/certs/ca-bundle.crt', // Cygwin '/opt/local/share/curl/curl-ca-bundle.crt', // OS X macports, curl-ca-bundle package '/usr/local/share/curl/curl-ca-bundle.crt', // Default cURL CA bunde path (without --with-ca-bundle option) '/usr/share/ssl/certs/ca-bundle.crt', // Really old RedHat? '/etc/ssl/cert.pem', // OpenBSD '/usr/local/etc/ssl/cert.pem', // FreeBSD 10.x '/usr/local/etc/openssl/cert.pem', // OS X homebrew, openssl package '/usr/local/etc/openssl@1.1/cert.pem', // OS X homebrew, openssl@1.1 package ); foreach($otherLocations as $location) { $otherLocations[] = dirname($location); } $caBundlePaths = array_merge($caBundlePaths, $otherLocations); foreach ($caBundlePaths as $caBundle) { if ($caBundle && self::caFileUsable($caBundle, $logger)) { return self::$caPath = $caBundle; } if ($caBundle && self::caDirUsable($caBundle)) { return self::$caPath = $caBundle; } } return self::$caPath = static::getBundledCaBundlePath(); // Bundled CA file, last resort } /** * Returns the path to the bundled CA file * * In case you don't want to trust the user or the system, you can use this directly * * @return string path to a CA bundle file */ public static function getBundledCaBundlePath() { $caBundleFile = __DIR__.'/../res/cacert.pem'; // cURL does not understand 'phar://' paths // see https://github.com/composer/ca-bundle/issues/10 if (0 === strpos($caBundleFile, 'phar://')) { $tempCaBundleFile = tempnam(sys_get_temp_dir(), 'openssl-ca-bundle-'); if (false === $tempCaBundleFile) { throw new \RuntimeException('Could not create a temporary file to store the bundled CA file'); } file_put_contents( $tempCaBundleFile, file_get_contents($caBundleFile) ); register_shutdown_function(function() use ($tempCaBundleFile) { @unlink($tempCaBundleFile); }); $caBundleFile = $tempCaBundleFile; } return $caBundleFile; } /** * Validates a CA file using opensl_x509_parse only if it is safe to use * * @param string $filename * @param LoggerInterface $logger optional logger for information about which CA files were loaded * * @return bool */ public static function validateCaFile($filename, LoggerInterface $logger = null) { static $warned = false; if (isset(self::$caFileValidity[$filename])) { return self::$caFileValidity[$filename]; } $contents = file_get_contents($filename); // assume the CA is valid if php is vulnerable to // https://www.sektioneins.de/advisories/advisory-012013-php-openssl_x509_parse-memory-corruption-vulnerability.html if (!static::isOpensslParseSafe()) { if (!$warned && $logger) { $logger->warning(sprintf( 'Your version of PHP, %s, is affected by CVE-2013-6420 and cannot safely perform certificate validation, we strongly suggest you upgrade.', PHP_VERSION )); $warned = true; } $isValid = !empty($contents); } elseif (is_string($contents) && strlen($contents) > 0) { $contents = preg_replace("/^(\\-+(?:BEGIN|END))\\s+TRUSTED\\s+(CERTIFICATE\\-+)\$/m", '$1 $2', $contents); if (null === $contents) { // regex extraction failed $isValid = false; } else { $isValid = (bool) openssl_x509_parse($contents); } } else { $isValid = false; } if ($logger) { $logger->debug('Checked CA file '.realpath($filename).': '.($isValid ? 'valid' : 'invalid')); } return self::$caFileValidity[$filename] = $isValid; } /** * Test if it is safe to use the PHP function openssl_x509_parse(). * * This checks if OpenSSL extensions is vulnerable to remote code execution * via the exploit documented as CVE-2013-6420. * * @return bool */ public static function isOpensslParseSafe() { if (null !== self::$useOpensslParse) { return self::$useOpensslParse; } if (PHP_VERSION_ID >= 50600) { return self::$useOpensslParse = true; } // Vulnerable: // PHP 5.3.0 - PHP 5.3.27 // PHP 5.4.0 - PHP 5.4.22 // PHP 5.5.0 - PHP 5.5.6 if ( (PHP_VERSION_ID < 50400 && PHP_VERSION_ID >= 50328) || (PHP_VERSION_ID < 50500 && PHP_VERSION_ID >= 50423) || PHP_VERSION_ID >= 50507 ) { // This version of PHP has the fix for CVE-2013-6420 applied. return self::$useOpensslParse = true; } if (defined('PHP_WINDOWS_VERSION_BUILD')) { // Windows is probably insecure in this case. return self::$useOpensslParse = false; } $compareDistroVersionPrefix = function ($prefix, $fixedVersion) { $regex = '{^'.preg_quote($prefix).'([0-9]+)$}'; if (preg_match($regex, PHP_VERSION, $m)) { return ((int) $m[1]) >= $fixedVersion; } return false; }; // Hard coded list of PHP distributions with the fix backported. if ( $compareDistroVersionPrefix('5.3.3-7+squeeze', 18) // Debian 6 (Squeeze) || $compareDistroVersionPrefix('5.4.4-14+deb7u', 7) // Debian 7 (Wheezy) || $compareDistroVersionPrefix('5.3.10-1ubuntu3.', 9) // Ubuntu 12.04 (Precise) ) { return self::$useOpensslParse = true; } // Symfony Process component is missing so we assume it is unsafe at this point if (!class_exists('Symfony\Component\Process\PhpProcess')) { return self::$useOpensslParse = false; } // This is where things get crazy, because distros backport security // fixes the chances are on NIX systems the fix has been applied but // it's not possible to verify that from the PHP version. // // To verify exec a new PHP process and run the issue testcase with // known safe input that replicates the bug. // Based on testcase in https://github.com/php/php-src/commit/c1224573c773b6845e83505f717fbf820fc18415 // changes in https://github.com/php/php-src/commit/76a7fd893b7d6101300cc656058704a73254d593 $cert = 'LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUVwRENDQTR5Z0F3SUJBZ0lKQUp6dThyNnU2ZUJjTUEwR0NTcUdTSWIzRFFFQkJRVUFNSUhETVFzd0NRWUQKVlFRR0V3SkVSVEVjTUJvR0ExVUVDQXdUVG05eVpISm9aV2x1TFZkbGMzUm1ZV3hsYmpFUU1BNEdBMVVFQnd3SApTOE9Ed3Jac2JqRVVNQklHQTFVRUNnd0xVMlZyZEdsdmJrVnBibk14SHpBZEJnTlZCQXNNRmsxaGJHbGphVzkxCmN5QkRaWEowSUZObFkzUnBiMjR4SVRBZkJnTlZCQU1NR0cxaGJHbGphVzkxY3k1elpXdDBhVzl1WldsdWN5NWsKWlRFcU1DZ0dDU3FHU0liM0RRRUpBUlliYzNSbFptRnVMbVZ6YzJWeVFITmxhM1JwYjI1bGFXNXpMbVJsTUhVWQpaREU1TnpBd01UQXhNREF3TURBd1dnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBCkFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUEKQUFBQUFBQVhEVEUwTVRFeU9ERXhNemt6TlZvd2djTXhDekFKQmdOVkJBWVRBa1JGTVJ3d0dnWURWUVFJREJOTwpiM0prY21obGFXNHRWMlZ6ZEdaaGJHVnVNUkF3RGdZRFZRUUhEQWRMdzRQQ3RteHVNUlF3RWdZRFZRUUtEQXRUClpXdDBhVzl1UldsdWN6RWZNQjBHQTFVRUN3d1dUV0ZzYVdOcGIzVnpJRU5sY25RZ1UyVmpkR2x2YmpFaE1COEcKQTFVRUF3d1liV0ZzYVdOcGIzVnpMbk5sYTNScGIyNWxhVzV6TG1SbE1Tb3dLQVlKS29aSWh2Y05BUWtCRmh0egpkR1ZtWVc0dVpYTnpaWEpBYzJWcmRHbHZibVZwYm5NdVpHVXdnZ0VpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElCCkR3QXdnZ0VLQW9JQkFRRERBZjNobDdKWTBYY0ZuaXlFSnBTU0RxbjBPcUJyNlFQNjV1c0pQUnQvOFBhRG9xQnUKd0VZVC9OYSs2ZnNnUGpDMHVLOURaZ1dnMnRIV1dvYW5TYmxBTW96NVBINlorUzRTSFJaN2UyZERJalBqZGhqaAowbUxnMlVNTzV5cDBWNzk3R2dzOWxOdDZKUmZIODFNTjJvYlhXczROdHp0TE11RDZlZ3FwcjhkRGJyMzRhT3M4CnBrZHVpNVVhd1Raa3N5NXBMUEhxNWNNaEZHbTA2djY1Q0xvMFYyUGQ5K0tBb2tQclBjTjVLTEtlYno3bUxwazYKU01lRVhPS1A0aWRFcXh5UTdPN2ZCdUhNZWRzUWh1K3ByWTNzaTNCVXlLZlF0UDVDWm5YMmJwMHdLSHhYMTJEWAoxbmZGSXQ5RGJHdkhUY3lPdU4rblpMUEJtM3ZXeG50eUlJdlZBZ01CQUFHalFqQkFNQWtHQTFVZEV3UUNNQUF3CkVRWUpZSVpJQVliNFFnRUJCQVFEQWdlQU1Bc0dBMVVkRHdRRUF3SUZvREFUQmdOVkhTVUVEREFLQmdnckJnRUYKQlFjREFqQU5CZ2txaGtpRzl3MEJBUVVGQUFPQ0FRRUFHMGZaWVlDVGJkajFYWWMrMVNub2FQUit2SThDOENhRAo4KzBVWWhkbnlVNGdnYTBCQWNEclk5ZTk0ZUVBdTZacXljRjZGakxxWFhkQWJvcHBXb2NyNlQ2R0QxeDMzQ2tsClZBcnpHL0t4UW9oR0QySmVxa2hJTWxEb214SE83a2EzOStPYThpMnZXTFZ5alU4QVp2V01BcnVIYTRFRU55RzcKbFcyQWFnYUZLRkNyOVRuWFRmcmR4R1ZFYnY3S1ZRNmJkaGc1cDVTanBXSDErTXEwM3VSM1pYUEJZZHlWODMxOQpvMGxWajFLRkkyRENML2xpV2lzSlJvb2YrMWNSMzVDdGQwd1lCY3BCNlRac2xNY09QbDc2ZHdLd0pnZUpvMlFnClpzZm1jMnZDMS9xT2xOdU5xLzBUenprVkd2OEVUVDNDZ2FVK1VYZTRYT1Z2a2NjZWJKbjJkZz09Ci0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K'; $script = <<<'EOT' error_reporting(-1); $info = openssl_x509_parse(base64_decode('%s')); var_dump(PHP_VERSION, $info['issuer']['emailAddress'], $info['validFrom_time_t']); EOT; $script = '<'."?php\n".sprintf($script, $cert); try { $process = new PhpProcess($script); $process->mustRun(); } catch (\Exception $e) { // In the case of any exceptions just accept it is not possible to // determine the safety of openssl_x509_parse and bail out. return self::$useOpensslParse = false; } $output = preg_split('{\r?\n}', trim($process->getOutput())); $errorOutput = trim($process->getErrorOutput()); if ( is_array($output) && count($output) === 3 && $output[0] === sprintf('string(%d) "%s"', strlen(PHP_VERSION), PHP_VERSION) && $output[1] === 'string(27) "stefan.esser@sektioneins.de"' && $output[2] === 'int(-1)' && preg_match('{openssl_x509_parse\(\): illegal (?:ASN1 data type for|length in) timestamp in - on line \d+}', $errorOutput) ) { // This PHP has the fix backported probably by a distro security team. return self::$useOpensslParse = true; } return self::$useOpensslParse = false; } /** * Resets the static caches * @return void */ public static function reset() { self::$caFileValidity = array(); self::$caPath = null; self::$useOpensslParse = null; } /** * @param string $name * @return string|false */ private static function getEnvVariable($name) { if (isset($_SERVER[$name])) { return (string) $_SERVER[$name]; } if (PHP_SAPI === 'cli' && ($value = getenv($name)) !== false && $value !== null) { return (string) $value; } return false; } /** * @param string|false $certFile * @return bool */ private static function caFileUsable($certFile, LoggerInterface $logger = null) { return $certFile && @is_file($certFile) && @is_readable($certFile) && static::validateCaFile($certFile, $logger); } /** * @param string|false $certDir * @return bool */ private static function caDirUsable($certDir) { return $certDir && @is_dir($certDir) && @is_readable($certDir) && glob($certDir . '/*'); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; use Symfony\Component\Process\Exception\InvalidArgumentException; use Symfony\Component\Process\Exception\LogicException; use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\Process\Exception\ProcessTimedOutException; use Symfony\Component\Process\Exception\RuntimeException; use Symfony\Component\Process\Pipes\PipesInterface; use Symfony\Component\Process\Pipes\UnixPipes; use Symfony\Component\Process\Pipes\WindowsPipes; /** * Process is a thin wrapper around proc_* functions to easily * start independent PHP processes. * * @author Fabien Potencier * @author Romain Neutron */ class Process implements \IteratorAggregate { const ERR = 'err'; const OUT = 'out'; const STATUS_READY = 'ready'; const STATUS_STARTED = 'started'; const STATUS_TERMINATED = 'terminated'; const STDIN = 0; const STDOUT = 1; const STDERR = 2; // Timeout Precision in seconds. const TIMEOUT_PRECISION = 0.2; const ITER_NON_BLOCKING = 1; // By default, iterating over outputs is a blocking call, use this flag to make it non-blocking const ITER_KEEP_OUTPUT = 2; // By default, outputs are cleared while iterating, use this flag to keep them in memory const ITER_SKIP_OUT = 4; // Use this flag to skip STDOUT while iterating const ITER_SKIP_ERR = 8; // Use this flag to skip STDERR while iterating private $callback; private $hasCallback = false; private $commandline; private $cwd; private $env; private $input; private $starttime; private $lastOutputTime; private $timeout; private $idleTimeout; private $options = ['suppress_errors' => true]; private $exitcode; private $fallbackStatus = []; private $processInformation; private $outputDisabled = false; private $stdout; private $stderr; private $enhanceWindowsCompatibility = true; private $enhanceSigchildCompatibility; private $process; private $status = self::STATUS_READY; private $incrementalOutputOffset = 0; private $incrementalErrorOutputOffset = 0; private $tty = false; private $pty; private $inheritEnv = false; private $useFileHandles = false; /** @var PipesInterface */ private $processPipes; private $latestSignal; private static $sigchild; /** * Exit codes translation table. * * User-defined errors must use exit codes in the 64-113 range. */ public static $exitCodes = [ 0 => 'OK', 1 => 'General error', 2 => 'Misuse of shell builtins', 126 => 'Invoked command cannot execute', 127 => 'Command not found', 128 => 'Invalid exit argument', // signals 129 => 'Hangup', 130 => 'Interrupt', 131 => 'Quit and dump core', 132 => 'Illegal instruction', 133 => 'Trace/breakpoint trap', 134 => 'Process aborted', 135 => 'Bus error: "access to undefined portion of memory object"', 136 => 'Floating point exception: "erroneous arithmetic operation"', 137 => 'Kill (terminate immediately)', 138 => 'User-defined 1', 139 => 'Segmentation violation', 140 => 'User-defined 2', 141 => 'Write to pipe with no one reading', 142 => 'Signal raised by alarm', 143 => 'Termination (request to terminate)', // 144 - not defined 145 => 'Child process terminated, stopped (or continued*)', 146 => 'Continue if stopped', 147 => 'Stop executing temporarily', 148 => 'Terminal stop signal', 149 => 'Background process attempting to read from tty ("in")', 150 => 'Background process attempting to write to tty ("out")', 151 => 'Urgent data available on socket', 152 => 'CPU time limit exceeded', 153 => 'File size limit exceeded', 154 => 'Signal raised by timer counting virtual time: "virtual timer expired"', 155 => 'Profiling timer expired', // 156 - not defined 157 => 'Pollable event', // 158 - not defined 159 => 'Bad syscall', ]; /** * @param string|array $commandline The command line to run * @param string|null $cwd The working directory or null to use the working dir of the current PHP process * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param mixed|null $input The input as stream resource, scalar or \Traversable, or null for no input * @param int|float|null $timeout The timeout in seconds or null to disable * @param array $options An array of options for proc_open * * @throws RuntimeException When proc_open is not installed */ public function __construct($commandline, $cwd = null, array $env = null, $input = null, $timeout = 60, array $options = null) { if (!\function_exists('proc_open')) { throw new RuntimeException('The Process class relies on proc_open, which is not available on your PHP installation.'); } $this->commandline = $commandline; $this->cwd = $cwd; // on Windows, if the cwd changed via chdir(), proc_open defaults to the dir where PHP was started // on Gnu/Linux, PHP builds with --enable-maintainer-zts are also affected // @see : https://bugs.php.net/51800 // @see : https://bugs.php.net/50524 if (null === $this->cwd && (\defined('ZEND_THREAD_SAFE') || '\\' === \DIRECTORY_SEPARATOR)) { $this->cwd = getcwd(); } if (null !== $env) { $this->setEnv($env); } $this->setInput($input); $this->setTimeout($timeout); $this->useFileHandles = '\\' === \DIRECTORY_SEPARATOR; $this->pty = false; $this->enhanceSigchildCompatibility = '\\' !== \DIRECTORY_SEPARATOR && $this->isSigchildEnabled(); if (null !== $options) { @trigger_error(sprintf('The $options parameter of the %s constructor is deprecated since Symfony 3.3 and will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED); $this->options = array_replace($this->options, $options); } } public function __destruct() { $this->stop(0); } public function __clone() { $this->resetProcessData(); } /** * Runs the process. * * The callback receives the type of output (out or err) and * some bytes from the output in real-time. It allows to have feedback * from the independent process during execution. * * The STDOUT and STDERR are also available after the process is finished * via the getOutput() and getErrorOutput() methods. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @return int The exit status code * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process stopped after receiving signal * @throws LogicException In case a callback is provided and output has been disabled * * @final since version 3.3 */ public function run($callback = null/*, array $env = []*/) { $env = 1 < \func_num_args() ? func_get_arg(1) : null; $this->start($callback, $env); return $this->wait(); } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @return $this * * @throws RuntimeException if PHP was compiled with --enable-sigchild and the enhanced sigchild compatibility mode is not enabled * @throws ProcessFailedException if the process didn't terminate successfully * * @final since version 3.3 */ public function mustRun(callable $callback = null/*, array $env = []*/) { if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.'); } $env = 1 < \func_num_args() ? func_get_arg(1) : null; if (0 !== $this->run($callback, $env)) { throw new ProcessFailedException($this); } return $this; } /** * Starts the process and returns after writing the input to STDIN. * * This method blocks until all STDIN data is sent to the process then it * returns while the process runs in the background. * * The termination of the process can be awaited with wait(). * * The callback receives the type of output (out or err) and some bytes from * the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * @throws LogicException In case a callback is provided and output has been disabled */ public function start(callable $callback = null/*, array $env = [*/) { if ($this->isRunning()) { throw new RuntimeException('Process is already running.'); } if (2 <= \func_num_args()) { $env = func_get_arg(1); } else { if (__CLASS__ !== static::class) { $r = new \ReflectionMethod($this, __FUNCTION__); if (__CLASS__ !== $r->getDeclaringClass()->getName() && (2 > $r->getNumberOfParameters() || 'env' !== $r->getParameters()[1]->name)) { @trigger_error(sprintf('The %s::start() method expects a second "$env" argument since Symfony 3.3. It will be made mandatory in 4.0.', static::class), \E_USER_DEPRECATED); } } $env = null; } $this->resetProcessData(); $this->starttime = $this->lastOutputTime = microtime(true); $this->callback = $this->buildCallback($callback); $this->hasCallback = null !== $callback; $descriptors = $this->getDescriptors(); $inheritEnv = $this->inheritEnv; if (\is_array($commandline = $this->commandline)) { $commandline = implode(' ', array_map([$this, 'escapeArgument'], $commandline)); if ('\\' !== \DIRECTORY_SEPARATOR) { // exec is mandatory to deal with sending a signal to the process $commandline = 'exec '.$commandline; } } if (null === $env) { $env = $this->env; } else { if ($this->env) { $env += $this->env; } $inheritEnv = true; } if (null !== $env && $inheritEnv) { $env += $this->getDefaultEnv(); } elseif (null !== $env) { @trigger_error('Not inheriting environment variables is deprecated since Symfony 3.3 and will always happen in 4.0. Set "Process::inheritEnvironmentVariables()" to true instead.', \E_USER_DEPRECATED); } else { $env = $this->getDefaultEnv(); } if ('\\' === \DIRECTORY_SEPARATOR && $this->enhanceWindowsCompatibility) { $this->options['bypass_shell'] = true; $commandline = $this->prepareWindowsCommandLine($commandline, $env); } elseif (!$this->useFileHandles && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { // last exit code is output on the fourth pipe and caught to work around --enable-sigchild $descriptors[3] = ['pipe', 'w']; // See https://unix.stackexchange.com/questions/71205/background-process-pipe-input $commandline = '{ ('.$commandline.') <&3 3<&- 3>/dev/null & } 3<&0;'; $commandline .= 'pid=$!; echo $pid >&3; wait $pid; code=$?; echo $code >&3; exit $code'; // Workaround for the bug, when PTS functionality is enabled. // @see : https://bugs.php.net/69442 $ptsWorkaround = fopen(__FILE__, 'r'); } if (\defined('HHVM_VERSION')) { $envPairs = $env; } else { $envPairs = []; foreach ($env as $k => $v) { if (false !== $v) { $envPairs[] = $k.'='.$v; } } } if (!is_dir($this->cwd)) { @trigger_error('The provided cwd does not exist. Command is currently ran against getcwd(). This behavior is deprecated since Symfony 3.4 and will be removed in 4.0.', \E_USER_DEPRECATED); } $this->process = @proc_open($commandline, $descriptors, $this->processPipes->pipes, $this->cwd, $envPairs, $this->options); if (!\is_resource($this->process)) { throw new RuntimeException('Unable to launch a new process.'); } $this->status = self::STATUS_STARTED; if (isset($descriptors[3])) { $this->fallbackStatus['pid'] = (int) fgets($this->processPipes->pipes[3]); } if ($this->tty) { return; } $this->updateStatus(false); $this->checkTimeout(); } /** * Restarts the process. * * Be warned that the process is cloned before being started. * * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @return static * * @throws RuntimeException When process can't be launched * @throws RuntimeException When process is already running * * @see start() * * @final since version 3.3 */ public function restart(callable $callback = null/*, array $env = []*/) { if ($this->isRunning()) { throw new RuntimeException('Process is already running.'); } $env = 1 < \func_num_args() ? func_get_arg(1) : null; $process = clone $this; $process->start($callback, $env); return $process; } /** * Waits for the process to terminate. * * The callback receives the type of output (out or err) and some bytes * from the output in real-time while writing the standard input to the process. * It allows to have feedback from the independent process during execution. * * @param callable|null $callback A valid PHP callback * * @return int The exitcode of the process * * @throws RuntimeException When process timed out * @throws RuntimeException When process stopped after receiving signal * @throws LogicException When process is not yet started */ public function wait(callable $callback = null) { $this->requireProcessIsStarted(__FUNCTION__); $this->updateStatus(false); if (null !== $callback) { if (!$this->processPipes->haveReadSupport()) { $this->stop(0); throw new \LogicException('Pass the callback to the Process::start method or enableOutput to use a callback with Process::wait.'); } $this->callback = $this->buildCallback($callback); } do { $this->checkTimeout(); $running = '\\' === \DIRECTORY_SEPARATOR ? $this->isRunning() : $this->processPipes->areOpen(); $this->readPipes($running, '\\' !== \DIRECTORY_SEPARATOR || !$running); } while ($running); while ($this->isRunning()) { $this->checkTimeout(); usleep(1000); } if ($this->processInformation['signaled'] && $this->processInformation['termsig'] !== $this->latestSignal) { throw new RuntimeException(sprintf('The process has been signaled with signal "%s".', $this->processInformation['termsig'])); } return $this->exitcode; } /** * Returns the Pid (process identifier), if applicable. * * @return int|null The process id if running, null otherwise */ public function getPid() { return $this->isRunning() ? $this->processInformation['pid'] : null; } /** * Sends a POSIX signal to the process. * * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) * * @return $this * * @throws LogicException In case the process is not running * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ public function signal($signal) { $this->doSignal($signal, true); return $this; } /** * Disables fetching output and error output from the underlying process. * * @return $this * * @throws RuntimeException In case the process is already running * @throws LogicException if an idle timeout is set */ public function disableOutput() { if ($this->isRunning()) { throw new RuntimeException('Disabling output while the process is running is not possible.'); } if (null !== $this->idleTimeout) { throw new LogicException('Output can not be disabled while an idle timeout is set.'); } $this->outputDisabled = true; return $this; } /** * Enables fetching output and error output from the underlying process. * * @return $this * * @throws RuntimeException In case the process is already running */ public function enableOutput() { if ($this->isRunning()) { throw new RuntimeException('Enabling output while the process is running is not possible.'); } $this->outputDisabled = false; return $this; } /** * Returns true in case the output is disabled, false otherwise. * * @return bool */ public function isOutputDisabled() { return $this->outputDisabled; } /** * Returns the current output of the process (STDOUT). * * @return string The process output * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getOutput() { $this->readPipesForOutput(__FUNCTION__); if (false === $ret = stream_get_contents($this->stdout, -1, 0)) { return ''; } return $ret; } /** * Returns the output incrementally. * * In comparison with the getOutput method which always return the whole * output, this one returns the new output since the last call. * * @return string The process output since the last call * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getIncrementalOutput() { $this->readPipesForOutput(__FUNCTION__); $latest = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); $this->incrementalOutputOffset = ftell($this->stdout); if (false === $latest) { return ''; } return $latest; } /** * Returns an iterator to the output of the process, with the output type as keys (Process::OUT/ERR). * * @param int $flags A bit field of Process::ITER_* flags * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started * * @return \Generator */ public function getIterator($flags = 0) { $this->readPipesForOutput(__FUNCTION__, false); $clearOutput = !(self::ITER_KEEP_OUTPUT & $flags); $blocking = !(self::ITER_NON_BLOCKING & $flags); $yieldOut = !(self::ITER_SKIP_OUT & $flags); $yieldErr = !(self::ITER_SKIP_ERR & $flags); while (null !== $this->callback || ($yieldOut && !feof($this->stdout)) || ($yieldErr && !feof($this->stderr))) { if ($yieldOut) { $out = stream_get_contents($this->stdout, -1, $this->incrementalOutputOffset); if (isset($out[0])) { if ($clearOutput) { $this->clearOutput(); } else { $this->incrementalOutputOffset = ftell($this->stdout); } yield self::OUT => $out; } } if ($yieldErr) { $err = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); if (isset($err[0])) { if ($clearOutput) { $this->clearErrorOutput(); } else { $this->incrementalErrorOutputOffset = ftell($this->stderr); } yield self::ERR => $err; } } if (!$blocking && !isset($out[0]) && !isset($err[0])) { yield self::OUT => ''; } $this->checkTimeout(); $this->readPipesForOutput(__FUNCTION__, $blocking); } } /** * Clears the process output. * * @return $this */ public function clearOutput() { ftruncate($this->stdout, 0); fseek($this->stdout, 0); $this->incrementalOutputOffset = 0; return $this; } /** * Returns the current error output of the process (STDERR). * * @return string The process error output * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getErrorOutput() { $this->readPipesForOutput(__FUNCTION__); if (false === $ret = stream_get_contents($this->stderr, -1, 0)) { return ''; } return $ret; } /** * Returns the errorOutput incrementally. * * In comparison with the getErrorOutput method which always return the * whole error output, this one returns the new error output since the last * call. * * @return string The process error output since the last call * * @throws LogicException in case the output has been disabled * @throws LogicException In case the process is not started */ public function getIncrementalErrorOutput() { $this->readPipesForOutput(__FUNCTION__); $latest = stream_get_contents($this->stderr, -1, $this->incrementalErrorOutputOffset); $this->incrementalErrorOutputOffset = ftell($this->stderr); if (false === $latest) { return ''; } return $latest; } /** * Clears the process output. * * @return $this */ public function clearErrorOutput() { ftruncate($this->stderr, 0); fseek($this->stderr, 0); $this->incrementalErrorOutputOffset = 0; return $this; } /** * Returns the exit code returned by the process. * * @return int|null The exit status code, null if the Process is not terminated * * @throws RuntimeException In case --enable-sigchild is activated and the sigchild compatibility mode is disabled */ public function getExitCode() { if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. You must use setEnhanceSigchildCompatibility() to use this method.'); } $this->updateStatus(false); return $this->exitcode; } /** * Returns a string representation for the exit code returned by the process. * * This method relies on the Unix exit code status standardization * and might not be relevant for other operating systems. * * @return string|null A string representation for the exit status code, null if the Process is not terminated * * @see http://tldp.org/LDP/abs/html/exitcodes.html * @see http://en.wikipedia.org/wiki/Unix_signal */ public function getExitCodeText() { if (null === $exitcode = $this->getExitCode()) { return null; } return isset(self::$exitCodes[$exitcode]) ? self::$exitCodes[$exitcode] : 'Unknown error'; } /** * Checks if the process ended successfully. * * @return bool true if the process ended successfully, false otherwise */ public function isSuccessful() { return 0 === $this->getExitCode(); } /** * Returns true if the child process has been terminated by an uncaught signal. * * It always returns false on Windows. * * @return bool * * @throws RuntimeException In case --enable-sigchild is activated * @throws LogicException In case the process is not terminated */ public function hasBeenSignaled() { $this->requireProcessIsTerminated(__FUNCTION__); if (!$this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.'); } return $this->processInformation['signaled']; } /** * Returns the number of the signal that caused the child process to terminate its execution. * * It is only meaningful if hasBeenSignaled() returns true. * * @return int * * @throws RuntimeException In case --enable-sigchild is activated * @throws LogicException In case the process is not terminated */ public function getTermSignal() { $this->requireProcessIsTerminated(__FUNCTION__); if ($this->isSigchildEnabled() && (!$this->enhanceSigchildCompatibility || -1 === $this->processInformation['termsig'])) { throw new RuntimeException('This PHP has been compiled with --enable-sigchild. Term signal can not be retrieved.'); } return $this->processInformation['termsig']; } /** * Returns true if the child process has been stopped by a signal. * * It always returns false on Windows. * * @return bool * * @throws LogicException In case the process is not terminated */ public function hasBeenStopped() { $this->requireProcessIsTerminated(__FUNCTION__); return $this->processInformation['stopped']; } /** * Returns the number of the signal that caused the child process to stop its execution. * * It is only meaningful if hasBeenStopped() returns true. * * @return int * * @throws LogicException In case the process is not terminated */ public function getStopSignal() { $this->requireProcessIsTerminated(__FUNCTION__); return $this->processInformation['stopsig']; } /** * Checks if the process is currently running. * * @return bool true if the process is currently running, false otherwise */ public function isRunning() { if (self::STATUS_STARTED !== $this->status) { return false; } $this->updateStatus(false); return $this->processInformation['running']; } /** * Checks if the process has been started with no regard to the current state. * * @return bool true if status is ready, false otherwise */ public function isStarted() { return self::STATUS_READY != $this->status; } /** * Checks if the process is terminated. * * @return bool true if process is terminated, false otherwise */ public function isTerminated() { $this->updateStatus(false); return self::STATUS_TERMINATED == $this->status; } /** * Gets the process status. * * The status is one of: ready, started, terminated. * * @return string The current process status */ public function getStatus() { $this->updateStatus(false); return $this->status; } /** * Stops the process. * * @param int|float $timeout The timeout in seconds * @param int $signal A POSIX signal to send in case the process has not stop at timeout, default is SIGKILL (9) * * @return int|null The exit-code of the process or null if it's not running */ public function stop($timeout = 10, $signal = null) { $timeoutMicro = microtime(true) + $timeout; if ($this->isRunning()) { // given `SIGTERM` may not be defined and that `proc_terminate` uses the constant value and not the constant itself, we use the same here $this->doSignal(15, false); do { usleep(1000); } while ($this->isRunning() && microtime(true) < $timeoutMicro); if ($this->isRunning()) { // Avoid exception here: process is supposed to be running, but it might have stopped just // after this line. In any case, let's silently discard the error, we cannot do anything. $this->doSignal($signal ?: 9, false); } } if ($this->isRunning()) { if (isset($this->fallbackStatus['pid'])) { unset($this->fallbackStatus['pid']); return $this->stop(0, $signal); } $this->close(); } return $this->exitcode; } /** * Adds a line to the STDOUT stream. * * @internal * * @param string $line The line to append */ public function addOutput($line) { $this->lastOutputTime = microtime(true); fseek($this->stdout, 0, \SEEK_END); fwrite($this->stdout, $line); fseek($this->stdout, $this->incrementalOutputOffset); } /** * Adds a line to the STDERR stream. * * @internal * * @param string $line The line to append */ public function addErrorOutput($line) { $this->lastOutputTime = microtime(true); fseek($this->stderr, 0, \SEEK_END); fwrite($this->stderr, $line); fseek($this->stderr, $this->incrementalErrorOutputOffset); } /** * Gets the command line to be executed. * * @return string The command to execute */ public function getCommandLine() { return \is_array($this->commandline) ? implode(' ', array_map([$this, 'escapeArgument'], $this->commandline)) : $this->commandline; } /** * Sets the command line to be executed. * * @param string|array $commandline The command to execute * * @return $this */ public function setCommandLine($commandline) { $this->commandline = $commandline; return $this; } /** * Gets the process timeout (max. runtime). * * @return float|null The timeout in seconds or null if it's disabled */ public function getTimeout() { return $this->timeout; } /** * Gets the process idle timeout (max. time since last output). * * @return float|null The timeout in seconds or null if it's disabled */ public function getIdleTimeout() { return $this->idleTimeout; } /** * Sets the process timeout (max. runtime) in seconds. * * To disable the timeout, set this value to null. * * @param int|float|null $timeout The timeout in seconds * * @return $this * * @throws InvalidArgumentException if the timeout is negative */ public function setTimeout($timeout) { $this->timeout = $this->validateTimeout($timeout); return $this; } /** * Sets the process idle timeout (max. time since last output). * * To disable the timeout, set this value to null. * * @param int|float|null $timeout The timeout in seconds * * @return $this * * @throws LogicException if the output is disabled * @throws InvalidArgumentException if the timeout is negative */ public function setIdleTimeout($timeout) { if (null !== $timeout && $this->outputDisabled) { throw new LogicException('Idle timeout can not be set while the output is disabled.'); } $this->idleTimeout = $this->validateTimeout($timeout); return $this; } /** * Enables or disables the TTY mode. * * @param bool $tty True to enabled and false to disable * * @return $this * * @throws RuntimeException In case the TTY mode is not supported */ public function setTty($tty) { if ('\\' === \DIRECTORY_SEPARATOR && $tty) { throw new RuntimeException('TTY mode is not supported on Windows platform.'); } if ($tty) { static $isTtySupported; if (null === $isTtySupported) { $isTtySupported = (bool) @proc_open('echo 1 >/dev/null', [['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w']], $pipes); } if (!$isTtySupported) { throw new RuntimeException('TTY mode requires /dev/tty to be read/writable.'); } } $this->tty = (bool) $tty; return $this; } /** * Checks if the TTY mode is enabled. * * @return bool true if the TTY mode is enabled, false otherwise */ public function isTty() { return $this->tty; } /** * Sets PTY mode. * * @param bool $bool * * @return $this */ public function setPty($bool) { $this->pty = (bool) $bool; return $this; } /** * Returns PTY state. * * @return bool */ public function isPty() { return $this->pty; } /** * Gets the working directory. * * @return string|null The current working directory or null on failure */ public function getWorkingDirectory() { if (null === $this->cwd) { // getcwd() will return false if any one of the parent directories does not have // the readable or search mode set, even if the current directory does return getcwd() ?: null; } return $this->cwd; } /** * Sets the current working directory. * * @param string $cwd The new working directory * * @return $this */ public function setWorkingDirectory($cwd) { $this->cwd = $cwd; return $this; } /** * Gets the environment variables. * * @return array The current environment variables */ public function getEnv() { return $this->env; } /** * Sets the environment variables. * * Each environment variable value should be a string. * If it is an array, the variable is ignored. * If it is false or null, it will be removed when * env vars are otherwise inherited. * * That happens in PHP when 'argv' is registered into * the $_ENV array for instance. * * @param array $env The new environment variables * * @return $this */ public function setEnv(array $env) { // Process can not handle env values that are arrays $env = array_filter($env, function ($value) { return !\is_array($value); }); $this->env = $env; return $this; } /** * Gets the Process input. * * @return resource|string|\Iterator|null The Process input */ public function getInput() { return $this->input; } /** * Sets the input. * * This content will be passed to the underlying process standard input. * * @param string|int|float|bool|resource|\Traversable|null $input The content * * @return $this * * @throws LogicException In case the process is running */ public function setInput($input) { if ($this->isRunning()) { throw new LogicException('Input can not be set while the process is running.'); } $this->input = ProcessUtils::validateInput(__METHOD__, $input); return $this; } /** * Gets the options for proc_open. * * @return array The current options * * @deprecated since version 3.3, to be removed in 4.0. */ public function getOptions() { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED); return $this->options; } /** * Sets the options for proc_open. * * @param array $options The new options * * @return $this * * @deprecated since version 3.3, to be removed in 4.0. */ public function setOptions(array $options) { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED); $this->options = $options; return $this; } /** * Gets whether or not Windows compatibility is enabled. * * This is true by default. * * @return bool * * @deprecated since version 3.3, to be removed in 4.0. Enhanced Windows compatibility will always be enabled. */ public function getEnhanceWindowsCompatibility() { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Enhanced Windows compatibility will always be enabled.', __METHOD__), \E_USER_DEPRECATED); return $this->enhanceWindowsCompatibility; } /** * Sets whether or not Windows compatibility is enabled. * * @param bool $enhance * * @return $this * * @deprecated since version 3.3, to be removed in 4.0. Enhanced Windows compatibility will always be enabled. */ public function setEnhanceWindowsCompatibility($enhance) { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Enhanced Windows compatibility will always be enabled.', __METHOD__), \E_USER_DEPRECATED); $this->enhanceWindowsCompatibility = (bool) $enhance; return $this; } /** * Returns whether sigchild compatibility mode is activated or not. * * @return bool * * @deprecated since version 3.3, to be removed in 4.0. Sigchild compatibility will always be enabled. */ public function getEnhanceSigchildCompatibility() { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Sigchild compatibility will always be enabled.', __METHOD__), \E_USER_DEPRECATED); return $this->enhanceSigchildCompatibility; } /** * Activates sigchild compatibility mode. * * Sigchild compatibility mode is required to get the exit code and * determine the success of a process when PHP has been compiled with * the --enable-sigchild option * * @param bool $enhance * * @return $this * * @deprecated since version 3.3, to be removed in 4.0. */ public function setEnhanceSigchildCompatibility($enhance) { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Sigchild compatibility will always be enabled.', __METHOD__), \E_USER_DEPRECATED); $this->enhanceSigchildCompatibility = (bool) $enhance; return $this; } /** * Sets whether environment variables will be inherited or not. * * @param bool $inheritEnv * * @return $this */ public function inheritEnvironmentVariables($inheritEnv = true) { if (!$inheritEnv) { @trigger_error('Not inheriting environment variables is deprecated since Symfony 3.3 and will always happen in 4.0. Set "Process::inheritEnvironmentVariables()" to true instead.', \E_USER_DEPRECATED); } $this->inheritEnv = (bool) $inheritEnv; return $this; } /** * Returns whether environment variables will be inherited or not. * * @return bool * * @deprecated since version 3.3, to be removed in 4.0. Environment variables will always be inherited. */ public function areEnvironmentVariablesInherited() { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.3 and will be removed in 4.0. Environment variables will always be inherited.', __METHOD__), \E_USER_DEPRECATED); return $this->inheritEnv; } /** * Performs a check between the timeout definition and the time the process started. * * In case you run a background process (with the start method), you should * trigger this method regularly to ensure the process timeout * * @throws ProcessTimedOutException In case the timeout was reached */ public function checkTimeout() { if (self::STATUS_STARTED !== $this->status) { return; } if (null !== $this->timeout && $this->timeout < microtime(true) - $this->starttime) { $this->stop(0); throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_GENERAL); } if (null !== $this->idleTimeout && $this->idleTimeout < microtime(true) - $this->lastOutputTime) { $this->stop(0); throw new ProcessTimedOutException($this, ProcessTimedOutException::TYPE_IDLE); } } /** * Returns whether PTY is supported on the current operating system. * * @return bool */ public static function isPtySupported() { static $result; if (null !== $result) { return $result; } if ('\\' === \DIRECTORY_SEPARATOR) { return $result = false; } return $result = (bool) @proc_open('echo 1 >/dev/null', [['pty'], ['pty'], ['pty']], $pipes); } /** * Creates the descriptors needed by the proc_open. * * @return array */ private function getDescriptors() { if ($this->input instanceof \Iterator) { $this->input->rewind(); } if ('\\' === \DIRECTORY_SEPARATOR) { $this->processPipes = new WindowsPipes($this->input, !$this->outputDisabled || $this->hasCallback); } else { $this->processPipes = new UnixPipes($this->isTty(), $this->isPty(), $this->input, !$this->outputDisabled || $this->hasCallback); } return $this->processPipes->getDescriptors(); } /** * Builds up the callback used by wait(). * * The callbacks adds all occurred output to the specific buffer and calls * the user callback (if present) with the received output. * * @param callable|null $callback The user defined PHP callback * * @return \Closure A PHP closure */ protected function buildCallback(callable $callback = null) { if ($this->outputDisabled) { return function ($type, $data) use ($callback) { if (null !== $callback) { \call_user_func($callback, $type, $data); } }; } $out = self::OUT; return function ($type, $data) use ($callback, $out) { if ($out == $type) { $this->addOutput($data); } else { $this->addErrorOutput($data); } if (null !== $callback) { \call_user_func($callback, $type, $data); } }; } /** * Updates the status of the process, reads pipes. * * @param bool $blocking Whether to use a blocking read call */ protected function updateStatus($blocking) { if (self::STATUS_STARTED !== $this->status) { return; } $this->processInformation = proc_get_status($this->process); $running = $this->processInformation['running']; $this->readPipes($running && $blocking, '\\' !== \DIRECTORY_SEPARATOR || !$running); if ($this->fallbackStatus && $this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { $this->processInformation = $this->fallbackStatus + $this->processInformation; } if (!$running) { $this->close(); } } /** * Returns whether PHP has been compiled with the '--enable-sigchild' option or not. * * @return bool */ protected function isSigchildEnabled() { if (null !== self::$sigchild) { return self::$sigchild; } if (!\function_exists('phpinfo') || \defined('HHVM_VERSION')) { return self::$sigchild = false; } ob_start(); phpinfo(\INFO_GENERAL); return self::$sigchild = false !== strpos(ob_get_clean(), '--enable-sigchild'); } /** * Reads pipes for the freshest output. * * @param string $caller The name of the method that needs fresh outputs * @param bool $blocking Whether to use blocking calls or not * * @throws LogicException in case output has been disabled or process is not started */ private function readPipesForOutput($caller, $blocking = false) { if ($this->outputDisabled) { throw new LogicException('Output has been disabled.'); } $this->requireProcessIsStarted($caller); $this->updateStatus($blocking); } /** * Validates and returns the filtered timeout. * * @param int|float|null $timeout * * @return float|null * * @throws InvalidArgumentException if the given timeout is a negative number */ private function validateTimeout($timeout) { $timeout = (float) $timeout; if (0.0 === $timeout) { $timeout = null; } elseif ($timeout < 0) { throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); } return $timeout; } /** * Reads pipes, executes callback. * * @param bool $blocking Whether to use blocking calls or not * @param bool $close Whether to close file handles or not */ private function readPipes($blocking, $close) { $result = $this->processPipes->readAndWrite($blocking, $close); $callback = $this->callback; foreach ($result as $type => $data) { if (3 !== $type) { $callback(self::STDOUT === $type ? self::OUT : self::ERR, $data); } elseif (!isset($this->fallbackStatus['signaled'])) { $this->fallbackStatus['exitcode'] = (int) $data; } } } /** * Closes process resource, closes file handles, sets the exitcode. * * @return int The exitcode */ private function close() { $this->processPipes->close(); if (\is_resource($this->process)) { proc_close($this->process); } $this->exitcode = $this->processInformation['exitcode']; $this->status = self::STATUS_TERMINATED; if (-1 === $this->exitcode) { if ($this->processInformation['signaled'] && 0 < $this->processInformation['termsig']) { // if process has been signaled, no exitcode but a valid termsig, apply Unix convention $this->exitcode = 128 + $this->processInformation['termsig']; } elseif ($this->enhanceSigchildCompatibility && $this->isSigchildEnabled()) { $this->processInformation['signaled'] = true; $this->processInformation['termsig'] = -1; } } // Free memory from self-reference callback created by buildCallback // Doing so in other contexts like __destruct or by garbage collector is ineffective // Now pipes are closed, so the callback is no longer necessary $this->callback = null; return $this->exitcode; } /** * Resets data related to the latest run of the process. */ private function resetProcessData() { $this->starttime = null; $this->callback = null; $this->exitcode = null; $this->fallbackStatus = []; $this->processInformation = null; $this->stdout = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+b'); $this->stderr = fopen('php://temp/maxmemory:'.(1024 * 1024), 'w+b'); $this->process = null; $this->latestSignal = null; $this->status = self::STATUS_READY; $this->incrementalOutputOffset = 0; $this->incrementalErrorOutputOffset = 0; } /** * Sends a POSIX signal to the process. * * @param int $signal A valid POSIX signal (see https://php.net/pcntl.constants) * @param bool $throwException Whether to throw exception in case signal failed * * @return bool True if the signal was sent successfully, false otherwise * * @throws LogicException In case the process is not running * @throws RuntimeException In case --enable-sigchild is activated and the process can't be killed * @throws RuntimeException In case of failure */ private function doSignal($signal, $throwException) { if (null === $pid = $this->getPid()) { if ($throwException) { throw new LogicException('Can not send signal on a non running process.'); } return false; } if ('\\' === \DIRECTORY_SEPARATOR) { exec(sprintf('taskkill /F /T /PID %d 2>&1', $pid), $output, $exitCode); if ($exitCode && $this->isRunning()) { if ($throwException) { throw new RuntimeException(sprintf('Unable to kill the process (%s).', implode(' ', $output))); } return false; } } else { if (!$this->enhanceSigchildCompatibility || !$this->isSigchildEnabled()) { $ok = @proc_terminate($this->process, $signal); } elseif (\function_exists('posix_kill')) { $ok = @posix_kill($pid, $signal); } elseif ($ok = proc_open(sprintf('kill -%d %d', $signal, $pid), [2 => ['pipe', 'w']], $pipes)) { $ok = false === fgets($pipes[2]); } if (!$ok) { if ($throwException) { throw new RuntimeException(sprintf('Error while sending signal `%s`.', $signal)); } return false; } } $this->latestSignal = (int) $signal; $this->fallbackStatus['signaled'] = true; $this->fallbackStatus['exitcode'] = -1; $this->fallbackStatus['termsig'] = $this->latestSignal; return true; } private function prepareWindowsCommandLine($cmd, array &$env) { $uid = uniqid('', true); $varCount = 0; $varCache = []; $cmd = preg_replace_callback( '/"(?:( [^"%!^]*+ (?: (?: !LF! | "(?:\^[%!^])?+" ) [^"%!^]*+ )++ ) | [^"]*+ )"/x', function ($m) use (&$env, &$varCache, &$varCount, $uid) { if (!isset($m[1])) { return $m[0]; } if (isset($varCache[$m[0]])) { return $varCache[$m[0]]; } if (false !== strpos($value = $m[1], "\0")) { $value = str_replace("\0", '?', $value); } if (false === strpbrk($value, "\"%!\n")) { return '"'.$value.'"'; } $value = str_replace(['!LF!', '"^!"', '"^%"', '"^^"', '""'], ["\n", '!', '%', '^', '"'], $value); $value = '"'.preg_replace('/(\\\\*)"/', '$1$1\\"', $value).'"'; $var = $uid.++$varCount; $env[$var] = $value; return $varCache[$m[0]] = '!'.$var.'!'; }, $cmd ); $cmd = 'cmd /V:ON /E:ON /D /C ('.str_replace("\n", ' ', $cmd).')'; foreach ($this->processPipes->getFiles() as $offset => $filename) { $cmd .= ' '.$offset.'>"'.$filename.'"'; } return $cmd; } /** * Ensures the process is running or terminated, throws a LogicException if the process has a not started. * * @param string $functionName The function name that was called * * @throws LogicException if the process has not run */ private function requireProcessIsStarted($functionName) { if (!$this->isStarted()) { throw new LogicException(sprintf('Process must be started before calling "%s()".', $functionName)); } } /** * Ensures the process is terminated, throws a LogicException if the process has a status different than `terminated`. * * @param string $functionName The function name that was called * * @throws LogicException if the process is not yet terminated */ private function requireProcessIsTerminated($functionName) { if (!$this->isTerminated()) { throw new LogicException(sprintf('Process must be terminated before calling "%s()".', $functionName)); } } /** * Escapes a string to be used as a shell argument. * * @param string $argument The argument that will be escaped * * @return string The escaped argument */ private function escapeArgument($argument) { if ('\\' !== \DIRECTORY_SEPARATOR) { return "'".str_replace("'", "'\\''", $argument)."'"; } if ('' === $argument = (string) $argument) { return '""'; } if (false !== strpos($argument, "\0")) { $argument = str_replace("\0", '?', $argument); } if (!preg_match('/[\/()%!^"<>&|\s]/', $argument)) { return $argument; } $argument = preg_replace('/(\\\\+)$/', '$1$1', $argument); return '"'.str_replace(['"', '^', '%', '!', "\n"], ['""', '"^^"', '"^%"', '"^!"', '!LF!'], $argument).'"'; } private function getDefaultEnv() { $env = []; foreach ($_SERVER as $k => $v) { if (\is_string($v) && false !== $v = getenv($k)) { $env[$k] = $v; } } foreach ($_ENV as $k => $v) { if (\is_string($v)) { $env[$k] = $v; } } return $env; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; use Symfony\Component\Process\Exception\RuntimeException; /** * Provides a way to continuously write to the input of a Process until the InputStream is closed. * * @author Nicolas Grekas */ class InputStream implements \IteratorAggregate { /** @var callable|null */ private $onEmpty = null; private $input = []; private $open = true; /** * Sets a callback that is called when the write buffer becomes empty. */ public function onEmpty(callable $onEmpty = null) { $this->onEmpty = $onEmpty; } /** * Appends an input to the write buffer. * * @param resource|string|int|float|bool|\Traversable|null $input The input to append as scalar, * stream resource or \Traversable */ public function write($input) { if (null === $input) { return; } if ($this->isClosed()) { throw new RuntimeException(sprintf('"%s" is closed.', static::class)); } $this->input[] = ProcessUtils::validateInput(__METHOD__, $input); } /** * Closes the write buffer. */ public function close() { $this->open = false; } /** * Tells whether the write buffer is closed or not. */ public function isClosed() { return !$this->open; } public function getIterator() { $this->open = true; while ($this->open || $this->input) { if (!$this->input) { yield ''; continue; } $current = array_shift($this->input); if ($current instanceof \Iterator) { foreach ($current as $cur) { yield $cur; } } else { yield $current; } if (!$this->input && $this->open && null !== $onEmpty = $this->onEmpty) { $this->write($onEmpty($this)); } } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; use Symfony\Component\Process\Exception\InvalidArgumentException; /** * ProcessUtils is a bunch of utility methods. * * This class contains static methods only and is not meant to be instantiated. * * @author Martin Hasoň */ class ProcessUtils { /** * This class should not be instantiated. */ private function __construct() { } /** * Escapes a string to be used as a shell argument. * * @param string $argument The argument that will be escaped * * @return string The escaped argument * * @deprecated since version 3.3, to be removed in 4.0. Use a command line array or give env vars to the `Process::start/run()` method instead. */ public static function escapeArgument($argument) { @trigger_error('The '.__METHOD__.'() method is deprecated since Symfony 3.3 and will be removed in 4.0. Use a command line array or give env vars to the Process::start/run() method instead.', \E_USER_DEPRECATED); //Fix for PHP bug #43784 escapeshellarg removes % from given string //Fix for PHP bug #49446 escapeshellarg doesn't work on Windows //@see https://bugs.php.net/43784 //@see https://bugs.php.net/49446 if ('\\' === \DIRECTORY_SEPARATOR) { if ('' === $argument) { return escapeshellarg($argument); } $escapedArgument = ''; $quote = false; foreach (preg_split('/(")/', $argument, -1, \PREG_SPLIT_NO_EMPTY | \PREG_SPLIT_DELIM_CAPTURE) as $part) { if ('"' === $part) { $escapedArgument .= '\\"'; } elseif (self::isSurroundedBy($part, '%')) { // Avoid environment variable expansion $escapedArgument .= '^%"'.substr($part, 1, -1).'"^%'; } else { // escape trailing backslash if ('\\' === substr($part, -1)) { $part .= '\\'; } $quote = true; $escapedArgument .= $part; } } if ($quote) { $escapedArgument = '"'.$escapedArgument.'"'; } return $escapedArgument; } return "'".str_replace("'", "'\\''", $argument)."'"; } /** * Validates and normalizes a Process input. * * @param string $caller The name of method call that validates the input * @param mixed $input The input to validate * * @return mixed The validated input * * @throws InvalidArgumentException In case the input is not valid */ public static function validateInput($caller, $input) { if (null !== $input) { if (\is_resource($input)) { return $input; } if (\is_string($input)) { return $input; } if (is_scalar($input)) { return (string) $input; } if ($input instanceof Process) { return $input->getIterator($input::ITER_SKIP_ERR); } if ($input instanceof \Iterator) { return $input; } if ($input instanceof \Traversable) { return new \IteratorIterator($input); } throw new InvalidArgumentException(sprintf('"%s" only accepts strings, Traversable objects or stream resources.', $caller)); } return $input; } private static function isSurroundedBy($arg, $char) { return 2 < \strlen($arg) && $char === $arg[0] && $char === $arg[\strlen($arg) - 1]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Pipes; /** * PipesInterface manages descriptors and pipes for the use of proc_open. * * @author Romain Neutron * * @internal */ interface PipesInterface { const CHUNK_SIZE = 16384; /** * Returns an array of descriptors for the use of proc_open. * * @return array */ public function getDescriptors(); /** * Returns an array of filenames indexed by their related stream in case these pipes use temporary files. * * @return string[] */ public function getFiles(); /** * Reads data in file handles and pipes. * * @param bool $blocking Whether to use blocking calls or not * @param bool $close Whether to close pipes if they've reached EOF * * @return string[] An array of read data indexed by their fd */ public function readAndWrite($blocking, $close = false); /** * Returns if the current state has open file handles or pipes. * * @return bool */ public function areOpen(); /** * Returns if pipes are able to read output. * * @return bool */ public function haveReadSupport(); /** * Closes file handles and pipes. */ public function close(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Pipes; use Symfony\Component\Process\Exception\RuntimeException; use Symfony\Component\Process\Process; /** * WindowsPipes implementation uses temporary files as handles. * * @see https://bugs.php.net/51800 * @see https://bugs.php.net/65650 * * @author Romain Neutron * * @internal */ class WindowsPipes extends AbstractPipes { private $files = []; private $fileHandles = []; private $lockHandles = []; private $readBytes = [ Process::STDOUT => 0, Process::STDERR => 0, ]; private $haveReadSupport; public function __construct($input, $haveReadSupport) { $this->haveReadSupport = (bool) $haveReadSupport; if ($this->haveReadSupport) { // Fix for PHP bug #51800: reading from STDOUT pipe hangs forever on Windows if the output is too big. // Workaround for this problem is to use temporary files instead of pipes on Windows platform. // // @see https://bugs.php.net/51800 $pipes = [ Process::STDOUT => Process::OUT, Process::STDERR => Process::ERR, ]; $tmpDir = sys_get_temp_dir(); $lastError = 'unknown reason'; set_error_handler(function ($type, $msg) use (&$lastError) { $lastError = $msg; }); for ($i = 0;; ++$i) { foreach ($pipes as $pipe => $name) { $file = sprintf('%s\\sf_proc_%02X.%s', $tmpDir, $i, $name); if (!$h = fopen($file.'.lock', 'w')) { if (file_exists($file.'.lock')) { continue 2; } restore_error_handler(); throw new RuntimeException('A temporary file could not be opened to write the process output: '.$lastError); } if (!flock($h, \LOCK_EX | \LOCK_NB)) { continue 2; } if (isset($this->lockHandles[$pipe])) { flock($this->lockHandles[$pipe], \LOCK_UN); fclose($this->lockHandles[$pipe]); } $this->lockHandles[$pipe] = $h; if (!fclose(fopen($file, 'w')) || !$h = fopen($file, 'r')) { flock($this->lockHandles[$pipe], \LOCK_UN); fclose($this->lockHandles[$pipe]); unset($this->lockHandles[$pipe]); continue 2; } $this->fileHandles[$pipe] = $h; $this->files[$pipe] = $file; } break; } restore_error_handler(); } parent::__construct($input); } public function __destruct() { $this->close(); } /** * {@inheritdoc} */ public function getDescriptors() { if (!$this->haveReadSupport) { $nullstream = fopen('NUL', 'c'); return [ ['pipe', 'r'], $nullstream, $nullstream, ]; } // We're not using pipe on Windows platform as it hangs (https://bugs.php.net/51800) // We're not using file handles as it can produce corrupted output https://bugs.php.net/65650 // So we redirect output within the commandline and pass the nul device to the process return [ ['pipe', 'r'], ['file', 'NUL', 'w'], ['file', 'NUL', 'w'], ]; } /** * {@inheritdoc} */ public function getFiles() { return $this->files; } /** * {@inheritdoc} */ public function readAndWrite($blocking, $close = false) { $this->unblock(); $w = $this->write(); $read = $r = $e = []; if ($blocking) { if ($w) { @stream_select($r, $w, $e, 0, Process::TIMEOUT_PRECISION * 1E6); } elseif ($this->fileHandles) { usleep(Process::TIMEOUT_PRECISION * 1E6); } } foreach ($this->fileHandles as $type => $fileHandle) { $data = stream_get_contents($fileHandle, -1, $this->readBytes[$type]); if (isset($data[0])) { $this->readBytes[$type] += \strlen($data); $read[$type] = $data; } if ($close) { ftruncate($fileHandle, 0); fclose($fileHandle); flock($this->lockHandles[$type], \LOCK_UN); fclose($this->lockHandles[$type]); unset($this->fileHandles[$type], $this->lockHandles[$type]); } } return $read; } /** * {@inheritdoc} */ public function haveReadSupport() { return $this->haveReadSupport; } /** * {@inheritdoc} */ public function areOpen() { return $this->pipes && $this->fileHandles; } /** * {@inheritdoc} */ public function close() { parent::close(); foreach ($this->fileHandles as $type => $handle) { ftruncate($handle, 0); fclose($handle); flock($this->lockHandles[$type], \LOCK_UN); fclose($this->lockHandles[$type]); } $this->fileHandles = $this->lockHandles = []; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Pipes; use Symfony\Component\Process\Exception\InvalidArgumentException; /** * @author Romain Neutron * * @internal */ abstract class AbstractPipes implements PipesInterface { public $pipes = []; private $inputBuffer = ''; private $input; private $blocked = true; private $lastError; /** * @param resource|string|int|float|bool|\Iterator|null $input */ public function __construct($input) { if (\is_resource($input) || $input instanceof \Iterator) { $this->input = $input; } elseif (\is_string($input)) { $this->inputBuffer = $input; } else { $this->inputBuffer = (string) $input; } } /** * {@inheritdoc} */ public function close() { foreach ($this->pipes as $pipe) { fclose($pipe); } $this->pipes = []; } /** * Returns true if a system call has been interrupted. * * @return bool */ protected function hasSystemCallBeenInterrupted() { $lastError = $this->lastError; $this->lastError = null; // stream_select returns false when the `select` system call is interrupted by an incoming signal return null !== $lastError && false !== stripos($lastError, 'interrupted system call'); } /** * Unblocks streams. */ protected function unblock() { if (!$this->blocked) { return; } foreach ($this->pipes as $pipe) { stream_set_blocking($pipe, 0); } if (\is_resource($this->input)) { stream_set_blocking($this->input, 0); } $this->blocked = false; } /** * Writes input to stdin. * * @return array|null * * @throws InvalidArgumentException When an input iterator yields a non supported value */ protected function write() { if (!isset($this->pipes[0])) { return null; } $input = $this->input; if ($input instanceof \Iterator) { if (!$input->valid()) { $input = null; } elseif (\is_resource($input = $input->current())) { stream_set_blocking($input, 0); } elseif (!isset($this->inputBuffer[0])) { if (!\is_string($input)) { if (!is_scalar($input)) { throw new InvalidArgumentException(sprintf('"%s" yielded a value of type "%s", but only scalars and stream resources are supported.', \get_class($this->input), \gettype($input))); } $input = (string) $input; } $this->inputBuffer = $input; $this->input->next(); $input = null; } else { $input = null; } } $r = $e = []; $w = [$this->pipes[0]]; // let's have a look if something changed in streams if (false === @stream_select($r, $w, $e, 0, 0)) { return null; } foreach ($w as $stdin) { if (isset($this->inputBuffer[0])) { $written = fwrite($stdin, $this->inputBuffer); $this->inputBuffer = substr($this->inputBuffer, $written); if (isset($this->inputBuffer[0])) { return [$this->pipes[0]]; } } if ($input) { for (;;) { $data = fread($input, self::CHUNK_SIZE); if (!isset($data[0])) { break; } $written = fwrite($stdin, $data); $data = substr($data, $written); if (isset($data[0])) { $this->inputBuffer = $data; return [$this->pipes[0]]; } } if (feof($input)) { if ($this->input instanceof \Iterator) { $this->input->next(); } else { $this->input = null; } } } } // no input to read on resource, buffer is empty if (!isset($this->inputBuffer[0]) && !($this->input instanceof \Iterator ? $this->input->valid() : $this->input)) { $this->input = null; fclose($this->pipes[0]); unset($this->pipes[0]); } elseif (!$w) { return [$this->pipes[0]]; } return null; } /** * @internal */ public function handleError($type, $msg) { $this->lastError = $msg; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Pipes; use Symfony\Component\Process\Process; /** * UnixPipes implementation uses unix pipes as handles. * * @author Romain Neutron * * @internal */ class UnixPipes extends AbstractPipes { private $ttyMode; private $ptyMode; private $haveReadSupport; public function __construct($ttyMode, $ptyMode, $input, $haveReadSupport) { $this->ttyMode = (bool) $ttyMode; $this->ptyMode = (bool) $ptyMode; $this->haveReadSupport = (bool) $haveReadSupport; parent::__construct($input); } public function __destruct() { $this->close(); } /** * {@inheritdoc} */ public function getDescriptors() { if (!$this->haveReadSupport) { $nullstream = fopen('/dev/null', 'c'); return [ ['pipe', 'r'], $nullstream, $nullstream, ]; } if ($this->ttyMode) { return [ ['file', '/dev/tty', 'r'], ['file', '/dev/tty', 'w'], ['file', '/dev/tty', 'w'], ]; } if ($this->ptyMode && Process::isPtySupported()) { return [ ['pty'], ['pty'], ['pty'], ]; } return [ ['pipe', 'r'], ['pipe', 'w'], // stdout ['pipe', 'w'], // stderr ]; } /** * {@inheritdoc} */ public function getFiles() { return []; } /** * {@inheritdoc} */ public function readAndWrite($blocking, $close = false) { $this->unblock(); $w = $this->write(); $read = $e = []; $r = $this->pipes; unset($r[0]); // let's have a look if something changed in streams set_error_handler([$this, 'handleError']); if (($r || $w) && false === stream_select($r, $w, $e, 0, $blocking ? Process::TIMEOUT_PRECISION * 1E6 : 0)) { restore_error_handler(); // if a system call has been interrupted, forget about it, let's try again // otherwise, an error occurred, let's reset pipes if (!$this->hasSystemCallBeenInterrupted()) { $this->pipes = []; } return $read; } restore_error_handler(); foreach ($r as $pipe) { // prior PHP 5.4 the array passed to stream_select is modified and // lose key association, we have to find back the key $read[$type = array_search($pipe, $this->pipes, true)] = ''; do { $data = @fread($pipe, self::CHUNK_SIZE); $read[$type] .= $data; } while (isset($data[0]) && ($close || isset($data[self::CHUNK_SIZE - 1]))); if (!isset($read[$type][0])) { unset($read[$type]); } if ($close && feof($pipe)) { fclose($pipe); unset($this->pipes[$type]); } } return $read; } /** * {@inheritdoc} */ public function haveReadSupport() { return $this->haveReadSupport; } /** * {@inheritdoc} */ public function areOpen() { return (bool) $this->pipes; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; /** * An executable finder specifically designed for the PHP executable. * * @author Fabien Potencier * @author Johannes M. Schmitt */ class PhpExecutableFinder { private $executableFinder; public function __construct() { $this->executableFinder = new ExecutableFinder(); } /** * Finds The PHP executable. * * @param bool $includeArgs Whether or not include command arguments * * @return string|false The PHP executable path or false if it cannot be found */ public function find($includeArgs = true) { $args = $this->findArguments(); $args = $includeArgs && $args ? ' '.implode(' ', $args) : ''; // HHVM support if (\defined('HHVM_VERSION')) { return (getenv('PHP_BINARY') ?: \PHP_BINARY).$args; } // PHP_BINARY return the current sapi executable if (\PHP_BINARY && \in_array(\PHP_SAPI, ['cli', 'cli-server', 'phpdbg'], true)) { return \PHP_BINARY.$args; } if ($php = getenv('PHP_PATH')) { if (!@is_executable($php)) { return false; } return $php; } if ($php = getenv('PHP_PEAR_PHP_BIN')) { if (@is_executable($php)) { return $php; } } if (@is_executable($php = \PHP_BINDIR.('\\' === \DIRECTORY_SEPARATOR ? '\\php.exe' : '/php'))) { return $php; } $dirs = [\PHP_BINDIR]; if ('\\' === \DIRECTORY_SEPARATOR) { $dirs[] = 'C:\xampp\php\\'; } return $this->executableFinder->find('php', false, $dirs); } /** * Finds the PHP executable arguments. * * @return array The PHP executable arguments */ public function findArguments() { $arguments = []; if (\defined('HHVM_VERSION')) { $arguments[] = '--php'; } elseif ('phpdbg' === \PHP_SAPI) { $arguments[] = '-qrr'; } return $arguments; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; /** * Generic executable finder. * * @author Fabien Potencier * @author Johannes M. Schmitt */ class ExecutableFinder { private $suffixes = ['.exe', '.bat', '.cmd', '.com']; /** * Replaces default suffixes of executable. */ public function setSuffixes(array $suffixes) { $this->suffixes = $suffixes; } /** * Adds new possible suffix to check for executable. * * @param string $suffix */ public function addSuffix($suffix) { $this->suffixes[] = $suffix; } /** * Finds an executable by name. * * @param string $name The executable name (without the extension) * @param string|null $default The default to return if no executable is found * @param array $extraDirs Additional dirs to check into * * @return string|null The executable path or default value */ public function find($name, $default = null, array $extraDirs = []) { if (ini_get('open_basedir')) { $searchPath = array_merge(explode(\PATH_SEPARATOR, ini_get('open_basedir')), $extraDirs); $dirs = []; foreach ($searchPath as $path) { // Silencing against https://bugs.php.net/69240 if (@is_dir($path)) { $dirs[] = $path; } else { if (basename($path) == $name && @is_executable($path)) { return $path; } } } } else { $dirs = array_merge( explode(\PATH_SEPARATOR, getenv('PATH') ?: getenv('Path')), $extraDirs ); } $suffixes = ['']; if ('\\' === \DIRECTORY_SEPARATOR) { $pathExt = getenv('PATHEXT'); $suffixes = array_merge($pathExt ? explode(\PATH_SEPARATOR, $pathExt) : $this->suffixes, $suffixes); } foreach ($suffixes as $suffix) { foreach ($dirs as $dir) { if (@is_file($file = $dir.\DIRECTORY_SEPARATOR.$name.$suffix) && ('\\' === \DIRECTORY_SEPARATOR || @is_executable($file))) { return $file; } } } return $default; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; /** * InvalidArgumentException for the Process Component. * * @author Romain Neutron */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; /** * LogicException for the Process Component. * * @author Romain Neutron */ class LogicException extends \LogicException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; /** * RuntimeException for the Process Component. * * @author Johannes M. Schmitt */ class RuntimeException extends \RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; /** * Marker Interface for the Process Component. * * @author Johannes M. Schmitt */ interface ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; use Symfony\Component\Process\Process; /** * Exception that is thrown when a process times out. * * @author Johannes M. Schmitt */ class ProcessTimedOutException extends RuntimeException { const TYPE_GENERAL = 1; const TYPE_IDLE = 2; private $process; private $timeoutType; public function __construct(Process $process, $timeoutType) { $this->process = $process; $this->timeoutType = $timeoutType; parent::__construct(sprintf( 'The process "%s" exceeded the timeout of %s seconds.', $process->getCommandLine(), $this->getExceededTimeout() )); } public function getProcess() { return $this->process; } public function isGeneralTimeout() { return self::TYPE_GENERAL === $this->timeoutType; } public function isIdleTimeout() { return self::TYPE_IDLE === $this->timeoutType; } public function getExceededTimeout() { switch ($this->timeoutType) { case self::TYPE_GENERAL: return $this->process->getTimeout(); case self::TYPE_IDLE: return $this->process->getIdleTimeout(); default: throw new \LogicException(sprintf('Unknown timeout type "%d".', $this->timeoutType)); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process\Exception; use Symfony\Component\Process\Process; /** * Exception for failed processes. * * @author Johannes M. Schmitt */ class ProcessFailedException extends RuntimeException { private $process; public function __construct(Process $process) { if ($process->isSuccessful()) { throw new InvalidArgumentException('Expected a failed process, but the given process was successful.'); } $error = sprintf('The command "%s" failed.'."\n\nExit Code: %s(%s)\n\nWorking directory: %s", $process->getCommandLine(), $process->getExitCode(), $process->getExitCodeText(), $process->getWorkingDirectory() ); if (!$process->isOutputDisabled()) { $error .= sprintf("\n\nOutput:\n================\n%s\n\nError Output:\n================\n%s", $process->getOutput(), $process->getErrorOutput() ); } parent::__construct($error); $this->process = $process; } public function getProcess() { return $this->process; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; @trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use the Process class instead.', ProcessBuilder::class), \E_USER_DEPRECATED); use Symfony\Component\Process\Exception\InvalidArgumentException; use Symfony\Component\Process\Exception\LogicException; /** * @author Kris Wallsmith * * @deprecated since version 3.4, to be removed in 4.0. Use the Process class instead. */ class ProcessBuilder { private $arguments; private $cwd; private $env = []; private $input; private $timeout = 60; private $options; private $inheritEnv = true; private $prefix = []; private $outputDisabled = false; /** * @param string[] $arguments An array of arguments */ public function __construct(array $arguments = []) { $this->arguments = $arguments; } /** * Creates a process builder instance. * * @param string[] $arguments An array of arguments * * @return static */ public static function create(array $arguments = []) { return new static($arguments); } /** * Adds an unescaped argument to the command string. * * @param string $argument A command argument * * @return $this */ public function add($argument) { $this->arguments[] = $argument; return $this; } /** * Adds a prefix to the command string. * * The prefix is preserved when resetting arguments. * * @param string|array $prefix A command prefix or an array of command prefixes * * @return $this */ public function setPrefix($prefix) { $this->prefix = \is_array($prefix) ? $prefix : [$prefix]; return $this; } /** * Sets the arguments of the process. * * Arguments must not be escaped. * Previous arguments are removed. * * @param string[] $arguments * * @return $this */ public function setArguments(array $arguments) { $this->arguments = $arguments; return $this; } /** * Sets the working directory. * * @param string|null $cwd The working directory * * @return $this */ public function setWorkingDirectory($cwd) { $this->cwd = $cwd; return $this; } /** * Sets whether environment variables will be inherited or not. * * @param bool $inheritEnv * * @return $this */ public function inheritEnvironmentVariables($inheritEnv = true) { $this->inheritEnv = $inheritEnv; return $this; } /** * Sets an environment variable. * * Setting a variable overrides its previous value. Use `null` to unset a * defined environment variable. * * @param string $name The variable name * @param string|null $value The variable value * * @return $this */ public function setEnv($name, $value) { $this->env[$name] = $value; return $this; } /** * Adds a set of environment variables. * * Already existing environment variables with the same name will be * overridden by the new values passed to this method. Pass `null` to unset * a variable. * * @param array $variables The variables * * @return $this */ public function addEnvironmentVariables(array $variables) { $this->env = array_replace($this->env, $variables); return $this; } /** * Sets the input of the process. * * @param resource|string|int|float|bool|\Traversable|null $input The input content * * @return $this * * @throws InvalidArgumentException In case the argument is invalid */ public function setInput($input) { $this->input = ProcessUtils::validateInput(__METHOD__, $input); return $this; } /** * Sets the process timeout. * * To disable the timeout, set this value to null. * * @param float|null $timeout * * @return $this * * @throws InvalidArgumentException */ public function setTimeout($timeout) { if (null === $timeout) { $this->timeout = null; return $this; } $timeout = (float) $timeout; if ($timeout < 0) { throw new InvalidArgumentException('The timeout value must be a valid positive integer or float number.'); } $this->timeout = $timeout; return $this; } /** * Adds a proc_open option. * * @param string $name The option name * @param string $value The option value * * @return $this */ public function setOption($name, $value) { $this->options[$name] = $value; return $this; } /** * Disables fetching output and error output from the underlying process. * * @return $this */ public function disableOutput() { $this->outputDisabled = true; return $this; } /** * Enables fetching output and error output from the underlying process. * * @return $this */ public function enableOutput() { $this->outputDisabled = false; return $this; } /** * Creates a Process instance and returns it. * * @return Process * * @throws LogicException In case no arguments have been provided */ public function getProcess() { if (0 === \count($this->prefix) && 0 === \count($this->arguments)) { throw new LogicException('You must add() command arguments before calling getProcess().'); } $arguments = array_merge($this->prefix, $this->arguments); $process = new Process($arguments, $this->cwd, $this->env, $this->input, $this->timeout, $this->options); // to preserve the BC with symfony <3.3, we convert the array structure // to a string structure to avoid the prefixing with the exec command $process->setCommandLine($process->getCommandLine()); if ($this->inheritEnv) { $process->inheritEnvironmentVariables(); } if ($this->outputDisabled) { $process->disableOutput(); } return $process; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Process; use Symfony\Component\Process\Exception\RuntimeException; /** * PhpProcess runs a PHP script in an independent process. * * $p = new PhpProcess(''); * $p->run(); * print $p->getOutput()."\n"; * * @author Fabien Potencier */ class PhpProcess extends Process { /** * @param string $script The PHP script to run (as a string) * @param string|null $cwd The working directory or null to use the working dir of the current PHP process * @param array|null $env The environment variables or null to use the same environment as the current PHP process * @param int $timeout The timeout in seconds * @param array $options An array of options for proc_open */ public function __construct($script, $cwd = null, array $env = null, $timeout = 60, array $options = null) { $executableFinder = new PhpExecutableFinder(); if (false === $php = $executableFinder->find(false)) { $php = null; } else { $php = array_merge([$php], $executableFinder->findArguments()); } if ('phpdbg' === \PHP_SAPI) { $file = tempnam(sys_get_temp_dir(), 'dbg'); file_put_contents($file, $script); register_shutdown_function('unlink', $file); $php[] = $file; $script = null; } if (null !== $options) { @trigger_error(sprintf('The $options parameter of the %s constructor is deprecated since Symfony 3.3 and will be removed in 4.0.', __CLASS__), \E_USER_DEPRECATED); } parent::__construct($php, $cwd, $env, $script, $timeout, $options); } /** * Sets the path to the PHP binary to use. */ public function setPhpBinary($php) { $this->setCommandLine($php); } /** * {@inheritdoc} */ public function start(callable $callback = null/*, array $env = []*/) { if (null === $this->getCommandLine()) { throw new RuntimeException('Unable to find the PHP executable.'); } $env = 1 < \func_num_args() ? func_get_arg(1) : null; parent::start($callback, $env); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Ctype as p; if (!function_exists('ctype_alnum')) { function ctype_alnum($input) { return p\Ctype::ctype_alnum($input); } } if (!function_exists('ctype_alpha')) { function ctype_alpha($input) { return p\Ctype::ctype_alpha($input); } } if (!function_exists('ctype_cntrl')) { function ctype_cntrl($input) { return p\Ctype::ctype_cntrl($input); } } if (!function_exists('ctype_digit')) { function ctype_digit($input) { return p\Ctype::ctype_digit($input); } } if (!function_exists('ctype_graph')) { function ctype_graph($input) { return p\Ctype::ctype_graph($input); } } if (!function_exists('ctype_lower')) { function ctype_lower($input) { return p\Ctype::ctype_lower($input); } } if (!function_exists('ctype_print')) { function ctype_print($input) { return p\Ctype::ctype_print($input); } } if (!function_exists('ctype_punct')) { function ctype_punct($input) { return p\Ctype::ctype_punct($input); } } if (!function_exists('ctype_space')) { function ctype_space($input) { return p\Ctype::ctype_space($input); } } if (!function_exists('ctype_upper')) { function ctype_upper($input) { return p\Ctype::ctype_upper($input); } } if (!function_exists('ctype_xdigit')) { function ctype_xdigit($input) { return p\Ctype::ctype_xdigit($input); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Ctype; /** * Ctype implementation through regex. * * @internal * * @author Gert de Pagter */ final class Ctype { /** * Returns TRUE if every character in text is either a letter or a digit, FALSE otherwise. * * @see https://php.net/ctype-alnum * * @param string|int $text * * @return bool */ public static function ctype_alnum($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z0-9]/', $text); } /** * Returns TRUE if every character in text is a letter, FALSE otherwise. * * @see https://php.net/ctype-alpha * * @param string|int $text * * @return bool */ public static function ctype_alpha($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Za-z]/', $text); } /** * Returns TRUE if every character in text is a control character from the current locale, FALSE otherwise. * * @see https://php.net/ctype-cntrl * * @param string|int $text * * @return bool */ public static function ctype_cntrl($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^\x00-\x1f\x7f]/', $text); } /** * Returns TRUE if every character in the string text is a decimal digit, FALSE otherwise. * * @see https://php.net/ctype-digit * * @param string|int $text * * @return bool */ public static function ctype_digit($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^0-9]/', $text); } /** * Returns TRUE if every character in text is printable and actually creates visible output (no white space), FALSE otherwise. * * @see https://php.net/ctype-graph * * @param string|int $text * * @return bool */ public static function ctype_graph($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^!-~]/', $text); } /** * Returns TRUE if every character in text is a lowercase letter. * * @see https://php.net/ctype-lower * * @param string|int $text * * @return bool */ public static function ctype_lower($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^a-z]/', $text); } /** * Returns TRUE if every character in text will actually create output (including blanks). Returns FALSE if text contains control characters or characters that do not have any output or control function at all. * * @see https://php.net/ctype-print * * @param string|int $text * * @return bool */ public static function ctype_print($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^ -~]/', $text); } /** * Returns TRUE if every character in text is printable, but neither letter, digit or blank, FALSE otherwise. * * @see https://php.net/ctype-punct * * @param string|int $text * * @return bool */ public static function ctype_punct($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^!-\/\:-@\[-`\{-~]/', $text); } /** * Returns TRUE if every character in text creates some sort of white space, FALSE otherwise. Besides the blank character this also includes tab, vertical tab, line feed, carriage return and form feed characters. * * @see https://php.net/ctype-space * * @param string|int $text * * @return bool */ public static function ctype_space($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^\s]/', $text); } /** * Returns TRUE if every character in text is an uppercase letter. * * @see https://php.net/ctype-upper * * @param string|int $text * * @return bool */ public static function ctype_upper($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Z]/', $text); } /** * Returns TRUE if every character in text is a hexadecimal 'digit', that is a decimal digit or a character from [A-Fa-f] , FALSE otherwise. * * @see https://php.net/ctype-xdigit * * @param string|int $text * * @return bool */ public static function ctype_xdigit($text) { $text = self::convert_int_to_char_for_ctype($text); return \is_string($text) && '' !== $text && !preg_match('/[^A-Fa-f0-9]/', $text); } /** * Converts integers to their char versions according to normal ctype behaviour, if needed. * * If an integer between -128 and 255 inclusive is provided, * it is interpreted as the ASCII value of a single character * (negative values have 256 added in order to allow characters in the Extended ASCII range). * Any other integer is interpreted as a string containing the decimal digits of the integer. * * @param string|int $int * * @return mixed */ private static function convert_int_to_char_for_ctype($int) { if (!\is_int($int)) { return $int; } if ($int < -128 || $int > 255) { return (string) $int; } if ($int < 0) { $int += 256; } return \chr($int); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem; use Symfony\Component\Filesystem\Exception\FileNotFoundException; use Symfony\Component\Filesystem\Exception\IOException; /** * Provides basic utility to manipulate the file system. * * @author Fabien Potencier */ class Filesystem { private static $lastError; /** * Copies a file. * * If the target file is older than the origin file, it's always overwritten. * If the target file is newer, it is overwritten only when the * $overwriteNewerFiles option is set to true. * * @param string $originFile The original filename * @param string $targetFile The target filename * @param bool $overwriteNewerFiles If true, target files newer than origin files are overwritten * * @throws FileNotFoundException When originFile doesn't exist * @throws IOException When copy fails */ public function copy($originFile, $targetFile, $overwriteNewerFiles = false) { $originIsLocal = stream_is_local($originFile) || 0 === stripos($originFile, 'file://'); if ($originIsLocal && !is_file($originFile)) { throw new FileNotFoundException(sprintf('Failed to copy "%s" because file does not exist.', $originFile), 0, null, $originFile); } $this->mkdir(\dirname($targetFile)); $doCopy = true; if (!$overwriteNewerFiles && null === parse_url($originFile, \PHP_URL_HOST) && is_file($targetFile)) { $doCopy = filemtime($originFile) > filemtime($targetFile); } if ($doCopy) { // https://bugs.php.net/64634 if (false === $source = @fopen($originFile, 'r')) { throw new IOException(sprintf('Failed to copy "%s" to "%s" because source file could not be opened for reading.', $originFile, $targetFile), 0, null, $originFile); } // Stream context created to allow files overwrite when using FTP stream wrapper - disabled by default if (false === $target = @fopen($targetFile, 'w', null, stream_context_create(['ftp' => ['overwrite' => true]]))) { throw new IOException(sprintf('Failed to copy "%s" to "%s" because target file could not be opened for writing.', $originFile, $targetFile), 0, null, $originFile); } $bytesCopied = stream_copy_to_stream($source, $target); fclose($source); fclose($target); unset($source, $target); if (!is_file($targetFile)) { throw new IOException(sprintf('Failed to copy "%s" to "%s".', $originFile, $targetFile), 0, null, $originFile); } if ($originIsLocal) { // Like `cp`, preserve executable permission bits @chmod($targetFile, fileperms($targetFile) | (fileperms($originFile) & 0111)); if ($bytesCopied !== $bytesOrigin = filesize($originFile)) { throw new IOException(sprintf('Failed to copy the whole content of "%s" to "%s" (%g of %g bytes copied).', $originFile, $targetFile, $bytesCopied, $bytesOrigin), 0, null, $originFile); } } } } /** * Creates a directory recursively. * * @param string|iterable $dirs The directory path * @param int $mode The directory mode * * @throws IOException On any directory creation failure */ public function mkdir($dirs, $mode = 0777) { foreach ($this->toIterable($dirs) as $dir) { if (is_dir($dir)) { continue; } if (!self::box('mkdir', $dir, $mode, true)) { if (!is_dir($dir)) { // The directory was not created by a concurrent process. Let's throw an exception with a developer friendly error message if we have one if (self::$lastError) { throw new IOException(sprintf('Failed to create "%s": ', $dir).self::$lastError, 0, null, $dir); } throw new IOException(sprintf('Failed to create "%s".', $dir), 0, null, $dir); } } } } /** * Checks the existence of files or directories. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to check * * @return bool true if the file exists, false otherwise */ public function exists($files) { $maxPathLength = \PHP_MAXPATHLEN - 2; foreach ($this->toIterable($files) as $file) { if (\strlen($file) > $maxPathLength) { throw new IOException(sprintf('Could not check if file exist because path length exceeds %d characters.', $maxPathLength), 0, null, $file); } if (!file_exists($file)) { return false; } } return true; } /** * Sets access and modification time of file. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to create * @param int|null $time The touch time as a Unix timestamp, if not supplied the current system time is used * @param int|null $atime The access time as a Unix timestamp, if not supplied the current system time is used * * @throws IOException When touch fails */ public function touch($files, $time = null, $atime = null) { foreach ($this->toIterable($files) as $file) { $touch = $time ? @touch($file, $time, $atime) : @touch($file); if (true !== $touch) { throw new IOException(sprintf('Failed to touch "%s".', $file), 0, null, $file); } } } /** * Removes files or directories. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to remove * * @throws IOException When removal fails */ public function remove($files) { if ($files instanceof \Traversable) { $files = iterator_to_array($files, false); } elseif (!\is_array($files)) { $files = [$files]; } $files = array_reverse($files); foreach ($files as $file) { if (is_link($file)) { // See https://bugs.php.net/52176 if (!(self::box('unlink', $file) || '\\' !== \DIRECTORY_SEPARATOR || self::box('rmdir', $file)) && file_exists($file)) { throw new IOException(sprintf('Failed to remove symlink "%s": ', $file).self::$lastError); } } elseif (is_dir($file)) { $this->remove(new \FilesystemIterator($file, \FilesystemIterator::CURRENT_AS_PATHNAME | \FilesystemIterator::SKIP_DOTS)); if (!self::box('rmdir', $file) && file_exists($file)) { throw new IOException(sprintf('Failed to remove directory "%s": ', $file).self::$lastError); } } elseif (!self::box('unlink', $file) && (false !== strpos(self::$lastError, 'Permission denied') || file_exists($file))) { throw new IOException(sprintf('Failed to remove file "%s": ', $file).self::$lastError); } } } /** * Change mode for an array of files or directories. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change mode * @param int $mode The new mode (octal) * @param int $umask The mode mask (octal) * @param bool $recursive Whether change the mod recursively or not * * @throws IOException When the change fails */ public function chmod($files, $mode, $umask = 0000, $recursive = false) { foreach ($this->toIterable($files) as $file) { if ((\PHP_VERSION_ID < 80000 || \is_int($mode)) && true !== @chmod($file, $mode & ~$umask)) { throw new IOException(sprintf('Failed to chmod file "%s".', $file), 0, null, $file); } if ($recursive && is_dir($file) && !is_link($file)) { $this->chmod(new \FilesystemIterator($file), $mode, $umask, true); } } } /** * Change the owner of an array of files or directories. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change owner * @param string|int $user A user name or number * @param bool $recursive Whether change the owner recursively or not * * @throws IOException When the change fails */ public function chown($files, $user, $recursive = false) { foreach ($this->toIterable($files) as $file) { if ($recursive && is_dir($file) && !is_link($file)) { $this->chown(new \FilesystemIterator($file), $user, true); } if (is_link($file) && \function_exists('lchown')) { if (true !== @lchown($file, $user)) { throw new IOException(sprintf('Failed to chown file "%s".', $file), 0, null, $file); } } else { if (true !== @chown($file, $user)) { throw new IOException(sprintf('Failed to chown file "%s".', $file), 0, null, $file); } } } } /** * Change the group of an array of files or directories. * * @param string|iterable $files A filename, an array of files, or a \Traversable instance to change group * @param string|int $group A group name or number * @param bool $recursive Whether change the group recursively or not * * @throws IOException When the change fails */ public function chgrp($files, $group, $recursive = false) { foreach ($this->toIterable($files) as $file) { if ($recursive && is_dir($file) && !is_link($file)) { $this->chgrp(new \FilesystemIterator($file), $group, true); } if (is_link($file) && \function_exists('lchgrp')) { if (true !== @lchgrp($file, $group) || (\defined('HHVM_VERSION') && !posix_getgrnam($group))) { throw new IOException(sprintf('Failed to chgrp file "%s".', $file), 0, null, $file); } } else { if (true !== @chgrp($file, $group)) { throw new IOException(sprintf('Failed to chgrp file "%s".', $file), 0, null, $file); } } } } /** * Renames a file or a directory. * * @param string $origin The origin filename or directory * @param string $target The new filename or directory * @param bool $overwrite Whether to overwrite the target if it already exists * * @throws IOException When target file or directory already exists * @throws IOException When origin cannot be renamed */ public function rename($origin, $target, $overwrite = false) { // we check that target does not exist if (!$overwrite && $this->isReadable($target)) { throw new IOException(sprintf('Cannot rename because the target "%s" already exists.', $target), 0, null, $target); } if (true !== @rename($origin, $target)) { if (is_dir($origin)) { // See https://bugs.php.net/54097 & https://php.net/rename#113943 $this->mirror($origin, $target, null, ['override' => $overwrite, 'delete' => $overwrite]); $this->remove($origin); return; } throw new IOException(sprintf('Cannot rename "%s" to "%s".', $origin, $target), 0, null, $target); } } /** * Tells whether a file exists and is readable. * * @param string $filename Path to the file * * @return bool * * @throws IOException When windows path is longer than 258 characters */ private function isReadable($filename) { $maxPathLength = \PHP_MAXPATHLEN - 2; if (\strlen($filename) > $maxPathLength) { throw new IOException(sprintf('Could not check if file is readable because path length exceeds %d characters.', $maxPathLength), 0, null, $filename); } return is_readable($filename); } /** * Creates a symbolic link or copy a directory. * * @param string $originDir The origin directory path * @param string $targetDir The symbolic link name * @param bool $copyOnWindows Whether to copy files if on Windows * * @throws IOException When symlink fails */ public function symlink($originDir, $targetDir, $copyOnWindows = false) { if ('\\' === \DIRECTORY_SEPARATOR) { $originDir = strtr($originDir, '/', '\\'); $targetDir = strtr($targetDir, '/', '\\'); if ($copyOnWindows) { $this->mirror($originDir, $targetDir); return; } } $this->mkdir(\dirname($targetDir)); if (is_link($targetDir)) { if (readlink($targetDir) === $originDir) { return; } $this->remove($targetDir); } if (!self::box('symlink', $originDir, $targetDir)) { $this->linkException($originDir, $targetDir, 'symbolic'); } } /** * Creates a hard link, or several hard links to a file. * * @param string $originFile The original file * @param string|string[] $targetFiles The target file(s) * * @throws FileNotFoundException When original file is missing or not a file * @throws IOException When link fails, including if link already exists */ public function hardlink($originFile, $targetFiles) { if (!$this->exists($originFile)) { throw new FileNotFoundException(null, 0, null, $originFile); } if (!is_file($originFile)) { throw new FileNotFoundException(sprintf('Origin file "%s" is not a file.', $originFile)); } foreach ($this->toIterable($targetFiles) as $targetFile) { if (is_file($targetFile)) { if (fileinode($originFile) === fileinode($targetFile)) { continue; } $this->remove($targetFile); } if (!self::box('link', $originFile, $targetFile)) { $this->linkException($originFile, $targetFile, 'hard'); } } } /** * @param string $origin * @param string $target * @param string $linkType Name of the link type, typically 'symbolic' or 'hard' */ private function linkException($origin, $target, $linkType) { if (self::$lastError) { if ('\\' === \DIRECTORY_SEPARATOR && false !== strpos(self::$lastError, 'error code(1314)')) { throw new IOException(sprintf('Unable to create "%s" link due to error code 1314: \'A required privilege is not held by the client\'. Do you have the required Administrator-rights?', $linkType), 0, null, $target); } } throw new IOException(sprintf('Failed to create "%s" link from "%s" to "%s".', $linkType, $origin, $target), 0, null, $target); } /** * Resolves links in paths. * * With $canonicalize = false (default) * - if $path does not exist or is not a link, returns null * - if $path is a link, returns the next direct target of the link without considering the existence of the target * * With $canonicalize = true * - if $path does not exist, returns null * - if $path exists, returns its absolute fully resolved final version * * @param string $path A filesystem path * @param bool $canonicalize Whether or not to return a canonicalized path * * @return string|null */ public function readlink($path, $canonicalize = false) { if (!$canonicalize && !is_link($path)) { return null; } if ($canonicalize) { if (!$this->exists($path)) { return null; } if ('\\' === \DIRECTORY_SEPARATOR) { $path = readlink($path); } return realpath($path); } if ('\\' === \DIRECTORY_SEPARATOR) { return realpath($path); } return readlink($path); } /** * Given an existing path, convert it to a path relative to a given starting path. * * @param string $endPath Absolute path of target * @param string $startPath Absolute path where traversal begins * * @return string Path of target relative to starting path */ public function makePathRelative($endPath, $startPath) { if (!$this->isAbsolutePath($endPath) || !$this->isAbsolutePath($startPath)) { @trigger_error(sprintf('Support for passing relative paths to %s() is deprecated since Symfony 3.4 and will be removed in 4.0.', __METHOD__), \E_USER_DEPRECATED); } // Normalize separators on Windows if ('\\' === \DIRECTORY_SEPARATOR) { $endPath = str_replace('\\', '/', $endPath); $startPath = str_replace('\\', '/', $startPath); } $splitDriveLetter = function ($path) { return (\strlen($path) > 2 && ':' === $path[1] && '/' === $path[2] && ctype_alpha($path[0])) ? [substr($path, 2), strtoupper($path[0])] : [$path, null]; }; $splitPath = function ($path, $absolute) { $result = []; foreach (explode('/', trim($path, '/')) as $segment) { if ('..' === $segment && ($absolute || \count($result))) { array_pop($result); } elseif ('.' !== $segment && '' !== $segment) { $result[] = $segment; } } return $result; }; list($endPath, $endDriveLetter) = $splitDriveLetter($endPath); list($startPath, $startDriveLetter) = $splitDriveLetter($startPath); $startPathArr = $splitPath($startPath, static::isAbsolutePath($startPath)); $endPathArr = $splitPath($endPath, static::isAbsolutePath($endPath)); if ($endDriveLetter && $startDriveLetter && $endDriveLetter != $startDriveLetter) { // End path is on another drive, so no relative path exists return $endDriveLetter.':/'.($endPathArr ? implode('/', $endPathArr).'/' : ''); } // Find for which directory the common path stops $index = 0; while (isset($startPathArr[$index]) && isset($endPathArr[$index]) && $startPathArr[$index] === $endPathArr[$index]) { ++$index; } // Determine how deep the start path is relative to the common path (ie, "web/bundles" = 2 levels) if (1 === \count($startPathArr) && '' === $startPathArr[0]) { $depth = 0; } else { $depth = \count($startPathArr) - $index; } // Repeated "../" for each level need to reach the common path $traverser = str_repeat('../', $depth); $endPathRemainder = implode('/', \array_slice($endPathArr, $index)); // Construct $endPath from traversing to the common path, then to the remaining $endPath $relativePath = $traverser.('' !== $endPathRemainder ? $endPathRemainder.'/' : ''); return '' === $relativePath ? './' : $relativePath; } /** * Mirrors a directory to another. * * Copies files and directories from the origin directory into the target directory. By default: * * - existing files in the target directory will be overwritten, except if they are newer (see the `override` option) * - files in the target directory that do not exist in the source directory will not be deleted (see the `delete` option) * * @param string $originDir The origin directory * @param string $targetDir The target directory * @param \Traversable|null $iterator Iterator that filters which files and directories to copy, if null a recursive iterator is created * @param array $options An array of boolean options * Valid options are: * - $options['override'] If true, target files newer than origin files are overwritten (see copy(), defaults to false) * - $options['copy_on_windows'] Whether to copy files instead of links on Windows (see symlink(), defaults to false) * - $options['delete'] Whether to delete files that are not in the source directory (defaults to false) * * @throws IOException When file type is unknown */ public function mirror($originDir, $targetDir, \Traversable $iterator = null, $options = []) { $targetDir = rtrim($targetDir, '/\\'); $originDir = rtrim($originDir, '/\\'); $originDirLen = \strlen($originDir); // Iterate in destination folder to remove obsolete entries if ($this->exists($targetDir) && isset($options['delete']) && $options['delete']) { $deleteIterator = $iterator; if (null === $deleteIterator) { $flags = \FilesystemIterator::SKIP_DOTS; $deleteIterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($targetDir, $flags), \RecursiveIteratorIterator::CHILD_FIRST); } $targetDirLen = \strlen($targetDir); foreach ($deleteIterator as $file) { $origin = $originDir.substr($file->getPathname(), $targetDirLen); if (!$this->exists($origin)) { $this->remove($file); } } } $copyOnWindows = false; if (isset($options['copy_on_windows'])) { $copyOnWindows = $options['copy_on_windows']; } if (null === $iterator) { $flags = $copyOnWindows ? \FilesystemIterator::SKIP_DOTS | \FilesystemIterator::FOLLOW_SYMLINKS : \FilesystemIterator::SKIP_DOTS; $iterator = new \RecursiveIteratorIterator(new \RecursiveDirectoryIterator($originDir, $flags), \RecursiveIteratorIterator::SELF_FIRST); } if ($this->exists($originDir)) { $this->mkdir($targetDir); } foreach ($iterator as $file) { $target = $targetDir.substr($file->getPathname(), $originDirLen); if ($copyOnWindows) { if (is_file($file)) { $this->copy($file, $target, isset($options['override']) ? $options['override'] : false); } elseif (is_dir($file)) { $this->mkdir($target); } else { throw new IOException(sprintf('Unable to guess "%s" file type.', $file), 0, null, $file); } } else { if (is_link($file)) { $this->symlink($file->getLinkTarget(), $target); } elseif (is_dir($file)) { $this->mkdir($target); } elseif (is_file($file)) { $this->copy($file, $target, isset($options['override']) ? $options['override'] : false); } else { throw new IOException(sprintf('Unable to guess "%s" file type.', $file), 0, null, $file); } } } } /** * Returns whether the file path is an absolute path. * * @param string $file A file path * * @return bool */ public function isAbsolutePath($file) { return '' !== (string) $file && (strspn($file, '/\\', 0, 1) || (\strlen($file) > 3 && ctype_alpha($file[0]) && ':' === $file[1] && strspn($file, '/\\', 2, 1) ) || null !== parse_url($file, \PHP_URL_SCHEME) ); } /** * Creates a temporary file with support for custom stream wrappers. * * @param string $dir The directory where the temporary filename will be created * @param string $prefix The prefix of the generated temporary filename * Note: Windows uses only the first three characters of prefix * * @return string The new temporary filename (with path), or throw an exception on failure */ public function tempnam($dir, $prefix) { list($scheme, $hierarchy) = $this->getSchemeAndHierarchy($dir); // If no scheme or scheme is "file" or "gs" (Google Cloud) create temp file in local filesystem if (null === $scheme || 'file' === $scheme || 'gs' === $scheme) { $tmpFile = @tempnam($hierarchy, $prefix); // If tempnam failed or no scheme return the filename otherwise prepend the scheme if (false !== $tmpFile) { if (null !== $scheme && 'gs' !== $scheme) { return $scheme.'://'.$tmpFile; } return $tmpFile; } throw new IOException('A temporary file could not be created.'); } // Loop until we create a valid temp file or have reached 10 attempts for ($i = 0; $i < 10; ++$i) { // Create a unique filename $tmpFile = $dir.'/'.$prefix.uniqid(mt_rand(), true); // Use fopen instead of file_exists as some streams do not support stat // Use mode 'x+' to atomically check existence and create to avoid a TOCTOU vulnerability $handle = @fopen($tmpFile, 'x+'); // If unsuccessful restart the loop if (false === $handle) { continue; } // Close the file if it was successfully opened @fclose($handle); return $tmpFile; } throw new IOException('A temporary file could not be created.'); } /** * Atomically dumps content into a file. * * @param string $filename The file to be written to * @param string $content The data to write into the file * * @throws IOException if the file cannot be written to */ public function dumpFile($filename, $content) { $dir = \dirname($filename); if (!is_dir($dir)) { $this->mkdir($dir); } if (!is_writable($dir)) { throw new IOException(sprintf('Unable to write to the "%s" directory.', $dir), 0, null, $dir); } // Will create a temp file with 0600 access rights // when the filesystem supports chmod. $tmpFile = $this->tempnam($dir, basename($filename)); if (false === @file_put_contents($tmpFile, $content)) { throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename); } @chmod($tmpFile, file_exists($filename) ? fileperms($filename) : 0666 & ~umask()); $this->rename($tmpFile, $filename, true); } /** * Appends content to an existing file. * * @param string $filename The file to which to append content * @param string $content The content to append * * @throws IOException If the file is not writable */ public function appendToFile($filename, $content) { $dir = \dirname($filename); if (!is_dir($dir)) { $this->mkdir($dir); } if (!is_writable($dir)) { throw new IOException(sprintf('Unable to write to the "%s" directory.', $dir), 0, null, $dir); } if (false === @file_put_contents($filename, $content, \FILE_APPEND)) { throw new IOException(sprintf('Failed to write file "%s".', $filename), 0, null, $filename); } } /** * @param mixed $files * * @return array|\Traversable */ private function toIterable($files) { return \is_array($files) || $files instanceof \Traversable ? $files : [$files]; } /** * Gets a 2-tuple of scheme (may be null) and hierarchical part of a filename (e.g. file:///tmp -> [file, tmp]). * * @param string $filename The filename to be parsed * * @return array The filename scheme and hierarchical part */ private function getSchemeAndHierarchy($filename) { $components = explode('://', $filename, 2); return 2 === \count($components) ? [$components[0], $components[1]] : [null, $components[0]]; } /** * @param callable $func * * @return mixed */ private static function box($func) { self::$lastError = null; set_error_handler(__CLASS__.'::handleError'); try { $result = \call_user_func_array($func, \array_slice(\func_get_args(), 1)); restore_error_handler(); return $result; } catch (\Throwable $e) { } catch (\Exception $e) { } restore_error_handler(); throw $e; } /** * @internal */ public static function handleError($type, $msg) { self::$lastError = $msg; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem; use Symfony\Component\Filesystem\Exception\IOException; use Symfony\Component\Lock\Store\FlockStore; use Symfony\Component\Lock\Store\SemaphoreStore; @trigger_error(sprintf('The %s class is deprecated since Symfony 3.4 and will be removed in 4.0. Use %s or %s instead.', LockHandler::class, SemaphoreStore::class, FlockStore::class), \E_USER_DEPRECATED); /** * LockHandler class provides a simple abstraction to lock anything by means of * a file lock. * * A locked file is created based on the lock name when calling lock(). Other * lock handlers will not be able to lock the same name until it is released * (explicitly by calling release() or implicitly when the instance holding the * lock is destroyed). * * @author Grégoire Pineau * @author Romain Neutron * @author Nicolas Grekas * * @deprecated since version 3.4, to be removed in 4.0. Use Symfony\Component\Lock\Store\SemaphoreStore or Symfony\Component\Lock\Store\FlockStore instead. */ class LockHandler { private $file; private $handle; /** * @param string $name The lock name * @param string|null $lockPath The directory to store the lock. Default values will use temporary directory * * @throws IOException If the lock directory could not be created or is not writable */ public function __construct($name, $lockPath = null) { $lockPath = $lockPath ?: sys_get_temp_dir(); if (!is_dir($lockPath)) { $fs = new Filesystem(); $fs->mkdir($lockPath); } if (!is_writable($lockPath)) { throw new IOException(sprintf('The directory "%s" is not writable.', $lockPath), 0, null, $lockPath); } $this->file = sprintf('%s/sf.%s.%s.lock', $lockPath, preg_replace('/[^a-z0-9\._-]+/i', '-', $name), hash('sha256', $name)); } /** * Lock the resource. * * @param bool $blocking Wait until the lock is released * * @return bool Returns true if the lock was acquired, false otherwise * * @throws IOException If the lock file could not be created or opened */ public function lock($blocking = false) { if ($this->handle) { return true; } $error = null; // Silence error reporting set_error_handler(function ($errno, $msg) use (&$error) { $error = $msg; }); if (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { if ($this->handle = fopen($this->file, 'x')) { chmod($this->file, 0666); } elseif (!$this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r')) { usleep(100); // Give some time for chmod() to complete $this->handle = fopen($this->file, 'r+') ?: fopen($this->file, 'r'); } } restore_error_handler(); if (!$this->handle) { throw new IOException($error, 0, null, $this->file); } // On Windows, even if PHP doc says the contrary, LOCK_NB works, see // https://bugs.php.net/54129 if (!flock($this->handle, \LOCK_EX | ($blocking ? 0 : \LOCK_NB))) { fclose($this->handle); $this->handle = null; return false; } return true; } /** * Release the resource. */ public function release() { if ($this->handle) { flock($this->handle, \LOCK_UN | \LOCK_NB); fclose($this->handle); $this->handle = null; } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem\Exception; /** * IOException interface for file and input/output stream related exceptions thrown by the component. * * @author Christian Gärtner */ interface IOExceptionInterface extends ExceptionInterface { /** * Returns the associated path for the exception. * * @return string|null The path */ public function getPath(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem\Exception; /** * Exception class thrown when a file couldn't be found. * * @author Fabien Potencier * @author Christian Gärtner */ class FileNotFoundException extends IOException { public function __construct($message = null, $code = 0, \Exception $previous = null, $path = null) { if (null === $message) { if (null === $path) { $message = 'File could not be found.'; } else { $message = sprintf('File "%s" could not be found.', $path); } } parent::__construct($message, $code, $previous, $path); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem\Exception; /** * Exception interface for all exceptions thrown by the component. * * @author Romain Neutron */ interface ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Filesystem\Exception; /** * Exception class thrown when a filesystem operation failure happens. * * @author Romain Neutron * @author Christian Gärtner * @author Fabien Potencier */ class IOException extends \RuntimeException implements IOExceptionInterface { private $path; public function __construct($message, $code = 0, \Exception $previous = null, $path = null) { $this->path = $path; parent::__construct($message, $code, $previous); } /** * {@inheritdoc} */ public function getPath() { return $this->path; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Mbstring as p; if (!function_exists('mb_convert_encoding')) { function mb_convert_encoding($string, $to_encoding, $from_encoding = null) { return p\Mbstring::mb_convert_encoding($string, $to_encoding, $from_encoding); } } if (!function_exists('mb_decode_mimeheader')) { function mb_decode_mimeheader($string) { return p\Mbstring::mb_decode_mimeheader($string); } } if (!function_exists('mb_encode_mimeheader')) { function mb_encode_mimeheader($string, $charset = null, $transfer_encoding = null, $newline = null, $indent = null) { return p\Mbstring::mb_encode_mimeheader($string, $charset, $transfer_encoding, $newline, $indent); } } if (!function_exists('mb_decode_numericentity')) { function mb_decode_numericentity($string, $map, $encoding = null) { return p\Mbstring::mb_decode_numericentity($string, $map, $encoding); } } if (!function_exists('mb_encode_numericentity')) { function mb_encode_numericentity($string, $map, $encoding = null, $hex = false) { return p\Mbstring::mb_encode_numericentity($string, $map, $encoding, $hex); } } if (!function_exists('mb_convert_case')) { function mb_convert_case($string, $mode, $encoding = null) { return p\Mbstring::mb_convert_case($string, $mode, $encoding); } } if (!function_exists('mb_internal_encoding')) { function mb_internal_encoding($encoding = null) { return p\Mbstring::mb_internal_encoding($encoding); } } if (!function_exists('mb_language')) { function mb_language($language = null) { return p\Mbstring::mb_language($language); } } if (!function_exists('mb_list_encodings')) { function mb_list_encodings() { return p\Mbstring::mb_list_encodings(); } } if (!function_exists('mb_encoding_aliases')) { function mb_encoding_aliases($encoding) { return p\Mbstring::mb_encoding_aliases($encoding); } } if (!function_exists('mb_check_encoding')) { function mb_check_encoding($value = null, $encoding = null) { return p\Mbstring::mb_check_encoding($value, $encoding); } } if (!function_exists('mb_detect_encoding')) { function mb_detect_encoding($string, $encodings = null, $strict = false) { return p\Mbstring::mb_detect_encoding($string, $encodings, $strict); } } if (!function_exists('mb_detect_order')) { function mb_detect_order($encoding = null) { return p\Mbstring::mb_detect_order($encoding); } } if (!function_exists('mb_parse_str')) { function mb_parse_str($string, &$result = array()) { parse_str($string, $result); } } if (!function_exists('mb_strlen')) { function mb_strlen($string, $encoding = null) { return p\Mbstring::mb_strlen($string, $encoding); } } if (!function_exists('mb_strpos')) { function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strpos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strtolower')) { function mb_strtolower($string, $encoding = null) { return p\Mbstring::mb_strtolower($string, $encoding); } } if (!function_exists('mb_strtoupper')) { function mb_strtoupper($string, $encoding = null) { return p\Mbstring::mb_strtoupper($string, $encoding); } } if (!function_exists('mb_substitute_character')) { function mb_substitute_character($substitute_character = null) { return p\Mbstring::mb_substitute_character($substitute_character); } } if (!function_exists('mb_substr')) { function mb_substr($string, $start, $length = 2147483647, $encoding = null) { return p\Mbstring::mb_substr($string, $start, $length, $encoding); } } if (!function_exists('mb_stripos')) { function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_stripos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_stristr')) { function mb_stristr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_stristr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strrchr')) { function mb_strrchr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrchr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strrichr')) { function mb_strrichr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strrichr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_strripos')) { function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strripos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strrpos')) { function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { return p\Mbstring::mb_strrpos($haystack, $needle, $offset, $encoding); } } if (!function_exists('mb_strstr')) { function mb_strstr($haystack, $needle, $before_needle = false, $encoding = null) { return p\Mbstring::mb_strstr($haystack, $needle, $before_needle, $encoding); } } if (!function_exists('mb_get_info')) { function mb_get_info($type = 'all') { return p\Mbstring::mb_get_info($type); } } if (!function_exists('mb_http_output')) { function mb_http_output($encoding = null) { return p\Mbstring::mb_http_output($encoding); } } if (!function_exists('mb_strwidth')) { function mb_strwidth($string, $encoding = null) { return p\Mbstring::mb_strwidth($string, $encoding); } } if (!function_exists('mb_substr_count')) { function mb_substr_count($haystack, $needle, $encoding = null) { return p\Mbstring::mb_substr_count($haystack, $needle, $encoding); } } if (!function_exists('mb_output_handler')) { function mb_output_handler($string, $status) { return p\Mbstring::mb_output_handler($string, $status); } } if (!function_exists('mb_http_input')) { function mb_http_input($type = '') { return p\Mbstring::mb_http_input($type); } } if (PHP_VERSION_ID >= 80000) { require_once __DIR__.'/Resources/mb_convert_variables.php8'; } elseif (!function_exists('mb_convert_variables')) { function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { return p\Mbstring::mb_convert_variables($toEncoding, $fromEncoding, $a, $b, $c, $d, $e, $f); } } if (!function_exists('mb_ord')) { function mb_ord($string, $encoding = null) { return p\Mbstring::mb_ord($string, $encoding); } } if (!function_exists('mb_chr')) { function mb_chr($codepoint, $encoding = null) { return p\Mbstring::mb_chr($codepoint, $encoding); } } if (!function_exists('mb_scrub')) { function mb_scrub($string, $encoding = null) { $encoding = null === $encoding ? mb_internal_encoding() : $encoding; return mb_convert_encoding($string, $encoding, $encoding); } } if (!function_exists('mb_str_split')) { function mb_str_split($string, $length = 1, $encoding = null) { return p\Mbstring::mb_str_split($string, $length, $encoding); } } if (extension_loaded('mbstring')) { return; } if (!defined('MB_CASE_UPPER')) { define('MB_CASE_UPPER', 0); } if (!defined('MB_CASE_LOWER')) { define('MB_CASE_LOWER', 1); } if (!defined('MB_CASE_TITLE')) { define('MB_CASE_TITLE', 2); } 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o', 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', 'À' => 'à', '�' => 'á', 'Â' => 'â', 'Ã' => 'ã', 'Ä' => 'ä', 'Å' => 'å', 'Æ' => 'æ', 'Ç' => 'ç', 'È' => 'è', 'É' => 'é', 'Ê' => 'ê', 'Ë' => 'ë', 'Ì' => 'ì', '�' => 'í', 'Î' => 'î', '�' => 'ï', '�' => 'ð', 'Ñ' => 'ñ', 'Ò' => 'ò', 'Ó' => 'ó', 'Ô' => 'ô', 'Õ' => 'õ', 'Ö' => 'ö', 'Ø' => 'ø', 'Ù' => 'ù', 'Ú' => 'ú', 'Û' => 'û', 'Ü' => 'ü', '�' => 'ý', 'Þ' => 'þ', 'Ā' => '�', 'Ă' => 'ă', 'Ą' => 'ą', 'Ć' => 'ć', 'Ĉ' => 'ĉ', 'Ċ' => 'ċ', 'Č' => '�', 'Ď' => '�', '�' => 'đ', 'Ē' => 'ē', 'Ĕ' => 'ĕ', 'Ė' => 'ė', 'Ę' => 'ę', 'Ě' => 'ě', 'Ĝ' => '�', 'Ğ' => 'ğ', 'Ġ' => 'ġ', 'Ģ' => 'ģ', 'Ĥ' => 'ĥ', 'Ħ' => 'ħ', 'Ĩ' => 'ĩ', 'Ī' => 'ī', 'Ĭ' => 'ĭ', 'Į' => 'į', 'İ' => 'i', 'IJ' => 'ij', 'Ĵ' => 'ĵ', 'Ķ' => 'ķ', 'Ĺ' => 'ĺ', 'Ļ' => 'ļ', 'Ľ' => 'ľ', 'Ŀ' => 'ŀ', '�' => 'ł', 'Ń' => 'ń', 'Ņ' => 'ņ', 'Ň' => 'ň', 'Ŋ' => 'ŋ', 'Ō' => '�', 'Ŏ' => '�', '�' => 'ő', 'Œ' => 'œ', 'Ŕ' => 'ŕ', 'Ŗ' => 'ŗ', 'Ř' => 'ř', 'Ś' => 'ś', 'Ŝ' => '�', 'Ş' => 'ş', 'Š' => 'š', 'Ţ' => 'ţ', 'Ť' => 'ť', 'Ŧ' => 'ŧ', 'Ũ' => 'ũ', 'Ū' => 'ū', 'Ŭ' => 'ŭ', 'Ů' => 'ů', 'Ű' => 'ű', 'Ų' => 'ų', 'Ŵ' => 'ŵ', 'Ŷ' => 'ŷ', 'Ÿ' => 'ÿ', 'Ź' => 'ź', 'Ż' => 'ż', 'Ž' => 'ž', '�' => 'ɓ', 'Ƃ' => 'ƃ', 'Ƅ' => 'ƅ', 'Ɔ' => 'ɔ', 'Ƈ' => 'ƈ', 'Ɖ' => 'ɖ', 'Ɗ' => 'ɗ', 'Ƌ' => 'ƌ', 'Ǝ' => '�', '�' => 'ə', '�' => 'ɛ', 'Ƒ' => 'ƒ', 'Ɠ' => 'ɠ', 'Ɣ' => 'ɣ', 'Ɩ' => 'ɩ', 'Ɨ' => 'ɨ', 'Ƙ' => 'ƙ', 'Ɯ' => 'ɯ', '�' => 'ɲ', 'Ɵ' => 'ɵ', 'Ơ' => 'ơ', 'Ƣ' => 'ƣ', 'Ƥ' => 'ƥ', 'Ʀ' => 'ʀ', 'Ƨ' => 'ƨ', 'Ʃ' => 'ʃ', 'Ƭ' => 'ƭ', 'Ʈ' => 'ʈ', 'Ư' => 'ư', 'Ʊ' => 'ʊ', 'Ʋ' => 'ʋ', 'Ƴ' => 'ƴ', 'Ƶ' => 'ƶ', 'Ʒ' => 'ʒ', 'Ƹ' => 'ƹ', 'Ƽ' => 'ƽ', 'DŽ' => 'dž', 'Dž' => 'dž', 'LJ' => 'lj', 'Lj' => 'lj', 'NJ' => 'nj', 'Nj' => 'nj', '�' => 'ǎ', '�' => '�', 'Ǒ' => 'ǒ', 'Ǔ' => 'ǔ', 'Ǖ' => 'ǖ', 'Ǘ' => 'ǘ', 'Ǚ' => 'ǚ', 'Ǜ' => 'ǜ', 'Ǟ' => 'ǟ', 'Ǡ' => 'ǡ', 'Ǣ' => 'ǣ', 'Ǥ' => 'ǥ', 'Ǧ' => 'ǧ', 'Ǩ' => 'ǩ', 'Ǫ' => 'ǫ', 'Ǭ' => 'ǭ', 'Ǯ' => 'ǯ', 'DZ' => 'dz', 'Dz' => 'dz', 'Ǵ' => 'ǵ', 'Ƕ' => 'ƕ', 'Ƿ' => 'ƿ', 'Ǹ' => 'ǹ', 'Ǻ' => 'ǻ', 'Ǽ' => 'ǽ', 'Ǿ' => 'ǿ', 'Ȁ' => '�', 'Ȃ' => 'ȃ', 'Ȅ' => 'ȅ', 'Ȇ' => 'ȇ', 'Ȉ' => 'ȉ', 'Ȋ' => 'ȋ', 'Ȍ' => '�', 'Ȏ' => '�', '�' => 'ȑ', 'Ȓ' => 'ȓ', 'Ȕ' => 'ȕ', 'Ȗ' => 'ȗ', 'Ș' => 'ș', 'Ț' => 'ț', 'Ȝ' => '�', 'Ȟ' => 'ȟ', 'Ƞ' => 'ƞ', 'Ȣ' => 'ȣ', 'Ȥ' => 'ȥ', 'Ȧ' => 'ȧ', 'Ȩ' => 'ȩ', 'Ȫ' => 'ȫ', 'Ȭ' => 'ȭ', 'Ȯ' => 'ȯ', 'Ȱ' => 'ȱ', 'Ȳ' => 'ȳ', 'Ⱥ' => 'ⱥ', 'Ȼ' => 'ȼ', 'Ƚ' => 'ƚ', 'Ⱦ' => 'ⱦ', '�' => 'ɂ', 'Ƀ' => 'ƀ', 'Ʉ' => 'ʉ', 'Ʌ' => 'ʌ', 'Ɇ' => 'ɇ', 'Ɉ' => 'ɉ', 'Ɋ' => 'ɋ', 'Ɍ' => '�', 'Ɏ' => '�', 'Ͱ' => 'ͱ', 'Ͳ' => 'ͳ', 'Ͷ' => 'ͷ', 'Ϳ' => 'ϳ', 'Ά' => 'ά', 'Έ' => 'έ', 'Ή' => 'ή', 'Ί' => 'ί', 'Ό' => 'ό', 'Ύ' => '�', '�' => 'ώ', 'Α' => 'α', 'Β' => 'β', 'Γ' => 'γ', 'Δ' => 'δ', 'Ε' => 'ε', 'Ζ' => 'ζ', 'Η' => 'η', 'Θ' => 'θ', 'Ι' => 'ι', 'Κ' => 'κ', 'Λ' => 'λ', 'Μ' => 'μ', '�' => 'ν', 'Ξ' => 'ξ', 'Ο' => 'ο', 'Π' => 'π', 'Ρ' => '�', 'Σ' => 'σ', 'Τ' => 'τ', 'Υ' => 'υ', 'Φ' => 'φ', 'Χ' => 'χ', 'Ψ' => 'ψ', 'Ω' => 'ω', 'Ϊ' => 'ϊ', 'Ϋ' => 'ϋ', '�' => 'ϗ', 'Ϙ' => 'ϙ', 'Ϛ' => 'ϛ', 'Ϝ' => '�', 'Ϟ' => 'ϟ', 'Ϡ' => 'ϡ', 'Ϣ' => 'ϣ', 'Ϥ' => 'ϥ', 'Ϧ' => 'ϧ', 'Ϩ' => 'ϩ', 'Ϫ' => 'ϫ', 'Ϭ' => 'ϭ', 'Ϯ' => 'ϯ', 'ϴ' => 'θ', 'Ϸ' => 'ϸ', 'Ϲ' => 'ϲ', 'Ϻ' => 'ϻ', 'Ͻ' => 'ͻ', 'Ͼ' => 'ͼ', 'Ͽ' => 'ͽ', 'Ѐ' => '�', '�' => 'ё', 'Ђ' => 'ђ', 'Ѓ' => 'ѓ', 'Є' => 'є', 'Ѕ' => 'ѕ', 'І' => 'і', 'Ї' => 'ї', 'Ј' => 'ј', 'Љ' => 'љ', 'Њ' => 'њ', 'Ћ' => 'ћ', 'Ќ' => 'ќ', '�' => '�', 'Ў' => 'ў', '�' => 'џ', '�' => 'а', 'Б' => 'б', 'В' => 'в', 'Г' => 'г', 'Д' => 'д', 'Е' => 'е', 'Ж' => 'ж', 'З' => 'з', 'И' => 'и', 'Й' => 'й', 'К' => 'к', 'Л' => 'л', 'М' => 'м', '�' => 'н', 'О' => 'о', 'П' => 'п', 'Р' => 'р', 'С' => '�', 'Т' => 'т', 'У' => 'у', 'Ф' => 'ф', 'Х' => 'х', 'Ц' => 'ц', 'Ч' => 'ч', 'Ш' => 'ш', 'Щ' => 'щ', 'Ъ' => 'ъ', 'Ы' => 'ы', 'Ь' => 'ь', 'Э' => '�', 'Ю' => 'ю', 'Я' => '�', 'Ѡ' => 'ѡ', 'Ѣ' => 'ѣ', 'Ѥ' => 'ѥ', 'Ѧ' => 'ѧ', 'Ѩ' => 'ѩ', 'Ѫ' => 'ѫ', 'Ѭ' => 'ѭ', 'Ѯ' => 'ѯ', 'Ѱ' => 'ѱ', 'Ѳ' => 'ѳ', 'Ѵ' => 'ѵ', 'Ѷ' => 'ѷ', 'Ѹ' => 'ѹ', 'Ѻ' => 'ѻ', 'Ѽ' => 'ѽ', 'Ѿ' => 'ѿ', 'Ҁ' => '�', 'Ҋ' => 'ҋ', 'Ҍ' => '�', 'Ҏ' => '�', '�' => 'ґ', 'Ғ' => 'ғ', 'Ҕ' => 'ҕ', 'Җ' => 'җ', 'Ҙ' => 'ҙ', 'Қ' => 'қ', 'Ҝ' => '�', 'Ҟ' => 'ҟ', 'Ҡ' => 'ҡ', 'Ң' => 'ң', 'Ҥ' => 'ҥ', 'Ҧ' => 'ҧ', 'Ҩ' => 'ҩ', 'Ҫ' => 'ҫ', 'Ҭ' => 'ҭ', 'Ү' => 'ү', 'Ұ' => 'ұ', 'Ҳ' => 'ҳ', 'Ҵ' => 'ҵ', 'Ҷ' => 'ҷ', 'Ҹ' => 'ҹ', 'Һ' => 'һ', 'Ҽ' => 'ҽ', 'Ҿ' => 'ҿ', 'Ӏ' => '�', '�' => 'ӂ', 'Ӄ' => 'ӄ', 'Ӆ' => 'ӆ', 'Ӈ' => 'ӈ', 'Ӊ' => 'ӊ', 'Ӌ' => 'ӌ', '�' => 'ӎ', '�' => 'ӑ', 'Ӓ' => 'ӓ', 'Ӕ' => 'ӕ', 'Ӗ' => 'ӗ', 'Ә' => 'ә', 'Ӛ' => 'ӛ', 'Ӝ' => '�', 'Ӟ' => 'ӟ', 'Ӡ' => 'ӡ', 'Ӣ' => 'ӣ', 'Ӥ' => 'ӥ', 'Ӧ' => 'ӧ', 'Ө' => 'ө', 'Ӫ' => 'ӫ', 'Ӭ' => 'ӭ', 'Ӯ' => 'ӯ', 'Ӱ' => 'ӱ', 'Ӳ' => 'ӳ', 'Ӵ' => 'ӵ', 'Ӷ' => 'ӷ', 'Ӹ' => 'ӹ', 'Ӻ' => 'ӻ', 'Ӽ' => 'ӽ', 'Ӿ' => 'ӿ', 'Ԁ' => '�', 'Ԃ' => 'ԃ', 'Ԅ' => 'ԅ', 'Ԇ' => 'ԇ', 'Ԉ' => 'ԉ', 'Ԋ' => 'ԋ', 'Ԍ' => '�', 'Ԏ' => '�', '�' => 'ԑ', 'Ԓ' => 'ԓ', 'Ԕ' => 'ԕ', 'Ԗ' => 'ԗ', 'Ԙ' => 'ԙ', 'Ԛ' => 'ԛ', 'Ԝ' => '�', 'Ԟ' => 'ԟ', 'Ԡ' => 'ԡ', 'Ԣ' => 'ԣ', 'Ԥ' => 'ԥ', 'Ԧ' => 'ԧ', 'Ԩ' => 'ԩ', 'Ԫ' => 'ԫ', 'Ԭ' => 'ԭ', 'Ԯ' => 'ԯ', 'Ա' => 'ա', 'Բ' => 'բ', 'Գ' => 'գ', 'Դ' => 'դ', 'Ե' => 'ե', 'Զ' => 'զ', 'Է' => 'է', 'Ը' => 'ը', 'Թ' => 'թ', 'Ժ' => 'ժ', 'Ի' => 'ի', 'Լ' => 'լ', 'Խ' => 'խ', 'Ծ' => 'ծ', 'Կ' => 'կ', 'Հ' => 'հ', '�' => 'ձ', 'Ղ' => 'ղ', 'Ճ' => 'ճ', 'Մ' => 'մ', 'Յ' => 'յ', 'Ն' => 'ն', 'Շ' => 'շ', 'Ո' => 'ո', 'Չ' => 'չ', 'Պ' => 'պ', 'Ջ' => 'ջ', 'Ռ' => 'ռ', '�' => 'ս', 'Վ' => 'վ', '�' => 'տ', '�' => 'ր', 'Ց' => '�', 'Ւ' => 'ւ', 'Փ' => 'փ', 'Ք' => 'ք', 'Օ' => 'օ', 'Ֆ' => 'ֆ', 'Ⴀ' => 'ⴀ', 'Ⴁ' => '�', 'Ⴂ' => 'ⴂ', 'Ⴃ' => 'ⴃ', 'Ⴄ' => 'ⴄ', 'Ⴅ' => 'ⴅ', 'Ⴆ' => 'ⴆ', 'Ⴇ' => 'ⴇ', 'Ⴈ' => 'ⴈ', 'Ⴉ' => 'ⴉ', 'Ⴊ' => 'ⴊ', 'Ⴋ' => 'ⴋ', 'Ⴌ' => 'ⴌ', 'Ⴍ' => '�', 'Ⴎ' => 'ⴎ', 'Ⴏ' => '�', 'Ⴐ' => '�', 'Ⴑ' => 'ⴑ', 'Ⴒ' => 'ⴒ', 'Ⴓ' => 'ⴓ', 'Ⴔ' => 'ⴔ', 'Ⴕ' => 'ⴕ', 'Ⴖ' => 'ⴖ', 'Ⴗ' => 'ⴗ', 'Ⴘ' => 'ⴘ', 'Ⴙ' => 'ⴙ', 'Ⴚ' => 'ⴚ', 'Ⴛ' => 'ⴛ', 'Ⴜ' => 'ⴜ', 'Ⴝ' => '�', 'Ⴞ' => 'ⴞ', 'Ⴟ' => 'ⴟ', 'Ⴠ' => 'ⴠ', '�' => 'ⴡ', 'Ⴢ' => 'ⴢ', 'Ⴣ' => 'ⴣ', 'Ⴤ' => 'ⴤ', 'Ⴥ' => 'ⴥ', 'Ⴧ' => 'ⴧ', '�' => 'ⴭ', 'Ꭰ' => 'ꭰ', 'Ꭱ' => 'ꭱ', 'Ꭲ' => 'ꭲ', 'Ꭳ' => 'ꭳ', 'Ꭴ' => 'ꭴ', 'Ꭵ' => 'ꭵ', 'Ꭶ' => 'ꭶ', 'Ꭷ' => 'ꭷ', 'Ꭸ' => 'ꭸ', 'Ꭹ' => 'ꭹ', 'Ꭺ' => 'ꭺ', 'Ꭻ' => 'ꭻ', 'Ꭼ' => 'ꭼ', 'Ꭽ' => 'ꭽ', 'Ꭾ' => 'ꭾ', 'Ꭿ' => 'ꭿ', 'Ꮀ' => 'ꮀ', 'Ꮁ' => '�', 'Ꮂ' => 'ꮂ', 'Ꮃ' => 'ꮃ', 'Ꮄ' => 'ꮄ', 'Ꮅ' => 'ꮅ', 'Ꮆ' => 'ꮆ', 'Ꮇ' => 'ꮇ', 'Ꮈ' => 'ꮈ', 'Ꮉ' => 'ꮉ', 'Ꮊ' => 'ꮊ', 'Ꮋ' => 'ꮋ', 'Ꮌ' => 'ꮌ', 'Ꮍ' => '�', 'Ꮎ' => 'ꮎ', 'Ꮏ' => '�', '�' => '�', '�' => 'ꮑ', '�' => 'ꮒ', '�' => 'ꮓ', '�' => 'ꮔ', '�' => 'ꮕ', '�' => 'ꮖ', '�' => 'ꮗ', '�' => 'ꮘ', '�' => 'ꮙ', '�' => 'ꮚ', '�' => 'ꮛ', '�' => 'ꮜ', '�' => '�', '�' => 'ꮞ', '�' => 'ꮟ', '�' => 'ꮠ', '�' => 'ꮡ', '�' => 'ꮢ', '�' => 'ꮣ', '�' => 'ꮤ', '�' => 'ꮥ', '�' => 'ꮦ', '�' => 'ꮧ', '�' => 'ꮨ', '�' => 'ꮩ', '�' => 'ꮪ', '�' => 'ꮫ', '�' => 'ꮬ', '�' => 'ꮭ', '�' => 'ꮮ', '�' => 'ꮯ', '�' => 'ꮰ', '�' => 'ꮱ', '�' => 'ꮲ', '�' => 'ꮳ', '�' => 'ꮴ', '�' => 'ꮵ', '�' => 'ꮶ', '�' => 'ꮷ', '�' => 'ꮸ', '�' => 'ꮹ', '�' => 'ꮺ', '�' => 'ꮻ', '�' => 'ꮼ', '�' => 'ꮽ', '�' => 'ꮾ', '�' => 'ꮿ', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', 'Ბ' => 'ბ', 'Გ' => 'გ', 'Დ' => 'დ', 'Ე' => 'ე', 'Ვ' => 'ვ', 'Ზ' => 'ზ', 'Თ' => 'თ', 'Ი' => 'ი', 'Კ' => 'კ', 'Ლ' => 'ლ', 'Მ' => 'მ', 'Ნ' => 'ნ', '�' => '�', 'Პ' => 'პ', 'Ჟ' => 'ჟ', 'Რ' => 'რ', 'Ს' => 'ს', 'Ტ' => 'ტ', 'Უ' => 'უ', 'Ფ' => 'ფ', 'Ქ' => 'ქ', 'Ღ' => 'ღ', 'Ყ' => 'ყ', 'Შ' => 'შ', 'Ჩ' => 'ჩ', 'Ც' => 'ც', 'Ძ' => 'ძ', 'Წ' => 'წ', 'Ჭ' => 'ჭ', 'Ხ' => 'ხ', 'Ჯ' => 'ჯ', 'Ჰ' => 'ჰ', 'Ჱ' => 'ჱ', 'Ჲ' => 'ჲ', 'Ჳ' => 'ჳ', 'Ჴ' => 'ჴ', 'Ჵ' => 'ჵ', 'Ჶ' => 'ჶ', 'Ჷ' => 'ჷ', 'Ჸ' => 'ჸ', 'Ჹ' => 'ჹ', 'Ჺ' => 'ჺ', 'Ჽ' => 'ჽ', 'Ჾ' => 'ჾ', 'Ჿ' => 'ჿ', 'Ḁ' => '�', 'Ḃ' => 'ḃ', 'Ḅ' => 'ḅ', 'Ḇ' => 'ḇ', 'Ḉ' => 'ḉ', 'Ḋ' => 'ḋ', 'Ḍ' => '�', 'Ḏ' => '�', '�' => 'ḑ', 'Ḓ' => 'ḓ', 'Ḕ' => 'ḕ', 'Ḗ' => 'ḗ', 'Ḙ' => 'ḙ', 'Ḛ' => 'ḛ', 'Ḝ' => '�', 'Ḟ' => 'ḟ', 'Ḡ' => 'ḡ', 'Ḣ' => 'ḣ', 'Ḥ' => 'ḥ', 'Ḧ' => 'ḧ', 'Ḩ' => 'ḩ', 'Ḫ' => 'ḫ', 'Ḭ' => 'ḭ', 'Ḯ' => 'ḯ', 'Ḱ' => 'ḱ', 'Ḳ' => 'ḳ', 'Ḵ' => 'ḵ', 'Ḷ' => 'ḷ', 'Ḹ' => 'ḹ', 'Ḻ' => 'ḻ', 'Ḽ' => 'ḽ', 'Ḿ' => 'ḿ', 'Ṁ' => '�', 'Ṃ' => 'ṃ', 'Ṅ' => 'ṅ', 'Ṇ' => 'ṇ', 'Ṉ' => 'ṉ', 'Ṋ' => 'ṋ', 'Ṍ' => '�', 'Ṏ' => '�', '�' => 'ṑ', 'Ṓ' => 'ṓ', 'Ṕ' => 'ṕ', 'Ṗ' => 'ṗ', 'Ṙ' => 'ṙ', 'Ṛ' => 'ṛ', 'Ṝ' => '�', 'Ṟ' => 'ṟ', 'Ṡ' => 'ṡ', 'Ṣ' => 'ṣ', 'Ṥ' => 'ṥ', 'Ṧ' => 'ṧ', 'Ṩ' => 'ṩ', 'Ṫ' => 'ṫ', 'Ṭ' => 'ṭ', 'Ṯ' => 'ṯ', 'Ṱ' => 'ṱ', 'Ṳ' => 'ṳ', 'Ṵ' => 'ṵ', 'Ṷ' => 'ṷ', 'Ṹ' => 'ṹ', 'Ṻ' => 'ṻ', 'Ṽ' => 'ṽ', 'Ṿ' => 'ṿ', 'Ẁ' => '�', 'Ẃ' => 'ẃ', 'Ẅ' => 'ẅ', 'Ẇ' => 'ẇ', 'Ẉ' => 'ẉ', 'Ẋ' => 'ẋ', 'Ẍ' => '�', 'Ẏ' => '�', '�' => 'ẑ', 'Ẓ' => 'ẓ', 'Ẕ' => 'ẕ', 'ẞ' => 'ß', 'Ạ' => 'ạ', 'Ả' => 'ả', 'Ấ' => 'ấ', 'Ầ' => 'ầ', 'Ẩ' => 'ẩ', 'Ẫ' => 'ẫ', 'Ậ' => 'ậ', 'Ắ' => 'ắ', 'Ằ' => 'ằ', 'Ẳ' => 'ẳ', 'Ẵ' => 'ẵ', 'Ặ' => 'ặ', 'Ẹ' => 'ẹ', 'Ẻ' => 'ẻ', 'Ẽ' => 'ẽ', 'Ế' => 'ế', 'Ề' => '�', 'Ể' => 'ể', 'Ễ' => 'ễ', 'Ệ' => 'ệ', 'Ỉ' => 'ỉ', 'Ị' => 'ị', 'Ọ' => '�', 'Ỏ' => '�', '�' => 'ố', 'Ồ' => 'ồ', 'Ổ' => 'ổ', 'Ỗ' => 'ỗ', 'Ộ' => 'ộ', 'Ớ' => 'ớ', 'Ờ' => '�', 'Ở' => 'ở', 'Ỡ' => 'ỡ', 'Ợ' => 'ợ', 'Ụ' => 'ụ', 'Ủ' => 'ủ', 'Ứ' => 'ứ', 'Ừ' => 'ừ', 'Ử' => 'ử', 'Ữ' => 'ữ', 'Ự' => 'ự', 'Ỳ' => 'ỳ', 'Ỵ' => 'ỵ', 'Ỷ' => 'ỷ', 'Ỹ' => 'ỹ', 'Ỻ' => 'ỻ', 'Ỽ' => 'ỽ', 'Ỿ' => 'ỿ', 'Ἀ' => 'ἀ', 'Ἁ' => '�', 'Ἂ' => 'ἂ', 'Ἃ' => 'ἃ', 'Ἄ' => 'ἄ', '�' => 'ἅ', 'Ἆ' => 'ἆ', '�' => 'ἇ', 'Ἐ' => '�', 'Ἑ' => 'ἑ', 'Ἒ' => 'ἒ', 'Ἓ' => 'ἓ', 'Ἔ' => 'ἔ', '�' => 'ἕ', 'Ἠ' => 'ἠ', 'Ἡ' => 'ἡ', 'Ἢ' => 'ἢ', 'Ἣ' => 'ἣ', 'Ἤ' => 'ἤ', 'Ἥ' => 'ἥ', 'Ἦ' => 'ἦ', 'Ἧ' => 'ἧ', 'Ἰ' => 'ἰ', 'Ἱ' => 'ἱ', 'Ἲ' => 'ἲ', 'Ἳ' => 'ἳ', 'Ἴ' => 'ἴ', 'Ἵ' => 'ἵ', 'Ἶ' => 'ἶ', 'Ἷ' => 'ἷ', 'Ὀ' => 'ὀ', 'Ὁ' => '�', 'Ὂ' => 'ὂ', 'Ὃ' => 'ὃ', 'Ὄ' => 'ὄ', '�' => 'ὅ', 'Ὑ' => 'ὑ', 'Ὓ' => 'ὓ', '�' => 'ὕ', 'Ὗ' => 'ὗ', 'Ὠ' => 'ὠ', 'Ὡ' => 'ὡ', 'Ὢ' => 'ὢ', 'Ὣ' => 'ὣ', 'Ὤ' => 'ὤ', 'Ὥ' => 'ὥ', 'Ὦ' => 'ὦ', 'Ὧ' => 'ὧ', 'ᾈ' => 'ᾀ', 'ᾉ' => '�', 'ᾊ' => 'ᾂ', 'ᾋ' => 'ᾃ', 'ᾌ' => 'ᾄ', '�' => 'ᾅ', 'ᾎ' => 'ᾆ', '�' => 'ᾇ', 'ᾘ' => '�', 'ᾙ' => 'ᾑ', 'ᾚ' => 'ᾒ', 'ᾛ' => 'ᾓ', 'ᾜ' => 'ᾔ', '�' => 'ᾕ', 'ᾞ' => 'ᾖ', 'ᾟ' => 'ᾗ', 'ᾨ' => 'ᾠ', 'ᾩ' => 'ᾡ', 'ᾪ' => 'ᾢ', 'ᾫ' => 'ᾣ', 'ᾬ' => 'ᾤ', 'ᾭ' => 'ᾥ', 'ᾮ' => 'ᾦ', 'ᾯ' => 'ᾧ', 'Ᾰ' => 'ᾰ', 'Ᾱ' => 'ᾱ', 'Ὰ' => 'ὰ', 'Ά' => 'ά', 'ᾼ' => 'ᾳ', 'Ὲ' => 'ὲ', 'Έ' => 'έ', 'Ὴ' => 'ὴ', 'Ή' => 'ή', 'ῌ' => 'ῃ', 'Ῐ' => '�', 'Ῑ' => 'ῑ', 'Ὶ' => 'ὶ', 'Ί' => 'ί', 'Ῠ' => 'ῠ', 'Ῡ' => 'ῡ', 'Ὺ' => 'ὺ', 'Ύ' => 'ύ', 'Ῥ' => 'ῥ', 'Ὸ' => 'ὸ', 'Ό' => 'ό', 'Ὼ' => 'ὼ', 'Ώ' => 'ώ', 'ῼ' => 'ῳ', 'Ω' => 'ω', 'K' => 'k', 'Å' => 'å', 'Ⅎ' => 'ⅎ', 'Ⅰ' => 'ⅰ', 'Ⅱ' => 'ⅱ', 'Ⅲ' => 'ⅲ', 'Ⅳ' => 'ⅳ', 'Ⅴ' => 'ⅴ', 'Ⅵ' => 'ⅵ', 'Ⅶ' => 'ⅶ', 'Ⅷ' => 'ⅷ', 'Ⅸ' => 'ⅸ', 'Ⅹ' => 'ⅹ', 'Ⅺ' => 'ⅺ', 'Ⅻ' => 'ⅻ', 'Ⅼ' => 'ⅼ', 'Ⅽ' => 'ⅽ', 'Ⅾ' => 'ⅾ', 'Ⅿ' => 'ⅿ', 'Ↄ' => 'ↄ', 'Ⓐ' => '�', 'Ⓑ' => 'ⓑ', 'Ⓒ' => 'ⓒ', 'Ⓓ' => 'ⓓ', 'Ⓔ' => 'ⓔ', 'Ⓕ' => 'ⓕ', 'Ⓖ' => 'ⓖ', 'Ⓗ' => 'ⓗ', 'Ⓘ' => 'ⓘ', 'Ⓙ' => 'ⓙ', 'Ⓚ' => 'ⓚ', '�' => 'ⓛ', 'Ⓜ' => 'ⓜ', 'Ⓝ' => '�', 'Ⓞ' => 'ⓞ', 'Ⓟ' => 'ⓟ', 'Ⓠ' => 'ⓠ', 'Ⓡ' => 'ⓡ', 'Ⓢ' => 'ⓢ', 'Ⓣ' => 'ⓣ', 'Ⓤ' => 'ⓤ', 'Ⓥ' => 'ⓥ', 'Ⓦ' => 'ⓦ', '�' => 'ⓧ', 'Ⓨ' => 'ⓨ', '�' => 'ⓩ', 'Ⰰ' => 'ⰰ', '�' => 'ⰱ', 'Ⰲ' => 'ⰲ', 'Ⰳ' => 'ⰳ', 'Ⰴ' => 'ⰴ', 'Ⰵ' => 'ⰵ', 'Ⰶ' => 'ⰶ', 'Ⰷ' => 'ⰷ', 'Ⰸ' => 'ⰸ', 'Ⰹ' => 'ⰹ', 'Ⰺ' => 'ⰺ', 'Ⰻ' => 'ⰻ', 'Ⰼ' => 'ⰼ', '�' => 'ⰽ', 'Ⰾ' => 'ⰾ', '�' => 'ⰿ', '�' => 'ⱀ', 'Ⱁ' => '�', 'Ⱂ' => 'ⱂ', 'Ⱃ' => 'ⱃ', 'Ⱄ' => 'ⱄ', 'Ⱅ' => 'ⱅ', 'Ⱆ' => 'ⱆ', 'Ⱇ' => 'ⱇ', 'Ⱈ' => 'ⱈ', 'Ⱉ' => 'ⱉ', 'Ⱊ' => 'ⱊ', 'Ⱋ' => 'ⱋ', 'Ⱌ' => 'ⱌ', '�' => '�', 'Ⱎ' => 'ⱎ', 'Ⱏ' => '�', 'Ⱐ' => '�', 'Ⱑ' => 'ⱑ', 'Ⱒ' => 'ⱒ', 'Ⱓ' => 'ⱓ', 'Ⱔ' => 'ⱔ', 'Ⱕ' => 'ⱕ', 'Ⱖ' => 'ⱖ', 'Ⱗ' => 'ⱗ', 'Ⱘ' => 'ⱘ', 'Ⱙ' => 'ⱙ', 'Ⱚ' => 'ⱚ', 'Ⱛ' => 'ⱛ', 'Ⱜ' => 'ⱜ', 'Ⱝ' => '�', 'Ⱞ' => 'ⱞ', 'Ⱡ' => 'ⱡ', 'Ɫ' => 'ɫ', 'Ᵽ' => 'ᵽ', 'Ɽ' => 'ɽ', 'Ⱨ' => 'ⱨ', 'Ⱪ' => 'ⱪ', 'Ⱬ' => 'ⱬ', 'Ɑ' => 'ɑ', 'Ɱ' => 'ɱ', 'Ɐ' => '�', 'Ɒ' => 'ɒ', 'Ⱳ' => 'ⱳ', 'Ⱶ' => 'ⱶ', 'Ȿ' => 'ȿ', 'Ɀ' => 'ɀ', 'Ⲁ' => '�', 'Ⲃ' => 'ⲃ', 'Ⲅ' => 'ⲅ', 'Ⲇ' => 'ⲇ', 'Ⲉ' => 'ⲉ', 'Ⲋ' => 'ⲋ', 'Ⲍ' => '�', 'Ⲏ' => '�', '�' => 'ⲑ', 'Ⲓ' => 'ⲓ', 'Ⲕ' => 'ⲕ', 'Ⲗ' => 'ⲗ', 'Ⲙ' => 'ⲙ', 'Ⲛ' => 'ⲛ', 'Ⲝ' => '�', 'Ⲟ' => 'ⲟ', 'Ⲡ' => 'ⲡ', 'Ⲣ' => 'ⲣ', 'Ⲥ' => 'ⲥ', 'Ⲧ' => 'ⲧ', 'Ⲩ' => 'ⲩ', 'Ⲫ' => 'ⲫ', 'Ⲭ' => 'ⲭ', 'Ⲯ' => 'ⲯ', 'Ⲱ' => 'ⲱ', 'Ⲳ' => 'ⲳ', 'Ⲵ' => 'ⲵ', 'Ⲷ' => 'ⲷ', 'Ⲹ' => 'ⲹ', 'Ⲻ' => 'ⲻ', 'Ⲽ' => 'ⲽ', 'Ⲿ' => 'ⲿ', 'Ⳁ' => '�', 'Ⳃ' => 'ⳃ', 'Ⳅ' => 'ⳅ', 'Ⳇ' => 'ⳇ', 'Ⳉ' => 'ⳉ', 'Ⳋ' => 'ⳋ', 'Ⳍ' => '�', 'Ⳏ' => '�', '�' => 'ⳑ', 'Ⳓ' => 'ⳓ', 'Ⳕ' => 'ⳕ', 'Ⳗ' => 'ⳗ', 'Ⳙ' => 'ⳙ', 'Ⳛ' => 'ⳛ', 'Ⳝ' => '�', 'Ⳟ' => 'ⳟ', 'Ⳡ' => 'ⳡ', 'Ⳣ' => 'ⳣ', 'Ⳬ' => 'ⳬ', 'Ⳮ' => 'ⳮ', 'Ⳳ' => 'ⳳ', 'Ꙁ' => '�', 'Ꙃ' => 'ꙃ', 'Ꙅ' => 'ꙅ', 'Ꙇ' => 'ꙇ', 'Ꙉ' => 'ꙉ', 'Ꙋ' => 'ꙋ', 'Ꙍ' => '�', 'Ꙏ' => '�', '�' => 'ꙑ', 'Ꙓ' => 'ꙓ', 'Ꙕ' => 'ꙕ', 'Ꙗ' => 'ꙗ', 'Ꙙ' => 'ꙙ', 'Ꙛ' => 'ꙛ', 'Ꙝ' => '�', 'Ꙟ' => 'ꙟ', 'Ꙡ' => 'ꙡ', 'Ꙣ' => 'ꙣ', 'Ꙥ' => 'ꙥ', 'Ꙧ' => 'ꙧ', 'Ꙩ' => 'ꙩ', 'Ꙫ' => 'ꙫ', 'Ꙭ' => 'ꙭ', 'Ꚁ' => '�', 'Ꚃ' => 'ꚃ', 'Ꚅ' => 'ꚅ', 'Ꚇ' => 'ꚇ', 'Ꚉ' => 'ꚉ', 'Ꚋ' => 'ꚋ', 'Ꚍ' => '�', 'Ꚏ' => '�', '�' => 'ꚑ', 'Ꚓ' => 'ꚓ', 'Ꚕ' => 'ꚕ', 'Ꚗ' => 'ꚗ', 'Ꚙ' => 'ꚙ', 'Ꚛ' => 'ꚛ', 'Ꜣ' => 'ꜣ', 'Ꜥ' => 'ꜥ', 'Ꜧ' => 'ꜧ', 'Ꜩ' => 'ꜩ', 'Ꜫ' => 'ꜫ', 'Ꜭ' => 'ꜭ', 'Ꜯ' => 'ꜯ', 'Ꜳ' => 'ꜳ', 'Ꜵ' => 'ꜵ', 'Ꜷ' => 'ꜷ', 'Ꜹ' => 'ꜹ', 'Ꜻ' => 'ꜻ', 'Ꜽ' => 'ꜽ', 'Ꜿ' => 'ꜿ', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => 'ᵹ', '�' => '�', 'Ꞁ' => '�', 'Ꞃ' => 'ꞃ', 'Ꞅ' => 'ꞅ', 'Ꞇ' => 'ꞇ', 'Ꞌ' => 'ꞌ', '�' => 'ɥ', '�' => 'ꞑ', 'Ꞓ' => 'ꞓ', 'Ꞗ' => 'ꞗ', 'Ꞙ' => 'ꞙ', 'Ꞛ' => 'ꞛ', 'Ꞝ' => '�', 'Ꞟ' => 'ꞟ', 'Ꞡ' => 'ꞡ', 'Ꞣ' => 'ꞣ', 'Ꞥ' => 'ꞥ', 'Ꞧ' => 'ꞧ', 'Ꞩ' => 'ꞩ', 'Ɦ' => 'ɦ', 'Ɜ' => 'ɜ', 'Ɡ' => 'ɡ', 'Ɬ' => 'ɬ', 'Ɪ' => 'ɪ', 'Ʞ' => 'ʞ', 'Ʇ' => 'ʇ', 'Ʝ' => '�', 'Ꭓ' => 'ꭓ', 'Ꞵ' => 'ꞵ', 'Ꞷ' => 'ꞷ', 'Ꞹ' => 'ꞹ', 'Ꞻ' => 'ꞻ', 'Ꞽ' => 'ꞽ', 'Ꞿ' => 'ꞿ', 'Ꟃ' => 'ꟃ', 'Ꞔ' => 'ꞔ', 'Ʂ' => 'ʂ', 'Ᶎ' => 'ᶎ', 'Ꟈ' => 'ꟈ', 'Ꟊ' => 'ꟊ', 'Ꟶ' => 'ꟶ', 'A' => '�', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e', 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j', 'K' => 'k', 'L' => 'l', 'M' => '�', 'N' => 'n', 'O' => '�', 'P' => '�', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't', 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y', 'Z' => 'z', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '𑢠' => '𑣀', '𑢡' => '�', '𑢢' => '𑣂', '𑢣' => '𑣃', '𑢤' => '𑣄', '𑢥' => '𑣅', '𑢦' => '𑣆', '𑢧' => '𑣇', '𑢨' => '𑣈', '𑢩' => '𑣉', '𑢪' => '𑣊', '𑢫' => '𑣋', '𑢬' => '𑣌', '𑢭' => '�', '𑢮' => '𑣎', '𑢯' => '�', '𑢰' => '�', '𑢱' => '𑣑', '𑢲' => '𑣒', '𑢳' => '𑣓', '𑢴' => '𑣔', '𑢵' => '𑣕', '𑢶' => '𑣖', '𑢷' => '𑣗', '𑢸' => '𑣘', '𑢹' => '𑣙', '𑢺' => '𑣚', '𑢻' => '𑣛', '𑢼' => '𑣜', '𑢽' => '�', '𑢾' => '𑣞', '𑢿' => '𑣟', '𖹀' => '𖹠', '�' => '𖹡', '𖹂' => '𖹢', '𖹃' => '𖹣', '𖹄' => '𖹤', '𖹅' => '𖹥', '𖹆' => '𖹦', '𖹇' => '𖹧', '𖹈' => '𖹨', '𖹉' => '𖹩', '𖹊' => '𖹪', '𖹋' => '𖹫', '𖹌' => '𖹬', '�' => '𖹭', '𖹎' => '𖹮', '�' => '𖹯', '�' => '𖹰', '𖹑' => '𖹱', '𖹒' => '𖹲', '𖹓' => '𖹳', '𖹔' => '𖹴', '𖹕' => '𖹵', '𖹖' => '𖹶', '𖹗' => '𖹷', '𖹘' => '𖹸', '𖹙' => '𖹹', '𖹚' => '𖹺', '𖹛' => '𖹻', '𖹜' => '𖹼', '�' => '𖹽', '𖹞' => '𖹾', '𖹟' => '𖹿', '𞤀' => '𞤢', '�' => '𞤣', '𞤂' => '𞤤', '𞤃' => '𞤥', '𞤄' => '𞤦', '𞤅' => '𞤧', '𞤆' => '𞤨', '𞤇' => '𞤩', '𞤈' => '𞤪', '𞤉' => '𞤫', '𞤊' => '𞤬', '𞤋' => '𞤭', '𞤌' => '𞤮', '�' => '𞤯', '𞤎' => '𞤰', '�' => '𞤱', '�' => '𞤲', '𞤑' => '𞤳', '𞤒' => '𞤴', '𞤓' => '𞤵', '𞤔' => '𞤶', '𞤕' => '𞤷', '𞤖' => '𞤸', '𞤗' => '𞤹', '𞤘' => '𞤺', '𞤙' => '𞤻', '𞤚' => '𞤼', '𞤛' => '𞤽', '𞤜' => '𞤾', '�' => '𞤿', '𞤞' => '𞥀', '𞤟' => '�', '𞤠' => '𞥂', '𞤡' => '𞥃', ); 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', 'm' => 'M', 'n' => 'N', 'o' => 'O', 'p' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', 'µ' => 'Μ', 'à' => 'À', 'á' => '�', 'â' => 'Â', 'ã' => 'Ã', 'ä' => 'Ä', 'å' => 'Å', 'æ' => 'Æ', 'ç' => 'Ç', 'è' => 'È', 'é' => 'É', 'ê' => 'Ê', 'ë' => 'Ë', 'ì' => 'Ì', 'í' => '�', 'î' => 'Î', 'ï' => '�', 'ð' => '�', 'ñ' => 'Ñ', 'ò' => 'Ò', 'ó' => 'Ó', 'ô' => 'Ô', 'õ' => 'Õ', 'ö' => 'Ö', 'ø' => 'Ø', 'ù' => 'Ù', 'ú' => 'Ú', 'û' => 'Û', 'ü' => 'Ü', 'ý' => '�', 'þ' => 'Þ', 'ÿ' => 'Ÿ', '�' => 'Ā', 'ă' => 'Ă', 'ą' => 'Ą', 'ć' => 'Ć', 'ĉ' => 'Ĉ', 'ċ' => 'Ċ', '�' => 'Č', '�' => 'Ď', 'đ' => '�', 'ē' => 'Ē', 'ĕ' => 'Ĕ', 'ė' => 'Ė', 'ę' => 'Ę', 'ě' => 'Ě', '�' => 'Ĝ', 'ğ' => 'Ğ', 'ġ' => 'Ġ', 'ģ' => 'Ģ', 'ĥ' => 'Ĥ', 'ħ' => 'Ħ', 'ĩ' => 'Ĩ', 'ī' => 'Ī', 'ĭ' => 'Ĭ', 'į' => 'Į', 'ı' => 'I', 'ij' => 'IJ', 'ĵ' => 'Ĵ', 'ķ' => 'Ķ', 'ĺ' => 'Ĺ', 'ļ' => 'Ļ', 'ľ' => 'Ľ', 'ŀ' => 'Ŀ', 'ł' => '�', 'ń' => 'Ń', 'ņ' => 'Ņ', 'ň' => 'Ň', 'ŋ' => 'Ŋ', '�' => 'Ō', '�' => 'Ŏ', 'ő' => '�', 'œ' => 'Œ', 'ŕ' => 'Ŕ', 'ŗ' => 'Ŗ', 'ř' => 'Ř', 'ś' => 'Ś', '�' => 'Ŝ', 'ş' => 'Ş', 'š' => 'Š', 'ţ' => 'Ţ', 'ť' => 'Ť', 'ŧ' => 'Ŧ', 'ũ' => 'Ũ', 'ū' => 'Ū', 'ŭ' => 'Ŭ', 'ů' => 'Ů', 'ű' => 'Ű', 'ų' => 'Ų', 'ŵ' => 'Ŵ', 'ŷ' => 'Ŷ', 'ź' => 'Ź', 'ż' => 'Ż', 'ž' => 'Ž', 'ſ' => 'S', 'ƀ' => 'Ƀ', 'ƃ' => 'Ƃ', 'ƅ' => 'Ƅ', 'ƈ' => 'Ƈ', 'ƌ' => 'Ƌ', 'ƒ' => 'Ƒ', 'ƕ' => 'Ƕ', 'ƙ' => 'Ƙ', 'ƚ' => 'Ƚ', 'ƞ' => 'Ƞ', 'ơ' => 'Ơ', 'ƣ' => 'Ƣ', 'ƥ' => 'Ƥ', 'ƨ' => 'Ƨ', 'ƭ' => 'Ƭ', 'ư' => 'Ư', 'ƴ' => 'Ƴ', 'ƶ' => 'Ƶ', 'ƹ' => 'Ƹ', 'ƽ' => 'Ƽ', 'ƿ' => 'Ƿ', 'Dž' => 'DŽ', 'dž' => 'DŽ', 'Lj' => 'LJ', 'lj' => 'LJ', 'Nj' => 'NJ', 'nj' => 'NJ', 'ǎ' => '�', '�' => '�', 'ǒ' => 'Ǒ', 'ǔ' => 'Ǔ', 'ǖ' => 'Ǖ', 'ǘ' => 'Ǘ', 'ǚ' => 'Ǚ', 'ǜ' => 'Ǜ', '�' => 'Ǝ', 'ǟ' => 'Ǟ', 'ǡ' => 'Ǡ', 'ǣ' => 'Ǣ', 'ǥ' => 'Ǥ', 'ǧ' => 'Ǧ', 'ǩ' => 'Ǩ', 'ǫ' => 'Ǫ', 'ǭ' => 'Ǭ', 'ǯ' => 'Ǯ', 'Dz' => 'DZ', 'dz' => 'DZ', 'ǵ' => 'Ǵ', 'ǹ' => 'Ǹ', 'ǻ' => 'Ǻ', 'ǽ' => 'Ǽ', 'ǿ' => 'Ǿ', '�' => 'Ȁ', 'ȃ' => 'Ȃ', 'ȅ' => 'Ȅ', 'ȇ' => 'Ȇ', 'ȉ' => 'Ȉ', 'ȋ' => 'Ȋ', '�' => 'Ȍ', '�' => 'Ȏ', 'ȑ' => '�', 'ȓ' => 'Ȓ', 'ȕ' => 'Ȕ', 'ȗ' => 'Ȗ', 'ș' => 'Ș', 'ț' => 'Ț', '�' => 'Ȝ', 'ȟ' => 'Ȟ', 'ȣ' => 'Ȣ', 'ȥ' => 'Ȥ', 'ȧ' => 'Ȧ', 'ȩ' => 'Ȩ', 'ȫ' => 'Ȫ', 'ȭ' => 'Ȭ', 'ȯ' => 'Ȯ', 'ȱ' => 'Ȱ', 'ȳ' => 'Ȳ', 'ȼ' => 'Ȼ', 'ȿ' => 'Ȿ', 'ɀ' => 'Ɀ', 'ɂ' => '�', 'ɇ' => 'Ɇ', 'ɉ' => 'Ɉ', 'ɋ' => 'Ɋ', '�' => 'Ɍ', '�' => 'Ɏ', '�' => 'Ɐ', 'ɑ' => 'Ɑ', 'ɒ' => 'Ɒ', 'ɓ' => '�', 'ɔ' => 'Ɔ', 'ɖ' => 'Ɖ', 'ɗ' => 'Ɗ', 'ə' => '�', 'ɛ' => '�', 'ɜ' => 'Ɜ', 'ɠ' => 'Ɠ', 'ɡ' => 'Ɡ', 'ɣ' => 'Ɣ', 'ɥ' => '�', 'ɦ' => 'Ɦ', 'ɨ' => 'Ɨ', 'ɩ' => 'Ɩ', 'ɪ' => 'Ɪ', 'ɫ' => 'Ɫ', 'ɬ' => 'Ɬ', 'ɯ' => 'Ɯ', 'ɱ' => 'Ɱ', 'ɲ' => '�', 'ɵ' => 'Ɵ', 'ɽ' => 'Ɽ', 'ʀ' => 'Ʀ', 'ʂ' => 'Ʂ', 'ʃ' => 'Ʃ', 'ʇ' => 'Ʇ', 'ʈ' => 'Ʈ', 'ʉ' => 'Ʉ', 'ʊ' => 'Ʊ', 'ʋ' => 'Ʋ', 'ʌ' => 'Ʌ', 'ʒ' => 'Ʒ', '�' => 'Ʝ', 'ʞ' => 'Ʞ', 'ͅ' => 'Ι', 'ͱ' => 'Ͱ', 'ͳ' => 'Ͳ', 'ͷ' => 'Ͷ', 'ͻ' => 'Ͻ', 'ͼ' => 'Ͼ', 'ͽ' => 'Ͽ', 'ά' => 'Ά', 'έ' => 'Έ', 'ή' => 'Ή', 'ί' => 'Ί', 'α' => 'Α', 'β' => 'Β', 'γ' => 'Γ', 'δ' => 'Δ', 'ε' => 'Ε', 'ζ' => 'Ζ', 'η' => 'Η', 'θ' => 'Θ', 'ι' => 'Ι', 'κ' => 'Κ', 'λ' => 'Λ', 'μ' => 'Μ', 'ν' => '�', 'ξ' => 'Ξ', 'ο' => 'Ο', 'π' => 'Π', '�' => 'Ρ', 'ς' => 'Σ', 'σ' => 'Σ', 'τ' => 'Τ', 'υ' => 'Υ', 'φ' => 'Φ', 'χ' => 'Χ', 'ψ' => 'Ψ', 'ω' => 'Ω', 'ϊ' => 'Ϊ', 'ϋ' => 'Ϋ', 'ό' => 'Ό', '�' => 'Ύ', 'ώ' => '�', '�' => 'Β', 'ϑ' => 'Θ', 'ϕ' => 'Φ', 'ϖ' => 'Π', 'ϗ' => '�', 'ϙ' => 'Ϙ', 'ϛ' => 'Ϛ', '�' => 'Ϝ', 'ϟ' => 'Ϟ', 'ϡ' => 'Ϡ', 'ϣ' => 'Ϣ', 'ϥ' => 'Ϥ', 'ϧ' => 'Ϧ', 'ϩ' => 'Ϩ', 'ϫ' => 'Ϫ', 'ϭ' => 'Ϭ', 'ϯ' => 'Ϯ', 'ϰ' => 'Κ', 'ϱ' => 'Ρ', 'ϲ' => 'Ϲ', 'ϳ' => 'Ϳ', 'ϵ' => 'Ε', 'ϸ' => 'Ϸ', 'ϻ' => 'Ϻ', 'а' => '�', 'б' => 'Б', 'в' => 'В', 'г' => 'Г', 'д' => 'Д', 'е' => 'Е', 'ж' => 'Ж', 'з' => 'З', 'и' => 'И', 'й' => 'Й', 'к' => 'К', 'л' => 'Л', 'м' => 'М', 'н' => '�', 'о' => 'О', 'п' => 'П', 'р' => 'Р', '�' => 'С', 'т' => 'Т', 'у' => 'У', 'ф' => 'Ф', 'х' => 'Х', 'ц' => 'Ц', 'ч' => 'Ч', 'ш' => 'Ш', 'щ' => 'Щ', 'ъ' => 'Ъ', 'ы' => 'Ы', 'ь' => 'Ь', '�' => 'Э', 'ю' => 'Ю', '�' => 'Я', '�' => 'Ѐ', 'ё' => '�', 'ђ' => 'Ђ', 'ѓ' => 'Ѓ', 'є' => 'Є', 'ѕ' => 'Ѕ', 'і' => 'І', 'ї' => 'Ї', 'ј' => 'Ј', 'љ' => 'Љ', 'њ' => 'Њ', 'ћ' => 'Ћ', 'ќ' => 'Ќ', '�' => '�', 'ў' => 'Ў', 'џ' => '�', 'ѡ' => 'Ѡ', 'ѣ' => 'Ѣ', 'ѥ' => 'Ѥ', 'ѧ' => 'Ѧ', 'ѩ' => 'Ѩ', 'ѫ' => 'Ѫ', 'ѭ' => 'Ѭ', 'ѯ' => 'Ѯ', 'ѱ' => 'Ѱ', 'ѳ' => 'Ѳ', 'ѵ' => 'Ѵ', 'ѷ' => 'Ѷ', 'ѹ' => 'Ѹ', 'ѻ' => 'Ѻ', 'ѽ' => 'Ѽ', 'ѿ' => 'Ѿ', '�' => 'Ҁ', 'ҋ' => 'Ҋ', '�' => 'Ҍ', '�' => 'Ҏ', 'ґ' => '�', 'ғ' => 'Ғ', 'ҕ' => 'Ҕ', 'җ' => 'Җ', 'ҙ' => 'Ҙ', 'қ' => 'Қ', '�' => 'Ҝ', 'ҟ' => 'Ҟ', 'ҡ' => 'Ҡ', 'ң' => 'Ң', 'ҥ' => 'Ҥ', 'ҧ' => 'Ҧ', 'ҩ' => 'Ҩ', 'ҫ' => 'Ҫ', 'ҭ' => 'Ҭ', 'ү' => 'Ү', 'ұ' => 'Ұ', 'ҳ' => 'Ҳ', 'ҵ' => 'Ҵ', 'ҷ' => 'Ҷ', 'ҹ' => 'Ҹ', 'һ' => 'Һ', 'ҽ' => 'Ҽ', 'ҿ' => 'Ҿ', 'ӂ' => '�', 'ӄ' => 'Ӄ', 'ӆ' => 'Ӆ', 'ӈ' => 'Ӈ', 'ӊ' => 'Ӊ', 'ӌ' => 'Ӌ', 'ӎ' => '�', '�' => 'Ӏ', 'ӑ' => '�', 'ӓ' => 'Ӓ', 'ӕ' => 'Ӕ', 'ӗ' => 'Ӗ', 'ә' => 'Ә', 'ӛ' => 'Ӛ', '�' => 'Ӝ', 'ӟ' => 'Ӟ', 'ӡ' => 'Ӡ', 'ӣ' => 'Ӣ', 'ӥ' => 'Ӥ', 'ӧ' => 'Ӧ', 'ө' => 'Ө', 'ӫ' => 'Ӫ', 'ӭ' => 'Ӭ', 'ӯ' => 'Ӯ', 'ӱ' => 'Ӱ', 'ӳ' => 'Ӳ', 'ӵ' => 'Ӵ', 'ӷ' => 'Ӷ', 'ӹ' => 'Ӹ', 'ӻ' => 'Ӻ', 'ӽ' => 'Ӽ', 'ӿ' => 'Ӿ', '�' => 'Ԁ', 'ԃ' => 'Ԃ', 'ԅ' => 'Ԅ', 'ԇ' => 'Ԇ', 'ԉ' => 'Ԉ', 'ԋ' => 'Ԋ', '�' => 'Ԍ', '�' => 'Ԏ', 'ԑ' => '�', 'ԓ' => 'Ԓ', 'ԕ' => 'Ԕ', 'ԗ' => 'Ԗ', 'ԙ' => 'Ԙ', 'ԛ' => 'Ԛ', '�' => 'Ԝ', 'ԟ' => 'Ԟ', 'ԡ' => 'Ԡ', 'ԣ' => 'Ԣ', 'ԥ' => 'Ԥ', 'ԧ' => 'Ԧ', 'ԩ' => 'Ԩ', 'ԫ' => 'Ԫ', 'ԭ' => 'Ԭ', 'ԯ' => 'Ԯ', 'ա' => 'Ա', 'բ' => 'Բ', 'գ' => 'Գ', 'դ' => 'Դ', 'ե' => 'Ե', 'զ' => 'Զ', 'է' => 'Է', 'ը' => 'Ը', 'թ' => 'Թ', 'ժ' => 'Ժ', 'ի' => 'Ի', 'լ' => 'Լ', 'խ' => 'Խ', 'ծ' => 'Ծ', 'կ' => 'Կ', 'հ' => 'Հ', 'ձ' => '�', 'ղ' => 'Ղ', 'ճ' => 'Ճ', 'մ' => 'Մ', 'յ' => 'Յ', 'ն' => 'Ն', 'շ' => 'Շ', 'ո' => 'Ո', 'չ' => 'Չ', 'պ' => 'Պ', 'ջ' => 'Ջ', 'ռ' => 'Ռ', 'ս' => '�', 'վ' => 'Վ', 'տ' => '�', 'ր' => '�', '�' => 'Ց', 'ւ' => 'Ւ', 'փ' => 'Փ', 'ք' => 'Ք', 'օ' => 'Օ', 'ֆ' => 'Ֆ', '�' => '�', 'ბ' => 'Ბ', 'გ' => 'Გ', 'დ' => 'Დ', 'ე' => 'Ე', 'ვ' => 'Ვ', 'ზ' => 'Ზ', 'თ' => 'Თ', 'ი' => 'Ი', 'კ' => 'Კ', 'ლ' => 'Ლ', 'მ' => 'Მ', 'ნ' => 'Ნ', '�' => '�', 'პ' => 'Პ', 'ჟ' => 'Ჟ', 'რ' => 'Რ', 'ს' => 'Ს', 'ტ' => 'Ტ', 'უ' => 'Უ', 'ფ' => 'Ფ', 'ქ' => 'Ქ', 'ღ' => 'Ღ', 'ყ' => 'Ყ', 'შ' => 'Შ', 'ჩ' => 'Ჩ', 'ც' => 'Ც', 'ძ' => 'Ძ', 'წ' => 'Წ', 'ჭ' => 'Ჭ', 'ხ' => 'Ხ', 'ჯ' => 'Ჯ', 'ჰ' => 'Ჰ', 'ჱ' => 'Ჱ', 'ჲ' => 'Ჲ', 'ჳ' => 'Ჳ', 'ჴ' => 'Ჴ', 'ჵ' => 'Ჵ', 'ჶ' => 'Ჶ', 'ჷ' => 'Ჷ', 'ჸ' => 'Ჸ', 'ჹ' => 'Ჹ', 'ჺ' => 'Ჺ', 'ჽ' => 'Ჽ', 'ჾ' => 'Ჾ', 'ჿ' => 'Ჿ', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', 'ᲀ' => 'В', '�' => 'Д', 'ᲂ' => 'О', 'ᲃ' => 'С', 'ᲄ' => 'Т', 'ᲅ' => 'Т', 'ᲆ' => 'Ъ', 'ᲇ' => 'Ѣ', 'ᲈ' => 'Ꙋ', 'ᵹ' => '�', 'ᵽ' => 'Ᵽ', 'ᶎ' => 'Ᶎ', '�' => 'Ḁ', 'ḃ' => 'Ḃ', 'ḅ' => 'Ḅ', 'ḇ' => 'Ḇ', 'ḉ' => 'Ḉ', 'ḋ' => 'Ḋ', '�' => 'Ḍ', '�' => 'Ḏ', 'ḑ' => '�', 'ḓ' => 'Ḓ', 'ḕ' => 'Ḕ', 'ḗ' => 'Ḗ', 'ḙ' => 'Ḙ', 'ḛ' => 'Ḛ', '�' => 'Ḝ', 'ḟ' => 'Ḟ', 'ḡ' => 'Ḡ', 'ḣ' => 'Ḣ', 'ḥ' => 'Ḥ', 'ḧ' => 'Ḧ', 'ḩ' => 'Ḩ', 'ḫ' => 'Ḫ', 'ḭ' => 'Ḭ', 'ḯ' => 'Ḯ', 'ḱ' => 'Ḱ', 'ḳ' => 'Ḳ', 'ḵ' => 'Ḵ', 'ḷ' => 'Ḷ', 'ḹ' => 'Ḹ', 'ḻ' => 'Ḻ', 'ḽ' => 'Ḽ', 'ḿ' => 'Ḿ', '�' => 'Ṁ', 'ṃ' => 'Ṃ', 'ṅ' => 'Ṅ', 'ṇ' => 'Ṇ', 'ṉ' => 'Ṉ', 'ṋ' => 'Ṋ', '�' => 'Ṍ', '�' => 'Ṏ', 'ṑ' => '�', 'ṓ' => 'Ṓ', 'ṕ' => 'Ṕ', 'ṗ' => 'Ṗ', 'ṙ' => 'Ṙ', 'ṛ' => 'Ṛ', '�' => 'Ṝ', 'ṟ' => 'Ṟ', 'ṡ' => 'Ṡ', 'ṣ' => 'Ṣ', 'ṥ' => 'Ṥ', 'ṧ' => 'Ṧ', 'ṩ' => 'Ṩ', 'ṫ' => 'Ṫ', 'ṭ' => 'Ṭ', 'ṯ' => 'Ṯ', 'ṱ' => 'Ṱ', 'ṳ' => 'Ṳ', 'ṵ' => 'Ṵ', 'ṷ' => 'Ṷ', 'ṹ' => 'Ṹ', 'ṻ' => 'Ṻ', 'ṽ' => 'Ṽ', 'ṿ' => 'Ṿ', '�' => 'Ẁ', 'ẃ' => 'Ẃ', 'ẅ' => 'Ẅ', 'ẇ' => 'Ẇ', 'ẉ' => 'Ẉ', 'ẋ' => 'Ẋ', '�' => 'Ẍ', '�' => 'Ẏ', 'ẑ' => '�', 'ẓ' => 'Ẓ', 'ẕ' => 'Ẕ', 'ẛ' => 'Ṡ', 'ạ' => 'Ạ', 'ả' => 'Ả', 'ấ' => 'Ấ', 'ầ' => 'Ầ', 'ẩ' => 'Ẩ', 'ẫ' => 'Ẫ', 'ậ' => 'Ậ', 'ắ' => 'Ắ', 'ằ' => 'Ằ', 'ẳ' => 'Ẳ', 'ẵ' => 'Ẵ', 'ặ' => 'Ặ', 'ẹ' => 'Ẹ', 'ẻ' => 'Ẻ', 'ẽ' => 'Ẽ', 'ế' => 'Ế', '�' => 'Ề', 'ể' => 'Ể', 'ễ' => 'Ễ', 'ệ' => 'Ệ', 'ỉ' => 'Ỉ', 'ị' => 'Ị', '�' => 'Ọ', '�' => 'Ỏ', 'ố' => '�', 'ồ' => 'Ồ', 'ổ' => 'Ổ', 'ỗ' => 'Ỗ', 'ộ' => 'Ộ', 'ớ' => 'Ớ', '�' => 'Ờ', 'ở' => 'Ở', 'ỡ' => 'Ỡ', 'ợ' => 'Ợ', 'ụ' => 'Ụ', 'ủ' => 'Ủ', 'ứ' => 'Ứ', 'ừ' => 'Ừ', 'ử' => 'Ử', 'ữ' => 'Ữ', 'ự' => 'Ự', 'ỳ' => 'Ỳ', 'ỵ' => 'Ỵ', 'ỷ' => 'Ỷ', 'ỹ' => 'Ỹ', 'ỻ' => 'Ỻ', 'ỽ' => 'Ỽ', 'ỿ' => 'Ỿ', 'ἀ' => 'Ἀ', '�' => 'Ἁ', 'ἂ' => 'Ἂ', 'ἃ' => 'Ἃ', 'ἄ' => 'Ἄ', 'ἅ' => '�', 'ἆ' => 'Ἆ', 'ἇ' => '�', '�' => 'Ἐ', 'ἑ' => 'Ἑ', 'ἒ' => 'Ἒ', 'ἓ' => 'Ἓ', 'ἔ' => 'Ἔ', 'ἕ' => '�', 'ἠ' => 'Ἠ', 'ἡ' => 'Ἡ', 'ἢ' => 'Ἢ', 'ἣ' => 'Ἣ', 'ἤ' => 'Ἤ', 'ἥ' => 'Ἥ', 'ἦ' => 'Ἦ', 'ἧ' => 'Ἧ', 'ἰ' => 'Ἰ', 'ἱ' => 'Ἱ', 'ἲ' => 'Ἲ', 'ἳ' => 'Ἳ', 'ἴ' => 'Ἴ', 'ἵ' => 'Ἵ', 'ἶ' => 'Ἶ', 'ἷ' => 'Ἷ', 'ὀ' => 'Ὀ', '�' => 'Ὁ', 'ὂ' => 'Ὂ', 'ὃ' => 'Ὃ', 'ὄ' => 'Ὄ', 'ὅ' => '�', 'ὑ' => 'Ὑ', 'ὓ' => 'Ὓ', 'ὕ' => '�', 'ὗ' => 'Ὗ', 'ὠ' => 'Ὠ', 'ὡ' => 'Ὡ', 'ὢ' => 'Ὢ', 'ὣ' => 'Ὣ', 'ὤ' => 'Ὤ', 'ὥ' => 'Ὥ', 'ὦ' => 'Ὦ', 'ὧ' => 'Ὧ', 'ὰ' => 'Ὰ', 'ά' => 'Ά', 'ὲ' => 'Ὲ', 'έ' => 'Έ', 'ὴ' => 'Ὴ', 'ή' => 'Ή', 'ὶ' => 'Ὶ', 'ί' => 'Ί', 'ὸ' => 'Ὸ', 'ό' => 'Ό', 'ὺ' => 'Ὺ', 'ύ' => 'Ύ', 'ὼ' => 'Ὼ', 'ώ' => 'Ώ', 'ᾀ' => 'ᾈ', '�' => 'ᾉ', 'ᾂ' => 'ᾊ', 'ᾃ' => 'ᾋ', 'ᾄ' => 'ᾌ', 'ᾅ' => '�', 'ᾆ' => 'ᾎ', 'ᾇ' => '�', '�' => 'ᾘ', 'ᾑ' => 'ᾙ', 'ᾒ' => 'ᾚ', 'ᾓ' => 'ᾛ', 'ᾔ' => 'ᾜ', 'ᾕ' => '�', 'ᾖ' => 'ᾞ', 'ᾗ' => 'ᾟ', 'ᾠ' => 'ᾨ', 'ᾡ' => 'ᾩ', 'ᾢ' => 'ᾪ', 'ᾣ' => 'ᾫ', 'ᾤ' => 'ᾬ', 'ᾥ' => 'ᾭ', 'ᾦ' => 'ᾮ', 'ᾧ' => 'ᾯ', 'ᾰ' => 'Ᾰ', 'ᾱ' => 'Ᾱ', 'ᾳ' => 'ᾼ', 'ι' => 'Ι', 'ῃ' => 'ῌ', '�' => 'Ῐ', 'ῑ' => 'Ῑ', 'ῠ' => 'Ῠ', 'ῡ' => 'Ῡ', 'ῥ' => 'Ῥ', 'ῳ' => 'ῼ', 'ⅎ' => 'Ⅎ', 'ⅰ' => 'Ⅰ', 'ⅱ' => 'Ⅱ', 'ⅲ' => 'Ⅲ', 'ⅳ' => 'Ⅳ', 'ⅴ' => 'Ⅴ', 'ⅵ' => 'Ⅵ', 'ⅶ' => 'Ⅶ', 'ⅷ' => 'Ⅷ', 'ⅸ' => 'Ⅸ', 'ⅹ' => 'Ⅹ', 'ⅺ' => 'Ⅺ', 'ⅻ' => 'Ⅻ', 'ⅼ' => 'Ⅼ', 'ⅽ' => 'Ⅽ', 'ⅾ' => 'Ⅾ', 'ⅿ' => 'Ⅿ', 'ↄ' => 'Ↄ', '�' => 'Ⓐ', 'ⓑ' => 'Ⓑ', 'ⓒ' => 'Ⓒ', 'ⓓ' => 'Ⓓ', 'ⓔ' => 'Ⓔ', 'ⓕ' => 'Ⓕ', 'ⓖ' => 'Ⓖ', 'ⓗ' => 'Ⓗ', 'ⓘ' => 'Ⓘ', 'ⓙ' => 'Ⓙ', 'ⓚ' => 'Ⓚ', 'ⓛ' => '�', 'ⓜ' => 'Ⓜ', '�' => 'Ⓝ', 'ⓞ' => 'Ⓞ', 'ⓟ' => 'Ⓟ', 'ⓠ' => 'Ⓠ', 'ⓡ' => 'Ⓡ', 'ⓢ' => 'Ⓢ', 'ⓣ' => 'Ⓣ', 'ⓤ' => 'Ⓤ', 'ⓥ' => 'Ⓥ', 'ⓦ' => 'Ⓦ', 'ⓧ' => '�', 'ⓨ' => 'Ⓨ', 'ⓩ' => '�', 'ⰰ' => 'Ⰰ', 'ⰱ' => '�', 'ⰲ' => 'Ⰲ', 'ⰳ' => 'Ⰳ', 'ⰴ' => 'Ⰴ', 'ⰵ' => 'Ⰵ', 'ⰶ' => 'Ⰶ', 'ⰷ' => 'Ⰷ', 'ⰸ' => 'Ⰸ', 'ⰹ' => 'Ⰹ', 'ⰺ' => 'Ⰺ', 'ⰻ' => 'Ⰻ', 'ⰼ' => 'Ⰼ', 'ⰽ' => '�', 'ⰾ' => 'Ⰾ', 'ⰿ' => '�', 'ⱀ' => '�', '�' => 'Ⱁ', 'ⱂ' => 'Ⱂ', 'ⱃ' => 'Ⱃ', 'ⱄ' => 'Ⱄ', 'ⱅ' => 'Ⱅ', 'ⱆ' => 'Ⱆ', 'ⱇ' => 'Ⱇ', 'ⱈ' => 'Ⱈ', 'ⱉ' => 'Ⱉ', 'ⱊ' => 'Ⱊ', 'ⱋ' => 'Ⱋ', 'ⱌ' => 'Ⱌ', '�' => '�', 'ⱎ' => 'Ⱎ', '�' => 'Ⱏ', '�' => 'Ⱐ', 'ⱑ' => 'Ⱑ', 'ⱒ' => 'Ⱒ', 'ⱓ' => 'Ⱓ', 'ⱔ' => 'Ⱔ', 'ⱕ' => 'Ⱕ', 'ⱖ' => 'Ⱖ', 'ⱗ' => 'Ⱗ', 'ⱘ' => 'Ⱘ', 'ⱙ' => 'Ⱙ', 'ⱚ' => 'Ⱚ', 'ⱛ' => 'Ⱛ', 'ⱜ' => 'Ⱜ', '�' => 'Ⱝ', 'ⱞ' => 'Ⱞ', 'ⱡ' => 'Ⱡ', 'ⱥ' => 'Ⱥ', 'ⱦ' => 'Ⱦ', 'ⱨ' => 'Ⱨ', 'ⱪ' => 'Ⱪ', 'ⱬ' => 'Ⱬ', 'ⱳ' => 'Ⱳ', 'ⱶ' => 'Ⱶ', '�' => 'Ⲁ', 'ⲃ' => 'Ⲃ', 'ⲅ' => 'Ⲅ', 'ⲇ' => 'Ⲇ', 'ⲉ' => 'Ⲉ', 'ⲋ' => 'Ⲋ', '�' => 'Ⲍ', '�' => 'Ⲏ', 'ⲑ' => '�', 'ⲓ' => 'Ⲓ', 'ⲕ' => 'Ⲕ', 'ⲗ' => 'Ⲗ', 'ⲙ' => 'Ⲙ', 'ⲛ' => 'Ⲛ', '�' => 'Ⲝ', 'ⲟ' => 'Ⲟ', 'ⲡ' => 'Ⲡ', 'ⲣ' => 'Ⲣ', 'ⲥ' => 'Ⲥ', 'ⲧ' => 'Ⲧ', 'ⲩ' => 'Ⲩ', 'ⲫ' => 'Ⲫ', 'ⲭ' => 'Ⲭ', 'ⲯ' => 'Ⲯ', 'ⲱ' => 'Ⲱ', 'ⲳ' => 'Ⲳ', 'ⲵ' => 'Ⲵ', 'ⲷ' => 'Ⲷ', 'ⲹ' => 'Ⲹ', 'ⲻ' => 'Ⲻ', 'ⲽ' => 'Ⲽ', 'ⲿ' => 'Ⲿ', '�' => 'Ⳁ', 'ⳃ' => 'Ⳃ', 'ⳅ' => 'Ⳅ', 'ⳇ' => 'Ⳇ', 'ⳉ' => 'Ⳉ', 'ⳋ' => 'Ⳋ', '�' => 'Ⳍ', '�' => 'Ⳏ', 'ⳑ' => '�', 'ⳓ' => 'Ⳓ', 'ⳕ' => 'Ⳕ', 'ⳗ' => 'Ⳗ', 'ⳙ' => 'Ⳙ', 'ⳛ' => 'Ⳛ', '�' => 'Ⳝ', 'ⳟ' => 'Ⳟ', 'ⳡ' => 'Ⳡ', 'ⳣ' => 'Ⳣ', 'ⳬ' => 'Ⳬ', 'ⳮ' => 'Ⳮ', 'ⳳ' => 'Ⳳ', 'ⴀ' => 'Ⴀ', '�' => 'Ⴁ', 'ⴂ' => 'Ⴂ', 'ⴃ' => 'Ⴃ', 'ⴄ' => 'Ⴄ', 'ⴅ' => 'Ⴅ', 'ⴆ' => 'Ⴆ', 'ⴇ' => 'Ⴇ', 'ⴈ' => 'Ⴈ', 'ⴉ' => 'Ⴉ', 'ⴊ' => 'Ⴊ', 'ⴋ' => 'Ⴋ', 'ⴌ' => 'Ⴌ', '�' => 'Ⴍ', 'ⴎ' => 'Ⴎ', '�' => 'Ⴏ', '�' => 'Ⴐ', 'ⴑ' => 'Ⴑ', 'ⴒ' => 'Ⴒ', 'ⴓ' => 'Ⴓ', 'ⴔ' => 'Ⴔ', 'ⴕ' => 'Ⴕ', 'ⴖ' => 'Ⴖ', 'ⴗ' => 'Ⴗ', 'ⴘ' => 'Ⴘ', 'ⴙ' => 'Ⴙ', 'ⴚ' => 'Ⴚ', 'ⴛ' => 'Ⴛ', 'ⴜ' => 'Ⴜ', '�' => 'Ⴝ', 'ⴞ' => 'Ⴞ', 'ⴟ' => 'Ⴟ', 'ⴠ' => 'Ⴠ', 'ⴡ' => '�', 'ⴢ' => 'Ⴢ', 'ⴣ' => 'Ⴣ', 'ⴤ' => 'Ⴤ', 'ⴥ' => 'Ⴥ', 'ⴧ' => 'Ⴧ', 'ⴭ' => '�', '�' => 'Ꙁ', 'ꙃ' => 'Ꙃ', 'ꙅ' => 'Ꙅ', 'ꙇ' => 'Ꙇ', 'ꙉ' => 'Ꙉ', 'ꙋ' => 'Ꙋ', '�' => 'Ꙍ', '�' => 'Ꙏ', 'ꙑ' => '�', 'ꙓ' => 'Ꙓ', 'ꙕ' => 'Ꙕ', 'ꙗ' => 'Ꙗ', 'ꙙ' => 'Ꙙ', 'ꙛ' => 'Ꙛ', '�' => 'Ꙝ', 'ꙟ' => 'Ꙟ', 'ꙡ' => 'Ꙡ', 'ꙣ' => 'Ꙣ', 'ꙥ' => 'Ꙥ', 'ꙧ' => 'Ꙧ', 'ꙩ' => 'Ꙩ', 'ꙫ' => 'Ꙫ', 'ꙭ' => 'Ꙭ', '�' => 'Ꚁ', 'ꚃ' => 'Ꚃ', 'ꚅ' => 'Ꚅ', 'ꚇ' => 'Ꚇ', 'ꚉ' => 'Ꚉ', 'ꚋ' => 'Ꚋ', '�' => 'Ꚍ', '�' => 'Ꚏ', 'ꚑ' => '�', 'ꚓ' => 'Ꚓ', 'ꚕ' => 'Ꚕ', 'ꚗ' => 'Ꚗ', 'ꚙ' => 'Ꚙ', 'ꚛ' => 'Ꚛ', 'ꜣ' => 'Ꜣ', 'ꜥ' => 'Ꜥ', 'ꜧ' => 'Ꜧ', 'ꜩ' => 'Ꜩ', 'ꜫ' => 'Ꜫ', 'ꜭ' => 'Ꜭ', 'ꜯ' => 'Ꜯ', 'ꜳ' => 'Ꜳ', 'ꜵ' => 'Ꜵ', 'ꜷ' => 'Ꜷ', 'ꜹ' => 'Ꜹ', 'ꜻ' => 'Ꜻ', 'ꜽ' => 'Ꜽ', 'ꜿ' => 'Ꜿ', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => 'Ꞁ', 'ꞃ' => 'Ꞃ', 'ꞅ' => 'Ꞅ', 'ꞇ' => 'Ꞇ', 'ꞌ' => 'Ꞌ', 'ꞑ' => '�', 'ꞓ' => 'Ꞓ', 'ꞔ' => 'Ꞔ', 'ꞗ' => 'Ꞗ', 'ꞙ' => 'Ꞙ', 'ꞛ' => 'Ꞛ', '�' => 'Ꞝ', 'ꞟ' => 'Ꞟ', 'ꞡ' => 'Ꞡ', 'ꞣ' => 'Ꞣ', 'ꞥ' => 'Ꞥ', 'ꞧ' => 'Ꞧ', 'ꞩ' => 'Ꞩ', 'ꞵ' => 'Ꞵ', 'ꞷ' => 'Ꞷ', 'ꞹ' => 'Ꞹ', 'ꞻ' => 'Ꞻ', 'ꞽ' => 'Ꞽ', 'ꞿ' => 'Ꞿ', 'ꟃ' => 'Ꟃ', 'ꟈ' => 'Ꟈ', 'ꟊ' => 'Ꟊ', 'ꟶ' => 'Ꟶ', 'ꭓ' => 'Ꭓ', 'ꭰ' => 'Ꭰ', 'ꭱ' => 'Ꭱ', 'ꭲ' => 'Ꭲ', 'ꭳ' => 'Ꭳ', 'ꭴ' => 'Ꭴ', 'ꭵ' => 'Ꭵ', 'ꭶ' => 'Ꭶ', 'ꭷ' => 'Ꭷ', 'ꭸ' => 'Ꭸ', 'ꭹ' => 'Ꭹ', 'ꭺ' => 'Ꭺ', 'ꭻ' => 'Ꭻ', 'ꭼ' => 'Ꭼ', 'ꭽ' => 'Ꭽ', 'ꭾ' => 'Ꭾ', 'ꭿ' => 'Ꭿ', 'ꮀ' => 'Ꮀ', '�' => 'Ꮁ', 'ꮂ' => 'Ꮂ', 'ꮃ' => 'Ꮃ', 'ꮄ' => 'Ꮄ', 'ꮅ' => 'Ꮅ', 'ꮆ' => 'Ꮆ', 'ꮇ' => 'Ꮇ', 'ꮈ' => 'Ꮈ', 'ꮉ' => 'Ꮉ', 'ꮊ' => 'Ꮊ', 'ꮋ' => 'Ꮋ', 'ꮌ' => 'Ꮌ', '�' => 'Ꮍ', 'ꮎ' => 'Ꮎ', '�' => 'Ꮏ', '�' => '�', 'ꮑ' => '�', 'ꮒ' => '�', 'ꮓ' => '�', 'ꮔ' => '�', 'ꮕ' => '�', 'ꮖ' => '�', 'ꮗ' => '�', 'ꮘ' => '�', 'ꮙ' => '�', 'ꮚ' => '�', 'ꮛ' => '�', 'ꮜ' => '�', '�' => '�', 'ꮞ' => '�', 'ꮟ' => '�', 'ꮠ' => '�', 'ꮡ' => '�', 'ꮢ' => '�', 'ꮣ' => '�', 'ꮤ' => '�', 'ꮥ' => '�', 'ꮦ' => '�', 'ꮧ' => '�', 'ꮨ' => '�', 'ꮩ' => '�', 'ꮪ' => '�', 'ꮫ' => '�', 'ꮬ' => '�', 'ꮭ' => '�', 'ꮮ' => '�', 'ꮯ' => '�', 'ꮰ' => '�', 'ꮱ' => '�', 'ꮲ' => '�', 'ꮳ' => '�', 'ꮴ' => '�', 'ꮵ' => '�', 'ꮶ' => '�', 'ꮷ' => '�', 'ꮸ' => '�', 'ꮹ' => '�', 'ꮺ' => '�', 'ꮻ' => '�', 'ꮼ' => '�', 'ꮽ' => '�', 'ꮾ' => '�', 'ꮿ' => '�', '�' => 'A', 'b' => 'B', 'c' => 'C', 'd' => 'D', 'e' => 'E', 'f' => 'F', 'g' => 'G', 'h' => 'H', 'i' => 'I', 'j' => 'J', 'k' => 'K', 'l' => 'L', '�' => 'M', 'n' => 'N', '�' => 'O', '�' => 'P', 'q' => 'Q', 'r' => 'R', 's' => 'S', 't' => 'T', 'u' => 'U', 'v' => 'V', 'w' => 'W', 'x' => 'X', 'y' => 'Y', 'z' => 'Z', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '�' => '�', '𑣀' => '𑢠', '�' => '𑢡', '𑣂' => '𑢢', '𑣃' => '𑢣', '𑣄' => '𑢤', '𑣅' => '𑢥', '𑣆' => '𑢦', '𑣇' => '𑢧', '𑣈' => '𑢨', '𑣉' => '𑢩', '𑣊' => '𑢪', '𑣋' => '𑢫', '𑣌' => '𑢬', '�' => '𑢭', '𑣎' => '𑢮', '�' => '𑢯', '�' => '𑢰', '𑣑' => '𑢱', '𑣒' => '𑢲', '𑣓' => '𑢳', '𑣔' => '𑢴', '𑣕' => '𑢵', '𑣖' => '𑢶', '𑣗' => '𑢷', '𑣘' => '𑢸', '𑣙' => '𑢹', '𑣚' => '𑢺', '𑣛' => '𑢻', '𑣜' => '𑢼', '�' => '𑢽', '𑣞' => '𑢾', '𑣟' => '𑢿', '𖹠' => '𖹀', '𖹡' => '�', '𖹢' => '𖹂', '𖹣' => '𖹃', '𖹤' => '𖹄', '𖹥' => '𖹅', '𖹦' => '𖹆', '𖹧' => '𖹇', '𖹨' => '𖹈', '𖹩' => '𖹉', '𖹪' => '𖹊', '𖹫' => '𖹋', '𖹬' => '𖹌', '𖹭' => '�', '𖹮' => '𖹎', '𖹯' => '�', '𖹰' => '�', '𖹱' => '𖹑', '𖹲' => '𖹒', '𖹳' => '𖹓', '𖹴' => '𖹔', '𖹵' => '𖹕', '𖹶' => '𖹖', '𖹷' => '𖹗', '𖹸' => '𖹘', '𖹹' => '𖹙', '𖹺' => '𖹚', '𖹻' => '𖹛', '𖹼' => '𖹜', '𖹽' => '�', '𖹾' => '𖹞', '𖹿' => '𖹟', '𞤢' => '𞤀', '𞤣' => '�', '𞤤' => '𞤂', '𞤥' => '𞤃', '𞤦' => '𞤄', '𞤧' => '𞤅', '𞤨' => '𞤆', '𞤩' => '𞤇', '𞤪' => '𞤈', '𞤫' => '𞤉', '𞤬' => '𞤊', '𞤭' => '𞤋', '𞤮' => '𞤌', '𞤯' => '�', '𞤰' => '𞤎', '𞤱' => '�', '𞤲' => '�', '𞤳' => '𞤑', '𞤴' => '𞤒', '𞤵' => '𞤓', '𞤶' => '𞤔', '𞤷' => '𞤕', '𞤸' => '𞤖', '𞤹' => '𞤗', '𞤺' => '𞤘', '𞤻' => '𞤙', '𞤼' => '𞤚', '𞤽' => '𞤛', '𞤾' => '𞤜', '𞤿' => '�', '𞥀' => '𞤞', '�' => '𞤟', '𞥂' => '𞤠', '𞥃' => '𞤡', ); * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ use Symfony\Polyfill\Mbstring as p; if (!function_exists('mb_convert_variables')) { /** * Convert character code in variable(s) */ function mb_convert_variables($to_encoding, $from_encoding, &$var, &...$vars) { $vars = [&$var, ...$vars]; $ok = true; array_walk_recursive($vars, function (&$v) use (&$ok, $to_encoding, $from_encoding) { if (false === $v = p\Mbstring::mb_convert_encoding($v, $to_encoding, $from_encoding)) { $ok = false; } }); return $ok ? $from_encoding : false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Polyfill\Mbstring; /** * Partial mbstring implementation in PHP, iconv based, UTF-8 centric. * * Implemented: * - mb_chr - Returns a specific character from its Unicode code point * - mb_convert_encoding - Convert character encoding * - mb_convert_variables - Convert character code in variable(s) * - mb_decode_mimeheader - Decode string in MIME header field * - mb_encode_mimeheader - Encode string for MIME header XXX NATIVE IMPLEMENTATION IS REALLY BUGGED * - mb_decode_numericentity - Decode HTML numeric string reference to character * - mb_encode_numericentity - Encode character to HTML numeric string reference * - mb_convert_case - Perform case folding on a string * - mb_detect_encoding - Detect character encoding * - mb_get_info - Get internal settings of mbstring * - mb_http_input - Detect HTTP input character encoding * - mb_http_output - Set/Get HTTP output character encoding * - mb_internal_encoding - Set/Get internal character encoding * - mb_list_encodings - Returns an array of all supported encodings * - mb_ord - Returns the Unicode code point of a character * - mb_output_handler - Callback function converts character encoding in output buffer * - mb_scrub - Replaces ill-formed byte sequences with substitute characters * - mb_strlen - Get string length * - mb_strpos - Find position of first occurrence of string in a string * - mb_strrpos - Find position of last occurrence of a string in a string * - mb_str_split - Convert a string to an array * - mb_strtolower - Make a string lowercase * - mb_strtoupper - Make a string uppercase * - mb_substitute_character - Set/Get substitution character * - mb_substr - Get part of string * - mb_stripos - Finds position of first occurrence of a string within another, case insensitive * - mb_stristr - Finds first occurrence of a string within another, case insensitive * - mb_strrchr - Finds the last occurrence of a character in a string within another * - mb_strrichr - Finds the last occurrence of a character in a string within another, case insensitive * - mb_strripos - Finds position of last occurrence of a string within another, case insensitive * - mb_strstr - Finds first occurrence of a string within another * - mb_strwidth - Return width of string * - mb_substr_count - Count the number of substring occurrences * * Not implemented: * - mb_convert_kana - Convert "kana" one from another ("zen-kaku", "han-kaku" and more) * - mb_ereg_* - Regular expression with multibyte support * - mb_parse_str - Parse GET/POST/COOKIE data and set global variable * - mb_preferred_mime_name - Get MIME charset string * - mb_regex_encoding - Returns current encoding for multibyte regex as string * - mb_regex_set_options - Set/Get the default options for mbregex functions * - mb_send_mail - Send encoded mail * - mb_split - Split multibyte string using regular expression * - mb_strcut - Get part of string * - mb_strimwidth - Get truncated string with specified width * * @author Nicolas Grekas * * @internal */ final class Mbstring { const MB_CASE_FOLD = PHP_INT_MAX; private static $encodingList = array('ASCII', 'UTF-8'); private static $language = 'neutral'; private static $internalEncoding = 'UTF-8'; private static $caseFold = array( array('µ', 'ſ', "\xCD\x85", 'ς', "\xCF\x90", "\xCF\x91", "\xCF\x95", "\xCF\x96", "\xCF\xB0", "\xCF\xB1", "\xCF\xB5", "\xE1\xBA\x9B", "\xE1\xBE\xBE"), array('μ', 's', 'ι', 'σ', 'β', 'θ', 'φ', 'π', 'κ', '�', 'ε', "\xE1\xB9\xA1", 'ι'), ); public static function mb_convert_encoding($s, $toEncoding, $fromEncoding = null) { if (\is_array($fromEncoding) || false !== strpos($fromEncoding, ',')) { $fromEncoding = self::mb_detect_encoding($s, $fromEncoding); } else { $fromEncoding = self::getEncoding($fromEncoding); } $toEncoding = self::getEncoding($toEncoding); if ('BASE64' === $fromEncoding) { $s = base64_decode($s); $fromEncoding = $toEncoding; } if ('BASE64' === $toEncoding) { return base64_encode($s); } if ('HTML-ENTITIES' === $toEncoding || 'HTML' === $toEncoding) { if ('HTML-ENTITIES' === $fromEncoding || 'HTML' === $fromEncoding) { $fromEncoding = 'Windows-1252'; } if ('UTF-8' !== $fromEncoding) { $s = iconv($fromEncoding, 'UTF-8//IGNORE', $s); } return preg_replace_callback('/[\x80-\xFF]+/', array(__CLASS__, 'html_encoding_callback'), $s); } if ('HTML-ENTITIES' === $fromEncoding) { $s = html_entity_decode($s, ENT_COMPAT, 'UTF-8'); $fromEncoding = 'UTF-8'; } return iconv($fromEncoding, $toEncoding.'//IGNORE', $s); } public static function mb_convert_variables($toEncoding, $fromEncoding, &$a = null, &$b = null, &$c = null, &$d = null, &$e = null, &$f = null) { $vars = array(&$a, &$b, &$c, &$d, &$e, &$f); $ok = true; array_walk_recursive($vars, function (&$v) use (&$ok, $toEncoding, $fromEncoding) { if (false === $v = Mbstring::mb_convert_encoding($v, $toEncoding, $fromEncoding)) { $ok = false; } }); return $ok ? $fromEncoding : false; } public static function mb_decode_mimeheader($s) { return iconv_mime_decode($s, 2, self::$internalEncoding); } public static function mb_encode_mimeheader($s, $charset = null, $transferEncoding = null, $linefeed = null, $indent = null) { trigger_error('mb_encode_mimeheader() is bugged. Please use iconv_mime_encode() instead', E_USER_WARNING); } public static function mb_decode_numericentity($s, $convmap, $encoding = null) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) { trigger_error('mb_decode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; } if (!\is_array($convmap) || !$convmap) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_decode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING); return ''; // Instead of null (cf. mb_encode_numericentity). } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $cnt = floor(\count($convmap) / 4) * 4; for ($i = 0; $i < $cnt; $i += 4) { // collector_decode_htmlnumericentity ignores $convmap[$i + 3] $convmap[$i] += $convmap[$i + 2]; $convmap[$i + 1] += $convmap[$i + 2]; } $s = preg_replace_callback('/&#(?:0*([0-9]+)|x0*([0-9a-fA-F]+))(?!&);?/', function (array $m) use ($cnt, $convmap) { $c = isset($m[2]) ? (int) hexdec($m[2]) : $m[1]; for ($i = 0; $i < $cnt; $i += 4) { if ($c >= $convmap[$i] && $c <= $convmap[$i + 1]) { return Mbstring::mb_chr($c - $convmap[$i + 2]); } } return $m[0]; }, $s); if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_encode_numericentity($s, $convmap, $encoding = null, $is_hex = false) { if (null !== $s && !\is_scalar($s) && !(\is_object($s) && \method_exists($s, '__toString'))) { trigger_error('mb_encode_numericentity() expects parameter 1 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; } if (!\is_array($convmap) || !$convmap) { return false; } if (null !== $encoding && !\is_scalar($encoding)) { trigger_error('mb_encode_numericentity() expects parameter 3 to be string, '.\gettype($s).' given', E_USER_WARNING); return null; // Instead of '' (cf. mb_decode_numericentity). } if (null !== $is_hex && !\is_scalar($is_hex)) { trigger_error('mb_encode_numericentity() expects parameter 4 to be boolean, '.\gettype($s).' given', E_USER_WARNING); return null; } $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); $cnt = floor(\count($convmap) / 4) * 4; $i = 0; $len = \strlen($s); $result = ''; while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; $c = self::mb_ord($uchr); for ($j = 0; $j < $cnt; $j += 4) { if ($c >= $convmap[$j] && $c <= $convmap[$j + 1]) { $cOffset = ($c + $convmap[$j + 2]) & $convmap[$j + 3]; $result .= $is_hex ? sprintf('&#x%X;', $cOffset) : '&#'.$cOffset.';'; continue 2; } } $result .= $uchr; } if (null === $encoding) { return $result; } return iconv('UTF-8', $encoding.'//IGNORE', $result); } public static function mb_convert_case($s, $mode, $encoding = null) { $s = (string) $s; if ('' === $s) { return ''; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding) { $encoding = null; if (!preg_match('//u', $s)) { $s = @iconv('UTF-8', 'UTF-8//IGNORE', $s); } } else { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } if (MB_CASE_TITLE == $mode) { static $titleRegexp = null; if (null === $titleRegexp) { $titleRegexp = self::getData('titleCaseRegexp'); } $s = preg_replace_callback($titleRegexp, array(__CLASS__, 'title_case'), $s); } else { if (MB_CASE_UPPER == $mode) { static $upper = null; if (null === $upper) { $upper = self::getData('upperCase'); } $map = $upper; } else { if (self::MB_CASE_FOLD === $mode) { $s = str_replace(self::$caseFold[0], self::$caseFold[1], $s); } static $lower = null; if (null === $lower) { $lower = self::getData('lowerCase'); } $map = $lower; } static $ulenMask = array("\xC0" => 2, "\xD0" => 2, "\xE0" => 3, "\xF0" => 4); $i = 0; $len = \strlen($s); while ($i < $len) { $ulen = $s[$i] < "\x80" ? 1 : $ulenMask[$s[$i] & "\xF0"]; $uchr = substr($s, $i, $ulen); $i += $ulen; if (isset($map[$uchr])) { $uchr = $map[$uchr]; $nlen = \strlen($uchr); if ($nlen == $ulen) { $nlen = $i; do { $s[--$nlen] = $uchr[--$ulen]; } while ($ulen); } else { $s = substr_replace($s, $uchr, $i - $ulen, $ulen); $len += $nlen - $ulen; $i += $nlen - $ulen; } } } } if (null === $encoding) { return $s; } return iconv('UTF-8', $encoding.'//IGNORE', $s); } public static function mb_internal_encoding($encoding = null) { if (null === $encoding) { return self::$internalEncoding; } $encoding = self::getEncoding($encoding); if ('UTF-8' === $encoding || false !== @iconv($encoding, $encoding, ' ')) { self::$internalEncoding = $encoding; return true; } return false; } public static function mb_language($lang = null) { if (null === $lang) { return self::$language; } switch ($lang = strtolower($lang)) { case 'uni': case 'neutral': self::$language = $lang; return true; } return false; } public static function mb_list_encodings() { return array('UTF-8'); } public static function mb_encoding_aliases($encoding) { switch (strtoupper($encoding)) { case 'UTF8': case 'UTF-8': return array('utf8'); } return false; } public static function mb_check_encoding($var = null, $encoding = null) { if (null === $encoding) { if (null === $var) { return false; } $encoding = self::$internalEncoding; } return self::mb_detect_encoding($var, array($encoding)) || false !== @iconv($encoding, $encoding, $var); } public static function mb_detect_encoding($str, $encodingList = null, $strict = false) { if (null === $encodingList) { $encodingList = self::$encodingList; } else { if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); } foreach ($encodingList as $enc) { switch ($enc) { case 'ASCII': if (!preg_match('/[\x80-\xFF]/', $str)) { return $enc; } break; case 'UTF8': case 'UTF-8': if (preg_match('//u', $str)) { return 'UTF-8'; } break; default: if (0 === strncmp($enc, 'ISO-8859-', 9)) { return $enc; } } } return false; } public static function mb_detect_order($encodingList = null) { if (null === $encodingList) { return self::$encodingList; } if (!\is_array($encodingList)) { $encodingList = array_map('trim', explode(',', $encodingList)); } $encodingList = array_map('strtoupper', $encodingList); foreach ($encodingList as $enc) { switch ($enc) { default: if (strncmp($enc, 'ISO-8859-', 9)) { return false; } // no break case 'ASCII': case 'UTF8': case 'UTF-8': } } self::$encodingList = $encodingList; return true; } public static function mb_strlen($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return \strlen($s); } return @iconv_strlen($s, $encoding); } public static function mb_strpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strpos($haystack, $needle, $offset); } $needle = (string) $needle; if ('' === $needle) { trigger_error(__METHOD__.': Empty delimiter', E_USER_WARNING); return false; } return iconv_strpos($haystack, $needle, $offset, $encoding); } public static function mb_strrpos($haystack, $needle, $offset = 0, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return strrpos($haystack, $needle, $offset); } if ($offset != (int) $offset) { $offset = 0; } elseif ($offset = (int) $offset) { if ($offset < 0) { if (0 > $offset += self::mb_strlen($needle)) { $haystack = self::mb_substr($haystack, 0, $offset, $encoding); } $offset = 0; } else { $haystack = self::mb_substr($haystack, $offset, 2147483647, $encoding); } } $pos = iconv_strrpos($haystack, $needle, $encoding); return false !== $pos ? $offset + $pos : false; } public static function mb_str_split($string, $split_length = 1, $encoding = null) { if (null !== $string && !\is_scalar($string) && !(\is_object($string) && \method_exists($string, '__toString'))) { trigger_error('mb_str_split() expects parameter 1 to be string, '.\gettype($string).' given', E_USER_WARNING); return null; } if (1 > $split_length = (int) $split_length) { trigger_error('The length of each segment must be greater than zero', E_USER_WARNING); return false; } if (null === $encoding) { $encoding = mb_internal_encoding(); } if ('UTF-8' === $encoding = self::getEncoding($encoding)) { $rx = '/('; while (65535 < $split_length) { $rx .= '.{65535}'; $split_length -= 65535; } $rx .= '.{'.$split_length.'})/us'; return preg_split($rx, $string, null, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY); } $result = array(); $length = mb_strlen($string, $encoding); for ($i = 0; $i < $length; $i += $split_length) { $result[] = mb_substr($string, $i, $split_length, $encoding); } return $result; } public static function mb_strtolower($s, $encoding = null) { return self::mb_convert_case($s, MB_CASE_LOWER, $encoding); } public static function mb_strtoupper($s, $encoding = null) { return self::mb_convert_case($s, MB_CASE_UPPER, $encoding); } public static function mb_substitute_character($c = null) { if (0 === strcasecmp($c, 'none')) { return true; } return null !== $c ? false : 'none'; } public static function mb_substr($s, $start, $length = null, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { return (string) substr($s, $start, null === $length ? 2147483647 : $length); } if ($start < 0) { $start = iconv_strlen($s, $encoding) + $start; if ($start < 0) { $start = 0; } } if (null === $length) { $length = 2147483647; } elseif ($length < 0) { $length = iconv_strlen($s, $encoding) + $length - $start; if ($length < 0) { return ''; } } return (string) iconv_substr($s, $start, $length, $encoding); } public static function mb_stripos($haystack, $needle, $offset = 0, $encoding = null) { $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); return self::mb_strpos($haystack, $needle, $offset, $encoding); } public static function mb_stristr($haystack, $needle, $part = false, $encoding = null) { $pos = self::mb_stripos($haystack, $needle, 0, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrchr($haystack, $needle, $part = false, $encoding = null) { $encoding = self::getEncoding($encoding); if ('CP850' === $encoding || 'ASCII' === $encoding) { $pos = strrpos($haystack, $needle); } else { $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = iconv_strrpos($haystack, $needle, $encoding); } return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strrichr($haystack, $needle, $part = false, $encoding = null) { $needle = self::mb_substr($needle, 0, 1, $encoding); $pos = self::mb_strripos($haystack, $needle, $encoding); return self::getSubpart($pos, $part, $haystack, $encoding); } public static function mb_strripos($haystack, $needle, $offset = 0, $encoding = null) { $haystack = self::mb_convert_case($haystack, self::MB_CASE_FOLD, $encoding); $needle = self::mb_convert_case($needle, self::MB_CASE_FOLD, $encoding); return self::mb_strrpos($haystack, $needle, $offset, $encoding); } public static function mb_strstr($haystack, $needle, $part = false, $encoding = null) { $pos = strpos($haystack, $needle); if (false === $pos) { return false; } if ($part) { return substr($haystack, 0, $pos); } return substr($haystack, $pos); } public static function mb_get_info($type = 'all') { $info = array( 'internal_encoding' => self::$internalEncoding, 'http_output' => 'pass', 'http_output_conv_mimetypes' => '^(text/|application/xhtml\+xml)', 'func_overload' => 0, 'func_overload_list' => 'no overload', 'mail_charset' => 'UTF-8', 'mail_header_encoding' => 'BASE64', 'mail_body_encoding' => 'BASE64', 'illegal_chars' => 0, 'encoding_translation' => 'Off', 'language' => self::$language, 'detect_order' => self::$encodingList, 'substitute_character' => 'none', 'strict_detection' => 'Off', ); if ('all' === $type) { return $info; } if (isset($info[$type])) { return $info[$type]; } return false; } public static function mb_http_input($type = '') { return false; } public static function mb_http_output($encoding = null) { return null !== $encoding ? 'pass' === $encoding : 'pass'; } public static function mb_strwidth($s, $encoding = null) { $encoding = self::getEncoding($encoding); if ('UTF-8' !== $encoding) { $s = iconv($encoding, 'UTF-8//IGNORE', $s); } $s = preg_replace('/[\x{1100}-\x{115F}\x{2329}\x{232A}\x{2E80}-\x{303E}\x{3040}-\x{A4CF}\x{AC00}-\x{D7A3}\x{F900}-\x{FAFF}\x{FE10}-\x{FE19}\x{FE30}-\x{FE6F}\x{FF00}-\x{FF60}\x{FFE0}-\x{FFE6}\x{20000}-\x{2FFFD}\x{30000}-\x{3FFFD}]/u', '', $s, -1, $wide); return ($wide << 1) + iconv_strlen($s, 'UTF-8'); } public static function mb_substr_count($haystack, $needle, $encoding = null) { return substr_count($haystack, $needle); } public static function mb_output_handler($contents, $status) { return $contents; } public static function mb_chr($code, $encoding = null) { if (0x80 > $code %= 0x200000) { $s = \chr($code); } elseif (0x800 > $code) { $s = \chr(0xC0 | $code >> 6).\chr(0x80 | $code & 0x3F); } elseif (0x10000 > $code) { $s = \chr(0xE0 | $code >> 12).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } else { $s = \chr(0xF0 | $code >> 18).\chr(0x80 | $code >> 12 & 0x3F).\chr(0x80 | $code >> 6 & 0x3F).\chr(0x80 | $code & 0x3F); } if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, $encoding, 'UTF-8'); } return $s; } public static function mb_ord($s, $encoding = null) { if ('UTF-8' !== $encoding = self::getEncoding($encoding)) { $s = mb_convert_encoding($s, 'UTF-8', $encoding); } if (1 === \strlen($s)) { return \ord($s); } $code = ($s = unpack('C*', substr($s, 0, 4))) ? $s[1] : 0; if (0xF0 <= $code) { return (($code - 0xF0) << 18) + (($s[2] - 0x80) << 12) + (($s[3] - 0x80) << 6) + $s[4] - 0x80; } if (0xE0 <= $code) { return (($code - 0xE0) << 12) + (($s[2] - 0x80) << 6) + $s[3] - 0x80; } if (0xC0 <= $code) { return (($code - 0xC0) << 6) + $s[2] - 0x80; } return $code; } private static function getSubpart($pos, $part, $haystack, $encoding) { if (false === $pos) { return false; } if ($part) { return self::mb_substr($haystack, 0, $pos, $encoding); } return self::mb_substr($haystack, $pos, null, $encoding); } private static function html_encoding_callback(array $m) { $i = 1; $entities = ''; $m = unpack('C*', htmlentities($m[0], ENT_COMPAT, 'UTF-8')); while (isset($m[$i])) { if (0x80 > $m[$i]) { $entities .= \chr($m[$i++]); continue; } if (0xF0 <= $m[$i]) { $c = (($m[$i++] - 0xF0) << 18) + (($m[$i++] - 0x80) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } elseif (0xE0 <= $m[$i]) { $c = (($m[$i++] - 0xE0) << 12) + (($m[$i++] - 0x80) << 6) + $m[$i++] - 0x80; } else { $c = (($m[$i++] - 0xC0) << 6) + $m[$i++] - 0x80; } $entities .= '&#'.$c.';'; } return $entities; } private static function title_case(array $s) { return self::mb_convert_case($s[1], MB_CASE_UPPER, 'UTF-8').self::mb_convert_case($s[2], MB_CASE_LOWER, 'UTF-8'); } private static function getData($file) { if (file_exists($file = __DIR__.'/Resources/unidata/'.$file.'.php')) { return require $file; } return false; } private static function getEncoding($encoding) { if (null === $encoding) { return self::$internalEncoding; } if ('UTF-8' === $encoding) { return 'UTF-8'; } $encoding = strtoupper($encoding); if ('8BIT' === $encoding || 'BINARY' === $encoding) { return 'CP850'; } if ('UTF8' === $encoding) { return 'UTF-8'; } return $encoding; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Tester; use Symfony\Component\Console\Application; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\StreamOutput; /** * Eases the testing of console applications. * * When testing an application, don't forget to disable the auto exit flag: * * $application = new Application(); * $application->setAutoExit(false); * * @author Fabien Potencier */ class ApplicationTester { private $application; private $input; private $statusCode; /** * @var OutputInterface */ private $output; private $captureStreamsIndependently = false; public function __construct(Application $application) { $this->application = $application; } /** * Executes the application. * * Available options: * * * interactive: Sets the input interactive flag * * decorated: Sets the output decorated flag * * verbosity: Sets the output verbosity flag * * capture_stderr_separately: Make output of stdOut and stdErr separately available * * @param array $input An array of arguments and options * @param array $options An array of options * * @return int The command exit code */ public function run(array $input, $options = []) { $this->input = new ArrayInput($input); if (isset($options['interactive'])) { $this->input->setInteractive($options['interactive']); } $this->captureStreamsIndependently = \array_key_exists('capture_stderr_separately', $options) && $options['capture_stderr_separately']; if (!$this->captureStreamsIndependently) { $this->output = new StreamOutput(fopen('php://memory', 'w', false)); if (isset($options['decorated'])) { $this->output->setDecorated($options['decorated']); } if (isset($options['verbosity'])) { $this->output->setVerbosity($options['verbosity']); } } else { $this->output = new ConsoleOutput( isset($options['verbosity']) ? $options['verbosity'] : ConsoleOutput::VERBOSITY_NORMAL, isset($options['decorated']) ? $options['decorated'] : null ); $errorOutput = new StreamOutput(fopen('php://memory', 'w', false)); $errorOutput->setFormatter($this->output->getFormatter()); $errorOutput->setVerbosity($this->output->getVerbosity()); $errorOutput->setDecorated($this->output->isDecorated()); $reflectedOutput = new \ReflectionObject($this->output); $strErrProperty = $reflectedOutput->getProperty('stderr'); $strErrProperty->setAccessible(true); $strErrProperty->setValue($this->output, $errorOutput); $reflectedParent = $reflectedOutput->getParentClass(); $streamProperty = $reflectedParent->getProperty('stream'); $streamProperty->setAccessible(true); $streamProperty->setValue($this->output, fopen('php://memory', 'w', false)); } return $this->statusCode = $this->application->run($this->input, $this->output); } /** * Gets the display returned by the last execution of the application. * * @param bool $normalize Whether to normalize end of lines to \n or not * * @return string The display */ public function getDisplay($normalize = false) { rewind($this->output->getStream()); $display = stream_get_contents($this->output->getStream()); if ($normalize) { $display = str_replace(\PHP_EOL, "\n", $display); } return $display; } /** * Gets the output written to STDERR by the application. * * @param bool $normalize Whether to normalize end of lines to \n or not * * @return string */ public function getErrorOutput($normalize = false) { if (!$this->captureStreamsIndependently) { throw new \LogicException('The error output is not available when the tester is run without "capture_stderr_separately" option set.'); } rewind($this->output->getErrorOutput()->getStream()); $display = stream_get_contents($this->output->getErrorOutput()->getStream()); if ($normalize) { $display = str_replace(\PHP_EOL, "\n", $display); } return $display; } /** * Gets the input instance used by the last execution of the application. * * @return InputInterface The current input instance */ public function getInput() { return $this->input; } /** * Gets the output instance used by the last execution of the application. * * @return OutputInterface The current output instance */ public function getOutput() { return $this->output; } /** * Gets the status code returned by the last execution of the application. * * @return int The status code */ public function getStatusCode() { return $this->statusCode; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Tester; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Output\StreamOutput; /** * Eases the testing of console commands. * * @author Fabien Potencier * @author Robin Chalas */ class CommandTester { private $command; private $input; private $output; private $inputs = []; private $statusCode; public function __construct(Command $command) { $this->command = $command; } /** * Executes the command. * * Available execution options: * * * interactive: Sets the input interactive flag * * decorated: Sets the output decorated flag * * verbosity: Sets the output verbosity flag * * @param array $input An array of command arguments and options * @param array $options An array of execution options * * @return int The command exit code */ public function execute(array $input, array $options = []) { // set the command name automatically if the application requires // this argument and no command name was passed if (!isset($input['command']) && (null !== $application = $this->command->getApplication()) && $application->getDefinition()->hasArgument('command') ) { $input = array_merge(['command' => $this->command->getName()], $input); } $this->input = new ArrayInput($input); // Use an in-memory input stream even if no inputs are set so that QuestionHelper::ask() does not rely on the blocking STDIN. $this->input->setStream(self::createStream($this->inputs)); if (isset($options['interactive'])) { $this->input->setInteractive($options['interactive']); } $this->output = new StreamOutput(fopen('php://memory', 'w', false)); $this->output->setDecorated(isset($options['decorated']) ? $options['decorated'] : false); if (isset($options['verbosity'])) { $this->output->setVerbosity($options['verbosity']); } return $this->statusCode = $this->command->run($this->input, $this->output); } /** * Gets the display returned by the last execution of the command. * * @param bool $normalize Whether to normalize end of lines to \n or not * * @return string The display */ public function getDisplay($normalize = false) { if (null === $this->output) { throw new \RuntimeException('Output not initialized, did you execute the command before requesting the display?'); } rewind($this->output->getStream()); $display = stream_get_contents($this->output->getStream()); if ($normalize) { $display = str_replace(\PHP_EOL, "\n", $display); } return $display; } /** * Gets the input instance used by the last execution of the command. * * @return InputInterface The current input instance */ public function getInput() { return $this->input; } /** * Gets the output instance used by the last execution of the command. * * @return OutputInterface The current output instance */ public function getOutput() { return $this->output; } /** * Gets the status code returned by the last execution of the application. * * @return int The status code */ public function getStatusCode() { return $this->statusCode; } /** * Sets the user inputs. * * @param array $inputs An array of strings representing each input * passed to the command input stream * * @return CommandTester */ public function setInputs(array $inputs) { $this->inputs = $inputs; return $this; } private static function createStream(array $inputs) { $stream = fopen('php://memory', 'r+', false); foreach ($inputs as $input) { fwrite($stream, $input.\PHP_EOL); } rewind($stream); return $stream; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Question; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; /** * Represents a Question. * * @author Fabien Potencier */ class Question { private $question; private $attempts; private $hidden = false; private $hiddenFallback = true; private $autocompleterValues; private $validator; private $default; private $normalizer; /** * @param string $question The question to ask to the user * @param mixed $default The default answer to return if the user enters nothing */ public function __construct($question, $default = null) { $this->question = $question; $this->default = $default; } /** * Returns the question. * * @return string */ public function getQuestion() { return $this->question; } /** * Returns the default answer. * * @return mixed */ public function getDefault() { return $this->default; } /** * Returns whether the user response must be hidden. * * @return bool */ public function isHidden() { return $this->hidden; } /** * Sets whether the user response must be hidden or not. * * @param bool $hidden * * @return $this * * @throws LogicException In case the autocompleter is also used */ public function setHidden($hidden) { if ($this->autocompleterValues) { throw new LogicException('A hidden question cannot use the autocompleter.'); } $this->hidden = (bool) $hidden; return $this; } /** * In case the response can not be hidden, whether to fallback on non-hidden question or not. * * @return bool */ public function isHiddenFallback() { return $this->hiddenFallback; } /** * Sets whether to fallback on non-hidden question if the response can not be hidden. * * @param bool $fallback * * @return $this */ public function setHiddenFallback($fallback) { $this->hiddenFallback = (bool) $fallback; return $this; } /** * Gets values for the autocompleter. * * @return iterable|null */ public function getAutocompleterValues() { return $this->autocompleterValues; } /** * Sets values for the autocompleter. * * @param iterable|null $values * * @return $this * * @throws InvalidArgumentException * @throws LogicException */ public function setAutocompleterValues($values) { if (\is_array($values)) { $values = $this->isAssoc($values) ? array_merge(array_keys($values), array_values($values)) : array_values($values); } if (null !== $values && !\is_array($values) && !$values instanceof \Traversable) { throw new InvalidArgumentException('Autocompleter values can be either an array, `null` or a `Traversable` object.'); } if ($this->hidden) { throw new LogicException('A hidden question cannot use the autocompleter.'); } $this->autocompleterValues = $values; return $this; } /** * Sets a validator for the question. * * @return $this */ public function setValidator(callable $validator = null) { $this->validator = $validator; return $this; } /** * Gets the validator for the question. * * @return callable|null */ public function getValidator() { return $this->validator; } /** * Sets the maximum number of attempts. * * Null means an unlimited number of attempts. * * @param int|null $attempts * * @return $this * * @throws InvalidArgumentException in case the number of attempts is invalid */ public function setMaxAttempts($attempts) { if (null !== $attempts) { $attempts = (int) $attempts; if ($attempts < 1) { throw new InvalidArgumentException('Maximum number of attempts must be a positive value.'); } } $this->attempts = $attempts; return $this; } /** * Gets the maximum number of attempts. * * Null means an unlimited number of attempts. * * @return int|null */ public function getMaxAttempts() { return $this->attempts; } /** * Sets a normalizer for the response. * * The normalizer can be a callable (a string), a closure or a class implementing __invoke. * * @return $this */ public function setNormalizer(callable $normalizer) { $this->normalizer = $normalizer; return $this; } /** * Gets the normalizer for the response. * * The normalizer can ba a callable (a string), a closure or a class implementing __invoke. * * @return callable|null */ public function getNormalizer() { return $this->normalizer; } protected function isAssoc($array) { return (bool) \count(array_filter(array_keys($array), 'is_string')); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Question; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * Represents a choice question. * * @author Fabien Potencier */ class ChoiceQuestion extends Question { private $choices; private $multiselect = false; private $prompt = ' > '; private $errorMessage = 'Value "%s" is invalid'; /** * @param string $question The question to ask to the user * @param array $choices The list of available choices * @param mixed $default The default answer to return */ public function __construct($question, array $choices, $default = null) { if (!$choices) { throw new \LogicException('Choice question must have at least 1 choice available.'); } parent::__construct($question, $default); $this->choices = $choices; $this->setValidator($this->getDefaultValidator()); $this->setAutocompleterValues($choices); } /** * Returns available choices. * * @return array */ public function getChoices() { return $this->choices; } /** * Sets multiselect option. * * When multiselect is set to true, multiple choices can be answered. * * @param bool $multiselect * * @return $this */ public function setMultiselect($multiselect) { $this->multiselect = $multiselect; $this->setValidator($this->getDefaultValidator()); return $this; } /** * Returns whether the choices are multiselect. * * @return bool */ public function isMultiselect() { return $this->multiselect; } /** * Gets the prompt for choices. * * @return string */ public function getPrompt() { return $this->prompt; } /** * Sets the prompt for choices. * * @param string $prompt * * @return $this */ public function setPrompt($prompt) { $this->prompt = $prompt; return $this; } /** * Sets the error message for invalid values. * * The error message has a string placeholder (%s) for the invalid value. * * @param string $errorMessage * * @return $this */ public function setErrorMessage($errorMessage) { $this->errorMessage = $errorMessage; $this->setValidator($this->getDefaultValidator()); return $this; } /** * Returns the default answer validator. * * @return callable */ private function getDefaultValidator() { $choices = $this->choices; $errorMessage = $this->errorMessage; $multiselect = $this->multiselect; $isAssoc = $this->isAssoc($choices); return function ($selected) use ($choices, $errorMessage, $multiselect, $isAssoc) { if ($multiselect) { // Check for a separated comma values if (!preg_match('/^[^,]+(?:,[^,]+)*$/', $selected, $matches)) { throw new InvalidArgumentException(sprintf($errorMessage, $selected)); } $selectedChoices = array_map('trim', explode(',', $selected)); } else { $selectedChoices = [trim($selected)]; } $multiselectChoices = []; foreach ($selectedChoices as $value) { $results = []; foreach ($choices as $key => $choice) { if ($choice === $value) { $results[] = $key; } } if (\count($results) > 1) { throw new InvalidArgumentException(sprintf('The provided answer is ambiguous. Value should be one of "%s".', implode('" or "', $results))); } $result = array_search($value, $choices); if (!$isAssoc) { if (false !== $result) { $result = $choices[$result]; } elseif (isset($choices[$value])) { $result = $choices[$value]; } } elseif (false === $result && isset($choices[$value])) { $result = $value; } if (false === $result) { throw new InvalidArgumentException(sprintf($errorMessage, $value)); } $multiselectChoices[] = (string) $result; } if ($multiselect) { return $multiselectChoices; } return current($multiselectChoices); }; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Question; /** * Represents a yes/no question. * * @author Fabien Potencier */ class ConfirmationQuestion extends Question { private $trueAnswerRegex; /** * @param string $question The question to ask to the user * @param bool $default The default answer to return, true or false * @param string $trueAnswerRegex A regex to match the "yes" answer */ public function __construct($question, $default = true, $trueAnswerRegex = '/^y/i') { parent::__construct($question, (bool) $default); $this->trueAnswerRegex = $trueAnswerRegex; $this->setNormalizer($this->getDefaultNormalizer()); } /** * Returns the default answer normalizer. * * @return callable */ private function getDefaultNormalizer() { $default = $this->getDefault(); $regex = $this->trueAnswerRegex; return function ($answer) use ($default, $regex) { if (\is_bool($answer)) { return $answer; } $answerIsTrue = (bool) preg_match($regex, $answer); if (false === $default) { return $answer && $answerIsTrue; } return '' === $answer || $answerIsTrue; }; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Logger; use Psr\Log\AbstractLogger; use Psr\Log\InvalidArgumentException; use Psr\Log\LogLevel; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * PSR-3 compliant console logger. * * @author Kévin Dunglas * * @see https://www.php-fig.org/psr/psr-3/ */ class ConsoleLogger extends AbstractLogger { const INFO = 'info'; const ERROR = 'error'; private $output; private $verbosityLevelMap = [ LogLevel::EMERGENCY => OutputInterface::VERBOSITY_NORMAL, LogLevel::ALERT => OutputInterface::VERBOSITY_NORMAL, LogLevel::CRITICAL => OutputInterface::VERBOSITY_NORMAL, LogLevel::ERROR => OutputInterface::VERBOSITY_NORMAL, LogLevel::WARNING => OutputInterface::VERBOSITY_NORMAL, LogLevel::NOTICE => OutputInterface::VERBOSITY_VERBOSE, LogLevel::INFO => OutputInterface::VERBOSITY_VERY_VERBOSE, LogLevel::DEBUG => OutputInterface::VERBOSITY_DEBUG, ]; private $formatLevelMap = [ LogLevel::EMERGENCY => self::ERROR, LogLevel::ALERT => self::ERROR, LogLevel::CRITICAL => self::ERROR, LogLevel::ERROR => self::ERROR, LogLevel::WARNING => self::INFO, LogLevel::NOTICE => self::INFO, LogLevel::INFO => self::INFO, LogLevel::DEBUG => self::INFO, ]; private $errored = false; public function __construct(OutputInterface $output, array $verbosityLevelMap = [], array $formatLevelMap = []) { $this->output = $output; $this->verbosityLevelMap = $verbosityLevelMap + $this->verbosityLevelMap; $this->formatLevelMap = $formatLevelMap + $this->formatLevelMap; } /** * {@inheritdoc} */ public function log($level, $message, array $context = []) { if (!isset($this->verbosityLevelMap[$level])) { throw new InvalidArgumentException(sprintf('The log level "%s" does not exist.', $level)); } $output = $this->output; // Write to the error output if necessary and available if (self::ERROR === $this->formatLevelMap[$level]) { if ($this->output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $this->errored = true; } // the if condition check isn't necessary -- it's the same one that $output will do internally anyway. // We only do it for efficiency here as the message formatting is relatively expensive. if ($output->getVerbosity() >= $this->verbosityLevelMap[$level]) { $output->writeln(sprintf('<%1$s>[%2$s] %3$s', $this->formatLevelMap[$level], $level, $this->interpolate($message, $context)), $this->verbosityLevelMap[$level]); } } /** * Returns true when any messages have been logged at error levels. * * @return bool */ public function hasErrored() { return $this->errored; } /** * Interpolates context values into the message placeholders. * * @author PHP Framework Interoperability Group * * @param string $message * * @return string */ private function interpolate($message, array $context) { if (false === strpos($message, '{')) { return $message; } $replacements = []; foreach ($context as $key => $val) { if (null === $val || is_scalar($val) || (\is_object($val) && method_exists($val, '__toString'))) { $replacements["{{$key}}"] = $val; } elseif ($val instanceof \DateTimeInterface) { $replacements["{{$key}}"] = $val->format(\DateTime::RFC3339); } elseif (\is_object($val)) { $replacements["{{$key}}"] = '[object '.\get_class($val).']'; } else { $replacements["{{$key}}"] = '['.\gettype($val).']'; } } return strtr($message, $replacements); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\CommandLoader; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\CommandNotFoundException; /** * @author Robin Chalas */ interface CommandLoaderInterface { /** * Loads a command. * * @param string $name * * @return Command * * @throws CommandNotFoundException */ public function get($name); /** * Checks if a command exists. * * @param string $name * * @return bool */ public function has($name); /** * @return string[] All registered command names */ public function getNames(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\CommandLoader; use Psr\Container\ContainerInterface; use Symfony\Component\Console\Exception\CommandNotFoundException; /** * Loads commands from a PSR-11 container. * * @author Robin Chalas */ class ContainerCommandLoader implements CommandLoaderInterface { private $container; private $commandMap; /** * @param ContainerInterface $container A container from which to load command services * @param array $commandMap An array with command names as keys and service ids as values */ public function __construct(ContainerInterface $container, array $commandMap) { $this->container = $container; $this->commandMap = $commandMap; } /** * {@inheritdoc} */ public function get($name) { if (!$this->has($name)) { throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); } return $this->container->get($this->commandMap[$name]); } /** * {@inheritdoc} */ public function has($name) { return isset($this->commandMap[$name]) && $this->container->has($this->commandMap[$name]); } /** * {@inheritdoc} */ public function getNames() { return array_keys($this->commandMap); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\CommandLoader; use Symfony\Component\Console\Exception\CommandNotFoundException; /** * A simple command loader using factories to instantiate commands lazily. * * @author Maxime Steinhausser */ class FactoryCommandLoader implements CommandLoaderInterface { private $factories; /** * @param callable[] $factories Indexed by command names */ public function __construct(array $factories) { $this->factories = $factories; } /** * {@inheritdoc} */ public function has($name) { return isset($this->factories[$name]); } /** * {@inheritdoc} */ public function get($name) { if (!isset($this->factories[$name])) { throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); } $factory = $this->factories[$name]; return $factory(); } /** * {@inheritdoc} */ public function getNames() { return array_keys($this->factories); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * @author Jean-François Simon * * @internal */ abstract class Descriptor implements DescriptorInterface { /** * @var OutputInterface */ protected $output; /** * {@inheritdoc} */ public function describe(OutputInterface $output, $object, array $options = []) { $this->output = $output; switch (true) { case $object instanceof InputArgument: $this->describeInputArgument($object, $options); break; case $object instanceof InputOption: $this->describeInputOption($object, $options); break; case $object instanceof InputDefinition: $this->describeInputDefinition($object, $options); break; case $object instanceof Command: $this->describeCommand($object, $options); break; case $object instanceof Application: $this->describeApplication($object, $options); break; default: throw new InvalidArgumentException(sprintf('Object of type "%s" is not describable.', \get_class($object))); } } /** * Writes content to output. * * @param string $content * @param bool $decorated */ protected function write($content, $decorated = false) { $this->output->write($content, false, $decorated ? OutputInterface::OUTPUT_NORMAL : OutputInterface::OUTPUT_RAW); } /** * Describes an InputArgument instance. * * @return string|mixed */ abstract protected function describeInputArgument(InputArgument $argument, array $options = []); /** * Describes an InputOption instance. * * @return string|mixed */ abstract protected function describeInputOption(InputOption $option, array $options = []); /** * Describes an InputDefinition instance. * * @return string|mixed */ abstract protected function describeInputDefinition(InputDefinition $definition, array $options = []); /** * Describes a Command instance. * * @return string|mixed */ abstract protected function describeCommand(Command $command, array $options = []); /** * Describes an Application instance. * * @return string|mixed */ abstract protected function describeApplication(Application $application, array $options = []); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Markdown descriptor. * * @author Jean-François Simon * * @internal */ class MarkdownDescriptor extends Descriptor { /** * {@inheritdoc} */ public function describe(OutputInterface $output, $object, array $options = []) { $decorated = $output->isDecorated(); $output->setDecorated(false); parent::describe($output, $object, $options); $output->setDecorated($decorated); } /** * {@inheritdoc} */ protected function write($content, $decorated = true) { parent::write($content, $decorated); } /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->write( '#### `'.($argument->getName() ?: '')."`\n\n" .($argument->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $argument->getDescription())."\n\n" : '') .'* Is required: '.($argument->isRequired() ? 'yes' : 'no')."\n" .'* Is array: '.($argument->isArray() ? 'yes' : 'no')."\n" .'* Default: `'.str_replace("\n", '', var_export($argument->getDefault(), true)).'`' ); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $name = '--'.$option->getName(); if ($option->getShortcut()) { $name .= '|-'.str_replace('|', '|-', $option->getShortcut()).''; } $this->write( '#### `'.$name.'`'."\n\n" .($option->getDescription() ? preg_replace('/\s*[\r\n]\s*/', "\n", $option->getDescription())."\n\n" : '') .'* Accept value: '.($option->acceptValue() ? 'yes' : 'no')."\n" .'* Is value required: '.($option->isValueRequired() ? 'yes' : 'no')."\n" .'* Is multiple: '.($option->isArray() ? 'yes' : 'no')."\n" .'* Default: `'.str_replace("\n", '', var_export($option->getDefault(), true)).'`' ); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { if ($showArguments = \count($definition->getArguments()) > 0) { $this->write('### Arguments'); foreach ($definition->getArguments() as $argument) { $this->write("\n\n"); $this->write($this->describeInputArgument($argument)); } } if (\count($definition->getOptions()) > 0) { if ($showArguments) { $this->write("\n\n"); } $this->write('### Options'); foreach ($definition->getOptions() as $option) { $this->write("\n\n"); $this->write($this->describeInputOption($option)); } } } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); $this->write( '`'.$command->getName()."`\n" .str_repeat('-', Helper::strlen($command->getName()) + 2)."\n\n" .($command->getDescription() ? $command->getDescription()."\n\n" : '') .'### Usage'."\n\n" .array_reduce(array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()), function ($carry, $usage) { return $carry.'* `'.$usage.'`'."\n"; }) ); if ($help = $command->getProcessedHelp()) { $this->write("\n"); $this->write($help); } if ($command->getNativeDefinition()) { $this->write("\n\n"); $this->describeInputDefinition($command->getNativeDefinition()); } } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null; $description = new ApplicationDescription($application, $describedNamespace); $title = $this->getApplicationTitle($application); $this->write($title."\n".str_repeat('=', Helper::strlen($title))); foreach ($description->getNamespaces() as $namespace) { if (ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { $this->write("\n\n"); $this->write('**'.$namespace['id'].':**'); } $this->write("\n\n"); $this->write(implode("\n", array_map(function ($commandName) use ($description) { return sprintf('* [`%s`](#%s)', $commandName, str_replace(':', '', $description->getCommand($commandName)->getName())); }, $namespace['commands']))); } foreach ($description->getCommands() as $command) { $this->write("\n\n"); $this->write($this->describeCommand($command)); } } private function getApplicationTitle(Application $application) { if ('UNKNOWN' !== $application->getName()) { if ('UNKNOWN' !== $application->getVersion()) { return sprintf('%s %s', $application->getName(), $application->getVersion()); } return $application->getName(); } return 'Console Tool'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; /** * Text descriptor. * * @author Jean-François Simon * * @internal */ class TextDescriptor extends Descriptor { /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { if (null !== $argument->getDefault() && (!\is_array($argument->getDefault()) || \count($argument->getDefault()))) { $default = sprintf(' [default: %s]', $this->formatDefaultValue($argument->getDefault())); } else { $default = ''; } $totalWidth = isset($options['total_width']) ? $options['total_width'] : Helper::strlen($argument->getName()); $spacingWidth = $totalWidth - \strlen($argument->getName()); $this->writeText(sprintf(' %s %s%s%s', $argument->getName(), str_repeat(' ', $spacingWidth), // + 4 = 2 spaces before , 2 spaces after preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $argument->getDescription()), $default ), $options); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { if ($option->acceptValue() && null !== $option->getDefault() && (!\is_array($option->getDefault()) || \count($option->getDefault()))) { $default = sprintf(' [default: %s]', $this->formatDefaultValue($option->getDefault())); } else { $default = ''; } $value = ''; if ($option->acceptValue()) { $value = '='.strtoupper($option->getName()); if ($option->isValueOptional()) { $value = '['.$value.']'; } } $totalWidth = isset($options['total_width']) ? $options['total_width'] : $this->calculateTotalWidthForOptions([$option]); $synopsis = sprintf('%s%s', $option->getShortcut() ? sprintf('-%s, ', $option->getShortcut()) : ' ', sprintf('--%s%s', $option->getName(), $value) ); $spacingWidth = $totalWidth - Helper::strlen($synopsis); $this->writeText(sprintf(' %s %s%s%s%s', $synopsis, str_repeat(' ', $spacingWidth), // + 4 = 2 spaces before , 2 spaces after preg_replace('/\s*[\r\n]\s*/', "\n".str_repeat(' ', $totalWidth + 4), $option->getDescription()), $default, $option->isArray() ? ' (multiple values allowed)' : '' ), $options); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $totalWidth = $this->calculateTotalWidthForOptions($definition->getOptions()); foreach ($definition->getArguments() as $argument) { $totalWidth = max($totalWidth, Helper::strlen($argument->getName())); } if ($definition->getArguments()) { $this->writeText('Arguments:', $options); $this->writeText("\n"); foreach ($definition->getArguments() as $argument) { $this->describeInputArgument($argument, array_merge($options, ['total_width' => $totalWidth])); $this->writeText("\n"); } } if ($definition->getArguments() && $definition->getOptions()) { $this->writeText("\n"); } if ($definition->getOptions()) { $laterOptions = []; $this->writeText('Options:', $options); foreach ($definition->getOptions() as $option) { if (\strlen($option->getShortcut()) > 1) { $laterOptions[] = $option; continue; } $this->writeText("\n"); $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); } foreach ($laterOptions as $option) { $this->writeText("\n"); $this->describeInputOption($option, array_merge($options, ['total_width' => $totalWidth])); } } } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $command->getSynopsis(true); $command->getSynopsis(false); $command->mergeApplicationDefinition(false); $this->writeText('Usage:', $options); foreach (array_merge([$command->getSynopsis(true)], $command->getAliases(), $command->getUsages()) as $usage) { $this->writeText("\n"); $this->writeText(' '.OutputFormatter::escape($usage), $options); } $this->writeText("\n"); $definition = $command->getNativeDefinition(); if ($definition->getOptions() || $definition->getArguments()) { $this->writeText("\n"); $this->describeInputDefinition($definition, $options); $this->writeText("\n"); } if ($help = $command->getProcessedHelp()) { $this->writeText("\n"); $this->writeText('Help:', $options); $this->writeText("\n"); $this->writeText(' '.str_replace("\n", "\n ", $help), $options); $this->writeText("\n"); } } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null; $description = new ApplicationDescription($application, $describedNamespace); if (isset($options['raw_text']) && $options['raw_text']) { $width = $this->getColumnWidth($description->getCommands()); foreach ($description->getCommands() as $command) { $this->writeText(sprintf("%-{$width}s %s", $command->getName(), $command->getDescription()), $options); $this->writeText("\n"); } } else { if ('' != $help = $application->getHelp()) { $this->writeText("$help\n\n", $options); } $this->writeText("Usage:\n", $options); $this->writeText(" command [options] [arguments]\n\n", $options); $this->describeInputDefinition(new InputDefinition($application->getDefinition()->getOptions()), $options); $this->writeText("\n"); $this->writeText("\n"); $commands = $description->getCommands(); $namespaces = $description->getNamespaces(); if ($describedNamespace && $namespaces) { // make sure all alias commands are included when describing a specific namespace $describedNamespaceInfo = reset($namespaces); foreach ($describedNamespaceInfo['commands'] as $name) { $commands[$name] = $description->getCommand($name); } } // calculate max. width based on available commands per namespace $width = $this->getColumnWidth(\call_user_func_array('array_merge', array_map(function ($namespace) use ($commands) { return array_intersect($namespace['commands'], array_keys($commands)); }, array_values($namespaces)))); if ($describedNamespace) { $this->writeText(sprintf('Available commands for the "%s" namespace:', $describedNamespace), $options); } else { $this->writeText('Available commands:', $options); } foreach ($namespaces as $namespace) { $namespace['commands'] = array_filter($namespace['commands'], function ($name) use ($commands) { return isset($commands[$name]); }); if (!$namespace['commands']) { continue; } if (!$describedNamespace && ApplicationDescription::GLOBAL_NAMESPACE !== $namespace['id']) { $this->writeText("\n"); $this->writeText(' '.$namespace['id'].'', $options); } foreach ($namespace['commands'] as $name) { $this->writeText("\n"); $spacingWidth = $width - Helper::strlen($name); $command = $commands[$name]; $commandAliases = $name === $command->getName() ? $this->getCommandAliasesText($command) : ''; $this->writeText(sprintf(' %s%s%s', $name, str_repeat(' ', $spacingWidth), $commandAliases.$command->getDescription()), $options); } } $this->writeText("\n"); } } /** * {@inheritdoc} */ private function writeText($content, array $options = []) { $this->write( isset($options['raw_text']) && $options['raw_text'] ? strip_tags($content) : $content, isset($options['raw_output']) ? !$options['raw_output'] : true ); } /** * Formats command aliases to show them in the command description. * * @return string */ private function getCommandAliasesText(Command $command) { $text = ''; $aliases = $command->getAliases(); if ($aliases) { $text = '['.implode('|', $aliases).'] '; } return $text; } /** * Formats input option/argument default value. * * @param mixed $default * * @return string */ private function formatDefaultValue($default) { if (\INF === $default) { return 'INF'; } if (\is_string($default)) { $default = OutputFormatter::escape($default); } elseif (\is_array($default)) { foreach ($default as $key => $value) { if (\is_string($value)) { $default[$key] = OutputFormatter::escape($value); } } } return str_replace('\\\\', '\\', json_encode($default, \JSON_UNESCAPED_SLASHES | \JSON_UNESCAPED_UNICODE)); } /** * @param (Command|string)[] $commands * * @return int */ private function getColumnWidth(array $commands) { $widths = []; foreach ($commands as $command) { if ($command instanceof Command) { $widths[] = Helper::strlen($command->getName()); foreach ($command->getAliases() as $alias) { $widths[] = Helper::strlen($alias); } } else { $widths[] = Helper::strlen($command); } } return $widths ? max($widths) + 2 : 0; } /** * @param InputOption[] $options * * @return int */ private function calculateTotalWidthForOptions(array $options) { $totalWidth = 0; foreach ($options as $option) { // "-" + shortcut + ", --" + name $nameLength = 1 + max(Helper::strlen($option->getShortcut()), 1) + 4 + Helper::strlen($option->getName()); if ($option->acceptValue()) { $valueLength = 1 + Helper::strlen($option->getName()); // = + value $valueLength += $option->isValueOptional() ? 2 : 0; // [ + ] $nameLength += $valueLength; } $totalWidth = max($totalWidth, $nameLength); } return $totalWidth; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Output\OutputInterface; /** * Descriptor interface. * * @author Jean-François Simon */ interface DescriptorInterface { /** * Describes an object if supported. * * @param object $object */ public function describe(OutputInterface $output, $object, array $options = []); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; /** * XML descriptor. * * @author Jean-François Simon * * @internal */ class XmlDescriptor extends Descriptor { /** * @return \DOMDocument */ public function getInputDefinitionDocument(InputDefinition $definition) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($definitionXML = $dom->createElement('definition')); $definitionXML->appendChild($argumentsXML = $dom->createElement('arguments')); foreach ($definition->getArguments() as $argument) { $this->appendDocument($argumentsXML, $this->getInputArgumentDocument($argument)); } $definitionXML->appendChild($optionsXML = $dom->createElement('options')); foreach ($definition->getOptions() as $option) { $this->appendDocument($optionsXML, $this->getInputOptionDocument($option)); } return $dom; } /** * @return \DOMDocument */ public function getCommandDocument(Command $command) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($commandXML = $dom->createElement('command')); $command->getSynopsis(); $command->mergeApplicationDefinition(false); $commandXML->setAttribute('id', $command->getName()); $commandXML->setAttribute('name', $command->getName()); $commandXML->setAttribute('hidden', $command->isHidden() ? 1 : 0); $commandXML->appendChild($usagesXML = $dom->createElement('usages')); foreach (array_merge([$command->getSynopsis()], $command->getAliases(), $command->getUsages()) as $usage) { $usagesXML->appendChild($dom->createElement('usage', $usage)); } $commandXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getDescription()))); $commandXML->appendChild($helpXML = $dom->createElement('help')); $helpXML->appendChild($dom->createTextNode(str_replace("\n", "\n ", $command->getProcessedHelp()))); $definitionXML = $this->getInputDefinitionDocument($command->getNativeDefinition()); $this->appendDocument($commandXML, $definitionXML->getElementsByTagName('definition')->item(0)); return $dom; } /** * @param string|null $namespace * * @return \DOMDocument */ public function getApplicationDocument(Application $application, $namespace = null) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($rootXml = $dom->createElement('symfony')); if ('UNKNOWN' !== $application->getName()) { $rootXml->setAttribute('name', $application->getName()); if ('UNKNOWN' !== $application->getVersion()) { $rootXml->setAttribute('version', $application->getVersion()); } } $rootXml->appendChild($commandsXML = $dom->createElement('commands')); $description = new ApplicationDescription($application, $namespace, true); if ($namespace) { $commandsXML->setAttribute('namespace', $namespace); } foreach ($description->getCommands() as $command) { $this->appendDocument($commandsXML, $this->getCommandDocument($command)); } if (!$namespace) { $rootXml->appendChild($namespacesXML = $dom->createElement('namespaces')); foreach ($description->getNamespaces() as $namespaceDescription) { $namespacesXML->appendChild($namespaceArrayXML = $dom->createElement('namespace')); $namespaceArrayXML->setAttribute('id', $namespaceDescription['id']); foreach ($namespaceDescription['commands'] as $name) { $namespaceArrayXML->appendChild($commandXML = $dom->createElement('command')); $commandXML->appendChild($dom->createTextNode($name)); } } } return $dom; } /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->writeDocument($this->getInputArgumentDocument($argument)); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $this->writeDocument($this->getInputOptionDocument($option)); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $this->writeDocument($this->getInputDefinitionDocument($definition)); } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $this->writeDocument($this->getCommandDocument($command)); } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $this->writeDocument($this->getApplicationDocument($application, isset($options['namespace']) ? $options['namespace'] : null)); } /** * Appends document children to parent node. */ private function appendDocument(\DOMNode $parentNode, \DOMNode $importedParent) { foreach ($importedParent->childNodes as $childNode) { $parentNode->appendChild($parentNode->ownerDocument->importNode($childNode, true)); } } /** * Writes DOM document. */ private function writeDocument(\DOMDocument $dom) { $dom->formatOutput = true; $this->write($dom->saveXML()); } /** * @return \DOMDocument */ private function getInputArgumentDocument(InputArgument $argument) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($objectXML = $dom->createElement('argument')); $objectXML->setAttribute('name', $argument->getName()); $objectXML->setAttribute('is_required', $argument->isRequired() ? 1 : 0); $objectXML->setAttribute('is_array', $argument->isArray() ? 1 : 0); $objectXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode($argument->getDescription())); $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); $defaults = \is_array($argument->getDefault()) ? $argument->getDefault() : (\is_bool($argument->getDefault()) ? [var_export($argument->getDefault(), true)] : ($argument->getDefault() ? [$argument->getDefault()] : [])); foreach ($defaults as $default) { $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); $defaultXML->appendChild($dom->createTextNode($default)); } return $dom; } /** * @return \DOMDocument */ private function getInputOptionDocument(InputOption $option) { $dom = new \DOMDocument('1.0', 'UTF-8'); $dom->appendChild($objectXML = $dom->createElement('option')); $objectXML->setAttribute('name', '--'.$option->getName()); $pos = strpos($option->getShortcut(), '|'); if (false !== $pos) { $objectXML->setAttribute('shortcut', '-'.substr($option->getShortcut(), 0, $pos)); $objectXML->setAttribute('shortcuts', '-'.str_replace('|', '|-', $option->getShortcut())); } else { $objectXML->setAttribute('shortcut', $option->getShortcut() ? '-'.$option->getShortcut() : ''); } $objectXML->setAttribute('accept_value', $option->acceptValue() ? 1 : 0); $objectXML->setAttribute('is_value_required', $option->isValueRequired() ? 1 : 0); $objectXML->setAttribute('is_multiple', $option->isArray() ? 1 : 0); $objectXML->appendChild($descriptionXML = $dom->createElement('description')); $descriptionXML->appendChild($dom->createTextNode($option->getDescription())); if ($option->acceptValue()) { $defaults = \is_array($option->getDefault()) ? $option->getDefault() : (\is_bool($option->getDefault()) ? [var_export($option->getDefault(), true)] : ($option->getDefault() ? [$option->getDefault()] : [])); $objectXML->appendChild($defaultsXML = $dom->createElement('defaults')); if (!empty($defaults)) { foreach ($defaults as $default) { $defaultsXML->appendChild($defaultXML = $dom->createElement('default')); $defaultXML->appendChild($dom->createTextNode($default)); } } } return $dom; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\CommandNotFoundException; /** * @author Jean-François Simon * * @internal */ class ApplicationDescription { const GLOBAL_NAMESPACE = '_global'; private $application; private $namespace; private $showHidden; /** * @var array */ private $namespaces; /** * @var Command[] */ private $commands; /** * @var Command[] */ private $aliases; /** * @param string|null $namespace * @param bool $showHidden */ public function __construct(Application $application, $namespace = null, $showHidden = false) { $this->application = $application; $this->namespace = $namespace; $this->showHidden = $showHidden; } /** * @return array */ public function getNamespaces() { if (null === $this->namespaces) { $this->inspectApplication(); } return $this->namespaces; } /** * @return Command[] */ public function getCommands() { if (null === $this->commands) { $this->inspectApplication(); } return $this->commands; } /** * @param string $name * * @return Command * * @throws CommandNotFoundException */ public function getCommand($name) { if (!isset($this->commands[$name]) && !isset($this->aliases[$name])) { throw new CommandNotFoundException(sprintf('Command "%s" does not exist.', $name)); } return isset($this->commands[$name]) ? $this->commands[$name] : $this->aliases[$name]; } private function inspectApplication() { $this->commands = []; $this->namespaces = []; $all = $this->application->all($this->namespace ? $this->application->findNamespace($this->namespace) : null); foreach ($this->sortCommands($all) as $namespace => $commands) { $names = []; /** @var Command $command */ foreach ($commands as $name => $command) { if (!$command->getName() || (!$this->showHidden && $command->isHidden())) { continue; } if ($command->getName() === $name) { $this->commands[$name] = $command; } else { $this->aliases[$name] = $command; } $names[] = $name; } $this->namespaces[$namespace] = ['id' => $namespace, 'commands' => $names]; } } /** * @return array */ private function sortCommands(array $commands) { $namespacedCommands = []; $globalCommands = []; $sortedCommands = []; foreach ($commands as $name => $command) { $key = $this->application->extractNamespace($name, 1); if (\in_array($key, ['', self::GLOBAL_NAMESPACE], true)) { $globalCommands[$name] = $command; } else { $namespacedCommands[$key][$name] = $command; } } if ($globalCommands) { ksort($globalCommands); $sortedCommands[self::GLOBAL_NAMESPACE] = $globalCommands; } if ($namespacedCommands) { ksort($namespacedCommands); foreach ($namespacedCommands as $key => $commandsSet) { ksort($commandsSet); $sortedCommands[$key] = $commandsSet; } } return $sortedCommands; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Descriptor; use Symfony\Component\Console\Application; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputOption; /** * JSON descriptor. * * @author Jean-François Simon * * @internal */ class JsonDescriptor extends Descriptor { /** * {@inheritdoc} */ protected function describeInputArgument(InputArgument $argument, array $options = []) { $this->writeData($this->getInputArgumentData($argument), $options); } /** * {@inheritdoc} */ protected function describeInputOption(InputOption $option, array $options = []) { $this->writeData($this->getInputOptionData($option), $options); } /** * {@inheritdoc} */ protected function describeInputDefinition(InputDefinition $definition, array $options = []) { $this->writeData($this->getInputDefinitionData($definition), $options); } /** * {@inheritdoc} */ protected function describeCommand(Command $command, array $options = []) { $this->writeData($this->getCommandData($command), $options); } /** * {@inheritdoc} */ protected function describeApplication(Application $application, array $options = []) { $describedNamespace = isset($options['namespace']) ? $options['namespace'] : null; $description = new ApplicationDescription($application, $describedNamespace, true); $commands = []; foreach ($description->getCommands() as $command) { $commands[] = $this->getCommandData($command); } $data = []; if ('UNKNOWN' !== $application->getName()) { $data['application']['name'] = $application->getName(); if ('UNKNOWN' !== $application->getVersion()) { $data['application']['version'] = $application->getVersion(); } } $data['commands'] = $commands; if ($describedNamespace) { $data['namespace'] = $describedNamespace; } else { $data['namespaces'] = array_values($description->getNamespaces()); } $this->writeData($data, $options); } /** * Writes data as json. */ private function writeData(array $data, array $options) { $flags = isset($options['json_encoding']) ? $options['json_encoding'] : 0; $this->write(json_encode($data, $flags)); } /** * @return array */ private function getInputArgumentData(InputArgument $argument) { return [ 'name' => $argument->getName(), 'is_required' => $argument->isRequired(), 'is_array' => $argument->isArray(), 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $argument->getDescription()), 'default' => \INF === $argument->getDefault() ? 'INF' : $argument->getDefault(), ]; } /** * @return array */ private function getInputOptionData(InputOption $option) { return [ 'name' => '--'.$option->getName(), 'shortcut' => $option->getShortcut() ? '-'.str_replace('|', '|-', $option->getShortcut()) : '', 'accept_value' => $option->acceptValue(), 'is_value_required' => $option->isValueRequired(), 'is_multiple' => $option->isArray(), 'description' => preg_replace('/\s*[\r\n]\s*/', ' ', $option->getDescription()), 'default' => \INF === $option->getDefault() ? 'INF' : $option->getDefault(), ]; } /** * @return array */ private function getInputDefinitionData(InputDefinition $definition) { $inputArguments = []; foreach ($definition->getArguments() as $name => $argument) { $inputArguments[$name] = $this->getInputArgumentData($argument); } $inputOptions = []; foreach ($definition->getOptions() as $name => $option) { $inputOptions[$name] = $this->getInputOptionData($option); } return ['arguments' => $inputArguments, 'options' => $inputOptions]; } /** * @return array */ private function getCommandData(Command $command) { $command->getSynopsis(); $command->mergeApplicationDefinition(false); return [ 'name' => $command->getName(), 'usage' => array_merge([$command->getSynopsis()], $command->getUsages(), $command->getAliases()), 'description' => $command->getDescription(), 'help' => $command->getProcessedHelp(), 'definition' => $this->getInputDefinitionData($command->getNativeDefinition()), 'hidden' => $command->isHidden(), ]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Formatter; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * @author Jean-François Simon */ class OutputFormatterStyleStack { /** * @var OutputFormatterStyleInterface[] */ private $styles; private $emptyStyle; public function __construct(OutputFormatterStyleInterface $emptyStyle = null) { $this->emptyStyle = $emptyStyle ?: new OutputFormatterStyle(); $this->reset(); } /** * Resets stack (ie. empty internal arrays). */ public function reset() { $this->styles = []; } /** * Pushes a style in the stack. */ public function push(OutputFormatterStyleInterface $style) { $this->styles[] = $style; } /** * Pops a style from the stack. * * @return OutputFormatterStyleInterface * * @throws InvalidArgumentException When style tags incorrectly nested */ public function pop(OutputFormatterStyleInterface $style = null) { if (empty($this->styles)) { return $this->emptyStyle; } if (null === $style) { return array_pop($this->styles); } foreach (array_reverse($this->styles, true) as $index => $stackedStyle) { if ($style->apply('') === $stackedStyle->apply('')) { $this->styles = \array_slice($this->styles, 0, $index); return $stackedStyle; } } throw new InvalidArgumentException('Incorrectly nested style tag found.'); } /** * Computes current style with stacks top codes. * * @return OutputFormatterStyle */ public function getCurrent() { if (empty($this->styles)) { return $this->emptyStyle; } return $this->styles[\count($this->styles) - 1]; } /** * @return $this */ public function setEmptyStyle(OutputFormatterStyleInterface $emptyStyle) { $this->emptyStyle = $emptyStyle; return $this; } /** * @return OutputFormatterStyleInterface */ public function getEmptyStyle() { return $this->emptyStyle; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Formatter; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * Formatter style class for defining styles. * * @author Konstantin Kudryashov */ class OutputFormatterStyle implements OutputFormatterStyleInterface { private static $availableForegroundColors = [ 'black' => ['set' => 30, 'unset' => 39], 'red' => ['set' => 31, 'unset' => 39], 'green' => ['set' => 32, 'unset' => 39], 'yellow' => ['set' => 33, 'unset' => 39], 'blue' => ['set' => 34, 'unset' => 39], 'magenta' => ['set' => 35, 'unset' => 39], 'cyan' => ['set' => 36, 'unset' => 39], 'white' => ['set' => 37, 'unset' => 39], 'default' => ['set' => 39, 'unset' => 39], ]; private static $availableBackgroundColors = [ 'black' => ['set' => 40, 'unset' => 49], 'red' => ['set' => 41, 'unset' => 49], 'green' => ['set' => 42, 'unset' => 49], 'yellow' => ['set' => 43, 'unset' => 49], 'blue' => ['set' => 44, 'unset' => 49], 'magenta' => ['set' => 45, 'unset' => 49], 'cyan' => ['set' => 46, 'unset' => 49], 'white' => ['set' => 47, 'unset' => 49], 'default' => ['set' => 49, 'unset' => 49], ]; private static $availableOptions = [ 'bold' => ['set' => 1, 'unset' => 22], 'underscore' => ['set' => 4, 'unset' => 24], 'blink' => ['set' => 5, 'unset' => 25], 'reverse' => ['set' => 7, 'unset' => 27], 'conceal' => ['set' => 8, 'unset' => 28], ]; private $foreground; private $background; private $options = []; /** * Initializes output formatter style. * * @param string|null $foreground The style foreground color name * @param string|null $background The style background color name * @param array $options The style options */ public function __construct($foreground = null, $background = null, array $options = []) { if (null !== $foreground) { $this->setForeground($foreground); } if (null !== $background) { $this->setBackground($background); } if (\count($options)) { $this->setOptions($options); } } /** * {@inheritdoc} */ public function setForeground($color = null) { if (null === $color) { $this->foreground = null; return; } if (!isset(static::$availableForegroundColors[$color])) { throw new InvalidArgumentException(sprintf('Invalid foreground color specified: "%s". Expected one of (%s).', $color, implode(', ', array_keys(static::$availableForegroundColors)))); } $this->foreground = static::$availableForegroundColors[$color]; } /** * {@inheritdoc} */ public function setBackground($color = null) { if (null === $color) { $this->background = null; return; } if (!isset(static::$availableBackgroundColors[$color])) { throw new InvalidArgumentException(sprintf('Invalid background color specified: "%s". Expected one of (%s).', $color, implode(', ', array_keys(static::$availableBackgroundColors)))); } $this->background = static::$availableBackgroundColors[$color]; } /** * {@inheritdoc} */ public function setOption($option) { if (!isset(static::$availableOptions[$option])) { throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(static::$availableOptions)))); } if (!\in_array(static::$availableOptions[$option], $this->options)) { $this->options[] = static::$availableOptions[$option]; } } /** * {@inheritdoc} */ public function unsetOption($option) { if (!isset(static::$availableOptions[$option])) { throw new InvalidArgumentException(sprintf('Invalid option specified: "%s". Expected one of (%s).', $option, implode(', ', array_keys(static::$availableOptions)))); } $pos = array_search(static::$availableOptions[$option], $this->options); if (false !== $pos) { unset($this->options[$pos]); } } /** * {@inheritdoc} */ public function setOptions(array $options) { $this->options = []; foreach ($options as $option) { $this->setOption($option); } } /** * {@inheritdoc} */ public function apply($text) { $setCodes = []; $unsetCodes = []; if (null !== $this->foreground) { $setCodes[] = $this->foreground['set']; $unsetCodes[] = $this->foreground['unset']; } if (null !== $this->background) { $setCodes[] = $this->background['set']; $unsetCodes[] = $this->background['unset']; } if (\count($this->options)) { foreach ($this->options as $option) { $setCodes[] = $option['set']; $unsetCodes[] = $option['unset']; } } if (0 === \count($setCodes)) { return $text; } return sprintf("\033[%sm%s\033[%sm", implode(';', $setCodes), $text, implode(';', $unsetCodes)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Formatter; /** * Formatter interface for console output. * * @author Konstantin Kudryashov */ interface OutputFormatterInterface { /** * Sets the decorated flag. * * @param bool $decorated Whether to decorate the messages or not */ public function setDecorated($decorated); /** * Gets the decorated flag. * * @return bool true if the output will decorate messages, false otherwise */ public function isDecorated(); /** * Sets a new style. * * @param string $name The style name * @param OutputFormatterStyleInterface $style The style instance */ public function setStyle($name, OutputFormatterStyleInterface $style); /** * Checks if output formatter has style with specified name. * * @param string $name * * @return bool */ public function hasStyle($name); /** * Gets style options from style with specified name. * * @param string $name * * @return OutputFormatterStyleInterface * * @throws \InvalidArgumentException When style isn't defined */ public function getStyle($name); /** * Formats a message according to the given styles. * * @param string $message The message to style * * @return string The styled message */ public function format($message); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Formatter; /** * Formatter style interface for defining styles. * * @author Konstantin Kudryashov */ interface OutputFormatterStyleInterface { /** * Sets style foreground color. * * @param string|null $color The color name */ public function setForeground($color = null); /** * Sets style background color. * * @param string $color The color name */ public function setBackground($color = null); /** * Sets some specific style option. * * @param string $option The option name */ public function setOption($option); /** * Unsets some specific style option. * * @param string $option The option name */ public function unsetOption($option); /** * Sets multiple style options at once. */ public function setOptions(array $options); /** * Applies the style to a given text. * * @param string $text The text to style * * @return string */ public function apply($text); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Formatter; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * Formatter class for console output. * * @author Konstantin Kudryashov */ class OutputFormatter implements OutputFormatterInterface { private $decorated; private $styles = []; private $styleStack; /** * Escapes "<" special char in given text. * * @param string $text Text to escape * * @return string Escaped text */ public static function escape($text) { $text = preg_replace('/([^\\\\]?) FormatterStyle" instances */ public function __construct($decorated = false, array $styles = []) { $this->decorated = (bool) $decorated; $this->setStyle('error', new OutputFormatterStyle('white', 'red')); $this->setStyle('info', new OutputFormatterStyle('green')); $this->setStyle('comment', new OutputFormatterStyle('yellow')); $this->setStyle('question', new OutputFormatterStyle('black', 'cyan')); foreach ($styles as $name => $style) { $this->setStyle($name, $style); } $this->styleStack = new OutputFormatterStyleStack(); } /** * {@inheritdoc} */ public function setDecorated($decorated) { $this->decorated = (bool) $decorated; } /** * {@inheritdoc} */ public function isDecorated() { return $this->decorated; } /** * {@inheritdoc} */ public function setStyle($name, OutputFormatterStyleInterface $style) { $this->styles[strtolower($name)] = $style; } /** * {@inheritdoc} */ public function hasStyle($name) { return isset($this->styles[strtolower($name)]); } /** * {@inheritdoc} */ public function getStyle($name) { if (!$this->hasStyle($name)) { throw new InvalidArgumentException(sprintf('Undefined style: "%s".', $name)); } return $this->styles[strtolower($name)]; } /** * {@inheritdoc} */ public function format($message) { $message = (string) $message; $offset = 0; $output = ''; $tagRegex = '[a-z][a-z0-9,_=;-]*+'; preg_match_all("#<(($tagRegex) | /($tagRegex)?)>#ix", $message, $matches, \PREG_OFFSET_CAPTURE); foreach ($matches[0] as $i => $match) { $pos = $match[1]; $text = $match[0]; if (0 != $pos && '\\' == $message[$pos - 1]) { continue; } // add the text up to the next tag $output .= $this->applyCurrentStyle(substr($message, $offset, $pos - $offset)); $offset = $pos + \strlen($text); // opening tag? if ($open = '/' != $text[1]) { $tag = $matches[1][$i][0]; } else { $tag = isset($matches[3][$i][0]) ? $matches[3][$i][0] : ''; } if (!$open && !$tag) { // $this->styleStack->pop(); } elseif (false === $style = $this->createStyleFromString($tag)) { $output .= $this->applyCurrentStyle($text); } elseif ($open) { $this->styleStack->push($style); } else { $this->styleStack->pop($style); } } $output .= $this->applyCurrentStyle(substr($message, $offset)); if (false !== strpos($output, "\0")) { return strtr($output, ["\0" => '\\', '\\<' => '<']); } return str_replace('\\<', '<', $output); } /** * @return OutputFormatterStyleStack */ public function getStyleStack() { return $this->styleStack; } /** * Tries to create new style instance from string. * * @param string $string * * @return OutputFormatterStyle|false false if string is not format string */ private function createStyleFromString($string) { if (isset($this->styles[$string])) { return $this->styles[$string]; } if (!preg_match_all('/([^=]+)=([^;]+)(;|$)/', $string, $matches, \PREG_SET_ORDER)) { return false; } $style = new OutputFormatterStyle(); foreach ($matches as $match) { array_shift($match); $match[0] = strtolower($match[0]); if ('fg' == $match[0]) { $style->setForeground(strtolower($match[1])); } elseif ('bg' == $match[0]) { $style->setBackground(strtolower($match[1])); } elseif ('options' === $match[0]) { preg_match_all('([^,;]+)', strtolower($match[1]), $options); $options = array_shift($options); foreach ($options as $option) { try { $style->setOption($option); } catch (\InvalidArgumentException $e) { @trigger_error(sprintf('Unknown style options are deprecated since Symfony 3.2 and will be removed in 4.0. Exception "%s".', $e->getMessage()), \E_USER_DEPRECATED); return false; } } } else { return false; } } return $style; } /** * Applies current style from stack to text, if must be applied. * * @param string $text Input text * * @return string Styled text */ private function applyCurrentStyle($text) { return $this->isDecorated() && \strlen($text) > 0 ? $this->styleStack->getCurrent()->apply($text) : $text; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * OutputInterface is the interface implemented by all Output classes. * * @author Fabien Potencier */ interface OutputInterface { const VERBOSITY_QUIET = 16; const VERBOSITY_NORMAL = 32; const VERBOSITY_VERBOSE = 64; const VERBOSITY_VERY_VERBOSE = 128; const VERBOSITY_DEBUG = 256; const OUTPUT_NORMAL = 1; const OUTPUT_RAW = 2; const OUTPUT_PLAIN = 4; /** * Writes a message to the output. * * @param string|array $messages The message as an array of strings or a single string * @param bool $newline Whether to add a newline * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ public function write($messages, $newline = false, $options = 0); /** * Writes a message to the output and adds a newline at the end. * * @param string|array $messages The message as an array of strings or a single string * @param int $options A bitmask of options (one of the OUTPUT or VERBOSITY constants), 0 is considered the same as self::OUTPUT_NORMAL | self::VERBOSITY_NORMAL */ public function writeln($messages, $options = 0); /** * Sets the verbosity of the output. * * @param int $level The level of verbosity (one of the VERBOSITY constants) */ public function setVerbosity($level); /** * Gets the current verbosity of the output. * * @return int The current level of verbosity (one of the VERBOSITY constants) */ public function getVerbosity(); /** * Returns whether verbosity is quiet (-q). * * @return bool true if verbosity is set to VERBOSITY_QUIET, false otherwise */ public function isQuiet(); /** * Returns whether verbosity is verbose (-v). * * @return bool true if verbosity is set to VERBOSITY_VERBOSE, false otherwise */ public function isVerbose(); /** * Returns whether verbosity is very verbose (-vv). * * @return bool true if verbosity is set to VERBOSITY_VERY_VERBOSE, false otherwise */ public function isVeryVerbose(); /** * Returns whether verbosity is debug (-vvv). * * @return bool true if verbosity is set to VERBOSITY_DEBUG, false otherwise */ public function isDebug(); /** * Sets the decorated flag. * * @param bool $decorated Whether to decorate the messages */ public function setDecorated($decorated); /** * Gets the decorated flag. * * @return bool true if the output will decorate messages, false otherwise */ public function isDecorated(); public function setFormatter(OutputFormatterInterface $formatter); /** * Returns current output formatter instance. * * @return OutputFormatterInterface */ public function getFormatter(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * Base class for output classes. * * There are five levels of verbosity: * * * normal: no option passed (normal output) * * verbose: -v (more output) * * very verbose: -vv (highly extended output) * * debug: -vvv (all debug output) * * quiet: -q (no output) * * @author Fabien Potencier */ abstract class Output implements OutputInterface { private $verbosity; private $formatter; /** * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool $decorated Whether to decorate messages * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) */ public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = false, OutputFormatterInterface $formatter = null) { $this->verbosity = null === $verbosity ? self::VERBOSITY_NORMAL : $verbosity; $this->formatter = $formatter ?: new OutputFormatter(); $this->formatter->setDecorated($decorated); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { $this->formatter = $formatter; } /** * {@inheritdoc} */ public function getFormatter() { return $this->formatter; } /** * {@inheritdoc} */ public function setDecorated($decorated) { $this->formatter->setDecorated($decorated); } /** * {@inheritdoc} */ public function isDecorated() { return $this->formatter->isDecorated(); } /** * {@inheritdoc} */ public function setVerbosity($level) { $this->verbosity = (int) $level; } /** * {@inheritdoc} */ public function getVerbosity() { return $this->verbosity; } /** * {@inheritdoc} */ public function isQuiet() { return self::VERBOSITY_QUIET === $this->verbosity; } /** * {@inheritdoc} */ public function isVerbose() { return self::VERBOSITY_VERBOSE <= $this->verbosity; } /** * {@inheritdoc} */ public function isVeryVerbose() { return self::VERBOSITY_VERY_VERBOSE <= $this->verbosity; } /** * {@inheritdoc} */ public function isDebug() { return self::VERBOSITY_DEBUG <= $this->verbosity; } /** * {@inheritdoc} */ public function writeln($messages, $options = self::OUTPUT_NORMAL) { $this->write($messages, true, $options); } /** * {@inheritdoc} */ public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) { $messages = (array) $messages; $types = self::OUTPUT_NORMAL | self::OUTPUT_RAW | self::OUTPUT_PLAIN; $type = $types & $options ?: self::OUTPUT_NORMAL; $verbosities = self::VERBOSITY_QUIET | self::VERBOSITY_NORMAL | self::VERBOSITY_VERBOSE | self::VERBOSITY_VERY_VERBOSE | self::VERBOSITY_DEBUG; $verbosity = $verbosities & $options ?: self::VERBOSITY_NORMAL; if ($verbosity > $this->getVerbosity()) { return; } foreach ($messages as $message) { switch ($type) { case OutputInterface::OUTPUT_NORMAL: $message = $this->formatter->format($message); break; case OutputInterface::OUTPUT_RAW: break; case OutputInterface::OUTPUT_PLAIN: $message = strip_tags($this->formatter->format($message)); break; } $this->doWrite($message, $newline); } } /** * Writes a message to the output. * * @param string $message A message to write to the output * @param bool $newline Whether to add a newline or not */ abstract protected function doWrite($message, $newline); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; /** * ConsoleOutputInterface is the interface implemented by ConsoleOutput class. * This adds information about stderr output stream. * * @author Dariusz Górecki */ interface ConsoleOutputInterface extends OutputInterface { /** * Gets the OutputInterface for errors. * * @return OutputInterface */ public function getErrorOutput(); public function setErrorOutput(OutputInterface $error); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * NullOutput suppresses all output. * * $output = new NullOutput(); * * @author Fabien Potencier * @author Tobias Schultze */ class NullOutput implements OutputInterface { /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { // do nothing } /** * {@inheritdoc} */ public function getFormatter() { // to comply with the interface we must return a OutputFormatterInterface return new OutputFormatter(); } /** * {@inheritdoc} */ public function setDecorated($decorated) { // do nothing } /** * {@inheritdoc} */ public function isDecorated() { return false; } /** * {@inheritdoc} */ public function setVerbosity($level) { // do nothing } /** * {@inheritdoc} */ public function getVerbosity() { return self::VERBOSITY_QUIET; } /** * {@inheritdoc} */ public function isQuiet() { return true; } /** * {@inheritdoc} */ public function isVerbose() { return false; } /** * {@inheritdoc} */ public function isVeryVerbose() { return false; } /** * {@inheritdoc} */ public function isDebug() { return false; } /** * {@inheritdoc} */ public function writeln($messages, $options = self::OUTPUT_NORMAL) { // do nothing } /** * {@inheritdoc} */ public function write($messages, $newline = false, $options = self::OUTPUT_NORMAL) { // do nothing } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * StreamOutput writes the output to a given stream. * * Usage: * * $output = new StreamOutput(fopen('php://stdout', 'w')); * * As `StreamOutput` can use any stream, you can also use a file: * * $output = new StreamOutput(fopen('/path/to/output.log', 'a', false)); * * @author Fabien Potencier */ class StreamOutput extends Output { private $stream; /** * @param resource $stream A stream resource * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) * * @throws InvalidArgumentException When first argument is not a real stream */ public function __construct($stream, $verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null) { if (!\is_resource($stream) || 'stream' !== get_resource_type($stream)) { throw new InvalidArgumentException('The StreamOutput class needs a stream as its first argument.'); } $this->stream = $stream; if (null === $decorated) { $decorated = $this->hasColorSupport(); } parent::__construct($verbosity, $decorated, $formatter); } /** * Gets the stream attached to this StreamOutput instance. * * @return resource A stream resource */ public function getStream() { return $this->stream; } /** * {@inheritdoc} */ protected function doWrite($message, $newline) { if ($newline) { $message .= \PHP_EOL; } @fwrite($this->stream, $message); fflush($this->stream); } /** * Returns true if the stream supports colorization. * * Colorization is disabled if not supported by the stream: * * This is tricky on Windows, because Cygwin, Msys2 etc emulate pseudo * terminals via named pipes, so we can only check the environment. * * Reference: Composer\XdebugHandler\Process::supportsColor * https://github.com/composer/xdebug-handler * * @return bool true if the stream supports colorization, false otherwise */ protected function hasColorSupport() { if ('Hyper' === getenv('TERM_PROGRAM')) { return true; } if (\DIRECTORY_SEPARATOR === '\\') { return (\function_exists('sapi_windows_vt100_support') && @sapi_windows_vt100_support($this->stream)) || false !== getenv('ANSICON') || 'ON' === getenv('ConEmuANSI') || 'xterm' === getenv('TERM'); } if (\function_exists('stream_isatty')) { return @stream_isatty($this->stream); } if (\function_exists('posix_isatty')) { return @posix_isatty($this->stream); } $stat = @fstat($this->stream); // Check if formatted mode is S_IFCHR return $stat ? 0020000 === ($stat['mode'] & 0170000) : false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; /** * @author Jean-François Simon */ class BufferedOutput extends Output { private $buffer = ''; /** * Empties buffer and returns its content. * * @return string */ public function fetch() { $content = $this->buffer; $this->buffer = ''; return $content; } /** * {@inheritdoc} */ protected function doWrite($message, $newline) { $this->buffer .= $message; if ($newline) { $this->buffer .= \PHP_EOL; } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Output; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * ConsoleOutput is the default class for all CLI output. It uses STDOUT and STDERR. * * This class is a convenient wrapper around `StreamOutput` for both STDOUT and STDERR. * * $output = new ConsoleOutput(); * * This is equivalent to: * * $output = new StreamOutput(fopen('php://stdout', 'w')); * $stdErr = new StreamOutput(fopen('php://stderr', 'w')); * * @author Fabien Potencier */ class ConsoleOutput extends StreamOutput implements ConsoleOutputInterface { private $stderr; /** * @param int $verbosity The verbosity level (one of the VERBOSITY constants in OutputInterface) * @param bool|null $decorated Whether to decorate messages (null for auto-guessing) * @param OutputFormatterInterface|null $formatter Output formatter instance (null to use default OutputFormatter) */ public function __construct($verbosity = self::VERBOSITY_NORMAL, $decorated = null, OutputFormatterInterface $formatter = null) { parent::__construct($this->openOutputStream(), $verbosity, $decorated, $formatter); $actualDecorated = $this->isDecorated(); $this->stderr = new StreamOutput($this->openErrorStream(), $verbosity, $decorated, $this->getFormatter()); if (null === $decorated) { $this->setDecorated($actualDecorated && $this->stderr->isDecorated()); } } /** * {@inheritdoc} */ public function setDecorated($decorated) { parent::setDecorated($decorated); $this->stderr->setDecorated($decorated); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { parent::setFormatter($formatter); $this->stderr->setFormatter($formatter); } /** * {@inheritdoc} */ public function setVerbosity($level) { parent::setVerbosity($level); $this->stderr->setVerbosity($level); } /** * {@inheritdoc} */ public function getErrorOutput() { return $this->stderr; } /** * {@inheritdoc} */ public function setErrorOutput(OutputInterface $error) { $this->stderr = $error; } /** * Returns true if current environment supports writing console output to * STDOUT. * * @return bool */ protected function hasStdoutSupport() { return false === $this->isRunningOS400(); } /** * Returns true if current environment supports writing console output to * STDERR. * * @return bool */ protected function hasStderrSupport() { return false === $this->isRunningOS400(); } /** * Checks if current executing environment is IBM iSeries (OS400), which * doesn't properly convert character-encodings between ASCII to EBCDIC. * * @return bool */ private function isRunningOS400() { $checks = [ \function_exists('php_uname') ? php_uname('s') : '', getenv('OSTYPE'), \PHP_OS, ]; return false !== stripos(implode(';', $checks), 'OS400'); } /** * @return resource */ private function openOutputStream() { if (!$this->hasStdoutSupport()) { return fopen('php://output', 'w'); } return @fopen('php://stdout', 'w') ?: fopen('php://output', 'w'); } /** * @return resource */ private function openErrorStream() { return fopen($this->hasStderrSupport() ? 'php://stderr' : 'php://output', 'w'); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Process\Exception\ProcessFailedException; use Symfony\Component\Process\Process; /** * The ProcessHelper class provides helpers to run external processes. * * @author Fabien Potencier */ class ProcessHelper extends Helper { /** * Runs an external process. * * @param OutputInterface $output An OutputInterface instance * @param string|array|Process $cmd An instance of Process or an array of arguments to escape and run or a command to run * @param string|null $error An error message that must be displayed if something went wrong * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * @param int $verbosity The threshold for verbosity * * @return Process The process that ran */ public function run(OutputInterface $output, $cmd, $error = null, callable $callback = null, $verbosity = OutputInterface::VERBOSITY_VERY_VERBOSE) { if (!class_exists(Process::class)) { throw new \LogicException('The ProcessHelper cannot be run as the Process component is not installed. Try running "compose require symfony/process".'); } if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $formatter = $this->getHelperSet()->get('debug_formatter'); if ($cmd instanceof Process) { $process = $cmd; } else { $process = new Process($cmd); } if ($verbosity <= $output->getVerbosity()) { $output->write($formatter->start(spl_object_hash($process), $this->escapeString($process->getCommandLine()))); } if ($output->isDebug()) { $callback = $this->wrapCallback($output, $process, $callback); } $process->run($callback); if ($verbosity <= $output->getVerbosity()) { $message = $process->isSuccessful() ? 'Command ran successfully' : sprintf('%s Command did not run successfully', $process->getExitCode()); $output->write($formatter->stop(spl_object_hash($process), $message, $process->isSuccessful())); } if (!$process->isSuccessful() && null !== $error) { $output->writeln(sprintf('%s', $this->escapeString($error))); } return $process; } /** * Runs the process. * * This is identical to run() except that an exception is thrown if the process * exits with a non-zero exit code. * * @param OutputInterface $output An OutputInterface instance * @param string|Process $cmd An instance of Process or a command to run * @param string|null $error An error message that must be displayed if something went wrong * @param callable|null $callback A PHP callback to run whenever there is some * output available on STDOUT or STDERR * * @return Process The process that ran * * @throws ProcessFailedException * * @see run() */ public function mustRun(OutputInterface $output, $cmd, $error = null, callable $callback = null) { $process = $this->run($output, $cmd, $error, $callback); if (!$process->isSuccessful()) { throw new ProcessFailedException($process); } return $process; } /** * Wraps a Process callback to add debugging output. * * @param OutputInterface $output An OutputInterface interface * @param Process $process The Process * @param callable|null $callback A PHP callable * * @return callable */ public function wrapCallback(OutputInterface $output, Process $process, callable $callback = null) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $formatter = $this->getHelperSet()->get('debug_formatter'); return function ($type, $buffer) use ($output, $process, $callback, $formatter) { $output->write($formatter->progress(spl_object_hash($process), $this->escapeString($buffer), Process::ERR === $type)); if (null !== $callback) { \call_user_func($callback, $type, $buffer); } }; } private function escapeString($str) { return str_replace('<', '\\<', $str); } /** * {@inheritdoc} */ public function getName() { return 'process'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\ConfirmationQuestion; use Symfony\Component\Console\Question\Question; use Symfony\Component\Console\Style\SymfonyStyle; /** * Symfony Style Guide compliant question helper. * * @author Kevin Bond */ class SymfonyQuestionHelper extends QuestionHelper { /** * {@inheritdoc} * * To be removed in 4.0 */ public function ask(InputInterface $input, OutputInterface $output, Question $question) { $validator = $question->getValidator(); $question->setValidator(function ($value) use ($validator) { if (null !== $validator) { $value = $validator($value); } else { // make required if (!\is_array($value) && !\is_bool($value) && 0 === \strlen($value)) { @trigger_error('The default question validator is deprecated since Symfony 3.3 and will not be used anymore in version 4.0. Set a custom question validator if needed.', \E_USER_DEPRECATED); throw new LogicException('A value is required.'); } } return $value; }); return parent::ask($input, $output, $question); } /** * {@inheritdoc} */ protected function writePrompt(OutputInterface $output, Question $question) { $text = OutputFormatter::escapeTrailingBackslash($question->getQuestion()); $default = $question->getDefault(); switch (true) { case null === $default: $text = sprintf(' %s:', $text); break; case $question instanceof ConfirmationQuestion: $text = sprintf(' %s (yes/no) [%s]:', $text, $default ? 'yes' : 'no'); break; case $question instanceof ChoiceQuestion && $question->isMultiselect(): $choices = $question->getChoices(); $default = explode(',', $default); foreach ($default as $key => $value) { $default[$key] = $choices[trim($value)]; } $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape(implode(', ', $default))); break; case $question instanceof ChoiceQuestion: $choices = $question->getChoices(); $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape(isset($choices[$default]) ? $choices[$default] : $default)); break; default: $text = sprintf(' %s [%s]:', $text, OutputFormatter::escape($default)); } $output->writeln($text); $prompt = ' > '; if ($question instanceof ChoiceQuestion) { $output->writeln($this->formatChoiceQuestionChoices($question, 'comment')); $prompt = $question->getPrompt(); } $output->write($prompt); } /** * {@inheritdoc} */ protected function writeError(OutputInterface $output, \Exception $error) { if ($output instanceof SymfonyStyle) { $output->newLine(); $output->error($error->getMessage()); return; } parent::writeError($output, $error); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Formatter\OutputFormatterInterface; /** * Helper is the base class for all helper classes. * * @author Fabien Potencier */ abstract class Helper implements HelperInterface { protected $helperSet = null; /** * {@inheritdoc} */ public function setHelperSet(HelperSet $helperSet = null) { $this->helperSet = $helperSet; } /** * {@inheritdoc} */ public function getHelperSet() { return $this->helperSet; } /** * Returns the length of a string, using mb_strwidth if it is available. * * @param string $string The string to check its length * * @return int The length of the string */ public static function strlen($string) { if (false === $encoding = mb_detect_encoding($string, null, true)) { return \strlen($string); } return mb_strwidth($string, $encoding); } /** * Returns the subset of a string, using mb_substr if it is available. * * @param string $string String to subset * @param int $from Start offset * @param int|null $length Length to read * * @return string The string subset */ public static function substr($string, $from, $length = null) { if (false === $encoding = mb_detect_encoding($string, null, true)) { return substr($string, $from, $length); } return mb_substr($string, $from, $length, $encoding); } public static function formatTime($secs) { static $timeFormats = [ [0, '< 1 sec'], [1, '1 sec'], [2, 'secs', 1], [60, '1 min'], [120, 'mins', 60], [3600, '1 hr'], [7200, 'hrs', 3600], [86400, '1 day'], [172800, 'days', 86400], ]; foreach ($timeFormats as $index => $format) { if ($secs >= $format[0]) { if ((isset($timeFormats[$index + 1]) && $secs < $timeFormats[$index + 1][0]) || $index == \count($timeFormats) - 1 ) { if (2 == \count($format)) { return $format[1]; } return floor($secs / $format[2]).' '.$format[1]; } } } } public static function formatMemory($memory) { if ($memory >= 1024 * 1024 * 1024) { return sprintf('%.1f GiB', $memory / 1024 / 1024 / 1024); } if ($memory >= 1024 * 1024) { return sprintf('%.1f MiB', $memory / 1024 / 1024); } if ($memory >= 1024) { return sprintf('%d KiB', $memory / 1024); } return sprintf('%d B', $memory); } public static function strlenWithoutDecoration(OutputFormatterInterface $formatter, $string) { return self::strlen(self::removeDecoration($formatter, $string)); } public static function removeDecoration(OutputFormatterInterface $formatter, $string) { $isDecorated = $formatter->isDecorated(); $formatter->setDecorated(false); // remove <...> formatting $string = $formatter->format($string); // remove already formatted characters $string = preg_replace("/\033\[[^m]*m/", '', $string); $formatter->setDecorated($isDecorated); return $string; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Output\OutputInterface; /** * Provides helpers to display a table. * * @author Fabien Potencier * @author Саша Стаменковић * @author Abdellatif Ait boudad * @author Max Grigorian */ class Table { /** * Table headers. */ private $headers = []; /** * Table rows. */ private $rows = []; /** * Column widths cache. */ private $effectiveColumnWidths = []; /** * Number of columns cache. * * @var int */ private $numberOfColumns; /** * @var OutputInterface */ private $output; /** * @var TableStyle */ private $style; /** * @var array */ private $columnStyles = []; /** * User set column widths. * * @var array */ private $columnWidths = []; private static $styles; public function __construct(OutputInterface $output) { $this->output = $output; if (!self::$styles) { self::$styles = self::initStyles(); } $this->setStyle('default'); } /** * Sets a style definition. * * @param string $name The style name * @param TableStyle $style A TableStyle instance */ public static function setStyleDefinition($name, TableStyle $style) { if (!self::$styles) { self::$styles = self::initStyles(); } self::$styles[$name] = $style; } /** * Gets a style definition by name. * * @param string $name The style name * * @return TableStyle */ public static function getStyleDefinition($name) { if (!self::$styles) { self::$styles = self::initStyles(); } if (isset(self::$styles[$name])) { return self::$styles[$name]; } throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); } /** * Sets table style. * * @param TableStyle|string $name The style name or a TableStyle instance * * @return $this */ public function setStyle($name) { $this->style = $this->resolveStyle($name); return $this; } /** * Gets the current table style. * * @return TableStyle */ public function getStyle() { return $this->style; } /** * Sets table column style. * * @param int $columnIndex Column index * @param TableStyle|string $name The style name or a TableStyle instance * * @return $this */ public function setColumnStyle($columnIndex, $name) { $columnIndex = (int) $columnIndex; $this->columnStyles[$columnIndex] = $this->resolveStyle($name); return $this; } /** * Gets the current style for a column. * * If style was not set, it returns the global table style. * * @param int $columnIndex Column index * * @return TableStyle */ public function getColumnStyle($columnIndex) { if (isset($this->columnStyles[$columnIndex])) { return $this->columnStyles[$columnIndex]; } return $this->getStyle(); } /** * Sets the minimum width of a column. * * @param int $columnIndex Column index * @param int $width Minimum column width in characters * * @return $this */ public function setColumnWidth($columnIndex, $width) { $this->columnWidths[(int) $columnIndex] = (int) $width; return $this; } /** * Sets the minimum width of all columns. * * @return $this */ public function setColumnWidths(array $widths) { $this->columnWidths = []; foreach ($widths as $index => $width) { $this->setColumnWidth($index, $width); } return $this; } public function setHeaders(array $headers) { $headers = array_values($headers); if (!empty($headers) && !\is_array($headers[0])) { $headers = [$headers]; } $this->headers = $headers; return $this; } public function setRows(array $rows) { $this->rows = []; return $this->addRows($rows); } public function addRows(array $rows) { foreach ($rows as $row) { $this->addRow($row); } return $this; } public function addRow($row) { if ($row instanceof TableSeparator) { $this->rows[] = $row; return $this; } if (!\is_array($row)) { throw new InvalidArgumentException('A row must be an array or a TableSeparator instance.'); } $this->rows[] = array_values($row); return $this; } public function setRow($column, array $row) { $this->rows[$column] = $row; return $this; } /** * Renders table to output. * * Example: * * +---------------+-----------------------+------------------+ * | ISBN | Title | Author | * +---------------+-----------------------+------------------+ * | 99921-58-10-7 | Divine Comedy | Dante Alighieri | * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | * | 960-425-059-0 | The Lord of the Rings | J. R. R. Tolkien | * +---------------+-----------------------+------------------+ */ public function render() { $this->calculateNumberOfColumns(); $rows = $this->buildTableRows($this->rows); $headers = $this->buildTableRows($this->headers); $this->calculateColumnsWidth(array_merge($headers, $rows)); $this->renderRowSeparator(); if (!empty($headers)) { foreach ($headers as $header) { $this->renderRow($header, $this->style->getCellHeaderFormat()); $this->renderRowSeparator(); } } foreach ($rows as $row) { if ($row instanceof TableSeparator) { $this->renderRowSeparator(); } else { $this->renderRow($row, $this->style->getCellRowFormat()); } } if (!empty($rows)) { $this->renderRowSeparator(); } $this->cleanup(); } /** * Renders horizontal header separator. * * Example: * * +-----+-----------+-------+ */ private function renderRowSeparator() { if (0 === $count = $this->numberOfColumns) { return; } if (!$this->style->getHorizontalBorderChar() && !$this->style->getCrossingChar()) { return; } $markup = $this->style->getCrossingChar(); for ($column = 0; $column < $count; ++$column) { $markup .= str_repeat($this->style->getHorizontalBorderChar(), $this->effectiveColumnWidths[$column]).$this->style->getCrossingChar(); } $this->output->writeln(sprintf($this->style->getBorderFormat(), $markup)); } /** * Renders vertical column separator. */ private function renderColumnSeparator() { return sprintf($this->style->getBorderFormat(), $this->style->getVerticalBorderChar()); } /** * Renders table row. * * Example: * * | 9971-5-0210-0 | A Tale of Two Cities | Charles Dickens | * * @param string $cellFormat */ private function renderRow(array $row, $cellFormat) { if (empty($row)) { return; } $rowContent = $this->renderColumnSeparator(); foreach ($this->getRowColumns($row) as $column) { $rowContent .= $this->renderCell($row, $column, $cellFormat); $rowContent .= $this->renderColumnSeparator(); } $this->output->writeln($rowContent); } /** * Renders table cell with padding. * * @param int $column * @param string $cellFormat */ private function renderCell(array $row, $column, $cellFormat) { $cell = isset($row[$column]) ? $row[$column] : ''; $width = $this->effectiveColumnWidths[$column]; if ($cell instanceof TableCell && $cell->getColspan() > 1) { // add the width of the following columns(numbers of colspan). foreach (range($column + 1, $column + $cell->getColspan() - 1) as $nextColumn) { $width += $this->getColumnSeparatorWidth() + $this->effectiveColumnWidths[$nextColumn]; } } // str_pad won't work properly with multi-byte strings, we need to fix the padding if (false !== $encoding = mb_detect_encoding($cell, null, true)) { $width += \strlen($cell) - mb_strwidth($cell, $encoding); } $style = $this->getColumnStyle($column); if ($cell instanceof TableSeparator) { return sprintf($style->getBorderFormat(), str_repeat($style->getHorizontalBorderChar(), $width)); } $width += Helper::strlen($cell) - Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); $content = sprintf($style->getCellRowContentFormat(), $cell); return sprintf($cellFormat, str_pad($content, $width, $style->getPaddingChar(), $style->getPadType())); } /** * Calculate number of columns for this table. */ private function calculateNumberOfColumns() { if (null !== $this->numberOfColumns) { return; } $columns = [0]; foreach (array_merge($this->headers, $this->rows) as $row) { if ($row instanceof TableSeparator) { continue; } $columns[] = $this->getNumberOfColumns($row); } $this->numberOfColumns = max($columns); } private function buildTableRows($rows) { $unmergedRows = []; for ($rowKey = 0; $rowKey < \count($rows); ++$rowKey) { $rows = $this->fillNextRows($rows, $rowKey); // Remove any new line breaks and replace it with a new line foreach ($rows[$rowKey] as $column => $cell) { if (!strstr($cell, "\n")) { continue; } $lines = explode("\n", str_replace("\n", "\n", $cell)); foreach ($lines as $lineKey => $line) { if ($cell instanceof TableCell) { $line = new TableCell($line, ['colspan' => $cell->getColspan()]); } if (0 === $lineKey) { $rows[$rowKey][$column] = $line; } else { $unmergedRows[$rowKey][$lineKey][$column] = $line; } } } } $tableRows = []; foreach ($rows as $rowKey => $row) { $tableRows[] = $this->fillCells($row); if (isset($unmergedRows[$rowKey])) { $tableRows = array_merge($tableRows, $unmergedRows[$rowKey]); } } return $tableRows; } /** * fill rows that contains rowspan > 1. * * @param int $line * * @return array * * @throws InvalidArgumentException */ private function fillNextRows(array $rows, $line) { $unmergedRows = []; foreach ($rows[$line] as $column => $cell) { if (null !== $cell && !$cell instanceof TableCell && !is_scalar($cell) && !(\is_object($cell) && method_exists($cell, '__toString'))) { throw new InvalidArgumentException(sprintf('A cell must be a TableCell, a scalar or an object implementing "__toString()", "%s" given.', \gettype($cell))); } if ($cell instanceof TableCell && $cell->getRowspan() > 1) { $nbLines = $cell->getRowspan() - 1; $lines = [$cell]; if (strstr($cell, "\n")) { $lines = explode("\n", str_replace("\n", "\n", $cell)); $nbLines = \count($lines) > $nbLines ? substr_count($cell, "\n") : $nbLines; $rows[$line][$column] = new TableCell($lines[0], ['colspan' => $cell->getColspan()]); unset($lines[0]); } // create a two dimensional array (rowspan x colspan) $unmergedRows = array_replace_recursive(array_fill($line + 1, $nbLines, []), $unmergedRows); foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { $value = isset($lines[$unmergedRowKey - $line]) ? $lines[$unmergedRowKey - $line] : ''; $unmergedRows[$unmergedRowKey][$column] = new TableCell($value, ['colspan' => $cell->getColspan()]); if ($nbLines === $unmergedRowKey - $line) { break; } } } } foreach ($unmergedRows as $unmergedRowKey => $unmergedRow) { // we need to know if $unmergedRow will be merged or inserted into $rows if (isset($rows[$unmergedRowKey]) && \is_array($rows[$unmergedRowKey]) && ($this->getNumberOfColumns($rows[$unmergedRowKey]) + $this->getNumberOfColumns($unmergedRows[$unmergedRowKey]) <= $this->numberOfColumns)) { foreach ($unmergedRow as $cellKey => $cell) { // insert cell into row at cellKey position array_splice($rows[$unmergedRowKey], $cellKey, 0, [$cell]); } } else { $row = $this->copyRow($rows, $unmergedRowKey - 1); foreach ($unmergedRow as $column => $cell) { if (!empty($cell)) { $row[$column] = $unmergedRow[$column]; } } array_splice($rows, $unmergedRowKey, 0, [$row]); } } return $rows; } /** * fill cells for a row that contains colspan > 1. * * @return array */ private function fillCells($row) { $newRow = []; foreach ($row as $column => $cell) { $newRow[] = $cell; if ($cell instanceof TableCell && $cell->getColspan() > 1) { foreach (range($column + 1, $column + $cell->getColspan() - 1) as $position) { // insert empty value at column position $newRow[] = ''; } } } return $newRow ?: $row; } /** * @param int $line * * @return array */ private function copyRow(array $rows, $line) { $row = $rows[$line]; foreach ($row as $cellKey => $cellValue) { $row[$cellKey] = ''; if ($cellValue instanceof TableCell) { $row[$cellKey] = new TableCell('', ['colspan' => $cellValue->getColspan()]); } } return $row; } /** * Gets number of columns by row. * * @return int */ private function getNumberOfColumns(array $row) { $columns = \count($row); foreach ($row as $column) { $columns += $column instanceof TableCell ? ($column->getColspan() - 1) : 0; } return $columns; } /** * Gets list of columns for the given row. * * @return array */ private function getRowColumns(array $row) { $columns = range(0, $this->numberOfColumns - 1); foreach ($row as $cellKey => $cell) { if ($cell instanceof TableCell && $cell->getColspan() > 1) { // exclude grouped columns. $columns = array_diff($columns, range($cellKey + 1, $cellKey + $cell->getColspan() - 1)); } } return $columns; } /** * Calculates columns widths. */ private function calculateColumnsWidth(array $rows) { for ($column = 0; $column < $this->numberOfColumns; ++$column) { $lengths = []; foreach ($rows as $row) { if ($row instanceof TableSeparator) { continue; } foreach ($row as $i => $cell) { if ($cell instanceof TableCell) { $textContent = Helper::removeDecoration($this->output->getFormatter(), $cell); $textLength = Helper::strlen($textContent); if ($textLength > 0) { $contentColumns = str_split($textContent, ceil($textLength / $cell->getColspan())); foreach ($contentColumns as $position => $content) { $row[$i + $position] = $content; } } } } $lengths[] = $this->getCellWidth($row, $column); } $this->effectiveColumnWidths[$column] = max($lengths) + Helper::strlen($this->style->getCellRowContentFormat()) - 2; } } /** * Gets column width. * * @return int */ private function getColumnSeparatorWidth() { return Helper::strlen(sprintf($this->style->getBorderFormat(), $this->style->getVerticalBorderChar())); } /** * Gets cell width. * * @param int $column * * @return int */ private function getCellWidth(array $row, $column) { $cellWidth = 0; if (isset($row[$column])) { $cell = $row[$column]; $cellWidth = Helper::strlenWithoutDecoration($this->output->getFormatter(), $cell); } $columnWidth = isset($this->columnWidths[$column]) ? $this->columnWidths[$column] : 0; return max($cellWidth, $columnWidth); } /** * Called after rendering to cleanup cache data. */ private function cleanup() { $this->effectiveColumnWidths = []; $this->numberOfColumns = null; } private static function initStyles() { $borderless = new TableStyle(); $borderless ->setHorizontalBorderChar('=') ->setVerticalBorderChar(' ') ->setCrossingChar(' ') ; $compact = new TableStyle(); $compact ->setHorizontalBorderChar('') ->setVerticalBorderChar(' ') ->setCrossingChar('') ->setCellRowContentFormat('%s') ; $styleGuide = new TableStyle(); $styleGuide ->setHorizontalBorderChar('-') ->setVerticalBorderChar(' ') ->setCrossingChar(' ') ->setCellHeaderFormat('%s') ; return [ 'default' => new TableStyle(), 'borderless' => $borderless, 'compact' => $compact, 'symfony-style-guide' => $styleGuide, ]; } private function resolveStyle($name) { if ($name instanceof TableStyle) { return $name; } if (isset(self::$styles[$name])) { return self::$styles[$name]; } throw new InvalidArgumentException(sprintf('Style "%s" is not defined.', $name)); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Input\InputAwareInterface; use Symfony\Component\Console\Input\InputInterface; /** * An implementation of InputAwareInterface for Helpers. * * @author Wouter J */ abstract class InputAwareHelper extends Helper implements InputAwareInterface { protected $input; /** * {@inheritdoc} */ public function setInput(InputInterface $input) { $this->input = $input; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Descriptor\DescriptorInterface; use Symfony\Component\Console\Descriptor\JsonDescriptor; use Symfony\Component\Console\Descriptor\MarkdownDescriptor; use Symfony\Component\Console\Descriptor\TextDescriptor; use Symfony\Component\Console\Descriptor\XmlDescriptor; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Output\OutputInterface; /** * This class adds helper method to describe objects in various formats. * * @author Jean-François Simon */ class DescriptorHelper extends Helper { /** * @var DescriptorInterface[] */ private $descriptors = []; public function __construct() { $this ->register('txt', new TextDescriptor()) ->register('xml', new XmlDescriptor()) ->register('json', new JsonDescriptor()) ->register('md', new MarkdownDescriptor()) ; } /** * Describes an object if supported. * * Available options are: * * format: string, the output format name * * raw_text: boolean, sets output type as raw * * @param object $object * * @throws InvalidArgumentException when the given format is not supported */ public function describe(OutputInterface $output, $object, array $options = []) { $options = array_merge([ 'raw_text' => false, 'format' => 'txt', ], $options); if (!isset($this->descriptors[$options['format']])) { throw new InvalidArgumentException(sprintf('Unsupported format "%s".', $options['format'])); } $descriptor = $this->descriptors[$options['format']]; $descriptor->describe($output, $object, $options); } /** * Registers a descriptor. * * @param string $format * * @return $this */ public function register($format, DescriptorInterface $descriptor) { $this->descriptors[$format] = $descriptor; return $this; } /** * {@inheritdoc} */ public function getName() { return 'descriptor'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; /** * Helps outputting debug information when running an external program from a command. * * An external program can be a Process, an HTTP request, or anything else. * * @author Fabien Potencier */ class DebugFormatterHelper extends Helper { private $colors = ['black', 'red', 'green', 'yellow', 'blue', 'magenta', 'cyan', 'white', 'default']; private $started = []; private $count = -1; /** * Starts a debug formatting session. * * @param string $id The id of the formatting session * @param string $message The message to display * @param string $prefix The prefix to use * * @return string */ public function start($id, $message, $prefix = 'RUN') { $this->started[$id] = ['border' => ++$this->count % \count($this->colors)]; return sprintf("%s %s %s\n", $this->getBorder($id), $prefix, $message); } /** * Adds progress to a formatting session. * * @param string $id The id of the formatting session * @param string $buffer The message to display * @param bool $error Whether to consider the buffer as error * @param string $prefix The prefix for output * @param string $errorPrefix The prefix for error output * * @return string */ public function progress($id, $buffer, $error = false, $prefix = 'OUT', $errorPrefix = 'ERR') { $message = ''; if ($error) { if (isset($this->started[$id]['out'])) { $message .= "\n"; unset($this->started[$id]['out']); } if (!isset($this->started[$id]['err'])) { $message .= sprintf('%s %s ', $this->getBorder($id), $errorPrefix); $this->started[$id]['err'] = true; } $message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $errorPrefix), $buffer); } else { if (isset($this->started[$id]['err'])) { $message .= "\n"; unset($this->started[$id]['err']); } if (!isset($this->started[$id]['out'])) { $message .= sprintf('%s %s ', $this->getBorder($id), $prefix); $this->started[$id]['out'] = true; } $message .= str_replace("\n", sprintf("\n%s %s ", $this->getBorder($id), $prefix), $buffer); } return $message; } /** * Stops a formatting session. * * @param string $id The id of the formatting session * @param string $message The message to display * @param bool $successful Whether to consider the result as success * @param string $prefix The prefix for the end output * * @return string */ public function stop($id, $message, $successful, $prefix = 'RES') { $trailingEOL = isset($this->started[$id]['out']) || isset($this->started[$id]['err']) ? "\n" : ''; if ($successful) { return sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); } $message = sprintf("%s%s %s %s\n", $trailingEOL, $this->getBorder($id), $prefix, $message); unset($this->started[$id]['out'], $this->started[$id]['err']); return $message; } /** * @param string $id The id of the formatting session * * @return string */ private function getBorder($id) { return sprintf(' ', $this->colors[$this->started[$id]['border']]); } /** * {@inheritdoc} */ public function getName() { return 'debug_formatter'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; /** * Defines the styles for a Table. * * @author Fabien Potencier * @author Саша Стаменковић */ class TableStyle { private $paddingChar = ' '; private $horizontalBorderChar = '-'; private $verticalBorderChar = '|'; private $crossingChar = '+'; private $cellHeaderFormat = '%s'; private $cellRowFormat = '%s'; private $cellRowContentFormat = ' %s '; private $borderFormat = '%s'; private $padType = \STR_PAD_RIGHT; /** * Sets padding character, used for cell padding. * * @param string $paddingChar * * @return $this */ public function setPaddingChar($paddingChar) { if (!$paddingChar) { throw new LogicException('The padding char must not be empty.'); } $this->paddingChar = $paddingChar; return $this; } /** * Gets padding character, used for cell padding. * * @return string */ public function getPaddingChar() { return $this->paddingChar; } /** * Sets horizontal border character. * * @param string $horizontalBorderChar * * @return $this */ public function setHorizontalBorderChar($horizontalBorderChar) { $this->horizontalBorderChar = $horizontalBorderChar; return $this; } /** * Gets horizontal border character. * * @return string */ public function getHorizontalBorderChar() { return $this->horizontalBorderChar; } /** * Sets vertical border character. * * @param string $verticalBorderChar * * @return $this */ public function setVerticalBorderChar($verticalBorderChar) { $this->verticalBorderChar = $verticalBorderChar; return $this; } /** * Gets vertical border character. * * @return string */ public function getVerticalBorderChar() { return $this->verticalBorderChar; } /** * Sets crossing character. * * @param string $crossingChar * * @return $this */ public function setCrossingChar($crossingChar) { $this->crossingChar = $crossingChar; return $this; } /** * Gets crossing character. * * @return string */ public function getCrossingChar() { return $this->crossingChar; } /** * Sets header cell format. * * @param string $cellHeaderFormat * * @return $this */ public function setCellHeaderFormat($cellHeaderFormat) { $this->cellHeaderFormat = $cellHeaderFormat; return $this; } /** * Gets header cell format. * * @return string */ public function getCellHeaderFormat() { return $this->cellHeaderFormat; } /** * Sets row cell format. * * @param string $cellRowFormat * * @return $this */ public function setCellRowFormat($cellRowFormat) { $this->cellRowFormat = $cellRowFormat; return $this; } /** * Gets row cell format. * * @return string */ public function getCellRowFormat() { return $this->cellRowFormat; } /** * Sets row cell content format. * * @param string $cellRowContentFormat * * @return $this */ public function setCellRowContentFormat($cellRowContentFormat) { $this->cellRowContentFormat = $cellRowContentFormat; return $this; } /** * Gets row cell content format. * * @return string */ public function getCellRowContentFormat() { return $this->cellRowContentFormat; } /** * Sets table border format. * * @param string $borderFormat * * @return $this */ public function setBorderFormat($borderFormat) { $this->borderFormat = $borderFormat; return $this; } /** * Gets table border format. * * @return string */ public function getBorderFormat() { return $this->borderFormat; } /** * Sets cell padding type. * * @param int $padType STR_PAD_* * * @return $this */ public function setPadType($padType) { if (!\in_array($padType, [\STR_PAD_LEFT, \STR_PAD_RIGHT, \STR_PAD_BOTH], true)) { throw new InvalidArgumentException('Invalid padding type. Expected one of (STR_PAD_LEFT, STR_PAD_RIGHT, STR_PAD_BOTH).'); } $this->padType = $padType; return $this; } /** * Gets cell padding type. * * @return int */ public function getPadType() { return $this->padType; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * @author Abdellatif Ait boudad */ class TableCell { private $value; private $options = [ 'rowspan' => 1, 'colspan' => 1, ]; /** * @param string $value */ public function __construct($value = '', array $options = []) { if (is_numeric($value) && !\is_string($value)) { $value = (string) $value; } $this->value = $value; // check option names if ($diff = array_diff(array_keys($options), array_keys($this->options))) { throw new InvalidArgumentException(sprintf('The TableCell does not support the following options: \'%s\'.', implode('\', \'', $diff))); } $this->options = array_merge($this->options, $options); } /** * Returns the cell value. * * @return string */ public function __toString() { return $this->value; } /** * Gets number of colspan. * * @return int */ public function getColspan() { return (int) $this->options['colspan']; } /** * Gets number of rowspan. * * @return int */ public function getRowspan() { return (int) $this->options['rowspan']; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; /** * HelperInterface is the interface all helpers must implement. * * @author Fabien Potencier */ interface HelperInterface { /** * Sets the helper set associated with this helper. */ public function setHelperSet(HelperSet $helperSet = null); /** * Gets the helper set associated with this helper. * * @return HelperSet A HelperSet instance */ public function getHelperSet(); /** * Returns the canonical name of this helper. * * @return string The canonical name */ public function getName(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Formatter\OutputFormatterStyle; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\StreamableInputInterface; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\Question; use Symfony\Component\Console\Terminal; /** * The QuestionHelper class provides helpers to interact with the user. * * @author Fabien Potencier */ class QuestionHelper extends Helper { private $inputStream; private static $shell; private static $stty = true; /** * Asks a question to the user. * * @return mixed The user answer * * @throws RuntimeException If there is no data to read in the input stream */ public function ask(InputInterface $input, OutputInterface $output, Question $question) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } if (!$input->isInteractive()) { $default = $question->getDefault(); if (null === $default) { return $default; } if ($validator = $question->getValidator()) { return \call_user_func($question->getValidator(), $default); } elseif ($question instanceof ChoiceQuestion) { $choices = $question->getChoices(); if (!$question->isMultiselect()) { return isset($choices[$default]) ? $choices[$default] : $default; } $default = explode(',', $default); foreach ($default as $k => $v) { $v = trim($v); $default[$k] = isset($choices[$v]) ? $choices[$v] : $v; } } return $default; } if ($input instanceof StreamableInputInterface && $stream = $input->getStream()) { $this->inputStream = $stream; } if (!$question->getValidator()) { return $this->doAsk($output, $question); } $interviewer = function () use ($output, $question) { return $this->doAsk($output, $question); }; return $this->validateAttempts($interviewer, $output, $question); } /** * Sets the input stream to read from when interacting with the user. * * This is mainly useful for testing purpose. * * @deprecated since version 3.2, to be removed in 4.0. Use * StreamableInputInterface::setStream() instead. * * @param resource $stream The input stream * * @throws InvalidArgumentException In case the stream is not a resource */ public function setInputStream($stream) { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.2 and will be removed in 4.0. Use %s::setStream() instead.', __METHOD__, StreamableInputInterface::class), \E_USER_DEPRECATED); if (!\is_resource($stream)) { throw new InvalidArgumentException('Input stream must be a valid resource.'); } $this->inputStream = $stream; } /** * Returns the helper's input stream. * * @deprecated since version 3.2, to be removed in 4.0. Use * StreamableInputInterface::getStream() instead. * * @return resource */ public function getInputStream() { if (0 === \func_num_args() || func_get_arg(0)) { @trigger_error(sprintf('The %s() method is deprecated since Symfony 3.2 and will be removed in 4.0. Use %s::getStream() instead.', __METHOD__, StreamableInputInterface::class), \E_USER_DEPRECATED); } return $this->inputStream; } /** * {@inheritdoc} */ public function getName() { return 'question'; } /** * Prevents usage of stty. */ public static function disableStty() { self::$stty = false; } /** * Asks the question to the user. * * @return bool|mixed|string|null * * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden */ private function doAsk(OutputInterface $output, Question $question) { $this->writePrompt($output, $question); $inputStream = $this->inputStream ?: \STDIN; $autocomplete = $question->getAutocompleterValues(); if (\function_exists('sapi_windows_cp_set')) { // Codepage used by cmd.exe on Windows to allow special characters (éàüñ). @sapi_windows_cp_set(1252); } if (null === $autocomplete || !self::$stty || !Terminal::hasSttyAvailable()) { $ret = false; if ($question->isHidden()) { try { $ret = trim($this->getHiddenResponse($output, $inputStream)); } catch (RuntimeException $e) { if (!$question->isHiddenFallback()) { throw $e; } } } if (false === $ret) { $ret = fgets($inputStream, 4096); if (false === $ret) { throw new RuntimeException('Aborted.'); } $ret = trim($ret); } } else { $ret = trim($this->autocomplete($output, $question, $inputStream, \is_array($autocomplete) ? $autocomplete : iterator_to_array($autocomplete, false))); } $ret = \strlen($ret) > 0 ? $ret : $question->getDefault(); if ($normalizer = $question->getNormalizer()) { return $normalizer($ret); } return $ret; } /** * Outputs the question prompt. */ protected function writePrompt(OutputInterface $output, Question $question) { $message = $question->getQuestion(); if ($question instanceof ChoiceQuestion) { $output->writeln(array_merge([ $question->getQuestion(), ], $this->formatChoiceQuestionChoices($question, 'info'))); $message = $question->getPrompt(); } $output->write($message); } /** * @param string $tag * * @return string[] */ protected function formatChoiceQuestionChoices(ChoiceQuestion $question, $tag) { $messages = []; $maxWidth = max(array_map('self::strlen', array_keys($choices = $question->getChoices()))); foreach ($choices as $key => $value) { $padding = str_repeat(' ', $maxWidth - self::strlen($key)); $messages[] = sprintf(" [<$tag>%s$padding] %s", $key, $value); } return $messages; } /** * Outputs an error message. */ protected function writeError(OutputInterface $output, \Exception $error) { if (null !== $this->getHelperSet() && $this->getHelperSet()->has('formatter')) { $message = $this->getHelperSet()->get('formatter')->formatBlock($error->getMessage(), 'error'); } else { $message = ''.$error->getMessage().''; } $output->writeln($message); } /** * Autocompletes a question. * * @param resource $inputStream * * @return string */ private function autocomplete(OutputInterface $output, Question $question, $inputStream, array $autocomplete) { $fullChoice = ''; $ret = ''; $i = 0; $ofs = -1; $matches = $autocomplete; $numMatches = \count($matches); $sttyMode = shell_exec('stty -g'); // Disable icanon (so we can fread each keypress) and echo (we'll do echoing here instead) shell_exec('stty -icanon -echo'); // Add highlighted text style $output->getFormatter()->setStyle('hl', new OutputFormatterStyle('black', 'white')); // Read a keypress while (!feof($inputStream)) { $c = fread($inputStream, 1); // as opposed to fgets(), fread() returns an empty string when the stream content is empty, not false. if (false === $c || ('' === $ret && '' === $c && null === $question->getDefault())) { shell_exec(sprintf('stty %s', $sttyMode)); throw new RuntimeException('Aborted.'); } elseif ("\177" === $c) { // Backspace Character if (0 === $numMatches && 0 !== $i) { --$i; $fullChoice = self::substr($fullChoice, 0, $i); // Move cursor backwards $output->write("\033[1D"); } if (0 === $i) { $ofs = -1; $matches = $autocomplete; $numMatches = \count($matches); } else { $numMatches = 0; } // Pop the last character off the end of our string $ret = self::substr($ret, 0, $i); } elseif ("\033" === $c) { // Did we read an escape sequence? $c .= fread($inputStream, 2); // A = Up Arrow. B = Down Arrow if (isset($c[2]) && ('A' === $c[2] || 'B' === $c[2])) { if ('A' === $c[2] && -1 === $ofs) { $ofs = 0; } if (0 === $numMatches) { continue; } $ofs += ('A' === $c[2]) ? -1 : 1; $ofs = ($numMatches + $ofs) % $numMatches; } } elseif (\ord($c) < 32) { if ("\t" === $c || "\n" === $c) { if ($numMatches > 0 && -1 !== $ofs) { $ret = $matches[$ofs]; // Echo out remaining chars for current match $remainingCharacters = substr($ret, \strlen(trim($this->mostRecentlyEnteredValue($fullChoice)))); $output->write($remainingCharacters); $fullChoice .= $remainingCharacters; $i = self::strlen($fullChoice); } if ("\n" === $c) { $output->write($c); break; } $numMatches = 0; } continue; } else { if ("\x80" <= $c) { $c .= fread($inputStream, ["\xC0" => 1, "\xD0" => 1, "\xE0" => 2, "\xF0" => 3][$c & "\xF0"]); } $output->write($c); $ret .= $c; $fullChoice .= $c; ++$i; $tempRet = $ret; if ($question instanceof ChoiceQuestion && $question->isMultiselect()) { $tempRet = $this->mostRecentlyEnteredValue($fullChoice); } $numMatches = 0; $ofs = 0; foreach ($autocomplete as $value) { // If typed characters match the beginning chunk of value (e.g. [AcmeDe]moBundle) if (0 === strpos($value, $tempRet)) { $matches[$numMatches++] = $value; } } } // Erase characters from cursor to end of line $output->write("\033[K"); if ($numMatches > 0 && -1 !== $ofs) { // Save cursor position $output->write("\0337"); // Write highlighted text, complete the partially entered response $charactersEntered = \strlen(trim($this->mostRecentlyEnteredValue($fullChoice))); $output->write(''.OutputFormatter::escapeTrailingBackslash(substr($matches[$ofs], $charactersEntered)).''); // Restore cursor position $output->write("\0338"); } } // Reset stty so it behaves normally again shell_exec(sprintf('stty %s', $sttyMode)); return $fullChoice; } private function mostRecentlyEnteredValue($entered) { // Determine the most recent value that the user entered if (false === strpos($entered, ',')) { return $entered; } $choices = explode(',', $entered); if (\strlen($lastChoice = trim($choices[\count($choices) - 1])) > 0) { return $lastChoice; } return $entered; } /** * Gets a hidden response from user. * * @param OutputInterface $output An Output instance * @param resource $inputStream The handler resource * * @return string The answer * * @throws RuntimeException In case the fallback is deactivated and the response cannot be hidden */ private function getHiddenResponse(OutputInterface $output, $inputStream) { if ('\\' === \DIRECTORY_SEPARATOR) { $exe = __DIR__.'/../Resources/bin/hiddeninput.exe'; // handle code running from a phar if ('phar:' === substr(__FILE__, 0, 5)) { $tmpExe = sys_get_temp_dir().'/hiddeninput.exe'; copy($exe, $tmpExe); $exe = $tmpExe; } $value = rtrim(shell_exec($exe)); $output->writeln(''); if (isset($tmpExe)) { unlink($tmpExe); } return $value; } if (self::$stty && Terminal::hasSttyAvailable()) { $sttyMode = shell_exec('stty -g'); shell_exec('stty -echo'); $value = fgets($inputStream, 4096); shell_exec(sprintf('stty %s', $sttyMode)); if (false === $value) { throw new RuntimeException('Aborted.'); } $value = trim($value); $output->writeln(''); return $value; } if (false !== $shell = $this->getShell()) { $readCmd = 'csh' === $shell ? 'set mypassword = $<' : 'read -r mypassword'; $command = sprintf("/usr/bin/env %s -c 'stty -echo; %s; stty echo; echo \$mypassword'", $shell, $readCmd); $value = rtrim(shell_exec($command)); $output->writeln(''); return $value; } throw new RuntimeException('Unable to hide the response.'); } /** * Validates an attempt. * * @param callable $interviewer A callable that will ask for a question and return the result * @param OutputInterface $output An Output instance * @param Question $question A Question instance * * @return mixed The validated response * * @throws \Exception In case the max number of attempts has been reached and no valid response has been given */ private function validateAttempts(callable $interviewer, OutputInterface $output, Question $question) { $error = null; $attempts = $question->getMaxAttempts(); while (null === $attempts || $attempts--) { if (null !== $error) { $this->writeError($output, $error); } try { return \call_user_func($question->getValidator(), $interviewer()); } catch (RuntimeException $e) { throw $e; } catch (\Exception $error) { } } throw $error; } /** * Returns a valid unix shell. * * @return string|bool The valid shell name, false in case no valid shell is found */ private function getShell() { if (null !== self::$shell) { return self::$shell; } self::$shell = false; if (file_exists('/usr/bin/env')) { // handle other OSs with bash/zsh/ksh/csh if available to hide the answer $test = "/usr/bin/env %s -c 'echo OK' 2> /dev/null"; foreach (['bash', 'zsh', 'ksh', 'csh'] as $sh) { if ('OK' === rtrim(shell_exec(sprintf($test, $sh)))) { self::$shell = $sh; break; } } } return self::$shell; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Formatter\OutputFormatter; /** * The Formatter class provides helpers to format messages. * * @author Fabien Potencier */ class FormatterHelper extends Helper { /** * Formats a message within a section. * * @param string $section The section name * @param string $message The message * @param string $style The style to apply to the section * * @return string The format section */ public function formatSection($section, $message, $style = 'info') { return sprintf('<%s>[%s] %s', $style, $section, $style, $message); } /** * Formats a message as a block of text. * * @param string|array $messages The message to write in the block * @param string $style The style to apply to the whole block * @param bool $large Whether to return a large block * * @return string The formatter message */ public function formatBlock($messages, $style, $large = false) { if (!\is_array($messages)) { $messages = [$messages]; } $len = 0; $lines = []; foreach ($messages as $message) { $message = OutputFormatter::escape($message); $lines[] = sprintf($large ? ' %s ' : ' %s ', $message); $len = max(self::strlen($message) + ($large ? 4 : 2), $len); } $messages = $large ? [str_repeat(' ', $len)] : []; for ($i = 0; isset($lines[$i]); ++$i) { $messages[] = $lines[$i].str_repeat(' ', $len - self::strlen($lines[$i])); } if ($large) { $messages[] = str_repeat(' ', $len); } for ($i = 0; isset($messages[$i]); ++$i) { $messages[$i] = sprintf('<%s>%s', $style, $messages[$i], $style); } return implode("\n", $messages); } /** * Truncates a message to the given length. * * @param string $message * @param int $length * @param string $suffix * * @return string */ public function truncate($message, $length, $suffix = '...') { $computedLength = $length - self::strlen($suffix); if ($computedLength > self::strlen($message)) { return $message; } return self::substr($message, 0, $length).$suffix; } /** * {@inheritdoc} */ public function getName() { return 'formatter'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * HelperSet represents a set of helpers to be used with a command. * * @author Fabien Potencier */ class HelperSet implements \IteratorAggregate { /** * @var Helper[] */ private $helpers = []; private $command; /** * @param Helper[] $helpers An array of helper */ public function __construct(array $helpers = []) { foreach ($helpers as $alias => $helper) { $this->set($helper, \is_int($alias) ? null : $alias); } } /** * Sets a helper. * * @param HelperInterface $helper The helper instance * @param string $alias An alias */ public function set(HelperInterface $helper, $alias = null) { $this->helpers[$helper->getName()] = $helper; if (null !== $alias) { $this->helpers[$alias] = $helper; } $helper->setHelperSet($this); } /** * Returns true if the helper if defined. * * @param string $name The helper name * * @return bool true if the helper is defined, false otherwise */ public function has($name) { return isset($this->helpers[$name]); } /** * Gets a helper value. * * @param string $name The helper name * * @return HelperInterface The helper instance * * @throws InvalidArgumentException if the helper is not defined */ public function get($name) { if (!$this->has($name)) { throw new InvalidArgumentException(sprintf('The helper "%s" is not defined.', $name)); } return $this->helpers[$name]; } public function setCommand(Command $command = null) { $this->command = $command; } /** * Gets the command associated with this helper set. * * @return Command A Command instance */ public function getCommand() { return $this->command; } /** * @return Helper[] */ public function getIterator() { return new \ArrayIterator($this->helpers); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Terminal; /** * The ProgressBar provides helpers to display progress output. * * @author Fabien Potencier * @author Chris Jones */ final class ProgressBar { private $barWidth = 28; private $barChar; private $emptyBarChar = '-'; private $progressChar = '>'; private $format; private $internalFormat; private $redrawFreq = 1; private $output; private $step = 0; private $max; private $startTime; private $stepWidth; private $percent = 0.0; private $formatLineCount; private $messages = []; private $overwrite = true; private $terminal; private $firstRun = true; private static $formatters; private static $formats; /** * @param OutputInterface $output An OutputInterface instance * @param int $max Maximum steps (0 if unknown) */ public function __construct(OutputInterface $output, $max = 0) { if ($output instanceof ConsoleOutputInterface) { $output = $output->getErrorOutput(); } $this->output = $output; $this->setMaxSteps($max); $this->terminal = new Terminal(); if (!$this->output->isDecorated()) { // disable overwrite when output does not support ANSI codes. $this->overwrite = false; // set a reasonable redraw frequency so output isn't flooded $this->setRedrawFrequency($max / 10); } $this->startTime = time(); } /** * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. * * @param string $name The placeholder name (including the delimiter char like %) * @param callable $callable A PHP callable */ public static function setPlaceholderFormatterDefinition($name, callable $callable) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } self::$formatters[$name] = $callable; } /** * Gets the placeholder formatter for a given name. * * @param string $name The placeholder name (including the delimiter char like %) * * @return callable|null A PHP callable */ public static function getPlaceholderFormatterDefinition($name) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } return isset(self::$formatters[$name]) ? self::$formatters[$name] : null; } /** * Sets a format for a given name. * * This method also allow you to override an existing format. * * @param string $name The format name * @param string $format A format string */ public static function setFormatDefinition($name, $format) { if (!self::$formats) { self::$formats = self::initFormats(); } self::$formats[$name] = $format; } /** * Gets the format for a given name. * * @param string $name The format name * * @return string|null A format string */ public static function getFormatDefinition($name) { if (!self::$formats) { self::$formats = self::initFormats(); } return isset(self::$formats[$name]) ? self::$formats[$name] : null; } /** * Associates a text with a named placeholder. * * The text is displayed when the progress bar is rendered but only * when the corresponding placeholder is part of the custom format line * (by wrapping the name with %). * * @param string $message The text to associate with the placeholder * @param string $name The name of the placeholder */ public function setMessage($message, $name = 'message') { $this->messages[$name] = $message; } public function getMessage($name = 'message') { return $this->messages[$name]; } /** * Gets the progress bar start time. * * @return int The progress bar start time */ public function getStartTime() { return $this->startTime; } /** * Gets the progress bar maximal steps. * * @return int The progress bar max steps */ public function getMaxSteps() { return $this->max; } /** * Gets the current step position. * * @return int The progress bar step */ public function getProgress() { return $this->step; } /** * Gets the progress bar step width. * * @return int The progress bar step width */ private function getStepWidth() { return $this->stepWidth; } /** * Gets the current progress bar percent. * * @return float The current progress bar percent */ public function getProgressPercent() { return $this->percent; } /** * Sets the progress bar width. * * @param int $size The progress bar size */ public function setBarWidth($size) { $this->barWidth = max(1, (int) $size); } /** * Gets the progress bar width. * * @return int The progress bar size */ public function getBarWidth() { return $this->barWidth; } /** * Sets the bar character. * * @param string $char A character */ public function setBarCharacter($char) { $this->barChar = $char; } /** * Gets the bar character. * * @return string A character */ public function getBarCharacter() { if (null === $this->barChar) { return $this->max ? '=' : $this->emptyBarChar; } return $this->barChar; } /** * Sets the empty bar character. * * @param string $char A character */ public function setEmptyBarCharacter($char) { $this->emptyBarChar = $char; } /** * Gets the empty bar character. * * @return string A character */ public function getEmptyBarCharacter() { return $this->emptyBarChar; } /** * Sets the progress bar character. * * @param string $char A character */ public function setProgressCharacter($char) { $this->progressChar = $char; } /** * Gets the progress bar character. * * @return string A character */ public function getProgressCharacter() { return $this->progressChar; } /** * Sets the progress bar format. * * @param string $format The format */ public function setFormat($format) { $this->format = null; $this->internalFormat = $format; } /** * Sets the redraw frequency. * * @param int|float $freq The frequency in steps */ public function setRedrawFrequency($freq) { $this->redrawFreq = max((int) $freq, 1); } /** * Starts the progress output. * * @param int|null $max Number of steps to complete the bar (0 if indeterminate), null to leave unchanged */ public function start($max = null) { $this->startTime = time(); $this->step = 0; $this->percent = 0.0; if (null !== $max) { $this->setMaxSteps($max); } $this->display(); } /** * Advances the progress output X steps. * * @param int $step Number of steps to advance */ public function advance($step = 1) { $this->setProgress($this->step + $step); } /** * Sets whether to overwrite the progressbar, false for new line. * * @param bool $overwrite */ public function setOverwrite($overwrite) { $this->overwrite = (bool) $overwrite; } /** * Sets the current progress. * * @param int $step The current progress */ public function setProgress($step) { $step = (int) $step; if ($this->max && $step > $this->max) { $this->max = $step; } elseif ($step < 0) { $step = 0; } $prevPeriod = (int) ($this->step / $this->redrawFreq); $currPeriod = (int) ($step / $this->redrawFreq); $this->step = $step; $this->percent = $this->max ? (float) $this->step / $this->max : 0; if ($prevPeriod !== $currPeriod || $this->max === $step) { $this->display(); } } /** * Finishes the progress output. */ public function finish() { if (!$this->max) { $this->max = $this->step; } if ($this->step === $this->max && !$this->overwrite) { // prevent double 100% output return; } $this->setProgress($this->max); } /** * Outputs the current progress string. */ public function display() { if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { return; } if (null === $this->format) { $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); } $this->overwrite($this->buildLine()); } /** * Removes the progress bar from the current line. * * This is useful if you wish to write some output * while a progress bar is running. * Call display() to show the progress bar again. */ public function clear() { if (!$this->overwrite) { return; } if (null === $this->format) { $this->setRealFormat($this->internalFormat ?: $this->determineBestFormat()); } $this->overwrite(''); } /** * Sets the progress bar format. * * @param string $format The format */ private function setRealFormat($format) { // try to use the _nomax variant if available if (!$this->max && null !== self::getFormatDefinition($format.'_nomax')) { $this->format = self::getFormatDefinition($format.'_nomax'); } elseif (null !== self::getFormatDefinition($format)) { $this->format = self::getFormatDefinition($format); } else { $this->format = $format; } $this->formatLineCount = substr_count($this->format, "\n"); } /** * Sets the progress bar maximal steps. * * @param int $max The progress bar max steps */ private function setMaxSteps($max) { $this->max = max(0, (int) $max); $this->stepWidth = $this->max ? Helper::strlen($this->max) : 4; } /** * Overwrites a previous message to the output. * * @param string $message The message */ private function overwrite($message) { if ($this->overwrite) { if (!$this->firstRun) { // Erase previous lines if ($this->formatLineCount > 0) { $message = str_repeat("\x1B[1A\x1B[2K", $this->formatLineCount).$message; } // Move the cursor to the beginning of the line and erase the line $message = "\x0D\x1B[2K$message"; } } elseif ($this->step > 0) { $message = \PHP_EOL.$message; } $this->firstRun = false; $this->output->write($message); } private function determineBestFormat() { switch ($this->output->getVerbosity()) { // OutputInterface::VERBOSITY_QUIET: display is disabled anyway case OutputInterface::VERBOSITY_VERBOSE: return $this->max ? 'verbose' : 'verbose_nomax'; case OutputInterface::VERBOSITY_VERY_VERBOSE: return $this->max ? 'very_verbose' : 'very_verbose_nomax'; case OutputInterface::VERBOSITY_DEBUG: return $this->max ? 'debug' : 'debug_nomax'; default: return $this->max ? 'normal' : 'normal_nomax'; } } private static function initPlaceholderFormatters() { return [ 'bar' => function (self $bar, OutputInterface $output) { $completeBars = floor($bar->getMaxSteps() > 0 ? $bar->getProgressPercent() * $bar->getBarWidth() : $bar->getProgress() % $bar->getBarWidth()); $display = str_repeat($bar->getBarCharacter(), $completeBars); if ($completeBars < $bar->getBarWidth()) { $emptyBars = $bar->getBarWidth() - $completeBars - Helper::strlenWithoutDecoration($output->getFormatter(), $bar->getProgressCharacter()); $display .= $bar->getProgressCharacter().str_repeat($bar->getEmptyBarCharacter(), $emptyBars); } return $display; }, 'elapsed' => function (self $bar) { return Helper::formatTime(time() - $bar->getStartTime()); }, 'remaining' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the remaining time if the maximum number of steps is not set.'); } if (!$bar->getProgress()) { $remaining = 0; } else { $remaining = round((time() - $bar->getStartTime()) / $bar->getProgress() * ($bar->getMaxSteps() - $bar->getProgress())); } return Helper::formatTime($remaining); }, 'estimated' => function (self $bar) { if (!$bar->getMaxSteps()) { throw new LogicException('Unable to display the estimated time if the maximum number of steps is not set.'); } if (!$bar->getProgress()) { $estimated = 0; } else { $estimated = round((time() - $bar->getStartTime()) / $bar->getProgress() * $bar->getMaxSteps()); } return Helper::formatTime($estimated); }, 'memory' => function (self $bar) { return Helper::formatMemory(memory_get_usage(true)); }, 'current' => function (self $bar) { return str_pad($bar->getProgress(), $bar->getStepWidth(), ' ', \STR_PAD_LEFT); }, 'max' => function (self $bar) { return $bar->getMaxSteps(); }, 'percent' => function (self $bar) { return floor($bar->getProgressPercent() * 100); }, ]; } private static function initFormats() { return [ 'normal' => ' %current%/%max% [%bar%] %percent:3s%%', 'normal_nomax' => ' %current% [%bar%]', 'verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%', 'verbose_nomax' => ' %current% [%bar%] %elapsed:6s%', 'very_verbose' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s%', 'very_verbose_nomax' => ' %current% [%bar%] %elapsed:6s%', 'debug' => ' %current%/%max% [%bar%] %percent:3s%% %elapsed:6s%/%estimated:-6s% %memory:6s%', 'debug_nomax' => ' %current% [%bar%] %elapsed:6s% %memory:6s%', ]; } /** * @return string */ private function buildLine() { $regex = "{%([a-z\-_]+)(?:\:([^%]+))?%}i"; $callback = function ($matches) { if ($formatter = $this::getPlaceholderFormatterDefinition($matches[1])) { $text = \call_user_func($formatter, $this, $this->output); } elseif (isset($this->messages[$matches[1]])) { $text = $this->messages[$matches[1]]; } else { return $matches[0]; } if (isset($matches[2])) { $text = sprintf('%'.$matches[2], $text); } return $text; }; $line = preg_replace_callback($regex, $callback, $this->format); // gets string length for each sub line with multiline format $linesLength = array_map(function ($subLine) { return Helper::strlenWithoutDecoration($this->output->getFormatter(), rtrim($subLine, "\r")); }, explode("\n", $line)); $linesWidth = max($linesLength); $terminalWidth = $this->terminal->getWidth(); if ($linesWidth <= $terminalWidth) { return $line; } $this->setBarWidth($this->barWidth - $linesWidth + $terminalWidth); return preg_replace_callback($regex, $callback, $this->format); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Output\OutputInterface; /** * @author Kevin Bond */ class ProgressIndicator { private $output; private $startTime; private $format; private $message; private $indicatorValues; private $indicatorCurrent; private $indicatorChangeInterval; private $indicatorUpdateTime; private $started = false; private static $formatters; private static $formats; /** * @param string|null $format Indicator format * @param int $indicatorChangeInterval Change interval in milliseconds * @param array|null $indicatorValues Animated indicator characters */ public function __construct(OutputInterface $output, $format = null, $indicatorChangeInterval = 100, $indicatorValues = null) { $this->output = $output; if (null === $format) { $format = $this->determineBestFormat(); } if (null === $indicatorValues) { $indicatorValues = ['-', '\\', '|', '/']; } $indicatorValues = array_values($indicatorValues); if (2 > \count($indicatorValues)) { throw new InvalidArgumentException('Must have at least 2 indicator value characters.'); } $this->format = self::getFormatDefinition($format); $this->indicatorChangeInterval = $indicatorChangeInterval; $this->indicatorValues = $indicatorValues; $this->startTime = time(); } /** * Sets the current indicator message. * * @param string|null $message */ public function setMessage($message) { $this->message = $message; $this->display(); } /** * Starts the indicator output. * * @param $message */ public function start($message) { if ($this->started) { throw new LogicException('Progress indicator already started.'); } $this->message = $message; $this->started = true; $this->startTime = time(); $this->indicatorUpdateTime = $this->getCurrentTimeInMilliseconds() + $this->indicatorChangeInterval; $this->indicatorCurrent = 0; $this->display(); } /** * Advances the indicator. */ public function advance() { if (!$this->started) { throw new LogicException('Progress indicator has not yet been started.'); } if (!$this->output->isDecorated()) { return; } $currentTime = $this->getCurrentTimeInMilliseconds(); if ($currentTime < $this->indicatorUpdateTime) { return; } $this->indicatorUpdateTime = $currentTime + $this->indicatorChangeInterval; ++$this->indicatorCurrent; $this->display(); } /** * Finish the indicator with message. * * @param $message */ public function finish($message) { if (!$this->started) { throw new LogicException('Progress indicator has not yet been started.'); } $this->message = $message; $this->display(); $this->output->writeln(''); $this->started = false; } /** * Gets the format for a given name. * * @param string $name The format name * * @return string|null A format string */ public static function getFormatDefinition($name) { if (!self::$formats) { self::$formats = self::initFormats(); } return isset(self::$formats[$name]) ? self::$formats[$name] : null; } /** * Sets a placeholder formatter for a given name. * * This method also allow you to override an existing placeholder. * * @param string $name The placeholder name (including the delimiter char like %) * @param callable $callable A PHP callable */ public static function setPlaceholderFormatterDefinition($name, $callable) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } self::$formatters[$name] = $callable; } /** * Gets the placeholder formatter for a given name. * * @param string $name The placeholder name (including the delimiter char like %) * * @return callable|null A PHP callable */ public static function getPlaceholderFormatterDefinition($name) { if (!self::$formatters) { self::$formatters = self::initPlaceholderFormatters(); } return isset(self::$formatters[$name]) ? self::$formatters[$name] : null; } private function display() { if (OutputInterface::VERBOSITY_QUIET === $this->output->getVerbosity()) { return; } $self = $this; $this->overwrite(preg_replace_callback("{%([a-z\-_]+)(?:\:([^%]+))?%}i", function ($matches) use ($self) { if ($formatter = $self::getPlaceholderFormatterDefinition($matches[1])) { return \call_user_func($formatter, $self); } return $matches[0]; }, $this->format)); } private function determineBestFormat() { switch ($this->output->getVerbosity()) { // OutputInterface::VERBOSITY_QUIET: display is disabled anyway case OutputInterface::VERBOSITY_VERBOSE: return $this->output->isDecorated() ? 'verbose' : 'verbose_no_ansi'; case OutputInterface::VERBOSITY_VERY_VERBOSE: case OutputInterface::VERBOSITY_DEBUG: return $this->output->isDecorated() ? 'very_verbose' : 'very_verbose_no_ansi'; default: return $this->output->isDecorated() ? 'normal' : 'normal_no_ansi'; } } /** * Overwrites a previous message to the output. * * @param string $message The message */ private function overwrite($message) { if ($this->output->isDecorated()) { $this->output->write("\x0D\x1B[2K"); $this->output->write($message); } else { $this->output->writeln($message); } } private function getCurrentTimeInMilliseconds() { return round(microtime(true) * 1000); } private static function initPlaceholderFormatters() { return [ 'indicator' => function (self $indicator) { return $indicator->indicatorValues[$indicator->indicatorCurrent % \count($indicator->indicatorValues)]; }, 'message' => function (self $indicator) { return $indicator->message; }, 'elapsed' => function (self $indicator) { return Helper::formatTime(time() - $indicator->startTime); }, 'memory' => function () { return Helper::formatMemory(memory_get_usage(true)); }, ]; } private static function initFormats() { return [ 'normal' => ' %indicator% %message%', 'normal_no_ansi' => ' %message%', 'verbose' => ' %indicator% %message% (%elapsed:6s%)', 'verbose_no_ansi' => ' %message% (%elapsed:6s%)', 'very_verbose' => ' %indicator% %message% (%elapsed:6s%, %memory:6s%)', 'very_verbose_no_ansi' => ' %message% (%elapsed:6s%, %memory:6s%)', ]; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Helper; /** * Marks a row as being a separator. * * @author Fabien Potencier */ class TableSeparator extends TableCell { public function __construct(array $options = []) { parent::__construct('', $options); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console; class Terminal { private static $width; private static $height; private static $stty; /** * Gets the terminal width. * * @return int */ public function getWidth() { $width = getenv('COLUMNS'); if (false !== $width) { return (int) trim($width); } if (null === self::$width) { self::initDimensions(); } return self::$width ?: 80; } /** * Gets the terminal height. * * @return int */ public function getHeight() { $height = getenv('LINES'); if (false !== $height) { return (int) trim($height); } if (null === self::$height) { self::initDimensions(); } return self::$height ?: 50; } /** * @internal * * @return bool */ public static function hasSttyAvailable() { if (null !== self::$stty) { return self::$stty; } // skip check if exec function is disabled if (!\function_exists('exec')) { return false; } exec('stty 2>&1', $output, $exitcode); return self::$stty = 0 === $exitcode; } private static function initDimensions() { if ('\\' === \DIRECTORY_SEPARATOR) { if (preg_match('/^(\d+)x(\d+)(?: \((\d+)x(\d+)\))?$/', trim(getenv('ANSICON')), $matches)) { // extract [w, H] from "wxh (WxH)" // or [w, h] from "wxh" self::$width = (int) $matches[1]; self::$height = isset($matches[4]) ? (int) $matches[4] : (int) $matches[2]; } elseif (!self::hasVt100Support() && self::hasSttyAvailable()) { // only use stty on Windows if the terminal does not support vt100 (e.g. Windows 7 + git-bash) // testing for stty in a Windows 10 vt100-enabled console will implicitly disable vt100 support on STDOUT self::initDimensionsUsingStty(); } elseif (null !== $dimensions = self::getConsoleMode()) { // extract [w, h] from "wxh" self::$width = (int) $dimensions[0]; self::$height = (int) $dimensions[1]; } } else { self::initDimensionsUsingStty(); } } /** * Returns whether STDOUT has vt100 support (some Windows 10+ configurations). */ private static function hasVt100Support() { return \function_exists('sapi_windows_vt100_support') && sapi_windows_vt100_support(fopen('php://stdout', 'w')); } /** * Initializes dimensions using the output of an stty columns line. */ private static function initDimensionsUsingStty() { if ($sttyString = self::getSttyColumns()) { if (preg_match('/rows.(\d+);.columns.(\d+);/i', $sttyString, $matches)) { // extract [w, h] from "rows h; columns w;" self::$width = (int) $matches[2]; self::$height = (int) $matches[1]; } elseif (preg_match('/;.(\d+).rows;.(\d+).columns/i', $sttyString, $matches)) { // extract [w, h] from "; h rows; w columns" self::$width = (int) $matches[2]; self::$height = (int) $matches[1]; } } } /** * Runs and parses mode CON if it's available, suppressing any error output. * * @return int[]|null An array composed of the width and the height or null if it could not be parsed */ private static function getConsoleMode() { $info = self::readFromProcess('mode CON'); if (null === $info || !preg_match('/--------+\r?\n.+?(\d+)\r?\n.+?(\d+)\r?\n/', $info, $matches)) { return null; } return [(int) $matches[2], (int) $matches[1]]; } /** * Runs and parses stty -a if it's available, suppressing any error output. * * @return string|null */ private static function getSttyColumns() { return self::readFromProcess('stty -a | grep columns'); } /** * @param string $command * * @return string|null */ private static function readFromProcess($command) { if (!\function_exists('proc_open')) { return null; } $descriptorspec = [ 1 => ['pipe', 'w'], 2 => ['pipe', 'w'], ]; $process = proc_open($command, $descriptorspec, $pipes, null, null, ['suppress_errors' => true]); if (!\is_resource($process)) { return null; } $info = stream_get_contents($pipes[1]); fclose($pipes[1]); fclose($pipes[2]); proc_close($process); return $info; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * ListCommand displays the list of all available commands for the application. * * @author Fabien Potencier */ class ListCommand extends Command { /** * {@inheritdoc} */ protected function configure() { $this ->setName('list') ->setDefinition($this->createDefinition()) ->setDescription('Lists commands') ->setHelp(<<<'EOF' The %command.name% command lists all commands: php %command.full_name% You can also display the commands for a specific namespace: php %command.full_name% test You can also output the information in other formats by using the --format option: php %command.full_name% --format=xml It's also possible to get raw list of commands (useful for embedding command runner): php %command.full_name% --raw EOF ) ; } /** * {@inheritdoc} */ public function getNativeDefinition() { return $this->createDefinition(); } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { $helper = new DescriptorHelper(); $helper->describe($output, $this->getApplication(), [ 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), 'namespace' => $input->getArgument('namespace'), ]); } /** * {@inheritdoc} */ private function createDefinition() { return new InputDefinition([ new InputArgument('namespace', InputArgument::OPTIONAL, 'The namespace name'), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command list'), new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), ]); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Application; use Symfony\Component\Console\Exception\ExceptionInterface; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * Base class for all commands. * * @author Fabien Potencier */ class Command { /** * @var string|null The default command name */ protected static $defaultName; private $application; private $name; private $processTitle; private $aliases = []; private $definition; private $hidden = false; private $help = ''; private $description = ''; private $ignoreValidationErrors = false; private $applicationDefinitionMerged = false; private $applicationDefinitionMergedWithArgs = false; private $code; private $synopsis = []; private $usages = []; private $helperSet; /** * @return string|null The default command name or null when no default name is set */ public static function getDefaultName() { $class = static::class; $r = new \ReflectionProperty($class, 'defaultName'); return $class === $r->class ? static::$defaultName : null; } /** * @param string|null $name The name of the command; passing null means it must be set in configure() * * @throws LogicException When the command name is empty */ public function __construct($name = null) { $this->definition = new InputDefinition(); if (null !== $name || null !== $name = static::getDefaultName()) { $this->setName($name); } $this->configure(); } /** * Ignores validation errors. * * This is mainly useful for the help command. */ public function ignoreValidationErrors() { $this->ignoreValidationErrors = true; } public function setApplication(Application $application = null) { $this->application = $application; if ($application) { $this->setHelperSet($application->getHelperSet()); } else { $this->helperSet = null; } } public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; } /** * Gets the helper set. * * @return HelperSet|null A HelperSet instance */ public function getHelperSet() { return $this->helperSet; } /** * Gets the application instance for this command. * * @return Application|null An Application instance */ public function getApplication() { return $this->application; } /** * Checks whether the command is enabled or not in the current environment. * * Override this to check for x or y and return false if the command can not * run properly under the current conditions. * * @return bool */ public function isEnabled() { return true; } /** * Configures the current command. */ protected function configure() { } /** * Executes the current command. * * This method is not abstract because you can use this class * as a concrete class. In this case, instead of defining the * execute() method, you set the code to execute by passing * a Closure to the setCode() method. * * @return int|null null or 0 if everything went fine, or an error code * * @throws LogicException When this abstract method is not implemented * * @see setCode() */ protected function execute(InputInterface $input, OutputInterface $output) { throw new LogicException('You must override the execute() method in the concrete command class.'); } /** * Interacts with the user. * * This method is executed before the InputDefinition is validated. * This means that this is the only place where the command can * interactively ask for values of missing required arguments. */ protected function interact(InputInterface $input, OutputInterface $output) { } /** * Initializes the command after the input has been bound and before the input * is validated. * * This is mainly useful when a lot of commands extends one main command * where some things need to be initialized based on the input arguments and options. * * @see InputInterface::bind() * @see InputInterface::validate() */ protected function initialize(InputInterface $input, OutputInterface $output) { } /** * Runs the command. * * The code to execute is either defined directly with the * setCode() method or by overriding the execute() method * in a sub-class. * * @return int The command exit code * * @throws \Exception When binding input fails. Bypass this by calling {@link ignoreValidationErrors()}. * * @see setCode() * @see execute() */ public function run(InputInterface $input, OutputInterface $output) { // force the creation of the synopsis before the merge with the app definition $this->getSynopsis(true); $this->getSynopsis(false); // add the application arguments and options $this->mergeApplicationDefinition(); // bind the input against the command specific arguments/options try { $input->bind($this->definition); } catch (ExceptionInterface $e) { if (!$this->ignoreValidationErrors) { throw $e; } } $this->initialize($input, $output); if (null !== $this->processTitle) { if (\function_exists('cli_set_process_title')) { if (!@cli_set_process_title($this->processTitle)) { if ('Darwin' === \PHP_OS) { $output->writeln('Running "cli_set_process_title" as an unprivileged user is not supported on MacOS.', OutputInterface::VERBOSITY_VERY_VERBOSE); } else { cli_set_process_title($this->processTitle); } } } elseif (\function_exists('setproctitle')) { setproctitle($this->processTitle); } elseif (OutputInterface::VERBOSITY_VERY_VERBOSE === $output->getVerbosity()) { $output->writeln('Install the proctitle PECL to be able to change the process title.'); } } if ($input->isInteractive()) { $this->interact($input, $output); } // The command name argument is often omitted when a command is executed directly with its run() method. // It would fail the validation if we didn't make sure the command argument is present, // since it's required by the application. if ($input->hasArgument('command') && null === $input->getArgument('command')) { $input->setArgument('command', $this->getName()); } $input->validate(); if ($this->code) { $statusCode = \call_user_func($this->code, $input, $output); } else { $statusCode = $this->execute($input, $output); } return is_numeric($statusCode) ? (int) $statusCode : 0; } /** * Sets the code to execute when running this command. * * If this method is used, it overrides the code defined * in the execute() method. * * @param callable $code A callable(InputInterface $input, OutputInterface $output) * * @return $this * * @throws InvalidArgumentException * * @see execute() */ public function setCode(callable $code) { if ($code instanceof \Closure) { $r = new \ReflectionFunction($code); if (null === $r->getClosureThis()) { if (\PHP_VERSION_ID < 70000) { // Bug in PHP5: https://bugs.php.net/64761 // This means that we cannot bind static closures and therefore we must // ignore any errors here. There is no way to test if the closure is // bindable. $code = @\Closure::bind($code, $this); } else { $code = \Closure::bind($code, $this); } } } $this->code = $code; return $this; } /** * Merges the application definition with the command definition. * * This method is not part of public API and should not be used directly. * * @param bool $mergeArgs Whether to merge or not the Application definition arguments to Command definition arguments */ public function mergeApplicationDefinition($mergeArgs = true) { if (null === $this->application || (true === $this->applicationDefinitionMerged && ($this->applicationDefinitionMergedWithArgs || !$mergeArgs))) { return; } $this->definition->addOptions($this->application->getDefinition()->getOptions()); $this->applicationDefinitionMerged = true; if ($mergeArgs) { $currentArguments = $this->definition->getArguments(); $this->definition->setArguments($this->application->getDefinition()->getArguments()); $this->definition->addArguments($currentArguments); $this->applicationDefinitionMergedWithArgs = true; } } /** * Sets an array of argument and option instances. * * @param array|InputDefinition $definition An array of argument and option instances or a definition instance * * @return $this */ public function setDefinition($definition) { if ($definition instanceof InputDefinition) { $this->definition = $definition; } else { $this->definition->setDefinition($definition); } $this->applicationDefinitionMerged = false; return $this; } /** * Gets the InputDefinition attached to this Command. * * @return InputDefinition An InputDefinition instance */ public function getDefinition() { if (null === $this->definition) { throw new LogicException(sprintf('Command class "%s" is not correctly initialized. You probably forgot to call the parent constructor.', static::class)); } return $this->definition; } /** * Gets the InputDefinition to be used to create representations of this Command. * * Can be overridden to provide the original command representation when it would otherwise * be changed by merging with the application InputDefinition. * * This method is not part of public API and should not be used directly. * * @return InputDefinition An InputDefinition instance */ public function getNativeDefinition() { return $this->getDefinition(); } /** * Adds an argument. * * @param string $name The argument name * @param int|null $mode The argument mode: InputArgument::REQUIRED or InputArgument::OPTIONAL * @param string $description A description text * @param string|string[]|null $default The default value (for InputArgument::OPTIONAL mode only) * * @throws InvalidArgumentException When argument mode is not valid * * @return $this */ public function addArgument($name, $mode = null, $description = '', $default = null) { $this->definition->addArgument(new InputArgument($name, $mode, $description, $default)); return $this; } /** * Adds an option. * * @param string $name The option name * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts * @param int|null $mode The option mode: One of the InputOption::VALUE_* constants * @param string $description A description text * @param string|string[]|int|bool|null $default The default value (must be null for InputOption::VALUE_NONE) * * @throws InvalidArgumentException If option mode is invalid or incompatible * * @return $this */ public function addOption($name, $shortcut = null, $mode = null, $description = '', $default = null) { $this->definition->addOption(new InputOption($name, $shortcut, $mode, $description, $default)); return $this; } /** * Sets the name of the command. * * This method can set both the namespace and the name if * you separate them by a colon (:) * * $command->setName('foo:bar'); * * @param string $name The command name * * @return $this * * @throws InvalidArgumentException When the name is invalid */ public function setName($name) { $this->validateName($name); $this->name = $name; return $this; } /** * Sets the process title of the command. * * This feature should be used only when creating a long process command, * like a daemon. * * @param string $title The process title * * @return $this */ public function setProcessTitle($title) { $this->processTitle = $title; return $this; } /** * Returns the command name. * * @return string|null */ public function getName() { return $this->name; } /** * @param bool $hidden Whether or not the command should be hidden from the list of commands * * @return Command The current instance */ public function setHidden($hidden) { $this->hidden = (bool) $hidden; return $this; } /** * @return bool whether the command should be publicly shown or not */ public function isHidden() { return $this->hidden; } /** * Sets the description for the command. * * @param string $description The description for the command * * @return $this */ public function setDescription($description) { $this->description = $description; return $this; } /** * Returns the description for the command. * * @return string The description for the command */ public function getDescription() { return $this->description; } /** * Sets the help for the command. * * @param string $help The help for the command * * @return $this */ public function setHelp($help) { $this->help = $help; return $this; } /** * Returns the help for the command. * * @return string The help for the command */ public function getHelp() { return $this->help; } /** * Returns the processed help for the command replacing the %command.name% and * %command.full_name% patterns with the real values dynamically. * * @return string The processed help for the command */ public function getProcessedHelp() { $name = $this->name; $isSingleCommand = $this->application && $this->application->isSingleCommand(); $placeholders = [ '%command.name%', '%command.full_name%', ]; $replacements = [ $name, $isSingleCommand ? $_SERVER['PHP_SELF'] : $_SERVER['PHP_SELF'].' '.$name, ]; return str_replace($placeholders, $replacements, $this->getHelp() ?: $this->getDescription()); } /** * Sets the aliases for the command. * * @param string[] $aliases An array of aliases for the command * * @return $this * * @throws InvalidArgumentException When an alias is invalid */ public function setAliases($aliases) { if (!\is_array($aliases) && !$aliases instanceof \Traversable) { throw new InvalidArgumentException('$aliases must be an array or an instance of \Traversable.'); } foreach ($aliases as $alias) { $this->validateName($alias); } $this->aliases = $aliases; return $this; } /** * Returns the aliases for the command. * * @return array An array of aliases for the command */ public function getAliases() { return $this->aliases; } /** * Returns the synopsis for the command. * * @param bool $short Whether to show the short version of the synopsis (with options folded) or not * * @return string The synopsis */ public function getSynopsis($short = false) { $key = $short ? 'short' : 'long'; if (!isset($this->synopsis[$key])) { $this->synopsis[$key] = trim(sprintf('%s %s', $this->name, $this->definition->getSynopsis($short))); } return $this->synopsis[$key]; } /** * Add a command usage example. * * @param string $usage The usage, it'll be prefixed with the command name * * @return $this */ public function addUsage($usage) { if (0 !== strpos($usage, $this->name)) { $usage = sprintf('%s %s', $this->name, $usage); } $this->usages[] = $usage; return $this; } /** * Returns alternative usages of the command. * * @return array */ public function getUsages() { return $this->usages; } /** * Gets a helper instance by name. * * @param string $name The helper name * * @return mixed The helper value * * @throws LogicException if no HelperSet is defined * @throws InvalidArgumentException if the helper is not defined */ public function getHelper($name) { if (null === $this->helperSet) { throw new LogicException(sprintf('Cannot retrieve helper "%s" because there is no HelperSet defined. Did you forget to add your command to the application or to set the application on the command using the setApplication() method? You can also set the HelperSet directly using the setHelperSet() method.', $name)); } return $this->helperSet->get($name); } /** * Validates a command name. * * It must be non-empty and parts can optionally be separated by ":". * * @param string $name * * @throws InvalidArgumentException When the name is invalid */ private function validateName($name) { if (!preg_match('/^[^\:]++(\:[^\:]++)*$/', $name)) { throw new InvalidArgumentException(sprintf('Command name "%s" is invalid.', $name)); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Helper\DescriptorHelper; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Output\OutputInterface; /** * HelpCommand displays the help for a given command. * * @author Fabien Potencier */ class HelpCommand extends Command { private $command; /** * {@inheritdoc} */ protected function configure() { $this->ignoreValidationErrors(); $this ->setName('help') ->setDefinition([ new InputArgument('command_name', InputArgument::OPTIONAL, 'The command name', 'help'), new InputOption('format', null, InputOption::VALUE_REQUIRED, 'The output format (txt, xml, json, or md)', 'txt'), new InputOption('raw', null, InputOption::VALUE_NONE, 'To output raw command help'), ]) ->setDescription('Displays help for a command') ->setHelp(<<<'EOF' The %command.name% command displays help for a given command: php %command.full_name% list You can also output the help in other formats by using the --format option: php %command.full_name% --format=xml list To display the list of available commands, please use the list command. EOF ) ; } public function setCommand(Command $command) { $this->command = $command; } /** * {@inheritdoc} */ protected function execute(InputInterface $input, OutputInterface $output) { if (null === $this->command) { $this->command = $this->getApplication()->find($input->getArgument('command_name')); } $helper = new DescriptorHelper(); $helper->describe($output, $this->command, [ 'format' => $input->getOption('format'), 'raw_text' => $input->getOption('raw'), ]); $this->command = null; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Command; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Lock\Factory; use Symfony\Component\Lock\Lock; use Symfony\Component\Lock\Store\FlockStore; use Symfony\Component\Lock\Store\SemaphoreStore; /** * Basic lock feature for commands. * * @author Geoffrey Brier */ trait LockableTrait { /** @var Lock */ private $lock; /** * Locks a command. * * @return bool */ private function lock($name = null, $blocking = false) { if (!class_exists(SemaphoreStore::class)) { throw new RuntimeException('To enable the locking feature you must install the symfony/lock component.'); } if (null !== $this->lock) { throw new LogicException('A lock is already in place.'); } if (SemaphoreStore::isSupported($blocking)) { $store = new SemaphoreStore(); } else { $store = new FlockStore(); } $this->lock = (new Factory($store))->createLock($name ?: $this->getName()); if (!$this->lock->acquire($blocking)) { $this->lock = null; return false; } return true; } /** * Releases the command lock if there is one. */ private function release() { if ($this->lock) { $this->lock->release(); $this->lock = null; } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console; /** * Contains all events dispatched by an Application. * * @author Francesco Levorato */ final class ConsoleEvents { /** * The COMMAND event allows you to attach listeners before any command is * executed by the console. It also allows you to modify the command, input and output * before they are handled to the command. * * @Event("Symfony\Component\Console\Event\ConsoleCommandEvent") */ const COMMAND = 'console.command'; /** * The TERMINATE event allows you to attach listeners after a command is * executed by the console. * * @Event("Symfony\Component\Console\Event\ConsoleTerminateEvent") */ const TERMINATE = 'console.terminate'; /** * The EXCEPTION event occurs when an uncaught exception appears * while executing Command#run(). * * This event allows you to deal with the exception or * to modify the thrown exception. * * @Event("Symfony\Component\Console\Event\ConsoleExceptionEvent") * * @deprecated The console.exception event is deprecated since version 3.3 and will be removed in 4.0. Use the console.error event instead. */ const EXCEPTION = 'console.exception'; /** * The ERROR event occurs when an uncaught exception or error appears. * * This event allows you to deal with the exception/error or * to modify the thrown exception. * * @Event("Symfony\Component\Console\Event\ConsoleErrorEvent") */ const ERROR = 'console.error'; } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Style; use Symfony\Component\Console\Exception\RuntimeException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Helper\SymfonyQuestionHelper; use Symfony\Component\Console\Helper\Table; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\BufferedOutput; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Console\Question\ChoiceQuestion; use Symfony\Component\Console\Question\ConfirmationQuestion; use Symfony\Component\Console\Question\Question; use Symfony\Component\Console\Terminal; /** * Output decorator helpers for the Symfony Style Guide. * * @author Kevin Bond */ class SymfonyStyle extends OutputStyle { const MAX_LINE_LENGTH = 120; private $input; private $questionHelper; private $progressBar; private $lineLength; private $bufferedOutput; public function __construct(InputInterface $input, OutputInterface $output) { $this->input = $input; $this->bufferedOutput = new BufferedOutput($output->getVerbosity(), false, clone $output->getFormatter()); // Windows cmd wraps lines as soon as the terminal width is reached, whether there are following chars or not. $width = (new Terminal())->getWidth() ?: self::MAX_LINE_LENGTH; $this->lineLength = min($width - (int) (\DIRECTORY_SEPARATOR === '\\'), self::MAX_LINE_LENGTH); parent::__construct($output); } /** * Formats a message as a block of text. * * @param string|array $messages The message to write in the block * @param string|null $type The block type (added in [] on first line) * @param string|null $style The style to apply to the whole block * @param string $prefix The prefix for the block * @param bool $padding Whether to add vertical padding * @param bool $escape Whether to escape the message */ public function block($messages, $type = null, $style = null, $prefix = ' ', $padding = false, $escape = true) { $messages = \is_array($messages) ? array_values($messages) : [$messages]; $this->autoPrependBlock(); $this->writeln($this->createBlock($messages, $type, $style, $prefix, $padding, $escape)); $this->newLine(); } /** * {@inheritdoc} */ public function title($message) { $this->autoPrependBlock(); $this->writeln([ sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), sprintf('%s', str_repeat('=', Helper::strlenWithoutDecoration($this->getFormatter(), $message))), ]); $this->newLine(); } /** * {@inheritdoc} */ public function section($message) { $this->autoPrependBlock(); $this->writeln([ sprintf('%s', OutputFormatter::escapeTrailingBackslash($message)), sprintf('%s', str_repeat('-', Helper::strlenWithoutDecoration($this->getFormatter(), $message))), ]); $this->newLine(); } /** * {@inheritdoc} */ public function listing(array $elements) { $this->autoPrependText(); $elements = array_map(function ($element) { return sprintf(' * %s', $element); }, $elements); $this->writeln($elements); $this->newLine(); } /** * {@inheritdoc} */ public function text($message) { $this->autoPrependText(); $messages = \is_array($message) ? array_values($message) : [$message]; foreach ($messages as $message) { $this->writeln(sprintf(' %s', $message)); } } /** * Formats a command comment. * * @param string|array $message */ public function comment($message) { $this->block($message, null, null, ' // ', false, false); } /** * {@inheritdoc} */ public function success($message) { $this->block($message, 'OK', 'fg=black;bg=green', ' ', true); } /** * {@inheritdoc} */ public function error($message) { $this->block($message, 'ERROR', 'fg=white;bg=red', ' ', true); } /** * {@inheritdoc} */ public function warning($message) { $this->block($message, 'WARNING', 'fg=white;bg=red', ' ', true); } /** * {@inheritdoc} */ public function note($message) { $this->block($message, 'NOTE', 'fg=yellow', ' ! '); } /** * {@inheritdoc} */ public function caution($message) { $this->block($message, 'CAUTION', 'fg=white;bg=red', ' ! ', true); } /** * {@inheritdoc} */ public function table(array $headers, array $rows) { $style = clone Table::getStyleDefinition('symfony-style-guide'); $style->setCellHeaderFormat('%s'); $table = new Table($this); $table->setHeaders($headers); $table->setRows($rows); $table->setStyle($style); $table->render(); $this->newLine(); } /** * {@inheritdoc} */ public function ask($question, $default = null, $validator = null) { $question = new Question($question, $default); $question->setValidator($validator); return $this->askQuestion($question); } /** * {@inheritdoc} */ public function askHidden($question, $validator = null) { $question = new Question($question); $question->setHidden(true); $question->setValidator($validator); return $this->askQuestion($question); } /** * {@inheritdoc} */ public function confirm($question, $default = true) { return $this->askQuestion(new ConfirmationQuestion($question, $default)); } /** * {@inheritdoc} */ public function choice($question, array $choices, $default = null) { if (null !== $default) { $values = array_flip($choices); $default = isset($values[$default]) ? $values[$default] : $default; } return $this->askQuestion(new ChoiceQuestion($question, $choices, $default)); } /** * {@inheritdoc} */ public function progressStart($max = 0) { $this->progressBar = $this->createProgressBar($max); $this->progressBar->start(); } /** * {@inheritdoc} */ public function progressAdvance($step = 1) { $this->getProgressBar()->advance($step); } /** * {@inheritdoc} */ public function progressFinish() { $this->getProgressBar()->finish(); $this->newLine(2); $this->progressBar = null; } /** * {@inheritdoc} */ public function createProgressBar($max = 0) { $progressBar = parent::createProgressBar($max); if ('\\' !== \DIRECTORY_SEPARATOR || 'Hyper' === getenv('TERM_PROGRAM')) { $progressBar->setEmptyBarCharacter('░'); // light shade character \u2591 $progressBar->setProgressCharacter(''); $progressBar->setBarCharacter('▓'); // dark shade character \u2593 } return $progressBar; } /** * @return mixed */ public function askQuestion(Question $question) { if ($this->input->isInteractive()) { $this->autoPrependBlock(); } if (!$this->questionHelper) { $this->questionHelper = new SymfonyQuestionHelper(); } $answer = $this->questionHelper->ask($this->input, $this, $question); if ($this->input->isInteractive()) { $this->newLine(); $this->bufferedOutput->write("\n"); } return $answer; } /** * {@inheritdoc} */ public function writeln($messages, $type = self::OUTPUT_NORMAL) { parent::writeln($messages, $type); $this->bufferedOutput->writeln($this->reduceBuffer($messages), $type); } /** * {@inheritdoc} */ public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL) { parent::write($messages, $newline, $type); $this->bufferedOutput->write($this->reduceBuffer($messages), $newline, $type); } /** * {@inheritdoc} */ public function newLine($count = 1) { parent::newLine($count); $this->bufferedOutput->write(str_repeat("\n", $count)); } /** * Returns a new instance which makes use of stderr if available. * * @return self */ public function getErrorStyle() { return new self($this->input, $this->getErrorOutput()); } /** * @return ProgressBar */ private function getProgressBar() { if (!$this->progressBar) { throw new RuntimeException('The ProgressBar is not started.'); } return $this->progressBar; } private function autoPrependBlock() { $chars = substr(str_replace(\PHP_EOL, "\n", $this->bufferedOutput->fetch()), -2); if (!isset($chars[0])) { $this->newLine(); //empty history, so we should start with a new line. return; } //Prepend new line for each non LF chars (This means no blank line was output before) $this->newLine(2 - substr_count($chars, "\n")); } private function autoPrependText() { $fetched = $this->bufferedOutput->fetch(); //Prepend new line if last char isn't EOL: if ("\n" !== substr($fetched, -1)) { $this->newLine(); } } private function reduceBuffer($messages) { // We need to know if the two last chars are PHP_EOL // Preserve the last 4 chars inserted (PHP_EOL on windows is two chars) in the history buffer return array_map(function ($value) { return substr($value, -4); }, array_merge([$this->bufferedOutput->fetch()], (array) $messages)); } private function createBlock($messages, $type = null, $style = null, $prefix = ' ', $padding = false, $escape = false) { $indentLength = 0; $prefixLength = Helper::strlenWithoutDecoration($this->getFormatter(), $prefix); $lines = []; if (null !== $type) { $type = sprintf('[%s] ', $type); $indentLength = \strlen($type); $lineIndentation = str_repeat(' ', $indentLength); } // wrap and add newlines for each element foreach ($messages as $key => $message) { if ($escape) { $message = OutputFormatter::escape($message); } $lines = array_merge($lines, explode(\PHP_EOL, wordwrap($message, $this->lineLength - $prefixLength - $indentLength, \PHP_EOL, true))); if (\count($messages) > 1 && $key < \count($messages) - 1) { $lines[] = ''; } } $firstLineIndex = 0; if ($padding && $this->isDecorated()) { $firstLineIndex = 1; array_unshift($lines, ''); $lines[] = ''; } foreach ($lines as $i => &$line) { if (null !== $type) { $line = $firstLineIndex === $i ? $type.$line : $lineIndentation.$line; } $line = $prefix.$line; $line .= str_repeat(' ', $this->lineLength - Helper::strlenWithoutDecoration($this->getFormatter(), $line)); if ($style) { $line = sprintf('<%s>%s', $style, $line); } } return $lines; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Style; use Symfony\Component\Console\Formatter\OutputFormatterInterface; use Symfony\Component\Console\Helper\ProgressBar; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Decorates output to add console style guide helpers. * * @author Kevin Bond */ abstract class OutputStyle implements OutputInterface, StyleInterface { private $output; public function __construct(OutputInterface $output) { $this->output = $output; } /** * {@inheritdoc} */ public function newLine($count = 1) { $this->output->write(str_repeat(\PHP_EOL, $count)); } /** * @param int $max * * @return ProgressBar */ public function createProgressBar($max = 0) { return new ProgressBar($this->output, $max); } /** * {@inheritdoc} */ public function write($messages, $newline = false, $type = self::OUTPUT_NORMAL) { $this->output->write($messages, $newline, $type); } /** * {@inheritdoc} */ public function writeln($messages, $type = self::OUTPUT_NORMAL) { $this->output->writeln($messages, $type); } /** * {@inheritdoc} */ public function setVerbosity($level) { $this->output->setVerbosity($level); } /** * {@inheritdoc} */ public function getVerbosity() { return $this->output->getVerbosity(); } /** * {@inheritdoc} */ public function setDecorated($decorated) { $this->output->setDecorated($decorated); } /** * {@inheritdoc} */ public function isDecorated() { return $this->output->isDecorated(); } /** * {@inheritdoc} */ public function setFormatter(OutputFormatterInterface $formatter) { $this->output->setFormatter($formatter); } /** * {@inheritdoc} */ public function getFormatter() { return $this->output->getFormatter(); } /** * {@inheritdoc} */ public function isQuiet() { return $this->output->isQuiet(); } /** * {@inheritdoc} */ public function isVerbose() { return $this->output->isVerbose(); } /** * {@inheritdoc} */ public function isVeryVerbose() { return $this->output->isVeryVerbose(); } /** * {@inheritdoc} */ public function isDebug() { return $this->output->isDebug(); } protected function getErrorOutput() { if (!$this->output instanceof ConsoleOutputInterface) { return $this->output; } return $this->output->getErrorOutput(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Style; /** * Output style helpers. * * @author Kevin Bond */ interface StyleInterface { /** * Formats a command title. * * @param string $message */ public function title($message); /** * Formats a section title. * * @param string $message */ public function section($message); /** * Formats a list. */ public function listing(array $elements); /** * Formats informational text. * * @param string|array $message */ public function text($message); /** * Formats a success result bar. * * @param string|array $message */ public function success($message); /** * Formats an error result bar. * * @param string|array $message */ public function error($message); /** * Formats an warning result bar. * * @param string|array $message */ public function warning($message); /** * Formats a note admonition. * * @param string|array $message */ public function note($message); /** * Formats a caution admonition. * * @param string|array $message */ public function caution($message); /** * Formats a table. */ public function table(array $headers, array $rows); /** * Asks a question. * * @param string $question * @param string|null $default * @param callable|null $validator * * @return mixed */ public function ask($question, $default = null, $validator = null); /** * Asks a question with the user input hidden. * * @param string $question * @param callable|null $validator * * @return mixed */ public function askHidden($question, $validator = null); /** * Asks for confirmation. * * @param string $question * @param bool $default * * @return bool */ public function confirm($question, $default = true); /** * Asks a choice question. * * @param string $question * @param string|int|null $default * * @return mixed */ public function choice($question, array $choices, $default = null); /** * Add newline(s). * * @param int $count The number of newlines */ public function newLine($count = 1); /** * Starts the progress output. * * @param int $max Maximum steps (0 if unknown) */ public function progressStart($max = 0); /** * Advances the progress output X steps. * * @param int $step Number of steps to advance */ public function progressAdvance($step = 1); /** * Finishes the progress output. */ public function progressFinish(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * Represents an incorrect command name typed in the console. * * @author Jérôme Tamarelle */ class CommandNotFoundException extends \InvalidArgumentException implements ExceptionInterface { private $alternatives; /** * @param string $message Exception message to throw * @param array $alternatives List of similar defined names * @param int $code Exception code * @param \Exception $previous Previous exception used for the exception chaining */ public function __construct($message, array $alternatives = [], $code = 0, \Exception $previous = null) { parent::__construct($message, $code, $previous); $this->alternatives = $alternatives; } /** * @return array A list of similar defined names */ public function getAlternatives() { return $this->alternatives; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class LogicException extends \LogicException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * Represents an incorrect option name typed in the console. * * @author Jérôme Tamarelle */ class InvalidOptionException extends \InvalidArgumentException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * @author Jérôme Tamarelle */ class RuntimeException extends \RuntimeException implements ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Exception; /** * ExceptionInterface. * * @author Jérôme Tamarelle */ interface ExceptionInterface { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Command\HelpCommand; use Symfony\Component\Console\Command\ListCommand; use Symfony\Component\Console\CommandLoader\CommandLoaderInterface; use Symfony\Component\Console\Event\ConsoleCommandEvent; use Symfony\Component\Console\Event\ConsoleErrorEvent; use Symfony\Component\Console\Event\ConsoleExceptionEvent; use Symfony\Component\Console\Event\ConsoleTerminateEvent; use Symfony\Component\Console\Exception\CommandNotFoundException; use Symfony\Component\Console\Exception\ExceptionInterface; use Symfony\Component\Console\Exception\LogicException; use Symfony\Component\Console\Formatter\OutputFormatter; use Symfony\Component\Console\Helper\DebugFormatterHelper; use Symfony\Component\Console\Helper\FormatterHelper; use Symfony\Component\Console\Helper\Helper; use Symfony\Component\Console\Helper\HelperSet; use Symfony\Component\Console\Helper\ProcessHelper; use Symfony\Component\Console\Helper\QuestionHelper; use Symfony\Component\Console\Input\ArgvInput; use Symfony\Component\Console\Input\ArrayInput; use Symfony\Component\Console\Input\InputArgument; use Symfony\Component\Console\Input\InputAwareInterface; use Symfony\Component\Console\Input\InputDefinition; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Input\InputOption; use Symfony\Component\Console\Input\StreamableInputInterface; use Symfony\Component\Console\Output\ConsoleOutput; use Symfony\Component\Console\Output\ConsoleOutputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\Debug\ErrorHandler; use Symfony\Component\Debug\Exception\FatalThrowableError; use Symfony\Component\EventDispatcher\EventDispatcherInterface; /** * An Application is the container for a collection of commands. * * It is the main entry point of a Console application. * * This class is optimized for a standard CLI environment. * * Usage: * * $app = new Application('myapp', '1.0 (stable)'); * $app->add(new SimpleCommand()); * $app->run(); * * @author Fabien Potencier */ class Application { private $commands = []; private $wantHelps = false; private $runningCommand; private $name; private $version; private $commandLoader; private $catchExceptions = true; private $autoExit = true; private $definition; private $helperSet; private $dispatcher; private $terminal; private $defaultCommand; private $singleCommand = false; private $initialized; /** * @param string $name The name of the application * @param string $version The version of the application */ public function __construct($name = 'UNKNOWN', $version = 'UNKNOWN') { $this->name = $name; $this->version = $version; $this->terminal = new Terminal(); $this->defaultCommand = 'list'; } public function setDispatcher(EventDispatcherInterface $dispatcher) { $this->dispatcher = $dispatcher; } public function setCommandLoader(CommandLoaderInterface $commandLoader) { $this->commandLoader = $commandLoader; } /** * Runs the current application. * * @return int 0 if everything went fine, or an error code * * @throws \Exception When running fails. Bypass this when {@link setCatchExceptions()}. */ public function run(InputInterface $input = null, OutputInterface $output = null) { putenv('LINES='.$this->terminal->getHeight()); putenv('COLUMNS='.$this->terminal->getWidth()); if (null === $input) { $input = new ArgvInput(); } if (null === $output) { $output = new ConsoleOutput(); } $renderException = function ($e) use ($output) { if (!$e instanceof \Exception) { $e = class_exists(FatalThrowableError::class) ? new FatalThrowableError($e) : new \ErrorException($e->getMessage(), $e->getCode(), \E_ERROR, $e->getFile(), $e->getLine()); } if ($output instanceof ConsoleOutputInterface) { $this->renderException($e, $output->getErrorOutput()); } else { $this->renderException($e, $output); } }; if ($phpHandler = set_exception_handler($renderException)) { restore_exception_handler(); if (!\is_array($phpHandler) || !$phpHandler[0] instanceof ErrorHandler) { $debugHandler = true; } elseif ($debugHandler = $phpHandler[0]->setExceptionHandler($renderException)) { $phpHandler[0]->setExceptionHandler($debugHandler); } } if (null !== $this->dispatcher && $this->dispatcher->hasListeners(ConsoleEvents::EXCEPTION)) { @trigger_error(sprintf('The "ConsoleEvents::EXCEPTION" event is deprecated since Symfony 3.3 and will be removed in 4.0. Listen to the "ConsoleEvents::ERROR" event instead.'), \E_USER_DEPRECATED); } $this->configureIO($input, $output); try { $exitCode = $this->doRun($input, $output); } catch (\Exception $e) { if (!$this->catchExceptions) { throw $e; } $renderException($e); $exitCode = $e->getCode(); if (is_numeric($exitCode)) { $exitCode = (int) $exitCode; if (0 === $exitCode) { $exitCode = 1; } } else { $exitCode = 1; } } finally { // if the exception handler changed, keep it // otherwise, unregister $renderException if (!$phpHandler) { if (set_exception_handler($renderException) === $renderException) { restore_exception_handler(); } restore_exception_handler(); } elseif (!$debugHandler) { $finalHandler = $phpHandler[0]->setExceptionHandler(null); if ($finalHandler !== $renderException) { $phpHandler[0]->setExceptionHandler($finalHandler); } } } if ($this->autoExit) { if ($exitCode > 255) { $exitCode = 255; } exit($exitCode); } return $exitCode; } /** * Runs the current application. * * @return int 0 if everything went fine, or an error code */ public function doRun(InputInterface $input, OutputInterface $output) { if (true === $input->hasParameterOption(['--version', '-V'], true)) { $output->writeln($this->getLongVersion()); return 0; } try { // Makes ArgvInput::getFirstArgument() able to distinguish an option from an argument. $input->bind($this->getDefinition()); } catch (ExceptionInterface $e) { // Errors must be ignored, full binding/validation happens later when the command is known. } $name = $this->getCommandName($input); if (true === $input->hasParameterOption(['--help', '-h'], true)) { if (!$name) { $name = 'help'; $input = new ArrayInput(['command_name' => $this->defaultCommand]); } else { $this->wantHelps = true; } } if (!$name) { $name = $this->defaultCommand; $definition = $this->getDefinition(); $definition->setArguments(array_merge( $definition->getArguments(), [ 'command' => new InputArgument('command', InputArgument::OPTIONAL, $definition->getArgument('command')->getDescription(), $name), ] )); } try { $e = $this->runningCommand = null; // the command name MUST be the first element of the input $command = $this->find($name); } catch (\Exception $e) { } catch (\Throwable $e) { } if (null !== $e) { if (null !== $this->dispatcher) { $event = new ConsoleErrorEvent($input, $output, $e); $this->dispatcher->dispatch(ConsoleEvents::ERROR, $event); $e = $event->getError(); if (0 === $event->getExitCode()) { return 0; } } throw $e; } $this->runningCommand = $command; $exitCode = $this->doRunCommand($command, $input, $output); $this->runningCommand = null; return $exitCode; } public function setHelperSet(HelperSet $helperSet) { $this->helperSet = $helperSet; } /** * Get the helper set associated with the command. * * @return HelperSet The HelperSet instance associated with this command */ public function getHelperSet() { if (!$this->helperSet) { $this->helperSet = $this->getDefaultHelperSet(); } return $this->helperSet; } public function setDefinition(InputDefinition $definition) { $this->definition = $definition; } /** * Gets the InputDefinition related to this Application. * * @return InputDefinition The InputDefinition instance */ public function getDefinition() { if (!$this->definition) { $this->definition = $this->getDefaultInputDefinition(); } if ($this->singleCommand) { $inputDefinition = $this->definition; $inputDefinition->setArguments(); return $inputDefinition; } return $this->definition; } /** * Gets the help message. * * @return string A help message */ public function getHelp() { return $this->getLongVersion(); } /** * Gets whether to catch exceptions or not during commands execution. * * @return bool Whether to catch exceptions or not during commands execution */ public function areExceptionsCaught() { return $this->catchExceptions; } /** * Sets whether to catch exceptions or not during commands execution. * * @param bool $boolean Whether to catch exceptions or not during commands execution */ public function setCatchExceptions($boolean) { $this->catchExceptions = (bool) $boolean; } /** * Gets whether to automatically exit after a command execution or not. * * @return bool Whether to automatically exit after a command execution or not */ public function isAutoExitEnabled() { return $this->autoExit; } /** * Sets whether to automatically exit after a command execution or not. * * @param bool $boolean Whether to automatically exit after a command execution or not */ public function setAutoExit($boolean) { $this->autoExit = (bool) $boolean; } /** * Gets the name of the application. * * @return string The application name */ public function getName() { return $this->name; } /** * Sets the application name. * * @param string $name The application name */ public function setName($name) { $this->name = $name; } /** * Gets the application version. * * @return string The application version */ public function getVersion() { return $this->version; } /** * Sets the application version. * * @param string $version The application version */ public function setVersion($version) { $this->version = $version; } /** * Returns the long version of the application. * * @return string The long application version */ public function getLongVersion() { if ('UNKNOWN' !== $this->getName()) { if ('UNKNOWN' !== $this->getVersion()) { return sprintf('%s %s', $this->getName(), $this->getVersion()); } return $this->getName(); } return 'Console Tool'; } /** * Registers a new command. * * @param string $name The command name * * @return Command The newly created command */ public function register($name) { return $this->add(new Command($name)); } /** * Adds an array of command objects. * * If a Command is not enabled it will not be added. * * @param Command[] $commands An array of commands */ public function addCommands(array $commands) { foreach ($commands as $command) { $this->add($command); } } /** * Adds a command object. * * If a command with the same name already exists, it will be overridden. * If the command is not enabled it will not be added. * * @return Command|null The registered command if enabled or null */ public function add(Command $command) { $this->init(); $command->setApplication($this); if (!$command->isEnabled()) { $command->setApplication(null); return null; } // Will throw if the command is not correctly initialized. $command->getDefinition(); if (!$command->getName()) { throw new LogicException(sprintf('The command defined in "%s" cannot have an empty name.', \get_class($command))); } $this->commands[$command->getName()] = $command; foreach ($command->getAliases() as $alias) { $this->commands[$alias] = $command; } return $command; } /** * Returns a registered command by name or alias. * * @param string $name The command name or alias * * @return Command A Command object * * @throws CommandNotFoundException When given command name does not exist */ public function get($name) { $this->init(); if (!$this->has($name)) { throw new CommandNotFoundException(sprintf('The command "%s" does not exist.', $name)); } // When the command has a different name than the one used at the command loader level if (!isset($this->commands[$name])) { throw new CommandNotFoundException(sprintf('The "%s" command cannot be found because it is registered under multiple names. Make sure you don\'t set a different name via constructor or "setName()".', $name)); } $command = $this->commands[$name]; if ($this->wantHelps) { $this->wantHelps = false; $helpCommand = $this->get('help'); $helpCommand->setCommand($command); return $helpCommand; } return $command; } /** * Returns true if the command exists, false otherwise. * * @param string $name The command name or alias * * @return bool true if the command exists, false otherwise */ public function has($name) { $this->init(); return isset($this->commands[$name]) || ($this->commandLoader && $this->commandLoader->has($name) && $this->add($this->commandLoader->get($name))); } /** * Returns an array of all unique namespaces used by currently registered commands. * * It does not return the global namespace which always exists. * * @return string[] An array of namespaces */ public function getNamespaces() { $namespaces = []; foreach ($this->all() as $command) { if ($command->isHidden()) { continue; } $namespaces = array_merge($namespaces, $this->extractAllNamespaces($command->getName())); foreach ($command->getAliases() as $alias) { $namespaces = array_merge($namespaces, $this->extractAllNamespaces($alias)); } } return array_values(array_unique(array_filter($namespaces))); } /** * Finds a registered namespace by a name or an abbreviation. * * @param string $namespace A namespace or abbreviation to search for * * @return string A registered namespace * * @throws CommandNotFoundException When namespace is incorrect or ambiguous */ public function findNamespace($namespace) { $allNamespaces = $this->getNamespaces(); $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $namespace); $namespaces = preg_grep('{^'.$expr.'}', $allNamespaces); if (empty($namespaces)) { $message = sprintf('There are no commands defined in the "%s" namespace.', $namespace); if ($alternatives = $this->findAlternatives($namespace, $allNamespaces)) { if (1 == \count($alternatives)) { $message .= "\n\nDid you mean this?\n "; } else { $message .= "\n\nDid you mean one of these?\n "; } $message .= implode("\n ", $alternatives); } throw new CommandNotFoundException($message, $alternatives); } $exact = \in_array($namespace, $namespaces, true); if (\count($namespaces) > 1 && !$exact) { throw new CommandNotFoundException(sprintf("The namespace \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $namespace, $this->getAbbreviationSuggestions(array_values($namespaces))), array_values($namespaces)); } return $exact ? $namespace : reset($namespaces); } /** * Finds a command by name or alias. * * Contrary to get, this command tries to find the best * match if you give it an abbreviation of a name or alias. * * @param string $name A command name or a command alias * * @return Command A Command instance * * @throws CommandNotFoundException When command name is incorrect or ambiguous */ public function find($name) { $this->init(); $aliases = []; foreach ($this->commands as $command) { foreach ($command->getAliases() as $alias) { if (!$this->has($alias)) { $this->commands[$alias] = $command; } } } if ($this->has($name)) { return $this->get($name); } $allCommands = $this->commandLoader ? array_merge($this->commandLoader->getNames(), array_keys($this->commands)) : array_keys($this->commands); $expr = preg_replace_callback('{([^:]+|)}', function ($matches) { return preg_quote($matches[1]).'[^:]*'; }, $name); $commands = preg_grep('{^'.$expr.'}', $allCommands); if (empty($commands)) { $commands = preg_grep('{^'.$expr.'}i', $allCommands); } // if no commands matched or we just matched namespaces if (empty($commands) || \count(preg_grep('{^'.$expr.'$}i', $commands)) < 1) { if (false !== $pos = strrpos($name, ':')) { // check if a namespace exists and contains commands $this->findNamespace(substr($name, 0, $pos)); } $message = sprintf('Command "%s" is not defined.', $name); if ($alternatives = $this->findAlternatives($name, $allCommands)) { // remove hidden commands $alternatives = array_filter($alternatives, function ($name) { return !$this->get($name)->isHidden(); }); if (1 == \count($alternatives)) { $message .= "\n\nDid you mean this?\n "; } else { $message .= "\n\nDid you mean one of these?\n "; } $message .= implode("\n ", $alternatives); } throw new CommandNotFoundException($message, array_values($alternatives)); } // filter out aliases for commands which are already on the list if (\count($commands) > 1) { $commandList = $this->commandLoader ? array_merge(array_flip($this->commandLoader->getNames()), $this->commands) : $this->commands; $commands = array_unique(array_filter($commands, function ($nameOrAlias) use (&$commandList, $commands, &$aliases) { if (!$commandList[$nameOrAlias] instanceof Command) { $commandList[$nameOrAlias] = $this->commandLoader->get($nameOrAlias); } $commandName = $commandList[$nameOrAlias]->getName(); $aliases[$nameOrAlias] = $commandName; return $commandName === $nameOrAlias || !\in_array($commandName, $commands); })); } $exact = \in_array($name, $commands, true) || isset($aliases[$name]); if (\count($commands) > 1 && !$exact) { $usableWidth = $this->terminal->getWidth() - 10; $abbrevs = array_values($commands); $maxLen = 0; foreach ($abbrevs as $abbrev) { $maxLen = max(Helper::strlen($abbrev), $maxLen); } $abbrevs = array_map(function ($cmd) use ($commandList, $usableWidth, $maxLen) { if ($commandList[$cmd]->isHidden()) { return false; } $abbrev = str_pad($cmd, $maxLen, ' ').' '.$commandList[$cmd]->getDescription(); return Helper::strlen($abbrev) > $usableWidth ? Helper::substr($abbrev, 0, $usableWidth - 3).'...' : $abbrev; }, array_values($commands)); $suggestions = $this->getAbbreviationSuggestions(array_filter($abbrevs)); throw new CommandNotFoundException(sprintf("Command \"%s\" is ambiguous.\nDid you mean one of these?\n%s.", $name, $suggestions), array_values($commands)); } return $this->get($exact ? $name : reset($commands)); } /** * Gets the commands (registered in the given namespace if provided). * * The array keys are the full names and the values the command instances. * * @param string $namespace A namespace name * * @return Command[] An array of Command instances */ public function all($namespace = null) { $this->init(); if (null === $namespace) { if (!$this->commandLoader) { return $this->commands; } $commands = $this->commands; foreach ($this->commandLoader->getNames() as $name) { if (!isset($commands[$name]) && $this->has($name)) { $commands[$name] = $this->get($name); } } return $commands; } $commands = []; foreach ($this->commands as $name => $command) { if ($namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1)) { $commands[$name] = $command; } } if ($this->commandLoader) { foreach ($this->commandLoader->getNames() as $name) { if (!isset($commands[$name]) && $namespace === $this->extractNamespace($name, substr_count($namespace, ':') + 1) && $this->has($name)) { $commands[$name] = $this->get($name); } } } return $commands; } /** * Returns an array of possible abbreviations given a set of names. * * @param array $names An array of names * * @return array An array of abbreviations */ public static function getAbbreviations($names) { $abbrevs = []; foreach ($names as $name) { for ($len = \strlen($name); $len > 0; --$len) { $abbrev = substr($name, 0, $len); $abbrevs[$abbrev][] = $name; } } return $abbrevs; } /** * Renders a caught exception. */ public function renderException(\Exception $e, OutputInterface $output) { $output->writeln('', OutputInterface::VERBOSITY_QUIET); $this->doRenderException($e, $output); if (null !== $this->runningCommand) { $output->writeln(sprintf('%s', sprintf($this->runningCommand->getSynopsis(), $this->getName())), OutputInterface::VERBOSITY_QUIET); $output->writeln('', OutputInterface::VERBOSITY_QUIET); } } protected function doRenderException(\Exception $e, OutputInterface $output) { do { $message = trim($e->getMessage()); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $title = sprintf(' [%s%s] ', \get_class($e), 0 !== ($code = $e->getCode()) ? ' ('.$code.')' : ''); $len = Helper::strlen($title); } else { $len = 0; } $width = $this->terminal->getWidth() ? $this->terminal->getWidth() - 1 : \PHP_INT_MAX; // HHVM only accepts 32 bits integer in str_split, even when PHP_INT_MAX is a 64 bit integer: https://github.com/facebook/hhvm/issues/1327 if (\defined('HHVM_VERSION') && $width > 1 << 31) { $width = 1 << 31; } $lines = []; foreach ('' !== $message ? preg_split('/\r?\n/', $message) : [] as $line) { foreach ($this->splitStringByWidth($line, $width - 4) as $line) { // pre-format lines to get the right string length $lineLength = Helper::strlen($line) + 4; $lines[] = [$line, $lineLength]; $len = max($lineLength, $len); } } $messages = []; if (!$e instanceof ExceptionInterface || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $messages[] = sprintf('%s', OutputFormatter::escape(sprintf('In %s line %s:', basename($e->getFile()) ?: 'n/a', $e->getLine() ?: 'n/a'))); } $messages[] = $emptyLine = sprintf('%s', str_repeat(' ', $len)); if ('' === $message || OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $messages[] = sprintf('%s%s', $title, str_repeat(' ', max(0, $len - Helper::strlen($title)))); } foreach ($lines as $line) { $messages[] = sprintf(' %s %s', OutputFormatter::escape($line[0]), str_repeat(' ', $len - $line[1])); } $messages[] = $emptyLine; $messages[] = ''; $output->writeln($messages, OutputInterface::VERBOSITY_QUIET); if (OutputInterface::VERBOSITY_VERBOSE <= $output->getVerbosity()) { $output->writeln('Exception trace:', OutputInterface::VERBOSITY_QUIET); // exception related properties $trace = $e->getTrace(); array_unshift($trace, [ 'function' => '', 'file' => $e->getFile() ?: 'n/a', 'line' => $e->getLine() ?: 'n/a', 'args' => [], ]); for ($i = 0, $count = \count($trace); $i < $count; ++$i) { $class = isset($trace[$i]['class']) ? $trace[$i]['class'] : ''; $type = isset($trace[$i]['type']) ? $trace[$i]['type'] : ''; $function = isset($trace[$i]['function']) ? $trace[$i]['function'] : ''; $file = isset($trace[$i]['file']) ? $trace[$i]['file'] : 'n/a'; $line = isset($trace[$i]['line']) ? $trace[$i]['line'] : 'n/a'; $output->writeln(sprintf(' %s%s at %s:%s', $class, $function ? $type.$function.'()' : '', $file, $line), OutputInterface::VERBOSITY_QUIET); } $output->writeln('', OutputInterface::VERBOSITY_QUIET); } } while ($e = $e->getPrevious()); } /** * Tries to figure out the terminal width in which this application runs. * * @return int|null * * @deprecated since version 3.2, to be removed in 4.0. Create a Terminal instance instead. */ protected function getTerminalWidth() { @trigger_error(sprintf('The "%s()" method is deprecated as of 3.2 and will be removed in 4.0. Create a Terminal instance instead.', __METHOD__), \E_USER_DEPRECATED); return $this->terminal->getWidth(); } /** * Tries to figure out the terminal height in which this application runs. * * @return int|null * * @deprecated since version 3.2, to be removed in 4.0. Create a Terminal instance instead. */ protected function getTerminalHeight() { @trigger_error(sprintf('The "%s()" method is deprecated as of 3.2 and will be removed in 4.0. Create a Terminal instance instead.', __METHOD__), \E_USER_DEPRECATED); return $this->terminal->getHeight(); } /** * Tries to figure out the terminal dimensions based on the current environment. * * @return array Array containing width and height * * @deprecated since version 3.2, to be removed in 4.0. Create a Terminal instance instead. */ public function getTerminalDimensions() { @trigger_error(sprintf('The "%s()" method is deprecated as of 3.2 and will be removed in 4.0. Create a Terminal instance instead.', __METHOD__), \E_USER_DEPRECATED); return [$this->terminal->getWidth(), $this->terminal->getHeight()]; } /** * Sets terminal dimensions. * * Can be useful to force terminal dimensions for functional tests. * * @param int $width The width * @param int $height The height * * @return $this * * @deprecated since version 3.2, to be removed in 4.0. Set the COLUMNS and LINES env vars instead. */ public function setTerminalDimensions($width, $height) { @trigger_error(sprintf('The "%s()" method is deprecated as of 3.2 and will be removed in 4.0. Set the COLUMNS and LINES env vars instead.', __METHOD__), \E_USER_DEPRECATED); putenv('COLUMNS='.$width); putenv('LINES='.$height); return $this; } /** * Configures the input and output instances based on the user arguments and options. */ protected function configureIO(InputInterface $input, OutputInterface $output) { if (true === $input->hasParameterOption(['--ansi'], true)) { $output->setDecorated(true); } elseif (true === $input->hasParameterOption(['--no-ansi'], true)) { $output->setDecorated(false); } if (true === $input->hasParameterOption(['--no-interaction', '-n'], true)) { $input->setInteractive(false); } elseif (\function_exists('posix_isatty')) { $inputStream = null; if ($input instanceof StreamableInputInterface) { $inputStream = $input->getStream(); } // This check ensures that calling QuestionHelper::setInputStream() works // To be removed in 4.0 (in the same time as QuestionHelper::setInputStream) if (!$inputStream && $this->getHelperSet()->has('question')) { $inputStream = $this->getHelperSet()->get('question')->getInputStream(false); } if (!@posix_isatty($inputStream) && false === getenv('SHELL_INTERACTIVE')) { $input->setInteractive(false); } } switch ($shellVerbosity = (int) getenv('SHELL_VERBOSITY')) { case -1: $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); break; case 1: $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); break; case 2: $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); break; case 3: $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); break; default: $shellVerbosity = 0; break; } if (true === $input->hasParameterOption(['--quiet', '-q'], true)) { $output->setVerbosity(OutputInterface::VERBOSITY_QUIET); $shellVerbosity = -1; } else { if ($input->hasParameterOption('-vvv', true) || $input->hasParameterOption('--verbose=3', true) || 3 === $input->getParameterOption('--verbose', false, true)) { $output->setVerbosity(OutputInterface::VERBOSITY_DEBUG); $shellVerbosity = 3; } elseif ($input->hasParameterOption('-vv', true) || $input->hasParameterOption('--verbose=2', true) || 2 === $input->getParameterOption('--verbose', false, true)) { $output->setVerbosity(OutputInterface::VERBOSITY_VERY_VERBOSE); $shellVerbosity = 2; } elseif ($input->hasParameterOption('-v', true) || $input->hasParameterOption('--verbose=1', true) || $input->hasParameterOption('--verbose', true) || $input->getParameterOption('--verbose', false, true)) { $output->setVerbosity(OutputInterface::VERBOSITY_VERBOSE); $shellVerbosity = 1; } } if (-1 === $shellVerbosity) { $input->setInteractive(false); } putenv('SHELL_VERBOSITY='.$shellVerbosity); $_ENV['SHELL_VERBOSITY'] = $shellVerbosity; $_SERVER['SHELL_VERBOSITY'] = $shellVerbosity; } /** * Runs the current command. * * If an event dispatcher has been attached to the application, * events are also dispatched during the life-cycle of the command. * * @return int 0 if everything went fine, or an error code */ protected function doRunCommand(Command $command, InputInterface $input, OutputInterface $output) { foreach ($command->getHelperSet() as $helper) { if ($helper instanceof InputAwareInterface) { $helper->setInput($input); } } if (null === $this->dispatcher) { return $command->run($input, $output); } // bind before the console.command event, so the listeners have access to input options/arguments try { $command->mergeApplicationDefinition(); $input->bind($command->getDefinition()); } catch (ExceptionInterface $e) { // ignore invalid options/arguments for now, to allow the event listeners to customize the InputDefinition } $event = new ConsoleCommandEvent($command, $input, $output); $e = null; try { $this->dispatcher->dispatch(ConsoleEvents::COMMAND, $event); if ($event->commandShouldRun()) { $exitCode = $command->run($input, $output); } else { $exitCode = ConsoleCommandEvent::RETURN_CODE_DISABLED; } } catch (\Exception $e) { } catch (\Throwable $e) { } if (null !== $e) { if ($this->dispatcher->hasListeners(ConsoleEvents::EXCEPTION)) { $x = $e instanceof \Exception ? $e : new FatalThrowableError($e); $event = new ConsoleExceptionEvent($command, $input, $output, $x, $x->getCode()); $this->dispatcher->dispatch(ConsoleEvents::EXCEPTION, $event); if ($x !== $event->getException()) { $e = $event->getException(); } } $event = new ConsoleErrorEvent($input, $output, $e, $command); $this->dispatcher->dispatch(ConsoleEvents::ERROR, $event); $e = $event->getError(); if (0 === $exitCode = $event->getExitCode()) { $e = null; } } $event = new ConsoleTerminateEvent($command, $input, $output, $exitCode); $this->dispatcher->dispatch(ConsoleEvents::TERMINATE, $event); if (null !== $e) { throw $e; } return $event->getExitCode(); } /** * Gets the name of the command based on input. * * @return string|null */ protected function getCommandName(InputInterface $input) { return $this->singleCommand ? $this->defaultCommand : $input->getFirstArgument(); } /** * Gets the default input definition. * * @return InputDefinition An InputDefinition instance */ protected function getDefaultInputDefinition() { return new InputDefinition([ new InputArgument('command', InputArgument::REQUIRED, 'The command to execute'), new InputOption('--help', '-h', InputOption::VALUE_NONE, 'Display this help message'), new InputOption('--quiet', '-q', InputOption::VALUE_NONE, 'Do not output any message'), new InputOption('--verbose', '-v|vv|vvv', InputOption::VALUE_NONE, 'Increase the verbosity of messages: 1 for normal output, 2 for more verbose output and 3 for debug'), new InputOption('--version', '-V', InputOption::VALUE_NONE, 'Display this application version'), new InputOption('--ansi', '', InputOption::VALUE_NONE, 'Force ANSI output'), new InputOption('--no-ansi', '', InputOption::VALUE_NONE, 'Disable ANSI output'), new InputOption('--no-interaction', '-n', InputOption::VALUE_NONE, 'Do not ask any interactive question'), ]); } /** * Gets the default commands that should always be available. * * @return Command[] An array of default Command instances */ protected function getDefaultCommands() { return [new HelpCommand(), new ListCommand()]; } /** * Gets the default helper set with the helpers that should always be available. * * @return HelperSet A HelperSet instance */ protected function getDefaultHelperSet() { return new HelperSet([ new FormatterHelper(), new DebugFormatterHelper(), new ProcessHelper(), new QuestionHelper(), ]); } /** * Returns abbreviated suggestions in string format. * * @param array $abbrevs Abbreviated suggestions to convert * * @return string A formatted string of abbreviated suggestions */ private function getAbbreviationSuggestions($abbrevs) { return ' '.implode("\n ", $abbrevs); } /** * Returns the namespace part of the command name. * * This method is not part of public API and should not be used directly. * * @param string $name The full name of the command * @param string $limit The maximum number of parts of the namespace * * @return string The namespace of the command */ public function extractNamespace($name, $limit = null) { $parts = explode(':', $name, -1); return implode(':', null === $limit ? $parts : \array_slice($parts, 0, $limit)); } /** * Finds alternative of $name among $collection, * if nothing is found in $collection, try in $abbrevs. * * @param string $name The string * @param iterable $collection The collection * * @return string[] A sorted array of similar string */ private function findAlternatives($name, $collection) { $threshold = 1e3; $alternatives = []; $collectionParts = []; foreach ($collection as $item) { $collectionParts[$item] = explode(':', $item); } foreach (explode(':', $name) as $i => $subname) { foreach ($collectionParts as $collectionName => $parts) { $exists = isset($alternatives[$collectionName]); if (!isset($parts[$i]) && $exists) { $alternatives[$collectionName] += $threshold; continue; } elseif (!isset($parts[$i])) { continue; } $lev = levenshtein($subname, $parts[$i]); if ($lev <= \strlen($subname) / 3 || '' !== $subname && false !== strpos($parts[$i], $subname)) { $alternatives[$collectionName] = $exists ? $alternatives[$collectionName] + $lev : $lev; } elseif ($exists) { $alternatives[$collectionName] += $threshold; } } } foreach ($collection as $item) { $lev = levenshtein($name, $item); if ($lev <= \strlen($name) / 3 || false !== strpos($item, $name)) { $alternatives[$item] = isset($alternatives[$item]) ? $alternatives[$item] - $lev : $lev; } } $alternatives = array_filter($alternatives, function ($lev) use ($threshold) { return $lev < 2 * $threshold; }); ksort($alternatives, \SORT_NATURAL | \SORT_FLAG_CASE); return array_keys($alternatives); } /** * Sets the default Command name. * * @param string $commandName The Command name * @param bool $isSingleCommand Set to true if there is only one command in this application * * @return self */ public function setDefaultCommand($commandName, $isSingleCommand = false) { $this->defaultCommand = $commandName; if ($isSingleCommand) { // Ensure the command exist $this->find($commandName); $this->singleCommand = true; } return $this; } /** * @internal */ public function isSingleCommand() { return $this->singleCommand; } private function splitStringByWidth($string, $width) { // str_split is not suitable for multi-byte characters, we should use preg_split to get char array properly. // additionally, array_slice() is not enough as some character has doubled width. // we need a function to split string not by character count but by string width if (false === $encoding = mb_detect_encoding($string, null, true)) { return str_split($string, $width); } $utf8String = mb_convert_encoding($string, 'utf8', $encoding); $lines = []; $line = ''; foreach (preg_split('//u', $utf8String) as $char) { // test if $char could be appended to current line if (mb_strwidth($line.$char, 'utf8') <= $width) { $line .= $char; continue; } // if not, push current line to array and make new line $lines[] = str_pad($line, $width); $line = $char; } $lines[] = \count($lines) ? str_pad($line, $width) : $line; mb_convert_variables($encoding, 'utf8', $lines); return $lines; } /** * Returns all namespaces of the command name. * * @param string $name The full name of the command * * @return string[] The namespaces of the command */ private function extractAllNamespaces($name) { // -1 as third argument is needed to skip the command short name when exploding $parts = explode(':', $name, -1); $namespaces = []; foreach ($parts as $part) { if (\count($namespaces)) { $namespaces[] = end($namespaces).':'.$part; } else { $namespaces[] = $part; } } return $namespaces; } private function init() { if ($this->initialized) { return; } $this->initialized = true; foreach ($this->getDefaultCommands() as $command) { $this->add($command); } } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\DependencyInjection; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\CommandLoader\ContainerCommandLoader; use Symfony\Component\DependencyInjection\Compiler\CompilerPassInterface; use Symfony\Component\DependencyInjection\Compiler\ServiceLocatorTagPass; use Symfony\Component\DependencyInjection\ContainerBuilder; use Symfony\Component\DependencyInjection\Exception\InvalidArgumentException; use Symfony\Component\DependencyInjection\TypedReference; /** * Registers console commands. * * @author Grégoire Pineau */ class AddConsoleCommandPass implements CompilerPassInterface { private $commandLoaderServiceId; private $commandTag; public function __construct($commandLoaderServiceId = 'console.command_loader', $commandTag = 'console.command') { $this->commandLoaderServiceId = $commandLoaderServiceId; $this->commandTag = $commandTag; } public function process(ContainerBuilder $container) { $commandServices = $container->findTaggedServiceIds($this->commandTag, true); $lazyCommandMap = []; $lazyCommandRefs = []; $serviceIds = []; $lazyServiceIds = []; foreach ($commandServices as $id => $tags) { $definition = $container->getDefinition($id); $class = $container->getParameterBag()->resolveValue($definition->getClass()); $commandId = 'console.command.'.strtolower(str_replace('\\', '_', $class)); if (isset($tags[0]['command'])) { $commandName = $tags[0]['command']; } else { if (!$r = $container->getReflectionClass($class)) { throw new InvalidArgumentException(sprintf('Class "%s" used for service "%s" cannot be found.', $class, $id)); } if (!$r->isSubclassOf(Command::class)) { throw new InvalidArgumentException(sprintf('The service "%s" tagged "%s" must be a subclass of "%s".', $id, $this->commandTag, Command::class)); } $commandName = $class::getDefaultName(); } if (null === $commandName) { if (isset($serviceIds[$commandId]) || $container->hasAlias($commandId)) { $commandId = $commandId.'_'.$id; } if (!$definition->isPublic() || $definition->isPrivate()) { $container->setAlias($commandId, $id)->setPublic(true); $id = $commandId; } $serviceIds[$commandId] = $id; continue; } $serviceIds[$commandId] = $id; $lazyServiceIds[$id] = true; unset($tags[0]); $lazyCommandMap[$commandName] = $id; $lazyCommandRefs[$id] = new TypedReference($id, $class); $aliases = []; foreach ($tags as $tag) { if (isset($tag['command'])) { $aliases[] = $tag['command']; $lazyCommandMap[$tag['command']] = $id; } } $definition->addMethodCall('setName', [$commandName]); if ($aliases) { $definition->addMethodCall('setAliases', [$aliases]); } } $container ->register($this->commandLoaderServiceId, ContainerCommandLoader::class) ->setPublic(true) ->setArguments([ServiceLocatorTagPass::register($container, $lazyCommandRefs), $lazyCommandMap]); $container->setParameter('console.command.ids', $serviceIds); $container->setParameter('console.lazy_command.ids', $lazyServiceIds); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Event; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Allows to handle throwables thrown while running a command. * * @author Wouter de Jong */ final class ConsoleErrorEvent extends ConsoleEvent { private $error; private $exitCode; public function __construct(InputInterface $input, OutputInterface $output, $error, Command $command = null) { parent::__construct($command, $input, $output); $this->setError($error); } /** * Returns the thrown error/exception. * * @return \Throwable */ public function getError() { return $this->error; } /** * Replaces the thrown error/exception. * * @param \Throwable $error */ public function setError($error) { if (!$error instanceof \Throwable && !$error instanceof \Exception) { throw new InvalidArgumentException(sprintf('The error passed to ConsoleErrorEvent must be an instance of \Throwable or \Exception, "%s" was passed instead.', \is_object($error) ? \get_class($error) : \gettype($error))); } $this->error = $error; } /** * Sets the exit code. * * @param int $exitCode The command exit code */ public function setExitCode($exitCode) { $this->exitCode = (int) $exitCode; $r = new \ReflectionProperty($this->error, 'code'); $r->setAccessible(true); $r->setValue($this->error, $this->exitCode); } /** * Gets the exit code. * * @return int The command exit code */ public function getExitCode() { return null !== $this->exitCode ? $this->exitCode : (\is_int($this->error->getCode()) && 0 !== $this->error->getCode() ? $this->error->getCode() : 1); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Event; @trigger_error(sprintf('The "%s" class is deprecated since Symfony 3.3 and will be removed in 4.0. Use the ConsoleErrorEvent instead.', ConsoleExceptionEvent::class), \E_USER_DEPRECATED); use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Allows to handle exception thrown in a command. * * @author Fabien Potencier * * @deprecated since version 3.3, to be removed in 4.0. Use ConsoleErrorEvent instead. */ class ConsoleExceptionEvent extends ConsoleEvent { private $exception; private $exitCode; public function __construct(Command $command, InputInterface $input, OutputInterface $output, \Exception $exception, $exitCode) { parent::__construct($command, $input, $output); $this->setException($exception); $this->exitCode = (int) $exitCode; } /** * Returns the thrown exception. * * @return \Exception The thrown exception */ public function getException() { return $this->exception; } /** * Replaces the thrown exception. * * This exception will be thrown if no response is set in the event. * * @param \Exception $exception The thrown exception */ public function setException(\Exception $exception) { $this->exception = $exception; } /** * Gets the exit code. * * @return int The command exit code */ public function getExitCode() { return $this->exitCode; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Event; /** * Allows to do things before the command is executed, like skipping the command or changing the input. * * @author Fabien Potencier */ class ConsoleCommandEvent extends ConsoleEvent { /** * The return code for skipped commands, this will also be passed into the terminate event. */ const RETURN_CODE_DISABLED = 113; /** * Indicates if the command should be run or skipped. */ private $commandShouldRun = true; /** * Disables the command, so it won't be run. * * @return bool */ public function disableCommand() { return $this->commandShouldRun = false; } /** * Enables the command. * * @return bool */ public function enableCommand() { return $this->commandShouldRun = true; } /** * Returns true if the command is runnable, false otherwise. * * @return bool */ public function commandShouldRun() { return $this->commandShouldRun; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Event; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Symfony\Component\EventDispatcher\Event; /** * Allows to inspect input and output of a command. * * @author Francesco Levorato */ class ConsoleEvent extends Event { protected $command; private $input; private $output; public function __construct(Command $command = null, InputInterface $input, OutputInterface $output) { $this->command = $command; $this->input = $input; $this->output = $output; } /** * Gets the command that is executed. * * @return Command|null A Command instance */ public function getCommand() { return $this->command; } /** * Gets the input instance. * * @return InputInterface An InputInterface instance */ public function getInput() { return $this->input; } /** * Gets the output instance. * * @return OutputInterface An OutputInterface instance */ public function getOutput() { return $this->output; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Event; use Symfony\Component\Console\Command\Command; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; /** * Allows to manipulate the exit code of a command after its execution. * * @author Francesco Levorato */ class ConsoleTerminateEvent extends ConsoleEvent { /** * The exit code of the command. * * @var int */ private $exitCode; public function __construct(Command $command, InputInterface $input, OutputInterface $output, $exitCode) { parent::__construct($command, $input, $output); $this->setExitCode($exitCode); } /** * Sets the exit code. * * @param int $exitCode The command exit code */ public function setExitCode($exitCode) { $this->exitCode = (int) $exitCode; } /** * Gets the exit code. * * @return int The command exit code */ public function getExitCode() { return $this->exitCode; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; /** * StringInput represents an input provided as a string. * * Usage: * * $input = new StringInput('foo --bar="foobar"'); * * @author Fabien Potencier */ class StringInput extends ArgvInput { const REGEX_STRING = '([^\s]+?)(?:\s|(?setTokens($this->tokenize($input)); } /** * Tokenizes a string. * * @param string $input The input to tokenize * * @return array An array of tokens * * @throws InvalidArgumentException When unable to parse input (should never happen) */ private function tokenize($input) { $tokens = []; $length = \strlen($input); $cursor = 0; while ($cursor < $length) { if (preg_match('/\s+/A', $input, $match, null, $cursor)) { } elseif (preg_match('/([^="\'\s]+?)(=?)('.self::REGEX_QUOTED_STRING.'+)/A', $input, $match, null, $cursor)) { $tokens[] = $match[1].$match[2].stripcslashes(str_replace(['"\'', '\'"', '\'\'', '""'], '', substr($match[3], 1, \strlen($match[3]) - 2))); } elseif (preg_match('/'.self::REGEX_QUOTED_STRING.'/A', $input, $match, null, $cursor)) { $tokens[] = stripcslashes(substr($match[0], 1, \strlen($match[0]) - 2)); } elseif (preg_match('/'.self::REGEX_STRING.'/A', $input, $match, null, $cursor)) { $tokens[] = stripcslashes($match[1]); } else { // should never happen throw new InvalidArgumentException(sprintf('Unable to parse input near "... %s ...".', substr($input, $cursor, 10))); } $cursor += \strlen($match[0]); } return $tokens; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\RuntimeException; /** * InputInterface is the interface implemented by all input classes. * * @author Fabien Potencier */ interface InputInterface { /** * Returns the first argument from the raw parameters (not parsed). * * @return string|null The value of the first argument or null otherwise */ public function getFirstArgument(); /** * Returns true if the raw parameters (not parsed) contain a value. * * This method is to be used to introspect the input parameters * before they have been validated. It must be used carefully. * Does not necessarily return the correct result for short options * when multiple flags are combined in the same option. * * @param string|array $values The values to look for in the raw parameters (can be an array) * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * * @return bool true if the value is contained in the raw parameters */ public function hasParameterOption($values, $onlyParams = false); /** * Returns the value of a raw option (not parsed). * * This method is to be used to introspect the input parameters * before they have been validated. It must be used carefully. * Does not necessarily return the correct result for short options * when multiple flags are combined in the same option. * * @param string|array $values The value(s) to look for in the raw parameters (can be an array) * @param mixed $default The default value to return if no result is found * @param bool $onlyParams Only check real parameters, skip those following an end of options (--) signal * * @return mixed The option value */ public function getParameterOption($values, $default = false, $onlyParams = false); /** * Binds the current Input instance with the given arguments and options. * * @throws RuntimeException */ public function bind(InputDefinition $definition); /** * Validates the input. * * @throws RuntimeException When not enough arguments are given */ public function validate(); /** * Returns all the given arguments merged with the default values. * * @return array */ public function getArguments(); /** * Returns the argument value for a given argument name. * * @param string $name The argument name * * @return string|string[]|null The argument value * * @throws InvalidArgumentException When argument given doesn't exist */ public function getArgument($name); /** * Sets an argument value by name. * * @param string $name The argument name * @param string|string[]|null $value The argument value * * @throws InvalidArgumentException When argument given doesn't exist */ public function setArgument($name, $value); /** * Returns true if an InputArgument object exists by name or position. * * @param string|int $name The InputArgument name or position * * @return bool true if the InputArgument object exists, false otherwise */ public function hasArgument($name); /** * Returns all the given options merged with the default values. * * @return array */ public function getOptions(); /** * Returns the option value for a given option name. * * @param string $name The option name * * @return string|string[]|bool|null The option value * * @throws InvalidArgumentException When option given doesn't exist */ public function getOption($name); /** * Sets an option value by name. * * @param string $name The option name * @param string|string[]|bool|null $value The option value * * @throws InvalidArgumentException When option given doesn't exist */ public function setOption($name, $value); /** * Returns true if an InputOption object exists by name. * * @param string $name The InputOption name * * @return bool true if the InputOption object exists, false otherwise */ public function hasOption($name); /** * Is this input means interactive? * * @return bool */ public function isInteractive(); /** * Sets the input interactivity. * * @param bool $interactive If the input should be interactive */ public function setInteractive($interactive); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; /** * A InputDefinition represents a set of valid command line arguments and options. * * Usage: * * $definition = new InputDefinition([ * new InputArgument('name', InputArgument::REQUIRED), * new InputOption('foo', 'f', InputOption::VALUE_REQUIRED), * ]); * * @author Fabien Potencier */ class InputDefinition { private $arguments; private $requiredCount; private $hasAnArrayArgument = false; private $hasOptional; private $options; private $shortcuts; /** * @param array $definition An array of InputArgument and InputOption instance */ public function __construct(array $definition = []) { $this->setDefinition($definition); } /** * Sets the definition of the input. */ public function setDefinition(array $definition) { $arguments = []; $options = []; foreach ($definition as $item) { if ($item instanceof InputOption) { $options[] = $item; } else { $arguments[] = $item; } } $this->setArguments($arguments); $this->setOptions($options); } /** * Sets the InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects */ public function setArguments($arguments = []) { $this->arguments = []; $this->requiredCount = 0; $this->hasOptional = false; $this->hasAnArrayArgument = false; $this->addArguments($arguments); } /** * Adds an array of InputArgument objects. * * @param InputArgument[] $arguments An array of InputArgument objects */ public function addArguments($arguments = []) { if (null !== $arguments) { foreach ($arguments as $argument) { $this->addArgument($argument); } } } /** * @throws LogicException When incorrect argument is given */ public function addArgument(InputArgument $argument) { if (isset($this->arguments[$argument->getName()])) { throw new LogicException(sprintf('An argument with name "%s" already exists.', $argument->getName())); } if ($this->hasAnArrayArgument) { throw new LogicException('Cannot add an argument after an array argument.'); } if ($argument->isRequired() && $this->hasOptional) { throw new LogicException('Cannot add a required argument after an optional one.'); } if ($argument->isArray()) { $this->hasAnArrayArgument = true; } if ($argument->isRequired()) { ++$this->requiredCount; } else { $this->hasOptional = true; } $this->arguments[$argument->getName()] = $argument; } /** * Returns an InputArgument by name or by position. * * @param string|int $name The InputArgument name or position * * @return InputArgument An InputArgument object * * @throws InvalidArgumentException When argument given doesn't exist */ public function getArgument($name) { if (!$this->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } $arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; return $arguments[$name]; } /** * Returns true if an InputArgument object exists by name or position. * * @param string|int $name The InputArgument name or position * * @return bool true if the InputArgument object exists, false otherwise */ public function hasArgument($name) { $arguments = \is_int($name) ? array_values($this->arguments) : $this->arguments; return isset($arguments[$name]); } /** * Gets the array of InputArgument objects. * * @return InputArgument[] An array of InputArgument objects */ public function getArguments() { return $this->arguments; } /** * Returns the number of InputArguments. * * @return int The number of InputArguments */ public function getArgumentCount() { return $this->hasAnArrayArgument ? \PHP_INT_MAX : \count($this->arguments); } /** * Returns the number of required InputArguments. * * @return int The number of required InputArguments */ public function getArgumentRequiredCount() { return $this->requiredCount; } /** * Gets the default values. * * @return array An array of default values */ public function getArgumentDefaults() { $values = []; foreach ($this->arguments as $argument) { $values[$argument->getName()] = $argument->getDefault(); } return $values; } /** * Sets the InputOption objects. * * @param InputOption[] $options An array of InputOption objects */ public function setOptions($options = []) { $this->options = []; $this->shortcuts = []; $this->addOptions($options); } /** * Adds an array of InputOption objects. * * @param InputOption[] $options An array of InputOption objects */ public function addOptions($options = []) { foreach ($options as $option) { $this->addOption($option); } } /** * @throws LogicException When option given already exist */ public function addOption(InputOption $option) { if (isset($this->options[$option->getName()]) && !$option->equals($this->options[$option->getName()])) { throw new LogicException(sprintf('An option named "%s" already exists.', $option->getName())); } if ($option->getShortcut()) { foreach (explode('|', $option->getShortcut()) as $shortcut) { if (isset($this->shortcuts[$shortcut]) && !$option->equals($this->options[$this->shortcuts[$shortcut]])) { throw new LogicException(sprintf('An option with shortcut "%s" already exists.', $shortcut)); } } } $this->options[$option->getName()] = $option; if ($option->getShortcut()) { foreach (explode('|', $option->getShortcut()) as $shortcut) { $this->shortcuts[$shortcut] = $option->getName(); } } } /** * Returns an InputOption by name. * * @param string $name The InputOption name * * @return InputOption A InputOption object * * @throws InvalidArgumentException When option given doesn't exist */ public function getOption($name) { if (!$this->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "--%s" option does not exist.', $name)); } return $this->options[$name]; } /** * Returns true if an InputOption object exists by name. * * This method can't be used to check if the user included the option when * executing the command (use getOption() instead). * * @param string $name The InputOption name * * @return bool true if the InputOption object exists, false otherwise */ public function hasOption($name) { return isset($this->options[$name]); } /** * Gets the array of InputOption objects. * * @return InputOption[] An array of InputOption objects */ public function getOptions() { return $this->options; } /** * Returns true if an InputOption object exists by shortcut. * * @param string $name The InputOption shortcut * * @return bool true if the InputOption object exists, false otherwise */ public function hasShortcut($name) { return isset($this->shortcuts[$name]); } /** * Gets an InputOption by shortcut. * * @param string $shortcut The Shortcut name * * @return InputOption An InputOption object */ public function getOptionForShortcut($shortcut) { return $this->getOption($this->shortcutToName($shortcut)); } /** * Gets an array of default values. * * @return array An array of all default values */ public function getOptionDefaults() { $values = []; foreach ($this->options as $option) { $values[$option->getName()] = $option->getDefault(); } return $values; } /** * Returns the InputOption name given a shortcut. * * @param string $shortcut The shortcut * * @return string The InputOption name * * @throws InvalidArgumentException When option given does not exist * * @internal */ public function shortcutToName($shortcut) { if (!isset($this->shortcuts[$shortcut])) { throw new InvalidArgumentException(sprintf('The "-%s" option does not exist.', $shortcut)); } return $this->shortcuts[$shortcut]; } /** * Gets the synopsis. * * @param bool $short Whether to return the short version (with options folded) or not * * @return string The synopsis */ public function getSynopsis($short = false) { $elements = []; if ($short && $this->getOptions()) { $elements[] = '[options]'; } elseif (!$short) { foreach ($this->getOptions() as $option) { $value = ''; if ($option->acceptValue()) { $value = sprintf( ' %s%s%s', $option->isValueOptional() ? '[' : '', strtoupper($option->getName()), $option->isValueOptional() ? ']' : '' ); } $shortcut = $option->getShortcut() ? sprintf('-%s|', $option->getShortcut()) : ''; $elements[] = sprintf('[%s--%s%s]', $shortcut, $option->getName(), $value); } } if (\count($elements) && $this->getArguments()) { $elements[] = '[--]'; } foreach ($this->getArguments() as $argument) { $element = '<'.$argument->getName().'>'; if (!$argument->isRequired()) { $element = '['.$element.']'; } elseif ($argument->isArray()) { $element .= ' ('.$element.')'; } if ($argument->isArray()) { $element .= '...'; } $elements[] = $element; } return implode(' ', $elements); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; /** * StreamableInputInterface is the interface implemented by all input classes * that have an input stream. * * @author Robin Chalas */ interface StreamableInputInterface extends InputInterface { /** * Sets the input stream to read from when interacting with the user. * * This is mainly useful for testing purpose. * * @param resource $stream The input stream */ public function setStream($stream); /** * Returns the input stream. * * @return resource|null */ public function getStream(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\RuntimeException; /** * Input is the base class for all concrete Input classes. * * Three concrete classes are provided by default: * * * `ArgvInput`: The input comes from the CLI arguments (argv) * * `StringInput`: The input is provided as a string * * `ArrayInput`: The input is provided as an array * * @author Fabien Potencier */ abstract class Input implements InputInterface, StreamableInputInterface { protected $definition; protected $stream; protected $options = []; protected $arguments = []; protected $interactive = true; public function __construct(InputDefinition $definition = null) { if (null === $definition) { $this->definition = new InputDefinition(); } else { $this->bind($definition); $this->validate(); } } /** * {@inheritdoc} */ public function bind(InputDefinition $definition) { $this->arguments = []; $this->options = []; $this->definition = $definition; $this->parse(); } /** * Processes command line arguments. */ abstract protected function parse(); /** * {@inheritdoc} */ public function validate() { $definition = $this->definition; $givenArguments = $this->arguments; $missingArguments = array_filter(array_keys($definition->getArguments()), function ($argument) use ($definition, $givenArguments) { return !\array_key_exists($argument, $givenArguments) && $definition->getArgument($argument)->isRequired(); }); if (\count($missingArguments) > 0) { throw new RuntimeException(sprintf('Not enough arguments (missing: "%s").', implode(', ', $missingArguments))); } } /** * {@inheritdoc} */ public function isInteractive() { return $this->interactive; } /** * {@inheritdoc} */ public function setInteractive($interactive) { $this->interactive = (bool) $interactive; } /** * {@inheritdoc} */ public function getArguments() { return array_merge($this->definition->getArgumentDefaults(), $this->arguments); } /** * {@inheritdoc} */ public function getArgument($name) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } return isset($this->arguments[$name]) ? $this->arguments[$name] : $this->definition->getArgument($name)->getDefault(); } /** * {@inheritdoc} */ public function setArgument($name, $value) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } $this->arguments[$name] = $value; } /** * {@inheritdoc} */ public function hasArgument($name) { return $this->definition->hasArgument($name); } /** * {@inheritdoc} */ public function getOptions() { return array_merge($this->definition->getOptionDefaults(), $this->options); } /** * {@inheritdoc} */ public function getOption($name) { if (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); } return \array_key_exists($name, $this->options) ? $this->options[$name] : $this->definition->getOption($name)->getDefault(); } /** * {@inheritdoc} */ public function setOption($name, $value) { if (!$this->definition->hasOption($name)) { throw new InvalidArgumentException(sprintf('The "%s" option does not exist.', $name)); } $this->options[$name] = $value; } /** * {@inheritdoc} */ public function hasOption($name) { return $this->definition->hasOption($name); } /** * Escapes a token through escapeshellarg if it contains unsafe chars. * * @param string $token * * @return string */ public function escapeToken($token) { return preg_match('{^[\w-]+$}', $token) ? $token : escapeshellarg($token); } /** * {@inheritdoc} */ public function setStream($stream) { $this->stream = $stream; } /** * {@inheritdoc} */ public function getStream() { return $this->stream; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; /** * InputAwareInterface should be implemented by classes that depends on the * Console Input. * * @author Wouter J */ interface InputAwareInterface { /** * Sets the Console Input. */ public function setInput(InputInterface $input); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; /** * Represents a command line argument. * * @author Fabien Potencier */ class InputArgument { const REQUIRED = 1; const OPTIONAL = 2; const IS_ARRAY = 4; private $name; private $mode; private $default; private $description; /** * @param string $name The argument name * @param int|null $mode The argument mode: self::REQUIRED or self::OPTIONAL * @param string $description A description text * @param string|string[]|null $default The default value (for self::OPTIONAL mode only) * * @throws InvalidArgumentException When argument mode is not valid */ public function __construct($name, $mode = null, $description = '', $default = null) { if (null === $mode) { $mode = self::OPTIONAL; } elseif (!\is_int($mode) || $mode > 7 || $mode < 1) { throw new InvalidArgumentException(sprintf('Argument mode "%s" is not valid.', $mode)); } $this->name = $name; $this->mode = $mode; $this->description = $description; $this->setDefault($default); } /** * Returns the argument name. * * @return string The argument name */ public function getName() { return $this->name; } /** * Returns true if the argument is required. * * @return bool true if parameter mode is self::REQUIRED, false otherwise */ public function isRequired() { return self::REQUIRED === (self::REQUIRED & $this->mode); } /** * Returns true if the argument can take multiple values. * * @return bool true if mode is self::IS_ARRAY, false otherwise */ public function isArray() { return self::IS_ARRAY === (self::IS_ARRAY & $this->mode); } /** * Sets the default value. * * @param string|string[]|null $default The default value * * @throws LogicException When incorrect default value is given */ public function setDefault($default = null) { if (self::REQUIRED === $this->mode && null !== $default) { throw new LogicException('Cannot set a default value except for InputArgument::OPTIONAL mode.'); } if ($this->isArray()) { if (null === $default) { $default = []; } elseif (!\is_array($default)) { throw new LogicException('A default value for an array argument must be an array.'); } } $this->default = $default; } /** * Returns the default value. * * @return string|string[]|null The default value */ public function getDefault() { return $this->default; } /** * Returns the description text. * * @return string The description text */ public function getDescription() { return $this->description; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\LogicException; /** * Represents a command line option. * * @author Fabien Potencier */ class InputOption { const VALUE_NONE = 1; const VALUE_REQUIRED = 2; const VALUE_OPTIONAL = 4; const VALUE_IS_ARRAY = 8; private $name; private $shortcut; private $mode; private $default; private $description; /** * @param string $name The option name * @param string|array|null $shortcut The shortcuts, can be null, a string of shortcuts delimited by | or an array of shortcuts * @param int|null $mode The option mode: One of the VALUE_* constants * @param string $description A description text * @param string|string[]|int|bool|null $default The default value (must be null for self::VALUE_NONE) * * @throws InvalidArgumentException If option mode is invalid or incompatible */ public function __construct($name, $shortcut = null, $mode = null, $description = '', $default = null) { if (0 === strpos($name, '--')) { $name = substr($name, 2); } if (empty($name)) { throw new InvalidArgumentException('An option name cannot be empty.'); } if (empty($shortcut)) { $shortcut = null; } if (null !== $shortcut) { if (\is_array($shortcut)) { $shortcut = implode('|', $shortcut); } $shortcuts = preg_split('{(\|)-?}', ltrim($shortcut, '-')); $shortcuts = array_filter($shortcuts); $shortcut = implode('|', $shortcuts); if (empty($shortcut)) { throw new InvalidArgumentException('An option shortcut cannot be empty.'); } } if (null === $mode) { $mode = self::VALUE_NONE; } elseif (!\is_int($mode) || $mode > 15 || $mode < 1) { throw new InvalidArgumentException(sprintf('Option mode "%s" is not valid.', $mode)); } $this->name = $name; $this->shortcut = $shortcut; $this->mode = $mode; $this->description = $description; if ($this->isArray() && !$this->acceptValue()) { throw new InvalidArgumentException('Impossible to have an option mode VALUE_IS_ARRAY if the option does not accept a value.'); } $this->setDefault($default); } /** * Returns the option shortcut. * * @return string|null The shortcut */ public function getShortcut() { return $this->shortcut; } /** * Returns the option name. * * @return string The name */ public function getName() { return $this->name; } /** * Returns true if the option accepts a value. * * @return bool true if value mode is not self::VALUE_NONE, false otherwise */ public function acceptValue() { return $this->isValueRequired() || $this->isValueOptional(); } /** * Returns true if the option requires a value. * * @return bool true if value mode is self::VALUE_REQUIRED, false otherwise */ public function isValueRequired() { return self::VALUE_REQUIRED === (self::VALUE_REQUIRED & $this->mode); } /** * Returns true if the option takes an optional value. * * @return bool true if value mode is self::VALUE_OPTIONAL, false otherwise */ public function isValueOptional() { return self::VALUE_OPTIONAL === (self::VALUE_OPTIONAL & $this->mode); } /** * Returns true if the option can take multiple values. * * @return bool true if mode is self::VALUE_IS_ARRAY, false otherwise */ public function isArray() { return self::VALUE_IS_ARRAY === (self::VALUE_IS_ARRAY & $this->mode); } /** * Sets the default value. * * @param string|string[]|int|bool|null $default The default value * * @throws LogicException When incorrect default value is given */ public function setDefault($default = null) { if (self::VALUE_NONE === (self::VALUE_NONE & $this->mode) && null !== $default) { throw new LogicException('Cannot set a default value when using InputOption::VALUE_NONE mode.'); } if ($this->isArray()) { if (null === $default) { $default = []; } elseif (!\is_array($default)) { throw new LogicException('A default value for an array option must be an array.'); } } $this->default = $this->acceptValue() ? $default : false; } /** * Returns the default value. * * @return string|string[]|int|bool|null The default value */ public function getDefault() { return $this->default; } /** * Returns the description text. * * @return string The description text */ public function getDescription() { return $this->description; } /** * Checks whether the given option equals this one. * * @return bool */ public function equals(self $option) { return $option->getName() === $this->getName() && $option->getShortcut() === $this->getShortcut() && $option->getDefault() === $this->getDefault() && $option->isArray() === $this->isArray() && $option->isValueRequired() === $this->isValueRequired() && $option->isValueOptional() === $this->isValueOptional() ; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\InvalidArgumentException; use Symfony\Component\Console\Exception\InvalidOptionException; /** * ArrayInput represents an input provided as an array. * * Usage: * * $input = new ArrayInput(['command' => 'foo:bar', 'foo' => 'bar', '--bar' => 'foobar']); * * @author Fabien Potencier */ class ArrayInput extends Input { private $parameters; public function __construct(array $parameters, InputDefinition $definition = null) { $this->parameters = $parameters; parent::__construct($definition); } /** * {@inheritdoc} */ public function getFirstArgument() { foreach ($this->parameters as $param => $value) { if ($param && \is_string($param) && '-' === $param[0]) { continue; } return $value; } return null; } /** * {@inheritdoc} */ public function hasParameterOption($values, $onlyParams = false) { $values = (array) $values; foreach ($this->parameters as $k => $v) { if (!\is_int($k)) { $v = $k; } if ($onlyParams && '--' === $v) { return false; } if (\in_array($v, $values)) { return true; } } return false; } /** * {@inheritdoc} */ public function getParameterOption($values, $default = false, $onlyParams = false) { $values = (array) $values; foreach ($this->parameters as $k => $v) { if ($onlyParams && ('--' === $k || (\is_int($k) && '--' === $v))) { return $default; } if (\is_int($k)) { if (\in_array($v, $values)) { return true; } } elseif (\in_array($k, $values)) { return $v; } } return $default; } /** * Returns a stringified representation of the args passed to the command. * * @return string */ public function __toString() { $params = []; foreach ($this->parameters as $param => $val) { if ($param && \is_string($param) && '-' === $param[0]) { if (\is_array($val)) { foreach ($val as $v) { $params[] = $param.('' != $v ? '='.$this->escapeToken($v) : ''); } } else { $params[] = $param.('' != $val ? '='.$this->escapeToken($val) : ''); } } else { $params[] = \is_array($val) ? implode(' ', array_map([$this, 'escapeToken'], $val)) : $this->escapeToken($val); } } return implode(' ', $params); } /** * {@inheritdoc} */ protected function parse() { foreach ($this->parameters as $key => $value) { if ('--' === $key) { return; } if (0 === strpos($key, '--')) { $this->addLongOption(substr($key, 2), $value); } elseif (0 === strpos($key, '-')) { $this->addShortOption(substr($key, 1), $value); } else { $this->addArgument($key, $value); } } } /** * Adds a short option value. * * @param string $shortcut The short option key * @param mixed $value The value for the option * * @throws InvalidOptionException When option given doesn't exist */ private function addShortOption($shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { throw new InvalidOptionException(sprintf('The "-%s" option does not exist.', $shortcut)); } $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); } /** * Adds a long option value. * * @param string $name The long option key * @param mixed $value The value for the option * * @throws InvalidOptionException When option given doesn't exist * @throws InvalidOptionException When a required value is missing */ private function addLongOption($name, $value) { if (!$this->definition->hasOption($name)) { throw new InvalidOptionException(sprintf('The "--%s" option does not exist.', $name)); } $option = $this->definition->getOption($name); if (null === $value) { if ($option->isValueRequired()) { throw new InvalidOptionException(sprintf('The "--%s" option requires a value.', $name)); } if (!$option->isValueOptional()) { $value = true; } } $this->options[$name] = $value; } /** * Adds an argument value. * * @param string $name The argument name * @param mixed $value The value for the argument * * @throws InvalidArgumentException When argument given doesn't exist */ private function addArgument($name, $value) { if (!$this->definition->hasArgument($name)) { throw new InvalidArgumentException(sprintf('The "%s" argument does not exist.', $name)); } $this->arguments[$name] = $value; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\Input; use Symfony\Component\Console\Exception\RuntimeException; /** * ArgvInput represents an input coming from the CLI arguments. * * Usage: * * $input = new ArgvInput(); * * By default, the `$_SERVER['argv']` array is used for the input values. * * This can be overridden by explicitly passing the input values in the constructor: * * $input = new ArgvInput($_SERVER['argv']); * * If you pass it yourself, don't forget that the first element of the array * is the name of the running application. * * When passing an argument to the constructor, be sure that it respects * the same rules as the argv one. It's almost always better to use the * `StringInput` when you want to provide your own input. * * @author Fabien Potencier * * @see http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html * @see http://www.opengroup.org/onlinepubs/009695399/basedefs/xbd_chap12.html#tag_12_02 */ class ArgvInput extends Input { private $tokens; private $parsed; /** * @param array|null $argv An array of parameters from the CLI (in the argv format) * @param InputDefinition|null $definition A InputDefinition instance */ public function __construct(array $argv = null, InputDefinition $definition = null) { $argv = null !== $argv ? $argv : (isset($_SERVER['argv']) ? $_SERVER['argv'] : []); // strip the application name array_shift($argv); $this->tokens = $argv; parent::__construct($definition); } protected function setTokens(array $tokens) { $this->tokens = $tokens; } /** * {@inheritdoc} */ protected function parse() { $parseOptions = true; $this->parsed = $this->tokens; while (null !== $token = array_shift($this->parsed)) { if ($parseOptions && '' == $token) { $this->parseArgument($token); } elseif ($parseOptions && '--' == $token) { $parseOptions = false; } elseif ($parseOptions && 0 === strpos($token, '--')) { $this->parseLongOption($token); } elseif ($parseOptions && '-' === $token[0] && '-' !== $token) { $this->parseShortOption($token); } else { $this->parseArgument($token); } } } /** * Parses a short option. * * @param string $token The current token */ private function parseShortOption($token) { $name = substr($token, 1); if (\strlen($name) > 1) { if ($this->definition->hasShortcut($name[0]) && $this->definition->getOptionForShortcut($name[0])->acceptValue()) { // an option with a value (with no space) $this->addShortOption($name[0], substr($name, 1)); } else { $this->parseShortOptionSet($name); } } else { $this->addShortOption($name, null); } } /** * Parses a short option set. * * @param string $name The current token * * @throws RuntimeException When option given doesn't exist */ private function parseShortOptionSet($name) { $len = \strlen($name); for ($i = 0; $i < $len; ++$i) { if (!$this->definition->hasShortcut($name[$i])) { $encoding = mb_detect_encoding($name, null, true); throw new RuntimeException(sprintf('The "-%s" option does not exist.', false === $encoding ? $name[$i] : mb_substr($name, $i, 1, $encoding))); } $option = $this->definition->getOptionForShortcut($name[$i]); if ($option->acceptValue()) { $this->addLongOption($option->getName(), $i === $len - 1 ? null : substr($name, $i + 1)); break; } else { $this->addLongOption($option->getName(), null); } } } /** * Parses a long option. * * @param string $token The current token */ private function parseLongOption($token) { $name = substr($token, 2); if (false !== $pos = strpos($name, '=')) { if (0 === \strlen($value = substr($name, $pos + 1))) { // if no value after "=" then substr() returns "" since php7 only, false before // see https://php.net/migration70.incompatible.php#119151 if (\PHP_VERSION_ID < 70000 && false === $value) { $value = ''; } array_unshift($this->parsed, $value); } $this->addLongOption(substr($name, 0, $pos), $value); } else { $this->addLongOption($name, null); } } /** * Parses an argument. * * @param string $token The current token * * @throws RuntimeException When too many arguments are given */ private function parseArgument($token) { $c = \count($this->arguments); // if input is expecting another argument, add it if ($this->definition->hasArgument($c)) { $arg = $this->definition->getArgument($c); $this->arguments[$arg->getName()] = $arg->isArray() ? [$token] : $token; // if last argument isArray(), append token to last argument } elseif ($this->definition->hasArgument($c - 1) && $this->definition->getArgument($c - 1)->isArray()) { $arg = $this->definition->getArgument($c - 1); $this->arguments[$arg->getName()][] = $token; // unexpected argument } else { $all = $this->definition->getArguments(); if (\count($all)) { throw new RuntimeException(sprintf('Too many arguments, expected arguments "%s".', implode('" "', array_keys($all)))); } throw new RuntimeException(sprintf('No arguments expected, got "%s".', $token)); } } /** * Adds a short option value. * * @param string $shortcut The short option key * @param mixed $value The value for the option * * @throws RuntimeException When option given doesn't exist */ private function addShortOption($shortcut, $value) { if (!$this->definition->hasShortcut($shortcut)) { throw new RuntimeException(sprintf('The "-%s" option does not exist.', $shortcut)); } $this->addLongOption($this->definition->getOptionForShortcut($shortcut)->getName(), $value); } /** * Adds a long option value. * * @param string $name The long option key * @param mixed $value The value for the option * * @throws RuntimeException When option given doesn't exist */ private function addLongOption($name, $value) { if (!$this->definition->hasOption($name)) { throw new RuntimeException(sprintf('The "--%s" option does not exist.', $name)); } $option = $this->definition->getOption($name); if (null !== $value && !$option->acceptValue()) { throw new RuntimeException(sprintf('The "--%s" option does not accept a value.', $name)); } if (\in_array($value, ['', null], true) && $option->acceptValue() && \count($this->parsed)) { // if option accepts an optional or mandatory argument // let's see if there is one provided $next = array_shift($this->parsed); if ((isset($next[0]) && '-' !== $next[0]) || \in_array($next, ['', null], true)) { $value = $next; } else { array_unshift($this->parsed, $next); } } if (null === $value) { if ($option->isValueRequired()) { throw new RuntimeException(sprintf('The "--%s" option requires a value.', $name)); } if (!$option->isArray() && !$option->isValueOptional()) { $value = true; } } if ($option->isArray()) { $this->options[$name][] = $value; } else { $this->options[$name] = $value; } } /** * {@inheritdoc} */ public function getFirstArgument() { $isOption = false; foreach ($this->tokens as $i => $token) { if ($token && '-' === $token[0]) { if (false !== strpos($token, '=') || !isset($this->tokens[$i + 1])) { continue; } // If it's a long option, consider that everything after "--" is the option name. // Otherwise, use the last char (if it's a short option set, only the last one can take a value with space separator) $name = '-' === $token[1] ? substr($token, 2) : substr($token, -1); if (!isset($this->options[$name]) && !$this->definition->hasShortcut($name)) { // noop } elseif ((isset($this->options[$name]) || isset($this->options[$name = $this->definition->shortcutToName($name)])) && $this->tokens[$i + 1] === $this->options[$name]) { $isOption = true; } continue; } if ($isOption) { $isOption = false; continue; } return $token; } return null; } /** * {@inheritdoc} */ public function hasParameterOption($values, $onlyParams = false) { $values = (array) $values; foreach ($this->tokens as $token) { if ($onlyParams && '--' === $token) { return false; } foreach ($values as $value) { // Options with values: // For long options, test for '--option=' at beginning // For short options, test for '-o' at beginning $leading = 0 === strpos($value, '--') ? $value.'=' : $value; if ($token === $value || '' !== $leading && 0 === strpos($token, $leading)) { return true; } } } return false; } /** * {@inheritdoc} */ public function getParameterOption($values, $default = false, $onlyParams = false) { $values = (array) $values; $tokens = $this->tokens; while (0 < \count($tokens)) { $token = array_shift($tokens); if ($onlyParams && '--' === $token) { return $default; } foreach ($values as $value) { if ($token === $value) { return array_shift($tokens); } // Options with values: // For long options, test for '--option=' at beginning // For short options, test for '-o' at beginning $leading = 0 === strpos($value, '--') ? $value.'=' : $value; if ('' !== $leading && 0 === strpos($token, $leading)) { return substr($token, \strlen($leading)); } } } return $default; } /** * Returns a stringified representation of the args passed to the command. * * @return string */ public function __toString() { $tokens = array_map(function ($token) { if (preg_match('{^(-[^=]+=)(.+)}', $token, $match)) { return $match[1].$this->escapeToken($match[2]); } if ($token && '-' !== $token[0]) { return $this->escapeToken($token); } return $token; }, $this->tokens); return implode(' ', $tokens); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Console\EventListener; use Psr\Log\LoggerInterface; use Symfony\Component\Console\ConsoleEvents; use Symfony\Component\Console\Event\ConsoleErrorEvent; use Symfony\Component\Console\Event\ConsoleEvent; use Symfony\Component\Console\Event\ConsoleTerminateEvent; use Symfony\Component\EventDispatcher\EventSubscriberInterface; /** * @author James Halsall * @author Robin Chalas */ class ErrorListener implements EventSubscriberInterface { private $logger; public function __construct(LoggerInterface $logger = null) { $this->logger = $logger; } public function onConsoleError(ConsoleErrorEvent $event) { if (null === $this->logger) { return; } $error = $event->getError(); if (!$inputString = $this->getInputString($event)) { $this->logger->error('An error occurred while using the console. Message: "{message}"', ['exception' => $error, 'message' => $error->getMessage()]); return; } $this->logger->error('Error thrown while running command "{command}". Message: "{message}"', ['exception' => $error, 'command' => $inputString, 'message' => $error->getMessage()]); } public function onConsoleTerminate(ConsoleTerminateEvent $event) { if (null === $this->logger) { return; } $exitCode = $event->getExitCode(); if (0 === $exitCode) { return; } if (!$inputString = $this->getInputString($event)) { $this->logger->debug('The console exited with code "{code}"', ['code' => $exitCode]); return; } $this->logger->debug('Command "{command}" exited with code "{code}"', ['command' => $inputString, 'code' => $exitCode]); } public static function getSubscribedEvents() { return [ ConsoleEvents::ERROR => ['onConsoleError', -128], ConsoleEvents::TERMINATE => ['onConsoleTerminate', -128], ]; } private static function getInputString(ConsoleEvent $event) { $commandName = $event->getCommand() ? $event->getCommand()->getName() : null; $input = $event->getInput(); if (method_exists($input, '__toString')) { if ($commandName) { return str_replace(["'$commandName'", "\"$commandName\""], $commandName, (string) $input); } return (string) $input; } return $commandName; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder; /** * Glob matches globbing patterns against text. * * if match_glob("foo.*", "foo.bar") echo "matched\n"; * * // prints foo.bar and foo.baz * $regex = glob_to_regex("foo.*"); * for (['foo.bar', 'foo.baz', 'foo', 'bar'] as $t) * { * if (/$regex/) echo "matched: $car\n"; * } * * Glob implements glob(3) style matching that can be used to match * against text, rather than fetching names from a filesystem. * * Based on the Perl Text::Glob module. * * @author Fabien Potencier PHP port * @author Richard Clamp Perl version * @copyright 2004-2005 Fabien Potencier * @copyright 2002 Richard Clamp */ class Glob { /** * Returns a regexp which is the equivalent of the glob pattern. * * @param string $glob The glob pattern * @param bool $strictLeadingDot * @param bool $strictWildcardSlash * @param string $delimiter Optional delimiter * * @return string regex The regexp */ public static function toRegex($glob, $strictLeadingDot = true, $strictWildcardSlash = true, $delimiter = '#') { $firstByte = true; $escaping = false; $inCurlies = 0; $regex = ''; $sizeGlob = \strlen($glob); for ($i = 0; $i < $sizeGlob; ++$i) { $car = $glob[$i]; if ($firstByte && $strictLeadingDot && '.' !== $car) { $regex .= '(?=[^\.])'; } $firstByte = '/' === $car; if ($firstByte && $strictWildcardSlash && isset($glob[$i + 2]) && '**' === $glob[$i + 1].$glob[$i + 2] && (!isset($glob[$i + 3]) || '/' === $glob[$i + 3])) { $car = '[^/]++/'; if (!isset($glob[$i + 3])) { $car .= '?'; } if ($strictLeadingDot) { $car = '(?=[^\.])'.$car; } $car = '/(?:'.$car.')*'; $i += 2 + isset($glob[$i + 3]); if ('/' === $delimiter) { $car = str_replace('/', '\\/', $car); } } if ($delimiter === $car || '.' === $car || '(' === $car || ')' === $car || '|' === $car || '+' === $car || '^' === $car || '$' === $car) { $regex .= "\\$car"; } elseif ('*' === $car) { $regex .= $escaping ? '\\*' : ($strictWildcardSlash ? '[^/]*' : '.*'); } elseif ('?' === $car) { $regex .= $escaping ? '\\?' : ($strictWildcardSlash ? '[^/]' : '.'); } elseif ('{' === $car) { $regex .= $escaping ? '\\{' : '('; if (!$escaping) { ++$inCurlies; } } elseif ('}' === $car && $inCurlies) { $regex .= $escaping ? '}' : ')'; if (!$escaping) { --$inCurlies; } } elseif (',' === $car && $inCurlies) { $regex .= $escaping ? ',' : '|'; } elseif ('\\' === $car) { if ($escaping) { $regex .= '\\\\'; $escaping = false; } else { $escaping = true; } continue; } else { $regex .= $car; } $escaping = false; } return $delimiter.'^'.$regex.'$'.$delimiter; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Exception; /** * @author Jean-François Simon * * @deprecated since 3.3, to be removed in 4.0. */ interface ExceptionInterface { /** * @return \Symfony\Component\Finder\Adapter\AdapterInterface */ public function getAdapter(); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Exception; /** * @author Jean-François Simon */ class AccessDeniedException extends \UnexpectedValueException { } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * PathFilterIterator filters files by path patterns (e.g. some/special/dir). * * @author Fabien Potencier * @author Włodzimierz Gajda */ class PathFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { $filename = $this->current()->getRelativePathname(); if ('\\' === \DIRECTORY_SEPARATOR) { $filename = str_replace('\\', '/', $filename); } return $this->isAccepted($filename); } /** * Converts strings to regexp. * * PCRE patterns are left unchanged. * * Default conversion: * 'lorem/ipsum/dolor' ==> 'lorem\/ipsum\/dolor/' * * Use only / as directory separator (on Windows also). * * @param string $str Pattern: regexp or dirname * * @return string regexp corresponding to a given string or regexp */ protected function toRegex($str) { return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * FileTypeFilterIterator only keeps files, directories, or both. * * @author Fabien Potencier */ class FileTypeFilterIterator extends FilterIterator { const ONLY_FILES = 1; const ONLY_DIRECTORIES = 2; private $mode; /** * @param \Iterator $iterator The Iterator to filter * @param int $mode The mode (self::ONLY_FILES or self::ONLY_DIRECTORIES) */ public function __construct(\Iterator $iterator, $mode) { $this->mode = $mode; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { $fileinfo = $this->current(); if (self::ONLY_DIRECTORIES === (self::ONLY_DIRECTORIES & $this->mode) && $fileinfo->isFile()) { return false; } elseif (self::ONLY_FILES === (self::ONLY_FILES & $this->mode) && $fileinfo->isDir()) { return false; } return true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; use Symfony\Component\Finder\Comparator\DateComparator; /** * DateRangeFilterIterator filters out files that are not in the given date range (last modified dates). * * @author Fabien Potencier */ class DateRangeFilterIterator extends FilterIterator { private $comparators = []; /** * @param \Iterator $iterator The Iterator to filter * @param DateComparator[] $comparators An array of DateComparator instances */ public function __construct(\Iterator $iterator, array $comparators) { $this->comparators = $comparators; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { $fileinfo = $this->current(); if (!file_exists($fileinfo->getPathname())) { return false; } $filedate = $fileinfo->getMTime(); foreach ($this->comparators as $compare) { if (!$compare->test($filedate)) { return false; } } return true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; use Symfony\Component\Finder\Exception\AccessDeniedException; use Symfony\Component\Finder\SplFileInfo; /** * Extends the \RecursiveDirectoryIterator to support relative paths. * * @author Victor Berchet */ class RecursiveDirectoryIterator extends \RecursiveDirectoryIterator { /** * @var bool */ private $ignoreUnreadableDirs; /** * @var bool */ private $rewindable; // these 3 properties take part of the performance optimization to avoid redoing the same work in all iterations private $rootPath; private $subPath; private $directorySeparator = '/'; /** * @param string $path * @param int $flags * @param bool $ignoreUnreadableDirs * * @throws \RuntimeException */ public function __construct($path, $flags, $ignoreUnreadableDirs = false) { if ($flags & (self::CURRENT_AS_PATHNAME | self::CURRENT_AS_SELF)) { throw new \RuntimeException('This iterator only support returning current as fileinfo.'); } parent::__construct($path, $flags); $this->ignoreUnreadableDirs = $ignoreUnreadableDirs; $this->rootPath = $path; if ('/' !== \DIRECTORY_SEPARATOR && !($flags & self::UNIX_PATHS)) { $this->directorySeparator = \DIRECTORY_SEPARATOR; } } /** * Return an instance of SplFileInfo with support for relative paths. * * @return SplFileInfo File information */ public function current() { // the logic here avoids redoing the same work in all iterations if (null === $subPathname = $this->subPath) { $subPathname = $this->subPath = (string) $this->getSubPath(); } if ('' !== $subPathname) { $subPathname .= $this->directorySeparator; } $subPathname .= $this->getFilename(); if ('/' !== $basePath = $this->rootPath) { $basePath .= $this->directorySeparator; } return new SplFileInfo($basePath.$subPathname, $this->subPath, $subPathname); } /** * @return \RecursiveIterator * * @throws AccessDeniedException */ public function getChildren() { try { $children = parent::getChildren(); if ($children instanceof self) { // parent method will call the constructor with default arguments, so unreadable dirs won't be ignored anymore $children->ignoreUnreadableDirs = $this->ignoreUnreadableDirs; // performance optimization to avoid redoing the same work in all children $children->rewindable = &$this->rewindable; $children->rootPath = $this->rootPath; } return $children; } catch (\UnexpectedValueException $e) { if ($this->ignoreUnreadableDirs) { // If directory is unreadable and finder is set to ignore it, a fake empty content is returned. return new \RecursiveArrayIterator([]); } else { throw new AccessDeniedException($e->getMessage(), $e->getCode(), $e); } } } /** * Do nothing for non rewindable stream. */ public function rewind() { if (false === $this->isRewindable()) { return; } // @see https://bugs.php.net/68557 if (\PHP_VERSION_ID < 50523 || \PHP_VERSION_ID >= 50600 && \PHP_VERSION_ID < 50607) { parent::next(); } parent::rewind(); } /** * Checks if the stream is rewindable. * * @return bool true when the stream is rewindable, false otherwise */ public function isRewindable() { if (null !== $this->rewindable) { return $this->rewindable; } // workaround for an HHVM bug, should be removed when https://github.com/facebook/hhvm/issues/7281 is fixed if ('' === $this->getPath()) { return $this->rewindable = false; } if (false !== $stream = @opendir($this->getPath())) { $infos = stream_get_meta_data($stream); closedir($stream); if ($infos['seekable']) { return $this->rewindable = true; } } return $this->rewindable = false; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * DepthRangeFilterIterator limits the directory depth. * * @author Fabien Potencier */ class DepthRangeFilterIterator extends FilterIterator { private $minDepth = 0; /** * @param \RecursiveIteratorIterator $iterator The Iterator to filter * @param int $minDepth The min depth * @param int $maxDepth The max depth */ public function __construct(\RecursiveIteratorIterator $iterator, $minDepth = 0, $maxDepth = \PHP_INT_MAX) { $this->minDepth = $minDepth; $iterator->setMaxDepth(\PHP_INT_MAX === $maxDepth ? -1 : $maxDepth); parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { return $this->getInnerIterator()->getDepth() >= $this->minDepth; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * CustomFilterIterator filters files by applying anonymous functions. * * The anonymous function receives a \SplFileInfo and must return false * to remove files. * * @author Fabien Potencier */ class CustomFilterIterator extends FilterIterator { private $filters = []; /** * @param \Iterator $iterator The Iterator to filter * @param callable[] $filters An array of PHP callbacks * * @throws \InvalidArgumentException */ public function __construct(\Iterator $iterator, array $filters) { foreach ($filters as $filter) { if (!\is_callable($filter)) { throw new \InvalidArgumentException('Invalid PHP callback.'); } } $this->filters = $filters; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { $fileinfo = $this->current(); foreach ($this->filters as $filter) { if (false === \call_user_func($filter, $fileinfo)) { return false; } } return true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * FilecontentFilterIterator filters files by their contents using patterns (regexps or strings). * * @author Fabien Potencier * @author Włodzimierz Gajda */ class FilecontentFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { if (!$this->matchRegexps && !$this->noMatchRegexps) { return true; } $fileinfo = $this->current(); if ($fileinfo->isDir() || !$fileinfo->isReadable()) { return false; } $content = $fileinfo->getContents(); if (!$content) { return false; } return $this->isAccepted($content); } /** * Converts string to regexp if necessary. * * @param string $str Pattern: string or regexp * * @return string regexp corresponding to a given string or regexp */ protected function toRegex($str) { return $this->isRegex($str) ? $str : '/'.preg_quote($str, '/').'/'; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * ExcludeDirectoryFilterIterator filters out directories. * * @author Fabien Potencier */ class ExcludeDirectoryFilterIterator extends FilterIterator implements \RecursiveIterator { private $iterator; private $isRecursive; private $excludedDirs = []; private $excludedPattern; /** * @param \Iterator $iterator The Iterator to filter * @param string[] $directories An array of directories to exclude */ public function __construct(\Iterator $iterator, array $directories) { $this->iterator = $iterator; $this->isRecursive = $iterator instanceof \RecursiveIterator; $patterns = []; foreach ($directories as $directory) { $directory = rtrim($directory, '/'); if (!$this->isRecursive || false !== strpos($directory, '/')) { $patterns[] = preg_quote($directory, '#'); } else { $this->excludedDirs[$directory] = true; } } if ($patterns) { $this->excludedPattern = '#(?:^|/)(?:'.implode('|', $patterns).')(?:/|$)#'; } parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool True if the value should be kept, false otherwise */ public function accept() { if ($this->isRecursive && isset($this->excludedDirs[$this->getFilename()]) && $this->isDir()) { return false; } if ($this->excludedPattern) { $path = $this->isDir() ? $this->current()->getRelativePathname() : $this->current()->getRelativePath(); $path = str_replace('\\', '/', $path); return !preg_match($this->excludedPattern, $path); } return true; } public function hasChildren() { return $this->isRecursive && $this->iterator->hasChildren(); } public function getChildren() { $children = new self($this->iterator->getChildren(), []); $children->excludedDirs = $this->excludedDirs; $children->excludedPattern = $this->excludedPattern; return $children; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; use Symfony\Component\Finder\Glob; /** * FilenameFilterIterator filters files by patterns (a regexp, a glob, or a string). * * @author Fabien Potencier */ class FilenameFilterIterator extends MultiplePcreFilterIterator { /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { return $this->isAccepted($this->current()->getFilename()); } /** * Converts glob to regexp. * * PCRE patterns are left unchanged. * Glob strings are transformed with Glob::toRegex(). * * @param string $str Pattern: glob or regexp * * @return string regexp corresponding to a given glob or regexp */ protected function toRegex($str) { return $this->isRegex($str) ? $str : Glob::toRegex($str); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * SortableIterator applies a sort on a given Iterator. * * @author Fabien Potencier */ class SortableIterator implements \IteratorAggregate { const SORT_BY_NAME = 1; const SORT_BY_TYPE = 2; const SORT_BY_ACCESSED_TIME = 3; const SORT_BY_CHANGED_TIME = 4; const SORT_BY_MODIFIED_TIME = 5; private $iterator; private $sort; /** * @param \Traversable $iterator The Iterator to filter * @param int|callable $sort The sort type (SORT_BY_NAME, SORT_BY_TYPE, or a PHP callback) * * @throws \InvalidArgumentException */ public function __construct(\Traversable $iterator, $sort) { $this->iterator = $iterator; if (self::SORT_BY_NAME === $sort) { $this->sort = static function ($a, $b) { return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_TYPE === $sort) { $this->sort = static function ($a, $b) { if ($a->isDir() && $b->isFile()) { return -1; } elseif ($a->isFile() && $b->isDir()) { return 1; } return strcmp($a->getRealPath() ?: $a->getPathname(), $b->getRealPath() ?: $b->getPathname()); }; } elseif (self::SORT_BY_ACCESSED_TIME === $sort) { $this->sort = static function ($a, $b) { return $a->getATime() - $b->getATime(); }; } elseif (self::SORT_BY_CHANGED_TIME === $sort) { $this->sort = static function ($a, $b) { return $a->getCTime() - $b->getCTime(); }; } elseif (self::SORT_BY_MODIFIED_TIME === $sort) { $this->sort = static function ($a, $b) { return $a->getMTime() - $b->getMTime(); }; } elseif (\is_callable($sort)) { $this->sort = $sort; } else { throw new \InvalidArgumentException('The SortableIterator takes a PHP callable or a valid built-in sort algorithm as an argument.'); } } public function getIterator() { $array = iterator_to_array($this->iterator, true); uasort($array, $this->sort); return new \ArrayIterator($array); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * MultiplePcreFilterIterator filters files using patterns (regexps, globs or strings). * * @author Fabien Potencier */ abstract class MultiplePcreFilterIterator extends FilterIterator { protected $matchRegexps = []; protected $noMatchRegexps = []; /** * @param \Iterator $iterator The Iterator to filter * @param array $matchPatterns An array of patterns that need to match * @param array $noMatchPatterns An array of patterns that need to not match */ public function __construct(\Iterator $iterator, array $matchPatterns, array $noMatchPatterns) { foreach ($matchPatterns as $pattern) { $this->matchRegexps[] = $this->toRegex($pattern); } foreach ($noMatchPatterns as $pattern) { $this->noMatchRegexps[] = $this->toRegex($pattern); } parent::__construct($iterator); } /** * Checks whether the string is accepted by the regex filters. * * If there is no regexps defined in the class, this method will accept the string. * Such case can be handled by child classes before calling the method if they want to * apply a different behavior. * * @param string $string The string to be matched against filters * * @return bool */ protected function isAccepted($string) { // should at least not match one rule to exclude foreach ($this->noMatchRegexps as $regex) { if (preg_match($regex, $string)) { return false; } } // should at least match one rule if ($this->matchRegexps) { foreach ($this->matchRegexps as $regex) { if (preg_match($regex, $string)) { return true; } } return false; } // If there is no match rules, the file is accepted return true; } /** * Checks whether the string is a regex. * * @param string $str * * @return bool Whether the given string is a regex */ protected function isRegex($str) { if (preg_match('/^(.{3,}?)[imsxuADU]*$/', $str, $m)) { $start = substr($m[1], 0, 1); $end = substr($m[1], -1); if ($start === $end) { return !preg_match('/[*?[:alnum:] \\\\]/', $start); } foreach ([['{', '}'], ['(', ')'], ['[', ']'], ['<', '>']] as $delimiters) { if ($start === $delimiters[0] && $end === $delimiters[1]) { return true; } } } return false; } /** * Converts string into regexp. * * @param string $str Pattern * * @return string regexp corresponding to a given string */ abstract protected function toRegex($str); } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; /** * This iterator just overrides the rewind method in order to correct a PHP bug, * which existed before version 5.5.23/5.6.7. * * @see https://bugs.php.net/68557 * * @author Alex Bogomazov * * @deprecated since 3.4, to be removed in 4.0. */ abstract class FilterIterator extends \FilterIterator { /** * This is a workaround for the problem with \FilterIterator leaving inner \FilesystemIterator in wrong state after * rewind in some cases. * * @see FilterIterator::rewind() */ public function rewind() { if (\PHP_VERSION_ID > 50607 || (\PHP_VERSION_ID > 50523 && \PHP_VERSION_ID < 50600)) { parent::rewind(); return; } $iterator = $this; while ($iterator instanceof \OuterIterator) { $innerIterator = $iterator->getInnerIterator(); if ($innerIterator instanceof RecursiveDirectoryIterator) { // this condition is necessary for iterators to work properly with non-local filesystems like ftp if ($innerIterator->isRewindable()) { $innerIterator->next(); $innerIterator->rewind(); } } elseif ($innerIterator instanceof \FilesystemIterator) { $innerIterator->next(); $innerIterator->rewind(); } $iterator = $innerIterator; } parent::rewind(); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Iterator; use Symfony\Component\Finder\Comparator\NumberComparator; /** * SizeRangeFilterIterator filters out files that are not in the given size range. * * @author Fabien Potencier */ class SizeRangeFilterIterator extends FilterIterator { private $comparators = []; /** * @param \Iterator $iterator The Iterator to filter * @param NumberComparator[] $comparators An array of NumberComparator instances */ public function __construct(\Iterator $iterator, array $comparators) { $this->comparators = $comparators; parent::__construct($iterator); } /** * Filters the iterator values. * * @return bool true if the value should be kept, false otherwise */ public function accept() { $fileinfo = $this->current(); if (!$fileinfo->isFile()) { return true; } $filesize = $fileinfo->getSize(); foreach ($this->comparators as $compare) { if (!$compare->test($filesize)) { return false; } } return true; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Comparator; /** * Comparator. * * @author Fabien Potencier */ class Comparator { private $target; private $operator = '=='; /** * Gets the target value. * * @return string The target value */ public function getTarget() { return $this->target; } /** * Sets the target value. * * @param string $target The target value */ public function setTarget($target) { $this->target = $target; } /** * Gets the comparison operator. * * @return string The operator */ public function getOperator() { return $this->operator; } /** * Sets the comparison operator. * * @param string $operator A valid operator * * @throws \InvalidArgumentException */ public function setOperator($operator) { if (!$operator) { $operator = '=='; } if (!\in_array($operator, ['>', '<', '>=', '<=', '==', '!='])) { throw new \InvalidArgumentException(sprintf('Invalid operator "%s".', $operator)); } $this->operator = $operator; } /** * Tests against the target. * * @param mixed $test A test value * * @return bool */ public function test($test) { switch ($this->operator) { case '>': return $test > $this->target; case '>=': return $test >= $this->target; case '<': return $test < $this->target; case '<=': return $test <= $this->target; case '!=': return $test != $this->target; } return $test == $this->target; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Comparator; /** * NumberComparator compiles a simple comparison to an anonymous * subroutine, which you can call with a value to be tested again. * * Now this would be very pointless, if NumberCompare didn't understand * magnitudes. * * The target value may use magnitudes of kilobytes (k, ki), * megabytes (m, mi), or gigabytes (g, gi). Those suffixed * with an i use the appropriate 2**n version in accordance with the * IEC standard: http://physics.nist.gov/cuu/Units/binary.html * * Based on the Perl Number::Compare module. * * @author Fabien Potencier PHP port * @author Richard Clamp Perl version * @copyright 2004-2005 Fabien Potencier * @copyright 2002 Richard Clamp * * @see http://physics.nist.gov/cuu/Units/binary.html */ class NumberComparator extends Comparator { /** * @param string|int $test A comparison string or an integer * * @throws \InvalidArgumentException If the test is not understood */ public function __construct($test) { if (!preg_match('#^\s*(==|!=|[<>]=?)?\s*([0-9\.]+)\s*([kmg]i?)?\s*$#i', $test, $matches)) { throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a number test.', $test)); } $target = $matches[2]; if (!is_numeric($target)) { throw new \InvalidArgumentException(sprintf('Invalid number "%s".', $target)); } if (isset($matches[3])) { // magnitude switch (strtolower($matches[3])) { case 'k': $target *= 1000; break; case 'ki': $target *= 1024; break; case 'm': $target *= 1000000; break; case 'mi': $target *= 1024 * 1024; break; case 'g': $target *= 1000000000; break; case 'gi': $target *= 1024 * 1024 * 1024; break; } } $this->setTarget($target); $this->setOperator(isset($matches[1]) ? $matches[1] : '=='); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder\Comparator; /** * DateCompare compiles date comparisons. * * @author Fabien Potencier */ class DateComparator extends Comparator { /** * @param string $test A comparison string * * @throws \InvalidArgumentException If the test is not understood */ public function __construct($test) { if (!preg_match('#^\s*(==|!=|[<>]=?|after|since|before|until)?\s*(.+?)\s*$#i', $test, $matches)) { throw new \InvalidArgumentException(sprintf('Don\'t understand "%s" as a date test.', $test)); } try { $date = new \DateTime($matches[2]); $target = $date->format('U'); } catch (\Exception $e) { throw new \InvalidArgumentException(sprintf('"%s" is not a valid date.', $matches[2])); } $operator = isset($matches[1]) ? $matches[1] : '=='; if ('since' === $operator || 'after' === $operator) { $operator = '>'; } if ('until' === $operator || 'before' === $operator) { $operator = '<'; } $this->setOperator($operator); $this->setTarget($target); } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder; use Symfony\Component\Finder\Comparator\DateComparator; use Symfony\Component\Finder\Comparator\NumberComparator; use Symfony\Component\Finder\Iterator\CustomFilterIterator; use Symfony\Component\Finder\Iterator\DateRangeFilterIterator; use Symfony\Component\Finder\Iterator\DepthRangeFilterIterator; use Symfony\Component\Finder\Iterator\ExcludeDirectoryFilterIterator; use Symfony\Component\Finder\Iterator\FilecontentFilterIterator; use Symfony\Component\Finder\Iterator\FilenameFilterIterator; use Symfony\Component\Finder\Iterator\SizeRangeFilterIterator; use Symfony\Component\Finder\Iterator\SortableIterator; /** * Finder allows to build rules to find files and directories. * * It is a thin wrapper around several specialized iterator classes. * * All rules may be invoked several times. * * All methods return the current Finder object to allow chaining: * * $finder = Finder::create()->files()->name('*.php')->in(__DIR__); * * @author Fabien Potencier */ class Finder implements \IteratorAggregate, \Countable { const IGNORE_VCS_FILES = 1; const IGNORE_DOT_FILES = 2; private $mode = 0; private $names = []; private $notNames = []; private $exclude = []; private $filters = []; private $depths = []; private $sizes = []; private $followLinks = false; private $sort = false; private $ignore = 0; private $dirs = []; private $dates = []; private $iterators = []; private $contains = []; private $notContains = []; private $paths = []; private $notPaths = []; private $ignoreUnreadableDirs = false; private static $vcsPatterns = ['.svn', '_svn', 'CVS', '_darcs', '.arch-params', '.monotone', '.bzr', '.git', '.hg']; public function __construct() { $this->ignore = static::IGNORE_VCS_FILES | static::IGNORE_DOT_FILES; } /** * Creates a new Finder. * * @return static */ public static function create() { return new static(); } /** * Restricts the matching to directories only. * * @return $this */ public function directories() { $this->mode = Iterator\FileTypeFilterIterator::ONLY_DIRECTORIES; return $this; } /** * Restricts the matching to files only. * * @return $this */ public function files() { $this->mode = Iterator\FileTypeFilterIterator::ONLY_FILES; return $this; } /** * Adds tests for the directory depth. * * Usage: * * $finder->depth('> 1') // the Finder will start matching at level 1. * $finder->depth('< 3') // the Finder will descend at most 3 levels of directories below the starting point. * * @param string|int $level The depth level expression * * @return $this * * @see DepthRangeFilterIterator * @see NumberComparator */ public function depth($level) { $this->depths[] = new Comparator\NumberComparator($level); return $this; } /** * Adds tests for file dates (last modified). * * The date must be something that strtotime() is able to parse: * * $finder->date('since yesterday'); * $finder->date('until 2 days ago'); * $finder->date('> now - 2 hours'); * $finder->date('>= 2005-10-15'); * * @param string $date A date range string * * @return $this * * @see strtotime * @see DateRangeFilterIterator * @see DateComparator */ public function date($date) { $this->dates[] = new Comparator\DateComparator($date); return $this; } /** * Adds rules that files must match. * * You can use patterns (delimited with / sign), globs or simple strings. * * $finder->name('*.php') * $finder->name('/\.php$/') // same as above * $finder->name('test.php') * * @param string $pattern A pattern (a regexp, a glob, or a string) * * @return $this * * @see FilenameFilterIterator */ public function name($pattern) { $this->names[] = $pattern; return $this; } /** * Adds rules that files must not match. * * @param string $pattern A pattern (a regexp, a glob, or a string) * * @return $this * * @see FilenameFilterIterator */ public function notName($pattern) { $this->notNames[] = $pattern; return $this; } /** * Adds tests that file contents must match. * * Strings or PCRE patterns can be used: * * $finder->contains('Lorem ipsum') * $finder->contains('/Lorem ipsum/i') * * @param string $pattern A pattern (string or regexp) * * @return $this * * @see FilecontentFilterIterator */ public function contains($pattern) { $this->contains[] = $pattern; return $this; } /** * Adds tests that file contents must not match. * * Strings or PCRE patterns can be used: * * $finder->notContains('Lorem ipsum') * $finder->notContains('/Lorem ipsum/i') * * @param string $pattern A pattern (string or regexp) * * @return $this * * @see FilecontentFilterIterator */ public function notContains($pattern) { $this->notContains[] = $pattern; return $this; } /** * Adds rules that filenames must match. * * You can use patterns (delimited with / sign) or simple strings. * * $finder->path('some/special/dir') * $finder->path('/some\/special\/dir/') // same as above * * Use only / as dirname separator. * * @param string $pattern A pattern (a regexp or a string) * * @return $this * * @see FilenameFilterIterator */ public function path($pattern) { $this->paths[] = $pattern; return $this; } /** * Adds rules that filenames must not match. * * You can use patterns (delimited with / sign) or simple strings. * * $finder->notPath('some/special/dir') * $finder->notPath('/some\/special\/dir/') // same as above * * Use only / as dirname separator. * * @param string $pattern A pattern (a regexp or a string) * * @return $this * * @see FilenameFilterIterator */ public function notPath($pattern) { $this->notPaths[] = $pattern; return $this; } /** * Adds tests for file sizes. * * $finder->size('> 10K'); * $finder->size('<= 1Ki'); * $finder->size(4); * * @param string|int $size A size range string or an integer * * @return $this * * @see SizeRangeFilterIterator * @see NumberComparator */ public function size($size) { $this->sizes[] = new Comparator\NumberComparator($size); return $this; } /** * Excludes directories. * * Directories passed as argument must be relative to the ones defined with the `in()` method. For example: * * $finder->in(__DIR__)->exclude('ruby'); * * @param string|array $dirs A directory path or an array of directories * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function exclude($dirs) { $this->exclude = array_merge($this->exclude, (array) $dirs); return $this; } /** * Excludes "hidden" directories and files (starting with a dot). * * This option is enabled by default. * * @param bool $ignoreDotFiles Whether to exclude "hidden" files or not * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function ignoreDotFiles($ignoreDotFiles) { if ($ignoreDotFiles) { $this->ignore |= static::IGNORE_DOT_FILES; } else { $this->ignore &= ~static::IGNORE_DOT_FILES; } return $this; } /** * Forces the finder to ignore version control directories. * * This option is enabled by default. * * @param bool $ignoreVCS Whether to exclude VCS files or not * * @return $this * * @see ExcludeDirectoryFilterIterator */ public function ignoreVCS($ignoreVCS) { if ($ignoreVCS) { $this->ignore |= static::IGNORE_VCS_FILES; } else { $this->ignore &= ~static::IGNORE_VCS_FILES; } return $this; } /** * Adds VCS patterns. * * @see ignoreVCS() * * @param string|string[] $pattern VCS patterns to ignore */ public static function addVCSPattern($pattern) { foreach ((array) $pattern as $p) { self::$vcsPatterns[] = $p; } self::$vcsPatterns = array_unique(self::$vcsPatterns); } /** * Sorts files and directories by an anonymous function. * * The anonymous function receives two \SplFileInfo instances to compare. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sort(\Closure $closure) { $this->sort = $closure; return $this; } /** * Sorts files and directories by name. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByName() { $this->sort = Iterator\SortableIterator::SORT_BY_NAME; return $this; } /** * Sorts files and directories by type (directories before files), then by name. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByType() { $this->sort = Iterator\SortableIterator::SORT_BY_TYPE; return $this; } /** * Sorts files and directories by the last accessed time. * * This is the time that the file was last accessed, read or written to. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByAccessedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_ACCESSED_TIME; return $this; } /** * Sorts files and directories by the last inode changed time. * * This is the time that the inode information was last modified (permissions, owner, group or other metadata). * * On Windows, since inode is not available, changed time is actually the file creation time. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByChangedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_CHANGED_TIME; return $this; } /** * Sorts files and directories by the last modified time. * * This is the last time the actual contents of the file were last modified. * * This can be slow as all the matching files and directories must be retrieved for comparison. * * @return $this * * @see SortableIterator */ public function sortByModifiedTime() { $this->sort = Iterator\SortableIterator::SORT_BY_MODIFIED_TIME; return $this; } /** * Filters the iterator with an anonymous function. * * The anonymous function receives a \SplFileInfo and must return false * to remove files. * * @return $this * * @see CustomFilterIterator */ public function filter(\Closure $closure) { $this->filters[] = $closure; return $this; } /** * Forces the following of symlinks. * * @return $this */ public function followLinks() { $this->followLinks = true; return $this; } /** * Tells finder to ignore unreadable directories. * * By default, scanning unreadable directories content throws an AccessDeniedException. * * @param bool $ignore * * @return $this */ public function ignoreUnreadableDirs($ignore = true) { $this->ignoreUnreadableDirs = (bool) $ignore; return $this; } /** * Searches files and directories which match defined rules. * * @param string|string[] $dirs A directory path or an array of directories * * @return $this * * @throws \InvalidArgumentException if one of the directories does not exist */ public function in($dirs) { $resolvedDirs = []; foreach ((array) $dirs as $dir) { if (is_dir($dir)) { $resolvedDirs[] = $this->normalizeDir($dir); } elseif ($glob = glob($dir, (\defined('GLOB_BRACE') ? \GLOB_BRACE : 0) | \GLOB_ONLYDIR | \GLOB_NOSORT)) { sort($glob); $resolvedDirs = array_merge($resolvedDirs, array_map([$this, 'normalizeDir'], $glob)); } else { throw new \InvalidArgumentException(sprintf('The "%s" directory does not exist.', $dir)); } } $this->dirs = array_merge($this->dirs, $resolvedDirs); return $this; } /** * Returns an Iterator for the current Finder configuration. * * This method implements the IteratorAggregate interface. * * @return \Iterator|SplFileInfo[] An iterator * * @throws \LogicException if the in() method has not been called */ public function getIterator() { if (0 === \count($this->dirs) && 0 === \count($this->iterators)) { throw new \LogicException('You must call one of in() or append() methods before iterating over a Finder.'); } if (1 === \count($this->dirs) && 0 === \count($this->iterators)) { return $this->searchInDirectory($this->dirs[0]); } $iterator = new \AppendIterator(); foreach ($this->dirs as $dir) { $iterator->append($this->searchInDirectory($dir)); } foreach ($this->iterators as $it) { $iterator->append($it); } return $iterator; } /** * Appends an existing set of files/directories to the finder. * * The set can be another Finder, an Iterator, an IteratorAggregate, or even a plain array. * * @param iterable $iterator * * @return $this * * @throws \InvalidArgumentException when the given argument is not iterable */ public function append($iterator) { if ($iterator instanceof \IteratorAggregate) { $this->iterators[] = $iterator->getIterator(); } elseif ($iterator instanceof \Iterator) { $this->iterators[] = $iterator; } elseif ($iterator instanceof \Traversable || \is_array($iterator)) { $it = new \ArrayIterator(); foreach ($iterator as $file) { $it->append($file instanceof \SplFileInfo ? $file : new \SplFileInfo($file)); } $this->iterators[] = $it; } else { throw new \InvalidArgumentException('Finder::append() method wrong argument type.'); } return $this; } /** * Check if any results were found. * * @return bool */ public function hasResults() { foreach ($this->getIterator() as $_) { return true; } return false; } /** * Counts all the results collected by the iterators. * * @return int */ public function count() { return iterator_count($this->getIterator()); } /** * @param string $dir * * @return \Iterator */ private function searchInDirectory($dir) { $exclude = $this->exclude; $notPaths = $this->notPaths; if (static::IGNORE_VCS_FILES === (static::IGNORE_VCS_FILES & $this->ignore)) { $exclude = array_merge($exclude, self::$vcsPatterns); } if (static::IGNORE_DOT_FILES === (static::IGNORE_DOT_FILES & $this->ignore)) { $notPaths[] = '#(^|/)\..+(/|$)#'; } $minDepth = 0; $maxDepth = \PHP_INT_MAX; foreach ($this->depths as $comparator) { switch ($comparator->getOperator()) { case '>': $minDepth = $comparator->getTarget() + 1; break; case '>=': $minDepth = $comparator->getTarget(); break; case '<': $maxDepth = $comparator->getTarget() - 1; break; case '<=': $maxDepth = $comparator->getTarget(); break; default: $minDepth = $maxDepth = $comparator->getTarget(); } } $flags = \RecursiveDirectoryIterator::SKIP_DOTS; if ($this->followLinks) { $flags |= \RecursiveDirectoryIterator::FOLLOW_SYMLINKS; } $iterator = new Iterator\RecursiveDirectoryIterator($dir, $flags, $this->ignoreUnreadableDirs); if ($exclude) { $iterator = new Iterator\ExcludeDirectoryFilterIterator($iterator, $exclude); } $iterator = new \RecursiveIteratorIterator($iterator, \RecursiveIteratorIterator::SELF_FIRST); if ($minDepth > 0 || $maxDepth < \PHP_INT_MAX) { $iterator = new Iterator\DepthRangeFilterIterator($iterator, $minDepth, $maxDepth); } if ($this->mode) { $iterator = new Iterator\FileTypeFilterIterator($iterator, $this->mode); } if ($this->names || $this->notNames) { $iterator = new Iterator\FilenameFilterIterator($iterator, $this->names, $this->notNames); } if ($this->contains || $this->notContains) { $iterator = new Iterator\FilecontentFilterIterator($iterator, $this->contains, $this->notContains); } if ($this->sizes) { $iterator = new Iterator\SizeRangeFilterIterator($iterator, $this->sizes); } if ($this->dates) { $iterator = new Iterator\DateRangeFilterIterator($iterator, $this->dates); } if ($this->filters) { $iterator = new Iterator\CustomFilterIterator($iterator, $this->filters); } if ($this->paths || $notPaths) { $iterator = new Iterator\PathFilterIterator($iterator, $this->paths, $notPaths); } if ($this->sort) { $iteratorAggregate = new Iterator\SortableIterator($iterator, $this->sort); $iterator = $iteratorAggregate->getIterator(); } return $iterator; } /** * Normalizes given directory names by removing trailing slashes. * * Excluding: (s)ftp:// or ssh2.(s)ftp:// wrapper * * @param string $dir * * @return string */ private function normalizeDir($dir) { if ('/' === $dir) { return $dir; } $dir = rtrim($dir, '/'.\DIRECTORY_SEPARATOR); if (preg_match('#^(ssh2\.)?s?ftp://#', $dir)) { $dir .= '/'; } return $dir; } } * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Symfony\Component\Finder; /** * Extends \SplFileInfo to support relative paths. * * @author Fabien Potencier */ class SplFileInfo extends \SplFileInfo { private $relativePath; private $relativePathname; /** * @param string $file The file name * @param string $relativePath The relative path * @param string $relativePathname The relative path name */ public function __construct($file, $relativePath, $relativePathname) { parent::__construct($file); $this->relativePath = $relativePath; $this->relativePathname = $relativePathname; } /** * Returns the relative path. * * This path does not contain the file name. * * @return string the relative path */ public function getRelativePath() { return $this->relativePath; } /** * Returns the relative path name. * * This path contains the file name. * * @return string the relative path name */ public function getRelativePathname() { return $this->relativePathname; } /** * Returns the contents of the file. * * @return string the contents of the file * * @throws \RuntimeException */ public function getContents() { set_error_handler(function ($type, $msg) use (&$error) { $error = $msg; }); $content = file_get_contents($this->getPathname()); restore_error_handler(); if (false === $content) { throw new \RuntimeException($error); } return $content; } } reason = $reason; } public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null === $onRejected) { return $this; } try { return resolve($onRejected($this->reason)); } catch (\Throwable $exception) { return new RejectedPromise($exception); } catch (\Exception $exception) { return new RejectedPromise($exception); } } public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null === $onRejected) { throw UnhandledRejectionException::resolve($this->reason); } $result = $onRejected($this->reason); if ($result instanceof self) { throw UnhandledRejectionException::resolve($result->reason); } if ($result instanceof ExtendedPromiseInterface) { $result->done(); } } public function otherwise(callable $onRejected) { if (!_checkTypehint($onRejected, $this->reason)) { return $this; } return $this->then(null, $onRejected); } public function always(callable $onFulfilledOrRejected) { return $this->then(null, function ($reason) use ($onFulfilledOrRejected) { return resolve($onFulfilledOrRejected())->then(function () use ($reason) { return new RejectedPromise($reason); }); }); } public function progress(callable $onProgress) { return $this; } public function cancel() { } } reason = $reason; $message = \sprintf('Unhandled Rejection: %s', \json_encode($reason)); parent::__construct($message, 0); } public function getReason() { return $this->reason; } } factory = $factory; } public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { return $this->promise()->then($onFulfilled, $onRejected, $onProgress); } public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { return $this->promise()->done($onFulfilled, $onRejected, $onProgress); } public function otherwise(callable $onRejected) { return $this->promise()->otherwise($onRejected); } public function always(callable $onFulfilledOrRejected) { return $this->promise()->always($onFulfilledOrRejected); } public function progress(callable $onProgress) { return $this->promise()->progress($onProgress); } public function cancel() { return $this->promise()->cancel(); } /** * @internal * @see Promise::settle() */ public function promise() { if (null === $this->promise) { try { $this->promise = resolve(\call_user_func($this->factory)); } catch (\Throwable $exception) { $this->promise = new RejectedPromise($exception); } catch (\Exception $exception) { $this->promise = new RejectedPromise($exception); } } return $this->promise; } } canceller = $canceller; } public function promise() { if (null === $this->promise) { $this->promise = new Promise(function ($resolve, $reject, $notify) { $this->resolveCallback = $resolve; $this->rejectCallback = $reject; $this->notifyCallback = $notify; }, $this->canceller); $this->canceller = null; } return $this->promise; } public function resolve($value = null) { $this->promise(); \call_user_func($this->resolveCallback, $value); } public function reject($reason = null) { $this->promise(); \call_user_func($this->rejectCallback, $reason); } /** * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore. * @param mixed $update */ public function notify($update = null) { $this->promise(); \call_user_func($this->notifyCallback, $update); } /** * @deprecated 2.2.0 * @see Deferred::notify() */ public function progress($update = null) { $this->notify($update); } } then($resolve, $reject, $notify); }, $canceller); } return new FulfilledPromise($promiseOrValue); } /** * Creates a rejected promise for the supplied `$promiseOrValue`. * * If `$promiseOrValue` is a value, it will be the rejection value of the * returned promise. * * If `$promiseOrValue` is a promise, its completion value will be the rejected * value of the returned promise. * * This can be useful in situations where you need to reject a promise without * throwing an exception. For example, it allows you to propagate a rejection with * the value of another promise. * * @param mixed $promiseOrValue * @return PromiseInterface */ function reject($promiseOrValue = null) { if ($promiseOrValue instanceof PromiseInterface) { return resolve($promiseOrValue)->then(function ($value) { return new RejectedPromise($value); }); } return new RejectedPromise($promiseOrValue); } /** * Returns a promise that will resolve only once all the items in * `$promisesOrValues` have resolved. The resolution value of the returned promise * will be an array containing the resolution values of each of the items in * `$promisesOrValues`. * * @param array $promisesOrValues * @return PromiseInterface */ function all($promisesOrValues) { return map($promisesOrValues, function ($val) { return $val; }); } /** * Initiates a competitive race that allows one winner. Returns a promise which is * resolved in the same way the first settled promise resolves. * * The returned promise will become **infinitely pending** if `$promisesOrValues` * contains 0 items. * * @param array $promisesOrValues * @return PromiseInterface */ function race($promisesOrValues) { $cancellationQueue = new CancellationQueue(); $cancellationQueue->enqueue($promisesOrValues); return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $cancellationQueue) { resolve($promisesOrValues) ->done(function ($array) use ($cancellationQueue, $resolve, $reject, $notify) { if (!is_array($array) || !$array) { $resolve(); return; } foreach ($array as $promiseOrValue) { $cancellationQueue->enqueue($promiseOrValue); resolve($promiseOrValue) ->done($resolve, $reject, $notify); } }, $reject, $notify); }, $cancellationQueue); } /** * Returns a promise that will resolve when any one of the items in * `$promisesOrValues` resolves. The resolution value of the returned promise * will be the resolution value of the triggering item. * * The returned promise will only reject if *all* items in `$promisesOrValues` are * rejected. The rejection value will be an array of all rejection reasons. * * The returned promise will also reject with a `React\Promise\Exception\LengthException` * if `$promisesOrValues` contains 0 items. * * @param array $promisesOrValues * @return PromiseInterface */ function any($promisesOrValues) { return some($promisesOrValues, 1) ->then(function ($val) { return \array_shift($val); }); } /** * Returns a promise that will resolve when `$howMany` of the supplied items in * `$promisesOrValues` resolve. The resolution value of the returned promise * will be an array of length `$howMany` containing the resolution values of the * triggering items. * * The returned promise will reject if it becomes impossible for `$howMany` items * to resolve (that is, when `(count($promisesOrValues) - $howMany) + 1` items * reject). The rejection value will be an array of * `(count($promisesOrValues) - $howMany) + 1` rejection reasons. * * The returned promise will also reject with a `React\Promise\Exception\LengthException` * if `$promisesOrValues` contains less items than `$howMany`. * * @param array $promisesOrValues * @param int $howMany * @return PromiseInterface */ function some($promisesOrValues, $howMany) { $cancellationQueue = new CancellationQueue(); $cancellationQueue->enqueue($promisesOrValues); return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $howMany, $cancellationQueue) { resolve($promisesOrValues) ->done(function ($array) use ($howMany, $cancellationQueue, $resolve, $reject, $notify) { if (!\is_array($array) || $howMany < 1) { $resolve([]); return; } $len = \count($array); if ($len < $howMany) { throw new Exception\LengthException( \sprintf( 'Input array must contain at least %d item%s but contains only %s item%s.', $howMany, 1 === $howMany ? '' : 's', $len, 1 === $len ? '' : 's' ) ); } $toResolve = $howMany; $toReject = ($len - $toResolve) + 1; $values = []; $reasons = []; foreach ($array as $i => $promiseOrValue) { $fulfiller = function ($val) use ($i, &$values, &$toResolve, $toReject, $resolve) { if ($toResolve < 1 || $toReject < 1) { return; } $values[$i] = $val; if (0 === --$toResolve) { $resolve($values); } }; $rejecter = function ($reason) use ($i, &$reasons, &$toReject, $toResolve, $reject) { if ($toResolve < 1 || $toReject < 1) { return; } $reasons[$i] = $reason; if (0 === --$toReject) { $reject($reasons); } }; $cancellationQueue->enqueue($promiseOrValue); resolve($promiseOrValue) ->done($fulfiller, $rejecter, $notify); } }, $reject, $notify); }, $cancellationQueue); } /** * Traditional map function, similar to `array_map()`, but allows input to contain * promises and/or values, and `$mapFunc` may return either a value or a promise. * * The map function receives each item as argument, where item is a fully resolved * value of a promise or value in `$promisesOrValues`. * * @param array $promisesOrValues * @param callable $mapFunc * @return PromiseInterface */ function map($promisesOrValues, callable $mapFunc) { $cancellationQueue = new CancellationQueue(); $cancellationQueue->enqueue($promisesOrValues); return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $mapFunc, $cancellationQueue) { resolve($promisesOrValues) ->done(function ($array) use ($mapFunc, $cancellationQueue, $resolve, $reject, $notify) { if (!\is_array($array) || !$array) { $resolve([]); return; } $toResolve = \count($array); $values = []; foreach ($array as $i => $promiseOrValue) { $cancellationQueue->enqueue($promiseOrValue); $values[$i] = null; resolve($promiseOrValue) ->then($mapFunc) ->done( function ($mapped) use ($i, &$values, &$toResolve, $resolve) { $values[$i] = $mapped; if (0 === --$toResolve) { $resolve($values); } }, $reject, $notify ); } }, $reject, $notify); }, $cancellationQueue); } /** * Traditional reduce function, similar to `array_reduce()`, but input may contain * promises and/or values, and `$reduceFunc` may return either a value or a * promise, *and* `$initialValue` may be a promise or a value for the starting * value. * * @param array $promisesOrValues * @param callable $reduceFunc * @param mixed $initialValue * @return PromiseInterface */ function reduce($promisesOrValues, callable $reduceFunc, $initialValue = null) { $cancellationQueue = new CancellationQueue(); $cancellationQueue->enqueue($promisesOrValues); return new Promise(function ($resolve, $reject, $notify) use ($promisesOrValues, $reduceFunc, $initialValue, $cancellationQueue) { resolve($promisesOrValues) ->done(function ($array) use ($reduceFunc, $initialValue, $cancellationQueue, $resolve, $reject, $notify) { if (!\is_array($array)) { $array = []; } $total = \count($array); $i = 0; // Wrap the supplied $reduceFunc with one that handles promises and then // delegates to the supplied. $wrappedReduceFunc = function ($current, $val) use ($reduceFunc, $cancellationQueue, $total, &$i) { $cancellationQueue->enqueue($val); return $current ->then(function ($c) use ($reduceFunc, $total, &$i, $val) { return resolve($val) ->then(function ($value) use ($reduceFunc, $total, &$i, $c) { return $reduceFunc($c, $value, $i++, $total); }); }); }; $cancellationQueue->enqueue($initialValue); \array_reduce($array, $wrappedReduceFunc, resolve($initialValue)) ->done($resolve, $reject, $notify); }, $reject, $notify); }, $cancellationQueue); } /** * @internal */ function _checkTypehint(callable $callback, $object) { if (!\is_object($object)) { return true; } if (\is_array($callback)) { $callbackReflection = new \ReflectionMethod($callback[0], $callback[1]); } elseif (\is_object($callback) && !$callback instanceof \Closure) { $callbackReflection = new \ReflectionMethod($callback, '__invoke'); } else { $callbackReflection = new \ReflectionFunction($callback); } $parameters = $callbackReflection->getParameters(); if (!isset($parameters[0])) { return true; } $expectedException = $parameters[0]; if (!$expectedException->getClass()) { return true; } return $expectedException->getClass()->isInstance($object); } value = $value; } public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null === $onFulfilled) { return $this; } try { return resolve($onFulfilled($this->value)); } catch (\Throwable $exception) { return new RejectedPromise($exception); } catch (\Exception $exception) { return new RejectedPromise($exception); } } public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null === $onFulfilled) { return; } $result = $onFulfilled($this->value); if ($result instanceof ExtendedPromiseInterface) { $result->done(); } } public function otherwise(callable $onRejected) { return $this; } public function always(callable $onFulfilledOrRejected) { return $this->then(function ($value) use ($onFulfilledOrRejected) { return resolve($onFulfilledOrRejected())->then(function () use ($value) { return $value; }); }); } public function progress(callable $onProgress) { return $this; } public function cancel() { } } canceller = $canceller; // Explicitly overwrite arguments with null values before invoking // resolver function. This ensure that these arguments do not show up // in the stack trace in PHP 7+ only. $cb = $resolver; $resolver = $canceller = null; $this->call($cb); } public function then(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null !== $this->result) { return $this->result->then($onFulfilled, $onRejected, $onProgress); } if (null === $this->canceller) { return new static($this->resolver($onFulfilled, $onRejected, $onProgress)); } // This promise has a canceller, so we create a new child promise which // has a canceller that invokes the parent canceller if all other // followers are also cancelled. We keep a reference to this promise // instance for the static canceller function and clear this to avoid // keeping a cyclic reference between parent and follower. $parent = $this; ++$parent->requiredCancelRequests; return new static( $this->resolver($onFulfilled, $onRejected, $onProgress), static function () use (&$parent) { if (++$parent->cancelRequests >= $parent->requiredCancelRequests) { $parent->cancel(); } $parent = null; } ); } public function done(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { if (null !== $this->result) { return $this->result->done($onFulfilled, $onRejected, $onProgress); } $this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected) { $promise ->done($onFulfilled, $onRejected); }; if ($onProgress) { $this->progressHandlers[] = $onProgress; } } public function otherwise(callable $onRejected) { return $this->then(null, static function ($reason) use ($onRejected) { if (!_checkTypehint($onRejected, $reason)) { return new RejectedPromise($reason); } return $onRejected($reason); }); } public function always(callable $onFulfilledOrRejected) { return $this->then(static function ($value) use ($onFulfilledOrRejected) { return resolve($onFulfilledOrRejected())->then(function () use ($value) { return $value; }); }, static function ($reason) use ($onFulfilledOrRejected) { return resolve($onFulfilledOrRejected())->then(function () use ($reason) { return new RejectedPromise($reason); }); }); } public function progress(callable $onProgress) { return $this->then(null, null, $onProgress); } public function cancel() { if (null === $this->canceller || null !== $this->result) { return; } $canceller = $this->canceller; $this->canceller = null; $this->call($canceller); } private function resolver(callable $onFulfilled = null, callable $onRejected = null, callable $onProgress = null) { return function ($resolve, $reject, $notify) use ($onFulfilled, $onRejected, $onProgress) { if ($onProgress) { $progressHandler = static function ($update) use ($notify, $onProgress) { try { $notify($onProgress($update)); } catch (\Throwable $e) { $notify($e); } catch (\Exception $e) { $notify($e); } }; } else { $progressHandler = $notify; } $this->handlers[] = static function (ExtendedPromiseInterface $promise) use ($onFulfilled, $onRejected, $resolve, $reject, $progressHandler) { $promise ->then($onFulfilled, $onRejected) ->done($resolve, $reject, $progressHandler); }; $this->progressHandlers[] = $progressHandler; }; } private function reject($reason = null) { if (null !== $this->result) { return; } $this->settle(reject($reason)); } private function settle(ExtendedPromiseInterface $promise) { $promise = $this->unwrap($promise); if ($promise === $this) { $promise = new RejectedPromise( new \LogicException('Cannot resolve a promise with itself.') ); } $handlers = $this->handlers; $this->progressHandlers = $this->handlers = []; $this->result = $promise; $this->canceller = null; foreach ($handlers as $handler) { $handler($promise); } } private function unwrap($promise) { $promise = $this->extract($promise); while ($promise instanceof self && null !== $promise->result) { $promise = $this->extract($promise->result); } return $promise; } private function extract($promise) { if ($promise instanceof LazyPromise) { $promise = $promise->promise(); } return $promise; } private function call(callable $cb) { // Explicitly overwrite argument with null value. This ensure that this // argument does not show up in the stack trace in PHP 7+ only. $callback = $cb; $cb = null; // Use reflection to inspect number of arguments expected by this callback. // We did some careful benchmarking here: Using reflection to avoid unneeded // function arguments is actually faster than blindly passing them. // Also, this helps avoiding unnecessary function arguments in the call stack // if the callback creates an Exception (creating garbage cycles). if (\is_array($callback)) { $ref = new \ReflectionMethod($callback[0], $callback[1]); } elseif (\is_object($callback) && !$callback instanceof \Closure) { $ref = new \ReflectionMethod($callback, '__invoke'); } else { $ref = new \ReflectionFunction($callback); } $args = $ref->getNumberOfParameters(); try { if ($args === 0) { $callback(); } else { // Keep references to this promise instance for the static resolve/reject functions. // By using static callbacks that are not bound to this instance // and passing the target promise instance by reference, we can // still execute its resolving logic and still clear this // reference when settling the promise. This helps avoiding // garbage cycles if any callback creates an Exception. // These assumptions are covered by the test suite, so if you ever feel like // refactoring this, go ahead, any alternative suggestions are welcome! $target =& $this; $progressHandlers =& $this->progressHandlers; $callback( static function ($value = null) use (&$target) { if ($target !== null) { $target->settle(resolve($value)); $target = null; } }, static function ($reason = null) use (&$target) { if ($target !== null) { $target->reject($reason); $target = null; } }, static function ($update = null) use (&$progressHandlers) { foreach ($progressHandlers as $handler) { $handler($update); } } ); } } catch (\Throwable $e) { $target = null; $this->reject($e); } catch (\Exception $e) { $target = null; $this->reject($e); } } } then(null, $onRejected); * ``` * * Additionally, you can type hint the `$reason` argument of `$onRejected` to catch * only specific errors. * * @param callable $onRejected * @return ExtendedPromiseInterface */ public function otherwise(callable $onRejected); /** * Allows you to execute "cleanup" type tasks in a promise chain. * * It arranges for `$onFulfilledOrRejected` to be called, with no arguments, * when the promise is either fulfilled or rejected. * * * If `$promise` fulfills, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will fulfill with the same value as `$promise`. * * If `$promise` fulfills, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * If `$promise` rejects, and `$onFulfilledOrRejected` returns successfully, * `$newPromise` will reject with the same reason as `$promise`. * * If `$promise` rejects, and `$onFulfilledOrRejected` throws or returns a * rejected promise, `$newPromise` will reject with the thrown exception or * rejected promise's reason. * * `always()` behaves similarly to the synchronous finally statement. When combined * with `otherwise()`, `always()` allows you to write code that is similar to the familiar * synchronous catch/finally pair. * * Consider the following synchronous code: * * ```php * try { * return doSomething(); * } catch(\Exception $e) { * return handleError($e); * } finally { * cleanup(); * } * ``` * * Similar asynchronous code (with `doSomething()` that returns a promise) can be * written: * * ```php * return doSomething() * ->otherwise('handleError') * ->always('cleanup'); * ``` * * @param callable $onFulfilledOrRejected * @return ExtendedPromiseInterface */ public function always(callable $onFulfilledOrRejected); /** * Registers a handler for progress updates from promise. It is a shortcut for: * * ```php * $promise->then(null, null, $onProgress); * ``` * * @param callable $onProgress * @return ExtendedPromiseInterface * @deprecated 2.6.0 Progress support is deprecated and should not be used anymore. */ public function progress(callable $onProgress); } started) { return; } $this->started = true; $this->drain(); } public function enqueue($cancellable) { if (!\is_object($cancellable) || !\method_exists($cancellable, 'then') || !\method_exists($cancellable, 'cancel')) { return; } $length = \array_push($this->queue, $cancellable); if ($this->started && 1 === $length) { $this->drain(); } } private function drain() { for ($i = key($this->queue); isset($this->queue[$i]); $i++) { $cancellable = $this->queue[$i]; $exception = null; try { $cancellable->cancel(); } catch (\Throwable $exception) { } catch (\Exception $exception) { } unset($this->queue[$i]); if ($exception) { throw $exception; } } $this->queue = []; } } function () { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } }, ) ); WP_CLI::add_command( 'option', 'Option_Command' ); WP_CLI::add_command( 'post', 'Post_Command' ); WP_CLI::add_command( 'post meta', 'Post_Meta_Command' ); WP_CLI::add_command( 'post term', 'Post_Term_Command' ); WP_CLI::add_command( 'post-type', 'Post_Type_Command' ); WP_CLI::add_command( 'site', 'Site_Command' ); WP_CLI::add_command( 'site meta', 'Site_Meta_Command', array( 'before_invoke' => function() { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } if ( ! function_exists( 'is_site_meta_supported' ) || ! is_site_meta_supported() ) { WP_CLI::error( sprintf( 'The %s table is not installed. Please run the network database upgrade.', $GLOBALS['wpdb']->blogmeta ) ); } }, ) ); WP_CLI::add_command( 'site option', 'Site_Option_Command', array( 'before_invoke' => function() { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } }, ) ); WP_CLI::add_command( 'taxonomy', 'Taxonomy_Command' ); WP_CLI::add_command( 'term', 'Term_Command' ); WP_CLI::add_command( 'term meta', 'Term_Meta_Command', array( 'before_invoke' => function() { if ( \WP_CLI\Utils\wp_version_compare( '4.4', '<' ) ) { WP_CLI::error( 'Requires WordPress 4.4 or greater.' ); } }, ) ); WP_CLI::add_command( 'user', 'User_Command' ); WP_CLI::add_command( 'user meta', 'User_Meta_Command' ); WP_CLI::add_command( 'user session', 'User_Session_Command', array( 'before_invoke' => function() { if ( \WP_CLI\Utils\wp_version_compare( '4.0', '<' ) ) { WP_CLI::error( 'Requires WordPress 4.0 or greater.' ); } }, ) ); WP_CLI::add_command( 'user term', 'User_Term_Command' ); if ( class_exists( 'WP_CLI\Dispatcher\CommandNamespace' ) ) { WP_CLI::add_command( 'network', 'Network_Namespace' ); } term_id; } /** * Wrapper method for add_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param bool $unique Optional, default is false. Whether the * specified metadata key should be unique for the * object. If true, and the object already has a * value for the specified metadata key, no change * will be made. * * @return int|false The meta ID on success, false on failure. */ protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { return add_term_meta( $object_id, $meta_key, $meta_value, $unique ); } /** * Wrapper method for update_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param mixed $prev_value Optional. If specified, only update existing * metadata entries with the specified value. * Otherwise, update all entries. * * @return int|bool Meta ID if the key didn't exist, true on successful * update, false on failure. */ protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { return update_term_meta( $object_id, $meta_key, $meta_value, $prev_value ); } /** * Wrapper method for get_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Metadata key. If not specified, * retrieve all metadata for the specified object. * @param bool $single Optional, default is false. If true, return only * the first value of the specified meta_key. This * parameter has no effect if meta_key is not * specified. * * @return mixed Single metadata value, or array of values. */ protected function get_metadata( $object_id, $meta_key = '', $single = false ) { return get_term_meta( $object_id, $meta_key, $single ); } /** * Wrapper method for delete_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object metadata is for * @param string $meta_key Metadata key * @param mixed $meta_value Optional. Metadata value. Must be serializable * if non-scalar. If specified, only delete * metadata entries with this value. Otherwise, * delete all entries with the specified meta_key. * Pass `null, `false`, or an empty string to skip * this check. For backward compatibility, it is * not possible to pass an empty string to delete * those entries with an empty string for a value. * * @return bool True on successful delete, false on failure. */ protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { return delete_term_meta( $object_id, $meta_key, $meta_value ); } } fields = array_values( array_diff( $this->fields, array( 'description' ) ) ); } parent::__construct(); } /** * Gets the term counts for each supplied taxonomy. * * @param array $taxonomies Taxonomies to fetch counts for. * @return array Associative array of term counts keyed by taxonomy. */ protected function get_counts( $taxonomies ) { global $wpdb; if ( count( $taxonomies ) <= 0 ) { return []; } $query = $wpdb->prepare( "SELECT `taxonomy`, COUNT(*) AS `count` FROM $wpdb->term_taxonomy WHERE `taxonomy` IN (" . implode( ',', array_fill( 0, count( $taxonomies ), '%s' ) ) . ') GROUP BY `taxonomy`', $taxonomies ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $query is already prepared above. $counts = $wpdb->get_results( $query ); // Make sure there's a count for every item. $counts = array_merge( array_fill_keys( $taxonomies, 0 ), wp_list_pluck( $counts, 'count', 'taxonomy' ) ); return $counts; } /** * Lists registered taxonomies. * * ## OPTIONS * * [--=] * : Filter by one or more fields (see get_taxonomies() first parameter for a list of available fields). * * [--field=] * : Prints the value of a single field for each taxonomy. * * [--fields=] * : Limit the output to specific taxonomy fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each term: * * * name * * label * * description * * object_type * * show_tagcloud * * hierarchical * * public * * These fields are optionally available: * * * count * * ## EXAMPLES * * # List all taxonomies. * $ wp taxonomy list --format=csv * name,label,description,object_type,show_tagcloud,hierarchical,public * category,Categories,,post,1,1,1 * post_tag,Tags,,post,1,,1 * nav_menu,"Navigation Menus",,nav_menu_item,,, * link_category,"Link Categories",,link,1,, * post_format,Format,,post,,,1 * * # List all taxonomies with 'post' object type. * $ wp taxonomy list --object_type=post --fields=name,public * +-------------+--------+ * | name | public | * +-------------+--------+ * | category | 1 | * | post_tag | 1 | * | post_format | 1 | * +-------------+--------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); if ( isset( $assoc_args['object_type'] ) ) { $assoc_args['object_type'] = array( $assoc_args['object_type'] ); } $fields = $formatter->fields; $taxonomies = get_taxonomies( $assoc_args, 'objects' ); $counts = []; if ( count( $taxonomies ) > 0 && in_array( 'count', $fields, true ) ) { $counts = $this->get_counts( wp_list_pluck( $taxonomies, 'name' ) ); } $taxonomies = array_map( function( $taxonomy ) use ( $counts ) { $taxonomy->object_type = implode( ', ', $taxonomy->object_type ); $taxonomy->count = isset( $counts[ $taxonomy->name ] ) ? $counts[ $taxonomy->name ] : 0; return $taxonomy; }, $taxonomies ); $formatter->display_items( $taxonomies ); } /** * Gets details about a registered taxonomy. * * ## OPTIONS * * * : Taxonomy slug. * * [--field=] * : Instead of returning the whole taxonomy, returns the value of a single field. * * [--fields=] * : Limit the output to specific fields. Defaults to all fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for the specified taxonomy: * * * name * * label * * description * * object_type * * show_tagcloud * * hierarchical * * public * * labels * * cap * * These fields are optionally available: * * * count * * ## EXAMPLES * * # Get details of `category` taxonomy. * $ wp taxonomy get category --fields=name,label,object_type * +-------------+------------+ * | Field | Value | * +-------------+------------+ * | name | category | * | label | Categories | * | object_type | ["post"] | * +-------------+------------+ * * # Get capabilities of 'post_tag' taxonomy. * $ wp taxonomy get post_tag --field=cap * {"manage_terms":"manage_categories","edit_terms":"manage_categories","delete_terms":"manage_categories","assign_terms":"edit_posts"} */ public function get( $args, $assoc_args ) { $taxonomy = get_taxonomy( $args[0] ); if ( ! $taxonomy ) { WP_CLI::error( "Taxonomy {$args[0]} doesn't exist." ); } if ( empty( $assoc_args['fields'] ) ) { $default_fields = array_merge( $this->fields, array( 'labels', 'cap', ) ); $assoc_args['fields'] = $default_fields; } $formatter = $this->get_formatter( $assoc_args ); $fields = $formatter->fields; $count = 0; if ( in_array( 'count', $fields, true ) ) { $count = $this->get_counts( [ $taxonomy->name ] ); $count = $count[ $taxonomy->name ]; } $data = array( 'name' => $taxonomy->name, 'label' => $taxonomy->label, 'description' => $taxonomy->description, 'object_type' => $taxonomy->object_type, 'show_tagcloud' => $taxonomy->show_tagcloud, 'hierarchical' => $taxonomy->hierarchical, 'public' => $taxonomy->public, 'labels' => $taxonomy->labels, 'cap' => $taxonomy->cap, 'count' => $count, ); $formatter->display_item( $data ); } private function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->fields, 'taxonomy' ); } } 'supervisor', * ) */ class Network_Namespace extends CommandNamespace { } fetcher = new CommentFetcher(); } /** * Creates a new comment. * * ## OPTIONS * * [--=] * : Associative args for the new comment. See wp_insert_comment(). * * [--porcelain] * : Output just the new comment id. * * ## EXAMPLES * * # Create comment. * $ wp comment create --comment_post_ID=15 --comment_content="hello blog" --comment_author="wp-cli" * Success: Created comment 932. */ public function create( $args, $assoc_args ) { $assoc_args = wp_slash( $assoc_args ); parent::_create( $args, $assoc_args, function ( $params ) { if ( isset( $params['comment_post_ID'] ) ) { $post_id = $params['comment_post_ID']; $post = get_post( $post_id ); if ( ! $post ) { return new WP_Error( 'no_post', "Can't find post {$post_id}." ); } } else { // Make sure it's set for older WP versions else get undefined PHP notice. $params['comment_post_ID'] = 0; } // We use wp_insert_comment() instead of wp_new_comment() to stay at a low level and // avoid wp_die() formatted messages or notifications $comment_id = wp_insert_comment( $params ); if ( ! $comment_id ) { return new WP_Error( 'db_error', 'Could not create comment.' ); } return $comment_id; } ); } /** * Updates one or more comments. * * ## OPTIONS * * ... * : One or more IDs of comments to update. * * --= * : One or more fields to update. See wp_update_comment(). * * ## EXAMPLES * * # Update comment. * $ wp comment update 123 --comment_author='That Guy' * Success: Updated comment 123. */ public function update( $args, $assoc_args ) { $assoc_args = wp_slash( $assoc_args ); parent::_update( $args, $assoc_args, function ( $params ) { if ( ! wp_update_comment( $params ) ) { return new WP_Error( 'Could not update comment.' ); } return true; } ); } /** * Generates some number of new dummy comments. * * Creates a specified number of new comments with dummy data. * * ## OPTIONS * * [--count=] * : How many comments to generate? * --- * default: 100 * --- * * [--post_id=] * : Assign comments to a specific post. * * [--format=] * : Render output in a particular format. * --- * default: progress * options: * - progress * - ids * --- * * ## EXAMPLES * * # Generate comments for the given post. * $ wp comment generate --format=ids --count=3 --post_id=123 * 138 139 140 * * # Add meta to every generated comment. * $ wp comment generate --format=ids --count=3 | xargs -d ' ' -I % wp comment meta add % foo bar * Success: Added custom field. * Success: Added custom field. * Success: Added custom field. */ public function generate( $args, $assoc_args ) { $defaults = [ 'count' => 100, 'post_id' => 0, ]; $assoc_args = array_merge( $defaults, $assoc_args ); $format = Utils\get_flag_value( $assoc_args, 'format', 'progress' ); $notify = false; if ( 'progress' === $format ) { $notify = Utils\make_progress_bar( 'Generating comments', $assoc_args['count'] ); } $comment_count = wp_count_comments(); $total = (int) $comment_count->total_comments; $limit = $total + $assoc_args['count']; for ( $index = $total; $index < $limit; $index++ ) { $comment_id = wp_insert_comment( [ 'comment_content' => "Comment {$index}", 'comment_post_ID' => $assoc_args['post_id'], ] ); if ( 'progress' === $format ) { $notify->tick(); } elseif ( 'ids' === $format ) { echo $comment_id; if ( $index < $limit - 1 ) { echo ' '; } } } if ( 'progress' === $format ) { $notify->finish(); } } /** * Gets the data of a single comment. * * ## OPTIONS * * * : The comment to get. * * [--field=] * : Instead of returning the whole comment, returns the value of a single field. * * [--fields=] * : Limit the output to specific fields. Defaults to all fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * # Get comment. * $ wp comment get 21 --field=content * Thanks for all the comments, everyone! */ public function get( $args, $assoc_args ) { $comment_id = (int) $args[0]; $comment = get_comment( $comment_id ); if ( empty( $comment ) ) { WP_CLI::error( 'Invalid comment ID.' ); } if ( empty( $assoc_args['fields'] ) ) { $comment_array = get_object_vars( $comment ); $assoc_args['fields'] = array_keys( $comment_array ); } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $comment ); } /** * Gets a list of comments. * * Display comments based on all arguments supported by * [WP_Comment_Query()](https://developer.wordpress.org/reference/classes/WP_Comment_Query/__construct/). * * ## OPTIONS * * [--=] * : One or more args to pass to WP_Comment_Query. * * [--field=] * : Prints the value of a single field for each comment. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - ids * - csv * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each comment: * * * comment_ID * * comment_post_ID * * comment_date * * comment_approved * * comment_author * * comment_author_email * * These fields are optionally available: * * * comment_author_url * * comment_author_IP * * comment_date_gmt * * comment_content * * comment_karma * * comment_agent * * comment_type * * comment_parent * * user_id * * url * * ## EXAMPLES * * # List comment IDs. * $ wp comment list --field=ID * 22 * 23 * 24 * * # List comments of a post. * $ wp comment list --post_id=1 --fields=ID,comment_date,comment_author * +------------+---------------------+----------------+ * | comment_ID | comment_date | comment_author | * +------------+---------------------+----------------+ * | 1 | 2015-06-20 09:00:10 | Mr WordPress | * +------------+---------------------+----------------+ * * # List approved comments. * $ wp comment list --number=3 --status=approve --fields=ID,comment_date,comment_author * +------------+---------------------+----------------+ * | comment_ID | comment_date | comment_author | * +------------+---------------------+----------------+ * | 1 | 2015-06-20 09:00:10 | Mr WordPress | * | 30 | 2013-03-14 12:35:07 | John Doe | * | 29 | 2013-03-14 11:56:08 | Jane Doe | * +------------+---------------------+----------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); if ( 'ids' === $formatter->format ) { $assoc_args['fields'] = 'comment_ID'; } $assoc_args = self::process_csv_arguments_to_arrays( $assoc_args ); if ( 'count' === $formatter->format ) { $assoc_args['count'] = true; } if ( ! empty( $assoc_args['comment__in'] ) && ! empty( $assoc_args['orderby'] ) && 'comment__in' === $assoc_args['orderby'] && Utils\wp_version_compare( '4.4', '<' ) ) { $comments = []; foreach ( $assoc_args['comment__in'] as $comment_id ) { $comment = get_comment( $comment_id ); if ( $comment ) { $comments[] = $comment; } else { WP_CLI::warning( "Invalid comment {$comment_id}." ); } } } else { $query = new WP_Comment_Query(); $comments = $query->query( $assoc_args ); } if ( 'count' === $formatter->format ) { echo $comments; } else { if ( 'ids' === $formatter->format ) { $comments = wp_list_pluck( $comments, 'comment_ID' ); } elseif ( is_array( $comments ) ) { $comments = array_map( function( $comment ) { $comment->url = get_comment_link( $comment->comment_ID ); return $comment; }, $comments ); } $formatter->display_items( $comments ); } } /** * Deletes a comment. * * ## OPTIONS * * ... * : One or more IDs of comments to delete. * * [--force] * : Skip the trash bin. * * ## EXAMPLES * * # Delete comment. * $ wp comment delete 1337 --force * Success: Deleted comment 1337. * * # Delete multiple comments. * $ wp comment delete 1337 2341 --force * Success: Deleted comment 1337. * Success: Deleted comment 2341. */ public function delete( $args, $assoc_args ) { parent::_delete( $args, $assoc_args, function ( $comment_id, $assoc_args ) { $force = Utils\get_flag_value( $assoc_args, 'force' ); $status = wp_get_comment_status( $comment_id ); $result = wp_delete_comment( $comment_id, $force ); if ( ! $result ) { return [ 'error', "Failed deleting comment {$comment_id}." ]; } $verb = ( $force || 'trash' === $status ) ? 'Deleted' : 'Trashed'; return [ 'success', "{$verb} comment {$comment_id}." ]; } ); } private function call( $args, $status, $success, $failure ) { $comment_id = absint( $args ); $func = "wp_{$status}_comment"; if ( ! $func( $comment_id ) ) { WP_CLI::error( sprintf( $failure, "comment {$comment_id}" ) ); } WP_CLI::success( sprintf( $success, "comment {$comment_id}" ) ); } private function set_status( $args, $status, $success ) { $comment = $this->fetcher->get_check( $args ); $result = wp_set_comment_status( $comment->comment_ID, $status, true ); if ( is_wp_error( $result ) ) { WP_CLI::error( $result ); } WP_CLI::success( "{$success} comment {$comment->comment_ID}." ); } /** * Warns if `$_SERVER['SERVER_NAME']` not set as used in email from-address sent to post author in `wp_notify_postauthor()`. */ private function check_server_name() { if ( empty( $_SERVER['SERVER_NAME'] ) ) { WP_CLI::warning( 'Site url not set - defaulting to \'example.com\'. Any notification emails sent to post author may appear to come from \'example.com\'.' ); $_SERVER['SERVER_NAME'] = 'example.com'; } } /** * Trashes a comment. * * ## OPTIONS * * ... * : The IDs of the comments to trash. * * ## EXAMPLES * * # Trash comment. * $ wp comment trash 1337 * Success: Trashed comment 1337. */ public function trash( $args, $assoc_args ) { foreach ( $args as $id ) { $this->call( $id, __FUNCTION__, 'Trashed %s.', 'Failed trashing %s.' ); } } /** * Untrashes a comment. * * ## OPTIONS * * ... * : The IDs of the comments to untrash. * * ## EXAMPLES * * # Untrash comment. * $ wp comment untrash 1337 * Success: Untrashed comment 1337. */ public function untrash( $args, $assoc_args ) { $this->check_server_name(); foreach ( $args as $id ) { $this->call( $id, __FUNCTION__, 'Untrashed %s.', 'Failed untrashing %s.' ); } } /** * Marks a comment as spam. * * ## OPTIONS * * ... * : The IDs of the comments to mark as spam. * * ## EXAMPLES * * # Spam comment. * $ wp comment spam 1337 * Success: Marked as spam comment 1337. */ public function spam( $args, $assoc_args ) { foreach ( $args as $id ) { $this->call( $id, __FUNCTION__, 'Marked %s as spam.', 'Failed marking %s as spam.' ); } } /** * Unmarks a comment as spam. * * ## OPTIONS * * ... * : The IDs of the comments to unmark as spam. * * ## EXAMPLES * * # Unspam comment. * $ wp comment unspam 1337 * Success: Unspammed comment 1337. */ public function unspam( $args, $assoc_args ) { $this->check_server_name(); foreach ( $args as $id ) { $this->call( $id, __FUNCTION__, 'Unspammed %s.', 'Failed unspamming %s.' ); } } /** * Approves a comment. * * ## OPTIONS * * ... * : The IDs of the comments to approve. * * ## EXAMPLES * * # Approve comment. * $ wp comment approve 1337 * Success: Approved comment 1337. */ public function approve( $args, $assoc_args ) { $this->check_server_name(); foreach ( $args as $id ) { $this->set_status( $id, 'approve', 'Approved' ); } } /** * Unapproves a comment. * * ## OPTIONS * * ... * : The IDs of the comments to unapprove. * * ## EXAMPLES * * # Unapprove comment. * $ wp comment unapprove 1337 * Success: Unapproved comment 1337. */ public function unapprove( $args, $assoc_args ) { $this->check_server_name(); foreach ( $args as $id ) { $this->set_status( $id, 'hold', 'Unapproved' ); } } /** * Counts comments, on whole blog or on a given post. * * ## OPTIONS * * [] * : The ID of the post to count comments in. * * ## EXAMPLES * * # Count comments on whole blog. * $ wp comment count * approved: 33 * spam: 3 * trash: 1 * post-trashed: 0 * all: 34 * moderated: 1 * total_comments: 37 * * # Count comments in a post. * $ wp comment count 42 * approved: 19 * spam: 0 * trash: 0 * post-trashed: 0 * all: 19 * moderated: 0 * total_comments: 19 */ public function count( $args, $assoc_args ) { $post_id = Utils\get_flag_value( $args, 0, 0 ); $count = wp_count_comments( $post_id ); // Move total_comments to the end of the object $total = $count->total_comments; unset( $count->total_comments ); $count->total_comments = $total; foreach ( $count as $status => $count ) { WP_CLI::line( str_pad( "$status:", 17 ) . $count ); } } /** * Recalculates the comment_count value for one or more posts. * * ## OPTIONS * * ... * : IDs for one or more posts to update. * * ## EXAMPLES * * # Recount comment for the post. * $ wp comment recount 123 * Updated post 123 comment count to 67. */ public function recount( $args ) { foreach ( $args as $id ) { wp_update_comment_count( $id ); $post = get_post( $id ); if ( $post ) { WP_CLI::log( "Updated post {$post->ID} comment count to {$post->comment_count}." ); } else { WP_CLI::warning( "Post {$post->ID} doesn't exist." ); } } } /** * Gets the status of a comment. * * ## OPTIONS * * * : The ID of the comment to check. * * ## EXAMPLES * * # Get status of comment. * $ wp comment status 1337 * approved */ public function status( $args, $assoc_args ) { list( $comment_id ) = $args; $status = wp_get_comment_status( $comment_id ); if ( false === $status ) { WP_CLI::error( "Could not check status of comment {$comment_id}." ); } else { WP_CLI::line( $status ); } } /** * Verifies whether a comment exists. * * Displays a success message if the comment does exist. * * ## OPTIONS * * * : The ID of the comment to check. * * ## EXAMPLES * * # Check whether comment exists. * $ wp comment exists 1337 * Success: Comment with ID 1337 exists. */ public function exists( $args ) { if ( $this->fetcher->get( $args[0] ) ) { WP_CLI::success( "Comment with ID {$args[0]} exists." ); } } } get_check( $object_id ); return $comment->comment_ID; } } fetcher = new UserFetcher(); $this->sitefetcher = new SiteFetcher(); } /** * Lists users. * * Display WordPress users based on all arguments supported by * [WP_User_Query()](https://developer.wordpress.org/reference/classes/wp_user_query/prepare_query/). * * ## OPTIONS * * [--role=] * : Only display users with a certain role. * * [--=] * : Control output by one or more arguments of WP_User_Query(). * * [--network] * : List all users in the network for multisite. * * [--field=] * : Prints the value of a single field for each user. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each user: * * * ID * * user_login * * display_name * * user_email * * user_registered * * roles * * These fields are optionally available: * * * user_pass * * user_nicename * * user_url * * user_activation_key * * user_status * * spam * * deleted * * caps * * cap_key * * allcaps * * filter * * url * * ## EXAMPLES * * # List user IDs * $ wp user list --field=ID * 1 * * # List users with administrator role * $ wp user list --role=administrator --format=csv * ID,user_login,display_name,user_email,user_registered,roles * 1,supervisor,supervisor,supervisor@gmail.com,"2016-06-03 04:37:00",administrator * * # List users with only given fields * $ wp user list --fields=display_name,user_email --format=json * [{"display_name":"supervisor","user_email":"supervisor@gmail.com"}] * * # List users ordered by the 'last_activity' meta value. * $ wp user list --meta_key=last_activity --orderby=meta_value_num * * @subcommand list */ public function list_( $args, $assoc_args ) { if ( Utils\get_flag_value( $assoc_args, 'network' ) ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } $assoc_args['blog_id'] = 0; if ( isset( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); $assoc_args['fields'] = array_diff( $fields, [ 'roles' ] ); } else { $assoc_args['fields'] = array_diff( $this->obj_fields, [ 'roles' ] ); } } $formatter = $this->get_formatter( $assoc_args ); if ( in_array( $formatter->format, [ 'ids', 'count' ], true ) ) { $assoc_args['fields'] = 'ids'; } else { $assoc_args['fields'] = 'all_with_meta'; } $assoc_args['count_total'] = false; $assoc_args = self::process_csv_arguments_to_arrays( $assoc_args ); $users = get_users( $assoc_args ); if ( 'ids' === $formatter->format ) { echo implode( ' ', $users ); } elseif ( 'count' === $formatter->format ) { $formatter->display_items( $users ); } else { $iterator = Utils\iterator_map( $users, function ( $user ) { if ( ! is_object( $user ) ) { return $user; } $user->roles = implode( ',', $user->roles ); $user->url = get_author_posts_url( $user->ID, $user->user_nicename ); return $user; } ); $formatter->display_items( $iterator ); } } /** * Gets details about a user. * * ## OPTIONS * * * : User ID, user email, or user login. * * [--field=] * : Instead of returning the whole user, returns the value of a single field. * * [--fields=] * : Get a specific subset of the user's fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * # Get user * $ wp user get 12 --field=login * supervisor * * # Get user and export to JSON file * $ wp user get bob --format=json > bob.json */ public function get( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); $user_data = $user->to_array(); $user_data['roles'] = implode( ', ', $user->roles ); $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $user_data ); } /** * Deletes one or more users from the current site. * * On multisite, `wp user delete` only removes the user from the current * site. Include `--network` to also remove the user from the database, but * make sure to reassign their posts prior to deleting the user. * * ## OPTIONS * * ... * : The user login, user email, or user ID of the user(s) to delete. * * [--network] * : On multisite, delete the user from the entire network. * * [--reassign=] * : User ID to reassign the posts to. * * [--yes] * : Answer yes to any confirmation prompts. * * ## EXAMPLES * * # Delete user 123 and reassign posts to user 567 * $ wp user delete 123 --reassign=567 * Success: Removed user 123 from http://example.com * * # Delete all contributors and reassign their posts to user 2 * $ wp user delete $(wp user list --role=contributor --field=ID) --reassign=2 * Success: Removed user 813 from http://example.com * Success: Removed user 578 from http://example.com */ public function delete( $args, $assoc_args ) { $network = Utils\get_flag_value( $assoc_args, 'network' ) && is_multisite(); $reassign = Utils\get_flag_value( $assoc_args, 'reassign' ); if ( $network && $reassign ) { WP_CLI::error( 'Reassigning content to a different user is not supported on multisite.' ); } if ( ! $reassign ) { WP_CLI::confirm( '--reassign parameter not passed. All associated posts will be deleted. Proceed?', $assoc_args ); } $users = $this->fetcher->get_many( $args ); parent::_delete( $users, $assoc_args, function ( $user ) use ( $network, $reassign ) { $user_id = $user->ID; if ( $network ) { $result = wpmu_delete_user( $user_id ); $message = "Deleted user {$user_id}."; } else { $result = wp_delete_user( $user_id, $reassign ); $message = "Removed user {$user_id} from " . home_url() . '.'; } if ( ! $result ) { return [ 'error', "Failed deleting user {$user_id}." ]; } return [ 'success', $message ]; } ); } /** * Creates a new user. * * ## OPTIONS * * * : The login of the user to create. * * * : The email address of the user to create. * * [--role=] * : The role of the user to create. Default: default role. Possible values * include 'administrator', 'editor', 'author', 'contributor', 'subscriber'. * * [--user_pass=] * : The user password. Default: randomly generated. * * [--user_registered=] * : The date the user registered. Default: current date. * * [--display_name=] * : The display name. * * [--user_nicename=] * : A string that contains a URL-friendly name for the user. The default is the user's username. * * [--user_url=] * : A string containing the user's URL for the user's web site. * * [--nickname=] * : The user's nickname, defaults to the user's username. * * [--first_name=] * : The user's first name. * * [--last_name=] * : The user's last name. * * [--description=] * : A string containing content about the user. * * [--rich_editing=] * : A string for whether to enable the rich editor or not. False if not empty. * * [--send-email] * : Send an email to the user with their new account details. * * [--porcelain] * : Output just the new user id. * * ## EXAMPLES * * # Create user * $ wp user create bob bob@example.com --role=author * Success: Created user 3. * Password: k9**&I4vNH(& * * # Create user without showing password upon success * $ wp user create ann ann@example.com --porcelain * 4 */ public function create( $args, $assoc_args ) { $user = new stdClass(); list( $user->user_login, $user->user_email ) = $args; $assoc_args = wp_slash( $assoc_args ); if ( username_exists( $user->user_login ) ) { WP_CLI::error( "The '{$user->user_login}' username is already registered." ); } if ( ! is_email( $user->user_email ) ) { WP_CLI::error( "The '{$user->user_email}' email address is invalid." ); } $user->user_registered = Utils\get_flag_value( $assoc_args, 'user_registered', strftime( '%F %T', current_time( 'timestamp' ) ) // phpcs:ignore WordPress.DateTime.CurrentTimeTimestamp ); $user->display_name = Utils\get_flag_value( $assoc_args, 'display_name', false ); $user->first_name = Utils\get_flag_value( $assoc_args, 'first_name', false ); $user->last_name = Utils\get_flag_value( $assoc_args, 'last_name', false ); $user->description = Utils\get_flag_value( $assoc_args, 'description', false ); if ( isset( $assoc_args['user_pass'] ) ) { $user->user_pass = $assoc_args['user_pass']; } else { $user->user_pass = wp_generate_password( 24 ); $generated_pass = true; } $user->role = Utils\get_flag_value( $assoc_args, 'role', get_option( 'default_role' ) ); self::validate_role( $user->role ); if ( ! Utils\get_flag_value( $assoc_args, 'send-email' ) ) { add_filter( 'send_password_change_email', '__return_false' ); add_filter( 'send_email_change_email', '__return_false' ); } if ( is_multisite() ) { $result = wpmu_validate_user_signup( $user->user_login, $user->user_email ); if ( is_wp_error( $result['errors'] ) && ! empty( $result['errors']->errors ) ) { WP_CLI::error( $result['errors'] ); } $user_id = wpmu_create_user( $user->user_login, $user->user_pass, $user->user_email ); if ( ! $user_id ) { WP_CLI::error( 'Unknown error creating new user.' ); } $user->ID = $user_id; $user_id = wp_update_user( $user ); if ( is_wp_error( $user_id ) ) { WP_CLI::error( $user_id ); } } else { $user_id = wp_insert_user( $user ); } if ( ! $user_id || is_wp_error( $user_id ) ) { if ( ! $user_id ) { $user_id = 'Unknown error creating new user.'; } WP_CLI::error( $user_id ); } else { if ( false === $user->role ) { delete_user_option( $user_id, 'capabilities' ); delete_user_option( $user_id, 'user_level' ); } } if ( Utils\get_flag_value( $assoc_args, 'send-email' ) ) { self::wp_new_user_notification( $user_id, $user->user_pass ); } if ( Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $user_id ); } else { WP_CLI::success( "Created user {$user_id}." ); if ( isset( $generated_pass ) ) { WP_CLI::line( "Password: {$user->user_pass}" ); } } } /** * Updates an existing user. * * ## OPTIONS * * ... * : The user login, user email or user ID of the user(s) to update. * * [--user_pass=] * : A string that contains the plain text password for the user. * * [--user_nicename=] * : A string that contains a URL-friendly name for the user. The default is the user's username. * * [--user_url=] * : A string containing the user's URL for the user's web site. * * [--user_email=] * : A string containing the user's email address. * * [--display_name=] * : A string that will be shown on the site. Defaults to user's username. * * [--nickname=] * : The user's nickname, defaults to the user's username. * * [--first_name=] * : The user's first name. * * [--last_name=] * : The user's last name. * * [--description=] * : A string containing content about the user. * * [--rich_editing=] * : A string for whether to enable the rich editor or not. False if not empty. * * [--user_registered=] * : The date the user registered. * * [--role=] * : A string used to set the user's role. * * --= * : One or more fields to update. For accepted fields, see wp_update_user(). * * [--skip-email] * : Don't send an email notification to the user. * * ## EXAMPLES * * # Update user * $ wp user update 123 --display_name=Mary --user_pass=marypass * Success: Updated user 123. */ public function update( $args, $assoc_args ) { if ( isset( $assoc_args['user_login'] ) ) { WP_CLI::warning( "User logins can't be changed." ); unset( $assoc_args['user_login'] ); } $user_ids = []; foreach ( $this->fetcher->get_many( $args ) as $user ) { $user_ids[] = $user->ID; } $skip_email = Utils\get_flag_value( $assoc_args, 'skip-email' ); if ( $skip_email ) { add_filter( 'send_email_change_email', '__return_false' ); add_filter( 'send_password_change_email', '__return_false' ); } $assoc_args = wp_slash( $assoc_args ); parent::_update( $user_ids, $assoc_args, 'wp_update_user' ); if ( $skip_email ) { remove_filter( 'send_email_change_email', '__return_false' ); remove_filter( 'send_password_change_email', '__return_false' ); } } /** * Generates some users. * * Creates a specified number of new users with dummy data. * * ## OPTIONS * * [--count=] * : How many users to generate? * --- * default: 100 * --- * * [--role=] * : The role of the generated users. Default: default role from WP * * [--format=] * : Render output in a particular format. * --- * default: progress * options: * - progress * - ids * --- * * ## EXAMPLES * * # Add meta to every generated users. * $ wp user generate --format=ids --count=3 | xargs -d ' ' -I % wp user meta add % foo bar * Success: Added custom field. * Success: Added custom field. * Success: Added custom field. */ public function generate( $args, $assoc_args ) { global $blog_id; $defaults = [ 'count' => 100, 'role' => get_option( 'default_role' ), ]; $assoc_args = array_merge( $defaults, $assoc_args ); $role = $assoc_args['role']; if ( ! empty( $role ) ) { self::validate_role( $role ); } $user_count = count_users(); $total = $user_count['total_users']; $limit = $assoc_args['count'] + $total; $format = Utils\get_flag_value( $assoc_args, 'format', 'progress' ); $notify = false; if ( 'progress' === $format ) { $notify = Utils\make_progress_bar( 'Generating users', $assoc_args['count'] ); } for ( $index = $total; $index < $limit; $index++ ) { $login = "user_{$blog_id}_{$index}"; $name = "User {$index}"; $user_id = wp_insert_user( [ 'user_login' => $login, 'user_pass' => $login, 'nickname' => $name, 'display_name' => $name, 'role' => $role, ] ); if ( false === $role ) { delete_user_option( $user_id, 'capabilities' ); delete_user_option( $user_id, 'user_level' ); } if ( 'progress' === $format ) { $notify->tick(); } elseif ( 'ids' === $format ) { echo $user_id; if ( $index < $limit - 1 ) { echo ' '; } } } if ( 'progress' === $format ) { $notify->finish(); } } /** * Sets the user role. * * ## OPTIONS * * * : User ID, user email, or user login. * * [] * : Make the user have the specified role. If not passed, the default role is * used. * * ## EXAMPLES * * $ wp user set-role 12 author * Success: Added johndoe (12) to http://example.com as author. * * @subcommand set-role */ public function set_role( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); $role = Utils\get_flag_value( $args, 1, get_option( 'default_role' ) ); self::validate_role( $role ); // Multisite if ( function_exists( 'add_user_to_blog' ) ) { add_user_to_blog( get_current_blog_id(), $user->ID, $role ); } else { $user->set_role( $role ); } WP_CLI::success( "Added {$user->user_login} ({$user->ID}) to " . site_url() . " as {$role}." ); } /** * Adds a role for a user. * * ## OPTIONS * * * : User ID, user email, or user login. * * * : Add the specified role to the user. * * ## EXAMPLES * * $ wp user add-role 12 author * Success: Added 'author' role for johndoe (12). * * @subcommand add-role */ public function add_role( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); $role = $args[1]; self::validate_role( $role ); $user->add_role( $role ); WP_CLI::success( "Added '{$role}' role for {$user->user_login} ({$user->ID})." ); } /** * Removes a user's role. * * ## OPTIONS * * * : User ID, user email, or user login. * * [] * : A specific role to remove. * * ## EXAMPLES * * $ wp user remove-role 12 author * Success: Removed 'author' role for johndoe (12). * * @subcommand remove-role */ public function remove_role( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); if ( isset( $args[1] ) ) { $role = $args[1]; self::validate_role( $role ); $user->remove_role( $role ); WP_CLI::success( "Removed '{$role}' role for {$user->user_login} ({$user->ID})." ); } else { // Multisite if ( function_exists( 'remove_user_from_blog' ) ) { remove_user_from_blog( $user->ID, get_current_blog_id() ); } else { $user->remove_all_caps(); } WP_CLI::success( "Removed {$user->user_login} ({$user->ID}) from " . site_url() . '.' ); } } /** * Adds a capability to a user. * * ## OPTIONS * * * : User ID, user email, or user login. * * * : The capability to add. * * ## EXAMPLES * * # Add a capability for a user * $ wp user add-cap john create_premium_item * Success: Added 'create_premium_item' capability for john (16). * * # Add a capability for a user * $ wp user add-cap 15 edit_product * Success: Added 'edit_product' capability for johndoe (15). * * @subcommand add-cap */ public function add_cap( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); if ( $user ) { $cap = $args[1]; $user->add_cap( $cap ); WP_CLI::success( "Added '{$cap}' capability for {$user->user_login} ({$user->ID})." ); } } /** * Removes a user's capability. * * ## OPTIONS * * * : User ID, user email, or user login. * * * : The capability to be removed. * * ## EXAMPLES * * $ wp user remove-cap 11 publish_newsletters * Success: Removed 'publish_newsletters' cap for supervisor (11). * * $ wp user remove-cap 11 publish_posts * Error: The 'publish_posts' cap for supervisor (11) is inherited from a role. * * $ wp user remove-cap 11 nonexistent_cap * Error: No such 'nonexistent_cap' cap for supervisor (11). * * @subcommand remove-cap */ public function remove_cap( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); if ( $user ) { $cap = $args[1]; if ( ! isset( $user->caps[ $cap ] ) ) { if ( isset( $user->allcaps[ $cap ] ) ) { WP_CLI::error( "The '{$cap}' cap for {$user->user_login} ({$user->ID}) is inherited from a role." ); } WP_CLI::error( "No such '{$cap}' cap for {$user->user_login} ({$user->ID})." ); } $user->remove_cap( $cap ); WP_CLI::success( "Removed '{$cap}' cap for {$user->user_login} ({$user->ID})." ); } } /** * Lists all capabilities for a user. * * ## OPTIONS * * * : User ID, user email, or login. * * [--format=] * : Render output in a particular format. * --- * default: list * options: * - list * - table * - csv * - json * - count * - yaml * --- * * ## EXAMPLES * * $ wp user list-caps 21 * edit_product * create_premium_item * * @subcommand list-caps */ public function list_caps( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); if ( $user ) { $user->get_role_caps(); $user_caps_list = $user->allcaps; $active_user_cap_list = []; foreach ( $user_caps_list as $cap => $active ) { if ( $active ) { $active_user_cap_list[] = $cap; } } if ( 'list' === $assoc_args['format'] ) { foreach ( $active_user_cap_list as $cap ) { WP_CLI::line( $cap ); } } else { $output_caps = []; foreach ( $active_user_cap_list as $cap ) { $output_cap = new stdClass(); $output_cap->name = $cap; $output_caps[] = $output_cap; } $formatter = new Formatter( $assoc_args, $this->cap_fields ); $formatter->display_items( $output_caps ); } } } /** * Imports users from a CSV file. * * If the user already exists (matching the email address or login), then * the user is updated unless the `--skip-update` flag is used. * * ## OPTIONS * * * : The local or remote CSV file of users to import. If '-', then reads from STDIN. * * [--send-email] * : Send an email to new users with their account details. * * [--skip-update] * : Don't update users that already exist. * * ## EXAMPLES * * # Import users from local CSV file * $ wp user import-csv /path/to/users.csv * Success: bobjones created * Success: newuser1 created * Success: existinguser created * * # Import users from remote CSV file * $ wp user import-csv http://example.com/users.csv * * Sample users.csv file: * * user_login,user_email,display_name,role * bobjones,bobjones@example.com,Bob Jones,contributor * newuser1,newuser1@example.com,New User,author * existinguser,existinguser@example.com,Existing User,administrator * * @subcommand import-csv */ public function import_csv( $args, $assoc_args ) { $blog_users = get_users(); $filename = $args[0]; if ( 0 === stripos( $filename, 'http://' ) || 0 === stripos( $filename, 'https://' ) ) { $response = wp_remote_head( $filename ); $response_code = (string) wp_remote_retrieve_response_code( $response ); if ( in_array( (int) $response_code[0], [ 4, 5 ], true ) ) { WP_CLI::error( "Couldn't access remote CSV file (HTTP {$response_code} response)." ); } } elseif ( '-' === $filename ) { if ( ! EntityUtils::has_stdin() ) { WP_CLI::error( 'Unable to read content from STDIN.' ); } } elseif ( ! file_exists( $filename ) ) { WP_CLI::error( "Missing file: {$filename}" ); } // Don't send core's emails during the creation / update process add_filter( 'send_password_change_email', '__return_false' ); add_filter( 'send_email_change_email', '__return_false' ); if ( '-' === $filename ) { $file_object = new NoRewindIterator( new SplFileObject( 'php://stdin' ) ); $file_object->setFlags( SplFileObject::READ_CSV ); $csv_data = []; $indexes = []; foreach ( $file_object as $line ) { if ( empty( $line[0] ) ) { continue; } if ( empty( $indexes ) ) { $indexes = $line; continue; } foreach ( $indexes as $n => $key ) { $data[ $key ] = $line[ $n ]; } $csv_data[] = $data; } } else { $csv_data = new CsvIterator( $filename ); } foreach ( $csv_data as $new_user ) { $defaults = [ 'role' => get_option( 'default_role' ), 'user_pass' => wp_generate_password(), 'user_registered' => strftime( '%F %T', time() ), 'display_name' => false, ]; $new_user = array_merge( $defaults, $new_user ); $secondary_roles = []; if ( ! empty( $new_user['roles'] ) ) { $roles = array_map( 'trim', explode( ',', $new_user['roles'] ) ); $invalid_role = false; foreach ( $roles as $role ) { if ( null === get_role( $role ) ) { WP_CLI::warning( "{$new_user['user_login']} has an invalid role." ); $invalid_role = true; break; } } if ( $invalid_role ) { continue; } $new_user['role'] = array_shift( $roles ); $secondary_roles = $roles; } elseif ( 'none' === $new_user['role'] ) { $new_user['role'] = false; } elseif ( null === get_role( $new_user['role'] ) ) { WP_CLI::warning( "{$new_user['user_login']} has an invalid role." ); continue; } // User already exists and we just need to add them to the site if they aren't already there $existing_user = get_user_by( 'email', $new_user['user_email'] ); if ( ! $existing_user ) { $existing_user = get_user_by( 'login', $new_user['user_login'] ); } if ( $existing_user && Utils\get_flag_value( $assoc_args, 'skip-update' ) ) { WP_CLI::log( "{$existing_user->user_login} exists and has been skipped." ); continue; } if ( $existing_user ) { $new_user['ID'] = $existing_user->ID; $user_id = wp_update_user( $new_user ); if ( ! in_array( $existing_user->user_login, wp_list_pluck( $blog_users, 'user_login' ), true ) && is_multisite() && $new_user['role'] ) { add_user_to_blog( get_current_blog_id(), $existing_user->ID, $new_user['role'] ); WP_CLI::log( "{$existing_user->user_login} added as {$new_user['role']}." ); } // Create the user } else { unset( $new_user['ID'] ); // Unset else it will just return the ID if ( is_multisite() ) { $result = wpmu_validate_user_signup( $new_user['user_login'], $new_user['user_email'] ); if ( is_wp_error( $result['errors'] ) && ! empty( $result['errors']->errors ) ) { WP_CLI::warning( $result['errors'] ); continue; } $user_id = wpmu_create_user( $new_user['user_login'], $new_user['user_pass'], $new_user['user_email'] ); if ( ! $user_id ) { WP_CLI::warning( 'Unknown error creating new user.' ); continue; } $new_user['ID'] = $user_id; $user_id = wp_update_user( $new_user ); if ( is_wp_error( $user_id ) ) { WP_CLI::warning( $user_id ); continue; } } else { $user_id = wp_insert_user( $new_user ); } if ( Utils\get_flag_value( $assoc_args, 'send-email' ) ) { self::wp_new_user_notification( $user_id, $new_user['user_pass'] ); } } if ( is_wp_error( $user_id ) ) { WP_CLI::warning( $user_id ); continue; } if ( false === $new_user['role'] ) { delete_user_option( $user_id, 'capabilities' ); delete_user_option( $user_id, 'user_level' ); } $user = get_user_by( 'id', $user_id ); foreach ( $secondary_roles as $secondary_role ) { $user->add_role( $secondary_role ); } if ( ! empty( $existing_user ) ) { WP_CLI::success( $new_user['user_login'] . ' updated.' ); } else { WP_CLI::success( $new_user['user_login'] . ' created.' ); } } } /** * Resets the password for one or more users. * * ## OPTIONS * * ... * : one or more user logins or IDs. * * [--skip-email] * : Don't send an email notification to the affected user(s). * * ## EXAMPLES * * # Reset the password for two users and send them the change email. * $ wp user reset-password admin editor * Reset password for admin. * Reset password for editor. * Success: Passwords reset for 2 users. * * @subcommand reset-password */ public function reset_password( $args, $assoc_args ) { $skip_email = Utils\get_flag_value( $assoc_args, 'skip-email' ); if ( $skip_email ) { add_filter( 'send_password_change_email', '__return_false' ); } $fetcher = new UserFetcher(); $users = $fetcher->get_many( $args ); foreach ( $users as $user ) { wp_update_user( [ 'ID' => $user->ID, 'user_pass' => wp_generate_password(), ] ); WP_CLI::log( "Reset password for {$user->user_login}." ); } if ( $skip_email ) { remove_filter( 'send_password_change_email', '__return_false' ); } $reset_user_count = count( $users ); if ( 1 === $reset_user_count ) { WP_CLI::success( "Password reset for {$reset_user_count} user." ); } elseif ( $reset_user_count > 1 ) { WP_CLI::success( "Passwords reset for {$reset_user_count} users." ); } else { WP_CLI::error( 'No user found to reset password.' ); } } /** * Checks whether the role is valid * * @param string */ private static function validate_role( $role ) { if ( ! empty( $role ) && null === get_role( $role ) ) { WP_CLI::error( "Role doesn't exist: {$role}" ); } } /** * Accommodates three different behaviors for wp_new_user_notification() * - 4.3.1 and above: expect second argument to be deprecated * - 4.3: Second argument was repurposed as $notify * - Below 4.3: Send the password in the notification * * @param string $user_id * @param string $password */ public static function wp_new_user_notification( $user_id, $password ) { if ( Utils\wp_version_compare( '4.3.1', '>=' ) ) { wp_new_user_notification( $user_id, null, 'both' ); } elseif ( Utils\wp_version_compare( '4.3', '>=' ) ) { // phpcs:ignore WordPress.WP.DeprecatedParameters.Wp_new_user_notificationParam2Found -- Only called in valid conditions. wp_new_user_notification( $user_id, 'both' ); } else { // phpcs:ignore WordPress.WP.DeprecatedParameters.Wp_new_user_notificationParam2Found -- Only called in valid conditions. wp_new_user_notification( $user_id, $password ); } } /** * Marks one or more users as spam. * * ## OPTIONS * * ... * : One or more IDs of users to mark as spam. * * ## EXAMPLES * * $ wp user spam 123 * User 123 marked as spam. * Success: Spamed 1 of 1 users. */ public function spam( $args ) { $this->update_msuser_status( $args, 'spam', '1' ); } /** * Removes one or more users from spam. * * ## OPTIONS * * ... * : One or more IDs of users to remove from spam. * * ## EXAMPLES * * $ wp user unspam 123 * User 123 removed from spam. * Success: Unspamed 1 of 1 users. */ public function unspam( $args ) { $this->update_msuser_status( $args, 'spam', '0' ); } /** * Common command for updating user data. */ private function update_msuser_status( $user_ids, $pref, $value ) { // If site is not multisite, then stop execution. if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } if ( 'spam' === $pref ) { $action = (int) $value ? 'marked as spam' : 'removed from spam'; $verb = (int) $value ? 'spam' : 'unspam'; } $successes = 0; $errors = 0; $users = $this->fetcher->get_many( $user_ids ); if ( count( $users ) < count( $user_ids ) ) { $errors = count( $user_ids ) - count( $users ); } foreach ( $user_ids as $user_id ) { $user = get_userdata( $user_id ); // If no user found, then show warning. if ( empty( $user ) ) { WP_CLI::warning( "User {$user_id} doesn't exist." ); continue; } // Super admin should not be marked as spam. if ( is_super_admin( $user->ID ) ) { WP_CLI::warning( "User cannot be modified. The user {$user->ID} is a network administrator." ); continue; } // Skip if user is already marked as spam and show warning. if ( $value === $user->spam ) { WP_CLI::warning( "User {$user_id} already {$action}." ); continue; } // Make that user's blog as spam too. $blogs = (array) get_blogs_of_user( $user_id, true ); foreach ( $blogs as $details ) { $site = $this->sitefetcher->get_check( $details->site_id ); // Main blog shouldn't a spam ! if ( $details->userblog_id !== $site->blog_id ) { update_blog_status( $details->userblog_id, $pref, $value ); } } if ( Utils\wp_version_compare( '5.3', '<' ) ) { // phpcs:ignore WordPress.WP.DeprecatedFunctions.update_user_statusFound -- Fallback for older versions. update_user_status( $user_id, $pref, $value ); } else { wp_update_user( [ 'ID' => $user_id, $pref => $value, ] ); } WP_CLI::log( "User {$user_id} {$action}." ); $successes++; } Utils\report_batch_operation_results( 'user', $verb, count( $user_ids ), $successes, $errors ); } /** * Checks if a user's password is valid or not. * * ## OPTIONS * * * : The user login, user email or user ID of the user to check credentials for. * * * : A string that contains the plain text password for the user. * * [--escape-chars] * : Escape password with `wp_slash()` to mimic the same behavior as `wp-login.php`. * * ## EXAMPLES * * # Check whether given credentials are valid; exit status 0 if valid, otherwise 1 * $ wp user check-password admin adminpass * $ echo $? * 1 * * # Bash script for checking whether given credentials are valid or not * if ! $(wp user check-password admin adminpass); then * notify-send "Invalid Credentials"; * fi * * @subcommand check-password */ public function check_password( $args, $assoc_args ) { $escape_chars = Utils\get_flag_value( $assoc_args, 'escape-chars', false ); if ( ! $escape_chars && wp_slash( wp_unslash( $args[1] ) ) !== $args[1] ) { WP_CLI::warning( 'Password contains characters that need to be escaped. Please escape them manually or use the `--escape-chars` option.' ); } $user = $this->fetcher->get_check( $args[0] ); $user_pass = $escape_chars ? wp_slash( $args[1] ) : $args[1]; if ( wp_check_password( $user_pass, $user->data->user_pass, $user->ID ) ) { WP_CLI::halt( 0 ); } else { WP_CLI::halt( 1 ); } } } * : Key for the option. * * [--format=] * : Get value in a particular format. * --- * default: var_export * options: * - var_export * - json * - yaml * --- * * ## EXAMPLES * * # Get option. * $ wp option get home * http://example.com * * # Get blog description. * $ wp option get blogdescription * A random blog description * * # Get blog name * $ wp option get blogname * A random blog name * * # Get admin email. * $ wp option get admin_email * someone@example.com * * # Get option in JSON format. * $ wp option get active_plugins --format=json * {"0":"dynamically-dynamic-sidebar\/dynamically-dynamic-sidebar.php","1":"monster-widget\/monster-widget.php","2":"show-current-template\/show-current-template.php","3":"theme-check\/theme-check.php","5":"wordpress-importer\/wordpress-importer.php"} */ public function get( $args, $assoc_args ) { list( $key ) = $args; $value = get_option( $key ); if ( false === $value ) { WP_CLI::error( "Could not get '{$key}' option. Does it exist?" ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Adds a new option value. * * Errors if the option already exists. * * ## OPTIONS * * * : The name of the option to add. * * [] * : The value of the option to add. If ommited, the value is read from STDIN. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * [--autoload=] * : Should this option be automatically loaded. * --- * options: * - 'yes' * - 'no' * --- * * ## EXAMPLES * * # Create an option by reading a JSON file. * $ wp option add my_option --format=json < config.json * Success: Added 'my_option' option. */ public function add( $args, $assoc_args ) { $key = $args[0]; $value = WP_CLI::get_value_from_arg_or_stdin( $args, 1 ); $value = WP_CLI::read_value( $value, $assoc_args ); if ( Utils\get_flag_value( $assoc_args, 'autoload' ) === 'no' ) { $autoload = 'no'; } else { $autoload = 'yes'; } if ( ! add_option( $key, $value, '', $autoload ) ) { WP_CLI::error( "Could not add option '{$key}'. Does it already exist?" ); } else { WP_CLI::success( "Added '{$key}' option." ); } } /** * Lists options and their values. * * ## OPTIONS * * [--search=] * : Use wildcards ( * and ? ) to match option name. * * [--exclude=] * : Pattern to exclude. Use wildcards ( * and ? ) to match option name. * * [--autoload=] * : Match only autoload options when value is on, and only not-autoload option when off. * * [--transients] * : List only transients. Use `--no-transients` to ignore all transients. * * [--unserialize] * : Unserialize option values in output. * * [--field=] * : Prints the value of a single field. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : The serialization format for the value. total_bytes displays the total size of matching options in bytes. * --- * default: table * options: * - table * - json * - csv * - count * - yaml * - total_bytes * --- * * [--orderby=] * : Set orderby which field. * --- * default: option_id * options: * - option_id * - option_name * - option_value * --- * * [--order=] * : Set ascending or descending order. * --- * default: asc * options: * - asc * - desc * --- * * ## AVAILABLE FIELDS * * This field will be displayed by default for each matching option: * * * option_name * * option_value * * These fields are optionally available: * * * autoload * * size_bytes * * ## EXAMPLES * * # Get the total size of all autoload options. * $ wp option list --autoload=on --format=total_bytes * 33198 * * # Find biggest transients. * $ wp option list --search="*_transient_*" --fields=option_name,size_bytes | sort -n -k 2 | tail * option_name size_bytes * _site_transient_timeout_theme_roots 10 * _site_transient_theme_roots 76 * _site_transient_update_themes 181 * _site_transient_update_core 808 * _site_transient_update_plugins 6645 * * # List all options beginning with "i2f_". * $ wp option list --search="i2f_*" * +-------------+--------------+ * | option_name | option_value | * +-------------+--------------+ * | i2f_version | 0.1.0 | * +-------------+--------------+ * * # Delete all options beginning with "theme_mods_". * $ wp option list --search="theme_mods_*" --field=option_name | xargs -I % wp option delete % * Success: Deleted 'theme_mods_twentysixteen' option. * Success: Deleted 'theme_mods_twentyfifteen' option. * Success: Deleted 'theme_mods_twentyfourteen' option. * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wpdb; $pattern = '%'; $exclude = ''; $fields = array( 'option_name', 'option_value' ); $size_query = ',LENGTH(option_value) AS `size_bytes`'; $autoload_query = ''; if ( isset( $assoc_args['search'] ) ) { $pattern = self::esc_like( $assoc_args['search'] ); // substitute wildcards $pattern = str_replace( '*', '%', $pattern ); $pattern = str_replace( '?', '_', $pattern ); } if ( isset( $assoc_args['exclude'] ) ) { $exclude = self::esc_like( $assoc_args['exclude'] ); $exclude = str_replace( '*', '%', $exclude ); $exclude = str_replace( '?', '_', $exclude ); } if ( isset( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); } if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'total_bytes' ) { $fields = array( 'size_bytes' ); $size_query = ',SUM(LENGTH(option_value)) AS `size_bytes`'; } if ( isset( $assoc_args['autoload'] ) ) { if ( 'on' === $assoc_args['autoload'] ) { $autoload_query = " AND autoload='yes'"; } elseif ( 'off' === $assoc_args['autoload'] ) { $autoload_query = " AND autoload='no'"; } else { WP_CLI::error( "Value of '--autoload' should be on or off." ); } } // By default we don't want to display transients. $show_transients = Utils\get_flag_value( $assoc_args, 'transients', false ); if ( $show_transients ) { $transients_query = " AND option_name LIKE '\_transient\_%' OR option_name LIKE '\_site\_transient\_%'"; } else { $transients_query = " AND option_name NOT LIKE '\_transient\_%' AND option_name NOT LIKE '\_site\_transient\_%'"; } $where = ''; if ( $pattern ) { $where .= $wpdb->prepare( 'WHERE `option_name` LIKE %s', $pattern ); } if ( $exclude ) { $where .= $wpdb->prepare( ' AND `option_name` NOT LIKE %s', $exclude ); } $where .= $autoload_query . $transients_query; // phpcs:disable WordPress.DB.PreparedSQL -- Hardcoded query parts without user input. $results = $wpdb->get_results( 'SELECT `option_name`,`option_value`,`autoload`' . $size_query . " FROM `$wpdb->options` {$where}" ); // phpcs:enable $orderby = Utils\get_flag_value( $assoc_args, 'orderby' ); $order = Utils\get_flag_value( $assoc_args, 'order' ); // Sort result. if ( 'option_id' !== $orderby ) { usort( $results, function ( $a, $b ) use ( $orderby, $order ) { // Sort array. return 'asc' === $order ? $a->$orderby > $b->$orderby : $a->$orderby < $b->$orderby; } ); } elseif ( 'option_id' === $orderby && 'desc' === $order ) { // Sort by default descending. krsort( $results ); } if ( true === Utils\get_flag_value( $assoc_args, 'unserialize', null ) ) { foreach ( $results as $k => &$v ) { if ( ! empty( $v->option_value ) ) { $v->option_value = maybe_unserialize( $v->option_value ); } } } if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'total_bytes' ) { WP_CLI::line( $results[0]->size_bytes ); } else { $formatter = new Formatter( $assoc_args, $fields ); $formatter->display_items( $results ); } } /** * Updates an option value. * * ## OPTIONS * * * : The name of the option to update. * * [] * : The new value. If ommited, the value is read from STDIN. * * [--autoload=] * : Requires WP 4.2. Should this option be automatically loaded. * --- * options: * - 'yes' * - 'no' * --- * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * ## EXAMPLES * * # Update an option by reading from a file. * $ wp option update my_option < value.txt * Success: Updated 'my_option' option. * * # Update one option on multiple sites using xargs. * $ wp site list --field=url | xargs -n1 -I {} sh -c 'wp --url={} option update my_option my_value' * Success: Updated 'my_option' option. * Success: Updated 'my_option' option. * * # Update site blog name. * $ wp option update blogname "Random blog name" * Success: Updated 'blogname' option. * * # Update site blog description. * $ wp option update blogdescription "Some random blog description" * Success: Updated 'blogdescription' option. * * # Update admin email address. * $ wp option update admin_email someone@example.com * Success: Updated 'admin_email' option. * * # Set the default role. * $ wp option update default_role author * Success: Updated 'default_role' option. * * # Set the timezone string. * $ wp option update timezone_string "America/New_York" * Success: Updated 'timezone_string' option. * * @alias set */ public function update( $args, $assoc_args ) { $key = $args[0]; $value = WP_CLI::get_value_from_arg_or_stdin( $args, 1 ); $value = WP_CLI::read_value( $value, $assoc_args ); $autoload = Utils\get_flag_value( $assoc_args, 'autoload' ); if ( ! in_array( $autoload, [ 'yes', 'no' ], true ) ) { $autoload = null; } $value = sanitize_option( $key, $value ); // Sanitization WordPress normally performs when getting an option if ( in_array( $key, [ 'siteurl', 'home', 'category_base', 'tag_base' ], true ) ) { $value = untrailingslashit( $value ); } $old_value = sanitize_option( $key, get_option( $key ) ); if ( $value === $old_value && null === $autoload ) { WP_CLI::success( "Value passed for '{$key}' option is unchanged." ); } else { if ( update_option( $key, $value, $autoload ) ) { WP_CLI::success( "Updated '{$key}' option." ); } else { WP_CLI::error( "Could not update option '{$key}'." ); } } } /** * Deletes an option. * * ## OPTIONS * * ... * : Key for the option. * * ## EXAMPLES * * # Delete an option. * $ wp option delete my_option * Success: Deleted 'my_option' option. * * # Delete multiple options. * $ wp option delete option_one option_two option_three * Success: Deleted 'option_one' option. * Success: Deleted 'option_two' option. * Warning: Could not delete 'option_three' option. Does it exist? */ public function delete( $args ) { foreach ( $args as $arg ) { if ( ! delete_option( $arg ) ) { WP_CLI::warning( "Could not delete '{$arg}' option. Does it exist?" ); } else { WP_CLI::success( "Deleted '{$arg}' option." ); } } } /** * Gets a nested value from an option. * * ## OPTIONS * * * : The option name. * * ... * : The name(s) of the keys within the value to locate the value to pluck. * * [--format=] * : The output format of the value. * --- * default: plaintext * options: * - plaintext * - json * - yaml * --- */ public function pluck( $args, $assoc_args ) { list( $key ) = $args; $value = get_option( $key ); if ( false === $value ) { WP_CLI::halt( 1 ); } $key_path = array_map( function( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 1 ) ); $traverser = new RecursiveDataStructureTraverser( $value ); try { $value = $traverser->get( $key_path ); } catch ( Exception $exception ) { die( 1 ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Updates a nested value in an option. * * ## OPTIONS * * * : Patch action to perform. * --- * options: * - insert * - update * - delete * --- * * * : The option name. * * ... * : The name(s) of the keys within the value to locate the value to patch. * * [] * : The new value. If omitted, the value is read from STDIN. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- */ public function patch( $args, $assoc_args ) { list( $action, $key ) = $args; $key_path = array_map( function( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 2 ) ); if ( 'delete' === $action ) { $patch_value = null; } else { $stdin_value = EntityUtils::has_stdin() ? trim( WP_CLI::get_value_from_arg_or_stdin( $args, -1 ) ) : null; $patch_value = ! empty( $stdin_value ) ? WP_CLI::read_value( $stdin_value, $assoc_args ) : WP_CLI::read_value( array_pop( $key_path ), $assoc_args ); } /* Need to make a copy of $current_value here as it is modified by reference */ $old_value = sanitize_option( $key, get_option( $key ) ); $current_value = $old_value; if ( is_object( $current_value ) ) { $old_value = clone $current_value; } $traverser = new RecursiveDataStructureTraverser( $current_value ); try { $traverser->$action( $key_path, $patch_value ); } catch ( Exception $exception ) { WP_CLI::error( $exception->getMessage() ); } $patched_value = sanitize_option( $key, $traverser->value() ); if ( $patched_value === $old_value ) { WP_CLI::success( "Value passed for '{$key}' option is unchanged." ); } else { if ( update_option( $key, $patched_value ) ) { WP_CLI::success( "Updated '{$key}' option." ); } else { WP_CLI::error( "Could not update option '{$key}'." ); } } } private static function esc_like( $old ) { global $wpdb; // Remove notices in 4.0 and support backwards compatibility if ( method_exists( $wpdb, 'esc_like' ) ) { // 4.0 $old = $wpdb->esc_like( $old ); } else { // phpcs:ignore WordPress.WP.DeprecatedFunctions.like_escapeFound -- called in WordPress 3.9 or less. $old = like_escape( esc_sql( $old ) ); } return $old; } } fetcher = new UserFetcher(); } /** * Lists all metadata associated with a user. * * ## OPTIONS * * * : The user login, user email, or user ID of the user to get metadata for. * * [--keys=] * : Limit output to metadata of specific keys. * * [--fields=] * : Limit the output to specific row fields. Defaults to id,meta_key,meta_value. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * [--orderby=] * : Set orderby which field. * --- * default: id * options: * - id * - meta_key * - meta_value * --- * * [--order=] * : Set ascending or descending order. * --- * default: asc * options: * - asc * - desc * --- * * [--unserialize] * : Unserialize meta_value output. * * ## EXAMPLES * * # List user meta * $ wp user meta list 123 --keys=nickname,description,wp_capabilities * +---------+-----------------+--------------------------------+ * | user_id | meta_key | meta_value | * +---------+-----------------+--------------------------------+ * | 123 | nickname | supervisor | * | 123 | description | Mary is a WordPress developer. | * | 123 | wp_capabilities | {"administrator":true} | * +---------+-----------------+--------------------------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $args = $this->replace_login_with_user_id( $args ); parent::list_( $args, $assoc_args ); } /** * Gets meta field value. * * ## OPTIONS * * * : The user login, user email, or user ID of the user to get metadata for. * * * : The metadata key. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * # Get user meta * $ wp user meta get 123 bio * Mary is an WordPress developer. */ public function get( $args, $assoc_args ) { $args = $this->replace_login_with_user_id( $args ); parent::get( $args, $assoc_args ); } /** * Deletes a meta field. * * ## OPTIONS * * * : The user login, user email, or user ID of the user to delete metadata from. * * * : The metadata key. * * [] * : The value to delete. If omitted, all rows with key will deleted. * * ## EXAMPLES * * # Delete user meta * $ wp user meta delete 123 bio * Success: Deleted custom field. */ public function delete( $args, $assoc_args ) { $args = $this->replace_login_with_user_id( $args ); parent::delete( $args, $assoc_args ); } /** * Adds a meta field. * * ## OPTIONS * * * : The user login, user email, or user ID of the user to add metadata for. * * * : The metadata key. * * * : The new metadata value. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * ## EXAMPLES * * # Add user meta * $ wp user meta add 123 bio "Mary is an WordPress developer." * Success: Added custom field. */ public function add( $args, $assoc_args ) { $args = $this->replace_login_with_user_id( $args ); parent::add( $args, $assoc_args ); } /** * Updates a meta field. * * ## OPTIONS * * * : The user login, user email, or user ID of the user to update metadata for. * * * : The metadata key. * * * : The new metadata value. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * ## EXAMPLES * * # Update user meta * $ wp user meta update 123 bio "Mary is an awesome WordPress developer." * Success: Updated custom field 'bio'. * * @alias set */ public function update( $args, $assoc_args ) { $args = $this->replace_login_with_user_id( $args ); parent::update( $args, $assoc_args ); } /** * Wrapper method for add_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param bool $unique Optional, default is false. Whether the * specified metadata key should be unique for the * object. If true, and the object already has a * value for the specified metadata key, no change * will be made. * * @return int|false The meta ID on success, false on failure. */ protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { return add_user_meta( $object_id, $meta_key, $meta_value, $unique ); } /** * Wrapper method for update_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param mixed $prev_value Optional. If specified, only update existing * metadata entries with the specified value. * Otherwise, update all entries. * * @return int|bool Meta ID if the key didn't exist, true on successful * update, false on failure. */ protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { return update_user_meta( $object_id, $meta_key, $meta_value, $prev_value ); } /** * Wrapper method for get_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Metadata key. If not specified, * retrieve all metadata for the specified object. * @param bool $single Optional, default is false. If true, return only * the first value of the specified meta_key. This * parameter has no effect if meta_key is not * specified. * * @return mixed Single metadata value, or array of values. */ protected function get_metadata( $object_id, $meta_key = '', $single = false ) { return get_user_meta( $object_id, $meta_key, $single ); } /** * Wrapper method for delete_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object metadata is for * @param string $meta_key Metadata key * @param mixed $meta_value Optional. Metadata value. Must be serializable * if non-scalar. If specified, only delete * metadata entries with this value. Otherwise, * delete all entries with the specified meta_key. * Pass `null, `false`, or an empty string to skip * this check. For backward compatibility, it is * not possible to pass an empty string to delete * those entries with an empty string for a value. * * @return bool True on successful delete, false on failure. */ protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { return delete_user_meta( $object_id, $meta_key, $meta_value ); } /** * Replaces user_login value with user ID * user meta is a special case that also supports user_login * * @param array * @return array */ private function replace_login_with_user_id( $args ) { $user = $this->fetcher->get_check( $args[0] ); $args[0] = $user->ID; return $args; } } ] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * - ids * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each location: * * * name * * description * * ## EXAMPLES * * $ wp menu location list * +----------+-------------------+ * | location | description | * +----------+-------------------+ * | primary | Primary Menu | * | social | Social Links Menu | * +----------+-------------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $locations = get_registered_nav_menus(); $location_objs = []; foreach ( $locations as $location => $description ) { $location_obj = new stdClass(); $location_obj->location = $location; $location_obj->description = $description; $location_objs[] = $location_obj; } $formatter = new Formatter( $assoc_args, [ 'location', 'description' ] ); if ( 'ids' === $formatter->format ) { $ids = array_map( function( $o ) { return $o->location; }, $location_objs ); $formatter->display_items( $ids ); } else { $formatter->display_items( $location_objs ); } } /** * Assigns a location to a menu. * * ## OPTIONS * * * : The name, slug, or term ID for the menu. * * * : Location's slug. * * ## EXAMPLES * * $ wp menu location assign primary-menu primary * Success: Assigned location primary to menu primary-menu. * * @subcommand assign */ public function assign( $args, $assoc_args ) { list( $menu, $location ) = $args; $menu_obj = wp_get_nav_menu_object( $menu ); if ( ! $menu_obj ) { WP_CLI::error( "Invalid menu {$menu}." ); } $locations = get_registered_nav_menus(); if ( ! array_key_exists( $location, $locations ) ) { WP_CLI::error( "Invalid location {$location}." ); } $locations = get_nav_menu_locations(); $locations[ $location ] = $menu_obj->term_id; set_theme_mod( 'nav_menu_locations', $locations ); WP_CLI::success( "Assigned location {$location} to menu {$menu}." ); } /** * Removes a location from a menu. * * ## OPTIONS * * * : The name, slug, or term ID for the menu. * * * : Location's slug. * * ## EXAMPLES * * $ wp menu location remove primary-menu primary * Success: Removed location from menu. * * @subcommand remove */ public function remove( $args, $assoc_args ) { list( $menu, $location ) = $args; $menu = wp_get_nav_menu_object( $menu ); if ( ! $menu || is_wp_error( $menu ) ) { WP_CLI::error( 'Invalid menu.' ); } $locations = get_nav_menu_locations(); if ( Utils\get_flag_value( $locations, $location ) !== $menu->term_id ) { WP_CLI::error( "Menu isn't assigned to location." ); } $locations[ $location ] = 0; set_theme_mod( 'nav_menu_locations', $locations ); WP_CLI::success( 'Removed location from menu.' ); } } * : Key for the site option. * * [--format=] * : Get value in a particular format. * --- * default: var_export * options: * - var_export * - json * - yaml * --- * * ## EXAMPLES * * # Get site upload filetypes * $ wp site option get upload_filetypes * jpg jpeg png gif mov avi mpg */ public function get( $args, $assoc_args ) { list( $key ) = $args; $value = get_site_option( $key ); if ( false === $value ) { WP_CLI::halt( 1 ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Adds a site option. * * ## OPTIONS * * * : The name of the site option to add. * * [] * : The value of the site option to add. If ommited, the value is read from STDIN. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * ## EXAMPLES * * # Create a site option by reading a JSON file * $ wp site option add my_option --format=json < config.json * Success: Added 'my_option' site option. */ public function add( $args, $assoc_args ) { $key = $args[0]; $value = WP_CLI::get_value_from_arg_or_stdin( $args, 1 ); $value = WP_CLI::read_value( $value, $assoc_args ); if ( ! add_site_option( $key, $value ) ) { WP_CLI::error( "Could not add site option '{$key}'. Does it already exist?" ); } else { WP_CLI::success( "Added '{$key}' site option." ); } } /** * Lists site options. * * ## OPTIONS * * [--search=] * : Use wildcards ( * and ? ) to match option name. * * [--site_id=] * : Limit options to those of a particular site id. * * [--field=] * : Prints the value of a single field. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : The serialization format for the value. total_bytes displays the total size of matching options in bytes. * --- * default: table * options: * - table * - json * - csv * - count * - yaml * - total_bytes * --- * * ## AVAILABLE FIELDS * * This field will be displayed by default for each matching option: * * * meta_key * * meta_value * * These fields are optionally available: * * * meta_id * * site_id * * size_bytes * * ## EXAMPLES * * # List all site options begining with "i2f_" * $ wp site option list --search="i2f_*" * +-------------+--------------+ * | meta_key | meta_value | * +-------------+--------------+ * | i2f_version | 0.1.0 | * +-------------+--------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wpdb; $pattern = '%'; $fields = [ 'meta_key', 'meta_value' ]; $size_query = ',LENGTH(meta_value) AS `size_bytes`'; if ( isset( $assoc_args['search'] ) ) { $pattern = self::esc_like( $assoc_args['search'] ); // substitute wildcards $pattern = str_replace( '*', '%', $pattern ); $pattern = str_replace( '?', '_', $pattern ); } if ( isset( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); } if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'total_bytes' ) { $fields = [ 'size_bytes' ]; $size_query = ',SUM(LENGTH(meta_value)) AS `size_bytes`'; } $query = $wpdb->prepare( 'SELECT `meta_id`, `site_id`, `meta_key`,`meta_value`' . $size_query // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Hard-coded partial query without user input. . " FROM `$wpdb->sitemeta` WHERE `meta_key` LIKE %s", $pattern ); $site_id = Utils\get_flag_value( $assoc_args, 'site_id' ); if ( $site_id ) { $query .= $wpdb->prepare( ' AND site_id=%d', $site_id ); } // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $query is already prepared above. $results = $wpdb->get_results( $query ); if ( Utils\get_flag_value( $assoc_args, 'format' ) === 'total_bytes' ) { WP_CLI::line( $results[0]->size_bytes ); } else { $formatter = new Formatter( $assoc_args, $fields ); $formatter->display_items( $results ); } } /** * Updates a site option. * * ## OPTIONS * * * : The name of the site option to update. * * [] * : The new value. If ommited, the value is read from STDIN. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * ## EXAMPLES * * # Update a site option by reading from a file * $ wp site option update my_option < value.txt * Success: Updated 'my_option' site option. * * @alias set */ public function update( $args, $assoc_args ) { $key = $args[0]; $value = WP_CLI::get_value_from_arg_or_stdin( $args, 1 ); $value = WP_CLI::read_value( $value, $assoc_args ); $value = sanitize_option( $key, $value ); $old_value = sanitize_option( $key, get_site_option( $key ) ); if ( $value === $old_value ) { WP_CLI::success( "Value passed for '{$key}' site option is unchanged." ); } else { if ( update_site_option( $key, $value ) ) { WP_CLI::success( "Updated '{$key}' site option." ); } else { WP_CLI::error( "Could not update site option '{$key}'." ); } } } /** * Deletes a site option. * * ## OPTIONS * * * : Key for the site option. * * ## EXAMPLES * * $ wp site option delete my_option * Success: Deleted 'my_option' site option. */ public function delete( $args ) { list( $key ) = $args; if ( ! delete_site_option( $key ) ) { WP_CLI::error( "Could not delete '{$key}' site option. Does it exist?" ); } else { WP_CLI::success( "Deleted '{$key}' site option." ); } } /** * Gets a nested value from an option. * * ## OPTIONS * * * : The option name. * * ... * : The name(s) of the keys within the value to locate the value to pluck. * * [--format=] * : The output format of the value. * --- * default: plaintext * options: * - plaintext * - json * - yaml */ public function pluck( $args, $assoc_args ) { list( $key ) = $args; $value = get_site_option( $key ); if ( false === $value ) { WP_CLI::halt( 1 ); } $key_path = array_map( function( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 1 ) ); $traverser = new RecursiveDataStructureTraverser( $value ); try { $value = $traverser->get( $key_path ); } catch ( Exception $exception ) { die( 1 ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Updates a nested value in an option. * * ## OPTIONS * * * : Patch action to perform. * --- * options: * - insert * - update * - delete * --- * * * : The option name. * * ... * : The name(s) of the keys within the value to locate the value to patch. * * [] * : The new value. If omitted, the value is read from STDIN. * * [--format=] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- */ public function patch( $args, $assoc_args ) { list( $action, $key ) = $args; $key_path = array_map( function( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 2 ) ); if ( 'delete' === $action ) { $patch_value = null; } else { $stdin_value = EntityUtils::has_stdin() ? trim( WP_CLI::get_value_from_arg_or_stdin( $args, -1 ) ) : null; $patch_value = ! empty( $stdin_value ) ? WP_CLI::read_value( $stdin_value, $assoc_args ) : WP_CLI::read_value( array_pop( $key_path ), $assoc_args ); } /* Need to make a copy of $current_value here as it is modified by reference */ $old_value = sanitize_option( $key, get_site_option( $key ) ); $current_value = $old_value; if ( is_object( $current_value ) ) { $old_value = clone $current_value; } $traverser = new RecursiveDataStructureTraverser( $current_value ); try { $traverser->$action( $key_path, $patch_value ); } catch ( Exception $exception ) { WP_CLI::error( $exception->getMessage() ); } $patched_value = sanitize_option( $key, $traverser->value() ); if ( $patched_value === $old_value ) { WP_CLI::success( "Value passed for '{$key}' site option is unchanged." ); } else { if ( update_site_option( $key, $patched_value ) ) { WP_CLI::success( "Updated '{$key}' site option." ); } else { WP_CLI::error( "Could not update site option '{$key}'." ); } } } private static function esc_like( $old ) { global $wpdb; // Remove notices in 4.0 and support backwards compatibility if ( method_exists( $wpdb, 'esc_like' ) ) { // 4.0 $old = $wpdb->esc_like( $old ); } else { // phpcs:ignore WordPress.WP.DeprecatedFunctions.like_escapeFound -- called in WordPress 3.9 or less. $old = like_escape( esc_sql( $old ) ); } return $old; } } ... * : List terms of one or more taxonomies * * [--=] * : Filter by one or more fields (see get_terms() $args parameter for a list of fields). * * [--field=] * : Prints the value of a single field for each term. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each term: * * * term_id * * term_taxonomy_id * * name * * slug * * description * * parent * * count * * These fields are optionally available: * * * url * * ## EXAMPLES * * # List post categories * $ wp term list category --format=csv * term_id,term_taxonomy_id,name,slug,description,parent,count * 2,2,aciform,aciform,,0,1 * 3,3,antiquarianism,antiquarianism,,0,1 * 4,4,arrangement,arrangement,,0,1 * 5,5,asmodeus,asmodeus,,0,1 * * # List post tags * $ wp term list post_tag --fields=name,slug * +-----------+-------------+ * | name | slug | * +-----------+-------------+ * | 8BIT | 8bit | * | alignment | alignment-2 | * | Articles | articles | * | aside | aside | * +-----------+-------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { foreach ( $args as $taxonomy ) { if ( ! taxonomy_exists( $taxonomy ) ) { WP_CLI::error( "Taxonomy {$taxonomy} doesn't exist." ); } } $formatter = $this->get_formatter( $assoc_args ); $defaults = [ 'hide_empty' => false, ]; $assoc_args = array_merge( $defaults, $assoc_args ); if ( ! empty( $assoc_args['term_id'] ) ) { $term = get_term_by( 'id', $assoc_args['term_id'], $args[0] ); $terms = [ $term ]; } elseif ( ! empty( $assoc_args['include'] ) && ! empty( $assoc_args['orderby'] ) && 'include' === $assoc_args['orderby'] && Utils\wp_version_compare( '4.7', '<' ) ) { $terms = []; $term_ids = explode( ',', $assoc_args['include'] ); foreach ( $term_ids as $term_id ) { $term = get_term_by( 'id', $term_id, $args[0] ); if ( $term && ! is_wp_error( $term ) ) { $terms[] = $term; } else { WP_CLI::warning( "Invalid term {$term_id}." ); } } } else { $terms = get_terms( $args, $assoc_args ); } $terms = array_map( function( $term ) { $term->count = (int) $term->count; $term->parent = (int) $term->parent; $term->url = get_term_link( $term ); return $term; }, $terms ); if ( 'ids' === $formatter->format ) { $terms = wp_list_pluck( $terms, 'term_id' ); echo implode( ' ', $terms ); } else { $formatter->display_items( $terms ); } } /** * Creates a new term. * * ## OPTIONS * * * : Taxonomy for the new term. * * * : A name for the new term. * * [--slug=] * : A unique slug for the new term. Defaults to sanitized version of name. * * [--description=] * : A description for the new term. * * [--parent=] * : A parent for the new term. * * [--porcelain] * : Output just the new term id. * * ## EXAMPLES * * # Create a new category "Apple" with a description. * $ wp term create category Apple --description="A type of fruit" * Success: Created category 199. */ public function create( $args, $assoc_args ) { list( $taxonomy, $term ) = $args; $defaults = [ 'slug' => sanitize_title( $term ), 'description' => '', 'parent' => 0, ]; $assoc_args = wp_parse_args( $assoc_args, $defaults ); $porcelain = Utils\get_flag_value( $assoc_args, 'porcelain' ); unset( $assoc_args['porcelain'] ); // Compatibility for < WP 4.0 if ( $assoc_args['parent'] > 0 && ! term_exists( (int) $assoc_args['parent'] ) ) { WP_CLI::error( 'Parent term does not exist.' ); } $assoc_args = wp_slash( $assoc_args ); $term = wp_slash( $term ); $result = wp_insert_term( $term, $taxonomy, $assoc_args ); if ( is_wp_error( $result ) ) { WP_CLI::error( $result->get_error_message() ); } else { if ( $porcelain ) { WP_CLI::line( $result['term_id'] ); } else { WP_CLI::success( "Created {$taxonomy} {$result['term_id']}." ); } } } /** * Gets details about a term. * * ## OPTIONS * * * : Taxonomy of the term to get * * * : ID or slug of the term to get * * [--by=] * : Explicitly handle the term value as a slug or id. * --- * default: id * options: * - slug * - id * --- * * [--field=] * : Instead of returning the whole term, returns the value of a single field. * * [--fields=] * : Limit the output to specific fields. Defaults to all fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * # Get details about a category with id 199. * $ wp term get category 199 --format=json * {"term_id":199,"name":"Apple","slug":"apple","term_group":0,"term_taxonomy_id":199,"taxonomy":"category","description":"A type of fruit","parent":0,"count":0,"filter":"raw"} * * # Get details about a category with slug apple. * $ wp term get category apple --by=slug --format=json * {"term_id":199,"name":"Apple","slug":"apple","term_group":0,"term_taxonomy_id":199,"taxonomy":"category","description":"A type of fruit","parent":0,"count":0,"filter":"raw"} */ public function get( $args, $assoc_args ) { list( $taxonomy, $term ) = $args; $term = get_term_by( Utils\get_flag_value( $assoc_args, 'by' ), $term, $taxonomy ); if ( ! $term ) { WP_CLI::error( "Term doesn't exist." ); } if ( empty( $assoc_args['fields'] ) ) { $term_array = get_object_vars( $term ); $assoc_args['fields'] = array_keys( $term_array ); } $term->count = (int) $term->count; $term->parent = (int) $term->parent; $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $term ); } /** * Updates an existing term. * * ## OPTIONS * * * : Taxonomy of the term to update. * * * : ID or slug for the term to update. * * [--by=] * : Explicitly handle the term value as a slug or id. * --- * default: id * options: * - slug * - id * --- * * [--name=] * : A new name for the term. * * [--slug=] * : A new slug for the term. * * [--description=] * : A new description for the term. * * [--parent=] * : A new parent for the term. * * ## EXAMPLES * * # Change category with id 15 to use the name "Apple" * $ wp term update category 15 --name=Apple * Success: Term updated. * * # Change category with slug apple to use the name "Apple" * $ wp term update category apple --by=slug --name=Apple * Success: Term updated. */ public function update( $args, $assoc_args ) { list( $taxonomy, $term ) = $args; $defaults = [ 'name' => null, 'slug' => null, 'description' => null, 'parent' => null, ]; $assoc_args = wp_parse_args( $assoc_args, $defaults ); foreach ( $assoc_args as $key => $value ) { if ( null === $value ) { unset( $assoc_args[ $key ] ); } } $assoc_args = wp_slash( $assoc_args ); $term = get_term_by( Utils\get_flag_value( $assoc_args, 'by' ), $term, $taxonomy ); if ( ! $term ) { WP_CLI::error( "Term doesn't exist." ); } // Update term. $result = wp_update_term( $term->term_id, $taxonomy, $assoc_args ); if ( is_wp_error( $result ) ) { WP_CLI::error( $result->get_error_message() ); } else { WP_CLI::success( 'Term updated.' ); } } /** * Deletes an existing term. * * Errors if the term doesn't exist, or there was a problem in deleting it. * * ## OPTIONS * * * : Taxonomy of the term to delete. * * ... * : One or more IDs or slugs of terms to delete. * * [--by=] * : Explicitly handle the term value as a slug or id. * --- * default: id * options: * - slug * - id * --- * * ## EXAMPLES * * # Delete post category by id * $ wp term delete category 15 * Deleted category 15. * Success: Deleted 1 of 1 terms. * * # Delete post category by slug * $ wp term delete category apple --by=slug * Deleted category 15. * Success: Deleted 1 of 1 terms. * * # Delete all post tags * $ wp term list post_tag --field=term_id | xargs wp term delete post_tag * Deleted post_tag 159. * Deleted post_tag 160. * Deleted post_tag 161. * Success: Deleted 3 of 3 terms. */ public function delete( $args, $assoc_args ) { $taxonomy = array_shift( $args ); $successes = 0; $errors = 0; foreach ( $args as $term_id ) { $term = $term_id; // Get term by specified argument otherwise get term by id. $field = Utils\get_flag_value( $assoc_args, 'by' ); if ( 'slug' === $field ) { // Get term by slug. $term = get_term_by( $field, $term, $taxonomy ); // If term not found, then show error message and skip the iteration. if ( ! $term ) { WP_CLI::warning( "{$taxonomy} {$term_id} doesn't exist." ); continue; } // Get the term id; $term_id = $term->term_id; } $result = wp_delete_term( $term_id, $taxonomy ); if ( is_wp_error( $result ) ) { WP_CLI::warning( $result ); $errors++; } elseif ( $result ) { WP_CLI::log( "Deleted {$taxonomy} {$term_id}." ); $successes++; } else { WP_CLI::warning( "{$taxonomy} {$term_id} doesn't exist." ); } } Utils\report_batch_operation_results( 'term', 'delete', count( $args ), $successes, $errors ); } /** * Generates some terms. * * Creates a specified number of new terms with dummy data. * * ## OPTIONS * * * : The taxonomy for the generated terms. * * [--count=] * : How many terms to generate? * --- * default: 100 * --- * * [--max_depth=] * : Generate child terms down to a certain depth. * --- * default: 1 * --- * * [--format=] * : Render output in a particular format. * --- * default: progress * options: * - progress * - ids * --- * * ## EXAMPLES * * # Generate post categories. * $ wp term generate category --count=10 * Generating terms 100% [=========] 0:02 / 0:02 * * # Add meta to every generated term. * $ wp term generate category --format=ids --count=3 | xargs -d ' ' -I % wp term meta add % foo bar * Success: Added custom field. * Success: Added custom field. * Success: Added custom field. */ public function generate( $args, $assoc_args ) { global $wpdb; list ( $taxonomy ) = $args; $defaults = [ 'count' => 100, 'max_depth' => 1, ]; $final_args = array_merge( $defaults, $assoc_args ); $count = $final_args['count']; $max_depth = $final_args['max_depth']; if ( ! taxonomy_exists( $taxonomy ) ) { WP_CLI::error( "'{$taxonomy}' is not a registered taxonomy." ); } $label = get_taxonomy( $taxonomy )->labels->singular_name; $slug = sanitize_title_with_dashes( $label ); $hierarchical = get_taxonomy( $taxonomy )->hierarchical; $format = Utils\get_flag_value( $assoc_args, 'format', 'progress' ); $notify = false; if ( 'progress' === $format ) { $notify = Utils\make_progress_bar( 'Generating terms', $count ); } $previous_term_id = 0; $current_parent = 0; $current_depth = 1; $max_id = (int) $wpdb->get_var( "SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} ORDER BY term_taxonomy_id DESC LIMIT 1" ); $suspend_cache_invalidation = wp_suspend_cache_invalidation( true ); $created = []; for ( $index = $max_id + 1; $index <= $max_id + $count; $index++ ) { if ( $hierarchical ) { if ( $previous_term_id && $this->maybe_make_child() && $current_depth < $max_depth ) { $current_parent = $previous_term_id; $current_depth++; } elseif ( $this->maybe_reset_depth() ) { $current_parent = 0; $current_depth = 1; } } $args = [ 'parent' => $current_parent, 'slug' => $slug . "-{$index}", ]; $name = "{$label} {$index}"; $term = wp_insert_term( $name, $taxonomy, $args ); if ( is_wp_error( $term ) ) { WP_CLI::warning( $term ); } else { $created[] = $term['term_id']; $previous_term_id = $term['term_id']; if ( 'ids' === $format ) { echo $term['term_id']; if ( $index < $max_id + $count ) { echo ' '; } } } if ( 'progress' === $format ) { $notify->tick(); } } wp_suspend_cache_invalidation( $suspend_cache_invalidation ); clean_term_cache( $created, $taxonomy ); if ( 'progress' === $format ) { $notify->finish(); } } /** * Recalculates number of posts assigned to each term. * * In instances where manual updates are made to the terms assigned to * posts in the database, the number of posts associated with a term * can become out-of-sync with the actual number of posts. * * This command runs wp_update_term_count() on the taxonomy's terms * to bring the count back to the correct value. * * ## OPTIONS * * ... * : One or more taxonomies to recalculate. * * ## EXAMPLES * * # Recount posts assigned to each categories and tags * $ wp term recount category post_tag * Success: Updated category term count. * Success: Updated post_tag term count. * * # Recount all listed taxonomies * $ wp taxonomy list --field=name | xargs wp term recount * Success: Updated category term count. * Success: Updated post_tag term count. * Success: Updated nav_menu term count. * Success: Updated link_category term count. * Success: Updated post_format term count. */ public function recount( $args ) { foreach ( $args as $taxonomy ) { if ( ! taxonomy_exists( $taxonomy ) ) { WP_CLI::warning( "Taxonomy {$taxonomy} does not exist." ); } else { $terms = get_terms( $taxonomy, [ 'hide_empty' => false ] ); $term_taxonomy_ids = wp_list_pluck( $terms, 'term_taxonomy_id' ); wp_update_term_count( $term_taxonomy_ids, $taxonomy ); WP_CLI::success( "Updated {$taxonomy} term count." ); } } } /** * Migrate a term of a taxonomy to another taxonomy. * * ## OPTIONS * * * : Slug or ID of the term to migrate. * * [--by=] * : Explicitly handle the term value as a slug or id. * --- * default: id * options: * - slug * - id * --- * * [--from=] * : Taxonomy slug of the term to migrate. * * [--to=] * : Taxonomy slug to migrate to. * * ## EXAMPLES * * # Migrate a category's term (video) to tag taxonomy. * $ wp term migrate 9190 --from=category --to=post_tag * Term '9190' migrated! * Old instance of term '9190' removed from its original taxonomy. * Success: Migrated the term '9190' from taxonomy 'category' to taxonomy 'post_tag' for 1 posts */ public function migrate( $args, $assoc_args ) { $term_reference = $args[0]; $original_taxonomy = Utils\get_flag_value( $assoc_args, 'from' ); $destination_taxonomy = Utils\get_flag_value( $assoc_args, 'to' ); $term = get_term_by( Utils\get_flag_value( $assoc_args, 'by' ), $term_reference, $original_taxonomy ); if ( ! $term ) { WP_CLI::error( "Taxonomy term '{$term_reference}' for taxonomy '{$original_taxonomy}' doesn't exist." ); } $original_taxonomy = get_taxonomy( $original_taxonomy ); $id = wp_insert_term( $term->name, $destination_taxonomy, [ 'slug' => $term->slug, 'parent' => 0, 'description' => $term->description, ] ); if ( is_wp_error( $id ) ) { WP_CLI::error( $id->get_error_message() ); } $post_ids = get_objects_in_term( $term->term_id, $original_taxonomy->name ); foreach ( $post_ids as $post_id ) { $type = get_post_type( $post_id ); if ( in_array( $type, $original_taxonomy->object_type, true ) ) { $term_taxonomy_id = wp_set_object_terms( $post_id, $id['term_id'], $destination_taxonomy, true ); if ( is_wp_error( $term_taxonomy_id ) ) { WP_CLI::error( "Failed to assign the term '{$term->slug}' to the post {$post_id}. Reason: " . $term_taxonomy_id->get_error_message() ); } WP_CLI::log( "Term '{$term->slug}' assigned to post {$post_id}." ); } clean_post_cache( $post_id ); } clean_term_cache( $term->term_id ); WP_CLI::log( "Term '{$term->slug}' migrated." ); $del = wp_delete_term( $term->term_id, $original_taxonomy->name ); if ( is_wp_error( $del ) ) { WP_CLI::error( "Failed to delete the term '{$term->slug}'. Reason: " . $del->get_error_message() ); } WP_CLI::log( "Old instance of term '{$term->slug}' removed from its original taxonomy." ); $post_count = count( $post_ids ); $post_plural = Utils\pluralize( 'post', $post_count ); WP_CLI::success( "Migrated the term '{$term->slug}' from taxonomy '{$original_taxonomy->name}' to taxonomy '{$destination_taxonomy}' for {$post_count} {$post_plural}." ); } private function maybe_make_child() { // 50% chance of making child term. return ( wp_rand( 1, 2 ) === 1 ); } private function maybe_reset_depth() { // 10% chance of reseting to root depth. return ( wp_rand( 1, 10 ) === 7 ); } private function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->fields, 'term' ); } } * : The name, slug, or term ID for the menu. * * [--fields=] * : Limit the output to specific object fields. * * [--format=] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - ids * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each menu item: * * * db_id * * type * * title * * link * * position * * These fields are optionally available: * * * menu_item_parent * * object_id * * object * * type * * type_label * * target * * attr_title * * description * * classes * * xfn * * ## EXAMPLES * * $ wp menu item list main-menu * +-------+-----------+-------------+---------------------------------+----------+ * | db_id | type | title | link | position | * +-------+-----------+-------------+---------------------------------+----------+ * | 5 | custom | Home | http://example.com | 1 | * | 6 | post_type | Sample Page | http://example.com/sample-page/ | 2 | * +-------+-----------+-------------+---------------------------------+----------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $items = wp_get_nav_menu_items( $args[0] ); if ( false === $items || is_wp_error( $items ) ) { WP_CLI::error( 'Invalid menu.' ); } // Correct position inconsistency and // protected `url` param in WP-CLI $items = array_map( function( $item ) { $item->position = $item->menu_order; $item->link = $item->url; return $item; }, $items ); if ( ! empty( $assoc_args['format'] ) && 'ids' === $assoc_args['format'] ) { $items = array_map( function( $item ) { return $item->db_id; }, $items ); } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $items ); } /** * Adds a post as a menu item. * * ## OPTIONS * * * : The name, slug, or term ID for the menu. * * * : Post ID to add to the menu. * * [--title=] * : Set a custom title for the menu item. * * [--link=<link>] * : Set a custom url for the menu item. * * [--description=<description>] * : Set a custom description for the menu item. * * [--attr-title=<attr-title>] * : Set a custom title attribute for the menu item. * * [--target=<target>] * : Set a custom link target for the menu item. * * [--classes=<classes>] * : Set a custom link classes for the menu item. * * [--position=<position>] * : Specify the position of this menu item. * * [--parent-id=<parent-id>] * : Make this menu item a child of another menu item. * * [--porcelain] * : Output just the new menu item id. * * ## EXAMPLES * * $ wp menu item add-post sidebar-menu 33 --title="Custom Test Post" * Success: Menu item added. * * @subcommand add-post */ public function add_post( $args, $assoc_args ) { $assoc_args['object-id'] = $args[1]; unset( $args[1] ); $post = get_post( $assoc_args['object-id'] ); if ( ! $post ) { WP_CLI::error( 'Invalid post.' ); } $assoc_args['object'] = $post->post_type; $this->add_or_update_item( 'add', 'post_type', $args, $assoc_args ); } /** * Adds a taxonomy term as a menu item. * * ## OPTIONS * * <menu> * : The name, slug, or term ID for the menu. * * <taxonomy> * : Taxonomy of the term to be added. * * <term-id> * : Term ID of the term to be added. * * [--title=<title>] * : Set a custom title for the menu item. * * [--link=<link>] * : Set a custom url for the menu item. * * [--description=<description>] * : Set a custom description for the menu item. * * [--attr-title=<attr-title>] * : Set a custom title attribute for the menu item. * * [--target=<target>] * : Set a custom link target for the menu item. * * [--classes=<classes>] * : Set a custom link classes for the menu item. * * [--position=<position>] * : Specify the position of this menu item. * * [--parent-id=<parent-id>] * : Make this menu item a child of another menu item. * * [--porcelain] * : Output just the new menu item id. * * ## EXAMPLES * * $ wp menu item add-term sidebar-menu post_tag 24 * Success: Menu item added. * * @subcommand add-term */ public function add_term( $args, $assoc_args ) { $assoc_args['object'] = $args[1]; unset( $args[1] ); $assoc_args['object-id'] = $args[2]; unset( $args[2] ); if ( ! get_term_by( 'id', $assoc_args['object-id'], $assoc_args['object'] ) ) { WP_CLI::error( 'Invalid term.' ); } $this->add_or_update_item( 'add', 'taxonomy', $args, $assoc_args ); } /** * Adds a custom menu item. * * ## OPTIONS * * <menu> * : The name, slug, or term ID for the menu. * * <title> * : Title for the link. * * <link> * : Target URL for the link. * * [--description=<description>] * : Set a custom description for the menu item. * * [--attr-title=<attr-title>] * : Set a custom title attribute for the menu item. * * [--target=<target>] * : Set a custom link target for the menu item. * * [--classes=<classes>] * : Set a custom link classes for the menu item. * * [--position=<position>] * : Specify the position of this menu item. * * [--parent-id=<parent-id>] * : Make this menu item a child of another menu item. * * [--porcelain] * : Output just the new menu item id. * * ## EXAMPLES * * $ wp menu item add-custom sidebar-menu Apple http://apple.com * Success: Menu item added. * * @subcommand add-custom */ public function add_custom( $args, $assoc_args ) { $assoc_args['title'] = $args[1]; unset( $args[1] ); $assoc_args['link'] = $args[2]; unset( $args[2] ); $this->add_or_update_item( 'add', 'custom', $args, $assoc_args ); } /** * Updates a menu item. * * ## OPTIONS * * <db-id> * : Database ID for the menu item. * * [--title=<title>] * : Set a custom title for the menu item. * * [--link=<link>] * : Set a custom url for the menu item. * * [--description=<description>] * : Set a custom description for the menu item. * * [--attr-title=<attr-title>] * : Set a custom title attribute for the menu item. * * [--target=<target>] * : Set a custom link target for the menu item. * * [--classes=<classes>] * : Set a custom link classes for the menu item. * * [--position=<position>] * : Specify the position of this menu item. * * [--parent-id=<parent-id>] * : Make this menu item a child of another menu item. * * ## EXAMPLES * * $ wp menu item update 45 --title=WordPress --link='http://wordpress.org' --target=_blank --position=2 * Success: Menu item updated. * * @subcommand update */ public function update( $args, $assoc_args ) { // Shuffle the position of these. $args[1] = $args[0]; $terms = get_the_terms( $args[1], 'nav_menu' ); if ( $terms && ! is_wp_error( $terms ) ) { $args[0] = (int) $terms[0]->term_id; } else { $args[0] = 0; } $type = get_post_meta( $args[1], '_menu_item_type', true ); $this->add_or_update_item( 'update', $type, $args, $assoc_args ); } /** * Deletes one or more items from a menu. * * ## OPTIONS * * <db-id>... * : Database ID for the menu item(s). * * ## EXAMPLES * * $ wp menu item delete 45 * Success: 1 menu item deleted. * * @subcommand delete */ public function delete( $args, $assoc_args ) { global $wpdb; $count = 0; $errors = 0; foreach ( $args as $arg ) { $parent_menu_id = (int) get_post_meta( $arg, '_menu_item_menu_item_parent', true ); $result = wp_delete_post( $arg, true ); if ( ! $result ) { WP_CLI::warning( "Couldn't delete menu item {$arg}." ); $errors++; } elseif ( $parent_menu_id ) { $children = $wpdb->get_results( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_menu_item_menu_item_parent' AND meta_value=%s", (int) $arg ) ); if ( $children ) { $children_query = $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_value = %d WHERE meta_key = '_menu_item_menu_item_parent' AND meta_value=%s", $parent_menu_id, (int) $arg ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $children_query is already prepared above. $wpdb->query( $children_query ); foreach ( $children as $child ) { clean_post_cache( $child ); } } } // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison -- Will increase count for non existent menu. if ( false != $result ) { $count++; } } Utils\report_batch_operation_results( 'menu item', 'delete', count( $args ), $count, $errors ); } /** * Worker method to create new items or update existing ones. */ private function add_or_update_item( $method, $type, $args, $assoc_args ) { $menu = $args[0]; $menu_item_db_id = Utils\get_flag_value( $args, 1, 0 ); $menu = wp_get_nav_menu_object( $menu ); if ( ! $menu || is_wp_error( $menu ) ) { WP_CLI::error( 'Invalid menu.' ); } // `url` is protected in WP-CLI, so we use `link` instead $assoc_args['url'] = Utils\get_flag_value( $assoc_args, 'link' ); // Need to persist the menu item data. See https://core.trac.wordpress.org/ticket/28138 if ( 'update' === $method ) { $menu_item_obj = get_post( $menu_item_db_id ); $menu_item_obj = wp_setup_nav_menu_item( $menu_item_obj ); // Correct the menu position if this was the first item. See https://core.trac.wordpress.org/ticket/28140 $position = ( 0 === $menu_item_obj->menu_order ) ? 1 : $menu_item_obj->menu_order; $default_args = [ 'position' => $position, 'title' => $menu_item_obj->title, 'url' => $menu_item_obj->url, 'description' => $menu_item_obj->description, 'object' => $menu_item_obj->object, 'object-id' => $menu_item_obj->object_id, 'parent-id' => $menu_item_obj->menu_item_parent, 'attr-title' => $menu_item_obj->attr_title, 'target' => $menu_item_obj->target, 'classes' => implode( ' ', $menu_item_obj->classes ), // stored in the database as array 'xfn' => $menu_item_obj->xfn, 'status' => $menu_item_obj->post_status, ]; } else { $default_args = [ 'position' => 0, 'title' => '', 'url' => '', 'description' => '', 'object' => '', 'object-id' => 0, 'parent-id' => 0, 'attr-title' => '', 'target' => '', 'classes' => '', 'xfn' => '', // Core oddly defaults to 'draft' for create, // and 'publish' for update // Easiest to always work with publish 'status' => 'publish', ]; } $menu_item_args = []; foreach ( $default_args as $key => $default_value ) { // wp_update_nav_menu_item() has a weird argument prefix $new_key = 'menu-item-' . $key; $menu_item_args[ $new_key ] = Utils\get_flag_value( $assoc_args, $key, $default_value ); } $menu_item_args['menu-item-type'] = $type; $result = wp_update_nav_menu_item( $menu->term_id, $menu_item_db_id, $menu_item_args ); if ( is_wp_error( $result ) ) { WP_CLI::error( $result->get_error_message() ); } elseif ( ! $result ) { if ( 'add' === $method ) { WP_CLI::error( "Couldn't add menu item." ); } elseif ( 'update' === $method ) { WP_CLI::error( "Couldn't update menu item." ); } } else { /** * Set the menu * * wp_update_nav_menu_item() *should* take care of this, but * depends on wp_insert_post()'s "tax_input" argument, which * is ignored if the user can't edit the taxonomy * * @see https://core.trac.wordpress.org/ticket/27113 */ if ( ! is_object_in_term( $result, 'nav_menu', (int) $menu->term_id ) ) { wp_set_object_terms( $result, [ (int) $menu->term_id ], 'nav_menu' ); } if ( 'add' === $method && ! empty( $assoc_args['porcelain'] ) ) { WP_CLI::line( $result ); } else { if ( 'add' === $method ) { WP_CLI::success( 'Menu item added.' ); } elseif ( 'update' === $method ) { WP_CLI::success( 'Menu item updated.' ); } } } } protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->obj_fields ); } } <?php use WP_CLI\Formatter; /** * Retrieves details on the site's registered post types. * * Get information on WordPress' built-in and the site's [custom post types](https://developer.wordpress.org/plugins/post-types/). * * ## EXAMPLES * * # Get details about a post type * $ wp post-type get page --fields=name,label,hierarchical --format=json * {"name":"page","label":"Pages","hierarchical":true} * * # List post types with 'post' capability type * $ wp post-type list --capability_type=post --fields=name,public * +---------------+--------+ * | name | public | * +---------------+--------+ * | post | 1 | * | attachment | 1 | * | revision | | * | nav_menu_item | | * +---------------+--------+ * * @package wp-cli */ class Post_Type_Command extends WP_CLI_Command { private $fields = array( 'name', 'label', 'description', 'hierarchical', 'public', 'capability_type', ); /** * Gets the post counts for each supplied post type. * * @param array $post_types Post types to fetch counts for. * @return array Associative array of post counts keyed by post type. */ protected function get_counts( $post_types ) { global $wpdb; if ( count( $post_types ) <= 0 ) { return []; } $query = $wpdb->prepare( "SELECT `post_type`, COUNT(*) AS `count` FROM $wpdb->posts WHERE `post_type` IN (" . implode( ',', array_fill( 0, count( $post_types ), '%s' ) ) . ') GROUP BY `post_type`', $post_types ); // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- $query is already prepared above. $counts = $wpdb->get_results( $query ); // Make sure there's a count for every item. $counts = array_merge( array_fill_keys( $post_types, 0 ), wp_list_pluck( $counts, 'count', 'post_type' ) ); return $counts; } /** * Lists registered post types. * * ## OPTIONS * * [--<field>=<value>] * : Filter by one or more fields (see get_post_types() first parameter for a list of available fields). * * [--field=<field>] * : Prints the value of a single field for each post type. * * [--fields=<fields>] * : Limit the output to specific post type fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each post type: * * * name * * label * * description * * hierarchical * * public * * capability_type * * These fields are optionally available: * * * count * * ## EXAMPLES * * # List registered post types * $ wp post-type list --format=csv * name,label,description,hierarchical,public,capability_type * post,Posts,,,1,post * page,Pages,,1,1,page * attachment,Media,,,1,post * revision,Revisions,,,,post * nav_menu_item,"Navigation Menu Items",,,,post * * # List post types with 'post' capability type * $ wp post-type list --capability_type=post --fields=name,public * +---------------+--------+ * | name | public | * +---------------+--------+ * | post | 1 | * | attachment | 1 | * | revision | | * | nav_menu_item | | * +---------------+--------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); $fields = $formatter->fields; $types = get_post_types( $assoc_args, 'objects' ); $counts = []; if ( count( $types ) > 0 && in_array( 'count', $fields, true ) ) { $counts = $this->get_counts( wp_list_pluck( $types, 'name' ) ); } $types = array_map( function( $type ) use ( $counts ) { $type->count = isset( $counts[ $type->name ] ) ? $counts[ $type->name ] : 0; return $type; }, $types ); $formatter->display_items( $types ); } /** * Gets details about a registered post type. * * ## OPTIONS * * <post-type> * : Post type slug * * [--field=<field>] * : Instead of returning the whole taxonomy, returns the value of a single field. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for the specified post type: * * * name * * label * * description * * hierarchical * * public * * capability_type * * labels * * cap * * supports * * These fields are optionally available: * * * count * * ## EXAMPLES * * # Get details about the 'page' post type. * $ wp post-type get page --fields=name,label,hierarchical --format=json * {"name":"page","label":"Pages","hierarchical":true} */ public function get( $args, $assoc_args ) { $post_type = get_post_type_object( $args[0] ); if ( ! $post_type ) { WP_CLI::error( "Post type {$args[0]} doesn't exist." ); } if ( empty( $assoc_args['fields'] ) ) { $default_fields = array_merge( $this->fields, array( 'labels', 'cap', 'supports', ) ); $assoc_args['fields'] = $default_fields; } $formatter = $this->get_formatter( $assoc_args ); $fields = $formatter->fields; $count = 0; if ( in_array( 'count', $fields, true ) ) { $count = $this->get_counts( [ $post_type->name ] ); $count = $count[ $post_type->name ]; } $data = array( 'name' => $post_type->name, 'label' => $post_type->label, 'description' => $post_type->description, 'hierarchical' => $post_type->hierarchical, 'public' => $post_type->public, 'capability_type' => $post_type->capability_type, 'labels' => $post_type->labels, 'cap' => $post_type->cap, 'supports' => get_all_post_type_supports( $post_type->name ), 'count' => $count, ); $formatter->display_item( $data ); } private function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->fields, 'post-type' ); } } <?php use WP_CLI\Fetchers\User as UserFetcher; use WP_CLI\Formatter; use WP_CLI\Utils; /** * Destroys and lists a user's sessions. * * ## EXAMPLES * * # List a user's sessions. * $ wp user session list admin@example.com --format=csv * login_time,expiration_time,ip,ua * "2016-01-01 12:34:56","2016-02-01 12:34:56",127.0.0.1,"Mozilla/5.0..." * * # Destroy the most recent session of the given user. * $ wp user session destroy admin * Success: Destroyed session. 3 sessions remaining. * * @package wp-cli */ class User_Session_Command extends WP_CLI_Command { private $fields = [ 'token', 'login_time', 'expiration_time', 'ip', 'ua', ]; public function __construct() { $this->fetcher = new UserFetcher(); } /** * Destroy a session for the given user. * * ## OPTIONS * * <user> * : User ID, user email, or user login. * * [<token>] * : The token of the session to destroy. Defaults to the most recently created session. * * [--all] * : Destroy all of the user's sessions. * * ## EXAMPLES * * # Destroy the most recent session of the given user. * $ wp user session destroy admin * Success: Destroyed session. 3 sessions remaining. * * # Destroy a specific session of the given user. * $ wp user session destroy admin e073ad8540a9c2... * Success: Destroyed session. 2 sessions remaining. * * # Destroy all the sessions of the given user. * $ wp user session destroy admin --all * Success: Destroyed all sessions. * * # Destroy all sessions for all users. * $ wp user list --field=ID | xargs -n 1 wp user session destroy --all * Success: Destroyed all sessions. * Success: Destroyed all sessions. */ public function destroy( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); $token = Utils\get_flag_value( $args, 1, null ); $all = Utils\get_flag_value( $assoc_args, 'all', false ); $manager = WP_Session_Tokens::get_instance( $user->ID ); if ( $token && $all ) { WP_CLI::error( 'The --all flag cannot be specified along with a session token.' ); } if ( $all ) { $manager->destroy_all(); WP_CLI::success( 'Destroyed all sessions.' ); return; } $sessions = $this->get_all_sessions( $manager ); if ( ! $token ) { if ( empty( $sessions ) ) { WP_CLI::success( 'No sessions to destroy.' ); } $last = end( $sessions ); $token = $last['token']; } if ( ! isset( $sessions[ $token ] ) ) { WP_CLI::error( 'Session not found.' ); } $this->destroy_session( $manager, $token ); $remaining = count( $manager->get_all() ); WP_CLI::success( "Destroyed session. {$remaining} remaining." ); } /** * List sessions for the given user. * * Note: The `token` field does not return the actual token, but a hash of * it. The real token is not persisted and can only be found in the * corresponding cookies on the client side. * * ## OPTIONS * * <user> * : User ID, user email, or user login. * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * - count * - ids * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each session: * * * token * * login_time * * expiration_time * * ip * * ua * * These fields are optionally available: * * * expiration * * login * * ## EXAMPLES * * # List a user's sessions. * $ wp user session list admin@example.com --format=csv * login_time,expiration_time,ip,ua * "2016-01-01 12:34:56","2016-02-01 12:34:56",127.0.0.1,"Mozilla/5.0..." * * @subcommand list */ public function list_( $args, $assoc_args ) { $user = $this->fetcher->get_check( $args[0] ); $formatter = $this->get_formatter( $assoc_args ); $manager = WP_Session_Tokens::get_instance( $user->ID ); $sessions = $this->get_all_sessions( $manager ); if ( 'ids' === $formatter->format ) { echo implode( ' ', array_keys( $sessions ) ); } else { $formatter->display_items( $sessions ); } } protected function get_all_sessions( WP_Session_Tokens $manager ) { // Make the private session data accessible to WP-CLI $get_sessions = new ReflectionMethod( $manager, 'get_sessions' ); $get_sessions->setAccessible( true ); $sessions = $get_sessions->invoke( $manager ); array_walk( $sessions, function( &$session, $token ) { $session['token'] = $token; $session['login_time'] = date( 'Y-m-d H:i:s', $session['login'] ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $session['expiration_time'] = date( 'Y-m-d H:i:s', $session['expiration'] ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } ); return $sessions; } protected function destroy_session( WP_Session_Tokens $manager, $token ) { $update_session = new ReflectionMethod( $manager, 'update_session' ); $update_session->setAccessible( true ); return $update_session->invoke( $manager, $token, null ); } private function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->fields ); } } <?php use WP_CLI\Formatter; use WP_CLI\Utils; /** * Lists, creates, assigns, and deletes the active theme's navigation menus. * * See the [Navigation Menus](https://developer.wordpress.org/themes/functionality/navigation-menus/) reference in the Theme Handbook. * * ## EXAMPLES * * # Create a new menu * $ wp menu create "My Menu" * Success: Created menu 200. * * # List existing menus * $ wp menu list * +---------+----------+----------+-----------+-------+ * | term_id | name | slug | locations | count | * +---------+----------+----------+-----------+-------+ * | 200 | My Menu | my-menu | | 0 | * | 177 | Top Menu | top-menu | primary | 7 | * +---------+----------+----------+-----------+-------+ * * # Create a new menu link item * $ wp menu item add-custom my-menu Apple http://apple.com --porcelain * 1922 * * # Assign the 'my-menu' menu to the 'primary' location * $ wp menu location assign my-menu primary * Success: Assigned location to menu. * * @package wp-cli */ class Menu_Command extends WP_CLI_Command { protected $obj_type = 'nav_menu'; protected $obj_fields = [ 'term_id', 'name', 'slug', 'locations', 'count', ]; /** * Creates a new menu. * * ## OPTIONS * * <menu-name> * : A descriptive name for the menu. * * [--porcelain] * : Output just the new menu id. * * ## EXAMPLES * * $ wp menu create "My Menu" * Success: Created menu 200. */ public function create( $args, $assoc_args ) { $menu_id = wp_create_nav_menu( $args[0] ); if ( is_wp_error( $menu_id ) ) { WP_CLI::error( $menu_id->get_error_message() ); } else { if ( Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $menu_id ); } else { WP_CLI::success( "Created menu {$menu_id}." ); } } } /** * Deletes one or more menus. * * ## OPTIONS * * <menu>... * : The name, slug, or term ID for the menu(s). * * ## EXAMPLES * * $ wp menu delete "My Menu" * Success: 1 menu deleted. */ public function delete( $args, $assoc_args ) { $count = 0; $errors = 0; foreach ( $args as $arg ) { $ret = wp_delete_nav_menu( $arg ); if ( ! $ret || is_wp_error( $ret ) ) { WP_CLI::warning( "Couldn't delete menu '{$arg}'." ); $errors++; } else { WP_CLI::log( "Deleted menu '{$arg}'." ); $count++; } } Utils\report_batch_operation_results( 'menu', 'delete', count( $args ), $count, $errors ); } /** * Gets a list of menus. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - ids * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each menu: * * * term_id * * name * * slug * * count * * These fields are optionally available: * * * term_group * * term_taxonomy_id * * taxonomy * * description * * parent * * locations * * ## EXAMPLES * * $ wp menu list * +---------+----------+----------+-----------+-------+ * | term_id | name | slug | locations | count | * +---------+----------+----------+-----------+-------+ * | 200 | My Menu | my-menu | | 0 | * | 177 | Top Menu | top-menu | primary | 7 | * +---------+----------+----------+-----------+-------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $menus = wp_get_nav_menus(); $menu_locations = get_nav_menu_locations(); foreach ( $menus as &$menu ) { $menu->locations = []; foreach ( $menu_locations as $location => $term_id ) { if ( $term_id === $menu->term_id ) { $menu->locations[] = $location; } } // Normalize the data for some output formats. if ( ! isset( $assoc_args['format'] ) || in_array( $assoc_args['format'], [ 'csv', 'table' ], true ) ) { $menu->locations = implode( ',', $menu->locations ); } } $formatter = $this->get_formatter( $assoc_args ); if ( 'ids' === $formatter->format ) { $ids = array_map( function( $o ) { return $o->term_id; }, $menus ); $formatter->display_items( $ids ); } else { $formatter->display_items( $menus ); } } protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->obj_fields, $this->obj_type ); } } <?php use WP_CLI\CommandWithTerms; use WP_CLI\Fetchers\Post as PostFetcher; /** * Adds, updates, removes, and lists post terms. * * ## EXAMPLES * * # Set post terms * $ wp post term set 123 test category * Success: Set terms. */ class Post_Term_Command extends CommandWithTerms { protected $obj_type = 'post'; public function __construct() { $this->fetcher = new PostFetcher(); } protected function get_object_type() { $post = $this->fetcher->get_check( $this->get_obj_id() ); return $post->post_type; } } <?php namespace WP_CLI\Entity; class Utils { /** * Check whether any input is passed to STDIN. * * @return bool */ public static function has_stdin() { $handle = fopen( 'php://stdin', 'r' ); $read = array( $handle ); $write = null; $except = null; $streams = stream_select( $read, $write, $except, 0 ); fclose( $handle ); return 1 === $streams; } } <?php namespace WP_CLI\Entity; use UnexpectedValueException; class RecursiveDataStructureTraverser { /** * @var mixed The data to traverse set by reference. */ protected $data; /** * @var null|string The key the data belongs to in the parent's data. */ protected $key; /** * @var null|static The parent instance of the traverser. */ protected $parent; /** * RecursiveDataStructureTraverser constructor. * * @param mixed $data The data to read/manipulate by reference. * @param string|int $key The key/property the data belongs to. * @param static $parent */ public function __construct( &$data, $key = null, $parent = null ) { $this->data =& $data; $this->key = $key; $this->parent = $parent; } /** * Get the nested value at the given key path. * * @param string|int|array $key_path * * @return static */ public function get( $key_path ) { return $this->traverse_to( (array) $key_path )->value(); } /** * Get the current data. * * @return mixed */ public function value() { return $this->data; } /** * Update a nested value at the given key path. * * @param string|int|array $key_path * @param mixed $value */ public function update( $key_path, $value ) { $this->traverse_to( (array) $key_path )->set_value( $value ); } /** * Update the current data with the given value. * * This will mutate the variable which was passed into the constructor * as the data is set and traversed by reference. * * @param mixed $value */ public function set_value( $value ) { $this->data = $value; } /** * Unset the value at the given key path. * * @param $key_path */ public function delete( $key_path ) { $this->traverse_to( (array) $key_path )->unset_on_parent(); } /** * Define a nested value while creating keys if they do not exist. * * @param array $key_path * @param mixed $value */ public function insert( $key_path, $value ) { try { $this->update( $key_path, $value ); } catch ( NonExistentKeyException $exception ) { $exception->get_traverser()->create_key(); $this->insert( $key_path, $value ); } } /** * Delete the key on the parent's data that references this data. */ public function unset_on_parent() { $this->parent->delete_by_key( $this->key ); } /** * Delete the given key from the data. * * @param $key */ public function delete_by_key( $key ) { if ( is_array( $this->data ) ) { unset( $this->data[ $key ] ); } else { unset( $this->data->$key ); } } /** * Get an instance of the traverser for the given hierarchical key. * * @param array $key_path Hierarchical key path within the current data to traverse to. * * @throws NonExistentKeyException * * @return static */ public function traverse_to( array $key_path ) { $current = array_shift( $key_path ); if ( null === $current ) { return $this; } if ( ! $this->exists( $current ) ) { $exception = new NonExistentKeyException( "No data exists for key \"{$current}\"" ); $exception->set_traverser( new static( $this->data, $current, $this->parent ) ); throw $exception; } foreach ( $this->data as $key => &$key_data ) { if ( $key === $current ) { $traverser = new static( $key_data, $key, $this ); return $traverser->traverse_to( $key_path ); } } } /** * Create the key on the current data. * * @throws UnexpectedValueException */ protected function create_key() { if ( is_array( $this->data ) ) { $this->data[ $this->key ] = null; } elseif ( is_object( $this->data ) ) { $this->data->{$this->key} = null; } else { $type = gettype( $this->data ); throw new UnexpectedValueException( "Cannot create key \"{$this->key}\" on data type {$type}" ); } } /** * Check if the given key exists on the current data. * * @param string $key * * @return bool */ public function exists( $key ) { return ( is_array( $this->data ) && array_key_exists( $key, $this->data ) ) || ( is_object( $this->data ) && property_exists( $this->data, $key ) ); } } <?php namespace WP_CLI\Entity; use OutOfBoundsException; class NonExistentKeyException extends OutOfBoundsException { /** @var RecursiveDataStructureTraverser */ protected $traverser; /** * @param RecursiveDataStructureTraverser $traverser */ public function set_traverser( $traverser ) { $this->traverser = $traverser; } /** * @return RecursiveDataStructureTraverser */ public function get_traverser() { return $this->traverser; } } <?php namespace WP_CLI; use Exception; use WP_CLI; use WP_CLI_Command; use WP_CLI\Entity\RecursiveDataStructureTraverser; use WP_CLI\Entity\Utils as EntityUtils; /** * Base class for WP-CLI commands that deal with metadata * * @package wp-cli */ abstract class CommandWithMeta extends WP_CLI_Command { protected $meta_type; /** * List all metadata associated with an object. * * ## OPTIONS * * <id> * : ID for the object. * * [--keys=<keys>] * : Limit output to metadata of specific keys. * * [--fields=<fields>] * : Limit the output to specific row fields. Defaults to id,meta_key,meta_value. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * - count * --- * * [--orderby=<fields>] * : Set orderby which field. * --- * default: id * options: * - id * - meta_key * - meta_value * --- * * [--order=<order>] * : Set ascending or descending order. * --- * default: asc * options: * - asc * - desc * --- * * [--unserialize] * : Unserialize meta_value output. * * @subcommand list */ public function list_( $args, $assoc_args ) { list( $object_id ) = $args; $keys = ! empty( $assoc_args['keys'] ) ? explode( ',', $assoc_args['keys'] ) : []; $object_id = $this->check_object_id( $object_id ); $metadata = $this->get_metadata( $object_id ); if ( ! $metadata ) { $metadata = []; } $items = []; foreach ( $metadata as $key => $values ) { // Skip if not requested if ( ! empty( $keys ) && ! in_array( $key, $keys, true ) ) { continue; } foreach ( $values as $item_value ) { if ( Utils\get_flag_value( $assoc_args, 'unserialize' ) ) { $item_value = maybe_unserialize( $item_value ); } $items[] = (object) [ "{$this->meta_type}_id" => $object_id, 'meta_key' => $key, 'meta_value' => $item_value, ]; } } $order = Utils\get_flag_value( $assoc_args, 'order' ); $orderby = Utils\get_flag_value( $assoc_args, 'orderby' ); if ( 'id' !== $orderby ) { usort( $items, function ( $a, $b ) use ( $orderby, $order ) { // Sort array. return 'asc' === $order ? $a->$orderby > $b->$orderby : $a->$orderby < $b->$orderby; } ); } elseif ( 'id' === $orderby && 'desc' === $order ) { // Sort by default descending. krsort( $items ); } if ( ! empty( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); } else { $fields = $this->get_fields(); } $formatter = new Formatter( $assoc_args, $fields, $this->meta_type ); $formatter->display_items( $items ); } /** * Get meta field value. * * ## OPTIONS * * <id> * : The ID of the object. * * <key> * : The name of the meta field to get. * * [--format=<format>] * : Get value in a particular format. * --- * default: var_export * options: * - var_export * - json * - yaml * --- */ public function get( $args, $assoc_args ) { list( $object_id, $meta_key ) = $args; $object_id = $this->check_object_id( $object_id ); $value = $this->get_metadata( $object_id, $meta_key, true ); if ( '' === $value ) { die( 1 ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Delete a meta field. * * ## OPTIONS * * <id> * : The ID of the object. * * [<key>] * : The name of the meta field to delete. * * [<value>] * : The value to delete. If omitted, all rows with key will deleted. * * [--all] * : Delete all meta for the object. */ public function delete( $args, $assoc_args ) { list( $object_id ) = $args; $meta_key = ! empty( $args[1] ) ? $args[1] : ''; $meta_value = ! empty( $args[2] ) ? $args[2] : ''; if ( empty( $meta_key ) && ! Utils\get_flag_value( $assoc_args, 'all' ) ) { WP_CLI::error( 'Please specify a meta key, or use the --all flag.' ); } $object_id = $this->check_object_id( $object_id ); if ( Utils\get_flag_value( $assoc_args, 'all' ) ) { $errors = false; foreach ( $this->get_metadata( $object_id ) as $meta_key => $values ) { $success = $this->delete_metadata( $object_id, $meta_key ); if ( $success ) { WP_CLI::log( "Deleted '{$meta_key}' custom field." ); } else { WP_CLI::warning( "Failed to delete '{$meta_key}' custom field." ); $errors = true; } } if ( $errors ) { WP_CLI::error( 'Failed to delete all custom fields.' ); } else { WP_CLI::success( 'Deleted all custom fields.' ); } } else { $success = $this->delete_metadata( $object_id, $meta_key, $meta_value ); if ( $success ) { WP_CLI::success( 'Deleted custom field.' ); } else { WP_CLI::error( 'Failed to delete custom field.' ); } } } /** * Add a meta field. * * ## OPTIONS * * <id> * : The ID of the object. * * <key> * : The name of the meta field to create. * * [<value>] * : The value of the meta field. If omitted, the value is read from STDIN. * * [--format=<format>] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- */ public function add( $args, $assoc_args ) { list( $object_id, $meta_key ) = $args; $meta_value = WP_CLI::get_value_from_arg_or_stdin( $args, 2 ); $meta_value = WP_CLI::read_value( $meta_value, $assoc_args ); $object_id = $this->check_object_id( $object_id ); $meta_value = wp_slash( $meta_value ); $success = $this->add_metadata( $object_id, $meta_key, $meta_value ); if ( $success ) { WP_CLI::success( 'Added custom field.' ); } else { WP_CLI::error( 'Failed to add custom field.' ); } } /** * Update a meta field. * * ## OPTIONS * * <id> * : The ID of the object. * * <key> * : The name of the meta field to update. * * [<value>] * : The new value. If omitted, the value is read from STDIN. * * [--format=<format>] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- * * @alias set */ public function update( $args, $assoc_args ) { list( $object_id, $meta_key ) = $args; $meta_value = WP_CLI::get_value_from_arg_or_stdin( $args, 2 ); $meta_value = WP_CLI::read_value( $meta_value, $assoc_args ); $object_id = $this->check_object_id( $object_id ); $meta_value = sanitize_meta( $meta_key, $meta_value, $this->meta_type ); $old_value = sanitize_meta( $meta_key, $this->get_metadata( $object_id, $meta_key, true ), $this->meta_type ); if ( $meta_value === $old_value ) { WP_CLI::success( "Value passed for custom field '{$meta_key}' is unchanged." ); } else { $meta_value = wp_slash( $meta_value ); $success = $this->update_metadata( $object_id, $meta_key, $meta_value ); if ( $success ) { WP_CLI::success( "Updated custom field '{$meta_key}'." ); } else { WP_CLI::error( "Failed to update custom field '{$meta_key}'." ); } } } /** * Get a nested value from a meta field. * * ## OPTIONS * * <id> * : The ID of the object. * * <key> * : The name of the meta field to get. * * <key-path>... * : The name(s) of the keys within the value to locate the value to pluck. * * [--format=<format>] * : The output format of the value. * --- * default: plaintext * options: * - plaintext * - json * - yaml */ public function pluck( $args, $assoc_args ) { list( $object_id, $meta_key ) = $args; $object_id = $this->check_object_id( $object_id ); $key_path = array_map( function ( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 2 ) ); $value = $this->get_metadata( $object_id, $meta_key, true ); $traverser = new RecursiveDataStructureTraverser( $value ); try { $value = $traverser->get( $key_path ); } catch ( Exception $exception ) { die( 1 ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Update a nested value for a meta field. * * ## OPTIONS * * <action> * : Patch action to perform. * --- * options: * - insert * - update * - delete * --- * * <id> * : The ID of the object. * * <key> * : The name of the meta field to update. * * <key-path>... * : The name(s) of the keys within the value to locate the value to patch. * * [<value>] * : The new value. If omitted, the value is read from STDIN. * * [--format=<format>] * : The serialization format for the value. * --- * default: plaintext * options: * - plaintext * - json * --- */ public function patch( $args, $assoc_args ) { list( $action, $object_id, $meta_key ) = $args; $object_id = $this->check_object_id( $object_id ); $key_path = array_map( function( $key ) { if ( is_numeric( $key ) && ( (string) intval( $key ) === $key ) ) { return (int) $key; } return $key; }, array_slice( $args, 3 ) ); if ( 'delete' === $action ) { $patch_value = null; } else { $stdin_value = EntityUtils::has_stdin() ? trim( WP_CLI::get_value_from_arg_or_stdin( $args, -1 ) ) : null; $patch_value = ! empty( $stdin_value ) ? WP_CLI::read_value( $stdin_value, $assoc_args ) : WP_CLI::read_value( array_pop( $key_path ), $assoc_args ); } /* Need to make a copy of $current_meta_value here as it is modified by reference */ $current_meta_value = sanitize_meta( $meta_key, $this->get_metadata( $object_id, $meta_key, true ), $this->meta_type ); $old_meta_value = $current_meta_value; if ( is_object( $current_meta_value ) ) { $old_meta_value = clone $current_meta_value; } $traverser = new RecursiveDataStructureTraverser( $current_meta_value ); try { $traverser->$action( $key_path, $patch_value ); } catch ( Exception $exception ) { WP_CLI::error( $exception->getMessage() ); } $patched_meta_value = sanitize_meta( $meta_key, $traverser->value(), $this->meta_type ); if ( $patched_meta_value === $old_meta_value ) { WP_CLI::success( "Value passed for custom field '{$meta_key}' is unchanged." ); } else { $slashed = wp_slash( $patched_meta_value ); $success = $this->update_metadata( $object_id, $meta_key, $slashed ); if ( $success ) { WP_CLI::success( "Updated custom field '{$meta_key}'." ); } else { WP_CLI::error( "Failed to update custom field '{$meta_key}'." ); } } } /** * Wrapper method for add_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param bool $unique Optional, default is false. Whether the * specified metadata key should be unique for the * object. If true, and the object already has a * value for the specified metadata key, no change * will be made. * * @return int|false The meta ID on success, false on failure. */ protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { return add_metadata( $this->meta_type, $object_id, $meta_key, $meta_value, $unique ); } /** * Wrapper method for update_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param mixed $prev_value Optional. If specified, only update existing * metadata entries with the specified value. * Otherwise, update all entries. * * @return int|bool Meta ID if the key didn't exist, true on successful * update, false on failure. */ protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { return update_metadata( $this->meta_type, $object_id, $meta_key, $meta_value, $prev_value ); } /** * Wrapper method for get_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Metadata key. If not specified, * retrieve all metadata for the specified object. * @param bool $single Optional, default is false. If true, return only * the first value of the specified meta_key. This * parameter has no effect if meta_key is not * specified. * * @return mixed Single metadata value, or array of values. */ protected function get_metadata( $object_id, $meta_key = '', $single = false ) { return get_metadata( $this->meta_type, $object_id, $meta_key, $single ); } /** * Wrapper method for delete_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object metadata is for * @param string $meta_key Metadata key * @param mixed $meta_value Optional. Metadata value. Must be serializable * if non-scalar. If specified, only delete * metadata entries with this value. Otherwise, * delete all entries with the specified meta_key. * Pass `null, `false`, or an empty string to skip * this check. For backward compatibility, it is * not possible to pass an empty string to delete * those entries with an empty string for a value. * * @return bool True on successful delete, false on failure. */ protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { return delete_metadata( $this->meta_type, $object_id, $meta_key, $meta_value, false ); } /** * Get the fields for this object's meta * * @return array */ private function get_fields() { return [ "{$this->meta_type}_id", 'meta_key', 'meta_value', ]; } /** * Check that the object ID exists * * @param int */ protected function check_object_id( $object_id ) { // Needs to be set in subclass return $object_id; } } <?php namespace WP_CLI; use WP_CLI; use WP_CLI_Command; use WP_CLI\Utils; /** * Base class for WP-CLI commands that deal with terms * * @package wp-cli */ abstract class CommandWithTerms extends WP_CLI_Command { /** * @var string $object_type WordPress' expected name for the object. */ protected $obj_type; /** * @var string $object_id WordPress' object id. */ protected $obj_id; /** * @var array $obj_fields Default fields to display for each object. */ protected $obj_fields = [ 'term_id', 'name', 'slug', 'taxonomy', ]; /** * List all terms associated with an object. * * <id> * : ID for the object. * * <taxonomy>... * : One or more taxonomies to list. * * [--field=<field>] * : Prints the value of a single field for each term. * * [--fields=<fields>] * : Limit the output to specific row fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * - count * - ids * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each term: * * * term_id * * name * * slug * * taxonomy * * These fields are optionally available: * * * term_taxonomy_id * * description * * term_group * * parent * * count * * @subcommand list */ public function list_( $args, $assoc_args ) { $defaults = [ 'format' => 'table', ]; $assoc_args = array_merge( $defaults, $assoc_args ); $object_id = array_shift( $args ); $taxonomy_names = $args; $taxonomy_args = []; $this->set_obj_id( $object_id ); foreach ( $taxonomy_names as $taxonomy ) { $this->taxonomy_exists( $taxonomy ); } if ( 'ids' === $assoc_args['format'] ) { $taxonomy_args['fields'] = 'ids'; } $items = wp_get_object_terms( $object_id, $taxonomy_names, $taxonomy_args ); $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $items ); } /** * Remove a term from an object. * * ## OPTIONS * * <id> * : The ID of the object. * * <taxonomy> * : The name of the term's taxonomy. * * [<term>...] * : The name of the term or terms to be removed from the object. * * [--by=<field>] * : Explicitly handle the term value as a slug or id. * --- * options: * - slug * - id * --- * * [--all] * : Remove all terms from the object. */ public function remove( $args, $assoc_args ) { $object_id = array_shift( $args ); $taxonomy = array_shift( $args ); $terms = $args; $this->set_obj_id( $object_id ); $this->taxonomy_exists( $taxonomy ); $field = Utils\get_flag_value( $assoc_args, 'by' ); if ( $field ) { $terms = $this->prepare_terms( $field, $terms, $taxonomy ); } if ( Utils\get_flag_value( $assoc_args, 'all' ) ) { // No need to specify terms while removing all terms. if ( $terms ) { WP_CLI::error( 'No need to specify terms while removing all terms.' ); } // Remove all set categories from post. $result = wp_delete_object_term_relationships( $object_id, $taxonomy ); $message = 'Removed all terms.'; if ( 'category' === $taxonomy ) { // Set default category to post. $default_category = (int) get_option( 'default_category' ); $default_category = ( ! empty( $default_category ) ) ? $default_category : 1; $default_category = wp_set_object_terms( $object_id, [ $default_category ], $taxonomy, true ); if ( is_wp_error( $default_category ) ) { WP_CLI::error( 'Failed to set default term.' ); } $message = 'Removed all terms and set default term.'; } if ( is_wp_error( $result ) ) { WP_CLI::error( 'Failed to remove all terms.' ); } WP_CLI::success( $message ); return; } // Abort if no terms are specified. if ( ! $terms ) { WP_CLI::error( 'Please specify one or more terms, or use --all.' ); } // Remove term from post. $result = wp_remove_object_terms( $object_id, $terms, $taxonomy ); $label = count( $terms ) > 1 ? 'terms' : 'term'; if ( is_wp_error( $result ) ) { WP_CLI::error( "Failed to remove {$label}." ); } WP_CLI::success( "Removed {$label}." ); } /** * Add a term to an object. * * Append the term to the existing set of terms on the object. * * <id> * : The ID of the object. * * <taxonomy> * : The name of the taxonomy type to be added. * * <term>... * : The slug of the term or terms to be added. * * [--by=<field>] * : Explicitly handle the term value as a slug or id. * --- * options: * - slug * - id * --- */ public function add( $args, $assoc_args ) { $object_id = array_shift( $args ); $taxonomy = array_shift( $args ); $terms = $args; $this->set_obj_id( $object_id ); $this->taxonomy_exists( $taxonomy ); $field = Utils\get_flag_value( $assoc_args, 'by' ); if ( $field ) { $terms = $this->prepare_terms( $field, $terms, $taxonomy ); } $result = wp_set_object_terms( $object_id, $terms, $taxonomy, true ); $label = count( $terms ) > 1 ? 'terms' : 'term'; if ( ! is_wp_error( $result ) ) { WP_CLI::success( "Added {$label}." ); } else { WP_CLI::error( "Failed to add {$label}." ); } } /** * Set object terms. * * Replaces existing terms on the object. * * <id> * : The ID of the object. * * <taxonomy> * : The name of the taxonomy type to be updated. * * <term>... * : The slug of the term or terms to be updated. * * [--by=<field>] * : Explicitly handle the term value as a slug or id. * --- * options: * - slug * - id * --- */ public function set( $args, $assoc_args ) { $object_id = array_shift( $args ); $taxonomy = array_shift( $args ); $terms = $args; $this->set_obj_id( $object_id ); $this->taxonomy_exists( $taxonomy ); $field = Utils\get_flag_value( $assoc_args, 'by' ); if ( $field ) { $terms = $this->prepare_terms( $field, $terms, $taxonomy ); } $result = wp_set_object_terms( $object_id, $terms, $taxonomy, false ); $label = count( $terms ) > 1 ? 'terms' : 'term'; if ( ! is_wp_error( $result ) ) { WP_CLI::success( "Set {$label}." ); } else { WP_CLI::error( "Failed to set {$label}." ); } } /** * Check if taxonomy exists * * @param $taxonomy */ protected function taxonomy_exists( $taxonomy ) { $taxonomy_names = get_object_taxonomies( $this->get_object_type() ); if ( ! in_array( $taxonomy, $taxonomy_names, true ) ) { WP_CLI::error( "Invalid taxonomy {$taxonomy}." ); } } /** * Prepare terms if `--by=<field>` flag is used * * @param array $terms * @param string $field * @param string $taxonomy */ protected function prepare_terms( $field, $terms, $taxonomy ) { if ( 'id' === $field ) { $new_terms = []; foreach ( $terms as $term_id ) { $term = get_term_by( 'term_id', $term_id, $taxonomy ); if ( $term ) { $new_terms[] = $term->slug; } } $terms = $new_terms; } return $terms; } /** * Set obj_id Class variable * * @param string $obj_id */ protected function set_obj_id( $obj_id ) { $this->obj_id = $obj_id; } /** * Get obj_id Class variable * * @return string */ protected function get_obj_id() { return $this->obj_id; } /** * Get obj_type Class variable * * @return string $obj_type */ protected function get_object_type() { return $this->obj_type; } /** * Get Formatter object based on supplied parameters. * * @param array $assoc_args Parameters passed to command. Determines formatting. * * @return WP_CLI\Formatter */ protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->obj_fields, $this->obj_type ); } } <?php namespace WP_CLI; use WP_CLI; use WP_CLI_Command; use WP_CLI\Utils; use WP_Error; /** * Base class for WP-CLI commands that deal with database objects. * * @package wp-cli */ abstract class CommandWithDBObject extends WP_CLI_Command { /** * @var string $object_type WordPress' expected name for the object. */ protected $obj_type; /** * @var string $obj_id_key Key representing object's PK field in db. */ protected $obj_id_key = 'ID'; /** * @var array $obj_fields Default fields to display for each object. */ protected $obj_fields; /** * Create a given database object. * Exits with status. * * @param array $args Arguments passed to command. Generally unused. * @param array $assoc_args Parameters passed to command to be passed to callback. * @param string $callback Function used to create object. */ protected function _create( $args, $assoc_args, $callback ) { unset( $assoc_args[ $this->obj_id_key ] ); $obj_id = $callback( $assoc_args ); if ( is_wp_error( $obj_id ) ) { WP_CLI::error( $obj_id ); } if ( Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $obj_id ); } else { WP_CLI::success( "Created {$this->obj_type} {$obj_id}." ); } } /** * Update a given database object. * Exits with status. * * @param array $args Collection of one or more object ids to update. * @param array $assoc_args Fields => values to update on each object. * @param string $callback Function used to update object. */ protected function _update( $args, $assoc_args, $callback ) { $status = 0; if ( empty( $assoc_args ) ) { WP_CLI::error( 'Need some fields to update.' ); } if ( Utils\get_flag_value( $assoc_args, 'defer-term-counting' ) ) { wp_defer_term_counting( true ); } foreach ( $args as $obj_id ) { $params = array_merge( $assoc_args, [ $this->obj_id_key => $obj_id ] ); $status = $this->success_or_failure( $this->wp_error_to_resp( $callback( $params ), "Updated {$this->obj_type} {$obj_id}." ) ); } if ( Utils\get_flag_value( $assoc_args, 'defer-term-counting' ) ) { wp_defer_term_counting( false ); } exit( $status ); } /** * Transforms arguments with '__' from CSV into expected arrays * * @param array $assoc_args * @return array */ protected static function process_csv_arguments_to_arrays( $assoc_args ) { foreach ( $assoc_args as $k => $v ) { if ( false !== strpos( $k, '__' ) ) { $assoc_args[ $k ] = explode( ',', $v ); } } return $assoc_args; } /** * Delete a given database object. * Exits with status. * * @param array $args Collection of one or more object ids to delete. * @param array $assoc_args Any arguments needed for the callback function. * @param callable $callback Function used to delete object. */ protected function _delete( $args, $assoc_args, $callback ) { $status = 0; if ( Utils\get_flag_value( $assoc_args, 'defer-term-counting' ) ) { wp_defer_term_counting( true ); } foreach ( $args as $obj_id ) { $result = $callback( $obj_id, $assoc_args ); $status = $this->success_or_failure( $result ); } if ( Utils\get_flag_value( $assoc_args, 'defer-term-counting' ) ) { wp_defer_term_counting( false ); } exit( $status ); } /** * Format callback response to consistent format. * * @param WP_Error|true $response Response from CRUD callback. * @param string $success_msg * @return array */ protected function wp_error_to_resp( $response, $success_msg ) { return is_wp_error( $response ) ? [ 'error', $response->get_error_message() ] : [ 'success', $success_msg ]; } /** * Display success or warning based on response; return proper exit code. * * @param array $response Formatted from a CRUD callback. * @return int $status */ protected function success_or_failure( $response ) { list( $type, $msg ) = $response; if ( 'success' === $type ) { WP_CLI::success( $msg ); $status = 0; } else { WP_CLI::warning( $msg ); $status = 1; } return $status; } /** * Get Formatter object based on supplied parameters. * * @param array $assoc_args Parameters passed to command. Determines formatting. * @return Formatter */ protected function get_formatter( &$assoc_args ) { if ( ! empty( $assoc_args['fields'] ) ) { if ( is_string( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); } else { $fields = $assoc_args['fields']; } } else { $fields = $this->obj_fields; } return new Formatter( $assoc_args, $fields, $this->obj_type ); } /** * Given a callback, display the URL for one or more objects. * * @param array $args One or more object references. * @param string $callback Function to get URL for the object. */ protected function _url( $args, $callback ) { foreach ( $args as $obj_id ) { $object = $this->fetcher->get_check( $obj_id ); WP_CLI::line( $callback( $object->{$this->obj_id_key} ) ); } } } <?php use WP_CLI\CommandWithMeta; use WP_CLI\Fetchers\Site as SiteFetcher; /** * Adds, updates, deletes, and lists site custom fields. * * ## EXAMPLES * * # Set site meta * $ wp site meta set 123 bio "Mary is a WordPress developer." * Success: Updated custom field 'bio'. * * # Get site meta * $ wp site meta get 123 bio * Mary is a WordPress developer. * * # Update site meta * $ wp site meta update 123 bio "Mary is an awesome WordPress developer." * Success: Updated custom field 'bio'. * * # Delete site meta * $ wp site meta delete 123 bio * Success: Deleted custom field. */ class Site_Meta_Command extends CommandWithMeta { protected $meta_type = 'blog'; /** * Check that the site ID exists * * @param int */ protected function check_object_id( $object_id ) { $fetcher = new SiteFetcher(); $site = $fetcher->get_check( $object_id ); return $site->blog_id; } /** * Wrapper method for add_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param bool $unique Optional, default is false. Whether the * specified metadata key should be unique for the * object. If true, and the object already has a * value for the specified metadata key, no change * will be made. * * @return int|false The meta ID on success, false on failure. */ protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { return add_site_meta( $object_id, $meta_key, $meta_value, $unique ); } /** * Wrapper method for update_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param mixed $prev_value Optional. If specified, only update existing * metadata entries with the specified value. * Otherwise, update all entries. * * @return int|bool Meta ID if the key didn't exist, true on successful * update, false on failure. */ protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { return update_site_meta( $object_id, $meta_key, $meta_value, $prev_value ); } /** * Wrapper method for get_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Metadata key. If not specified, * retrieve all metadata for the specified object. * @param bool $single Optional, default is false. If true, return only * the first value of the specified meta_key. This * parameter has no effect if meta_key is not * specified. * * @return mixed Single metadata value, or array of values. */ protected function get_metadata( $object_id, $meta_key = '', $single = false ) { return get_site_meta( $object_id, $meta_key, $single ); } /** * Wrapper method for delete_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object metadata is for * @param string $meta_key Metadata key * @param mixed $meta_value Optional. Metadata value. Must be serializable * if non-scalar. If specified, only delete * metadata entries with this value. Otherwise, * delete all entries with the specified meta_key. * Pass `null, `false`, or an empty string to skip * this check. For backward compatibility, it is * not possible to pass an empty string to delete * those entries with an empty string for a value. * * @return bool True on successful delete, false on failure. */ protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { return delete_site_meta( $object_id, $meta_key, $meta_value ); } } <?php use WP_CLI\CommandWithMeta; /** * Gets, adds, updates, deletes, and lists network custom fields. * * ## EXAMPLES * * # Get a list of super-admins * $ wp network meta get 1 site_admins * array ( * 0 => 'supervisor', * ) */ class Network_Meta_Command extends CommandWithMeta { protected $meta_type = 'site'; } <?php use WP_CLI\CommandWithTerms; /** * Adds, updates, removes, and lists user terms. * * ## EXAMPLES * * # Set user terms * $ wp user term set 123 test category * Success: Set terms. */ class User_Term_Command extends CommandWithTerms { protected $obj_type = 'user'; } <?php use WP_CLI\CommandWithMeta; use WP_CLI\Fetchers\Post as PostFetcher; /** * Adds, updates, deletes, and lists post custom fields. * * ## EXAMPLES * * # Set post meta * $ wp post meta set 123 _wp_page_template about.php * Success: Updated custom field '_wp_page_template'. * * # Get post meta * $ wp post meta get 123 _wp_page_template * about.php * * # Update post meta * $ wp post meta update 123 _wp_page_template contact.php * Success: Updated custom field '_wp_page_template'. * * # Delete post meta * $ wp post meta delete 123 _wp_page_template * Success: Deleted custom field. */ class Post_Meta_Command extends CommandWithMeta { protected $meta_type = 'post'; /** * Check that the post ID exists * * @param int */ protected function check_object_id( $object_id ) { $fetcher = new PostFetcher(); $post = $fetcher->get_check( $object_id ); return $post->ID; } /** * Wrapper method for add_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param bool $unique Optional, default is false. Whether the * specified metadata key should be unique for the * object. If true, and the object already has a * value for the specified metadata key, no change * will be made. * * @return int|false The meta ID on success, false on failure. */ protected function add_metadata( $object_id, $meta_key, $meta_value, $unique = false ) { return add_post_meta( $object_id, $meta_key, $meta_value, $unique ); } /** * Wrapper method for update_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Metadata key to use. * @param mixed $meta_value Metadata value. Must be serializable if * non-scalar. * @param mixed $prev_value Optional. If specified, only update existing * metadata entries with the specified value. * Otherwise, update all entries. * * @return int|bool Meta ID if the key didn't exist, true on successful * update, false on failure. */ protected function update_metadata( $object_id, $meta_key, $meta_value, $prev_value = '' ) { return update_post_meta( $object_id, $meta_key, $meta_value, $prev_value ); } /** * Wrapper method for get_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object the metadata is for. * @param string $meta_key Optional. Metadata key. If not specified, * retrieve all metadata for the specified object. * @param bool $single Optional, default is false. If true, return only * the first value of the specified meta_key. This * parameter has no effect if meta_key is not * specified. * * @return mixed Single metadata value, or array of values. */ protected function get_metadata( $object_id, $meta_key = '', $single = false ) { return get_post_meta( $object_id, $meta_key, $single ); } /** * Wrapper method for delete_metadata that can be overridden in sub classes. * * @param int $object_id ID of the object metadata is for * @param string $meta_key Metadata key * @param mixed $meta_value Optional. Metadata value. Must be serializable * if non-scalar. If specified, only delete * metadata entries with this value. Otherwise, * delete all entries with the specified meta_key. * Pass `null, `false`, or an empty string to skip * this check. For backward compatibility, it is * not possible to pass an empty string to delete * those entries with an empty string for a value. * * @return bool True on successful delete, false on failure. */ protected function delete_metadata( $object_id, $meta_key, $meta_value = '' ) { return delete_post_meta( $object_id, $meta_key, $meta_value ); } } <?php use WP_CLI\CommandWithDBObject; use WP_CLI\Entity\Utils as EntityUtils; use WP_CLI\Fetchers\Post as PostFetcher; use WP_CLI\Fetchers\User as UserFetcher; use WP_CLI\Utils; /** * Manages posts, content, and meta. * * ## EXAMPLES * * # Create a new post. * $ wp post create --post_type=post --post_title='A sample post' * Success: Created post 123. * * # Update an existing post. * $ wp post update 123 --post_status=draft * Success: Updated post 123. * * # Delete an existing post. * $ wp post delete 123 * Success: Trashed post 123. * * @package wp-cli */ class Post_Command extends CommandWithDBObject { protected $obj_type = 'post'; protected $obj_fields = [ 'ID', 'post_title', 'post_name', 'post_date', 'post_status', ]; public function __construct() { $this->fetcher = new PostFetcher(); } /** * Creates a new post. * * ## OPTIONS * * [--post_author=<post_author>] * : The ID of the user who added the post. Default is the current user ID. * * [--post_date=<post_date>] * : The date of the post. Default is the current time. * * [--post_date_gmt=<post_date_gmt>] * : The date of the post in the GMT timezone. Default is the value of $post_date. * * [--post_content=<post_content>] * : The post content. Default empty. * * [--post_content_filtered=<post_content_filtered>] * : The filtered post content. Default empty. * * [--post_title=<post_title>] * : The post title. Default empty. * * [--post_excerpt=<post_excerpt>] * : The post excerpt. Default empty. * * [--post_status=<post_status>] * : The post status. Default 'draft'. * * [--post_type=<post_type>] * : The post type. Default 'post'. * * [--comment_status=<comment_status>] * : Whether the post can accept comments. Accepts 'open' or 'closed'. Default is the value of 'default_comment_status' option. * * [--ping_status=<ping_status>] * : Whether the post can accept pings. Accepts 'open' or 'closed'. Default is the value of 'default_ping_status' option. * * [--post_password=<post_password>] * : The password to access the post. Default empty. * * [--post_name=<post_name>] * : The post name. Default is the sanitized post title when creating a new post. * * [--from-post=<post_id>] * : Post id of a post to be duplicated. * * [--to_ping=<to_ping>] * : Space or carriage return-separated list of URLs to ping. Default empty. * * [--pinged=<pinged>] * : Space or carriage return-separated list of URLs that have been pinged. Default empty. * * [--post_modified=<post_modified>] * : The date when the post was last modified. Default is the current time. * * [--post_modified_gmt=<post_modified_gmt>] * : The date when the post was last modified in the GMT timezone. Default is the current time. * * [--post_parent=<post_parent>] * : Set this for the post it belongs to, if any. Default 0. * * [--menu_order=<menu_order>] * : The order the post should be displayed in. Default 0. * * [--post_mime_type=<post_mime_type>] * : The mime type of the post. Default empty. * * [--guid=<guid>] * : Global Unique ID for referencing the post. Default empty. * * [--post_category=<post_category>] * : Array of category names, slugs, or IDs. Defaults to value of the 'default_category' option. * * [--tags_input=<tags_input>] * : Array of tag names, slugs, or IDs. Default empty. * * [--tax_input=<tax_input>] * : Array of taxonomy terms keyed by their taxonomy name. Default empty. * * [--meta_input=<meta_input>] * : Array in JSON format of post meta values keyed by their post meta key. Default empty. * * [<file>] * : Read post content from <file>. If this value is present, the * `--post_content` argument will be ignored. * * Passing `-` as the filename will cause post content to * be read from STDIN. * * [--<field>=<value>] * : Associative args for the new post. See wp_insert_post(). * * [--edit] * : Immediately open system's editor to write or edit post content. * * If content is read from a file, from STDIN, or from the `--post_content` * argument, that text will be loaded into the editor. * * [--porcelain] * : Output just the new post id. * * * ## EXAMPLES * * # Create post and schedule for future * $ wp post create --post_type=page --post_title='A future post' --post_status=future --post_date='2020-12-01 07:00:00' * Success: Created post 1921. * * # Create post with content from given file * $ wp post create ./post-content.txt --post_category=201,345 --post_title='Post from file' * Success: Created post 1922. * * # Create a post with multiple meta values. * $ wp post create --post_title='A post' --post_content='Just a small post.' --meta_input='{"key1":"value1","key2":"value2"}' * Success: Created post 1923. * * # Create a duplicate post from existing posts. * $ wp post create --from-post=123 --post_title='Different Title' * Success: Created post 2350. */ public function create( $args, $assoc_args ) { if ( ! empty( $args[0] ) ) { $assoc_args['post_content'] = $this->read_from_file_or_stdin( $args[0] ); } if ( Utils\get_flag_value( $assoc_args, 'edit' ) ) { $input = Utils\get_flag_value( $assoc_args, 'post_content', '' ); $output = $this->_edit( $input, 'WP-CLI: New Post' ); if ( $output ) { $assoc_args['post_content'] = $output; } else { $assoc_args['post_content'] = $input; } } if ( isset( $assoc_args['post_category'] ) ) { $assoc_args['post_category'] = $this->get_category_ids( $assoc_args['post_category'] ); } if ( isset( $assoc_args['meta_input'] ) && Utils\wp_version_compare( '4.4', '<' ) ) { WP_CLI::warning( "The 'meta_input' field was only introduced in WordPress 4.4 so will have no effect." ); } $array_arguments = [ 'meta_input' ]; $assoc_args = Utils\parse_shell_arrays( $assoc_args, $array_arguments ); if ( isset( $assoc_args['from-post'] ) ) { $post = $this->fetcher->get_check( $assoc_args['from-post'] ); $post_arr = get_object_vars( $post ); $post_id = $post_arr['ID']; unset( $post_arr['post_date'] ); unset( $post_arr['post_date_gmt'] ); unset( $post_arr['guid'] ); unset( $post_arr['ID'] ); if ( empty( $assoc_args['meta_input'] ) ) { $assoc_args['meta_input'] = $this->get_metadata( $post_id ); } if ( empty( $assoc_args['post_category'] ) ) { $post_arr['post_category'] = $this->get_category( $post_id ); } if ( empty( $assoc_args['tags_input'] ) ) { $post_arr['tags_input'] = $this->get_tags( $post_id ); } $assoc_args = array_merge( $post_arr, $assoc_args ); } $assoc_args = wp_slash( $assoc_args ); parent::_create( $args, $assoc_args, function ( $params ) { return wp_insert_post( $params, true ); } ); } /** * Updates one or more existing posts. * * ## OPTIONS * * <id>... * : One or more IDs of posts to update. * * [--post_author=<post_author>] * : The ID of the user who added the post. Default is the current user ID. * * [--post_date=<post_date>] * : The date of the post. Default is the current time. * * [--post_date_gmt=<post_date_gmt>] * : The date of the post in the GMT timezone. Default is the value of $post_date. * * [--post_content=<post_content>] * : The post content. Default empty. * * [--post_content_filtered=<post_content_filtered>] * : The filtered post content. Default empty. * * [--post_title=<post_title>] * : The post title. Default empty. * * [--post_excerpt=<post_excerpt>] * : The post excerpt. Default empty. * * [--post_status=<post_status>] * : The post status. Default 'draft'. * * [--post_type=<post_type>] * : The post type. Default 'post'. * * [--comment_status=<comment_status>] * : Whether the post can accept comments. Accepts 'open' or 'closed'. Default is the value of 'default_comment_status' option. * * [--ping_status=<ping_status>] * : Whether the post can accept pings. Accepts 'open' or 'closed'. Default is the value of 'default_ping_status' option. * * [--post_password=<post_password>] * : The password to access the post. Default empty. * * [--post_name=<post_name>] * : The post name. Default is the sanitized post title when creating a new post. * * [--to_ping=<to_ping>] * : Space or carriage return-separated list of URLs to ping. Default empty. * * [--pinged=<pinged>] * : Space or carriage return-separated list of URLs that have been pinged. Default empty. * * [--post_modified=<post_modified>] * : The date when the post was last modified. Default is the current time. * * [--post_modified_gmt=<post_modified_gmt>] * : The date when the post was last modified in the GMT timezone. Default is the current time. * * [--post_parent=<post_parent>] * : Set this for the post it belongs to, if any. Default 0. * * [--menu_order=<menu_order>] * : The order the post should be displayed in. Default 0. * * [--post_mime_type=<post_mime_type>] * : The mime type of the post. Default empty. * * [--guid=<guid>] * : Global Unique ID for referencing the post. Default empty. * * [--post_category=<post_category>] * : Array of category names, slugs, or IDs. Defaults to value of the 'default_category' option. * * [--tags_input=<tags_input>] * : Array of tag names, slugs, or IDs. Default empty. * * [--tax_input=<tax_input>] * : Array of taxonomy terms keyed by their taxonomy name. Default empty. * * [--meta_input=<meta_input>] * : Array in JSON format of post meta values keyed by their post meta key. Default empty. * * [<file>] * : Read post content from <file>. If this value is present, the * `--post_content` argument will be ignored. * * Passing `-` as the filename will cause post content to * be read from STDIN. * * --<field>=<value> * : One or more fields to update. See wp_insert_post(). * * [--defer-term-counting] * : Recalculate term count in batch, for a performance boost. * * ## EXAMPLES * * $ wp post update 123 --post_name=something --post_status=draft * Success: Updated post 123. * * # Update a post with multiple meta values. * $ wp post update 123 --meta_input='{"key1":"value1","key2":"value2"}' * Success: Updated post 123. */ public function update( $args, $assoc_args ) { foreach ( $args as $key => $arg ) { if ( is_numeric( $arg ) ) { continue; } $assoc_args['post_content'] = $this->read_from_file_or_stdin( $arg ); unset( $args[ $key ] ); break; } if ( isset( $assoc_args['post_category'] ) ) { $assoc_args['post_category'] = $this->get_category_ids( $assoc_args['post_category'] ); } if ( isset( $assoc_args['meta_input'] ) && Utils\wp_version_compare( '4.4', '<' ) ) { WP_CLI::warning( "The 'meta_input' field was only introduced in WordPress 4.4 so will have no effect." ); } $array_arguments = [ 'meta_input' ]; $assoc_args = Utils\parse_shell_arrays( $assoc_args, $array_arguments ); $assoc_args = wp_slash( $assoc_args ); parent::_update( $args, $assoc_args, function ( $params ) { return wp_update_post( $params, true ); } ); } /** * Launches system editor to edit post content. * * ## OPTIONS * * <id> * : The ID of the post to edit. * * ## EXAMPLES * * # Launch system editor to edit post * $ wp post edit 123 */ public function edit( $args, $assoc_args ) { $post = $this->fetcher->get_check( $args[0] ); $result = $this->_edit( $post->post_content, "WP-CLI post {$post->ID}" ); if ( false === $result ) { WP_CLI::warning( 'No change made to post content.', 'Aborted' ); } else { $this->update( $args, [ 'post_content' => $result ] ); } } // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Whitelisting to provide backward compatibility to classes possibly extending this class. protected function _edit( $content, $title ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $content = apply_filters( 'the_editor_content', $content ); $output = Utils\launch_editor_for_input( $content, $title ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. return ( is_string( $output ) ) ? apply_filters( 'content_save_pre', $output ) : $output; } /** * Gets details about a post. * * ## OPTIONS * * <id> * : The ID of the post to get. * * [--field=<field>] * : Instead of returning the whole post, returns the value of a single field. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * # Save the post content to a file * $ wp post get 123 --field=content > file.txt */ public function get( $args, $assoc_args ) { $post = $this->fetcher->get_check( $args[0] ); $post_arr = get_object_vars( $post ); unset( $post_arr['filter'] ); if ( empty( $assoc_args['fields'] ) ) { $assoc_args['fields'] = array_keys( $post_arr ); } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $post_arr ); } /** * Deletes an existing post. * * ## OPTIONS * * <id>... * : One or more IDs of posts to delete. * * [--force] * : Skip the trash bin. * * [--defer-term-counting] * : Recalculate term count in batch, for a performance boost. * * ## EXAMPLES * * # Delete post skipping trash * $ wp post delete 123 --force * Success: Deleted post 123. * * # Delete all pages * $ wp post delete $(wp post list --post_type='page' --format=ids) * Success: Trashed post 1164. * Success: Trashed post 1186. * * # Delete all posts in the trash * $ wp post delete $(wp post list --post_status=trash --format=ids) * Success: Deleted post 1268. * Success: Deleted post 1294. */ public function delete( $args, $assoc_args ) { $defaults = [ 'force' => false ]; $assoc_args = array_merge( $defaults, $assoc_args ); parent::_delete( $args, $assoc_args, [ $this, 'delete_callback' ] ); } /** * Callback used to delete a post. * * @param $post_id * @param $assoc_args * @return array */ protected function delete_callback( $post_id, $assoc_args ) { $status = get_post_status( $post_id ); $post_type = get_post_type( $post_id ); if ( ! $assoc_args['force'] && ( 'post' !== $post_type && 'page' !== $post_type ) ) { return [ 'error', "Posts of type '{$post_type}' do not support being sent to trash.\n" . 'Please use the --force flag to skip trash and delete them permanently.', ]; } if ( ! wp_delete_post( $post_id, $assoc_args['force'] ) ) { return [ 'error', "Failed deleting post {$post_id}." ]; } $action = $assoc_args['force'] || 'trash' === $status || 'revision' === $post_type ? 'Deleted' : 'Trashed'; return [ 'success', "{$action} post {$post_id}." ]; } /** * Gets a list of posts. * * Display posts based on all arguments supported by * [WP_Query()](https://developer.wordpress.org/reference/classes/wp_query/). * * ## OPTIONS * * [--<field>=<value>] * : One or more args to pass to WP_Query. * * [--field=<field>] * : Prints the value of a single field for each post. * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each post: * * * ID * * post_title * * post_name * * post_date * * post_status * * These fields are optionally available: * * * post_author * * post_date_gmt * * post_content * * post_excerpt * * comment_status * * ping_status * * post_password * * to_ping * * pinged * * post_modified * * post_modified_gmt * * post_content_filtered * * post_parent * * guid * * menu_order * * post_type * * post_mime_type * * comment_count * * filter * * url * * ## EXAMPLES * * # List post * $ wp post list --field=ID * 568 * 829 * 1329 * 1695 * * # List posts in JSON * $ wp post list --post_type=post --posts_per_page=5 --format=json * [{"ID":1,"post_title":"Hello world!","post_name":"hello-world","post_date":"2015-06-20 09:00:10","post_status":"publish"},{"ID":1178,"post_title":"Markup: HTML Tags and Formatting","post_name":"markup-html-tags-and-formatting","post_date":"2013-01-11 20:22:19","post_status":"draft"}] * * # List all pages * $ wp post list --post_type=page --fields=post_title,post_status * +-------------+-------------+ * | post_title | post_status | * +-------------+-------------+ * | Sample Page | publish | * +-------------+-------------+ * * # List ids of all pages and posts * $ wp post list --post_type=page,post --format=ids * 15 25 34 37 198 * * # List given posts * $ wp post list --post__in=1,3 * +----+--------------+-------------+---------------------+-------------+ * | ID | post_title | post_name | post_date | post_status | * +----+--------------+-------------+---------------------+-------------+ * | 3 | Lorem Ipsum | lorem-ipsum | 2016-06-01 14:34:36 | publish | * | 1 | Hello world! | hello-world | 2016-06-01 14:31:12 | publish | * +----+--------------+-------------+---------------------+-------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); $defaults = [ 'posts_per_page' => -1, 'post_status' => 'any', ]; $query_args = array_merge( $defaults, $assoc_args ); $query_args = self::process_csv_arguments_to_arrays( $query_args ); if ( isset( $query_args['post_type'] ) && 'any' !== $query_args['post_type'] ) { $query_args['post_type'] = explode( ',', $query_args['post_type'] ); } if ( 'ids' === $formatter->format ) { $query_args['fields'] = 'ids'; $query = new WP_Query( $query_args ); echo implode( ' ', $query->posts ); } elseif ( 'count' === $formatter->format ) { $query_args['fields'] = 'ids'; $query = new WP_Query( $query_args ); $formatter->display_items( $query->posts ); } else { $query = new WP_Query( $query_args ); $posts = array_map( function( $post ) { $post->url = get_permalink( $post->ID ); return $post; }, $query->posts ); $formatter->display_items( $posts ); } } /** * Generates some posts. * * Creates a specified number of new posts with dummy data. * * ## OPTIONS * * [--count=<number>] * : How many posts to generate? * --- * default: 100 * --- * * [--post_type=<type>] * : The type of the generated posts. * --- * default: post * --- * * [--post_status=<status>] * : The status of the generated posts. * --- * default: publish * --- * * [--post_title=<post_title>] * : The post title. * --- * default: * --- * * [--post_author=<login>] * : The author of the generated posts. * --- * default: * --- * * [--post_date=<yyyy-mm-dd-hh-ii-ss>] * : The date of the generated posts. Default: current date * * [--post_date_gmt=<yyyy-mm-dd-hh-ii-ss>] * : The GMT date of the generated posts. Default: value of post_date (or current date if it's not set) * * [--post_content] * : If set, the command reads the post_content from STDIN. * * [--max_depth=<number>] * : For hierarchical post types, generate child posts down to a certain depth. * --- * default: 1 * --- * * [--format=<format>] * : Render output in a particular format. * --- * default: progress * options: * - progress * - ids * --- * * ## EXAMPLES * * # Generate posts. * $ wp post generate --count=10 --post_type=page --post_date=1999-01-04 * Generating posts 100% [================================================] 0:01 / 0:04 * * # Generate posts with fetched content. * $ curl -N http://loripsum.net/api/5 | wp post generate --post_content --count=10 * % Total % Received % Xferd Average Speed Time Time Time Current * Dload Upload Total Spent Left Speed * 100 2509 100 2509 0 0 616 0 0:00:04 0:00:04 --:--:-- 616 * Generating posts 100% [================================================] 0:01 / 0:04 * * # Add meta to every generated posts. * $ wp post generate --format=ids | xargs -d ' ' -I % wp post meta add % foo bar * Success: Added custom field. * Success: Added custom field. * Success: Added custom field. */ public function generate( $args, $assoc_args ) { global $wpdb; $defaults = [ 'count' => 100, 'max_depth' => 1, 'post_type' => 'post', 'post_status' => 'publish', 'post_author' => false, 'post_date' => false, 'post_date_gmt' => false, 'post_content' => '', 'post_title' => '', ]; $post_data = array_merge( $defaults, $assoc_args ); $call_time = current_time( 'mysql' ); if ( false === $post_data['post_date_gmt'] ) { $post_data['post_date_gmt'] = $post_data['post_date'] ?: $call_time; } if ( false === $post_data['post_date'] ) { $post_data['post_date'] = $post_data['post_date_gmt'] ?: $call_time; } if ( ! post_type_exists( $post_data['post_type'] ) ) { WP_CLI::error( "'{$post_data['post_type']}' is not a registered post type." ); } if ( $post_data['post_author'] ) { $user_fetcher = new UserFetcher(); $post_data['post_author'] = $user_fetcher->get_check( $post_data['post_author'] )->ID; } if ( Utils\get_flag_value( $assoc_args, 'post_content' ) ) { if ( ! EntityUtils::has_stdin() ) { WP_CLI::error( 'The parameter `post_content` reads from STDIN.' ); } $post_data['post_content'] = file_get_contents( 'php://stdin' ); } // Get the total number of posts. $total = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM $wpdb->posts WHERE post_type = %s", $post_data['post_type'] ) ); $label = ! empty( $post_data['post_title'] ) ? $post_data['post_title'] : get_post_type_object( $post_data['post_type'] )->labels->singular_name; $hierarchical = get_post_type_object( $post_data['post_type'] )->hierarchical; $limit = $post_data['count'] + $total; $format = Utils\get_flag_value( $assoc_args, 'format', 'progress' ); $notify = false; if ( 'progress' === $format ) { $notify = Utils\make_progress_bar( 'Generating posts', $post_data['count'] ); } $previous_post_id = 0; $current_depth = 1; $current_parent = 0; for ( $index = $total; $index < $limit; $index++ ) { if ( $hierarchical ) { if ( $this->maybe_make_child() && $current_depth < $post_data['max_depth'] ) { $current_parent = $previous_post_id; $current_depth++; } elseif ( $this->maybe_reset_depth() ) { $current_depth = 1; $current_parent = 0; } } $args = [ 'post_type' => $post_data['post_type'], 'post_title' => ( ! empty( $post_data['post_title'] ) && $index === $total ) ? $label : "{$label} {$index}", 'post_status' => $post_data['post_status'], 'post_author' => $post_data['post_author'], 'post_parent' => $current_parent, 'post_name' => ! empty( $post_data['post_title'] ) ? sanitize_title( $post_data['post_title'] . ( $index === $total ? '' : "-{$index}" ) ) : "post-{$index}", 'post_date' => $post_data['post_date'], 'post_date_gmt' => $post_data['post_date_gmt'], 'post_content' => $post_data['post_content'], ]; $post_id = wp_insert_post( $args, true ); if ( is_wp_error( $post_id ) ) { WP_CLI::warning( $post_id ); } else { $previous_post_id = $post_id; if ( 'ids' === $format ) { echo $post_id; if ( $index < $limit - 1 ) { echo ' '; } } } if ( 'progress' === $format ) { $notify->tick(); } } if ( 'progress' === $format ) { $notify->finish(); } } private function maybe_make_child() { // 50% chance of making child post. return ( wp_rand( 1, 2 ) === 1 ); } private function maybe_reset_depth() { // 10% chance of reseting to root depth, return ( wp_rand( 1, 10 ) === 7 ); } /** * Read post content from file or STDIN * * @param string $arg Supplied argument * @return string */ private function read_from_file_or_stdin( $arg ) { if ( '-' !== $arg ) { $readfile = $arg; if ( ! file_exists( $readfile ) || ! is_file( $readfile ) ) { WP_CLI::error( "Unable to read content from '{$readfile}'." ); } } else { $readfile = 'php://stdin'; } return file_get_contents( $readfile ); } /** * Resolves post_category arg into an array of category ids. * * @param string $arg Supplied argument. * @return array */ private function get_category_ids( $arg ) { $categories = explode( ',', $arg ); $category_ids = []; foreach ( $categories as $post_category ) { if ( trim( $post_category ) ) { if ( is_numeric( $post_category ) && (int) $post_category ) { $category_id = category_exists( (int) $post_category ); } else { $category_id = category_exists( $post_category ); } if ( ! $category_id ) { WP_CLI::error( "No such post category '{$post_category}'." ); } $category_ids[] = $category_id; } } // If no category ids found, return exploded array for compat with previous WP-CLI versions. return $category_ids ?: $categories; } /** * Get post metadata. * * @param $post_id ID of the post. * * @return array */ private function get_metadata( $post_id ) { $metadata = get_metadata( 'post', $post_id ); $items = []; foreach ( $metadata as $key => $values ) { foreach ( $values as $item_value ) { $item_value = maybe_unserialize( $item_value ); $items[ $key ] = $item_value; } } return $items; } /** * Get Categories of a post. * * @param $post_id ID of the post. * * @return array */ private function get_category( $post_id ) { $category_data = get_the_category( $post_id ); $category_arr = []; foreach ( $category_data as $cat ) { array_push( $category_arr, $cat->term_id ); } return $category_arr; } /** * Get Tags of a post. * * @param $post_id ID of the post. * * @return array */ private function get_tags( $post_id ) { $tag_data = get_the_tags( $post_id ); $tag_arr = []; if ( $tag_data ) { foreach ( $tag_data as $tag ) { array_push( $tag_arr, $tag->slug ); } } return $tag_arr; } /** * Verifies whether a post exists. * * Displays a success message if the post does exist. * * ## OPTIONS * * <id> * : The ID of the post to check. * * ## EXAMPLES * * # The post exists. * $ wp post exists 1 * Success: Post with ID 1337 exists. * $ echo $? * 0 * * # The post does not exist. * $ wp post exists 10000 * $ echo $? * 1 */ public function exists( $args ) { if ( $this->fetcher->get( $args[0] ) ) { WP_CLI::success( "Post with ID {$args[0]} exists." ); } else { WP_CLI::halt( 1 ); } } } <?php use WP_CLI\CommandWithDBObject; use WP_CLI\Fetchers\Site as SiteFetcher; use WP_CLI\Iterators\Query as QueryIterator; use WP_CLI\Iterators\Table as TableIterator; use WP_CLI\Utils; use WP_CLI\Formatter; /** * Creates, deletes, empties, moderates, and lists one or more sites on a multisite installation. * * ## EXAMPLES * * # Create site * $ wp site create --slug=example * Success: Site 3 created: www.example.com/example/ * * # Output a simple list of site URLs * $ wp site list --field=url * http://www.example.com/ * http://www.example.com/subdir/ * * # Delete site * $ wp site delete 123 * Are you sure you want to delete the 'http://www.example.com/example' site? [y/n] y * Success: The site at 'http://www.example.com/example' was deleted. * * @package wp-cli */ class Site_Command extends CommandWithDBObject { protected $obj_type = 'site'; protected $obj_id_key = 'blog_id'; public function __construct() { $this->fetcher = new SiteFetcher(); } /** * Delete comments. */ private function empty_comments() { global $wpdb; // Empty comments and comment cache $comment_ids = $wpdb->get_col( "SELECT comment_ID FROM $wpdb->comments" ); foreach ( $comment_ids as $comment_id ) { wp_cache_delete( $comment_id, 'comment' ); wp_cache_delete( $comment_id, 'comment_meta' ); } $wpdb->query( "TRUNCATE $wpdb->comments" ); $wpdb->query( "TRUNCATE $wpdb->commentmeta" ); } /** * Delete all posts. */ private function empty_posts() { global $wpdb; // Empty posts and post cache $posts_query = "SELECT ID FROM $wpdb->posts"; $posts = new QueryIterator( $posts_query, 10000 ); $taxonomies = get_taxonomies(); while ( $posts->valid() ) { $post_id = $posts->current()->ID; wp_cache_delete( $post_id, 'posts' ); wp_cache_delete( $post_id, 'post_meta' ); foreach ( $taxonomies as $taxonomy ) { wp_cache_delete( $post_id, "{$taxonomy}_relationships" ); } wp_cache_delete( $wpdb->blogid . '-' . $post_id, 'global-posts' ); $posts->next(); } $wpdb->query( "TRUNCATE $wpdb->posts" ); $wpdb->query( "TRUNCATE $wpdb->postmeta" ); } /** * Delete terms, taxonomies, and tax relationships. */ private function empty_taxonomies() { global $wpdb; // Empty taxonomies and terms $terms = $wpdb->get_results( "SELECT term_id, taxonomy FROM $wpdb->term_taxonomy" ); $taxonomies = []; foreach ( (array) $terms as $term ) { $taxonomies[] = $term->taxonomy; wp_cache_delete( $term->term_id, $term->taxonomy ); } $taxonomies = array_unique( $taxonomies ); $cleaned = []; foreach ( $taxonomies as $taxonomy ) { if ( isset( $cleaned[ $taxonomy ] ) ) { continue; } $cleaned[ $taxonomy ] = true; wp_cache_delete( 'all_ids', $taxonomy ); wp_cache_delete( 'get', $taxonomy ); delete_option( "{$taxonomy}_children" ); } $wpdb->query( "TRUNCATE $wpdb->terms" ); $wpdb->query( "TRUNCATE $wpdb->term_taxonomy" ); $wpdb->query( "TRUNCATE $wpdb->term_relationships" ); if ( ! empty( $wpdb->termmeta ) ) { $wpdb->query( "TRUNCATE $wpdb->termmeta" ); } } /** * Delete all links, link_category terms, and related cache. */ private function empty_links() { global $wpdb; // Remove links and related cached data. $links_query = "SELECT link_id FROM {$wpdb->links}"; $links = new QueryIterator( $links_query, 10000 ); // Remove bookmarks cache group. wp_cache_delete( 'get_bookmarks', 'bookmark' ); while ( $links->valid() ) { $link_id = $links->current()->link_id; // Remove cache for the link. wp_delete_object_term_relationships( $link_id, 'link_category' ); wp_cache_delete( $link_id, 'bookmark' ); clean_object_term_cache( $link_id, 'link' ); $links->next(); } // Empty the table once link related cache and term is removed. $wpdb->query( "TRUNCATE {$wpdb->links}" ); } /** * Insert default terms. */ private function insert_default_terms() { global $wpdb; // Default category $cat_name = __( 'Uncategorized' ); /* translators: Default category slug */ $cat_slug = sanitize_title( _x( 'Uncategorized', 'Default category slug' ) ); if ( global_terms_enabled() ) { $cat_id = $wpdb->get_var( $wpdb->prepare( "SELECT cat_ID FROM {$wpdb->sitecategories} WHERE category_nicename = %s", $cat_slug ) ); if ( null === $cat_id ) { $wpdb->insert( $wpdb->sitecategories, [ 'cat_ID' => 0, 'cat_name' => $cat_name, 'category_nicename' => $cat_slug, 'last_updated' => current_time( 'mysql', true ), ] ); $cat_id = $wpdb->insert_id; } update_option( 'default_category', $cat_id ); } else { $cat_id = 1; } $wpdb->insert( $wpdb->terms, [ 'term_id' => $cat_id, 'name' => $cat_name, 'slug' => $cat_slug, 'term_group' => 0, ] ); $wpdb->insert( $wpdb->term_taxonomy, [ 'term_id' => $cat_id, 'taxonomy' => 'category', 'description' => '', 'parent' => 0, 'count' => 0, ] ); } /** * Reset option values to default. */ private function reset_options() { // Reset Privacy Policy value to prevent error. update_option( 'wp_page_for_privacy_policy', 0 ); // Reset sticky posts option. update_option( 'sticky_posts', [] ); } /** * Empties a site of its content (posts, comments, terms, and meta). * * Truncates posts, comments, and terms tables to empty a site of its * content. Doesn't affect site configuration (options) or users. * * If running a persistent object cache, make sure to flush the cache * after emptying the site, as the cache values will be invalid otherwise. * * To also empty custom database tables, you'll need to hook into command * execution: * * ``` * WP_CLI::add_hook( 'after_invoke:site empty', function(){ * global $wpdb; * foreach( array( 'p2p', 'p2pmeta' ) as $table ) { * $table = $wpdb->$table; * $wpdb->query( "TRUNCATE $table" ); * } * }); * ``` * * ## OPTIONS * * [--uploads] * : Also delete *all* files in the site's uploads directory. * * [--yes] * : Proceed to empty the site without a confirmation prompt. * * ## EXAMPLES * * $ wp site empty * Are you sure you want to empty the site at http://www.example.com of all posts, links, comments, and terms? [y/n] y * Success: The site at 'http://www.example.com' was emptied. * * @subcommand empty */ public function empty_( $args, $assoc_args ) { $upload_message = ''; if ( Utils\get_flag_value( $assoc_args, 'uploads' ) ) { $upload_message = ', and delete its uploads directory'; } WP_CLI::confirm( "Are you sure you want to empty the site at '" . site_url() . "' of all posts, links, comments, and terms" . $upload_message . '?', $assoc_args ); $this->empty_posts(); $this->empty_links(); $this->empty_comments(); $this->empty_taxonomies(); $this->insert_default_terms(); $this->reset_options(); if ( ! empty( $upload_message ) ) { $upload_dir = wp_upload_dir(); $files = new RecursiveIteratorIterator( new RecursiveDirectoryIterator( $upload_dir['basedir'], RecursiveDirectoryIterator::SKIP_DOTS ), RecursiveIteratorIterator::CHILD_FIRST ); $files_to_unlink = []; $directories_to_delete = []; $is_main_site = is_main_site(); foreach ( $files as $fileinfo ) { $realpath = $fileinfo->getRealPath(); // Don't clobber subsites when operating on the main site if ( $is_main_site && false !== stripos( $realpath, '/sites/' ) ) { continue; } if ( $fileinfo->isDir() ) { $directories_to_delete[] = $realpath; } else { $files_to_unlink[] = $realpath; } } foreach ( $files_to_unlink as $file ) { unlink( $file ); } foreach ( $directories_to_delete as $directory ) { // Directory could be main sites directory '/sites' which may be non-empty. @rmdir( $directory ); } // May be non-empty if '/sites' still around. @rmdir( $upload_dir['basedir'] ); } WP_CLI::success( "The site at '" . site_url() . "' was emptied." ); } /** * Deletes a site in a multisite installation. * * ## OPTIONS * * [<site-id>] * : The id of the site to delete. If not provided, you must set the --slug parameter. * * [--slug=<slug>] * : Path of the blog to be deleted. Subdomain on subdomain installs, directory on subdirectory installs. * * [--yes] * : Answer yes to the confirmation message. * * [--keep-tables] * : Delete the blog from the list, but don't drop it's tables. * * ## EXAMPLES * * $ wp site delete 123 * Are you sure you want to delete the http://www.example.com/example site? [y/n] y * Success: The site at 'http://www.example.com/example' was deleted. */ public function delete( $args, $assoc_args ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } if ( isset( $assoc_args['slug'] ) ) { $blog = get_blog_details( trim( $assoc_args['slug'], '/' ) ); } else { if ( empty( $args ) ) { WP_CLI::error( 'Need to specify a blog id.' ); } $blog_id = $args[0]; if ( is_main_site( $blog_id ) ) { WP_CLI::error( 'You cannot delete the root site.' ); } $blog = get_blog_details( $blog_id ); } if ( ! $blog ) { WP_CLI::error( 'Site not found.' ); } $site_url = trailingslashit( $blog->siteurl ); WP_CLI::confirm( "Are you sure you want to delete the '{$site_url}' site?", $assoc_args ); wpmu_delete_blog( $blog->blog_id, ! Utils\get_flag_value( $assoc_args, 'keep-tables' ) ); WP_CLI::success( "The site at '{$site_url}' was deleted." ); } /** * Creates a site in a multisite installation. * * ## OPTIONS * * --slug=<slug> * : Path for the new site. Subdomain on subdomain installs, directory on subdirectory installs. * * [--title=<title>] * : Title of the new site. Default: prettified slug. * * [--email=<email>] * : Email for Admin user. User will be created if none exists. Assignement to Super Admin if not included. * * [--network_id=<network-id>] * : Network to associate new site with. Defaults to current network (typically 1). * * [--private] * : If set, the new site will be non-public (not indexed) * * [--porcelain] * : If set, only the site id will be output on success. * * ## EXAMPLES * * $ wp site create --slug=example * Success: Site 3 created: http://www.example.com/example/ */ public function create( $args, $assoc_args ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } global $wpdb, $current_site; $base = $assoc_args['slug']; $title = Utils\get_flag_value( $assoc_args, 'title', ucfirst( $base ) ); $email = empty( $assoc_args['email'] ) ? '' : $assoc_args['email']; // Network if ( ! empty( $assoc_args['network_id'] ) ) { $network = $this->get_network( $assoc_args['network_id'] ); if ( false === $network ) { WP_CLI::error( "Network with id {$assoc_args['network_id']} does not exist." ); } } else { $network = $current_site; } $public = ! Utils\get_flag_value( $assoc_args, 'private' ); // Sanitize if ( preg_match( '|^([a-zA-Z0-9-])+$|', $base ) ) { $base = strtolower( $base ); } // If not a subdomain install, make sure the domain isn't a reserved word if ( ! is_subdomain_install() ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling WordPress native hook. $subdirectory_reserved_names = apply_filters( 'subdirectory_reserved_names', [ 'page', 'comments', 'blog', 'files', 'feed' ] ); if ( in_array( $base, $subdirectory_reserved_names, true ) ) { WP_CLI::error( 'The following words are reserved and cannot be used as blog names: ' . implode( ', ', $subdirectory_reserved_names ) ); } } // Check for valid email, if not, use the first Super Admin found // Probably a more efficient way to do this so we dont query for the // User twice if super admin $email = sanitize_email( $email ); if ( empty( $email ) || ! is_email( $email ) ) { $super_admins = get_super_admins(); $email = ''; if ( ! empty( $super_admins ) && is_array( $super_admins ) ) { // Just get the first one $super_login = $super_admins[0]; $super_user = get_user_by( 'login', $super_login ); if ( $super_user ) { $email = $super_user->user_email; } } } if ( is_subdomain_install() ) { $newdomain = $base . '.' . preg_replace( '|^www\.|', '', $current_site->domain ); $path = $current_site->path; } else { $newdomain = $current_site->domain; $path = $current_site->path . $base . '/'; } $user_id = email_exists( $email ); if ( ! $user_id ) { // Create a new user with a random password $password = wp_generate_password( 12, false ); $user_id = wpmu_create_user( $base, $password, $email ); if ( false === $user_id ) { WP_CLI::error( "Can't create user." ); } else { User_Command::wp_new_user_notification( $user_id, $password ); } } $wpdb->hide_errors(); $title = wp_slash( $title ); $id = wpmu_create_blog( $newdomain, $path, $title, $user_id, [ 'public' => $public ], $network->id ); $wpdb->show_errors(); if ( ! is_wp_error( $id ) ) { if ( ! is_super_admin( $user_id ) && ! get_user_option( 'primary_blog', $user_id ) ) { update_user_option( $user_id, 'primary_blog', $id, true ); } } else { WP_CLI::error( $id->get_error_message() ); } if ( Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $id ); } else { $site_url = trailingslashit( get_site_url( $id ) ); WP_CLI::success( "Site {$id} created: {$site_url}" ); } } /** * Gets network data for a given id. * * @param int $network_id * @return bool|array False if no network found with given id, array otherwise */ private function get_network( $network_id ) { global $wpdb; // Load network data $networks = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->site WHERE id = %d", $network_id ) ); if ( ! empty( $networks ) ) { // Only care about domain and path which are set here return $networks[0]; } return false; } /** * Lists all sites in a multisite installation. * * ## OPTIONS * * [--network=<id>] * : The network to which the sites belong. * * [--<field>=<value>] * : Filter by one or more fields (see "Available Fields" section). However, * 'url' isn't an available filter, because it's created from domain + path. * * [--site__in=<value>] * : Only list the sites with these blog_id values (comma-separated). * * [--field=<field>] * : Prints the value of a single field for each site. * * [--fields=<fields>] * : Comma-separated list of fields to show. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - count * - ids * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each site: * * * blog_id * * url * * last_updated * * registered * * These fields are optionally available: * * * site_id * * domain * * path * * public * * archived * * mature * * spam * * deleted * * lang_id * * ## EXAMPLES * * # Output a simple list of site URLs * $ wp site list --field=url * http://www.example.com/ * http://www.example.com/subdir/ * * @subcommand list */ public function list_( $args, $assoc_args ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } global $wpdb; if ( isset( $assoc_args['fields'] ) ) { $assoc_args['fields'] = preg_split( '/,[ \t]*/', $assoc_args['fields'] ); } $defaults = [ 'format' => 'table', 'fields' => [ 'blog_id', 'url', 'last_updated', 'registered' ], ]; $assoc_args = array_merge( $defaults, $assoc_args ); $where = []; $append = ''; $site_cols = [ 'blog_id', 'last_updated', 'registered', 'site_id', 'domain', 'path', 'public', 'archived', 'mature', 'spam', 'deleted', 'lang_id' ]; foreach ( $site_cols as $col ) { if ( isset( $assoc_args[ $col ] ) ) { $where[ $col ] = $assoc_args[ $col ]; } } if ( isset( $assoc_args['site__in'] ) ) { $where['blog_id'] = explode( ',', $assoc_args['site__in'] ); $append = 'ORDER BY FIELD( blog_id, ' . implode( ',', array_map( 'intval', $where['blog_id'] ) ) . ' )'; } if ( isset( $assoc_args['network'] ) ) { $where['site_id'] = $assoc_args['network']; } $iterator_args = [ 'table' => $wpdb->blogs, 'where' => $where, 'append' => $append, ]; $iterator = new TableIterator( $iterator_args ); $iterator = Utils\iterator_map( $iterator, function( $blog ) { $blog->url = trailingslashit( get_site_url( $blog->blog_id ) ); return $blog; } ); if ( ! empty( $assoc_args['format'] ) && 'ids' === $assoc_args['format'] ) { $sites = iterator_to_array( $iterator ); $ids = wp_list_pluck( $sites, 'blog_id' ); $formatter = new Formatter( $assoc_args, null, 'site' ); $formatter->display_items( $ids ); } else { $formatter = new Formatter( $assoc_args, null, 'site' ); $formatter->display_items( $iterator ); } } /** * Archives one or more sites. * * ## OPTIONS * * <id>... * : One or more IDs of sites to archive. * * ## EXAMPLES * * $ wp site archive 123 * Success: Site 123 archived. */ public function archive( $args ) { $this->update_site_status( $args, 'archived', 1 ); } /** * Unarchives one or more sites. * * ## OPTIONS * * <id>... * : One or more IDs of sites to unarchive. * * ## EXAMPLES * * $ wp site unarchive 123 * Success: Site 123 unarchived. */ public function unarchive( $args ) { $this->update_site_status( $args, 'archived', 0 ); } /** * Activates one or more sites. * * ## OPTIONS * * <id>... * : One or more IDs of sites to activate. * * ## EXAMPLES * * $ wp site activate 123 * Success: Site 123 activated. */ public function activate( $args ) { $this->update_site_status( $args, 'deleted', 0 ); } /** * Deactivates one or more sites. * * ## OPTIONS * * <id>... * : One or more IDs of sites to deactivate. * * ## EXAMPLES * * $ wp site deactivate 123 * Success: Site 123 deactivated. */ public function deactivate( $args ) { $this->update_site_status( $args, 'deleted', 1 ); } /** * Marks one or more sites as spam. * * ## OPTIONS * * <id>... * : One or more IDs of sites to be marked as spam. * * ## EXAMPLES * * $ wp site spam 123 * Success: Site 123 marked as spam. */ public function spam( $args ) { $this->update_site_status( $args, 'spam', 1 ); } /** * Removes one or more sites from spam. * * ## OPTIONS * * <id>... * : One or more IDs of sites to remove from spam. * * ## EXAMPLES * * $ wp site unspam 123 * Success: Site 123 removed from spam. * * @subcommand unspam */ public function unspam( $args ) { $this->update_site_status( $args, 'spam', 0 ); } /** * Sets one or more sites as mature. * * ## OPTIONS * * <id>... * : One or more IDs of sites to set as mature. * * ## EXAMPLES * * $ wp site mature 123 * Success: Site 123 marked as mature. */ public function mature( $args ) { $this->update_site_status( $args, 'mature', 1 ); } /** * Sets one or more sites as immature. * * ## OPTIONS * * <id>... * : One or more IDs of sites to set as unmature. * * ## EXAMPLES * * $ wp site general 123 * Success: Site 123 marked as unmature. */ public function unmature( $args ) { $this->update_site_status( $args, 'mature', 0 ); } /** * Sets one or more sites as public. * * ## OPTIONS * * <id>... * : One or more IDs of sites to set as public. * * ## EXAMPLES * * $ wp site public 123 * Success: Site 123 marked as public. * * @subcommand public */ public function set_public( $args ) { $this->update_site_status( $args, 'public', 1 ); } /** * Sets one or more sites as private. * * ## OPTIONS * * <id>... * : One or more IDs of sites to set as private. * * ## EXAMPLES * * $ wp site private 123 * Success: Site 123 marked as private. * * @subcommand private */ public function set_private( $args ) { $this->update_site_status( $args, 'public', 0 ); } private function update_site_status( $ids, $pref, $value ) { $value = (int) $value; switch ( $pref ) { case 'archived': $action = $value ? 'archived' : 'unarchived'; break; case 'deleted': $action = $value ? 'deactivated' : 'activated'; break; case 'mature': $action = $value ? 'marked as mature' : 'marked as unmature'; break; case 'public': $action = $value ? 'marked as public' : 'marked as private'; break; case 'spam': $action = $value ? 'marked as spam' : 'removed from spam'; break; } foreach ( $ids as $site_id ) { $site = $this->fetcher->get_check( $site_id ); if ( is_main_site( $site->blog_id ) ) { WP_CLI::warning( 'You are not allowed to change the main site.' ); continue; } $old_value = (int) get_blog_status( $site->blog_id, $pref ); if ( $value === $old_value ) { WP_CLI::warning( "Site {$site->blog_id} already {$action}." ); continue; } update_blog_status( $site->blog_id, $pref, $value ); WP_CLI::success( "Site {$site->blog_id} {$action}." ); } } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_extension_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_extension_autoloader ) ) { require_once $wpcli_extension_autoloader; } $wpcli_extension_requires_wp_5_5 = [ 'before_invoke' => static function () { if ( WP_CLI\Utils\wp_version_compare( '5.5', '<' ) ) { WP_CLI::error( 'Requires WordPress 5.5 or greater.' ); } }, ]; WP_CLI::add_command( 'plugin', 'Plugin_Command' ); WP_CLI::add_command( 'plugin auto-updates', 'Plugin_AutoUpdates_Command', $wpcli_extension_requires_wp_5_5 ); WP_CLI::add_command( 'theme', 'Theme_Command' ); WP_CLI::add_command( 'theme auto-updates', 'Theme_AutoUpdates_Command', $wpcli_extension_requires_wp_5_5 ); WP_CLI::add_command( 'theme mod', 'Theme_Mod_Command' ); <?php use WP_CLI\Fetchers\Theme; use WP_CLI\Formatter; use WP_CLI\ParseThemeNameInput; use WP_CLI\Utils; /** * Manages theme auto-updates. * * ## EXAMPLES * * # Enable the auto-updates for a theme * $ wp theme auto-updates enable activate twentysixteen * Theme auto-updates for 'twentysixteen' enabled. * Success: Enabled 1 of 1 theme auto-updates. * * # Disable the auto-updates for a theme * $ wp theme auto-updates disable activate twentysixteen * Theme auto-updates for 'twentysixteen' disabled. * Success: Disabled 1 of 1 theme auto-updates. * * # Get the status of theme auto-updates * $ wp theme auto-updates status twentysixteen * Auto-updates for theme 'twentysixteen' are disabled. * * @package wp-cli */ class Theme_AutoUpdates_Command { use ParseThemeNameInput; /** * Site option that stores the status of theme auto-updates. * * @var string */ const SITE_OPTION = 'auto_update_themes'; /** * Theme fetcher instance. * * @var Theme */ protected $fetcher; /** * Theme_AutoUpdates_Command constructor. */ public function __construct() { $this->fetcher = new Theme(); } /** * Enables the auto-updates for a theme. * * ## OPTIONS * * [<theme>...] * : One or more themes to enable auto-updates for. * * [--all] * : If set, auto-updates will be enabled for all themes. * * [--disabled-only] * : If set, filters list of themes to only include the ones that have * auto-updates disabled. * * ## EXAMPLES * * # Enable the auto-updates for a theme * $ wp theme auto-updates enable activate twentysixteen * Theme auto-updates for 'twentysixteen' enabled. * Success: Enabled 1 of 1 theme auto-updates. */ public function enable( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $disabled_only = Utils\get_flag_value( $assoc_args, 'disabled-only', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $themes = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $count = 0; $successes = 0; foreach ( $themes as $theme ) { $enabled = in_array( $theme->stylesheet, $auto_updates, true ); if ( $disabled_only && $enabled ) { continue; } $count++; if ( $enabled ) { WP_CLI::warning( "Auto-updates already enabled for theme {$theme->stylesheet}." ); } else { $auto_updates[] = $theme->stylesheet; $successes++; } } if ( 0 === $count ) { WP_CLI::error( 'No themes provided to enable auto-updates for.' ); } update_site_option( static::SITE_OPTION, $auto_updates ); Utils\report_batch_operation_results( 'theme auto-update', 'enable', $count, $successes, $count - $successes ); } /** * Disables the auto-updates for a theme. * * ## OPTIONS * * [<theme>...] * : One or more themes to disable auto-updates for. * * [--all] * : If set, auto-updates will be disabled for all themes. * * [--enabled-only] * : If set, filters list of themes to only include the ones that have * auto-updates enabled. * * ## EXAMPLES * * # Disable the auto-updates for a theme * $ wp theme auto-updates disable activate twentysixteen * Theme auto-updates for 'twentysixteen' disabled. * Success: Disabled 1 of 1 theme auto-updates. */ public function disable( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $enabled_only = Utils\get_flag_value( $assoc_args, 'enabled-only', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $themes = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $count = 0; $successes = 0; foreach ( $themes as $theme ) { $enabled = in_array( $theme->stylesheet, $auto_updates, true ); if ( $enabled_only && ! $enabled ) { continue; } $count++; if ( ! $enabled ) { WP_CLI::warning( "Auto-updates already disabled for theme {$theme->stylesheet}." ); } else { $auto_updates = array_diff( $auto_updates, [ $theme->stylesheet ] ); $successes++; } } if ( 0 === $count ) { WP_CLI::error( 'No themes provided to disable auto-updates for.' ); } if ( count( $auto_updates ) > 0 ) { update_site_option( static::SITE_OPTION, $auto_updates ); } else { delete_site_option( static::SITE_OPTION ); } Utils\report_batch_operation_results( 'theme auto-update', 'disable', $count, $successes, $count - $successes ); } /** * Shows the status of auto-updates for a theme. * * ## OPTIONS * * [<theme>...] * : One or more themes to show the status of the auto-updates of. * * [--all] * : If set, the status of auto-updates for all themes will be shown. * * [--enabled-only] * : If set, filters list of themes to only include the ones that have * auto-updates enabled. * * [--disabled-only] * : If set, filters list of themes to only include the ones that have * auto-updates disabled. * * [--field=<field>] * : Only show the provided field. * * ## EXAMPLES * * # Get the status of theme auto-updates * $ wp theme auto-updates status twentysixteen * +---------------+----------+ * | name | status | * +---------------+----------+ * | twentysixteen | disabled | * +---------------+----------+ * * # Get the list of themes that have auto-updates enabled * $ wp theme auto-updates status --all --enabled-only --field=name * twentysixteen * twentyseventeen */ public function status( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $enabled_only = Utils\get_flag_value( $assoc_args, 'enabled-only', false ); $disabled_only = Utils\get_flag_value( $assoc_args, 'disabled-only', false ); if ( $enabled_only && $disabled_only ) { WP_CLI::error( '--enabled-only and --disabled-only are mutually exclusive and ' . 'cannot be used at the same time.' ); } $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $themes = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $results = []; foreach ( $themes as $theme ) { $enabled = in_array( $theme->stylesheet, $auto_updates, true ); if ( $enabled_only && ! $enabled ) { continue; } if ( $disabled_only && $enabled ) { continue; } $results[] = [ 'name' => $theme->stylesheet, 'name ' => $theme->stylesheet, 'status' => $enabled ? 'enabled' : 'disabled', ]; } $formatter = new Formatter( $assoc_args, [ 'name', 'status' ], 'theme' ); $formatter->display_items( $results ); } } <?php use WP_CLI\CommandWithUpgrade; use WP_CLI\ParseThemeNameInput; use WP_CLI\Utils; /** * Manages themes, including installs, activations, and updates. * * See the WordPress [Theme Handbook](https://developer.wordpress.org/themes/) developer resource for more information on themes. * * ## EXAMPLES * * # Install the latest version of a theme from wordpress.org and activate * $ wp theme install twentysixteen --activate * Installing Twenty Sixteen (1.2) * Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip... * Unpacking the package... * Installing the theme... * Theme installed successfully. * Activating 'twentysixteen'... * Success: Switched to 'Twenty Sixteen' theme. * * # Get details of an installed theme * $ wp theme get twentysixteen --fields=name,title,version * +---------+----------------+ * | Field | Value | * +---------+----------------+ * | name | Twenty Sixteen | * | title | Twenty Sixteen | * | version | 1.2 | * +---------+----------------+ * * # Get status of theme * $ wp theme status twentysixteen * Theme twentysixteen details: * Name: Twenty Sixteen * Status: Active * Version: 1.2 * Author: the WordPress team * * @package wp-cli */ class Theme_Command extends CommandWithUpgrade { use ParseThemeNameInput; protected $item_type = 'theme'; protected $upgrade_refresh = 'wp_update_themes'; protected $upgrade_transient = 'update_themes'; protected $obj_fields = [ 'name', 'status', 'update', 'version' ]; public function __construct() { if ( is_multisite() ) { $this->obj_fields[] = 'enabled'; } parent::__construct(); $this->fetcher = new WP_CLI\Fetchers\Theme(); } protected function get_upgrader_class( $force ) { return $force ? '\\WP_CLI\\DestructiveThemeUpgrader' : 'Theme_Upgrader'; } /** * Reveals the status of one or all themes. * * ## OPTIONS * * [<theme>] * : A particular theme to show the status for. * * ## EXAMPLES * * $ wp theme status twentysixteen * Theme twentysixteen details: * Name: Twenty Sixteen * Status: Inactive * Version: 1.2 * Author: the WordPress team */ public function status( $args ) { if ( isset( $args[0] ) ) { $theme = $this->fetcher->get_check( $args[0] ); $errors = $theme->errors(); if ( is_wp_error( $errors ) ) { $message = $errors->get_error_message(); WP_CLI::error( $message ); } } parent::status( $args ); } /** * Searches the WordPress.org theme directory. * * Displays themes in the WordPress.org theme directory matching a given * search query. * * ## OPTIONS * * <search> * : The string to search for. * * [--page=<page>] * : Optional page to display. * --- * default: 1 * --- * * [--per-page=<per-page>] * : Optional number of results to display. Defaults to 10. * * [--field=<field>] * : Prints the value of a single field for each theme. * * [--fields=<fields>] * : Ask for specific fields from the API. Defaults to name,slug,author,rating. Acceptable values: * * **name**: Theme Name * **slug**: Theme Slug * **version**: Current Version Number * **author**: Theme Author * **preview_url**: Theme Preview URL * **screenshot_url**: Theme Screenshot URL * **rating**: Theme Rating * **num_ratings**: Number of Theme Ratings * **homepage**: Theme Author's Homepage * **description**: Theme Description * **url**: Theme's URL on wordpress.org * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## EXAMPLES * * $ wp theme search photo --per-page=6 * Success: Showing 6 of 203 themes. * +----------------------+----------------------+--------+ * | name | slug | rating | * +----------------------+----------------------+--------+ * | Photos | photos | 100 | * | Infinite Photography | infinite-photography | 100 | * | PhotoBook | photobook | 100 | * | BG Photo Frame | bg-photo-frame | 0 | * | fPhotography | fphotography | 0 | * | Photo Perfect | photo-perfect | 98 | * +----------------------+----------------------+--------+ */ public function search( $args, $assoc_args ) { parent::_search( $args, $assoc_args ); } protected function status_single( $args ) { $theme = $this->fetcher->get_check( $args[0] ); $status = $this->format_status( $this->get_status( $theme ), 'long' ); $version = $theme->get( 'Version' ); if ( $this->has_update( $theme->get_stylesheet() ) ) { $version .= ' (%gUpdate available%n)'; } echo WP_CLI::colorize( Utils\mustache_render( self::get_template_path( 'theme-status.mustache' ), [ 'slug' => $theme->get_stylesheet(), 'status' => $status, 'version' => $version, 'name' => $theme->get( 'Name' ), 'author' => $theme->get( 'Author' ), ] ) ); } protected function get_all_items() { return $this->get_item_list(); } /** * Activates a theme. * * ## OPTIONS * * <theme> * : The theme to activate. * * ## EXAMPLES * * $ wp theme activate twentysixteen * Success: Switched to 'Twenty Sixteen' theme. */ public function activate( $args = array() ) { $theme = $this->fetcher->get_check( $args[0] ); $errors = $theme->errors(); if ( is_wp_error( $errors ) ) { $message = $errors->get_error_message(); WP_CLI::error( $message ); } $name = $theme->get( 'Name' ); if ( 'active' === $this->get_status( $theme ) ) { WP_CLI::warning( "The '$name' theme is already active." ); return; } if ( $theme->get_stylesheet() !== $theme->get_template() && ! $this->fetcher->get( $theme->get_template() ) ) { WP_CLI::error( "The '{$theme->get_stylesheet()}' theme cannot be activated without its parent, '{$theme->get_template()}'." ); } switch_theme( $theme->get_template(), $theme->get_stylesheet() ); if ( $this->is_active_theme( $theme ) ) { WP_CLI::success( "Switched to '$name' theme." ); } else { WP_CLI::error( "Could not switch to '$name' theme." ); } } /** * Enables a theme on a WordPress multisite install. * * Permits theme to be activated from the dashboard of a site on a WordPress * multisite install. * * ## OPTIONS * * <theme> * : The theme to enable. * * [--network] * : If set, the theme is enabled for the entire network * * [--activate] * : If set, the theme is activated for the current site. Note that * the "network" flag has no influence on this. * * ## EXAMPLES * * # Enable theme * $ wp theme enable twentysixteen * Success: Enabled the 'Twenty Sixteen' theme. * * # Network enable theme * $ wp theme enable twentysixteen --network * Success: Network enabled the 'Twenty Sixteen' theme. * * # Network enable and activate theme for current site * $ wp theme enable twentysixteen --activate * Success: Enabled the 'Twenty Sixteen' theme. * Success: Switched to 'Twenty Sixteen' theme. */ public function enable( $args, $assoc_args ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } $theme = $this->fetcher->get_check( $args[0] ); $name = $theme->get( 'Name' ); # If the --network flag is set, we'll be calling the (get|update)_site_option functions $_site = ! empty( $assoc_args['network'] ) ? '_site' : ''; # Add the current theme to the allowed themes option or site option $allowed_themes = call_user_func( "get{$_site}_option", 'allowedthemes' ); if ( empty( $allowed_themes ) ) { $allowed_themes = array(); } $allowed_themes[ $theme->get_stylesheet() ] = true; call_user_func( "update{$_site}_option", 'allowedthemes', $allowed_themes ); if ( ! empty( $assoc_args['network'] ) ) { WP_CLI::success( "Network enabled the '$name' theme." ); } else { WP_CLI::success( "Enabled the '$name' theme." ); } # If the --activate flag is set, activate the theme for the current site if ( ! empty( $assoc_args['activate'] ) ) { $this->activate( $args ); } } /** * Disables a theme on a WordPress multisite install. * * Removes ability for a theme to be activated from the dashboard of a site * on a WordPress multisite install. * * ## OPTIONS * * <theme> * : The theme to disable. * * [--network] * : If set, the theme is disabled on the network level. Note that * individual sites may still have this theme enabled if it was * enabled for them independently. * * ## EXAMPLES * * # Disable theme * $ wp theme disable twentysixteen * Success: Disabled the 'Twenty Sixteen' theme. * * # Disable theme in network level * $ wp theme disable twentysixteen --network * Success: Network disabled the 'Twenty Sixteen' theme. */ public function disable( $args, $assoc_args ) { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } $theme = $this->fetcher->get_check( $args[0] ); $name = $theme->get( 'Name' ); # If the --network flag is set, we'll be calling the (get|update)_site_option functions $_site = ! empty( $assoc_args['network'] ) ? '_site' : ''; # Add the current theme to the allowed themes option or site option $allowed_themes = call_user_func( "get{$_site}_option", 'allowedthemes' ); if ( ! empty( $allowed_themes[ $theme->get_stylesheet() ] ) ) { unset( $allowed_themes[ $theme->get_stylesheet() ] ); } call_user_func( "update{$_site}_option", 'allowedthemes', $allowed_themes ); if ( ! empty( $assoc_args['network'] ) ) { WP_CLI::success( "Network disabled the '$name' theme." ); } else { WP_CLI::success( "Disabled the '$name' theme." ); } } /** * Gets the path to a theme or to the theme directory. * * ## OPTIONS * * [<theme>] * : The theme to get the path to. Path includes "style.css" file. * If not set, will return the path to the themes directory. * * [--dir] * : If set, get the path to the closest parent directory, instead of the * theme's "style.css" file. * * ## EXAMPLES * * # Get theme path * $ wp theme path * /var/www/example.com/public_html/wp-content/themes * * # Change directory to theme path * $ cd $(wp theme path) */ public function path( $args, $assoc_args ) { if ( empty( $args ) ) { $path = WP_CONTENT_DIR . '/themes'; } else { $theme = $this->fetcher->get_check( $args[0] ); $path = $theme->get_stylesheet_directory(); if ( ! Utils\get_flag_value( $assoc_args, 'dir' ) ) { $path .= '/style.css'; } } WP_CLI::line( $path ); } protected function install_from_repo( $slug, $assoc_args ) { $api = themes_api( 'theme_information', array( 'slug' => $slug ) ); if ( is_wp_error( $api ) ) { return $api; } if ( isset( $assoc_args['version'] ) ) { self::alter_api_response( $api, $assoc_args['version'] ); } if ( ! Utils\get_flag_value( $assoc_args, 'force' ) ) { $theme = wp_get_theme( $slug ); if ( $theme->exists() ) { // We know this will fail, so avoid a needless download of the package. return new WP_Error( 'already_installed', 'Theme already installed.' ); } // Clear cache so WP_Theme doesn't create a "missing theme" object. $cache_hash = md5( $theme->theme_root . '/' . $theme->stylesheet ); foreach ( [ 'theme', 'screenshot', 'headers', 'page_templates' ] as $key ) { wp_cache_delete( $key . '-' . $cache_hash, 'themes' ); } } WP_CLI::log( sprintf( 'Installing %s (%s)', html_entity_decode( $api->name, ENT_QUOTES ), $api->version ) ); if ( Utils\get_flag_value( $assoc_args, 'version' ) !== 'dev' ) { WP_CLI::get_http_cache_manager()->whitelist_package( $api->download_link, $this->item_type, $api->slug, $api->version ); } // Ignore failures on accessing SSL "https://api.wordpress.org/themes/update-check/1.1/" in `wp_update_themes()` which seem to occur intermittently. set_error_handler( array( __CLASS__, 'error_handler' ), E_USER_WARNING | E_USER_NOTICE ); $result = $this->get_upgrader( $assoc_args )->install( $api->download_link ); restore_error_handler(); return $result; } protected function get_item_list() { return $this->get_all_themes(); } protected function filter_item_list( $items, $args ) { $theme_files = array(); foreach ( $args as $arg ) { $theme_files[] = $this->fetcher->get_check( $arg )->get_stylesheet_directory(); } return Utils\pick_fields( $items, $theme_files ); } /** * Installs one or more themes. * * ## OPTIONS * * <theme|zip|url>... * : One or more themes to install. Accepts a theme slug, the path to a local zip file, or a URL to a remote zip file. * * [--version=<version>] * : If set, get that particular version from wordpress.org, instead of the * stable version. * * [--force] * : If set, the command will overwrite any installed version of the theme, without prompting * for confirmation. * * [--activate] * : If set, the theme will be activated immediately after install. * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Install the latest version from wordpress.org and activate * $ wp theme install twentysixteen --activate * Installing Twenty Sixteen (1.2) * Downloading install package from http://downloads.wordpress.org/theme/twentysixteen.1.2.zip... * Unpacking the package... * Installing the theme... * Theme installed successfully. * Activating 'twentysixteen'... * Success: Switched to 'Twenty Sixteen' theme. * * # Install from a local zip file * $ wp theme install ../my-theme.zip * * # Install from a remote zip file * $ wp theme install http://s3.amazonaws.com/bucketname/my-theme.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef */ public function install( $args, $assoc_args ) { $theme_root = get_theme_root(); if ( $theme_root && ! is_dir( $theme_root ) ) { wp_mkdir_p( $theme_root ); register_theme_directory( $theme_root ); } parent::install( $args, $assoc_args ); } /** * Gets details about a theme. * * ## OPTIONS * * <theme> * : The theme to get. * * [--field=<field>] * : Instead of returning the whole theme, returns the value of a single field. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * $ wp theme get twentysixteen --fields=name,title,version * +---------+----------------+ * | Field | Value | * +---------+----------------+ * | name | Twenty Sixteen | * | title | Twenty Sixteen | * | version | 1.2 | * +---------+----------------+ */ public function get( $args, $assoc_args ) { $theme = $this->fetcher->get_check( $args[0] ); $errors = $theme->errors(); if ( is_wp_error( $errors ) ) { $message = $errors->get_error_message(); WP_CLI::error( $message ); } // WP_Theme object employs magic getter, unfortunately. $theme_vars = [ 'name', 'title', 'version', 'status', 'parent_theme', 'template_dir', 'stylesheet_dir', 'template', 'stylesheet', 'screenshot', 'description', 'author', 'tags', 'theme_root', 'theme_root_uri', ]; $theme_obj = new stdClass(); foreach ( $theme_vars as $var ) { $theme_obj->$var = $theme->$var; } $theme_obj->status = $this->get_status( $theme ); $theme_obj->description = wordwrap( $theme_obj->description ); if ( empty( $assoc_args['fields'] ) ) { $assoc_args['fields'] = $theme_vars; } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $theme_obj ); } /** * Updates one or more themes. * * ## OPTIONS * * [<theme>...] * : One or more themes to update. * * [--all] * : If set, all themes that have updates will be updated. * * [--exclude=<theme-names>] * : Comma separated list of theme names that should be excluded from updating. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - summary * --- * * [--version=<version>] * : If set, the theme will be updated to the specified version. * * [--dry-run] * : Preview which themes would be updated. * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Update multiple themes * $ wp theme update twentyfifteen twentysixteen * Downloading update from https://downloads.wordpress.org/theme/twentyfifteen.1.5.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the theme... * Theme updated successfully. * Downloading update from https://downloads.wordpress.org/theme/twentysixteen.1.2.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the theme... * Theme updated successfully. * +---------------+-------------+-------------+---------+ * | name | old_version | new_version | status | * +---------------+-------------+-------------+---------+ * | twentyfifteen | 1.4 | 1.5 | Updated | * | twentysixteen | 1.1 | 1.2 | Updated | * +---------------+-------------+-------------+---------+ * Success: Updated 2 of 2 themes. * * # Exclude themes updates when bulk updating the themes * $ wp theme update --all --exclude=twentyfifteen * Downloading update from https://downloads.wordpress.org/theme/astra.1.0.5.1.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the theme... * Theme updated successfully. * Downloading update from https://downloads.wordpress.org/theme/twentyseventeen.1.2.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the theme... * Theme updated successfully. * +-----------------+----------+---------+----------------+ * | name | status | version | update_version | * +-----------------+----------+---------+----------------+ * | astra | inactive | 1.0.1 | 1.0.5.1 | * | twentyseventeen | inactive | 1.1 | 1.2 | * +-----------------+----------+---------+----------------+ * Success: Updated 2 of 2 themes. * * # Update all themes * $ wp theme update --all * * @alias upgrade */ public function update( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } if ( isset( $assoc_args['version'] ) && isset( $assoc_args['dry-run'] ) ) { WP_CLI::error( '--dry-run cannot be used together with --version.' ); } if ( isset( $assoc_args['version'] ) ) { foreach ( $this->fetcher->get_many( $args ) as $theme ) { $r = delete_theme( $theme->stylesheet ); if ( is_wp_error( $r ) ) { WP_CLI::warning( $r ); } else { $assoc_args['force'] = true; $this->install( array( $theme->stylesheet ), $assoc_args ); } } } else { parent::update_many( $args, $assoc_args ); } } /** * Checks if a given theme is installed. * * Returns exit code 0 when installed, 1 when uninstalled. * * ## OPTIONS * * <theme> * : The theme to check. * * ## EXAMPLES * * # Check whether theme is installed; exit status 0 if installed, otherwise 1 * $ wp theme is-installed hello * $ echo $? * 1 * * @subcommand is-installed */ public function is_installed( $args, $assoc_args = array() ) { $theme = wp_get_theme( $args[0] ); if ( $theme->exists() ) { WP_CLI::halt( 0 ); } else { WP_CLI::halt( 1 ); } } /** * Checks if a given theme is active. * * Returns exit code 0 when active, 1 when not active. * * ## OPTIONS * * <theme> * : The plugin to check. * * ## EXAMPLES * * # Check whether theme is Active; exit status 0 if active, otherwise 1 * $ wp theme is-active twentyfifteen * $ echo $? * 1 * * @subcommand is-active */ public function is_active( $args, $assoc_args = array() ) { $theme = wp_get_theme( $args[0] ); if ( ! $theme->exists() ) { WP_CLI::halt( 1 ); } $this->is_active_theme( $theme ) ? WP_CLI::halt( 0 ) : WP_CLI::halt( 1 ); } /** * Deletes one or more themes. * * Removes the theme or themes from the filesystem. * * ## OPTIONS * * [<theme>...] * : One or more themes to delete. * * [--all] * : If set, all themes will be deleted except active theme. * * [--force] * : To delete active theme use this. * * ## EXAMPLES * * $ wp theme delete twentytwelve * Deleted 'twentytwelve' theme. * Success: Deleted 1 of 1 themes. * * @alias uninstall */ public function delete( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $args = $this->check_optional_args_and_all( $args, $all, 'delete' ); if ( ! $args ) { return; } $force = Utils\get_flag_value( $assoc_args, 'force', false ); $successes = 0; $errors = 0; foreach ( $this->fetcher->get_many( $args ) as $theme ) { $theme_slug = $theme->get_stylesheet(); if ( $this->is_active_theme( $theme ) && ! $force ) { if ( ! $all ) { WP_CLI::warning( "Can't delete the currently active theme: $theme_slug" ); $errors++; } continue; } $r = delete_theme( $theme_slug ); if ( is_wp_error( $r ) ) { WP_CLI::warning( $r ); $errors++; } else { WP_CLI::log( "Deleted '$theme_slug' theme." ); $successes++; } } if ( ! $this->chained_command ) { Utils\report_batch_operation_results( 'theme', 'delete', count( $args ), $successes, $errors ); } } /** * Gets a list of themes. * * ## OPTIONS * * [--<field>=<value>] * : Filter results based on the value of a field. * * [--field=<field>] * : Prints the value of a single field for each theme. * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * [--status=<status>] * : Filter the output by theme status. * --- * options: * - active * - parent * - inactive * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each theme: * * * name * * status * * update * * version * * These fields are optionally available: * * * update_version * * update_package * * update_id * * title * * description * * ## EXAMPLES * * # List themes * $ wp theme list --status=inactive --format=csv * name,status,update,version * twentyfourteen,inactive,none,1.7 * twentysixteen,inactive,available,1.1 * * @subcommand list */ public function list_( $_, $assoc_args ) { parent::_list( $_, $assoc_args ); } /** * Gets the template path based on installation type. */ private static function get_template_path( $template ) { $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $template_path = "{$command_root}/templates/{$template}"; if ( ! file_exists( $template_path ) ) { WP_CLI::error( "Couldn't find {$template}" ); } return $template_path; } } <?php use WP_CLI\Fetchers\Plugin; use WP_CLI\Formatter; use WP_CLI\ParsePluginNameInput; use WP_CLI\Utils; /** * Manages plugin auto-updates. * * ## EXAMPLES * * # Enable the auto-updates for a plugin * $ wp plugin auto-updates enable activate hello * Plugin auto-updates for 'hello' enabled. * Success: Enabled 1 of 1 plugin auto-updates. * * # Disable the auto-updates for a plugin * $ wp plugin auto-updates disable activate hello * Plugin auto-updates for 'hello' disabled. * Success: Disabled 1 of 1 plugin auto-updates. * * # Get the status of plugin auto-updates * $ wp plugin auto-updates status hello * Auto-updates for plugin 'hello' are disabled. * * @package wp-cli */ class Plugin_AutoUpdates_Command { use ParsePluginNameInput; /** * Site option that stores the status of plugin auto-updates. * * @var string */ const SITE_OPTION = 'auto_update_plugins'; /** * Plugin fetcher instance. * * @var Plugin */ protected $fetcher; /** * Plugin_AutoUpdates_Command constructor. */ public function __construct() { $this->fetcher = new Plugin(); } /** * Enables the auto-updates for a plugin. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to enable auto-updates for. * * [--all] * : If set, auto-updates will be enabled for all plugins. * * [--disabled-only] * : If set, filters list of plugins to only include the ones that have * auto-updates disabled. * * ## EXAMPLES * * # Enable the auto-updates for a plugin * $ wp plugin auto-updates enable activate hello * Plugin auto-updates for 'hello' enabled. * Success: Enabled 1 of 1 plugin auto-updates. */ public function enable( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $disabled_only = Utils\get_flag_value( $assoc_args, 'disabled-only', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $plugins = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $count = 0; $successes = 0; foreach ( $plugins as $plugin ) { $enabled = in_array( $plugin->file, $auto_updates, true ); if ( $disabled_only && $enabled ) { continue; } $count++; if ( $enabled ) { WP_CLI::warning( "Auto-updates already enabled for plugin {$plugin->name}." ); } else { $auto_updates[] = $plugin->file; $successes++; } } if ( 0 === $count ) { WP_CLI::error( 'No plugins provided to enable auto-updates for.' ); } update_site_option( static::SITE_OPTION, $auto_updates ); Utils\report_batch_operation_results( 'plugin auto-update', 'enable', $count, $successes, $count - $successes ); } /** * Disables the auto-updates for a plugin. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to disable auto-updates for. * * [--all] * : If set, auto-updates will be disabled for all plugins. * * [--enabled-only] * : If set, filters list of plugins to only include the ones that have * auto-updates enabled. * * ## EXAMPLES * * # Disable the auto-updates for a plugin * $ wp plugin auto-updates disable activate hello * Plugin auto-updates for 'hello' disabled. * Success: Disabled 1 of 1 plugin auto-updates. */ public function disable( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $enabled_only = Utils\get_flag_value( $assoc_args, 'enabled-only', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $plugins = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $count = 0; $successes = 0; foreach ( $plugins as $plugin ) { $enabled = in_array( $plugin->file, $auto_updates, true ); if ( $enabled_only && ! $enabled ) { continue; } $count++; if ( ! $enabled ) { WP_CLI::warning( "Auto-updates already disabled for plugin {$plugin->name}." ); } else { $auto_updates = array_diff( $auto_updates, [ $plugin->file ] ); $successes++; } } if ( 0 === $count ) { WP_CLI::error( 'No plugins provided to disable auto-updates for.' ); } if ( count( $auto_updates ) > 0 ) { update_site_option( static::SITE_OPTION, $auto_updates ); } else { delete_site_option( static::SITE_OPTION ); } Utils\report_batch_operation_results( 'plugin auto-update', 'disable', $count, $successes, $count - $successes ); } /** * Shows the status of auto-updates for a plugin. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to show the status of the auto-updates of. * * [--all] * : If set, the status of auto-updates for all plugins will be shown. * * [--enabled-only] * : If set, filters list of plugins to only include the ones that have * auto-updates enabled. * * [--disabled-only] * : If set, filters list of plugins to only include the ones that have * auto-updates disabled. * * [--field=<field>] * : Only show the provided field. * * ## EXAMPLES * * # Get the status of plugin auto-updates * $ wp plugin auto-updates status hello * +-------+----------+ * | name | status | * +-------+----------+ * | hello | disabled | * +-------+----------+ * * # Get the list of plugins that have auto-updates enabled * $ wp plugin auto-updates status --all --enabled-only --field=name * akismet * duplicate-post */ public function status( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $enabled_only = Utils\get_flag_value( $assoc_args, 'enabled-only', false ); $disabled_only = Utils\get_flag_value( $assoc_args, 'disabled-only', false ); if ( $enabled_only && $disabled_only ) { WP_CLI::error( '--enabled-only and --disabled-only are mutually exclusive and ' . 'cannot be used at the same time.' ); } $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $plugins = $this->fetcher->get_many( $args ); $auto_updates = get_site_option( static::SITE_OPTION ); if ( false === $auto_updates ) { $auto_updates = []; } $results = []; foreach ( $plugins as $plugin ) { $enabled = in_array( $plugin->file, $auto_updates, true ); if ( $enabled_only && ! $enabled ) { continue; } if ( $disabled_only && $enabled ) { continue; } $results[] = [ 'name' => $plugin->name, 'file' => $plugin->file, 'status' => $enabled ? 'enabled' : 'disabled', ]; } $formatter = new Formatter( $assoc_args, [ 'name', 'status' ], 'plugin' ); $formatter->display_items( $results ); } } <?php /** * Sets, gets, and removes theme mods. * * ## EXAMPLES * * # Set the 'background_color' theme mod to '000000'. * $ wp theme mod set background_color 000000 * Success: Theme mod background_color set to 000000 * * # Get single theme mod in JSON format. * $ wp theme mod get background_color --format=json * [{"key":"background_color","value":"dd3333"}] * * # Remove all theme mods. * $ wp theme mod remove --all * Success: Theme mods removed. */ class Theme_Mod_Command extends WP_CLI_Command { private $fields = [ 'key', 'value' ]; /** * Gets one or more theme mods. * * ## OPTIONS * * [<mod>...] * : One or more mods to get. * * [--field=<field>] * : Returns the value of a single field. * * [--all] * : List all theme mods * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * --- * * ## EXAMPLES * * # Get all theme mods. * $ wp theme mod get --all * +------------------+---------+ * | key | value | * +------------------+---------+ * | background_color | dd3333 | * | link_color | #dd9933 | * | main_text_color | #8224e3 | * +------------------+---------+ * * # Get single theme mod in JSON format. * $ wp theme mod get background_color --format=json * [{"key":"background_color","value":"dd3333"}] * * # Get value of a single theme mod. * $ wp theme mod get background_color --field=value * dd3333 * * # Get multiple theme mods. * $ wp theme mod get background_color header_textcolor * +------------------+--------+ * | key | value | * +------------------+--------+ * | background_color | dd3333 | * | header_textcolor | | * +------------------+--------+ */ public function get( $args = array(), $assoc_args = array() ) { if ( ! \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( 'You must specify at least one mod or use --all.' ); } if ( \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) ) { $args = array(); } $list = array(); $mods = get_theme_mods(); if ( ! is_array( $mods ) ) { // If no mods are set (perhaps new theme), make sure foreach still works. $mods = array(); } foreach ( $mods as $k => $v ) { // If mods were given, skip the others. if ( ! empty( $args ) && ! in_array( $k, $args, true ) ) { continue; } if ( is_array( $v ) ) { $list[] = [ 'key' => $k, 'value' => '=>', ]; foreach ( $v as $_k => $_v ) { $list[] = [ 'key' => " $_k", 'value' => $_v, ]; } } else { $list[] = [ 'key' => $k, 'value' => $v, ]; } } // For unset mods, show blank value. foreach ( $args as $mod ) { if ( ! isset( $mods[ $mod ] ) ) { $list[] = [ 'key' => $mod, 'value' => '', ]; } } $formatter = new \WP_CLI\Formatter( $assoc_args, $this->fields, 'thememods' ); $formatter->display_items( $list ); } /** * Gets a list of theme mods. * * ## OPTIONS * * [--field=<field>] * : Returns the value of a single field. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - json * - csv * - yaml * --- * * ## EXAMPLES * * # Gets a list of theme mods. * $ wp theme mod list * +------------------+---------+ * | key | value | * +------------------+---------+ * | background_color | dd3333 | * | link_color | #dd9933 | * | main_text_color | #8224e3 | * +------------------+---------+ * * @subcommand list */ public function list_( $args = array(), $assoc_args = array() ) { $assoc_args['all'] = 1; $this->get( $args, $assoc_args ); } /** * Removes one or more theme mods. * * ## OPTIONS * * [<mod>...] * : One or more mods to remove. * * [--all] * : Remove all theme mods. * * ## EXAMPLES * * # Remove all theme mods. * $ wp theme mod remove --all * Success: Theme mods removed. * * # Remove single theme mod. * $ wp theme mod remove background_color * Success: 1 mod removed. * * # Remove multiple theme mods. * $ wp theme mod remove background_color header_textcolor * Success: 2 mods removed. */ public function remove( $args = array(), $assoc_args = array() ) { if ( ! \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( 'You must specify at least one mod or use --all.' ); } if ( \WP_CLI\Utils\get_flag_value( $assoc_args, 'all' ) ) { remove_theme_mods(); WP_CLI::success( 'Theme mods removed.' ); return; } foreach ( $args as $mod ) { remove_theme_mod( $mod ); } $count = count( $args ); $success_message = ( 1 === $count ) ? '%d mod removed.' : '%d mods removed.'; WP_CLI::success( sprintf( $success_message, $count ) ); } /** * Sets the value of a theme mod. * * ## OPTIONS * * <mod> * : The name of the theme mod to set or update. * * <value> * : The new value. * * ## EXAMPLES * * # Set theme mod * $ wp theme mod set background_color 000000 * Success: Theme mod background_color set to 000000 */ public function set( $args = array(), $assoc_args = array() ) { list( $mod, $value ) = $args; set_theme_mod( $mod, $value ); if ( get_theme_mod( $mod ) === $value ) { WP_CLI::success( "Theme mod {$mod} set to {$value}." ); } else { WP_CLI::success( "Could not update theme mod {$mod}." ); } } } <?php namespace WP_CLI; /** * A plugin upgrader class that clears the destination directory. */ class DestructivePluginUpgrader extends \Plugin_Upgrader { public function install_package( $args = array() ) { parent::upgrade_strings(); // Needed for the 'remove_old' string. $args['clear_destination'] = true; $args['abort_if_destination_exists'] = false; return parent::install_package( $args ); } } <?php namespace WP_CLI\Fetchers; /** * Fetch a WordPress plugin based on one of its attributes. */ class Plugin extends Base { /** * @var string $msg Error message to use when invalid data is provided */ protected $msg = "The '%s' plugin could not be found."; /** * Get a plugin object by name * * @param string $name * @return object|false */ public function get( $name ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. foreach ( apply_filters( 'all_plugins', get_plugins() ) as $file => $_ ) { if ( "$name.php" === $file || ( $name && $file === $name ) || ( dirname( $file ) === $name && '.' !== $name ) ) { return (object) compact( 'name', 'file' ); } } return false; } } <?php namespace WP_CLI\Fetchers; use WP_CLI\Utils; /** * Fetch a WordPress theme based on one of its attributes. */ class Theme extends Base { /** * @var string $msg Error message to use when invalid data is provided */ protected $msg = "The '%s' theme could not be found."; /** * Get a theme object by name * * @param string $name * @return object|false */ public function get( $name ) { // Workaround to equalize folder naming conventions across Win/Mac/Linux. // Returns false if theme stylesheet doesn't exactly match existing themes. $existing_themes = wp_get_themes( array( 'errors' => null ) ); $existing_stylesheets = array_keys( $existing_themes ); if ( ! in_array( $name, $existing_stylesheets, true ) ) { $inexact_match = $this->find_inexact_match( $name, $existing_themes ); if ( false !== $inexact_match ) { $this->msg .= sprintf( " Did you mean '%s'?", $inexact_match ); } return false; } $theme = $existing_themes[ $name ]; return $theme; } /** * Find and return the key in $existing_themes that matches $name with * a case insensitive string comparison. * * @param string $name Name of theme received by command. * @param array $existing_themes Key/value pair of existing themes, key is * a case sensitive name. * @return string|boolean Case sensitive name if match found, otherwise false. */ private function find_inexact_match( $name, $existing_themes ) { $target = strtolower( $name ); $themes = array_map( 'strtolower', array_keys( $existing_themes ) ); if ( in_array( $target, $themes, true ) ) { return $target; } $suggestion = Utils\get_suggestion( $target, $themes ); if ( '' !== $suggestion ) { return $suggestion; } return false; } } <?php namespace WP_CLI; use Composer\Semver\Comparator; use Exception; use WP_CLI; use WP_CLI\Fetchers; use WP_CLI\Loggers; use WP_CLI\Utils; use WP_Error; abstract class CommandWithUpgrade extends \WP_CLI_Command { protected $item_type; protected $obj_fields; protected $upgrade_refresh; protected $upgrade_transient; protected $chained_command = false; // Invalid version message. const INVALID_VERSION_MESSAGE = 'version higher than expected'; public function __construct() { // Do not automatically check translations updates after updating plugins/themes. add_action( 'upgrader_process_complete', function() { remove_action( 'upgrader_process_complete', [ 'Language_Pack_Upgrader', 'async_upgrade' ], 20 ); }, 1 ); add_filter( 'http_request_timeout', function () { return 1 * MINUTE_IN_SECONDS; }, 999 ); $this->fetcher = new Fetchers\Plugin(); } abstract protected function get_upgrader_class( $force ); abstract protected function get_item_list(); /** * @param array List of update candidates * @param array List of item names * @return array List of update candidates */ abstract protected function filter_item_list( $items, $args ); abstract protected function get_all_items(); abstract protected function get_status( $file ); abstract protected function status_single( $args ); abstract protected function install_from_repo( $slug, $assoc_args ); public function status( $args ) { // Force WordPress to check for updates. call_user_func( $this->upgrade_refresh ); if ( empty( $args ) ) { $this->status_all(); } else { $this->status_single( $args ); } } private function status_all() { $items = $this->get_all_items(); $n = count( $items ); WP_CLI::log( sprintf( '%d installed %s:', $n, Utils\pluralize( $this->item_type, absint( $n ) ) ) ); $padding = $this->get_padding( $items ); foreach ( $items as $file => $details ) { if ( $details['update'] ) { $line = ' %yU%n'; } else { $line = ' '; } $line .= $this->format_status( $details['status'], 'short' ); $line .= ' ' . str_pad( $details['name'], $padding ) . '%n'; if ( ! empty( $details['version'] ) ) { $line .= ' ' . $details['version']; } WP_CLI::line( WP_CLI::colorize( $line ) ); } WP_CLI::line(); $this->show_legend( $items ); } private function get_padding( $items ) { $max_len = 0; foreach ( $items as $details ) { $len = strlen( $details['name'] ); if ( $len > $max_len ) { $max_len = $len; } } return $max_len; } private function show_legend( $items ) { $statuses = array_unique( wp_list_pluck( $items, 'status' ) ); $legend_line = array(); foreach ( $statuses as $status ) { $legend_line[] = sprintf( '%s%s = %s%%n', $this->get_color( $status ), $this->map['short'][ $status ], $this->map['long'][ $status ] ); } if ( in_array( true, wp_list_pluck( $items, 'update' ), true ) ) { $legend_line[] = '%yU = Update Available%n'; } WP_CLI::line( 'Legend: ' . WP_CLI::colorize( implode( ', ', $legend_line ) ) ); } public function install( $args, $assoc_args ) { $successes = 0; $errors = 0; foreach ( $args as $slug ) { if ( empty( $slug ) ) { WP_CLI::warning( 'Ignoring ambiguous empty slug value.' ); continue; } $result = false; $is_remote = false !== strpos( $slug, '://' ); // Check if a URL to a remote or local zip has been specified. if ( $is_remote || ( pathinfo( $slug, PATHINFO_EXTENSION ) === 'zip' && is_file( $slug ) ) ) { // Install from local or remote zip file. $file_upgrader = $this->get_upgrader( $assoc_args ); $filter = false; // If a GitHub URL, do some guessing as to the correct plugin/theme directory. if ( $is_remote && 'github.com' === $this->parse_url_host_component( $slug, PHP_URL_HOST ) // Don't attempt to rename ZIPs uploaded to the releases page or coming from a raw source. && ! preg_match( '#github\.com/[^/]+/[^/]+/(?:releases/download|raw)/#', $slug ) ) { $filter = function( $source, $remote_source, $upgrader ) use ( $slug ) { $slug_dir = Utils\basename( $this->parse_url_host_component( $slug, PHP_URL_PATH ), '.zip' ); // Don't use the zip name if archive attached to release, as name likely to contain version tag/branch. if ( preg_match( '#github\.com/[^/]+/([^/]+)/archive/#', $slug, $matches ) ) { // Note this will be wrong if the project name isn't the same as the plugin/theme slug name. $slug_dir = $matches[1]; } $source_dir = Utils\basename( $source ); // `$source` is trailing-slashed path to the unzipped archive directory, so basename returns the unslashed directory. if ( $source_dir === $slug_dir ) { return $source; } $new_path = substr_replace( $source, $slug_dir, strrpos( $source, $source_dir ), strlen( $source_dir ) ); if ( $GLOBALS['wp_filesystem']->move( $source, $new_path ) ) { WP_CLI::log( sprintf( "Renamed Github-based project from '%s' to '%s'.", $source_dir, $slug_dir ) ); return $new_path; } return new WP_Error( 'wpcli_install_github', "Couldn't move Github-based project to appropriate directory." ); }; add_filter( 'upgrader_source_selection', $filter, 10, 3 ); } if ( $file_upgrader->install( $slug ) ) { $slug = $file_upgrader->result['destination_name']; $result = true; if ( $filter ) { remove_filter( 'upgrader_source_selection', $filter, 10 ); } $successes++; } else { $errors++; } } else { // Assume a plugin/theme slug from the WordPress.org repository has been specified. $result = $this->install_from_repo( $slug, $assoc_args ); if ( is_null( $result ) ) { $errors++; } elseif ( is_wp_error( $result ) ) { $key = $result->get_error_code(); if ( in_array( $key, [ 'plugins_api_failed', 'themes_api_failed' ], true ) && ! empty( $result->error_data[ $key ] ) && in_array( $result->error_data[ $key ], [ 'N;', 'b:0;' ], true ) ) { WP_CLI::warning( "Couldn't find '$slug' in the WordPress.org {$this->item_type} directory." ); $errors++; } else { WP_CLI::warning( "$slug: " . $result->get_error_message() ); if ( 'already_installed' !== $key ) { $errors++; } } } else { $successes++; } } // Check extension is available or not. $extension = $this->fetcher->get_many( array( $slug ) ); // If installation goes well $result will be true. $allow_activation = $result; // Allow installation for installed extension. if ( is_wp_error( $result ) && 'already_installed' === $result->get_error_code() ) { $allow_activation = true; } if ( true === $allow_activation && count( $extension ) > 0 ) { $this->chained_command = true; if ( Utils\get_flag_value( $assoc_args, 'activate-network' ) ) { WP_CLI::log( "Network-activating '$slug'..." ); $this->activate( array( $slug ), array( 'network' => true ) ); } if ( Utils\get_flag_value( $assoc_args, 'activate' ) ) { WP_CLI::log( "Activating '$slug'..." ); $this->activate( array( $slug ) ); } $this->chained_command = false; } } Utils\report_batch_operation_results( $this->item_type, 'install', count( $args ), $successes, $errors ); } /** * Prepare an API response for downloading a particular version of an item. * * @param object $response wordpress.org API response * @param string $version The desired version of the package */ protected static function alter_api_response( $response, $version ) { if ( $response->version === $version ) { return; } // WordPress.org forces https, but still sometimes returns http // See https://twitter.com/nacin/status/512362694205140992 $response->download_link = str_replace( 'http://', 'https://', $response->download_link ); list( $link ) = explode( $response->slug, $response->download_link ); if ( false !== strpos( $response->download_link, '/theme/' ) ) { $download_type = 'theme'; } elseif ( false !== strpos( $response->download_link, '/plugin/' ) ) { $download_type = 'plugin'; } else { $download_type = 'plugin/theme'; } if ( 'dev' === $version ) { $response->download_link = $link . $response->slug . '.zip'; $response->version = 'Development Version'; } else { $response->download_link = $link . $response->slug . '.' . $version . '.zip'; $response->version = $version; // Check if the requested version exists. $response = wp_remote_head( $response->download_link ); $response_code = wp_remote_retrieve_response_code( $response ); if ( 200 !== (int) $response_code ) { if ( is_wp_error( $response ) ) { $error_msg = $response->get_error_message(); } else { $error_msg = sprintf( 'HTTP code %d', $response_code ); } WP_CLI::error( sprintf( "Can't find the requested %s's version %s in the WordPress.org %s repository (%s).", $download_type, $version, $download_type, $error_msg ) ); } } } protected function get_upgrader( $assoc_args ) { $force = (bool) Utils\get_flag_value( $assoc_args, 'force', false ); $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $upgrader_class = $this->get_upgrader_class( $force ); return Utils\get_upgrader( $upgrader_class, $insecure ); } protected function update_many( $args, $assoc_args ) { call_user_func( $this->upgrade_refresh ); if ( ! empty( $assoc_args['format'] ) && in_array( $assoc_args['format'], [ 'json', 'csv' ], true ) ) { $logger = new Loggers\Quiet(); WP_CLI::set_logger( $logger ); } if ( ! Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( "Please specify one or more {$this->item_type}s, or use --all." ); } if ( Utils\get_flag_value( $assoc_args, 'minor' ) && Utils\get_flag_value( $assoc_args, 'patch' ) ) { WP_CLI::error( '--minor and --patch cannot be used together.' ); } $items = $this->get_item_list(); $errors = 0; if ( ! Utils\get_flag_value( $assoc_args, 'all' ) ) { $items = $this->filter_item_list( $items, $args ); $errors = count( $args ) - count( $items ); } $items_to_update = wp_list_filter( $items, [ 'update' => true ] ); $minor = (bool) Utils\get_flag_value( $assoc_args, 'minor', false ); $patch = (bool) Utils\get_flag_value( $assoc_args, 'patch', false ); if ( 'plugin' === $this->item_type && ( $minor || $patch ) ) { $type = $minor ? 'minor' : 'patch'; $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $items_to_update = self::get_minor_or_patch_updates( $items_to_update, $type, $insecure ); } $exclude = Utils\get_flag_value( $assoc_args, 'exclude' ); if ( isset( $exclude ) ) { $exclude_items = explode( ',', trim( $assoc_args['exclude'], ',' ) ); unset( $assoc_args['exclude'] ); foreach ( $exclude_items as $item ) { if ( 'plugin' === $this->item_type ) { $plugin = $this->fetcher->get( $item ); unset( $items_to_update[ $plugin->file ] ); } elseif ( 'theme' === $this->item_type ) { $theme_root = get_theme_root() . '/' . $item; unset( $items_to_update[ $theme_root ] ); } } } // Check for items to update and remove extensions that have version higher than expected. foreach ( $items_to_update as $item_key => $item_info ) { if ( static::INVALID_VERSION_MESSAGE === $item_info['update'] ) { WP_CLI::warning( "{$item_info['name']}: " . static::INVALID_VERSION_MESSAGE . '.' ); $errors++; unset( $items_to_update[ $item_key ] ); } } if ( Utils\get_flag_value( $assoc_args, 'dry-run' ) ) { if ( empty( $items_to_update ) ) { WP_CLI::log( "No {$this->item_type} updates available." ); if ( null !== $exclude ) { WP_CLI::log( "Skipped updates for: $exclude" ); } return; } if ( ! empty( $assoc_args['format'] ) && in_array( $assoc_args['format'], [ 'json', 'csv' ], true ) ) { Utils\format_items( $assoc_args['format'], $items_to_update, [ 'name', 'status', 'version', 'update_version' ] ); } elseif ( ! empty( $assoc_args['format'] ) && 'summary' === $assoc_args['format'] ) { WP_CLI::log( "Available {$this->item_type} updates:" ); foreach ( $items_to_update as $item_to_update => $info ) { WP_CLI::log( "{$info['title']} update from version {$info['version']} to version {$info['update_version']}" ); } } else { WP_CLI::log( "Available {$this->item_type} updates:" ); Utils\format_items( 'table', $items_to_update, [ 'name', 'status', 'version', 'update_version' ] ); } if ( null !== $exclude ) { WP_CLI::log( "Skipped updates for: $exclude" ); } return; } $result = array(); // Only attempt to update if there is something to update. if ( ! empty( $items_to_update ) ) { $cache_manager = WP_CLI::get_http_cache_manager(); foreach ( $items_to_update as $item ) { $cache_manager->whitelist_package( $item['update_package'], $this->item_type, $item['name'], $item['update_version'] ); } $upgrader = $this->get_upgrader( $assoc_args ); // Ensure the upgrader uses the download offer present in each item. $transient_filter = function( $transient ) use ( $items_to_update ) { foreach ( $items_to_update as $name => $item_data ) { if ( isset( $transient->response[ $name ] ) ) { $transient->response[ $name ]->new_version = $item_data['update_version']; $transient->response[ $name ]->package = $item_data['update_package']; } } return $transient; }; add_filter( 'site_transient_' . $this->upgrade_transient, $transient_filter, 999 ); $result = $upgrader->bulk_upgrade( wp_list_pluck( $items_to_update, 'update_id' ) ); remove_filter( 'site_transient_' . $this->upgrade_transient, $transient_filter, 999 ); } // Let the user know the results. $num_to_update = count( $items_to_update ); $num_updated = count( array_filter( $result ) ); if ( $num_to_update > 0 ) { if ( ! empty( $assoc_args['format'] ) && 'summary' === $assoc_args['format'] ) { foreach ( $items_to_update as $item_to_update => $info ) { $message = null !== $result[ $info['update_id'] ] ? 'updated successfully' : 'did not update'; WP_CLI::log( "{$info['title']} {$message} from version {$info['version']} to version {$info['update_version']}" ); } } else { $status = array(); foreach ( $items_to_update as $item_to_update => $info ) { $status[ $item_to_update ] = [ 'name' => $info['name'], 'old_version' => $info['version'], 'new_version' => $info['update_version'], 'status' => null !== $result[ $info['update_id'] ] ? 'Updated' : 'Error', ]; if ( null === $result[ $info['update_id'] ] ) { $errors++; } } $format = 'table'; if ( ! empty( $assoc_args['format'] ) && in_array( $assoc_args['format'], [ 'json', 'csv' ], true ) ) { $format = $assoc_args['format']; } Utils\format_items( $format, $status, [ 'name', 'old_version', 'new_version', 'status' ] ); } } $total_updated = Utils\get_flag_value( $assoc_args, 'all' ) ? $num_to_update : count( $args ); Utils\report_batch_operation_results( $this->item_type, 'update', $total_updated, $num_updated, $errors ); if ( null !== $exclude ) { WP_CLI::log( "Skipped updates for: $exclude" ); } } // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Whitelisting to provide backward compatibility to classes possibly extending this class. protected function _list( $_, $assoc_args ) { // Force WordPress to check for updates call_user_func( $this->upgrade_refresh ); $all_items = $this->get_all_items(); if ( ! is_array( $all_items ) ) { WP_CLI::error( "No {$this->item_type}s found." ); } foreach ( $all_items as $key => &$item ) { if ( empty( $item['version'] ) ) { $item['version'] = ''; } foreach ( $item as $field => &$value ) { if ( true === $value ) { $value = 'available'; } elseif ( false === $value ) { $value = 'none'; } } foreach ( $this->obj_fields as $field ) { if ( ! array_key_exists( $field, $assoc_args ) ) { continue; } // This can be either a value to filter by or a comma-separated list of values. // Also, it is not forbidden for a value to contain a comma (in which case we can filter only by one). $field_filter = $assoc_args[ $field ]; if ( $item[ $field ] !== $field_filter && ! in_array( $item[ $field ], array_map( 'trim', explode( ',', $field_filter ) ), true ) ) { unset( $all_items[ $key ] ); } } } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $all_items ); } /** * Check whether an item has an update available or not. * * @param string $slug The plugin/theme slug * * @return bool */ protected function has_update( $slug ) { $update_list = get_site_transient( $this->upgrade_transient ); return isset( $update_list->response[ $slug ] ); } /** * Get the available update info * * @return mixed */ protected function get_update_info() { return get_site_transient( $this->upgrade_transient ); } private $map = [ 'short' => [ 'inactive' => 'I', 'active' => 'A', 'active-network' => 'N', 'must-use' => 'M', 'parent' => 'P', 'dropin' => 'D', ], 'long' => [ 'inactive' => 'Inactive', 'active' => 'Active', 'active-network' => 'Network Active', 'must-use' => 'Must Use', 'parent' => 'Parent', 'dropin' => 'Drop-In', ], ]; protected function format_status( $status, $format ) { return $this->get_color( $status ) . $this->map[ $format ][ $status ]; } private function get_color( $status ) { static $colors = [ 'inactive' => '', 'active' => '%g', 'active-network' => '%g', 'must-use' => '%c', 'parent' => '%p', 'dropin' => '%B', ]; return $colors[ $status ]; } /** * Get the minor or patch version for plugins with available updates * * @param array $items Plugins with updates. * @param string $type Either 'minor' or 'patch'. * @param bool $insecure Whether to retry without certificate validation on TLS handshake failure. * @return array */ private function get_minor_or_patch_updates( $items, $type, $insecure ) { $wp_org_api = new WpOrgApi( [ 'insecure' => $insecure ] ); foreach ( $items as $i => $item ) { try { $data = $wp_org_api->get_plugin_info( $item['name'] ); } catch ( Exception $exception ) { unset( $items[ $i ] ); continue; } // No minor or patch versions to access. if ( empty( $data['versions'] ) ) { unset( $items[ $i ] ); continue; } $update_version = false; $update_package = false; foreach ( $data['versions'] as $version => $download_link ) { $update_type = Utils\get_named_sem_ver( $version, $item['version'] ); // Compared version must be older. if ( ! $update_type ) { continue; } // Only permit 'patch' for 'patch'. if ( 'patch' === $type && 'patch' !== $update_type ) { continue; } // Permit 'minor' or 'patch' for 'minor' phpcs:ignore Squiz.PHP.CommentedOutCode.Found -- False positive. if ( 'minor' === $type && ! in_array( $update_type, array( 'minor', 'patch' ), true ) ) { continue; } if ( $update_version && ! Comparator::greaterThan( $version, $update_version ) ) { continue; } $update_version = $version; $update_package = $download_link; } // If there's not a matching version, bail on updates. if ( ! $update_version ) { unset( $items[ $i ] ); continue; } $items[ $i ]['update_version'] = $update_version; $items[ $i ]['update_package'] = $update_package; } return $items; } /** * Search wordpress.org repo. * * @param array $args A arguments array containing the search term in the first element. * @param array $assoc_args Data passed in from command. */ // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Whitelisting to provide backward compatibility to classes possibly extending this class. protected function _search( $args, $assoc_args ) { $term = $args[0]; $defaults = [ 'per-page' => 10, 'page' => 1, 'fields' => implode( ',', [ 'name', 'slug', 'rating' ] ), ]; $assoc_args = array_merge( $defaults, $assoc_args ); $fields = array(); foreach ( explode( ',', $assoc_args['fields'] ) as $field ) { $fields[ $field ] = true; } $format = ! empty( $assoc_args['format'] ) ? $assoc_args['format'] : 'table'; $formatter = $this->get_formatter( $assoc_args ); $api_args = [ 'per_page' => (int) $assoc_args['per-page'], 'page' => (int) $assoc_args['page'], 'search' => $term, 'fields' => $fields, ]; if ( 'plugin' === $this->item_type ) { $api = plugins_api( 'query_plugins', $api_args ); } else { $api = themes_api( 'query_themes', $api_args ); } if ( is_wp_error( $api ) ) { WP_CLI::error( $api->get_error_message() . __( ' Try again' ) ); } $plural = $this->item_type . 's'; if ( ! isset( $api->$plural ) ) { WP_CLI::error( __( 'API error. Try Again.' ) ); } $items = $api->$plural; // Add `url` for plugin or theme on wordpress.org. foreach ( $items as $index => $item_object ) { if ( $item_object instanceof \stdClass ) { $item_object->url = "https://wordpress.org/{$plural}/{$item_object->slug}/"; } } if ( 'table' === $format ) { $count = Utils\get_flag_value( $api->info, 'results', 'unknown' ); WP_CLI::success( sprintf( 'Showing %s of %s %s.', count( $items ), $count, $plural ) ); } $formatter->display_items( $items ); } protected function get_formatter( &$assoc_args ) { return new \WP_CLI\Formatter( $assoc_args, $this->obj_fields, $this->item_type ); } /** * Error handler to ignore failures on accessing SSL "https://api.wordpress.org/themes/update-check/1.1/" in `wp_update_themes()` * and "https://api.wordpress.org/plugins/update-check/1.1/" in `wp_update_plugins()` which seem to occur intermittently. */ public static function error_handler( $errno, $errstr, $errfile, $errline, $errcontext = null ) { // If ignoring E_USER_WARNING | E_USER_NOTICE, default. if ( ! ( error_reporting() & $errno ) ) { return false; } // If not in "wp-includes/update.php", default. $update_php = 'wp-includes/update.php'; if ( 0 !== substr_compare( $errfile, $update_php, -strlen( $update_php ) ) ) { return false; } // Else assume it's in `wp_update_themes()` or `wp_update_plugins()` and just ignore it. return true; } /** * Retrieves PHP_URL_HOST component from URL. * * @param int $component The component to retrieve. * * @return string */ private function parse_url_host_component( $url, $component ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url -- parse_url will only be used in absence of wp_parse_url. return function_exists( 'wp_parse_url' ) ? wp_parse_url( $url, $component ) : parse_url( $url, $component ); } } <?php namespace WP_CLI; use WP_CLI; trait ParsePluginNameInput { /** * If have optional args ([<plugin>...]) and an all option, then check have something to do. * * @param array $args Passed-in arguments. * @param bool $all All flag. * @param string $verb Optional. Verb to use. Defaults to 'install'. * @return array Same as $args if not all, otherwise all slugs. * @throws ExitException If neither plugin name nor --all were provided. */ protected function check_optional_args_and_all( $args, $all, $verb = 'install' ) { if ( $all ) { $args = array_map( '\WP_CLI\Utils\get_plugin_name', array_keys( $this->get_all_plugins() ) ); } if ( empty( $args ) ) { if ( ! $all ) { WP_CLI::error( 'Please specify one or more plugins, or use --all.' ); } $past_tense_verb = Utils\past_tense_verb( $verb ); WP_CLI::success( "No plugins {$past_tense_verb}." ); // Don't error if --all given for BC. } return $args; } /** * Gets all available plugins. * * Uses the same filter core uses in plugins.php to determine which plugins * should be available to manage through the WP_Plugins_List_Table class. * * @return array */ private function get_all_plugins() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. return apply_filters( 'all_plugins', get_plugins() ); } } <?php namespace WP_CLI; use WP_CLI; trait ParseThemeNameInput { /** * If have optional args ([<theme>...]) and an all option, then check have something to do. * * @param array $args Passed-in arguments. * @param bool $all All flag. * @param string $verb Optional. Verb to use. Defaults to 'install'. * @return array Same as $args if not all, otherwise all slugs. * @throws ExitException If neither plugin name nor --all were provided. */ protected function check_optional_args_and_all( $args, $all, $verb = 'install' ) { if ( $all ) { $args = array_map( '\WP_CLI\Utils\get_theme_name', array_keys( $this->get_all_themes() ) ); } if ( empty( $args ) ) { if ( ! $all ) { WP_CLI::error( 'Please specify one or more themes, or use --all.' ); } $past_tense_verb = Utils\past_tense_verb( $verb ); WP_CLI::success( "No themes {$past_tense_verb}." ); // Don't error if --all given for BC. } return $args; } /** * Gets all available themes. * * Uses the same filter core uses in themes.php to determine which themes * should be available to manage through the WP_Themes_List_Table class. * * @return array */ private function get_all_themes() { $items = array(); $theme_version_info = array(); if ( is_multisite() ) { $site_enabled = get_option( 'allowedthemes' ); if ( empty( $site_enabled ) ) { $site_enabled = array(); } $network_enabled = get_site_option( 'allowedthemes' ); if ( empty( $network_enabled ) ) { $network_enabled = array(); } } $all_update_info = $this->get_update_info(); $checked_themes = isset( $all_update_info->checked ) ? $all_update_info->checked : array(); if ( ! empty( $checked_themes ) ) { foreach ( $checked_themes as $slug => $version ) { $theme_version_info[ $slug ] = $this->is_theme_version_valid( $slug, $version ); } } foreach ( wp_get_themes() as $key => $theme ) { $file = $theme->get_stylesheet_directory(); $update_info = ( isset( $all_update_info->response[ $theme->get_stylesheet() ] ) && null !== $all_update_info->response[ $theme->get_stylesheet() ] ) ? (array) $all_update_info->response[ $theme->get_stylesheet() ] : null; $items[ $file ] = [ 'name' => $key, 'status' => $this->get_status( $theme ), 'update' => (bool) $update_info, 'update_version' => isset( $update_info['new_version'] ) ? $update_info['new_version'] : null, 'update_package' => isset( $update_info['package'] ) ? $update_info['package'] : null, 'version' => $theme->get( 'Version' ), 'update_id' => $theme->get_stylesheet(), 'title' => $theme->get( 'Name' ), 'description' => wordwrap( $theme->get( 'Description' ) ), 'author' => $theme->get( 'Author' ), ]; // Compare version and update information in theme list. if ( isset( $theme_version_info[ $key ] ) && false === $theme_version_info[ $key ] ) { $items[ $file ]['update'] = 'version higher than expected'; } if ( is_multisite() ) { if ( ! empty( $site_enabled[ $key ] ) && ! empty( $network_enabled[ $key ] ) ) { $items[ $file ]['enabled'] = 'network,site'; } elseif ( ! empty( $network_enabled[ $key ] ) ) { $items[ $file ]['enabled'] = 'network'; } elseif ( ! empty( $site_enabled[ $key ] ) ) { $items[ $file ]['enabled'] = 'site'; } else { $items[ $file ]['enabled'] = 'no'; } } } return $items; } /** * Check if current version of the theme is higher than the one available at WP.org. * * @param string $slug Theme slug. * @param string $version Theme current version. * * @return bool|string */ protected function is_theme_version_valid( $slug, $version ) { // Get Theme Info. $theme_info = themes_api( 'theme_information', array( 'slug' => $slug ) ); // Return empty string for themes not on WP.org. if ( is_wp_error( $theme_info ) ) { return ''; } // Compare theme version info. return ! version_compare( $version, $theme_info->version, '>' ); } /** * Get the status for a given theme. * * @param string $theme Theme to get the status for. * * @return string Status of the theme. */ protected function get_status( $theme ) { if ( $this->is_active_theme( $theme ) ) { return 'active'; } if ( $theme->get_stylesheet_directory() === get_template_directory() ) { return 'parent'; } return 'inactive'; } /** * Check whether a given theme is the active theme. * * @param string $theme Theme to check. * * @return bool Whether the provided theme is the active theme. */ protected function is_active_theme( $theme ) { return $theme->get_stylesheet_directory() === get_stylesheet_directory(); } /** * Get the available update info. * * @return mixed Available update info. */ protected function get_update_info() { return get_site_transient( 'update_themes' ); } } <?php namespace WP_CLI; /** * A theme upgrader class that clears the destination directory. */ class DestructiveThemeUpgrader extends \Theme_Upgrader { public function install_package( $args = array() ) { parent::upgrade_strings(); // Needed for the 'remove_old' string. $args['clear_destination'] = true; $args['abort_if_destination_exists'] = false; return parent::install_package( $args ); } } <?php use WP_CLI\ParsePluginNameInput; use WP_CLI\Utils; /** * Manages plugins, including installs, activations, and updates. * * See the WordPress [Plugin Handbook](https://developer.wordpress.org/plugins/) developer resource for more information on plugins. * * ## EXAMPLES * * # Activate plugin * $ wp plugin activate hello * Plugin 'hello' activated. * Success: Activated 1 of 1 plugins. * * # Deactivate plugin * $ wp plugin deactivate hello * Plugin 'hello' deactivated. * Success: Deactivated 1 of 1 plugins. * * # Delete plugin * $ wp plugin delete hello * Deleted 'hello' plugin. * Success: Deleted 1 of 1 plugins. * * # Install the latest version from wordpress.org and activate * $ wp plugin install bbpress --activate * Installing bbPress (2.5.9) * Downloading install package from https://downloads.wordpress.org/plugin/bbpress.2.5.9.zip... * Using cached file '/home/vagrant/.wp-cli/cache/plugin/bbpress-2.5.9.zip'... * Unpacking the package... * Installing the plugin... * Plugin installed successfully. * Activating 'bbpress'... * Plugin 'bbpress' activated. * Success: Installed 1 of 1 plugins. * * @package wp-cli */ class Plugin_Command extends \WP_CLI\CommandWithUpgrade { use ParsePluginNameInput; protected $item_type = 'plugin'; protected $upgrade_refresh = 'wp_update_plugins'; protected $upgrade_transient = 'update_plugins'; protected $obj_fields = array( 'name', 'status', 'update', 'version', ); /** * Plugin fetcher instance. * * @var \WP_CLI\Fetchers\Plugin */ protected $fetcher; public function __construct() { require_once ABSPATH . 'wp-admin/includes/plugin.php'; require_once ABSPATH . 'wp-admin/includes/plugin-install.php'; parent::__construct(); $this->fetcher = new WP_CLI\Fetchers\Plugin(); } protected function get_upgrader_class( $force ) { return $force ? '\\WP_CLI\\DestructivePluginUpgrader' : 'Plugin_Upgrader'; } /** * Reveals the status of one or all plugins. * * ## OPTIONS * * [<plugin>] * : A particular plugin to show the status for. * * ## EXAMPLES * * # Displays status of all plugins * $ wp plugin status * 5 installed plugins: * I akismet 3.1.11 * I easy-digital-downloads 2.5.16 * A theme-check 20160523.1 * I wen-logo-slider 2.0.3 * M ns-pack 1.0.0 * Legend: I = Inactive, A = Active, M = Must Use * * # Displays status of a plugin * $ wp plugin status theme-check * Plugin theme-check details: * Name: Theme Check * Status: Active * Version: 20160523.1 * Author: Otto42, pross * Description: A simple and easy way to test your theme for all the latest WordPress standards and practices. A great theme development tool! */ public function status( $args ) { parent::status( $args ); } /** * Searches the WordPress.org plugin directory. * * Displays plugins in the WordPress.org plugin directory matching a given * search query. * * ## OPTIONS * * <search> * : The string to search for. * * [--page=<page>] * : Optional page to display. * --- * default: 1 * --- * * [--per-page=<per-page>] * : Optional number of results to display. * --- * default: 10 * --- * * [--field=<field>] * : Prints the value of a single field for each plugin. * * [--fields=<fields>] * : Ask for specific fields from the API. Defaults to name,slug,author_profile,rating. Acceptable values: * * **name**: Plugin Name * **slug**: Plugin Slug * **version**: Current Version Number * **author**: Plugin Author * **author_profile**: Plugin Author Profile * **contributors**: Plugin Contributors * **requires**: Plugin Minimum Requirements * **tested**: Plugin Tested Up To * **compatibility**: Plugin Compatible With * **rating**: Plugin Rating in Percent and Total Number * **ratings**: Plugin Ratings for each star (1-5) * **num_ratings**: Number of Plugin Ratings * **homepage**: Plugin Author's Homepage * **description**: Plugin's Description * **short_description**: Plugin's Short Description * **sections**: Plugin Readme Sections: description, installation, FAQ, screenshots, other notes, and changelog * **downloaded**: Plugin Download Count * **last_updated**: Plugin's Last Update * **added**: Plugin's Date Added to wordpress.org Repository * **tags**: Plugin's Tags * **versions**: Plugin's Available Versions with D/L Link * **donate_link**: Plugin's Donation Link * **banners**: Plugin's Banner Image Link * **icons**: Plugin's Icon Image Link * **active_installs**: Plugin's Number of Active Installs * **contributors**: Plugin's List of Contributors * **url**: Plugin's URL on wordpress.org * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - count * - json * - yaml * --- * * ## EXAMPLES * * $ wp plugin search dsgnwrks --per-page=20 --format=json * Success: Showing 3 of 3 plugins. * [{"name":"DsgnWrks Instagram Importer Debug","slug":"dsgnwrks-instagram-importer-debug","rating":0},{"name":"DsgnWrks Instagram Importer","slug":"dsgnwrks-instagram-importer","rating":84},{"name":"DsgnWrks Twitter Importer","slug":"dsgnwrks-twitter-importer","rating":80}] * * $ wp plugin search dsgnwrks --fields=name,version,slug,rating,num_ratings * Success: Showing 3 of 3 plugins. * +-----------------------------------+---------+-----------------------------------+--------+-------------+ * | name | version | slug | rating | num_ratings | * +-----------------------------------+---------+-----------------------------------+--------+-------------+ * | DsgnWrks Instagram Importer Debug | 0.1.6 | dsgnwrks-instagram-importer-debug | 0 | 0 | * | DsgnWrks Instagram Importer | 1.3.7 | dsgnwrks-instagram-importer | 84 | 23 | * | DsgnWrks Twitter Importer | 1.1.1 | dsgnwrks-twitter-importer | 80 | 1 | * +-----------------------------------+---------+-----------------------------------+--------+-------------+ */ public function search( $args, $assoc_args ) { parent::_search( $args, $assoc_args ); } protected function status_single( $args ) { $plugin = $this->fetcher->get_check( $args[0] ); $file = $plugin->file; $details = $this->get_details( $file ); $status = $this->format_status( $this->get_status( $file ), 'long' ); $version = $details['Version']; if ( $this->has_update( $file ) ) { $version .= ' (%gUpdate available%n)'; } echo WP_CLI::colorize( Utils\mustache_render( self::get_template_path( 'plugin-status.mustache' ), [ 'slug' => Utils\get_plugin_name( $file ), 'status' => $status, 'version' => $version, 'name' => $details['Name'], 'author' => $details['Author'], 'description' => $details['Description'], ] ) ); } protected function get_all_items() { $items = $this->get_item_list(); foreach ( get_mu_plugins() as $file => $mu_plugin ) { $mu_version = ''; if ( ! empty( $mu_plugin['Version'] ) ) { $mu_version = $mu_plugin['Version']; } $items[ $file ] = array( 'name' => Utils\get_plugin_name( $file ), 'status' => 'must-use', 'update' => false, 'update_version' => null, 'update_package' => null, 'version' => $mu_version, 'update_id' => '', 'title' => '', 'description' => '', 'file' => $file, ); } $raw_items = get_dropins(); $raw_data = _get_dropins(); foreach ( $raw_items as $name => $item_data ) { $description = ! empty( $raw_data[ $name ][0] ) ? $raw_data[ $name ][0] : ''; $items[ $name ] = [ 'name' => $name, 'title' => $item_data['Title'], 'description' => $description, 'status' => 'dropin', 'update' => false, 'update_version' => null, 'update_package' => null, 'update_id' => '', 'file' => $name, ]; } return $items; } /** * Activates one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to activate. * * [--all] * : If set, all plugins will be activated. * * [--network] * : If set, the plugin will be activated for the entire multisite network. * * ## EXAMPLES * * # Activate plugin * $ wp plugin activate hello * Plugin 'hello' activated. * Success: Activated 1 of 1 plugins. * * # Activate plugin in entire multisite network * $ wp plugin activate hello --network * Plugin 'hello' network activated. * Success: Network activated 1 of 1 plugins. */ public function activate( $args, $assoc_args = array() ) { $network_wide = Utils\get_flag_value( $assoc_args, 'network' ); $all = Utils\get_flag_value( $assoc_args, 'all', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } $successes = 0; $errors = 0; $plugins = $this->fetcher->get_many( $args ); if ( count( $plugins ) < count( $args ) ) { $errors = count( $args ) - count( $plugins ); } foreach ( $plugins as $plugin ) { $status = $this->get_status( $plugin->file ); if ( $all && in_array( $status, [ 'active', 'active-network' ], true ) ) { continue; } // Network-active is the highest level of activation status. if ( 'active-network' === $status ) { WP_CLI::warning( "Plugin '{$plugin->name}' is already network active." ); continue; } // Don't reactivate active plugins, but do let them become network-active. if ( ! $network_wide && 'active' === $status ) { WP_CLI::warning( "Plugin '{$plugin->name}' is already active." ); continue; } // Plugins need to be deactivated before being network activated. if ( $network_wide && 'active' === $status ) { deactivate_plugins( $plugin->file, false, false ); } $result = activate_plugin( $plugin->file, '', $network_wide ); if ( is_wp_error( $result ) ) { $message = $result->get_error_message(); $message = preg_replace( '/<a\s[^>]+>.*<\/a>/im', '', $message ); $message = wp_strip_all_tags( $message ); $message = str_replace( 'Error: ', '', $message ); WP_CLI::warning( "Failed to activate plugin. {$message}" ); } else { $this->active_output( $plugin->name, $plugin->file, $network_wide, 'activate' ); $successes++; } } if ( ! $this->chained_command ) { $verb = $network_wide ? 'network activate' : 'activate'; Utils\report_batch_operation_results( 'plugin', $verb, count( $args ), $successes, $errors ); } } /** * Deactivates one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to deactivate. * * [--uninstall] * : Uninstall the plugin after deactivation. * * [--all] * : If set, all plugins will be deactivated. * * [--network] * : If set, the plugin will be deactivated for the entire multisite network. * * ## EXAMPLES * * # Deactivate plugin * $ wp plugin deactivate hello * Plugin 'hello' deactivated. * Success: Deactivated 1 of 1 plugins. */ public function deactivate( $args, $assoc_args = array() ) { $network_wide = Utils\get_flag_value( $assoc_args, 'network' ); $disable_all = Utils\get_flag_value( $assoc_args, 'all' ); $args = $this->check_optional_args_and_all( $args, $disable_all ); if ( ! $args ) { return; } $successes = 0; $errors = 0; $plugins = $this->fetcher->get_many( $args ); if ( count( $plugins ) < count( $args ) ) { $errors = count( $args ) - count( $plugins ); } foreach ( $plugins as $plugin ) { $status = $this->get_status( $plugin->file ); if ( $disable_all && ! in_array( $status, [ 'active', 'active-network' ], true ) ) { continue; } // Network active plugins must be explicitly deactivated. if ( ! $network_wide && 'active-network' === $status ) { WP_CLI::warning( "Plugin '{$plugin->name}' is network active and must be deactivated with --network flag." ); $errors++; continue; } if ( ! in_array( $status, [ 'active', 'active-network' ], true ) ) { WP_CLI::warning( "Plugin '{$plugin->name}' isn't active." ); continue; } deactivate_plugins( $plugin->file, false, $network_wide ); if ( ! is_network_admin() ) { update_option( 'recently_activated', array( $plugin->file => time() ) + (array) get_option( 'recently_activated' ) ); } else { update_site_option( 'recently_activated', array( $plugin->file => time() ) + (array) get_site_option( 'recently_activated' ) ); } $this->active_output( $plugin->name, $plugin->file, $network_wide, 'deactivate' ); $successes++; if ( Utils\get_flag_value( $assoc_args, 'uninstall' ) ) { WP_CLI::log( "Uninstalling '{$plugin->name}'..." ); $this->chained_command = true; $this->uninstall( array( $plugin->name ) ); $this->chained_command = false; } } if ( ! $this->chained_command ) { $verb = $network_wide ? 'network deactivate' : 'deactivate'; Utils\report_batch_operation_results( 'plugin', $verb, count( $args ), $successes, $errors ); } } /** * Toggles a plugin's activation state. * * If the plugin is active, then it will be deactivated. If the plugin is * inactive, then it will be activated. * * ## OPTIONS * * <plugin>... * : One or more plugins to toggle. * * [--network] * : If set, the plugin will be toggled for the entire multisite network. * * ## EXAMPLES * * # Akismet is currently activated * $ wp plugin toggle akismet * Plugin 'akismet' deactivated. * Success: Toggled 1 of 1 plugins. * * # Akismet is currently deactivated * $ wp plugin toggle akismet * Plugin 'akismet' activated. * Success: Toggled 1 of 1 plugins. */ public function toggle( $args, $assoc_args = array() ) { $network_wide = Utils\get_flag_value( $assoc_args, 'network' ); $successes = 0; $errors = 0; $plugins = $this->fetcher->get_many( $args ); if ( count( $plugins ) < count( $args ) ) { $errors = count( $args ) - count( $plugins ); } $this->chained_command = true; foreach ( $plugins as $plugin ) { if ( $this->check_active( $plugin->file, $network_wide ) ) { $this->deactivate( array( $plugin->name ), $assoc_args ); } else { $this->activate( array( $plugin->name ), $assoc_args ); } $successes++; } $this->chained_command = false; Utils\report_batch_operation_results( 'plugin', 'toggle', count( $args ), $successes, $errors ); } /** * Gets the path to a plugin or to the plugin directory. * * ## OPTIONS * * [<plugin>] * : The plugin to get the path to. If not set, will return the path to the * plugins directory. * * [--dir] * : If set, get the path to the closest parent directory, instead of the * plugin file. * * ## EXAMPLES * * $ cd $(wp plugin path) && pwd * /var/www/wordpress/wp-content/plugins */ public function path( $args, $assoc_args ) { $path = untrailingslashit( WP_PLUGIN_DIR ); if ( ! empty( $args ) ) { $plugin = $this->fetcher->get_check( $args[0] ); $path .= '/' . $plugin->file; if ( Utils\get_flag_value( $assoc_args, 'dir' ) ) { $path = dirname( $path ); } } WP_CLI::line( $path ); } protected function install_from_repo( $slug, $assoc_args ) { $api = plugins_api( 'plugin_information', array( 'slug' => $slug ) ); if ( is_wp_error( $api ) ) { return $api; } if ( isset( $assoc_args['version'] ) ) { self::alter_api_response( $api, $assoc_args['version'] ); } $status = install_plugin_install_status( $api ); if ( ! Utils\get_flag_value( $assoc_args, 'force' ) && 'install' !== $status['status'] ) { // We know this will fail, so avoid a needless download of the package. return new WP_Error( 'already_installed', 'Plugin already installed.' ); } WP_CLI::log( sprintf( 'Installing %s (%s)', html_entity_decode( $api->name, ENT_QUOTES ), $api->version ) ); if ( Utils\get_flag_value( $assoc_args, 'version' ) !== 'dev' ) { WP_CLI::get_http_cache_manager()->whitelist_package( $api->download_link, $this->item_type, $api->slug, $api->version ); } // Ignore failures on accessing SSL "https://api.wordpress.org/plugins/update-check/1.1/" in `wp_update_plugins()` which seem to occur intermittently. set_error_handler( array( __CLASS__, 'error_handler' ), E_USER_WARNING | E_USER_NOTICE ); $result = $this->get_upgrader( $assoc_args )->install( $api->download_link ); restore_error_handler(); return $result; } /** * Updates one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to update. * * [--all] * : If set, all plugins that have updates will be updated. * * [--exclude=<name>] * : Comma separated list of plugin names that should be excluded from updating. * * [--minor] * : Only perform updates for minor releases (e.g. from 1.3 to 1.4 instead of 2.0) * * [--patch] * : Only perform updates for patch releases (e.g. from 1.3 to 1.3.3 instead of 1.4) * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - summary * --- * * [--version=<version>] * : If set, the plugin will be updated to the specified version. * * [--dry-run] * : Preview which plugins would be updated. * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * $ wp plugin update bbpress --version=dev * Installing bbPress (Development Version) * Downloading install package from https://downloads.wordpress.org/plugin/bbpress.zip... * Unpacking the package... * Installing the plugin... * Removing the old version of the plugin... * Plugin updated successfully. * Success: Updated 1 of 2 plugins. * * $ wp plugin update --all * Enabling Maintenance mode... * Downloading update from https://downloads.wordpress.org/plugin/akismet.3.1.11.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the plugin... * Plugin updated successfully. * Downloading update from https://downloads.wordpress.org/plugin/nginx-champuru.3.2.0.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the plugin... * Plugin updated successfully. * Disabling Maintenance mode... * +------------------------+-------------+-------------+---------+ * | name | old_version | new_version | status | * +------------------------+-------------+-------------+---------+ * | akismet | 3.1.3 | 3.1.11 | Updated | * | nginx-cache-controller | 3.1.1 | 3.2.0 | Updated | * +------------------------+-------------+-------------+---------+ * Success: Updated 2 of 2 plugins. * * $ wp plugin update --all --exclude=akismet * Enabling Maintenance mode... * Downloading update from https://downloads.wordpress.org/plugin/nginx-champuru.3.2.0.zip... * Unpacking the update... * Installing the latest version... * Removing the old version of the plugin... * Plugin updated successfully. * Disabling Maintenance mode... * +------------------------+-------------+-------------+---------+ * | name | old_version | new_version | status | * +------------------------+-------------+-------------+---------+ * | nginx-cache-controller | 3.1.1 | 3.2.0 | Updated | * +------------------------+-------------+-------------+---------+ * * @alias upgrade */ public function update( $args, $assoc_args ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); $args = $this->check_optional_args_and_all( $args, $all ); if ( ! $args ) { return; } if ( isset( $assoc_args['version'] ) ) { foreach ( $this->fetcher->get_many( $args ) as $plugin ) { $assoc_args['force'] = 1; $this->install( array( $plugin->name ), $assoc_args ); } } else { parent::update_many( $args, $assoc_args ); } } protected function get_item_list() { $items = []; $duplicate_names = []; foreach ( $this->get_all_plugins() as $file => $details ) { $all_update_info = $this->get_update_info(); $update_info = ( isset( $all_update_info->response[ $file ] ) && null !== $all_update_info->response[ $file ] ) ? (array) $all_update_info->response[ $file ] : null; $name = Utils\get_plugin_name( $file ); if ( ! isset( $duplicate_names[ $name ] ) ) { $duplicate_names[ $name ] = array(); } $duplicate_names[ $name ][] = $file; $items[ $file ] = [ 'name' => $name, 'status' => $this->get_status( $file ), 'update' => (bool) $update_info, 'update_version' => isset( $update_info ) && isset( $update_info['new_version'] ) ? $update_info['new_version'] : null, 'update_package' => isset( $update_info ) && isset( $update_info['package'] ) ? $update_info['package'] : null, 'version' => $details['Version'], 'update_id' => $file, 'title' => $details['Name'], 'description' => wordwrap( $details['Description'] ), 'file' => $file, ]; if ( null === $update_info ) { // Get info for all plugins that don't have an update. $plugin_update_info = isset( $all_update_info->no_update[ $file ] ) ? $all_update_info->no_update[ $file ] : null; // Compare version and update information in plugin list. if ( null !== $plugin_update_info && version_compare( $details['Version'], $plugin_update_info->new_version, '>' ) ) { $items[ $file ]['update'] = static::INVALID_VERSION_MESSAGE; } } } foreach ( $duplicate_names as $name => $files ) { if ( count( $files ) <= 1 ) { continue; } foreach ( $files as $file ) { $items[ $file ]['name'] = str_replace( '.' . pathinfo( $file, PATHINFO_EXTENSION ), '', $file ); } } return $items; } protected function filter_item_list( $items, $args ) { $basenames = wp_list_pluck( $this->fetcher->get_many( $args ), 'file' ); return Utils\pick_fields( $items, $basenames ); } /** * Installs one or more plugins. * * ## OPTIONS * * <plugin|zip|url>... * : One or more plugins to install. Accepts a plugin slug, the path to a local zip file, or a URL to a remote zip file. * * [--version=<version>] * : If set, get that particular version from wordpress.org, instead of the * stable version. * * [--force] * : If set, the command will overwrite any installed version of the plugin, without prompting * for confirmation. * * [--activate] * : If set, the plugin will be activated immediately after install. * * [--activate-network] * : If set, the plugin will be network activated immediately after install * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Install the latest version from wordpress.org and activate * $ wp plugin install bbpress --activate * Installing bbPress (2.5.9) * Downloading install package from https://downloads.wordpress.org/plugin/bbpress.2.5.9.zip... * Using cached file '/home/vagrant/.wp-cli/cache/plugin/bbpress-2.5.9.zip'... * Unpacking the package... * Installing the plugin... * Plugin installed successfully. * Activating 'bbpress'... * Plugin 'bbpress' activated. * Success: Installed 1 of 1 plugins. * * # Install the development version from wordpress.org * $ wp plugin install bbpress --version=dev * Installing bbPress (Development Version) * Downloading install package from https://downloads.wordpress.org/plugin/bbpress.zip... * Unpacking the package... * Installing the plugin... * Plugin installed successfully. * Success: Installed 1 of 1 plugins. * * # Install from a local zip file * $ wp plugin install ../my-plugin.zip * Unpacking the package... * Installing the plugin... * Plugin installed successfully. * Success: Installed 1 of 1 plugins. * * # Install from a remote zip file * $ wp plugin install http://s3.amazonaws.com/bucketname/my-plugin.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef * Downloading install package from http://s3.amazonaws.com/bucketname/my-plugin.zip?AWSAccessKeyId=123&Expires=456&Signature=abcdef * Unpacking the package... * Installing the plugin... * Plugin installed successfully. * Success: Installed 1 of 1 plugins. * * # Update from a remote zip file * $ wp plugin install https://github.com/envato/wp-envato-market/archive/master.zip --force * Downloading install package from https://github.com/envato/wp-envato-market/archive/master.zip * Unpacking the package... * Installing the plugin... * Renamed Github-based project from 'wp-envato-market-master' to 'wp-envato-market'. * Plugin updated successfully * Success: Installed 1 of 1 plugins. * * # Forcefully re-install all installed plugins * $ wp plugin install $(wp plugin list --field=name) --force * Installing Akismet (3.1.11) * Downloading install package from https://downloads.wordpress.org/plugin/akismet.3.1.11.zip... * Unpacking the package... * Installing the plugin... * Removing the old version of the plugin... * Plugin updated successfully * Success: Installed 1 of 1 plugins. */ public function install( $args, $assoc_args ) { if ( ! is_dir( WP_PLUGIN_DIR ) ) { wp_mkdir_p( WP_PLUGIN_DIR ); } parent::install( $args, $assoc_args ); } /** * Gets details about an installed plugin. * * ## OPTIONS * * <plugin> * : The plugin to get. * * [--field=<field>] * : Instead of returning the whole plugin, returns the value of a single field. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * $ wp plugin get bbpress --format=json * {"name":"bbpress","title":"bbPress","author":"The bbPress Contributors","version":"2.6-alpha","description":"bbPress is forum software with a twist from the creators of WordPress.","status":"active"} */ public function get( $args, $assoc_args ) { $plugin = $this->fetcher->get_check( $args[0] ); $file = $plugin->file; $plugin_data = get_plugin_data( WP_PLUGIN_DIR . '/' . $file, false, false ); $plugin_obj = (object) [ 'name' => Utils\get_plugin_name( $file ), 'title' => $plugin_data['Name'], 'author' => $plugin_data['Author'], 'version' => $plugin_data['Version'], 'description' => wordwrap( $plugin_data['Description'] ), 'status' => $this->get_status( $file ), ]; if ( empty( $assoc_args['fields'] ) ) { $plugin_array = get_object_vars( $plugin_obj ); $assoc_args['fields'] = array_keys( $plugin_array ); } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_item( $plugin_obj ); } /** * Uninstalls one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to uninstall. * * [--deactivate] * : Deactivate the plugin before uninstalling. Default behavior is to warn and skip if the plugin is active. * * [--skip-delete] * : If set, the plugin files will not be deleted. Only the uninstall procedure * will be run. * * [--all] * : If set, all plugins will be uninstalled. * * ## EXAMPLES * * $ wp plugin uninstall hello * Uninstalled and deleted 'hello' plugin. * Success: Uninstalled 1 of 1 plugins. */ public function uninstall( $args, $assoc_args = array() ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); // Check if plugin names or --all is passed. $args = $this->check_optional_args_and_all( $args, $all, 'uninstall' ); if ( ! $args ) { return; } $successes = 0; $errors = 0; $plugins = $this->fetcher->get_many( $args ); if ( count( $plugins ) < count( $args ) ) { $errors = count( $args ) - count( $plugins ); } foreach ( $plugins as $plugin ) { if ( is_plugin_active( $plugin->file ) && ! WP_CLI\Utils\get_flag_value( $assoc_args, 'deactivate' ) ) { WP_CLI::warning( "The '{$plugin->name}' plugin is active." ); $errors++; continue; } if ( Utils\get_flag_value( $assoc_args, 'deactivate' ) ) { WP_CLI::log( "Deactivating '{$plugin->name}'..." ); $this->chained_command = true; $this->deactivate( array( $plugin->name ) ); $this->chained_command = false; } uninstall_plugin( $plugin->file ); if ( ! Utils\get_flag_value( $assoc_args, 'skip-delete' ) && $this->delete_plugin( $plugin ) ) { WP_CLI::log( "Uninstalled and deleted '$plugin->name' plugin." ); } else { WP_CLI::log( "Ran uninstall procedure for '$plugin->name' plugin without deleting." ); } $successes++; } if ( ! $this->chained_command ) { Utils\report_batch_operation_results( 'plugin', 'uninstall', count( $args ), $successes, $errors ); } } /** * Checks if a given plugin is installed. * * Returns exit code 0 when installed, 1 when uninstalled. * * ## OPTIONS * * <plugin> * : The plugin to check. * * ## EXAMPLES * * # Check whether plugin is installed; exit status 0 if installed, otherwise 1 * $ wp plugin is-installed hello * $ echo $? * 1 * * @subcommand is-installed */ public function is_installed( $args, $assoc_args = array() ) { if ( $this->fetcher->get( $args[0] ) ) { WP_CLI::halt( 0 ); } else { WP_CLI::halt( 1 ); } } /** * Checks if a given plugin is active. * * Returns exit code 0 when active, 1 when not active. * * ## OPTIONS * * <plugin> * : The plugin to check. * * [--network] * : If set, check if plugin is network-activated. * * ## EXAMPLES * * # Check whether plugin is Active; exit status 0 if active, otherwise 1 * $ wp plugin is-active hello * $ echo $? * 1 * * @subcommand is-active */ public function is_active( $args, $assoc_args = array() ) { $network_wide = Utils\get_flag_value( $assoc_args, 'network' ); $plugin = $this->fetcher->get( $args[0] ); if ( ! $plugin ) { WP_CLI::halt( 1 ); } $this->check_active( $plugin->file, $network_wide ) ? WP_CLI::halt( 0 ) : WP_CLI::halt( 1 ); } /** * Deletes plugin files without deactivating or uninstalling. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to delete. * * [--all] * : If set, all plugins will be deleted. * * ## EXAMPLES * * # Delete plugin * $ wp plugin delete hello * Deleted 'hello' plugin. * Success: Deleted 1 of 1 plugins. * * # Delete inactive plugins * $ wp plugin delete $(wp plugin list --status=inactive --field=name) * Deleted 'tinymce-templates' plugin. * Success: Deleted 1 of 1 plugins. */ public function delete( $args, $assoc_args = array() ) { $all = Utils\get_flag_value( $assoc_args, 'all', false ); // Check if plugin names or --all is passed. $args = $this->check_optional_args_and_all( $args, $all, 'delete' ); if ( ! $args ) { return; } $successes = 0; $errors = 0; foreach ( $this->fetcher->get_many( $args ) as $plugin ) { if ( $this->delete_plugin( $plugin ) ) { WP_CLI::log( "Deleted '{$plugin->name}' plugin." ); $successes++; } else { $errors++; } } if ( ! $this->chained_command ) { Utils\report_batch_operation_results( 'plugin', 'delete', count( $args ), $successes, $errors ); } } /** * Gets a list of plugins. * * Displays a list of the plugins installed on the site with activation * status, whether or not there's an update available, etc. * * Use `--status=dropin` to list installed dropins (e.g. `object-cache.php`). * * ## OPTIONS * * [--<field>=<value>] * : Filter results based on the value of a field. * * [--field=<field>] * : Prints the value of a single field for each plugin. * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - count * - json * - yaml * --- * * [--status=<status>] * : Filter the output by plugin status. * --- * options: * - active * - active-network * - dropin * - inactive * - must-use * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each plugin: * * * name * * status * * update * * version * * These fields are optionally available: * * * update_version * * update_package * * update_id * * title * * description * * file * * ## EXAMPLES * * # List active plugins on the site. * $ wp plugin list --status=active --format=json * [{"name":"dynamic-hostname","status":"active","update":"none","version":"0.4.2"},{"name":"tinymce-templates","status":"active","update":"none","version":"4.4.3"},{"name":"wp-multibyte-patch","status":"active","update":"none","version":"2.4"},{"name":"wp-total-hacks","status":"active","update":"none","version":"2.0.1"}] * * # List plugins on each site in a network. * $ wp site list --field=url | xargs -I % wp plugin list --url=% * +---------+----------------+--------+---------+ * | name | status | update | version | * +---------+----------------+--------+---------+ * | akismet | active-network | none | 3.1.11 | * | hello | inactive | none | 1.6 | * +---------+----------------+--------+---------+ * +---------+----------------+--------+---------+ * | name | status | update | version | * +---------+----------------+--------+---------+ * | akismet | active-network | none | 3.1.11 | * | hello | inactive | none | 1.6 | * +---------+----------------+--------+---------+ * * @subcommand list */ public function list_( $_, $assoc_args ) { parent::_list( $_, $assoc_args ); } /* PRIVATES */ private function check_active( $file, $network_wide ) { $required = $network_wide ? 'active-network' : 'active'; return $required === $this->get_status( $file ); } private function active_output( $name, $file, $network_wide, $action ) { $network_wide = $network_wide || ( is_multisite() && is_network_only_plugin( $file ) ); $check = $this->check_active( $file, $network_wide ); if ( ( 'activate' === $action ) ? $check : ! $check ) { if ( $network_wide ) { WP_CLI::log( "Plugin '{$name}' network {$action}d." ); } else { WP_CLI::log( "Plugin '{$name}' {$action}d." ); } } else { WP_CLI::warning( "Could not {$action} the '{$name}' plugin." ); } } protected function get_status( $file ) { if ( is_plugin_active_for_network( $file ) ) { return 'active-network'; } if ( is_plugin_active( $file ) ) { return 'active'; } return 'inactive'; } /** * Gets the template path based on installation type. */ private static function get_template_path( $template ) { $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $template_path = "{$command_root}/templates/{$template}"; if ( ! file_exists( $template_path ) ) { WP_CLI::error( "Couldn't find {$template}" ); } return $template_path; } /** * Gets the details of a plugin. * * @param object * @return array */ private function get_details( $file ) { $plugin_folder = get_plugins( '/' . plugin_basename( dirname( $file ) ) ); $plugin_file = Utils\basename( $file ); return $plugin_folder[ $plugin_file ]; } private function delete_plugin( $plugin ) { $plugin_dir = dirname( $plugin->file ); if ( '.' === $plugin_dir ) { $plugin_dir = $plugin->file; } $path = path_join( WP_PLUGIN_DIR, $plugin_dir ); if ( Utils\is_windows() ) { // Handles plugins that are not in own folders // e.g. Hello Dolly -> plugins/hello.php if ( is_file( $path ) ) { $command = 'del /f /q '; } else { $command = 'rd /s /q '; } $path = str_replace( '/', '\\', $path ); } else { $command = 'rm -rf '; } return ! WP_CLI::launch( $command . escapeshellarg( $path ) ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_import_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_import_autoloader ) ) { require_once $wpcli_import_autoloader; } WP_CLI::add_command( 'import', 'Import_Command' ); <?php class Import_Command extends WP_CLI_Command { public $processed_posts = array(); /** * Imports content from a given WXR file. * * Provides a command line interface to the WordPress Importer plugin, for * performing data migrations. * * ## OPTIONS * * <file>... * : Path to one or more valid WXR files for importing. Directories are also accepted. * * --authors=<authors> * : How the author mapping should be handled. Options are 'create', 'mapping.csv', or 'skip'. The first will create any non-existent users from the WXR file. The second will read author mapping associations from a CSV, or create a CSV for editing if the file path doesn't exist. The CSV requires two columns, and a header row like "old_user_login,new_user_login". The last option will skip any author mapping. * * [--skip=<data-type>] * : Skip importing specific data. Supported options are: 'attachment' and 'image_resize' (skip time-consuming thumbnail generation). * * ## EXAMPLES * * # Import content from a WXR file * $ wp import example.wordpress.2016-06-21.xml --authors=create * Starting the import process... * Processing post #1 ("Hello world!") (post_type: post) * -- 1 of 1 * -- Tue, 21 Jun 2016 05:31:12 +0000 * -- Imported post as post_id #1 * Success: Finished importing from 'example.wordpress.2016-06-21.xml' file. */ public function __invoke( $args, $assoc_args ) { $defaults = array( 'authors' => null, 'skip' => array(), ); $assoc_args = wp_parse_args( $assoc_args, $defaults ); if ( ! is_array( $assoc_args['skip'] ) ) { $assoc_args['skip'] = explode( ',', $assoc_args['skip'] ); } $importer = $this->is_importer_available(); if ( is_wp_error( $importer ) ) { WP_CLI::error( $importer ); } $this->add_wxr_filters(); WP_CLI::log( 'Starting the import process...' ); $new_args = array(); foreach ( $args as $arg ) { if ( is_dir( $arg ) ) { $dir = WP_CLI\Utils\trailingslashit( $arg ); $files = glob( $dir . '*.wxr' ); if ( ! empty( $files ) ) { $new_args = array_merge( $new_args, $files ); } $files = glob( $dir . '*.xml' ); if ( ! empty( $files ) ) { $new_args = array_merge( $new_args, $files ); } } else { if ( file_exists( $arg ) ) { $new_args[] = $arg; } } } $args = $new_args; foreach ( $args as $file ) { if ( ! is_readable( $file ) ) { WP_CLI::warning( "Can't read '$file' file." ); } $ret = $this->import_wxr( $file, $assoc_args ); if ( is_wp_error( $ret ) ) { WP_CLI::error( $ret ); } else { WP_CLI::log( '' ); // WXR import ends with HTML, so make sure message is on next line WP_CLI::success( "Finished importing from '$file' file." ); } } } /** * Imports a WXR file. */ private function import_wxr( $file, $args ) { $wp_import = new WP_Import(); $wp_import->processed_posts = $this->processed_posts; $import_data = $wp_import->parse( $file ); if ( is_wp_error( $import_data ) ) { return $import_data; } // Prepare the data to be used in process_author_mapping(); $wp_import->get_authors_from_import( $import_data ); // We no longer need the original data, so unset to avoid using excess // memory. unset( $import_data ); $author_data = array(); foreach ( $wp_import->authors as $wxr_author ) { $author = new \stdClass(); // Always in the WXR $author->user_login = $wxr_author['author_login']; // Should be in the WXR; no guarantees if ( isset( $wxr_author['author_email'] ) ) { $author->user_email = $wxr_author['author_email']; } if ( isset( $wxr_author['author_display_name'] ) ) { $author->display_name = $wxr_author['author_display_name']; } if ( isset( $wxr_author['author_first_name'] ) ) { $author->first_name = $wxr_author['author_first_name']; } if ( isset( $wxr_author['author_last_name'] ) ) { $author->last_name = $wxr_author['author_last_name']; } $author_data[] = $author; } // Build the author mapping $author_mapping = $this->process_author_mapping( $args['authors'], $author_data ); if ( is_wp_error( $author_mapping ) ) { return $author_mapping; } $author_in = wp_list_pluck( $author_mapping, 'old_user_login' ); $author_out = wp_list_pluck( $author_mapping, 'new_user_login' ); unset( $author_mapping, $author_data ); // $user_select needs to be an array of user IDs $user_select = array(); $invalid_user_select = array(); foreach ( $author_out as $author_login ) { $user = get_user_by( 'login', $author_login ); if ( $user ) { $user_select[] = $user->ID; } else { $invalid_user_select[] = $author_login; } } if ( ! empty( $invalid_user_select ) ) { return new WP_Error( 'invalid-author-mapping', sprintf( 'These user_logins are invalid: %s', implode( ',', $invalid_user_select ) ) ); } unset( $author_out ); // Drive the import $wp_import->fetch_attachments = ! in_array( 'attachment', $args['skip'], true ); $_GET = array( 'import' => 'wordpress', 'step' => 2, ); $_POST = array( 'imported_authors' => $author_in, 'user_map' => $user_select, 'fetch_attachments' => $wp_import->fetch_attachments, ); if ( in_array( 'image_resize', $args['skip'], true ) ) { add_filter( 'intermediate_image_sizes_advanced', array( $this, 'filter_set_image_sizes' ) ); } $GLOBALS['wpcli_import_current_file'] = basename( $file ); $wp_import->import( $file ); $this->processed_posts += $wp_import->processed_posts; return true; } public function filter_set_image_sizes( $sizes ) { // Return null here to prevent the core image resizing logic from running. return null; } /** * Defines useful verbosity filters for the WXR importer. */ private function add_wxr_filters() { add_filter( 'wp_import_posts', function( $posts ) { global $wpcli_import_counts; $wpcli_import_counts['current_post'] = 0; $wpcli_import_counts['total_posts'] = count( $posts ); return $posts; }, 10 ); add_filter( 'wp_import_post_comments', function( $comments, $post_id, $post ) { global $wpcli_import_counts; $wpcli_import_counts['current_comment'] = 0; $wpcli_import_counts['total_comments'] = count( $comments ); return $comments; }, 10, 3 ); add_filter( 'wp_import_post_data_raw', function( $post ) { global $wpcli_import_counts, $wpcli_import_current_file; $wpcli_import_counts['current_post']++; WP_CLI::log( '' ); WP_CLI::log( '' ); WP_CLI::log( sprintf( 'Processing post #%d ("%s") (post_type: %s)', $post['post_id'], $post['post_title'], $post['post_type'] ) ); WP_CLI::log( sprintf( '-- %s of %s (in file %s)', number_format( $wpcli_import_counts['current_post'] ), number_format( $wpcli_import_counts['total_posts'] ), $wpcli_import_current_file ) ); WP_CLI::log( '-- ' . date( 'r' ) ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date return $post; } ); add_action( 'wp_import_insert_post', function( $post_id, $original_post_id, $post, $postdata ) { global $wpcli_import_counts; if ( is_wp_error( $post_id ) ) { WP_CLI::warning( '-- Error importing post: ' . $post_id->get_error_code() ); } else { WP_CLI::log( "-- Imported post as post_id #{$post_id}" ); } if ( 0 === ( $wpcli_import_counts['current_post'] % 500 ) ) { WP_CLI\Utils\wp_clear_object_cache(); WP_CLI::log( '-- Cleared object cache.' ); } }, 10, 4 ); add_action( 'wp_import_insert_term', function( $t, $import_term, $post_id, $post ) { WP_CLI::log( "-- Created term \"{$import_term['name']}\"" ); }, 10, 4 ); add_action( 'wp_import_set_post_terms', function( $tt_ids, $term_ids, $taxonomy, $post_id, $post ) { WP_CLI::log( '-- Added terms (' . implode( ',', $term_ids ) . ") for taxonomy \"{$taxonomy}\"" ); }, 10, 5 ); add_action( 'wp_import_insert_comment', function( $comment_id, $comment, $comment_post_id, $post ) { global $wpcli_import_counts; $wpcli_import_counts['current_comment']++; WP_CLI::log( sprintf( '-- Added comment #%d (%s of %s)', $comment_id, number_format( $wpcli_import_counts['current_comment'] ), number_format( $wpcli_import_counts['total_comments'] ) ) ); }, 10, 4 ); add_action( 'import_post_meta', function( $post_id, $key, $value ) { WP_CLI::log( "-- Added post_meta $key" ); }, 10, 3 ); } /** * Determines whether the requested importer is available. */ private function is_importer_available() { require_once ABSPATH . 'wp-admin/includes/plugin.php'; if ( class_exists( 'WP_Import' ) ) { return true; } $plugins = get_plugins(); $wordpress_importer = 'wordpress-importer/wordpress-importer.php'; if ( array_key_exists( $wordpress_importer, $plugins ) ) { $error_msg = "WordPress Importer needs to be activated. Try 'wp plugin activate wordpress-importer'."; } else { $error_msg = "WordPress Importer needs to be installed. Try 'wp plugin install wordpress-importer --activate'."; } return new WP_Error( 'importer-missing', $error_msg ); } /** * Processes how the authors should be mapped * * @param string $authors_arg The `--author` argument originally passed to command * @param array $author_data An array of WP_User-esque author objects * @return array|WP_Error $author_mapping Author mapping array if successful, WP_Error if something bad happened */ private function process_author_mapping( $authors_arg, $author_data ) { // Provided an author mapping file (method checks validity) if ( file_exists( $authors_arg ) ) { return $this->read_author_mapping_file( $authors_arg ); } // Provided a file reference, but the file doesn't yet exist if ( false !== stripos( $authors_arg, '.csv' ) ) { return $this->create_author_mapping_file( $authors_arg, $author_data ); } switch ( $authors_arg ) { // Create authors if they don't yet exist; maybe match on email or user_login case 'create': return $this->create_authors_for_mapping( $author_data ); // Skip any sort of author mapping case 'skip': return array(); default: return new WP_Error( 'invalid-argument', "'authors' argument is invalid." ); } } /** * Reads an author mapping file. */ private function read_author_mapping_file( $file ) { $author_mapping = array(); foreach ( new \WP_CLI\Iterators\CSV( $file ) as $i => $author ) { if ( ! array_key_exists( 'old_user_login', $author ) || ! array_key_exists( 'new_user_login', $author ) ) { return new WP_Error( 'invalid-author-mapping', "Author mapping file isn't properly formatted." ); } $author_mapping[] = $author; } return $author_mapping; } /** * Creates an author mapping file, based on provided author data. * * @return WP_Error The file was just now created, so some action needs to be taken */ private function create_author_mapping_file( $file, $author_data ) { if ( touch( $file ) ) { $author_mapping = array(); foreach ( $author_data as $author ) { $author_mapping[] = array( 'old_user_login' => $author->user_login, 'new_user_login' => $this->suggest_user( $author->user_login, $author->user_email ), ); } $file_resource = fopen( $file, 'w' ); \WP_CLI\utils\write_csv( $file_resource, $author_mapping, array( 'old_user_login', 'new_user_login' ) ); return new WP_Error( 'author-mapping-error', sprintf( 'Please update author mapping file before continuing: %s', $file ) ); } else { return new WP_Error( 'author-mapping-error', "Couldn't create author mapping file." ); } } /** * Creates users if they don't exist, and build an author mapping file. */ private function create_authors_for_mapping( $author_data ) { $author_mapping = array(); foreach ( $author_data as $author ) { if ( isset( $author->user_email ) ) { $user = get_user_by( 'email', $author->user_email ); if ( $user instanceof WP_User ) { $author_mapping[] = array( 'old_user_login' => $author->user_login, 'new_user_login' => $user->user_login, ); continue; } } $user = get_user_by( 'login', $author->user_login ); if ( $user instanceof WP_User ) { $author_mapping[] = array( 'old_user_login' => $author->user_login, 'new_user_login' => $user->user_login, ); continue; } $user = array( 'user_login' => '', 'user_email' => '', 'user_pass' => wp_generate_password(), ); $user = array_merge( $user, (array) $author ); $user_id = wp_insert_user( $user ); if ( is_wp_error( $user_id ) ) { return $user_id; } $user = get_user_by( 'id', $user_id ); $author_mapping[] = array( 'old_user_login' => $author->user_login, 'new_user_login' => $user->user_login, ); } return $author_mapping; } /** * Suggests a blog user based on the levenshtein distance. */ private function suggest_user( $author_user_login, $author_user_email = '' ) { if ( ! isset( $this->blog_users ) ) { $this->blog_users = get_users(); } $shortest = -1; $shortestavg = array(); $threshold = floor( ( strlen( $author_user_login ) / 100 ) * 10 ); // 10 % of the strlen are valid $closest = ''; foreach ( $this->blog_users as $user ) { // Before we resort to an algorithm, let's try for an exact match if ( $author_user_email && $user->user_email === $author_user_email ) { return $user->user_login; } $levs = array(); $levs[] = levenshtein( $author_user_login, $user->display_name ); $levs[] = levenshtein( $author_user_login, $user->user_login ); $levs[] = levenshtein( $author_user_login, $user->user_email ); $email_parts = explode( '@', $user->user_email ); $email_login = array_shift( $email_parts ); $levs[] = levenshtein( $author_user_login, $email_login ); rsort( $levs ); $lev = array_pop( $levs ); if ( 0 === $lev ) { $closest = $user->user_login; $shortest = 0; break; } if ( ( $lev <= $shortest || $shortest < 0 ) && $lev <= $threshold ) { $closest = $user->user_login; $shortest = $lev; } $shortestavg[] = $lev; } // in case all usernames have a common pattern if ( $shortest > ( array_sum( $shortestavg ) / count( $shortestavg ) ) ) { return ''; } return $closest; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_server_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_server_autoloader ) ) { require_once $wpcli_server_autoloader; } WP_CLI::add_command( 'server', 'Server_Command', array( 'before_invoke' => function() { $min_version = '5.4'; if ( version_compare( PHP_VERSION, $min_version, '<' ) ) { WP_CLI::error( "The `wp server` command requires PHP {$min_version} or newer." ); } }, ) ); <?php // Used by `wp server` to route requests. namespace WP_CLI\Router; /** * This is a copy of WordPress's add_filter() function. * * We duplicate it because WordPress is not loaded yet. */ function add_filter( $tag, $function_to_add, $priority = 10, $accepted_args = 1 ) { global $wp_filter, $merged_filters; $idx = _wp_filter_build_unique_id( $tag, $function_to_add, $priority ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited $wp_filter[ $tag ][ $priority ][ $idx ] = array( 'function' => $function_to_add, 'accepted_args' => $accepted_args, ); unset( $merged_filters[ $tag ] ); return true; } /** * This is a copy of WordPress's _wp_filter_build_unique_id() function. * * We duplicate it because WordPress is not loaded yet. */ function _wp_filter_build_unique_id( $tag, $function, $priority ) { global $wp_filter; static $filter_id_count = 0; if ( is_string( $function ) ) { return $function; } if ( is_object( $function ) ) { // Closures are currently implemented as objects $function = array( $function, '' ); } else { $function = (array) $function; } if ( is_object( $function[0] ) ) { // Object Class Calling if ( function_exists( 'spl_object_hash' ) ) { return spl_object_hash( $function[0] ) . $function[1]; } else { $obj_idx = get_class( $function[0] ) . $function[1]; if ( ! isset( $function[0]->wp_filter_id ) ) { if ( false === $priority ) { return false; } $obj_idx .= isset( $wp_filter[ $tag ][ $priority ] ) ? count( (array) $wp_filter[ $tag ][ $priority ] ) : $filter_id_count; $function[0]->wp_filter_id = $filter_id_count; ++$filter_id_count; } else { $obj_idx .= $function[0]->wp_filter_id; } return $obj_idx; } } elseif ( is_string( $function[0] ) ) { // Static Calling return $function[0] . '::' . $function[1]; } } function _get_full_host( $url ) { // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url $parsed_url = parse_url( $url ); $host = $parsed_url['host']; if ( isset( $parsed_url['port'] ) && 80 !== $parsed_url['port'] ) { $host .= ':' . $parsed_url['port']; } return $host; } // We need to trick WordPress into using the URL set by `wp server`, especially on multisite. add_filter( 'option_home', function ( $url ) { $GLOBALS['wpcli_server_original_url'] = $url; return 'http://' . $_SERVER['HTTP_HOST']; }, 20 ); add_filter( 'option_siteurl', function ( $url ) { if ( ! isset( $GLOBALS['wpcli_server_original_url'] ) ) { get_option( 'home' ); // trigger the option_home filter } $home_url_host = _get_full_host( $GLOBALS['wpcli_server_original_url'] ); $site_url_host = _get_full_host( $url ); if ( $site_url_host === $home_url_host ) { $url = str_replace( $site_url_host, $_SERVER['HTTP_HOST'], $url ); } return $url; }, 20 ); $_SERVER['SERVER_ADDR'] = gethostbyname( $_SERVER['SERVER_NAME'] ); $wpcli_server_root = $_SERVER['DOCUMENT_ROOT']; // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url $wpcli_server_path = '/' . ltrim( parse_url( urldecode( $_SERVER['REQUEST_URI'] ) )['path'], '/' ); if ( file_exists( $wpcli_server_root . $wpcli_server_path ) ) { if ( is_dir( $wpcli_server_root . $wpcli_server_path ) && substr( $wpcli_server_path, -1 ) !== '/' ) { header( "Location: $wpcli_server_path/" ); exit; } if ( strpos( $wpcli_server_path, '.php' ) !== false ) { chdir( dirname( $wpcli_server_root . $wpcli_server_path ) ); require_once $wpcli_server_root . $wpcli_server_path; } else { return false; } } else { chdir( $wpcli_server_root ); require_once 'index.php'; } <?php use WP_CLI\Utils; class Server_Command extends WP_CLI_Command { /** * Launches PHP's built-in web server for a specific WordPress installation. * * Uses `php -S` to launch a web server serving the WordPress webroot. * <http://php.net/manual/en/features.commandline.webserver.php> * * Importantly, PHP's built-in web server doesn't support `.htaccess` files. * If this is a requirement, please use a more advanced web server. * * ## OPTIONS * * [--host=<host>] * : The hostname to bind the server to. * --- * default: localhost * --- * * [--port=<port>] * : The port number to bind the server to. * --- * default: 8080 * --- * * [--docroot=<path>] * : The path to use as the document root. If the path global parameter is * set, the default value is it. * * [--config=<file>] * : Configure the server with a specific .ini file. * * ## EXAMPLES * * # Make the instance available on any address (with port 8080) * $ wp server --host=0.0.0.0 * PHP 5.6.9 Development Server started at Tue May 24 01:27:11 2016 * Listening on http://0.0.0.0:8080 * Document root is / * Press Ctrl-C to quit. * * # Run on port 80 (for multisite) * $ wp server --host=localhost.localdomain --port=80 * PHP 5.6.9 Development Server started at Tue May 24 01:30:06 2016 * Listening on http://localhost1.localdomain1:80 * Document root is / * Press Ctrl-C to quit. * * # Configure the server with a specific .ini file * $ wp server --config=development.ini * PHP 7.0.9 Development Server started at Mon Aug 22 12:09:04 2016 * Listening on http://localhost:8080 * Document root is / * Press Ctrl-C to quit. * * @when before_wp_load */ public function __invoke( $_, $assoc_args ) { $defaults = array( 'host' => 'localhost', 'port' => 8080, 'docroot' => ! is_null( WP_CLI::get_runner()->config['path'] ) ? WP_CLI::get_runner()->config['path'] : false, 'config' => get_cfg_var( 'cfg_file_path' ), ); $assoc_args = array_merge( $defaults, $assoc_args ); $docroot = $assoc_args['docroot']; if ( ! $docroot ) { $config_path = WP_CLI::get_runner()->project_config_path; if ( ! $config_path ) { $docroot = ABSPATH; } else { $docroot = dirname( $config_path ); } } // Get the path to the router file $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $router_path = $command_root . '/router.php'; if ( ! file_exists( $router_path ) ) { WP_CLI::error( "Couldn't find router.php" ); } $cmd = Utils\esc_cmd( '%s -S %s -t %s -c %s %s', WP_CLI::get_php_binary(), $assoc_args['host'] . ':' . $assoc_args['port'], $docroot, $assoc_args['config'], Utils\extract_from_phar( $router_path ) ); $descriptors = array( STDIN, STDOUT, STDERR ); // https://bugs.php.net/bug.php?id=60181 $options = array(); if ( Utils\is_windows() ) { $options['bypass_shell'] = true; } exit( proc_close( proc_open( $cmd, $descriptors, $pipes, null, null, $options ) ) ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_db_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_db_autoloader ) ) { require_once $wpcli_db_autoloader; } WP_CLI::add_command( 'db', 'DB_Command' ); <?php use WP_CLI\Formatter; use WP_CLI\Utils; /** * Performs basic database operations using credentials stored in wp-config.php. * * ## EXAMPLES * * # Create a new database. * $ wp db create * Success: Database created. * * # Drop an existing database. * $ wp db drop --yes * Success: Database dropped. * * # Reset the current database. * $ wp db reset --yes * Success: Database reset. * * # Execute a SQL query stored in a file. * $ wp db query < debug.sql * * @when after_wp_config_load */ class DB_Command extends WP_CLI_Command { /** * A list of incompatible SQL modes. * * Copied over from WordPress Core code. * @see https://github.com/WordPress/wordpress-develop/blob/5.4.0/src/wp-includes/wp-db.php#L559-L572 * * @var string[] Array of SQL mode names that are incompatible with WordPress. */ protected $sql_incompatible_modes = [ 'NO_ZERO_DATE', 'ONLY_FULL_GROUP_BY', 'STRICT_TRANS_TABLES', 'STRICT_ALL_TABLES', 'TRADITIONAL', 'ANSI', ]; /** * Creates a new database. * * Runs `CREATE_DATABASE` SQL statement using `DB_HOST`, `DB_NAME`, * `DB_USER` and `DB_PASSWORD` database credentials specified in * wp-config.php. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * ## EXAMPLES * * $ wp db create * Success: Database created. */ public function create( $_, $assoc_args ) { $this->run_query( self::get_create_query(), self::get_dbuser_dbpass_args( $assoc_args ) ); WP_CLI::success( 'Database created.' ); } /** * Deletes the existing database. * * Runs `DROP_DATABASE` SQL statement using `DB_HOST`, `DB_NAME`, * `DB_USER` and `DB_PASSWORD` database credentials specified in * wp-config.php. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--yes] * : Answer yes to the confirmation message. * * ## EXAMPLES * * $ wp db drop --yes * Success: Database dropped. */ public function drop( $_, $assoc_args ) { WP_CLI::confirm( "Are you sure you want to drop the '" . DB_NAME . "' database?", $assoc_args ); $this->run_query( sprintf( 'DROP DATABASE `%s`', DB_NAME ), self::get_dbuser_dbpass_args( $assoc_args ) ); WP_CLI::success( 'Database dropped.' ); } /** * Removes all tables from the database. * * Runs `DROP_DATABASE` and `CREATE_DATABASE` SQL statements using * `DB_HOST`, `DB_NAME`, `DB_USER` and `DB_PASSWORD` database credentials * specified in wp-config.php. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--yes] * : Answer yes to the confirmation message. * * ## EXAMPLES * * $ wp db reset --yes * Success: Database reset. */ public function reset( $_, $assoc_args ) { WP_CLI::confirm( "Are you sure you want to reset the '" . DB_NAME . "' database?", $assoc_args ); $mysql_args = self::get_dbuser_dbpass_args( $assoc_args ); $this->run_query( sprintf( 'DROP DATABASE IF EXISTS `%s`', DB_NAME ), $mysql_args ); $this->run_query( self::get_create_query(), $mysql_args ); WP_CLI::success( 'Database reset.' ); } /** * Removes all tables with `$table_prefix` from the database. * * Runs `DROP_TABLE` for each table that has a `$table_prefix` as specified * in wp-config.php. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--yes] * : Answer yes to the confirmation message. * * ## EXAMPLES * * # Delete all tables that match the current site prefix. * $ wp db clean --yes * Success: Tables dropped. * * @when after_wp_load */ public function clean( $_, $assoc_args ) { global $wpdb; WP_CLI::confirm( sprintf( "Are you sure you want to drop all the tables on '%s' that use the current site's database prefix ('%s')?", DB_NAME, $wpdb->get_blog_prefix() ), $assoc_args ); $mysql_args = self::get_dbuser_dbpass_args( $assoc_args ); $tables = Utils\wp_get_table_names( [], [ 'all-tables-with-prefix' => true ] ); foreach ( $tables as $table ) { $this->run_query( sprintf( 'DROP TABLE IF EXISTS `%s`.`%s`', DB_NAME, $table ), $mysql_args ); } WP_CLI::success( 'Tables dropped.' ); } /** * Checks the current status of the database. * * Runs `mysqlcheck` utility with `--check` using `DB_HOST`, * `DB_NAME`, `DB_USER` and `DB_PASSWORD` database credentials * specified in wp-config.php. * * [See docs](http://dev.mysql.com/doc/refman/5.7/en/check-table.html) * for more details on the `CHECK TABLE` statement. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysqlcheck. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysqlcheck. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysqlcheck. [Refer to mysqlcheck docs](https://dev.mysql.com/doc/en/mysqlcheck.html). * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * $ wp db check * Success: Database checked. */ public function check( $_, $assoc_args ) { $command = sprintf( '/usr/bin/env mysqlcheck%s %s', $this->get_defaults_flag_string( $assoc_args ), '%s' ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); $assoc_args['check'] = true; self::run( Utils\esc_cmd( $command, DB_NAME ), $assoc_args ); WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); WP_CLI::success( 'Database checked.' ); } /** * Optimizes the database. * * Runs `mysqlcheck` utility with `--optimize=true` using `DB_HOST`, * `DB_NAME`, `DB_USER` and `DB_PASSWORD` database credentials * specified in wp-config.php. * * [See docs](http://dev.mysql.com/doc/refman/5.7/en/optimize-table.html) * for more details on the `OPTIMIZE TABLE` statement. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysqlcheck. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysqlcheck. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysqlcheck. [Refer to mysqlcheck docs](https://dev.mysql.com/doc/en/mysqlcheck.html). * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * $ wp db optimize * Success: Database optimized. */ public function optimize( $_, $assoc_args ) { $command = sprintf( '/usr/bin/env mysqlcheck%s %s', $this->get_defaults_flag_string( $assoc_args ), '%s' ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); $assoc_args['optimize'] = true; self::run( Utils\esc_cmd( $command, DB_NAME ), $assoc_args ); WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); WP_CLI::success( 'Database optimized.' ); } /** * Repairs the database. * * Runs `mysqlcheck` utility with `--repair=true` using `DB_HOST`, * `DB_NAME`, `DB_USER` and `DB_PASSWORD` database credentials * specified in wp-config.php. * * [See docs](http://dev.mysql.com/doc/refman/5.7/en/repair-table.html) for * more details on the `REPAIR TABLE` statement. * * ## OPTIONS * * [--dbuser=<value>] * : Username to pass to mysqlcheck. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysqlcheck. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysqlcheck. [Refer to mysqlcheck docs](https://dev.mysql.com/doc/en/mysqlcheck.html). * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * $ wp db repair * Success: Database repaired. */ public function repair( $_, $assoc_args ) { $command = sprintf( '/usr/bin/env mysqlcheck%s %s', $this->get_defaults_flag_string( $assoc_args ), '%s' ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); $assoc_args['repair'] = true; self::run( Utils\esc_cmd( $command, DB_NAME ), $assoc_args ); WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); WP_CLI::success( 'Database repaired.' ); } /** * Opens a MySQL console using credentials from wp-config.php * * ## OPTIONS * * [--database=<database>] * : Use a specific database. Defaults to DB_NAME. * * [--default-character-set=<character-set>] * : Use a specific character set. Defaults to DB_CHARSET when defined. * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysql. [Refer to mysql docs](https://dev.mysql.com/doc/en/mysql-command-options.html). * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * # Open MySQL console * $ wp db cli * mysql> * * @alias connect */ public function cli( $_, $assoc_args ) { $command = sprintf( '/usr/bin/env mysql%s --no-auto-rehash', $this->get_defaults_flag_string( $assoc_args ) ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); if ( ! isset( $assoc_args['database'] ) ) { $assoc_args['database'] = DB_NAME; } WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); self::run( $command, $assoc_args, null, true ); } /** * Executes a SQL query against the database. * * Executes an arbitrary SQL query using `DB_HOST`, `DB_NAME`, `DB_USER` * and `DB_PASSWORD` database credentials specified in wp-config.php. * * ## OPTIONS * * [<sql>] * : A SQL query. If not passed, will try to read from STDIN. * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysql. [Refer to mysql docs](https://dev.mysql.com/doc/en/mysql-command-options.html). * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * # Execute a query stored in a file * $ wp db query < debug.sql * * # Check all tables in the database * $ wp db query "CHECK TABLE $(wp db tables | paste -s -d, -);" * +---------------------------------------+-------+----------+----------+ * | Table | Op | Msg_type | Msg_text | * +---------------------------------------+-------+----------+----------+ * | wordpress_dbase.wp_users | check | status | OK | * | wordpress_dbase.wp_usermeta | check | status | OK | * | wordpress_dbase.wp_posts | check | status | OK | * | wordpress_dbase.wp_comments | check | status | OK | * | wordpress_dbase.wp_links | check | status | OK | * | wordpress_dbase.wp_options | check | status | OK | * | wordpress_dbase.wp_postmeta | check | status | OK | * | wordpress_dbase.wp_terms | check | status | OK | * | wordpress_dbase.wp_term_taxonomy | check | status | OK | * | wordpress_dbase.wp_term_relationships | check | status | OK | * | wordpress_dbase.wp_termmeta | check | status | OK | * | wordpress_dbase.wp_commentmeta | check | status | OK | * +---------------------------------------+-------+----------+----------+ * * # Pass extra arguments through to MySQL * $ wp db query 'SELECT * FROM wp_options WHERE option_name="home"' --skip-column-names * +---+------+------------------------------+-----+ * | 2 | home | http://wordpress-develop.dev | yes | * +---+------+------------------------------+-----+ */ public function query( $args, $assoc_args ) { $command = sprintf( '/usr/bin/env mysql%s --no-auto-rehash', $this->get_defaults_flag_string( $assoc_args ) ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); $assoc_args['database'] = DB_NAME; // The query might come from STDIN. if ( ! empty( $args ) ) { $assoc_args['execute'] = $args[0]; } if ( isset( $assoc_args['execute'] ) ) { // Ensure that the SQL mode is compatible with WPDB. $assoc_args['execute'] = $this->get_sql_mode_query( $assoc_args ) . $assoc_args['execute']; } WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); self::run( $command, $assoc_args ); } /** * Exports the database to a file or to STDOUT. * * Runs `mysqldump` utility using `DB_HOST`, `DB_NAME`, `DB_USER` and * `DB_PASSWORD` database credentials specified in wp-config.php. Accepts any valid `mysqldump` flags. * * ## OPTIONS * * [<file>] * : The name of the SQL file to export. If '-', then outputs to STDOUT. If * omitted, it will be '{dbname}-{Y-m-d}-{random-hash}.sql'. * * [--dbuser=<value>] * : Username to pass to mysqldump. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysqldump. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysqldump. [Refer to mysqldump docs](https://dev.mysql.com/doc/en/mysqldump.html#mysqldump-option-summary). * * [--tables=<tables>] * : The comma separated list of specific tables to export. Excluding this parameter will export all tables in the database. * * [--exclude_tables=<tables>] * : The comma separated list of specific tables that should be skipped from exporting. Excluding this parameter will export all tables in the database. * * [--include-tablespaces] * : Skips adding the default --no-tablespaces option to mysqldump. * * [--porcelain] * : Output filename for the exported database. * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * # Export database with drop query included * $ wp db export --add-drop-table * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export certain tables * $ wp db export --tables=wp_options,wp_users * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export all tables matching a wildcard * $ wp db export --tables=$(wp db tables 'wp_user*' --format=csv) * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export all tables matching prefix * $ wp db export --tables=$(wp db tables --all-tables-with-prefix --format=csv) * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export certain posts without create table statements * $ wp db export --no-create-info=true --tables=wp_posts --where="ID in (100,101,102)" * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export relating meta for certain posts without create table statements * $ wp db export --no-create-info=true --tables=wp_postmeta --where="post_id in (100,101,102)" * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Skip certain tables from the exported database * $ wp db export --exclude_tables=wp_options,wp_users * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Skip all tables matching a wildcard from the exported database * $ wp db export --exclude_tables=$(wp db tables 'wp_user*' --format=csv) * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Skip all tables matching prefix from the exported database * $ wp db export --exclude_tables=$(wp db tables --all-tables-with-prefix --format=csv) * Success: Exported to 'wordpress_dbase-db72bb5.sql'. * * # Export database to STDOUT. * $ wp db export - * -- MySQL dump 10.13 Distrib 5.7.19, for osx10.12 (x86_64) * -- * -- Host: localhost Database: wpdev * -- ------------------------------------------------------ * -- Server version 5.7.19 * ... * * @alias dump */ public function export( $args, $assoc_args ) { if ( ! empty( $args[0] ) ) { $result_file = $args[0]; } else { // phpcs:ignore WordPress.WP.AlternativeFunctions.rand_mt_rand -- WordPress is not loaded. $hash = substr( md5( mt_rand() ), 0, 7 ); $result_file = sprintf( '%s-%s-%s.sql', DB_NAME, date( 'Y-m-d' ), $hash ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } $stdout = ( '-' === $result_file ); $porcelain = Utils\get_flag_value( $assoc_args, 'porcelain' ); // Bail if both porcelain and STDOUT are set. if ( $stdout && $porcelain ) { WP_CLI::error( 'Porcelain is not allowed when output mode is STDOUT.' ); } if ( ! $stdout ) { $assoc_args['result-file'] = $result_file; } $mysqldump_binary = Utils\force_env_on_nix_systems( 'mysqldump' ); $support_column_statistics = exec( $mysqldump_binary . ' --help | grep "column-statistics"' ); $initial_command = sprintf( "{$mysqldump_binary}%s ", $this->get_defaults_flag_string( $assoc_args ) ); WP_CLI::debug( "Running initial shell command: {$initial_command}", 'db' ); $default_arguments = [ '%s' ]; if ( $support_column_statistics ) { $default_arguments[] = '--skip-column-statistics'; } if ( ! Utils\get_flag_value( $assoc_args, 'include-tablespaces', false ) ) { $default_arguments[] = '--no-tablespaces'; } $command = $initial_command . implode( ' ', $default_arguments ); $command_esc_args = [ DB_NAME ]; if ( isset( $assoc_args['tables'] ) ) { $tables = explode( ',', trim( $assoc_args['tables'], ',' ) ); unset( $assoc_args['tables'] ); $command .= ' --tables'; foreach ( $tables as $table ) { $command .= ' %s'; $command_esc_args[] = trim( $table ); } } $exclude_tables = Utils\get_flag_value( $assoc_args, 'exclude_tables' ); if ( isset( $exclude_tables ) ) { $tables = explode( ',', trim( $assoc_args['exclude_tables'], ',' ) ); unset( $assoc_args['exclude_tables'] ); foreach ( $tables as $table ) { $command .= ' --ignore-table'; $command .= ' %s'; $command_esc_args[] = trim( DB_NAME . '.' . $table ); } } $escaped_command = call_user_func_array( '\WP_CLI\Utils\esc_cmd', array_merge( [ $command ], $command_esc_args ) ); // Remove parameters not needed for SQL run. unset( $assoc_args['porcelain'] ); WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); self::run( $escaped_command, $assoc_args ); if ( $porcelain ) { WP_CLI::line( $result_file ); } elseif ( ! $stdout ) { WP_CLI::success( sprintf( "Exported to '%s'.", $result_file ) ); } } /** * Imports a database from a file or from STDIN. * * Runs SQL queries using `DB_HOST`, `DB_NAME`, `DB_USER` and * `DB_PASSWORD` database credentials specified in wp-config.php. This * does not create database by itself and only performs whatever tasks are * defined in the SQL. * * ## OPTIONS * * [<file>] * : The name of the SQL file to import. If '-', then reads from STDIN. If omitted, it will look for '{dbname}.sql'. * * [--dbuser=<value>] * : Username to pass to mysql. Defaults to DB_USER. * * [--dbpass=<value>] * : Password to pass to mysql. Defaults to DB_PASSWORD. * * [--<field>=<value>] * : Extra arguments to pass to mysql. [Refer to mysql binary docs](https://dev.mysql.com/doc/refman/8.0/en/mysql-command-options.html). * * [--skip-optimization] * : When using an SQL file, do not include speed optimization such as disabling auto-commit and key checks. * * [--defaults] * : Loads the environment's MySQL option files. Default behavior is to skip loading them to avoid failures due to misconfiguration. * * ## EXAMPLES * * # Import MySQL from a file. * $ wp db import wordpress_dbase.sql * Success: Imported from 'wordpress_dbase.sql'. */ public function import( $args, $assoc_args ) { if ( ! empty( $args[0] ) ) { $result_file = $args[0]; } else { $result_file = sprintf( '%s.sql', DB_NAME ); } $mysql_args = [ 'database' => DB_NAME, ]; $mysql_args = array_merge( self::get_dbuser_dbpass_args( $assoc_args ), $mysql_args ); if ( '-' !== $result_file ) { if ( ! is_readable( $result_file ) ) { WP_CLI::error( sprintf( 'Import file missing or not readable: %s', $result_file ) ); } $query = Utils\get_flag_value( $assoc_args, 'skip-optimization' ) ? 'SOURCE %s;' : 'SET autocommit = 0; SET unique_checks = 0; SET foreign_key_checks = 0; SOURCE %s; COMMIT;'; $query = $this->get_sql_mode_query( $assoc_args ) . $query; $mysql_args['execute'] = sprintf( $query, $result_file ); } else { $result_file = 'STDIN'; } // Check if any mysql option pass. $mysql_args = array_merge( $mysql_args, self::get_mysql_args( $assoc_args ) ); $command = sprintf( '/usr/bin/env mysql%s --no-auto-rehash', $this->get_defaults_flag_string( $assoc_args ) ); WP_CLI::debug( "Running shell command: {$command}", 'db' ); WP_CLI::debug( 'Associative arguments: ' . json_encode( $assoc_args ), 'db' ); self::run( $command, $mysql_args ); WP_CLI::success( sprintf( "Imported from '%s'.", $result_file ) ); } /** * Lists the database tables. * * Defaults to all tables registered to the $wpdb database handler. * * ## OPTIONS * * [<table>...] * : List tables based on wildcard search, e.g. 'wp_*_options' or 'wp_post?'. * * [--scope=<scope>] * : Can be all, global, ms_global, blog, or old tables. Defaults to all. * * [--network] * : List all the tables in a multisite install. * * [--all-tables-with-prefix] * : List all tables that match the table prefix even if not registered on $wpdb. Overrides --network. * * [--all-tables] * : List all tables in the database, regardless of the prefix, and even if not registered on $wpdb. Overrides --all-tables-with-prefix. * * [--format=<format>] * : Render output in a particular format. * --- * default: list * options: * - list * - csv * --- * * ## EXAMPLES * * # List tables for a single site, without shared tables like 'wp_users' * $ wp db tables --scope=blog --url=sub.example.com * wp_3_posts * wp_3_comments * wp_3_options * wp_3_postmeta * wp_3_terms * wp_3_term_taxonomy * wp_3_term_relationships * wp_3_termmeta * wp_3_commentmeta * * # Export only tables for a single site * $ wp db export --tables=$(wp db tables --url=sub.example.com --format=csv) * Success: Exported to wordpress_dbase.sql * * @when after_wp_load */ public function tables( $args, $assoc_args ) { $format = Utils\get_flag_value( $assoc_args, 'format' ); unset( $assoc_args['format'] ); if ( empty( $args ) && empty( $assoc_args ) ) { $assoc_args['scope'] = 'all'; } $tables = Utils\wp_get_table_names( $args, $assoc_args ); if ( 'csv' === $format ) { WP_CLI::line( implode( ',', $tables ) ); } else { foreach ( $tables as $table ) { WP_CLI::line( $table ); } } } /** * Displays the database name and size. * * Display the database name and size for `DB_NAME` specified in wp-config.php. * The size defaults to a human-readable number. * * Available size formats include: * * b (bytes) * * kb (kilobytes) * * mb (megabytes) * * gb (gigabytes) * * tb (terabytes) * * B (ISO Byte setting, with no conversion) * * KB (ISO Kilobyte setting, with 1 KB = 1,000 B) * * KiB (ISO Kibibyte setting, with 1 KiB = 1,024 B) * * MB (ISO Megabyte setting, with 1 MB = 1,000 KB) * * MiB (ISO Mebibyte setting, with 1 MiB = 1,024 KiB) * * GB (ISO Gigabyte setting, with 1 GB = 1,000 MB) * * GiB (ISO Gibibyte setting, with 1 GiB = 1,024 MiB) * * TB (ISO Terabyte setting, with 1 TB = 1,000 GB) * * TiB (ISO Tebibyte setting, with 1 TiB = 1,024 GiB) * * ## OPTIONS * * [--size_format=<format>] * : Display the database size only, as a bare number. * --- * options: * - b * - kb * - mb * - gb * - tb * - B * - KB * - KiB * - MB * - MiB * - GB * - GiB * - TB * - TiB * --- * * [--tables] * : Display each table name and size instead of the database size. * * [--human-readable] * : Display database sizes in human readable formats. * * [--format=<format>] * : Render output in a particular format. * --- * options: * - table * - csv * - json * - yaml * --- * * [--scope=<scope>] * : Can be all, global, ms_global, blog, or old tables. Defaults to all. * * [--network] * : List all the tables in a multisite install. * * [--all-tables-with-prefix] * : List all tables that match the table prefix even if not registered on $wpdb. Overrides --network. * * [--all-tables] * : List all tables in the database, regardless of the prefix, and even if not registered on $wpdb. Overrides --all-tables-with-prefix. * * ## EXAMPLES * * $ wp db size * +-------------------+------+ * | Name | Size | * +-------------------+------+ * | wordpress_default | 6 MB | * +-------------------+------+ * * $ wp db size --tables * +-----------------------+-------+ * | Name | Size | * +-----------------------+-------+ * | wp_users | 64 KB | * | wp_usermeta | 48 KB | * | wp_posts | 80 KB | * | wp_comments | 96 KB | * | wp_links | 32 KB | * | wp_options | 32 KB | * | wp_postmeta | 48 KB | * | wp_terms | 48 KB | * | wp_term_taxonomy | 48 KB | * | wp_term_relationships | 32 KB | * | wp_termmeta | 48 KB | * | wp_commentmeta | 48 KB | * +-----------------------+-------+ * * $ wp db size --size_format=b * 5865472 * * $ wp db size --size_format=kb * 5728 * * $ wp db size --size_format=mb * 6 * * @when after_wp_load */ public function size( $args, $assoc_args ) { global $wpdb; $format = Utils\get_flag_value( $assoc_args, 'format' ); $size_format = Utils\get_flag_value( $assoc_args, 'size_format' ); $human_readable = Utils\get_flag_value( $assoc_args, 'human-readable', false ); $tables = Utils\get_flag_value( $assoc_args, 'tables' ); $tables = ! empty( $tables ); $all_tables = Utils\get_flag_value( $assoc_args, 'all-tables' ); $all_tables_with_prefix = Utils\get_flag_value( $assoc_args, 'all-tables-with-prefix' ); if ( ! is_null( $size_format ) && $human_readable ) { WP_CLI::error( 'Cannot use --size_format and --human-readable arguments at the same time.' ); } unset( $assoc_args['format'] ); unset( $assoc_args['size_format'] ); unset( $assoc_args['human-readable'] ); unset( $assoc_args['tables'] ); if ( empty( $args ) && empty( $assoc_args ) ) { $assoc_args['scope'] = 'all'; } // Build rows for the formatter. $rows = []; $fields = [ 'Name', 'Size' ]; $default_unit = ( empty( $size_format ) && ! $human_readable ) ? ' B' : ''; if ( $tables || $all_tables || $all_tables_with_prefix ) { // Add all of the table sizes. foreach ( Utils\wp_get_table_names( $args, $assoc_args ) as $table_name ) { // Get the table size. $table_bytes = $wpdb->get_var( $wpdb->prepare( 'SELECT SUM(data_length + index_length) FROM information_schema.TABLES where table_schema = %s and Table_Name = %s GROUP BY Table_Name LIMIT 1', DB_NAME, $table_name ) ); // Add the table size to the list. $rows[] = [ 'Name' => $table_name, 'Size' => strtoupper( $table_bytes ) . $default_unit, ]; } } else { // Get the database size. $db_bytes = $wpdb->get_var( $wpdb->prepare( 'SELECT SUM(data_length + index_length) FROM information_schema.TABLES where table_schema = %s GROUP BY table_schema;', DB_NAME ) ); // Add the database size to the list. $rows[] = [ 'Name' => DB_NAME, 'Size' => strtoupper( $db_bytes ) . $default_unit, ]; } if ( ! empty( $size_format ) || $human_readable ) { foreach ( $rows as $index => $row ) { // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- Backfilling WP native constants. if ( ! defined( 'KB_IN_BYTES' ) ) { define( 'KB_IN_BYTES', 1024 ); } if ( ! defined( 'MB_IN_BYTES' ) ) { define( 'MB_IN_BYTES', 1024 * KB_IN_BYTES ); } if ( ! defined( 'GB_IN_BYTES' ) ) { define( 'GB_IN_BYTES', 1024 * MB_IN_BYTES ); } if ( ! defined( 'TB_IN_BYTES' ) ) { define( 'TB_IN_BYTES', 1024 * GB_IN_BYTES ); } // phpcs:enable if ( $human_readable ) { $size_key = floor( log( $row['Size'] ) / log( 1000 ) ); $sizes = [ 'B', 'KB', 'MB', 'GB', 'TB' ]; $size_format = isset( $sizes[ $size_key ] ) ? $sizes[ $size_key ] : $sizes[0]; } // Display the database size as a number. switch ( $size_format ) { case 'TB': $divisor = pow( 1000, 4 ); break; case 'GB': $divisor = pow( 1000, 3 ); break; case 'MB': $divisor = pow( 1000, 2 ); break; case 'KB': $divisor = 1000; break; case 'tb': case 'TiB': $divisor = TB_IN_BYTES; break; case 'gb': case 'GiB': $divisor = GB_IN_BYTES; break; case 'mb': case 'MiB': $divisor = MB_IN_BYTES; break; case 'kb': case 'KiB': $divisor = KB_IN_BYTES; break; case 'b': case 'B': default: $divisor = 1; break; } $size_format_display = preg_replace( '/IB$/u', 'iB', strtoupper( $size_format ) ); $rows[ $index ]['Size'] = ceil( $row['Size'] / $divisor ) . ' ' . $size_format_display; } } if ( ! empty( $size_format ) && ! $tables && ! $format && ! $human_readable && true !== $all_tables && true !== $all_tables_with_prefix ) { WP_CLI::line( filter_var( $rows[0]['Size'], FILTER_SANITIZE_NUMBER_INT ) ); } else { // Display the rows. $args = [ 'format' => $format, ]; $formatter = new Formatter( $args, $fields ); $formatter->display_items( $rows ); } } /** * Displays the database table prefix. * * Display the database table prefix, as defined by the database handler's interpretation of the current site. * * ## EXAMPLES * * $ wp db prefix * wp_ * * @when after_wp_load */ public function prefix() { global $wpdb; WP_CLI::log( $wpdb->prefix ); } /** * Finds a string in the database. * * Searches through all of the text columns in a selection of database tables for a given string, Outputs colorized references to the string. * * Defaults to searching through all tables registered to $wpdb. On multisite, this default is limited to the tables for the current site. * * ## OPTIONS * * <search> * : String to search for. The search is case-insensitive by default. * * [<tables>...] * : One or more tables to search through for the string. * * [--network] * : Search through all the tables registered to $wpdb in a multisite install. * * [--all-tables-with-prefix] * : Search through all tables that match the registered table prefix, even if not registered on $wpdb. On one hand, sometimes plugins use tables without registering them to $wpdb. On another hand, this could return tables you don't expect. Overrides --network. * * [--all-tables] * : Search through ALL tables in the database, regardless of the prefix, and even if not registered on $wpdb. Overrides --network and --all-tables-with-prefix. * * [--before_context=<num>] * : Number of characters to display before the match. * --- * default: 40 * --- * * [--after_context=<num>] * : Number of characters to display after the match. * --- * default: 40 * --- * * [--regex] * : Runs the search as a regular expression (without delimiters). The search becomes case-sensitive (i.e. no PCRE flags are added). Delimiters must be escaped if they occur in the expression. Because the search is run on individual columns, you can use the `^` and `$` tokens to mark the start and end of a match, respectively. * * [--regex-flags=<regex-flags>] * : Pass PCRE modifiers to the regex search (e.g. 'i' for case-insensitivity). * * [--regex-delimiter=<regex-delimiter>] * : The delimiter to use for the regex. It must be escaped if it appears in the search string. The default value is the result of `chr(1)`. * * [--table_column_once] * : Output the 'table:column' line once before all matching row lines in the table column rather than before each matching row. * * [--one_line] * : Place the 'table:column' output on the same line as the row id and match ('table:column:id:match'). Overrides --table_column_once. * * [--matches_only] * : Only output the string matches (including context). No 'table:column's or row ids are outputted. * * [--stats] * : Output stats on the number of matches found, time taken, tables/columns/rows searched, tables skipped. * * [--table_column_color=<color_code>] * : Percent color code to use for the 'table:column' output. For a list of available percent color codes, see below. Default '%G' (bright green). * * [--id_color=<color_code>] * : Percent color code to use for the row id output. For a list of available percent color codes, see below. Default '%Y' (bright yellow). * * [--match_color=<color_code>] * : Percent color code to use for the match (unless both before and after context are 0, when no color code is used). For a list of available percent color codes, see below. Default '%3%k' (black on a mustard background). * * The percent color codes available are: * * | Code | Color * | ---- | ----- * | %y | Yellow (dark) (mustard) * | %g | Green (dark) * | %b | Blue (dark) * | %r | Red (dark) * | %m | Magenta (dark) * | %c | Cyan (dark) * | %w | White (dark) (light gray) * | %k | Black * | %Y | Yellow (bright) * | %G | Green (bright) * | %B | Blue (bright) * | %R | Red (bright) * | %M | Magenta (bright) * | %C | Cyan (bright) * | %W | White * | %K | Black (bright) (dark gray) * | %3 | Yellow background (dark) (mustard) * | %2 | Green background (dark) * | %4 | Blue background (dark) * | %1 | Red background (dark) * | %5 | Magenta background (dark) * | %6 | Cyan background (dark) * | %7 | White background (dark) (light gray) * | %0 | Black background * | %8 | Reverse * | %U | Underline * | %F | Blink (unlikely to work) * * They can be concatenated. For instance, the default match color of black on a mustard (dark yellow) background `%3%k` can be made black on a bright yellow background with `%Y%0%8`. * * ## EXAMPLES * * # Search through the database for the 'wordpress-develop' string * $ wp db search wordpress-develop * wp_options:option_value * 1:http://wordpress-develop.dev * wp_options:option_value * 1:http://example.com/foo * ... * * # Search through a multisite database on the subsite 'foo' for the 'example.com' string * $ wp db search example.com --url=example.com/foo * wp_2_comments:comment_author_url * 1:http://example.com/ * wp_2_options:option_value * ... * * # Search through the database for the 'https?://' regular expression, printing stats. * $ wp db search 'https?://' --regex --stats * wp_comments:comment_author_url * 1:https://wordpress.org/ * ... * Success: Found 99146 matches in 10.752s (10.559s searching). Searched 12 tables, 53 columns, 1358907 rows. 1 table skipped: wp_term_relationships. * * # SQL search database table 'wp_options' where 'option_name' match 'foo' * wp db query 'SELECT * FROM wp_options WHERE option_name like "%foo%"' --skip-column-names * +----+--------------+--------------------------------+-----+ * | 98 | foo_options | a:1:{s:12:"_multiwidget";i:1;} | yes | * | 99 | foo_settings | a:0:{} | yes | * +----+--------------+--------------------------------+-----+ * * # SQL search and delete records from database table 'wp_options' where 'option_name' match 'foo' * wp db query "DELETE from wp_options where option_id in ($(wp db query "SELECT GROUP_CONCAT(option_id SEPARATOR ',') from wp_options where option_name like '%foo%';" --silent --skip-column-names))" * * @when after_wp_load */ public function search( $args, $assoc_args ) { global $wpdb; $start_run_time = microtime( true ); $search = array_shift( $args ); $before_context = Utils\get_flag_value( $assoc_args, 'before_context', 40 ); $before_context = '' === $before_context ? $before_context : (int) $before_context; $after_context = Utils\get_flag_value( $assoc_args, 'after_context', 40 ); $after_context = '' === $after_context ? $after_context : (int) $after_context; $regex = Utils\get_flag_value( $assoc_args, 'regex', false ); if ( false !== $regex ) { $regex_flags = Utils\get_flag_value( $assoc_args, 'regex-flags', false ); $default_regex_delimiter = false; $regex_delimiter = Utils\get_flag_value( $assoc_args, 'regex-delimiter', '' ); if ( '' === $regex_delimiter ) { $regex_delimiter = chr( 1 ); $default_regex_delimiter = true; } } $colors = self::get_colors( $assoc_args, [ 'table_column' => '%G', 'id' => '%Y', 'match' => $before_context || $after_context ? '%3%k' : '', ] ); $table_column_once = Utils\get_flag_value( $assoc_args, 'table_column_once', false ); $one_line = Utils\get_flag_value( $assoc_args, 'one_line', false ); $matches_only = Utils\get_flag_value( $assoc_args, 'matches_only', false ); $stats = Utils\get_flag_value( $assoc_args, 'stats', false ); $column_count = 0; $row_count = 0; $match_count = 0; $skipped = []; if ( $regex ) { // Note the user must escape the delimiter in the search. $search_regex = $regex_delimiter . $search . $regex_delimiter; if ( $regex_flags ) { $search_regex .= $regex_flags; } // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- Unsure why this is needed, leaving in for now. if ( false === @preg_match( $search_regex, '' ) ) { if ( $default_regex_delimiter ) { $flags_msg = $regex_flags ? "flags '$regex_flags'" : 'no flags'; $msg = "The regex pattern '$search' with default delimiter 'chr(1)' and {$flags_msg} fails."; } else { $msg = "The regex '$search_regex' fails."; } WP_CLI::error( $msg ); } } else { $search_regex = '#' . preg_quote( $search, '#' ) . '#i'; $esc_like_search = '%' . Utils\esc_like( $search ) . '%'; } $encoding = null; if ( 0 === strpos( $wpdb->charset, 'utf8' ) ) { $encoding = 'UTF-8'; } $tables = Utils\wp_get_table_names( $args, $assoc_args ); $start_search_time = microtime( true ); foreach ( $tables as $table ) { list( $primary_keys, $text_columns, $all_columns ) = self::get_columns( $table ); if ( ! $all_columns ) { WP_CLI::error( "No such table '$table'." ); } if ( ! $text_columns ) { if ( $stats ) { $skipped[] = $table; } else { // Don't bother warning for term relationships (which is just 3 int columns). if ( ! preg_match( '/_term_relationships$/', $table ) ) { WP_CLI::warning( $primary_keys ? "No text columns for table '$table' - skipped." : "No primary key or text columns for table '$table' - skipped." ); } } continue; } $table_sql = self::esc_sql_ident( $table ); $column_count += count( $text_columns ); if ( ! $primary_keys ) { WP_CLI::warning( "No primary key for table '$table'. No row ids will be outputted." ); $primary_key = ''; $primary_key_sql = ''; } else { $primary_key = array_shift( $primary_keys ); $primary_key_sql = self::esc_sql_ident( $primary_key ) . ', '; } foreach ( $text_columns as $column ) { $column_sql = self::esc_sql_ident( $column ); if ( $regex ) { // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Escaped through esc_sql_ident/esc_like. $results = $wpdb->get_results( "SELECT {$primary_key_sql}{$column_sql} FROM {$table_sql}" ); } else { // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Escaped through esc_sql_ident/esc_like. $results = $wpdb->get_results( $wpdb->prepare( "SELECT {$primary_key_sql}{$column_sql} FROM {$table_sql} WHERE {$column_sql} LIKE %s;", $esc_like_search ) ); } if ( $results ) { $row_count += count( $results ); $table_column_val = $colors['table_column'][0] . "{$table}:{$column}" . $colors['table_column'][1]; $outputted_table_column_once = false; foreach ( $results as $result ) { $col_val = $result->$column; if ( preg_match_all( $search_regex, $col_val, $matches, PREG_OFFSET_CAPTURE ) ) { if ( ! $matches_only && ( ! $table_column_once || ! $outputted_table_column_once ) && ! $one_line ) { WP_CLI::log( $table_column_val ); $outputted_table_column_once = true; } $pk_val = $primary_key ? ( $colors['id'][0] . $result->$primary_key . $colors['id'][1] . ':' ) : ''; $bits = []; $col_encoding = $encoding; if ( ! $col_encoding && ( $before_context || $after_context ) && function_exists( 'mb_detect_encoding' ) ) { $col_encoding = mb_detect_encoding( $col_val, null, true /*strict*/ ); } $append_next = false; $last_offset = 0; $match_cnt = count( $matches[0] ); for ( $i = 0; $i < $match_cnt; $i++ ) { $match = $matches[0][ $i ][0]; $offset = $matches[0][ $i ][1]; $log = $colors['match'][0] . $match . $colors['match'][1]; $before = ''; $after = ''; $after_shortened = false; // Offsets are in bytes, so need to use `strlen()` and `substr()` before using `safe_substr()`. if ( $before_context && $offset && ! $append_next ) { $before = \cli\safe_substr( substr( $col_val, $last_offset, $offset - $last_offset ), -$before_context, null /*length*/, false /*is_width*/, $col_encoding ); } if ( $after_context ) { $end_offset = $offset + strlen( $match ); $after = \cli\safe_substr( substr( $col_val, $end_offset ), 0, $after_context, false /*is_width*/, $col_encoding ); // To lessen context duplication in output, shorten the after context if it overlaps with the next match. if ( $i + 1 < $match_cnt && $end_offset + strlen( $after ) > $matches[0][ $i + 1 ][1] ) { $after = substr( $after, 0, $matches[0][ $i + 1 ][1] - $end_offset ); $after_shortened = true; // On the next iteration, will append with no before context. } } if ( $append_next ) { $cnt = count( $bits ); $bits[ $cnt - 1 ] .= $log . $after; } else { $bits[] = $before . $log . $after; } $append_next = $after_shortened; $last_offset = $offset; } $match_count += $match_cnt; $col_val = implode( ' [...] ', $bits ); WP_CLI::log( $matches_only ? $col_val : ( $one_line ? "{$table_column_val}:{$pk_val}{$col_val}" : "{$pk_val}{$col_val}" ) ); } } } } } if ( $stats ) { $table_count = count( $tables ); $skipped_count = count( $skipped ); $match_str = 1 === $match_count ? 'match' : 'matches'; $table_str = 1 === $table_count ? 'table' : 'tables'; $column_str = 1 === $column_count ? 'column' : 'columns'; $row_str = 1 === $row_count ? 'row' : 'rows'; $skipped_str = 1 === $skipped_count ? 'table skipped' : 'tables skipped'; if ( 0 !== $skipped_count ) { $skipped_str .= ': ' . implode( ', ', $skipped ); } $end_time = microtime( true ); $run_time = $end_time - $start_run_time; $search_time = $end_time - $start_search_time; $stats_msg = sprintf( 'Found %d %s in %.3fs (%.3fs searching). Searched %d %s, %d %s, %d %s. %d %s.', $match_count, $match_str, $run_time, $search_time, $table_count, $table_str, $column_count, $column_str, $row_count, $row_str, $skipped_count, $skipped_str ); WP_CLI::success( $stats_msg ); } } /** * Displays information about a given table. * * ## OPTIONS * * [<table>] * : Name of the database table. * * [--format] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * ## EXAMPLES * * $ wp db columns wp_posts * +-----------------------+---------------------+------+-----+---------------------+----------------+ * | Field | Type | Null | Key | Default | Extra | * +-----------------------+---------------------+------+-----+---------------------+----------------+ * | ID | bigint(20) unsigned | NO | PRI | | auto_increment | * | post_author | bigint(20) unsigned | NO | MUL | 0 | | * | post_date | datetime | NO | | 0000-00-00 00:00:00 | | * | post_date_gmt | datetime | NO | | 0000-00-00 00:00:00 | | * | post_content | longtext | NO | | | | * | post_title | text | NO | | | | * | post_excerpt | text | NO | | | | * | post_status | varchar(20) | NO | | publish | | * | comment_status | varchar(20) | NO | | open | | * | ping_status | varchar(20) | NO | | open | | * | post_password | varchar(255) | NO | | | | * | post_name | varchar(200) | NO | MUL | | | * | to_ping | text | NO | | | | * | pinged | text | NO | | | | * | post_modified | datetime | NO | | 0000-00-00 00:00:00 | | * | post_modified_gmt | datetime | NO | | 0000-00-00 00:00:00 | | * | post_content_filtered | longtext | NO | | | | * | post_parent | bigint(20) unsigned | NO | MUL | 0 | | * | guid | varchar(255) | NO | | | | * | menu_order | int(11) | NO | | 0 | | * | post_type | varchar(20) | NO | MUL | post | | * | post_mime_type | varchar(100) | NO | | | | * | comment_count | bigint(20) | NO | | 0 | | * +-----------------------+---------------------+------+-----+---------------------+----------------+ * * @when after_wp_load */ public function columns( $args, $assoc_args ) { global $wpdb; $format = Utils\get_flag_value( $assoc_args, 'format' ); Utils\wp_get_table_names( [ $args[0] ], [] ); $columns = $wpdb->get_results( // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Asserted to be a valid table name through wp_get_table_names. 'SHOW COLUMNS FROM ' . $args[0] ); $formatter_fields = [ 'Field', 'Type', 'Null', 'Key', 'Default', 'Extra' ]; $formatter_args = [ 'format' => $format, ]; $formatter = new Formatter( $formatter_args, $formatter_fields ); $formatter->display_items( $columns ); } private static function get_create_query() { $create_query = sprintf( 'CREATE DATABASE %s', self::esc_sql_ident( DB_NAME ) ); if ( defined( 'DB_CHARSET' ) && constant( 'DB_CHARSET' ) ) { $create_query .= sprintf( ' DEFAULT CHARSET %s', self::esc_sql_ident( DB_CHARSET ) ); } if ( defined( 'DB_COLLATE' ) && constant( 'DB_COLLATE' ) ) { $create_query .= sprintf( ' DEFAULT COLLATE %s', self::esc_sql_ident( DB_COLLATE ) ); } return $create_query; } /** * Run a single query via the 'mysql' binary. * * This includes the necessary setup to make sure the queries behave similar * to what WPDB produces. * * @param string $query Query to execute. * @param array $assoc_args Optional. Associative array of arguments. */ protected function run_query( $query, $assoc_args = [] ) { // Ensure that the SQL mode is compatible with WPDB. $query = $this->get_sql_mode_query( $assoc_args ) . $query; WP_CLI::debug( "Query: {$query}", 'db' ); self::run( sprintf( '/usr/bin/env mysql%s --no-auto-rehash', $this->get_defaults_flag_string( $assoc_args ) ), array_merge( $assoc_args, [ 'execute' => $query ] ) ); } /** * Run a MySQL command and optionally return the output. * * @param string $cmd Command to run. * @param array $assoc_args Optional. Associative array of arguments to * use. * @param bool $send_to_shell Optional. Whether to send STDOUT and STDERR * immediately to the shell. Defaults to true. * @param bool $interactive Optional. Whether MySQL is meant to be * executed as an interactive process. Defaults * to false. * * @return array { * Associative array containing STDOUT and STDERR output. * * @type string $stdout Output that was sent to STDOUT. * @type string $stderr Output that was sent to STDERR. * @type int $exit_code Exit code of the process. * } */ private static function run( $cmd, $assoc_args = [], $send_to_shell = true, $interactive = false ) { $required = [ 'host' => DB_HOST, 'user' => DB_USER, 'pass' => DB_PASSWORD, ]; if ( ! isset( $assoc_args['default-character-set'] ) && defined( 'DB_CHARSET' ) && constant( 'DB_CHARSET' ) ) { $required['default-character-set'] = constant( 'DB_CHARSET' ); } // Using 'dbuser' as option name to workaround clash with WP-CLI's global WP 'user' parameter, with 'dbpass' also available for tidyness. if ( isset( $assoc_args['dbuser'] ) ) { $required['user'] = $assoc_args['dbuser']; unset( $assoc_args['dbuser'] ); } if ( isset( $assoc_args['dbpass'] ) ) { $required['pass'] = $assoc_args['dbpass']; unset( $assoc_args['dbpass'], $assoc_args['password'] ); } $final_args = array_merge( $assoc_args, $required ); return Utils\run_mysql_command( $cmd, $final_args, null, $send_to_shell, $interactive ); } /** * Helper to pluck 'dbuser' and 'dbpass' from associative args array. * * @param array $assoc_args Associative args array. * @return array Array with `dbuser' and 'dbpass' set if in passed-in associative args array. */ private static function get_dbuser_dbpass_args( $assoc_args ) { $mysql_args = []; $dbuser = Utils\get_flag_value( $assoc_args, 'dbuser' ); if ( null !== $dbuser ) { $mysql_args['dbuser'] = $dbuser; } $dbpass = Utils\get_flag_value( $assoc_args, 'dbpass' ); if ( null !== $dbpass ) { $mysql_args['dbpass'] = $dbpass; } return $mysql_args; } /** * Gets the column names of a db table differentiated into key columns and text columns and all columns. * * @param string $table The table name. * @return array A 3 element array consisting of an array of primary key column names, an array of text column names, and an array containing all column names. */ private static function get_columns( $table ) { global $wpdb; $table_sql = self::esc_sql_ident( $table ); $primary_keys = []; $text_columns = []; $all_columns = []; $suppress_errors = $wpdb->suppress_errors(); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Escaped through esc_sql_ident/esc_like. $results = $wpdb->get_results( "DESCRIBE $table_sql" ); if ( $results ) { foreach ( $results as $col ) { // phpcs:disable WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase -- Property names come from database. if ( 'PRI' === $col->Key ) { $primary_keys[] = $col->Field; } if ( self::is_text_col( $col->Type ) ) { $text_columns[] = $col->Field; } $all_columns[] = $col->Field; // phpcs:enable } } $wpdb->suppress_errors( $suppress_errors ); return [ $primary_keys, $text_columns, $all_columns ]; } /** * Determines whether a column is considered text or not. * * @param string Column type. * @return bool True if text column, false otherwise. */ private static function is_text_col( $type ) { foreach ( [ 'text', 'varchar' ] as $token ) { if ( false !== strpos( $type, $token ) ) { return true; } } return false; } /** * Escapes (backticks) MySQL identifiers (aka schema object names) - i.e. column names, table names, and database/index/alias/view etc names. * See https://dev.mysql.com/doc/refman/5.5/en/identifiers.html * * @param string|array $idents A single identifier or an array of identifiers. * @return string|array An escaped string if given a string, or an array of escaped strings if given an array of strings. */ private static function esc_sql_ident( $idents ) { $backtick = function ( $v ) { // Escape any backticks in the identifier by doubling. return '`' . str_replace( '`', '``', $v ) . '`'; }; if ( is_string( $idents ) ) { return $backtick( $idents ); } return array_map( $backtick, $idents ); } /** * Gets the color codes from the options if any, and returns the passed in array colorized with 2 elements per entry, a color code (or '') and a reset (or ''). * * @param array $assoc_args The associative argument array passed to the command. * @param array $colors Array of default percent color code strings keyed by the 3 color contexts 'table_column', 'id', 'match'. * @return array Array containing 3 2-element arrays. */ private function get_colors( $assoc_args, $colors ) { $color_reset = WP_CLI::colorize( '%n' ); $color_codes = implode( '', array_map( function ( $v ) { return substr( $v, 1 ); }, array_keys( \cli\Colors::getColors() ) ) ); $color_codes_regex = '/^(?:%[' . $color_codes . '])*$/'; foreach ( array_keys( $colors ) as $color_col ) { $col_color_flag = Utils\get_flag_value( $assoc_args, $color_col . '_color', false ); if ( false !== $col_color_flag ) { if ( ! preg_match( $color_codes_regex, $col_color_flag, $matches ) ) { WP_CLI::warning( "Unrecognized percent color code '$col_color_flag' for '{$color_col}_color'." ); } else { $colors[ $color_col ] = $matches[0]; } } $colors[ $color_col ] = $colors[ $color_col ] ? [ WP_CLI::colorize( $colors[ $color_col ] ), $color_reset ] : [ '', '' ]; } return $colors; } /** * Helper to pluck `mysql` options from associative args array. * * @param array $assoc_args Associative args array. * @return array Array with `mysql` options set if in passed-in associative args array. */ private static function get_mysql_args( $assoc_args ) { $allowed_mysql_options = [ 'auto-rehash', 'auto-vertical-output', 'batch', 'binary-as-hex', 'binary-mode', 'bind-address', 'character-sets-dir', 'column-names', 'column-type-info', 'comments', 'compress', 'connect-expired-password', 'connect_timeout', 'database', 'debug', 'debug-check', 'debug-info', 'default-auth', 'default-character-set', 'defaults-extra-file', 'defaults-file', 'defaults-group-suffix', 'delimiter', 'enable-cleartext-plugin', 'execute', 'force', 'get-server-public-key', 'help', 'histignore', 'host', 'html', 'ignore-spaces', 'init-command', 'line-numbers', 'local-infile', 'login-path', 'max_allowed_packet', 'max_join_size', 'named-commands', 'net_buffer_length', 'no-beep', 'one-database', 'pager', 'pipe', 'plugin-dir', 'port', 'print-defaults', 'protocol', 'quick', 'raw', 'reconnect', 'i-am-a-dummy', 'safe-updates', 'secure-auth', 'select_limit', 'server-public-key-path', 'shared-memory-base-name', 'show-warnings', 'sigint-ignore', 'silent', 'skip-auto-rehash', 'skip-column-names', 'skip-line-numbers', 'skip-named-commands', 'skip-pager', 'skip-reconnect', 'socket', 'ssl-ca', 'ssl-capath', 'ssl-cert', 'ssl-cipher', 'ssl-crl', 'ssl-crlpath', 'ssl-fips-mode', 'ssl-key', 'ssl-mode', 'syslog', 'table', 'tee', 'tls-version', 'unbuffered', 'verbose', 'version', 'vertical', 'wait', 'xml', ]; $mysql_args = []; foreach ( $assoc_args as $mysql_option_key => $mysql_option_value ) { // Check flags to make sure they only contain valid options. if ( in_array( $mysql_option_key, $allowed_mysql_options, true ) && ! empty( $mysql_option_value ) ) { $mysql_args[ $mysql_option_key ] = $mysql_option_value; } } return $mysql_args; } /** * Writes out the `--no-defaults` flag for MySQL commands unless the --defaults flag is specified for the WP_CLI command. * * @param array $assoc_args Associative args array. * @return string Either the '--no-defaults' flag for use in the command or an empty string. */ protected function get_defaults_flag_string( &$assoc_args ) { $flag_string = ' --no-defaults'; if ( array_key_exists( 'defaults', $assoc_args ) ) { if ( true === Utils\get_flag_value( $assoc_args, 'defaults' ) ) { $flag_string = ''; } unset( $assoc_args['defaults'] ); } return $flag_string; } /** * Get the query to change the current SQL mode, and ensure its WordPress compatibility. * * If no modes are passed, it will ensure the current MySQL server modes are * compatible. * * Copied and adapted from WordPress Core code. * * @see https://github.com/WordPress/wordpress-develop/blob/5.4.0/src/wp-includes/wp-db.php#L817-L880 * * @param array $assoc_args The associative argument array passed to the command. * @param array $modes Optional. A list of SQL modes to set. * @return string Query string to use for setting the SQL modes to a * compatible state. */ protected function get_sql_mode_query( $assoc_args, $modes = [] ) { if ( empty( $modes ) ) { $modes = $this->get_current_sql_modes( $assoc_args ); } $modes = array_change_key_case( $modes, CASE_UPPER ); $is_mode_adaptation_needed = false; foreach ( $modes as $i => $mode ) { if ( in_array( $mode, $this->sql_incompatible_modes, true ) ) { unset( $modes[ $i ] ); $is_mode_adaptation_needed = true; } } if ( ! $is_mode_adaptation_needed ) { WP_CLI::debug( sprintf( 'SQL modes look fine: %s', json_encode( $modes ) ) ); return ''; } WP_CLI::debug( sprintf( 'SQL mode adaptation is needed: %s => %s', json_encode( $this->get_current_sql_modes( $assoc_args ) ), json_encode( $modes ) ) ); $modes_str = implode( ',', $modes ); return "SET SESSION sql_mode='{$modes_str}';"; } /** * Get the list of current SQL modes. * * @param array $assoc_args The associative argument array passed to the command. * @return string[] Array of SQL modes. */ protected function get_current_sql_modes( $assoc_args ) { static $modes = null; // Make sure the provided arguments don't interfere with the expected // output here. $args = []; foreach ( [] as $arg ) { if ( isset( $assoc_args[ $arg ] ) ) { $args[ $arg ] = $assoc_args[ $arg ]; } } if ( null === $modes ) { $modes = []; list( $stdout, $stderr, $exit_code ) = self::run( sprintf( '/usr/bin/env mysql%s --no-auto-rehash --batch --skip-column-names', $this->get_defaults_flag_string( $assoc_args ) ), array_merge( $args, [ 'execute' => 'SELECT @@SESSION.sql_mode' ] ), false ); if ( $exit_code ) { WP_CLI::error( 'Failed to get current SQL modes.' . ( ! empty( $stderr ) ? " Reason: {$stderr}" : '' ), $exit_code ); } if ( ! empty( $stdout ) ) { $modes = array_filter( array_map( 'trim', preg_split( "/\r\n|\n|\r|,/", $stdout ) ) ); } if ( false === $modes ) { $modes = []; } } return $modes; } } <?php /** * Transforms a wp-config.php file. */ class WPConfigTransformer { /** * Append to end of file */ const ANCHOR_EOF = 'EOF'; /** * Path to the wp-config.php file. * * @var string */ protected $wp_config_path; /** * Original source of the wp-config.php file. * * @var string */ protected $wp_config_src; /** * Array of parsed configs. * * @var array */ protected $wp_configs = array(); /** * Instantiates the class with a valid wp-config.php. * * @throws Exception If the wp-config.php file is missing. * @throws Exception If the wp-config.php file is not writable. * * @param string $wp_config_path Path to a wp-config.php file. */ public function __construct( $wp_config_path ) { $basename = basename( $wp_config_path ); if ( ! file_exists( $wp_config_path ) ) { throw new Exception( "{$basename} does not exist." ); } if ( ! is_writable( $wp_config_path ) ) { throw new Exception( "{$basename} is not writable." ); } $this->wp_config_path = $wp_config_path; } /** * Checks if a config exists in the wp-config.php file. * * @throws Exception If the wp-config.php file is empty. * @throws Exception If the requested config type is invalid. * * @param string $type Config type (constant or variable). * @param string $name Config name. * * @return bool */ public function exists( $type, $name ) { $wp_config_src = file_get_contents( $this->wp_config_path ); if ( ! trim( $wp_config_src ) ) { throw new Exception( 'Config file is empty.' ); } // Normalize the newline to prevent an issue coming from OSX. $this->wp_config_src = str_replace( array( "\n\r", "\r" ), "\n", $wp_config_src ); $this->wp_configs = $this->parse_wp_config( $this->wp_config_src ); if ( ! isset( $this->wp_configs[ $type ] ) ) { throw new Exception( "Config type '{$type}' does not exist." ); } return isset( $this->wp_configs[ $type ][ $name ] ); } /** * Get the value of a config in the wp-config.php file. * * @throws Exception If the wp-config.php file is empty. * @throws Exception If the requested config type is invalid. * * @param string $type Config type (constant or variable). * @param string $name Config name. * * @return array */ public function get_value( $type, $name ) { $wp_config_src = file_get_contents( $this->wp_config_path ); if ( ! trim( $wp_config_src ) ) { throw new Exception( 'Config file is empty.' ); } $this->wp_config_src = $wp_config_src; $this->wp_configs = $this->parse_wp_config( $this->wp_config_src ); if ( ! isset( $this->wp_configs[ $type ] ) ) { throw new Exception( "Config type '{$type}' does not exist." ); } return $this->wp_configs[ $type ][ $name ]['value']; } /** * Adds a config to the wp-config.php file. * * @throws Exception If the config value provided is not a string. * @throws Exception If the config placement anchor could not be located. * * @param string $type Config type (constant or variable). * @param string $name Config name. * @param string $value Config value. * @param array $options (optional) Array of special behavior options. * * @return bool */ public function add( $type, $name, $value, array $options = array() ) { if ( ! is_string( $value ) ) { throw new Exception( 'Config value must be a string.' ); } if ( $this->exists( $type, $name ) ) { return false; } $defaults = array( 'raw' => false, // Display value in raw format without quotes. 'anchor' => "/* That's all, stop editing!", // Config placement anchor string. 'separator' => PHP_EOL, // Separator between config definition and anchor string. 'placement' => 'before', // Config placement direction (insert before or after). ); list( $raw, $anchor, $separator, $placement ) = array_values( array_merge( $defaults, $options ) ); $raw = (bool) $raw; $anchor = (string) $anchor; $separator = (string) $separator; $placement = (string) $placement; if ( self::ANCHOR_EOF === $anchor ) { $contents = $this->wp_config_src . $this->normalize( $type, $name, $this->format_value( $value, $raw ) ); } else { if ( false === strpos( $this->wp_config_src, $anchor ) ) { throw new Exception( 'Unable to locate placement anchor.' ); } $new_src = $this->normalize( $type, $name, $this->format_value( $value, $raw ) ); $new_src = ( 'after' === $placement ) ? $anchor . $separator . $new_src : $new_src . $separator . $anchor; $contents = str_replace( $anchor, $new_src, $this->wp_config_src ); } return $this->save( $contents ); } /** * Updates an existing config in the wp-config.php file. * * @throws Exception If the config value provided is not a string. * * @param string $type Config type (constant or variable). * @param string $name Config name. * @param string $value Config value. * @param array $options (optional) Array of special behavior options. * * @return bool */ public function update( $type, $name, $value, array $options = array() ) { if ( ! is_string( $value ) ) { throw new Exception( 'Config value must be a string.' ); } $defaults = array( 'add' => true, // Add the config if missing. 'raw' => false, // Display value in raw format without quotes. 'normalize' => false, // Normalize config output using WP Coding Standards. ); list( $add, $raw, $normalize ) = array_values( array_merge( $defaults, $options ) ); $add = (bool) $add; $raw = (bool) $raw; $normalize = (bool) $normalize; if ( ! $this->exists( $type, $name ) ) { return ( $add ) ? $this->add( $type, $name, $value, $options ) : false; } $old_src = $this->wp_configs[ $type ][ $name ]['src']; $old_value = $this->wp_configs[ $type ][ $name ]['value']; $new_value = $this->format_value( $value, $raw ); if ( $normalize ) { $new_src = $this->normalize( $type, $name, $new_value ); } else { $new_parts = $this->wp_configs[ $type ][ $name ]['parts']; $new_parts[1] = str_replace( $old_value, $new_value, $new_parts[1] ); // Only edit the value part. $new_src = implode( '', $new_parts ); } $contents = preg_replace( sprintf( '/(?<=^|;|<\?php\s|<\?\s)(\s*?)%s/m', preg_quote( trim( $old_src ), '/' ) ), '$1' . str_replace( '$', '\$', trim( $new_src ) ), $this->wp_config_src ); return $this->save( $contents ); } /** * Removes a config from the wp-config.php file. * * @param string $type Config type (constant or variable). * @param string $name Config name. * * @return bool */ public function remove( $type, $name ) { if ( ! $this->exists( $type, $name ) ) { return false; } $pattern = sprintf( '/(?<=^|;|<\?php\s|<\?\s)%s\s*(\S|$)/m', preg_quote( $this->wp_configs[ $type ][ $name ]['src'], '/' ) ); $contents = preg_replace( $pattern, '$1', $this->wp_config_src ); return $this->save( $contents ); } /** * Applies formatting to a config value. * * @throws Exception When a raw value is requested for an empty string. * * @param string $value Config value. * @param bool $raw Display value in raw format without quotes. * * @return mixed */ protected function format_value( $value, $raw ) { if ( $raw && '' === trim( $value ) ) { throw new Exception( 'Raw value for empty string not supported.' ); } return ( $raw ) ? $value : var_export( $value, true ); } /** * Normalizes the source output for a name/value pair. * * @throws Exception If the requested config type does not support normalization. * * @param string $type Config type (constant or variable). * @param string $name Config name. * @param mixed $value Config value. * * @return string */ protected function normalize( $type, $name, $value ) { if ( 'constant' === $type ) { $placeholder = "define( '%s', %s );"; } elseif ( 'variable' === $type ) { $placeholder = '$%s = %s;'; } else { throw new Exception( "Unable to normalize config type '{$type}'." ); } return sprintf( $placeholder, $name, $value ); } /** * Parses the source of a wp-config.php file. * * @param string $src Config file source. * * @return array */ protected function parse_wp_config( $src ) { $configs = array(); $configs['constant'] = array(); $configs['variable'] = array(); // Strip comments. foreach ( token_get_all( $src ) as $token ) { if ( in_array( $token[0], array( T_COMMENT, T_DOC_COMMENT ), true ) ) { $src = str_replace( $token[1], '', $src ); } } preg_match_all( '/(?<=^|;|<\?php\s|<\?\s)(\h*define\s*\(\s*[\'"](\w*?)[\'"]\s*)(,\s*(\'\'|""|\'.*?[^\\\\]\'|".*?[^\\\\]"|.*?)\s*)((?:,\s*(?:true|false)\s*)?\)\s*;)/ims', $src, $constants ); preg_match_all( '/(?<=^|;|<\?php\s|<\?\s)(\h*\$(\w+)\s*=)(\s*(\'\'|""|\'.*?[^\\\\]\'|".*?[^\\\\]"|.*?)\s*;)/ims', $src, $variables ); if ( ! empty( $constants[0] ) && ! empty( $constants[1] ) && ! empty( $constants[2] ) && ! empty( $constants[3] ) && ! empty( $constants[4] ) && ! empty( $constants[5] ) ) { foreach ( $constants[2] as $index => $name ) { $configs['constant'][ $name ] = array( 'src' => $constants[0][ $index ], 'value' => $constants[4][ $index ], 'parts' => array( $constants[1][ $index ], $constants[3][ $index ], $constants[5][ $index ], ), ); } } if ( ! empty( $variables[0] ) && ! empty( $variables[1] ) && ! empty( $variables[2] ) && ! empty( $variables[3] ) && ! empty( $variables[4] ) ) { // Remove duplicate(s), last definition wins. $variables[2] = array_reverse( array_unique( array_reverse( $variables[2], true ) ), true ); foreach ( $variables[2] as $index => $name ) { $configs['variable'][ $name ] = array( 'src' => $variables[0][ $index ], 'value' => $variables[4][ $index ], 'parts' => array( $variables[1][ $index ], $variables[3][ $index ], ), ); } } return $configs; } /** * Saves new contents to the wp-config.php file. * * @throws Exception If the config file content provided is empty. * @throws Exception If there is a failure when saving the wp-config.php file. * * @param string $contents New config contents. * * @return bool */ protected function save( $contents ) { if ( ! trim( $contents ) ) { throw new Exception( 'Cannot save the config file with empty contents.' ); } if ( $contents === $this->wp_config_src ) { return false; } $result = file_put_contents( $this->wp_config_path, $contents, LOCK_EX ); if ( false === $result ) { throw new Exception( 'Failed to update the config file.' ); } return true; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_media_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_media_autoloader ) ) { require_once $wpcli_media_autoloader; } /** * Check for Imagick and GD extensions availability. * * @throws \WP_CLI\ExitException */ $wpcli_media_assert_image_editor_support = function () { if ( ! wp_image_editor_supports() ) { WP_CLI::error( 'No support for generating images found. ' . 'Please install the Imagick or GD PHP extensions.' ); } }; WP_CLI::add_command( 'media', 'Media_Command', [ 'before_invoke' => $wpcli_media_assert_image_editor_support ] ); <?php use WP_CLI\Utils; /** * Imports files as attachments, regenerates thumbnails, or lists registered image sizes. * * ## EXAMPLES * * # Re-generate all thumbnails, without confirmation. * $ wp media regenerate --yes * Found 3 images to regenerate. * 1/3 Regenerated thumbnails for "Sydney Harbor Bridge" (ID 760). * 2/3 Regenerated thumbnails for "Boardwalk" (ID 757). * 3/3 Regenerated thumbnails for "Sunburst Over River" (ID 756). * Success: Regenerated 3 of 3 images. * * # Import a local image and set it to be the featured image for a post. * $ wp media import ~/Downloads/image.png --post_id=123 --title="A downloaded picture" --featured_image * Success: Imported file '/home/person/Downloads/image.png' as attachment ID 1753 and attached to post 123 as featured image. * * # List all registered image sizes * $ wp media image-size * +---------------------------+-------+--------+-------+ * | name | width | height | crop | * +---------------------------+-------+--------+-------+ * | full | | | N/A | * | twentyfourteen-full-width | 1038 | 576 | hard | * | large | 1024 | 1024 | soft | * | medium_large | 768 | 0 | soft | * | medium | 300 | 300 | soft | * | thumbnail | 150 | 150 | hard | * +---------------------------+-------+--------+-------+ * * @package wp-cli */ class Media_Command extends WP_CLI_Command { /** * Clear the WP object cache after this many regenerations/imports. * * @var integer */ const WP_CLEAR_OBJECT_CACHE_INTERVAL = 500; /** * Regenerates thumbnails for one or more attachments. * * ## OPTIONS * * [<attachment-id>...] * : One or more IDs of the attachments to regenerate. * * [--image_size=<image_size>] * : Name of the image size to regenerate. Only thumbnails of this image size will be regenerated, thumbnails of other image sizes will not. * * [--skip-delete] * : Skip deletion of the original thumbnails. If your thumbnails are linked from sources outside your control, it's likely best to leave them around. Defaults to false. * * [--only-missing] * : Only generate thumbnails for images missing image sizes. * * [--yes] * : Answer yes to the confirmation message. Confirmation only shows when no IDs passed as arguments. * * ## EXAMPLES * * # Regenerate thumbnails for given attachment IDs. * $ wp media regenerate 123 124 125 * Found 3 images to regenerate. * 1/3 Regenerated thumbnails for "Vertical Image" (ID 123). * 2/3 Regenerated thumbnails for "Horizontal Image" (ID 124). * 3/3 Regenerated thumbnails for "Beautiful Picture" (ID 125). * Success: Regenerated 3 of 3 images. * * # Regenerate all thumbnails, without confirmation. * $ wp media regenerate --yes * Found 3 images to regenerate. * 1/3 Regenerated thumbnails for "Sydney Harbor Bridge" (ID 760). * 2/3 Regenerated thumbnails for "Boardwalk" (ID 757). * 3/3 Regenerated thumbnails for "Sunburst Over River" (ID 756). * Success: Regenerated 3 of 3 images. * * # Re-generate all thumbnails that have IDs between 1000 and 2000. * $ seq 1000 2000 | xargs wp media regenerate * Found 4 images to regenerate. * 1/4 Regenerated thumbnails for "Vertical Featured Image" (ID 1027). * 2/4 Regenerated thumbnails for "Horizontal Featured Image" (ID 1022). * 3/4 Regenerated thumbnails for "Unicorn Wallpaper" (ID 1045). * 4/4 Regenerated thumbnails for "I Am Worth Loving Wallpaper" (ID 1023). * Success: Regenerated 4 of 4 images. * * # Re-generate only the thumbnails of "large" image size for all images. * $ wp media regenerate --image_size=large * Do you really want to regenerate the "large" image size for all images? [y/n] y * Found 3 images to regenerate. * 1/3 Regenerated "large" thumbnail for "Sydney Harbor Bridge" (ID 760). * 2/3 No "large" thumbnail regeneration needed for "Boardwalk" (ID 757). * 3/3 Regenerated "large" thumbnail for "Sunburst Over River" (ID 756). * Success: Regenerated 3 of 3 images. */ public function regenerate( $args, $assoc_args = array() ) { $assoc_args = wp_parse_args( $assoc_args, [ 'image_size' => '' ] ); $image_size = $assoc_args['image_size']; if ( $image_size && ! in_array( $image_size, get_intermediate_image_sizes(), true ) ) { WP_CLI::error( sprintf( 'Unknown image size "%s".', $image_size ) ); } if ( empty( $args ) ) { if ( $image_size ) { WP_CLI::confirm( sprintf( 'Do you really want to regenerate the "%s" image size for all images?', $image_size ), $assoc_args ); } else { WP_CLI::confirm( 'Do you really want to regenerate all images?', $assoc_args ); } } $skip_delete = Utils\get_flag_value( $assoc_args, 'skip-delete' ); $only_missing = Utils\get_flag_value( $assoc_args, 'only-missing' ); if ( $only_missing ) { $skip_delete = true; } $additional_mime_types = array(); if ( Utils\wp_version_compare( '4.7', '>=' ) ) { $additional_mime_types[] = 'application/pdf'; } $images = $this->get_images( $args, $additional_mime_types ); $count = $images->post_count; if ( ! $count ) { WP_CLI::warning( 'No images found.' ); return; } WP_CLI::log( sprintf( 'Found %1$d %2$s to regenerate.', $count, _n( 'image', 'images', $count ) ) ); if ( $image_size ) { $image_size_filters = $this->add_image_size_filters( $image_size ); } $number = 0; $successes = 0; $errors = 0; $skips = 0; foreach ( $images->posts as $post ) { $number++; if ( 0 === $number % self::WP_CLEAR_OBJECT_CACHE_INTERVAL ) { Utils\wp_clear_object_cache(); } $this->process_regeneration( $post->ID, $skip_delete, $only_missing, $image_size, $number . '/' . $count, $successes, $errors, $skips ); } if ( $image_size ) { $this->remove_image_size_filters( $image_size_filters ); } Utils\report_batch_operation_results( 'image', 'regenerate', $count, $successes, $errors, $skips ); } /** * Creates attachments from local files or URLs. * * ## OPTIONS * * <file>... * : Path to file or files to be imported. Supports the glob(3) capabilities of the current shell. * If file is recognized as a URL (for example, with a scheme of http or ftp), the file will be * downloaded to a temp file before being sideloaded. * * [--post_id=<post_id>] * : ID of the post to attach the imported files to. * * [--title=<title>] * : Attachment title (post title field). * * [--caption=<caption>] * : Caption for attachent (post excerpt field). * * [--alt=<alt_text>] * : Alt text for image (saved as post meta). * * [--desc=<description>] * : "Description" field (post content) of attachment post. * * [--skip-copy] * : If set, media files (local only) are imported to the library but not moved on disk. * File names will not be run through wp_unique_filename() with this set. * * [--preserve-filetime] * : Use the file modified time as the post published & modified dates. * Remote files will always use the current time. * * [--featured_image] * : If set, set the imported image as the Featured Image of the post its attached to. * * [--porcelain] * : Output just the new attachment ID. * * ## EXAMPLES * * # Import all jpgs in the current user's "Pictures" directory, not attached to any post. * $ wp media import ~/Pictures/**\/*.jpg * Imported file '/home/person/Pictures/landscape-photo.jpg' as attachment ID 1751. * Imported file '/home/person/Pictures/fashion-icon.jpg' as attachment ID 1752. * Success: Imported 2 of 2 items. * * # Import a local image and set it to be the post thumbnail for a post. * $ wp media import ~/Downloads/image.png --post_id=123 --title="A downloaded picture" --featured_image * Imported file '/home/person/Downloads/image.png' as attachment ID 1753 and attached to post 123 as featured image. * Success: Imported 1 of 1 images. * * # Import a local image, but set it as the featured image for all posts. * # 1. Import the image and get its attachment ID. * # 2. Assign the attachment ID as the featured image for all posts. * $ ATTACHMENT_ID="$(wp media import ~/Downloads/image.png --porcelain)" * $ wp post list --post_type=post --format=ids | xargs -d ' ' -I % wp post meta add % _thumbnail_id $ATTACHMENT_ID * Success: Added custom field. * Success: Added custom field. * * # Import an image from the web. * $ wp media import http://s.wordpress.org/style/images/wp-header-logo.png --title='The WordPress logo' --alt="Semantic personal publishing" * Imported file 'http://s.wordpress.org/style/images/wp-header-logo.png' as attachment ID 1755. * Success: Imported 1 of 1 images. * * # Get the URL for an attachment after import. * $ wp media import http://s.wordpress.org/style/images/wp-header-logo.png --porcelain | xargs -I {} wp post list --post__in={} --field=url --post_type=attachment * http://wordpress-develop.dev/wp-header-logo/ */ public function import( $args, $assoc_args = array() ) { $assoc_args = wp_parse_args( $assoc_args, array( 'title' => '', 'caption' => '', 'alt' => '', 'desc' => '', ) ); // Assume the most generic term $noun = 'item'; // Current site's timezone offset. $gmt_offset = get_option( 'gmt_offset' ); // Use the noun `image` when sure the media file is an image if ( Utils\get_flag_value( $assoc_args, 'featured_image' ) || $assoc_args['alt'] ) { $noun = 'image'; } if ( isset( $assoc_args['post_id'] ) ) { if ( ! get_post( $assoc_args['post_id'] ) ) { WP_CLI::warning( 'Invalid --post_id' ); $assoc_args['post_id'] = false; } } else { $assoc_args['post_id'] = false; } $number = 0; $successes = 0; $errors = 0; foreach ( $args as $file ) { $number++; if ( 0 === $number % self::WP_CLEAR_OBJECT_CACHE_INTERVAL ) { Utils\wp_clear_object_cache(); } // phpcs:ignore WordPress.WP.AlternativeFunctions.parse_url_parse_url -- parse_url will only be used in absence of wp_parse_url. $is_file_remote = function_exists( 'wp_parse_url' ) ? wp_parse_url( $file, PHP_URL_HOST ) : parse_url( $file, PHP_URL_HOST ); $orig_filename = $file; $file_time = ''; if ( empty( $is_file_remote ) ) { if ( ! file_exists( $file ) ) { WP_CLI::warning( "Unable to import file '$file'. Reason: File doesn't exist." ); $errors++; continue; } if ( Utils\get_flag_value( $assoc_args, 'skip-copy' ) ) { $tempfile = $file; } else { $tempfile = $this->make_copy( $file ); } $name = Utils\basename( $file ); if ( Utils\get_flag_value( $assoc_args, 'preserve-filetime' ) ) { $file_time = @filemtime( $file ); } } else { $tempfile = download_url( $file ); if ( is_wp_error( $tempfile ) ) { WP_CLI::warning( sprintf( "Unable to import file '%s'. Reason: %s", $file, implode( ', ', $tempfile->get_error_messages() ) ) ); $errors++; continue; } $name = strtok( Utils\basename( $file ), '?' ); } $file_array = array( 'tmp_name' => $tempfile, 'name' => $name, ); $post_array = array( 'post_title' => $assoc_args['title'], 'post_excerpt' => $assoc_args['caption'], 'post_content' => $assoc_args['desc'], ); if ( ! empty( $file_time ) ) { $post_array['post_date'] = gmdate( 'Y-m-d H:i:s', $file_time + ( $gmt_offset * HOUR_IN_SECONDS ) ); $post_array['post_date_gmt'] = gmdate( 'Y-m-d H:i:s', $file_time ); $post_array['post_modified'] = gmdate( 'Y-m-d H:i:s', $file_time + ( $gmt_offset * HOUR_IN_SECONDS ) ); $post_array['post_modified_gmt'] = gmdate( 'Y-m-d H:i:s', $file_time ); } $post_array = wp_slash( $post_array ); // use image exif/iptc data for title and caption defaults if possible if ( empty( $post_array['post_title'] ) || empty( $post_array['post_excerpt'] ) ) { // @codingStandardsIgnoreStart $image_meta = @wp_read_image_metadata( $tempfile ); // @codingStandardsIgnoreEnd if ( ! empty( $image_meta ) ) { if ( empty( $post_array['post_title'] ) && trim( $image_meta['title'] ) && ! is_numeric( sanitize_title( $image_meta['title'] ) ) ) { $post_array['post_title'] = $image_meta['title']; } if ( empty( $post_array['post_excerpt'] ) && trim( $image_meta['caption'] ) ) { $post_array['post_excerpt'] = $image_meta['caption']; } } } if ( empty( $post_array['post_title'] ) ) { $post_array['post_title'] = preg_replace( '/\.[^.]+$/', '', Utils\basename( $file ) ); } if ( Utils\get_flag_value( $assoc_args, 'skip-copy' ) ) { $wp_filetype = wp_check_filetype( $file, null ); $post_array['post_mime_type'] = $wp_filetype['type']; $post_array['post_status'] = 'inherit'; $success = wp_insert_attachment( $post_array, $file, $assoc_args['post_id'] ); if ( is_wp_error( $success ) ) { WP_CLI::warning( sprintf( "Unable to insert file '%s'. Reason: %s", $orig_filename, implode( ', ', $success->get_error_messages() ) ) ); $errors++; continue; } wp_update_attachment_metadata( $success, wp_generate_attachment_metadata( $success, $file ) ); } else { // Deletes the temporary file. $success = media_handle_sideload( $file_array, $assoc_args['post_id'], $assoc_args['title'], $post_array ); if ( is_wp_error( $success ) ) { WP_CLI::warning( sprintf( "Unable to import file '%s'. Reason: %s", $orig_filename, implode( ', ', $success->get_error_messages() ) ) ); $errors++; continue; } } // Set alt text if ( $assoc_args['alt'] ) { update_post_meta( $success, '_wp_attachment_image_alt', wp_slash( $assoc_args['alt'] ) ); } // Set as featured image, if --post_id and --featured_image are set if ( $assoc_args['post_id'] && Utils\get_flag_value( $assoc_args, 'featured_image' ) ) { update_post_meta( $assoc_args['post_id'], '_thumbnail_id', $success ); } $attachment_success_text = ''; if ( $assoc_args['post_id'] ) { $attachment_success_text = " and attached to post {$assoc_args['post_id']}"; if ( Utils\get_flag_value( $assoc_args, 'featured_image' ) ) { $attachment_success_text .= ' as featured image'; } } if ( Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { WP_CLI::line( $success ); } else { WP_CLI::log( sprintf( "Imported file '%s' as attachment ID %d%s.", $orig_filename, $success, $attachment_success_text ) ); } $successes++; } // Report the result of the operation if ( ! Utils\get_flag_value( $assoc_args, 'porcelain' ) ) { Utils\report_batch_operation_results( $noun, 'import', count( $args ), $successes, $errors ); } elseif ( $errors ) { WP_CLI::halt( 1 ); } } /** * Lists image sizes registered with WordPress. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a specific format * --- * default: table * options: * - table * - json * - csv * - yaml * - count * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each image size: * * name * * width * * height * * crop * * ratio * * ## EXAMPLES * * # List all registered image sizes * $ wp media image-size * +---------------------------+-------+--------+-------+-------+ * | name | width | height | crop | ratio | * +---------------------------+-------+--------+-------+-------+ * | full | | | N/A | N/A | * | twentyfourteen-full-width | 1038 | 576 | hard | 173:96| * | large | 1024 | 1024 | soft | N/A | * | medium_large | 768 | 0 | soft | N/A | * | medium | 300 | 300 | soft | N/A | * | thumbnail | 150 | 150 | hard | 1:1 | * +---------------------------+-------+--------+-------+-------+ * * @subcommand image-size */ public function image_size( $args, $assoc_args ) { $assoc_args = array_merge( array( 'fields' => 'name,width,height,crop,ratio', ), $assoc_args ); $sizes = $this->get_registered_image_sizes(); usort( $sizes, function( $a, $b ) { if ( $a['width'] === $b['width'] ) { return 0; } return ( $a['width'] < $b['width'] ) ? 1 : -1; } ); array_unshift( $sizes, array( 'name' => 'full', 'width' => '', 'height' => '', 'crop' => 'N/A', 'ratio' => 'N/A', ) ); WP_CLI\Utils\format_items( $assoc_args['format'], $sizes, explode( ',', $assoc_args['fields'] ) ); } private function get_ratio( $width, $height ) { if ( 0 === $height ) { return "0:{$width}"; } if ( 0 === $width ) { return "{$height}:0"; } $gcd = $this->gcd( $width, $height ); $width_ratio = $width / $gcd; $height_ratio = $height / $gcd; return "{$width_ratio}:{$height_ratio}"; } private function gcd( $num1, $num2 ) { while ( 0 !== $num2 ) { $t = $num1 % $num2; $num1 = $num2; $num2 = $t; } return $num1; } // wp_tempnam() inexplicably forces a .tmp extension, which spoils MIME type detection private function make_copy( $path ) { $dir = get_temp_dir(); $filename = Utils\basename( $path ); if ( empty( $filename ) ) { $filename = time(); } $filename = $dir . wp_unique_filename( $dir, $filename ); if ( ! copy( $path, $filename ) ) { WP_CLI::error( "Could not create temporary file for $path." ); } return $filename; } private function process_regeneration( $id, $skip_delete, $only_missing, $image_size, $progress, &$successes, &$errors, &$skips ) { $title = get_the_title( $id ); if ( '' === $title ) { // If audio or video cover art then the id is the sub attachment id, which has no title. if ( metadata_exists( 'post', $id, '_cover_hash' ) ) { // Unfortunately the only way to get the attachment title would be to do a non-indexed query against the meta value of `_thumbnail_id`. So don't. $att_desc = sprintf( 'cover attachment (ID %d)', $id ); } else { $att_desc = sprintf( '"(no title)" (ID %d)', $id ); } } else { $att_desc = sprintf( '"%1$s" (ID %2$d)', $title, $id ); } $thumbnail_desc = $image_size ? sprintf( '"%s" thumbnail', $image_size ) : 'thumbnail'; $fullsizepath = $this->get_attached_file( $id ); if ( false === $fullsizepath || ! file_exists( $fullsizepath ) ) { WP_CLI::warning( "Can't find $att_desc." ); $errors++; return; } $is_pdf = 'application/pdf' === get_post_mime_type( $id ); $needs_regeneration = $this->needs_regeneration( $id, $fullsizepath, $is_pdf, $image_size, $skip_delete, $skip_it ); if ( $skip_it ) { WP_CLI::log( "$progress Skipped $thumbnail_desc regeneration for $att_desc." ); $skips++; return; } if ( $only_missing && ! $needs_regeneration ) { WP_CLI::log( "$progress No $thumbnail_desc regeneration needed for $att_desc." ); $successes++; return; } $metadata = wp_generate_attachment_metadata( $id, $fullsizepath ); if ( is_wp_error( $metadata ) ) { WP_CLI::warning( sprintf( '%s (ID %d)', $metadata->get_error_message(), $id ) ); WP_CLI::log( "$progress Couldn't regenerate thumbnails for $att_desc." ); $errors++; return; } // Note it's possible for no metadata to be generated for PDFs if restricted to a specific image size. if ( empty( $metadata ) && ! ( $is_pdf && $image_size ) ) { WP_CLI::warning( sprintf( 'No metadata. (ID %d)', $id ) ); WP_CLI::log( "$progress Couldn't regenerate thumbnails for $att_desc." ); $errors++; return; } if ( $image_size ) { if ( $this->update_attachment_metadata_for_image_size( $id, $metadata, $image_size ) ) { WP_CLI::log( "$progress Regenerated $thumbnail_desc for $att_desc." ); } else { WP_CLI::log( "$progress No $thumbnail_desc regeneration needed for $att_desc." ); } } else { wp_update_attachment_metadata( $id, $metadata ); WP_CLI::log( "$progress Regenerated thumbnails for $att_desc." ); } $successes++; } private function remove_old_images( $metadata, $fullsizepath, $image_size ) { if ( empty( $metadata['sizes'] ) ) { return; } if ( $image_size ) { if ( empty( $metadata['sizes'][ $image_size ] ) ) { return; } $metadata['sizes'] = array( $image_size => $metadata['sizes'][ $image_size ] ); } $dir_path = dirname( $fullsizepath ) . '/'; foreach ( $metadata['sizes'] as $size_info ) { $intermediate_path = $dir_path . $size_info['file']; if ( $intermediate_path === $fullsizepath ) { continue; } if ( file_exists( $intermediate_path ) ) { unlink( $intermediate_path ); } } } private function needs_regeneration( $att_id, $fullsizepath, $is_pdf, $image_size, $skip_delete, &$skip_it ) { // Assume not skipping. $skip_it = false; // Note: zero-length string returned if no metadata, for instance if PDF or non-standard image (eg an SVG). $metadata = wp_get_attachment_metadata( $att_id ); $image_sizes = $this->get_intermediate_image_sizes_for_attachment( $fullsizepath, $is_pdf, $metadata ); // First check if no applicable editor currently available (non-destructive - ie old thumbnails not removed). if ( is_wp_error( $image_sizes ) && 'image_no_editor' === $image_sizes->get_error_code() ) { // Warn unless PDF or non-standard image. if ( ! $is_pdf && is_array( $metadata ) && ! empty( $metadata['sizes'] ) ) { WP_CLI::warning( sprintf( '%s (ID %d)', $image_sizes->get_error_message(), $att_id ) ); } $skip_it = true; return false; } // If uploaded when applicable image editor such as Imagick unavailable, the metadata or sizes metadata may not exist. if ( ! is_array( $metadata ) ) { $metadata = array(); } // If set `$metadata['sizes']` should be array but explicitly check as following code depends on it. if ( ! isset( $metadata['sizes'] ) || ! is_array( $metadata['sizes'] ) ) { $metadata['sizes'] = array(); } // Remove any old thumbnails (so now destructive). if ( ! $skip_delete ) { $this->remove_old_images( $metadata, $fullsizepath, $image_size ); } // Check for any other error (such as load error) apart from no editor available. if ( is_wp_error( $image_sizes ) ) { // Warn but assume it may be possible to regenerate and allow processing to continue and possibly fail. WP_CLI::warning( sprintf( '%s (ID %d)', $image_sizes->get_error_message(), $att_id ) ); return true; } // Have sizes - check whether there're new ones or they've changed. Note that an attachment can have no sizes if it's on or below the thumbnail threshold. if ( $image_size ) { if ( empty( $image_sizes[ $image_size ] ) ) { return false; } if ( empty( $metadata['sizes'][ $image_size ] ) ) { return true; } $metadata['sizes'] = array( $image_size => $metadata['sizes'][ $image_size ] ); } if ( $this->image_sizes_differ( $image_sizes, $metadata['sizes'] ) ) { return true; } $dir_path = dirname( $fullsizepath ) . '/'; // Check that the thumbnail files exist. foreach ( $metadata['sizes'] as $size_info ) { $intermediate_path = $dir_path . $size_info['file']; if ( $intermediate_path === $fullsizepath ) { continue; } if ( ! file_exists( $intermediate_path ) ) { return true; } } return false; } // Whether there's new image sizes or the width/height of existing image sizes have changed. private function image_sizes_differ( $image_sizes, $meta_sizes ) { // Check if have new image size(s). if ( array_diff( array_keys( $image_sizes ), array_keys( $meta_sizes ) ) ) { return true; } // Check if image sizes have changed. foreach ( $image_sizes as $name => $image_size ) { if ( $image_size['width'] !== $meta_sizes[ $name ]['width'] || $image_size['height'] !== $meta_sizes[ $name ]['height'] ) { return true; } } return false; } // Like WP's get_intermediate_image_sizes(), but removes sizes that won't be generated for a particular attachment due to its being on or below their thresholds, // and returns associative array with size name => width/height entries, resolved to crop values if applicable. private function get_intermediate_image_sizes_for_attachment( $fullsizepath, $is_pdf, $metadata ) { // Need to get width, height of attachment for image_resize_dimensions(). $editor = wp_get_image_editor( $fullsizepath ); if ( is_wp_error( $editor ) ) { return $editor; } $result = $editor->load(); if ( is_wp_error( $result ) ) { unset( $editor ); return $result; } list( $width, $height ) = array_values( $editor->get_size() ); unset( $editor ); $sizes = array(); foreach ( $this->get_intermediate_sizes( $is_pdf, $metadata ) as $name => $size ) { // Need to check destination and original width or height differ before calling image_resize_dimensions(), otherwise it will return non-false. $dims = image_resize_dimensions( $width, $height, $size['width'], $size['height'], $size['crop'] ); if ( ( $width !== $size['width'] || $height !== $size['height'] ) && $dims ) { list( $dst_x, $dst_y, $src_x, $src_y, $dst_w, $dst_h, $src_w, $src_h ) = $dims; $sizes[ $name ] = array( 'width' => $dst_w, 'height' => $dst_h, ); } } return $sizes; } // Like WP's get_intermediate_image_sizes(), but returns associative array with name => size info entries (and caters for PDFs also). private function get_intermediate_sizes( $is_pdf, $metadata ) { if ( $is_pdf ) { // Copied from wp_generate_attachment_metadata() in "wp-admin/includes/image.php". $fallback_sizes = array( 'thumbnail', 'medium', 'large', ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $intermediate_image_sizes = apply_filters( 'fallback_intermediate_image_sizes', $fallback_sizes, $metadata ); } else { $intermediate_image_sizes = get_intermediate_image_sizes(); } // Adapted from wp_generate_attachment_metadata() in "wp-admin/includes/image.php". if ( function_exists( 'wp_get_additional_image_sizes' ) ) { $_wp_additional_image_sizes = wp_get_additional_image_sizes(); } else { // For WP < 4.7.0. global $_wp_additional_image_sizes; if ( ! $_wp_additional_image_sizes ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Used as a fallback for WordPress version less than 4.7.0 as function wp_get_additional_image_sizes didn't exist then. $_wp_additional_image_sizes = array(); } } $sizes = array(); foreach ( $intermediate_image_sizes as $s ) { if ( isset( $_wp_additional_image_sizes[ $s ]['width'] ) ) { $sizes[ $s ]['width'] = (int) $_wp_additional_image_sizes[ $s ]['width']; } else { $sizes[ $s ]['width'] = (int) get_option( "{$s}_size_w" ); } if ( isset( $_wp_additional_image_sizes[ $s ]['height'] ) ) { $sizes[ $s ]['height'] = (int) $_wp_additional_image_sizes[ $s ]['height']; } else { $sizes[ $s ]['height'] = (int) get_option( "{$s}_size_h" ); } if ( isset( $_wp_additional_image_sizes[ $s ]['crop'] ) ) { $sizes[ $s ]['crop'] = (bool) $_wp_additional_image_sizes[ $s ]['crop']; } else { // Force PDF thumbnails to be soft crops. if ( $is_pdf && 'thumbnail' === $s ) { $sizes[ $s ]['crop'] = false; } else { $sizes[ $s ]['crop'] = (bool) get_option( "{$s}_crop" ); } } } // Check here that not PDF (as filter not applied in core if is) and `$metadata` is array (as may not be and filter only applied in core when is). if ( ! $is_pdf && is_array( $metadata ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $sizes = apply_filters( 'intermediate_image_sizes_advanced', $sizes, $metadata ); } return $sizes; } // Add filters to only process a particular intermediate image size in wp_generate_attachment_metadata(). private function add_image_size_filters( $image_size ) { $image_size_filters = array(); // For images. $image_size_filters['intermediate_image_sizes_advanced'] = function ( $sizes ) use ( $image_size ) { // $sizes is associative array of name => size info entries. if ( isset( $sizes[ $image_size ] ) ) { return array( $image_size => $sizes[ $image_size ] ); } return array(); }; // For PDF previews. $image_size_filters['fallback_intermediate_image_sizes'] = function ( $fallback_sizes ) use ( $image_size ) { // $fallback_sizes is indexed array of size names. if ( in_array( $image_size, $fallback_sizes, true ) ) { return array( $image_size ); } return array(); }; foreach ( $image_size_filters as $name => $filter ) { add_filter( $name, $filter, PHP_INT_MAX ); } return $image_size_filters; } // Remove above intermediate image size filters. private function remove_image_size_filters( $image_size_filters ) { foreach ( $image_size_filters as $name => $filter ) { remove_filter( $name, $filter, PHP_INT_MAX ); } } // Update attachment sizes metadata just for a particular intermediate image size. private function update_attachment_metadata_for_image_size( $id, $new_metadata, $image_size ) { $metadata = wp_get_attachment_metadata( $id ); if ( ! is_array( $metadata ) ) { return false; } // If have metadata for image_size. if ( ! empty( $new_metadata['sizes'][ $image_size ] ) ) { $metadata['sizes'][ $image_size ] = $new_metadata['sizes'][ $image_size ]; wp_update_attachment_metadata( $id, $metadata ); return true; } // Else remove unused metadata if any. if ( ! empty( $metadata['sizes'][ $image_size ] ) ) { unset( $metadata['sizes'][ $image_size ] ); wp_update_attachment_metadata( $id, $metadata ); // Treat removing unused metadata as no change. } return false; } /** * Get images from the installation. * * @param array $args The query arguments to use. Optional. * @param array $additional_mime_types The additional mime types to search for. Optional. * * @return WP_Query The query result. */ private function get_images( $args = array(), $additional_mime_types = array() ) { $mime_types = array_merge( array( 'image' ), $additional_mime_types ); $query_args = array( 'post_type' => 'attachment', 'post__in' => $args, 'post_mime_type' => $mime_types, 'post_status' => 'any', 'posts_per_page' => -1, ); return new WP_Query( $query_args ); } /** * Get the metadata for the passed intermediate image size. * * @param string $size The image size to get the metadata for. * * @return array The image size metadata. */ private function get_intermediate_size_metadata( $size ) { $width = intval( get_option( "{$size}_size_w" ) ); $height = intval( get_option( "{$size}_size_h" ) ); $crop = get_option( "{$size}_crop" ); return array( 'name' => $size, 'width' => $width, 'height' => $height, 'crop' => false !== $crop ? 'hard' : 'soft', 'ratio' => false !== $crop ? $this->get_ratio( $width, $height ) : 'N/A', ); } /** * Get all the registered image sizes along with their dimensions. * * @global array $_wp_additional_image_sizes The additional image sizes to parse. * * @link https://wordpress.stackexchange.com/a/251602 Original solution. * * @return array $image_sizes The image sizes */ private function get_registered_image_sizes() { global $_wp_additional_image_sizes; $image_sizes = array(); $default_image_sizes = get_intermediate_image_sizes(); foreach ( $default_image_sizes as $size ) { $image_sizes[] = $this->get_intermediate_size_metadata( $size ); } if ( is_array( $_wp_additional_image_sizes ) ) { foreach ( $_wp_additional_image_sizes as $size => $size_args ) { $crop = filter_var( $size_args['crop'], FILTER_VALIDATE_BOOLEAN ); $image_sizes[] = array( 'name' => $size, 'width' => $size_args['width'], 'height' => $size_args['height'], 'crop' => empty( $crop ) || is_array( $size_args['crop'] ) ? 'soft' : 'hard', 'ratio' => empty( $crop ) || is_array( $size_args['crop'] ) ? 'N/A' : $this->get_ratio( $size_args['width'], $size_args['height'] ), ); } } return $image_sizes; } /** * Fix image orientation for one or more attachments. * * ## OPTIONS * * [<attachment-id>...] * : One or more IDs of the attachments to regenerate. * * [--dry-run] * : Check images needing orientation without performing the operation. * * ## EXAMPLES * * # Fix orientation for all images. * $ wp media fix-orientation * 1/3 Fixing orientation for "Landscape_4" (ID 62). * 2/3 Fixing orientation for "Landscape_3" (ID 61). * 3/3 Fixing orientation for "Landscape_2" (ID 60). * Success: Fixed 3 of 3 images. * * # Fix orientation dry run. * $ wp media fix-orientation 63 -dry run * 1/1 "Portrait_6" (ID 63) will be affected. * Success: 1 of 1 image will be affected. * * # Fix orientation for specific images. * $ wp media fix-orientation 63 * 1/1 Fixing orientation for "Portrait_6" (ID 63). * Success: Fixed 1 of 1 images. * * @subcommand fix-orientation */ public function fix_orientation( $args, $assoc_args ) { // EXIF is required to read image metadata for orientation. if ( ! extension_loaded( 'exif' ) ) { WP_CLI::error( "'EXIF' extension is not loaded, it is required for this operation." ); } elseif ( ! function_exists( 'exif_read_data' ) ) { WP_CLI::error( "Function 'exif_read_data' does not exist, it is required for this operation." ); } $images = $this->get_images( $args ); $count = $images->post_count; $dry_run = Utils\get_flag_value( $assoc_args, 'dry-run' ); if ( ! $count ) { WP_CLI::error( 'No images found.' ); } $number = 0; $successes = 0; $errors = 0; foreach ( $images->posts as $post ) { $number++; if ( 0 === $number % self::WP_CLEAR_OBJECT_CACHE_INTERVAL ) { Utils\wp_clear_object_cache(); } $this->process_orientation_fix( $post->ID, "{$number}/{$count}", $successes, $errors, $dry_run ); } if ( Utils\get_flag_value( $assoc_args, 'dry-run' ) ) { WP_CLI::success( sprintf( '%s of %s %s will be affected.', $successes, $count, Utils\pluralize( 'image', $count ) ) ); } else { Utils\report_batch_operation_results( 'image', 'fix', $count, $successes, $errors ); } } /** * Perform orientation fix on attachments. * * @param int $id Attachment Id. * @param string $progress Current progress string. * @param int $successes Count of success in current operation. * @param int $errors Count of errors in current operation. * @param bool $dry_run Is this a dry run? */ private function process_orientation_fix( $id, $progress, &$successes, &$errors, $dry_run ) { $title = get_the_title( $id ); if ( '' === $title ) { // If audio or video cover art then the id is the sub attachment id, which has no title. if ( metadata_exists( 'post', $id, '_cover_hash' ) ) { // Unfortunately the only way to get the attachment title would be to do a non-indexed query against the meta value of `_thumbnail_id`. So don't. $att_desc = sprintf( 'cover attachment (ID %d)', $id ); } else { $att_desc = sprintf( '"(no title)" (ID %d)', $id ); } } else { $att_desc = sprintf( '"%1$s" (ID %2$d)', $title, $id ); } $full_size_path = $this->get_attached_file( $id ); if ( false === $full_size_path || ! file_exists( $full_size_path ) ) { WP_CLI::warning( "Can't find {$att_desc}." ); $errors++; return; } // Get current metadata of the attachment. $metadata = wp_generate_attachment_metadata( $id, $full_size_path ); $image_meta = ! empty( $metadata['image_meta'] ) ? $metadata['image_meta'] : []; if ( isset( $image_meta['orientation'] ) && absint( $image_meta['orientation'] ) > 1 ) { if ( ! $dry_run ) { WP_CLI::log( "{$progress} Fixing orientation for {$att_desc}." ); if ( false !== $this->flip_rotate_image( $id, $metadata, $image_meta, $full_size_path ) ) { $successes++; } else { $errors++; WP_CLI::log( "Couldn't fix orientation for {$att_desc}." ); } } else { WP_CLI::log( "{$progress} {$att_desc} will be affected." ); $successes++; } } else { WP_CLI::log( "{$progress} No orientation fix required for {$att_desc}." ); } } /** * Perform image rotate operations on the image. * * @param int $id Attachment Id. * @param array $metadata Attachment Metadata. * @param array $image_meta `image_meta` information for the attachment. * @param string $full_size_path Path to original image. * * @return bool Whether the image rotation operation succeeded. */ private function flip_rotate_image( $id, $metadata, $image_meta, $full_size_path ) { $editor = wp_get_image_editor( $full_size_path ); if ( ! is_wp_error( $editor ) ) { $operations = $this->calculate_transformation( (int) $image_meta['orientation'] ); // Rotate image if required. if ( true === $operations['rotate'] ) { $editor->rotate( $operations['degree'] ); } // Flip image if required. if ( false !== $operations['flip'] ) { $editor->flip( $operations['flip'][0], $operations['flip'][1] ); } // Save the image and generate metadata. $editor->save( $full_size_path ); $metadata = wp_generate_attachment_metadata( $id, $full_size_path ); $image_meta = empty( $metadata['image_meta'] ) ? [] : $metadata['image_meta']; // Update attachment metadata with newly generated data. wp_update_attachment_metadata( $id, $metadata ); if ( isset( $image_meta['orientation'] ) && absint( $image_meta['orientation'] ) === 0 ) { return true; } } return false; } /** * Return array of operations to be done for provided orientation value. * * @param int $orientation EXIF orientation value. * * @return array */ private function calculate_transformation( $orientation ) { $rotate = false; $flip = false; $degree = 0; switch ( $orientation ) { case 2: $flip = [ false, true ]; // $flip image along given axis [ horizontal, vertical ] break; case 3: $flip = [ true, true ]; break; case 4: $flip = [ true, false ]; break; case 5: $degree = -90; $rotate = true; $flip = [ false, true ]; break; case 6: $degree = -90; $rotate = true; break; case 7: $degree = 90; $rotate = true; $flip = [ false, true ]; break; case 8: $degree = 90; $rotate = true; break; default: $degree = 0; $rotate = true; break; } return [ 'flip' => $flip, 'degree' => $degree, 'rotate' => $rotate, ]; } /** * Add compatibility indirection to get_attached_file(). * * In WordPress 5.3, behavior changed to account for automatic resizing of * big image files. * * @see https://core.trac.wordpress.org/ticket/47873 * * @param int $attachment_id ID of the attachment to get the filepath for. * @return string|false Filepath of the attachment, or false if not found. */ private function get_attached_file( $attachment_id ) { if ( function_exists( 'wp_get_original_image_path' ) ) { $filepath = wp_get_original_image_path( $attachment_id ); if ( false !== $filepath ) { return $filepath; } } return get_attached_file( $attachment_id ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_maintenance_mode_autoloader = __DIR__ . '/vendor/autoload.php'; if ( file_exists( $wpcli_maintenance_mode_autoloader ) ) { require_once $wpcli_maintenance_mode_autoloader; } WP_CLI::add_command( 'maintenance-mode', '\WP_CLI\MaintenanceMode\MaintenanceModeCommand' ); <?php namespace WP_CLI\MaintenanceMode; use WP_CLI; use WP_CLI_Command; use WP_Upgrader; use WP_Filesystem_Base; /** * Activates, deactivates or checks the status of the maintenance mode of a site. * * ## EXAMPLES * * # Activate Maintenance mode. * $ wp maintenance-mode activate * Enabling Maintenance mode... * Success: Activated Maintenance mode. * * # Deactivate Maintenance mode. * $ wp maintenance-mode deactivate * Disabling Maintenance mode... * Success: Deactivated Maintenance mode. * * # Display Maintenance mode status. * $ wp maintenance-mode status * Maintenance mode is active. * * # Get Maintenance mode status for scripting purpose. * $ wp maintenance-mode is-active * $ echo $? * 1 * * @when after_wp_load * @package wp-cli */ class MaintenanceModeCommand extends WP_CLI_Command { /** * Instance of WP_Upgrader. * * @var WP_Upgrader */ private $upgrader; /** * Instantiate a MaintenanceModeCommand object. */ public function __construct() { if ( ! class_exists( 'WP_Upgrader' ) ) { require_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php'; } $this->upgrader = new WP_Upgrader( new WP_CLI\UpgraderSkin() ); $this->upgrader->init(); } /** * Activates maintenance mode. * * [--force] * : Force maintenance mode activation operation. * * ## EXAMPLES * * $ wp maintenance-mode activate * Enabling Maintenance mode... * Success: Activated Maintenance mode. */ public function activate( $_, $assoc_args ) { if ( $this->get_maintenance_mode_status() && ! WP_CLI\Utils\get_flag_value( $assoc_args, 'force' ) ) { WP_CLI::error( 'Maintenance mode already activated.' ); } $this->upgrader->maintenance_mode( true ); WP_CLI::success( 'Activated Maintenance mode.' ); } /** * Deactivates maintenance mode. * * ## EXAMPLES * * $ wp maintenance-mode deactivate * Disabling Maintenance mode... * Success: Deactivated Maintenance mode. */ public function deactivate() { if ( ! $this->get_maintenance_mode_status() ) { WP_CLI::error( 'Maintenance mode already deactivated.' ); } $this->upgrader->maintenance_mode( false ); WP_CLI::success( 'Deactivated Maintenance mode.' ); } /** * Displays maintenance mode status. * * ## EXAMPLES * * $ wp maintenance-mode status * Maintenance mode is active. */ public function status() { $status = $this->get_maintenance_mode_status() ? 'active' : 'not active'; WP_CLI::line( "Maintenance mode is {$status}." ); } /** * Detects maintenance mode status. * * ## EXAMPLES * * $ wp maintenance-mode is-active * $ echo $? * 1 * * @subcommand is-active */ public function is_active() { WP_CLI::halt( $this->get_maintenance_mode_status() ? 0 : 1 ); } /** * Returns status of maintenance mode. * * @return bool */ private function get_maintenance_mode_status() { $wp_filesystem = $this->init_wp_filesystem(); $maintenance_file = trailingslashit( $wp_filesystem->abspath() ) . '.maintenance'; return $wp_filesystem->exists( $maintenance_file ); } /** * Initializes WP_Filesystem. * * @return WP_Filesystem_Base */ protected function init_wp_filesystem() { global $wp_filesystem; WP_Filesystem(); return $wp_filesystem; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_embed_autoloader = __DIR__ . '/vendor/autoload.php'; if ( file_exists( $wpcli_embed_autoloader ) ) { require_once $wpcli_embed_autoloader; } if ( class_exists( 'WP_CLI\Dispatcher\CommandNamespace' ) ) { WP_CLI::add_command( 'embed', '\WP_CLI\Embeds\Embeds_Namespace' ); } WP_CLI::add_command( 'embed fetch', '\WP_CLI\Embeds\Fetch_Command' ); WP_CLI::add_command( 'embed provider', '\WP_CLI\Embeds\Provider_Command' ); WP_CLI::add_command( 'embed handler', '\WP_CLI\Embeds\Handler_Command' ); WP_CLI::add_command( 'embed cache', '\WP_CLI\Embeds\Cache_Command' ); <?php namespace WP_CLI\Embeds; use WP_CLI; use WP_CLI\Formatter; use WP_CLI\Utils; use WP_CLI_Command; /** * Retrieves oEmbed providers. */ class Provider_Command extends WP_CLI_Command { protected $default_fields = array( 'format', 'endpoint', ); /** * Lists all available oEmbed providers. * * ## OPTIONS * * [--field=<field>] * : Display the value of a single field * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * --- * * [--force-regex] * : Turn the asterisk-type provider URLs into regexes. * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each provider: * * * format * * endpoint * * This field is optionally available: * * * regex * * ## EXAMPLES * * # List format,endpoint fields of available providers. * $ wp embed provider list --fields=format,endpoint * +------------------------------+-----------------------------------------+ * | format | endpoint | * +------------------------------+-----------------------------------------+ * | #https?://youtu\.be/.*#i | https://www.youtube.com/oembed | * | #https?://flic\.kr/.*#i | https://www.flickr.com/services/oembed/ | * | #https?://wordpress\.tv/.*#i | https://wordpress.tv/oembed/ | * * @subcommand list */ public function list_providers( $args, $assoc_args ) { $oembed = new oEmbed(); $force_regex = Utils\get_flag_value( $assoc_args, 'force-regex' ); $providers = array(); foreach ( (array) $oembed->providers as $matchmask => $data ) { list( $providerurl, $regex ) = $data; // Turn the asterisk-type provider URLs into regex if ( $force_regex && ! $regex ) { $matchmask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $matchmask ), '#' ) ) . '#i'; $matchmask = preg_replace( '|^#http\\\://|', '#https?\://', $matchmask ); } $providers[] = array( 'format' => $matchmask, 'endpoint' => $providerurl, 'regex' => $regex ? '1' : '0', ); } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $providers ); } /** * Gets the matching provider for a given URL. * * ## OPTIONS * * <url> * : URL to retrieve provider for. * * [--discover] * : Whether to use oEmbed discovery or not. Defaults to true. * * [--limit-response-size=<size>] * : Limit the size of the resulting HTML when using discovery. Default 150 KB (the standard WordPress limit). Not compatible with 'no-discover'. * * [--link-type=<json|xml>] * : Whether to accept only a certain link type when using discovery. Defaults to any (json or xml), preferring json. Not compatible with 'no-discover'. * --- * options: * - json * - xml * --- * * ## EXAMPLES * * # Get the matching provider for the URL. * $ wp embed provider match https://www.youtube.com/watch?v=dQw4w9WgXcQ * https://www.youtube.com/oembed * * @subcommand match */ public function match_provider( $args, $assoc_args ) { $oembed = new oEmbed(); $url = $args[0]; $discover = \WP_CLI\Utils\get_flag_value( $assoc_args, 'discover', true ); $response_size_limit = \WP_CLI\Utils\get_flag_value( $assoc_args, 'limit-response-size' ); $link_type = \WP_CLI\Utils\get_flag_value( $assoc_args, 'link-type' ); if ( ! $discover && ( null !== $response_size_limit || null !== $link_type ) ) { if ( null !== $response_size_limit && null !== $link_type ) { $msg = "The 'limit-response-size' and 'link-type' options can only be used with discovery."; } elseif ( null !== $response_size_limit ) { $msg = "The 'limit-response-size' option can only be used with discovery."; } else { $msg = "The 'link-type' option can only be used with discovery."; } WP_CLI::error( $msg ); } if ( $response_size_limit ) { if ( Utils\wp_version_compare( '4.0', '<' ) ) { WP_CLI::warning( "The 'limit-response-size' option only works for WordPress 4.0 onwards." ); // Fall through anyway... } add_filter( 'oembed_remote_get_args', function ( $args ) use ( $response_size_limit ) { $args['limit_response_size'] = $response_size_limit; return $args; } ); } if ( $link_type ) { // Filter discovery response. add_filter( 'oembed_linktypes', function ( $linktypes ) use ( $link_type ) { foreach ( $linktypes as $mime_type => $linktype_format ) { if ( $link_type !== $linktype_format ) { unset( $linktypes[ $mime_type ] ); } } return $linktypes; } ); } $oembed_args = array( 'discover' => $discover, ); $provider = $oembed->get_provider( $url, $oembed_args ); if ( ! $provider ) { if ( ! $discover ) { WP_CLI::error( 'No oEmbed provider found for given URL. Maybe try discovery?' ); } else { WP_CLI::error( 'No oEmbed provider found for given URL.' ); } } WP_CLI::line( $provider ); } /** * Get Formatter object based on supplied parameters. * * @param array $assoc_args Parameters passed to command. Determines formatting. * @return \WP_CLI\Formatter */ protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->default_fields ); } } <?php namespace WP_CLI\Embeds; use WP_CLI; use WP_CLI\Formatter; use WP_CLI_Command; /** * Retrieves embed handlers. */ class Handler_Command extends WP_CLI_Command { protected $default_fields = array( 'id', 'regex', ); /** * Lists all available embed handlers. * * ## OPTIONS * * [--field=<field>] * : Display the value of a single field * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each handler: * * * id * * regex * * These fields are optionally available: * * * callback * * priority * * ## EXAMPLES * * # List id,regex,priority fields of available handlers. * $ wp embed handler list --fields=priority,id * +----------+-------------------+ * | priority | id | * +----------+-------------------+ * | 10 | youtube_embed_url | * | 9999 | audio | * | 9999 | video | * * @subcommand list */ public function list_handlers( $args, $assoc_args ) { /** @var \WP_Embed $wp_embed */ global $wp_embed; $all_handlers = array(); ksort( $wp_embed->handlers ); foreach ( $wp_embed->handlers as $priority => $handlers ) { foreach ( $handlers as $id => $handler ) { $all_handlers[] = array( 'id' => $id, 'regex' => $handler['regex'], 'callback' => $handler['callback'], 'priority' => $priority, ); } } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $all_handlers ); } /** * Get Formatter object based on supplied parameters. * * @param array $assoc_args Parameters passed to command. Determines formatting. * @return \WP_CLI\Formatter */ protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->default_fields ); } } <?php namespace WP_CLI\Embeds; if ( ! class_exists( '\WP_oEmbed' ) ) { require_once ABSPATH . WPINC . '/class-oembed.php'; } /** * Polyfill for older WP versions. */ class oEmbed extends \WP_oEmbed { /** * Takes a URL and returns the corresponding oEmbed provider's URL, if there is one. * * @since 4.0.0 * * @see WP_oEmbed::discover() * * @param string $url The URL to the content. * @param string|array $args Optional provider arguments. * @return false|string False on failure, otherwise the oEmbed provider URL. */ public function get_provider( $url, $args = '' ) { if ( method_exists( 'WP_oEmbed', 'get_provider' ) ) { return parent::get_provider( $url, $args ); } $args = wp_parse_args( $args ); $provider = false; if ( ! isset( $args['discover'] ) ) { $args['discover'] = true; } foreach ( $this->providers as $matchmask => $data ) { list( $providerurl, $regex ) = $data; // Turn the asterisk-type provider URLs into regex if ( ! $regex ) { $matchmask = '#' . str_replace( '___wildcard___', '(.+)', preg_quote( str_replace( '*', '___wildcard___', $matchmask ), '#' ) ) . '#i'; $matchmask = preg_replace( '|^#http\\\://|', '#https?\://', $matchmask ); } if ( preg_match( $matchmask, $url ) ) { $provider = str_replace( '{format}', 'json', $providerurl ); // JSON is easier to deal with than XML break; } } if ( ! $provider && $args['discover'] ) { $provider = $this->discover( $url ); } return $provider; } } <?php namespace WP_CLI\Embeds; use WP_CLI\Dispatcher\CommandNamespace; /** * Inspects oEmbed providers, clears embed cache, and more. * * @package wp-cli */ class Embeds_Namespace extends CommandNamespace { } <?php namespace WP_CLI\Embeds; use WP_CLI; use WP_CLI\Utils; use WP_CLI_Command; class Fetch_Command extends WP_CLI_Command { /** * Attempts to convert a URL into embed HTML. * * In non-raw mode, starts by checking the URL against the regex of the registered embed handlers. * If none of the regex matches and it's enabled, then the URL will be given to the WP_oEmbed class. * * In raw mode, checks the providers directly and returns the data. * * ## OPTIONS * * <url> * : URL to retrieve oEmbed data for. * * [--width=<width>] * : Width of the embed in pixels. * * [--height=<height>] * : Height of the embed in pixels. * * [--post-id=<id>] * : Cache oEmbed response for a given post. * * [--discover] * : Enable oEmbed discovery. Defaults to true. * * [--skip-cache] * : Ignore already cached oEmbed responses. Has no effect if using the 'raw' option, which doesn't use the cache. * * [--skip-sanitization] * : Remove the filter that WordPress from 4.4 onwards uses to sanitize oEmbed responses. Has no effect if using the 'raw' option, which by-passes sanitization. * * [--do-shortcode] * : If the URL is handled by a registered embed handler and returns a shortcode, do shortcode and return result. Has no effect if using the 'raw' option, which by-passes handlers. * * [--limit-response-size=<size>] * : Limit the size of the resulting HTML when using discovery. Default 150 KB (the standard WordPress limit). Not compatible with 'no-discover'. * * [--raw] * : Return the raw oEmbed response instead of the resulting HTML. Ignores the cache and does not sanitize responses or use registered embed handlers. * * [--raw-format=<json|xml>] * : Render raw oEmbed data in a particular format. Defaults to json. Can only be specified in conjunction with the 'raw' option. * --- * options: * - json * - xml * --- * * ## EXAMPLES * * # Get embed HTML for a given URL. * $ wp embed fetch https://www.youtube.com/watch?v=dQw4w9WgXcQ * <iframe width="525" height="295" src="https://www.youtube.com/embed/dQw4w9WgXcQ?feature=oembed" ... * * # Get raw oEmbed data for a given URL. * $ wp embed fetch https://www.youtube.com/watch?v=dQw4w9WgXcQ --raw * {"author_url":"https:\/\/www.youtube.com\/user\/RickAstleyVEVO","width":525,"version":"1.0", ... */ public function __invoke( $args, $assoc_args ) { /** @var \WP_Embed $wp_embed */ global $wp_embed; $url = $args[0]; $raw = Utils\get_flag_value( $assoc_args, 'raw' ); $raw_format = Utils\get_flag_value( $assoc_args, 'raw-format' ); $post_id = Utils\get_flag_value( $assoc_args, 'post-id' ); $discover = Utils\get_flag_value( $assoc_args, 'discover' ); $response_size_limit = Utils\get_flag_value( $assoc_args, 'limit-response-size' ); $width = Utils\get_flag_value( $assoc_args, 'width' ); $height = Utils\get_flag_value( $assoc_args, 'height' ); // The `$key_suffix` used for caching is part based on serializing the attributes array without normalizing it first so need to try to replicate that. $oembed_args = array(); if ( null !== $width ) { $oembed_args['width'] = $width; // Keep as string as if from a shortcode attribute. } if ( null !== $height ) { $oembed_args['height'] = $height; // Keep as string as if from a shortcode attribute. } if ( null !== $discover ) { $oembed_args['discover'] = $discover ? '1' : '0'; // Make it a string as if from a shortcode attribute. } $discover = null === $discover ? true : (bool) $discover; // Will use to set `$oembed_args['discover']` when not calling `WP_Embed::shortcode()`. if ( ! $discover && null !== $response_size_limit ) { WP_CLI::error( "The 'limit-response-size' option can only be used with discovery." ); } if ( ! $raw && null !== $raw_format ) { WP_CLI::error( "The 'raw-format' option can only be used with the 'raw' option." ); } if ( $response_size_limit ) { if ( Utils\wp_version_compare( '4.0', '<' ) ) { WP_CLI::warning( "The 'limit-response-size' option only works for WordPress 4.0 onwards." ); // Fall through anyway... } add_filter( 'oembed_remote_get_args', function ( $args ) use ( $response_size_limit ) { $args['limit_response_size'] = $response_size_limit; return $args; }, PHP_INT_MAX ); } // If raw, query providers directly, by-passing cache. if ( $raw ) { $oembed = new oEmbed(); // Needs to be here to make sure `_wp_oembed_get_object()` defined (in "wp-includes/class-oembed.php" for WP < 4.7). $oembed_args['discover'] = $discover; // Make 'oembed_dataparse' filter a no-op so get raw unsanitized data. remove_all_filters( 'oembed_dataparse' ); // Save a few cycles. add_filter( 'oembed_dataparse', function ( $return, $data, $url ) { return $data; }, PHP_INT_MAX, 3 ); // Allow `wp_filter_pre_oembed_result()` to provide local URLs (WP >= 4.5.3). // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Using WP Core hook. $data = apply_filters( 'pre_oembed_result', null, $url, $oembed_args ); if ( null === $data ) { $provider = $oembed->get_provider( $url, $oembed_args ); if ( ! $provider ) { if ( ! $discover ) { WP_CLI::error( 'No oEmbed provider found for given URL. Maybe try discovery?' ); } else { WP_CLI::error( 'No oEmbed provider found for given URL.' ); } } $data = $oembed->fetch( $provider, $url, $oembed_args ); } if ( false === $data ) { WP_CLI::error( 'There was an error fetching the oEmbed data.' ); } if ( 'xml' === $raw_format ) { if ( ! class_exists( 'SimpleXMLElement' ) ) { WP_CLI::error( "The PHP extension 'SimpleXMLElement' is not available but is required for XML-formatted output." ); } WP_CLI::log( $this->oembed_create_xml( (array) $data ) ); } else { WP_CLI::log( json_encode( $data ) ); } return; } if ( $post_id ) { // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- the request is asking for a post id directly so need to override the global. $GLOBALS['post'] = get_post( $post_id ); if ( null === $GLOBALS['post'] ) { WP_CLI::warning( sprintf( "Post id '%s' not found.", $post_id ) ); } } if ( Utils\get_flag_value( $assoc_args, 'skip-sanitization' ) ) { remove_filter( 'oembed_dataparse', 'wp_filter_oembed_result', 10, 3 ); } if ( Utils\get_flag_value( $assoc_args, 'skip-cache' ) ) { $wp_embed->usecache = false; // In order to skip caching, also need `$cached_recently` to be false in `WP_Embed::shortcode()`, so set TTL to zero. add_filter( 'oembed_ttl', '__return_zero', PHP_INT_MAX ); } else { $wp_embed->usecache = true; } // `WP_Embed::shortcode()` sets the 'discover' attribute based on 'embed_oembed_discover' filter, no matter what's passed to it. add_filter( 'embed_oembed_discover', $discover ? '__return_true' : '__return_false', PHP_INT_MAX ); // For WP < 4.9, `WP_Embed::shortcode()` won't check providers if no post_id supplied, so set `maybe_make_link()` to return false so can check and do it ourselves. // Also set if WP < 4.4 and don't have 'unfiltered_html' privileges on post. $check_providers = Utils\wp_version_compare( '4.9', '<' ) && ( ! $post_id || ( Utils\wp_version_compare( '4.4', '<' ) && ! author_can( $post_id, 'unfiltered_html' ) ) ); if ( $check_providers ) { add_filter( 'embed_maybe_make_link', '__return_false', PHP_INT_MAX ); } $html = $wp_embed->shortcode( $oembed_args, $url ); if ( false === $html && $check_providers ) { // Check providers. $oembed_args['discover'] = $discover; $html = wp_oembed_get( $url, $oembed_args ); // `wp_oembed_get()` returns zero-length string instead of false on failure due to `_strip_newlines()` 'oembed_dataparse' filter so make sure false. if ( '' === $html ) { $html = false; } } if ( false !== $html && '[' === substr( $html, 0, 1 ) && Utils\get_flag_value( $assoc_args, 'do-shortcode' ) ) { $html = do_shortcode( $html, true ); } if ( false === $html ) { WP_CLI::error( 'There was an error fetching the oEmbed data.' ); } WP_CLI::log( $html ); } /** * Creates an XML string from a given array. * * Same as `\_oembed_create_xml()` in "wp-includes\embed.php" introduced in WP 4.4.0. Polyfilled as marked private (and also to cater for older WP versions). * * @see _oembed_create_xml() * * @param array $data The original oEmbed response data. * @param \SimpleXMLElement $node Optional. XML node to append the result to recursively. * @return string|false XML string on success, false on error. */ protected function oembed_create_xml( $data, $node = null ) { if ( ! is_array( $data ) || empty( $data ) ) { return false; } if ( null === $node ) { $node = new \SimpleXMLElement( '<oembed></oembed>' ); } foreach ( $data as $key => $value ) { if ( is_numeric( $key ) ) { $key = 'oembed'; } if ( is_array( $value ) ) { $item = $node->addChild( $key ); $this->oembed_create_xml( $value, $item ); } else { $node->addChild( $key, esc_html( $value ) ); } } return $node->asXML(); } } <?php namespace WP_CLI\Embeds; use WP_CLI; use WP_CLI\Process; use WP_CLI\Utils; use WP_CLI\Formatter; use WP_CLI_Command; /** * Finds, triggers, and deletes oEmbed caches. */ class Cache_Command extends WP_CLI_Command { /** * Deletes all oEmbed caches for a given post. * * oEmbed caches for a post are stored in the post's metadata. * * ## OPTIONS * * <post_id> * : ID of the post to clear the cache for. * * ## EXAMPLES * * # Clear cache for a post * $ wp embed cache clear 123 * Success: Cleared oEmbed cache. */ public function clear( $args, $assoc_args ) { /** @var \WP_Embed $wp_embed */ global $wp_embed; $post_id = $args[0]; $post_metas = get_post_custom_keys( $post_id ); if ( $post_metas ) { $post_metas = array_filter( $post_metas, function ( $v ) { return '_oembed_' === substr( $v, 0, 8 ); } ); } if ( empty( $post_metas ) ) { WP_CLI::error( 'No cache to clear!' ); } $wp_embed->delete_oembed_caches( $post_id ); WP_CLI::success( 'Cleared oEmbed cache.' ); } /** * Finds an oEmbed cache post ID for a given URL. * * Starting with WordPress 4.9, embeds that aren't associated with a specific post will be cached in * a new oembed_cache post type. There can be more than one such entry for a url depending on attributes and context. * * Not to be confused with oEmbed caches for a given post which are stored in the post's metadata. * * ## OPTIONS * * <url> * : URL to retrieve oEmbed data for. * * [--width=<width>] * : Width of the embed in pixels. Part of cache key so must match. Defaults to `content_width` if set else 500px, so is theme and context dependent. * * [--height=<height>] * : Height of the embed in pixels. Part of cache key so must match. Defaults to 1.5 * default width (`content_width` or 500px), to a maximum of 1000px. * * [--discover] * : Whether to search with the discover attribute set or not. Part of cache key so must match. If not given, will search with attribute: unset, '1', '0', returning first. * * ## EXAMPLES * * # Find cache post ID for a given URL. * $ wp embed cache find https://www.youtube.com/watch?v=dQw4w9WgXcQ --width=500 * 123 */ public function find( $args, $assoc_args ) { if ( Utils\wp_version_compare( '4.9', '<' ) ) { WP_CLI::error( 'Requires WordPress 4.9 or greater.' ); } /** @var \WP_Embed $wp_embed */ global $wp_embed; $url = $args[0]; $width = Utils\get_flag_value( $assoc_args, 'width' ); $height = Utils\get_flag_value( $assoc_args, 'height' ); $discover = Utils\get_flag_value( $assoc_args, 'discover' ); // The `$key_suffix` used for caching is part based on serializing the attributes array without normalizing it first so need to try to replicate that. $oembed_args = array(); if ( null !== $width ) { $oembed_args['width'] = $width; // Keep as string as if from a shortcode attribute. } if ( null !== $height ) { $oembed_args['height'] = $height; // Keep as string as if from a shortcode attribute. } if ( null !== $discover ) { $discovers = array( ( $discover ) ? '1' : '0' ); } else { $discovers = array( null, '1', '0' ); } $attr = wp_parse_args( $oembed_args, wp_embed_defaults( $url ) ); foreach ( $discovers as $discover ) { if ( null !== $discover ) { $attr['discover'] = $discover; } // phpcs:ignore WordPress.PHP.DiscouragedPHPFunctions.serialize_serialize -- needed to mimic WP Core behavior. See: \WP_Embed::shortcode. $key_suffix = md5( $url . serialize( $attr ) ); $cached_post_id = $wp_embed->find_oembed_post_id( $key_suffix ); if ( $cached_post_id ) { WP_CLI::line( $cached_post_id ); return; } } WP_CLI::error( 'No cache post ID found!' ); } /** * Triggers the caching of all oEmbed results for a given post. * * oEmbed caches for a post are stored in the post's metadata. * * ## OPTIONS * * <post_id> * : ID of the post to do the caching for. * * ## EXAMPLES * * # Triggers cache for a post * $ wp embed cache trigger 456 * Success: Caching triggered! */ public function trigger( $args, $assoc_args ) { /** @var \WP_Embed $wp_embed */ global $wp_embed; $post_id = $args[0]; $post = get_post( $post_id ); $post_types = get_post_types( array( 'show_ui' => true ) ); if ( empty( $post->ID ) ) { WP_CLI::warning( sprintf( "Post id '%s' not found.", $post_id ) ); return; } /** This filter is documented in wp-includes/class-wp-embed.php */ // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Using WP Core hook. if ( ! in_array( $post->post_type, apply_filters( 'embed_cache_oembed_types', $post_types ), true ) ) { WP_CLI::warning( sprintf( "Cannot cache oEmbed results for '%s' post type", $post->post_type ) ); return; } $wp_embed->cache_oembed( $post_id ); WP_CLI::success( 'Caching triggered!' ); } } <?php /** * Spyc -- A Simple PHP YAML Class * @version 0.6.2 * @author Vlad Andersen <vlad.andersen@gmail.com> * @author Chris Wanstrath <chris@ozmm.org> * @link https://github.com/mustangostang/spyc/ * @copyright Copyright 2005-2006 Chris Wanstrath, 2006-2011 Vlad Andersen * @license http://www.opensource.org/licenses/mit-license.php MIT License * @package Spyc */ if (!function_exists('spyc_load')) { /** * Parses YAML to array. * @param string $string YAML string. * @return array */ function spyc_load ($string) { return Spyc::YAMLLoadString($string); } } if (!function_exists('spyc_load_file')) { /** * Parses YAML to array. * @param string $file Path to YAML file. * @return array */ function spyc_load_file ($file) { return Spyc::YAMLLoad($file); } } if (!function_exists('spyc_dump')) { /** * Dumps array to YAML. * @param array $data Array. * @return string */ function spyc_dump ($data) { return Spyc::YAMLDump($data, false, false, true); } } <?php /** * Spyc -- A Simple PHP YAML Class * @version 0.6.2 * @author Vlad Andersen <vlad.andersen@gmail.com> * @author Chris Wanstrath <chris@ozmm.org> * @link https://github.com/mustangostang/spyc/ * @copyright Copyright 2005-2006 Chris Wanstrath, 2006-2011 Vlad Andersen * @license http://www.opensource.org/licenses/mit-license.php MIT License * @package Spyc */ if (!class_exists('Mustangostang\Spyc')) { require_once dirname(__FILE__) . '/src/Spyc.php'; } class_alias('Mustangostang\Spyc', 'Spyc'); require_once dirname(__FILE__) . '/includes/functions.php'; // Enable use of Spyc from command line // The syntax is the following: php Spyc.php spyc.yaml do { if (PHP_SAPI != 'cli') break; if (empty ($_SERVER['argc']) || $_SERVER['argc'] < 2) break; if (empty ($_SERVER['PHP_SELF']) || FALSE === strpos ($_SERVER['PHP_SELF'], 'Spyc.php') ) break; $file = $argv[1]; echo json_encode (spyc_load_file ($file)); } while (0); <?php php5to4 ("../spyc.php", 'spyc-latest.php4'); function php5to4 ($src, $dest) { $code = file_get_contents ($src); $code = preg_replace ('#(public|private|protected)\s+\$#i', 'var \$', $code); $code = preg_replace ('#(public|private|protected)\s+static\s+\$#i', 'var \$', $code); $code = preg_replace ('#(public|private|protected)\s+function#i', 'function', $code); $code = preg_replace ('#(public|private|protected)\s+static\s+function#i', 'function', $code); $code = preg_replace ('#throw new Exception\\(([^)]*)\\)#i', 'trigger_error($1,E_USER_ERROR)', $code); $code = str_replace ('self::', '$this->', $code); $f = fopen ($dest, 'w'); fwrite($f, $code); fclose ($f); print "Written to $dest.\n"; }<?php /** * Spyc -- A Simple PHP YAML Class * @version 0.4.5 * @author Vlad Andersen <vlad.andersen@gmail.com> * @author Chris Wanstrath <chris@ozmm.org> * @link http://code.google.com/p/spyc/ * @copyright Copyright 2005-2006 Chris Wanstrath, 2006-2009 Vlad Andersen * @license http://www.opensource.org/licenses/mit-license.php MIT License * @package Spyc */ if (!function_exists('spyc_load')) { /** * Parses YAML to array. * @param string $string YAML string. * @return array */ function spyc_load ($string) { return Spyc::YAMLLoadString($string); } } if (!function_exists('spyc_load_file')) { /** * Parses YAML to array. * @param string $file Path to YAML file. * @return array */ function spyc_load_file ($file) { return Spyc::YAMLLoad($file); } } /** * The Simple PHP YAML Class. * * This class can be used to read a YAML file and convert its contents * into a PHP array. It currently supports a very limited subsection of * the YAML spec. * * Usage: * <code> * $Spyc = new Spyc; * $array = $Spyc->load($file); * </code> * or: * <code> * $array = Spyc::YAMLLoad($file); * </code> * or: * <code> * $array = spyc_load_file($file); * </code> * @package Spyc */ class Spyc { // SETTINGS /** * Setting this to true will force YAMLDump to enclose any string value in * quotes. False by default. * * @var bool */ var $setting_dump_force_quotes = false; /** * Setting this to true will forse YAMLLoad to use syck_load function when * possible. False by default. * @var bool */ var $setting_use_syck_is_possible = false; /**#@+ * @access private * @var mixed */ var $_dumpIndent; var $_dumpWordWrap; var $_containsGroupAnchor = false; var $_containsGroupAlias = false; var $path; var $result; var $LiteralPlaceHolder = '___YAML_Literal_Block___'; var $SavedGroups = array(); var $indent; /** * Path modifier that should be applied after adding current element. * @var array */ var $delayedPath = array(); /**#@+ * @access public * @var mixed */ var $_nodeId; /** * Load a valid YAML string to Spyc. * @param string $input * @return array */ function load ($input) { return $this->__loadString($input); } /** * Load a valid YAML file to Spyc. * @param string $file * @return array */ function loadFile ($file) { return $this->__load($file); } /** * Load YAML into a PHP array statically * * The load method, when supplied with a YAML stream (string or file), * will do its best to convert YAML in a file into a PHP array. Pretty * simple. * Usage: * <code> * $array = Spyc::YAMLLoad('lucky.yaml'); * print_r($array); * </code> * @access public * @return array * @param string $input Path of YAML file or string containing YAML */ function YAMLLoad($input) { $Spyc = new Spyc; return $Spyc->__load($input); } /** * Load a string of YAML into a PHP array statically * * The load method, when supplied with a YAML string, will do its best * to convert YAML in a string into a PHP array. Pretty simple. * * Note: use this function if you don't want files from the file system * loaded and processed as YAML. This is of interest to people concerned * about security whose input is from a string. * * Usage: * <code> * $array = Spyc::YAMLLoadString("---\n0: hello world\n"); * print_r($array); * </code> * @access public * @return array * @param string $input String containing YAML */ function YAMLLoadString($input) { $Spyc = new Spyc; return $Spyc->__loadString($input); } /** * Dump YAML from PHP array statically * * The dump method, when supplied with an array, will do its best * to convert the array into friendly YAML. Pretty simple. Feel free to * save the returned string as nothing.yaml and pass it around. * * Oh, and you can decide how big the indent is and what the wordwrap * for folding is. Pretty cool -- just pass in 'false' for either if * you want to use the default. * * Indent's default is 2 spaces, wordwrap's default is 40 characters. And * you can turn off wordwrap by passing in 0. * * @access public * @return string * @param array $array PHP array * @param int $indent Pass in false to use the default, which is 2 * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) */ function YAMLDump($array,$indent = false,$wordwrap = false) { $spyc = new Spyc; return $spyc->dump($array,$indent,$wordwrap); } /** * Dump PHP array to YAML * * The dump method, when supplied with an array, will do its best * to convert the array into friendly YAML. Pretty simple. Feel free to * save the returned string as tasteful.yaml and pass it around. * * Oh, and you can decide how big the indent is and what the wordwrap * for folding is. Pretty cool -- just pass in 'false' for either if * you want to use the default. * * Indent's default is 2 spaces, wordwrap's default is 40 characters. And * you can turn off wordwrap by passing in 0. * * @access public * @return string * @param array $array PHP array * @param int $indent Pass in false to use the default, which is 2 * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) */ function dump($array,$indent = false,$wordwrap = false) { // Dumps to some very clean YAML. We'll have to add some more features // and options soon. And better support for folding. // New features and options. if ($indent === false or !is_numeric($indent)) { $this->_dumpIndent = 2; } else { $this->_dumpIndent = $indent; } if ($wordwrap === false or !is_numeric($wordwrap)) { $this->_dumpWordWrap = 40; } else { $this->_dumpWordWrap = $wordwrap; } // New YAML document $string = "---\n"; // Start at the base of the array and move through it. if ($array) { $array = (array)$array; $first_key = key($array); $previous_key = -1; foreach ($array as $key => $value) { $string .= $this->_yamlize($key,$value,0,$previous_key, $first_key); $previous_key = $key; } } return $string; } /** * Attempts to convert a key / value array item to YAML * @access private * @return string * @param $key The name of the key * @param $value The value of the item * @param $indent The indent of the current node */ function _yamlize($key,$value,$indent, $previous_key = -1, $first_key = 0) { if (is_array($value)) { if (empty ($value)) return $this->_dumpNode($key, array(), $indent, $previous_key, $first_key); // It has children. What to do? // Make it the right kind of item $string = $this->_dumpNode($key, NULL, $indent, $previous_key, $first_key); // Add the indent $indent += $this->_dumpIndent; // Yamlize the array $string .= $this->_yamlizeArray($value,$indent); } elseif (!is_array($value)) { // It doesn't have children. Yip. $string = $this->_dumpNode($key, $value, $indent, $previous_key, $first_key); } return $string; } /** * Attempts to convert an array to YAML * @access private * @return string * @param $array The array you want to convert * @param $indent The indent of the current level */ function _yamlizeArray($array,$indent) { if (is_array($array)) { $string = ''; $previous_key = -1; $first_key = key($array); foreach ($array as $key => $value) { $string .= $this->_yamlize($key, $value, $indent, $previous_key, $first_key); $previous_key = $key; } return $string; } else { return false; } } /** * Returns YAML from a key and a value * @access private * @return string * @param $key The name of the key * @param $value The value of the item * @param $indent The indent of the current node */ function _dumpNode($key, $value, $indent, $previous_key = -1, $first_key = 0) { // do some folding here, for blocks if (is_string ($value) && ((strpos($value,"\n") !== false || strpos($value,": ") !== false || strpos($value,"- ") !== false || strpos($value,"*") !== false || strpos($value,"#") !== false || strpos($value,"<") !== false || strpos($value,">") !== false || strpos($value,"[") !== false || strpos($value,"]") !== false || strpos($value,"{") !== false || strpos($value,"}") !== false) || substr ($value, -1, 1) == ':')) { $value = $this->_doLiteralBlock($value,$indent); } else { $value = $this->_doFolding($value,$indent); if (is_bool($value)) { $value = ($value) ? "true" : "false"; } } if ($value === array()) $value = '[ ]'; $spaces = str_repeat(' ',$indent); if (is_int($key) && $key - 1 == $previous_key && $first_key===0) { // It's a sequence $string = $spaces.'- '.$value."\n"; } else { if ($first_key===0) throw new Exception('Keys are all screwy. The first one was zero, now it\'s "'. $key .'"'); // It's mapped if (strpos($key, ":") !== false) { $key = '"' . $key . '"'; } $string = $spaces.$key.': '.$value."\n"; } return $string; } /** * Creates a literal block for dumping * @access private * @return string * @param $value * @param $indent int The value of the indent */ function _doLiteralBlock($value,$indent) { if (strpos($value, "\n") === false && strpos($value, "'") === false) { return sprintf ("'%s'", $value); } if (strpos($value, "\n") === false && strpos($value, '"') === false) { return sprintf ('"%s"', $value); } $exploded = explode("\n",$value); $newValue = '|'; $indent += $this->_dumpIndent; $spaces = str_repeat(' ',$indent); foreach ($exploded as $line) { $newValue .= "\n" . $spaces . trim($line); } return $newValue; } /** * Folds a string of text, if necessary * @access private * @return string * @param $value The string you wish to fold */ function _doFolding($value,$indent) { // Don't do anything if wordwrap is set to 0 if ($this->_dumpWordWrap !== 0 && is_string ($value) && strlen($value) > $this->_dumpWordWrap) { $indent += $this->_dumpIndent; $indent = str_repeat(' ',$indent); $wrapped = wordwrap($value,$this->_dumpWordWrap,"\n$indent"); $value = ">\n".$indent.$wrapped; } else { if ($this->setting_dump_force_quotes && is_string ($value)) $value = '"' . $value . '"'; } return $value; } // LOADING FUNCTIONS function __load($input) { $Source = $this->loadFromSource($input); return $this->loadWithSource($Source); } function __loadString($input) { $Source = $this->loadFromString($input); return $this->loadWithSource($Source); } function loadWithSource($Source) { if (empty ($Source)) return array(); if ($this->setting_use_syck_is_possible && function_exists ('syck_load')) { $array = syck_load (implode ('', $Source)); return is_array($array) ? $array : array(); } $this->path = array(); $this->result = array(); $cnt = count($Source); for ($i = 0; $i < $cnt; $i++) { $line = $Source[$i]; $this->indent = strlen($line) - strlen(ltrim($line)); $tempPath = $this->getParentPathByIndent($this->indent); $line = $this->stripIndent($line, $this->indent); if ($this->isComment($line)) continue; if ($this->isEmpty($line)) continue; $this->path = $tempPath; $literalBlockStyle = $this->startsLiteralBlock($line); if ($literalBlockStyle) { $line = rtrim ($line, $literalBlockStyle . " \n"); $literalBlock = ''; $line .= $this->LiteralPlaceHolder; while (++$i < $cnt && $this->literalBlockContinues($Source[$i], $this->indent)) { $literalBlock = $this->addLiteralLine($literalBlock, $Source[$i], $literalBlockStyle); } $i--; } while (++$i < $cnt && $this->greedilyNeedNextLine($line)) { $line = rtrim ($line, " \n\t\r") . ' ' . ltrim ($Source[$i], " \t"); } $i--; if (strpos ($line, '#')) { if (strpos ($line, '"') === false && strpos ($line, "'") === false) $line = preg_replace('/\s+#(.+)$/','',$line); } $lineArray = $this->_parseLine($line); if ($literalBlockStyle) $lineArray = $this->revertLiteralPlaceHolder ($lineArray, $literalBlock); $this->addArray($lineArray, $this->indent); foreach ($this->delayedPath as $indent => $delayedPath) $this->path[$indent] = $delayedPath; $this->delayedPath = array(); } return $this->result; } function loadFromSource ($input) { if (!empty($input) && strpos($input, "\n") === false && file_exists($input)) return file($input); return $this->loadFromString($input); } function loadFromString ($input) { $lines = explode("\n",$input); foreach ($lines as $k => $_) { $lines[$k] = rtrim ($_, "\r"); } return $lines; } /** * Parses YAML code and returns an array for a node * @access private * @return array * @param string $line A line from the YAML file */ function _parseLine($line) { if (!$line) return array(); $line = trim($line); if (!$line) return array(); $array = array(); $group = $this->nodeContainsGroup($line); if ($group) { $this->addGroup($line, $group); $line = $this->stripGroup ($line, $group); } if ($this->startsMappedSequence($line)) return $this->returnMappedSequence($line); if ($this->startsMappedValue($line)) return $this->returnMappedValue($line); if ($this->isArrayElement($line)) return $this->returnArrayElement($line); if ($this->isPlainArray($line)) return $this->returnPlainArray($line); return $this->returnKeyValuePair($line); } /** * Finds the type of the passed value, returns the value as the new type. * @access private * @param string $value * @return mixed */ function _toType($value) { if ($value === '') return null; $first_character = $value[0]; $last_character = substr($value, -1, 1); $is_quoted = false; do { if (!$value) break; if ($first_character != '"' && $first_character != "'") break; if ($last_character != '"' && $last_character != "'") break; $is_quoted = true; } while (0); if ($is_quoted) return strtr(substr ($value, 1, -1), array ('\\"' => '"', '\'\'' => '\'', '\\\'' => '\'')); if (strpos($value, ' #') !== false) $value = preg_replace('/\s+#(.+)$/','',$value); if ($first_character == '[' && $last_character == ']') { // Take out strings sequences and mappings $innerValue = trim(substr ($value, 1, -1)); if ($innerValue === '') return array(); $explode = $this->_inlineEscape($innerValue); // Propagate value array $value = array(); foreach ($explode as $v) { $value[] = $this->_toType($v); } return $value; } if (strpos($value,': ')!==false && $first_character != '{') { $array = explode(': ',$value); $key = trim($array[0]); array_shift($array); $value = trim(implode(': ',$array)); $value = $this->_toType($value); return array($key => $value); } if ($first_character == '{' && $last_character == '}') { $innerValue = trim(substr ($value, 1, -1)); if ($innerValue === '') return array(); // Inline Mapping // Take out strings sequences and mappings $explode = $this->_inlineEscape($innerValue); // Propagate value array $array = array(); foreach ($explode as $v) { $SubArr = $this->_toType($v); if (empty($SubArr)) continue; if (is_array ($SubArr)) { $array[key($SubArr)] = $SubArr[key($SubArr)]; continue; } $array[] = $SubArr; } return $array; } if ($value == 'null' || $value == 'NULL' || $value == 'Null' || $value == '' || $value == '~') { return null; } if (intval($first_character) > 0 && preg_match ('/^[1-9]+[0-9]*$/', $value)) { $intvalue = (int)$value; if ($intvalue != PHP_INT_MAX) $value = $intvalue; return $value; } if (in_array($value, array('true', 'on', '+', 'yes', 'y', 'True', 'TRUE', 'On', 'ON', 'YES', 'Yes', 'Y'))) { return true; } if (in_array(strtolower($value), array('false', 'off', '-', 'no', 'n'))) { return false; } if (is_numeric($value)) { if ($value === '0') return 0; if (trim ($value, 0) === $value) $value = (float)$value; return $value; } return $value; } /** * Used in inlines to check for more inlines or quoted strings * @access private * @return array */ function _inlineEscape($inline) { // There's gotta be a cleaner way to do this... // While pure sequences seem to be nesting just fine, // pure mappings and mappings with sequences inside can't go very // deep. This needs to be fixed. $seqs = array(); $maps = array(); $saved_strings = array(); // Check for strings $regex = '/(?:(")|(?:\'))((?(1)[^"]+|[^\']+))(?(1)"|\')/'; if (preg_match_all($regex,$inline,$strings)) { $saved_strings = $strings[0]; $inline = preg_replace($regex,'YAMLString',$inline); } unset($regex); $i = 0; do { // Check for sequences while (preg_match('/\[([^{}\[\]]+)\]/U',$inline,$matchseqs)) { $seqs[] = $matchseqs[0]; $inline = preg_replace('/\[([^{}\[\]]+)\]/U', ('YAMLSeq' . (count($seqs) - 1) . 's'), $inline, 1); } // Check for mappings while (preg_match('/{([^\[\]{}]+)}/U',$inline,$matchmaps)) { $maps[] = $matchmaps[0]; $inline = preg_replace('/{([^\[\]{}]+)}/U', ('YAMLMap' . (count($maps) - 1) . 's'), $inline, 1); } if ($i++ >= 10) break; } while (strpos ($inline, '[') !== false || strpos ($inline, '{') !== false); $explode = explode(', ',$inline); $stringi = 0; $i = 0; while (1) { // Re-add the sequences if (!empty($seqs)) { foreach ($explode as $key => $value) { if (strpos($value,'YAMLSeq') !== false) { foreach ($seqs as $seqk => $seq) { $explode[$key] = str_replace(('YAMLSeq'.$seqk.'s'),$seq,$value); $value = $explode[$key]; } } } } // Re-add the mappings if (!empty($maps)) { foreach ($explode as $key => $value) { if (strpos($value,'YAMLMap') !== false) { foreach ($maps as $mapk => $map) { $explode[$key] = str_replace(('YAMLMap'.$mapk.'s'), $map, $value); $value = $explode[$key]; } } } } // Re-add the strings if (!empty($saved_strings)) { foreach ($explode as $key => $value) { while (strpos($value,'YAMLString') !== false) { $explode[$key] = preg_replace('/YAMLString/',$saved_strings[$stringi],$value, 1); unset($saved_strings[$stringi]); ++$stringi; $value = $explode[$key]; } } } $finished = true; foreach ($explode as $key => $value) { if (strpos($value,'YAMLSeq') !== false) { $finished = false; break; } if (strpos($value,'YAMLMap') !== false) { $finished = false; break; } if (strpos($value,'YAMLString') !== false) { $finished = false; break; } } if ($finished) break; $i++; if ($i > 10) break; // Prevent infinite loops. } return $explode; } function literalBlockContinues ($line, $lineIndent) { if (!trim($line)) return true; if (strlen($line) - strlen(ltrim($line)) > $lineIndent) return true; return false; } function referenceContentsByAlias ($alias) { do { if (!isset($this->SavedGroups[$alias])) { echo "Bad group name: $alias."; break; } $groupPath = $this->SavedGroups[$alias]; $value = $this->result; foreach ($groupPath as $k) { $value = $value[$k]; } } while (false); return $value; } function addArrayInline ($array, $indent) { $CommonGroupPath = $this->path; if (empty ($array)) return false; foreach ($array as $k => $_) { $this->addArray(array($k => $_), $indent); $this->path = $CommonGroupPath; } return true; } function addArray ($incoming_data, $incoming_indent) { // print_r ($incoming_data); if (count ($incoming_data) > 1) return $this->addArrayInline ($incoming_data, $incoming_indent); $key = key ($incoming_data); $value = isset($incoming_data[$key]) ? $incoming_data[$key] : null; if ($key === '__!YAMLZero') $key = '0'; if ($incoming_indent == 0 && !$this->_containsGroupAlias && !$this->_containsGroupAnchor) { // Shortcut for root-level values. if ($key || $key === '' || $key === '0') { $this->result[$key] = $value; } else { $this->result[] = $value; end ($this->result); $key = key ($this->result); } $this->path[$incoming_indent] = $key; return; } $history = array(); // Unfolding inner array tree. $history[] = $_arr = $this->result; foreach ($this->path as $k) { $history[] = $_arr = $_arr[$k]; } if ($this->_containsGroupAlias) { $value = $this->referenceContentsByAlias($this->_containsGroupAlias); $this->_containsGroupAlias = false; } // Adding string or numeric key to the innermost level or $this->arr. if (is_string($key) && $key == '<<') { if (!is_array ($_arr)) { $_arr = array (); } $_arr = array_merge ($_arr, $value); } else if ($key || $key === '' || $key === '0') { $_arr[$key] = $value; } else { if (!is_array ($_arr)) { $_arr = array ($value); $key = 0; } else { $_arr[] = $value; end ($_arr); $key = key ($_arr); } } $reverse_path = array_reverse($this->path); $reverse_history = array_reverse ($history); $reverse_history[0] = $_arr; $cnt = count($reverse_history) - 1; for ($i = 0; $i < $cnt; $i++) { $reverse_history[$i+1][$reverse_path[$i]] = $reverse_history[$i]; } $this->result = $reverse_history[$cnt]; $this->path[$incoming_indent] = $key; if ($this->_containsGroupAnchor) { $this->SavedGroups[$this->_containsGroupAnchor] = $this->path; if (is_array ($value)) { $k = key ($value); if (!is_int ($k)) { $this->SavedGroups[$this->_containsGroupAnchor][$incoming_indent + 2] = $k; } } $this->_containsGroupAnchor = false; } } function startsLiteralBlock ($line) { $lastChar = substr (trim($line), -1); if ($lastChar != '>' && $lastChar != '|') return false; if ($lastChar == '|') return $lastChar; // HTML tags should not be counted as literal blocks. if (preg_match ('#<.*?>$#', $line)) return false; return $lastChar; } function greedilyNeedNextLine($line) { $line = trim ($line); if (!strlen($line)) return false; if (substr ($line, -1, 1) == ']') return false; if ($line[0] == '[') return true; if (preg_match ('#^[^:]+?:\s*\[#', $line)) return true; return false; } function addLiteralLine ($literalBlock, $line, $literalBlockStyle) { $line = $this->stripIndent($line); $line = rtrim ($line, "\r\n\t ") . "\n"; if ($literalBlockStyle == '|') { return $literalBlock . $line; } if (strlen($line) == 0) return rtrim($literalBlock, ' ') . "\n"; if ($line == "\n" && $literalBlockStyle == '>') { return rtrim ($literalBlock, " \t") . "\n"; } if ($line != "\n") $line = trim ($line, "\r\n ") . " "; return $literalBlock . $line; } function revertLiteralPlaceHolder ($lineArray, $literalBlock) { foreach ($lineArray as $k => $_) { if (is_array($_)) $lineArray[$k] = $this->revertLiteralPlaceHolder ($_, $literalBlock); else if (substr($_, -1 * strlen ($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder) $lineArray[$k] = rtrim ($literalBlock, " \r\n"); } return $lineArray; } function stripIndent ($line, $indent = -1) { if ($indent == -1) $indent = strlen($line) - strlen(ltrim($line)); return substr ($line, $indent); } function getParentPathByIndent ($indent) { if ($indent == 0) return array(); $linePath = $this->path; do { end($linePath); $lastIndentInParentPath = key($linePath); if ($indent <= $lastIndentInParentPath) array_pop ($linePath); } while ($indent <= $lastIndentInParentPath); return $linePath; } function clearBiggerPathValues ($indent) { if ($indent == 0) $this->path = array(); if (empty ($this->path)) return true; foreach ($this->path as $k => $_) { if ($k > $indent) unset ($this->path[$k]); } return true; } function isComment ($line) { if (!$line) return false; if ($line[0] == '#') return true; if (trim($line, " \r\n\t") == '---') return true; return false; } function isEmpty ($line) { return (trim ($line) === ''); } function isArrayElement ($line) { if (!$line) return false; if ($line[0] != '-') return false; if (strlen ($line) > 3) if (substr($line,0,3) == '---') return false; return true; } function isHashElement ($line) { return strpos($line, ':'); } function isLiteral ($line) { if ($this->isArrayElement($line)) return false; if ($this->isHashElement($line)) return false; return true; } function unquote ($value) { if (!$value) return $value; if (!is_string($value)) return $value; if ($value[0] == '\'') return trim ($value, '\''); if ($value[0] == '"') return trim ($value, '"'); return $value; } function startsMappedSequence ($line) { return ($line[0] == '-' && substr ($line, -1, 1) == ':'); } function returnMappedSequence ($line) { $array = array(); $key = $this->unquote(trim(substr($line,1,-1))); $array[$key] = array(); $this->delayedPath = array(strpos ($line, $key) + $this->indent => $key); return array($array); } function returnMappedValue ($line) { $array = array(); $key = $this->unquote (trim(substr($line,0,-1))); $array[$key] = ''; return $array; } function startsMappedValue ($line) { return (substr ($line, -1, 1) == ':'); } function isPlainArray ($line) { return ($line[0] == '[' && substr ($line, -1, 1) == ']'); } function returnPlainArray ($line) { return $this->_toType($line); } function returnKeyValuePair ($line) { $array = array(); $key = ''; if (strpos ($line, ':')) { // It's a key/value pair most likely // If the key is in double quotes pull it out if (($line[0] == '"' || $line[0] == "'") && preg_match('/^(["\'](.*)["\'](\s)*:)/',$line,$matches)) { $value = trim(str_replace($matches[1],'',$line)); $key = $matches[2]; } else { // Do some guesswork as to the key and the value $explode = explode(':',$line); $key = trim($explode[0]); array_shift($explode); $value = trim(implode(':',$explode)); } // Set the type of the value. Int, string, etc $value = $this->_toType($value); if ($key === '0') $key = '__!YAMLZero'; $array[$key] = $value; } else { $array = array ($line); } return $array; } function returnArrayElement ($line) { if (strlen($line) <= 1) return array(array()); // Weird %) $array = array(); $value = trim(substr($line,1)); $value = $this->_toType($value); $array[] = $value; return $array; } function nodeContainsGroup ($line) { $symbolsForReference = 'A-z0-9_\-'; if (strpos($line, '&') === false && strpos($line, '*') === false) return false; // Please die fast ;-) if ($line[0] == '&' && preg_match('/^(&['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; if ($line[0] == '*' && preg_match('/^(\*['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; if (preg_match('/(&['.$symbolsForReference.']+)$/', $line, $matches)) return $matches[1]; if (preg_match('/(\*['.$symbolsForReference.']+$)/', $line, $matches)) return $matches[1]; if (preg_match ('#^\s*<<\s*:\s*(\*[^\s]+).*$#', $line, $matches)) return $matches[1]; return false; } function addGroup ($line, $group) { if ($group[0] == '&') $this->_containsGroupAnchor = substr ($group, 1); if ($group[0] == '*') $this->_containsGroupAlias = substr ($group, 1); //print_r ($this->path); } function stripGroup ($line, $group) { $line = trim(str_replace($group, '', $line)); return $line; } } // Enable use of Spyc from command line // The syntax is the following: php spyc.php spyc.yaml define ('SPYC_FROM_COMMAND_LINE', false); do { if (!SPYC_FROM_COMMAND_LINE) break; if (empty ($_SERVER['argc']) || $_SERVER['argc'] < 2) break; if (empty ($_SERVER['PHP_SELF']) || $_SERVER['PHP_SELF'] != 'spyc.php') break; $file = $argv[1]; printf ("Spyc loading file: %s\n", $file); print_r (spyc_load_file ($file)); } while (0);<?php # # S P Y C # a simple php yaml class # v0.3 # # author: [chris wanstrath, chris@ozmm.org] # websites: [http://www.yaml.org, http://spyc.sourceforge.net/] # license: [MIT License, http://www.opensource.org/licenses/mit-license.php] # copyright: (c) 2005-2006 Chris Wanstrath # # We're gonna load a file into memory and see if we get what we expect. # If not, we're gonna complain. # # Pretty lo-fi. Let's see if we can't get some unit testing going in the next, # I dunno, 20 months? Alright. Go team. # error_reporting(E_ALL); include('spyc.php4'); $yaml = Spyc::YAMLLoad('../spyc.yaml'); // print_r ($yaml); # Added in .2 if ($yaml[1040] != "Ooo, a numeric key!") die('Key: 1040 failed'); # Test mappings / types if ($yaml['String'] != "Anyone's name, really.") die('Key: String failed'); if ($yaml['Int'] !== 13) die('Key: Int failed'); if ($yaml['True'] !== true) die('Key: True failed'); if ($yaml['False'] !== false) die('Key: False failed'); if ($yaml['Zero'] !== 0) die('Key: Zero failed'); if (isset($yaml['Null'])) die('Key: Null failed'); if ($yaml['Float'] !== 5.34) die('Key: Float failed'); # Test sequences if ($yaml[0] != "PHP Class") die('Sequence 0 failed'); if ($yaml[1] != "Basic YAML Loader") die('Sequence 1 failed'); if ($yaml[2] != "Very Basic YAML Dumper") die('Sequence 2 failed'); # A sequence of a sequence if ($yaml[3] != array("YAML is so easy to learn.", "Your config files will never be the same.")) die('Sequence 3 failed'); # Sequence of mappings if ($yaml[4] != array("cpu" => "1.5ghz", "ram" => "1 gig", "os" => "os x 10.4.1")) die('Sequence 4 failed'); # Mapped sequence if ($yaml['domains'] != array("yaml.org", "php.net")) die("Key: 'domains' failed"); # A sequence like this. if ($yaml[5] != array("program" => "Adium", "platform" => "OS X", "type" => "Chat Client")) die('Sequence 5 failed'); # A folded block as a mapped value if ($yaml['no time'] != "There isn't any time for your tricks!\nDo you understand?") die("Key: 'no time' failed"); # A literal block as a mapped value if ($yaml['some time'] != "There is nothing but time\nfor your tricks.") die("Key: 'some time' failed"); # Crazy combinations if ($yaml['databases'] != array( array("name" => "spartan", "notes" => array( "Needs to be backed up", "Needs to be normalized" ), "type" => "mysql" ))) die("Key: 'databases' failed"); # You can be a bit tricky if ($yaml["if: you'd"] != "like") die("Key: 'if: you\'d' failed"); # Inline sequences if ($yaml[6] != array("One", "Two", "Three", "Four")) die("Sequence 6 failed"); # Nested Inline Sequences if ($yaml[7] != array("One", array("Two", "And", "Three"), "Four", "Five")) die("Sequence 7 failed"); # Nested Nested Inline Sequences if ($yaml[8] != array( "This", array("Is", "Getting", array("Ridiculous", "Guys")), "Seriously", array("Show", "Mercy"))) die("Sequence 8 failed"); # Inline mappings if ($yaml[9] != array("name" => "chris", "age" => "young", "brand" => "lucky strike")) die("Sequence 9 failed"); # Nested inline mappings if ($yaml[10] != array("name" => "mark", "age" => "older than chris", "brand" => array("marlboro", "lucky strike"))) die("Sequence 10 failed"); # References -- they're shaky, but functional if ($yaml['dynamic languages'] != array('Perl', 'Python', 'PHP', 'Ruby')) die("Key: 'dynamic languages' failed"); if ($yaml['compiled languages'] != array('C/C++', 'Java')) die("Key: 'compiled languages' failed"); if ($yaml['all languages'] != array( array('Perl', 'Python', 'PHP', 'Ruby'), array('C/C++', 'Java') )) die("Key: 'all languages' failed"); # Added in .2.2: Escaped quotes if ($yaml[11] != "you know, this shouldn't work. but it does.") die("Sequence 11 failed."); if ($yaml[12] != "that's my value.") die("Sequence 12 failed."); if ($yaml[13] != "again, that's my value.") die("Sequence 13 failed."); if ($yaml[14] != "here's to \"quotes\", boss.") die("Sequence 14 failed."); if ($yaml[15] != array( 'name' => "Foo, Bar's", 'age' => 20)) die("Sequence 15 failed."); if ($yaml[16] != array( 0 => "a", 1 => array (0 => 1, 1 => 2), 2 => "b")) die("Sequence 16 failed."); if ($yaml['endloop'] != "Does this line in the end indeed make Spyc go to an infinite loop?") die("[endloop] failed."); print "spyc.yaml parsed correctly\n"; ?><?php namespace Mustangostang; /** * Spyc -- A Simple PHP YAML Class * @version 0.6.2 * @author Vlad Andersen <vlad.andersen@gmail.com> * @author Chris Wanstrath <chris@ozmm.org> * @link https://github.com/mustangostang/spyc/ * @copyright Copyright 2005-2006 Chris Wanstrath, 2006-2011 Vlad Andersen * @license http://www.opensource.org/licenses/mit-license.php MIT License * @package Spyc */ /** * The Simple PHP YAML Class. * * This class can be used to read a YAML file and convert its contents * into a PHP array. It currently supports a very limited subsection of * the YAML spec. * * Usage: * <code> * $Spyc = new Spyc; * $array = $Spyc->load($file); * </code> * or: * <code> * $array = Spyc::YAMLLoad($file); * </code> * or: * <code> * $array = spyc_load_file($file); * </code> * @package Spyc */ class Spyc { // SETTINGS const REMPTY = "\0\0\0\0\0"; /** * Setting this to true will force YAMLDump to enclose any string value in * quotes. False by default. * * @var bool */ public $setting_dump_force_quotes = false; /** * Setting this to true will forse YAMLLoad to use syck_load function when * possible. False by default. * @var bool */ public $setting_use_syck_is_possible = false; /**#@+ * @access private * @var mixed */ private $_dumpIndent; private $_dumpWordWrap; private $_containsGroupAnchor = false; private $_containsGroupAlias = false; private $path; private $result; private $LiteralPlaceHolder = '___YAML_Literal_Block___'; private $SavedGroups = array(); private $indent; /** * Path modifier that should be applied after adding current element. * @var array */ private $delayedPath = array(); /**#@+ * @access public * @var mixed */ public $_nodeId; /** * Load a valid YAML string to Spyc. * @param string $input * @return array */ public function load ($input) { return $this->_loadString($input); } /** * Load a valid YAML file to Spyc. * @param string $file * @return array */ public function loadFile ($file) { return $this->_load($file); } /** * Load YAML into a PHP array statically * * The load method, when supplied with a YAML stream (string or file), * will do its best to convert YAML in a file into a PHP array. Pretty * simple. * Usage: * <code> * $array = Spyc::YAMLLoad('lucky.yaml'); * print_r($array); * </code> * @access public * @return array * @param string $input Path of YAML file or string containing YAML */ public static function YAMLLoad($input) { $Spyc = new Spyc; return $Spyc->_load($input); } /** * Load a string of YAML into a PHP array statically * * The load method, when supplied with a YAML string, will do its best * to convert YAML in a string into a PHP array. Pretty simple. * * Note: use this function if you don't want files from the file system * loaded and processed as YAML. This is of interest to people concerned * about security whose input is from a string. * * Usage: * <code> * $array = Spyc::YAMLLoadString("---\n0: hello world\n"); * print_r($array); * </code> * @access public * @return array * @param string $input String containing YAML */ public static function YAMLLoadString($input) { $Spyc = new Spyc; return $Spyc->_loadString($input); } /** * Dump YAML from PHP array statically * * The dump method, when supplied with an array, will do its best * to convert the array into friendly YAML. Pretty simple. Feel free to * save the returned string as nothing.yaml and pass it around. * * Oh, and you can decide how big the indent is and what the wordwrap * for folding is. Pretty cool -- just pass in 'false' for either if * you want to use the default. * * Indent's default is 2 spaces, wordwrap's default is 40 characters. And * you can turn off wordwrap by passing in 0. * * @access public * @return string * @param array|\stdClass $array PHP array * @param int $indent Pass in false to use the default, which is 2 * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) * @param bool $no_opening_dashes Do not start YAML file with "---\n" */ public static function YAMLDump($array, $indent = false, $wordwrap = false, $no_opening_dashes = false) { $spyc = new Spyc; return $spyc->dump($array, $indent, $wordwrap, $no_opening_dashes); } /** * Dump PHP array to YAML * * The dump method, when supplied with an array, will do its best * to convert the array into friendly YAML. Pretty simple. Feel free to * save the returned string as tasteful.yaml and pass it around. * * Oh, and you can decide how big the indent is and what the wordwrap * for folding is. Pretty cool -- just pass in 'false' for either if * you want to use the default. * * Indent's default is 2 spaces, wordwrap's default is 40 characters. And * you can turn off wordwrap by passing in 0. * * @access public * @return string * @param array $array PHP array * @param int $indent Pass in false to use the default, which is 2 * @param int $wordwrap Pass in 0 for no wordwrap, false for default (40) */ public function dump($array,$indent = false,$wordwrap = false, $no_opening_dashes = false) { // Dumps to some very clean YAML. We'll have to add some more features // and options soon. And better support for folding. // New features and options. if ($indent === false or !is_numeric($indent)) { $this->_dumpIndent = 2; } else { $this->_dumpIndent = $indent; } if ($wordwrap === false or !is_numeric($wordwrap)) { $this->_dumpWordWrap = 40; } else { $this->_dumpWordWrap = $wordwrap; } // New YAML document $string = ""; if (!$no_opening_dashes) $string = "---\n"; // Start at the base of the array and move through it. if ($array) { $array = (array)$array; $previous_key = -1; foreach ($array as $key => $value) { if (!isset($first_key)) $first_key = $key; $string .= $this->_yamlize($key,$value,0,$previous_key, $first_key, $array); $previous_key = $key; } } return $string; } /** * Attempts to convert a key / value array item to YAML * @access private * @return string * @param $key The name of the key * @param $value The value of the item * @param $indent The indent of the current node */ private function _yamlize($key,$value,$indent, $previous_key = -1, $first_key = 0, $source_array = null) { if(is_object($value)) $value = (array)$value; if (is_array($value)) { if (empty ($value)) return $this->_dumpNode($key, array(), $indent, $previous_key, $first_key, $source_array); // It has children. What to do? // Make it the right kind of item $string = $this->_dumpNode($key, self::REMPTY, $indent, $previous_key, $first_key, $source_array); // Add the indent $indent += $this->_dumpIndent; // Yamlize the array $string .= $this->_yamlizeArray($value,$indent); } elseif (!is_array($value)) { // It doesn't have children. Yip. $string = $this->_dumpNode($key, $value, $indent, $previous_key, $first_key, $source_array); } return $string; } /** * Attempts to convert an array to YAML * @access private * @return string * @param $array The array you want to convert * @param $indent The indent of the current level */ private function _yamlizeArray($array,$indent) { if (is_array($array)) { $string = ''; $previous_key = -1; foreach ($array as $key => $value) { if (!isset($first_key)) $first_key = $key; $string .= $this->_yamlize($key, $value, $indent, $previous_key, $first_key, $array); $previous_key = $key; } return $string; } else { return false; } } /** * Returns YAML from a key and a value * @access private * @return string * @param $key The name of the key * @param $value The value of the item * @param $indent The indent of the current node */ private function _dumpNode($key, $value, $indent, $previous_key = -1, $first_key = 0, $source_array = null) { // do some folding here, for blocks if (is_string ($value) && ((strpos($value,"\n") !== false || strpos($value,": ") !== false || strpos($value,"- ") !== false || strpos($value,"*") !== false || strpos($value,"#") !== false || strpos($value,"<") !== false || strpos($value,">") !== false || strpos ($value, '%') !== false || strpos ($value, ' ') !== false || strpos($value,"[") !== false || strpos($value,"]") !== false || strpos($value,"{") !== false || strpos($value,"}") !== false) || strpos($value,"&") !== false || strpos($value, "'") !== false || strpos($value, "!") === 0 || substr ($value, -1, 1) == ':') ) { $value = $this->_doLiteralBlock($value,$indent); } else { $value = $this->_doFolding($value,$indent); } if ($value === array()) $value = '[ ]'; if ($value === "") $value = '""'; if (self::isTranslationWord($value)) { $value = $this->_doLiteralBlock($value, $indent); } if (trim ($value) != $value) $value = $this->_doLiteralBlock($value,$indent); if (is_bool($value)) { $value = $value ? "true" : "false"; } if ($value === null) $value = 'null'; if ($value === "'" . self::REMPTY . "'") $value = null; $spaces = str_repeat(' ',$indent); //if (is_int($key) && $key - 1 == $previous_key && $first_key===0) { if (is_array ($source_array) && array_keys($source_array) === range(0, count($source_array) - 1)) { // It's a sequence $string = $spaces.'- '.$value."\n"; } else { // if ($first_key===0) throw new \Exception('Keys are all screwy. The first one was zero, now it\'s "'. $key .'"'); // It's mapped if (strpos($key, ":") !== false || strpos($key, "#") !== false) { $key = '"' . $key . '"'; } $string = rtrim ($spaces.$key.': '.$value)."\n"; } return $string; } /** * Creates a literal block for dumping * @access private * @return string * @param $value * @param $indent int The value of the indent */ private function _doLiteralBlock($value,$indent) { if ($value === "\n") return '\n'; if (strpos($value, "\n") === false && strpos($value, "'") === false) { return sprintf ("'%s'", $value); } if (strpos($value, "\n") === false && strpos($value, '"') === false) { return sprintf ('"%s"', $value); } $exploded = explode("\n",$value); $newValue = '|'; if (isset($exploded[0]) && ($exploded[0] == "|" || $exploded[0] == "|-" || $exploded[0] == ">")) { $newValue = $exploded[0]; unset($exploded[0]); } $indent += $this->_dumpIndent; $spaces = str_repeat(' ',$indent); foreach ($exploded as $line) { $line = trim($line); if (strpos($line, '"') === 0 && strrpos($line, '"') == (strlen($line)-1) || strpos($line, "'") === 0 && strrpos($line, "'") == (strlen($line)-1)) { $line = substr($line, 1, -1); } $newValue .= "\n" . $spaces . ($line); } return $newValue; } /** * Folds a string of text, if necessary * @access private * @return string * @param $value The string you wish to fold */ private function _doFolding($value,$indent) { // Don't do anything if wordwrap is set to 0 if ($this->_dumpWordWrap !== 0 && is_string ($value) && strlen($value) > $this->_dumpWordWrap) { $indent += $this->_dumpIndent; $indent = str_repeat(' ',$indent); $wrapped = wordwrap($value,$this->_dumpWordWrap,"\n$indent"); $value = ">\n".$indent.$wrapped; } else { if ($this->setting_dump_force_quotes && is_string ($value) && $value !== self::REMPTY) $value = '"' . $value . '"'; if (is_numeric($value) && is_string($value)) $value = '"' . $value . '"'; } return $value; } private function isTrueWord($value) { $words = self::getTranslations(array('true', 'on', 'yes', 'y')); return in_array($value, $words, true); } private function isFalseWord($value) { $words = self::getTranslations(array('false', 'off', 'no', 'n')); return in_array($value, $words, true); } private function isNullWord($value) { $words = self::getTranslations(array('null', '~')); return in_array($value, $words, true); } private function isTranslationWord($value) { return ( self::isTrueWord($value) || self::isFalseWord($value) || self::isNullWord($value) ); } /** * Coerce a string into a native type * Reference: http://yaml.org/type/bool.html * TODO: Use only words from the YAML spec. * @access private * @param $value The value to coerce */ private function coerceValue(&$value) { if (self::isTrueWord($value)) { $value = true; } else if (self::isFalseWord($value)) { $value = false; } else if (self::isNullWord($value)) { $value = null; } } /** * Given a set of words, perform the appropriate translations on them to * match the YAML 1.1 specification for type coercing. * @param $words The words to translate * @access private */ private static function getTranslations(array $words) { $result = array(); foreach ($words as $i) { $result = array_merge($result, array(ucfirst($i), strtoupper($i), strtolower($i))); } return $result; } // LOADING FUNCTIONS private function _load($input) { $Source = $this->loadFromSource($input); return $this->loadWithSource($Source); } private function _loadString($input) { $Source = $this->loadFromString($input); return $this->loadWithSource($Source); } private function loadWithSource($Source) { if (empty ($Source)) return array(); if ($this->setting_use_syck_is_possible && function_exists ('syck_load')) { $array = syck_load (implode ("\n", $Source)); return is_array($array) ? $array : array(); } $this->path = array(); $this->result = array(); $cnt = count($Source); for ($i = 0; $i < $cnt; $i++) { $line = $Source[$i]; $this->indent = strlen($line) - strlen(ltrim($line)); $tempPath = $this->getParentPathByIndent($this->indent); $line = self::stripIndent($line, $this->indent); if (self::isComment($line)) continue; if (self::isEmpty($line)) continue; $this->path = $tempPath; $literalBlockStyle = self::startsLiteralBlock($line); if ($literalBlockStyle) { $line = rtrim ($line, $literalBlockStyle . " \n"); $literalBlock = ''; $line .= ' '.$this->LiteralPlaceHolder; $literal_block_indent = strlen($Source[$i+1]) - strlen(ltrim($Source[$i+1])); while (++$i < $cnt && $this->literalBlockContinues($Source[$i], $this->indent)) { $literalBlock = $this->addLiteralLine($literalBlock, $Source[$i], $literalBlockStyle, $literal_block_indent); } $i--; } // Strip out comments if (strpos ($line, '#')) { $line = preg_replace('/\s*#([^"\']+)$/','',$line); } while (++$i < $cnt && self::greedilyNeedNextLine($line)) { $line = rtrim ($line, " \n\t\r") . ' ' . ltrim ($Source[$i], " \t"); } $i--; $lineArray = $this->_parseLine($line); if ($literalBlockStyle) $lineArray = $this->revertLiteralPlaceHolder ($lineArray, $literalBlock); $this->addArray($lineArray, $this->indent); foreach ($this->delayedPath as $indent => $delayedPath) $this->path[$indent] = $delayedPath; $this->delayedPath = array(); } return $this->result; } private function loadFromSource ($input) { if (!empty($input) && strpos($input, "\n") === false && file_exists($input)) $input = file_get_contents($input); return $this->loadFromString($input); } private function loadFromString ($input) { $lines = explode("\n",$input); foreach ($lines as $k => $_) { $lines[$k] = rtrim ($_, "\r"); } return $lines; } /** * Parses YAML code and returns an array for a node * @access private * @return array * @param string $line A line from the YAML file */ private function _parseLine($line) { if (!$line) return array(); $line = trim($line); if (!$line) return array(); $array = array(); $group = $this->nodeContainsGroup($line); if ($group) { $this->addGroup($line, $group); $line = $this->stripGroup ($line, $group); } if ($this->startsMappedSequence($line)) return $this->returnMappedSequence($line); if ($this->startsMappedValue($line)) return $this->returnMappedValue($line); if ($this->isArrayElement($line)) return $this->returnArrayElement($line); if ($this->isPlainArray($line)) return $this->returnPlainArray($line); return $this->returnKeyValuePair($line); } /** * Finds the type of the passed value, returns the value as the new type. * @access private * @param string $value * @return mixed */ private function _toType($value) { if ($value === '') return ""; $first_character = $value[0]; $last_character = substr($value, -1, 1); $is_quoted = false; do { if (!$value) break; if ($first_character != '"' && $first_character != "'") break; if ($last_character != '"' && $last_character != "'") break; $is_quoted = true; } while (0); if ($is_quoted) { $value = str_replace('\n', "\n", $value); if ($first_character == "'") return strtr(substr ($value, 1, -1), array ('\'\'' => '\'', '\\\''=> '\'')); return strtr(substr ($value, 1, -1), array ('\\"' => '"', '\\\''=> '\'')); } if (strpos($value, ' #') !== false && !$is_quoted) $value = preg_replace('/\s+#(.+)$/','',$value); if ($first_character == '[' && $last_character == ']') { // Take out strings sequences and mappings $innerValue = trim(substr ($value, 1, -1)); if ($innerValue === '') return array(); $explode = $this->_inlineEscape($innerValue); // Propagate value array $value = array(); foreach ($explode as $v) { $value[] = $this->_toType($v); } return $value; } if (strpos($value,': ')!==false && $first_character != '{') { $array = explode(': ',$value); $key = trim($array[0]); array_shift($array); $value = trim(implode(': ',$array)); $value = $this->_toType($value); return array($key => $value); } if ($first_character == '{' && $last_character == '}') { $innerValue = trim(substr ($value, 1, -1)); if ($innerValue === '') return array(); // Inline Mapping // Take out strings sequences and mappings $explode = $this->_inlineEscape($innerValue); // Propagate value array $array = array(); foreach ($explode as $v) { $SubArr = $this->_toType($v); if (empty($SubArr)) continue; if (is_array ($SubArr)) { $array[key($SubArr)] = $SubArr[key($SubArr)]; continue; } $array[] = $SubArr; } return $array; } if ($value == 'null' || $value == 'NULL' || $value == 'Null' || $value == '' || $value == '~') { return null; } if ( is_numeric($value) && preg_match ('/^(-|)[1-9]+[0-9]*$/', $value) ){ $intvalue = (int)$value; if ($intvalue != PHP_INT_MAX && $intvalue != ~PHP_INT_MAX) $value = $intvalue; return $value; } if ( is_string($value) && preg_match('/^0[xX][0-9a-fA-F]+$/', $value)) { // Hexadecimal value. return hexdec($value); } $this->coerceValue($value); if (is_numeric($value)) { if ($value === '0') return 0; if (rtrim ($value, 0) === $value) $value = (float)$value; return $value; } return $value; } /** * Used in inlines to check for more inlines or quoted strings * @access private * @return array */ private function _inlineEscape($inline) { // There's gotta be a cleaner way to do this... // While pure sequences seem to be nesting just fine, // pure mappings and mappings with sequences inside can't go very // deep. This needs to be fixed. $seqs = array(); $maps = array(); $saved_strings = array(); $saved_empties = array(); // Check for empty strings $regex = '/("")|(\'\')/'; if (preg_match_all($regex,$inline,$strings)) { $saved_empties = $strings[0]; $inline = preg_replace($regex,'YAMLEmpty',$inline); } unset($regex); // Check for strings $regex = '/(?:(")|(?:\'))((?(1)[^"]+|[^\']+))(?(1)"|\')/'; if (preg_match_all($regex,$inline,$strings)) { $saved_strings = $strings[0]; $inline = preg_replace($regex,'YAMLString',$inline); } unset($regex); // echo $inline; $i = 0; do { // Check for sequences while (preg_match('/\[([^{}\[\]]+)\]/U',$inline,$matchseqs)) { $seqs[] = $matchseqs[0]; $inline = preg_replace('/\[([^{}\[\]]+)\]/U', ('YAMLSeq' . (count($seqs) - 1) . 's'), $inline, 1); } // Check for mappings while (preg_match('/{([^\[\]{}]+)}/U',$inline,$matchmaps)) { $maps[] = $matchmaps[0]; $inline = preg_replace('/{([^\[\]{}]+)}/U', ('YAMLMap' . (count($maps) - 1) . 's'), $inline, 1); } if ($i++ >= 10) break; } while (strpos ($inline, '[') !== false || strpos ($inline, '{') !== false); $explode = explode(',',$inline); $explode = array_map('trim', $explode); $stringi = 0; $i = 0; while (1) { // Re-add the sequences if (!empty($seqs)) { foreach ($explode as $key => $value) { if (strpos($value,'YAMLSeq') !== false) { foreach ($seqs as $seqk => $seq) { $explode[$key] = str_replace(('YAMLSeq'.$seqk.'s'),$seq,$value); $value = $explode[$key]; } } } } // Re-add the mappings if (!empty($maps)) { foreach ($explode as $key => $value) { if (strpos($value,'YAMLMap') !== false) { foreach ($maps as $mapk => $map) { $explode[$key] = str_replace(('YAMLMap'.$mapk.'s'), $map, $value); $value = $explode[$key]; } } } } // Re-add the strings if (!empty($saved_strings)) { foreach ($explode as $key => $value) { while (strpos($value,'YAMLString') !== false) { $explode[$key] = preg_replace('/YAMLString/',$saved_strings[$stringi],$value, 1); unset($saved_strings[$stringi]); ++$stringi; $value = $explode[$key]; } } } // Re-add the empties if (!empty($saved_empties)) { foreach ($explode as $key => $value) { while (strpos($value,'YAMLEmpty') !== false) { $explode[$key] = preg_replace('/YAMLEmpty/', '', $value, 1); $value = $explode[$key]; } } } $finished = true; foreach ($explode as $key => $value) { if (strpos($value,'YAMLSeq') !== false) { $finished = false; break; } if (strpos($value,'YAMLMap') !== false) { $finished = false; break; } if (strpos($value,'YAMLString') !== false) { $finished = false; break; } if (strpos($value,'YAMLEmpty') !== false) { $finished = false; break; } } if ($finished) break; $i++; if ($i > 10) break; // Prevent infinite loops. } return $explode; } private function literalBlockContinues ($line, $lineIndent) { if (!trim($line)) return true; if (strlen($line) - strlen(ltrim($line)) > $lineIndent) return true; return false; } private function referenceContentsByAlias ($alias) { do { if (!isset($this->SavedGroups[$alias])) { echo "Bad group name: $alias."; break; } $groupPath = $this->SavedGroups[$alias]; $value = $this->result; foreach ($groupPath as $k) { $value = $value[$k]; } } while (false); return $value; } private function addArrayInline ($array, $indent) { $CommonGroupPath = $this->path; if (empty ($array)) return false; foreach ($array as $k => $_) { $this->addArray(array($k => $_), $indent); $this->path = $CommonGroupPath; } return true; } private function addArray ($incoming_data, $incoming_indent) { // print_r ($incoming_data); if (count ($incoming_data) > 1) return $this->addArrayInline ($incoming_data, $incoming_indent); $key = key ($incoming_data); $value = isset($incoming_data[$key]) ? $incoming_data[$key] : null; if ($key === '__!YAMLZero') $key = '0'; if ($incoming_indent == 0 && !$this->_containsGroupAlias && !$this->_containsGroupAnchor) { // Shortcut for root-level values. if ($key || $key === '' || $key === '0') { $this->result[$key] = $value; } else { $this->result[] = $value; end ($this->result); $key = key ($this->result); } $this->path[$incoming_indent] = $key; return; } $history = array(); // Unfolding inner array tree. $history[] = $_arr = $this->result; foreach ($this->path as $k) { $history[] = $_arr = $_arr[$k]; } if ($this->_containsGroupAlias) { $value = $this->referenceContentsByAlias($this->_containsGroupAlias); $this->_containsGroupAlias = false; } // Adding string or numeric key to the innermost level or $this->arr. if (is_string($key) && $key == '<<') { if (!is_array ($_arr)) { $_arr = array (); } $_arr = array_merge ($_arr, $value); } else if ($key || $key === '' || $key === '0') { if (!is_array ($_arr)) $_arr = array ($key=>$value); else $_arr[$key] = $value; } else { if (!is_array ($_arr)) { $_arr = array ($value); $key = 0; } else { $_arr[] = $value; end ($_arr); $key = key ($_arr); } } $reverse_path = array_reverse($this->path); $reverse_history = array_reverse ($history); $reverse_history[0] = $_arr; $cnt = count($reverse_history) - 1; for ($i = 0; $i < $cnt; $i++) { $reverse_history[$i+1][$reverse_path[$i]] = $reverse_history[$i]; } $this->result = $reverse_history[$cnt]; $this->path[$incoming_indent] = $key; if ($this->_containsGroupAnchor) { $this->SavedGroups[$this->_containsGroupAnchor] = $this->path; if (is_array ($value)) { $k = key ($value); if (!is_int ($k)) { $this->SavedGroups[$this->_containsGroupAnchor][$incoming_indent + 2] = $k; } } $this->_containsGroupAnchor = false; } } private static function startsLiteralBlock ($line) { $lastChar = substr (trim($line), -1); if ($lastChar != '>' && $lastChar != '|') return false; if ($lastChar == '|') return $lastChar; // HTML tags should not be counted as literal blocks. if (preg_match ('#<.*?>$#', $line)) return false; return $lastChar; } private static function greedilyNeedNextLine($line) { $line = trim ($line); if (!strlen($line)) return false; if (substr ($line, -1, 1) == ']') return false; if ($line[0] == '[') return true; if (preg_match ('#^[^:]+?:\s*\[#', $line)) return true; return false; } private function addLiteralLine ($literalBlock, $line, $literalBlockStyle, $indent = -1) { $line = self::stripIndent($line, $indent); if ($literalBlockStyle !== '|') { $line = self::stripIndent($line); } $line = rtrim ($line, "\r\n\t ") . "\n"; if ($literalBlockStyle == '|') { return $literalBlock . $line; } if (strlen($line) == 0) return rtrim($literalBlock, ' ') . "\n"; if ($line == "\n" && $literalBlockStyle == '>') { return rtrim ($literalBlock, " \t") . "\n"; } if ($line != "\n") $line = trim ($line, "\r\n ") . " "; return $literalBlock . $line; } function revertLiteralPlaceHolder ($lineArray, $literalBlock) { foreach ($lineArray as $k => $_) { if (is_array($_)) $lineArray[$k] = $this->revertLiteralPlaceHolder ($_, $literalBlock); else if (substr($_, -1 * strlen ($this->LiteralPlaceHolder)) == $this->LiteralPlaceHolder) $lineArray[$k] = rtrim ($literalBlock, " \r\n"); } return $lineArray; } private static function stripIndent ($line, $indent = -1) { if ($indent == -1) $indent = strlen($line) - strlen(ltrim($line)); return substr ($line, $indent); } private function getParentPathByIndent ($indent) { if ($indent == 0) return array(); $linePath = $this->path; do { end($linePath); $lastIndentInParentPath = key($linePath); if ($indent <= $lastIndentInParentPath) array_pop ($linePath); } while ($indent <= $lastIndentInParentPath); return $linePath; } private function clearBiggerPathValues ($indent) { if ($indent == 0) $this->path = array(); if (empty ($this->path)) return true; foreach ($this->path as $k => $_) { if ($k > $indent) unset ($this->path[$k]); } return true; } private static function isComment ($line) { if (!$line) return false; if ($line[0] == '#') return true; if (trim($line, " \r\n\t") == '---') return true; return false; } private static function isEmpty ($line) { return (trim ($line) === ''); } private function isArrayElement ($line) { if (!$line || !is_scalar($line)) return false; if (substr($line, 0, 2) != '- ') return false; if (strlen ($line) > 3) if (substr($line,0,3) == '---') return false; return true; } private function isHashElement ($line) { return strpos($line, ':'); } private function isLiteral ($line) { if ($this->isArrayElement($line)) return false; if ($this->isHashElement($line)) return false; return true; } private static function unquote ($value) { if (!$value) return $value; if (!is_string($value)) return $value; if ($value[0] == '\'') return trim ($value, '\''); if ($value[0] == '"') return trim ($value, '"'); return $value; } private function startsMappedSequence ($line) { return (substr($line, 0, 2) == '- ' && substr ($line, -1, 1) == ':'); } private function returnMappedSequence ($line) { $array = array(); $key = self::unquote(trim(substr($line,1,-1))); $array[$key] = array(); $this->delayedPath = array(strpos ($line, $key) + $this->indent => $key); return array($array); } private function checkKeysInValue($value) { if (strchr('[{"\'', $value[0]) === false) { if (strchr($value, ': ') !== false) { throw new \Exception('Too many keys: '.$value); } } } private function returnMappedValue ($line) { $this->checkKeysInValue($line); $array = array(); $key = self::unquote (trim(substr($line,0,-1))); $array[$key] = ''; return $array; } private function startsMappedValue ($line) { return (substr ($line, -1, 1) == ':'); } private function isPlainArray ($line) { return ($line[0] == '[' && substr ($line, -1, 1) == ']'); } private function returnPlainArray ($line) { return $this->_toType($line); } private function returnKeyValuePair ($line) { $array = array(); $key = ''; if (strpos ($line, ': ')) { // It's a key/value pair most likely // If the key is in double quotes pull it out if (($line[0] == '"' || $line[0] == "'") && preg_match('/^(["\'](.*)["\'](\s)*:)/',$line,$matches)) { $value = trim(str_replace($matches[1],'',$line)); $key = $matches[2]; } else { // Do some guesswork as to the key and the value $explode = explode(': ', $line); $key = trim(array_shift($explode)); $value = trim(implode(': ', $explode)); $this->checkKeysInValue($value); } // Set the type of the value. Int, string, etc $value = $this->_toType($value); if ($key === '0') $key = '__!YAMLZero'; $array[$key] = $value; } else { $array = array ($line); } return $array; } private function returnArrayElement ($line) { if (strlen($line) <= 1) return array(array()); // Weird %) $array = array(); $value = trim(substr($line,1)); $value = $this->_toType($value); if ($this->isArrayElement($value)) { $value = $this->returnArrayElement($value); } $array[] = $value; return $array; } private function nodeContainsGroup ($line) { $symbolsForReference = 'A-z0-9_\-'; if (strpos($line, '&') === false && strpos($line, '*') === false) return false; // Please die fast ;-) if ($line[0] == '&' && preg_match('/^(&['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; if ($line[0] == '*' && preg_match('/^(\*['.$symbolsForReference.']+)/', $line, $matches)) return $matches[1]; if (preg_match('/(&['.$symbolsForReference.']+)$/', $line, $matches)) return $matches[1]; if (preg_match('/(\*['.$symbolsForReference.']+$)/', $line, $matches)) return $matches[1]; if (preg_match ('#^\s*<<\s*:\s*(\*[^\s]+).*$#', $line, $matches)) return $matches[1]; return false; } private function addGroup ($line, $group) { if ($group[0] == '&') $this->_containsGroupAnchor = substr ($group, 1); if ($group[0] == '*') $this->_containsGroupAlias = substr ($group, 1); //print_r ($this->path); } private function stripGroup ($line, $group) { $line = trim(str_replace($group, '', $line)); return $line; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_i18n_autoloader = __DIR__ . '/vendor/autoload.php'; if ( file_exists( $wpcli_i18n_autoloader ) ) { require_once $wpcli_i18n_autoloader; } if ( class_exists( 'WP_CLI\Dispatcher\CommandNamespace' ) ) { WP_CLI::add_command( 'i18n', '\WP_CLI\I18n\CommandNamespace' ); } WP_CLI::add_command( 'i18n make-pot', '\WP_CLI\I18n\MakePotCommand' ); WP_CLI::add_command( 'i18n make-json', '\WP_CLI\I18n\MakeJsonCommand' ); WP_CLI::add_command( 'i18n make-mo', '\WP_CLI\I18n\MakeMoCommand' ); <?php namespace WP_CLI\I18n; use Gettext\Translation; use Gettext\Translations; use RecursiveCallbackFilterIterator; use RecursiveDirectoryIterator; use RecursiveIteratorIterator; use SplFileInfo; use WP_CLI; use WP_CLI\Utils; trait IterableCodeExtractor { private static $dir = ''; /** * Extract the translations from a file. * * @param array|string $file_or_files A path of a file or files * @param Translations $translations The translations instance to append the new translations. * @param array $options { * Optional. An array of options passed down to static::fromString() * * @type bool $wpExtractTemplates Extract 'Template Name' headers in theme files. Default 'false'. * @type array $restrictFileNames Skip all files which are not included in this array. * } * @return null */ public static function fromFile( $file_or_files, Translations $translations, array $options = [] ) { foreach ( static::getFiles( $file_or_files ) as $file ) { if ( ! empty( $options['restrictFileNames'] ) ) { $basename = Utils\basename( $file ); if ( ! in_array( $basename, $options['restrictFileNames'], true ) ) { continue; } } // Make sure a relative file path is added as a comment. $options['file'] = ltrim( str_replace( static::$dir, '', Utils\normalize_path( $file ) ), '/' ); $string = file_get_contents( $file ); if ( ! $string ) { WP_CLI::debug( sprintf( 'Could not load file %1s', $file ), 'make-pot' ); continue; } if ( ! empty( $options['wpExtractTemplates'] ) ) { $headers = MakePotCommand::get_file_data_from_string( $string, [ 'Template Name' => 'Template Name' ] ); if ( ! empty( $headers['Template Name'] ) ) { $translation = new Translation( '', $headers['Template Name'] ); $translation->addExtractedComment( 'Template Name of the theme' ); $translations[] = $translation; } } static::fromString( $string, $translations, $options ); } } /** * Extract the translations from a file. * * @param string $dir Root path to start the recursive traversal in. * @param Translations $translations The translations instance to append the new translations. * @param array $options { * Optional. An array of options passed down to static::fromString() * * @type bool $wpExtractTemplates Extract 'Template Name' headers in theme files. Default 'false'. * @type array $exclude A list of path to exclude. Default []. * @type array $extensions A list of extensions to process. Default []. * } * @return null */ public static function fromDirectory( $dir, Translations $translations, array $options = [] ) { $dir = Utils\normalize_path( $dir ); static::$dir = $dir; $include = isset( $options['include'] ) ? $options['include'] : []; $exclude = isset( $options['exclude'] ) ? $options['exclude'] : []; $files = static::getFilesFromDirectory( $dir, $include, $exclude, $options['extensions'] ); if ( ! empty( $files ) ) { static::fromFile( $files, $translations, $options ); } static::$dir = ''; } /** * Determines whether a file is valid based on given matchers. * * @param SplFileInfo $file File or directory. * @param array $matchers List of files and directories to match. * @return int How strongly the file is matched. */ protected static function calculateMatchScore( SplFileInfo $file, array $matchers = [] ) { if ( empty( $matchers ) ) { return 0; } if ( in_array( $file->getBasename(), $matchers, true ) ) { return 10; } // Check for more complex paths, e.g. /some/sub/folder. $root_relative_path = str_replace( static::$dir, '', $file->getPathname() ); foreach ( $matchers as $path_or_file ) { $pattern = preg_quote( str_replace( '*', '__wildcard__', $path_or_file ), '/' ); $pattern = '(^|/)' . str_replace( '__wildcard__', '(.+)', $pattern ); // Base score is the amount of nested directories, discounting wildcards. $base_score = count( array_filter( explode( '/', $path_or_file ), static function ( $component ) { return '*' !== $component; } ) ); if ( 0 === $base_score ) { // If the matcher is simply * it gets a score above the implicit score but below 1. $base_score = 0.2; } // If the matcher contains no wildcards and matches the end of the path. if ( false === strpos( $path_or_file, '*' ) && false !== mb_ereg( $pattern . '$', $root_relative_path ) ) { return $base_score * 10; } // If the matcher matches the end of the path or a full directory contained. if ( false !== mb_ereg( $pattern . '(/|$)', $root_relative_path ) ) { return $base_score; } } return 0; } /** * Determines whether or not a directory has children that may be matched. * * @param SplFileInfo $dir Directory. * @param array $matchers List of files and directories to match. * @return bool Whether or not there are any matchers for children of this directory. */ protected static function containsMatchingChildren( SplFileInfo $dir, array $matchers = [] ) { if ( empty( $matchers ) ) { return false; } /** @var string $root_relative_path */ $root_relative_path = str_replace( static::$dir, '', $dir->getPathname() ); foreach ( $matchers as $path_or_file ) { // If the matcher contains no wildcards and the path matches the start of the matcher. if ( '' !== $root_relative_path && false === strpos( $path_or_file, '*' ) && 0 === strpos( $path_or_file . '/', $root_relative_path ) ) { return true; } $base = current( explode( '*', $path_or_file ) ); // If start of the path matches the start of the matcher until the first wildcard. // Or the start of the matcher until the first wildcard matches the start of the path. if ( ( '' !== $root_relative_path && 0 === strpos( $base, $root_relative_path ) ) || ( '' !== $base && 0 === strpos( $root_relative_path, $base ) ) ) { return true; } } return false; } /** * Recursively gets all PHP files within a directory. * * @param string $dir A path of a directory. * @param array $include List of files and directories to include. * @param array $exclude List of files and directories to skip. * @param array $extensions List of filename extensions to process. * * @return array File list. */ public static function getFilesFromDirectory( $dir, array $include = [], array $exclude = [], $extensions = [] ) { $filtered_files = []; $files = new RecursiveIteratorIterator( new RecursiveCallbackFilterIterator( new RecursiveDirectoryIterator( $dir, RecursiveDirectoryIterator::SKIP_DOTS | RecursiveDirectoryIterator::UNIX_PATHS ), static function ( $file, $key, $iterator ) use ( $include, $exclude, $extensions ) { /** @var RecursiveCallbackFilterIterator $iterator */ /** @var SplFileInfo $file */ // Normalize include and exclude paths. $include = array_map( 'static::trim_leading_slash', $include ); $exclude = array_map( 'static::trim_leading_slash', $exclude ); // If no $include is passed everything gets the weakest possible matching score. $inclusion_score = empty( $include ) ? 0.1 : static::calculateMatchScore( $file, $include ); $exclusion_score = static::calculateMatchScore( $file, $exclude ); // Always include directories that aren't excluded. if ( 0 === $exclusion_score && $iterator->hasChildren() ) { return true; } if ( ( 0 === $inclusion_score || $exclusion_score > $inclusion_score ) && $iterator->hasChildren() ) { // Always include directories that may have matching children even if they are excluded. return static::containsMatchingChildren( $file, $include ); } return ( ( $inclusion_score >= $exclusion_score ) && $file->isFile() && in_array( $file->getExtension(), $extensions, true ) ); } ), RecursiveIteratorIterator::CHILD_FIRST ); foreach ( $files as $file ) { /** @var SplFileInfo $file */ if ( ! $file->isFile() || ! in_array( $file->getExtension(), $extensions, true ) ) { continue; } $filtered_files[] = Utils\normalize_path( $file->getPathname() ); } sort( $filtered_files, SORT_NATURAL | SORT_FLAG_CASE ); return $filtered_files; } /** * Trim leading slash from a path. * * @param string $path Path to trim. * @return string Trimmed path. */ private static function trim_leading_slash( $path ) { return ltrim( $path, '/' ); } } <?php namespace WP_CLI\I18n; use Gettext\Generators\Jed; use Gettext\Translation; use Gettext\Translations; /** * Jed file generator. * * Adds some more meta data to JED translation files than the default generator. */ class JedGenerator extends Jed { /** * {@parentDoc}. */ public static function toString( Translations $translations, array $options = [] ) { $options += static::$options; $domain = $translations->getDomain() ?: 'messages'; $messages = static::buildMessages( $translations ); $configuration = [ '' => [ 'domain' => $domain, 'lang' => $translations->getLanguage() ?: 'en', 'plural-forms' => $translations->getHeader( 'Plural-Forms' ) ?: 'nplurals=2; plural=(n != 1);', ], ]; $data = [ 'translation-revision-date' => $translations->getHeader( 'PO-Revision-Date' ), 'generator' => 'WP-CLI/' . WP_CLI_VERSION, 'source' => $options['source'], 'domain' => $domain, 'locale_data' => [ $domain => $configuration + $messages, ], ]; return json_encode( $data, $options['json'] ); } /** * Generates an array with all translations. * * @param Translations $translations * * @return array */ public static function buildMessages( Translations $translations ) { $plural_forms = $translations->getPluralForms(); $number_of_plurals = is_array( $plural_forms ) ? ( $plural_forms[0] - 1 ) : null; $messages = []; $context_glue = chr( 4 ); foreach ( $translations as $translation ) { /** @var Translation $translation */ if ( $translation->isDisabled() ) { continue; } $key = $translation->getOriginal(); if ( $translation->hasContext() ) { $key = $translation->getContext() . $context_glue . $key; } if ( $translation->hasPluralTranslations( true ) ) { $message = $translation->getPluralTranslations( $number_of_plurals ); array_unshift( $message, $translation->getTranslation() ); } else { $message = [ $translation->getTranslation() ]; } $messages[ $key ] = $message; } return $messages; } } <?php namespace WP_CLI\I18n; use Exception; use Gettext\Extractors\JsCode; use Gettext\Translations; use Peast\Syntax\Exception as PeastException; use WP_CLI; final class JsCodeExtractor extends JsCode { use IterableCodeExtractor; public static $options = [ 'extractComments' => [ 'translators', 'Translators' ], 'constants' => [], 'functions' => [ '__' => 'text_domain', '_x' => 'text_context_domain', '_n' => 'single_plural_number_domain', '_nx' => 'single_plural_number_context_domain', ], ]; protected static $functionsScannerClass = 'WP_CLI\I18n\JsFunctionsScanner'; /** * @inheritdoc */ public static function fromString( $string, Translations $translations, array $options = [] ) { WP_CLI::debug( "Parsing file {$options['file']}", 'make-pot' ); try { static::fromStringMultiple( $string, [ $translations ], $options ); } catch ( PeastException $exception ) { WP_CLI::debug( sprintf( 'Could not parse file %1$s: %2$s (line %3$d, column %4$d)', $options['file'], $exception->getMessage(), $exception->getPosition()->getLine(), $exception->getPosition()->getColumn() ), 'make-pot' ); } catch ( Exception $exception ) { WP_CLI::debug( sprintf( 'Could not parse file %1$s: %2$s', $options['file'], $exception->getMessage() ), 'make-pot' ); } } /** * @inheritDoc */ public static function fromStringMultiple( $string, array $translations, array $options = [] ) { $options += static::$options; /** @var JsFunctionsScanner $functions */ $functions = new static::$functionsScannerClass( $string ); $functions->enableCommentsExtraction( $options['extractComments'] ); $functions->saveGettextFunctions( $translations, $options ); } } <?php namespace WP_CLI\I18n; use DirectoryIterator; use Gettext\Translations; use IteratorIterator; use SplFileInfo; use WP_CLI; use WP_CLI\Utils; use WP_CLI_Command; class MakeMoCommand extends WP_CLI_Command { /** * Create MO files from PO files. * * ## OPTIONS * * <source> * : Path to an existing PO file or a directory containing multiple PO files. * * [<destination>] * : Path to the destination directory for the resulting MO files. Defaults to the source directory. * * @when before_wp_load * * @throws WP_CLI\ExitException */ public function __invoke( $args, $assoc_args ) { $source = realpath( $args[0] ); if ( ! $source || ( ! is_file( $source ) && ! is_dir( $source ) ) ) { WP_CLI::error( 'Source file or directory does not exist!' ); } $destination = is_file( $source ) ? dirname( $source ) : $source; if ( isset( $args[1] ) ) { $destination = $args[1]; } // Two is_dir() checks in case of a race condition. if ( ! is_dir( $destination ) && ! mkdir( $destination, 0777, true ) && ! is_dir( $destination ) ) { WP_CLI::error( 'Could not create destination directory!' ); } if ( is_file( $source ) ) { $files = [ new SplFileInfo( $source ) ]; } else { $files = new IteratorIterator( new DirectoryIterator( $source ) ); } $result_count = 0; /** @var DirectoryIterator $file */ foreach ( $files as $file ) { if ( 'po' !== $file->getExtension() ) { continue; } if ( ! $file->isFile() || ! $file->isReadable() ) { WP_CLI::warning( sprintf( 'Could not read file %s', $file->getFilename() ) ); continue; } $file_basename = basename( $file->getFilename(), '.po' ); $destination_file = "{$destination}/{$file_basename}.mo"; $translations = Translations::fromPoFile( $file->getPathname() ); if ( ! $translations->toMoFile( $destination_file ) ) { WP_CLI::warning( sprintf( 'Could not create file %s', $destination_file ) ); continue; } $result_count++; } WP_CLI::success( sprintf( 'Created %d %s.', $result_count, Utils\pluralize( 'file', $result_count ) ) ); } } <?php namespace WP_CLI\I18n; use WP_CLI\Dispatcher\CommandNamespace as BaseCommandNamespace; /** * Provides internationalization tools for WordPress projects. * * ## EXAMPLES * * # Create a POT file for the WordPress plugin/theme in the current directory * $ wp i18n make-pot . languages/my-plugin.pot * * @when before_wp_load */ class CommandNamespace extends BaseCommandNamespace { } <?php namespace WP_CLI\I18n; use Gettext\Extractors\Po; use Gettext\Merge; use Gettext\Translation; use Gettext\Translations; use WP_CLI; use WP_CLI_Command; use WP_CLI\Utils; use DirectoryIterator; use IteratorIterator; class MakePotCommand extends WP_CLI_Command { /** * @var string */ protected $source; /** * @var string */ protected $destination; /** * @var array */ protected $merge = []; /** * @var Translations */ protected $exceptions; /** * @var array */ protected $include = []; /** * @var array */ protected $exclude = [ 'node_modules', '.git', '.svn', '.CVS', '.hg', 'vendor', 'Gruntfile.js', 'webpack.config.js', '*.min.js' ]; /** * @var string */ protected $slug; /** * @var array */ protected $main_file_data = []; /** * @var bool */ protected $skip_js = false; /** * @var bool */ protected $skip_php = false; /** * @var bool */ protected $skip_block_json = false; /** * @var bool */ protected $skip_audit = false; /** * @var array */ protected $headers = []; /** * @var string */ protected $domain; /** * @var string */ protected $package_name; /** * @var string */ protected $file_comment; /** * @var string */ protected $project_type = 'generic'; /** * These Regexes copied from http://php.net/manual/en/function.sprintf.php#93552 * and adjusted for better precision and updated specs. */ const SPRINTF_PLACEHOLDER_REGEX = '/(?: (?<!%) # Don\'t match a literal % (%%). ( % # Start of placeholder. (?:[0-9]+\$)? # Optional ordering of the placeholders. [+-]? # Optional sign specifier. (?: (?:0|\'.)? # Optional padding specifier - excluding the space. -? # Optional alignment specifier. [0-9]* # Optional width specifier. (?:\.(?:[ 0]|\'.)?[0-9]+)? # Optional precision specifier with optional padding character. | # Only recognize the space as padding in combination with a width specifier. (?:[ ])? # Optional space padding specifier. -? # Optional alignment specifier. [0-9]+ # Width specifier. (?:\.(?:[ 0]|\'.)?[0-9]+)? # Optional precision specifier with optional padding character. ) [bcdeEfFgGosuxX] # Type specifier. ) )/x'; /** * "Unordered" means there's no position specifier: '%s', not '%2$s'. */ const UNORDERED_SPRINTF_PLACEHOLDER_REGEX = '/(?: (?<!%) # Don\'t match a literal % (%%). % # Start of placeholder. [+-]? # Optional sign specifier. (?: (?:0|\'.)? # Optional padding specifier - excluding the space. -? # Optional alignment specifier. [0-9]* # Optional width specifier. (?:\.(?:[ 0]|\'.)?[0-9]+)? # Optional precision specifier with optional padding character. | # Only recognize the space as padding in combination with a width specifier. (?:[ ])? # Optional space padding specifier. -? # Optional alignment specifier. [0-9]+ # Width specifier. (?:\.(?:[ 0]|\'.)?[0-9]+)? # Optional precision specifier with optional padding character. ) [bcdeEfFgGosuxX] # Type specifier. )/x'; /** * Create a POT file for a WordPress project. * * Scans PHP and JavaScript files for translatable strings, as well as theme stylesheets and plugin files * if the source directory is detected as either a plugin or theme. * * ## OPTIONS * * <source> * : Directory to scan for string extraction. * * [<destination>] * : Name of the resulting POT file. * * [--slug=<slug>] * : Plugin or theme slug. Defaults to the source directory's basename. * * [--domain=<domain>] * : Text domain to look for in the source code, unless the `--ignore-domain` option is used. * By default, the "Text Domain" header of the plugin or theme is used. * If none is provided, it falls back to the project slug. * * [--ignore-domain] * : Ignore the text domain completely and extract strings with any text domain. * * [--merge[=<paths>]] * : Comma-separated list of POT files whose contents should be merged with the extracted strings. * If left empty, defaults to the destination POT file. POT file headers will be ignored. * * [--subtract=<paths>] * : Comma-separated list of POT files whose contents should act as some sort of blacklist for string extraction. * Any string which is found on that blacklist will not be extracted. * This can be useful when you want to create multiple POT files from the same source directory with slightly * different content and no duplicate strings between them. * * [--include=<paths>] * : Comma-separated list of files and paths that should be used for string extraction. * If provided, only these files and folders will be taken into account for string extraction. * For example, `--include="src,my-file.php` will ignore anything besides `my-file.php` and files in the `src` * directory. Simple glob patterns can be used, i.e. `--include=foo-*.php` includes any PHP file with the `foo-` * prefix. Leading and trailing slashes are ignored, i.e. `/my/directory/` is the same as `my/directory`. * * [--exclude=<paths>] * : Comma-separated list of files and paths that should be skipped for string extraction. * For example, `--exclude=".github,myfile.php` would ignore any strings found within `myfile.php` or the `.github` * folder. Simple glob patterns can be used, i.e. `--exclude=foo-*.php` excludes any PHP file with the `foo-` * prefix. Leading and trailing slashes are ignored, i.e. `/my/directory/` is the same as `my/directory`. The * following files and folders are always excluded: node_modules, .git, .svn, .CVS, .hg, vendor, *.min.js. * * [--headers=<headers>] * : Array in JSON format of custom headers which will be added to the POT file. Defaults to empty array. * * [--skip-js] * : Skips JavaScript string extraction. Useful when this is done in another build step, e.g. through Babel. * * [--skip-php] * : Skips PHP string extraction. * * [--skip-block-json] * : Skips string extraction from block.json files. * * [--skip-audit] * : Skips string audit where it tries to find possible mistakes in translatable strings. Useful when running in an * automated environment. * * [--file-comment=<file-comment>] * : String that should be added as a comment to the top of the resulting POT file. * By default, a copyright comment is added for WordPress plugins and themes in the following manner: * * ``` * Copyright (C) 2018 Example Plugin Author * This file is distributed under the same license as the Example Plugin package. * ``` * * If a plugin or theme specifies a license in their main plugin file or stylesheet, the comment looks like * this: * * ``` * Copyright (C) 2018 Example Plugin Author * This file is distributed under the GPLv2. * ``` * * [--package-name=<name>] * : Name to use for package name in the resulting POT file's `Project-Id-Version` header. * Overrides plugin or theme name, if applicable. * * ## EXAMPLES * * # Create a POT file for the WordPress plugin/theme in the current directory * $ wp i18n make-pot . languages/my-plugin.pot * * # Create a POT file for the continents and cities list in WordPress core. * $ wp i18n make-pot . continents-and-cities.pot --include="wp-admin/includes/continents-cities.php" * --ignore-domain * * @when before_wp_load * * @throws WP_CLI\ExitException */ public function __invoke( $args, $assoc_args ) { $this->handle_arguments( $args, $assoc_args ); $translations = $this->extract_strings(); if ( ! $translations ) { WP_CLI::warning( 'No strings found' ); } $translations_count = count( $translations ); if ( 1 === $translations_count ) { WP_CLI::debug( sprintf( 'Extracted %d string', $translations_count ), 'make-pot' ); } else { WP_CLI::debug( sprintf( 'Extracted %d strings', $translations_count ), 'make-pot' ); } if ( ! PotGenerator::toFile( $translations, $this->destination ) ) { WP_CLI::error( 'Could not generate a POT file!' ); } WP_CLI::success( 'POT file successfully generated!' ); } /** * Process arguments from command-line in a reusable way. * * @throws WP_CLI\ExitException * * @param array $args Command arguments. * @param array $assoc_args Associative arguments. */ public function handle_arguments( $args, $assoc_args ) { $array_arguments = array( 'headers' ); $assoc_args = Utils\parse_shell_arrays( $assoc_args, $array_arguments ); $this->source = realpath( $args[0] ); $this->slug = Utils\get_flag_value( $assoc_args, 'slug', Utils\basename( $this->source ) ); $this->skip_js = Utils\get_flag_value( $assoc_args, 'skip-js', $this->skip_js ); $this->skip_php = Utils\get_flag_value( $assoc_args, 'skip-php', $this->skip_php ); $this->skip_block_json = Utils\get_flag_value( $assoc_args, 'skip-block-json', $this->skip_block_json ); $this->skip_audit = Utils\get_flag_value( $assoc_args, 'skip-audit', $this->skip_audit ); $this->headers = Utils\get_flag_value( $assoc_args, 'headers', $this->headers ); $this->file_comment = Utils\get_flag_value( $assoc_args, 'file-comment' ); $this->package_name = Utils\get_flag_value( $assoc_args, 'package-name' ); $ignore_domain = Utils\get_flag_value( $assoc_args, 'ignore-domain', false ); if ( ! $this->source || ! is_dir( $this->source ) ) { WP_CLI::error( 'Not a valid source directory!' ); } $this->main_file_data = $this->get_main_file_data(); if ( $ignore_domain ) { WP_CLI::debug( 'Extracting all strings regardless of text domain', 'make-pot' ); } if ( ! $ignore_domain ) { $this->domain = $this->slug; if ( ! empty( $this->main_file_data['Text Domain'] ) ) { $this->domain = $this->main_file_data['Text Domain']; } $this->domain = Utils\get_flag_value( $assoc_args, 'domain', $this->domain ); WP_CLI::debug( sprintf( 'Extracting all strings with text domain "%s"', $this->domain ), 'make-pot' ); } // Determine destination. $this->destination = "{$this->source}/{$this->slug}.pot"; if ( ! empty( $this->main_file_data['Domain Path'] ) ) { // Domain Path inside source folder. $this->destination = sprintf( '%s/%s/%s.pot', $this->source, $this->unslashit( $this->main_file_data['Domain Path'] ), $this->slug ); } if ( isset( $args[1] ) ) { $this->destination = $args[1]; } WP_CLI::debug( sprintf( 'Destination: %s', $this->destination ), 'make-pot' ); // Two is_dir() checks in case of a race condition. if ( ! is_dir( dirname( $this->destination ) ) && ! mkdir( dirname( $this->destination ), 0777, true ) && ! is_dir( dirname( $this->destination ) ) ) { WP_CLI::error( 'Could not create destination directory!' ); } if ( isset( $assoc_args['merge'] ) ) { if ( true === $assoc_args['merge'] ) { $this->merge = [ $this->destination ]; } elseif ( ! empty( $assoc_args['merge'] ) ) { $this->merge = explode( ',', $assoc_args['merge'] ); } $this->merge = array_filter( $this->merge, function ( $file ) { if ( ! file_exists( $file ) ) { WP_CLI::warning( sprintf( 'Invalid file provided to --merge: %s', $file ) ); return false; } return true; } ); if ( ! empty( $this->merge ) ) { WP_CLI::debug( sprintf( 'Merging with existing POT %s: %s', WP_CLI\Utils\pluralize( 'file', count( $this->merge ) ), implode( ',', $this->merge ) ), 'make-pot' ); } } $this->exceptions = new Translations(); if ( isset( $assoc_args['subtract'] ) ) { $exceptions = explode( ',', $assoc_args['subtract'] ); $exceptions = array_filter( $exceptions, function ( $exception ) { if ( ! file_exists( $exception ) ) { WP_CLI::warning( sprintf( 'Invalid file provided to --subtract: %s', $exception ) ); return false; } $exception_translations = new Translations(); Po::fromFile( $exception, $exception_translations ); $this->exceptions->mergeWith( $exception_translations ); return true; } ); if ( ! empty( $exceptions ) ) { WP_CLI::debug( sprintf( 'Ignoring any string already existing in: %s', implode( ',', $exceptions ) ), 'make-pot' ); } } if ( isset( $assoc_args['include'] ) ) { $this->include = array_filter( explode( ',', $assoc_args['include'] ) ); $this->include = array_map( [ $this, 'unslashit' ], $this->include ); $this->include = array_unique( $this->include ); WP_CLI::debug( sprintf( 'Only including the following files: %s', implode( ',', $this->include ) ), 'make-pot' ); } if ( isset( $assoc_args['exclude'] ) ) { $this->exclude = array_filter( array_merge( $this->exclude, explode( ',', $assoc_args['exclude'] ) ) ); $this->exclude = array_map( [ $this, 'unslashit' ], $this->exclude ); $this->exclude = array_unique( $this->exclude ); } WP_CLI::debug( sprintf( 'Excluding the following files: %s', implode( ',', $this->exclude ) ), 'make-pot' ); } /** * Removes leading and trailing slashes of a string. * * @param string $string What to add and remove slashes from. * @return string String without leading and trailing slashes. */ protected function unslashit( $string ) { return ltrim( rtrim( trim( $string ), '/\\' ), '/\\' ); } /** * Retrieves the main file data of the plugin or theme. * * @return array */ protected function get_main_file_data() { $files = new IteratorIterator( new DirectoryIterator( $this->source ) ); /** @var DirectoryIterator $file */ foreach ( $files as $file ) { // wp-content/themes/my-theme/style.css if ( $file->isFile() && 'style' === $file->getBasename( '.css' ) && $file->isReadable() ) { $theme_data = static::get_file_data( $file->getRealPath(), array_combine( $this->get_file_headers( 'theme' ), $this->get_file_headers( 'theme' ) ) ); // Stop when it contains a valid Theme Name header. if ( ! empty( $theme_data['Theme Name'] ) ) { WP_CLI::log( 'Theme stylesheet detected.' ); WP_CLI::debug( sprintf( 'Theme stylesheet: %s', $file->getRealPath() ), 'make-pot' ); $this->project_type = 'theme'; return $theme_data; } } // wp-content/themes/my-themes/theme-a/style.css if ( $file->isDir() && ! $file->isDot() && is_readable( $file->getRealPath() . '/style.css' ) ) { $theme_data = static::get_file_data( $file->getRealPath() . '/style.css', array_combine( $this->get_file_headers( 'theme' ), $this->get_file_headers( 'theme' ) ) ); // Stop when it contains a valid Theme Name header. if ( ! empty( $theme_data['Theme Name'] ) ) { WP_CLI::log( 'Theme stylesheet detected.' ); WP_CLI::debug( sprintf( 'Theme stylesheet: %s', $file->getRealPath() . '/style.css' ), 'make-pot' ); $this->project_type = 'theme'; return $theme_data; } } // wp-content/plugins/my-plugin/my-plugin.php if ( $file->isFile() && $file->isReadable() && 'php' === $file->getExtension() ) { $plugin_data = static::get_file_data( $file->getRealPath(), array_combine( $this->get_file_headers( 'plugin' ), $this->get_file_headers( 'plugin' ) ) ); // Stop when we find a file with a valid Plugin Name header. if ( ! empty( $plugin_data['Plugin Name'] ) ) { WP_CLI::log( 'Plugin file detected.' ); WP_CLI::debug( sprintf( 'Plugin file: %s', $file->getRealPath() ), 'make-pot' ); $this->project_type = 'plugin'; return $plugin_data; } } } WP_CLI::debug( 'No valid theme stylesheet or plugin file found, treating as a regular project.', 'make-pot' ); return []; } /** * Returns the file headers for themes and plugins. * * @param string $type Source type, either theme or plugin. * * @return array List of file headers. */ protected function get_file_headers( $type ) { switch ( $type ) { case 'plugin': return [ 'Plugin Name', 'Plugin URI', 'Description', 'Author', 'Author URI', 'Version', 'License', 'Domain Path', 'Text Domain', ]; case 'theme': return [ 'Theme Name', 'Theme URI', 'Description', 'Author', 'Author URI', 'Version', 'License', 'Domain Path', 'Text Domain', ]; default: return []; } } /** * Creates a POT file and stores it on disk. * * @throws WP_CLI\ExitException * * @return Translations A Translation set. */ protected function extract_strings() { $translations = new Translations(); // Add existing strings first but don't keep headers. if ( ! empty( $this->merge ) ) { $existing_translations = new Translations(); Po::fromFile( $this->merge, $existing_translations ); $translations->mergeWith( $existing_translations, Merge::ADD | Merge::REMOVE ); } PotGenerator::setCommentBeforeHeaders( $this->get_file_comment() ); $this->set_default_headers( $translations ); // POT files have no Language header. $translations->deleteHeader( Translations::HEADER_LANGUAGE ); // Only relevant for PO files, not POT files. $translations->setHeader( 'PO-Revision-Date', 'YEAR-MO-DA HO:MI+ZONE' ); if ( $this->domain ) { $translations->setDomain( $this->domain ); } unset( $this->main_file_data['Version'], $this->main_file_data['License'], $this->main_file_data['Domain Path'], $this->main_file_data['Text Domain'] ); // Set entries from main file data. foreach ( $this->main_file_data as $header => $data ) { if ( empty( $data ) ) { continue; } $translation = new Translation( '', $data ); if ( isset( $this->main_file_data['Theme Name'] ) ) { $translation->addExtractedComment( sprintf( '%s of the theme', $header ) ); } else { $translation->addExtractedComment( sprintf( '%s of the plugin', $header ) ); } $translations[] = $translation; } try { if ( ! $this->skip_php ) { $options = [ // Extract 'Template Name' headers in theme files. 'wpExtractTemplates' => isset( $this->main_file_data['Theme Name'] ), 'include' => $this->include, 'exclude' => $this->exclude, 'extensions' => [ 'php' ], ]; PhpCodeExtractor::fromDirectory( $this->source, $translations, $options ); } if ( ! $this->skip_js ) { JsCodeExtractor::fromDirectory( $this->source, $translations, [ 'include' => $this->include, 'exclude' => $this->exclude, 'extensions' => [ 'js', 'jsx' ], ] ); MapCodeExtractor::fromDirectory( $this->source, $translations, [ 'include' => $this->include, 'exclude' => $this->exclude, 'extensions' => [ 'map' ], ] ); } if ( ! $this->skip_block_json ) { BlockExtractor::fromDirectory( $this->source, $translations, [ // Only look for block.json files, nothing else. 'restrictFileNames' => [ 'block.json' ], 'include' => $this->include, 'exclude' => $this->exclude, 'extensions' => [ 'json' ], ] ); } } catch ( \Exception $e ) { WP_CLI::error( $e->getMessage() ); } foreach ( $this->exceptions as $translation ) { if ( $translations->find( $translation ) ) { unset( $translations[ $translation->getId() ] ); } } if ( ! $this->skip_audit ) { $this->audit_strings( $translations ); } return $translations; } /** * Audits strings. * * Goes through all extracted strings to find possible mistakes. * * @param Translations $translations Translations object. */ protected function audit_strings( $translations ) { foreach ( $translations as $translation ) { /** @var Translation $translation */ $references = $translation->getReferences(); // File headers don't have any file references. $location = $translation->hasReferences() ? '(' . implode( ':', array_shift( $references ) ) . ')' : ''; // Check 1: Flag strings with placeholders that should have translator comments. if ( ! $translation->hasExtractedComments() && preg_match( self::SPRINTF_PLACEHOLDER_REGEX, $translation->getOriginal(), $placeholders ) >= 1 ) { $message = sprintf( 'The string "%1$s" contains placeholders but has no "translators:" comment to clarify their meaning. %2$s', $translation->getOriginal(), $location ); WP_CLI::warning( $message ); } // Check 2: Flag strings with different translator comments. if ( $translation->hasExtractedComments() ) { $comments = $translation->getExtractedComments(); // Remove plugin header information from comments. $comments = array_filter( $comments, function ( $comment ) { /** @var string $comment */ /** @var string $file_header */ foreach ( $this->get_file_headers( $this->project_type ) as $file_header ) { if ( 0 === strpos( $comment, $file_header ) ) { return null; } } return $comment; } ); $comments_count = count( $comments ); if ( $comments_count > 1 ) { $message = sprintf( 'The string "%1$s" has %2$d different translator comments. %3$s', $translation->getOriginal(), $comments_count, $location ); WP_CLI::warning( $message ); } } $non_placeholder_content = trim( preg_replace( '`^([\'"])(.*)\1$`Ds', '$2', $translation->getOriginal() ) ); $non_placeholder_content = preg_replace( self::SPRINTF_PLACEHOLDER_REGEX, '', $non_placeholder_content ); // Check 3: Flag empty strings without any translatable content. if ( '' === $non_placeholder_content ) { $message = sprintf( 'Found string without translatable content. %s', $location ); WP_CLI::warning( $message ); } // Check 4: Flag strings with multiple unordered placeholders (%s %s %s vs. %1$s %2$s %3$s). $unordered_matches_count = preg_match_all( self::UNORDERED_SPRINTF_PLACEHOLDER_REGEX, $translation->getOriginal(), $unordered_matches ); $unordered_matches = $unordered_matches[0]; if ( $unordered_matches_count >= 2 ) { $message = sprintf( 'Multiple placeholders should be ordered. %s', $location ); WP_CLI::warning( $message ); } if ( $translation->hasPlural() ) { preg_match_all( self::SPRINTF_PLACEHOLDER_REGEX, $translation->getOriginal(), $single_placeholders ); $single_placeholders = $single_placeholders[0]; preg_match_all( self::SPRINTF_PLACEHOLDER_REGEX, $translation->getPlural(), $plural_placeholders ); $plural_placeholders = $plural_placeholders[0]; // see https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#plurals if ( count( $single_placeholders ) < count( $plural_placeholders ) ) { // Check 5: Flag things like _n( 'One comment', '%s Comments' ) $message = sprintf( 'Missing singular placeholder, needed for some languages. See https://developer.wordpress.org/plugins/internationalization/how-to-internationalize-your-plugin/#plurals %s', $location ); WP_CLI::warning( $message ); } else { // Reordering is fine, but mismatched placeholders is probably wrong. sort( $single_placeholders ); sort( $plural_placeholders ); // Check 6: Flag things like _n( '%s Comment (%d)', '%s Comments (%s)' ) if ( $single_placeholders !== $plural_placeholders ) { $message = sprintf( 'Mismatched placeholders for singular and plural string. %s', $location ); WP_CLI::warning( $message ); } } } } } /** * Returns the copyright comment for the given package. * * @return string File comment. */ protected function get_file_comment() { if ( '' === $this->file_comment ) { return ''; } if ( isset( $this->file_comment ) ) { return implode( "\n", explode( '\n', $this->file_comment ) ); } if ( isset( $this->main_file_data['Theme Name'] ) ) { if ( isset( $this->main_file_data['License'] ) ) { return sprintf( "Copyright (C) %1\$s %2\$s\nThis file is distributed under the %3\$s.", date( 'Y' ), // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $this->main_file_data['Author'], $this->main_file_data['License'] ); } return sprintf( "Copyright (C) %1\$s %2\$s\nThis file is distributed under the same license as the %3\$s theme.", date( 'Y' ), // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $this->main_file_data['Author'], $this->main_file_data['Theme Name'] ); } if ( isset( $this->main_file_data['Plugin Name'] ) ) { if ( isset( $this->main_file_data['License'] ) && ! empty( $this->main_file_data['License'] ) ) { return sprintf( "Copyright (C) %1\$s %2\$s\nThis file is distributed under the %3\$s.", date( 'Y' ), // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $this->main_file_data['Author'], $this->main_file_data['License'] ); } return sprintf( "Copyright (C) %1\$s %2\$s\nThis file is distributed under the same license as the %3\$s plugin.", date( 'Y' ), // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $this->main_file_data['Author'], $this->main_file_data['Plugin Name'] ); } return ''; } /** * Sets default POT file headers for the project. * * @param Translations $translations Translations object. */ protected function set_default_headers( $translations ) { $name = null; $version = $this->get_wp_version(); $bugs_address = null; if ( ! $version && isset( $this->main_file_data['Version'] ) ) { $version = $this->main_file_data['Version']; } if ( isset( $this->main_file_data['Theme Name'] ) ) { $name = $this->main_file_data['Theme Name']; $bugs_address = sprintf( 'https://wordpress.org/support/theme/%s', $this->slug ); } elseif ( isset( $this->main_file_data['Plugin Name'] ) ) { $name = $this->main_file_data['Plugin Name']; $bugs_address = sprintf( 'https://wordpress.org/support/plugin/%s', $this->slug ); } if ( null !== $this->package_name ) { $name = $this->package_name; } if ( null !== $name ) { $translations->setHeader( 'Project-Id-Version', $name . ( $version ? ' ' . $version : '' ) ); } if ( null !== $bugs_address ) { $translations->setHeader( 'Report-Msgid-Bugs-To', $bugs_address ); } $translations->setHeader( 'Last-Translator', 'FULL NAME <EMAIL@ADDRESS>' ); $translations->setHeader( 'Language-Team', 'LANGUAGE <LL@li.org>' ); $translations->setHeader( 'X-Generator', 'WP-CLI ' . WP_CLI_VERSION ); foreach ( $this->headers as $key => $value ) { $translations->setHeader( $key, $value ); } } /** * Extracts the WordPress version number from wp-includes/version.php. * * @return string|false Version number on success, false otherwise. */ protected function get_wp_version() { $version_php = $this->source . '/wp-includes/version.php'; if ( ! file_exists( $version_php ) || ! is_readable( $version_php ) ) { return false; } return preg_match( '/\$wp_version\s*=\s*\'(.*?)\';/', file_get_contents( $version_php ), $matches ) ? $matches[1] : false; } /** * Retrieves metadata from a file. * * Searches for metadata in the first 8kiB of a file, such as a plugin or theme. * Each piece of metadata must be on its own line. Fields can not span multiple * lines, the value will get cut at the end of the first line. * * If the file data is not within that first 8kiB, then the author should correct * their plugin file and move the data headers to the top. * * @see get_file_data() * * @param string $file Path to the file. * @param array $headers List of headers, in the format array('HeaderKey' => 'Header Name'). * * @return array Array of file headers in `HeaderKey => Header Value` format. */ protected static function get_file_data( $file, $headers ) { // We don't need to write to the file, so just open for reading. $fp = fopen( $file, 'rb' ); // Pull only the first 8kiB of the file in. $file_data = fread( $fp, 8192 ); // PHP will close file handle, but we are good citizens. fclose( $fp ); // Make sure we catch CR-only line endings. $file_data = str_replace( "\r", "\n", $file_data ); return static::get_file_data_from_string( $file_data, $headers ); } /** * Retrieves metadata from a string. * * @param string $string String to look for metadata in. * @param array $headers List of headers. * * @return array Array of file headers in `HeaderKey => Header Value` format. */ public static function get_file_data_from_string( $string, $headers ) { foreach ( $headers as $field => $regex ) { if ( preg_match( '/^[ \t\/*#@]*' . preg_quote( $regex, '/' ) . ':(.*)$/mi', $string, $match ) && $match[1] ) { $headers[ $field ] = static::_cleanup_header_comment( $match[1] ); } else { $headers[ $field ] = ''; } } return $headers; } /** * Strip close comment and close php tags from file headers used by WP. * * @see _cleanup_header_comment() * * @param string $str Header comment to clean up. * * @return string */ protected static function _cleanup_header_comment( $str ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Not changing because third-party commands might use/extend. return trim( preg_replace( '/\s*(?:\*\/|\?>).*/', '', $str ) ); } } <?php namespace WP_CLI\I18n; use Gettext\Utils\PhpFunctionsScanner as GettextPhpFunctionsScanner; class PhpFunctionsScanner extends GettextPhpFunctionsScanner { /** * {@inheritdoc} */ public function saveGettextFunctions( $translations, array $options ) { // Ignore multiple translations for now. // @todo Add proper support for multiple translations. if ( is_array( $translations ) ) { $translations = $translations[0]; } $functions = $options['functions']; $file = $options['file']; foreach ( $this->getFunctions( $options['constants'] ) as $function ) { list( $name, $line, $args ) = $function; if ( ! isset( $functions[ $name ] ) ) { continue; } $original = null; $domain = null; $context = null; $plural = null; switch ( $functions[ $name ] ) { case 'text_domain': case 'gettext': list( $original, $domain ) = array_pad( $args, 2, null ); break; case 'text_context_domain': list( $original, $context, $domain ) = array_pad( $args, 3, null ); break; case 'single_plural_number_domain': list( $original, $plural, $number, $domain ) = array_pad( $args, 4, null ); break; case 'single_plural_number_context_domain': list( $original, $plural, $number, $context, $domain ) = array_pad( $args, 5, null ); break; case 'single_plural_domain': list( $original, $plural, $domain ) = array_pad( $args, 3, null ); break; case 'single_plural_context_domain': list( $original, $plural, $context, $domain ) = array_pad( $args, 4, null ); break; default: // Should never happen. \WP_CLI::error( sprintf( "Internal error: unknown function map '%s' for '%s'.", $functions[ $name ], $name ) ); } if ( '' === (string) $original ) { continue; } if ( $domain !== $translations->getDomain() && null !== $translations->getDomain() ) { continue; } $translation = $translations->insert( $context, $original, $plural ); $translation = $translation->addReference( $file, $line ); if ( isset( $function[3] ) ) { foreach ( $function[3] as $extracted_comment ) { $translation = $translation->addExtractedComment( $extracted_comment ); } } } } } <?php namespace WP_CLI\I18n; use Gettext\Extractors\JsCode; use Gettext\Translations; use Peast\Syntax\Exception as PeastException; use WP_CLI; final class MapCodeExtractor extends JsCode { use IterableCodeExtractor; public static $options = [ 'extractComments' => [ 'translators', 'Translators' ], 'constants' => [], 'functions' => [ '__' => 'text_domain', '_x' => 'text_context_domain', '_n' => 'single_plural_number_domain', '_nx' => 'single_plural_number_context_domain', ], ]; /** * {@inheritdoc} */ public static function fromString( $string, Translations $translations, array $options = [] ) { if ( ! array_key_exists( 'file', $options ) || substr( $options['file'], -7 ) !== '.js.map' ) { return; } $options['file'] = substr( $options['file'], 0, -7 ) . '.js'; try { $options += static::$options; $map_object = json_decode( $string ); if ( ! isset( $map_object->sourcesContent ) || ! is_array( $map_object->sourcesContent ) ) { return; } $string = implode( "\n", $map_object->sourcesContent ); WP_CLI::debug( "Parsing file {$options['file']}", 'make-pot' ); $functions = new JsFunctionsScanner( $string ); $functions->enableCommentsExtraction( $options['extractComments'] ); $functions->saveGettextFunctions( $translations, $options ); } catch ( PeastException $e ) { WP_CLI::debug( sprintf( 'Could not parse file %1$s.map: %2$s (line %3$d, column %4$d in the concatenated sourcesContent)', $options['file'], $e->getMessage(), $e->getPosition()->getLine(), $e->getPosition()->getColumn() ), 'make-pot' ); } } } <?php namespace WP_CLI\I18n; use Gettext\Utils\JsFunctionsScanner as GettextJsFunctionsScanner; use Gettext\Utils\ParsedComment; use Peast\Peast; use Peast\Syntax\Node; use Peast\Traverser; final class JsFunctionsScanner extends GettextJsFunctionsScanner { /** * If not false, comments will be extracted. * * @var string|false|array */ private $extract_comments = false; /** * Enable extracting comments that start with a tag (if $tag is empty all the comments will be extracted). * * @param mixed $tag */ public function enableCommentsExtraction( $tag = '' ) { $this->extract_comments = $tag; } /** * Disable comments extraction. */ public function disableCommentsExtraction() { $this->extract_comments = false; } /** * {@inheritdoc} */ public function saveGettextFunctions( $translations, array $options ) { // Ignore multiple translations for now. // @todo Add proper support for multiple translations. if ( is_array( $translations ) ) { $translations = $translations[0]; } $code = $this->code; // See https://github.com/mck89/peast/issues/7 // Temporary workaround to fix dynamic imports. The τ is a greek letter. // This will trick the parser into thinking that it is a normal method call. $code = preg_replace( '/import(\\s*\\()/', 'imporτ$1', $code ); $peast_options = [ 'sourceType' => Peast::SOURCE_TYPE_MODULE, 'comments' => false !== $this->extract_comments, 'jsx' => true, ]; $ast = Peast::latest( $code, $peast_options )->parse(); $traverser = new Traverser(); $all_comments = []; /** * Traverse through JS code to find and extract gettext functions. * * Make sure translator comments in front of variable declarations * and inside nested call expressions are available when parsing the function call. */ $traverser->addFunction( function ( $node ) use ( &$translations, $options, &$all_comments ) { $functions = $options['functions']; $file = $options['file']; /** @var Node\Node $node */ foreach ( $node->getLeadingComments() as $comment ) { $all_comments[] = $comment; } /** @var Node\CallExpression $node */ if ( 'CallExpression' !== $node->getType() ) { return; } $callee = $this->resolveExpressionCallee( $node ); if ( ! $callee || ! isset( $functions[ $callee['name'] ] ) ) { return; } /** @var Node\CallExpression $node */ foreach ( $node->getArguments() as $argument ) { // Support nested function calls. $argument->setLeadingComments( $argument->getLeadingComments() + $node->getLeadingComments() ); } foreach ( $callee['comments'] as $comment ) { $all_comments[] = $comment; } $domain = null; $original = null; $context = null; $plural = null; $args = []; /** @var Node\Node $argument */ foreach ( $node->getArguments() as $argument ) { foreach ( $argument->getLeadingComments() as $comment ) { $all_comments[] = $comment; } if ( 'Identifier' === $argument->getType() ) { $args[] = ''; // The value doesn't matter as it's unused. } if ( 'Literal' === $argument->getType() ) { /** @var Node\Literal $argument */ $args[] = $argument->getValue(); } } switch ( $functions[ $callee['name'] ] ) { case 'text_domain': case 'gettext': list( $original, $domain ) = array_pad( $args, 2, null ); break; case 'text_context_domain': list( $original, $context, $domain ) = array_pad( $args, 3, null ); break; case 'single_plural_number_domain': list( $original, $plural, $number, $domain ) = array_pad( $args, 4, null ); break; case 'single_plural_number_context_domain': list( $original, $plural, $number, $context, $domain ) = array_pad( $args, 5, null ); break; } if ( '' === (string) $original ) { return; } if ( $domain !== $translations->getDomain() && null !== $translations->getDomain() ) { return; } if ( isset( $options['line'] ) ) { $line = $options['line']; } else { $line = $node->getLocation()->getStart()->getLine(); } $translation = $translations->insert( $context, $original, $plural ); $translation->addReference( $file, $line ); /** @var Node\Comment $comment */ foreach ( $all_comments as $comment ) { // Comments should be before the translation. if ( ! $this->commentPrecedesNode( $comment, $node ) ) { continue; } $parsed_comment = ParsedComment::create( $comment->getRawText(), $comment->getLocation()->getStart()->getLine() ); $prefixes = array_filter( (array) $this->extract_comments ); if ( $parsed_comment->checkPrefixes( $prefixes ) ) { $translation->addExtractedComment( $parsed_comment->getComment() ); } } if ( isset( $parsed_comment ) ) { $all_comments = []; } } ); /** * Traverse through JS code contained within eval() to find and extract gettext functions. */ $scanner = $this; $traverser->addFunction( function ( $node ) use ( &$translations, $options, $scanner ) { /** @var Node\CallExpression $node */ if ( 'CallExpression' !== $node->getType() ) { return; } $callee = $this->resolveExpressionCallee( $node ); if ( ! $callee || 'eval' !== $callee['name'] ) { return; } $eval_contents = ''; /** @var Node\Node $argument */ foreach ( $node->getArguments() as $argument ) { if ( 'Literal' === $argument->getType() ) { /** @var Node\Literal $argument */ $eval_contents = $argument->getValue(); break; } } if ( ! $eval_contents ) { return; } // Override the line location to be that of the eval(). $options['line'] = $node->getLocation()->getStart()->getLine(); $class = get_class( $scanner ); $evals = new $class( $eval_contents ); $evals->enableCommentsExtraction( $options['extractComments'] ); $evals->saveGettextFunctions( $translations, $options ); } ); $traverser->traverse( $ast ); } /** * Resolve the callee of a call expression using known formats. * * @param Node\CallExpression $node The call expression whose callee to resolve. * * @return array|bool Array containing the name and comments of the identifier if resolved. False if not. */ private function resolveExpressionCallee( Node\CallExpression $node ) { $callee = $node->getCallee(); // If the callee is a simple identifier it can simply be returned. // For example: __( "translation" ). if ( 'Identifier' === $callee->getType() ) { return [ 'name' => $callee->getName(), 'comments' => $callee->getLeadingComments(), ]; } // If the callee is a member expression resolve it to the property. // For example: wp.i18n.__( "translation" ) or u.__( "translation" ). if ( 'MemberExpression' === $callee->getType() && 'Identifier' === $callee->getProperty()->getType() ) { // Make sure to unpack wp.i18n which is a nested MemberExpression. $comments = 'MemberExpression' === $callee->getObject()->getType() ? $callee->getObject()->getObject()->getLeadingComments() : $callee->getObject()->getLeadingComments(); return [ 'name' => $callee->getProperty()->getName(), 'comments' => $comments, ]; } // If the callee is a call expression as created by Webpack resolve it. // For example: Object(u.__)( "translation" ). if ( 'CallExpression' === $callee->getType() && 'Identifier' === $callee->getCallee()->getType() && 'Object' === $callee->getCallee()->getName() && [] !== $callee->getArguments() && 'MemberExpression' === $callee->getArguments()[0]->getType() ) { $property = $callee->getArguments()[0]->getProperty(); // Matches minified webpack statements: Object(u.__)( "translation" ). if ( 'Identifier' === $property->getType() ) { return [ 'name' => $property->getName(), 'comments' => $callee->getCallee()->getLeadingComments(), ]; } // Matches unminified webpack statements: // Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_7__["__"])( "translation" ); if ( 'Literal' === $property->getType() ) { $name = $property->getValue(); // Matches mangled webpack statement: // Object(_wordpress_i18n__WEBPACK_IMPORTED_MODULE_7__[/* __ */ "a"])( "translation" ); $leading_property_comments = $property->getLeadingComments(); if ( count( $leading_property_comments ) === 1 && $leading_property_comments[0]->getKind() === 'multiline' ) { $name = trim( $leading_property_comments[0]->getText() ); } return [ 'name' => $name, 'comments' => $callee->getCallee()->getLeadingComments(), ]; } } // If the callee is an indirect function call as created by babel, resolve it. // For example: `(0, u.__)( "translation" )`. if ( 'ParenthesizedExpression' === $callee->getType() && 'SequenceExpression' === $callee->getExpression()->getType() && 2 === count( $callee->getExpression()->getExpressions() ) && 'Literal' === $callee->getExpression()->getExpressions()[0]->getType() && [] !== $node->getArguments() ) { // Matches any general indirect function call: `(0, __)( "translation" )`. if ( 'Identifier' === $callee->getExpression()->getExpressions()[1]->getType() ) { return [ 'name' => $callee->getExpression()->getExpressions()[1]->getName(), 'comments' => $callee->getLeadingComments(), ]; } // Matches indirect function calls used by babel for module imports: `(0, _i18n.__)( "translation" )`. if ( 'MemberExpression' === $callee->getExpression()->getExpressions()[1]->getType() ) { $property = $callee->getExpression()->getExpressions()[1]->getProperty(); if ( 'Identifier' === $property->getType() ) { return [ 'name' => $property->getName(), 'comments' => $callee->getLeadingComments(), ]; } } } // Unknown format. return false; } /** * Returns wether or not a comment precedes a node. * The comment must be before the node and on the same line or the one before. * * @param Node\Comment $comment The comment. * @param Node\Node $node The node. * * @return bool Whether or not the comment precedes the node. */ private function commentPrecedesNode( Node\Comment $comment, Node\Node $node ) { // Comments should be on the same or an earlier line than the translation. if ( $node->getLocation()->getStart()->getLine() - $comment->getLocation()->getEnd()->getLine() > 1 ) { return false; } // Comments on the same line should be before the translation. if ( $node->getLocation()->getStart()->getLine() === $comment->getLocation()->getEnd()->getLine() && $node->getLocation()->getStart()->getColumn() < $comment->getLocation()->getStart()->getColumn() ) { return false; } return true; } } <?php namespace WP_CLI\I18n; use Gettext\Generators\Po as PoGenerator; use Gettext\Translations; /** * POT file generator. * * The only difference to the existing PO file generator is that this * adds some comments at the very beginning of the file. */ class PotGenerator extends PoGenerator { protected static $comments_before_headers = []; /** * Text to include as a comment before the start of the PO contents * * Doesn't need to include # in the beginning of lines, these are added automatically. * * @param string $comment File comment. */ public static function setCommentBeforeHeaders( $comment ) { $comments = explode( "\n", $comment ); foreach ( $comments as $line ) { if ( '' !== trim( $line ) ) { static::$comments_before_headers[] = '# ' . $line; } } } /** * {@parentDoc}. */ public static function toString( Translations $translations, array $options = [] ) { $lines = static::$comments_before_headers; $lines[] = 'msgid ""'; $lines[] = 'msgstr ""'; $plural_form = $translations->getPluralForms(); $plural_size = is_array( $plural_form ) ? ( $plural_form[0] - 1 ) : 1; foreach ( $translations->getHeaders() as $name => $value ) { $lines[] = sprintf( '"%s: %s\\n"', $name, $value ); } $lines[] = ''; foreach ( $translations as $translation ) { /** @var \Gettext\Translation $translation */ if ( $translation->hasComments() ) { foreach ( $translation->getComments() as $comment ) { $lines[] = '# ' . $comment; } } if ( $translation->hasExtractedComments() ) { foreach ( $translation->getExtractedComments() as $comment ) { $lines[] = '#. ' . $comment; } } foreach ( $translation->getReferences() as $reference ) { $lines[] = '#: ' . $reference[0] . ( null !== $reference[1] ? ':' . $reference[1] : '' ); } if ( $translation->hasFlags() ) { $lines[] = '#, ' . implode( ',', $translation->getFlags() ); } $prefix = $translation->isDisabled() ? '#~ ' : ''; if ( $translation->hasContext() ) { $lines[] = $prefix . 'msgctxt ' . self::convertString( $translation->getContext() ); } self::addLines( $lines, $prefix . 'msgid', $translation->getOriginal() ); if ( $translation->hasPlural() ) { self::addLines( $lines, $prefix . 'msgid_plural', $translation->getPlural() ); for ( $i = 0; $i <= $plural_size; $i ++ ) { self::addLines( $lines, $prefix . 'msgstr[' . $i . ']', '' ); } } else { self::addLines( $lines, $prefix . 'msgstr', $translation->getTranslation() ); } $lines[] = ''; } return implode( "\n", $lines ); } /** * Escapes and adds double quotes to a string. * * @param string $string Multiline string. * * @return string[] */ protected static function multilineQuote( $string ) { $lines = explode( "\n", $string ); $last = count( $lines ) - 1; foreach ( $lines as $k => $line ) { if ( $k === $last ) { $lines[ $k ] = self::convertString( $line ); } else { $lines[ $k ] = self::convertString( $line . "\n" ); } } return $lines; } /** * Add one or more lines depending whether the string is multiline or not. * * @param array &$lines Array lines should be added to. * @param string $name Name of the line, e.g. msgstr or msgid_plural. * @param string $value The line to add. */ protected static function addLines( array &$lines, $name, $value ) { $newlines = self::multilineQuote( $value ); if ( count( $newlines ) === 1 ) { $lines[] = $name . ' ' . $newlines[0]; } else { $lines[] = $name . ' ""'; foreach ( $newlines as $line ) { $lines[] = $line; } } } } <?php namespace WP_CLI\I18n; use Gettext\Extractors\Extractor; use Gettext\Extractors\ExtractorInterface; use Gettext\Translations; use WP_CLI; final class BlockExtractor extends Extractor implements ExtractorInterface { use IterableCodeExtractor; /** * @inheritdoc */ public static function fromString( $string, Translations $translations, array $options = [] ) { $file = $options['file']; WP_CLI::debug( "Parsing file {$file}", 'make-pot' ); $file_data = json_decode( $string, true ); if ( null === $file_data ) { WP_CLI::debug( sprintf( 'Could not parse file %1$s: error code %2$s', $file, json_last_error() ), 'make-pot' ); return; } $domain = isset( $file_data['textdomain'] ) ? $file_data['textdomain'] : null; // Allow missing domain, but skip if they don't match. if ( null !== $domain && $domain !== $translations->getDomain() ) { return; } foreach ( $file_data as $key => $original ) { switch ( $key ) { case 'title': case 'description': $translation = $translations->insert( sprintf( 'block %s', $key ), $original ); $translation->addReference( $file ); break; case 'keywords': if ( ! is_array( $original ) ) { continue 2; } foreach ( $original as $msg ) { $translation = $translations->insert( 'block keyword', $msg ); $translation->addReference( $file ); } break; case 'styles': if ( ! is_array( $original ) ) { continue 2; } foreach ( $original as $msg ) { $translation = $translations->insert( 'block style label', $msg['label'] ); $translation->addReference( $file ); } } } } } <?php namespace WP_CLI\I18n; use Gettext\Extractors\Po as PoExtractor; use Gettext\Generators\Po as PoGenerator; use Gettext\Translation; use Gettext\Translations; use WP_CLI; use WP_CLI_Command; use WP_CLI\Utils; use DirectoryIterator; use IteratorIterator; use SplFileInfo; class MakeJsonCommand extends WP_CLI_Command { /** * Options passed to json_encode(). * * @var int JSON options. */ protected $json_options = 0; /** * Extract JavaScript strings from PO files and add them to individual JSON files. * * For JavaScript internationalization purposes, WordPress requires translations to be split up into * one Jed-formatted JSON file per JavaScript source file. * * See https://make.wordpress.org/core/2018/11/09/new-javascript-i18n-support-in-wordpress/ to learn more * about WordPress JavaScript internationalization. * * ## OPTIONS * * <source> * : Path to an existing PO file or a directory containing multiple PO files. * * [<destination>] * : Path to the destination directory for the resulting JSON files. Defaults to the source directory. * * [--purge] * : Whether to purge the strings that were extracted from the original source file. Defaults to true, use `--no-purge` to skip the removal. * * [--pretty-print] * : Pretty-print resulting JSON files. * * ## EXAMPLES * * # Create JSON files for all PO files in the languages directory * $ wp i18n make-json languages * * # Create JSON files for my-plugin-de_DE.po and leave the PO file untouched. * $ wp i18n make-json my-plugin-de_DE.po /tmp --no-purge * * @when before_wp_load * * @throws WP_CLI\ExitException */ public function __invoke( $args, $assoc_args ) { $purge = Utils\get_flag_value( $assoc_args, 'purge', true ); if ( Utils\get_flag_value( $assoc_args, 'pretty-print', false ) ) { $this->json_options |= JSON_PRETTY_PRINT; } $source = realpath( $args[0] ); if ( ! $source || ( ! is_file( $source ) && ! is_dir( $source ) ) ) { WP_CLI::error( 'Source file or directory does not exist!' ); } $destination = is_file( $source ) ? dirname( $source ) : $source; if ( isset( $args[1] ) ) { $destination = $args[1]; } // Two is_dir() checks in case of a race condition. if ( ! is_dir( $destination ) && ! mkdir( $destination, 0777, true ) && ! is_dir( $destination ) ) { WP_CLI::error( 'Could not create destination directory!' ); } $result_count = 0; if ( is_file( $source ) ) { $files = [ new SplFileInfo( $source ) ]; } else { $files = new IteratorIterator( new DirectoryIterator( $source ) ); } /** @var DirectoryIterator $file */ foreach ( $files as $file ) { if ( $file->isFile() && $file->isReadable() && 'po' === $file->getExtension() ) { $result = $this->make_json( $file->getRealPath(), $destination ); $result_count += count( $result ); if ( $purge ) { $removed = $this->remove_js_strings_from_po_file( $file->getRealPath() ); if ( ! $removed ) { WP_CLI::warning( sprintf( 'Could not update file %s', basename( $source ) ) ); } } } } WP_CLI::success( sprintf( 'Created %d %s.', $result_count, Utils\pluralize( 'file', $result_count ) ) ); } /** * Splits a single PO file into multiple JSON files. * * @param string $source_file Path to the source file. * @param string $destination Path to the destination directory. * @return array List of created JSON files. */ protected function make_json( $source_file, $destination ) { /** @var Translations[] $mapping */ $mapping = []; $translations = new Translations(); $result = []; PoExtractor::fromFile( $source_file, $translations ); $base_file_name = basename( $source_file, '.po' ); foreach ( $translations as $index => $translation ) { /** @var Translation $translation */ // Find all unique sources this translation originates from. $sources = array_map( function ( $reference ) { $file = $reference[0]; if ( substr( $file, - 7 ) === '.min.js' ) { return substr( $file, 0, - 7 ) . '.js'; } if ( substr( $file, - 3 ) === '.js' ) { return $file; } return null; }, $translation->getReferences() ); $sources = array_unique( array_filter( $sources ) ); foreach ( $sources as $source ) { if ( ! isset( $mapping[ $source ] ) ) { $mapping[ $source ] = new Translations(); // phpcs:ignore Squiz.PHP.CommentedOutCode.Found -- Provide code that is meant to be used once the bug is fixed. // See https://core.trac.wordpress.org/ticket/45441 // $mapping[ $source ]->setDomain( $translations->getDomain() ); $mapping[ $source ]->setHeader( 'Language', $translations->getLanguage() ); $mapping[ $source ]->setHeader( 'PO-Revision-Date', $translations->getHeader( 'PO-Revision-Date' ) ); $plural_forms = $translations->getPluralForms(); if ( $plural_forms ) { list( $count, $rule ) = $plural_forms; $mapping[ $source ]->setPluralForms( $count, $rule ); } } $mapping[ $source ][] = $translation; } } $result += $this->build_json_files( $mapping, $base_file_name, $destination ); return $result; } /** * Builds a mapping of JS file names to translation entries. * * Exports translations for each JS file to a separate translation file. * * @param array $mapping A mapping of files to translation entries. * @param string $base_file_name Base file name for JSON files. * @param string $destination Path to the destination directory. * * @return array List of created JSON files. */ protected function build_json_files( $mapping, $base_file_name, $destination ) { $result = []; foreach ( $mapping as $file => $translations ) { /** @var Translations $translations */ $hash = md5( $file ); $destination_file = "${destination}/{$base_file_name}-{$hash}.json"; $success = JedGenerator::toFile( $translations, $destination_file, [ 'json' => $this->json_options, 'source' => $file, ] ); if ( ! $success ) { WP_CLI::warning( sprintf( 'Could not create file %s', basename( $destination_file, '.json' ) ) ); continue; } $result[] = $destination_file; } return $result; } /** * Removes strings from PO file that only occur in JavaScript file. * * @param string $source_file Path to the PO file. * @return bool True on success, false otherwise. */ protected function remove_js_strings_from_po_file( $source_file ) { /** @var Translations[] $mapping */ $translations = new Translations(); PoExtractor::fromFile( $source_file, $translations ); foreach ( $translations->getArrayCopy() as $translation ) { /** @var Translation $translation */ if ( ! $translation->hasReferences() ) { continue; } foreach ( $translation->getReferences() as $reference ) { $file = $reference[0]; if ( substr( $file, - 3 ) !== '.js' ) { continue 2; } } unset( $translations[ $translation->getId() ] ); } return PoGenerator::toFile( $translations, $source_file ); } } <?php namespace WP_CLI\I18n; use Exception; use Gettext\Extractors\PhpCode; use Gettext\Translations; use WP_CLI; final class PhpCodeExtractor extends PhpCode { use IterableCodeExtractor; public static $options = [ 'extractComments' => [ 'translators', 'Translators' ], 'constants' => [], 'functions' => [ '__' => 'text_domain', 'esc_attr__' => 'text_domain', 'esc_html__' => 'text_domain', 'esc_xml__' => 'text_domain', '_e' => 'text_domain', 'esc_attr_e' => 'text_domain', 'esc_html_e' => 'text_domain', 'esc_xml_e' => 'text_domain', '_x' => 'text_context_domain', '_ex' => 'text_context_domain', 'esc_attr_x' => 'text_context_domain', 'esc_html_x' => 'text_context_domain', 'esc_xml_x' => 'text_context_domain', '_n' => 'single_plural_number_domain', '_nx' => 'single_plural_number_context_domain', '_n_noop' => 'single_plural_domain', '_nx_noop' => 'single_plural_context_domain', // Compat. '_' => 'gettext', // Same as 'text_domain'. // Deprecated. '_c' => 'text_domain', '_nc' => 'single_plural_number_domain', '__ngettext' => 'single_plural_number_domain', '__ngettext_noop' => 'single_plural_domain', ], ]; protected static $functionsScannerClass = 'WP_CLI\I18n\PhpFunctionsScanner'; /** * {@inheritdoc} */ public static function fromString( $string, Translations $translations, array $options = [] ) { WP_CLI::debug( "Parsing file {$options['file']}", 'make-pot' ); try { static::fromStringMultiple( $string, [ $translations ], $options ); } catch ( Exception $exception ) { WP_CLI::debug( sprintf( 'Could not parse file %1$s: %2$s', $options['file'], $exception->getMessage() ), 'make-pot' ); } } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_role_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_role_autoloader ) ) { require_once $wpcli_role_autoloader; } WP_CLI::add_command( 'cap', 'Capabilities_Command' ); WP_CLI::add_command( 'role', 'Role_Command' ); <?php use WP_CLI\Formatter; /** * Adds, removes, and lists capabilities of a user role. * * See references for [Roles and Capabilities](https://codex.wordpress.org/Roles_and_Capabilities) and [WP User class](https://codex.wordpress.org/Class_Reference/WP_User). * * ## EXAMPLES * * # Add 'spectate' capability to 'author' role. * $ wp cap add 'author' 'spectate' * Success: Added 1 capability to 'author' role. * * # Add all caps from 'editor' role to 'author' role. * $ wp cap list 'editor' | xargs wp cap add 'author' * Success: Added 24 capabilities to 'author' role. * * # Remove all caps from 'editor' role that also appear in 'author' role. * $ wp cap list 'author' | xargs wp cap remove 'editor' * Success: Removed 34 capabilities from 'editor' role. */ class Capabilities_Command extends WP_CLI_Command { /** * List of available fields. * * @var array */ private $fields = [ 'name' ]; /** * Lists capabilities for a given role. * * ## OPTIONS * * <role> * : Key for the role. * * [--format=<format>] * : Render output in a particular format. * --- * default: list * options: * - list * - table * - csv * - json * - count * - yaml * --- * * [--show-grant] * : Display all capabilities defined for a role including grant. * --- * default: false * --- * * ## EXAMPLES * * # Display alphabetical list of Contributor capabilities. * $ wp cap list 'contributor' | sort * delete_posts * edit_posts * level_0 * level_1 * read * * @subcommand list */ public function list_( $args, $assoc_args ) { $role_obj = self::get_role( $args[0] ); $show_grant = ! empty( $assoc_args['show-grant'] ); if ( $show_grant ) { array_push( $this->fields, 'grant' ); $capabilities = $role_obj->capabilities; } else { $capabilities = array_filter( $role_obj->capabilities ); } $output_caps = array(); foreach ( $capabilities as $cap => $grant ) { $output_cap = new stdClass(); $output_cap->name = $cap; $output_cap->grant = $grant ? 'true' : 'false'; $output_caps[] = $output_cap; } if ( 'list' === $assoc_args['format'] ) { foreach ( $output_caps as $cap ) { if ( $show_grant ) { WP_CLI::line( implode( ',', array( $cap->name, $cap->grant ) ) ); } else { WP_CLI::line( $cap->name ); } } } else { $formatter = new Formatter( $assoc_args, $this->fields ); $formatter->display_items( $output_caps ); } } /** * Adds capabilities to a given role. * * ## OPTIONS * * <role> * : Key for the role. * * <cap>... * : One or more capabilities to add. * * [--grant] * : Adds the capability as an explicit boolean value, instead of implicitly defaulting to `true`. * --- * default: true * options: * - true * - false * --- * * ## EXAMPLES * * # Add 'spectate' capability to 'author' role. * $ wp cap add author spectate * Success: Added 1 capability to 'author' role. */ public function add( $args, $assoc_args ) { self::persistence_check(); $role = array_shift( $args ); $role_obj = self::get_role( $role ); $grant = ! isset( $assoc_args['grant'] ) || ! empty( $assoc_args['grant'] ); $count = 0; foreach ( $args as $cap ) { if ( true === $grant && $role_obj->has_cap( $cap ) ) { continue; } if ( false === $grant && isset( $role_obj->capabilities[ $cap ] ) && false === $role_obj->capabilities[ $cap ] ) { continue; } $role_obj->add_cap( $cap, $grant ); $count++; } $capability = WP_CLI\Utils\pluralize( 'capability', $count ); $grant_qualification = $grant ? '' : ' as false'; WP_CLI::success( "Added {$count} {$capability} to '{$role}' role{$grant_qualification}." ); } /** * Removes capabilities from a given role. * * ## OPTIONS * * <role> * : Key for the role. * * <cap>... * : One or more capabilities to remove. * * ## EXAMPLES * * # Remove 'spectate' capability from 'author' role. * $ wp cap remove author spectate * Success: Removed 1 capability from 'author' role. */ public function remove( $args ) { self::persistence_check(); $role = array_shift( $args ); $role_obj = self::get_role( $role ); $count = 0; foreach ( $args as $cap ) { if ( ! isset( $role_obj->capabilities[ $cap ] ) ) { continue; } $role_obj->remove_cap( $cap ); $count++; } $capability = WP_CLI\Utils\pluralize( 'capability', $count ); WP_CLI::success( "Removed {$count} {$capability} from '{$role}' role." ); } /** * Retrieve a specific role from the system. * * @param string $role Role to retrieve. * @return WP_Role Requested role. * @throws \WP_CLI\ExitException If the role could not be found. */ private static function get_role( $role ) { global $wp_roles; $role_obj = $wp_roles->get_role( $role ); if ( ! $role_obj ) { WP_CLI::error( "'{$role}' role not found." ); } return $role_obj; } /** * Assert that the roles are persisted to the database. * * @throws \WP_CLI\ExitException If the roles are not persisted to the * database. */ private static function persistence_check() { global $wp_roles; if ( ! $wp_roles->use_db ) { WP_CLI::error( 'Role definitions are not persistent.' ); } } } <?php use WP_CLI\Utils; use WP_CLI\Formatter; /** * Manages user roles, including creating new roles and resetting to defaults. * * See references for [Roles and Capabilities](https://codex.wordpress.org/Roles_and_Capabilities) and [WP User class](https://codex.wordpress.org/Class_Reference/WP_User). * * ## EXAMPLES * * # List roles. * $ wp role list --fields=role --format=csv * role * administrator * editor * author * contributor * subscriber * * # Check to see if a role exists. * $ wp role exists editor * Success: Role with ID 'editor' exists. * * # Create a new role. * $ wp role create approver Approver * Success: Role with key 'approver' created. * * # Delete an existing role. * $ wp role delete approver * Success: Role with key 'approver' deleted. * * # Reset existing roles to their default capabilities. * $ wp role reset administrator author contributor * Success: Reset 3/3 roles. * * @package wp-cli */ class Role_Command extends WP_CLI_Command { /** * List of available fields. * * @var array */ private $fields = [ 'name', 'role' ]; /** * Default roles as provided by WordPress Core. * * @var array */ private $roles = [ 'administrator', 'editor', 'author', 'contributor', 'subscriber' ]; /** * Lists all roles. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--field=<field>] * : Prints the value of a single field. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each role: * * * name * * role * * There are no optional fields. * * ## EXAMPLES * * # List roles. * $ wp role list --fields=role --format=csv * role * administrator * editor * author * contributor * subscriber * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wp_roles; $output_roles = array(); foreach ( $wp_roles->roles as $key => $role ) { $output_role = new stdClass(); $output_role->name = $role['name']; $output_role->role = $key; $output_roles[] = $output_role; } $formatter = new Formatter( $assoc_args, $this->fields ); $formatter->display_items( $output_roles ); } /** * Checks if a role exists. * * Exits with return code 0 if the role exists, 1 if it does not. * * ## OPTIONS * * <role-key> * : The internal name of the role. * * ## EXAMPLES * * # Check if a role exists. * $ wp role exists editor * Success: Role with ID 'editor' exists. */ public function exists( $args ) { global $wp_roles; if ( ! in_array( $args[0], array_keys( $wp_roles->roles ), true ) ) { WP_CLI::error( "Role with ID '{$args[0]}' does not exist." ); } WP_CLI::success( "Role with ID '{$args[0]}' exists." ); } /** * Creates a new role. * * ## OPTIONS * * <role-key> * : The internal name of the role. * * <role-name> * : The publicly visible name of the role. * * [--clone=<role>] * : Clone capabilities from an existing role. * * ## EXAMPLES * * # Create role for Approver. * $ wp role create approver Approver * Success: Role with key 'approver' created. * * # Create role for Product Administrator. * $ wp role create productadmin "Product Administrator" * Success: Role with key 'productadmin' created. */ public function create( $args, $assoc_args ) { global $wp_roles; self::persistence_check(); $role_key = array_shift( $args ); $role_name = array_shift( $args ); if ( empty( $role_key ) || empty( $role_name ) ) { WP_CLI::error( "Can't create role, insufficient information provided." ); } $capabilities = false; if ( ! empty( $assoc_args['clone'] ) ) { $role_obj = $wp_roles->get_role( $assoc_args['clone'] ); if ( ! $role_obj ) { WP_CLI::error( "'{$assoc_args['clone']}' role not found." ); } $capabilities = array_keys( $role_obj->capabilities ); } if ( add_role( $role_key, $role_name ) ) { if ( ! empty( $capabilities ) ) { $role_obj = $wp_roles->get_role( $role_key ); foreach ( $capabilities as $cap ) { $role_obj->add_cap( $cap ); } WP_CLI::success( "Role with key '{$role_key}' created. Cloned capabilities from '{$assoc_args['clone']}'." ); } else { WP_CLI::success( "Role with key '{$role_key}' created." ); } } else { WP_CLI::error( "Role couldn't be created." ); } } /** * Deletes an existing role. * * ## OPTIONS * * <role-key> * : The internal name of the role. * * ## EXAMPLES * * # Delete approver role. * $ wp role delete approver * Success: Role with key 'approver' deleted. * * # Delete productadmin role. * wp role delete productadmin * Success: Role with key 'productadmin' deleted. */ public function delete( $args ) { global $wp_roles; self::persistence_check(); $role_key = array_shift( $args ); if ( empty( $role_key ) || ! isset( $wp_roles->roles[ $role_key ] ) ) { WP_CLI::error( 'Role key not provided, or is invalid.' ); } remove_role( $role_key ); // Note: remove_role() doesn't indicate success or otherwise, so we have to // check ourselves if ( ! isset( $wp_roles->roles[ $role_key ] ) ) { WP_CLI::success( "Role with key '{$role_key}' deleted." ); } else { WP_CLI::error( "Role with key '{$role_key}' could not be deleted." ); } } /** * Resets any default role to default capabilities. * * ## OPTIONS * * [<role-key>...] * : The internal name of one or more roles to reset. * * [--all] * : If set, all default roles will be reset. * * ## EXAMPLES * * # Reset role. * $ wp role reset administrator author contributor * Success: Reset 1/3 roles. * * # Reset all default roles. * $ wp role reset --all * Success: All default roles reset. */ public function reset( $args, $assoc_args ) { self::persistence_check(); if ( ! Utils\get_flag_value( $assoc_args, 'all' ) && empty( $args ) ) { WP_CLI::error( 'Role key not provided, or is invalid.' ); } if ( ! function_exists( 'populate_roles' ) ) { require_once ABSPATH . 'wp-admin/includes/schema.php'; } global $wp_roles; $all_roles = array_keys( $wp_roles->roles ); $preserve_args = $args; // Get our default roles. $default_roles = $this->roles; $preserve = $this->roles; $before = []; if ( Utils\get_flag_value( $assoc_args, 'all' ) ) { foreach ( $default_roles as $role ) { $before[ $role ] = get_role( $role ); remove_role( $role ); $args[] = $role; } populate_roles(); $not_affected_roles = array_diff( $all_roles, $default_roles ); if ( ! empty( $not_affected_roles ) ) { foreach ( $not_affected_roles as $not_affected_role ) { WP_CLI::log( "Custom role '{$not_affected_role}' not affected." ); } } } else { foreach ( $args as $k => $role_key ) { $key = array_search( $role_key, $default_roles, true ); if ( false !== $key ) { unset( $preserve[ $key ] ); $before[ $role_key ] = get_role( $role_key ); remove_role( $role_key ); } else { unset( $args[ $k ] ); } } $not_affected_roles = array_diff( $preserve_args, $default_roles ); if ( ! empty( $not_affected_roles ) ) { foreach ( $not_affected_roles as $not_affected_role ) { WP_CLI::log( "Custom role '{$not_affected_role}' not affected." ); } } // No roles were unset, bail. if ( count( $default_roles ) === count( $preserve ) ) { WP_CLI::error( 'Must specify a default role to reset.' ); } // For the roles we're not resetting. foreach ( $preserve as $k => $role ) { /* save roles * if get_role is null * save role name for re-removal */ $roleobj = get_role( $role ); $preserve[ $k ] = is_null( $roleobj ) ? $role : $roleobj; remove_role( $role ); } // Put back all default roles and capabilities. populate_roles(); // Restore the preserved roles. foreach ( $preserve as $k => $roleobj ) { // Re-remove after populating. if ( is_a( $roleobj, 'WP_Role' ) ) { remove_role( $roleobj->name ); add_role( $roleobj->name, ucwords( $roleobj->name ), $roleobj->capabilities ); } else { // When not an object, that means the role didn't exist before. remove_role( $roleobj ); } } } $num_reset = 0; $args = array_unique( $args ); $num_to_reset = count( $args ); foreach ( $args as $role_key ) { $after[ $role_key ] = get_role( $role_key ); // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison -- Object instances won't be same, strict check will fail here. if ( $after[ $role_key ] != $before[ $role_key ] ) { ++$num_reset; $restored_cap = array_diff_key( $after[ $role_key ]->capabilities, $before[ $role_key ]->capabilities ); $removed_cap = array_diff_key( $before[ $role_key ]->capabilities, $after[ $role_key ]->capabilities ); $restored_cap_count = count( $restored_cap ); $removed_cap_count = count( $removed_cap ); $restored_text = ( 1 === $restored_cap_count ) ? '%d capability' : '%d capabilities'; $removed_text = ( 1 === $removed_cap_count ) ? '%d capability' : '%d capabilities'; $message = "Restored {$restored_text} to and removed {$removed_text} from '%s' role."; WP_CLI::log( sprintf( $message, $restored_cap_count, $removed_cap_count, $role_key ) ); } else { WP_CLI::log( "No changes necessary for '{$role_key}' role." ); } } if ( $num_reset ) { if ( 1 === count( $args ) ) { WP_CLI::success( 'Role reset.' ); } else { WP_CLI::success( "{$num_reset} of {$num_to_reset} roles reset." ); } } else { if ( 1 === count( $args ) ) { WP_CLI::success( 'Role didn\'t need resetting.' ); } else { WP_CLI::success( 'No roles needed resetting.' ); } } } /** * Assert that the roles are persisted to the database. * * @throws \WP_CLI\ExitException If the roles are not persisted to the * database. */ private static function persistence_check() { global $wp_roles; if ( ! $wp_roles->use_db ) { WP_CLI::error( 'Role definitions are not persistent.' ); } } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_rewrite_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_rewrite_autoloader ) ) { require_once $wpcli_rewrite_autoloader; } WP_CLI::add_command( 'rewrite', 'Rewrite_Command' ); <?php use WP_CLI\Utils; /** * Lists or flushes the site's rewrite rules, updates the permalink structure. * * See the WordPress [Rewrite API](https://codex.wordpress.org/Rewrite_API) and * [WP Rewrite](https://codex.wordpress.org/Class_Reference/WP_Rewrite) class reference. * * ## EXAMPLES * * # Flush rewrite rules * $ wp rewrite flush * Success: Rewrite rules flushed. * * # Update permalink structure * $ wp rewrite structure '/%year%/%monthnum%/%postname%' * Success: Rewrite structure set. * * # List rewrite rules * $ wp rewrite list --format=csv * match,query,source * ^wp-json/?$,index.php?rest_route=/,other * ^wp-json/(.*)?,index.php?rest_route=/$matches[1],other * category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category * category/(.+?)/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category * category/(.+?)/embed/?$,index.php?category_name=$matches[1]&embed=true,category * * @package wp-cli */ class Rewrite_Command extends WP_CLI_Command { /** * Flushes rewrite rules. * * Resets WordPress' rewrite rules based on registered post types, etc. * * To regenerate a .htaccess file with WP-CLI, you'll need to add the mod_rewrite module * to your wp-cli.yml or config.yml. For example: * * ``` * apache_modules: * - mod_rewrite * ``` * * ## OPTIONS * * [--hard] * : Perform a hard flush - update `.htaccess` rules as well as rewrite rules in database. Works only on single site installs. * * ## EXAMPLES * * $ wp rewrite flush * Success: Rewrite rules flushed. */ public function flush( $args, $assoc_args ) { // make sure we detect mod_rewrite if configured in apache_modules in config self::apache_modules(); if ( Utils\get_flag_value( $assoc_args, 'hard' ) && ! in_array( 'mod_rewrite', (array) WP_CLI::get_config( 'apache_modules' ), true ) ) { WP_CLI::warning( 'Regenerating a .htaccess file requires special configuration. See usage docs.' ); } if ( Utils\get_flag_value( $assoc_args, 'hard' ) && is_multisite() ) { WP_CLI::warning( "WordPress can't generate .htaccess file for a multisite install." ); } self::check_skip_plugins_themes(); flush_rewrite_rules( Utils\get_flag_value( $assoc_args, 'hard' ) ); if ( ! get_option( 'rewrite_rules' ) ) { WP_CLI::warning( "Rewrite rules are empty, possibly because of a missing permalink_structure option. Use 'wp rewrite list' to verify, or 'wp rewrite structure' to update permalink_structure." ); } else { WP_CLI::success( 'Rewrite rules flushed.' ); } } /** * Updates the permalink structure. * * Sets the post permalink structure to the specified pattern. * * To regenerate a .htaccess file with WP-CLI, you'll need to add * the mod_rewrite module to your [WP-CLI config](https://make.wordpress.org/cli/handbook/config/#config-files). * For example: * * ``` * apache_modules: * - mod_rewrite * ``` * * ## OPTIONS * * <permastruct> * : The new permalink structure to apply. * * [--category-base=<base>] * : Set the base for category permalinks, i.e. '/category/'. * * [--tag-base=<base>] * : Set the base for tag permalinks, i.e. '/tag/'. * * [--hard] * : Perform a hard flush - update `.htaccess` rules as well as rewrite rules in database. * * ## EXAMPLES * * $ wp rewrite structure '/%year%/%monthnum%/%postname%/' * Success: Rewrite structure set. */ public function structure( $args, $assoc_args ) { global $wp_rewrite; // copypasta from /wp-admin/options-permalink.php $blog_prefix = ''; $prefix = $blog_prefix; if ( is_multisite() && ! is_subdomain_install() && is_main_site() ) { $blog_prefix = '/blog'; } $permalink_structure = ( 'default' === $args[0] ) ? '' : $args[0]; if ( ! empty( $permalink_structure ) ) { $permalink_structure = preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $permalink_structure ) ); if ( $prefix && $blog_prefix ) { $permalink_structure = $prefix . preg_replace( '#^/?index\.php#', '', $permalink_structure ); } else { $permalink_structure = $blog_prefix . $permalink_structure; } } $wp_rewrite->set_permalink_structure( $permalink_structure ); // Update category or tag bases if ( isset( $assoc_args['category-base'] ) ) { $category_base = $assoc_args['category-base']; if ( ! empty( $category_base ) ) { $category_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $category_base ) ); } $wp_rewrite->set_category_base( $category_base ); } if ( isset( $assoc_args['tag-base'] ) ) { $tag_base = $assoc_args['tag-base']; if ( ! empty( $tag_base ) ) { $tag_base = $blog_prefix . preg_replace( '#/+#', '/', '/' . str_replace( '#', '', $tag_base ) ); } $wp_rewrite->set_tag_base( $tag_base ); } // make sure we detect mod_rewrite if configured in apache_modules in config self::apache_modules(); WP_CLI::success( 'Rewrite structure set.' ); // Launch a new process to flush rewrites because core expects flush // to happen after rewrites are set $new_assoc_args = []; $cmd = 'rewrite flush'; if ( Utils\get_flag_value( $assoc_args, 'hard' ) ) { $cmd .= ' --hard'; $new_assoc_args['hard'] = true; if ( ! in_array( 'mod_rewrite', (array) WP_CLI::get_config( 'apache_modules' ), true ) ) { WP_CLI::warning( 'Regenerating a .htaccess file requires special configuration. See usage docs.' ); } } $process_run = WP_CLI::runcommand( $cmd ); if ( ! empty( $process_run->stderr ) ) { // Strip "Warning: " WP_CLI::warning( substr( $process_run->stderr, 9 ) ); } } /** * Gets a list of the current rewrite rules. * * ## OPTIONS * * [--match=<url>] * : Show rewrite rules matching a particular URL. * * [--source=<source>] * : Show rewrite rules from a particular source. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to match,query,source. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - count * - yaml * --- * * ## EXAMPLES * * $ wp rewrite list --format=csv * match,query,source * ^wp-json/?$,index.php?rest_route=/,other * ^wp-json/(.*)?,index.php?rest_route=/$matches[1],other * category/(.+?)/feed/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category * category/(.+?)/(feed|rdf|rss|rss2|atom)/?$,index.php?category_name=$matches[1]&feed=$matches[2],category * category/(.+?)/embed/?$,index.php?category_name=$matches[1]&embed=true,category * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wp_rewrite; $rules = get_option( 'rewrite_rules' ); if ( ! $rules ) { $rules = []; WP_CLI::warning( 'No rewrite rules.' ); } self::check_skip_plugins_themes(); $defaults = [ 'source' => '', 'match' => '', 'format' => 'table', 'fields' => 'match,query,source', ]; $assoc_args = array_merge( $defaults, $assoc_args ); $rewrite_rules_by_source = []; $rewrite_rules_by_source['post'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->permalink_structure, EP_PERMALINK ); $rewrite_rules_by_source['date'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->get_date_permastruct(), EP_DATE ); $rewrite_rules_by_source['root'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->root . '/', EP_ROOT ); $rewrite_rules_by_source['comments'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->root . $wp_rewrite->comments_base, EP_COMMENTS, true, true, true, false ); $rewrite_rules_by_source['search'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->get_search_permastruct(), EP_SEARCH ); $rewrite_rules_by_source['author'] = $wp_rewrite->generate_rewrite_rules( $wp_rewrite->get_author_permastruct(), EP_AUTHORS ); $rewrite_rules_by_source['page'] = $wp_rewrite->page_rewrite_rules(); // Extra permastructs including tags, categories, etc. foreach ( $wp_rewrite->extra_permastructs as $permastructname => $permastruct ) { if ( is_array( $permastruct ) ) { $rewrite_rules_by_source[ $permastructname ] = $wp_rewrite->generate_rewrite_rules( $permastruct['struct'], $permastruct['ep_mask'], $permastruct['paged'], $permastruct['feed'], $permastruct['forcomments'], $permastruct['walk_dirs'], $permastruct['endpoints'] ); } else { $rewrite_rules_by_source[ $permastructname ] = $wp_rewrite->generate_rewrite_rules( $permastruct, EP_NONE ); } } // Apply the filters used in core just in case foreach ( $rewrite_rules_by_source as $source => $source_rules ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound -- Can't prefix dynamic hooks here, calling hooks for custom permastructs. $rewrite_rules_by_source[ $source ] = apply_filters( $source . '_rewrite_rules', $source_rules ); if ( 'post_tag' === $source ) { if ( Utils\wp_version_compare( '3.1.0', '>=' ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $rewrite_rules_by_source[ $source ] = apply_filters( 'post_tag_rewrite_rules', $source_rules ); } else { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $rewrite_rules_by_source[ $source ] = apply_filters( 'tag_rewrite_rules', $source_rules ); } } } $rule_list = []; foreach ( $rules as $match => $query ) { if ( ! empty( $assoc_args['match'] ) && ! preg_match( "!^$match!", trim( $assoc_args['match'], '/' ) ) ) { continue; } $source = 'other'; foreach ( $rewrite_rules_by_source as $rules_source => $source_rules ) { if ( array_key_exists( $match, $source_rules ) ) { $source = $rules_source; } } if ( ! empty( $assoc_args['source'] ) && $source !== $assoc_args['source'] ) { continue; } $rule_list[] = compact( 'match', 'query', 'source' ); } Utils\format_items( $assoc_args['format'], $rule_list, explode( ',', $assoc_args['fields'] ) ); } /** * Exposes apache modules if present in config * * Implementation Notes: This function exposes a global function * apache_get_modules and also sets the $is_apache global variable. * * This is so that flush_rewrite_rules will actually write out the * .htaccess file for apache WordPress installations. There is a check * to see: * * 1. if the $is_apache variable is set. * 2. if the mod_rewrite module is returned from the apache_get_modules * function. * * To get this to work with wp-cli you'll need to add the mod_rewrite module * to your config.yml. For example * * ``` * apache_modules: * - mod_rewrite * ``` * * If this isn't done then the .htaccess rewrite rules won't be flushed out * to disk. */ private static function apache_modules() { $mods = WP_CLI::get_config( 'apache_modules' ); if ( ! empty( $mods ) && ! function_exists( 'apache_get_modules' ) ) { global $is_apache; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited $is_apache = true; // needed for get_home_path() and .htaccess location $_SERVER['SCRIPT_FILENAME'] = ABSPATH; function apache_get_modules() { return WP_CLI::get_config( 'apache_modules' ); } } } /** * Displays a warning if --skip-plugins or --skip-themes are in use. * * Skipping the loading of plugins or themes can mean some rewrite rules * are unregistered, which may cause erroneous behavior. */ private static function check_skip_plugins_themes() { $skipped = []; if ( WP_CLI::get_config( 'skip-plugins' ) ) { $skipped[] = 'plugins'; } if ( WP_CLI::get_config( 'skip-themes' ) ) { $skipped[] = 'themes'; } if ( empty( $skipped ) ) { return; } $skipped = implode( ' and ', $skipped ); WP_CLI::warning( sprintf( "Some rewrite rules may be missing because %s weren't loaded.", $skipped ) ); } } WP_CLI::add_command( 'rewrite', 'Rewrite_Command' ); <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_scaffold_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_scaffold_autoloader ) ) { require_once $wpcli_scaffold_autoloader; } WP_CLI::add_command( 'scaffold', 'Scaffold_Command' ); <?php /** * Functions to register client-side assets (scripts and stylesheets) for the * Gutenberg block. * * @package {{namespace}} */ /** * Registers all block assets so that they can be enqueued through Gutenberg in * the corresponding context. * * @see https://wordpress.org/gutenberg/handbook/designers-developers/developers/tutorials/block-tutorial/applying-styles-with-stylesheets/ */ function {{machine_name}}_block_init() { // Skip block registration if Gutenberg is not enabled/merged. if ( ! function_exists( 'register_block_type' ) ) { return; } {{#plugin}} $dir = dirname( __FILE__ ); {{/plugin}} {{#theme}} $dir = get_stylesheet_directory() . '/blocks'; {{/theme}} $index_js = '{{slug}}/index.js'; wp_register_script( '{{slug}}-block-editor', {{#plugin}} plugins_url( $index_js, __FILE__ ), {{/plugin}} {{#theme}} get_stylesheet_directory_uri() . "/blocks/{$index_js}", {{/theme}} [ 'wp-blocks', 'wp-i18n', 'wp-element', ], filemtime( "{$dir}/{$index_js}" ) ); $editor_css = '{{slug}}/editor.css'; wp_register_style( '{{slug}}-block-editor', {{#plugin}} plugins_url( $editor_css, __FILE__ ), {{/plugin}} {{#theme}} get_stylesheet_directory_uri() . "/blocks/{$editor_css}", {{/theme}} [], filemtime( "{$dir}/{$editor_css}" ) ); $style_css = '{{slug}}/style.css'; wp_register_style( '{{slug}}-block', {{#plugin}} plugins_url( $style_css, __FILE__ ), {{/plugin}} {{#theme}} get_stylesheet_directory_uri() . "/blocks/{$style_css}", {{/theme}} [], filemtime( "{$dir}/{$style_css}" ) ); register_block_type( '{{namespace}}/{{slug}}', [ 'editor_script' => '{{slug}}-block-editor', 'editor_style' => '{{slug}}-block-editor', 'style' => '{{slug}}-block', ] ); } add_action( 'init', '{{machine_name}}_block_init' ); <?php use WP_CLI\Utils; use WP_CLI\Inflector; /** * Generates code for post types, taxonomies, plugins, child themes, etc. * * ## EXAMPLES * * # Generate a new plugin with unit tests * $ wp scaffold plugin sample-plugin * Success: Created plugin files. * Success: Created test files. * * # Generate theme based on _s * $ wp scaffold _s sample-theme --theme_name="Sample Theme" --author="John Doe" * Success: Created theme 'Sample Theme'. * * # Generate code for post type registration in given theme * $ wp scaffold post-type movie --label=Movie --theme=simple-life * Success: Created /var/www/example.com/public_html/wp-content/themes/simple-life/post-types/movie.php * * @package wp-cli */ class Scaffold_Command extends WP_CLI_Command { /** * Generates PHP code for registering a custom post type. * * ## OPTIONS * * <slug> * : The internal name of the post type. * * [--label=<label>] * : The text used to translate the update messages. * * [--textdomain=<textdomain>] * : The textdomain to use for the labels. * * [--dashicon=<dashicon>] * : The dashicon to use in the menu. * * [--theme] * : Create a file in the active theme directory, instead of sending to * STDOUT. Specify a theme with `--theme=<theme>` to have the file placed in that theme. * * [--plugin=<plugin>] * : Create a file in the given plugin's directory, instead of sending to STDOUT. * * [--raw] * : Just generate the `register_post_type()` call and nothing else. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate a 'movie' post type for the 'simple-life' theme * $ wp scaffold post-type movie --label=Movie --theme=simple-life * Success: Created '/var/www/example.com/public_html/wp-content/themes/simple-life/post-types/movie.php'. * * @subcommand post-type * * @alias cpt */ public function post_type( $args, $assoc_args ) { if ( strlen( $args[0] ) > 20 ) { WP_CLI::error( 'Post type slugs cannot exceed 20 characters in length.' ); } $defaults = [ 'textdomain' => '', 'dashicon' => 'admin-post', ]; $templates = [ 'post_type.mustache', 'post_type_extended.mustache', ]; $this->scaffold( $args[0], $assoc_args, $defaults, '/post-types/', $templates ); } /** * Generates PHP code for registering a custom taxonomy. * * ## OPTIONS * * <slug> * : The internal name of the taxonomy. * * [--post_types=<post-types>] * : Post types to register for use with the taxonomy. * * [--label=<label>] * : The text used to translate the update messages. * * [--textdomain=<textdomain>] * : The textdomain to use for the labels. * * [--theme] * : Create a file in the active theme directory, instead of sending to * STDOUT. Specify a theme with `--theme=<theme>` to have the file placed in that theme. * * [--plugin=<plugin>] * : Create a file in the given plugin's directory, instead of sending to STDOUT. * * [--raw] * : Just generate the `register_taxonomy()` call and nothing else. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate PHP code for registering a custom taxonomy and save in a file * $ wp scaffold taxonomy venue --post_types=event,presentation > taxonomy.php * * @subcommand taxonomy * * @alias tax */ public function taxonomy( $args, $assoc_args ) { $defaults = [ 'textdomain' => '', 'post_types' => "'post'", ]; if ( isset( $assoc_args['post_types'] ) ) { $assoc_args['post_types'] = $this->quote_comma_list_elements( $assoc_args['post_types'] ); } $templates = [ 'taxonomy.mustache', 'taxonomy_extended.mustache', ]; $this->scaffold( $args[0], $assoc_args, $defaults, '/taxonomies/', $templates ); } private function scaffold( $slug, $assoc_args, $defaults, $subdir, $templates ) { $wp_filesystem = $this->init_wp_filesystem(); $control_defaults = [ 'label' => preg_replace( '/_|-/', ' ', strtolower( $slug ) ), 'theme' => false, 'plugin' => false, 'raw' => false, ]; $control_args = $this->extract_args( $assoc_args, $control_defaults ); $vars = $this->extract_args( $assoc_args, $defaults ); $dashicon = $this->extract_dashicon( $assoc_args ); if ( $dashicon ) { $vars['dashicon'] = $dashicon; } $vars['slug'] = $slug; $vars['textdomain'] = $this->get_textdomain( $vars['textdomain'], $control_args ); $vars['label'] = $control_args['label']; $vars['label_ucfirst'] = ucfirst( $vars['label'] ); $vars['label_plural'] = $this->pluralize( $vars['label'] ); $vars['label_plural_ucfirst'] = ucfirst( $vars['label_plural'] ); $machine_name = $this->generate_machine_name( $slug ); $machine_name_plural = $this->pluralize( $slug ); list( $raw_template, $extended_template ) = $templates; $raw_output = self::mustache_render( $raw_template, $vars ); if ( ! $control_args['raw'] ) { $vars['machine_name'] = $machine_name; $vars['output'] = $raw_output; $final_output = self::mustache_render( $extended_template, $vars ); } else { $final_output = $raw_output; } $path = $this->get_output_path( $control_args, $subdir ); if ( is_string( $path ) && ! empty( $path ) ) { $filename = "{$path}{$slug}.php"; $force = Utils\get_flag_value( $assoc_args, 'force' ); $files_written = $this->create_files( [ $filename => $final_output ], $force ); $skip_message = "Skipped creating '{$filename}'."; $success_message = "Created '{$filename}'."; $this->log_whether_files_written( $files_written, $skip_message, $success_message ); } else { // STDOUT echo $final_output; } } /** * Generates PHP, JS and CSS code for registering a Gutenberg block for a plugin or theme. * * Blocks are the fundamental element of the Gutenberg editor. They are the primary way in which plugins and themes can register their own functionality and extend the capabilities of the editor. * * Visit the [Gutenberg handbook](https://wordpress.org/gutenberg/handbook/block-api/) to learn more about Block API. * * When you scaffold a block you must use either the theme or plugin option. The latter is recommended. * * ## OPTIONS * * <slug> * : The internal name of the block. * * [--title=<title>] * : The display title for your block. * * [--dashicon=<dashicon>] * : The dashicon to make it easier to identify your block. * * [--category=<category>] * : The category name to help users browse and discover your block. * --- * default: widgets * options: * - common * - embed * - formatting * - layout * - widgets * --- * * [--theme] * : Create files in the active theme directory. Specify a theme with `--theme=<theme>` to have the file placed in that theme. * * [--plugin=<plugin>] * : Create files in the given plugin's directory. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate a 'movie' block for the 'movies' plugin * $ wp scaffold block movie --title="Movie block" --plugin=movies * Success: Created block 'Movie block'. * * # Generate a 'movie' block for the 'simple-life' theme * $ wp scaffold block movie --title="Movie block" --theme=simple-life * Success: Created block 'Movie block'. * * # Create a new plugin and add two blocks * # Create plugin called books * $ wp scaffold plugin books * # Add a block called book to plugin books * $ wp scaffold block book --title="Book" --plugin=books * # Add a second block to plugin called books. * $ wp scaffold block books --title="Book List" --plugin=books * * @subcommand block */ public function block( $args, $assoc_args ) { $slug = $args[0]; if ( ! preg_match( '/^[a-z][a-z0-9\-]*$/', $slug ) ) { WP_CLI::error( 'Invalid block slug specified. Block slugs can contain only lowercase alphanumeric characters or dashes, and start with a letter.' ); } $defaults = [ 'title' => str_replace( '-', ' ', $slug ), 'category' => 'widgets', ]; $data = $this->extract_args( $assoc_args, $defaults ); $data['slug'] = $slug; $data['title_ucfirst'] = ucfirst( $data['title'] ); $data['title_ucfirst_js'] = esc_js( $data['title_ucfirst'] ); $dashicon = $this->extract_dashicon( $assoc_args ); if ( $dashicon ) { $data['dashicon'] = $dashicon; } $control_defaults = [ 'force' => false, 'plugin' => false, 'theme' => false, ]; $control_args = $this->extract_args( $assoc_args, $control_defaults ); if ( isset( $control_args['plugin'] ) ) { if ( ! preg_match( '/^[A-Za-z0-9\-]*$/', $control_args['plugin'] ) ) { WP_CLI::error( 'Invalid plugin name specified. The block editor can only register blocks for plugins that have nothing but lowercase alphanumeric characters or dashes in their slug.' ); } } $data['namespace'] = $control_args['plugin'] ? $control_args['plugin'] : $this->get_theme_name( $control_args['theme'] ); $data['machine_name'] = $this->generate_machine_name( $slug ); $data['plugin'] = $control_args['plugin'] ? true : false; $data['theme'] = ! $data['plugin']; $block_dir = $this->get_output_path( $control_args, '/blocks' ); if ( ! $block_dir ) { WP_CLI::error( 'No plugin or theme selected.' ); } $files_to_create = [ "{$block_dir}/{$slug}.php" => self::mustache_render( 'block-php.mustache', $data ), "{$block_dir}/{$slug}/index.js" => self::mustache_render( 'block-index-js.mustache', $data ), "{$block_dir}/{$slug}/editor.css" => self::mustache_render( 'block-editor-css.mustache', $data ), "{$block_dir}/{$slug}/style.css" => self::mustache_render( 'block-style-css.mustache', $data ), ]; $files_written = $this->create_files( $files_to_create, $control_args['force'] ); $skip_message = 'All block files were skipped.'; $success_message = "Created block '{$data['title_ucfirst']}'."; $this->log_whether_files_written( $files_written, $skip_message, $success_message ); } /** * Generates starter code for a theme based on _s. * * See the [Underscores website](https://underscores.me/) for more details. * * ## OPTIONS * * <slug> * : The slug for the new theme, used for prefixing functions. * * [--activate] * : Activate the newly downloaded theme. * * [--enable-network] * : Enable the newly downloaded theme for the entire network. * * [--theme_name=<title>] * : What to put in the 'Theme Name:' header in 'style.css'. * * [--author=<full-name>] * : What to put in the 'Author:' header in 'style.css'. * * [--author_uri=<uri>] * : What to put in the 'Author URI:' header in 'style.css'. * * [--sassify] * : Include stylesheets as SASS. * * [--woocommerce] * : Include WooCommerce boilerplate files. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate a theme with name "Sample Theme" and author "John Doe" * $ wp scaffold _s sample-theme --theme_name="Sample Theme" --author="John Doe" * Success: Created theme 'Sample Theme'. * * @alias _s */ public function underscores( $args, $assoc_args ) { $theme_slug = $args[0]; $theme_path = WP_CONTENT_DIR . '/themes'; $url = 'https://underscores.me'; $timeout = 30; if ( ! preg_match( '/^[a-z_]\w+$/i', str_replace( '-', '_', $theme_slug ) ) ) { WP_CLI::error( 'Invalid theme slug specified. Theme slugs can only contain letters, numbers, underscores and hyphens, and can only start with a letter or underscore.' ); } $defaults = [ 'theme_name' => ucfirst( $theme_slug ), 'author' => 'Me', 'author_uri' => '', ]; $data = wp_parse_args( $assoc_args, $defaults ); $_s_theme_path = "$theme_path/$data[theme_name]"; $error_msg = $this->check_target_directory( 'theme', $_s_theme_path ); if ( ! empty( $error_msg ) ) { WP_CLI::error( "Invalid theme slug specified. {$error_msg}" ); } $force = Utils\get_flag_value( $assoc_args, 'force' ); $should_write_file = $this->prompt_if_files_will_be_overwritten( $_s_theme_path, $force ); if ( ! $should_write_file ) { WP_CLI::log( 'No files created' ); die; } $theme_description = "Custom theme: {$data['theme_name']}, developed by {$data['author']}"; $body = []; $body['underscoresme_name'] = $data['theme_name']; $body['underscoresme_slug'] = $theme_slug; $body['underscoresme_author'] = $data['author']; $body['underscoresme_author_uri'] = $data['author_uri']; $body['underscoresme_description'] = $theme_description; $body['underscoresme_generate_submit'] = 'Generate'; $body['underscoresme_generate'] = '1'; if ( Utils\get_flag_value( $assoc_args, 'sassify' ) ) { $body['underscoresme_sass'] = 1; } if ( Utils\get_flag_value( $assoc_args, 'woocommerce' ) ) { $body['underscoresme_woocommerce'] = 1; } $tmpfname = wp_tempnam( $url ); $post_args = [ 'timeout' => $timeout, 'body' => $body, 'stream' => true, 'filename' => $tmpfname, ]; $response = wp_remote_post( $url, $post_args ); // Workaround to get scaffolding to work within Travis CI. // See https://github.com/wp-cli/scaffold-command/issues/181 if ( is_wp_error( $response ) && false !== strpos( $response->get_error_message(), 'gnutls_handshake() failed' ) ) { // Certificate problem, falling back to unsecured request instead. $alt_url = str_replace( 'https://', 'http://', $url ); WP_CLI::warning( "Secured request to {$url} failed, using {$alt_url} as a fallback." ); $response = wp_remote_post( $alt_url, $post_args ); } if ( is_wp_error( $response ) ) { WP_CLI::error( $response ); } $response_code = wp_remote_retrieve_response_code( $response ); if ( 200 !== (int) $response_code ) { WP_CLI::error( "Couldn't create theme (received {$response_code} response)." ); } $this->maybe_create_themes_dir(); $this->init_wp_filesystem(); $unzip_result = unzip_file( $tmpfname, $theme_path ); unlink( $tmpfname ); if ( true === $unzip_result ) { $files_to_create = [ "{$theme_path}/{$theme_slug}/.editorconfig" => file_get_contents( self::get_template_path( '.editorconfig' ) ), ]; $this->create_files( $files_to_create, false ); WP_CLI::success( "Created theme '{$data['theme_name']}'." ); } else { WP_CLI::error( "Could not decompress your theme files ('{$tmpfname}') at '{$theme_path}': {$unzip_result->get_error_message()}" ); } if ( Utils\get_flag_value( $assoc_args, 'activate' ) ) { WP_CLI::run_command( [ 'theme', 'activate', $theme_slug ] ); } elseif ( Utils\get_flag_value( $assoc_args, 'enable-network' ) ) { WP_CLI::run_command( [ 'theme', 'enable', $theme_slug ], [ 'network' => true ] ); } } /** * Generates child theme based on an existing theme. * * Creates a child theme folder with `functions.php` and `style.css` files. * * ## OPTIONS * * <slug> * : The slug for the new child theme. * * --parent_theme=<slug> * : What to put in the 'Template:' header in 'style.css'. * * [--theme_name=<title>] * : What to put in the 'Theme Name:' header in 'style.css'. * * [--author=<full-name>] * : What to put in the 'Author:' header in 'style.css'. * * [--author_uri=<uri>] * : What to put in the 'Author URI:' header in 'style.css'. * * [--theme_uri=<uri>] * : What to put in the 'Theme URI:' header in 'style.css'. * * [--activate] * : Activate the newly created child theme. * * [--enable-network] * : Enable the newly created child theme for the entire network. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate a 'sample-theme' child theme based on TwentySixteen * $ wp scaffold child-theme sample-theme --parent_theme=twentysixteen * Success: Created '/var/www/example.com/public_html/wp-content/themes/sample-theme'. * * @subcommand child-theme */ public function child_theme( $args, $assoc_args ) { $theme_slug = $args[0]; if ( in_array( $theme_slug, [ '.', '..' ], true ) ) { WP_CLI::error( "Invalid theme slug specified. The slug cannot be '.' or '..'." ); } $defaults = [ 'theme_name' => ucfirst( $theme_slug ), 'author' => 'Me', 'author_uri' => '', 'theme_uri' => '', ]; $data = wp_parse_args( $assoc_args, $defaults ); $data['slug'] = $theme_slug; $data['parent_theme_function_safe'] = str_replace( [ ' ', '-' ], '_', $data['parent_theme'] ); $data['description'] = ucfirst( $data['parent_theme'] ) . ' child theme.'; $theme_dir = WP_CONTENT_DIR . "/themes/{$theme_slug}"; $error_msg = $this->check_target_directory( 'theme', $theme_dir ); if ( ! empty( $error_msg ) ) { WP_CLI::error( "Invalid theme slug specified. {$error_msg}" ); } $theme_style_path = "{$theme_dir}/style.css"; $theme_functions_path = "{$theme_dir}/functions.php"; $this->maybe_create_themes_dir(); $files_to_create = [ $theme_style_path => self::mustache_render( 'child_theme.mustache', $data ), $theme_functions_path => self::mustache_render( 'child_theme_functions.mustache', $data ), "{$theme_dir}/.editorconfig" => file_get_contents( self::get_template_path( '.editorconfig' ) ), ]; $force = Utils\get_flag_value( $assoc_args, 'force' ); $files_written = $this->create_files( $files_to_create, $force ); $skip_message = 'All theme files were skipped.'; $success_message = "Created '{$theme_dir}'."; $this->log_whether_files_written( $files_written, $skip_message, $success_message ); if ( Utils\get_flag_value( $assoc_args, 'activate' ) ) { WP_CLI::run_command( [ 'theme', 'activate', $theme_slug ] ); } elseif ( Utils\get_flag_value( $assoc_args, 'enable-network' ) ) { WP_CLI::run_command( [ 'theme', 'enable', $theme_slug ], [ 'network' => true ] ); } } private function get_output_path( $assoc_args, $subdir ) { if ( $assoc_args['theme'] ) { $theme = $assoc_args['theme']; if ( is_string( $theme ) ) { $path = get_theme_root( $theme ) . "/{$theme}"; } else { $path = get_stylesheet_directory(); } if ( ! is_dir( $path ) ) { WP_CLI::error( "Can't find '{$theme}' theme." ); } } elseif ( $assoc_args['plugin'] ) { $plugin = $assoc_args['plugin']; $path = WP_PLUGIN_DIR . "/{$plugin}"; if ( ! is_dir( $path ) ) { WP_CLI::error( "Can't find '{$plugin}' plugin." ); } } else { return false; } $path .= $subdir; return $path; } /** * Generates starter code for a plugin. * * The following files are always generated: * * * `plugin-slug.php` is the main PHP plugin file. * * `readme.txt` is the readme file for the plugin. * * `package.json` needed by NPM holds various metadata relevant to the project. Packages: `grunt`, `grunt-wp-i18n` and `grunt-wp-readme-to-markdown`. Scripts: `start`, `readme`, `i18n`. * * `Gruntfile.js` is the JS file containing Grunt tasks. Tasks: `i18n` containing `addtextdomain` and `makepot`, `readme` containing `wp_readme_to_markdown`. * * `.editorconfig` is the configuration file for Editor. * * `.gitignore` tells which files (or patterns) git should ignore. * * `.distignore` tells which files and folders should be ignored in distribution. * * The following files are also included unless the `--skip-tests` is used: * * * `phpunit.xml.dist` is the configuration file for PHPUnit. * * `.travis.yml` is the configuration file for Travis CI. Use `--ci=<provider>` to select a different service. * * `bin/install-wp-tests.sh` configures the WordPress test suite and a test database. * * `tests/bootstrap.php` is the file that makes the current plugin active when running the test suite. * * `tests/test-sample.php` is a sample file containing test cases. * * `.phpcs.xml.dist` is a collection of PHP_CodeSniffer rules. * * ## OPTIONS * * <slug> * : The internal name of the plugin. * * [--dir=<dirname>] * : Put the new plugin in some arbitrary directory path. Plugin directory will be path plus supplied slug. * * [--plugin_name=<title>] * : What to put in the 'Plugin Name:' header. * * [--plugin_description=<description>] * : What to put in the 'Description:' header. * * [--plugin_author=<author>] * : What to put in the 'Author:' header. * * [--plugin_author_uri=<url>] * : What to put in the 'Author URI:' header. * * [--plugin_uri=<url>] * : What to put in the 'Plugin URI:' header. * * [--skip-tests] * : Don't generate files for unit testing. * * [--ci=<provider>] * : Choose a configuration file for a continuous integration provider. * --- * default: travis * options: * - travis * - circle * - gitlab * --- * * [--activate] * : Activate the newly generated plugin. * * [--activate-network] * : Network activate the newly generated plugin. * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * $ wp scaffold plugin sample-plugin * Success: Created plugin files. * Success: Created test files. */ public function plugin( $args, $assoc_args ) { $plugin_slug = $args[0]; $plugin_name = ucwords( str_replace( '-', ' ', $plugin_slug ) ); $plugin_package = str_replace( ' ', '_', $plugin_name ); if ( in_array( $plugin_slug, [ '.', '..' ], true ) ) { WP_CLI::error( "Invalid plugin slug specified. The slug cannot be '.' or '..'." ); } $defaults = [ 'plugin_slug' => $plugin_slug, 'plugin_name' => $plugin_name, 'plugin_package' => $plugin_package, 'plugin_description' => 'PLUGIN DESCRIPTION HERE', 'plugin_author' => 'YOUR NAME HERE', 'plugin_author_uri' => 'YOUR SITE HERE', 'plugin_uri' => 'PLUGIN SITE HERE', 'plugin_tested_up_to' => get_bloginfo( 'version' ), ]; $data = wp_parse_args( $assoc_args, $defaults ); $data['textdomain'] = $plugin_slug; if ( ! empty( $assoc_args['dir'] ) ) { if ( ! is_dir( $assoc_args['dir'] ) ) { WP_CLI::error( "Cannot create plugin in directory that doesn't exist." ); } $plugin_dir = "{$assoc_args['dir']}/{$plugin_slug}"; } else { $plugin_dir = WP_PLUGIN_DIR . "/{$plugin_slug}"; $this->maybe_create_plugins_dir(); $error_msg = $this->check_target_directory( 'plugin', $plugin_dir ); if ( ! empty( $error_msg ) ) { WP_CLI::error( "Invalid plugin slug specified. {$error_msg}" ); } } $plugin_path = "{$plugin_dir}/{$plugin_slug}.php"; $plugin_readme_path = "{$plugin_dir}/readme.txt"; $files_to_create = [ $plugin_path => self::mustache_render( 'plugin.mustache', $data ), $plugin_readme_path => self::mustache_render( 'plugin-readme.mustache', $data ), "{$plugin_dir}/package.json" => self::mustache_render( 'plugin-packages.mustache', $data ), "{$plugin_dir}/Gruntfile.js" => self::mustache_render( 'plugin-gruntfile.mustache', $data ), "{$plugin_dir}/.gitignore" => self::mustache_render( 'plugin-gitignore.mustache', $data ), "{$plugin_dir}/.distignore" => self::mustache_render( 'plugin-distignore.mustache', $data ), "{$plugin_dir}/.editorconfig" => file_get_contents( self::get_template_path( '.editorconfig' ) ), ]; $force = Utils\get_flag_value( $assoc_args, 'force' ); $files_written = $this->create_files( $files_to_create, $force ); $skip_message = 'All plugin files were skipped.'; $success_message = 'Created plugin files.'; $this->log_whether_files_written( $files_written, $skip_message, $success_message ); if ( ! Utils\get_flag_value( $assoc_args, 'skip-tests' ) ) { $command_args = [ 'dir' => $plugin_dir, 'ci' => empty( $assoc_args['ci'] ) ? '' : $assoc_args['ci'], 'force' => $force, ]; WP_CLI::run_command( [ 'scaffold', 'plugin-tests', $plugin_slug ], $command_args ); } if ( Utils\get_flag_value( $assoc_args, 'activate' ) ) { WP_CLI::run_command( [ 'plugin', 'activate', $plugin_slug ] ); } elseif ( Utils\get_flag_value( $assoc_args, 'activate-network' ) ) { WP_CLI::run_command( [ 'plugin', 'activate', $plugin_slug ], [ 'network' => true ] ); } } /** * Generates files needed for running PHPUnit tests in a plugin. * * The following files are generated by default: * * * `phpunit.xml.dist` is the configuration file for PHPUnit. * * `.travis.yml` is the configuration file for Travis CI. Use `--ci=<provider>` to select a different service. * * `bin/install-wp-tests.sh` configures the WordPress test suite and a test database. * * `tests/bootstrap.php` is the file that makes the current plugin active when running the test suite. * * `tests/test-sample.php` is a sample file containing the actual tests. * * `.phpcs.xml.dist` is a collection of PHP_CodeSniffer rules. * * Learn more from the [plugin unit tests documentation](https://make.wordpress.org/cli/handbook/plugin-unit-tests/). * * ## ENVIRONMENT * * The `tests/bootstrap.php` file looks for the WP_TESTS_DIR environment * variable. * * ## OPTIONS * * [<plugin>] * : The name of the plugin to generate test files for. * * [--dir=<dirname>] * : Generate test files for a non-standard plugin path. If no plugin slug is specified, the directory name is used. * * [--ci=<provider>] * : Choose a configuration file for a continuous integration provider. * --- * default: travis * options: * - travis * - circle * - gitlab * - bitbucket * --- * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate unit test files for plugin 'sample-plugin'. * $ wp scaffold plugin-tests sample-plugin * Success: Created test files. * * @subcommand plugin-tests */ public function plugin_tests( $args, $assoc_args ) { $this->scaffold_plugin_theme_tests( $args, $assoc_args, 'plugin' ); } /** * Generates files needed for running PHPUnit tests in a theme. * * The following files are generated by default: * * * `phpunit.xml.dist` is the configuration file for PHPUnit. * * `.travis.yml` is the configuration file for Travis CI. Use `--ci=<provider>` to select a different service. * * `bin/install-wp-tests.sh` configures the WordPress test suite and a test database. * * `tests/bootstrap.php` is the file that makes the current theme active when running the test suite. * * `tests/test-sample.php` is a sample file containing the actual tests. * * `.phpcs.xml.dist` is a collection of PHP_CodeSniffer rules. * * Learn more from the [plugin unit tests documentation](https://make.wordpress.org/cli/handbook/plugin-unit-tests/). * * ## ENVIRONMENT * * The `tests/bootstrap.php` file looks for the WP_TESTS_DIR environment * variable. * * ## OPTIONS * * [<theme>] * : The name of the theme to generate test files for. * * [--dir=<dirname>] * : Generate test files for a non-standard theme path. If no theme slug is specified, the directory name is used. * * [--ci=<provider>] * : Choose a configuration file for a continuous integration provider. * --- * default: travis * options: * - travis * - circle * - gitlab * - bitbucket * --- * * [--force] * : Overwrite files that already exist. * * ## EXAMPLES * * # Generate unit test files for theme 'twentysixteenchild'. * $ wp scaffold theme-tests twentysixteenchild * Success: Created test files. * * @subcommand theme-tests */ public function theme_tests( $args, $assoc_args ) { $this->scaffold_plugin_theme_tests( $args, $assoc_args, 'theme' ); } private function scaffold_plugin_theme_tests( $args, $assoc_args, $type ) { $wp_filesystem = $this->init_wp_filesystem(); if ( ! empty( $args[0] ) ) { $slug = $args[0]; if ( in_array( $slug, [ '.', '..' ], true ) ) { WP_CLI::error( "Invalid {$type} slug specified. The slug cannot be '.' or '..'." ); } if ( 'theme' === $type ) { $theme = wp_get_theme( $slug ); if ( $theme->exists() ) { $target_dir = $theme->get_stylesheet_directory(); } else { WP_CLI::error( "Invalid {$type} slug specified. The theme '{$slug}' does not exist." ); } } else { $target_dir = WP_PLUGIN_DIR . "/{$slug}"; } if ( empty( $assoc_args['dir'] ) && ! is_dir( $target_dir ) ) { WP_CLI::error( "Invalid {$type} slug specified. No such target directory '{$target_dir}'." ); } $error_msg = $this->check_target_directory( $type, $target_dir ); if ( ! empty( $error_msg ) ) { WP_CLI::error( "Invalid {$type} slug specified. {$error_msg}" ); } } if ( ! empty( $assoc_args['dir'] ) ) { $target_dir = $assoc_args['dir']; if ( ! is_dir( $target_dir ) ) { WP_CLI::error( "Invalid {$type} directory specified. No such directory '{$target_dir}'." ); } if ( empty( $slug ) ) { $slug = Utils\basename( $target_dir ); } } if ( empty( $slug ) || empty( $target_dir ) ) { WP_CLI::error( "Invalid {$type} specified." ); } $name = ucwords( str_replace( '-', ' ', $slug ) ); $package = str_replace( ' ', '_', $name ); $tests_dir = "{$target_dir}/tests"; $bin_dir = "{$target_dir}/bin"; $wp_filesystem->mkdir( $tests_dir ); $wp_filesystem->mkdir( $bin_dir ); $wp_versions_to_test = []; // Parse plugin readme.txt if ( file_exists( "{$target_dir}/readme.txt" ) ) { $readme_content = file_get_contents( "{$target_dir}/readme.txt" ); preg_match( '/Requires at least\:(.*)\n/m', $readme_content, $matches ); if ( isset( $matches[1] ) && $matches[1] ) { $wp_versions_to_test[] = trim( $matches[1] ); } } $wp_versions_to_test[] = 'latest'; $wp_versions_to_test[] = 'trunk'; $template_data = [ "{$type}_slug" => $slug, "{$type}_package" => $package, ]; $force = Utils\get_flag_value( $assoc_args, 'force' ); $files_to_create = [ "{$tests_dir}/bootstrap.php" => self::mustache_render( "{$type}-bootstrap.mustache", $template_data ), "{$tests_dir}/test-sample.php" => self::mustache_render( "{$type}-test-sample.mustache", $template_data ), ]; if ( 'travis' === $assoc_args['ci'] ) { $files_to_create[ "{$target_dir}/.travis.yml" ] = self::mustache_render( 'plugin-travis.mustache', compact( 'wp_versions_to_test' ) ); } elseif ( 'circle' === $assoc_args['ci'] ) { $files_to_create[ "{$target_dir}/.circleci/config.yml" ] = self::mustache_render( 'plugin-circle.mustache', compact( 'wp_versions_to_test' ) ); } elseif ( 'gitlab' === $assoc_args['ci'] ) { $files_to_create[ "{$target_dir}/.gitlab-ci.yml" ] = self::mustache_render( 'plugin-gitlab.mustache' ); } elseif ( 'bitbucket' === $assoc_args['ci'] ) { $files_to_create[ "{$target_dir}/bitbucket-pipelines.yml" ] = self::mustache_render( 'plugin-bitbucket.mustache' ); } $files_written = $this->create_files( $files_to_create, $force ); $to_copy = [ 'install-wp-tests.sh' => $bin_dir, 'phpunit.xml.dist' => $target_dir, '.phpcs.xml.dist' => $target_dir, ]; foreach ( $to_copy as $file => $dir ) { $file_name = "{$dir}/{$file}"; $force = Utils\get_flag_value( $assoc_args, 'force' ); $should_write_file = $this->prompt_if_files_will_be_overwritten( $file_name, $force ); if ( ! $should_write_file ) { continue; } $files_written[] = $file_name; $wp_filesystem->copy( self::get_template_path( $file ), $file_name, true ); if ( 'install-wp-tests.sh' === $file ) { if ( ! $wp_filesystem->chmod( "{$dir}/{$file}", 0755 ) ) { WP_CLI::warning( "Couldn't mark 'install-wp-tests.sh' as executable." ); } } } $skip_message = 'All test files were skipped.'; $success_message = 'Created test files.'; $this->log_whether_files_written( $files_written, $skip_message, $success_message ); } /** * Checks that the `$target_dir` is a child directory of the WP themes or plugins directory, depending on `$type`. * * @param string $type "theme" or "plugin" * @param string $target_dir The theme/plugin directory to check. * * @return null|string Returns null on success, error message on error. */ private function check_target_directory( $type, $target_dir ) { $parent_dir = dirname( self::canonicalize_path( str_replace( '\\', '/', $target_dir ) ) ); if ( 'theme' === $type && str_replace( '\\', '/', WP_CONTENT_DIR . '/themes' ) !== $parent_dir ) { return sprintf( 'The target directory \'%1$s\' is not in \'%2$s\'.', $target_dir, WP_CONTENT_DIR . '/themes' ); } if ( 'plugin' === $type && str_replace( '\\', '/', WP_PLUGIN_DIR ) !== $parent_dir ) { return sprintf( 'The target directory \'%1$s\' is not in \'%2$s\'.', $target_dir, WP_PLUGIN_DIR ); } // Success. return null; } protected function create_files( $files_and_contents, $force ) { $wp_filesystem = $this->init_wp_filesystem(); $wrote_files = []; foreach ( $files_and_contents as $filename => $contents ) { $should_write_file = $this->prompt_if_files_will_be_overwritten( $filename, $force ); if ( ! $should_write_file ) { continue; } $wp_filesystem->mkdir( dirname( $filename ) ); if ( ! $wp_filesystem->put_contents( $filename, $contents ) ) { WP_CLI::error( "Error creating file: {$filename}" ); } elseif ( $should_write_file ) { $wrote_files[] = $filename; } } return $wrote_files; } protected function prompt_if_files_will_be_overwritten( $filename, $force ) { $should_write_file = true; if ( ! file_exists( $filename ) ) { return true; } WP_CLI::warning( 'File already exists.' ); WP_CLI::log( $filename ); if ( ! $force ) { do { $answer = cli\prompt( 'Skip this file, or replace it with scaffolding?', $default = false, $marker = '[s/r]: ' ); } while ( ! in_array( $answer, [ 's', 'r' ], true ) ); $should_write_file = 'r' === $answer; } $outcome = $should_write_file ? 'Replacing' : 'Skipping'; WP_CLI::log( $outcome . PHP_EOL ); return $should_write_file; } protected function log_whether_files_written( $files_written, $skip_message, $success_message ) { if ( empty( $files_written ) ) { WP_CLI::log( $skip_message ); } else { WP_CLI::success( $success_message ); } } /** * Extracts dashicon name when provided or return null otherwise. * * @param array $assoc_args * @return string|null */ private function extract_dashicon( $assoc_args ) { $dashicon = Utils\get_flag_value( $assoc_args, 'dashicon' ); if ( ! $dashicon ) { return null; } return preg_replace( '/dashicon(-|s-)/', '', $dashicon ); } /** * If you're writing your files to your theme directory your textdomain also needs to be the same as your theme. * Same goes for when plugin is being used. */ private function get_textdomain( $textdomain, $args ) { if ( strlen( $textdomain ) ) { return $textdomain; } if ( $args['theme'] ) { return $this->get_theme_name( $args['theme'] ); } if ( $args['plugin'] && true !== $args['plugin'] ) { return $args['plugin']; } return 'YOUR-TEXTDOMAIN'; } /** * Generates the machine name for function declarations. * * @param string $slug Slug name to convert. * @return string */ private function generate_machine_name( $slug ) { return str_replace( '-', '_', $slug ); } /** * Pluralizes a noun. * * @see Inflector::pluralize() * @param string $word Word to be pluralized. * @return string */ private function pluralize( $word ) { return Inflector::pluralize( $word ); } protected function extract_args( $assoc_args, $defaults ) { $out = []; foreach ( $defaults as $key => $value ) { $out[ $key ] = Utils\get_flag_value( $assoc_args, $key, $value ); } return $out; } protected function quote_comma_list_elements( $comma_list ) { return "'" . implode( "', '", explode( ',', $comma_list ) ) . "'"; } /** * Creates the themes directory if it doesn't already exist. */ protected function maybe_create_themes_dir() { $themes_dir = WP_CONTENT_DIR . '/themes'; if ( ! is_dir( $themes_dir ) ) { wp_mkdir_p( $themes_dir ); } } /** * Creates the plugins directory if it doesn't already exist. */ protected function maybe_create_plugins_dir() { if ( ! is_dir( WP_PLUGIN_DIR ) ) { wp_mkdir_p( WP_PLUGIN_DIR ); } } /** * Initializes WP_Filesystem. */ protected function init_wp_filesystem() { global $wp_filesystem; WP_Filesystem(); return $wp_filesystem; } /** * Localizes the template path. */ private static function mustache_render( $template, $data = [] ) { return Utils\mustache_render( dirname( dirname( __FILE__ ) ) . "/templates/{$template}", $data ); } /** * Gets the template path based on installation type. */ private static function get_template_path( $template ) { $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $template_path = "{$command_root}/templates/{$template}"; if ( ! file_exists( $template_path ) ) { WP_CLI::error( "Couldn't find {$template}" ); } return $template_path; } /* * Returns the canonicalized path, with dot and double dot segments resolved. * * Copied from Symfony\Component\DomCrawler\AbstractUriElement::canonicalizePath(). * Implements RFC 3986, section 5.2.4. * * @param string $path The path to make canonical. * * @return string The canonicalized path. */ private static function canonicalize_path( $path ) { if ( '' === $path || '/' === $path ) { return $path; } if ( '.' === substr( $path, -1 ) ) { $path .= '/'; } $output = []; foreach ( explode( '/', $path ) as $segment ) { if ( '..' === $segment ) { array_pop( $output ); } elseif ( '.' !== $segment ) { $output[] = $segment; } } return implode( '/', $output ); } /** * Gets an active theme's name when true provided or the same name otherwise. * * @param string|bool $theme Theme name or true. * @return string */ private function get_theme_name( $theme ) { if ( true === $theme ) { $theme = wp_get_theme()->template; } return strtolower( $theme ); } } <?php // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound -- Renaming breaks Phar compat. function wp_export( $args = array() ) { $defaults = array( 'filters' => array(), 'format' => 'WP_Export_WXR_Formatter', 'writer' => 'WP_Export_Returner', 'writer_args' => null, ); $args = wp_parse_args( $args, $defaults ); $export_query = new WP_Export_Query( $args['filters'] ); $formatter = new $args['format']( $export_query ); $writer = new $args['writer']( $formatter, $args['writer_args'] ); try { return $writer->export(); } catch ( WP_Export_Exception $e ) { return new WP_Error( 'wp-export-error', $e->getMessage() ); } } // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedFunctionFound,WordPress.NamingConventions.ValidFunctionName.FunctionNameInvalid -- Renaming breaks Phar compat. function _wp_export_build_IN_condition( $column_name, $values, $format = '%s' ) { global $wpdb; if ( ! is_array( $values ) || empty( $values ) ) { return ''; } $formats = implode( ', ', array_fill( 0, count( $values ), $format ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared,WordPress.DB.PreparedSQLPlaceholders.UnfinishedPrepare -- $column_name_sql escaped as ident, $formats hardcoded value. return $wpdb->prepare( "{$column_name} IN ({$formats})", $values ); } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_export_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_export_autoloader ) ) { require_once $wpcli_export_autoloader; } WP_CLI::add_command( 'export', 'Export_Command' ); <?php class WP_Post_IDs_Iterator implements Iterator { private $limit = 100; private $post_ids; private $ids_left; private $results = array(); public function __construct( $post_ids, $limit = null ) { $this->db = $GLOBALS['wpdb']; $this->post_ids = $post_ids; $this->ids_left = $post_ids; if ( ! is_null( $limit ) ) { $this->limit = $limit; } } public function current() { return $this->results[ $this->index_in_results ]; } public function key() { return $this->global_index; } public function next() { $this->index_in_results++; $this->global_index++; } public function rewind() { $this->results = array(); $this->global_index = 0; $this->index_in_results = 0; $this->ids_left = $this->post_ids; } public function valid() { if ( isset( $this->results[ $this->index_in_results ] ) ) { return true; } if ( empty( $this->ids_left ) ) { return false; } $has_posts = $this->load_next_posts_from_db(); if ( ! $has_posts ) { return false; } $this->index_in_results = 0; return true; } private function load_next_posts_from_db() { $next_batch_post_ids = array_splice( $this->ids_left, 0, $this->limit ); $in_post_ids_sql = _wp_export_build_IN_condition( 'ID', $next_batch_post_ids ); $this->results = $this->db->get_results( "SELECT * FROM {$this->db->posts} WHERE {$in_post_ids_sql}" ); if ( ! $this->results ) { if ( $this->db->last_error ) { throw new WP_Iterator_Exception( "Database error: {$this->db->last_error}" ); } else { return false; } } return true; } } <?php class WP_Export_File_Writer extends WP_Export_Base_Writer { private $f; private $file_name; public function __construct( $formatter, $file_name ) { parent::__construct( $formatter ); $this->file_name = $file_name; } public function export() { $this->f = fopen( $this->file_name, 'w' ); if ( ! $this->f ) { throw new WP_Export_Exception( "WP Export: error opening {$this->file_name} for writing." ); } try { parent::export(); } catch ( WP_Export_Exception $e ) { fclose( $this->f ); throw $e; } catch ( WP_Export_Term_Exception $e ) { fclose( $this->f ); throw $e; } fclose( $this->f ); } protected function write( $xml ) { $res = fwrite( $this->f, $xml ); if ( false === $res ) { throw new WP_Export_Exception( 'WP Export: error writing to export file.' ); } } } <?php class WP_Export_Exception extends RuntimeException { } <?php use WP_CLI\Utils; /** * Represents a set of posts and other site data to be exported. * * An immutable object, which gathers all data needed for the export. */ class WP_Export_Query { const QUERY_CHUNK = 100; private static $defaults = [ 'post_ids' => null, 'post_type' => null, 'status' => null, 'author' => null, 'start_date' => null, 'end_date' => null, 'start_id' => null, 'max_num_posts' => null, 'category' => null, ]; private $post_ids; private $filters; private $wheres = []; private $joins = []; private $author; private $category; public $missing_parents = false; public function __construct( $filters = [] ) { $this->filters = wp_parse_args( $filters, self::$defaults ); $this->post_ids = $this->calculate_post_ids(); } public function post_ids() { return $this->post_ids; } public function charset() { return get_bloginfo( 'charset' ); } public function site_metadata() { $metadata = [ 'name' => $this->bloginfo_rss( 'name' ), 'url' => $this->bloginfo_rss( 'url' ), 'language' => $this->bloginfo_rss( 'language' ), 'description' => $this->bloginfo_rss( 'description' ), 'pubDate' => date( 'D, d M Y H:i:s +0000' ), // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date 'site_url' => is_multisite() ? network_home_url() : $this->bloginfo_rss( 'url' ), 'blog_url' => $this->bloginfo_rss( 'url' ), ]; return $metadata; } public function wp_generator_tag() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. return apply_filters( 'the_generator', get_the_generator( 'export' ), 'export' ); } public function authors() { global $wpdb; $authors = []; $author_ids = (array) $wpdb->get_col( "SELECT DISTINCT post_author FROM $wpdb->posts WHERE post_status != 'auto-draft'" ); foreach ( $author_ids as $author_id ) { $authors[] = get_userdata( $author_id ); } $authors = array_filter( $authors ); return $authors; } public function categories() { if ( $this->category ) { return [ $this->category ]; } if ( $this->filters['post_type'] ) { return []; } $categories = (array) get_categories( [ 'get' => 'all' ] ); $this->check_for_orphaned_terms( $categories ); $categories = self::topologically_sort_terms( $categories ); return $categories; } public function tags() { if ( $this->filters['post_type'] ) { return []; } $tags = (array) get_tags( [ 'get' => 'all' ] ); $this->check_for_orphaned_terms( $tags ); return $tags; } public function custom_taxonomies_terms() { if ( $this->filters['post_type'] ) { return []; } $custom_taxonomies = get_taxonomies( [ '_builtin' => false ] ); $custom_terms = (array) get_terms( $custom_taxonomies, [ 'get' => 'all' ] ); $this->check_for_orphaned_terms( $custom_terms ); $custom_terms = self::topologically_sort_terms( $custom_terms ); return $custom_terms; } public function nav_menu_terms() { $nav_menus = wp_get_nav_menus(); foreach ( $nav_menus as $term ) { $term->description = ''; } return $nav_menus; } public function exportify_post( $post ) { $GLOBALS['wp_query']->in_the_loop = true; $previous_global_post = Utils\get_flag_value( $GLOBALS, 'post' ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Temporary override. $GLOBALS['post'] = $post; setup_postdata( $post ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $post->post_content = apply_filters( 'the_content_export', $post->post_content ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $post->post_excerpt = apply_filters( 'the_excerpt_export', $post->post_excerpt ); $post->is_sticky = is_sticky( $post->ID ) ? 1 : 0; $post->terms = self::get_terms_for_post( $post ); $post->meta = self::get_meta_for_post( $post ); $post->comments = $this->get_comments_for_post( $post ); // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Revert back to original. $GLOBALS['post'] = $previous_global_post; return $post; } public function posts() { $posts_iterator = new WP_Post_IDs_Iterator( $this->post_ids, self::QUERY_CHUNK ); return new WP_Map_Iterator( $posts_iterator, [ $this, 'exportify_post' ] ); } private function calculate_post_ids() { global $wpdb; if ( is_array( $this->filters['post_ids'] ) ) { if ( $this->filters['with_attachments'] ) { $attachment_post_ids = $this->include_attachment_ids( $this->filters['post_ids'] ); $this->filters['post_ids'] = array_merge( $this->filters['post_ids'], $attachment_post_ids ); } return $this->filters['post_ids']; } $this->post_type_where(); $this->status_where(); $this->author_where(); $this->start_date_where(); $this->end_date_where(); $this->start_id_where(); $this->category_where(); $where = implode( ' AND ', array_filter( $this->wheres ) ); if ( $where ) { $where = "WHERE $where"; } $join = implode( ' ', array_filter( $this->joins ) ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Individual where clauses run through $wpdb->prepare(). $post_ids = $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} AS p {$join} {$where} {$this->max_num_posts()}" ); if ( $this->filters['post_type'] ) { $post_ids = array_merge( $post_ids, $this->include_attachment_ids( $post_ids ) ); } return $post_ids; } private function post_type_where() { $post_types_filters = [ 'can_export' => true ]; if ( $this->filters['post_type'] ) { $post_types = $this->filters['post_type']; // Flatten single post types if ( is_array( $post_types ) && 1 === count( $post_types ) ) { $post_types = array_shift( $post_types ); } $post_types_filters = array_merge( $post_types_filters, [ 'name' => $post_types ] ); } // Multiple post types if ( isset( $post_types_filters['name'] ) && is_array( $post_types_filters['name'] ) ) { $post_types = []; foreach ( $post_types_filters['name'] as $post_type ) { if ( post_type_exists( $post_type ) ) { $post_types[] = $post_type; } } } else { $post_types = get_post_types( $post_types_filters ); } if ( ! $post_types ) { $this->wheres[] = 'p.post_type IS NULL'; return; } if ( false === $this->filters['with_attachments'] && ( ! $this->filters['post_type'] || ! in_array( 'attachment', $this->filters['post_type'], true ) ) ) { unset( $post_types['attachment'] ); } $this->wheres[] = _wp_export_build_IN_condition( 'p.post_type', $post_types ); } private function status_where() { global $wpdb; if ( ! $this->filters['status'] ) { $this->wheres[] = "p.post_status != 'auto-draft'"; return; } $this->wheres[] = $wpdb->prepare( 'p.post_status = %s', $this->filters['status'] ); } private function author_where() { global $wpdb; $user = $this->find_user_from_any_object( $this->filters['author'] ); if ( ! $user || is_wp_error( $user ) ) { return; } $this->author = $user; $this->wheres[] = $wpdb->prepare( 'p.post_author = %d', $user->ID ); } private function start_date_where() { global $wpdb; $timestamp = strtotime( $this->filters['start_date'] ); if ( ! $timestamp ) { return; } $this->wheres[] = $wpdb->prepare( 'p.post_date >= %s', date( 'Y-m-d 00:00:00', $timestamp ) ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } private function end_date_where() { global $wpdb; if ( preg_match( '/^\d{4}-\d{2}$/', $this->filters['end_date'] ) ) { $timestamp = $this->get_timestamp_for_the_last_day_of_a_month( $this->filters['end_date'] ); } else { $timestamp = strtotime( $this->filters['end_date'] ); } if ( ! $timestamp ) { return; } $this->wheres[] = $wpdb->prepare( 'p.post_date <= %s', date( 'Y-m-d 23:59:59', $timestamp ) ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } private function start_id_where() { global $wpdb; $start_id = absint( $this->filters['start_id'] ); if ( 0 === $start_id ) { return; } $this->wheres[] = $wpdb->prepare( 'p.ID >= %d', $start_id ); } private function get_timestamp_for_the_last_day_of_a_month( $yyyy_mm ) { return strtotime( "$yyyy_mm +1month -1day" ); } private function category_where() { global $wpdb; if ( 'post' !== $this->filters['post_type'] && ! in_array( 'post', (array) $this->filters['post_type'], true ) ) { return; } $category = $this->find_category_from_any_object( $this->filters['category'] ); if ( ! $category ) { return; } $this->category = $category; $this->joins[] = "INNER JOIN {$wpdb->term_relationships} AS tr ON (p.ID = tr.object_id)"; $this->wheres[] = $wpdb->prepare( 'tr.term_taxonomy_id = %d', $category->term_taxonomy_id ); } private function max_num_posts() { if ( $this->filters['max_num_posts'] > 0 ) { return "LIMIT {$this->filters['max_num_posts']}"; } else { return ''; } } private function include_attachment_ids( $post_ids ) { global $wpdb; if ( ! $post_ids ) { return []; } $attachment_ids = []; // phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition -- Assigment is part of the break condition. while ( $batch_of_post_ids = array_splice( $post_ids, 0, self::QUERY_CHUNK ) ) { $post_parent_condition = _wp_export_build_IN_condition( 'post_parent', $batch_of_post_ids ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- Escaped in wpcli_export_build_in_condition() function. $attachment_ids = array_merge( $attachment_ids, (array) $wpdb->get_col( "SELECT ID FROM {$wpdb->posts} WHERE post_type = 'attachment' AND {$post_parent_condition}" ) ); } return array_map( 'intval', $attachment_ids ); } private function bloginfo_rss( $section ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. return apply_filters( 'bloginfo_rss', get_bloginfo_rss( $section ), $section ); } private function find_user_from_any_object( $user ) { if ( is_numeric( $user ) ) { return get_user_by( 'id', $user ); } elseif ( is_string( $user ) ) { return get_user_by( 'login', $user ); } elseif ( isset( $user->ID ) ) { return get_user_by( 'id', $user->ID ); } return false; } private function find_category_from_any_object( $category ) { if ( is_numeric( $category ) ) { return get_term( $category, 'category' ); } elseif ( is_string( $category ) ) { $term = term_exists( $category, 'category' ); return isset( $term['term_id'] ) ? get_term( $term['term_id'], 'category' ) : false; } elseif ( isset( $category->term_id ) ) { return get_term( $category->term_id, 'category' ); } return false; } private static function topologically_sort_terms( $terms ) { $sorted = []; // phpcs:ignore WordPress.CodeAnalysis.AssignmentInCondition.FoundInWhileCondition -- assignment is used as break condition. while ( $term = array_shift( $terms ) ) { if ( 0 === (int) $term->parent || isset( $sorted[ $term->parent ] ) ) { $sorted[ $term->term_id ] = $term; } else { $terms[] = $term; } } return $sorted; } private function check_for_orphaned_terms( $terms ) { $term_ids = []; $have_parent = []; foreach ( $terms as $term ) { $term_ids[ $term->term_id ] = true; if ( 0 !== (int) $term->parent ) { $have_parent[] = $term; } } foreach ( $have_parent as $has_parent ) { if ( ! isset( $term_ids[ $has_parent->parent ] ) ) { $this->missing_parents = $has_parent; throw new WP_Export_Term_Exception( "Term is missing a parent: {$has_parent->slug} ({$has_parent->term_taxonomy_id})" ); } } } private static function get_terms_for_post( $post ) { $taxonomies = get_object_taxonomies( $post->post_type ); if ( empty( $taxonomies ) ) { return []; } return wp_get_object_terms( $post->ID, $taxonomies ) ?: []; } private static function get_meta_for_post( $post ) { global $wpdb; $meta_for_export = []; $meta_from_db = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->postmeta WHERE post_id = %d", $post->ID ) ); foreach ( $meta_from_db as $meta ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. if ( apply_filters( 'wxr_export_skip_postmeta', false, $meta->meta_key, $meta ) ) { continue; } if ( in_array( $meta->meta_key, [ '_edit_lock', '_wp_attachment_metadata', '_wp_attached_file' ], true ) ) { continue; } $meta_for_export[] = $meta; } return $meta_for_export; } private function get_comments_for_post( $post ) { global $wpdb; if ( isset( $this->filters['skip_comments'] ) ) { return []; } $comments = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->comments WHERE comment_post_ID = %d AND comment_approved <> 'spam'", $post->ID ) ); foreach ( $comments as $comment ) { $comment->meta = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) ) ?: []; } return $comments; } } <?php class WP_Export_Term_Exception extends RuntimeException { } <?php class WP_Map_Iterator extends IteratorIterator { public function __construct( $iterator, $callback ) { $this->callback = $callback; parent::__construct( $iterator ); } public function current() { $original_current = parent::current(); return call_user_func( $this->callback, $original_current ); } } <?php class WP_Export_Returner extends WP_Export_Base_Writer { private $result = ''; public function export() { $this->private = ''; try { parent::export(); } catch ( WP_Export_Exception $e ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Possibly used by third party extension. $message = apply_filters( 'export_error_message', $e->getMessage() ); return new WP_Error( 'wp-export-error', $message ); } catch ( WP_Export_Term_Exception $e ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Possibly used by third party extensions. do_action( 'export_term_orphaned', $this->formatter->export->missing_parents ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Possibly used by third party extension. $message = apply_filters( 'export_term_error_message', $e->getMessage() ); return new WP_Error( 'wp-export-error', $message ); } return $this->result; } protected function write( $xml ) { $this->result .= $xml; } } <?php use WP_CLI\Utils; // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- Changing breaks Phar compat. define( 'WP_CLI_EXPORT_COMMAND_NO_SPLIT', '-1' ); /** * Exports WordPress content to a WXR file. * * ## EXAMPLES * * # Export posts published by the user between given start and end date * $ wp export --dir=/tmp/ --user=admin --post_type=post --start_date=2011-01-01 --end_date=2011-12-31 * Starting export process... * Writing to file /tmp/staging.wordpress.2016-05-24.000.xml * Success: All done with export. * * @package wp-cli */ class Export_Command extends WP_CLI_Command { /** * Initialize the array of arguments that will be eventually be passed to export_wp. * * @var array */ public $export_args = []; private $stdout; private $max_file_size; private $wxr_path; /** * Exports WordPress content to a WXR file. * * Generates one or more WXR files containing authors, terms, posts, * comments, and attachments. WXR files do not include site configuration * (options) or the attachment files themselves. * * ## OPTIONS * * [--dir=<dirname>] * : Full path to directory where WXR export files should be stored. Defaults * to current working directory. * * [--stdout] * : Output the whole XML using standard output (incompatible with --dir=) * * [--skip_comments] * : Don't include comments in the WXR export file. * * [--max_file_size=<MB>] * : A single export file should have this many megabytes. -1 for unlimited. * --- * default: 15 * --- * * ## FILTERS * * [--start_date=<date>] * : Export only posts published after this date, in format YYYY-MM-DD. * * [--end_date=<date>] * : Export only posts published before this date, in format YYYY-MM-DD. * * [--post_type=<post-type>] * : Export only posts with this post_type. Separate multiple post types with a * comma. * --- * default: any * --- * * [--post_type__not_in=<post-type>] * : Export all post types except those identified. Separate multiple post types * with a comma. Defaults to none. * * [--post__in=<pid>] * : Export all posts specified as a comma- or space-separated list of IDs. * Post's attachments won't be exported unless --with_attachments is specified. * * [--with_attachments] * : Force including attachments in case --post__in has been specified. * * [--start_id=<pid>] * : Export only posts with IDs greater than or equal to this post ID. * * [--max_num_posts=<num>] * : Export no more than <num> posts (excluding attachments). * * [--author=<author>] * : Export only posts by this author. Can be either user login or user ID. * * [--category=<name>] * : Export only posts in this category. * * [--post_status=<status>] * : Export only posts with this status. * * [--filename_format=<format>] * : Use a custom format for export filenames. Defaults to '{site}.wordpress.{date}.{n}.xml'. * * ## EXAMPLES * * # Export posts published by the user between given start and end date * $ wp export --dir=/tmp/ --user=admin --post_type=post --start_date=2011-01-01 --end_date=2011-12-31 * Starting export process... * Writing to file /tmp/staging.wordpress.2016-05-24.000.xml * Success: All done with export. * * # Export posts by IDs * $ wp export --dir=/tmp/ --post__in=123,124,125 * Starting export process... * Writing to file /tmp/staging.wordpress.2016-05-24.000.xml * Success: All done with export. * * # Export a random subset of content * $ wp export --post__in="$(wp post list --post_type=post --orderby=rand --posts_per_page=8 --format=ids)" * Starting export process... * Writing to file /var/www/example.com/public_html/staging.wordpress.2016-05-24.000.xml * Success: All done with export. */ public function __invoke( $_, $assoc_args ) { $defaults = [ 'dir' => null, 'stdout' => false, 'start_date' => null, 'end_date' => null, 'post_type' => null, 'post_type__not_in' => null, 'max_num_posts' => null, 'author' => null, 'category' => null, 'post_status' => null, 'post__in' => null, 'with_attachments' => true, // or FALSE if user requested some post__in 'start_id' => null, 'skip_comments' => null, 'max_file_size' => 15, 'filename_format' => '{site}.wordpress.{date}.{n}.xml', ]; if ( ! empty( $assoc_args['stdout'] ) && ( ! empty( $assoc_args['dir'] ) || ! empty( $assoc_args['filename_format'] ) ) ) { WP_CLI::error( '--stdout and --dir cannot be used together.' ); } if ( ! empty( $assoc_args['post__in'] ) && empty( $assoc_args['with_attachments'] ) ) { $defaults['with_attachments'] = false; } $assoc_args = wp_parse_args( $assoc_args, $defaults ); $this->validate_args( $assoc_args ); $this->export_args['with_attachments'] = Utils\get_flag_value( $assoc_args, 'with_attachments', $defaults['with_attachments'] ); if ( ! function_exists( 'wp_export' ) ) { self::load_export_api(); } if ( ! $this->stdout ) { WP_CLI::log( 'Starting export process...' ); } add_action( 'wp_export_new_file', static function ( $file_path ) { WP_CLI::log( sprintf( 'Writing to file %s', $file_path ) ); Utils\wp_clear_object_cache(); } ); try { if ( $this->stdout ) { wp_export( [ 'filters' => $this->export_args, 'writer' => 'WP_Export_File_Writer', 'writer_args' => 'php://output', ] ); } else { wp_export( [ 'filters' => $this->export_args, 'writer' => 'WP_Export_Split_Files_Writer', 'writer_args' => [ 'max_file_size' => $this->max_file_size, 'destination_directory' => $this->wxr_path, 'filename_template' => self::get_filename_template( $assoc_args['filename_format'] ), ], ] ); } } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } if ( ! $this->stdout ) { WP_CLI::success( 'All done with export.' ); } } private static function get_filename_template( $filename_format ) { $sitename = sanitize_key( get_bloginfo( 'name' ) ); if ( empty( $sitename ) ) { $sitename = 'site'; } return str_replace( [ '{site}', '{date}', '{n}' ], [ $sitename, date( 'Y-m-d' ), '%03d' ], $filename_format ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } public static function load_export_api() { require dirname( __DIR__ ) . '/functions.php'; } private function validate_args( $args ) { $has_errors = false; foreach ( $args as $key => $value ) { if ( is_callable( [ $this, 'check_' . $key ] ) ) { $result = call_user_func( [ $this, 'check_' . $key ], $value ); if ( false === $result ) { $has_errors = true; } } } if ( $args['stdout'] ) { $this->wxr_path = null; $this->stdout = true; } if ( $has_errors ) { WP_CLI::halt( 1 ); } } private function check_dir( $path ) { if ( empty( $path ) ) { $path = getcwd(); } elseif ( ! is_dir( $path ) ) { WP_CLI::error( sprintf( "The directory '%s' does not exist.", $path ) ); } elseif ( ! is_writable( $path ) ) { WP_CLI::error( sprintf( "The directory '%s' is not writable.", $path ) ); } $this->wxr_path = trailingslashit( $path ); return true; } private function check_start_date( $date ) { if ( null === $date ) { return true; } $time = strtotime( $date ); if ( ! empty( $date ) && ! $time ) { WP_CLI::warning( sprintf( 'The start_date %s is invalid.', $date ) ); return false; } $this->export_args['start_date'] = date( 'Y-m-d', $time ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date return true; } private function check_end_date( $date ) { if ( null === $date ) { return true; } $time = strtotime( $date ); if ( ! empty( $date ) && ! $time ) { WP_CLI::warning( sprintf( 'The end_date %s is invalid.', $date ) ); return false; } $this->export_args['end_date'] = date( 'Y-m-d', $time ); // phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date return true; } private function check_post_type( $post_type ) { if ( null === $post_type || 'any' === $post_type ) { return true; } $post_type = array_unique( array_filter( explode( ',', $post_type ) ) ); $post_types = get_post_types(); foreach ( $post_type as $type ) { if ( ! in_array( $type, $post_types, true ) ) { WP_CLI::warning( sprintf( 'The post type %s does not exist. Choose "any" or any of these existing post types instead: %s', $type, implode( ', ', $post_types ) ) ); return false; } } $this->export_args['post_type'] = $post_type; return true; } private function check_post_type__not_in( $post_type ) { if ( null === $post_type ) { return true; } $post_type = array_unique( array_filter( explode( ',', $post_type ) ) ); $post_types = get_post_types(); foreach ( $post_type as $type ) { if ( ! in_array( $type, $post_types, true ) ) { WP_CLI::warning( sprintf( 'The post type %s does not exist. Use any of these existing post types instead: %s', $type, implode( ', ', $post_types ) ) ); return false; } } $this->export_args['post_type'] = array_diff( $post_types, $post_type ); return true; } private function check_post__in( $post__in ) { if ( null === $post__in ) { return true; } $separator = false !== stripos( $post__in, ' ' ) ? ' ' : ','; $post__in = array_filter( array_unique( array_map( 'intval', explode( $separator, $post__in ) ) ) ); if ( empty( $post__in ) ) { WP_CLI::warning( 'post__in should be comma-separated post IDs.' ); return false; } // New exporter uses a different argument. $this->export_args['post_ids'] = $post__in; return true; } private function check_start_id( $start_id ) { if ( null === $start_id ) { return true; } $start_id = (int) $start_id; // Post IDs must be greater than 0. if ( 0 >= $start_id ) { WP_CLI::warning( "Invalid start ID: {$start_id}" ); return false; } $this->export_args['start_id'] = $start_id; return true; } private function check_author( $author ) { if ( null === $author ) { return true; } // phpcs:ignore WordPress.WP.DeprecatedFunctions.get_users_of_blogFound -- Fallback. $authors = function_exists( 'get_users' ) ? get_users() : get_users_of_blog(); if ( empty( $authors ) || is_wp_error( $authors ) ) { WP_CLI::warning( 'Could not find any authors in this blog.' ); return false; } $hit = false; foreach ( $authors as $user ) { if ( $hit ) { break; } if ( (int) $author === $user->ID || $author === $user->user_login ) { $hit = $user->ID; } } if ( false === $hit ) { $authors_nice = []; foreach ( $authors as $_author ) { $authors_nice[] = sprintf( '%s (%s)', $_author->user_login, $_author->display_name ); } WP_CLI::warning( sprintf( 'Could not find a matching author for %s. The following authors exist: %s', $author, implode( ', ', $authors_nice ) ) ); return false; } $this->export_args['author'] = $hit; return true; } private function check_max_num_posts( $num ) { if ( null !== $num && ( ! is_numeric( $num ) || $num <= 0 ) ) { WP_CLI::warning( 'max_num_posts should be a positive integer.' ); return false; } $this->export_args['max_num_posts'] = (int) $num; return true; } private function check_category( $category ) { if ( null === $category ) { return true; } $term = category_exists( $category ); if ( empty( $term ) || is_wp_error( $term ) ) { WP_CLI::warning( sprintf( 'Could not find a category matching %s.', $category ) ); return false; } $this->export_args['category'] = $category; return true; } private function check_post_status( $status ) { if ( null === $status ) { return true; } $stati = get_post_statuses(); if ( empty( $stati ) || is_wp_error( $stati ) ) { WP_CLI::warning( 'Could not find any post stati.' ); return false; } if ( ! isset( $stati[ $status ] ) ) { WP_CLI::warning( sprintf( 'Could not find a post_status matching %s. Here is a list of available stati: %s', $status, implode( ', ', array_keys( $stati ) ) ) ); return false; } $this->export_args['status'] = $status; return true; } private function check_skip_comments( $skip ) { if ( null === $skip ) { return true; } if ( 0 !== (int) $skip && 1 !== (int) $skip ) { WP_CLI::warning( 'skip_comments needs to be 0 (no) or 1 (yes).' ); return false; } $this->export_args['skip_comments'] = $skip; return true; } private function check_max_file_size( $size ) { if ( ! is_numeric( $size ) ) { WP_CLI::warning( 'max_file_size should be numeric.' ); return false; } $this->max_file_size = $size; return true; } } <?php /** * Version number for the export format. * * Bump this when something changes that might affect compatibility. * * @since 2.5.0 */ define( 'WXR_VERSION', '1.2' ); //phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- WordPress constant. /** * Responsible for formatting the data in WP_Export_Query to WXR */ class WP_Export_WXR_Formatter { public function __construct( $export ) { $this->export = $export; $this->wxr_version = WXR_VERSION; } public function before_posts( $requested_sections = [] ) { $available_sections = [ 'header', 'site_metadata', 'authors', 'categories', 'tags', 'nav_menu_terms', 'custom_taxonomies_terms', 'rss2_head_action', ]; $before_posts_xml = ''; foreach ( $available_sections as $section ) { if ( ! $requested_sections || in_array( $section, $requested_sections, true ) ) { $before_posts_xml .= $this->$section(); } } return $before_posts_xml; } public function posts() { return new WP_Map_Iterator( $this->export->posts(), [ $this, 'post' ] ); } public function after_posts() { return $this->footer(); } public function header() { $oxymel = new Oxymel(); $wp_generator_tag = $this->export->wp_generator_tag(); $comment = <<<COMMENT This is a WordPress eXtended RSS file generated by WordPress as an export of your site. It contains information about your site's posts, pages, comments, categories, and other content. You may use this file to transfer that content from one site to another. This file is not intended to serve as a complete backup of your site. To import this information into a WordPress site follow these steps: 1. Log in to that site as an administrator. 2. Go to Tools: Import in the WordPress admin panel. 3. Install the "WordPress" importer from the list. 4. Activate & Run Importer. 5. Upload this file using the form provided on that page. 6. You will first be asked to map the authors in this export file to users on the site. For each author, you may choose to map to an existing user on the site or to create a new user. 7. WordPress will then import each of the posts, pages, comments, categories, etc. contained in this file into your site. COMMENT; return $oxymel ->xml ->comment( $comment ) ->raw( $wp_generator_tag ) ->open_rss( [ 'version' => '2.0', 'xmlns:excerpt' => "http://wordpress.org/export/{$this->wxr_version}/excerpt/", 'xmlns:content' => 'http://purl.org/rss/1.0/modules/content/', 'xmlns:wfw' => 'http://wellformedweb.org/CommentAPI/', 'xmlns:dc' => 'http://purl.org/dc/elements/1.1/', 'xmlns:wp' => "http://wordpress.org/export/{$this->wxr_version}/", ] ) ->open_channel ->to_string(); } public function site_metadata() { $oxymel = new Oxymel(); $metadata = $this->export->site_metadata(); return $oxymel ->title( $metadata['name'] ) ->link( $metadata['url'] ) ->description( $metadata['description'] ) ->pubDate( $metadata['pubDate'] ) ->language( $metadata['language'] ) ->tag( 'wp:wxr_version', $this->wxr_version ) ->tag( 'wp:base_site_url', $metadata['site_url'] ) ->tag( 'wp:base_blog_url', $metadata['blog_url'] ) ->to_string(); } public function authors() { $oxymel = new Oxymel(); $authors = $this->export->authors(); foreach ( $authors as $author ) { $oxymel ->tag( 'wp:author' )->contains ->tag( 'wp:author_id', $author->ID ) ->tag( 'wp:author_login', $author->user_login ) ->tag( 'wp:author_email', $author->user_email ) ->tag( 'wp:author_display_name' )->contains->cdata( $author->display_name )->end ->tag( 'wp:author_first_name' )->contains->cdata( $author->user_firstname )->end ->tag( 'wp:author_last_name' )->contains->cdata( $author->user_lastname )->end ->end; } return $oxymel->to_string(); } public function categories() { $oxymel = new WP_Export_Oxymel(); $categories = $this->export->categories(); foreach ( $categories as $category ) { $category->parent_slug = $category->parent ? $categories[ $category->parent ]->slug : ''; $oxymel->tag( 'wp:category' )->contains ->tag( 'wp:term_id', $category->term_id ) ->tag( 'wp:category_nicename', $category->slug ) ->tag( 'wp:category_parent', $category->parent_slug ) ->optional_cdata( 'wp:cat_name', $category->name ) ->optional_cdata( 'wp:category_description', $category->description ) ->end; } return $oxymel->to_string(); } public function tags() { $oxymel = new WP_Export_Oxymel(); $tags = $this->export->tags(); foreach ( $tags as $tag ) { $oxymel->tag( 'wp:tag' )->contains ->tag( 'wp:term_id', $tag->term_id ) ->tag( 'wp:tag_slug', $tag->slug ) ->optional_cdata( 'wp:tag_name', $tag->name ) ->optional_cdata( 'wp:tag_description', $tag->description ) ->end; } return $oxymel->to_string(); } public function nav_menu_terms() { return $this->terms( $this->export->nav_menu_terms() ); } public function custom_taxonomies_terms() { return $this->terms( $this->export->custom_taxonomies_terms() ); } public function rss2_head_action() { ob_start(); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WordPress native hook. do_action( 'rss2_head' ); return ob_get_clean(); } public function post( $post ) { $oxymel = new WP_Export_Oxymel(); $GLOBALS['wp_query']->in_the_loop = true; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Intentional. $GLOBALS['post'] = $post; setup_postdata( $post ); $oxymel->item->contains ->title( apply_filters( 'the_title_rss', $post->post_title ) ) // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WordPress native hook. ->link( esc_url( apply_filters( 'the_permalink_rss', get_permalink() ) ) ) // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- WordPress native hook. ->pubDate( mysql2date( 'D, d M Y H:i:s +0000', get_post_time( 'Y-m-d H:i:s', true ), false ) ) ->tag( 'dc:creator', get_the_author_meta( 'login' ) ) ->guid( esc_url( get_the_guid() ), [ 'isPermaLink' => 'false' ] ) ->description( '' ) ->tag( 'content:encoded' )->contains->cdata( $post->post_content )->end ->tag( 'excerpt:encoded' )->contains->cdata( $post->post_excerpt )->end ->tag( 'wp:post_id', $post->ID ) ->tag( 'wp:post_date', $post->post_date ) ->tag( 'wp:post_date_gmt', $post->post_date_gmt ) ->tag( 'wp:post_modified', $post->post_modified ) ->tag( 'wp:post_modified_gmt', $post->post_modified_gmt ) ->tag( 'wp:comment_status', $post->comment_status ) ->tag( 'wp:ping_status', $post->ping_status ) ->tag( 'wp:post_name', $post->post_name ) ->tag( 'wp:status', $post->post_status ) ->tag( 'wp:post_parent', $post->post_parent ) ->tag( 'wp:menu_order', $post->menu_order ) ->tag( 'wp:post_type', $post->post_type ) ->tag( 'wp:post_password', $post->post_password ) ->tag( 'wp:is_sticky', $post->is_sticky ) ->optional( 'wp:attachment_url', wp_get_attachment_url( $post->ID ) ); foreach ( $post->terms as $term ) { $oxymel ->category( [ 'domain' => $term->taxonomy, 'nicename' => $term->slug, ] )->contains->cdata( $term->name )->end; } foreach ( $post->meta as $meta ) { $oxymel ->tag( 'wp:postmeta' )->contains ->tag( 'wp:meta_key', $meta->meta_key ) ->tag( 'wp:meta_value' )->contains->cdata( $meta->meta_value )->end ->end; } foreach ( $post->comments as $comment ) { $oxymel ->tag( 'wp:comment' )->contains ->tag( 'wp:comment_id', $comment->comment_ID ) ->tag( 'wp:comment_author' )->contains->cdata( $comment->comment_author )->end ->tag( 'wp:comment_author_email', $comment->comment_author_email ) ->tag( 'wp:comment_author_url', esc_url( $comment->comment_author_url ) ) ->tag( 'wp:comment_author_IP', $comment->comment_author_IP ) ->tag( 'wp:comment_date', $comment->comment_date ) ->tag( 'wp:comment_date_gmt', $comment->comment_date_gmt ) ->tag( 'wp:comment_content' )->contains->cdata( $comment->comment_content )->end ->tag( 'wp:comment_approved', $comment->comment_approved ) ->tag( 'wp:comment_type', $comment->comment_type ) ->tag( 'wp:comment_parent', $comment->comment_parent ) ->tag( 'wp:comment_user_id', $comment->user_id ) ->oxymel( $this->comment_meta( $comment ) ) ->end; } $oxymel ->end; return $oxymel->to_string(); } public function footer() { $oxymel = new Oxymel(); return $oxymel->close_channel->close_rss->to_string(); } protected function terms( $terms ) { $oxymel = new WP_Export_Oxymel(); foreach ( $terms as $term ) { $term->parent_slug = $term->parent ? $terms[ $term->parent ]->slug : ''; $oxymel->tag( 'wp:term' )->contains ->tag( 'wp:term_id', $term->term_id ) ->tag( 'wp:term_taxonomy', $term->taxonomy ) ->tag( 'wp:term_slug', $term->slug ); if ( 'nav_menu' !== $term->taxonomy ) { $oxymel ->tag( 'wp:term_parent', $term->parent_slug ); } $oxymel ->optional_cdata( 'wp:term_name', $term->name ) ->optional_cdata( 'wp:term_description', $term->description ) ->end; } return $oxymel->to_string(); } protected function comment_meta( $comment ) { global $wpdb; $metas = $wpdb->get_results( $wpdb->prepare( "SELECT * FROM $wpdb->commentmeta WHERE comment_id = %d", $comment->comment_ID ) ); if ( ! $metas ) { return new Oxymel(); } $oxymel = new WP_Export_Oxymel(); foreach ( $metas as $meta ) { $oxymel->tag( 'wp:commentmeta' )->contains ->tag( 'wp:meta_key', $meta->meta_key ) ->tag( 'wp:meta_value' )->contains->cdata( $meta->meta_value )->end ->end; } return $oxymel; } } <?php class WP_Export_Oxymel extends Oxymel { public function optional( $tag_name, $contents ) { if ( ( property_exists( $this, $tag_name ) || method_exists( $this, $tag_name ) ) && $contents ) { $this->$tag_name( $contents ); } return $this; } public function optional_cdata( $tag_name, $contents ) { if ( property_exists( $this, $tag_name ) && is_object( $this->$tag_name ) && $contents ) { $this->$tag_name->contains->cdata( $contents )->end; } return $this; } public function cdata( $text ) { if ( is_string( $text ) && ! seems_utf8( $text ) ) { $text = utf8_encode( $text ); } return parent::cdata( $text ); } } <?php class WP_Export_Split_Files_Writer extends WP_Export_Base_Writer { private $max_file_size; private $destination_directory; private $filename_template; private $before_posts_xml; private $after_posts_xml; private $f; private $next_file_number = 0; private $current_file_size = 0; public function __construct( $formatter, $writer_args = [] ) { parent::__construct( $formatter ); if ( ! defined( 'MB_IN_BYTES' ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- WordPress native constants. define( 'MB_IN_BYTES', 1024 * 1024 ); } //TODO: check if args are not missing if ( is_null( $writer_args['max_file_size'] ) ) { $this->max_file_size = 15 * MB_IN_BYTES; } elseif ( WP_CLI_EXPORT_COMMAND_NO_SPLIT === (string) $writer_args['max_file_size'] ) { $this->max_file_size = WP_CLI_EXPORT_COMMAND_NO_SPLIT; } else { $this->max_file_size = $writer_args['max_file_size'] * MB_IN_BYTES; } $this->destination_directory = $writer_args['destination_directory']; $this->filename_template = $writer_args['filename_template']; $this->before_posts_xml = $this->formatter->before_posts(); $this->after_posts_xml = $this->formatter->after_posts(); } public function export() { $this->start_new_file(); foreach ( $this->formatter->posts() as $post_xml ) { if ( WP_CLI_EXPORT_COMMAND_NO_SPLIT !== $this->max_file_size && $this->current_file_size + strlen( $post_xml ) > $this->max_file_size ) { $this->start_new_file(); } $this->write( $post_xml ); } $this->close_current_file(); } protected function write( $xml ) { $res = fwrite( $this->f, $xml ); if ( false === $res ) { throw new WP_Export_Exception( 'WP Export: error writing to export file.' ); } $this->current_file_size += strlen( $xml ); } private function start_new_file() { if ( $this->f ) { $this->close_current_file(); } $file_path = $this->next_file_path(); $this->f = fopen( $file_path, 'w' ); if ( ! $this->f ) { throw new WP_Export_Exception( "WP Export: error opening {$file_path} for writing." ); } // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Possibly used by third party extension. do_action( 'wp_export_new_file', $file_path ); $this->current_file_size = 0; $this->write( $this->before_posts_xml ); } private function close_current_file() { if ( ! $this->f ) { return; } $this->write( $this->after_posts_xml ); fclose( $this->f ); } private function next_file_name() { $next_file_name = sprintf( $this->filename_template, $this->next_file_number ); $this->next_file_number++; return $next_file_name; } private function next_file_path() { return untrailingslashit( $this->destination_directory ) . DIRECTORY_SEPARATOR . $this->next_file_name(); } } <?php class WP_Iterator_Exception extends Exception { } <?php class WP_Export_XML_Over_HTTP extends WP_Export_Base_Writer { private $file_name; public function __construct( $formatter, $file_name ) { parent::__construct( $formatter ); $this->file_name = $file_name; } public function export() { try { $export = $this->get_export(); $this->send_headers(); echo $export; } catch ( WP_Export_Exception $e ) { // phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Possibly used by third party extension. $message = apply_filters( 'export_error_message', $e->getMessage() ); wp_die( $message, __( 'Export Error' ), [ 'back_link' => true ] ); } catch ( WP_Export_Term_Exception $e ) { do_action( 'export_term_orphaned', $this->formatter->export->missing_parents ); $message = apply_filters( 'export_term_error_message', $e->getMessage() ); // phpcs:enable wp_die( $message, __( 'Export Error' ), [ 'back_link' => true ] ); } } protected function write( $xml ) { $this->result .= $xml; } protected function get_export() { $this->result = ''; parent::export(); return $this->result; } protected function send_headers() { header( 'Content-Description: File Transfer' ); header( 'Content-Disposition: attachment; filename=' . $this->file_name ); header( 'Content-Type: text/xml; charset=' . get_option( 'blog_charset' ), true ); } } <?php abstract class WP_Export_Base_Writer { protected $formatter; public function __construct( $formatter ) { $this->formatter = $formatter; } public function export() { $this->write( $this->formatter->before_posts() ); foreach ( $this->formatter->posts() as $post_in_wxr ) { $this->write( $post_in_wxr ); } $this->write( $this->formatter->after_posts() ); } abstract protected function write( $xml ); } <?php error_reporting(-1); require_once __DIR__ . '/vendor/autoload.php'; $args = new cli\Arguments(array( 'flags' => array( 'verbose' => array( 'description' => 'Turn on verbose mode', 'aliases' => array('v') ), 'c' => array( 'description' => 'A counter to test stackable', 'stackable' => true ) ), 'options' => array( 'user' => array( 'description' => 'Username for authentication', 'aliases' => array('u') ) ), 'strict' => true )); try { $args->parse(); } catch (cli\InvalidArguments $e) { echo $e->getMessage() . "\n\n"; } print_r($args->getArguments()); <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author Ryan Sullivan <rsullivan@connectstudios.com> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\tree; /** * Tree renderers are used to change how a tree is displayed. */ abstract class Renderer { /** * @param array $tree * @return string|null */ abstract public function render(array $tree); } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author Ryan Sullivan <rsullivan@connectstudios.com> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\tree; /** * The ASCII renderer renders trees with ASCII lines. */ class Markdown extends Renderer { /** * How many spaces to indent by * @var int */ protected $_padding = 2; /** * @param int $padding Optional. Default 2. */ function __construct($padding = null) { if ($padding) { $this->_padding = $padding; } } /** * Renders the tree * * @param array $tree * @param int $level Optional * @return string */ public function render(array $tree, $level = 0) { $output = ''; foreach ($tree as $label => $next) { if (is_string($next)) { $label = $next; } // Output the label $output .= sprintf("%s- %s\n", str_repeat(' ', $level * $this->_padding), $label); // Next level if (is_array($next)) { $output .= $this->render($next, $level + 1); } } return $output; } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author Ryan Sullivan <rsullivan@connectstudios.com> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\tree; /** * The ASCII renderer renders trees with ASCII lines. */ class Ascii extends Renderer { /** * @param array $tree * @return string */ public function render(array $tree) { $output = ''; $treeIterator = new \RecursiveTreeIterator( new \RecursiveArrayIterator($tree), \RecursiveTreeIterator::SELF_FIRST ); foreach ($treeIterator as $val) { $output .= $val . "\n"; } return $output; } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; use cli\Shell; use cli\Streams; use cli\table\Ascii; use cli\table\Renderer; use cli\table\Tabular; /** * The `Table` class is used to display data in a tabular format. */ class Table { protected $_renderer; protected $_headers = array(); protected $_footers = array(); protected $_width = array(); protected $_rows = array(); /** * Initializes the `Table` class. * * There are 3 ways to instantiate this class: * * 1. Pass an array of strings as the first parameter for the column headers * and a 2-dimensional array as the second parameter for the data rows. * 2. Pass an array of hash tables (string indexes instead of numerical) * where each hash table is a row and the indexes of the *first* hash * table are used as the header values. * 3. Pass nothing and use `setHeaders()` and `addRow()` or `setRows()`. * * @param array $headers Headers used in this table. Optional. * @param array $rows The rows of data for this table. Optional. * @param array $footers Footers used in this table. Optional. */ public function __construct(array $headers = null, array $rows = null, array $footers = null) { if (!empty($headers)) { // If all the rows is given in $headers we use the keys from the // first row for the header values if ($rows === null) { $rows = $headers; $keys = array_keys(array_shift($headers)); $headers = array(); foreach ($keys as $header) { $headers[$header] = $header; } } $this->setHeaders($headers); $this->setRows($rows); } if (!empty($footers)) { $this->setFooters($footers); } if (Shell::isPiped()) { $this->setRenderer(new Tabular()); } else { $this->setRenderer(new Ascii()); } } public function resetTable() { $this->_headers = array(); $this->_width = array(); $this->_rows = array(); $this->_footers = array(); return $this; } /** * Sets the renderer used by this table. * * @param table\Renderer $renderer The renderer to use for output. * @see table\Renderer * @see table\Ascii * @see table\Tabular */ public function setRenderer(Renderer $renderer) { $this->_renderer = $renderer; } /** * Loops through the row and sets the maximum width for each column. * * @param array $row The table row. * @return array $row */ protected function checkRow(array $row) { foreach ($row as $column => $str) { $width = Colors::width( $str, $this->isAsciiPreColorized( $column ) ); if (!isset($this->_width[$column]) || $width > $this->_width[$column]) { $this->_width[$column] = $width; } } return $row; } /** * Output the table to `STDOUT` using `cli\line()`. * * If STDOUT is a pipe or redirected to a file, should output simple * tab-separated text. Otherwise, renders table with ASCII table borders * * @uses cli\Shell::isPiped() Determine what format to output * * @see cli\Table::renderRow() */ public function display() { foreach( $this->getDisplayLines() as $line ) { Streams::line( $line ); } } /** * Get the table lines to output. * * @see cli\Table::display() * @see cli\Table::renderRow() * * @return array */ public function getDisplayLines() { $this->_renderer->setWidths($this->_width, $fallback = true); $border = $this->_renderer->border(); $out = array(); if (isset($border)) { $out[] = $border; } $out[] = $this->_renderer->row($this->_headers); if (isset($border)) { $out[] = $border; } foreach ($this->_rows as $row) { $row = $this->_renderer->row($row); $row = explode( PHP_EOL, $row ); $out = array_merge( $out, $row ); } if (isset($border)) { $out[] = $border; } if ($this->_footers) { $out[] = $this->_renderer->row($this->_footers); if (isset($border)) { $out[] = $border; } } return $out; } /** * Sort the table by a column. Must be called before `cli\Table::display()`. * * @param int $column The index of the column to sort by. */ public function sort($column) { if (!isset($this->_headers[$column])) { trigger_error('No column with index ' . $column, E_USER_NOTICE); return; } usort($this->_rows, function($a, $b) use ($column) { return strcmp($a[$column], $b[$column]); }); } /** * Set the headers of the table. * * @param array $headers An array of strings containing column header names. */ public function setHeaders(array $headers) { $this->_headers = $this->checkRow($headers); } /** * Set the footers of the table. * * @param array $footers An array of strings containing column footers names. */ public function setFooters(array $footers) { $this->_footers = $this->checkRow($footers); } /** * Add a row to the table. * * @param array $row The row data. * @see cli\Table::checkRow() */ public function addRow(array $row) { $this->_rows[] = $this->checkRow($row); } /** * Clears all previous rows and adds the given rows. * * @param array $rows A 2-dimensional array of row data. * @see cli\Table::addRow() */ public function setRows(array $rows) { $this->_rows = array(); foreach ($rows as $row) { $this->addRow($row); } } public function countRows() { return count($this->_rows); } /** * Set whether items in an Ascii table are pre-colorized. * * @param bool|array $precolorized A boolean to set all columns in the table as pre-colorized, or an array of booleans keyed by column index (number) to set individual columns as pre-colorized. * @see cli\Ascii::setPreColorized() */ public function setAsciiPreColorized( $pre_colorized ) { if ( $this->_renderer instanceof Ascii ) { $this->_renderer->setPreColorized( $pre_colorized ); } } /** * Is a column in an Ascii table pre-colorized? * * @param int $column Column index to check. * @return bool True if whole Ascii table is marked as pre-colorized, or if the individual column is pre-colorized; else false. * @see cli\Ascii::isPreColorized() */ private function isAsciiPreColorized( $column ) { if ( $this->_renderer instanceof Ascii ) { return $this->_renderer->isPreColorized( $column ); } return false; } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; /** * A more complex type of Notifier, `Progress` Notifiers always have a maxim * value and generally show some form of percent complete or estimated time * to completion along with the standard Notifier displays. * * @see cli\Notify */ abstract class Progress extends \cli\Notify { protected $_total = 0; /** * Instantiates a Progress Notifier. * * @param string $msg The text to display next to the Notifier. * @param int $total The total number of ticks we will be performing. * @param int $interval The interval in milliseconds between updates. * @see cli\Progress::setTotal() */ public function __construct($msg, $total, $interval = 100) { parent::__construct($msg, $interval); $this->setTotal($total); } /** * Set the max increments for this progress notifier. * * @param int $total The total number of times this indicator should be `tick`ed. * @throws \InvalidArgumentException Thrown if the `$total` is less than 0. */ public function setTotal($total) { $this->_total = (int)$total; if ($this->_total < 0) { throw new \InvalidArgumentException('Maximum value out of range, must be positive.'); } } /** * Reset the progress state so the same instance can be used in multiple loops. */ public function reset($total = null) { parent::reset(); if ($total) { $this->setTotal($total); } } /** * Behaves in a similar manner to `cli\Notify::current()`, but the output * is padded to match the length of `cli\Progress::total()`. * * @return string The formatted and padded tick count. * @see cli\Progress::total() */ public function current() { $size = strlen($this->total()); return str_pad(parent::current(), $size); } /** * Returns the formatted total expected ticks. * * @return string The formatted total ticks. */ public function total() { return number_format($this->_total); } /** * Calculates the estimated total time for the tick count to reach the * total ticks given. * * @return int The estimated total number of seconds for all ticks to be * completed. This is not the estimated time left, but total. * @see cli\Notify::speed() * @see cli\Notify::elapsed() */ public function estimated() { $speed = $this->speed(); if (!$speed || !$this->elapsed()) { return 0; } $estimated = round($this->_total / $speed); return $estimated; } /** * Forces the current tick count to the total ticks given at instatiation * time before passing on to `cli\Notify::finish()`. */ public function finish() { $this->_current = $this->_total; parent::finish(); } /** * Increments are tick counter by the given amount. If no amount is provided, * the ticker is incremented by 1. * * @param int $increment The amount to increment by. */ public function increment($increment = 1) { $this->_current = min($this->_total, $this->_current + $increment); } /** * Calculate the percentage completed. * * @return float The percent completed. */ public function percent() { if ($this->_total == 0) { return 1; } return ($this->_current / $this->_total); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\progress; use cli; use cli\Notify; use cli\Progress; use cli\Shell; use cli\Streams; /** * Displays a progress bar spanning the entire shell. * * Basic format: * * ^MSG PER% [======================= ] 00:00 / 00:00$ */ class Bar extends Progress { protected $_bars = '=>'; protected $_formatMessage = '{:msg} {:percent}% ['; protected $_formatTiming = '] {:elapsed} / {:estimated}'; protected $_format = '{:msg}{:bar}{:timing}'; /** * Prints the progress bar to the screen with percent complete, elapsed time * and estimated total time. * * @param boolean $finish `true` if this was called from * `cli\Notify::finish()`, `false` otherwise. * @see cli\out() * @see cli\Notify::formatTime() * @see cli\Notify::elapsed() * @see cli\Progress::estimated(); * @see cli\Progress::percent() * @see cli\Shell::columns() */ public function display($finish = false) { $_percent = $this->percent(); $percent = str_pad(floor($_percent * 100), 3); $msg = $this->_message; $msg = Streams::render($this->_formatMessage, compact('msg', 'percent')); $estimated = $this->formatTime($this->estimated()); $elapsed = str_pad($this->formatTime($this->elapsed()), strlen($estimated)); $timing = Streams::render($this->_formatTiming, compact('elapsed', 'estimated')); $size = Shell::columns(); $size -= strlen($msg . $timing); if ( $size < 0 ) { $size = 0; } $bar = str_repeat($this->_bars[0], floor($_percent * $size)) . $this->_bars[1]; // substr is needed to trim off the bar cap at 100% $bar = substr(str_pad($bar, $size, ' '), 0, $size); Streams::out($this->_format, compact('msg', 'bar', 'timing')); } /** * This method augments the base definition from cli\Notify to optionally * allow passing a new message. * * @param int $increment The amount to increment by. * @param string $msg The text to display next to the Notifier. (optional) * @see cli\Notify::tick() */ public function tick($increment = 1, $msg = null) { if ($msg) { $this->_message = $msg; } Notify::tick($increment); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\arguments; use cli\Memoize; /** * Represents an Argument or a value and provides several helpers related to parsing an argument list. */ class Argument extends Memoize { /** * The canonical name of this argument, used for aliasing. * * @param string */ public $key; private $_argument; private $_raw; /** * @param string $argument The raw argument, leading dashes included. */ public function __construct($argument) { $this->_raw = $argument; $this->key =& $this->_argument; if ($this->isLong) { $this->_argument = substr($this->_raw, 2); } else if ($this->isShort) { $this->_argument = substr($this->_raw, 1); } else { $this->_argument = $this->_raw; } } /** * Returns the raw input as a string. * * @return string */ public function __toString() { return (string)$this->_raw; } /** * Returns the formatted argument string. * * @return string */ public function value() { return $this->_argument; } /** * Returns the raw input. * * @return mixed */ public function raw() { return $this->_raw; } /** * Returns true if the string matches the pattern for long arguments. * * @return bool */ public function isLong() { return (0 == strncmp($this->_raw, '--', 2)); } /** * Returns true if the string matches the pattern for short arguments. * * @return bool */ public function isShort() { return !$this->isLong && (0 == strncmp($this->_raw, '-', 1)); } /** * Returns true if the string matches the pattern for arguments. * * @return bool */ public function isArgument() { return $this->isShort() || $this->isLong(); } /** * Returns true if the string matches the pattern for values. * * @return bool */ public function isValue() { return !$this->isArgument; } /** * Returns true if the argument is short but contains several characters. Each * character is considered a separate argument. * * @return bool */ public function canExplode() { return $this->isShort && strlen($this->_argument) > 1; } /** * Returns all but the first character of the argument, removing them from the * objects representation at the same time. * * @return array */ public function exploded() { $exploded = array(); for ($i = strlen($this->_argument); $i > 0; $i--) { array_push($exploded, $this->_argument[$i - 1]); } $this->_argument = array_pop($exploded); $this->_raw = '-' . $this->_argument; return $exploded; } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\arguments; use cli\Arguments; /** * Arguments help screen renderer */ class HelpScreen { protected $_flags = array(); protected $_maxFlag = 0; protected $_options = array(); protected $_maxOption = 0; public function __construct(Arguments $arguments) { $this->setArguments($arguments); } public function __toString() { return $this->render(); } public function setArguments(Arguments $arguments) { $this->consumeArgumentFlags($arguments); $this->consumeArgumentOptions($arguments); } public function consumeArgumentFlags(Arguments $arguments) { $data = $this->_consume($arguments->getFlags()); $this->_flags = $data[0]; $this->_flagMax = $data[1]; } public function consumeArgumentOptions(Arguments $arguments) { $data = $this->_consume($arguments->getOptions()); $this->_options = $data[0]; $this->_optionMax = $data[1]; } public function render() { $help = array(); array_push($help, $this->_renderFlags()); array_push($help, $this->_renderOptions()); return join("\n\n", $help); } private function _renderFlags() { if (empty($this->_flags)) { return null; } return "Flags\n" . $this->_renderScreen($this->_flags, $this->_flagMax); } private function _renderOptions() { if (empty($this->_options)) { return null; } return "Options\n" . $this->_renderScreen($this->_options, $this->_optionMax); } private function _renderScreen($options, $max) { $help = array(); foreach ($options as $option => $settings) { $formatted = ' ' . str_pad($option, $max); $dlen = 80 - 4 - $max; $description = str_split($settings['description'], $dlen); $formatted.= ' ' . array_shift($description); if ($settings['default']) { $formatted .= ' [default: ' . $settings['default'] . ']'; } $pad = str_repeat(' ', $max + 3); while ($desc = array_shift($description)) { $formatted .= "\n${pad}${desc}"; } array_push($help, $formatted); } return join("\n", $help); } private function _consume($options) { $max = 0; $out = array(); foreach ($options as $option => $settings) { $names = array('--' . $option); foreach ($settings['aliases'] as $alias) { array_push($names, '-' . $alias); } $names = join(', ', $names); $max = max(strlen($names), $max); $out[$names] = $settings; } return array($out, $max); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\arguments; use cli\Memoize; class Lexer extends Memoize implements \Iterator { private $_items = array(); private $_index = 0; private $_length = 0; private $_first = true; /** * @param array $items A list of strings to process as tokens. */ public function __construct(array $items) { $this->_items = $items; $this->_length = count($items); } /** * The current token. * * @return string */ public function current() { return $this->_item; } /** * Peek ahead to the next token without moving the cursor. * * @return Argument */ public function peek() { return new Argument($this->_items[0]); } /** * Move the cursor forward 1 element if it is valid. */ public function next() { if ($this->valid()) { $this->_shift(); } } /** * Return the current position of the cursor. * * @return int */ public function key() { return $this->_index; } /** * Move forward 1 element and, if the method hasn't been called before, reset * the cursor's position to 0. */ public function rewind() { $this->_shift(); if ($this->_first) { $this->_index = 0; $this->_first = false; } } /** * Returns true if the cursor has not reached the end of the list. * * @return bool */ public function valid() { return ($this->_index < $this->_length); } /** * Push an element to the front of the stack. * * @param mixed $item The value to set */ public function unshift($item) { array_unshift($this->_items, $item); $this->_length += 1; } /** * Returns true if the cursor is at the end of the list. * * @return bool */ public function end() { return ($this->_index + 1) == $this->_length; } private function _shift() { $this->_item = new Argument(array_shift($this->_items)); $this->_index += 1; $this->_explode(); $this->_unmemo('peek'); } private function _explode() { if (!$this->_item->canExplode) { return false; } foreach ($this->_item->exploded as $piece) { $this->unshift('-' . $piece); } } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\arguments; /** * Thrown when undefined arguments are detected in strict mode. */ class InvalidArguments extends \InvalidArgumentException { protected $arguments; /** * @param array $arguments A list of arguments that do not fit the profile. */ public function __construct(array $arguments) { $this->arguments = $arguments; $this->message = $this->_generateMessage(); } /** * Get the arguments that caused the exception. * * @return array */ public function getArguments() { return $this->arguments; } private function _generateMessage() { return 'unknown argument' . (count($this->arguments) > 1 ? 's' : '') . ': ' . join(', ', $this->arguments); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author Ryan Sullivan <rsullivan@connectstudios.com> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; /** * The `Tree` class is used to display data in a tree-like format. */ class Tree { protected $_renderer; protected $_data = array(); /** * Sets the renderer used by this tree. * * @param tree\Renderer $renderer The renderer to use for output. * @see tree\Renderer * @see tree\Ascii * @see tree\Markdown */ public function setRenderer(tree\Renderer $renderer) { $this->_renderer = $renderer; } /** * Set the data. * Format: * [ * 'Label' => [ * 'Thing' => ['Thing'], * ], * 'Thing', * ] * @param array $data */ public function setData(array $data) { $this->_data = $data; } /** * Render the tree and return it as a string. * * @return string|null */ public function render() { return $this->_renderer->render($this->_data); } /** * Display the rendered tree */ public function display() { echo $this->render(); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; /** * Change the color of text. * * Reference: http://graphcomp.com/info/specs/ansi_col.html#colors */ class Colors { static protected $_colors = array( 'color' => array( 'black' => 30, 'red' => 31, 'green' => 32, 'yellow' => 33, 'blue' => 34, 'magenta' => 35, 'cyan' => 36, 'white' => 37 ), 'style' => array( 'bright' => 1, 'dim' => 2, 'underline' => 4, 'blink' => 5, 'reverse' => 7, 'hidden' => 8 ), 'background' => array( 'black' => 40, 'red' => 41, 'green' => 42, 'yellow' => 43, 'blue' => 44, 'magenta' => 45, 'cyan' => 46, 'white' => 47 ) ); static protected $_enabled = null; static protected $_string_cache = array(); static public function enable($force = true) { self::$_enabled = $force === true ? true : null; } static public function disable($force = true) { self::$_enabled = $force === true ? false : null; } /** * Check if we should colorize output based on local flags and shell type. * * Only check the shell type if `Colors::$_enabled` is null and `$colored` is null. */ static public function shouldColorize($colored = null) { return self::$_enabled === true || (self::$_enabled !== false && ($colored === true || ($colored !== false && Streams::isTty()))); } /** * Set the color. * * @param string $color The name of the color or style to set. * @return string */ static public function color($color) { if (!is_array($color)) { $color = compact('color'); } $color += array('color' => null, 'style' => null, 'background' => null); if ($color['color'] == 'reset') { return "\033[0m"; } $colors = array(); foreach (array('color', 'style', 'background') as $type) { $code = $color[$type]; if (isset(self::$_colors[$type][$code])) { $colors[] = self::$_colors[$type][$code]; } } if (empty($colors)) { $colors[] = 0; } return "\033[" . join(';', $colors) . "m"; } /** * Colorize a string using helpful string formatters. If the `Streams::$out` points to a TTY coloring will be enabled, * otherwise disabled. You can control this check with the `$colored` parameter. * * @param string $string * @param boolean $colored Force enable or disable the colorized output. If left as `null` the TTY will control coloring. * @return string */ static public function colorize($string, $colored = null) { $passed = $string; if (!self::shouldColorize($colored)) { $return = self::decolorize( $passed, 2 /*keep_encodings*/ ); self::cacheString($passed, $return); return $return; } $md5 = md5($passed); if (isset(self::$_string_cache[$md5]['colorized'])) { return self::$_string_cache[$md5]['colorized']; } $string = str_replace('%%', '%¾', $string); foreach (self::getColors() as $key => $value) { $string = str_replace($key, self::color($value), $string); } $string = str_replace('%¾', '%', $string); self::cacheString($passed, $string); return $string; } /** * Remove color information from a string. * * @param string $string A string with color information. * @param int $keep Optional. If the 1 bit is set, color tokens (eg "%n") won't be stripped. If the 2 bit is set, color encodings (ANSI escapes) won't be stripped. Default 0. * @return string A string with color information removed. */ static public function decolorize( $string, $keep = 0 ) { if ( ! ( $keep & 1 ) ) { // Get rid of color tokens if they exist $string = str_replace('%%', '%¾', $string); $string = str_replace(array_keys(self::getColors()), '', $string); $string = str_replace('%¾', '%', $string); } if ( ! ( $keep & 2 ) ) { // Remove color encoding if it exists foreach (self::getColors() as $key => $value) { $string = str_replace(self::color($value), '', $string); } } return $string; } /** * Cache the original, colorized, and decolorized versions of a string. * * @param string $passed The original string before colorization. * @param string $colorized The string after running through self::colorize. * @param string $deprecated Optional. Not used. Default null. */ static public function cacheString( $passed, $colorized, $deprecated = null ) { self::$_string_cache[md5($passed)] = array( 'passed' => $passed, 'colorized' => $colorized, 'decolorized' => self::decolorize($passed), // Not very useful but keep for BC. ); } /** * Return the length of the string without color codes. * * @param string $string the string to measure * @return int */ static public function length($string) { return safe_strlen( self::decolorize( $string ) ); } /** * Return the width (length in characters) of the string without color codes if enabled. * * @param string $string The string to measure. * @param bool $pre_colorized Optional. Set if the string is pre-colorized. Default false. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @return int */ static public function width( $string, $pre_colorized = false, $encoding = false ) { return strwidth( $pre_colorized || self::shouldColorize() ? self::decolorize( $string, $pre_colorized ? 1 /*keep_tokens*/ : 0 ) : $string, $encoding ); } /** * Pad the string to a certain display length. * * @param string $string The string to pad. * @param int $length The display length. * @param bool $pre_colorized Optional. Set if the string is pre-colorized. Default false. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @param int $pad_type Optional. Can be STR_PAD_RIGHT, STR_PAD_LEFT, or STR_PAD_BOTH. If pad_type is not specified it is assumed to be STR_PAD_RIGHT. * @return string */ static public function pad( $string, $length, $pre_colorized = false, $encoding = false, $pad_type = STR_PAD_RIGHT ) { $real_length = self::width( $string, $pre_colorized, $encoding ); $diff = strlen( $string ) - $real_length; $length += $diff; return str_pad( $string, $length, ' ', $pad_type ); } /** * Get the color mapping array. * * @return array Array of color tokens mapped to colors and styles. */ static public function getColors() { return array( '%y' => array('color' => 'yellow'), '%g' => array('color' => 'green'), '%b' => array('color' => 'blue'), '%r' => array('color' => 'red'), '%p' => array('color' => 'magenta'), '%m' => array('color' => 'magenta'), '%c' => array('color' => 'cyan'), '%w' => array('color' => 'white'), '%k' => array('color' => 'black'), '%n' => array('color' => 'reset'), '%Y' => array('color' => 'yellow', 'style' => 'bright'), '%G' => array('color' => 'green', 'style' => 'bright'), '%B' => array('color' => 'blue', 'style' => 'bright'), '%R' => array('color' => 'red', 'style' => 'bright'), '%P' => array('color' => 'magenta', 'style' => 'bright'), '%M' => array('color' => 'magenta', 'style' => 'bright'), '%C' => array('color' => 'cyan', 'style' => 'bright'), '%W' => array('color' => 'white', 'style' => 'bright'), '%K' => array('color' => 'black', 'style' => 'bright'), '%N' => array('color' => 'reset', 'style' => 'bright'), '%3' => array('background' => 'yellow'), '%2' => array('background' => 'green'), '%4' => array('background' => 'blue'), '%1' => array('background' => 'red'), '%5' => array('background' => 'magenta'), '%6' => array('background' => 'cyan'), '%7' => array('background' => 'white'), '%0' => array('background' => 'black'), '%F' => array('style' => 'blink'), '%U' => array('style' => 'underline'), '%8' => array('style' => 'reverse'), '%9' => array('style' => 'bright'), '%_' => array('style' => 'bright') ); } /** * Get the cached string values. * * @return array The cached string values. */ static public function getStringCache() { return self::$_string_cache; } /** * Clear the string cache. */ static public function clearStringCache() { self::$_string_cache = array(); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; use cli\Streams; /** * The `Notify` class is the basis of all feedback classes, such as Indicators * and Progress meters. The default behaviour is to refresh output after 100ms * have passed. This is done to preventing the screen from flickering and keep * slowdowns from output to a minimum. * * The most basic form of Notifier has no maxim, and simply displays a series * of characters to indicate progress is being made. */ abstract class Notify { protected $_current = 0; protected $_first = true; protected $_interval; protected $_message; protected $_start; protected $_timer; /** * Instatiates a Notification object. * * @param string $msg The text to display next to the Notifier. * @param int $interval The interval in milliseconds between updates. */ public function __construct($msg, $interval = 100) { $this->_message = $msg; $this->_interval = (int)$interval; } /** * This method should be used to print out the Notifier. This method is * called from `cli\Notify::tick()` after `cli\Notify::$_interval` has passed. * * @abstract * @param boolean $finish * @see cli\Notify::tick() */ abstract public function display($finish = false); /** * Reset the notifier state so the same instance can be used in multiple loops. */ public function reset() { $this->_current = 0; $this->_first = true; $this->_start = null; $this->_timer = null; } /** * Returns the formatted tick count. * * @return string The formatted tick count. */ public function current() { return number_format($this->_current); } /** * Calculates the time elapsed since the Notifier was first ticked. * * @return int The elapsed time in seconds. */ public function elapsed() { if (!$this->_start) { return 0; } $elapsed = time() - $this->_start; return $elapsed; } /** * Calculates the speed (number of ticks per second) at which the Notifier * is being updated. * * @return int The number of ticks performed in 1 second. */ public function speed() { static $tick, $iteration = 0, $speed = 0; if (!$this->_start) { return 0; } else if (!$tick) { $tick = $this->_start; } $now = microtime(true); $span = $now - $tick; if ($span > 1) { $iteration++; $tick = $now; $speed = ($this->_current / $iteration) / $span; } return $speed; } /** * Takes a time span given in seconds and formats it for display. The * returned string will be in MM:SS form. * * @param int $time The time span in seconds to format. * @return string The formatted time span. */ public function formatTime($time) { return floor($time / 60) . ':' . str_pad($time % 60, 2, 0, STR_PAD_LEFT); } /** * Finish our Notification display. Should be called after the Notifier is * no longer needed. * * @see cli\Notify::display() */ public function finish() { Streams::out("\r"); $this->display(true); Streams::line(); } /** * Increments are tick counter by the given amount. If no amount is provided, * the ticker is incremented by 1. * * @param int $increment The amount to increment by. */ public function increment($increment = 1) { $this->_current += $increment; } /** * Determines whether the display should be updated or not according to * our interval setting. * * @return boolean `true` if the display should be updated, `false` otherwise. */ public function shouldUpdate() { $now = microtime(true) * 1000; if (empty($this->_timer)) { $this->_start = (int)(($this->_timer = $now) / 1000); return true; } if (($now - $this->_timer) > $this->_interval) { $this->_timer = $now; return true; } return false; } /** * This method is the meat of all Notifiers. First we increment the ticker * and then update the display if enough time has passed since our last tick. * * @param int $increment The amount to increment by. * @see cli\Notify::increment() * @see cli\Notify::shouldUpdate() * @see cli\Notify::display() */ public function tick($increment = 1) { $this->increment($increment); if ($this->shouldUpdate()) { Streams::out("\r"); $this->display(); } } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; /** * Handles rendering strings. If extra scalar arguments are given after the `$msg` * the string will be rendered with `sprintf`. If the second argument is an `array` * then each key in the array will be the placeholder name. Placeholders are of the * format {:key}. * * @param string $msg The message to render. * @param mixed ... Either scalar arguments or a single array argument. * @return string The rendered string. */ function render( $msg ) { return Streams::_call( 'render', func_get_args() ); } /** * Shortcut for printing to `STDOUT`. The message and parameters are passed * through `sprintf` before output. * * @param string $msg The message to output in `printf` format. * @param mixed ... Either scalar arguments or a single array argument. * @return void * @see \cli\render() */ function out( $msg ) { Streams::_call( 'out', func_get_args() ); } /** * Pads `$msg` to the width of the shell before passing to `cli\out`. * * @param string $msg The message to pad and pass on. * @param mixed ... Either scalar arguments or a single array argument. * @return void * @see cli\out() */ function out_padded( $msg ) { Streams::_call( 'out_padded', func_get_args() ); } /** * Prints a message to `STDOUT` with a newline appended. See `\cli\out` for * more documentation. * * @see cli\out() */ function line( $msg = '' ) { Streams::_call( 'line', func_get_args() ); } /** * Shortcut for printing to `STDERR`. The message and parameters are passed * through `sprintf` before output. * * @param string $msg The message to output in `printf` format. With no string, * a newline is printed. * @param mixed ... Either scalar arguments or a single array argument. * @return void */ function err( $msg = '' ) { Streams::_call( 'err', func_get_args() ); } /** * Takes input from `STDIN` in the given format. If an end of transmission * character is sent (^D), an exception is thrown. * * @param string $format A valid input format. See `fscanf` for documentation. * If none is given, all input up to the first newline * is accepted. * @return string The input with whitespace trimmed. * @throws \Exception Thrown if ctrl-D (EOT) is sent as input. */ function input( $format = null ) { return Streams::input( $format ); } /** * Displays an input prompt. If no default value is provided the prompt will * continue displaying until input is received. * * @param string $question The question to ask the user. * @param string $default A default value if the user provides no input. * @param string $marker A string to append to the question and default value on display. * @param boolean $hide If the user input should be hidden * @return string The users input. * @see cli\input() */ function prompt( $question, $default = false, $marker = ': ', $hide = false ) { return Streams::prompt( $question, $default, $marker, $hide ); } /** * Presents a user with a multiple choice question, useful for 'yes/no' type * questions (which this function defaults too). * * @param string $question The question to ask the user. * @param string $choice * @param string|null $default The default choice. NULL if a default is not allowed. * @internal param string $valid A string of characters allowed as a response. Case * is ignored. * @return string The users choice. * @see cli\prompt() */ function choose( $question, $choice = 'yn', $default = 'n' ) { return Streams::choose( $question, $choice, $default ); } /** * Does the same as {@see choose()}, but always asks yes/no and returns a boolean * * @param string $question The question to ask the user. * @param bool|null $default The default choice, in a boolean format. * @return bool */ function confirm( $question, $default = false ) { if ( is_bool( $default ) ) { $default = $default? 'y' : 'n'; } $result = choose( $question, 'yn', $default ); return $result == 'y'; } /** * Displays an array of strings as a menu where a user can enter a number to * choose an option. The array must be a single dimension with either strings * or objects with a `__toString()` method. * * @param array $items The list of items the user can choose from. * @param string $default The index of the default item. * @param string $title The message displayed to the user when prompted. * @return string The index of the chosen item. * @see cli\line() * @see cli\input() * @see cli\err() */ function menu( $items, $default = null, $title = 'Choose an item' ) { return Streams::menu( $items, $default, $title ); } /** * Attempts an encoding-safe way of getting string length. If intl extension or PCRE with '\X' or mb_string extension aren't * available, falls back to basic strlen. * * @param string $str The string to check. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @return int Numeric value that represents the string's length */ function safe_strlen( $str, $encoding = false ) { // Allow for selective testings - "1" bit set tests grapheme_strlen(), "2" preg_match_all( '/\X/u' ), "4" mb_strlen(), "other" strlen(). $test_safe_strlen = getenv( 'PHP_CLI_TOOLS_TEST_SAFE_STRLEN' ); // Assume UTF-8 if no encoding given - `grapheme_strlen()` will return null if given non-UTF-8 string. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_icu() && null !== ( $length = grapheme_strlen( $str ) ) ) { if ( ! $test_safe_strlen || ( $test_safe_strlen & 1 ) ) { return $length; } } // Assume UTF-8 if no encoding given - `preg_match_all()` will return false if given non-UTF-8 string. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_pcre_x() && false !== ( $length = preg_match_all( '/\X/u', $str, $dummy /*needed for PHP 5.3*/ ) ) ) { if ( ! $test_safe_strlen || ( $test_safe_strlen & 2 ) ) { return $length; } } // Legacy encodings and old PHPs will reach here. if ( function_exists( 'mb_strlen' ) && ( $encoding || function_exists( 'mb_detect_encoding' ) ) ) { if ( ! $encoding ) { $encoding = mb_detect_encoding( $str, null, true /*strict*/ ); } $length = $encoding ? mb_strlen( $str, $encoding ) : mb_strlen( $str ); // mbstring funcs can fail if given `$encoding` arg that evals to false. if ( 'UTF-8' === $encoding ) { // Subtract combining characters. $length -= preg_match_all( get_unicode_regexs( 'm' ), $str, $dummy /*needed for PHP 5.3*/ ); } if ( ! $test_safe_strlen || ( $test_safe_strlen & 4 ) ) { return $length; } } return strlen( $str ); } /** * Attempts an encoding-safe way of getting a substring. If intl extension or PCRE with '\X' or mb_string extension aren't * available, falls back to substr(). * * @param string $str The input string. * @param int $start The starting position of the substring. * @param int|bool|null $length Optional, unless $is_width is set. Maximum length of the substring. Default false. Negative not supported. * @param int|bool $is_width Optional. If set and encoding is UTF-8, $length (which must be specified) is interpreted as spacing width. Default false. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @return bool|string False if given unsupported args, otherwise substring of string specified by start and length parameters */ function safe_substr( $str, $start, $length = false, $is_width = false, $encoding = false ) { // Negative $length or $is_width and $length not specified not supported. if ( $length < 0 || ( $is_width && ( null === $length || false === $length ) ) ) { return false; } // Need this for normalization below and other uses. $safe_strlen = safe_strlen( $str, $encoding ); // Normalize `$length` when not specified - PHP 5.3 substr takes false as full length, PHP > 5.3 takes null. if ( null === $length || false === $length ) { $length = $safe_strlen; } // Normalize `$start` - various methods treat this differently. if ( $start > $safe_strlen ) { return ''; } if ( $start < 0 && -$start > $safe_strlen ) { $start = 0; } // Allow for selective testings - "1" bit set tests grapheme_substr(), "2" preg_split( '/\X/' ), "4" mb_substr(), "8" substr(). $test_safe_substr = getenv( 'PHP_CLI_TOOLS_TEST_SAFE_SUBSTR' ); // Assume UTF-8 if no encoding given - `grapheme_substr()` will return false (not null like `grapheme_strlen()`) if given non-UTF-8 string. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_icu() && false !== ( $try = grapheme_substr( $str, $start, $length ) ) ) { if ( ! $test_safe_substr || ( $test_safe_substr & 1 ) ) { return $is_width ? _safe_substr_eaw( $try, $length ) : $try; } } // Assume UTF-8 if no encoding given - `preg_split()` returns a one element array if given non-UTF-8 string (PHP bug) so need to check `preg_last_error()`. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_pcre_x() ) { if ( false !== ( $try = preg_split( '/(\X)/u', $str, $safe_strlen + 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ) ) && ! preg_last_error() ) { $try = implode( '', array_slice( $try, $start, $length ) ); if ( ! $test_safe_substr || ( $test_safe_substr & 2 ) ) { return $is_width ? _safe_substr_eaw( $try, $length ) : $try; } } } // Legacy encodings and old PHPs will reach here. if ( function_exists( 'mb_substr' ) && ( $encoding || function_exists( 'mb_detect_encoding' ) ) ) { if ( ! $encoding ) { $encoding = mb_detect_encoding( $str, null, true /*strict*/ ); } // Bug: not adjusting for combining chars. $try = $encoding ? mb_substr( $str, $start, $length, $encoding ) : mb_substr( $str, $start, $length ); // mbstring funcs can fail if given `$encoding` arg that evals to false. if ( 'UTF-8' === $encoding && $is_width ) { $try = _safe_substr_eaw( $try, $length ); } if ( ! $test_safe_substr || ( $test_safe_substr & 4 ) ) { return $try; } } return substr( $str, $start, $length ); } /** * Internal function used by `safe_substr()` to adjust for East Asian double-width chars. * * @return string */ function _safe_substr_eaw( $str, $length ) { // Set the East Asian Width regex. $eaw_regex = get_unicode_regexs( 'eaw' ); // If there's any East Asian double-width chars... if ( preg_match( $eaw_regex, $str ) ) { // Note that if the length ends in the middle of a double-width char, the char is excluded, not included. // See if it's all EAW. if ( function_exists( 'mb_substr' ) && preg_match_all( $eaw_regex, $str, $dummy /*needed for PHP 5.3*/ ) === $length ) { // Just halve the length so (rounded down to a minimum of 1). $str = mb_substr( $str, 0, max( (int) ( $length / 2 ), 1 ), 'UTF-8' ); } else { // Explode string into an array of UTF-8 chars. Based on core `_mb_substr()` in "wp-includes/compat.php". $chars = preg_split( '/([\x00-\x7f\xc2-\xf4][^\x00-\x7f\xc2-\xf4]*)/', $str, $length + 1, PREG_SPLIT_DELIM_CAPTURE | PREG_SPLIT_NO_EMPTY ); $cnt = min( count( $chars ), $length ); $width = $length; for ( $length = 0; $length < $cnt && $width > 0; $length++ ) { $width -= preg_match( $eaw_regex, $chars[ $length ] ) ? 2 : 1; } // Round down to a minimum of 1. if ( $width < 0 && $length > 1 ) { $length--; } return join( '', array_slice( $chars, 0, $length ) ); } } return $str; } /** * An encoding-safe way of padding string length for display * * @param string $string The string to pad. * @param int $length The length to pad it to. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @return string */ function safe_str_pad( $string, $length, $encoding = false ) { $real_length = strwidth( $string, $encoding ); $diff = strlen( $string ) - $real_length; $length += $diff; return str_pad( $string, $length ); } /** * Get width of string, ie length in characters, taking into account multi-byte and mark characters for UTF-8, and multi-byte for non-UTF-8. * * @param string $string The string to check. * @param string|bool $encoding Optional. The encoding of the string. Default false. * @return int The string's width. */ function strwidth( $string, $encoding = false ) { // Set the East Asian Width and Mark regexs. list( $eaw_regex, $m_regex ) = get_unicode_regexs(); // Allow for selective testings - "1" bit set tests grapheme_strlen(), "2" preg_match_all( '/\X/u' ), "4" mb_strwidth(), "other" safe_strlen(). $test_strwidth = getenv( 'PHP_CLI_TOOLS_TEST_STRWIDTH' ); // Assume UTF-8 if no encoding given - `grapheme_strlen()` will return null if given non-UTF-8 string. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_icu() && null !== ( $width = grapheme_strlen( $string ) ) ) { if ( ! $test_strwidth || ( $test_strwidth & 1 ) ) { return $width + preg_match_all( $eaw_regex, $string, $dummy /*needed for PHP 5.3*/ ); } } // Assume UTF-8 if no encoding given - `preg_match_all()` will return false if given non-UTF-8 string. if ( ( ! $encoding || 'UTF-8' === $encoding ) && can_use_pcre_x() && false !== ( $width = preg_match_all( '/\X/u', $string, $dummy /*needed for PHP 5.3*/ ) ) ) { if ( ! $test_strwidth || ( $test_strwidth & 2 ) ) { return $width + preg_match_all( $eaw_regex, $string, $dummy /*needed for PHP 5.3*/ ); } } // Legacy encodings and old PHPs will reach here. if ( function_exists( 'mb_strwidth' ) && ( $encoding || function_exists( 'mb_detect_encoding' ) ) ) { if ( ! $encoding ) { $encoding = mb_detect_encoding( $string, null, true /*strict*/ ); } $width = $encoding ? mb_strwidth( $string, $encoding ) : mb_strwidth( $string ); // mbstring funcs can fail if given `$encoding` arg that evals to false. if ( 'UTF-8' === $encoding ) { // Subtract combining characters. $width -= preg_match_all( $m_regex, $string, $dummy /*needed for PHP 5.3*/ ); } if ( ! $test_strwidth || ( $test_strwidth & 4 ) ) { return $width; } } return safe_strlen( $string, $encoding ); } /** * Returns whether ICU is modern enough not to flake out. * * @return bool */ function can_use_icu() { static $can_use_icu = null; if ( null === $can_use_icu ) { // Choosing ICU 54, Unicode 7.0. $can_use_icu = defined( 'INTL_ICU_VERSION' ) && version_compare( INTL_ICU_VERSION, '54.1', '>=' ) && function_exists( 'grapheme_strlen' ) && function_exists( 'grapheme_substr' ); } return $can_use_icu; } /** * Returns whether PCRE Unicode extended grapheme cluster '\X' is available for use. * * @return bool */ function can_use_pcre_x() { static $can_use_pcre_x = null; if ( null === $can_use_pcre_x ) { // '\X' introduced (as Unicde extended grapheme cluster) in PCRE 8.32 - see https://vcs.pcre.org/pcre/code/tags/pcre-8.32/ChangeLog?view=markup line 53. // Older versions of PCRE were bundled with PHP <= 5.3.23 & <= 5.4.13. $pcre_version = substr( PCRE_VERSION, 0, strspn( PCRE_VERSION, '0123456789.' ) ); // Remove any trailing date stuff. $can_use_pcre_x = version_compare( $pcre_version, '8.32', '>=' ) && false !== @preg_match( '/\X/u', '' ); } return $can_use_pcre_x; } /** * Get the regexs generated from Unicode data. * * @param string $idx Optional. Return a specific regex only. Default null. * @return array|string Returns keyed array if not given $idx or $idx doesn't exist, otherwise the specific regex string. */ function get_unicode_regexs( $idx = null ) { static $eaw_regex; // East Asian Width regex. Characters that count as 2 characters as they're "wide" or "fullwidth". See http://www.unicode.org/reports/tr11/tr11-19.html static $m_regex; // Mark characters regex (Unicode property "M") - mark combining "Mc", mark enclosing "Me" and mark non-spacing "Mn" chars that should be ignored for spacing purposes. if ( null === $eaw_regex ) { // Load both regexs generated from Unicode data. require __DIR__ . '/unicode/regex.php'; } if ( null !== $idx ) { if ( 'eaw' === $idx ) { return $eaw_regex; } if ( 'm' === $idx ) { return $m_regex; } } return array( $eaw_regex, $m_regex, ); } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\table; /** * The tabular renderer is used for displaying data in a tabular format. */ class Tabular extends Renderer { /** * Renders a row for output. * * @param array $row The table row. * @return string The formatted table row. */ public function row(array $row) { return implode("\t", array_values($row)); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\table; /** * Table renderers are used to change how a table is displayed. */ abstract class Renderer { protected $_widths = array(); public function __construct(array $widths = array()) { $this->setWidths($widths); } /** * Set the widths of each column in the table. * * @param array $widths The widths of the columns. * @param bool $fallback Whether to use these values as fallback only. */ public function setWidths(array $widths, $fallback = false) { if ($fallback) { foreach ( $this->_widths as $index => $value ) { $widths[$index] = $value; } } $this->_widths = $widths; } /** * Render a border for the top and bottom and separating the headers from the * table rows. * * @return string The table border. */ public function border() { return null; } /** * Renders a row for output. * * @param array $row The table row. * @return string The formatted table row. */ abstract public function row(array $row); } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\table; use cli\Colors; use cli\Shell; /** * The ASCII renderer renders tables with ASCII borders. */ class Ascii extends Renderer { protected $_characters = array( 'corner' => '+', 'line' => '-', 'border' => '|', 'padding' => ' ', ); protected $_border = null; protected $_constraintWidth = null; protected $_pre_colorized = false; /** * Set the widths of each column in the table. * * @param array $widths The widths of the columns. * @param bool $fallback Whether to use these values as fallback only. */ public function setWidths(array $widths, $fallback = false) { if ($fallback) { foreach ( $this->_widths as $index => $value ) { $widths[$index] = $value; } } $this->_widths = $widths; if ( is_null( $this->_constraintWidth ) ) { $this->_constraintWidth = (int) Shell::columns(); } $col_count = count( $widths ); $col_borders_count = $col_count ? ( ( $col_count - 1 ) * strlen( $this->_characters['border'] ) ) : 0; $table_borders_count = strlen( $this->_characters['border'] ) * 2; $col_padding_count = $col_count * strlen( $this->_characters['padding'] ) * 2; $max_width = $this->_constraintWidth - $col_borders_count - $table_borders_count - $col_padding_count; if ( $widths && $max_width && array_sum( $widths ) > $max_width ) { $avg = floor( $max_width / count( $widths ) ); $resize_widths = array(); $extra_width = 0; foreach( $widths as $width ) { if ( $width > $avg ) { $resize_widths[] = $width; } else { $extra_width = $extra_width + ( $avg - $width ); } } if ( ! empty( $resize_widths ) && $extra_width ) { $avg_extra_width = floor( $extra_width / count( $resize_widths ) ); foreach( $widths as &$width ) { if ( in_array( $width, $resize_widths ) ) { $width = $avg + $avg_extra_width; array_shift( $resize_widths ); // Last item gets the cake if ( empty( $resize_widths ) ) { $width = 0; // Zero it so not in sum. $width = $max_width - array_sum( $widths ); } } } } } $this->_widths = $widths; } /** * Set the constraint width for the table * * @param int $constraintWidth */ public function setConstraintWidth( $constraintWidth ) { $this->_constraintWidth = $constraintWidth; } /** * Set the characters used for rendering the Ascii table. * * The keys `corner`, `line` and `border` are used in rendering. * * @param $characters array Characters used in rendering. */ public function setCharacters(array $characters) { $this->_characters = array_merge($this->_characters, $characters); } /** * Render a border for the top and bottom and separating the headers from the * table rows. * * @return string The table border. */ public function border() { if (!isset($this->_border)) { $this->_border = $this->_characters['corner']; foreach ($this->_widths as $width) { $this->_border .= str_repeat($this->_characters['line'], $width + 2); $this->_border .= $this->_characters['corner']; } } return $this->_border; } /** * Renders a row for output. * * @param array $row The table row. * @return string The formatted table row. */ public function row( array $row ) { $extra_row_count = 0; if ( count( $row ) > 0 ) { $extra_rows = array_fill( 0, count( $row ), array() ); foreach( $row as $col => $value ) { $value = str_replace( array( "\r\n", "\n" ), ' ', $value ); $col_width = $this->_widths[ $col ]; $encoding = function_exists( 'mb_detect_encoding' ) ? mb_detect_encoding( $value, null, true /*strict*/ ) : false; $original_val_width = Colors::width( $value, self::isPreColorized( $col ), $encoding ); if ( $col_width && $original_val_width > $col_width ) { $row[ $col ] = \cli\safe_substr( $value, 0, $col_width, true /*is_width*/, $encoding ); $value = \cli\safe_substr( $value, \cli\safe_strlen( $row[ $col ], $encoding ), null /*length*/, false /*is_width*/, $encoding ); $i = 0; do { $extra_value = \cli\safe_substr( $value, 0, $col_width, true /*is_width*/, $encoding ); $val_width = Colors::width( $extra_value, self::isPreColorized( $col ), $encoding ); if ( $val_width ) { $extra_rows[ $col ][] = $extra_value; $value = \cli\safe_substr( $value, \cli\safe_strlen( $extra_value, $encoding ), null /*length*/, false /*is_width*/, $encoding ); $i++; if ( $i > $extra_row_count ) { $extra_row_count = $i; } } } while( $value ); } } } $row = array_map(array($this, 'padColumn'), $row, array_keys($row)); array_unshift($row, ''); // First border array_push($row, ''); // Last border $ret = join($this->_characters['border'], $row); if ( $extra_row_count ) { foreach( $extra_rows as $col => $col_values ) { while( count( $col_values ) < $extra_row_count ) { $col_values[] = ''; } } do { $row_values = array(); $has_more = false; foreach( $extra_rows as $col => &$col_values ) { $row_values[ $col ] = array_shift( $col_values ); if ( count( $col_values ) ) { $has_more = true; } } $row_values = array_map(array($this, 'padColumn'), $row_values, array_keys($row_values)); array_unshift($row_values, ''); // First border array_push($row_values, ''); // Last border $ret .= PHP_EOL . join($this->_characters['border'], $row_values); } while( $has_more ); } return $ret; } private function padColumn($content, $column) { return $this->_characters['padding'] . Colors::pad( $content, $this->_widths[ $column ], $this->isPreColorized( $column ) ) . $this->_characters['padding']; } /** * Set whether items are pre-colorized. * * @param bool|array $colorized A boolean to set all columns in the table as pre-colorized, or an array of booleans keyed by column index (number) to set individual columns as pre-colorized. */ public function setPreColorized( $pre_colorized ) { $this->_pre_colorized = $pre_colorized; } /** * Is a column pre-colorized? * * @param int $column Column index to check. * @return bool True if whole table is marked as pre-colorized, or if the individual column is pre-colorized; else false. */ public function isPreColorized( $column ) { if ( is_bool( $this->_pre_colorized ) ) { return $this->_pre_colorized; } if ( is_array( $this->_pre_colorized ) && isset( $this->_pre_colorized[ $column ] ) ) { return $this->_pre_colorized[ $column ]; } return false; } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\notify; use cli\Notify; use cli\Streams; /** * The `Spinner` Notifier displays an ASCII spinner. */ class Spinner extends Notify { protected $_chars = '-\|/'; protected $_format = '{:msg} {:char} ({:elapsed}, {:speed}/s)'; protected $_iteration = 0; /** * Prints the current spinner position to `STDOUT` with the time elapsed * and tick speed. * * @param boolean $finish `true` if this was called from * `cli\Notify::finish()`, `false` otherwise. * @see cli\out_padded() * @see cli\Notify::formatTime() * @see cli\Notify::speed() */ public function display($finish = false) { $msg = $this->_message; $idx = $this->_iteration++ % strlen($this->_chars); $char = $this->_chars[$idx]; $speed = number_format(round($this->speed())); $elapsed = $this->formatTime($this->elapsed()); Streams::out_padded($this->_format, compact('msg', 'char', 'elapsed', 'speed')); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli\notify; use cli\Notify; use cli\Streams; /** * A Notifer that displays a string of periods. */ class Dots extends Notify { protected $_dots; protected $_format = '{:msg}{:dots} ({:elapsed}, {:speed}/s)'; protected $_iteration; /** * Instatiates a Notification object. * * @param string $msg The text to display next to the Notifier. * @param int $dots The number of dots to iterate through. * @param int $interval The interval in milliseconds between updates. * @throws \InvalidArgumentException */ public function __construct($msg, $dots = 3, $interval = 100) { parent::__construct($msg, $interval); $this->_dots = (int)$dots; if ($this->_dots <= 0) { throw new \InvalidArgumentException('Dot count out of range, must be positive.'); } } /** * Prints the correct number of dots to `STDOUT` with the time elapsed and * tick speed. * * @param boolean $finish `true` if this was called from * `cli\Notify::finish()`, `false` otherwise. * @see cli\out_padded() * @see cli\Notify::formatTime() * @see cli\Notify::speed() */ public function display($finish = false) { $repeat = $this->_dots; if (!$finish) { $repeat = $this->_iteration++ % $repeat; } $msg = $this->_message; $dots = str_pad(str_repeat('.', $repeat), $this->_dots); $speed = number_format(round($this->speed())); $elapsed = $this->formatTime($this->elapsed()); Streams::out_padded($this->_format, compact('msg', 'dots', 'speed', 'elapsed')); } } <?php namespace cli; class Streams { protected static $out = STDOUT; protected static $in = STDIN; protected static $err = STDERR; static function _call( $func, $args ) { $method = __CLASS__ . '::' . $func; return call_user_func_array( $method, $args ); } static public function isTty() { return (function_exists('posix_isatty') && posix_isatty(static::$out)); } /** * Handles rendering strings. If extra scalar arguments are given after the `$msg` * the string will be rendered with `sprintf`. If the second argument is an `array` * then each key in the array will be the placeholder name. Placeholders are of the * format {:key}. * * @param string $msg The message to render. * @param mixed ... Either scalar arguments or a single array argument. * @return string The rendered string. */ public static function render( $msg ) { $args = func_get_args(); // No string replacement is needed if( count( $args ) == 1 || ( is_string( $args[1] ) && '' === $args[1] ) ) { return Colors::shouldColorize() ? Colors::colorize( $msg ) : $msg; } // If the first argument is not an array just pass to sprintf if( !is_array( $args[1] ) ) { // Colorize the message first so sprintf doesn't bitch at us if ( Colors::shouldColorize() ) { $args[0] = Colors::colorize( $args[0] ); } // Escape percent characters for sprintf $args[0] = preg_replace('/(%([^\w]|$))/', "%$1", $args[0]); return call_user_func_array( 'sprintf', $args ); } // Here we do named replacement so formatting strings are more understandable foreach( $args[1] as $key => $value ) { $msg = str_replace( '{:' . $key . '}', $value, $msg ); } return Colors::shouldColorize() ? Colors::colorize( $msg ) : $msg; } /** * Shortcut for printing to `STDOUT`. The message and parameters are passed * through `sprintf` before output. * * @param string $msg The message to output in `printf` format. * @param mixed ... Either scalar arguments or a single array argument. * @return void * @see \cli\render() */ public static function out( $msg ) { fwrite( static::$out, self::_call( 'render', func_get_args() ) ); } /** * Pads `$msg` to the width of the shell before passing to `cli\out`. * * @param string $msg The message to pad and pass on. * @param mixed ... Either scalar arguments or a single array argument. * @return void * @see cli\out() */ public static function out_padded( $msg ) { $msg = self::_call( 'render', func_get_args() ); self::out( str_pad( $msg, \cli\Shell::columns() ) ); } /** * Prints a message to `STDOUT` with a newline appended. See `\cli\out` for * more documentation. * * @see cli\out() */ public static function line( $msg = '' ) { // func_get_args is empty if no args are passed even with the default above. $args = array_merge( func_get_args(), array( '' ) ); $args[0] .= "\n"; self::_call( 'out', $args ); } /** * Shortcut for printing to `STDERR`. The message and parameters are passed * through `sprintf` before output. * * @param string $msg The message to output in `printf` format. With no string, * a newline is printed. * @param mixed ... Either scalar arguments or a single array argument. * @return void */ public static function err( $msg = '' ) { // func_get_args is empty if no args are passed even with the default above. $args = array_merge( func_get_args(), array( '' ) ); $args[0] .= "\n"; fwrite( static::$err, self::_call( 'render', $args ) ); } /** * Takes input from `STDIN` in the given format. If an end of transmission * character is sent (^D), an exception is thrown. * * @param string $format A valid input format. See `fscanf` for documentation. * If none is given, all input up to the first newline * is accepted. * @param boolean $hide If true will hide what the user types in. * @return string The input with whitespace trimmed. * @throws \Exception Thrown if ctrl-D (EOT) is sent as input. */ public static function input( $format = null, $hide = false ) { if ( $hide ) Shell::hide(); if( $format ) { fscanf( static::$in, $format . "\n", $line ); } else { $line = fgets( static::$in ); } if ( $hide ) { Shell::hide( false ); echo "\n"; } if( $line === false ) { throw new \Exception( 'Caught ^D during input' ); } return trim( $line ); } /** * Displays an input prompt. If no default value is provided the prompt will * continue displaying until input is received. * * @param string $question The question to ask the user. * @param bool|string $default A default value if the user provides no input. * @param string $marker A string to append to the question and default value * on display. * @param boolean $hide Optionally hides what the user types in. * @return string The users input. * @see cli\input() */ public static function prompt( $question, $default = null, $marker = ': ', $hide = false ) { if( $default && strpos( $question, '[' ) === false ) { $question .= ' [' . $default . ']'; } while( true ) { self::out( $question . $marker ); $line = self::input( null, $hide ); if ( trim( $line ) !== '' ) return $line; if( $default !== false ) return $default; } } /** * Presents a user with a multiple choice question, useful for 'yes/no' type * questions (which this public static function defaults too). * * @param string $question The question to ask the user. * @param string $choice A string of characters allowed as a response. Case is ignored. * @param string $default The default choice. NULL if a default is not allowed. * @return string The users choice. * @see cli\prompt() */ public static function choose( $question, $choice = 'yn', $default = 'n' ) { if( !is_string( $choice ) ) { $choice = join( '', $choice ); } // Make every choice character lowercase except the default $choice = str_ireplace( $default, strtoupper( $default ), strtolower( $choice ) ); // Seperate each choice with a forward-slash $choices = trim( join( '/', preg_split( '//', $choice ) ), '/' ); while( true ) { $line = self::prompt( sprintf( '%s? [%s]', $question, $choices ), $default, '' ); if( stripos( $choice, $line ) !== false ) { return strtolower( $line ); } if( !empty( $default ) ) { return strtolower( $default ); } } } /** * Displays an array of strings as a menu where a user can enter a number to * choose an option. The array must be a single dimension with either strings * or objects with a `__toString()` method. * * @param array $items The list of items the user can choose from. * @param string $default The index of the default item. * @param string $title The message displayed to the user when prompted. * @return string The index of the chosen item. * @see cli\line() * @see cli\input() * @see cli\err() */ public static function menu( $items, $default = null, $title = 'Choose an item' ) { $map = array_values( $items ); if( $default && strpos( $title, '[' ) === false && isset( $items[$default] ) ) { $title .= ' [' . $items[$default] . ']'; } foreach( $map as $idx => $item ) { self::line( ' %d. %s', $idx + 1, (string)$item ); } self::line(); while( true ) { fwrite( static::$out, sprintf( '%s: ', $title ) ); $line = self::input(); if( is_numeric( $line ) ) { $line--; if( isset( $map[$line] ) ) { return array_search( $map[$line], $items ); } if( $line < 0 || $line >= count( $map ) ) { self::err( 'Invalid menu selection: out of range' ); } } else if( isset( $default ) ) { return $default; } } } /** * Sets one of the streams (input, output, or error) to a `stream` type resource. * * Valid $whichStream values are: * - 'in' (default: STDIN) * - 'out' (default: STDOUT) * - 'err' (default: STDERR) * * Any custom streams will be closed for you on shutdown, so please don't close stream * resources used with this method. * * @param string $whichStream The stream property to update * @param resource $stream The new stream resource to use * @return void * @throws \Exception Thrown if $stream is not a resource of the 'stream' type. */ public static function setStream( $whichStream, $stream ) { if( !is_resource( $stream ) || get_resource_type( $stream ) !== 'stream' ) { throw new \Exception( 'Invalid resource type!' ); } if( property_exists( __CLASS__, $whichStream ) ) { static::${$whichStream} = $stream; } register_shutdown_function( function() use ($stream) { fclose( $stream ); } ); } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; /** * The `Shell` class is a utility class for shell related tasks such as * information on width. */ class Shell { /** * Returns the number of columns the current shell has for display. * * @return int The number of columns. * @todo Test on more systems. */ static public function columns() { static $columns; if ( getenv( 'PHP_CLI_TOOLS_TEST_SHELL_COLUMNS_RESET' ) ) { $columns = null; } if ( null === $columns ) { if ( function_exists( 'exec' ) ) { if ( self::is_windows() ) { // Cater for shells such as Cygwin and Git bash where `mode CON` returns an incorrect value for columns. if ( ( $shell = getenv( 'SHELL' ) ) && preg_match( '/(?:bash|zsh)(?:\.exe)?$/', $shell ) && getenv( 'TERM' ) ) { $columns = (int) exec( 'tput cols' ); } if ( ! $columns ) { $return_var = -1; $output = array(); exec( 'mode CON', $output, $return_var ); if ( 0 === $return_var && $output ) { // Look for second line ending in ": <number>" (searching for "Columns:" will fail on non-English locales). if ( preg_match( '/:\s*[0-9]+\n[^:]+:\s*([0-9]+)\n/', implode( "\n", $output ), $matches ) ) { $columns = (int) $matches[1]; } } } } else { if ( ! ( $columns = (int) getenv( 'COLUMNS' ) ) ) { $size = exec( '/usr/bin/env stty size 2>/dev/null' ); if ( '' !== $size && preg_match( '/[0-9]+ ([0-9]+)/', $size, $matches ) ) { $columns = (int) $matches[1]; } if ( ! $columns ) { if ( getenv( 'TERM' ) ) { $columns = (int) exec( '/usr/bin/env tput cols 2>/dev/null' ); } } } } } if ( ! $columns ) { $columns = 80; // default width of cmd window on Windows OS } } return $columns; } /** * Checks whether the output of the current script is a TTY or a pipe / redirect * * Returns true if STDOUT output is being redirected to a pipe or a file; false is * output is being sent directly to the terminal. * * If an env variable SHELL_PIPE exists, returned result depends it's * value. Strings like 1, 0, yes, no, that validate to booleans are accepted. * * To enable ASCII formatting even when shell is piped, use the * ENV variable SHELL_PIPE=0 * * @return bool */ static public function isPiped() { $shellPipe = getenv('SHELL_PIPE'); if ($shellPipe !== false) { return filter_var($shellPipe, FILTER_VALIDATE_BOOLEAN); } else { return (function_exists('posix_isatty') && !posix_isatty(STDOUT)); } } /** * Uses `stty` to hide input/output completely. * @param boolean $hidden Will hide/show the next data. Defaults to true. */ static public function hide($hidden = true) { system( 'stty ' . ( $hidden? '-echo' : 'echo' ) ); } /** * Is this shell in Windows? * * @return bool */ static private function is_windows() { return strtoupper(substr(PHP_OS, 0, 3)) === 'WIN'; } } ?> <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; abstract class Memoize { protected $_memoCache = array(); public function __get($name) { if (isset($this->_memoCache[$name])) { return $this->_memoCache[$name]; } // Hide probable private methods if (0 == strncmp($name, '_', 1)) { return ($this->_memoCache[$name] = null); } if (!method_exists($this, $name)) { return ($this->_memoCache[$name] = null); } $method = array($this, $name); ($this->_memoCache[$name] = call_user_func($method)); return $this->_memoCache[$name]; } protected function _unmemo($name) { if ($name === true) { $this->_memoCache = array(); } else { unset($this->_memoCache[$name]); } } } <?php /** * PHP Command Line Tools * * This source file is subject to the MIT license that is bundled * with this package in the file LICENSE. * * @author James Logsdon <dwarf@girsbrain.org> * @copyright 2010 James Logsdom (http://girsbrain.org) * @license http://www.opensource.org/licenses/mit-license.php The MIT License */ namespace cli; use cli\arguments\Argument; use cli\arguments\HelpScreen; use cli\arguments\InvalidArguments; use cli\arguments\Lexer; /** * Parses command line arguments. */ class Arguments implements \ArrayAccess { protected $_flags = array(); protected $_options = array(); protected $_strict = false; protected $_input = array(); protected $_invalid = array(); protected $_parsed; protected $_lexer; /** * Initializes the argument parser. If you wish to change the default behaviour * you may pass an array of options as the first argument. Valid options are * `'help'` and `'strict'`, each a boolean. * * `'help'` is `true` by default, `'strict'` is false by default. * * @param array $options An array of options for this parser. */ public function __construct($options = array()) { $options += array( 'strict' => false, 'input' => array_slice($_SERVER['argv'], 1) ); $this->_input = $options['input']; $this->setStrict($options['strict']); if (isset($options['flags'])) { $this->addFlags($options['flags']); } if (isset($options['options'])) { $this->addOptions($options['options']); } } /** * Get the list of arguments found by the defined definitions. * * @return array */ public function getArguments() { if (!isset($this->_parsed)) { $this->parse(); } return $this->_parsed; } public function getHelpScreen() { return new HelpScreen($this); } /** * Encodes the parsed arguments as JSON. * * @return string */ public function asJSON() { return json_encode($this->_parsed); } /** * Returns true if a given argument was parsed. * * @param mixed $offset An Argument object or the name of the argument. * @return bool */ public function offsetExists($offset) { if ($offset instanceOf Argument) { $offset = $offset->key; } return array_key_exists($offset, $this->_parsed); } /** * Get the parsed argument's value. * * @param mixed $offset An Argument object or the name of the argument. * @return mixed */ public function offsetGet($offset) { if ($offset instanceOf Argument) { $offset = $offset->key; } if (isset($this->_parsed[$offset])) { return $this->_parsed[$offset]; } } /** * Sets the value of a parsed argument. * * @param mixed $offset An Argument object or the name of the argument. * @param mixed $value The value to set */ public function offsetSet($offset, $value) { if ($offset instanceOf Argument) { $offset = $offset->key; } $this->_parsed[$offset] = $value; } /** * Unset a parsed argument. * * @param mixed $offset An Argument object or the name of the argument. */ public function offsetUnset($offset) { if ($offset instanceOf Argument) { $offset = $offset->key; } unset($this->_parsed[$offset]); } /** * Adds a flag (boolean argument) to the argument list. * * @param mixed $flag A string representing the flag, or an array of strings. * @param array $settings An array of settings for this flag. * @setting string description A description to be shown in --help. * @setting bool default The default value for this flag. * @setting bool stackable Whether the flag is repeatable to increase the value. * @setting array aliases Other ways to trigger this flag. * @return $this */ public function addFlag($flag, $settings = array()) { if (is_string($settings)) { $settings = array('description' => $settings); } if (is_array($flag)) { $settings['aliases'] = $flag; $flag = array_shift($settings['aliases']); } if (isset($this->_flags[$flag])) { $this->_warn('flag already exists: ' . $flag); return $this; } $settings += array( 'default' => false, 'stackable' => false, 'description' => null, 'aliases' => array() ); $this->_flags[$flag] = $settings; return $this; } /** * Add multiple flags at once. The input array should be keyed with the * primary flag character, and the values should be the settings array * used by {addFlag}. * * @param array $flags An array of flags to add * @return $this */ public function addFlags($flags) { foreach ($flags as $flag => $settings) { if (is_numeric($flag)) { $this->_warn('No flag character given'); continue; } $this->addFlag($flag, $settings); } return $this; } /** * Adds an option (string argument) to the argument list. * * @param mixed $option A string representing the option, or an array of strings. * @param array $settings An array of settings for this option. * @setting string description A description to be shown in --help. * @setting bool default The default value for this option. * @setting array aliases Other ways to trigger this option. * @return $this */ public function addOption($option, $settings = array()) { if (is_string($settings)) { $settings = array('description' => $settings); } if (is_array($option)) { $settings['aliases'] = $option; $option = array_shift($settings['aliases']); } if (isset($this->_options[$option])) { $this->_warn('option already exists: ' . $option); return $this; } $settings += array( 'default' => null, 'description' => null, 'aliases' => array() ); $this->_options[$option] = $settings; return $this; } /** * Add multiple options at once. The input array should be keyed with the * primary option string, and the values should be the settings array * used by {addOption}. * * @param array $options An array of options to add * @return $this */ public function addOptions($options) { foreach ($options as $option => $settings) { if (is_numeric($option)) { $this->_warn('No option string given'); continue; } $this->addOption($option, $settings); } return $this; } /** * Enable or disable strict mode. If strict mode is active any invalid * arguments found by the parser will throw `cli\arguments\InvalidArguments`. * * Even if strict is disabled, invalid arguments are logged and can be * retrieved with `cli\Arguments::getInvalidArguments()`. * * @param bool $strict True to enable, false to disable. * @return $this */ public function setStrict($strict) { $this->_strict = (bool)$strict; return $this; } /** * Get the list of invalid arguments the parser found. * * @return array */ public function getInvalidArguments() { return $this->_invalid; } /** * Get a flag by primary matcher or any defined aliases. * * @param mixed $flag Either a string representing the flag or an * cli\arguments\Argument object. * @return array */ public function getFlag($flag) { if ($flag instanceOf Argument) { $obj = $flag; $flag = $flag->value; } if (isset($this->_flags[$flag])) { return $this->_flags[$flag]; } foreach ($this->_flags as $master => $settings) { if (in_array($flag, (array)$settings['aliases'])) { if (isset($obj)) { $obj->key = $master; } $cache[$flag] =& $settings; return $settings; } } } public function getFlags() { return $this->_flags; } public function hasFlags() { return !empty($this->_flags); } /** * Returns true if the given argument is defined as a flag. * * @param mixed $argument Either a string representing the flag or an * cli\arguments\Argument object. * @return bool */ public function isFlag($argument) { return (null !== $this->getFlag($argument)); } /** * Returns true if the given flag is stackable. * * @param mixed $flag Either a string representing the flag or an * cli\arguments\Argument object. * @return bool */ public function isStackable($flag) { $settings = $this->getFlag($flag); return isset($settings) && (true === $settings['stackable']); } /** * Get an option by primary matcher or any defined aliases. * * @param mixed $option Either a string representing the option or an * cli\arguments\Argument object. * @return array */ public function getOption($option) { if ($option instanceOf Argument) { $obj = $option; $option = $option->value; } if (isset($this->_options[$option])) { return $this->_options[$option]; } foreach ($this->_options as $master => $settings) { if (in_array($option, (array)$settings['aliases'])) { if (isset($obj)) { $obj->key = $master; } return $settings; } } } public function getOptions() { return $this->_options; } public function hasOptions() { return !empty($this->_options); } /** * Returns true if the given argument is defined as an option. * * @param mixed $argument Either a string representing the option or an * cli\arguments\Argument object. * @return bool */ public function isOption($argument) { return (null != $this->getOption($argument)); } /** * Parses the argument list with the given options. The returned argument list * will use either the first long name given or the first name in the list * if a long name is not given. * * @return array * @throws arguments\InvalidArguments */ public function parse() { $this->_invalid = array(); $this->_parsed = array(); $this->_lexer = new Lexer($this->_input); $this->_applyDefaults(); foreach ($this->_lexer as $argument) { if ($this->_parseFlag($argument)) { continue; } if ($this->_parseOption($argument)) { continue; } array_push($this->_invalid, $argument->raw); } if ($this->_strict && !empty($this->_invalid)) { throw new InvalidArguments($this->_invalid); } } /** * This applies the default values, if any, of all of the * flags and options, so that if there is a default value * it will be available. */ private function _applyDefaults() { foreach($this->_flags as $flag => $settings) { $this[$flag] = $settings['default']; } foreach($this->_options as $option => $settings) { // If the default is 0 we should still let it be set. if (!empty($settings['default']) || $settings['default'] === 0) { $this[$option] = $settings['default']; } } } private function _warn($message) { trigger_error('[' . __CLASS__ .'] ' . $message, E_USER_WARNING); } private function _parseFlag($argument) { if (!$this->isFlag($argument)) { return false; } if ($this->isStackable($argument)) { if (!isset($this[$argument])) { $this[$argument->key] = 0; } $this[$argument->key] += 1; } else { $this[$argument->key] = true; } return true; } private function _parseOption($option) { if (!$this->isOption($option)) { return false; } // Peak ahead to make sure we get a value. if ($this->_lexer->end() || !$this->_lexer->peek->isValue) { $optionSettings = $this->getOption($option->key); if (empty($optionSettings['default']) && $optionSettings !== 0) { // Oops! Got no value and no default , throw a warning and continue. $this->_warn('no value given for ' . $option->raw); $this[$option->key] = null; } else { // No value and we have a default, so we set to the default $this[$option->key] = $optionSettings['default']; } return true; } // Store as array and join to string after looping for values $values = array(); // Loop until we find a flag in peak-ahead foreach ($this->_lexer as $value) { array_push($values, $value->raw); if (!$this->_lexer->end() && !$this->_lexer->peek->isValue) { break; } } $this[$option->key] = join(' ', $values); return true; } } <?php // Generated by "gen_east_asian_width.php" from "http://www.unicode.org/Public/10.0.0/ucd/EastAsianWidth.txt". $eaw_regex = '/\xe1(?:\x84[\x80-\xbf]|\x85[\x80-\x9f])|\xe2(?:\x8c[\x9a\x9b\xa9\xaa]|\x8f[\xa9-\xac\xb0\xb3]|\x97[\xbd\xbe]|\x98[\x94\x95]|\x99[\x88-\x93\xbf]|\x9a[\x93\xa1\xaa\xab\xbd\xbe]|\x9b[\x84\x85\x8e\x94\xaa\xb2\xb3\xb5\xba\xbd]|\x9c[\x85\x8a\x8b\xa8]|\x9d[\x8c\x8e\x93-\x95\x97]|\x9e[\x95-\x97\xb0\xbf]|\xac[\x9b\x9c]|\xad[\x90\x95]|\xba[\x80-\x99\x9b-\xbf]|\xbb[\x80-\xb3]|[\xbc-\xbe][\x80-\xbf]|\xbf[\x80-\x95\xb0-\xbb])|\xe3(?:\x80[\x80-\xbe]|\x81[\x81-\xbf]|\x82[\x80-\x96\x99-\xbf]|\x83[\x80-\xbf]|\x84[\x85-\xae\xb1-\xbf]|\x85[\x80-\xbf]|\x86[\x80-\x8e\x90-\xba]|\x87[\x80-\xa3\xb0-\xbf]|\x88[\x80-\x9e\xa0-\xbf]|\x89[\x80-\x87\x90-\xbf]|\x8a[\x80-\xbf]|\x8b[\x80-\xbe]|[\x8c-\xbf][\x80-\xbf])|\xe4(?:[\x80-\xb6][\x80-\xbf]|[\xb8-\xbf][\x80-\xbf])|[\xe5-\xe9][\x80-\xbf][\x80-\xbf]|\xea(?:[\x80-\x91][\x80-\xbf]|\x92[\x80-\x8c\x90-\xbf]|\x93[\x80-\x86]|\xa5[\xa0-\xbc]|[\xb0-\xbf][\x80-\xbf])|[\xeb\xec][\x80-\xbf][\x80-\xbf]|\xed(?:[\x80-\x9d][\x80-\xbf]|\x9e[\x80-\xa3])|\xef(?:[\xa4-\xab][\x80-\xbf]|\xb8[\x90-\x99\xb0-\xbf]|\xb9[\x80-\x92\x94-\xa6\xa8-\xab]|\xbc[\x81-\xbf]|\xbd[\x80-\xa0]|\xbf[\xa0-\xa6])|\xf0(?:\x96\xbf[\xa0\xa1]|\x97[\x80-\xbf][\x80-\xbf]|\x98(?:[\x80-\x9e][\x80-\xbf]|\x9f[\x80-\xac]|[\xa0-\xaa][\x80-\xbf]|\xab[\x80-\xb2])|\x9b(?:[\x80-\x83][\x80-\xbf]|\x84[\x80-\x9e]|\x85[\xb0-\xbf]|[\x86-\x8a][\x80-\xbf]|\x8b[\x80-\xbb])|\x9f(?:\x80\x84|\x83\x8f|\x86[\x8e\x91-\x9a]|\x88[\x80-\x82\x90-\xbb]|\x89[\x80-\x88\x90\x91\xa0-\xa5]|\x8c[\x80-\xa0\xad-\xb5\xb7-\xbf]|\x8d[\x80-\xbc\xbe\xbf]|\x8e[\x80-\x93\xa0-\xbf]|\x8f[\x80-\x8a\x8f-\x93\xa0-\xb0\xb4\xb8-\xbf]|\x90[\x80-\xbe]|\x91[\x80\x82-\xbf]|\x92[\x80-\xbf]|\x93[\x80-\xbc\xbf]|\x94[\x80-\xbd]|\x95[\x8b-\x8e\x90-\xa7\xba]|\x96[\x95\x96\xa4]|\x97[\xbb-\xbf]|\x98[\x80-\xbf]|\x99[\x80-\x8f]|\x9a[\x80-\xbf]|\x9b[\x80-\x85\x8c\x90-\x92\xab\xac\xb4-\xb8]|\xa4[\x90-\xbe]|\xa5[\x80-\x8c\x90-\xab]|\xa6[\x80-\x97]|\xa7[\x80\x90-\xa6])|[\xa0-\xae][\x80-\xbf][\x80-\xbf]|\xaf(?:[\x80-\xbe][\x80-\xbf]|\xbf[\x80-\xbd])|[\xb0-\xbe][\x80-\xbf][\x80-\xbf]|\xbf(?:[\x80-\xbe][\x80-\xbf]|\xbf[\x80-\xbd]))/'; // 181738 code points. // Generated by "gen_cat_regex_alts.php" from "http://www.unicode.org/Public/10.0.0/ucd/UnicodeData.txt". $m_regex = '/\xcc[\x80-\xbf]|\xcd[\x80-\xaf]|\xd2[\x83-\x89]|\xd6[\x91-\xbd\xbf]|\xd7[\x81\x82\x84\x85\x87]|\xd8[\x90-\x9a]|\xd9[\x8b-\x9f\xb0]|\xdb[\x96-\x9c\x9f-\xa4\xa7\xa8\xaa-\xad]|\xdc[\x91\xb0-\xbf]|\xdd[\x80-\x8a]|\xde[\xa6-\xb0]|\xdf[\xab-\xb3]|\xe0(?:\xa0[\x96-\x99\x9b-\xa3\xa5-\xa7\xa9-\xad]|\xa1[\x99-\x9b]|\xa3[\x94-\xa1\xa3-\xbf]|\xa4[\x80-\x83\xba-\xbc\xbe\xbf]|\xa5[\x80-\x8f\x91-\x97\xa2\xa3]|\xa6[\x81-\x83\xbc\xbe\xbf]|\xa7[\x80-\x84\x87\x88\x8b-\x8d\x97\xa2\xa3]|\xa8[\x81-\x83\xbc\xbe\xbf]|\xa9[\x80-\x82\x87\x88\x8b-\x8d\x91\xb0\xb1\xb5]|\xaa[\x81-\x83\xbc\xbe\xbf]|\xab[\x80-\x85\x87-\x89\x8b-\x8d\xa2\xa3\xba-\xbf]|\xac[\x81-\x83\xbc\xbe\xbf]|\xad[\x80-\x84\x87\x88\x8b-\x8d\x96\x97\xa2\xa3]|\xae[\x82\xbe\xbf]|\xaf[\x80-\x82\x86-\x88\x8a-\x8d\x97]|\xb0[\x80-\x83\xbe\xbf]|\xb1[\x80-\x84\x86-\x88\x8a-\x8d\x95\x96\xa2\xa3]|\xb2[\x81-\x83\xbc\xbe\xbf]|\xb3[\x80-\x84\x86-\x88\x8a-\x8d\x95\x96\xa2\xa3]|\xb4[\x80-\x83\xbb\xbc\xbe\xbf]|\xb5[\x80-\x84\x86-\x88\x8a-\x8d\x97\xa2\xa3]|\xb6[\x82\x83]|\xb7[\x8a\x8f-\x94\x96\x98-\x9f\xb2\xb3]|\xb8[\xb1\xb4-\xba]|\xb9[\x87-\x8e]|\xba[\xb1\xb4-\xb9\xbb\xbc]|\xbb[\x88-\x8d]|\xbc[\x98\x99\xb5\xb7\xb9\xbe\xbf]|\xbd[\xb1-\xbf]|\xbe[\x80-\x84\x86\x87\x8d-\x97\x99-\xbc]|\xbf\x86)|\xe1(?:\x80[\xab-\xbe]|\x81[\x96-\x99\x9e-\xa0\xa2-\xa4\xa7-\xad\xb1-\xb4]|\x82[\x82-\x8d\x8f\x9a-\x9d]|\x8d[\x9d-\x9f]|\x9c[\x92-\x94\xb2-\xb4]|\x9d[\x92\x93\xb2\xb3]|\x9e[\xb4-\xbf]|\x9f[\x80-\x93\x9d]|\xa0[\x8b-\x8d]|\xa2[\x85\x86\xa9]|\xa4[\xa0-\xab\xb0-\xbb]|\xa8[\x97-\x9b]|\xa9[\x95-\x9e\xa0-\xbc\xbf]|\xaa[\xb0-\xbe]|\xac[\x80-\x84\xb4-\xbf]|\xad[\x80-\x84\xab-\xb3]|\xae[\x80-\x82\xa1-\xad]|\xaf[\xa6-\xb3]|\xb0[\xa4-\xb7]|\xb3[\x90-\x92\x94-\xa8\xad\xb2-\xb4\xb7-\xb9]|\xb7[\x80-\xb9\xbb-\xbf])|\xe2(?:\x83[\x90-\xb0]|\xb3[\xaf-\xb1]|\xb5\xbf|\xb7[\xa0-\xbf])|\xe3(?:\x80[\xaa-\xaf]|\x82[\x99\x9a])|\xea(?:\x99[\xaf-\xb2\xb4-\xbd]|\x9a[\x9e\x9f]|\x9b[\xb0\xb1]|\xa0[\x82\x86\x8b\xa3-\xa7]|\xa2[\x80\x81\xb4-\xbf]|\xa3[\x80-\x85\xa0-\xb1]|\xa4[\xa6-\xad]|\xa5[\x87-\x93]|\xa6[\x80-\x83\xb3-\xbf]|\xa7[\x80\xa5]|\xa8[\xa9-\xb6]|\xa9[\x83\x8c\x8d\xbb-\xbd]|\xaa[\xb0\xb2-\xb4\xb7\xb8\xbe\xbf]|\xab[\x81\xab-\xaf\xb5\xb6]|\xaf[\xa3-\xaa\xac\xad])|\xef(?:\xac\x9e|\xb8[\x80-\x8f\xa0-\xaf])|\xf0(?:\x90(?:\x87\xbd|\x8b\xa0|\x8d[\xb6-\xba]|\xa8[\x81-\x83\x85\x86\x8c-\x8f\xb8-\xba\xbf]|\xab[\xa5\xa6])|\x91(?:\x80[\x80-\x82\xb8-\xbf]|\x81[\x80-\x86\xbf]|\x82[\x80-\x82\xb0-\xba]|\x84[\x80-\x82\xa7-\xb4]|\x85\xb3|\x86[\x80-\x82\xb3-\xbf]|\x87[\x80\x8a-\x8c]|\x88[\xac-\xb7\xbe]|\x8b[\x9f-\xaa]|\x8c[\x80-\x83\xbc\xbe\xbf]|\x8d[\x80-\x84\x87\x88\x8b-\x8d\x97\xa2\xa3\xa6-\xac\xb0-\xb4]|\x90[\xb5-\xbf]|\x91[\x80-\x86]|\x92[\xb0-\xbf]|\x93[\x80-\x83]|\x96[\xaf-\xb5\xb8-\xbf]|\x97[\x80\x9c\x9d]|\x98[\xb0-\xbf]|\x99\x80|\x9a[\xab-\xb7]|\x9c[\x9d-\xab]|\xa8[\x81-\x8a\xb3-\xb9\xbb-\xbe]|\xa9[\x87\x91-\x9b]|\xaa[\x8a-\x99]|\xb0[\xaf-\xb6\xb8-\xbf]|\xb2[\x92-\xa7\xa9-\xb6]|\xb4[\xb1-\xb6\xba\xbc\xbd\xbf]|\xb5[\x80-\x85\x87])|\x96(?:\xab[\xb0-\xb4]|\xac[\xb0-\xb6]|\xbd[\x91-\xbe]|\xbe[\x8f-\x92])|\x9b\xb2[\x9d\x9e]|\x9d(?:\x85[\xa5-\xa9\xad-\xb2\xbb-\xbf]|\x86[\x80-\x82\x85-\x8b\xaa-\xad]|\x89[\x82-\x84]|\xa8[\x80-\xb6\xbb-\xbf]|\xa9[\x80-\xac\xb5]|\xaa[\x84\x9b-\x9f\xa1-\xaf])|\x9e(?:\x80[\x80-\x86\x88-\x98\x9b-\xa1\xa3\xa4\xa6-\xaa]|\xa3[\x90-\x96]|\xa5[\x84-\x8a]))|\xf3\xa0(?:[\x84-\x86][\x80-\xbf]|\x87[\x80-\xaf])/'; // 2177 code points. <?php /** * An example application using php-cli-tools and Buzz */ require_once __DIR__ . '/vendor/autoload.php'; define('BUZZ_PATH', realpath('../Buzz')); define('SCRIPT_NAME', array_shift($argv)); require_once BUZZ_PATH . '/lib/Buzz/ClassLoader.php'; Buzz\ClassLoader::register(); class HttpConsole { protected $_host; protected $_prompt; public function __construct($host) { $this->_host = 'http://' . $host; $this->_prompt = '%K' . $this->_host . '%n/%K>%n '; } public function handleRequest($type, $path) { $request = new Buzz\Message\Request($type, $path, $this->_host); $response = new Buzz\Message\Response; $client = new Buzz\Client\FileGetContents(); $client->send($request, $response); // Display headers foreach ($response->getHeaders() as $i => $header) { if ($i == 0) { \cli\line('%G{:header}%n', compact('header')); continue; } list($key, $value) = explode(': ', $header, 2); \cli\line('%W{:key}%n: {:value}', compact('key', 'value')); } \cli\line("\n"); print $response->getContent() . "\n"; switch ($type) { } } public function run() { while (true) { $cmd = \cli\prompt($this->_prompt, false, null); if (preg_match('/^(HEAD|GET|POST|PUT|DELETE) (\S+)$/', $cmd, $matches)) { $this->handleRequest($matches[1], $matches[2]); continue; } if ($cmd == '\q') { break; } } } } try { $console = new HttpConsole(array_shift($argv) ?: '127.0.0.1:80'); $console->run(); } catch (\Exception $e) { \cli\err("\n\n%R" . $e->getMessage() . "%n\n"); } ?> <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_cron_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_cron_autoloader ) ) { require_once $wpcli_cron_autoloader; } WP_CLI::add_command( 'cron', 'Cron_Command' ); WP_CLI::add_command( 'cron event', 'Cron_Event_Command' ); WP_CLI::add_command( 'cron schedule', 'Cron_Schedule_Command' ); <?php use WP_CLI\Utils; /** * Schedules, runs, and deletes WP-Cron events. * * ## EXAMPLES * * # Schedule a new cron event * $ wp cron event schedule cron_test * Success: Scheduled event with hook 'cron_test' for 2016-05-31 10:19:16 GMT. * * # Run all cron events due right now * $ wp cron event run --due-now * Success: Executed a total of 2 cron events. * * # Delete all scheduled cron events for the given hook * $ wp cron event delete cron_test * Success: Deleted 2 instances of the cron event 'cron_test'. * * # List scheduled cron events in JSON * $ wp cron event list --fields=hook,next_run --format=json * [{"hook":"wp_version_check","next_run":"2016-05-31 10:15:13"},{"hook":"wp_update_plugins","next_run":"2016-05-31 10:15:13"},{"hook":"wp_update_themes","next_run":"2016-05-31 10:15:14"}] * * @package wp-cli */ class Cron_Event_Command extends WP_CLI_Command { private $fields = array( 'hook', 'next_run_gmt', 'next_run_relative', 'recurrence', ); private static $time_format = 'Y-m-d H:i:s'; /** * Lists scheduled cron events. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--<field>=<value>] * : Filter by one or more fields. * * [--field=<field>] * : Prints the value of a single field for each event. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each cron event: * * hook * * next_run_gmt * * next_run_relative * * recurrence * * These fields are optionally available: * * time * * sig * * args * * schedule * * interval * * next_run * * ## EXAMPLES * * # List scheduled cron events * $ wp cron event list * +-------------------+---------------------+---------------------+------------+ * | hook | next_run_gmt | next_run_relative | recurrence | * +-------------------+---------------------+---------------------+------------+ * | wp_version_check | 2016-05-31 22:15:13 | 11 hours 57 minutes | 12 hours | * | wp_update_plugins | 2016-05-31 22:15:13 | 11 hours 57 minutes | 12 hours | * | wp_update_themes | 2016-05-31 22:15:14 | 11 hours 57 minutes | 12 hours | * +-------------------+---------------------+---------------------+------------+ * * # List scheduled cron events in JSON * $ wp cron event list --fields=hook,next_run --format=json * [{"hook":"wp_version_check","next_run":"2016-05-31 10:15:13"},{"hook":"wp_update_plugins","next_run":"2016-05-31 10:15:13"},{"hook":"wp_update_themes","next_run":"2016-05-31 10:15:14"}] * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); $events = self::get_cron_events(); if ( is_wp_error( $events ) ) { $events = array(); } foreach ( $events as $key => $event ) { foreach ( $this->fields as $field ) { if ( ! empty( $assoc_args[ $field ] ) && $event->{$field} !== $assoc_args[ $field ] ) { unset( $events[ $key ] ); break; } } } if ( 'ids' === $formatter->format ) { echo implode( ' ', wp_list_pluck( $events, 'hook' ) ); } else { $formatter->display_items( $events ); } } /** * Schedules a new cron event. * * ## OPTIONS * * <hook> * : The hook name. * * [<next-run>] * : A Unix timestamp or an English textual datetime description compatible with `strtotime()`. Defaults to now. * * [<recurrence>] * : How often the event should recur. See `wp cron schedule list` for available schedule names. Defaults to no recurrence. * * [--<field>=<value>] * : Arguments to pass to the hook for the event. <field> should be a numeric key, not a string. * * ## EXAMPLES * * # Schedule a new cron event * $ wp cron event schedule cron_test * Success: Scheduled event with hook 'cron_test' for 2016-05-31 10:19:16 GMT. * * # Schedule new cron event with hourly recurrence * $ wp cron event schedule cron_test now hourly * Success: Scheduled event with hook 'cron_test' for 2016-05-31 10:20:32 GMT. * * # Schedule new cron event and pass arguments * $ wp cron event schedule cron_test '+1 hour' --0=first-argument --1=second-argument * Success: Scheduled event with hook 'cron_test' for 2016-05-31 11:21:35 GMT. */ public function schedule( $args, $assoc_args ) { if ( count( $assoc_args ) && count( array_filter( array_keys( $assoc_args ), 'is_string' ) ) ) { WP_CLI::warning( 'Numeric keys should be used for the hook arguments.' ); } $hook = $args[0]; $next_run = Utils\get_flag_value( $args, 1, 'now' ); $recurrence = Utils\get_flag_value( $args, 2, false ); if ( empty( $next_run ) ) { $timestamp = time(); } elseif ( is_numeric( $next_run ) ) { $timestamp = absint( $next_run ); } else { $timestamp = strtotime( $next_run ); } if ( ! $timestamp ) { WP_CLI::error( sprintf( "'%s' is not a valid datetime.", $next_run ) ); } if ( ! empty( $recurrence ) ) { $schedules = wp_get_schedules(); if ( ! isset( $schedules[ $recurrence ] ) ) { WP_CLI::error( sprintf( "'%s' is not a valid schedule name for recurrence.", $recurrence ) ); } $event = wp_schedule_event( $timestamp, $recurrence, $hook, $assoc_args ); } else { $event = wp_schedule_single_event( $timestamp, $hook, $assoc_args ); } if ( false !== $event ) { WP_CLI::success( sprintf( "Scheduled event with hook '%s' for %s GMT.", $hook, date( self::$time_format, $timestamp ) ) ); //phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date } else { WP_CLI::error( 'Event not scheduled.' ); } } /** * Runs the next scheduled cron event for the given hook. * * ## OPTIONS * * [<hook>...] * : One or more hooks to run. * * [--due-now] * : Run all hooks due right now. * * [--all] * : Run all hooks. * * ## EXAMPLES * * # Run all cron events due right now * $ wp cron event run --due-now * Success: Executed a total of 2 cron events. */ public function run( $args, $assoc_args ) { if ( empty( $args ) && ! Utils\get_flag_value( $assoc_args, 'due-now' ) && ! Utils\get_flag_value( $assoc_args, 'all' ) ) { WP_CLI::error( 'Please specify one or more cron events, or use --due-now/--all.' ); } $events = self::get_cron_events(); if ( is_wp_error( $events ) ) { WP_CLI::error( $events ); } $hooks = wp_list_pluck( $events, 'hook' ); foreach ( $args as $hook ) { if ( ! in_array( $hook, $hooks, true ) ) { WP_CLI::error( sprintf( "Invalid cron event '%s'", $hook ) ); } } if ( Utils\get_flag_value( $assoc_args, 'due-now' ) ) { $due_events = array(); foreach ( $events as $event ) { if ( ! empty( $args ) && ! in_array( $event->hook, $args, true ) ) { continue; } if ( time() >= $event->time ) { $due_events[] = $event; } } $events = $due_events; } elseif ( ! Utils\get_flag_value( $assoc_args, 'all' ) ) { $due_events = array(); foreach ( $events as $event ) { if ( in_array( $event->hook, $args, true ) ) { $due_events[] = $event; } } $events = $due_events; } $executed = 0; foreach ( $events as $event ) { $start = microtime( true ); $result = self::run_event( $event ); $total = round( microtime( true ) - $start, 3 ); $executed++; WP_CLI::log( sprintf( "Executed the cron event '%s' in %ss.", $event->hook, $total ) ); } $message = ( 1 === $executed ) ? 'Executed a total of %d cron event.' : 'Executed a total of %d cron events.'; WP_CLI::success( sprintf( $message, $executed ) ); } /** * Unschedules all cron events for a given hook. * * ## OPTIONS * * <hook> * : Name of the hook for which all events should be unscheduled. * * ## EXAMPLES * * # Unschedule a cron event on given hook. * $ wp cron event unschedule cron_test * Success: Unscheduled 2 events with hook 'cron_test'. */ public function unschedule( $args, $assoc_args ) { list( $hook ) = $args; if ( Utils\wp_version_compare( '4.9.0', '<' ) ) { WP_CLI::error( 'Unscheduling events is only supported from WordPress 4.9.0 onwards.' ); } $unscheduled = wp_unschedule_hook( $hook ); if ( empty( $unscheduled ) ) { $message = 'Failed to unschedule events for hook \'%1\$s.'; // If 0 event found on hook. if ( 0 === $unscheduled ) { $message = "No events found for hook '%1\$s'."; } WP_CLI::error( sprintf( $message, $hook ) ); } else { WP_CLI::success( sprintf( 'Unscheduled %1$d %2$s for hook \'%3$s\'.', $unscheduled, Utils\pluralize( 'event', $unscheduled ), $hook ) ); } } /** * Executes an event immediately. * * @param stdClass $event The event * @return bool Whether the event was successfully executed or not. */ protected static function run_event( stdClass $event ) { if ( ! defined( 'DOING_CRON' ) ) { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedConstantFound -- Using native WordPress constant. define( 'DOING_CRON', true ); } if ( false !== $event->schedule ) { $new_args = array( $event->time, $event->schedule, $event->hook, $event->args ); call_user_func_array( 'wp_reschedule_event', $new_args ); } wp_unschedule_event( $event->time, $event->hook, $event->args ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.DynamicHooknameFound -- Can't prefix dynamic hooks here, calling registered hooks. do_action_ref_array( $event->hook, $event->args ); return true; } /** * Deletes all scheduled cron events for the given hook. * * ## OPTIONS * * <hook> * : The hook name. * * ## EXAMPLES * * # Delete all scheduled cron events for the given hook * $ wp cron event delete cron_test * Success: Deleted 2 instances of the cron event 'cron_test'. */ public function delete( $args, $assoc_args ) { $hook = $args[0]; $events = self::get_cron_events(); if ( is_wp_error( $events ) ) { WP_CLI::error( $events ); } $deleted = 0; foreach ( $events as $event ) { if ( $event->hook === $hook ) { $result = self::delete_event( $event ); if ( $result ) { $deleted++; } else { WP_CLI::warning( sprintf( "Failed to the delete the cron event '%s'.", $hook ) ); } } } if ( $deleted ) { $message = ( 1 === $deleted ) ? "Deleted the cron event '%2\$s'." : "Deleted %1\$d instances of the cron event '%2\$s'."; WP_CLI::success( sprintf( $message, $deleted, $hook ) ); } else { WP_CLI::error( sprintf( "Invalid cron event '%s'.", $hook ) ); } } /** * Deletes a cron event. * * @param stdClass $event The event * @return bool Whether the event was successfully deleted or not. */ protected static function delete_event( stdClass $event ) { $crons = _get_cron_array(); if ( ! isset( $crons[ $event->time ][ $event->hook ][ $event->sig ] ) ) { return false; } wp_unschedule_event( $event->time, $event->hook, $event->args ); return true; } /** * Callback function to format a cron event. * * @param stdClass $event The event. * @return stdClass The formatted event object. */ protected static function format_event( stdClass $event ) { $event->next_run = get_date_from_gmt( date( 'Y-m-d H:i:s', $event->time ), self::$time_format ); //phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $event->next_run_gmt = date( self::$time_format, $event->time ); //phpcs:ignore WordPress.DateTime.RestrictedFunctions.date_date $event->next_run_relative = self::interval( $event->time - time() ); $event->recurrence = ( $event->schedule ) ? self::interval( $event->interval ) : 'Non-repeating'; return $event; } /** * Fetches an array of scheduled cron events. * * @return array|WP_Error An array of event objects, or a WP_Error object if there are no events scheduled. */ protected static function get_cron_events() { $crons = _get_cron_array(); $events = array(); if ( empty( $crons ) ) { return new WP_Error( 'no_events', 'You currently have no scheduled cron events.' ); } foreach ( $crons as $time => $hooks ) { foreach ( $hooks as $hook => $hook_events ) { foreach ( $hook_events as $sig => $data ) { $events[] = (object) array( 'hook' => $hook, 'time' => $time, 'sig' => $sig, 'args' => $data['args'], 'schedule' => $data['schedule'], 'interval' => Utils\get_flag_value( $data, 'interval' ), ); } } } $events = array_map( 'Cron_Event_Command::format_event', $events ); return $events; } /** * Converts a time interval into human-readable format. * * Similar to WordPress' built-in `human_time_diff()` but returns two time period chunks instead of just one. * * @param int $since An interval of time in seconds * @return string The interval in human readable format */ private static function interval( $since ) { if ( $since <= 0 ) { return 'now'; } $since = absint( $since ); // Array of time period chunks. $chunks = array( array( 60 * 60 * 24 * 365, 'year' ), array( 60 * 60 * 24 * 30, 'month' ), array( 60 * 60 * 24 * 7, 'week' ), array( 60 * 60 * 24, 'day' ), array( 60 * 60, 'hour' ), array( 60, 'minute' ), array( 1, 'second' ), ); // we only want to output two chunks of time here, eg: // x years, xx months // x days, xx hours // so there's only two bits of calculation below: // step one: the first chunk for ( $i = 0, $j = count( $chunks ); $i < $j; $i++ ) { $seconds = $chunks[ $i ][0]; $name = $chunks[ $i ][1]; // Finding the biggest chunk (if the chunk fits, break). $count = floor( $since / $seconds ); if ( floatval( 0 ) !== $count ) { break; } } // Set output var. $output = sprintf( '%d %s', $count, Utils\pluralize( $name, absint( $count ) ) ); // Step two: the second chunk. if ( $i + 1 < $j ) { $seconds2 = $chunks[ $i + 1 ][0]; $name2 = $chunks[ $i + 1 ][1]; $count2 = floor( ( $since - ( $seconds * $count ) ) / $seconds2 ); if ( floatval( 0 ) !== $count2 ) { // Add to output var. $output .= ' ' . sprintf( '%d %s', $count2, Utils\pluralize( $name2, absint( $count2 ) ) ); } } return $output; } private function get_formatter( &$assoc_args ) { return new \WP_CLI\Formatter( $assoc_args, $this->fields, 'event' ); } } <?php /** * Tests, runs, and deletes WP-Cron events; manages WP-Cron schedules. * * ## EXAMPLES * * # Test WP Cron spawning system * $ wp cron test * Success: WP-Cron spawning is working as expected. */ class Cron_Command extends WP_CLI_Command { /** * Tests the WP Cron spawning system and reports back its status. * * This command tests the spawning system by performing the following steps: * * * Checks to see if the `DISABLE_WP_CRON` constant is set; errors if true * because WP-Cron is disabled. * * Checks to see if the `ALTERNATE_WP_CRON` constant is set; warns if true. * * Attempts to spawn WP-Cron over HTTP; warns if non 200 response code is * returned. * * ## EXAMPLES * * # Cron test runs successfully. * $ wp cron test * Success: WP-Cron spawning is working as expected. */ public function test() { if ( defined( 'DISABLE_WP_CRON' ) && DISABLE_WP_CRON ) { WP_CLI::error( 'The DISABLE_WP_CRON constant is set to true. WP-Cron spawning is disabled.' ); } if ( defined( 'ALTERNATE_WP_CRON' ) && ALTERNATE_WP_CRON ) { WP_CLI::warning( 'The ALTERNATE_WP_CRON constant is set to true. WP-Cron spawning is not asynchronous.' ); } $spawn = self::get_cron_spawn(); if ( is_wp_error( $spawn ) ) { WP_CLI::error( sprintf( 'WP-Cron spawn failed with error: %s', $spawn->get_error_message() ) ); } $code = wp_remote_retrieve_response_code( $spawn ); $message = wp_remote_retrieve_response_message( $spawn ); if ( 200 === $code ) { WP_CLI::success( 'WP-Cron spawning is working as expected.' ); } else { WP_CLI::warning( sprintf( 'WP-Cron spawn succeeded but returned HTTP status code: %1$s %2$s', $code, $message ) ); } } /** * Spawns a request to `wp-cron.php` and return the response. * * This function is designed to mimic the functionality in `spawn_cron()` * with the addition of returning the result of the `wp_remote_post()` * request. * * @return WP_Error|array The response or WP_Error on failure. */ protected static function get_cron_spawn() { $sslverify = \WP_CLI\Utils\wp_version_compare( 4.0, '<' ); $doing_wp_cron = sprintf( '%.22F', microtime( true ) ); $cron_request_array = array( 'url' => site_url( 'wp-cron.php?doing_wp_cron=' . $doing_wp_cron ), 'key' => $doing_wp_cron, 'args' => array( 'timeout' => 3, 'blocking' => true, // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. 'sslverify' => apply_filters( 'https_local_ssl_verify', $sslverify ), ), ); // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Calling native WordPress hook. $cron_request = apply_filters( 'cron_request', $cron_request_array ); # Enforce a blocking request in case something that's hooked onto the 'cron_request' filter sets it to false $cron_request['args']['blocking'] = true; $result = wp_remote_post( $cron_request['url'], $cron_request['args'] ); return $result; } } <?php /** * Gets WP-Cron schedules. * * ## EXAMPLES * * # List available cron schedules * $ wp cron schedule list * +------------+-------------+----------+ * | name | display | interval | * +------------+-------------+----------+ * | hourly | Once Hourly | 3600 | * | twicedaily | Twice Daily | 43200 | * | daily | Once Daily | 86400 | * +------------+-------------+----------+ */ class Cron_Schedule_Command extends WP_CLI_Command { private $fields = array( 'name', 'display', 'interval', ); /** * List available cron schedules. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--field=<field>] * : Prints the value of a single field for each schedule. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each cron schedule: * * * name * * display * * interval * * There are no additional fields. * * ## EXAMPLES * * # List available cron schedules * $ wp cron schedule list * +------------+-------------+----------+ * | name | display | interval | * +------------+-------------+----------+ * | hourly | Once Hourly | 3600 | * | twicedaily | Twice Daily | 43200 | * | daily | Once Daily | 86400 | * +------------+-------------+----------+ * * # List id of available cron schedule * $ wp cron schedule list --fields=name --format=ids * hourly twicedaily daily * * @subcommand list */ public function list_( $args, $assoc_args ) { $formatter = $this->get_formatter( $assoc_args ); $schedules = self::get_schedules(); if ( 'ids' === $formatter->format ) { echo implode( ' ', wp_list_pluck( $schedules, 'name' ) ); } else { $formatter->display_items( $schedules ); } } /** * Callback function to format a cron schedule. * * @param array $schedule The schedule. * @param string $name The schedule name. * @return array The formatted schedule. */ protected static function format_schedule( array $schedule, $name ) { $schedule['name'] = $name; return $schedule; } /** * Return a list of the cron schedules sorted according to interval. * * @return array The array of cron schedules. Each schedule is itself an array. */ protected static function get_schedules() { $schedules = wp_get_schedules(); if ( ! empty( $schedules ) ) { uasort( $schedules, 'Cron_Schedule_Command::sort' ); $schedules = array_map( 'Cron_Schedule_Command::format_schedule', $schedules, array_keys( $schedules ) ); } return $schedules; } /** * Callback function to sort the cron schedule array by interval. * */ protected static function sort( array $a, array $b ) { return $a['interval'] - $b['interval']; } private function get_formatter( &$assoc_args ) { return new \WP_CLI\Formatter( $assoc_args, $this->fields, 'schedule' ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_core_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_core_autoloader ) ) { require_once $wpcli_core_autoloader; } WP_CLI::add_command( 'core', 'Core_Command' ); <?php use Composer\Semver\Comparator; use WP_CLI\Extractor; use WP_CLI\Iterators\Table as TableIterator; use WP_CLI\Utils; use WP_CLI\Formatter; use WP_CLI\WpOrgApi; /** * Downloads, installs, updates, and manages a WordPress installation. * * ## EXAMPLES * * # Download WordPress core * $ wp core download --locale=nl_NL * Downloading WordPress 4.5.2 (nl_NL)... * md5 hash verified: c5366d05b521831dd0b29dfc386e56a5 * Success: WordPress downloaded. * * # Install WordPress * $ wp core install --url=example.com --title=Example --admin_user=supervisor --admin_password=strongpassword --admin_email=info@example.com * Success: WordPress installed successfully. * * # Display the WordPress version * $ wp core version * 4.5.2 * * @package wp-cli */ class Core_Command extends WP_CLI_Command { /** * Checks for WordPress updates via Version Check API. * * Lists the most recent versions when there are updates available, * or success message when up to date. * * ## OPTIONS * * [--minor] * : Compare only the first two parts of the version number. * * [--major] * : Compare only the first part of the version number. * * [--field=<field>] * : Prints the value of a single field for each update. * * [--fields=<fields>] * : Limit the output to specific object fields. Defaults to version,update_type,package_url. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - count * - json * - yaml * --- * * ## EXAMPLES * * $ wp core check-update * +---------+-------------+-------------------------------------------------------------+ * | version | update_type | package_url | * +---------+-------------+-------------------------------------------------------------+ * | 4.5.2 | major | https://downloads.wordpress.org/release/wordpress-4.5.2.zip | * +---------+-------------+-------------------------------------------------------------+ * * @subcommand check-update */ public function check_update( $_, $assoc_args ) { $updates = $this->get_updates( $assoc_args ); if ( $updates ) { $updates = array_reverse( $updates ); $formatter = new Formatter( $assoc_args, [ 'version', 'update_type', 'package_url' ] ); $formatter->display_items( $updates ); } elseif ( empty( $assoc_args['format'] ) || 'table' === $assoc_args['format'] ) { WP_CLI::success( 'WordPress is at the latest version.' ); } } /** * Downloads core WordPress files. * * Downloads and extracts WordPress core files to the specified path. Uses * current directory when no path is specified. Downloaded build is verified * to have the correct md5 and then cached to the local filesytem. * Subsequent uses of command will use the local cache if it still exists. * * ## OPTIONS * * [<download-url>] * : Download directly from a provided URL instead of fetching the URL from the wordpress.org servers. * * [--path=<path>] * : Specify the path in which to install WordPress. Defaults to current * directory. * * [--locale=<locale>] * : Select which language you want to download. * * [--version=<version>] * : Select which version you want to download. Accepts a version number, 'latest' or 'nightly'. * * [--skip-content] * : Download WP without the default themes and plugins. * * [--force] * : Overwrites existing files, if present. * * [--insecure] * : Retry download without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * $ wp core download --locale=nl_NL * Downloading WordPress 4.5.2 (nl_NL)... * md5 hash verified: c5366d05b521831dd0b29dfc386e56a5 * Success: WordPress downloaded. * * @when before_wp_load */ public function download( $args, $assoc_args ) { $download_dir = ! empty( $assoc_args['path'] ) ? ( rtrim( $assoc_args['path'], '/\\' ) . '/' ) : ABSPATH; $wordpress_present = is_readable( $download_dir . 'wp-load.php' ); if ( $wordpress_present && ! Utils\get_flag_value( $assoc_args, 'force' ) ) { WP_CLI::error( 'WordPress files seem to already be present here.' ); } if ( ! is_dir( $download_dir ) ) { if ( ! is_writable( dirname( $download_dir ) ) ) { WP_CLI::error( "Insufficient permission to create directory '{$download_dir}'." ); } WP_CLI::log( "Creating directory '{$download_dir}'." ); if ( ! @mkdir( $download_dir, 0777, true /*recursive*/ ) ) { $error = error_get_last(); WP_CLI::error( "Failed to create directory '{$download_dir}': {$error['message']}." ); } } if ( ! is_writable( $download_dir ) ) { WP_CLI::error( "'{$download_dir}' is not writable by current user." ); } $locale = (string) Utils\get_flag_value( $assoc_args, 'locale', 'en_US' ); $skip_content = (bool) Utils\get_flag_value( $assoc_args, 'skip-content', false ); $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $download_url = array_shift( $args ); $from_url = ! empty( $download_url ); if ( $from_url ) { $version = null; if ( isset( $assoc_args['version'] ) ) { WP_CLI::error( 'Version option is not available for URL downloads.' ); } if ( $skip_content || 'en_US' !== $locale ) { WP_CLI::error( 'Skip content and locale options are not available for URL downloads.' ); } } elseif ( isset( $assoc_args['version'] ) && 'latest' !== $assoc_args['version'] ) { $version = $assoc_args['version']; if ( in_array( strtolower( $version ), [ 'trunk', 'nightly' ], true ) ) { $version = 'nightly'; } // Nightly builds and skip content are only available in .zip format. $extension = ( ( 'nightly' === $version ) || $skip_content ) ? 'zip' : 'tar.gz'; $download_url = $this->get_download_url( $version, $locale, $extension ); } else { try { $offer = ( new WpOrgApi( [ 'insecure' => $insecure ] ) ) ->get_core_download_offer( $locale ); } catch ( Exception $exception ) { WP_CLI::error( $exception ); } if ( ! $offer ) { WP_CLI::error( "The requested locale ({$locale}) was not found." ); } $version = $offer['current']; $download_url = $offer['download']; if ( ! $skip_content ) { $download_url = str_replace( '.zip', '.tar.gz', $download_url ); } } if ( 'nightly' === $version && 'en_US' !== $locale ) { WP_CLI::error( 'Nightly builds are only available for the en_US locale.' ); } $from_version = ''; if ( file_exists( $download_dir . 'wp-includes/version.php' ) ) { $wp_details = self::get_wp_details( $download_dir ); $from_version = $wp_details['wp_version']; } if ( $from_url ) { WP_CLI::log( "Downloading from {$download_url} ..." ); } else { WP_CLI::log( "Downloading WordPress {$version} ({$locale})..." ); } $path_parts = pathinfo( $download_url ); $extension = 'tar.gz'; if ( 'zip' === $path_parts['extension'] ) { $extension = 'zip'; if ( ! class_exists( 'ZipArchive' ) ) { WP_CLI::error( 'Extracting a zip file requires ZipArchive.' ); } } if ( $skip_content && 'zip' !== $extension ) { WP_CLI::error( 'Skip content is only available for ZIP files.' ); } $cache = WP_CLI::get_cache(); if ( $from_url ) { $cache_file = null; } else { $cache_key = "core/wordpress-{$version}-{$locale}.{$extension}"; $cache_file = $cache->has( $cache_key ); } $bad_cache = false; if ( $cache_file ) { WP_CLI::log( "Using cached file '{$cache_file}'..." ); $skip_content_cache_file = $skip_content ? self::strip_content_dir( $cache_file ) : null; try { Extractor::extract( $skip_content_cache_file ?: $cache_file, $download_dir ); } catch ( Exception $exception ) { WP_CLI::warning( 'Extraction failed, downloading a new copy...' ); $bad_cache = true; } } if ( ! $cache_file || $bad_cache ) { // We need to use a temporary file because piping from cURL to tar is flaky // on MinGW (and probably in other environments too). $temp = Utils\get_temp_dir() . uniqid( 'wp_' ) . ".{$extension}"; register_shutdown_function( function () use ( $temp ) { if ( file_exists( $temp ) ) { unlink( $temp ); } } ); $headers = [ 'Accept' => 'application/json' ]; $options = [ 'timeout' => 600, // 10 minutes ought to be enough for everybody 'filename' => $temp, 'insecure' => $insecure, ]; $response = Utils\http_request( 'GET', $download_url, null, $headers, $options ); if ( 404 === (int) $response->status_code ) { WP_CLI::error( 'Release not found. Double-check locale or version.' ); } elseif ( 20 !== (int) substr( $response->status_code, 0, 2 ) ) { WP_CLI::error( "Couldn't access download URL (HTTP code {$response->status_code})." ); } if ( 'nightly' !== $version ) { unset( $options['filename'] ); $md5_response = Utils\http_request( 'GET', $download_url . '.md5', null, [], $options ); if ( $md5_response->status_code >= 200 && $md5_response->status_code < 300 ) { $md5_file = md5_file( $temp ); if ( $md5_file === $md5_response->body ) { WP_CLI::log( 'md5 hash verified: ' . $md5_file ); } else { WP_CLI::error( "md5 hash for download ({$md5_file}) is different than the release hash ({$md5_response->body})." ); } } else { WP_CLI::warning( "Couldn't access md5 hash for release ({$download_url}.md5, HTTP code {$md5_response->status_code})." ); } } else { WP_CLI::warning( 'md5 hash checks are not available for nightly downloads.' ); } $skip_content_temp = $skip_content ? self::strip_content_dir( $temp ) : null; try { Extractor::extract( $skip_content_temp ?: $temp, $download_dir ); } catch ( Exception $exception ) { WP_CLI::error( "Couldn't extract WordPress archive. {$exception->getMessage()}" ); } // Do not use the cache for nightly builds or for downloaded URLs // (the URL could be something like "latest.zip" or "nightly.zip"). if ( ! $from_url && 'nightly' !== $version ) { $cache->import( $cache_key, $temp ); } } if ( $wordpress_present ) { $this->cleanup_extra_files( $from_version, $version, $locale, $insecure ); } WP_CLI::success( 'WordPress downloaded.' ); } /** * Checks if WordPress is installed. * * Determines whether WordPress is installed by checking if the standard * database tables are installed. Doesn't produce output; uses exit codes * to communicate whether WordPress is installed. * * [--network] * : Check if this is a multisite installation. * * ## EXAMPLES * * # Check whether WordPress is installed; exit status 0 if installed, otherwise 1 * $ wp core is-installed * $ echo $? * 1 * * # Bash script for checking whether WordPress is installed or not * if ! wp core is-installed; then * wp core install * fi * * @subcommand is-installed */ public function is_installed( $args, $assoc_args ) { if ( is_blog_installed() && ( ! Utils\get_flag_value( $assoc_args, 'network' ) || is_multisite() ) ) { WP_CLI::halt( 0 ); } WP_CLI::halt( 1 ); } /** * Runs the standard WordPress installation process. * * Creates the WordPress tables in the database using the URL, title, and * default admin user details provided. Performs the famous 5 minute install * in seconds or less. * * Note: if you've installed WordPress in a subdirectory, then you'll need * to `wp option update siteurl` after `wp core install`. For instance, if * WordPress is installed in the `/wp` directory and your domain is example.com, * then you'll need to run `wp option update siteurl http://example.com/wp` for * your WordPress installation to function properly. * * Note: When using custom user tables (e.g. `CUSTOM_USER_TABLE`), the admin * email and password are ignored if the user_login already exists. If the * user_login doesn't exist, a new user will be created. * * ## OPTIONS * * --url=<url> * : The address of the new site. * * --title=<site-title> * : The title of the new site. * * --admin_user=<username> * : The name of the admin user. * * [--admin_password=<password>] * : The password for the admin user. Defaults to randomly generated string. * * --admin_email=<email> * : The email address for the admin user. * * [--skip-email] * : Don't send an email notification to the new admin user. * * ## EXAMPLES * * # Install WordPress in 5 seconds * $ wp core install --url=example.com --title=Example --admin_user=supervisor --admin_password=strongpassword --admin_email=info@example.com * Success: WordPress installed successfully. * * # Install WordPress without disclosing admin_password to bash history * $ wp core install --url=example.com --title=Example --admin_user=supervisor --admin_email=info@example.com --prompt=admin_password < admin_password.txt */ public function install( $args, $assoc_args ) { if ( $this->do_install( $assoc_args ) ) { WP_CLI::success( 'WordPress installed successfully.' ); } else { WP_CLI::log( 'WordPress is already installed.' ); } } /** * Transforms an existing single-site installation into a multisite installation. * * Creates the multisite database tables, and adds the multisite constants * to wp-config.php. * * For those using WordPress with Apache, remember to update the `.htaccess` * file with the appropriate multisite rewrite rules. * * [Review the multisite documentation](https://codex.wordpress.org/Create_A_Network) * for more details about how multisite works. * * ## OPTIONS * * [--title=<network-title>] * : The title of the new network. * * [--base=<url-path>] * : Base path after the domain name that each site url will start with. * --- * default: / * --- * * [--subdomains] * : If passed, the network will use subdomains, instead of subdirectories. Doesn't work with 'localhost'. * * ## EXAMPLES * * $ wp core multisite-convert * Set up multisite database tables. * Added multisite constants to wp-config.php. * Success: Network installed. Don't forget to set up rewrite rules. * * @subcommand multisite-convert * @alias install-network */ public function multisite_convert( $args, $assoc_args ) { if ( is_multisite() ) { WP_CLI::error( 'This already is a multisite installation.' ); } $assoc_args = self::set_multisite_defaults( $assoc_args ); if ( ! isset( $assoc_args['title'] ) ) { // translators: placeholder is blog name $assoc_args['title'] = sprintf( _x( '%s Sites', 'Default network name' ), get_option( 'blogname' ) ); } if ( $this->multisite_convert_( $assoc_args ) ) { WP_CLI::success( "Network installed. Don't forget to set up rewrite rules (and a .htaccess file, if using Apache)." ); } } /** * Installs WordPress multisite from scratch. * * Creates the WordPress tables in the database using the URL, title, and * default admin user details provided. Then, creates the multisite tables * in the database and adds multisite constants to the wp-config.php. * * For those using WordPress with Apache, remember to update the `.htaccess` * file with the appropriate multisite rewrite rules. * * ## OPTIONS * * [--url=<url>] * : The address of the new site. * * [--base=<url-path>] * : Base path after the domain name that each site url in the network will start with. * --- * default: / * --- * * [--subdomains] * : If passed, the network will use subdomains, instead of subdirectories. Doesn't work with 'localhost'. * * --title=<site-title> * : The title of the new site. * * --admin_user=<username> * : The name of the admin user. * --- * default: admin * --- * * [--admin_password=<password>] * : The password for the admin user. Defaults to randomly generated string. * * --admin_email=<email> * : The email address for the admin user. * * [--skip-email] * : Don't send an email notification to the new admin user. * * [--skip-config] * : Don't add multisite constants to wp-config.php. * * ## EXAMPLES * * $ wp core multisite-install --title="Welcome to the WordPress" \ * > --admin_user="admin" --admin_password="password" \ * > --admin_email="user@example.com" * Single site database tables already present. * Set up multisite database tables. * Added multisite constants to wp-config.php. * Success: Network installed. Don't forget to set up rewrite rules. * * @subcommand multisite-install */ public function multisite_install( $args, $assoc_args ) { if ( $this->do_install( $assoc_args ) ) { WP_CLI::log( 'Created single site database tables.' ); } else { WP_CLI::log( 'Single site database tables already present.' ); } $assoc_args = self::set_multisite_defaults( $assoc_args ); // translators: placeholder is user supplied title $assoc_args['title'] = sprintf( _x( '%s Sites', 'Default network name' ), $assoc_args['title'] ); // Overwrite runtime args, to avoid mismatches. $consts_to_args = [ 'SUBDOMAIN_INSTALL' => 'subdomains', 'PATH_CURRENT_SITE' => 'base', 'SITE_ID_CURRENT_SITE' => 'site_id', 'BLOG_ID_CURRENT_SITE' => 'blog_id', ]; foreach ( $consts_to_args as $const => $arg ) { if ( defined( $const ) ) { $assoc_args[ $arg ] = constant( $const ); } } if ( ! $this->multisite_convert_( $assoc_args ) ) { return; } // Do the steps that were skipped by populate_network(), // which checks is_multisite(). if ( is_multisite() ) { $site_user = get_user_by( 'email', $assoc_args['admin_email'] ); self::add_site_admins( $site_user ); $domain = self::get_clean_basedomain(); self::create_initial_blog( $assoc_args['site_id'], $assoc_args['blog_id'], $domain, $assoc_args['base'], $assoc_args['subdomains'], $site_user ); } WP_CLI::success( "Network installed. Don't forget to set up rewrite rules (and a .htaccess file, if using Apache)." ); } private static function set_multisite_defaults( $assoc_args ) { $defaults = [ 'subdomains' => false, 'base' => '/', 'site_id' => 1, 'blog_id' => 1, ]; return array_merge( $defaults, $assoc_args ); } private function do_install( $assoc_args ) { if ( is_blog_installed() ) { return false; } if ( true === Utils\get_flag_value( $assoc_args, 'skip-email' ) ) { if ( ! function_exists( 'wp_new_blog_notification' ) ) { function wp_new_blog_notification() { // Silence is golden } } // WP 4.9.0 - skip "Notice of Admin Email Change" email as well (https://core.trac.wordpress.org/ticket/39117). add_filter( 'send_site_admin_email_change_email', '__return_false' ); } require_once ABSPATH . 'wp-admin/includes/upgrade.php'; $defaults = [ 'title' => '', 'admin_user' => '', 'admin_email' => '', 'admin_password' => '', ]; $args = wp_parse_args( $assoc_args, $defaults ); // Support prompting for the `--url=<url>`, // which is normally a runtime argument if ( isset( $assoc_args['url'] ) ) { WP_CLI::set_url( $assoc_args['url'] ); } $public = true; $password = empty( $args['admin_password'] ) ? wp_generate_password( 18 ) : $args['admin_password']; if ( ! is_email( $args['admin_email'] ) ) { WP_CLI::error( "The '{$args['admin_email']}' email address is invalid." ); } $result = wp_install( $args['title'], $args['admin_user'], $args['admin_email'], $public, '', $password ); if ( is_wp_error( $result ) ) { $reason = WP_CLI::error_to_string( $result ); WP_CLI::error( "Installation failed ({$reason})." ); } if ( ! empty( $GLOBALS['wpdb']->last_error ) ) { WP_CLI::error( 'Installation produced database errors, and may have partially or completely failed.' ); } if ( empty( $args['admin_password'] ) ) { WP_CLI::log( "Admin password: {$result['password']}" ); } // Confirm the uploads directory exists $upload_dir = wp_upload_dir(); if ( ! empty( $upload_dir['error'] ) ) { WP_CLI::warning( $upload_dir['error'] ); } return true; } private function multisite_convert_( $assoc_args ) { global $wpdb; require_once ABSPATH . 'wp-admin/includes/upgrade.php'; $domain = self::get_clean_basedomain(); if ( 'localhost' === $domain && ! empty( $assoc_args['subdomains'] ) ) { WP_CLI::error( "Multisite with subdomains cannot be configured when domain is 'localhost'." ); } // need to register the multisite tables manually for some reason foreach ( $wpdb->tables( 'ms_global' ) as $table => $prefixed_table ) { $wpdb->$table = $prefixed_table; } install_network(); $result = populate_network( $assoc_args['site_id'], $domain, get_option( 'admin_email' ), $assoc_args['title'], $assoc_args['base'], $assoc_args['subdomains'] ); $site_id = $wpdb->get_var( "SELECT id FROM $wpdb->site" ); $site_id = ( null === $site_id ) ? 1 : (int) $site_id; if ( true === $result ) { WP_CLI::log( 'Set up multisite database tables.' ); } elseif ( is_wp_error( $result ) ) { switch ( $result->get_error_code() ) { case 'siteid_exists': WP_CLI::log( $result->get_error_message() ); return false; case 'no_wildcard_dns': WP_CLI::warning( __( 'Wildcard DNS may not be configured correctly.' ) ); break; default: WP_CLI::error( $result ); } } // delete_site_option() cleans the alloptions cache to prevent dupe option delete_site_option( 'upload_space_check_disabled' ); update_site_option( 'upload_space_check_disabled', 1 ); if ( ! is_multisite() ) { $subdomain_export = Utils\get_flag_value( $assoc_args, 'subdomains' ) ? 'true' : 'false'; $ms_config = <<<EOT define( 'WP_ALLOW_MULTISITE', true ); define( 'MULTISITE', true ); define( 'SUBDOMAIN_INSTALL', {$subdomain_export} ); \$base = '{$assoc_args['base']}'; define( 'DOMAIN_CURRENT_SITE', '{$domain}' ); define( 'PATH_CURRENT_SITE', '{$assoc_args['base']}' ); define( 'SITE_ID_CURRENT_SITE', {$site_id} ); define( 'BLOG_ID_CURRENT_SITE', 1 ); EOT; $wp_config_path = Utils\locate_wp_config(); if ( true === Utils\get_flag_value( $assoc_args, 'skip-config' ) ) { WP_CLI::log( "Addition of multisite constants to 'wp-config.php' skipped. You need to add them manually:\n{$ms_config}" ); } elseif ( is_writable( $wp_config_path ) && self::modify_wp_config( $ms_config ) ) { WP_CLI::log( "Added multisite constants to 'wp-config.php'." ); } else { WP_CLI::warning( "Multisite constants could not be written to 'wp-config.php'. You may need to add them manually:\n{$ms_config}" ); } } else { /* Multisite constants are defined, therefore we already have an empty site_admins site meta. * * Code based on parts of delete_network_option. */ $rows = $wpdb->get_results( "SELECT meta_id, site_id FROM {$wpdb->sitemeta} WHERE meta_key = 'site_admins' AND meta_value = ''" ); foreach ( $rows as $row ) { wp_cache_delete( "{$row->site_id}:site_admins", 'site-options' ); $wpdb->delete( $wpdb->sitemeta, [ 'meta_id' => $row->meta_id ] ); } } return true; } // copied from populate_network() private static function create_initial_blog( $network_id, $blog_id, $domain, $path, $subdomain_install, $site_user ) { global $wpdb, $current_site, $wp_rewrite; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- This is meant to replace Core functionality. $current_site = new stdClass(); $current_site->domain = $domain; $current_site->path = $path; $current_site->site_name = ucfirst( $domain ); $blog_data = [ 'site_id' => $network_id, 'domain' => $domain, 'path' => $path, 'registered' => current_time( 'mysql' ), ]; $wpdb->insert( $wpdb->blogs, $blog_data ); $current_site->blog_id = $wpdb->insert_id; $blog_id = $wpdb->insert_id; update_user_meta( $site_user->ID, 'source_domain', $domain ); update_user_meta( $site_user->ID, 'primary_blog', $blog_id ); if ( $subdomain_install ) { $wp_rewrite->set_permalink_structure( '/%year%/%monthnum%/%day%/%postname%/' ); } else { $wp_rewrite->set_permalink_structure( '/blog/%year%/%monthnum%/%day%/%postname%/' ); } flush_rewrite_rules(); } // copied from populate_network() private static function add_site_admins( $site_user ) { $site_admins = [ $site_user->user_login ]; $users = get_users( [ 'fields' => [ 'ID', 'user_login' ] ] ); if ( $users ) { foreach ( $users as $user ) { if ( is_super_admin( $user->ID ) && ! in_array( $user->user_login, $site_admins, true ) ) { $site_admins[] = $user->user_login; } } } update_site_option( 'site_admins', $site_admins ); } private static function modify_wp_config( $content ) { $wp_config_path = Utils\locate_wp_config(); $token = "/* That's all, stop editing!"; $config_contents = file_get_contents( $wp_config_path ); if ( false === strpos( $config_contents, $token ) ) { return false; } list( $before, $after ) = explode( $token, $config_contents ); $content = trim( $content ); file_put_contents( $wp_config_path, "{$before}\n\n{$content}\n\n{$token}{$after}" ); return true; } private static function get_clean_basedomain() { $domain = preg_replace( '|https?://|', '', get_option( 'siteurl' ) ); $slash = strpos( $domain, '/' ); if ( false !== $slash ) { $domain = substr( $domain, 0, $slash ); } return $domain; } /** * Displays the WordPress version. * * ## OPTIONS * * [--extra] * : Show extended version information. * * ## EXAMPLES * * # Display the WordPress version * $ wp core version * 4.5.2 * * # Display WordPress version along with other information * $ wp core version --extra * WordPress version: 4.5.2 * Database revision: 36686 * TinyMCE version: 4.310 (4310-20160418) * Package language: en_US * * @when before_wp_load */ public function version( $args = [], $assoc_args = [] ) { $details = self::get_wp_details(); if ( ! Utils\get_flag_value( $assoc_args, 'extra' ) ) { WP_CLI::line( $details['wp_version'] ); return; } $match = []; $found_version = preg_match( '/(\d)(\d+)-/', $details['tinymce_version'], $match ); $human_readable_tiny_mce = $found_version ? "{$match[1]}.{$match[2]}" : ''; echo Utils\mustache_render( self::get_template_path( 'versions.mustache' ), [ 'wp-version' => $details['wp_version'], 'db-version' => $details['wp_db_version'], 'local-package' => empty( $details['wp_local_package'] ) ? 'en_US' : $details['wp_local_package'], 'mce-version' => $human_readable_tiny_mce ? "{$human_readable_tiny_mce} ({$details['tinymce_version']})" : $details['tinymce_version'], ] ); } /** * Gets version information from `wp-includes/version.php`. * * @return array { * @type string $wp_version The WordPress version. * @type int $wp_db_version The WordPress DB revision. * @type string $tinymce_version The TinyMCE version. * @type string $wp_local_package The TinyMCE version. * } */ private static function get_wp_details( $abspath = ABSPATH ) { $versions_path = $abspath . 'wp-includes/version.php'; if ( ! is_readable( $versions_path ) ) { WP_CLI::error( "This does not seem to be a WordPress installation.\n" . 'Pass --path=`path/to/wordpress` or run `wp core download`.' ); } $version_content = file_get_contents( $versions_path, null, null, 6, 2048 ); $vars = [ 'wp_version', 'wp_db_version', 'tinymce_version', 'wp_local_package' ]; $result = []; foreach ( $vars as $var_name ) { $result[ $var_name ] = self::find_var( $var_name, $version_content ); } return $result; } /** * Gets the template path based on installation type. */ private static function get_template_path( $template ) { $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $template_path = "{$command_root}/templates/{$template}"; if ( ! file_exists( $template_path ) ) { WP_CLI::error( "Couldn't find {$template}" ); } return $template_path; } /** * Searches for the value assigned to variable `$var_name` in PHP code `$code`. * * This is equivalent to matching the `\$VAR_NAME = ([^;]+)` regular expression and returning * the first match either as a `string` or as an `integer` (depending if it's surrounded by * quotes or not). * * @param string $var_name Variable name to search for. * @param string $code PHP code to search in. * * @return int|string|null */ private static function find_var( $var_name, $code ) { $start = strpos( $code, '$' . $var_name . ' = ' ); if ( ! $start ) { return null; } $start = $start + strlen( $var_name ) + 3; $end = strpos( $code, ';', $start ); $value = substr( $code, $start, $end - $start ); return trim( $value, " '" ); } /** * Security copy of the core function with Requests - Gets the checksums for the given version of WordPress. * * @param string $version Version string to query. * @param string $locale Locale to query. * @param bool $insecure Whether to retry without certificate validation on TLS handshake failure. * @return string|array String message on failure. An array of checksums on success. */ private static function get_core_checksums( $version, $locale, $insecure ) { $query = http_build_query( compact( 'version', 'locale' ), null, '&' ); $url = "https://api.wordpress.org/core/checksums/1.0/?{$query}"; $headers = [ 'Accept' => 'application/json' ]; $options = [ 'timeout' => 30, 'insecure' => $insecure, ]; $response = Utils\http_request( 'GET', $url, null, $headers, $options ); if ( ! $response->success || 200 !== (int) $response->status_code ) { return "Checksum request '{$url}' failed (HTTP {$response->status_code})."; } $body = trim( $response->body ); $body = json_decode( $body, true ); if ( ! is_array( $body ) || ! isset( $body['checksums'] ) || ! is_array( $body['checksums'] ) ) { return "Checksums not available for WordPress {$version}/{$locale}."; } return $body['checksums']; } /** * Updates WordPress to a newer version. * * Defaults to updating WordPress to the latest version. * * If you see "Error: Another update is currently in progress.", you may * need to run `wp option delete core_updater.lock` after verifying another * update isn't actually running. * * ## OPTIONS * * [<zip>] * : Path to zip file to use, instead of downloading from wordpress.org. * * [--minor] * : Only perform updates for minor releases (e.g. update from WP 4.3 to 4.3.3 instead of 4.4.2). * * [--version=<version>] * : Update to a specific version, instead of to the latest version. Alternatively accepts 'nightly'. * * [--force] * : Update even when installed WP version is greater than the requested version. * * [--locale=<locale>] * : Select which language you want to download. * * [--insecure] * : Retry download without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Update WordPress * $ wp core update * Updating to version 4.5.2 (en_US)... * Downloading update from https://downloads.wordpress.org/release/wordpress-4.5.2-no-content.zip... * Unpacking the update... * Cleaning up files... * No files found that need cleaning up * Success: WordPress updated successfully. * * # Update WordPress to latest version of 3.8 release * $ wp core update --version=3.8 ../latest.zip * Updating to version 3.8 ()... * Unpacking the update... * Cleaning up files... * File removed: wp-admin/js/tags-box.js * ... * File removed: wp-admin/js/updates.min. * 377 files cleaned up * Success: WordPress updated successfully. * * # Update WordPress to 3.1 forcefully * $ wp core update --version=3.1 --force * Updating to version 3.1 (en_US)... * Downloading update from https://wordpress.org/wordpress-3.1.zip... * Unpacking the update... * Warning: Checksums not available for WordPress 3.1/en_US. Please cleanup files manually. * Success: WordPress updated successfully. * * @alias upgrade */ public function update( $args, $assoc_args ) { global $wp_version; $update = null; $upgrader = 'WP_CLI\\Core\\CoreUpgrader'; if ( 'trunk' === Utils\get_flag_value( $assoc_args, 'version' ) ) { $assoc_args['version'] = 'nightly'; } if ( ! empty( $args[0] ) ) { // ZIP path or URL is given $upgrader = 'WP_CLI\\Core\\NonDestructiveCoreUpgrader'; $version = Utils\get_flag_value( $assoc_args, 'version' ); $update = (object) [ 'response' => 'upgrade', 'current' => $version, 'download' => $args[0], 'packages' => (object) [ 'partial' => null, 'new_bundled' => null, 'no_content' => null, 'full' => $args[0], ], 'version' => $version, 'locale' => null, ]; } elseif ( empty( $assoc_args['version'] ) ) { // Update to next release wp_version_check(); $from_api = get_site_transient( 'update_core' ); if ( Utils\get_flag_value( $assoc_args, 'minor' ) ) { foreach ( $from_api->updates as $offer ) { $sem_ver = Utils\get_named_sem_ver( $offer->version, $wp_version ); if ( ! $sem_ver || 'patch' !== $sem_ver ) { continue; } $update = $offer; break; } if ( empty( $update ) ) { WP_CLI::success( 'WordPress is at the latest minor release.' ); return; } } else { if ( ! empty( $from_api->updates ) ) { list( $update ) = $from_api->updates; } } } elseif ( Utils\wp_version_compare( $assoc_args['version'], '<' ) || 'nightly' === $assoc_args['version'] || Utils\get_flag_value( $assoc_args, 'force' ) ) { // Specific version is given $version = $assoc_args['version']; $locale = Utils\get_flag_value( $assoc_args, 'locale', get_locale() ); $new_package = $this->get_download_url( $version, $locale ); $update = (object) [ 'response' => 'upgrade', 'current' => $assoc_args['version'], 'download' => $new_package, 'packages' => (object) [ 'partial' => null, 'new_bundled' => null, 'no_content' => null, 'full' => $new_package, ], 'version' => $version, 'locale' => $locale, ]; } if ( ! empty( $update ) && ( $update->version !== $wp_version || Utils\get_flag_value( $assoc_args, 'force' ) ) ) { require_once ABSPATH . 'wp-admin/includes/upgrade.php'; if ( $update->version ) { WP_CLI::log( "Updating to version {$update->version} ({$update->locale})..." ); } else { WP_CLI::log( 'Starting update...' ); } $from_version = $wp_version; $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $GLOBALS['wpcli_core_update_obj'] = $update; $result = Utils\get_upgrader( $upgrader, $insecure )->upgrade( $update ); unset( $GLOBALS['wpcli_core_update_obj'] ); if ( is_wp_error( $result ) ) { $message = WP_CLI::error_to_string( $result ); if ( 'up_to_date' !== $result->get_error_code() ) { WP_CLI::error( $message ); } else { WP_CLI::success( $message ); } } else { $to_version = ''; if ( file_exists( ABSPATH . 'wp-includes/version.php' ) ) { $wp_details = self::get_wp_details(); $to_version = $wp_details['wp_version']; } $locale = (string) Utils\get_flag_value( $assoc_args, 'locale', get_locale() ); $this->cleanup_extra_files( $from_version, $to_version, $locale, $insecure ); WP_CLI::success( 'WordPress updated successfully.' ); } } else { WP_CLI::success( 'WordPress is up to date.' ); } } /** * Runs the WordPress database update procedure. * * [--network] * : Update databases for all sites on a network * * [--dry-run] * : Compare database versions without performing the update. * * ## EXAMPLES * * # Update the WordPress database * $ wp core update-db * Success: WordPress database upgraded successfully from db version 36686 to 35700. * * # Update databases for all sites on a network * $ wp core update-db --network * WordPress database upgraded successfully from db version 35700 to 29630 on example.com/ * Success: WordPress database upgraded on 123/123 sites * * @subcommand update-db */ public function update_db( $args, $assoc_args ) { global $wpdb, $wp_db_version, $wp_current_db_version; $network = Utils\get_flag_value( $assoc_args, 'network' ); if ( $network && ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } $dry_run = Utils\get_flag_value( $assoc_args, 'dry-run' ); if ( $dry_run ) { WP_CLI::log( 'Performing a dry run, with no database modification.' ); } if ( $network ) { $iterator_args = [ 'table' => $wpdb->blogs, 'where' => [ 'spam' => 0, 'deleted' => 0, 'archived' => 0, ], ]; $it = new TableIterator( $iterator_args ); $success = 0; $total = 0; $site_ids = []; foreach ( $it as $blog ) { $total++; $site_ids[] = $blog->site_id; $url = $blog->domain . $blog->path; $cmd = "--url={$url} core update-db"; if ( $dry_run ) { $cmd .= ' --dry-run'; } $process = WP_CLI::runcommand( $cmd, [ 'return' => 'all' ] ); if ( 0 === (int) $process->return_code ) { // See if we can parse the stdout if ( preg_match( '#Success: (.+)#', $process->stdout, $matches ) ) { $message = rtrim( $matches[1], '.' ); $message = "{$message} on {$url}"; } else { $message = "Database upgraded successfully on {$url}"; } WP_CLI::log( $message ); $success++; } else { WP_CLI::warning( "Database failed to upgrade on {$url}" ); } } if ( ! $dry_run && $total && $success === $total ) { foreach ( array_unique( $site_ids ) as $site_id ) { update_metadata( 'site', $site_id, 'wpmu_upgrade_site', $wp_db_version ); } } WP_CLI::success( "WordPress database upgraded on {$success}/{$total} sites." ); } else { require_once ABSPATH . 'wp-admin/includes/upgrade.php'; // phpcs:ignore WordPress.WP.GlobalVariablesOverride.Prohibited -- Replacing WP Core behavior is the goal here. $wp_current_db_version = (int) __get_option( 'db_version' ); if ( $wp_db_version !== $wp_current_db_version ) { if ( $dry_run ) { WP_CLI::success( "WordPress database will be upgraded from db version {$wp_current_db_version} to {$wp_db_version}." ); } else { // WP upgrade isn't too fussy about generating MySQL warnings such as "Duplicate key name" during an upgrade so suppress. $wpdb->suppress_errors(); // WP upgrade expects `$_SERVER['HTTP_HOST']` to be set in `wp_guess_url()`, otherwise get PHP notice. if ( ! isset( $_SERVER['HTTP_HOST'] ) ) { $_SERVER['HTTP_HOST'] = 'http://example.com'; } wp_upgrade(); WP_CLI::success( "WordPress database upgraded successfully from db version {$wp_current_db_version} to {$wp_db_version}." ); } } else { WP_CLI::success( "WordPress database already at latest db version {$wp_db_version}." ); } } } /** * Gets download url based on version, locale and desired file type. * * @param $version * @param string $locale * @param string $file_type * @return string */ private function get_download_url( $version, $locale = 'en_US', $file_type = 'zip' ) { if ( 'nightly' === $version ) { if ( 'zip' === $file_type ) { return 'https://wordpress.org/nightly-builds/wordpress-latest.zip'; } else { WP_CLI::error( 'Nightly builds are only available in .zip format.' ); } } $locale_subdomain = 'en_US' === $locale ? '' : substr( $locale, 0, 2 ) . '.'; $locale_suffix = 'en_US' === $locale ? '' : "-{$locale}"; return "https://{$locale_subdomain}wordpress.org/wordpress-{$version}{$locale_suffix}.{$file_type}"; } /** * Returns update information. */ private function get_updates( $assoc_args ) { wp_version_check(); $from_api = get_site_transient( 'update_core' ); if ( ! $from_api ) { return []; } $compare_version = str_replace( '-src', '', $GLOBALS['wp_version'] ); $updates = [ 'major' => false, 'minor' => false, ]; foreach ( $from_api->updates as $offer ) { $update_type = Utils\get_named_sem_ver( $offer->version, $compare_version ); if ( ! $update_type ) { continue; } // WordPress follow its own versioning which is roughly equivalent to semver if ( 'minor' === $update_type ) { $update_type = 'major'; } elseif ( 'patch' === $update_type ) { $update_type = 'minor'; } if ( ! empty( $updates[ $update_type ] ) && ! Comparator::greaterThan( $offer->version, $updates[ $update_type ]['version'] ) ) { continue; } $updates[ $update_type ] = [ 'version' => $offer->version, 'update_type' => $update_type, 'package_url' => ! empty( $offer->packages->partial ) ? $offer->packages->partial : $offer->packages->full, ]; } foreach ( $updates as $type => $value ) { if ( empty( $value ) ) { unset( $updates[ $type ] ); } } foreach ( [ 'major', 'minor' ] as $type ) { if ( true === Utils\get_flag_value( $assoc_args, $type ) ) { return ! empty( $updates[ $type ] ) ? [ $updates[ $type ] ] : false; } } return array_values( $updates ); } /** * Clean up extra files. * * @param string $version_from Starting version that the installation was updated from. * @param string $version_to Target version that the installation is updated to. * @param string $locale Locale of the installation. * @param bool $insecure Whether to retry without certificate validation on TLS handshake failure. */ private function cleanup_extra_files( $version_from, $version_to, $locale, $insecure ) { if ( ! $version_from || ! $version_to ) { WP_CLI::warning( 'Failed to find WordPress version. Please cleanup files manually.' ); return; } $old_checksums = self::get_core_checksums( $version_from, $locale ?: 'en_US', $insecure ); if ( ! is_array( $old_checksums ) ) { WP_CLI::warning( "{$old_checksums} Please cleanup files manually." ); return; } $new_checksums = self::get_core_checksums( $version_to, $locale ?: 'en_US', $insecure ); if ( ! is_array( $new_checksums ) ) { WP_CLI::warning( "{$new_checksums} Please cleanup files manually." ); return; } $files_to_remove = array_diff( array_keys( $old_checksums ), array_keys( $new_checksums ) ); if ( ! empty( $files_to_remove ) ) { WP_CLI::log( 'Cleaning up files...' ); $count = 0; foreach ( $files_to_remove as $file ) { // wp-content should be considered user data if ( 0 === stripos( $file, 'wp-content' ) ) { continue; } if ( file_exists( ABSPATH . $file ) ) { unlink( ABSPATH . $file ); WP_CLI::log( "File removed: {$file}" ); $count++; } } if ( $count ) { WP_CLI::log( number_format( $count ) . ' files cleaned up.' ); } else { WP_CLI::log( 'No files found that need cleaning up.' ); } } } private static function strip_content_dir( $zip_file ) { $new_zip_file = Utils\get_temp_dir() . uniqid( 'wp_' ) . '.zip'; register_shutdown_function( function () use ( $new_zip_file ) { if ( file_exists( $new_zip_file ) ) { unlink( $new_zip_file ); } } ); // Duplicate file to avoid modifying the original, which could be cache. if ( ! copy( $zip_file, $new_zip_file ) ) { WP_CLI::error( 'Failed to copy ZIP file.' ); } $zip = new ZipArchive(); $res = $zip->open( $new_zip_file ); if ( true === $res ) { // phpcs:ignore WordPress.NamingConventions.ValidVariableName.UsedPropertyNotSnakeCase for ( $i = 0; $i < $zip->numFiles; $i++ ) { $info = $zip->statIndex( $i ); if ( false !== stripos( $info['name'], 'wp-content/' ) ) { $zip->deleteIndex( $i ); } } $zip->close(); return $new_zip_file; } else { WP_CLI::error( 'ZipArchive failed to open ZIP file.' ); } } } <?php namespace WP_CLI\Core; use Exception; use Requests_Response; use WP_CLI; use WP_CLI\Utils; use WP_Error; use Core_Upgrader as DefaultCoreUpgrader; use WP_Filesystem_Base; /** * A Core Upgrader class that caches the download, and uses cached if available. * * @package wp-cli */ class CoreUpgrader extends DefaultCoreUpgrader { /** * Whether to retry without certificate validation on TLS handshake failure. * * @var bool */ private $insecure; /** * CoreUpgrader constructor. * * @param WP_Upgrader_Skin|null $skin */ public function __construct( $skin = null, $insecure = false ) { $this->insecure = $insecure; parent::__construct( $skin ); } /** * Caches the download, and uses cached if available. * * @access public * * @param string $package The URI of the package. If this is the full path to an * existing local file, it will be returned untouched. * @param bool $check_signatures Whether to validate file signatures. Default true. * @param array $hook_extra Extra arguments to pass to the filter hooks. Default empty array. * @return string|WP_Error The full path to the downloaded package file, or a WP_Error object. */ public function download_package( $package, $check_signatures = true, $hook_extra = [] ) { /** * Filter whether to return the package. * * @since 3.7.0 * * @param bool $reply Whether to bail without returning the package. Default is false. * @param string $package The package file name. * @param object $this The WP_Upgrader instance. */ $reply = apply_filters( // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Override existing hook from Core. 'upgrader_pre_download', false, $package, $this, $hook_extra ); if ( false !== $reply ) { return $reply; } // Check if package is a local or remote file. Bail if it's local. if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) { return $package; } if ( empty( $package ) ) { return new WP_Error( 'no_package', $this->strings['no_package'] ); } $filename = pathinfo( $package, PATHINFO_FILENAME ); $extension = pathinfo( $package, PATHINFO_EXTENSION ); $temp = Utils\get_temp_dir() . uniqid( 'wp_' ) . ".{$extension}"; register_shutdown_function( function () use ( $temp ) { if ( file_exists( $temp ) ) { unlink( $temp ); } } ); $cache = WP_CLI::get_cache(); $update = $GLOBALS['wpcli_core_update_obj']; $cache_key = "core/{$filename}-{$update->locale}.{$extension}"; $cache_file = $cache->has( $cache_key ); if ( $cache_file && false === stripos( $package, 'https://wordpress.org/nightly-builds/' ) && false === stripos( $package, 'http://wordpress.org/nightly-builds/' ) ) { WP_CLI::log( "Using cached file '{$cache_file}'..." ); copy( $cache_file, $temp ); return $temp; } /* * Download to a temporary file because piping from cURL to tar is flaky * on MinGW (and probably in other environments too). */ $headers = [ 'Accept' => 'application/json' ]; $options = [ 'timeout' => 600, // 10 minutes ought to be enough for everybody. 'filename' => $temp, 'halt_on_error' => false, 'insecure' => $this->insecure, ]; $this->skin->feedback( 'downloading_package', $package ); /** @var Requests_Response|null $req */ try { $response = Utils\http_request( 'GET', $package, null, $headers, $options ); } catch ( Exception $e ) { return new WP_Error( 'download_failed', $e->getMessage() ); } if ( ! is_null( $response ) && 200 !== (int) $response->status_code ) { return new WP_Error( 'download_failed', $this->strings['download_failed'] ); } if ( false === stripos( $package, 'https://wordpress.org/nightly-builds/' ) ) { $cache->import( $cache_key, $temp ); } return $temp; } /** * Upgrade WordPress core. * * @access public * * @global WP_Filesystem_Base $wp_filesystem Subclass * @global callable $_wp_filesystem_direct_method * * @param object $current Response object for whether WordPress is current. * @param array $args { * Optional. Arguments for upgrading WordPress core. Default empty array. * * @type bool $pre_check_md5 Whether to check the file checksums before * attempting the upgrade. Default true. * @type bool $attempt_rollback Whether to attempt to rollback the chances if * there is a problem. Default false. * @type bool $do_rollback Whether to perform this "upgrade" as a rollback. * Default false. * } * @return null|false|WP_Error False or WP_Error on failure, null on success. */ public function upgrade( $current, $args = [] ) { set_error_handler( [ __CLASS__, 'error_handler' ], E_USER_WARNING | E_USER_NOTICE ); $result = parent::upgrade( $current, $args ); restore_error_handler(); return $result; } /** * Error handler to ignore failures on accessing SSL "https://api.wordpress.org/core/checksums/1.0/" in `get_core_checksums()` which seem to occur intermittently. */ public static function error_handler( $errno, $errstr, $errfile, $errline, $errcontext = null ) { // If ignoring E_USER_WARNING | E_USER_NOTICE, default. if ( ! ( error_reporting() & $errno ) ) { return false; } // If not in "wp-admin/includes/update.php", default. $update_php = 'wp-admin/includes/update.php'; if ( 0 !== substr_compare( $errfile, $update_php, -strlen( $update_php ) ) ) { return false; } // Else assume it's in `get_core_checksums()` and just ignore it. return true; } } <?php namespace WP_CLI\Core; /** * A Core Upgrader class that leaves packages intact by default. * * @package wp-cli */ class NonDestructiveCoreUpgrader extends CoreUpgrader { // phpcs:ignore Generic.CodeAnalysis.UselessOverridingMethod.Found -- Provide default value. public function unpack_package( $package, $delete_package = false ) { return parent::unpack_package( $package, $delete_package ); } } <?php /** * List all contributors to this release. * * Usage: wp --require=utils/contrib-list.php contrib-list * * If you run into GitHub API rate limit issues, set a GITHUB_TOKEN * environment variable. */ use WP_CLI\Utils; class Contrib_List_Command { /** * List all contributors to this release. * * Run within the main WP-CLI project repository. * * ## OPTIONS * * [--format=<format>] * : Render output in a specific format. * --- * default: markdown * options: * - markdown * - html * --- * * @when before_wp_load */ public function __invoke( $_, $assoc_args ) { $contributors = array(); $contributor_count = 0; $pull_request_count = 0; // Get the contributors to the current open large project milestones foreach ( array( 'wp-cli/wp-cli', 'wp-cli/handbook', 'wp-cli/wp-cli.github.com' ) as $repo ) { $milestones = self::get_project_milestones( $repo ); // Cheap way to get the latest milestone $milestone = array_shift( $milestones ); WP_CLI::log( 'Current open ' . $repo . ' milestone: ' . $milestone->title ); $pull_requests = self::get_project_milestone_pull_requests( $repo, $milestone->number ); $repo_contributors = self::parse_contributors_from_pull_requests( $pull_requests ); WP_CLI::log( ' - Contributors: ' . count( $repo_contributors ) ); WP_CLI::log( ' - Pull requests: ' . count( $pull_requests ) ); $pull_request_count += count( $pull_requests ); $contributors = array_merge( $contributors, $repo_contributors ); } // Identify all command dependencies and their contributors $milestones = self::get_project_milestones( 'wp-cli/wp-cli', array( 'state' => 'closed' ) ); // Cheap way to get the latest closed milestone $milestone = array_shift( $milestones ); $composer_lock_url = sprintf( 'https://raw.githubusercontent.com/wp-cli/wp-cli/v%s/composer.lock', $milestone->title ); WP_CLI::log( 'Fetching ' . $composer_lock_url ); $response = Utils\http_request( 'GET', $composer_lock_url ); if ( 200 !== $response->status_code ) { WP_CLI::error( sprintf( 'Could not fetch composer.json (HTTP code %d)', $response->status_code ) ); } $composer_json = json_decode( $response->body, true ); foreach ( $composer_json['packages'] as $package ) { $package_name = $package['name']; $version_constraint = str_replace( 'v', '', $package['version'] ); if ( ! preg_match( '#^wp-cli/.+-command$#', $package_name ) ) { continue; } // Closed milestones denote a tagged release $milestones = self::get_project_milestones( $package_name, array( 'state' => 'closed' ) ); $milestone_ids = array(); $milestone_titles = array(); foreach ( $milestones as $milestone ) { if ( ! version_compare( $milestone->title, $version_constraint, '>' ) ) { continue; } $milestone_ids[] = $milestone->number; $milestone_titles[] = $milestone->title; } // No shipped releases for this milestone. if ( empty( $milestone_ids ) ) { continue; } WP_CLI::log( 'Closed ' . $package_name . ' milestone(s): ' . implode( ', ', $milestone_titles ) ); foreach ( $milestone_ids as $milestone_id ) { $pull_requests = self::get_project_milestone_pull_requests( $package_name, $milestone_id ); $repo_contributors = self::parse_contributors_from_pull_requests( $pull_requests ); WP_CLI::log( ' - Contributors: ' . count( $repo_contributors ) ); WP_CLI::log( ' - Pull requests: ' . count( $pull_requests ) ); $pull_request_count += count( $pull_requests ); $contributors = array_merge( $contributors, $repo_contributors ); } } WP_CLI::log( 'Total contributors: ' . count( $contributors ) ); WP_CLI::log( 'Total pull requests: ' . $pull_request_count ); // Sort and render the contributor list asort( $contributors, SORT_NATURAL | SORT_FLAG_CASE ); if ( in_array( $assoc_args['format'], array( 'markdown', 'html' ), true ) ) { $contrib_list = ''; foreach ( $contributors as $url => $login ) { if ( 'markdown' === $assoc_args['format'] ) { $contrib_list .= '[' . $login . '](' . $url . '), '; } elseif ( 'html' === $assoc_args['format'] ) { $contrib_list .= '<a href="' . $url . '">' . $login . '</a>, '; } } $contrib_list = rtrim( $contrib_list, ', ' ); WP_CLI::log( $contrib_list ); } } /** * Get the milestones for a given project * * @param string $project * @return array */ private static function get_project_milestones( $project, $args = array() ) { $request_url = sprintf( 'https://api.github.com/repos/%s/milestones', $project ); list( $body, $headers ) = self::make_github_api_request( $request_url, $args ); return $body; } /** * Get the pull requests assigned to a milestone of a given project * * @param string $project * @param integer $milestone_id * @return array */ private static function get_project_milestone_pull_requests( $project, $milestone_id ) { $request_url = sprintf( 'https://api.github.com/repos/%s/issues', $project ); $args = array( 'milestone' => $milestone_id, 'state' => 'all', ); $pull_requests = array(); do { list( $body, $headers ) = self::make_github_api_request( $request_url, $args ); foreach ( $body as $issue ) { if ( ! empty( $issue->pull_request ) ) { $pull_requests[] = $issue; } } $args = array(); $request_url = false; // Set $request_url to 'rel="next" if present' if ( ! empty( $headers['Link'] ) ) { $bits = trim( explode( ',', $headers['Link'] ) ); foreach ( $bits as $bit ) { if ( false !== stripos( $bit, 'rel="next"' ) ) { $hrefandrel = explode( '; ', $bit ); $request_url = trim( $hrefandrel[0], '<>' ); break; } } } } while ( $request_url ); return $pull_requests; } /** * Parse the contributors from pull request objects * * @param array $pull_requests * @return array */ private static function parse_contributors_from_pull_requests( $pull_requests ) { $contributors = array(); foreach ( $pull_requests as $pull_request ) { if ( ! empty( $pull_request->user ) ) { $contributors[ $pull_request->user->html_url ] = $pull_request->user->login; } } return $contributors; } /** * Make a request to the GitHub API * * @param string $url * @param string $args * @return array */ private static function make_github_api_request( $url, $args = array() ) { $headers = array( 'Accept' => 'application/vnd.github.v3+json', 'User-Agent' => 'WP-CLI', ); $token = getenv( 'GITHUB_TOKEN' ); if ( false !== $token ) { $headers['Authorization'] = 'token ' . $token; } $response = Utils\http_request( 'GET', $url, $args, $headers ); if ( 200 !== $response->status_code ) { WP_CLI::error( sprintf( 'GitHub API returned: %s (HTTP code %d)', $response->body, $response->status_code ) ); } return array( json_decode( $response->body ), $response->headers ); } } WP_CLI::add_command( 'contrib-list', 'Contrib_List_Command' ); #!/usr/bin/env sh # Special case for *AMP installers, since they normally don't set themselves # as the default cli php out of the box. for amp_php in $(cat $(dirname $0)/amp-paths.txt); do if [ -x $amp_php ]; then echo $amp_php exit fi done which php || which php-cli if [ $? -eq 0 ]; then exit fi echo "no PHP binary found" >&2 exit 1 <?php $file = $argv[1]; if ( ! file_exists( $file ) ) { echo 'File does not exist.'; exit( 1 ); } $contents = file_get_contents( $file ); $composer = json_decode( $contents ); if ( empty( $composer ) || ! is_object( $composer ) ) { echo 'Invalid composer.json for package.'; exit( 1 ); } if ( empty( $composer->autoload->files ) ) { echo 'composer.json must specify valid "autoload" => "files"'; exit( 1 ); } echo implode( PHP_EOL, $composer->autoload->files ); exit( 0 ); <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_super_admin_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_super_admin_autoloader ) ) { require_once $wpcli_super_admin_autoloader; } WP_CLI::add_command( 'super-admin', 'Super_Admin_Command', array( 'before_invoke' => function () { if ( ! is_multisite() ) { WP_CLI::error( 'This is not a multisite installation.' ); } }, ) ); <?php use WP_CLI\Fetchers\User as UserFetcher; /** * Lists, adds, or removes super admin users on a multisite installation. * * ## EXAMPLES * * # List user with super-admin capabilities * $ wp super-admin list * supervisor * administrator * * # Grant super-admin privileges to the user. * $ wp super-admin add superadmin2 * Success: Granted super-admin capabilities. * * # Revoke super-admin privileges to the user. * $ wp super-admin remove superadmin2 * Success: Revoked super-admin capabilities. * * @package wp-cli */ class Super_Admin_Command extends WP_CLI_Command { private $fields = array( 'user_login', ); public function __construct() { $this->fetcher = new UserFetcher(); } /** * Lists users with super admin capabilities. * * ## OPTIONS * * [--format=<format>] * : Render output in a particular format. * --- * default: list * options: * - list * - table * - csv * - json * - count * - yaml * --- * * ## EXAMPLES * * # List user with super-admin capabilities * $ wp super-admin list * supervisor * administrator * * @subcommand list */ public function list_subcommand( $_, $assoc_args ) { $super_admins = self::get_admins(); if ( 'list' === $assoc_args['format'] ) { foreach ( $super_admins as $user_login ) { WP_CLI::line( $user_login ); } } else { $output_users = array(); foreach ( $super_admins as $user_login ) { $output_user = new stdClass(); $output_user->user_login = $user_login; $output_users[] = $output_user; } $formatter = new \WP_CLI\Formatter( $assoc_args, $this->fields ); $formatter->display_items( $output_users ); } } /** * Grants super admin privileges to one or more users. * * ## OPTIONS * * <user>... * : One or more user IDs, user emails, or user logins. * * ## EXAMPLES * * $ wp super-admin add superadmin2 * Success: Granted super-admin capabilities. */ public function add( $args, $_ ) { $successes = 0; $errors = 0; $users = $this->fetcher->get_many( $args ); if ( count( $users ) !== count( $args ) ) { $errors = count( $args ) - count( $users ); } $user_logins = wp_list_pluck( $users, 'user_login' ); $super_admins = self::get_admins(); $num_super_admins = count( $super_admins ); foreach ( $user_logins as $user_login ) { if ( in_array( $user_login, $super_admins, true ) ) { WP_CLI::warning( "User '{$user_login}' already has super-admin capabilities." ); continue; } $super_admins[] = $user_login; $successes++; } if ( count( $super_admins ) === $num_super_admins ) { if ( $errors ) { $user_count = count( $args ); WP_CLI::error( "Couldn't grant super-admin capabilities to {$errors} of {$user_count} users." ); } else { WP_CLI::success( 'Super admins remain unchanged.' ); } } else { if ( update_site_option( 'site_admins', $super_admins ) ) { if ( $errors ) { $user_count = count( $args ); WP_CLI::error( "Only granted super-admin capabilities to {$successes} of {$user_count} users." ); } else { $message = $successes > 1 ? 'users' : 'user'; WP_CLI::success( "Granted super-admin capabilities to {$successes} {$message}." ); } } else { WP_CLI::error( 'Site options update failed.' ); } } } /** * Removes super admin privileges from one or more users. * * ## OPTIONS * * <user>... * : One or more user IDs, user emails, or user logins. * * ## EXAMPLES * * $ wp super-admin remove superadmin2 * Success: Revoked super-admin capabilities. */ public function remove( $args, $_ ) { $super_admins = self::get_admins(); if ( ! $super_admins ) { WP_CLI::error( 'No super admins to revoke super-admin privileges from.' ); } $users = $this->fetcher->get_many( $args ); $user_logins = $users ? array_values( array_unique( wp_list_pluck( $users, 'user_login' ) ) ) : array(); $user_logins_count = count( $user_logins ); if ( $user_logins_count < count( $args ) ) { $flipped_user_logins = array_flip( $user_logins ); // Fetcher has already warned so don't bother here, but continue with any args that are possible login names to cater for invalid users in the site options meta. $user_logins = array_merge( $user_logins, array_unique( array_filter( $args, function ( $v ) use ( $flipped_user_logins ) { // Exclude numeric and email-like logins (login names can be email-like but ignore this given the circumstances). return ! isset( $flipped_user_logins[ $v ] ) && ! is_numeric( $v ) && ! is_email( $v ); } ) ) ); $user_logins_count = count( $user_logins ); } if ( ! $user_logins ) { WP_CLI::error( 'No valid user logins given to revoke super-admin privileges from.' ); } $update_super_admins = array_diff( $super_admins, $user_logins ); if ( $update_super_admins === $super_admins ) { WP_CLI::error( $user_logins_count > 1 ? 'None of the given users is a super admin.' : 'The given user is not a super admin.' ); } update_site_option( 'site_admins', $update_super_admins ); $successes = count( $super_admins ) - count( $update_super_admins ); if ( $successes === $user_logins_count ) { $message = $user_logins_count > 1 ? 'users' : 'user'; $msg = "Revoked super-admin capabilities from {$user_logins_count} {$message}."; } else { $msg = "Revoked super-admin capabilities from {$successes} of {$user_logins_count} users."; } if ( ! $update_super_admins ) { $msg .= ' There are no remaining super admins.'; } WP_CLI::success( $msg ); } private static function get_admins() { // We don't use get_super_admins() because we don't want to mess with the global return (array) get_site_option( 'site_admins', array( 'admin' ) ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_package_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_package_autoloader ) && ! class_exists( 'Package_Command' ) ) { require_once $wpcli_package_autoloader; } WP_CLI::add_command( 'package', 'Package_Command' ); <?php /* * WP_CLI: Copied and adapted from vendor/composer/composer/src/Composer/Json/JsonManipulator.php. Changes marked `WP_CLI`. * * This file is part of Composer. * * (c) Nils Adermann <naderman@naderman.de> * Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace WP_CLI; // WP_CLI use Composer\Json\JsonFile; // WP_CLI use Composer\Repository\PlatformRepository; /** * @author Jordi Boggiano <j.boggiano@seld.be> */ class JsonManipulator { private static $DEFINES = '(?(DEFINE) (?<number> -? (?= [1-9]|0(?!\d) ) \d+ (\.\d+)? ([eE] [+-]? \d+)? ) (?<boolean> true | false | null ) (?<string> " ([^"\\\\]* | \\\\ ["\\\\bfnrt\/] | \\\\ u [0-9a-f]{4} )* " ) (?<array> \[ (?: (?&json) \s* (?: , (?&json) \s* )* )? \s* \] ) (?<pair> \s* (?&string) \s* : (?&json) \s* ) (?<object> \{ (?: (?&pair) (?: , (?&pair) )* )? \s* \} ) (?<json> \s* (?: (?&number) | (?&boolean) | (?&string) | (?&array) | (?&object) ) ) )'; private $contents; private $newline; private $indent; public function __construct($contents) { $contents = trim($contents); if ($contents === '') { $contents = '{}'; } if (!$this->pregMatch('#^\{(.*)\}$#s', $contents)) { throw new \InvalidArgumentException('The json file must be an object ({})'); } $this->newline = false !== strpos($contents, "\r\n") ? "\r\n" : "\n"; $this->contents = $contents === '{}' ? '{' . $this->newline . '}' : $contents; $this->detectIndenting(); } public function getContents() { return $this->contents . $this->newline; } public function addLink($type, $package, $constraint, $sortPackages = false, $caseInsensitive = false) // WP_CLI: caseInsensitive. { $decoded = JsonFile::parseJson($this->contents); // no link of that type yet if (!isset($decoded[$type])) { return $this->addMainKey($type, array($package => $constraint)); } $regex = '{'.self::$DEFINES.'^(?P<start>\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P<property>'.preg_quote(JsonFile::encode($type)).'\s*:\s*)(?P<value>(?&json))(?P<end>.*)}sx'; if (!$this->pregMatch($regex, $this->contents, $matches)) { return false; } // WP_CLI: begin caseInsensitive. if ($caseInsensitive) { // Just zap any existing packages first in a case insensitive manner. $this->removeSubNode($type, $package, $caseInsensitive); return $this->addLink($type, $package, $constraint, $sortPackages); } // WP_CLI: end caseInsensitive. $links = $matches['value']; // try to find existing link $packageRegex = str_replace('/', '\\\\?/', preg_quote($package)); $regex = '{'.self::$DEFINES.'"(?P<package>'.$packageRegex.')"(\s*:\s*)(?&string)}ix'; if ($this->pregMatch($regex, $links, $packageMatches)) { // update existing link $existingPackage = $packageMatches['package']; $packageRegex = str_replace('/', '\\\\?/', preg_quote($existingPackage)); $links = preg_replace_callback('{'.self::$DEFINES.'"'.$packageRegex.'"(?P<separator>\s*:\s*)(?&string)}ix', function ($m) use ($existingPackage, $constraint) { return JsonFile::encode(str_replace('\\/', '/', $existingPackage)) . $m['separator'] . '"' . $constraint . '"'; }, $links); } else { if ($this->pregMatch('#^\s*\{\s*\S+.*?(\s*\}\s*)$#s', $links, $match)) { // link missing but non empty links $links = preg_replace( '{'.preg_quote($match[1]).'$}', // addcslashes is used to double up backslashes/$ since preg_replace resolves them as back references otherwise, see #1588 addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $match[1], '\\$'), $links ); } else { // links empty $links = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($package).': '.JsonFile::encode($constraint) . $this->newline . $this->indent . '}'; } } if (true === $sortPackages) { $requirements = json_decode($links, true); $this->sortPackages($requirements); $links = $this->format($requirements); } $this->contents = $matches['start'] . $matches['property'] . $links . $matches['end']; return true; } /** * Sorts packages by importance (platform packages first, then PHP dependencies) and alphabetically. * * @link https://getcomposer.org/doc/02-libraries.md#platform-packages * * @param array $packages */ private function sortPackages(array &$packages = array()) { $prefix = function ($requirement) { if (preg_match(PlatformRepository::PLATFORM_PACKAGE_REGEX, $requirement)) { return preg_replace( array( '/^php/', '/^hhvm/', '/^ext/', '/^lib/', '/^\D/', ), array( '0-$0', '1-$0', '2-$0', '3-$0', '4-$0', ), $requirement ); } return '5-'.$requirement; }; uksort($packages, function ($a, $b) use ($prefix) { return strnatcmp($prefix($a), $prefix($b)); }); } public function addRepository($name, $config) { return $this->addSubNode('repositories', $name, $config); } public function removeRepository($name) { return $this->removeSubNode('repositories', $name); } public function addConfigSetting($name, $value) { return $this->addSubNode('config', $name, $value); } public function removeConfigSetting($name) { return $this->removeSubNode('config', $name); } public function addProperty($name, $value) { if (substr($name, 0, 6) === 'extra.') { return $this->addSubNode('extra', substr($name, 6), $value); } return $this->addMainKey($name, $value); } public function removeProperty($name) { if (substr($name, 0, 6) === 'extra.') { return $this->removeSubNode('extra', substr($name, 6)); } return $this->removeMainKey($name); } public function addSubNode($mainNode, $name, $value, $caseInsensitive = false) // WP_CLI: caseInsensitive. { $decoded = JsonFile::parseJson($this->contents); $subName = null; if (in_array($mainNode, array('config', 'extra')) && false !== strpos($name, '.')) { list($name, $subName) = explode('.', $name, 2); } // no main node yet if (!isset($decoded[$mainNode])) { if ($subName !== null) { $this->addMainKey($mainNode, array($name => array($subName => $value))); } else { $this->addMainKey($mainNode, array($name => $value)); } return true; } // main node content not match-able $nodeRegex = '{'.self::$DEFINES.'^(?P<start> \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P<content>(?&object))(?P<end>.*)}sx'; try { if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { return false; } } catch (\RuntimeException $e) { if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { return false; } throw $e; } // WP_CLI: begin caseInsensitive. if ($caseInsensitive) { // Just zap any existing names first in a case insensitive manner. $this->removeSubNode($mainNode, $name, $caseInsensitive); return $this->addSubNode($mainNode, $name, $value); } // WP_CLI: end caseInsensitive. $children = $match['content']; // invalid match due to un-regexable content, abort if (!@json_decode($children)) { return false; } $that = $this; // child exists $childRegex = '{'.self::$DEFINES.'(?P<start>"'.preg_quote($name).'"\s*:\s*)(?P<content>(?&json))(?P<end>,?)}x'; if ($this->pregMatch($childRegex, $children, $matches)) { $children = preg_replace_callback($childRegex, function ($matches) use ($name, $subName, $value, $that) { if ($subName !== null) { $curVal = json_decode($matches['content'], true); if (!is_array($curVal)) { $curVal = array(); } $curVal[$subName] = $value; $value = $curVal; } return $matches['start'] . $that->format($value, 1) . $matches['end']; }, $children); } else { $this->pregMatch('#^{ \s*? (?P<content>\S+.*?)? (?P<trailingspace>\s*) }$#sx', $children, $match); $whitespace = ''; if (!empty($match['trailingspace'])) { $whitespace = $match['trailingspace']; } if (!empty($match['content'])) { if ($subName !== null) { $value = array($subName => $value); } // child missing but non empty children $children = preg_replace( '#'.$whitespace.'}$#', addcslashes(',' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}', '\\$'), $children ); } else { if ($subName !== null) { $value = array($subName => $value); } // children present but empty $children = '{' . $this->newline . $this->indent . $this->indent . JsonFile::encode($name).': '.$this->format($value, 1) . $whitespace . '}'; } } $this->contents = preg_replace_callback($nodeRegex, function ($m) use ($children) { return $m['start'] . $children . $m['end']; }, $this->contents); return true; } public function removeSubNode($mainNode, $name, $caseInsensitive = false) // WP_CLI: caseInsensitive. { $decoded = JsonFile::parseJson($this->contents); // no node or empty node if (empty($decoded[$mainNode])) { return true; } // WP_CLI: begin caseInsensitive. if ( $caseInsensitive ) { // This is more or less a copy of the code at the start of `addLink()` above. $regex = '{'.self::$DEFINES.'^(?P<start>\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P<property>'.preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P<value>(?&json))(?P<end>.*)}sx'; if (!$this->pregMatch($regex, $this->contents, $matches)) { return true; } $value = $matches['value']; // Renamed from `$links` in `addLink()` case above. // try to find existing values $nameRegex = str_replace('/', '\\\\?/', preg_quote($name)); // Renamed from `$packageRegex` in `addLink()` case above. $regex = '{'.self::$DEFINES.'"(?P<name>'.$nameRegex.')"(\s*:\s*)(?&json)}ix'; // Need `(?&json)` PCRE subroutine here, as opposed to `(?&string)` in `addLink()` case. if (preg_match_all($regex, $value, $nameMatches)) { // Just zap them all individually in a case sensitive manner. foreach ( $nameMatches['name'] as $nameMatch ) { $this->removeSubNode($mainNode, $nameMatch); } } return true; } // WP_CLI: end caseInsensitive. // no node content match-able $nodeRegex = '{'.self::$DEFINES.'^(?P<start> \s* \{ \s* (?: (?&string) \s* : (?&json) \s* , \s* )*?'. preg_quote(JsonFile::encode($mainNode)).'\s*:\s*)(?P<content>(?&object))(?P<end>.*)}sx'; try { if (!$this->pregMatch($nodeRegex, $this->contents, $match)) { return false; } } catch (\RuntimeException $e) { if ($e->getCode() === PREG_BACKTRACK_LIMIT_ERROR) { return false; } throw $e; } $children = $match['content']; // invalid match due to un-regexable content, abort if (!@json_decode($children, true)) { return false; } $subName = null; if (in_array($mainNode, array('config', 'extra')) && false !== strpos($name, '.')) { list($name, $subName) = explode('.', $name, 2); } // no node to remove if (!isset($decoded[$mainNode][$name]) || ($subName && !isset($decoded[$mainNode][$name][$subName]))) { return true; } // try and find a match for the subkey if ($this->pregMatch('{"'.preg_quote($name).'"\s*:}i', $children)) { // find best match for the value of "name" if (preg_match_all('{'.self::$DEFINES.'"'.preg_quote($name).'"\s*:\s*(?:(?&json))}x', $children, $matches)) { $bestMatch = ''; foreach ($matches[0] as $match) { if (strlen($bestMatch) < strlen($match)) { $bestMatch = $match; } } $childrenClean = preg_replace('{,\s*'.preg_quote($bestMatch).'}', '', $children, -1, $count); // WP_CLI: As the preg_match_all() above is case-sensitive, so should this be. if (1 !== $count) { $childrenClean = preg_replace('{'.preg_quote($bestMatch).'\s*,?\s*}', '', $childrenClean, -1, $count); // WP_CLI: ditto. if (1 !== $count) { return false; } } } } else { $childrenClean = $children; } // no child data left, $name was the only key in $this->pregMatch('#^{ \s*? (?P<content>\S+.*?)? (?P<trailingspace>\s*) }$#sx', $childrenClean, $match); if (empty($match['content'])) { $newline = $this->newline; $indent = $this->indent; $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($indent, $newline) { return $matches['start'] . '{' . $newline . $indent . '}' . $matches['end']; }, $this->contents); // we have a subname, so we restore the rest of $name if ($subName !== null) { $curVal = json_decode($children, true); unset($curVal[$name][$subName]); $this->addSubNode($mainNode, $name, $curVal[$name]); } return true; } $that = $this; $this->contents = preg_replace_callback($nodeRegex, function ($matches) use ($that, $name, $subName, $childrenClean) { if ($subName !== null) { $curVal = json_decode($matches['content'], true); unset($curVal[$name][$subName]); $childrenClean = $that->format($curVal, 0); } return $matches['start'] . $childrenClean . $matches['end']; }, $this->contents); return true; } public function addMainKey($key, $content) { $decoded = JsonFile::parseJson($this->contents); $content = $this->format($content); // key exists already $regex = '{'.self::$DEFINES.'^(?P<start>\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P<key>'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))(?P<end>.*)}sx'; if (isset($decoded[$key]) && $this->pregMatch($regex, $this->contents, $matches)) { // invalid match due to un-regexable content, abort if (!@json_decode('{'.$matches['key'].'}')) { return false; } $this->contents = $matches['start'] . JsonFile::encode($key).': '.$content . $matches['end']; return true; } // append at the end of the file and keep whitespace if ($this->pregMatch('#[^{\s](\s*)\}$#', $this->contents, $match)) { $this->contents = preg_replace( '#'.$match[1].'\}$#', addcslashes(',' . $this->newline . $this->indent . JsonFile::encode($key). ': '. $content . $this->newline . '}', '\\$'), $this->contents ); return true; } // append at the end of the file $this->contents = preg_replace( '#\}$#', addcslashes($this->indent . JsonFile::encode($key). ': '.$content . $this->newline . '}', '\\$'), $this->contents ); return true; } public function removeMainKey($key) { $decoded = JsonFile::parseJson($this->contents); if (!isset($decoded[$key])) { return true; } // key exists already $regex = '{'.self::$DEFINES.'^(?P<start>\s*\{\s*(?:(?&string)\s*:\s*(?&json)\s*,\s*)*?)'. '(?P<removal>'.preg_quote(JsonFile::encode($key)).'\s*:\s*(?&json))\s*,?\s*(?P<end>.*)}sx'; if ($this->pregMatch($regex, $this->contents, $matches)) { // invalid match due to un-regexable content, abort if (!@json_decode('{'.$matches['removal'].'}')) { return false; } // check that we are not leaving a dangling comma on the previous line if the last line was removed if (preg_match('#,\s*$#', $matches['start']) && preg_match('#^\}$#', $matches['end'])) { $matches['start'] = rtrim(preg_replace('#,(\s*)$#', '$1', $matches['start']), $this->indent); } $this->contents = $matches['start'] . $matches['end']; if (preg_match('#^\{\s*\}\s*$#', $this->contents)) { $this->contents = "{\n}"; } return true; } return false; } public function format($data, $depth = 0) { if (is_array($data)) { reset($data); if (is_numeric(key($data))) { foreach ($data as $key => $val) { $data[$key] = $this->format($val, $depth + 1); } return '['.implode(', ', $data).']'; } $out = '{' . $this->newline; $elems = array(); foreach ($data as $key => $val) { $elems[] = str_repeat($this->indent, $depth + 2) . JsonFile::encode($key). ': '.$this->format($val, $depth + 1); } return $out . implode(','.$this->newline, $elems) . $this->newline . str_repeat($this->indent, $depth + 1) . '}'; } return JsonFile::encode($data); } protected function detectIndenting() { if ($this->pregMatch('{^([ \t]+)"}m', $this->contents, $match)) { $this->indent = $match[1]; } else { $this->indent = ' '; } } protected function pregMatch($re, $str, &$matches = array()) { $count = preg_match($re, $str, $matches); if ($count === false) { switch (preg_last_error()) { case PREG_NO_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_NO_ERROR', PREG_NO_ERROR); case PREG_INTERNAL_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_INTERNAL_ERROR', PREG_INTERNAL_ERROR); case PREG_BACKTRACK_LIMIT_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BACKTRACK_LIMIT_ERROR', PREG_BACKTRACK_LIMIT_ERROR); case PREG_RECURSION_LIMIT_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_RECURSION_LIMIT_ERROR', PREG_RECURSION_LIMIT_ERROR); case PREG_BAD_UTF8_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_ERROR', PREG_BAD_UTF8_ERROR); case PREG_BAD_UTF8_OFFSET_ERROR: throw new \RuntimeException('Failed to execute regex: PREG_BAD_UTF8_OFFSET_ERROR', PREG_BAD_UTF8_OFFSET_ERROR); case 6: // PREG_JIT_STACKLIMIT_ERROR if (PHP_VERSION_ID > 70000) { throw new \RuntimeException('Failed to execute regex: PREG_JIT_STACKLIMIT_ERROR', 6); } // fallthrough default: throw new \RuntimeException('Failed to execute regex: Unknown error'); } } return $count; } } <?php use Composer\Composer; use Composer\Config; use Composer\Config\JsonConfigSource; use Composer\DependencyResolver\Pool; use Composer\DependencyResolver\Request; use Composer\EventDispatcher\Event; use Composer\Factory; use Composer\IO\NullIO; use Composer\Installer; use Composer\Json\JsonFile; use Composer\Package; use Composer\Package\BasePackage; use Composer\Package\PackageInterface; use Composer\Package\Version\VersionParser; use Composer\Package\Version\VersionSelector; use Composer\Repository; use Composer\Repository\CompositeRepository; use Composer\Repository\ComposerRepository; use Composer\Repository\RepositoryManager; use Composer\Util\Filesystem; use Composer\Util\HttpDownloader; use WP_CLI\ComposerIO; use WP_CLI\Extractor; use WP_CLI\Utils; use WP_CLI\JsonManipulator; use WP_CLI\PackageManagerEventSubscriber; /** * Lists, installs, and removes WP-CLI packages. * * WP-CLI packages are community-maintained projects built on WP-CLI. They can * contain WP-CLI commands, but they can also just extend WP-CLI in some way. * * Learn how to create your own command from the * [Commands Cookbook](https://make.wordpress.org/cli/handbook/commands-cookbook/) * * ## EXAMPLES * * # List installed packages * $ wp package list * +-----------------------+------------------------------------------+---------+------------+ * | name | description | authors | version | * +-----------------------+------------------------------------------+---------+------------+ * | wp-cli/server-command | Start a development server for WordPress | | dev-master | * +-----------------------+------------------------------------------+---------+------------+ * * # Install the latest development version of the package * $ wp package install wp-cli/server-command * Installing package wp-cli/server-command (dev-master) * Updating /home/person/.wp-cli/packages/composer.json to require the package... * Using Composer to install the package... * --- * Loading composer repositories with package information * Updating dependencies * Resolving dependencies through SAT * Dependency resolution completed in 0.005 seconds * Analyzed 732 packages to resolve dependencies * Analyzed 1034 rules to resolve dependencies * - Installing package * Writing lock file * Generating autoload files * --- * Success: Package installed. * * # Uninstall package * $ wp package uninstall wp-cli/server-command * Removing require statement from /home/person/.wp-cli/packages/composer.json * Deleting package directory /home/person/.wp-cli/packages/vendor/wp-cli/server-command * Regenerating Composer autoload. * Success: Uninstalled package. * * @package WP-CLI * * @when before_wp_load */ class Package_Command extends WP_CLI_Command { const PACKAGE_INDEX_URL = 'https://wp-cli.org/package-index/'; const SSL_CERTIFICATE = '/rmccue/requests/library/Requests/Transport/cacert.pem'; private $version_selector = false; /** * Default author data used while creating default WP-CLI packages composer.json. * * @var array */ private $author_data = [ 'name' => 'WP-CLI', 'email' => 'noreply@wpcli.org', ]; /** * Default repository data used while creating default WP-CLI packages composer.json. * @var array */ private $composer_type_package = [ 'type' => 'composer', 'url' => self::PACKAGE_INDEX_URL, ]; /** * Browses WP-CLI packages available for installation. * * Lists packages available for installation from the [Package Index](http://wp-cli.org/package-index/). * Although the package index will remain in place for backward compatibility reasons, it has been * deprecated and will not be updated further. Please refer to https://github.com/wp-cli/ideas/issues/51 * to read about its potential replacement. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each package: * * * name * * description * * authors * * version * * There are no optionally available fields. * * ## EXAMPLES * * $ wp package browse --format=yaml * --- * 10up/mu-migration: * name: 10up/mu-migration * description: A set of WP-CLI commands to support the migration of single WordPress instances to multisite * authors: Nícholas André * version: dev-master, dev-develop * aaemnnosttv/wp-cli-dotenv-command: * name: aaemnnosttv/wp-cli-dotenv-command * description: Dotenv commands for WP-CLI * authors: Evan Mattson * version: v0.1, v0.1-beta.1, v0.2, dev-master, dev-dev, dev-develop, dev-tests/behat * aaemnnosttv/wp-cli-http-command: * name: aaemnnosttv/wp-cli-http-command * description: WP-CLI command for using the WordPress HTTP API * authors: Evan Mattson * version: dev-master */ public function browse( $_, $assoc_args ) { $this->set_composer_auth_env_var(); if ( empty( $assoc_args['format'] ) || 'table' === $assoc_args['format'] ) { WP_CLI::line( WP_CLI::colorize( '%CAlthough the package index will remain in place for backward compatibility reasons, it has been deprecated and will not be updated further. Please refer to https://github.com/wp-cli/ideas/issues/51 to read about its potential replacement.%n' ) ); } $this->show_packages( 'browse', $this->get_community_packages(), $assoc_args ); } /** * Installs a WP-CLI package. * * Packages are required to be a valid Composer package, and can be * specified as: * * * Package name from WP-CLI's package index. * * Git URL accessible by the current shell user. * * Path to a directory on the local machine. * * Local or remote .zip file. * * Packages are installed to `~/.wp-cli/packages/` by default. Use the * `WP_CLI_PACKAGES_DIR` environment variable to provide a custom path. * * When installing a local directory, WP-CLI simply registers a * reference to the directory. If you move or delete the directory, WP-CLI's * reference breaks. * * When installing a .zip file, WP-CLI extracts the package to * `~/.wp-cli/packages/local/<package-name>`. * * ## OPTIONS * * <name|git|path|zip> * : Name, git URL, directory path, or .zip file for the package to install. * Names can optionally include a version constraint * (e.g. wp-cli/server-command:@stable). * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Install a package hosted at a git URL. * $ wp package install runcommand/hook * * # Install the latest stable version. * $ wp package install wp-cli/server-command:@stable * * # Install a package hosted at a GitLab.com URL. * $ wp package install https://gitlab.com/foo/wp-cli-bar-command.git * * # Install a package in a .zip file. * $ wp package install google-sitemap-generator-cli.zip */ public function install( $args, $assoc_args ) { list( $package_name ) = $args; $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $this->set_composer_auth_env_var(); $git_package = false; $dir_package = false; $version = 'dev-master'; if ( $this->is_git_repository( $package_name ) ) { $git_package = $package_name; preg_match( '#([^:\/]+\/[^\/]+)\.git#', $package_name, $matches ); if ( ! empty( $matches[1] ) ) { $package_name = $this->check_git_package_name( $matches[1], $package_name, '', $insecure ); } else { WP_CLI::error( "Couldn't parse package name from expected path '<name>/<package>'." ); } } elseif ( ( false !== strpos( $package_name, '://' ) && false !== stripos( $package_name, '.zip' ) ) || ( pathinfo( $package_name, PATHINFO_EXTENSION ) === 'zip' && is_file( $package_name ) ) ) { // Download the remote ZIP file to a temp directory $temp = false; if ( false !== strpos( $package_name, '://' ) ) { $temp = Utils\get_temp_dir() . uniqid( 'wp-cli-package_', true /*more_entropy*/ ) . '.zip'; $options = [ 'timeout' => 600, 'filename' => $temp, 'insecure' => $insecure, ]; $response = Utils\http_request( 'GET', $package_name, null, [], $options ); if ( 20 !== (int) substr( $response->status_code, 0, 2 ) ) { @unlink( $temp ); // @codingStandardsIgnoreLine WP_CLI::error( sprintf( "Couldn't download package from '%s' (HTTP code %d).", $package_name, $response->status_code ) ); } $package_name = $temp; } $dir_package = Utils\get_temp_dir() . uniqid( 'wp-cli-package_', true /*more_entropy*/ ); try { // Extract the package to get the package name Extractor::extract( $package_name, $dir_package ); if ( $temp ) { unlink( $temp ); $temp = false; } list( $package_name, $version ) = self::get_package_name_and_version_from_dir_package( $dir_package ); // Move to a location based on the package name $local_dir = rtrim( WP_CLI::get_runner()->get_packages_dir_path(), '/' ) . '/local/'; $actual_dir_package = $local_dir . str_replace( '/', '-', $package_name ); Extractor::copy_overwrite_files( $dir_package, $actual_dir_package ); Extractor::rmdir( $dir_package ); // Behold, the extracted package $dir_package = $actual_dir_package; } catch ( Exception $e ) { if ( $temp ) { unlink( $temp ); } if ( file_exists( $dir_package ) ) { try { Extractor::rmdir( $dir_package ); } catch ( Exception $rmdir_e ) { WP_CLI::warning( $rmdir_e->getMessage() ); } } WP_CLI::error( $e->getMessage() ); } } elseif ( is_dir( $package_name ) && file_exists( $package_name . '/composer.json' ) ) { $dir_package = $package_name; if ( ! Utils\is_path_absolute( $dir_package ) ) { $dir_package = getcwd() . DIRECTORY_SEPARATOR . $dir_package; } list( $package_name, $version ) = self::get_package_name_and_version_from_dir_package( $dir_package ); } else { if ( false !== strpos( $package_name, ':' ) ) { list( $package_name, $version ) = explode( ':', $package_name ); } $package = $this->get_package_by_shortened_identifier( $package_name ); if ( ! $package ) { WP_CLI::error( sprintf( "Invalid package: shortened identifier '%s' not found.", $package_name ) ); } if ( is_string( $package ) ) { if ( $this->is_git_repository( $package ) ) { $git_package = $package; if ( '@stable' === $version ) { $tag = $this->get_github_latest_release_tag( $package_name, $insecure ); $version = $this->guess_version_constraint_from_tag( $tag ); } $package_name = $this->check_github_package_name( $package_name, $version, $insecure ); } } elseif ( $package_name !== $package->getPrettyName() ) { // BC support for specifying lowercase names for mixed-case package index packages - don't bother warning. $package_name = $package->getPrettyName(); } } if ( $this->is_composer_v2() ) { $package_name = function_exists( 'mb_strtolower' ) ? mb_strtolower( $package_name ) : strtolower( $package_name ); } WP_CLI::log( sprintf( 'Installing package %s (%s)', $package_name, $version ) ); // Read the WP-CLI packages composer.json and do some initial error checking. list( $json_path, $composer_backup, $composer_backup_decoded ) = $this->get_composer_json_path_backup_decoded(); // Revert on shutdown if `$revert` is true (set to false on success). $revert = true; $this->register_revert_shutdown_function( $json_path, $composer_backup, $revert ); // Add the 'require' to composer.json WP_CLI::log( sprintf( 'Updating %s to require the package...', $json_path ) ); $json_manipulator = new JsonManipulator( $composer_backup ); $json_manipulator->addMainKey( 'name', 'wp-cli/wp-cli' ); $json_manipulator->addMainKey( 'version', self::get_wp_cli_version_composer() ); $json_manipulator->addLink( 'require', $package_name, $version, false /*sortPackages*/, true /*caseInsensitive*/ ); $json_manipulator->addConfigSetting( 'secure-http', true ); $package_args = []; if ( $git_package ) { WP_CLI::log( sprintf( 'Registering %s as a VCS repository...', $git_package ) ); $package_args = [ 'type' => 'vcs', 'url' => $git_package, ]; $json_manipulator->addSubNode( 'repositories', $package_name, $package_args, true /*caseInsensitive*/ ); } elseif ( $dir_package ) { WP_CLI::log( sprintf( 'Registering %s as a path repository...', $dir_package ) ); $package_args = [ 'type' => 'path', 'url' => $dir_package, ]; $json_manipulator->addSubNode( 'repositories', $package_name, $package_args, true /*caseInsensitive*/ ); } // If the composer file does not contain the current package index repository, refresh the repository definition. if ( empty( $composer_backup_decoded['repositories']['wp-cli']['url'] ) || self::PACKAGE_INDEX_URL !== $composer_backup_decoded['repositories']['wp-cli']['url'] ) { WP_CLI::log( 'Updating package index repository url...' ); $package_args = $this->composer_type_package; $json_manipulator->addRepository( 'wp-cli', $package_args ); } file_put_contents( $json_path, $json_manipulator->getContents() ); $composer = $this->get_composer(); // Set up the EventSubscriber $event_subscriber = new PackageManagerEventSubscriber(); $composer->getEventDispatcher()->addSubscriber( $event_subscriber ); // Set up the installer $install = Installer::create( new ComposerIO(), $composer ); $install->setUpdate( true ); // Installer class will only override composer.lock with this flag $install->setPreferSource( true ); // Use VCS when VCS for easier contributions. // Try running the installer, but revert composer.json if failed WP_CLI::log( 'Using Composer to install the package...' ); WP_CLI::log( '---' ); $res = false; try { $res = $install->run(); } catch ( Exception $e ) { WP_CLI::warning( $e->getMessage() ); } // TODO: The --insecure flag should cause another Composer run with verify disabled. WP_CLI::log( '---' ); if ( 0 === $res ) { $revert = false; WP_CLI::success( 'Package installed.' ); } else { $res_msg = $res ? " (Composer return code {$res})" : ''; // $res may be null apparently. WP_CLI::debug( "composer.json content:\n" . file_get_contents( $json_path ), 'packages' ); WP_CLI::error( "Package installation failed{$res_msg}." ); } } /** * Lists installed WP-CLI packages. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each package: * * * name * * authors * * version * * update * * update_version * * These fields are optionally available: * * * description * * ## EXAMPLES * * $ wp package list * +-----------------------+------------------------------------------+---------+------------+ * | name | description | authors | version | * +-----------------------+------------------------------------------+---------+------------+ * | wp-cli/server-command | Start a development server for WordPress | | dev-master | * +-----------------------+------------------------------------------+---------+------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { $this->set_composer_auth_env_var(); $this->show_packages( 'list', $this->get_installed_packages(), $assoc_args ); } /** * Gets the path to an installed WP-CLI package, or the package directory. * * If you want to contribute to a package, this is a great way to jump to it. * * ## OPTIONS * * [<name>] * : Name of the package to get the directory for. * * ## EXAMPLES * * # Get package path * $ wp package path * /home/person/.wp-cli/packages/ * * # Change directory to package path * $ cd $(wp package path) && pwd * /home/vagrant/.wp-cli/packages */ public function path( $args ) { $packages_dir = WP_CLI::get_runner()->get_packages_dir_path(); if ( ! empty( $args ) ) { $packages_dir .= 'vendor/' . $args[0]; if ( ! is_dir( $packages_dir ) ) { WP_CLI::error( 'Invalid package name.' ); } } WP_CLI::line( $packages_dir ); } /** * Updates all installed WP-CLI packages to their latest version. * * ## EXAMPLES * * $ wp package update * Using Composer to update packages... * --- * Loading composer repositories with package information * Updating dependencies * Resolving dependencies through SAT * Dependency resolution completed in 0.074 seconds * Analyzed 1062 packages to resolve dependencies * Analyzed 22383 rules to resolve dependencies * Writing lock file * Generating autoload files * --- * Success: Packages updated. */ public function update() { $this->set_composer_auth_env_var(); $composer = $this->get_composer(); // Set up the EventSubscriber $event_subscriber = new PackageManagerEventSubscriber(); $composer->getEventDispatcher()->addSubscriber( $event_subscriber ); // Set up the installer $install = Installer::create( new ComposerIO(), $composer ); $install->setUpdate( true ); // Installer class will only override composer.lock with this flag $install->setPreferSource( true ); // Use VCS when VCS for easier contributions. WP_CLI::log( 'Using Composer to update packages...' ); WP_CLI::log( '---' ); $res = false; try { $res = $install->run(); } catch ( Exception $e ) { WP_CLI::warning( $e->getMessage() ); } WP_CLI::log( '---' ); // TODO: The --insecure (to be added here) flag should cause another Composer run with verify disabled. if ( 0 === $res ) { WP_CLI::success( 'Packages updated.' ); } else { $res_msg = $res ? " (Composer return code {$res})" : ''; // $res may be null apparently. WP_CLI::error( "Failed to update packages{$res_msg}." ); } } /** * Uninstalls a WP-CLI package. * * ## OPTIONS * * <name> * : Name of the package to uninstall. * * ## EXAMPLES * * $ wp package uninstall wp-cli/server-command * Removing require statement from /home/person/.wp-cli/packages/composer.json * Deleting package directory /home/person/.wp-cli/packages/vendor/wp-cli/server-command * Regenerating Composer autoload. * Success: Uninstalled package. */ public function uninstall( $args ) { list( $package_name ) = $args; $this->set_composer_auth_env_var(); $package = $this->get_installed_package_by_name( $package_name ); if ( false === $package ) { WP_CLI::error( 'Package not installed.' ); } $package_name = $package->getPrettyName(); // Make sure package name is what's in composer.json. // Read the WP-CLI packages composer.json and do some initial error checking. list( $json_path, $composer_backup, $composer_backup_decoded ) = $this->get_composer_json_path_backup_decoded(); // Revert on shutdown if `$revert` is true (set to false on success). $revert = true; $this->register_revert_shutdown_function( $json_path, $composer_backup, $revert ); // Remove the 'require' from composer.json. WP_CLI::log( sprintf( 'Removing require statement from %s', $json_path ) ); $manipulator = new JsonManipulator( $composer_backup ); $manipulator->removeSubNode( 'require', $package_name, true /*caseInsensitive*/ ); // Remove the 'repository' details from composer.json. WP_CLI::log( sprintf( 'Removing repository details from %s', $json_path ) ); $manipulator->removeSubNode( 'repositories', $package_name, true /*caseInsensitive*/ ); file_put_contents( $json_path, $manipulator->getContents() ); $composer = $this->get_composer(); // Set up the installer. $install = Installer::create( new NullIO(), $composer ); $install->setUpdate( true ); // Installer class will only override composer.lock with this flag $install->setPreferSource( true ); // Use VCS when VCS for easier contributions. WP_CLI::log( 'Removing package directories and regenerating autoloader...' ); $res = false; try { $res = $install->run(); } catch ( Exception $e ) { WP_CLI::warning( $e->getMessage() ); } if ( 0 === $res ) { $revert = false; WP_CLI::success( 'Uninstalled package.' ); } else { $res_msg = $res ? " (Composer return code {$res})" : ''; // $res may be null apparently. WP_CLI::error( "Package removal failed{$res_msg}." ); } } /** * Checks whether a package is a WP-CLI community package based * on membership in our package index. * * @param object $package A package object * @return bool */ private function is_community_package( $package ) { return $this->package_index()->hasPackage( $package ); } /** * Gets a Composer instance. */ private function get_composer() { $this->avoid_composer_ca_bundle(); try { $composer_path = $this->get_composer_json_path(); // Composer's auto-load generating code makes some assumptions about where // the 'vendor-dir' is, and where Composer is running from. // Best to just pretend we're installing a package from ~/.wp-cli or similar chdir( pathinfo( $composer_path, PATHINFO_DIRNAME ) ); // Prevent DateTime error/warning when no timezone set. // Note: The package is loaded before WordPress load, For environments that don't have set time in php.ini. // phpcs:ignore WordPress.DateTime.RestrictedFunctions.timezone_change_date_default_timezone_set,WordPress.PHP.NoSilencedErrors.Discouraged date_default_timezone_set( @date_default_timezone_get() ); $composer = Factory::create( new NullIO(), $composer_path ); } catch ( Exception $e ) { WP_CLI::error( sprintf( 'Failed to get composer instance: %s', $e->getMessage() ) ); } return $composer; } /** * Gets all of the community packages. * * @return array */ private function get_community_packages() { static $community_packages; if ( null === $community_packages ) { $this->avoid_composer_ca_bundle(); try { $community_packages = $this->package_index()->getPackages(); } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } } return $community_packages; } /** * Gets the package index instance * * We need to construct the instance manually, because there's no way to select * a particular instance using $composer->getRepositoryManager() * * @return ComposerRepository */ private function package_index() { static $package_index; if ( ! $package_index ) { $config_args = [ 'config' => [ 'secure-http' => true, 'home' => dirname( $this->get_composer_json_path() ), ], ]; $config = new Config(); $config->merge( $config_args ); $config->setConfigSource( new JsonConfigSource( $this->get_composer_json() ) ); $io = new NullIO(); try { if ( $this->is_composer_v2() ) { $http_downloader = new HttpDownloader( $io, $config ); $package_index = new ComposerRepository( [ 'url' => self::PACKAGE_INDEX_URL ], $io, $config, $http_downloader ); } else { $package_index = new ComposerRepository( [ 'url' => self::PACKAGE_INDEX_URL ], $io, $config ); } } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } } return $package_index; } /** * Displays a set of packages * * @param string $context * @param array * @param array */ private function show_packages( $context, $packages, $assoc_args ) { if ( 'list' === $context ) { $default_fields = [ 'name', 'authors', 'version', 'update', 'update_version', ]; } elseif ( 'browse' === $context ) { $default_fields = [ 'name', 'description', 'authors', 'version', ]; } $defaults = [ 'fields' => implode( ',', $default_fields ), 'format' => 'table', ]; $assoc_args = array_merge( $defaults, $assoc_args ); $composer = $this->get_composer(); $list = []; foreach ( $packages as $package ) { $name = $package->getPrettyName(); if ( isset( $list[ $name ] ) ) { $list[ $name ]['version'][] = $package->getPrettyVersion(); } else { $package_output = []; $package_output['name'] = $package->getPrettyName(); $package_output['description'] = $package->getDescription(); $package_output['authors'] = implode( ', ', array_column( (array) $package->getAuthors(), 'name' ) ); $package_output['version'] = [ $package->getPrettyVersion() ]; $update = 'none'; $update_version = ''; if ( 'list' === $context ) { try { $latest = $this->find_latest_package( $package, $composer, null ); if ( $latest && $latest->getFullPrettyVersion() !== $package->getFullPrettyVersion() ) { $update = 'available'; $update_version = $latest->getPrettyVersion(); } } catch ( Exception $e ) { WP_CLI::warning( $e->getMessage() ); $update = 'error'; $update_version = $update; } } $package_output['update'] = $update; $package_output['update_version'] = $update_version; $package_output['pretty_name'] = $package->getPrettyName(); // Deprecated but kept for BC with package-command 1.0.8. $list[ $package_output['name'] ] = $package_output; } } $list = array_map( function( $package ) { $package['version'] = implode( ', ', $package['version'] ); return $package; }, $list ); ksort( $list ); if ( 'ids' === $assoc_args['format'] ) { $list = array_keys( $list ); } Utils\format_items( $assoc_args['format'], $list, $assoc_args['fields'] ); } /** * Gets a package by its shortened identifier. * * A shortened identifier has the form `<vendor>/<package>`. * * This method first checks the deprecated package index, for BC reasons, * and then falls back to the corresponding GitHub URL. * * @param string $package_name Name of the package to get. * @param bool $insecure Whether to insecurely retry downloads that failed TLS handshake. */ private function get_package_by_shortened_identifier( $package_name, $insecure = false ) { // Check the package index first, so we don't break existing behavior. $lc_package_name = strtolower( $package_name ); // For BC check. foreach ( $this->get_community_packages() as $package ) { if ( $package_name === $package->getPrettyName() ) { return $package; } // For BC allow getting by lowercase name. if ( $lc_package_name === $package->getName() ) { return $package; } } $options = [ 'insecure' => $insecure ]; // Check if the package exists on Packagist. $url = "https://repo.packagist.org/p/{$package_name}.json"; $response = Utils\http_request( 'GET', $url, null, [], $options ); if ( 20 === (int) substr( $response->status_code, 0, 2 ) ) { return $package_name; } // Fall back to GitHub URL if we had no match yet. $url = "https://github.com/{$package_name}.git"; $github_token = getenv( 'GITHUB_TOKEN' ); // Use GITHUB_TOKEN if available to avoid authorization failures or rate-limiting. $headers = $github_token ? [ 'Authorization' => 'token ' . $github_token ] : []; $response = Utils\http_request( 'GET', $url, null /*data*/, $headers, $options ); if ( 20 === (int) substr( $response->status_code, 0, 2 ) ) { return $url; } return false; } /** * Gets the installed community packages. */ private function get_installed_packages() { $composer = $this->get_composer(); $repo = $composer->getRepositoryManager()->getLocalRepository(); $existing = json_decode( file_get_contents( $this->get_composer_json_path() ), true ); $installed_package_keys = ! empty( $existing['require'] ) ? array_keys( $existing['require'] ) : []; if ( empty( $installed_package_keys ) ) { return []; } // For use by legacy incorrect name check. $lc_installed_package_keys = array_map( 'strtolower', $installed_package_keys ); $installed_packages = []; foreach ( $repo->getCanonicalPackages() as $package ) { $idx = array_search( $package->getName(), $lc_installed_package_keys, true ); // Use pretty name as it's case sensitive and what's in composer.json (or at least should be). if ( in_array( $package->getPrettyName(), $installed_package_keys, true ) ) { $installed_packages[] = $package; } elseif ( false !== $idx ) { // Legacy incorrect name check. if ( ! $this->is_composer_v2() ) { WP_CLI::warning( sprintf( "Found package '%s' misnamed '%s' in '%s'.", $package->getPrettyName(), $installed_package_keys[ $idx ], $this->get_composer_json_path() ) ); } $installed_packages[] = $package; } } return $installed_packages; } /** * Gets an installed package by its name. */ private function get_installed_package_by_name( $package_name ) { foreach ( $this->get_installed_packages() as $package ) { if ( $package_name === $package->getPrettyName() ) { return $package; } // Also check non-pretty (lowercase) name in case of legacy incorrect name. if ( $package_name === $package->getName() ) { return $package; } } return false; } /** * Checks if the package name provided is already installed. */ private function is_package_installed( $package_name ) { if ( $this->get_installed_package_by_name( $package_name ) ) { return true; } else { return false; } } /** * Gets the name of the package from the composer.json in a directory path * * @param string $dir_package * @return array Two-element array containing package name and version. */ private static function get_package_name_and_version_from_dir_package( $dir_package ) { $composer_file = $dir_package . '/composer.json'; if ( ! file_exists( $composer_file ) ) { WP_CLI::error( sprintf( "Invalid package: composer.json file '%s' not found.", $composer_file ) ); } $composer_data = json_decode( file_get_contents( $composer_file ), true ); if ( null === $composer_data ) { WP_CLI::error( sprintf( "Invalid package: failed to parse composer.json file '%s' as json.", $composer_file ) ); } if ( empty( $composer_data['name'] ) ) { WP_CLI::error( sprintf( "Invalid package: no name in composer.json file '%s'.", $composer_file ) ); } $package_name = $composer_data['name']; $version = 'dev-master'; if ( ! empty( $composer_data['version'] ) ) { $version = $composer_data['version']; } return [ $package_name, $version ]; } /** * Gets the WP-CLI packages composer.json object. */ private function get_composer_json() { return new JsonFile( $this->get_composer_json_path() ); } /** * Gets the absolute path to the WP-CLI packages composer.json. */ private function get_composer_json_path() { static $composer_path; if ( null === $composer_path || getenv( 'WP_CLI_TEST_PACKAGE_GET_COMPOSER_JSON_PATH' ) ) { if ( getenv( 'WP_CLI_PACKAGES_DIR' ) ) { $composer_path = Utils\trailingslashit( getenv( 'WP_CLI_PACKAGES_DIR' ) ) . 'composer.json'; } else { $composer_path = Utils\trailingslashit( Utils\get_home_dir() ) . '.wp-cli/packages/composer.json'; } // `composer.json` and its directory might need to be created if ( ! file_exists( $composer_path ) ) { $composer_path = $this->create_default_composer_json( $composer_path ); } else { $composer_path = realpath( $composer_path ); if ( false === $composer_path ) { $error = error_get_last(); WP_CLI::error( sprintf( "Composer path '%s' for packages/composer.json not found: %s", $composer_path, $error['message'] ) ); } } } return $composer_path; } /** * Gets the WP-CLI version for composer.json */ private static function get_wp_cli_version_composer() { preg_match( '#^[0-9\.]+(-(alpha|beta)[^-]{0,})?#', WP_CLI_VERSION, $matches ); $version = isset( $matches[0] ) ? $matches[0] : ''; return $version; } /** * Creates a default WP-CLI packages composer.json. * * @param string $composer_path Where the composer.json should be created * @return string Returns the absolute path of the newly created default WP-CLI packages composer.json. */ private function create_default_composer_json( $composer_path ) { $composer_dir = pathinfo( $composer_path, PATHINFO_DIRNAME ); if ( ! is_dir( $composer_dir ) ) { if ( ! @mkdir( $composer_dir, 0777, true ) ) { // @codingStandardsIgnoreLine $error = error_get_last(); WP_CLI::error( sprintf( "Composer directory '%s' for packages couldn't be created: %s", $composer_dir, $error['message'] ) ); } } $composer_dir = realpath( $composer_dir ); if ( false === $composer_dir ) { $error = error_get_last(); WP_CLI::error( sprintf( "Composer directory '%s' for packages not found: %s", $composer_dir, $error['message'] ) ); } $composer_path = Utils\trailingslashit( $composer_dir ) . Utils\basename( $composer_path ); $json_file = new JsonFile( $composer_path ); $repositories = (object) [ 'wp-cli' => (object) $this->composer_type_package, ]; $options = [ 'name' => 'wp-cli/wp-cli', 'description' => 'Installed community packages used by WP-CLI', 'version' => self::get_wp_cli_version_composer(), 'authors' => [ (object) $this->author_data ], 'homepage' => self::PACKAGE_INDEX_URL, 'require' => new stdClass(), 'require-dev' => new stdClass(), 'minimum-stability' => 'dev', 'prefer-stable' => true, 'license' => 'MIT', 'repositories' => $repositories, ]; try { $json_file->write( $options ); } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } return $composer_path; } /** * Given a package, this finds the latest package matching it * * @param PackageInterface $package * @param Composer $composer * @param string $phpVersion * @param bool $minorOnly * * @return PackageInterface|null */ private function find_latest_package( PackageInterface $package, Composer $composer, $php_version, $minor_only = false ) { // Find the latest version allowed in this pool/repository set. $name = $package->getPrettyName(); $version_selector = $this->get_version_selector( $composer ); $stability = $composer->getPackage()->getMinimumStability(); $flags = $composer->getPackage()->getStabilityFlags(); if ( isset( $flags[ $name ] ) ) { $stability = array_search( $flags[ $name ], BasePackage::$stabilities, true ); } $best_stability = $stability; if ( $composer->getPackage()->getPreferStable() ) { $best_stability = $package->getStability(); } $target_version = null; if ( 0 === strpos( $package->getVersion(), 'dev-' ) ) { $target_version = $package->getVersion(); } if ( null === $target_version && $minor_only ) { $target_version = '^' . $package->getVersion(); } if ( $this->is_composer_v2() ) { return $version_selector->findBestCandidate( $name, $target_version, $best_stability ); } return $version_selector->findBestCandidate( $name, $target_version, $php_version, $best_stability ); } private function get_version_selector( Composer $composer ) { if ( ! $this->version_selector ) { if ( $this->is_composer_v2() ) { $repository_set = new Repository\RepositorySet( $composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags() ); $repository_set->addRepository( new CompositeRepository( $composer->getRepositoryManager()->getRepositories() ) ); $this->version_selector = new VersionSelector( $repository_set ); } else { $pool = new Pool( $composer->getPackage()->getMinimumStability(), $composer->getPackage()->getStabilityFlags() ); $pool->addRepository( new CompositeRepository( $composer->getRepositoryManager()->getRepositories() ) ); $this->version_selector = new VersionSelector( $pool ); } } return $this->version_selector; } /** * Checks whether a given package is a git repository. * * @param string $package Package name to check. * * @return bool Whether the package is a git repository. */ private function is_git_repository( $package ) { return '.git' === strtolower( substr( $package, -4, 4 ) ); } /** * Checks that `$package_name` matches the name in composer.json at Github.com, and return corrected value if not. * * @param string $package_name Package name to check. * @param string $version Optional. Package version. Default 'master'. * @param bool $insecure Optional. Whether to insecurely retry downloads that failed TLS handshake. */ private function check_github_package_name( $package_name, $version = '', $insecure = false ) { // Generate raw git URL of composer.json file. $raw_content_url = 'https://raw.githubusercontent.com/' . $package_name . '/' . $this->get_raw_git_version( $version ) . '/composer.json'; $github_token = getenv( 'GITHUB_TOKEN' ); // Use GITHUB_TOKEN if available to avoid authorization failures or rate-limiting. $headers = $github_token ? [ 'Authorization' => 'token ' . $github_token ] : []; $options = [ 'insecure' => $insecure ]; $response = Utils\http_request( 'GET', $raw_content_url, null /*data*/, $headers, $options ); if ( 20 !== (int) substr( $response->status_code, 0, 2 ) ) { // Could not get composer.json. Possibly private so warn and return best guess from input (always xxx/xxx). WP_CLI::warning( sprintf( "Couldn't download composer.json file from '%s' (HTTP code %d). Presuming package name is '%s'.", $raw_content_url, $response->status_code, $package_name ) ); return $package_name; } // Convert composer.json JSON to Array. $composer_content_as_array = json_decode( $response->body, true ); if ( null === $composer_content_as_array ) { WP_CLI::error( sprintf( "Failed to parse '%s' as json.", $raw_content_url ) ); } if ( empty( $composer_content_as_array['name'] ) ) { WP_CLI::error( sprintf( "Invalid package: no name in composer.json file '%s'.", $raw_content_url ) ); } // Package name in composer.json that is hosted on GitHub. $package_name_on_repo = $composer_content_as_array['name']; // If package name and repository name are not identical, then fix it. if ( $package_name !== $package_name_on_repo ) { WP_CLI::warning( sprintf( "Package name mismatch...Updating from git name '%s' to composer.json name '%s'.", $package_name, $package_name_on_repo ) ); $package_name = $package_name_on_repo; } return $package_name; } /** * Checks that `$package_name` matches the name in composer.json at the corresponding upstream repository, and return corrected value if not. * * @param string $package_name Package name to check. * @param string $urrl URL to fetch the package from. * @param string $version Optional. Package version. Default 'master'. * @param bool $insecure Optional. Whether to insecurely retry downloads that failed TLS handshake. */ private function check_git_package_name( $package_name, $url = '', $version = '', $insecure = false ) { if ( $url && ( strpos( $url, '://gitlab.com/' ) !== false ) || ( strpos( $url, 'git@gitlab.com:' ) !== false ) ) { return $this->check_gitlab_package_name( $package_name, $version, $insecure ); } return $this->check_github_package_name( $package_name, $version, $insecure ); } /** * Checks that `$package_name` matches the name in composer.json at GitLab.com, and return corrected value if not. * * @param string $package_name Package name to check. * @param string $version Optional. Package version. Default 'master'. * @param bool $insecure Optional. Whether to insecurely retry downloads that failed TLS handshake. */ private function check_gitlab_package_name( $package_name, $version = '', $insecure = false ) { // Generate raw git URL of composer.json file. $raw_content_public_url = 'https://gitlab.com/' . $package_name . '/-/raw/' . $this->get_raw_git_version( $version ) . '/composer.json'; $raw_content_private_url = 'https://gitlab.com/api/v4/projects/' . rawurlencode( $package_name ) . '/repository/files/composer.json/raw?ref=' . $this->get_raw_git_version( $version ); $options = [ 'insecure' => $insecure ]; $response = Utils\http_request( 'GET', $raw_content_public_url, null /*data*/, [], $options ); if ( $response->status_code < 200 || $response->status_code >= 300 ) { // Could not get composer.json. Possibly private so warn and return best guess from input (always xxx/xxx). WP_CLI::warning( sprintf( "Couldn't download composer.json file from '%s' (HTTP code %d). Presuming package name is '%s'.", $raw_content_public_url, $response->status_code, $package_name ) ); return $package_name; } if ( strpos( $response->headers['content-type'], 'text/html' ) === 0 ) { $gitlab_token = getenv( 'GITLAB_TOKEN' ); // Use GITLAB_TOKEN if available to avoid authorization failures or rate-limiting. $headers = $gitlab_token ? [ 'PRIVATE-TOKEN' => $gitlab_token ] : []; $response = Utils\http_request( 'GET', $raw_content_private_url, null /*data*/, $headers, $options ); if ( $response->status_code < 200 || $response->status_code >= 300 ) { // Could not get composer.json. Possibly private so warn and return best guess from input (always xxx/xxx). WP_CLI::warning( sprintf( "Couldn't download composer.json file from '%s' (HTTP code %d). Presuming package name is '%s'.", $raw_content_private_url, $response->status_code, $package_name ) ); return $package_name; } } // Convert composer.json JSON to Array. $composer_content_as_array = json_decode( $response->body, true ); if ( null === $composer_content_as_array ) { WP_CLI::error( sprintf( "Failed to parse '%s' as json.", $response->url ) ); } if ( empty( $composer_content_as_array['name'] ) ) { WP_CLI::error( sprintf( "Invalid package: no name in composer.json file '%s'.", $response->url ) ); } // Package name in composer.json that is hosted on Gitlab. $package_name_on_repo = $composer_content_as_array['name']; // If package name and repository name are not identical, then fix it. if ( $package_name !== $package_name_on_repo ) { WP_CLI::warning( sprintf( "Package name mismatch...Updating from git name '%s' to composer.json name '%s'.", $package_name, $package_name_on_repo ) ); $package_name = $package_name_on_repo; } return $package_name; } /** * Get the version to use for raw github request. Very basic. * * @string $version Package version. * @string Version to use for github request. */ private function get_raw_git_version( $version ) { if ( '' === $version ) { return 'master'; } // If Composer hash given then just use whatever's after it. $hash_pos = strpos( $version, '#' ); if ( false !== $hash_pos ) { return substr( $version, $hash_pos + 1 ); } // Strip any Composer 'dev-' prefix. if ( 0 === strncmp( $version, 'dev-', 4 ) ) { $version = substr( $version, 4 ); } // Ignore/strip any relative suffixes. return str_replace( [ '^', '~' ], '', $version ); } /** * Gets the release tag for the latest stable release of a GitHub repository. * * @param string $package_name Name of the repository. * * @return string Release tag. */ private function get_github_latest_release_tag( $package_name, $insecure ) { $url = "https://api.github.com/repos/{$package_name}/releases/latest"; $options = [ 'insecure' => $insecure ]; $response = Utils\http_request( 'GET', $url, null, [], $options ); if ( 20 !== (int) substr( $response->status_code, 0, 2 ) ) { WP_CLI::warning( 'Could not guess stable version from GitHub repository, falling back to master branch' ); return 'master'; } $package_data = json_decode( $response->body ); if ( JSON_ERROR_NONE !== json_last_error() ) { WP_CLI::warning( 'Could not guess stable version from GitHub repository, falling back to master branch' ); return 'master'; } $tag = $package_data->tag_name; WP_CLI::debug( "Extracted latest stable release tag: {$tag}", 'packages' ); return $tag; } /** * Guesses the version constraint from a release tag. * * @param string $tag Release tag to guess the version constraint from. * * @return string Version constraint. */ private function guess_version_constraint_from_tag( $tag ) { $matches = []; if ( 1 !== preg_match( '/(?:version|v)\s*((?:[0-9]+\.?)+)(?:-.*)/i', $tag, $matches ) ) { return $tag; } $constraint = "^{$matches[1]}"; WP_CLI::debug( "Guessing version constraint to use: {$constraint}", 'packages' ); return $constraint; } /** * Sets `COMPOSER_AUTH` environment variable (which Composer merges into the config setup in `Composer\Factory::createConfig()`) depending on available environment variables. * Avoids authorization failures when accessing various sites. */ private function set_composer_auth_env_var() { $changed = false; $composer_auth = getenv( 'COMPOSER_AUTH' ); if ( false !== $composer_auth ) { $composer_auth = json_decode( $composer_auth, true /*assoc*/ ); } if ( empty( $composer_auth ) || ! is_array( $composer_auth ) ) { $composer_auth = []; } $github_token = getenv( 'GITHUB_TOKEN' ); if ( ! isset( $composer_auth['github-oauth'] ) && is_string( $github_token ) ) { $composer_auth['github-oauth'] = [ 'github.com' => $github_token ]; $changed = true; } if ( $changed ) { putenv( 'COMPOSER_AUTH=' . json_encode( $composer_auth ) ); } } /** * Avoid using default Composer CA bundle if in phar as we don't include it. * See https://github.com/composer/ca-bundle/blob/1.1.0/src/CaBundle.php#L64 */ private function avoid_composer_ca_bundle() { if ( Utils\inside_phar() && ! getenv( 'SSL_CERT_FILE' ) && ! getenv( 'SSL_CERT_DIR' ) && ! ini_get( 'openssl.cafile' ) && ! ini_get( 'openssl.capath' ) ) { $certificate = Utils\extract_from_phar( WP_CLI_VENDOR_DIR . self::SSL_CERTIFICATE ); putenv( "SSL_CERT_FILE={$certificate}" ); } } /** * Reads the WP-CLI packages composer.json, checking validity and returning array containing its path, contents, and decoded contents. * * @return array Indexed array containing the path, the contents, and the decoded contents of the WP-CLI packages composer.json. */ private function get_composer_json_path_backup_decoded() { $composer_json_obj = $this->get_composer_json(); $json_path = $composer_json_obj->getPath(); $composer_backup = file_get_contents( $json_path ); if ( false === $composer_backup ) { $error = error_get_last(); WP_CLI::error( sprintf( "Failed to read '%s': %s", $json_path, $error['message'] ) ); } try { $composer_backup_decoded = $composer_json_obj->read(); } catch ( Exception $e ) { WP_CLI::error( sprintf( "Failed to parse '%s' as json: %s", $json_path, $e->getMessage() ) ); } return [ $json_path, $composer_backup, $composer_backup_decoded ]; } /** * Registers a PHP shutdown function to revert composer.json unless * referenced `$revert` flag is false. * * @param string $json_path Path to composer.json. * @param string $composer_backup Original contents of composer.json. * @param bool &$revert Flags whether to revert or not. */ private function register_revert_shutdown_function( $json_path, $composer_backup, &$revert ) { // Allocate all needed memory beforehand as much as possible. $revert_msg = "Reverted composer.json.\n"; $revert_fail_msg = "Failed to revert composer.json.\n"; $memory_msg = "WP-CLI ran out of memory. Please see https://bit.ly/wpclimem for further help.\n"; $memory_string = 'Allowed memory size of'; $error_array = [ 'type' => 42, 'message' => 'Some random dummy string to take up memory', 'file' => 'Another random string, which would be a filename this time', 'line' => 314, ]; register_shutdown_function( static function () use ( $json_path, $composer_backup, &$revert, $revert_msg, $revert_fail_msg, $memory_msg, $memory_string, $error_array ) { if ( $revert ) { if ( false !== file_put_contents( $json_path, $composer_backup ) ) { fwrite( STDERR, $revert_msg ); } else { fwrite( STDERR, $revert_fail_msg ); } } $error_array = error_get_last(); if ( is_array( $error_array ) && false !== strpos( $error_array['message'], $memory_string ) ) { fwrite( STDERR, $memory_msg ); } } ); } /** * Check whether we are dealing with Composer version 2.0.0+. * * @return bool */ private function is_composer_v2() { return version_compare( Composer::getVersion(), '2.0.0', '>=' ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_search_replace_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_search_replace_autoloader ) ) { require_once $wpcli_search_replace_autoloader; } WP_CLI::add_command( 'search-replace', 'Search_Replace_Command' ); <?php class Search_Replace_Command extends WP_CLI_Command { private $dry_run; private $export_handle = false; private $export_insert_size; private $recurse_objects; private $regex; private $regex_flags; private $regex_delimiter; private $regex_limit = -1; private $skip_tables; private $skip_columns; private $include_columns; private $format; private $report; private $report_changed_only; private $log_handle = null; private $log_before_context = 40; private $log_after_context = 40; private $log_prefixes = array( '< ', '> ' ); private $log_colors; private $log_encoding; /** * Searches/replaces strings in the database. * * Searches through all rows in a selection of tables and replaces * appearances of the first string with the second string. * * By default, the command uses tables registered to the `$wpdb` object. On * multisite, this will just be the tables for the current site unless * `--network` is specified. * * Search/replace intelligently handles PHP serialized data, and does not * change primary key values. * * ## OPTIONS * * <old> * : A string to search for within the database. * * <new> * : Replace instances of the first string with this new string. * * [<table>...] * : List of database tables to restrict the replacement to. Wildcards are * supported, e.g. `'wp_*options'` or `'wp_post*'`. * * [--dry-run] * : Run the entire search/replace operation and show report, but don't save * changes to the database. * * [--network] * : Search/replace through all the tables registered to $wpdb in a * multisite install. * * [--all-tables-with-prefix] * : Enable replacement on any tables that match the table prefix even if * not registered on $wpdb. * * [--all-tables] * : Enable replacement on ALL tables in the database, regardless of the * prefix, and even if not registered on $wpdb. Overrides --network * and --all-tables-with-prefix. * * [--export[=<file>]] * : Write transformed data as SQL file instead of saving replacements to * the database. If <file> is not supplied, will output to STDOUT. * * [--export_insert_size=<rows>] * : Define number of rows in single INSERT statement when doing SQL export. * You might want to change this depending on your database configuration * (e.g. if you need to do fewer queries). Default: 50 * * [--skip-tables=<tables>] * : Do not perform the replacement on specific tables. Use commas to * specify multiple tables. Wildcards are supported, e.g. `'wp_*options'` or `'wp_post*'`. * * [--skip-columns=<columns>] * : Do not perform the replacement on specific columns. Use commas to * specify multiple columns. * * [--include-columns=<columns>] * : Perform the replacement on specific columns. Use commas to * specify multiple columns. * * [--precise] * : Force the use of PHP (instead of SQL) which is more thorough, * but slower. * * [--recurse-objects] * : Enable recursing into objects to replace strings. Defaults to true; * pass --no-recurse-objects to disable. * * [--verbose] * : Prints rows to the console as they're updated. * * [--regex] * : Runs the search using a regular expression (without delimiters). * Warning: search-replace will take about 15-20x longer when using --regex. * * [--regex-flags=<regex-flags>] * : Pass PCRE modifiers to regex search-replace (e.g. 'i' for case-insensitivity). * * [--regex-delimiter=<regex-delimiter>] * : The delimiter to use for the regex. It must be escaped if it appears in the search string. The default value is the result of `chr(1)`. * * [--regex-limit=<regex-limit>] * : The maximum possible replacements for the regex per row (or per unserialized data bit per row). Defaults to -1 (no limit). * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - count * --- * * [--report] * : Produce report. Defaults to true. * * [--report-changed-only] * : Report changed fields only. Defaults to false, unless logging, when it defaults to true. * * [--log[=<file>]] * : Log the items changed. If <file> is not supplied or is "-", will output to STDOUT. * Warning: causes a significant slow down, similar or worse to enabling --precise or --regex. * * [--before_context=<num>] * : For logging, number of characters to display before the old match and the new replacement. Default 40. Ignored if not logging. * * [--after_context=<num>] * : For logging, number of characters to display after the old match and the new replacement. Default 40. Ignored if not logging. * * ## EXAMPLES * * # Search and replace but skip one column * $ wp search-replace 'http://example.test' 'http://example.com' --skip-columns=guid * * # Run search/replace operation but dont save in database * $ wp search-replace 'foo' 'bar' wp_posts wp_postmeta wp_terms --dry-run * * # Run case-insensitive regex search/replace operation (slow) * $ wp search-replace '\[foo id="([0-9]+)"' '[bar id="\1"' --regex --regex-flags='i' * * # Turn your production multisite database into a local dev database * $ wp search-replace --url=example.com example.com example.test 'wp_*options' wp_blogs * * # Search/replace to a SQL file without transforming the database * $ wp search-replace foo bar --export=database.sql * * # Bash script: Search/replace production to development url (multisite compatible) * #!/bin/bash * if $(wp --url=http://example.com core is-installed --network); then * wp search-replace --url=http://example.com 'http://example.com' 'http://example.test' --recurse-objects --network --skip-columns=guid --skip-tables=wp_users * else * wp search-replace 'http://example.com' 'http://example.test' --recurse-objects --skip-columns=guid --skip-tables=wp_users * fi */ public function __invoke( $args, $assoc_args ) { global $wpdb; $old = array_shift( $args ); $new = array_shift( $args ); $total = 0; $report = array(); $this->dry_run = \WP_CLI\Utils\get_flag_value( $assoc_args, 'dry-run' ); $php_only = \WP_CLI\Utils\get_flag_value( $assoc_args, 'precise' ); $this->recurse_objects = \WP_CLI\Utils\get_flag_value( $assoc_args, 'recurse-objects', true ); $this->verbose = \WP_CLI\Utils\get_flag_value( $assoc_args, 'verbose' ); $this->format = \WP_CLI\Utils\get_flag_value( $assoc_args, 'format' ); $this->regex = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex', false ); if ( null !== $this->regex ) { $default_regex_delimiter = false; $this->regex_flags = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-flags', false ); $this->regex_delimiter = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-delimiter', '' ); if ( '' === $this->regex_delimiter ) { $this->regex_delimiter = chr( 1 ); $default_regex_delimiter = true; } } $regex_limit = \WP_CLI\Utils\get_flag_value( $assoc_args, 'regex-limit' ); if ( null !== $regex_limit ) { if ( ! preg_match( '/^(?:[0-9]+|-1)$/', $regex_limit ) || 0 === (int) $regex_limit ) { WP_CLI::error( '`--regex-limit` expects a non-zero positive integer or -1.' ); } $this->regex_limit = (int) $regex_limit; } if ( ! empty( $this->regex ) ) { if ( '' === $this->regex_delimiter ) { $this->regex_delimiter = chr( 1 ); } $search_regex = $this->regex_delimiter; $search_regex .= $old; $search_regex .= $this->regex_delimiter; $search_regex .= $this->regex_flags; // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- Preventing a warning when testing the regex. if ( false === @preg_match( $search_regex, '' ) ) { $error = error_get_last(); $preg_error_message = ( ! empty( $error ) && array_key_exists( 'message', $error ) ) ? "\n{$error['message']}." : ''; if ( $default_regex_delimiter ) { $flags_msg = $this->regex_flags ? "flags '$this->regex_flags'" : 'no flags'; $msg = "The regex pattern '$old' with default delimiter 'chr(1)' and {$flags_msg} fails."; } else { $msg = "The regex '$search_regex' fails."; } WP_CLI::error( $msg . $preg_error_message ); } } $this->skip_columns = explode( ',', \WP_CLI\Utils\get_flag_value( $assoc_args, 'skip-columns' ) ); $this->skip_tables = explode( ',', \WP_CLI\Utils\get_flag_value( $assoc_args, 'skip-tables' ) ); $this->include_columns = array_filter( explode( ',', \WP_CLI\Utils\get_flag_value( $assoc_args, 'include-columns' ) ) ); if ( $old === $new && ! $this->regex ) { WP_CLI::warning( "Replacement value '{$old}' is identical to search value '{$new}'. Skipping operation." ); exit; } $export = \WP_CLI\Utils\get_flag_value( $assoc_args, 'export' ); if ( null !== $export ) { if ( $this->dry_run ) { WP_CLI::error( 'You cannot supply --dry-run and --export at the same time.' ); } if ( true === $export ) { $this->export_handle = STDOUT; $this->verbose = false; } else { $this->export_handle = @fopen( $assoc_args['export'], 'w' ); if ( false === $this->export_handle ) { $error = error_get_last(); WP_CLI::error( sprintf( 'Unable to open export file "%s" for writing: %s.', $assoc_args['export'], $error['message'] ) ); } } $export_insert_size = WP_CLI\Utils\get_flag_value( $assoc_args, 'export_insert_size', 50 ); // phpcs:ignore WordPress.PHP.StrictComparisons.LooseComparison -- See the code, this is deliberate. if ( (int) $export_insert_size == $export_insert_size && $export_insert_size > 0 ) { $this->export_insert_size = $export_insert_size; } $php_only = true; } $log = \WP_CLI\Utils\get_flag_value( $assoc_args, 'log' ); if ( null !== $log ) { if ( true === $log || '-' === $log ) { $this->log_handle = STDOUT; } else { $this->log_handle = @fopen( $assoc_args['log'], 'w' ); if ( false === $this->log_handle ) { $error = error_get_last(); WP_CLI::error( sprintf( 'Unable to open log file "%s" for writing: %s.', $assoc_args['log'], $error['message'] ) ); } } if ( $this->log_handle ) { $before_context = \WP_CLI\Utils\get_flag_value( $assoc_args, 'before_context' ); if ( null !== $before_context && preg_match( '/^[0-9]+$/', $before_context ) ) { $this->log_before_context = (int) $before_context; } $after_context = \WP_CLI\Utils\get_flag_value( $assoc_args, 'after_context' ); if ( null !== $after_context && preg_match( '/^[0-9]+$/', $after_context ) ) { $this->log_after_context = (int) $after_context; } $log_prefixes = getenv( 'WP_CLI_SEARCH_REPLACE_LOG_PREFIXES' ); if ( false !== $log_prefixes && preg_match( '/^([^,]*),([^,]*)$/', $log_prefixes, $matches ) ) { $this->log_prefixes = array( $matches[1], $matches[2] ); } if ( STDOUT === $this->log_handle ) { $default_log_colors = array( 'log_table_column_id' => '%B', 'log_old' => '%R', 'log_new' => '%G', ); } else { $default_log_colors = array( 'log_table_column_id' => '', 'log_old' => '', 'log_new' => '', ); } $log_colors = getenv( 'WP_CLI_SEARCH_REPLACE_LOG_COLORS' ); if ( false !== $log_colors && preg_match( '/^([^,]*),([^,]*),([^,]*)$/', $log_colors, $matches ) ) { $default_log_colors = array( 'log_table_column_id' => $matches[1], 'log_old' => $matches[2], 'log_new' => $matches[3], ); } $this->log_colors = self::get_colors( $assoc_args, $default_log_colors ); $this->log_encoding = 0 === strpos( $wpdb->charset, 'utf8' ) ? 'UTF-8' : false; } } $this->report = \WP_CLI\Utils\get_flag_value( $assoc_args, 'report', true ); // Defaults to true if logging, else defaults to false. $this->report_changed_only = \WP_CLI\Utils\get_flag_value( $assoc_args, 'report-changed-only', null !== $this->log_handle ); if ( $this->regex_flags ) { $php_only = true; } // never mess with hashed passwords $this->skip_columns[] = 'user_pass'; // Get table names based on leftover $args or supplied $assoc_args $tables = \WP_CLI\Utils\wp_get_table_names( $args, $assoc_args ); foreach ( $tables as $table ) { foreach ( $this->skip_tables as $skip_table ) { if ( fnmatch( $skip_table, $table ) ) { continue 2; } } $table_sql = self::esc_sql_ident( $table ); if ( $this->export_handle ) { fwrite( $this->export_handle, "\nDROP TABLE IF EXISTS $table_sql;\n" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $row = $wpdb->get_row( "SHOW CREATE TABLE $table_sql", ARRAY_N ); fwrite( $this->export_handle, $row[1] . ";\n" ); list( $table_report, $total_rows ) = $this->php_export_table( $table, $old, $new ); if ( $this->report ) { $report = array_merge( $report, $table_report ); } $total += $total_rows; // Don't perform replacements on the actual database continue; } list( $primary_keys, $columns, $all_columns ) = self::get_columns( $table ); // since we'll be updating one row at a time, // we need a primary key to identify the row if ( empty( $primary_keys ) ) { // wasn't updated, so skip to the next table if ( $this->report_changed_only ) { continue; } if ( $this->report ) { $report[] = array( $table, '', 'skipped', '' ); } else { WP_CLI::warning( $all_columns ? "No primary keys for table '$table'." : "No such table '$table'." ); } continue; } foreach ( $columns as $col ) { if ( ! empty( $this->include_columns ) && ! in_array( $col, $this->include_columns, true ) ) { continue; } if ( in_array( $col, $this->skip_columns, true ) ) { continue; } if ( $this->verbose && 'count' !== $this->format ) { $this->start_time = microtime( true ); WP_CLI::log( sprintf( 'Checking: %s.%s', $table, $col ) ); } if ( ! $php_only && ! $this->regex ) { $col_sql = self::esc_sql_ident( $col ); $wpdb->last_error = ''; // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $serial_row = $wpdb->get_row( "SELECT * FROM $table_sql WHERE $col_sql REGEXP '^[aiO]:[1-9]' LIMIT 1" ); // When the regex triggers an error, we should fall back to PHP if ( false !== strpos( $wpdb->last_error, 'ERROR 1139' ) ) { $serial_row = true; } } if ( $php_only || $this->regex || null !== $serial_row ) { $type = 'PHP'; $count = $this->php_handle_col( $col, $primary_keys, $table, $old, $new ); } else { $type = 'SQL'; $count = $this->sql_handle_col( $col, $primary_keys, $table, $old, $new ); } if ( $this->report && ( $count || ! $this->report_changed_only ) ) { $report[] = array( $table, $col, $count, $type ); } $total += $count; } } if ( $this->export_handle && STDOUT !== $this->export_handle ) { fclose( $this->export_handle ); } // Only informational output after this point if ( WP_CLI::get_config( 'quiet' ) || STDOUT === $this->export_handle ) { return; } if ( 'count' === $this->format ) { WP_CLI::line( $total ); return; } if ( $this->report && ! empty( $report ) ) { $table = new \cli\Table(); $table->setHeaders( array( 'Table', 'Column', 'Replacements', 'Type' ) ); $table->setRows( $report ); $table->display(); } if ( ! $this->dry_run ) { if ( ! empty( $assoc_args['export'] ) ) { $success_message = 1 === $total ? "Made 1 replacement and exported to {$assoc_args['export']}." : "Made {$total} replacements and exported to {$assoc_args['export']}."; } else { $success_message = 1 === $total ? 'Made 1 replacement.' : "Made $total replacements."; if ( $total && 'Default' !== WP_CLI\Utils\wp_get_cache_type() ) { $success_message .= ' Please remember to flush your persistent object cache with `wp cache flush`.'; } } WP_CLI::success( $success_message ); } else { $success_message = ( 1 === $total ) ? '%d replacement to be made.' : '%d replacements to be made.'; WP_CLI::success( sprintf( $success_message, $total ) ); } } private function php_export_table( $table, $old, $new ) { list( $primary_keys, $columns, $all_columns ) = self::get_columns( $table ); $chunk_size = getenv( 'BEHAT_RUN' ) ? 10 : 1000; $args = array( 'table' => $table, 'fields' => $all_columns, 'chunk_size' => $chunk_size, ); $replacer = new \WP_CLI\SearchReplacer( $old, $new, $this->recurse_objects, $this->regex, $this->regex_flags, $this->regex_delimiter, false, $this->regex_limit ); $col_counts = array_fill_keys( $all_columns, 0 ); if ( $this->verbose && 'table' === $this->format ) { $this->start_time = microtime( true ); WP_CLI::log( sprintf( 'Checking: %s', $table ) ); } $rows = array(); foreach ( new \WP_CLI\Iterators\Table( $args ) as $i => $row ) { $row_fields = array(); foreach ( $all_columns as $col ) { $value = $row->$col; if ( $value && ! in_array( $col, $primary_keys, true ) && ! in_array( $col, $this->skip_columns, true ) ) { $new_value = $replacer->run( $value ); if ( $new_value !== $value ) { $col_counts[ $col ]++; $value = $new_value; } } $row_fields[ $col ] = $value; } $rows[] = $row_fields; } $this->write_sql_row_fields( $table, $rows ); $table_report = array(); $total_rows = 0; $total_cols = 0; foreach ( $col_counts as $col => $col_count ) { if ( $this->report && ( $col_count || ! $this->report_changed_only ) ) { $table_report[] = array( $table, $col, $col_count, 'PHP' ); } if ( $col_count ) { $total_cols++; $total_rows += $col_count; } } if ( $this->verbose && 'table' === $this->format ) { $time = round( microtime( true ) - $this->start_time, 3 ); WP_CLI::log( sprintf( '%d columns and %d total rows affected using PHP (in %ss).', $total_cols, $total_rows, $time ) ); } return array( $table_report, $total_rows ); } private function sql_handle_col( $col, $primary_keys, $table, $old, $new ) { global $wpdb; $table_sql = self::esc_sql_ident( $table ); $col_sql = self::esc_sql_ident( $col ); if ( $this->dry_run ) { if ( $this->log_handle ) { $count = $this->log_sql_diff( $col, $primary_keys, $table, $old, $new ); } else { // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT($col_sql) FROM $table_sql WHERE $col_sql LIKE BINARY %s;", '%' . self::esc_like( $old ) . '%' ) ); } } else { if ( $this->log_handle ) { $this->log_sql_diff( $col, $primary_keys, $table, $old, $new ); } // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $count = $wpdb->query( $wpdb->prepare( "UPDATE $table_sql SET $col_sql = REPLACE($col_sql, %s, %s);", $old, $new ) ); } if ( $this->verbose && 'table' === $this->format ) { $time = round( microtime( true ) - $this->start_time, 3 ); WP_CLI::log( sprintf( '%d rows affected using SQL (in %ss).', $count, $time ) ); } return $count; } private function php_handle_col( $col, $primary_keys, $table, $old, $new ) { global $wpdb; $count = 0; $replacer = new \WP_CLI\SearchReplacer( $old, $new, $this->recurse_objects, $this->regex, $this->regex_flags, $this->regex_delimiter, null !== $this->log_handle, $this->regex_limit ); $table_sql = self::esc_sql_ident( $table ); $col_sql = self::esc_sql_ident( $col ); $where = $this->regex ? '' : " WHERE $col_sql" . $wpdb->prepare( ' LIKE BINARY %s', '%' . self::esc_like( $old ) . '%' ); $escaped_primary_keys = self::esc_sql_ident( $primary_keys ); $primary_keys_sql = implode( ',', $escaped_primary_keys ); $order_by_keys = array_map( function( $key ) { return "{$key} ASC"; }, $escaped_primary_keys ); $order_by_sql = 'ORDER BY ' . implode( ',', $order_by_keys ); $limit = 1000; $offset = 0; // 2 errors: // - WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident // - WordPress.CodeAnalysis.AssignmentInCondition -- no reason to do copy-paste for a single valid assignment in while // phpcs:ignore while ( $rows = $wpdb->get_results( "SELECT {$primary_keys_sql} FROM {$table_sql} {$where} {$order_by_sql} LIMIT {$limit} OFFSET {$offset}" ) ) { foreach ( $rows as $keys ) { $where_sql = ''; foreach ( (array) $keys as $k => $v ) { if ( strlen( $where_sql ) ) { $where_sql .= ' AND '; } $where_sql .= self::esc_sql_ident( $k ) . ' = ' . self::esc_sql_value( $v ); } // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $col_value = $wpdb->get_var( "SELECT {$col_sql} FROM {$table_sql} WHERE {$where_sql}" ); if ( '' === $col_value ) { continue; } $value = $replacer->run( $col_value ); if ( $value === $col_value ) { continue; } if ( $this->log_handle ) { $this->log_php_diff( $col, $keys, $table, $old, $new, $replacer->get_log_data() ); $replacer->clear_log_data(); } if ( $this->dry_run ) { $count++; } else { $update_where = array(); foreach ( (array) $keys as $k => $v ) { $update_where[ $k ] = $v; } $count += $wpdb->update( $table, array( $col => $value ), $update_where ); } } $offset += $limit; } if ( $this->verbose && 'table' === $this->format ) { $time = round( microtime( true ) - $this->start_time, 3 ); WP_CLI::log( sprintf( '%d rows affected using PHP (in %ss).', $count, $time ) ); } return $count; } private function write_sql_row_fields( $table, $rows ) { global $wpdb; if ( empty( $rows ) ) { return; } $table_sql = self::esc_sql_ident( $table ); $insert = "INSERT INTO $table_sql ("; $insert .= join( ', ', self::esc_sql_ident( array_keys( $rows[0] ) ) ); $insert .= ') VALUES '; $insert .= "\n"; $sql = $insert; $values = array(); $index = 1; $count = count( $rows ); $export_insert_size = $this->export_insert_size; foreach ( $rows as $row_fields ) { $subs = array(); foreach ( $row_fields as $field_value ) { if ( null === $field_value ) { $subs[] = 'NULL'; } else { $subs[] = '%s'; $values[] = $field_value; } } $sql .= '(' . join( ', ', $subs ) . ')'; // Add new insert statement if needed. Before this we close the previous with semicolon and write statement to sql-file. // "Statement break" is needed: // 1. When the loop is running every nth time (where n is insert statement size, $export_index_size). Remainder is zero also on first round, so it have to be excluded. // $index % $export_insert_size == 0 && $index > 0 // 2. Or when the loop is running last time // $index == $count if ( ( 0 === $index % $export_insert_size && $index > 0 ) || $index === $count ) { $sql .= ";\n"; if ( method_exists( $wpdb, 'remove_placeholder_escape' ) ) { // since 4.8.3 // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- verified inputs above $sql = $wpdb->remove_placeholder_escape( $wpdb->prepare( $sql, array_values( $values ) ) ); } else { // 4.8.2 or less // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- verified inputs above $sql = $wpdb->prepare( $sql, array_values( $values ) ); } fwrite( $this->export_handle, $sql ); // If there is still rows to loop, reset $sql and $values variables. if ( $count > $index ) { $sql = $insert; $values = array(); } } else { // Otherwise just add comma and new line $sql .= ",\n"; } $index++; } } private static function get_columns( $table ) { global $wpdb; $table_sql = self::esc_sql_ident( $table ); $primary_keys = array(); $text_columns = array(); $all_columns = array(); $suppress_errors = $wpdb->suppress_errors(); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $results = $wpdb->get_results( "DESCRIBE $table_sql" ); if ( ! empty( $results ) ) { foreach ( $results as $col ) { if ( 'PRI' === $col->Key ) { $primary_keys[] = $col->Field; } if ( self::is_text_col( $col->Type ) ) { $text_columns[] = $col->Field; } $all_columns[] = $col->Field; } } $wpdb->suppress_errors( $suppress_errors ); return array( $primary_keys, $text_columns, $all_columns ); } private static function is_text_col( $type ) { foreach ( array( 'text', 'varchar' ) as $token ) { if ( false !== strpos( $type, $token ) ) { return true; } } return false; } private static function esc_like( $old ) { global $wpdb; // Remove notices in 4.0 and support backwards compatibility if ( method_exists( $wpdb, 'esc_like' ) ) { // 4.0 $old = $wpdb->esc_like( $old ); } else { // phpcs:ignore WordPress.WP.DeprecatedFunctions.like_escapeFound -- BC-layer for WP 3.9 or less. $old = like_escape( esc_sql( $old ) ); // Note: this double escaping is actually necessary, even though `esc_like()` will be used in a `prepare()`. } return $old; } /** * Escapes (backticks) MySQL identifiers (aka schema object names) - i.e. column names, table names, and database/index/alias/view etc names. * See https://dev.mysql.com/doc/refman/5.5/en/identifiers.html * * @param string|array $idents A single identifier or an array of identifiers. * @return string|array An escaped string if given a string, or an array of escaped strings if given an array of strings. */ private static function esc_sql_ident( $idents ) { $backtick = function ( $v ) { // Escape any backticks in the identifier by doubling. return '`' . str_replace( '`', '``', $v ) . '`'; }; if ( is_string( $idents ) ) { return $backtick( $idents ); } return array_map( $backtick, $idents ); } /** * Puts MySQL string values in single quotes, to avoid them being interpreted as column names. * * @param string|array $values A single value or an array of values. * @return string|array A quoted string if given a string, or an array of quoted strings if given an array of strings. */ private static function esc_sql_value( $values ) { $quote = function ( $v ) { // Don't quote integer values to avoid MySQL's implicit type conversion. if ( preg_match( '/^[+-]?[0-9]{1,20}$/', $v ) ) { // MySQL BIGINT UNSIGNED max 18446744073709551615 (20 digits). return esc_sql( $v ); } // Put any string values between single quotes. return "'" . esc_sql( $v ) . "'"; }; if ( is_array( $values ) ) { return array_map( $quote, $values ); } return $quote( $values ); } /** * Gets the color codes from the options if any, and returns the passed in array colorized with 2 elements per entry, a color code (or '') and a reset (or ''). * * @param array $assoc_args The associative argument array passed to the command. * @param array $colors Array of default percent color code strings keyed by the color contexts. * @return array Array containing 2-element arrays keyed to the input $colors array. */ private function get_colors( $assoc_args, $colors ) { $color_reset = WP_CLI::colorize( '%n' ); $color_code_callback = function ( $v ) { return substr( $v, 1 ); }; $color_codes = array_keys( \cli\Colors::getColors() ); $color_codes = array_map( $color_code_callback, $color_codes ); $color_codes = implode( '', $color_codes ); $color_codes_regex = '/^(?:%[' . $color_codes . '])*$/'; foreach ( array_keys( $colors ) as $color_col ) { $col_color_flag = \WP_CLI\Utils\get_flag_value( $assoc_args, $color_col . '_color' ); if ( null !== $col_color_flag ) { if ( ! preg_match( $color_codes_regex, $col_color_flag, $matches ) ) { WP_CLI::warning( "Unrecognized percent color code '$col_color_flag' for '{$color_col}_color'." ); } else { $colors[ $color_col ] = $matches[0]; } } $colors[ $color_col ] = $colors[ $color_col ] ? array( WP_CLI::colorize( $colors[ $color_col ] ), $color_reset ) : array( '', '' ); } return $colors; } /* * Logs the difference between old match and new replacement for SQL replacement. * * @param string $col Column being processed. * @param array $primary_keys Primary keys for table. * @param string $table Table being processed. * @param string $old Old value to match. * @param string $new New value to replace the old value with. * @return int Count of changed rows. */ private function log_sql_diff( $col, $primary_keys, $table, $old, $new ) { global $wpdb; if ( $primary_keys ) { $esc_primary_keys = implode( ', ', self::esc_sql_ident( $primary_keys ) ); $primary_keys_sql = count( $primary_keys ) > 1 ? "CONCAT_WS(',', {$esc_primary_keys}), " : "{$esc_primary_keys}, "; } else { $primary_keys_sql = ''; } $table_sql = self::esc_sql_ident( $table ); $col_sql = self::esc_sql_ident( $col ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared -- escaped through self::esc_sql_ident $results = $wpdb->get_results( $wpdb->prepare( "SELECT {$primary_keys_sql}{$col_sql} FROM {$table_sql} WHERE {$col_sql} LIKE BINARY %s", '%' . self::esc_like( $old ) . '%' ), ARRAY_N ); if ( empty( $results ) ) { return 0; } $search_regex = '/' . preg_quote( $old, '/' ) . '/'; foreach ( $results as $result ) { list( $keys, $data ) = $primary_keys ? array( $result[0], $result[1] ) : array( null, $result[0] ); if ( preg_match_all( $search_regex, $data, $matches, PREG_OFFSET_CAPTURE ) ) { list( $old_bits, $new_bits ) = $this->log_bits( $search_regex, $data, $matches, $new ); $this->log_write( $col, $keys, $table, $old_bits, $new_bits ); } } return count( $results ); } /* * Logs the difference between old matches and new replacements at the end of a PHP (regex) replacement of a database row. * * @param string $col Column being processed. * @param array $keys Associative array (or object) of primary key names and their values for the row being processed. * @param string $table Table being processed. * @param string $old Old value to match. * @param string $new New value to replace the old value with. * @param array $log_data Array of data strings before replacements. */ private function log_php_diff( $col, $keys, $table, $old, $new, $log_data ) { if ( $this->regex ) { $search_regex = $this->regex_delimiter . $old . $this->regex_delimiter . $this->regex_flags; } else { $search_regex = '/' . preg_quote( $old, '/' ) . '/'; } $old_bits = array(); $new_bits = array(); foreach ( $log_data as $data ) { if ( preg_match_all( $search_regex, $data, $matches, PREG_OFFSET_CAPTURE ) ) { $bits = $this->log_bits( $search_regex, $data, $matches, $new ); $old_bits = array_merge( $old_bits, $bits[0] ); $new_bits = array_merge( $new_bits, $bits[1] ); } } if ( $old_bits ) { $this->log_write( $col, $keys, $table, $old_bits, $new_bits ); } } /** * Returns the arrays of old matches and new replacements based on the passed-in matches, with context. * * @param string $search_regex The search regular expression. * @param string $old_data Existing data being processed. * @param array $old_matches Old matches array returned by `preg_match_all()`. * @param string $new New value to replace the old value with. * @return array Two element array containing the array of old match log strings and the array of new replacement log strings with before/after contexts. */ private function log_bits( $search_regex, $old_data, $old_matches, $new ) { $encoding = $this->log_encoding; if ( ! $encoding && ( $this->log_before_context || $this->log_after_context ) && function_exists( 'mb_detect_encoding' ) ) { $encoding = mb_detect_encoding( $old_data, null, true /*strict*/ ); } // Generate a new data matches analog of the old data matches by simulating a `preg_replace()`. $is_regex = $this->regex; $i = 0; $diff = 0; $new_matches = array(); $new_data = preg_replace_callback( $search_regex, function ( $matches ) use ( $old_matches, $new, $is_regex, &$new_matches, &$i, &$diff ) { if ( $is_regex ) { // Sub in any back references, "$1", "\2" etc, in the replacement string. $new = preg_replace_callback( '/(?<!\\\\)(?:\\\\\\\\)*((?:\\\\|\\$)[0-9]{1,2}|\\${[0-9]{1,2}\\})/', function ( $m ) use ( $matches ) { $idx = (int) str_replace( array( '\\', '$', '{', '}' ), '', $m[0] ); return isset( $matches[ $idx ] ) ? $matches[ $idx ] : ''; }, $new ); $new = str_replace( '\\\\', '\\', $new ); // Unescape any backslashed backslashes. } $new_matches[0][ $i ][0] = $new; $new_matches[0][ $i ][1] = $old_matches[0][ $i ][1] + $diff; $diff += strlen( $new ) - strlen( $old_matches[0][ $i ][0] ); $i++; return $new; }, $old_data, $this->regex_limit, $match_cnt ); $old_bits = array(); $new_bits = array(); $append_next = false; $last_old_offset = 0; $last_new_offset = 0; for ( $i = 0; $i < $match_cnt; $i++ ) { $old_match = $old_matches[0][ $i ][0]; $old_offset = $old_matches[0][ $i ][1]; $new_match = $new_matches[0][ $i ][0]; $new_offset = $new_matches[0][ $i ][1]; $old_log = $this->log_colors['log_old'][0] . $old_match . $this->log_colors['log_old'][1]; $new_log = $this->log_colors['log_new'][0] . $new_match . $this->log_colors['log_new'][1]; $old_before = ''; $old_after = ''; $new_before = ''; $new_after = ''; $after_shortened = false; // Offsets are in bytes, so need to use `strlen()` and `substr()` before using `safe_substr()`. if ( $this->log_before_context && $old_offset && ! $append_next ) { $old_before = \cli\safe_substr( substr( $old_data, $last_old_offset, $old_offset - $last_old_offset ), -$this->log_before_context, null /*length*/, false /*is_width*/, $encoding ); $new_before = \cli\safe_substr( substr( $new_data, $last_new_offset, $new_offset - $last_new_offset ), -$this->log_before_context, null /*length*/, false /*is_width*/, $encoding ); } if ( $this->log_after_context ) { $old_end_offset = $old_offset + strlen( $old_match ); $new_end_offset = $new_offset + strlen( $new_match ); $old_after = \cli\safe_substr( substr( $old_data, $old_end_offset ), 0, $this->log_after_context, false /*is_width*/, $encoding ); $new_after = \cli\safe_substr( substr( $new_data, $new_end_offset ), 0, $this->log_after_context, false /*is_width*/, $encoding ); // To lessen context duplication in output, shorten the after context if it overlaps with the next match. if ( $i + 1 < $match_cnt && $old_end_offset + strlen( $old_after ) > $old_matches[0][ $i + 1 ][1] ) { $old_after = substr( $old_after, 0, $old_matches[0][ $i + 1 ][1] - $old_end_offset ); $new_after = substr( $new_after, 0, $new_matches[0][ $i + 1 ][1] - $new_end_offset ); $after_shortened = true; // On the next iteration, will append with no before context. } } if ( $append_next ) { $cnt = count( $old_bits ); $old_bits[ $cnt - 1 ] .= $old_log . $old_after; $new_bits[ $cnt - 1 ] .= $new_log . $new_after; } else { $old_bits[] = $old_before . $old_log . $old_after; $new_bits[] = $new_before . $new_log . $new_after; } $append_next = $after_shortened; $last_old_offset = $old_offset; $last_new_offset = $new_offset; } return array( $old_bits, $new_bits ); } /* * Outputs the log strings. * * @param string $col Column being processed. * @param array $keys Associative array (or object) of primary key names and their values for the row being processed. * @param string $table Table being processed. * @param array $old_bits Array of old match log strings. * @param array $new_bits Array of new replacement log strings. */ private function log_write( $col, $keys, $table, $old_bits, $new_bits ) { $id_log = $keys ? ( ':' . implode( ',', (array) $keys ) ) : ''; $table_column_id_log = $this->log_colors['log_table_column_id'][0] . $table . '.' . $col . $id_log . $this->log_colors['log_table_column_id'][1]; $old_log = str_replace( array( "\r\n", "\n" ), ' ', implode( ' [...] ', $old_bits ) ); $new_log = str_replace( array( "\r\n", "\n" ), ' ', implode( ' [...] ', $new_bits ) ); if ( $this->log_prefixes[0] ) { $old_log = $this->log_colors['log_old'][0] . $this->log_prefixes[0] . $this->log_colors['log_old'][1] . $old_log; } if ( $this->log_prefixes[1] ) { $new_log = $this->log_colors['log_new'][0] . $this->log_prefixes[1] . $this->log_colors['log_new'][1] . $new_log; } fwrite( $this->log_handle, "{$table_column_id_log}\n{$old_log}\n{$new_log}\n" ); } } <?php namespace WP_CLI; use ArrayObject; use Exception; class SearchReplacer { private $from; private $to; private $recurse_objects; private $regex; private $regex_flags; private $regex_delimiter; private $regex_limit; private $logging; private $log_data; private $max_recursion; /** * @param string $from String we're looking to replace. * @param string $to What we want it to be replaced with. * @param bool $recurse_objects Should objects be recursively replaced? * @param bool $regex Whether `$from` is a regular expression. * @param string $regex_flags Flags for regular expression. * @param string $regex_delimiter Delimiter for regular expression. * @param bool $logging Whether logging. * @param integer $regex_limit The maximum possible replacements for each pattern in each subject string. */ public function __construct( $from, $to, $recurse_objects = false, $regex = false, $regex_flags = '', $regex_delimiter = '/', $logging = false, $regex_limit = -1 ) { $this->from = $from; $this->to = $to; $this->recurse_objects = $recurse_objects; $this->regex = $regex; $this->regex_flags = $regex_flags; $this->regex_delimiter = $regex_delimiter; $this->regex_limit = $regex_limit; $this->logging = $logging; $this->clear_log_data(); // Get the XDebug nesting level. Will be zero (no limit) if no value is set $this->max_recursion = intval( ini_get( 'xdebug.max_nesting_level' ) ); } /** * Take a serialised array and unserialise it replacing elements as needed and * unserialising any subordinate arrays and performing the replace on those too. * Ignores any serialized objects unless $recurse_objects is set to true. * * @param array|string $data The data to operate on. * @param bool $serialised Does the value of $data need to be unserialized? * * @return array The original array with all elements replaced as needed. */ public function run( $data, $serialised = false ) { return $this->run_recursively( $data, $serialised ); } /** * @param int $recursion_level Current recursion depth within the original data. * @param array $visited_data Data that has been seen in previous recursion iterations. */ private function run_recursively( $data, $serialised, $recursion_level = 0, $visited_data = array() ) { // some unseriliased data cannot be re-serialised eg. SimpleXMLElements try { if ( $this->recurse_objects ) { // If we've reached the maximum recursion level, short circuit if ( 0 !== $this->max_recursion && $recursion_level >= $this->max_recursion ) { return $data; } if ( is_array( $data ) || is_object( $data ) ) { // If we've seen this exact object or array before, short circuit if ( in_array( $data, $visited_data, true ) ) { return $data; // Avoid infinite loops when there's a cycle } // Add this data to the list of $visited_data[] = $data; } } $unserialized = is_string( $data ) ? @unserialize( $data ) : false; if ( false !== $unserialized ) { $data = $this->run_recursively( $unserialized, true, $recursion_level + 1 ); } elseif ( is_array( $data ) ) { $keys = array_keys( $data ); foreach ( $keys as $key ) { $data[ $key ] = $this->run_recursively( $data[ $key ], false, $recursion_level + 1, $visited_data ); } } elseif ( $this->recurse_objects && ( is_object( $data ) || $data instanceof \__PHP_Incomplete_Class ) ) { if ( $data instanceof \__PHP_Incomplete_Class ) { $array = new ArrayObject( $data ); \WP_CLI::warning( sprintf( 'Skipping an uninitialized class "%s", replacements might not be complete.', $array['__PHP_Incomplete_Class_Name'] ) ); } else { foreach ( $data as $key => $value ) { $data->$key = $this->run_recursively( $value, false, $recursion_level + 1, $visited_data ); } } } elseif ( is_string( $data ) ) { if ( $this->logging ) { $old_data = $data; } if ( $this->regex ) { $search_regex = $this->regex_delimiter; $search_regex .= $this->from; $search_regex .= $this->regex_delimiter; $search_regex .= $this->regex_flags; $result = preg_replace( $search_regex, $this->to, $data, $this->regex_limit ); if ( null === $result || PREG_NO_ERROR !== preg_last_error() ) { \WP_CLI::warning( sprintf( 'The provided regular expression threw a PCRE error - %s', $this->preg_error_message( $result ) ) ); } $data = $result; } else { $data = str_replace( $this->from, $this->to, $data ); } if ( $this->logging && $old_data !== $data ) { $this->log_data[] = $old_data; } } if ( $serialised ) { return serialize( $data ); } } catch ( Exception $error ) { // phpcs:ignore Generic.CodeAnalysis.EmptyStatement.DetectedCatch -- Deliberally empty. } return $data; } /** * Gets existing data saved for this run when logging. * @return array Array of data strings, prior to replacements. */ public function get_log_data() { return $this->log_data; } /** * Clears data stored for logging. */ public function clear_log_data() { $this->log_data = array(); } /** * Get the PCRE error constant name from an error value. * * @param integer $error Error code. * @return string Error constant name. */ private function preg_error_message( $error ) { static $error_names = null; if ( null === $error_names ) { $definitions = get_defined_constants( true ); $pcre_constants = array_key_exists( 'pcre', $definitions ) ? $definitions['pcre'] : array(); $error_names = array_flip( $pcre_constants ); } return isset( $error_names[ $error ] ) ? $error_names[ $error ] : '<unknown error>'; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_cache_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_cache_autoloader ) ) { require_once $wpcli_cache_autoloader; } WP_CLI::add_command( 'cache', 'Cache_Command' ); WP_CLI::add_command( 'transient', 'Transient_Command' ); <?php use WP_CLI\Utils; /** * Adds, gets, and deletes entries in the WordPress Transient Cache. * * By default, the transient cache uses the WordPress database to persist values * between requests. On a single site installation, values are stored in the * `wp_options` table. On a multisite installation, values are stored in the * `wp_options` or the `wp_sitemeta` table, depending on use of the `--network` * flag. * * When a persistent object cache drop-in is installed (e.g. Redis or Memcached), * the transient cache skips the database and simply wraps the WP Object Cache. * * ## EXAMPLES * * # Set transient. * $ wp transient set sample_key "test data" 3600 * Success: Transient added. * * # Get transient. * $ wp transient get sample_key * test data * * # Delete transient. * $ wp transient delete sample_key * Success: Transient deleted. * * # Delete expired transients. * $ wp transient delete --expired * Success: 12 expired transients deleted from the database. * * # Delete all transients. * $ wp transient delete --all * Success: 14 transients deleted from the database. */ class Transient_Command extends WP_CLI_Command { /** * Gets a transient value. * * For a more complete explanation of the transient cache, including the * network|site cache, please see docs for `wp transient`. * * ## OPTIONS * * <key> * : Key for the transient. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * [--network] * : Get the value of a network|site transient. On single site, this is * is a specially-named cache key. On multisite, this is a global cache * (instead of local to the site). * * ## EXAMPLES * * $ wp transient get sample_key * test data * * $ wp transient get random_key * Warning: Transient with key "random_key" is not set. */ public function get( $args, $assoc_args ) { list( $key ) = $args; $func = Utils\get_flag_value( $assoc_args, 'network' ) ? 'get_site_transient' : 'get_transient'; $value = $func( $key ); if ( false === $value ) { WP_CLI::warning( 'Transient with key "' . $key . '" is not set.' ); exit; } WP_CLI::print_value( $value, $assoc_args ); } /** * Sets a transient value. * * `<expiration>` is the time until expiration, in seconds. * * For a more complete explanation of the transient cache, including the * network|site cache, please see docs for `wp transient`. * * ## OPTIONS * * <key> * : Key for the transient. * * <value> * : Value to be set for the transient. * * [<expiration>] * : Time until expiration, in seconds. * * [--network] * : Set the value of a network|site transient. On single site, this is * is a specially-named cache key. On multisite, this is a global cache * (instead of local to the site). * * ## EXAMPLES * * $ wp transient set sample_key "test data" 3600 * Success: Transient added. */ public function set( $args, $assoc_args ) { list( $key, $value ) = $args; $expiration = Utils\get_flag_value( $args, 2, 0 ); $func = Utils\get_flag_value( $assoc_args, 'network' ) ? 'set_site_transient' : 'set_transient'; if ( $func( $key, $value, $expiration ) ) { WP_CLI::success( 'Transient added.' ); } else { WP_CLI::error( 'Transient could not be set.' ); } } /** * Deletes a transient value. * * For a more complete explanation of the transient cache, including the * network|site cache, please see docs for `wp transient`. * * ## OPTIONS * * [<key>] * : Key for the transient. * * [--network] * : Delete the value of a network|site transient. On single site, this is * is a specially-named cache key. On multisite, this is a global cache * (instead of local to the site). * * [--all] * : Delete all transients. * * [--expired] * : Delete all expired transients. * * ## EXAMPLES * * # Delete transient. * $ wp transient delete sample_key * Success: Transient deleted. * * # Delete expired transients. * $ wp transient delete --expired * Success: 12 expired transients deleted from the database. * * # Delete expired site transients. * $ wp transient delete --expired --network * Success: 1 expired transient deleted from the database. * * # Delete all transients. * $ wp transient delete --all * Success: 14 transients deleted from the database. * * # Delete all site transients. * $ wp transient delete --all --network * Success: 2 transients deleted from the database. * * # Delete all transients in a multsite. * $ wp transient delete --all --network && wp site list --field=url | xargs -n1 -I % wp --url=% transient delete --all */ public function delete( $args, $assoc_args ) { $key = ( ! empty( $args ) ) ? $args[0] : null; $all = Utils\get_flag_value( $assoc_args, 'all' ); $expired = Utils\get_flag_value( $assoc_args, 'expired' ); $network = Utils\get_flag_value( $assoc_args, 'network' ); if ( true === $all ) { $this->delete_all( $network ); return; } elseif ( true === $expired ) { $this->delete_expired( $network ); return; } if ( ! $key ) { WP_CLI::error( 'Please specify transient key, or use --all or --expired.' ); } $func = $network ? 'delete_site_transient' : 'delete_transient'; if ( $func( $key ) ) { WP_CLI::success( 'Transient deleted.' ); } else { $func = Utils\get_flag_value( $assoc_args, 'network' ) ? 'get_site_transient' : 'get_transient'; if ( $func( $key ) ) { WP_CLI::error( 'Transient was not deleted even though the transient appears to exist.' ); } else { WP_CLI::warning( 'Transient was not deleted; however, the transient does not appear to exist.' ); } } } /** * Determines the type of transients implementation. * * Indicates whether the transients API is using an object cache or the * database. * * For a more complete explanation of the transient cache, including the * network|site cache, please see docs for `wp transient`. * * ## EXAMPLES * * $ wp transient type * Transients are saved to the database. */ public function type() { if ( wp_using_ext_object_cache() ) { $message = 'Transients are saved to the object cache.'; } else { $message = 'Transients are saved to the database.'; } WP_CLI::line( $message ); } /** * Lists transients and their values. * * ## OPTIONS * * [--search=<pattern>] * : Use wildcards ( * and ? ) to match transient name. * * [--exclude=<pattern>] * : Pattern to exclude. Use wildcards ( * and ? ) to match transient name. * * [--network] * : Get the values of network|site transients. On single site, this is * a specially-named cache key. On multisite, this is a global cache * (instead of local to the site). * * [--unserialize] * : Unserialize transient values in output. * * [--human-readable] * : Human-readable output for expirations. * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : The serialization format for the value. * --- * default: table * options: * - table * - json * - csv * - count * - yaml * --- * * ## AVAILABLE FIELDS * * This field will be displayed by default for each matching option: * * * name * * value * * expiration * * ## EXAMPLES * * # List all transients * $ wp transient list * +------+-------+---------------+ * | name | value | expiration | * +------+-------+---------------+ * | foo | bar | 39 mins | * | foo2 | bar2 | no expiration | * | foo3 | bar2 | expired | * | foo4 | bar4 | 4 hours | * +------+-------+---------------+ * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wpdb; $network = Utils\get_flag_value( $assoc_args, 'network', false ); $unserialize = Utils\get_flag_value( $assoc_args, 'unserialize', false ); $human_readable = Utils\get_flag_value( $assoc_args, 'human-readable', false ); $fields = array( 'name', 'value', 'expiration' ); if ( isset( $assoc_args['fields'] ) ) { $fields = explode( ',', $assoc_args['fields'] ); } $pattern = '%'; $exclude = ''; if ( isset( $assoc_args['search'] ) ) { $pattern = Utils\esc_like( $assoc_args['search'] ); // Substitute wildcards. $pattern = str_replace( array( '*', '?' ), array( '%', '_' ), $pattern ); } if ( isset( $assoc_args['exclude'] ) ) { $exclude = Utils\esc_like( $assoc_args['exclude'] ); // Substitute wildcards. $exclude = str_replace( array( '*', '?' ), array( '%', '_' ), $exclude ); } if ( $network ) { if ( is_multisite() ) { $where = $wpdb->prepare( 'WHERE `meta_key` LIKE %s', Utils\esc_like( '_site_transient_' ) . $pattern ); $where .= $wpdb->prepare( ' AND meta_key NOT LIKE %s', Utils\esc_like( '_site_transient_timeout_' ) . '%' ); if ( $exclude ) { $where .= $wpdb->prepare( ' AND meta_key NOT LIKE %s', Utils\esc_like( '_site_transient_' ) . $exclude ); } $query = "SELECT `meta_key` as `name`, `meta_value` as `value` FROM {$wpdb->sitemeta} {$where}"; } else { $where = $wpdb->prepare( 'WHERE `option_name` LIKE %s', Utils\esc_like( '_site_transient_' ) . $pattern ); $where .= $wpdb->prepare( ' AND option_name NOT LIKE %s', Utils\esc_like( '_site_transient_timeout_' ) . '%' ); if ( $exclude ) { $where .= $wpdb->prepare( ' AND option_name NOT LIKE %s', Utils\esc_like( '_site_transient_' ) . $exclude ); } $query = "SELECT `option_name` as `name`, `option_value` as `value` FROM {$wpdb->options} {$where}"; } } else { $where = $wpdb->prepare( 'WHERE `option_name` LIKE %s', Utils\esc_like( '_transient_' ) . $pattern ); $where .= $wpdb->prepare( ' AND option_name NOT LIKE %s', Utils\esc_like( '_transient_timeout_' ) . '%' ); if ( $exclude ) { $where .= $wpdb->prepare( ' AND option_name NOT LIKE %s', Utils\esc_like( '_transient_' ) . $exclude ); } $query = "SELECT `option_name` as `name`, `option_value` as `value` FROM {$wpdb->options} {$where}"; } // phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared -- Prepared properly above. $results = $wpdb->get_results( $query ); foreach ( $results as $result ) { $result->name = str_replace( array( '_site_transient_', '_transient_' ), '', $result->name ); $result->expiration = $this->get_transient_expiration( $result->name, $network, $human_readable ); if ( $unserialize ) { $result->value = maybe_unserialize( $result->value ); } } $formatter = new \WP_CLI\Formatter( $assoc_args, $fields ); $formatter->display_items( $results ); } /** * Retrieves the expiration time. * * @param string $name Transient name. * @param bool $is_site_transient Optional. Whether this is a site transient. Default false. * @param bool $human_readable Optional. Whether to return the difference between now and the * expiration time in a human-readable format. Default false. * @return string Expiration time string. */ private function get_transient_expiration( $name, $is_site_transient = false, $human_readable = false ) { if ( $is_site_transient ) { if ( is_multisite() ) { $expiration = (int) get_site_option( '_site_transient_timeout_' . $name ); } else { $expiration = (int) get_option( '_site_transient_timeout_' . $name ); } } else { $expiration = (int) get_option( '_transient_timeout_' . $name ); } if ( 0 === $expiration ) { return $human_readable ? 'never expires' : 'false'; } if ( ! $human_readable ) { return $expiration; } $now = time(); if ( $now > $expiration ) { return 'expired'; } return human_time_diff( $now, $expiration ); } /** * Deletes all expired transients. * * Only deletes the expired transients from the database. * * @param bool $network Whether to delete transients or network|site transients. */ private function delete_expired( $network ) { global $wpdb; $count = 0; if ( ! $network ) { $count += $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b WHERE a.option_name LIKE %s AND a.option_name NOT LIKE %s AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) ) AND b.option_value < %d", Utils\esc_like( '_transient_' ) . '%', Utils\esc_like( '_transient_timeout_' ) . '%', time() ) ); } else { if ( ! is_multisite() ) { // Non-Multisite stores site transients in the options table. $count += $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b WHERE a.option_name LIKE %s AND a.option_name NOT LIKE %s AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) ) AND b.option_value < %d", Utils\esc_like( '_site_transient_' ) . '%', Utils\esc_like( '_site_transient_timeout_' ) . '%', time() ) ); } else { // Multisite stores site transients in the sitemeta table. $count += $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->sitemeta} a, {$wpdb->sitemeta} b WHERE a.meta_key LIKE %s AND a.meta_key NOT LIKE %s AND b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) ) AND b.meta_value < %d", Utils\esc_like( '_site_transient_' ) . '%', Utils\esc_like( '_site_transient_timeout_' ) . '%', time() ) ); } } // The above queries delete the transient and the transient timeout // thus each transient is counted twice. $count = $count / 2; if ( $count > 0 ) { WP_CLI::success( sprintf( '%d expired %s deleted from the database.', $count, Utils\pluralize( 'transient', $count ) ) ); } else { WP_CLI::success( 'No expired transients found.' ); } if ( wp_using_ext_object_cache() ) { WP_CLI::warning( 'Transients are stored in an external object cache, and this command only deletes those stored in the database. You must flush the cache to delete all transients.' ); } } /** * Deletes all transients. * * Only deletes the transients from the database. * * @param bool $network Whether to delete transients or network|site transients. */ private function delete_all( $network ) { global $wpdb; // To ensure proper count values we first delete all transients with a timeout // and then the remaining transients without a timeout. $count = 0; if ( ! $network ) { $deleted = $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b WHERE a.option_name LIKE %s AND a.option_name NOT LIKE %s AND b.option_name = CONCAT( '_transient_timeout_', SUBSTRING( a.option_name, 12 ) )", Utils\esc_like( '_transient_' ) . '%', Utils\esc_like( '_transient_timeout_' ) . '%' ) ); $count += $deleted / 2; // Ignore affected rows for timeouts. $count += $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name LIKE %s", Utils\esc_like( '_transient_' ) . '%' ) ); } else { if ( ! is_multisite() ) { // Non-Multisite stores site transients in the options table. $deleted = $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->options} a, {$wpdb->options} b WHERE a.option_name LIKE %s AND a.option_name NOT LIKE %s AND b.option_name = CONCAT( '_site_transient_timeout_', SUBSTRING( a.option_name, 17 ) )", Utils\esc_like( '_site_transient_' ) . '%', Utils\esc_like( '_site_transient_timeout_' ) . '%' ) ); $count += $deleted / 2; // Ignore affected rows for timeouts. $count += $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->options WHERE option_name LIKE %s", Utils\esc_like( '_site_transient_' ) . '%' ) ); } else { // Multisite stores site transients in the sitemeta table. $deleted = $wpdb->query( $wpdb->prepare( "DELETE a, b FROM {$wpdb->sitemeta} a, {$wpdb->sitemeta} b WHERE a.meta_key LIKE %s AND a.meta_key NOT LIKE %s AND b.meta_key = CONCAT( '_site_transient_timeout_', SUBSTRING( a.meta_key, 17 ) )", Utils\esc_like( '_site_transient_' ) . '%', Utils\esc_like( '_site_transient_timeout_' ) . '%' ) ); $count += $deleted / 2; // Ignore affected rows for timeouts. $count += $wpdb->query( $wpdb->prepare( "DELETE FROM $wpdb->sitemeta WHERE meta_key LIKE %s", Utils\esc_like( '_site_transient_' ) . '%' ) ); } } if ( $count > 0 ) { WP_CLI::success( sprintf( '%d %s deleted from the database.', $count, Utils\pluralize( 'transient', $count ) ) ); } else { WP_CLI::success( 'No transients found.' ); } if ( wp_using_ext_object_cache() ) { WP_CLI::warning( 'Transients are stored in an external object cache, and this command only deletes those stored in the database. You must flush the cache to delete all transients.' ); } } } <?php /** * Adds, removes, fetches, and flushes the WP Object Cache object. * * By default, the WP Object Cache exists in PHP memory for the length of the * request (and is emptied at the end). Use a persistent object cache drop-in * to persist the object cache between requests. * * [Read the codex article](https://codex.wordpress.org/Class_Reference/WP_Object_Cache) * for more detail. * * ## EXAMPLES * * # Set cache. * $ wp cache set my_key my_value my_group 300 * Success: Set object 'my_key' in group 'my_group'. * * # Get cache. * $ wp cache get my_key my_group * my_value * * @package wp-cli */ class Cache_Command extends WP_CLI_Command { /** * Adds a value to the object cache. * * Errors if a value already exists for the key, which means the value can't * be added. * * ## OPTIONS * * <key> * : Cache key. * * <value> * : Value to add to the key. * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * [<expiration>] * : Define how long to keep the value, in seconds. `0` means as long as possible. * --- * default: 0 * --- * * ## EXAMPLES * * # Add cache. * $ wp cache add my_key my_group my_value 300 * Success: Added object 'my_key' in group 'my_value'. */ public function add( $args, $assoc_args ) { list( $key, $value, $group, $expiration ) = $args; if ( ! wp_cache_add( $key, $value, $group, $expiration ) ) { WP_CLI::error( "Could not add object '$key' in group '$group'. Does it already exist?" ); } WP_CLI::success( "Added object '$key' in group '$group'." ); } /** * Decrements a value in the object cache. * * Errors if the value can't be decremented. * * ## OPTIONS * * <key> * : Cache key. * * [<offset>] * : The amount by which to decrement the item's value. * --- * default: 1 * --- * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * ## EXAMPLES * * # Decrease cache value. * $ wp cache decr my_key 2 my_group * 48 */ public function decr( $args, $assoc_args ) { list( $key, $offset, $group ) = $args; $value = wp_cache_decr( $key, $offset, $group ); if ( false === $value ) { WP_CLI::error( 'The value was not decremented.' ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Removes a value from the object cache. * * Errors if the value can't be deleted. * * ## OPTIONS * * <key> * : Cache key. * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * ## EXAMPLES * * # Delete cache. * $ wp cache delete my_key my_group * Success: Object deleted. */ public function delete( $args, $assoc_args ) { list( $key, $group ) = $args; $result = wp_cache_delete( $key, $group ); if ( false === $result ) { WP_CLI::error( 'The object was not deleted.' ); } WP_CLI::success( 'Object deleted.' ); } /** * Flushes the object cache. * * For WordPress multisite instances using a persistent object cache, * flushing the object cache will typically flush the cache for all sites. * Beware of the performance impact when flushing the object cache in * production. * * Errors if the object cache can't be flushed. * * ## EXAMPLES * * # Flush cache. * $ wp cache flush * Success: The cache was flushed. */ public function flush( $args, $assoc_args ) { $value = wp_cache_flush(); if ( false === $value ) { WP_CLI::error( 'The object cache could not be flushed.' ); } WP_CLI::success( 'The cache was flushed.' ); } /** * Gets a value from the object cache. * * Errors if the value doesn't exist. * * ## OPTIONS * * <key> * : Cache key. * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * ## EXAMPLES * * # Get cache. * $ wp cache get my_key my_group * my_value */ public function get( $args, $assoc_args ) { list( $key, $group ) = $args; $value = wp_cache_get( $key, $group ); if ( false === $value ) { WP_CLI::error( "Object with key '$key' and group '$group' not found." ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Increments a value in the object cache. * * Errors if the value can't be incremented. * * ## OPTIONS * * <key> * : Cache key. * * [<offset>] * : The amount by which to increment the item's value. * --- * default: 1 * --- * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * ## EXAMPLES * * # Increase cache value. * $ wp cache incr my_key 2 my_group * 50 */ public function incr( $args, $assoc_args ) { list( $key, $offset, $group ) = $args; $value = wp_cache_incr( $key, $offset, $group ); if ( false === $value ) { WP_CLI::error( 'The value was not incremented.' ); } WP_CLI::print_value( $value, $assoc_args ); } /** * Replaces a value in the object cache, if the value already exists. * * Errors if the value can't be replaced. * * ## OPTIONS * * <key> * : Cache key. * * <value> * : Value to replace. * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * [<expiration>] * : Define how long to keep the value, in seconds. `0` means as long as possible. * --- * default: 0 * --- * * ## EXAMPLES * * # Replace cache. * $ wp cache replace my_key new_value my_group * Success: Replaced object 'my_key' in group 'my_group'. */ public function replace( $args, $assoc_args ) { list( $key, $value, $group, $expiration ) = $args; $result = wp_cache_replace( $key, $value, $group, $expiration ); if ( false === $result ) { WP_CLI::error( "Could not replace object '$key' in group '$group'. Does it not exist?" ); } WP_CLI::success( "Replaced object '$key' in group '$group'." ); } /** * Sets a value to the object cache, regardless of whether it already exists. * * Errors if the value can't be set. * * ## OPTIONS * * <key> * : Cache key. * * <value> * : Value to set on the key. * * [<group>] * : Method for grouping data within the cache which allows the same key to be used across groups. * --- * default: default * --- * * [<expiration>] * : Define how long to keep the value, in seconds. `0` means as long as possible. * --- * default: 0 * --- * * ## EXAMPLES * * # Set cache. * $ wp cache set my_key my_value my_group 300 * Success: Set object 'my_key' in group 'my_group'. */ public function set( $args, $assoc_args ) { list( $key, $value, $group, $expiration ) = $args; $result = wp_cache_set( $key, $value, $group, $expiration ); if ( false === $result ) { WP_CLI::error( "Could not add object '$key' in group '$group'." ); } WP_CLI::success( "Set object '$key' in group '$group'." ); } /** * Attempts to determine which object cache is being used. * * Note that the guesses made by this function are based on the * WP_Object_Cache classes that define the 3rd party object cache extension. * Changes to those classes could render problems with this function's * ability to determine which object cache is being used. * * ## EXAMPLES * * # Check cache type. * $ wp cache type * Default */ public function type( $args, $assoc_args ) { $message = WP_CLI\Utils\wp_get_cache_type(); WP_CLI::line( $message ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_shell_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_shell_autoloader ) ) { require_once $wpcli_shell_autoloader; } WP_CLI::add_command( 'shell', 'Shell_Command' ); <?php use WP_CLI\Utils; class Shell_Command extends WP_CLI_Command { /** * Opens an interactive PHP console for running and testing PHP code. * * `wp shell` allows you to evaluate PHP statements and expressions * interactively, from within a WordPress environment. Type a bit of code, * hit enter, and see the code execute right before you. Because WordPress * is loaded, you have access to all the functions, classes and globals * that you can use within a WordPress plugin, for example. * * ## OPTIONS * * [--basic] * : Force the use of WP-CLI's built-in PHP REPL, even if the Boris or * PsySH PHP REPLs are available. * * ## EXAMPLES * * # Call get_bloginfo() to get the name of the site. * $ wp shell * wp> get_bloginfo( 'name' ); * => string(6) "WP-CLI" */ public function __invoke( $_, $assoc_args ) { $implementations = array( 'Psy\\Shell', 'Boris\\Boris', 'WP_CLI\\Shell\\REPL', ); if ( Utils\get_flag_value( $assoc_args, 'basic' ) ) { $class = 'WP_CLI\\Shell\\REPL'; } else { foreach ( $implementations as $candidate ) { if ( class_exists( $candidate ) ) { $class = $candidate; break; } } } if ( 'Psy\\Shell' === $class ) { $shell = new Psy\Shell(); $shell->run(); } else { $repl = new $class( 'wp> ' ); $repl->start(); } } } <?php namespace WP_CLI\Shell; use WP_CLI; class REPL { private $prompt; private $history_file; public function __construct( $prompt ) { $this->prompt = $prompt; $this->set_history_file(); } public function start() { while ( true ) { $line = $this->prompt(); if ( '' === $line ) { continue; } $line = rtrim( $line, ';' ) . ';'; if ( self::starts_with( self::non_expressions(), $line ) ) { ob_start(); // phpcs:ignore Squiz.PHP.Eval.Discouraged -- This is meant to be a REPL, no way to avoid eval. eval( $line ); $out = ob_get_clean(); if ( 0 < strlen( $out ) ) { $out = rtrim( $out, "\n" ) . "\n"; } fwrite( STDOUT, $out ); } else { if ( ! self::starts_with( 'return', $line ) ) { $line = 'return ' . $line; } // Write directly to STDOUT, to sidestep any output buffers created by plugins ob_start(); // phpcs:ignore Squiz.PHP.Eval.Discouraged -- This is meant to be a REPL, no way to avoid eval. $evl = eval( $line ); $out = ob_get_clean(); if ( 0 < strlen( $out ) ) { echo rtrim( $out, "\n" ) . "\n"; } echo '=> '; var_dump( $evl ); fwrite( STDOUT, ob_get_clean() ); } } } private static function non_expressions() { return implode( '|', array( 'echo', 'global', 'unset', 'function', 'while', 'for', 'foreach', 'if', 'switch', 'include', 'include\_once', 'require', 'require\_once', ) ); } private function prompt() { $full_line = false; $done = false; do { $prompt = ( ! $done && false !== $full_line ) ? '--> ' : $this->prompt; $fp = popen( self::create_prompt_cmd( $prompt, $this->history_file ), 'r' ); $line = fgets( $fp ); pclose( $fp ); if ( ! $line ) { break; } $line = rtrim( $line, "\n" ); if ( $line && '\\' === $line[ strlen( $line ) - 1 ] ) { $line = substr( $line, 0, -1 ); } else { $done = true; } $full_line .= $line; } while ( ! $done ); if ( false === $full_line ) { return 'exit'; } return $full_line; } private static function create_prompt_cmd( $prompt, $history_path ) { $prompt = escapeshellarg( $prompt ); $history_path = escapeshellarg( $history_path ); if ( getenv( 'WP_CLI_CUSTOM_SHELL' ) ) { $shell_binary = getenv( 'WP_CLI_CUSTOM_SHELL' ); } else { $shell_binary = '/bin/bash'; } if ( ! is_file( $shell_binary ) || ! is_readable( $shell_binary ) ) { WP_CLI::error( "The shell binary '{$shell_binary}' is not valid. You can override the shell to be used through the WP_CLI_CUSTOM_SHELL environment variable." ); } $shell_binary = escapeshellarg( $shell_binary ); $cmd = 'set -f; ' . "history -r {$history_path}; " . 'LINE=""; ' . "read -re -p {$prompt} LINE; " . '[ $? -eq 0 ] || exit; ' . 'history -s "$LINE"; ' . "history -w {$history_path}; " . 'echo $LINE; '; return "{$shell_binary} -c " . escapeshellarg( $cmd ); } private function set_history_file() { $data = getcwd() . get_current_user(); $this->history_file = \WP_CLI\Utils\get_temp_dir() . 'wp-cli-history-' . md5( $data ); } private static function starts_with( $tokens, $line ) { return preg_match( "/^($tokens)[\(\s]+/", $line ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_checksum_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_checksum_autoloader ) ) { require_once $wpcli_checksum_autoloader; } WP_CLI::add_command( 'core', 'Core_Command_Namespace' ); WP_CLI::add_command( 'core verify-checksums', 'Checksum_Core_Command' ); WP_CLI::add_command( 'plugin', 'Plugin_Command_Namespace' ); WP_CLI::add_command( 'plugin verify-checksums', 'Checksum_Plugin_Command' ); <?php use WP_CLI\Dispatcher\CommandNamespace; /** * Manages plugins, including installs, activations, and updates. */ final class Plugin_Command_Namespace extends CommandNamespace { } <?php use WP_CLI\Utils; /** * Base command that all checksum commands rely on. * * @package wp-cli */ class Checksum_Base_Command extends WP_CLI_Command { /** * Normalizes directory separators to slashes. * * @param string $path Path to convert. * * @return string Path with all backslashes replaced by slashes. */ public static function normalize_directory_separators( $path ) { return str_replace( '\\', '/', $path ); } /** * Read a remote file and return its contents. * * @param string $url URL of the remote file to read. * * @return mixed */ protected static function _read( $url ) { // phpcs:ignore PSR2.Methods.MethodDeclaration.Underscore -- Could be used in classes extending this class. $headers = array( 'Accept' => 'application/json' ); $response = Utils\http_request( 'GET', $url, null, $headers, array( 'timeout' => 30 ) ); if ( 200 === $response->status_code ) { return $response->body; } WP_CLI::error( "Couldn't fetch response from {$url} (HTTP code {$response->status_code})." ); } /** * Recursively get the list of files for a given path. * * @param string $path Root path to start the recursive traversal in. * * @return array<string> */ protected function get_files( $path ) { $filtered_files = array(); try { $files = new RecursiveIteratorIterator( new RecursiveCallbackFilterIterator( new RecursiveDirectoryIterator( $path, RecursiveDirectoryIterator::SKIP_DOTS ), function ( $current, $key, $iterator ) use ( $path ) { return $this->filter_file( self::normalize_directory_separators( substr( $current->getPathname(), strlen( $path ) ) ) ); } ), RecursiveIteratorIterator::CHILD_FIRST ); foreach ( $files as $file_info ) { if ( $file_info->isFile() ) { $filtered_files[] = self::normalize_directory_separators( substr( $file_info->getPathname(), strlen( $path ) ) ); } } } catch ( Exception $e ) { WP_CLI::error( $e->getMessage() ); } return $filtered_files; } /** * Whether to include the file in the verification or not. * * Can be overridden in subclasses. * * @param string $filepath Path to a file. * * @return bool */ protected function filter_file( $filepath ) { return true; } } <?php use WP_CLI\Dispatcher\CommandNamespace; /** * Downloads, installs, updates, and manages a WordPress installation. */ final class Core_Command_Namespace extends CommandNamespace { } <?php use WP_CLI\Fetchers; use WP_CLI\Formatter; use WP_CLI\Utils; use WP_CLI\WpOrgApi; /** * Verifies plugin file integrity by comparing to published checksums. * * @package wp-cli */ class Checksum_Plugin_Command extends Checksum_Base_Command { /** * URL template that points to the API endpoint to use. * * @var string */ private $url_template = 'https://downloads.wordpress.org/plugin-checksums/{slug}/{version}.json'; /** * Cached plugin data for all installed plugins. * * @var array|null */ private $plugins_data; /** * Array of detected errors. * * @var array */ private $errors = array(); /** * Verifies plugin files against WordPress.org's checksums. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to verify. * * [--all] * : If set, all plugins will be verified. * * [--strict] * : If set, even "soft changes" like readme.txt changes will trigger * checksum errors. * * [--format=<format>] * : Render output in a specific format. * --- * default: table * options: * - table * - json * - csv * - yaml * - count * --- * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Verify the checksums of all installed plugins * $ wp plugin verify-checksums --all * Success: Verified 8 of 8 plugins. * * # Verify the checksums of a single plugin, Akismet in this case * $ wp plugin verify-checksums akismet * Success: Verified 1 of 1 plugins. */ public function __invoke( $args, $assoc_args ) { $fetcher = new Fetchers\UnfilteredPlugin(); $all = (bool) Utils\get_flag_value( $assoc_args, 'all', false ); $strict = (bool) Utils\get_flag_value( $assoc_args, 'strict', false ); $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $plugins = $fetcher->get_many( $all ? $this->get_all_plugin_names() : $args ); if ( empty( $plugins ) && ! $all ) { WP_CLI::error( 'You need to specify either one or more plugin slugs to check or use the --all flag to check all plugins.' ); } $skips = 0; foreach ( $plugins as $plugin ) { $version = $this->get_plugin_version( $plugin->file ); if ( false === $version ) { WP_CLI::warning( "Could not retrieve the version for plugin {$plugin->name}, skipping." ); $skips++; continue; } $wp_org_api = new WpOrgApi( [ 'insecure' => $insecure ] ); try { $checksums = $wp_org_api->get_plugin_checksums( $plugin->name, $version ); } catch ( Exception $exception ) { $checksums = false; } if ( false === $checksums ) { WP_CLI::warning( "Could not retrieve the checksums for version {$version} of plugin {$plugin->name}, skipping." ); $skips++; continue; } $files = $this->get_plugin_files( $plugin->file ); foreach ( $checksums as $file => $checksum_array ) { if ( ! in_array( $file, $files, true ) ) { $this->add_error( $plugin->name, $file, 'File is missing' ); } } foreach ( $files as $file ) { if ( ! array_key_exists( $file, $checksums ) ) { $this->add_error( $plugin->name, $file, 'File was added' ); continue; } if ( ! $strict && $this->is_soft_change_file( $file ) ) { continue; } $result = $this->check_file_checksum( dirname( $plugin->file ) . '/' . $file, $checksums[ $file ] ); if ( true !== $result ) { $this->add_error( $plugin->name, $file, is_string( $result ) ? $result : 'Checksum does not match' ); } } } if ( ! empty( $this->errors ) ) { $formatter = new Formatter( $assoc_args, array( 'plugin_name', 'file', 'message' ) ); $formatter->display_items( $this->errors ); } $total = count( $plugins ); $failures = count( array_unique( array_column( $this->errors, 'plugin_name' ) ) ); $successes = $total - $failures - $skips; Utils\report_batch_operation_results( 'plugin', 'verify', $total, $successes, $failures, $skips ); } /** * Adds a new error to the array of detected errors. * * @param string $plugin_name Name of the plugin that had the error. * @param string $file Relative path to the file that had the error. * @param string $message Message explaining the error. */ private function add_error( $plugin_name, $file, $message ) { $error['plugin_name'] = $plugin_name; $error['file'] = $file; $error['message'] = $message; $this->errors[] = $error; } /** * Gets the currently installed version for a given plugin. * * @param string $path Relative path to plugin file to get the version for. * * @return string|false Installed version of the plugin, or false if not * found. */ private function get_plugin_version( $path ) { if ( ! isset( $this->plugins_data ) ) { $this->plugins_data = get_plugins(); } if ( ! array_key_exists( $path, $this->plugins_data ) ) { return false; } return $this->plugins_data[ $path ]['Version']; } /** * Gets the names of all installed plugins. * * @return array<string> Names of all installed plugins. */ private function get_all_plugin_names() { $names = array(); foreach ( get_plugins() as $file => $details ) { $names[] = Utils\get_plugin_name( $file ); } return $names; } /** * Gets the list of files that are part of the given plugin. * * @param string $path Relative path to the main plugin file. * * @return array<string> Array of files with their relative paths. */ private function get_plugin_files( $path ) { $folder = dirname( $this->get_absolute_path( $path ) ); // Return single file plugins immediately, to avoid iterating over the // entire plugins folder. if ( WP_PLUGIN_DIR === $folder ) { return (array) $path; } return $this->get_files( trailingslashit( $folder ) ); } /** * Checks the integrity of a single plugin file by comparing it to the * officially provided checksum. * * @param string $path Relative path to the plugin file to check the * integrity of. * @param array $checksums Array of provided checksums to compare against. * * @return true|string */ private function check_file_checksum( $path, $checksums ) { if ( $this->supports_sha256() && array_key_exists( 'sha256', $checksums ) ) { $sha256 = $this->get_sha256( $this->get_absolute_path( $path ) ); return in_array( $sha256, (array) $checksums['sha256'], true ); } if ( ! array_key_exists( 'md5', $checksums ) ) { return 'No matching checksum algorithm found'; } $md5 = $this->get_md5( $this->get_absolute_path( $path ) ); return in_array( $md5, (array) $checksums['md5'], true ); } /** * Checks whether the current environment supports 256-bit SHA-2. * * Should be supported for PHP 5+, but we might find edge cases depending on * host. * * @return bool */ private function supports_sha256() { return true; } /** * Gets the 256-bit SHA-2 of a given file. * * @param string $filepath Absolute path to the file to calculate the SHA-2 * for. * * @return string */ private function get_sha256( $filepath ) { return hash_file( 'sha256', $filepath ); } /** * Gets the MD5 of a given file. * * @param string $filepath Absolute path to the file to calculate the MD5 * for. * * @return string */ private function get_md5( $filepath ) { return hash_file( 'md5', $filepath ); } /** * Gets the absolute path to a relative plugin file. * * @param string $path Relative path to get the absolute path for. * * @return string */ private function get_absolute_path( $path ) { return WP_PLUGIN_DIR . '/' . $path; } /** * Returns a list of files that only trigger checksum errors in strict mode. * * @return array<string> Array of file names. */ private function get_soft_change_files() { static $files = array( 'readme.txt', 'readme.md', ); return $files; } /** * Checks whether a given file will only trigger checksum errors in strict * mode. * * @param string $file File to check. * * @return bool Whether the file only triggers checksum errors in strict * mode. */ private function is_soft_change_file( $file ) { return in_array( strtolower( $file ), $this->get_soft_change_files(), true ); } } <?php namespace WP_CLI\Fetchers; /** * Fetch a WordPress plugin based on one of its attributes. * * This is a special version of the plugin fetcher. It doesn't use the * `all_plugins` filter, so that plugins cannot hide themselves from the * checks. * */ class UnfilteredPlugin extends Base { /** * @var string $msg Error message to use when invalid data is provided */ protected $msg = "The '%s' plugin could not be found."; /** * Get a plugin object by name. * * @param string $name * * @return object|false */ public function get( $name ) { foreach ( get_plugins() as $file => $_ ) { if ( "{$name}.php" === $file || ( $name && $file === $name ) || ( dirname( $file ) === $name && '.' !== $name ) ) { return (object) compact( 'name', 'file' ); } } return false; } } <?php use WP_CLI\Utils; use WP_CLI\WpOrgApi; /** * Verifies core file integrity by comparing to published checksums. * * @package wp-cli */ class Checksum_Core_Command extends Checksum_Base_Command { /** * Verifies WordPress files against WordPress.org's checksums. * * Downloads md5 checksums for the current version from WordPress.org, and * compares those checksums against the currently installed files. * * For security, avoids loading WordPress when verifying checksums. * * If you experience issues verifying from this command, ensure you are * passing the relevant `--locale` and `--version` arguments according to * the values from the `Dashboard->Updates` menu in the admin area of the * site. * * ## OPTIONS * * [--version=<version>] * : Verify checksums against a specific version of WordPress. * * [--locale=<locale>] * : Verify checksums against a specific locale of WordPress. * * [--insecure] * : Retry downloads without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Verify checksums * $ wp core verify-checksums * Success: WordPress installation verifies against checksums. * * # Verify checksums for given WordPress version * $ wp core verify-checksums --version=4.0 * Success: WordPress installation verifies against checksums. * * # Verify checksums for given locale * $ wp core verify-checksums --locale=en_US * Success: WordPress installation verifies against checksums. * * # Verify checksums for given locale * $ wp core verify-checksums --locale=ja * Warning: File doesn't verify against checksum: wp-includes/version.php * Warning: File doesn't verify against checksum: readme.html * Warning: File doesn't verify against checksum: wp-config-sample.php * Error: WordPress installation doesn't verify against checksums. * * @when before_wp_load */ public function __invoke( $args, $assoc_args ) { $wp_version = ''; $locale = ''; if ( ! empty( $assoc_args['version'] ) ) { $wp_version = $assoc_args['version']; } if ( ! empty( $assoc_args['locale'] ) ) { $locale = $assoc_args['locale']; } if ( empty( $wp_version ) ) { $details = self::get_wp_details(); $wp_version = $details['wp_version']; if ( empty( $locale ) ) { $locale = $details['wp_local_package']; } } $insecure = (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ); $wp_org_api = new WpOrgApi( [ 'insecure' => $insecure ] ); try { $checksums = $wp_org_api->get_core_checksums( $wp_version, empty( $locale ) ? 'en_US' : $locale ); } catch ( Exception $exception ) { WP_CLI::error( $exception ); } if ( ! is_array( $checksums ) ) { WP_CLI::error( "Couldn't get checksums from WordPress.org." ); } $has_errors = false; foreach ( $checksums as $file => $checksum ) { // Skip files which get updated if ( 'wp-content' === substr( $file, 0, 10 ) ) { continue; } if ( ! file_exists( ABSPATH . $file ) ) { WP_CLI::warning( "File doesn't exist: {$file}" ); $has_errors = true; continue; } $md5_file = md5_file( ABSPATH . $file ); if ( $md5_file !== $checksum ) { WP_CLI::warning( "File doesn't verify against checksum: {$file}" ); $has_errors = true; } } $core_checksums_files = array_filter( array_keys( $checksums ), [ $this, 'filter_file' ] ); $core_files = $this->get_files( ABSPATH ); $additional_files = array_diff( $core_files, $core_checksums_files ); if ( ! empty( $additional_files ) ) { foreach ( $additional_files as $additional_file ) { WP_CLI::warning( "File should not exist: {$additional_file}" ); } } if ( ! $has_errors ) { WP_CLI::success( 'WordPress installation verifies against checksums.' ); } else { WP_CLI::error( "WordPress installation doesn't verify against checksums." ); } } /** * Whether to include the file in the verification or not. * * @param string $filepath Path to a file. * * @return bool */ protected function filter_file( $filepath ) { return ( 0 === strpos( $filepath, 'wp-admin/' ) || 0 === strpos( $filepath, 'wp-includes/' ) || 1 === preg_match( '/^wp-(?!config\.php)([^\/]*)$/', $filepath ) ); } /** * Gets version information from `wp-includes/version.php`. * * @return array { * @type string $wp_version The WordPress version. * @type int $wp_db_version The WordPress DB revision. * @type string $tinymce_version The TinyMCE version. * @type string $wp_local_package The TinyMCE version. * } */ private static function get_wp_details() { $versions_path = ABSPATH . 'wp-includes/version.php'; if ( ! is_readable( $versions_path ) ) { WP_CLI::error( "This does not seem to be a WordPress install.\n" . 'Pass --path=`path/to/wordpress` or run `wp core download`.' ); } $version_content = file_get_contents( $versions_path, null, null, 6, 2048 ); $vars = [ 'wp_version', 'wp_db_version', 'tinymce_version', 'wp_local_package' ]; $result = []; foreach ( $vars as $var_name ) { $result[ $var_name ] = self::find_var( $var_name, $version_content ); } return $result; } /** * Searches for the value assigned to variable `$var_name` in PHP code `$code`. * * This is equivalent to matching the `\$VAR_NAME = ([^;]+)` regular expression and returning * the first match either as a `string` or as an `integer` (depending if it's surrounded by * quotes or not). * * @param string $var_name Variable name to search for. * @param string $code PHP code to search in. * * @return int|string|null */ private static function find_var( $var_name, $code ) { $start = strpos( $code, '$' . $var_name . ' = ' ); if ( ! $start ) { return null; } $start = $start + strlen( $var_name ) + 3; $end = strpos( $code, ';', $start ); $value = substr( $code, $start, $end - $start ); return trim( $value, "'" ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_language_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_language_autoloader ) ) { require_once $wpcli_language_autoloader; } $wpcli_language_check_requirements = function() { if ( \WP_CLI\Utils\wp_version_compare( '4.0', '<' ) ) { WP_CLI::error( 'Requires WordPress 4.0 or greater.' ); } }; WP_CLI::add_command( 'language core', 'Core_Language_Command', array( 'before_invoke' => $wpcli_language_check_requirements ) ); WP_CLI::add_command( 'language plugin', 'Plugin_Language_Command', array( 'before_invoke' => $wpcli_language_check_requirements ) ); WP_CLI::add_command( 'language theme', 'Theme_Language_Command', array( 'before_invoke' => $wpcli_language_check_requirements ) ); WP_CLI::add_hook( 'after_add_command:site', function () { WP_CLI::add_command( 'site switch-language', 'Site_Switch_Language_Command' ); } ); if ( class_exists( 'WP_CLI\Dispatcher\CommandNamespace' ) ) { WP_CLI::add_command( 'language', 'Language_Namespace' ); } <?php /** * Installs, activates, and manages plugin language packs. * * ## EXAMPLES * * # Install the Dutch plugin language pack. * $ wp language plugin install hello-dolly nl_NL * Success: Language installed. * * # Uninstall the Dutch plugin language pack. * $ wp language plugin uninstall hello-dolly nl_NL * Success: Language uninstalled. * * # List installed plugin language packages. * $ wp language plugin list --status=installed * +----------+--------------+-------------+-----------+-----------+---------------------+ * | language | english_name | native_name | status | update | updated | * +----------+--------------+-------------+-----------+-----------+---------------------+ * | nl_NL | Dutch | Nederlands | installed | available | 2016-05-13 08:12:50 | * +----------+--------------+-------------+-----------+-----------+---------------------+ */ class Plugin_Language_Command extends WP_CLI\CommandWithTranslation { protected $obj_type = 'plugins'; protected $obj_fields = array( 'plugin', 'language', 'english_name', 'native_name', 'status', 'update', 'updated', ); /** * Lists all available languages for one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to list languages for. * * [--all] * : If set, available languages for all plugins will be listed. * * [--field=<field>] * : Display the value of a single field. * * [--<field>=<value>] * : Filter results by key=value pairs. * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each translation: * * * plugin * * language * * english_name * * native_name * * status * * update * * updated * * ## EXAMPLES * * # List language,english_name,status fields of available languages. * $ wp language plugin list --fields=language,english_name,status * +----------------+-------------------------+-------------+ * | language | english_name | status | * +----------------+-------------------------+-------------+ * | ar | Arabic | uninstalled | * | ary | Moroccan Arabic | uninstalled | * | az | Azerbaijani | uninstalled | * * @subcommand list */ public function list_( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && empty( $args ) ) { WP_CLI::error( 'Please specify one or more plugins, or use --all.' ); } if ( $all ) { $args = array_map( '\WP_CLI\Utils\get_plugin_name', array_keys( $this->get_all_plugins() ) ); if ( empty( $args ) ) { WP_CLI::success( 'No plugins installed.' ); return; } } $updates = $this->get_translation_updates(); $current_locale = get_locale(); $translations = array(); foreach ( $args as $plugin ) { $installed_translations = $this->get_installed_languages( $plugin ); $available_translations = $this->get_all_languages( $plugin ); foreach ( $available_translations as $translation ) { $translation['plugin'] = $plugin; $translation['status'] = in_array( $translation['language'], $installed_translations, true ) ? 'installed' : 'uninstalled'; if ( $current_locale === $translation['language'] ) { $translation['status'] = 'active'; } $filter_args = array( 'language' => $translation['language'], 'type' => 'plugin', 'slug' => $plugin, ); $update = wp_list_filter( $updates, $filter_args ); $translation['update'] = $update ? 'available' : 'none'; // Support features like --status=active. foreach ( array_keys( $translation ) as $field ) { if ( isset( $assoc_args[ $field ] ) && $assoc_args[ $field ] !== $translation[ $field ] ) { continue 2; } } $translations[] = $translation; } } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $translations ); } /** * Checks if a given language is installed. * * Returns exit code 0 when installed, 1 when uninstalled. * * ## OPTIONS * * <plugin> * : Plugin to check for. * * <language>... * : The language code to check. * * ## EXAMPLES * * # Check whether the German language is installed for Akismet; exit status 0 if installed, otherwise 1. * $ wp language plugin is-installed akismet de_DE * $ echo $? * 1 * * @subcommand is-installed */ public function is_installed( $args, $assoc_args = array() ) { $plugin = array_shift( $args ); $language_codes = (array) $args; $available = $this->get_installed_languages( $plugin ); foreach ( $language_codes as $language_code ) { if ( ! in_array( $language_code, $available, true ) ) { \WP_CLI::halt( 1 ); } } \WP_CLI::halt( 0 ); } /** * Installs a given language for a plugin. * * Downloads the language pack from WordPress.org. * * ## OPTIONS * * [<plugin>] * : Plugin to install language for. * * [--all] * : If set, languages for all plugins will be installed. * * <language>... * : Language code to install. * * [--format=<format>] * : Render output in a particular format. Used when installing languages for all plugins. * --- * default: table * options: * - table * - csv * - json * - summary * --- * * ## EXAMPLES * * # Install the Japanese language for Akismet. * $ wp language plugin install akismet ja * Downloading translation from https://downloads.wordpress.org/translation/plugin/akismet/4.0.3/ja.zip... * Unpacking the update... * Installing the latest version... * Translation updated successfully. * Language 'ja' installed. * Success: Installed 1 of 1 languages. * * @subcommand install */ public function install( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && count( $args ) < 2 ) { \WP_CLI::error( 'Please specify a plugin, or use --all.' ); } if ( $all ) { $this->install_many( $args, $assoc_args ); } else { $this->install_one( $args, $assoc_args ); } } /** * Installs translations for a plugin. * * @param array $args Runtime arguments. * @param array $assoc_args Runtime arguments. */ private function install_one( $args, $assoc_args ) { $plugin = array_shift( $args ); $language_codes = (array) $args; $count = count( $language_codes ); $available = $this->get_installed_languages( $plugin ); $successes = 0; $errors = 0; $skips = 0; foreach ( $language_codes as $language_code ) { if ( in_array( $language_code, $available, true ) ) { \WP_CLI::log( "Language '{$language_code}' already installed." ); $skips++; } else { $response = $this->download_language_pack( $language_code, $plugin ); if ( is_wp_error( $response ) ) { \WP_CLI::warning( $response ); \WP_CLI::log( "Language '{$language_code}' not installed." ); // Skip if translation is not yet available. if ( 'not_found' === $response->get_error_code() ) { $skips++; } else { $errors++; } } else { \WP_CLI::log( "Language '{$language_code}' installed." ); $successes++; } } } \WP_CLI\Utils\report_batch_operation_results( 'language', 'install', $count, $successes, $errors, $skips ); } /** * Installs translations for all installed plugins. * * @param array $args Runtime arguments. * @param array $assoc_args Runtime arguments. */ private function install_many( $args, $assoc_args ) { $language_codes = (array) $args; $plugins = $this->get_all_plugins(); if ( empty( $assoc_args['format'] ) ) { $assoc_args['format'] = 'table'; } if ( in_array( $assoc_args['format'], array( 'json', 'csv' ), true ) ) { $logger = new \WP_CLI\Loggers\Quiet(); \WP_CLI::set_logger( $logger ); } if ( empty( $plugins ) ) { \WP_CLI::success( 'No plugins installed.' ); return; } $count = count( $plugins ) * count( $language_codes ); $results = array(); $successes = 0; $errors = 0; $skips = 0; foreach ( $plugins as $plugin_path => $plugin_details ) { $plugin_name = \WP_CLI\Utils\get_plugin_name( $plugin_path ); $available = $this->get_installed_languages( $plugin_name ); foreach ( $language_codes as $language_code ) { $result = [ 'name' => $plugin_name, 'locale' => $language_code, ]; if ( in_array( $language_code, $available, true ) ) { \WP_CLI::log( "Language '{$language_code}' for '{$plugin_details['Name']}' already installed." ); $result['status'] = 'already installed'; $skips++; } else { $response = $this->download_language_pack( $language_code, $plugin_name ); if ( is_wp_error( $response ) ) { \WP_CLI::warning( $response ); \WP_CLI::log( "Language '{$language_code}' for '{$plugin_details['Name']}' not installed." ); if ( 'not_found' === $response->get_error_code() ) { $result['status'] = 'not available'; $skips++; } else { $result['status'] = 'not installed'; $errors++; } } else { \WP_CLI::log( "Language '{$language_code}' for '{$plugin_details['Name']}' installed." ); $result['status'] = 'installed'; $successes++; } } $results[] = (object) $result; } } if ( 'summary' !== $assoc_args['format'] ) { \WP_CLI\Utils\format_items( $assoc_args['format'], $results, array( 'name', 'locale', 'status' ) ); } \WP_CLI\Utils\report_batch_operation_results( 'language', 'install', $count, $successes, $errors, $skips ); } /** * Uninstalls a given language for a plugin. * * ## OPTIONS * * <plugin> * : Plugin to uninstall language for. * * <language>... * : Language code to uninstall. * * ## EXAMPLES * * $ wp language plugin uninstall hello-dolly ja * Success: Language uninstalled. * * @subcommand uninstall */ public function uninstall( $args, $assoc_args ) { /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $plugin = array_shift( $args ); $language_codes = (array) $args; $current_locale = get_locale(); $dir = WP_LANG_DIR . "/$this->obj_type"; $files = scandir( $dir ); if ( ! $files ) { \WP_CLI::error( 'No files found in language directory.' ); } // As of WP 4.0, no API for deleting a language pack WP_Filesystem(); $available = $this->get_installed_languages( $plugin ); foreach ( $language_codes as $language_code ) { if ( ! in_array( $language_code, $available, true ) ) { \WP_CLI::error( 'Language not installed.' ); } if ( $language_code === $current_locale ) { \WP_CLI::warning( "The '{$language_code}' language is active." ); exit; } if ( $wp_filesystem->delete( "{$dir}/{$plugin}-{$language_code}.po" ) && $wp_filesystem->delete( "{$dir}/{$plugin}-{$language_code}.mo" ) ) { \WP_CLI::success( 'Language uninstalled.' ); } else { \WP_CLI::error( "Couldn't uninstall language." ); } } } /** * Updates installed languages for one or more plugins. * * ## OPTIONS * * [<plugin>...] * : One or more plugins to update languages for. * * [--all] * : If set, languages for all plugins will be updated. * * [--dry-run] * : Preview which translations would be updated. * * ## EXAMPLES * * $ wp language plugin update --all * Updating 'Japanese' translation for Akismet 3.1.11... * Downloading translation from https://downloads.wordpress.org/translation/plugin/akismet/3.1.11/ja.zip... * Translation updated successfully. * Success: Updated 1/1 translation. * * @subcommand update */ public function update( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && empty( $args ) ) { WP_CLI::error( 'Please specify one or more plugins, or use --all.' ); } if ( $all ) { $args = array_map( '\WP_CLI\Utils\get_plugin_name', array_keys( $this->get_all_plugins() ) ); if ( empty( $args ) ) { WP_CLI::success( 'No plugins installed.' ); return; } } parent::update( $args, $assoc_args ); } /** * Gets all available plugins. * * Uses the same filter core uses in plugins.php to determine which plugins * should be available to manage through the WP_Plugins_List_Table class. * * @return array */ private function get_all_plugins() { // phpcs:ignore WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Using WP native hook. return apply_filters( 'all_plugins', get_plugins() ); } } <?php class Site_Switch_Language_Command extends WP_CLI\CommandWithTranslation { protected $obj_type = 'core'; /** * Activates a given language. * * ## OPTIONS * * <language> * : Language code to activate. * * ## EXAMPLES * * $ wp site switch-language ja * Success: Language activated. * * @throws WP_CLI\ExitException */ public function __invoke( $args, $assoc_args ) { list( $language_code ) = $args; $available = $this->get_installed_languages(); if ( ! in_array( $language_code, $available, true ) ) { WP_CLI::error( 'Language not installed.' ); } if ( 'en_US' === $language_code ) { $language_code = ''; } if ( get_locale() === $language_code ) { WP_CLI::warning( "Language '{$language_code}' already active." ); return; } update_option( 'WPLANG', $language_code ); WP_CLI::success( 'Language activated.' ); } } <?php /** * Installs, activates, and manages theme language packs. * * ## EXAMPLES * * # Install the Dutch theme language pack. * $ wp language theme install twentyten nl_NL * Success: Language installed. * * # Uninstall the Dutch theme language pack. * $ wp language theme uninstall twentyten nl_NL * Success: Language uninstalled. * * # List installed theme language packages. * $ wp language theme list --status=installed * +----------+--------------+-------------+-----------+-----------+---------------------+ * | language | english_name | native_name | status | update | updated | * +----------+--------------+-------------+-----------+-----------+---------------------+ * | nl_NL | Dutch | Nederlands | installed | available | 2016-05-13 08:12:50 | * +----------+--------------+-------------+-----------+-----------+---------------------+ */ class Theme_Language_Command extends WP_CLI\CommandWithTranslation { protected $obj_type = 'themes'; protected $obj_fields = array( 'theme', 'language', 'english_name', 'native_name', 'status', 'update', 'updated', ); /** * Lists all available languages for one or more themes. * * ## OPTIONS * * [<theme>...] * : One or more themes to list languages for. * * [--all] * : If set, available languages for all themes will be listed. * * [--field=<field>] * : Display the value of a single field. * * [--<field>=<value>] * : Filter results by key=value pairs. * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each translation: * * * theme * * language * * english_name * * native_name * * status * * update * * updated * * ## EXAMPLES * * # List language,english_name,status fields of available languages. * $ wp language theme list --fields=language,english_name,status * +----------------+-------------------------+-------------+ * | language | english_name | status | * +----------------+-------------------------+-------------+ * | ar | Arabic | uninstalled | * | ary | Moroccan Arabic | uninstalled | * | az | Azerbaijani | uninstalled | * * @subcommand list */ public function list_( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && empty( $args ) ) { WP_CLI::error( 'Please specify one or more themes, or use --all.' ); } if ( $all ) { $args = array_map( function( $file ) { return \WP_CLI\Utils\get_theme_name( $file ); }, array_keys( wp_get_themes() ) ); if ( empty( $args ) ) { WP_CLI::success( 'No themes installed.' ); return; } } $updates = $this->get_translation_updates(); $current_locale = get_locale(); $translations = array(); foreach ( $args as $theme ) { $installed_translations = $this->get_installed_languages( $theme ); $available_translations = $this->get_all_languages( $theme ); foreach ( $available_translations as $translation ) { $translation['theme'] = $theme; $translation['status'] = in_array( $translation['language'], $installed_translations, true ) ? 'installed' : 'uninstalled'; if ( $current_locale === $translation['language'] ) { $translation['status'] = 'active'; } $filter_args = array( 'language' => $translation['language'], 'type' => 'theme', 'slug' => $theme, ); $update = wp_list_filter( $updates, $filter_args ); $translation['update'] = $update ? 'available' : 'none'; // Support features like --status=active. foreach ( array_keys( $translation ) as $field ) { if ( isset( $assoc_args[ $field ] ) && $assoc_args[ $field ] !== $translation[ $field ] ) { continue 2; } } $translations[] = $translation; } } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $translations ); } /** * Checks if a given language is installed. * * Returns exit code 0 when installed, 1 when uninstalled. * * ## OPTIONS * * <theme> * : Theme to check for. * * <language>... * : The language code to check. * * ## EXAMPLES * * # Check whether the German language is installed for Twenty Seventeen; exit status 0 if installed, otherwise 1. * $ wp language theme is-installed twentyseventeen de_DE * $ echo $? * 1 * * @subcommand is-installed */ public function is_installed( $args, $assoc_args = array() ) { $theme = array_shift( $args ); $language_codes = (array) $args; $available = $this->get_installed_languages( $theme ); foreach ( $language_codes as $language_code ) { if ( ! in_array( $language_code, $available, true ) ) { \WP_CLI::halt( 1 ); } } \WP_CLI::halt( 0 ); } /** * Installs a given language for a theme. * * Downloads the language pack from WordPress.org. * * ## OPTIONS * * [<theme>] * : Theme to install language for. * * [--all] * : If set, languages for all themes will be installed. * * <language>... * : Language code to install. * * [--format=<format>] * : Render output in a particular format. Used when installing languages for all themes. * --- * default: table * options: * - table * - csv * - json * - summary * --- * * ## EXAMPLES * * # Install the Japanese language for Twenty Seventeen. * $ wp language theme install twentyseventeen ja * Downloading translation from https://downloads.wordpress.org/translation/theme/twentyseventeen/1.3/ja.zip... * Unpacking the update... * Installing the latest version... * Translation updated successfully. * Language 'ja' installed. * Success: Installed 1 of 1 languages. * * @subcommand install */ public function install( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && count( $args ) < 2 ) { \WP_CLI::error( 'Please specify a theme, or use --all.' ); } if ( $all ) { $this->install_many( $args, $assoc_args ); } else { $this->install_one( $args, $assoc_args ); } } /** * Installs translations for a theme. * * @param array $args Runtime arguments. * @param array $assoc_args Runtime arguments. */ private function install_one( $args, $assoc_args ) { $theme = array_shift( $args ); $language_codes = (array) $args; $count = count( $language_codes ); $available = $this->get_installed_languages( $theme ); $successes = 0; $errors = 0; $skips = 0; foreach ( $language_codes as $language_code ) { if ( in_array( $language_code, $available, true ) ) { \WP_CLI::log( "Language '{$language_code}' already installed." ); $skips++; } else { $response = $this->download_language_pack( $language_code, $theme ); if ( is_wp_error( $response ) ) { \WP_CLI::warning( $response ); \WP_CLI::log( "Language '{$language_code}' not installed." ); // Skip if translation is not yet available. if ( 'not_found' === $response->get_error_code() ) { $skips++; } else { $errors++; } } else { \WP_CLI::log( "Language '{$language_code}' installed." ); $successes++; } } } \WP_CLI\Utils\report_batch_operation_results( 'language', 'install', $count, $successes, $errors, $skips ); } /** * Installs translations for all installed themes. * * @param array $args Runtime arguments. * @param array $assoc_args Runtime arguments. */ private function install_many( $args, $assoc_args ) { $language_codes = (array) $args; $themes = wp_get_themes(); if ( empty( $assoc_args['format'] ) ) { $assoc_args['format'] = 'table'; } if ( in_array( $assoc_args['format'], array( 'json', 'csv' ), true ) ) { $logger = new \WP_CLI\Loggers\Quiet(); \WP_CLI::set_logger( $logger ); } if ( empty( $themes ) ) { \WP_CLI::success( 'No themes installed.' ); return; } $count = count( $themes ) * count( $language_codes ); $results = array(); $successes = 0; $errors = 0; $skips = 0; foreach ( $themes as $theme_path => $theme_details ) { $theme_name = \WP_CLI\Utils\get_theme_name( $theme_path ); $available = $this->get_installed_languages( $theme_name ); foreach ( $language_codes as $language_code ) { $result = [ 'name' => $theme_name, 'locale' => $language_code, ]; if ( in_array( $language_code, $available, true ) ) { \WP_CLI::log( "Language '{$language_code}' for '{$theme_details['Name']}' already installed." ); $result['status'] = 'already installed'; $skips++; } else { $response = $this->download_language_pack( $language_code, $theme_name ); if ( is_wp_error( $response ) ) { \WP_CLI::warning( $response ); \WP_CLI::log( "Language '{$language_code}' for '{$theme_details['Name']}' not installed." ); if ( 'not_found' === $response->get_error_code() ) { $result['status'] = 'not available'; $skips++; } else { $result['status'] = 'not installed'; $errors++; } } else { \WP_CLI::log( "Language '{$language_code}' for '{$theme_details['Name']}' installed." ); $result['status'] = 'installed'; $successes++; } } $results[] = (object) $result; } } if ( 'summary' !== $assoc_args['format'] ) { \WP_CLI\Utils\format_items( $assoc_args['format'], $results, array( 'name', 'locale', 'status' ) ); } \WP_CLI\Utils\report_batch_operation_results( 'language', 'install', $count, $successes, $errors, $skips ); } /** * Uninstalls a given language for a theme. * * ## OPTIONS * * <theme> * : Theme to uninstall language for. * * <language>... * : Language code to uninstall. * * ## EXAMPLES * * $ wp language theme uninstall twentyten ja * Success: Language uninstalled. * * @subcommand uninstall */ public function uninstall( $args, $assoc_args ) { /** @var WP_Filesystem_Base $wp_filesystem */ global $wp_filesystem; $theme = array_shift( $args ); $language_codes = (array) $args; $current_locale = get_locale(); $dir = WP_LANG_DIR . "/$this->obj_type"; $files = scandir( $dir ); if ( ! $files ) { \WP_CLI::error( 'No files found in language directory.' ); } // As of WP 4.0, no API for deleting a language pack WP_Filesystem(); $available = $this->get_installed_languages( $theme ); foreach ( $language_codes as $language_code ) { if ( ! in_array( $language_code, $available, true ) ) { WP_CLI::error( 'Language not installed.' ); } if ( $language_code === $current_locale ) { WP_CLI::warning( "The '{$language_code}' language is active." ); exit; } if ( $wp_filesystem->delete( "{$dir}/{$theme}-{$language_code}.po" ) && $wp_filesystem->delete( "{$dir}/{$theme}-{$language_code}.mo" ) ) { WP_CLI::success( 'Language uninstalled.' ); } else { WP_CLI::error( "Couldn't uninstall language." ); } } } /** * Updates installed languages for one or more themes. * * ## OPTIONS * * [<theme>...] * : One or more themes to update languages for. * * [--all] * : If set, languages for all themes will be updated. * * [--dry-run] * : Preview which translations would be updated. * * ## EXAMPLES * * $ wp language theme update --all * Updating 'Japanese' translation for Twenty Fifteen 1.5... * Downloading translation from https://downloads.wordpress.org/translation/theme/twentyfifteen/1.5/ja.zip... * Translation updated successfully. * Success: Updated 1/1 translation. * * @subcommand update */ public function update( $args, $assoc_args ) { $all = \WP_CLI\Utils\get_flag_value( $assoc_args, 'all', false ); if ( ! $all && empty( $args ) ) { WP_CLI::error( 'Please specify one or more themes, or use --all.' ); } if ( $all ) { $args = array_map( '\WP_CLI\Utils\get_theme_name', array_keys( wp_get_themes() ) ); if ( empty( $args ) ) { WP_CLI::success( 'No themes installed.' ); return; } } parent::update( $args, $assoc_args ); } } <?php use WP_CLI\Dispatcher\CommandNamespace; /** * Installs, activates, and manages language packs. * * ## EXAMPLES * * # Install the Dutch core language pack. * $ wp language core install nl_NL * Success: Language installed. * * # Activate the Dutch core language pack. * $ wp language core activate nl_NL * Success: Language activated. * * # Install the Dutch language pack for Twenty Seventeen. * $ wp language theme install twentyseventeen nl_NL * Success: Language installed. * * # Install the Dutch language pack for Akismet. * $ wp language plugin install akismet nl_NL * Success: Language installed. */ class Language_Namespace extends CommandNamespace { } <?php /** * Installs, activates, and manages core language packs. * * ## EXAMPLES * * # Install the Dutch core language pack. * $ wp language core install nl_NL * Success: Language installed. * * # Activate the Dutch core language pack. * $ wp language core activate nl_NL * Success: Language activated. * * # Uninstall the Dutch core language pack. * $ wp language core uninstall nl_NL * Success: Language uninstalled. * * # List installed core language packages. * $ wp language core list --status=installed * +----------+--------------+-------------+-----------+-----------+---------------------+ * | language | english_name | native_name | status | update | updated | * +----------+--------------+-------------+-----------+-----------+---------------------+ * | nl_NL | Dutch | Nederlands | installed | available | 2016-05-13 08:12:50 | * +----------+--------------+-------------+-----------+-----------+---------------------+ */ class Core_Language_Command extends WP_CLI\CommandWithTranslation { protected $obj_type = 'core'; protected $obj_fields = array( 'language', 'english_name', 'native_name', 'status', 'update', 'updated', ); /** * Lists all available languages. * * ## OPTIONS * * [--field=<field>] * : Display the value of a single field * * [--<field>=<value>] * : Filter results by key=value pairs. * * [--fields=<fields>] * : Limit the output to specific fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each translation: * * * language * * english_name * * native_name * * status * * update * * updated * * ## EXAMPLES * * # List language,english_name,status fields of available languages. * $ wp language core list --fields=language,english_name,status * +----------------+-------------------------+-------------+ * | language | english_name | status | * +----------------+-------------------------+-------------+ * | ar | Arabic | uninstalled | * | ary | Moroccan Arabic | uninstalled | * | az | Azerbaijani | uninstalled | * * @subcommand list */ public function list_( $args, $assoc_args ) { $translations = $this->get_all_languages(); $available = $this->get_installed_languages(); $updates = $this->get_translation_updates(); $current_locale = get_locale(); $translations = array_map( function( $translation ) use ( $available, $current_locale, $updates ) { $translation['status'] = 'uninstalled'; if ( in_array( $translation['language'], $available, true ) ) { $translation['status'] = 'installed'; } if ( $current_locale === $translation['language'] ) { $translation['status'] = 'active'; } $update = wp_list_filter( $updates, array( 'language' => $translation['language'] ) ); if ( $update ) { $translation['update'] = 'available'; } else { $translation['update'] = 'none'; } return $translation; }, $translations ); foreach ( $translations as $key => $translation ) { foreach ( array_keys( $translation ) as $field ) { if ( isset( $assoc_args[ $field ] ) && $assoc_args[ $field ] !== $translation[ $field ] ) { unset( $translations[ $key ] ); } } } $formatter = $this->get_formatter( $assoc_args ); $formatter->display_items( $translations ); } /** * Checks if a given language is installed. * * Returns exit code 0 when installed, 1 when uninstalled. * * ## OPTIONS * * <language> * : The language code to check. * * ## EXAMPLES * * # Check whether the German language is installed; exit status 0 if installed, otherwise 1. * $ wp language core is-installed de_DE * $ echo $? * 1 * * @subcommand is-installed */ public function is_installed( $args, $assoc_args = array() ) { list( $language_code ) = $args; $available = $this->get_installed_languages(); if ( in_array( $language_code, $available, true ) ) { \WP_CLI::halt( 0 ); } else { \WP_CLI::halt( 1 ); } } /** * Installs a given language. * * Downloads the language pack from WordPress.org. * * ## OPTIONS * * <language>... * : Language code to install. * * [--activate] * : If set, the language will be activated immediately after install. * * ## EXAMPLES * * # Install the Japanese language. * $ wp language core install ja * Downloading translation from https://downloads.wordpress.org/translation/core/4.9.8/ja.zip... * Unpacking the update... * Installing the latest version... * Translation updated successfully. * Language 'ja' installed. * Success: Installed 1 of 1 languages. * * @subcommand install */ public function install( $args, $assoc_args ) { $language_codes = (array) $args; $count = count( $language_codes ); if ( $count > 1 && in_array( true, $assoc_args, true ) ) { WP_CLI::error( 'Only a single language can be active.' ); } $available = $this->get_installed_languages(); $successes = 0; $errors = 0; $skips = 0; foreach ( $language_codes as $language_code ) { if ( in_array( $language_code, $available, true ) ) { \WP_CLI::log( "Language '{$language_code}' already installed." ); $skips++; } else { $response = $this->download_language_pack( $language_code ); if ( is_wp_error( $response ) ) { \WP_CLI::warning( $response ); \WP_CLI::log( "Language '{$language_code}' not installed." ); // Skip if translation is not yet available. if ( 'not_found' === $response->get_error_code() ) { $skips++; } else { $errors++; } } else { \WP_CLI::log( "Language '{$language_code}' installed." ); $successes++; } } if ( WP_CLI\Utils\get_flag_value( $assoc_args, 'activate' ) ) { $this->activate_language( $language_code ); } } \WP_CLI\Utils\report_batch_operation_results( 'language', 'install', $count, $successes, $errors, $skips ); } /** * Uninstalls a given language. * * ## OPTIONS * * <language>... * : Language code to uninstall. * * ## EXAMPLES * * $ wp language core uninstall ja * Success: Language uninstalled. * * @subcommand uninstall * @throws WP_CLI\ExitException */ public function uninstall( $args, $assoc_args ) { global $wp_filesystem; $language_codes = (array) $args; $available = $this->get_installed_languages(); foreach ( $language_codes as $language_code ) { if ( ! in_array( $language_code, $available, true ) ) { WP_CLI::error( 'Language not installed.' ); } $dir = 'core' === $this->obj_type ? '' : "/$this->obj_type"; $files = scandir( WP_LANG_DIR . $dir ); if ( ! $files ) { WP_CLI::error( 'No files found in language directory.' ); } $current_locale = get_locale(); if ( $language_code === $current_locale ) { WP_CLI::warning( "The '{$language_code}' language is active." ); exit; } // As of WP 4.0, no API for deleting a language pack WP_Filesystem(); $deleted = false; foreach ( $files as $file ) { if ( '.' === $file[0] || is_dir( $file ) ) { continue; } $extension_length = strlen( $language_code ) + 4; $ending = substr( $file, -$extension_length ); if ( ! in_array( $file, array( $language_code . '.po', $language_code . '.mo' ), true ) && ! in_array( $ending, array( '-' . $language_code . '.po', '-' . $language_code . '.mo' ), true ) ) { continue; } /** @var WP_Filesystem_Base $wp_filesystem */ $deleted = $wp_filesystem->delete( WP_LANG_DIR . $dir . '/' . $file ); } if ( $deleted ) { WP_CLI::success( 'Language uninstalled.' ); } else { WP_CLI::error( "Couldn't uninstall language." ); } } } /** * Updates installed languages for core. * * ## OPTIONS * * [--dry-run] * : Preview which translations would be updated. * * ## EXAMPLES * * $ wp language core update * Updating 'Japanese' translation for WordPress 4.9.2... * Downloading translation from https://downloads.wordpress.org/translation/core/4.9.2/ja.zip... * Translation updated successfully. * Success: Updated 1/1 translation. * * @subcommand update */ public function update( $args, $assoc_args ) { // phpcs:ignore Generic.CodeAnalysis.UselessOverridingMethod.Found -- Overruling the documentation, so not useless ;-). parent::update( $args, $assoc_args ); } /** * Activates a given language. * * ## OPTIONS * * <language> * : Language code to activate. * * ## EXAMPLES * * $ wp language core activate ja * Success: Language activated. * * @subcommand activate * @throws WP_CLI\ExitException */ public function activate( $args, $assoc_args ) { \WP_CLI::warning( 'This command is deprecated. use wp site switch-language instead' ); list( $language_code ) = $args; $this->activate_language( $language_code ); } private function activate_language( $language_code ) { $available = $this->get_installed_languages(); if ( ! in_array( $language_code, $available, true ) ) { WP_CLI::error( 'Language not installed.' ); } if ( 'en_US' === $language_code ) { $language_code = ''; } if ( get_locale() === $language_code ) { WP_CLI::warning( "Language '{$language_code}' already active." ); return; } update_option( 'WPLANG', $language_code ); WP_CLI::success( 'Language activated.' ); } } <?php namespace WP_CLI; use WP_CLI; use WP_CLI_Command; /** * Base class for WP-CLI commands that deal with translations * * @package wp-cli */ abstract class CommandWithTranslation extends WP_CLI_Command { protected $obj_type; protected $obj_fields; /** * Callback to sort array by a 'language' key. */ protected function sort_translations_callback( $a, $b ) { return strnatcasecmp( $a['language'], $b['language'] ); } /** * Updates installed languages for the current object type. */ public function update( $args, $assoc_args ) { $updates = $this->get_translation_updates(); if ( empty( $updates ) ) { WP_CLI::success( 'Translations are up to date.' ); return; } if ( empty( $args ) ) { $args = array( null ); // Used for core. } $upgrader = 'WP_CLI\\LanguagePackUpgrader'; $results = array(); $num_to_update = 0; foreach ( $args as $slug ) { // Gets a list of all languages. $all_languages = $this->get_all_languages( $slug ); $updates_per_type = array(); // Formats the updates list. foreach ( $updates as $update ) { if ( null !== $slug && $update->slug !== $slug ) { continue; } $name = 'WordPress'; // Core. if ( 'plugin' === $update->type ) { $plugins = get_plugins( '/' . $update->slug ); $plugin_data = array_shift( $plugins ); $name = $plugin_data['Name']; } elseif ( 'theme' === $update->type ) { $theme_data = wp_get_theme( $update->slug ); $name = $theme_data['Name']; } // Gets the translation data. $translation = wp_list_filter( $all_languages, array( 'language' => $update->language ) ); $translation = (object) reset( $translation ); $update->Type = ucfirst( $update->type ); $update->Name = $name; $update->Version = $update->version; if ( isset( $translation->english_name ) ) { $update->Language = $translation->english_name; } if ( ! isset( $updates_per_type[ $update->type ] ) ) { $updates_per_type[ $update->type ] = array(); } $updates_per_type[ $update->type ][] = $update; } $obj_type = rtrim( $this->obj_type, 's' ); $available_updates = isset( $updates_per_type[ $obj_type ] ) ? $updates_per_type[ $obj_type ] : null; if ( ! is_array( $available_updates ) ) { continue; } $num_to_update += count( $available_updates ); if ( ! Utils\get_flag_value( $assoc_args, 'dry-run' ) ) { // Update translations. foreach ( $available_updates as $update ) { WP_CLI::line( "Updating '{$update->Language}' translation for {$update->Name} {$update->Version}..." ); $result = Utils\get_upgrader( $upgrader )->upgrade( $update ); $results[] = $result; } } } // Only preview which translations would be updated. if ( Utils\get_flag_value( $assoc_args, 'dry-run' ) ) { $update_count = count( $updates ); WP_CLI::line( sprintf( 'Found %d translation %s that would be processed:', $update_count, WP_CLI\Utils\pluralize( 'update', $update_count ) ) ); Utils\format_items( 'table', $updates, array( 'Type', 'Name', 'Version', 'Language' ) ); return; } $num_updated = count( array_filter( $results ) ); $line = sprintf( "Updated $num_updated/$num_to_update %s.", WP_CLI\Utils\pluralize( 'translation', $num_updated ) ); if ( $num_to_update === $num_updated ) { WP_CLI::success( $line ); } elseif ( $num_updated > 0 ) { WP_CLI::warning( $line ); } else { WP_CLI::error( $line ); } } /** * Get all updates available for all translations. * * @see wp_get_translation_updates() * * @return array */ protected function get_translation_updates() { $available = $this->get_installed_languages(); $func = function() use ( $available ) { return $available; }; switch ( $this->obj_type ) { case 'plugins': add_filter( 'plugins_update_check_locales', $func ); wp_clean_plugins_cache(); // Check for Plugin translation updates. wp_update_plugins(); remove_filter( 'plugins_update_check_locales', $func ); $transient = 'update_plugins'; break; case 'themes': add_filter( 'themes_update_check_locales', $func ); wp_clean_themes_cache(); // Check for Theme translation updates. wp_update_themes(); remove_filter( 'themes_update_check_locales', $func ); $transient = 'update_themes'; break; default: delete_site_transient( 'update_core' ); // Check for Core translation updates. wp_version_check(); $transient = 'update_core'; break; } $updates = array(); $transient = get_site_transient( $transient ); if ( empty( $transient->translations ) ) { return $updates; } foreach ( $transient->translations as $translation ) { $updates[] = (object) $translation; } return $updates; } /** * Download a language pack. * * @see wp_download_language_pack() * * @param string $download Language code to download. * @param string $slug Plugin or theme slug. Not used for core. * @return string|\WP_Error Returns the language code if successfully downloaded, or a WP_Error object on failure. */ protected function download_language_pack( $download, $slug = null ) { $translations = $this->get_all_languages( $slug ); $translation_to_load = null; foreach ( $translations as $translation ) { if ( $translation['language'] === $download ) { $translation_to_load = $translation; break; } } if ( ! $translation_to_load ) { return new \WP_Error( 'not_found', "Language '{$download}' not available." ); } $translation = (object) $translation; $translation->type = rtrim( $this->obj_type, 's' ); // Make sure caching in LanguagePackUpgrader works. if ( ! isset( $translation->slug ) ) { $translation->slug = $slug; } $upgrader = 'WP_CLI\\LanguagePackUpgrader'; $result = Utils\get_upgrader( $upgrader )->upgrade( $translation, array( 'clear_update_cache' => false ) ); if ( is_wp_error( $result ) ) { return $result; } if ( ! $result ) { return new \WP_Error( 'not_installed', "Could not install language '{$download}'." ); } return $translation->language; } /** * Return a list of installed languages. * * @param string $slug Optional. Plugin or theme slug. Defaults to 'default' for core. * * @return array */ protected function get_installed_languages( $slug = 'default' ) { $available = wp_get_installed_translations( $this->obj_type ); $available = ! empty( $available[ $slug ] ) ? array_keys( $available[ $slug ] ) : array(); $available[] = 'en_US'; return $available; } /** * Return a list of all languages. * * @param string $slug Optional. Plugin or theme slug. Not used for core. * * @return array */ protected function get_all_languages( $slug = null ) { require_once ABSPATH . '/wp-admin/includes/translation-install.php'; require ABSPATH . WPINC . '/version.php'; // Include an unmodified $wp_version $args = array( 'version' => $wp_version, ); if ( $slug ) { $args['slug'] = $slug; if ( 'plugins' === $this->obj_type ) { $plugins = get_plugins( '/' . $slug ); $plugin_data = array_shift( $plugins ); if ( isset( $plugin_data['Version'] ) ) { $args['version'] = $plugin_data['Version']; } } elseif ( 'themes' === $this->obj_type ) { $theme_data = wp_get_theme( $slug ); if ( isset( $theme_data['Version'] ) ) { $args['version'] = $theme_data['Version']; } } } $response = translations_api( $this->obj_type, $args ); if ( is_wp_error( $response ) ) { WP_CLI::error( $response ); } $translations = ! empty( $response['translations'] ) ? $response['translations'] : array(); $en_us = array( 'language' => 'en_US', 'english_name' => 'English (United States)', 'native_name' => 'English (United States)', 'updated' => '', ); $translations[] = $en_us; uasort( $translations, array( $this, 'sort_translations_callback' ) ); return $translations; } /** * Get Formatter object based on supplied parameters. * * @param array $assoc_args Parameters passed to command. Determines formatting. * @return Formatter */ protected function get_formatter( &$assoc_args ) { return new Formatter( $assoc_args, $this->obj_fields, $this->obj_type ); } } <?php namespace WP_CLI; use WP_CLI; /** * A Language Pack Upgrader class that caches the download, and uses cached if available * * @package wp-cli */ class LanguagePackUpgrader extends \Language_Pack_Upgrader { /** * Initialize the upgrade strings. * * Makes sure that the strings are always in English. */ public function upgrade_strings() { $switched_locale = function_exists( 'switch_to_locale' ) && switch_to_locale( 'en_US' ); parent::upgrade_strings(); if ( $switched_locale ) { restore_previous_locale(); } } /** * Initialize the generic strings. * * Makes sure that the strings are always in English. */ public function generic_strings() { $switched_locale = function_exists( 'switch_to_locale' ) && switch_to_locale( 'en_US' ); parent::generic_strings(); if ( $switched_locale ) { restore_previous_locale(); } } /** * Caches the download, and uses cached if available. * * @param string $package The URI of the package. If this is the full path to an * existing local file, it will be returned untouched. * @param bool $check_signatures Whether to validate file signatures. Default false. * @param array $hook_extra Extra arguments to pass to the filter hooks. Default empty array. * @return string|\WP_Error The full path to the downloaded package file, or a WP_Error object. */ public function download_package( $package, $check_signatures = false, $hook_extra = [] ) { /** * Filter whether to return the package. * * @since 3.7.0 * @since 5.5.0 Added the `$hook_extra` parameter. * * @param bool $reply Whether to bail without returning the package. Default is false. * @param string $package The package file name. * @param \WP_Upgrader $this The WP_Upgrader instance. * @param array $hook_extra Extra arguments passed to hooked filters. * * @phpcs:disable WordPress.NamingConventions.PrefixAllGlobals.NonPrefixedHooknameFound -- Using WP native hook. */ $reply = apply_filters( 'upgrader_pre_download', false, $package, $this, $hook_extra ); // phpcs:enable if ( false !== $reply ) { return $reply; } // Check if package is a local or remote file. Bail if it's local. if ( ! preg_match( '!^(http|https|ftp)://!i', $package ) && file_exists( $package ) ) { return $package; } if ( empty( $package ) ) { return new \WP_Error( 'no_package', $this->strings['no_package'] ); } $language_update = $this->skin->language_update; $type = $language_update->type; $slug = empty( $language_update->slug ) ? 'default' : $language_update->slug; $updated = strtotime( $language_update->updated ); $version = $language_update->version; $language = $language_update->language; $ext = pathinfo( $package, PATHINFO_EXTENSION ); $temp = \WP_CLI\Utils\get_temp_dir() . uniqid( 'wp_' ) . '.' . $ext; $cache = WP_CLI::get_cache(); $cache_key = "translation/{$type}-{$slug}-{$version}-{$language}-{$updated}.{$ext}"; $cache_file = $cache->has( $cache_key ); if ( $cache_file ) { WP_CLI::log( "Using cached file '$cache_file'..." ); copy( $cache_file, $temp ); return $temp; } $this->skin->feedback( 'downloading_package', $package ); $temp = download_url( $package, 600 ); // 10 minutes ought to be enough for everybody. if ( is_wp_error( $temp ) ) { return $temp; } $cache->import( $cache_key, $temp ); return $temp; } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_eval_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_eval_autoloader ) ) { require_once $wpcli_eval_autoloader; } WP_CLI::add_command( 'eval', 'Eval_Command' ); WP_CLI::add_command( 'eval-file', 'EvalFile_Command' ); <?php use WP_CLI\Utils; class Eval_Command extends WP_CLI_Command { /** * Executes arbitrary PHP code. * * Note: because code is executed within a method, global variables need * to be explicitly globalized. * * ## OPTIONS * * <php-code> * : The code to execute, as a string. * * [--skip-wordpress] * : Execute code without loading WordPress. * * ## EXAMPLES * * # Display WordPress content directory. * $ wp eval 'echo WP_CONTENT_DIR;' * /var/www/wordpress/wp-content * * # Generate a random number. * $ wp eval 'echo rand();' --skip-wordpress * 479620423 * * @when before_wp_load */ public function __invoke( $args, $assoc_args ) { if ( null === Utils\get_flag_value( $assoc_args, 'skip-wordpress' ) ) { WP_CLI::get_runner()->load_wordpress(); } eval( $args[0] ); } } <?php use WP_CLI\Utils; class EvalFile_Command extends WP_CLI_Command { /** * Regular expression pattern to match the shell shebang. * * @var string */ const SHEBANG_PATTERN = '/^(#!.*)$/m'; /** * Loads and executes a PHP file. * * Note: because code is executed within a method, global variables need * to be explicitly globalized. * * ## OPTIONS * * <file> * : The path to the PHP file to execute. Use '-' to run code from STDIN. * * [<arg>...] * : One or more arguments to pass to the file. They are placed in the $args variable. * * [--skip-wordpress] * : Load and execute file without loading WordPress. * * @when before_wp_load * * ## EXAMPLES * * wp eval-file my-code.php value1 value2 */ public function __invoke( $args, $assoc_args ) { $file = array_shift( $args ); if ( '-' !== $file && ! file_exists( $file ) ) { WP_CLI::error( "'$file' does not exist." ); } if ( null === Utils\get_flag_value( $assoc_args, 'skip-wordpress' ) ) { WP_CLI::get_runner()->load_wordpress(); } self::execute_eval( $file, $args ); } /** * Evaluate a provided file. * * @param string $file Filepath to execute, or - for STDIN. * @param mixed $args Array of positional arguments to pass to the file. */ private static function execute_eval( $file, $args ) { if ( '-' === $file ) { eval( '?>' . file_get_contents( 'php://stdin' ) ); } else { $file_contents = file_get_contents( $file ); // Adjust for __FILE__ and __DIR__ magic constants. $file_contents = Utils\replace_path_consts( $file_contents, $file ); // Check for and remove she-bang. if ( 0 === strncmp( $file_contents, '#!', 2 ) ) { $file_contents = preg_replace( static::SHEBANG_PATTERN, '', $file_contents ); } eval( '?>' . $file_contents ); } } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_widget_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_widget_autoloader ) ) { require_once $wpcli_widget_autoloader; } WP_CLI::add_command( 'widget', 'Widget_Command' ); WP_CLI::add_command( 'sidebar', 'Sidebar_Command' ); <?php use WP_CLI\Utils; use WP_CLI\Formatter; /** * Manages widgets, including adding and moving them within sidebars. * * A [widget](https://developer.wordpress.org/themes/functionality/widgets/) adds content and features to a widget area (also called a [sidebar](https://developer.wordpress.org/themes/functionality/sidebars/)). * * ## EXAMPLES * * # List widgets on a given sidebar * $ wp widget list sidebar-1 * +----------+------------+----------+----------------------+ * | name | id | position | options | * +----------+------------+----------+----------------------+ * | meta | meta-6 | 1 | {"title":"Meta"} | * | calendar | calendar-2 | 2 | {"title":"Calendar"} | * +----------+------------+----------+----------------------+ * * # Add a calendar widget to the second position on the sidebar * $ wp widget add calendar sidebar-1 2 * Success: Added widget to sidebar. * * # Update option(s) associated with a given widget * $ wp widget update calendar-1 --title="Calendar" * Success: Widget updated. * * # Delete one or more widgets entirely * $ wp widget delete calendar-2 archive-1 * Success: 2 widgets removed from sidebar. */ class Widget_Command extends WP_CLI_Command { private $fields = [ 'name', 'id', 'position', 'options', ]; /** * Lists widgets associated with a sidebar. * * ## OPTIONS * * <sidebar-id> * : ID for the corresponding sidebar. * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - ids * - json * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each widget: * * * name * * id * * position * * options * * There are no optionally available fields. * * ## EXAMPLES * * $ wp widget list sidebar-1 --fields=name,id --format=csv * name,id * meta,meta-5 * search,search-3 * * @subcommand list */ public function list_( $args, $assoc_args ) { list( $sidebar_id ) = $args; $this->validate_sidebar( $sidebar_id ); $output_widgets = $this->get_sidebar_widgets( $sidebar_id ); if ( ! empty( $assoc_args['format'] ) && 'ids' === $assoc_args['format'] ) { $output_widgets = wp_list_pluck( $output_widgets, 'id' ); } $formatter = new Formatter( $assoc_args, $this->fields ); $formatter->display_items( $output_widgets ); } /** * Adds a widget to a sidebar. * * Creates a new widget entry in the database, and associates it with the * sidebar. * * ## OPTIONS * * <name> * : Widget name. * * <sidebar-id> * : ID for the corresponding sidebar. * * [<position>] * : Widget's current position within the sidebar. Defaults to last * * [--<field>=<value>] * : Widget option to add, with its new value * * ## EXAMPLES * * # Add a new calendar widget to sidebar-1 with title "Calendar" * $ wp widget add calendar sidebar-1 2 --title="Calendar" * Success: Added widget to sidebar. * * @subcommand add */ public function add( $args, $assoc_args ) { list( $name, $sidebar_id ) = $args; $position = Utils\get_flag_value( $args, 2, 1 ) - 1; $this->validate_sidebar( $sidebar_id ); $widget = $this->get_widget_obj( $name ); if ( false === $widget ) { WP_CLI::error( 'Invalid widget type.' ); } /* * Adding a widget is as easy as: * 1. Creating a new widget option * 2. Adding the widget to the sidebar * 3. Positioning appropriately */ $widget_options = $this->get_widget_options( $name ); $option_keys = $widget_options; if ( ! isset( $widget_options['_multiwidget'] ) ) { $widget_options['_multiwidget'] = 1; } unset( $option_keys['_multiwidget'] ); $option_keys = array_keys( $option_keys ); $last_key = array_pop( $option_keys ); $option_index = $last_key + 1; $widget_options[ $option_index ] = $this->sanitize_widget_options( $name, $assoc_args, array() ); $this->update_widget_options( $name, $widget_options ); $widget_id = $name . '-' . $option_index; $this->move_sidebar_widget( $widget_id, null, $sidebar_id, null, $position ); WP_CLI::success( 'Added widget to sidebar.' ); } /** * Updates options for an existing widget. * * ## OPTIONS * * <widget-id> * : Unique ID for the widget * * [--<field>=<value>] * : Field to update, with its new value * * ## EXAMPLES * * # Change calendar-1 widget title to "Our Calendar" * $ wp widget update calendar-1 --title="Our Calendar" * Success: Widget updated. * * @subcommand update */ public function update( $args, $assoc_args ) { list( $widget_id ) = $args; if ( ! $this->validate_sidebar_widget( $widget_id ) ) { WP_CLI::error( "Widget doesn't exist." ); } if ( empty( $assoc_args ) ) { WP_CLI::error( 'No options specified to update.' ); } list( $name, $option_index ) = $this->get_widget_data( $widget_id ); $widget_options = $this->get_widget_options( $name ); $clean_options = $this->sanitize_widget_options( $name, $assoc_args, $widget_options[ $option_index ] ); $widget_options[ $option_index ] = array_merge( (array) $widget_options[ $option_index ], $clean_options ); $this->update_widget_options( $name, $widget_options ); WP_CLI::success( 'Widget updated.' ); } /** * Moves the position of a widget. * * Changes the order of a widget in its existing sidebar, or moves it to a * new sidebar. * * ## OPTIONS * * <widget-id> * : Unique ID for the widget * * [--position=<position>] * : Assign the widget to a new position. * * [--sidebar-id=<sidebar-id>] * : Assign the widget to a new sidebar * * ## EXAMPLES * * # Change position of widget * $ wp widget move recent-comments-2 --position=2 * Success: Widget moved. * * # Move widget to Inactive Widgets * $ wp widget move recent-comments-2 --sidebar-id=wp_inactive_widgets * Success: Widget moved. * * @subcommand move */ public function move( $args, $assoc_args ) { list( $widget_id ) = $args; if ( ! $this->validate_sidebar_widget( $widget_id ) ) { WP_CLI::error( "Widget doesn't exist." ); } if ( empty( $assoc_args['position'] ) && empty( $assoc_args['sidebar-id'] ) ) { WP_CLI::error( 'A new position or new sidebar must be specified.' ); } list( $name, $option_index, $current_sidebar_id, $current_sidebar_index ) = $this->get_widget_data( $widget_id ); $new_sidebar_id = ! empty( $assoc_args['sidebar-id'] ) ? $assoc_args['sidebar-id'] : $current_sidebar_id; $this->validate_sidebar( $new_sidebar_id ); $new_sidebar_index = ! empty( $assoc_args['position'] ) ? $assoc_args['position'] - 1 : $current_sidebar_index; // Moving between sidebars adds to the top. if ( $new_sidebar_id !== $current_sidebar_id && $new_sidebar_index === $current_sidebar_index ) { // Human-readable positions are different than numerically indexed array. $new_sidebar_index = 0; } $this->move_sidebar_widget( $widget_id, $current_sidebar_id, $new_sidebar_id, $current_sidebar_index, $new_sidebar_index ); WP_CLI::success( 'Widget moved.' ); } /** * Deactivates one or more widgets from an active sidebar. * * Moves widgets to Inactive Widgets. * * ## OPTIONS * * <widget-id>... * : Unique ID for the widget(s) * * ## EXAMPLES * * # Deactivate the recent-comments-2 widget. * $ wp widget deactivate recent-comments-2 * Success: 1 widget deactivated. * * @subcommand deactivate */ public function deactivate( $args, $assoc_args ) { $count = 0; $errors = 0; foreach ( $args as $widget_id ) { if ( ! $this->validate_sidebar_widget( $widget_id ) ) { WP_CLI::warning( "Widget '{$widget_id}' doesn't exist." ); $errors++; continue; } list( $name, $option_index, $sidebar_id, $sidebar_index ) = $this->get_widget_data( $widget_id ); if ( 'wp_inactive_widgets' === $sidebar_id ) { WP_CLI::warning( sprintf( "'%s' is already deactivated.", $widget_id ) ); continue; } $this->move_sidebar_widget( $widget_id, $sidebar_id, 'wp_inactive_widgets', $sidebar_index, 0 ); $count++; } Utils\report_batch_operation_results( 'widget', 'deactivate', count( $args ), $count, $errors ); } /** * Deletes one or more widgets from a sidebar. * * ## OPTIONS * * <widget-id>... * : Unique ID for the widget(s) * * ## EXAMPLES * * # Delete the recent-comments-2 widget from its sidebar. * $ wp widget delete recent-comments-2 * Success: Deleted 1 of 1 widgets. * * @subcommand delete */ public function delete( $args, $assoc_args ) { $count = 0; $errors = 0; foreach ( $args as $widget_id ) { if ( ! $this->validate_sidebar_widget( $widget_id ) ) { WP_CLI::warning( "Widget '{$widget_id}' doesn't exist." ); $errors++; continue; } // Remove the widget's settings. list( $name, $option_index, $sidebar_id, $sidebar_index ) = $this->get_widget_data( $widget_id ); $widget_options = $this->get_widget_options( $name ); unset( $widget_options[ $option_index ] ); $this->update_widget_options( $name, $widget_options ); // Remove the widget from the sidebar. $all_widgets = $this->wp_get_sidebars_widgets(); unset( $all_widgets[ $sidebar_id ][ $sidebar_index ] ); $all_widgets[ $sidebar_id ] = array_values( $all_widgets[ $sidebar_id ] ); update_option( 'sidebars_widgets', $all_widgets ); $count++; } Utils\report_batch_operation_results( 'widget', 'delete', count( $args ), $count, $errors ); } /** * Resets sidebar. * * Removes all widgets from the sidebar and places them in Inactive Widgets. * * ## OPTIONS * * [<sidebar-id>...] * : One or more sidebars to reset. * * [--all] * : If set, all sidebars will be reset. * * ## EXAMPLES * * # Reset a sidebar * $ wp widget reset sidebar-1 * Success: Sidebar 'sidebar-1' reset. * * # Reset multiple sidebars * $ wp widget reset sidebar-1 sidebar-2 * Success: Sidebar 'sidebar-1' reset. * Success: Sidebar 'sidebar-2' reset. * * # Reset all sidebars * $ wp widget reset --all * Success: Sidebar 'sidebar-1' reset. * Success: Sidebar 'sidebar-2' reset. * Success: Sidebar 'sidebar-3' reset. */ public function reset( $args, $assoc_args ) { global $wp_registered_sidebars; $all = Utils\get_flag_value( $assoc_args, 'all', false ); // Bail if no arguments and no all flag. if ( ! $all && empty( $args ) ) { WP_CLI::error( 'Please specify one or more sidebars, or use --all.' ); } // Fetch all sidebars if all flag is set. if ( $all ) { $args = array_keys( $wp_registered_sidebars ); } // Sidebar ID wp_inactive_widgets is reserved by WP core for inactive widgets. if ( isset( $args['wp_inactive_widgets'] ) ) { unset( $args['wp_inactive_widgets'] ); } // Check if no registered sidebar. if ( empty( $args ) ) { WP_CLI::error( 'No sidebar registered.' ); } $count = 0; $errors = 0; foreach ( $args as $sidebar_id ) { if ( ! array_key_exists( $sidebar_id, $wp_registered_sidebars ) ) { WP_CLI::warning( sprintf( 'Invalid sidebar: %s', $sidebar_id ) ); $errors++; continue; } $widgets = $this->get_sidebar_widgets( $sidebar_id ); if ( empty( $widgets ) ) { WP_CLI::warning( sprintf( "Sidebar '%s' is already empty.", $sidebar_id ) ); } else { foreach ( $widgets as $widget ) { $widget_id = $widget->id; list( $name, $option_index, $new_sidebar_id, $sidebar_index ) = $this->get_widget_data( $widget_id ); $this->move_sidebar_widget( $widget_id, $new_sidebar_id, 'wp_inactive_widgets', $sidebar_index, 0 ); } WP_CLI::log( sprintf( "Sidebar '%s' reset.", $sidebar_id ) ); $count++; } } Utils\report_batch_operation_results( 'sidebar', 'reset', count( $args ), $count, $errors ); } /** * Checks whether a sidebar is a valid sidebar * * @param string $sidebar_id */ private function validate_sidebar( $sidebar_id ) { global $wp_registered_sidebars; Utils\wp_register_unused_sidebar(); if ( ! array_key_exists( $sidebar_id, $wp_registered_sidebars ) ) { WP_CLI::error( 'Invalid sidebar.' ); } } /** * Checks whether the specified widget is on the sidebar * * @param string $widget_id */ private function validate_sidebar_widget( $widget_id ) { $sidebars_widgets = $this->wp_get_sidebars_widgets(); $widget_exists = false; foreach ( $sidebars_widgets as $sidebar_id => $widgets ) { if ( in_array( $widget_id, $widgets, true ) ) { $widget_exists = true; break; } } return $widget_exists; } /** * Gets the widgets (and their associated data) for a given sidebar * * @param string $sidebar_id * @return array */ private function get_sidebar_widgets( $sidebar_id ) { $all_widgets = $this->wp_get_sidebars_widgets(); if ( empty( $all_widgets[ $sidebar_id ] ) ) { return array(); } $prepared_widgets = array(); foreach ( $all_widgets[ $sidebar_id ] as $key => $widget_id ) { $prepared_widget = new stdClass(); $parts = explode( '-', $widget_id ); $option_index = array_pop( $parts ); $widget_name = implode( '-', $parts ); $prepared_widget->name = $widget_name; $prepared_widget->id = $widget_id; $prepared_widget->position = $key + 1; $widget_options = get_option( 'widget_' . $widget_name ); $prepared_widget->options = $widget_options[ $option_index ]; $prepared_widgets[] = $prepared_widget; } return $prepared_widgets; } /** * Re-implementation of wp_get_sidebars_widgets() * because the original has a nasty global component */ private function wp_get_sidebars_widgets() { $sidebars_widgets = get_option( 'sidebars_widgets', array() ); if ( is_array( $sidebars_widgets ) && isset( $sidebars_widgets['array_version'] ) ) { unset( $sidebars_widgets['array_version'] ); } return $sidebars_widgets; } /** * Gets the widget's name, option index, sidebar, and sidebar index from its ID * * @param string $widget_id * @return array */ private function get_widget_data( $widget_id ) { $parts = explode( '-', $widget_id ); $option_index = array_pop( $parts ); $name = implode( '-', $parts ); $sidebar_id = false; $sidebar_index = false; $all_widgets = $this->wp_get_sidebars_widgets(); foreach ( $all_widgets as $s_id => &$widgets ) { $key = array_search( $widget_id, $widgets, true ); if ( false !== $key ) { $sidebar_id = $s_id; $sidebar_index = $key; break; } } return array( $name, $option_index, $sidebar_id, $sidebar_index ); } /** * Gets the options for a given widget * * @param string $name * @return array */ private function get_widget_options( $name ) { return get_option( 'widget_' . $name, array() ); } /** * Updates the options for a given widget * * @param string $name * @param mixed */ private function update_widget_options( $name, $value ) { update_option( 'widget_' . $name, $value ); } /** * Repositions a widget within a sidebar or move to another sidebar. * * @param string $widget_id * @param string|null $current_sidebar_id * @param string $new_sidebar_id * @param int|null $current_index * @param int $new_index */ private function move_sidebar_widget( $widget_id, $current_sidebar_id, $new_sidebar_id, $current_index, $new_index ) { $all_widgets = $this->wp_get_sidebars_widgets(); $needs_placement = true; // Existing widget if ( $current_sidebar_id && ! is_null( $current_index ) ) { $widgets = $all_widgets[ $current_sidebar_id ]; if ( $current_sidebar_id !== $new_sidebar_id ) { unset( $widgets[ $current_index ] ); } else { $part = array_splice( $widgets, $current_index, 1 ); array_splice( $widgets, $new_index, 0, $part ); $needs_placement = false; } $all_widgets[ $current_sidebar_id ] = array_values( $widgets ); } if ( $needs_placement ) { $widgets = ! empty( $all_widgets[ $new_sidebar_id ] ) ? $all_widgets[ $new_sidebar_id ] : array(); $before = array_slice( $widgets, 0, $new_index, true ); $after = array_slice( $widgets, $new_index, count( $widgets ), true ); $widgets = array_merge( $before, array( $widget_id ), $after ); $all_widgets[ $new_sidebar_id ] = array_values( $widgets ); } update_option( 'sidebars_widgets', $all_widgets ); } /** * Gets a widget's instantiated object based on its name * * @param string $id_base Name of the widget * @return WP_Widget|false */ private function get_widget_obj( $id_base ) { global $wp_widget_factory; $widget = wp_filter_object_list( $wp_widget_factory->widgets, array( 'id_base' => $id_base ) ); if ( empty( $widget ) ) { return false; } return array_pop( $widget ); } /** * Cleans up a widget's options based on its update callback * * @param string $id_base Name of the widget * @param mixed $dirty_options * @param mixed $old_options * @return mixed */ private function sanitize_widget_options( $id_base, $dirty_options, $old_options ) { $widget = $this->get_widget_obj( $id_base ); if ( empty( $widget ) ) { return array(); } // No easy way to determine expected array keys for $dirty_options // because Widget API dependent on the form fields // phpcs:ignore WordPress.PHP.NoSilencedErrors.Discouraged -- Whitelisting due to above reason. return @$widget->update( $dirty_options, $old_options ); } } <?php use WP_CLI\Utils; use WP_CLI\Formatter; /** * Lists registered sidebars. * * A [sidebar](https://developer.wordpress.org/themes/functionality/sidebars/) is any widgetized area of your theme. * * ## EXAMPLES * * # List sidebars * $ wp sidebar list --fields=name,id --format=csv * name,id * "Widget Area",sidebar-1 * "Inactive Widgets",wp_inactive_widgets */ class Sidebar_Command extends WP_CLI_Command { private $fields = [ 'name', 'id', 'description', ]; /** * Lists registered sidebars. * * ## OPTIONS * * [--fields=<fields>] * : Limit the output to specific object fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - ids * - count * - yaml * --- * * ## AVAILABLE FIELDS * * These fields will be displayed by default for each sidebar: * * * name * * id * * description * * These fields are optionally available: * * * class * * before_widget * * after_widget * * before_title * * after_title * * ## EXAMPLES * * $ wp sidebar list --fields=name,id --format=csv * name,id * "Widget Area",sidebar-1 * "Inactive Widgets",wp_inactive_widgets * * @subcommand list */ public function list_( $args, $assoc_args ) { global $wp_registered_sidebars; Utils\wp_register_unused_sidebar(); if ( ! empty( $assoc_args['format'] ) && 'ids' === $assoc_args['format'] ) { $sidebars = wp_list_pluck( $wp_registered_sidebars, 'id' ); } else { $sidebars = $wp_registered_sidebars; } $formatter = new Formatter( $assoc_args, $this->fields ); $formatter->display_items( $sidebars ); } } <?php if ( ! class_exists( 'WP_CLI' ) ) { return; } $wpcli_config_autoloader = dirname( __FILE__ ) . '/vendor/autoload.php'; if ( file_exists( $wpcli_config_autoloader ) ) { require_once $wpcli_config_autoloader; } WP_CLI::add_command( 'config', 'Config_Command' ); <?php use WP_CLI\ExitException; use WP_CLI\Utils; use WP_CLI\WpOrgApi; /** * Generates and reads the wp-config.php file. */ class Config_Command extends WP_CLI_Command { /** * List of characters that are valid for a key name. * * @var string */ const VALID_KEY_CHARACTERS = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!@#$%^&*()-_ []{}<>~`+=,.;:/?|'; /** * List of default constants that are generated by WordPress Core. * * @string */ const DEFAULT_SALT_CONSTANTS = [ 'AUTH_KEY', 'SECURE_AUTH_KEY', 'LOGGED_IN_KEY', 'NONCE_KEY', 'AUTH_SALT', 'SECURE_AUTH_SALT', 'LOGGED_IN_SALT', 'NONCE_SALT', ]; /** * Retrieve the initial locale from the WordPress version file. * * @return string Initial locale if present, or an empty string if not. */ private static function get_initial_locale() { global $wp_local_package; include ABSPATH . '/wp-includes/version.php'; if ( ! empty( $wp_local_package ) ) { return $wp_local_package; } return ''; } /** * Generates a wp-config.php file. * * Creates a new wp-config.php with database constants, and verifies that * the database constants are correct. * * ## OPTIONS * * --dbname=<dbname> * : Set the database name. * * --dbuser=<dbuser> * : Set the database user. * * [--dbpass=<dbpass>] * : Set the database user password. * * [--dbhost=<dbhost>] * : Set the database host. * --- * default: localhost * --- * * [--dbprefix=<dbprefix>] * : Set the database table prefix. * --- * default: wp_ * --- * * [--dbcharset=<dbcharset>] * : Set the database charset. * --- * default: utf8 * --- * * [--dbcollate=<dbcollate>] * : Set the database collation. * --- * default: * --- * * [--locale=<locale>] * : Set the WPLANG constant. Defaults to $wp_local_package variable. * * [--extra-php] * : If set, the command copies additional PHP code into wp-config.php from STDIN. * * [--skip-salts] * : If set, keys and salts won't be generated, but should instead be passed via `--extra-php`. * * [--skip-check] * : If set, the database connection is not checked. * * [--force] * : Overwrites existing files, if present. * * [--insecure] * : Retry API download without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Standard wp-config.php file * $ wp config create --dbname=testing --dbuser=wp --dbpass=securepswd --locale=ro_RO * Success: Generated 'wp-config.php' file. * * # Enable WP_DEBUG and WP_DEBUG_LOG * $ wp config create --dbname=testing --dbuser=wp --dbpass=securepswd --extra-php <<PHP * define( 'WP_DEBUG', true ); * define( 'WP_DEBUG_LOG', true ); * PHP * Success: Generated 'wp-config.php' file. * * # Avoid disclosing password to bash history by reading from password.txt * # Using --prompt=dbpass will prompt for the 'dbpass' argument * $ wp config create --dbname=testing --dbuser=wp --prompt=dbpass < password.txt * Success: Generated 'wp-config.php' file. */ public function create( $_, $assoc_args ) { if ( ! Utils\get_flag_value( $assoc_args, 'force' ) && Utils\locate_wp_config() ) { WP_CLI::error( "The 'wp-config.php' file already exists." ); } $defaults = [ 'dbhost' => 'localhost', 'dbpass' => '', 'dbprefix' => 'wp_', 'dbcharset' => 'utf8', 'dbcollate' => '', 'locale' => self::get_initial_locale(), ]; $assoc_args = array_merge( $defaults, $assoc_args ); if ( preg_match( '|[^a-z0-9_]|i', $assoc_args['dbprefix'] ) ) { WP_CLI::error( '--dbprefix can only contain numbers, letters, and underscores.' ); } $mysql_db_connection_args = [ 'execute' => ';', 'host' => $assoc_args['dbhost'], 'user' => $assoc_args['dbuser'], 'pass' => $assoc_args['dbpass'], ]; // Check DB connection. if ( ! Utils\get_flag_value( $assoc_args, 'skip-check' ) ) { Utils\run_mysql_command( '/usr/bin/env mysql --no-defaults', $mysql_db_connection_args ); } if ( Utils\get_flag_value( $assoc_args, 'extra-php' ) === true ) { $assoc_args['extra-php'] = file_get_contents( 'php://stdin' ); } if ( ! Utils\get_flag_value( $assoc_args, 'skip-salts' ) ) { try { $assoc_args['keys-and-salts'] = true; $assoc_args['auth-key'] = self::unique_key(); $assoc_args['secure-auth-key'] = self::unique_key(); $assoc_args['logged-in-key'] = self::unique_key(); $assoc_args['nonce-key'] = self::unique_key(); $assoc_args['auth-salt'] = self::unique_key(); $assoc_args['secure-auth-salt'] = self::unique_key(); $assoc_args['logged-in-salt'] = self::unique_key(); $assoc_args['nonce-salt'] = self::unique_key(); $assoc_args['wp-cache-key-salt'] = self::unique_key(); } catch ( Exception $e ) { $assoc_args['keys-and-salts'] = false; $assoc_args['keys-and-salts-alt'] = self::fetch_remote_salts( (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ) ); } } if ( Utils\wp_version_compare( '4.0', '<' ) ) { $assoc_args['add-wplang'] = true; } else { $assoc_args['add-wplang'] = false; } $command_root = Utils\phar_safe_path( dirname( __DIR__ ) ); $out = Utils\mustache_render( "{$command_root}/templates/wp-config.mustache", $assoc_args ); $bytes_written = file_put_contents( ABSPATH . 'wp-config.php', $out ); if ( ! $bytes_written ) { WP_CLI::error( "Could not create new 'wp-config.php' file." ); } else { WP_CLI::success( "Generated 'wp-config.php' file." ); } } /** * Launches system editor to edit the wp-config.php file. * * ## EXAMPLES * * # Launch system editor to edit wp-config.php file * $ wp config edit * * # Edit wp-config.php file in a specific editor * $ EDITOR=vim wp config edit * * @when before_wp_load */ public function edit() { $config_path = $this->get_config_path(); $contents = file_get_contents( $config_path ); $r = Utils\launch_editor_for_input( $contents, 'wp-config.php', 'php' ); if ( false === $r ) { WP_CLI::warning( 'No changes made to wp-config.php, aborted.' ); } else { file_put_contents( $config_path, $r ); } } /** * Gets the path to wp-config.php file. * * ## EXAMPLES * * # Get wp-config.php file path * $ wp config path * /home/person/htdocs/project/wp-config.php * * @when before_wp_load */ public function path() { WP_CLI::line( $this->get_config_path() ); } /** * Lists variables, constants, and file includes defined in wp-config.php file. * * ## OPTIONS * * [<filter>...] * : Name or partial name to filter the list by. * * [--fields=<fields>] * : Limit the output to specific fields. Defaults to all fields. * * [--format=<format>] * : Render output in a particular format. * --- * default: table * options: * - table * - csv * - json * - yaml * --- * * [--strict] * : Enforce strict matching when a filter is provided. * * ## EXAMPLES * * # List constants and variables defined in wp-config.php file. * $ wp config list * +------------------+------------------------------------------------------------------+----------+ * | key | value | type | * +------------------+------------------------------------------------------------------+----------+ * | table_prefix | wp_ | variable | * | DB_NAME | wp_cli_test | constant | * | DB_USER | root | constant | * | DB_PASSWORD | root | constant | * | AUTH_KEY | r6+@shP1yO&$)1gdu.hl[/j;7Zrvmt~o;#WxSsa0mlQOi24j2cR,7i+QM/#7S:o^ | constant | * | SECURE_AUTH_KEY | iO-z!_m--YH$Tx2tf/&V,YW*13Z_HiRLqi)d?$o-tMdY+82pK$`T.NYW~iTLW;xp | constant | * +------------------+------------------------------------------------------------------+----------+ * * # List only database user and password from wp-config.php file. * $ wp config list DB_USER DB_PASSWORD --strict * +------------------+-------+----------+ * | key | value | type | * +------------------+-------+----------+ * | DB_USER | root | constant | * | DB_PASSWORD | root | constant | * +------------------+-------+----------+ * * # List all salts from wp-config.php file. * $ wp config list _SALT * +------------------+------------------------------------------------------------------+----------+ * | key | value | type | * +------------------+------------------------------------------------------------------+----------+ * | AUTH_SALT | n:]Xditk+_7>Qi=>BmtZHiH-6/Ecrvl(V5ceeGP:{>?;BT^=[B3-0>,~F5z$(+Q$ | constant | * | SECURE_AUTH_SALT | ?Z/p|XhDw3w}?c.z%|+BAr|(Iv*H%%U+Du&kKR y?cJOYyRVRBeB[2zF-`(>+LCC | constant | * | LOGGED_IN_SALT | +$@(1{b~Z~s}Cs>8Y]6[m6~TnoCDpE>O%e75u}&6kUH!>q:7uM4lxbB6[1pa_X,q | constant | * | NONCE_SALT | _x+F li|QL?0OSQns1_JZ{|Ix3Jleox-71km/gifnyz8kmo=w-;@AE8W,(fP<N}2 | constant | * +------------------+------------------------------------------------------------------+----------+ * * @when before_wp_load * @subcommand list */ public function list_( $args, $assoc_args ) { $path = $this->get_config_path(); $strict = Utils\get_flag_value( $assoc_args, 'strict' ); if ( $strict && empty( $args ) ) { WP_CLI::error( 'The --strict option can only be used in combination with a filter.' ); } $default_fields = [ 'name', 'value', 'type', ]; $defaults = [ 'fields' => implode( ',', $default_fields ), 'format' => 'table', ]; $assoc_args = array_merge( $defaults, $assoc_args ); $values = self::get_wp_config_vars(); if ( ! empty( $args ) ) { $values = $this->filter_values( $values, $args, $strict ); } if ( empty( $values ) ) { WP_CLI::error( "No matching entries found in 'wp-config.php'." ); } Utils\format_items( $assoc_args['format'], $values, $assoc_args['fields'] ); } /** * Gets the value of a specific constant or variable defined in wp-config.php file. * * ## OPTIONS * * <name> * : Name of the wp-config.php constant or variable. * * [--type=<type>] * : Type of config value to retrieve. Defaults to 'all'. * --- * default: all * options: * - constant * - variable * - all * --- * * [--format=<format>] * : Get value in a particular format. * --- * default: var_export * options: * - var_export * - json * - yaml * --- * * ## EXAMPLES * * # Get the table_prefix as defined in wp-config.php file. * $ wp config get table_prefix * wp_ * * @when before_wp_load */ public function get( $args, $assoc_args ) { $path = $this->get_config_path(); list( $name ) = $args; $type = Utils\get_flag_value( $assoc_args, 'type' ); $value = $this->return_value( $name, $type, self::get_wp_config_vars() ); WP_CLI::print_value( $value, $assoc_args ); } /** * Get the array of wp-config.php constants and variables. * * @return array */ private static function get_wp_config_vars() { $wp_cli_original_defined_constants = get_defined_constants(); $wp_cli_original_defined_vars = get_defined_vars(); $wp_cli_original_includes = get_included_files(); // phpcs:ignore Squiz.PHP.Eval.Discouraged -- Don't have another way. eval( WP_CLI::get_runner()->get_wp_config_code() ); $wp_config_vars = self::get_wp_config_diff( get_defined_vars(), $wp_cli_original_defined_vars, 'variable', [ 'wp_cli_original_defined_vars' ] ); $wp_config_constants = self::get_wp_config_diff( get_defined_constants(), $wp_cli_original_defined_constants, 'constant' ); foreach ( $wp_config_vars as $name => $value ) { if ( 'wp_cli_original_includes' === $value['name'] ) { $name_backup = $name; break; } } unset( $wp_config_vars[ $name_backup ] ); $wp_config_vars = array_values( $wp_config_vars ); $wp_config_includes = array_diff( get_included_files(), $wp_cli_original_includes ); $wp_config_includes_array = []; foreach ( $wp_config_includes as $name => $value ) { $wp_config_includes_array[] = [ 'name' => basename( $value ), 'value' => $value, 'type' => 'includes', ]; } return array_merge( $wp_config_vars, $wp_config_constants, $wp_config_includes_array ); } /** * Sets the value of a specific constant or variable defined in wp-config.php file. * * ## OPTIONS * * <name> * : Name of the wp-config.php constant or variable. * * <value> * : Value to set the wp-config.php constant or variable to. * * [--add] * : Add the value if it doesn't exist yet. * This is the default behavior, override with --no-add. * * [--raw] * : Place the value into the wp-config.php file as is, instead of as a quoted string. * * [--anchor=<anchor>] * : Anchor string where additions of new values are anchored around. * Defaults to "/* That's all, stop editing!". * * [--placement=<placement>] * : Where to place the new values in relation to the anchor string. * --- * default: 'before' * options: * - before * - after * --- * * [--separator=<separator>] * : Separator string to put between an added value and its anchor string. * The following escape sequences will be recognized and properly interpreted: '\n' => newline, '\r' => carriage return, '\t' => tab. * Defaults to a single EOL ("\n" on *nix and "\r\n" on Windows). * * [--type=<type>] * : Type of the config value to set. Defaults to 'all'. * --- * default: all * options: * - constant * - variable * - all * --- * * ## EXAMPLES * * # Set the WP_DEBUG constant to true. * $ wp config set WP_DEBUG true --raw * * @when before_wp_load */ public function set( $args, $assoc_args ) { $path = $this->get_config_path(); list( $name, $value ) = $args; $type = Utils\get_flag_value( $assoc_args, 'type' ); $options = []; $option_flags = [ 'raw' => false, 'add' => true, 'anchor' => null, 'placement' => null, 'separator' => null, ]; foreach ( $option_flags as $option => $default ) { $option_value = Utils\get_flag_value( $assoc_args, $option, $default ); if ( null !== $option_value ) { $options[ $option ] = $option_value; if ( 'separator' === $option ) { $options['separator'] = $this->parse_separator( $options['separator'] ); } } } $adding = false; try { $config_transformer = new WPConfigTransformer( $path ); switch ( $type ) { case 'all': $has_constant = $config_transformer->exists( 'constant', $name ); $has_variable = $config_transformer->exists( 'variable', $name ); if ( $has_constant && $has_variable ) { WP_CLI::error( "Found both a constant and a variable '{$name}' in the 'wp-config.php' file. Use --type=<type> to disambiguate." ); } if ( ! $has_constant && ! $has_variable ) { if ( ! $options['add'] ) { $message = "The constant or variable '{$name}' is not defined in the 'wp-config.php' file."; WP_CLI::error( $message ); } $type = 'constant'; $adding = true; } else { $type = $has_constant ? 'constant' : 'variable'; } break; case 'constant': case 'variable': if ( ! $config_transformer->exists( $type, $name ) ) { if ( ! $options['add'] ) { WP_CLI::error( "The {$type} '{$name}' is not defined in the 'wp-config.php' file." ); } $adding = true; } } $config_transformer->update( $type, $name, $value, $options ); } catch ( Exception $exception ) { WP_CLI::error( "Could not process the 'wp-config.php' transformation.\nReason: {$exception->getMessage()}" ); } $raw = $options['raw'] ? 'raw ' : ''; if ( $adding ) { $message = "Added the {$type} '{$name}' to the 'wp-config.php' file with the {$raw}value '{$value}'."; } else { $message = "Updated the {$type} '{$name}' in the 'wp-config.php' file with the {$raw}value '{$value}'."; } WP_CLI::success( $message ); } /** * Deletes a specific constant or variable from the wp-config.php file. * * ## OPTIONS * * <name> * : Name of the wp-config.php constant or variable. * * [--type=<type>] * : Type of the config value to delete. Defaults to 'all'. * --- * default: all * options: * - constant * - variable * - all * --- * * ## EXAMPLES * * # Delete the COOKIE_DOMAIN constant from the wp-config.php file. * $ wp config delete COOKIE_DOMAIN * * @when before_wp_load */ public function delete( $args, $assoc_args ) { $path = $this->get_config_path(); list( $name ) = $args; $type = Utils\get_flag_value( $assoc_args, 'type' ); try { $config_transformer = new WPConfigTransformer( $path ); switch ( $type ) { case 'all': $has_constant = $config_transformer->exists( 'constant', $name ); $has_variable = $config_transformer->exists( 'variable', $name ); if ( $has_constant && $has_variable ) { WP_CLI::error( "Found both a constant and a variable '{$name}' in the 'wp-config.php' file. Use --type=<type> to disambiguate." ); } if ( ! $has_constant && ! $has_variable ) { WP_CLI::error( "The constant or variable '{$name}' is not defined in the 'wp-config.php' file." ); } else { $type = $has_constant ? 'constant' : 'variable'; } break; case 'constant': case 'variable': if ( ! $config_transformer->exists( $type, $name ) ) { WP_CLI::error( "The {$type} '{$name}' is not defined in the 'wp-config.php' file." ); } } $config_transformer->remove( $type, $name ); } catch ( Exception $exception ) { WP_CLI::error( "Could not process the 'wp-config.php' transformation.\nReason: {$exception->getMessage()}" ); } WP_CLI::success( "Deleted the {$type} '{$name}' from the 'wp-config.php' file." ); } /** * Checks whether a specific constant or variable exists in the wp-config.php file. * * ## OPTIONS * * <name> * : Name of the wp-config.php constant or variable. * * [--type=<type>] * : Type of the config value to set. Defaults to 'all'. * --- * default: all * options: * - constant * - variable * - all * --- * * ## EXAMPLES * * # Check whether the DB_PASSWORD constant exists in the wp-config.php file. * $ wp config has DB_PASSWORD * * @when before_wp_load */ public function has( $args, $assoc_args ) { $path = $this->get_config_path(); list( $name ) = $args; $type = Utils\get_flag_value( $assoc_args, 'type' ); try { $config_transformer = new WPConfigTransformer( $path ); switch ( $type ) { case 'all': $has_constant = $config_transformer->exists( 'constant', $name ); $has_variable = $config_transformer->exists( 'variable', $name ); if ( $has_constant && $has_variable ) { WP_CLI::error( "Found both a constant and a variable '{$name}' in the 'wp-config.php' file. Use --type=<type> to disambiguate." ); } if ( ! $has_constant && ! $has_variable ) { WP_CLI::halt( 1 ); } else { WP_CLI::halt( 0 ); } break; case 'constant': case 'variable': if ( ! $config_transformer->exists( $type, $name ) ) { WP_CLI::halt( 1 ); } WP_CLI::halt( 0 ); } } catch ( Exception $exception ) { WP_CLI::error( "Could not process the 'wp-config.php' transformation.\nReason: {$exception->getMessage()}" ); } } /** * Refreshes the salts defined in the wp-config.php file. * * ## OPTIONS * * [<keys>...] * : One ore more keys to shuffle. If none are provided, this falls back to the default WordPress Core salt keys. * * [--force] * : If an unknown key is requested to be shuffled, add it instead of throwing a warning. * * [--insecure] * : Retry API download without certificate validation if TLS handshake fails. Note: This makes the request vulnerable to a MITM attack. * * ## EXAMPLES * * # Get new salts for your wp-config.php file * $ wp config shuffle-salts * Success: Shuffled the salt keys. * * # Add a cache key salt to the wp-config.php file * $ wp config shuffle-salts WP_CACHE_KEY_SALT --force * * @subcommand shuffle-salts * @when before_wp_load */ public function shuffle_salts( $args, $assoc_args ) { $keys = $args; $force = Utils\get_flag_value( $assoc_args, 'force', false ); if ( empty( $keys ) ) { $keys = self::DEFAULT_SALT_CONSTANTS; } $secret_keys = []; try { foreach ( $keys as $key ) { if ( ! $force && ! in_array( $key, self::DEFAULT_SALT_CONSTANTS, true ) ) { WP_CLI::warning( "Could not shuffle the unknown key '{$key}'." ); continue; } $secret_keys[ $key ] = trim( self::unique_key() ); } } catch ( Exception $ex ) { foreach ( $keys as $key ) { if ( ! in_array( $key, self::DEFAULT_SALT_CONSTANTS, true ) ) { if ( $force ) { WP_CLI::warning( "Could not add the key '{$key}' because 'random_int()' is not supported." ); } else { WP_CLI::warning( "Could not shuffle the unknown key '{$key}'." ); } } } $remote_salts = self::fetch_remote_salts( (bool) Utils\get_flag_value( $assoc_args, 'insecure', false ) ); $remote_salts = explode( "\n", $remote_salts ); foreach ( $remote_salts as $k => $salt ) { if ( ! empty( $salt ) ) { $key = self::DEFAULT_SALT_CONSTANTS[ $k ]; if ( in_array( $key, $keys, true ) ) { $secret_keys[ $key ] = trim( substr( $salt, 28, 64 ) ); } } } } $path = $this->get_config_path(); try { $config_transformer = new WPConfigTransformer( $path ); foreach ( $secret_keys as $key => $value ) { $config_transformer->update( 'constant', $key, (string) $value ); } } catch ( Exception $exception ) { WP_CLI::error( "Could not process the 'wp-config.php' transformation.\nReason: {$exception->getMessage()}" ); } WP_CLI::success( 'Shuffled the salt keys.' ); } /** * Filters wp-config.php file configurations. * * @param array $list * @param array $previous_list * @param string $type * @param array $exclude_list * @return array */ private static function get_wp_config_diff( $list, $previous_list, $type, $exclude_list = [] ) { $result = []; foreach ( $list as $name => $val ) { if ( array_key_exists( $name, $previous_list ) || in_array( $name, $exclude_list, true ) ) { continue; } $out = []; $out['name'] = $name; $out['value'] = $val; $out['type'] = $type; $result[] = $out; } return $result; } /** * Read the salts from the WordPress.org API. * * @param bool $insecure Optional. Whether to retry without certificate validation on TLS handshake failure. * @return string String with a set of PHP define() statements to define the salts. * @throws ExitException If the remote request failed. */ private static function fetch_remote_salts( $insecure = false ) { try { $salts = (string) ( new WpOrgApi( [ 'insecure' => $insecure ] ) )->get_salts(); } catch ( Exception $exception ) { WP_CLI::error( $exception ); } return $salts; } /** * Prints the value of a constant or variable defined in the wp-config.php file. * * If the constant or variable is not defined in the wp-config.php file then an error will be returned. * * @param string $name * @param string $type * @param array $values * * @return string The value of the requested constant or variable as defined in the wp-config.php file; if the * requested constant or variable is not defined then the function will print an error and exit. */ private function return_value( $name, $type, $values ) { $results = []; foreach ( $values as $value ) { if ( $name === $value['name'] && ( 'all' === $type || $type === $value['type'] ) ) { $results[] = $value; } } if ( count( $results ) > 1 ) { WP_CLI::error( "Found both a constant and a variable '{$name}' in the 'wp-config.php' file. Use --type=<type> to disambiguate." ); } if ( ! empty( $results ) ) { return $results[0]['value']; } $type = 'all' === $type ? 'constant or variable' : $type; $names = array_column( $values, 'name' ); $candidate = Utils\get_suggestion( $name, $names ); if ( ! empty( $candidate ) && $candidate !== $name ) { WP_CLI::error( "The {$type} '{$name}' is not defined in the 'wp-config.php' file.\nDid you mean '{$candidate}'?" ); } WP_CLI::error( "The {$type} '{$name}' is not defined in the 'wp-config.php' file." ); } /** * Generates a unique key/salt for the wp-config.php file. * * @throws Exception * * @return string */ private static function unique_key() { if ( ! function_exists( 'random_int' ) ) { throw new Exception( "'random_int' does not exist" ); } $chars = self::VALID_KEY_CHARACTERS; $key = ''; for ( $i = 0; $i < 64; $i++ ) { // phpcs:ignore PHPCompatibility.FunctionUse.NewFunctions.random_intFound -- Will be called only if function exists. $key .= substr( $chars, random_int( 0, strlen( $chars ) - 1 ), 1 ); } return $key; } /** * Filters the values based on a provider filter key. * * @param array $values * @param array $filters * @param bool $strict * * @return array */ private function filter_values( $values, $filters, $strict ) { $result = []; foreach ( $values as $value ) { foreach ( $filters as $filter ) { if ( $strict && $filter !== $value['name'] ) { continue; } if ( false === strpos( $value['name'], $filter ) ) { continue; } $result[] = $value; } } return $result; } /** * Gets the path to the wp-config.php file or gives a helpful error if none found. * * @return string Path to wp-config.php file. */ private function get_config_path() { $path = Utils\locate_wp_config(); if ( ! $path ) { WP_CLI::error( "'wp-config.php' not found.\nEither create one manually or use `wp config create`." ); } return $path; } /** * Parses the separator argument, to allow for special character handling. * * Does the following transformations: * - '\n' => "\n" (newline) * - '\r' => "\r" (carriage return) * - '\t' => "\t" (tab) * * @param string $separator Separator string to parse. * * @return mixed Parsed separator string. */ private function parse_separator( $separator ) { $separator = str_replace( [ '\n', '\r', '\t' ], [ "\n", "\r", "\t" ], $separator ); return $separator; } } <?php class Oxymel { private $xml; private $dom; private $current_element; private $last_inserted; private $go_deep_on_next_element = 0; private $go_up_on_next_element = 0; private $nesting_level = 0; private $contains_nesting_level = 0; private $indentation= ' '; public function __construct() { $this->xml = ''; $this->init_new_dom(); } public function to_string() { return $this->xml .= $this->indent( $this->xml_from_dom(), $this->nesting_level ); } public function __call( $name, $args ) { array_unshift( $args, $name ); return call_user_func_array( array( $this, 'tag' ), $args ); } public function __get( $name ) { return $this->$name(); } public function contains() { $this->contains_nesting_level++; $this->nesting_level++; if ( $this->go_deep_on_next_element ) { throw new OxymelException( 'contains cannot be used consecutively more than once' ); } $this->go_deep_on_next_element++; return $this; } public function end() { $this->contains_nesting_level--; $this->nesting_level--; if ( $this->contains_nesting_level < 0 ) { throw new OxymelException( 'end is used without a matching contains' ); } $this->go_up_on_next_element++; return $this; } public function tag( $name, $content_or_attributes = null, $attributes = array() ) { list( $content, $attributes ) = $this->get_content_and_attributes_from_tag_args( $content_or_attributes, $attributes ); $is_opening = 0 === strpos( $name, 'open_' ); $is_closing = 0 === strpos( $name, 'close_' ); $name = preg_replace("/^(open|close)_/", '', $name ); $element = $this->create_element( $name, $content, $attributes ); if ( !$is_opening && !$is_closing ) $this->add_element_to_dom( $element ); elseif ( $is_opening ) $this->add_opening_tag_from_element( $element ); elseif ( $is_closing ) $this->add_closing_tag_from_tag_name( $name ); return $this; } public function cdata( $text ) { $this->add_element_to_dom( $this->dom->createCDATASection( $text ) ); return $this; } public function text( $text ) { $this->add_element_to_dom( $this->dom->createTextNode( $text ) ); return $this; } public function comment( $text ) { $this->add_element_to_dom( $this->dom->createComment( $text ) ); return $this; } public function xml() { $this->add_element_to_dom( $this->dom->createProcessingInstruction( 'xml', 'version="1.0" encoding="UTF-8"' ) ); return $this; } public function oxymel( Oxymel $other ) { foreach( $other->dom->childNodes as $child ) { $child = $this->dom->importNode( $child, true ); $this->add_element_to_dom( $child ); } return $this; } public function raw( $raw_xml ) { if ( !$raw_xml ) { return $this; } $fragment = $this->dom->createDocumentFragment(); $fragment->appendXML($raw_xml); $this->add_element_to_dom( $fragment ); return $this; } private function add_element_to_dom( $element ) { $this->move_current_element_deep(); $this->move_current_element_up(); $this->last_inserted = $this->current_element->appendChild($element); } private function move_current_element_deep() { if ( $this->go_deep_on_next_element ) { if ( !$this->last_inserted ) { throw new OxymelException( 'contains has been used before adding any tags' ); } $this->current_element = $this->last_inserted; $this->go_deep_on_next_element--; } } private function move_current_element_up() { if ( $this->go_up_on_next_element ) { while ( $this->go_up_on_next_element ) { $this->current_element = $this->current_element->parentNode; $this->go_up_on_next_element--; } } } private function get_content_and_attributes_from_tag_args( $content_or_attributes, array $attributes ) { $content = null; if ( !$attributes ) { if ( is_array( $content_or_attributes ) ) $attributes = $content_or_attributes; else $content = $content_or_attributes; } else { $content = $content_or_attributes; } return array( $content, $attributes ); } private function init_new_dom() { unset( $this->dom, $this->current_element ); $this->dom = new DOMDocument(); $this->dom->formatOutput = true; $this->current_element = $this->dom; $this->last_inserted = null; } private function xml_from_dom() { if ( 0 !== $this->contains_nesting_level ) { throw new OxymelException( 'contains and end calls do not match' ); } $xml = ''; foreach( $this->dom->childNodes as $child ) { $xml .= $this->dom->saveXML( $child ) . "\n"; } return $xml; } private function create_element( $name, $content, $attributes ) { if ( !is_null( $content ) ) $element = $this->dom->createElement( $name, $content ); else $element = $this->dom->createElement( $name ); foreach( $attributes as $attribute_name => $attribute_value ) { $element->setAttribute( $attribute_name, $attribute_value ); } return $element; } private function add_opening_tag_from_element( $element ) { $this->xml .= $this->indent( $this->xml_from_dom(), $this->nesting_level ); $tag = $this->dom->saveXML($element); $this->xml .= $this->indent( str_replace( '/>', '>', $tag ) . "\n", $this->nesting_level ); $this->nesting_level++; $this->init_new_dom(); } private function add_closing_tag_from_tag_name( $name ) { $this->xml .= $this->xml_from_dom(); $this->nesting_level--; if ( $this->nesting_level < 0 ) { $this->xml = $this->indent( $this->xml, -$this->nesting_level ); $this->nesting_level = 0; } $this->xml .= $this->indent( "</$name>\n", $this->nesting_level ); $this->init_new_dom(); } private function indent( $string, $level ) { if ( !$level ) { return $string; } $lines = explode( "\n", $string ); foreach( $lines as &$line ) { if ( !trim( $line ) ) continue; $line = str_repeat( $this->indentation, $level ) . $line; } return implode( "\n", $lines ); } } class OxymelException extends Exception { } <?php require_once dirname( __FILE__ ) . '/Oxymel.php'; class OxymelTest extends PHPUnit_Framework_TestCase { function __construct() { $this->x = new Oxymel; } function test_xml_adds_procesing_instrution_with_version_and_encoding() { $this->a( '<?xml version="1.0" encoding="UTF-8"?>', $this->x->xml ); } function test_self_closing() { $this->a('<baba/>', $this->x->baba); } function test_self_closing_method() { $this->a('<baba/>', $this->x->baba()); } function test_attribute_no_content() { $this->a('<baba a="b" c="d"/>', $this->x->baba( array( 'a' => 'b', 'c' => 'd' ) ) ); } function test_content_no_attribute() { $this->a('<baba>content</baba>', $this->x->baba( 'content' ) ); } function test_escapiing_of_content() { $this->a('<baba><</baba>', $this->x->baba( '<' ) ); } function test_escaping_of_attributes() { $this->a('<baba a="<"/>', $this->x->baba( array( 'a' => '<' ) ) ); } function test_content_and_attributes() { $this->a('<baba a="b" c="d">content</baba>', $this->x->baba( 'content', array( 'a' => 'b', 'c' => 'd' ) ) ); } function test_content_and_attributes_error() { $this->setExpectedException( 'PHPUnit_Framework_Error' ); $this->a('<baba a="b" c="d">content</baba>', $this->x->baba( array( 'a' => 'b', 'c' => 'd' ), 'content' ) ); } function test_go_down() { $this->a('<baba> <dyado/> </baba>', $this->x->baba->contains->dyado->end ); } function test_go_down_and_up() { $this->a("<level0> <level1/> </level0> <level0/>", $this->x->level0->contains->level1->end->level0 ); } function test_cdata() { $this->a('<baba><![CDATA[content]]></baba>', $this->x->baba->contains->cdata('content')->end); } function test_nested_cdata() { $this->a( '<![CDATA[x]]]]><![CDATA[>]]>', $this->x->cdata( 'x]]>' ) ); } function test_raw() { $this->a('<baba> <dyado/> </baba>', $this->x->baba->contains->raw('<dyado></dyado>')->end); } function test_raw_doesnt_do_anything_with_empty_arg() { $this->a('<baba/>', $this->x->baba->raw( '' ) ); } function test_oxymel_ns() { $oxymel = new Oxymel; $oxymel->tag( 'wp:baba' ); $this->a( '<wp:baba/>', $this->x->oxymel( $oxymel ) ); } function x_test_only_up_error() { $this->a('', $this->x->end ); } function test_open_in_the_end() { $this->a("<baba/> <newtag>", $this->x->baba->open_newtag ); } function test_open_with_attributes() { $this->a("<baba/> <newtag a=\"b\">", $this->x->baba->open_newtag( array( 'a' => 'b' ) ) ); } function test_dom_open_dom() { $this->a("<baba/> <newtag> <baba/>", $this->x->baba->open_newtag->baba ); } function test_close_in_the_beginning() { $this->a("</oldtag> <baba/>", $this->x->close_oldtag->baba ); } function test_dom_close_dom() { $this->a(" <baba/> </oldtag> <baba/>", $this->x->baba->close_oldtag->baba ); } function test_baba() { $this->a("<a>baba<x/></a>", $this->x->a('baba')->contains->x->end ); } function test_comment() { $this->a('<!--baba-->', $this->x->comment('baba')); } function test_two_invocations() { $this->x->baba(); $this->x->dyado(); $this->a( "<baba/> <dyado/>", $this->x ); } function test_double_end() { $this->a( "<out> <mid> <in/> </mid> </out> <nextout/>", $this->x->out->contains->mid->contains->in->end->end->nextout ); } function test_end_without_contains() { $this->setExpectedException( 'OxymelException' ); $this->x->end->baba; } function test_leading_contains() { $this->setExpectedException( 'OxymelException' ); $this->a( '<baba/>', $this->x->contains->baba ); } function test_consecutive_contains_should_error() { $this->setExpectedException( 'OxymelException' ); $this->x->baba->contains->contains->dyado->end->wink; } function test_end_without_mathcing_contains_but_with_enough_parents() { $this->setExpectedException( 'OxymelException' ); $this->x->contains->baba->end->end->baba; } function test_contains_after_newly_initialized_dom_should_error() { $this->setExpectedException( 'OxymelException' ); $this->x->baba->open_rss->contains->baba->end; } function test_nested_open_tags_should_be_indented() { $this->a( "<baba> <baba>", $this->x->open_baba->open_baba ); } function test_normal_xml_between_two_opening_tags_should_be_indented() { $this->a( "<baba> <baba/> <baba>", $this->x->open_baba->baba->open_baba ); } function test_normal_xml_after_opening_tag_should_be_indented() { $this->a( "<baba> <baba/>", $this->x->open_baba->baba ); } function test_normal_xml_before_closing_tag_should_be_indented() { $this->a( " <baba/> </baba>", $this->x->baba->close_baba ); } function test_text_should_escape_the_content_inside() { $this->a( 'a & b', $this->x->text( 'a & b' ) ); } function test_dangling_contains_should_be_caught_in_the_end() { $this->setExpectedException( 'OxymelException' ); $this->x->contains->to_string(); } private function a($value, $x) { $this->assertEquals( $value . "\n", $x->to_string()); } } <?php namespace Psr\Log; /** * This is a simple Logger implementation that other Loggers can inherit from. * * It simply delegates all log-level-specific methods to the `log` method to * reduce boilerplate code that a simple Logger that does the same thing with * messages regardless of the error level has to implement. */ abstract class AbstractLogger implements LoggerInterface { /** * System is unusable. * * @param string $message * @param mixed[] $context * * @return void */ public function emergency($message, array $context = array()) { $this->log(LogLevel::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param mixed[] $context * * @return void */ public function alert($message, array $context = array()) { $this->log(LogLevel::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param mixed[] $context * * @return void */ public function critical($message, array $context = array()) { $this->log(LogLevel::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param mixed[] $context * * @return void */ public function error($message, array $context = array()) { $this->log(LogLevel::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param mixed[] $context * * @return void */ public function warning($message, array $context = array()) { $this->log(LogLevel::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param mixed[] $context * * @return void */ public function notice($message, array $context = array()) { $this->log(LogLevel::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param mixed[] $context * * @return void */ public function info($message, array $context = array()) { $this->log(LogLevel::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param mixed[] $context * * @return void */ public function debug($message, array $context = array()) { $this->log(LogLevel::DEBUG, $message, $context); } } <?php namespace Psr\Log; /** * Describes a logger-aware instance. */ interface LoggerAwareInterface { /** * Sets a logger instance on the object. * * @param LoggerInterface $logger * * @return void */ public function setLogger(LoggerInterface $logger); } <?php namespace Psr\Log; /** * Describes log levels. */ class LogLevel { const EMERGENCY = 'emergency'; const ALERT = 'alert'; const CRITICAL = 'critical'; const ERROR = 'error'; const WARNING = 'warning'; const NOTICE = 'notice'; const INFO = 'info'; const DEBUG = 'debug'; } <?php namespace Psr\Log; /** * Basic Implementation of LoggerAwareInterface. */ trait LoggerAwareTrait { /** * The logger instance. * * @var LoggerInterface|null */ protected $logger; /** * Sets a logger. * * @param LoggerInterface $logger */ public function setLogger(LoggerInterface $logger) { $this->logger = $logger; } } <?php namespace Psr\Log; class InvalidArgumentException extends \InvalidArgumentException { } <?php namespace Psr\Log; /** * This is a simple Logger trait that classes unable to extend AbstractLogger * (because they extend another class, etc) can include. * * It simply delegates all log-level-specific methods to the `log` method to * reduce boilerplate code that a simple Logger that does the same thing with * messages regardless of the error level has to implement. */ trait LoggerTrait { /** * System is unusable. * * @param string $message * @param array $context * * @return void */ public function emergency($message, array $context = array()) { $this->log(LogLevel::EMERGENCY, $message, $context); } /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param array $context * * @return void */ public function alert($message, array $context = array()) { $this->log(LogLevel::ALERT, $message, $context); } /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param array $context * * @return void */ public function critical($message, array $context = array()) { $this->log(LogLevel::CRITICAL, $message, $context); } /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param array $context * * @return void */ public function error($message, array $context = array()) { $this->log(LogLevel::ERROR, $message, $context); } /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param array $context * * @return void */ public function warning($message, array $context = array()) { $this->log(LogLevel::WARNING, $message, $context); } /** * Normal but significant events. * * @param string $message * @param array $context * * @return void */ public function notice($message, array $context = array()) { $this->log(LogLevel::NOTICE, $message, $context); } /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param array $context * * @return void */ public function info($message, array $context = array()) { $this->log(LogLevel::INFO, $message, $context); } /** * Detailed debug information. * * @param string $message * @param array $context * * @return void */ public function debug($message, array $context = array()) { $this->log(LogLevel::DEBUG, $message, $context); } /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * * @return void * * @throws \Psr\Log\InvalidArgumentException */ abstract public function log($level, $message, array $context = array()); } <?php namespace Psr\Log; /** * Describes a logger instance. * * The message MUST be a string or object implementing __toString(). * * The message MAY contain placeholders in the form: {foo} where foo * will be replaced by the context data in key "foo". * * The context array can contain arbitrary data. The only assumption that * can be made by implementors is that if an Exception instance is given * to produce a stack trace, it MUST be in a key named "exception". * * See https://github.com/php-fig/fig-standards/blob/master/accepted/PSR-3-logger-interface.md * for the full interface specification. */ interface LoggerInterface { /** * System is unusable. * * @param string $message * @param mixed[] $context * * @return void */ public function emergency($message, array $context = array()); /** * Action must be taken immediately. * * Example: Entire website down, database unavailable, etc. This should * trigger the SMS alerts and wake you up. * * @param string $message * @param mixed[] $context * * @return void */ public function alert($message, array $context = array()); /** * Critical conditions. * * Example: Application component unavailable, unexpected exception. * * @param string $message * @param mixed[] $context * * @return void */ public function critical($message, array $context = array()); /** * Runtime errors that do not require immediate action but should typically * be logged and monitored. * * @param string $message * @param mixed[] $context * * @return void */ public function error($message, array $context = array()); /** * Exceptional occurrences that are not errors. * * Example: Use of deprecated APIs, poor use of an API, undesirable things * that are not necessarily wrong. * * @param string $message * @param mixed[] $context * * @return void */ public function warning($message, array $context = array()); /** * Normal but significant events. * * @param string $message * @param mixed[] $context * * @return void */ public function notice($message, array $context = array()); /** * Interesting events. * * Example: User logs in, SQL logs. * * @param string $message * @param mixed[] $context * * @return void */ public function info($message, array $context = array()); /** * Detailed debug information. * * @param string $message * @param mixed[] $context * * @return void */ public function debug($message, array $context = array()); /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param mixed[] $context * * @return void * * @throws \Psr\Log\InvalidArgumentException */ public function log($level, $message, array $context = array()); } <?php namespace Psr\Log; /** * This Logger can be used to avoid conditional log calls. * * Logging should always be optional, and if no logger is provided to your * library creating a NullLogger instance to have something to throw logs at * is a good way to avoid littering your code with `if ($this->logger) { }` * blocks. */ class NullLogger extends AbstractLogger { /** * Logs with an arbitrary level. * * @param mixed $level * @param string $message * @param array $context * * @return void * * @throws \Psr\Log\InvalidArgumentException */ public function log($level, $message, array $context = array()) { // noop } } <?php /* * This file is part of the JSON Lint package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\JsonLint; class DuplicateKeyException extends ParsingException { /** * @param string $message * @param string $key * @phpstan-param array{text?: string, token?: string, line?: int, loc?: array{first_line: int, first_column: int, last_line: int, last_column: int}, expected?: string[]} $details */ public function __construct($message, $key, array $details = array()) { $details['key'] = $key; parent::__construct($message, $details); } public function getKey() { return $this->details['key']; } /** * @phpstan-return array{text?: string, token?: string, line?: int, loc?: array{first_line: int, first_column: int, last_line: int, last_column: int}, expected?: string[], key: string} */ public function getDetails() { return $this->details; } } <?php /* * This file is part of the JSON Lint package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\JsonLint; class ParsingException extends \Exception { protected $details; /** * @param string $message * @phpstan-param array{text?: string, token?: string, line?: int, loc?: array{first_line: int, first_column: int, last_line: int, last_column: int}, expected?: string[]} $details */ public function __construct($message, $details = array()) { $this->details = $details; parent::__construct($message); } /** * @phpstan-return array{text?: string, token?: string, line?: int, loc?: array{first_line: int, first_column: int, last_line: int, last_column: int}, expected?: string[]} */ public function getDetails() { return $this->details; } } <?php /* * This file is part of the JSON Lint package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\JsonLint; use stdClass; /** * Parser class * * Example: * * $parser = new JsonParser(); * // returns null if it's valid json, or an error object * $parser->lint($json); * // returns parsed json, like json_decode does, but slower, throws exceptions on failure. * $parser->parse($json); * * Ported from https://github.com/zaach/jsonlint */ class JsonParser { const DETECT_KEY_CONFLICTS = 1; const ALLOW_DUPLICATE_KEYS = 2; const PARSE_TO_ASSOC = 4; private $lexer; private $flags; private $stack; private $vstack; // semantic value stack private $lstack; // location stack /** * @phpstan-var array<string, int> */ private $symbols = array( 'error' => 2, 'JSONString' => 3, 'STRING' => 4, 'JSONNumber' => 5, 'NUMBER' => 6, 'JSONNullLiteral' => 7, 'NULL' => 8, 'JSONBooleanLiteral' => 9, 'TRUE' => 10, 'FALSE' => 11, 'JSONText' => 12, 'JSONValue' => 13, 'EOF' => 14, 'JSONObject' => 15, 'JSONArray' => 16, '{' => 17, '}' => 18, 'JSONMemberList' => 19, 'JSONMember' => 20, ':' => 21, ',' => 22, '[' => 23, ']' => 24, 'JSONElementList' => 25, '$accept' => 0, '$end' => 1, ); /** * @phpstan-var array<int, string> */ private $terminals_ = array( 2 => "error", 4 => "STRING", 6 => "NUMBER", 8 => "NULL", 10 => "TRUE", 11 => "FALSE", 14 => "EOF", 17 => "{", 18 => "}", 21 => ":", 22 => ",", 23 => "[", 24 => "]", ); private $productions_ = array( 0, array(3, 1), array(5, 1), array(7, 1), array(9, 1), array(9, 1), array(12, 2), array(13, 1), array(13, 1), array(13, 1), array(13, 1), array(13, 1), array(13, 1), array(15, 2), array(15, 3), array(20, 3), array(19, 1), array(19, 3), array(16, 2), array(16, 3), array(25, 1), array(25, 3) ); private $table = array(array(3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 12 => 1, 13 => 2, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), array( 1 => array(3)), array( 14 => array(1,16)), array( 14 => array(2,7), 18 => array(2,7), 22 => array(2,7), 24 => array(2,7)), array( 14 => array(2,8), 18 => array(2,8), 22 => array(2,8), 24 => array(2,8)), array( 14 => array(2,9), 18 => array(2,9), 22 => array(2,9), 24 => array(2,9)), array( 14 => array(2,10), 18 => array(2,10), 22 => array(2,10), 24 => array(2,10)), array( 14 => array(2,11), 18 => array(2,11), 22 => array(2,11), 24 => array(2,11)), array( 14 => array(2,12), 18 => array(2,12), 22 => array(2,12), 24 => array(2,12)), array( 14 => array(2,3), 18 => array(2,3), 22 => array(2,3), 24 => array(2,3)), array( 14 => array(2,4), 18 => array(2,4), 22 => array(2,4), 24 => array(2,4)), array( 14 => array(2,5), 18 => array(2,5), 22 => array(2,5), 24 => array(2,5)), array( 14 => array(2,1), 18 => array(2,1), 21 => array(2,1), 22 => array(2,1), 24 => array(2,1)), array( 14 => array(2,2), 18 => array(2,2), 22 => array(2,2), 24 => array(2,2)), array( 3 => 20, 4 => array(1,12), 18 => array(1,17), 19 => 18, 20 => 19 ), array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 23, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15), 24 => array(1,21), 25 => 22 ), array( 1 => array(2,6)), array( 14 => array(2,13), 18 => array(2,13), 22 => array(2,13), 24 => array(2,13)), array( 18 => array(1,24), 22 => array(1,25)), array( 18 => array(2,16), 22 => array(2,16)), array( 21 => array(1,26)), array( 14 => array(2,18), 18 => array(2,18), 22 => array(2,18), 24 => array(2,18)), array( 22 => array(1,28), 24 => array(1,27)), array( 22 => array(2,20), 24 => array(2,20)), array( 14 => array(2,14), 18 => array(2,14), 22 => array(2,14), 24 => array(2,14)), array( 3 => 20, 4 => array(1,12), 20 => 29 ), array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 30, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), array( 14 => array(2,19), 18 => array(2,19), 22 => array(2,19), 24 => array(2,19)), array( 3 => 5, 4 => array(1,12), 5 => 6, 6 => array(1,13), 7 => 3, 8 => array(1,9), 9 => 4, 10 => array(1,10), 11 => array(1,11), 13 => 31, 15 => 7, 16 => 8, 17 => array(1,14), 23 => array(1,15)), array( 18 => array(2,17), 22 => array(2,17)), array( 18 => array(2,15), 22 => array(2,15)), array( 22 => array(2,21), 24 => array(2,21)), ); private $defaultActions = array( 16 => array(2, 6) ); /** * @param string $input JSON string * @param int $flags Bitmask of parse/lint options (see constants of this class) * @return null|ParsingException null if no error is found, a ParsingException containing all details otherwise */ public function lint($input, $flags = 0) { try { $this->parse($input, $flags); } catch (ParsingException $e) { return $e; } return null; } /** * @param string $input JSON string * @param int $flags Bitmask of parse/lint options (see constants of this class) * @return mixed * @throws ParsingException */ public function parse($input, $flags = 0) { $this->failOnBOM($input); $this->flags = $flags; $this->stack = array(0); $this->vstack = array(null); $this->lstack = array(); $yytext = ''; $yylineno = 0; $yyleng = 0; $recovering = 0; $TERROR = 2; $EOF = 1; $this->lexer = new Lexer(); $this->lexer->setInput($input); $yyloc = $this->lexer->yylloc; $this->lstack[] = $yyloc; $symbol = null; $preErrorSymbol = null; $state = null; $action = null; $a = null; $r = null; $yyval = new stdClass; $p = null; $len = null; $newState = null; $expected = null; $errStr = null; while (true) { // retrieve state number from top of stack $state = $this->stack[\count($this->stack)-1]; // use default actions if available if (isset($this->defaultActions[$state])) { $action = $this->defaultActions[$state]; } else { if ($symbol == null) { $symbol = $this->lex(); } // read action for current state and first input $action = isset($this->table[$state][$symbol]) ? $this->table[$state][$symbol] : false; } // handle parse error if (!$action || !$action[0]) { if (!$recovering) { // Report error $expected = array(); foreach ($this->table[$state] as $p => $ignore) { if (isset($this->terminals_[$p]) && $p > 2) { $expected[] = "'" . $this->terminals_[$p] . "'"; } } $message = null; if (\in_array("'STRING'", $expected) && \in_array(substr($this->lexer->match, 0, 1), array('"', "'"))) { $message = "Invalid string"; if ("'" === substr($this->lexer->match, 0, 1)) { $message .= ", it appears you used single quotes instead of double quotes"; } elseif (preg_match('{".+?(\\\\[^"bfnrt/\\\\u](...)?)}', $this->lexer->getFullUpcomingInput(), $match)) { $message .= ", it appears you have an unescaped backslash at: ".$match[1]; } elseif (preg_match('{"(?:[^"]+|\\\\")*$}m', $this->lexer->getFullUpcomingInput())) { $message .= ", it appears you forgot to terminate a string, or attempted to write a multiline string which is invalid"; } } $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; $errStr .= $this->lexer->showPosition() . "\n"; if ($message) { $errStr .= $message; } else { $errStr .= (\count($expected) > 1) ? "Expected one of: " : "Expected: "; $errStr .= implode(', ', $expected); } if (',' === substr(trim($this->lexer->getPastInput()), -1)) { $errStr .= " - It appears you have an extra trailing comma"; } $this->parseError($errStr, array( 'text' => $this->lexer->match, 'token' => !empty($this->terminals_[$symbol]) ? $this->terminals_[$symbol] : $symbol, 'line' => $this->lexer->yylineno, 'loc' => $yyloc, 'expected' => $expected, )); } // just recovered from another error if ($recovering == 3) { if ($symbol == $EOF) { throw new ParsingException($errStr ?: 'Parsing halted.'); } // discard current lookahead and grab another $yyleng = $this->lexer->yyleng; $yytext = $this->lexer->yytext; $yylineno = $this->lexer->yylineno; $yyloc = $this->lexer->yylloc; $symbol = $this->lex(); } // try to recover from error while (true) { // check for error recovery rule in this state if (\array_key_exists($TERROR, $this->table[$state])) { break; } if ($state == 0) { throw new ParsingException($errStr ?: 'Parsing halted.'); } $this->popStack(1); $state = $this->stack[\count($this->stack)-1]; } $preErrorSymbol = $symbol; // save the lookahead token $symbol = $TERROR; // insert generic error symbol as new lookahead $state = $this->stack[\count($this->stack)-1]; $action = isset($this->table[$state][$TERROR]) ? $this->table[$state][$TERROR] : false; $recovering = 3; // allow 3 real symbols to be shifted before reporting a new error } // this shouldn't happen, unless resolve defaults are off if (\is_array($action[0]) && \count($action) > 1) { throw new ParsingException('Parse Error: multiple actions possible at state: ' . $state . ', token: ' . $symbol); } switch ($action[0]) { case 1: // shift $this->stack[] = $symbol; $this->vstack[] = $this->lexer->yytext; $this->lstack[] = $this->lexer->yylloc; $this->stack[] = $action[1]; // push state $symbol = null; if (!$preErrorSymbol) { // normal execution/no error $yyleng = $this->lexer->yyleng; $yytext = $this->lexer->yytext; $yylineno = $this->lexer->yylineno; $yyloc = $this->lexer->yylloc; if ($recovering > 0) { $recovering--; } } else { // error just occurred, resume old lookahead f/ before error $symbol = $preErrorSymbol; $preErrorSymbol = null; } break; case 2: // reduce $len = $this->productions_[$action[1]][1]; // perform semantic action $yyval->token = $this->vstack[\count($this->vstack) - $len]; // default to $$ = $1 // default location, uses first token for firsts, last for lasts $yyval->store = array( // _$ = store 'first_line' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_line'], 'last_line' => $this->lstack[\count($this->lstack) - 1]['last_line'], 'first_column' => $this->lstack[\count($this->lstack) - ($len ?: 1)]['first_column'], 'last_column' => $this->lstack[\count($this->lstack) - 1]['last_column'], ); $r = $this->performAction($yyval, $yytext, $yyleng, $yylineno, $action[1], $this->vstack); if (!$r instanceof Undefined) { return $r; } if ($len) { $this->popStack($len); } $this->stack[] = $this->productions_[$action[1]][0]; // push nonterminal (reduce) $this->vstack[] = $yyval->token; $this->lstack[] = $yyval->store; $newState = $this->table[$this->stack[\count($this->stack)-2]][$this->stack[\count($this->stack)-1]]; $this->stack[] = $newState; break; case 3: // accept return true; } } } protected function parseError($str, $hash) { throw new ParsingException($str, $hash); } // $$ = $tokens // needs to be passed by ref? // $ = $token // _$ removed, useless? private function performAction(stdClass $yyval, $yytext, $yyleng, $yylineno, $yystate, &$tokens) { // $0 = $len $len = \count($tokens) - 1; switch ($yystate) { case 1: $yytext = preg_replace_callback('{(?:\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4})}', array($this, 'stringInterpolation'), $yytext); $yyval->token = $yytext; break; case 2: if (strpos($yytext, 'e') !== false || strpos($yytext, 'E') !== false) { $yyval->token = \floatval($yytext); } else { $yyval->token = strpos($yytext, '.') === false ? \intval($yytext) : \floatval($yytext); } break; case 3: $yyval->token = null; break; case 4: $yyval->token = true; break; case 5: $yyval->token = false; break; case 6: return $yyval->token = $tokens[$len-1]; case 13: if ($this->flags & self::PARSE_TO_ASSOC) { $yyval->token = array(); } else { $yyval->token = new stdClass; } break; case 14: $yyval->token = $tokens[$len-1]; break; case 15: $yyval->token = array($tokens[$len-2], $tokens[$len]); break; case 16: if (PHP_VERSION_ID < 70100) { $property = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; } else { $property = $tokens[$len][0]; } if ($this->flags & self::PARSE_TO_ASSOC) { $yyval->token = array(); $yyval->token[$property] = $tokens[$len][1]; } else { $yyval->token = new stdClass; $yyval->token->$property = $tokens[$len][1]; } break; case 17: if ($this->flags & self::PARSE_TO_ASSOC) { $yyval->token =& $tokens[$len-2]; $key = $tokens[$len][0]; if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2][$key])) { $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; $errStr .= $this->lexer->showPosition() . "\n"; $errStr .= "Duplicate key: ".$tokens[$len][0]; throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2][$key])) { $duplicateCount = 1; do { $duplicateKey = $key . '.' . $duplicateCount++; } while (isset($tokens[$len-2][$duplicateKey])); $key = $duplicateKey; } $tokens[$len-2][$key] = $tokens[$len][1]; } else { $yyval->token = $tokens[$len-2]; if (PHP_VERSION_ID < 70100) { $key = $tokens[$len][0] === '' ? '_empty_' : $tokens[$len][0]; } else { $key = $tokens[$len][0]; } if (($this->flags & self::DETECT_KEY_CONFLICTS) && isset($tokens[$len-2]->{$key})) { $errStr = 'Parse error on line ' . ($yylineno+1) . ":\n"; $errStr .= $this->lexer->showPosition() . "\n"; $errStr .= "Duplicate key: ".$tokens[$len][0]; throw new DuplicateKeyException($errStr, $tokens[$len][0], array('line' => $yylineno+1)); } elseif (($this->flags & self::ALLOW_DUPLICATE_KEYS) && isset($tokens[$len-2]->{$key})) { $duplicateCount = 1; do { $duplicateKey = $key . '.' . $duplicateCount++; } while (isset($tokens[$len-2]->$duplicateKey)); $key = $duplicateKey; } $tokens[$len-2]->$key = $tokens[$len][1]; } break; case 18: $yyval->token = array(); break; case 19: $yyval->token = $tokens[$len-1]; break; case 20: $yyval->token = array($tokens[$len]); break; case 21: $tokens[$len-2][] = $tokens[$len]; $yyval->token = $tokens[$len-2]; break; } return new Undefined(); } private function stringInterpolation($match) { switch ($match[0]) { case '\\\\': return '\\'; case '\"': return '"'; case '\b': return \chr(8); case '\f': return \chr(12); case '\n': return "\n"; case '\r': return "\r"; case '\t': return "\t"; case '\/': return "/"; default: return html_entity_decode('&#x'.ltrim(substr($match[0], 2), '0').';', ENT_QUOTES, 'UTF-8'); } } private function popStack($n) { $this->stack = \array_slice($this->stack, 0, - (2 * $n)); $this->vstack = \array_slice($this->vstack, 0, - $n); $this->lstack = \array_slice($this->lstack, 0, - $n); } private function lex() { $token = $this->lexer->lex() ?: 1; // $end = 1 // if token isn't its numeric value, convert if (!is_numeric($token)) { $token = isset($this->symbols[$token]) ? $this->symbols[$token] : $token; } return $token; } private function failOnBOM($input) { // UTF-8 ByteOrderMark sequence $bom = "\xEF\xBB\xBF"; if (substr($input, 0, 3) === $bom) { $this->parseError("BOM detected, make sure your input does not include a Unicode Byte-Order-Mark", array()); } } } <?php /* * This file is part of the JSON Lint package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\JsonLint; class Undefined { } <?php /* * This file is part of the JSON Lint package. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\JsonLint; /** * Lexer class * * Ported from https://github.com/zaach/jsonlint */ class Lexer { private $EOF = 1; /** * @phpstan-var array<int, string> */ private $rules = array( 0 => '/\G\s+/', 1 => '/\G-?([0-9]|[1-9][0-9]+)(\.[0-9]+)?([eE][+-]?[0-9]+)?\b/', 2 => '{\G"(?>\\\\["bfnrt/\\\\]|\\\\u[a-fA-F0-9]{4}|[^\0-\x1f\\\\"]++)*+"}', 3 => '/\G\{/', 4 => '/\G\}/', 5 => '/\G\[/', 6 => '/\G\]/', 7 => '/\G,/', 8 => '/\G:/', 9 => '/\Gtrue\b/', 10 => '/\Gfalse\b/', 11 => '/\Gnull\b/', 12 => '/\G$/', 13 => '/\G./', ); private $conditions = array( "INITIAL" => array( "rules" => array(0,1,2,3,4,5,6,7,8,9,10,11,12,13), "inclusive" => true, ), ); private $conditionStack; private $input; private $more; private $done; private $offset; public $match; public $yylineno; public $yyleng; public $yytext; public $yylloc; public function lex() { $r = $this->next(); if (!$r instanceof Undefined) { return $r; } return $this->lex(); } public function setInput($input) { $this->input = $input; $this->more = false; $this->done = false; $this->offset = 0; $this->yylineno = $this->yyleng = 0; $this->yytext = $this->match = ''; $this->conditionStack = array('INITIAL'); $this->yylloc = array('first_line' => 1, 'first_column' => 0, 'last_line' => 1, 'last_column' => 0); return $this; } public function showPosition() { $pre = str_replace("\n", '', $this->getPastInput()); $c = str_repeat('-', max(0, \strlen($pre) - 1)); // new Array(pre.length + 1).join("-"); return $pre . str_replace("\n", '', $this->getUpcomingInput()) . "\n" . $c . "^"; } public function getPastInput() { $pastLength = $this->offset - \strlen($this->match); return ($pastLength > 20 ? '...' : '') . substr($this->input, max(0, $pastLength - 20), min(20, $pastLength)); } public function getUpcomingInput() { $next = $this->match; if (\strlen($next) < 20) { $next .= substr($this->input, $this->offset, 20 - \strlen($next)); } return substr($next, 0, 20) . (\strlen($next) > 20 ? '...' : ''); } public function getFullUpcomingInput() { $next = $this->match; if (substr($next, 0, 1) === '"' && substr_count($next, '"') === 1) { $len = \strlen($this->input); $strEnd = min(strpos($this->input, '"', $this->offset + 1) ?: $len, strpos($this->input, "\n", $this->offset + 1) ?: $len); $next .= substr($this->input, $this->offset, $strEnd - $this->offset); } elseif (\strlen($next) < 20) { $next .= substr($this->input, $this->offset, 20 - \strlen($next)); } return $next; } protected function parseError($str, $hash) { throw new \Exception($str); } private function next() { if ($this->done) { return $this->EOF; } if ($this->offset === \strlen($this->input)) { $this->done = true; } $token = null; $match = null; $col = null; $lines = null; if (!$this->more) { $this->yytext = ''; $this->match = ''; } $rules = $this->getCurrentRules(); $rulesLen = \count($rules); for ($i=0; $i < $rulesLen; $i++) { if (preg_match($this->rules[$rules[$i]], $this->input, $match, 0, $this->offset)) { preg_match_all('/\n.*/', $match[0], $lines); $lines = $lines[0]; if ($lines) { $this->yylineno += \count($lines); } $this->yylloc = array( 'first_line' => $this->yylloc['last_line'], 'last_line' => $this->yylineno+1, 'first_column' => $this->yylloc['last_column'], 'last_column' => $lines ? \strlen($lines[\count($lines) - 1]) - 1 : $this->yylloc['last_column'] + \strlen($match[0]), ); $this->yytext .= $match[0]; $this->match .= $match[0]; $this->yyleng = \strlen($this->yytext); $this->more = false; $this->offset += \strlen($match[0]); $token = $this->performAction($rules[$i], $this->conditionStack[\count($this->conditionStack)-1]); if ($token) { return $token; } return new Undefined(); } } if ($this->offset === \strlen($this->input)) { return $this->EOF; } $this->parseError( 'Lexical error on line ' . ($this->yylineno+1) . ". Unrecognized text.\n" . $this->showPosition(), array( 'text' => "", 'token' => null, 'line' => $this->yylineno, ) ); } private function getCurrentRules() { return $this->conditions[$this->conditionStack[\count($this->conditionStack)-1]]['rules']; } private function performAction($avoiding_name_collisions, $YY_START) { switch ($avoiding_name_collisions) { case 0:/* skip whitespace */ break; case 1: return 6; case 2: $this->yytext = substr($this->yytext, 1, $this->yyleng-2); return 4; case 3: return 17; case 4: return 18; case 5: return 23; case 6: return 24; case 7: return 22; case 8: return 21; case 9: return 10; case 10: return 11; case 11: return 8; case 12: return 14; case 13: return 'INVALID'; } } } <?php /* * This file is part of PHAR Utils. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\PharUtils; class Timestamps { private $contents; /** * @param string $file path to the phar file to use */ public function __construct($file) { $this->contents = file_get_contents($file); } /** * Updates each file's unix timestamps in the PHAR * * The PHAR signature can then be produced in a reproducible manner. * * @param int|DateTime|string $timestamp Date string or DateTime or unix timestamp to use */ public function updateTimestamps($timestamp = null) { if ($timestamp instanceof \DateTime) { $timestamp = $timestamp->getTimestamp(); } elseif (is_string($timestamp)) { $timestamp = strtotime($timestamp); } elseif (!is_int($timestamp)) { $timestamp = strtotime('1984-12-24T00:00:00Z'); } // detect manifest offset / end of stub if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { throw new \RuntimeException('Could not detect the stub\'s end in the phar'); } // set starting position and skip past manifest length $pos = $match[0][1] + strlen($match[0][0]); $stubEnd = $pos + $this->readUint($pos, 4); $pos += 4; $numFiles = $this->readUint($pos, 4); $pos += 4; // skip API version (YOLO) $pos += 2; // skip PHAR flags $pos += 4; $aliasLength = $this->readUint($pos, 4); $pos += 4 + $aliasLength; $metadataLength = $this->readUint($pos, 4); $pos += 4 + $metadataLength; while ($pos < $stubEnd) { $filenameLength = $this->readUint($pos, 4); $pos += 4 + $filenameLength; // skip filesize $pos += 4; // update timestamp to a fixed value $this->contents = substr_replace($this->contents, pack('L', $timestamp), $pos, 4); // skip timestamp, compressed file size, crc32 checksum and file flags $pos += 4*4; $metadataLength = $this->readUint($pos, 4); $pos += 4 + $metadataLength; $numFiles--; } if ($numFiles !== 0) { throw new \LogicException('All files were not processed, something must have gone wrong'); } } /** * Saves the updated phar file, optionally with an updated signature. * * @param string $path * @param int $signatureAlgo One of Phar::MD5, Phar::SHA1, Phar::SHA256 or Phar::SHA512 * @return bool */ public function save($path, $signatureAlgo) { $pos = $this->determineSignatureBegin(); $algos = array( \Phar::MD5 => 'md5', \Phar::SHA1 => 'sha1', \Phar::SHA256 => 'sha256', \Phar::SHA512 => 'sha512', ); if (!isset($algos[$signatureAlgo])) { throw new \UnexpectedValueException('Invalid hash algorithm given: '.$signatureAlgo.' expected one of Phar::MD5, Phar::SHA1, Phar::SHA256 or Phar::SHA512'); } $algo = $algos[$signatureAlgo]; // re-sign phar // signature $signature = hash($algo, substr($this->contents, 0, $pos), true) // sig type . pack('L', $signatureAlgo) // ohai Greg & Marcus . 'GBMB'; $this->contents = substr($this->contents, 0, $pos) . $signature; return file_put_contents($path, $this->contents); } private function readUint($pos, $bytes) { $res = unpack('V', substr($this->contents, $pos, $bytes)); return $res[1]; } /** * Determine the beginning of the signature. * * @return int */ private function determineSignatureBegin() { // detect signature position if (!preg_match('{__HALT_COMPILER\(\);(?: +\?>)?\r?\n}', $this->contents, $match, PREG_OFFSET_CAPTURE)) { throw new \RuntimeException('Could not detect the stub\'s end in the phar'); } // set starting position and skip past manifest length $pos = $match[0][1] + strlen($match[0][0]); $manifestEnd = $pos + 4 + $this->readUint($pos, 4); $pos += 4; $numFiles = $this->readUint($pos, 4); $pos += 4; // skip API version (YOLO) $pos += 2; // skip PHAR flags $pos += 4; $aliasLength = $this->readUint($pos, 4); $pos += 4 + $aliasLength; $metadataLength = $this->readUint($pos, 4); $pos += 4 + $metadataLength; $compressedSizes = 0; while (($numFiles > 0) && ($pos < $manifestEnd - 24)) { $filenameLength = $this->readUint($pos, 4); $pos += 4 + $filenameLength; // skip filesize and timestamp $pos += 2*4; $compressedSizes += $this->readUint($pos, 4); // skip compressed file size, crc32 checksum and file flags $pos += 3*4; $metadataLength = $this->readUint($pos, 4); $pos += 4 + $metadataLength; $numFiles--; } if ($numFiles !== 0) { throw new \LogicException('All files were not processed, something must have gone wrong'); } return $manifestEnd + $compressedSizes; } } <?php /* * This file is part of PHAR Utils. * * (c) Jordi Boggiano <j.boggiano@seld.be> * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace Seld\PharUtils; class Linter { /** * Lints all php files inside a given phar with the current PHP version * * @param string $path Phar file path */ public static function lint($path) { $php = defined('PHP_BINARY') ? PHP_BINARY : 'php'; if ($isWindows = defined('PHP_WINDOWS_VERSION_BUILD')) { $tmpFile = @tempnam(sys_get_temp_dir(), ''); if (!$tmpFile || !is_writable($tmpFile)) { throw new \RuntimeException('Unable to create temp file'); } $php = self::escapeWindowsPath($php); $tmpFile = self::escapeWindowsPath($tmpFile); // PHP 8 encloses the command in double-quotes if (PHP_VERSION_ID >= 80000) { $format = '%s -l %s'; } else { $format = '"%s -l %s"'; } $command = sprintf($format, $php, $tmpFile); } else { $command = "'".$php."' -l"; } $descriptorspec = array( 0 => array('pipe', 'r'), 1 => array('pipe', 'w'), 2 => array('pipe', 'w') ); foreach (new \RecursiveIteratorIterator(new \Phar($path)) as $file) { if ($file->isDir()) { continue; } if (substr($file, -4) === '.php') { $filename = (string) $file; if ($isWindows) { file_put_contents($tmpFile, file_get_contents($filename)); } $process = proc_open($command, $descriptorspec, $pipes); if (is_resource($process)) { if (!$isWindows) { fwrite($pipes[0], file_get_contents($filename)); } fclose($pipes[0]); $stdout = stream_get_contents($pipes[1]); fclose($pipes[1]); $stderr = stream_get_contents($pipes[2]); fclose($pipes[2]); $exitCode = proc_close($process); if ($exitCode !== 0) { if ($isWindows) { $stderr = str_replace($tmpFile, $filename, $stderr); } throw new \UnexpectedValueException('Failed linting '.$file.': '.$stderr); } } else { throw new \RuntimeException('Could not start linter process'); } } } if ($isWindows) { @unlink($tmpFile); } } /** * Escapes a Windows file path * * @param string $path * @return string The escaped path */ private static function escapeWindowsPath($path) { // Quote if path contains spaces or brackets if (strpbrk($path, " ()") !== false) { $path = '"'.$path.'"'; } return $path; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Entity; use JsonSchema\Exception\InvalidArgumentException; /** * @package JsonSchema\Entity * * @author Joost Nijhuis <jnijhuis81@gmail.com> */ class JsonPointer { /** @var string */ private $filename; /** @var string[] */ private $propertyPaths = array(); /** * @var bool Whether the value at this path was set from a schema default */ private $fromDefault = false; /** * @param string $value * * @throws InvalidArgumentException when $value is not a string */ public function __construct($value) { if (!is_string($value)) { throw new InvalidArgumentException('Ref value must be a string'); } $splitRef = explode('#', $value, 2); $this->filename = $splitRef[0]; if (array_key_exists(1, $splitRef)) { $this->propertyPaths = $this->decodePropertyPaths($splitRef[1]); } } /** * @param string $propertyPathString * * @return string[] */ private function decodePropertyPaths($propertyPathString) { $paths = array(); foreach (explode('/', trim($propertyPathString, '/')) as $path) { $path = $this->decodePath($path); if (is_string($path) && '' !== $path) { $paths[] = $path; } } return $paths; } /** * @return array */ private function encodePropertyPaths() { return array_map( array($this, 'encodePath'), $this->getPropertyPaths() ); } /** * @param string $path * * @return string */ private function decodePath($path) { return strtr($path, array('~1' => '/', '~0' => '~', '%25' => '%')); } /** * @param string $path * * @return string */ private function encodePath($path) { return strtr($path, array('/' => '~1', '~' => '~0', '%' => '%25')); } /** * @return string */ public function getFilename() { return $this->filename; } /** * @return string[] */ public function getPropertyPaths() { return $this->propertyPaths; } /** * @param array $propertyPaths * * @return JsonPointer */ public function withPropertyPaths(array $propertyPaths) { $new = clone $this; $new->propertyPaths = $propertyPaths; return $new; } /** * @return string */ public function getPropertyPathAsString() { return rtrim('#/' . implode('/', $this->encodePropertyPaths()), '/'); } /** * @return string */ public function __toString() { return $this->getFilename() . $this->getPropertyPathAsString(); } /** * Mark the value at this path as being set from a schema default */ public function setFromDefault() { $this->fromDefault = true; } /** * Check whether the value at this path was set from a schema default * * @return bool */ public function fromDefault() { return $this->fromDefault; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema; use JsonSchema\Constraints\BaseConstraint; use JsonSchema\Constraints\Constraint; /** * A JsonSchema Constraint * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> * * @see README.md */ class Validator extends BaseConstraint { const SCHEMA_MEDIA_TYPE = 'application/schema+json'; const ERROR_NONE = 0x00000000; const ERROR_ALL = 0xFFFFFFFF; const ERROR_DOCUMENT_VALIDATION = 0x00000001; const ERROR_SCHEMA_VALIDATION = 0x00000002; /** * Validates the given data against the schema and returns an object containing the results * Both the php object and the schema are supposed to be a result of a json_decode call. * The validation works as defined by the schema proposal in http://json-schema.org. * * Note that the first argument is passed by reference, so you must pass in a variable. */ public function validate(&$value, $schema = null, $checkMode = null) { // make sure $schema is an object if (is_array($schema)) { $schema = self::arrayToObjectRecursive($schema); } // set checkMode $initialCheckMode = $this->factory->getConfig(); if ($checkMode !== null) { $this->factory->setConfig($checkMode); } // add provided schema to SchemaStorage with internal URI to allow internal $ref resolution if (is_object($schema) && property_exists($schema, 'id')) { $schemaURI = $schema->id; } else { $schemaURI = SchemaStorage::INTERNAL_PROVIDED_SCHEMA_URI; } $this->factory->getSchemaStorage()->addSchema($schemaURI, $schema); $validator = $this->factory->createInstanceFor('schema'); $validator->check( $value, $this->factory->getSchemaStorage()->getSchema($schemaURI) ); $this->factory->setConfig($initialCheckMode); $this->addErrors(array_unique($validator->getErrors(), SORT_REGULAR)); return $validator->getErrorMask(); } /** * Alias to validate(), to maintain backwards-compatibility with the previous API */ public function check($value, $schema) { return $this->validate($value, $schema); } /** * Alias to validate(), to maintain backwards-compatibility with the previous API */ public function coerce(&$value, $schema) { return $this->validate($value, $schema, Constraint::CHECK_MODE_COERCE_TYPES); } } <?php namespace JsonSchema; class Rfc3339 { const REGEX = '/^(\d{4}-\d{2}-\d{2}[T ]{1}\d{2}:\d{2}:\d{2})(\.\d+)?(Z|([+-]\d{2}):?(\d{2}))$/'; /** * Try creating a DateTime instance * * @param string $string * * @return \DateTime|null */ public static function createFromString($string) { if (!preg_match(self::REGEX, strtoupper($string), $matches)) { return null; } $dateAndTime = $matches[1]; $microseconds = $matches[2] ?: '.000000'; $timeZone = 'Z' !== $matches[3] ? $matches[4] . ':' . $matches[5] : '+00:00'; $dateFormat = strpos($dateAndTime, 'T') === false ? 'Y-m-d H:i:s.uP' : 'Y-m-d\TH:i:s.uP'; $dateTime = \DateTime::createFromFormat($dateFormat, $dateAndTime . $microseconds . $timeZone, new \DateTimeZone('UTC')); return $dateTime ?: null; } } <?php namespace JsonSchema; interface SchemaStorageInterface { /** * Adds schema with given identifier * * @param string $id * @param object $schema */ public function addSchema($id, $schema = null); /** * Returns schema for given identifier, or null if it does not exist * * @param string $id * * @return object */ public function getSchema($id); /** * Returns schema for given reference with all sub-references resolved * * @param string $ref * * @return object */ public function resolveRef($ref); /** * Returns schema referenced by '$ref' property * * @param mixed $refSchema * * @return object */ public function resolveRefSchema($refSchema); } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Exception\InvalidArgumentException; use JsonSchema\SchemaStorage; use JsonSchema\SchemaStorageInterface; use JsonSchema\Uri\UriRetriever; use JsonSchema\UriRetrieverInterface; use JsonSchema\Validator; /** * Factory for centralize constraint initialization. */ class Factory { /** * @var SchemaStorage */ protected $schemaStorage; /** * @var UriRetriever */ protected $uriRetriever; /** * @var int */ private $checkMode = Constraint::CHECK_MODE_NORMAL; /** * @var TypeCheck\TypeCheckInterface[] */ private $typeCheck = array(); /** * @var int Validation context */ protected $errorContext = Validator::ERROR_DOCUMENT_VALIDATION; /** * @var array */ protected $constraintMap = array( 'array' => 'JsonSchema\Constraints\CollectionConstraint', 'collection' => 'JsonSchema\Constraints\CollectionConstraint', 'object' => 'JsonSchema\Constraints\ObjectConstraint', 'type' => 'JsonSchema\Constraints\TypeConstraint', 'undefined' => 'JsonSchema\Constraints\UndefinedConstraint', 'string' => 'JsonSchema\Constraints\StringConstraint', 'number' => 'JsonSchema\Constraints\NumberConstraint', 'enum' => 'JsonSchema\Constraints\EnumConstraint', 'format' => 'JsonSchema\Constraints\FormatConstraint', 'schema' => 'JsonSchema\Constraints\SchemaConstraint', 'validator' => 'JsonSchema\Validator' ); /** * @var array<ConstraintInterface> */ private $instanceCache = array(); /** * @param SchemaStorage $schemaStorage * @param UriRetrieverInterface $uriRetriever * @param int $checkMode */ public function __construct( SchemaStorageInterface $schemaStorage = null, UriRetrieverInterface $uriRetriever = null, $checkMode = Constraint::CHECK_MODE_NORMAL ) { // set provided config options $this->setConfig($checkMode); $this->uriRetriever = $uriRetriever ?: new UriRetriever(); $this->schemaStorage = $schemaStorage ?: new SchemaStorage($this->uriRetriever); } /** * Set config values * * @param int $checkMode Set checkMode options - does not preserve existing flags */ public function setConfig($checkMode = Constraint::CHECK_MODE_NORMAL) { $this->checkMode = $checkMode; } /** * Enable checkMode flags * * @param int $options */ public function addConfig($options) { $this->checkMode |= $options; } /** * Disable checkMode flags * * @param int $options */ public function removeConfig($options) { $this->checkMode &= ~$options; } /** * Get checkMode option * * @param int $options Options to get, if null then return entire bitmask * * @return int */ public function getConfig($options = null) { if ($options === null) { return $this->checkMode; } return $this->checkMode & $options; } /** * @return UriRetrieverInterface */ public function getUriRetriever() { return $this->uriRetriever; } public function getSchemaStorage() { return $this->schemaStorage; } public function getTypeCheck() { if (!isset($this->typeCheck[$this->checkMode])) { $this->typeCheck[$this->checkMode] = ($this->checkMode & Constraint::CHECK_MODE_TYPE_CAST) ? new TypeCheck\LooseTypeCheck() : new TypeCheck\StrictTypeCheck(); } return $this->typeCheck[$this->checkMode]; } /** * @param string $name * @param string $class * * @return Factory */ public function setConstraintClass($name, $class) { // Ensure class exists if (!class_exists($class)) { throw new InvalidArgumentException('Unknown constraint ' . $name); } // Ensure class is appropriate if (!in_array('JsonSchema\Constraints\ConstraintInterface', class_implements($class))) { throw new InvalidArgumentException('Invalid class ' . $name); } $this->constraintMap[$name] = $class; return $this; } /** * Create a constraint instance for the given constraint name. * * @param string $constraintName * * @throws InvalidArgumentException if is not possible create the constraint instance * * @return ConstraintInterface|ObjectConstraint */ public function createInstanceFor($constraintName) { if (!isset($this->constraintMap[$constraintName])) { throw new InvalidArgumentException('Unknown constraint ' . $constraintName); } if (!isset($this->instanceCache[$constraintName])) { $this->instanceCache[$constraintName] = new $this->constraintMap[$constraintName]($this); } return clone $this->instanceCache[$constraintName]; } /** * Get the error context * * @return string */ public function getErrorContext() { return $this->errorContext; } /** * Set the error context * * @param string $validationContext */ public function setErrorContext($errorContext) { $this->errorContext = $errorContext; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The CollectionConstraint Constraints, validates an array against a given schema * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class CollectionConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$value, $schema = null, JsonPointer $path = null, $i = null) { // Verify minItems if (isset($schema->minItems) && count($value) < $schema->minItems) { $this->addError($path, 'There must be a minimum of ' . $schema->minItems . ' items in the array', 'minItems', array('minItems' => $schema->minItems)); } // Verify maxItems if (isset($schema->maxItems) && count($value) > $schema->maxItems) { $this->addError($path, 'There must be a maximum of ' . $schema->maxItems . ' items in the array', 'maxItems', array('maxItems' => $schema->maxItems)); } // Verify uniqueItems if (isset($schema->uniqueItems) && $schema->uniqueItems) { $unique = $value; if (is_array($value) && count($value)) { $unique = array_map(function ($e) { return var_export($e, true); }, $value); } if (count(array_unique($unique)) != count($value)) { $this->addError($path, 'There are no duplicates allowed in the array', 'uniqueItems'); } } // Verify items if (isset($schema->items)) { $this->validateItems($value, $schema, $path, $i); } } /** * Validates the items * * @param array $value * @param \stdClass $schema * @param JsonPointer|null $path * @param string $i */ protected function validateItems(&$value, $schema = null, JsonPointer $path = null, $i = null) { if (is_object($schema->items)) { // just one type definition for the whole array foreach ($value as $k => &$v) { $initErrors = $this->getErrors(); // First check if its defined in "items" $this->checkUndefined($v, $schema->items, $path, $k); // Recheck with "additionalItems" if the first test fails if (count($initErrors) < count($this->getErrors()) && (isset($schema->additionalItems) && $schema->additionalItems !== false)) { $secondErrors = $this->getErrors(); $this->checkUndefined($v, $schema->additionalItems, $path, $k); } // Reset errors if needed if (isset($secondErrors) && count($secondErrors) < count($this->getErrors())) { $this->errors = $secondErrors; } elseif (isset($secondErrors) && count($secondErrors) === count($this->getErrors())) { $this->errors = $initErrors; } } unset($v); /* remove dangling reference to prevent any future bugs * caused by accidentally using $v elsewhere */ } else { // Defined item type definitions foreach ($value as $k => &$v) { if (array_key_exists($k, $schema->items)) { $this->checkUndefined($v, $schema->items[$k], $path, $k); } else { // Additional items if (property_exists($schema, 'additionalItems')) { if ($schema->additionalItems !== false) { $this->checkUndefined($v, $schema->additionalItems, $path, $k); } else { $this->addError( $path, 'The item ' . $i . '[' . $k . '] is not defined and the definition does not allow additional items', 'additionalItems', array('additionalItems' => $schema->additionalItems)); } } else { // Should be valid against an empty schema $this->checkUndefined($v, new \stdClass(), $path, $k); } } } unset($v); /* remove dangling reference to prevent any future bugs * caused by accidentally using $v elsewhere */ // Treat when we have more schema definitions than values, not for empty arrays if (count($value) > 0) { for ($k = count($value); $k < count($schema->items); $k++) { $undefinedInstance = $this->factory->createInstanceFor('undefined'); $this->checkUndefined($undefinedInstance, $schema->items[$k], $path, $k); } } } } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The ObjectConstraint Constraints, validates an object against a given schema * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class ObjectConstraint extends Constraint { /** * @var array List of properties to which a default value has been applied */ protected $appliedDefaults = array(); /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $properties = null, $additionalProp = null, $patternProperties = null, $appliedDefaults = array()) { if ($element instanceof UndefinedConstraint) { return; } $this->appliedDefaults = $appliedDefaults; $matches = array(); if ($patternProperties) { // validate the element pattern properties $matches = $this->validatePatternProperties($element, $path, $patternProperties); } if ($properties) { // validate the element properties $this->validateProperties($element, $properties, $path); } // validate additional element properties & constraints $this->validateElement($element, $matches, $schema, $path, $properties, $additionalProp); } public function validatePatternProperties($element, JsonPointer $path = null, $patternProperties) { $try = array('/', '#', '+', '~', '%'); $matches = array(); foreach ($patternProperties as $pregex => $schema) { $delimiter = '/'; // Choose delimiter. Necessary for patterns like ^/ , otherwise you get error foreach ($try as $delimiter) { if (strpos($pregex, $delimiter) === false) { // safe to use break; } } // Validate the pattern before using it to test for matches if (@preg_match($delimiter . $pregex . $delimiter . 'u', '') === false) { $this->addError($path, 'The pattern "' . $pregex . '" is invalid', 'pregex', array('pregex' => $pregex)); continue; } foreach ($element as $i => $value) { if (preg_match($delimiter . $pregex . $delimiter . 'u', $i)) { $matches[] = $i; $this->checkUndefined($value, $schema ?: new \stdClass(), $path, $i, in_array($i, $this->appliedDefaults)); } } } return $matches; } /** * Validates the element properties * * @param \StdClass $element Element to validate * @param array $matches Matches from patternProperties (if any) * @param \StdClass $schema ObjectConstraint definition * @param JsonPointer|null $path Current test path * @param \StdClass $properties Properties * @param mixed $additionalProp Additional properties */ public function validateElement($element, $matches, $schema = null, JsonPointer $path = null, $properties = null, $additionalProp = null) { $this->validateMinMaxConstraint($element, $schema, $path); foreach ($element as $i => $value) { $definition = $this->getProperty($properties, $i); // no additional properties allowed if (!in_array($i, $matches) && $additionalProp === false && $this->inlineSchemaProperty !== $i && !$definition) { $this->addError($path, 'The property ' . $i . ' is not defined and the definition does not allow additional properties', 'additionalProp'); } // additional properties defined if (!in_array($i, $matches) && $additionalProp && !$definition) { if ($additionalProp === true) { $this->checkUndefined($value, null, $path, $i, in_array($i, $this->appliedDefaults)); } else { $this->checkUndefined($value, $additionalProp, $path, $i, in_array($i, $this->appliedDefaults)); } } // property requires presence of another $require = $this->getProperty($definition, 'requires'); if ($require && !$this->getProperty($element, $require)) { $this->addError($path, 'The presence of the property ' . $i . ' requires that ' . $require . ' also be present', 'requires'); } $property = $this->getProperty($element, $i, $this->factory->createInstanceFor('undefined')); if (is_object($property)) { $this->validateMinMaxConstraint(!($property instanceof UndefinedConstraint) ? $property : $element, $definition, $path); } } } /** * Validates the definition properties * * @param \stdClass $element Element to validate * @param \stdClass $properties Property definitions * @param JsonPointer|null $path Path? */ public function validateProperties(&$element, $properties = null, JsonPointer $path = null) { $undefinedConstraint = $this->factory->createInstanceFor('undefined'); foreach ($properties as $i => $value) { $property = &$this->getProperty($element, $i, $undefinedConstraint); $definition = $this->getProperty($properties, $i); if (is_object($definition)) { // Undefined constraint will check for is_object() and quit if is not - so why pass it? $this->checkUndefined($property, $definition, $path, $i, in_array($i, $this->appliedDefaults)); } } } /** * retrieves a property from an object or array * * @param mixed $element Element to validate * @param string $property Property to retrieve * @param mixed $fallback Default value if property is not found * * @return mixed */ protected function &getProperty(&$element, $property, $fallback = null) { if (is_array($element) && (isset($element[$property]) || array_key_exists($property, $element)) /*$this->checkMode == self::CHECK_MODE_TYPE_CAST*/) { return $element[$property]; } elseif (is_object($element) && property_exists($element, $property)) { return $element->$property; } return $fallback; } /** * validating minimum and maximum property constraints (if present) against an element * * @param \stdClass $element Element to validate * @param \stdClass $objectDefinition ObjectConstraint definition * @param JsonPointer|null $path Path to test? */ protected function validateMinMaxConstraint($element, $objectDefinition, JsonPointer $path = null) { // Verify minimum number of properties if (isset($objectDefinition->minProperties) && !is_object($objectDefinition->minProperties)) { if ($this->getTypeCheck()->propertyCount($element) < $objectDefinition->minProperties) { $this->addError($path, 'Must contain a minimum of ' . $objectDefinition->minProperties . ' properties', 'minProperties', array('minProperties' => $objectDefinition->minProperties)); } } // Verify maximum number of properties if (isset($objectDefinition->maxProperties) && !is_object($objectDefinition->maxProperties)) { if ($this->getTypeCheck()->propertyCount($element) > $objectDefinition->maxProperties) { $this->addError($path, 'Must contain no more than ' . $objectDefinition->maxProperties . ' properties', 'maxProperties', array('maxProperties' => $objectDefinition->maxProperties)); } } } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; use JsonSchema\Rfc3339; /** * Validates against the "format" property * * @author Justin Rainbow <justin.rainbow@gmail.com> * * @see http://tools.ietf.org/html/draft-zyp-json-schema-03#section-5.23 */ class FormatConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { if (!isset($schema->format) || $this->factory->getConfig(self::CHECK_MODE_DISABLE_FORMAT)) { return; } switch ($schema->format) { case 'date': if (!$date = $this->validateDateTime($element, 'Y-m-d')) { $this->addError($path, sprintf('Invalid date %s, expected format YYYY-MM-DD', json_encode($element)), 'format', array('format' => $schema->format)); } break; case 'time': if (!$this->validateDateTime($element, 'H:i:s')) { $this->addError($path, sprintf('Invalid time %s, expected format hh:mm:ss', json_encode($element)), 'format', array('format' => $schema->format)); } break; case 'date-time': if (null === Rfc3339::createFromString($element)) { $this->addError($path, sprintf('Invalid date-time %s, expected format YYYY-MM-DDThh:mm:ssZ or YYYY-MM-DDThh:mm:ss+hh:mm', json_encode($element)), 'format', array('format' => $schema->format)); } break; case 'utc-millisec': if (!$this->validateDateTime($element, 'U')) { $this->addError($path, sprintf('Invalid time %s, expected integer of milliseconds since Epoch', json_encode($element)), 'format', array('format' => $schema->format)); } break; case 'regex': if (!$this->validateRegex($element)) { $this->addError($path, 'Invalid regex format ' . $element, 'format', array('format' => $schema->format)); } break; case 'color': if (!$this->validateColor($element)) { $this->addError($path, 'Invalid color', 'format', array('format' => $schema->format)); } break; case 'style': if (!$this->validateStyle($element)) { $this->addError($path, 'Invalid style', 'format', array('format' => $schema->format)); } break; case 'phone': if (!$this->validatePhone($element)) { $this->addError($path, 'Invalid phone number', 'format', array('format' => $schema->format)); } break; case 'uri': if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { $this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); } break; case 'uriref': case 'uri-reference': if (null === filter_var($element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE)) { // FILTER_VALIDATE_URL does not conform to RFC-3986, and cannot handle relative URLs, but // the json-schema spec uses RFC-3986, so need a bit of hackery to properly validate them. // See https://tools.ietf.org/html/rfc3986#section-4.2 for additional information. if (substr($element, 0, 2) === '//') { // network-path reference $validURL = filter_var('scheme:' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); } elseif (substr($element, 0, 1) === '/') { // absolute-path reference $validURL = filter_var('scheme://host' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); } elseif (strlen($element)) { // relative-path reference $pathParts = explode('/', $element, 2); if (strpos($pathParts[0], ':') !== false) { $validURL = null; } else { $validURL = filter_var('scheme://host/' . $element, FILTER_VALIDATE_URL, FILTER_NULL_ON_FAILURE); } } else { $validURL = null; } if ($validURL === null) { $this->addError($path, 'Invalid URL format', 'format', array('format' => $schema->format)); } } break; case 'email': $filterFlags = FILTER_NULL_ON_FAILURE; if (defined('FILTER_FLAG_EMAIL_UNICODE')) { // Only available from PHP >= 7.1.0, so ignore it for coverage checks $filterFlags |= constant('FILTER_FLAG_EMAIL_UNICODE'); // @codeCoverageIgnore } if (null === filter_var($element, FILTER_VALIDATE_EMAIL, $filterFlags)) { $this->addError($path, 'Invalid email', 'format', array('format' => $schema->format)); } break; case 'ip-address': case 'ipv4': if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV4)) { $this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); } break; case 'ipv6': if (null === filter_var($element, FILTER_VALIDATE_IP, FILTER_NULL_ON_FAILURE | FILTER_FLAG_IPV6)) { $this->addError($path, 'Invalid IP address', 'format', array('format' => $schema->format)); } break; case 'host-name': case 'hostname': if (!$this->validateHostname($element)) { $this->addError($path, 'Invalid hostname', 'format', array('format' => $schema->format)); } break; default: // Empty as it should be: // The value of this keyword is called a format attribute. It MUST be a string. // A format attribute can generally only validate a given set of instance types. // If the type of the instance to validate is not in this set, validation for // this format attribute and instance SHOULD succeed. // http://json-schema.org/latest/json-schema-validation.html#anchor105 break; } } protected function validateDateTime($datetime, $format) { $dt = \DateTime::createFromFormat($format, $datetime); if (!$dt) { return false; } if ($datetime === $dt->format($format)) { return true; } // handles the case where a non-6 digit microsecond datetime is passed // which will fail the above string comparison because the passed // $datetime may be '2000-05-01T12:12:12.123Z' but format() will return // '2000-05-01T12:12:12.123000Z' if ((strpos('u', $format) !== -1) && (preg_match('/\.\d+Z$/', $datetime))) { return true; } return false; } protected function validateRegex($regex) { return false !== @preg_match('/' . $regex . '/u', ''); } protected function validateColor($color) { if (in_array(strtolower($color), array('aqua', 'black', 'blue', 'fuchsia', 'gray', 'green', 'lime', 'maroon', 'navy', 'olive', 'orange', 'purple', 'red', 'silver', 'teal', 'white', 'yellow'))) { return true; } return preg_match('/^#([a-f0-9]{3}|[a-f0-9]{6})$/i', $color); } protected function validateStyle($style) { $properties = explode(';', rtrim($style, ';')); $invalidEntries = preg_grep('/^\s*[-a-z]+\s*:\s*.+$/i', $properties, PREG_GREP_INVERT); return empty($invalidEntries); } protected function validatePhone($phone) { return preg_match('/^\+?(\(\d{3}\)|\d{3}) \d{3} \d{4}$/', $phone); } protected function validateHostname($host) { $hostnameRegex = '/^(([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9\-]*[a-zA-Z0-9])\.)*([A-Za-z0-9]|[A-Za-z0-9][A-Za-z0-9\-]*[A-Za-z0-9])$/i'; return preg_match($hostnameRegex, $host); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The NumberConstraint Constraints, validates an number against a given schema * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class NumberConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { // Verify minimum if (isset($schema->exclusiveMinimum)) { if (isset($schema->minimum)) { if ($schema->exclusiveMinimum && $element <= $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'exclusiveMinimum', array('minimum' => $schema->minimum)); } elseif ($element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } } else { $this->addError($path, 'Use of exclusiveMinimum requires presence of minimum', 'missingMinimum'); } } elseif (isset($schema->minimum) && $element < $schema->minimum) { $this->addError($path, 'Must have a minimum value of ' . $schema->minimum, 'minimum', array('minimum' => $schema->minimum)); } // Verify maximum if (isset($schema->exclusiveMaximum)) { if (isset($schema->maximum)) { if ($schema->exclusiveMaximum && $element >= $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'exclusiveMaximum', array('maximum' => $schema->maximum)); } elseif ($element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } } else { $this->addError($path, 'Use of exclusiveMaximum requires presence of maximum', 'missingMaximum'); } } elseif (isset($schema->maximum) && $element > $schema->maximum) { $this->addError($path, 'Must have a maximum value of ' . $schema->maximum, 'maximum', array('maximum' => $schema->maximum)); } // Verify divisibleBy - Draft v3 if (isset($schema->divisibleBy) && $this->fmod($element, $schema->divisibleBy) != 0) { $this->addError($path, 'Is not divisible by ' . $schema->divisibleBy, 'divisibleBy', array('divisibleBy' => $schema->divisibleBy)); } // Verify multipleOf - Draft v4 if (isset($schema->multipleOf) && $this->fmod($element, $schema->multipleOf) != 0) { $this->addError($path, 'Must be a multiple of ' . $schema->multipleOf, 'multipleOf', array('multipleOf' => $schema->multipleOf)); } $this->checkFormat($element, $schema, $path, $i); } private function fmod($number1, $number2) { $modulus = ($number1 - round($number1 / $number2) * $number2); $precision = 0.0000000001; if (-$precision < $modulus && $modulus < $precision) { return 0.0; } return $modulus; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The StringConstraint Constraints, validates an string against a given schema * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class StringConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { // Verify maxLength if (isset($schema->maxLength) && $this->strlen($element) > $schema->maxLength) { $this->addError($path, 'Must be at most ' . $schema->maxLength . ' characters long', 'maxLength', array( 'maxLength' => $schema->maxLength, )); } //verify minLength if (isset($schema->minLength) && $this->strlen($element) < $schema->minLength) { $this->addError($path, 'Must be at least ' . $schema->minLength . ' characters long', 'minLength', array( 'minLength' => $schema->minLength, )); } // Verify a regex pattern if (isset($schema->pattern) && !preg_match('#' . str_replace('#', '\\#', $schema->pattern) . '#u', $element)) { $this->addError($path, 'Does not match the regex pattern ' . $schema->pattern, 'pattern', array( 'pattern' => $schema->pattern, )); } $this->checkFormat($element, $schema, $path, $i); } private function strlen($string) { if (extension_loaded('mbstring')) { return mb_strlen($string, mb_detect_encoding($string)); } // mbstring is present on all test platforms, so strlen() can be ignored for coverage return strlen($string); // @codeCoverageIgnore } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; use JsonSchema\Exception\InvalidArgumentException; use JsonSchema\Exception\ValidationException; use JsonSchema\Validator; /** * A more basic constraint definition - used for the public * interface to avoid exposing library internals. */ class BaseConstraint { /** * @var array Errors */ protected $errors = array(); /** * @var int All error types which have occurred */ protected $errorMask = Validator::ERROR_NONE; /** * @var Factory */ protected $factory; /** * @param Factory $factory */ public function __construct(Factory $factory = null) { $this->factory = $factory ?: new Factory(); } public function addError(JsonPointer $path = null, $message, $constraint = '', array $more = null) { $error = array( 'property' => $this->convertJsonPointerIntoPropertyPath($path ?: new JsonPointer('')), 'pointer' => ltrim(strval($path ?: new JsonPointer('')), '#'), 'message' => $message, 'constraint' => $constraint, 'context' => $this->factory->getErrorContext(), ); if ($this->factory->getConfig(Constraint::CHECK_MODE_EXCEPTIONS)) { throw new ValidationException(sprintf('Error validating %s: %s', $error['pointer'], $error['message'])); } if (is_array($more) && count($more) > 0) { $error += $more; } $this->errors[] = $error; $this->errorMask |= $error['context']; } public function addErrors(array $errors) { if ($errors) { $this->errors = array_merge($this->errors, $errors); $errorMask = &$this->errorMask; array_walk($errors, function ($error) use (&$errorMask) { if (isset($error['context'])) { $errorMask |= $error['context']; } }); } } public function getErrors($errorContext = Validator::ERROR_ALL) { if ($errorContext === Validator::ERROR_ALL) { return $this->errors; } return array_filter($this->errors, function ($error) use ($errorContext) { if ($errorContext & $error['context']) { return true; } }); } public function numErrors($errorContext = Validator::ERROR_ALL) { if ($errorContext === Validator::ERROR_ALL) { return count($this->errors); } return count($this->getErrors($errorContext)); } public function isValid() { return !$this->getErrors(); } /** * Clears any reported errors. Should be used between * multiple validation checks. */ public function reset() { $this->errors = array(); $this->errorMask = Validator::ERROR_NONE; } /** * Get the error mask * * @return int */ public function getErrorMask() { return $this->errorMask; } /** * Recursively cast an associative array to an object * * @param array $array * * @return object */ public static function arrayToObjectRecursive($array) { $json = json_encode($array); if (json_last_error() !== \JSON_ERROR_NONE) { $message = 'Unable to encode schema array as JSON'; if (function_exists('json_last_error_msg')) { $message .= ': ' . json_last_error_msg(); } throw new InvalidArgumentException($message); } return (object) json_decode($json); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The Constraints Interface * * @author Robert Schönthal <seroscho@googlemail.com> */ interface ConstraintInterface { /** * returns all collected errors * * @return array */ public function getErrors(); /** * adds errors to this validator * * @param array $errors */ public function addErrors(array $errors); /** * adds an error * * @param JsonPointer|null $path * @param string $message * @param string $constraint the constraint/rule that is broken, e.g.: 'minLength' * @param array $more more array elements to add to the error */ public function addError(JsonPointer $path = null, $message, $constraint='', array $more = null); /** * checks if the validator has not raised errors * * @return bool */ public function isValid(); /** * invokes the validation of an element * * @abstract * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i * * @throws \JsonSchema\Exception\ExceptionInterface */ public function check(&$value, $schema = null, JsonPointer $path = null, $i = null); } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Constraints\TypeCheck\LooseTypeCheck; use JsonSchema\Entity\JsonPointer; use JsonSchema\Exception\ValidationException; use JsonSchema\Uri\UriResolver; /** * The UndefinedConstraint Constraints * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class UndefinedConstraint extends Constraint { /** * @var array List of properties to which a default value has been applied */ protected $appliedDefaults = array(); /** * {@inheritdoc} */ public function check(&$value, $schema = null, JsonPointer $path = null, $i = null, $fromDefault = false) { if (is_null($schema) || !is_object($schema)) { return; } $path = $this->incrementPath($path ?: new JsonPointer(''), $i); if ($fromDefault) { $path->setFromDefault(); } // check special properties $this->validateCommonProperties($value, $schema, $path, $i); // check allOf, anyOf, and oneOf properties $this->validateOfProperties($value, $schema, $path, ''); // check known types $this->validateTypes($value, $schema, $path, $i); } /** * Validates the value against the types * * @param mixed $value * @param mixed $schema * @param JsonPointer $path * @param string $i */ public function validateTypes(&$value, $schema, JsonPointer $path, $i = null) { // check array if ($this->getTypeCheck()->isArray($value)) { $this->checkArray($value, $schema, $path, $i); } // check object if (LooseTypeCheck::isObject($value)) { // object processing should always be run on assoc arrays, // so use LooseTypeCheck here even if CHECK_MODE_TYPE_CAST // is not set (i.e. don't use $this->getTypeCheck() here). $this->checkObject( $value, $schema, $path, isset($schema->properties) ? $schema->properties : null, isset($schema->additionalProperties) ? $schema->additionalProperties : null, isset($schema->patternProperties) ? $schema->patternProperties : null, $this->appliedDefaults ); } // check string if (is_string($value)) { $this->checkString($value, $schema, $path, $i); } // check numeric if (is_numeric($value)) { $this->checkNumber($value, $schema, $path, $i); } // check enum if (isset($schema->enum)) { $this->checkEnum($value, $schema, $path, $i); } } /** * Validates common properties * * @param mixed $value * @param mixed $schema * @param JsonPointer $path * @param string $i */ protected function validateCommonProperties(&$value, $schema, JsonPointer $path, $i = '') { // if it extends another schema, it must pass that schema as well if (isset($schema->extends)) { if (is_string($schema->extends)) { $schema->extends = $this->validateUri($schema, $schema->extends); } if (is_array($schema->extends)) { foreach ($schema->extends as $extends) { $this->checkUndefined($value, $extends, $path, $i); } } else { $this->checkUndefined($value, $schema->extends, $path, $i); } } // Apply default values from schema if (!$path->fromDefault()) { $this->applyDefaultValues($value, $schema, $path); } // Verify required values if ($this->getTypeCheck()->isObject($value)) { if (!($value instanceof self) && isset($schema->required) && is_array($schema->required)) { // Draft 4 - Required is an array of strings - e.g. "required": ["foo", ...] foreach ($schema->required as $required) { if (!$this->getTypeCheck()->propertyExists($value, $required)) { $this->addError( $this->incrementPath($path ?: new JsonPointer(''), $required), 'The property ' . $required . ' is required', 'required' ); } } } elseif (isset($schema->required) && !is_array($schema->required)) { // Draft 3 - Required attribute - e.g. "foo": {"type": "string", "required": true} if ($schema->required && $value instanceof self) { $propertyPaths = $path->getPropertyPaths(); $propertyName = end($propertyPaths); $this->addError( $path, 'The property ' . $propertyName . ' is required', 'required' ); } } else { // if the value is both undefined and not required, skip remaining checks // in this method which assume an actual, defined instance when validating. if ($value instanceof self) { return; } } } // Verify type if (!($value instanceof self)) { $this->checkType($value, $schema, $path, $i); } // Verify disallowed items if (isset($schema->disallow)) { $initErrors = $this->getErrors(); $typeSchema = new \stdClass(); $typeSchema->type = $schema->disallow; $this->checkType($value, $typeSchema, $path); // if no new errors were raised it must be a disallowed value if (count($this->getErrors()) == count($initErrors)) { $this->addError($path, 'Disallowed value was matched', 'disallow'); } else { $this->errors = $initErrors; } } if (isset($schema->not)) { $initErrors = $this->getErrors(); $this->checkUndefined($value, $schema->not, $path, $i); // if no new errors were raised then the instance validated against the "not" schema if (count($this->getErrors()) == count($initErrors)) { $this->addError($path, 'Matched a schema which it should not', 'not'); } else { $this->errors = $initErrors; } } // Verify that dependencies are met if (isset($schema->dependencies) && $this->getTypeCheck()->isObject($value)) { $this->validateDependencies($value, $schema->dependencies, $path); } } /** * Check whether a default should be applied for this value * * @param mixed $schema * @param mixed $parentSchema * @param bool $requiredOnly * * @return bool */ private function shouldApplyDefaultValue($requiredOnly, $schema, $name = null, $parentSchema = null) { // required-only mode is off if (!$requiredOnly) { return true; } // draft-04 required is set if ( $name !== null && isset($parentSchema->required) && is_array($parentSchema->required) && in_array($name, $parentSchema->required) ) { return true; } // draft-03 required is set if (isset($schema->required) && !is_array($schema->required) && $schema->required) { return true; } // default case return false; } /** * Apply default values * * @param mixed $value * @param mixed $schema * @param JsonPointer $path */ protected function applyDefaultValues(&$value, $schema, $path) { // only apply defaults if feature is enabled if (!$this->factory->getConfig(self::CHECK_MODE_APPLY_DEFAULTS)) { return; } // apply defaults if appropriate $requiredOnly = $this->factory->getConfig(self::CHECK_MODE_ONLY_REQUIRED_DEFAULTS); if (isset($schema->properties) && LooseTypeCheck::isObject($value)) { // $value is an object or assoc array, and properties are defined - treat as an object foreach ($schema->properties as $currentProperty => $propertyDefinition) { $propertyDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($propertyDefinition); if ( !LooseTypeCheck::propertyExists($value, $currentProperty) && property_exists($propertyDefinition, 'default') && $this->shouldApplyDefaultValue($requiredOnly, $propertyDefinition, $currentProperty, $schema) ) { // assign default value if (is_object($propertyDefinition->default)) { LooseTypeCheck::propertySet($value, $currentProperty, clone $propertyDefinition->default); } else { LooseTypeCheck::propertySet($value, $currentProperty, $propertyDefinition->default); } $this->appliedDefaults[] = $currentProperty; } } } elseif (isset($schema->items) && LooseTypeCheck::isArray($value)) { $items = array(); if (LooseTypeCheck::isArray($schema->items)) { $items = $schema->items; } elseif (isset($schema->minItems) && count($value) < $schema->minItems) { $items = array_fill(count($value), $schema->minItems - count($value), $schema->items); } // $value is an array, and items are defined - treat as plain array foreach ($items as $currentItem => $itemDefinition) { $itemDefinition = $this->factory->getSchemaStorage()->resolveRefSchema($itemDefinition); if ( !array_key_exists($currentItem, $value) && property_exists($itemDefinition, 'default') && $this->shouldApplyDefaultValue($requiredOnly, $itemDefinition)) { if (is_object($itemDefinition->default)) { $value[$currentItem] = clone $itemDefinition->default; } else { $value[$currentItem] = $itemDefinition->default; } } $path->setFromDefault(); } } elseif ( $value instanceof self && property_exists($schema, 'default') && $this->shouldApplyDefaultValue($requiredOnly, $schema)) { // $value is a leaf, not a container - apply the default directly $value = is_object($schema->default) ? clone $schema->default : $schema->default; $path->setFromDefault(); } } /** * Validate allOf, anyOf, and oneOf properties * * @param mixed $value * @param mixed $schema * @param JsonPointer $path * @param string $i */ protected function validateOfProperties(&$value, $schema, JsonPointer $path, $i = '') { // Verify type if ($value instanceof self) { return; } if (isset($schema->allOf)) { $isValid = true; foreach ($schema->allOf as $allOf) { $initErrors = $this->getErrors(); $this->checkUndefined($value, $allOf, $path, $i); $isValid = $isValid && (count($this->getErrors()) == count($initErrors)); } if (!$isValid) { $this->addError($path, 'Failed to match all schemas', 'allOf'); } } if (isset($schema->anyOf)) { $isValid = false; $startErrors = $this->getErrors(); $caughtException = null; foreach ($schema->anyOf as $anyOf) { $initErrors = $this->getErrors(); try { $this->checkUndefined($value, $anyOf, $path, $i); if ($isValid = (count($this->getErrors()) == count($initErrors))) { break; } } catch (ValidationException $e) { $isValid = false; } } if (!$isValid) { $this->addError($path, 'Failed to match at least one schema', 'anyOf'); } else { $this->errors = $startErrors; } } if (isset($schema->oneOf)) { $allErrors = array(); $matchedSchemas = 0; $startErrors = $this->getErrors(); foreach ($schema->oneOf as $oneOf) { try { $this->errors = array(); $this->checkUndefined($value, $oneOf, $path, $i); if (count($this->getErrors()) == 0) { $matchedSchemas++; } $allErrors = array_merge($allErrors, array_values($this->getErrors())); } catch (ValidationException $e) { // deliberately do nothing here - validation failed, but we want to check // other schema options in the OneOf field. } } if ($matchedSchemas !== 1) { $this->addErrors(array_merge($allErrors, $startErrors)); $this->addError($path, 'Failed to match exactly one schema', 'oneOf'); } else { $this->errors = $startErrors; } } } /** * Validate dependencies * * @param mixed $value * @param mixed $dependencies * @param JsonPointer $path * @param string $i */ protected function validateDependencies($value, $dependencies, JsonPointer $path, $i = '') { foreach ($dependencies as $key => $dependency) { if ($this->getTypeCheck()->propertyExists($value, $key)) { if (is_string($dependency)) { // Draft 3 string is allowed - e.g. "dependencies": {"bar": "foo"} if (!$this->getTypeCheck()->propertyExists($value, $dependency)) { $this->addError($path, "$key depends on $dependency and $dependency is missing", 'dependencies'); } } elseif (is_array($dependency)) { // Draft 4 must be an array - e.g. "dependencies": {"bar": ["foo"]} foreach ($dependency as $d) { if (!$this->getTypeCheck()->propertyExists($value, $d)) { $this->addError($path, "$key depends on $d and $d is missing", 'dependencies'); } } } elseif (is_object($dependency)) { // Schema - e.g. "dependencies": {"bar": {"properties": {"foo": {...}}}} $this->checkUndefined($value, $dependency, $path, $i); } } } } protected function validateUri($schema, $schemaUri = null) { $resolver = new UriResolver(); $retriever = $this->factory->getUriRetriever(); $jsonSchema = null; if ($resolver->isValid($schemaUri)) { $schemaId = property_exists($schema, 'id') ? $schema->id : null; $jsonSchema = $retriever->retrieve($schemaId, $schemaUri); } return $jsonSchema; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; use JsonSchema\Exception\InvalidArgumentException; use UnexpectedValueException as StandardUnexpectedValueException; /** * The TypeConstraint Constraints, validates an element against a given type * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class TypeConstraint extends Constraint { /** * @var array|string[] type wordings for validation error messages */ public static $wording = array( 'integer' => 'an integer', 'number' => 'a number', 'boolean' => 'a boolean', 'object' => 'an object', 'array' => 'an array', 'string' => 'a string', 'null' => 'a null', 'any' => null, // validation of 'any' is always true so is not needed in message wording 0 => null, // validation of a false-y value is always true, so not needed as well ); /** * {@inheritdoc} */ public function check(&$value = null, $schema = null, JsonPointer $path = null, $i = null) { $type = isset($schema->type) ? $schema->type : null; $isValid = false; $wording = array(); if (is_array($type)) { $this->validateTypesArray($value, $type, $wording, $isValid, $path); } elseif (is_object($type)) { $this->checkUndefined($value, $type, $path); return; } else { $isValid = $this->validateType($value, $type); } if ($isValid === false) { if (!is_array($type)) { $this->validateTypeNameWording($type); $wording[] = self::$wording[$type]; } $this->addError($path, ucwords(gettype($value)) . ' value found, but ' . $this->implodeWith($wording, ', ', 'or') . ' is required', 'type'); } } /** * Validates the given $value against the array of types in $type. Sets the value * of $isValid to true, if at least one $type mateches the type of $value or the value * passed as $isValid is already true. * * @param mixed $value Value to validate * @param array $type TypeConstraints to check agains * @param array $validTypesWording An array of wordings of the valid types of the array $type * @param bool $isValid The current validation value * @param $path */ protected function validateTypesArray(&$value, array $type, &$validTypesWording, &$isValid, $path) { foreach ($type as $tp) { // $tp can be an object, if it's a schema instead of a simple type, validate it // with a new type constraint if (is_object($tp)) { if (!$isValid) { $validator = $this->factory->createInstanceFor('type'); $subSchema = new \stdClass(); $subSchema->type = $tp; $validator->check($value, $subSchema, $path, null); $error = $validator->getErrors(); $isValid = !(bool) $error; $validTypesWording[] = self::$wording['object']; } } else { $this->validateTypeNameWording($tp); $validTypesWording[] = self::$wording[$tp]; if (!$isValid) { $isValid = $this->validateType($value, $tp); } } } } /** * Implodes the given array like implode() with turned around parameters and with the * difference, that, if $listEnd isn't false, the last element delimiter is $listEnd instead of * $delimiter. * * @param array $elements The elements to implode * @param string $delimiter The delimiter to use * @param bool $listEnd The last delimiter to use (defaults to $delimiter) * * @return string */ protected function implodeWith(array $elements, $delimiter = ', ', $listEnd = false) { if ($listEnd === false || !isset($elements[1])) { return implode($delimiter, $elements); } $lastElement = array_slice($elements, -1); $firsElements = join($delimiter, array_slice($elements, 0, -1)); $implodedElements = array_merge(array($firsElements), $lastElement); return join(" $listEnd ", $implodedElements); } /** * Validates the given $type, if there's an associated self::$wording. If not, throws an * exception. * * @param string $type The type to validate * * @throws StandardUnexpectedValueException */ protected function validateTypeNameWording($type) { if (!isset(self::$wording[$type])) { throw new StandardUnexpectedValueException( sprintf( 'No wording for %s available, expected wordings are: [%s]', var_export($type, true), implode(', ', array_filter(self::$wording))) ); } } /** * Verifies that a given value is of a certain type * * @param mixed $value Value to validate * @param string $type TypeConstraint to check against * * @throws InvalidArgumentException * * @return bool */ protected function validateType(&$value, $type) { //mostly the case for inline schema if (!$type) { return true; } if ('any' === $type) { return true; } if ('object' === $type) { return $this->getTypeCheck()->isObject($value); } if ('array' === $type) { return $this->getTypeCheck()->isArray($value); } $coerce = $this->factory->getConfig(Constraint::CHECK_MODE_COERCE_TYPES); if ('integer' === $type) { if ($coerce) { $value = $this->toInteger($value); } return is_int($value); } if ('number' === $type) { if ($coerce) { $value = $this->toNumber($value); } return is_numeric($value) && !is_string($value); } if ('boolean' === $type) { if ($coerce) { $value = $this->toBoolean($value); } return is_bool($value); } if ('string' === $type) { return is_string($value); } if ('email' === $type) { return is_string($value); } if ('null' === $type) { return is_null($value); } throw new InvalidArgumentException((is_object($value) ? 'object' : $value) . ' is an invalid type for ' . $type); } /** * Converts a value to boolean. For example, "true" becomes true. * * @param $value The value to convert to boolean * * @return bool|mixed */ protected function toBoolean($value) { if ($value === 'true') { return true; } if ($value === 'false') { return false; } return $value; } /** * Converts a numeric string to a number. For example, "4" becomes 4. * * @param mixed $value the value to convert to a number * * @return int|float|mixed */ protected function toNumber($value) { if (is_numeric($value)) { return $value + 0; // cast to number } return $value; } protected function toInteger($value) { if (is_numeric($value) && (int) $value == $value) { return (int) $value; // cast to number } return $value; } } <?php namespace JsonSchema\Constraints\TypeCheck; interface TypeCheckInterface { public static function isObject($value); public static function isArray($value); public static function propertyGet($value, $property); public static function propertySet(&$value, $property, $data); public static function propertyExists($value, $property); public static function propertyCount($value); } <?php namespace JsonSchema\Constraints\TypeCheck; class StrictTypeCheck implements TypeCheckInterface { public static function isObject($value) { return is_object($value); } public static function isArray($value) { return is_array($value); } public static function propertyGet($value, $property) { return $value->{$property}; } public static function propertySet(&$value, $property, $data) { $value->{$property} = $data; } public static function propertyExists($value, $property) { return property_exists($value, $property); } public static function propertyCount($value) { if (!is_object($value)) { return 0; } return count(get_object_vars($value)); } } <?php namespace JsonSchema\Constraints\TypeCheck; class LooseTypeCheck implements TypeCheckInterface { public static function isObject($value) { return is_object($value) || (is_array($value) && (count($value) == 0 || self::isAssociativeArray($value))); } public static function isArray($value) { return is_array($value) && (count($value) == 0 || !self::isAssociativeArray($value)); } public static function propertyGet($value, $property) { if (is_object($value)) { return $value->{$property}; } return $value[$property]; } public static function propertySet(&$value, $property, $data) { if (is_object($value)) { $value->{$property} = $data; } else { $value[$property] = $data; } } public static function propertyExists($value, $property) { if (is_object($value)) { return property_exists($value, $property); } return array_key_exists($property, $value); } public static function propertyCount($value) { if (is_object($value)) { return count(get_object_vars($value)); } return count($value); } /** * Check if the provided array is associative or not * * @param array $arr * * @return bool */ private static function isAssociativeArray($arr) { return array_keys($arr) !== range(0, count($arr) - 1); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The EnumConstraint Constraints, validates an element against a given set of possibilities * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class EnumConstraint extends Constraint { /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { // Only validate enum if the attribute exists if ($element instanceof UndefinedConstraint && (!isset($schema->required) || !$schema->required)) { return; } $type = gettype($element); foreach ($schema->enum as $enum) { $enumType = gettype($enum); if ($this->factory->getConfig(self::CHECK_MODE_TYPE_CAST) && $type == 'array' && $enumType == 'object') { if ((object) $element == $enum) { return; } } if ($type === gettype($enum)) { if ($type == 'object') { if ($element == $enum) { return; } } elseif ($element === $enum) { return; } } } $this->addError($path, 'Does not have a value in the enumeration ' . json_encode($schema->enum), 'enum', array('enum' => $schema->enum)); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; use JsonSchema\Exception\InvalidArgumentException; use JsonSchema\Exception\InvalidSchemaException; use JsonSchema\Exception\RuntimeException; use JsonSchema\Validator; /** * The SchemaConstraint Constraints, validates an element against a given schema * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ class SchemaConstraint extends Constraint { const DEFAULT_SCHEMA_SPEC = 'http://json-schema.org/draft-04/schema#'; /** * {@inheritdoc} */ public function check(&$element, $schema = null, JsonPointer $path = null, $i = null) { if ($schema !== null) { // passed schema $validationSchema = $schema; } elseif ($this->getTypeCheck()->propertyExists($element, $this->inlineSchemaProperty)) { // inline schema $validationSchema = $this->getTypeCheck()->propertyGet($element, $this->inlineSchemaProperty); } else { throw new InvalidArgumentException('no schema found to verify against'); } // cast array schemas to object if (is_array($validationSchema)) { $validationSchema = BaseConstraint::arrayToObjectRecursive($validationSchema); } // validate schema against whatever is defined in $validationSchema->$schema. If no // schema is defined, assume self::DEFAULT_SCHEMA_SPEC (currently draft-04). if ($this->factory->getConfig(self::CHECK_MODE_VALIDATE_SCHEMA)) { if (!$this->getTypeCheck()->isObject($validationSchema)) { throw new RuntimeException('Cannot validate the schema of a non-object'); } if ($this->getTypeCheck()->propertyExists($validationSchema, '$schema')) { $schemaSpec = $this->getTypeCheck()->propertyGet($validationSchema, '$schema'); } else { $schemaSpec = self::DEFAULT_SCHEMA_SPEC; } // get the spec schema $schemaStorage = $this->factory->getSchemaStorage(); if (!$this->getTypeCheck()->isObject($schemaSpec)) { $schemaSpec = $schemaStorage->getSchema($schemaSpec); } // save error count, config & subtract CHECK_MODE_VALIDATE_SCHEMA $initialErrorCount = $this->numErrors(); $initialConfig = $this->factory->getConfig(); $initialContext = $this->factory->getErrorContext(); $this->factory->removeConfig(self::CHECK_MODE_VALIDATE_SCHEMA | self::CHECK_MODE_APPLY_DEFAULTS); $this->factory->addConfig(self::CHECK_MODE_TYPE_CAST); $this->factory->setErrorContext(Validator::ERROR_SCHEMA_VALIDATION); // validate schema try { $this->check($validationSchema, $schemaSpec); } catch (\Exception $e) { if ($this->factory->getConfig(self::CHECK_MODE_EXCEPTIONS)) { throw new InvalidSchemaException('Schema did not pass validation', 0, $e); } } if ($this->numErrors() > $initialErrorCount) { $this->addError($path, 'Schema is not valid', 'schema'); } // restore the initial config $this->factory->setConfig($initialConfig); $this->factory->setErrorContext($initialContext); } // validate element against $validationSchema $this->checkUndefined($element, $validationSchema, $path, $i); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Constraints; use JsonSchema\Entity\JsonPointer; /** * The Base Constraints, all Validators should extend this class * * @author Robert Schönthal <seroscho@googlemail.com> * @author Bruno Prieto Reis <bruno.p.reis@gmail.com> */ abstract class Constraint extends BaseConstraint implements ConstraintInterface { protected $inlineSchemaProperty = '$schema'; const CHECK_MODE_NONE = 0x00000000; const CHECK_MODE_NORMAL = 0x00000001; const CHECK_MODE_TYPE_CAST = 0x00000002; const CHECK_MODE_COERCE_TYPES = 0x00000004; const CHECK_MODE_APPLY_DEFAULTS = 0x00000008; const CHECK_MODE_EXCEPTIONS = 0x00000010; const CHECK_MODE_DISABLE_FORMAT = 0x00000020; const CHECK_MODE_ONLY_REQUIRED_DEFAULTS = 0x00000080; const CHECK_MODE_VALIDATE_SCHEMA = 0x00000100; /** * Bubble down the path * * @param JsonPointer|null $path Current path * @param mixed $i What to append to the path * * @return JsonPointer; */ protected function incrementPath(JsonPointer $path = null, $i) { $path = $path ?: new JsonPointer(''); $path = $path->withPropertyPaths( array_merge( $path->getPropertyPaths(), array_filter(array($i), 'strlen') ) ); return $path; } /** * Validates an array * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkArray(&$value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('collection'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Validates an object * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $properties * @param mixed $additionalProperties * @param mixed $patternProperties */ protected function checkObject(&$value, $schema = null, JsonPointer $path = null, $properties = null, $additionalProperties = null, $patternProperties = null, $appliedDefaults = array()) { $validator = $this->factory->createInstanceFor('object'); $validator->check($value, $schema, $path, $properties, $additionalProperties, $patternProperties, $appliedDefaults); $this->addErrors($validator->getErrors()); } /** * Validates the type of a property * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkType(&$value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('type'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a undefined element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkUndefined(&$value, $schema = null, JsonPointer $path = null, $i = null, $fromDefault = false) { $validator = $this->factory->createInstanceFor('undefined'); $validator->check($value, $this->factory->getSchemaStorage()->resolveRefSchema($schema), $path, $i, $fromDefault); $this->addErrors($validator->getErrors()); } /** * Checks a string element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkString($value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('string'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a number element * * @param mixed $value * @param mixed $schema * @param JsonPointer $path * @param mixed $i */ protected function checkNumber($value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('number'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks a enum element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkEnum($value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('enum'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Checks format of an element * * @param mixed $value * @param mixed $schema * @param JsonPointer|null $path * @param mixed $i */ protected function checkFormat($value, $schema = null, JsonPointer $path = null, $i = null) { $validator = $this->factory->createInstanceFor('format'); $validator->check($value, $schema, $path, $i); $this->addErrors($validator->getErrors()); } /** * Get the type check based on the set check mode. * * @return TypeCheck\TypeCheckInterface */ protected function getTypeCheck() { return $this->factory->getTypeCheck(); } /** * @param JsonPointer $pointer * * @return string property path */ protected function convertJsonPointerIntoPropertyPath(JsonPointer $pointer) { $result = array_map( function ($path) { return sprintf(is_numeric($path) ? '[%d]' : '.%s', $path); }, $pointer->getPropertyPaths() ); return trim(implode('', $result), '.'); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * @package JsonSchema\Exception * * @author Joost Nijhuis <jnijhuis81@gmail.com> */ class UnresolvableJsonPointerException extends InvalidArgumentException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the JsonDecodingException */ class JsonDecodingException extends RuntimeException { public function __construct($code = JSON_ERROR_NONE, \Exception $previous = null) { switch ($code) { case JSON_ERROR_DEPTH: $message = 'The maximum stack depth has been exceeded'; break; case JSON_ERROR_STATE_MISMATCH: $message = 'Invalid or malformed JSON'; break; case JSON_ERROR_CTRL_CHAR: $message = 'Control character error, possibly incorrectly encoded'; break; case JSON_ERROR_UTF8: $message = 'Malformed UTF-8 characters, possibly incorrectly encoded'; break; case JSON_ERROR_SYNTAX: $message = 'JSON syntax is malformed'; break; default: $message = 'Syntax error'; } parent::__construct($message, $code, $previous); } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; class ValidationException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the UriResolverException */ class UriResolverException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the InvalidArgumentException */ class InvalidArgumentException extends \InvalidArgumentException implements ExceptionInterface { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the ResourceNotFoundException */ class ResourceNotFoundException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the ResourceNotFoundException */ class InvalidConfigException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the InvalidSchemaMediaType */ class InvalidSchemaException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the RuntimeException */ class RuntimeException extends \RuntimeException implements ExceptionInterface { } <?php namespace JsonSchema\Exception; interface ExceptionInterface { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the InvalidSchemaMediaType */ class InvalidSchemaMediaTypeException extends RuntimeException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Exception; /** * Wrapper for the InvalidSourceUriException */ class InvalidSourceUriException extends InvalidArgumentException { } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Iterator; /** * @package JsonSchema\Iterator * * @author Joost Nijhuis <jnijhuis81@gmail.com> */ class ObjectIterator implements \Iterator, \Countable { /** @var object */ private $object; /** @var int */ private $position = 0; /** @var array */ private $data = array(); /** @var bool */ private $initialized = false; /** * @param object $object */ public function __construct($object) { $this->object = $object; } /** * {@inheritdoc} */ public function current() { $this->initialize(); return $this->data[$this->position]; } /** * {@inheritdoc} */ public function next() { $this->initialize(); $this->position++; } /** * {@inheritdoc} */ public function key() { $this->initialize(); return $this->position; } /** * {@inheritdoc} */ public function valid() { $this->initialize(); return isset($this->data[$this->position]); } /** * {@inheritdoc} */ public function rewind() { $this->initialize(); $this->position = 0; } /** * {@inheritdoc} */ public function count() { $this->initialize(); return count($this->data); } /** * Initializer */ private function initialize() { if (!$this->initialized) { $this->data = $this->buildDataFromObject($this->object); $this->initialized = true; } } /** * @param object $object * * @return array */ private function buildDataFromObject($object) { $result = array(); $stack = new \SplStack(); $stack->push($object); while (!$stack->isEmpty()) { $current = $stack->pop(); if (is_object($current)) { array_push($result, $current); } foreach ($this->getDataFromItem($current) as $propertyName => $propertyValue) { if (is_object($propertyValue) || is_array($propertyValue)) { $stack->push($propertyValue); } } } return $result; } /** * @param object|array $item * * @return array */ private function getDataFromItem($item) { if (!is_object($item) && !is_array($item)) { return array(); } return is_object($item) ? get_object_vars($item) : $item; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema; /** * @package JsonSchema */ interface UriRetrieverInterface { /** * Retrieve a URI * * @param string $uri JSON Schema URI * @param null|string $baseUri * * @return object JSON Schema contents */ public function retrieve($uri, $baseUri = null); } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema; /** * @package JsonSchema */ interface UriResolverInterface { /** * Resolves a URI * * @param string $uri Absolute or relative * @param null|string $baseUri Optional base URI * * @return string Absolute URI */ public function resolve($uri, $baseUri = null); } <?php namespace JsonSchema; use JsonSchema\Constraints\BaseConstraint; use JsonSchema\Entity\JsonPointer; use JsonSchema\Exception\UnresolvableJsonPointerException; use JsonSchema\Uri\UriResolver; use JsonSchema\Uri\UriRetriever; class SchemaStorage implements SchemaStorageInterface { const INTERNAL_PROVIDED_SCHEMA_URI = 'internal://provided-schema/'; protected $uriRetriever; protected $uriResolver; protected $schemas = array(); public function __construct( UriRetrieverInterface $uriRetriever = null, UriResolverInterface $uriResolver = null ) { $this->uriRetriever = $uriRetriever ?: new UriRetriever(); $this->uriResolver = $uriResolver ?: new UriResolver(); } /** * @return UriRetrieverInterface */ public function getUriRetriever() { return $this->uriRetriever; } /** * @return UriResolverInterface */ public function getUriResolver() { return $this->uriResolver; } /** * {@inheritdoc} */ public function addSchema($id, $schema = null) { if (is_null($schema) && $id !== self::INTERNAL_PROVIDED_SCHEMA_URI) { // if the schema was user-provided to Validator and is still null, then assume this is // what the user intended, as there's no way for us to retrieve anything else. User-supplied // schemas do not have an associated URI when passed via Validator::validate(). $schema = $this->uriRetriever->retrieve($id); } // cast array schemas to object if (is_array($schema)) { $schema = BaseConstraint::arrayToObjectRecursive($schema); } // workaround for bug in draft-03 & draft-04 meta-schemas (id & $ref defined with incorrect format) // see https://github.com/json-schema-org/JSON-Schema-Test-Suite/issues/177#issuecomment-293051367 if (is_object($schema) && property_exists($schema, 'id')) { if ($schema->id == 'http://json-schema.org/draft-04/schema#') { $schema->properties->id->format = 'uri-reference'; } elseif ($schema->id == 'http://json-schema.org/draft-03/schema#') { $schema->properties->id->format = 'uri-reference'; $schema->properties->{'$ref'}->format = 'uri-reference'; } } // resolve references $this->expandRefs($schema, $id); $this->schemas[$id] = $schema; } /** * Recursively resolve all references against the provided base * * @param mixed $schema * @param string $base */ private function expandRefs(&$schema, $base = null) { if (!is_object($schema)) { if (is_array($schema)) { foreach ($schema as &$member) { $this->expandRefs($member, $base); } } return; } if (property_exists($schema, 'id') && is_string($schema->id) && $base != $schema->id) { $base = $this->uriResolver->resolve($schema->id, $base); } if (property_exists($schema, '$ref') && is_string($schema->{'$ref'})) { $refPointer = new JsonPointer($this->uriResolver->resolve($schema->{'$ref'}, $base)); $schema->{'$ref'} = (string) $refPointer; } foreach ($schema as &$member) { $this->expandRefs($member, $base); } } /** * {@inheritdoc} */ public function getSchema($id) { if (!array_key_exists($id, $this->schemas)) { $this->addSchema($id); } return $this->schemas[$id]; } /** * {@inheritdoc} */ public function resolveRef($ref) { $jsonPointer = new JsonPointer($ref); // resolve filename for pointer $fileName = $jsonPointer->getFilename(); if (!strlen($fileName)) { throw new UnresolvableJsonPointerException(sprintf( "Could not resolve fragment '%s': no file is defined", $jsonPointer->getPropertyPathAsString() )); } // get & process the schema $refSchema = $this->getSchema($fileName); foreach ($jsonPointer->getPropertyPaths() as $path) { if (is_object($refSchema) && property_exists($refSchema, $path)) { $refSchema = $this->resolveRefSchema($refSchema->{$path}); } elseif (is_array($refSchema) && array_key_exists($path, $refSchema)) { $refSchema = $this->resolveRefSchema($refSchema[$path]); } else { throw new UnresolvableJsonPointerException(sprintf( 'File: %s is found, but could not resolve fragment: %s', $jsonPointer->getFilename(), $jsonPointer->getPropertyPathAsString() )); } } return $refSchema; } /** * {@inheritdoc} */ public function resolveRefSchema($refSchema) { if (is_object($refSchema) && property_exists($refSchema, '$ref') && is_string($refSchema->{'$ref'})) { $newSchema = $this->resolveRef($refSchema->{'$ref'}); $refSchema = (object) (get_object_vars($refSchema) + get_object_vars($newSchema)); unset($refSchema->{'$ref'}); } return $refSchema; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Uri; use JsonSchema\Exception\UriResolverException; use JsonSchema\UriResolverInterface; /** * Resolves JSON Schema URIs * * @author Sander Coolen <sander@jibber.nl> */ class UriResolver implements UriResolverInterface { /** * Parses a URI into five main components * * @param string $uri * * @return array */ public function parse($uri) { preg_match('|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|', $uri, $match); $components = array(); if (5 < count($match)) { $components = array( 'scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5] ); } if (7 < count($match)) { $components['query'] = $match[7]; } if (9 < count($match)) { $components['fragment'] = $match[9]; } return $components; } /** * Builds a URI based on n array with the main components * * @param array $components * * @return string */ public function generate(array $components) { $uri = $components['scheme'] . '://' . $components['authority'] . $components['path']; if (array_key_exists('query', $components) && strlen($components['query'])) { $uri .= '?' . $components['query']; } if (array_key_exists('fragment', $components)) { $uri .= '#' . $components['fragment']; } return $uri; } /** * {@inheritdoc} */ public function resolve($uri, $baseUri = null) { // treat non-uri base as local file path if ( !is_null($baseUri) && !filter_var($baseUri, \FILTER_VALIDATE_URL) && !preg_match('|^[^/]+://|u', $baseUri) ) { if (is_file($baseUri)) { $baseUri = 'file://' . realpath($baseUri); } elseif (is_dir($baseUri)) { $baseUri = 'file://' . realpath($baseUri) . '/'; } else { $baseUri = 'file://' . getcwd() . '/' . $baseUri; } } if ($uri == '') { return $baseUri; } $components = $this->parse($uri); $path = $components['path']; if (!empty($components['scheme'])) { return $uri; } $baseComponents = $this->parse($baseUri); $basePath = $baseComponents['path']; $baseComponents['path'] = self::combineRelativePathWithBasePath($path, $basePath); if (isset($components['fragment'])) { $baseComponents['fragment'] = $components['fragment']; } return $this->generate($baseComponents); } /** * Tries to glue a relative path onto an absolute one * * @param string $relativePath * @param string $basePath * * @throws UriResolverException * * @return string Merged path */ public static function combineRelativePathWithBasePath($relativePath, $basePath) { $relativePath = self::normalizePath($relativePath); if ($relativePath == '') { return $basePath; } if ($relativePath[0] == '/') { return $relativePath; } $basePathSegments = explode('/', $basePath); preg_match('|^/?(\.\./(?:\./)*)*|', $relativePath, $match); $numLevelUp = strlen($match[0]) /3 + 1; if ($numLevelUp >= count($basePathSegments)) { throw new UriResolverException(sprintf("Unable to resolve URI '%s' from base '%s'", $relativePath, $basePath)); } $basePathSegments = array_slice($basePathSegments, 0, -$numLevelUp); $path = preg_replace('|^/?(\.\./(\./)*)*|', '', $relativePath); return implode('/', $basePathSegments) . '/' . $path; } /** * Normalizes a URI path component by removing dot-slash and double slashes * * @param string $path * * @return string */ private static function normalizePath($path) { $path = preg_replace('|((?<!\.)\./)*|', '', $path); $path = preg_replace('|//|', '/', $path); return $path; } /** * @param string $uri * * @return bool */ public function isValid($uri) { $components = $this->parse($uri); return !empty($components); } } <?php namespace JsonSchema\Uri\Retrievers; use JsonSchema\Validator; /** * URI retrieved based on a predefined array of schemas * * @example * * $retriever = new PredefinedArray(array( * 'http://acme.com/schemas/person#' => '{ ... }', * 'http://acme.com/schemas/address#' => '{ ... }', * )) * * $schema = $retriever->retrieve('http://acme.com/schemas/person#'); */ class PredefinedArray extends AbstractRetriever { /** * Contains schemas as URI => JSON * * @var array */ private $schemas; /** * Constructor * * @param array $schemas * @param string $contentType */ public function __construct(array $schemas, $contentType = Validator::SCHEMA_MEDIA_TYPE) { $this->schemas = $schemas; $this->contentType = $contentType; } /** * {@inheritdoc} * * @see \JsonSchema\Uri\Retrievers\UriRetrieverInterface::retrieve() */ public function retrieve($uri) { if (!array_key_exists($uri, $this->schemas)) { throw new \JsonSchema\Exception\ResourceNotFoundException(sprintf( 'The JSON schema "%s" was not found.', $uri )); } return $this->schemas[$uri]; } } <?php /** * JsonSchema * * @filesource */ namespace JsonSchema\Uri\Retrievers; /** * AbstractRetriever implements the default shared behavior * that all descendant Retrievers should inherit * * @author Steven Garcia <webwhammy@gmail.com> */ abstract class AbstractRetriever implements UriRetrieverInterface { /** * Media content type * * @var string */ protected $contentType; /** * {@inheritdoc} * * @see \JsonSchema\Uri\Retrievers\UriRetrieverInterface::getContentType() */ public function getContentType() { return $this->contentType; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Uri\Retrievers; use JsonSchema\Exception\RuntimeException; use JsonSchema\Validator; /** * Tries to retrieve JSON schemas from a URI using cURL library * * @author Sander Coolen <sander@jibber.nl> */ class Curl extends AbstractRetriever { protected $messageBody; public function __construct() { if (!function_exists('curl_init')) { // Cannot test this, because curl_init is present on all test platforms plus mock throw new RuntimeException('cURL not installed'); // @codeCoverageIgnore } } /** * {@inheritdoc} * * @see \JsonSchema\Uri\Retrievers\UriRetrieverInterface::retrieve() */ public function retrieve($uri) { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $uri); curl_setopt($ch, CURLOPT_HEADER, true); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Accept: ' . Validator::SCHEMA_MEDIA_TYPE)); $response = curl_exec($ch); if (false === $response) { throw new \JsonSchema\Exception\ResourceNotFoundException('JSON schema not found'); } $this->fetchMessageBody($response); $this->fetchContentType($response); curl_close($ch); return $this->messageBody; } /** * @param string $response cURL HTTP response */ private function fetchMessageBody($response) { preg_match("/(?:\r\n){2}(.*)$/ms", $response, $match); $this->messageBody = $match[1]; } /** * @param string $response cURL HTTP response * * @return bool Whether the Content-Type header was found or not */ protected function fetchContentType($response) { if (0 < preg_match("/Content-Type:(\V*)/ims", $response, $match)) { $this->contentType = trim($match[1]); return true; } return false; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Uri\Retrievers; /** * Interface for URI retrievers * * @author Sander Coolen <sander@jibber.nl> */ interface UriRetrieverInterface { /** * Retrieve a schema from the specified URI * * @param string $uri URI that resolves to a JSON schema * * @throws \JsonSchema\Exception\ResourceNotFoundException * * @return mixed string|null */ public function retrieve($uri); /** * Get media content type * * @return string */ public function getContentType(); } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Uri\Retrievers; use JsonSchema\Exception\ResourceNotFoundException; /** * Tries to retrieve JSON schemas from a URI using file_get_contents() * * @author Sander Coolen <sander@jibber.nl> */ class FileGetContents extends AbstractRetriever { protected $messageBody; /** * {@inheritdoc} * * @see \JsonSchema\Uri\Retrievers\UriRetrieverInterface::retrieve() */ public function retrieve($uri) { $errorMessage = null; set_error_handler(function ($errno, $errstr) use (&$errorMessage) { $errorMessage = $errstr; }); $response = file_get_contents($uri); restore_error_handler(); if ($errorMessage) { throw new ResourceNotFoundException($errorMessage); } if (false === $response) { throw new ResourceNotFoundException('JSON schema not found at ' . $uri); } if ($response == '' && substr($uri, 0, 7) == 'file://' && substr($uri, -1) == '/' ) { throw new ResourceNotFoundException('JSON schema not found at ' . $uri); } $this->messageBody = $response; if (!empty($http_response_header)) { // $http_response_header cannot be tested, because it's defined in the method's local scope // See http://php.net/manual/en/reserved.variables.httpresponseheader.php for more info. $this->fetchContentType($http_response_header); // @codeCoverageIgnore } else { // @codeCoverageIgnore // Could be a "file://" url or something else - fake up the response $this->contentType = null; } return $this->messageBody; } /** * @param array $headers HTTP Response Headers * * @return bool Whether the Content-Type header was found or not */ private function fetchContentType(array $headers) { foreach ($headers as $header) { if ($this->contentType = self::getContentTypeMatchInHeader($header)) { return true; } } return false; } /** * @param string $header * * @return string|null */ protected static function getContentTypeMatchInHeader($header) { if (0 < preg_match("/Content-Type:(\V*)/ims", $header, $match)) { return trim($match[1]); } return null; } } <?php /* * This file is part of the JsonSchema package. * * For the full copyright and license information, please view the LICENSE * file that was distributed with this source code. */ namespace JsonSchema\Uri; use JsonSchema\Exception\InvalidSchemaMediaTypeException; use JsonSchema\Exception\JsonDecodingException; use JsonSchema\Exception\ResourceNotFoundException; use JsonSchema\Uri\Retrievers\FileGetContents; use JsonSchema\Uri\Retrievers\UriRetrieverInterface; use JsonSchema\UriRetrieverInterface as BaseUriRetrieverInterface; use JsonSchema\Validator; /** * Retrieves JSON Schema URIs * * @author Tyler Akins <fidian@rumkin.com> */ class UriRetriever implements BaseUriRetrieverInterface { /** * @var array Map of URL translations */ protected $translationMap = array( // use local copies of the spec schemas '|^https?://json-schema.org/draft-(0[34])/schema#?|' => 'package://dist/schema/json-schema-draft-$1.json' ); /** * @var array A list of endpoints for media type check exclusion */ protected $allowedInvalidContentTypeEndpoints = array( 'http://json-schema.org/', 'https://json-schema.org/' ); /** * @var null|UriRetrieverInterface */ protected $uriRetriever = null; /** * @var array|object[] * * @see loadSchema */ private $schemaCache = array(); /** * Adds an endpoint to the media type validation exclusion list * * @param string $endpoint */ public function addInvalidContentTypeEndpoint($endpoint) { $this->allowedInvalidContentTypeEndpoints[] = $endpoint; } /** * Guarantee the correct media type was encountered * * @param UriRetrieverInterface $uriRetriever * @param string $uri * * @return bool|void */ public function confirmMediaType($uriRetriever, $uri) { $contentType = $uriRetriever->getContentType(); if (is_null($contentType)) { // Well, we didn't get an invalid one return; } if (in_array($contentType, array(Validator::SCHEMA_MEDIA_TYPE, 'application/json'))) { return; } foreach ($this->allowedInvalidContentTypeEndpoints as $endpoint) { if (strpos($uri, $endpoint) === 0) { return true; } } throw new InvalidSchemaMediaTypeException(sprintf('Media type %s expected', Validator::SCHEMA_MEDIA_TYPE)); } /** * Get a URI Retriever * * If none is specified, sets a default FileGetContents retriever and * returns that object. * * @return UriRetrieverInterface */ public function getUriRetriever() { if (is_null($this->uriRetriever)) { $this->setUriRetriever(new FileGetContents()); } return $this->uriRetriever; } /** * Resolve a schema based on pointer * * URIs can have a fragment at the end in the format of * #/path/to/object and we are to look up the 'path' property of * the first object then the 'to' and 'object' properties. * * @param object $jsonSchema JSON Schema contents * @param string $uri JSON Schema URI * * @throws ResourceNotFoundException * * @return object JSON Schema after walking down the fragment pieces */ public function resolvePointer($jsonSchema, $uri) { $resolver = new UriResolver(); $parsed = $resolver->parse($uri); if (empty($parsed['fragment'])) { return $jsonSchema; } $path = explode('/', $parsed['fragment']); while ($path) { $pathElement = array_shift($path); if (!empty($pathElement)) { $pathElement = str_replace('~1', '/', $pathElement); $pathElement = str_replace('~0', '~', $pathElement); if (!empty($jsonSchema->$pathElement)) { $jsonSchema = $jsonSchema->$pathElement; } else { throw new ResourceNotFoundException( 'Fragment "' . $parsed['fragment'] . '" not found' . ' in ' . $uri ); } if (!is_object($jsonSchema)) { throw new ResourceNotFoundException( 'Fragment part "' . $pathElement . '" is no object ' . ' in ' . $uri ); } } } return $jsonSchema; } /** * {@inheritdoc} */ public function retrieve($uri, $baseUri = null, $translate = true) { $resolver = new UriResolver(); $resolvedUri = $fetchUri = $resolver->resolve($uri, $baseUri); //fetch URL without #fragment $arParts = $resolver->parse($resolvedUri); if (isset($arParts['fragment'])) { unset($arParts['fragment']); $fetchUri = $resolver->generate($arParts); } // apply URI translations if ($translate) { $fetchUri = $this->translate($fetchUri); } $jsonSchema = $this->loadSchema($fetchUri); // Use the JSON pointer if specified $jsonSchema = $this->resolvePointer($jsonSchema, $resolvedUri); if ($jsonSchema instanceof \stdClass) { $jsonSchema->id = $resolvedUri; } return $jsonSchema; } /** * Fetch a schema from the given URI, json-decode it and return it. * Caches schema objects. * * @param string $fetchUri Absolute URI * * @return object JSON schema object */ protected function loadSchema($fetchUri) { if (isset($this->schemaCache[$fetchUri])) { return $this->schemaCache[$fetchUri]; } $uriRetriever = $this->getUriRetriever(); $contents = $this->uriRetriever->retrieve($fetchUri); $this->confirmMediaType($uriRetriever, $fetchUri); $jsonSchema = json_decode($contents); if (JSON_ERROR_NONE < $error = json_last_error()) { throw new JsonDecodingException($error); } $this->schemaCache[$fetchUri] = $jsonSchema; return $jsonSchema; } /** * Set the URI Retriever * * @param UriRetrieverInterface $uriRetriever * * @return $this for chaining */ public function setUriRetriever(UriRetrieverInterface $uriRetriever) { $this->uriRetriever = $uriRetriever; return $this; } /** * Parses a URI into five main components * * @param string $uri * * @return array */ public function parse($uri) { preg_match('|^(([^:/?#]+):)?(//([^/?#]*))?([^?#]*)(\?([^#]*))?(#(.*))?|', $uri, $match); $components = array(); if (5 < count($match)) { $components = array( 'scheme' => $match[2], 'authority' => $match[4], 'path' => $match[5] ); } if (7 < count($match)) { $components['query'] = $match[7]; } if (9 < count($match)) { $components['fragment'] = $match[9]; } return $components; } /** * Builds a URI based on n array with the main components * * @param array $components * * @return string */ public function generate(array $components) { $uri = $components['scheme'] . '://' . $components['authority'] . $components['path']; if (array_key_exists('query', $components)) { $uri .= $components['query']; } if (array_key_exists('fragment', $components)) { $uri .= $components['fragment']; } return $uri; } /** * Resolves a URI * * @param string $uri Absolute or relative * @param string $baseUri Optional base URI * * @return string */ public function resolve($uri, $baseUri = null) { $components = $this->parse($uri); $path = $components['path']; if ((array_key_exists('scheme', $components)) && ('http' === $components['scheme'])) { return $uri; } $baseComponents = $this->parse($baseUri); $basePath = $baseComponents['path']; $baseComponents['path'] = UriResolver::combineRelativePathWithBasePath($path, $basePath); return $this->generate($baseComponents); } /** * @param string $uri * * @return bool */ public function isValid($uri) { $components = $this->parse($uri); return !empty($components); } /** * Set a URL translation rule */ public function setTranslation($from, $to) { $this->translationMap[$from] = $to; } /** * Apply URI translation rules */ public function translate($uri) { foreach ($this->translationMap as $from => $to) { $uri = preg_replace($from, $to, $uri); } // translate references to local files within the json-schema package $uri = preg_replace('|^package://|', sprintf('file://%s/', realpath(__DIR__ . '/../../..')), $uri); return $uri; } } <?php namespace Gettext\Languages; use Exception; /** * Main class to convert the plural rules of a language from CLDR to gettext. */ class Language { /** * The language ID. * * @var string */ public $id; /** * The language name. * * @var string */ public $name; /** * If this language is deprecated: the gettext code of the new language. * * @var string|null */ public $supersededBy; /** * The script name. * * @var string|null */ public $script; /** * The territory name. * * @var string|null */ public $territory; /** * The name of the base language. * * @var string|null */ public $baseLanguage; /** * The list of categories. * * @var \Gettext\Languages\Category[] */ public $categories; /** * The gettext formula to decide which category should be applied. * * @var string */ public $formula; /** * Initialize the instance and parse the language code. * * @param array $info The result of CldrData::getLanguageInfo() * * @throws \Exception throws an Exception if $fullId is not valid */ private function __construct($info) { $this->id = $info['id']; $this->name = $info['name']; $this->supersededBy = isset($info['supersededBy']) ? $info['supersededBy'] : null; $this->script = isset($info['script']) ? $info['script'] : null; $this->territory = isset($info['territory']) ? $info['territory'] : null; $this->baseLanguage = isset($info['baseLanguage']) ? $info['baseLanguage'] : null; // Let's build the category list $this->categories = array(); foreach ($info['categories'] as $cldrCategoryId => $cldrFormulaAndExamples) { $category = new Category($cldrCategoryId, $cldrFormulaAndExamples); foreach ($this->categories as $c) { if ($category->id === $c->id) { throw new Exception("The category '{$category->id}' is specified more than once"); } } $this->categories[] = $category; } if (empty($this->categories)) { throw new Exception("The language '{$info['id']}' does not have any plural category"); } // Let's sort the categories from 'zero' to 'other' usort($this->categories, function (Category $category1, Category $category2) { return array_search($category1->id, CldrData::$categories) - array_search($category2->id, CldrData::$categories); }); // The 'other' category should always be there if ($this->categories[count($this->categories) - 1]->id !== CldrData::OTHER_CATEGORY) { throw new Exception("The language '{$info['id']}' does not have the '" . CldrData::OTHER_CATEGORY . "' plural category"); } $this->checkAlwaysTrueCategories(); $this->checkAlwaysFalseCategories(); $this->checkAllCategoriesWithExamples(); $this->formula = $this->buildFormula(); } /** * Return a list of all languages available. * * @throws \Exception * * @return \Gettext\Languages\Language[] */ public static function getAll() { $result = array(); foreach (array_keys(CldrData::getLanguageNames()) as $cldrLanguageId) { $result[] = new self(CldrData::getLanguageInfo($cldrLanguageId)); } return $result; } /** * Return a Language instance given the language id. * * @param string $id * * @return \Gettext\Languages\Language|null */ public static function getById($id) { $result = null; $info = CldrData::getLanguageInfo($id); if (isset($info)) { $result = new self($info); } return $result; } /** * Returns a clone of this instance with all the strings to US-ASCII. * * @return \Gettext\Languages\Language */ public function getUSAsciiClone() { $clone = clone $this; self::asciifier($clone->name); self::asciifier($clone->formula); $clone->categories = array(); foreach ($this->categories as $category) { $categoryClone = clone $category; self::asciifier($categoryClone->examples); $clone->categories[] = $categoryClone; } return $clone; } /** * Build the formula starting from the currently defined categories. * * @param bool $withoutParenthesis TRUE to build a formula in standard gettext format, FALSE (default) to build a PHP-compatible formula * * @return string */ public function buildFormula($withoutParenthesis = false) { $numCategories = count($this->categories); switch ($numCategories) { case 1: // Just one category return '0'; case 2: return self::reduceFormula(self::reverseFormula($this->categories[0]->formula)); default: $formula = (string) ($numCategories - 1); for ($i = $numCategories - 2; $i >= 0; $i--) { $f = self::reduceFormula($this->categories[$i]->formula); if (!$withoutParenthesis && !preg_match('/^\([^()]+\)$/', $f)) { $f = "(${f})"; } $formula = "${f} ? ${i} : ${formula}"; if (!$withoutParenthesis && $i > 0) { $formula = "(${formula})"; } } return $formula; } } /** * Let's look for categories that will always occur. * This because with decimals (CLDR) we may have more cases, with integers (gettext) we have just one case. * If we found that (single) category we reduce the categories to that one only. * * @throws \Exception */ private function checkAlwaysTrueCategories() { $alwaysTrueCategory = null; foreach ($this->categories as $category) { if ($category->formula === true) { if (!isset($category->examples)) { throw new Exception("The category '{$category->id}' should always occur, but it does not have examples (so for CLDR it will never occur for integers!)"); } $alwaysTrueCategory = $category; break; } } if (isset($alwaysTrueCategory)) { foreach ($this->categories as $category) { if (($category !== $alwaysTrueCategory) && isset($category->examples)) { throw new Exception("The category '{$category->id}' should never occur, but it has some examples (so for CLDR it will occur!)"); } } $alwaysTrueCategory->id = CldrData::OTHER_CATEGORY; $alwaysTrueCategory->formula = null; $this->categories = array($alwaysTrueCategory); } } /** * Let's look for categories that will never occur. * This because with decimals (CLDR) we may have more cases, with integers (gettext) we have some less cases. * If we found those categories we strip them out. * * @throws \Exception */ private function checkAlwaysFalseCategories() { $filtered = array(); foreach ($this->categories as $category) { if ($category->formula === false) { if (isset($category->examples)) { throw new Exception("The category '{$category->id}' should never occur, but it has examples (so for CLDR it may occur!)"); } } else { $filtered[] = $category; } } $this->categories = $filtered; } /** * Let's look for categories that don't have examples. * This because with decimals (CLDR) we may have more cases, with integers (gettext) we have some less cases. * If we found those categories, we check that they never occur and we strip them out. * * @throws \Exception */ private function checkAllCategoriesWithExamples() { $allCategoriesIds = array(); $goodCategories = array(); $badCategories = array(); $badCategoriesIds = array(); foreach ($this->categories as $category) { $allCategoriesIds[] = $category->id; if (isset($category->examples)) { $goodCategories[] = $category; } else { $badCategories[] = $category; $badCategoriesIds[] = $category->id; } } if (empty($badCategories)) { return; } $removeCategoriesWithoutExamples = false; switch (implode(',', $badCategoriesIds) . '@' . implode(',', $allCategoriesIds)) { case CldrData::OTHER_CATEGORY . '@one,few,many,' . CldrData::OTHER_CATEGORY: switch ($this->buildFormula()) { case '(n % 10 == 1 && n % 100 != 11) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : ((n % 10 == 0 || n % 10 >= 5 && n % 10 <= 9 || n % 100 >= 11 && n % 100 <= 14) ? 2 : 3))': // Numbers ending with 0 => case 2 ('many') // Numbers ending with 1 but not with 11 => case 0 ('one') // Numbers ending with 11 => case 2 ('many') // Numbers ending with 2 but not with 12 => case 1 ('few') // Numbers ending with 12 => case 2 ('many') // Numbers ending with 3 but not with 13 => case 1 ('few') // Numbers ending with 13 => case 2 ('many') // Numbers ending with 4 but not with 14 => case 1 ('few') // Numbers ending with 14 => case 2 ('many') // Numbers ending with 5 => case 2 ('many') // Numbers ending with 6 => case 2 ('many') // Numbers ending with 7 => case 2 ('many') // Numbers ending with 8 => case 2 ('many') // Numbers ending with 9 => case 2 ('many') // => the 'other' case never occurs: use 'other' for 'many' $removeCategoriesWithoutExamples = true; break; case '(n == 1) ? 0 : ((n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14)) ? 1 : ((n != 1 && (n % 10 == 0 || n % 10 == 1) || n % 10 >= 5 && n % 10 <= 9 || n % 100 >= 12 && n % 100 <= 14) ? 2 : 3))': // Numbers ending with 0 => case 2 ('many') // Numbers ending with 1 but not number 1 => case 2 ('many') // Number 1 => case 0 ('one') // Numbers ending with 2 but not with 12 => case 1 ('few') // Numbers ending with 12 => case 2 ('many') // Numbers ending with 3 but not with 13 => case 1 ('few') // Numbers ending with 13 => case 2 ('many') // Numbers ending with 4 but not with 14 => case 1 ('few') // Numbers ending with 14 => case 2 ('many') // Numbers ending with 5 => case 2 ('many') // Numbers ending with 6 => case 2 ('many') // Numbers ending with 7 => case 2 ('many') // Numbers ending with 8 => case 2 ('many') // Numbers ending with 9 => case 2 ('many') // => the 'other' case never occurs: use 'other' for 'many' $removeCategoriesWithoutExamples = true; break; } } if (!$removeCategoriesWithoutExamples) { throw new Exception("Unhandled case of plural categories without examples '" . implode(', ', $badCategoriesIds) . "' out of '" . implode(', ', $allCategoriesIds) . "'"); } if ($badCategories[count($badCategories) - 1]->id === CldrData::OTHER_CATEGORY) { // We're removing the 'other' cagory: let's change the last good category to 'other' $lastGood = $goodCategories[count($goodCategories) - 1]; $lastGood->id = CldrData::OTHER_CATEGORY; $lastGood->formula = null; } $this->categories = $goodCategories; } /** * Reverse a formula. * * @param string $formula * * @throws \Exception * * @return string */ private static function reverseFormula($formula) { if (preg_match('/^n( % \d+)? == \d+(\.\.\d+|,\d+)*?$/', $formula)) { return str_replace(' == ', ' != ', $formula); } if (preg_match('/^n( % \d+)? != \d+(\.\.\d+|,\d+)*?$/', $formula)) { return str_replace(' != ', ' == ', $formula); } if (preg_match('/^\(?n == \d+ \|\| n == \d+\)?$/', $formula)) { return trim(str_replace(array(' == ', ' || '), array(' != ', ' && '), $formula), '()'); } $m = null; if (preg_match('/^(n(?: % \d+)?) == (\d+) && (n(?: % \d+)?) != (\d+)$/', $formula, $m)) { return "{$m[1]} != {$m[2]} || {$m[3]} == {$m[4]}"; } switch ($formula) { case '(n == 1 || n == 2 || n == 3) || n % 10 != 4 && n % 10 != 6 && n % 10 != 9': return 'n != 1 && n != 2 && n != 3 && (n % 10 == 4 || n % 10 == 6 || n % 10 == 9)'; case '(n == 0 || n == 1) || n >= 11 && n <= 99': return 'n >= 2 && (n < 11 || n > 99)'; } throw new Exception("Unable to reverse the formula '${formula}'"); } /** * Reduce some excessively complex formulas. * * @param string $formula * * @return string */ private static function reduceFormula($formula) { $map = array( 'n != 0 && n != 1' => 'n > 1', '(n == 0 || n == 1) && n != 0' => 'n == 1', ); return isset($map[$formula]) ? $map[$formula] : $formula; } /** * Take one variable and, if it's a string, we transliterate it to US-ASCII. * * @param mixed $value the variable to work on * * @throws \Exception */ private static function asciifier(&$value) { if (is_string($value) && $value !== '') { // Avoid converting from 'Ÿ' to '"Y', let's prefer 'Y' $transliterated = strtr($value, array( 'À' => 'A', '�' => 'A', 'Â' => 'A', 'Ã' => 'A', 'Ä' => 'A', 'È' => 'E', 'É' => 'E', 'Ê' => 'E', 'Ë' => 'E', 'Ì' => 'I', '�' => 'I', 'Î' => 'I', '�' => 'I', 'Ñ' => 'N', 'Ò' => 'O', 'Ó' => 'O', 'Ô' => 'O', 'Õ' => 'O', 'Ö' => 'O', 'Ù' => 'U', 'Ú' => 'U', 'Û' => 'U', 'Ü' => 'U', 'Ÿ' => 'Y', '�' => 'Y', 'à' => 'a', 'á' => 'a', 'â' => 'a', 'ã' => 'a', 'ä' => 'a', 'è' => 'e', 'é' => 'e', 'ê' => 'e', 'ë' => 'e', 'ì' => 'i', 'í' => 'i', 'î' => 'i', 'ï' => 'i', 'ñ' => 'n', 'ò' => 'o', 'ó' => 'o', 'ô' => 'o', 'õ' => 'o', 'ö' => 'o', 'ù' => 'u', 'ú' => 'u', 'û' => 'u', 'ü' => 'u', 'ý' => 'y', 'ÿ' => 'y', )); $transliterated = @iconv('UTF-8', 'US-ASCII//IGNORE//TRANSLIT', $transliterated); if ($transliterated === false || $transliterated === '') { throw new Exception("Unable to transliterate '${value}'"); } $value = $transliterated; } } } <?php namespace Gettext\Languages; use Exception; /** * Holds the CLDR data. */ class CldrData { /** * Super-special plural category: this should always be present for any language. * * @var string */ const OTHER_CATEGORY = 'other'; /** * The list of the plural categories, sorted from 'zero' to 'other'. * * @var string[] */ public static $categories = array('zero', 'one', 'two', 'few', 'many', self::OTHER_CATEGORY); /** * The loaded CLDR data. * * @var array */ private static $data; /** * @var array */ private static $plurals; /** * Returns a dictionary containing the language names. * The keys are the language identifiers. * The values are the language names in US English. * * @return string[] */ public static function getLanguageNames() { return self::getData('languages'); } /** * Return a dictionary containing the territory names (in US English). * The keys are the territory identifiers. * The values are the territory names in US English. * * @return string[] */ public static function getTerritoryNames() { return self::getData('territories'); } /** * Return a dictionary containing the script names (in US English). * The keys are the script identifiers. * The values are the script names in US English. * * @param bool $standAlone set to true to retrieve the stand-alone script names, false otherwise * * @return string[] */ public static function getScriptNames($standAlone) { return self::getData($standAlone ? 'standAloneScripts' : 'scripts'); } /** * A dictionary containing the plural rules. * The keys are the language identifiers. * The values are arrays whose keys are the CLDR category names and the values are the CLDR category definition. * * @example The English key-value pair is somethink like this: * <code><pre> * "en": { * "pluralRule-count-one": "i = 1 and v = 0 @integer 1", * "pluralRule-count-other": " @integer 0, 2~16, 100, 1000, 10000, 100000, 1000000, … @decimal 0.0~1.5, 10.0, 100.0, 1000.0, 10000.0, 100000.0, 1000000.0, …" * } * </pre></code> * * @return array */ public static function getPlurals() { return self::getData('plurals'); } /** * Return a list of superseded language codes. * * @return array keys are the former language codes, values are the new language/locale codes */ public static function getSupersededLanguages() { return self::getData('supersededLanguages'); } /** * Retrieve the name of a language, as well as if a language code is deprecated in favor of another language code. * * @param string $id the language identifier * * @return array|null Returns an array with the keys 'id' (normalized), 'name', 'supersededBy' (optional), 'territory' (optional), 'script' (optional), 'baseLanguage' (optional), 'categories'. If $id is not valid returns null. */ public static function getLanguageInfo($id) { $result = null; $matches = array(); if (preg_match('/^([a-z]{2,3})(?:[_\-]([a-z]{4}))?(?:[_\-]([a-z]{2}|[0-9]{3}))?(?:$|-)/i', $id, $matches)) { $languageId = strtolower($matches[1]); $scriptId = (isset($matches[2]) && ($matches[2] !== '')) ? ucfirst(strtolower($matches[2])) : null; $territoryId = (isset($matches[3]) && ($matches[3] !== '')) ? strtoupper($matches[3]) : null; $normalizedId = $languageId; if (isset($scriptId)) { $normalizedId .= '_' . $scriptId; } if (isset($territoryId)) { $normalizedId .= '_' . $territoryId; } // Structure precedence: see Likely Subtags - http://www.unicode.org/reports/tr35/tr35-31/tr35.html#Likely_Subtags $variants = array(); $variantsWithScript = array(); $variantsWithTerritory = array(); if (isset($scriptId) && isset($territoryId)) { $variantsWithTerritory[] = $variantsWithScript[] = $variants[] = "{$languageId}_{$scriptId}_{$territoryId}"; } if (isset($scriptId)) { $variantsWithScript[] = $variants[] = "{$languageId}_{$scriptId}"; } if (isset($territoryId)) { $variantsWithTerritory[] = $variants[] = "{$languageId}_{$territoryId}"; } $variants[] = $languageId; $allGood = true; $scriptName = null; $scriptStandAloneName = null; if (isset($scriptId)) { $scriptNames = self::getScriptNames(false); if (isset($scriptNames[$scriptId])) { $scriptName = $scriptNames[$scriptId]; $scriptStandAloneNames = self::getScriptNames(true); $scriptStandAloneName = $scriptStandAloneNames[$scriptId]; } else { $allGood = false; } } $territoryName = null; if (isset($territoryId)) { $territoryNames = self::getTerritoryNames(); if (isset($territoryNames[$territoryId])) { if ($territoryId !== '001') { $territoryName = $territoryNames[$territoryId]; } } else { $allGood = false; } } $languageName = null; $languageNames = self::getLanguageNames(); foreach ($variants as $variant) { if (isset($languageNames[$variant])) { $languageName = $languageNames[$variant]; if (isset($scriptName) && (!in_array($variant, $variantsWithScript))) { $languageName = $scriptName . ' ' . $languageName; } if (isset($territoryName) && (!in_array($variant, $variantsWithTerritory))) { $languageName .= ' (' . $territoryNames[$territoryId] . ')'; } break; } } if (!isset($languageName)) { $allGood = false; } $baseLanguage = null; if (isset($scriptId) || isset($territoryId)) { if (isset($languageNames[$languageId]) && ($languageNames[$languageId] !== $languageName)) { $baseLanguage = $languageNames[$languageId]; } } $plural = null; $plurals = self::getPlurals(); foreach ($variants as $variant) { if (isset($plurals[$variant])) { $plural = $plurals[$variant]; break; } } if (!isset($plural)) { $allGood = false; } $supersededBy = null; $supersededBys = self::getSupersededLanguages(); foreach ($variants as $variant) { if (isset($supersededBys[$variant])) { $supersededBy = $supersededBys[$variant]; break; } } if ($allGood) { $result = array(); $result['id'] = $normalizedId; $result['name'] = $languageName; if (isset($supersededBy)) { $result['supersededBy'] = $supersededBy; } if (isset($scriptStandAloneName)) { $result['script'] = $scriptStandAloneName; } if (isset($territoryName)) { $result['territory'] = $territoryName; } if (isset($baseLanguage)) { $result['baseLanguage'] = $baseLanguage; } $result['categories'] = $plural; } } return $result; } /** * Returns the loaded CLDR data. * * @param string $key Can be 'languages', 'territories', 'plurals', 'supersededLanguages', 'scripts', 'standAloneScripts' * * @return array */ private static function getData($key) { if (!isset(self::$data)) { $fixKeys = function ($list, &$standAlone = null) { $result = array(); $standAlone = array(); $match = null; foreach ($list as $key => $value) { $variant = ''; if (preg_match('/^(.+)-alt-(short|variant|stand-alone|long|menu)$/', $key, $match)) { $key = $match[1]; $variant = $match[2]; } $key = str_replace('-', '_', $key); switch ($key) { case 'root': // Language: Root case 'und': // Language: Unknown Language case 'zxx': // Language: No linguistic content case 'ZZ': // Territory: Unknown Region case 'Zinh': // Script: Inherited case 'Zmth': // Script: Mathematical Notation case 'Zsym': // Script: Symbols case 'Zxxx': // Script: Unwritten case 'Zyyy': // Script: Common case 'Zzzz': // Script: Unknown Script break; default: switch ($variant) { case 'stand-alone': $standAlone[$key] = $value; break; case '': $result[$key] = $value; break; } break; } } return $result; }; $data = array(); $json = json_decode(file_get_contents(__DIR__ . '/cldr-data/main/en-US/languages.json'), true); $data['languages'] = $fixKeys($json['main']['en-US']['localeDisplayNames']['languages']); $json = json_decode(file_get_contents(__DIR__ . '/cldr-data/main/en-US/territories.json'), true); $data['territories'] = $fixKeys($json['main']['en-US']['localeDisplayNames']['territories']); $json = json_decode(file_get_contents(__DIR__ . '/cldr-data/supplemental/plurals.json'), true); $data['plurals'] = $fixKeys($json['supplemental']['plurals-type-cardinal']); $json = json_decode(file_get_contents(__DIR__ . '/cldr-data/main/en-US/scripts.json'), true); $data['scripts'] = $fixKeys($json['main']['en-US']['localeDisplayNames']['scripts'], $data['standAloneScripts']); $data['standAloneScripts'] = array_merge($data['scripts'], $data['standAloneScripts']); $data['scripts'] = array_merge($data['standAloneScripts'], $data['scripts']); $data['supersededLanguages'] = array(); // Remove the languages for which we don't have plurals $m = null; foreach (array_keys(array_diff_key($data['languages'], $data['plurals'])) as $missingPlural) { if (preg_match('/^([a-z]{2,3})_/', $missingPlural, $m)) { if (!isset($data['plurals'][$m[1]])) { unset($data['languages'][$missingPlural]); } } else { unset($data['languages'][$missingPlural]); } } // Fix the languages for which we have plurals $formerCodes = array( 'in' => 'id', // former Indonesian 'iw' => 'he', // former Hebrew 'ji' => 'yi', // former Yiddish 'jw' => 'jv', // former Javanese 'mo' => 'ro_MD', // former Moldavian ); $knownMissingLanguages = array( 'guw' => 'Gun', 'nah' => 'Nahuatl', 'smi' => 'Sami', ); foreach (array_keys(array_diff_key($data['plurals'], $data['languages'])) as $missingLanguage) { if (isset($formerCodes[$missingLanguage]) && isset($data['languages'][$formerCodes[$missingLanguage]])) { $data['languages'][$missingLanguage] = $data['languages'][$formerCodes[$missingLanguage]]; $data['supersededLanguages'][$missingLanguage] = $formerCodes[$missingLanguage]; } else { if (isset($knownMissingLanguages[$missingLanguage])) { $data['languages'][$missingLanguage] = $knownMissingLanguages[$missingLanguage]; } else { throw new Exception("We have the plural rule for the language '${missingLanguage}' but we don't have its language name"); } } } ksort($data['languages'], SORT_STRING); ksort($data['territories'], SORT_STRING); ksort($data['plurals'], SORT_STRING); ksort($data['scripts'], SORT_STRING); ksort($data['standAloneScripts'], SORT_STRING); ksort($data['supersededLanguages'], SORT_STRING); self::$data = $data; } if (!isset(self::$data[$key])) { throw new Exception("Invalid CLDR data key: '${key}'"); } return self::$data[$key]; } } <?php namespace Gettext\Languages\Exporter; class Html extends Exporter { /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::getDescription() */ public static function getDescription() { return 'Build a HTML table'; } /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::toStringDo() */ protected static function toStringDo($languages) { return self::buildTable($languages, false); } protected static function h($str) { return htmlspecialchars($str, ENT_COMPAT, 'UTF-8'); } protected static function buildTable($languages, $forDocs) { $prefix = $forDocs ? ' ' : ''; $lines = array(); $lines[] = $prefix . '<table' . ($forDocs ? ' class="table table-bordered table-condensed table-striped"' : '') . '>'; $lines[] = $prefix . ' <thead>'; $lines[] = $prefix . ' <tr>'; $lines[] = $prefix . ' <th>Language code</th>'; $lines[] = $prefix . ' <th>Language name</th>'; $lines[] = $prefix . ' <th># plurals</th>'; $lines[] = $prefix . ' <th>Formula</th>'; $lines[] = $prefix . ' <th>Plurals</th>'; $lines[] = $prefix . ' </tr>'; $lines[] = $prefix . ' </thead>'; $lines[] = $prefix . ' <tbody>'; foreach ($languages as $lc) { $lines[] = $prefix . ' <tr>'; $lines[] = $prefix . ' <td>' . $lc->id . '</td>'; $name = self::h($lc->name); if (isset($lc->supersededBy)) { $name .= '<br /><small><span>Superseded by</span> ' . $lc->supersededBy . '</small>'; } $lines[] = $prefix . ' <td>' . $name . '</td>'; $lines[] = $prefix . ' <td>' . count($lc->categories) . '</td>'; $lines[] = $prefix . ' <td>' . self::h($lc->formula) . '</td>'; $cases = array(); foreach ($lc->categories as $c) { $cases[] = '<li><span>' . $c->id . '</span><code>' . self::h($c->examples) . '</code></li>'; } $lines[] = $prefix . ' <td><ol' . ($forDocs ? ' class="cases"' : '') . ' start="0">' . implode('', $cases) . '</ol></td>'; $lines[] = $prefix . ' </tr>'; } $lines[] = $prefix . ' </tbody>'; $lines[] = $prefix . '</table>'; return implode("\n", $lines); } } <?php namespace Gettext\Languages\Exporter; class Php extends Exporter { /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::getDescription() */ public static function getDescription() { return 'Build a PHP array'; } /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::toStringDo() */ protected static function toStringDo($languages) { $lines = array(); $lines[] = '<?php'; $lines[] = 'return array('; foreach ($languages as $lc) { $lines[] = ' \'' . $lc->id . '\' => array('; $lines[] = ' \'name\' => \'' . addslashes($lc->name) . '\','; if (isset($lc->supersededBy)) { $lines[] = ' \'supersededBy\' => \'' . $lc->supersededBy . '\','; } if (isset($lc->script)) { $lines[] = ' \'script\' => \'' . addslashes($lc->script) . '\','; } if (isset($lc->territory)) { $lines[] = ' \'territory\' => \'' . addslashes($lc->territory) . '\','; } if (isset($lc->baseLanguage)) { $lines[] = ' \'baseLanguage\' => \'' . addslashes($lc->baseLanguage) . '\','; } $lines[] = ' \'formula\' => \'' . $lc->formula . '\','; $lines[] = ' \'plurals\' => ' . count($lc->categories) . ','; $catNames = array(); foreach ($lc->categories as $c) { $catNames[] = "'{$c->id}'"; } $lines[] = ' \'cases\' => array(' . implode(', ', $catNames) . '),'; $lines[] = ' \'examples\' => array('; foreach ($lc->categories as $c) { $lines[] = ' \'' . $c->id . '\' => \'' . $c->examples . '\','; } $lines[] = ' ),'; $lines[] = ' ),'; } $lines[] = ');'; $lines[] = ''; return implode("\n", $lines); } } <?php namespace Gettext\Languages\Exporter; class Docs extends Html { /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::isForPublicUse() */ public static function isForPublicUse() { return false; } /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::getDescription() */ public static function getDescription() { return 'Build the page https://php-gettext.github.io/Languages/'; } /** * {@inheritdoc} * * @see \Gettext\Languages\Exporter\Exporter::toStringDo() */ protected static function toStringDo($languages) { $result = <<<EOT <!doctype html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="author" content="Michele Locati"> <title>gettext plural rules - built from CLDR
EOT; $result .= static::buildTable($languages, true); $result .= << EOT; return $result; } } id . '\n"'; $lines[] = '"Plural-Forms: nplurals=' . count($language->categories) . '; plural=' . $language->formula . '\n"'; $lines[] = ''; return implode("\n", $lines); } } $class) { if (call_user_func(self::getExporterClassName($handle) . '::isForPublicUse') === true) { $result[$handle] = $class; } } } else { $result = self::$exporters; } return $result; } /** * Return the description of a specific exporter. * * @param string $exporterHandle the handle of the exporter * * @throws \Exception throws an Exception if $exporterHandle is not valid * * @return string */ final public static function getExporterDescription($exporterHandle) { $exporters = self::getExporters(); if (!isset($exporters[$exporterHandle])) { throw new Exception("Invalid exporter handle: '${exporterHandle}'"); } return call_user_func(self::getExporterClassName($exporterHandle) . '::getDescription'); } /** * Returns the fully qualified class name of a exporter given its handle. * * @param string $exporterHandle the exporter class handle * * @return string */ final public static function getExporterClassName($exporterHandle) { return __NAMESPACE__ . '\\' . ucfirst(strtolower($exporterHandle)); } /** * Convert a list of Language instances to string. * * @param \Gettext\Languages\Language[] $languages the Language instances to convert * * @return string */ final public static function toString($languages, $options = null) { if (isset($options) && is_array($options)) { if (isset($options['us-ascii']) && $options['us-ascii']) { $asciiList = array(); foreach ($languages as $language) { $asciiList[] = $language->getUSAsciiClone(); } $languages = $asciiList; } } return static::toStringDo($languages); } /** * Save the Language instances to a file. * * @param \Gettext\Languages\Language[] $languages the Language instances to convert * * @throws \Exception */ final public static function toFile($languages, $filename, $options = null) { $data = self::toString($languages, $options); if (@file_put_contents($filename, $data) === false) { throw new Exception("Error writing data to '${filename}'"); } } /** * Is this exporter for public use? * * @return bool */ public static function isForPublicUse() { return true; } /** * Return a short description of the exporter. * * @return string */ public static function getDescription() { throw new Exception(get_called_class() . ' does not implement the method ' . __FUNCTION__); } /** * Convert a list of Language instances to string. * * @param \Gettext\Languages\Language[] $languages the Language instances to convert * * @return string */ protected static function toStringDo($languages) { throw new Exception(get_called_class() . ' does not implement the method ' . __FUNCTION__); } } loadXML(''); $xLanguages = $xml->firstChild; foreach ($languages as $language) { $xLanguage = $xml->createElement('language'); $xLanguage->setAttribute('id', $language->id); $xLanguage->setAttribute('name', $language->name); if (isset($language->supersededBy)) { $xLanguage->setAttribute('supersededBy', $language->supersededBy); } if (isset($language->script)) { $xLanguage->setAttribute('script', $language->script); } if (isset($language->territory)) { $xLanguage->setAttribute('territory', $language->territory); } if (isset($language->baseLanguage)) { $xLanguage->setAttribute('baseLanguage', $language->baseLanguage); } $xLanguage->setAttribute('formula', $language->formula); foreach ($language->categories as $category) { $xCategory = $xml->createElement('category'); $xCategory->setAttribute('id', $category->id); $xCategory->setAttribute('examples', $category->examples); $xLanguage->appendChild($xCategory); } $xLanguages->appendChild($xLanguage); } $xml->formatOutput = true; return $xml->saveXML(); } } name; if (isset($language->supersededBy)) { $item['supersededBy'] = $language->supersededBy; } if (isset($language->script)) { $item['script'] = $language->script; } if (isset($language->territory)) { $item['territory'] = $language->territory; } if (isset($language->baseLanguage)) { $item['baseLanguage'] = $language->baseLanguage; } $item['formula'] = $language->formula; $item['plurals'] = count($language->categories); $item['cases'] = array(); $item['examples'] = array(); foreach ($language->categories as $category) { $item['cases'][] = $category->id; $item['examples'][$category->id] = $category->examples; } $list[$language->id] = $item; } return json_encode($list, static::getEncodeOptions()); } } id = $matches[1]; $cldrFormulaAndExamplesNormalized = trim(preg_replace('/\s+/', ' ', $cldrFormulaAndExamples)); if (!preg_match('/^([^@]*)(?:@integer([^@]+))?(?:@decimal(?:[^@]+))?$/', $cldrFormulaAndExamplesNormalized, $matches)) { throw new Exception("Invalid CLDR category rule: ${cldrFormulaAndExamples}"); } $cldrFormula = trim($matches[1]); $s = isset($matches[2]) ? trim($matches[2]) : ''; $this->examples = ($s === '') ? null : $s; switch ($this->id) { case CldrData::OTHER_CATEGORY: if ($cldrFormula !== '') { throw new Exception("The '" . CldrData::OTHER_CATEGORY . "' category should not have any formula, but it has '${cldrFormula}'"); } $this->formula = null; break; default: if ($cldrFormula === '') { throw new Exception("The '{$this->id}' category does not have a formula"); } $this->formula = FormulaConverter::convertFormula($cldrFormula); break; } } /** * Return a list of numbers corresponding to the $examples value. * * @throws \Exception throws an Exception if we weren't able to expand the examples * * @return int[] */ public function getExampleIntegers() { return self::expandExamples($this->examples); } /** * Expand a list of examples as defined by CLDR. * * @param string $examples A string like '1, 2, 5...7, …'. * * @throws \Exception throws an Exception if we weren't able to expand $examples * * @return int[] */ public static function expandExamples($examples) { $result = array(); $m = null; if (substr($examples, -strlen(', …')) === ', …') { $examples = substr($examples, 0, strlen($examples) - strlen(', …')); } foreach (explode(',', str_replace(' ', '', $examples)) as $range) { if (preg_match('/^\d+$/', $range)) { $result[] = (int) $range; } elseif (preg_match('/^(\d+)~(\d+)$/', $range, $m)) { $from = (int) $m[1]; $to = (int) $m[2]; $delta = $to - $from; $step = (int) max(1, $delta / 100); for ($i = $from; $i < $to; $i += $step) { $result[] = $i; } $result[] = $to; } else { throw new Exception("Unhandled test range '${range}' in '${examples}'"); } } if (empty($result)) { throw new Exception("No test numbers from '${examples}'"); } return $result; } } the whole 'and' group is always false $gettextFormulaChunk = false; break; } if ($gettextAtom !== true) { $andSeparatedChunks[] = $gettextAtom; } } if (!isset($gettextFormulaChunk)) { if (empty($andSeparatedChunks)) { // All the atoms joined by 'and' always evaluate to true => the whole 'and' group is always true $gettextFormulaChunk = true; } else { $gettextFormulaChunk = implode(' && ', $andSeparatedChunks); // Special cases simplification switch ($gettextFormulaChunk) { case 'n >= 0 && n <= 2 && n != 2': $gettextFormulaChunk = 'n == 0 || n == 1'; break; } } } if ($gettextFormulaChunk === true) { // One part of the formula joined with the others by 'or' always evaluates to true => the whole formula always evaluates to true return true; } if ($gettextFormulaChunk !== false) { $orSeparatedChunks[] = $gettextFormulaChunk; } } if (empty($orSeparatedChunks)) { // All the parts joined by 'or' always evaluate to false => the whole formula always evaluates to false return false; } return implode(' || ', $orSeparatedChunks); } /** * Converts an atomic part of the CLDR formula to its gettext representation. * * @param string $cldrAtom the CLDR formula atom to convert * * @throws \Exception * * @return bool|string returns true if the gettext will always evaluate to true, false if gettext will always evaluate to false, return the gettext formula otherwise */ private static function convertAtom($cldrAtom) { $m = null; $gettextAtom = $cldrAtom; $gettextAtom = str_replace(' = ', ' == ', $gettextAtom); $gettextAtom = str_replace('i', 'n', $gettextAtom); if (preg_match('/^n( % \d+)? (!=|==) \d+$/', $gettextAtom)) { return $gettextAtom; } if (preg_match('/^n( % \d+)? (!=|==) \d+(,\d+|\.\.\d+)+$/', $gettextAtom)) { return self::expandAtom($gettextAtom); } if (preg_match('/^(?:v|w)(?: % 10+)? == (\d+)(?:\.\.\d+)?$/', $gettextAtom, $m)) { // For gettext: v == 0, w == 0 return (int) $m[1] === 0 ? true : false; } if (preg_match('/^(?:v|w)(?: % 10+)? != (\d+)(?:\.\.\d+)?$/', $gettextAtom, $m)) { // For gettext: v == 0, w == 0 return (int) $m[1] === 0 ? false : true; } if (preg_match('/^(?:f|t)(?: % 10+)? == (\d+)(?:\.\.\d+)?$/', $gettextAtom, $m)) { // f == empty, t == empty return (int) $m[1] === 0 ? true : false; } if (preg_match('/^(?:f|t)(?: % 10+)? != (\d+)(?:\.\.\d+)?$/', $gettextAtom, $m)) { // f == empty, t == empty return (int) $m[1] === 0 ? false : true; } throw new Exception("Unable to convert the formula chunk '${cldrAtom}' from CLDR to gettext"); } /** * Expands an atom containing a range (for instance: 'n == 1,3..5'). * * @param string $atom * * @throws \Exception * * @return string */ private static function expandAtom($atom) { $m = null; if (preg_match('/^(n(?: % \d+)?) (==|!=) (\d+(?:\.\.\d+|,\d+)+)$/', $atom, $m)) { $what = $m[1]; $op = $m[2]; $chunks = array(); foreach (explode(',', $m[3]) as $range) { $chunk = null; if ((!isset($chunk)) && preg_match('/^\d+$/', $range)) { $chunk = "${what} ${op} ${range}"; } if ((!isset($chunk)) && preg_match('/^(\d+)\.\.(\d+)$/', $range, $m)) { $from = (int) $m[1]; $to = (int) $m[2]; if (($to - $from) === 1) { switch ($op) { case '==': $chunk = "(${what} == ${from} || ${what} == ${to})"; break; case '!=': $chunk = "${what} != ${from} && ${what} == ${to}"; break; } } else { switch ($op) { case '==': $chunk = "${what} >= ${from} && ${what} <= ${to}"; break; case '!=': if ($what === 'n' && $from <= 0) { $chunk = "${what} > ${to}"; } else { $chunk = "(${what} < ${from} || ${what} > ${to})"; } break; } } } if (!isset($chunk)) { throw new Exception("Unhandled range '${range}' in '${atom}'"); } $chunks[] = $chunk; } if (count($chunks) === 1) { return $chunks[0]; } switch ($op) { case '==': return '(' . implode(' || ', $chunks) . ')'; break; case '!=': return implode(' && ', $chunks); } } throw new Exception("Unable to expand '${atom}'"); } } 'notes:', 'twig' => null, ]; /** * {@inheritdoc} */ public static function fromString($string, Translations $translations, array $options = []) { $options += static::$options; $twig = $options['twig'] ?: static::createTwig(); PhpCode::fromString($twig->compileSource(new Twig_Source($string, '')), $translations, $options); } /** * Returns a Twig instance. * * @return Twig_Environment */ protected static function createTwig() { $twig = new Twig_Environment(new Twig_Loader_Array(['' => ''])); $twig->addExtension(new Twig_Extensions_Extension_I18n()); return static::$options['twig'] = $twig; } } false, 'constants' => [], 'functions' => [ 'gettext' => 'gettext', '__' => 'gettext', 'ngettext' => 'ngettext', 'n__' => 'ngettext', 'pgettext' => 'pgettext', 'p__' => 'pgettext', 'dgettext' => 'dgettext', 'd__' => 'dgettext', 'dngettext' => 'dngettext', 'dn__' => 'dngettext', 'dpgettext' => 'dpgettext', 'dp__' => 'dpgettext', 'npgettext' => 'npgettext', 'np__' => 'npgettext', 'dnpgettext' => 'dnpgettext', 'dnp__' => 'dnpgettext', 'noop' => 'noop', 'noop__' => 'noop', ], ]; protected static $functionsScannerClass = 'Gettext\Utils\PhpFunctionsScanner'; /** * {@inheritdoc} * @throws Exception */ public static function fromString($string, Translations $translations, array $options = []) { static::fromStringMultiple($string, [$translations], $options); } /** * @inheritDoc * @throws Exception */ public static function fromStringMultiple($string, array $translations, array $options = []) { $options += static::$options; /** @var FunctionsScanner $functions */ $functions = new static::$functionsScannerClass($string); if ($options['extractComments'] !== false) { $functions->enableCommentsExtraction($options['extractComments']); } $functions->saveGettextFunctions($translations, $options); } /** * @inheritDoc */ public static function fromFileMultiple($file, array $translations, array $options = []) { foreach (static::getFiles($file) as $file) { $options['file'] = $file; static::fromStringMultiple(static::readFile($file), $translations, $options); } } /** * Decodes a T_CONSTANT_ENCAPSED_STRING string. * * @param string $value * * @return string */ public static function convertString($value) { if (strpos($value, '\\') === false) { return substr($value, 1, -1); } if ($value[0] === "'") { return strtr(substr($value, 1, -1), ['\\\\' => '\\', '\\\'' => '\'']); } $value = substr($value, 1, -1); return preg_replace_callback( '/\\\(n|r|t|v|e|f|\$|"|\\\|x[0-9A-Fa-f]{1,2}|u{[0-9a-f]{1,6}}|[0-7]{1,3})/', function ($match) { switch ($match[1][0]) { case 'n': return "\n"; case 'r': return "\r"; case 't': return "\t"; case 'v': return "\v"; case 'e': return "\e"; case 'f': return "\f"; case '$': return '$'; case '"': return '"'; case '\\': return '\\'; case 'x': return chr(hexdec(substr($match[1], 1))); case 'u': return static::unicodeChar(hexdec(substr($match[1], 1))); default: return chr(octdec($match[1])); } }, $value ); } /** * @param $dec * @return string|null * @see http://php.net/manual/en/function.chr.php#118804 */ protected static function unicodeChar($dec) { if ($dec < 0x80) { return chr($dec); } if ($dec < 0x0800) { return chr(0xC0 + ($dec >> 6)) . chr(0x80 + ($dec & 0x3f)); } if ($dec < 0x010000) { return chr(0xE0 + ($dec >> 12)) . chr(0x80 + (($dec >> 6) & 0x3f)) . chr(0x80 + ($dec & 0x3f)); } if ($dec < 0x200000) { return chr(0xF0 + ($dec >> 18)) . chr(0x80 + (($dec >> 12) & 0x3f)) . chr(0x80 + (($dec >> 6) & 0x3f)) . chr(0x80 + ($dec & 0x3f)); } return null; } } false ]; /** * {@inheritdoc} */ public static function fromString($string, Translations $translations, array $options = []) { $options += static::$options; $xml = new SimpleXMLElement($string, null, false); foreach ($xml->file as $file) { if (isset($file->notes)) { foreach ($file->notes->note as $note) { $translations->setHeader($note['id'], (string) $note); } } foreach ($file->unit as $unit) { foreach ($unit->segment as $segment) { $targets = []; foreach ($segment->target as $target) { $targets[] = (string) $target; } $translation = $translations->createNewTranslation(null, (string) $segment->source); if (isset($unit['id'])) { $unitId = (string) $unit['id']; $translation->addComment("XLIFF_UNIT_ID: $unitId"); if ($options['unitid_as_id']) { $translation->setId($unitId); } } $translation->setTranslation(array_shift($targets)); $translation->setPluralTranslations($targets); if (isset($unit->notes)) { foreach ($unit->notes->note as $note) { switch ($note['category']) { case 'context': $translation = $translation->getClone((string) $note); break; case 'extracted-comment': $translation->addExtractedComment((string) $note); break; case 'flag': $translation->addFlag((string) $note); break; case 'reference': $ref = explode(':', (string) $note, 2); $translation->addReference($ref[0], isset($ref[1]) ? $ref[1] : null); break; default: $translation->addComment((string) $note); break; } } } $translations[] = $translation; } } } } } withoutComponentTags(); } $string = $bladeCompiler->compileString($string); } else { $string = $options['facade']::compileString($string); } PhpCode::fromString($string, $translations, $options); } } createNewTranslation('', ''); for ($n = count($lines); $i < $n; ++$i) { $line = trim($lines[$i]); $line = static::fixMultiLines($line, $lines, $i); if ($line === '') { if ($translation->is('', '')) { static::extractHeaders($translation->getTranslation(), $translations); } elseif ($translation->hasOriginal()) { $translations[] = $translation; } $translation = $translations->createNewTranslation('', ''); continue; } $splitLine = preg_split('/\s+/', $line, 2); $key = $splitLine[0]; $data = isset($splitLine[1]) ? $splitLine[1] : ''; if ($key === '#~') { $translation->setDisabled(true); $splitLine = preg_split('/\s+/', $data, 2); $key = $splitLine[0]; $data = isset($splitLine[1]) ? $splitLine[1] : ''; } switch ($key) { case '#': $translation->addComment($data); $append = null; break; case '#.': $translation->addExtractedComment($data); $append = null; break; case '#,': foreach (array_map('trim', explode(',', trim($data))) as $value) { $translation->addFlag($value); } $append = null; break; case '#:': foreach (preg_split('/\s+/', trim($data)) as $value) { if (preg_match('/^(.+)(:(\d*))?$/U', $value, $matches)) { $translation->addReference($matches[1], isset($matches[3]) ? $matches[3] : null); } } $append = null; break; case 'msgctxt': $translation = $translation->getClone(static::convertString($data)); $append = 'Context'; break; case 'msgid': $translation = $translation->getClone(null, static::convertString($data)); $append = 'Original'; break; case 'msgid_plural': $translation->setPlural(static::convertString($data)); $append = 'Plural'; break; case 'msgstr': case 'msgstr[0]': $translation->setTranslation(static::convertString($data)); $append = 'Translation'; break; case 'msgstr[1]': $translation->setPluralTranslations([static::convertString($data)]); $append = 'PluralTranslation'; break; default: if (strpos($key, 'msgstr[') === 0) { $p = $translation->getPluralTranslations(); $p[] = static::convertString($data); $translation->setPluralTranslations($p); $append = 'PluralTranslation'; break; } if (isset($append)) { if ($append === 'Context') { $translation = $translation->getClone($translation->getContext() ."\n" .static::convertString($data)); break; } if ($append === 'Original') { $translation = $translation->getClone(null, $translation->getOriginal() ."\n" .static::convertString($data)); break; } if ($append === 'PluralTranslation') { $p = $translation->getPluralTranslations(); $p[] = array_pop($p)."\n".static::convertString($data); $translation->setPluralTranslations($p); break; } $getMethod = 'get'.$append; $setMethod = 'set'.$append; $translation->$setMethod($translation->$getMethod()."\n".static::convertString($data)); } break; } } if ($translation->hasOriginal() && !in_array($translation, iterator_to_array($translations))) { $translations[] = $translation; } } /** * Gets one string from multiline strings. * * @param string $line * @param array $lines * @param int &$i * * @return string */ protected static function fixMultiLines($line, array $lines, &$i) { for ($j = $i, $t = count($lines); $j < $t; ++$j) { if (substr($line, -1, 1) == '"' && isset($lines[$j + 1]) && substr(trim($lines[$j + 1]), 0, 1) == '"' ) { $line = substr($line, 0, -1).substr(trim($lines[$j + 1]), 1); } else { $i = $j; break; } } return $line; } /** * Convert a string from its PO representation. * * @param string $value * * @return string */ public static function convertString($value) { if (!$value) { return ''; } if ($value[0] === '"') { $value = substr($value, 1, -1); } return strtr( $value, [ '\\\\' => '\\', '\\a' => "\x07", '\\b' => "\x08", '\\t' => "\t", '\\n' => "\n", '\\v' => "\x0b", '\\f' => "\x0c", '\\r' => "\r", '\\"' => '"', ] ); } } ",", 'enclosure' => '"', 'escape_char' => "\\" ]; /** * {@inheritdoc} */ public static function fromString($string, Translations $translations, array $options = []) { $options += static::$options; $handle = fopen('php://memory', 'w'); fputs($handle, $string); rewind($handle); while ($row = static::fgetcsv($handle, $options)) { list($original, $translation) = $row + ['', '']; if ($original === '') { static::extractHeaders($translation, $translations); continue; } $translations->insert(null, $original)->setTranslation($translation); } fclose($handle); } } setDomain($headers['domain']); } if (!empty($headers['lang'])) { $translations->setLanguage($headers['lang']); } if (!empty($headers['plural-forms'])) { $translations->setHeader(Translations::HEADER_PLURAL, $headers['plural-forms']); } $context_glue = '\u0004'; foreach ($messages as $key => $translation) { $key = explode($context_glue, $key); $context = isset($key[1]) ? array_shift($key) : ''; $translations->insert($context, array_shift($key)) ->setTranslation(array_shift($translation)) ->setPluralTranslations($translation); } } } [], 'functions' => [ 'gettext' => 'gettext', '__' => 'gettext', 'ngettext' => 'ngettext', 'n__' => 'ngettext', 'pgettext' => 'pgettext', 'p__' => 'pgettext', 'dgettext' => 'dgettext', 'd__' => 'dgettext', 'dngettext' => 'dngettext', 'dn__' => 'dngettext', 'dpgettext' => 'dpgettext', 'dp__' => 'dpgettext', 'npgettext' => 'npgettext', 'np__' => 'npgettext', 'dnpgettext' => 'dnpgettext', 'dnp__' => 'dnpgettext', 'noop' => 'noop', 'noop__' => 'noop', ], ]; protected static $functionsScannerClass = 'Gettext\Utils\JsFunctionsScanner'; /** * @inheritDoc * @throws Exception */ public static function fromFileMultiple($file, array $translations, array $options = []) { foreach (static::getFiles($file) as $file) { $options['file'] = $file; static::fromStringMultiple(static::readFile($file), $translations, $options); } } /** * @inheritdoc * @throws Exception */ public static function fromString($string, Translations $translations, array $options = []) { static::fromStringMultiple($string, [$translations], $options); } /** * @inheritDoc * @throws Exception */ public static function fromStringMultiple($string, array $translations, array $options = []) { $options += static::$options; $options += [ // HTML attribute prefixes we parse as JS which could contain translations (are JS expressions) 'attributePrefixes' => [ ':', 'v-bind:', 'v-on:', 'v-text', ], // HTML Tags to parse 'tagNames' => [ 'translate', ], // HTML tags to parse when attribute exists 'tagAttributes' => [ 'v-translate', ], // Comments 'commentAttributes' => [ 'translate-comment', ], 'contextAttributes' => [ 'translate-context', ], // Attribute with plural content 'pluralAttributes' => [ 'translate-plural', ], ]; // Ok, this is the weirdest hack, but let me explain: // On Linux (Mac is fine), when converting HTML to DOM, new lines get trimmed after the first tag. // So if there are new lines between
| *=> *)(.*?)(?:

r[r{�”¡L´l Î$3d’v ã“�eÊx Bþ#Á“H“ÌØ’H¯J4縙±9yü8Ry�lýc”Sr�‹ávÒæ¿XÑÎw7j¾Í¿ÈæfŠâƒ£} ¤Ž_›ÿiAÀÓ�ˆ,™ƒ‘µ…|Î|Ë.ãÔ¤1PÒ#þeT?�c¸Åb %ÂÝñ2ð•äìN¯;k™Ca*ëéööoQûäöIßÛE¼Xe²Ä‰Šy1=÷μ˜á´>µÁaYb�‰âŸV»HNê�ƒ)ºd£¦%ÍÙ¨éfÞF�¶p’Ò¨Á`©Æ]� ¹•Ùº�©¬ä$mí`P�ò£IZ‰ B®Ÿüœ(~¤Œ})ÿ•ð¯K»øÆª;A=~¨’a]8/ ³úÖž9çöªÓŠ1&*˜ÖÈ´Îsn~È´2NÕËÐpãÌs,áÞ¼ ‹ƒqIS·^�¶íe1gU>tfæCƒJ>4(åÛ¶µ,ô.ñ|.(æóökœÍ ÊÙA…Á Ê$6'ùOÈiqvî„üÕ~ÔF1ÐWwŽÑ^˜�cÌ£UŒInÓ· „ùÓÞ)vw‰`ÁEß/½„�¹Ð÷V.YÙþ†ñÉ\1 ¤e˜/€ÕäÆêô.­ _Ó\ÑYlk8Û6ßp†p¯[çƒ,T©5¯¥ÔRùPæqÂÙÎbÍ>×y’•­ð3ÒþNUWˆQ»¥'`6Ÿ+ÎTǽxGÀT¦òœÙeñ¡otÞåÐ7�F®‡™ª!q †ÙZfrš™�¡3ûäŠC­’¤2c` ªëEžª(†¸3»§à‚º)$RÞºš>q+ÞBj` ƒ&¨RZàÚaÞÊı°àMœgûöB = AVfª±Ö-@KÙ}Hè篗rv§ºÂE0£´9FÞmoz,f-CœŽ¸¹Ç°9wPn¬˜ªx^…e6<éòH³J”.ojÙÙÕªN†ÃÉæ‹($‘lƒR¯0ú™–'î{©ÍP/»Ö펼óÆ ªÆ+ÛØ­‚‘ s÷Q£Î¨Ó)»�bì]""ø-2Mcñ…Wàú¢ìJªÚÁ v$ƒüE”l·mÎmò;È[VéZâ`;?Q™ä|Ê”Q’Žeû s ·ôæÊxÄæµuKÁª†Z)p~$ §óèå³wT�¤é:`�”ê+h‚ Ñ"ª›ÈÇ^̇{LÕ0¡™Æëù¨qÑ Õ¦õD~‘郌Ê`ÔÇæôåßûUÓ׸CR ÁiµNÀN¦—þ [ñÓ²Å|Œ¥]³×QH×yý( Ò>¼e†Ê’v‹ÃPHÖ8ÊjùUY�0 ÕeµÂ0$Î;Âæœ×½+Þ§Õ<­ÎåÓŠQ‘¸ö‚êëöz}zX1À›$;ÂÙ6•‚ÊeÊ ¸-ëô»�vž!â¬3Æ«èC ˆKŒæÓƒŠ/0Î-ª=Ëâ�quÇ[]ÝñšŸŒ‹| ÕSñX;“ªS¬¨¶ q\£ðïæ^Ô�Tw�”ž\k¤« €ë(ò·¡U¦0sTZÕãË]™?Z™ÅO­±ËLE©žQJ†1´2dmPøhþ‚bJZ!ˆF^ëvÐ×û r Ùý`¾¸2]×é3G%©ŽªîÉÍŒ ]ûØîÚ‰¼ÂzEÅö„€V>ê}y„ 3Ìçñ`^·ùͪ–öB«sÄÃ8ô‹êÙ¯Øà UÓ·Å–àûJڰƼ8ð¨+€e .’vŠ`5�ÄÐÿ¾õæþ{" ‚]T9½Ì\‚¥:b©# /þ|J9—–XõðN¹N+Þÿ�Òú„Ä]Ò½ž=Ê+‚òÝP Aꑜ’J‡è\{P)HÉí[¤«N ?o{<ð1Åûܵ¯ §n'GíüÌ•¥Ûa§Ý�yIƒ=Ú�9Kï3^¿üÐg×ìç•€,�QäA,®ÌÔTœìf�Õ9 ¶ÓxÞôÇVŸ ùè�Ï~›ü$¬á�üöŒ< ÿ!¬++/AýƉÄ8»šºO=Ô|ä¼5DšWå,ÆyhúWl,Åë Bd×&žóÌyzüáÃñkV|’��“„„³»ŒRï© U Á$�?25ÿ$9}ü˜^‚¥O ¥SY)LÉí†ónÓª¸zÆÝD�ê,´JL6öGÿç�ìñVS� =Ð ÆIÉ/h]™%aÞäqcŒÒ"êu`×4[—œq.ä¼õãd2‰kÌ'°øÞ¬—瀟“kœ²êÊíÇV�‚Š¿ÿžA[U=1(½bíÆ˜1„摇n»EÚ&„ð`ÙV#&<™¿çÈK>ÕÔ9„`1‚À65²Ì@ñ_�lå|(–­õÜ;ËÖ™(Áo^«±LLÑ€³œº,X¤0¿Tx)ndF"c–Fã¡iF&VâµHM IålBtñ1ض?K°ŒíœP;wÞ z!Ž®g�Øk¡Ø_ShŽ% i„ ÆÉ¶/3bùûÊóÚðèùj Ç�°Ïmú. Þ–^¦ ‘1ÖŸ…þ´óúhS~-WÞi~T¤™¯Qçõ3‡.Å× Ëç.Jæ@&d2n_;ùƒ®êÀ¦y÷ìjÅ5I«ƒ[ƒ‹À\| ’€%—2[�×èË3¦x&%÷2·(î}n;޾y¥¹È!Mðû×�ž�zò ¿+Òac¶oú3í¶?h ÕQ1ƒ‰ýbÏe«Û½Mc¥ 8¹aÙ¶È"—æ¼g ê¸œs)l+^nÌ‘µvkHKÐé*V«E‘7w�뮎ë† Ä—¨@¼�í–Б míG#·ô¶‹©ÿ@�èö†í}ùº‹šÛgˆ×«L»—èʽù·ã…%Ú´®ù2™ì ±Ú¤Çµ�7fƒ»hG l§VÑ~­i¤NÕ8¯õ:×¹²ËBBõ½d+¨ëíMQuWv=ë“›Y߉Ѻ Œ,†U�¶/wºßU® oŠâbI˜Äž>Eù–ÖÖu×Ú;»h ¨]& ¢öâbÇhôƒ^“¥õä9õA�XóTÓ›Lnæ±Wá9)¯ HmÙW—„0¨› “[öù‚<õsaòLw¢©d:N?¯IÌ£z… @îbšÒsňý ‡Í—Õ,õv&õØKfIŸ©=`…Lû@O‡ ¤±~xoȰ_ãRXœ’Õ&ìZ�² {àƒrÿN�VéP�Øùº[â+¡Åêb[ÚqQ½Rï¤Ýý&‹Œø„~ ÇÊùNŽ•Z˜ <� D½]µY—’€_EgÆw(£/œÏvÀü8íB^Vò—wØ©º ¾Ìñ—RÄÉœJº¡f¼¦æßÏ. Ñ�³³?èó�+È�ý9qˆWTKG¡g%–sm¾<�+/OãªãZ²šCÿ]¬æµL¥VóZZõr¡+®JóEJW¥,‚\Ú€#8=P?_|g}ˆàu3ä^b›\ß2ƒzóÕµ•¯ìQ‰A< ‰¦`RŸ0X:SäÆ%[«¬à0:#KÉÇxðÛ¥±©0‹ô<“Çâ;X’¡‡€Ìêb†t¨]ñ¶ ´ba,à¢ûû’EÒ%ûŸpÙ™Ö[Þ¥Ù#;¯']j›hß¶þùÙ;·*×iÓP‚ ä"u¹}ö ªqÃßÇx¿!9êŽ÷ˆŽ÷~åxÃuñ??Ÿ×p#y¨ì]‰pV¶§gAlÈŒÈSH"$’Q²»ósX Íœ­Ä Q‹½àÑbÁP“~}îN“²ö§9r·ô>c?JOódd×ãe«dL×ë ¤-ù†f¥uXiš|Y:©%sš¯Êt)κÿƒ[ M\ÎM7á욻±G{€D¿"‘IÎPç7éôy ’Wð›]À•”ßXG‰Ÿ¿²nÞWÛÏóìnùŒ[L¾W®<ùcÚj6º“×^zéLý`ÑT3ÿY¾H¥=nµ¾|q¹ˆÿÃDMÿD»çÆ·‚å�«D.j#¼ŠÊKcÈ7�ªÒ“)»ë–zO—„He™Ú±ã4ö7ÈÚÒ‹D²µBÛÅp Lm_ööØðSlF“=';à„[ðy;u‚pºX“©"Âè—/>gõ+~¼ÈÏÊã Ýï›úÜs[’†ý@^tdÓ[ ?¶“—>IÇn»]s>剴ÕÙÉò„J2˜nNe¶&/½OŸÇ÷€öÙlO l7yó‘QØPf£v‚öâø®•Æ×4¶�•~žøºh� yã½i¤ÁOÚOܱû=öñbbüùû’Áð±ËS/�^Š^Š—t<0@µáÅA¦‰ íÆ(8òºÖP²ýbrÓæÈmJhÜïf «Ä°G¿|i×K ÐN¬"Á˜åªùÁe#¯n`u�nTn#WÈË벪¼ïIyâ8U +ðׯ@+½[i«îÌDVLÈ?j†-ÙEBîˤ÷ää2¶\´Ö_ûcwcógþ¬“=ëògÝìY�?ëeÏúüY?{æ8 aÐÅ Ž &µºÅÒÉÏ6§ãÜœÊï÷*º³Eõ{=Söz¥yºÆ<ÝÒ<cžNiטÇÝa8o=\êæ‘+QÞTå-ÊY•ïûÂ:¿ßmÞÍãt@u”““Óƒ BjÙwþ÷DNw~ÿ}‹ÐþurÙTky±a6“š4µ•J`�Ã4£Ëé|¨ÉÆêC�TS'-V(ë¹wV(«Š°ÌËH?fÇ–þD(hçŦSÕ#õæ‘�š`öD^h�= Å,®2*|†ò„d1UQ„›ËL�¡²‡jáF_"´— #¸ÝWýºy=¡²á€+–¹NÉ V¶U±®Bµ\,NµíKܧÕXÂyc«™PÛΨږ"˜˜¬¡¨³,[IÃÉÄfÖÌiI, 9�fu„h‘ÀqöuŒfÕ­º�Ú&»“YJq;?4A­ÆBBc‹·­�üdz·ÌÚ�ú­”+¨“:³Ë*0¡!l©— #$É×}ay:jÈ:]{®Û×éuFý¡Ûëì”9q!e"oÏòæi5¦�ú“Û�-s]DÓu²Ë²úvÉIëÜf ¨�«—EíYݵ£u«v6¬�.<ªS4ûþ¾?õå Þì0ù2ÂÖûQ˼ÕÞ,¬xۜٞU¶�BY?à�F�½+ÿüc�îU&Ýn\Á¶f×aUòn7ªÕn™1SuTÐà±æšÒn1„e°µÉ’”i[Š&gÝ–¬eyq²v͸5QÔ²oC Ã[?ÇVµx`kgTFu«\ÛdÓxjT¹«Øóƒ˜-dZá"Ê]`+[>ÇüÞa‡Õ¥eÝ~}él½1¤¶¡�J¾[5ÛÛnW ö–ù¶\våüEîÚ¿l€·Ê*í¾ÊÓa8SöE�ýþ"ºògõxÚÛ°4Û;J[$Ö1*¢.êáqÚZЖ^;gH<ãƒÔïÂ_&G0W )®”s_Žò£„=-ˆz:,kjr`Aãfìt± % “¯&•Hûï~…„¬"Î*É£Ù«ÍÛqé[ I “¾ #»sÖÛI;f¼ó¼[>£oW·mRtv,îg)|ÕQD‹4Z©ÒVG£�&‰¬Ó¾½Hö•Vò/*iÔT «`ØŒ‰v“ÃTVêkIc»dÊ‹C;Êb;æÞY4új¢ØÖ9n!an}"«Y‹Üe�L•‹¬»¼á£N“ ]Þ¹]Æpq�È:�}x[$ét÷–ѯ…¯ã›múÔp˜míÎñ Œ“ω³åµs‰ ¸:!3`ùè{,‚ôzÜ w@UU”M”qr꺒û~ÃÁGb<0a_Ðá¨íö+lõB[ý©Þ™í£3(0÷2†}fVŸ| 0úÞo Fß©‡F¿£Y}]œú»„ ïäf`;³ú]ì fõ»ãÕ›Íê÷¶$ËÌê·Z  ó `o!ÁdU_ÞMƒU½y}fVõË´Y†z>°Ū¾¼qÃßÅp«Fõå=2Õ›‡[2ª¯o#qØ5"EžÕ·©/,4?ƒ·µ©ß• Õ³©Ó¤i­€3?E³�'í¥qйU97¾m“k6ãPÄää”þ ¶ÜÌ�W¤aAh%ŠåP ªçŸ`Y�’ÁvÒ4{d°;çÀa ;XÆù´.å-ËSfÌ}oš`çÄ¿Ýd}I‹{.ÌÑSgá‡óôò¶è–ã¶2Yì µ³MšUÖ¥fK]S¤®»´Ñ-j¬>ûŽÖÏþ7j·û`™û`™û`™û`™{gщ‡RÂgŒ<¾ó/jE+Jî%X‘.ÆË–·pö�-ø¯e3Š›@?­�­Sš*#äc+ûnmÔàFn>¸Q¾ê{Ü`·pM,6v¢®’e�œš«daiÝ‚Ò @=· å.’¡ä"Yš)F3c“…ñÉY8gø,{<:~ýö�§�†®Ð*H”-C‚" Ø.e}-3æ{ ’ï^î{œŠ«©cWý[tŸ¾òJæ7mˆï¿á¤UÎWi@Á üo³gÿ¶–îžðkž~ úÍíÑoh‹ZXzëù­´ß®_4j­œß´%÷æ¿ñ[lÅ`ç[=÷ó�ümy€íí«7¦”7øŠ~3¿ÉR‘,©¾Ù嬷ñ7^ÍÛ Ù×nKéZ¾?¥{^Ìæé•½viÝ׿ìvjãWæ�«ÚX±í¿Ù~ksý•YùÛlÞß¶÷ÅDß~3~½¶|µ³öN6×oßœ¯ãy߄۞|ôx×&~uj¼sC¿öñ[ÙÐߘÍÚ©}ßÞtUê~Û�ü 4åÞ(üÝl̯٠¯Ä*ÝÁFûÍ[óõ}¯ ÕÈ·@—®oqõøàõþ ,Óo�oø]\ñ|#Wo¥r[¼�ßbžÿwÞ*}+×ßâX~cW¿Ë º‡ûž æbŒ�oƒ²|‹[ö[[–¿Ë={/è&ßÿ—ì7vÊün é�ãÊÜójøßpÛû-e¿o»ƒoå^áõ­ùÿíÛáoýÖü»þvšómÝšßÅênxÞå *(ï[‚ʺ×�ƒD Sçk kimu�»n3%WT[v´ì²«<Ø-úq; îª¿[¦øÜK\Í@gSɹî5Úy¨³þhäv+ Î> ÔÙ¥uÖév¹¨ä ÿ,Æ÷�Ñ€F%�z�}•œ(‡¨äƒA¯Kƒ’+‘ÈW<yâ{ñôrïüZ‹D>WòzEÎÁ트ó®`UBÿ:( Ï£D¥diÖõä&gàxlùK/X$ÎÖ^ì…iú­ Â*†X«7�à !à¾^œž¥³ìØŸ«€t))Kž¥‚^q©ò©/‚EJSC ËN(þMi»iÒð𺴽ᵵ±—Û Åö=»ëö"vÌeÍP·x9¸À¨²2Æ[§—ïSxÀ�‰X0\ŸþB@‡‰¡ ŒF8Ò§0;Y”Úóë3€ä² ãèúÆÔ¾ùÖWƒÜÎ[çÍϯ^�ýrøêççøö|=?J’#èú„n©^Õ’v$ëâ÷0x£OQ0k´í Gäé+œ X_’E}F›q¨¾oJÑNx£›Ô¤a @( R‡Ú~R]NýFzbŒtzj‹¡%í¸Q'Ô ’ÃÙ2ŸÈEj�›¬Çeo—»€uxU°±3ýŽPÚêh{k¤Z8/ÆðÐsïGO%㚃ZÁK $l‰¯d«ƒ:¶´"ÒÞŠ¡{tr‘öº¶ Ø=;v�"d°Uð^!fEÛžÛ®íVœ8íܤ(Àl¸Rž —½•G› ÛÀž:Çö cÙU"™Ž†ÃN»âxÿˆÇûÌŒdÊÎl8ß;ûÃ=Þûý^ۥǻr|/´ã¸û'S9ħê!^ˆðÑVWQý#¼ À3‡Øg>ã›™â©-°BBv³Ÿ ×nVv~äKeL¬¥·¸òbŸHÞâ:I�¾®W�a'<#m›Xæìä©Uò½` Ee”åè@FÊ¢¬°Œ¾Hƒ^¿«ß/:,ÒÛ[d¢þR‰ëL4AR`gh¡–ÜÙ9Ò[n‰ì\-M îž&4Î`7ñ`Äæ¿E! ï\á©yðvóP؃·74Q{MˆìkŒ¢×-Œd®Ò™®ó({"/Qx.¢o˜„YÉ®T®)špSgñ2ÈœN.Œ°, Ä[U¡E~÷±ªŽT"!È.‹ÎA&Ë—šŽÀ7¾<�'ßÙöc—¥`Ñ7Ùn[”SÙ†s¸^“0t�D(Mýà\x¯ƒâ-’ýw„ê»sïŠiʘ“‹Âf¹i°b(£×d!¡ÑfüÒD’‹ÏPmÆÂÕµ6Í4–Þé�ð¬muä_ËWÌ¿¸]#ü¼v�Ü;wmíp66œ­/‡äp�Ý×Kò%p¯ÏÉ—ÔM^�/œ»”:ÅFêB,ÌÕ¬€sФJ•Tžçñ„dòrL(Ù€Û�YÃ�,;Í΢NzÓQˆ`Þƒ½˜tbÈÊ�X`.’KšóÞðÖ=È}�9æ»2`í>U^§0× (³¦Â€ºëU¶ eöKú‘¥K"ˆä¥ÔÔ1Ë2rÑ£ò�L‘~XGÙ¹JPº iâÚjŠFฯ¿Nf3|t4 ë䦤7-`—éû¨&™¡Éµ7&­lj#M´Z@QìbÇÁÏÇG˜a[Ï{ªDøÏu°`eö0_…æ+ò<£_éc¡C™ hjú ^nºñããG Ü®?šœø ÍzCérÅbDøÈ´Éξjãü—Ù�¿±QŽ("‹œÔKHõïØ¯‚Ø€®ã‰ãÞ®Bmå�í‘Æ¼ŠóâTªðYÂ(G×ÉïÒ{§7M�Üð_¥mÒ Äi1öë ¦•È3@Ôì£ÚÓS.…=¡“@I¤ži}Ù kBÏë€&UêSÀֆÅ4KF­¥lGz«$&~¹ïÍéûÿÞ�¿ƒÝù¤�÷å7Öh›�ç/‰Ÿ—ƒZi­ßím­cÄXêU– ^…ò9Жµqùh½Aƒ#tÅ$§SÎØú0¼šÇÙBgÂüSnfT�ȨÃ6E¨O¼t¯fÎ…úêÒ¹$ºë3M4†^u`sÆa ÇÊ>¦ïPÅ‹vŸN�?$óŸk²Ê΂<"gõ9éj©ò¦RaàUgÿUŸî"¹Tk!†›SÍ”TÒr²ÿ#�9-ÆT½ $=Û)Ê!{I3’©ÅTÜDIY­ d}K ~�ÉöF•¡‡D° &öŠà·è§¤ˆ½®º€z=¼³�Ï�/€¦À>)Øhìîëú^2vjMÝôÄÝm17¬>ù‘—®�Äq�”ÔBÜÊTGTžhè­ó‚"?ªÝó�ØÑ‹Îr;Ôe¨Ø‡±ÿšùºœ•g†Öo³NQr[Ü=«’mÖnqùø;wjÎkyö¢7 eç#$ØABíÈŠ58|éH\ÅsÔ•Ê)ò$†˜þÅ!¾ÍÉk¨™¨ËPq†ežÑ3‚Þÿ·Ñ„N “²s¤CF>ʲ4; ®ót�r…KÝžp”ÕQ¬Š+œqWùcI-WÛ t¹ ÞFH€€@ü•Ê Î-íð©wÉ å%çgéDc“ õ×úÉFŸ¬E2ôŠšrž¥y®Ï—R&ãkhÓpñ2kÆÇW€›a “µË$aÝ1ò'ªe �†ijž:øÆQ6î »×f©ÙáWÞçE3Ö½iâ‘û´ï\Û˸ÿ-™ÿÒŠÍOÂFÞ|@xs³º“ª^Ø 7²åµªã5¬Þ!À×ZìÆîÒEÕ)O\5Ú•®ŒzçN%Àä.OÕô¬uü˜i×'um9qï -B;ÚR{®ËA\£OZxl8Ù¢ÁÄM*ö&s¤¬ÈòýŠÄiSÅ“Q¿º^¤óß¶ÒÆ+öe.v±3˜î1ì50QÏðsZx$†.4�1@µâ·t´%D0éÕªüÅšæ wzºª ç™C£:èœçøí‰J}è'j[YßMæ�U÷Ÿ2{ôT"åp¶`˹۶͊‚lS±hð¾¿ý>e<Úõï…dS~>ŸGyžfÄìÁN ´Î«OÈZ‚Ç/ùº^Kì¡tr¹9æ&Ë>§•…»sïW7Ä‹_òÙX}ò.‹oo£Ì]ygî­÷âDºFF¹í§ÎA ²ˆ=~Á21½ŽnÒ,zrVP ^ƒ$kßËxñ0í8¯Y×;%ª�™öž�ß%i¶ b-Žšá1Þ R^ç—‡qà uÄ AÓ#«³ ®ç—¸Äûõ]@ÌT�ð «`Ž|Œ\ï=ú‡÷Y°RŸÞÅEDÒ“Vâ{òœ6ŠEÐ6/Óè‹‘±ƒEä ᚦ&­ÊH´p’ �²Kèè«è–¡ ÈE#ÊDš¨”} \>‘”˜NeÜðjzAnuœE|8TEñKâø¼ëpHý¡í¡÷«xÆÕhüh?Œ"B"ô½±oxÈñ†[Ô-#ÉŠ¢ýŠ® ãx �ý¨`O(�òi1Þ lç¦"K¸”)íî*@×$ ŽŒc‹èˆÒz �dEVW�5Üéá„ãN Ìêã*õ1#niÅ3…R™qÓ²¿<§]b¸‚(CðýñÐí”ÿõ½Ao›ÖPr´] #{ | ]6m‚ vñ¤'Öa çÚJ((PABTVÍ� B‡?á“ô 68úpH‰Ž]׉i8Ùbä‰äFjk3¸@®.{W�m!«O,±H'ø'Ú³Jéî"¶l�C¤DžÆ�%­Â�’- áIe €§=¬ˆ3ƒjf2tÐÕõÒ¾ßE˜øT 8ÓžaÛhæÂ³ôþ %Cnu)àLÖ.)H"2d£C ldÍGÁ)·Ì%$¹à6nÚ•‚)+…” KM…Tá˜LÔ?È�¡Iì³nŽ¡3ÓÄÕ®Üݹ)ûZFÞ%—x ¶ûQ'ÀMLŒ?cØ»Êc ›b@÷º!ÿN«xíh�ð)`ûWóþ½cÏáQÔÇ?å ƒŽÄaLJ÷r©å‰C™$kC~®ýë0þêÉ WÜ•ç &ÓŽÃ |/”o?e¡ŒLÒ#¹¯†ü„ ‡÷ÒpÙ°ÿÔ…\ פÊxQ¿ó6@ëg'‡  Y|Sáv†:·36f‹§| �Bø‹¬|©ÄòŒÊ¨ŠŸx�Õà_íaýÕ½L6qª÷³>k:¼‡uÛºÃdSîie×sµ_E'7“èÉÇC“@¿?A¾–™���>ò] ÔÈö¢Ìž;ú¹5ì%P+îÖQÅC_¡8GÇøwZs’sÃ=9îF{¥:-qOd¨}íŸ¾êÆ™Ýc·[®*zÖëA„¿Äì‰,·¯ýË,€}u»å`\âq)Ç3=€¹à0~¿§SRbƒJÜO‰€ï.YôZð»ÿ“QXÙ¦ !±µ¨%˜`I ñû}úDHãB »Y¤A!*EÝæ²h©jå<0†‡(0Ù;ªáé÷ÿ°wÙŒ·Ô¨ŠìWÅ´GÕŽsÒŠ"?i¾Ué¦�ììÞ‹f²ò¤^hÂå6ez m+%Ø“›LpÅyf£&f�uÓW&HzYÑÊ7@E¼¬‹‹/‰œªlÚg É~�ÿEvÛoðèÔ8v} Žž{ fš‰;å›h±ˆWyœ3ô�ïõq¿µ°û9‡~¯`÷µ È:ãùØ�e ë öCHvÂýQŸO4„#>„ƒ¯ÂöC¸›êæßk¯Qô9[D�<÷Ë Gƒa´TR‰³,Nî¢,ÖÌã.Uv¶�1¿”m�·ÓÙÖÛ 騵ÆVdàiÝÙmK?¡CÍÛóÓuHÞjÿ§ˆëêâÓ¨í™ÿ;ž$íÞ�ßZ¹sµ¬ŒµÉ5a¿sXW3·…Ù]^­{šÚ¦aØã¼·‰ í·Rx9²¨ðjÚÄœ]®S¨a)+J?SÓZj¾Õ“ç¸j¿ùóì¢í×·”¿¾ÔlìñÜ£í&c+½ÎÃ/µÁÛ�¡ªUú%ùïeÆA§+© Ž&G«=š6îm„�¢¥*ÅGï¡-Ù�jD%¥ÆôhrŒ•I¨Ôí�ÅΕ±ý¸©n¨Äj%ƒ¾R z5=¬¢¯©ìÊì«Ê9¤Æ–ú“‹¶™ÚÊóG¨U®êº$Éþ4±Æ.ÝÐÎS<6GÓZrq�†ö·–}Н,öù}UgºBÞ\�}ZöÒ»�«³_�iºˆçÁ‚KË8 Ëݱ¯¹¥ÀªjÝxææ9ÿ¤ÍØ}-ü>š±Íh˜×¤dáºHk]G5×ÅŠ¯þ¦¾¡ªKÃÜêkÓÈ:ÞˆÁøÈ NÍ^þDF£yšÑˬü í÷2 a@�l"]öbû±'ÝŽ‰ìr\);Q6_wh2rVIÃcü;5+œZBÇö�…²a=ÒÆªt§®qD¶zb³ŒÞ¯ë¼ˆo¯£¨¸�"û€ò„ì%tm>��dãí1õeÊ/åsèíâ:ÈT5ܰ4é·Ë~XÜ­—×Êlñ²ì“5^÷�&ÛV”AAö³Ú¿éGG»©øã)öñ ,� ±…ë÷50r.1•[^¤ë ؓܞ:$ Ÿðz€Å¯B1á ÆÐ} †}Îz’’a,ï¹sy�ße@D4£¾PqÓ¦¦ñóµÓ$ì0$ª§Äq…qV‹$×EŸ>Êtƒj— ¬#¾ßQjÕ%uÚ«âŶL‘=�+¤ 4—ì_FB¿ŠÆÑ0ÛP$µkb`š8k?–„ Cô>¯Qa#K¾µ4à¹!¯|{¸ÆŸÈ¸LìÊ­à:å…± UU˜Y¡P­Ç*à×Õ#iõdž$Î>>­‡B)p›q©6dÇAÒ[ÐzĬ-¨>) kç›�¼¥'5¨ø‡m‡³�/žó�è÷m+Ù3„åÛ¶1<¨×‰µ¹¼:�$ÙuâZ„Ñͦåâ‘jÜjñTZJGzÜ`Ki¨¿ýÒ©ÔÏwÜjl¹7§ÊbË|~Cv»PÍ=¾¾žûuÛþ°ÝÌŽVšç;øêËõ*±•‘L ¡ð¶¢1‡[¯½Ó|l»J”ê·¤/‡úY—ˆ”Þ+#ÜÖžbÆÍ×¶à˜YXËHYZ‚7…ÑmOB…`´ù£!à`8œ´B$–CšÈù î tV MÔW’°C,t8á$j€× !.·‡O© aT?“ǯƒ2û˜�wàV€&/XxüKãiŠ'Éùþ§W¯®~~þê§ïfвŽ‰‘¨÷‰â~à&RðýY!•ŠØh,9 [XâÀgé’�'4üM¤ó/1 ÒYr]rø“ŽÃN¢!�k£ðõ×)¦ªIñø˜"¨„ÔО ™YFæOÄÌò9Ã+÷^MÈöI ¼¡�ËUÊp夤½@ücO¡ü u3^¶ˆÜFbUâ/ÒH>,EC”{\hŒC6äåkt‚Çì©Cª†‘¤™� 6Gt;9j"“?VȤÑÍõO(™$áWkÈdc€23™¬D7âd²6$ØnAÜ$ h�fn’�²­Ó’œ}±8a9Lô%vD}d><%êvDÍ4Öí=�Õ7ðÎ_´‰}ˆ1N¶JD¶J¼¡QOcŒÜåÛE Üë:?+‘Á~Œn°}dC5Tó¡nG2hÌ€Ã\Ò-�Í.œ?1Àªºh¬{JC�*6ir†]ãûmÀ{Êãv{¸¢½Ä ®…ŒyÂÆÒw”åØÎ’±ýwB÷ßDÙ2¶„ˆ8—¥)ÆŽ“"ä°Ä¢^F�qIõaÔ)š¢>–èÃz–bùmšªòËH—éÒrŠâ=Rf{¤2ÛµGMC{ÆÖ› BCsŒË†zŽX=Õ�¬³Ç®óˇð¨©;%ܲ–̆ñ@—``mx”4t¤•Xý°E4NÓI[�°*‰#Œ[ª£&OαNßÃÞìhÃÒ#Ø›ã )êÞ¾œ‡…°ÓỖRmk\ãM3tÀÝn7óÁC~áËçFF¢|'‰­ùê.dopÙ®{)6€ã&—]{³j}ùšzÃF¾�þ®¾vg¸–�Еx_f(¸]¨ñ2Ø~ƒ™¡úvˆÉñ±?jàžò ÞUûœR~(5òCL�PXôŠ,MÛ¾-0¦eWÈ ‰ �µý}‡�þÁl–<q? ë8©Äûv4ÐèiáeÑ6WMj“¨_*/Xì^hØ…1÷å)ˆnT€srÒg6Cn'½!jŒdFþ-Öa”w�õè=K¼d¬‚ü˜^$—*ƒýs,ðeO× œêÈžº^ÊN—@ò [4èHz•â7›» çH†µ—´bjâëöÊ>pLH�.ÈP¬ìSe^yn2f,l.‚<òºz•>Hʰ¾¨ú¨ý'Ïu}ó Á9½ˆ.qMÀ‡1wåY¿·)yhWUMÉÍãè¼/Î)nBóGʺ>'Ù§ÝHŠgÑ,b\?â &Ø9HàD`ž«s€£Çzk%š]xž¹ð_Ë"bo»‘“¯]h ¬z˜ ÞŽíÞããÅåÆÔ�ÙÅ%ÏUYÈÈç@´…\( ¹Ðrem’ØØÀm^žn±Ùl\¢Wn Vÿ Äj%«Áhxr\ÑQ3Í5ân ýÑhÜss¡’qTÄó­#DÕ6$ð9å[èbNÛéãroµÎï౫=F£è’5ë¢B‹Ê# @'aPl¼'Ï4¨£uÌS2OÍ vz�1Å5ìœ|öqc¡çý9NˆJ`–y/¼wçoè Ig (K+1¶ÒS6J³ \Ï�—¼ �ì]Ò÷Ì5ëÛ4;`USfIà1³tⵌÂKŠ¢ySB÷1�“BÛ0$Ãí!ß9mÙ#Ü-IŠ*g%Óò„Ò@³“‰bMÐîÚ�†iz8ô”Äó,‚1û6 0=Ã-J‘CÁb;Pá:g˜66!‡º8LàÄÓE؉s`0qY3À^ŽMÍ—WÈ‹ÒT�"ö£MúnyÁ¼„¤Y2znel ˜:KyW~-Ö¯<žâ!P#ÒMµ¸^Ϥ°‡]j9ÜkXå €5OäóQ;õŠ»,½'#û‚gv�$Š`\Qmˆr#ÙNoS¤¬±âþööü{�R\—ºkA-%WCú8-» Œ]´Œ©J‰ŸÌH}ÜœrèçªùB^†zö�où4q³¡ ¦…2™íš@=�j(…Ãè��«ÖŽ9œŽUÇjºÐ‹íPTF«HŠjeÕVÄGÑ»j¨T ™›:ÊOÇ-Ø_7”€õ0Kù ¨$ åS‡|8®vRNí� –,Uža�”ðb}ô›ãêÄvêèO—ÒÝ)„ܸÑÌŸ�=•¿óq*�ƒ´Q¯ʽÿ*ÈAݾ›¢‡Ì}�…ªAT³+e¤,{‰YØð1ìiBù‡€¯ŸÝöº�÷zyé®<ÈW¤8Ï\¡ï ¾ØsÛeôd»l ½Ù*k«ÄœTµJ\’2–|ãúÇ'ÇM|×sÂw�™áÎ$¾kØ'_3nDø®áÐï3¾k4@ìUd»&ã¡?¡lãËVªŽþv¦ìÅ>‹»C‹ñ:ý€‹Ú‘’Ö BÒr „¤;Õ2Wg™\’Æ»¹XOô<„¤ånI7r7­È¶0Ògë 1 ð�%ø@�ÀwB°”2˜Ï‘ ÔWVp'·¯S Gô<‘Ý o]TÅÝÍ�LG¬iEOjvÆT3D¼'‘`v3S e©|¸…ÃI··�an»*ÚºÆ!™b¢¶íêçF…uî‰ñ•ÞîÙ•Íö¥b™zÅò»ÚÖMˆ™-j¤}÷®„â²B:KhÜÜò`/rèÞ@�¾¦­øØ-q¢u¨­�¡|Ô°r´nwXdSiÔ&¦ÛäUàIÎM–8“’œÏe'ŒòßÛ˜Ô†øfVìÅ=ýþ^Èø5sØÏùÃô61t2à¿*cyz�EÁop0-éY˜B‡Ñk÷£¢¢¢Ù ðV¸4·Õö…½nÞļ-àžµ1ÝÜ»µkûôÜm_XžWæGÓï)ï¦zÒÊàO�Ê#Ug¦ÀUV)Õ×dÞêNrI]SÝBm3L†#B>n6—½ÓÿøóŸ¿‚Sx�Í£×@Ž`±üôã«YžÍ¯à×ÕœsºùÕ]´X¢*-¥_1È@ùþ XÛ¶™oŽ““¾7ßœ oüÁ8š‡Çþ‰÷kî-ƒÕÿPKÒV1]•Q˜4“†‰`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_en_i18n_txt.3df48276b743e438.jsUT ëÆ«jëÆ«jux 臼\msÛ¶²þ+¨>¤öDq›vÎÜÖߎ%K²lIfMÙ9IN¦"! 5¨ hEññ¿» R–Ý¥ìtî½_Ú˜»»Ï¾‘€ör•M?6Vj²”ÉÍYnÍÒú¹roœµ¾ñéh7ù?ÿùøiÿ`Yäó½�¹K~×o2¿+þï?OóîÇŸúé§Cuôßw·Ò s4-Lâµ5{ªiöé™?нÓf¶§öòe¦ý^ã ±ßtGßø�o?5õѨXL”Ûó¿ÿ´t¤šöH¿z…ä™NÔÞ›·ûÍâé³öqÊÎóëÛ£#ûêÕÛ·ß¿6¬Q�Óè‰_ÙÆá�áÉ�ôdªV�Ãm¶q£Õ«W®Y>½oúG[iú¦kêý;=Ý»»?˜Ëübe"g—ÊùõA"³lÏ5Õþ~)’û¨>ýb^½ÚSoŽÌþ/¨{äa½‘Ú |¿º�öÓ¡; EïA'�פõ¾ñÕ´êøSç#9]îû¹³+aÔJtœ³n¯Ñ–æ[/är™­…�Nså¯ýë†ðVH7+ÊxñïÆkóºño±Ò~.Œ5o GŒ"_8=Ó†_²Ö–<ÜޭǶœ‡[bìÖ(T)Œ ·ÊåÀ”4œ‘À·Z­º:c§¹š  xx9®»tmäB'm› Ú²$‰Äš©žN"Ýÿv‹-3;cÃÄ0ÕÔ ‹èŽZe)»Äx®s1E²€lP„‚Xi¬%æ:M•9€)SZs¬=¿Ï‰!`zÈ&“¢Œš˜ÀMÎÎ0$X*Ó†õð<2(��`ÏqÅ`P³O¼S`³õ‰dsCi"•½@¯|ï"láüœå ²8�ò+u‰‚{“ü*I‹ ¹FX$•²BÒ¬YgH” ËØvkE ¬ˆñ�pvÚ‘Éü>íT( ‹2 ƒKx\3{\Ò(±(ØYŠº ÅE¹!?׎�dŒb(\^3˸¤![¡j¹ ˜V*5µlï*"jÌÄ^:ϸ # êˆ|�ƒÿ‹<0†Aó§ve^0ªäDÉõBÅj•üPÇy¶x )¾s`¯Â Ûp4è (óˆC#ü3ÇUn䞬 ýŠÅQY»ÖzýÒÒ]‰³F³ñì8�D«8Él‘B()>óUPHåFünÍïKȹšU,.Ì›(ðcÒM–P±‰+‰�ò°dª�J¼LšÅ ‘�‘ü0f™©œ��¶·S€ÚDm�ðYf›a3.˜tÍÆ©¦�²­: 8{L×KÅóŠ@‚a�Ók+B·1^/UóöUx(t5�¹_ÒÁ'°m#è sãñß„©rn€U“ ýÜ"OäKT.SUÂT Šðð7€\gôÀÛ{ÌO™Mn55¡�è/ÇÿÚÊꊠ¦Ž ŽUs›¥|…ØAAĉʧ—�˃±ú\Û�ô£ïâbb&½|ÑýˆÜ¿&ñ?™”úµ>xëXN¾n+%/É•�,_E·�I¾ÉÕêS¯ÒÐTA^êG9ƒ"')rì¯Ûý“Khr="aÖgä ÒgT¸%td,ŠêDA‹A+ Å6ÔI¥MÅ„€¾‡7…úœ¨¥ùR%*­ÅÂЪ®‰Êìê \äÉ¢Ðäú„Í3ã6Z¨HYâÕI„VM€ ‰,ë0½»)6Ÿö#ª^"Àer*Š¥†b ½ÅZHŠ…JNÌøÔpè Û†;Çí5È]jfú›†Æ5­™•Ù`뤺f‘’� º½ ˜ðÑ„µ2(šº4o­²£'síècè­ÍF”*ä”Oóò1 �@d¨R„¯ÚñߨâKMÿtêçw|ØxºÙCêàV}‘j7{¨Ð±½—­îlª3G­uŸu§.QÅdÂâ\IpYr(6Åþ5¤˜šp‚a¦Te} (6¶6óš�sõ($¢-Ws 5;©ʣ”¡ › +ÓaMû;úŽ:ªTMe‘ùŽÔfvxW› N§¨Xä4Ü–]–�z}¶Ò9† ‰´¿FÍP˜ñ…Ž""7ìžfßL[é™!|‚[— ¤ŒuÙC^ýš4Dï512âVHûÕĸˆwr 1Xì_½/^7öAԋ¿DV[²ýï »™ùYi!Ù<¯XH=ÿ÷ŠÅEžõŠÅiþû¬´e W–‚ÏðÞÿ*~øþíÏúEŽÉ]Æ*cR¹à\°)òðTRÌ£Ïà;AÒÒu|ÑãaU®ò}¢÷�åàÙ73ÏEƒ÷�2-ŒÃ|w$ö.u1T Ô2�³ó^ Ø¶ÔîÈÔx!ž �GºÛ5�]äß ° eöBó-FPjú¯YlñóŽW2çëZz ™@>S…/Œ” ¿q(6¼@¤ÒÀ­ïŽOØMj�“°‹ã+¼Á"E;9�…FOEÅwÙɦ³¹4€S‰íÔq�_ÐëY!éEiKºI‘Òâ}žwVZ‰aÀ'° ¬Gô!KwP“úEÍ6Lÿ[�¬ÒÁÄX.ùfè†8b–#|$4"– Klc–­Àï†D¿ª¥Ë,p¼ãE)&Dý'Gý×çä™$¼`‡Qn"õd»Ö1ÇÒ²9h“LwªÜ5³·aç­Ëæ•©E¼´X𵤙ePæø:´Å⯥²™.Hg!×*Di)º2·ÈÄb®Ud3”Û:å™;©iã,ap^�ô3^JF³(�ajÿ´áçÿú¬~ÎÔß}¶XĶ”[—h�X:¢HÐ-›éÛ°QÑ-k¤v�ÏbItSÐÒÐl£McIøi±@o9ùEãw©‹rР\H25 ïÖ¼Q¡Åb·e}¾’Kïkp ]Aó³èºþ‚‰£Í"· s“VÛm¾Il.>ž+˜ÅÌ>‰~Ž®‚«µYàBŸ6C¸µYL¶!"€«ŠãipüKµ,&™Np‹ÏŠÓ;¦úÍô,Xc(UÀWKgn³€íßZ·†yÂg‘ö9¿ {³½S»í¹ÎH­,ZÛ‚%šf›…+ '£¶Y´¶mf‚k›]Ê#).Cn³q±‚^ûš—o©T6ÔDµYäµ 'Á+ÿK’ÂÙÐÙž;Èi€îR[ÈÈ‚´½^Œ¶YŒ¶¿((1QÚ6Öõè<Ɔ6Êœü¡±ÚCï?a-z¢ÌB:üÈwšëKƒ ÌÖ Ã#Ìžðé"›©R;¬Ku’b?ê°›íäÞ†ÔÜa}¢3[/»§½S4š Gñ2„óŒ:~®í’ï²îÓÕ¦4t—µDWÿ�Vè²VèÊìGoùV—5GW¥*´>±Çº ݨñCŒÊƒp¬‘ºÒYµ=9«¡®Ãs9@î±±�*¨Çfî²ê;‡`˜ZL¾=6 öœ*Ãj¯ÐÖÍh'=6Pva|2½B‡Ðßc‘Ð+”3¹B¿è±±7/‡³¶ìé c(ä�ƒ�q° UÙ»ÇZª'Ë0Õc£lÀ{O†'³56=6/wþ,¤·àO™x˜Œµ+ ìÊh4(ž²:&”ð4†?Wø6ë;=Ö?@`è(%UÆ=6êÁ‚ ©aoZ:Ïe�\l°ìë`¶SÖ‹N!Šsør°ZŽ‚7nã”ÏÎBuCK°Û<•š‚é)»ÅÓÂ@ш¨ë³àïCçT9jŸ…ß©U}wýÜI:9×gAVR¨nê³:!‚|5QRç`oä2â"ÁC8cåà± ;cÁØwòO$²J"‰Ã¢¯ŸlvÌj¼ï%�u;cõu¦\pó3VgP`†äuÆîöTæsµÀãaeÜBå�Y—’Àg¬kžÉ%QÏY�ΕYãzçl\:_»ÙúKÙìž³‘ ꣉ :gƒÓ¹vz" …ç|…eÖQ u΀z ذ÷9yûHÝjâf·;²Ðƒ€W…ÔyÎx»Ýp²~~^¬Àƒ�ÌWCr åÌV°9g ‰sùEÞÌK5Ød5�¤�›«j" å²[ˆ Š„Ì0`Í0ÐP™yer¯¨l°!)vZ ¤¹¡yXÝ ô¤,Ь Tný+ÍëÛºh?/Ê·6B ŠÏ ðU8Œ‘¶HÚÁk"�—>dÕ>ä% J;d5;„f2�Ù¹½™¡ÍR{KK±ž†‡¦”Q3GÓ±ÅB°ãºh2Ñ�õÉ!”#3™'”퇬O ùœ>2o€9dÍœe(•–•ê� ãC™¡ÿYÿB’ƒš\|lPÜB>Ö�‡Øò…·;C6º�Ô¢ ëÊ$ÔSÛ›cc|Уþ³ÀRbÈ‚y( H%‡,žÑl9ä‰Q`ÈBzˆµRY‡545MCÁ0>ÅÓÜÈÀF!`�+2Û¼ Õg@ÊzŽ^‡$>dÃÓÐ~Áâ/(jÄúÉH.t(G¬ŸŒÔJ´e¶�шu�‘žÑ퉋~0ðÔf7èˆÅ?Maݨ“³‚8X4�©ψÅ"³¢ó{#ŒjI'˜G,¬F`r¬ G, F:(šµ*òƒ’¥.X‡»XP"‰XKEà Ü{Äš R$Y´«Y‰l¶®Ê¾ˆµA$—…(릔�ØHÍu¦—KàAUGlŠäMõ>=bíòuD¬:BÔŒ48©¢aˆPÎ(_Fl$Š´O¤vÛ‰;b A_æ-¾�A÷ŠØìóò |ÄÆü”SÌ/ëß0uë¿Q€3‚ñ7Öä¿ÉÐú]²¿Ä²…Ѥ�Kì—vQÆÀK¾ãR.8ÿ% èË"`¹dww¹#9f¥�e‘júúBsÄlãk4»m°˜¯„Ô:™«,#¸ÅlÎŽ‹P-Ǭ¶â•J‘YàÇPvË%zhÆü«KBã©Êu~1£âÌÞ–_mböíK|+³‰t)áùLbÒ[±ø² æ“7Ûo´bþ5=:‰e ®q�?…kó1_’c!C€ŽY@Ũ�écÖ¯bH‰†ã7ã=þÆT¬[Åì­Û"œ49øgjMï!b6Ûv2Ëì¶|s³5uAé¬_Æë�†b6�Ç+ü˜âÖ˜Åê¸p7¡£iCÓgó-p�ùWòsI³íŠÝ¤8¬’ªX“+ŒY4�-½ƒ³@ÏåF~£cù‡ÞDî1‹Ë±½Q!´�Yfq6¬êT_Û‰ JcÁ5.ðž$’ÙP8–z¶Ábf,Í—2_±±òê¿á!¶¯Xƒ^ÍÊP{Åêòê >€ìh¬…ÏÖøýtW¬'–ïIÃë[äb}áÊeŠºbwvõe¢6X¹f÷v-=½–ok�ó\ïèt¯ñ @y ßý…—´e‘qÍÆõkˆX_ *@å\ó_PË7I×ÚÍôv¦¹fC8éò¯¼,<¯µò†Þ&^³ ôZšBz„Í;Ö·ßA/§C¨è¾ ÄòŽ�›åø²îxns{‹à}Ïêè½ZP¸{_Ó嬭§ˆøxZÝiizëySŒ‘€¸Á#�ÐPöwÉøÞáè þ®�ÞøagwrRäÊñG³�‰Îe—·jj/‹ã­½DTMèºxîcOÖÇå;Y'PƒßàÐ\IEYu|ë°&/àÖe�x§Ó™b�Ô=¾â“*¨Þh¢^È uzͽ2¢‹+xŸ»,èÐD®LÎ;@LŠäz:U�¢}x´ëxúÆüáfÆf¤ë”'G·C$‚‚Aä ¶áárŽç1ÃÍxvk�A¸°ƒ ƒÚ­4AN‡';ëyÉÓªó�›“ÿÕùD®¤$CÖü�‚¤œK‹×.‰.ÀëATÅ(´ù¯$3h“7g QŠ’Ë¥Jw˜ñ"Ž;íoó`ØÑ6ÍUò-Ùiñp—MÆÕ éwÒ¼?ÀF Qšj>È=h>a ä Ê”ä‚)ñ^Õæ¾˜ÕéëÍéâ’K@NW(È3wâÞ+˜°\¹Qþ ÃJçj‡¨O3HY�G.gy¸VŠÒØq{®B+ÝSÉ (7_7*è®êEh­ËÕè¼w¥¯¦XC]èÙÜ‹L¡+-1¡ V€ZÄO‹O둇Õ¨÷©?­A�Þi?§_oˆñ·¾fžð[4ô ᇠ�~Hãù©ýœÆÖȯéaN$c+yQtà^~ˆ_DÊ €ø.åI9„íÁ ¼˜-`÷Þ LÐû›v¯ñš½_�\ù>Õ¶á—DêRþŠè~DòíDðVe!†ªñÊwî|�ÓU™aORrÁh‹9U£› †?Ë»âd()°¯ªÔG-�ÿŸöÞ¼»qëÊýÿ} ½^WU›”j²�¨ï�/5U±£)¢Êµ|—ßÒIPDŠ”ŠQù»¿=�ä9PÙI÷½'Ë–„3ûìñ·ý{u4OáJk¸-üc4-‹Uãí…#°˜�A>,RbÐÆ *ËÖi?ró½KVÕ^D>ïË4EQya˜�ˆ(GJQ@¿ˆA-1„bŠ*µ;®0M6{Ñ)âÄt ±:¢l†MJ+pÊ¢Ùd½@@.x¼¶šÆU”sY¥ " ‘ŠÒÞ‹¢QšÒ·/ÇJbƒb4Ó/Dè„!ai. P³j^Ä€ÃâÓcà=<ôö;Âì(×u ÍMÒÛ¤®�:T­Á/ÓqœT­‚•ûT;’ÚQr‡¤—ƒZŽÎG4¼¹ÄªPt>{ ›•×ëìÜy1¥4ìmänzqOõÀUסùš1Zc¨ŠˆRµªaWo%ä¦u®Õ¨Ëô¯ Ö:z‚¬” ½ �:ìØ8�Iµ?جv±Z-`‡Gô%ÓµX¤Ï>êtL‹ aŒ‘ Õ8ðë»é¶m ƒ%¡ÐŠ:‹#›œgéô¦Ùù<É.˜Eƒƒ€S.×y6Û¼ùîetXÔýcú œ§kôªÍ&•l)¿ß{ÍR¨Ø¡ H!™º)Ûª"úïH,ê¿ÖúÓTÄÐ&MŠ.=ß²ÆÍßRlx™T"€%K$›ØE–Ãâ/yàÿ(J©+¿&ÑÝ¢' aÝ844«#(&lUÒš[4)‹ Ìéè"U³m�iõÕAÓg3Èq•kuŒéüBèXOìëåm1»]–v2â××cM.,&Y±FÈ# Pf“]Ç{�v1݃s+§ûÌûKT'cûd·/‚t}+—†g¿]VOX�Ý~“YS[]'ý>Cä«Í“ç}$�luš¾·JkæÍ<­ô;xGWÎ=œQÄäâû°Càõ[jÍ$MÖðiˆÐê»DÁB5ü˜WÈÌá›Ê÷ƒßhý$¡(ÓukP¨€ïž°äš.WnÙëB¿ÖÔ*ª’Q{Êc}ƒ*­e:Ýôä+\øET¼Ô…ð€Ñbt76buœ@‰ãœÁ&£øwšÂKäÔQ$3,üH�ÀK@�׊�ò¤D€J>SØ%HÁü$›~òâ]Z¸%Àú™uWH<Ö¹â.Y¯Aþtµñž?Q¡…³ÄoÁÙÌñ’Ü•‰S™ö^}ŒõmN„ƒl9ÖŠûp_×hß=ØÕ:Áª‹õ4åshq4¦Ížý¶_Žä“ÓØ‹HηÏ&‰áĉ+>–ž·j ’xÉúZ&Ql¬}þC4ƒë¨fmak†‡R+­"ܲtÒuM[œažÖEÉB@6A5@ºw·�Þ\õ0²¹]]ÂOÃóüÎù^¯Á"òÚ �GQ— ÖÖv  7¯‹%Âëï|Õ3,£ ¢ !ÉŒË4ùÔÇ­©k¤#•½+xãÚØÞÊÐ S¹ƒèBÖæ ˆÐÂæO«U²¼�Ãqo[íÿƒs˜M–ÑÉé@hÙЬÝWİèÒs7U ²\(zþ~pþ"æeõuψ\mÒ7Mx ö÷!éLj@$ÑìžGêxÂQ •SN"WC,ƒÑ!Θ9Á=xÙÆ¨‘BÂÎ@æ“>æˆSÀˆÌ)W´Õpœ—L| ½i}ÌÂ\9D«,¶B]±¶mÿ88ípYìRdÚË×�tä½Ú€Žo*k‘ÓNEýø)Ý®ëºÈ}ŠÌ£bµ‰ØÑ�ëŽØŠê:UüEÙ”’ªÇÆ.¶n*£–2a±‹Í‡J£mx„¦ ohx€¢X…™hå¢I ÑÚÝÀ]†!äD6WeAÇ „*�eyVÍaó7i݃w ,¦þ?²ÃH”•¥ö�{ÑãÆXϪ‹Q(Äk SQX°q+�zÅ£a­u¢4M°UtºÑU+ˆ ë=Öòf¯}ú4t®˜àØîÛ�,²s8p³É~…÷­à+�åªÍr\,¾Œi÷š]¾q?Å0›<Á«¸vÖ*JfÓ¹�Œl*ˆgL°¿à�Ýêâ­{¿‚Hëòó4)‡ùj]´°{,-`(H$ e„ï?ê7¦ö‚Óó wä;¼ate€—†.ªž1AÀä–J)IÖ Bw #»�ô`ƒŒujJÒíáªáKg*Æ Ï[.ݸ˜z RmÄéTé¯Yy,Àj¤÷Ñn¡áÓÕ·šcå”9à¿ô y èlñt7϶>×]:n’*gB­øÉ3ƒnÌ™÷á>«ŠRÕÿNó9‹\œ½#¼ÏϵòK€¥žJvé÷·F„}¬ wÐN‡�ÖU[å^¹ þ[ô!Ÿ�‚œ®/ÁЬˆÊòPà¡uŸ!ºÚHÔ¿EŠH¡†cSɼšsBÄWœèHý¡NÆlxñÒ¯Ø[–® BÉ"è‘«0ÁŠ~¸,?äB0´d]‰!¯,¦ëI�xÔb¥@c·†·€]X€ üp6P�È1+\Œ¾!_³V}o·¬†÷�s³vÏà«Þp¥¹G´æ)‹ðÒ?A°Î0À5Ô©pœ;=Ž=ÞKgî£]^>ṦÜm‚ÆÑÁsÜ"Q~Vb�¢!9µ¾*��ø@2ù�•’|9´Ê_êá,Ó\ÌÌé’iý©ôæQΨÁ c%÷è7;¦ 1Á˳ 1~ªœö0gS-Iv´ xèåDÄóJ=ÖÕ&ðyK¥ž &N�òøJ?'ËÕ‚CîY�OµDÝq´vžlNÆÂöIyò£/–ý—hzÍëzUìïßaßxhÑ~~÷¹„3¯PœÚ)!ÝgŸ³ýׯßü ý(ø­ý7øÏ·¯Þ¼–±|(�÷;�>–ÀÄ%w)+­÷¤Ç¬hþ}ŸÈûºô8!{àÄ‘dÎ AÑT.Ô‚“‡ý‰ùØ„j»í¦XP|©ÿÀdpÅà¶NŠiÚ/Ê;k.“Å´ìÃ%ñçnŸEâ}\ǪޯÖ@»RÚæü ŽLú–ûºE›~µ7¯—”M�¯A>ýäÆN:!?‡ïFÙ{©fü�c¸PüëhοËÔaé6é›_�6Ý›ôDÒN{òI~·Èò­£À")P/_Á¦!ÿy••risÖ¨]§•Û§æ'¼¥¦\ô� ”… ΗÛ#?ǔ݋äš[J̬Y,cÉ“…W€JNšCkÚ¯oxO13ež.&°®$ÛL¢�/|Í3Ù°Ý>ÇêãÞ©“g3üõ>ýõ&èwÎíR%#.ý¨%Rà^%ð/fˆ|jÒ!Û’ªää©|ã1ÊÓå);Ô_¹4_ WÉ3úÒC»6�Ⱦ_ÄxÀ*vÞU—ç|”0¶>ÓšûßÓ<‰zcá$6YäwTŒÈÿØ—? G‚ÄG1„åp¾C´XC^¬2M­;’ÎbwsJášC5¯Ü:G:R”> ¹Vá­º\ÎÕÂS(âÓmøyo¿ CJÒš9Ö�>ï[(²q¿¹?±é‡ðL¾Vâ°Ë…m6PtÉ`´\¶¨§Ü_£2ï=Õ#d|giü“33'8y$Ú?xr@1þŒ~â³ËPJ¸—ª6„ϺOji™5ð:Uv{^Ï9KÚWC’SR±çvH] ~EFƒ£uYR¾(æBwœ€¸rÅÃM€pÞ(²Éljjî™Q"±¿bÁ¹Á2…ÃÉúG ¸¶žâ>KPÛOÚÂr�³Üž“8»^Ý•É4=ó§¬ùÀ%"+u öá$aÒùRL“pEÃ�•Ë~cÕ^òƈÏú@4è[»PÌÈûÍnñ]L<à©I¹‘o¢ÕºF†¤Ò¨B±JëÝJʃ2O]�¤K‡â½Ç 7œ�ùEæNíÅÑ §¨5W‡,¢˜ýº8\»õE4^£6L7Â~Û…pá”dH50ÌÏ“ò“›C9´[¡ù1YdSÙóÓ¢4:$Ù)/ãÂÄ=ÖÕ;†ÜÎŒ€�‘zÒ¸¶5RÒœÅp O‡½<É ß2%¶ô"v�ÃÛÌkË;9^¨-}~ÜüøM$4‚Ttª”WU!Ë ©ÊÈù£FÝâ´LÓ�3¢îÊ;®XÓÒcõ'çÐ_µJ˜¢b0;‰ é‘-E…bÚŸ‰×m#UŒëú0Œ´g_=Ñü��LÀ²Ùzá.<â—RJ„t¼§2;ëÁ#±BàþÇ©'ÿ"æ]Dk¥/g"oœöŠtZSËt#Þß¹Vä è6¦WA3ûƒGZd¿¸±]FÛ2Û±/&‰Ïâßg¶b *Æ)ý•óÈà³bï3 Åò®²$@òl=±É9á[»’•O‡RG= ‚§Gþ‹³ž©²çFxÍ<-ÃY¡9ææ” ÷!KãÏÉÿƒM}”¾(a¿ÿÇwÀ”É¢ÿG]¢ÿÇZ‡/t èQÂïäõ9j8³-…Eš 2ïK|¤ßà…'ϰPEn]ï ¿ã&Z-mÆ~3ný=~‰Õò¸JH4M]»õ¸7gŽLU�Y0Iá "�‘«§˜8 ¥ìÌV•�ˆý!Øêß{[çA,?Äœàÿ"?lñ Í|B-Ë`%®hŒ�Íbdš¡èZ`1v𠔜‹Í9 8r„.ý$�/©ŒJÙeBbZוü€á¸N?œ�¹ò† o�âºÛ‡}¦ŸU̯ý¢ãÇ”t³�p«É Ÿ,œ½c]�!É%©ª‡¢ä,µ9¹tMjyÐ2÷Iädè¢T¦!cŠƒ½ˆƒ~Vó•vÈ&”,b£¤³¶tlR,¥Â ‰_Ö'ÓÒ¦š3G`’8B#ð}óe¹áXT˜ÆuQøl£Q ßðé_x2碿(Æ0D‚Úí! ó‰±ê[¼�®ÆÊ‰îsFhæC�)èüЗ߆ýZ”­­gé<¹Ï(PìO¬LÊ{1'Vw±ð.JAÞ¯®ö);¢s¸™¼Ç̶º]�Z�&KŽÅ0�*«è`e&Q| Û=…k¤B„1ï}RÏuRȶԎ¬–žÛÇ s™y˜õ].N?ÊPºÓ±Ï¶®\U±y2³Ã©k9Ír0±dxÞŽ�ƒý­Õê( C„kÙd"g¸¡Ÿ2 aoTüÆÇõ(cë‰&zŽãÆò˜håž|Ù¼&\³Ûaà˜fN·g5‡!9p7žW/Ì1§%˜Š]2Cé[™$$<´1Â@p‹‰T9“àJ¿¿ŒÝ´Š+½Ñ�—ÅÜ–¬nªn—›ŒuX·&·Ì“WW’Ÿ/X‡Ì² �Y¯ÐA»X\¾œãt’ >9ã8&ìM”u)ó»p†H��8ß(Gx/)$Ë G<æWäã‚mLÖ³æ°2yݧ `~´é ö$Ú³H+|Îêy™Â!Ëm—¤JtIxË<ü#Ǜʹ¦9›ôîv@êkÃã÷9X s<`3îRäÈíñ¡ÿç&ý—ß$ŠƵ¼EOj¸{Óۢ̀ƒáw½u‹P£žÎêh™}Fú€f%5nrÄ–¶”×, ð¤†ÿ„"ø¸,>¥´úÇ\G 7£“>0²º¼HS:‹u‰ƒJX\òÏ…�k[çßrÀ×¼ZÚrœHÚrÒº;6a�<²½¡F°Çâ‹ÍÍ5âs9z ¾T©ÎCs4ˆ¤½X¶²_®s”«c·ʰÿ™2ÏÏÈ—ßÇá:Ù9YujlúŸD ¯ñ¼¦ã�òqOä-‘º<ÅJþs<S“øú›ò|­¶ÓÃò_u?ü+;ëgàÓ;oÒZ=m¬.8õ¥½»(Ì�”Dy1Öìÿu�®Ói7E|øâóÚ èmžN×l�k4PäýiŠÖÆp}.½]™0~|‚ÏÐQYÎGÛØõgÝ™f+á \æýcúl£Û<¨& FÉ�Úóª�Ë×�¹7§æ9VŒ„ÈE¯èðZ�¯¯0âMCîÝÀ­Ê§G¯êÅ­Â'ù§×®SæµÒ²«µ%%eš#¯‘n›(è¼K…i£ß7Hª,³£P<Âe�!M aâ(rù\•Âb39Ô\¥ö§°Ô5ÓdSY2Ø+D¸hÐüã¿iùé Ï„)•1—°JK4ú‹oÏÏÏðr©"Œc¢âÂfÃoèÛ¬]«Ïu˜Ð) 4LØôlÁ¯¼LÑv¸�½gîºuº@ë5ú¿}I@,)Ô)<ò÷[�ÆÏwj¶ã Ôݦ$qëHe.PÎç¢3a¦¢üÐηV¾‘ö.É}Z—)’Y­r”�ƒ2‹'…_ñõ+rŸHI½LY®4t/Ô»›U^³ŠT6�gÖ?&ª­6]VÀýë¯ë©À ñy ˜A¾‰LyøgÎ ó¬Ìƒ™r*¤ÔpºÞNÝwÖÙíþñá×ôŒ ïy(F±0Ë®E\ÌÑÔräµ0Ì kÏ£€Z«­ûÔ*A»$s¹©Ñó�È/¬æÄïÂ;`¤¼wW²×„ª¸Éʳõð·¸î·Bf½+>�c«…j9G¢þU�Í|L¥Z¾0ûm³ŽŸ«äŸÍçø—°†G‰6ÂÍNŒ‡ó<“ävq òØ­j<ºNÎÁ¿ñÈ£×À*C·ߢDÆÿ/3ón?RV½IðpyîÐvýŽ·É®¶}¯B:-ó¸bÚ0Ü˜ß yÌö0´xÉd\q¼ŒGþ#ðå{Ìø�Nµü�m7ðF�оòn�,‹á;Nsá25¡5Å ½}Š*¯ˆ–¢¢Òï@1Ô}Â:r 7’c|hΓÊi8•ï”ô‰®%*¬o ß¡=¥ïä�$'—C!G›%…èxê ƒi%El•qXÜcŸ��/üøˆ�Í„x£büD�RÞf�ò–œŒG+à'DGJ»È(s‡oWD¹+{ ûؙř³êÃUL´"qÃÞÒ¦]ÖÇÛw(ðïÂìøD†‡QªÒtêUï[„ƒõ[µÛ²z‹ýaTh™s-ƒ+›´M• Q�óŽ’|”¦�­S66” ¬lÀHºË*«Çf5s=ì¨uÛ¥�Ë hb`kv±“P°wC \ )_#O)5BHÏÂÊ í¾B}b™WŠ€8*>IøJÊÒ2¢<‡†"|‰Ô‡]\ã^£i½âÓrïç\¹wþœïÏ�"îÿÛ>ú8ï÷"õk½\õ¢Û[ÍWÏvFç5µ¶�ͺƒ¿ÍÈjìÅèfp}cñµO"Ùšfû©õAüzƒ…Eóä<•ü)"?wÌÌ´V©¬:HC¤Ø¢Ûƒ¢ä[íÔŠZÍQ=¨QcØf»Z¸âê^s)÷ö^^Éûp,Ðä¾÷ÁÂ�Ã!¹}ôŸü õq`ðw»\–_ ÔªZœ"ß|Ö”vÐÄrqò–û"¿I^îíÞZøÄ-´¸°kuaÚŽÊ!�~aö¢cŠ{‰v^øB|.a?®¾ü2ß*ñËíZÕp–rû¢UI¹5QQ£^ôªÏÑНG_…fõ…ÊÑéyJÝŽAì2e´cø‹ÌQÕ—£ïS²DÕžàmÖY_;|‚JŒpîõ¿jvƒ®0/ßóeŠY,Kÿ~?­XV;›Ô²Wî—u¢÷kÌi;àòÑ‘c£…çÎ-Hy#yUö!7ñ,8'hY—‰ÀJ0RŠÆg2!á[n;íZ„ÌÆÄ.à®y».ÕGS¾]ÅGÌU%&]̃(9/�´‰¶DR®�ÉÛQ/`é5 )­�)òÃa�¶?_U•�I¨iß0­=áè•z$~ÿ¦’B£JcÛÄO¨\Ú«Œ%j÷¡Õ·Ò:¹5¡õíœ_ «SŒ �ʽ^ý ¤ƒ€¨„ŸŸ°×ò»‚ã!úúÈQ �D0Eiõ†x ùho‹!ÁÒOY�­êþe± þŠõñ'iª(´—]°¶^˜G�Òk>j{v,FáÖ F¤s(äÁ­JNµ½rŒá]µ_ã½HâM«uµ"÷`¼”£(µC�Å9±t¤Ý}$u\fé ®]úyµ@÷¸‡ù†Zƒ¢òU‚Ê�q&e±Ì*Ö.²3ÿ™O·zΰ'P’oÝÈë^Ì_Ø”+{!ñŒ�øàm&ä�D­2 ŒÑ§´''þ…¹ …Û¸*Ì 3bL´ñ«§ kÞ<òšÌò{Œú½Ø3 IÞVj 97ù„®:ØbIJwýžÝ¾2¥À3 La­W¢!cD?èÅšjƈ¤ r„w •œJá’Ó"8KÒ2só½ä‡Ñ˜²Û¸ìÛÎù²äìô^Žˆ ]9ÈuxbVFR”•é]RNMÚ ‡ýÖ ì¶ÿ�@0 Þó¢¨G�TGI~š¹�»L˜Òp�2V?•ÝMq“8w·Ä—¨™fåÞW*H°�p4*i_úŽ„gìÁê¹á#õáú¬›‘Svtà6<ëíF[ˆ¯€¬!ŒX`üY)ÁœßîuÅŸˆÇ»]äÌaÓè!�mC |d;˜ü±DYè�(9IéîÖ„«eL;ðX¸- CÅce•DÛÐ5ÙZÉ„P e‰¾E©«?Ë>G÷ëÆs�³EVg ¥G¥)/È ù¿ òuõ»è]ŠdK¹ÃD<h�nøNDO‹$²|.&¿2d ñ‰ ”×ÞÂ×ôY•V÷:ðEm`hÇxÜ3_1zÅ¥nÝ•Ç(A1b™P+¶HO}›ý£.b´¬ë1nÕØ£EÑ_Eoëâvå[SÇ‚)àMaAÿ6Ü':üUÁ6:ôˆQnš ?äìëŠ?5V/¼pêܶÜï+A_jš¿ñ´´Õ”3Õ¬j†Ç Ëm¹gem3ƒ@©Â„¤øy• ØØ<ÎKx8'÷émæl&:úñ$Çâ"ËìuÒ¦8²“!6@—ó»ôLðÓœ„�CˆTZú<]„ª\QÔ®UÀ�ºFfáõnœÐºJ‘Ø‚pÞM\oBh]åt¼ªâ’\…N„1êfHëšUô“™r•4T1Å:Õagœ°?»ñ ¡ÂÊP4G2†û‡Ê³�gÅC¤JE„¯V±u~ÎÅWˆËi%íÒ£v ýcáûÊ*Ÿö%�ð<ãá, BåI�Ó™}èJ•‰¤>þËê*较oÞÇÁ)w�„û/�»urÅ“�\°fÀ’sâM}ÑÊ׺\d ’]�òœ+$ßb�ä~ V¢ã º"SÌГ?Âétž´�ÉâS=/‹õÝTâ!¢S¥"ueÒiV3?E±�Å�MÉtJZaxˆš4þÌ¿©€û‘ãÃOJ²CRH7räž1Vg ½²2A1ìj;æÜ§œ¹DÊ’£1ȧœÃݦÊ"þoTÛcŒÔѹ|T �NË—Û d1ÇH!øá#Uo ®$þ¿hÇ`7YK�Êï˜9M�Ù7T•3- Vè2«Ôa]ŠHÚœL„Ab“èsôQÜ|+Så_®28„HìaA—r¡-çžî+Gæ…àá¬sÀaQIA‹Y$´äÀ©�N|jàßjØÆư#vvÚjÑTœ'¸ 5ß8²i+ê¼?³ÈY=„‘Ox#U"sµßÛG³}ú*ó“(\@:R±XN©E}$–çs]ï'��ü™�`†I a^ ÿ¨äØ3„K’|JgEá¤7ïÓM�UU˜1«ø„kôú;& â<ÐU¼}ùö€à_iMIfßñèÑ€ýÃ)ÉnwÊÉmz£Ó锥v: Ð×Pw sÞ-]¼ß,'4:rÐäñŒÖ>DïxT†€Ä1•_õ!U]6teìŒ"wÖÎ$`Œ~í %Ž„ìŽ@Ð:Pq¸:ÌL¸Y¯AG«µl–©JD ’Þ†êo¡ŠâÐk$¿·˜kÅF‹Rèó(pæfobT¥sYä ÇŒÃÈq�¶è fø�ž¢Šn&©%ºl—É'ê•Þ¿nÛÅáäÓNÛ%eÀ«Ó¥zS¿ ˱f:�ÍA¥Š†�ÜvÞóß"\myz�šÉ?pðò½äþ@KÊ^bI–¬×„¡Q‰C=°6ü"ÄŠïT´°éŠ�lÂÖ=eK‘¿äެ�pÿïY%Û/»Q³ÿÓöak†p} ç Ûüéhè™ß¦é¤EnT¥ ’̱üÐ$Iœ ^\$9«eøô&ŒOÓÀ¨xÒñßm I¨‡p«f€²¹ª°±;Ÿž&‹*½*8QZ·©Nõ"Uñ‰s¶Ðeîîº,�³&ô�öDø÷Ým\ÎÉ MŠc›”¦°Vh0�;C¯¾ºQí•(U�‰ì97qÍOYs+Ü쩯蟷ƒÚºž7Ó'c{�#ÊiY,96ôú9ã¦4CÔhÌ ïi+¢cžº×:Œ¯ÃZ\{bþ¬9\j쌯c`UX¡5ú‹¢>ùì‰?àl›Üœ:Éù›bq΄©ÁD ÿÖ˂˰­· e¡"¦ŽjKPPi¦šF´§7d/DA^¡' Éï~‡»8a'mÐV“T›¹G|´¾²�©Å„r3ôŠþêÖ(™J§Æ”×�oM±JYïŠÏìh•¸½kIÄ�»-¨Zµq–y¼Z¦ [mÈ’WÁVT¡öæU½}O³Eí÷�¼á\ÔT¯C­uO-sµH™§YS"Ô0²�OÞ@…þ(�ýºÕG^¬Oà¿}ò ó.æ�s)5µ@Þe„ Â:ã¯o·‘™°Ñ6|,B¾žð5̤Ow¹ô©Í¦£@H…è¿M.Ôô Rf²ñį-̃¯A‡´ÐqþA•�›w=]+oÞ–¨¯æbëŠizVÜU§EÁdB‹BÒ=¾€yÂ7ò<*Ó½VžÂF£"À%çYµô9( êÇ> Y¹�à ]€�QÅëòLˆ?¦x·ïƒ#¯¨8Y\p…ÈÑ‚’Öb‰ß¡M·ŽÙrçåÐ¥– ì ¦€ë©TáN#¦F“|œÄŠ—UU AŠ›=m6=]]½’—kâ ÅË åˆ2¢ùnPEEXIë×i ë¨-áÊ‹Êx±¨èøË|á´�K:ˆÞÓÎ/F›Äón˜ÜCJHÐÊi~Ÿ•EîÏÈ ?ÇV €ÏN<~î“ÅÚ톂L¬îSWÌFj!º®ÕvŒf|é}1r/»›×Vš"¶¦Ï1£|ŽPä½h¼®Ù†TÈ#ªR™«�,¨÷ �Ç!ö#_ã·|½§ååì&[º!)c‰I&ó¦ÏÑjD_ M•3*¸7»¡4Dn7Æ×g¤BA)ÊQKÀ?ƒ ª¨8mdîQ«?ð9ð8äyNAªW>þº£ [yBaüõ3'XöÁWMû«gZ5°ÚN¢¾Uðó�çx«ÆÞìß0º’e§}« ë>Þ§YIXt,'”;ö8„&ÔðÃêvÞ®[YN\)Z¤ÓÝwc_Ym-³)nQÕ‡³«UçÓËE�ÏÑÜ¢n��æÉûŠáÙøQ°ë¾³�àÈö©ð½«��iy\ͪÇ]ý°ƒ{}íG+º¶ÙË­ù»p�½LFéÝæ §!ká[ŠöTçέ#è1xgñßÍdÁðF•:Á~ ¼_”˜s'u-PµŠÜìEïXœLqÏNõnŽ!  ø ä{W¶»0ãNÇ|KÅ#ŠÜ‰M;”­ðØx#ùfó'ä¨Ï9 £§crñË9ËÁÖé‘ÔÎmÛ6ÛPªÇf2”ªð¯½Çãáhpxvr|«ŸâÞÙ廃þ÷Ï.�þtÓâÞŸ†gðÎâ¿·Ìbþðmì¹Ò.m¶_—ò"÷°s™²9­þó½Ëd¼§Ùç0É ˜ò¡Gr‹Š¼†Îý¾™0Vq¼)QÏ"ºHQñla‡pºz:’Aqí6ÿ”¦+Y OâÅ"úe¤IÔ7¬Tq$æí{òDà"Š'lâòô”nEr�qW;æq�'÷>]µ‰;BãhsRNìªqõþª�é#¦BŽ‚žy¯Õm·U¿£�ñ^íì—\y²T�$YW±LÜØÖÇôEÞ‹ßqËqø0ì[¥öI¤#íÏبé&tëHÿƒ–!.j_==O•b£L*Ö#�)¡5l K‹[bôÊ‘G&à/*g,ÕPÆÁ•È,òVÑó1ê�gÉzQ¿àìݨ Í*~k•Œ�r³2ì–å%÷(ލ1éË~‹Xô÷ŸµðѵpaérUo$вËTEà‘�чë ãˆ!ß)±K”‘S§^‡÷EéœTÖ­ÐM²7û‡oâ^Œž, ‹9Œ vÌ›“Š?_£n¯ÃT)º[gSNV¡:‚ÞMÙ å-�? ò©{?fON©®‘N&ó“œðˆ¾è"ÀbHŽ“ÚpQå:²’’q‡ìOÆÿž¡e*Wê.ã?Â2�<” Á[ ym]­äWvº°þ„£ØÃU8L‡ê1t‹®2‹ob}êõë©›ð›ÿ� ˜+½Æ4e�Äï Øy:½zQZU”¦ jøËÙ�'ò·ò ™ëÐ|bù¸[ ¤õY=j-M¥Gj8™nË f¯ TªÂˆèÀ'¹Õ¥¤ÑÝ:R‡vqÝ%+ÒO>×68=sõIŸžJô'ˆõ\O½ÁiìpO…˜ÿ™fSî ;¢¡åfpçQß Üä]ÂO�Ê4c¡×<�¥·>[©êûTn ¡0ê%X7òtSjÓ©o�L‚Ð>�&k–Œ aõæ{ðÙ^Bx›¼[èÎÌ~’côù˜ÂyÔ+”¦O4i]•ûÕf¶ŸÜS¢¬Úgb»WÍ-ÈŠŒüò;=ü<·=;d¤ébâöµ  ÂPÓ𧦭~½oWhøÔ±Ñ» <) ã#�…n÷¤hÓ­ÍÕ¡þÓÕ"P™/Ñ "á$Ñ£òÀˆ�2¦P�ëAª ÑØIlGõÿQÂ�ú” lÂ÷Y?N–lp5Œ5ì]?þic<Ñ�ÎŒ>‚ðÙ�B¨"’iu…,¸¥v4Ò�ïÏ÷e´2N¦•ð)ô8†ÑV) ·v…¥£‘øþ_-’¼²°š J~´‘øÖ;I}¥wÛ†T“XZºó_,oúÎH_ŒŠÔ)ãŒé%kŸ"6›©ËåºW|µë–+Žý~ªÐ¾úð¢Õ¡½’� Ä]23%BÄ»±Mˆ(žlg:Þ„¥ âÙ±-Y�Öó1Ö?÷_yBx Ÿ‚�oÿ‡w†Ã×�§½h(PÆôt³™o÷NÝÑEK2l²·ÚnkU˜*7Ü œÌsz�^»My$)zþ»påŸ2~x‚¾N+Ë9ay� &¸hYËæ0߸³‰‹ê§mpUs#q ÛËÊ¡™Ö Æx§ˆ/ID! Õ,Äèü9o²ÏêE¾ë>Œád>Îyóã0Ù)?X�òàPa…º�7 A@·Ü¤-C˜K¿Œá®ch™Uð™‹Üš# ê!SŸx1µdÅÅðj;µ3ÀÔ»z7< Ž+ȇ9�|"G¨­©¹.IZf‰­°}E>ÅÕúãŸè¥9.F‘öЍa n”¾�NS˜“Oœà›—½5h¥PÔˆsj>›rÆJ�30ï<œwäj³:GØ%Fš3&632Ç…'4ŠÔáðGñÅÑ7p3ƒd§ô2ùlšÜö¦wÊsŸAJZÂs§í·S[%8’¶@ô¹¡‰ccVï &�Ï)û)Î?|ØO¤äî„޾:Û Ñ}ÐmíW,ßÛ¦Í ŒäF•‰žËÁ~Ñ>šÀe°×fëBT¬=0 %šŠ# ª¨z%ƒHœb°š6ˆ%ê’B²Yx<­ßÁ7Ž2†n>ù âGEcšO÷<´Ý°^}z~Û}ºQ³ž;ÃòSÀ+e¥ÆE84œ,ÁX¿èŸ ¯Eh0¸eÆ# tˆoŽ}<Eð˜o¾ûöÛ7ß’sIΨyÉ ü�ð„[Ö"å†ûëŸlIƒŸ.4ÿaLjuìP2WÆ8-J xlƪ)‚&¢;à•)ãÌ1Ó†¿±Ÿrðœã[ævŠR•¤!�æu½ªö÷æËIµ'.o¹ßÊžXË l[QN¯ÈD¦ÓU9Iat–�¹*µ®£rË\O,¤ØBǦd–òYíìH1s¯¤u$YÍ^1ê¡¢´{¥Ö+V oWŠA›‡®&(«tPW¸,òŒ�|zì \õ’«TcD¨—ÝÔlHNu:wɬý¸™ásŒG·ƒ²Ûug>ÎSÐÔ£*lüÃy78;\F^Ê@¤�«öŒûÓ¥;<§1zÛÚ¥ïN¢T|ͦe}äê°LмҢê&MìEûÂÑjˆ!²·½~è½ÓØF£é“NM–#ºÆx«Õ0h¯“ì°è0�Á0‚rMn¦c®—­ý•�¯+”(¡ÝI™<,ðÀ¾Ï™â‚³Æ¯HááÎТ•Â@ja$L%ÑToäM» FÅmšäo(ûíö)Ñ|eù‚:IbÄÓŽjwº¿áñÚmüWŸ0Tœ,ëAgP>Ü �ß\E7e2CÅ{Ã7ºëkìoá +A$dÁ»§CMÖÒäC±^LQÆ>Š&+I¾Ð\©ÌTÀs>!�z@þ§ˇšâ‰Ç»§¶XÇ2Ý'Žâ�rC…nÒ6Ÿ_9x?‹>œ‡Câ8–PTœLƒ¬Ìßá)i$¦ßj”ÜØ“†yƾe-£$§²î\EÁîÏâ‹FýÚl½dÛÓOªL8Æ"0�k)¢}Ü~Í…`Àüí ¡Fa`Âyt9�69©±˜h·>J&»]/0J)HAŸí];-µ/EºèË„dPÿ�ÊBÖ ì–× g†ðˆÄó$è´š·OÐè·Dn õpý’›¦ð2N‹¢F@àP­s0Å5p@#¥�|Ðuj ûÿdÎe¤§)ŸQ¬; EûR}SOaÊ`B¾hšlhÆÅÝÂtPey¶„¦Ñ­Œø\¥ D¥1ycfV˜±wMÑÜ@�Ñ»=…]p•‚/ZI‹øEå)x9�ÆÐC_n|B³îö@¡´ŒØñZãÙºš]«Ðn@úúiR'ê.Nð�“vYqÈþ\µØ %¥b3 Übyx´<äC«(:(Ÿ›ùªÝêÝà78‰P= 2è#¤½âIàâD¨h ¦+�˜UPªœ"ñþ±2auÔåJFQÏx‹ `¨Ê/Óq!ì«w v’->* Ž×u-àQt¦�¹@ßÝ_zλ‚ eàu³‚m{6C½7Îzff?‡ŠÃ<- �àm×¾RA-ÿÖUÙ‘>[]pqUÙïÜ7å�ÀBï‘(û½«,é†&‡É4B-ý6eÌ@¦s¿wj1^‰È)ÈÞ¸0ðÓ~Žáħ.ƒ ¯^:wr�î˜ NÜmMó•sW‡…ƒkH:R|}4~à+çf¿Ïîæ:U ¬m–vnñ‡|]aÊeµì¯œ›ºÝf3ñVsníƒÁÍ>Q¥uŽ� ur~rýîäâ觨�Ò‡Y)ZmàµaÿÙÇ ~’Õ*QÁßÉ ��2ç"Ñ+¨‰ÿ˜râ Iš9ò3üçEš|â„sÎ=œ�\ߴ޿ɽÚY’øS{àÜÖ£ëáÍðhp†r™õhByïgÑ·{Ѱ Daø¸Aܲ¤žO5‰²FNÞd–.—DrÍ$Å2õ�ŽÕ$XóüíKi˜â‘^øèÇÉõõåµkÀoiÀ¦£%HŽð�u{[TŸßîôé<ª×Ëw®^ßlõ Ó31ƒ“E†öyéìÍ·Û�9øÅ%ìɉ«¯×»}áR¢h]L Üèx#‡‚ë*PK'å^œ^ú(ÝñÉá‡wÎHœG©¤·À® Ì×Ôú²QyL¿Hååø÷ÒŸ–ð)�ž�G/tx&ÌÏäßó«Få-Ó~*, ,ÿ!C´º»ZÎXŽU�øoú%p^I tÉšéTµF‹¢ßJš*!&Ï|"ô©Š¹V;j’ì:áÕ}F¢2‰È+¥5+f³ži‚Öè]™nÈ}”tÏÀ(Ÿ)+Êu¹dl%#é]œ>®Z’šzI®~p®ç�¶d( æ�ÈO‘åYn"VõÉ •ÖqÃÃÏ:*"@¸2´rì~ÊAÎÂôÆŸáÞܪ€¾®&KAÝ“.îßRë¦ ¯d²V(7‘6|ׯ)°q[xº “üzž|>:¾_†d¡¶UX3ç�:¿…ñk9yýGrŸ,ãdŽ1 h|$PfY³û¬Bïî4°{4Q°f0�Çz¶A‚óÎÓ �Ô‚£]s¾† ‹¶Ü¢i Ò²ˆGDàtb7ľ¦uàŠèXH7Œa‘¡ôÂM¦{w{*âÿÐÃUÐ @g6”#2jíS§%_¹ˆáÊ•ùúåù¡:¤A™×YÔÒ“ôÏ·+ uÌÛ‚¸Ñ©ÐíÕ,þ=Åç)ß0ë^—QöÊÛ¥´Þ4H ›/gÉ$5N®+Æ^㕾q [fôêàZ³ÓlmòìýœG4`m�ÒÄ£C/{ö‰¶CF‚|Ú‡áþàj-ׄØÕPcÂZã¡Ù“x¬¼.‹-W Ñ=â¢<ØC¹høé…7 qÝb©92ÕŒ±BaMèÄ4¹@jð�"ÿ¯ša¥òÞ³¼ÐØCYã4!aøZ«ô3©2¬ªQT*V ·"O?רRÊò½ø—�YÐ=ð¢Û_Î Ú)VÎŽ¥é¶䥈K�ǰ)DüÏ‘èØ-›YòJ—-·v’f÷îÊ{c«ËIz@†ìÚc/ê²å,] λ¼ÁPŒÙ«>³W"~<å:7hwX1Yºg$»}˨ ÿ�çps{¿‰¾rŒè®"yâáõÃÈDT#ô­]ž±°®X*í0ÄNz„Õ°<.îáÉ«¯ºÐ´(ÿ�Tøû¬ŠZk( ¶Üß/ÛAfõªÓ$NÑ|ò»»ÏÊò@›ÏŸš}&-NhZLÖhLäC`eÅØS‘·$…9X`¹¬$êÉj%i&ˆ…ÌI˜˜)::õµ¬¤9¸ÁÄä m9SHª&sÎ5 º`f[!6â ¢±6è÷¢ÿ(Šå"éEÇåz•,(vöÅÏ9{!«äñÂñé Ňh¯ÊÀè€H�€0ËFâs&/d÷!F‡è²6“lyã‰!S I#E«¸Nq>UÞà½hëïþɾh,BX¿ ÐÕ–Ÿ åÅßBëÌ4ÝWTSlã³Bô~tÜ}öŸ“Msî]åã­„?©R^Jf�BìQ�-a}Ê œó¢^Á£Ø”[8�ƒvZ/y(Ø°Šš×ü�C$OUãkÊÛ rÅWÊ;ÆB¹+ïhQȈa¿FÄѾh_eØ™Àžï•eªEÊÛ�öÉ5é3zXq:Øò¨Ò7èsèFþ�&Ÿ ‹¬¹ááŒÛDó¾˜$ã5HÚRDóÄ®™F¶ f˜bà—(x»°†÷KëwÐ Ì {pWsrP Üé¦S¯•áÐÃ#q`fz�'Æ"¡¦c²h»wåÈù¨"¶|ÄEÑ]ß§zË$; W‰–ZõZê5äk‘!ømÊ¡]*ªxžÂN¡ÜV)�lÓ…GxŒ6PœhÃÐB·°ì:M²*Ã!&K¨Ž“Mȱ‚,´:�ñ¦ž£iöùŒ—Ù’Zq..|äœ øú"~+ÜS�[ÐvÀKøI9î&ð}‘Ç–÷oiYôQ8«ç{�¨y8O>Ó4Ýæ& »…ûCîaœ FMSyc Úxš€3z¡Â`ˆ™vb�üÊhpˆÁ¸œ¦•ŸöU,ÖØR¥�¦È¸]#ûs�& 4Ðv;¿,AçG³�•2P£e˜Lbf¨9Ê#,dƸ Pn �†7+ã ͕Ь#ƒLäïIÞ@<£¤GŒ‘Í0Þ¹”ù.cŸMÐ;§v(ä¤ýØn5#ñ¦°s9Ù“%_8|Øç”ç–(‹ðßë¼ÒY*‰é-È Oü4µ„¦‡�‘8Á™u®“§ž¸º1•§ÍZ‰söÏé~,E<£Ëû�Là¯ZmïøeŠ%ÝwQà]Ý9ìÐwÚÄ1Å}h^cÞÉDZdŒ•›BÁýndf3ÊIÜ9Ûs6$ÊI±Úp°< Û}ÈÜÁ—êc�„��ãõñ›©»º;–úe°£4§“E(DáXhêùÉÙé }fu´Y—0 ʼn;�jŸÍ�Ø „w/‹‚¹ÎD`ê�x-% ëm“xkrŒ�ËŽšÄËü8Ù“Þ¨`˜˜®EÝö3•0”ŸÝóÂì›p1ûSê�«E¦™1"\LENHæÂ}á4)oè”6»ªËzÑŠÇ¡‘ËK,%åä*V Ã¸ñ ÙNd€[�ql»º)Æ<¶ùfs¡‡¢mpïUÑöñ ©‹#‚hú9b“7ß;ô†Gn yyቈå!†iOÔúô–Ô;BÈÕº †l¤AÕ’Rkì�ÇñhhÙc_bÞj³Û«9"gN3È»î]Ü€3b ¬ekv=ˆ•ë�¥KÌÓëÂwòlèºÏWÃ%jêvlšæ ÞÿÊn�ÑV¦vа•| ‰95”´É’,f’Iû�°0fc‰5Â@_»“Mp¢è�©&Öú:s •¢l9¢c΋lµzfbª�ÓðƒÇ_½O³;g9ôjCYkµY­®>lõÕÆqœ)wd¬J .Âçiâ¡èL½9[ùŠ«ø2EÂŒkò1/B!�û—_;X¬ú„Ášâ�ÁÔpzÜòö CóÂŒÌû0‡-7¬ášvøÂ`vb0Ö9{ë×pÛƒñزõNi¡~š¸1à“ ³áaÌ—;eá9~ "yáN¢{‘rÐÂCš:1±>Âß9ã^7áE±ø@)ùŠÒÈŽѯԀg!6°¤^­¶Þœ•xáÞp…‹î`ƒ¦ý-€fi q"ZcCfS.ÞÍЪøXe庌ñ¢‚F•.Új½iLe‹ðµ!Cçsmã‰$Ók� Ö¬"—ö:|_b­#¥ÇEÔz¼®ë š‹Õ�‰t�& ?1£É·œ†­ªçG'*×®øôøÁD�kh]p ¨žc‡:†*Us i¸e‘\Eö“ŽšµØ˜²I)àÆ©Œ zü{DR—k¾‚ÂÅ2IeàÃÈ’ZP@¾f§)^ijÇ6w±µ*7ëR¥f3Ê€P+:Á¼DKdiPÃ@3 •ÒÙ8oÉw¡««òOv™B¢®ìƒrçÛÖwÌ23ÙÁwòÔ(uºõö�jÓ+ê™ÄlóÕã–¢×g¬ÀÐǾÔy·*n¯ãheꪖ�ôéƒM¬ÅÔ-Z r Æ@MGÖÇ0¦·ŠK žêu!½…÷:iÞ×-­Ik0öq(‘F¶&}W‘/d“�fW±¶Vs2É�Cš ãÝIoV·ÒÞ„€+¨¨%TýšiQ¨‚š•i’<ÙqF»óÉ7M Ã˜/¥è?`Ì �)‹ôÊ~pn1g�fJ;ÜKº>‚Ò¨ë}Õ�s“gÚ ,ؼAtÝ%'J²¢¬&F÷}¾•¸7ü›,ú7J|°%Î2ˆ¬.ÞæÈÃO:ÍHµc_XË®©€Î%F•78|RF‡ý�(iÄþŠ�f˜…Õ[ˆ]@hqZm§Å<äº3ÂÓ,Ϫy×!ΤôßqŒª ƒ¿KÊé‚B'¬wŠ ‘ð„Ø çô!D™n+~DeÿkntŽÏÙ õ…wõÍx;¬¿5àßvÚü+·Bîîi ÓØ�ßêÖRœBCL³ZqV„ÆìÊ/a¥Ìýè8 ëŽü–ShðföP âË£ÜBÚ§Ä´ü�‘2B@ìn0Ô¾zø»z:  PÃñÈH—2C¦J€IOÚ$ÝÁ“%\>žÛ®2’À\»-ý4€N-Ï+ÛÎjÆ-n‘¯ì¸øì �wËìJ¨¡…øõ~Ø$ÂcíÞtü¶7ê“�›]¯P™OÒ]1át\v0ÀXÉ‹–o­¹N*!ùQ�Å´—Àœ%µ‚‘{©ðð]^�[�O€±Ø€,•ÍMlÏF}Ô¨ îýØ<ô¢`C=µ ¶Òâ0]­4a¿�'[­(<_|-™ã–VÔúÁµ^/× â&‰„ø¢.î(z†y=4 wœ”ý53¬ŽÐÌŒ ÇzB�‚=OÍXHÚçKJUUï9è9 j‘–/<‡œÝXsZ›¾VS¶.¤i¶Æ8š„u‹ÄS�ç¡>¢‘–Õ#lááY*0�1‹ ßóÖ»Wóœò–3V¸XQdÚ$Ïåv{cÌôÍgè6Çh»E–§H!®N(ý5\ùñ¥ùHx]—ÙxíÕʬï°BcY�9Vç‹ãìf.:ªüaKñwäYqé#wQÌcãpôxPN‹~ù*ÞN±×róˆðWÉ}ª\è�¯4:�‰W ú]0Šþ5�pL5aëÁ¼Æ{߸š>’p‰žO·èùä“ÂÒy°“I»•Œ7Æ{ªK8NhG9í¯(„–JŠŸWÅ=X~7±¾â·t+q_·ìþæÔ.0udïÛç[�DY½˜Ø‘aán?Wä|t;MÒ¥û¢wèX² Fªµˆ[söìðé²ÚÁǹ ¶/‘ÒØy³&ÕìvZT*dÑ ÿ×ćæ9ïzé ã¬) ²AI×·ðžÜª(�[q¿‡?¢Kåíýk'4ÂM3Àä h¨tgÑ€Z‹î_ï½åèZ ;àI¿ŽØïV…òßz±Ÿù øÙZ|ùcÌ¿ðÇ?2²:!R"Ýmt„Ä«{/Žp1[Ý2Ïm ‡(Cí�lÅoÝxe›íÂÂó/Σjb­èè¤Isʸ‹¦àN_Ùê;z^naòΓ²æTà¢*F*°*(8"‰F«·s¶˜?ƒüh9Êw{xuÿV#¸áÖ’'4ýý»ØŠÆ¿­ªÅ-¹é’â,œÄÔ„YŒFg}ª¥îF#a‘ÐÊoQon³âv2ûk‡ój‚„xMOÿ /µN­¤‰ªæµãŒ&Q¥N|í8�NÞ�oq¹æ 7 wÎmk’ýùäüÃþŸ~<ï1°E%éƒà|¡Ã2iñ%c± jAi#©#Œ+!×ÖxÓ…ÿãÂ\æcŽà6\Ž¢ï8aûŸÚ#}«½+j¡e4sÏ[*9„õ¦é˜Güˆ!uC iÎxsK↷?Nj@0Y$Ut¬ ´O¨7«ùê6o!&ÎcvZ”“l ˉ¿ñZ Ãm;£ˆq íJöŸÙ‹°I¢¦È)Bc àù´Ov³8`=DðŠ½¯N±'&èž¾ÅÉ:³ÓœäÂf€èFÖ¼¦"˜¢l'õ¦3JÓèK#ü�V•5�ÁɧÐgyØðüÒn/„X@=… ´‰¦L_»ž£ª‘‹(1Câk@Š œ/}ð~ó™‚Ú�ıd†”*“L'GgZwƒIäö¢«u]\^œ O*Í‚±“x×Ú!Lk!®Îîô9�dñ‚]NÍ :N'Í•WãqÏxn‚ƒÂÃ2UqŒv‚8pl%*›b¬ñU¬ ´„UÈ©ƒÃD#u¬wÚ�b˜–—²Ü´´MPå¬îH¦S´¼„ºp•Æ#5þ a–¶¡4s¹ C®ŠP«úï.´¤l"€|šåÎÇý½@xÑö±I’ŠRÝq0ÇÎa)Ò‘ƒêL¥Gk¶.IPåô?ú&{½æãbЕ* ÉÇâDÎäìì)méÄÜNAÒ¼1‚eŸ£�Ú^$ÙÕ)Âf¬„í:CBò;�-ÕÙ²d’¡PYÖ�b&¸¬ŸnŠ£bµá dg X»$ws�¥_ÙJ…Ee«ÁÔù(œ¨Ì¯ö^ï½Ù{Û“^î¿ÆŸáŸƒ×ðÏÁøçà-üsp°ÿÝî—ƒý·¿'7âxçÚ(þ@ž9ŽuÇ$fU¤Ú‚‡IlìF£áPIIßA 0%¥Jdyèè�ë5%6ãn°—NCQQÇÞ4å×:n™`êºi ^¥¨Qu)ÑÞò¶*|E�FZ"ž{p ðÉ]ÛZíç3þø«\ôà&Jºú”­V1¢À´ V0áž4]J�É&&é·ÔjÉz*)º:rEI\„R‚?�²L³6ž¶‹äÌÅ-G5H[§ZÛÔnÙYН«2»‡·ü.U.úâ…ÖyI�ÎÃÌÊFdyÍ^:1¹;�7eòög�cè2ô�Dð§…ÿA\ɽ7œï>ÈŸ²ô¦öÀÄàÇèææŒ\wÝŒÆûŒÑƒB‘¾ö|}ÍŸßNÝuñðÄß»?~OF™Â¯ýBd£#t`Tæ-•ªBÓ¡r¯­‚ž‰I{Ìí›!•ú^JYΗp×¼6=¸pt„åZyËQŠN)ˆ×Ó[ß*“Ò°—�T‘…¢�ü^é}Æö_QJr”;ÆJ¯L âzÁz¿éQ^g—m9üÌö‡—K|x¾£à„Eá´;Â-,)-Ê¿`”K6ý&Ž~þ<þ^È þ�~2 \Ãû€*”¯lHý8”i_T1HM'J¢3µL½Õ>f‹é˜ÄÕqmY@ËH?Ç[Ÿ%à‘K?æbÀÐÌRÔ"wx�¸@Ë$/EæŒR í]îd“øA vï3]9y¢Áøô² bzðÑ�•t’~öVˆQ®Š PºªíêEλhÍXtQ&Y8'Ä_bÊ¿3Ë>»Š�‡sÊtègžr):ºJ)´Nøh€ú†ÚÎÀÑYJÀ´uJ@ +ÙŒâk›JDV\…ýåUWTŒ]tñå�¨>k9;x"zŒê¸Ÿ¬2ää¦Ós®ï#¿¸s±Ê·(ËÜ‹*Nú©réØ�’2'~ q–íŒXæÏÅú1ð« /m™eö¢]Þ_)3u6žd\0”„pQÄ1³ˆÑèüˆp ŸÔû�¶�4•š$µ‹–²!WÌfØñ:oÑÕ6º³Jëp,L[BXgú °çCÓœúˆÓ t„—¬kÕ!LàÀ°ÎvMn¯e|˜©É ÝjêTRªîqšt¯=Mõ‘ïPW�¿l¥çñ�dRç‘…˜E«´ 9:Ü ê�ð �b꫃vÝf;u¢Ü@ ×ñtó |ðGüI³%¡ëVšâ‡Xh�Û~/ÔÊâ ðð�û*\\V‘9Tzkt JA­õ#¤ïáä ž§ ÍËË-”pwí|à{´É¶êq¯Êo½Ì(be’¬çõiÇFC}cç³’fL{v+È“vjIù¹vóüÄ•·�N:ù¥ý½”·ÿÔ“ýSOöO=™TVò¦·ò¶´ùÕʶDÉžn•[+Û1bp±á•è�„Øâ),ÛhÀ…�‹éf¨O£¯:9ʦƎ\ÐéÁ¹ÿN=9£·gZûPúl[_£\¯îÊMf«´<÷átí�>8÷ Ã1Z Ÿm¼„w�½×jÄ‘ Æ�¹�R*µÖ”üE‚†m¹º¾D�ØbQ©t[<ÑN)ãÅ"KÈõžê>yåE‚4Äög�è ø€ x·ɢ᳠ŽËƒ¿Á£�æé ]t0ϱBHt^®ì.'×ó>gAe��Å—?ºðZåoG~PôK=U¢ðw1è\cÓÐXÁå›ï^’yu˜C*üe´ÎÜÂß`±€Åë#'dr3`a<ÎmçÈd˜Vç'ú&ºÖ(Wvªÿ±ò�ààçÜ9\zÓòˆå«'äâì`*´ÏŸó«í.$­Ï1õޤ÷3 ‘ 'ôeµR9:ãðO{tbÈv²Õê[ã|" ²’'*ÖmY߉ÊG�7᧯æ+¾ ˜¯Ci5p¶Æ;Á3W«Ã­L¡.}œL9!.ȳIqÖ0J È ŸŽßÓÕ�É!Þ‹Tbó«÷W”w2Xé…O�D<$f 0uoÁ$Iw±ä;Kç¥s¯¾[Åf4‡óš‰æ\|&ã~1ÃØä“Gþp­×o÷¿�ì²–O1Š^ÉôÜ“-…^Ê'D�îæÐûî®1ÿùClžƒ ÒGúõáQö<ÝÃX„ÞãLó VË÷VÓëìLàT²ËOpûì„}Ç¿¼A;3™P›Qyp¬¬83‘ÂËtµæçW?èÂvr£uWª÷ÒÑüy¤^eµ6�ÒV†'Å£1”I3Mò†;ŠÖj8†LW¦ ¶ôÁn$ÒДóйt-]€|‚>ét¹õR å8bÒ&ÎÙ™Jµ Or’RÉ$Å&ƒCW–¼+Š;RçÙç#<X¼^½Þ2¨åÓ�•˜GhYŠ2䀯ÙÝG¿<.¦®Ë!÷´Îk8§GD™5{€]ÿu�~Q@Ë ýI‰È*hZtŽñ5ü ã¼Ï²Ï8n8yKJ…Aî¨ùO;øŽ]Ø€È{”hØ„ëràê—c+sŠßkŸ§Ja ó !æ7šm9xTy”I¸»­‹[àU¹pmxû0Ž“š©XQ¶QôP5Þèxn*¢eæq:Oî³ã@u2ؽ.öV*Ði5tðLâVq]±r?wjOh­CTGr%€õ½0\¾§<"–Eb]¹¬Ñû*+…›®`ß›2ËÍ­&(É�[ ¬Eؘ„Ò‘ÑÖ½rTÓ‹N,«#ÓÏ+<Ä‹drSúxŠêfP¯uMh~X¥Ì(ÈqæOm ±ÙrX§ËS8‡ìñðx„»{½Ð^7áÏPuxå+CÖÿ+�„NÞã$�÷Ð^ÐbI—ħ¾Rš*Rlç”ùKlÑ�À�ZæœÛUx^×O™Þî?[/&�H�ïVBö@ÜÉ!Åæ>#³‹ô�b-P×�ú´@aú® OËÂyÓ¥,~–¢¿pvê ø£`¹jl"Ôz­ÜŒƒ|â��Õæ2'…¹„†»É‚¾Ë8,�‚�ôV¢ [üÜÙŽCá¾äß”~` ®R¡�8O+}a-ÀLÄ^&”~f”²Þ£ck,»Y6ÉP‹¦Æ�!žž†Šü É5QýP™¬¼ŽÚTüX¼V,eû¨9ìRÁ/ÐRI-ËÆüS9×>Ýyó¼ÂnÛäA5’­Ú*[…Õ‹Ò½FEw*u”º«Ð´ˆîu›VƒDšiq;ô|µ,é–fC5ñUUù–ö“û@M.Ó,ÞSkk5Pª\Éu#Z ÚÞ†)êªß},ºŠTb¬½5nc·~÷Q|²íQùTvÇ ~1Ç w�‹4 ·�Œ‹î.’4Ñaç¤…ÆÆm×î<ŽÀ¶I›vMÚjlÚvíÎ#òoY|‡lUßù>û�û£¢Œ!+E¡>Š~]ôYGç¯,ú9.¦É ¥¯àSûæít63¸+SNm?¢¼Â¬)lÔí¢•.a�_|–ºê)¤�&Z·Ñˆ «;\Ù¨~.á½—½¼÷øò@ò²r>RØë$¢ìO³] Ÿ–®%pÑpq !ÆN÷мÙÚ1\¯ìÆÜm±×H§ÖâoJ=£˜Ý¼Ðפm¼¿¼è¸�Ç1™ §Á� †|¨{gé~`è3Fr}ÿð„�öwµ»ùÛ]t"»;H&IŸÛ$Â?ü, €Íò5Á4Sâ?ÉV´t#×[�[J åÐÀ•èJ¿ÛTÕèHÎwÖ©ºYh‹nTÊÜv�Ö$ÍÔ˜*AªLx=âm­òâåk•¨‡¸å½S½0DÓgØ÷¿¥?çâLøÐ”âŠÃzÄÏ‘ý•‚%­9ývy…¶f��‘5÷ŸsAPÓÏÊÝŸ'÷Én´nà¶š<ýáºÄ%àjä" 7B¥ê6)§8tNåf$ÄL‘rÔi—¼“7�™—ñxe-JÁ¸Ž—‘½l% ½Ö}ž¦GÊÓ4€?g”íˆKéä½àïÊ� ñÄЭšù)B\:kàWÁÓĵ¯àX}ÿéPÅúaKAG@ì†j¢£6¹8ËãüaU¥‹ÅÁ#y¯yCEß#0¥‰ Àí5¡¬™z=’-g)Ú¨® cºÔWeqøyqîÀ‡ëë“‹›˜â|/ܨ~‡~Š..?ÆÊáS¡ø1/•n¹®(QÅÐ)‡Qh Nÿòö•[ß«¦;¦bñì²øžq&_ªï4_4êÿï´éˆý+©Š3}á9�kñÀÆ„ ºÎ\ º‡h�ëtö¿ôʬú‚ýUK¤ÒyVuš,ØcØ¿Vì2ëš‚KqŒy·ážÌêà¬G'—@,rLÿšêµýÖ-Ù1õ¶¤\«,jTÜ™žñ,½ÃlàUµ6í~ïáÜ˨.qùE¥ËþÞUö4Ë�eˆ*eýƒ{¸u?¦ QŒ½�ñ&í§~ lµš6zÅÓ[äw±× ôï—ËtšG„‘ùVô®>¡HЖº³‰â $œ­�4€•ÀfŽˆ°Ø ±_�àÁ1³ÿ›ÜÄ`qÆÎ ë?P…}IæSÁÞs‚°¸»�Þ‹{\sm¥²ðîã¡ îºU H�+´É`\ã«Ra´Êåµ�¢sE¯Æ„ ™ßÉd–Þg;­XÅ1…«\¹sX&ʬáu–pû*x=9ñ&Ò:Ú&¼Ñ(€hPhÿ}Ü�ïÞoç�=\g 5ºæÁk«Wwæ¼ê¯^º'3G&¥Š€ò–¤à‘ËÏæËtS�“ÿ<îkþÕwöûR}8»‰N/?\ >®ª2ÌIWì¹}%•A–qMomD*hmgîEã5a€ác\0+•êvQ¬� ­Ð?s,Adá,”+q\83v(JòžS6qŒÂr­ƒC¬‘|$5@îÆ ×ÒµùࡱtE‚òC6½KkŽJæ–-ûº×š_“Ã/LÌT ãA¶‘»´è” P ÆêIã /ÞÝ+l76з„к#ŒÑuHÊq@Ô1ªÁéÝ•î|]ïJJ×5IVp¢w‰t#ƒñ†s}œó#ÇØÒÕ¤LÝbŒ0=¢ï$ÊŒ7·íÀpWø£j-<È,ƒgÉ[­ËÔv^Û–¥ûÏZ›z³ MâfCúýöEQ·Ìƒ�LÀÍCš¨?‘ ™«C1­l—ÅÀºuèqÊjÛí ñM ] Ušd¼ õ/EØKA´ÖU•±7~õréTPÒ¸W/£e–¯kÖéwI|×9£Ý›—�duo^êœvoBã{Ó_Ǥ{]²äõZÓnR�’JO¡ŸÔG~ñ`÷‘s€¤4Êþæ&ŸxœQYBye¨2mU6Å(x¼ÐD1. |t=hÛèËZ5„d™àZ“%ž†³€7æ )€Ì®p´aœ¢Û³`ñ³ý;Á “æÖÆÌ]9°‰¿º¯¡Ι;Rè–ÚÙBµDëÓ*)`C�oIe>ó!%+¬KÑDr¾à"´DH9œm…+gË/¢R5oÖK}¹³Oì æîjn¸VäW«t‚¦2Xº�>|ž‹»Í@ïx å5¿xÊ^È¢ �ÔÔðó$ÉŸ‘šfÍ!µÌ“º÷ÈVÛƒx`ãÚóãž‚HÚÁYć �4¢_cM§´°¤ ¯o¹^#] ^}f5¶ 㞸;Äçü•…§2ÑeÕ/±-&Q±¾½pþé‡Xžzp‰ƵJª ^$Ä­”Ÿb†Š‰ 襷Z¬ïàdõÂÿÂÁè¤Ù/&Å‚0/駘pÅo3hŽćÇ1¢ý8…5ÂbBD›ÒiAñ§XÑM5t‘i”è"¬�d °¸ÐØJ Ð2°ß˜*@¼ÝZ'ù´c(©ê‰ ®­WU£ÐMðR’Ú…#´ wî%'ßCÊ}´ö¤“ÀsÁð U rõGNs§\m�†|‹)•{ª¦EÎ0…p%,�`KF ¶h‡‡¹NE+ÂFÅÂÈÊݽI?{3$ØSŒ’*ÒÕcħDEŽ·ËÓì33ÖGFdY$}.>íøá êYÄÐó 0 p½Õ5]?ïp†Ð¦c‡!_|e(±-ˆÈJ ß/l`¥ ;~q{Ú²Dš98͘E¡<]JŒù7'¼ŒœoÂê‱+µ{`œ.úÚ³•¡÷Yåp˜×€Ë [iùµ¹A¡Õöq¥ñ(V„dÖ0’P ȼ`£8fºÁ<ŒâÆ&X�¢ùØñJ7ªl)g Æ~fØZ"pD©°šl=ì,W¹(WòÒŒ�èÄ»nuðÜ‘@‚3¢ùd³ýœÿœ;d�Q‚Šø¿®a~i=/¦ÈÈØÉ LCH“5’†°ðþ†^ê¸üLV ÉE «ÌQ×>G$üÆ~êd�ÔjÞbÊ鳌I"°ýy«"Ëy^ä˜ç“­A¾£ð1U£Œ²™1aq’>äbiEÙ3‰j t†§”$òÆÈf ‡ •ÈÝDš²Pˆaš÷˜6:[âýKr8ñ/kO†@½& °ׂчM׈™pëtʦ˜•%£ÒC¿;ˆˆï…$„DiN€ŽE�€yüŠôž|“ y¼®¹‚C˃„‡#"›]t}xY£Z%Ë%âïÑbŠ+z)¬áž,)á%:Œ(À`í¥ž(Y8Ðhñ¢Œ­Ô¢\JÊlñÛ`Å36�Ï24…®k´¬ë€=Íè!M9‰+Ý\J�aªµ¬ÃªÈr&½‚wŒ‚*q§˜FT®³®Ø'ý@âVüˆiAà@²K�4T‰Šc‚ÜgEà”V>NÛiQ”¸yé¸_Í�ˆÂÏ”.£1¾ïYQàŸiÉ~O뀇ftrÉ‹¨n&<󬚳cæ�ÊüIés‰[«„@ �¯¦ po‹ÄˆOR&áôÈ�nØ^¤`>i:P¿ÏÖ• ÞC[s"3•‚™Ú>@¦ÊÍJ2XšpÎÆ)ÝÔnqþ “ÿðýÿKØßöÑž0¨óJ5ÛH =`yWƒ×@ò]ÞL‹„G?1So¢ûÓÜqWˆÖÂbÃL–X½›|I™�21Z/Ù]šO¬Ç„B«ÄøÜD'c#¿ÔC¹–ìQ’6€ß\=  Ÿã-=,ٹ鬩7p\®krÊ„ÞåÅêEÇÅÈüB½¯M£�/)‘zFµ§@&8$Ëbz«B…·"¨Úì-R„>j)WI1ë7Cu¢T9jëÆ"qq§xYè,Pü>?Ù)8ÿÁl§[õ*•�"óÄ›ÁiÎÍ®ÚV�ˆÅM\Ϩ{±QnžÓ5 •â"PÉMû”Rðï³ù†lâˆÉQ¤AéÜ’uˆ9ÂïÍ6•tÐéqp�Ž‹÷«ˆœTRÁ¦·ê9TB‹èêý•Ü‹'µ ò@þ°ðÖšÜ ÄàN® ŠJ Õù”¦ÀtñƒÍâ_Å-á3Ý D+•éš‘ûù¨á‹€p®ùo ާ 7ÄktGúI´)W:|q%Öè”^ò€Ì×N©M ùKõ” 𢴠YÛã8„9Dk¬óLTz2ÆÐ[¬˜w@߂ϖÉ#¼ħ‘æw¤uçœë�Š7†:{�U''&k¥ñŽcCHt˜ûl$�ØÊpÐcD¬ˆ3 TÓ9­ˆÔÇk‰Íín¯CY'K¢ ( /Ñoþž£§ÅžÈ�%Ú]Š»¢%i¦HA¯ç^´þ(ë/’ �M×äáÞ׸wtJ˜ošôÿ<Á3TÓ’‘¦=™�¥ÈGŠù‚QïÅáD£H^•k T!Ç\í$]¥ôEÙÅH9p”r&7jAÇ¥´ uZ.ù¬ƒH9ÍH¸Øû«Œi>éYDyrq[Ž)·½|oÙ™ã‚G¤¾ípà¢À!ØÛ‚EºñmmßWyµd¸çwéïó”‚Êqœè;³ÎÜ™ƒð9�ƒ{Y� E¡‚³�ÀÚ·F)¤¬Ëózõq­ñÈËyQ�NäH�·R”Óþub­µ�¢5q§�ÇûÆÄùWô¡,P2ÚÊN*†·Ò“Zéò˜¸/T,£D‡YyT r>Èp“€… ]:¾Ru:rTål¢ÖU‘ˆì ¼oÍ^x*Q�Ãr’î :úI¶ ÉþE#-à"İÄoZÉ=ÍD¦xMÉv êÚÐL§Î§v[½�¥�I bRùè‹:À%,…”Î ¶Sk¸*ØXßt;)±¡Ïµ‡>Æ&³ªÛÙÂdµ·ú~4™å�¢U_ˆº·wT‚‘*(y1_«� úMŸÑ¤§Èœ:LT—º­×Èö¯„šÕâfÉ…²ö* @­+èx¼î“„Ÿiy5O¨&—P† Äó¹QQð <•Å’Ó‡èh:w»ò•Šòn8ËÑ'ì™Þm¯õ˜Ó•ˆ$Eƒ‡¤ ™¯�‰«%«cÊAáá ÄñMæ\SS�mωY·×»á¤t†ˆÝ!tX|ƒI-ETÏ=Aàš�dÊ}�)1¢ÓÉn]s”‚)¹ÎI>_Sñ S�Ç’NßÁ#²η þÎç�NÒ±'³ÉöI{Âùé²5=6‡y¶Å‡ð÷XÝçk@_bÂew/ü~ˆ�ý¦•™e‹š®b»"«Rˆüƒ?£vU´óÔ³î��»pS´W«‹˜p€Iô Ff˜ª}Ãë¿Ë1ÁHšU¹­_,2ÿH~ôï-UæUCû{ ÍCÉG¸$a�-ÐñS)§÷MÁ‹‡Wx|É1SàÀ‹2q',¬Ho_¹°â3¼nm׊aû>¥u¥+ GŽ�Ђ„Á“×ëG˰{Þ”.Çü)¶_?„žH‰>®ðûN†¨´¾)ÄÇÃ=ãÔKÖ;x׈ÌGò<·¯©”×<žz×{3Jƒÿ&ÜWÝw‹b ²½uòøÊ?ª}¹�é¿e�z0�û¡¤9"‡Wàݼ'ç¿Z¹Rä=??|a|Ú¦lqÅjµè¿ÞéÊ0e�š©Ó¼•LžZoi÷Q• y—ã ± „ ø…UÞ5‘”ÎÏÆÚ¦¸zk-É%Ó-¿‘[n¢ óIÞ~¨|T ËDÏ鋯ºú´‡›Úíà±C�Ô*§Ô2:d©ÄKù…¶Ô˜ªÈ âG„üäyò憆ž{^eQ •–s`is~Ò@ ‚ðÀ~ÝJÆÛ54ôHñæ°ßb¡*û%iå•/oRa*-—ö~pí£€®#Á·‡v'zŽºpÜ䬺ոn‚óÑ|ÆAxD¡fæÃ.�kí^ÄÁ­âÕÑÇÔ]FÌnl>f‰bfKÅU)�-�W·y꽞Ͳ‰Æyêu¦×“î(”ˆ/e`ÞÖ‹K›Œq#ïyÓ-$‡î‡?ªºnbãF^º+nŠ?EúwÅNž~¯Ga²(ORÕ �·þœóÌU‹ Jx¯¥ _.4´ZûÓ}óµQ| X„xð:6ñ¢îuS±¡y›â§³Ü3ªÏ*nTk?ªº£HSƒ¼‚¥ T/„2©V£¶z•;÷·Ë4·Ü¦(ç0'_rËmpî&HïI5Ó¢¹!ÎÉË41±ÿå—ÿïÅ¿ÿ?ûûÿU@3'éy²ZÁ$?\ŸýϪœÜf¯~�üÿ·þ\ï½™ÎÞþþõ÷ß�¿û&}ûæ÷{©ö–ÉêÿPKÒV1]À÷ŒTi�ˆimunify-security/assets/ui-app/assets/static/other-root/src_app_components_vulnerabilities_vulnerabilities_module_ts.151590d435294a21.jsUT ëÆ«jëÆ«jux è‡Ô<‹vã6®¿âªí¬µKëZòÛ9Þ9™Ì¤M;™LçÑÝnšã#K´­F¦\Iޓɸß/@R²Þ¶óèÞÛ왕ùA@¤² h-}Ç •£z@Ý饲¦“¥i]ÿxlé…sê7|Ï •«Quõׯ—Wª¶\óú奸֨\.Ç–·XzŒ²0߬\F}sâ¸NèÐüï…g¯\:åŠÜ·:�þ`Xg$$Týóžj~=T ÕìzHîMw=ç=‡uhø†mÔ£Ó¯y#Zo7›ÍžJø4ºÍ|úðÙÓ»-øtñ³ÓmvTbò¶mü´à³?èZ* x·V_W‰ Ÿ­N»ßVÉ’·íw¡í K[:v[Á§Þtî!ô::t{�Ÿ]DᾺÍA§©’søì z-€u�¥êçøÕ6ÚÐi�ô{Í®J¦ª®·Õ#—†µÉ¨ŽS¼·\3jìÞò,ÝÊ = ¥Þ‡s'Ðnçþ~á',ÀÇÐ é(¿g4Em´µo.ëñ/ÿ¶~¢½û¢¹Nd>ÑΨ÷ùP?¨èx¡ý(û]h–íÞ½7Ck>Ê�±­“�}zCý°¤u¢RÝ6ïW¾57úÙwëê½OÕÏj7žcךߌF©ykÎbÅœ©+Ñïe½IÎ5oªÖ÷j®#JÔï'wãÚ®‚á剶ü¨ELìÒ+â: 'êØÎ’Öù ¡yMÕ:,+ÿµ0—j�áâÒÕÂ{©Ùfh¾Ôœ�.‚#9›ð2Ô\Êfἡ_½„=£òõ+[¹îF‚ %¸:{ñb¿©Œ˜JØË—DUÕ Nűßü¾j½ÎÔ´FÓ³BÇc°á"ú2º®‡0¸ZŸ_*¢¥ø×aP�Wõ…v l\R9ÕB­`¸¥ïÝŒ2½l:u=ã}‘°Ðÿ>ô®)2è·ß ÙÝ Ž°Ü¨u±ûoqup�Ýàluº°¡×øÙo•ÜñýØ2`?~D9ÐêÐà·fO7 Ûîí~¿ +÷wag`¨ä±uÕ£ˆBµÏbã9Óºþ!3êÒÈ>XÉÐ$ŠíÜ(¤!?Û9¢É>ÐÜ Ê 0‹B:e #à- ±›kÒ[l� Ù*:D }“.0ŽR6ÌfCÓ]Ht%=µÞ“Ÿý2|òŸÁÓá£ÉM… €à@ñÉ* ‘–z³ 'Ý(CJo€Uô§ãSångYFg0æ‰ÇäÐêQ¦Ú´oLfÑ•Ã>gÐÓ_zˆ��¥óW³u¾Æ°ÊI¡ ML’ ¤àf£ÔòS:tüZ%Ò+FÀ¦�å;KÜN;)Xß[‚z¸Cæ>�*„%åe¶y`2°¾`•rU1�^9ÐÒw¦§�oòŒTãpª× ŠÉ¶ÄÇ®+i¶ÙÄ2éTȤC+(‘œV·Ù™(* Ø8ûA²k«l£´Ÿn÷vù¡$yQ'qè¸Wù>ÍSk»–Å(¶–mbd–I­­ÐºÚÉùO�@�´‹˜:.�P7hh¾«64 %ž46ÍU8&¦49]Ç¢, )³Ó²Á쟛ÿ#õo Ãȵ Bß»ûnæFí\û¸š  ꂹ·>_¹¡ƒÖè'Àû»·�à€1sá-Œhý2�–æÇöÂ)@.úq•µÖ>³Ðq¥e!”4ßê—í ÈÃ�®—|ýà˜³b`5ÕêªZ5U-kÁØŠª¬&('”‹Ü2iÄÅt”üëSÏ?™S뺮‚-Äfìµ@».)š…† §®¦i�\¢ÓúS˜ƒ¶ãÊ97Ò|¦[k×9ÖÍ·ºÓì=Z͵“¹Éfô5 ‹Ìø�N÷è5)6=­Å²Øò<‰Ž¬Üð¼[R°;áèËG³ÿRɬ¬<ÿ^›Zn0ì0@ƒa�ð]ƒ@²Z¦o7  4a¸— ß\ Q¸ o˜®Û’]Á]ÊfgÓT«©Ko©_ûc„°{JÃ5¥,ÕX/V\<§q nfgÜÊT‚¹C]»1óMPo…=¹9ZVvG®¬U~iå�é®(Ç ´ì@j½Môè0‘·82P ©ãçÔ´�6©nOàÝ!§¤O¢³B©É ÌàŽY¥# M/– ÿ‚Û…ÕNM_mùñ­F¤4>È\}ˆÕœ XeÊ#�e1“Š�»pb Ô.ú @Ô-)³)³‘áåGí_ƒ ¾$ú‰»"õClr­]O{�3mB–Ú¹¢ø!o´c¨8Æ5˜�?´×ƒ+„w.Žò74W¡cÔîgµÚdXcM�Ù<ÖzÍæQ\€‰?¬íå-”m°xÛWCU4–æL‚™1sذÖi.ok͚ьzýδ¬xº³ŠN`¨Æ÷'çï¿¿JiL<H‹aMïD@r ²·ší°Wî†5bbZðÑ�ºÍd}oÍË—¦m;l6äh×ÚøOüÅL<¶:`…�ç:víÛ“.þ%j¾i;«`XëV`�r¿áµc‡sè�:—«ÒmV@D5°‹ .�±´r½Ùüþ¨˜J‘¨—‡µ`iZ$?ü¼‰é:3Öàî¶a ,@`Í-�ѵ9¬1ÿ¿`Èâip…U:�?êmI¿‘HÈÒ;·“ì<5Ž óTÞy¡WûX!58Ê ؔΔ7´<׃eþV·ñï(AÂЃ9ECG Õ)ŸOJ‡—ÎkéŽdE ¢ ö5‡ÏëEóä‹×hE\†xC"Ðîf8ÅÐeAÌÑÍZGíÞ0ûÕ¢z�s¼‘¨“Ä[Ï¡[É®ÉÖÅ{ÆH._ÕBÇ3L-t·p¡/@¼–,ôÄ´®g ó”bÍOO�¾ÑÇýÛU¡;ô—Ín¬‰Wð9èëMÐñ_ÐÚlê}•|à^R8OÂjÃhAõwØIïµ*ù“WºÐÿWî.í¢�ô-6hwú•¼FªÞCê/61 ù?;-Œjü†Ÿz§ßN8OH;O‹m‘fƇjß9`H8–ff%Ê•ñ#Ú;sA³ž’Ÿ’”ºéÀ=Yù>p˯]yêò¶›YèdÄ å6w {ÇC2¶ Õ8&�éäÃAÍó©›©ÛùºË£(!‘Fs¡3oœ�듇*þíÚz“ ”}©¯´Ìn+ÓõÖÔ·À@Ê(²Ñ!îÔ ¬Ð¾Lp€ÿ͈dÅ£a/Žód‡ef£ªº•ó¶àò'†:~—œÿîçƒN  áX•�¬j•ö^€X͇[ºž7ó‹}!ö8ôÆ\]ÅΪ˜fÿzÍJ#%ÿïiƼp¼¥[ž\ÿ~VÁ×;PðíxG%‚1-ìŒ'ŒpVbIW]úÔ÷0¹¸¿Èû¿Ë<ÿ©Žy&ÎùMò/8½¶â WGJ83þ-³Y#.&©&z§¬ß:}s DEßœrµ#ÞæÓ)nŽÇ;J-×1ùsô7iæÅoÜg�”íŒ@¼ŸSÄ+ZññþM�Bâå´Ô~Ä «öSš”»éÃb&Z)r”ô°1@hÝØhBønAfúææòDNû8šŽÙ]’¥J½ó ÇüÚ±yÈÃPë­LQKE÷{ª¨4y(@�búÈÁ}ê¼D8Lг…b­Ò#?€‰ g´JÞ¼;(¨ßÏ`P”c0 ?Á’wŸL J¡0¨T­:a¬@¹îBbÏÌ‚êxCJî‘°"¨Ì“4 ÈIILmÉùù¥Óþ•f“/Úù �‘OÚoä;mFþÔÞ‘_µ€¼Õ.^“×Úœü¢…äGíùMûL<í-úN`ƒøõ­Ry k5­P*•z+cïè ×µ áó[ù–-='ö¢é×]åù¦ð+2PvÒQúœHçÞ õª9V°>z�ÈVâí$QÛ2§�fÞQÙáŽÊ‡"�»;‘˜Ný'o?æˆýk˜c?Ÿ�5˜Ç•T)uø Ü©žr™ÇnúnsJ…!ºÝîóà#ïˆEᢤC^¶”b÷8e<ëßh‚BõðÛh· —|üô:hI— wx»¥“ɤbhoñ6ƒæ”HÀû‚ˆQ‰-ŠÛ�»Küîµá?•Ìø·Þï˜~·šÍ6´ó®:ú¤ÞsèM/œðQûÆ é7?ßqˆ,±JŒvœv\æºÈ+‰ƒk«z©¹²w6`ô¼%“ÕÇûGᣋJ³nèØÉg0 &µUÆx¼zb�‰\Û¤Wââ`† áÜ£8?…¶È<ÖTãDtCçkÕšå“Ú·©O•DÚ«Fá¯ÊB¯Â¡À·e�â3Ü�G¼4E̳µxÛ䜑‰[çƒ ¥¦îžþ£½Sßó”1ÃæŠcª€ºî1ªñ3Ž&Lú@^ŸyLN;æVgÇžé-`:ù„£!åÆxJñØ™Ø[�G>­¾%ω°i6M½�TªÿAؤ=Чž1MÆíäq()Óæìy£Ë\ºÆQÒÄÀ‹ƒ…)çàý£ a¦§ŽŒòÉ™ËevnÓ¿‚¨xRš'ž<7QàÛk–Ü™un.³á~ºÏf‹ë…µŠº÷§óO¢Te>M�¨0Œ�ù59 šò�›(”-HrËFiš°»yúü†Ü$k£º{y·’m6d]Ù€¼{óÃñ§7Ãoš›Í‘ˆÜ^T ñ¥ç¿$\ ƒ Ï6Ý8„ “äÓõfQ!Ý^g�àçL‹ŸÆ‚‘C¶†‘/~dn*£V�m„×GE”" vTòàÞðÄ4þ3æ„õdÔBK„2w„,Š®�f!òq;àx %ãLBO·ñBÞÊån§/~r0!šd­&¼ÿÔ–X!¤QL’êäz¦Ío+l¯ããYLÜP–ZØÈ”iÇj=â„¿Çy2°nx'ŸGúhBû¿xÁ.›WÉÀÜËT&S¹�Ê ëw˜W SL¶›:þ¢®p¬"�PU²GÊìb–uZî°ÛΛ{¤·L”í�h +nY4À”<¹n£Ÿˆx;¦-|Ô¼8ïšx¢ivæÉÁÄ ÷âÊzöç05?ÅüÌSß[¨õ°~/Yæ’6Þë)"—˜ž—Þè:u8žyi¡Y®Ðc×[<ê›ezP÷6�š+W 6—×7;ƒ�, d_¿Þí œìt™öj�f&ÃTí×|ÂÏv]ÇbÚÙÍ>j<›”˜Í£��dÞUF2eÔ÷Š`,çÙøP™e·‡�Ðiž$[ Ç¼YgY[‚«€"úˆæRvzÈe4¾CCq21±rÃ? äèäf#¼­¶ ð¶¶ÞÒèíÂDcÉ[EfM*›í.Q¹È°*¾À`™ ÏU`¬aF?�µbD v&Ԝٹ>¨‹ ZóâLJŽÅÍ) ¯à5,Ç·øÑX)ÓÉ´„Ù u>Д«H¼ Fý©ç/Äí§* áˆM2qj×੾e£?U<œ¯ÒÎHxíݲÅÄ”†ï­yȇ‰#ߨÁ5'Ô=E+WwÌ¢H9‡%îf….À±èR0Ý4Ñü11uy.¦µ�äPžïÌxFiªT²»ˆGM9w�ŒÿTNDA½¼ÔU\‰˜§H�o¡ùÙZ!ñ;L´}Æ8ùQr=%/õ`Gcgc襾­Dø\Ù¥!.(>Î#ØÝ7’/˜OŒE" !ÐQÑá™**u¨çâèB²…Ä“‰Ÿ‘x!M¨¥NùÜÊÃü­z±¼“wÄÒföc13ÒèB�X8r–Ei ;\´ ó"qªÜŸ¿m°/+è›s 6ñn㼈¿tv>Ù|Ý€õº"KU)ê¥>xý1Nø¹Œ&™³‚T–‚ŒÔƒ–ÓгÓÏG4’hdÁO»-MA?lüVù�v!ùó›3 ú•FaŒÇ„a’óî‘é³�?“Ksνô ¢V~ÛD÷Sô§™{Ë LÊæ0=toA©ÀØû¡“‡¥Ux vô®l£‡¦.Eæk¶Éʧ§RžëBRݰªF†�Ý‚SîµKdôìÙLÜX -Bmµ*îQ� ¶çDA&­wO´ÿ_�h±,:ði¤’ÐWœ6»ë~üS ²0ðùÔv"Q¤/ED•^|uJ4¢Ù|ÜÊÏ%ôLû�Êê³|,™’Ó^‰$¿Óî®É˜A3Ì÷{�M¢¤¿¦ýÄ3ÿ²7ø0#ß1]þ¨]P�ÈCjš z ñÂGʼn«ßñ•Þs9õ>u(ù;6¨é&R—�jÅÛ· jøFAâz´Ãø…ã‰ëY×Í·Yl\±¡Í'±áeíŸÑÀó<¯+1îÚóíønü¶oDóö4ug^ Óš\;0ŽóÂóÂ9k²ˆà˜µ­9V>2§Ï[yËÐYÀDßÒ™#Ž�IÐ ïKà ns°ñÕšÀ2]šh,�ÂFðY˜#´ `9\gf*ñ;<ÉŽçiŠ'evæ vZøWš+è!CX’¦ÖdGŠË ó¦ëBy+� r{Œ�LŒAëµo@�¢;†…ñD€”½siéˆÎ"ÝŠ 0ÚDÑ.�Û‹éC1Ý¥‰wS÷é›U7èã$]ÝšôÛ¹¾NæÅ€Vô„@œöWëçèGeø> l‡Ç'^èGÏTì5ßáÔ³V©í×8±vù»ûþlb ¬EjÛšš¡‚�G‡�Ð.!b¡«]›€Cn4ñ?Íèª1: d@Ó”ÈÖÈÉ…Êr÷³*üU ½›x˜…?!„NùÓOzðÞ(m€7ÍKô\"w•OÕ§‚ûb¦‰™´‹Û‡bäs�è5ŒÃÎÈ1'˜ôá>@¢¦I €Ú@h�Ý/ÌDÊ"Ý™“N+ñHMü*Gpß[?úù›+àJV2P šÄ�Ä+!"Ÿ¹´_ñS"Iø$ú~P°eÈ6·z�|v‘ô7ƒqu¦{NUÉ•ÙeUrîí©r^FÛ%HØ@r÷I¡Î-€)X`².W\b¦¼£2åÿIuÛæ&Ì Õh(þ¨ |~køòN–Cmâ_JщGcðù˜$Ô­ÆÙ>–ÓŠôÚ—ØóȨƒ�¤«r†˜{AJx>”Ü`÷D¨}J RL •ÝØðC÷‰ˆÏ‚øö}©G12²kõPû<í“´vZYk§Sô¦P\ßÞ±á�–Ú¥ “§½}šë‰ù¬ŒÏÕ¤OŠM\êçáÏŠ ?ßî=a¾)Ÿ‰³«­Úoé`Ú¥�V»ôÏw�¯4¦;0£{:A�f¯®«Ï=Ñ¿ÚsaEo¤‰¬%}<ÔS§×Ç¿£ M.…Nò!ºç’:{ñ™ÄÐþ£?ýÐ;Wö§½'W ]µŸE ÿo{ÇÚÛ¶ ü¾_‘f`4kùÝÖûP i‹¦Û—60dK±µØ’!9iŒÖÿ}<>$Q"%JŽâh�•HÝ‘GòÈ;ÞÃpbËæØ�3šê¶áà§ÄI"Çs=€°ãÝ7´K¦ŽAR¸W�­¾¤Ñwˆb‹•~ÇQ +U@¨àÊ¢V*Èj,…X]î Kã±v³ ìm| ’ÔmV/tײV[½!y “^°cÙµIÙL´T©ŠìæÅ4ƒ­ªæ˜qäƒÆ[–nJØNý^”³•ƒz‘.«À¤ñ«+)Án2ùógù™Y©‰i7+Ò{ùË®ó9ñR%™*DNY6MBP?À·tEñõF^�+G@¯¯ÚÆCÖüÒsÍ™Š;I‰»Zy›È‹8zk}Ø5vŸ’ô�2€ús!f}M|˜DoŽ‘Ô%asÜç‘H8$ìýš…æ$¬§ºù5÷JU@OÙ"¶å¡ã�£äb4QRÅ{™ç/ÝÐË ¿ ý±=—&ÀèÛ““ªÖ¬£.F#6pXwê-é:T¾<¯Cé¥öó‘ÐÕ1ÉÁ˜îù?ð ‰.q1Â2Ö@ÖFËaÜ©LšÃ"Ìâ.œÊîéÙÚÐЖ‘¡Áq7&CŠ 5‹”ÎíÐÝâ‚6er%ŠÒ'jš¡æKRqyN¨öO;Zr˾XÔcÝú–äéXK°´ÇG\£fƒQI¯s4k�›ÑPÖ*}ñÿZ»ŽgŸ´Rjƒñh¼yh³êdá.BÛ)5MT)XÄÚ’=E#I4¦ãÑ�ؾ#ᶨ΢6r*¶OÊp$Ö¡HâÐ�ûتi·qmð½©{Ø—•sÔUŽOõƒAë®Låù1h•󺮔dÿM,¸—.igÉU<4¨©…¼�ÎN_ªY§P¤¹Ÿo ݲ:ý°4Ò»ÚèT½c Î5ÞÜ^ ©cí9N²:š[Ì¢QI¸aÏâ1ÔfÔŸ ?F3ªPC=wHݘ-̶~q�äŒébÎV_ $VÕáfõ…uÒ:шÞpl XT5AØfÒdé¨lø2öôÛ^Ê;b>4ÔÚ4 ô6†w‡²KΜ!©3�ß¹ZáTÒFÛνy3‘?5K«ÄœºÀYk‰Í?ÄÙtËZH¥É:i{T}9ÎEÑœôv5³CY ×O®ôÍ>ïl—wë™4Z–~°†ýYw<ªŠ($€ô{µuÓuÇu@JöxÒýøˆL�½ Ïúk€G>½*×÷Rî,&óžbytÑ=@›M4uî ÿÈÚô»âèI!Z~ÆiôE´ É\êÇj qµ™Ñxʼn{Ëä�$‘-%&¹ƒ³ ’Fø8œÊ"S°ä¡¥x³T2ê’<ìyñ‚&g w�„Ċ´ÇîÐí»ýôâ’ÄR­EÀßà anu;X€ˆ3¥Å­È'�±�ŒÙw‰*Òq‘Æ¢b빊O€2p•jõõZȦb™6÷$Ì,¢Þð$¢¼ “&BÆrH(¼íwàYèÚ·)àSG­­.±÷à|´BêžÇ)§\*À£ÂÈ¡B‘}™-ò‚€»4´�AÚ’Ù ø™@Lâ&°{ÒwŒ›9õüé& ¡éi.`÷G³îÄ2�Íâ:4\E¢"Žl°’âD#Õ�) ˜‰å–8�V�"úšáJ,ÃâÙ¨ùB.F[y�¡Çü'M÷g"¨X7!ýÛ» “Þ[#¹û’9¯y‹SžQb-΂•£Œ†ðS]+ô’ ÞqeCŠÉ‘�geáÉ=eúb–f�–_,Ú­Ï¡�7×hGþ ƒm*@tšŠRËRq¶Ï!¢çUI¦Kˆf«ÈuInKˆ¹Ǧ^ys×�\öÎÝ^/¢¦£m?kå*‹LOcØ‹®HçV.$kµ¿&£#å¯ &«MÊ[æY43�ˆÀ‘äÕl£gÖc¤ÅôJ³aÆ5¾â[}á;êвd¤ïÕ±eYŒZà ‚Ë·®æ£šguwæ'Ê%#¢SáäÖùùáƒË³ÓS4�jÏÞ¡ùÒ[9!�&ŠY~ÍT�­�Ráìó•½G¼2#pªòÎ�ËNQè2–÷)ˆÁBÑ%°cò-™¾§ûëý5�Âo²S¸úp©(º5Aß-.玓“&UK&cV4 �ä¶õ�9MG„4|^0Р?¹ò¶ný6’ËòI£€ÿÄD€¹ë®GÈ0CdŽ ˜*o|ô ¿F¾ÖëÀg(Qˆ_!Dx�Vø-²ñEø=šãш ý)V[oë;ðê5½Eâo6ðßðç<_ðxƒüÝö§hŠ? {|›#ù~Ý>ÿíùóß s¾ çÙ¶õÏÇ·/£p>%OÓxbGÓ wÉ=¯)Æé6ÂÖоè:ƒþ°÷b`÷,ü_‘ÑÿPKÒV1]T¢á“H- æŒimunify-security/assets/ui-app/assets/static/other-root/src_app_components_proactive-defense_proactive-defense_module_ts.b9a0d23b3636236b.jsUT ëÆ«jëÆ«jux è‡Ü= sÛ6²EѵòâI¤dÉÊèî9vÒº�ã´qÓ×ã¡DÈbL‘ ÙVeý÷· €?%ÊRÒÜ%31M.‹Ýv±Xlê³�ÖBØ#V¡„Ô_ÖïéÐ7G·?„žë{lBƒFày¬~5XÿùññòJÕüY8Q./ëa0º6}ÿzäM}Ï¥. ¯ýÀ3G̾£ ‹Ž©Ò‚7SÏš9ôš…õ+²0;ÝN_¡„Wü{áj�ÂTâj–ÂÈâ]ÔøD´=ãMû @ž±¥úâÎ jöÀUz‡z³­õ¶qØS‰��îox<ìvô•8Ð1Ú-•„ðxÐÖñÑB Fç`GÛÑ�®J||쵚†J¦øxØìÁÛ63:FG%cxlÆ¡Jî°³ŽÑƒ&ˆ«×Öáí <¶`xM•< h³Ùsh6[@ã=ï�bûv§H�áÑèõ€¬!6Ò[ºJÞ#¦N¿¿ãRÉÂ; ú » F%×øØ†±¨äm´{ê‹ñÌ&zníù¬.ì±ÒzNŸ?WÂËúŸ³¦Þ툩C§ Å÷Ì @ÖJ“Ô-û®NtÀ›�dô!Z¹Å+ׂϪJôçT]Œ<7d5:ÈÀº€äØs%.õEæ³iÝ™îˆvƒmN¡eà{ŽÉh €êµ:¡še2S³h8 l‡Lൺ\Æ8Or ”²ÊŽgAù`Óû"âò¬Îó\à–‘£Ö±CF] •#ÇÝÖID�¢.2À ™PÙ1U_Ù&î”Í·–ÇF£A0Í´¬ ïôÆüʳ¦ª.« Ö·}…Nê,0ݹ^ß ý¥^¤dOk)/m×jqzZ¤î[ rfÚN¨Ù|pø+1j‰¨êJN>¿´ÿ;àXü¦ãä%ÿáóK¾óõJþ^ÛÎÿ¦Ø£Áq¦¸,/û‹J†››6H+–íÖ†/Fñ ¨ïn•Ø޼™Ë‚9©«iøú³Ïão1€Æ àK|Û7@Óÿäd:ÞèöÔÏO‚ŸŸäýE4N}>zyM ø»’~ÞY|ºO¸ÝŒ€�†O6G–¹7§ãx.ø3àfHŸ T;}‡‚&� <^`²ä¼yó$浚*°H> [hTB~ÌfSæoR®’¯ F侨J›Ômã ÙyL-«ȉÞ-£'oÆ? „«œ{èäjØz»QÛ�¨=,£ª—â’ç:óswã\3�Cò³ˆPóüZ/ç{ „i†sw´©¯½íwòdRµq1}kNiV½s�ž¾�²}¾vlƒ°tòIC´YÞ^ä‘­Yÿ@>mèÌœ± (£šYSÛU“Ó÷mzúkX3#?¦}cƒºØ#›e…UÊ?$“Ýt¾üR�ß™Î,ê}ä˜aXûXXêZamª� ÜÁlöUD\ˆML0À3à6Ì6±C.´Ïcð©Ðt‚GDƒ;{T‰1³®xAï0üs‚¶x�ºFmMñN,°ƒ‘öË ä™µ.½¯yÚK:1ïl/x?~„-œry%éʆ‚Ž8oÃÁXû#‰FÃY¦P�ºwê2kí/‚A¸ô`¥¶µ#U‰dõORæ6u¬MQ¯�&¦{Cϯ6›À<ÛÁT¹ŒgÌU¤ðØŠkŽPU‹‘ù>~T³ÖÖ²ÊuáÔE%ý·´³£‹ë“Ó£7çß]Ÿ]åÖ”|›;íS¨‰v[ 8ÓÅ îÍÀú™ŽUC”×T­ÐôF{Kz¸Xåù2šúY#bÑ1ÜXÌÐ~Áæ>í$!X#œÙaÿòRç抠tšÑ`Þ_ñyÍšƒ~_³HW.N…¥)»}B@4xÚôس$ãÄŒ�ñ™ÀÄ\ ¨=AJ¹$cj‚Ì)Ÿi óþÎàðµ€$— _¼ìÏ´�ÌBúê&•íÞô?.¯r?u'4°Ù 2ÎÆ‘Lj®ˆEGNØo÷¨|Øo¾B"Á{ 'Þ½œçuùZ,§~E.ëSÏ2�÷ÕàcâÕгæÑîs%¢‘øžÔùÊ ?§à:¥¿¶‰0wж¹Ô '‹wb²F`Ú!8q‘Ë�8m þ‘¾QCDAq ºD¿�C$Ú�%:Û+ÆVöƒ•¬�ËGdß®)¼ukÕWÉ¥ä+ôogS·è‹ žGºÚ»à”å�'I�N–[[ ˜Ó #ê3Þ0o¾ûôà’øÝÙtHƒ†7¦4,ë+ס+›#¡eÁ…^6pÝ®:v€ÛÔzcν™àÆ„¢ü.ÐÇIùïâ}Èý¥XØß{!»ˆÐ †?®w˜~vÅ4‚‰V:"ðTÌkpWhÝz²-Xߣí^ÆêUÜÂsþˆU}$#‹$¿M, ¶Hù†¿jø°êÝ>·Mn“ûÜM8;0¿ MÎÓaŸµ!ƒ.9IC¬ƒî‘iè|œb«È¡POå[yþ|Ïq\c4úÆ MË(ŠÒ aØ�¼V;êºü˜5ÏÝläa]ˆî€¼�q‘ƒ¨Ÿ�*Ðê&YÓÛÌšÃ"Ö›v>¾àm7&éq@­H-ÅœÚt]Ħl7úJ?t#Á½½‘ z§ˆ Ü@ï8öXpE“Lô�Ÿ"Q°¥W!P½™ŠÃ;ŒæFv­"vHdÇÀf ²NkKdZ6È"PNÍàÞ=àÝ´_Ó;þÖˆ/qçoÙ¦ã݈àÜU!æÝËݽDíÝÑ` +_cÞ¯™3æí±– æÖÄ‹Ô`‚H–ñ`Ô¶‘A&|Tˆ]�±ÌÙv‡ŽÓÈ+ãM†­R(™ç÷kF�cÌ ¼u(ß[v.ˆ cN¢ïÿ›RàM�‰Ô�sª×lâ âèw!­&Â_òÇsûµÀ»çt,Ó]ÃÜüì] ‡3Ñû–ú’ê#õ›ôeEǾiY68«yõÜN�¶ìNjTsG�*ì(ýƒó¢ï¬2Ižc³_ñÌIã…­õ…¨L¿â ¢ | Kã^Zƒ¡çXéÉa»¬: ž&¦Ójn´š_ŠÇéW0Æ@9þb×¼q�jhIBÕ½´¹\¯•ø™ç�½§x0z…½+vü�A_Æ¿\ ìUü*êå’û ú9çég°�dlWUs,÷ ØMŸ®ý£ 0çÚ8𦊭‚Ëì+tðo@z¥j=Ø×Õ .Nê’:!�+©V䨢fBqUõE^8‰nXÜMDʲ8™(•dÅRIVìñ‘>)Éj׬%º>k©4)hsNÏ�Héi¯2zê#]¥äsgûðóeyd/ߊ“àêÉ?ѱù*EB:0èÒÈÓí×< €ÿ<�Ñ)¸ÐÇ-’‡÷ÿE'ÛÛØÄŠÇß9‚ÚëOÀ;äÒ%nÙK†*ö�4•ënvìÁ_bb¡\g7¥N ½LÉÕ£8ÆA‰Œ‰‰Ð†² |l¹pPLæä7°ÿ‹Ê]ï _”ÇIµW<Â<¨‹H3.ûbÚñLàhž9Ü`Ò¥òýããb©’_ð†³Þ=_è;ì¡×m{÷kÚÞem_‹&Ad×®íUgÑ7-xPÞió±¶ú&-b0nü”,.òNûøSªÑ‘e•uŸR ' OŒâÉ`XÖ$RÐôg°7ë["„lxíŽÝY�Ú)¯#F:lE¨ä.�M~P—ò!¡©–ð^C]ǤY�—ŠÖ �à;íü6Êf^ݘ.\Á’Ù‘ûN{(6Y˜OZl³„ñãgŽh´¼[ê‚Õ @׿}º¢¨pfüˆ·õ[Ý6ÌÓ?D �ÃC•ü€�ºŽ‡Ô¿ ,"ð¯pxë0¥âF?^%Æ{hØîÀìr)/9Ðé@K›Ã´á�JL|6šM¬àQ޲�÷¶|Ö[xNîàãA«ËÏ)¯A ÷°öÑ`s0¢¢ø€Þ‹.Ýùt�¸¨'†·�îSýOòöÕwG¯úÏšËåªÎÀ”~¶[†"@!3 *$¯ÂB^Ý4qÙ�U½mèî~çÖM¥à3R|á¾è¾àš%}l; ·rYð}^ËA6¹…öiòêßìK dýÝϯJ ¤±bà˜nö¯ª“D‰sîÞ¶€ë¼jÞL¿+ݰçÂ=+Jï’”–v n4¡£Û¡÷°J^8HàšÐµ·RèF²· «F’ŠŸu¢sÿ’ÁÍzböx�*�Ô� á�®�%­hØDy›ù”�M¢[‡j6DE¶ÌÚÈ;±Tœ�'Ù4ßÀ¦’E$y9µà:æç¨9SM7“7.÷zÙRÞ³L°î¾ë*U*H\ÒžSØOèE—€óSÕ"Ê•‚ƒÕ®‰Ú©i~ºµò”]SO-¶<§­,I’Ô1Ñ%™aÁÞ4.0°ÿàižf¾£93ý¬º„°s l6oØÐÁ¦zü:ìH$Pmö,UÕDvHBXÇ_ȯ(¨*ð5ù˜^w"77ì²y¥ÙÖVÞÅðK±1Ÿ‹õeبWãc|™¸ß)æ-öWÅÁ¯gËñêKI$oÁ¾^‰l¥ÓGOs£bÆ%Ö%|‚!%-’k´öÚ�NÞc#=Ûhí탼*ì)ŸŸø…Šú ™”WºSÊë¾ûÜoÖñö=ó,ãåRˆâ¬ &t¹Ú¿5êWË"0{MË*NðЛŸé3ª!£¶üx"Sw"_�BÖŸp=f�í‘)jBÈêhNb7ög:Ž*PXOöçqÍ Yk¢b� fyrýͦÜ/Úñ©ªü¥}ʵ#ß˨·ºLºT”W`•Ê+ð)¿"ÿse^ÞTUXã´Âøjxo³ÑäLFYYŠ­¼Tƒò‘,0âÚ§„çö£ìúõµù?u’åmŸåؽTùIvŠ Û3- Ÿf ^@‰ ˜yKq™íàcÁ×…EÇæÌ<èßy¶Uk.E) ÷æÜ= ŠÔª¸¥¨’®«Q�û”¸¼´,¼Ïd1�"¾ý$ù¶Ha÷AÃ1rݧK¿*º�ÅP~V›:3ÆH*#qÈ¡o/ÕÕQ.Ñ4ÍýÏ¢®¿À.^DJKw7(vy±�ìçTËøDYD¬I*(‹ôbÁÒÓX g£ CÏjÅÉQ1Àxæ8sÀO3‰dÁC}ª9Ô½aTšµêûŸ[±x_¡ʪþ‰F6&^CùjòÛ+UI¯2ŸY­S-¾ù+Û‚Ðík¬\W9ÿÿ5g\ò0?j/+@U+½ò‡vZJ˜ää³sZÂu&/!Z Ó…¬ò4s·ò*Žv±÷ò*r}MÖW‘•NZ"-Bï¥*�ðñÉF¢2Àˆ_´¿³C{h;6›_{ã1Ö�)« É–#oÁNù)ü*~´{X9â© ¢ŸTm„J}!¨QŒ5WâÀ7ol×d«Š !†fè;ñ:ª!îCØS›¥Ê·ð‹ (0Yxß…x c(’?_rEá-sH�׸8à@x�$Ucù%ô®‡èÆci)xnÈ ‰ïòªcªBFUlÖÓà~Mg¥¤ÐpZñf²D˜xa*÷Âö%ã×Ò(]ÿdr úïÉb…íóaJe@¹HÏ ©ÚЩwG¯j]Ó9-U!J®[rSryèçç˜{Uÿx8¨1ã€Çª:R3M¢WyåÌj›HDâ™o nB³…D’LÊi¥…º_ù•‹ms?ÉÁ¥:QŽbëµmªuK؇²ûžBøÎÙhâ¾yt"*îðwí©†N¦EÁˆµ—¯ 2+ŠEl¨Ÿ2¦0Üf6›ºô@€gœ¥OrÛªr�yUz¶›¨ˆš¼ð¾¡fÊ]r\¹SÝÒ*‰")É;ì¢TJl뢤ô¼² 0BT>u—"É€•A&T\œ—GÍ¥GWÕ ¯dÆÜ)s«ü(2/“hÐÝ= ºGnhAµ€vo7öŒ¼±ø /²R0üâû¹õŠ+Ñ�Úžd®äçž¾çáë¹Â˜}Q,ýò¢+¥Ò×·‘þfb{Y=Õ )-¯†RZÛØhíGP†NîiQYè‚r%ÛÕ=1²ƒ7Ú…ƒ/]™ ‚ÓÑàö4ø.9¥`½ã:=;.LF/ežÂxìëh8$Ç…–m­ m7ÉRnd[U©¥T! z}4:µë$åñ#‘¥ºSÈûï,ññ7”ôx¦ˆÒ'l²'ñ/ÚĶèkîû…Oï+·‹ÆóƧޱJm¡7�5Â{¶óL%&KOŠ®åÓ>JX€ŸÔê$�î¨À¥ˆ.ÃÈ/D-±=èXGJ7ª¦‘!% fÈËw}~À…�eå24¤Jj}:º°ÑÁc ›((®V·`£u£ˆÛÿ"3©*f\Ìm[ì¶J~XÅ v^°ßt0¾R™˜´ßÉïÚ ùM{K(ÕBØÿ“K5›ØTc¢ŒŒIµù-ñ¨vM ÀÕ&$D@ a0î ÆíXV“yƒ hÇfX\F&й¼voä�­Æ·Ççgï¾½Út‡^V+èךQ9…Zmèþ·Ž¦eÏÂ~­§u¢æè£+®%ûµ )þå_å«û‰Í¨¸…¿Ì_ˆ½¦É «‰ÓÏ’û­iøìÙT¥FÙ[±xzóŽ_g88Äÿ ñ–ßœhöðšÃ9¿þÐ:hƒozÂaºÝŽ.n} ®�&¶? KÏ=Æ:³øú_±< ~hˆðÕŸÃi dm°ã×8FŒ’©��1M@o®Šÿ¤ ›ç+C?ÅG"ТøHä$BU/¹©�¶Gø3Æ‚paĵ4.,Š­IÖÉþßP‰ DÚŠÛ¨qÙË6â€õ‚.eøðL\Ö\ÝIùÿö®ý»idIÿ¾…ñÎæØ»]?â;ëÃ…fHà&�Ù;LNFŽåD`K¾’ „àÿýVU?Ô’Z;N.»g™9`Ë­~?ª«êûêÅ}{ð##aÚƒ?ÿ*PàÁòP`�lë~$§Êq [Ñqêõ!mm0Ž×€@tî ñìž!8†ÂPúñþ¦c¼‹�ú\äkzœ—.=%ãÆ³R‡>-­»ç?WÌab6:&׿½!üv‡oÓMC$p>™}ïóçúÞ·7ä{BÈ3#@¦ÌúQ”çcö Á i3L…ÀÉ}³ç¾9lq¼ìZìÓ0bOâ·Úì�ñ­2bsX=çûÙAoävº[ér}¾‚îþñ:ƒ÷šEý¯u›_Ý}–¿ÈÙÁµhë7d%—}Xð¿ýŸsÙ‡}'×b�Q·ÎcC‡æÔd^ÅW¾,’ÀzÓŒ(è×t~퀓g}�¢õÜË7Áïu·5Y¢aMô~n÷º-¤Íç\ù=t’p"ä¾ßko>~î÷và4ô"røn?†änDTùŒZnÓçÇ=t ÷#âÇo²€ØíÃç)%èõÈTŒŸwz�>HycÊp¯™ÇÆ—ÑZ&ì/vàa(A¸†ö•“Ä<‡ú8&°­,LÝ­ÞØ�^kì†(Âñö7Ŭˆ?´¥·p[r�_‹ÍŒ?rn(î&KiŒ/¯mï ¯µs;°9I¹ý/¢"·͈rÉ TÂ`f/¢kÏHYËf7/g Ï�ܤŒep t†o­WQ¡Œ”é—þl·®×6¢`©hÅŠê‡æ²,¸k©gX+ãKU¶¤ƒ© sá¼’v?¡¨ÿ@Ýp®ôõ‹9žpÏùà�yy¼§–•Œr¼-Ø1¿ØÞxê¼Â±H[y*tÅ zóEToZ„ €·òKÅu‡ñºè‡­­G$/ ä\SC"çÉ£C°Fâ>‡õzSñ¶y�a{8:ÖÛÓ£—§§/ߟZ‹Ð .0ZpbÇ…O/„:{?S¼~òæéÁÙË÷‡Ï_Zóëù…;ÃQ‹n¾vÔTUÜ'u±MX¡]Œn.ìñÌõêõXÏåBtBý^0%c¬×Ö§ ©~u¬o›"&ƒ´``ÝŽ ½ê§TÖ\l”:,Ô÷üŒŠ=ÔÑrÛÒ©ýYŽWÀÉ´·I+_åô8õÌ8«T¸»þT¤£zÒ­Ýö>Û¨¬Ã€³D/Ïh‰H%·£{ìú¼–ºF�`ÛB`ÒT¡*g©\ÙK­V¬³ÇJÄ,�b¶rFu¸ˆ„ô³Ô`¥é~(vš˜Áãm­æî|>uŠÊÂF«„r‘£–�pA˜·Ìöˆç*TŒã8ég¥˜§j Æn³5€µÂчI§fçEjJÃ8":W&ºRUó“ £·Ùzb–ÅÅâ'möä+ïÁ¹‘«î[­d,Ù,æóDÁƒkT‚óâ ôQN²ë8r1Z±î0· x¸ºß3¹ÚèÙǽºŽ wýéXe8�‚ÌfÍH¨» E±¾ )×y9±M� Ô©OÅ΢隂77Q¡€÷’ªÑ^J–¿±ð]Nm°­˜ä+Á·FŽªóãH¯a•Ùé`"ÿÀ;Ø$.Cá!·}¼U¥àub–0‹é†!”:Œé/Â"ºÇÔ‰'z’îW”"´$ôD2^Ù l›vR9A¢‚gv¯È‚iÉPC<´Ô½Úzô.þö’×®÷ [Ÿ1n\œ=}vªÂ]iñ£ï·3b_—«#txâÍËW•ÍËã@�1Ó¦dib–S/eb6×eøK9î’ës”é.ý™'·•-ΫڕiON®Ñl/ÐÊUæ]…1;J,ÖPš¼¡#¡§‚O Ã’?�¾Œéo�½J�Ò¸õ'“Љ-Fø“,tá60heðqM¸è »ÅY5ˆ›—(wè$-¾ˆïÐ6¾Ò"6Ù »ÔôÎ@ xéçžïÄ_B"¶R‘r¯õ6‰X[ CP!½Ç4¿‰ aIð”=ö9âqlSÄ”D“뢔•´äu dÂ'À6ü go=Ï =á’­Vj¡ÖPÐj@êr �ÊŒv�†´µÖÿ0XMsŒ¾•Ãa”:WŸàãAú©FF‰Ÿ;»­=x~Àýe‘’iDÉ{»èÆ{Jn¹í6ºÚ’m·· Óè)~nw»�%yd¥EæÕ“ û›Y8F¯$(P"ÀÒ$ü¸ÞGóû\þ@ØKã†à³‹®÷ƒ¿1”GÎWéS‹¤�™ï‰¯7‘õºÔr /­èDë ºÆú•}�¬gБÖkè5K›ƒü=4˜\»Óqã's€£ðRJ5ƒ«ˆ]â��ã â߇ Ogþ ."Y2üíÈŽ.!ºÕ—L$— âL/õ£Û×R¼r–çËsrëçÌœZ²v¿·×ˆë 4\n»}1Àa³cú÷rÉgŸ‹3¥ßiÁl²É¯»ƒsÏGWíòåp¶÷v`*M1A¿ÕGÃ>ÎÁÇ{­]iwo‰»|P_ÀÅ„8_ ÷8P‘Ülq™XólÒ¡Ãí¡EoÔÙ6›•ÞàCì9t¨½Ò›â8àx ¯áJáÀØ­’ƒþb�;9_V¼„&h€Û�¸8~½äíªòôõë¡|l¡2·¡¾_¶åìQªé”#µlëò“ôO�ßïÈê%^jâlú‹¿�JƵ›òr‹àÞ¢Wµâ˜ü~ÏyAþ,ý”±ÎˆØ?”<¢¿¤°êøðÆ'"3žn_÷?P`Ì‘_ƒ ù1vïMÕ•`®€$3>Š7ˆ;Þ\‚ŽÀá5ÆU*+‡ëÆ®ÆYämcõ?œ3çCëœnü%ÛþÔ�ÚbUùçA`ßXHsÔ@ éƒÄ÷Šäùçq‰rÛÌr”h'󩨠y ;[ïƒÇÜs/#öôåY™b…ŽV¼‹Û‚¹5Cæý(¸¹•5) _ †aS–—¸Eâ%z¹ô¶¶".e~é©Ü¸¥õ8ðYx ¢ÊÀcØ•ƒh B‡˜§ŠQ­"ª‘ˆ5Gö|_´ÿ–ÞƒN˜Ü%ôƒ¤$YšÚðšß¿‹Žßw°Øz‹7<¼ÆË ¸Ì�¤H†9ÚÌgö=‡p”rÐÝ�ûØÃ?!ûíÈßþéÖ[þÉd²­-•ÌÖmŒÆ]ßw¦¡sçå5£ëÀÿ‚GtíÕ�:Œaè"†»¹/r急?¤Hñ¦ÝAv©Ã»Òƒ“‹�©.Pþp äçmwÎÉ·øá¤e«m <.ùžúÉVpWC%—¯ ü×ðOh¹»Ü¦ý³ÉnùäØL›¿ƒ€‰Ù3ð Ì’7ËxßÛ|µúe«U¬»†½µ%#ÓûæÕdÃb%6ž ± ~ÇRò±+x-’TJž`Ïb¢µÐ-ˆ[­BsdÒùIʕڛ‰‹ò~œb<ð¼a7«}Púù2ñ Ôç‚3Öa‚/ß œ¸-Yá�ÞnVxyOB‹¯ -\<û¤=üPÿÏú9�Æþ½È·¨ãr××q‘ÉÎocÄ1„—Ì#ÏT8¨ Ú’|ˆ+ÚZ±¢-o¸Dåãf.�ùmé¹3!Í‚[¦âŽ|­LÊ8+~U5g¤È—Ë<®…©³Ó-wq0 ±–•Z»¥î ™ªèŽ ±ÍPX•ÅV>çæQõ8y¨Ý’Ò^<™Lè;Õ"S6 6Yâ5nŠ7÷¶?PžçͲ1X­;ý¾í#3Ïf8šB²óê�ÍjâE¼¬ð^n�Z­V¢Bt1Y9ãdnÆ‚ä IJxm�ý/<ªU#W‰Zp5²a%ÔÄÿVîìzµ®@[§›Ä­g�WõëÎ&zº?Áÿ¤õÜÎL.îñPP/Û`Ç/{‹×†&8ìv~À¡Ó5¨—àb0kg–ŒâWe£ˆ£iæ0¢ôãÝ–¸@÷ú{ÝyBC¸ âŸsA*;MœN¾wâ s‰¨.×ÛÎÜ–â2u§7ÊopòÈ›äX}ä%RY̆d–TžÊÖáÑÛ³¿ fXߟFî|X¯/=?˜ÙdCãT×*^kË#‡¨C¾ß2$Æãf¼ßpÇûo#úÓ)}Û�@`åÕ¸ö¿œñb�/õh%+Ÿ2¶!àõéÚ�®é/=7’fŸqSÕm)öKq½V­2‚gÕ+Ö‹_çI¹D¦ûûÊ<åÚ‚ãf*–®„Q÷UÌ]9m¦ÏÖ¬mÎµŽ¯~‡zeGSÒ¬�ð®ÏÔ ñ¨h;Uø&Såè\‘’Hün£3¤˜MiVÉÔkÂÆÔïÂF5ùcÈ»g:SÖI ¥ä&Öä .>€€‡oN÷¶ddžÙ�òMª ãxʾài4œ®€éj(ݸ€ ‚‹³­ å+‘DBt%oY9•ZUi�eºØ®W,é óSVZÔŸÏT'êÛΓHn}ß¿ÃGêßz¦¼„ÈPIƒÑ‰gFÇã‡>SKýqã?J|D§Îýäoš;ªòÁä–ñÇÂC1þCÇ#ž£“)J%rý¦JŒ\»chZêgœ¶¡ÄK'áz**¥¢Zú¤S¢®Ùø÷ÿ Râ6^×@ÆÎćK"üi6ÚN7Cr¬íÿÎ (༹ÿoùË¿×B\:Gö|âò»“×Ã0¸¼€oJ—^d-=Ù'3²\D¡5êÛ­q§;êîvw;ÝÝ‘õ=JæÿPKÒV1]ð릀½²°imunify-security/assets/ui-app/assets/static/other-root/vendors-node_modules_dayjs_plugin_customParseFormat_js-node_modules_dayjs_plugin_duration_js--375296.64366804eba9be3c.jsUT ëÆ«jëÆ«jux 致[ sÛ¶–þ+šÊdK¢ì$6eDÓ{³ÝînÜÛ»ÉÎl#«Z‚,6¡ ’v|Eîoßï|ÉR’vg6‹$çýP'‘ÑjÆäí6X|ú÷DÅ[•®¥>ÕJ¥l.¾Þ�ç³¹;ØfÉÚ™ÍØ½Œ—J'§±ZÊ�µÌ"™|\�¿'·QvÆY’ªÍ/�Nä�Jo‚ôãï_¾Ìt�†*¦Q§g¯^Œ/_²9ß]^^x¯|'åÒ¯wÝU/h”“º»û@w¤Þ¼ò6¼ãÏO…§Æ3ÄóÏÏl<_ yP¾^'°NFàXÁ„é $Ùm’j‡^#ߥëSÏíõè»ÕÆwΈï�q‹â‚ j™f:ÞLíÃqýt å6 Òþv“<Ïñ÷ 82ÖšÅtÞYá­ÜÂ5‹´Ø~oqÃ�ǽ^�3 —LŽEwE{{·5§-—»i1o¶�é9½Í¯lÃàã}žBT]½Ñ)ª 7€•,ÖŽt¤Ò‰ Çu+Øõ8 ›õC¬¿�… ˆw€†}o½…Œ„PvAG Âx)ãTÔ£©*âº|;H¶QÍ 9Ôy"£Dvtžïñò&f…;12y Œ­î,§ ý[0+5Ë~þÛ ü•.töѲ£¦0 ïA ®Á%uX‡¹�澚©Úîæ\÷+,ˆI¤j¡[ 7ÚNÕ3°…Ôi²„},Á¹‘á4rîxÌ—îÔ9=]r(<×�+ ¦¥½ ÿÞY»þªßnó=‚à,ûâ®Æƒ¬B'NPéD3£ï¹swº÷ %½gX})ƒ,Âõ� ×Šø»°,9·%žm©$<öPi®èëŽ/èqËCÖ*D2]ŸV˜ùËþm%4«ÿxß6x“%ÂŒ1 L$#âv üÌÙζ ס¤OØPI âÝ´©˜�¬ÄŽFC¼¤ç3ó1¤÷¢±à­‡Ç5WVyB¸Ø~é 2ó0Ž.„uƒÆDÖV?1–› 9HÖá*%Bý¯@@hÕ¿ëdôÒ ãÎÊuÓµVòÿ¢5³‹"yD�…ŠSØ »ê$ÙVêf  †_Ê2³Æ]Švð,Ï×NÜ]m¥’¹<P´Kf†âŒQžF2¦Ý  %Y‡¨ý5R ,…ðè<„éZeiGme,µß²>–2ȱU[Ç,ÞÁ.¬»Õ1Ç;¡wùg™¤YÒ§ßa} ì³Î}2è”pK©„| ÁÖ*²Ò©dƒ(HR *YÀÕ™&g(,’Š-ÐÔµÈñÙ„‰¡tÑPLX•tµðIŸ³¶>§ñÐä +\&ñ•žÄeœÅó�2QÞm¢s€˜òƒÊ6—UümBëˆ7áªZcòÞ À„?§W€—nKkˆ�MÊ2›×;&%KÛ@§a%®´l:a'ý[Äûþ ówq°‘¾ihÔN#xç¤ÿ¸ßçö‘ÍTœbU‡ßÙ±¾ü®ÂØaœÑ Þ!/L >̬Ð<†]§ž·à[žòÐíìNú)pØCa×y²r§`E\$6„«Ç&K0Þ J¢Øn[jVë˜åh1N:Ø^Ž<ã |ÎÀi8aýÐ\~=ÿv/A«²> ÿ˜[·Äüß'Mƒ¦!qk„¢ÝjH¨Ád›­Æ j¼l盋ÿiA¸š)[2Ÿ­X;7iÖ+Ö±[-WágXX �îßõû•yȶ>«DÂkeØ·ìê‹“t@Ú¥·N#ZNÆg�ãÔ.sÂ�œðø âW°˜…•â�õ7”5c’Sêoù+à4PÞ5¬0 Ö>ô‡A9îÈÏ©<Ð ’¨Í#­z –uÞ{dNj9?Ñ'LV.׃ ±yÏ4]‡I£€�'ÁöMë&ø$ßË D˜Ê²ƒÒÙJÝDÛhì"'„O*hö„ÈEhø69!zjDV‘C´VZ‚‡OªVâéÞ­U¬O²þ¨Fð—’T QQª�,¹Õ«ÉlËÛâ/D.Lsk£I­Ñ áÅxÓU!m—f0–-J´ªåÄ�Ç@¶;àã—x¥ƒxƵHr+qãýš×™œ!p¯ßm@”~Ä–f4õ8áiI|5Ìm’knyM³eO[ÓÜ]\©¶‰ÿI©Ù²¥Ù²¥ÙžkœŸÀå…},Š'bgÿ„ÌI(Eƒƒ¢VJÓŒEí`|‰ñiûþÔÝ�ðJmm:|x�ñ… Œx9Sª}óîFÝò#*H¿µ<©0Õ€÷¦>Ü_Újé®eˆü©‘†q)Z“ >YH»“ªF¬¥~o@Ï'ʈ�|<¸ªPúS¾H3�"T-^!S#جí_õ�Ê´x¥g8VkihªiÉs'nÜ*F²9„;€=™|¸mÜ�}‡ KaƸ_Ê®¦ á Óï„JAµöñy¥ó½ÿcΗ ô/¯o'Q�Hó ¨îLqÿP”z!öy\§KH–F(%ê$L]……„É¡b°4µ™œ)[$£L…)ã‹ÇûF¹¥í£XŽØâ{ÄQ$ ìŽó|W d”fà{ääf¿Êv°XK±«_ÿC>Š}ª-¼YÊ»]YÇó± “à6’oƒÍí2@¸\Ê(Ü„©Ô‰éÞ€�è_e:/S¸z»¤ÚlÃH>aN‰å¤ôß56¦—6nÈá™Fä‘”ÎW¥�h4¼NÉr|¡‹õe '8KæPÁ$ â…¬8¨ŠêÅ‚®â¨c¾ kí+mÏ-ò\Ãiû³‡—PE�´ªà——gçvgcÄëÒ¼bÇìØAŠu8CÛùåè|ì6N7aO·Ãžü¼U:…ÜL9¾ñWç r/"Ö™Š>uû;4Hú¸•jEmν —�Q—ª’t>Õæá£@’` ’wV�mͲ=xÃÚ’ºh"õͤœ±Ÿ„l™V){žÛÏ’•"¶/jKsAn3ƒÌMHJx%%ëÙš8Ú 6NІ³¦ñ6£¢ž´°Âi¢JÑ$vÚ?nL4£íTšäXÐî(ÊÇ…"Þ¦i+7f½`³�°½ì¸¥“ýô¸w·×‚$»÷ÝÙåd?eîý#S4ÌO�ºŸq�ˆ)¿„­ÍRtè@„\Ú)AÑá×Ç—�È{·OüžÍª÷8N IIb“°{ŒkC­7¸ àš„® ɦ“†2›P6ºd·»VŽ”áªS: Ý îƒ0"·C[e¢·¨|Š£÷tÇÔÓÝ Ú%¡,å %Y]†.ë§?ÉGò!¹o°øôЇÐÕú‚ˬb�ÛjžaÞ|¤iµ}™Åp÷^¾ËnÉÀš‘û}óéWúüÚ ˆ O-�+„ÑÆ$Ž»kЉ€¾H¦Ù$ii 5n}ÒŒ7^˜ŒÑ:׌˜²°¶E­·%Kðe- ÊaívaIxg2’öàš¥g1‹Ð¥¬ÌZÍÚµc©‹ú›%Tr�q£q•HïTXËÝ4¦rŠ‹Â©¤Ï[‰NYû”è·>«5yK@nѶ¦¶vUšúáºõÖ?ô‹6—33%î&Ы©"S¶ã|rD:9°ã2fÎÒÖÎô|A'õ¶8ÊAu¥ë”éFjw,4R è²F(¸”Z˜´Ùlq·: þtm«j<±8%ÖN—ŽxòÜè{µmG¦‡Q„"HZV3ɘp¬¢ÛEâ¡{½–BÆb0>ˆ`é4õåL¶ö_yl—mlŸlŸ¦Õþ7üÖ1¬œ„¶ÁíHž‰¶/©Ó‰Ê‘`®0{[ 'žÕ»ìã¹ë¢Õ@û°ÄÉJ+áMVWI%ŠDQ»ÔÄðø³ÕœýÁbÚí"r8ÁA ¬“º÷æoïó r~µ·‰�–[m.d†„ uðFzD^È_€Øû/8Ý}UE¢þ ‰jÚ¨•ª†#uP_Tÿ=B˜°˜¢Î'×¹Gb¸2¡ÂìJéRA›î®ç¶ÂŠÅ°g¯\Ù¯Ë 'å…º0ˆá¬wõú†ÝœÌŸ^(u¢<µgµ¦G ´IÃZ�ƒ01Ï:�úò¸ÎBO›ææjR}0ßéõ�øõhûp p GîÔ qf$À8V‰2é'9�²ÓJG$pOäyþ„|JÒH@3Hèû/‰è{æÎÿ_…D§£FLg£ÑÈÛOŽù‹ÂP¾}ÿÎgk³ñ“¤óãoßÛOóî³ëëá›7Ã_ñŸæûúºó†wª–'M�zªéZâïPp)†ÎÍlöÛlþüfîæÎìô£?pǽIæ}|ÿ�ùßsšƒŸiþð0ͯ¯§ô_þFåoÞLóõzšÿôÓ4ßl¦y’Lów;�Ÿù?ó¦."ݤ[ÍEº%½(û2šÐ¹|>û�–4+Þ,çý!”…jp$Œ æé§nßI_¿¼˜z—£‘?–gжìXÈi6JmÖ†à/úRZˆÙpÖ?�þÔ¡‡;Í? yˆÍþ©b‰´ª~§ý w V«D¦Ob7­vLF¦Êù`ªœ¦ÍZXu!kè ¹Y|xGÆörô\μyßéËÙõø¨¶0ºÇOG>ëHº1=�¡pÙç(¬íØd:ÍÞ¥SÛÂTú¨¾‘øÆ‹ EóжþWÇLòBù u¸ å†ÒM�£PŠ©+1>GA,<×Dƒê¤Y# ÙíO«×Þ¸¬[ [‹T8rʶæ³_®Y{~+v?ø³�äÜÁ EB¬T,Vd«‘ü‘‘#ùwŽÜ¨8]‹³çN \ûƽ;>.Œ¢0‘àÚ2Þhô¼ŸÒX Öß\�Å`(ûî¬~cŠŸø3Å3‡•�ð`<9Ò¶)›6aœ¥Ò6iû©lZ«L›†õÓ†Ÿ‡ŒyS6,ƒGóù†Èo}«§Ò(uq ô2ŒƒÈ”Rûo–ý¡[ï**ÿÑjÓºw:ÑWâ ¿¤bê×Üq½™å7s{¿Õî$4`4Iû¡ÄôAÊO„ÚÃC‰jÕp]ñˆÀ4\—#Z-×Çé‰ÊAà (rêÏwkøyææ¹‘[çØ¾÷ 17!GN ~¤2¸4Ïì_yO«ÙIKOãï½qžÇ…ÁíÛÈ€—_/ x ð¿úÖANIJÄ”Ghâɯ¿Õxê�õF(¬¦Ÿ{s?ø þ?­ëyk§*¹š ¸#2$½^2X™»Ý͹T(DèFü&^ÝÌç}ŠWœÓ†wIkG?iïœ5G/ãº&r ÛÛö¦Ä�]ßSTmZR×òä³ÙTÎ\Aƒ——!¶ƒƒÿ+�nsÓ^‹¥þýƒzÞ…é¯0,ˆ#ín™ß¶ÎÕ` Úœèƒ3ë†Ksö‰—,] Ÿêú.±fý,ÚÀ…²Í¼ãB ,¤ (ƒ!Ȫ|?#Ìò|¤žÉèÛW*(ì‘‚ô`H¼›õz+ @¥1xK[±å>ʳå±MýH)ÓŒ}fœý7›×¾Jš´¡2J¸©7t¸ì` e>SOžùžû<­îq�-ÑQ"g“£á¤}Æ�Á£…FÀ }6(‚05(ã(¨S{9ˆ2Ù_â…B.üNÐ6q˜çÉÔóé × èºü–îe™–³("±‚-˜TØëuLÚˆERrZλ&<1ÑÐrψ×#þN,èñù©»þî¶m^ýU�4Gª×vì´•§ùtM·lMš®I×µ¾¾›bˉV[Ê,©mû»¿xÀ¢,9éÝÙûÇ=§©%’A@ý~þò§ô£¸Ôõ@w þk¾=n_¸s÷Òýìž¹_Ü¿¤D^Kýô!u–Cë’û¾¡2ö'ݾµé¾ÖžxX¯[‡–7¤ðËÙ髚­7±5]ŠÍsD®,›b¸SZ0Tì�œìž »;ü¯nß{eŠzÿÓ52ë¸V‹ºš�ÕÜ®È=ñÖˆðä¤TX¦JX‡žI›°®™e9M–<òÊäGè›EE¢,;÷Öi’ZZBB&Ëò©·F¬0;šåU²,»fœ±ŽÚç2ú¬LløfÖ* D~røÃl“ bP»Ÿ¬øÚ#âÌ¡äeXëPs@šýWÅqËDÔbûzøê²úl%”‰7vøhÆû;²…ô ïУ6Y_Û®¹ Ó‚~ uo*\] ïZºœ8ŒÙµVB‹‡v< bÛQ¾c—ð\ÈÁ8Û i±É{"ôŸm!Ä:jSgŒg´¶-L_Ð-I7 ñ!gÕ̯í«|ÄÑWÓ#½@ÊvNê+k‹¤\ßIMŒ4’_¯’ÏövÈywðtºi~iYVã“ùég~7ëòxKÂÚ$:Ë•Ö}û-5®Uvv=¥/”½»QÒįÚsç'¢)ÆBzßU�´ý ðGwp£4k wAFøðŽÂ€[”êà]pÅÜ•€ßÝU��ÒRý¹³»¥e]öö�pgå…Þut.¡€¿¿«8`ëÒ“i­Ÿ6-!3ž†¡¨Þv’sc92Qà'ROt*z[¤Mt�¬H¼*>´$’ç:YÏO$§Fisîò'©!4þÒ—2#]2ôâ#;yÍ š'MÐ¥v ?QìEs6pÙÛ�™¯\0˜¤¥‡B_n ˜ž7“‰›–Rëí¯«gÅÌà?IŽÛv¼¨yÅ‚ :\råÖAÿh{.­€6¢ýv·Ûý?Úˆ6سëÌÐuâ—íæjO9ó²&dBTõ¨/|JùÈ-lÆ 0Ÿš„•ÖæSæ¤uËe~ÿÚ‚ô,L·#µ<ó�bwÓú, J©Ü¯Á3ºy<´i™c«ã¿@ù{±]ª¡aKÔ�F‹4#ip:çöjØ_A<Å ³6†7¶Ö݃ºV!¢¾ASÔ3ÉÐûA¬ �,œÛ1~SïÔ ¥ú§€Š"ýìfc±ÑT6°Í–£œ8¼òŽ�vîpåþüz¾LÆawI÷TsP37r“/Q…ñ†â‚øRÍ o¿a¼ïec‚ªL{sï×”æö& ¨ù€òmMûµ%•\Ý0A*%5 ß4ºkcZ3ŒÅȹñf½&²!T�Ù\Bç¾ê¦oÑGu2C~^Ð3Gááÿ²ÒÇkõo„P3CÖ �ÔÆSX‡S™½Æî \›ÿ9ôU${ÉÞðæMSe{i†±’!p‡¯˜N e)«9;”ùu”–Ó7Ž=¬D‚v�3w%�öO};гI~²»›Ôûv,H\öíÀÿñÅ·[�º‡âÁíÊ+N£EÆÆÞB‘ÖÁÓý^ïßQÚäùàZ‚ÛiŽS0žÅ[R„&H3Ïz�n—‰å¦ܲqNQ.=Ý9R„foÁVd=˜l©E£{E™ñüÃ�'Ö|îŸÁÌ�L8]L¥†Æ.U°~10É0n�ÅÎAîÍ çˆ%�áI52Ñݾ`“ÁyòXe®bPï"œ±Ùò<šÓºÁ5Kú%ЉÜÔ ç—Ü»ˆ äjÂZ.÷1¹®az•Ì`¿ÞÎ< æB¯ÛEÓEïY+és¤?y*_æE)Ù«"ãÊ,uÅo�6JqïŠä R÷{ò…ß:=”AG‹Ô/‹œð[»Å•q§‹ôN~,_nx´¸çWð)º.öÿîJn‡‹-ðëádÔ¿i ÷ÓAsM§väR*ìM´Èá„P%822‚ÿÀVÅ—Ëeaºvl½˜;¬ÁÏüüû–{ù�Ó¤©ºMÿ;·ôÖÞÝ�pØEƧð…?Þ4g£~@Y—~`c?ÑÁº¡²•u1¸Ð�Ìr/ïÂFÌ4àÎÔÖ<‡+/"æþl0mÊ©3mbÒlö ŸæöØñæF]Dc^ìeIý*!ÒÇC…ÍN�ë}e1Çë-¢´PÄp²Jµ¿J>o4Ÿf´äJ‹Í…2Çmüùæ'‚‘u»íÇûÿLF‚½–Ð’¼6vÛ½o¶{ûr¯ÝëÊ­v¯WõÛ�öu@ÕèA!öOñoW:ŒrÀ`÷!ó3ã#ø‡Åú£‰ÏŒX‡$_` V*t�ÄÏÖÒj,Ÿ„¤Œæü|Uýg³&êOùQªýa¼÷öÌroÑävÝ ¼—¹Ü9ØV&ýnlÉN²:{8�YÜYÅwZñ*;¯H��X$˜íð+Z)Ú~D}±â€¥…ì²û<ÁñíÔÆ1ª`MŠ>»©ˆ;‰0‹­~P�4WÉýÅ0€ŸYÞd!Eó_˜~‰ gÃñ¨?ýÞǼ�†Ó‘ÏûœÔyöÌmoY Þþ½ò;]xÕ ZÞ51/ì%7¬=«� dùÐqT¤«†åáµ;’=<´Z-’=~CmèÚ Ïž‰£ Ѷ³gßìù7Ø“êÑAØÅjÚ°àô©_×�Q%çêѾr§ç9D5œ²{–­w•?õ^ŽY É�M"a¬`-1¶ítOÓràðžà£ƒb»÷pÏ(ÈvF�|Û�Ú=g/–Ûõc‡O3Ä~b$0¹2<^9Í�tÍš.ƒŠìÌSÇhܘOJÛÜÌ�Ív÷cxVM&öboæ*©è§ÊÝ„³ÅÒΗæN&›@ŠjL"ÝÝ@È·Œ¯°õ™}m^æaŠU@ìËÍ+=æÄkoK³ƒz¼9Å·Ê-Æ-ëYÀ+=´p~ˆãƒ+ZÉ9B!,²Ói_?­Ñ“Žð±ó…„c¥9Zn™Îcè2iµMÿ9CgßR:»wv†]ãÊH÷Ë€c†J=gWP�'¾Ö§BaND@œ@[.±ÙLÔØ�ôï˜(ÛE�r~¼)jÝŽÎÀÝ‘øp€˜ 7¤áH$¨á GÒâK%öpØÆNöB‡¿2âFÀñu@¥“‘7d¸<ˆFù\3—)ÁN­$×Ȉg4”S㈱�áß2¥Ÿö^¥öÌœ#ÓÂP]¦ëÔ½ý)¨´f)^'M ¶¦ÉìS89çØ)EѱGµ†Ó Ÿ­^ò3)Ë;ív«ó�d¹šÇ8O¦WÙψãUâXéÌSE’—b$—�ÐiuZ‰8Yz h˜Tnfp€öôyE¶ç–¿×;‘]æ¿ks@,¦B8ˆ‹]M“‘g8þçJÿÕZËÉ7TÔ^Iõb@8~§5Žßìé­ýÖอ­å>IavStÔá5ùî9nPv7í Ñ,ÜVûâÇlŠv¦Ë˾EéËrã#ªfööü¹áý,²Nt–ty–é‡:]ö‹H~g$ßèÔ#�z$6£”Ü)€«ý(™“ꜳ’{—pÆÓ•¶”YåEÏ8ŠQÞ7ž}“z•)bm8ÀŒ¢",¾ô]ÈIm‰Jƒã &®DV}ø'ÖhK"¯¬{X–Ò[‹0ðýjl'¡c…pæê�JL´3$- qG°�•¥`œ� Öýt´¢‹JS}D1¤Þ^ºÂa�¾Üz¹ŠÑ Á…C˽ƒÁ^x‹¾Œ\�–ú <6Q¾N%7vNTæQMè´ÆçÙÑvIÙªÛKS±N%òöÚ×§¸RÃQ]ú8¤�œæ�S®ù‹´&H*ÉÝ`¥w§¤Í-Ý䟜£&Û ÎÎ6ü0b+Õû3c*‡Ìðj\)ÌIk°Š¶JT×(d½ÑxngR×w?ÏB•&õùaÜ¢”æ]•KnKå&G™ Nåå«Â5¿¯T‡¿ø†/ÁÔ—2²¼Ê難Éc¥2„‘Ù]ƒè•­â…7­°šk?eƒJ_üTtðaUoÎ'qd­G””@(6…;´"ZR’"(Vòµ_þB˜ãÞ(+e§wï™üÎÁÓƒ§2fb,ˆÈ�·� -íR£Ý{‚ =öºO;X§Äv·Õëö 0ÑgOö»]Ü"ûTöZÇ¡%_lï÷z-œÕâOö î ‚tZO[¸’qZOq‡òžöžâ è=6ŸÝ^—?"¢8î©fÖÙU°'ßöä >8,ÅAT³�té¿”§/%½Vù§S÷_m Ö�AZŒXÎÂì�¨æ>8 ®�ÒWA*òvªyT�È;¯æ¥Ñ×Pd¾àƆYÙ£Aä}¬æ‰3q"ûu5[ã󪚧ë,LºÏ‹3`æÍ#8<Ú·‰0›qøldww;iNˆ±ôqºü¤¤�€ƒYIšýhg*q'$)“&¥ë;6´ÅB: •<åh_,<Vz3¿HfFâ¯U(»»ÊÝ¿H[.™�𞨧ÀáPYª�0Oþ±-V)ÂY>ÐL «œœÂÜXØjìÞŠ9ÇZ¢j¦­”Sw=ã/h‰xD µSô¢M陋sSFr�ÚÏå•#Uòâ_ Þk˜Í1"¯y•S|ýãZàDFõÈ!Mý±1¤©9¤± mS *¾Š  ÏN0G9ß0¾GÅ�Ð)D8\ª@Ä_gƒ1¯£=(.Q@ Äëßöý \Ž£ ³zDc¹ ã^…>Š(°:M/Àkê Å`bVažÀÒx,…"öqw÷˜9z"cÁbÉÊ�J-©“¶Ï�°a@Ür¿«7î¸5Õ/.k¡ªìEÃe<ªåR<”3OEo�®÷ÖL¤ÏJér¹Ž_øSÙÚ1:»\æ£_: ÅgÒ©�ÂJ"÷}\ªÛ¦ž8–÷hó‡ù�T”æœVÎÁ¥H“Ïk¾ñqFÉýƒ~‚o¨ðå Þ,—ˆ RZuŒ8ñ¸\F¢éQùv%€~ǾÆî{_©Üï¨Üû2èwËå{ýEù²Þ¯±¤§ÝÝ¿èŸ(ôW¥“ð?¡¢¯ô#*ú�Š}-úa¹üZŠØ´]\ªR¾ï+õ[ýô;}×W*.#Ɇéˆ#§£š‹½€ÄOþ[ ñý$~¢ò¿•�øi¹üí¿‹Äß>ŽÁ¹¿ãnFâo*ÿ{ ‰¿—K•€&0Û>Sáú›o£8{ÂÚ, E *ZK!Ä—áð¨|ð¹È/þ�ÄåáòK —Ë¥Jà{*—³—{¦(BÂÐë>yÒ6ZRDìlˆ>¨ õ]nv�±IT„2ŠlëOúêÏ­yžf[áVoÉ © ­µ4øÓªßp‹[_ø…kðiU{.²£’-GÔ!¾—5¬GKü~Ÿj¸H’Y˜á¦U©áþH\ÜILÉL\C!Nâì€hƺ4ƒ¶«OÑ$œ¸V² ˜0êÞ�Q·£n FïQöoàÓ»Ÿ^>½|ž'ñ4ºÌÿ•>:¸§ƒõêgI’Þ_©¥¬ØU*˜£ïÉ[*«C70‡DW‹õfO‰b³j1j¤Ù$bîÛÛˆÂÅ«X÷O\rq;6ºÖ“v}âþÓÁ´YÊÚ»¡¦SU0�ŒíÀá@c÷³$"U8…uòv¾*.¹Üž!ŠÒr‰ÈDN9ÄìùU”n…ñ§h‘ÄhÐÖ$ Ó­8Épå&¸ÎG�Ť ¶ÔŒÞ P$Þ3ÛàrŠªße:¡„{ÄÏøZ°1ÈÇ­ÞÓ{#î ³dâ×È�3fZË ©’$|Ä|£ñ�X¬ˆmæ�lt6×ýƒƒ^DZ¡ÅÖªÀâî3VÅÙiJ¬ÙÐPßW÷[jù]eˤ/HbëÕ?Ê# ëdaa†Hß^ØJj »Ÿ‰| }­Êlݽ†wn+TÜ1ˆ½3â‹Àü7„ûŽüTE�. ³§Ÿã×’D/§¼Œ×Aç„ûRTr_‚i'‚ïR8Ä­Nį³êÏš’ÄÒÃ0/¢k’»)M¥Ü¸‚hF¢ôq·µ1’oÜœ�–wû÷�gS�Ýß—ü”fÚ­ÖñïçWg/ÞœûV§!¼Ñ²æá‹ãç/|Ko³æóÓWç/~§B|í”ZÙ|Ùˆrˆ«ýìíù©oy–0Øgo^Ð`ñoÇ?ÿtDgÑå•—p¬ylEþ›ðòÅ—kÛZ ÞH¤×Y¸¦×~¹ÖŠþøîNú{ˆ;íèo@M 7[Z¸{εvèoi©Û°p‘fƒ�\Z†Y95‘6®WµS…¸H—†b+° ‹«Í©§ˆ²öÚ�ZLxE<¼Åw!_ËûÚñ#v%ЈZª!ç‚Hì¸t[FáÃ$I¶=(]vñæž´»m#É¿Ba´4`6)RÙdv@B´¬ÃѬíøYÎd&mC$D!"‡e…Âߪê„dev?ì{¶ô�êêêêê:üH73³Íâ¥�—# ‰·HY(ÿ%.ð¦–Ü¡òN—ÁÄ À—ø'Æ?·øg†Ò=gª�v%9/^3ÓÑv’ñ¤×ëÁáaê/�bEäBLLçç�»›<ÎÙŽpºÛv¼ªåŒÝ^gì9ãÝÏžoTzöQç<ã—s<™0ŒÐ1 Rî5&SÒ²#•«"8@:Î,Õ],� ¡‚_JÜM/¡y‡ÜPváï¾øÛ¢¿¾ñ×û½‹yÇ·¸Þ Ôè=ßÝcVw4%%ï¿jn'S˜”“Žù�nž‡<Áû+ü¹æPxýyàt»Ýê:�N�óâ¡ßû˜.QM~µ\Í•·ÇV�JÞ ¬Ô/�ÊWø¼u/£Zö­¨Ô�uYx*i¡J/Ÿ5˜š=öU¦©‘ú¤f¤âV/ÿ“αj¼�ô<^Å˶P “‡½w¼ÿØc‡8l Éü@þ.ä‹”ÉÅ<ìþ1íx0E=ã-.>úúÅ_ÆI˜ÝÑ—æ-·÷܃#Àœ?à%j”í±(öêìCë’]£’ûiè‹=Ôí{ÅMH2ñKå$pß> ÷£ÇfŒ©b¯‹„µÞ¦Èá,ãØH YðiÀ`}îÛÓ(›]$¨kåP8aA|ðyhÜFyÁIÇŠ§Æ]2í].ÓÙ�ˆª{§­Û"U•WDåzЂo[c)™¬ÑdÆm¹¦""5¸6Š ª5ï;¥s$öíًǼzò6ð%ìŒî³7|ä>PÝ׫Üï³p>W/•umämpùFClÅø(7‚)zñ¢Õ%lâÀ8m¸èÔ^¼è=ß“DË»h]~”®.1(�ÿ£T—IN2èãý¶‘¶Oiž/zÜîò Cxt ýÆ1„Ûc°Çõ�—µÉ,¼vIaz�³sÎqáSíâgÎZT Ylà$û;ä©=ôY B’(ØP%œ8À²óÄÉòsëußQÄ­³¢CùÊU×kå�î;�µòë+€ÍP|'Nÿ± ÇgÁëIˆ¡h~Ƈ<¼§‡}òšj7�¥Õí¢½Wo^äÍÄWb´ÛS®¢äÕ“U‘VB�³8½�^ìÕlHÒs ˜¹®ÜcœE¾McäмxGQeQL‰™ûFfžÍD¦RÂJ·c%ýreÆãXqêÙÚÙÙѼ 6FHõ*.ŽQ5}·b_¥Tâ"1óÁøF 5€Xt»$HÅ’Mÿÿþ8îðÁ;Æ7·Û) ä �ÍaÄ?› w�ðÞ^n�rêÊÁY ü�¦/ã…Dc¼k@ÁcÝÿ`DêCo¯G×a²ˆr4�ÔÔ°“öLJyP/­ÅœÛ b ® ƒŸ%¸Ù†\˜k=\$G战C NÇÑz„o>&¨�h7ÆSÅ~yoø5ï¸!ÍM‹èàœÕJ�X õºŒ0Dì w¸b·ð»a²jËgïÌ®ÂoõéJHl‡5àìbîñƒî?rP£sLœUòj³=f—0%|qPê­˜éd~+ÈG¦6^{dÄ�~kdPH�L/5cdr�o™ÈµFV \®m<¨ß`.& Qãv´¾ˆ@–‚¾4®·§Ì-²ÝÝNØ Z óRWƒjЧX=åêi)©;6>ò{Ä/ç’Ñky˜þn(T ê[³c«X¼ž$ÓúJ‡4Øþë«S÷§5­t‰’N§R—[¾¡�!OÞV`½]jfŽÐü ÜÖ|È\™™Ðœ•ùÅbÅÔ�Bãª÷Ä3p¯ÂZ·V-hs»ÆÛèV–>7J2TÚ ÞúN–ÿºU^Ñ„Æò¿=¡ý÷tÚ”5~zBv�5vYíÝL÷Vç$4áÕ§•-ŽÂ`7~´x"@:ÿD…º®uŠdŠÆõÆœ\ÀrÚ†çï¢l䉦âÐ�'�µÍZO¬³kA`vÁŽ[®^F°ŠÔ´ËÔCŒƒЇÓ-•›RÓßøÀokn¢ª6µ 3„-¼³Z�XoW5Ñ�*½ýS˜{d²ŠO[p—̤š-Ã2ÚHz2M7¥ræÅY². "è,®§’y­°Í¢Uú%:Y­‹;i_t¡GF—G[ ¿U,Æb–Â>~’7aAöÓåonÎxøÛª!ÏŽ³©¿Ep £¯S\é �-é‹2ÎÉæ\Y:…O2•ôÉ¥8LY�)õÃðCL!m Ø 6�pÈÏí eOæq!™Rw(³½«e{â\:‡¡vSa× £üPRÐtœúƒ½>» HÓ;Io]¯ƒâ¼É�ô]šûÝÄ(`w^£ h!U¹hðZ„¦þJNÞ Ð >rMaŽXÁúÂLz¼½ÎàïÉ®ñWY¿£‚Ë2^Îÿ�÷e9¯buŒ-‡a¯sa³»ÙüKÞ"l´T[I²ç¬‹aeG^w :Á>Çn9©e°žd<-<À9,ñÐEir·§î—ß[gRRZ3ñyÝl¸Ä Ãþˆ,'F¹Y_á}_©`0 I­ôþþŠ3Ѱëßß/u‰‘lo,]Ÿ¢m:lÉhsÌvY¿–Wbd'&¥Y¡X韜�´i2à Ø€¦AZoн3á „ÅÊ;�¼¹9;i‚šøUÃÁ¯fG„.W7Í« |f÷÷‹®ä×d®œ¼…‹<°K믒Q̉³*G8kºö(¸êÙ]ðã¼vw_UìJ?\–Ç5°”Ÿ~VJ"~…Mì’©v;æ,-÷; j6çNvÄ2,$x³Úr„NKø‰{ôÛpq 1ÑŠŸ°u}‰Ó2וâÞVZUùOíë‰}TUe£_¤ýËU´pZbHù P; ‹Ñ•ø•Õ°„Õ€ á'6BÑïe¸ÌÝ„Kµ¢I‰?©7ô‡Xÿgð¿ðnm¦õ…ÛßS+*`KNÁ°[hÍšê‡zœý»=2 ¨ de%@Q‹±AAÀÃ,,Òll¾V°”w’^¼H€¥A“~<0[þX¨fóoíºú¶q2U—‹ ÛR;"¼$ívÄÏ>ø¢M�+“30¼MVj77“¹.ùk�•®NÍ[]~—êx•½=›Í.p£Í£×)Jƒ š m©7¨LòW»E”c%‹¡—‰ïñ(Ð÷ÖTê¨[ÛYE�1ðÛ—(#�^ridæz@ÑQÿK¹ òQLzãŠFe“\rvxW`ä�Cºó*YÙ)8Á²\vñ¢õO N‘Ä«I0…h%@Í…°Èdsà ¾íˆT.�Å)‹Zù‰CÆùþØy&vˆíœ¦Ax¨Ê ^˜øÔ U‰:æZVUò¶O¯œ ²%sd† O]wÆ�œæÀFîv;E&¢“RI2Ý "Dr…—Ò·«¶B2ÓôõÍÂìΰØ)&…¾Pß±£Ì‹^çÉãÓÑ�؆íöxR}äÝí�wÍq_šFœêË”ô „\PðY(în0ìA�¿ÅWHP*RmJžüº¥u ŒykMçÏíâ‘W ‰¿G™Cغ,Ÿµ:BGD C�weêf*K§¢“ �èþïÆ�·™4ú¼¼úÓ£×@Ô£èú_,ªÆÁoÝëßZVÛÎkª²¿&IThˆÃ%f¹Fm5Æ¡$çT0u£^¦êé3"·ïÈxý:D«ü@+¬Á`XŒ²a�Ô#Œz ˆOÇ)>b`KŸžâaŒªÆX`‡ ½˜²‡º0\ÀiÆ�©“ÀqAmZ™ì‡7†j1µÆ0ÉlL²{$86M¿ê+Y¸†Ú`‘C(TCSñcó=`Q»]ÊKŽ4nkS7ü›­í#øx‘?ß3<{ b;Æ—âQç©ûÇa÷×~÷oŸ..ÊÍáq…?Gýª‹¿Ç?Ðëññ×Sþz*^÷�øûþ‘L8þ+O8> §§”08é‹'�ä°7�©j3ÙÝüTM;÷yç~ò‘Þ>3§Dݧ&Šü‡cr.x0·YÕ™Üd’+ÉØÐ£Åh(éQŒ.],Ï£êßE™ÞÑj¤|}›fsg‡Â¹Ö½Õ,²Žä¤²%4}öá:jå²¥Ö><šsåÚëð ª×µQ=‚wô ½M ¦Kà@KÆäüQÖ­’r¼b"™ LunnZ® ×éäžÌâÚþ‰Î eeP;�LÐ>õþi‚g@¥Ðx±ôèê!#%J€á 5êDq$è§­.=6CIߢþ"© ú9£‡—~Èò°l~\©Àí)ùeaˆ1œ´lGBtô�ôv8�’Ó©"_šää\�úÐ# ëZêK´ ™$YhЦ¬“L¾¿œrËOž s¿–//áåZõr…¾ydãkô΃ˆ’¥P*F=‘‹†©âõ^¯Ù\¼ÂyÜ wÐTú=WçP<¯yÉ•,y %W’º½ 6\-âÜwæû×Ý8ÉÆuDÊ»ŽV‘Ÿr³�Šh‡ñ:8ANIm ÇÁ�ûÚÐ>Ó ²;ØA*"ñ�yôe�ÏYaãÜŒàS'¦Ï\·w{Ãó±7ºØƒÔ�ë0×tsóÛXÄŸÁ‘¤¥ôG|Ñø;™0ù|t¶˜Z™ÍÁ¯³ÅÛ.>ÓÅ+¥<â  ³‘pì^ªEXEª8›ó£Ê[38ÜùtÇL·ÉÝNbÑöž”¨ŒÛNÓ39�LõÉpÙƒé,Эîàòj‹Eµ Boxìâ™Ý’�@'<�>‰XÛåaÊçŠi·ªßÆ$÷2X°K“Ï�ïhàs Uò9OÁ¸Sw�˜FÑN _‰¥›—«U˜Ý9ìx9®Ùº·=ã �”Îì¿o ' JlK׃×é"L~F/°�D,Lø¿µVÿA!倀ÌÉ›ˆ%W_ºÙ­÷DÑWÌAµ^‡mð3~,V˳¹ÿ/(ròä+BÅñÒdŒaJBÒk›xaœ‡ÂRU6m¾œæê„Š÷Ãöë#-¢Lc¹N ÙCîUJbIVt¦®\ãGÞf! r˜5;?»ˆÍ™òèÓr®ÿìKZÆý¨R’˜>�†nø(Þ¦’ì_®£„´P'BÒq´ï ‡8‡fýýïû}IØÏã?¢³ä%Ú_œ¦™.åï÷û•Ç~ œE”ðH$h.»—w]šS�mÿý�mÿü¶‰ #)¡� aÃ(x ]ŽQõ桜ÜÊ 8¡q�t¾ o¨4¦ñ8Ž?� ¿þ˜ W?N{ã” vQ»y¾Ûm~¹çÂ=œ …¹TË‚�¾W6ë-‹¿3Áf�"½ŒgÒTòWQr׉ܾ±Ô®'-Õ]KáB¬I}1" MkÚ/X�´àHaQ:ª£ù™U�«¨ŠIRªñ!\�üÅ«ðdóÍù�°0“fG¸P„$XM¾|ØÑù9®@žùÎèÏ@X…ú7î ðqÀ)V¢0 D<ÅV’U1ã¸f±f¶gO�œŠw¹…%ŒÝ£Ü…ù¥2ï'=a’ùÞ•�pìPõìo¦eì1°TöƒÅ´¼Ãq¼ÊÒr½FÆ;ÑÌŒ;!÷ºSa÷™*n&VO;ÊL·÷>"ÊøF�GŒè�ANè*kÑTñ*´«#ã\o%´›ùõ¿¬â;ŒkÏwÂ�u0"]'ˆ+íæM GßïEª7Á$Š(¤Uðà”có=;‡oYF8A;6¨–î+™ Ûnž)«ß°ÐaÊ6Ç7ìtpM¨Ï� ¾¿�Çh@,Kž1tý‹Ÿ!Ä„³™šåñÏÉM’Þ&¨ûRD­,àEóÖí5ÚÒˆPïd�¨’ã}/™9ܳG÷—&1¯�ËÖÙã׎tô74øP1"Fe2X’·Zñ £LP*B¸9™B/*…Uh¿&�Ç3Ñ㎜$ $=¡ShN&äsŠ¢ 1�m׫âù”Mðß㇫bräLî–Fø/ Ž×8å5r«—­a9‘)DØ åÑ O»Ì{ìâªq�Ö4%ßô\iÌb BJ}ÅŠ¦³�}hÔD2™;k3¿óU+õ(ç„F¹ïpÛmhýþ^Ÿêšò½1¿�ò'ø™N«æÅ#®žå�ó†/88Ñtt…¤]×HI¹W»±4'ã Aü I�NèÊ4"6Ì$Âñn¬(S¨ž"“Ó“^ÑáhߨH¬‰ÎøL¡ªSŽõÁLÕê')�¡('§„¶8¾ò¿Ñç'ã ÿ‡½oaoÚJþ+¶^0R­8¾$NâDø¡\ »Ð²@év[NTÉ•ä��ø¿3s®’Žì@aûîûmw‰¥sæÜçÌ™9šKà8œ >…T|@)Á½V44RÐP§ b:æj:|}NìM1ËÓ!2 Ó‘ÿ‚q‹éð�Óá§Ã7N‡ošvhÌø¡±XåÏ5íD›`øN¤"³¬éÍܸE%šÞB}.3”Ò>#³–Ö›À”³Ž¬Ãækê¸Ö}º›nΈ»ÍØ$8·®�§3ÐË|BcÎê2 ÉiõŒñO°l‚¯°jäl™cßÐjD'éâïw ø¨ðËóqDôÂÙvTyBð?þj!8Ë”Ì…Þ ûúRï?þS¥Þ,û?(öZi8¥»üµn-ã\ü"8Ž5Èq™˜¦»B0þÖ’±`(µÃQ’I»Ôž�mQ%N; Pø=û?Tz-Ë®ü�Å�êü�ý6b,?üCÞË´êð¿…0•ÎÊÕmdàÈ êÊñ‡jüéW–ËÒ/o3Pm~CA8ÿmÆæÈϺÐ�@uÞ™€ý®Ä’ÁÎ$`õ_aú¿Âô„0] Ù9ëÇêìöw£ÜÿK ê éßÿjÒjuZuZ-äÏù™1«:ç)(Š8 çê$œ)óT“ˆ¿QÀç|cµhOAI¨/ò›köldÊ´n!=é¹Ç& -ïÜܼ¿s-Ù˜)�_M:¨~$ï5Ò"1$¨è°"ªoåÂ9’£•�°|´¹|î < –í¨{� ¥ûWÌ7Ýa"ñ­‚¢ƒEzà?èíì «Ž$£ˆzÙ(§XÁVjLzäp²½’×5Žw Û hñç1¢±´Ú>I" T÷>±ïÍC]_…›‡iÆZº��¡xÝŒx‘üw”.ü¨Tõ¶¶„ˆm* »da[GBŠk[֪і£5Møµ3˜hÏúŸ{¢ðüC¿þR†dåÛŽ(i»$»’«ÅÊByëhÛ¿oU ¹jÐÈܦÕ3UQ”¸®.WêžÒ)w+ZÓÇ5� ¼RsºzÊíä«¶`MöÑöçnÊøgD[X 3Ú \¹-Öjw¬5Îþåèbç…éëíuÜ��ݯ>}“,*Ï]® _2y¦1|éìQ�N’û•÷Wœ³ÿ™õkIªFy¨b�¿PèA„-ÍÂðë2§5? }”H§AäYY² rWIØ<Éš¬õÚY€·³žÕéÃኒ´gñt íCV«opf~_zV»Ö®uvj_I*?†Óì Êí¬9î‘ñÂàl/:½Zçiça»µ³[ë`ÝøÐ®u/:Ý ´ÕÚ…7–ÿ;ÃDJªu¶XòVç-¤ma*¥luðŸjçÒ{ ™Pêúô¢_;xÚ{»wÖ{»sÖ½è�õ.ºO÷/zOûo>¡˜†=2â즋ÓÏ]\a„úW-¯hß´Àç1H-ai�+×Ó°öÿK×x§¶p�V¿môv¶zµÞV/íÑK _ØKßb [½o°üâ†ò¯Z~Ѿiù¹íçÿ½Õïtøß¿è~ƒ5ÖÜÕšòU3®(ëÙ¿kE5R:ß­ílÁ? ¢µóý­=µ¨rõpõ'[lQ·:r å¢ÖX ‚ê«/‘*†ÜöÓÔ o¿ÁÚþkš_Éu§m7·BÝÛ­ÐîÓîLèÎEçÓ‹nmÿlÞ ‰í›îš×N{k¯µ{qÐÚý3 UÌ{­Ýüãë×Ú}¾_ëòUl¿Ýýj«¨ÛÈn)­Ñ¯Îo†Ó²Ø÷9ð#\›ú™¿…ѸÊ×x(uýÉ�+k¾«TÞû£âêf�{í÷SWhAn-[K©fÝ�Y^(¢ðñzylq‹R7—f5œÄÓ«r ˜ºù’Ó4�¤¼i.s]ئÖÖ|¡”p8®µp›¤»ªÜÏdrÛNXP|+!O4Ò)_sJuŸ²^…§¦š»åš¥JÍšš7Í’®Ôþ_ât{âôï$OéÐ'öéusÙ?Oß¾�û:t®´6SNëHƒìsÞç½Û¾ÍÄo3Žüw½o·Þ¤Ø÷¾à_ï<ÌüÓow¯W¸ó…¶Ô%žzÂtëþƒG�?Ò¯€oÝóosiUÑw¡ª£=³þ3õØ/Á·¹w©oLf#`ÚÍ_6‚osËP1ºRPO¬÷¯ÿøàÅ­{Ïí3ã¼}æ5Æw¨õ¢÷éÕ@ÝÄÿ¨RЄs¥\gsýç Ê’0HÑBÌäͬ0:FÖâMØ‘{í§ÌG`.üÕíêÌq¯GÁx€ª«î5ãvCÁÃb××Ú‘–êM2‡ü¸;+Ô§ '5ÑOå”Së|Vè¼4G5t£˜’¼SX( Ã,¹Ê™S˜0 ÇBù™Õ¹šøÜýj1üÃû‡ñr>­EqV›…Ñ´&ÚÃøÝ¬ŠÚ½;×áêÞ{gµRF˜E£c/Œ¯Š)ÂÏ$úŠÛB=ê÷Â09Ì>o)þé �ïu¼ÌËìIœœûÙ ïRË�F¢ŠÊó0ÍõöJsÉ›fÒ̘m š ѯ¿nÅWµ}}nâYÌ媊vš d?È0p¬YŒ>ÖóÀáÊ‹ÜÔ+¤Jc&}ÀC¬ãŠ| ð#q@6šk\²·Ò§‘J@ÕŠbêß ‰€'now¿=à$ v±µLƒŽn’Yä~=‡FöA·»ß%O¯öþA·ßãØí�Æ­wïIœÅïÞAW˜2½ãÄ(dæ�-¬˜¦ÔªËy»¹©ãw<IêÈãW¯Þ½|õÓ›ŸÞ=xøðñë×¹ðD%#uöԫדF#„ÿ‹…’íº–ì”…±%X>† DÇä/ØO³C j—‹8ÉR´>1D±EÈlÛ#zÔa–�†Á½ïRjýgŸüè­ÜýÎA¿7ÈLÓÜ›°»è#°£ÙLÅ…±Ã|ˆ„–o¹×¤O3@ª$§8ð€J©ñ+·{ÐÞ-·¦@C-D[Vî^§Ó5ôLƒepý½½Îþ:¸WÈ.pà^¯»ß_ ÌÀƉ(°»³ȸ¦Àë«(ó/9tw·s°ú ¬�¨¹»·ßYûó«g¢×{ûûk‡ÈjåôÛýîÚ­»ew¯ÛßGÛ÷"ŽJï¹°©Jyg~úÓÇH �Öv‘ÇÀ}•vhÁ‚ä¨m+Ì äÈ‚�`ˆ ‰¾Ìéjêú‡~rºÄ0?Âäô¾×k4ìÔ‹(~²k�ئeƒÆä€•b7Û¾3,öMæØÐÛêPDi8Š)RCÈ fn‚ÊlƒDC8¥Fɘ"Р? „ˆ\™äPœ, „ÕýÌöµel§Øp!G6_ÙV�HןRâƒÞ&Ú`@žHZ0ºI;Tÿ"æµ»��ZæuXè�LÄÞ ÖC†‡ˆTÜ”!,¼`ËøŒÑʈ™<6ã|щ¯Ä9Iöc ó­žðÜ1ú€ÙõÛqF `m*N�‰~Nõ0¢¦Yˆ"ºÕŒ9¸ÐM×ÏPpsÓ&?Ù…‰rÅ<ðْ÷åÖA!¶;”ŽÎ¥£ 8wFcŠP;9ò'€†ËÑdìYw¬æç'ôĨl ƒ·šV1ˆm5«ú޶ç¦Õmz Ïš-Ê£ Éškà•½t¡5§i9×5#�úÀÑ•Ãtk+Ë)DVf� ��ò�’Ã↠ Z‰­×S€‚¡»œa@ƈÒ�‘(_,¼ÂÕXssOëÕêp®ò= Ö µtÄ­¹«Câ®Uñùð,Økïm"ñ¸qm'TàèÍ .û»½=Ã ÇæKÏœ³ ž>ÄJ£+W2­ÀŸhgÆ£ �$áˆÿ!§Bö!²-† –Æ9°hb« %ªOŸú % yò2Á{TTN½ü²× —]‘É€OÁQ ‘¡ÞK×"h±ÞõzÖhÀnüÌj_ñ©¬˜¸Cø‰—Ñô‰Þ»R�„+ Û12rÀ*ZH`r3ˆµÛŸÈëÔéîv;›Ùbâ[LFÓŠlä»9 v €"3„~Ý�'@6#(ò0�R‘EÁÀmïíìc�v¨¶×éô1œLdït;½>“�ÇÞN¿‹�d"»ÓÙE€„ÝÝëì8î9ì9î…œQ÷cŽ>k’é…}/76Aì{Í ˆBK»:8„�¯a l�×Rp/ñÙ[Çý]ŸdEÅç+÷'ïõPÏSÝø]“{Uêk�ÀZDâ“Ñ´,¿ZÙÎàwŒi÷;;»ÐW÷›dÀî`úA¯óóg¸wp³öSÛû8kp{ý€}‰÷!?zà1ãSupýFÙ>1B�ƃá[½;ƒÄ}è]KÁƒ¹n·î>8=M‚Sô„'Ø]k U+±34Lù¬Û€Òô+Þ¿_΀�®ªSA`…êM”~ƹC)AE/ذFãÑë«ó“xÞ,äØvp„P4½Š&O’øxñ‰© ÄWÒ^Š´˜=9MD9ÑTÂÔefñy8I«Ïrqàì J|ž>‹²Š,àÙƒï¯.ÅadaþÎê@ ÙX‰ÄjѰš8ž>N ‚´G~棹DE¥"ª�¬ÎþÀÛ4@©$H’ÏzºŒB®¨ÐäÖ]�Ýd òYO×k('¤Ø!–yáàs„t I¸|O江uúëfR��믢‚^wcDTÀ_Eë×R¨u|Fþ<üä#Ž¿ NC ¬•@±BC2V¬6μVm¨g‚XU4*ó¡%ùÌÊ­ŸxÀJªI‡—õS®XQ5Ýa £ aÅ#¥þèÿHIð‹ TS±*:ÆÆ´Ã>ñ+)Ù!Lâ‚zá/*:9ÐcøË Lý0� ÚhðÚ"V_%µEá?ðÆtà�»µî2ÞRbùRÉÔk€ZøIbB‚z9ŒDŠGH…ŠÎÃ4¨˜ž 3ÁŸX‰Ëªå¦<}‰‹¬î‹ €� ¹;!H\²Ä9§©Nž µò'*�¡8¡{€”×AUyÈ�²ð—AÝv%4¿’�P½’¯Ïü$˜n>¶KpصbÖG¢®)»)köƒeU÷ŽÒtÈyª¼nƒ¬ ¤¼AvNÊã�ø&ÂûTìñy‚@R®¸¤ŠA+­zEÎýs­‰Êt8Q‘žÆë[OË4^‡¢fø¶žœi¼´"h⎊Îàõ—ÀÿPM^x.TŸx @ñ5% ——€'^¢ñy./Á6€ACÎjø`Î%²+ ”¿Ã†¼ËuÒ.à!ï's-ÿ¹¹…x�Ícšª3‘pî_""_C<Ö®Äë"FVèT¼&(1B‰HÀo8ð~®¨I¹+oV(,?`Â2°ïÌÇ 6Pð{îáÁ‚.4Ž8û¢&ã®5öžÓç‰GRªáí¥Hñ%æ˜\"GÞGÛò1C»òqj×+KùY4žëª´(÷�¡`›]Õöæ:xYñ‘{M ú㵓§M“ŠÏ\Íä«êcCõXm T�j~`ë·A2\ìÃQ0ö"7Z¹ÏLr™¢¦:©YZ†åZ²^k, À×¾ã_Í+€]‹ç‹qW¢•Åx~±Ø‡àªº)Ì, /IÕEX6+¤ãmaô¬òd%?^ „,JÚ\_E±:.=åëá‰%`!6å¡Eª <(�–»@#GIe@!þ€Er©€.¬äËè9æb\D1ã9åbF<¨\Èüêo^øŠ5ÿ¼å–"L¾™l*ÀÏúR žn*bœs•^*‚²ÅKä¯ ßdökj[‘ñ· 8‚|‹�PjŠÉ y8¡8]eÇs”¥™@í_¡ª€]K@äËQ¡·¢ R\®È÷Œ'–º¦¿Ë΂¨úÙz¡wŒÍÑÁ!%‘\ÜÒ�Xb.�çÅ®òT‚TrO~`*½4¶¼dT(–Ë3E!¨XÓJ ¯ƒ@B¨(�гËVJ1L)�’ÅwY]��…Ø� Œ£Ã.iº8Q1_e5^…z.©ãt ë„3©²Åü ÞÓ*þø"$g÷VMÔ¡5Æk¸Gm0íïW{û·»CÀ¶ñww‡w¶Q!%7Kïᆵ�ûW41'èN?H±R?ºúxÇ ­�ŸÕà …ìÓ0ŠÐÓ¾MküÃi�Œüè¹ÚQTR ¼_`zÛ¨GÑã |m1I¦à.~¾�œÂ2Âò^©FR¢ô.¬ãå} ÅÆbi5F¢Æà³kŒA¤jdðHj…`ïï ŽöPW8%R‰&¾³c÷“kÝéX΃ŸSrÉìiîð#Øc,ªóØíf‚5PC/¦¯Ön „á®ïÕ;îu.ÿ—´_—³ú•¹?Û#˜Û±»t¥3ó:î«·gG¢ÑêŽÐŠœyÑh6v§°gla®è‘/ àÜ=˜ÇéÍ�uÏâïù˺YW"ë ¨È´Ž¿¹9_ð‹"Â�”\ÒÕþXÆ<þžù°m¸{žÃ×Rû<�‹yÖh,nnl˜‹6£K!#YIÓ³ZVóÌ!Šå¤@¥Â± àA²S¦Õ`Ÿ¡:Wêp‡üV>A£P&Ò@±ëå�JäKªÔÿºÑ˜5;÷åš³™?õ^Û©{榞 ëS?E•†S8ï c§@=m+NÂSüô—ž’ñ2ËÒÏ ��Ù ËÂ{J5ž`âáJû€8|µÎ8Ò¦«•K_Ç7êº�ƒF“Â-ÚÍ é’¸ô�}�¥éF�_Ì5æ:Q7}ÒßÔSþ…?VßýQKƒÔ�sýê”HØi`  AœËªÔ`ÖÕMTªY}MŒgÀ�"ªñÚ¤:TL-‡¦N…”Åf {°ßÙÛ¬£Zù)hå’ÚÆ¦9¤fh£%t'šT(%L�H›Uh Ýëw«4�L‹Ï¾�7ì×tüJµ¨²zO`TúUZ'¸]´o|�½Óu é¬f¢òW¿¿»Q¿—ë¼Äå^ÖëÉê0FU^â)ŸÓ¬=¢Q¿<-*S%ŽPɃ™ÔMG:áEŸwMù›S�¢6L½½ÒÕ™bØÛ¨³~(Æ/\$f5ì—öÒ^U‹>suðØ�,ª~ŠÉsª€Ç1yˆ+å±RH‹ˆñƒ..õlÝžÈϸaÓ²ša�—³Œû‰Á§JŽXCcwå7ÜæÚr×+7ðÄ�à\Z Uúì€rE-À ߢP¤eµ�m¥¾0“=çÏÖi5äõ ñÒ}§ ¬d®…òâóðJºÑh«1P9¥nS-ùu!ÝÀ\¥†|SL‚Y·ÖP {Ò¡À,2úpYuØ’u¶^šAÁ"ä»ïØi¯€¶õüº¥ÁU<ç6‚úº– ™‡pާÁ�½í°K^w9KÜ’KýœIon&·“(+ Éé™�ÁoÉ€V·KLgeó«ËÆM+ç“@i@µrÓ{ý½J¼3±IÀƒÝ#t@˜ì¤ÍÿˆWa#¦‰;uBçÒ'&–.ZVçá×½‰¬¡Ù.œ&Ø[v#±[0Ca åO[oKC`¿Â‚¨žÒQaë›Å\Ãr�ëÄ[s?`ܹW·ÛpœŽÜ1ÚO•¯_:¤ÌW‹i<¡C‡‘­…'Þ[ÐûÃ%Ä­ù³ž�ãœynÏA~¢)�Ÿ¸4ª®6Žã¨¹_æ^‰àOß¼xþ`>ÏIÅ!hö²QÓ{ÅÜÇáÖTÃÖ‚%;l—x¨h§ßë)Rçh—{¥{Ñnay¯AÇZ…4›£Ïνj‘ÍMé3PQ>eXX>Ò¾I÷ ÐDÜ×ùüJ ÕZéš—¹nWX=kÌUIÅI@Ôa[ëk»-¶«÷Êííî¶×;ó(2¨¢¦mG P�ü«¯{¾u¼üù£G�;GöÑv²ò1‘f‘ák_â‡ðÆôD#]BÅø£€7*p�˜™‡ß/EÃ\c(t³Æ`Ö‡¹jeÖ!ìÜxMͺñjž�¹%“IW‚€‡D©„?ƒ21o‹ÏF™nö™è~hØ|¡¢£$SOûælOI4BG43õ5ð” +Ïñìî÷ncc¬$)°¦êÊW.yЗ;Ö–(¼õK,4Anc^6Ò�¬à½³9˜»œ�ÌW‡U×ÚYü2 ÏÃ,¼ðl•“ÇÞÜɹ¦¸N2ú d ø'?ÍžEÓà’Ý8Ômh)µ®$h9N“—PfVÂÙZ?Y1n�Ÿüëå»ÃÄ(ìÖ%ŠFÖÙbÐú/ˆXç?–t:†¯¥ÿ.¢•|3¢~c¢%‰”ÑŠ?“h%D«Û>¸åAj—µ«o*?<Þ]@RMtªäù~¿·Ù“…F‡K lB'÷«’á’GŸoL†Ysdx¯×îl¼hÒgfý ¡æ~ ¥Ï ýÝiöir™¬¸WJííßıÝúîØ¹³]5‹¦ŽY�×5{]3}ó‹s,¬6»¦…+¶*ð¿í,mæñÌ´;«Û^™ìT*˜i"×!m4øƒFêxÊúÈuJYá<�ä)ŸÁàEU”2ù‹™; “ö^ÿƒ··ÛÞüU�ÝÉæùØÊ>Q]Ï–æ'ŠQO³Ä.â�¥S©Hg¿l¾ð3X ÌM²!þmg)4ÎÒ-/ ÷ú=&»0þçz% ƒ6"¦¢2µ’ƒ’Ÿ›�­žû—Ú3Òˆ"h‘ÒØ-Ʋˆ?"Fïuv6‚’…)tá`ã±J3³þ ¤#�+³AvÔnu„½þ¾Þ×Ö¹ GèVè2(u€F#nÒÈWi¥á'`º%Ek4Ìw¥1sœIúˆ›"l~·rFanůª Äêáø‡“¯27œ‰çÃÙeÎ’†³TÙ#lžL‰á̾ìl2‹/;©LU�UUõ*˜±ªà¡PU.¥5 ’`Æ*›zåÏüüw¯Ö\󞮽Å?ñJL'iýºçå ö¥í¢œÁ�1Ü�å¬,þ�ü?ôÓÀ}mÊ~äÙ—^IzÆÛ6÷÷¢‹[nCâþTÊø=#÷E)™uü�F:Ý;¦¥á‰ª¾ª±ux³VYÉ}¼îV}“¦Ú°’IemX[yñÚ¯P¹ûr]éòu?ðþÅ‹™4óê|8ΰ Á:üc1M*YîCÏôIH81«&ŒÞ 0LìzÉ&EßL`ú¾šçëçR1/4:Ûí›|ØbOuüò„!»¿Õ zð{?77—ìôß¶•žY-àÊ$Û£öÖÁ˜Y Ñãuoå4ía�^ÐTˆîÈK÷eÒô�ªöHYøUx‚—»Âˆ-:S ½s®~(�d6;òëÓË‹]Ôci¼C—”-«ÉSùOènÛ²�Û§ÐÝ~wgƒòJuö ÑŽ¨‹»d@zýÞŽã>óµ&Ë4‹ÏÝ'Þ'û™3|ÆpäiÉSÀ4^R îY÷\´#�Gëžµr®„ZÇÇc쇇”{,e¥òU>J@Ô"³†×ÙÕx|<¹ŸjžFãfÖŒ•ãòw²ð¡òY!xÛ‰i`u‡–æíü�×|I^·MŸv_’‚ÊÍ û”…ë8z9Ö�¦ÿºŽÍôþ ¯0Ø”*ñ½¡„vf*ò‰3ë²V|‰Î1ÞlÛupo'×…ßÇ´Êlzü!˜°Bã5}Ž|kû®¥–˜ëoí§®¯­¿Ùõí½xAu륥^•ÅPͪ¡A CD‹YzQƒÀ+3áWQ¤W]ÜÑ~«6,¥µ�Ã*&Ö‰ øG�Rö†Ñ»æÖÂZÏ\„Ó`êjŠc‹8¥ûd4¿ NƒÄ­=‹fèìÊÅQ¿Çößßc"øÒ«Ó¸Ù¥ RX»¹ñ[¹$B–’ÞÉR×'ñ–fKÞÿã|ÇUý��&ß»µ÷3$Á÷¬Ë÷X+÷¸au}ïF™åȯd~‹%A§Ž_µ„º-ÜtÙ"Ñí´ñÛµ‚O÷Û‚7¬PêšsÉÀ’Mxí~­�ŸjÑg::ÃÉ뺃‡»å˜ÔyüVn}‡Jµ®�Zê›\ŽW^¹Eì²üJ/”œ5ËÍ6Ræâ»•Ô’"~-²H¢‹º`­UÛ¯ý ȃï�Uv¶ë½«ÁæÚî·‡Vªßj3±Rp·¶òå|5|õ~tWÔÙ¢É £E—ª`ÓŠ¬|áKgpIGåOÎ’|ÿˆÁî€?åæ0!3öã&÷½�ƃûm¥–CùZZ#~^ ¬‘PB 1½1!Ó,ce^ÆQÙ‰óªWÇ`´…º!�çÁ9C�CÒrCTõ!¦ÅSò²m¼!IçA…N–Y°¢i’v@™gYÍ×ùÙ’õ9Žgèè_”NonFc7Ì<àβ£Xz±³fÓI²¦g¡ÿlfcB¦¦åYÍWö;›§‘D Û–ó=HZÅ¥¾o¹ ¥Ÿ…óé�Ѓ´ÑÐß”_|‚mµZ™ �¶× ¡ Õâ’ýJ#$;oPd�8aK³¶ÖÞÀÒW[L]s(?þ†Ì@ ‚VU.†¿Óè`€¼ˆ¶Ó «Õ 2xtߪ}UØ ©½ÇVÙ Ü9ÄEæ\î¿8kâ/SR/xÃc±}Dfü×�B0ãÉÎ�Ž1`‚v>á®k…45&?ËmÙ5�¿³kDÍŽ‘:Ámћ㢠UÑʤ5»`Iëüĸ‚Ñ“q£ñH�¬G0BN¢l%+GJ�¥4×G1‘’ð‰ÛHBT;¼ÅÇ ©ƒ†o“Ïü>þÂ_5Ÿ2,3Íõì­T,°v”ƒ�»ÌØöÌŽ@ê­·q¦½û´ dn„¹2›¹° Õt—ˆÉ¦¡On7ôIn蟫ÏôZw3oúDú¼Ñ˜—‡î\OäÀõq’ç¤jœ³Û�s&>åÍØHâ}qÛ±ò+èªñò"ÿ�ŸÜ˜ÀRìîâvÝÕºWìþgtwÍò介“mìîÙíºËk;Ûd PjøU0+7\ µšZX�Öòºþ¨Ã€0Ñ8ŽªëŒ;Æqܹý8°í;ÒbxÓPt¥þª±Lem*Óô4ªçEÒzV�‰úl}üÎ|¨ˆ=‹ÃN ÞÖ/”>Ò_UËé<>ñçoΔդÞaê+áuØr«ªÑr}Í|H5×ülä8ñ¹<˜ÝYæ=>dQuŠ—Þƒ@ßJ,÷æ&Ð#}ÈRî8µ2øÐ‚ãyñšò¿åže^},çKa›Çƒú@ ^*C~ûû’¼}t#3X@MÜÿº¹™fž=ËŒö÷¹îaó¹b ‡å$8e,4ñ ªÅÖFE–8ÕŸý'0 N`ÌŠ �|Ê\ò)Ó¬i]Ïñ†=ß5g|¤Ršb>æ:›"è™Ä]üæ‡M¶Ëææt[‹“” ù6òóe`®®WÿЪ¸’§¢Ìþ§úÆ@RñåO3%ÍñjTª6º Lkt”FŒqÍFÑX¿ÊˆølnuTkÿÒZã‚YPºCdw²�­êôó“Á4ŸÇIPÃ(nþ$ tYv¿3´ÒÜ‚þË>sÓvË-BŸšÉŠ}Âøyä®çÅm«ºŸoI%U˜‹Wvþ«EæÆÀ»£Hèn�Ž/Ûí­ãËÎl¼}êþÍqEe¹ú›-Ýb±ptAòx�Ùm²ÚX'–{0°€‹è´a'ÂOw`Íà§7°kÒ‚”˜‡Ð4ÌÊ~.a&‚£NŸ]%B~ääX~+³;}ý²ÿï%â{šÜ9–‚ù‡Ž�M”¨‡ˆæê.<ss`6Ù”;µkôÎ4„íƒâŠ%b†v“ª‰Ì‚ÕYV�¶,þA‹¢„ã§½à~ðGÎ…Ø‘¸!1’xSƒUíD™vÿäá—|áÍ Œ�7«>µ83s �e+ú)›©ËþàGO4ÊÌ(þßAoýBé®^Ðu�øì½ÙIµ– ®n¿ßëvTìâM: K¯î³­q�ÓÒXi.˜ÑòƒiÃ_éNT1(ÝH•ÀÂÏc(È¡îZùAB˜jªÌ7k©£�¬»ì»ysJyäiQçÄm^ÜÉžâ~[¹ ïúšñ†Âç‡þä,ÔÛî,Ò=—ÀDþœ^f z•Oü6T%¤ôFQ�< ÂÓ³L½ÿN³3z�£óøÓ f7�$AÁù�¦ Á2–Y®FzW5.üÓàŸ?Ífè¹C¼ÿš{OD7¡æx>Ìô×7ñB{û§öü+{æ3zøœ|§L}¯¥½†¹†VŸE³˜¥’T„�×ݳ¢ë,C(‘œp¥9…"•grÝÚú‚ΗlÜhpµd–ïfê«'K!Lé.NæQ…3[½›¡UÝ( ¨[4òaè·ÎúÏ�n0”!Jâ¡)(ì\ݪS·;�� ÎUÔñ‹ œÎuóQK#/Z [æ?V:cÁ¾O½ Ì 9‘Õ\|´¡f©ÿÝväñzÇë•âWšÍ+gÁŽSÎ&\±3:Ñë’¥O¡ô©^ú´PúÔáÑCD‰Æ�LaZÅ� 9�“QöïÎÉ|='¬KÙòyÉ¢¡fÁÖfâ"P{¯°q/`pGs5¸ çÝ¡h¤ åÁÑÅXï;¾«îÓ› ^‹‚Á×A·½Á*Ò¬7«£!Ô=¦Á™±Îi¤M™vœ`™Ã´…Ças—β¬|¸ê®Ú´ØÀJYG ^îܯ쎋G7ð’Z5&Î ÍQ†¾r,à ÈÌ™{<Ð §‡ùConÒUÞ'ÍÛgGØ^â:Rzõ(š]úD’ù$G_;‘nmôêó¹~|r”IôQxéAOÃè igg£â:b©£¹}ä~θGªàú^ÈýêèŒ ì²g 6SFæ9”x˜šµY™­Ì¯ÜÜ…�™†f€‡�æ[scÅ–Rºö3଺¿�±Ä½ÎaxT„BŠhÔÚÎ…ä¢"±çHócú(oâÍÍ„ú°�´îÌ[`©)УéÑ™jfÊš¹òÎFÓñáÒž»Wä`¿«<‰žé$šJ�x³Ñ)�Í %8ûº3è®Øá›ïhæZ—WÒãˆ\sëŠô}F�±Î¬ “A®4 Ž„JŸ�š ×Iޱ’)9òQzä�0B—";ýƒõW<Ö’ ÊQˆØTˆÄ¤0Ê…&ÊÊÅ1… ÉÇÉøÈ2fïZHb ¶±Óéìlv Ýïõ¸ÈÎ�c ®E·„¶óøÇé8}]Á¿u²Õ…]ƒÑäß`6÷OÓP�­4F¹Ä&g¸1Ä&€zQ6‘ø«í šž5…ÝG9âK¥žŠTXß8 ÐP„ç„"ç|9ÏÂ9°¢<ã\dLãìÁ\T”ŠÔebLdž¼,$¿2Ñ¡ ‘•fáäÃOEW-€’èV¼Fƒ'ãG´#lïn<Ü�ôšV•Ñë�Î'×»û;=u¿ôg.–°ÎMýâ]P×<­t¹ ”Wênôt[éøíÕNÃs¤0Ûþ6<1¼Û?´‹xåZlnéhΪա ‡­2j»+�L…e&!}ZÑýCÅŠ|ŠE®^SÉ­X@苤§²8Ã!sÑ+*Jãžž]kzeéŸq(W2t}‡r;„3®f,ñ-”îLÜÔìT�Pr¯Óéö%#›¢ ÷«Y¹èuà¾ëº*·_I?’à�e˜)بÓ[{üz·DaGR%;󳚄 ô0UÑdŽ8Ò—öÏòÐÖ0I0WÀúãd2Ÿa©‚p¯AÖœ…§KbŒñBFùfÔ;äq7“—”ýÝ�”X:0@Ï t‡LØU>bRI±×˜R“¿5¥©m½O‚ÓàR÷÷Ê£ŒÉË:ƒÇ…Ÿ�}¥Dï»»›É—fQÞé€lÂ$tÙ/\/p4òÕá³$›s=º¬yx"Ì�ɧK…ÞÏ"åWŽÍÊévëÚžÁQþÜßéìô÷º»77K˜‰B¬˜±{ïM½îÖI˜ µ|)À”âuÑsžBºcà%‘&3ƒÉûŠM•Ü’©‡è}oÞÒqñÿµvµ½mÛ@øû~Eìa€�*©¿4qê¨ÀŠatX±OF`¸6Ý8s$C’ó‚Dÿ}÷Ü‘"%ÊVº®(Z‹¤HŠ<ïÈ»çØà»E#/YÉ:ÓÉ $k®Ð¡õ+­Oë0v*e0ìSãrjW¨™E†ÆÉç�ÝgÆ1ì¿ëuOÌ<¤¿ÏïÕ¯Nßø½‘º_7ýé�é×”Ý<%ô ˆœ82{›#$ÙñqÓôè {çÍa;Øe¼"u¹_‡‹«ÂX—Še—²;ÀcŽÔ#)Âñ$Á~‚£—õKþ$áÿ`aÈOÒ[8%Óù8d8 dWô1ÒuÄ!¯Èz_ÖK¾Ñ�"µ±Áºˆ.³9ÑoûMÂx#ÁRmT¦Æ.“Ñ–8*á&þD—Ì‚X„œ|³Ã—¦¿ÚÝ!Ó¾Ý>ÊØç–©Õ4¢»².ÕÍ;_ªäÒh‡|_�Z/jÁ ¨¥Y§~¿ÿÍ“�ölòŒïKçië¨R„P�é]˜H¯&¤ôÈœ>)Œ©$*Ñc)�H"é9{C·5ŒãÐ×xËY RP°]§Á\³î­† a„³²×<"$qÞÂÏKMÞÆÏ3 !ÁÊÏ‚’ìmMµ@¨Ž´aéÇ>m&øõ^‚wimU¢µž+qdUl�–ݵ±;H�Lˆ›ä½�¦§–ZÎz£^#gk¤¦¹š=_Û­þ∻ð­D$~~AD«Ãè3B)~¾CL½ìBŸX ì!—È'—ù& °cþæ½G®)žMí– cË–EDw˜HZ vi�Ú¹ÜCeÖ†â{{A=\pÛc¾F �¨J ?VýJªoµ¸Œ{T%o¶kú޺Î];"74ƒ€c¨ûŠ¡ øD”IŽ›pK”Ÿ�4¿ÈˆíaIÈþrÁúë’òò²þßv2㽌Ìá,™!$U�6b÷G."hàRwóŸšcì3{ŸO¨qà9ŒŒÖ¶çç̧|HŒ,Þ~b< j?,=í¿ëоeé'C%u3_ü“–€TªCk´§Ó�q¤®¯‰�võ˜H¾�è ðÚ' ßA¯B³%H²�*Ý;Öç%¥‘Ì r‚ eÏÑÒC§›Ûs_–5ýÞÑÀ)¨†ús�%ŸÔKR²T¬EšÜNT¢'¯Üå £ê D�.š¢¡á–õ¼¯…h@Øê�(þú:°�²t8VB¾“>Ô|=xhˆ7 tC{Ì7¢&€ûxÍOÚì¾=N¥¨xñUi¨�qÛÅ�z›Uk†P6Ÿ~НķŽO:ß Ô^cÊw „AvöáDN|5+ÑI3.'�í·ÃÅ¢;#¶Ø|«9ê�ôÁçÅù©žY9M­`aqu˧LéaÈ� Ó»šÔ™&XËÿP~Žm ‹ÝàÍÔcµq˜ú·­Ú0›�k,eÁ±Ô¾Œ¬ÍF„X¯‡Í´ƒ§*Î îÞ¶Pþ�•U29ÐÖ3Ä’VÓŒ¯ëã߈/�ô§¤’Íi“ó Þ/´/cU·cI‚ŠÇuÅs1Važd<¥×y¼|ÒFG“4¯ ¤–ûàVŸGNÄF´Ý¯Q�"§ª$ÏjE6¦ù›Îfìa¸Ø’Zu¯ŽOC56~âQáw¿ð¥=÷)(‹'k dKl/h, N]œÿŒÆæà¢fb_×F/ieÙ´Uט�S`6 þ¸BÚýÞU/ÊØ‹Øéu N·‰ët[h7M¦´)AwššD@iÖð8»½Óá+®—ûƒ�–Ë NHLî8öåÅ\˜¸~ü¬WÕq`|Ö×!þéteO©°Ê1¦,ÅfQ@e§²Çõõu�ÞwV[ÐÂt•ó ?[\ÏÞêÀK·¤“î³¹AžÇõ¬û³¾º"†1>ÕXó÷ZùqeÔ•5åwLu¢ ;]+ðÈ@ŽÄxÐLó’R6óv6¹£'mUÂx¸Ï†è‘òkUˆ]ñv8¢D}î{SÄtŒÞ‡g#"Ÿ«á¨O;[¥l"eЭä=<ëQŸ¯†ïúƒ~H™cõæ,gŇgɪ‰s\5Qz0Ô•é’•$·F#ªDzí™JGǸ<2ô;kƒë3: r �——�1[)D“;+šÜƒ"jq%…ö˜bê€ LÙ:žB¥*%e¨¥�Ü«„­j’ ‹>~ñ{c¾Lºóèw§T€'êÖ¯åÇR1Úá«%êÆ’›üì7YW[¹Ä¾Ú3žÊø•©‚@q~Üù‚4Œú­I»ÕkäÞ¬ëV}¯à’ÃÅ–¤úiÀØ—Ö;Ô8ìúw¦¡GÛУiè³Iû¬z0+Ñ6ôPjÍPÒÀœ6ðÕBù®M,ùâp„^áódúCûÄOoßþ|”Æ»d¡hî¶ÄÄþþë�ɽЖq’ƒˆfwñr·Qél9ºMgÛÍîÛ:š ÆÔŸ{ú-NîæÙìöPñåNT>”:&ŸxÂÉhÐ'¾Ý¨¯ó‹¯ª¿8¹MOîæÛPKÒV1]Ö¦¬–â–b^`imunify-security/assets/ui-app/assets/static/other-root/src_i18n_it_i18n_txt.3a3a2266cae2bb4c.jsUT ëÆ«jëÆ«jux 臼\mwÛ¶’þ+¬>4ö�â6½ÛÝ^çds,Y–K²bÒÎmÒœ^ˆ„(4À‚€ÛÍß™õbg(§Ýsú%±„Á`0óÌ Þ´WÉbö¾u-§¥H?¾®Œ.�›KûÌãZ^înþã�÷öJ_Í÷Þ¿oU6ýU=ÿIÿª\øß}šöÝ?üøÓ‡{º­ÚrÿåÿÞɽþø_Ïÿ{ÿÅRØÈ½œy�:e4ìßáwòå7±³Jç{zÿ * åöZ­ý÷Ï?¼°Òy«#õêùó—/õüþý¾þÿÕZ}Ó:l‘¤­C$üö[ùªe´\û¹mï Ü–m×¶ûwj¶w÷ù`.ªók=±¦”Öݤ¢(ö\[ïï×û÷úà õí·{úÙKæa^Jàc÷WšHÝ+÷Þ|8t4èç¶y0&�÷�\±Õ/࣪Æb ßwsk®#-¯£žµÆîµºB?q‘(Ëâ&2³Y%Ýaë©|ÚŠœ‰„ÍýBjý§õT=mý'ºVni£ŸiøÞ*˜B´…—Qëéëø||P‘‚Õì†zŠÚ] ®ŸÉÏmñÀ*¡­A3 4óJ�JU=Ñú@~*�uÕË;AlªÃ;‘e‰äÚX9T•;ÜŒ°âß:ÊsåAªØŠ¨*e*RØI8VK )´/¹ÎR´{ú 5^»ö÷`Õ»ï[­6ÿ°% ‰J2ðå\œ÷?·3øä$ǺW¨…Ò ‹œ)­œZ ì%AžÜ íN|Q¥©¬*®s×èTÂ,Š'‚hL”šE CêoøÙÝÂg…³Ï­/K¤]˜¥LL§OäzÄ¥A}i‰º›"*pÝïlöh·µÊ§…IÓÍ o¼À‰*ͪ§f€ÿ=ÐI-Ö]ßίÔ{_#U-o° §“ÂY Ò z°Äv+ÿB-¼Y6(ßÊÊO¬Yìžà…*-ÈF hÞ›gÍæÜª(ŠGì€çLr Mü™š§ü.@´JÁñÓoBÍÈdjÎŽó]L† ~êÎC“òBr� $F ;{“˜‹0SÖû¬Y è`×3S�¦–ÒV@)£ÜÓ‘þ¢)`Ó—Àt©äõ Ì“cx¥*/ u{+"Ò È/uv"ŠJNL…N(Y‹ôR‰éLTÂä!¤9ˆxS_£B¥RWìÀClºEÃJ³žÖ5E!sBÉ綆¿8²±YH9L÷ð.àw4rs,n¸ç9¸|®ŒÕÈw¦,&'V-ˆÀxëæ™d›Y•ñc]I-möË'™âL?ÒeáÂPHÐ ´'š�Ø £†z-W#ªÄœ4 x è[uˆH[òšYO¤ó‘Ñüô!€TåBV£ã¹w™¹Ö|T¼[rbðET|åB„~ôØ ±Ûr©vª47L)SAf©d ógI¨…h|“�XÝr®,Ë'‘öÖ�·UŸ¾‚ø¹R)QÆ RU‡à ÆæÜ+z¼(n=_¿Ž]fMÓ¢ÿZPaŒbð7Ñ'5nÖÁà�§î?!;‡‡°µkl/›”4¬•t-3ÝL)mjŠ-ð1�•Oj!c±Ñê(4E�•$ia|�Çb#¶±•ëñ«Ñ¿–�ؾè�ëg“@_#ÛÂä*e…­{�wu·I±k) �s}Ò ¶l¤Í”•©ÔS,´©ù›7} _Wl ž`Ú.@Ô͆²6•Xþj¨}Á¦G3w)yjÌcÒAýeJ}@JA¾·PC'7¥lß�€ÞAB46ƒºý,‰lSoêÔ}‰®ÐžÈá±íšAóê» ®ÃôfPÏÀPªšÍœ�ùŒ©òùG™M°4§Š|P&?AàŠ#Ìj¨åÜ_‡ sZªµ3Y¥VaA†q"ä¬E"?ñÕ}¿?¸÷Ñ`ò]ì§Zb±§Ê¯l0¡(áøza½vØâY¦N˜ˆéŸŸ\MoHÊjlø2vH%s%K¨©¾‰–Êæ¦ 2z0�…`EÒÔ…®6Ž XuÇ�÷c"M"(²X Ñ*—V�òˆ›©ò²оµ<Êk¶Èy°Î ”­9¨bAôÐT@ÁT•2¥raørø¯ŒsX«8êÑ‘!Eé)esgÒESúŒm¼<ž åj0ÕÀSãÝ€Â)7g È=®ähòðësÄ?®S%ͽ@•W¡}Ú:Ü–�Ì“ÉpÐ=Â�E /±�ÍØNÀ¨¢ªäí°r] ÐÊ‘ö׋©6¬”¾·d¨“e{m�ß½DÇ…©[Hd‚„š¼ý…]ÍA“"«AÉ�Î7ì¢8>ýn‚ ‹Â �Sƒ•yÕŠÝ€E�F�ßà�i@ªhÖ<‚ÑîNL ™ ÿAì Õ}“éW½j°T2Y¨’䢑\,Í—F€\cÂ,j/П{÷XÎLhÀí`¸{Àèw±¯;¬Ø×±‰XY“Ûƒ„™œ (A:�a¼Ã;SÖëHæ|òN(°x�+_*Q,Qs¸ºÂ…wÆ_EaXä±8 È0»9ì²#ØÔõΩB\ˆ!aJª<Ê2Éj0ÄlŒš¸'æ‚�Bò"7 q ¿Ã¿àÛzí.Èšª<¦ ›npâ]û6Ûœ3†õ†+fÍ&„ím^Vã72Egè†4ÒËTûõº«¤C!ë¾NBÙ­üîëÔÍpÚ±5‘r[šUé�_‡\R7P)ò…Dÿ|ÍŒ¿qÖ‡­/'|H2›ÑGÎ#¯àC‹?](¾lZ'" À‡w3U@•ع°éóZmÈõ ‹ç¹�¤Éùý’‡Å…n(, àXé{Gʧz&1X¬xíMFÅL½ÚFƒ‚!¼ü´®ZpóÁˆlÔ°ïÔ¸¹ ñÂYÚæÙJ!w�$î^HvhR(¹Aˆ>°Kmê8¹NPø�(-¬P‚v ÌÖ3€­‰¤¦hïA±±¿«r ó‹ìv?½ýý“©CÛ_ŸÊÜ[‰÷oœÇƒ„þWfòEMp¿(øû'ó×�ò°ZÁêbS�ýÎIQñ¥ü/Ãæ>ĉE.ð²:¤ÕÛfª*�VSÚ§EÆKíÍáÝÑ1РN¶û¨Çjm¡ð´':²bª¢K£‘<%ÔØ�‘`ÈoúMa4j±íwæ¨ý¼aØ¿i�TX§2,ãŽ.ør\åйÃQÌï1.  (úQAx”°œ<ŸËÆv(öˆâ-/‹ŸRë¿Ù¼R!²ù”þXÀÂÉÞñç\ÒN…ú�ì×9b·�L:�zöVæfæÞéðTÀ+3¸#Õa¡×:/ Vs$aÑבE®°úï°€ëxû+‰AK„‹¸Ž/r”Û9åå˜[¡hÊ,aˆ/ûÎk^Hz³(��µ{ÊpsH¥ÿ*äâiYÄv¤]—èŒÙvD’ , ;¦PË0QÑ£„³vƒHQÏ㚪ðEÜ Çn,Ì;VTáЧÂô'‚ìÌ‚»3÷!"tXävŒ«®EÒÏ,�’®}U…©±È ¨[±Ë¢¶ üI¯Ýn³{tMjªèý™^:ÿ€Ô,n¡´Ín]“²ôÓi�uP¢¤ ò}œÅçV,¸×ÜY¬ÆK( %Åë. Ö.�ãfOŽ–�áˆÏÙ®›�H·lÞe‘ÚŘæÑ¨]©Ýº,N»¦0‹)Y³Ë".Lâ"œªtÙˆØ á®{ÅKW܇¡ØÝeQ×õV€?þ� 5M*�ÇPù]°øìªÒ™÷ð@:fC]|¿NgÇl˜éÓ�)6³=†Î aìÍޱÄ:=fí²%ꊖ¬xÌ'‹"—!¬öX§ê¥Â?Þîéñ•+a¾=Ö/z¹r´ßÛc1Ò³ÊYIÝùÔ[Šœ¤ï±A©ŸKý„õ£¥1U Ö'ê7´ÆÉÿ:ÅÇ:áž°&‰©øœIXRª¢‘ÂC(bÝ k¦ok“'¬vN¬Ð)ñè³±/¦½·Ï¦î ™kCÅê¿ÏFÁ¾•uLí7àÙØ(rcì>k¨¾¨VŸ w}¯4a±?á›AS…/‰‚MÍ�AÔûÝ \þ‡pÓgM Н-Ëâ¾Ö;å’Øg�Ü^b˜àµJç«dÀz‹§çT÷ÙØ  ldk˜É³Ž‚å‰G*6fëCó)ë>§�£3ø)X�E!«ŽS>‡X#nIO§ì4OEXÊœ²S¼Ôù¼ŽnþX7­ÜtÀ:ÀÀ"¦¨�…Ý ²B’�,äÖégDÅÓ€UàFí€� à^!žL4…?„Öª>PxržJÍþ…í¬&à¨Tn¯d&¬1&¢ô`2y½`˜°�éDª,U"6&M6ùqÂÎ5¼&üÒ“bèD�·J(F ¯¹ÐšpÂWšU&Ê¥BY"c�‰ç·nÐA&l�˜ ‹ÕÛæ6F“B21aݘÐòbÂzñ$ ëÇ7¬ÕßGyá‚5ú7Ÿ¼V¡¼à L³Ú®¹à÷¤ Qà‚…õÅj?ó‚�Þ…¯³âÓiŒ€5�ÏÂmš˜-ƒV+¿*FšJÌ—Cò&�ã-#Œº1›µaÁHX‹Y}ÅK–Z1 üXé\”tO²óÛšP�=Á:b†ª¸0˺úŽÙý˜x)Š©°¸â}-4ä¿I³î³UV!c‘RÞ‹ù|ô(e­ÃwÒ”r©êŒùº«Šƒ1‹¨²~̺V ©Ÿ7 94ÒÖú>f�+þå“ü§‰³ÀóÐÖo°e:U%±f³n¯@-ë ½˜M­q(ÊðŠ6)žõÌX…|³ñ<¾†5{½c–ìØªO¼ýˆ‹›.¬i�ð;õsAœØÈ�PäõÉ0áÀ/íÕ±S^ÂB:1T`',š¡ÖÛI ‹ÕDü¦Öñ;aš˜�2„¸„Ee¢`õè‘VÂB•„' «aXP&æB Jø-¨E©•…$ ‘ÎCok Ve}21StÆ,ñø"›Ùx*½³`q“}[GãK6`^¦xÄGí¬=/ó:Þ^6îÅH¼*Ž×$Þ¶‡Â:“xù(láÒÁ8»„£^dÄ»è†iX¹´¾Î]—ìd/o§r ž+þ¼ ÿá^ ƒ+2 Ë᫆å0zî>÷€ÿe¶vCõqÅ||¯t õNôŠUhÐØ•´9 `³û4'žl€¿ßcûÌüŠEî•’NÓFä›a¯„öÂ!¤Þ²þÿê …AäÄ;OÐxÛ|†­ÿfÝôÌTß´µfõ3>iÅÖ†µÐ�qtÙökF è³OïX`¾[íK¿cÝæ�ZLÅôš.‚d¢šO $H|k°T•±ëw»_ ”eDxä‚ ]‚¿Oöœ£ûGt er!ñÖŠˆ¼ŽLžã–ÞˆY˜Ìеi¼zù>ôÆš.ÁßgýÏzâ ^Ï^”ÛõEFK—z4Þ¯c«=v ozÃ=Î †ÌD4ØjÁKÖ•Ÿ&;nß"sôW)x�[Óeí{#  :o@(X%YTPãå Á¢ñì&: ö¡ë;sAÏC$(ƒ¿ãÝÃuHwµ_L¥=ŸÑwÕç6¸´Êš:êFÕ �uðé-Gw,×OYebX ®·´�qü³ÖÄ„£ÔÏí¹Xʱ¼ì’ðT³AÌ¥I¢b-îg’Ì›É݉©õòw0ñN%4ã¹ zZýΦñåöúéŠ*ÃÅçí×ÛÓ›£z¤·*gtõ0.TJKÄ¿éÑ̆y��7ïx¾{Øã­ÊÀWéE]!kͰÝRJ¥gÃ0:¦Úží…¬¯QURh*ߊÂ'g³™„üâÂw»n§ö ÆîèÉá¢<º9²PÑœ^—„o%ø²·ør+–áz<úr¦*¼±{”6…¯c$Pô.Ú®¦ô²Cékí� ø´¢™xõÀ‚H±Ïú6ðêŽ^Ãþ YHð��í\âÙî ÈzȦֲ‘s5ø4­‚ T <³.îàæáâV…O¬•㟼® „ÈX@ —ÙîÛÊh[Ú?�ã^7ÜMÆ[L�%ªÊ¤Šþ¸_É�¾Ø¼¤qx&³·Âj|èÁïöDÙ–ÞþTk@DP¡„‹ð¢H=†v2>S#rº=]_ª–+ æE=ây$óÂJ-MÛÑñ >ê †ƒ¯�ÓÕ÷kUɳÀŸfPôSm”f%¼°õS‘Õüî½B[ɺ+?m¹Ýœ/<Ôjxw~å/×ÍBmúâˬ{zmGÞ¹uVNX�£E¦Ä˜‰ë±úI7>‚ƒš ´PePÍtï78šÝú‘_â Þo•›ÓÏ8Äø« �ò‚:e͈î׿ÐðåïƒÐïm|¥lÛ¿º±ÕûÏ˶fÔ$›6qí•:úVøk [‘uó¶§0S´,ZÿxÉÁWD ö ùÞóh ’‰ýõ[�½ðØ¿•ÿ×Þ»·�]é‚¿Ï_�°W_Ù]”üªTu'5²6o$Ke×J¯š¥�„6 0 )[%×ÿ>ûÛ{ŸÈsÈUéôÜIfn—,ç¹Ï~~ßS®öÄ‘ø„´©ÅEr©shÛᇛz†§hì•ÙÞ4g}ì e˜3s–‘#<Â\‘šˆýMªäú,šD.w«jYì$œØ]ié—(À¹¢O öµ®9©›µ5>Üçoâ ða ÛF£KhAî¨ÿÔòžˆªõnä Yô:j•,,oÃ-SX=…ª:º½ð7å;˜YÒä'¨gKhGU;Hd\¬¦K…ù2Î%KÝš!_T’.9¹LoØ ³XÝ f1“úQ):"¹»Ò·iVHÐE>c =º�(�áò¾«zµÌ¯«z’_¦ô‘ÉÇEg¥Àž›Üò èMÚðh„þoºÀˆ«äS~…õ$aUL“ý“1uœ~˜{å�·ZÞ™{«âM]dAŒó â]÷zP¢ÆF¤GmÐkla¤ó%Y—ZŽÞ9;çdôð�¸á´ïZ/xnyPSÁNèVjºð‡,¡#Åà®ÈVè"NÁ¬ÂÊŠwÁuA¯�çt=ÜŽ'už—ë›,«& ¼ej¼P¶áö ùKãíŽIWYà¿ÒCt4‡&NCÏ.ip}÷ß–]:6€Õ#®,!JÙ“|Åø>˜®l:¾úîyòºZnäË|Bó¼Óø—(L+²ºq³Q}m HhIÅ ‰lŸZg „­KNû‰aB›&�ð5uµ¢éÍ9Œ”–Dÿýýo+@9Ù*Õ¢¤Í8SÓx±2ö�Ý 4(Qòn¦Õ)òÃdµ,¸IÕV ˜iJáºõÞ™ˆÒ©�½³Õ¾°Þ&~µÔ¢nì¿ —Ù¢U н-;X–¼õ±¬w™?©‹hµ™d‚cdž%ÇŠÑ®’Æy£,s†poÈ�Ò§fZÓ‹çË…Y þ‚�C>-3Î áÖð#–”¶®Ÿ|ªgêÆ©ø¦©˜l,ÉÔ�°ºÿî—Ü/•ùêùºØ «Ów¹œþ’c¸—C½Hé÷«2ñ>©ÛdJ~EMµVËs$½íÍd#±’ñ�®É–†ir”“¤ ;np¯rÍõ}²¢¹äF©MÜî#¯7ô§N.ýƶ3wb’•Þµ�“•¸$Û(ì?œÏSZøz&ºÛ||î¿å*¾¥«hS}H#ýÛLŠZßäUØ÷ñŽô’vàÚþ7ZOh‚×ÏT|_V×—©*eÏ:¼¡ «7¢™·ÙÖ¯±Ð±¢å”^ ò¹Î‘ZyH®ÏÞý>ä?U)·’ܓڧãÆSbáÒ"3’;ɘØ@u‘Ï‹iuS… 9ÖÒÆ¼Foæ$’»î:ñËé{mÒoíA»ŠÙ½ï�É}gP=¸°JI]ÂJšŽW•ÆäinfõÜî×´ @@J¿¬]û]#?ò{!oðq; ³ú—O@M¿½K?+dyå�þI:ý„vô«UÛØ7ŸýyHb/Ÿô=€V±QÝ×uñGz"( B±ÉÑÅÙx)Ãäì”~�ì�%ùd²³¦@ËŒ{žÛ}=°¤¨ÄUtPž6ƒ·1Ä• ·{ÆPZù^ =CoЯîøwEeîÆœEhî.¢ÂœÞ.õÞ;òm Àì&vaf߃3ÈàótvyKb¸k5~¡Òg·0=Ê‚lLmº·6bT’1åƒQEî±7í6|õÎèöFÉ7 !yòvïäi—ÞÏ/`2›aw ÿ9n ø_Õpÿ£ÒÅÝPž,þ”ö¾áì΀�µ6{—³)"/í5-«±ó}«’U`‡¤Dñ0zLøò]r×r °h„:»3Èž‚ºGç 7ž9jþq…Í{µöŽZ�gï)8órµûÀ¡¸ˆûZÞúëjð_ ¶Jf°yࢢÿ”Áàš(F¾J&žèªnõìW šLš¼ïéᦪ‚)§s^{®I™åY± îüú Æ:¯ÂÁèÂ5ã“1BÑ ¥ ¸‘�Wqy¥0'ùz�9°2]~X¬®âGgªÖŸ¹–†±¡�׸õv{½ªJþfA3�/öá’ìë¯T=ØAŘ=•:—=»›šð‚k¤åN–ÕÐåèù ‹ëÒg^Æ“4Ëu5ã-Sq2s‹& ¹*?–zmíÖ—ÃbR¬ººá=†C)cep€¢Á§[Ñ"ð¥Ž6°=2Ô[‘8™»ÚDHÙ)JK²SsT =[�Á}ªIåsbP€ ݱÞ<’ÐW°ÍY>[KyßzÂíŠ\¬»Ü¬2ÛtÍÎë)v•gâ6ü9=2+8¯b‚’Ùà·J¹¿çó.¯ët»H‚ऩB º"õüË2U`ß©i`§ùíWÑoÓ:ÜbÂeâ§@ëÛì„I,2|ä n‘µ| ˜åM×ÔßV¢µåi=*ç«eK¤d¿H“Í)‘‹œ�´hžïª‰Ê¢U¹ÅÉ[?!XC?Ð\(“]þrd�ù«j½üiRR%ÐXO9+Ö¢â_2Td;Lä¾ßûÖËÑdHLšopnŘÿñðve4£È4`¿%hÿz|¯ª,è?bùÅÀ’vŽMLÜ|Œý=ÞšjsNoÈQÔ¦¯b0óûöaìã4è$ üç[¶ ¿2m==Ý+56Ó&¯�厌Iå]…Ì5‘øá_N®›ûIï’!ßµzšû¬!}Ÿ�ž¦ª}zLüÍm(ï�ø™×ŠiteD)茽!{aj¾¬CØr|uk÷Ì@Mo:GH|’k—œÔz+—më ;Ò®ð„”…öı_Д¶Þ­þØó™æõL 4/ïO*Té×»ŽÚã¦ê¢ˆø�*©Çsâ©sŽQ‚ø!ÕfÀZÔ¼1› ÇE î ÝË#»¶g"¼ÁFäoð 6Klø·VÁö_ž-º,o©¯^‚î@.Ž£Æ.Q ²b^œÈí$+â%ŸÖo¯Ì âÂÒUŸ8e@*¤ÁÉ\>ÇÇ’o㔢kEŠ ¦lcë'ƒÈÔ;¿¦N…·ÒI%l-pTäÅ]žÑ‹-9¢ÃÖÅÄ—Ö^ ' o¾(kQßæç§ÕÒ“æè-ɳŸS¥-¬‹&“ôªùÚ–Õ+å×»NdÚòóŽ]90³×1:öd΋yK©>�ÒKš´ÂÊØ³4ÌÜr�HôüXröö¬UæÚúÉ�HðÕÕå“଩x6—Œ0MDL\äÍb5pØ­ºûp݆k›îï2i}†µL¯qSf¿ªç.8¼k–¹J¨\,‚°öqÁyc% WΫ'UŠý!rж¯îƒ{gŸ·ûœUóµExˆ‡ÿ4‡y¦"žùÂâÃ<�[ ­k‘%‘ë·ñ°ƒˆW÷QÔ½¾Frö³ÕÅiôæ„=txð‘¾Ô¥’À�O«‰MVþÙ»^Ü50_Õ7ù^\TŒ‘ì·¡uóµ°è­4óÆå‹¢©!ôx—?Gý¾¨ó>,-;Z£ŒÅáʳW �Cú¿Qþ3ÿ’ÕtçÊ4"õ¨È§ÁÛ~ŽU™¤N¼ÊO½'jãÍ1R–";á§‚·µ[ñžÉ‹É““×O­Òí€ö8³ú3wäõý2’%�*—…£ ôN¹õ‹ÜBt‚¹'þÊæRÁnÕßµ¦ËN•q#å¢KtˆÃØÛYCLFeÈñºõçkUÑÁþåQ§æ8pXäëX¾àe×µä3{ññ>µ®™è‹âÂIž¸¼Ýk �‹®Ýº”DŒæ¦ÕmS”'}yÍøóhà’þ|5 hˆ‹#d£Q%»�*¯©èºĽ‘ÝŒxª�Ö�ÓžLÅRðú•\†>Æ£LÀ×í�eDa«Õ¶ZäYײØlÅj}1ŽìZÏ[žçHc‰W²$åÎbÅ1a° í«�tˆ¤ºÖZC:ô+QGòE‚ªÂä*ÏKùóý<ÿf�%?Ê?‘Æ×·!Iù›ïUî·5Læ¼µ’e}Ÿ¤7t$¼Æ( Ç7GSï}©a¢Ræ‰ÊíÛH3*o«:­åºÒ½ëê �ŒÜCKYbn0.¥þ³gìBci3ã­á{›7ö¤3þ©šÃ›*Rò³Ö€Õë̉xÌG7ÅIÌ¿¦Oï$´Î5L€HúÈÛ^i �õ®pÝ®¦)÷>»ýð—%O�zð*x©$ˆDÞ°R=|€Ëbwpí0 ¨¿ÂV“_é<bÏ-8Aç)‡òÊ�ÛêÇyÄ6?ƒÌ–Rħ±vvpL1šò!¿¥m wA¤ûœK PkÒq’;ë}åD=#u¹l5V–­sÑu¶øøÓ|ÜÝ"dMGøX ÊÄ<Æã4Æ nt—6Rtàó!ËOHž„‰,‘¹’|Ù[0÷1 ý/,)t߯B´ÇÍÎ4ê©KÞ¡rõzÐ!±`«äh�„çüÿŸ'|²è-� 3¾ d¯P©‘á (°leò[|ÚH¯@3À-¯˜Ïºµñ –lÃlâù'ÜëñÂQ7_ÕõµæÜxñgÓ‚õWs¹œÝŠ´Í‚…\‰©šN‹QjNR�{\·*’»Qºªîó«šhÝ '�˜Šq iãË9R38a—äyu½D¢øNBJ«í(o.RéhŲJ`®Y,¤,0\¯8t8¨Pf¹ £»(XÅcbµi±ýÏ- .ü¡¯%’4ªé7|ç¸Ç¤Ř+ ¹³´O.&]Ó2 4o>…Ëü®šJ{´G0é‚3‘ŒP.5»²4søÚ{GCQÒ ]ƒçA2˜f¢$Ùb¼F tì—dAÍkdQ‹Š\üT”tjŽ·tí+-ÅUôF=¢Ù,•)öR 8[Õ\­t�0ºZpF. qË�¼‘¯!£‹O ç2K51ª3k/#©P¸T�S—[�ÈÑÚ.f#tZÝ´x G®B‰Ë }ùµ�ŒñŒ3ÿ<žV› 4^V™øZY(U8üÛ‹]Á®àʈøq>çSå‚–êH÷j@*”­�÷»`.ô¬ªê!fp{pÆ!R¹V‹!vójfäâ-=HW©qZm1.ÁmºLƇ§[´ëp£ ¥Ùm±¸•zäY5÷(Hú̹)…q83Õ'â ‚Ÿ_6\·4jÎé8×óÎbÌ0”‚ÓÆ¥m ‰ºdÔN$·ÒžçÕ»u’Þeó*Œ˜XymÍ!‡1 µ+܇ ›ÄSlVß ‹ EnáNY“y½¸Øï§Ô v™Æ¹à ¨ª¸ÞØÉÈ�>¥6� ~s“ïÇ׬D8Ò%{Mø*©MÈ­Øñ§i˜—¹oÔÒ@t ´>ù]ÁQf[­X1ÃpªW„8-ôÚÑ•ì\ñØêx2™ 2£5qƤº‚Kwon8×– Þ­¦´�Å"eõ÷&É=!9Ⱥ1t¥Á|rù¢¬#Ë\Ê2¿ÑXz3e|¿ÐÆ’"PQÁ26œ§z×Ù�j4a\gë™|ƒˆC¥ #ºMøTÖ'™´HäcÏÀ> MdÁêU*ZRSauçÁ®Ðj6nëŸòºÚÎÒû]-Ó‹šv‰Ê Åô�êÖ…Š’ •È(_t:\öpS-(¼NŽ‹rõ™—ŽËwêœ+æ•ÚÜôdó¬ÚÓ°±UµŠ&1K‰ÑéUÑ:mVýDL$_B×&[7Ú�hÝ.'š÷CM»øÖ•›­¼kµódRH 0YÙ3À@|Ù µhœ® ï)žÒüúZÔ]ç…w øõáH‘Îþ�¥3KgY»[4õ( KXF…f2Ï.«)¦°º¯C¢ëÒ`$p{…õÞà‚ÞÁôK—L ¶÷1ºÈšÂÖàì${™úhØ~!-"G¤@ا·çФ¡|ÿMUÝðu8Ë¥QÌ)JSëâjÅ2ÇjðÕº¾�n¼œ¨JͤÖ|iRD2—²²”ËöùºGN÷OØ{ww¨ŒJ2ήì X¹Ÿ%ŒýÂ’_ÆN$Óž¿>Ö~ÏIÄ@)Òw%C 'Çh¯Öö�báH_Hºçü üEÔ Mi6G%ÀZ‘•`ÙËY¼P½çj)-*ßc/àaé6Æn¬Mà¤6Ð’6\ ËÀ>˜Px8h§#2c¡rNÁ‚´�Èó%òäÈ D®ëåîÃUk¾÷HÕg”ÂÜæ“�WÕçà Nܹ¹:„«ä íð%b ²Bnà/6ªƒvÿæYÙhýî>”´¢Òð@†Uo*g½ÇXš¶Õ^ThWÿÞÑ-¸úš~ôéêK¹)½Û¥dn«"=[Ìiæ¾®„l=œTqnèfóK—.¥x½Õ±T~V®»y¤š’=8¸Ý€‡ædYu¸©œÛÉ1`ÛÖ»Àv²uh¦ Ñ›±‚G™Áá³ã¶øêL|q7ô¸‘nt¥zç6%ÿ(R’ë[…‡B’xgÇ&y]·øò�4ú9µ¬°nƒ6WŸU�µdh\;GUý>ã¹n·:Õe£†M¶Û±{HX�Üo™“ÜB¢°ë‘K‡²êS %…ô©>G25Ù\—hïCòä ™f°ÆŸ*(™¥®6³cÝÿD!G<4ÀŠÐS…à$.UyøyNЍÄiJI];G~S$NSÊ[9‡¡ MUIpgëïìùK‡>.Œ�/Ê­(ä?ä8S úe££Ao¿�sAì� û ÔI®-J g«V‚Î ,¨Hôõܳ·›[*kÔb)Ùy0¹ÀX¸™êÜØKÚHM?ƒ®Ïðýpx0JFïŽNÏOöþstún”Œßï%g{ûoM±QÏúôœD^j;ç ß>ž­BZN©±;1XiSB°ã]ú�ðNð N{pmÐê7<ÙÎcåä´j‚XÿÄHyó'?3ä?žé/ê±‘Šž…<×tš£ )ËÓþ‹/¸ œ¡ä/=E7Ÿ)ÉkÎþªÔ«§ÿ¼é ©Ü\^òp¼QÖìÛ.ÊB­ ´Š:m›Hf63Z¾ip¾#@È1qµòñ3±÷æÍèôüÝ^rz¾g¿È©~AÅ.³r5+¬>S8`yy±w®Šp¬®!F / -Ãx8#y&®ÍFåR·èŒ,rà(�vØvòÏGG£}Œ03‘ø°ýÎ-þ´n­óðAnY|}žä¤Ø„I¬i4âa‘iFMá7 ¨¹N™ UÝKb¨ÂzÀaòw¿ðu¼R~^óuµ‹ò£œTŸ.ZDÿYÓçâJMÍ‚ /W^Š*[’ ºÖ‚ GØ.œg†³. ýq<~ËŽ/ã *`aÏàÜu}�¡»“«ÒNÛ0qèé‹•1IfÜÝ)œl¾g{ú%·±D®-«³Pê¤×&c§‡töVvS:÷)¯¶…úÁõ€®Z¬Øl9g[ÆÓœ \Êß�Ò�RNQƒóœýr?Ù a)ØÕº\ƒÄ«³e,hF�ÑRFÎzz½ ƒ–sî4wîQëË ŽÊ“´þÖâö´Q¿IF¼ÕŽU´ˆ2沈ú€ –¾D¶;þ#?W %CÇìކ¥’R£0• pÓÍQ䟌9wû&õå³j}d¾×…ûÀf¾”;½&{þ"TÝm@ Xí=^ßgûg¾h€uÒÆûÕQ�ç{AŸ3X“Ég0EóÎÀJþó«°nš´ö}sÔÁÑë<.XÎ 2î¼UÆÇ9K*Ͳ#)Y ¥f�sJc‚=Pog@Ïc�£³DE&ý"W-Œ‰®öþèàœßo©v?ÏÜnòbçåΫ�o‡úÃóg/ñ3ýo÷%ýoiL»ßÒÿvwŸ}·ù—Ýgßþ¾)‚‚zaa„ÔQ}ma!pÏÏ•�@nA¡‡DMVXÙaïgQ‚â^ÒgQ¦ûEv£L'+ªH]:'!¿vøÀ…Æ»ƒ×LÞÁ�ýi»t^kúGF‡Êü¬iE’M¤…Éü FYoÿÆ´š¤ÓÝÁ1þ“†7œ?x#èê^Ë�<��Фr^˜À Q#÷1ÆNòÚ'#Àf�%†ï h¼ÆÏŒVéØÄxîµM™¿À3?ø÷Á}¡‚˜i‚š)ꔜïàÃçÿq+ˆ‡IðÎùdqÝÆŒ3;ªv“ýñ‘zGTQ$‹ãIšD[•ì*FõbúÙÌßÃM¬®ê�aë�ë&4ÑrYÉJç(vmð¥§7F ,º¿µ-¯ï7}“iµ W–á½æWÈÑ‚Rvôë/OÛÛ‚)ÄZFÊR�:!XSz¡Ú©AfM!á;"bNOÖÑl_û4Á£uóY~î÷χɷ߾êï8¾³É%ñ”ï%ÛáFXXu�¤ 6ß‘‘Tw«’ –!L2›"]i&{’Þg%šÃ&"›‚=¯]êÔ¸'¿$D€k=n[ßã–·üñv¹«„,ÔÔmjqI÷OOÎŽ/N“tmš¤8°^DèX®l½+ÍÊâ•ÏÄ*r\óúŠË€ææ‡üjÌ-HÿŽ,§ä‹ïòÝþÓ›i>SúÉ>¼ý§=Qv¾´fºù)£ º(�9d•÷qbâ¨øŽT:‰Ÿæ�Q–éd¡ ”Dt®îäz-U¦�¾X|ªji™Ó—–l%ðî +>ø>G‚À\°(œ×jçËÍ.“Œ=ùÂY»¿æL“hj¬æ\6†.?<¥­zƒmä�’¡qs8¼¿2Õ¨ÁšÏÏ«*ÌGÇU}ŸÀ˜™äzÏç‹Oi02³ì¢Ý”dºÆü% Ñ—Z2'4ã1ÛHV–7ù(ØÝµM;a’ÒÚf€LõÆL™É*k¼»ŠuRÎ0|N—u$ ¹Õ\FòOVŠŒxx†8ìȯeõ¬�X{:óƒ©pÁhrEjkfŸ˜Î®Z‹3::W©¨ì<ãlÇb Z§žÄºp–²M!øÙøVB—yÀ˜‹ÀoéÉåªmKèÖ߬ÙUÄ•'0^*:‚>…M2î«×Ã>H’ý† m1Öσ×�âŽPÔ€ÍtTÕ›Á6Ç‚�ñ\zŸŸ)앯fY›fOó²t�ÚVDÒÓús …�±´Ðo÷p ŠTÁ´Bâš×P+ò°L“=h¼´ª6i9ÏžœWe�Òïã@¿ã•ê¶w‘W[‘)O%jL‘ý­@›Ìu\šÕ´,��òal׫|�çLóÒ×ÃÔˆ´�¤,ã0•¶¢ÐH¶ÊüaÀò�`S1»Úx~0TËPíÃÍÇH|VòËAvÅ J)õ—Κ÷Ù�'r<± ƒ—�uÉEOÖÜIÙ\I�9)CG$ɃâQ�ÐMZ­øÜq^ØJÛtŬòl0­Ê,8ó® s²ÄO×Û¨Êí,G°¥£ Ôšg�÷¡t¼ªjÏF ºkúƒYÁ̳²�š-õ YÖõ¿¶1› ö]£ÖyŠIQá ‘FX�C%*!�Z-˜}â2xø:FÓ Þðadàá�”ç°Aõ�î…½²zšYÕg�œ}ú°Ì�Že•÷ŽËbßVjn!ù½V®Ïmd•3â ••ͨ·éSß'£ íü¦M ¾³©'~0D‡ðš¶ÊjÞâ'%½éŠŸq…9&¡£Hž@B‘VþÔ§”5ê<•'éýÂÓÅ^heCvà‘þ/ËỄLÚÒËàÇ-¯rCpõšg'9“Bö;‰ürJLf‹åxõhÙÈ€åÄhéêÇ#eŒÿ‹¡5è|4Ͳyi��L˜åBsx¬æp³è²aþ±SƤ®Z3ž ”¾S$^?úÙ¤à�ÿ‚©7šs˜/c4ÚœGÛ0¾U[XV˜;R,êÈ»23—ÿ°*îÞÄ鮫žº¦�«R×$Ï.ÓHmòTÖ“XÎ ÿaÀþhº ÂÊujŠë›„È´c*$§"AˆçËb>Ç´Çò'SÕÖ€:Ñd½ªŒé‹ç޶©]ùõÄnH{6ßîƒúè±·ã“«ñÜÃZnI­rbûr<[„Û_l.…(ï>ˆ ¿¹l’h¥Ê¤÷˜%at‡«¥añp¡Ž5ôâÙÁë@Gø$z)úvÓ¹ÕÜõ¼Tl›W­§¨ýÉÀ.³*Œ»²ñ`Q^rÙWÄ϶®{oΑ¡ái�¿e‘{8ç<ç5ÉÁ¯ý ‰L‹ËÙ}!7ì%—}EM«‘ˆ£ä‰)]~Úh�•šK.œwÆâ,V\$÷D`<-Mfá:¦6kwÛí ï)·•c˜ÞðøÈ@Í\›Yzë¥Êÿ¯Ÿ¡v“s�«ŽéÜlMÂb5›¥õýîÃ÷ZøãʲÈé¿‹%ŽMÐ37eF3+ﯦ�QYŠÄeõ©"Õkµ½×æñÝ9–k/7>_:ï­ÉæÑi3¤OÌe V†¾-ú$Œn#:z{Ò¬ d?H!†t2xÉz€Ùv(œ`z}ö£’9Z«ÖÌñÈ6žvöl5åtz�MÑ’Ü㙈^åya#*|ý˜X)¯‰¡2ç.Hù<§¡¦=ÝšP4àY…mbª/.|»Ò+-•¼T¿:ƒÔ¿IºZ¤&å�~+iªüá'é"èեߓEVKe@É^RÍž`)÷ÜE;tû8$1ãH5Ÿ½k€È|ßÏàN郎6ñ®€ª˜¾Ÿ®§ÂTæyÖæ€[ºRb;ð‚A=ü|œQ´^‰ÙV­Ò /ó�8:aê䉖-­ô¯ã\Î^èQlÉîñŽ -eÿ»Äcû„C€J‘í¢q¨Æ“(8^K™"¼ÄáDÇÛtÍ÷s öU©�ðˆíæ°óEÕâXÞ/MZUëôD¸:ÚÜ�³–‡¢^ë6ˆ”�k»é1Z(eZ3–ïËûjµŸ–ã’ÑoN'Þfe.Î¥Á0Àè^ûþ‘Jæ@?¶Æé)ïõá.­ ®.š™ïÛ�²…ÆŽg¥“‚vþô�¥¹Œ~,ŸÝÒƒÏþíòÈŸ óÏål>Lþmg~;ßìg48ùø^Šù5º¸ŒP€î}ø0ÚóL©¯¿þvíý×vóí)8ñ‚ºn#ú¼ç5ÂVÂLÍòe] :-øÝ�ðpÐ3�k©µ^Îýžû­tx«×ñ%�ßJÜE-„^kºŽÜÈ»ƒ~ÕÃJOγÙ;??_ì© gÁÿP”g-vpLxH,¡_BÞàd¬QÏ�ñÃëò*ºÉQ¡¾æÚ �_g À Þã¢"Ä�¾�ŠÀÂßã0gˆÓMÛ¶ ¬aŒÞ¥tˆ)c4® iÚ§ShõW̪QË5(Í`<+Ö¥‡HU(gƒ&Çé&ùç*ÿŸ¿ÊÀK,`?[viâ=×7㪴Z+/âÆë� \ î�¢àÑ U\Áv�I9©!\@0jbÖ©újtoÙK ©Ð ‡Ý:Ð|[IÒ™ó�Öûo’#„™²mUÚ¨–D${.Û#¡õL™— ²â¶yAÝ t¦ï|&“ݘ1ˆ@Ih “*¹ó^eÓ¦�Ï&a,iÝtSVí¯pFã±ë�>îíñØ ‡._ra+©?öY$•”*ƒ Ø`­i1BàËb[§·Èô4ìºkäÓi6�¥…ˆ„ò|bv ãí$±5øžKá�é+xÜÁb‚ôê9Òë¾=9Gê—ô´�¤§¹}»uÞÐÝ6áéó}?fùuµ4HÞ]Û7„,.Y1¶aÍÞÙ o~9þH!Ñ¡Bòƒ˜ÂÛÜB3_ßÏ“#ÏÓwªÁ¨ ;\Mâ*°JS©ÑêVŒ>ë:7 ºýÃýrJ¿‡¨­&}Uœ¯óöV.÷àŠŒø]ž·c€gOf,>¹Zúb'¶ŽfÏxD^î¹6G¥£ýÚHøhÞ&ýÃ5û¨“TûýŠ&–�–Äó"w'ê6W…Ÿª1kÇ�ë�¿o¨RGz¿à,7r(¾7ލV»J·Õ£æÅdÀ56[<Íqãi7þ_"y¤&&¾OÆ�ϹۺÛÔ‡Z¨Œ‚F#¿ô¨‰,ÂíijSÏÿ:“Ù’¤Ê�…æÙ!üè÷‹å~üö’@V��& < ¯ë{Òª�fÚâ>ž†ìuÓÐ YXRIü¶hæàl@)J"RÖހ$Ú’NçÖM“o1qwsÔ°Þè�ºØmL­ÝSáÝ —AÐä·Œ¤:Í•œjí•`†1p¯tMEcÐÈEµ˜sd™Îš"�š·…q³:íð4I¶Ýõ>¿Ë×mÌ9pmÝ¡UÎHδüDkŠ�cálK°IÏ^�Ç$G‹Z˜„xq®}úd�çˆC&Õõ#’– ƒpSYCVÿÄXætës6ÍÔ–±9f^‹#Vÿ„¾¢0Û°PÀ;ˆå�N4“§fµ·pÌLÀ<‚-qL‹¼•ßÿ¶IÀ3`xb`W†\²ÿÕÔ%Ðé€ÿÎáè$ )©²Y¤š4ZçÝbŸþÂ9™"Ô Èl47}}=<€zþˆD”/­ê¶�zâ<¹Ñ‚x[îF 2:ͤ"¬Ò:ƒiaO\ F‰& Îë27ûã?±h Æ}ùDò3ßOË£"œ¼rœëaó$ˆ 8ÄÓ;¤É¶ÞÕ(áEu‘‹EŒ½i\ÛɆ€2�-+xÇ–�u*ˆC™…[ÏûócoçõÊ¡“�–í…qðG“Ê�z/l'kXaæë {kÉÉ•"ý’dÔšõ5ò2W¤Š6ÎL‰[îóÙECJÏŽ•‹(&AÅp…èœ[&¿Ò ›1¸4Rr]8Ì9¼ESßvȘƒ.µ…êvÿ ¿Ž!qm¢¬'³EûÑÜ?ƒEG¾­ür ¨æ”«DžÑþ˜üé]Øsa#µ‰{% )öõÃ8y®ïw¯:ÜøÒjnòàKƒÀ �(>ð(ÆCÔ«Š´sˆ©~6hEÎR´>¤ñxôE8ùîĤ¡|Z¨÷}_hÖ`SݦC!a 1“W£ Ô°ÌXP}‹>—8H:-~o*<Ç‘bâ]îvbJäéÇòiS‡‹ÓOÀ‹”ÛÒøþ¤„8Ößuø—(–úTtâÊ–!§bžþ æAë3Ý{frîPÅÁ49 HkÒ¨­|¶��„Îr+¬áU²¬éþß¼Ø;¡:/ÃÜ7_3^ˆZ` ”.8PbÀ¬—¸âõj¹ç=a2€©X<‚5Ó2Ÿ�ìKJѬ—2W‘%…HTI|Z­È�§y×±Ð^BÀ9S#�ƒøó|B·÷aL-qøj±£åÓ–æF»¿Vî�µ/C%x¤èSSt”ÙÅ‘aȧLb¨`$Ø’‚ìꦚ¦­� Ìõ’M?�.Ð’_¬/9«²�ó‚5ðŽ+Çä¢:£ ر‚÷¹�òLš “|ýÂb¯dêÄx´w¢LJ1«†‡Ö* �Æ[çò"åt*0lóí\)fP‡·9‚Sü¥—ãU @&Gá‡ÂÄÈ6T,›=3‹ؠ]IX&�:ŽÍ]¯¼³Ç$Jâwá2¼�H…@¯Q ܃¼Ðp?pUü5©ZsXØþ�Jj.F0mýHFb§cĤùKqóⱑ…P=‚~yüú; ~ZGMË‹ú¬XƒW£MÆ6îÀ–C>+C†‚V›ìüJQج¦È¯|Ô5i§Ïû¨8úQÇöl {.°éô£ÖX�ä ôÁÝÌ\ô¤±œ±5[aƒgʼn½–\ûa=Å9Þ[Ÿ×J–NË'†ŽLlÓx¦w»^h_l8φ÷,ö&æ¨ç½kîqUЦ0 Kƒ¾;ð±˜Ö�F·!`æÉú+ ýäC‡bá"%ý¶áÿ§—'4fõѦ�Øf4³mFˆ Ë0ƒ‡n±‚>„VèLÔæž¸ÌÃÍz¨µu‰*çU›‹‡ïŽ-Ó–½KœäðÛùêjj ]<¶…º˜¦$GM,Ž‹Xðc*lʌ˯®Ï’R@®ÏÓ@*é¾n-µ¬N |k)T Ñ?n1¥±¿ØêÎÈaó*Œ}"\3øÍkWÚÏÓHFSZ6$…õ›Ki.ë±LýÚ£è²{ ‡¦²Q¾bç,mϺ%—ñÌ/~À²›Ð+u“nmr›zQÞN8$I9ù»Ôœ#£ç)^ÎoØ�ÌÎ�3„¦(ö%3›› Á-¤ÉÁ‚Óy€÷Öyõx²¤"žÖù}¼Û7 ¸Ûÿ1úþlqö®I4EÊ fÁêŸ(üÕã®ûÎû] N–F±€¨R…Ñ¢lí5.® êÖÌ$Ÿ¥7ØÙc¶Û#Ðgbcz”øÙæ!‹�# L˜þl¿;e3ÒïdÜ’m=•_{&$†}ç×3x9Ô¿¾þÄá!=nU™’·^°ø: ®£b­¥† }ÔŠúÐ6I쨮fšó íSãClàh<ÂŽ9�ËÿÆØ¼;õ‘ ÙDªúªõûU·.â ðÔæ×ÿ=–ŽÎ÷áçH¡ë_$;϶–Ã{ŒÕ™(¿]KøµEVÓ6•Ax:»LŽ,dsdëFL`üÖ¢ ¬"k ŒëÜA>Mï£ÉbÚG‹Žóõ=lôFÓ�4]²Õïã•»5®!”¾éû-…ÁîmQ´ >¤y;Ï�«›ÅQU·U§!ç¬ÀT0²æ.eÎÿ Ÿ­â¥øcsÕÀ½éj²z,ÍÃ!²[«jßo§6Ùw’h½ÇI±˜�²/b YšuVä„4øF¸³†™µ¿ŒŽØÐ±RÚ\*CYÉÝh)pôî¹ðuâ?ÀߣtºÈÏ*Яߵ+Rå]QI1-Ð! ækÆ@t²ª~ ÔãZêÖ› ¿­¡ÕZk·çÛÑÆfüØÒÓ{¦Ûlõ€�€‰Y+}‹J)ža?÷YÌ>osØéB}7;òÑ[‘Z<Çý¸Á‡ÚØxÍÍû :íâҮìÜ\ÆLèqïÛUíºüæ}ý¨lïÖÝrÞŽ�è#áoLKs§Ñü[4¦ºs£tjL:gÑ)k'ðë^tÆä%�ÿwÑH!¤},"|ŠRÛ¡¥ " J¡£dhUÒmTу¹j³ÊB 6ÕÏŸVa (èæâ7)`.A‰cà-ù¨¾½üó06HŸà[ܯKU`?JJ}+¨Î¼Ï®Ç[…Ö ž,×ðá`4Þ{}|x°;àŸFÇ£‹½‹½ÁðøôÍîàüðÍh|q~ ú¼S¡Ï;Ýß§þytLšÄÅáùÉèÝÞ†ûÂßîñ’>?ÍÓë1�<½+nlFªÜ‡‡w9ëºYŠÁWàÄù‰Ä†BBcÑm÷ñ:‚©Ë(?*>·¿bƒî�ök/‰Yس?#½¬NâùîQ>†*­I;hj{ÀS‹¨ní—À­éqUKM¦%•Ö(BzuUiÕŒÒm€ìøMÿ9Ïçí%\£„;ØË�ærBp[!÷Ô=Q$羿Ӆ�{†Œ\Æ à™"¹JBwŸœ½=kÚ›üë)üñ”@—ÉßZ)2Ò?²W-Âó6÷ øÐÀ/ÍÆËyànްy,×Õ3O+|Ʀ2»H§¤Ff÷µ¾#÷¦00ÿ¾,·ƒ6,\uþ×j5Žx ÆyaV™Êéµ× ì+[U'gï„^.-èkÖ­×èT,Q›ñ&O<.®·Ìòkúý2} lSŒ ¸ByÞÛäfGÂÊ�™*{�ÌÜ\p§´_xý"H­Ú°6ë_œ¬…¶ «¾æaÕÂí1›/略�Õßœlk‰¶¢µÍ_ì^ý20…fAa! ÙgNÚ©oÝvúbݬv'µfE»]ó}CinWÓœÿ8ìú®M=“·•qþbù£x¥Œ­³q¼?Í9òð. †#ÉøS�Uv^-ëüêÊ�⸰m“• ™Š *TŠ–f'ì�²?ÃWKªºrìÕÛêÓqÄÅ©…Yœ€_²r5¨ói•fÛsÚfá ‹û|Ë…ÈWç’VX]i¨‹ƒY‹t 3|gà—‘ì¸h”–$PR,°é— €ã_Ô?•�7 ù>"¹û JóÒê•[Â`œñ–-³p`þ´(Kãx¤ÅìXC»ŒnìLd ­&GŸnQAËØƒ{ïþKpIãÉÞñ{ç‡-š=tvzqøîb´w|ü×Ë·{ç'Gï�/÷ÎÎŽGû{£ÓwÁåñ¨ø°gP‚�zÐ]Õs3>ݧV/ß½½;<<½{¾ioòR/àØ¬hRÙf¿x{~¸wqyñ׳ÃË÷ïÆg‡û££©ñ½FýþÝ{ï..ǧG±ñ�«ë%닊ÀI~ª‡t�^‘Q�ÑÜßËäªZ–ù2Ùÿ_ûÁS´GÏòŽpÏÉ‹¨bÞhÌè³­-56ÞÌü¶Xܶ7Â�ÐÍÛÒÊbžÎÚÁÁð‡ý—.aMJäÀu·×| mz3×ÒÈk·ôŽ™£–Üöðd´={¦³…‡yÐ-ÏŽ1mm†_[=¥WP©ìCð‘˜ÛLµWfqF²�ä¯$^¦—°ßVU¸„f<ÉÅ,��Š|WDJêäQ(ùs}Šw6pÐ æð—fy–•>¿«ãIíC*m‚JKÃñäAš�¾âõ§¿#�Ú^I¹# Žï�_‡„}O,WTÎÊ”¯7»Ø¦W ¦QÒæÖ<£pd¤äÑØ‘øôÄ|'ÞñÛŽ »Ç–�ÍçôÐs ½pp«;NáG¸uª;ÆÿÞÀ¸”½Ð˜œÍ aÞ~^ÖUp$–ÁSl wjlÃLg è´Nʳþ&ž?&eðsòÚÇì¿k·k=mÙͽù}{nCãmI¬¸ñ @µ× F–´ñ‡²›Ÿ7›ÜR׊ErüMr„ƈ’Ìô�ýÏZ‹­=U¿ƒØ^ïÉÎzÂcã}_“¢GમcAaÍ�Þ“g%?Д´J'‘m¹+#­æÒ�EÆI-Î5˜š®}Æ@”ªE­‰ â©©›¨B/›7dÅw&)âBÊvåƒùŠ1{ B £Më¶2�ð\æ5W¢Ûœ>"8˜Báy‰Œô™ÏWp›Xùƒ¼‡kd+µÑrð'|ÜË0îËéÅÅèðÝ(yñíŽÊ€AEÞ\E"ÈÚÊï ýà |› 6IÅOç~FVƒ�³xÁox¡#féØÉMŽÝnÎælûWaì{ækE »â®ÐMï®(P½)Y«ÐìùìãÉoo^•&M~Ë?ãײ+èæè;ë›bé´ÜÖV0™=N_k¿Ò™lÿÆæi$ós ŸÛÙmX&ïºÎ¿®„ù‹ä4IuÇçÙ’ŸV�puN»½²~)X€l/ýÇ]õFÔFÙæ|í„ÀhU¢^›[náëD\ r°ªIºŒ—a'Ö–VxÌ€×éBP1·88ÃuQÇL� ¡“…\ü´;Àu;ªn<ÐcƒÙº4Ôïƒaê¦fwàf±³ÙlÁçÅ�¥z3ìægh·Dhî?‘áX}¢�9Ñ\sSæâ™aÌ×:+€ƒ\s¶Àj¡Ì^œ/e݉i–Uõ¬ª¤™:�uy`Ü3ï"ˆ6ld¨S‰@!hN Ò³§lM\„©¬ó&Ç\ö†ëkUiD¢áÐÜôóî´8fô[Ðp§«›°{çŒþ²M¦›$ ´8¦ø³�YiÁÊ}÷lïWsÝú°”_6ð¨þ>Ü/�óß’Ù1aŸfÓ}ÛÇ—ú÷Úµ-„`Ç6lŸÛÍ˪Ӫ𲩄Ñ`-ò«l4ß!­&|»åæÌOšÌî›ÕÕOa0­“ûñ_Ž]ò;Éý›|Ê*c­eCB úú„Ëi˜ ¢r8ˆUò„dÛâc’O&;O}o¯Á0嵘«ÅSºº;Löƒ–=ï>L‘­2|nÞ¦5¶yvööÌ(¼úFuä{;ùrüá0K»þ±Þ娭QýcÚ|Qê›+Òûî@ò7Ö°{µ� Vb |å+M+ó<š<4nä³ô=]t‰L§¯ó¶ñ&¶Ðü›�=ÇVÝImñž` Z„`]Y »”­sTëºSG�»3+üw™y´á³X‘¾œFpkšºY³>×kµ2åwiƒ§~`ò’ÂF‚d5†Fo¶Žlíâã“ðÍáç%G³ãp†ŒEV—™€žZãË_:Š–o5;Ó �I=�†Å~}¿w‰Ž Œ¨’xºáîôÐã:¸ |ˆƒî«€�|H,T…òTm\›×–´¬° /HÍz ‡.5b×(.aq©&6~çAc†TèQ{ˆ'Û?–gí�>[-êg‹[êß³ôŽ)¾>Ø–»bgq»Ó|Lá’>’Üö;¶QÓ¯§»¾#¡« \­)L}nbÑ:ôl`Þ"+óá²8ã·Ô•µìTZ-×A{Ò™: ìÔ–Èâd‚¼èÄñÞB›Ý&ZøŠ8üò¡6aXIlšqu9�ÃØuÕÌF´/å[Æ »KW³¼6‰rH†Ù­ŽãéÖèÌy²â¨c-S{!ƒR窦|z;¦èLqâÍ4ÓkSCQWˆí0+»É‘8b×îC´çy3'Y_³š¤ãÇéáá|Ïë‚L; 8s&Žåëah­µòyw {ÇÀ ¬%Úäî‘7tÉT^ç8»GŠŠT¯Þü¼1{8zï¼ UË<Ú �i‘†Ÿ ÞÊÄ£fƒtþDˆÔ-צz õ™ìXY>¦‹T|8ƒ¹Ãu¼î³>V=j½³J±©yâ>‘–>� ‘èdq=’ü ™œ .§×Ù¥)îá~,9ÆÜœôþø(Ñ_ {·‚3?.Í6pp}—Zë!”üÜ‘TE?Iò{Å¥Zùä#çL¯‰•°ó®€ì U[äbÚ㦨nJï ®%ð&Õ¸m|ûúçób¹Î¤Žƒ"U8D¡»tšztú¥v©±þô,ý¼/aß ‹0R OŠê ­Ð‚>Ü(3ðò–yá8þ„'Êپġ6ycæ%ÙÖäd/º¤ac\†Ù—÷Îú¤<²ç]áëçP®Àë³ïÕ1S­ðN'Ù™<ѽú´»g‘ îvwØÝ–rz`kÚìFÑ Äx3ã}ÞN— ¹�Ó­Íš�"gð~Iï§­e…70añÊ}ïcû³ÐâÄVçœ�s¶X˜HY6Ø8Lv÷ù6¸ZŠ8�Â¥äèÕ¨ ÖþÀz â'ÈȃH Ò¹NA9Þ|[ÒýµÊê˜jË}NÛ0_Üv�Ø)Pº¥ÚrÁ;6+š¤YN ¬,[ bæM¦Ë„Ô1Ôóh9ñ:ŸR>ß�áþž ¶9/9˸”Qšç,Þܨ­RÏ6ì�s@‚YŒÂ ÓÍ1==í^�c­½†B"ý´!èV•�U¢®ÐÆ�ÍM\þ¸únÏ>'­›6@0µÕ$ô ÜI¥ ?y:î3 èꋨ›u³»’±^f{YV,Ùfí{Zaü±Yr6–×׫Å$mœß ΘRÌ·p£Þ1Á¦Ç=p'W� ‚²ôìÐg¼ð¢&@|;ïÔÔl�íºß{еGáªiV$ìfsRØ'•´°®óŸ¬› ¡zH³�¶=�†®™ÿø'sUx\e}»-W¦í{¡®,·�ÐiËÎìpÑÚ7Ÿ-N†B65ç�®™ M�¤ãj 2ŸŽ]|ÂäλÎ@\þ$w�ÃùUÐ7Eô šV<³P©|,¿ ¾¢Il…ß¾~‘óB¥Gôúo[^g†F¶,÷âw‘,´”u—B?#W¼`Ðý.¬9Óä§ôÇÏ` ÑÈ~Và '­9éá?´Í@ªLÜXV“Ÿ‡/ž¿  ˜r“êð‹µá¿n‡¹ÇÕÆ¤XYÔÍf·‹ü"¸Ix•yþH“¡9±>jžÁá�a@ ÕTê¹_„·ƒmÛ;:‘7„Y]zãNOM6Î'æP'óðäðüÍá»ÿÜÛ53é`#I Øäƒ\å-»5WмÅ:AIÇ~Ê|¿êï—n;Äü…å0ÇDùO\|˜q½H Ü1¼d>ŒÆ§»Ím¾Ö;5ØÙ9kc±À—I}ГÔ/8ô{Üû磋Ñ>uËßMÊo•<�w×>EO¸âª¥ÓeåeóÉÌùãGV=3U�eИW­]رþ�_%O E¼ùþ·ÏŸFåÖùùéùap ßî(y‡r qÎ] ¦÷é�µÜìÀo¹ÁmO |x~![0ЉW¶©÷UÉÄÐú�|ó{¯~û4&6ß�^ŒŽFû᯽l| mŽCk2õa×Wv(äÌ7e¾kšŠ ÞÑ»£Óó“½ÿ�¾ÅDíÁáë÷oôØ^Bת¥b‚O8y7_v^ÊÇþž/y%ž,ƒsÉ»û ÙÒñSX·�9ëË¡Â$O~¨êì )‡ÃäWÕlš“ƒzE[b(É~?–ܤx%y‘QÈqÑÖû,‰µöò‡½#‹r| a<…z.Ì®Œ 8�"ùD¶ õžvÏùS¡G%U±ócicä®ý‰† $[Ä�QÃS°öÊSº8Ê›æ”æ (C¢…U¢Šº0F<Èă7rC‡ëS`­åܳ.á°[[»õH«¥EÔþ‡LŠÈ­äF»]u~´R€M€³0î±ÿ²âàþÚDH�ÉŸ“Ë�ÂOJm5»RNÊÊj!{Éa^0.%0¼‘}*ñp¯i‰±Üæ–º]v�qÑæw•Š4(ŽW¿º“œÎ]­aÁÔÁŠ—hm eó£v«åÒ� º¼‚ó½|?8fK ȹ”‚¶kSàh£V¡ä×z¥ŸJö:€Õ�q–ß­Û‡V¸i’b>OX§À¦ùdä�–íì[¿šK—0Å“«r«ðh¨B:éFXidnÏŸîe#»à€ç²Ïò«ÊøºU Òѽ«&)ýž“í‘� F§�°™;»²d‘Y‘¬‘ReŒü¸¢ÖÎöN†^@èüõ1O©†P’ÑY‡€ïÙ9ú ‹œÏÅì ºË'ÕÒ‡ÄûZÊæ0�mýÑNü:ƒ;¤Q}£-r�Ârþ�ÝÑů´lÔ�»• Ë9s�ï)é&r¨ífóUÎ3ÈNçÓ�³˜-çéÿ(1+TD¾ÁkÝù šÁ>!Ñt¹VB Ûí†ìRá Wí ˜ÆÌw\›úH›¤Ž?4s㓎IW‹Ö|D A«OÇR¯Ýå4W)ñ·�„a³a ãÏ/Ë|!>ôIJ»×aº{IWˆ+ çŽ"ûæ×œn_ñ.‹Ï—¹všIOé¼i~{–*êôš+%xn�çÊ$ôÉm$õƒâ,�»­‘¸kÒlÛ¯"]o?÷¼ùñΓó¦åÕ!®ü_s11JNK•‰ÉR{/·K"ûŠ€ þÖ×úÂ+•±ºÑð3ÚZCg“-5m[!‡¦µëçž=ç?¡´§N°¥ãY;ÜÖvWèÝa£êÌÙøyò¦Îï�ùœ¬;9v’qá|ìÜk”±ý¸å‹’ çļ pS‰c¿Ä¸ésØð4ðKX%÷ v 8ŸÜ6â(l¬`ØK! ŸV›Ž»(;[=NW3»·5‰Õ=9üXVŸÊKº’?“ºyi =zX0¶¶ƒTUZ¨Å$oj° r¦› ©t¼ RÛ$ãU´)´‘C P0§£©¨Â'éçýƒw­6�Q�ѺiDÐà¨U~Ú,‰ßËyF“¬±allì“î2æ—î­ó±�Ûc­ÊPÒá]v¬Zm;É~ÁUÛ›þÀ¤OëP2hÅ ÈÜÏ…w~‹ËDë�Uhôä™�Û .J9˜…LRWðª)�ƒIþˆB‚,¿óJ¼À.jÃW髨YƒÖÂ�J4Ÿ¦‹ÛËJpz¯‘—mÃrAb¦Þji†€· -ÄY³>ɬt-3ÅÕ1œaÆhh¼�¾S¤·‚­ò�Oi«(¯§tMþd>/®YØ�™ñ˜eGm=!ÑaAi?KŒ¡eŽ·“L[s›šÛâbÿ  HÖõu´›¼|žœ¼Véèe„°Š«*ôyþ7€ž¯ÓLC&Y_iWÊ$—Ð6|i¦h>îÙ±µóóÍ·¿^õ âQ%MÕ8Ÿ¬ê‚DÂgðjš˜{gíçw’<2…Fë°Õ2M&¿EX‡#Eü _w³ŠÑl9gi]RÀjì |ŒÓž¤Žª¼Ö”4èñ¡¯'ÒÐ 0ªÙN»oò,6l/ôµàzªá?°Yð�É�«—/þðÒÖYé?%®8µÿî̹d˜z…ÔO±YÖ§ç‰_�o²ô ˜oˆC¨S;5¹ø®°I÷ñu�|{ç¹–°OÏÍÔt1rxËùî½Ý¡Ú’ÿ´3‘6 ½qܹ±×hŠ‰ÞŸ†¹cÚPvª5�¨-�XûŽÎáA~�®¦m%v*í,H4Ñ4Ì¿‹ÏwϸΠ?}so)X÷Ü8ëŽoÏ£ªT2ÀB‹øK‹×UŸÑ6{‘é•>Úë‘ì,qßMa­LêôF{ �‚Q+îš7#ã«™ËìêŽúš³ºY`#NÑXÏ» -’¿»FÓR‚‡î00ï”3èC­¼.ð7C�º¤K)è§9/nHx.$…“ÅfXW‰Šh×VôÞ®±iø;ìáqî› ÑÿŠÛøg1›�a·8ŒäËwØÍÞ§¢À½n òÍ–´´€� ¤r­¼I­b`@‚£®2…q™b4E³E ª¤¦’öÊ4µ�Ÿ~Á�Ñ”Œ“õä]€Ï_¼úî·¿}õ[pk°þ}ÇAƒr›¡¯y,�[-ÙW‹#Ó ¦PW¥T+Öé]>Q˘=y=%™Êá’³b¹LWåÍ-G¤I§el“v�n¶ùæ†ku‹ƒô¾câÒAÊ3wÒùÉÉ5Ê5(Ôcn-8Ì”½Êñf£.V€¾È å®|¯¦˜Ã”…®n𭉏\ýþ �ýºL¯º]UŽÅÚ"Ðê»~N¬apV{ML_±4nÃÖîå¦cà¼X¸ŠQÇ¡êGdŸ*wK§E£NÖG„PœcNòd´R9<ªd‡C‡¬?ò>«L)n7¨H:­I§`~¸0g¬¾0„SˆqáJöš-VW>ÉÒ`š‡m®êõ@ÑJƒƒjï2ï,ia™ÊWUÊøâkíé‘ìt¯£,ÑzU1…î1Ãr8½î®½ä�è ^tòêBs��ž²wÇP¸ î]’eÑØÝt/¨ï´¼Ý©é™™£|�.TÉ|ÞyÓqæöçRßÜU}!´ž7œªâ¥·º<ƒ† Ž„—AP�ê�Dù™ ñ1Øü̬n{»Íî\CÂVRÑÌOÐ3Ϧòªõ.´N‘éÊ´õó0>#iÎÝÑrÞ=qÖ1ˆ¥íëåûÓt¶÷�4goÈ�?'ZKhÇ+m dô¢24FkØ3Åõ!è)"rÛ£†qd/ b vßLªy‘*[ &“!Œ>aøXøf ®‚šL} QµÈ¶ Ñ�q¤M Ÿ–¨æôpEóAªl·�«¥%]VP†’ÍùíÜÓ¸¦¶ì=iÐÌ@ Í€®,õŠóÕØ¨OÑôb{—{XíµUe”�×`ÇŠ6š!h±ìF®¥yõ¤µµ77R�»šâ®uéý\Öj¨Þ%eÙZw†š‘ _ë7¹Á GP¶¦vlxdO¦kU{–˜±ò6¡«¦ZÕ“|ŸïTöÃd¾ê_�ž^LžOâþÙ{œí9Ô<¾öL”C¯-só¯8m¦Ó·ï“B? 7S_Ó#ºrƒVRš@�vî ïq“Z¬Ø› õ;�h†E®¾rªì7’ѳSo¾ŠGLW³�_}μƥxúSÐHB§|>'¾08~ÖÈû·3Dž.aòÜÒžlñkò5Ç9<Ý>÷ÓÚTkX©¦d˜âRìþŽ?mÖa’¥AWÄ.w¡L*~÷epóœ@KžŠW#ìš8I™6σˆ¥c\¥ðùŠ.ÓÏc1g�˜bâ8à¹@PŠÃ8q±šh¯¹è¨þ'PàÑw³l�AH±»Ý·Ç†ëÂø„�ÚFc,]é ߪXš¼'n Í¥ÂµI¸ÃØë^/8·™ E€<Ô±1ìØUõ9 aÒ¯õ®xˆfcÂ6­,ø†?a@ÓÙbïa¥©7v^€Ñ~o& ’7´³Nãß‹›qeù-ÝÊ>~òœ‡„gª‰Ú×;Èè* }lP5t(éÔå-ÔKdýÁ@Þ0d&§FXŠõµyƒWh¢ÈÒd‰âl�îí±\6»Ù‚…KæÇýØkÑø¥­ýB �]/+›|Iì:üLÒnÙíÅ87ãÂKFØ“1—8èiÛ ô�“»ú+5î©]’û³¢ ùÈÅÿ|ì˜Á î‰4"Áž(¼Ì ?2ý_Oµ´ÜÒœÝöÔÀ ÏO’ëβ^A9C­ã6û^°ŸHõ<ùÃT®ÿ©ãtHu°)V¥lÃîñòvf†Ã)a`/u?VM÷g:NœaFÄ£ž„»;&ùj“¶rEó§vÛ§WW,�’«bé7ÿä›ÏOåÀVŠØ¡)ÀÌ–á�:m}²š,‡Ž›HTwþxþ®ëª›zmÄëÉÅÀÅÒ¢œÛËR……,¬)ýy[U[ûs�ÚœàwMn@R‚–­±F«4Òx»/:›žÐ�ÅM`(u˜Á¯·’F„R†аí“e¤Ï=Ò"Þm(#�õú…-l�`âtzE4^RÍ$›Ý®þ•w‡DKÅŸõn–7 @Ê „áYAQH.!V•+5¶DíEq$mДA<îr{Üô‰Âб]¼Y Îà�-ú–TV ‰dP^Os=GšyGR2å±-ïç@¨TEúòæjËH�!/ÐÀ½Çµ*·thFï¨,ÿÌo²†lT}YmÿR"ÒyŸ~*ŽKÅ6ƒ¢ðõ½næI`·¾??f�°Eh�/šQ™~“‰Z­—¦D¨Ï¼ u)ò¬TvL_= I*³SC·Ž}‹±0¸ ƒÓlH ,/�—®õd|°¼¼YÍš;_Ã!2 Ó(A`žì�¶_£[c­ÅÒÒŽ fÅÀX&·;#b‹ão)Þ¨ëÃi¼ü4¿œ°ã½Çxý$N©.BÅW�vÅ´gyds ¡AʬVKÒ²òì«ÇP]‘¤Ìû$¾EGàÓLäÓèxSÀ|P¨,hã\‚¡ÖzäZà¼pF¶`,_ú/ƒHŽ Î±vÀ^›¬ 6”é>®¹˜7Zÿ;Y‘u2ã| ˜?·=GÖ0Qr_#Lj‡¶Œszjõ‡hÎjÃxˆ€ÅlF*5,h¤xJ»ùF@Šä‚,HÉ&à‚ üé�[žsâà27˜i±À'–ÙÑ«Ä>글b3°k§Ú�_?Í¡âϪárnNðxÒÅäzl¸ã%|ã_7R6 ~Ý¥–”¼-´\õ\l)yu‘x]Àƒî›m‰a»5t9/¿lͱUÔæÑ¸ÐœcÒn ¬‹¨x-„Ò­c‹ÉKbþÅ]÷kTi/m°É·|‡^Ýè78 -Y$ei÷ï#R ÛTL®xIS�&f¸�%fÈÿý"Ä‹¹SÓø5k yDÝ£}Œ$1ýï–  ß"½Ë9ØSÞ½ñãtz—ºŒdQ¬¸nuL/¶Ð„7ŠÑh¤�ûÏžù²šÏóŒI¦&¤‘�™_ÄR“|M:ÊÊ�ÅÒ"“>ÌÄ ³xO @!³ ‡kX„’r`9¼BÏ(£QŠYçÔ›\`rÛox­ŒÎku@Å6bX¶,œ±Ung1�ø=¦�àhÒdÚÇ-®²玞Œ¹P Ëîß?~·“È“pi¼;�ß¿;Eª C¹Éä©éÐ=ÛsM¶&\¸Ç’'’²gn8@ýGç*7mqÕhŽöÝIÞ£p@ÐsËŸenzÒ½²LÒ˦ŽLKp•ªÄ@Sk¬`ªÙ3T·{^š|ñÑyi<öóP‰Â:Ú©%éAW 5ž†Ç Pvˆ­g³wتWÿŨ]Qs!ikû¬}„[E5NÌ4pRIãg"Š$8l¡åªo±Ài]wZ… 7ˆœ�iQ~9ã“iüîNúKÐûʸÏú&\ 4æ(X]µð¦K…§õ£ µ[i½QŒ¦1Et*…Ç«ÖI0`n§>úûÙòg‹™ÝV°%‚μÉOËÅÅ…ÅäãEµ_Íï…J/ÔÆ{ÈéIš:É-XÈ%Hº¬„P¹˜ïeÁZÅCƒã÷bçåΫ�o‡úÃóg/ñ3ýo÷%ýo÷ýo÷[úßîî³ï6ÿ²ûìÛßó5ðµèÐ}àŽn¸¾\¤‚ç<)€,\6[>.§‡‰ÐÀS°UzµòÖóbUšyã-ÀN+H$cÿHýÇäcýc[1Roðl<Ë0»¹žHÔBº§ Zð �¼"ƒn�„µÄ³˜):pÚ$!ã²û[4v¸¶ÏÊkùa'q}€ZÌX{ÖÍ}S¢„ŸC# £ÛX:Q(ZüÆ…Ãvذ§¼ÖÁ ® Œ•ÚñÓÈ*;‚ýZq«%ÕkÇêTêŒF+�´xV~3‚‰EkqW rûÏ#óTÒ>3áR+¿tмóà~ u¤ÀOìè@ƒ'aÐ=“5Y}*ÃWÇ™£d¯kTÊ©»pV‹üb¦º8V⌼ˆzÅW ÇDv[£nœ6³äT['â4�à|h1Ö�ŽG0îƒe²À†ÌÂ7á‰#z�W¿�s­eÑÙeµ<�M6ëF-”I7׈œY-š0ÛEK-ä�;’æ‚늾³ÈÓzrû:˜×vD dpÏ%}Üö8k×FÜ×�$5_èÿâ¼ù]I†[ŒoYq_V‘|>Rr°òƒ·Ajbú5ýñÛð¿å?¾Œüõ¥üùÛ,ü.î°ÁïÂüãÅè¾¾óïá�­JÚ2~(O¾M8Í$>}î¥}02°÷€õ­ãÀŠ�RŸü�}Ò‹ËÒY�&`™«{\�dôqKmÇ1�>~дUìKeÕÂL,´BV{j^£ö‹Ç,mv•j³,—Ó}ö�ÏX#ý µô/¿óßé85Œ·´“üáùŒîÊïnÙ\­Âu û·ÅŠ™áÚ”æs‘Dÿ‚Äþ"ûyPW¿kŠ,ü‰´kéœî©ª R?ªEó×EÅe‰ ÷ÜSˆõN>¨‡'ž6Þý¡˜f“´.p¨ †=0v=3ÙVÉ‘mtßuaHxÅÝ™›¨À=¯Gy¨cüöùä:EBQjÊ*Òåm¬Æ )?…y†`à¼FS¢*o^•Ñ,~š”" Þ�埣o]hɧ}m‰ü¨\%ýF˜æY8èH]夤P{‚ñ}³bÇÄ€1]®‹Ï¡'iD¨¤Vù]GSß²>ÇŽ¬ˆœÁß Â#s¼e·yò&¦ÙT4àúþ²­}F‡¤‡ïCòW…v¼âTDgþY"þKÚ@õðvì5Ý:•bÂí$ÏÒ9k×Yv"­´Þ&Ùl`˜Ã[^RU̇ƒ—õ,bêzŠ¢>xQÙiëAűî%Œ&�3óuð8xvÆ0ÕN°‘´èºKû7¦®ž«fäYbAˆaÖèÐ>ó}E�$Ú6*|›z�§•ßiô€Ìí»´˜ÆX€ýïZ׬#VÉw”ñq¹œ°^€¡Y ¡fŽûliZÓðÕ{li�ß@  ›xûýœÓõ>§LØŽþqm(Ì‘iá O݆8ëš�mÒ¿ A]K}[¡‡pëèÈ�OCb§Ò~lEä¢N·�Lo›Ý¶»Ý®\•ùçÎ4¦‘À„òIpŒ}o ÝŠ�r— Î:Y8} x)ÁnìÛk:Êj’@a?À¦¼ôtìâ“Ø»JcpÛ$ ¬ômÒpl1¡¢:g\1ßµŒwßC5ih,ô¬ ¿æ¤ôæ|£œìw¨ íC¬!0Ô>þÚuM÷/ûDhû@Øúƒ�‹}nö˜QZôN²ä2L¯ãÂîS4Ò¯%¬�‹ïmÎ5Ûvv†&”Œ˜óU³.V'©E£fÄÉÕ<ÿ�"w.@¸À_,²©Žã£þx›6Ë¿{ŒBò¡ˆ=Nöâ?ý„ÿý„ /µhñ´7ÂÇ�*l[ÍRQØÝy…šTó¼öHÍS!Æh’#…b-è(äü ¥3×ûE7R¤RD‚S|Â$´6˯ë(mó†ThM/ß³VuÃ|­±J@>.Z¼V|/²»+ŒUj²˜Y?e¬Œ.ç#»PºÝ!E|‰yB;4uˆýWÏŸÓ!zñü£?ŽÞ[ “ßÂùðâ6yB;áÅó ß/oŸúÓÚq@“¹kÈ ™„űdˆ *ß’¨K‚²`~{*|«ú®{à�­¡r ÇÑßRs´ÛŽ2Ÿž2èðx—ßp•qÀƒ*ÈF`êíòn{ñ­pÄ0 rö�<°}"¤‘ÅXDtäC$­/ùnüý3òðwŠ<„ó³xcýýƒżÿ[£3Ææ¼¡Q0ã²_üÿXÏq»xûë9þEq Ú^ñ¤»¿ÜHÄÉÅøØüóÁ•r$òT5Â¥œ<ßáÿ�sN^>þb7»úýîî³W/±ý q¾-ÂÎ-;&fð¨6lݦ^ {žm |¿#‹9<ºæÐ Øz·�9µz—É<¶ÿ ‘„ú]ÿéwý§ßõïìwµfïf|„Œ¯så~09tBŽnÒ\ä´áÜíT®˜èJÁÏóaâ]Ø×u—üù§wX½Ã ßIÓjÅñ(¬tûNbwWJy#4_º6ï¾Mp{Þ}'NcÞÑÚ(È¢ÿ.®çÕ”Éd“>‰at=ct,Ü›wd8ƒfŒÎETÿ=eàÉbòÑ·í-}›q¡®ò’fléJÇ÷;áÖ½ê..g¥¦¶¨[ÊÆ"—¹�ëmA½AÌʸS†XVšsv+l ·ý)¶ÄÎ/í¦v ‡Sgu`pŽgœÆâ�íÇÒA…ðp)Úÿ¡¸×“Ôcì}øfÐV¢`¡yϦ«…yrTvxŒÞq ‘b6_¯±yŸ�3^z×шë¡aû¶˜¹1Îãé´¸±¼$¦"ªÄ}þLo°‚²ìÈkDk€«4µ0�óàÆaÄÌ0»¨ï¢û×~+qýîÓ_Ž÷¯£òqoBJÏ‚Óѯ ALœ½úî9ç{ŒJ:5†&l¼*ž þƒ8ÝSCŸ”AJ«tOf�v¾9˜4R€#osâšcqnœWæÌo×wg»ök›Ž™D}•¥ÂR­8À”•ï•ÙXÑ@CMý9¯IwÜç}ÿ–”'êLàNÆùN´ ï$G¤>~¢öÍìø´8…CÕâp ýx5R] IJ:Çk§ölÁTâ¿�l¿g¿HaëM¢ÀNà¸�jLtÚòa6ëH,#0´¹C+ôGÕüuv±3z¿˜W šÑ,€8gâH†ãMÆÊ:Ý ü:«�Üã�J}XïKŸlÛ‡¹ÈRG»­%!K@êzôë$ti8׫éÔãô£Á.Í%EElgþ[›¼ìqÄv,�TÕãÒõ lçi"ñà–b¨¿ƒX³ýû»Þ´ðÜ·õÛPè=ªåé–y�ëÊéÌô­{ÓhÖÚª!üËOûrj‰‰õ,\O×OË-R;zÀæŽm©âöÚ1ùsl‘œÎO·/oóE~L>E6Ç»²\I ÌŠøG,Ô†òÚ²lg­«ÕºHgksn—¤¢Û38L›á@Ë6Ÿ�fEø<ªYC¨2h]áG÷X�|&·¤RqIù2¬8\à¹ÖBÒ=±ûÐoŒS/–oFÕî’¯WóûÓ’£h Tj* N³ŽHƒß‡G¼�7–k6¿a! ¬ÆpÚ¿Ô|e÷ÇÒ&_ “ýY–|“ìFòáÑ,®9ƒ28ït#,®¿øy âO®Ç>¥+�P¼Äá^ì`TH�WÄÄ5ŸQ¼PÒÚ°%–ikÞO/A ޵ u³Í<¤\¾£ Ô[ã#©+ Fç´¨ÌE! cP@|â´îÙåBÄÇŒÆõp Lã8=ŽBÿ¹gØ2*�a2­ Y ¶[Ø— X7v3}aNVú.s¯“�! óÞèÅ 3H.#ÿEO’�7e)3Òh¦ºù�~5 á¾½¬¶YbÁšâöõñÞþŸU²7ÞÝfàÝmNk{L;\˜—Îñã”Á%¯q\=ÚÛ¼?üÙ9{}uuŽ/Ÿ þðvtq¸6küî#;fÛi혴̟ n :}“¡—÷) ¢ÞE:l±´òö\ÔU|RÞ†'»×q_™>ªî-4.Ïnë=¼hû€¾e‰™)RpM´¡�êш÷ í–ã¡ïÕ&?uCÿi´CÂî¾3x:ÔJ|Û›ñWÖ´S„Uó}ïù‰(<�{iAÿfñãÞ*æ2ÊèÞä�_¸U-x½)\W}¶Î¦£Ù´ôKZ�Ííô®­wi6ßÙÖd»~ïj¥ž„ù¤ÒÏoÎR½ömMƒQU°‘ÇvÍ4ÖÑÉOùÕB°ùúµëcùm6òÈNÚÆÂ�Œ…^ŽR�ÀHñhÇZ{ mŸïÓÏöEÖ¦z­qp�×xT—:WÛîµ¶Á…]oà1�ëXÔÁ »mdTlKY_[£tóNòÌ:6*4] w»xCZ»Ö^¼XË Ì?m¾Çí™�s‡Õñc$–R�7—[IQ#Evw®y};ç<ÏÛ–†¥ÿx×ÜÐŒôÚ£?ì 3¸¯èEMÂ9]Ðñ)³mpŽ·Jëïžð�™Ÿ~[Àô'´´¥¬ûžV缪ÝjmÉ8ç›á°f;nÕúµå7`‚½ßì0K†û»´F—àå0É›ÔiÝs@copòš#&ÅÂhÆJðT¬½Lï¡¿ÛüÛž-Xž5ÓT!ý …’‚õÿ¶¦Ìyf&GÖ÷SOÝ·í�ÕÓ¾4¡vø%Z«h–B`•7ÜÞ&`³!P9wZ} ¸fÓbÑôj½S—ö‡Ý8¡½m¸�aÛf¢¬ð²—Õãü–ÜûÁu:]@‹EZV»j =x¾JôyÙjŸŠåä–E_qâ‹77T×µ_•×y=K½–¨:Ћ�ÛZÈDÿŠ+ÿm”ÜoÏQ²Ð6 C ò”Þåõ²ûE5u練JgÛ¨Àyœ=#è5ý_l$˜MÇ}òE�^j;�n†±²¹u¿ïkVs›^¦IÓ²IïûM¶˜Ø ZZÇïû Û¤~¢™gÃçÃåðáù.êŸü £®¹á;Gÿ«ìt'1¥- ~šI•¥îqí**¯†Ðûû7OšÊ‹Þ-‹ëô1m¾©ìÐI‚ßÕÞ0�2ƒ«ù ‚WO{nè‰]™›O.j�Cç\G³õ¾Ä!ˆ~ŒÄb¨ÓÚ×z)„ú-QkŸu]5üþÇòx“,{ŽÌ&€f²\r"ÒºØí¯®�·q^×ÕÁï;•¥‘É=6‘b\'LñÃÚ`¹š12¦$8j>¥—ïš“™+¨½^#?–z©0gêH¼${�þËÂH#\“ÕçöÒñû QkÅcô oV€¯Èÿb+¾ÿºÛä½aêLòkäꬴ´u‚›¸‚f¤¨‹¥ÀÀßcP&­n±g6·e5‹Ôî1U–…¥�æM|Õ‚ŸÏP&%ü«Z/{†±8ú†zêÿÿè©7j�úê-Qo½É*áì“°ÀNM…ŒK²ëôâ›–Œw=Þ”I~ù‹:v:k[%��Ôé–ÞŠ6üøu‘ƒhƒ¶ý£ ç¿0Œpðܼ9ßûëã¢ÍVG¢=|`^l8áÛB:W“&zEÌK S_>*|pþ+Ä º÷àW½Ú)8pnêµÒßG„ â�ü¢Ø�×ìF!Ë£c-�ý¢ØÁÁ¯4µÒîõެç^|1û…" ü’øÀ^Ë">*>kè—Äö~q``£…_Ø×PÀtë+ƒÍèk£ïV€�°•m×R—^|U( t“|m `”H±¹ð­%%.±åZmØN¢™¦‚®ZÖùÕ•h9M™–[2}º¥ÉëÔšÒ‚�Aõ}{\¡cp_hpêÚÔ˜—Á¼û¾ÑÓËðöêggÚ>Õ¶*ùÎ�(C³‘Àäôˆ7H’]æ™�Uò„ö ªñL5ŒV >uVžA(F}-ŽzÊKˆÐig�ýòĦ&ìÌÊ=ŽL©\»b£@p¹;Fa[€ãa3<ñ}ÏøÄÉ/ L„è‘Ýü�ŠEŒ­7¾ÛÀík›†»õuчF[ ¼·Eê†Øm�öˆÄ=¼=ž²Çµáìq ñ_ãÏYSõ^E)Á¢ï àß�ô Ã4Pb¥ó¶Ö^w7lû º¤dïGh!å0wR—+ø®ßµ&Û¾\{!åÇKTiÅòý÷l¾ <³VZ|Œ€Á²J ´ù‡"ÿ„¬ÜÅmõ©<*êpµ‹¸ SP b2ø1ÅOù7ƒ?¿æË‡Ý°ƒ–‡ÖË/£R‰K`t«¼Ÿƒëv÷®Dõ@"avù"2Ãz÷[rñ$÷Êà}hZ†‰#†7ŒíŒØ°\U¬sQÇù[A��)•{Z‡‡5Ôÿ�¦^…šRT¯�LÎÌgRˆ’Ÿòšszoù6¨W% ¦ `°KÖC%ƒ¿0¯þ6lè±é¢v‹èƒöã(œ¸3$åmK¹ 3q–Zî×M,¸�+Ô¶¬‹yZÏX6iQµ]¡σûÓ�–4@\D»\,ÄÜ‹/ñá�N äu·vVX.‹Ö%=3à'ë˜!­kÈ#7¤%f©°€ãp »5ÙâËèå T\«ì,’ñá©yû»ÐÛoD—­™#ÄÞ*ž A¹•1²¸‘ߵ͘Ū@€Û}¿�¤tÑÍ:Ñ©º.²'/Fý‡ÖOê !få¸.Zw문>­ë]†~oÿ/ïG㋽äô|"vÅáÊà“ï÷ަf¦—´rÄ•2ãHÍmý„ðí×�uÖ%Fp�®£�¸(� A­‹©ç¯‰oÝ“5YŶn¦�æÛIäŒnõ„zƒ.ÞFåwÅVxDpöQPÏVÐJ½<Ðx\5»A’�V½ø U—´ÑÆaÙ» ï}RE>¶Šº£U-Kº.e‚Ûà€� °7LpÉmóYêŽUp=Ïr%ËÜ�AÙ3rÂáê*ÏL\朅ÅDP´œñùVôš¸ŒŠó®“ i«LùP�‚¦ÑYVËìÝñ«íd#moqË•TtcžË?cî3@­œúÑ XÒ‹ Ýã³rßh•†m!ôE @VRÇH)ZÅà,ÞŽÇïß%ç£ñû㋽‹ÓäâüôýwàÞ�È5\=©øêt0VS®T^ÖÖ"š¨E†À…XÍ�”ÉD!{}<öŸræ/™L«U6LîòL‘¥¡õr˜eo:݇§ìª ò2:ÜxFy³¯å\ùš¦@fŽfи�Mµ›¼H*º–ѤI‚»ˆÎnòn‡¡Ôø‘‚ÓV>ýC ÙÔ�ØÒ˜Y!vz×ú™xStÓj/�„Ý8‡’âÇá ÍÂoaMâ‚ylcà¦/Zê®_³�•Ïs²âÒ Sç÷ÇíµØ¬iã{,†ÛàKSHe¤˜„Ë�Çü÷1ÿ}ÐRÂýí›0Þ€8ŽQª¼j#’Â\-;_Õs0E´<:©Ø«afïWšœ_kô¯ 2[+þÕý¥•ÄGãøJÌx"@‡LOËÍ.úmÙsAÙk·^ôj”=#Ëñ‰×󫈆w þÂ3“ûc¼x> {y„äûÅs˜`«eºòÞ<䯞·Ò‹¿zî1‘¿jïå+¿—=ùÒû’›»XÜïRGžÑŒóYÞÏÛV梘÷Ýr‰ÞH³ÜÔGÁ˜ Èß°Ç…͹�×ѵ …}°¼ G$ó`<áXz“�‹ŸÂèÛrŸ® 3aí²ÚÁC-2àåÐåP¾«pEG0M‚t*Ì—È—³$¤3¡4iãe ‚” 2 �ªÁ˲›üÛŽTNõÿÉ„ ìn‹3©øŸÛ`q_£Þ¦Üö¨ïŽb¬,–dÆãgR£B€Øá³�§ì7CæjQž iø8ÆsÒ˜>Ít„—›Y²¡`:†�*ùHŸœ Ü¿¥œs߸hgJqß![™Ó=Æ9Ó¬c¤c m *“.~Á#M-¼PC=Ë&½'l,|¢h7F•MÅ2aëR5Å�ö“È ?o·S;Ä)Žm¤4·ÛÅ"m:D~Δ O AõׄZ&“e ~û^”Ò‡afÔ&+—ˆ6rè×õQVE}¤:j]¾PˆoÖ*¤ÝX 8bñ¯ýì°FÙc=Ë5§®xt–~³Ï÷ä5d�.·ðAu'ám]y·�…8”iæ?ËÛýÑÁyû̲½YæËµ¹Åº�^‡i6“2íû©÷¾Œ!¸F$9×¾Æ!}„¤D ‚>"í�9j? C¯Üé]aP“m³ùF³ÙBš$ËÏáfœ¥u½ èlÞØä½Ã2ë£8…1¿¦Y¿ëo�åíóþÚ‹A[k}/üÇÍ^2£ü|„-‘$ºo$Û&|Ë 5An„fð&,�pÊWåÍ-{„}�¤]Q<Äì˜[Ð^ňöšƒù“¦(ík_Ñ�?ÅûÍØ6?¤·±_gåH8Lq—¬nJ¾JP©¥K! X�O·) Iy¦2y•ñ Ñ’Na¥¶¡†nçRY¹”ƒËK„O Lú�ðNˆ">4õ æ/K“ :PQ=8dI:°2jðÎ?èi°Z‡sêLz4Ÿ*Òh¨—òÓ@0÷ÂÞp>]‘‚E¿¡ÿn%ýÀW sÅNÊ®æ]v â§)½ƒ0á%�¢ÁèÀ@�jò¿ò ½yjü¨†ß‡ú ߦæ?ÒGk2©Vh¸Ð<“$H|Ö„1ª®®¦Å óžWÏRøXÞ%´sL’åµ¶r”õÙóø6Áq±bÔù=ÐÝ ñô`2S@Õ”û–¾ŒLàÅ5Yš ƒ]†�AÐå’¹ÈsÚËó”lÉË»—A/«æIµI�}e¯@W2L%Ü^{Üjr÷’iœæéìòz9¿ h+Q™~n=.â,Ó„Œµâ[¯å!ý]ˆD¹�_3„m—÷—’«Öà ÎàuUƒ.bf T@è1Òv’3†û/³\0„ç6t(ýA‡ â¦uíyé9ö›Øo ;z’–—·d ÖüS> ú£9†*¤Ê ´O½;'ßíl¶QV— ’ÔA?û¹¡Ì᜽%k‹¥FÐx°ûgï“ñx|øj'ç`—ZirGò—Ó÷Ïþüádè`µi9ðÈ'T./ iWò•ÏòÍTíP±Ìßráq6EˆJ€RÙ�LEw©é€—ó´ G6޽*ÒÃø-qÆz''÷ŽÝ^EiCíLfN¶iYæ*�L*bå´Ýfß>/>!‰ã2KóY•¸Ñ»¬_rÜ9®q°gœçX>™˜.¸®-¡Óž/ªËÉõß¾ê”3!5¾ô—dtšî©Ú|„Ö�:‘d�òK/åÀ±G‰Öïg�!c� 1õ&D%3û¸å#si‰4Ÿ¥]—ù øÓË0qÇ㺖!V‡ÄJj­µo¡�„m„ŒXXÁÜÊŠ1êDS�k¯þ‰äH"_Ý_¦1NK^©J*ðt¡4}K‘¥ã’h}FB˜‘é*º¤ûBþ™œu)l+Å’ñɳö9f {ñ@þÑ KÙ/$]üW苽IèÂÖ~£©ÁoO’?ý)9§ •ªàF‚RîgvÙØ¤|µd�ÃÎÖú—‹ùwvº¤‚A01-'€wRk5­<‚˜Äonh˜³Í‘Jï´ÞøZ0ÉùDq*�é*³ê‰^Lb�^‡”ÇÞÆŒÉ÷.qò§‘íTé]k«!IªÈ£¦Í„ ᇲQëmOƒ�¥®I>¶ý-sìlõ–n –þö>\ k!�•ìãCžiNEVMVŒáÈM°ÄÚåòý P Bø)$ħdgCfCNñÀùt÷·[ÂÇ]ƒÆìþº‚E›…¿¡é|BcòË*¼L!`äåòHœÈq±æiÜö¥\…2Ó«íY¦‹ I=Ö„H½%ç"<tŒ÷é“n’9¬ë݇êú:ԌǾ+Àäv/Bs¥€&HÛŵ(YQÌúmûøÜ6\9D9Iˆ«J¸‹—«)©Ègc›/Ù?ÿ&9¥žç%ÇpÅkJäÄ)sTÏDe0„Óˆ3 ö,ÆGºê!ù®ÑÇ7¡ó.âçeƒ’þ®û¹õ1›w¹óð{X]‰C3…Ó<êÊ9*¦ë| ‰�Æ£œ·a¢¨<Ü �ü©Ñ‘ GÏ~>7;�´:�75‡hÓMò ¬O×ké…÷®ëÝ¥|\k”7cël ë›Âj™Cñ»Ârmÿ2Ö8B�u0ß ó3ÓeàßW»ãè­÷ 8/æ±½­oTÉÆibÚ‹öÏÁ +¢ °˜¦MÄ,`Qy^è¶�n`MÕžÁ"ahüH�2²Ó½ÁëYJ´ˆA¼K ﮌ1¼úí·/|»xX ó§åm)ÀbÿÑ@“–@Uœ,ÿnþ�ž'°ü_ÿkP±?kðÇ?b‹U×ü;S¶HG ü¾›ÿ{·üùg²ß“ü�hd¸üãƒø½Šå€”�ü#Ãc2’F% ürº*ó €B—3¦¼‘!�¦ú�›ì^üã]NÇE~$›egAó·|2¸<µ­�oÙkGŸ@ëh ¢4€7ƒ¯�À—Uô½BoÐ ô<=Þxš™“i7yY¦Ôâu~uUãúÌOÕe:‡1Cÿ@¦µ°º)Ñ"ò—/Ó\Å—à4ÏgWà7¢ÝŒÿ–4@þ ðÃFÿØg¿ûB¿®¤.àó<@ú.>Š/âsø>„O y´ÜhTˆ:éÌ_ìÞ¾Ý�ÍÃ㋱þ¼»XÐ?wÏNNžý•þGÿÄ¿“ú_b~ÑüMbšá?dô¿dó¯ØÃÀ¹Ë»Ü}¸^ѣݲŠ]°—–Fö¯‹änÔ]”lN¡’[•Y5Îv0+�«€Ñ?ÿ53© Ã[üq iÃÛ[þ R†¿ÃéôlüE³†'Ò ;®ON¤¹|A¸ç? 3“~¾ç?€Aš†PÕY„}()¿üøù é¿ëoò=;R+öd9Äqþæ9ŽŸŸäO¾ýÃwßþöéÓŸþžþûÿõìÙ¿�޾ª'ù É 2cÞŸÿqQO.‹¿//‹¥üwùy¹ó*}•¾|ùÝw“4yuõídç¿;³tþÿPKÒV1]3žfd‘|Rximunify-security/assets/ui-app/assets/static/other-root/src_app_components_support_support_module_ts.83f55e386cfc1ad4.jsUT ëÆ«jëÆ«jux è‡Ý\}s›ÆÖÿÿù„¶¾Ð»"z—Gõ8¶Óº�ãÔvÚ™:_ +‰�Å/‘õÝï9»€ $ÅîíÌ“Ì$hÙ={öœßyÙÝ#ÉQH¥�¶Éä]%¤ÎèR¾§7¾aÞþz®ï± j�ç1ùjXýúééòJÕü(œ(——r˜×†ï_›ÞÔ÷\ê²ð:Œ|ß XúÿÔ³"‡^³P¾"³~¯ÛêJqÕáO3W ¦W³FfÇÍNý\ ;ᣠtúk®îÞ�d]¥U¯×»*ñà±ÙnõZ* à±×ÁFŸúzCxÔ[Í~O%><6ºÞW‰ƒôž®«Ä„Ç~·­wTbác¯Qoª$Âaz·­SVoôë*Ãc&ƒ#xl÷»M˜b��–Þj¨äëuëuסLz*ÈöÌtŒ0”èÌô\}d2/P¨:c;Ô&Á„€�!u­aÒ¨ÊX‹x£*Þ[Ž,ôÍê|LÙ!ü�>*ê, , \)3RmÙ>U”:iSÃWŠÌ!SRÍ2˜±§ÙŒNCâÙôaæDyýÁ¡FH‰äÞ�mQNRº¥�ƒOá�Ÿ\Eû÷žÊŸ˜'O#×=‚ö¤X}Ò5¦¯ÕݘwϽl\ dy®ªó�Ì6…>Eu½Ûæp¹&³=à�,Â¥÷ {z¢ª2¹”EOñ¯í~¦€ä+åN{‚%‘éan”EG¶K�ùXãÆ¡0~Ƽ[ê(@T�ºàh„cFè\U¯BÝz»­’ޱn`qƒplõ{Ðz‚Xhu€›SŽ×^Z?`‡:Ë1>öÚØúˆ‚¦{�*•œãC·×xñn=|}†tô†®î ¥Ý/esb°��c ḻ¨Â±côÙ|Ø�ç2$²@¢ÐÝ9 îl“™hõ —‚åˆ÷¶ky÷C›dè¼ó ‹‚Ñ{i¢Ý�8šÚŒÑ ‹ß3ú%¢!;‹\×vÇÃW�,=Ͱ,>ð�2 )ò”†¡1¦2A°^ÊÆüpðúu¼nÍt¼Èrl7zÐÀõÈWZèM©Â†?QÍ ì±íj€‰€…ÚlˆRwvdÓá£�yÓ·6u¬P SòpÛ�Æ}º³ÃY›®åЃLÿx JÜÿQ%îx«ýæ÷Ǯ͔XÈ í¯ThèÂÛ¿3lQw^•**‘ÏøûÓ›ÄMÙv%!Œ�EŒ÷¸H—»q o@>ö�§yb¤jˆ¦ b-y8r(þWÑóƳJK€ÛÓ\0¸;“Ø+ÑŸ � Çã&Òà}¤¨/øoì™nEàŒMÞ÷Bv"Ï…' 0’ë«®vk‰ª‹A8ïþêäγ-©ÄíjË=»™q ¡°¡ª0â&4û†*3—>°MP½à2ñé•Þ·|½,�Èla.+ÈÌÁFWSÈ”4cCYŽM¹Ú­€Á�0áö²“@äO=(qê2A¿<˜�ø§Áå̶­¦Þ‡¬®Oî '¢‚­í~§ÑªwÛÝ~§Û‰_É~pmO!‘‘çW„�×€02õ zâCÀ¹ ær|~z©´;kr9z fF0€Øñê›Ï‰ü£Œ�áÔ= �÷˜º.oO³ìær›�dÈâvb;N²"ˆÂB‚gt‰êºîô9ÑþºÝ ›,T%—'eæÔ/ÏÉ’ÝOÉP±”À.„¢lA…—²a×b+©ÙqÊsEî àþQÈÚRq¶¸y7v@¹©Òî0É-�lKß7�‰ÝÍuý‚Ý@x &Ð›æ¹Æà–�ÂÜBaË@?²ƒ `N&Ú76wöaŽÑ2.�8‚¢0E$’I:já]µ|dœ0ê-ï9w4ÖÉô�èG,̲áo g?ÉsbQÓ :˜H¿N¸'åj€ÝžLÖäb¯}'‚H¾¶ÓMŒa6ƒ„›È™�Â�.“Aý&z%ùä–ȨlØžøh6!à ÖI¼4™ÔIÖÏC,E¾¼vǨ™Ú§'~¸’fŸ\ 0‹M¤?ìâg55Aÿ�·‚ý+�éÆw MóOî'WK×€´cϵLþÆ , ¤únÙdÉDiCqùª°)IÄ!}΂‘¦ädÁå ` ÓU„oû±ôÎ1}",i|A·KpÊ¢·ˆO0psBÕ4EÊõÇ9üýôtWY$G“e±¥Œt^à8^è‘k¡æóT’ï2ÐÊ;Û¢tlÀr &fhà5uÒõÂtÇa€�†"–åU<á*cÊ#Û¡µÈG�Â%z‘ðò:¸[+˜l‡}°Çcbà{|rT” ÞàB˜f »è¶œgà:†€f0f˜œ1D7ŸJíÍËâ/Í©SQ¯ZxÒ¡KlB¹¨ªe;5ÌÀ£L:…Ž1Κ«TØÚD…±:ÖðÜ&òÈ ¦2†£*ƒâçb7°KùÇÌ)äÓWR²¦‘-ûN&=UéÆ�ýUc Zî­£ÞßÞâêš\„Ô+©é/§ýFsûÅl>ìØ^,F_I­ó‚‹é®ZÌJCjô*§Ozõ7u™¨hµP¦m­"¨oäƒ7[µ®¯Zu1D&Ó77]Ok¡Â¢—J¨µŸ±˜$©B:òŽ4ÉJDT^+ô¯*z/v p :hó&b ]o£è߻ҚÛ(ÿ®ó<ÕzÞžÐ" ^ Þ7÷Þ°î פ¥eB8ÆfYª Ý-‚Ž ‰Ý" W *Ð^Ì[â.âôçÃxõsàE¾L`—TEžØ–E]l€ß-e§‚~‰a>/=�ܾ»X$�¶“,õ›–™cLĤÏá X:A_µÌGvð‹p³©PZDÏdm¾q‹þ�ˆ¥CÐåå9ùÇÓ#zÆ$,Š'i>fT+…³bÂÌÐêûDï–Ϙ%Q%„’ú<¥6ô~9Oÿ”b$Í bMgµBþF´6šÍe.ž/dÀ�dòŠæÏ¹¿Ië~vˆ÷º]‘�3jUP+¦´Û‡PP³½d˸'%³ƒþº|·~�éAUvÒ ŸaZ~Q&i yCš:i‚ý¹ãš™Äj™ƒPÉ>zà ^ÃKöe˜XV@æ_Víì¼âÖ¤CzêXñÍú[ ¹Ûh¹8aù|OO+§Ë¨öí7©7ç�0èå)�Ø’/@eš4 5ÇvoŸ™�ƒ!ÃN@/¦âñ¬ë@° ¶ËåVø©I@GK‰T~\h¸6³¿Rx%_=ÇÜñŒ “¯et¼¿Õêuå!J£¨WsBÍÛ#LŽÖi7sºôñ[`PÕö+Ó1t*úíüֆȓfz›ÅU&©ösà û¿I«jÞvq^pÉß4uÆgvÈ[Ò&z²i«êÚ%ûбÎ�kÚLÜÈqì^WŒ;£££ØÃáíN „·ñÃ`,4 ð=•¬9êúf?Íï=˜fO�1ý`°É¿å×–7Ö|w\ˆ–›šgÉñ@ÁO³Œyж#'Ä’0VQäó¥¬È‡xñe#îÎÞD6&.Éu0'çê{rU?n¶ê'®ó±(ãwqC�¤„‡ù)´1î •ß÷ o1öž£È2¹t´Ÿyí�PK‘iì °•?ƒÜâ]B%™e*ñÌÐ2Ùìr¹8d~UƒU‚¢\ÝãòJ,“ oè¦Ú½XâÔxx �!@à OSc%Ä \z7Ÿ‚ K1À£EÚá=¤ùëïg×ÚH;½øåèìúìôôbþŸ|1Ö"¦§ÔÊûb²pÿ8n?ÎÖtÁ{ùÆój¸òpˆ7³ÞHÂ*Íë�çG×§ï¯Ï?~øpzvqýöôìdg§â•RÉG}eUùˆ§'Q>fØø1®,(½qOMh(Ëóä{†µ|¢†'>ý Ú¾ª$çGèD³j©‹ãôÞ)BÝ%¸Ù7žG0Š#�ì>â�/åà·Ã`ãÛÀ›ª ͦ&®{” [üÞÛÌœœ`ùf€Un¹¢¬U6äMÓ´`o–¹Ç\¼˜íj>˜Íç€ý¸Üæbßf™,aÈDé¯Õ|χ@/‘_ð�‰·ˆ&†;¸«HyfÑ‘9bí^SŸ«dIÒ ¼Øœ/ßßͪ`úô¤T£¸.P..Ñ´‰mQ% œ²ºìâÀ<ƒ[€Ôf)˜‚ä 6ËR 'Þ}†Òny¥Ù¦KͶšc_;ðyIÊ–é(òþ±ß™K‚œ41BÉ…�œ€%x&¶;�Úõz}Š÷vkMÚ´¹¶6….զЧ§/Ô¦h?oPGr£ýo W&š€éa,¬œyn Ë—å–D}Ï«\±4ëÅkWʲE+#j€b±R"7úƒ(·¢¹|¸R¯âš‘–¨Ñ35#x'ð.¾½–y±‡iVf+�²EâŒg‘ä`HœÓž$¥À2¶6I®¾ œ¡SÒ�Ó»ó;ßT™‹m,láÇØµü¦Âe‘Qèš\mdMÏ©M­Z_ÆË“Ìéxz*ž½¾M»wF2 ?»æÉSÂøâÀ ÙF0ÉâjK3ˆ$ã½(�ù,]|Œ‹š/ ×s§^^Ç-4¸ét2"æáw6BÀM䂦`ëMkñÕð“=Û„¡$Û�ÞòŠÉR"†Ó'X:yåk…RòÆKX¦À»l)uˆ¥E™‹BÄkQ{xuÙj6Z½f§õ�¢È௽ ã ‘mk�áZ|Ç�è! ýrG°o’¬!í�U�a‡Ôª%wpbíéYb¹¼19‰™ˆm²–Ôç ¦qƒÄ…–ÞÌ cMÊø/„E#Süt}ãî-ŸŸŸz�Fz¥xG›=ÖP0µeGÓŠ¢°-O Šw�K'�_�Á�6Ã:ùHú¸š’Íðÿx/Ü|摤H̆�òWlAÁçû�v”6F [{¯‰§�ì G9Ågt¹äC2ãûñ{’?Ûâ2#´ÃLB¸Ï±åÐü~C´Å¢°ØÂ½,4¿M<îaÔãÆ „ɱf“Gí3¹×N¦Cè¹vAŽ´r¦]“©¶O.àÕaÿ*-üW¦”¨¬žÿ\�mÔÀ&ì-r\äçƒ/âé¶`e<ð#*5‡…ªCIú†yˆ„´ðÅ‹�lOyý>4�Ø@jê¼Ô¹˜ób\­¿‡ë@TN.Øþ‚IIØòf¿>äZºWD„š×­qzNÄ讨ë´OR­•ŠíÅ”]ÍÖKCa„Ôþˆ¬]ë‹hƒµÆ¸Ê,[5‘¾‰q|æ;;´!|ÖBãŽÆ‘5AŒaá¾n Õá¯ÞOȤDVŽ—4îó¸ Ñ?.¡NTßæ-æ�.f¬� ¤ïFüÏî¢ò¸Æ<Hxà}¥†ÿ }GùŸÝ £µ„jÌ«$}…lÅ¢©ßßœ÷LN;pÙ¤æ .sb;–¢«ËÅÐ�¥Ò”pfœè•Ö@�*øÁ‡Z¼�C‰Àj£©›R(¦è%Tcq$k­”ˆ¢ oP\ÔM£¹^MLR±Øu¬þ$ý(F�à} 3Ü�ÔhÅjám#cj; ù±t©“L¤þƒŒ)°…ê=ž‹×F6CYñ‰x{‚’†…7fJœò^cÞ›aî>®]¿�Lv7ã˜S452È_';+Ã4Af ajå-é9¤ ìçMjüaE7·6«E ÈšØÆ§Ú“Ò?åoÍ(Q´¾gãmÛn9Ž!»5~�Š¡iÏÄ…ŸMø)˜g#÷‚›6"u·àmòÀ_@€‰]úòDú5 ž«óUfÖ÷‚³fü/~¬AàÝ×"?ö/ ¾ÛMüûŒ©¹Š–0ë¦Õ~ÝÔÈËôþͤ±%>i­ñ½}XŠöFÿ9Ó˜ŽØ�ñNRRyO”ýæL÷³ˆúÀwVªü½‹‰ùw°�{°Q J¿nѱúÍ d`–p¡nìFrv¸�ûß�‘ :S³U”Á«‘=¾FB9:É÷ŽJÜÏZ臼ÆÀZŠ·é‡�¦Iµ4óØ>'“þT²ª­—�É¿ŠÞ{Á[?ÇÛŠÔ¿rpU™üº±¥{¡úšü|†V¦Û[1o)3Í(¾7üqmê´æÒûž�•9C½—MzâDHÏ/ Ù7ÞC ©‡… Òsq:Õ¼¿??�îhYµá,uàçt¦ƒ_þ•š"‘‚~#Ç»Hâ`7›çˆè»X¡Èƒ¿‹|<æ¨ , û5 ßf¿&{ îB3^+ò}˜FÈ-ø_âäqå7 IQ%øVШÂ\å´ ‡Ú©ÄØêyWBk“y9ÄÓï]æN$Wv(þ&I-ô SˆLK@QH…W$/ 7Õ¨œ%K|Ûiûñ|9—xQ3DŸsµ [/PE;IɵÜÍÓÊ9¶¤/þfÁé‰Ã»ÂEÖJ&‡ÜJÜtá;þIæ¹›~Á^©“P;«Ê¥©ùW䋿ÃVÂC-îÒðZGü$Ø{þóp�z[%‡øK]müu¸?ðçãšÍfWü$ÜϹŸæÚþW?Êj¦žU^‹ð~,~>/-E ó²jÛý\õix#¥Ìì)Þ2òû�o:õ\Aš¼×Þ‘CmLþÐ~-þ*Êåwþ«fýfO%¢ˆ�ù�ÿ_Ký‚?¼×ª·@p¿âo©uê]èð=öm¶õ¦�Ü_ÿÿ$—¹!‹[l¹¼3Û�›Ò«³øóïšùŸÚ>ùM;&¿hŸÉ¯Úù™|¯�y$(¢#cðƒÖË™oÒe™¤?Î8ø2¿R ÚšCãîÿ½~ýìÍ¢À¤'†ïƒÝ~<{7Üæçµ^sÔnÓf¯cŽÌ†aµ´Ï!þÞàPKÒV1]L©(VŒ %imunify-security/imunify-security.phpUT ëÆ«jëÆ«jux 臵VÛnã6}¶¾b ,`{aËٴݧMëMœD€ã¾l €@K#‰ˆ,ª$ÇèèGô û%R’/É6Û>~1Éá™™3g†úé—<É�Þû÷¼oUd<ÚÀ ƒBr½�<-bžA$$Ü N$*å’¥1þ5ùFò8Ñp¶ýw|ôá¨{|tüÎRQ„#žOàe�ko¤<ÀL!$Zçªßë­×k7Î WȸW�ª^œ§Ýc÷ÈMô*…Ëñ.1CÉR˜K2‚QiØ�G”Š‹ Ž�L™FYǶ¦hsm·LÁlNÊdÆl…ýW©î,¦^ /í¾ÿxäbU/»ªºÖ]畇žA8GHžk 굋…5¯\‚¥Hʈ?"h!RQ„’g1¬XºfA,Ëh£—¸fi ¹ã©, �gZ–�«ƒÃºÁ—Šk´„Ï%u}øÁýà›�)þV8…¤!E¦t~¤"œM®&fû£Ù:²¿WéÝî!‰¦Ê�±J�•!ÒXÎñIùX1Na¼$Ö²iÏ`ÂtÒ‡^ʲ¸`1*sTI —“<Ô¿>{›B«”ó¯ZÀ.’Hu‘6êÃF@E2C®´äËB#pmªÓ£Û+`Ú(²%脪�r¥¨Üv±§t«Æ±#Õ˜•`Ë�½qab˜U1À… `V*9�[6öz¤t³íЉe›’·ÚÌý¯4ìR5´‘£ÁÐ )‰Ò]s’ë¡PiÈn½ùÕÍbƒñܦÓÁx~wB–¤:ÅG´P…¯ò”8¥(YF‘P×ÃéÙ]|òFÞüÎdráÍÇÃÙ .n¦0€É`:÷ΣÁÔ2¹˜NnfC—²Á—L¿¤9²•"6©‹O·ÓîŽê«(¸4„„QŸJ �ú5´ œo¾RÃÈ„¥‚šÚdIƼ.xdBw@Q|o –@zŽCDî5Ý}U«ûAžßŸã²ˆOÞ²(‡Ü‰ãðZðåñ Ã4o'Þø¬ múýî4BŽ'γã”çtì]/ÆÞÅ�?žQgÍéÏhqÙì@óeëÄÉ×&ƒù]óýsoêûoÛ~NgÞÍØx±sêÐÞh¸Ã·+ëÀ‘åüòEàÖ³ ÍÏ‚+´H ]z ›Ö8&Q£ôMÑGÛP~"ÄCËiÔ §aä¸iÁý?Ð<â› ÅÝ¿~?H™R”KŒ”ŽÓÞ÷âÿæs ½õÚëÁ‚¥ÍsB¶,+r�Eff›XÑ”ªÎ /Ð2êÞuþŠÅ$툧ØîíR˜p]Çaah‰U¨¸ò ½RU¾‘Á'¡ï¯‹R¢3L£+d)Ê]A‚Áƒ•(ůåÆµÒ±5ññ‰ˆT­ê)¯.Ö’nHÔ…$í7H×�ÚÄfIºhµ»§<ãºEØÏ4Ëu�ðýð)@û Ã;,aˆ·¹é^“=½Ì4íJÖÈ„eÔ†Êô³°CAb.¤¦¹¡èy7“0¦*„®E:»mžwóðƒœIÍiŽÔ%úë�?-\ÀT9ÆïZ8z!%ͤ¥ U؉f¯Š"HÌG…�°¶³L2nÞ– †R’¹â!­ËÐ,ËTX'œTi a�Ì—Ä×Ù·väùRï脾ZtŠ—DÉÃÐí—ñ#š¶úMj˵oï¶JÎëò…¢V-õÜñë¹C´�&�fÇ }zYÆÞøÒ®š9Û>cÖYŒ·wØ=%�×$kúºhµ­õ^Ó™ÅÈ׋RÁæ_£Is(F™Ó§šnÂϧµºm^Õga·tEÒ••…£²5ÚV‘ÏÎßPK ÒV1]imunify-security/inc/UT ëÆ«jëÆ«jux è‡PK ÒV1]imunify-security/inc/App/UT ëÆ«jëÆ«jux è‡PKÒV1]ŽÈÀ\ÿ‹/#imunify-security/inc/App/Plugin.phpUT ëÆ«jëÆ«jux è‡ÍZýnÛÈÿÛ~Š­aœ¨«$'é-”&WE–/º:¶ Ûç;œÊŠ\IÛP$»KZÚÚwè‹õú$�™]~ŠTä+ 4@‡œ���ÏßÌò_G«èøìË/�Ù—lF[%—«˜9ÿúG› ý0ñØ¥ ’'öÍzþž}Qzt.â W¢ÃÆ�Ë^½xù¢ûêū߲�ï³)rÑl*´P�ÂæÈÿRº"ÐÂcIà ņ—×wçìr|u÷=üŽ®nFlðÍt4ú0ººEúUGºv¶Ùlz.îìãÆ=7\ŸùbÉý3 :;>øZ舻ˆGÒ=Œ×I Û‡A½>>NtÓKø+æOïyàùB½ÞGû.Œ®£ø:‰/|¾ÜKz.Où0\ñ`)üpy¯düþÙ¢ô—©¥æs_xÓÄúøòЕ`9é‰ ž 7Tï7屸”ëÃ�3I„Ž$†S¼—ñ­â7€5>ʃÏpŽ îx*Ødè $Ñ/X9á[?äžþK§" ÕçT8b±T<–aðp¥Œn\Œž\?Ñð|ÿÞßI±Ño-ƒ øÅ´àä ÊX¸¸é½ô–"¾1ÿ9l1n±�î�»™ Dm2–Üg®Ïµ¦ø¦ßØÄO–2`=>BÂ# ¼þ‚É@Ç¡§|äÊÿ-H|žEJ>‚×2 Ž¥ËNÓuì C*Ø?ã; ƒ˜Ë@¨^™)WŠo+ìNÝ”�Ó.òšX: Ó±JÜ8T‹$ ݲÙ,#rÚxΣ³36ZGñ¶¸šuYÚSƒžhåJ(²þ\·¯bÏŽøÚìV\ý�ˆk«Dœ¨€iP{Ê1™û L«ÓŒoºÔC.˜Ã¤ž¡žZÞïçúo3CuT}†"G•‘€G ´¯wÅ×&Òré#®øDU2X²ÓObk<¬·s¾µ|‚‚U:`v2ðTÇ,.�Ì>ƒ‡3ñ$u¬ E‡�Æ+©»osÉŽjwªühXÿT=­qÐÒoàMÄÜOµkCé5ÙR½ Ö@§"x”* ÖPؾ?Æ$£œÚXf÷’~ßÄïO´¾¸UýÒs1O–ÅEÅ­é¥SâÂD8ç1¿�€e^–OúÒ©1BE‚þ×:-¶9µá_zi2FóP 4D0¬®„³Ä»‚lMð¸=ÆñÏ¥˜¶¹†QB÷-øðyq½µ¡[ª ­Š¼ ³²†�Ww«îšWÂ!wˆ°"<3ZÝåP‘¶âJ %· Èj娹håÚãVì\@•l#ãU³‘ýÐ…’Wgê]¿Ë™îx]þê™Ú­;L®bUWä‡"û||íæÉÚØmˆÂâ^•L£J�°iq4«Ú,¿µQ‚Lõ^äÑX ûQ"©×¦*¿b ¼Ã,ã¬Bœ*ƒ˜SYÌÿìRt±ûöæúŠÍCoËâ�Ù‚K_c½ÇþJœ×ŒÃ;€r1˜¶+”O‹ ^eó$¶œJa ‚H(úÐù¼ ±¹Ts`"RŠX¤ýÊ,ä.™²Z¨pMh¤CK4ôel÷E{¦#”ª�"¬ɆµØê%=~÷­ÔS¾y§¼€ó étN¦¥Ï–�î[ð6Õ�Ù–Vå[,2Î iƒë;íN3Í0ô>G�ý lE$ä6¦šuÞ7•&lÜì�M¹/³”Õv 5Uài{¶KØ)žæ±SvÍÛÙ­.&‚¥SŸ «¢tßF*ÄšhB 30³]³_~®Ý®Š híòª¦J¹»zÞ©ÂêÐHv² ¬�®Óvä…ñ *àå9¬u?ùp7›\Þ}3¾š��§-ðᯙcðh›UÞ²>kµê[SXÍ_Mt¦4”*8yóøÃÝÕøâ‡ÙÍhx7ßþ0› nß›ò°s²¬6pÏ›qB•pD ­[«cÛ ãBÖÂt3‹´OíŠÆ£·+xvày_BÔm±*ÞOõ­ àÞó.ÇeEˆ Éi²âZt_BÊŒY”õ·°�ù×9]t¿zõâ7/Û=v½ 4µ5RÇDx† æµÁ·ƒïmvT&ùnIhdÝñc0©îE«ˆmVÂdO ïY¸ ¨¬bÒ% ¢A 6—K,HFq7Lâ» ÍQºQ¨câ¸à¾?‡4lþý÷ÒO€wø�ÜÈ×JC7 ü-ˆy±›gY»kÞZõÂJÁEÏ� ¯¯nGW·©ã¦EªÂû°?Æ;›‡ NSf¯Ç.G…*ÊÙi`S�Û�³T½»¢YÔRR))ƒX‚ƒ„im¢Œ6k±Þ^®è`³Áðv|}eŽ‘†Tiˆ-ㄈûn’ùZj p0�=�­Ê°³†f׫yÈ•¾²=š¡t•XBß*”†JnœD�°0°ëÉgøì5DC¢­“RpoóðQPÌ’³Càè̉SO)úÚÞQ ÿôˆ‚xU/(Í¿lqÈ›‚ ™š-¤Ò ß8ÃN:§§ ¸¾þ�ç5‡�ë=´uð`7Odµt2ÎæX‚e#ʆ¾'}½Óõ¤/þ7º)ŠkMÏÁ‚X×ÒÆÎõ×Tbka�F#¬Á8 lth°²AÝPÖ%‚ v•A ŠHB°8ü0õ%{¹ ÃO úA¡.I¦ å¯tTq¹NMÌîé¸ 8¸‹Sˆ†�H ‰SÅ8ùeî¯ö•¡ÂŽt’•Ê– ¸²z&õŒYÞ=Xâ"V0ñš6!æ½Ô¥T=€Ÿ�b‡KšC߇�ØFaü ¥s†ªºË‡}ÜÚ¢|:WáF†Öˆé`“mh-4|´8WØ�\T†YZñGá'ì£mý>Bî¾Ç»\ÐÐ`ˆ�õ†‘ !5øè:âÀ®ƒŽË †!w‡ÑÒv](M[©Òð›H ¯á´Á²`D-q¢ûUïeïÕ³pÜ~}“—¦uC°Ú4–†ô•‘•ºVèUýO¦¸‘Vzìv…£{ß'Ô Áç{æu”î—áBÐwè?‚ÒAjÊí e „ØÆÂñ½† 8ôióˆGà±âäݧ�7Ü8óB7¡ñæ ð'³…Õ´Ë(.ä”(”ðšëO çÔê _qJ ¶Žµá†¶%Ëb@û4p„è^�… š€ë#ÐEÑÈ(‚+H?)|Uˆ* ¯Üô€X±üwJHö©¶_{If²O©ù¤–óSí¤hïÎ4Ø_?w­êØ}~Ø%®=h DÙ!ÍY�÷Ö©)uì| ;hW»®´©›Þhö,f)›�Žëg Ïè§íˆÐÞeÖ+½çtj'Æé�;;Bk2¤ˆ¿ŒŠhº}¨=Ò­KªQÙ½kQò唳ñJ`$˜„ U¾ÐB.%\ì¼8U‡ »‰RÄ6à󌈉e�tMµc ÄÇ,SL2PðÙ’cW™6yô)…êú�4èV“}är¢ÌrQ ·û|ÉÄQCûò÷¿{¸Ál„7Œ ¹ÄF²M#:bƒy½K½)û˜ãÙ»ëÛÙdz};¢>ä#ÛD]³ÜŒ¶™DRǦÚ÷û" ˆLÌšm �Ú”k‰ÏÊVPPbˆŠùD©Øê^üS€û~¸ê8ÕZ6s$6FwP¸ð)TÂÍC êQj ²˜ì&ãY-~[È’káÕÔ­½;uk†~"i€ Ù•aÞ\7*ܶq_|�-¿†öüÍæàžíLÿŸY^¹m$6ñÒ—G;]nîä¾AaÆ$1 ‹÷laÜ91í`€à�Éi#ºÈ’²FÆQœ½â<¡€&tM(2ÿl§ßÇTã°†6ÑŽ.Sñ-”tG´ÙH8ük_Ä*©^N§¥Úøå&,ø»‚,ÖÅ�:ðÂÍôŸD„…*»u´5¤¢‚ÛŒØ"…N†» ��$8 Câ‘ ¸†ˆ€Ü‚­~œöKtÖÐ æ,Ü�7ÀÔ1¨ºmâˆX —°fï>0löù Mº. 7ÑÌ$‡Ýi#è!ˆSDt $�9Ÿ…ôé³e2Ê 2Ê.#C4%Š[ `�1_¾è°W;³ËûIšªR8E)Û`a´òJzPñrCcFûïµÕpÒ|àùGH¼®î€ÇH…‚èM SêÞ�€²$ãmo¤] ˆŠ"¤ÛePs˜%=÷Ð9ß÷ñÚ‡¢§X‹Y¢àw$‹y¦7°Õvî*d{>¢Kåî÷+;¤É(UÖ;®ÅüÜÙ�Oóz`ŒEj'0maz¦ñ¬^,_Ú»Õ½ê/-ÁŸaZÐó½{¤Ó…˜§�úšNk¶"| e�òpŠ ÚPôÊÙÐÎ –¯¸¦“ Ø)nhÜ ýÒÄž ÇN‚øç0Û¨t‹ «¶g™ÇtDeCÌ�h=¢¤Ú ÉÆZ°»éen™ë›Îdîe÷)ô½$.§à„oØIú™¨x‚†Õô}èÜ—g'm›¸Äá`¶U1­<1|¤ÑPa�»î§“6¹¦äè]ü�|—²g¿Ç¢t‰‘b‰ÍÎmOB¹¦a1Ý5:Næs %máý« ^ø8åð³%¼(´-[Š<3gY‡8�C?SÂ�2õ¹H1ìšÇ ¯EH¶ïƒ H¯Pàà)·G†Zž¥âcV+�Êp!ã‚ÝðË\çtv3š~7šþغNÇ“ÛÙÕàèõ@¾A°e>ßb�Þ`—™Y ë¢' ` B\]ßâ é¯_öˆuâÇ’âÉ�çšnaÌ'Çl¾ÍØ"Æq‰1’ <ñd!0'_ì*�84ÅÀŽ\Sƒÿ´Å¶{q×SîKŽ“ÅN–ò©3%Ðà°/Ë$;éÑwÐ:q±ËÆ™9Þ³’¦©L´,2´ßÝBß/h€‚CAžj§)¨ˆ „%�S‚Që€êËšb³†)$«u;‚‡‡‹B*ÍZ-,íVAe€ÐT&õÝÌ©j¿�mK.s»ö|å„ÈÅa­³º;ÂKšM™Ž©xŸø¬aáÎm¤�žÛ. ¯ï½p %^jÚˆÖ¶jR ¸×Éü;m®ð@æÁÎUêÅørD÷©M{p@ŸË„/Þ†Ò9>þPK ÒV1]!imunify-security/inc/App/Helpers/UT ëÆ«jëÆ«jux è‡PKÒV1]x¦#c¾'5imunify-security/inc/App/Helpers/TransientCleaner.phpUT ëÆ«jëÆ«jux è‡�TmOÛ0þÜüŠêF‹hÂ�öömh¥@±H•ë\[×öl‡P¡~ØOÜ?Ú9¡-Õ†¶HIœóÝsÏ=wÎûOfb¢dk+‚-hk3³b<ñÐøõ³ m©ó ºBåp4Û5Ó¥ù‚Y܆ÅawçíNkwg÷H ý€â �í=f𻂣r˜A®2´Ðîž]w {Ò»þFÏvÚ»Láਟ¦§iï*øO¼7n/IŠ¢ˆyÈ,Câ˜ëi"qÌdBNI)6EgÇŠ^Éîödš+1šÝs{ŒÒ uûÑ¢ÐJôèÀ[¦œ@ET‹‰vÚx¡”ˆà&T0¸Ã‹#ñ° Bq™gB�ÁOPØFt S!l°Äx1E�ûX]¸F8ŽÂ$Z«mËå†0]PãGŽv—µpÉœƒ«L["S¤ÔcÕõÚ’;0Rùú뼉ؔXUÔã\œ)9NÈÖAç°5düŽH¬°ö‰h§~B(A9á<í€~Gî�3>Ap(G-|0Ââ û³a–MÁy$ªW©Wõ¬IðI¢ äså °ÌPÒ¸´ès«à^‹,’¨fò¡œr0O¯Q®xÙ³¬Ôåpv^Â7–É›¤^­6–zÈ$Ô “ ÷é[Œ ¯@P|£2“gå[«r·9ÝõE«àCåØú¸° Ê^º©—#4CDýžIZÓµôFÇRÜa6ŸÕ¹ ñ3Ž1l¾Þ,ãŸ&çŸñ‹ {'I€N6w{b¬4�Ã�¶ÙyàwcZP£0»¼èÆ'Ê£5Z2�YOûÅÖözD‡ÚÌ}‡y6d/ʉ­låú?¼{ºMsCcЬ +¿±(ÓT™°ÑI»éU _úg§ðø´[�L7‡›ã´Ÿ>ÔAxúw|Mᵃ³þßÌÛPõ„Þ m›O½z¡›«Ž·y4�~PKÒV1]¤&k?G6imunify-security/inc/App/Helpers/DateTimeFormatter.phpUT ëÆ«jëÆ«jux è‡ÕVÛnÛF}–¾b`ȵäʺµ6AcHŠí@²_Ð0 ¬É¥´¹Kì.-»…ò‰ý£Î,I™ºÙN€Í‹D.ÏΜ9{fÈ·¿'³¤ÚÞ߯Â>ôUò Åtf¡þï—ô#•02½‡ãøö~ZZºT¡�3Í›p*}èuº�ƒ^§wGQÅÀ7\ßñƒSü‘ð¹4<€T\Ct~=€ÑéÙõŸøÛž]áèøb8Ï®?³61^»=ŸÏ[>eŽ(qËWq;âSµÔ®V%‹¹I˜Ï3zŽÝÍiœJ>Ü%ÉÍ �®Íoբг˜ ÀŠ˜C¨t̬EF3l¹°~ÄŒqÈ+}X`þ©V(JÃd‹.ˆ±,N@H« R>‹ÄßXf°”ÆX-ä´åvïqvP°÷üñ:ø4Þ!€½O˜f1…ÚSŽk)î—RÂõU?‹ú^s›j™g‚‚ó ‡mW+Iz ÁÌâ_˜Jß %s5.}&©îz9uƒŠ¯´Ûhyǵ¥Ì%*Eí¥¥Ô‘?”>iŽrn-®äP©9ðä ü®œëg¨cá ¨Ã”Û‰Jˆ[ö¦1Þ„!ÆÙC:ûpr~}19=›\ûçgƒKhà!;ŠÇÜ–ò:²Êà6µ´†¾1 ÷EH*düƒ d•8²a’?~“{äòÆ{MØsÀRZ™û ÷S-ìÃÃ(o%ÊÔp´ˆS2äÖ8Œ0O&t…§Tâׄ5iŸ²/m*ÑÙ¼ wžJÐS6¬ã ú¬fÒDÌ*m<èzYGÕykÚ*,½ÓhBÏ2Qñ pxÃù¯Rqõïvk†ì¿Û«™%¶Ôߤ�®Ü슠xA>V¿¢7¹å™á�”››ó#Ré~¯Ž|U# žƒ§#ûñºñÃÖ6[>‡­½6†Ï䇕S{¹Qrý]DÑ}#_Õ)/ûˆÑiÉ€éàÕƒÞyé×&tz^çáÿ1篊?¦µÖ�—œÒ„Ox4M¾þx™Íq°‰;ž�¦q¿[Ð,Êθž à µèàò9ÏÝÀÎ!Jàã`›ª,0„ˆT±32Äø…B5U�þ -n�ÏTª—À=˜é-Ø€=,AÉu½Ã §"úêz6¾ƒ—µ£þ~í »Èwnùê¨I5t­×³×Y Â�¼DOJ;Š¡3Ú(99Å A@ûßÂ?@¯†KÞr+50&Ö×Ýív=Ï* +Üó¢Ð¸aÂ%�ë8’…¨cæaÖ^ÚÝãU˜H¾Þ?ŽâøqŠ"F¥/œÂhvž`ZÃ:Rö ™1\n`ÍBÌL {)}º¡ƒïˆ 9 ËÔ ªköÄÃ$�rcˆÖi-¬�(†ÑÖ² d¾ýÕÄôl¥ë4¼Hj×£‡åÍh1]ÎÆóÉb CøØ§VK…Ÿ‘òoRAf­AÛc^€~'eJQ_·L�6ŠD~ËDˆ\"NV‚{ô€úiZ†eÊ0‹ªêLЀ ð5½.ì8ÕXQ⯈*4‰’¹.,^¯.ìÆŠo™Á¢™u"=Ã# 4SÂÚ·;v¶ ¾†vÚ ‡CÐ(ÖƒA¥÷ Ô8:–œK|âÚè6´ˆ|Y"ZTújG¤8€V낟é* PÓãçʨ²$Uó2dJ”0y´i/`Šy(ÝÍ’‚:Ý@-,@Èi (Með1U†ÅÜ›©{;ý²0Qê7·•çž^ÉÚ¢j¡)÷”�gd(]U.[Ù†±Ù¿œçkÊU‹ÓÍuéË`í¦n‹v’ãs…ž‰Ôހະ,¨+Üp)­zë &òШE"[e-cEÃïÊ–«á:9�~<£âH熺uPn®Y¨$+B—PúO„ÞÎ+8Zu9þfvz……R)ùœ>ÌÚÿLµÜÖѪÌœU:ÏÍò¥xvþPKÒV1]„¼\³tú2imunify-security/inc/App/Helpers/Documentation.phpUT ëÆ«jëÆ«jux 臥TÛn7}–¾b° º²á])îåÁ¶œ8Ž��¤.w¤%Ì% ’«�PHþ¡?Ö_è—tÈ•äKÛh_$­–s.3sxôÊT¦?ÜÝíÃ.œj³²bQyüþeN¥nJ˜ Õ|„wuqß>ùëZÏ}Ë,îÁ¹â°?z9ÊöGû?À‰”pP\¡C»Ä’ÀþTpTKhT‰N§ïoßÂôüòöú<�\^OàäÝÕdr1¹¼ ç+ï�;Û¶Íy`–�8çºJ\09¤CÃ~_±�a;yQÝÝyÝ(1_Ý�sw†Ò u‡ý�Q:rï@(¯ÁW¦)¤àðAÛòg‹Î�‘ÍB((5ojTžy¡U¾6ñÚ ETßç/óQäç’QÉÛÇgá×~/PõèüÓNx«µ‡¹¶‘ü9kªbåë%³à¼jž‡ý×Êyxsr=™Ý^Ma é¦E$Õå¢óüÝ�£Ø£–�M@žuÈÔ:ðº*]ã#f‹¾±ê)ùºK.Tp˜7Šo+;ÁqoS…r~p°QyØï}zDû  ™RGü“°Ø2Z™ÁRXß0 †y^íñ®óÿEWËæ_“9¤ß´XdìAL6_‹ÉÖZ²�–ô™‹“sxC3¼`Š-0tñÿie‚ÐÀþU7Y¡}Vo+žë»  ,Xî� µÉ´’+¨(@!ºÏẢè–P¬â–ÌU…f¶„V” ôà±6’Ê#Se<8�Õ¾³º± NCÍì}cög†ìnK7t !9«GÉÒŠR')²9ÝQ+( KáD!‘È?zøãóoÁk-½0‘qNëÏ„ÐG4άíL$—HŽ‚ÇW HV Ìὡ'02PØ‚gÈYãHš‰l‰Z“±²*âmrIÐ*ÚÇ­˜ÛG³5̲z=ZxÑX 7̆¾=¹2€æ•ÿÍ2ÀÙÍÅ” ñJÛü뛆5躥x�Qô©Õ3æ½�Í�>8O÷ ]ß ¨±Â¯RØ9|اôˆAeq>NRZ¦Cè[Z¯¤Ø8yŽ3›‘½,HJ¨“Áï8™’…g‹rœ(­©ßtµ+Mh-Ú$%æ¡‚^bGº6¹˜,‹Ïyw¼©=¢ë]mT…] kå`û+ÃRxm³Ð�5b%ÊÕ8ñ¶Áäøhè‹wQùÔÿPKÒV1]e;(° .imunify-security/inc/App/Helpers/IpAddress.phpUT ëÆ«jëÆ«jux è‡�UmOãFþìüŠ©„š€¸„Cê®é9,åJ=©TÑÆ“m×kwwH+>ô'öuvý’8MN�ì�ÙgžyæÅ?~ÎVY«wvÖ‚3ðÓl£øËÊ@矿OÁiÁ˜Ëü n“å|ß8š¥±ye Ï!�!\^|¼øpyqù „€©EÑ0E�j��[ü1QjŒ —*ðÇ÷�C“ǯôßMf#ÜNG£/£ÉÜú¯ŒÉôU¯÷úúÚ mdawÃ4é |a¢GN½VK²uÆB,è9vÏA’KožYö|‡"C¥?µªDƒD‘B­aål F/qªßŒb¡áò…9Jc½Yá�º[¦ò Ò5�PƒBÁÙRàŽW ‘JÐy–¥Ê¡­™âi®!SéÛ†â2Ò@[,&#)‹`É“¡e“ʘ¿äŠYŒ:æµæd…ËîÇî…˼ dU.µZžÍÐ#ç[4æJÙrªÂ.¿WnV%�’_×Þq÷ü†¿ëšlI¸„TÙ¢¥1ÝÄ ˜¸˜"4¨.ée…$[Ý,ÌŠšÒJÒ¤!ÀÿȾ¢v�1Åx>Rå!±²}õ<Å?rÔNTùP¤Ëß04ß0.mM\{*ˆ˜a×k…&WT7£¬Ý?¢ õIû¢ë~ÛÀc�©¡æ¡¶v(½–—åKÁC‚¡$BˆsY´Ã ߉d�-¿SªœçõzpWjB²†¶Gd§ ÞI¥_˜RlÓ¡3¯}7Ÿ?,ü›…?™Œüy0¹]íóÛ8 áÚ;üº¸¹Ÿþ<˜GCûtÄÔ<öÇ�³ùhzð(ÜA°§`P¾NG_îç£Å`8,n�ÒÈzM%²p¤XÝ4ºz.ÅóNÖLäHjÈ\wÍ£ºt � ý~ÿ¢Ó�š�FxÇ"®¨WÄb•&UŸ8¥»îÖIq´°­CQ«Z~ø‰JLpæ¬JÀÛ’+~úÀi“Êfâ—Ï_‰ÜçoÚ¯Ê< üPhÜ&ã§’n™rÀÀnGÛP4uvÑ‘˜ £¯0I×®®µø›[D¿èBHЬÒè´L·@[8´¾�…ÂLÐÒ%‰HûÚôW«{0ó†LEœºªvqï}[@L2³!§è´.›�bÚ¸ãOÉ?1ÁI/tk¥œe»—b®hÐÖÖj縚Õ=‚Ä�æ>ÙFûT¹8ÐhÁ3›<Šøêª:¤³=ÿ¢ïêõð�í¹D•Bɯa,Ó)S¢Œn˜KF»€j¸·säSBÖŽ÷¾óUhÈ£™ä†ÿ¹ûéúϲ-÷à ±ž¯9S†'´�[ÍõY…‹¾µ;¹t8õæT|mî¯Î¦ÞµŠ�q§¥º”¨5­eØ¡•kË8æ‚>g úü¹%»Wù­Õ;‡›`l—àÓ` 4�„Wì,G+fv0ûÇê”ᑾxo½·þPK ÒV1]imunify-security/inc/App/Api/UT ëÆ«jëÆ«jux è‡PKÒV1]Áµ.S‹,imunify-security/inc/App/Api/AjaxHandler.phpUT ëÆ«jëÆ«jux 臽Xmo9þœüŠAªØµI(w_ZR.J#j—–;¤R­Ü]§1lv÷loÛýp?ñþÑÍØÞ�ó*8Ð!Q{^žyæÅSž¿È'y½õäIž@/ËgRÜL44þù{zIVÄp*Òâ^N¯_Áã…£ól¬ï˜ä{0H#8h?mï´~…n’Àˆ¬(qÅå-�Ñ8Ù?O�¡Hc.¡wúæÝ œ†ïÞãÏ^xÞ‡îËQ¿Ö^�üDë\¶Zwww͈<'ä¸eÓVÂoXÒB¡V½ž²)W9‹¸…gÐ}L‹TŒgºyŽÅQ½^¨�'L³s�I~´UŠ�9ÿp"»Nx<*®ÎXÊn¸ÜªÙ¿�x®E–”ê brÄw_wßÃ+–Æ Ò%L©¦ Í|„îGv_^~©×k¤T+µXD¦€8hÒi«^‹²Tisv{ƒ7Cè@ ,œPñ¨�BÏ‚#ÏÒ0K‘=²ãLZÃ’ÿUp¥•±j¤~»e”–"½Yõ4|3ìõÃa÷¬¿Î[È0†0%7 Ž+âA %†×Kî*ç1—â–i;ñ‡»÷= v±Lkµ=jÿxmÄ�…Îe×YëlÊC­Æâ8´ Ѐà.·U@OƇ‡^ ì“’Í`<íA01 E­5²… ì]4úàå×vÝB?xy–\2…ÛLÄh]qÒ°Ô$?ÂæDª—ÅHïŽÄ†9࣎�\fWªR¦˜1L…c(ü¨(êJmÏ7·È[kh!@pàb¨œG¤M”žÕX ‰Ð5?€õiÕ"ջΪ3Çæ’Y �yÖ ¨ð3É(\$Hÿ'>S›ês™3k­>=B –ˆÏ|îÔA¯Í)í¸ìãaÍâ°UxìÎw÷ÌM…lå¦Äht.e&ºÙ=r8z}|p~³œ]‹§�chÀ#À1(yªC’#Fõj{3ÌÌ[ Lù™â˜ã¾œ#º‚Ë+ ƒ«(œèi†h`�ªb<‘@Ã�s9J‘©&±ì&ð~5ïMMÔj~"ðKûÙBé‘ȃ é.ј¡mè4ŸºáT¾á¨ÿû»þùÅeà�÷+ ã(F‰ùÌCÍïu8<‰€¥[¤ ß´ÉVí]8„ 8š“‡z·ŒBeóïžßæÞûóˆ¼ÅŠ¡ä tö‰§?‰F[ô¬ê ‡×çøçl–d,6¤R#ž±HxxÃ5Ía�ùT 73\~DšÚ¹5C¥I)Œ9u’Aßö‡·ñì{Eþ¦\O²ØtšyLbæ©®Š³L'Ù&¢HÞäáñc¼ ˹¹þÚWµö7ªz×.?ZÎìB\Ž(bitÓHí¸óÎ2š#{íì,{4¤,ÒBó!ƒ?3¿•äÙ>™¸]NɱÎÜø†$‹X’Ì,C™ÏB‘rNÊæeêYU¼w@«H‡‘S·æ·›À²rQÙº«=OЈ³Š!½äÚpfJc,³éü›Y)šýW/ðþ1•#=û[üÖ�óˆéh‚ ø{,ìðêcïÚÖ3�7Þ?Æ‚?³·öm3^ü7›YÛÀ¦WìüßÒ¼¦3ø Ý^n`ÿùôʦ*ÎíÅ3aÔ$+’®¹+¤Ø«¤ò]U‚fê³f»Ù^^ íÛY–Ò…×t±ú6_gY4ÐÌvÞ¾[=·ßPØ_–§Û]©±Ÿ'Å�H#<¥Í­å6¸“ª¦O”©ö ?‡ge¹ÀÆ ë¡JœÑ –½ð¨Ó)­\¶¯àëWÜ,ÁâÍÓ«­ÆÝ¡H«Ùåô®ª 2p±P…Ùè°®æówݹ¡LÔO/ˆ%Q×Â$Z.}æˆk.Õ¦ínôÃËÛr9}ç ³¿=ü�Ë[9B)908±StþðìÐù ö6{wi lÛ³*¸°Ùði®©Æœýí{ËêÔ9¸8‰(»Bòø[v–ʺ¿¥”¸=Õn²ƒ>}6á›ýÄ_dEܰ$î¸ÿ†èx S…Y5 t¨�hëæßüªS:¬hÂBq€lTY.ÑDT ŠˆÖ C¶}Q,–²c¿ŠÕûa$Þ�ñóðP¨ÿ PK ÒV1]#imunify-security/inc/App/Lifecycle/UT ëÆ«jëÆ«jux è‡PKÒV1]K_Ý10imunify-security/inc/App/Lifecycle/Lifecycle.phpUT ëÆ«jëÆ«jux 臥RM�Ú0<Ç¿â�*@KB‘z�J-…ì‰R‰-j\ŒóB,9väRTqèOì?ªhšíîö²‡$Žgo°Z®·ßü{ž®ïS˜ÝmÒôSºþø…µ•™$I]×1 •E(3U&T$ž”"i‰¦¢ /öw»eé$ÏO»YUíV9å,X¶@¨P3UR.›0š‰¢ÖRö¼øPðÞ ER°Ó¢ðaЪꕤZÏè3×*÷©ž‹Û§Ô²Õ*P¢Ã옹 O+Ž¢ù`øi0fÙ K“x¶ÈâyJ7œ^<—mÑq�Õ†?©“ô;pÜQÝNFc–f‹Ya£ìŠ¥ƒìûÜ�Ò9SãÑêï_EGóû¹Áµ¸'(ÿ£¢ˆ%Iœdée§é”eó„}œÜ<‚‡àPKÒV1]l¯X‰Ã±0imunify-security/inc/App/PluginUpdateManager.phpUT ëÆ«jëÆ«jux è‡�T]OÛ0}N~Å�„H‹Ú*ñ2£ê �Tºª´ÚИ"“¸­'×ñüA©6ö÷�f;m …Ž�—|ÜÜ�sÎ=ñ»÷|Êýhoχ=hå|!Èdª òûWZ4×t Ówp>»éÀî£Ðe>Vs$p b–Bcÿ`¿ÞØoB“RØ.Xbq‹3ÓÜöï’3‰3Ð,ÃZÝ�£Ð�{£ÏæÚj÷.ÛÐ<´ÛíÞÐæO•âòmÍçó0µ“©¦ù,¢x‚hd’"ßgh†%G).à9t×ñL32^\79?òW;ˆeK ìNÉäcàTO’æÌ~Qù*¢y†6¡q.fȦ‡n`J‘”ÐwI#—s�šF?|ß³£<'&“JèTå"´�È÷¸¾¡$…±fÅð$IWI•ª)ö<”eɘP…EIN”@LÌTRÀI p2¨-*°£¦DÖ (H°bƒ9€*T�|ï¾*v9rÍù�šyN©Î›”•PS¼’a ıqÝN9h×Re-«ÉO¦ÍîwÖ™0ÜV§+-ØFí�6™UÊ3 áÈ*ðæiÜ[Îyø`q’x;…É ’ØZŽa#R�øbÔ‹Ï®’Ëvk4ˆ‡WÉYÜm'ýæ°ã¤-Æ)±*cªŸcH#"þO¦|µk)°¹ÍÕO z±Uýº8"€©ÄÛP°|iš¿Ãˆ"èç\Sã³}»òuác‡Hø»&ÂüÁÆRsž Ÿr‘õ T ‡áaø/¼^ÀµÞÐs»{Î͆}jîí–]°¶rvÝRl])È­•dÖK~»åF…°+nZÐoeDØÀKÖòÝZšYæÈmÀñJ³ŒÌŽýñò8°úwÀñ ”„ k‘™9¬ÌÍÖ™wNÖ%Nµ jr6 j®Kãõ]Nw¥Fòv¼Ž­µ]Š“ìÞÿPKÒV1]t< æO!imunify-security/inc/App/View.phpUT ëÆ«jëÆ«jux 臅TMOÛ@=Û¿b¨NPˆ)R/Ph£` RUm‘�¬�=‰WØ»«ÝuLTqèOì?êì:�TýºØžÝyoÞ̼äýU¨0Þßa†R­5_:?¾waXÊ:‡1õ\Vó+xóËÑ­\؆iìÁHdptøöðàèðè ʦŽÅÀ êæDîøÇ=ömšBúÆ×øŸžBöXÛÄd±.À\É•C‚JúÝ:a«OE"OÙ ÿʘ‡™£€ñϺ[x¢1W¾Lˆ,~˜�9ßÄ"–ŠûŸ|�&ý“Tá½âš‚S¼¡sgaLj§ !_`.UÙ1,¶Â.px!§º[&ÐæÉ,™猣ØtÁ�_r±ÙšÂz‰<°Y�‰;ÿþû?1fÊ}ÃÊä`÷ sŸêDB¦9º]mB– Ÿr�ÅK,|(±SØLË(Eú$ ͋³Œä<ÌøœQ©s@`çé�ûøùÙ…!W–Ô 63Ïœ'zOѲÜ\}ÈÃNc#S,R˜S ›t ¶æŒaá –™ ³<Þækƒ~#ÁÏðgì4>G¶hë²¥cVlqL×yQp¯øÕ&�¡WJ¦ÈH¦ÛPÚÙ‚ œø+¥‹Àl2æ#Q¨a¶A^ÄÃNÃÙƒ>ØAØzú&÷ý‡hƦ˜•ˆÒ‹¨­6ŽÂ"O+¹×€n ¦€ É-çí¢- m…Ð"έØhAÍ6†w°Bú�Ž…L…±�LMž�Ÿ5R‡Ãoº§Ý÷vºCèOIž¨ ÆËg™†¿Y“0¹}¼ö?n¼1\@ãÕ†nœÛ×£»±çFWÞçÒö·ua çònt5xÜ�üaÿáòÆûcï¶ÿ0ø£çÛD#&FÖÃ)ßËCé]Ê8dbèÆ\ÏB Ióþ³ñQ|Å|kŽ=8/¦-ó°µÍG84°·óª ý'Z‚g’Å’§¥]�“±´Ò¶çYCŽ µŸc:È:qq7‚*䑘qÄâÑäŠúÐ>UÑÆ"` Dˆ^êÞ; ÖÅ”÷¿’·‚‘æ �¢©ÅÈS˜Žc“ÅØŽ-\ FabcG}ÙtiI//ÊUÿ¡OEõ&˜×8ÇGG 7(Ùmú Ma„��çfcÁ#¹Ø>²  ln±Ô,·ß2–¡ù¹(íó Ï8C]Xh•+�×°Z©6ðî¢ûÚ�iãµ?¿0eçD¼Èr�`»RBOô*ǬXÍ4FX?Óšƒáãhðñ‹?ñ.ǃ‡/–Æ­7Ùs`{-Sm:¤€êI½ø÷ØÅƒ‘5·Îq‚lp¶_%o t•i§ý¦ùJŠ¿`¬…rsmÙÒäoqE»èž{;/€•-Œ9žÃ®' SxRáÑ(§&¡QBG,é8'‰ÂS— íG’ᨚ–ûÓŸqOå€ ü¦Ñeýa[5³o8x°ËJFvóK×Tn3L'SÇvƒ»x‰¸šç²._jäN¬'N.Ljwÿó-˼kY¥â|Þ«²k1ý»séZ Í4F ¶*{ÐqZws³–êÙ!ŒÜGÀ�•-ßYáÚ6³Û…xßÂC±lùNóâ»|TJïÙÒ»�¥Ò¿­°îÛŠªXrǵ WQ�v¦×9Я޸·oèp¥÷#Ý­Œ�ñ€‘ê¢!éÊÙ±—R ”¿ø±o$�È„ÞòÑ;šüÈ­ïËú¾Š“‹t0üpQ´ÅŽP®^û׸#�J“dÚºÔwôr‡áý0n¥[ú ÆR0³ã ÊmZ•ƒ]U ü[l,ŒÛ`�r(»ð �Ý…¹çòy;ðšuíxЇúÒÜ‹ÚKe¦�Ò3˜Ì~z¹…Ùýã˯ò{2}œOa|÷4�>LŸ•ýFˆ„�ƒívÛ÷•çP9îûq4ñ…i4h·)Š0O��3zšÝë}”R²Ú½Ž“äõ!pxÝ.Â|@¡â Dà"µ××@~ˆ8/vïÕæívKjÉS·X`_�˜‚ ÒŸ@QÒWzóû7Ä€P¡~ Ú­„‘7$0œúÆâÚ€ú‘„¸v– Fèº~|% ̓2ŸqÊd b—œ†ÀòÏò€‰$£$>‰S^CYÆqXLj [`.�hœvsàÚÔ<< 1¢RHJæŸ4 düì¨�Т¢œ¬©ôÅNËMimBÝ"�–ˆcPª: &X>JS+¼ ö?Y�Ø``fÍ€pXÙÕgXR ®Ä¯Rš Žp¥˜NWê±ÕÊí=ãÁÍÍ œ‰ á—ìR·Þ+>wXh* ›Ê³ÂÔK™ö 03±´d[Â!ØéI—R5U k,~–¾ì ræe|‹åFů"Ã2¦fP®šŸHh^u²2äátl9–ÑšþoËîà$`6'·’ŽEÝÔ’‘ô=žØžÆs¢Ë'CšN× íÚr�ê†-u9š—ãÕx^6='£Í¹…Vïx§ªLŸsK,ïŒüAˆ–ê�Úï5[æ„Êò\õ‡ýá1*3…˜óá["ü tlF�m¶|uí=ÝrÓdÄ{#µ^„�¹¿Øˆ(\,:àåMÝë�G²Ç÷’c?eDì<è^7ñŽb9‚Œ©ÀT@ay2´ ƒ‰ÚÞJ0 d排&òîBÂâµÔ&?îyË¡ÆôGèJß^†¿¤Dâ.¢]Žº�žòvr€Ù}�y”Η1D¡óû‹au2À+”†b?Î ýLã-=€ñ~Pãø«`&ó9èÌP{" F¹ØáL=C=¥ý ¢tøï×cªÈL8׎:¦ÓÓ¯Ìÿ¥ƒL¼ËËvo�<ï@úýÃsXõ†Y£X3q“b(sv9cds²�á@µ§:¹˜Añv÷>°ÿ¢Ê3én¬ÉY¯ö¾P‘vÔÁNªw¹QöÅh�‚Q>¦n/Rï~Áà™¥øØ)ç—W¢] ÆÐ®&Ùä«�ŽÜ«5}èö@(JÝzx1}ÃL–1ΰÑ”«¶"kÿ׌’R°ç3Œ”¶!ûÜ|h § ³Q¸üT†z€Õ&Å€±PŒg˜˜“GfZÎ^ ­ÜÈì²$zM¯yv³²z,�ðl£R0™]FËB9…fvÁr¡ÆpGNôŒ¬Œ5Òi„‹£z‘²îªåÿ9çë¿?ŽnŠÃ•]D£YK…>Î5¦�²¢ªÿŸ²#�ý¹Š·´£‡ÜʺYÊŠpŽEø[)‡ßõ]”÷þ …ÎÍ -Týg¢òm£jíd�öÊ(o�%Œ©”Œ­/ ¯¾Õ.uåâW©Q�žŸCG5ˆ®cÛÂÌ%w̹r-–åZƒ^Õ]E©ôí®‹½?Õ^m¦…À]ðÍlîKb¦ÿ=·ÆBª30ãÝÊ@õ=zoÿPKÒV1]ü4×@e0imunify-security/inc/App/Model/FeatureStatus.phpUT ëÆ«jëÆ«jux 臕”ÏŽÚ0ÆÏÉSÌ¡j¡H½°Û?Ò]$–JЭz@BÆ™k'²(ª8ôûFµI²%lYm/Ä�3ß78ײ8sýVË…ŒÒl/Ù&ÖÐøý« #žæ!L™ÈÀM²¾…×µÐ"�ôŽHlÃDPè÷Þô:ý^ÿ- 9‡¹¥(˜£B¹ÅÐÀ-Ê( …!ä"D £é—û1L'³ûïæwÌ oæAp̾ÚüXëL |·Ûu©­Ìmá.MŸã†pß$ù®+H‚*#‹öŽÝ-'I.X´_³ly—†È¯ÜJæg$:—J›§yÒáì�r¢T÷=.«ÌE‘øÓu,Á9A0{œ¬9†]?î}ÜiØ’‰�}÷]‡¦BifÃOÓ` ïÀ+—žéé_È�©2Ç“Å#´Zר7¨�˜�d©RÌ0+Ñ[ÂsT'$šêˆ”d]Tz_–Êò5gôxÒ<¢\PÍRÔfÔ�¦õÅ9=Þ0ïŽB ¥ÐößHÕ¥ 5¯\çpÒì(Fú,RkÓZbìÔ�ŒH’”ŽÀ«2»œ“N�ZÒSuë4åÏ‹bê›­ÔxdÖä1±*VÛm(TU^´AKÓð¹0;#„‘œëRÝÓþj¾lû¸ÀÔ­¯Û{¡-‰Pœhs9Y#‡(•gn¿ÐäóÜÿS0µÅÏMV;¦i ça‡…Pû? l¸ŽŠ®b�ðÕªanVq½6x¬øtÒ\2½÷Žc©á*·.óÆåU|XNµñ<»u°S8¸PKÒV1]ÅÓèt *imunify-security/inc/App/Model/Feature.phpUT ëÆ«jëÆ«jux 臵U_oÚ0&ŸâКTºJ{i×nˆ²‰2‰iÒ˜&7q ’q"Ç�¢­ûˆûFóÙNšh£IãðÝïîwí÷’eâôŽ�8†AœlE´XJpÿüö`Àâ,€qijG¸Y=|†7Ñ]Ê ´#îÃÙéÛÓ“³Ó³wÐg ¦è%…)M©XÓ@9Gÿãȧ<¥d< ã/³k�&³¯ê{0œÜ ¡3o‡“{Ä/¥LÒó^o³Ùt}dfHÜõãU�Ña=ê9'+š&ħ&<Ý|´Êxnçý$™ßÆeNžæ'Jd&(¬P >#iÚÕžôßBýÓi¡A«d�L]”héÇ5�Jñž{N+ÑšH m*³鸑}&Ø>óTªß´‘ÝçDn“fI °ì` (Ê „ÖS(âD²-¹Lˆ +#…v@$)¸ñP ª¤æ/õmnmóè²ùºê'̸/£˜ëPúHèZFû×jç¡æŸKàt)e¡ë]”'WØ2 Ðöߎð|ô½ŠQm�2F�ëS÷gˆ9×QXÚ²#<#F�lMr¬²{z½õ¦š˜¶šÄÛ–RvF¡Ú3káÇ<Œ¬ù@ÿÏÑÕ.ÚXeúÅ3µûmfÖü íÊ "méZå¤öþÛ( ·krîäƒhÓ¹4g×ëT#U“�ÑÿûÜØàÐÙùù‚Êë(MÙN”Þ†Þ�qª›Î;`RŒWÝäN+Šœm¶µ½CS˜¯úkÓó5²>ïì¾u ÅÕ> ’±ÙTSê²�«Î-³yו l¥¦Æ­Ã�ƒŠNIŒÊnZIe$F«7¬b¨ ¥t^-Éúœ`í·±V¯ËZvªºå•ìJy¼ÀV}’á¬ìãÒOÈAª�—¤!›³}„ù‹ó '0ò ž]W ÂS¦.³ÂXÀl´ç6hÍVC²Ûaôz? ¨+¼ÔúÚ�Ú0"}ñ쫎Ù0ÅöäüPKÒV1]Z~ró/*imunify-security/inc/App/Model/Edition.phpUT ëÆ«jëÆ«jux è‡mS]oÚ0}&¿â®ªFh�ÐNÛC»jCŒvH´“J?ö€†LâÄ–Û²R´öa?qÿh×ÐvÛAº¾>÷œs�?~ÒLGÉÁA0RzmxÁÄ¿u`$T•Á”Ëê.ÊåWxûª4S¹«‰¡]˜ÈŽGƒÞñàø= …€k�bášZjV4Cp�?å)•–fPÉŒM¿Ý~�éäêö;~Gã«Ù†×ãñåøêÆ÷3ç´=I’º®û©Ÿ,üà~ªÊDЂˆ›’(’¤¤V“”6ô»ù¤¬$Ï×ó¡ÖóK•Qqmeβ΀Q¡©±�+†«$—�¥ª8Faƒ¢a 4ãŽ+éb¾©/ÜZS°ÎøÛ¾N *ØÊäHÉvú�d*ˆµ0n àgµ<™bÝ3Š· ¹�° º^RÞANJ.Ö?W” 0»Âa§$ÕŒ§ †X*%‘H«ôĈÌ`t7Nî‡ç �r4 3M%�ËU¢N™ž’8©DïúpI\Ê<'n eÊèT W3%vxtnLJ,íqtHZ”µ¢§@@(Y Ö­PÇr£†â ëˆÁÈÔÜ1Øã�²Úë,RÉ^3£‹’ƒ[¥vkXQQÜŸ«ŒÄ]a1�Vù†�%ï> v»óX(AÒ²p¸u‡:ˆ…á]ߟ…óÎð‚Te0R*Ǿ 9yO½Üá]o³S z‚2…ð1 Z1ó]h«27ª„Œç9 Åä\àZc-ª‚ËEªd΋>¾B†Ð°/†?MkÔÛ”ÈEFyÙF²’ËÐÔŒ7¾G1ÓÆ3 ®VHN6bNÆ-) ¥ÏZ?kbH %@ö7‰¾ñ�ÞFµñw“æ –ëçŒ÷ˆÆ{¤­„/$QKWK„òuø—W²‰·Û�®Îƒƒñë‘|­Ï!†7ؼhÖýOÓã#´Ûpvvö¿Û­ ›„S,Ý�?ÿµ˜½ñ³g=ñL»bYêÙ<ˆþO?ıqU*δ­>‰¯óé[ñtíÕ•ËÂB–êPœÚDˆÅ\¡I±J¥^¸¨zî‚(d˜‹Ÿø¯°NäÒP„Ñ>Ò q¹ ’”²<’“)*ÍŒœù‘¸†49SºJ”‡xíÙ|Ò¥îT¹2͵FïHDp³¾—6Ò8;ó:UõQòn˜,|]*–Ø @Šj¡ …¡¥žV„ÞBÃ‘ÐØqXc¢K‰¸{A®iKRŒKn}P…˜. ‚�*áØ:‹Ö'Fzý€Iø¢Lz¸RÀ®‹Ò!(ôžÝ½µj`pO®¨ …L‡‘˜Ø¥È\ €S€�w=5ŠÄÌð§�‘ˆRá„SÅx4abJÁøô[ðœfI\®Ck#”‰Ô)op¤* W†ÁKö²Ê�„pkîøÇ¾äÚ{²‚e@˜ûB )Ù½Ì(S3Y™°ßÄâ5. Vþ0:qE‘ï9<1çÅç^o�ª`ç/åBH}3uᦠÐ"ä”A¤Ž¼ ÊRHZGâ¼6kÌ� (çâ)ªÐXä ìL2Ô1¥àsŠ·<âJ!YŠ(h¼Y…6K‰‡Ó2Å'Þ3ªÒúÙ:Û�‘ôúN–b꜡'˜W”úŽbýDjpÀûÖÁ+çT¼Š¾ìòÖ! Ë¡�nÓø" &�p\Tð%WÒz°3!Õ)GלUû¢oéÒ�4Òà¶À 8Å JÑ�dõâ>œ¹S’ Ó¢ãÉ\¢Ò`¸™ÊävÃyª=;û�%›ÞYE™Õûjr6¹8>y3¾º¾<=¾Ÿ¿»8½~wyHq ó£MÐj¯_ñ·]Œjª`IN—¨tWˆ¾ÍFBGBþýŸŽYHý<ùp¸úiê­AàHe;rjH¹ôÔˆ•3Ônj‚i*fÜIKF|0ߨ"ñLQÚ9жÔ9�ÿ’Å4®ä2$s’`qY‚tz"á+X…hGPïÆ|𬝗…Ú‚ãuI©�Dõs]PõÒGJÏDN¨�‡MˆXŽE$®2ŒÊTEû`'ÕV…Deé Jx~@±yEOƒô/�I´jM ˆ¥¯’DyŸÁèe-mÁËe]Ä:æ¼Ë2ØO¶VY‡4lŠ´9AiÖº�KN~<° j 0…ú„ÏÄÚðè}·JœW‘Í®”ÉÞ*i¢ñ�ÖGL,Z(s¨Øoá ʘ}¶Ûc `*�s¥ãY§¸²ÿ+XDc²Á´LzÜFËt5ÄA"Áx’Õ�1Ó?ˆfG3�9²øî<¡î.ÞÔ˜[1}õ©Èx�ÁE.£x½TÄ� “5¶WSä eTÀGVÕØ’�ºÙ¯Õ Ðööž´)ˆdEÏ$A}ª�=4à¾ø1¾‘ë×âŽZs+€îÜ7÷�Š*ÔWþyð Ýük%§0üËNÎîSl�ˆ{Dyä4Öøô)¹‹wÛ÷�E5|Ϻq<8ãªì b�­ITÞp¯ö "Å鎴VE×ë–t;'YÞýn§j–¹  ™Ý®=8Õ8Øpß«u�6ϯ¼:8_¼‚…ÍÅ-n¬_srÍ‘-)sß©¥+"Áá/pàÿ5ÅIU™´1žB´Ó-}I<³)Ê£Y¥á›"�j‚�«ähžvk¿[v3ÈPw®ÇY0$i*0B”êß•ª)iF¬ 1à²�*h€£‘Ɖ}è~ìð0Õt(áW×´Þ°p½ 7þmÖw't›,‡AœËùâõ÷¹ª €¦Å°¢&§ Sš¡Vãe=º1*h|*–öC§»$�^y»»Û|îK�u•ìt€&q΋Þ5 CÍ–VöÖº…�#¿wU™Ô+fœ†cÛ=ìt]žg2©)Ýh¡þ;Xk»˜]*¤-nÈÜj}›£¿–ÍD}ˆÆZ€7@xdüݘËxéZ[röá`´aîL…H‘[ -ê�}ÍÂß6|n7z}q!Š µ4+>׉�S6î€ks£Ÿñ^öùµW”,õ/“»“x¦?¸_‹:/œd; â¬+±�ñ¸Ê«rœ;Á(YÅ傱DKêþ´4CBjâ/4µF&]ÖhÖÀ/±þ_a9[øÖØtþ"0Áj¶èi ú€úÈu�ÿýÕ[Ä®}øj‹¹Næ ©äÒ"Ì9mšGÅ„‹,Æ×Y\9tÖ,G˜£èW%þÄÕ!ªãBݹ�Õߨ Uw,¥’6mÁÓ¶^VaÎæ�“Ãh¿(+£›´óZ!§žL7¼±–2q½åŸ=â.¶q;’H0ͺœö__Ÿ\”€®Æ(…°Y)Óµª{,æ�SƃLíü˜¶$Ï ÷½ûÞÿPKÒV1]Í˼�}£.imunify-security/inc/App/Model/FeatureType.phpUT ëÆ«jëÆ«jux 臵VmoâFþ ¿b¤Fg“ò’¦oWÔràË!.‚$­”DÖb¯Ã*ËÚò®áP›ý‰ýG�µ× ÆPºúCöež™gž�™_~�fQµuzZ…Sè…Ñ*f�3ö?× ÇÃć!ɸ˜O?Á»ÂÒ$ Ô’Ä´áÁùÙwg�ó³ó¡Ë9Œµ c*i¼ >×ö‡Ì£BRáÓzÃÏ7}F7àßž3š8н;Î¥3ºÖçgJE²Ýj-—˦§‘¹nzá¼Åé#á-<ÔªV™S�fî¥ÞÝæ‰`Áê¾E÷—¡OùûjæGJTSP«ˆɼÁÙ�)›ÆÕë“Ù Dq¸`>•@ÄÚé žb¡ œ©a ÁšY©m¨Q Í„óˆ(6å–LÍàêÓüÜü¡™zŸa—®µGV+ÚÑ Z¸$\3 �ÁÄc£©�¤Ç~[�¤Šñ„þݪV¼PH—ÝáïݱãNzÝÑh0º€X›kòRÂëqJD ×:ÝÑÍÕ:šY*€]Å!A ú4 ÓwÜÕøs·w=¸uܾóÑõ XZ,@^PåI„q¢RHÚfLqYØ»%SÎ<\Åtz/€GªPôvM§®bn’8&+W$åA»½É{½¼eHZÛ)E£÷jï«•çµ z3ê= €¢ÑÊ[ :ýµ¨"“¹ NÒS…Ç Bð´µ2Ó0äp'T©ÝU‡€pI!Äñ’É,‹»‰còV_³�/™p3³Í:d”ä\×Aio6ÉÐÖîùLFœ¬@׆ôu’]êÚÃÉ.M@a“•=±c ÆÄ-)�X'¼+Aj·«©­÷sæ¨ôÜ™šs×µñn”«ËjcCR/‰±|Y)�[Œ&÷Û7%ã�æKÂÞ P*ÿáÓ€$\¬Y–ÞzÞ®“›ñðÿ‘GnøpUÜÄük¨á�É´ò&k(ýþ§³´Án2ÜXF�ˆ'�L´¾™g9oÈ\S‡¥÷È(WAÃ7*8.ßšïD�òôˈ7_)ýù�´\™C'Ø£f®÷Òÿ“˜¤)ö‰"Í2Ò_"ÁÎt³)�̼ÔgéMÛlººÖ„Èxjhßg†¡î­ÜÃQf³Ñ‡A°SÉ“WÊsvù¥†ç´tLÄ2^ˆ¸) ™Ä[­’ŸØhñÚ½ã54{ŠtÔ`š(Ùpð ÷33/‡¾Å!ÎϢ„0'úyéÛ€fè_�-ÂL2ÝÛÌH@振jºI’EÈ|ÝcÐ M‘—ÏKÈÑ+²SÁnio…ÐétŒ°Þ½ÃÀÜŒn»HHMo⎠y¸¤qiWÉ«!YXyq04RÍ’Ðn÷“ÓÏÞÇñ}& ŠII•�gô®ÜYTè4¹ºN¸^DåÖCÒ1×RçvÅæŒ^BK?~Ó˜’§75¶7dê�KR�çÁX&ÿV–Ó |•°vTÜ­�•gdtlÊq ‰KéÙwöhçSýí•ésõ¹ú/PKÒV1]ÆÌɺ+imunify-security/inc/App/Model/ScanData.phpUT ëÆ«jëÆ«jux 臥VÛn7}–¾b[2¬KäE©í²à�ÕÀ—¢@Ô.%ÙH®!ðC?±TÞv½ärU¥õCìpΜ9$gç×ël“µ‡ggm8ƒiší)Yo8tÿþ«Ó(ÍC˜“$ÿ·ñò78±–Óß!ŠÏá. àbô˨1ºx“(‚ÉÂà3L·8ä’Nœ0Bž„˜Âtþûó ÌïÏŠ§³Åã &·³Ùýlñ$ñÎ36w»Ý �•#Yx¤ñ0Âk hØn'(Æ,CÖò”º—»8OÈjÿ2ɲ—û4Äчv±ÍÇ%"Ž –��b "Ę ÝÈÈ�vK¢[R5b˜ÌáDâ(Πûü4í dXA>n’pùŸa»•Q²ECGprIùT$ %ïÿ¯¼‰Hmä�¡7]AŒ"y=@8Ž™Ãy¯cw"ôù‹Ën«œÏâå1;4ŒS’¬ÝüÜ€áNO«,Ó4Y‘uN'©¾‡QŠö.] ²™Šv{ö^•£ŽæŠ ÞKö ßÐÃS&2XÑ4¾Á`Ì"šðJFáºwƒÑàÝÅK^oõ)Å¥j–éš1C™Eè(ãÞØû¥˜ç4†£UQ4_нРgÀ*Ouæ’}¢j¢žtz«C1Ë#žŸKHðN1K¹%´U󶀯07ÔŸOkˆÓ/¢Þõ¡ðFV‘šÑkEj»ˆ/ì)ýZÙ´]¤@ØÜ•Õ±rz…Ó˜š95Âf,ׯo©¹qo3©A8].úiK_6ÒÅ{r"¢_QÅEàÚ³jU&+è:LÏi,P�kϾé/�yV_c”u% UÚ^ÐÈ.Xd¶ZæÁTÚàx\}ýA�_ÏÕ/Wˆ\T¸ÕaŽÑCšD{ÙwI@ÒœxpPíŠDS-Ø�· µÚ¿"ì¾(Ý-´Û*SÊíï,÷bŽu�·ý3á›P4xH©ø^«mäLP+�CgYW»ì_­1¿QUq8áÝô¸¶joAü8î?xù:KæÕ4P¬¾Ú_"aN þ¤ž…ë¯ÏàèÕóÖ¹ ÞÁ±®ÆÀ¼ÊñÒ[9¯OšzʺSÖ¨>òXh]H1¸z•µ¤‡ÆÕC¢5¡I�Á^Eºd“iýÃîÿPbÆg¿uu¬AKæÌÊÿ6§çÃæT”RŠ^ÛÿPK ÒV1]imunify-security/inc/App/Bot/UT ëÆ«jëÆ«jux è‡PKÒV1]’434rÓ 5imunify-security/inc/App/Bot/MirrorDownloadResult.phpUT ëÆ«jëÆ«jux è‡ÅVÛnÛF}–¾b‚J2tqŒø¥ŽS+² �dC¢Û¦0 ¬È•¸ÀrÉìŲhÿ¡?Ö_è—t–7“”ªØi�òÁ¢¹³s9çÌì¾ý!ò£zïè¨G0£­dk_CóÏß[0à¡ñ`Ì„y€Áò ¾+}š‡+½!’¶a$\89~}Ü99>9…>ç0³^̨¢òžzèÜú3— E=0£ãëÛK�¦·?ãßÁp:BÿÃl8œ §Žµ÷µŽÔ÷½Þf³éº62·�»nô8]ÞC£^½.H@UD\š¤gw7 Œ`«í]?ŠîÞ‡ú¬ž9 £É’S�FWø»_.¥0aR†ò2ÜÌñ¼ôýl¨pi7-¦+¸‘\"%£ DËÐÛÂ_¿ýÚ·ß9Ç2}b—´ÏÄt‘ cJ\vÑÈGÜ(ë2Þ Mtü>·àIД (õ”ÝíúñrŸ¬ *ÙÄXg<\+h~zXHúyÁ¼Oíx]ûËTìWª’·³1áÅïDkDs0B·²B/òáM÷u÷8ÜåD© TÈ´á¾Ôë5¬“™ ûóëé™õ§ó›ë™És -‰PQ(u‡Z�³Ê–+ǹYÌ�¾s;϶X!t”&Ú¨ó›þÌõÇ‹ÁõÔAÝXs„X3Â;1–BïlNnœ�‹÷×—ó¤lÝÛŽ¥oÇz>úe¸˜Œæ“¾3¸J¬-~�€©˜‹� “ËÓ¢½Ýx§EûzÍŠ±†àþäSD^ÆðçR‹dèû„òÏV _mj]»%ÞvqO$~ ¹ý¯W¯E’ÝMá•2®K•*†ø±èâ  E¦�ŠG¥%ª´ê3ÞWp8³� °½#*W¡ ¨WqÄ®úH¥UJ,…ë7ë,±´€g%&)Q¡(§f…w·G5Ö¨lw[pQ³:xÅ9¶/Ù¾MB´ö@½wÕHiWCݤk1õÒ¸:”g`�£Ù‘ä!Èöëä8ôŠ5¡B±§-�Py2a¿4âUê¥�gŽ’Ü+ŽâYdŸ¯ sƒ¼UÓybîŸh?˜C¾}•ëÌÍ2røá%üè[áj†‹œ­fŽt;�ªýTj;K¼ýº…³­V{…c\uÞå�CÓ’Ø*4^n”ã�FI=­¬—r›\´Aô[ÅFÉ�r‹Ž2íçV9Fç¹Ö Š}oO}éä˵¥}¢Ÿ3{^¬¹ÿNd‡ÕqY–DJÉÊð’0àBRm$Ê�òU¦³äÌ{ÄàO®—ÔCsŸBÊÂH] º‰Ý6EF÷)«Ñ(îý†ðtF#¼QÀ’æ=�žýíø?ѳӱ/ &�^ÍB£>ŸšኦLlù ;ßzV§ �뤪¼¦æ©ÒJ)—§M%›Ý©¾ñ©('ga*i#¸tœV’±þöæ‘ήbS,dTº¤~ ÷‚JÌŒ†½q #ññàõa€òqù| -ìÍ&¼�ÿæÞ‘úN,ø¿U -TC�ËüÎÓðv×~ ÕÈN™Æ*\ÊöÍFm¿±ÿN…€�s10@ƒz‚1™;ÿ�PŒ!—1jh÷¾Üt wyuó�žíîÕ° §çƒn·ß½ºvúÄÚÌÁt:­G®³p�ë‘J�c&ž'YŠ&cÎãén/Ó\òÑìö4ËnÏ”=ô–CÊj­t-F‹‘åJB‚"Cm`¤4L³8¬…,úA:c•fc„H0cÐÔ£ÜÐ;ÈlÛ„›ÚñŠ3T`w—ïTø�²oüµz¹¥ Ì;•} YÙ¤>$᣷Ò6èûñ®v‚´DÚ;áÐOLœË‚—´<ܸ-Q2·}ëîÆ¬ç€›ÍÖ‡غv (ï˜úŽ)C¬ÐȲ[77vë5åP)± 37…WÞzy»ØãÑrè׫8\nÂå�£#’%ëä¬Îñ ºØt!ßQ]yºœ>øó»ÿ‚°ÃtWŒ\…­õù ò�Ýi�—'BlÂÜl9Ì+uÙq^”¼�ðgª|Þfëã-/Æ*/À>zPKÒV1]Ï;'M³H-imunify-security/inc/App/Bot/RdnsVerifier.phpUT ëÆ«jëÆ«jux è‡í\ërÇrþ-=ÅËl$eYIA¡%˜e$Å"HÙ§$¸X ˆ5»{öB‰]uò É‹åΓäëžËÎ..¢âãÄ?B—)`w§g¦¯_÷ôòŸ^$óäñþW_=_‰ã8Y¥Áí<Íÿú÷–8ãb*΂¨ø(^-&?ˆ/+—Fñ,_z©l‹aä‹'‡�'O¾ý0—D%—2“齜‚8Ñ? |er*Šh*Sq|öæúDœ ϯÂïãÁùh ú¯.ƒ×ƒó+z~žçIÖÛß_.—]Ÿfiâ®/öCyë…ûxhÿñãÈ[È,ñ|©–Ç«{?\Q0[½ï'Éûïãüùc³ÉÓ8Ū§?ŽfAºÀjRy/ÓLvNÎGŸ‚Y€ÅÍâTdÒKýyGF·A$Åu?ëê�Œü8‘=‘¤ñ}€�db9�3)†"õ¢[™ °Eœ¿¹ì4ÄÍ?{ØòǶøÞ ¦E›iÄ·qÑ#ù¯X[œ{˜º-^Ç?Ky×j‹$,2�Ň௢nh…A– ?¦5�áÅýSGáª+ž?·‹ÓØ/2‚b¬ÛYÄXÕÅեȊÙ,øˆe6e÷–ö$nº+^ ñö¦�¯~ê-Ãî„Vk¯y´šIœ«|¹õ\xàß_ ™åDG­ôº/^îÏ¥žz&ò¹´ kd"�ï ¢~Rrnd™ä‘8Vb˜\/Ïâø®H°yÿNæbæ…!†ÏÓ¸¸�ƒ >™ðC/³²yËô½<ˆ£¶"윸ñ·¿þ§ð¢(a>¬N!(A“òà^bYæ=¢!Äa—8ÕÁµ8Ä=Z?Öˆ =�ç¤r]õä“®šrÅ™›¢ÆK™úÔ½-ò³Ñ-d’‹,Oƒ$‘Ó–�Ñ4SDð³ òùvaÓ 6µrÓ3ÓµÊì®Ó.�WËÚ’ýý>~°Iü0žVÖÃöƒÈ i§1”?#þÑ­Yu¥„Ör™dâ Ø;ß`Ö[‰!)¤B’¥ÑYcþÜ‹"öðœðò܃@ñ¾d’u‡¤CÚI–‡«Äî¹\‰x‰&$,ˆ�7YBLqÕÆ2)˜Bu•ôx>÷ò’!©Ì‹4ÊxM©ÄF•UbªŒŒ,ðçD…îÚõMc™E ²·(OãÐlù–ú=­4øîƒYÇqå2åqêÝÊ!}ž‘gº“+pmµ¾øÚH¶Í2'r™L¼ÔË¥¸º:˘Iœ¬•Í'Oç-f­UÔæ·`EKÄEŽíÃÆHµ3Èš(ùq׆Õa‡äÏ`(Ñ´C'`( ì{ƒ' ¥ˆ°®{l– ^´ˆ ]ÅR°¾h/»âŠƒ‚]ݺ“$t–,9ÀY/ ÌEB\W+¡ELÅ©üYú¹œ~uÏaרøsÆxÔ þÓøIûwDí⇠A[ñaÐä™ûìVC C@¡1.ŠÍÊ›�ûJ}ƒÏΫ²sfç F’iuŠ„$™„$)VØUäÃÇD1|°;}¦¬Ô‹˜<=%´E€‹¤¶"[Ð*—IÇÇpñs{zpðÜÜ<¼ê;7¿qnýËàÏã‹ËÁéð'ø«#ÑHA¾×xné^F×gWã·ƒËáépp‚GŸ×î]þyp|Å÷žÐ@�´C[ÈУi`¥@'m¼§ž�+ø_Ÿbü”ºNry @—÷™Îy‘Sd"R°å…¦û™Š�J8¤–!<²KcxÜË{/Ýæ0èPOÒàžÆîé¹Ýå_È´`›IAé¼ â†D�è ‹—X \WåbÆeL©Y:÷ˆÌÃ#™¶(Œ€1"Š£éEˆÐ@fIsYä•ÕvE1.º­oCÆjyî>F^Ë%Xh¡ËÂKJ�i¯ª kæÍ=Â`ïÊûGßá[Ca‹}S«x÷¡-&tV® üW[¸—¦Þª¾î穚­Š ´ŒA!$‘OØ\åiÄ^�´zâ…þV¢‡Ê¼ä]¼I¸&w�MÝétÌ/#úö™Íd˜ßî®å�sëpêÎý#Ü k´Åɤ"@„›h)4Õ��"Ûbk\4ŠM¨j�îhfºXÿq$#^CgàG+ÚÂ*¡Á&>hi—èW_ùP™Ê0ã—ˆ¬Ú™JK‚>W~¢¼gOÀÀÆÀ>c…±:Â~&¹@´#û°©4ãéóVao™µ2�’y�¼p Q3Ýu–²öµ]£Å$ |13Z6³—M ?oZ9¶™´K¦ ZD»Üš½à,E]-D�G�öÙw¾sÔãÈñ‚ö¾£G�cež®b´Ä øäpÖëeÚÑ\˜{µçz¥q[úŽÔ™¾‘Y³ÜM`¿àÎñY4�á|t|½TÏ4„;�#ëúæO`¾ìš@+Ku‚ ƒ1�RŠf…ó-ñå—¢Ñ::ª\QùÖÓ|,C2¦ùÕñ:—XÎUÇ'&’`^¦R5Y˨­­rÈ$´±ªôƒõ^áQhVÀA<ýáÈ œl–Ng8•‹$Î IrÎðTGÎfÀ¡�Y*ïéŠa%&[¦Ï L{3³…:Ë' â°ã,˜Ç n­9»ÒñSD%LØm°PÚ¤¸ô–â:CLïßÒƒséM5X/Uâ`‡[Œ‘ýñªëQd¿öš4y›é*s f¢)þT‘?V׿üBr?"¹ówzö‘žŽ¹Mšô+þß߇óÏç=•<ù®»n‹c��ïàŽn�´.½Ufr.Eá™�¢d_e5*Ùg./ã"$‡ÙI<•�–)ÀÕ¥"ðµu„e^C;üÛ_ÿãð £ Q*ç0¬DàºßF¾£h¨5^FnSÃg°±q€žHF°:Â3C éU#™hRÚê«kÐWØœÄgR̓6ÁElÙ¿Ó<Ð|᜾Åwï�Š…©K@½�lÁꉌ`�¹^ÀÖ*]*'Ñ]Ê©DZDí•7m|\™Ddz8ÕKb†y‡?6Ç~·£%É…lIéLƒîi ©¸äÎwa›­]J³Wb33º²º¦ÒÐçf2öÿ<•¸ƒº¾¦ + 0Š_ޝù(Žw� —UÆsÙAÜE\o †D‹Òæt—‘«ŸccẼéRßhôv�VX†•3›–>çº¿Ý h¨VsëLP!•È«@ººÎÓ]Ñè5èJ�pÑ™üØå­55€µ«hâRŠµÜŒ$«©Uå aźN Là¶pƒ–¬áé´Ü«Â_ÕãQ}GvD´iSmþ`齨²µÞæo]I†ÍP7 Æ0^™QqC¡¦Ì—…*Ï ýZ[|˜UKÜ _‡lIaYeÚÛ¨¸JŽ”1¡!妉v­>*&i gáêsì!×>nõf êÂzK\Ä̵žŠr·Šm²WVa˃VWˆ ¬é8¹ÁCÙa»ü_§ /ääöH‹Ù^úAhº´ìD&*;vL¤Ã»šÁP{­`ÑHç;M—X[Ôô;‡3Þ• ó±ÛÅ—ˆÞážF¢Íêú�V+ ’atÙÑXÄ[Ós:ãØÇ¯gÚq/äb‚%Ï!š\jMà)˜SÁ5[7 bP¹Y¯€È o:…ZSÙP÷äÇ„JÂS2¡…ª�Ü<ñz‡O¿=è==88ìøøt€ŸÊ¯gÞM‹JÈ¡ÔÕ8û˜„…~ÝaI<™/žZ͵>MÓ#²Lƒl“4i‰^5×½©æCòscOD˜x¤ê®ªœú¨,Ž íTÐ#6EÄ»M�6é4Ä)£Z¯5‰sƒ†¯Ï�Çÿ檋´>Âc9=2g˜ÍH?!$�qAä©‚ïBÜÓìÏÇIGM§¾I 2,‡°‰Å¢fÈ™·h‘$-&]ºƒ#{奂_TSøœÉà"†öÄ€ ˆòp%²;>oÙê±")§!¥xWŒð�°–’Ô<¤-Í‚Í%‰½9À�¬gêú åN ƒsÈ;&¡ÖÕvæØŠåõ*xÞ^Û…é_&óÄÏzÁmDòG,ù‚T« #êžÇ#b!ð M©¨sd@º#§¢Ó)e)ä‚*@•¹‚âÒ­P%Eþœ˜¹âÔ‘†Ü7ò™{t™ÝãËR7ÊÅ[¨òÆôˆ#qñ¹Ö�FÑçÛî3Ñ|?øèË„ Ðé¼Êvéî?|­7ß_K¨ØÓÖçùâ=kFKûSÅÀ’ÌBNÍœlœX˜zêX~„ïÈà\o 8#uæ3ñíјµLgfmÄFë*#Ú¦sxÏ[ÁÂuê 1:ÛR‚É*õ`›7®-I4ì¤�RЉ R¿=J‰Õã"“阸ßÕ*\»c�~Õ,oŠÊfˆ®ÀR+fø é3Bd÷8žÊ>òéUdÝÁ"ÉW#x_NØ»'2çcÊc¦ k$˜Ü‰õxßU!Ð ‡º/"Ö­/º® ‘2•&$$âßm·%ÿ÷äp·¥Ãp�jª«¤Hvôã[܈A)Ÿv#„ÖhSºa‹°Èú§+B…èÍþ`ÓPÅ”ж–@#)+ޢІö5µžÂj뾕¤œzªÚt3"ªpQ%4¤8h#ãÒ,o×Ó�?ЉAçJ0Uª�S«ÿÚÙC6þimÝxš�t-msÆ9VÊWÇ÷^XP†¨¾Í‚0çâ̯a͘«f¹§€ÅN‡Eµ ¿¹˜o-õµ)Î.†C\ýæâ÷¼õ°:êP£Î:æ!Õ(’µžV›ÉPç uœqŸ‡;Ý'—•TtÙ~E~£r¡S Ð01�ìL�0-Þ�{ˆ¡´€Ú¸¿†ÇÛzÍ -�AO·W÷Es�b¢ÎֵǗ�/S΄‘ ž[[K¥bÒ¦?¾ºó|d“[ÛT“Ý–ið=Ûgëá †ÃëÇuÇÍí^ÍbCÆC—ß™ý…p[üºæ„8‰#ª-Øœ‹*ìAÄDnº7ÏUR¯ª\@ð%J\×Ð�g|@`j(*µò%+)“°S††ª�‘Â.5ÀbägÄFϜטú3ö±Iû>‘Ãî.q1óKryÌ�’M‘‚ô¢išZå8¡î&çó£9g,›.½Ê3&°Í—Ñ]˜~KÓÁµRÎCq�\“m®¦`¦ª9ôqªG‰Ôµ�uu¨Ò‰H²þÉ·‡P¾2C%ûõ>F®æ˜ªÍ�¼BçfWôÇ릢Xk�;Üœ[y>…,UWââJˆðQúIEè+öuœ¢]¥_¥^ü°­ýJ‡ªª×6ÙŒ™qÛZŸ]Ù^Î,¤\‰ã¸Œ‹zH¥Öñ:–ù½!=Ò”%Ž*Š[j¬yºÌÂ7c6Ôö��)ºøP+€è#sËÙÏw *¯§ô®Â•ßkm\Á¦lÿѫؑ•)Ú Û_eSìqùiª*”%t{ù7T.Ùœ0XF [‰«]H*o È´�ybŽñ�0ö¦ngÕP�wZ¸¬ñö�R°Âè-©[•^Êr¡t³ž]Ð 5ëÖíe•&::¨5²5�®Çx¦Uâ5a©êS¦’L˜œ^;€š¬èxÄxˆ0˜øÊ© Fã7WÃ7ç#ÛçìÃ8M~m‹‹n»®Æ»JŒt¤£Îb>·Æ¨Úwêö^ms‹�{IžŽõ)¥:;›A8½ÈÓsÆWe Úr\iÇoGë{qXS‚7ºw)½RìRf`SëßPìn;ÏþxÑí“ÊG|ÈlZX³. AŽUAxL dÌHò¤ÇüZéš6¨sˆÁøÇþåùðüyûóŸNÞ¼îÏŸs¿k5DP ÷ߨʺδ©´^SÄ’wm¡•RqøW:bPÏ Q|æ1Öy'˜¹-Û¡°!a× ¨˜qyñAI–yœœ}ZqðÆ5¦p¤^ŠÝ9^±¬ÒÕoš@_½Q ìî½M~Còd<@½ÖWöù‘%"{¡Òù À—*çk‡jÿjßN›ÜZöû«Ùl5›ò82Ÿ¾øEýKý]íhgù ~2Û ›dGA²Å†ô c(4Ó; ¯æž®1R¹r�æý³­Tõ­-téî&¤Çjø=…}pÔ¡ÖõÒÄû"Hž©�äãXÇË—ñt ÛéUÔ´ÒZ±£x…9þRP/¦RS¾¢Cð¨(Ðõ¯O�äj ,C¦:e<�•ê“ÓáÙÕàrü¶6<é_ ÆÃ {íô¬ÿ ßß>]Ó�It<u$Bm�ÔR¤åG÷¦šŸþëâ‚Ë߯ÿâ±{yàN,åsöÍGÇ´àœ±ë§ŠŸ™RšÊ>õ�]io.©Ù|DOðÉã4íd)&gÀedszmúÐå©VÒFM«G’ša;Œc½<§HÊN¬,²kôGQÅd§ºG&Á zé�A¹mPáž8Ý;Ä^Iî‰SU·/ %w2UVtÝ1C”ƒíJÃ7E7öÜR�ç¬t&Ó û'tÍQ-|-ãHZDĦ±Ê… u45†1b¥ƒLø¸ªÇ0špö:‹}3U¡Ï¨"é€èi�«†B~©2Šø•hjÎ"^Ÿ^¼¦WïÔI²š°º±#M¼w(´x³Þa£¢[Ä–µš‚ÍáŠäƒ4ޏgN"à3.~q:ó¨mŸE¶ÅçiQ³Þ²Âè·`ëÒMmY0ÉL‰ü“©ÿîøç8¸ÒfË;¿—ØÕ¢ÈÕÐêôJe‡ÄO«çãÉ�"k˜8_žÐý±xÄíβ¨û‘`ò{$ºSy??ã�z¡×ž=ñ»×*3f\Ú'èÔ£Õb!©c�–÷½zþ·{=ªUõɞƢj°>=f¶FV>.2õndáuè%­Ž-^ƒ§¥¶žªNßLµù–'æ´`ÓPhKhôް=‹bqÝWu4ë%M›0Y·Rr§p›ß|%ŽÛwcœ?РçÔJd9¿ŠQi!“Ô‹üm}< (ìñ¹ùýÒYºa3sôs=±ÙÔN!7bwSϲõÜKßujb|ÅÔÄlë×¶ô“;Ñg¥wˆý#¶ ÞJŠø ²U”{õwýGÜ]+æ¯è)ìÐ+èM}ìR÷!Ñß5 Mç_RX,º�Âv°ÐMç�imª¶Í‚T–/‰|~?Ľ0S©˜ö©¦Y±˜T&qš“š¿IdÄp©©^[tÌ“äÍ'îúH„m�æ£A~}á5Ü\MÓT×>³Åà!{©÷ü{‘Ÿ·—�Éo¥e´Z¥%tí]î�s�z)xÓ3é>ØþbæŠÒ}üßPKÒV1]»mIç1½ /imunify-security/inc/App/Bot/LoopbackResult.phpUT ëÆ«jëÆ«jux 臽VÛnI}†¯(EÑz°¸Å›¼Ø!BHŒÂËàõ>X²zz ¦å¦{ÒÝF«H»ÿ°?¶¿°_²ÕsÁ€!Š_–f˜©>}êÔ©jÞþ’ÄIµu|\…cèédeÄ,vüóW zR§ …Jàó<<‡Ÿ¶�õÔ-™Á: ‡“ö«vã¤}òºR•G±p…Í#÷øCÁQYŒ Uè G×a8¸¸þ�¾{ý‹qºŸ¯úý_û;—ØÓVk¹\6¹ßYú�›\Ï[gL¶(¨U­*6G›0Ž9½ŒÝí`ž*1]Ýv“äöƒvgÕ2ÉÁ|ž:J�:‚¢ëX”Ó†AÆc )Ü ©u2~_ƒÄè›E“Ø ‚uÌ¡­Ã\£�P3¸Ñ&º4h-pmðÈÂX8„sdÒÅPbAÌ”Ocvê¡0ú�Ÿÿü\Lè~)Sv‰†ä:ŸL.Iàöœ)ÈxÒOºY}ê†ý�›@†m çÁÍå]?»kÎJñújX;Ë64ø5Eër¬'… ª‰•Ht­·\ôF½áõxð[?÷:„©ƒ¥ (­È"íL»ÔBÀà¦ûéÀ–¯Û?×iÉ›‡!$a�»Z&”úòC{çÈ››_¯²LÊ�6gPZÐ/ïNÿtED\¬£Í$fؼtQž¸¸Æñó,KT¿×[.—]Wqá®/z¡œ¹aOÓ…-xªïÊ�„R¼�Sÿ*•Juß_uÃL¦‘›·òMyYGª; B騕ÊäÂI¥ë;Ó8‘Ñס´LƒL~RøÿסÂSÿ0S £Ô¥ÇÎ4Œ½›?B/•‘»�ÿú#ò0pã𯯹#|œä™ãÅQ&£LÝGûêäª{,oe' [—i§NÏœ[7uä]§ÙC„.â¬yÒàlÕ=”ç©;#½éíTâz’Õ�´ïãé"�‚éêãa’||g/w�¿O:^G?…}G"•€#5u›Æ©˜ÄY'IãLÃÂw3·«•è*C%²¹½ŠXÈ“hŽÏO‡ÃË¡óúp4pÞ ÏÆ-Ó]ñ¢3V…òæÒÏC:Ñe�‚†ß®›Ç'q|£š­±è‰1ðzL¥·òBÙï»ÀÇ­›IxÙodHòc_*/ ä²û«Š£±˜©Ã#ÜDœ?ðÉ»i½F•ðãeÆ®¯ÄØ CžBÜÌA˜"œáÓ©L•˜¦ñ‚v 0†Ñ«Žç"§âÖ sÙÀâÜ"8‹‘P6Oã|6ãsɱ~-Óq ¼¹¸•i0 ¤näƒØ³?Ã*‹¶P±ˆ€hÍȬÉTŠÄM¼áÒâ0 Ç_[Zê~àã41ÍCÜ¡ á@Ó®8–hü2Ô¿Œ./þþŸÿ@°ª€.0 Sx¼YLò>†S>¢§™Å.*�€�(¹Y¼H"ˆ`&2ÜЅµáL½,NW8°9^ÄXMz𣤗ÁU†°ê�[]X�xò‘ƒ±HïF‰<1d‘-�XÂå"y— /t•Az¤™9j‹,u#P°ð§rP\ð# Oœ‡tTä&jÂRó I 3"¯*Ò1ô˜-ƒ÷‘;•îT5pAãûøTˆŽ¸�Ù2NoÄÔ Â<ÕŠøYjáFE(Ý[)ä] 2äª�&þä Æœ€ÕDRt2}Ø$Œ…Óœ¥€Ú9î-€�Á+^˜ÌH«kø9W—£Ó_„ëß a{ƒ3Ç?êu_õºZÏ»øD�Â*°' ;pdpF,Âhò½dc!pÙB3R×Ãwp)µ€9ÃÉ–[‰4�« Ò¤Xthnö4ÉÄD‚•‘‚ö­OÇ슴À5Ì @p€†º« a JpÂ…Y GàŽD05<”‚”õLÌ�'‹$.0 UÔøÏ À Å÷Ýýî>VBš3ðpÎÃÂRþ¾»»Òss4¼¼pN./ÿâ o†ƒÑ‰(~DCƒß1àwüŽ>ˆÆKCãìòè/ΛӳÁÅáù@T~€FåàÊI5{[›d#‚[W³ñO/ö)4RhŽ×óRwÊ´Ê,ÃÞíÓ5Ú€hçòêúôòâáMñ19 ÿ¹Êk”Þ.ÃÃëÁ±sxmH>@i&#ô½ÒwÜl�ÞÅà—k u=8¿z,=D¡£±ôvwÐî šÏÁK =·1(J@Ò8F8Õ' Õà3ÊÁ©§Ï;øg ÃxéšÔŒÏlîf�*Äø,•tS´WY11¨�BÛ n©¹…òÑÄ)LÍ,í¹:@è²ÉPkbZ‘Rù[»íâÓ^)Ö ƒ_çôâz0üëá™3]^�@°/€€gü‡ýý—»ö´ÑéÛ‹ÃëwÃ�ø}{}ÿ/Ž«|y<¸ø×³ÓÑ5AÈMSwÕÜÝÙi,â¿ÁÎÝFÿðÀƒ.$Vî¬.F‘Mã;þCú3=„‚3þ¸óÈŸÀ©ú`Àø7IB¹”“›@?˜A@óÇòqËFÃáDÅ!ž`â‚�¯y¹4ŽYp4ôgð prxZ˜IJ±ŠØÓp‹6ñÓèWð’`îO®¯¯À�¡Mo‹9xx–!Nê±Y+4³ÆTW?5?"2uÐØK[$sL°t¬77°ˆ'Èšz ABflæ‰H°†‹5êü~Ž ©óâ¯mŽ^ÃB>l¹Œ?'1ød’C´XX ƒ›wZò¢öc‹þ‘‡i–¬$!èëÜDó}bÍ"p©±ŸSØÜïu#ñÕª,³Qd¶�„}XÀ4œ×Öc�©F““|Ä‚œkÇ!L�¥fE,m¦Ð®¬y@´D \ÛÎÎD¢ªóÊå�HAÞ‹¦h²Ü[5’�^C€"sm©8oíÍT²óÅÂÈP"*…2Äq##ÅÑ¥¿cèÀ€cœL¡D ‹l’ÆK…!B>aŽU‰ +Xæñ$ˆzy�Ÿì˜À´ ÉØ­ª@ûÁ·‚ ì3Ø{”;Ñ 1È�µOÙGxm2×ö; )í2x÷‰Š¢“°ZÙÁ¸ D $ƒk¸'ã)ö 6_(1t—kÒÑhƒ=¹Q�#3ƒcÚèH°;wÒ¯ˆ£ƒGJO- Õ4«k´ÄyVu†xh´Š�®{´°ž²QZ5òÚfùêG¡d8í÷7ú== =—¸€þÛ_K‚YL”D_Ë‘Ã< žÐÖ«­;)L'r +Þ³&lúÃ'/­ƒ/ð¹:¾­AùuîÝH- .EBb â©8:=ª2¡Rs7�;ðÓsJ$Ò~_g‡ÑŠiH¿Ù‚Ä"A{½ Ó[ Mˆf%KLO4IÁ–Ž·Mä |}yÛÙá|ÉõbЏ ´¼wò™A#–J@Ø:ZÃîï¢ÁœÉʉÁf qð E†ðJOýð©]ŽKÁ˜4ìwâËý g1 iz³Î§†¹Y½Šõ=ZLXqM]ªÄP<8ÞŠ&|#å0¯Íâõ=àS�˜ÌðI¬ôË3Õ©*)¤<áŠ&³¤}°Í,Èî· 4c’Çip‡ ¯Ö#¿OmV æÃšùù3lÛËV‰2 ÐIYoïÝ>�ƒµ›‚–=�ù à�üÀ¾œ$‹Ñʘ-n–ÎÙ¾$�~ú‚†f‹§|û­øÓÇ»ýýÇý›Nñߟ˜�‘")?}fíÛìBÔ⨗q�f £˜â`D¹–‘õÿF,n¶ «þÏÏŸá$ ¾—œ>½{ÜRIÊa6Më’ãïêp¶RM¤eÎ6œî0I@bï;}|uO8¿‡ -ºÞR@‡–ü">ó§‹×å.øV±I_n!hp3_ËüBéG.Uªƒ8W᪣�Èçú6c`Í\ÈMÉ 0¼ZóUõÀ·Â"eFÎô†™ o°�=Ô¢xwÁ›-7¯§Ô6hr|an£ÊK']’Ycù|á?î•ðæèúü6_#ÑŒœa•“vò:|‡ƒE뾇oPð¾­~ÕSÊN߬‰ú­š¹TS ºe¡»µõ5dzª ?å~Š›5Ü8¹tõÈûµ-•ž=]É�Àq8yŠ×¬}ƒ«³äÖ“nŸ¯(mm«‘h{ôØá²Ls}•ƒ")­ÜuV@P,Ô²‚©B¹È4‘nÑèŠz½½ž8Üf±L šæýýßÿ[¨› ¸V‹»Z‰P´D²(¯ðnô…ņM±Ý†Ó�è>Ïž\<3¬µÕÆ/¯`RAºšìŠÃp‰É`ÝBRl®ØÖö1Y…uᲨ²ƒ˜ aø›åÀ»,í8ØQM…ØõË{yd‚�\ya®oÁÉE|q¦þ?V·�8 RNø@ ûµ�COÔyÎ r™Xûå &7\‡€ç©»cro¯c:s‡êKz®/ô¥^ÁÁ(„lz –Cßý‚ó$ãWLМ/_d<æ².ˆT&Áü�dq `JÅ�G@¾z‡CíÿþIdßY•¤mmíô¨þ¿³W­I–*»V±ü‰b¥z·pèTùl‰þúLrÆ–…­–>Ë‘MSk­CEgøäðë–Úvæß{™Î«@�8Jj�(”;PÌ.Þð}6D}kÔÛ•gJv: �F»²\Å×3æpß 7 ¦xÍv � ãS&Ó¬qŠf¤Ù2“µ!+((9GÈæ9ÁXtܘDl£%bu"ôû,”Ç%Mv �5‹U ‰ª/¬Œƒ’ ¥×o`Æhîk"¥¡ì6Œ¬·È‘éADY‰Éúæ03ÁÏ“|ñ¡�½C$NÆwëjMm„N7 ôšKàáf=Ý(•ˆçTŽ‹}h¬¿Æ)QõØ7ʨL7<“I¢C‚ ¨ž`n®rp‘Û 3ñýpA¨óJlÚÛä°À®ÜÓ_Q Ë® ÂÇkŒÒA^�Ò×i „ޤ^I�ÂRk$Cê~(ú !‘¢€`NÁt ywšé†rStK={X K»â,V¦GADn‡û»5™ sà2N!Ž|ÈdŠäÙŽƒ“ Š 1jÊ2TL»&•ï°k0ítD·Zê f7% ”{+O‘Ö[ÓOuˆ¢µä=³^´ŠÚ~9»Dü: ÙÝC¾–Qò±,'ïÉÔ2˜b£„½{ùÍÎðîLb ¸E÷õdi£í_êE&ä2�â48ýŒó�k'Ò4íúm8@�ò”"Ù¡å2—<–a0!QB–DY�sf1¿©sÌ Ñ ¬@z‰â”Þ¥Ð%%jº=“§ ã…}wÕ¦B�¦L šÄ¬ŸÆ -2¾1üÖ ü1–“d|3Â/Z”%仑”X`ˆ1Áöu‚N™õ¬”È ãÙÖd¹ÞwC D‹ø÷¹ÝV¤;ßè,Ú…ò-ø»Ó.g2…Ô:ÊœÀoÊ?Aéf ê¿¡k”éÊè–Hp÷ôÞ ¥Êà QM¿ÍÏN{ &î© n´°¶$ÚuÞÛÅj¬*_z­ë™P[æ�–0Ö™{“t†$÷¶¾IécK¶ÊÓèÈCLîÞT-^n³ªmÛ µ^‹¹5ÏÉ\Ý�±¡Ç”ƒo¸ºû«¶yºòRiV¥F˜YkH=¸ FæS0lúF*c»�tlˆ…. ]_pï<ÞŲ,ÆvÙ‘�°uU“*[T@ThýÒ•w×Gä;¨±l:Ež�#@1õ˜»Z»&nÊü`yGeî"ÁaKÔ <3�Z‰ýZù‚. 3¬ËpI�,+sÈû%�¢¨œºÅ þË6O¶QÔSª»çM <_Dꦎe�ñå^æ3¼^ææˆ®èë ôaß–'‚U],§Qý‡ì UíŸÁ™Qà«n"¸~±£ý’dÖ^¥8]vþübÿi)¤6Ö� ·¡J²Mjû­#áCcG_ãìÙ°cõ­õ´ íÊí"áÒ(¨$©œ9°çÐõ0¾ê5êÿÛçßu>}ôö¥ÿýjíõÐ-¡¾T¸©£~(]FŒÎ´¾U/¹ÛD=bRL¸"ÙCÄÒï· Á•Ìî1}ÕHø÷ rÙ*ݲ­¼ª-‚+<<•ÙRx¼Ún-ìBÄ¢‰Yî­@ªqIém@=0*3îûê•öÎqŠU�Ü*‚?lÁ¶‰¢‚¿ëÂYb¡\QǧZÿï•ņ³Šóe³Qç*D¶Iëý\Òå‰ÝÜË7(°0^d{›�×·ïÅJ)½Í!ŸTݳs‡>šV s©äo«’Xä°Æ{ún†-}á‹—¦±¢hiÆ.ˆBÝ–ABÁ%na(Ýš‡&ž#;0àD›5ÁÕ]RÇšÕsJFL5ø(Œê×Iâ)­' E’P3“8®wnG¼–ß’]å‹Å1 ãÉÆLëÔOzO°=¦j<­Š,¡dâî(³Aj·fg ú¬}rVÅ}�Ž—ñK�&¬ºÂrÇGx½¤�ê¶o¢S×$±ÏØíºi7ÒÞRè Ô?ÞZåémp vXR:2Ñ‘µz¨Í¶úUH–°þ:Èøã2qТšaF{Ö¿T¿Ó§’�!„EÞâ[2Á�ƒ‰jTÇè¼ W¡¸i±&V|â›V¶™&*­V›Á†åÌBI¾iÒ_þrl0‹0(zÄWˆá$œE† —¾èt¨KüŠé|ªc´6««þ–-ó‘/ÞÄw⣞ÚÄŽ¼gOŸÿðƒ`w6HŽ_l¾+ÓÎ/»ÿ PKÒV1]ضUöå3imunify-security/inc/App/Bot/StorageEventBuffer.phpUT ëÆ«jëÆ«jux 臕WÿnÛ6þÛ~ŠPÔv¡Ø^÷hºlM]· �eEÒ"ÚB $Êâ*‹IÙ1†Û;ìÅö {’Ýñ‡-9N¶HbQäÝwwß}G÷C]ÔýÉ£G}x3Yo”X†ý1‚Y)› ÎEÕÜÀ«eòv–®dnÖLñΪO¿œ=ž>þNË.ÉŠ†K®¹Zñ �“ýs‘òJó š*ã fç?½{çgï~Æ¿³ùÅÕN_]Îç?Î/ÞÒþ˜ZO&ëõzœ’ç’�S¹œ”|ÁÊ nšôû[r]³”;x݇³eS‰|óá´®?<—æi?ù‚ç\)qÅ+£6ÀWø’&ÇeÈ¥SpH¤9ª•4<5BV �TlÁ¡d®Æ>š·nԢ挃j* ÌÀ²©Ëf!*—’eèéïßÿ„„£mn�/™¨Àm!;‰”˜*Ve øBhÕ�+/xÒ,±"¦_—è� iÉ´ö�5™øl,††%%‡¼)Ë*ü 9+Ë„¥ŸF�5JT ‡£9Ú¡¨ ¦¹GQcœš¶,)œ½`†µR ³�'OF¬ ^¹´Z·h˜b•á¸ÕH JŠ©"§˜É�pu‰5O²‚LlƒPbaîBP<•ŠÜÉ ëº¡B.”Ï,…’1Qb)oj© ¤JVÙ¢jJ, íB¢Rdø�‰å’g‚^n"Ђ\˜C-¤ük� «°°äØ«µ+9rÂ`±ÇÀYZxò˜MÍ)tĆ¥)#ka ¬3C¯¿6\cO%²á šÊŒ�lºÂÕ:ìÂâ­ƒë7`0‹ZP2"Ÿäg!5 hž9ä_�§ã©íÇ‹+G›ÈçŽÖ¿õû=¢O¹%èÉò‰oð!Ù´€Á°‰¾ @CÖØ³S˜ZÅ6ô8é÷�+<„ŒdF¤ðÀ;9q›†£§-$×ÇÚ¹†Û«p^6ºpå b'œWÛîàÙžl ò÷ÖNLvÐè µ�æm—–fZ§ƒ,q² Ž5Xó–Û9¾ÄC¶— üh:L?¯›%«Žg™íÁðŠ,:Á²`sÛÜ’qª ‰¿Á–öƒÝK´0|Ô1jS <šæ S‚y±k/¹mÌ2ðˆ ÁBɦ±îL%öõ�±qÎo� V2f˜?¢¸iT+)²P”&A*…šäMåDÕµøp›¾¨�†¨?ÚùÞ2 FHë^Oä0ÄÞC‚æe~|ì9÷¾“Õ�ôÀ§øñ3þÞ{&8£cs`Ã?ù~‡Û¾Ý�¸·­Xì†V8»¡ŸÝáCÜ9ð ôvDx'˜¡�Ó€°r…XŽ-±ß>$x×oŽf(„ð‹LPAÚR¸–M™9sÆ�ân0m)o�ä/²µÕö] ’`’~k†U›5#)•�«Hlfo _B3Ø s?µˆô4W4N}1b~ƒNô™Èbf×X¼‡a·€o»1vv%µ­?´yë”<¸û"Ð¥£èä6–µqx/6ݺÓ?WrÙ�­0Ü¿Œ"³u`°…É“Á†›0®+©–¬Ü ÊYo‡êv2"O\ˆãÙùéÕUG0°�bNnp‰9”‚= ÷ýñ¹%–/­('{óà\5‹ÂF}èʲÍ—ÎH@ßwYÂîF¬5àF´O‘ a WÖ?Î?ã$rØž °`A#ÿ§FyÙŠ_ ОÎr3lÇ$á'.=N0öGß·õã#M¨;›b�IÚ:ð}ÑYCEíØR¶G‚‚·c[\× wyÑû^‚ }Ÿ«ÈR'‚¯¾�N=Ãîõ²%CÛÃŽ!ö±wO"·e_Ÿ^^œ]¼òÏ!©A²?úõ8~yv>Çf�øåc÷¸Óúƒzím¶×ƒÝÚíw‡õ°sdÿ…ÔAí«R§û.g‰æ˜ÕúÒb}Ø{¿ýú‚�нsO;Ìw$’»zÎû“„·pa9²Çÿ ǹо¼ùþ<]NGbøz2]Œ.g8~•ç©m6›¾�+G¸pßOÖG‘\zÑ :zò$öÖR¥ž/™=âî‡ñºˆÃÅö‡ašþð2ÉŸ?1›úyxçåa‹#HÏþ¦Ä*÷`‹$ùJŠy’;i–äÒ§! éåE&ûzCo“,¸Î¤RÎÂóÃx)–Q!b^„Q h~&½HøIyó$óò$S‹X7�K„”ôºü;Q’¤sÏ¿…a~¨pÝ<°‰é*\_x±·”YĬ‘lbeø$†®�Ó Æ+%ƒ"’¼È¥—0\$ !ïd¶^–K`;‡×¡2;C"©ÌT¨àøþ÷?ÿ›æ® '�Šet�ƒo ¸w¢pæ ·y”·¹7‡{fI$…âƒEáÈ“¨Œä¾Va öEÿ¸L§èGžR¸Éóp!ý­Iñ÷'OðЬ�­’äVà�Ó §a„¾P Y‹€i^\¤}œsôäÀ‡sq:¹ºtß\]ýÙ�ή&Ã×#÷ô|4¼¼¹'¢²ž¸JúEæ[Xv59W“ë<�Ià…Ñ–¶œgÞblÉwi’åû¸9ŽÏ¿sGß^_Mf{Y!¢.ªñqZ—ë’� 'e„:Ðçû°X€¾u¿xwxÛÃ,w|9MþcxîNG§W—gS`äÙï¾:>¶—šÈ\Ƥÿ›0%*wŒ 4¶œ�®iO ²HX*P}qÇ„^i-2`çú^œÄ¡æ�TÀFŠ8 Ò Pð*Nrdá"¯&€)šÚŠ˜•2gñˆ½ŽÔ* ´Y'Y©ºÞy:"ä-rpG°ðÄ.Õs1—ùFÊXÓez_9z·Z)Ä­”)Ø�Cg¶£ÍˆZWIÐݯñÏÌî¾}Yø·2ï¾oÅt6œMÝÉhno ÊQ�ÄZqš{¹š²JÕ¸7W7“),øûÆq½ ƒ|…vŽl§‰Ê�uÄä×õÖó†ä:`ÿa¬dE,@B s�ˆ>1ÏÏ0Íî3֧þ†–àƒ”‘;‹ ü@ óÑçð EOJ]nE�56©£ß÷ Ð$x\(Ùˆ@ý4ËL˜¶;޲;üœðЬ¤7Ÿ´Ä\/\>d ’5hœ_5Æ×õ£>&˼mW¸�ù §S×íÍV ÚÏÅàØU꫘_§P&ùý·×}<³±>ïþ)œòRžIt”–`ª»r˜Á£õÙ°¨|f�Α^éó-R?²*Æ´Ì*e…@åEÔ'˜ôá ÝX¾ËËβ€lŸÐÙ/Ž‘PЬä]mÿ{óëV¹ƒTêl°Ø lçÊûÈZ`¦•fÛ«&£W“ÑôÍ^ž“õ |P;™(iy|z–^”áœàr‰I èÉs}ì°wg……#¢ä0±AõXfdô˜X‰.¤KþJŸR³Æ!�£ˆ©é¶/^#žObkéȪÈã‘{U�mù«v™šæö:Ì p2e]DÐ BE`“9dÖ–2Ç,Ùˆ£oìœìž€MB²yÿÒÀù}305èúé? VÛQm°*TµŸð�K‰mǪèXñ¢ªìí¸}Ò[ñ´ ‹#tŸ˜±Õç”>œ&<�¿í8É®½BÍm‡�pæöëï[võ—Ê?4ðD["Ž=è˜ `ø…ñ{JX=žʘFÞ¶#pFgd×Ä:4ä°œ+†àØÈ­ ‘Ñ€Ê�š£ ÅNÞÁ„[lH€»®Žièû2E[ˆ5öõvÃ34¬‘lÔæ”±SÆæÀ6ת2mñ™6䆲S-˵˜ éûË(™³”‚ùó]MÃÇíx€�Õ(^$™o•áŒÔ‚"#ÆÅJñ9ÅÕñuY-”‹„áÓ©r!‡Š"j†íøaæaŽÃáÄú@@ˆ÷Â8�©„?â\Œã89{©�'“G§‰¡9¹]\M¾sd ñ d€ËwÅ9|Ì%S¿�I“Uí}aL«6¹X zŒ+¹¬fås\ÓéW¡ËÞ=UÊ‚ d…ˆг^Ãb¦„Š;Æ Ë,Ñù^j¢"¨.Œâ66À…Uˆû©xU䔮ƖuUµ�yL ”ƒóxÈ7ql½Ânª½ EwvâÈŒÊ`ƒ8VVÒ€d™ŠÔ™ÂÖn–j–ì…DálFf gHF2ÒÙ2±ýõæF¥ùÙ+Ð+öà9—¸ùj�ŠÍL¬¬8÷Å+ô (͸©¶GÉ3‚ý Ù¤ßð¶–ÞX÷OáÀAî-8™25k-@ßk ì¦äEÒ×õ®¶Š3Èõ5â[°7+Ã#C¥PªiÇο:/H´`§6gUq‰G¹aZ.;N?na¤Q_žÜ³|mê·‰Í�Å&ÚÝHôHË+Ñ®[`Íàbäz2½… R}vÇŠF0ß�ÖÅ£Q¼VÁ¬µ“©Ý…ž8›\]~: g£žA—ñ’œ †6ãb(XÉuŠÕcN\W’k¿q®]švVÀ(2ñšyº:íq9Êñ=€1‘ˆÂ[©ïr8¢Ò¸1C 6…>« )‡j hb»,ò`DÔ`™Im’üfó€^á H!Œ*#ϬÚU‰H?ù°J'BÁaø2ɯËCÙ…õU¯òH˜ù1¬ƒj¥�ȉ8›kÛyÛK²í`PrZÆÊçö„ï;äT:q^øvqÌ ÕggÈ{ðå˜&tÅ£wkP#ŸÊÒ Qî*Äí`¦Ðv·)³,ÉèÞCvÑAË€°:Kj·¹„[’F+Ðþ‰¨=…­Ö¯LqQÕ$jƨû÷¨öÚ£Û7-X¶ðƒ 1)'“ÙÝ<&0=8¹o‡“Ëñåký{Ôj`²€ Ÿ}�µóö}!•‚!`<Ïu_�ÏG�³š_ÏÇ—Õ¯ž†%Àw-e–‚ïÉ Të¼·ÓrnΦG²¦«ú.·Yø�þ:,ýÜû‡tJ ïiÑÏäTÆâ»À˜y[«@¢¤þG7pt£ñ˜ÒÚ¯)¬ý£]”žÖì)Ôªˆé=[ÈWwiÛ®”…Û«¼A[ —”«{`ûŽ£Rdì2UgÐ#¶R«^®3ŒªÕ&ÌM¡CœÒ»H‡ûÊ �ŒéåIb§ JÔ÷u*øe‹bIpÖB7…¦JÃ;è9ióUæ©Õá£|“Â-_€y8ˆTwùÔüA$yé°f¶[š8“";G'V7sº.À•É6!k6ÆVmc`ŽŸi¡[@/¼P2Ɠȉ�ƒÑÂä�'Ö2÷Îä°Å—ª�gÓhKt•*T5-®,á…½U¢t ¦›LÈb>‰¥•Û­¨‚_ÅsÛÄï�¿„Á~ú©ÁêYàS½[4{ì¦�éGÍJ»m7**%=“ʙΠi‰¢�ï±~ãÌ©¼´sh¦xWútõÕá’•ýªþ°¸,/›[+‡Ý›Ù)ØÏŸu£`K¡1à{ °ݼY+Û�‹ ìFA tº˜ˆf6†ÕS}w«Ù'zV¡XRRßÓK¼#´Q.-¢«b£ Ô@ƒ‡Ü¡#à%‰­bkiºjkùSb†J— ¡¥ÙÕfCðOïØWvªr(3‡eО]¥Øhù•¹ô½BIM®tOtpä}ËšiÙ¤` §¦O°ª�<ˆ·Ô7Hô°§ëB•D°û ßKl¦†ƒ ê;‘ÒTñ¼™¸‰ÃwTÂUY§õÐÆùC] mQ¢«[ñG눦@ô�†òÍب[öœžðdGh*¿gÃïÜqÕÅkwĵUWÑ(J>Ä�6b¶ÝM+ŒÚPrª¬�ms¿-öNo«ŠZŸ«õVË/7ÇÅþ*ɰžTÇ ÆVuئQAÁÜÅ)nFµPc‘ùþ¸×ÞN{øœ{ÀŠ0Ê-?Ç?Ön:¹ÊÉß� î¾\Q/UÊÇtŒÝwI{#ÊN§ÅÞ~"±3üþƆ}´:y¢ ø¤ŽDßÒÆîƒúÿû¼ñ)¯†M—Ð ¨ÿ\3Ïö':z,Ävè;½öÖPÝks¢õuãíŒFÝ£MÕÑë ªšV~’ÊZ-þ?¹|=àB3µç˜DÆjÛ¶±z9�–’A?ÄOhU¤˜‰.ÎZROyºJ�5é-þ¸€éªCí“‘,¬wÉ@‰¾J¹@\£”¹³1™eÙ&/ÈëÉ€Z9ä;ÖßÕºC4Hªb†9Z"†7lU ü<8\‡1v øà,€ÃµôbêÚ@9ò}Þû©ö­ÑµN*ÛúëŒëŠDš_ëaeïò*ɦx’ØÀ“KúëÚxâúËV« /5|óùë+Ëš^õÅ4�BJêYøs�:?ï�°+T)}~Rû²“ Bˆbt> «>uÉ_N¯‡³7{Xì5@榟!^‡‹Ã2²Ô²ÙŒuMñé5YЕÿü�ðWØC]ÝÙÞyQA—<À�¸~CíîÅð[Ô·ß?sæ 6¾fÒ÷¾1 ‹õ2C Êß�¼xÙ7E«þFz·ŽŸmÓ<±Ž£%ª»·õQPçËW�®ÐŽàXÜEÆéƒ7-æ ЮX_v«´×l´'Àwü�<ÞoµJµæ±§º=¨’sì›>ÒZCU•ORJË�'.¿½ãÄFßà‚ûqpõô•nü?® º5k©¢Yk,Ãò~VE'[e­ˆ¶gÄCA¬%?¨ásŸQIs?P¹WÕö„÷½½Ž¿T„§\‰7ŽÀ”Á£{` USOIu_©Í§Ù/Z]{X�¿ÔÂ,º(¢²3YRÀ?µvÚb~wrÂøT©Ó™ ±Eµ‰þ~Ýhm¸ýU´ØZ‰÷#ÐUóƒO[µ›h‡AU¯­oÚìnmY/½È®Ê·ÄËG¨öþ¯þI–ÞºïŸã(öÏ}T»î}‚'ôÃhPSrj}ìÈ[? h»`;däƒwõ6Œªë5)ëÙÕì ‡òµXh¶ãQeâ¯Û¦jT ÿctâãæ,KRªä6¾0Â{­9ÖS¸ÐhÝù)&ƒ ÐÝ—+†ÏëP)*ýö·vö3DzLg¢ Ý~\EÐätMQ•õ%ë{bˆ¦4ŠD‚×£&³Oé�Ä÷¢³—}ø0» ¦ßœ÷/±bË¿öö�¢°•â–d°ÆDd??Ó:ÿM–¯ŸÑÏ�}™œz”f¿y=¾Ä=*Ýv:˜Š¸þi{M,Ç6_û�ÏÞ³}-Yc@÷`éO*/QÛjßeì¼Õßf¼òþÉÿPKÒV1]4ÐÕÉ�^?5imunify-security/inc/App/Bot/HourlyIpStatsStorage.phpUT ëÆ«jëÆ«jux è‡Ý;ëvâFš¿ÛOQããÑ ø2I~Ø¡;6ànÎÚØƒíîäLfq! ±�•dìMèæ0ˆÜ;ñ ž¦jøSxöJȘ^2ô à£J4l°üFªXR@Ø0Bôb1‘HãðÞ Œ]ÇøVIw‚;Ÿ‘NUŒ“(‹àÏï^ZÇ—OÂóœ‹déCà{¨fð–H9E)Њ¤  ¹H,C‚¯G˜�CRQ¿d øF¢u.à�²Dà{gW#Ò‡4ñ§NõIè™R±†/E,¡Z«uàÇ1CaS”ÀLWYNu`ñ£˜ªty„˜H=ŠÂÔO’(Aæ¬ÕïC¡Ý‰šJ؉ÀÜDIÄ8�ÿéƒÂÃG~$Í´‘FüÀŠBƒ'ÒS 3r-‚sÅ®PÓ8}$j•ÎT žôä—%#é"J°¥Ä4KÍ òÀáoû�=rn µ6˜wã2îâ×­­™V¢=ì 6m•*RUp/Ü(´[Ç×�7ýŸçÇ?Ц8øæÈ~srqMéÕ<È¿y×é·»-ómSì 8tG/½sùàO³éœÂ à–BàÚœƒQ¿BڵDZ ÂAßî•z%Þ%ðO O‚H ØçŠvÓ’îe"¢á_�h1Nü{ô;³Ø–¡�¢Ž²9¡ÿÎÌO'âý¥ˆ5òª @uŠJ³”ö—¡~÷*L‘1«M«ßŽ‹ë㓳XYŠš Ê‹.7—öÜyÃ( Ocµø¡Ÿ $8  êè9,Þ OÁnP]TvÈQ �\èZúŠæk{vMÜ©G ´}åõ›•Óo ¦môÓ"P€¹õBßùqaöu2là’ÇÜ#´Ü+Ü…ŠŒo˜"þàݬõj7‘1Ês:Ud�ÈÔ�¶È$‘�ß³0jÈ£W‹LBøƒ13 Éë�j™9'>˜,â­�Í�¡n¢\±LäÔ¨+daŸ€wþÜc*CWYÕŽ³aAo”…;Rö$sSÇl©‚ù¾x±ƒ’©¿¢'@�QÜü9«¬y^ÅÚ*¢âsÂ0® 89øqv>•‰Ïü€©7áÕ2ý+K3ˆ†2`ð5ŒŠ! l6�HFèæ˜- „*ïÁ·"J ŠO6:gàzÁ?ÊÔ¿W"' 9äß1’ÍHÿ ÎZW\?¸”,Á˜Œ~Cœæùªñ¬{!*¿!JÞs¶LrÔ@ôµV%¼&ÇcŠg‡Ä…^ö• 2'M óäÆ<9–¨¾5û¿¥¬¨{YÅ䦠ð$›R°êÁçPÞ½¬hŽ˜ÂÁŸ!@“ T1þåÑÍeÍ�œÄjÍDjÍ ×lâ ẜï™ð¿¤õlrv,”ÿE#Å{[æ›'–¸D?èp2CÌai.CvpÐ9—)¸8(‡dúdcÒÂJ…u0 Ñ[{k �GâW+ðÁ Û”L=¤™¤$yºf£á¨X&ªD�aŽÖV.H ŸÄqëº{Ѽ÷2aÏ�ôÔ´S쀷c\nB0ÐÔ‡?•Óø2„‘„€2|ì@ÎÙ Ñ©�iS> k-\£¥÷‘ï­q% )¢Sˆ¦F<­!?j9m5F©É=çkÆ™L¼wp€Ï^äpÁl0—Ø0C˜¹‚4ÁÚ‰ÃÕ­ñGDÚl6K e!Ãä¥OôwwW@�çêCÐ Èè oÛ¸|{ÙèEW Ôàl=Êzt£ík0t!ž¨×Ežú ¨÷B41–ɾ>3AU(ˆr:G¡­ÁÄøñj 凢~(‘ W-‘Ä@ˆ*³ñšÊŒÒÙ`Îqz¯FNèðp.c3§6Sì-°"åûm^g·æº¾jk.Ó|{9ù£@Š0J€Yö܇‡¸â„8¬qÄT”×FëÁ«:`.U£>4ñÑèå…ùÁUâæ©//Õh¥"’SŒZ#È ÅTÝàe‘PL3U?x'öŽ·~|+(‘E¸"4µ½“l•=¿8µe ‡stT³ÕF@Ë…:ÓiÁûÊÏ¢®%Ñ”Â3ÖrPÁ…�6a:ól sx8Br¯°„ƒ’¶ºXÁØ�WÑÜ Ý Ó˜CQ7€«~Ä»´h]øQ³õв8¶Ðâ‘IÚ7y¹Y’`�Å#„Æ$ÚÅÆF]ßÁÑ„'ŒàCCpeˆ�@¸è`ÍÇBÊê™Î3�l¨ˆ#×ç|“´ —è"�¥0)=jZë²ò’°V ¤¶’¯s!Õ Xެë¢ê¦ðóÈÊ úªR-`¼:ﳸ°³]õúƒ¾Úøæ²w^sô�˜Ü>iÀ›ÛRW:ƒðœÚ�Œ«þ%(ˆÈë\à°GÚt7wG–ڋǼؾêœuZ×â¶„úmíÖú.x ¾ þ‚©åM¿Ú-¤ðJºoÅiÿâ\ÜþÊŒºïßvú�yxè„¿òÄq¯½ðü{|¾]cT +WHÜ8lf2}°qZƒ•RA¹À*û|@ÎK;äÊmtÿ¡ÔæWµ}H(Ó¶)ƒÿ„½yFï7XÝ‹ZÒ�P¿ {\"b ¾™{a@)„%ûYR ¦”Ó®?@p©/ø´¥pk ¸"ÄEYZnà3Ø2ŠÔô¦WaÓŸ1z:´¯J_—¡Zë‡uÿH¾\®.¶ TªJ12ÓÀ³mAî¦àaÑk¸Y�F+£ÇÎÔË*5H£E®>B¤¶VÙpµGíì¨'j µ¿·q±'YˆÎqÝ¡WX<%wy«<Þ—ï~Úà~®;9‘ï—}ÅÖ̹&$reÌBysÖ´*ýºNü©É¾6˜ ààÈö¥Ó(.å:vP€íÞá£È½&µ %mÔ°ƒò6Òí¹Î},5µh 0ç™u =‚T&ï ºQhÓ nð[ý¿ŒV Àíüd!¾m|'vŹL|Ù>û{�=á„è D®¿ºzH`&I�€AÄ�K"@ƒ¹ÌÄ»ú„·êhì3SÀº!ý»£ù ®©Ù1AC�AVäJ í¡â¦'Xž—DȆFÞª-ƒ,Dò7WÆtn•ÓRͼ¿pÂÿ8¨Rº_ÿkä‡4…QãÀûyóM=Z½Y")ÉóužÔ1Ÿ|χ léé÷²¦8‹âõ8ÀÚ[Û¹›ëŸ,·äÌ�©è$ãxʼ_¹0oíÃësƒ ¯\hF ¼�›žÝË•+ó–?¼º¡Mñ©åÞœÚa‘¦ sõ\õ~wOž�˯ñ‰E݇òˆÏQÐm󀵑¯:�F̺ò§û5ŠØäóþ,êž:â´Û9k;_éZ….~Uj•â6| +b`ð¢=õìúšˆ¥³ªæüÊÊ¢³h\ù<Óü �ÒGŒÐø‰Cq>'Zþ°ØÜ*”‚>¡^ÐV ã)Ú¦êA¹¥ðXö£4áÂÌÞo¡)ø†—ŒþŸ ¸°²uöõ1óŸZSúPªû;´u{S-´š÷)}Ö/®ËºÃ‘lE“õ^&åDó£Ú«¥Ö©ÕÓ)¯Å^1 G 6Ú¥~NqU ¯¹P�~Ñí›Ë³.Ž´Å¿w~2—V(¨pÉ�]Ó‚‰;D³È^«Ñø=Ý”´ s¶“L­�ºåÞ} öþìß5Äýçu1ÝÞU§ µÿõEÙ³lÒ1X= *bé»ã³›Î•p¾ò8Þ–ÿíW+vÙ:e>c¨<Ÿ1ðÙE>PýÜ Äòsùħĸ¹$á£~¾Ê𦵹qý »Gs›ng[�`Ç@è–6ßgõ"¥ÃJÊŶ¹¨M¥Ö^|ÝÔ]¾éi�±²º…·5(ŽËÕ�žù9ΕÆÎ‹FZ¦Ÿmî_"*™Ûî $�ËAiñî”Ùöõ×âvçê»Ï°Â^UÑ×(üs_ãuH'Ÿÿ=»½t ƬãËþÊ ¿8¦nÌÕ§O ÷þb3*Ã,›Ç$4Ý` BçmþíJdÇYÕ™�¡¡¡Ø¥©AÛå^“H£@¡‚›Eg·kûë‰å»l—ØO!?ÈÂõÌEc[Ù…û²ºgµâc4b®îbQÒµþ™ýõ˜éLšŸ&�ð'NèpéGBäqŸïA.JgΟÏ?ˆ*œ Uæ~eÑ=½‹kÑù±{u}%néÖƒ€°|kúù¡ç HÄMïªû¦×i€ÞÍÙY­X\”ðzwÜo½=î;ßT—Ön›rľìÚ?kE»sz|sv-*•ZžXP‘]ÞvÒí÷rö¿[>¤R ËåCöV®-eb5¥9F{ŶË~÷ ìe£Y‹ÝY�Þ›n¯Ó4:ba#ŠW�ë¦Ô®ïW¾<óÙ`í…’5 Œ3aÊ\Åêà�‡N2È#’ÃCs­›Úм».\�ñ©åŸn ÖñÂ:x^RÁß‚ðú=ŒLé÷!¼ÐÜ�¡õ47°»x}¥¶îç%¢:€N©ˆæ«9lDuËÎlž–£ÊΨø_þK=;¿®™«�äðÍMEL¨p:�“ÒÙRtÀœt(Â¥ˆ”î0˜À?WpMý`+V…ø;šcLa_Eíc„EÇ-Üʧík[9tù÷Ö ð,p¾;ŒåË Þ¹Ip¿•k<ƒy˜§0�¢ša‹9)dPÕ ð(:À°ñE˜~Î!�$’X4´7*T‰ï6Z‘§ŽC·ï|碯¿Içi­ûüy�žÓ™NWFÍæŽÿýw“Î"�…t©’lIßÅ“÷ô¬òÓ­žº…0²EI@/zG½ö‹Þ‹WtE4b-–FÒJó C(gý—*�‰•!eI( �]ÞÜŸÓåÅõýø>^ßéä»Ñpx5¼¾ãûsçRÛïv‹E'`Ëî:îFr&¢..ukµDÄÒ¦"�¹{Þ»Oq–¨éêÓIš~:Õî¸VùJÏ"%G*N#ãI8¥rsáhaDji‘Ž�Œµ“ã™t�Âý‘LµAT Ü“ €ašˆà3ýï_ÿ! 5™mÑ\ D‡‡‰Wþd¡Ü\gŽ~Ê™Jf¤\‹¬f•WÊmÎõ"‰4KA%ü�@P�3YÀR˜+©0ަFÇ8{Ù{I" Éx—à¹dm±×V·}ôã²mäÏmþØ¡úðýxȇ4‘€OZ¯_$Ö‹K>)£üÖªP¾ìô:=�o kéCº8» 篵Úƒ|-w*–ò&Aå,’ðöçLZסÛ9›äifRmeŸ#°ë –ºÕëZ¤íÀè¤àU0'ÐNBRÍf+ÆÞ²AÊ*çƒOÅLÃÙaéní Љut>|wry7¾»¸ÞÜß�o‡g7×ç·4 WÇ[Žß§)Ò0Ñ (+6`Äež«~‘Ô˜¬œ´MŸÙÔ€#3¡ØJ Ö˜•×$—s‘YÏ,5…‡À×cÅTð0‘sñÀ„°:3‡ï2“@YBÀŽ�…^S*V>º›#2afÀˆ&ð0‚ªP8a%Jöä—ÌHâ‚C™‘3ø¨,ýþª×ûÇiË+²šŽ^_�R$Å80“‰4:³ž²FƒY@y Dš²[«vF§À�fF/Ü|?¦W'?ŒOoÎ?ŽO?Þ Ò£×oÞ¼yqôúx%RÐ ~;]­2jXP3 mÓÛð"ß>C*q…ÑÔ¨º\Õ¶ö+±TqïK˜JȧìÏõÆb9f¹±¿¿­þ4SQÈ,¥ ';×´Oj2U³Ìˆ p+Ü**3÷£í]¢[ÖQÉ"fûëH¨ø”Áå�Î#‘ª“NØ2ei6‰�Ç)ºŠ'åxì“h²À56Ž `8šöûO”Kë‘ý]�.4Ѻ]‚X£YÂvÔÎãi¤Q Ÿ¥L¹%"ŠŒr[Ž¢•§ “±G _ÿ¹¶*u€‹4)ÊJ,}•è2_5óŽ ø>³Q¶nLÜÃÎÁ¡›+Û~»“Š�÷˜ŽZÔ€úæ¡æñFæ;2;ç,úe‹Uï¤CC;ÌL„þ%v§Î_�*¡úñ²ü9™Xe ñýè²ÂaŒX}� ·ò?oé°R4\b ¬A)~ÝåÜoIEU³%Û}ž!)UoÕJ>�¼Î¿ôYÌÑßÙdËWRâgm¤“™dhŽÊæ ÓÏ QÁû'È@¬Ö&öAŽM£ÙÚ¦¿�5gí! [–ÆÏ¡œªD† ª_\Ý__¼ûÈq?º¸û8þçpt{qs]‡Ô7ôÔ)õ©Þã™Z÷ôY—é šõ¼Ÿü�ûÇOõÂÃzªRYaï;m¶Š¹ÙÊe­� Ö¡zUÅ/‹+G“3Ù¶€+õb‘º•Af”[µ±L�c.tëÔ¡5@ªSão徦r‘¿¿îñ®Ö¬&"+7.#soªoEP­•B¦ÈÕ£¨•çàlÒÉè¯ÿé¯sËzšøòe‹AÜ`Y`î—ˆ¯3Ñ,²~°‡Uýþz[îȵß"m¹¶1+ Ñç¼µ/œi߇·³ õF�Ó>ØŠ,³×¸‘�TØ£=òÖ²GßÙ@‡²¢Øƒ€°óòÇ‘wÊæŸÀ͹£^nêˆßšŒÄFkÑ4xÃ�h¬v.R~ËÁFŒmB¦ˆíQr½¢ß>­_�6$‰ÅΆQ€ù ¢LVs[™¯±ZÊðíS¹þ£²ÊÎf4ý¦»-£lj9~•ŽøìÞHðòŽåRáÅjsØ¢:â»z}Óø¶Ì—�¾»áV£¹C«¿Ü€=�¾ÔþPKÒV1](¨E£b¿çŒ è\²‚ÉÍ9*yé$º\ «kÀ§“A·òc³‰3… …7Šør£}©Ðú�K¿hÌs¡iÖŒ)™± õ”È|^@.X$ôûûO`D2õVp9‘|y„T÷ҮњœÒÓtpI�¥­´«¤Ð« on¢­\éI7!G+Fý�Çý‹N¯7ÆCÉ”Š6Mð‡©=:ƒ�,‹'«vVþ^íè�—Wý¬Ùn¶ãþ¹bÞC7Ó½+µ_’¤FÛ®Q檵Y'”A=HH†|m×ó±=^y3cn}ëTn%5ëäŒ*VwV`N14hà Ìzj¢.N‰ò·’@f­@[æXqëònEJê…¸SK¥‚¨’{&¥Ž‡‹ J.…‡úõÀMtªVÛ ¨¤¯–µÝuµo+G"”®Úäšyôø*yf®=lHÛÀçºTê/YˆOÉÃË2'psø”x.øe³juPÕû•æÜ#© w=Ž«”,¯® J_M¤Î–]·4�æõ¸x6ÆÅéidÃôœ˜J̯»õrÿKÒØ˜û´HÿA£â;ô�ðhw÷ÿ„]½kzwDpƒgú!9èYïÅ9˜Ž;íŠéøðϯ¨WŠcZkÁrò‡K¨µkÑŽoÉPKÒV1]½ô¨Ë/õ%*imunify-security/inc/App/Bot/Responder.phpUT ëÆ«jëÆ«jux 臭Zýn¹ÿÛ~ Þ!¨ä«%;¹\{'×iÛ‰}HlÃV�—ƒAíRÚ­WË-¹kY¸hß¡/ÖWè“ô7Cr?d9N€ 9›Kç{~3Ì_þZ$ÅæÎwßmŠïÄ¡.–&�%¥èÿ÷ß[â0ÓU,Þ¦yu'ÞÌ''â�¥+=-Ò¨mqšGâÙîÓÝÁ³Ýg?ˆƒ,—DÅŠKe•¹U1ˆý·i¤r«bQå±2âðíùû#ñöôìýßð÷áñÙÕ±8xsy|üîølLû“²,ìhgg±X #º9£‹‡‘žïdj&³lÚÙÜÌå\ÙBFʱÇÜ}<�Wy:]~<(Š�¯t¹·„<ž§à¬L”8�/„ÁQ ¦°"KiãblÑBŠKYª·)Ž©(µ©Î‡^–C•—FfXËgBÝ¥eK¤9NÐB¦D”IkÅ�R…»ì"-ØW¢¨Œ‰´$"F••É-NÅž¼�yLj# "•⬥2ó4+VhSŸƒøJt"™eÊ ÅT›±²¥/v!qóÅÉEÏ‚¥X Ôtª¢’¸M”mìÙaÆéIóÁ\͵Y‚\�”°–†’h È£L)À#Éã÷Ä–à‹Î/À«® C#mB÷Ð6:*L•ç`Ïkî2h|¢ãÁ…pw }B~²E&¡ÊRÝ•#¨Æ€þ #ඉfÅÅs ÒŠõt2~÷v›u$l‚ø²¥þ{ Y&"‚ôE`åç§••™H­P¸�®Ð9XX$ŠäIJ3¤-S¸µ^äŽ\ð"$Îs¸ž7dªy5(²j–æ`7ÎÔ ’¸SÄFHû�E¸î�&g{HKd¦Yeº¿*‹ªÜy0>N“’+’ØxåIgGp(s1ÁUnÖBQ@1Á“LG7N#äÔp²Ìàìr€HòB?ÛÝe…ï$å<#*Ä:ie¡� ŽKÖ’Fý£"Ó–‰ÑÕ,!;��O Õp,ÕD\°·áº÷—0—¥þ�}zAÉX%I œ�òî""d[â[Ý*øæ-— ÅŸï~ÏâñçÏ~r&¥)ø49~�¥·ìžU\·ù432’�ÓyðK U–™—ƒ£:¾•02«×ên<…¤;·€é RŸKdTVìÎ [Ã’#;{Êœ9V¼û•.bß| ]ïžw‡»œçœ#6¹á·ÍÍ ÊiØü!QLÛ'/±˜Åu(;§  =uîNæ$RÀÏC"Æ_ÞJýéŒ~ÛÙÜ(Lz‹8O( ßéXíµn§œ3˜c‘¬—ÇäæÐðÏk‹Ðîo5´Ç,8¤în o«r¨c’§AúzO èÿú�S'd4"“*ŒžAfäC(çFH „CPo¹XWtC$�IÙÆŠIÝʬR¼Dã*¢läjÁš$¢mýÑ菉´li-Øìlö¨*m:¯2üŸ8=\A b_Lef;ê=÷^…K9øÉY·)hò 9iâ|]ÃIz–Z"¦çEIÎôe¬ý“H­òÇAwû|Q›£Ó{¥Âó-ëDZÇ™K¦”.ØI`gª£�‰ž­Š‚Œ¨â}#:ê.RY€*e+Ä(¬ê Y@\Šî±Í”tîj@Jùƒ—3]jW\Æ—Ë{‡š¶ï¾÷776z.õöýÙÁªØ¦uï¼=¿îlñ'Ê´îêõx•bŒDô«lfþЖ¿ó!‚öP%]Ò¹b«mŒCÚeà°Tp×¥RQÇ¥ Y£¥†B9g뻨¾æ�”d@NQÊý‚ìáÝŸÔˆ°J#1­rÇÀõu8ë·oð.¶�Á66žP‘¼i_ûÄÒVëÄÞæÆ§–¼g’œ²¦ 9+”“e ¬< fH8>EpâW> ›B•§“>˜Òã|(v{�+†ŽÞàŸÙ´«7ò³¶új,÷Û+j¬-üobµàkûμð¡ö±Á‹ÒQ0Ç:&ˆ„¨¡´b®CRCèóVQh‚.�E_ѽª“½“%ŽzP¸P“«$UHÀ8Sæ„ß-0¢M`x ÑÒxN„™ãö Â…’~v؉ê �ŠgùK¾S2¦pÕÇ�€&UÊW-§K…ô³¼•W‘I‹%eáJ^£¸d¤ÑQ!µxR*€ÈBÉ2 ";Dm'U‚Ç©Ñs†‰ìsÔv·á3)ή\±ª!gÀ#YYåÓ2<Ð�jPQÅŸ‡»v™—òŽ8tÒÔ�¦¨‹óÊT&Ô]Óþ†z¬Žx'X—UWý:×ìÞÉúÎ}Ûç)ënôxÓ¹­4: O ¨X;@Í?±y·™å�QÐC󦹼À3öw9ónô.ŒœÍå¨>ì—£é€À­­~ÝÙa BÅ”Ÿ Æ8qDiÇR‘Y×3U^çšO_'A²!_r|WÀ÷ížo‹§Oá7¹xúÓ�ÏÅî£Ý]ü'Þ¼ó�[«¡ò¿ƒ%M3A~EpÛuÖaäk{“ìóŒëZ]Jz…¶Af„bíû(¦kæ#¶9�VUƒI…ÖÑp“9‘Ñ�eJqŗؤ*Éû}:ö[ˆ_MN4¹fLï^gˆ˜#Á{_“1¹MQ·Ü~Qk!ʵ©>»6¶p½hæË2 è"f·¾O—.Ä%z tHâÃ÷b¬K\tX«_¯ª‚&γI%Q̇J“œ\hÖ-Aì,2,’¢nñ(·xfënÐÉé²Ú3à6tNJ9‹5–BÈ!¸ŽÎÏÎLJ‡'ÇoŽI˜XMÑk SùpÁ„^gžr2hn/(-z&9«Ì�Í�¿^dZÂûä´ä ÚZ¦ÕÆÌ£°1¡qÎYí|å,äûÒ…\6)‹)­M[Sß³úLBžf‘p[“~ÿTS‡Ñºd#z]m÷¶Û+ç¯~>>w׎^5¿�õÄjÔÒ€Iôµ èi«ÛtΩºQè<‰ë‘Ò X¹7tjöŠz‰•]ïTf4‚¨Ñ�W`­§[�Æ´Ð,¶¨;¥SÑZ¼HíA–é…¢¾Òíð:¤úÿ)øFx,×í¦;Ôýé°Ñãí_ÚøW`({«×\ ¹kŸ‘Ìh´ê<{�™{*�ǧçg×—ããë·§ïNÇb¿-&’øk¦3\ø qÕƒ³›åà€‚h$zb¸r˜?óWÇÈÆÎe~}K, žcq{£¨×™¢eè(•i ô�ù·,°Pï~k�Ækm&i«¼Þµ¹Ê$•L ¬ÁxY ¦ñL‡çi{"J¨ª—ûïǯ?öö6ô Ý#Ë Î¤Qø§“�²U†… ¤‹'<ùèÓO÷š9÷uaà£øÈ‚8耿möWãh ÀE�>îL�$}‡YÇå•ZÿjPÑèoá‡!(3”¶vƒþŠúA$.ÛŒ~|FÙ»Œ¢q¤›ÿÄ‚&I£ÐøÉtêÁY=tt:%s*©n$çU¬kLyºx“ë�9˜�Sׯ»~Ê×¾%Ë:[§óÎ ˆHÅi„œŠ 63½”ËŸ•SnáPß­Šƒ‡à ;ª(BÈM+šQù‚Iˆ Dš6ï­9•iÆ#hê´áÄ·n ›¸Ö ÿkÍš©aëDr ŠK�_{Â�ä�ÎL-õ�×Õ]¶Z:ËsJ®GrtÖ²&n ¨«ðu�Ær*ösôz¤Š*‡‹¡Â»!�«…~ôÞˆvNæŒ\='Íã]¯9ïûÛTS %F¸õiTó9Áœ‘�‚&%™Ó+¸6)� špÈ5Ï•á4OѵrCÁ†Óº/$Ú45Ôkö±‚ûû×$nÆÇÔ„¦ÓiZ�UݨÑÓnœ×”¯Ï”™ºˆñ„ìJó­Ò“vªØÊÇNQë$7”ANWn^¹RÌêi™à5ôë…VBl¶û˜ôŠ�Û_)+'eYø/[.u>Äv'{Ö³Ÿ”Z([(ÖÚðó@jUž@w�ÓJõ^¹8Œ¢™ÈràÃi½C×ãbrߺ{7 $úe˜pÍ�µe­[1s=…Zëë$Áª~gw¢½6¸�º~‚ô*ˆpñ=(ã‰'~ÃÚÍÝ zÍ#!ÿx¥šÍ4ÀnjÒv…»ÄËýóýíç²�4Ãe;­Kê�‚¦"èáCzo»µßý¸ÞïãC7„%€ã©´ã+ÀE2Úö—hÆ";òÕ¡î‡è@†G©…6 Z鿾ö\Z1pþO�«”_»Ïäðº½à~ŠÊ@'Ä9ÓУõu8vMÇZ’?æáõ˜ïöA%­ñ ÷¢[?á:ÈÓ*½hÐ}ûæ±j¢Í¹ ›.¤é¼’Ú�ý#€ÉÒ=�®‹œY%M¼RÜQO3zQñZbàèÞ›Í}Ƕ%ÏZ|Miº%.Ü>Ê*~^¡Çý‘{œy¸±YìýNý* Ãý_S3™{ýÈg}íJEbg9<¶ ªÎ�¾áeÕETº~ð›©:ﱈÎfäW÷átÛqŽxp¿ËŒü< ðK|h|Wð CŽýØ V&Ö3Mš…!¿�;XDh Ľ£: iùI˜q¿Sä4ã8u02ãšðªì’»d2ÐÜœK?=ÍÓËmúÂŒÿ9'XßÔ|½/4¯0¿®ö�­ÉÂ÷hz§‡q/E.÷�´÷ôë�þó†ûà×·[ƒ|¾ðÓç³K§}¢Œþ`Prº¿¼·õ‹ÔÞíô¾^ÝüxÆQG?ýNQÇð€šá:W5±¡¢D×—v¡”oQ;mBŸfe[¤ß¹47µ’ÓÖKç}°õ9ŵ:á¯×š\|pxñ°ƒû´ùPKÒV1]çtòKÕ)+imunify-security/inc/App/Bot/HttpClient.phpUT ëÆ«jëÆ«jux è‡�TÛNÛ@}Æ_1¨d’µ/\ZÒA¤@Qj�`mOâ…õ®»Lz‘Úè�õú%�± !oøÁ—Ý™3sΜõþ‡2/£îÖV[00åÂÊyîaãïïM(2Kà¸HNàÕÊÒ…™ùJXŒa¤SØé½émïôvÞA_)˜0Šƒ :´÷˜8ã�eŠÚaAgha0þtyãÑÙ庆gCèO†ÃÓáÙ”ãsïK·ÛíVUÕI¹²âÂ�Ô]…s¡ºÔ�"- t¥H±i¯îîjT-g‹«~Y^}4~/z$y*µ,„‚“éôއS‰óV¤^ �»Kd­±G¦ÒÊêµÓ28·& Mhj2„JZtàsI7Uym±0¯çèá^ ø\ž‡�’¨ýxtÞ1ŒÔ·˜z0wHéƒE¬vPZÜvÈß®4$–ëÀ¨(„ ¸°�÷¤žÏ­©Lè¬]j0@¥v Üâ×@ü™�Џ þ¤’Vh·e*"C2X"Ò;n¸ïIÛÃîîSü�uÙØ¼‰Á¸ Ù\êy]ª‰„¿þ€£Fƒ‹.ÃT‘E2pò‚˜ ©s#ýy%†*GêÇÖÞ.€„¬¨LÒ×X,lŽ • ¥Ð¾vŒ)OÀŠ:•èiÊÏÐEH‚•TOêšgZ+ÿ8½C'5¹äm§×éÕÖ‘Ú£�±s–c‚ïQ´Æ^YãyÓ¶±Á³SZA;¼Uo–Š‚[–aõZVÕ/ýÄ<ÂådÌ.™¡OóÎó|a­Xì7(qóxë9²ó Hý§a¶«+ùDã}µ¾—šàaÚ>I‡©Ñ™âÔ˜¶EÝ«EfÄ]rÅ�4:'ðXŽ&ÚX0~9àÒÂÊèùãL¥oY¶¾~nIúËTbáž[Ï$|¨âˆ;¨Ó»ÑZ%S˜Ý]:�õ|â¥ÊÍ66ã¥r5 lîE?£ÿPKÒV1]c‘tÜ2/1imunify-security/inc/App/Bot/BotStatsExporter.phpUT ëÆ«jëÆ«jux 臭ZÿrÛF’þ[zŠY¯6"’r¼Þl•%–%:Ö–,«Dy×ùŽ�¡ˆˆÁÑÜÄU{ïp/v¯pOr_wÏ€HYöf]Çfzzº¿þ�ïÌfÙöÞ×_o«¯Õ±É–6¾™ªó¿ÿÝUlj)#u§åõÓ|òR}Õx42ÓbXÝS§i¨ž<þöqÿÉã'RGI¢.‰J®.u®í�Ž@œèŸÅ¡Ns©2�´UÇg¯ßœ¨³Óó7?ãïãáùh¨Ž~º_ ϯhý¬(²|oo±X B:9¡ƒ¡™ï%ú&Hö]\!Ì÷£8&‰Vo��.¬ÎóÁÅË‹Á¹ʼnNC ­56œÄyhJÜ0[ŸÜ[[ŠŸ/Ê4,b“æ3™–yÐ�ñ$ÈõwOÇ8ÁD÷¶·Ó`®ó,µˆ‹¥õþt^¦ñtùþ(ËÞ?7ÅÁ¶úI'K51E¿°Át‡JÈŒ-öUpscqÍB«b¦Ufõ]lÊ\MK8 p©(°* –jjֹ͜üÒMf`t ú‘÷ÔÂÆ *ÈU ò8½ÁšiLËôƒ8U§…* 'oU™õp\Æ‹LÚ‡¨nÕ$osÓSA�³2¾Ü™§œtH,MY¨yÌ:àµqÆ%×U�\kB?¼Ô!4¡mR "×ßNÕx< ’b d j;݃kuS6R@€º)xÔÊò~•eô·f*¿¿Vß(ÑXg‘�ÿ–C�¢¹ŽìèvêjF’±yá©Ä¹ºžë"¸>P:gDÉêy§�¢�Ç :õÚš$)³ëúñàD߻쑎»êÿþù?jV΃4' $e¤£QÌg�%z$!£òp†cTnø¡è% l®s¥ï´]ÊÙô.âÔ"XÖeN(dÖ ZyùÞ;üé¿zÕ?9@š×@ÅL[¡ÌbÑŒ(DÌ£ãa×%¤ Ô›4‰oõFÒ³ÅÌ$š1 Z„¹ H'ÔrMº Þ•t‹£ÂÌã�˜}Kð´ûû ÓNWu =ÏŸß@št—®²Ž ° ™5°M€ .È2X„—À�”aq2…�õ Þ¯Œ ¶«€|± -°„3Sy™eäà¥DðÌ5-"¨GA>›­MI F«CˆKŒ�¢p—yœ‚):¸´,ÙI‰uV¤Z5×àð.Ô¨0äcÀrZ<çUuÄ[Á„³c«œ9�œEG09'¦G"5x ‘`ëÿÐÖxÇÒóP²f‘ã¢ö.¾û@Ü�ðþN£ÄµÎ‹¾žNé'A7&]‚º9ŸØíxŠçsÅÞWÞŠù€\DVtL¬ÉÍc–±!³[-$‚@P®½ƒ¢[’àÀÀ%4¶˜ÅïÛ‹þ±Å/¡ [%fS#6{Gr¦S#¹8¨HM–Ìfª?tÚnNì@æ…ibŒõày†ãὟ¾ÇñßÖÏx|7s�²EüëMQ ¨·äru!æZ³{2¢d’(”–@`óGX…ã Ь�áF ®€ãJ^˜ fŠs°‰L]Ò,(˜š(�nPÎ)ÊÔoôêèçñ‹Ó³á—ùcý2g&½!œŒT^°³ý„¤ md)ÎØDÎl)LΓ!¦ ‡ˆ‘‡¨¤%‘D#ÌÀèãDîÆ!<)op”ß 99f>À%c%‹‘½:y��,;ŠÅú`(gLD,c ')®çÛS‘wYäñ?p-§: ërrjŸ Ϻz �}÷´.±£In’ °]Ç0/zv‡ Ddéèg6¾£P²³ÈŽeõIlët_:æBœ¸>6ï”òšÁ)5ê乂O‹PÁ|%­“…Û¤ó¡¿‘6+âBëL\hÛ?½ð¾õßÁÄiö ±,©óñó–åáèP%ºi)³a� •6Ͳ©Øi�äÚkvo¯&&C¬Ã.^^¨? ¾S�á‡PgRj iî²´é埿Q�+ÈtARèJ,ļk#F×2G%T•’û sŸ¡¡rzò÷’’ì ‘üE¡Í+ÇúC !wÔnuè..å®EeÿÃ_ÐÝ>2ú Ù¶>FRðŽz_ÑÂOË;4ɘ^Û^pP?¢’! ‘þ«¸x˜‰+ïhÏÃ=,hÇÂ-6},`HÃ\�¦©*sERUÖy@ qiXVÁ´21¯É$Xrá“qí&Ñœ"OiWõaÞ¨â=¨ƒƒ$Ë>­%çë³:Üq%…êÅJ½8ΩüÇI®i�P£Z¬SÜ[ß}¢LÃÎîšé¯ðkCTL«Ñ±Ä,°×K©aâw&ŽZ Re¿kšc‚¢ÝõZy_ÖwH¹»¨Ñ”Ä욎t´¯vÕÀQêÿ€ŠõJ|Ðét{¼ f;– øŸ»É.¿B…,a9´‚ ûuBx·§@mÌb�Õ.¶¶x­°ž˜ˆýtÀ¥êÒ_žQ÷Ë9®îÇÝZËB\¿Ýïþ&ÛVQÛ,% ×ü-{Qúý£;_í«xîòSÊ�a§°Ïã(åž³ÛÐWŽèÔÉÑ»ñéùx4<~}~2ûÝ¡È7¦�¸ªå]-:ýÖ>ÞEЯý9T7sjyA±ïúó>©±MØ�F M}Ÿó."0d€¸Ù@íî1¼èü æ—ëäÐIë¾ ö27K"=Ï ž†K5ì-€L�Y@VH}�Ê#¼¹:RD~aJ¤€V÷¹!$‘ZøÅnp3ƒú¤¦Ž Û5剜©b溿‹÷ù3n^8ß3ö¸eG퉫 ’�i#tĢ鶂#\›óª$=n£Ž'ex«‹{Ò4оÏyAçÀ´*¤€ÑoÔ“? š$Œ�¹·ÕŠíý¦cDRé´øÄP66tìÂÿ»E U¿ŽõKæÝcÓšgÅÒ·D«ßìVê‚R—|æšvB ¾x«MíhH‚ÚxÊÏ$Eî?ÌjUε$s’Bl¢á„-îŽS+ÆšåªÈ42 €(Cî`çÚ7ÔGcZqx£Ã�pG gV içË"ÜVÒ,|ðëëŽ}¿Ñá÷X(Üq-lñá ÿNë+çÍovñ»´ )Ss=õÕáb÷äñ·îË0b¾ñl¨h¤J€?¸ÖQõ¢Ó�W¯R¯‰:ü¬Û„ ˜BJÛIq÷‰ÚëÏñÄW, =â‚=Gtü3’Y{¿«œ\ŠTSŸø–f§û´2¹OaœáuH×*ÚUÿtƒæðî‹·¢·¦½ØŠöÖúƒºôýðÞ†¸GÈVBýãï?V«zö$þu‰|´«ör© �_±ØxךÈèJ"3ñý‰É£~"ÔÏ¥ä<2WŒËÛZìªRüív8©§Q#mã !'Uƒ�ˆŠFj®&òƒJr¤ƒýµA!Skµ}k#D®ÑO,¥'“�Æ‘æ‡ëi1KK©ga¾5æYäñºíCÝÞ"›:.>�qÇH‚µËb\ÓJòš�ÙV‘Üö îtï •×RU¦·ÐK³míØÑó“0.ˆÝ[½ô]o¡ÃMü~ެGF˜Tc$TbjyçÒðóŒY�Q¹°µÃš9‰J~_,3àrí0¹K‹áâ™7®¢ÛÉ™šŒÝ­vkk¨E³¿ßœŽÈiàoÚã=. tôWYС<œÆ%°�ÓWoÎO_¼£¤ôÍåéÕ;O˜ ñÕ}o‘5ïz3Ü m°H´S]Ÿ¬˜¸ÿôQ|“€‚¾ÔS™3r*¼Ù¯è i19BÕ£û†íïÓG«X3Xå¶ѣßȶº.Ñ'/ÌßúÐ÷<Ä ­æËrX«ý{‚׎»“X!¡U¸ÿ`´íXH9T�D‰Ö78«UU¦$áŠ�÷4«MV}Ý-ìþž ñÆ7Y�jç@=Ö å¸SPWú²eR\ëÓ!¡o-ú.‡Å�%Ÿ°±!¤mø@¦&ëZæ~ñµso\Ä3§õœµ–Z¢BÇ*\[F%_}…gôü–òç¬zþ‰¦özRÛâæ¢º´'w aþõ"…³¤f÷~]¤3“ óA2Õç™va2ã!é9}wR®œ%%rv¹û`ÍS0þS£n¬)³=#�«0Ô„tTÛpâ:‚»N°Êê,ˆå+3¡5'wÀ‰ÆJ·R…pó VFŸ(Xɉ²ç™|KEû’o ·¶ž…3œ(’AêÿgŸúߟӞ žHÚ*ŸJ4¾¹pßMTß6 Ôkúçºõ5—¬frdëZ€>«kŸTZ4#ý�¶©=÷ïY1Oj5ñZâ"fUáç:„?ÕÇÝ�ø ˆå^‡<³ìÜ×QûšÛhª…lWŠ8-{üîD¬ZŸ8¶sÙK™WŽŸ‘!Ïiº€”mï¿ÞG¿<ýØÇßOÜß�=”Häcè³´NE¥»‚ðùÿñŸÒ­Jšƒ>‡ÅKaF[ÁN¾`Ùx3ÊÈóP§]]þÈ�ôËL„f !BFj ò˜bÅÒ7sxÀ«bŸÍ³&U?R�GàÏ¥¯ëXã„�²¤<÷óF¿ï­Ý§¿~�–ɶž•)"Ôm%Õ š‹Ö¸²ñ¥+O6}zUp?øÉÓbzXZK%­V¨‘YÈçD(997¦ªTQ#u¢uZ5“6õà7µß?Ò±^üŠ�ˆ2Æ·:û¬¶©´ÍQNžÅS.à FWGW£ñåðjx~E™S³‰ÞìŽ2 S?¶¾®j„~öBj=wÖ&Øþ+�µ@Kí„ußò@~Q󿬼«å£Õ†o5zܦ_µë¡�Oð˜á�ÛÿPKÒV1]l³‚¼Q2imunify-security/inc/App/Bot/SameServerMatcher.phpUT ëÆ«jëÆ«jux è‡�Tën*7þÍ>ÅôH¢öiNBt)— µRS!³;ËZòÚ{lo6(Bjß¡/ÖWè“tl³\rT$òÌ~—ùfýãy‘Qïà ‚¸TÅ\óYf¡ýÏ_ûp)T™À —å |ɧ?ÃÞÖÑX¥¶báZÆprt|Ô99:ùBÀÈ¡¡AýŒ �;ü£4˜@)Ôpysÿx7×w�¿Ñïåðn<„Á—Ñpx;¼{pý™µ…é÷zUUucÇ,q7VyOàŒ‰5õ¢H²MÁb ò¼º§ë¼”<�? Šâé'eO£Ú$ÉS•àÆ‚Æ¯%’i3Ã-¶ ¨J‚׬!g ‚UÀ­A‘v—FÈ’ð„fŒ†·÷ÃÉàêjª´ ÒP È+iñÅ¿þ h¨%ÂT ¥…ë_¡ÊxœƒŒ¨3f¸LE‰’œ9&Èž1ð'sÕ$�éõ ˜¤ÞS†\^¡ÅØ*½X+Ÿ‘kÔ4ÁH—&<7 ŠWÃY@œ1.û¾¥`6ëxúÇAgÊL�ž3g¨ ÐP7²‚T»¦Xùñ)ÏA„’ °š¥)�� Mö浦ákU�öSe>IeÁP ��§C0jk¦3Eþ½k˜/Y1<åA’c×Ì"žSžIŸNˆ²Üf̺¹:&MåT–t¢©x‚’R žZãðœ¸r–Õj/ wY|ß=îûÕóì0&¹c¯ö6Œx^Ì)X³^·ºöE ·Š ¯�®â캊¯^<3½#PWëE�Bóggµ™,ÏO7€唉›Ú2$ð‘Ð&CݽAS0ÍòDkè�…:!åTP²i)cëÖq2¡µ7V—±mo@ì“óF£i3n:ŸW§g›ú‹ ¯\’rn/>  î ÑÔoZ`á)´Ãî¥t-Lð…æO]­·ll*°E�¡µaõ<üih´¥–°’ÓBlBŸº.z1)á?­Ðè‘­QÒç|×ý5jÊ„Á€…ïŠøÿðnÐ_b,¼ý&Ö´5+.Yß’.¶gû(g%Ó Ý«KdªÜ[ùf'˜Öl¾V2zs­µwÝûÝ€°”0UJ¼ÙØU|ï­®Óû¸™xþ­úþÖÈ6ý5šseqÂ’Äí7a$Ëgom”[ÐÞž£ Eårö�>GwþQÙûÐj�Ö²[-8;£¥ÞÔò-Íá²7»ô.K^ëùÎó~¨í3o– ügTÉÞ¡ø£ =z¿‚á�ì|æf}¹µ·\B­�þõ¾}ÑPKÒV1]}Ñ}øô4/imunify-security/inc/App/Bot/Classification.phpUT ëÆ«jëÆ«jux 臕SÍnÚ@>ÃSŒ¢¨�LµÒ4qMPù‰´=DB‹ìUí]ww ARû}±¾BŸ¤³6bõ�r@–=óÍ÷3óþ2ârãø¸ ÇÐ’ñJq?0Pùý³ ­P&3èr‘<Ám4½ƒ7/^=ȹY2…5èÎNNOêg'gïÀ CZ CÔ¨8#p‹ßå �3HÄ ´ºƒñ t;ýñWúoµûmpo‡ív¯ÝÙúÀ˜X7�åréxvrh;žŒ!ú,lPQ£\,B33z)»ÇN”>_=ºqüx-Íy9Ù‰¢Ä°iˆ P'¡9‡ç+�¶›iÍçU³éeÏ«JuílØß3®4˜Aó§ú‚… æ�Ì /Õj Kn‚´$bÆ Hé˜ ¨»> C]¾`&QhÁŒü†*èøÜÞ�ˆâA•:™�XÉYâQ/7Œk*ͦžgó1ŠÍ ´Q\øl.xŽ:C¸ ‹É*„¹’°ÝüŒüùñ îÆ=·_³ãþ§þàKâŽGƒž;jßÔ �W±4uäû¨ˆRÏ¥ :ƒñÃäz0ª³ŒL}ìf ŸÛÃÎÇNûÆ~O'„ÈD“Ä@,ã$$š3�"\¥¬~OP› g�)0f±zÒÜ®‹5`gdžÇ•æ‚2ëœ:'é"¤™mS$C¸ð\.—lò%ê´i[ ‹ÁyRhÄю­L«¯Lå&—,~)V|Ap¸1{u¾ÞÛ$¾³9ͬ$óè–å'$ØeÝ/bq’æW��¦{¼�x�ð�Ìï¥âl­÷c¦X´�Üqßw#÷¡`C±Õæ�þ^£5©T'‘LCîÁ<^Êr2Ig©Ä3•©Z6ä¢T)»RéÐ\×?lY_@%£SÝ�a[·¥xAÇ2É*+h.³‡&¡SËzßJz]°1ß3R!i…p º|4¹›•LÁ¦« ¤@à5ŽÚ¤6³=ڨݡ¤HÅcù_ödÅ?‰§ËGœ×å¿PKÒV1]ŒÇ‡¬ ¯0imunify-security/inc/App/Bot/BotTrafficStats.phpUT ëÆ«jëÆ«jux 臥Yín»ý-=ÅÜÀˆ¥\Kr‚ö�\'ñWoŒØN`;¸’@ V”váÕrKr-«©�öúb}…>Ig†äjW–l+÷þȵ¹äp8sæÌ!ý—wyœ7{¯^5á©|®“Il¡õß·á(UÅÎ’¬¸ƒß¦Ãð²6t¥Æv&´Ü�Ó,‚7»¯w;ovßüÒ.ÉŠ�Ki¤¾•#4NöÏ’HfFŽ ÈFRÃÑÙ§/ÇpvzñåoøïÑÉÅÕ üvyrr~rqMócksÓïõf³Y7¢�SÚ¸©i/•‘öpR¯ÙÌÄTš\DÒ¹ÇÞ};�Y2ž;Èóo‡Êî5Ã!?Z‚˜L4Z°JƒºEWbUètÞÑ*M‹´šã7K*Û±ZŒÇI#aâ¡zÔõ'º7Òð4-fn]®Õ¨ˆð�Ã9üxo¤„lüÊ k®pG1‘ýþXÚ(¾J²H¶Ú÷ 2 `P’[ooŒ‹ûÁm"Ñöÿþõˆ„•¥ç0ÔRÜŒÔ,Û<Â(‰,DªÈ¬Ôf‡£ÇÛ‚M¦ã†iÂ]Àª(^#:—38Kl ™‚ãCQ$�5†?²i£È²'4NœJ‹qH0ýt188;ûô»Oø[ØÝy|öåÁõÉàìôüôú9³Ï>}¬ÛÞ‹e(žÀ¡Ÿ`˜Œ@/X"øyë�Ÿ6cáý¦°£ÖÃ"ºÁveòIňwu€AÆmGi*q›ªA ‹>Ãæ-¢‚+¬‡"ÇÊAJ9À_†©ÂO‘J‹ifºp…íθ>¡²”*7N`”|´”Ès)ôÞÒž%ø K�Y’!Û0(á„RÉ'®˜"Òk‹©^HO”™ø€!„~¬­¸_W!Agý1fìõHátBCë�:í�ijâb*2”’"‰‘cQ”`<…ãéXhëí°ÜÃ)hIçK5†��ŸOwX*�áœÎ3Ù,Õ"A‚í �d!q$5V˜2’dã”i#‡¶Ô-+äȳw¿ÿáËùÁìïoÀ÷e¡”°(ëeY�-F‚këË©’ײ}ü‘zÿe©âÙ‰åîǫԸ)9nJ�¤§HÌ\æNð8©­˜ó“ìvóü.{±¸½h‘ݸ‹V¨Ñ[b#¹(vÖÚt˘hUän®I&™°¤iMZL UdîBˆ‰ŒDåö¶½lIÞ‘––#, ¾—Xº«xÕ³ÄV|±jwQÉÌ¢¾ EåÁü̶jŒ²ãPM“L ¿´‚ŽsGiW„ÍK…žàW6ƒLßÁU–Ré ^Ndæny‚¿…¬”Åwºsm9>?wÉ´˜â-a:Ä‚œÈ!ÆS¹TtW�çYb¬ŸÉçÅ“î@ÝXÈÑ•š;G¶3­àÄ>¼Þ ·„”Œï•ôÃó" Z¿A /_º€ò ®mã¨ÿZ½·ÉÞ º"ýä,Šrò²"§ ëAXA–cÊ2•‹Ì1ïóD &¨åȵÇU¡‚ãÅ#À‹Ãùÿ€‘ÆŽÖ¡tBK°™RÍ£ºÄìsÒ¨y’{GÏÀÃpÕ¯¼Pqˆ¡‘Ù&w†ôaâ×¥˜69œ‡.ðü渔pî“´]õ±ÏC_ãûz¦ׂ% ·ˆŠ+¾¿T¾ýî·ZFÆCv:Ri*rã"7x¬1…Í[zF yÖ*ã¿S†µ ¹@ðã< ¬*_÷jžª}e­³%5:5æÉñ`á„$ƒ)&€^2öµLöœøÛÔý¯�Ž_ˆð$±ì %í^µüà2î�¶ŒQ.$ŽËÜ‹ A•$ŠWPdw ,—lJ¼-ã†áÆHÿ‰k*î)™€sjÛiœ*XWÉL-<)_ôËŸ/å…{ãË6£ì)?iÒ€œEhòJ/?Ê9¥±UGzŸÒ�Ô°Á"8HYz‹JI¬:¼ž~ömÎäJ�Ý€ñw*<ƒõ_\ z,"i¼)EÍ{ùeÅŇ)»Á˜tû‰ ý^ã¤ÈU;m›XWé‚ôÁ$]tôÎâÁ–u(Kã-¼¡xN�.¼ø¶ûÿGIZE`„^¤"ZRc°Úx]j:T.žXÞ²¯+Iq$|¬`®.G—²\ýâÑfJƒU_žÔ½KkÞ'Eoen»®{C…—1üZ9ûw<jY*Ó½k¡ àOÅÝR¦–'¡¾àZZñzP_Vs­ú~Öüª÷Nf7—�{ª÷ø²-X‰—j‰CV’+NxŽaéŠÓ`¢9Gõ±°€JçXZ©1&h•‚Md‡»V¨CWyôwú£BxÒÕEfú¥ ª¢Å‹çITD¾·Q{A1v¦ÂW)í®³°5œ·#FÓÜ��j†Ò4ô?úT•í~~ᓹµïÊŸú5+ 1âL-~ö¸”b)P�åp– tùyD”^Ò{½àû9Ó³“{Â=ü�äX©]ýç pmï2<µøo®S8 ý•-’p©ß¦É�S³«šq­K°‡ƒðïñ�Ÿ+üö®>Ðgÿù¨÷ÍÿPKÒV1]ᬱâÌ1imunify-security/inc/App/Bot/AtomicFileWriter.phpUT ëÆ«jëÆ«jux 臵WÛnÛF}¶¾b‘”J”¤/¾¤qm'1�¸Fœ"}0`¬È¥¸È’Kp—V„Æ@ûý±þB¿¤gv—’ÇI[¸~H$r÷ÌíÌ™ÑÞuQ÷&�õèšzѨYáhðçïC:Ô¦Í赪Ú�ô²œ¾¢‡7�›ÜÍE#GtR¥ôdûñöøÉö“ïé@kzË(–ÞJ+›+™œñ_«TVVfÔV™lèðõO?Ñë“ÓŸÁ¿‡Ç§çÇtðòíññ›ãÓw|¾p®¶;“É|>OR¶¬Ùp’šr¢åLè Mz½J”ÒÖ"•Á=ïÝÅIÙV*_\ÔõÅ�Æíöº ß7Êɱ“e=v…¬Æ�äûTH]Ã'[ ¢Œ¦ zÓžév¦ª“Ê:¡5Þ‰*#@�KçT5³¨IblÏ­ªàÁÓd;yìÝJµ°–œ)UúBiŽÓ¯½Þ{²Ñ¹B[S“-ÈÚr¢™IGWJ� ö�r\¤ï(úh ¥¦JÛß�Gh¤@&-UòŠ�—kÑ8�ã9ð�¬Ý&tʶìUwn4ÒµMESc4½kZI*Ͻ)ŸSùQYT¸eø"çòð�Éó “ÞFÝNµJ5Ò‘RÞV©O gVº»£�ŒQŒuŸ|àCÔzccË!°ý¥•„ú žŒûø„ïå¢VÙ`vnl¨œ´‰"ê|gÇø l¤¬£`Ô�].´•»xp½Dð¶7÷÷£3ñüd‚ÂujwÔ¬â¾7MvÖHk“³WgÉ©9GV@àì¸iLc“#eSÓ6b†æÅõç¾hK_òÒnt&xŽî,•[�qóáë¯PŸy6"�=Ëüâ:Ì ƒJÕb¡�ÈH£ýd¶¢ñ9øãÈ´ŽÛ‚�O…K‹P™ôãV=Nš °x6 Â‰BX6‰’ÎÀ¼[x V‘®ÉZ‚[Ÿ>±VhŸ·Ø€›«·÷4&Úê‹vïÊ{|æ IŸ †7�›(¼,— f+Õš·<ÞÃTu%´Ê@yVhˆ/š*U§<™ á_\Ö ü�¯™¸kÍù§»ÑZ6°5p Ð 82ô'0 &ëÃ`“k�çËû7fA§F[œn¬pb1àýeqúDûÏèÁÒ©®Íª`kµºÀ'ÎrcJ$_Œ<Ôòl„ÚãßܸûŽçr·j¡Ò¨­ÿ�„1>žû!ù ƒ­ôÆæxüíë4?‹>'¼Ü‚¼HL ëŸÿäå¸[XZ¦ËSÐñý�½Ä'7YÝØ�-Ø-CÆ›KüþÁ¯®‹‡;žš7§†� Ó‰ukЍf¸>‹`q �Àƒ4þ¨âÊd”_qxÁŽœ‚À†nã�¦«þºËÕæáÃÀ‹/.<÷3 ùAݺ˘Nûï6Ó-„Õö¼,‘Oÿuàðuïº÷7PKÒV1]Nyì=Å2imunify-security/inc/App/Bot/BotTrafficSummary.phpUT ëÆ«jëÆ«jux 臵WïNGÿl?ÅÄ‚`Sc'•ª#Npˆ¬8€€¨•’ÈZß­ñ*w»×Ý=«Bjß¡/ÖWè“tf÷Îö� ùR‘ãvþÏo~³÷êM:K«íýý*ìÉJZÜÌ,Ôÿù«'±Ê" ™}‡÷Éäž—^]©©�3Í›0”!t;‡�ƒn§û3ôã.ÉŠ�Kn¸¾å'û#rix™Œ¸†“Ñù§w0ž}ú Ÿ ήÐ9|œ]“üÌÚÔíö|>o…ä9&Ç­P%í˜ß°¸�BíjU²„›”…܇ç¢û2L2)¦‹/ý4ýòVÙ£j‘äEÌ„<È›X˜(ÉÐ*×"nB-&BÞƒ‰²{¬fÓ©›0ÉDlaªUvÆÉ »¹ÑƒÅl¬JP¸´Zp©VQâÁdθö¦®,³&Pß™z㮕×fð�%į½¿¸Æ3HXÄ¡Û|Ù逿¿gÜXÓ„”³o.@ /;íDÈ#ÐÄ"–¾ñÔ’9‘G+,Œ;Y¨Lƒ–·jp¦Ð’>øt9¥Ýãð"fƒÞ¦\sI üûçßE¾³£—$�ÍØUJXh/¼«áÅÁTc²ZÅq–® dŠ�� /[‡­Žë\3cÖ‹“% ÓX´jµBݪ Rß…‡™f˜&¥«9†…�à?‰¥š+mg²8¦DU†ø­­*åÌR±j˜‹ 0R†7š`%è c8™q *¬&v¶Eªíj%TÒX¸ô?Œ šÃó³ñõéåàêô|ôzÐ=Z‹÷-"%BÀ“'5ÅJ3l�— ³pnœòqÊ4K€iͰCý§´fŽ5·™–`‰˜üUÞ´&µyoæ3.]¾Nf®„u *ÒM³I,B´Á,þ7Í$HIJ=Ö}\ lR¥²CjXa ÏO>ïÑè|E�7P÷a4Jr„ºb uŠ©×ë�·ãmVò¼Ô]•Üà€û¹ç ß�C•É¥C!mcÃY2¶ãÚ¼Á½“‚dƒ©{Ç…µ[®#"Íõ0“’½âÄÙzþÇ®§ÏÉÛƒ×�A½qä 1çæÐ׋ Ò b½�ñ˘3Ä^ö„'¾ÃÃL »Øó‚AIÐl‘ôÞ–³Þ“bí´N&ÚûDˆÒÄÌ*m8 –ÐiB7 €$Œæ¦ ,põo dµüU­]<™š[¥ââÚ=Ü1žòv»ø´ûbg[ˆMÒq€qO2K&\�½ï±8üEÖóòä‚>øÌæ< ^cn<žÁ–±ÎÁ¸ªE«\ŒÕØ�O#E~ äjàsóû”Kl¾A=–²G/=5–ƒ‘�ÊZ�yRÌ�ì‰#´:\" �hC¼ã¡0xRœdÒö� e æ¡À™/(í#KsÊ)9G¡\÷z{—·D?1&Ó�Ît:mGtrL·£4éÄ|Ìâu É®3qÏ¢ûržäRŒf_N²ìËûÔ6 %ÏÏ®A19æ�0M„Ã(Up~uÿ ˜Ò‡×m�˜tI¸™¤C #&bH3.�1F–52Ë (nr%‰$Ö…› ªg&Lâ•Nñˆ=’&$ÜqžÑ‰Sa&ø’à 5­L¥†GF¤t>Ð3mx²£Aò{®ZÅÙ] I[Z™2YÌÄwpxÕî¶»ÖQÌ´†S1TI?Dò·Fcƒ´ß õ'<ºƒé„[Œˆðü Øp¨¸¶ðcm¡!Ræ,5ˆÓè®M¬–ý]ÆK@EZl‰  *¡i­è¬ù 09‹É¼Én{„(+ç�…6%7ÓTÝu2ÅGâaÓr{fgg´YíÊ9é!- ¡‘W‹!w2½+Т2u~&TBÞ³Xx¯Y™�ÆF–b!$fðß(—Ζ‰ë&‰ßóHwÑ”bMø �ì;5, ¾ûömî©çq\¼vˆƒ(õøøF"6\õï™òÇþþüâ¶wÝÿÓÉÅùÙÉm¯�¦^+Ï?Ó<x ®˜Âœk¢ÒÜô3“J�·P ™+b£Ý�öoe–—<<’©°1C;›ï�Ž>²Á{ÇŠBF*M*8ÖÄüXT—*qÏ0YVø4XÄ|Ò»Oùÿli̺I?K5“&øÁ3îÁNgÇyÞÛžµ¢½êh’�¨Bvw¯&†˜¶œ‰þ"}…ø·°O ×ÎŽUá¶™YÆûC1¦Y{»6=!h iv«Œå‘+ßëûÜè÷¦²!w\‹ö`@gž(É<�÷ hÿµEƒ cNŒ�t¶·áUý]8ª@´•°,ãÃ~¡ùæ—‡n÷û~G#úÝ$|Ié¶ÄÇ(zzÿ%že�T?ʨª¶ÈOÌVþc°–;hQן֪¹Üð {(_ÂüÞbãºbáë[¨JYwš•Ò­†ë¹ÁÞPb›NÒ˜÷3Ãu�%мñ�¡x‚Å�&J´ðþ7„¼€^•õ1`\,uU�Л4Ðy«,£{Rë H:¾ =mëé] %8:ÂOo Uå ùÛöµ þx0q¥jXjð¹ë«œ½×d½ì«,qmƒÃéÌØëoB(Ï[ ŒÚº‹h´‘3HGvü‹{œ Ê^£Ëfv3I•iEBE¹ÀY6•–a$¶?ÛHÚ8øºy‚øi±± þ¨°ûÜ ÊR+L ÌÏjÃ!à ÔóˆMs¦PæÚIëGF-¦›�«ÿGp‡ºÏkü}³3sF$·"Š9‹”š Í¿o¨:‘³ê\¥Z¯Ý,ß®é4¨1g8°ÔL×ú¹/sÕ‰hn¦›‹¹P<|È-œúTÈ-„šµµ�¨mð´ÒÈpÓäÑ78\¡‡óOàOøþ×¹¿8îÄ>°ûÇÎ`Ö·`°õ¿u”T‹/!Pô®•¸ê‡–¦��JÙpg‘uõŒöT„¼÷ˆƒ· œ¿j£®KÇ¡çö@æ¸ÇÍϹA~XpÙ‚±Jó �7I5÷YM™ìTúCï¯7VY÷S?çÚŠ"þ� LnÒÁ\H KPÒ¿ÿþO—Ý–qû‰�±ÀT *•híÔJÀ9�à#*m\ÉÛp" qnŽÒ\ÚúƒÕibÂPNj#P+†f»çVF³¡‹k+Ã�tÓ.‘×›»N®ý6ôòI”«T¤œ•TÖ#<]b‰BE,¹@Ð ¹¥Æ ­¬SZ¸J˜$½œÈ$ׯ•=‹qJÁ?2.CÂáTB¦˜«ü�%8¬ ]rTr ìµûíýÿ×Ä ¥Ñì)•*Ý>[ŽÂ>5„V«\¤ñLšƒVm%íéÜMè!n9YF²)Zìàh0+ñ ‹Û ¿rØõÝüuÔ² VÒµÊ�á‚“Ùìm¹½ØÝå-ÜvÂõ‘¯–Ò? £ƒƒ@®•ޤ£Ìöxw? ×ià-6?t£è‡Ó0yu�19¼j-b¥Ä*Lc#âÐ÷ÓH„ 1‘Är±ðœ¦˜Kç=6:ß)Ü4–s_�Í ìŸŠ„~´-K—�‰;�Ÿ:‘œÍSÌLšÂ‘‰Z†ñ¦I„›âVÅ®ç$�¶à+ÖUN»´D˜¡Xý˜*�OcEíK,(“pí9âfÉŒ§¢Ýn‹Ë‘è__AZÝé@ü~𽸾êãë�øËÿ¯B¢¤¹Ä|³Ï&Š…Ÿê}KVô±N`�‹ÍäçXSâ¤-Æ`Ä Ó€vA”æ!)Š¥�q#þü'þXŽð é{ÉFÔ¥X¨;±Â¼X¹G$pA´ÖX´�=(L#‚¿·¡Ÿ®sqÞDJ¾ŸáÝlí7$Œµô‚ÿ° /€þÕ‰PÒY‰»ØK”˜§ëˆ§AÖˆ„“Ʊ ’¤Áü�rÀ¥JâßKÄÝJ"Y)aFµÂE‹÷ê¬d°Tº!d@F+Þ+ú4Зñ’÷+ýT ­TÐÓ6¸ñ”ïjqH;Ç&e"FG z(î¼4�Ú)XH+cZ'a,—9ׯ"Ö ã]ây!=¿F*8ÚY©µ¤‡N¬ ùɃÝB /-D“6œ­Uq‚güKu)‡f&+XjC¸jKW�­’ B¬$Ž„ZG iE§~"b –c¢•@ B§ñB:lS! Ãò‹Q dí‘1aý0JZÄq”Æl�4œµ"}_Å5M+Da ½¹g ’?CÿGP¢ª7°ûdèA#“Ó7ð xù—í—íìúŽ/µoÙ“'‰LôÄVü|pð,ÕJôç’DÛth›Ï(<ãhË  &7Yé&,�FBL‹8\3—ì@™t(B¨I{?±%F)ÂøcJŽŒ"rµ Ç$H2R¢mqYÎIF{>ä5&`š|ËeB¤°Xý—Q—ˆÉt<ìMá;®‚žËÏH/äÿo.ÇßÏ.ºß‰Ž8þòUöæôrÊùÓ_çoÞ Æ}�3o;âåqE2jÂ2�Þy�‹�Àq >îŒöMȤˆC?m°Òå„ &¾ÿƒë–m„¹R¯æ!‰ÉÍ–AXYÁ8cïV±ª �Sd…áåhööòz<±<ûÿÑô Æ¥AŠ“P>ÄíR¤ÆkòÍ­ŒE8'ñZÒƒðÅó»È�—©�¥HbFÿ”]D�œY|{FÔ»olÕILÑg‹(Ï/SÅþn!Zr‚È8so< @>ížž:òB͑ڃÂÓªëÍÃÐß^ÍØéÌ ¼df)a�‚‰¯+»8õ¬l2qà)ò‹d,×V‚Ffp¢ 0æZ0o,Nbâ”7UgbF vvÓ…ý0Œëö�9_üîÅ ÑØÛ˜&l9¾ àî¦YükDðˆÑ�AžçÈ� .`2‰Áäçž}ó`l\"²µwÓ  ðçB&S.lnH0õøé’=­V3~$‡ˆëî¡”�ÎÇ»c7çÞÚKúÊñ4„ù º=NŸÐVÝäÀæ-žÈ=ü©jî™…b D�ëïÀ‚‡ 6"ŒÕU߆ž»'äÌ_/dÚdÑ4s¶šf7v*áp™"¼í:ž=ËIÖMøÛ4 1�ËõÙøb¹6ŠÉ¯xŒ·Aè£Óé”ôŸQ°æh†><"ªÓ9ÈV6ô¢É~~rRA- C¡0Žbn±1f%ŸŸa›ljn »¦æüçÓ˨A)‘h@¿ùÇ žù&¡½¶zG`²þ†§vír¼éع¯‹š„ »FÅ��ÿþ+>Å;ÁXX¶©ræ³Û>:Ý,ßÕ·ü�ëÕ4BÁ�”Ê–=Õ•7– �BJj§‚Šž:Q‘ÉiØðÕ5hªWcJ{~(ÝÖ\Iz Š�ëU&@.áüUºXøÊ=å¢Î šÓVÖÑØóéàìr<ÈèXQÍ,Xת8n.Ïû†.fù*‚XÑöǺF³¼¡LîÙšT+ÜŠóîdÊÔsf<�ò´D¾!ì“ ¹”iò}‰"$œ ²¼=³äQ‰�vF*ZEŽ>�8©LÈñR»ÚÆZÄE9Þ…Iö³¹wÔ•/µ }hD·¯Ê_�ÕŽ0F¤ô ãÉѽ¯G~ò–†d4Qèf-mÏP9´í‰áhz)n~6¶ûpshÞ˜‰úMÉYnš7YdÀW(ÿ[WÅ7²? 3",¾‘0ñ«Ò#hÔŠuÞuϯQÿ‚ûTÿ^â�Ë^–‡ï饔F”¶I–ý¨•Vûñ†�ýdZ¯¾iŠáY=g ãh_ö˜2öÙ¨�¯Œè<™È.fBÍøI%Œe�òÀmS ¶_³˜š�4$?ê'ÿ*¢/§ºWB!¬ ™”V¶Í™vÊtÏ ~§Î›¤À$ä‚ÂÚsrmàÞˆÌ$àCe ÓAÄðSƒú]\Ä “Ѩ{£)à…Žg°»Œc¹Ñ9\”Ëe¬–’/SòåFÅmqV´kd°±½Û¢|Ò°ñ°u‹üM4¢-\O'؃¢ï`Z1¼6�îR)*@5Û¢¡•ݱÎѯ+©)¤î£06ÔîÂ?¤ªàÎÓÔLÑ+¤î’²¥7ñ+~Rqز�OÚp4;uo¸¼ I¡¸@ñ£X*èî„ÁüÙ¡ jû©&Éúáõ©Á(,î�• è”ÆZÜC-�¢ŒÚl³ûÊǦJSehª‰ʪ-ýK»@q„WŸL�LÓ‘¥)/XPä45wº¸¿¿nÁFV·áõÜ£þì¢b‰lél�EYʈJ$…bkû íùÍ„:gõݲK¶j·XF¢ûPèSéçpÔ"�m�Ãï¬çVPÙcR¯w€/ ÛÊÀíÑÄWwZþÿM¯“Áù 7ÿÀ*ÎÆ—¥Ô-¾};ª+Н)mˆî¨¿õü+z~hƒ¼ö+°IÀ¨!ËFŽð^îm 3{>〪ëT»« Rÿ hªï¡Kú¶Ûõ‡yÅ>ãïO= {ÒYe ø9É-&–*™™¦º®$¸gfµJ£T’}ð=ã(€¼Zc»*Ë(EiF£Ž‰uKŒÚÔÔùɨ З‚Mú�ÿ¤R…ç5øu™j0ÎäkÖ¯i=JÜÓR¯QKÏä•,‡›@Í4'I‘!ùh£®ÚK€sâVkPÌcRE;®hл¡Ò\¨{ œÅ€€©Y̆á¹éækºÕЦܩ¹¥Vi§! §kj?˜Ýœ˜£³¢Ýᓠٵ驔"‘Ú¥¹*õ’”¢d³l¿—3©ÔT±¶°‹Ø'Óš«â|À ï>®q›yyâ˹ò‹b+!q8¾ôÖ–ÐŽf×Ä;ÚyygQxÓõ§ýŸ‹HX-Uw…ÃZÈ£7ÃÑ ‹:ÈŽa¼fP53=ì›ö 7Ä'y ⟳Iïíà¢Kø0½{Ú� °Hæý¨{1`t«st[Ê)ÿš1ÇÚÙŽ¨s+ã_qò®íÌX†ØÅâ³Ï¨=ô %dûìuþí¤AŒ }å«D•�¼\Χ3½×ì ÊI“p±ØÝr¥œVJ4³$œ1¶fpÏ}Ü2X€ç б�࿜uŸÜÁ3g”ûý¸–݇©äàh6úíÖ>¼¡î)Ðâ«Çb�hþ5�¸¼ùiÀ/qÜ]¥ó˜Íüqí\Oé6NžOé$H áÀ C:‡$è€:„)tãqVù�Ÿ˜£û§yCµØS ü³”ýƒÿ'˜Çï:üõLf²žKxá©Øwøj­lqÄØct¢S…µ­Ú#Ñúµ>LíÊ‹¯”ñi믺B!¦Á½r¨±.í…¤�Ší%¾³“Ãû�«ñݦpHø5¨YøzhÛG„õb’t6› c¶ó¸åbOÇ8dd6)È^·ÏÿÈwDw±0Gö”t¹�`žS¯`«•`¥˜+²Ü¨3Îýwøåo.?·×ž¶Xxй3²âf„�4ôI6s÷- Œ°ï==%3¸ð4ÞÔóúíƒÓ;,¼W¥qæ2“²EÝoN¨O–êÃÁGÆ«¬21ô·âV�%cz¢Õ{›ÕzsA'KÕÒ±p¬î¤7ÒeÀX«äÄæM*a¡ s�ð#û”ŠéÛ E´4·;òSQ¤ëü ¨ýU=G‰«CñRÌ7‰:¢…i:�2ÕeJ½Y�º“|¬EGRNòጼíº“±‰y¼´]GÔ*÷“†gbt9ƒï†“éDÜÔDÛÞq¢Û77¢Î‡ |ÔPAwt0$®G“á›Ñ ÏF×ççÍbtÞÊâò]wÜ{Û×�¿l<|(¸ÙUtY³Á_ƒEpÖ½>Ÿ¢Diæ‹dí±ê¼—Ç�©ûˆ=ûÏWyQæ$;báÏt8úþ£çšó›�X³ÚÉ{ò¼«ñð¢;þžÏ½ž|>×Ȧ7„)â;Ö·²H¨“Á´#µãyµß^°ÂØ ‡à_þå¹Á†w{/u@×ÿNáÌ*>9±·A¯ÕÎÌ¡LZ?­\6?Æ× /5ÅR�®º™ñ3~<3g;Ùõ73Ê6 y0CùlŠ\kî¼:'ÕÙL¿&:_Wö!YAö°Ur¤ˆÐ‹À^õ—Å�f%º.7íC{fíµ`cn*?Â9t~Æ‹]þ@™ïùú¢I••££µw�ÒATFüGn ·Ñ’ë¢ÅËm�Çðô}±ÔtÃhn³ oTÍvÀya!5ãÄ‚V›ÒF†yÒ¼³Å�]”8œ¡&‹g´/�Atº�Ï-ÛrJÐQÛ.öF¡‚óœv/tUÙi£=ÝÐá!Ý‘æËms#Z¹=¦Új•ôSùø¤�¹¶—l5†2¾ó ‚þåý-†Jü î±XŸ«Û¶\.…2c´=¦ ·*ƒJ÷Ú�±ð5öôn[~Bb/ k#ÞGE·5Ts Çpéáà¯PKÒV1]ÈžûÅpë4imunify-security/inc/App/Bot/HeaderAnomalyScorer.phpUT ëÆ«jëÆ«jux 臭Wín"Éýmžâ.²›;‰”µãÉ–][ò—ü±‰´YEwµÓTuºªaHÆ«äòby…ŸG1{NÙq›i'•c‘vp¨S«i1•6± áùèÞŸM ­F‹÷½,{ÿãŽkU’·N8™Jkéôîîš&Rp,B›©Hdc“Ë<*¾•±Ñ‰Èñ\�µHidrrIq*¬U#%ó†¥ú½þ Í\S¯p°âdR§ÿŒ .þûïÿ$AÚè6æfŽ’P.ÿRHë(ËÍH¥’†p„$È6S±2…¥ùDjÂÓ¡Ò¨Ø\¹ ì$Â!OídÎÖή#:E¥aÐÇmIéD±kšâk™”’öx#hJd¬œÇc6ä&¸<1i¡—‰š©¤@²ñDÆ, ¶”$Ê©™$k¼)/RGŠ="˜,—N SYÕ­n6¥ˆ'´wrqy![Gü3Q›zq,3×>z\ˆ±¬ú‹bh‘!¡Òrš¹E´qc c“(=þ‚÷(u»7æß�»šZ–£Îôî„~û5 Çn÷'í{±²óK®s-<Äsn¥3±IÙ#«s¬êáïáÒ\ø¢ÓHåh +ɲ•­EÓ¼98uxÐB`3‰ ”½­-§¸ÍÞÑ!×—›4*å6ì—m‚åQ*ƖшF �cç±-›3BŒ¦*¾ûžõ@3ÈlÊW¸Ì>Å"Ï HËß7 [¥ø|·M&õ‘»Ès±X¶Hg\{ŒÒ_en(ŽQ‹`4ƒÏÌa¹²ô�U\þuÔ�ºžà·têmõOo=MéoµÚŠh.Î.ný‡þéÃ}Ÿ7Wƒ‡7·gW—Äí‚ì°ì0­} ¢J.­è(ÆB±Õ@늴C´ $mÄV¼¥o2‘‹)…li7˜±Tý]ˆŒPåu¡a±¢“w4i!©Ãf¾ ‹�`©1Ь­›·.çÊï¤=,‘v‡ÖÜn�æÃõÍÕÝUÿê¼²+£qDõ�¨[ß/ÿLÖ+Ûàl‘k&0]¢c•ð<‘B¶SÛÉŠaªbD‚31� ;et8Ó\&¾¿ã 5ÔB§vv:ï(Ëc‚¹ârÉ’I F]¯põ'ø¨{R—õ³õ`4ù�µ#iŠÓ1kYrqjÜZ‹™a[*•¦8‡ïpãÒä,—PM°.ËX9f ä�Jå‰Wóà-0‰DŠð“E°Ä êž²e^?åÇLÆœ%â˜91Z2µTNº¦�9JÊA©5é+çÁ×jU_2”r§l^÷_kËïèèè蹌0‹Ez–a"›%::ZFˆe×½<ÓÇ<=nqh&r%´+ká2ª«²´S3‡†2È“Š(ÉŠ?çÒÙg º^Äæþrz¡93£?¼ØH.h‡¢8ã}R†Ó<Íev"2Mò`…ò½W+Òb %Eüã×Âô§Ë$ÃÈ^€>È…ýßhýÿ&î&DÖ²y™ÉÛ]«Ãg0Š�ÝB,¥ñ¤ÄêXº Ç�‚ç®à¹Ûð°ÛÙ�ý|z`jW÷¦uÖapý€f!)Ø�ƒÖ±w†Í {¯Fø''/ø øm§åJÒXe²·ìUlû%æd¹¯¼fNØ›¿‚Áõlß¼yÕ�ÅÎOÚ…øoËÊ~ !J!ŸéuÙñæ3*𼇕-Ÿ®kÅ'Ò˹؂uI�jm…v€r²]®5.{JîVô[nR{Õ6dYS_؃„^@mËÔ¼�e6̓¨»O˜‰ûÔ�¾nùÐsˆ÷o^õEXüdÒ^nHõ´·¦RÇo;eaönÌ´"Œ�ºßããGŠ üÛ÷†~г‘H!™ ›@ùpÛ»>ó×tÃñ1vK¶Äiª>ÂùVó® t˜.Ú…v‹ '¾@d†Æ¤•’äjÆ;禔|)rž G(Ù³?}ª@ÿ+Ø|Á*ŒïYô�‡€ÿòœõãV»ž 8Ž¢²vð*`‰Ùr¼tæW�­©ˆ‘Â@9ê£:¤{LÁµå}{W¯.+½º^®4{m¨RscÖ<¿C⯿çÛ“™WÓ§Ý—^éФÕÈ6ºm×�üŽü9tú)¶�<íx£±±ðlÞØèÇà#4$ïi%…§â'T{F�ð í¹ï‚U~!-߉¤6Åx²ýj¶Õ�ª²˜=koŒk­\ŸØŸ¼ ?ŠÇ^-_z•Ù'ÃJ:G~G¯ôæóSòstô¿­1py¶ª8»}2WüAÈöøÁ¯X˜Œ?��æûd¯õscŸÍàcºêçî Lm¢ -<þñ€ûVšÃ/ïªq÷â[]ii‰„™·ñøe´�µÇÚPKÒV1]¨À7 “+imunify-security/inc/App/Bot/BotIpStats.phpUT ëÆ«jëÆ«jux è‡íYën»þ-=ÅÔ0j)G–�´ý#×I|;‰p۵즀cÔ.%^-÷�\ËBb }‡¾X_¡OÒ™!wµ²åË9h€¶¨$ÒræÛ¹ó#õÇwÙ$«o½zU‡Wp ³¹Q㉃Æ?þÖ„ƒDç1ôTšß‡éð#üvéQ_�ÜLÙ‚nÁ›í×Û›o¶ßüö’ÎÅ™´ÒÜÈÁ ¿§"™ZCžÆÒÀAïäâzÝã‹¿à¿GÇý#Øûpvtôéèøœä'Îe¶³µ5›ÍÚ½9¡·#=ÝJäX$[(´U¯§b*m&"éÍcë¾t§yªFó/{Yöe_»�záäin$ˆñØ ‚Óô š’I³Ù=£gFøÐM$ÄÂN†Z˜b£’d3Ö³´<9×Ò²”³ fô¾¾·RÂG�›dÞÍúN8ÛÇ—ˆ±ìtFÒE“¾J#ÙhÞ�HWu#-”ÓtO- ç`äϹ´nt’O%dIîß+ëÁ‘±N;‘@Ãj^¹èB$R°=#¼5øŽaª�\k¶áXÃá>ˆ(’Ö¶ h‘^«tÌ–Ð÷¡J…™s$å‡×Œ$´Qž$sÌšr›ÍÃD¶ƒ¯Ã9F÷@89ÖfNŽ��Î3v¢A‰‰a¨] móM† ¦¨ãj%¾ÐÈS¯åŒ�TöZe™Œ›l¶›äcÀd§)šGXXa:ãÜãB¦xúj“"šì”F¯´¸‚7ç°\K™‘þ’IlIåµ3å&�j(½ÌQ’˜¼Í8ºl‘2dMQAï-Uü¾ýº½Íe%ÂZÀ`†º�¯õz�j¶†Ò–&V"K¬Våæœmä%ƒ\áwõœÑDï9A /B  [+YÀÕíâq™QVz†)<ðí9/+¯½‚0›ø}çeš…eW¾ÀBiÑPï�’�©‚ã­/j½^xBÛUm]çîÑÑ& � þXµ˜7ƒ‘ ç/¤ƒ¡Or«� öâsoH9ÚPG´°êÊÄû’YËÑóãfùY©Q c»7šf^ëáªÅ*ô)˜W*ÜGܼÿ^¯uW†‹Cuy¯ø* ĵb@OCØ+�T•(Ÿb‹–b1?æ±^‘iø8[Üd8ŽXÆ…H)È"¶åŽÂÕήxð 2¿:õu)ÇøslåwÓ$‘ *',:§ ±ÂÆ 2SB"‹˜øý9-N‹Áˆ“ˆ�—)Ag8&vnõÁ†÷gúx`ì:IûCçÚþÜ“Ÿ%2±¶`Ì‹+'¢À ÚV=1Hãâø§ã“Ï8.ÎO>á�à°¤WóLãámcìÌ>íõºÝ“‹þ`ÿä¼ÙAHm¥g<3�'±g*ä÷LáÂ�ÆFgÍókA"ÅMA Êp¥:ÝdÆC,‰ˆc!’\–SÎÊd„Бž†Ã¾o^Šª?ÙYjÁML*0�òà€²h0Æ–`‘K3­º(::ÒÜ(CäO瘠”&£Å‰ŒÜä Ä2 yö#Çç_ÅÊ–(Ý£tìßÊľ ûÕ\i‰í”(OÐ�‚ý/R«‚6•qøeÔ©T[ÍD*Ë÷ØÇwdJ‹—¾ˆ-=!þŸÄ˜7ó%¬é)í_Êœ^„õöôýØÓ7:ãy "Ü:Óˆ’n�9�6�ï¶�‰æälÂW¸¡YÉ7Ï÷7¹©ºÅ­ŒšÁ`ßÒ¥ mÏXFñòÎæ‡è½KÀ²*ƒ<ú$—£eàõ«ëß¾UçùB§ðc£ÈÖd“,²5Néré3¨S#­mŸ~XHšèÉ[à }übÍÀŒyñ&rñ'Â3Eó°~2ë}w3íòÔ†±éá‚zá*\˜>o]ŽÊ• À=7âØ¸Ò�$Ë|× =æÛg`úDÎv#Ÿ#htšüHq¡ö9>™É†EéI×qCÜ F01ý˜ "6¿ðóahZ¸ˆçL£“\i,ñ:SƒdzTƒþD±5Á!î‚�Íp¬()@YK'’ ܘ.²©�D%"Ot2¢1ÆãÀu­ÏRí”�*nϘȩÓê‘5Kü<Û)Œ Ÿ4`"-#ʀ쵅­l]nRZ�•”8îaçíDjƒ—YEH¹ƒ;ÝÀܤ§æ±à áe#r…'¦ÚŒ”á`ÐdÛø I'ÔmX¢Fü„CË4`Ú 0°™{¡”õ” ‚ÍÆÆÚßö þ%ýwÙj<$mWé!Û/”òB J¦Š„èØj|)E!m'ËS¨iiBóp¡d‰–¶½ùœ'±(6žø¡ë²¤u6ÑæíÑ€� ´”+<›¹ŠÏA3ÍÃFñˆ/Ñ(%`Ö_{%çyZ-Ôó÷¹Û]w÷ö‰¨Ñ)åQb_I5mÃhš‚dÓ^Œ$†¡ Uèç³.ÒࡲR͆†Â•­�Ó%i£øÉ@I]bœ…ióS†'A` |Ì”l µ�ÚÎ�Ö‘Àœjy>‘·®‰sHqèùçP6í ’™ÿ\ ¡§nû‘Kçà·JB±µTj DQ4­¡ ÙCLW{9w1[ Ê�ƒ­Õ¥·‰<ãÿÑ&*êÔÖZ?�̶þÊàj£QPD'–È”ZüŽSŒ >ç00(>Sžö!C+Á޼èŠánâþ¾yiSl»ßZó°v¦ä:Â|¶Öq‚è+-‚nÅ<ð²æÁIF™ uiêœ'¸cav¥�­v§×êö¡ÝéŸÂÅ»¹í½¿€òýDçz�IµNÞ飖Û@xÓ8>oõ üÔ¯ÂnžŽ*[Dý)œv y~vÜ>¢î/­àü¬IcZ¸ÅöËrš¼@ ©Õð4�èn%»jñ¼ÔOÌK©Ê(HêÁôsõ…´1ûA?ÆÏÊÕ.xi2’XïÈPRçÅJÅnB%�ÅÞy'Kýƒ¦~)¥>" 4‚X·I5×1—šŠ¢æhéõ•Ù,pЕBE×óU9Ôz·]à|Œ6¦n¯ö&¤ŠTÂZäQ-rL½¢ËCLAk0 íµŽ[G} L˜Øñ)Wb™ýú÷«HóèŸõOÏ1à±11_ˆœUò¤Äs¤w�Ÿké1 „LúÜÆÀ1Þç$´6+Ñ ÐñWz®3M> =w× 9qÎÜ�CÐO]éà¨6—'è¼’(à{´z ˜Ò'›@ÂËîéI.`½}Ýê"ºÄ¨…¬=õ¹Ž·[s¸€‚SFŸ—�ו+Áü:xÀL)<‹Pe¥0N+›Mµ„OƒÔ*ßD~M}ÝgºMø×¦´$ö´Z‚çÜø™â%k‘¯£UÝù©À�©d²fŒý=iXÂD“ãÊx¹Ù==C¨×¹þç©£R”Ÿ–vè–µºGñªz&°ÏÖvp`¸ÌÌ–dV2 »ÂŒµJiÔqû¤ÝGtÀ!Žu­k¢J‚˜³JD•ƒŠ©�ИzÑù<gˆ‘öq5ˆÓ·Ó+˜ÎP§LÀn¨kÐÕri¦*ªª‚G«‰@91…ƒÖàm£Ûiw^QÄê œ9–WSþ+¯fg4QÍŒ ©«ßQî¡ãÏKŒî8GjKó–ÉL"HÙ�¡$Ñ„-÷-eM¸Wi�¬nåT® ›*m;QàM2“Š®”x¥S(ev±Õe žµ�±›(^4ã\ájŒNãñ× §pxÝæx¤ŠjWc�ÎK‚ö¡‚Öwuéåê+ó¦* í—Ðú¾Ýë÷H² –½¿ØÊxŠ‚ºÁ}ƒ\ÝKïC�½òo }EQÂ#k`¼}íV€‡U#~º'(gÂûÒh—1ë°ýPLíLǧêÐà’�R\Aw•ZИLrð�Ž(à�ão‘¹*Œðã‚2_¸Üw½2?[;pvÇñ¦Â2©i }¶�*Dãô¨ÌéŽ+Á!ÇæØ”^v‡NÑ—Ü‘ª´‚¼4ô¥ŒúN›)Ì[ø/ÊC²ILNÒR™Mî”èUñ™�ye2ù奫(½[ßn³¹ðã]x·\kQû¥òŠÞ0]ôŽé³Ú2}Ò¥RUäÈTcâÒKº*“ù7Re‘ûK4ÑÊœD%ËG_S<ÐO£…ÍÓ‘®½èƒTx}–ü%>Nþ¦O4·³êx àiàäȰðOAµ¥è6Õ5Sˆ¬wÙªôþ —�~In@tA>*‘W£úRÒ¬RMß—è=‰¡�kßRE}•[¥R¦ât)•e²Ÿ�9P]ÈÒU(hÃL"½£¾ “ˆÝ­{là÷Swˆò¢ù²Ã÷’ËäQQ©÷|å4ï’¨«ŠÅÖNi/=Ôínyí$‰é«ËL5¿l;ö¶Ž‹+ªBMEhÒ¦L£…fŽÊŽEöWƒ/T3–ªd|4fYŠüÛ«Î)�rs%¨Aš[t<æñJ°æNØýEµÅ‡`¥ôP°Tƒ­¥sç�•:g ¬u+�•Y¨»VÝŸ'.5•°ee;…T‰�kUÜ?¨{ €nūѭ˜ŠõéQo�!¨¤/MnÃÉt_™~ÜÏ@7Ôs-íw�÷Of:Ú¦Ô´YU”š!5½áÐÂÌ¢€“sõƒ…Š¿rçÐ §CÜ‚31«–¾P#›wz²Ðigîhùd^<¢ë˜¿Ë×–¢{°tGqÅ2Žáqú,ÖÓò‚Úx¥”³eÊMq¿(2%Grª¨c®£¿šú�Y×ÞOµjïƒ.�Pó-ÇŽÙ*<Ý”Q—t49[{R— §Ü¥ e_¢{åžì‘cø”*«yì0õE€ºÚ*rÄhec påhrÒ’¾¥�5Ø‚òÈô¯*4Aóí\Kå»dm…Ð ´-j3<äùþ¾ŠöÙ�¡ Ëô«ÐòûPØcÆBËiéV¹£ªÛ–(Í5¨éAÂóê�Õýý©9¥ê]=nPa‘6/ß—‘jF¼pÿhnô¢�áXáÔVq}£wÔnoó[_åöÂÔDÞewÛTK6ÉeÑ«EQ’WW“JŠsÕ(B`L„G…uÝJD¼îmgHŽ^z£§@z:¡~(gÌdÂ`üçép¯Š1�iL`J Ñž· e_£Ë6HÐÕ»OíQ¾Jf¢Ž&¥•«rB_ÝÇ5ÂÔÈâ©jPʼ‚�»sÚ��6çöŠ’JëãÒr\8£¿7�îÑëF·¼ûÕn…çwÎ��«Éظ¤F7<ðËÜqIY:¡ùå^îШ`�^þ‹g¹CÓÅìÃö«v§ç�^ûU§ÕÌžNÀï~ÖmŸ40ž¤êz9]_Ðò©$CiÈ…9ºè¨J’)vè�hupÙÖ�6“fëeãü¸Ï’ëµúÂ7L³ôÛ9HíîÃÊÒKŒ¨7ÐÑJšñû�è–,F552‚>&½8¢FåA ž¤†çÔ1,æ¡b‚ºÏ½¿îx[ìnøZÞ’sÊ…s–<ð¯îß×eSP/*¡þå¾gxÀÇéKk¼¿Ÿ÷ê`%Æœ?ç�8 8¢Õöwƒ#é~eÉfçkÂI’Ÿ?ªÌEE yßCAËBJ‘ /¹ �,$M»÷›nÜ Œ¹¦+òÎÙPÌÝÎúƒ�uêÕÊ5-,EaUóz¿ù_PKÒV1]ÙYUM¢*imunify-security/inc/App/Bot/SiteScope.phpUT ëÆ«jëÆ«jux è‡�TÁnÛF<‹_ñ•dˆ¤b4=Ø-EvªkXÚƒ/+ò‘\h¹»Ý]ZŠí?äÇò ý’Î’RêôÔ Eì¾7ofÞP?¼¶�Mò³³„ÎhiìÁɺ 4ùü×”–Êt%­¥îžè]»}Oß~u´1UØ Ç3Zé‚Îç/çéùüü-”¢»ˆâéŽ=»G.ñײ`í¹¤N—ìh¹þåíW7~Ãsy}³¹¦Å»»ë럯oîc}‚õy¾ßï³"NVqpV˜6W\ •£(O-ZöV<ÐëÙ=¬ÚNËêð°°öá­ —ÉIä¦ç’¼ œúÂX&Y²²’ ÔEvÁÐŽdÙ¥±Š|0NÔLÛ®ØqðÙQÍ�¼–-*M¬´ vL{‡?%¡KºR–¦Ó}É^–5r,JÜ·�EÔŽ™Œ¦ÐHÿœ X„C`ð÷ŸŸHVÄ'ŽJùÈ®f?‹c@{z±U£„R^Pqœ )­Ð€V‡a>Uδ$UUìpa z°14B÷Ãÿ£ °-Qí„’^êº/Â*å£Òè~g€#4µR‹¾¥Ð,ýŽðË ã™ ’ñ®„©ødê}óÕ>`‰ mtZ¸ƒ ¦vÂ6²@‡®ÙY'uµx»¹]Ü¿Ÿ‘7£íT�V1ýj\yë#¤öA(åÉcû‘¸@6KéóÅí²n5„—F�{+ £hà&r–ŽĤQUøZ…ÈO3¶WñŒá1Cˆ"H…wÑ¡jŠÞ “Ê70ã¾ËæÙ¼Ïð`Ä&oúHþ‘$£˜×Н¢¿Ü{÷òû´á§´€ˆ>ÀϬÊbm_ÿS/t+Š]Ì�€–^^ £*íÁèäYT¿F8 Ò±}²\¯('ë8Ý<–m#Fà§à§—àa<’!Bã¿à ´ Vªïwü{ÇX1úªJq)Ï\Ì#Ñš!=m$‡ÿËÿ�ãÐ9�Ï.öÄ£<Ùn«°x qÿ�.¢ŸCöx2…a£Ñ7[á�ö#åLh|T9¦)½¦É€8ý¢ý‚ÆÚ¤b룚ñ% òióÜ⣴„¿ÆL ]gž‹_À!۳سøü�Òô§BG'…Ý”&Ô–¯&td?�Ñ|†EÓ|>&“PKÒV1]þ$±¤Ša-imunify-security/inc/App/Bot/HttpResponse.phpUT ëÆ«jëÆ«jux è‡ÕWÛnÛF}–¾b eèâí‹ÙIÁ6 ¸�­ ’Â^‘+ir—Ý]ZVk?ôûG�½�ZR’k?Ö–MΞ™9gvfôö8_äíÁÞ^öàDä+Éæ Ñ?wà$EcÆ‹;8ͦgðCíÑ•˜é%‘´ ç<†7û¯÷{oößüïÓ. Š‚Kª¨¼¥ ‚ü1‹)W4�‚'TÂÉøç/a|~ñåWü}2º¸ÁûÓËÑèÓèbbìZçê`0X.—ýØxN�ã~,²AJç$ Ñ Ýæ$£*'1uáÙè¾�gg³Õ·÷yþíƒÐ‡í2Éó,+4™¦Î&“Ïp:š€(4bÒPšèBua*’ž€D`�! _ zA �–„ã[©�Ji�"Ï1C´ÁÃTi˜I‘:ÈSªŸ÷='DJF•5].DJ×Þ$Á‡‘ÃïB”“4ÅPð“Ã-•˜¤A[ïh¶B”˜2$¢›XpM¹î¥”Ïõâps×38=Åþ¤7@æ„q/)IaºÒ6·X\w<6GÌ6¦–¶[’bZˆ~×à {,¹éØ˜Ä zÓÁ@(¦!hÄ…6p$AÍó2ñwŠqëÇþëþ¾U0N‰Rp†j_– üÕn·Œ`-´·:9i0°„¾ó’Ì)rQ²L“¾9iO¿»%׿ŸA»•KvK4…—ð0ðS9wò«ŠÉ˜Òelâ™C[Ñ|éÀwºBQ¦+HŒʘ˜‹`J·�ŽUAVo��®û8júò�¡»I£ñJ(2G®h–ëÕ&_»˜ÚžœÅ Ý}öo°ÂðDk| fk|˜¬˜ót…‘è…HTà''’dFhþxU`Có~xÒÅØ8iEßšŠµc5f3vG“£ŠÊ ¹þÛ¡ãv1ßop8+x¬™àp}]‘• w]üÝ*žn‰ßÁ«Ðj½Ô ¦zG%;Cˆ˜¹ŸUW% há‚Y™”AÑtvpÀ…ÌHŠý Z³Ñ ìË,M€¬»Ø �‘ªàl{Ä&ƒ]µG;äÿ³,$Õ…ä–ÀRæb𲨯†•Øe Ù­4òj#ˆ:^k�ÍéÒâ?V#¯^Y¥ž«B£WBôñ⪠“1þÒ,£8;²xr_úê~´êŸÁO5DG%Zãïàbß$Ý-ëö š•ÒÅ¡á¨hÌí Sï-.è*Z‡Õb«]ÍF›EW§§Ök¾Ì‘­žüuý\Ù3;À׃ S©V‡çäiì¯LG¨ùÇpq‘ˆÂ86i·¥év»,a‰³ÇÓQî¸ÃHœLï,73JJPó7JÏW`†gÿéTºûy4ßQq›¨¥v GA{sv‡ëÔ™RTW™ûû÷,Èoˆx¼ëÕðEfË V4·rYÊx�´%�L®oö’E Oq_³ \ðÇX£ÌFH:GH\øÿNÍF†Ë¡½ Îü°Åcù›¹lï¾àOe�Þ›HwpŽ¯Ï¶Ñ.ÉiG_YƒÎµ�%žÍ 2Å3Áº¿‡ëUN¯6gF ó¸ìšU«À�Ìù‡µx~V¢uC‰_ÔïÙÁ²NXjÖ4ŠlѰ�.·/„ÞÇTˆ�L¨I½ÉÕ.¦øÂ¤ÌÚF”;7»úÕÚ½Ö=åŠXèOyk×ÙÙ¸\dý ³õ¢ì·†YJ4~õ0ß(13¦œvZ˜x™„“¯-Æ�Z||$£ê[§ñ6çæøÙºû¸BÅ)¸ÍUE¾@9¯ÝÃðD½ÍÙ²MáÎ�9’+õ!fåÚ€?o]Ê—þuË?ºfát;6µJç¾ù¸@*p…_ ‰Ü†Ža}´#bC ·@ P9nœ'à¡ýÐþPKÒV1]&Æ;Äã)3imunify-security/inc/App/Bot/LoopbackSafetyTest.phpUT ëÆ«jëÆ«jux 臭Zkr7þm�®Ò†d–Åq%EIYŽUQ$•(Ç©rR8’³Œ(%qÕîöb{…=É~ÝæAI¦“�«â˜œA£Ñ�¯¿nð‹¯òE¾5úðÃ-ñ¡8Ôùm‘ÌVtÿó¯ž8Lu‹“$+oÄ·Ëé ñA뫱žÙ•,T_g‘x²óÑÎàÉΓOÄAšŠ ’bÄ…2ª¸V1„“ü“$R™Q±(³Xâðäìå3qr|úòGü}xt:>ß^}tzIï/¬ÍÍîh´Z­†íœÒÆÃH/G©šËt„—F[[™\*“ËH9õX»ŸŽ—e–Ìn:ÈóŸ¾Ñvo+ò¼ÐS%V eÐ “X%"™‰BÉh!kT:ú�_\^ž‹ÿþóßî=ìCèñ€ß•Ó$Mì­°ÊXñJñy¡Œ‘.TLj1É}¡dj"WÅLK3ô¦ß‘‘(%­X僨Й�Y,t¸&Z¨¸LάˆU®ðPg}’”dQZÆI6‡Ž�1SÒ–¼ýTÛA,­Ä±fPkÑÆêBÎqÖTɬÌû¼GñìtLr"è¢pèRCqà¬bI#˜&ÓV¤Zçb*£7Âj2’ЫL,ôR‰—'b)oÞ"IE™a¡6Jü¢§f(.a;(P¦–IfW°…‚ædi�É´²r$ÓT,GÁ�±Á^¬¨)‹œl„Ð2É÷èQFF°c6W¦éW±,yZΓL˜E²„ä-äeø?6‰ƒ3HÁœÃú[$‘MaöÛ,ZÀº„Ø>”¢ +l²Tº´Âh|µ(³¹Sö%E�7ÖB§1GF6¹æ3 ¨ãhØ?V³$ƒ}ÓÛ Â×~Tâépg¸ÃQ¥‘t›“ÉÇr¦ìí%mðÛÖÖ# åGœ°Y¦"+þN¡Åú‚Î ãe1¬ÿ‰ñVãE¢ ÕXEe�ˆc ×2-Õž;™ÍIÀûE’#„Iõ O‘æ1Îd,ÅÙŠ<È_�³�©Öf“yÈJ&+ß(ñdðq¥ ½:Úz„8Ååñ÷Gg//'ã£Ã³Ógc±/>ÙkÌ%é6Eפ,Rö?[)Í;CɈB/É,yá·¯�R•µ.8ØÞòŽ,î²�™ÉÉwª(taXtTË™çÂ7§°~~p|rôlÏnñŸY):÷´´,%Ón‡¢È"&°ÄКãSáðäåøø‡£¾P7‘ʰðHœä¼bC€u K¢ÌÑ@ZøiµHR=ÞFj'2…n0®´–Ò1欠£¹&f :ã•^~·çê°Šô Š�}W[àë\rÉÁ Ö†¥?ŒSU"c!«:l®ƒ‡éÝm$,r/žÈùðÜ}pY[a“Oƒ� ~“(65Kzןo¤I"q@B)©~ø'Ù#’F(ÔÆð$f£(J>`†erLšÂ‘€.65’f¯žÅÙl¶Q°¯‘¾”ý:ø F‹L‡#o”V¢z£ŠT\‹WŸy9MaŒY™E¼-д[;¬¿æƒ}1CÌ(Ñ.¿ògìЫOÜׯ¤Às¤yÇIàãñ£ÑH\Êy�K*p¬a´‰Ʀ21TÀŬÐK¸z.3˜È4›%Ñ�å“(‚) ùO*‚ FÀâmÌÆægŠ‚7~+a}‚SÁ섪ˆcÁgIŒ—'ã¡“sžJ#q±Ò%YÝäT,!cIÈm ¬몳¤U2÷2»j8 éå:1šýŠÜy%tNÆìy©°­J®½Xø„‰]ŸŒVYЉA€0²vÊA•p%�¤!,x´Ý8ò¤Â§ýµxüàïs‚ª™òq‰HQ¶�{!\ï—ëã2„˜“IUøÂeaÖòã:"qšz _õZnq�º=‡ð^sÕr§cYcLj÷‰YR;¢`8èî‹eBÕ„õÕy“ô9žù¥>ž†âT[Æ6:ãD!*¡-4^Ba9/T.ƒöaš4OÒ8…ƒÜQN©˜�þ§3;\,GV°ë*Ÿj©­š´ýÓ¯MüPÁÛ\?ñb%£÷žR­|‰­œœ x»A.v{MT‰tLªuQÚ{ !¿HÀõ&AЄ^l©RÅUAÆ9–õnõ›®ßü�Ù ì;5¸e¹÷¶Msë^+ÔDð R8Ì5¾#†ádXý¶A›^yöKìÃë�˜& ô½AHd¤¦ ¡â:v=C”êUKÒÞÒ]aIޏ¬gnïm¯ïø3'c`\®ešüJ)UíÔ•KRÔ.D� €DË„W á"à�¦“¯¥ARõ”tëÛÔñrš:�|û಻®ð°E£(í?ñ‚òšû�“ñ]ÜÔ°,ô/Ô3tei2U…$Vï›ÇÞ=x”Ð}(Âw86P³mwí„Eu¸ŸK$ow*É—kçí‡n„„Rj8Aj¨I„% •ÊJ܉Žu©´—sIÝÏCþGÛWÓVný\[ÅÒh�;‡ÌÕÍÀêúrß~ª¸GJ°Xּɹp"˜ é¬2‰&Ç�ißóýXÕÏíVÍor·"‘UœC–JÙº!w¥]O¦ŒÍ(�µ2L qXöbÝp]A'9ÁN,k�NŠš4îsñ,<áîÕ烲5;×í,H©»e-Ðn±L¦#€~=›y †,P½û]¯þÔõ€¤P7êLÅ~ÿéÕù䈶�EkPß«¢MI‰è"ZP^(nwš„ôào¢;_ˆ��ìà±îã—ûâ)>·A– c@Õí4¤Àþ};_7vì‹NXÑiìÞ¦Ô•Ì¥n|»Y� 'ëÇWËk}qþâ|çN^œ�/Š0o¼èäTuüáTsó¤‰Ë‚,q,„æ.!"³ÂÊV9*”V è‰_^¨:diÿ}A£9÷Ù šÒîXU”‘;‘¡¡·f† ÍCFþ•6,èÊ.íp.™ô5"­6zeb—X¸^ºÁÀM)=RžÞ�áh‰p|qôý–Eg—yQX½Æ«\UÕö…¶Ý³n÷¾TÇ©WñÀ÷È&5;(çK�X†ºY!Sl.æï¡ôÝ|Ä‹¡T©ëMè3=à®ðüåZùé.„áj?}/Ú(u¾¼· ƒÌ©r³E”. ¡2«:ÚÈ !¬®[ßÑìË(*F¨\ö¤)FïmØÑ” góTOeÊÒÁž4¢¡*›UtƒaÅD:£3aî7Õ¥?Ù0Œ�ëCðHÓø[‰ZïžxÖ¥Á<pSd “,Ÿ+xÉÜ©Ê\d}ƒϨvie¯¶‹*/ØPUêm9)�Ї1í©5ßóÄ$uÌhIœŸ 1a¸Þ‰¨ô¥‰C¤ ë"g Ð‰Ù nþââ§Éÿ*T©N¶—(É7Mb³ÎÆ#œÞѬÖD�5úTϺh˜›ñZ¦šÃ0ezݘ ýLƒ!°dèô�›Ó¤ŸñxgÏ÷’nË0¤b §‰ ]ô¿ù[æ$eÆìvŸž�}wL ‚˜Û¦Ë%šmsX� ±AÄH"á©^íüºQ X)WåÆï´âm³}\Õ¡p€^k"òºã¿ç³†—êÚY³>¶èòíΡ›8ð¼­ £ItàЀEt‰·Ò7Ä`z}qzvI.8qBäŸkxU‹[“ææ ™ª¬ëhéZθeTêB XûDd?LÝ­äTQ¦Ý9�¿] ô³ih'ƒ.Iž³¡«Ò®° [�­†ƒ¼‚ÕðœX2÷pÈþr“YBp=e uvŽŒZºaOœ€1ÄæÓjÀÆT©5Àpc²]"%nhDÓÑ�‘3%ºY{Ž�*é†÷¾­êm¾Ëó·wôc„?ÕÔ¿k\ÿ~×KU‡”8Ž_ãNø-GçÝ]�ß"è5Q7 ì�ÖŒÒ 2¶Ã{ÍRÛ\ßucí?ß*ºx�¸»2lsßJ¯ïãûMš2×�êMBçQµPïß�Þò´B•a×»þݯKŽB_T¦wù§"ê&O“xç&œ~TèÚËÍNgÒ߀Šîç;#´¦=ÊÄŒîÜy†=‡Y˜·]…`º]1Ô_ìbéèŠyø¨Àh3@\#H¤Cdi’Ù PñÌÊ4}0ÙyæÇƒíTƒ¸ ™¶nÓ:½¶Ù‚w©Içg—­ÁT^»žnâÆÏÖúá*’|¦ÞMÒ¯x@°+>ßy ÎÙ•æþHÈ8æŸ=UU‚&}Áü€­¼6Áæi„sÑC#ÿ«ÑÍÙøŠ\LsâØÊ£v0©Ö”:ˆr Lý3O“ü`C6·p�99û]cá�0ûÀè5¼WM.*]aìz2P�í{¥7ÍØù­‰GF¿°¢‘ZìÖm¹óƒËGE5lswnĬOA8yØCî {-8¨“¾öóþê':¼ÂŽbKwQhíj °aÖQˆ«ð•û†ÃÄ©_EѲåþþ�P€È!ö=§“Æ•æm¯¹×7ømÝ|NnÈzÉ¿ãhVUÿø+Qà›¥ÿ‚e”˜»¢Ói”’0æ5_ñ;»îÛþíÖÿPKÒV1]eúõ½Ã4imunify-security/inc/App/Bot/MonitoringUaMatcher.phpUT ëÆ«jëÆ«jux è‡m�OoÚ@ÅÏøSÌ!*56EÍ…´J(A)P‰©Réa½ã•Ö»ÖîlqèGì7ê,…¤ÿÞÃøÍ›ß{ï®›ªI²~?�>Ll³sj[œÿøÞƒ‰¶¡€¹2áîêü#¼úctoKj…Ã×03†ƒ7ƒ‹á`x c­a]<¬Ð£{À‚Í£ÿ\I4 ¦@“ù§õ-ÌgËõ~'ÓåýÆw«ét1]~ŽúЍñ£,kÛ6•ñ²Ž‡SiëLãVèŒEY’Q£o„Ä_xºÍ¬F•»Í¸i6,]%§�Œg[­<-ÉŠ1ì?T!䌥™®¶F‘uÊl/ÖcˆÒôàã]Bdañ,[sÊñ 'öö`—@‘G]‚ò À³Lcôð68Fµ%� T�¯¸Ãr¤Ñð6ëë#š0;(‡P_åV¸Ø'8Œ%²í î†o°ñÛt�ÅH-¼ÿSœ"«ºÑX€ÿ©ã)I:±ª[>Ý(Ã3E…•û8É’Nr­$#IÊš#«?‡3i á#A�=:�³ à=‡÷H/ÿ¾vƒè~cÅõߣt»W¼æ�£šÿ–;½ÜbóË÷É>ù PKÒV1]·„û_ê~2imunify-security/inc/App/Bot/RateLimitDecision.phpUT ëÆ«jëÆ«jux 臕WmnÛFý-�b eè«nú£J•TqœÄ¨b¶‚m aEŽÌEÈ]vw)Y-´wèÅz…ž¤³»$EJr> D±ÈÙ™7oÞÌŽx–ÅY{p|܆c8•ÙFñÛØ@ðïß8MdÁ”‹ü^¥‹×ð°ñèF.Íš)ì¹ádøÍ°w2<ù&I×Ö‹†kÔ¨V‘sëÊC#ÈE„ N§—o_ÀôüâíÏôyzvqs“W×ggoÎ.fÖ>6&Ó£Á`½^÷C9±�û¡L Þ²d@Fƒv[°uÆBôðº÷çi.øró~’eïŸKó¤]&yž¦¹a‹!Â�k.(4¹„k±�kfpÊSnP�FaŒá‡ Ó/ðÏb…ô&å‚% sCPP‘©Œ0I0YC€L¦ÓËwà~þûëŠñ{ŽÚ@¦dˆi0ÞI])Ôº_ºžÌÎæÓó7ç³Æ!®é×en©[sÃã“ïa&%¼a‚{#Ý'|èíü\£Q›ÞdIÈ!Ff¹_±$Gë7dJqòK4˜xËI…èùôòô§ý4ö ¿…—R-x¡€ e ¹Ì5,¤ÑA1¹ˆxg�äõ‰ ?ê�%ÌØ²hCµ¨ÈÉB#ÕB)´Q¹ý¢ÅR**¼‰™¡T¨Ê¦$„4�ò; tÌ:s(™°ž¸ ²eÊàõlvå"V©TyŽH, 9¥eJ(?jr�ð¸?ì�Äi½•΋RX¶Û-‡&§³óË‹yMcxDxåúÑ“›šÈF‘Óyb½îÖJC†Ž>²i·¬Ð[óR È¥#¹8qìÙc‚ÔbMœÙ�+¦ˆÅÅ­ý>h·2ÅWŽto—øç#+bÎlˆzä«â}MVO€tíh³“%‚e¡¼M,£:sS,-¸+ÙòÙ#¼_?Að¬Q��=f¨%7O¹0<÷ƶ%‹Vܶe°åŽš;ÙøâÔYæÂžÏ«äƒ2‹n\·¹CÂnµŽLÌuïi=ëñV2ÕûzŽc(“ÎŽ *ÓzŒÊ´Q·ÖÇZéžç<‰l‹û®ªÆyà¨$]vAÈ‚ËJˆu�ú¡OjK–%1ù‚¦–«ýWÑãTøœ‹C×î`à>G£zww}ä!tÃ­ÏøÈÔF�bP5g6/ô³+‰¯ÐC.èÊ4|…~®‘È–föö¿’Uºà .ÊCÊî 2öKéØù �[¢º–aéù>jýDÜeµ9˜¾8K7W¾¨î.l×:T÷ê6(:%h܃cИð‡À7¦µ‡_á¾E3q¿5±7ÚuâÞT·ÃÏ_§ c™'åðõ·ý> Ú¼ÝGóššýÆ9?ˆ¨9 >~úVèÃ/¨$¬cÚ2ì%ϲŒÂÙuî+A9ßÎõAP÷O�w1]ÈRTnCG „Œ´‹�’ùm¼³äí\H™Üƒ�ë‰;5Ñí��ÇŸ¬í§­Ê‚-äçV¥…EÆ4HBÊ�æÍ ÈPõV¨"Ò;Ic„ú7¹³R s憓}�JrP¤O×ÃB!û`/AÃÑ®¶ôwA´µÓHn½ƒÀoyOa»×Ð7b;}˜À43êzÔûÖš0XñÉdå<ûaï'Ö E¤NËÜî€vÕQ9ᳫ�Ûe™Ž’�<Òð ’vi§œŠ @"oy¸7Vif8rùkZ°3ë·ºÍÇO«š;‹þ�¶ü‚½ëþ¡SÂ,:¸âU0Д§8QD²BÕµ1¥¸µ€–\ѧ]ÒY¢¥ OÕè¹ÒП¸¤ÐÚÚ·#Ú.ïl—òá‘vï<> D7Ñ�œ²JÏûV•ÍÜ+l CûˆJ†,Œ�öИ®ö)Ÿzë¨<PsÌ Ì[z>¤ÇMõì×ÊÁoôºÏÊ[hÿõȃhñ%”ÇI”u˜†èÞôÉö Xƒ¨ý¿rÀXC×£ÛÿPKÒV1]惭êiú /imunify-security/inc/App/Bot/LoopbackStatus.phpUT ëÆ«jëÆ«jux 臭VïN#7ÿœ}Š9 ‘å‡Ú/KáHs¹kÔ�¶RA9g×›µðÚ+ÛK.å�Úwè‹õú$Û»Ùµš$öŒ3óûÍØ|÷.Oó pÀ e¾Vl™hýõG†\1L˜(>ÃÇlñìµ5“‰YE;0¾=ì} ÎáÊ¢h¸¢šª#¸ÅŸ°ˆ Mc(DL '7ïa2žÞü‚‡£élƒ�W£ÑùhzmýScröû«ÕªÙÈÜîE2ësº$¼�Ný $£:'õé¹ìnÇY!X²¾äùí÷ÒU‘—Ti¦19“RȤ6 (¦e€K™/Ht-MyÒU”D)Y0Î̺ ¹’ Šžºà˜b¡~–*¾Ä= 27L ÐÒ¡ÆD§ IT +/©�ˆ ­P‰Í‘’&˜XöJVfF*äD§$§!¥ÈºÚƒÌbZŠD)�îi<'¦1ÓÓ–Æv®1œb¡Ð=ö…!¿ ‰‡Oe°O�p²„!E÷âÇŽû®¡\<�g�Êz˜F N :à*çÅKG^º£Ê‹5<žiJ ž°„FëˆÓ§ª®3ÍÖûMïmïÐ q‚TMJšg±Ðð «LOL1%RÉ%‰mHŸD*yŒ¸²Á|¥EÏì�HbNpqy=¾˜Î§ƒóœ@“ù˜/¤ÑóJÞ¹v�›Ç[�Ëž@m„M_Fp^tUõVJ”"Öèͤªd!þþýOÜö@\ hÆ ú9ç,bÆ�)Úu¢ZŽ}P÷Ú‘8Cšu* ŽÂPZgp–E² …W>•½2¥K—µ, ˆ?gŠšB x�,.™Ê‹fI!"—v?¶që5Ð6*ÔhyŒý1÷Š´p£ag$ ·ïØ]ß½öW£éZª îsrZvO±W­ö´ÕîxGßäÍ]ŽWδñ¬Ç i= Ëj”M/7JB¸¦ÎäÜ´�ƒÆÓ–ôçDÝ;Ö£B){ ”ƒòÝ ¹âg+®»gmd®A�%ŽÃ²ã`r宺ªOÝÇ×véh@ùc—.®²×/d)ðúa‘Þøßõ*ëlyaöª´O`ϤLwOíвUþ/¢•ð¿–†»W$Û¸•†»Ý‚Õ~[†»ÝUüý¦Re„³ßP¤FWÝLâ�å®{ɯ+ùÑÕj£¬Œ>ójUç2a:›ÜÂ…”¼Söˆ[<½:WV/’"+3©Ä€J€“Œ%Ђ7x'ÌËwÀm—SXy›;`©hìùój€ÍÓø“Ùà¾k®¶ö3SÍæ±ËÒ1° ¥RuÌÆ¶Á©¹{޳­ºÇBrÛ»Œ!:¬ú…B¬7@³Ü¬+´ºaî<{{Õì‚÷®O[òö÷áù-†³ëÁõhþa0žŒÞÃÉ N‘çòË—W\ÇÓáÅt8¹™�mhÛ÷¤±Ý^n¢^ ”؃Ý÷ž{ìƒ�ƒSÿì–ºRo.‰hVÐ庳 §àPKÒV1]^»T ¿Ã11imunify-security/inc/App/Bot/MirrorDownloader.phpUT ëÆ«jëÆ«jux 臽Z}rÛF–ÿ[>E'å )‡¤h%š©‘#'´ÌÄ®²l�D—'3Ù¢š@“D4 J“qÕîö"{…½Á^aO²¿÷^7>(R¶§v‡.SÐýú}öwßgËìÁÁ£GÔ#ušf·y´Xªûßÿ¾¯Nã´ Õ«()oÔO«Ù õUëÑE:/Ö:7=õ2 Ôáðñ°8<±ÐWÀ÷­fU/ÄFƒ˜=yæTæš„ Ë.Ó$ÉZЬLP‹ØÌ  ëU ñŠÞfy–AAj»Žr’-Ã*–ØÇ.˜‰q�æ·¬1ê}ö¡ñ”ùg¡"ÛÀ°¸Û,8ÿñÝøb2�¼<¿y×äÂQ“ ŒxÃ7¯ñ÷’l)'¿òÁ<•hšîÞ’“Y/a ¤%¸Hz¥ñ{î0 ´„–ª>£™Mã¢ywþj°mµO‹¦Ìéö™evéâ» ±„'ªÓá‹hJVâ@;òÚ¡¥C;¤à£ëØÙÆç„ÎqR  á ÉD$„ƒ»ûêkøŠx~|¼-D<¡�Þbã�p¬¾áb0ûü87šB?=ÞFÀññùxtñæõtr>z}ñöÍù„w±ÛP¼kŽ”Á�öïIZšüÙß9$[‘WÛûúk¿Œ.Ǩ%ì?E¨éÒwæW_mƒyrrRŸú½@Lø.�…Í8ùXø-ðd‘ �/$Û­‘ßʾìê"^ì«yœ¦y “t:;â Tì·%ˆqß“_‰Á­’„Õ¶´�‘ìlÈÕíôž¶Ò®š¤,w"»È½½hÁA혓þ•Hjïý>>¶%Òwkx‚ñ°ëî~ë`�¥ ý¡:ò �tdÏɧPÖÛõôš@-GaœCl†eW5Àƒõ&áÚ“Êœ¸F’¡ôÚHE4�õâ~«�ÔZ$Ý<Î’]|váª*ª 9—!»P†½V!5@úÈï9«ppÌ5%½�;À¯pA)'×ÔY c¤Ùˆ¸�ëÍTŽ=i2AŠ2HÊ™ÇP/¾/H|~§g“X޳T^Bn0KIhnmOuP­v*ñT0?fl;DñPRš†JÆ¢·h¢;ü7B/12ÐÌ'®p?š‰rlñ‘š¥‰+XcPDæiºrÞÜp¶§²¸ä2�.‚çSaHÑ’’Ð7NbSÐÊúÂ>)†Çtf\Ï„{P„AÅ<Çï«·e…OïsÛY+k2�Ô¥:‚™Èb»×X©¢*ó–�m7ÑfÜ?wœñ © ·$Ib)¡Æ§@ôyÜŸiË’‡I¹š¹¤ùŸš9à}''ôäÇÓ�$®ŠÍŸ$@{®´¢jË›nÙUmûKgÄÝ�þ˜*h ÕùW ÿ¾ZîˆX½:yî=U�ï:%;îŸBˆy ßÐêÞŒ‰žÚ-ÜkçÛr6*yÙ  Çx8ov�‰Ž9eù`7?صJû…ûuêðæÆyH€:þn#üùÌ…ŠZs)ñM‹ª÷gjÁŽ©¦&ñ'';Bþ'ÓLõ’+T�ظ0m5¥¾ï-7Á\‰ª¹1Ò©æL�Ì„+­B Èù®ÏUwä¸Ã§cŠ9k®Y¤£)•z;4o‰ä¾‡ÆvÔgûvt>y‰ü±d‚¢¸å-†>—kfe@øóøIÑêçé³7Ïnû"—£kûž� ·Ô?爋—OÏ^^œ�&§/Z§x¶ms¡œ©Y³‚̲c•-³A ÑKjPÖˆšý ¿ÍŠ´ù»ê÷Ít'»…¦¶#§d&ï×>Ã÷t{¬½`‘ëly;h¤¶¤¿ÀóŽûçxþ=Èâ_ŽïgËÙó£;\q'v:þø}cÀU5õÞ¸'–“ÓŠ¥Í]è†s MëEµú‘RC†ÄÎ-1ƒk |ÛW*zi�n´}s>u æP<=E^š*cmè­§ó^Õõ#K®´¨)GJ·ÒW¾XªÐáQ ë–S7§_uìIwª«Ô?AQvˆŸSGãr>ÅY‘ÆéšƒÌcÕ½7Tø�-X€•cpÓƒ†üêl²ýn‡t"\óɦ´á²õF4CâÀÿ=�8×=QGÈåð¤Û|Fùy÷ä;õÍpx§Ö|ÎÕìLæò${®æ�ä�©­“²‘Ž« §kÿõŸ‡Gÿ¢~�°0ï1$WìKHïXuɺÐͱâR¢\Äsj71ÒYà4nWMëê�ª²õU­T³^][×~¥Ö‹(ðàs< ÃÒÅv¥ŸCM u!â�%Ç}=—Z÷+AnI»!£á7;_ûPÃÀ©&ÎîŒ6^ÔçE�í1§ f#žt™âýÖšmñE,lËDì‘ÊÒ5jŒºá¡ú\D?òqZtçGGTem¨å�1ß�¿ªn±ìºÊÑš€KŽæ»ÜNdHíNå|ûƒG+Õí�-Øsl™n´ªÖ] q·þ[Í:†S&nkáû~›Ó¾žç“öŒàåšjs·—aÞiQíJ.¸9ái´�ˆr?Íë&9o"—/‘ýrYn_¶œW˜K#•òBéÕ¹Œ¦jµ¦+*_~©mè&Ó@&Ò ”Q#¨¯2Á]8/Eitfb ?Üó³„ -™Òtb*«.á=jÇU®ŠÔÎäZéR…¿eÄ£~ÄÄ(éн¡ l .% rO†]¯0æë",Ö™#bù =+a€R¨#¯ÈåÒÅwÂÁ‚ï�["œgš°YT-LÇn¨36e~]Ëp¶q�ƺFˆ˜÷ÔÕ„k_nHUdð *h¸»á/U(„.%[zì¾Ê��kÅ��ÇQ�±€«)Ï´“ùÝÍ£jnHæÍa•ÛÒxÞè]}b8¸§Éù�¹ýmxW£V¢Uwµý¨ímÐUtcÂ�]ÐÏ›!I>{3¥ü}ÊE£L²¶‡‚f9#¡à¡Ël§RÒìÞz§ôq3Ì¿N£°’È®‰ –õ£°ãF^Mžð„±B;jãsò´v¼‚u6xÞð¢»þ¡Ã‹îPYßàZ§”ã≌sj¶~¯:Îvh˜Ùx%ÀÚ|ìܶÁè xí·Žè (uÜF²MO]zŠD lª§‹,­�£å©à†[|¾wÖf@]"íܺ¥š®J™ŠvwÇsÁkÈ�MÙ;uv È/ÏŒµðÛÂ™ÍØxZæ9…š)A'VYã Ð@½�‡Î£�C'»J¾ßpàs·‘¤aS_]“y')­ªkM�3ó²†Clæ“•'H ¹&SùG5rŸŽ­"¾ë*˜ Ÿ1VÔ+zø d¥3NÖ¥à’{wP2ú9\b‰ôò´\,ýe¨¦›”äØè³d¾Ð¦£Fƒþ™~¢æw É%ŸÙU2øÏéOcÍ#õxÈW‡7©?Ce™löKX‘&ƒ;.\8"ŠÓ¥ç’Ò”¹>tŽ�¹ðŒ4'(3DWîwQ –ËaPâ5˜•µY ²Wt1H'8ѵJ¨6Œ’ÈH>ü¥¡Š¡ž™bmR†ƒßq¥ùxpxt#Û©4su'Ò’ÀË…ÐúðàýÛÁ(ÆòDÐê ;@ NWÅ”~RÏVètSï;½O�ùð².—¾”[-˜vÚ¹ârR•‰¾†U KhD9Ãm£žu'uÕï�†=õøðˆ$zÀÒÝë¤Êý¯u\ºé>ñ˜ïÌóŽm6¥e!¡¸#JŠªœHs^E¡û ¼l·\6òü;¸›žÿI¡¦�¯­t[ ŽvÉýšµb*=õþ8{ùðàPKÒV1]àxH:imunify-security/inc/App/Bot/WordPressInternalsMatcher.phpUT ëÆ«jëÆ«jux è‡ÅXínÛFý-=Å0,É1I×hÿØëm´®«pÕHÍB‘Cir†å %kÛ»ï°/ÖWØ'ÙsgH‰rå"ÿH‰sçÜïs/ó—oŠEÑ�ŽŽºìˆ]êb]Êù²þïÿ°ËLW »‘ªzboòÙ5;Üyt¯S»â¥8f#³Ó“/O‚Ó“Ó¯Ù0ËØ¡v'Œ(—"8áßÈX(#V©D”ìòæíã·ìftûø>/¯nï¯ØðÍÝÕÕW·$¿°¶0gQ´Z­Â˜4g¤8ŒuebγBQ·«x.LÁcáÍsֽ啒éúý°(ÞÿMÛónã$ÌÓ«LËÞé2—˜žaz¥X¦u1ãñG±DšX/E¹f¶äi*ã°vánã…0Ì.J!ð)ÕÜœÑc_�õíÛÑí›ÉåÝÛ[ke,WˆçªâR+&ÕRD¸a\±ë‡‡ñFí lpjá©a�w#Ö�k­’ಌÔsËÊJ1J–z¬•´ ]YÄ &¶6ÌŒeFзT—‚åUPdÕ °�'[ý ø`´ŠŽØÿõvwuÿÀ†ãQ+*¯þ1R+¸"TRh©lmÕ;Ä ÑOQ�u"X¡ÉjœÎ´¶;zx’K¹Ï€àOäô7<¶À¾XžÙE×ã��·…<º—V°kw¶qTë¬ÎbQê™0M¾‡LRܬP‰à­™Ò–"YˆØŠäŒq˜ÜD–å|½�+’¬«¹SÂ՚řJÈFcÂÜAa�GÈÄ&ŸÁÒâÉŠZë „TŠLòY&ä\ñ9n/´iÂóŸÖM48·S<€IãÚk#jþ«ð$4Øõ½ó©åþ¯¯¥B¸¥Mtüé½¹'茩žl­P¦ Ïþ Õvj‡a®€N(­/|�NxYòõào¿¹0ÄöñϽª”½lO'ðzöIìjMQyµ�A,žÝ¡Ó(bèøØœÉ¹"RÚ”oøn3WÂV.Åwu(Lˆ41©Êl²ùÆ‚�#4òmYp»8Gµ¨¯©cg‚ñ%—u`H†‘,eÉ»5`›+ðFSLïn&ãáÃ5œ·îàŠÕè#QBÖ=PY“KmG­Æ\i%cÇ>èq*FC$V²¡Šu•»<{£iBpkA%hF@ô`þº jv�.1–¸«b}ÐXÝ C��´Ü„ŠÚæ@Sûw(–2 ›Êèµ�zìââ¢ñìÅŠ‚¢·ŠüÚÌUrdÏÌðÎ>“UYæoN7£& Ã)p1T¥ïV�FÎqÍÄ%/ÜäªÊ”†<1Âpäïãl•ayâÖ’àtUDËÓ¨ v�2aã°`}ùYu•%D ¢N}/…l,Ê`³dø»âIä…«GÖáÐúõÉ1;àåÜÔ7ýÕ† éàçž_JˆéœDçðp‡_R®Ý•9Æ2–¥gg~͹¤-gèÃ×»„mIõyô™tô÷é¶çË•ªP–®ÈhùÃøÛ¤¯½J±á÷ߘ·�¹j÷ ÉJ8”m{ãxúRíL·ãø�‰-¶C¯�P©I)¿œMÛ«ÝÑ”ê"•O¾ œØLļ2¨‡…•ʈFmŽUs°à�ŸîÝò›ÒŠâPö“'þÐrç7áz±s8JÍH o8Ö¡Ô[™6+y"�¦´F¦•[cPßõrìey’�½J¬ÜýéîV;Ý*ÀúÙp^fB¡Û%.Èd.-[H8®•�n+q~ãÅK••™ß�\žÜŽ”"Í ‘œ“'z¶”º2Çæ»-4EŸ‘Õ9­é30žs¯)ÒH:÷Ak¥UW 8D‘H%Õ‡»1qÂ+GX:£7»ë\`} ùꦡ&hñ•b„�ØÜ>8s²õ{�/2,ºY•¹ÜxNã3ð‘tS­ÿuxúj°¹é6F¼"Æëgñ¶�t³ÆD^çf»=ÖäZõÙÞJ›h{Û×°®MÛýš8›øx �õvLr®�ŠÊôŽÿô8@2«Ìî“Ú¼tÔKÀ^¨D[]μ?Ó˱¯ÿ}r4Ç‹‡J‚ªH� ÞÜø F{R¼‰)âEµ¼’T4­�aÐ Êßã¿KÉgÙï$Kú¨ÇƒÌ¤]¿(‰º0Î9BЫÃ?ñºú¢°û¿†?IƒJĬšBQç$NjàÈöS÷PKÒV1]ƒŒn …¹4+imunify-security/inc/App/Bot/Classifier.phpUT ëÆ«jëÆ«jux è‡ÍZër·þ-=êñD’Ëí&iG.ÝPm«•%�.q3q‡.AÕr±YìŠfRÏ´ú�¾X_!OÒïXì�¢%'ž”3 ­%öàÜÏwð‡?Æóx»ûèÑ6{Ä*^%r6OÙîÿ¹Ç¡Ê&ìXFÙ;ör1~Å>«<ºPÓtÉÑbGQÀž>~ò¸ýôñÓ/Y? Ù9QÑì\h‘܈ ˆýcˆH‹ Ë¢‰HØàøôê��\ýÿ O.†¬ÿò|8|=<¹¤õó4�õ~·»\.;íÒÆ�@-º¡˜ñ°‹EÝííˆ/„Žy ,{†»·G‹,’ÓÕÛ~¿=Pé³í\HüÁ‚�k-§2à©TÑLF¢ã¸¨E¬´Ð,� vÕgZÎ"žf‰` žs‘´�RÙÖ±RSÍX"xØ>:÷Vá ý>V)±„G3ÁB¥®³X·Ø„§à3J!ýD¤"H•¡6asÁI%é}9‡êû2clˆš¿Å¤fDn*ÁŸq aŒZˆ\¾hG{îB0Òbj�|#cërf£Œ©d*“‰¾²ú©ÔÌ®å“ ­Ÿ�Ë‘QW¤ Žxš&rœ×w:•°TÎ#+Ø$%ÙÕé©Ã.`@kF,z@ìíî½Ï•~(©‰z,c�˜lW%´3 ×Ò{û´Š±'ö â®b° –f3AæÝøi?g¯ûÆ£Ó«‹ÑÁé¥%ô´C±î ñÊ@ª ¢TX²Ð‡ ý¶BH žó¶ ¿�ÏÉ�à cç\6ˆ@ñ›áùÑ‹£ááèbØ?¼ O^� -i|îJš¬ ò†,‚5Cž\ä&J<½»|¦*Aœ´�ËT\SgÓ)"ía\ÁY’¥ÔÂêöêÄ“ôÊý¢¦\Õ¾ ‰‘{©öt48ï¿9ž¯çïV²¿ªZ?‚é²Jo×ê—­ry›ôù KÉÓémbìvr¿¢29–‘¸²‰ Š{Õ¿ljZ”‹%¨ï.¿¶ò¯ö~¾’ïfü¯:l¸ˆÓë"QËÔÂŒ¶ŠP¢±ÁÚÏ-”~×a‡y>G�`¡à¨TkÀSúóÉ雓Qÿêòôuÿrxh‰ý¾ÃN«üðb¯®^÷O\ ¹Dé!Ü‚Ò'Á’É Ú`’d�Äc ß9~?ŠÏªA]„ p¸r^hñ…Á©ˆY’EÚTV,›�ÂàðÄI¥­=9›_)H\ƒdD./HCK.´‚™"ð¢¸SñÍÝ6¯„_÷}ÑyÜylÀ H�ø�ÛÛ[„ü¶°úµŒä"[¬[J�þB¥`Þ×V¨�`ŽH$âûLPéVì*ºŽÔ("KA'%žªÔ–ù`Ï’�yÒ2é@z|[hF( (6ÎÓ×Mç 3FDs8 Áe¨ŒMHåÍâ6QÛáõ~…Ÿ¨%ð·çÙÁ¼_ -RB1…u´õ”­ìno|ØôÄÑë#üurJU~xÁzìɳ’ª×áf «f™Ç˜�èÖê^·´I¡ K†þ×7%òõÐí­Á)~y3{UÕ5ã©®�NuÍpªëfS&°Í‰ð[–°£áF.`z*C”ïM7ŽÎn¾`ã0@›iu¦ÄŸ»L ýMG„èÀ'ᑢ׿²à΃\©ÝRåú¶gù|>ˆL(�Åœß ó$>yœÍ Æ<Þ§Ó0û¶M�„:�ªHíN›6 Nk“g+°®ãÏ´“¿é…£ÄQ¯Ö=o?·‡h}{ áŠïÖÝñSyØ�ˆUeýô‰Ãº´QÚâI£ÚHß?e¬ìÞæô4î�.R ÒFЍ'G§<‡ª Nï:)mÒɃŠÎ+‹¤@“0IG®‰�äî^ˆE’éù�éƒ •C•š‰òë?=y ™÷Ü)¥9’ËÏ#A’Óðy‚‚1ê^®5`ùùž9õ›�AMS$&J_°4´ƒV(ARæ#x¡oïf¯]„xã·Oæüâÿ0È‹ëŸ*ÆË;Ü9Äkã³ûFø:©îiÈ‚DÓŽk=°1*°þÓ'ô¿²�+^û (»nCð»Ã—zÇö¥õIZûyŽVÊÌ~>‰0A¾Ùp;Å\@@C¥Ðìø!Y¸ä†mN fš^¸C࣠ÝO@†CÞZh�®®YÌ™ Ùsp|dîþiׄY†ÍDºço³†Bëü ‚v×hÚÔN%Ù–E�Vjeß^Æh\�úB¥â1TmAÙ‘L•™PÑ$FÂMý‹ŽÝ¾›OïØ÷™LèMUË… ¹¹E,˜žnyðË"ÀŒ™|/ºcã!MLv*GæG¸é-y¼eRGGë#í¡½FC¼Çì§o/Ö\˜«ÑûûæÖÎæ�H}zUNÍýç=(7œ’›¯¸Ü+ 4ˆ•‚ßèæNTŒŸ™7Ëãó|vø£¶Œ&:qk Fåf§ÎÇéþ¾Ÿ»Ônn<—Nx‡nò1øŽÎ� ç*œèÚ=mòcÒŠËÝæúÀ˜›ÿËÀÝCA�Vé ®¸…í0l`ä(-kvRm/éT/h»Árã.v‡4U®¬#Pô\ö³'’øÏ©!0£1¤�­žZÚ+&F2³Æ³[:T @ ý�oKJF½{5-xÌ®…°gî AwâÚ¡¿ŒR´‡F}–wt{]ÜL¼s€±¬@º1ÈY*Íazõ0øa˜ 7OËçëFáùI²Œý0ÞÌ'ŨM¯ù¡ê9_Ó6Æ�ò7½éa*wÇüÓÒnRˆÓ”½vÂϸ›ØËª¢E:˜Uììν¾?€Ï °P£ól»   ÖðDk™Õ#,ËXû¹ £—HýZ¿Ä�àÒþF˜b‹úy›ñôeéÈ�ð�-ôÒN@.À�(&u§ýØï}„¾P_!OÒÝŽÇ£(Çr2nʱ5ä»Xìßßîýé‹dšl7?ùd>��,Œºž¦PýÏ?jpé,„Sg·ðb6~ — ô$� #ëÐ�øloo÷³½Ï~­(‚>q±Ð—Vš"sâª[B‡ÒÀÉéùeN»½Ë¯ñïI§7è@ëE¿Ó9ëô†´š¦‰=l6çóy# “#:¸èY3’×"jâ¦æöv,fÒ&"�N<–îÛî,‹Õdñm+I¾=ÖéçÛù%Ï:gçýove|­b �Îâe±©6âZÂX¯QÀñ¼Ò&¼0ÒZ¸z4OÂñ¤bɆ¿Í¥•w�-_ž6Ï„Q¢}ìvÀ\¥Sèô^t{�#wL4’�wg*Š”•�ŽI+`D*w#5S)ˆ€…QñuÚ" ,DÚ¦ c@άI(O*L ?ýý_D!>‘X�e 2+WYÎUê9Ji$üaܱP”¯•_dLåŒ� ŒDâ"ñƒŠtðD”Ù‚š@:•þÉ÷™4 ˜Yw[AœvB-m\IAÞ*›î€4F›:“9Ŭœ!â�'\025 t°Ž¡…z·,ÛHÅ*‰4•³i¯`‰kHŒ¼‘1º™Š'´A2‹*M'ËË‘7Îd:Õ¡S‰¼«¢ '!Ñe&&kZ1‘ʉÈ"Œ‚=hB¬q{ÍÛjŠH§"Æ?F£v¯ë`5’¡}¦*²bIVJÅktÔ}ÌwL¢ ½-é™UxE8hì5ö؃ƒH “�É™6‹ç�ï�j–DrÆ·,¯téû„œþÇíí-²{{ܡ˴e*ƒTé]~‹|~‹LŒæÆG0·£©ɈÍ1²ê‰^‘¢ï Jg¼ í×®zgǵ1kno¡¡œµ¾½ì´.FÃÖñig4èþ¥Gp°ÿäàw{«§�¢_� ‹: )”p™·<»ôø;ÝŸ‘uƒŽz«ÜžghR'E>TÙÿ^]�?LÔmm�©E¯Š¯×™2ý*׋ܙfhy…J‡“~§5ì_¼ïYH8ÑimºvÐXëhý˜�î‹JšˆÈ–ŽeDRJ9÷k*F̼®œvÐ5â!ë‚�[Qh(Áå%ËÆ‘ `’Åì#0±-M¤UORC�ÚÚz”N•Ý}ÊOP`o…ås§ÿ|÷©S=4 ¢\Þ�u:2QIÞ¬\óÇg*ÆRi¨ƒ7÷ˆ„ÁaØåQ ×rQGc¥Ñ(Ï]^ºXÏ�>G�ª™¬ÖX4y›(¼;‰EëŸBUÅi­Dï®ÀÂóµVnCæØj6aX¸V âXSt i’ƒmª#ª\*&gCCàÉœæ©�‰ŽÈî*u¬B'H£E†PxÎzq6Cp#¢Lº¬”LIS®´�HÐŽ7JG47¬Ô�=T×1…êÒÐ�öqãÂí ±5z:ÍÖïÝuQ\Æ6.9}Ú© ýÒ:Ž4éÈ~jZÚšÅÂ]ï.U·ÐN¸"!ñØébáï¡ÛžÃÕ�Î:o® ze¢êìªW¾LÓWod §«|Õ:½ì  úØÖa¿�ÃÚ±D?„ó´//WPÿ¹ó \^´éë’Þ«û¼ºÊž"‡•ÓЃ�é~­|êýt+�X–J�„a'æ/~Ýý@]ûâ—ñ{�}ñþ 2´Ô¿¼•ÅŠiØï±0W]F�£#ÜìÉ\¤l¹Ú{´“B1ày^Ë´UD…Mí=b¹8þÔ·œáâõÎ)})ÈG"*GQÇ-FÑb>›%E:LÉ�°‘ 5°"ƒÔ(8‰«÷1ZtN;'CÜÄô«{©ŠÒfK±Ïº`”u£�žŸ Ï/=¨‚ùT:Âã*,ˆk…3�Ñ–�îX¦s) H皀Eº ­Ù;IÝÕ*§H_î)k4V÷`ž¡ÄÇâ]Ƙt—JaŒI±#-kOðÚÓzƒñIf Þ×)¸N`p�/3eIÛMç‡ac­˜­{Ýe|Éȋ†¬úàäE ?DöñîPýóþùÙjzõ²ÓÇ´á“ÊóØB«×†;`g-ÜQ3.–é&Y’pY^»Nþ|Ä@ÔVK±taý¾Js�³vÚl„ ­VN1�)ÎŽÌ' ^ó ”åŠxæ¼Ãäã�á£|q3Àñ\¶ÞºéˆïúùêF×ðq®¤¿· LCîÿÛ S˜�©|@±þ>*ô÷EŽ9ÜÏCλͦVáå£tÊáN�‚~òÜ=\ëI)N[«âÿæc÷WBT¼ Ö >?Z/øKÅn¨ÿ›×Šâ_*ù¹³>Ô“�ãZeþÿLÒmLÒh€wHÍEþ%ªä§íþùF”ﱨSmÕ1¢ô¹X@ªQ»Ø¹«YÞ)û‘’E!rpLœä4ê%&FJ˜q«Užájv\ÿï&!Ì—îŽ܉S"°r£Ÿã”PFØð‡;µÆ1ùLÅ Š2Õ†ûiO-Túç¿yİ(ÒÖ·ú33ãpb¥Ct¡ ’"Î<Â�œå¨‰1ÔrŠUÖù©e¯žwÈØ. kk÷5ŸþŒjÉ37§¨T?ïï˜Þâž%�xœU…v7;è>‡Î×ÝÁp°âº;NÆûêÞCJÑCsu¶ÕL¯8\6ëMØýµ>ÌíÂ#È©ŒÐ¿ì¯|BqûFx–R³>74t£EEâ‡X?èD¢D¤,£ð„w'+I7ÚÌgªÅ³4áäX˜K6zÈL浜¤©2­Ó.“ÅkC%¤v#K��h6u”±rwJná²ÿ«ë{ÙlŒY@O@L&n*D�‘¾ÛAs]¼^fä½5Yºèü€v½ï-EÖ£Ÿë{ßž¾äþ& ì;*bë HÔ†ûЬtå2(I©VÞ)OyI[1.?9q¹"R)sE1¯gk[QÓxnõ úÉv‡æ°Çú®9\"#b㯊-öp•¼[Â{úx[V÷Ÿìט¾wyzZ/ö.;4ü`[—½A÷E¯Ó^îÅŒ÷¼uy:D”ZP­öqÇÝ ‹íýîY =�:Ãe«Y+Öéù• oG«l«åöórÐí½€ãa¿ÓÉéjkoŒsA龨þ#vÓÊÿ®®ú"‚‡—ìH.¬"y�U»¢±ÌLj„2¬ÎN5¶ OÜBo!|“Êu>šÞ³`VÉ_`òP{-ë)éMf÷f)Ø×ŠÓ<…0½ëÖY„9? ¡Ý>}#Í”FÊ:öÔô^v‘7&ËQé“'�?%¨Ä"R—e¤cf^S¶ˆ%‹ýs•©òáͧµàR¶<çÜEøºŠÃ•ÆíÏ ³)jÒ¦’ä ÜÖ�U©LËœ+pô´$�«]5÷Rÿ½Ùþ/PKÒV1]%N}]!… 2imunify-security/inc/App/Bot/BotSettingsWriter.phpUT ëÆ«jëÆ«jux 臕WQnÛFý–N1 ŒHN%J �ãÔŽ-'\G°�º@]+r).BrÙÝ¥d! ÐÞ¡ëz’¾Y’²lÇiªÁ"wfÞ¼™y;~õC‘íÁÓ§mzJºX5Ouÿþs›R]Ft¢òòšÞf³wôäÖ£s»¥0²GÇyHχφýçÃç/i?M錽X:“Vš…ŒàœýŸ¨PæVFTæ‘4tpòþÃ!�Ÿ~øßãÓó1í¿=�Ÿ^ðùŎƒår„9åÀA¨³A*ç"àРÝÎE&m!BYÁó讎³2Wñêj¿(®Þh·Ón’Üw:S!-�rÀkCË¢êÜÉÜ TeÕ·2,q`5˜i‡Ω|nPEÿüñ{q‰$ }½ÌáF®¯KGßQa�³£X¥’ø]Dò:LK«2]ÑlÅ–ì`’+ûÏ(6™ia"Zªh.]Ps5ÊH~èú´g¥¤÷…{_º£TÌ?“Î=#E‘ è?Å9P.ÒxŒº iqRYh‡Š´œ«|Štc5÷ùà• + a„“&"ÏeÊ´°e*ï§p˜’u8Р»dö`idEdßɬèRÞ7’ë�à$ZEøÃ䨥%Þ“`{Á†áù[)­c ™Šú*[MB8á`ÅoC8q5%ì#Ó‘¤á÷/‡$òÈÓáI÷Œ _¼2„L¸0©©B 7ô­æTˆUªÁ,N,pBé¼É{ÏŸ¤Á0úæ Sa-¡ÁÎë&¹¬úêS»Ý‚9bž�/.ŽOßžO�ψv©s7^gçÞÑ£ã“1½Û}8Únq·¸‘gV§%ŠVdŒd/µ‰&ÈÓvìF~7$læM÷  ~ù÷ Ý*ŒZpl-‹ƒÊîP™ÍhŒÐ”¡C»Ô³c´æzÇVÓ:Üá6q_eu¨»Çîgpƒ:hp•³Ó—yÈu é4l€tïùÛí­Ö÷{ÿõf"àÒBÖ¥neû®m�:ƒm£Ÿ7’žHc s{ÚA/z|–"÷ÓØãé6‘ÖÃßó Éóbý�:ÞÈP”VzËD§uË¢¹�dR�†G›xE¡HÓžÿ ÊJà(¸Ù¸ƒ[~†²"•`/’Ök…ŸP(”¨–!žç¹¬ŒCaŒ—ªGÏ{Ùò8§MB ‘–ŒÏèrž 3CÊa¤ é3?Cð‰:±“HÆ¢LݽZÏ´N©þl5n«Ïe"aip©4OUSuç×5üf²ƒûô{^ÉV�\ýÙ§‰ÿ=y]A>¹óÈýa …Þ»5kÿý©½”+ê‚_ûÑ42*ÿF¢t‰Fq…ðà¶ÉÆ\ç}ÑsîÅô=†ZšP²´®S³²z0> ,Åí:7¥ˆ¤Š°Ô8#âÓVµn( Wß�,€Þ¯‘x”WŽ/ :EÅñ�ôÊk ‹eAàGNÜgÕl‹‚q?;ߌhð‡¦Ý MwÝF½uéw}q{w³Ú%Ç *P1u©Ó¡ÝÝ]ú’&T§ZuJ±H­Äøûùom±œËõ—,/®Í4�6~ÇëO•8l£‡³Ä³¾V0�e–¡ne³Ý€ PˤíHÍs�b¬5>˜¼›§ú¼ãFŠÆÆhcƒCeC],›×¾÷²�kß=eö¢žÈ§xYNŒulò‘¬œÔ6ÉY §'Ó3¢‰sw_î÷b÷ û$÷«ªîùGR6‚5Îli¦§ºªºêWÿÚÿú8_åGÓ¯¾:R_©s›o‹d¹*Õðÿs¤ÎS[ÍÕó$«Þ«Ö³Õ—�G—vQntaÆêY«o~ýpòÍÃo¾Ugiª^§^gŠ;3q¢ÿ<‰MæÌ\UÙÜêüùË·OÔóg/ÞþŸ_¼¸¼Pg?¼¾¸øéâÅZ¿*ËÜ�L§›Í&Šiç”6Žb»ž¦f©Ó)M�Ž2½6.×±ö˜»«gë*KÛ«³<¿úÞ–�ŽŽ*wpÁ3«–Xâõð4I�Êu¹RΤ&.m¡Ê•.U^˜…)œÒª¨²2YeïL‘ê-ÿ‹5F¹U’ç�pSyÁßàMžVË$ãNm×Êe:w+[*»P3[NÏŸ¼˜Îu Q² �- ¶ËæêíÑqÉ2ÓeUࡨ0Éâ)˜BBþp©Ë°æµY`áŠèøŸ±HtîlªKÒÙªˆñÜfàæçW“ó?¹xeæÞÒÆ›")i»ä!Wló„èX¼$JAó¤`EmÕ°ÜæI¬Ót«6ù$¶�$+§‰h{âL\�âv q'ÌñèÑ)W‰S©Õ$T­æ¬&¿ f7+“ÑK‚ÌÛ»�L…­–+ð$„ŒWþ¼¥^<-6‰«䥧+Ô`9Øb’„³-ô¥çz–¤àSýã?þªY'Î%Ù²Ãï†#‚éàò ?3ß’‚öq©§:¡žÑX˜2¦³ÉÌ os½„®‰8ÕØ{‘˜"0ÿg°–ÿ=Œ²ðõ½ìõJUÿ~tô€Œù–ŸÍœM«Ò[´§ÚµÓ¹¢£h1¢ùã?ßéB¹²€ðôûôèA^$wÄÞ±ÿô_=úØv6/›ét×^Æ Þ•UiºwÏô¦¿±§ÑßøÜf‹d Ãç½-±£!Éf†�•t;ª¹)¬-]‹œ¨^{ÿiK»+bß I&ók~SXF´K”åêH¢^é>uÍN¨g©ÙU_”SÍÒ$V‹*‹‰Œº¾†ça¯*.‡æÇÝ]OY÷j‹yðà˜¼pò][ÔS‚ÀÅÉ ¸^¿)`»`þ涪¡ˆ2êêî\ên4„“]Ë7Ã.#õå—j0P8=í½­�³°»ø„å¿}Ì$5ugж¿Ç…!L¼3µAªdŸL:”yŸ¸ÃR«^ÑÍ´Û—šh©/ây6Iò‰û”cÚ"|DˆÂ_Œ¼¡ð�íó€Þ!“8Om1l1  ·^k‰{›9½0ÄYw¡,}àwójƒÞèø eœXJ*¶U3˜è„ì&>µÝ÷ä齋"¦)Þ‘¶º0BØæ€v¿á ô3NœW¯wkÛæÎn½ÍÂÇ}Ý„�Â6]�µMí"«Ö¦ ˜"4ß*:X‰^ⲈbþÕlÒ‚A|¶l‡N)üÆ�á½æ�)Yëœì–iÏ4¢² 5$¼³UÉûŽÔ?þë¿»p©Ÿ)ˆrÀz&‰ˆs—Ìk#˜Q.²‚ÆšÌÌ ‚{¶6IæÀ¬FÌ"nƒ Ž`nk�¤(>ì%¸Iκò“({=†ò„Úcú.¢‹1ô€sx±Ü³lØÛûcNÒ[Ü5Þs8ª}¥³øTy—i?­Ý†¼gSÿ9mˆáÝÂ"ïˆW`Jžîñ—ñ>«)í`¢0�Àiã›§ä›íW(!Cþkj¿yp,ð,Ëji Ð8æÈ[ðÌÉÖ÷�eA^sª–©�ù/ˆþWdœ^!-²AêðÝ}Ä]ÕËI ì á«cöˆÓÚ9†ò§ÑÞ¿aÀ •8 wJ>ý¥Åƒî‹S¡%~ë@P�OUÙÆKØFÏ-}SŽ¢˜Zv­ZÉ—8ê!'âö¤³v¬r‹qF·ÔÝö…•^NåJ¸zËyöÅZÞYôáIÞØ…‰`äm‘_›¿�Q‰»H†*.APIŶJçʸXç¦ë÷�àoš,ÙùÌnÎ9zo,`ï=~á¼M ½7ŒH�8ÓK|JÍÄÌûŒÈ÷Ð�¡¨KTZ·¦˜$Ù¬!§ÆGY^!K‚ $s´\'sÆAukLî˜ZRн=QTëP¹ÂOtt²Rê“BÙYˆxIÆÉ\ˆ¦¾¤],5PÔÄ:Ë}bÛd`0ë„’B ä·óž¢.WšòÙïVcÔM ÈéF54‚:Õ¥boÙ<·8p²7|Z°ÊÚ�Ü»õšíX|ëuÈÍBšzgÊ®ïάMÕ›¢òµ0qÈkaêóÄyæ{%Aßµ{±®åÕ ×Yºûá¥çLZë  Ê0!2 ÔÁ%”‚°©†ˆ/®~±PÛŸO§2:i 7(ÞfÉ{5¼™F0ñðŸ“ln78Λ+~2¯½ÍŸH”ýo¯®ŸÈÚASì˜á_ñ'N§`ÝBeøêå峿Š7W7jèÅà8ÞDgÈB𣫠Z¾VívͺmÑò1¤r�Q¡¾fñóÂ,¯9vÕàïÃûðnz…?¿Œ®¢«èñÐÿöáxô÷Á8œzÜŸœ!ý«_)!=á.))IgÞ#ÑY*âw®Rä—”èy�ØA0êœ�0ˆîêYþšR¾çÖÞV¹´À¤gKh¶Æ8@«6×NÜ×WkVžMÖfMzžš]ÙO[µ5±ïÛKÖ šxEqÀ"ßÒœLBéEÍ�“\o):…�+ÞNGq’°Þ°,çÏž¼fá€7MO^¾=·ˆ6£Hý$m&&ÁðO8ZÀ—LQÀå…Í–·¢°ép™ #:™5˜.L€4JšêÜIøƒv«ù8r_ª.ì'6ª�Uѱ=’½…¼å¶£«ŠuZï-ðÃ]Í�“â�vgVÕ çvì�[r×Q]øÓêÛÅ¡ÚÓGQÇÐ8¥Ò¯üiЯø(XÃdØ�O²E¨�ÐÃÅÚ<ød%D5j�f[í#ðJ\œŧRSÊÞca´…³­„׳×)MÀ/|ÿ…Í.ˆ“KÑPë£ðvÁ»¦Û‚oÿ Ox­t:[Œ~¬Ü)áQR×sJsJ­¯´š›ð=¯CSrr~õfUØ w®ŽëÄ\ä*Ln‹’º¡/at¤Yeo tÒ/%O‘º$èÓL¾CZò“qN/ êOIç÷s½[dðF£ IýéÙ;9¨_šw�OZ¯ïUÓ'a—à~p­‹s*÷w€•óİN°„=ªq¿³86yÙJýnêâøF ˜Ð«âÉ‹K8ø¹µO>idâàÜmèö ¤¾úÎ;�ÇÁ³qjþ ¾ma3¤Å´¯br¡i¾ò‘z˜ôi¤?lK�Œ5ÊÍ K¨,ýuÁ±4¹5=w�´zùR ê6Â2)FŸ=@«¶‰Iç®ÁOèäP>×G¸Î1úˆt/Èu°é'iõì(>àfB>›‚Rßðm¿ÿ�Ðt�`'q"g§ÂE³BP*�å1ÔcmŽU•ñ‰±‘¢˜¥#’òaž²j"T+^�Â\,q6È1KŠ÷íñ õÔ(ï�$O(œPð!K Â<Õ*HË•dTj *Ê2UÄQ*ñ„*¤d‘HƒLý� „% ·�Ñ·4§ù p|5¹1èXX•J'ŒšÃýŒ<®>QÀÒr›ww éZµ»ó-¯àzsÑô€¾»�?séèâÿ+�Ô\¸ÁÁhÒ[ó{Žz…¢ÈX" =éHø¹ñS°`�”‡âœ™ÌªøÖJp¾Ü¤MAjë”Lµ��6à{ÁÝw°áø1�”üz¶½¶¨ÅËæÏë7˜�¹�¶çU,Qi–dS™�OÂ䚺ˆ‚Öæ)�ëÔfœišŒ†Òð«ÂV9gå®™‚.|Œ¡²n¬ð¿NùýMƒ Òȉ¿QÉõ¸=nÙ°z¸EA­£™‡‰‹u1÷öžúºŠûø�Õˆ¯9p»Ÿç¥f©c¨+Õ¥o¶ K¶XS¿ÊÜÖÓ0»"á(ú£h¦€bÄ”¯§P¶ÉT¤>UÔ¹±U7Tª$¥ Åöž"<½êDΚì¾ðyÖä'ƒæðCâ2¤.MøEªò�Wqxú aõ{o»�¬?ŒUE5¡ÛOµ��Û°7�:oZc·Ï�æ �õ€ë3tíéÿ¬|¿ÇþA˜¾Wèc`i�$sÎûèñ‹Œ­w }ϺG5q:[™üì'Îgÿ1ÊaÑ£FÒ.ëø8<â ï—º%q á™p—¬'Óš½’˜f1žæwê8Næ…«')»gÞÃZ™µÖ£züÒÉÄ¥áü�"'…=y<ÃZÃaZÎÊ8mkæñÝž´UÑ »Þ[³±ÇeOᄂïÖ4ÈwRt«õ"½“úBS§¿âèHâVpŽ}-–Ë wú(«¥bÏÏmá–™ÜhZ"×5Ôd£Ï¢)p|êý™½BN—¾†ÍÝ#ñTB:€Î8Ü(SqWqs’vµ.Í=&Í[BâÅ7’¨eWÊ )šë肫­ZVˆZíPaË2•¾V�nZ­ üÃ¥DÈ3E^œS²ò–/ ½—8”ê™IÇ>úJ”òábΣúTf&ÖT¯­+ëÀíH¥è[ð¦˜æ×ÊЯ1_p}·A̤,iù’/Ñy)(#È$^{ ½L¤ƒî¨Éf6‘:÷»ò½¸sA�™Ï ™å ÂT,ñ4f%;š‹aùܘ¿ïžÓ±Wÿr¹".YiЇZÉbÒˆÚJö5å˜ÒZ�šybJ�õðpfçÛΗì\þVTû ê[Q{N™ÎúpnBŒÔ™Ö.]…kÎ\8þ¥¦Ë­”z6ie(X_âéäŒ'Xk~^)m­’Û{«ÚZ½™�Ár÷C>â!£®Ò’§ ­C Ýg›Ì›‡áÊß×Ñ7÷'#{n8Öq},㮚åظÑQ Æ"V»Ó¢°ñµÜ¡ž½ÖühgžRß™¥ŸvBœß˜«ÒðËÉNDj}Ñæ¿ÞHH¿´^ü¸¾~ÐjLü…»Nv!—OÚý4·¬x’Ë"VÈ);]¥eµz$«qaŠ;O’ù>‘÷&Ìvê"õ#� çB#À -£ìš ˆ$´JÊc^ÞM=¢QÒª…Rç çí4ôõIÃÏ6­˜ûQ‹–k¬ aBèE˜Úvš6Z…\²P�ô�“æa@¶Ì÷J¨}âGUx¢½�…‚ ÙëãZ}¾újôÌ�˺ô æÞr&Â5ÍÀuÌ’·#‘¸ÏÚä]{í¤Ÿwí_tÄ—“užÚ9RjjŽï[{Rûߣvj ‘žAës9u<>ñŸ�L2®¨sSR­(q�çDLÅÎx,“‰Â’V ô#$ý©º¦>”Ô­¯XèdÖ™õr¢¨´M‘Eá¾vD­­I\lóÒ¶V“‰„p×Ý’ G´$¦icY¾,t¾b ó fí<œ³ò=ü““ðð)U ¶¼&=\“®©*XÏ¿†‰Jÿf`sI¨"ß7ñwЯƒLø¡¼æ\j M’‹ë/ß<;¿ð-“ïÁ6× Á§"5ð­•€¢²ÐþPþK¨»'­2é"¤f¾LRP:4»“d™!«V?P™œÄÑ9 ë Ñiëù©tÁ·Kù*Á9Q­íˆ.ÙûkÍÊmÚ×$ýš„ŒOŒÇ„dkLbn†¯=d¾g©�o#Õð¾H ‡H ‹Êïo£ñdØh]•û~¯Üa�õ�ªºTd#¨2ï�ª¯«~IùÏÑU¿þm%F`œÞt[ö¥Ýí¾ÓÄU*û}3—NþqÜ´ç^÷Hßs¡ñÀݬ­¶f ßu «†�’®U¸5‹©T 'ÙÂv.v; ¼®Ógà'ýÖ¦§røö^ïÊ­7� ÆÞ^é΂{nʪúÞú¡Ù[Ÿds1” žÐ½›õïÊ7½éž›€1&—YXcDõÍ©ÂÀ �‘Ø”¼ºÕìl/§ìï= 6z³ïŽÄ …cž~ÝœÔÃ+¦$vë­£© Y^ÿZY .0MEQ4ºásp¯Ôç´9k¸¤ I»™Ô:tI¬ŽÍ âU¸|.iJ€ó—ìžJ„fBk�d6±•k9rÃŽ/ þéáý§¡Îò95W ê‡YÄ�§F¥\wÅt›ÍÉE‘Ö­úïCPÊ„0‘Tíÿ#”L1™ ?½’´ë×rÕ‚|šgqÌò/Bº#ãÀ0·’*ã÷zü#æÝ?ÁÝý�'?u<¼íßþeë?c´—‹¹³�ÓãNo¥oê¿ýPKÒV1]Xµ“b:Á+imunify-security/inc/App/Bot/OptOutFlag.phpUT ëÆ«jëÆ«jux è‡�Xín»ý-=ÅÜ ˆ$WnÐþ‘ë{ã(J®G2l¥iÑ2µË•ˆPË-ɵ®paàöúb}…>IgH®¼»Ú¤I…À‘,òÌœ™3ë?ý”m³öèì¬ g0QÙA‹ÍÖB÷ßÿìÁDª<†k‘æ¿À»ÝúgxQùÕ�JìžiÞ‡YÁËóߟ^ž¿ü#\I ·„bà–®xŒà„-"žCžÆ\Ãäzñá \Ïæþ‚?'ÓùÝ®ÞÝN§ï§ó%�ßZ›™ñh´ßï‡Y–dx©ÝHò “#<4j·S¶ã&c÷î9ï>Ívy*’ç«,ûôZÙ‹vAòNX>PûP™¨ÜÂï Óè©Ã%�¬P)hÎbH´Úƒ½ˆ7ÜöZXËS¸ùù!ù0°Zn9ÄÌl׊é8:Ì Ø­0îð¾åÀ6<µt'åhŸŒP¬Ê£-v×ìÀ5ÆhÍ¥Ú»[¿¾2œÃ�Ì7"�¨4›GÂp¡Õ‰P6Ì"|» ÷³÷æ³·]]ÍV¯ËÕÍíb9�,g‹ùÙ=ì³Aä@ßËRLÕ~û�ºŸi¡ÐÿD[&RÀÞ…÷ùµb˜¹Ç‚ú[d’(ˆ]Œ²#áƒ?0<Ê h´V?X+Ò�¢âzã€@/Ím®S`Z³C·ø%½:iÕRË/bR`­Õgž ©œ8XTµEý2Ï|›k�G^‡Ð‡‚{ƒ³e˜W£ÖyF— ­xÔ2¥':Ž�ÁïS+C*CÂ)qã�)lÔn2eœ{•K*,$—( Ü&O�îŠ/Þ¡Ì÷[Eü— Mp_LL£Æðà)4Í‹1 ?n <6Àcõ»êtŽa®6šÅÌù+°Ö¨­`fÑ"‘"Âk\k¥‹\¼Â�c~þ0<ž»îIf ,2»Èí[É6ðk»Ýre wÓår6w·z3»EeC§^v�‹“£og×S:Z/H<ÚnQ‡l¡·™kGß`ß.·˜ÒÏ<³Äº’‡tH×ÜÕWL» O£v [ɵ¦çAe3–ª”tT´_A‰@[]&÷ì`0ÄEežÁ“9ïÕl«‘CÝšüNŸ9Ï̱¢Ê)b™Kÿ7‘tW¦§L+Æ+ÒÞ3ãÙ£V¨:3¦�/:â“Ù7ÂÐÍ\šÏR刄Y† Î *  æ@%Ö-:QÏ¡¸¡ö¬–Ö²Ci�írSŒ2«FÌ#Ì–‹§UÓxºÔ„s7ý:Æ!dnš­ü$òweî�¿!âèü48~s’ó i_熖&]„ƒ†—KéAð½w¯*‰‹Š×˜)Æ„°�3�½»P1T^åìÝcS@x¡Ò¬"|­†M~ íU‘°"hG? îE>ÝÎ3·²4`UÆP�Ó±2ªÕðD¯”Œ$O}CX­¢"òÝcÌú…_ýF÷ûuG.ÝÔ„6¼Vë9©oðãiø/¡K&ÅÒ$°nX®êéã„—¿ð*¡²o=w>_‚Fj».t=Å^ÝX:£`7lµ†îíÐY�+õ _Ñ¥œF’c«Fnà  {t£Õ tá,‘í÷”PRyÖ 4[!X]ºõèh¶GÿïXÂñ™Jæ1�C¼<@ßoÌànýoì§ÂÂÅŽ[ïoÇûï® =Ö¾;~>ÈM½çÒgɽ©Á]6V”cRq&lëäË‹Dѧ°ùëÓZ® !ù‚KÕãîd39O¾d½OUT‚Z?P mHÝ“ôÿßÞÙ«u��Oƒº¼¸™­ÛX5®Á´‚ãs{B£4è5ÿÎÁòΕ‡°/ðce‹¢¹u}Ü %Vz÷<û† ¬äm£›0«>=ùgÖ’S�nÙ/ñ�píYÓj‡‹ V—7‡OßÉú®ÔשW× ÿ;÷ä}ó•8:n_Y†‹\Ù‡k¾â³‰Ghtó8°šÔð,P¨PÒ ðA UÖ—ï àÉ@mt®aÑC?ÛÿPKÒV1]D�ô»j ù)imunify-security/inc/App/Bot/Honeypot.phpUT ëÆ«jëÆ«jux è‡ÕYënãÆþm?ÅDXTÒÖ’¼i vœÆñjc^¯ãK¶@6pFäHxÈaf†–• оC_¬¯Ð'éwÎ�%e½MPˆ4çð̹|çêOÿZfåîèùó]ñ\œØráô, ¢÷¯ôʼn±U*ÎuQ=Š/óÉ©øÃÚ«k; séÔž8+ññþ‹ýÁÇûÿY#®ˆ‹WÊ+÷ R0'þç:Q…W©¨ŠT9qrþæö¥8?»¸ý~ŸŒ/®ÇâøË«ñøõøâ†è³J0ÍçóaB7ºx˜Ø|dÔLšˆF»»…Ì•/e¢¢x,Ý»³¼*ôtñî¸,ß}aÃán£ä©-Ô¢´AÜ^� Y¤BCP_•¥uA31ur–«"øa-õM¦.¾Ú §Hrh ‹íõÄ,ð$Ôƒr QÊ™SkT#¾YLILœ�X° �a(ŽÅ\3˜¨LÂ6‚ëD/«rYƒ‰vIE&éëc¸õìÍíõÝonÄH|²ÿ§Æ¨c2YÈÈà¶OˆžGÒÁtÂ6,+§Ä¿ÿþOQX1ÕFù…*ߣ?ß^Ò+ÃB-õèz‘Á½¥ ™H`ÐD�ëjÌuÈlÄÜ:·€ ÄENè�שj:UÉ Ÿ{]\Ÿ ÷‡ûŒ¸(éH?îîî¸v@K â›C&ƒñÎhÓ¬¦ŠSéÒAbS8ß�uÁß'¶˜êYåäÄ(Rl‚P1D·Ä�˜U:•$ì´ð„?c“{Ø¥d½˜Mª4жŠ°ž‘�I†i*q2qJÞÓû„¹Ûب�ÔLûbØR¦9îË%ðìÂ=£}¦Ò!}6ÚÝ�ø€ååñÍ©8Ý‘ŽAH¨$™J-[µ#qOØ’ä…¯INMõ#´&}Xn¨Ka:Iµƒfñ6‘^ñ½Ìlé¤Ã}qœ’mŸÅ{ƒ”[ûø­ué%PNöƒ�ñ-V¥t2‡y™§Åå’!…à„àGGfsuW9ÓëŠn— ì�ÖyŠÏ� •+j†µ¥ØtIƒõiU°»;½ö�GÄ·Œíì4l”™ÖQTÿ ¾éÚ}1¬iȇ»;?·lþ6S5à'=£a¨«ñW·ãë›;o�n¦Âb—¦y-CÂAKñŠÐ)=fdäJ%S")×­EyŠy 1:jšœÃ·[¡”sY�‚¨ŒÁÉ2šô«Š2n4¨çL!éTºØ#<3�Ê$�å,"~a"{¯€ßʇ(Šâ·À@‚q¾Î^q àÔƒPQ8ÅÏ’gB”ãš  qÑÙÂ{‘¨ E)ÝÄÌS � X!'k®ŒûñµŽÒGkÎ@-zÀ÷±„¶ÜÞSÃY4Ng41v¶|�>%|ˆã+¦Z·& !¢V6ªõÊ ÚÛb¯I²ä2$˜· Ô¤D:§£?c"ikS_‹PÌt�° y‰C&z&›Åÿ#®+§Eü¹ª¥'ö¦ÎæâÙÝõøêëñÕ7ÝVlt¿íŸN×›ù‰Í6þ/ÒÃÄZótrh1–ï=™BOEO|ú»(c¤ÆáO?ÑÑÑQ󂨛ÄÂMòÆÎÎh„vÐYúUD§¶â²Dñ'0„ç¸u@] Ä„E“Tp2K a¼t6ØÄš�SFr긽:�x¸�Rû,<´BoÓØ ;‘âµ2¬Ÿ.ò �úùŠd-ýÐù&þ æˆp†o/‡ÇM\Á¢½ª�ï‡K]ïVZ„êz‘¦å8ó²E@¥’¬‚L#�Ÿ¨®“2Ïj—õ¢ƒú+K6Ò^ž^tçw\LYìæW+E¶´jŽcîgÔÕµ!~¸n0› KCS&NòrƒÍRªvqy©9s-[qÄX¥À’\Ê£¿Ã¢Ô üUí¯ÂõЉybY*ÒͲB�æîe-ºö˜I—sasÎwÏDÅWRì4C†z”èºOœ?;¿œ„ÞŸNŒ8žxkª VJòµœåHî_ß�ù¨íxãÝÖà0OE¹ÙŒr³åÝîÿ>¨KÏ”A¡;dÄ»ªh*J+!{4ª2åfñÉ^æ=1a6câ·ào•دO®Î.oî.Ž_�»ß®\MQ^ JS¡i&E|£É ¤Ü@7ÑÜ”ÆízÇóbbx`äÛI2<Ð`‡_ù5öþÔQÄ>¿aTÔƒe1G¹Â]±Ðʤ¾>èìáaû°Û]it�‰ô ŽX(À†&›vÍF[½)R3ÑÙ±ÉMJ«¤/GàÞÊ ²rÚ�vF_À…œÆò^ËÊ}� Qb˜Ëê[ÜÏ¡!Îå÷±Y€ Œ7‹àšisL§46G‘z… åîuü×ÖèïQ­oÔ™¹Ó<Ý;šŸ Î>.F�ô=\ì›Úͯì¼iIpi'vƒNqB�Ì@ÍçXÀ½{�™–\Fêšé©i ç0û žÐüóýº|ã$øpGV_óX‡yä)xÿæ¼sÍ7]�;ׯ}oZ'j¥£í¯·ÓÒS©¡�Õ&§ÍLpªÑ)Í6†·7fS¥Ò�Y‚éÏ Þ€œ\_‹{4ì‘$.}êE�¢-P1å#™„:Óä*6xÖ>,ŒBs„ j¨h9È¢$Ä`5ad ^ð(œ ]JiE1‹{µ˜XéRQy~=G>åäQ/{8(%OQ¼jFû—o^/yLÆvN'q5•!ðy…D·!°uøÎâôæõ¹ð ,'+xIBª$³TïoÐ�EÏŸy$:‡›OCnÞ7v?cë‰ 4¾T‰–&ÉP™z5D·Fvä�ñÅÍÝW·onÆ×hÐno^ þÒ]뮺ŸJvÊQ‡ºÔxÃPt;¢K!�'tÆG�ÂFGvÚP:êW©Î O�Á‹Õw À£Nª}iäáS¨�tN»MY„ø´Å�¬•C£¦á`ðb?åãá\§!;x�§LÑ—©€M!ÅA¼¿óYs×VŸþéH~Ö݈īÕþ¨Ù¬ÆPœH”Ö­M§_ÊííÃ1MÝи†Œ]VkAõ %¿ÿ.¾»Ã»ïhmH9 ®I׉‘:çM%kó¢�A]!},žì[íëýÚT¼õ@0Z!þêéàˆ¶¸y ¯j·}`-Õ¹E¾È(ÄówÅKí%�-Ìr!µ*8ê¼+: ¹hÚýÍ…H3S“†ÔYדé€GRZ š-P|ÅÜb{q\Ôûfvý²*ÃòÖ<0SÚo6 |{ { •—aÁã~ »Ô[,Ç×Ù}ø$Î̾–’Zn¶à æÓ¬txû¯ tÜÜàvÚÒ9ýK€ëyÜõóžÖÇ6lgëà`‰OPt*ƒZõ½Oyí2Ñnº~sF¬]õãö ºlÕ7‡Qn šªÏßP€Ó�šßìû¡€é6 qMÅÆjM„ÛÙh¶r¹¢ZÚdÙîó'´`8+(vê¾±YNlU¤Ü{q%¦b™ÝÜ€à#×ÎY×åzßH¾ë³£ë®½½{‹›$~ï⎳÷�+2¯Ñp8ìÐÿ“HXf³ŽmÚÆ-âÞq¹ñ‹¦åÿÁÅÅÚ¬ö–»¸È‰%�Øzxzk›´ˆi¨¹YÐ7'X³Ö×´X¨]<åå^=÷“ÌýßóíÉZfúqÆ›‡›0eè>«M½F?$èní°ŠÍÝJýñUôš¼ÝZ¿æÑj+Ó|°µÏùÅxúy÷?PKÒV1]²à†ww6imunify-security/inc/App/Bot/BlockStorageInterface.phpUT ëÆ«jëÆ«jux 臕UÛn7}ö~ÅÀ ÉÕ-FÛ‡&@#ËB*@V ÙiÀ€AqgW„¹$Ë‹d£èC?±Ô!we{cÉIô H\ÎÌ9gÎ̾ýŬM6<9Éà&ÚÜ[Q®=tþû· ©Cs¡Â¼¯V¿Âw­£K]ø-³Øƒ™âp:z=꟎N„±”°ŒY,Ñ¡Ý`NÉcþ¹à¨æTŽ&óÏa>[|ü“¾'ÓÅåÆï—ÓéÅtqﯽ7îçáp»Ýx¬,cá×ÕPbÉä�. ³L± �akx Ýõ¬ J÷×cc®Ï´“íHžËVa%5¿)œ¦rØ-™Z×Ay‚ç¼¶¬ÄAþ,Þw@„!Lö·Vx� ¼&þJŸŸA'¯SwSBÓ‹ËO€ª c Ÿ w F5 ھſÒo©õm0Ýüþ9G7B55R .ØM<¿`V0ªl) ³Þ `V‰*ŸÒ8¨å_!LȾ6¨vtÞ9¡H±£Á(É(b½"ª˜˜^Öìg§gÙQ”ð(e�¤Ýv�~MB1B÷X+­%\Ù@7Šˆ˜qì(­úxg„żÛxïÈ.…³#VRp(‚â©3Â�Õä:;Ô½G@Ý7OTúÃFX¬Éj‘k›G“4æÁØÉÆ2ðýPòˆë~Q(øV­èó5rµƒ9óXjëÑÁÃ_NÞòLù½A†ìˆ>Aפš“ÅÈyñî+ïå�#•Tîj&ujÑÉ>õ“vW7Zäú”$Niö4ª÷H­·Ük#hµrìu%8“dm›&Œ:ûliô€Ò É |tZ% Zy°�»^ÆÏ³éÖÓ}J]]Í�#Ù )%¼`²Æ�mµbø·é7LZß4££wD°iA5Ë¢{pv"<`î$./i¸D–ïÓìEm^Òä «I½yZŒh=©–þ{x”øÈ` Ô4>^i2q³%Àê­ƒÂê Èͼ¦�O.™¨Ú{Ò›é Ç/;—Kd*˜N ÄåZÛ§”V«Ç¸ì= dç8_÷àX)�»ÏËÕš(_ ±Ú?ÙÿPKÒV1]N[%q Å,imunify-security/inc/App/Bot/RateLimiter.phpUT ëÆ«jëÆ«jux è‡ÍYënãÆþm?ÅI`¬©…n{syí�,k³Bd[�´q , PäÈ$Lq˜R²ÚhÿôоX_¡OÒsf†IQŽ×H�è‡M‘3ß9ç;סÞˆ¼è°õòå!¼„�6¿ób°þó�ôž¸0ôÃä¾_Î?Á‹Â­ _Äk[°: B^·_µ¯Û¯ßA7`L(ÆL2±b.‚þÐwX(™ Iè2½áÍçK®?ÿ„{ýëIºß�ûý«þõ”Ö{qÉN«µ^¯›IHpÓáËVÀîì …‹Z‡‡¡½d2²¦ÕSÚ},“Ð_l¾t£èË�OS#GL4£:Døß±cvÇÅ^@à/ýõr…¿òÃ;ˆ=C{ƒw.`pç\æøÒçaÓÔãA`Ï9îæBvè@z)jáóß¿ÿœÀ–Ò_ø(QÀᡌ퉲CÁvIJ™âŒÒìâ�î‘~*Ø/­¥jå5“Žh ±‡«<¸[ÔAtÍÅÒü¿ aEíÈšH2 ƒÑêb­“·uÔ«±ÄÛê&]Eè@¼~›!öx"o$Á¾cº^�7“E[2apÕ¿ºÿXxç‡ \€@yÈscí‡._£x³Õô‚8ßAÕºº‰°çÃÐ ù%ºÇvîšN°+Ÿkë5ÚsK[Ül‚7¨pÏ6Øž`Ègaä¿ 1}1d#%xµbaŒ°Œ¹5ãstœÎ{Ú1óÝóÎ{½/ÐÑø×�f(èœj“¡h2XÓéÎàvp}ys;›ô{7×—“ZêšþkÅ™ôÕ“¤gÌd‚ÕÇHïOzÝaw:¸¹ž•!*½‘)0DìöÃbôsy§T)p1¼éý0ÃÛ�È˘ fzM²È¦D65ãæ)fpF ¹ná?€/ág™Ìe,¬¥ûÎê^LFÝé§ZÚuxuRû$Ǽ±ÑÛkN è*‘ÚèõÛ~Åœ  *½H �B<.1�Ô�Ï׃Ÿ ÁòW' ukôiÔø8º‚ˆó ®ouG½ZúzÌ\_ÖÀåáq¬‹)qëÇjì¡Ú–ºÀï~èø¤!j¶épJÒù¦ ’0¬D&j ǤÀ& k*£Öžïx cËwÀì{ÌGp‰ÿÔ¢c©2BÒZB¢ÌPƒgK¹ H⃅I‚PåPÊu¡ #òTì`„¨”«5}A†$äÉ(èE°IøÂFN˜4LDÂ)Qy ŽØD1¯�ˆF_Þ Á5oè‡ ,)“ˆb“€�.d½Cz’‚iM¸4Å"?b˜¥Ì$÷«&\ñÐÇèkðµŠ*˲ÎÓîpxs Ÿ+kÕú’ƒ. ï4ÚÓ?¨¹JæÖ ¨înÇ牬i¸×¨\z œÊÆ“)§’ ¬·í7fó›&r$ØÇhF¾BÝ${Ä2ZÜ@G‡âmú&© •V³ÆyˆqwÚŸ Wƒ)Ö¿Ø«Ìw�ú®‰³ö3â ­Šº¥Y¯g6Ö Šém'ME6lr§®/àý™n‘ÛþÔÔõηKª>´M0‡ w[IsNõùÖs~VÙ‡…Oe)ÌÐ!0¤ytì]Trj¢ø;‰¥€¡_ÚͶ�ÔÌc¤mh替Ð0t€ËÇņ„ƒ„D C×$"QO CNIœÕ¤&mo¨¦Ô¹°–Ÿ´OsRnwÐ9Õ]ròýÚq’eÐ0F’·¥ííT(øÍI» úå¾P–°b´r"+ï(œïTÅÝ#0‹Ô YýÒ°Ó0ÃNÚm¥™:*†5€¢ù´o+ñ ó»•-ö¶­#–Åm?r ËÊ,䯥¼";CAåØTP§z()3Ï-Ê«ÒubÅL-cO¦BYBÒKóŒã†ér¦«“)ª¢o'»²ÚÕèf<(øq±`ZË’—Ü4˜¶‘\’� ª,@ï�™õÅ´ÀŸDØäÒ£‡J X„RCÌh«½bïòF3Ïrï žÆÄ,…{JŒ²fzß®=œCU�±½¹,ÈЮÙ-qGåfkÎDjÖÁƒÍÎ鹉ZØæ1f´[«@ÿ[˜`|ÐÓ2ýÜD¤%rÃ"jª±ž`tˆ5Q8wG•ýƒ¯læôÁ©j…£�šß”.4vQMREF 2r…c <ù,6ί ,ðØÍe,_‚q›0ey¢qùYø++;H˜"ãOÙêåKž+Ö)÷˜»Äã§”9î):8k>ÅCÓ³4O· ·NQ¤P�:œ,u®æ³Ð‡4¢Î™c#"¨1VDS°¯£¸ðïž…œr¡‡Xöã´3EÉ�‹$T ³YFÖNÚ×KÙZÏ2ë̤T§s�-îº×¿¬oóâÌ0Uv–¾5%Ž( çÅæƒKÊ:œn׿{ZyVÒ.·²”ÿ[m}ù#Ϊ®•RƒÙu'[vÙÿØý<œÎFãþ¤?ÍW[ôÍÙÙŽ±° >Xðªsmçy ÅI,:�b,å„•êL^XúèÃö²£úÛ„Ú[§£ë�…'�ƒ_÷uÑ\9Ì5ÁâD„¥®W š;k¦,íK³§@~Iò3›£AÎõÇ]Uô˜8Ñ{+5*÷Ò¢fT–Ô•½hÃù@°_°VívLÓr޲CSöÚ.}-WÕ¡ŽüÈ8q̰ޭP€øtÞÀ“”áù¿1fv0ˆÌc‘v"cG6‡§§Í=l8sî­­vu%YSÒj¤ØN*œÕ'H[#dÉ–‡§áM„�=,.0¥î„G7_8‰>„¹x ž3ýrl�Ù®F1CufÆFÉá[£â·°d66~ö`;1n^«7+¸gí»èr ƒòÖêÍB‰SÅ "à8‘ Œ9Èé·¬\50ân�«¿Èšæí`Ÿ:œùZ%F”ÁNã�ÐÕ „”æ<òX¥n Kå@¿Ã� Ûé`§Ëv[ÚÓ§©ÇÇpF…Âlý:SR�ŠºÛ87f1·øü¶)ž–\‡R9{bk–®‘•G©Cú¾­óêûG.JN­ç‘qevãY¿ýõDé~Eͨª¡!]é«‹p‹‹ös–[[,^ø vºuPö–ÂØðõêç¦ì³=O-ø1]š7%Ûÿ¸1;n,v=m–M_yä¼¹=iOÓÇ;Ùzš�Úã=úâß°ä¾*í^ XëÊÞƒ§E{~©‰xs/[�_bâRÝÚêôXñó;æÌ“�ªÇžòX1®üI†Æû߯*z®Ó·�ôkRó‘‘Åœ£·­ñ7R.?6«_fŽ¡Y.]M8Îß6±—ÝÍŒÊîhôòÄ‘…sÊØîO,(î~;ÇËì­þ�ìUþDZXô{‚‘¥~ï,ÿÀ£ÎúUï%j®//ežçÏ&ô×ÃÿPKÒV1]!(÷:˜2imunify-security/inc/App/Bot/MuPluginInstaller.phpUT ëÆ«jëÆ«jux è‡íXën¹þm=ÅIDrbÍ8AÓ”MÅV£¶×ˆí¦ ô G"<"gIŽaa }‡¾X_¡OÒïp.YÊ&@ E;’ EžËw¾sáüøûb^ôâgÏzôŒL±²j6÷4øû_wé 7eJÇJ—_èÃâú#=][:7™_ +÷èH'ôrÿÅþðåþËW4ÎsúÄR}’NÚ[™B8Ë?V‰ÔN¦TêTZ:8þéò�Ž�N/ÿ„¿&§çø4™œLN/xÿÜûÂ�âx¹\F kÎYq”˜EœË™ÈclŠ{=-Ò"‘•yÁº«£E©U¶ºÅÕ;ã_÷'O„3éÈÏ%-Êa‘—3¥ÉÍÕ‚2•KÊU&“U’˨¶úÃϹºÅ9áéóÙÉåôìøòÃÑéôðèS¬*]C'“Ò*¿^ï"KB§¤‚.–dt¾ª”ø9VkÕJ;/òÜ‘)½S©$“‘xf©›-©²2ñÆ®Ø&úllzf¥ƒ-¥7Ã܈Ô±²hY £½Ô>nÝs1›-o¥]‘•?—Òyt-3c%Vfe.l­ÌíÑr®’9Û½œãØ,¸]Â^+‡­n>¯ Æ&²ðÊè­CéÔL³¾Á ÎÈ<ñ¯DC:ŸëÏæR0œ¨ØÁoå)1–ZØrR:?¼t’Î*û¢FØeòÛ&”Bé&˜¹IÛD·J@n'TíY†k*¿°ÂÁ.ÍJaS6BP*sée[É´JƒÜÆØ,„éZ$7•"o¨Î ýÜšr6±„Gì~&ÕVŸ·«FV��`‡Q� Þ>‡“dž‘�l©aÛ¢W$¿Ôð6 3kz k< b/ÒdBåu€ÉR·úÏ>žÑ«è·Ø»(€Í58ø�¿ü�´AˆŽ¡°V¬È­´_öxÙ¯ IsDØ5‘}ëÛú›h?Ú‰—äp–Wq9ªhŒ`þÒëíp²íàÐÙ|åT"ò8#ZçþƒŠxsÜÛsaùùÇ£“éû£ãÉéødBo¨ÿÕë¿îê?Ùº­²=€±0(@H½&ÏbˆªÞì'§|`ˆ^3‹¬Ûr<ù0>øóô»LÚ°è�Ò^íE•uZFôĔҗ*ƒ&¡=GÖ ¡ƒü*‘,°ž#+¿ˆÄÓõŠ-^B)¤1Sån¶xðÓé )Œ}ü#Wù+ý¸·³ÑcX×¾3l¹O�׈ê²Içµ[„Ú `[® Úš²Û•�¬O¬ L…8Ü×(àR¹©2U§ås²Âs¥](¯ô,¢†;)œ žn˜Q錺:® ú^0#»¿ŒKR�ºíàþ׸}o_TFz„ÔÏ”–é€úãwçgã‹�}ÚÅŸ_@"_Zýšî6�Æ1qâ²Ke¤ÉY¨B¢m�Š!ýán]‡/P2–‰Ø•p¦þðœ&Ö‚�œ…Ž2HÄ¡†ø,T�¸ÊQÉÝ.¥F÷}WB" µ©ºÏ´›4Ee�õ-a²• Ö.ç>Xv¤+ªµµ*ù÷Z´q‹¢ÃË{(“µsç"“˜ò2•£·¦Án´t+¢©¿Ôoå׈߇‹k,ÀZ_áçêI��Ó&§@~š‡* ί•}Ѝ¿Ñ¥c”³ãA ŠÇMý­RxC[0¼Û3¾¡Ó‹æY«û¿*dÓŠÖ’@…{ø®ðt¸Ž§™~ðð„Nò?�ŸÛ€î>ë[qAXõ am7öncu}å®J xtuuϱ«'>¤ˆ‡h$n„�‚ç”RK«’èýn¬EŽÎâ¢É¢ð«s�z²àÚz(9ñdzÀr7´Câ{PvÈ­qT5Ø�f(\¦ºiË•w½ŸÖ=>Z÷ ýßÉCÊÿ¹û?Èݶ¢ùßÈ]¼uç–ñ5&ë-³âœG –µõbѽšàd8ýö— ç-ÚA=•VÝrDz¨‡ÅCe×&7ƒ¦”¨vŠÄ@&È2á¹�¾¡±V,j�¬eZmžbï¦3[i¨¢¼Î¡/+uætF*[&~ðP2 üžðenø»ŽkHa ST&í>8¹‡”‹_÷vî:(|FÉεI{ópNÆa¥à¡)ìc#�TÌ,eÚÁ£šX@ “Ó…-�kV]ÈÂí³J>F˜—¼°3é+tDæ«îrçù×0©ƒ4¨üYÝïÓ›7oh Õ¦�Ú"\¡œ„ßp¼>ù“c2Ø~¸>ö¿]K¨vÀŒ0ßD§æœGþD¦anrÑ¡r‰)-nú)¯5½]Ü|EÓíÿðêÕ vÉ üôéwÚµáWpì.Тµ…ƒz�÷Æ¢±7 •¼‡ñ!ú(I<ØKVŽcDã»óhm¢ßý5Pÿ5¤Þ–ÓêÍV§£ÀÚ¨¶hëÅ(¸V[ÅP>`ø§p»§8³Ó*… W£ïe0.¨¹Ñ3pµáòw·½úÕÔýÏcõ},Ùí– ¨±þ÷ Võº’ù®D�€¾C�EéHDÂa¬zCaœVŸNËÉ ¯[�–ËJŸB´/W¯õï/ÜjZ'wwq±0*u¬ ÝQ÷]% ¨®‚ZÀîeÂCB×hŽÖÊÅ5hì$¹–k§½u×j­�HÝ-k5úþ‚TWi\ÖKkA^Ü®  Œ7®¬ªºÅ¾~pqÝNX×Þ‰k®Ög:TxÀ— [·vñû�Õ‡˜�2FgjVZþܵÖg7M^oëŒîØÒ±ø›Ù±–Á‡»Þ?PK ÒV1]"imunify-security/inc/App/Bot/data/UT ëÆ«jëÆ«jux è‡PK ÒV1]0imunify-security/inc/App/Bot/data/bot-ip-ranges/UT ëÆ«jëÆ«jux è‡PKÒV1]' æ@>imunify-security/inc/App/Bot/data/bot-ip-ranges/duckduckgo.phpUT ëÆ«jëÆ«jux 臅›Ûn¹†ïõs§5·xh’ÝÚà ¹ °{oŒ5ãC6+Òˆ�}øÔ_ìî¡4õSÆ Zû+vóP¬Ùùû÷¯ß¯ÇÏßî�‡Ÿv×þñË¿?üú¯ëÝ»ÝìŽÿûvúùêæf÷áùôðþËñþø¸?Ãû‡ÓîxøvÚ}ú±ûº¿? WW�ÇÓóãýnÿø¸ÿñÓÕNþ\?=?þ÷z÷×¿í®¿žNߟnonÏw¿áçËÃp÷ðûö×O§á?O÷×®Í?Ow_�‡�ûSm\ÈïÝüÞÅ_½»Mñ6¥?9wëÜÚ@¤ï~{zþ½Š?}݇”oçT¸Ï.–à\šü!”c¼‹y<Žù8ÊÞݹqïǃ?Mc,eïïû)>ËñðÙ¯Üß9>}üôããÃÝéX»Ô Fãß´í8ø?ÓâM Ë#_ã) ÉQB‘ß�óä‡8<£éP8MòãØÃ+/žâà³ô�ô=9}yðáò3ÇÁgÒ½”óPÈØ€ñÇ›G雸T†"ÿe›–0`ôŽ4––2r?“Ö² ^^=“�G/"„ÏI¸L ™Øà¤mHC²'FñèÙ²)ž‹ü¶Ç¦¾Ãƒì¾W”ζJ':Æ!Ù|FyõhÓ�‡Q¦5&‚'YNYÒï(k–dÖÈÃÙM™sQdïE#ÈÃÑk'[‘ [ €ü&Ã^v’w¤oà!‰¬(pœ¤6Æ&Akòr™“( XkÁóÅ´¼;ÿ¯�ÌúÉjNÞš`ì1ÙâÖ<ËjØkóÖ¼=8övÑB�h }åP©d©” Èf½)Ö²+ÖÕÑö2À ?Ùš€Ufj¶ôn²›M# îÅyLÃhiŽb±#°v–­Xx$‹¯X4cÂÛ­Rè|ã˜80¶A�ÕÌúT½m+¾ððØAQ`6ûbn`o Mê¿D ϲe‹‡£#Åáí¦ÅQ,;#."0%ñ~òü.ÙÒÈî P_6øÙëèéðήâкX½g–AyTÝ0MæÂ¼s½Op„.�νpé¾7ý�òÿÞYœ„më':ùE�¥iÓèóa6»ó'Ø9f"'¤¯.W‚뎌+SÀ*€`¥÷ ì@Gfa ³X¹¸>²Š•g¸È¾ÀD;P€ÂFvăd² à%ÐeÞ0�ã…5\83�À¢HÔù(Ÿù. Ø¡°Mn†èÊ3ôÁ û†�̦ª—ã|BÀNy®‘:óÿvMýØüG_Ã33ÇQ�êÿfú|ñþbHÙôÄ\-‘™¨lb Ìx}Дjd è ‚�Ø!l‰¢Fõ3m/míÈæÑ+›?5/ü{H‘dC«@–Œ…c¡VæIæ'Ñç‡:‚L߀ýë/ƒà—©û†šÝÐ.æê+2³Ã0‘â-é6—›ää ¥\‡R¨ét‡wB`àyŒ .»�ÚPÁóÀ6ˆè†—šê�p”H:ÍgŒŒ­Ý¬e½'’- –®ñè4ÙñðJóèÈuû†ùn1ʨï0ø`¶ ŠE+I×�áÕÌú8"á„Ö”+°¤F‰¼U«< 3yºàqâùÔ‚™9Múz2¬ e«v1™ñJÙrVÊ TGÍöׂY±b²Ö ޼gŠÉXðØï9ó 6+B¦�#º%­YÏã€Ú„ãÍ�é´TÙœWÌ CÅTÅauÄ/q¨.…àQ+tÌÛ ê*!cbý®˜Î¸(ÿÀ<]ö5ßf›G¸¬Sñ´ßlƲ†qS¤¼ È�GßmŽ ÜHfmå,ÝG®Íö¾r­6tx¡q>pAY—MŽx0$ËdjQã@™†,ªàŒ&kT%hƒüÄÅÎÛõA|!Ǧ›Õê3f §8ÙeÝ#|r�— g~®D ¬¨—-<1³dÙKªja–•+Gú�ɲ—Rµ†¥ðeÖ †•ÊRV6�1V>ÓÔvª•9F�ÆU4&CS|Y–n±¤dZAÅPMd\¨wz®SÐÊËi‘/ʬ±5™Æ%)å8yžOIŸ^Xs$…ŒÀS§‹(Ybf çºdæY$°h³,:±1(˜I"KÞ<×H—¦ó¬'áõÙOs0Ò“€±êšž»™YR+`F¼�€¹r�ìPð,`×$S/ÇZKGÂo/_#`W-_¼ñŠN«€}^] îø±OÙ\= Ѓ_2øi—�Rvx&g]glÄ)Ï…Y+–¸Š-±PìŠOd`z4 ýêc3ï8s»Ûp6oõd”\CØp§1|ÓŠÉkŽoGOc5™páö‘sµ;s̾bQ©‹½¿áY‹¼þµQlmÃDmƒfk(?Ø WqI¢=j|@*m–â•=x¶ å«€ÆX榙´ -{Î<ƒS,Ë31�ÇܕܚØ"€R­�®<’tP+ø)qòlPrõ*‹Y'ݸ¡Þ0udÈŽ\6i̳èMÀÛg‰$ØX » À€uŸ0’x±0W²°=Ä&ûÚ[Š\È]…VÀÔ¶V ÛG bº]lÓp3k¸™K5ÜÜn-·ìAÃÍš}Ë­Ý´r QÍȹá]%˜œ]V^PÞ³s-ÓfÍuƒ™MB Ô"—yô .*N}èTÌÊIÃÍ”|¬5YÓ+Ošë›'×§ZÕeú5 Y%Ä ™qå8æ¶­á*@nÍ®§N¶¹\fv{« Ì�jû&QÈÍܳ@Aµ´'�~Úº»HhQÇŠ]V\‘æ31‰åt«@fWìV�bG'+Fxb~¥¡²ƒ‘5šIU˜õP×Lz7Ì‚m.KÍ<õˆ‘+å4ë­UúŒa?I7fv;b•øhÉL«Ä¨~Ô̪®a²"õªªHËó8FLj©�{Fý¤Ïüfã̃md”�õkTóÀ³•0JyªŸ ›òž%‚]ÐkH8·üÚ¾Í|Øšó¿ûùêÿPKÒV1]ãO¬{…9imunify-security/inc/App/Bot/data/bot-ip-ranges/apple.phpUT ëÆ«jëÆ«jux 臅“ÁnÛ0 †ï~ ÝÜ ‹LQ’í¤í† ;ì8`½²D×ÙRË�åbúðóê(ÖEá‰Ð÷“âOA·Ÿ†nȵ‡žÜËwŸ¿ÛÝÍÙŠ=?3úuˆ7YQ°Ýýú�z &’ãì‹g½�ŒÜ!²æÄ:Ó;že�âzfB0§«ŒÍ‘�~ –öS8æìî#Ë»‡q[#™`;î艎~ ÀÍ0‰[ÿX¼d��üÇèûüÃÒ§¥h;r{—>X®a³å½€-È­V×0'ðZ0«íÏqz\äcgP—[m•”¶…JjƒUk´EéhrJW-V€¦U ”u‚ÚºÞ(%©1®°õkó`ú÷Íiïm¤e¤7®ÿ„¨þsøR,*.Ê’  T{¾Ç"�1�e«4ÖI¼A®êë3“Æ0é “¶0é å…â ÕÉ� Lîe™ÆU§¯V�Þ·ªÓüìä¨ÄüšrVÍ‚êŒ. ê÷‚Õ’®þù1Á÷æ»Ìxu“ýPKÒV1]D׉. è@Aimunify-security/inc/App/Bot/data/bot-ip-ranges/duckassistbot.phpUT ëÆ«jëÆ«jux 臅›Ûn¹†ïõs§5·›dóÐÚà ¹ °{oŒ5cËÙ¬dH# öáS±»‡ÒÔO+hí¯º›‡b�Hþåïßï¾_Ž_¾Ý?í®?þã—üõ_×»w»?þØÿ÷íôóÕ‡»�ϧ‡÷_�÷ÇÇýéxvÿ|ØÝ?œvÇ÷Óîó�ÝÝþþ0\]=OÏ�÷»ýããþÇOW;ùsýôðüx{üôüøßëÝ_ÿ¶»¾;�¾?Ý|øpx¾ý ?_†Û‡ßõ¯û§§oO§Ï§á?O÷×®/ør<ÝÞŸö§ú?úô~œß�îW—nÆéÆ¥?�ãÍ8®ˆôíoOÏ¿Wñ§»½�éfŽÙOû4†ìÇ1wðùnCšŽS:Ο“oÇiï¦Ã8}.SÈyïnû’_ŽùxøâÖ—?î￟>}þñéáöt¬Mjº‹?“ñoúì4¸ ?eðáCðË+_ãâ‡8Rì}–ßžóè†0<ãÑ!sågd/¯<;нKÒ>Òö8êǽ+„ËÏ—Hób\HC&}Æ+Fþx�°��yÈò_²iöz?’‡åIé¹›ÉÓ2¡N>=“Ž'"„ÏQ¸ X?ʳ>ÑÅ“cÓ¦xÎòÛî¸1ôîÇÁn»³ÒÙV)?ŠÎøiˆöÀy†I>=ÙÔ§a’a ‘à"Ó)óBÚd΢Œy¹`/«©�1EvN4‚¼­e)’n«�ߤÛËJr#i¸C$3 Š´ÏÆX$xš|\Æ$ˆÂyö´àùbXÞ�ÿ×fýd6KÂ˽³ÆkL–¸µ„Ï2ÛY:öÚ¼5_÷#ûºh¡G5!ÁêúÊ¡RÑR)�Å"z“­iWîÌëHŸ—zùIÖ¬0S³¥w‹€—ÕlQp'Σ “¥9ŠÅŽÀÚY¶bá�L¾bÑŒ‚¯[3¤Ð;ø Æ1p`l ¼«™µÏ«zÛV|á>†a±ƒ¢ÀlôÅÜÀÞÕ‰ždÉfGGòˆ¯›G±¬Œàa¸ˆ@‰âýäý]<±©‘Õ㡾¬ó³ÓÞÓî/œM\žÿv±zÎ,ƒò ºašÌ…{xÿ.æz á;\<{áÒ|gúåþ½39ËÖ:øY�¥iÓîéûa6»ã'X9f"'į.W‚뎌+SÀ*€`¥÷ ¬À‘ŒÂ&@F±rq}d+Op‘}�B�€ÂFvă$2 àÙÓiÞ0ã…5\83�À¢HÔù(Ÿù*ñX¡°En†èÊôÁ û†•̆ª—ã¼ `§<ÕH�ù » B?6þÁÕðÌÌqT ú¿™¾_¼¿R6Ñic°÷«kÁ?ö.ÛX÷tã—ô~zŒH);<‘½®3¶7┧̶¬K\ŦX(VÅÒ1Ýš„~õ±™wœ¹]Žm8·º3JŽ!l¸ó0|ÓŠâ4Ç·£§©šL¸p{˹Ú�9f_±¨ÔÅÚßð¬E^÷Ú(¶¶¡PÛ ÙÊöÄUœ'’hOZ�J›¥xå^7žíBù* 1–¹hŠV¡eÍ™{pŠez ÓyŒ]®Á­�-(ÕšÑéÊI7Àu³‚ïGÇf•¡±e1ë¤×"Ô¦Ž¬i$‡MZs/zpö^âÆ=É6èn0`Ý7L$^lÌ™ll± À¾ö¦"erV¡0µ­è¶Q‚˜î@gÛÅ4ÜŒÀnæR 7—[Ë-{Ðp³fßrk5­\BT3rnxW Êh׃•g”÷ìœFË´Is]of“ðµÈený‚K€Š]:•{³rÒp3¥ŸjMÖôÃÊ£æúæÎµðR«ºL¿Ê€Î“É-š ¿vâ­�óÔÎùznb&báéÒ“�y¨» öê\¼YÍÞp¸ìÀK�ÉÞïÜxfv¶ `ÃÉtågnW"”§!f»Ü¾bVøZ9J9}l›Ž†w^/ÜÌ:u¶åXyÌ¢Ÿrd9ƒYgYq±·Aθtž#Y4ë‰J:ò³X0ë‚ 7OJ�¹$�qê¼]œsoàÙ%FÂ�•�5¶g^xIzúB€õo°�æY€˜åFÀ,„µTV¦Ý+g£¼pÛñ�¹íØVîÌí�ÛÇ©Z�·>`ç!­5_«À[m0ËÌ ÏoÙ~a§CR>-®itFŽ«®¨}›I]^��JRÈçp¦ƒ8¸-Œãk mï9Œt �rã˜).Z˜WIû[þÆóæn[Ë{ €£Ê8†_ÂðÚ3µ/ðüz¸nwÚÞq“(ξҵ xÝc²LÙ&¡ëͲ5«„îôt:è^‘^ÆÐKL¨kö^A šz·kÒk3ö™@UÂeO_|ƒ®Úz^¯^¨²7hUgÏP6wŒtkÁÀE)ìE¸Ö‡I ßzþ™ßÐq!ò7Ä%ÜÆ!KS)p{H>¢[ö-¡X¯V!* ׌b=�XÂEM®m&7‘z-ݶ3ƒM‚œظtÅ<+xÈä>æ&¡§{8U`·Ú$fA®zä׌¢6‰È®Ž¬b�L‡¸rlsÛÖp §fWŽ]'Û\.3;½UæNµ}“ÈädîY £ZÚ“@;mÝ]$´¨cÅ.«ŽH󑘇ÈrºU ±#v«@¶£“#<1oi¨€¬`d�fRUfÝÔ5“ÞM£`›Ë\3OÝbäJYf=µJ߀>ñ“tqA`f§#V �KKfzX%&õ£fPp “]ˆÔ£N¨"I,ÏãI0©¥BîôJŸygã̽md”Oõ6ª¹áÙJ˜ ¥<ÖkÂæEÞ³„· z­ ç–_ÛÝüLJý¡¹˜/øÝÏWÿPKÒV1]¸É;p¾ÙQ8imunify-security/inc/App/Bot/data/bot-ip-ranges/meta.phpUT ëÆ«jëÆ«jux è‡�œM�ÛȆïó+t›5ˬªn²9›8È!Ç»wCž!=Æ&3 Yb`|¨‘¨‘,öûØ~û£ºªºû)JÔ_þþûãï7Ãøùixøiuûþ¿üûý¯ÿº]½YýñÇjøßçÝÏ7ïÞ­ÞÝ=¿ý4< ÛÍnxX¯þù¼zzÞ­†‡Ï»ÕÇo«ÇÍÓÃúæf;ì¾nŸV›ívóí§›ÕôçöËó×íýðáëö?·«¿þmuû¸¹ÿmØî6ÛOÃnõþ—ð>ÒíŸmÇawÿ8<|Øìm½ñömÓ¿µöWkËéOÍô�fî0µ¾ÿíË×ÿšyÜxnïblS·iÇ>Ü#ù0–¾¹ÏɬIécØ&¦ÿîLJ2ô÷cÊÆÚ¡ñûÈ>FÉ>¾Ý<}¾|øøíÃóýn8˜t¶²ýŸ°…ÿ|é¶¶X{Z7ïÜŽ#~'¶{ÑŠ=UÄV‰½;S¢+1”X„X%ª9‹š³(å¡Ò)Q¹¯Wîë•AýÞ ëÏÄ7¯ÿŒRK#o}Ê÷;»ŸÒþî]j–û'¯ößL»ÆK™†h^†ˆö{û^›87 n’¸Iæ&7™T—ªè;6�ízµû.š7IÜ$s“Ž›n²á&÷Üä�› ÜdÄ&Öpç&#cïZÏMØuÎ)ål®s¤�m ¶%Ø»Á¹-7áÄ Îºà”J¼¢ÄH€Ä+J¼I2ï€Ì+ʼ¢Ì1ʼIòGn‹nyÑ-çnˉÙò¢[ŽtË‘nÙ/-çnÇ‹îø²éxEoµÂYW8ë ›[8Œ…ÃX8F={·çгw{Þöˆý²a¿Œ/×DÇMô(œ/#¦·1nã–1nã–1nã–1nã–1nã–1nã–1nã–Lj‰Ì˜ÈŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqË·ŒqËZöKË~ah3†6kÙu- mÖò&騻ÌuÖ±_:öKÇ~a:´Ž]×ñnìøÄì8w;>‚ ­ð¢ /šÓ·ŒqË·œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œYÊ™¥œY*Ü$Áü 'Áp ®(˜_‚™! Ó;+‚±"+Â0ÂpÃI€ù%쀧Tðg|ax�…án ÃÝÎùÂÐÎùÂ\Îùâœ/Îùâœ/̘áœ/ÎÉàiçH;G:8ÒŒÄÁHÁadjŽàÇ(8FÌÞ¼aÏ#8Œ‰cÄx‰�8‰÷Qâq©‰cÄÕD$Þj‰Ã˜8Œ\“Dæ}ÄeKd#—-‘9™�9\üDæäï#.¡‚K¨à*¸„Š–ÃÈUVp•\e!¸ þ²Bp­-'—sÑþ@2ðÝÈEatœ üʼnà¢0¸( ®ø‚+¾è8F\Ï#¸n ®£pŒ ïiþÎIðwN‚¿s\æç$ 'ËÁÅrp±\ @ázº4èÝÂ%wá� JƒÞ-\•.¹ dPøó€Â…{᪼pU^¸*/\•®Ê —Üã!¥ÔgY#gÝÈT�œ˜ã!ë´-å›è‰p7އ¬ÓabŽ ðcƒ&ŽœÞ£q9½ÇëçRçïäÚ»)ïßbI/oørçÜÕ:çnmÉÖ˯ŽEÓêò›%³ºüjɬ.¿Ê1«Ë/—ÌêòÛ%³ºü¦Ì¬.¿|rTå‚\:Ãu_¹\é)Ù3+Q:Qx)½$…ÕDk^U9i¹HÙôà‡œ«ËzîC^Ue×s»žÛõܮ׺whËC®ÇNzÙI/;ÁàÚð¤ ÏÚ´¬MËÚ4mY«§nõÔ-L­—ÝéÁ;my§U/»hËŠ^vцmZ¯çîõܽž»—së“Áõ‰è�4Üõ�é�4Üõyêú9\o!ש¦�S—Som¸>Œ=ôàú0v}ƒeú´u}Úº>m]Ÿ¶®O[×§­ëÓV;EvÕ÷“v˜ö—v—ö–v–ö•vU–Vé{I_KúVjõ¼Ò�´Jßg�´J_vú®Ó¢4Y_túžÓל¾åzi•¾õ ¨/@uÿåµ0*¯Õ“×ê†ÉM³D´,I&¯å´êrÉê4ÊkiÒ•Eg¥xÛÖJñiãí¯»#J7ß�})_ýÖÅ,Ž«LÞW'ï'b´ã�yñû ×ò‚mGùpFWå¼\;Or3Ï.u~U¯—}PË•SÎVÝ¥Úª»}5Ø—ʳkª¿ú0ISÑås±{µ°Yï—Wv’¯žF\Lõéc=oèšñ^�ø$êÍ}À¯]Íj…SNòò£‡“¼¼M.åzïå'<'yyã_ÊõÞË�€f9–�†K¹Þûê÷KÎcR7I‡M´“3uaî£jË¿�r’—ŸP�äå§P'¹’è³\I‡Y®t–_îµë_êyÕ+ùrÒõøÇMèzñÞèåySÉ©Y¯Ãð°xˆ�ÎlmZí°œeíWí–Ê!TåÅÚÖ/Ö )ºæø°vá>ʵuÍre]³\Ù­³\ ÈQNzîZ®ÍrÅ©³\É•£œÅºya×Wç…\ï]É¥Y®Å…\ï}åÔó„èê ÑÅ˃�v™ŽgùPÓ]1ê,Ëß&³®Nj]¿¯÷�O>¯~‹ë$_õ|øRýüp’öý��ñ®‡ŸåJBÎre'Nréåà/r…å.äúàjŸ{SÅÿý3W›ËÀ‚>þuú…Âíóæáìç 'ùÍÏ7ÿPKÒV1]§Ý+J&&:imunify-security/inc/App/Bot/data/bot-ip-ranges/openai.phpUT ëÆ«jëÆ«jux 臅šÛnÜ6†ïýºs‚ƲxI§¤èE/ $÷ÆzWŽÝ6»Æîh€<|g†’VöÎO0äûyg†”þíéáéb3Ü?n‡Í»æòÓïŸÿúôåÏËæ}óãG3ü÷xüxq}Ý|z>Ûa¿:›¶ùc×lwÇfØ<›»ïÍÃj»i/.öÃñy¿mVûýêû»‹†þ\vÏûõpû¼ÿ÷²ùå׿òáx|:Ü\_íê±]ï¾]}:ÞíŽí߇ÝöC£ððگª’õÃêHÝ\=†½¨.?”áï‡ãúaØÜ®ŽexÛÙþªËWÆ~éüMçn‚û©ënºnj@êõ?‡çoE~xXÙÐßxÛ÷Ƹ޸䆡ÏÁÞw!¯]ïïƒßø<¤õÝ`³Éa؇œ];wt¿ž:߯¶_‡ÃíÝ÷ÛÝú8”)-ŒÅ¼òÒÖ·&˜Ö˜ÜútmÓØå+I{§L­Sk;Ð\8î=GÂ�~,äÖVqïÛ® ˜x¡•yí½JmgZë,Æ´ › Í,Û wn{ê¡CóL?N·ˆµ±u=[$,àûÓ?3òÚ'›ÛŽššøº_b}WÖ¤Íê„Õ5�¸w,�Ü‘Õ=nN‹ªŒ�+”†¥ýR7:Ï{¥šó„+­m€Ëbìº71Xõ„U/*¸:1¸Ö’I’g–8m4›0ޤxI>fr2ãÚžìå8ÒÌÉ¿M–Í<¶Ñê»M”B• cJýRßI »JëDf£Ñõí,ܺx>ó…el‡,ci§;ÜXà, A¬1Àv“À¢pÊ‚I„†`�GGqôÀ„ŒÉ7ò™oÌ´§d€……“c€Ã8âüRpnûÊÒGýÀLÔU†¬ž¨ Ç×a÷MÀq¼GFymáÄ‚®Í=½a7æÍ.ÒO‰vÁ¡iG§?r8ÿ‘C—äòÅVöŽcF'9ÓCk8¸Šõ(XQ^…‹§Ó"Gî= ¼UkÂ\)pÌ€»Ã+ãü�Çš®Ì ($¤ˆO- ¬ÉØ¿gZä$¨ ‘8âUrïÉÃÀÃ<ÖÖHE¦C)O8ÅßÁm´\u(k±ÀQBŽØM¬§Øå*R‰ãö�\…V€œœy�wˆÌ Rƒ1�Î%…@ÛGNŽy?†æå-up÷Ø0ÖÀµñÌÈ9Püà´ì^\–œó:z,“6,gl©-­Q²þI`Åu€q&�¾5ñÖçdþ¼h²>èš'®oÎÌuëϸRzXô°Y¨‹Èñ‰sÁE%ƒ–Y‰F_" jÍU.¼XÞŸ—²3õâw¸÷‘«‡’xæÀsž—¦IÐ4Iú†‰mÁõéî•S½?4¾¼ PÖ×GŸ(� ŽNœÎ<8Ñ 3¼Ï ø5Ò$çEKÖTÏøõ9[šËBsñMr…VÏ1óÐs�¨û¢ð\®ï°}–4¡ÛÔJq]ÅA*5Œ0ç[•EIZ®äYÝ|'œA,q\-—\�T �~ '�¥è‚ëÎCœss½Î`Aæ4[ÛÄI€f ¼‡M܃§¥‰gð:¬Üþà ‹9¿(p@›¥Ò {¼AÂQ0r.D ¦<‚¢5sÊ’Æ÷•Õqtèz»  ¶ºÚFr¡‰£C œÊíZs•r$D„Èïo�G‡t}ü§ó ´¿‡9‹oïÔžjauõ=§$)_;À¢÷‹¾æW^”ÕZe8ð:tÂj„1,Ò…÷rx*µN„/í¼)½‘rEµ—2ÖKøQÏGß~Ùjˆf¥ >€—ZJngÕ”`Î?Z©5ÃjÛTk›êms­m®¶u]¥­7uXë¸\»1¬¶uµ¶®ÞÖã¶Õ/Ucw� ˆŸ Ò&Xñù�ϧPžЇƒ¯ÓÁCEˆ³AyRƒ‚(LIºo+ô£?+¼ò˜¿œ¨…¡‘—H«5¹¾R LÎZ&Ó&� nægY/úÇ–”k¿î»Zò1n¶×ìåB�@¢à‡8�™s†€÷Á¥÷àüøQð¬Â)˜¢˜CEäIáj*ñ°¸5oµRɾè;‹£ JÅ|õÔ�w‚ßkØêçÖ<ƒÀ©<µ¡ê­¸à—z~µ J©µì!b—�)Ü›Š7fiB�[ý· §Ñ}}3�¼HW"Ûò["ÇòÙ¯“·¢sàSª²Üe¡OIk¾ŒBמp%“¢2ˆÜ(°µX�ÑG]á¡ri( ²ö{ù&+á!ß/êÁ2ç6Îüë$Ö�‹S8Ù1u 3GÏ7EáË÷k=ˆ"´otË— ýþ6þ5ÿBÒ~·Ú,~‰ðû�ÿPKÒV1]^âp¼ü¶=imunify-security/inc/App/Bot/data/bot-ip-ranges/anthropic.phpUT ëÆ«jëÆ«jux è‡}TI�Ú0¾çWøÆ –ûy ÓET=ôX©sGNl––IPµHóãûBÃŒp,…D|Û³ýìO_�»câf_ÇðÀf«o¿~®ž~ÌØœ½¼°øoß?fyÎVCß,¶±Ž­ïcö½auÓ³ö=+OlçëYÖÆ~hkæÛÖŸ2FcÖ5C[ÅõÐfìó6Ûõý±[æyuðCˆP5ÏyÕú¿‡}½Í˦ïàw×Ô³�ñ&öÕ.†µï/bähÜ-�? ¾äv)ÝNü* võ§ž/ônçQ›e)‚¨rJSèE…Æ;m*¿±QKk7¶,” ¢’µpE!„6Jm„á^Í[_oc·.Oë¦ê㥤›©ŽC˜;žÅ€v€L‘Ë«å8毟Â%Õ$E (Ç·{kðJ°ô@­“ ÈS ÈApEzT9º÷„š"¸{ ߨK•²— „ú•âNõ#ª9 `‹nD!À¥ô„£$Ä ‚R`SއBOàFG¦ 8îƒ�ÀiÝDUrR¯©ˆI‚¡¥œ˜â¹C0I 5w‘˜££x;®&[Lêdè1° uÏŸp5ЃwÛàBpítú©d�Óî ¤Yr*ÝÄB¦±×ÇR‰æ|’Ç,}VÂøâ9ÞÑÏßÝ6mãÃÍUCðü1ûPKÒV1]È.Ý]?>imunify-security/inc/App/Bot/data/bot-ip-ranges/perplexity.phpUT ëÆ«jëÆ«jux è‡u‘ËnÛ0E÷úŠÙÉBbФ¨‡•¦…‚.²H‚I×#K¨# $Ô@>>r7nÐÞÁ™{f.ùåÛØ�‘Á¶Ь nn4O·1$ðòø»WQšB3»Þá€N4¾[l4}u€N†D‘Ã0¹¤sò°Š`Vìíä4n'·�áú+Ä÷ÍÃÏæV]£¯ÓÔXíɈnÜgˆìÓÝÔô©²Á'ñå‚i1èÍV†Ã)/Ö´X3öD«Zäu..(­)=ænýËOÏK»ï$Ï‹šªJQM7­Ñ%‚·Ú”B!Â*¤&G®SÕ†ÜȢĒJQªLjÃòÌpq‚;9ìÐoÕakuÀe¥³ÐGeâ—oæLN3ÂYIXšñwæQÉÇQü×.f;g„UŒTÙßþ�zEئ$4ý³ò>ùÂYiΜÊó÷âòx[‡¾…­u÷(=Îàä*zPKÒV1]åWu‹68imunify-security/inc/App/Bot/data/bot-ip-ranges/bing.phpUT ëÆ«jëÆ«jux è‡}”IoÛ0…ïú¼)FkŠn’Ó.zè±@r7$‘^ÚD4$Ž�üøŽ¼ Š-Z'�ß¾áòåûv½M¬[ngH:ÿñô{þü+%òþNÜÛ&<&YFæ»à§+׸¶ ÎRòÓ“Æâì&�ê@Öeci’´.ìÚ†”m[‚_Úù][»Å®}IÉ×o$]‡°ífY¶ßïiµiV´ö¯Yðþ¥òoY?Pù@ÿt¾I?Ÿ –.Ôkge8=ezÊù3ËgRÍ”üÄØŒ±‹g×»Ýëiz·.AéY];-mÉkÆœáÚòªÒ…Ô¥±ÀKÇìÒVΈªP9¤’UPs¹tÆéR€È/æmÙ¬\·¨ _wZÒ nÿq12xsAµ¦\”e Ï–×TÊ(5”3Êuù-z9H6Ž §Ü�ùäÿ/°ØÂË‚ÂÒ‚æcþ=G,NAnF¸Àh,§Æå¥ ‡ãFR^©m ô6·ÙÙd4›D½¹lŠºv?SmF7åLÍ}š÷TDh~¤0Nñ¬G�1³à8#éÉ™çØs££=Q<Ö…‡…)ªo:>TCT džÅN2bÀ•s™ßq×*æ®UŠÞ„+ó�w3~ ªàNu®LT¯L_ÿöåE´³ˆ0½À}“wï"/â Š‚ †§ýúX}¸Êш¨ì_¡H€ÉÕK×úÒž9Ä“ÇäPKÒV1]æOvà :imunify-security/inc/App/Bot/data/bot-ip-ranges/ahrefs.phpUT ëÆ«jëÆ«jux 臅–ßoÚ0Çßù+òF« Ç>ÿˆM÷C�ö°ÇIë;2‰SÐZ@!l«Ô?~—hJr ñ±¿w¾³ïîÓ×Ýj7)B¹Þ„â&™ÞûõóþáÇ4¹M^_“ðo]ßMÒ4¹?ÔÛÙcØ„Êס`É÷m²ÙÖI(Öu²|IV~S°É¤ õ¡Ú$¾ªüËÍ$ÁÏt¿=TyXª§iòùK2]Õõn?OS¿[3¿ªB¹gùö9ý#ÓÝaù´ÎÓ¼òŸB5[ïf•ß<†ýôc§T†:_…báëN 8˜·3\͹œký�ó9ç§ ¸:ÿ½?ãdbp'8ê>#•6’×82¬®)"ä]uÌ\£ŽÊ§c™ˆ$¤Åd<‘B$Y,•ŽÙá=ê—DE–D|¶øòU[xä@[5ÅRÛÞÂaiPmQOU“aBŽw‰Ž'JmGEL9¦k÷ª)T¤t5š+¢�žØö†ÝÉ‘©p «06;Ôï÷eEzˆˆaƒ�Ì�÷‰3ïA',Iy眥�Ãs Ù¼ZBÿÈåÀû¾CˆP“#cùÅK  ‘Š d†È “âä•?G;àl;!PcÀ™3ÈÇíd*!¾B¥RÄW˜TòØ àüŠŽÐ?ˆ1ñÄq•Ï"©BÛT¨1Ë:õ�w ÄÇhU3YŒœ¯Ïá=?Z¿½á«­/zó;âÛ»ÉPKÒV1]¤PlÓ6ü>imunify-security/inc/App/Bot/data/bot-ip-ranges/barkrowler.phpUT ëÆ«jëÆ«jux è‡u�Koƒ0„ïü ßj1¶1&�>”ª‡+5wäÇhR@ƈFÊ�/)�UÍh+ÏΧñÝcWuž�²nÀ,�¿~z{]o^| ãÁgíV^¡õàÚp XéÀ`ôÜ¢¦uLí�: J6{ž7ØIkåaá¡I~ßVC1ؽ�î�_9×õy�㈕TJZì@WÑ´ìl;îÁ†uZÙl¡Çï}Ûø·3¨§+0…t3ˆ&B’†,ÞP‘“8çô†�œ�s`ºÖ»~ø˜ÏûJ²DäiÆ�†/U¢bZ*¢ã4UL¦ ¤q–q)uœ@’‚YŠeœ”Z2¢D™ Í$p†Ï u(Zí`®tñí“hÂÿyýNOž†ñ “ˆñèIÁïÊhz-?Y˜ÒÓŒ_zÚVš‹’“¬¼/PKÒV1]Þ�%Uà:imunify-security/inc/App/Bot/data/bot-ip-ranges/google.phpUT ëÆ«jëÆ«jux 臭�OsÜHvÄïú¼i'¼"»«Ð]€Öb>øèï]ÑÍnjdψ ’²=ûá 4Ѭ‚™ïïawf3ÙÀK@•PåTùu9B]ŽP—#Ôåu9B]ŽL-‹•EÊâdQ²ÙýÅF16‡"›fÙ$˦X6Á²éM®ÌJbF³‘˜‰Ä,$f 1ûˆ™GÌ:bƳ�˜iÄ,#f1»ˆ™EÌ*bF³‰˜IÄ,"f1{ˆ™CÌbƳ…˜)Ä,!f1;ˆ™AÌ bF³�˜ Ä, fíPæìPæìPæ0ÉÙMÌlbV3š˜ÍÄL&f11ƒ‰ÙKÌ\bÖ3–˜­ÄL%f)1C‰ÙIÌLbV3’˜�ÄL$f!1‰ÙGÌáNõ·ªg?„d?„Œ° ÝŽ0ÙßáÙßáÙÞÂ#êeM�¬)�ÕÙÙÙ#êCËAh9-㇨쇨쇨ñÜ©wþÐ�?ôÎþö.�uȺ dÝùsßEçne³%uJê”ÔÙ—ÔÙ—ÔÙ—ÔÙ–ÔÙNYÙOÙú9¨sP7æ nÌAݘý¤“ý¤“ý¤ÓÙI§ &�.˜tº`Òé‚I§ó“Nç'�ÎO:��tº ¬í‚²¶ ÊÚ.(k;?éu~Òë|YÛÙ9± æÄÎÏi�ŸÓ:?§uvNë‚9­ æ´.˜Óº`NëüœÖù9­ssÚXõî.“Úª45Æ{‰¦©ëﵿ”.†ƒv†µ²3A†>ã2ö—Á_p=Ïpp~f˜œq~f œpSžÏ°=¼+�gÜ^�V3ìoÆ‹ ®G„öêÛ:ùJ�wÞLзÞLð!šqgƽÂzä™á@7ö\ ^7úÌ/�fÜK «êö‡7uõ×Õç  »úóJð ;3{&øM ;ã^a]Åΰ?¼±~gÜÞ²¦œa�l=x%Ø d+™`r5áŒ[…Li4Ã�Á(åÊŸ îG!W€Ì¸ ¿ï»ÌÔ�?°u„Ýö¶tOÓ:Ö^ÂS!cÿ~ì^_ËŒUx¿»¬/Uæ”Kë­�_ö—yv+þ>¥Û^¶þûN/Á]0™¯¨º-^QuO\PyC\P•PåÂTy8‚}’*Ž!MwÁV\¥~3å@/JÕ~2e™Û�EžùÛ©‘î%îGA·Ãô)œñ:m¡ë‚#4]p„ž ŽÐrÁ:.8BÃGäß‚#Þd_pÄ{ì  ˆÝñšû‚#Þ´^pÄ+î ŽxÁ}Á›x´»ú¾Ë‚RL}×eÁ)¦¾ç²à€SßqYp@Š©ï·,8 Ôw[�?ê{- Èõ�––£vc]p@þ¨�5�?j£Åœ�ÚdqÁ!çòGmc¸à€üQ[¶µQà‚ôQ›.8@µAà‚îwµ9`ËQ[Ý-8 vµÍÝ‚bW[Ü-8 vµ½Ý‚Æ:µµÝ‚r•œ2HçHçw`8T;ñ-8 5Ô.| H µß‚tV»ï-8 5ÔÎ{ H r: 5Ô¶| H µ%ß‚fJµ_ËQ›ñ-8 ÅÔF| H1pÕÕþn 8eµ·Û‚NYíë¶à€»Bíé¶à}À]у»‚ü ¸+zpWôà®èÁ]у»¢w…ÚìnÁ)¦6º[p@Š©Mî�bjƒ»–£6®[p@ìjÓºÄR dØ=ˆêDu¢ºQ݃+z®è=¸¢àæ:yN@ž3ø�3ù óÈ|2?€s~çüÎùœó9g� 5À|òOik˜€'˜€'˜€'˜€'˜€'˜€'˜€'˜€'˜€'|�<Á<Á<¸<¸<¸<¸<¸š¼ªýÊP`%r¹Ðï � E~8U 8U 8U 8UI} dÁW]}dÁW8g 8gäjs-s-s-s-sM}=¨¥¿+¿+¿+¿+¿+¿K}©¥?'?'?'?'?G}é¥!!!!©�üp¹Ô&þ NL~E~E~…úJVK½m½m½m½m½m½m½mR[·/81´È ´È ´È ´ÈêSe-Em*¾à€SVŠ/8à”Á¼ZöZöZöZöZöZöZöúñúñt±Ÿ@ì'û Ä~"±ƒ›ôº¸“OàÖ9�\=ÅK:Åf:Åf:Åf>L>L>LþIþIþIþIþIþIþIÞıgà{dà{dà{€î-ƒ¾>ƒ¾>ƒ¾>ƒ¾>ƒ¾>ƒ¾>ƒ¾>ƒ¾4·ôõôõ4ä �Î䪓°Ð±À={=;9èmÉÙ€ž4ƒž4ƒž4ƒž4ƒž”úÍ úÍ úMà¯dÐ'fÐ'fÐ'fÐ'fÐ'K(ƒþ.ƒþ.ƒþ.ƒõè Ö£3X�Î`=:ƒõè Ö£3X�Î[ëѬGg°�ÁztëÑôãôãôãôãÀ¼Ì ÿÍ ÿÍ ÿ&h½m½m½m½mVÊZpÀ ¨>’µàÄÐGgÐGgÐ#gÐ#«�U·ÐþfÐþfÐþfÐþfÐþfÐþfÐþfÐþ‚ªúÀÏÏÊ‚GeÁ“²àAYõ í–OêãÙ-%rÔg³[JœæêƒÙ-%ž@ºØå-¨nAq j[PÚ‚Õðp1x¶tµrƒÛÐÕ.È·¡‹í5+lC_ß^³¢>tµ½fƒÛÐÕw*nCÛoV؆¾¾ýfE}èjûÍ·¡«í7+nCÛoV؆nË¥”K%(—JP.• \*¾\*¾\*¾\*¶\*A¹T‚r©åR Ê¥âË¥âË¥âË¥bË¥”K%(—JP.• \*¾\*¾\*¾\*¶\*j³ï·¡«Í¾+îC÷åZñåZ›�_a[Í• š+A5W‚j®Õ\ñÕ\ñÕ\ñÕ\±Õ\ ª¹Ts%¨æJPÍ_Í_Íõ6£û £û £û £û £{ŸÑ½ÏèÞgto/k\Ö>¸¬}pYûà²öþ²öÁeõEú`‹ô!(Ò‡ H‚"}ŠôÁéƒ/Ò_¤¶H‚"}Šô!(Ò‡ H|‘>ø"}ðEú`‹ô!(Ò‡ H‚"}ŠôÁéƒ/Ò‡?é�ñW’2þ¦Öbª3×Ç‚Š®KÓà«Ò4øª4_—¦â«ÒTxUš ;i:)ÍT¿�…h·>ó7°§!¬«ÓÖå©¡O%¬ Tñu…*¾zã¼á"=*H ¤!x dŠT‚—@%IÅ­»õ)£�½;5i´+ÁNL n#܉‰á _Ÿ8ˆPÍ -ÁG¨f‡†à%óCƒ; ’øÎR[ .'Á…à$˜V‚¤>æÔàN‚¤>çô†¯Ä H Jâ–à%PEqCðˆ²¸Á½vÀŸà@‚`À¿¼Á€ŸÔǧÜKàü$¾?ÕÀ�Á€Ÿä'¨B �ð“úJUƒ›²`»)ª.¡Ûíkþ*R‹¯«´`¬Ê´`¬êÔ2Ö…j«Jµ„U©ZÂjºTº Üâ‘Ê^0)”Ü2)„!Ü)ÖMá�¤PÆð‚H¡Ìá–H! â–H±n·x$…2ŠŒ@ e·Œ@ a·„@ŠõÊ¢Å#)Tm±`R¨ê¢eRˆú¢%R¬W-I¡jŒ#�BU-#�BÔ-!�b½ÒhñH Uk,�ªÚh�¢Þh �ëG‹GR¨šcÁ¤PUGˤuGK°R¤�¯+&ÜKqaX). +ÅÄðRL +ÅD°RL„@ _WLx$ETW\�Q]11)‚ºbü}iŠÊ† ÃGš¢²ab‘¦ l˜a¤þ¢'_6Lx$ET6\�QÙ01)‚²a"ØD~.q„Æ_§0¡ÔU:½áB¥7\htÅ•BW\ès……:WØi3HKûÒ3]\×Å©°P§!¬ËÓÖõ©!P%¬+Tñu‰*¾~+]qQjͰrÞP¯�n*nÕ‘CÍnµQÃÌl•CÌŒú̉'Ê›(m¢¬ ’&È™ e|ÆÈÒ¼â6tY–¿á>tU’¿Á6ô?–ã͈’6ƒü8íf¸íÇé ¯—ë ¼®NKX•§%¬êÓÖj« 5øªD .4šÿçýÓáëçóó§ãÓãáô¾*6Â?ýåÝÿPK ÒV1]-imunify-security/inc/App/Bot/data/signatures/UT ëÆ«jëÆ«jux è‡PKÒV1]¹)�ÈÈ_Iimunify-security/inc/App/Bot/data/signatures/ua-seo-crawler-providers.phpUT ëÆ«jëÆ«jux 臥RËnÛ0¼ë+ö&�êÙ}@FEÑ´’Þ ”¸²XK¤@RI]äãKKQœC 0/$5£™ÝY¾ÿÔ7½Ã°æÙÜbsw[Üva ÏÏ€¿¹Y;——P Fz[¨¨AæÃµ! ãÊ=4T0ßqšA  JÑý»\-UáàZ>|÷¦øö£ø ‹^ÉGÎP“•^º»FS5Ȩ™Ø! S�乺'ñŠD«8{GÈŠ�ùË®vzè&ºnh˜¤« I“,Éò:f”¦¬Ê(cUž…)+¯¢2’ë:²·, ó B ‚œ°´Lê( ˜×³¸í'á LÃ@=�Ò«}jQiß&FîPh»�iJi<Þ{ŠŠ-jxíÑ4Ô€|:ðì|ø.Ú=ÐFa­Á&%U;%¢ÐeËu“Ä:ú µáÕtòÏHÖØ©Á2¨B‹ö=ÚO£;W0—‡ù<¢âµµÚR.´±¼¥@ÀVãOWƒu2þÜí\­[~3Ã�ªý4ÂS ÿƒGJ1*l¤y1œ×òx}st�™œcº9ªœä:Ç}ŽçÍ— ,OmÓNõ¯kiNNôåáœcw7Iœbi·åÚù PKÒV1]}² ¢@imunify-security/inc/App/Bot/data/signatures/ua-seo-crawlers.phpUT ëÆ«jëÆ«jux è‡]�ËnÂ0E÷ùŠÙ…¨<ÆNHHèCA,ªªT• käÄc1²�¶H|<hÕ2Ë3ç^éÞ?íª�'IÕ Éøùdþž/ž}àpú®ÝØ o�î­¨!#É>L54ÚÉÚA±‡J4²ïy†\kƈ}ǃÓùV·¦¤ek6><<‚?Ëß>òWèìŒþ¬%�º´�߽؊\Y‘\ w±9ò¸‡I�‡ gf»CÌ'»\Ûv{Ñm%ø0΄L"±X1†¼`á(’2 Õh„Œ§$J‘&a�*¢ÀT¦¡dHiÂx 1Q¿å¶^5â´ˆì¹þϬó;¯ );ÑîêŸáœ¶¦µÕ �½0^üGSín¤‰0k£¿6d®4èzÁØ;PKÒV1]C?•òØBimunify-security/inc/App/Bot/data/signatures/ua-search-engines.phpUT ëÆ«jëÆ«jux è‡u’]oÚ0…ïó+|ÐšÖ I t ê´" „›´«ÊØo‚G°#Û:õÇÏ�±‘„EÊÍyŽß�c¿ÿTnJ‡AưrÓÉr‘®ž]ÔGooŽÜ<:(­Œôr ˆv�ž$Ò `Ü õ+ÚÁîG�©”@D)òÚs�ý\-+Eá¥R…‹>|Dî,�K¿¢^©äž3PˆIªûî]íÎÀÐ °bjw€ƒØÃ‰‡+�£Á8ŠÞa<ÆørÀºéVW»Ú®7$ˆâ±f£²$^Sê‡8ÈâÑp˜„A0À1 HÀØHADÂ(P2ÂÌÏB? 2h<ü[\ó\»èsù«µÎø‹”ykiþø›¢7Ý‘n£9ômòÝf"¯QÊôÄêµãÌlö¤$ÊØ;Ñ7x­xS¡K †K±’²¸6,�TçžÝ³.òÖ^)›²ã¤©�l {‡Ædœ*©efn°§ŠnO«RZ–�$/š÷ùh@0`×ð‡}pО§Ϲë®>“k^@{ÂY¥ËÓKü�ìñö=.e.«Ž€°FÝJKø%È®ÕuNö ÚÃá�åO€vN¡6¹‰¤ØðÞ�!Þ…¦;ÌÎÈOY4g\XTüëÔ¿sú�ÎoPKÒV1]zÂmÔý`Dimunify-security/inc/App/Bot/data/signatures/ua-ai-rdns-suffixes.phpUT ëÆ«jëÆ«jux 臭TÝn›0¾ÏSœ;-“hÓýˆ¦šV©«¦¥½ØUeìC@›Ù¦kª^ì!ö„{’9¢´ë¶J 7ûü}ßùñ›÷UVõ8¦¹@Þ'>�ޝ>:0€‡À»ÜœôF#ˆk#Ý TÔ ÷àL‚��ç’dTp¯×Shj%€*EWýØÏѲV ojU8ðö8ŸâËëøú•’·9G\2 ¿~üŽ·XÈ •GKz/…Çd9jÅDš!Øc)Sô{áIµ¥ôÛÐæ¶p¨`¸¶ÂJÖ�›u8ÃAІeÈo¨iŒÉ8tIèúþ9š“é$xEÈ”�ÎÁZ³¥®ËÖ\gt< §¤è'$ˆŽ#–† �FGãã€óµ˜¾ ó}úŒÐ(ñCJ1â��'“„%]p[5lÇçÐ�±5Pg—sè*¢=˜Óáì¹.‘Ùêæºª¡¦®âB»ºNÓüµg›çÁL ]¶ E±šÓdI-xa¯Ï«/T,ðBÊe]A™k�R©`Ãu¬½äJƒt§��¶íÉsªFmäųž[“¸ëê&áå½pçHËNÿ°<>:]!þ™ÎÛNÑFú{ÐÑÙ¸}ÈÎf‡¢ñd^Æb»!ûp8µAtµ‰ƒy´µ/£a7{_e}¨.lÞ˜ÿ¶¿ÁIï7PKÒV1]”ÑÏŽÅEimunify-security/inc/App/Bot/data/signatures/ua-seo-rdns-suffixes.phpUT ëÆ«jëÆ«jux è‡}QÛN1}߯˜·MÔf³·\½h�V­D)"ðŒÆö,kec¯|¡Dâ¡Ñ/ì—Ô$Ù@%Úy±=s|朙w»¦‹ÕR‘@\�,/«ë/1 áñèAºãh<†Ê;=º#E‰Î4(퀄tÀ6РIrÞ(@cp3ˆ Dlµ7œn½icxÿâoÕÅMuƒÎè{)È€ÐÜÂ€!chG¼sƒ?Z2ÃøíŽ¥&Ç·èv,yšOGél”×Ùt‘‹2{“¦‹4í?4_Y¿ÞÁmƒùdº˜ò\àLP‘‹ÙD°²Ä¹À#ÎØ„X]ð)ŸLæs6ËŽJ,g9Ьä%/2LEIEšñž<8§ñòÓwØksv±„Þ–M`‰k‚ϧÛô:˜B%íЂǑÊŽ¬¯kù@6 HàT+ëÛ0\ЪÝÖ.pº†€y%Ú�þÚ]¡º£s­W¾ƒµ´–,ÔÚÀK7Uè|‚feôöÝyÖJÛäU²Ÿ1y¸¼¾Ú9=©B:èá[¸'#Ã�Ô :tMÒ[?øÛú±èm•¿VÞBœ^‘zõ÷ò,ßµ�áßϸàÙž=ÿ›m Çð8úPKÒV1]åΚC™] Aimunify-security/inc/App/Bot/data/signatures/ua-rdns-suffixes.phpUT ëÆ«jëÆ«jux 臭VÛnÛF}×WÌ›lT¤HI–e§ÈMŠˆ #v†Ü¡¸1¹Kì.u òÐ�èöK:\JŠÛH�PI/"yvÏÌ™9;ä�¿TyÕ”IE⠺ӛLJéÓï]8‡/_€–Ò½êôû0­�f¤È #Âk J; !$+ÈQ‰°Ó1äj£�ÁÕYø×µº6)}¬MÑ…Ÿ~†îÝôþýô-œUFÏ¥ B§þþó/°uUiãB¬ª‚ÂT—}RAmûq|5\õ`Å1hé�õÒþ‚’­#Óƒ¥¨[°ò¼9U:ºløú‰v¶–>+,…•ž“À(œ7iМ ]­êA©?={BÞæ®,λ½VSF.ÍI|D×jDƒq]QüG×ÑðztõCÄÑf¯NŸm]¶ËmŽƒ‹ñõ�²Á%�Ù`DÃxL4¼D4ʆÑÅÓ8Ç“t8eeÑe:‰£8àãÉEq¶!ç>PKüÓ¶…%åÌ ©„„÷ÓÀégRPHëà,EK�T–”•NΉ«ŸXg¤šA‰¬Žë„%?¥•“Ü!´Pc` Mš¤fl²uÎÁip95e«KŽIžÞ1_–É%¯�_ ´Vf’SJµ²uá,o�–U U±̸…ž$©•(˜á¶z‡jFoµ~®+(¥µ ÓoÚp_8ý�FË]6Ä;ÑAI¨¬'Y亠†�]A)Ö¶YAÒ€i8Y oTÈÄ›™ã7N^GaÚØdKEË”*'µºÉi¿ X¯çµóXU'\Z¶d’ tÙ<¼}˜� )4w¿%þ£kA/¼¾dã•ä ëv°Ã!åÓ#ù¹ÒÍî17¢­o[Ð-ìrͺš ¨V\j@‚ã'äÄ�n¼ â´l¸ñ˶xÞ4/ΪGýéÛ…xÔ[hçÆí’�˜u¸�XðféˆO³øÏ¢óßv7&únÀv`4‡t;9öÓ¾¸ìú‘qŒÔ›† 7»Ô¾€YâŒN¢65¸(Âí¸Ûx�~ª«C;êŽ)Ä�g¸ù¦éÿOá×Ñ{Xþ~€“þ}Cðmöû@NžD•ÏòpQ9,ŽõМª%>›vø.¡}Ó£áÑ3œJD›O˜~>0}=ÓG�‡GO°ÃSþx��Ã㘹à“Þ;ö¡{*Ð~qS‚žaßÑòàm3í~üN'ü>=•¾~Dî,Ð6;Û¶A}'—õ%ÿ�¿êüPKÒV1]½'€m Himunify-security/inc/App/Bot/data/signatures/ua-ai-crawler-providers.phpUT ëÆ«jëÆ«jux 臥VÛnÛ8}÷WÌ›ìÒ•9v’mгéÈ MÒbŸŠ‘8¶K¤@RM\äãw,åâ¶’k@~1�s8—3Ãÿõw‘=I3¥Iî@?:¹½‰îþíÃ.<==*Ü{÷¢Ò1'M=ÉœÐÆIå!^BŠZz=K¾´ÐZ\îô€?}gJ›Ð×Òf}xÿú—ÑÕ}t;…5ß”$ Ò$n·ÿgÍž‘OR’_Ñ×ì½`ï@‡"˜ÜáQ°Žÿ‚£ x¹Àìdáʼ¦»÷FGãp8 ãád‚“�’Q<ÂY2Ü?<Øg`|8ã0¡�f2R‡A8Ípo6¿ç ©6|¢´tP¢@%‹Y7`áÀ›iÇ_àS‚Øx¡ aQÏÉÁkŠ>EæaÅK)ÀµÎ–`Š•–Æ:xP>„¢Œ3å8{8¿>ñ öôê4æä Lˆ•%ȱ(HW-­h³ê\Î[ÂP ¬áPÜÀ?úÚÒ‚¨¨¼CNvNRdÆ,ÊbJñ›âA©½Ê@y· ”cVš�ƒ1^²q•"k%®PÌñ»ÑMP×2µÁ%ª,pØÏ¿kqKh“ôäÆîÛϵcµO­)TÒ%ªi†¥¤_}®�â ÅÐ{GvÜ–Ô:gj$5Á¯r[n§I¼ä׋:¡.šœ°W¬za;§‰És£«gÓ©Ó­K/Ëd�Îqç¯ú©ƒÏS6U†¶ö=7fžuÒ÷ceAüóèIK’M•¯)×ü {k ç9λg�ô™«iÚIbš™R~&ëé±µUÇx6uÅC5æésqÙDÚŒ>›8S–bt²ïª QT°¸DË[oƒ‚5íþÓÅÔhN¬Ù åJ+qÊV|"W=ç �=Ó§çÛµSN»4Ó%߯ZÉjÌZUù�uV-áFYÎx ­Ê³õkà-§y8uy 7w- u�ÿf|òÞåëí#¸Æ¡U–kŽ>ú¹P/Hµ½·S�ÉE¶ú/µì¢ÄÍ«•–|ßM)·Ä¶4e— þ3å6ÍÀ_»Ç½ÿPKÒV1]<ãrè‚??imunify-security/inc/App/Bot/data/signatures/ua-ai-crawlers.phpUT ëÆ«jëÆ«jux è‡uXßsÚ8~Ï_á·´sg0´44½CHÒ0 I ´™ÞKgm/F‡-ù$9„Lÿø[2‰Ö‚7Ÿ´Zí®>­øãïrU¥¸Ó7Áñèl~7Z\oƒ_¿|öÓQ·Œ*«Â %j°˜v‚sHeL… âm°™vŽŽ4ÚJË´†í›£€~ÇFU:ÁŸ•Î�ƒ?ÿ ŽWÖ–æ´ÛÕ°éd®ª¸2¨%-JÛITÑj+kBûh髳ûêÔ_ÙÝÿk”<þ}·Êm²Âô'ØÝ*ý¨ÿ!Œ>†ÑÉ"z}8}ýE§Qô<�F'kS»áfý êAÿÝ£^МôÞãðc¿‡ýh� †ÑðdØOb|?ü 逆FÃ~/žôúCˆôáÙ¸™ŠšÆü«p4ôhÒ?Sv?øž#–34:Y]<@î¹Çx"S|tÐ4�7ùAJ•]ˆ‚#íü *ÞA†—�¶»S°R4z> ¦Ã+•åTUÜ‹=~¸$÷.©RL=T½Å z¨½Wã뉇¼Q¶ çõ´M6~†S’*ÉöùŠþ6»n4ðÑãð­åz�ÃIAAkyýçÂkâ¿ZýÈÇ7»C€žC°)_|ûûÑÛOGÿPKÒV1]„P¸ Þ=imunify-security/inc/App/Bot/data/signatures/ua-malicious.phpUT ëÆ«jëÆ«jux è‡e“KOÛ@Çïùs Q1qœ}Ȩ*QŠ”Ðö†Æ»³ö6Î¾«$ö¶¿ùÏS3Ÿ¿™Ú 8 ©ˆŸÀ°¸\ß›«!ŒàåèIú‹Áx Eð:©H‘EOü ¾kPÚqé¡l¡FÅÏK>Xh-¶'ˆoèt°Œîƒm†ðå+ 7wÅõðôhäYMüýÑš¥Ù,IgÉd²I«ó|•ŸJÓUš¾9D5Ûº°;Ê]�Y>[-ç|�l¾Ìs1Ÿ²lŽÙ2-q’#›LsZä8ÃÅt"y&X™žÏK±Ä’cº\dy™óé[p'+…±r‡ð�6Žæ‡f‡æU| Jn½î�w‚:ÇPuÑse±ì‚r.¸.ùeHý.Ö]´Ÿ¢èþÝV!]Ýe\Ú28O¶ +ý‘íÍû¢�E^>õz!ï Úmß÷•?”3Ä|—Ƭ߅¬ñQþëå°Èj%{…ˆðüÜsj¹ÅÞ‰×#‚¬~úØ“¡7 }E~œvÉ%ÊËHNvìÉõê_3‹¦í’¿¤\Kµ…uCÁ¿ zôº*qù鸃ZRN>8bÁJ߂׺qÀ©‘åá`š6^k'‡#’ ®6›Û$ ,Úî '¦õµV‰¥‡Ës§Pé¤öÞ$¬‘¤ü)ÄðÍöµdu¼¸˜Q?’Ý×Ô줪 ¡Jz¹‹é 8ŠõŽ.ÿPKÒV1]Ø6R¢øq Kimunify-security/inc/App/Bot/data/signatures/ua-search-engine-providers.phpUT ëÆ«jëÆ«jux 臥UkoÚ0ýί¸ß(ZC뺇è:m•B¢�ÔO•‰o�`G¶S`ê�Ÿãúr*¤ …Îñ¹ç>ì|þ–%YƒbÄ8ÒhN.óÉͯ&´àñpËôEãì &¹^Œ%ÑHÛp%€ H™†åÂi»Ñ�¨sÉ�HIv' 0Ÿ¦¹ ñ>—i¾|…æt2»�ü†“LŠFQ¡j5OKv„:L�Þ]²»~÷ÜóGžÜøý±ß÷‡Ÿ|ìûû†®T¾.é*!ÝÁù¸Û£ìt XvèpDFQ‰éˆF£(Žú8ˆ2;ѰG»]:Xý^¯ hw0 zÁ^Üdˆ¥ð%ãT’0�œx ‰ ylŠ¦Ú¦€ Å ¹ù� ,…öXæIÂcTpÈT'DƒØpL·á{J”b3ÀÊâA�WÒp;ÁÓ�˜0®´R‘ýuçd�”xadJ;d©�kˆ¤X2S°&˜›Ò,M÷Qé+õ5ÊØüõÚF*Ä*ÏÚ0ß[á®3½zŸïD,EëG�‚™‹ÒõÕlñlÖ®g¼¨¥¤\y*�"¶-KÙÞWÏV¶/fÊ¢$ËRt!µù;(“BÀ8 çļ[�œ"}Cj=ÿ|ñØ\Fó:ž. •Y»l½€=¶&1i‹ñ¸–+³¾ªPôšn/ÝX±l.ñ�áÆOY(…‘vs*r¡y¸*®XÔÉèÊ(×{çac!âzãöÓ*T”ñz׎¶¾¡Ìp£>fü1"ÜíR&e¯d:›bt’©ÍA¯>à•ˆwÍU†¡f‚ß‘ºˆ -¤õäÔª¨ö5©S누&¦á™Ý+9Iæ¬zÆÛsuÕr6h¶Åí»]Yå_üE\ÕÉ`jŽONÌa^'Þ¬¨ØÇw¨Ùq62S¬´Ž�y!ptÖ ÿ™·L�x «p|@‹Zçû ¸¶I€™3pžþ~v¤˜Ê:†î¬BUã-hO$çÞ(ñ©Xš÷ý154·ÖEã?PK ÒV1]0imunify-security/inc/App/Bot/data/cdn-ip-ranges/UT ëÆ«jëÆ«jux è‡PKÒV1]n¦�‡¦+;imunify-security/inc/App/Bot/data/cdn-ip-ranges/imperva.phpUT ëÆ«jëÆ«jux è‡}’ËŽ›0†÷<…wLÔÆwc›éE©ºè²RgÛ4@ÆŒi¾¦iÔ¨�s’Åïï?·ÏS7ηýàÝ(w_~|ß=}+Á¼½ÿ³��B`·Äq{ðƒ&zÁ× cÞõ4'ЙÁÁ¢>.a&sz(@Šr—`ý~ /%øø ”]ŒÓ\#t<Áþ8ùðj �ÈL=ê‡èÉ¿ôJP?Íåû³Ië£í¼Û›x6¡˜V[¬·„?\cV õ§¾é¶}ž—ãùúÜ*ªº­˜mo™�JŠFØ–^y*—ÖkÚ⊇i+C¬o cFZ‡•i•^_̃~Þ7§ýh£?—tÕòœÞøø¦ÓÚk…ëы囿G.r4�R1ĈTWðE¬ð�¯F”ÞÎJ0Ë¥M¤ R®îò2ÏKHÿ¿¶kœ‘,Î$T¤wÍOdÆ€ë¬× ® ¤ký$Ã«ìØ“ÉZÃÝùéìOO¤ ŸçOTŽWy^AÂdký$³5Dçû×*ög~·úßü³Úa4îj¯“¼y,~PKÒV1]{0éœù;>imunify-security/inc/App/Bot/data/cdn-ip-ranges/cloudflare.phpUT ëÆ«jëÆ«jux è‡}”ËŽ›0†÷<…wL4�96¶±™™V©ºè²Rgl&Q3qii¾&4j¦ôÀYüþþs3~ütÜ#ç«}í݉7Ÿ¿Û<�ÉŠ¼½ÿkß?DIB6C߬_|í[Û{GÉ—†ÔMO¼Û÷¤8“�­�¢Ö÷C[Û¶ö|‘ðÄ]3´¥ßí!&OI¼ëûc—'Éét¢å¡\u°­§eóšì�Ýú§ ÷dZ©øÃdQù¾Üy·µýdÁ�«5¨5cÏ s!s)îr€+v—?ºáuÚÞí,—*/¡òN2™ªªäÎS¨"Ó®psVùJg¸±Ìr]VJ+pPHºÐ¢‚TfWóÖÖ/¾ÛçmSö~Jé¦àñIÕ>^`.B¢e^y’ò?–·ªÌ5[R 9WW—©F#+P¹Èi(­!Í+½Ls”¶!¶ÑåHsƒÐ¥ÃäòŠ ½›AŠáA¢œQ.…„Ϻz‘9娜2:cßÅFSeŠŽÖ,�[‹�Õ$ Ì�g�‚5§ÌðÑ@#)C BY@3¾T™ÀiÁ(F•XŠ®Ð#qI]ê©z‰àއ¼•˜7ö�‰,Ì\H*ôX< ¼Æ{¯Cï™ F-ñý›‚D͘,òÎg”§âj€MÏàMÇò±,›ó«.»¶±îæ¦ òê!ú PKÒV1]÷˜¬ðô#>imunify-security/inc/App/Bot/data/cdn-ip-ranges/cloudfront.phpUT ëÆ«jëÆ«jux 臅šYoEÇßý)VâÁ‰À³ÝÕçl8ˆˆ ÏÖxw&6o´^ ‚òáéê9vì©o¢ʯúª®®kòõwo?^ìÚîî¾Ý½X]¾þþ÷__¿ûérõrõùóªý÷îøêb½^½~<î¯Þ·÷í¡9¶»jõf¿ºßWíîù´ºmîwÕÅÅ¡=>îWÍáÐ|zq±J?.ö�‡m{ýxøûrõÍ·«ËÛãñãÃf½¾ûxuhîß·Uó¡ùoßüóPm÷fÿþçÃþþ‹~~ûÇ›{û˻˯ú »ö¸½mw×ͱŸ�ù+®(¾Sv£ÜFù/•Ú(5HÒÛ¿?ôâ· 9¿ ÁFe´nj­¼î\Pq»�Á+OúFEÕÜØ@M»5Q·œï¶7¡ö®éKf[·ãäý^¯o>]ï·Ç¶ßÒìøüÃÿ–ÇšJ«J‡JS\“f|Bu¥]¬ÔšŒDCeMap–ÇbÇêÊjF±ª!4¶"íµ¾"CLI¢IÞ(YH½ªÒϵ–Vå9™E™ñ� 2Í’‡º~Z/1ß3I·>â­Â[M o&˜~ tŠ`Æ3‚‘º&H-<]°/b;H7Md×$쉌OЍyå5 dn‘áS]YÕÛ®4´§hâL½EÐ^T`Æ%ãVËóòôW ºæ'ÅzöòÒ'%¿+Æ” µ®!f}[Q_­!åUµ1â¹'åP7s²Àž3Œ•‡»&ÃÀe±€­ÁKÐ0M�o ŽséQ|WWäÔsm̯ÙÁkv½»–WN0ÆôËÊêpé"’*�C8IóÍE¸¹´¶C¯™áèBeXàM0t•—ÂH}‘H“×Ò–d³Žùµø(Æ‹�9�Ô#JJ¥{€ “N¾-®bH~†ù(Hކ…ÀÁ36Jt½G|9„"èáKŽ•ìzfw}õ^`PØbê Ë®oÂò«1©2Öe\Þ•·fË[³²yOX¶ï Ç2–�dÄ®¬‡Õb,Ì ®uo 50 �!M«L¹œSD4¹!8¹Rzcº­ß�ÚlÖÖ€ àîò¡“Ÿu²=äÜÖW½Ö–I�Í–¢aÒÓósæÉs,¬i¾uzLz´‘­�±§÷äÅ™s Ö(¯rœôkr²žU¤ �9?™Ç&“йÐmÕÆ©|­ji5©îÛRY¢ÞÄm¢d)ÙHs‹C>³@ŒsWeÆJfi'¼ÐåüÄ0R“O ×*ý¦UÞ‚Yît¡ó"漈=/â)÷$bTd‘…Jæ":ϲt:3‘åó]ˆØ,²ˆÎs‘˜E4ñç½Ûíx’¥œ$Ú¶=#Ñ Ë”DìYÝvƒm´Ò9:§Û.iŽE GN"ç.±sgÕß¹³êï|¯—º {‘e 8‰tÖ§ºd NΜE| åI¼"–ò[¶0û±\@ÅÊyàWg\tÌ'.ŽºP¯Xï¬òP¹6œ°/c9& ˜“å"–óèŒ Õ™¦päìˆ1ÇrA>ÔŠcýÚ( ¸Çõp]E9O©œ6Ž´ç�F+§äcؼ¤µ‘Ê6Rù¾ bÒ7ß̽õ- �Ø1N)¡>óTseñ$® †|XÄÙá„©´;ëAã�—år¢�hÞ:J›˜û|,)S`šJz'.›??N8wè Èãtæ…“e*”‚óˆ~#mXG}7‚¹r•¯¡‡¨W9àÁ¡,Ë„³…,"éˆs—LP‡ÍÝ(ri“êòæêñùˆÓ[ñhs…Ã8Û�«@)9R62³ˆÉ#]¸ÊùÊÐÓ%ûä«&ð9 cSÙE&<Ÿ&º.fã×½GZ>�.%ÒÚ©·¹–Cw6àeS}>9¬¸¼«P«/¡ØxFe3 -ÉM%#|!˜†‘#ð·$Znk6¸®Ñ`î‡Õ¹c/YA]O¾d¡ f¾Ø:Jaö,9‚ãvSç—=«ùä*$¡Ün ÈyÏäVÝ ]eH(ùgÜ?k <Ù"|÷š[‰¹[èånߌ—žˆ.´…s»ÓT5ú 9xž‚>YÚNBý·½(×Ës^<Á‡¡9“äÏMèiÆÁ]³„3½—–/{’ÐÜ+—®{’@Aä‰D-šL’È. |(°C�œA %;µÇÓ÷� [¤Ášæ<ðn#Ewâ L޼�Òòr�Ë-Í‘|Ñ“á0`è¡*)�X9ÜÜóføˆ(tØ'\²ó´Üá´¹¡Œ>“Ÿ¸üácât¼'ZÞ—ë�÷…û#ƒjB¹-�ÊÂG¹\�¸œ%N5ÖGîäªöÄÏì™óÏ„#Bþ¸dn‘Lÿ/å°ov³ÿ”’ðËWÿPKÒV1]\öŸZÏ:imunify-security/inc/App/Bot/data/cdn-ip-ranges/akamai.phpUT ëÆ«jëÆ«jux 臅”[o›0Çßù~£Ñ°�ñ²‹2ía“ºiêºçÈàC‰–Bd@Z¤~ø9õ¢E]œ Ùüý;7ìóæý¾Û'Ûm�ö†¤ëß¿­ï?¥dAžžþÚN«$ÏÉzž†åöèÌ„6#ÒA»�H} �ém–$§ÙõÄ8g7 ñ#‡Ù5¸™Ý.%oß‘ôËúë�õmú:¨-NM‡vc¦ ¹¤rÉØ=ÕU!*Q¼¢´¢ôøÝÍÏq~ ÛÇ΀�•°Œ)®êEcek©-¹f¼””7BÕ†+ÎuYZ-¸’¬¥¦^SÖЂÖNÆ�épÜÔ‡ÍÐLB:Ëå8€_øø ÏèñÉÙÉÞ¹ÄJ";§\GíJ_VøW•s¸L¥ … d{�–Ñœ$Ï€ê|ô2®¢ÎdPÈ�·ˆÀ* «LªÀÊˬŽÖLë €]…ËhÔ>Yp5êRDa‘1J¯Ã2 ËŒ](×I»^IF‹˜]/e²tä'úû¥•?ÿ)Óqçºð§ ÐüeVGQÿ‹M/^\L7{v+O²ïD±-›ù¹I‘Ö �d?×»mCî>߇Íàì¸ò“ÖáØ‘ÛÁ¡_îÐŒèÝ/VÉoPKÒV1]…ûã)àš:imunify-security/inc/App/Bot/data/cdn-ip-ranges/fastly.phpUT ëÆ«jëÆ«jux 臅”_o›0Åßù~£Ñ†±¯ÿm7eÚÃ'µï‘Á¦AK�‘©~NHT’Ì­yAÿŽ�¯¹~øÞoûÈØºi­¹CñúÇÓïõó¯­ÐÛ²w¥)ZO®K^lkí¬Áèg‡ÚÎ!k‡Ê=ÚêÖà(¬›†éaÐû»ù�Ý4Tv3 »=~CñÖ¹~,ÒT÷ ®õèv{\u¯i?•»¦Jš>Ù5£‹¿Îpm]µµf£Ý ™™PúL²‚‹Bð/„„œ?»ú3N¯óôq«AÈPa«Rj¢…È3uMµ%9e­0ÿðLk#/�¡¼,«Úæ™bùÙ|Ðí‹7å~ÓUÎΑ[= `ÿùx„�a`3À$…sÞÃX½¿rÒšð‚[NŠ"e° /T¸V—ÞÁdÜ'ã9VÇdš’ î%Ïs,È�ç×ÙfY`€£? ëüš¿XŸ‡×ç˜ ‰3òAe)'Až Ã2o@ÕMÀ“.ùhò—a‰•ÀäÚ|I ¤Å”З!\…q…|’]†q©p·Ù—â\·‹Â_Èòæ\–òéØCǦ‚á%L)ýdk™ò™oF_[ùÑ_ŸçA<Ï}?Ãí¹¼«êÔRôÖ|uu£ �6‹ëÄË«ûèPKÒV1]äRòÑz©>imunify-security/inc/App/Bot/data/cdn-ip-ranges/quic-cloud.phpUT ëÆ«jëÆ«jux è‡uRËnÛ0¼ë+ö¦­)rù�,÷=äÐê»A‰KK¨#©Ç@>¾J£Iaï‰äì ‡Ãýðyh†Ä‘o;rw�n¾üü±ÙÞ§°€§' Ç6®“,ƒÍûåž: 6’c𵇮�@®�P� ±�cI(N¡‚=Ý%0W:öS¨i7…C ?AÚÄ8Œe–�Gö{jkVúÉeí0féû3ÅS¬r;Ïäh–Ü,…Øò¢TºÔêç%çÂÜ]ÿ§‡sûØXÔ¦D'¤_¡ÄÜ䪰u]©|¥ÐxmM%+´Fkïs[T«œªš…�¹Âè‹x°ÝžÆ]uÚõu¤³¥W|.©¯þ%KÍ„á¬@†Be_Dßâ‚ �Ìð·øâßR©[úJ1”’‰Sú&]ã-ºF&8S^q÷ KfV³yyU}ñ_F¡·îU@xžzùýyN–ôƒ�³tàCÿ÷Ûïß`°{ZC hl "ßš·²#Í÷.ÖÉPKÒV1]„k¡j\…:imunify-security/inc/App/Bot/data/cdn-ip-ranges/sucuri.phpUT ëÆ«jëÆ«jux è‡}’MOÃ0 †ïý¾• –¹nš¦êĉ!ç)k]:ÁÚ)M%&ñãé(6ÞS’×�í89½XWk¯àrYsq~6{¸Ï¯|Áû;ðÛÒM½É²Î5ãg®ÙÇ…€ËêÆK‹ T¦.„çYv�­ÁXk6GôòÛ¦³9Ï;ûêÃÙ9ø·ÙÝSv㟠nÉ.¯¸˜7¸„¤Æ¨ÆAðˆ:•QÉcÄqôÑùKÛ­†ð¶2©TÊ„¢P‰2*Thb4’c¥’ ÎŒqÅZs¨5a�D!*ê�„Ãü~÷ùñëóý›7ßί?¾}½{üöíñ÷?½¹[þyûýåÇ·§óûß~}{÷—¿Þ½ýüúúÛ÷‡wïž¿|úòúøëËÓùñëýÓË?Þ}:¿¼ûôòòé×óýÓ÷ÿ}û¯öñ�ç×§Ïçç÷�¯öñtJÃϧùç¦ý{sz8u©ý—Óò/§øÀrõÓÿ|ÿñ»üûçÇÔMšž»¹>~ÓãÜžžš§�ý‡¡=?NSú0÷§îééÜô©é»s;õÏÍé|úpn‡çö¹m§ô1¾üÛã×Oçïï?üþþåéõlMºèìúOðß¶Ïö÷Í©Yþ×ÝŸÞ¥äßø:+l.àOû¿¦Ž¾:u÷M×ÝÇ_tRtÜ>ÛÔg§ÓJO@·>5ó�çû¦Iøá‹.­”»´Ð1ýQÌK*½P Äé8íÀ�X¼84ÓbȇçÓÃû¡»ý�‹Kšò%©|I[¸¤9U´fɦtº¹è²×#õºï›v¾?ý1ΗžP²aIâ% מ,)ͼ¾d»¾„»¾¤»¾¨«¹¨¯¹h¨¹h¬¹hª¹h®¸(Õ(žjO5ЧÅS�â©FñT£xªQ<Õ(žÊЧ�§�§�§�§�§�§�§�§�§�§�§�§�§�§�§�§�§�§�§:�§ÇÂEÍC1(ÍCWú–„ãÚå%¥Àvb|¼¾¨øMMñ‹ú‡Ò· ¥`�Å+¦Ó6¤W\TjÍvQÉöÛE%Ûo•l¿^ôXÓ¦§òEkƒºI\Q”ñéñùÀ›.áÄæqùý§'=±¹¾ºt}Äâú"ˆÅõE‹ë‹ ]_%èú"ûú"(A×A ººˆêËõE5ŠSÑ¿¾¨Fq*ú×Õ(NEÿú¢Å©è__T£x[£x[£x[£x[£x[£x[£x[£x[£x[£x[£xW£xW£xW£xW£xW£xW£xW£xW£xW£xW£x_£x_£xE“j’¼&ÇkR¼&Ãk¼&¿kÒ»&»k’»&·kR»&³k»&¯kÒº&«k’º&§kRº&£kº&ŸkÒ¹&›k’¹&—û �û �û �û’Î NŸ/.¡»”‹KÎ¥Køæëâ’�¥KÚò·´å¶´?t9KÇUù®¿ïûÛ¥Ë ÖœN‡«ÌA�W¨ƒ¯P;µµo¤Ç‹îN“lU’­Jk«š›#§s´MBªmµžà|Ó�Ëá’z7l;#§ã6ô�€a!(„È(l"8…M§·;=p7ginJæÉÛ¯vHÛ&�o¶/.i+?ÛMŠš–D§cS=ŽCÐã88��S%¨èï Åd— ±Sõã á¨[5†§o’)°üáfÐ?=ÊO+ŒÒ£s”bŽJÌÖõ@Úñï¶RŽVªÑF9<ŒC»4[ýnên~÷²à†Ú0Þ§SÏ]vL}vL�vL½^ñHUÑéÙèôxàrzë�KMpŸpiP3µ”R1¥“žŽIOÇ WPÝ2RÛñ,žN²áhBÇTåÀP–ƒ÷`ÃTJŒR)1J¥Ä(•£rÿ~˜Ñdó:S¡œWx35Øw ö N‡Ï_8œWï¾Kã9½K7󟌇?<€9ª^ð<àï�üÝÍÃq„¦Eh ûêçƒT¾ü8.ÊOi‘j¸­"žñ^a^&)Ká<Œ¢³“‚ò“IÁVÁcÏ9<öœÃAÁQÁIÁã 1¨º™”zI©—ä×*õ’R/)õ’R/)õ’R/)õTOZ¥^«Ôk•z­üM¥^«Ôk•z­R¯UêµJ=ÕØN©×)õ:¥^§Ôëdƒ”z�R¯SêuJ=Û ªöôJ½^©×+õz¥Œµek•z½R¯WêõJ=õ“ƒRoPê J½A©§z©:yÓÇ‹‘³9µ4t.h©¦ëû80;?jç7 ¿j.ª¬ëtMKëHAé!s¸EÈî2‡Û€Ìáf3¸Íô™ÛÜa÷R;ˆÎ¯”–3‡…ÁàêÇײƒ=_)­²îüø.eçÇ“öÌáÖ0sù�‹Èoœk¸Ð}aŒ�à bpºCÌn3¿]©¸âpnäÃ�\`¸• ,Ž›®¢,hÑõd®¿¹G Jël™Ç›™cdŒsdœÃ tçT1ƒSÅ ~\êw~\îw~<¬eóÎ�`;?Ãv~<Œí¼ LCw^Ð&£;/èSÒÌaæ¹ó‚~0ÿÜyA?˜…î¼ ŽØÁ úÁŒtçý`î¹ó‚~0ÝyA?˜‡îüF¿Ëò•pÁs-Lë«(P�â Æ•À4¦;‡í¾À·CþUßp�mAË }Zæ,Ç«‡;?^JΖ6w#OpXýÚ9Ì:2‡YGp[(¿YÖÛ9…Ç9l{í\ë“lVu³}¹sÝþ;Ô;/ü>ìRï\LJ–®w®ãC‹×™ß®^_¸åÛ‰eÔiÖU§ãæ;ÅIgpˆ¾cšt9¦I—cšt9¦I—cØ‹ÛðZ7lÔ¿5væ`œÌÁ8Á)ð™‹ÞmeOtoå°G•9ìd9/8Í�ã¬18%NpšÏ/<�pPqª|»ñĽ۸ˆ¾qVã"úƹ÷gó.tŸªrp¼•«àm\oã…à‰º°bQV,êŠE]X±ÜXkøÑf}ItMøv£l<çt—�᜸Ð<4†s4†q6†s4†sÌ‹àT•‚SÞ:§¹læp/à�i�i�i�i¸`Lžf·ëT–žÕ ÊÆtŽÆtŽÆtNÆ \hÓ9Ó8Ó9ÂÔ'¸­sóÙž­8êžQ®œÎÉ>�EçVNÙXô}>ñ@pZãÏœ‚뜦ñ™ëßçì ®ÛÇæwŽæwŽ£¦qÚv¬‡uÙ°V«¶áÂtˆ×¨»u)1‰²î˺s4žs,ëαªçÀ:ÇÀ:—¯¥5=ß8,åªú8¦¢‚ë˜nÕCÒ8¦§µÓó•†Q8ÇÝØXýhÏIÁ·ÅjewN¶ ®Ë¸Ð0§ñ Nâ bàÛ¨0Ê †½� › x ÍJ'Ü�4¨\2ÍÒ%“x αl—rÉ$6+ —L³tÉ4K—Lb»Ñ1NÏKUT½Ú0—« 뎉Qlâ½L£ìÁ�x?Ò¨ž– ¼94ÛûÜÇßm-ì˜,ì˜,ìLT·Œ,ì˜,lÇEÇä2Çä²Àà²Àà2Çä2Ãä2£T�’ËŒ’ËŒ\ÆëKC²÷•îߨsÚÐk™Ã®ypzc-sxc(sxc(sxc(sxÊ2sxÊ2sxã*sxã*ó‚~ôÆZpzc-ó‚~ôÆZæýè�µÌ úÑk™ô£7Ö2/èGo¬e^Я?>“0s,†ÎÇBÿhß#øí;cWéÍ� íz8ÅME»ú4ïù-i« Žq1ŒÚÆ�Â0æ�Â0†q pLQ1Œ#A·ž�(U;Ž•jb?ñRMìf8Vª®É_b8‘Ô©< ³ð ¨f°#‡à—7ȳ!ÃÃÃ$¸SÝ2 —a ׆9\†1\†1\Æ ËFq²Qœ°l',¥·�â»Nu¤Å»Áe¬ùÝ€Œ Í“áï8× ÏîgN…-8M��cåëÕi¦�¥©øñ|ÇÒVüxþŠÛB�h E¢-T‰¶PÚB%hu:¶:[��­ÎÈV§¤ÚW ®\µq᪕+WmV&‚+éÕÆTð™&y½ï<‰¬Ú¸î¿Ìjµs\ï…óÙ¶ ²×â¡yF93œStSïœcâ8§à¦à:Çà:Ç’kœƒãƒãGYã˜×†É9NuÛ0ë SÖ9ÕíÆš0Þ� ŽÒT†ÅÁ_Ž…_V,Û¥Ü2Š3Á ¯,XYel¤SV,Œ²`á“… #Œ�òÁˆç;qæQ ª8Ïbݱˆs>LåнêÌÇ"ÎêDôÒTvK¹`;,@~·ðÈŠ9£g^ç6*4ó:·Qá Òßonø”ñ&^/„Ne“9§Ñ)0õÛ9ºÐ9)0Iã�èœärÎfsކ1Žž0LftJv3Œ³6ǰéègXÿ4rÚÿ ::rį׷¼†ðÌÁAMŽéÁFÃXÓû��oö£®ÚÎKvcg«ÍðãFñèÇÌÁ™C`‚S:fe=8ÕÞÌ íƒtsLéà˜j¤c²¬c2¥c}´âÈerôמàÛ�b™ NcGp:5 s œsZyÈœÄsN� \è>ÕÙà4â;Ç:“Ú9Õaçh<Ãh<Ãh<Ãh<Ã4Ã[ð�èœZƒ\ Ó‰v†õ‰u/ùÚIû{#WŸçŒ™VÃà¼N1#‚SFdœ2"sˆjðŠÌáÉ…à”Áiꑹd¥:s0}pJ¹à”rÎéˆäi²?TuûwÌ.Ý5óÆù¶’ÿÚí4 85¾sØz̶n3‡­ÛÌak6sؚͶ.3‡­ÙÌak6øí+õà}Æ‚>cAŸ¶¶3/è7ô£­ßÌ ú�ý¦‚~SA¿© ßTÐo*è7ô› úMý¦‚~SA¿¹ ß\Ðo.è7ô› úÍýæ‚~sA¿¹ ß¬õóú/¸Ö/�´~Û› ’kýÖ?¼¦¹Öoýûišký¶£‡?`´ó‚~ðgŒv^Ðþ˜ÑÎ úÁŸ4ÚyA?za=ó‚~ð'Œv^Ðþ�ÑÎ úÑaò™ô£Ãä3/èG�æe^Ð�Í˼ =š—yA?z4/ó‚~ôh^æýèÑ¼Ì úÑüsá-/-tÊÅ1-“8Ög9Ì|g4ûQäX»ƒSìƒSìƒSìƒSìƒSìƒSìƒSìƒSìƒSì�cí^Ðkwð‚~X»ƒôÃÚ¼ Öîàýh™/s¸wtN "Ž'¸s 7þŽq^çX‡guŽu`pNçX‡gtÓ6›PYoœ]kœ•1ÎÒgmŒ³8ÆYã,�ñ’>ìÚ�‹¬7+*™oí¿=¨3óIóľ^¹0φµ:óÜÞ \ 9Ë\Ÿ†œõ6`¤�d‡°øëôvíôê—qGd½A8ükQWÇcÖûƒ_% Jëî™Ãþcæ° ˜9I¸Ðimunify-security/inc/App/Bot/data/datacenter-ip-ranges/gcp.phpUT ëÆ«jëÆ«jux è‡��Yo%·FßçWèM6KÝÜš-g�ƒ<ä1@ü>¸#ÝY[H8üãÃõJãËï0xlø°V«ŠE6ïŸþúùãç7wÇ÷Ÿî�wß\\þð·ýó‡ÿqyñíÅo¿]ÿûéùû7××?|y~øîÃñþøxx>Þ]]üýáâþáùâx÷éùâݯ÷wWoÞ<Ÿ¿<Þ_¿~óæ"ý¹|zøòx{|ûåñ§Ë‹?ÿåâòãóóç§›ëë_~ùåêÃÓóáùÓíÕíÃÏן>?î?Ÿ®ozørwõ劉ûË?Ö[¼?>ß~<Þ½=<×[˜Å„ï–ý»Õü¸¸›ÅÞxû‡e¹Y–~Aj}ûŸ§/?׿OƇ›wG°~¹]ÜûÛå.„`ß™;w8Ä£Ù¬»»Ý×%¼?ú�þ¶Çƒ¹[½¿{o�1îÝÝmjÑo^_óí»_ß>Ü>ë+½êpþÿ¯\¯Œ‰WËÕr½îí~¿ckæ×kt7pmzÕDÍ"¨ËÏ5«¢¨¥Ç'ßx¯} f-‡Äô¬Op®]¼Û˜–‡å—`�€Zùž™ùsøB‰æ¾'àÐ+†`tÊ´pWИ»rðD��»’Vi}•ëPrå®V'GJ¦u” ßh«OLv¥H½ôÅŽáºÑ¸4B¶€Ò²üŠ ¾’ü·/ÿi¬òpÆŠÁ’©ï£Pãsí¼z¶uêÙ©OÕ©œß¹ fg&Za€ ÃØUU(|r�Í%Ÿ©®AOp<ö�ý È@¸¸Â„Ò .·0áq³‹ÒêÐVP¡¡J]­MW ntå.e³öÑ+ ‘Ò‘A¥0-ñu¡³°Eú·‚uœë8*óÉTø…NǾ¼Qþ±P#üyƒØ£úÏÈ»žp`<öÍWבּa̯&|tdžŸmøÙ†ŸmX,,sí„2u;Q�½òãô¥S|i�ª øÜ€Â ãÔ¨Ñm‡;E%ÇqjÞé8 j´x_AUŽÔ ê7�ÚèÆß8Â�W¸/{µ•}b¿óø©† %X¥4‚øJ�üáºÑc#ÉIÏ";>Oî^c³@ŸNÉ¡-¬ÄzšhÇXÆà Ö#´`íîHdž¢­!Ó1jzg›ó•’4§À1Œÿ¦¾²¤açlúÔQ=YÌòµÚ<uZC™je úIT;öLµá (¦%J(ŠÁ€b0 ˜6¹¿”'› 8ÀMÀT6aJf z%CŽ?ÁÕë8—1$ço:£(4‘pÏ¡Ol/c0‚ŒùÙ;˜ûã\|#}èº^Ãl;Q9�,EÕ¦C0íˆ=â@�m Ë—Òye¢4Ð#åˆC9âP–EÐBU4C+êI•Q€°ìUÐÞŶduèá-ÅBK±°—:‡º±”OZJvl„ëÀ9wŽ*7«#)8JS穎湎繎už0LQÒˆ\aŽR°®Ž8'Ë¢ÓLÃñLÑe8 8ŽgŽfŽF%õ†;㺔ç(~gp*›j úñX{ñ†lJÁIùÜ‚ÇõéÖ³ù‚Ç« '¬#IÁ:”¬=~Ƶ°3ô, '¡_›±‘´»¡,ðï €3Õa2S&ÿŸhÔ�0ST¤Q‰î:Ét#mì[U†ä¯ŽtµåÁe©äœ)D’„a b¹P°…Ñgë £’¸-‹hˆA#¶.x†áeå’sÇ0g+Øh…VŒ5‹ÅZAœV¢xk #ÓÒü9SÔ¦CCrhG�tgª‹Œ‰Bâœh@E…‰žÈÒQ�¦9²§¤ÂoP—I°¹e‰uU(¸ü­ìǨ¤•X¾¬z¿ïÙ”î¸å«¡0X°žÆf öT9�÷¦P™±ž e¼Á Ë˜e isÆP‹IXm è–ž Æ77+x„­oÐWCD­MÕ¬;_¿SvÕèìj“;N £SÆ�Am¼6,T ŽÎDu™!v7bw#v7bw#: Ø\š(l.�ŽB½£Pï8Ô;õŽC½ãPï8Ô;õŽC½ãPï8Ô;Ü*^0ŒTW÷Œf±P¨wê‡zÇ¡Þq¨w½h­1w›Â¢ÃX®>£ë�)ö‰"¹£hì8'ŒækÑza)1S³‡,Ú5Eã¾ïS‰ ꬙â+C•5â®Ðè0’;ŒäŽ"¹£bA¦øÊÉFr‡‘Üa$wÉFr‡‘Üa$wÉFrü"#:Šä#¹ÃHî0’;Œä#9~&ñ3‘È[š¦JCßq7HÅì°\�0}Y—0Ô£#îcŽ´­,ò¶².ÝéJ£¿†ÄªŠ�’¿�ï ,É(£(uõ/%†ï‰ÛÛ ”¤ V¤ú7#=ÜDeX® ÈøæÕ ˆ`� }2,¹¨›(ò÷%F^ÂyÐdÆB-ÔBß-Ô-*ÂÔ,ìòµŽ\Œ=}?ò|–1h¿2mW¶Pѵà:,º×wQŽÆëi:5ê#ЇÒ_×w.ŒìÊÑ7 ”ݺV¥3m¬|™ƒÅe†Üƒâð]ÀÏ9ôsVûæï!×@[¤�:’¢2zSy`…­â–�„�¾ztϼÿYoòxЂ_hƒ³§Õ‘Çcäñè²¼…ûâV}Ú×FÛÚú®¶Ñ� Ú|úJø��IÒRw8ͬGÃ'S½R[¨ôÊ™j+ÉT[Ipd%AžRS¡ÞD|Oì§ä�‚ƒÃ3h»@ mC>°�¶7ÐöÎi£'Á(ûä�Á؉ðáÏr"xXš,¼ÌF72ÇHÒ�T!bª¾y‘ï`;XÆêؽŽ;ªc§9çŽû~všøí�¹í}çÕpï£ýM¯�%òòX"*–žëË[èÚ¿žœŸûˆ†ÕGµ «í© +ûô/sûñ‹u-ˆ[ëS¶:VnÜ¿® Œ_LŽÈ ñÉ?yÓ5‰ŠeM"cy0C…ÒW4LOŽüä]�µ шvÉÎÊØå€óõÃh‚röÞ0l‡Ã·*–»+Vü6*Æ®2CG}rÚ;UL�Õ A¦2#ÈPF° iÀìZÇÎf‡—q$YñˆØãìÖdx4 $±ó€ØÉâËé)JÖ†ŽîÊxU¥® '×:Qz®”ÞYFÿ å<§BPaÆò†ŽÅ<¡c1GoX�U’1]³ÀX2K¸¢—†ªvÃÚj3V“�JIMr®_!¾ŽÓŒéÁr²¯ú•¢Ô/ùªziY+L¾3&«\Ù*W‹²Ð§ Tˆ¯%sÞ ñµ0ËT¤wÊWˆ/MvµB©bz+9�ñý º2Ó–"†ÜÐZDÃbý£Q±X©Ú¢Þ¨XìnT¬Ñ6*Öh+U«÷�jW˜¨‹–�â��(7*-k´�Š5ÚFQVe¥>h­T�ST©úذQ´I�¿#x¨-ã·>†Ì×1¤!¤�F÷T!�^Ãñ¦¯Z�Ÿ ކå¤6S°s7K¹›…#„ÖIcÆòd^_×ò°”žY „êо …ḿŽJõ„r­%{Z_RX®05¬çvõs|5²q%§ÿÐ)¯ÏØ©X®FV¬À*UK`•R—(7°œÎÂ�èËŠš¯ÇCHÏ£—Ø*$»uäI馊ATNîÒ¨�Då e™ê¬"SsÂ�tdª“ŽLu ÍTÒD!ép†’ŽD!éÈï IG¦:éÈT'™ê¤#S”$ÎPÒ‘($‰BÒáôf”J!ép퓬ñKqxpõ«¿£¨Ôk_×Ï*ÖnÕ羞/«¯äÙ™CÏï¨&àȇ:ž_éSÌ*D§ÂyT?»k¨{Z¿®2¥~•x®\òõtƒßûý×k%òrLX–›uO¹%ýusíÎFÚë&뼉™7±ó&nÞÄÏ›„y“mÞ$Λìó&‡y“wó&·ó&wó&Çy“÷Ó&ë\Óë\�ë\�ë\�ë\�ë\�ë\Gë\Gë\Gë\Gë\GfÞ#37L3ï´™÷ÈÌ_×Z—›œù¯—&ÞM]Pœy©uî¥Ö›¸Nï×ÿã.“�›L|]n2$¹Éd�ä&“A’›LIn21©Üd2r“‰½ä&ÿ²fz;573æ³óý¦õ¦í¦å¦ݦզ͚ü׬ÅÄU¤ãH-&¶‘ZLœcj1q6©ÅļÌ�™ÐTùfj@f~�©™©y˜©y˜©yÌbIj15�Y$I-¦æ1 5©ÅÔ´S¥Lu2UÉT#S…0�jkª¬©®¦ªšjê|¿šÖ¬‹üiºòkJ^ÿûÂÇeœ>.!œ¸ø÷…�gƒ'>®mv,f‹‹EÇⳑŠÕ¸NÕùÄÅN ÎU¹¸ð¾wf|÷]HOœž¾ëïØ:Ÿužð¸ªxÂã­É‹âPŪ|[iÅÐNÕî­'{ÛåYv“½õÝ?új±ïºc2G¹y¨Sî¸^×>q4˜}b®{­SK“Øå¯0½ðq�­s´¸�-nWÛá;FÅìÅ|åd7ídóN5ý+3'.–¥ ßôϱœøùÒÒW/(«[ù` ¿«_{ëôL1¯onyó¼À˜$MYfçÊ2;ÂéXnãÒp;ër�‹°Ž…Uw*×°ŠO ‹Ñ([¥ Z/áåóÎÝl¡j-¼Rµ£¿Ð¾ùj Ï€¿Š×¹¨ñV¬¥+U¿÷R©ÚXP) D‹W) ÄÈ……LƒÚ Q ú¨¦@z¥ v95H:ØH�ëoCõm¤=ù%P�ª¸_ ÚVY ZB)P-ƒ4ˆ]%o,âþ©Ñð¥"I)’”¢úñ¦ñ•ÐLåç"ÊT¹B|¬ZÄj¯¥!Û?|Ž��ä¿“üû6üá ízu«`2bùÙR�#~íì�vöy!ÐA^ܹ² ‹Ü®Q•7,Bd£*6,b`£ƒ‘b ¦îAgùžkØÎVŒ_?`“?;ŸP94]�-|âæ,÷zý€]÷ [> û¬_]¿ëëkίNë¬9ÿi?û¹„Nülw«0:9.û¿GÞ¹]Þþuùx¸ÿp|zûîñápwùr³„¿ýþÍÿPKÒV1]uS n…OABimunify-security/inc/App/Bot/data/datacenter-ip-ranges/hetzner.phpUT ëÆ«jëÆ«jux 臭›Msã6E÷þÚ9]IËäã'Ô“Iuj³œªÎ¾‹¶¨v'3²K–«ÒUùñ�¢ ·p6ñÆ._$ñ€û üòüø|³w_÷ãö‡ÕíÇ_?ýçãoÿ¾]½[ýõ×jüóëñÃÍÝÝêãëñéý—q?†ã¸]¯þõ´Ú?Wãöëquÿmõ8ì·ë››Ãx|=ìWÃá0|ûáfån_ž^ãç×ÃoW?ÿsuûx<>¿lîî^ŽÃq}øú<®÷ãñn;‡»a¿zÝ?ŒÛ÷Ï?Ž/Óÿ׿¿<í9ŒsO?üdµ«‹ŸVGOeeUqûÓ|«»ñøð8n?ÇùV­°ö}áÞ—ÝoE½)ªMÕÿX›âÜÀúá�—×ÿÍy¬i7u·³mëÚ~w¿­ëqº®ßVMQÜ—õzËr{¿+œ¹î¾ºúj7ºªjF÷P5Kç‡aÿe|ù|ÿíóÓÃqœoélø±Äÿ¦¶¶¶~]¬‹»²=uw)¹ké]ü³Q�6ë²-E¯³VAµZ©%ª†j…j�jƒj‹j‡j�ª#µDV%²*‘U‰¬JdU"«Y•ȪDV%²2deÈÊ�•!+CV†¬ Y²2deȪBV²ª�U…¬*dU!« YUȪBV²ª‘U�¬jdU#«YÕȪFV5²ª‘U�¬dÕ «Y5ȪAV ²j�Uƒ¬dÕ +¼l;�4¥Ö¤âwxÙŽÛâÓvø´Ø´ÇaÓã°éqØô8lz6=›Aö²g’Eé¤C�A:é¤C�A:éˆÚC“jhR Mª¡I54©†&ÕФšTC“jhRÑY:XCkè` ¬¡ƒ5t°†S³áüj8ÑF/šPãñÊ/!Ó3‚D{kho í­¡½5´·†ö–½¯¡÷5ô¾†Þ×Ðûz_Cïkè} ½¯¡÷åw�ÆØÐcCclhŒ �±¡164Æ†ÆØÐs˜ k6t͆®ÙÐ5ºfC×Ì‘�‘"AÄÀŸŰŨŠŘÅ�ňŀÅxňĀÄxÄpÄhÄ`ÄXÄPÄHÄ@ÄPÃHÃ@Ã8Ã0Ã(ÃÔ3SLL1/m‰PK„Z"Ô¡–µD¨%B-j‰PK„:"Ô¡ŽuD¨#B„ó}L÷1ÛŸ–B#z˜êc¦�‰>æù˜æc–�I>æø˜âc�9<¦ð˜Ác�ù;¦ï˜½cò.sw?ØçÒwÙ]‹¼ke•Ü «¦÷õ}¯m«Rµ­¦Ùöúu_6îdãnrKpÓµÞÀŠrSïúÍæ®ºªžDGâ΋u!ÅÝÎÿá?Ñ'>ÑnîǾðª¹kµ´�O¯Ôˇ’ˆÞ1„Ú¶JƒÜ$Çeß­ì»�ÓÙ@»¹ê¹]×bãÒK~mKŒºË«:yU·…ŒtÏ^«ðõ·òõû[šr;¸©Vbö‹ê´1™¼«IL„Ò"Zb‡÷âª�í~¹© ï¸ëeÛ~ÚÆ&ëÁN~ÿf/zî%‹><î©þY^ v¯ú™óºúrÙµ|`¿B8'ç«Kõú‘5=žT‘-jz±XÔ4ÊEM/‹š^/5½`,jzÅXÔtà/*²ÉÑIÙÑ¢"+‘-*²Ò¢"+‘#-*²YÒ¢"+‘'-*²™Ò¢"+‘+-*²ÙÒ¢"+‘/-*­7½œ²¼'˜v(’ó¨Û•^.)Þ>–m‡©“~ÅÍ'VÔ¤äæm¤SuïÊĻٷ%É•¹Grµ¼«zžÌ¨±œÁ]3íÓwÕÌ5{è¹,¥gÇY¦�dß³Ê+¸-;÷ï`š–àEúÉT6÷óì´;JW¯ô£ù‰x*µbs}óU?m±©�ôi§Œº×î6L¹a‰bÛå'WÝA=%¿xyýt~öœJ¯Ô¼‘ ˜n¦mí4¯:ì~ÎÑ}»©@A­µmôÒTtÂÖú¹ü´3ís¤ÃaRs�kæm?ò¢æ�œØ¼ í‰=©7íu<øÑ’»¸¾÷àO •\Lª_Ÿd¬¼Ñ¯×¡¨§Wí³.ü`ÔÓ+wÔÓkwÔÓ«wÔÓëwÔÓ+xÔÓkxÔÓ«xÔ3ü„C<ëÂ#F=ÃOøÄ¨gø ¯õ ?ᣞá'ê~¢fõ ?Q��z†Ÿ¨ÑG=ÃOT꣞á'êõQÏðUû¨gø‰Ú}Ô3üD?ê~¢Žõ ?QÍ�z†Ÿ¨éG�ù©swQg~êì]Ô™Ÿ:uæ§ÎàE�ù©sxQÏðÇí¢žá'ŽÜE=ÃO»‹z†Ÿ8zõ ?qü.ê~â”]Ô3üÄI»¨gø‰WQÏðçr¢žá—É?Ô¹»³žÉ?Ôñº¨gøeòuÈ.ê~™üCµ‹z†_&ÿPgꢞá—É?Ôɺ¨gøeòu¾.ê~™üC�²;ë™üC¦‹z†_&ÿPGꢮù…¹ìa›)Ôéý­rÚàêN'˜®6ƒ'ÙÔ1›YmOÇöÒ�C­k6®•Ö{Ô•/ rw>…œ¾¼÷drÞ:ëbÜ,ºš·Îº7}3­‰*,ú¹0-§� {¸ÊMr¿Öèüp?}ï±RÃBW¬¼×�âùûQuVýd* V^®3L'�[¾q«²… {'#†TP}4$¼æ›«ë°7É¡¸Ü§¿cu–Å�ór8 píôÞ\]GcØ�H•Å£JÏÊx½-Rëü›«ëú­7ða‘¸~¸Ës2…¬±†;EÄ«p}Ó\¢þzªòŠatKn{^ö_ês<>C�rJcÊë£)^Kpb¯ÿMÿ²D‚¹i–ït'ð�~�¿˜x¶ßÊ÷ò»7ÿPKÒV1])¨_¿ ¦�–>imunify-security/inc/App/Bot/data/datacenter-ip-ranges/aws.phpUT ëÆ«jëÆ«jux 臕ýQ“Ä:’¥‰½÷¯¸oÝmÒdA c5#™ô(3í{[d$9=Ú�î±ê“Z¶?^„ ™7üœÃ©ª¬ºVŸ :€Ãáþ/ÿ×ÿþÏÿýï~Öí¿þËúóüýþ¿ý¿þŸÿùýüýÿøÇÿñü±þÿëßþ—¿ûË_þøÏÿãoÿúþËú/ë__[¾þø¿ÿëÿò¯ûcýù¯ûãûßÿøç׿ü|ýÝßýuýÛÿøë¿üñúë__ÿþ÷Çþ¯¿ÿ·ý}¯ÿô?þú¿ÿýÿñ?ýñ÷ÿü·¿ý÷{þå/ÿõ¿ÿ‡¿¾þ忬ÿöõúo¯ÿß¿þËëÿóo_ïýo—ÿÿÿýoÿú/ÿ®OÙÖ¿½ÿyýù§×ßêSÂ#¤ÿðXþÃ�ÿ×Çô|ŒÏqþ?=ÏÇ£ÿ`—~ÿoÿö?þ[ÿ·~…˜žá5¿ç0İŽï×<Ž!…iÛÿŸ8çŸá{H¯yÈÛòóþÞâ6oÓöÚÆŸux¯¯ø½½~^sx-à?}ÿû?ýëûok-Òå›Ë¿çÿ³ß_Cž¿†¯Ç_ÂÔž÷gö �Sþà@éÈ(}pb0ShE�ØogÓa`_˜S``Ÿ"ƒL»�i70 ¦¡‘ihdbŸÉ¾’}dbMì©L;Õô2ÍÍ2µRÆT¾0•/Ì(f” S삻Оf¡=ÍB{š�N°GX¾po±|EƒÀD`züù±ÿxþãˆzòý#Ê¿ÿ2Ä??µ�¸÷Ó_BöÙþ–O´wýÃÞ¢ u~X¨´óÂʆ0#ö 3ì?Øð²¿7AœüÏ1K(jp9؈…˵óZáè×;-/FxŠµØ `…£z0^í==2•>»öØènVaz€Š®|šþ2>Þß=#<@S¨”–<ù ´Ó‘ie§¥J`ÁƯùAñ’ö»¤F³?LtšwCÅ ÝqQ(ªŽ½34•�ÏÀóê”+<<ü®«SHét!Õvÿ`ÆVfuý^³ÓåkÜMôc�¼à¾wÈû‡Q<ˆç ?:À~·°a÷ý†ýÁ¾‰U-0|�¸*Â×ä; Ò_úc…ñcºBÜTwÈ •ÑFàaÄ�×þ7³^{,î¬õ»® —ª÷­®à ZÝN£ïTšp3Ü;¬«© `3nž±ÏRÜâÆêÕºãKl#½ s™Sí�×f¿EñµŽÁŒ¦a°tÒ(HGh猢µ�¡ÛY0 F6ˆ¢43}àLÃÈYn–zh­Ö¶Ët Nþ*M¨»²©tŒ¢©r¡»­CmìÞ\øÇ³­NÚ£¯.ÛŸñºfáh^Ê3Ô�Ì3ØFñ“+“¡ŠQ>G§üáhå¬Sþk+éŽZráxð2ZJî…x:vŒjÄ0ç“›:0èüŽôÙüѨ‡jx¦?^üE§0_°ªK|{ pÇx &¡ÊÚ»‚6«ó Vè¼T}»%«<Ú`-©pØQ�e!¬,>.P)•â�N_0¼Yà„¶ \Èp1æ>_wé\H~Ã0 }ˆBk.8Puç~ðüàƒ¿š~ðæÁÁ`×yòãx'÷²ÖeOüšÎÁ’ÇɓߺžM¸ñðàß�–\Ûqù-J�êÛåÜóÍå¿Æ�­Rúëo‚·Å¹ºðÙKÉAƒI£%áŒb?ˆ~ðtùG&Ѹ¿šqbÔ¢;îvç¨At ®ÎaY9×Èiîxm©Qþá×ã;Fí¬b0Æ7Ê�<º†QW(œŽ…3R£Ðg7šh#HæQQÌ*/ÊŽ+KM©ù+_H…da¥™Z)L>0û4˜™ß±¿’Ù)òf=GÆnÕÒ—g=sÀ©(%��@“M† ¦§®¾›ƒ™Qv“Q’ZÚ9Xíµ:à …,åïN°ŽNÀBF>ÇTG/òð¶ ¾«Ð€zIã°O0 ]ë²< ]ÜØÓ„½RUˆê"ž>¢�ŽìÞ>q`Œâ×¼æ�M0¨[Â`0ÐKNxšÁXD|T_ 5²Âaö©ÑiÄjx0{ŠC_ž$ëè ˜„ò_“Vh|�í(Öœ\ØsuÒ•ŒWÅx�Øh�ù@ÞÜP¸’`†«t號n•–—´?ÁÿvŽ—£v˜H”gÇ8È] ‰]VŒ"ªÑ–ñ Ö´;ôÅ#‹ƱO‘Ñoý-L†¬ŽQ…â£Q&4 #üF8„4œ�û´c2=2ʾ ç¼Uʾ‰„cwOÏè Ì$â'‹Já_Š�z² .œåÆø…u•¬Ú•é7òdËêÈQ,1s¸Id×M�nH‰�በ¦©,GÃXBjk‹�!�%••Ƕ5ŠÜ¸D–&{�ÿ�x-#µuF¯Ó7†&ÇÙêÓ‚I^Yéµõ—Hõ8ç:w�ÄôK�ÁÕÀ¹0ùíŽAòúN‰çWŠš+ÜŠ_YDÅ\rÐ&ŽJÑÝ Ø®ú&~Ïj²ÀFÁKû$Ú­Ô¥&"·Â�ï¶h‡ºkMÆ/ÒÈ~;áÏFQ�E½ÎÒ²\|Wïk*¢§ ±õ»ÎLw„)IãœÆ/82�-®ï–M–Æ/ÔÁŒ0s£oUpj¦ìƒí¸À*ªø¸¨±�e†ü6ìpÁ¯JA}÷Í>*»@yJì9 "÷²c›lí‰9°·-«aŽGïxÂY ã‘5ëC˜±=â”ÙâÎ�£Ê ]@îQÝM_Ðñ( ù;›¸VÒ©?ÌWŠ ͼ¡îcïG= âq[ÏÃýhÃ`FÞ(²–JÁá�‚qÕö9ÀÆœZ†5„ÈåÙa;:ÀÿÖöÙû ô±¡îWA¸Ù¾ÿ9#ÌG1ˆÁõ>‘òÑþ.7,Pc�0?ÔP™¿:Z™¿2ZÙL˜Ú7FŠü�ÊȧöÌ‘0±ª2¢²@TˆÊQY *#Ÿ0•�De#QÙÈÞGT6•�De#QÙHT6•‘bNDeQÙDT6•M¬,DeQÙD>�<2’O�äÓ#ùôH>=’O�¬œäÓ#±–H¬%•‘×%¢²DT–ˆÊQY"*KDe‰}QY"*KDe™è%½d¢—Lô’‰^2ÑK&zÉD/™è%½ÌD/3ÑËLô2½ÌP/#“Q2c£À1B)Æ€Cm ¸ÓS;Âñç ~´ÎÍI*Æ|÷qj'P „²!*©‚U¦IqJ†à�œ ÙA¾^ƒ¬< xZ!�V¸�¢ºI�û΀ ¤Î–0d?¡ÆIaÙÙCÙ3ÁÆÀò“1°ödŒ¼@WùÝ‹‰¢„ŒN-JèÿÍñ&œu<Á��S -:³êé í&pÆm!hÅpGÆŽ–ÉBS5Œà€7°ßü»À~7ÂýìÛ•>±Mé–ø€> D ~a�8¿c¼3‘ó*ƒ¿ŒøS"~hû•Ó®bßï8±§„†Âì6ކZWlu~c÷‘$ľaÉæDÊ 3|b?‘0ò mY`¡ÏH ‰=åÁ/ <¦0’„†ØÓür.ä™ Ö5>ï4öu ð;¬Ï–üà?ñ"I‹`E’IBD$ÇåD’¯`a¤,ÄñÑLo{é§¾¸ˆ’”‘‘”.ÂÆ/Ò~6g¸\ñÑiñ .ðǶgÛ}׌?®Ä/¸Û~c¡^Q“¾2^36Î=ì'í8_–ZpÛ{bAðuÁTÀ š  Pi²Ó�‘Gß1HªMe€B�Øè•Žáˇ-‘ǹsð”zïøƒi®Ù‰¨Ò*FºÈ_0Ó4[«¿œV,hÁžOàzòÃR`üÕƒx·`Èù:¶Wue+,<Æ"‡¶èë—ijÉ¡ L‘œ‰“s9Í<E•3“áÔ 2S|ÕL<‰¹,$ƒ’«{óv %åõ^3Kä,™8 :"®Aß6+[›¹_a$½Û8œ`» t÷‚;ér®î„Óµ:ë©;P=é+@íô<ï™¶-¶:FŸš¿`Ë, žãd5[ƒh¢\àˆrSvHÒCvº,0q¥Q�»á„BîW·wº ¸¡÷«€˜¼p·‰]¸c½p7Îzán@õʽ ê…»�ÕÎÁ9C pÉ…at¦A4Ž5F°pqáÔ[åîÚÆ…»½ñ…»M�ƒ`†ó1]ò__9þ¼ÊñçUŽ?¯rw…fhqTX1ð,í¡íÎ�µ6N="óyéVÃຮJA÷>Œç În¡¦D`Dù¶Q «AöΈÆÝárô¬ûËÄÞ O‰ÚF¢/o#íÐÂßð± :;½A´uÐ0«ò¥^6ˆ"ž£kØ:±�õ‚%T¬[üÖû¤Š«[úéÜüðöó_foûxãw £ö_0Èíª­^͆v^ÜYRã]Ú8Ö¹%Ö{iÈþu`†Ñó[|ÕÿjÒgÙ$µÌ¾>[&©ë›_`…tŒC�] ¸÷Ùüðf`W7A÷*F�ÎݸÁ…»‹Èmú8ó ÕŸ]¹æ&wp¨eÇx€(¸ÌÝéö…»³¨Îƒ¿ç‚ý¹ß!àï ¼`Ò#4w‹\Gj¡ãHë~Çðå k[ËiYºé%/H},_™¶XãØš6<”-ߤ‡Üqß3àóR0Ò4îF¨Oi®qh �»�§$ ˜+!Ê·ƒˆvÃÇ©O¾z«Àâ�âsåÈtJN/<8 Áh±­R~Ð ;‡º¯Ü=zéÂÝ��ãÁ·ü�[mÅ=ä`Ag?Ücœøy¶£ÑýgOu®ˆ•>õRô{´Fj8Âk‹õ�¤<))ºÈÇ`nç6#Ê!Ívý °'ŃMá~­QpY‚QæƒÁ=È ‚s»�îMzÎÄjþºE€;# hIðäþAîn˜5>|¡³ªNìîI>±{Åå�qnÅ€*E JQü§Qø^Ú+°‚nu6Áâ¬ÔãÐýwWŒá&à®­/]Æ@zâ.€ß0‘æ[ÚßBüÅñÈêðµÁÖ`ƒdÒ\ v#Çtl#óKezé·Pû[àÁP6´°²åüåü ö×"ÜÇ ’¼:NlÒ[2ºµî"ý‚…~€«ž:¯I�@÷M{¬;$SçJiùGâÖÅÏ©þvˆÛℳ £¥û«¡‡Læ½E Ÿp‹ÑÕî] UëÀ¯(´ –q�z#[É'�7ÅM/¹pÒíÜ=äöÂáÅb¨–eRí: µ xƒðEë&õŒ6¿ñãm&a‰â)áïÎ_±�&àÎD:‡f“K6˜BæÉdl'~®÷5ˆ.©:0žH&-v†·U˜´ØÞYu`ÿÜÅ ÆÎVÀí½ @ߤ àÖPüs㮸K©¸Ë¬Æ«wϲ98\z«»'†±/_0Ø]~`n[l4˜ùh0óÑ`†÷~Ø_\?0×È90׸ìÀ\kÌ*˜k \ v`®5p1Ø�¹Ö@²CÇþþœF/xà¼à�œùð>V«cpõë�iu£“xL«d›vJÆÃ¥˜4:ùG5J–äv ­;¥ . ë”V3¸þ SZÉ$¨1Íè>²Ni ƒüÛNiý‚ È:¥Ú×�uJµ.#k”„´ ¥Úw�5 îÇê”~¸%«SòEláƒeØÍ@³÷ìc¥  ùÂÁ‘Ó`¿ à þ!€âCMâÁr趇Q�‘,!Œ$qˆOÊáHà´ûFýCˆÜµJ‘³¶SÜ „Æ[ ´ÝÑkavZÃÌ*FÑþJÑt¶R÷µ“׸R7•µÐŒv` íÀ'¸pT(ÎékÚ;|ôbšÁ½¼ñiÀó냃ÆPBgx lN`ûæ\ÏÊî\–™0׿Sè%”¯ÁÝKI~GÜ»4;—iDû»„‘׉,A\ÏäwK=óN³s¤+ÎO}ºg»•¢•½JѺ^¥P›…&hX^¥h©õe¸‡.™¥º“�iá X6ŠÚc¹G ž# j4Ú(4û>l{?´ûüp{*8/¸•wŽ¢|;§œ8�r lêX¶bÅ®ò¼ pJ…h\Ûip"ià fÃ(æØ0 ²Ôƒâñ'c‡°@8¤²”ÎØ®|w‹¾ÓB‡há2ÖkѱU¶vn5%ÜëtNžnÙˆ¨Ï3ýr£Ð//^Xùˆ—›Ê…GØ}‰$%õ.uæÿ2‘ùYÙcc‡Zy®q… hŸÈ¼$…–œs…×�4p›‘ý->²”üë4Õq¦*DñµJQ¤¨Q0ÿh g•¢ðW£ ×i à�o¹Q0«lôµ•Re ùE£´Èh…ªQZdäWi©P }£`m £�ÒR%Zù‰V~¢šLT“à’—Ni™ÑB`£´TàȇNi©Ð$¿QÚÈ@4¶AÚ/€»1:¥¦Î�è«y„Ûf*$õ‡ã>±Î50Œà�ÁM8�‚˜v¥Ø*ì8múS\;¥ðÛ!BPØý­-ë5:Žháõ"໪§@ˆî¶˜&@Ú‘a\Å�ü‰ÎAA†ýÉ}?úàþLéÀ¾S1º¹È0Ü×U¡}ºï�]üøA@—=7»â\ÎX¯Fñ‡çzÂþè:[W7õëð“oâ¹ÕÎ=ŒàG¶¯Â7ÿV¾ ·µ`8�¯p@ù½'ü=X§€p>¹?óêwïW§à³¹›@MÈf$ÛžL·%7LñN¦ŸÂ™~’TÿIéç'”*Ø0:øåÂa_‘à´Â¶+Ò¯ºé«mLö_1˜ýž`Æ ÀnÒ²0á$ùÀÚ‹8VëÙ/¸Ù9Qè·vÙ¤¿¯ú"àÇÃ.þ2ÁUufE€x¿é¸0Ýo¸s›¢ø¶17;!á+43ç+ÃCÙŒfpôdƒ0Q­c�ê,”w B؃ cǸ›4ŒgH†±cŸ3›ÈŠ›q¡ØÃΙMd ¥úDy�Rm¢¬„F©.Ñ2h£T“dŠ”ñF›FñT´Pª+pó`§TW3Õ™}Juî í”êj¡ºZ¨®Ð&¬F©®ÀyW�R]¡¥€F©®PnH£DWl¤™”š[á@¼ñùÈ‹€¸Î*]wzîç.ãw×HÄþyFåß•ù¯ë™ÈîÐ8}`GßÕâ ÷qÛ®al¼†±õÆækÛ¯alÀsuU)Æ&lÛpÁ‘k-r­E®µÈµ©ÖxuO´ €“°M´ÌÔÄÁy_FYhkÆg–z½–Ƀ'Œ 󧸻÷"à§ü\भ ÐOˆxêQðþç5Uy9ÆÓ_á:9þ@æ¾ÎñLïq§-]NÊL»ssì}úukh÷dÂᜫb8®Î…w NäktA;¿b½½kýØd‚~;jžû±Dèד&Ñü-‡§È»¹ ¸)v§ÓŽ&�jfy�u½åѽ·p˃ú˃ú˃ùõ†UЉ°<àaè£,¿Ž±wd×·R¥¡Ãό籓å´ÎØ(}1±Êm”ì§dÀZlÀêç~¹=fƒ~ë+1 ùOùoÑ™uŒðÒ†Ž™uŒ½Q`̋ƬcÄç•5ŒvGtÌ‹Ž=îÜçp`Z4ìå-#¸Ø¦Cìñ/#¸Þ¦Aì3/#¸þ¦Aì//#¸§Aì+/™,!–“Љ~3ÞÕ0a űžr 1+2Y,”XTn©赤Ö󸉼Sà,»Q…;ͬ‡ÍèÜFaë9Žô܈zÒŸðüà« àõiÂ_g˜x@¾cx%Ä0\ûkÎ GþOÃ~Îý‰Á‚­Tˆl0<ˆ»_ Ìò­x†jZhx�…܇žvÀEËíÆEB‰­e;æ ôÎܧ0‰0¶³ó`m„‡ØYω6Œã]ØPã¢OÛ*†]sŸßxkSÇÐ5«”vâŸ�ùgƒ{š:FGˆv »á‚^e«7¯pìJA–ðŠMÅÔ^±©˜,ÍšÍFG”vÌ¿¯lVÌ? íe*ÜnÜ1ð+æ%ÇöaÌ«z"†Éøè”ÍNJ£-ÏŒÒiÄ1ÈBñ”®Z'Wv¢…Ì6·2ÌúÊ�÷•Cï+!fÕ8ô®~5&ö7°™WÅЯ4ŒƒÓbcÿÜ(é£ì�¤¯e�yh8¤¤ûˆ^(5Ö ôˆ>z-^ä(¯q¥-†›·:Ò]x’Z éXà„ tªÌ�‘C])œ ì¸.‚J†Nã¬dp;`Á#K©˜Œ¬c«EŸ’U›tÄgÃ8Ç:à.b­1„Û^*$KI Ã9„a¬éz´“õ!@:r¸SǤYǹóɆýmx�x¦Á)àŸÈur÷*«ƒ“®fîC$Ä‘¬ITÒõ#R|c³EXÅ.m·<88Òêä(óÏ8éÒ›ÅùgNŸÜ?*¼q¼© à.#>p‰‚€$äS,u;ŸŸ=œÏ_ð¾¤@7Õ£o�5ßèäÝ�Ô)…îíI‚µ­ g ±ˆ»r£ã'—¸.2<Ö®c<žÆºaܺ ãžÏ0îù —öC>, ¹†ãn«`Q%xŦb®Ô�+�çÖ1W*:Ï­ãL� �çÖñB¸¥ÚnPŠ™!ošcÒ¬ & »`Ò´ f�ÛÂäáû@Ã1ýîÀ¿;|¡N¸aúaÜÑYsóF„7¼VÌ™²æ%'“6üáÝ ã‘Ý0oD¼d8m¯b®4œ¶W1WqÖ s¥á¼¼Š…Vx×RNHam¬pÖÈÊ*üñ¬혵ÿH›ä%�õÈ[òð}�œ•½pÖÎ?Ž*¶`Q|æªÅ÷ï»pQü ÊDù —Û¹(_åcÝ{Á¢ø£(>ÚkxpQüQŸ »±ÒM.ŠïŸ'}á¢ø“(>s ÅG»w.ŠEñ£(~âÅO¢øI?‰â'Qü$ŠŸEù²(_åË¢|Y”oåóï4¼pQ¾Y”oå[DùQ>¨<ˆ¡)ˆ¡)ˆ¡ f‹œcOcOcOcOcOà�£Uó«Ÿ‹ßóÎ!dŽgŽŠù 6r�hä‡ñÄ€'Æ;1Üñƒ�ëÄP'F:1ÐqSÜåÄ 'Æ81Äq#œßÄð&F71¸ñæ%F>1ð‰qO {bÔã _ ‰bD¢ÅpÈ»$1VŠ¡RŒ”þ½$'¦§±n¶Ôo˜Oê#^e6ÌCøÌ«Šñ"DÁüÙøL¬Šy¨#q­$®t¸~Ç<Ô�Ž×ï˜+ °ß1�„¤…† w̆ÞÄ;fvŒ7ÒWÌuŽ7ËWÌ•Š7ÄWÌ•Z·Ä»‹i û'2ž­ÕÌß�7ÜWÌío¹¯˜ëo«˜Û9Þv_1¯’\Íwbœ{k ÿý"~Ï£Ó <¤cñt^/xż^ðÿŠy½�•gÃÜ\ë.wÕ{<’Yѯáé¹ÛR‰»$l˜j­¥Â¢*a©°#O…y*ìXSa)¦Ö†®2ê”ö«í°2Œ©-•;})Nl¸)˜…¯�“ÙšqâX.0¯ &ãU°ô.Z6â1t÷UÇÜ x÷ƒ.¯ê”72aNêá#­qKœx Ɖ bœÌ¢�“ÉjáÌbvÌ,fÇÌbvL‹hWÏÅgAm» ]”�®�‹ò±Ðu½ žsñs½6.ŠÏâׯÕûEñY�Ú¸( S� _ž5.ʧ°(>‹UÅgÑjã¢|,"m\”�Ť�‹ò±¨ôH3¦ å…§KÇÆÕãùÇÑ¥cãâãÄÀG—Ž�‹ò‰¶O—Ží<�EñåïEñÅÀÄÀÄÀÄÀÄÀÄÀÄÀ§>_ |A |A |A |A |A |ðV�ƒ‹ò‰âñÒ‰ºU/j^T¼¨wþlQë¢ÒE�‹*5.*\Ô·¨náæ/‡ÿXø8ÂÅŽpp„#ÜáÝçFø6µ”\ø5­^�pj„O#\áч†ù3õŠ)˜ƒ§:“c˜DÁ'>‘™ø‰™øfâs”‰OQ&>C™ø¥l6¦:õïÒ<0«N‰â¡X‰å�X å¡PââaR²‹¶PúAÓ—³3›§/Ç÷W^èËñòE¼|¡/Ïà~ÓƒÒ—çyÆ7X†gR7Ê_ÎN¡¨œ¾Þ Õ(9;á¯rúr|Ê^¥üåä´îÆéËi”E”E”y”i”£xy/ç]T†·n5Ê_κ¬œ¾œöpYôpYôp™÷p™öpYôpYôp™÷p™öpYôp™÷`<�çòT@ž Èy OäY€øö£ÔQã‹«|m�/mµò‰Dü¬Fzð�'’¾RÃ@„’)¾�È(µž®È³y²"ÏU䩊n¡øèßiþ"'ÿJ;8rJr¡TÙä”䩟wˆ(ý r„òDn·[Ø'DM®BþSþ[ÔX+Em±RÔ+E-Ñ(}-ì�*¥{ŸJéÁ“*å„z–JQÇR)êW*EÝŠQúA#§ôs9¤ß§}F©©éKé;¡ Ù$f‡ìtò|‹NÁäpòBñ¾ÞÈæGÑ9=øÏÒÿñ?ýñúë__ÿþúqªÓÿÉ‚]P©Îà/áä$Õ¹ƒ¦g Õƒñ¯Ç/´;ºRtRrúj¥ò¾Ðn±ÁQ)š,UŠ5úD ”íA« âC¬k0 £ä+sŒ Á £B¦?0iª 4Ç �Ç`̬+c•=± C{~*^ˆÁȪ­¼Vf´ÙSÑ•GÎ`f•™™‚Ð~ô ™Ífö)è€tƒLy(4\!ûLtAS…̼Ph·Bf$¬¦àŦÔ€}&$¥’Àž-ŸêE –�ƒ÷Éý³¸S=ö?<÷ ü®þ'x!lª'bBX?×Wq„·ï¥vä£âfñÅ �‚ùIj½Q îIí�³¢§ÏL T�#FSÄT�™"/ERª§)1ˆí!~¡ÓZ*ÄÝNdÎFdÝkDóÆT¦Á&È+v^S=±à …ØS5] á-é ßåf¬îj�9ž ^?Raùó/ñ®¥^%;À†ä+nø-íÇ]JHµ¥buL=îíÖDû�×ó°Ý¾©ÒÉ[£H5:‹‹Åª7?8l§Z¸Îý:÷{vJ<õÌ™E¢ß’æ^(ý->¡¤p¦ÉÌÃG˜YUy³¤zJ~4­ÁÝWZ!®!6ˆÎtTš¿È 4—•M¬‡™õ�3ëgÖ7ÎÍ ÜÑlžðÕ¹×[]ý3“˜™I̬Rñ¥ö©á!eLGËüp[NÁ¤É.lôYX{^˜¦Á…ipa\ˆ–‹˜±Ól° Y0º<Õƒpà“‡ª^ÿ—ÃD¼ÏB±+g—©PØÐ Åsw£´Tôµh- Qþ[Zdt�c£´ÈøÁ¤Ù•k,È^8hñ8¼Þ§`RâPrîËfqôãÉ®%ô.[*I¤Ð¤=ïl„Žz F1•ø)šî4Á££O œ /C=v�awßÄ�ƒ›Ò±¿íi§¤ ¬«a=Mîε«ÈÜ“¼!6°>Šô2#™G20Sau6Oï(ïóÊÝg8Ðì ÐÿˆÇ ™ˆÎð¢õÆ¡âãqp ×2âq”øm]?õ›rÃ{Ûp›NìyùÞ”(â´ûAffÇh>ÏÄtPè´ Ëà £ƒ1SÙzƒ;™8�Nf‡sÇRv ‚VlöÍ&ßlî'|þgúêsW?©{­ˆâNLÄ¥�™¼”´Ø�Aï1’ÖLºÀDúœDnºnú鸩ګ“FmdôìààÀN:ÏîEɶ;Á¯z.–ûUC›Z¹�DMJФ:M„Â~Í8Œ”:�ü×èÐÒƒÚ��žÅ¾Àþ<…žo9Ú¥W!ØÑ!êÚ’-ç°B\î7&òW { PAmŒe²Ê±­<¸ blƒûÎÖy^b [¡[q�¢SÂÒ K¥ØÖ‘ÀVç¬CIxb‘ˆ¿•Ü'Ú#IaXT'“Ž6;�é5`†és½÷Òï%*„y¤ Ï -žTLX¤@âe* |ŠS´Ì‹€ß6«Þ€yr¿õ6¶75 ZD¥ú—�ƒf1Û¥¤ðPÛŠQü¦Qúèݬ{`Cü‰Ý ±Nîäj®Ý‹ß*,+DeUÀïÈGq÷†gxlÒUÀ½“· à:Z÷à6·¡dÎÖÓ6Ü'ãY…K�üǤde³Ç”H#q:H£X'ãø5áT)¬Îq²s8ATã"°¸·ÄŸàê*€âÛ³Ý�U *XÙ &%ƒ+–¢ã–2ÎýD[¿Z¬ ã!.°ôz¦ã2W1 Ãz·@ØÞxbüñE­/w V;ƪ›³ †GZö‚a7°ó”êÎ;Æ£új[ZpµŒV©XïuÁ´¥â ]ÀŸLÍgŠÿú©ß†â[ÔÄ;÷Âɨ6Mvt>n«»@fîHå#úv¨pàNç‹,]@ÓÁ†‹;æ¯u@–Óüƒ�.œüEêg–’0Ÿ) ns‹ .ñ7Šë<溩«½ `µgrêÀ\½ ø]‰93e®2´ö†GÔ¿6žÐð�B¿ýÃÕ[™K‡æ}¢ß›[»k%5£cÜîÁ@?/¸ä…àŸc»(y¸‹.÷ЉYr‚É5x¼ÆÉ±­‡ý_ÁÝØ}¥Tl2•c¥–½wØÑ3Œ[ªa�ü[q¹Íf@s½Ê3ê}+žÑ´¢ây3=/Æ/ÙŒ¯J¯XPb‡}ü-é Œ–ë�F*‡s‚Æš7=ÀÊýEŠÃѦblËvúi=šÛÿ}('äúŸ¿÷Ú#p+'Ô^8K h´c8Ýò5ŒŠŸ™†�*DpÅU(Øm=Ÿ)M~™’Ý,VEgóׇȦB8È5×»Åìî¼Û*‡ÝÖ̆è™Ü{Ö0:0 âûdóPçHлÔY@f–Uႎ§™ë¥gø·cëy|ÊFÀâcŽ3™·îpCPÃ�‘Ô6N–ªp�=¦Aèq-êr»£þ’ëAQÀ gpÍõ5 áâÑ|æw¹j, \Är–cs›ë­/¬†ÖO,©¯©»Jn¸dnøºê è›îø›¬çÆa]vŽjsIøv¨Ž±?°°¨Í²ÔÇ?€¤ â�- V-ËÚ!Ð(4ˆð VZ EœGn„m€ßLš@�v÷¨H› §Ï¢�Œ#] C>²}•,æ Ãu‰.€\õ0Œ6Ú"‡6°P³Ý'—á ðl·¶M¤ 6›àÁ‘æ÷ó2ކ.»Ù ~\`µàF„3›3œJU¡5K÷s Â�5Š4æ~u*Ó^‘($p†W…C½ˆ’a�Dw>î!€FòC…ä�À¦Ô‡{žc5І’‚ó:ž£¶f›½àÊ)st‘gÇØTËÄÝ1Öðò *®&ç~T¥Xã•C•çûg�ý‡z=©Ûå5ŒÍ­ À.ý@­± dÔ–»roL`w®à È:œºÆ¾H ²b4]mµd£È)i„uÓþ:…=>*®B”¼9×@Øô`•M±À–)Þ [aëU]?jjnE@ÐFÛ :Æ^œ5\^8¶nfë|JøòŽálÙ0Ú¡Ý1¼§Ä ãÍ^U  \«‹ßOà쮓ƒ�® u  –v€˜Û!€b^§z�¨§è(Lt ¨Wø·ç\ÔgÂÎîP¯ðïÁ¹ nþàJ °Û<TÐJoÀ±©BÑž�ân§FÏí´�ÚÞ0ÊØ?1ng&ùïc½®ÃÕJ€ãÂ!€ºà.€²ÒºÈuo8k¬c°Ã…¾(„“ £þ£Ngä`…3Έω÷Ã(CãþF§“£Àcçhá«sñzí:8û}]3ðÛÛØŽÜ„íõH[€�ŸRq›’»}Ãp²Ï|ŸÃíJ8¡¡bl³Ë¥Ñá'æÌÇ æþ×ÅRl¯ÂÆ©Î"¼sM*E&+E �Öïõº�føV–#‘ŠS׳ŒÂ+£pí¦Pì¬6 ×8Œò¦G?ÿýv�C`iÏ©Þ{P�’xJrz�õÁ„/>é™lzÀ#›*œñ�X1FÁPk(°!…Ž¡%ußGÊXMY‡ÀõlW3‰S&jìË_ž¦æï3ж.Ì_}� 0òضä*¨Ø9cõ©žâ—Ô6²{½�AØ G¬åØ*‡~Šö…=Â’Ú4ôÜvj=x. õÆŠÛîOGÏ…}ýÒ7‚ç‚cËŒYßæÿî&4ÖBn•fjcÙ²Åð—f¼²Qרù·´®çŸ€r£c� .؈IC^fÚ6æš” <Óæ1÷ó\ÐoIû˜¿X¤`Òffr3¹/Ì0±ºûCËeÂ}ðB­²÷|˜‚s|*�°Ý,}' ¢è¼¶Fq·tßý¶ÞT~ì{Û6[D'öE¤[¾Èœ¿¬jc»YޤÀo?[àeû\Ñö¹0ɽŸs¨3Ýñ»°0wcß­=°ï×6@žå�ýñäÀþ©�öžŽÁ¹°öGüó’ƒÔ‰û3®ŽÁy­¦U&Z%\Gý”¤ŸrCB‹¼”È$ߟÃCŠ-¢ß#¿'=¥0»L„ºMMbúì\O Áƒ,G0�Ï.鯘 ÿðpþÄ?{—ƒs¼Ä¯ß‚¯”çç j*ëv’{;a"“~JÔ"²µei�Y[g~.ZD6Èü|k‘U‹l“AO)“Ñžþaã ‹?*ÎðˆÑûŽ_Ç ±µã™?•Ò1X(=°¿RÚïH„JYêM~.ÈEÀ]ººpo y¬é `‹·á�¡œ²]â¥=Ø…ðêHƒ(§§ÁaBa€.°øŽc ó~>üê@®ûØåÇŸ59Ù¹¥ŽÏÑñ‘íëý6Øñ‹ lÕº ¸‡7^ÜûEÀ±_|cº¸ ¡W7LßÀz‹ÑÜ�•ò\ñà-/_¸¿­ä"àîG;8®@ÃþÜÓpÙš¸€í‰W�+  à:®îbæ…»Ëóî.Ð7n™ß«€»ãï"@Œ¬ @)û…ç‘Ôb€J¡„ Ý]Ãc�æ}ö='ÝË)@ŸXñǯ€’0; ´s0TU:fþv�sRúí“¿˜uRþk?�ú¤ü×(¼ßxô7ƒ7š&®ä>T ®¸éÔ–7:£ìòÆÁ2q§‘´·Â�o1�|˜ìº/;@ øÁ2£å yÜÎK³�%íÝõÖJ Ò½ÊÏxé$@Ò°ñ¹;en3™ ÷1Ù~I;«ÂÍ­¸ø§†]`7fÙ]Z{Ãx,èîÆ‡‹ì‡ww4^seÑë瀇ڊá@Z±›Ñmí{²ì’‡�iøçÕö«‹¡‹f…«„ ƒîBaÚbƒœ#Ûp†®úÉÝ ú ÷ÿ“ûcså MªS.kÔ]E¹wQ‚”A´M}ŒäHƒÙÒzü¬ ˜�ÃMü§ÏðZqÃK?HèÓ +F÷¾Øæw<, ¥ä—úº»¯hǪص5î�k¶Ý‚RÇÆxžeá?}n�³ë�DÛ8û˃'ÅfÜ84ãÆýïäðãËQ$`ÇÝ$H—Û%HÇÝEn<…tÜ]$ib]„Ø@!}{!}{!fÒDXßþ'ò¢QW€êþ¯b¤û¿Š‘îã*FzÁ«Ø�â‹§��î¿I°î¿‰°î¿‹¨ný—éÖÉ‘~¸Ëå׫@åæqz¾tÅÌß{o´’ O“ã c�{a�{ÑÝëÿ»ˆnû¬ÿï"ºa³þ?=^µ5*|dÈ)B>º‰°öÕEôSXÓh"Y‹Ì·D„Ä¢òÒ"ßZä}CDwÕOÙnˆ‡ ˆ ¼kê"ãÏôü!½i—›òö|‘ã�Û–çBº¦.—¦å9�®Îä†ç4ÎÔ1mbéûE# M¬Ì‘G÷hbLeá9¬Ãó‡„ašØô½·|)%«¨ˆ¼†ç¨TUä¾GÚÛw¹qW֛ĶºÜwXŸ µºÜv«xü#_å]ªfv±ïL)&6ÒwMÏa\^ÝëÃOÙåòþ¨ï;rß?ݹ£rKÚÛšRü.÷æîD3¹¼mý<&&M¬ˆ|÷±�>*¾ã3ªjÚåÒîP0G¡Ë½~âsÓÙKÿyîÓA¶÷ó[«k»£®H5•žiø®±:ö�´+*=_ZŒ¿ëýt²‹M{±”®óÞÙ~?UÍeZ¢ù9Äù!RÄöëMbÞ]nÉ/êÇ6¹ƒþÂù^{˜u{˜ŸËözú;™YÎ÷ìm÷�bV½ìB ¼<×ýoRíwynÃö\Õhúz¦Ÿí™T‘öwÚgJK/­ï×sùÙÍJ©êEõýz–¿¨º�ïg\öáJ5Íïçò Ϩlî›~×÷ógøég ±‡¬ùý|©ô½OöÿJjœÙåÆmLÉt®Éí3ä礙÷3ÏùT5¿ïµ¾·¶†"òS†��Úø"]—û™÷�ÕÏ[«nDoj…û@4§~¦{È­Îá‡*jÝ b}ªò®Ï1|?'¥¥õ_ïÝ¥X~Äç tYÎBü<õä¤?Å£UÌö—]—ªEoû|6ÒEæ&÷–6(umTåÛ³D@Þª1ìbÓ&-.è š‰Ø@§y�NWvú¦¿Þç)‚Ë2R×>PgEÄSÔC´ˆê²ss+µ&_÷4ùº§É×=MªáäaOQ#Nn^±VÂûžÞ÷”ð¾§5ž"ô)ÚXÖ{JXï)a½÷uj”>EØSÔ@þÒCÝK�/=¼tgûÒ=éK÷¤/ÝM¾tWô’ýÌK÷3/Ýϼt[."úEª-¿t{yéÆðÒvùÒF÷½H£ÛE”ÑQÜ]D]ÑOQF·‹(£ÛE”ÑU%¡E”Ñí"ÊèveQ»ˆ²¨"¢‹«,j‘õÒõÒõÒõÒõÒõÒõÒõÒõ’õÒõÒõÒõÒõÒõÒõÒõÒõ­-ê[[Ô·¶¨omQßÚ¢¾µE}k‹úÖõ--ê[[Ô·¶¨omQßÚ¢¾µE}k‹úÖõ--jÍÒ¢veQ+»¶ùQµ²k›eQ»ˆ²¨5K‹ZÉÍΧ„Qµ‹(‹ÚE”Eí"Ê¢Vv?ô!¢,j‘¥W3W½š¹êÕÌU¯f®z5sÕ«™«^Í\õjæ*W3W½š¹êÕÌU¯f®z5sÕ«™«^Í\õjæªW3W홯Ú3_µg¾jÏ|Õžùª=óU{æ«öÌW陯Ú3_µg¾jÏ|Õžùª=óU{æ«öÌW홯Ú3_µg¾jÏ|Õžùª=óU{æ«öÌW홯Ò3_µg¾jÏ|Õžùª=óU{æ«öÌW홯Ú3_µg¾jÏ|Õžùª=óU{æ«öÌW홯Ú3_¥g¾jÏ|Õžùª=óU{æ«öÌW홯Ú3_oxæ›¶¨M[Ô¦-jÓµi‹Ú´EmÚ¢6mQ›´¨M[Ô¦-jÓµi‹Ú´EmÚ¢6mQ›´¨M‡Õ7VßtX}ÓaõM‡Õ7VßtX}ÓaõM†Õ7VßtX}ÓaõMÇÌ73ßtÌ|Ó1óMÇÌ7�óéžMçðl:‡gÓ9<›ÎáÙtϦsx6™Ã³éžMçðl:‡gÓ9<›ÎáÙtϦsx6�óéý›Þ¯±éý›Þ¯±éý›Þ¯±éý›Þ¯±Éý›Þ¯±éý›Þ¯±éý›Þ¯±éý›Þ¯±éýÛ¤-jÒ5i‹š´EMÚ¢&mQ“¶¨I[Ô$-jÒ5i‹š´EMÚ¢&mQ“¶¨I[Ô¤-JïÚô ‹Úû»éMB›Þ$t!/’v©÷mzѦ÷]DHqui¥éê­F›Þjt!¥•Ö­w#]DÈ‹dЖ6½aiÓ!þM‡ø7âßtˆÓ!þM‡ø7âßtˆ“!þM‡ø7âßtˆ¿ˆèI»Ô«›^Øô*À¦W6½ °éU€M¯lz`Ó«›^Øô*À¦W6¹ °éU€M¯lz ˆèI£Ó ›^(ØôBÁ¦ 6½ °éÿ¦ã÷›Îo:h¾éˆø¦ÃÝÛ[·´·ÖË[ëå­›Ñ[«î­›Ñ[k÷-›Ñ[·‘·®¢·no]‹oÝÞw*Z6€rJW2”Ðk"³yq‘Uݪ�nÕÝûªírÕv¹j»\µ]®Ú.Wi—«îÞWmº«6ÝUwï«¶îU[÷ª­{ÕÖ½jëÖk,›^cÙô˦×X6½Æ²é5–M¯±lz�e“k,›^cÙô˦×XŠˆ~‘4:½ ³ée˜M/Ãl|f©§œ†) lËÉUŒlÊØŽ=Nð…M„Uxàùq[?|R±‰¢‰¨ˆ©^‘Oá¾{‘Oá.]‘OáP‘OáÃU‘OáýO�O)—l>Ær!®©å‰?î˼ޥ˜Ñ]Šcþ åJÌøqðõç3¼Š±29”3aqo~ˆàÞüÁª:D¢Á]õ!’áý‡®Ù«ÈÓ½ò�xé÷àîñÁ}ß)ïj"çÑ  ÿ ZdÒ"I‹ÌZä¥EÞZd•"ƒÖË õ2h½ ú‹‚.‹�yêŒK‘Q?eº!¢¿(ê§$-’oˆè²Ìú)‹yi‘o-òÖ"?7D´Õ­ú)«~ʦŸ²ÝxЬ£åA¶Îþƒ[g¯báytÔéóXìß’·Þ»‹Ýà¡pûqáŽÐxûqã!)r£Fe_¿è¾~Ñ}ý¢ûúE÷õ‹îëÝ×/º¯_­—AëE�Ë õ2h½èqg Z/Aë%h½­—ðºÛ²Lò†ÐÍ–e’7„¦Û�›îÅÛ�‹Zh½ÕjbµEŒÚ"Fm£¶ˆQ·”Q·”Q·í8-“Ö‹ö­–IëeÒz™´^&ª—ᘺ9‘ˆCdº!òšòs€Ñ—Sî§œÌÃ/‡Ü¬_‰¯rl"ƒþ¶AÛ Ë.J8èkµt5úÉÃ�ïyïC)¾ýè[w»ø�·¹œbùXZÄbA+1h%²ËN‘0á+ )þ ©ÄðüIãóGt’»Øú^ŸQtxn¯…Ü ÔÄÆç4äÝö¥˜Ô¸ôâ ¯ÇÏó¥,dÔj²»ì~úÑoøQ»ÜOÊýžR&7Žå–x)Ð)·.‘\„rÈI››ž1läN¿CŒß/tˆÉº)"ᙕÍXTÅ•vúýÔi˜îÔà¶{Õ¼–æ»óùQë{IßϤZp|ƽFÕ¢Ö7¸€å REÑú‚oU”Tn7_ȽQ§Ü8oÏ·j »ÜFݶÊ2ïïç¬z—rIߨûª¤5š¨i¦çë½w Ê¢’V|ÖÖ´‹Œ1=7õñ»Üûµ’3Ð.re±r=v¹uewÆrR›Y+b~¹`­tºË}—�ìÊ´ægˆ¯ŸgT#À.÷ãó¥lf~Žaw#eÙå^)=”vw¹[Ýͼ÷%óJ®H=äâ´ýô;°©\™×ã+¿¹´„7^E<Ŷݧ×+r9–ëoTw^ä–õ™õçæWþî7”S¹›j–Fl«”#¦ÒÄÝÖ]ŒE¿è¥=Õ—.KÙg�øÖ×Snx'éÖïb1ÍÏoxKÞ)÷ý³h¿t—Û¶Dîú=ä¤J_Z¥ßZ_ßúEßúEïç~ž«òߺŠßºÈêFÉCL~¸#ì 7¾ûÇÒEA¶½/”“ºú±‰ýhýè/ÿÑß¶êÊZuYÖ{•µê"ƒKÙúÊä>øCêÆg¿=%\í W|-æ!¶½fíµ¬÷ê~ÓúÞ´"ÁýuU* :èDo°”?G/Á=E„³&/Áý-¦•À/Áý-v£\â)7¾N¸¢ôžÜCDupED¿Hõ3/݉Ð{rÕ _º²{r ÕÄèÝ´§ˆ¨Ez7í)rã)¢Šèõµ‡ˆ²…ónZ¨Ü]DU4½›öQ}ÞMËÊ"*ºÜ*«ß£*ºˆˆ*¢WÆž"7ž¢*šÝ]uˆÈŠ~éŠ~éŠf["²¢_º¢ÉÅT‡„¬hv:æ)¢ªˆ yŠÜxŠªhv¥Ô!"+ú[Wô·®hv_Ô!"+ú̇A‰ì&×CBV4»ÆéQUÄ®q:En½ñQæ¢Sù7�Ê¿éT~zGâ!"-j–k³›ämG î¤w$"Ò\t �Ý‘xHHsÑ�¼Mò轄§È�§¨*Ò�z]à)rã)ªŠt¬�^:xˆ¨KJ6ë£÷"êzéà!"µË.{Çòt!=îâß.DÏôèB鎽§ Ñ»mº½@­ Ñ»E»½Ú­ Ñ».»½³¯ …;uîÔ] '²4¡;jºSìí†wóÜîhiÓ¯“�»Ã¾ ˆ³×:•·6Êáw”£/ Ü™Ïxí"¢¨“|„v,'íXNÚ±œ´c9iÇrÒŽå¤ËI;–“v,'íXNÚ±œ´c9iÇrÒŽå¤ËI;–“v,'íXNà Ü´IMÚ&i "4RDÄ#¢l ý|N.¢>xQmhQmh‘4É6´‹¨6´‹¨6´‹¨6´‹¨6oT@Ôª‹ZuñAÎMDZÿ."k:ÊiÕ.¢‹+§U»ˆ¬é(§U»ˆ¬é(§U»ˆ®i9­ÚETo¹‹¨ÞrQ½å.¢zË]Dõ–1J¿gÑö"'g»ˆ¶99ÛE´½ÈÉÙ.¢íENÎvm/AÛKÐö´½m/AÛ Kˆm"£¶—QÛ˨íeÔöÂ.jì"Ú^Fm/£¶—QÛ˨íeÔöÂRY»ˆ¶—QÛ˨텥§WÁ“ŽN—h³Nõ�R,餋ÈòÊhQµ‹(ƒJ5ÝLòkôÌ)é™SÒ3§¤gNIÏœ’ž9%=sJzæ”ôÌ)é™SÒ3§¤gNIÏœ’ž9%=sJzæ”ôÌ)é�|Ò!ù¤CòI‡ä“É'’O:$ŸtH>é�|Ò!ù]DÛ‹ô“ŽÚï"Ú^¤ï˜t`?éÀ~Ò�ý¤ûIö“ì'ØO:°Ÿt`?éÀþ.¢íEúŽ»ˆ¶é;î"Ú^¤ï˜é;î"Ú^¤ï¸‹h{‘¾ã.¢íEúŽ»ˆ¶é;î"Ú^¤ï¸‹h{‘¾ã.¢íEúŽ»ˆ¶¦K:L—¥”¥”¥ ”¥{“¥w“Ifu�ým–Ým–½m–­4ËFšIÖc˜UfíÜÎÚ¹�µs;kçvÖÎí¬�ÛY;·³vngíÜÎÚ¹�µs;kçvÖÎí¬�ÛY;·³vngíÜÎÚŸ™õ6ë^k¢IZ$k‘íhÖ�dÖ�dÖ�dÖ�„íî"º‘(ù5ò[ä—Èï�_!ºàËãNÅ¢”õRôa ~PQÅx?dGý~ÈŽúý�õû!;ê’»¡×ñ‹”N–(R:¦Héº,Rñ–Tº%¥ófŠ¿;é*vGêž^ç{Š�ïiv¾§Úùžnç{Ê�oj÷¦Þ–[b÷¤”ÄpËú‡[Ö?ܲþá–õ·¬¸eýÃ-ëîYÿpËú‡[Õ3H é~ì"º»�twËŽFé"º»•»ˆ,w5\î"jÄÜE”_üV1÷·ž–¼µŸÿÖ~þ[;ñoíÄ¿µÿÖNü[;ñoíÄ¿µÿÖáç·?¿uøù­ÃÏo~~ëðó[‡Ÿß:üüÖáç·?¿uøù­ÃÏo8~ë‰Ö[Žß:püÖ�ã·¿uàø­Ço8~ëÀñ[Žß:püÖ�ã·Ž ¿uTø­£Âo=¥~ë¨ð[G…ß:*üÖ!ß·ù¾uÈ÷­C¾oò}ë�ï[‡|ß:äûÖ!ß·ù¾uÈ÷­ƒ'oz$[ÑmZûƒö;íw Úï 'Èu]Ó“®éI×ô¤kzÒ5=Éš>•¥Þì.uÃ+¶MéJâÆÔf—Ò[Þõ Z)µôëß•˜–¸÷œ;E_n]Ò&íh“f$·%½å®¤U:Û«Œ,­2°´Ê¸Ò*ÃJ«Œ*­rV°ÊIÁ*cÿ«œ5¬rÒ°Jo•žü*ùUúñ«tãWéů҉_¥¿J~•ü*øUúï«tßW齯2wd•©#«œ¬Òÿ_¥W¾J�{•÷*ýíUºÛ«ô¶Wél¯2Ic•Þø*�ñUúâ«tÅW鉯Ò_¥¾ÊäŒU:ê«ôÓW馯ÒK/û u4´Héhh‘ÒÑÐ"¥£¡EJGCծȡ —wvž¦Z6ò*�¤È‘C&Ð÷*ÂÓ4Š;e©‰¼¥È _4èµUY*¢ËtY‚.KÐe º,£. =¬¯‰è²Œº,“.ˤË2é²Lº,Q—…ÿÕDtYfù‘ 0¨uóA­›jÝ|PëæƒZ7Ôºù Ö͇²¢&?ts‚"¢¸ß° ´CábB9+ED |‹9’‰H�|k�|‹i’‰Hà®Ò.À=¥]€;J»÷“vî&…~(®º""ªÎD¸ÚM„«ÝD¸ÚM„«ÝDxË3ÞöL„·>á-ÇDxÛ1n÷&ÂMÉD¸1™7'áe"ڤĔÈD´½ˆ%Ñö"Ö;LDW£˜:í"êô‡S„?EêE¥yšˆÔ‹Jó4©:µük"²©4O¹Q²©â""‚ö&"‹[ý6pøë.2>7Õߕ u¹tSNå‚t9Ðîr*¤ÝåÔQB]NŇ›œ<è”»%¦&¾]îfu„›ÕnVGPçu¹›jwÕ¬ñ]NM¿›Üx³Únªy¼YmãÝç©hD—»Ù:Æ›Õvóq7DnÖëÍjU ,ßò Ù]DfÍ~ë¬Ùïž5ËÊ"³f‹ˆ-ÄЧ̺¸¥Óë‡ÈÁyj“ 7å„Èëæ+_7_ù’"üΓ*¢¼žoq-J&qÞp¡ëW‘¤EèÁúU„¬_EèÁúU„¬_EèÁúU„¬_EèÁúU„¬_EèÁú&"]š""¦&¢º‚MM LDu»w�M„»À&Â]`á.°‰pŸÒD¸ ¼‹¨ †‰Híª †‰Híª †‰Híª †‰Híª †‰ÜÐ.Ÿ`˜Ÿ`˜Ÿ¨›Ÿ¨›Ÿ¨›Ÿ¨Ø1h/á¹åŸoÔâãsy¿íÞ+>n]å˜wýKŽøK¿äˆ›s•‰×t•k‹3Q}/ñ"¯bdQë*–ˆÏü'¹;bdÆñKŒÌœ®rl×ÀŸän‰Ý|-™v^Ånˆl·J¶• EHå—ÀÁ@<Ý&²ïò�mî�}ô)ûèSöѧ죻Ȣ¿hÑ_´è/Zô-ú‹–;_G�.òÒýÒýÒýÒýÒýÂ�žù»Û.‹ªü’#óî_rÁöõ&Ïk¼Ê±°ÀU.µ{6ÔóR7妛róM¹×M¹Ÿ[rù¦^òM½äv/ˆ–»§¿|Sù¦ä›zÎ7õœïê9¬·äØ`wÈMá9Þ©� Æ3‘mº÷(“»Qe&w£ÊLîFU˜Ü�ª0¹÷M¹Ufr7ª ßðuŠlõ¸ôè]Et•šnI¥[R·Úu‘»ÓnÎËtåóæ[¥[n>íÆ£^7õºU°×­¶°õ[#oÈÝi3En¼)w§m¹xSî^õ¿nµÕ"·Ü”»Ó‹Ü�6¸=¿oZÁû¶Ükù¹ù´Ÿ›VõsÓª~nZÕÏM«ú¹iU?7­êç¦UýÜ´ªŸ›VõsÓª~ÂvKn½Y¿ë-kYoje»ùÖíîóÈÊY—#ç.ò:o³£¯| ÿr£6¼Wx—Õµ;bRd»#r«ðá¸Ôý†Ü��,ÊЭ¿ÊéÖ_åîhíf%Œ÷*aÜzªí ¹;¯½YãÍêoVÇx³:Æ›Õ1Þ¬ŽñfuLñž^ŠÜ­ç¥îáI¹{ïÍ=”©ån•/ß|ïò¼õ¸E‹Ü3ø"vç…ºsÚEî}âÏMÕþÜTíÏͪßån>ï†ÈÝO½g½ë½JXojnÕ"Û½7n7ßx³Ûœnv›EîfùîÕ½8§›=õt³§žnöÔÓÍžzºÙSO7{êé^O]ØÉ*ÌUŒ¬®\ÅÈêÊ)�•$%wCäΤÉänÄl¿÷ºW´t+æ`r7ß{CäÞ§f¶‹í*F–š®b÷’ûŽ*-wó½÷œïˆÜSÜ|Oqó=ÅÁs N‘åÞ —{/\XÖàUŒ,Ï^Ånu ðȃSä}ï+ß÷¾ò}ï+ß7Íö}ÓlßwDî™ÙûfWôsOo?7¿ôçæ—þÜl ?7èÏÍð‡®}ÿ’»e?wDîÕØÏí{ßú„õ^Í®÷ZÄzÓV-²Ý+Øv¯`Û½¦ºÝ,ÿv¯ãÚnÚùvÓη¾%VÊÝê0·{žÔvÏ“º·ôÑän‰ÝÔÝ ‘{mk»Ù¶¶›m«8¾÷äÖ‘Ç"w'âir7¿c»ùÛÍïØn6 –èóKŽäý’#Éý¿äHÚ!‡ïó:D‚Á."“‰Z_Øuˆd-2K’ÞÜEHbr¯K÷^â)7Ü”SK÷»ÈK‹”äI7Ÿ¬‰�´©Cfu |¾Õ!ÓM›ÄkìC1›M›”\ô0)¹°d}Π”*§G”*G‡”¹eðac2 ²�¡I�­ M‚ìThdÿ@*^O5ýe-“ å0 º®T$Õ‡IP}˜„,GÐå ›%ªÄ(Ë1’MUbR*e\7 ²•¥Iè·�]*M‚lRi$)ó� �K“€Ù‰‡é~šÌMld“K•ˆÒÔ£4 $ y–o‘/™eÕÎúÒÒYÐE¶¸E–ƒ¾@–ñ%Õý’Mé%¿â%¿â%Kú-Ëñ-û�·¬÷Yg?ò[Ø^»*±m?¢Áî¢9nÛ*:Ž]B¾eÕo�Ö‡ܳsHÀÍ6‡ñlšÜ$Ó%6©�Mêc#Ù×MBêcƒÛœ ©± nr:$à§CBj�yœMBÖ >Qõ�@5Šw”{N9—@Cà)Qê69>ú)!Ê1]ëɃºØpGì†ÌxC¦Ç�œné·Ø�gÕî)9ó¦?‰M÷ž[jÝÅî¨u»£Ù]ì–rý/ w¿4ÝË÷Äæ{b˱|¯ò½ZÈ÷j!ß«…|¯ò½Z˜ïù�Gá=‡W±;¥"Ùä¿Äp|î—ÏýÃQ·_bxÎýK Çæ~‰á�Û/±{º�ïõ¶³ºØ�z'‹7¿Äî©—\äõK GH~‰Ý«,r‘×/1Gý%v¯NÛ´'�RìNe-�[½Çò¸Õ-ìbw:ç]ìNwºÔØá ±ï{bï{b?÷ÄÖ{bÛ-±áÎÀ±ÔÓoˆÝ«úá^ÕwšóRO¼!vÏB†;Ã÷RO¼!vÏÞ†[†Tšsl×/ªµvááF8üÏ�ÿ3ÂÓáJЯGÝd%&¯zÊ­»ù´÷-±Ö#K±{e»¡�Mwhò|J ã)� §š€Ÿºá¡‹ÀMbfG©žTs‘gü8ÏøÇó§Çÿñ?ýñúë__ÿþzBÙíOè°mGù”˜_Ã8…!}=þ>à‚§ñ+M…Mã×£À�O38>šhƒ¡üòcèop‚%J‘=61˜Üõ&ü1GŽÇ™ã™ã…â‘TCÁÅXDg;†¯}öÿ—ðn8ù’Ù³›õ|´Mƒ‰Ãáaì?¸â´Úm;ÃXƒŠ�¾QXúš¥#¥‘|§C˜9_á‰>=™V^vK™Hkù+â�gR_óƒC³|²Ö>³Ö>Ï.Íæ?î|hp°¶ 0³é…õˆ é×B±gÇØ‹äU�áòI[(QT GÒqŒäSÙ ËXõ˜�•ít¯skžµÐÂ.{Ÿð@CÎN§�ñè:>8>—óbbžŸ�'šÇ\$Àæ”ÀA¡‹ Œ]d`8è"c1�á/Ãg{ÿ-5Ü’ 7¤`xä"o•*Þ*U¼Uªtë�éÖÓ­7ˆÍE†k.20Vs‘��š.ƒŽïïâXß~~Öçç!´È¤E¢IZŸ}{‹~ÈK‹¼µ>ÎµŠ g„WÃ&²Wã8�³Á±%nÇ©¶DŒ¿ëõ�Ÿßð@ëCìý½>7ÒšØöýý 0\ÚÄÂ3¤‘$Pbqžß¤jb©œµ¬_ÊôvE®ÏÁmbÓÞzÂúÌðÈæSn÷i$LJ½È¥@Žî8åâ«w¶\.¿æ~‡ •{ÿ¬ÏÃ䇜´Ö?çë�FúÛd“~œ ~Ší£RfzNËô„ùÖ‡Ô²þ<T &ZðLéÞG‡5>#éÊ»\ÜÿéuCnÞ{ýå†Ü2MÏo¥¨¹ì²‘ƒ;O¹­l%Pºš÷Ñ`oÏZ,NóÞCH±¼±<òCLšæü\JGªÍL-x~~�l×Ð!¶Ý)õò~9Ù×nERl~'{S±‰ìÍ8¤˜._ÏøC›©ùµôd.&Æ_õ.椬ýõ\_+¹ò¢‰}Ów•£ F²™ã›òÏ>,k±×›Ü—pˆ1ƒ{?_‰Ü‘pHý<’v~è×—Tòíù‚ ¹‡{ÈÆhÐþN ÊNA¢Sãá‰.e:Øã§'º_ê�0Q�4r-‚‹ŸSžYtÙEì=ô\&¶ü„~ô=ã¥^ã"ûó@GÒ@GÒ0×´(¬= Ø™ï˜.O°¬qpöë—ø5íèíšÂûÉ óMM~ -:Ð=êä¨g�£žAŽG&Q“ÌQO2G=Éå$sdy燈š‡Žzº‹|k5UõTµ¸NZDVô +zÐ=èŠtEº¢Yу®èAWô +zÐ=èŠtE]ÑAWtÐtE]ÑAWtÐdE]ÑAWtÐtE]ÑAWô¨+zÔ=êŠuE�º¢G]Ñ£®èQVô¨+zÔ=êŠuE�º¢G]ÑIWtÒ�tE']ÑIWtÒ�tE'YÑIWtÒ�tE']ÑIWtÒ=늞uEϺ¢g]ѳ®èYWô¬+z–=늞uEϺ¢g]ѳ®èYWô¢+zѽèŠ^tE/º¢]Ñ‹®èEVô¢+zѽèŠ^tE/º¢]Ñ/]ѯZÑ"ÌÔÅD±‹‰ØVq©.v£øü)Ó½/œî}átï §{_(ÛÐ!BŸ¢ ÷¥›Ù«63­§tOOéždÛ~‘û´‘ù^Ñç{EŸïUñ|ï e×tˆˆ§¨‡hÙ{½jï¥5ùº§É×=É.óE.¦8Dd¯úª½ªþº÷½¯{ß³“÷=%ÈÿEN¨:DÖ{_¸ÞûÂõ^ÑoŒDøðÿ*2éXà¤c�“ŽN:8éXà¤c�“޲C*N -¢Úõ¤c�“ŽN:8éX`ÔuEG]ÑQWtÔuEG]ÑQVtÔuEG]ÑQWtÔoUô¦DôT$ê©HÔS‘¨§"QOE¢žŠD=‰r*õT$ê©HÔS‘¨§"QOE¢žŠD=‰ÚÝ�Ú_ŽÚŽÚŽÚ/�Ú±‹Òk‹Úk‹Úk‹Ú�ŠÚ;ŠÚ‰z¤�ߺ¢¿uEëŠþÖý­+ú[Wô·®èoYÑߺ¢¿uEëŠþÖý­+ú[VtÒá¤ÅI‡ “&.L:\˜t¸0ÉpaÒá¤ÅI‡ “&.L:\˜ô�ô�ô�ô�ô�ô�ô�ä�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ä�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ô�ä�ô�ô�ô�ô�ô�nŒÑ›®èMWô¦+zÓ½éŠÞtEoº¢7YÑ›®èMWô¦+zÓ½éŠÞdEgSÉ:¦’uL%ë˜JÖ1•¬c*YÇT²Œ©dSÉ:¦’uL%ë˜JÖ1•¬c*YçWe�_•u~UÖùUYçWe�_•u~U–ùUYçWe�_•u~UÖùUYçWe�_•u~UÖùUYçWe�_•u~UÖùUYçWe™_•u~UÖùUYçWe�_•u~UÖùUyÒ=銞tEOº¢']Ñ“®èIWô$+zÒ=銞tEOº¢']Ñ“®h�H—u"ÝEeóg�kwaOQ Óñ²NÇË:ï"BŠ«K+-Jgìe�±—uÆ^Ö{òÍÒèt”.ë(]ÖQº¬£tYG鲎Òe¥Ë2J—u”.ë(]ÖQº¬£tYG鲎Òí"j±-ë@^Ö�¼¬yYò²äeÈË:�—e /ë@^Ö�¼¬yYò²äeÈÛE¤-è@^Ö�¼¬CpY‡à²�e÷Ê:î•ߺ¼µ^ÞZ/omÝo­º·VÝ[æ[k÷­µûÖÚýÑÚýÑÚýÑÚýÑÝË�®€]?º~d÷ò£»—]‹?ºt÷ò£+úGWôª+zÕ½êŠ^uE¯º¢W]Ñ«®èUVôª+zÕ½êŠ^uE¯º¢×;-ÇaÎ:œu„9ësÖæ¬#ÌYG˜³Œ0gaÎ:œu„9ësÖæ|#¼¹¶p=(oDåMãyìâç}Ÿ‡ðýÂ1~ ãã/ãçIµ�iøø€‹€{ègÇÉ?z°á¬8<À©  ‡àsÙððÃÛ‘“Ÿç7V˜À©¶�‚£L%Ÿ\³ ¾6§¯‡;G]‚ŸÆ/tq¥á�Ë­p‡G6J>6ÙI¹°†R=)zÇàxßFÁ龕;Ù­ñr.«o·;ž¾&Ô*ŒÎøÑ#8¶Px¦k…³�¹«Ó××\[”°pX¾Â®µ¿«qøeƧ@>Mþ¯Ã£XëÕW9©Õ:šü² TYé(†G9k¯Ø Åèó�Q=aVU2lfF¡µÛ ­È0žÜ\`Þ }AG/_²{¤t FY :e»Ò»h£ààæFa/kö²FaK1JËœÀÉß�ÖVàœÙ|òÉ= »òLJ¶T;úyð�ÿÞùÏ}®pÀX(8mºÒ°û à$à"08úž4°rí�s´Êt¿¹á!ÇÅBù¬@k£üÉàüùF±‘ ǧB36AëdH¡wLN=†+„u4ëhvXŽë‡£jÉ7'xØy¥ œ·ß(îf ÅÝL¡D[ø\úJ3}UÅFmxB�vÅ1�±¨á™âÜö0äzUª‹Ì\ç0ÀÃÆ+l.¿¯²‚‰qÎlF`x÷¯qïÙp�:_`¥Ì6§07ƒ dò„˜Ð}'÷ï88ò Îà–†�†©™Oí]£«6v:õ³Ü!ÅM¨Pl…â÷Æv¯Ã ÿ:užàÔy:§ÎŸ-¨ÂaœÐÝ ] ú“›ƒá´ ” |[¾·‹8ü;9*SDÆÜbD¾ÎT'¤û°‚ëÔOæóÛM^s®ØZ‹ß¦ê/XIÅñ.Çd®ÒŒéÐ.€ðl§c`Z O¨VžÈ»C½mÅWKÅ l+µb0�V\Têw0“¹û@‹U¾sV¶±Ühµ6áxSÇ`ÛpÃNÇ ÆQpñªÁ˜Ö1ÿu E+Q2R´‚ùÃ'0ªUœA9ÙP>03Oõ^‚RðTÃ?tÃGÅÓ€&í'÷çì“ f n%%€3—y­çãœ<¸NÎÉ'7Üqáâù“/8ùþõœ‹çû>ÜÉ}'îÂAß|pñüì/\|Ÿ?8ù,ž?»á– ß7‹úYÄóVþw(†¹õ.¸ �Þ²0Æ}|ÁÐõ0Š{„�&xáOã f[) b5Š{“â ÄÒ a‹h¾s]Ðt½ÐÝÃ#¾a<⇠{ƒåº6b»¿ÇÉrkkw#‡¶Ã3©‘"0 ˜rãa$^V` ^ZáØ vÊ?>—je�Ã^|çK±vÔ MÁ®[`7Ó {ø‘ã«€|êj»@T…¤ŸiñŠö|óúÄïQËlÖRçî¼ûäh(nX¼�i7Ã9uÈþ¬ùÄfÿŸ×Ó�°ýL�ö†A\¬á;¶^ –mÇ#˜EVúE tmøís¿ãÍmÝ—Ë,¡êcé»ð@VðGßq�ÀG8��Ö)B§=~�c�%}~Y£`°hŒ�‚€c£ Ò(õÑ(°³F�™UŠBÎ�Rm 0h£TÄŽ¥ºB3£F©®P›l”ê µÈF©®ÐU¦�R]ÍTW3ÕÕLu5S]ÍXWpÁ ~Åì]¢ymÀ 6à½Ç3º3´BxAgÃõ‚Îϧâz3±�\òL_q`/ŽCŸQŽ„Fm9Õë’*­AˆÏ�¬ÒÏ"_•™¡2›®¾Üö A ¡B0Si°¬­»®Å…»ÞSáû.»Ÿ|t]“Ê猽 ƒæÖ(hn�‚æVé:�\r¦¾à,ªà¡_/ F¶¯'��:dº±úÑ]ahiÆBåŸìZ È\‹7ÔÆà�Ú¯pôg> úvWáäû úNE…~3üfPY,oü4ãz6Þ ? 4èh…~¿[™�P�Pg~ÜÞ(¸ºÜ¸·¸ôk=GçÓ´ „690ƒ­pw‡ŸxŸjÄ(¹mFaƒ¨„h …ÍÌØðAó¿p/ŽqâⳌ|û3êF'ßui4ú½V£s� ÎÓN^j ¬Ý$ ¾Ò(ní…‚y£ ¨ÒÍþöç~t£Èõ1H ùV¯Çÿ˜}ì`¬4{w=ïÂÝðYå vg%ð˜Kƒ[Q`�FxЧõâœ7s¢HyöoIÛ,øÝƒ¯Ý!Zz;0lÃѰbØB /°£«˜ ³L‹@Œ¯à‰ÔÆÔÝðËänu ‡k£¾§Ý(îÛC�U:’ï#fù] e‚7…ê7 ¿e§¸UO¬¸¤�M¤û*1¼>ýõFá`Íú˜�µìc·ÙVŒ|ˆ�‚¥áQÎ}eh®×¨?§nПR7Xg§Þsgb)3©²™TÜRØHéð¼�×)C€S†ðG…ðsX –Þc|ÖWÃ5ÅàÓoäJà ØJÃÌ-+õVÃ`¥þÀ´äÐùêt0ƒ¦a�W|`Ћw º¾Ž©RkP㚘qõ+1°Ž�«Ý0±5Ø×vt;Ÿ~v¨^Ü|ÄŽ�›Xq@ÓÜð5À¾§n+Γ?3i¼)üù‚V¯¾³~ øyç#/Z ½ðçOüù“zþ¤>pˆ¼p¶Ó²*aVOXøŠÓ/Ø7Ú†þô;8URíΜh͉Åëg®"ÛÃ_À‹¿ðâË @9~Z€Ú¡3Ì 0›àa#cÙ4çîRºø�¹@v”œAþGƒdŽÚr¶©)°¥�yÖl8À* §ea 9†Á^‘Ã@Žá Ný+†SÿŠÁjsÇ`í£cþÝl†#Œ™ <2gXPþj´ÌÐ1ÿl�uw`$2 …80× È¨ïxæv<ÃØY8#ްh XÍêF�W‹8²·.cÚÐæ‰Óê&±PÃüÕ/ø ~M�!€ÓvLí4€s:FKbs¥ñ.1Ðnm7ï˜q‡!˜Z)ŽŠ’¥áÝï¯xwÅ{+´*Z)ïmf:¦ÖíÒã¼m†‚áž²3½üù;�c;æ :uë Æ#û툗éÊùaèLŠñH;g ¦$ËøBl$~ßHRR̉ø›»±�J3¨®‰8×}ÑÙS÷”zEºOM}”öZ…QØ7öŒ_Lñ=áSÊ:…í¼P<>Oxgo£ ϸÒ6Jy=W¡Ø]*{¿F'ö^Ü'…cL¡ØA4ÊôœX¡f¸ÈW ìwˆ×\§T;<ß3n©–ŒÕ�mÇ[Éâòú¤Š³·§ºP”ä½³Hf�6ù$õHÚl9"b©§@¸%ŽèüÀʆz°ˆûd¢Ä�‘�=’À@\ú;½_&˜Ë¬·'Ì9läBË*À¶ËÖ·8™ïÄnÚ^§î¯ƒºÇ4z‡‰Ô=,ç È+-I».%¦Ø“*=SJt]<‘(T"FXÎkc«¶‰˜!Nä¬GxAF4�É|&ߘÖ\NÌèsbzÍäû3ñVò\·"½fâÍ�ÇΤ…Î[½ýI£ ‰¬qsûIËùŽ®Qï¼æ»r šbøŸ™}`÷ÄÒ Fï&ýÚ<ØFJ”òѰŸ~àr Â8F[(<#©shÓ…Fcl£ mê½p‰�6Ù.t„y03™®”½R_¨kÃs`îñAýò;ÍŠPpêZ§ÐM5 £FÁ.–ƒ¢�¯`°eµS8;3 =àB±_n”* l¥ìº›s`ÓÍ�âpÜ S8�UßC³s× Cß®b´v¶Ó²j…üš†àBTŒŒJ‘ƒÑ(êg¨6ŠvĘk¢Åšh±&ÜWŽ_à<¹²2ÃEðÂp%~?Î66¥BŒŒú ñ˜Òk.4ÆÓÒ›Ý,Ù€Œ�à ÅÁÚz %¥p²`%�‚¬óFm�ÆË¿¯œ«Ÿ‹îõOςς/„—ý7ìù…³ç.ž¿<�‚3ý.Ê¿°ò—¡x Ür‘(9øûCdß_ Œã‘©g”�翦ºÛ1«úršǬdSM"¡œiÆ’ñggCÅÌì¢�ÌÏ0{w™²Ÿ.~?2Ý%aô©fÏP®ÞϪ¾pV÷IXµ�(!83Ü™åÖå9åŸDù'Q~Úð çå·/Êyù-Œr^~Þö’h{…‹òÓ¾£ìn¿öDýQÿv¸å¼ýQŸ ×@(g�Ïõ€ÊYõd›dpÎÔS¸ú>f^…³æQ8k;§CKáBÔ¼ ú£æ]¸Ðß ô7ýQŸ¤p¡¿ ô„þèð–ÅðV¸Ð_ú BAè/ý¡?:�¯¾ãín…Ò!žŽðyæ]•qR®ÂYWeœ¨Ü8ijÆIS3NlÕ81Ö<óµiã¤V� ý±ùyá“Ðß$ôÇRŒ ý±€q¡?0.ôdž ãBl†o\è�Íð� ý±¾q¡?¶ø`\è�->úc®²q¡?æ*úcc�q¡?6Úúcã�q¡?6âúc®†q¡?æjúc®†q¡?æjúcc®q¡?¶ü`\è�-?ú›…þXB¦q¡?–�Y8KÈ4.ôÇ¦ŠÆ…þØTѸÐsªŒ ý1·Ê8×]_1ÎõG×WŒsýÑõã\t}Å8×_`É7Æ…þXò�q¡?–|c\è�%ßúcëKÆ…þØú’q¡?¶¾d\è�%ßúc DÆ…þØ…q¡?1ÿbþÄü#ˆù]Ÿ3.ô'æ47‘ÆŒë¶3Am·ÉxÛ�öïý©˜†_í�è¥þ NôbD/öGìÊþˆ]Ù±+û#vµÿÑqÁ8±+ã\t\ÀikÉy€Ó8+ÝœÆYéž2jœÕîÂSF�³Ú]xʨqV» O5ÎõÇ:Í‚ù׳.³`þí¬Ã,˜9ë. æßÍ:Ë‚¹Õ°®²`®5¨)˜k�…i æZcAš‚¹ÖXˆ¦`®5 )˜k�…g æZc““‚¹ÖØÔ¤`®5:í˜k�?|™¾`®5:ö,4Ò[0ÖÛ^ˆõ«Ãî ^À^ð‚Ù‚jv úi€§œå¦Ê±TŽ ¡rl •cS¨ÛBåØ*ÇÖÐÏ—æ\”Ÿ˜rå¢üĘ+WåÇæ\9±çÀ}•ÊYýs_¥r¦¿…®pT.ÊO†ÌÊEùÉ Y¹(?6+gõ¿Ð{åüûióYØb af| [ 4Ì‹Nb³“Ьa^o´ÙÐ1À0/9k3ls{ 9J�æ(µ›îÀ´¢P–Jh>FÔ ; àS•�RuL,w*Lì$€P�òóOe?88Õ½s½©œØ˜qÒ7'}Ãk2Ê‚ ä(ÁBñQ‚F©Îñ‘°;eu9ºa·š1Ð¥ÃX—†q?g'±PŠ«yiŒÍ0îB &ã�aúnÜ •c\0„u-üˆ—ŠIæßHíƒõn´s£ù—´ëbÖL“/ñañ²N�öi´K›à16²z¡Ùž´» ½«OšÇIÓ8#ÏâŒ<‰3òÎÈS8#ÏàŒ<�3òüÍÈÓ7c1 É7�_ä‹÷FÀ ùÚý? ’/¿ÈwÆšzWÃxl6Œ‡æ‚#¸1¦cþîÈßù»¸ë¥c^4tMǤh¬ûŒ¬ùãc¬ dÍäWkþøüï…�ÿ] ë>ë>ë¬Ó^bÚçôÈ´—´ËÞ1:—²Ð�E= Å£¡xøÏ yŠû¡BqGT(î‰ Å]Q¡¸/*wF…]Áà d•™EefQ™YTf•™EÁ cíqfíqfíqfíqžè@n“alM†±9Æöd”alQ†±IÍ�üæ%'q?üä$|aX”÷†q×1'^߉×wâõ�x}'^߉×wâõ�x}'^߉×wâõ�x}'^߉×7?¡jæTÍ»Y(�ÿÏ<ü?óèÿ̃ÿ3�ýÏ<ô?óÈÿÌÿ3�ûÏ<ì?ó¨ÿ̃þ3�ùÏ<ä?óˆÿÌþ˃ַa\߆±Ö c­ÆZ3ŒµfkÍ0ÖÚò õm˜—œÔ·a^rR߆EÉq}&õ=Ðõ侺ºc˜hm y(†‰Öš…b˜hm 9(†¹ÖH@Ñ0×Éš4̵Fr& S­1SزH¡TeÌΘÿ¹0ÿß³W óÞæ½/Ì{_˜÷¾`~í{ï»×…½÷bï}êÇ)£çâûŒìjö`|Ù‘Qx¶ýÒo#�×éÄ.5šàbÔÄvÛOýŽNw"8ÑÝôSß/� …-mª{šQƒo5ø†áÊIç¨]vŽZfç¨m6×^:Ÿ·qtŽz´ÎQ—Ö9êÓ:úƒÛ8:úƒ©R�Ã\©Î…þ óѹÐt?:çúãO‡1�Š¡ÃØ0ÿtè06Ì‹ƆùgC‡±an40»¡an2„Òn*Á{( ÅÃZ�ð’ÊBñ 7±|s‹“°ž“ŒÃÈ Ô åæ®U ¯ßî< Ü·Æ'”ƒß8ʺ«Ý=Ö0L¼«æÿW +† �à!Z%™ˆ»]Ø(¼«´Q¸t<õ»…Áèx)bbW::0—!0ˆÜèX(scðõM™kðý¸F™ÙÊÌ>LÜì�³7Žm«bQ¼,~¿ðâÛUaŒ^|Ò, &Í2L´YLšeÁ¤Y–´^s‹¨¹EÔÜ"ªfU³ˆªYDÕ,¢j–zQá´ê^u ¯º…WÝB«®¦BJ+6>xÅÎ*6âK0,ŠÇê=>x½G|Ëfì^âƒ*~ÇTñxmoêÉlˆÒ^ ·Ã‘ ‚#¼{x‡lzZ»uðC6Ád¾€®@æÔ‘•í鋹eøÒçY4‚_°¾CVT|÷úR¯ E¬]qå–µP¬ÙB±ýÄ„Žôò¬Ø£=¨Ì;B±ÇNP©H–]¤§Æ~�!zò„[iìaødlú±mà“i-�üµHÏ!´$údÜïÄ~à|2n[–›ÄžŒýÜØ§†ð§Ø .{º‘]/o”Véƒb¿Q|ù¼QZE$ï£Pjt$ó£PZ�™V Éá(”šäL¿_Ìi”~¾¶Ó(ý¢…~ÑB¿ha]]›ó�8� xì3BD³�˜m´ËÌ!eš �µ…²±„Pâ“JËL»væ�} ʪ—m ‰tkH¤[C"Ým룴ŠH&u¤/bŸ$@Ju©®"ÕÙÒû–׿®O]‡S—Æ‘û^1œ:T §Ã)]ÅpfQ1œYÄ/ÞçŠmvúÑÕm¥#ë²h3¤­�6B²è¿"ëaÉ¡–‘eG–9Yæpd™Ã±M„ÀXB&±M ®Ÿò�ç?Æé�ÿøŸþxýõ¯¯ÿ‡?ý¸¬ét¥o[¶ýr¯´žê5·ø—ð‚á �㻑rœ Í_hpl‹¯°Xe „S»0ù³zÚâ*ü ø �-½æ—{½q…ðöãºÌB<²�üÁdÝTgø½¬âc"JLMOnµ¦™<6Á›§§êdúÉ�AxGv[mÂ�•6³Òά´;„~ðThüà~“¶ÓM4<�m² £IaǸÕÍ¡ÏÞàÃQÐ¥c03lx>^ÇÀï8 íÁ O´ä�1“�rE*d<½_`"í¡&Æç£-ZÂW/¬\ ³ú…Yý¬~!VˆÑ—kÅQ¨ªR0m¬­Q0µ7Šö·UD\`Ò§Ø"!†dt 2:Ù\>v`¥XiÒÓ6Ä6ć�J˜¡tKñáÀ`ûÎÏÝJÂhiÃ(lÙ0M Fa�ž3Øñ6Œ"'¶Q0l¬Ãõ. ûS›ŠÑF·FÁD¡QÜ* …�y¡¸æ�ß¼QZ3Œ‚éV£`^]) 15JËŒ’S%_DÆaë ¬iÖ´í<"æ9ÕøüéøÀîl�­ºæ8>z(έ½·´Œ¡ãdØ¿gYŸ4’AºÀÝóðN ñì+ŒÔ¿/¸e«¸f5 ϤXû/gÆ32ã™ñŒÕ<üÇ ôØ�óØ_¡>°j9)/™¿<}`uºc�”p`?'áÀ~JBǰ�7 »x£~ðªS?vÕ©ºªt`õ<ðzx=¼žZϯç�×óÀëyàõ<ðzx=´žZÏ­gt²_§´žØÅ6l�¶ßUTLú¨&PTŽFþ‚Q½Ï. cGÆ0öìÆ¥{œ~]0ˆv<ÑO&ñi8Ë¥cìYÈxºðÁÚΔ£z �âØ asÀX½|á¹d�djä.T<dù¢OžèœÀ w3®OîŸówán&ú…»©è'�Á; ¢qjè(¡Qj Æ… M0°S(­-”ÖÝ(öö ÅÞþÄ=ÕéðT]eÆ3Œg|Ó£gœcLK“§;Æ–aÜaÆM`zàÕò†ÑryǸ»*mëOW Ó*�kæãùlÁh5®cþÝ»»íîO¹`w{Ë…£~¡sÔ/tîî2¹pÔ¯5Žº­ŽÅçùG^¸»…æÂÝ=4ŽºÝÆýãñ.\¨v»� õú‡ìœÜ?*çÂ…þü#o.\èÏ?Þõäâñþýj.Ôëß�váB½þýf'_ïo»p¡}Ø…«÷ íûgÔ^¸P¯ý×… õúû>OîïÛ¼p¡?ßå… ýùû&O®°P¯¿-ò™zQÖDÇ|°FÙKóÁz¾ÕÄbS™§â˜×ÄÖ*ö�™ïMl-c‡(·ÒȦ’[ ™Ž$Q³5Ÿ‰­ùì°(¬L°]ÇÛøX=w¿*ºÀnåîtªÔU0_ãlÑÉö1=àg·Ôu·\nƒ¯{cîþ38â¹_„‡ˆMU°vsß:‰ñDÖ v8d¦ÎR@ ,iäÕ¡œÖFžÎÖ"kO, ¤@^®Ô“®=�² ùH Üš'¥eŸûV¯g±o—ñú¦<Ò[$wOìw¤“éi7^E�Ÿ±´–UÃ’jXN K©!?ëÉ6^%ÌäË{r…gJ ] f™ ±´Å1‰k_‚Y|é ö/é«g†’r*Æ�ì´øÔ6ß Qø.Õˆ'þ)Ô^bÙˆ©žã×W…°: ¦Ž_(U»Ñp<¸FA¬¦PØœ „ 3ÕoÁ6£`¶‚—9Kºì õ Ï>¡â€6ª'–ÑY¡øíºèT÷šá'3=öÞݵ§©¹ BtéÌ®t5Y™k”‰µ¬™BÖ:ff3©8’c�XAú ̆ÉR}ªI€Ò_ÝÚ4 C¢[2çHlR‘ؤ"}QFÔ>­“‚bÇ:}a¿8}a·7}a§5g.¯+}E¢O†È'°&×½.¯ØÙ8‚ÕÜN£;%ìÔ¿­R0N_8ÅÚØ€²0�´Ëè2 dÿšè�^›‰v‰©.¤Âbþ8»5}yÉ­W÷,C÷,Ÿ)ߟ}z…e¬ñC"Ù¶T–ÝÉàXþ«ÀìMò/³{îÿ)`÷ÄpöŠNørÍ£F{À²¥JO©WýÎP¿s�j¢Ë¥Nü1 ¾N=ˆçãüVÔ:õ½ÿFÁzZ§`ÉËð\È|\6”q`ߎ,î»Wƒ¼†T/­BK»ƒÜƒ4A ïÅ寢}^­náJS«I?}1•åj�Eh Q©ÆŽ°|`?*v`P�ƒzìØØØŸ—Ø_²=°?3;0°¡†ÁáæZCÖß1׬˜k Ýw`®5pß�¹Ö@`÷À\kà�´s­�ýôæZé}FÅ ÏöJá£A–}§´XàF™NiU‚C/ú�ÒzÌ´3­Ep`F§TWàÀŒN©®Àe)�R]�ã4:¥ºë�R]ÍTW3Õ8Š£Sª+°‹¢Sª+�ùÔ)}2È{Úé˜IL©�­ÞOS‹¨a μèV¯QX�Fa…˜R?d R¨æ”àL�Rm€3:¥Ú«Ù�R]�£8:¥ºñÝN©®@|·Sª+pG§TWà(ŽN©®"Õ¸]µSª+°U­Sª+p\£à´†N©®Ày ©¬~¡MCŽØÙŸ,àñI¯}„½©ü™B¬�t° áÀ¶�à#²d8€‹Uw8ÔløÅËò=p(—m|N3Nìí28±»¿¡b°¹¼B°dÔ ˜jL#Ùߟ⹿߃á M1��)¹±šúë©Å-w„ÂR;Z@Ñ�ãx^M®(–f1t,áNÛr�ÓjŒ�öVû!hŠÆ@§e tYÆ@‡e tWÆ@ge tUÆ@GEï)µ…ö_͵¦`p1ås3úg»Ê–Ÿƒˆî¸ÊðjwÛ')ÁMÓ;í+öŸå2À^©NA_Ñi9Ò¼ÕNlð:±FÓŸzÇëç.ðsmH÷(áñGn¶ýùÞƒ–ë‚(ÜÎ÷äAñs÷ªÖ+çÅoOw¬Nì®X�8ó¢ñWϼà3ÿµ›|Ùñ@ü ü ü ü ü ü ü üÀü ü ü ü ü ü ü ü ü ü üÀü ü üÀüÀüÀüÀüÀüÀü@üÀüÀ<ȶî8ÐDƒ¢ÁÑàƒhðA4ø | >ðDƒ¢ÁÑàƒhðA4ø | >ˆDƒ¢ÁÞàƒhðÐï=¸x»xºx8mð�7øÀ|  >ðxƒ¼Á�´Á�¼AŒ¼BG^!#¯�‘WÈ:1­�‘WÈÈ*däÍxä­8ñ>2ñ.2ñ.(ñ(ñ"ñþ!ñî!ñÞ!3CË|`É\g™ë,óQ%óA%Ó&�©‰gjá™x¦ö�©ygjÝ™w¦�M¦}M¦]Í«aáÕ°ðF·ðF·ð‘sáíbáíbáíbáíbáƒæÂÅ�‰ç¡aNˆªâ€2FëþƒbÇ Œ¸X¢2ÌX,ˆOK^¯%ô“ñ.¨^vµ¹‡]¸{,�ñÈ‹�/óèø3à‰ÒåŠÒåG½›×}u®±P¤¹\ÏZhÍ�5ŸŽAâÛ�ý<؆Áß�‚ó;µ½*Îf’+÷v;_¹·Û¹sÿø�FÁ™%�~,\«k€Õ5Ø8¬‘ŽØÁxðÃÅW÷ð,€c”`4“ŸövkΪ¥L4àòb¡p›ôÛVÇÊÊE¸ÎÙk™à²d.7FáÃÊsYÝò—¢ ¡î À€ ~¡ìECä©î‚r<Öb<æí4¼ª.›åË6›ÏŠIç�œŸ*ªe[Ø_X;°ß¥Ø_A;°¿ˆÖ1È;°?Pv\»óOmŸØ?ñï*àžùwpOý»¸;*.Ü=!ïÂÝáðÂÝáðÂÝsòú׊³Sß éÔ÷B:¥õú™5um pY2çsèç£+@öyÇœ&Í¿a0Wø1Ì]? .wæù ž£]H�­°œííù¡•‚Ü—AÓ22_ýE… ·¨ôúÉæ¬ëØÏ)x„çøWJ Úq^Ùr2­‰Xè·Ÿ» ¯ŒíØg#èåÇ3ôcËž €’,ô+·Á�ʽ¾îu™GËáF÷!üÆíËð‡Ý‚û º6è´¯k±áÀ;_6�£þªìVgÇ÷¾þv »IðÀƒ(ÉÈ sÁõµÐ¸æåØ«ùaÔ;óÔ|yî `Kªs«Aà#.p3Ê2õÌ ÏÏ-ÌI©º>úžíö(ÿ¹ÆB?ìÔåƒs’ÁõÅаêFB·-B§Û6è�Q úcTƒþxPáÀÞ &¯úCjcì3Án® AŠsƒ~/Õ +ÐèŸûY!¸Ç¦ÂÈtÀžšüyS…à0Œ g¿Gl�T5¸˜ÆSHD2zïÊüc»Œ� LcŸÛÓ.Œ|C&uáÇ*"¯cê1 c iŽ‹ïÒTÕrœÃñ1¡kÐñ;®ýU–™ÆÑ ØŽmm›^f| NeÃâ ]iÇeZwÅ�NøäÞ¨a�áß(ØbÛ©ïàuJ‹ n.4ÃÔãNa-ÅeF£we ¿x‡Ëã Ì} Œ:Î:ííjsÐ¥XJÀDE ‹p$¬°�h£‘©a4þ4 ºíJQ'Z)8•»QÔY6 ºËJÁÑÔ�¢n±RÔ1VJ_ ÂÄ�Òß.¤È¯Ã�×áÀë°‡1F~ÃhÈo ú ƒ»éÌ‹nä;0è|:½Oà è`*fV4P+¨¡ ÔPf(ó€BâËr^œæ}PÎ 4]š9^©3>4ê‡IENj£ÀKmŒK�ú¡’Ný¨j§~X¯S? Ô©Öë”ê ìÒkìÒë”ê �á�R]�]z�R]�}x�Rm€}x�‚}x�Rm€}x�Rm€}x�Rm€}x�R]�Xd§TW°Ï0H b•�RE‚he£`t§TÍ`§s§T‘`§s§T‘ྸN™®í®í®í®í®í®í®í®í®À‚{‡L‘èíN©"i_h_h_ÀŽãN©"iOhOhO‡@î”êŠötèêFÁŒÞàèo>«ûî;´þó3â€Þ©ó'ôΜ?©w¤ûI½ Ž“zù¥¯uSCNÊì^¢pÁâÙüá^ÎÉI½ûJ‹åÞwtRþ[úE#ý ‘~�{]ÇI½ëNêÝ&pЉZ¬{ÍÇI©®&ª«‰êʽä¤TWÕ•{qÈAÝ{ANJµ©6xcàm�7…H´�}§ïÕ(ž îîD7+ÅÓf£pb[( œ5ŠŒ^ß(Š7ŠGŒÞ½Õ)Óº ªQ´¼Ò(}r�œ|†‘jqUÆÿ}É}!ؽeæ‚‘ÝÎ=‹Q|3ZgD-µsÔ;'EÿÜÚ~PtØieèD¯FA¶S¥¡m4vÕmØ?Ÿ£bp2â{äþ3ºnl„+ »ùMuÏ­töï69 üi]“w�c¬W³åØ«YH¶¶s9Q<5 Ý9°™¨Qèè…Ž®Q8)0 Ò(œ…“£Ð˜ g¹uJu…ûx£TWà,·N©®ðè16z…ÝÙpX~ÆÉ›�bMáÔÍN±¦pâf§XSã:$³SlU#NRh[ÕÈ )ö�úÈ•âpù<¢Ë.Ä]Æ×£+Ä5’(û 7dÚi› bÝ£S† C§f–IOÞnGžaƒA¬ºüÙÚ.ë˜{kC ™¥!t„–At¨²Á W¹ 7Яµ“_/õ|®Á»Žë*¼S¶Š@ÏúúPYƒ`•ÜèÒ/‡uq<(O_`Ìh„IB†�â?¼“‚S@Q¼NýN¹Q``�úíºQ�ÊØ)-¸ó¸Qà tJK²m:¥¥J,¿yJp³/¸Žu7ì÷-vºÛtyèXAãÑŸ>�ñµ°8buï�¬—?ÿë³aÎb>ËJ :uùäþ |r>¹?Ÿõ*�£z™êäÒ�µÀƒî¼àÁ›†]¹2¹rovåÞòʽPЕ{�³+÷‚EÄ÷ošyå^ØçÊÅ÷»QÐ+ßï^åâûÅç¹±¶ w£mW.ÌÇ�¸]¹PŸ9»r¡¾$ÊŸ„~’¨~7€rå¢üI•_T¿{Íï…»×ü^¹¨¿LëÏ¿ä삇‡ (¢û8 xZ‰E€Öb Õ˜ë-\€V¤å#*¥IU—ƒ{çó/¥É¬4™•&Ý{£ (Mf¥I÷êè_Bî’Ë…/´ˆ3o4%¼I•T¨’,@ª¨’feèÊ©%Ì¢_�÷9ç Uñ¢ú�Eõ‹ê7;yEPk/´"—â<*õ îZÓ%ä­Å]¤œNðK@}÷’еørF mTE@Œ»¬üK@éÁ]\þ% ôÀ[~�zPöÀ[~‰¨2,ª ¼ÿ+¢ �» E@ÔfPM/<ÄW”íªB@}Å ¾‚O¾Š€°Éà&�ü6Tø ®(M*›£Q=êG(Mº‰¿„&gñîU”ø¬à¢fQ ³¨…YTqmmŒâ?ýúWîÁµ3åàqü…’€n ØÚÛðv¿á·Z•eŒãÊd',U)Ú#tr=š-3½^ýã˜L¢lç›*?–ˆå4ãœ�ÃHgç(ªØ9 ¿5ã��³ò᪟ÛÑþ½ Wî®B }ñä“¿7í*à rpWØ�Óy¨œÁO¹ 储œ(©dbíE(+Ž~–Àû‡8]è÷E�iP9º¯Ãh¿Ý×/|:®wbÏ�ƒD–ƒ³æ•Ž›8 G±ïÙV»YëÛ1k|9âÕ†ŠéݓÀWÚ†º%ôc?⯟ÃÓ¿; Ü’€e\|Ëhsôœ.œ\ú0 ð€•/ýw;éïÓ¸.œ]/»OÏð+ŠÝÛr¯Ÿ¿sø³ùÿzÜÙi‡rLðqrú[B¨çÀµMŸ¯¸pP×E"ŽÖ�@eHw;%¢|KIZEÂîl}MÃq$¥Œe׎{B�—ÏŒ¾_šÆ�f%–áës!÷×ÏáÑre ,[ô@’“áiöd»>Ć0>NOîóë¯ôsœjmüÍ�¾²spÇùÁQ_}pÿ”ƃ[ùy0ßÁÁÁ}�£ y6DœŒÓ�ƒ˜ŽAÌ�Á(ß1Xßm$Ê˜× H–éØÒeб4{­c£,ë‡_Àýª¦/4<ò_�þžüƒÔ‰Ž‘ZæE›xÑ&^4�fÙ1ØWÝ1šuÌß�òM:FæP1Xoä)T fk ú‰|�‚ž³Qþd�CÐ(JÞ©˜þlúë”ÿu7F�ßZ!ص0Ô;Òþì�ÿj­Ø]ÙGKʨ5‰¥.öSŠŒ²RT •ÒRÁ>Ä(ìB*¥¥ú¬£«2'<w &»w:ØMÞù„‡Ä„Òˉ�ÌŸ±ïPuž�f“Îü…û ^Ü3‚¯îÁ–qò?Ï2~q°ïúÀ`þ|b÷lùƒƒ¯á²óÀ½3ï"À¦öH§ÁÎ3G&6Ø™4ìHÝ}ˆÂ/§yàþíNÁHÐ(RŒÑÏû· §ËMå¶S'�ö×ÏqÚÙÞžBp”öëç¸�œê9‹Ÿçp\q·Ûùt~� !€Ã);£d§âÇ —þäêñ`8<8†ÄƒüàÀ‰>8°çƒ‹>8°éÎ…z”úåï…zQ®äÁ…zQ®äÁ…z¡^ä:\¨W|>r .Ô‹œÈƒ õ‚£p.~Ž¼Åƒ‹ÚÇDœ\Ô8*âä¢öJpÅϰ¿Jø)ö¿$Üá²K%€ƒ'N.l>qrQIÅ_óWÏI¸‹}¿$ÜåÌ_î‚æEÂO¨¸ È'¸‹×WwÑô*ச^ÜeÓ«€»nzp¯/~þáU@}…ŸxP_áç^ÔWøù‡WeS~bÉU@}…ŸXr _QªÒU€ÖED©JWú5BMú—X3‘>çÖ‡@P-Ü$hm˜mž&AÛg ¢…ù^A´ð"Àë#ˆ^¨UYÔ^ð^ÔWð^ÔWð^ÔWð^”Mñ^ÔWð^èW¤‡°É"@m²ÐÚ,´6‹ÕC z(TE€ëaªùk¸)~~Ú/ Zã&Aû*“˜”DqÉ„¯ÔYÕú¬j}Vµ>«ZŸU­ÏªÖgU볨u°•ùàŸ1�?ñàSõK€jÁÎPT `kôÉý;;:çÞ³­€2£¯K¤T@½�ûçAD‚ˆ0ÀMÈ瓨 " A„‚1GbÄü*ˆA!‚ BA„ÐÍ�1€ bAÄ‚ˆ´5fÂ…~ÀÝ•'ú1ˆä=¹ÐZð:¸Ð�1Hû.Çé(Ά«* %ØxU%Ø€U%ØÀZ%’”`N‚I该.@•�%dIYRY êgT ý ù)A~J�Ÿ2Ê’Ò9b•�%eIGYRù’I~Ê$?E–SSµ6iÒ0¤]H³�V¡:i4Òf¤ÉH‹‘ÃüKãê#¤µLê#&õ“úæWÕGDõQ}DT¡�ÔG$õI}D’eP‘U!³*dV…̪�YRrõ³úˆY}Ĭ>b‘ü+„[.Ö~Ð1á'n'8*üàb5"ˆÅˆ Ö"‚XŠb%"ˆ…ˆ Ö!‚X†b"ˆEˆ Ö ‚X‚b"ˆˆ Ö‚X~(gºó@T‘à­È’ËiCGS_952p<õ•ÓJGT_9­$pLõ•ÓJ*ùï|ô5 ÚÓ˜íjŠ`E_#ºÑÓðކÏ>Q&`Ç|n+¦¶by~ô/x»`�ç×À�ƒ­çDÈ~܉в~�ŸŠØ9HÄ;±(ÜÈv ð,¼‹*À¢ ð™ë÷‹s ª© øÇQ<¼ÃçàÅ%O, ÷“�¼`7ê‰E‚*Ú~ÔùÈ 0‚ïþª‹€¿?êð�±¾øÙ°'÷wHunFȰøÄI}â¤*aù¾'ç_8‰/Œü UO<¡]�'çåã=ù”ÔûyG=©ŽzRõ$:ê‰wÔÓ¬LdV&2«V0«V0‹:˜…�,ÜFœ}„üõ‰‹úÄE˜á"T°pðeôoN¸`® ˆîN¸ PÙÿ°Œàú… § Š¡ �«`P*€ûi/\ƒRÁ T0 B�« (¥‚ T” ‚PA*@;Š;¹ ”K•K•K•K° p—! —!r—!*—!*—!NJ“R�ð)¢ð)¢ð)"÷)bT*ˆJpãü) T Ü–(Ü–�s$ªWt˜Fà’ŽóˆCšÅú'¸©£cþtp‘Ç�ùz;¸ÊãÀ<$.ó80×*Ú‘Þ±ønÇA»Ãæ?‰T3×éÌu î-=0×éÌu .6=0×):#¾c®SA¹NÁݧ‡tÌ?\¹q`þÙàÚ ÃS¦Q½‚IuLª»`RÝ“ï.˜|wÁüÃØV—‚I�ÌÕÂö¹ÌÕ.Z=0WËçU«¿vWâ±v_ý\·°{Ýù�ARÍÁýe„û«öì¯!Ø_B8°›oÙSè5ŒÌ­b˜YW1lf #{jÙSÃÈžFöÔ0W \Ûl˜«¶Â†Q+¬˜Þµ#¶ôr£m=ÐÇ9ЦѶ_spÜÁÑ�<�û×�X/‹ß/¼ø-—stÞOçàšÂÎÁ-ÇOü퉿|æï^>TóË0ð‘;åN ~HÄÇ�Ö#äáþóJË&o4™¹H€ÙÌ)&M®Ó8<‹)¶ëÅá' ŽüèôãѿԇO”+»Ç ´�ϰSpg²¸òðð/‡=ø‡é¹Ø9:r±óéãý×Løðƒ½?€5cl@‹¿F#XAíDÍ+þˆ¹ÿ*3v)ÊѺyF'§5 ON+|žQ7Ýèn°=9ØWÒ9¸·ïä`üëtà £n°aÔ 6ŒºÁ†Q7hŸÓ(¼ôªñBs'ö"�'¸¤~ðRŠÀ22«YFÏj~%>œ¥\Íf'ç¢ðr´òÉzšƒƒ3™ ŸMœ,Eg�fçô´Å„GÁR3Cæ§¼$Ü‘—ˆÐ>‘>i£`j}y¥è»Û �lÉØ,r¨' üùç]>ƒ¤b4oô£{þU2|hOí Q%èEÕ1:~zÅmÔDïnûÂл۶/ŒiÑ:6¦aX% ƒVÞ1häƒ6Þ10òŽ�•w ̼cdM s­¡ùhÃh>Ú1×ZàZCÛ¼:§óu úņQ·Ü17ê”;þ¨’_mŸŒ•§z‚ ë33ž‘–òì 5ÌϷ͸GÏ6kD}ú¦ ƒû�;FŽRÇð¬½.<ÐÓß×SÃ>O’«tn{®§âŸNðnæŽ#LL«#88·R~ØYÆÓÉœ¿ò@ g¸ì˜nVj¾‘ñ0žçÚØTzÆÓ•ùaË×ã?ëôÄôðî�×s8îDþlísM…õà¹&ÂBˆ�¬p€Çh7AŽQÅ38sò Íà—Fp4—•à›Ì<�Òg3ž§:C:¨í©60¡(^e0Oür/2™'[Ãó;Å Ù׿à4¿“³ t ü«p_^jÐRý�¨¸Æ¡»LŽ¢cM£·,¸Y,Áâƒ{J �xm¥á ‚<㳺 �íŽ-øðqÀ>WÇ`_j‚'Zwmøs…ñ—âpµ-ñ«Mzð¯qo¹X°Ù1p«:FŠi)¦aàŒvŒôÖ02ˆ†Q•F+”�òß?¶QdÆsAúúU[8X¸Ø¥|Ý—ül„;_¼ÛM.�ØË1æ~>þ×àŒ¯œÃq:éð÷p$(�K»´ÂíýþéPžü\ƒøÐÏÉýNìä¾]œÜwõ8Nî·ˆ“ûÞþÉýà]ás¶X¶¯ð€}I9%Äî°v”�·iµS¾Îýnøäèû:÷'Þ'÷Ã�s̃ƒ»—NŽê¿sTÿ�ƒöyr?¶{ppgÆÉ…þÀRûÉýžíäB“ß»< ûˆÂ>>ïäøeÀpÂX §L>C/¿~'/6-É\Ä<øgüõ8ÞZwx øyÁÇÊ‚§ŸŠÁ޶#í6ì�·Fmc.yL3.ÙN—�‚ýR ØJ…•tÏìφ;ž?ü·ëãñÅR%bUº3^Ãs€kdGÍúà Û:8P^áK¿ÈQýÁÁ°qpP³ÝNãh�ñä Ûë|†wp^>w<90�ÎA€îä\ÿ蘤“ûnðÉyý¡ßÉ…~PÓ<8èöºýƒ ý aéàBÿ`åîàhØ88nf_ÞˆÑi'èwŠkÖ¨ø±ø5n†Á`Þ16ú‚±ÉÅ=ZÁØ�uOÓéí ãÊ.›ºQÜÃgø™ŠI¡¸‰ ü¢F�WTr—~»ûMƒ»Ÿ:NX#†Ñœ¯ýÏßÿõõ/ÿeý·úþ뿾~þþ(wü�ÿËßýÿPKÒV1]ÛÄ…%‚´l>imunify-security/inc/App/Bot/data/datacenter-ip-ranges/ovh.phpUT ëÆ«jëÆ«jux 臭�K�ݶ€÷þ³sƒÖ²HQ”8é)ºè²@ºî̽ŽÓÇØ��È�/Ï!©‘B~Ô¦A‚ù$^Š<<½ûñöt{¾¼Ü®ÃÝß>Ý=}z¹»]z¹{øåîãåé:¼yó|{ùúütwy~¾üò»7wñ¯·_>}}~¼ýðõù?oïþôç»·_^>¹ÿþËËåexþéómxº½¼¿^^.ï/OOŸ¾>=Þ®ï>?Çþü|û¢ÿø×—OOy¾¥–þôÝ÷ÆÛÅÿáîÿÐÒ4Ïn|û‡ÔÓ·—Ç�·ë——ÔS;Zÿn ïÌòÏÑÝ�Óý´þ~ïÇí…øôã¿¿|ýozüËÇ‹�ý½5öáÑÝ.ËÕ?Øëèçi¹^�óÓ¼®ÌÜãíñò>\—‡Õ¬ËÅ?\¯ãkÝ5¸Õ]JãÏ—§o_~xøå‡O�/·Ô¥Ý¸Ê_¶ñÿô];X?˜Éã{ërƒ¿�óDpŒw Ãl^³T?ùÍëÎÔÝ9öuÆøªñ¿mwÖF'ßüQ�ñßþÐB× 3Òø=#ÿn¤f$ºÚØ2Áàñ[í4âÔ5ƒÛãŸéLŸ3…ô£K{nV𛸙ñoÛÃëIÏÐŽ8FšÁbnÐ4 ä‡Ð–ÎÈ—À8²v¤V§©|#@À ÛS¢0xhu‰_Yõu7#—‹‰s=ºz:÷0}M—µFðä]3·ÇbÃíÑ(x©bÿÑ?ÚG‰ñ¢€š� ]ò`·¨,»J†w?l'Ô¥iöIÊmš;¶å\ðlâ2�:ép‚ÐÚ^Ó‘ªºÀw…PóQ0m^,&´‡d24$¢hâ m¯ÞI×5,‰åƒ@7 •ÝøÝ0€®�аKD¶Äfm{þ"�?hÇj öÅûð8š{g®ãýýûÉV“°ÑËÃ(�¸µûˆ9Äž?2�?âΙÏñç�,ç�¬ç�„óG.ç�<œ?òxþÈíü‘§�˜sa0çÂ`Î…Áœ ÇGÌiÉGum]”Eó!¾½ŽI¶ÇêW^1ç�ØóG¦óG­³í‘ß,ÔýÇ.¨£þX0ê"œ3?®mx$8WöþKh¶YW±½>Ž÷}òî ¦Ý K»'@”vO€ZÙ=Ze÷(•Ý SvO€JÙ=e÷(”Ý OvO€:Ùžhî>~à,sêyÄó,Ên$¹qÑ ˆR×¶3ÌöaL&ø†ÛæÌ†Û6܆ۆņÛ@ÁS{—ßpÛòØpÛ‚ØpÛÖÚpX¦þ°€²áþ°L'ÃÒ¶© výQ7nÃýQ«� #î·ëØÜïùÜïÚŒ]‹Rh«1Û/0t'Ü”D\^žàeôü\tcŒÅ …`â^ÔÅÖ�œŠïf1ø£Ø¡{§x@�Äï[ŠWJÍixbÁwc‡ IÑâa«T:�p=[;˜L¯ßdRô±áÌØößîüö$/Έ(Àô]•á*tm©þ}P·òY¢onÕ/ïßF_‚âˆ7 � )P$xY)Èi’þ"hÍØ�Öv`܈ÚÃ,pγ¹§Ng}‡-�ïXÈ!ÖÆîXg\#¥èI¤kgÂÖî|‰’¤Þ®ä¾DLÍöòåP¾œõÛí:�!Ãq[˜›úƒ>œ„–ìJ×`¿Êä.8XÆ8ã âÔD<ႈSž`£Ï»ñðºòѰòOOùx4s|4sd¥× }ÿ:JG´AÄÐ�M2R�q·»ÐècdÃrjีëTµ¡2=óÌãÆïe“º¶÷Ã2âLG;Eß” DF …ÑRZ{]ûOÂ8‚_u×Í{gÝö:ø8Ôu zßxÀÆ£Ñg‡ÚéÚ½¼ €.:X\—Ū�Ã'xn¬œý/£p.²“ôäzA Yâ\ÄÁ¬$sÿ2ª( SGóimOE¤~Àÿ�p™ð@:Œ€Ú½BÛe¢8 ‹nJà› �Ð=*š³2U÷#‰R­©]Îdin·Ù³}ë(Ö²ƒG#«Ð²»UJ@ È¦�Ž…”´î¦#V´×äËSþtV¶T….-ë~ÿËhMʲ"iqø çÐK–fÂÏýë|ìANJh¹ù>4À¨+~.уzò7Þ�¡‰�Pé1'<•)„šr׺ôìmSÇ;�ç£PZ8A‹VÎ*I‘a�V8´ÎÂ7iÒVƤþS­mm³Æ‰Ú2P%D†�œÞ÷<,ÕÍâŠ�#…ˆ�Î;t9Œ¨Â¨@(o+ĹÐîËàJ;`ÂàÐÚ¶°3WºP�ÃL»-/í°D¦tšOƒa J}åüÛÊ!-ýÊyÀç1Myã°­nœG6ñ“ñ!‹oã'ãב å¹Hüd| 4¼qˆ´¼ò“ñ£sª?ù~27~Ò?ˆÉ½ò“ù÷ñ•Ÿô¿>iû~Òp$_ùIÿ–“þ‘·µñ“ö¡敟È/$^…¯xlAhÀíQ Z žm`lU9«Á¨îl£º…è“b©F k½prR3‡˜¬`W* « ‘ÒΡôŒk…r¶wÅÖŒ6;* ýã鞌g’–Iï1 s+a‹£ª5I¢½ºql%KL!íì­!w©œ5¹íhlmœ¤!sÔ�™£HU¼“²ÀóžÏÉD”5ÁÇÏZe]‹ò¡u¶¿õ,ÃDùÁxâsQ°mî–׫RË(Ñ3 ÃnŸx%&G=«2æBy'ŽÛNÆ4åkê<ê¯5¢l;%Yx]ÜpøvvMôàTœSR!�›�Y�Êë•6jÝ—}°Û!eÔ²ž{É+ɧ"ÈRPlU˜»œ,ÁÌÉP¹#ÕpޝSä‡÷Y}¯N#‰Ì/¸›”áúGY‡f,Ù®ÚÅPlZ©ÔW®uS°ž2·¤V-ܘڧIÅCy K9HÆÆa{ \ŠÓ®¹Îˆt…òë•«ÿ‹Bø<—ã®m.F Ùàkº ÒÀ�¥ÊE —ë$ÐdÙ8��]Ò¡åúëñ“Xйœ4ñoÄPîøîžÄ V¾Üùõø*ÜÝ“°aÿHùܓ쉪ÔŽ¥¾9n²ÁRÐ â–ú^§¤†Œüm)†n^_zÐD¼û¬kJé´íT)áUÇ„¦+qº›eã}Œ²²êt¡É¹ožfÚ;WãJ]�ªYúºÌ-…L7ýzÂ�Ö ¹âœ>€cÕ†kgÅPNµNмÕ#0˜O ùœ'éáѶ¡0’ØŠš¢0QHÇ8s:´.eŠ\®�…[×{®K:S�tÙîàªWjÄ%ÛU{!1Š�`¿p�ë‚EŒ5 ä�/Ý%[O+‡ÕFrP³ñÑ)°‚ Um9é�ø¤wFwš_Fòü"”æ) ™p�S9Œ*[jבjPR"Â¥�bÂ%J±­¸ö\R¥*†Ñ#÷†ÎJ‹Èé©Ú’žhNœÜæƒfZÄk'Ì+x;±‰ÓÂnHi:¬]Ö:8G¡È «Û�ë"Xtåé"Ÿð°„Ðhà-°‘½~ g3Ñ®¯x·•#ãXN6UWg%nð¾pÁ ]9'ÔöòÕ!Rp¸ùÛñwë²Þ=¥¤A¤’‰¢ŒLÄsó™Ã°qôA*èüÊ9‹�ÓïN«°pÇ m³Ž ¹°³}[ƒÑ˸]˜.X"S(ÍQ­kø–e.z’�Û¼õåFaÊ¡4“$,ãÇ¡ow.·É™h~›^€G× 3¢>yøi¾_N0,x¯ Mê2ñCë¨á¬œ\« èÐ_6-g3üZ*–*©)„R°>Ò=Ëh¹�_Í79Þ[À+okaå¨A¬7ýƒ2S.õ=$‡þóeÑr�ÀÒ½B5ß>3]p7ñnù‚UËÛÒQcÅqbÀèP<4…«#Ë8¶Ü½a1:ªØw¹Œud“H¹ �5«w¹Z<<#Üš–×Ï|XÃKZ£^#VÁn"_Ê®"T%”' o¯quØ+Ÿ›××m¼Äza´ü‡‰¤°�Åò'å-“OÏêJ¬w“îQ"wV¹kýq%‡î³¾Iyu*ÐT¼RÆÌæ{VÁ[ä9è¥xn„vö=·¼`dÐ5?D›`þ×öÇ_=º\wöUÄß|ûæPKÒV1]¸ÒÃÑ¿6�Ã@imunify-security/inc/App/Bot/data/datacenter-ip-ranges/azure.phpUT ëÆ«jëÆ«jux è‡��ËŽ%Ç‘¦÷|ŠÚQÂŒ²"üQ=êFf1˦÷ÂÉ“'%b$R(¡Ð?á׈¬c¿ýÆE賌°ð‹¹¹™¹ŸÿñoÿËßx{¼ÿôóãíwŸ~ü÷ÿùÿÏ¿ÿÇÿþñÓï?ý×}züçOßþå‡ÏŸ?ýûoß~ùß??¾Þ¾=Þ^>ý¯_>ýüË·O�·Ÿ¾}zýç§¿Ü~~{ùᇯ�o¿}ýùÓíë×Û?÷çãŸýå·¯÷ÇŸ~ûú×?ýñ_?ýø—oßþþë—ÏŸÿñ�¼üí§û×_~ýåýÛËý—¿}~üü‡ß~ýüöË?~þë/··Ïo�o·ŸþúëËí׿ÿç¿ýôöǘâºÿøßÛSßßîy¼ýéö­=Õ-.ýaÙÿ°¦ÿX—/‹ÿÃ[ŽÿXÆÒ÷ÿ÷ëokâ¿þåæbúÂr[¶Û=îSÊëkö�øîÞ×÷üº‡uõû¶Ýñ¶æÇ[|äÇâß·õv[òýu»å©Í×ÛÏ~üú§×þé—û·GSéÒåŸ üõoÃËÂËò²|^}Þ•E×X�Xj,Jlk,Ëlu[¡; ©ü­[Í©PQ£Bs¡ ÓÕ½¹òMÿûÝ}vè»î\Pž¿µçƒ6+Ük�ß^RP´Ûµ–Ù­eº.Ëg�Z½råË _Õ7…k_~ðòiÊŸoJ¿xß>ûáUmW¨8ü …¢'ïåoWQë½M©ÁˇlÅSç`mêˆúêá䨴N© :]ÝþÙ;…û$wÂàôáài‘G÷àer�VYý†ú©ÐP‡7Ò=À^,4:íocÒÞ7­ÅãŽ&]§j‹®µH5”¢-�Íä°éN›ü´a–ÓÙ¿@“~°>¦m}'éÚi5,RŽÚ°òˆú¯RØ÷•nhÜÚF•4æ M*„[(îØƒ:­µœÞX.´ñˆ}¬¾²èx ò2ð&›—Ž÷E¶áãntͳëÚ„ôŽÕ)€zG¼r5\.Ô¢ñeO¸Aë @j¥cÅÅíqP‡uNºÎVµBNH£È)4+³ÉiÓÅ;eÈ£F|À¦,'ìÙnŠ™Ûº™“”Ù¦÷*µÏ¶µï›§A8;v Ï½Ú0‰�¢‘X¨GýV`@F°À„:õ€mQŸ Õß6¥Ç7űÚÇjỗÞ/ú�J¡QèêЧì«6^Ú>TÜ¡;W`�kà±{Æc¥á°É£¡Q4Ç …~Ø®ø{÷Ä¿ój#�ÕRlßìÀ6:¬ Z +ƒ{½FÑN¯ÒºÏÛ¯Ò¦q§N^;‹h§›l?v͆0(Í•fêËøÔØ|~ðÎØü·hI?(ô¼vm=8 Ü íAžo»ö¨E, Å‹=Žˆ…ØßqìËÅ�cs*v[¡-6�bµ­í5/sW"?»ùÙçÚ)>un§ÅVÞÊŒƒ­¼•¿¦Pl´ØÊ…–ð�<_Å­Ü9š ;`*E¾XÇÈV4 ÍxÃÈ” ý˜N×D\G�¶ÉµFþLÇÈ™©z3•Bwfß•Á»«ƒwïƒWžû‹[ ó[è cP•bÛ](¶Þ�Â-ßà õÔàd�g4‚�`ú Žú²s¸J7Ò…:ä]¹e�›ƒÚW`¡pËÝȺ©PÔ“'±±OLvè“ïúóÁþcb'OËɽØÕËæj``ëÖ¬aãmͯFÑBX)tî+…~k¡Ð¹/pGn�[ñ6Æ­8>\vT*MÈÙhÙüAQŠàä²/89HLÖ„ÁAŠ`à ŒÝ�ÁØX^  ††Ñ‚Óh€½¶ ª<ø ÍhçS)ôÑê‚ßê´a[(~©Ã›ŒÑBUZ¦C�ðNÁP(Ú(T†6 â†÷Êü Êü êü cþ‰ï c(€·º‚˜ßɤƒËù�É�ÏvryÃ<ùŽæwãÇÿªú¹,^ƒ£Õ§sà3 |ƆQò´ÒŒífh¹0Õ‚:…ƒ:…Û–T-Å«ƒ*Eu~—-;üÖâyZ! ƒ¨Is$aKDÍ®DmÇäYWß¾1©�”º²à±§³;F¾J¡ÐU)wkêÉq@$­“Ö€Y1vŠ#¼îJ㪎Q¡Èk/ÐáõrïI±}ö�öñ®ÐºVˆ�kÃNÞåL \Û�Ñh©®J¡ÝÚµNß•Nw ^ÅÚØVþ‡i ÅašJaž¾Q´7o…ÃEñðAatîÁâÕq`Ç,]#{P1ôDœâí»Uí§Uí§uôx«ópM«:]•¢šˆFw´Àt W˜Áw9…6¸[À>`r9ž=9ò2 Ðè9œýpÎÔbaбt=¬/w…Qz‸#ˆû¡BÜ £…¾a‡ìáÀr)ÀÀD): r`®å TÌ%Î;‡#Þ…)§Õ:Všqç¶r@Ô�—ZC±;Gîzçu¢ Íss×å‰Ö9œHZµb¥^&´¢¼J±KípîØyeIô‹Ö�~ÑúÑ/£%} Ý ;^)ôÇ;…ÅÁQÄpp1õœ,Œƒ#CÑy5Êó�æ~pd *‡3¨R¸uð‹6ŽüªŒ#\3]—Í9sVM8†´ª“JñÛº?-¶ÁÖk�€B£ŽHüΆÑZܰCÃ�A<``°PwŒÌKÁ¨©Bh8T¿yÓ¿yk…¾yÓ?J±™C“y@C~S¶ ^©µ©®çaÁc9(®PðØÎ¯ÙÙàµZ¥Út ·�£-@Ç ×��!ím*†][(?U ýÃJaÐ%hµ¤.(>OØpßÇÛ±¸hv¬Ph® „Ó¶AT}>0Š0wŒBÌ£2î×,a£´GÇšÞ¸D|`]oYht#6–D UB,.}¿ ÞÿWªáî¿@t´¡ChÒ;F>JèØkà ׇL "G/»`¸_‰‹b·£âŸHgº~þçŽŽŠ• !ZÊF¯Ü•ó.{K�A†ßç–ˆ™ÃÏtåoC•NA�G£¨Æ£S°4ˆK×Iå¥ëäâÒubq��X\›–�H *»ž�‚ŒBQÅ]cZGŒê4Y§ØŠMÁ÷4*/]¸˜»rÔ±(‚¾lX è,ÛÀAå¬D£n‘½£AecÒésO]¬Âê‘YX}­ŸXA\~à … ô‰eïhà¬ÿõ.¯G»EÞ*L,·ZÅå`IkËU@Œ³\ä@ËE@¬M¸ð2 žÆÛäòo`9ú0¨ì=vêÀ¹�ŽAl²Sp¶ªÓ([ËNAˠꓳ<Á:Ý•N/P©qlNb‡ŽüìFÁB^ Õf�!#Ù)X­E¦¹ÑÚ 2D'n K`á-,{ߘö)¦2 E{‘ƒm(¦×˜òÎmÑšo[†]�¬J¡«ì¬ZMxo¡òúráRxüÄnüÑ –üÑ –ЏNœ¤�Ή³9ñ¦82dÃ%¦P°_ö 9®…¡ƒ²…¡Ó…!ߦ1mÜEm¬oc�–Ç]„i»Aå‡'O^0–�‹‘Ü‹å�'}ÐK¥KƒÂ%¼Ru£È�lM–FÑlñíD5þ^XLíülfé/÷¬}l½µé[/-‚ïÄ”�¢íP…Ês… …Ë�ñ2iq_ÞßâãËúÅ}ùò9=È‹ÄÁŸ Ïäåïóviñ_Ža¹”‰ç/¿HxúŒ@Ÿ‘È3Ø;ØØóµ¿N_ÖÐDžÇÎ)»bo\…t×µ�ºæ"¢JÜ¿,]&>›ß‹L°m¡;Z *­•V‹J+Ui�cuê:ZŽŒ*¡Î *¨D¤‰èᩦ^Ÿ§UB�EUB�G‡D zªG zƒD .+•pD�H»6Ò®eœuüVGùózx �þõiùà‹EŒc¡Æqm!ƒÈ]Êê'ìçj±Ÿ«Å~®û¹ìçj±Ÿ«Å~®&ûy?|‹ŒA%gQÉYTò•¼E%oQÉ[T •‚E¥`Q)P•ÜB=ž&¢šé&¢Úé&¢N5GLGL7LUB]0Š„Aƒ&]dQ›ÈΞBüŽ&B¿™øM„¶ ñ,šˆê5Útž«ô%¹‰Ðv –Ñv!D¡ê¢‰Pu×%q]×%q]2/™�—ÌÇK¦êöi¤LF>Eˆë]%6Í«lƳöà“�ÏA>¿FmŠ…)AßBx¤ßéààÓŠi™¨‰¶8ŸP|>%:þç’ÏG>×2ý’L¿d£šnTÓ�jºQM7ªéN5Ý©¦;Õt§šîTS�ÞèwÜè\»Q7ðFWÓWªÇ+Õã•êñJõ¸S=îT�;ÕãN½â»¿(úÆÿ�x£ßòF¿å�~ËmÓÕãAõxP=T�wªÇ;Õã�êñNôàñ×C«è˜RjXeJ©q•)¥FM†”3éåLz9“^Τ—7éåMzyÓM�2}¡A„iäIâà)ë+L]d4/Õµ¯��çäÞG¡Íò¤W¢Ð>ÀsrýƒPëeV¡`Š–¯‹›A§ÃB?ç»Dþ¢{Û†0¤³„!�% é,aÈChµè´š”ZMZ­6µ,Z™”2édQ‰FG�%:ê,ÑQg‰Ž:CtÔY¢£Îu–è¨3DG�%:ê,ÑQgŠŽÞ��¡EÆ R´¨-*%ƒJÉ¢R²¨”,*eƒJÙ¢R¶¨”-*m•6‹J›E¥Í¢ÒnPi·¨´[TÚ-*Ý *Ý,*Ý,*Ý,*½Tzµ¨ôjQéÕ¢ÒÝ ÒÝ¢ÒÝ¢ÒÝ¢Ò›A¥7‹Jo•Þ,*= *=,*=,*=,*½Tz·¨ônQé�ªäyº­‰¨á"¦Ût5`ÔDÔˆQÙô­ÍRü_O3{žfö<-ó4³W%ÔhK•Øè[˜ÀªÇΛˆš‚ñgúP ícÇuq\’aô<ÃXE˜€çÊz®¬çÊ’üGéÆCÖžMw’Fñ<‘éy"ÓóD¦Ÿ‰L¸ ÷=€¤>ƒd:=Ïtzžéô<Óéy¦ÓóL§ç™NÏ3�¾& ©.™ëBR+MÄ  3ƒ=ª \·Ü‰²ny°·PKéªI€�ë*Á–G-·*$aêiŤŸÕŽÊ·ð)è‚Úò¤¾…õ\¨=§™­°¼3MißjîIr×Ó䮟É]õlÉO´ç}K2¼…9i¹‘gp+CÒ·U‚µi¦_»éáe?“³ê3ø[˜Ûh«oz¹E•¸´-¯ôlαY»ÓžÝi‹’$²§IdÏV…�)7ªIW Ö«·E­d®{ßthþέŽ­ïomN*­~£}OÚž&´ýLh«¬oIÊ»JdÒ¯´å_7fîÔzÜéX¿Óö¸Óö¸Óö ÉyOSދm±7‹rúë"Ã$Ø(dI«W ¶>½Óž}§=KïU‚�ôwº^ë>R*[b½ãxþß›òÿÞ”ÿ÷òÿÐ*šòÿÞ”ÿ÷¦ü¿7åÿ½)ÿïMùoÊÿO)“^z•À� j6yJ™ÞhR>™^˜L/4 DXK±ê_òé¾Ï eæ!gòzœ§ ±ö®Bz„¥ ± X…Þ,¯{žDÇ\²èdiKl…X‡Ü¿è1ç&ÃÞsoƒQÕ÷^—=õ»ßß¿¼ÿ±7b-IˆßY‰º7”‰xK™ˆ·”‰xK™ˆ7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=†7ÔcxK=†·ÔcxK=F¨™[uU αÀ�s,òã ýx§ðt#êi{x–wžEÃ�gápGsŽªÑkqµÔN/«ã#ÔðQo¤m"µ8QU—lÇEôƒ›ˆzõqQoЭ"¬ùi'Þ?äÌu¡�Ÿxã'Þø‰7~â�Ÿxã'Ï Y�½ÞVíþ=ÿž�Ë:Q‹sãsãsãs£Cý1j?kêT}‚zT¡�7šnWõèì;Ú¡]‚Ùˆöó ºêA¿6¸J°ôKÇ«Ël†…ù m Ð%˜ŸÐ(B•`~B 5Á�åZ¥hú>Ьy¨~m²š74qh^<ÐÄxà FÍ�š` 4ÃhŠ1Ðc  ±@3�:Þ�zx�:!�z!�®¥�î2]â‚£ˆ7@t§èN%Ð�J ;•@w*�îTÝ©ºÒºS t§hµT /¡ï c”Qõ–¦Ô®‰VÀÒ��eK>²�LÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkIÔkI´Ø/Q¯%Q¯%Q¯%Q¯%Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$Q§$QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#QŸ#Ñèh¢ÑÑD+´­ÐN´B›i‘éšžéŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠ�éŠÍz…õ ë�²Þb}ÅzŠõë%ÖGïO¿¸÷ûó?Ãòé�ÿúéöõë퟿ûø€°¼¬ËòâÂËòÙ=ݸԩOUÿ4„—ÕmŸÝ“æƒÇ—0Ž[yøS¾©Ó´h¯NU±§;¢:ͮЧ€ö ¾Ð§ ÊIÕ�ÚüìõEQz}YW§ã„kXÑl}qê˵Q°¾De¸—U¥íɲڕ*Zç—7ç¸ÒZ­V{}Š Wê›ÖòƒCƒ¢�)Æ©@±1ŠM„_ë–Ñ¢JnUTrNQÉí/£¦RÿY¡¤vžËJÇ»ÌþV±‡m]‡½'ÔíI麔ZÉ“ï U%ñ¥IùÖ”ÕǪ ‘4s�4k�´6Jjmx´¤–ƒ)÷ж_^p·d¥ËrºæŒuͳÕEmæš'-K•BkX)tœ:­ˆÔJƒ§ãï‘Þ…#›W9\1+Ý´ïÊpŬ4hOÎQûêƒB¿kðòUè«î‚[ ¯@•ªm’ẘ§ÿ‚Zlƒ~l¥jk7×GšÚyº'@+·@óX¨ƒ]¡Aû" ÿ\iÔÞàj]é¿wSæê¦Ù•¼�v¿v~xr¡x\6îÝg¯<< ¹ÜpÙr—ï°1·áaŠ�Y(ô›+MJS·á!›>ÅÀgÕÀç]ÐûТƅ≴�N{a×¾g[°s0eçSh‚>~¥u¯ˆžœà`/4Ãå·Ð¶P‚'ãeý€xYß÷qS|ôMuÑêáìÛ†.õêñ»9%¤r@l“ˆw”ÂÍꦸü›âƒlв)>È–µé´eÍ_ÚT¿mXÛ}Ñ<ŸBáÚÇŒ€ŠÇíAá|Ø•‘¹+�rt¥‹p9:h€>Á#œÛÂÕµ@í� � ôŽð‘42÷¬Óö±UšÕÂ4µ§â©»k‘„a¸³A¸ïgî›}+�„B÷oß´†ßz¨QÓ[kxð!xƒ¢Í“5½Þ ¼»òÓ¡åRß÷µÞÒÑ.fxþ̓ïÅêYÈçÄú îñù÷>ˆ…�©þ ûÓˆniAwK|»u1ò 7›n·‰žbåxÄ}A?ñQ þ®Ä÷bà7§¾?(õ�ØÊº¾‹™¾´ßðñ|¿ÿwb¶—¶»è—¶ë}¨nÁ¦[°élºm¶>m?”ŸKw¿C¿ÿõ�X²½4™Òžn–æ½Ù>áfû„[2uÖ-›:ë–M�u·}ÂÝö wÛ'Ü3³HEìÍfCÞVÓ 볞> Ý­ð�˜³ôÂ[»Ë˜~©Í†¼Ùlț͆¼Ùlț͆¼Ùlț͆¼ÙlÈÛnÓm·uý¾‚ŸAú^ìnù„½Ö Ñæ½Ù>áfkÞ›­yo¶®¿Ût»Ût»›t{t燘šÇâ,6äa›YÛÌzØfÖÃ6³¶™õ°Í¬‡mf½s§±ŠÙ&à»m¾ïÏŸpõÙ7X,Óãšrô A>èņ„ŽQâi`Ùéí »À¯!HÁµ‹€œ$¹ÈY’!R8àC�0T`Ò L¬Ø¯ ½÷¾½•Ÿ[iÝ7ËÍÑxƒ•'Ïé³WÞ¾æí³—»»ñm‘Âä~ô§<ǽµãdÇ ®Ò©ÒÓ;Œw5ŠR¾�¢‚Fá©‘p4Ljf ·xl l %~lŵIì¦�ë8’ëIGƒû¤¿ dñ¤�\̧œ<ÊÃp`¹Äïä›öv¼DÄ9—ŽQª¡cYí…V·–9y+Nzö µuQ†Úº¢¤@ƒÊœ,؃\P£(Ù)œ±•&9²6)Â�'°²t¼¡ÚñÆwÇÍèÀ ߎ“lÄ+IìNA†¬Q”Mi´lQ‹f§·h†Ö·Rµ/Qí`£(4†¼‡F�óÐ`óÀ_nZ+V,[íA�ͯ`´•�ò ²Mn÷ÎV«¿À¨Ù^@}k‡òrß pÏ Üq¿ 1²ëêk¢›Þ„çºvn uº;Wùo¡!.p‘»û†à¹}–‹A&–ëA&ÞÔ¿v ãÖU‡ô&Ýß18Ê9p�·Qƒò£‰�oÕ1X-Õ›œ¢šXÿl´Ru 9ƒxc§ x¿Ó,G\:{éNAÝh¥p¶°Ä�КÔp_”D¥ FæÝÍ£càoܨOŒ»yí³tóÚ終WÜÚ5/—NŒ'^Åxâ�GæÄ1´:Tì6(r•ÖsºbDŸñÕ‰Õ&í[1yœ9t^lP°QëTÞÔª~”ú`�CT™î%ÊaµAÕ÷FàQ5ªŽÅ6ªÿ­ÚRY�Šõ:(6¹ªƒ9)�‚�Z¥^YØXý ü·ë¢L%¯›?Ì�üQFV&N ¬MSœ™X{¾'ãà³A’d`¼J­8…2ð®÷ˆv cƒØAÇÚ*çµUõ(&Ü©:LÀi‡JQ¼Ã¾¸Ê=…£à£_ÇÚòÆòˆ±2ˆB;µ¬a¼ (xÅþ…p¸rPùJ UŸ¬Yǃ*3.j»˜Šî¼µ@ÜZ8 nP[‡œ¾9}¥qúZâæZß­¬%n®%cÆéK�ã^Æ#€+¾9ÀÀdƒÚv¿`pSÇÄõ¯ÅéØ1œ�^:~árlpl© Fyž�ñh I-!©{þc˜n(6íZ€vfêÓNü qk‚øØqbVlè _QR±SWWx²€?Ç9l/P‰ÎÕ)úV7²âc=Ì“’ÂHELÄdçE@< p\ÄB§‹@q85‚TK}åäÅRç —ÚÁÁj=0ØþtŒÚŽÑ\ë¥|î;ôn‡WG ü‚å;®»XÝtHx|61 ›8<8š€Ò»UÀIWMùÚ¢ îÔ) —œ<(“¸ð(•2_¹2C]‹ aõÊê·k}PŽuˆ%lWµ›wÝFT±ó*�¥ã W�Mm¥]·2Ü/11p †»©~A†0&Ø tKFÕ1�n ¶Ñ©²òÄzó•*C¾r<†®bñdÊÃù\16Öf¨:UÌe„u4ý¢AÜËYëåŒ3Øk#3ãüÀ5Š«�ª®®]À­¨»†œzC—& ^Îvá»tÖiò„Gk×£jïOÕA�ÇkçpÈ5ŽÇ\Æññ�A§cp—[Ç=„‰Þ]°úñ®^šŽ{¯r©ŒýÂ7¥ñ*—Žz]¸\Î88È\ ¢å+ó=ãnǚч׺vŠBñ¹häPXn7ÂýF†¹Â5S’•lßÀ«2Xº€û=9œ y¦ÅÞÊ3�(öVVò… +Ý‘ƒÖY[…Ëu¨(K0°S\‹*²kƒnǨÀ �»\UÝÑf¼á¾GŸæPw`¼Aèoª€æ;W�+èØ«˘ò¸ÅVkXm8E!Ñ{ E¤€BÇCgPú©Uz9ÑÓWöTaz}g„ïŒ/#Àñô5�õøüÒNåA0¨±í\Î?¨lÛ•~§À4 z¾Ap@³AàSxX œ)+8Ž:ÇçŽ�TŽ„\¸hGN.®”˧qO*Oµ“‹>ØÀYŒ¬ŸTt�N,® ãÕá‚Ö)86(ׇuXd§mPÙ0uªêÜOh€Öè'4@?¸q¿èF·Ê·“ÊùäJGõxü,­¸åsPy7Ú¨ïß †WÁ»ä¼`ÉÁ½`)5ñÑ×*^¥ØHÃàï 5c±mŒåÖÏz8üôS‚·Ù¤R±�¢ìér� Ñ œ0¾è”á±Ò¼œ!ø§'WˆÒ¸ôÔ†6VgÓsïuew´SÙcP{+HÛ5²v j÷Šfxæ&»ó„ÜÓä­°¹¸Â×4ˆVÓ�åv§À‡T^–N*Û³“‹—DœX¼$â‚¥Ðê‰EËpÁÒz;°l •?�¢Ò(!—Ú ¹=á\hœšT¹× £÷¶JSÔ�;)Iså°/:—Œå…‹ä“ËQþ“‹îωÅÔÀr™á À�4ª l,Åc f�+ôŠ5˜Ùcy$ÄQü-¿Ö÷{šÅAV³¿°¥ •½—“b[Ѹ˜h9±xÿ‚¥ õKY–‹žÓÀò¿SeDX?R©°’_ ¸-Ѽ`„¹`¯ ú‚N &|o£Y¾Bí¤²“:¸M4 AÒ9˜ª�‚¡Ý(¨ýî¤*…LPj „¥ 9œ¥ â_Â_dª¥$:\AÜtbù°ëÄrÊñ‚å”ãU@L9~gëU@œ¯1'ywëWq»>ÀÏÆL,‡7q½�A\¯cTd30¨šŸX.¾`<dž€Òø…oä²ç5¸¼û8ª ß7›hð�P§Í Åá¥.e±O,fÚ.Xʳ]°t³ã‰ÅÐý‰å¬cy7:(p,;Um ȹvºƒ�Ghu¨È¨Î:eés� ÚôªO¯‚ÑéÛ‰7dÿ†+ÜØEWæ¨U-XÁz«— åÂ}.Æøðv¸à”•fÞ:-|YhYL±¹EóhpP$Qq_)ŸçÙ È«š\à49pÒcp`0ÒF˜5ŠVªBá5†â�GÇ`;T)òŒ+LJk‡±”¡?EÇ VZ:$mXöx:Uz)Àu´R$é]2±ÒÖ¹žŽ·Ä“Ë ï�AÙîÄJ›‰?ÑüaÖCGªÝè&ŒÁ럯ðî×vØŠÒWƒHèÀÏÅv×·;¬¼»ü²Âs»»öC�F8mº Ó窖‡ êúc ýòXÁŒwºŠÎÁIeêÂÅ`âäÈleÇr€fP4;–×ëAÑí̱B=ì.¿´RH¥ûCgâîW%½1(:¸7¹GÛî«„p» Èöe È;ç“ˉ÷“ËÁ³ÉÁѳÉÑ¢08Ø›žÐ¸é˜ÏŽÛ%e°ysÛè>oY®bჀäÁ~�Üò«€¸Y¾ €Y €ißä¸ëÄr˜m`d¦;«Šá¡¦J7te¡í2ì{7ó¡b»uŒÛmÀv«ršob¹vc`�ª¦:Ò2ñ^È+6Ùa;1y ð�ç]ÇŠwLÅôÁcmk+¨S¨ƒ—¢Wĺîªá-�ó²Ri© ê­�“ƒCµƒC¿qðUþaŠ+—9$ÄÀÈG ißÿA"JÙ¦`š]$À<h& ެ|çÈKžì0 ‡7ݪö´r[ýàÐI\Vtr´B®Œ”Ε‘2$İß ññG é×¼>JÀ±4$ðXx,U e,U®Ì»€W¤’+\`frpÎnpm¤Ro¦V߯öº÷›ý0ÅËtl?2‡©ÒdÍØ9?( +ù¨ø¨üØP£0¶âãyO”0F¢|ÝÓ‡n€W„¬¥¤wtƒ0ÙE%“Ã=Zã(ZÖ1¸<²at;Y¥žmmñŽû˜W»ÐÓ׿xôöm 豺G ‘Yü34:–ZüC“ƒ O.Ÿnøy{ûA}<¤bn§[š]|îõ“‹ù´ —­æà¨*ò" ïC‘Á“ç«=0ØHwŒNœŽŠO.ï¡;F^N®ÿ9ØAwQe  jÄ!€¶Ø£5©aÒ6ÜÊ?ñ¡œ´è_°¦{ÝŠ‹w]¹Tñ=9Xí;FÎ@Ãà"ùAå ì råK§AýÛ¢�Ö])š‰u¶H5òW.ºz'—ã'—Ã'“”.¦)O.ßÅsábYà…‹×Y]¸xÔ…]±>¼ã´  sç`õnuîxÓ›\™Zi‚‡�Ί•J(ôÛ!Ê u 1'ó˃+Æ?¡Ðp‡O3éú‹=šò£Rî ;EwèN~3gr”³�\®q¿r4`.âÝWW 4á®âþñ*Fý�QèÉÁyp¸ÄuŽ¢Èsd_•°÷UÊ<âãc’劎7@ NïõÑø¬Þš{ªüùsßf§Ôõ7 Co•¢ûp…îôà(&Ò9Œ‰ Žb"“ƒ˜ÈäÀ"]x9J&Œú«„ì3_$Äã^§ð&æ£r˜ŠïîQ¡Óq�­ò)P&½°Ò^DÛsð¢÷xë‹@Häbù×Ðú(½ ÈcÇ(œ30(ZèeL;F9ÑŠáV¾Ò ø©tê‘éc'•ÂðF§è(N._,r¹6õÊå¹ònùƒ„è$^%²¸ñø !Ø‚T ¹PóÊë·*_R 6Ewÿƒ„è5^%dÿì*¡‰Îå䊱ÚpP«cpïRÃêLØÐ¹¸Jw˜åéT]çv‡ÃF“ƒ°Ñä�€ÎåÛy?Hxq ýABÜ2]%ðxŒ þýABŽ&\$ðšÜÄCا@¦ïÈõ`šú9Xv€‹ÖàâVî"ÍBåʲµ;\Ó69gŽj•ÃlBîB¡°¤¦St7ÝäÚŠ\¹6!ç¯á÷Ã{(?HàÙÖ°ß4 ßÔ”çe˜°‘Wp¡Æ•³Ï_>¸¶êìðw�F?ºRh�^ÐÃRÊ©+…åÔ�jVãØÃj'/^‰<úÇccJ 9àhŠ ø@²Õ¤/pžN>Ò-xž8χ€Þ œ§=@e×äØ=iT×MŽ'�V¹ß±2�ðQ� )ÚkddÇ ¿}­^pÛЉA@ipPêmÝ:ç¿öàÅAa«wîA¹cUèí*+Æ÷£Nú´c0Þ:U[M±×�“?W¿ VGTŠ~2fP¸ü‚ÜÉÁé�ΡC69pÈG‘†ÁÁ¯ë�œè‡’]ƒ£HöäÚ D¿¡5(Œ³Ž¢Çƒ«“]‰wŽj�ÖÚfë5È iàï¼ ~rb�émOµ»£_'ToÕ�̉�Œù�Œù]Ú„|X"ð‰ºÝ׺¥çÕëÃßã¸þ±»*çíwùââ Ö‹€a=@„õ*ðÝNáÃ7ìøly¿Ý2(ØE6 nMT>;(ßw ÜúNU­žíúÒ á,wÀo{_!…>™\Øÿ}x¬+®µõ·E÷ú‚E§ðÂEŸðÂ%Çwb¹.¡à<x6L••›nkNEPˇ5–“„ƒî\hÒêψ!Ù‹€¸¡œÜ�JÙ) Ÿdµ:Ž ¸±êÂÅÃ&W.Å.åØžúKi Ò£Q„â!Þ˜n³è�`Ín3Wjs)íyüØd)Ϥ‚ŠKzÆJMZB  °BM,©ˆA`Æ'%·„qRqLº¸0Lx×›$K²1åÄ(ç—�º~€²^qìQø9üY_‹º iïã8ò¡àþ‚‰5³µ¤ûŒ”«8£Ð8A-“ XOàˆ©í îNáÈ0‹[VÉE‘Fë´€†pƒçq´6{ð‡8âÿ÷;J,¶R‡¢Òþ=­ßXË·©µ9蟯ó³ÓãT¾1ÉI(yíÁùõ±©ìE µø›�K'ìAð?HÊ‘§&/ì5|ÌÉí±ð¿äxtïã_PKÒV1]º˜¿Ì)imunify-security/inc/App/Bot/Category.phpUT ëÆ«jëÆ«jux 臵WÝnÛ6¾¶Ÿâ¬(»ð�š¶»H—¶Ž£5Ƨ°ãfÀ:´D[DdR#©¸FQ`{‡½Ø^aO²CR²åß9(¦‹8¢xÏùx¾�‡?¾M¢¤Ü|ö¬ Ï -’…dÓHCåï?«ÐŽEB—ñô3¼Ÿ�¯àûµ¡�˜è9‘´À©÷Ü«Ÿz§¯ ÇÐ7^ô©¢ò�†èÜøï²€rECHyH%´»7ÃKèvzÃ_ðoÛï |h½ïûþµß»5ó#­uÖlÎçóF`VŽÍÂ�@Ìš1�’¸‰“šå2'3ªPž�îSg–r6Y|j%ɧ ¡_—ó$ñ‚˜(Å&, š øC§B2ª€ðtD™„�NHk�ø±³C3Áµ$�ndù|$qjl$…{šh ’˜0JKƧ ”0Î f\ÇÁ—¦„Ç ÇÁi±˜W˜U5³Â„MSéâš°Ø f1™R®¡ÿ¡ 1YP™Gað§§6”v–",R�¤ºwW�[¿ÛÜú—À0`ü>å¸ã…uœ°„šN”ñ7�˜ÆW¥1 šãøCÂŒéD {›øÉ”«<šËl`asQˆ—Äé:¬ ƒ…XÅÁJ%7Z¦:\Њ9F!)™ü"Ðrÿ¢x0CdmO¸€„ʺ¤¿ãþd± î�$IŒûüþùã/  �KL, ©¢v¥¬“ñ”r·T•«áu«W+BY±2Æ T$¤®L©ÉZ Ìí¥÷ÂøÇ¯\·°Î;7ÃÁèâæ¶Ú€¡1Tæ#bP©B_ûB×­Š#è%ĽÀÏ)SQŽò;Ä ±zÙðž%�ƒ³�Gÿ¥\.a-aîý~ç§Ž9ø­~ûjä÷Þwz>œÃÉ•¦J‘¢Dшò©©�×[–­Î¨ÝoÝuý>àS´$lH2�©Üa6ðo vë Šm»aoi‰à@þ ]Ê—–c¡‹?÷nîz£Öðöæºej{eqϱdF$Õb†˜„+£µ-€â23³€‰T­¯b÷¶4ˆÒ᫉E’­O\2ÊR.%*á.ö©N%Šé!§¯jðÁèKÃLµÓßI7ŸHIf¤Y.%é£F¦"˜¤<°Œ$qŒµó¥\*mF÷t¡* h<9;ËôÍVšÂÉULäk!¸+“Rˆ„dŒìŒÉ˜Æ–�d`Ô]ç­õ³ÌÆÊ´!Éœ£¨X¶ÍY8¥:— mÊÕÎèô­$Të'$* "C¤�Û^‡�‚ 1 H�`Úê-ò},D±´*X0!%Ä©3<]FÖÞ| ¶›|m‹M¥àÐAÿtFÜ~ }ßKø}Œ|£QN>fµŽ–àh©NjpÂÜ™VW4H%Ó‹¨ÖvøÝàë¦ßV2ò=Æé›7�âçGxÝÇÜÌk¾¿+úáq·z,=æHî#"Ü'™¿ë\+Žt·OD2w–kG¸Ù'1™›»•Î@çÃ!†ì¹40¥¨ÆêÅjýµPÿa¿Ý1zljêjxC:–=€;ëæ,žaW–ŸÜ›2òMe¦'r )sêƒ[©fg›ÊÛ�UÛ�·�Ü.Êã6µÙ*ðB7r±®Ïpsr|=ƒõוì”ßoÙoþâ|LókÝàî5Ë Õ€ ÔX[ñQvÀƒ5 ªÿqZIö`6âØjÇÁu”z¾ð¼£ÔðùÎi[úöƒw”¼œ%k¯Ž’ï(ÅðŽ/§y±2î"j;Þ÷v5­ÜÜÜ=ÛW×»~GÇBćéVè‚·È–ŸÄ;Ð;??ß«B;’�ì}#Šiö@·ïN tDl3ŸÆxZ˜› 2' áÿA±ó?ŒÂ~uz³%9O w{Y4Ê`¯à.Œ1imunify-security/inc/App/Bot/RequestAllowlist.phpUT ëÆ«jëÆ«jux è‡uTínÓ0ýÝ<ÅEšP;µI™àÏÆÇF©FÅ>PG5¤mš<Çi¬%¶±�uêþð¼¯À“pm'%[¥´Íõ½çž{|ì×ïT®¢d{;‚mIµÔ|ž[èþþуQ!«ޏ¨îá°¼ùÏ7Bg2³ ¢Y&‚ÂÎðÅp°3ÜyES‡b`Ê Ów,Ep‡Ä)†¥P‰”i�Î>ÀÑädö¿G㓳1NÇããñÉ—Ÿ[«Ìn’,‹˜ºÎ…kSY&›“"Á¤$Š)™Q„²@ϳ»œ”•àÙòò@©Ë÷ÒîEÍ�§{#DQÒpË@f޳\ÜØcbiŽÜ¸0–ÊL\so¤+J´æÌ`šeÂî.ÅŒ…J‰?¿eÅÊPd ãÚXÓ=ÿì‹´ …�??Á¹”#Y–L#ÿÙt‚¥ÜJÍÅf!dpÊ�—S; ;UØÐôbÜ6$«+j¹5?n@éZü>‘bd=#K»=ar©í€rM+Ž›…Å6g�j`Þ#�4­0Ákå’ÑÅÒa¬'$”2…(‚!A,!6>WûÚPGsÂE#鉃ºPÅZÐ�׌$58Ê€>à LCYS-•Â-4ÒÁ(¹,xØTa±¦Ñ„´�K šã›"6oúïŽ; /ãa<ôN¢1δ~ܵ\ð=Š:Î<�–{üµžÿ§‡ ézýÂ\› ÇÀƒìßýŸå.®ÜZu”æwm¹µÆ~ƒãk²ìööZLÎq`¨T-×ÚËN}RÛàž-ŠhRäV¯‡>¤7,«›‚SÈ*|w}½Þ³n ®‡êu:<ƒ.ÎwìÞ>¥n½ ŸØÒìB¥yðÂHÝP]äÌô€ÃÀ_d½>pÕ÷ �4+¥e×$Mu*‡~A>¸‘²xb‡6o€¤‚J-Á7Õ ²o*Z‹‚MªÙÀl´¯y¡1X[ð&žá5èVÑ*ú PKÒV1]¥@gh€ -imunify-security/inc/App/Bot/DailyCounter.phpUT ëÆ«jëÆ«jux è‡�VínÛFüm=ÅÖpk)µ>âºA¡ÔIdYI„8’a)H NäQ<äÄc…Ô@û}±¾BŸ¤sGR¢íµ~Øyœ���Ýå¯/Ó8­µŸ<©Ñê«t£Å"¶TÿûÏõ¥ÊBºIvMo–ó·ôí[Ù5Óüˆ†I@Ç�§�æqçøgêIIWÅÐ7\¯xp‡!žR–„\Sÿbüáœ.†£Ÿð·?MÔ{s5¼Œ¦î|lmjºíöz½n.²t�[�Z¶%_0ÙÆ¡v­–°%7) xNϳû<\f‰ˆ6Ÿ{iúùLÙçµ2É+%³ ã“f¬2Ms©‚/wY?((µƒ£½ÙŶíóëÇÁøfŽ´Z–Þ¢©\”¢­±UcÅdÆý\�P´qžy„0Júf)Û$ÍæÀÄ Kr­f³m¾õmM�v¥9Íl ÷÷öœ¤ÍeåO+>ß>tvv¿S2\FÝn¥#[TÏѾ;=ÝEx¹»ìÒW“@¥¼Û͵¯7¨ô›Š¹±[5_ºq}kàŒLýØíŽ^:�fgãþ;”0™šü¤ŸùÅ­‰¦ô#6ô €)ªÖ¸.7ŒŸü‰²´_ �ý]oL�µ„É÷ \³�iBKƒå‰Î(Ga¾Â ínw•HÜ@Ü÷(˜ŸÜÏu”x™•‹v·" ¨ÛEy€(Hrÿ¬ äQ"±À:r› ?Æ)K8âÂ,¡À °B:#G•ŸÁö§©f˜.�‡0ã Žwc µŸ ØòU­|8F;é ú*Y¥<ÎZeÒ¥I7”vøLq߯OŸýXAÁ [â4³ ‹-ÀÇàeÐÁbÆ017ZòO…{3j»-Ï‹bÓAYvÚÞÒk;É¿_*ëµÛ b|©7Š‘•£•á-£y€õ[âÖ+±ò.|~�R·{Ë–¾Ê›/ RÏ£;¿{”½œˆë¬›{­×|!Ê&@ümã=wgÃÞm ~†�­ôdý¤óS£0Ÿ‚ܾrpi±Û+râ ’häÐõ<‡âxçt7¤\å^°¼©ý PKÒV1]E¼µ/ 3imunify-security/inc/App/Bot/WooCommerceMatcher.phpUT ëÆ«jëÆ«jux è‡ÍVÛn7}¶¾b‘xµ®‘¾Ø5ÕqcŽ£ø‚$H ›Ú¥$Ö+rCr%/’íK? è�õò%=ýH¶“ @_ú"H¼Μ9sF?<Χy'~ø°CiÏä¥U“©§Þß¿¯Ó^fДޔ.®éÙlt@n,�š±_+7èP'´µùÝf´µ¹õ= ²ŒNÅщtÒÎe pÆ?R‰ÔN¦TèTZÚ;zqþ”Ž�Ï_ãsoÿøtŸÏNö÷ŸïŸñù©÷¹ÛŽãÅbÑOøåŒî'fgr"²‡âNG‹™t¹Hd^ˆîÝá¬Ðj\¾äù»�ßé4I"<³È”óôʘ=3›I‹›Î+ÇÖhOB§4^.DIÞŠñX%ý:�³©¤™ðÉÑ+GJ{©½2ZdYI¹´3圚Ëm‹ÌIÊ�S¿ánJ¡Åh|Çs$8ÐaåûB" žH™{1ÊäúF�¡‘h…Á×IÐÈš+pFre OÆb=µ&Ï–‹r†¨¢&…¯ŒDrE=-çˆ{å�&­§ÒË„óà¤ÎO£‘@•¶y‹(¢8ÖÇ�—¸y3.x FR9E>÷ðø\fÅÄõé”)uá ðH”kÅ—˜œu ÔeÆÕlpa”ž`9@WÒ„‘7h1Uxç ´q¡µÌyÎ;†_$‘øU\“ÔinP#Ç¡·^”nù›+�»ˆ ß&¼È£_�Ññ"‰A³mŽ˜¼’ø+ˆÂ5d{²zF­úÚë�ëveáW®ðƒ+ÈÇíÇGoŒ„ •G¦Æø&ÆÞe|¹Ar–{¨JøéWø2Vèšë>úõr½C¼©B¬Ê–í‘ñS2ãši¨Ë–‘°“J õYx½}‚k²LÚ¢ŽãÚ g�KI@…‚8$”ßÚ’+ÕÒ^a‰6Š2¿½ç\èóo‘/sE2†—Vs%Y‘Êæ ²¬7B QP[Kçõ%—95é$Hˆ¦¨C™Öÿòz[º<žoÅè@ïn¸ÄŠ\ÖÄ8¨¤ÈÔHõØ–·*ñuz`°–“A¹­\ÍAáVå2Šr3:}_ Ä FÛv©ÌT�N¯Ò­È¬Àá hgv=ˆ¥ §Á¥‰P³.úd¡iðóà5� Z “OtM *®—iyqë4Ê w[y46¶­dó¼•Lî�6:ª37i‘øˆ�Œé+š «ä´¢ÜúP¼P¨“�oòhër½nÜ$C¸¨3Ð,+[Ýi6DÄ €×-Àut> ÏüIçÏÇ¡„W*¯˜ƒÉQ¦fÈöå;›"ß±˜›mlŠIªÊŽ•àD^É͹C·QØ‘‚ù£lç'G`?8'¼ßNÜþ¦W¡wæR+©ÑŠã¥«øÐô¬dd°òT«ŽÆ�±�˜58VÚå0cŠÛEÐÇô“+í[ïwC ‚.‘âB¡C—)ô0©¥fÅ›¤àá Óu<éš×Ÿ@EˆýQ³¿Fj(ΪÅt:k.`1¢¼±ÿñcØqÒ/—ßv «º¿,w/¸{õäK'ªÖ¬ô…ÕÕ„ÝÁB\»�3´{ûïÆ1Át·­&šÇö+cÓ!LÀõ_ ûƒŒ},ŒèŸêÌ\?ÖÉ‹Âfí7Š"vŽèվ僇îÐ"_90ePÀcb.TÆ#ºÏ�¿ÝEßXoøƒíQ¯Jq�ÚëÈoÐð`xÉ^ gœ0þøÔ”nÒîn@�)ât5XºÕpïVìU¿ºá`õìM¼-Z¾¾‰ÙüKXâÖ+ÿ{e6wïTt RÕíe˜| IÌ–=Ë­\pKïz!7ž“²B¨Z2eÝ×ød=Úà?áï_(TˆºÛ¥{m† à; í_Ýùª2ÿ¬&ûî¿PÝËóý“7,º%¡ÞÂ7º¯B~¯>¼A÷a¶n«i{^~Û]qÓ¦÷o¨‡þ×7ó/Yª oÅù©ó©óPKÒV1]…E^‰2…>)imunify-security/inc/App/Bot/MuLoader.phpUT ëÆ«jëÆ«jux è‡Õ;koãÆvŸí_1Y‘”è±7ímm7‰VÒî õ ’}Ý`0#r$MMqx9¤e¡] ýÒPô�õ/Ü_ÒsÎÌ�C=lgs[ FâµÈ™óšó>£ø!]¥§½o¾9eß°¡J·™\®rÖüïo±a¬Šˆ�ˤxdÖó�ìëÚ£™Z䞉6›$!ûîõ^w¾{ýÝÙ ŽÙ¡h6Zd"àÿ\†"Ñ"bE‰Œ ϯnGì|ryûOð{8¾œ�ÙàÃt<¾_ÞàúUž§ºßëm6›nˆ˜cDÜ Õº‹%�{°¨wzšðµÐ)…!�¨ûy².¹ØþK3Z%fY„Æ#ÍáÕå H"M¦ì[vÌÆÓ?�§m6/di§üá>$�{ªPÆm‰…È€ …ïd¾j¶º æI–å"[ËDê\†–`bPè\wÙ ¿G^€ÛP%9¼f‘ÌÚ;$à�£’é„§z¥ò6ãITĸf<[k€¡™Vó˜ÍJÅ‚md†"yÂæ‚‰G‘…²RŸë�×·‰Ì�Àg+•å�Pfa!s¦2\Ò W‚§Àë184•,ñï…ÌtÞ²ñ‡.›¡ŽflÉsÁþòoÿÅÌi!)Bì£ßç2˜«<ç‚DÜ-‰¾Z,­‘Ø[ó$·:ÿòÿÉR®Qp™*–+»é;@)sÑQ›Ъ4ï¨"'Ì“‹ÛËÉûŸ‚Á$xwu\O¯nÆÃ›ÉÕ%Û¤CO‰>êœ'91/âœåY!X*ŒV¦`™pL"•a—�ÄB&@łǺùÿæ(‰ †Ž9Ú‚6² ŸÇ¼¹‘ÑRä�M&sP‘V%¢÷ˆò *\r��—ÈüVqAêÛ¤Aæá ” Ñî°x÷¸ˆàÏñl|SÊ…5SµâÁì3G˼{€þÔà— ’›¶™a{º*ÓX†2�·%7 Ñ{`W%±ìÀƒ¤莅¿RL¬<,+%6ßZ¾„Ó²`¢®•I¿ÿnp>¸ŽGôæ6¹O€2öÀ㬑çpž[ó-€…S��`ÑØf"s410�m³|›*”Ô÷Hj<8Í2TüX®%98Ðå0ãzeí½ôwî¸~5Wû·Ý×Ý×äÃõ¢8Wmî_NOOÐužÀÚKôÌL-Hê2íd,Õ8UôJ™Ü: H.$ü­ÏàØErº‹pÖ?Š„(2�z¢ÀÀ6I§ï\©û"mYg‚ŠŸKR#‰äƒÑl D&¤Ø ÓF6VN©LD–Òßä+m�μ ¸®¼ÈÐx™Z¾„£›\‹|¥"”ߊ¬ ÿeßvè�"f„Sêä\„ Dó•(oÆþ¾ûú[¦·IÎÉT‰8ZÖ°vœáâ?vÿŽÀ Q:¬ìWÂô+ò½\¢„9hFÎc»Ud™ Zµ7+ rFÿ‹`êQ¬¡18är Ÿ¬}°Qbà‡á0ª£ù1#ðIïô$É£^YQ-ŠÄ„&s¼c:Ýk§Í¨Íɉ¦ÉK¥–±h´YcÇ‚ÿò45 ÐÝãÿK…ŸàxƒµÞœž|þ�Ê7˜ òobx_±7â(Ù. X¸ËWp”Åntè�¯;ñeBärh¨|F‚€\8,”’JÁSËR^ð/Ä �ç£Ì·ø©7Jˆ„\D÷×ìl|õÿB²Z¨Šv•‰…&åäÙ}¦p˾¨f=rãG!iÁ(yDf`UÆqtŒûC/@p“Ž•‹ÉÝçÔl˜å&krF àÀ{ؼa®°Û4‰Ä:UÔÒAÓ|!0Š¢…`¥�)ÿÖ…¼§�åHD8t$4»ðÌSó·†óRöþ»ƒ’>vàvÂotTÍê�¥VŽ'¾609­’VÀh4µ… ~tðKßÕüB>¾†§û¥òÿÜ ÷h¨;zûûN©Òr›9•¿õx²>ü‡Ò2/@¤‹9À¨À0�¦Èl5ÁÍDÌ’ð.kôðvÓiÌC�Lmã‹6«0µp-¶,,`Y?§P÷å2A_r§²º õg÷RÍÐDC�±ªÔݑԡ*2¾Q%ƒ¥´³}GŠw+aKl`µÈ¨3ïÊHêiÜ]w†™1ÜJ\¥¿…ä-‡¶„ÔWaöI]_ÓøµöîWÌï0EP¡q�W“ËÁp ä8xÖÏ õcp¥ ñˆõ±ë¦Rº‰e�Ëk‚ö °œ…–âW�uBzvw °3Ä®Dœ–Y¬ÉL1ƒ=¬Ï©Ô#ämhØöÎq‡`8�šlš¶#·�sï ÓEae��V]' ¥C=qʧbLyqAÎ…À½‰ B*•�Ù†±fI)IfWÃQ|NË›vFé =·8T¢Ìyx�‘G‰ ûÉ;�ÀßM.GWwZ ™ÍZûb…À÷¯ˆýÙÌŒ|Ôq5@a¤ýÂfßR¦ƒ›qp>¹˜Ü†ˆ½ ‡5ùA39´×…»iÞËx‰F3# )O±ó<£¡ó‚p…ÅüçF'–»fk/âW1C´‹%ž§ÃÄ ’ ÌI¬öηþøÔƒåIãÛñgÂÄm{Ó z ·©Çĵ؛ùôf7ÓÉð¦wqu9¹¹š>çûŽFœ}kv´+¯½Xµw"üc^,4CHçßÐ�[TNÏUӰɧ­K-·_éÑX6\ 0×ÂJ÷&†Ö[ÙÒÖÏWÛ2eLò¯ª™fy1¦Êjˆš$ñÕd†u‘ß#ÅN5A‘ZSUq %.”� ;V‹L½îÌßRæÆÄmV$.-n3•¬t©…IÃjp^†’$Çþ/Nbr®ådÛq„¼Ò1dërª„"{Å8öâLƒõ•>ÚIÎÇ‹WX„çxš |ðoFU=€ˆpȈõIÜvpx#¬ä1àü’p¼‰cØÒ‹LK®{fí”Ó;‡§SÞd¬&Í%”oY”­$ÈX-Q%Ô“¦¦ëh![æÛÞžÒS¡„çž!5!-mÚfš—tÖ+ B¿ë4}Âûýš*6K'y–ñ >ƒ }b4»Ly Ð:N×ÿÃ]_„ïàZT§�ùÅõý0]ÎÜD(ƒ4áúfÊzø~yˆó_ÔÔ@ºHÓXîø‚_í™îLèVF%(b»Ý%@^…ùM¢ÀþÕ½3F ëÖúñ‘X§ùÖ çÉô¼ë480v>Tª8€s�b_ œ¾ÏG—a+É ”Nëþþ\HXÆ0H8+Ãø’àbÓ«’?¯§‡p@½tN`æªH"žmm�' dÌ5 „Þ ¹cW�ÒŽ À®1ÏsH0+þ¸â¢¼Äâ¤d“@êÅ[œ%*é˜Ú×8t¶•"Ž�p`n™åØV¢N]#ÃÎ’`nVÈ¡é4`¼Ý·“Ã~b´sö�ÌÿhàB¯rªZÒÚXQãHÕÏ^ÀoÓ”ìÊò¬ë âý\'ÙÛÀ(…ÞÏ¢¼™™¾“%MJü­ê6Ñh;ˆÆK¸<±ò¬$½�}�ßÐßa1lÔ­2W—ÅG9ö «ÉN¶þº0›¸{Á5?'~_Æl£Ö6}°XÜ5¨ªØSƾV6ù(2Èh-3šºÑcÀã�¢Ìo#íôƵJ]ëÏV±ÓÆ3ê[ïjèiú£öÏí:Å6ÐÚ£·íYÓ1®i$±L16 {ƒ4í½Syõ‚"*i¸µ�ön=Üâqøl;êïÌ“†M=mVÃûMfànY–æÃ#M ®ó}9iœ$`�þ|ßö›ƒóÎ Û§Ý™Ù/‡‡ þzöËá±h�ª­§v_”X1 £¨8 ®>«Ý­:Î-ÙáÖ4˜ˆ"pæ4‘ØE˜· $¼ç6+ß¾jzxr`I¿?„ÊñÃÕô§àbp>N®ngvX®á=PÏÒ^Á;kŽ—÷TA7ý¶íö ’Ùx0~ Æ—&—ã—¡©ß!øM¸®‚átpw>ž¾“*o&ü<ƒI‰æex¼ >óûÅçõ{EÙ)•íÿH¦_„ðw÷0>φÐ'†oÜY•¾Ôd+�Ç,·×c3lªP¡ å~ �m&Áæ"ßÈ ½›.˜Ý•�_«j¦kÓ þT)N®1ÅÃÖsà3…7¶,¬�£·2û©kPöà`SAB¸[ˆ‘]3âq Ó2ɱªÓ‹S3ðs†¯e¬æ�îAôˆæä3£y A‚|)Ècº;¾§4h4Ÿ™×ï9MKûýˆ„^­éXƒ]¬k.í¬ù ¹\'ÑÒXõùÌ¡"äSÃ²Úø¥½÷j«ðÞ½°a™N0îÏvúz•RQnèg”vÛá<öM¹Å¦É5YÕa}*Si3‘xâußuû,pW>ÜåæG€W¯p„¾æ÷¤îôÄ1³7ñÕÅb!1¡†Rå 4,(«v\�A»4«6« Å}tlÔÓy:t¯–1Îó‰c?ñWÛqœ³â÷P‚¿—ÔLØw5>7hÔm;NöIõYrí£ŠwrCT}x*SÊÏæ#û’Ýsuø¶cH²�± å<ìkÑ· `Ìtvà¿ 8øÑãð¹,ácö³«/���á)”Á@ÉTåmNU>0^Av£¿º÷jóâ;‰cëèB?_<¾ª–&Ú1d,m¾TÌ£Ý#2O÷»B¨Co}¬‹Õ÷ lôˆ¸„ÒÈùx?„˜ïW˜FkuMôÔ|ß«~{Š_ªÖ‘#8€.r³¡yT³iÏöXIý¨È¨OaË6œ)û;Ûˆc\ÙÛŠ¸^ÍR— ¨ä£+FaG¸lï|·ÄÔ‚!OQ/¨­J}’Ñ;x‹v]^Ò†ÉyÖ–©wx7%¶^,iج%ðÍòþT‹Dc ·*ì¡-Ô ØØGbšfÐ6¸õûÀꊟwùš-߃ס9I_ÔjœuÇÎ¥Áœò¾ùºÞñ¢{�sðýt™Ù|ËËè’k§… œµÂ1+ž0v{òŒƒ5‡$ Çjƒ÷�Ëä�êè�{¼[žàš²17±õ…¡È]f¨O,­6;ÕP­×øí ·Å{{¡ r��·üÀk†ù¢Z‰ŽÊ«LbQíòÁZ1Þ¶ Ð^jéE¦ú•†Ê•Yoàå/Ö8ñ¼ÅpгÕ-Òz_gÌ£]M¢§“ônÈ!iÌÐTþ‡;§ûBý¢w㲺‡J›»ëàúüŠúÊ¥w¯_‚©'ê@WÑ´mž»íõ=ž˜¯ÎÆÃÛéäæ§àzpóñÀlÕ]ð8¸¾v¯¦vk±bê ˜uæ @ÞõÕ‘x`=ºQE YjÇâÀ Ôg´öZ?ˆ‘†f�¹ró½IÚî®æ½eÝn×ïÑ·—Š�³Íé~{ I‹�Š™cÃË�Ê-}ãÂ"Þvt×þZ¸ä¿uß’W°†üH¢;o¢|×ᙽ¿Š=n¶Áï¤F8(”‰û9Kwcdïfá¡+†{£�½Æ%â¶m'Oùh’X–S±ÃAe4á öýÕ‡j/ÒØ'ûmþüø iØ#sݾϧŸOÿPKÒV1]f�ܳxõ3imunify-security/inc/App/Bot/DailyBotAggregator.phpUT ëÆ«jëÆ«jux è‡ÕXÛnÉ}¿¢b&i“”ÖȾP+ÛÔe×D(‰�´ð’ÀmÎ4Ɇ†3�îQ„W@òù±üB¾$U}ÎP¤¬ò=Èr³êTu]NUó§Or&k{ïÞÕàgr©Ätf ñï6á8Éò"Íá—ùø ¼­]e³`Š· ŸFðaÿ‡ýö‡ý?B/Ià’P4\rÍÕ�œð"â©æ1äiÌ.~=�Aÿü×ßð÷ñéùÕ)ô~¹<==;=¿&ù™1Rw÷ö‹E'"Ë îDÙ|/áS–ì¡Ð^­–²9×’Eܹg½»íÏóTL–·=)o�2sP —æŠCÌD²6�*Ä1™“«T¤SÈRKx3…RKÈ&0Ër•,Û*K’\Kc�\µûCBSÙBƒHMfÆ�?ÊL™º/«x”©XÃþñ/‹ŒzЈ˜áÓL-[0ÎL³ãcsÍî¹¶ Š-ìDesøöYs_¬ W†}…î²)ïv'ÜD³+‘F¼Ñ|"·¦,Þ—/)43Í`Æ8¤ä’œçÑ=7èf¨Ù"À(Òú5IÃÔe08uºz”äZ ÆÍD(mZ�0mî�bé Ä;‡IGI½) ]xà*‘ik™z`tËLÈ 66êsL®á&9»·Èè:¹æn~}1õ‡W£³ÞoOx*1n«­?Ô0^bJþž˜5Ð�ó NŽŽE×hP»K2%ÌlÎ�ˆ@`&òË Ê´ *³qÂ;p™-à�%ˆ†Òt1`š�´QXI6 �›ÖMl,-4�ÎbÅÀŒ+~`�¹r‚ß…ü&‚'±´pŒ‚ÌÍHš,…±H™ZZ8t+Æòб�Æ,º·Ùá�&ÔÓgM‰†¿v~èìÛ6‰01N¨ð±z«ÒÿV«íPoì Ö{óœR-Û•Èñù˜ÇdkCî¨Z;p&”Ê”- E—šª “1 <�d*¢Ö—Îæx©‹µ?÷†OÂÚ«íDYŠ‘+eáÇýƒ’ë¦è?`§ÛCoJbèñ~°ëúÓ¬Ëv†.Yß1pà²)Š”áõ篲*äºÅ~ÑcI¶ &¥îD>±Ä4ò�6!«tçš1,¹uS¶c�¬þf{žþWöˆž›ûª°>ˆ£ý¹ÈÃûÐŽÑb`l‘¥%s’),(Í�µ‘U¡õ<ú=íl€ÒÃÐÏ:ÔKìZ£^ì½×¤tE0`¼*O¡d>N�Ë&yQð`4²¥òÈ4*1k×nU}nU­7‘7vvvÍLèöÇU§ö¥Ð#À*0j|ªt]œ̓’«~ñ RÈ…E ÿÙ„P*jDh`àšÕ‹”dW +ÙÒ-Qô©T©G¹@n^ úµ1ßÚ:ãášæº•Ím_Xþ&’Oi*æ, Ø,7³ §Ñ²y`±1�f ’îV¶ aRá¾E*X1Ÿ°<±Ãù‰Ï¥Yú²Î[-„æ¥Rœ /0Hµ¸÷To·­’œ”n„‚Èäˆ6†Cð1-˯3Ù'9 ‹v9.2ˆÇØâ–Qð¼°pîbl|áíˆ Jý%ȉô’6�FñB46 n œlb*ñ×nH %Ü�ê&¥ƒ³×a´ ë`]vëu8<Ä»(/XÂ;ú:~ÙÊ»~ ú®Ž—+ôîùÒÛZ¹Ö�7·ûoðòÄÆ7DMh¬Â†=×7`•ïJQ«ž‡Ù�vêf)yÂÏáG¨» ¨·¼À*n^ ð(HØ —!È`¡n7¿úêòõ�K„ˆ¹0'<ë¯Ûí_÷/ÎG½Áàâ+Éï·¾+{Ù»> úgýëW* .ŽÿV–mwi áR9ÂÍ´^–¨ûN¨ Q÷”ÿéùaAm®éëªHâ¦Þ„àÝáI¨¤­‰Ý"ý¾ ÂMuG7µj¡ò\©SàEÅjœJåt?®ß¤"·íkR‡­pÌÆ«Ìm#·°û¸Y7Ê…«oX9ÊïdŸHeÚ½ÏèUøœä[ dÓ¾WR uϹt rö†· Ñø¦]©©<.=U,œ›1×Î�OޱÊîÝì@giñG‚ŒÜŽî…‚ú'@sÍŸÑÚ5�7Á�Û}tà jâÀ7¼S Š”C±�‡�®ÏHÞ »ÿë2Éoàx?òÿÿø·\îW“® /dÞÛ9“‘îŠiŠ—‡¯˜ã!&Gw†_†�óìJ$ׯøÔ> :'Bc¸i©Œ¡Ýv�¿”ªhÁTªi¿cøâ‹•¦fv ŽŸ`v&,Ñܽ4Aß Ù NÚê°Ë”‹‡Û¦ÈubžÏ…�òy×Á­ãÐmläá G¯˜†~þÌ€ ƒn#ÌÖÙg9Jñ‡­š�N]ųº™§é>ï¾3ô‚ ¹ñþÏp¬e±Ý,7[É÷µÙ¤‰J;˜ÏÆ®íçŠnYYxM!ݰ¶­^ð-éÞ<[¨¸Wz•=ä /QºI¸ÛÚƒê@Ã_¹Æ]º±2ç nA>>Æ…O~n°›’‘;W‡ãêY¡†:Í¥SÆ;ܵ¬ ýåëË»T(¬#¶×í:-«T¢û!š±‘oâtÓ<™t»åï/*ñiÜ­¹Wlá.±I±ÔTX¥=Íj¹ŠY]EÖ¦Ü×§'ÒÖ¾¸+Ïz–$ô…“1ßþ¾¯¼’‰‘‘Á;•3βdÛ°X's;*Æk/¶M�QrÔ·F‘%§ý±ÄÅ«WàÛ·…ÀO…@ù»ˆJt.9‹]hüwq afx�æI^U[B± ÷™k—¥Ÿ-"}a] ×\<º—ܦxU‚`a\̼n .ü¸ºR–ºÖ{Õ§ÚPKÒV1]õÈYÒœ3imunify-security/inc/App/Bot/NullCounterStorage.phpUT ëÆ«jëÆ«jux 臥’ÝjÛ@F¯­§BhבTÓÞ4…ÆuEj°°hÁPÖ«‘´d´»ì�]|ÑGìu×q[ ½pé�ÒÎùÎ7Ò»÷ºÑIÖë%Ѓ‘Ò[#êÆA÷Ç÷K‘ò%L„ôßà¶]}‚G�ªrf°cÉa�¿Ê¯ùà ‰`)æhѬ± ðÈŸŽÒb ^–h`4¹{ø“ñìás¸ŽŠÙ¢€áí¼(¦Åì>žoœÓöm–m6›”ÇdŠÁ)WmFX3Ê¡,I$kÑjÆñYoo··^Šj»j½ü Üuò«äL]) \y邃uʰÁG­Mƒ¦ÅônþPÖB"dÙš b+ÂôP$VlÑ5ª´`Ðy#Á² ¡ÄŠyr6…ûÁ0‡@¢1h…Amœ>ãĬ rðHÕ}X‘â�Ð2\(oAIÚžA«Êß�7VÈÐïuš§ù¾ô3O4zn²8­&lQ†í¿Çû*né)I:aðt#dƒF¸Rñ]„v´_¨¼äN( !Ôìa]8ÄmÎ�£¯6T‘¡ùe u:‡þùuÒÙ� ®ñ€üˆÅ?^kFÿæw:Π=¶:}”2éu÷Çâ�Û=ZÀ… _ôb¿…]òPKÒV1]Ž«÷ G3imunify-security/inc/App/Bot/MuPluginSelfHealer.phpUT ëÆ«jëÆ«jux 臭XënÛÈþm=ÅdÄRª‹“mûÃ^ïÖqÜÄ€o�l¸#r$Κâ°3¤u û}±¾BŸ¤ß93I[.º@ ìF"gÎõ;ç|G?üT¤EoòömO¼§¦ØX½LKÑÿׯqš™*:¯¾ŠO«ùgñ¦óhfåZZ5çy,Þ¼;½?xÿq’ebJRœ˜*§ì£J œä_èXåN%¢ÊeÅéÅõÝGqq~u÷üÿôìjv&N>MÏÎ.Ï®né|Z–…;œLÖëõ8&Í)Çf5ÉÔRfšôz¹\)WÈXyóغ/ç«*׋͗“¢øòÁ”G½^å^êŠ rž™øÁÛW¸MÙ( ò:Gù¼©<Ô8ªƒÿ'$qÊÇï¸Ú=ö.+_¬TœŸQ›PðK¯·G%»‡['Ui<ø„)8àXW«¼ ¥FÏ(åª@ªùÄ–¾¼Ç$bÒÛ‹ .®onϯ¯¢«“Ë3q,öµïTÍ.ZUßPÉþQKûGµ�Uu@ETÌU¹VÀ¡ÑmP}+¯È�Å5Bcu"çÀ)U0‰8¿¼»:ÿó_£×·³èò.º½½l�¬Q,(üÈ¢#µ‘oM�bt]��hvvz}õqW¾ÿãÁAÛêk’Ê÷&$B £¡ìßÿø'�²Ý-l–Îw§J&>®²‰<Ù¢ßÿ»²(*؆Fš°L™¡J’ ªŠ%¬PÒvãKp]°‚Åæï»ÁØW!i ±šŠU¹tOÑEsÇ2ôj¥�ÒÈ6ˆ,UÕZ£ç£µ+*Gp”îQýAh%,Hy d4îu@ȼZñhtB\TóLÇ€ <‹*÷¡d}ÐõKooo2³„Ÿ~÷7£Ó‹s²I’J/*:Fñà w꫊+lÙÓ Ñ§ÚÓ¹Júbÿþ&™}1oÞÿEx={Þº#|ü†ÿ^´=P‘ö¥*#Õ>7«ÃÃ6ÂtéunÖ"üs<úþyYfÍóÆ’`%³~}h°ÅíË'ƒ%-€Õ/Ð`•xu|,Ú~Àå¾`;GAKûí@ü ØØñ ?P·‰¶îo`ÎÍÅݧó«èãù4„uŸ5?yI"áœCwË—ƒ]oqsë„“ùAëîóˆFl¹Ã´!¹'ª-ë(o¿;?‘ýBPâÅR4Çh±TÇöð�бÍ�úÏE2<€TID‰9Im*ŽyIݹÏÃaÛo"3lKC±L}mrÅ£¯®´ôtâú3`¢3×S*Ñ (Bè�skºÝ·Ó$©´ª"Aƒx¹.†Œµ!XT¥È¼:ÂO\‘õ×OªL]„Y{CãÓ2þ­3/@FV:1Cëh7_Àð3†b\Li¢ÄäˆØjæ–ã§FÍ8;ä’ø(¦U*bÏ=Ýël…´rõôt'XLç¯f�LdÁÞª8V 6 x1¡ÓË\f<ä˜ç0‘{.¨MíÀ²8z-^—{DÕvhkå¦/"Ðã“Ù,Іb�èhg™Oð8«±#tò°=:ؤøô{Œ+ë„óòg¶Ë\³w×»6¶ŽLÕ—õOFu… N'í™Ò„ý.Çv…$! Ôœ†˜jÖÏršäýj"7á'ƒpYÔÜd=† óÇ | „ÆXúHÊ5´]ø¿ê—ÿ$¸gç Œ­=mìyŠ‘iÕªè°L’"þÄ£`Œ1Ü0$¤Ûû©'ÞÖ $\D,h ååã©ÒüŽ£Ä=;‚ùéûN„ß+^ȆgcÏý¯½Õø›íî¶ã�8,žÏ¹úóÔ>Ô€‚�»>GÕÄ”~ñä쉻éÅ–|�+”Ú ~ÑÙáS7‚ �{ ú£½à~€ïÚKû´ÇÄ·ÞPKÒV1]`?†ú ë!/imunify-security/inc/App/Bot/RealIpResolver.phpUT ëÆ«jëÆ«jux 臭YënÛFþm?Å40*¹ÕÅÉfûéӺ¶Üë¦�âf ¸�0&‡ÒÀ‡ËJÚ»ï°/¶¯°O²ß™ IQTš.š†=—3çò�+¿þ&_ä‡ã/¾8d_° •o 9_ÖÿÏ¿ŽÙEªÊ˜ÝȬ|dß/ï_±Ï·–ުĬy!ì:‹Ø³“§'Ãg'ÏþÊÎÓ”M‰ŠfS¡E±1ˆý‰L‹˜•Y, vqóãO—ìæúõO?ãçÅäõÛ ;ÿ~:™ü0y}KçÆäút<^¯×£ˆ^NéáQ¤–ãTÌy:Æ¡ñáaÆ—Bç<Ž=ËÝ/×Ë2“Éæ—ó<ÿå;e^!§‚§,J¥ÈÌðú �¦à‘‘*ckiìâò5㙑C�+•Èl>òÌÿ�§šq–RÒl†ª€&•Ú0•`C=nØBp,kÖ¿¸^¨, �ÍñÒ€ˆÜ¥^„ÇìŠk“nš+?ß–QYH¿FKP/Ïg¬©HÒ«Baå�kQ Ïã¸ZÑ»Rl‹˜~;±sÏ “šÈ¨,Ý0S”Ú@�õBdl:ùáÇÛÉìüòrÊ —’§8�ç2ãFh–jÉÌ‚ÒTÏÉË{è` Ïæ8óßþŠŠeá7†Gx1âY¦ ³zµ"´äH«Òh <áÍ™¤Àñ\°L˜µ*‚EZÒA$¶†‘ˆ‚ßШa*3`úAæ9 ’½©Tnù/aîÔ>˜È¶Äß^#` D¼Ž,®Ã]e §•E¡Êù‚èµ­=mijž{ôj¬_q™U.²S€mÖ8ŠÃ‹…�a�’œ’l{I#cN>6¢«öú·+Žg—þ.-Žà]+àŒEqö¢ñÐ-‰O[F¼¸¾œjv/6*‹hÀ—Ça_Œæ#ÿ‡¥’óÂrH@ �¥‹ùêd¸÷z!E�_–*³ô¥Ð7Yƒ̳7ôH„F¡-˜?{Ü’�ß´%³g�tæõ�›Ò~WÊ4nWÑne«”Í!°Ê½R,Ñ ž�õšHΗM}[ ³Æ¿.{j!b -Ð\I¦Óç¨I׊àé´äc?CœÜbµiÅQÐÅ“ˆ%eæâòlh\ˆLß²=Ø«Dv Œ™…Ô×$ᙇÒÁ�LX.5sGÛ$ÂÕp·ýÀöq¢÷áÿ×6óNb1XÔ9†bˆõ,þ£ÚìÅ+ï(8+ý›º³u6‰¸C‰ä™iøžy·@"g;*ÄR1ãÈÈѽ†åv#}bÎÅâhöv2}7™Þõ¡÷>PuÑ"��n‹” ž«LFX¦Ø5xXïddÿë!±0Y þpù}ŠX–å¥Ùga�ó~¥„Á¶Î4Ö€Ÿ5MÔS/¬4ÜÊZêÀKã­ëD]¾óˆOˆ }à=MNO³°òÊk>ÔfìE7àü1Ð%JE"G5„ÐÍS@#Þ SE)›ŒZ…ü%ÏkhÜœ‡jSzÔq7‘yld¨xŒé¢�t³e"Eql©PòðxŒ‘ˆ!XÓ(û:‚¡Ö#v‹mñ˜ÃßAʉéÏmòYãaKhG#Çâ2êˆ1Î Ù«JDKjñ-Žÿ Œ?ŸÛàhHÔ O¿è9Ù¬w�÷wã�œ•(ÎÎÎÂ~À°—«â> x<tU†-ät™çHü±a”#ÞHö„yàèPê�¦]>­ñ¨~C%áõ`˜—(³PÙt€BDŒ¥í‚–¸qhYö^ÁÜç|É%ëK€ipÉ‹PR¤…#D,ús±Šô±å±QÚÐ5ÉŒ(@¸1@9�*s+¿£¡ÑxweU÷}ÓÀ‹ `##Œç©ÒœŒ ‰à™Sô#Z@\Úª‹RcU63TJóT �tš̬xÈ’>Lõ¢dÕ•®Ì{VmUö(¸ N„lǃæímþw¹U>…Jâ:�.:nkïÍÇ¡v‰»»uÕíì½*mçÒõ¦\Â>+¾÷¦“Èö7+×ßp×ßìèŽÎX2¤'GÅÖRÈJ‚G æj†Ê@(Ë�4â]•2¨}ôµË™Ûº;yÿÂnážnm=õ[vò¹[µõÌo¹ëo¹X0ƹl;ŒØÇmLpA¡×s!ÁÑð,=€N)ì¹ÕáÏB:“š‚Õy¶A�WÅ›sü„Ì’xLµ¹°RÔ2}ã·Ko°Ò¯y:…ªå²^¨¤¶„âŽX¿ÒÕÆ¿Ï¼°þjà4dëj§b™²íÁÑãŒJ¬ÒÛïi𥣄¾Fì…šíË5�Ï?¯•y늼7Tšöá9 æ#¢zÍÔt�ÿ4‘“äS„Mª–¿uŠ :DXŸ m ¼U<ýœ$ . pD³SÌêr[ʰ±-d½KL´j+ÀPŽj·ý1Ñnù%ÛóSýC›KÕêíwJ—Pz�8T|½óZ³Aï*D~³ÂwT#vÝŽX„M-ØÂOJ˜[mÛ†�Ùœ÷|.F­Î±] ´ ઢ‹Þo»®c!j½TÅ(µ{„R‘b¢ã'XÝýuðì7·â”5ðÖ­êñ»÷,ì5 lÙ p,±)˜ÂS&v�Ù�=}A{/ÏØ ý2VÜ4ü¼ò´Ýø'"ï;ÏVë’ŸU[¾áܹ…d™o‰è—éÁ6~ÂVDffiôƒ>Œ:GO—ÙB£«Ïî)¨0ö® #(¾|†ìêÌ]&Ø"o§¦T$j4ù@òÍi…è{¥Ò}l¥™×éæ×�äë².ea—ïœ ­¶ëV=¤±µp¼¥sÊô]J·…ÄǵÎÙ\d¢ ¶µ1ùtŽ×'{±´œB3jªà´™!Ô©qÇ›àÓán`{%€×‘µ¶Y+ðnh Ynt˜Áß‹ ‰½PvµÝ«æ8šbÒAWÖkáYnšuWi“•û㬣 Ü_ 7 ¥áîø]ó<ªø*� Uж37E®tx Óû^3M¸NÄ&6w£xty õõ§ƒpÉË 1éÈ}Lèxó´Y–5žtP›¹5’¤ãî ü’ž RÇúÈ#Ck2áÌíP‰8lÈYÁä{:©¨ï ΂º›Ñà¦žãøºˆÆ9L+K˜f˜ðìT©‡m:yW{ŒYÃoòA�jn¿±¹‰Œ‡È…QØÎœ‹]�E,%E2È#ÈOüøKÃ… ¿Ý£4�|¥dìËEK¥™y2ÐâZ•iìfkšA,8‚vf¿X…!ænzpI¸"NQV¶†~•;m}1ØÒBåLO~ꜴùZ=#=R¥ÙW75ûçvöˆØJäxÎÅ‚>í×9›ˆÞ5æŽ~ÛVˆ«®,NZ8»ÈUÛSÏ­e4!Ö¥?‡-¸9°˜í¼7¨¾n?Ð=›ÊÃg“›ÝI.-ÿG�Ü;# ×Z–ÕÂl�ºs§(àýö›³}eŒÎS­Yc¯íí»—Z& uŽõ´êSy’ZžÚ ¶øV®ÜE¡ŠK,å#ÔGUÌϾG’Cw°É]UMöö[¿£Ùz±]Nmë©£†òU¼sÛ„øDEgw²TÝZt]o ™QÌV¼ðµ×ÕõÍíd:{w~s}y~;™AêvŠ8ët¼Ô5HøpøáðPKÒV1]·¦ŒØM ²'imunify-security/inc/App/Bot/Preset.phpUT ëÆ«jëÆ«jux è‡ÍXënÛFþm?Å©‘ÖRV·8m¨uREab¡¶dÈr²‹¦FäP”šáÎ ¥‹íŸ}€Å¾Ø¾BŸdÏ\H‘²dÇ»ØK€$6yæÌ9ßùÎ�ß¿LéqûéÓcx }‘n$›/4Ôþñ[ú‰È"¸d<ûo—³ øªòèFÄzM$mÀ€‡pÖyÖižuξ�^’ÀØhQ0¦ŠÊ�P¹ÑÉBÊ� ã•пݾ†ËÁðö�øo?ÞÐ{;‚«`81ò ­SÕm·×ëu+47'æâV(–í„ÎIÒF¡öñ1'KªRRgžµîÃ`™qo>ôÒôÃ+¡¿;>ÎÔA�+ÑäÃu’Íï ³9Ê{P†¨=I4m&lÉ4U!Iˆf‚C*E̪ZÞÉ€„ |ˆžkX’T]Q¹�>*˜ üA éŸ3ª´j¦T6—h�¦à´×:°¤„+£ê„ {±õû¯’¬ÉFá‰XŸÔ­-  ƒ†ˆ— Ó |¸IdZ8Å-⛲3+&œ8çŠEÔ'zŽò™�„˜c°ô‚ý¨)F΄f‰Á3p}q J Iæ4‡àIÐ;¼K#æàõ‚ øÏ€r˜Ri´G4fœ™«OUŽ—&³¤Ðòƒbcúu«ÓêØ@£›JÁµýËññQˆfkxÕ»ì ûÁk8‡Ó:�‡¢Óïò·7“ñ ?0o:êí»«Ñp0�í»¥@c„Ä—ÇG&òGhÁk“,ѹu™¡îzA9 Æ b¢R²˜¡«„#§ábÍaeœo™óíüž×Á›Þíådz=n‚ Þ¦hw»¹áå+lj ‰±©9[h‚ãSR¤½Ï*ðôÙáΉ%� E~(Ã_%`dEÝ6&_£¨vq{Õ60Š ™ÈTÛC„üX«:Ç �MÄ”‰�*݉A¶Š(×LÒd5�w½U ϸ6¯G@7‹¶ÔÎ�4Èbºt¬%ð>¢í¥V?•H¥1ˆŒàÄyðý9"ðû_ÿæ30¤n†L†ÓVSV…´†óñÓ V GÅ|#+âØB¯,§©Uƒ�*¯<ÂàmH~H‰$K0ìC�OŒº›êÔ—ì#’5Waç^3±h̸Çû†ÇÙF-uêÀ,¿¯VŠ˜$ŠîvN>u\Ü–ÿ{•˜ (²±"¦½–èÙnÒ›Mo¨t7ÆeмUÖ„ûÑÀñ­V ë¿böýÝýnKoÁ "œ˜†šÉÐqAf8Æ~صÎZ]ÞM»zš!J¡T©ilØÿfž|Vw­4Ö2—*•§”ûúÎ�[˜îï:%­{²nŸÚÏh»;#kûç}oO¥*ùïX;âÌii5EÚF,2Α ŠzÁ¤ÏÓe¬(Æmsß*/.Ìýؾ³Ç?•=É1k¾XxÆ:2ÝÁc+‹¼ÍeŠýÄSõÜã»#b/ã6ö/L ÷Â;úÝÓ�½ûM«RŒ¯©læˆù²U¬@¸ž´±0˜/¥÷u_«¤Ø¥ê-ø‘¦&aÙÊ ‰¥—‚�™m˜ñƒËLÛºþÀøáUìÝNÕ¾dÿT¿}w´]WßãÁ›AðzzôÆý‹i0|;v èØ±~¯0Òª? Æà7ƒÃ²7Á¨$Œ²ßÞ‘½þ8½N{·“ÑUo‚æ‚×ûÍ]ÑB1ò?(z¶+zÕ»ô£Û›Šd±¯”EíwD¸ógŸèû‹Á$¸ÜVîˆÖìNÿIôŸ>øg�ÿ¢‡Áöÿ~yA}$ø�€þ¼ò{D!Gôˆ¼›o?ÿPKÒV1]�@’]ÑÒ=)imunify-security/inc/App/Bot/Pipeline.phpUT ëÆ«jëÆ«jux è‡Å[ýrÛHrÿ[zŠY•jEmHÊçõ^*t´·Z™±U%KŠ$Ç©:_±†À�Ä  `šuçªË;äÅò y’üºç�”×{öžþ�(Ì §»§¿»ù¯(ÅþÉwßí‹ïÄy^¬Ëd¾¨DïÿûXœ§y‹Ë$«?ˆ—Ëé+ñmëÑ]>«V²T}q‘Eâé“ß=<}òôq–¦â– hq«´*ß«À þe©L«XÔY¬Jq~yýæ…¸¼¸zóŸø}>¾º‹³—·ãñëñÕ=í_TU¡G''«ÕjÑÉ)<ŒòåIªæ2=Á¦“ýýL.•.d¤ zŒÝ»‹e�%³õ»³¢x÷s^=ßwDÞ¨rPªÿª•®Ä4¯E™W*ª’<y-ð¸”U^-Î7I¡p¬ºR…î‹„¶û- ñ»¡ø¹NÒX8�QžUê8øæö¢/Jb/^»¿¾¾OÎ^¼¸íc¯ÎS°EDi¢²J\Üô 4ü¼9;‚o2½(nͶR$ZÈ¢À^p®³G� )t’ÍSÕÀ»¸³4_i­Z”y=_௫ER�]õ…L±Ë|ŒR©u2KT‰Çè�•i²Ä^æ€< ËÍïÿD¤y$S:ÉÃÿ÷·ÿ2ø—0-UD Š…Ôâí«‹ûñåÅÝýø÷h•ªªËL‹d¹Tq‚Ó5N'f‰|ÆÈ.òL­‹¼bœè�Gy(îÊCZ亄Œ—¸™¢®x3°ÃuvˆÇ † âö®=°HjH³lg’²(­A�eÆ÷CñÊ-CZ¢‡>�“µqdŽ$3 ¿KYa_)d©¢Ò}K¼÷l¡åX6â õ�v’@⪗ ¹¹%1“IªE^(âÈ X8àKst‡"±nCÜälî™pXª%4b"㸄ü–àa^CÀ£�ôy–—´ÍÔ–¾ß“>è"g›¡@£ÏžþËɳ'ß‹^q²²Î./¯ß;Í…˜ˆÂi/ÞRéLd„<î9ùêCRõŽGx1]'ĹÒ$c²" Kù ´•¤< BªA�—S<&)}P0¼•Ø; îØ—e¶¥¹Œy¯»Ž:‹dMƶ¹Yñ ™2$ÀÄV9�9(pO�>çâ-´ì׬¼©‚e}0i>Ÿ!챚©²„ Td0f5˜*�tF$ËŘ^¹Äª$(|ÏÓœ� ßÿP\OÉŒKFq‘çZ¬ù)èŽYÓ�ÖiØa†öÂ4�9`šU ܧ€a�Í’HÄR/¦¹,c¡I¡ú?A aß Ÿ Ÿ°ag¡o ð_ö÷÷ȆïaïϤ}V'"ƒ˜Ê@²Ò2oùé½,�nAoèÙÉþ^Q&ïIâ�zÀ%BcB#Z«hªÔå´‚Œeàùä¢ge}«8»…ð쳬JxžÏH7çý•°è² 6„ xêa!)Vr\ÂFP$²�ôá.zX¬*ƒk‚0ÕHl�@>›‰ÞLIþNÁþ�F òUòò¢äuuÌa êB?U ùžåWFÐEôo'1Vfy©ì�dq ræ-ÞïhÇÌžœ«­ÒÁ†-VcaeHÜ!q Ë9ˆAÒ>106™�²©ï‰L“ØÅŸHZÈ}ÜJßEñI “Ö–�ÆÇ#@õ¡ÈË øN×&šCwQ西yº&÷æDd.òÕ¶ûu·éïŸ".ñé ÇõY²a­.Š·îÌôûõ�ø· ˜�oa”shN·xÌÐB²”ËÐnu~dŸ„nÍÚA&p-]0äZ&i°vÞvVí�>„ÙqLÙ}vþª� ÒËîÒ«û{ö-×Ô�ÖJŠÚÐd:IЉó ?³ÃÅ8À–±Ì6qâ¬4~¼D?}¶ØåZÀw˜Î;Ñæi ¸µ$ÖÌZϰ î•&!ž´A{¸…1TÖBm…ÛÕ�€Ë€Ûhl ßM‹0tšUOS8Œ‚]ŽÒ&ï½z¡ôÛbÜ$°HKó®ûÝ[:eKÓïò×?Þ`O¸ÒhžŠcÄ�{{‡Õ"у; {Ú#ý¶²­«§mÚ‚�-;mEl ¸¶®œ¶b«`WK=N79l}½Ùâa°3t+fg‹yÁζï �]N·6¿ Eé´Í|lüF¬u¶ÅôJçcq8¹ßþÇøVè )ê"¯6¬°,K¹îTŽ¢8}µãñ“É'Åû<‰wÈpYg=ÊÈÇɉ¸yu#þùŸ’-Ä-Õº@,һǟ1=è þs ÕÓˆ¶c“Ù¿»G:·¢ ºo`d°ÿïÆ.ä’ED–Œ§©~Í&å©âÔki^lY˜�‘’­p"*V¥DÜS[l”Ôˆ¾ Y-ÌËø„W2Š'iuYŠ´FJE!Ó’Ü;9S¦2Q:ÛC®½·— nÃ[xyA¡+ÝGž¸#0ɰi¯*׿ƒ—Ú:»ÈÞ %)Ùûhä†Iâ°"8‚�]‘qµ@‰— ’hxŽøÿ æh­=/‹ŠÍ®ZR(òBQ‘OÅç u0hX3j'ã•?�"µ=å2ŠôËH ¡Lÿzò§. ®¹ÐCõõ‰k* Ÿ îc[™ˆ Ëã5'e¹­·mÊÙÕ?�… Øe«±Òu™xwuŠ0R«ÊïùãÑíøßߌïî'on/Žþ„Wþ zðDЭã]{Fâèˆ�VXÛØwîñ€©úœ#€ÜޱáÐäæöúþúüúr'ðÍ}þ€ZŠGXBQ×ä ^Ÿœ½_Ýï<`sŸ?@GeRT*Âo£àüöâæ~ruöz¼ûÖØÖÎ-æT¾��ß–H}^™¥–Z+fýŸ­�"(ñåÐHõ}}È} JÄ€�’Ö‚RpR/éTÊX¶WÌ[Å!Ú¶¬áÄl-€ႄô1(•È 9Š2ÎÕWT<q5`T(Íãj™©‘¶PêÊ­[K­­+¥Ëˆ«€Š´HØ£ ‡­JEõ»Šk›�`"¹‚¡ÐT-5  hšS°É˜xŠö8ž¨Y{š*4dG¸‚aâ ö ‡†ñˆ?ȹo Q8°¡O¸Fß'iiš¿Õ&V˜%¥­åËæzL™;¨ìS” –¾žOÞŽªÉ¶Ca+Æâ@&G¶õ¶RÛ É¹àIžÍuÛÂg4&TòÄSë—}É3ɼ§t�~Û Ï¡°c—w–žk„îÎÝÏ»nˆuÇQ|껣Q¢ï˄ʼ ¶²,N¥V7`Ï¿!0¹c•¾‚“†ú}Ü\IxO U(Ê’úS2ͳ¹Nb§�¶ DÉéÔ%rH52îñŽÕ×e‘¬HT ¥¬UÎ%e•-ù„ê™&‚Ìeó‡x3U„›Œc!JZ¥ïÑ9�@P‰ælªÖ9µÂ”Û¸`EÏ㉡ôPDD%çGš- a½N=V«’²åÄ4ƒ¦ÀaÅÝÖQ$�°üÖdpf êqɸi25ü´Q5Ê m1!NS¥‹«¢g“…œÊ�’›‹±2î^äÅz¤ÝЂ•,¹Z-Àõ¡0VpgUÐm�^•j�ÅÔ”úI-c|”o¸g•g¼î:`Ä&„°\4‡y°}ÒSôHŠ� “G�·úÑ)¯XqäWœÅàÕ¤8­÷¼~˜õ@X�x=x`vÔ²¡–´`Ä�õöÑhշߊnGíË"FG-…^Ÿ;JJ9xÊÍž0`3!¨É‚„“Z]�ç1Xc®®ï©ËTH®š"²«Œ=&ÈCñF«má¾�ªOÆAPhR€žñ_š3�cÓ àìÆ¾ê²šþÍòaL’ð¾Ñ¡u�‡Ø¨�4Á€h‚ÇD³ÄH6÷¨6iŽ~H ëÔ@Ó …}O!fyjZ?¤Šºæôƒ°80ˆ¨"³À(˜·=›‡â†‚lÓo„ˆOnnıSªãj,ÿN§AåÝ`Cžÿ¼ÞåñŸ û�þöIRp'F>?•âιÑG¡R­þ¡LúêÉÖßÏ$öÞ®Ù˜ ?ÎUåÊ»½À:}¾tºfž5e+ðœfÈŠÙÃú›AÇo)~¥ŸpøÒøEùðÕ%ìKðÁÕT!NÁÈŽ _áµá-à¬d·3mL:/­¤æî7OÄ0äÀÇö\|i ²mµ+j Sü5«5åd°Ðˆ¥cø¬‚žÜÐ3ñ‰}†(A‰y®x¬™P¬EסšÍhnë=—Ý->ܵ{æ]3Üò1ùîoD·²Ê6&YºÖx¯y9ÇÃ};æ…Ý7q(Ð;öþ�Ñàò7§^¶Z…W øs8�Ümµ\—-8¬@Hƒµ‘Ö¯¯¶ÈS°Bˆ’àÚ¾%ž3YÉÔÈä2K.T-£J�Ž~YR¿Žf~©ªMj ŠcÎñ½÷ðÓ„}±¨—’›üf�s èYR²†Èù¼TõámrÅó EìºÝ~FªrðŠ ºz‚>@F='¼{² ^[ieÕP¿xmódJ¯e ˆ<ßL\ `'Qe2oLª<·eí:ãF5ÏÙ–W³ÃÆ[�–'WƒdÏ€ G™ô¢®¨x3ll®¥›™Èjý�&µ*m9£§ëé`‰¬(Ñ8+‹�íÈc�e#{YK–ž<ó«°\@¹§i£˜¬wgr¶#*i1íj*:œa¥Júš¢ÉÅm.øì *ƒ 5ã;)ƒáNÍPÜå>Çã‚Ý£¦¼å툯õ8�P"÷iW�ÊÌøevä6ب¾›’k¹œ…ÅÉöÈ”/ÁOó¼; áKð�•¯þÒr~§�ó ›~­œ|‡Ùw]”_ÐZH›G=ZkûT »¿ÕWu±¶Æ<@ç×cóˆÏÚßâL¶0°Õ:eÐ)–:!N2;GgF£L“6˜`¹o‰�^À. ¢¤Œj˜D7vk�fÛ–p�Ö+ƒ=ͤòMý{JFšüДÍuwŠ,`’™öq¥Tm…?P²˜&íixÔŒý�Ýoy¦ffÌ–ÃhúˆFR¹ªéªÞ4�×ès)³¡™!¶3¡Ð×Ä ±=àVX/­c›‘í7Žšk}^Kk}�š«"™ ¦á¨`aŠÍ™R±šå¼Ã˜¢�*³©.IU´Ûöxý9œ�è:—©ŽFÁ7LÁíh›—ÙUŸ�ß_\_Mø:�·Ù&ß m†OŸð³ª"Ïû%Ž`r;ÖÂRl‹®&À ÇKMˆ ò1óM‚Ó¶õ”Ã4ba ÍìÅ3¾ë„3$‡ú ŠÜˆd€®åÃ9ž‹êŒÅ+YÎlgÈZNÝx´�‰ Esë)(B>§AÓƒ Žøæ|žÑ*B^{Ýeà&JÊ,'ÈûP$f¥ÒbÉEp“<íIWÖðjâ½Lk5ܶ™´ÓüÜ!@7S¡:­ç}*„%±ZL9)ir¼Ò/Ô„öKÖpàø ™V$¿kaÿ‹ÉhG« ²B¿9¾ëLƒL²5˜ãRT#è[÷<ZJ,÷.waUÝóh"ð%ëÕ³“>ý-¨¶Ñó;°�:ÿJ�·<~—ÀÎ<òöÆœ¼zóúìÊlöRåx঎ÄH¿‚ä6^ì¾¶™ÇX³Â6uG¢¦0qÄåpËA"j¾['ƒZ6i&ALØÙ3é$}ë‡MŽ›]2Exÿ¥#7—Ê5’=¶l+×aåÉ$3”ìÃQëÒ3 ¸Â4å =bÇêÏà†®Ï¡3c|`œŒÝ¥ïä´Âhc˜6, }óÄo³Løkµ@è 0ùâ3&M:òÁp�üì •œÐ·�&t„…÷ÛSI©¢èî.›þ"Bþq5—n”üq{dl'Qy”P«AQò÷Uɘ>~aôÁM+5"G:CóæT{m7–9™ã‰ ×±lØ@õÎU×h?˜„*Rê^±òêˆ{RÜߥ€Ÿ¡Í¨Š /º kt „?'â š @YFÙz6$Å�‰åº;Aíbâ`0á½Ï˜Þj«ïë虿pzrç� $©+èzÂ|w”^H–'·Ü=_¹MË.¸UHýâ01n¼gö5ÅSjÉ&YÝälæ•'œ¤âܦy§/ÌÈSXy=äd¡™¥Âþ*çkíÑ牽CØ€ÉÞà—®§Xq ``Ö²¡æŸxpj¢¡T’v;¢Âa)óÌ Gù„Ó噀ƑñÇýÿPKÒV1]õqƒ&¬5imunify-security/inc/App/Bot/MonitoringUserAgents.phpUT ëÆ«jëÆ«jux è‡}SÛn7}Ö~ÅbÙÐ-FŠv�DQ…Ä€­²ôÁ@ÀÝ�Õá’[’«µÐhþ!?Ö_è—ô�ºTN‚>øÂÑœ9—ýòº.ëdxv–ÐML½±rUzêþýå”&Ê49ÝHÝ<л*}O/ž”îLá[a¹G×:£óÑËQÿ|tþ�•¢y˜âhÎŽíšs óodÆÚqN�ÎÙÒäæÃòWº¹ž-ÇïÉtv7¥ñ»ùtz;�-Bé}í.†Ã¶mY`V�x�™j¨x%ÔMÃ$Ñ¢bW‹Œ·ò¢ºûëªÑ²ØÜ�ëúþ­ñ—ÉÞä[�+hXŽû®I�·R¯HIç©0–0»b›I¡¨©½¬¸_-½‰]Á ,¸ÁÎÏ¢„¿C•n—w š}XPÊd…ç¾’•ô ú篯$¨4·)µ5küûRø0Ʋ’€MËH97©ñä ÕbÅ(g‰¶¦Q9ÆJ0 MRg˜¡ÑVr˜QH M-£h�÷*€ñS�Ä.@›Bz½µ+å`N9hU›0E kMK]v^¤h*9ïQüÿ`º>a‰§äL4cš[Z³Î� 3r/D¶•õZqè,,3\9wIÉôM«Ùö+¡a4 ¡×´A] k%´F‚a5€7¾±òbáx¿…7a0½Œ£x™Ýö¶„ôñ Jý™$�pàæŒišxÍvCé�®"Z„æxc·„$6¡2L:uƒœ²�‘ÇŸ¢Ñ™—Xä6¤î);�cXïÎÉÑžOz±òørSí^w׸‰øÄûÒ:õðóî9ãvŽÕeÅvW|ÏPý°0F¹]¥©s$<�&¾O/“Îã‘ÿ 2ìK|5v!רðÁx%|V’X |Oì�ÏÖØQ&µ°¢¢J>àÃç ’þ(BÔH÷�gD!ü~L¿G~S£KãpoáÞëÆÖ&lò8Þþ?Ý(�]÷ á6kYP—žát>n­|Ûóù3�œÐÕÕÕ°ûEB9FXH«ÓÁå±@]|Tqqqجpô<>öèH±ô ó?Ì=Ðû²í9½m"eä|L¾Óò˜<&ÿPKÒV1]ÿô4¸ä' /imunify-security/inc/App/Bot/BotShimManager.phpUT ëÆ«jëÆ«jux è‡�VÑnÛ6}¶¿â»°ì¬Ø^š¥Kæm0§ ’ÝC€€¢(‹ Eª$Õ(lÿ°Û/ìKv/)˲ÝóC"‹—‡÷žs.¯þ¥*ªáìÅ‹!¼€¹©ÖV® £þÃ\™:ƒ¥Ôõx[¦ïàû�W7&÷ ³bšÃË㎓—Ç/‚s¥àšP\ 'ì£Èœð—’ íDµÎ„…ùòÃÇ7°¼xÿñwü;_¼¿YÀùÛëÅârñþ–â ï+÷j6kšfÊédEO¹)gJ¬˜šaÐl8Ô¬®b\ÄôBvwe­e¾¾;¯ª»_�?k÷lÀ¥É„º»RõJê¹Ñ¹\a|KÊ…vž)åÀRã“Ê/¸—FCY'UØ®�%0��ÜØÌ'TžXÁxÁR©¤_nN¹Zù ¸ÚæŒK½Âp¤RÓSSÎrÒ àLkã!À€ô„9mÙü„£ÕúU�ÈZ<"³™à2ްpÉF8ÊKY;�±$‘Má¶„#<äLbµ¦Â4FÒCcY‹¯d%P�û1ßÛš†¥JÌ_¸¨ˆBâÌóbŒ¥ŒIëï±Æ‘íMa)VöЕ;! 岎bÜ`BïSXƒ²¯DÌ8e…¸Ú«5 2¿ÆÈϵpþýóo`„f�R)ãИZe� dÉy[cN�"HW‰@¹)œЩ‘U:Y°�Y)˜vàx!²šFM•pkô-imunify-security/inc/App/Bot/IpNormalizer.phpUT ëÆ«jëÆ«jux 臕UQnÛFý–N15ŒZ6dJ6\#�+$®­¦T×Pœ¢„9^.·»KËjb ýéŠ^¬WÈI:³$-)F‚F‘œyóæÍ›Õ÷/MfÚ½ƒƒ6ÀEaVV.2�ÿ܇ U” L¤.àu>ÿ ¾Ýzô¦HýRXìÂXÇpÜ?ê÷�¿ƒs¥`Ê(¦èÐÞcBàŒ?‘1j‡ ”:A “_Þ^Âd|õö7ú¾]½Áùëéhôóèê†ã3ï�ôzËå2й²âÂQ\ä=… ¡zÔk·µÈÑcE/°»祖éêöܘÛ Önš_C,t¡e,”tÂËBCZX°Âã¡’¹ôp‡+ÕœÇ×÷§ Ñ/ {çÀ¥—Õ „sr¡AÀ2+Bïô|A·NêÝ»rîb+çh»à ZãSH�È{™”B�H‹Î¡éÀ[z,˜¯ ÕÀ$‚› á:áˆ�P/ˆZ†I0•Z†|†©„¸PJ ä×øD�¢¤e¶Œd(A>À¼J+©€pÔB\”ÚÓ|H†ˆ!N6 ˜��‹ŒÆgB/ˆã†X‡¹0†füIbg0Hé3Ñ<Š£dÈ9�Jë<5Ñä4k¬LNúñÓ¸ŒsÌËø=,¥Ïê~i1ö‡!/å½P¨}Ê ™£ÏŠÄA*¤‚ €Ð+È…âTZjSzXIT%4`n<•ô,s—†,㌱¨^˜$„I’HÞ¢ §“p;îNš�—<6–Ïh®–h¡ó; §Wä2ìIÔ�úÁűbeÇæŠè�1ÿ èwív‹MÛâÕ\[™¹˜±Ÿf¶áÞÍñqnÈe„9äò�zÝ%žP‡Z�ž½ÈbDU‚E_Z]+°®Ï°ÐÙTÈ|R“ä²Vq? ôÚ-SΕŒ)Œ¶,†”ìÒlÛ”èN˜m'�Ù§^[-™B¾¡-˜UÀÍ»÷ïao†ÃáFl«¦··wFw�Mv*)¡©T$Âì^ØÓ…Ç“›Ñtöëùd|y~3š‘ûŸÛ�“(CjýÌøB×TÎž× ‘_ätâ¨%òd§‰¯3z½Êç?üÃg‹N©só´`¡¾ö…áÍpá»–~‰U˜•ðl³ˆ¡v›×iM¹³ vÔ›Œ—¬ïàé~‹ýÑé—é_"íîóÅÿø×ßÕj°=ùIű ™ÕÏvnúýÿw¥)_;¡•ÀŒ�Xo+J]èwáè˜x…ƶËÔd?£Ð6LÀ¨ôú:Á‚b,È�%Ÿó!@#ãí¢©»t°{t]  /ªã„Î…z‚ujB Ÿu÷‚ˆE<‡™ECÂv*ñv›³-À'Xã~¥¨àõðäçMƒ?¶ÛÿPKÒV1],7ï6ѧ3imunify-security/inc/App/Bot/DatacenterDetector.phpUT ëÆ«jëÆ«jux 臥TÍNÛ@>ÇO1E¨ (qRÔ^ PÒA¤P ¥$´YOì-Îìvw7´úˆ}£Î:õЋe¯g¾ŸùÆ~ÿÁd&jmnF° ]mæV¥™‡úï_ÐÍu‘À@Qñ§ã#xýèèLO|),6 O¶ÚoÚÍ­öÖ;èä9 Šƒ!:´3L<à”Dr˜@A ZèNF0è�¾ðµÛ;>ëAçpØë}ꟇúÌ{ã¶[­²,c˜ó@K=m嘊¼ÅE­("1Eg„Ä…¼JÝeZ�šÌ/;Æ\~Ô~'º3y <—’gýSHУôJS¼Ôxž)‚Ò c¸@XÍRAôÍPPŠ­¯ e¦‚±z¦Øˆã:Ÿ!LÅWm¡’Zé×Î+J�ЗÚ^;¨w.ÎpØ=m@禣;ù|Ô€#ô7„¶*U^ä'5 Žã� FafãyE!s᜚¨ Ž‰Á¡Ô”;§R9LXA(\Ñ5é’ Sx=“µ€%ù.Õv¾Í½¤©9¶ºä�Àâ·�‡‰ÕS~•<š’rà g”Tºp€3¤UfHŒcíaÔ EÆràäïf¹ïq*oãvÜ®¢ªÄ¯$pPMŸÿˆ¢ZȧÆ]§s-¶œ/¦í¤6üäõªªûáÇ¡©jÜŸ û8¨pÜŠjƪÛ†õàÎ Ù'ÍvÍ=çã }&ÁX²Âò‘©š1p•Êg/{ ‹q®$L ªv®®8lçm!}ýwƒ§W«­ûL¹æÞòl÷ÁkívÕn†¼Ö•�1[¦Ô…¹ šó¤Ê± ÖõŒ¤¿<²Š°ÚˆD$ G_aÉ åu¼(µè K¼ :Á‘rÛP¯Ðv–�TðÏäÕ.ÛYµ×Ü›(J–åO�á xÆ„J^(Zêo/` ú/�‹ÚŸç«wž±ùw·ÑPKÒV1]ôŸ�©Œ˜'3imunify-security/inc/App/Bot/SelfOriginDetector.phpUT ëÆ«jëÆ«jux 臵Zÿr·þ[z X£ ¥”¤$×Iº®£Hr¬‰b{d%ÎŒ¬*àH¢:—Ã�HN¢™öúb}…>I¿]Ç#EÊv§uÇ©t,öÇ·»öüççù(ßÜûüóMñ¹8²ù¬ÐÃQ)vþõ�]q”Ù*gÚTSñݸÿR|¶ðè­”Y¨¶85‰x¼°ßy¼ÿø q˜e✤8q®œ*nU á$ÿL'Ê8•ŠÊ¤ªGg¯<g§¯~üÿ=:yõöD~w~ròÃÉ« Z?*ËÜõöö&“I7¡“3:¸›Øñ^¦†2Ûâ½ÍM#ÇÊå2Q^=Öîýé¸2z0{˜ç￵åÓÍhä±Jtªœ˜ŒT9‚Rê×J¹R¸R%´³Fà�p+Æ2i£„tþ™.a¯³ô “UiÇ’6•ÖfÂFÖ•Ú E^Ø[MV•ὄ௱¥(°Cdz¬i#$÷méºÁG+R¨è´Å¾…m�¦oe?SbPØ1ë“ØïM*Æ  E}ÖkËéqžé�Vé–èËä¦Åó¦q. í`gå”7¬�q~òÃë‹“ëÃããó¶0êÊÿö�S a”ÙiŽ`Ú ïZŽ$٪̫²� 1^Š_’Š[™U8H:LÑZa W�”„5ÑæC1° ”’ãü+‘ZhÆVk÷k%aËl¾¿‹-pðt&J�µ�€‘¸¾�ŠÿýŸÂ µ™ mÈ]†8JFàO²0Ú�è]_•¥ op ˜ý¹óÂ+£Rú ÂI&yc†àæ}fU´œpI¡ó¦fkȱ�¿êîã{ˆ¢[ü0Ãö5�%”) �·cˆ™…¤.<þ7•0Ž`[·*xOl•¥BMÕ8ç`�‚8YòÞàx|ŒÇÒÈ!lˆ€ÌäÌR¼&#�Àrvÿ?âw5Õ®äÐ"]¤÷Üh1"ü[8Ë+ÇÁ|™v¨ŠN„§‡܇t²¹Cİüp.m¤+RÅ[ Ò6CW—,ÞXöó4QyIØïa1 D‚p`;1}ܽjAnícˆ©=ß&qˆÕD—#²Q—l±?o&–pNo�ÌgxWœ–ä!)2sªC’r‹78$GЇˆ±Eð?epƒðn€„$Óø©“…Í22*é’ucÿ ©,‘¡Ø Ä�±“�’U¦ê IÈ-H,®’ôos™Jñÿ™î+**ÙŒjˈ Bî‘i™µ7*íQ¹+Èi$­‘èÞLT™¦@š£ðSØ xÎá��<«�R}°§Ëà¢Ñ¤¼5¤‹KmÈECªxä3if~ª f8dµF:_Œ€apeÈ‘� dC�ÌtŒ/0¡�½b'Ïpž_~�KçÚ²Á8íì ÔÜw=èÜ—ÆjÝöî��RiPxUæT÷CÍL¼=9ÿéäœ=د”fŸ³+ÇÚÁ;=¬Š&:.¤æ@ÎÃ�ê¶À\±TtLXxjP]Œ*ÂéPJk‚J]ñŽœ‡÷Ú$¯îh7cÂhIÐiÞ�ØzÎ�:üHô�‡”€ �q#VÈ9””ö|v€Š7Žk/�¾L�ñðSh;Ë-ƒBQK NéíPΰ¤,³“ [©ûvóFç@´Qwsñï_Ô?Ÿ¾¡°Ó&‰sI¡£‘M9üåDÑbÉ¡ Jà  ×¾4íìÞ}âajZ6<:~ÝÉ(¥Þl¤©àv6“VÒ C£®Œ¼•:#*¶tôQZ»ówÚ¾¬D’šæÉßVš«>V„f¤]Lab¬x„dã@‚ü8X+æ‚¥×´Al_{w^¶nm]u›–•f5kq+¼Ó�fUý ¸T&áŽz}�Ò}ª¤ÜYP£íE>ó.ÝÒ66¶ÉÌÎ_æaáÓžÁÜlÐë•Ö#pQŽØ}ºj';µ»öÎXÞ$ž/>è¿ AMkYV–ó™ô7D¢èm�M��»F8_†n©^³”têº<‘Îw#º8Œ [ G]ñÚ0—%ËâŠ{ èeßWJôiK¤ºàÒ"v¦�AÍXQJÛf ÍÇ´p—±›©AI]½‡z�¤�Qvßk¶ÄHÑnq,8jPG ½WXµ<]e¯ÈB•Uaˆ�É™8³ÂDºØ¥ßÓ–°Ã}£!îÝG#tšàÌ�–¦èü¾Ñjš‡ŸZíð”gGçüûîšyî=¦–_“ë±’&¯%H‚§q[uþ¸P�¨*I[ÍQwSßGÆ]ñ=xµ6´—œ¹(AI¸ ‹ZyÏ‚‡q«s]ñK}#ùE윿8_=þã×»Ty™µ48 KÈ}�‰Ì@üêëxf¸øè�v�S†[�#"Êäîé­¤›$Å<^ç :r^' ÷´Bq ÿ·€@jƒ ÉÌ÷ª�¢†D€C2 îmü]*¢b£ǪNàæõCž0ðU±s«éR7¼HWf³{Û¦W%U¡Ã‹ú9º®Ì—V/ãñ]œA˜™¿J4áGU„‘½Dü.’’&'g1ƒÜ´ˆtX;oÄtmódžHrUÞë>8b;Riús¾pMw·Ù<~óÀ-u¡Oè=!x}Р‡°ÜïkUÛËež0¡bG<¢^àa17l7¬ˆ°á»µ�;ü%> /b¯ï?ë`‡ÂFi| Ÿu}£fמÿÕǶWœ Òù¬ý æ|T\VxUá\£ì£OT—n{Ú4t�b‚«è*þÒæ§îŒ*ËÜã—õéWu¨> KáY•/M†ô±c»uÄi·T[*ïÚs9iÀ¶qO^¢LÿuÒàJãsö�?K· Ñ'–è|?Ye@%ç{£?Ò4æ�näJ·:Ï´{ ßr˜vÜÒn¦N ίX…Ö¦K­ \ž={ß>”� øÒÀ•Íiˆ¹ÓØûÙg ‰÷¨äï¿×K­\ð`1ØÛcÿ…‰_Ú{tÕ)x*·8Óªoq΄Ø8¾~�˜XØë)€ ü*eL®c1ÛS™ '”þLß„Y ®ÖÝy²DOù¹�ÌH}ŽþŽY �E—>TRW’ë¹€ð^»ï n±`Æ� ¬ÍÖ屘åI h‘×6^ÂAÄR× ×IžÝ°˜xç—oÂ`mžÓ?È’¹eZÔ]?®s‰,%ú�xþ"7!¦s£ÀÌu ­µ<*õs~¬ócß¡­ 9ˆ�‘gR&e˜ÕÓŒ‹E17g*U¨I�`ûRÄ> •#^u¯4�õ¶Päîçs[”³œ&�;a‘æªÈ£˜•™®ŸË�u=^–Zi}­âwd-x†”Ðã°øé£1Yñé¹Ï¿�`¨Î‹Û¢U‡z¯µM>ƒÀè×E&é¿7x¦´0ÌTŽoRôÁ€×°(Ž ÍjÀcgÌšøI$\4J3%ò²•ÓÄOOßÌ_�zÑšËypLüd³É·ÂÀ—ž¥< Þ¢-¬ãÖš¸‹mow£¦�0®8°Y7¨YY| Lî7xÖ¦ÙÓ×ÀÅÛñ‘ÄKMóÌR1jµ[íù^&16�2¶ûÚÔ-Ï/æ]‡W=­ùIÄmXâµ+èÌB»ñ{zM°™: ½}Ôxv�Û,žÓ 7�ôÜ­Ÿ¸Ùx§ @gD.„”ïbŒÓ¡,(Ö9æô€/ktå³�ÚÛàd�ò÷Kÿõc>˜eQ´ƒ–¥…ÍsúŠ�T~/ËÆ<;±™5õÕV!¸³ˆ­úƒLo(‹>ÊßÉÆó-бÝgÁõÜ/ýþË^ïàj¾5®ÄÓµŒŽ€ðÚø/a²gÃi0›?DÞ¯!‹i±r†¸œ+àç™ýX—Á– ¨l@º®� ô§u9_y¹µÄàóB ¯ÇÔô°rï¯ï/w.÷;_v^ÈΠ׽úÃîû«�ç½=¼úí ýÅÝîóí=J+þ„¹Í;ÕŠ;‰W§Å·h°»°ùòàÊÛ(“÷8C¡ñ ÈÆúqëôÍí“!k+�>õb<þr�ìÄÉx,ËåÄòˆíF'ø.Rõ¯ëÄVÜÀØÄV¯5·nµÓØe䫆›þ¯NZ·6"dõh N辂s‡ü!Vò©þ7è;ôÝpÍ ñ¢ MãróÁŽÐ` +hß¼úóx·ÁÈiRú[(Á-+T¦g¨ª¼6¥ÍédÜÖl*q×åùAKœ´^µä× °)úfÊÓª¥ï¥a.`G:-<­,î"¹¸±œBuˆé‡O„üq 8šG öáŠÚ«¿JïïýÉ&¤+Bæ‹l†òCñéÏÂ7R”¶H’ÕT‚YΛÿª°R 1­¿àR^y+j˜…Ï$ŸÆïµÂ:ÔO"Ë”©ß.Æzëýô«ÁVÝ„QÄ–áàËUBUÊæBåJ"�!e«-¾À».ÿz0úpõœ Lñ?!)é3ÐUZ&…u.)"Åá¾Íÿ†ÃK ĺùæKÌn>¯óL²&ˆ]ªcO:cIý2Ô4ÈâqEZ%~G3WZÆz®#ÿ:oðMš G=ëMŸÖ¬õFçë)¿¹‰}J MqBóÒ�Îp™¸¾•‹i‹§gà¢?ž�¢ÔÀœeˆÌ…^Çu /­ ª<½N“ÐÝã=�R?ÐSdø|ÜßÁ€þnÕG®‡'÷ÿ¤-ö�ÍÇxÁº-¿¨åâ6Ú³”5 ï6ÿPKÒV1]”)çÛd° ,imunify-security/inc/App/Bot/IpWhitelist.phpUT ëÆ«jëÆ«jux 臅VÑn7|–¾b[•È’œ´E!×mÛIØŽá8HÔ%¦È+ɳ"$yè'ö�:KÞÉ'»i�À†¨ÝÙÝÙÙ%ý½XíáÓ§mzJ'¶Ø:µ\êþýW�N´-s:W¦üD¯×ó7ôÃÞÑ;»ádŸ¦&£g£ÃÑÁ³Ñ³Ÿh¢5]3Чk饻“9Àÿ\eÒx™SiréèäüíûS:Ÿ^¾ÿ¿OÎ.ß�ÑäõõÙÙÅÙå Û¯B(üx8Ül6ƒŒ#k<Èìz¨åRè!Œ†í¶ké ‘É”^Ìîãt]µØ~œÅÇ—6µë"/äz.�_©‚‚ô�ÄR(ƒ¿a%©rzþóˆ´Í„¦émV*H­|TUÜÀP,¥ $?Ö¡Lv] SÂáÛéÍ©‚6NI|oÙoSdÖUŠsàeV:¶CUÌîã #$< ºzsEN†Ò™áœØ2І•ºOó2»•dη1#ÃÆº[yî¤÷O å�Ä|ä¸J� EÀn}È?'ÌRúÙ|;³Y�¡CÇ¿Uft8j|èŽñßð—h3¢õúÿ å¬È;|Òð®�GµóεwÔ ødzzM*‘]éVnI˜<žÜ ]Êúkæy‹‚ÑåDPÖDþé½QŸ(($ˆuÑG7¥“º–ÂxúÞÈ;1úIÿý€Î‘¯2KZZnÛÊÙr¹b˜—P¬–ù©b<Ö0zY±ÿJiÙíõc:¤e)\Ž®²:P&Óe.ùk†™'šÛ@‰"*=È[t{­¼Gì>¦ÃI‘‹¹Æ7Öác!œ—ü-Õh'OƆ§Ì"†Ù # À£L’Ј°ákq+‹(….—ÊP” sFqZ,­¯5ž3ˆQ‰=ÊYÐVîMD›Åº2 Ý «e¶ZO°ðüÁoñ䘺)Z¯&¸õu�c¥ófò`‰÷Âã¾hH9¯UþÍb6Ŭ2žÁøqY÷`ƒä^]´�¹Ú/Ë+4ëEj' #×}0Õ^�¹!Þ€]µ2\wDì{ö©3ìÀ}ÿ¢ßx¼Ãýãݼ¸÷€Ì+ &=ÁÓ «+³Ø]Iª¬^ÕF»¬æßb”"MLP¾°v¬ÝêÇ£òêîGž;üý/µO�ŸWàh=hbA›QÏôÄØÍƒÛž»"ù¡À ¿øúÉwD¹\ˆRó ÎF·no¿wskõ7Ô©ü®­2ïr)ý”Cš ª]Xù]úƳTt4Äw_¾ð>9>>®>Ž}LA¸­%¨÷@ŒÆIùõ°V~Ã!Ý·äÕÐ�ÄÇ»5Þ; k R¥ˆŒßßp¬½xãºÖ¬à 'ÛØSÃO…x?mIó=™î‹Ë'=±ªëª¾zÐi[¡Ä…b!à²Ôü"Ø&ä|@|#÷·Ex[†WZ,9�Êñ¢ä˜tiß]Åç fb¡–ürS¸øãób÷ØjNm«ëäÊb¬.auàÕܬèÝþ¸_yÿ½i#|½Ä•»T’^§Ú&f[\ˆ"Ž(Ëãqèxtß\VÏï•iL]h»Ow³øµýPKÒV1]`º¾©©‡1imunify-security/inc/App/Bot/AllowlistMatcher.phpUT ëÆ«jëÆ«jux è‡eSÛnÓ@}®¿biªÆ¼´H4¤TJ J[‰‡Jh³Ç£®w—½Ôµü?Æ/ð%Ì:—x±’õÌÙsóë7¶¶Yqp�ÁL�í­êû¿~ aªL,aN:>À»fùžÿuteªÐ ‡‡p®%�_ŒGGã£W0Q  ÅÃ=º{,<áÏI¢öXBÔ%:˜Î?ÜœÁüüòæ?§³Ë«LÞ-f³‹Ùåuš¯C°þ¸(Ú¶ÍeºY¥‹sišBáJ¨‚‡Š,Ó¢Ao…Ä5½žÝíy5UÝíÄÚÛ·&œd;‘JxO¡‰•6>�¡”iùÖaIRÌ7œgBÖ@�UØ "�Ñ@Ú[”¬O€2Æ£êF¡³¬ë™4:àCáœè`ÿ;œPÑÑà5 VîÓO²éé°1?‹²téoƒ!]‚Ã�ö\DhkÔjäÓ/}HˆKTF¯xÀ0‹•ÝiÓ&n•ž×$ T,ŒWE€&²¼egY=8˜@5H¯r¸ftbî®J>’Íx•ÕÚè,‹„ßßr =�ÉÖ¯Âq¤÷dÍêˆ}$ã(t`\Šú©$³ÖR‘cBIßaBñ0Y½)4kä%á�fkÅÒÄ��ÉÕǰMhgjr�î™HK¡ædZŽX f¾€¾'½Œ�d‘»„°ŠÂ –Íç¶™¥RD‹ëÃ$¹~£ì ž'9âw\ÞŽ•ºMˆ´šÁɰ0Ôܰ ­îHÀ p800Ü‚Šàèäx±0Öt²¤.Uªn`Æ0æ`Ò$‰æÈ pa§8YÈöŒÏ”^øÙLk¶0 4 I˜�Ò¢„tñþ4·©–m7"#0†¦"Žq!»i2ËÛceÛø ë`;p&Œr‚¨„4cq¤ô çxˆ…à1F$�Ï»X&˜àC‡–V(Iq[%\B ¤Õ,°ðϹÁq’xÄZÍ .^c X†o:½NÏÕ&ˆrz’Œ˜œðS?ñ÷z½Fµ¨Qʪ~Íæ`£Ðô$d¤;ˆ-ª1E™µ:„â�†¥ÀTQ�Hâ «‚¢`°ª*¦oBâ̆¦HÌrÞë;¦}Ièk·^K´¸C~¡a²Âø×ÍÖ`kàù2ã4¸åqÅ6V§–”—"eÁîXœr&ÃÞ/nT`¹Ý!,ÿ ã-¾´vag¬ —ï}îp¡’4f´^Ì~ñ º^I$J ,HÞTñ¼üO!ÁÓµžƒŸàF(ïŽÓ’!‰EèÊŽÉ×Ë÷ ËX¥Ývi 3pU…“î¢&ä×Úµ +b§=—‹ƒˆ„ ›­îŒÙ`ÊM^|B/°5[0ìDFþ§æBiþkÊ1‡anEâ`Qµqb@WÒ<^”¨I˜f3Ÿ>4– ž±¤œñM®ƒUÕ~Ù Z"9Ç"€(•nÛÁÍ î5/˜fy©‚|háæ©ÕDMø ºñÏËcó15ßHøë=~°p’]e,¶ŸFv&˜|v·‹M=ïZ¾aõ!5¾ acµ`‰E@\àz¢¤šQ&â3IæBc/ê�‹µi±L¶P­a§Â´ð:»‚&æ�s[YdŸ0yÃã¨ß÷ÛêH„Ú”`(¿Ú=ðØð*^¦ÿµ€Ùl?×t_‘51·”Û²]Χ ×ñu¥¶È„„†Hv©5É4Ž¨Æ¯McVŽê¡�&~ ¿öµÊF!¤ q¢wpž¾œ<ß{œêÕj—Ù­< *ó2¸2¹gn?é~?ÛX‡rñ&khMŸk11¯`½C.sš¿ |k)¦dñ(½ÿ‘ÕJ[[Ã'±ö8¥�©°•6ø³ì¸ròÝD´²ÂôÑ”·È,wN„ÒŒ°Ü¢³¹'\gÍœ<ʹñð�8gd(V.ØÙNÑ]dï¨ìN‰Œ@¾å¤íl€ÁºF©!î)‚µdìb¸yµì–Ø,ÎQª9r+òæÍ Ï =Igض+�°¥¨nùÃf^�ÿW•Q@œuÖM(PGK¶*n±*½±R›vò깕U½['ÆÒàå¸Aù@ÀcxE�W¥±ŸVOÒ‚áƒªŠž¨Ï-‹¬Hp(±@šÜ„ÞÀZÉ|Ðô©,LRd_ZŽãÉ|º½×3 $,Y 2Þ,I8Z˜1§M™ùƒ˜çc•$Ue–›5-A³ÌTDèŒ"›Ù`ßu ñ%+’�+%I•ÛÌF]h¦Ò-ÌÃ�ç‘RÓW©Œ|ƒ‡.:—fö �_Pâfµ ¡a\ó2w…¤ƒÕ2�|®dæPë芜‹LªÖrƒŸÞ°c.6oj+¾³àd›ô«f¨¬ýâôß"þ\ö[”|oð¦óðïYý~Œþ;ßoQ^�,G ¤òñ°6ÕÍ+^dð$"c�ŸÀ£7Æoî:¸VÛ=duü¹JnáÁ#¶lðJUZs'«�çQPÃÞ‰–Wr­~s»K–;áÐÍn>ƒÊ ¯µé2à�è·´’[$ÿó€×¾YcCàÐýtË–®|Ô™òëí×ÎJ�e¶Ü(ª^¸l19hÕª48�t›Œ¡JÒoÃân>§fñ:·%äÓ„L—~¤Ö0xØOÉ·[�¨<@¼¿vw2¿îPÝÑdÇÝ„-ˆ‰æxµ@Hº·À¤cÄ.€³ù_Ã^†�——dš¦/&Øs9üŒ�÷‚÷^Á:çê%&µV¸�Ž… PVl‚»«Ýƶ†wsô.™!Èo©4ÇâõšîŒ Ýå¦1F u¯…äö&±J6Wcëí.Ó[ŸaZֈșÉ]|Çâï4”±XÊe ”ûTÛøÀ¥&9†vã©ËØAúÈÕÊšx¢Ì"-V•ÅL~yĤÌ{Šý¤)¢‰ÉUlô�!ÙL-yâ’Æ)‚@ Á¯Ì-ñ0ôŠľ8||ø˜qÇf˜0J^«åê×ÝÝBÛÁMƒƒ�`ûš%áõP½Âvœ F;BIåh£Œ —©þ­Y儼`JûõY p2·‡o~æi÷êŸý»*Éè5E�¥P0ñaR¹�€È¬Ô^¯’¥Íh–ƒ/íƒep®CÚq´»Ã”ÔÙèÍù³Ë«¿Ü¼Áe/.¯_+úœª¬d#ëʼw²¶øõùèêì»›ó—Ï.^žÓâÜè,š˜d¨nØ0º¸9»}ÿüüÊS×ö Êô26ÙFò—�åLÞ5–7�Ñ09¨GÆÄ#§½'%â—�¶Q|3Þ¬ ¦õäNòL¯¼‚ÒÌÞa½Ú‡c“¯å�„ß÷÷Êb!Q@¢…øù°ë(LFœ–|“|.vÉŒìêÍîÏåeQ¹S¿>É�ñ€™¼!ÒýÁ¦ib�º¬P˹E¬©#Pš¹I}Ùù�óûðô°ÓÃJÄä’gGsWf’JfŽ¢„#¯ 1ãAê÷Ôn„ÒCñ1TgeÂÑNÄÓãœrÔ4s‹*T£9%NÝ&ž@¡õáÊÛ¢µ+/yã€Câj³n’äè$ošçÏk!^5sfÈ÷8}X0¶·F]¤W:™™ç|rfÅI@]]B•¶È™©\^ÕjæuÈi¢ÑÄÜ1?Ž™x‰€XËÍ”(z%*–s/Èî ý3Ž Ç¤·B#¥ Ø"1Äå¤�ˆ')"ëBØŠÛø¼ØV+ÈêF±°V)Pq %Á.ìY�[¹´À([702ƒû>†j›ðùªˆ‚ƒ ¦'Â÷B€ü¤ò¹NMÈ&i9FºPÓ2‰8÷ßÜT¹¯ßÒXÃa÷ˆÕ5@ÆÝÙAÌî#PßÈÓîê°jFcÙ×VÀ_öƒšö%v„=;ûÅÜæ_uCË[Շ̀ÈÀoýRù½'´ñ•X¶OšÒ5ŽX‰–à09ñ{‚6ÃÉv)åù†ÏiGLmŸ"ïæÕßH1ú­.ôñqìôdDB?0ú�çI¶*xzj $� kk$sO��å=瞤H¿Sô+ y[)“vVD› CŠ}Ûл°ð™¯_ïÐè‡V #U7‚FUV9Ÿ¼{¿ÔCå‹‚5÷�ÒšV³ÀO½‡ŠEý³÷De þ}õLȹ 4²?¼{ÿ^õàX§§�µ;,èµµÖQ(ZtÒx*'�6%’jÕö¨PÕ¦ÐåƒE•ÿ«@Ѻ¬ª2@PD$d£ï³ÎØi¶àÇu4x„X–Ùq‰Fñ‘'@!aèo¸ðÄÄvŒT˜xU»0pÎIJ’fyùæfžb�11¾�—£VÌ…"+S»µÉd:5Šà¿D§S`Ùx%�[“âaŽj2¸H™,(zLªÔ,-X00mðF¬¢ÖŠKŒþÞ™›å£Â@-]CG”ì—6’’ Yo£ Ñ$s©sÒÁ�utKÁ’ž-L6kÆß‡îmîbÓl†sä=Ë Ày\n8¸zÎ Ãm Å® ‰ 3aUr/¦ÆgšØé¯R4«l$"a¥-ÚÀÓ°Mpb"š½1)1yFý­ô¿h!o0Y?£IßJ�)Ô™7Ïõ¨ÚHð‰¼RÆH|Fê{¬TØŒç{CFÔ^Â3ÇŸ½ãF;/’YôƒXÔlEªë2‡ ›Ch ® „8rÎN@à°ž6Æ´‘”Héy,¦ñiöÖ˜´šžþŒÍ\ßY´¡¹^ü¡y„KözRAË:� xÃGòH ±%• ÄâÆðÕØ c5Sqâ8æý©ËPÎIæHEZMЦÉP„"\(þH£<B‚OŒõsmlÄš"‹ü/bÜP2R©Ë )æt§ã’㎟6ùZ¡U‰cO ë®*´¼›¼\Y(ž¤pÚ ãjj6C¨!ÌÒºN¶­Ê8L«:¹”2–OÖ”Úoô-MýZ*nöTÿÓœ¿Æè?ÿ~%…†)À¼ ðô­9gàµ)@gÑ66ØBJ î7ºm½úñ“„v TOžªÿf%D}WB…ã·¿¡zþðkØwC¥ôÿUyyÝv˯†vtâí%ZØ×©ÓΓrÁµN³~ê\”ÕñßS”©ek€Ÿo»LÜ2m©Ò]_tѤLþ–¯ÏLº�çE‚èU4Çû§_…¤H™Œ¯_7Þ&„ íQÆPuåkËÃgÝ(O!{RÏÍ‘`¢[3©Fá“2ÅqqÆœÊïÇõýäE‚ÓÓ<û ]önZ×~”ܺühÞ[É™×MÔ¹[È X¦a„M�§ÉW,³O‰¢q±q€+­¦!Â%ÔúÐ7Ô-ÝðÑÐ lƒ§ï´žŸÖR �›<;Öúºu£ZZ/½ýc_ÀÖׄ¾² ·„œð3¾Ø¯Á/^ÖX.ˆ¡âšJø‰™b¯½C¯qL#!!ás�é|…)¬Õ§/æ`I·‘8›žºPµW‚Fßi\soìÎ:7ëæaÇøý�êûŠ6†LiòÐß‹£°‘‘Q›"ìªÞo½ººbÔ±œXXÞW–†éÔoý¯�{êPÙE£½ï«ÞûÞ°IâPõ¿Ù£ïÃî¿PKÒV1]ÑG»KFo 1imunify-security/inc/App/Bot/DbStorageFactory.phpUT ëÆ«jëÆ«jux 臽VÝNãF¾Nžâ¬„H‚BBQ{º@¼l$4Y´] �íãdŠíqgÆÉF©}‡¾X_¡OÒ33¶‰“e÷¦êÈøü~ßwÎ1?þ”-²fÿà  p!²µäó…†ößvà"yW<Í?Ãe⿇ýÚ«™ˆôŠIìÂ8 àøè»£Ãã£ãà,Žaj²(˜¢B¹Ä�’›üW<ÀTay¢„‹«›»\�'w¿Ðï o2óàìrêy×Þäƒñ_h�©A¿¿Z­z�©›Â½@$ýç,î“S¿ÙLY‚*cºölw÷ã$Oy´¾?˲ûs¡Oš%Èw,ÐB®A/˜†L \{×7ÓO€éœ§lÉxÌ|s½–†HdšÜ²9BƸT½Ôu.SEŽÀ¤dkXq½€V òT£lAûÂ=Í\ðØ ;­²q¡ 饥08BÀÚ‹™ÜòƒNdƒH'€ñ¼¥9mw*yê‚¡1öBÖ—7Ï{1-çÞä<ÜO稜ZŠnöþæ#x“Ëñěю¹;0,è¼Ý{ŸÌ,º=ÜºŠ´˜ ë×ð qðPlrU·óÕ8úÆ!³µª¦h5Ū ³™¹23bßž:‚ɾ¿Å�¢‘7G\K-ò,C¹ãZ$+›¨å›Qˆ�Ú˜Fƒ²ò´„±›²òîBy´>u]h�¼wgwWZƤeŽŽMÂé~¶ð?7Ÿ›ÿPKÒV1]ԧɺ�oR1imunify-security/inc/App/Bot/BotDataConverter.phpUT ëÆ«jëÆ«jux è‡Í<ír7’¿¥§@\¬¥”%)'µÉ]Q‘ÙR_9¶JR.[g§¸à HN4œ™ÌHf²®ºûspu/v¯°Orý 0_%;»QUìÓÝht7ú €¿zš­²ÝƒO?ÝŸŠçi¶É£åª{ÿ÷_ûâyœ–¡x%å;ñízþ�øCmè"]72W#ñ" Äç�?{<þüñç_ˆã8çHE‹s¥U~­B Žô_F�J´ E™„*Ï_¾þáD¼|ñê‡?ßÏO_]œŠãoÏOO¿?}u‰ð«¢ÈôôààææfàÌ1N< ÒõA¬–2>0ta �ž†‘–óX‰Ó<<˕֓Ï&Çq¡òDѵú¦L‚"J=YD±šé�.Ôz–+Îi¦’�Cé&� õqHÁ’õƒHå*‘k5ã¿B L@ÒW3þë6gß�MNÔµŠÓl­’ÂQPyžæ³8]ήe>Sï²4/î"ô*½$� O[ON"¤e.—dA»»¸�É@±!’¾}±.“h±y{œeoŸ¥Åá®3çäZå`†ºÈË (s°¼yZŒ³<-ñ)BYH%E*^Ÿ2X©ñ"�TƉ9*°‰ªÑclÏc¹LR]DÁT$©¸ÉfŸŠ@ƱžÐ ; Å0¯Å*OoÄy™ÑZ�¾ T†ó#=�šÊµØ{þò…ÐAeÀ´LB :ò4ÙˆD«ì(©(éM"HÆB—ù$bÙûZG Añ§Ég“Ç$´ –Z Ì ¬Õˆ6߯»»;(§À9žë4.�ÝL+€9DZYYˆ0ÊAVi¾™ (� *E™FÉ?ØÝÉòèZþ€‘f€tèÑ™&K¥ ñ—¥JT€áL2@1€Ryº ƒÉÏ:M&âf¿–q©D¤E®²rGzpQBäÀÞò ¨.-¡>u!A^lc#”'+ýHi¢ÄMZÆ û8•…P fÒèÄ0€½âûã?Ͼ=}uz~|yz2;¾œ½<}õíåwâH|ù'-�5¤ ȸ¨VbÔèå@�Ë{o$†C1W‹4' ©E”*_€oV*!Z™Ü£Àø:*P:Q±•è}¾€ëáÐçú¶Xîñ÷ÿþ�jL[ž¬œ´Î.y ÅË<—›¯˜‡ÿõ¤Á *$ Ä@Ó¬à‡bœb¶–0Fø{»;;Cré‹BÈP4Žžˆa&ã(ç­çÀAOÀ‰ GHab�7mìn í°™"ì¯bûùÚQ�Wr-£mçgh‡­Ë Ì·Æfh‡­3ˆ­²½�m ú_Ë(Óš¶Y¼ƒö£»y7зB¼gãËàF; Ë »?@òxø¥ì²ž;x@$G#½^ÝŸ @rVªø6_¯*:)$G%Œ–Q!ã4P2i’ê¥â#ybI0ÞdQÐÁ’B¯éÉÃB{2�|è6î`hO¯iºŒ{ÔÒÆfh‡=�Ò§�66B{ ϲ¾‰»ŽÐy­ŠîíÔ‰ŒÐžòÊà ÿ[¦ÝÛ©Žë ë nDºØá6*hG69,é]Tt8Å6íIp•«EÏÆî� A{º“ù$:q×fèÐ]í(”r,#Èz$7ø@ :ZB¶Š9ÕA´FB+™«±J–Q¢|*muЕ´›“.*i7'kGA”–-‘¶iT 5y˜è±.‹è]m%j M‘vÓéi?\f'¡n‰ÜFÈ“:fä×QHR¾CA´Çd|Zw˜L-O•ub·j½MlßOÀž•d Ò&„�jÍSH¹0GÄlµ?åÊd.×&åóóë{$혙aˆ…©ÏÄlFY/–E{5ªûPìì ŠU¤ÇO¼ñ#‘ ë=±Ç¬ìûX�Ü ¬wç½·ä3™C¹R%ÅTÏPQÔ¬¬î®8  §ù8I�¯d95€¡E¤[Ð �z.9õ–bR¬3š�3íC(â ÑK±D¼›3TÍhPJAE¢õ¢Œ¡²�œ©o@ek“‰ïqEîsɘÅTwƒ¶Ò´Ò�!,b%¯©úSPŸ€³F%Ö–aZBÝráBÄ4 )Á5мL4‘+/ư"¬ià[,ûÍ„.Ĺ¼qò…�=L|øyšÆ7@¼ ?R ’Cá%ín"0.(o»ry –³<»¨æÕ +](¬gP!{ú*Ê2NÄë A%§²Œ‹iUuÿ¬#ªwAÝz%©–ßCÀ°„U}ibªÀ[ˆ¥1–;Y\‚Sëê°+¥2¨‹°µÑȸ“ ‡#‹[¨�^ÀIAå�¼­æ± di"3V h ¼[ˆ…)ؘº¸JÒ²+6 ŸÓ9ü ÅZ{ÈcÿñâÌ(4Wà•4Lñª\Ïaq(oßÔpó�x£œ·Í–„x� ¹– p½–TË u´éZK£Ï³ØŠ—�pTÙÖ ÆàØÁPÝß_?"Ñ|:U‰ª'vïŸU= ÔòFèjvÔ¼98Ï,TAªjV;AE ±'>«™qá)m>íüíoôE«Â ¿òÒgÆŽ†?U€Ãφⓣ#Ïÿõ!Ðw¸áƒÖÓñž6Û1SPÜ5„ÿe {¾Ì°™]'PÕ†f‡ ×[cm%ìÚˆ#³ÐšêäLDÓ–6~4�ÿ ZëdÓ…•F§¢Î¶ÿÑŠÿ@æYðwT¬’^(ñÕ‘Ð*^L§= $³ó´�¾MMkegþ?I@G¶§A Åv˜:¤,µP ãO­Üëd;\îCÀÓ£Ú]fï­Hpñ&üR:±ÀÆ"s83ëD … ±#…¶ƒ?£l¶Êì¬AÄ+�ÑÐÀSj¶Å: Ó”yì™ ZùâGÒïSo‡v‚€þ8’ ™øBë¶h1ÝÇ^â5�©X®Aíàˆ†�Æ Ødʦɭð£¡ÝcK Ôeo®mf"dY¬R „ ­õ¡ÀÍ%þíâõ+ ‘Ý¢kÛZàõÄ:“¼c‘ *ƒ«åNí§4·í@¢(c<’ØØ{¤ô'ºÁˆ´–W&ËÉ9«Í£ Âs¡Æê�³üûþ/([ôBéÒç$*޳ìŒñà-í‘/÷ 0�&¦ê]‘ËÑ!û$º†h~7[Ú8?öö`pêïæÈpü}6äÊÐ!°b«-GM ¼ãÒºàn€O„ZgEÏ÷j&ëH±Íœr¡ÎyïžÝ`f#:7õÆ}ûIÙ J¹Ä9ÍqÆ}çjnÜ/¿�}�Ú\ÁkÇNÇÿ½PëYb®bÚ^jN¿äÚ@mé5`*AÓ‘¯Kí¢¢}ÉùYé�lndg4áÀ®ÆÌËrzµlP-á÷}Zò+ð-•äPúuÔ‚i«¨òQ5tfIßGA?÷ÖOßZ¦Ššàl J'Þº}àTsß8�Ù;×Ç$¡ztŸò¯ S´â{¨„¡(Æ£«Ç#š² ãœÌ™zÂÉœêƒgÈ.ÊÄ$G„õáéþn[èv+ —yõ攂UÖã;vkÜ]zò4YËhŒžr®�<¶'Ô™ˆ˜;'–¢ë–¸ÉgX¢’ò¦ûšOàíoÖJ ¦î³Úhô`0mè>±¬úÕñeuVÉG’¶oB ݶ.Çþ‰¨J‘êÿh™4“]¡Ë 0£À³W:ÒTùؤ“œÄ˜óOÌf”‹]H>¼~†Y–ih¼¸x=þ×/&ÐÀ¡Ö_g#,”†CS¥Ï5ð‚#ØÇi²ì+O+YãBõØ®M²$Ó…BžcŸ_[s—DsÅöüÅÉ9ŸÞóÀ˜¤²RÁ•.×}!üÌøÜžÎz'³Î®&Ýø^’lN{= íýpþåóèûãW?¿|´ßCÄK†+™Ó˜“|曟€}– þ|Ü‹8“[Cq0]C¥P�à&ƒ Ÿ×ä¹d,x ÏX¨\_«|I°íÆ>s‹>wFs‰&+ù�}›qNäïÚ[b/¾J†ª‚°ÞN½3”ù~ôl•}Ã>Á1ð ”­ÁÛ~«OkíÚ%¶-![�øRÃøî’t«õÖŒÍÒêW™Ù`k�WZo^˜êÐõ_÷LOtŸÜ§.¨Ì£-…íOò+·tMS2ÎVr®ŠÝùfB•ŸId°¼_�‹%9;"­ï¤ˆkÉùJ_½¥jñ�Ƭ§F·àðFn46ØÁ$¼bÕºRôœ¹ZÊË^ýox—Îo¹é�í´7þÈèõÈt"+7pϤűå³ß+T)m_ÀÛ*¾}˜W¸·O¸·G0{{àV+¾‡tâ—¶s÷+»†é(ìÑæSøí}'Á�ç*¶q³˜ë¢§`ÇÝvÒt�‰mxCßê2î  è�ì/îò¸æ˜·¨JË-�EeXÿ<_q¯j¸Åo¿§°GÛ&´¥øžŸCºªÏËàJ|ÚÙrû·dÿЬà7Íeëçu„Ù¸>YYÚ‡ezÍ,%¾W-Ž­ÇꀫPrÎg X¥óg— {¨>ÿ3rax§s§ºÝ‰÷]Û�%âz®Ä>Cyýså­‹¡¬�Ô/®¬äç_|9Å{%õjÏŽ G"Zg1>z›<9Öž!ȳùfF–É a+Ž7­Ï?5ÐrP†½`Ò�FŸ‡'d�Àÿõí/u;ÈfÝ¿ïíò[%Ñ[%Ìr 4긙AirbDz{nºÍ«îòîžÈºw«þ—zVêañö5K$;ô?ºín@²gïÜ®wîÔ{nRËkµIkgOŒ$ŸV€Óšèï±Ù\š×ˆVÛm°ß}>úéè©g{ËÕóÎjë¹LòžÛïÃR•»6_+™ôžÚ;‘×Îë£d‘¶NëÝ™#ÁÑE‹¡9A¡‘æÅ CÅ6x;ÈY›Â?*F¤7CþÐqÖÒüìwÎè øþ j·Bå-œ‘Vk"{¡k[-ƪ« }¬ùÛ3ç°¶a�Tb�Œ o•3�»OqT¡�Ò-!{ ae€Gð©Ù@S>ø>yua:Úó(±}2¾ˆxvynTØF„D@ã"ûÈX©µ¹úâŒoL"06™±ß¾Iš¨‰gšÕ!›eØÉ¢±òšzŽFã°‡wôÌn&‚0Wµ8cøÀfFøìkãÅêÞýVCìÝrÜÄ ³%Íô…½lq‡}>í­[’]�%è/â ‰¨:.cFŽ0´U¡l8Žˆº.cgé‚ÑÞͨß{d®iÒÆg?ØŽ»õÃäVÔ6šž¢Ý܌ӗtª ¶\»½àS:�™ºë•Zwç©Þv‚�E÷í öÜÕ)øÑ=Ì#F’BF¸³«Æ�V-ñÙªžôµ[Ëx2pÚ·| &Ä#Ûé4Ò?$0Κ༪W5a蘣ÞZ/á}] çŠZs’îk³�Ž9� à< ÛBçïÕq¼ ßfS•G v­êAç‹ÆJz91r¶ÊÜQ»¨�Ý=ú _±¿¨(d ÃãggÇ—ß 9$ã—÷ ¸ÎãœmuÆ7'|ø¨Â¨ÀëÄØàš¼MÞ&–0Ȉ“�þ)=0­ñ0�€î£Ã¦à‚2×`jñƼJ!òƒVðo,OÇ7ĸ¼’îcÙZ/…Þ€‘½sÒ½ +@tbïñx.5÷ ÕRåûŒ©é¹(f\ú�n¶§”¥™o{`€i‘ýóInŽ!c¬ÝŠ\”q*¾4;1ÒpÂ’®É¯én³Ý|ÅÊܱvo¼1çºYEàÚM»N[ô8ß¶vb´e=kp•¡à+S!þ�6Äky)Þr†´4s_‰çežãñ/¸&º_Ï£{¸Qó4Æû瘛K4¥ýÛÌŽÛ|æíje|¾â�±‘�õH<ö·n-ËÃTûÔÌå‰Èrw”«;¼6lw ZŒÊÐvCLèÀ!‹Ï¢Óðwèöð:¸Ó¤¨&‹ÏàOÊZÉ€véFMXµZPP³\eJu=†•þˆ¸‡œV§ZÍïV †Ž µÖ5æ[™½6†„àŠ¢Èu• л¾=ºäïá/¶ÊvxrTWÀ•?Fi †^jÈ(ˆÓÞû×í…›µpn@¸VCÖ‹ðòÀQøIÀ£‡Vù’ƒx’îHá¾{áË4x¦gúÕØ]0,&¢³fsÁ¿×j¸z‰F憂Û:¥ò”.ŒÄsÅêWa¯²{tÀæ·jð'{‡zÀK‡„Ã�ÝèFâúª‰ÇÿòÅ•s Ï ”‡¾”ÀI¬¢ð0�tT=fyßyúŠ×°Ì5·êòwµû§æÕ¿�"Ùƒ˜Go¹.è –»·ÅÏØì¶}~GÜV�Èòk8~<ç?ƒ›ˆãdc÷ #HÂóP›y M‹õh׋·ÆS·î¬Ñþ“ôËw¿Ïô½¬{_]?$í|øtßOôdV‚Ü‚nŒ¬¶r;æÂ£Í|«[‰ÜçeéÔ"\u¥Üo:4ÿ~"½ºÿ2ÌûyèµÃª«‹1|¹Î¶óW†¯ò� ª×5ÜÖ–èÝMV'ŒZ&c¸O’AòVîj$�ºðÍs Ü«#÷€³·Á³Ø9PòÎ§ì æR‘À~péýsMdáºuoÓ Ð(hc¿½ëžŸ˜X\ÉÁ½[ŸÍùÜ�Oï9‚Q ¯�VàµHÿ¦¨[ù'Ýu–ÖVza–‘zþfxµ÷S«…Àð¨}KÕ—±ÓŠ9˜Q,~‚ÿW#Ù˜®ñÕ›‘¾Œ,¥êýÝiwà••4À:yì·<=ómÏ#k>økö ÐtÐî/ˆ[ÅொÆkS‡hS|ÿ"v;Ä ¹Å°ñpñdBÄé—yÔÊ€çD©°Ã‹w¦…Ì—Ê<*ÛC‚P¡ËxDÕ'J?t^F%Ƹ�£›yÁ¬»Š8ºé<±ïáù?$íl9Kä¹vã–|ñà@œ(H ÖQ‚a2 Ôê•êÍ ÷‡P‰G¡ý÷Bj&O™’‰ö±™Gü!¨Ï9)X`C£³ ÞõØMƒ“L ÒU½þ£çÇ“]1<Ÿ¿ïN{Ÿ¥á¦òL,�Nq9ë¡ô©Ú{žÝã`ÃÔŸs8—µdÅ=áב4.ê¤4£Î>È%“èµu$táõ’ßö¦øMßß[˜§aë.Kì ~¢­!Fj`�øT-ˆ ûÐ�xóú‡×õ7¯ßüí(‚¡¶"aH%74DãÚ~�4–4„4©€Nop~½nÿü>;^äAûýÐóN½þXïŸ+•ȃfs±X4í9ÒŽ¿nFtF¢&njV*1¹¦2!Íàt—Ýë4fÓåe;IÞV*©¼oñò#£ yùŽ«3Á ãñ gT�²—·�:<d:eÁ™ÑGÈ .Kü ‰ÃˆJˆ8 Y<>…䆌Á¸�ш”I�rjNaaŒ4 A„‹ÐÖzhÉýZ©8ÚºƒæÍw˜'ÇAª¥ö¬}HãN6ô™fÅ x,\t�Þ{cÿ¤Ý?êyЗe·©K¤‚©e=3ä¾ý–Cd ,M� Oßtýn0öÇÃöñq·ó�ÿ Wu•Ù-�¯/ÉЉjì›Å_nˆ€, Ög"Ø QöypJ–6Ñï^+N1×sÃÅ™ßôǘ¸þQw "1É1„,"ä€/€¬¤IÎu (4þ=¥)Evˆ2F] “Ô�Æãh‰`p¾ˆ�„×,†9ç¿mÜ¡œ{hD›šl¤çúbͳHÅEÁlB¹¶ä@éÇrSørɹ•ð ßFÌ7™°›`6…ƒyf$é$ Ó46Å ¾äw¨æ�-ÊýŽZYÈjX޳§æLÖ7îÔZgÀjK™A½eÓ²fÕ!a胫 ®‰˜oCìÛw÷�A–U0–÷ÁµLÅH‘ÕÐï]!F^¶Aæå�¬ÊwÁð: ‚jI¥áV‘­({:u ÏX5¸YÙŒ2¬¬Ò ~˜¡"†ÎÂ{/®ZÃ5£7N³™Ç ‹FÄ‹l0„wÛÀ^ãB«Õ²§^¾„R ôß(zG‡ö2ÕZnØÙK¢t†|¦"BúíKÈ„þP…îéy¿{üÙy�óawüÙ?îö<ÿ¬=>1t:Î"YGB«NUt$�¦%…Û7 /¾üÝewiR6 i ý‹o/²ÍY@kÙË’�ÞpÔôõbÍ$I ‹ÉŠç€¹*b¹*C÷ Í‹%fÓà²U,Z†ñ€DìË#ñ劜EÞ-"1ÿ:.¹"·ç"rËbÒ:Ìr0 aV/u½5K‹ÝqeÌùÚç(-né4" E‰óc½˜×ÿ ä¨?üêùýA¿ƒÏö©·¶¹ ÓS3Ô=,Ž1ç‘b:37ó;¶Eª+c“âìà¯W Y(­ãòå3'’ƒƒö‡ö'¿Ý¯bˆæãA»èy¾¿ŒÂÌáŠDÇ¥BpqJ¥Ô­K»ô} d‡§Q1Êyš„º!?�¬Lë&¨�JÙ€³ˆ•”X™Ld”Ç­þ¾Îû·f“Õ12©5gk²°Rùi±Çn5ÔL¤LkøN«ÓNÕ×jed«uß–ú¡^¥ø~kµËYõ[óë†hÔÞd—æ¡×uWÇ&§� Šwµ³Bõ#‰Q7 |Á÷«‰'Æš1¦ç«¼¢�E“«± ›¶>‘¨:ON%³YTœ“v4;Wlv„í›e]ö)÷NáΤh{<4ùq¯væÄ²‚üýÞ³ǧºÚÆsõ8fÑ wŽk—j?,/µuàÜ€Êé~œdo+Ý“´ìJöT­z¬RéZ`R±@>W¥j6 w•»ÊPKÒV1]éݓڱ(imunify-security/inc/App/Environment.phpUT ëÆ«jëÆ«jux 臅T]OÛ0}N~Å¥B¤ ÒvL{�•Q•À*•2µ… � ™Äi-;²�vÝÆÃ~âþÑ®��¶ÀXªäúøÜsϱóþC:KÝÖÞž {ÐéR²éLCýÏï]èÅ" aÀxöΓû�°³Q‹H/ˆ¤ èóÚoÚûíƒwÐ�c#ª¨œÓÉ ÿ€”+BÆC*¡7¸¼:…Axõÿ{þpìC÷|äûþpbð3­SuØj-‹f`:Ǧq3I+¦S·Ôr]NªRÐ\žUwÛO2΢åm7M�Ür@Ô#â9U gÆ”k¹IS!5ãS |Τà Ö!’"�Eº±iM|Tšp­šÅ8#JBý‹«aÿìænì÷®Fý‰yNF7wþð� ™�˜ý(ºÎIœQЧ "S3\Ⴓ€Äë*ÔS)„tÞM•ÞmbHI"8 %Qȳ 5Ëͯ5 ] wÐX¤†¥Ö°:òR 01 A@S�A˜…„¤©yÌ´Hˆ6â¥ÎðIÁ= Œ^Û£‹åv�Ò` ¦”qPH˜…¬˜°¤�˜rœ;Ìg.];A$Fõ¶Ùn¶m~AL”ÍüŸ®ëXzø4º<…x¦·wTVOýk0UœhUœøã‰)›°Z–»ƒÁågß�)ɲî:Ž¢qtxh¨ÕR®^ ¾í®³ô»c¼Îâ­<÷PÍ1lÒzk x«å¢O¾ŠûìïɪíkN¬³:²¹å™”ÆŸµ#Ò4 <‘Tg’ƒÒÒDqY¯ÊÃKgÊìo¹NšÝÇ,€(ãv*˜R]ßÅ0g;?µØÖ3¦ö�%žü^‘å:‹ [Pó]N©¨2Æ ÝÎø]îf±­Q ½¨NZ®M¶[1m—¡Sí¶QU¢ðhâPâ¾–¿=g~©º¼4ÉãFJ$´^¿ö5¨nLq^NîÏð:Y¿a…;x»ìŽÅ…Æ#Æiø¯ô63²ƒZ?Šmuð^Ñê¡5;;èÝ].ªþê`ëy°Õéü·n÷+ȧ¾›±­ã�î_PKÒV1]-÷ÓY„(;&imunify-security/inc/App/DataStore.phpUT ëÆ«jëÆ«jux è‡Å[ënãF–þm?EÍÀ‰ì@’»;säq:ЬvkbË‚,§gÐ= h²$1M‘iµ2i`÷öÅööIö\ªÈâE¶;;Àf€ŒÅª:Uçþ�S•¿¼NÖÉáé7ߊoÄ(Nvi°Zgâø¿ÿóDŒÂ8÷ÅUåŸÄåæþ­øºòé6^f[7•]1‰<ñêÅ˽W/^ýQ ÃPÌ‘Šs©dú } Žô¯OFJú"�|™ŠÑÕÍÝ…¸šLïþÿ�§·c1¼œ�Ç×ãé篳,QƒÓÓívÛ÷pç7î{ñæ4”+7<…I§‡‡‘»‘*q=ÉÇ£Ó}˜lò(Xî> “äìð0Wû?\Ǿ ?¼‘n–§òìÙ3»ä9³ga¾ ¢Q-ƒÕ3¦ßzntáfî£SÇŸ<™dAÁ¯ ø\j5"¡²8•"Ø$¡ÜÈ(sqŠÈÖn&€²³·3± B©ú$C/t•¢…·´î_‡‡HíÀ�óƒTz0´(í>œxq¤2q1™�G‹›ùߏè|О’^žÙ®sf‘æYÆ®&Ó¡é˜A´š?jü认x�©‚qUÝi6ý8¼;?�ç·“›é­s3[Àÿ[û:f_GSr ¥ÊAPÎÂGÆP-<ÝŽ†Sçb¸:o&WcÜ@Á—ôÁcê\­AÄ�ÇBÞCqx·x[saIƒÛŠðÈXjdXÒÇM@zÞÚ�"ŠeœŠw³^B+{K×CYjÇ*sÓ ?lƒlMÜÀ¹�3'Iã ´ ‡=é‹Á|„’‰›e±Lã�¨°*T,\M“ˆdñj…G“ Y±v|©Ü‚Ð%˜7ݪܡ®…ùH†hù&×Ç8ªD…;±Eà 2 *éZÇAUmàêîr2uF7Ó7“ËB LÒác654›5•Õ42›8oon¸þå«?÷_Àÿ^6Ö%qÚ²nv3Çu/_¾úöõ2ò“8ˆÚ�KÇÓ‹ÙÍdJÛžºIpúðò4M¼ÆÆY°‘qb/‘°ÜWMZ‹ÉõøæI}û¢Õ¾KãùþÁM…‰/¿FyjjI< ê�”j8¼ß4�µ‡î/(�l¦¡€“ÚÖž'[—XZX RaÌÎØŸYºyRTà(h5 H.„¬ÚñT†q¨¾+ŠðÂP½ÒDQqm]Èû|z‡‹ŽÃ=  5<4k�™½N‘ç¼�}Êyà:ár0¨…ó“½ç}ò¨¬¶q„31F‹Åšƒµˆ—»pà70X;|I_+cTAÁ3Ó+™™…3¨¬9+E„ù)P™ÒSˆÌ‰øúkØÚI¥ë[[òXCHn´èàW] ûJ7UÄ8�BFظ¥P9b�¬£ A蘱…T ¿þ™K…‰Ì]¹A´W¼å.$_¹-÷m ÷!ü=Âõèè¶ÍÛÔŸåå|Ë-Š˜Ys ŽOÅ´JôjN³Å|)3ä½ °<"©Ó}a¡ª!�j «É@J)€6jç½_B<çv<·ð'|eß*Æö0²ùø"‰âüÿ&Ÿj Üu®[ÝÃæ?KÁ逎 ¼0hVÜË–Ú p^P©ñ<—pFì ª™…'K¬qCô¸�`§è"ôÙ &LðƒRê~ž[ÓxSßfšV5„·cñ;Q·\<8JÝ­Îþzæ‘Z4+5%#Sã$¡¦Çœl Èï0M]tË‚Ú-;=3„ð*klPïfE1sz 2w¥€k ¯I ¸Q Ã«(ÈONoúB¼KÝ$�` ìNÁê½µ¸—ž‹EžZ�”ÅQϨ 8<ÿóÿe%8ð&W™FÇK0*áç’jŽÂ‡íaåƒÌ‡À»éã(ì®ExTðx^WåOzø˜5qpDõžOA†ÞÄhoOÝÔ.ÉüDë“Zný»sØ\6º5J—›$ÛÙ“OÊ)y‘Ï=DA£ âÏ¥9ÌÁg!C% ¢ås‰–4‹¬ØcQVÐâˆâ€µdõÔ XEXÿ^ÊH¦�×8Fn¸ûë�‘å[(¥©¢î_H,¢¤?"ª½ž1K‘°¹JÀgu“éêÓ|n„^U”þ�D”¤†ÃÝ_v=�XŸDásÚP�°Á61[+ú+Ût ¢ C`=H@D�ê#@yÁ×#CËpBHð;]¸�¤b/G!Á¹”»„<Æ(\õ!¨ƒH6.-$J˜Ó¨l,êBS÷u, Zv(øxŸæ]ë]hq’JErnMC± ”Ÿìâtl˜G�s”Äßv� }ä‚€ŠM7AŠ&2l ¨�×O ÓâHr;éÂBE kY?PH¢ú-C''ñ¯ï•”{« âìÃu~…ªLT©­¤ã“Ï(9>Î œ½Ê0m¸‘ÚÂÁ~/—¿2 SnÝÝY¡F:é6ÎCBH"ÆÛœ ‘÷¹.Ýa=PDúY¬KpERöìýè¦qùö!Ä[Õ Å»i‚Ø©ÉluR‰Žñ£” w“7ÀJpåQ¶#ôLGücÿOLÞ�¥¢ì¬ ÀIÒx«»&,mp ]º^Ù‡èS;¥@- \V$Ào˜û²ìNœÙ…†‰�iìI¥æ¼ê Š»Œ½ÝZs£ ‹£µÉV #µ+ùc›¥Ä.­ªʪ~ªPöÿ‰Á:æýbå£ V�|Æ5j…ãY_q\�%Ôd>šoŽ×ƒhªqæ�U—ƒaÁg’‹ˆïÞ7…uÑ~ Ø Ü0¨ÔÖ+Äwdñ²|4BÏ&ø„Õ”!O0Ò³H¸Ît?¾$fÕ;_¤|; µÁ•"QèœNøg½HEë%];Ù" ~ÊÀoòÕZÀ'?”l6'ú¾GÜB �î4‰%ÈE¦ÀW”‘øI!Dù)K]„²®¾‚‘�À+¤,öá–$Vžæ]aͲ3­Ä.]Sa­²â“JŠE�" Sñ:F¦šDB]„@nûEÃ4€�, %ò *�ä§„ª<‡:¨¨|§c7€¬º×�—tÅéó y' ÀÃ!ûëpÂ<;�°KpÐA�Šê}øÍVB7çæ@dˆ†ŽC¨ÕqŠŸW“iù³„(¸…¥‡Ž8ÿN›×îÝcú6§Ý’†l©¿+ ¦˜A‹­n aub[,—ûÝFùý.NýàLÕ‡T…öƒ ãëÉ7ÚTŸÄè€O;%iÞœöIšZS´ ¬ú(g�…/Ž”ìb4™9Ò´|ʘà>Šdjÿ<Øe~úµÉq¥4oŠï‰(OF}»9n»y5€ ™.m¡`ó %…ˆ�EȆ- ]ÃÎà…ÇlTdQŽ^éðʪŸÑ4Ë�+6hL°˜xÐaû ÔŽÃØ£GÇÄR·¿K2s N}Kœ*ƒ�î±Y»Z!cE´ ñG@meÁ2�|{'Ƽˆb˜Ž(”ÖbÄm Þ›ÇyJ°d<¨ÀxåMbú,´rK= û�Ç^”¼a‰²EUý¥5?Ñ loÑ|Í/«3£W’ðÁh!5g²ÅÐ7=!a>½n³/¼ÐЉ•Ònß­%'’˜™lðX\Ûb„ØoÕâ{-#{1R�[B&¨ÑbýÊ4'ZêÛØ ùv-ÙuKiœ›Š³ÛØú\ǹÊ%¦›Þw�qý…1�çmÄåwjkM"ÅÛ2[,í„…é5ÔK4áV_µdñG,Ó îÁÑG/dË�mñÊX÷¾Yb}Òß™0Œ Ìâþàž­÷�Üö–Om/Óˆ‰ÖŽ�EáÌÚ™üú+�*n"à—÷b‘Z�lgRNeIKq¬³‰n‹ry EØŒ‘[­äZªØ?�Š©Wºðc>·¸ô?5Kè6¤ZšH´æ çÃã Î(¯WÚªqê•gïg2NC6TQUÅ>l%ñ\pÛÓ-ÎN�èÎ Oë•5®ê¸IàXŸ)CéôÔ94(ƒ´ f.7ñ7RÿúnQ÷Íœ2@È‹p_L¢&�—øúi-±Œ¢Ò5³63^ü¾óó6³Í �pÛpiáZºÈ,ÓgGKšrc)vbbÊªæ–§ÐÆkŠ+Tæ�(›b«M�Œ»ƒ*× ’ Ã<–o»Å_oo¦BF�ö0—9õ+8¸�ØïÒ°Ò=Ò§c=°acKð\l'ÁgÒIb•1(áõ È ¥k¡^�ºñ_œ¿P¨£áÎ’wʈ…4iúãp”õ-h®›$¡Ž“§?+ Às5^îÜÇþ®£aÊ8.Nqˆy*ß,™úé�D¤ò±c—BXÚN ,u)¤sò¤Ô½TúæÙÐ á3egSÁlìz±q 1%×:dc�Ò㮸e·øò—Ò“­ßT_…9†–SˆÐð[Ä�W/^ðõeAéË%ÁïCrEM‹Æ�l‘O®ÔxFzé°Dʓ՘G{igGüÒ#5˜OfåK-œjß§’Th ¸¦Ve„ÎèŒçó›¹3½™Ž¿ tÒ%šŽô|$Qmg£V5£Ñ $­â*M§•X]hzè—iÔ52BBàä‘®åLõÌ�ãð}Ò±6Cs�©wž¸Lõ(æ÷3™Âp ð8¯·ƒô^9N"êPUäWž«Ó&¯b´Ef:>™¹ldx(¹L˜o úvاQÒ‹‚ºu«X¨Þ·™®|>·¯cØÈõöØúÜ$!ÙlGtº~±ŒÛ¾]ÒU+䃹æTƒŸ›`†ð‰}ICƒ{Þ'åJ¦TÁ©ºúdgaÏ ð){£_.hyèSEØSûMxËåš™¢Ñ®ýwßÅWõ—<†çÊÝXI½v¹ˆOY[å‚fy7¿²Q¶j‹ç¥ÊžK=Dß¼ßöå2ÀžÍu#˜ŠÏ×ÌK€}’Z´mÝV¬µ<õ2 ¡,ôÀ¸&×wÓÉ|À6º›Ow0¥Â&~Y¼hÙ7¯î÷M¬~E­¶%ã. úƒÓÓ¯Ôà+ÿ+ 3Ë �¯ÑkŸð¡yí“y@ÞÒ´Ð�«jH!ºß „);}¥ƒ.ÒS ¡Î÷ÄpØR#Õ®ðµn‡ ÈêiDZP-46ëêë ¡5 `vž¬RÀ`â>Ï2üO%bj‚Ð+ |CDWØútzá5m§ß `{õ� ‹îƒ!áëšúŽY­¡ö­’˜DxM€$о¢yHc®Ð�ØOO¿0믚j‡‘)u€Ì…tÙ÷+"@{U&Š8¶XËí`.e™¶6kLLÃÅæo=Æ/;\™MzØ‘ßS±ñ=„îkúõ`õ ÷zvÜå§ä}K)~®aO; ¼ ¦Q· }UR7�²[ß–|Þw‚LBƒ?fãùõä–„QRâGÎæ䙋Š;²çÌßÑ,8Ì%=D_eX½à§A”NÔŠiÓä ã.Ÿy¡ô~ëp*ØÉ1;9Å.ŽÞå71ú$ÉsAMUër�Ú= 4NG•_ÌoL‡©¸EåïóÕ™uÚ¶ÝÊžÜóŒäÂ2ÿýÛ6ÑÏÙH�\¡ß+6Dıʼ[«íE䨞B.Ä�óQîÊ{vMáU ®=Æ´Yeúg€’=¨¤|Æs¾ïÙŽõµ|`jVYïK÷žSãL(,Ó•,×váŒ÷ü\ÑC4~>ü_PKÒV1]‡êù~*imunify-security/inc/App/AccessManager.phpUT ëÆ«jëÆ«jux è‡åWëNGþ�Ÿâ¡Ø¦fM¨ÚPÒ¬IQ EÜR©Thvwì�0žYÍÌÚ±¤öúb}…>I쪧 6ùÓª$�™9ó�Ûw.þæÛª¬ÝÍÍlÂ�®ÆFôK­ßmÃ�ÔuÇBÕïáõ ûž.�ëž1Ã;p¤rØÙ~¶½µ³½ó¤R¡X8ã–›!/œð�EΕåÔªàŽ¸| ÇG'—?â߃ÓóCH_Ÿ¾9<¹ ùÒ¹Êîv»£Ñ(ÉI³$ÅI®]ÉûLvQ¨Ûh(6à¶b9æyë®�µ½ñuZU{�Fm—]^¿Ñ—ׇ…pB+�±Hóœ[ ¦XŸ›ÄkÊ%ãpó&\À‡Æ½X£ð•<¿µ z�ׯpåÕ(™V „‚œU,5qK/ü«†»Ú(È´–tÐm¬Uu&E½Zåd{‰@)a´Ú¤q-¾‰znHÏMÎT šÁà]ÑKÛ„ö^cí®ñ¨‘øêªoXÁÁ•\ˆ1‚Êè¢Î]25˜lA“€I©G˜L§§/�¡ÐªéPÀpVŒ1C>…ûòëm`ª 9Põ C,Ýó6ø�@ ãDw2ptöŽç®M µâ3+^T̰¼dŽ�;m8lÓ�tÖÊ:¦�¹VŽ %T,9KÒÉÒ$„C+èåN²�l/É "Q8.ƒÿ­O›C)ÜapZð6\)ìÖóÅœ†¬NÒÚcÒrÌ›O\xg¹ìíî {²q1®PÛLGš"ã‹I_ ¸Að1ÚŸƒØzÞçî<Þ´ˆ6S‹§ò+Q'ÛŸ=ð˜±ê!'Â�:þ3o¹kMŸüÔ l×µrÍŸàãG/tƒlâFä+$W)‹‡-xûûûK1–Vq6– 8Ìv——Üú‹¾rµpýy‚d�¡KüÙ¨fl�Óyã°fs2XŸrxÒOY4û� ›Ÿ.¸05_å}'D4 ˜‘°ó~/­.tÔ-¶¿¥¬_ð0¤w°9b K�L‡LH–IþH½ý[Ê#>(�øá†òàiÿô)qÂij×f¥¤gþ\Hï±ýmÉ)�³þŒùþ\i‹#mÈån•)bž€®�ažLÚzå�zl äxn¤()n9|xa9!N„‡¯¼\«}Ô4ñ™�pÀbèùBt< 2Eƒ‡R =�´65x$\ Jšâ Ãã‚Û�Œç KÞC­�8ux¥‘Ô\Êur–þY?šVÉz‚Ó úÈZ4õ³À[W2çqò’©>¶C��Ѧi!3zDƒtP[çAÃPÔTp!„2ZýwͽUEø=t¢U:œPöþ�ûDñ…îüß(Æ8h+·UŠ»]Hð°lúÍk%ÃMWØ?ô|îœ_ÇðØÔ�±Ž’¨×ïA›nÀBqhb£ž,TéÕV(-ä+Ò*0ÛÆLÂL�±’� ÄÍHç… Ó«ÉìØÚ«AñHiA»n_0Òµ,€Š+p4˜=q‡ÙµNtN¯:d’ .ÍŒ7–+š&Ë|«3ÓWçñB½|ñǃ—/^þ«G‘º!*VÝk²{€8Ñ¿&¶&PE˜L�^\ß�©‹ó«»¿â¿§“«éD�¿»™L.'W·´~�ç©�œl·Ûá‚NŽèàá"ÙœDf¥£,:yö,ÖcS½0Âs÷Óù¦ˆÃåî§qšþô!4[ûêÙ³Â>¸äm’Óÿ.Â¥Yì‘yõ‹§&ÏÃxe?fan²/Ùq›éå2\Ls�Û'ןêܬ’l÷äÂ3F»Ó¤ˆ¿„‹P½7a~f¡ “øÉß'EíÎSæzš'™^=-ÙôÿÚr�æ×Eþ.Ò«'—¾Ï`XùÓ‚™»³ßéEþ%’¼H’t®Ÿ¦ziòÝ­±OŸQnÁU‹Ç•:^,Œµ—:G�+êLçšX\hß›(5™ýé,Yƒ�§Ôy™&úé}T¬Âø4‰—!Dí�ÿýZ[3ø£š'¹J³$7 "§l‘-ɵðc¾6ÊQSS³(`ö;h»ž': Ô6 V&:_¿1äãViµˆÂÅ'=�ŒÊ’­ …ÎFãÙ¡R•F-¶Q˜¾ L³&Jüu×ÂÉñc�•¶êRG|ÔûŠÕõqü,@"Îmo¨nqR‹ÐBgYh¬²¬¯¾zùÍZÍ£dñ ai!>Ô™ÑÁ`qAdk*méxÎ×D ¬ó—:>]ëxeŽ‚Ó'ÜMçØ|otdýÖ÷G¸ûZMõ½!âQxoð8¡%R9 ç“Ù�…ùŽÅdI$Û«ã€?9¾-pñd¹M„¸¢Î1.Íß2C|{¬4ËÃk‚âñ¦ë°j•`w–«µúõÏÖîƒÈŒÑŸ§Å|ZŠ ÝÞï¯øTù2#2™ÉqŽå�3³ÄÕÖà—TúµHv£³OEªlÂKþ2…¨a>[�’I­IñàÂ-bRäE _¹(ÑÁP]%J›0¤‰Í‡HLj©£ˆ¯õ�ÿø"‰kgæoE˜™ 24(hÆd#úU©�»XÝÌW÷¡V¥[1¹5DPU¤VŠÃæî*ýΫIÚhŠ„Z—&31¼W‡‘‡6‡(DÛ-2õØ,„œê.±l�¤ªMÔ‹ž¿ÛŸmH§|3|1|Á¹nikâNeöÙ‰¦Î~}öìh=çjü—ñ_gãÓÛóë+Uþ{­:¡xðÌ:žA;³" ‚Î+¿ùêúêtÒÞýÐfëò`µ}z÷öòüvöî|rqöäv±Ö½ÍÓñ‡ÉìýÍd:¹•ÍÞ3!ï->;ŸŽß^Lª“à®äU{ 'Wµu´ÐÄ×ÝLN¿ŸœþP­ËÌbmŸf‘‹÷‡X¸<ŸN,�;=¼cz;¾�–Ñ )]ÎàHVû‹–«÷.ú~|5™�Wb÷ì@Ôƒ*®cý³#ŠüG0³Ê/BPÐdrÁ4Ø"ÅAögr™ó—¥AðÄrñ�`2¾×YE‹>:yv”fá=V©çA•Óª“Çs›DEΑ}MçmÓ®‘#~#âBæ”¶['Ø<ƒµµÉoÓSÙwf�8é"8qÖ•{%q´SË$ã‹�?¨M‡8TU‘Zƒxyz;VÝíÚ`AÆdh%l6#Æ@#Á¯2$D UGìáq ŸŒI%XT]ì˜ÊË�ÎVŠõ”â°Û$ûDSœ·á&g¶HÉÌ­‘ýîÎ/-Q4Åotn[,º‰9*¹œz&ø —‰­q™£<%Õ™ÞÔ ¤üWéS~¿2&€h½T7OWTÙ°T(ræ,¶�=f! Rû¢h]^©ïp¼}Xç$ßWLòËÿñ9-}•z"=s µ,bÑölV*¿[a¿}í~›ù×rTþèè9åÿÁ›¦^7\¬\T÷ Z”Aä›.ð‹¾·p礣z5m>Ú&uô{ͪÞa$ñâ5¨ˆí•Á�dÅŒÁ!PÆPM>#Ùã;Àä†\œ ÀÛ2|@¶3YîÁ' ¿´ TK¡Ï”(`I�ßß^^T¦{k Lš%jº\±˜Ü ÇPPcÌ•2D û#0à`€‘&YÎá� M!š ñ"K6 ူ(_�VÝÅú©›ˆ Ðèö n à$Çs‰�™–\œ�Ý}/ž×±œ¯=Þê d0DѪ摂Ã`,"ÐfgGÎÙ\âúŒUªß$eöX6ÿÌ|Na¡aî2kßc“Yžz×W"=Ö™ ædºÍ+:¿uD’³¢ >t)*˜Íw3]�4š«è�^ŸL`f‚\ Z¦ï<Ì:ì`ÎD¨3]ç- -“·Ügð¨£Å®Ø¿+¨:ÿj¼ í8l@±‰ˆÜmw²ø5Òö:@àæ53¿ �NNPÜ䋵º,.‹�kGY˜—¯q!²au4 mãô1+¡Û 6.Ž•tk;É+ä*‹À,[—JÒ|'ª�k O*WÈ쉰7*É0Ws³ô²ÐÁ'CÕ‹`×c¯°VABg —W Ç¼ÒÌà‘D“à¸Vó"Ï©Æd”[1» é „_�ri%žOR þ»qqšDvèÄÎ7�Q­ôåß2Œ¡Õ9¿¼»:÷ï³ñùìíõ- åõí„.â6ýáîʯ_¿VÝy’D½RlOlg½=‡(g�œ¹TÄhDõMW Éb+Ë0*=–,Í‘"iUݵiac#n#« € —ªë¾¨ R|ƒD|0r!¯úµhÙWÈíELÑÖÈï6q$ö2>ez"SÄrÃ"d°$U¹‡àtg8›pYózTBkÔ: PÖûà+ù!&¤(m0…MLçÌ#jp‹€CÉÐ÷>¤ØKE;;Š“yì”Ä“2ã=Ú_ñ"‰ƒ©D;Zò»20#/õ*Š8‘×ìEÆÖö¦1W*«\%ן 7€_äEäd¢�ª`]Â�_†^Øó 8­–Ù”òVÈPåd©¶ähT.øÂŽ�ÂB Cõ�ÉKu!G“nÝu\ÝŸÃoò0åì�&!"ˆ•ü%·=Ӯɫ¹­aŠyOfR $vÀ2 |‘â6•ƒ)¢î:�ë‚óOEao­Ëw¼‚]¿‘4Éù�(—£‘ÕKóV¾â€Ï .­•ÅYÍHö}˜>r®¹ÃêSO@Á$bÈ3š¥*׸ßOd­�'µ’3P­ÐÃíÛFü�Þn’¿ŠTåÒÍV9b�•¢js³1d¶]ãcEI–sŽ×ßÜpñF”DiAH«[k8º0¾:3&8KQ²Š©Ö"»Ù†ÖTi†ûOÔ+²ÒËÅ©E¸³Pí†Ë�·ÉÞ·;ä®âÃ[œJ»õFN¯ŒP°Õ¨H;VHñ‡Úm)¾á’{ETf‘+�\Â’¾�‰Èî1?KÌ¥=¾õB§$CrËe¿v¢ ˆ‘Ž£)÷ 3³¤R@¯�J…NœdT¥Ij2-Òã(Ha@è#€°³•©jb¾…„E’¡¢:AÁî©kê LçÃ:eò•´ `q \ƒS±7¤ÓÒg8»zW‚e·,°§¾­ùŽŸ—›�Îv€?#.ƒ©ÑÇÈ®†¸â�.ò„a'nô˜ñ+"¬Wìúk$£Á"Ì1(dA?ñnÀ¢öM¦ÙVglLʼGD»*6[Õœ]@¼=J~@*½;ŽNçgv½èèR0ì4kŽŽ‹doj¡¬/ëjQ·S¶£Þ4ñ,u½½fa€¥bø2‰îÍÄ×#2ê–«ß zª'T9f  tX1q Q·µ:5Þ›5’ܳnÆõµ�/d­ó‹Nû¢ÞadU»òêÔ) �É^N}ÊÔÜ¿ƒå»ʾÀÖTÇA’TqedUG¡òuWññ÷@ ÑØìkÈØ®ÜÕh•�þ›Ãš Ô�:> vÚb(Ë>wÆØ q$Îó½à[ÀËÔ{.1²1féÜeI)ÃWLFAWŠ&®±Ì}øj`PÞôWåT}íÃwO¹f×Þm—UN2‘:gNЃùn@úàh\ xàDÉÐÔrvÔ)e¹DiG€¾B<•¡‹CZ}W>#,ŸmRDòlí.<´:rÁ�‡¸âðÖ°ô¢ÐÖǃ�ä·ßZºê´Ëto³âÂòíÛ]ÃËÀ“�C¼¬Ð]êû*0 ÙŸf Ì5ª¡£¢ý€/Џ }ÇÅ\3¬m)¿Vhh* æ^ÇeÄ–H}ýCŸÿßõòiàelI¹ÐiÝÒCÛ_ø‹ÞfORa"�}P'ÕÏ_+‡äúd×`uε ìB@Ãn[Ûþ/ÿöB4 ¨àD&†îF�X¼Ì’¿SFñ{)�OÕ-”�Ї fWú¼Â9BÎ[¡Cj™ñ6íŒ[l®e-�UV£ÖFó /ª»ªï{Êuÿ äT�, Ñ�¯s �%¯ Ø&aå;ÇÍ×�vúÝÍu‹Œ4ö,Ù1¥z®u’¸,lIÜ2¹ÿÜ� ÕW®wGÚYÓ¸_õä–rãýæJKמ’ËuÛw—”ÕkõTo¸}²s‰0!�Ê>xó<’ ðÏbhR n‹Œ ìKýØ3ä°UÞú]“,KP\W=Ç‹�Ú?l�õª B)£Ñ^ !h¡ †éb(�CÍÝrB4yRF ä­£¾ƒ‘ËÈÀjųpCvKr�4#㢟Är!o°ô’ •vVß—¡R×0p§œg-ÈD“x·I\7ÓÃTJ<†YsŶzlE¥liB‚8�Éx9SÃ*H¶LŒûkÞe)3DC5¹§ìpŸDņ£1äpœMb™´{Zž£Ø†FÚuäÇs÷Òg‰¾¦ YïD�ø ¨äöB2|öžî+åÞÈ<Ýrüt­�¦;Œ”̘G#ʉP¬w|z¿@$pŸO©2ô�…Ëä'>h˜Ï¡Í­¼kð‘F¯4,ô0ÀÃb@ŠG�[RsÇ7×xJà·O²¬HsYZN ]¯�L€¥M˜`[�Â9Bµ@ú@¤4gL÷¡ IòNE˜âÛ{–‰(©é]¾D´ç&¨ÊAª LdZS4Ÿï“0h èÊÆõƒM§ƒ­4)Wô|¨�WkMùƬj‚¥UisÛL@CÇÁ߀¹NµÑéâ5R¨1Fã£N-Ö5ûë)μ~¨ÔàýÜp=óª9R5§Ôf³ÿb‘¹ �Ýñ‡)¿Ä0[ à@¤§>tctÈb ’¸†ŸË°‹ÖŒ%Y‰5B@"wÃIyR  ´Õq”ƥВ12OlÙÇNü.5‹©59Ûú„ñ/Ü2ÙÑR¿z/Ÿ|” ¶Ÿyr{‚bqìÆ:ÃGJ Î?× ï«ÂY§œ²å§²›´o˵¾¦äI'#ÍCH×¹Û«H�š,ÃÙ¸úò3^ËDZߞ´ð\OÎCƒÃ'#{7Ì©»gèÒÌ߯•ÛŒÕWk³×`ç[5¦ÜöLŒFîû,âvˆÜc2°%òÑ5Ñ—™^Ñ#A[©UHO5§Ý3)±‡ç"¯‹:¥ö°Œp›ƒ¶ß)ëøÁé9å˜{Q*Z†Ÿ…Ç2ç}Ä�òamÕûADŸM×É¥Péú÷‚N®ÕŒ½‡Æ…n�à/Y³L=Üä»÷ëñŸûªŒíF~ÿàtQ¹½ ƒ6c¾uÍF�Ü]÷¬ö ­•»ËaÝð&ÙV—tÝO´±ð=>m®lÛòì&¤aÃÈ[ µ ~ܤ•"ì¡™õÖÓ~ð€zÞøµºiƒÙn Vû©o›eT:ƒòí€È™Q�‡Aˆ6@_ÆW9ΓÍÜTÖP—÷õ‡�ò܃»òˆS2ÖFú½FôüÓR "U;Øhqã½§ë¨Êc€,)â€prú�(/Á<ÒÓ¢g¯á2¤goÜ |KÅ•°f¤6ÿúqv 35[Åp8„ Ãg ãWm7ríˆR]íú^  5Š_»Ør 7]×öÏD/×›•ùÏݽü¬„~,?ü¹²È©°pÛ­¶ø¸îÍ{[FÁy•—Cæ°þ*CÝ�«nõ·®i+²�§ȇI¼B0Sÿø¯ÿV[C3¹|¤¦TÅ7¾Õ½©Zðµ7?é€#PœÍż›¸‡«®0‡aRd­Ê(�õ+m½È‰¬B¸›lùNÊ)géO+y·uyP)¿¶CNÉëôöæüô¶_þþv|1¾:�œUŸ\^_�ß^ßì9gõö=“ʯUä³/uQ¤gzë`þß Ê#”6¤I Gq¦%v“ ò•ͺØèxP–Ñ8eÃTº¨ó¢" ÂüÚš§vüºº®3þà*K8V65‹PGˆÖÄ�×mÞ&ß·½ô@æ{B)MÝy›óëZ*ð?2}˜Üœ¿;ŸœÍ¦“ñÍé÷³ÉÕwçWòêj {~W=¹I²Ç�eãóÙéÍøãÅäÆa˜/¡]Ûô áéäºFù‹™¾~�òÝÕWׯfã»ÛëËñí䬄]�PÞß´O¶<ýíõmÍ=J¶±©Mór|q~z~}7m�|‚fsS™Ä�ž³c=‹�QÜ] Ðp“(—á—vÿøsÃÄŽj CV;ÄRå ïþlºÂêsïÏ|R¯‰Ä}ĦãÚÐc R¬ºþTÓs?5t�Ìå#ó™_íºæ3=r:ô$Tá¿{ h"æÒ�¾Kn!ÍÇuÝtÒª¢sþâäùè#_�ožû93ÑF„Ë{åÞæhëg^Ú™ë‹?<<ä…~P ¯ÚÌ&Ík0¹œ"üìÞEÉK–Џ·'¶—YNÚ@*‡Àâ|)VuòUé“ …À?#Ò ÏP7Éýr°ïòv¤‘„_~ý.€ÒþÍf¸ÎÛ$¯«ºûÏA}óËoÖ=ímãé8ó,eYÙjýiHã.Ž{€t‰ãONÔuí£`Õ}u,ò:Vó,ÑrŒ›þºiS´8�–ÍùÖ«­V&6À êxìHmáäŒ1Wì2%Fõ™Vˆ¬¯¸Ö¬ùºöôަŒp¶|G²{6üÀÊ�Ô]æåñµ:ö£¯cÛðÌÚ%0uÐöÝü¨iñ凣2®œMÞ�ï.nÝ_мªbF<TL2ú«2þÐãȈÿ4wŽÈÊ;`2¬]Ç7n Ñ9™ :jXÞsT¬yºèö¯óMDï›þdáÁŠÿØèõñÃñtà¢Â“+ƒ‰v¨Œ]ÌtžûŠÛ±Üo�ã7Ä"- .ª¬Æ^ã!cªqg4ƒ¢Þ¼›žvƒÖ¬µ¿7híÉÓ2?Õ÷¡¼Z$Ì(³ÄÚ4�õ¬C+ȵ¼³“¬@F¨8ù‡K� ±O-ÉAáÿ>`ø‹, ›'›As¿ÿëF»FZ dÞAè¯k®P:ÐÑsÿØÎ¹�{8ßq÷ÃÞÄ뼩ï!®§7ë!�ûUùÓ Œ—ÿWݵ.Çm\éßÒS@\'F’Ê&U[C‘)É–cÝJ¤­J)ª)�’°†ƒÙÆëï>@^&ÿ÷QöIö\û†CIñnªR@£Ñ}ºû\¾ó�1?0«ydÂé²v§ñ�4ý0ÿ›ä¨×Ÿ÷7tÊE&´ˆøC鬼^dðìç†lQd)mÂ+Ú…c`ƒ{*/Ü^cmâaÔXSÎ9Eãᎆ}‡;&áÛwà{å~ÕÔô6†BÚ‘�U²ÈÏ÷7þm£ÇÁ×»ÿŽŒKÎB8Ç,÷𸦻ÉÞÝɰµŽšÈN 50ï¬3ÐȪqmÈÍ'ü»"�yˆ{.\„u|³Þ"ã®oMañÿj5¯=ß Ú—×IlàèJJ|i6­ï¿Í]ÿ¬×r9öÓÚ%PÅvKƧSœP¶ð|Àë)ª‚_Îñ=½$€‘stR"ú}a¯ƒ ¦LDws圃„ºà {Š˜}˜ƒBCÐÓíä{“)îµÇ/Ÿ'WŬ@ˆ*ãxðÅ(i%�l`Âb…qWA…3œææšü\¼æ: ’Àí¾é@¸­öe-±~¶˜ �Y:÷.qòBL¦Rã~…©Ï|)ýÛªŸÉ*KÒWÕûê/ˆ¤Y`Ø*³J|ašQøa‘ˆb¼¦ƒ0Ý¢es@—�zÅé(ó@�g}JëSÀ>â¾#Ï7ƒWd9ÑeIÃß2Ù×¥ôD—ZI°¬ÒÚ �Ô×ÕÑÔd/ttÒð;ú"—G-Ð<6 y Á P]*Zª7þª°£“zÇhdür?Öf¯³ÑþΆڧÍF¾R“£ÍOvfýoºR ‰¨2øàl¯7SÐcÄå=BA¾·!Z§s¶¬ìSz™cŽ`Sßé£}Ñ)oT.ý£[wj?*§ùyÏ“p�À)÷¬Mœä¾ff3bR C”#,"æyUsT¡¥Äl2ËšàIÆ}­º®‡¾j�p�]õuÂõ\<ì‹¢ œ®$øźã–b»~„‡&d<¶"êNË€‹¶¾†P‘¸¢ŒÊsÑ< Õ+㬖Ì/ F2l�EMx"M�q@l´óíè©È!Êcõ(l]vÃûú6ne¢¶öм&vŽ„0ÖˆÔM²ù<Ï8jƒ®(ürQa=½Ü¨ønôYQËoø��ÅBûŽ=9¦ lœÎ$ã Fg1ð,»X„rVo :�9Æ=](!’РWÐ˼i{кõº7|ùUSpLò¬Î˜ÆáåC¨/¸¯ºR5÷£ÞÏ®kšgÉúˆ¬yžÌ–µÞjö~-iSÍ¿! ž˜/ÍúÛbî´ŽžZ¤î ¥PI¢žBß d±"$¡›UGYj¸ì§¦¡žÛ=ú>)�h„òIk2ž5Ì(™ ãŒÙÁQ9Yb69ã01�“l …§3br)4;XÖ‹Mß3\^uvqÁü¦CdD`b2ž~žÙ 𬥯†½¶~F9OÙ#Á]Ñk¼IyÆÍpŠ#e%b¸¯‘™(y#<×Ê£í°ª«´Amßó÷ õf�¨óhèk°Ñ½.�l«‰Ð~‡\íðˆ6„ö¾/¨Ì&)¹ÔDĉ©0$´§œß1ÉÏ³å´æaðY8œY)&€ZG �ýÿ|¼� µIíL=B7£KRk`ŠŒ–‚`OxÿOÈ/’ñ† #o´/{äõ%ƒ@˜¶ül=…rÆž†xGºubD˜>�ý.D± LqŽÉç'‚Wm7§½¦…Ì>—[åc‹9£® L2QdœŒd�¤îËX…‚Óÿ!꤉\Ýnúº×å…ÿÑÙ?`¤àÌ�IÄ…Oä5DÉIo¸é†Ô�®æ“X+=’,˜œ¨r&÷úOØ¢ö…ÊH°èÑ1㹜Pqá8‡©yZ�ûÎè±â¿r_{ÄèeÆ?†IˆO.òc#dp�æãmÏlÛÉ�dEÝ÷V IF� �è3²]¦Ë«SÉ)(/@Zq|6çcC›‘?2þOÆéŽMv9Ýýð ÷_0xüØ�˰ËBZæ©Ç¢¢æ#Æ;5 §f×KicÙßÐ�U¾Æ-Ó?͘¼ÂXà&7Pb±U\\ Í)±eÊyÅ @‚O“&âÙÌ¡]Ò1ËI‘3Õ(4ÁBž§÷¡/™òafh�ˆ¢ÞI·X¸4õ”�M ¨ÞÙ%å¼¶>‰ŠF:)¿Ò=oáÆ¡ž§{� ã!øð!Ð8ªødDþß5�ƒè�Ì�‹,ð‹Z=Ô令ˆÑZßÌ¡w¼Ɉ¯<âné¹~š#ÑG\ºî5ìfDÐ[– *Š�‹„^ñéüGЧmÄ[+ ï´¥/�èâ­z³ƒ[�n»¼™>k梼Rš¾Ê‡0š¼MÒÔ·%ÄöÉœ@>GþÑñ±Ú†“ezÂŽüçcÒ”ÿ–/Jä¨A«{]Õƒ•Ïæ)}ùÇ>Ï™XZÄA‚•IÔ€÷NÂ9=ÝNÎË?r‡œtu3˜<²1)t˜©@fƒ9wøÛnÛ7?`8žâðrÞ¹SËßÎsÖëóéNÅY9¿…ð¨NÝ—»(°*ÜWähkiö9.åwg|hptP‹lúfÖ yÆûñöî{µ} ~{+!ïtfêËX3“補5b�DÝ1ýjì�ü¡ð_ÐUÛ.׆âé;ÜÏ[­kE¨¬5ÌO Kš [9SB ¼$ ò%lÊœ¹\%C*ª4ðÇèØ0$‚n¢Œ•\zϲlG�&£›lW‡%‡µ�„˜{ âŒ= FÊ6¼¼Áþ‰Ñ×ÙD)_l÷†R1ÌÐ0Ú{7M‡hàa<„Œ`«‡]fÑ­Š®³Í¬ÃNù(j›‡KÍ sˆavR׋Ëi˜fB:Ú™’6¡;F?4&ËÙ„1Y$´„þàj[87;ÜÝ&Ne…ADâØò{š:2Öì\‰ëÔ‘‘ (‚uå‘|ëM˜œ›7á4Æ‚íP”КpoàÞo4Ó�55_ÿ“èôq³ã¤Ùˆì*]pU¨¢Çž•ÞöuÇ®t¢ €8G눙xpƒÀ-%¾ ã aú‚;$­¶š—Èã z3˜TƒÃé´¼ßIðœæ³‹þ¿NÔ ³½]ТìLË?øöÁ;XP4-¿Kìîj¶Ž¼½§7 _VTœð… [L\ôò]â~ÀÅßøp=óqæu‹o¼n¼š,6”|å®lÓÉÃÓ@ ä$Ï1šJY=.üÇÌŒ1„OÔ¿ÙŒû9ži'\R¤ÏÝÆ9‰ÏµÃ8àèÿÜ`"óÒ(xÃlg8óŸå5Õò4òeþù’ü÷?1ÅvýO�ú$�¹z-'buë�éµva±óËiÙbc)¯eiPöz£m\¡yl`h¤¨@×®ŸµÁ¥8lk#aù;µGØ¢’åuˆ’z«$l'OÑðþ=­³Í3·#–j] ¶ˆ2âaœç°£ÌÐyB…b›”(}Ô„¢†õr"}9øITitq:ØVo¿æ¼ô�ÿ¸Nc<•Ú�^z$ÅÉ¿Ís“²¶gRäërÖc)®Ý‰y97}ïf'€ÿsíO¶�ù14Þ7ü¥\’åÍY¶Qù“•X|¿Í9`©ˆ-#2c7™öÿe!F|ЛµîA5¨º�EF¼Š ã;‰a_˜°%T»Ã{„ …‘¬®d@áØ¡´É6ØÚNžè@ Òd�pˆšW<Jà±cpÿ{L(‚t�P<‘›˜! nŠQù„�àRP”Y“pôÎò¹‚’Jô;"W ɢɵÒÈ?•ZáÂ7NHìCÕ�0ÂoÈÔ „ T5Úc9ºo‘á׉ñáý«§îD©2 �WÓ”&,<=aÁ„£ÙûAøc†õ´˜n*7 ýn‹¶ÿD¹å¦t#nÏÏ0i�˜h)Ïh´$²5qÈ"�dûRÜ!ÉHJ¥·Z°±ÑÂÁýc.Ïɯ3PR!u4fÏQ‘Íh�ÁèŠê¬¯5§M“õÞpØ?Ãì‹=Amzž! =¯d HArgb�æzIl�5¶½Á<[HgÌÁ ò¼ ´b*˜€ÖT½¯0ÑJ9Ñ2v}‰fJ¢pÉ`¸ ASèò„“G8ñ4ßjòq¹Á;Úb3¾¾,Ý"ª u1�‹Œz‘$Vy3¹˜ÓM×Q¯m6–K>>"]R\ôc0WÄ�S€n^PÅ› jÒ Iûkëþb²€W8IŽmUVxq�Ÿù¹ n�°¤]rx�Àøk˜•:' ŠTdu¡‡tÌ;ÌÓ¼#dÌa‡&RbUͽ®ÞFçDÇ­£n_0Mn~…Wi�ª¶pT4ú«%1…ukytNKVÕËS¶£PWŸÞH…lqŒ-ŽáX�c§þhóý×çåì}!ÐF»bÅÐÅjµºã¡7Ž9‰qÛAOlYêF“M6•Æ ­š+Ô” üý.ÕQ˜ ¨ÎúÝÑ®Äú:i9Gjœ£í÷¢3ͦ�Jö'¡‚åÔºK̳“ükH]3³6Áxå8Ôª™x¼cÂÔi>[@ër´‘A†¥´¶“WÅ<'¢Aì’­3äÖ`EIÂRm�ó³¢¢z¶\ IÒšˆVa²Ì¦)Õí:£‚êZ�¥º¹ÂS‘‰-fõªSªQÒ—fõbZžf`k^Ï'§[?ëW[¼J´ �O�ùâ7Ä�°ü™sÏ(ræ¿ÊŠÅÀzÅÈw‰ÌõVŽÌlZP |¬zptò÷©¨;¤ðrÛë·›r£rúÉ‚\ND:…œî£ŒõÀ†¯hƒF€¬È³jT\Ì� ä[¦§Ý~TNòÃY6½©Šjû ƒˆØ]€Û�i\`°©Õ4%yMX^Q|w ô}d’F¸:»kÜ6ø3 ·…>ƒàŒÁ“èXFÁù*ÿÂc C�û=Ý•ÃÞÝpSÐȬrЍ:O �LÕ0°p¡û†Å�œ»[CÊÜ´• j*1º„MU+·m.°5±ÚKÙòŠøøˆ}ñ~Í*îÓB«¦QmOS¢ñ¡”< *@sŒ`uèXa„_¨c\‚F‚åC>h†‰Å™ ¹µU'h´Šñßo½zõ�'Ë3D>ý*ëoV²°t/C¥Œi®Ä•_ô¯^LÞµ¬)ýœ`Yb‚ ‘;\ä—\ƒ…Öa® ã �g¹ÀÀéÔ^E ò™rðKáÐ3k‘auöÀÔeµ&¹¸F‹¤‚ˆC��Ž ŸT\8¼kI¬�ôpî”Ý^ÏÀ§´;P ]εÑöœoéà|‡žsªYò}Þ7xœñ‡­|Yct#þܓޖ°êaë⊪%)¼" ¼¿~ròäÅÉw/_ŒŸ¾üáõ1ÜóÀá(¤² xRØÇè=ÓÃôà<�:Æz‘èòãNIK�ybÀUéýðZ&Úùr¹óá~²Ûõͧ°û¾§)Û䙀8ÒkaëGÁ høÌóo�ºOx~ø"aÞ'9ß:ïñÙ¢‡`å~ŸH¨œ©ò…>ÒvEŸ~KÀRʉQ�n4:|DSrøìÙË7~ÏÖyL;ŠKGáŽWÙ‡A²;ÔO§–nŠó8¡ÝÃvw´%Aî1 1@Hš—ò@Ø—Fa�ëŒÐëÓ'ãgß=ÿîdýaòž…±Š(×éÌѳ—�¾_¿ú˜t!4içsI„’ 2Ÿ°ÑG»OÙ´ü’c¶ÝOo8‚D­P‰Üd^T¢+«4¦1��ª ›í>£dZf“ÿù¯°i ÿ {µ‚kV—W°fg‹²¢’Ljœ’EƦK"U¢Òåò3`ˆQØ*°ŸKŸß`ãäø™¤°¯èy€A@Í,˜b*¦¸7·©Bä¼ÖZFɫˬÊÓRÍ� œƒAFÚ±è{›‚�¯Øp28\ÑgºsЧaNÅL™M•ÊŸM3_Mò=:’ð=„âwh&/škþ”(øvì’í„ æXmW4IÙµºi^½<>aOR2@_ïiÎùA^]G‚ œ¿X¿7«uªTK*úˆGèMk…Ë eñà 4ÁŒa¼Ór’’‡_¶ï8‰�å;›˜Rv×óG%–ר«õ•�èÑöªM¤Eõ„l¾Þ] O> ›ZQ›ªl_»7`Ùf½`©ý„a÷šEr‘Ë"!îæË’Ô–iî’¸! мÆlÜŸ «s?¡+6Ë‹KPî9=}š¿¥ÁÔÏpŸ‹N®\Ã'Ž�ÅÎpèiÅ[�^!²«9Û.åù²Þi¸bh„îV°ÈcW#n¶l¤%z@=fEõc6-lFr(Z¿ý­ÊŽ0rö¾2¾ºøSú"£¿½ÑêìmrrxrÜ9´áÄ­`n²c˜ÃÍ`SxKdÖêkþþÚµÐt €Wr+pþ ~ÛÐI ÷»±¥ °²‰È�5v^óåâB–�XÅÕÌì) ÿTs¼.ª6A_7• "æpÀÌöpyq„ kø’kV‚]±$¾ò€g`C“Ï6ŸØ*3–x}³J6üÚGDĵ=8�‡K­õÌ�dÆÄ¸N“­¡5/*C¿# ­*ˆéz’#ñ8t´¾_Óȉ™ óú¬€/¼9›bQÜ™uê �›š�–H¯»+íç¿,Ÿ�Íä¾èX£ŽÇžTå•¡K»˜ç®ËÄa�Ù}›ª©ÛŠè¨zpt•(ÂÙÙY6G¸Ìvò�:]FX’O(=C¬¡À­Œ}QÖ&1Ø Î Å]55c)Q®¼Œœ;ÌJ©Ä~Réú(ä|âl1U:ã}¯�®ÞÆõÕS1²Öu°ùa¦{º½ƒzÄ=£}¤ó—_µH�,ÿŽ S8­È‡ˆÐž¦@CðÊW”ŸÛ-á´3nSòÜx!0š#œ j‡è*áa¤æ�â%„_B'(ÜÁó‹!ä¸S§k¬›ç oXñœõG'8ØÂ¡×¯ýYš4ÃSéb)ûZýjà)a&&ù~�²EôÙü«–ÓÚ~ÕkH!û^¶„@¼ÎŸÎV�¨24hgeùžDš<Ê*ØÏá t´±+»\\gä[{ò Npf}™á‰‡“€˜óŒ7Tî%;£±Áäå÷Ò3FP\_g— œ™ÀØ#ãLYv½v_ßòxÍ€)ÝrùµTku!gçy}ƒ¡Oôz¥0âFû¹,¯¸†¼$Ç-.xœ ò(}&ò4ð«¶ùÒ)ÃyÅðM³#žxO^YÙaÏ#§òÜb )%cÐÞõ‰Þ×ý§³‡ùæn�§Kò!Èo`4p3©4hÁ–y†¢3Ù¯ µŸ¨·š_Ö�#5Ó,ÆÛÆTׂœ,ÊȬ?Ã;›EÜ ³9¨´¸PAÀ„ˆƒ„×03 Tcüz>Î~Ê>ŒÿŽOŒÙG#ÉÕd�¾ ”]¶÷9ËbHÓcŠ:ˆƒ†˜%f y2)pHÁ(¢ãQU´Ð1�óôäù3•·Þ:Õ¡„%=ŸF“¸\™ *ÉóÂ÷8V»‰¹'a4l/š H•Ï&ãŸ*œ Ô¡~ªÅÓ%ÙŸ|w©ù¦\œ3K[6Žæãüa÷ßñ¿nŒ�èHþ2¤§räN`¿ÀØÆör&;&˜âèפÈÍœŠ±a zû–hLhŽã¶ÁÓÊè<%`ª ¸áÂÀ\¡#h£ ¹ø i–ç Þ¨Ø7[QîÅË�žˆ¬À'ó=$›J)+ªµu�чó6À4å_ª IJø[N%ØÆ ;La/‚n-1 «º\Õˆö”ämLð!ÃÑï�Sòh½·ºµ’œ7‡w> z×KŸos ÅHj^_ZãwÝF[B”jó‚kµ]uºaUé{°M ã ¾[™[¯¤ïf?ã–#ÀüÕËi÷‹/'^OHNÆ“‹%BdX +¦Å,�äóúrk$¥kvW¯ÇÍÒf‹&郓¶Â*|D½—J*°6QÑãFè °¾Bà ÞPäÉô½§„q#ÅÆ©¾6E�äFt| -¢¦'<§t8þ¸Ç¦>ñ!¿7eÝÎ ™8)·h_Ü0<Õ!ó6PÄE×â»Ë0¨6Í^.Güe¼ÐÃTû'Pï¹¥`)×#þsYà¨Y¦LH,¦™ôØ|ÿ_8!¢S¢øý˜#ŽçÃ×H»<{Š‘_ÑÖcGcóËl;:çþ?¼Lìžq¨Þ³ ãý<;_™M¤M¤W/S«<ÜqJ�ݹcÅÂÈ…:9!…)¡ÐÔûNÐÎÔ\ –×Oë«)·f{ø/l¾3·¡¦Ä÷·q±C¹�„ÿŽ‡ÆøÌ‚#˜Ž»«FÓK‰²ÐºeÜú|{¯/ß2Ä�wÿPKÒV1]HÉéHU.—´1imunify-security/inc/App/Views/BotTrafficPage.phpUT ëÆ«jëÆ«jux è‡Ô\érãF’þ-=E™Ñc’6IkÏzØ­nS‡[´u…¨îž [Á�"‰iÀà�š1îˆÝwØwÙÿûû û$›GU¡pP‡=1«°-¨ÊÊÊÊüò*úÕ›xoï|õÕ¶øJEñ:ñËLtþç?ºâ(ˆrOœùaþI¼]ÍNÅ—¥G“hžÝ;‰ì‰qèŠýݽÝþþîþ·b⩤âZ¦2¹“Gúg¾+ÃTz"=™ˆ£³ËwÇâl|ñîÏðߣ“‹É‰½½>99?¹¸ÁñË,‹ÓáÎÎýýýÀÅ•\xàF«�@.œ`ílo‡ÎJ¦±ãJf�¸ûe¼ÊC¾þeÇ¿¼÷å}úr{;O79Œ2üwO2'ƒ±�½IœùÜwŸ=>_­œdýèŒ#'“‹è O£< ÖŠñI%ÎB>qÒ³¦\ÆÙežý8‹G‡^%pî٣îa‹gþÊÏŽ¥ë§~>8cäº2MÏ�˜Myìdî ö¤5ûf)E ÖêZâ>î;ÞÊE ôÄÿþûŠ ÆÄA¾ðÃv*æ~’f"‘N Ò|¶’aÞSZ Ã�¢ZPL¤›'~¶Y÷y'�£Jå'2˜÷Ý(Ì?ÅwBO\�^õ‰´¤7XËÜ_ä 2Æ$œÅ"ÝÎ`0ÙNÒO}gH�§‰Ì_I1O¢ñìå‰3 ¤XÒ™Š$ ‚<�¿}ŸJ)êý¹‹»L‘íV_ O‡AyVY§>w{ľ\ͤç{ ;"ïZÆ?]��»@¦=Ñú°t2±tâXÂÎ["Œ2|ŒSÜÀISŽÁÉàÔÅÌIR¦­d‹¢œE€m Å @qzs~ö²‰MÖ³×�§,³;:E¦<°Ê /º‡}D%Y$~ôñEw .C�©â+Í÷#ÌÝÿfIgp$…ŸÂˆ¸�/ÃŒ�k¶ï�È8âÇIqTZvHìÇÉåEO¤‘"œÁ"q<ÐøåÊyÀÊ÷~çš!Üc(¥—‚(Q3½>ò€¤F?Žþ< ùGÈ-~D¶�pŠ'(¢8ë#•,Z,ìû¥ï.�Qª7Ç'6r•ÀI¹(Ö¾·�Ù„?|¹’¬¿†õCWj ÿ>õá“øf°7Ø%<¦£â]áÞþ¶½½f6u5ºxŸNÎÞ½øs Ú>ÛR?U¶Ô~Y ~{R - †£îg¼B1þúäˆ�//¦§—ï®'0¾nÃae”™}<ºMOÎÈÿLÇÇVë{€/°äö‚ËbÁU*Ò%*h�€¡Ú6 Mü Fž‰y ñ€Î9¢õµ¸+€ª–@eê�ÞŽæçæòj:¾šL¯N®§‡—7ÀÏÞ®½®: ™ðq³–3Í¥“®DÒž˜p¹ˆ‚Ï’–#Rßß9IAOq'þÎ}áYˆjV͈ *o¶DHE¤#¨ÐM³ÄU¢÷ñ�>ö“]„å¾ëÄÎÌY‘ÿ Å’3¨vÊž¢ |À 0}L‡“ü’!.ƒ½:ž7UP?EsìÞå)¿CÑ‚RˌȑC( þ5—¹„÷`n8 <Ç ÜD ,1 ùUê&R†q6 n’!Y\�@ßO3„¦FáýÂÔêFq+ÞÉ�Àöf?ø‰,°˜õ<#†®�îTB/ËÚÃÛ·ˆ�ÄYYzf~ •àÏ[ñHá¾Öê–‚º|€š ïIØ? S¥=SÏOÕ.Mª¤ $%­Ó?lV¨— ‹¹“èeÐCyÇ%µÆù,ð]1ÏC½é”L2ÉݬcÉ£C¯ºƒ^�>#Ñ0ÜÚz�ŠÑ]ãAÉÔÌ ÛRpPâ[uD‡ÅØ­¯ÜÞi‹®E dš�/j,¾©=’dJRîé�q•øÅ>{{¢ãÌ3-ë+¶%àþÞ.—±¬.D=Zט�ë„l0N.v)п�¾Âæ*±•�Ÿ@gMÈ L�)ÁsPh»r޲5\™ …â<€jˆÖc8ö-ä‘]\G´)6$–Û°N’8ëŽ aöð�7aîAÊ=Ü< ä³e{×¶UYa§ÞuJÖãȲžú/„à°!ˆº“ O¶æE£ X!ÈLx0¤•=¨�‰-£4C»‹“èÎ'ý�èý2ÔB7ÿoÆH Z¿4{#”»'NH“HZè”!èŠA¬hW1ñ3ÙŒøßŦŒÌ{u�&ï‚yX9vÜ�(„�<°þsx“’É? ”? }‚Ãáé»óÑ…¸¥{ë�Ž·ž7§ËvTÁu²zVQ¶²�@>ù©ø¾Ù^ûŠNYÕ ³ýY<æ’oÕ2È5{’ʦŸEKóc{‰«j‚œF¯±ó":v3€JÿÝ!““ Ê4ª(¶H=Tžžø(×\ÔÔ§ó5Fé—�½®n1�‹äTy>Pûƒ'~<)Yå’Š Ñš¡<?"×PU8å(T³©cÏ~ÀMl‡WøñÛ êAÀ(?�c€XÀ Ž0Ì •ß°w«–Ý›´ ®aÁ «=q)òÏU¯mg„–’*;xtV½ÆÇæW–;Ø9Jò0ÄŒN·6SP¬�y„ðÈáj6B÷ŠVy_ÕÅb?ææV‡«®‡sYÍ Aƒ°ŒTj.P%ÎT´SScsȬ ü€aEͬ·š:c-U®–Àª†1¢TÔ‚V9,ÒF!�3* š–i*Èl€» `!Ô²×"É+ÒŸ3,á{UV+)ê,Šª%w“¢6%WM Yu È“±Üíñù»‹ñÿ6�ñЧW×—7' mÿå—JTÉu�‡®‘ýcsËñ‘Ñåžr©á·–’�:0hç¾vÚk«¨B1 KÛ"XEd  Ð°‹C\GWÂêe•¦^tS7¤8š›ì"KŠ%ÞÑÌ >ÄÞ¬¶‡Ÿäºè‹ª©Ãa4ºŸÅ"‰ò8ELíÄjhè¬2¢ªÎ¢j�ËžhœºëLóŠi úo…òÕf¸j“S5§Ò×}o2$L(D!?BÕ*ŒúTRØ•¢‡¨Y ¥.â…ÙVi»CÄyö@5§v `XÑW5´]!Äšî¡ ÆÎ·“~VPêÇǸQ82=�"„ömÏ|´ »K~œ_TMˆVôà(ZQ°%Õ ¢÷ëSË!NÁ†¨šŸõ:E{Ÿl�q­ðê¨QV•�«ýˆjTí&ÂÅq-"æã͇ˆ<�ž^;LÕk{�LÒϡⶩ#÷B“1Qš=´T謜6z)»†W:Ú`A»d—E 9ˆÖ/»-øU<ÖÓšñ¥"O§IšÔ�¤À=ó%6-T_]€ˆÉÒIЦo³ñm4¼M–dBqIƃ©ãJ³mt?¨˜#R9ð… Lº\b@Êη‡C“£}n0×&­ž",sL‚éX›è1+ÊnÑê6ˆæ©s ­l&½)}Š6—ôKcK†ú¦þg©š¾V#=ßpù³ Ö…úã¡ê˜? ð›ÑÞ(tó⹓Y`À6 ÏÄâ©è¼»øéâò¤ïn.ÏG7'Ç]…rƒ|ÏGgã£ñå» :ú.>$.òSŒjˆ�ºª©:ûé+�ñ\í4úû€ü?áü9ð}-M»•s&jü¸&cRÜÐÊy ÇWô•Tx™V¼ŒÝtè/Bì}acÁ;è–îà$u�X²éø×E”ñSOôûŠ(”ô ORÈãxLÁ¤»ŒtäÆCO³U`š¥vI·ÖŒ†0ÎË]ë.öxX. p ­®àŸDÝ ‹½]­Ó„Ÿ!6{¹Á„5Ë�”Ï´y´Œ[Uü+óþù!GÓxJL\é¶éªØ+Ï¿ck8hÝ'N,ªMÆéÔº×ÕzÝ~i¦púrOÏ~p"¤ÞY a:*ì@<³Ë ¾®ýjg¹W[=~ÚâXâÙ¼þræ§_¿p�:÷ÅE%Œq0cÔ"½žàІÇ÷-¸˜`²a;Ìì(~Mwä8÷¡|QUª¶�n‹ÜÅ ¤ï`.¾Ëíè--W-vZ) HM¶�×@òïŽ@Ä›‡Eza_& Ò:��¸¥‡ö£Òÿâhv@±ø¼ êàË¢´Þ¸ Tò<½Â‹§…Ê> #»ø¨„Žù"ƒ§,‰XóHš(5âeR€!^1éGÈ, _rÆ [�ì-ÞŽéñ ¤â­�„â }D‘f(‘«ö­Õó’â‹Gí“{W<zç9ÖK5wLpˆ8RLt dŠW)ˆî‰ O›ƒ´'{اYû}Ë?8Y–Ø<Àò­×¯v�íF”²ð�q8�¬ñ\©þ í8LkôCñCêÕ ™sjŠ˜ˆ´vêtp[/TK¿.¬5ÌæA`æ¤�gš›. Uz¥Û·¦·àÓ:RµÂpÑ+‰�jÊÚÅÓy�Å�›³qÖ÷É]€&Œ.ŽUÐWr$ªÚ:ʬwX±n*z2‘JåóRí¦á„a|{´Â_ÅÁš« TïœKº(ŒúV¹Ò¤«õ‹" O^¸FÕª=–újs‹mÚprÅä7|x—á¦Àg¨Ìç›FüÓˆ!}šmàHcØf(DòF´£°�é&c[ÛI%ΪN¡M:öÈdþ˜´ijÆÛkô-ìopÕm«è\ó[9ñÚh˜â=O?�¤ðÛú¬Ñú™Ä¨ÍH�.W®­ï+Ð=Q²+±cUÜ·Õ^ÐjUë/Û†6VîLõü–DšAÄ0° ¢YŒÜÛüâ#óŒ"%[Þ:(bI( .CA­™øue@¹‘ÈN»Ä�9j @58ч: ¿�\AÐMQ7±¥ˆs$­ÀOG²H˃6Ïa„�ò Sï; 7˜)Ë–±¬^@;%9«ED3²”mø¢ŒìíeJÙÇUU6ì­ÚTs·§˜q5{3ÛÅ—G yºåæ»Q8Áª*Þ¿è)#d§¿É³”�zcLÕ¼ÎÅWz•ëŠܼží‹�(àç,¾t’Ì,>)’¤Âr7s`Á»ùT_ÿ‰1âM›€VŸðI_c-˜"œÀ¯¨¡äØ]*ŶSõåL•ðñ!þÿM·òÉ ;¶+•ÊWÒãr†)Wï°—Lñš®ÇŽ¿Â/Θ52áù4�¨Áå?"¦}Àl9¦U Õ.pÔ.Qa9´õÖF m¼m·¹¯¯Ö0�+?aA¯‡MhˆÎf椲rXTí 9Xà}á0:>4Ȩ4Vu¹H þû¿€Úƒà¨4h'ÀšÛ&Ò¢’Ñìöóƒ¦_DÖ¢5GÕjÝeÈUø<Õvúéb}ƨÑ.rHLåɪIUA¦ Q;�E§Î¶’äiF7FÈØ&ïßš^2Í{AÓˆ!œ8×—ª,©: X%UÝËŽ·†#ƒ´´:£�F$Q¾Xš]½ækŽXMânÂÊI>æqwcgŠXæŸqÁ'ÏjlRñ¾éA�åÐ8ÒÚž.·2ˆ?@ ‰g39 ='YSLEí$° ì¨À<Ï’ °¦­÷Ô†z6»=‹Œ}JµM^8ß ä³ÔÊ„¯¿A�‘Ûi1Ÿ™˜þfš³È[ÿžHt­ªi±†tÿ.Ò¡¨m[úTŠÊ+@iŽ®Z²û Ë-µ¸¡ZYúsÅ%Ó›W;JCõÎ*‹`/�?æ�ˆ0hÓW]ëÛ�–Ýñ!Ü-¨ép}:híŠ]ÈeàŸ~í+[´öw[ÍØÝâ¿ñöêA+ŒBÙÂ¥£�ò ¥Ê»�gE‰~Ú×óÍ4W0áƒÀTèµÀûNIß©;h8¹¾"Äù´wÐÖðë»–ø´Ï ¯÷ñãN}ÌÞ˃à3Œrý„L6µ/Ü5K`Ø öþ[~�„Š; :¯Òå "+§cBɾÊÇ~ç9©@õŸä”¬Ç‰üðÁÓ³eº¯dºO2ýJ”¾=ì´Î÷öÅ¿¾}¿·ü‹Øß(ëC'é»7Wä]DÏýJ ú{„ÎúÿC¡©~+öwßïí¡tá�oÏ÷þ¿ïú,‰¾»Üûn£Ð±¸X‘·þ?˜;Ñ›Dqñõï�71Ÿ'n4S-nüûŸ^Ç÷þx×ÿ¦úð»å`wo£øo y£B·±j N(J<'t¥ƒbÕ†ÿ‡*|e” ü\Ρé¾qß\zÀêé�p„;óÈÍÓ�8i¸ÏÌ�&Ýi¦jH—ÂÔ,c3SCG‚gTHïw£øKÃö%Ò{¼øó@Ö°-�)(ÌÜ$JSì.a&šÌWÖûÖ:T²•úLkî+…|bì×XLW—#�¾š_|9¬¸'ÿþäzüÃøäx:9]�NO.ÞŽÿ¯¼kÝmã¸Â¿›§Ø 2DŤ,ÛIÐÊ– ÉQ‰­JrS45ˆ¥HI¯¸—²£&òí3ô ôg%OÒs�ÛÎ.wi)èÅ?‘œûœ9sæ\¾óü _ShïÙðéÑÞ7_Õ•8>xQS¤ê�þnÙqüè9¬ôÕ?g�œ�Ïñùà)£Ë�‹•¨xGQ‰—r,bÕEœ4Ò^ Ú«)†»¯H‹ÔÀ(¨!AÝÊ~ÐÒÈi&×VxRÊñl®¡„n€g­at °¡ÑÕbâ93šÙîZÅâãh»Ü£Y«~öÞVµÄœ´»Dm÷IG½(Š|‘ÍVz8»Þàqäp žêX“{Ée6½ZL6½2<{¦¯Žwv5d¨„v\«v�0W#BiàQ–xù^Ì'^h?ß)ø§—š !{!ÒÇ UŸÖ7fEõ ì̪4Âʼn‹³A/¬Ôð¢eªx*M®p±ÒU½ü:ÂJ¨™Š{¹Kî�%[³RÓÒvÀlš‚ì”a+ÍD™=êÂx%|áyÞ©¨—�sí' GH <¦»wIÿNÕÜ1Ó)*uàNAµTqFðBçj,-Άø­¨°îŒïÜ 6¨±–wˆ¤Wí¿ :t 6t¸Î¤ë]h‚ÐÀD°!zé/¼óQ¯�¦J&^\Æþâ¬g�•€ÿÊ*iÔx³‘ç"‘a «uœä�!ÃÜwŽmý ±Fß1^’ ËwÆno¤rŒþ‚�|‘”µÝ™ë e´KBÍdn¸Ì†®Ç¹E[lKVj…×N‰®õìlà»ZY\ÙûèÁoëX|§Ù:ñõï;å ©çMüJœ+Úûhûá�Ì–áÞw¢¶•èSR'{Ÿv-?‡Ç3ÏAnŽE”o]ûXâ@ ¥Å­{ÿvû•ŸB÷Áö"Žö ZNO®íÖĸXÔ"p¼÷_ùRÏûÚUœ2çÕîÜxwFQÎìá’®¬ 3Ô¤¶1n~F–ødí9ÝŽ?ÿô÷5ñ­FÍœðêG�êQ²}Ç>0ÜVV²§N qŘu´´ÀÿŸ_]NæxƒmÅ q[ɧ“iBm¥˜¾cÙe áËI\à!ñÄ0$¸‡@ÒDÛçµ¹3U¶lû¾u®ez_×7½;ñ�2îÇ»VZÒgÑÏ?ý-|*™KUZR~Fj“^r{FÉëuO›®ú‹A§ŸÇLóÉÀ:j Ç=âÝi¸,KrŒê‰aVbã8 Ó‰`…ÁF�ÒùVrRûµ¥ Þ{ÄžäìÂV²‹É|Ûê=sïvv*&½ËÏÇK¼\=—=1÷aéZ¯b‘œM0ÌÌÆ‘ðÃ&4Ùä1¿<Ÿ[ú9“(ÚÈX_Ä1d�MÍÙñX;©{›²Á£ßrò#&ÅŽ„ ¤0ŒHÓl^²rÇþÌ#yš%$ë“ï�‚‡ŒD‹ÆPR3qø#o�9A3*«œÈ í€ËäÐN8™WX—‹g�£qˆ(LP¶ÎBe²ÑC‰vq'½¡Þ0…|r‰‘ÎôC´µ8ÌÆÈà¿m!k~¡+‚ÆÞ<´ãm¸‹ô‚xTš'ô%wl´±¼X](‘»GÊé¹kÔw'Ü·³èûƒq ž vã¬sÀ+ÜK�®gIùúµ÷“‘ÄWWíûB‹ë™£OqšfØÍ ƒä»ÒC–•§^ÝI©ºD44<¡Éxw�F#ßê~q®§®î÷fݤPW\9»äC=ÝC»E:+å,õʼnãÈXÅAÁaÉzj]e*ÛT '‘Ìàer5ÛJžŒ$"2Z k&co¢ìùç$‹}?zºÜ=ow´Z‘¦,W•¢Ö ñ-‘7°kó�§´…RÄ2[ ФЬ¤·d5ÄõQÄe› j¨òN:ªÕi'Þ³çFºsfÙ‘T�Ëùáw¤S廆|r­|’üšû\OŠ7‚™¿¦Ñ-ì'æ ´#‚»LÇ·[Æÿð9™Pu˜ƒt0W¡ÜÙwœq�‚ ™T"e8nŽ4h*ÿÍIöã ƒ˜Ay±¸=e^5† ŸOönUÓa—®IÕc}65x¨�ÜžNߤ¿Í�ǽ9ðçÕ"å@ô‹«ˆ„BŒ3@·êýÃ`ý#2¸PlúzRëËnCÞ„-4i2=™7�s@üÖîyáiŽUŒ‘sdD][ß6ƒdo2 ±•~³("-�„óÜê¢�ëðJ”rˆš·‰ !7³Qv+½áѼ>(O¼Káœç•ßÓýʧþËã'qà#Ÿ06d†l½áad¬*A8Z«yÓPÖ¸kú8¶ü¶æ H 6~ŒŽCüµkRÿ‚•¹ôfëÀgP*Æ !–«’ž‰$»¦çyVJŒÁŒÐðg„/Åb>*d C}ÏŠhùåmr¸xäž‚Æbà�˜œ(tV svŸ�ãÍ‘–šŽc³=#‚Ö1ú@cž?™3Bå4›o_™©XµºWZi¢j qóPcfà>hZ ø¶'Å ”€'Ý!b‹E6½šÛGdÔíᘴÓÅž`±3úƒ˜Å(–«¯éì¼øYÞç ic#dp1Zï85G~ßü}¶‡z‹ù"aHE¸Ø€¡Nœ ~òÜPÃZã¯{¥9ƒ»ÊÛ�޶¡ª£åÝAŠÃ¿":Ú¾—gqŽ}•?éÀ¶÷¯¸fݰýÙ_0ëTnñG0Í«&­É0é±ý-c•JŠ©}©Ãx7J$›[É%fð°†äiY*‰E6ák€ÒEa5ätøÙ¦‚ê XÈwÏâmÁýÜ”ƒmdrâ4&ø„n¦4âíÝ"¹'"µ}Š,ó5a …qê\s¶Nò–Ⱦ­Š@G¼ƒ±(C„Þ(/mž£ Ê;hNA³ •Т &!-Õý¸ãÉ\—é÷> èýàž°+OÞ®WU¬WüÛ7mZ©`•G2É5‰³]'«ˆ/I06³@¡ûˆóSÏÌw~1X´nß:-+ VäoY æ#Dœ²pS¿…3r™ôhBÄî…J-ΜÊ~71)"œ†�~ «¤ Ï�óÑÈBð*\J°2Á´xÃl.ŽOW‘Ej*`0¿�8Òr¨‹ï†ÌÓw›¶Œc׃¸Õo)4V«Ê—Hüs›±*û-iÏ?þ˜¸]paò6Ç‚ˆüAÔØåý=: ¶K×> èlaz;à'è¨;à€¤u.I%xk’¾Í×tÙ¥õt]æë@ÛEr/úG£¦+ rÌ qì{/.>E‹²—"ÈШºhª¨üsÌü“A­\©K'mÆ6o}å¢)îûFäzÁºqçOòY¤óóÉ¢òžç-²ÆÊ�îãŒÜôã–26±Rt.wîÀóøîª†ÜV#æ¦EíæÛZGnª‰ú�jƒ�$¼%1t[Y¨ªÂ‡:™�l�~C”.^¹¤Ö¶¬Lº£ÕÙí)ŒsE߉†žP´p0ÛíìQU´·ÞÄÈžøDŽ;÷f0å¾Ó8âTj| å> d˜ ³AY&³I"œÕjy02F àƒGl¶áÜ�˜yn´?>ÛîÓh6Ãiø›®/%»˜[îÚ9W‰ Û«¡¥šz.Yþ‰í©Ô´""²Çìr¨LôJ ÝfpRÏ‚£Å8=£Þ&}dM‰�„»4�Piú‰|o탘‡ƒ Oé÷�SouZYò¶‚BØí{Q àN\ÍXwòÒáýKÐfY]œ�@0'9¤ +1‰ oö,~¬ò]h/¡Õ³ñeûžã”ñ˺€Ó(T-µ²é¿Ý™ÌÒjß%—‹µ÷Ûv2Îæð@O^ŽÀkH½ÃA? 6LØØìüœTX~"ž­ä83¸ÔL]¾ôöžOLPÊ»üPxK`££ £%ŠÎo(�®‚£œë]äJí4¨/ ‰V3îä”7æ˜Aa}ž$yzÍ"«ª,(­N6·v×½v©�šã“žE‚“,:+–™JŠLXÁíf©Î5–æv­&¿ Ç5™¼ŸÇ?ðÿÓªG°,ö7%Vü’¶(zBDS¨F ˆþþ_!ÔÜëÿ¿nñV–¶†«Þñdâè‚ç«ÝÆa×â¶USY*ôq·pAÖOÔd¯ìòl]ž­¥Ù™Æ÷ kªqJ¸(ž­9î½µ$©ç�µÀɱÔPc*w8 •‡ç»D ?>ä õ²Ë »Èôy‹‹ ýUÙv[ñ½ñÎi³¥°‚¿Ùºaô­æä°/0 ¤€‚àìÓ2_Ì(³gÇ#Äý–X—�HdóÂ)krª5¥TsðNAÆÄfp”gga*5 f@Ȇ²p�ö’³yãɯIHV#¨“bLüÁ/¯py&´O�H ÅMοScÐö‹ ³l¼,1Е}�µY\g“)fbÜ tÈ­=—À"Æápž]*üwTÞ½0GïC†wlÅLª#èK,ðnØ9´¬¡¼hqý¸Ó0ÇÃ,KtU"ŽÓ&b)sÜ`Wq·¢‘°™ŠT$m/AÁnsÃ|M45Š€þ:ô×öÆ geA«˜³Ö€P×›@j~dAjñï® µ÷·>¹ Tà‚ üEþ¸*0% ¹-rNÀ…|ñf@ó; çu’ò»ø¬(ö‰y^X¹±�x†= S$Ý:M§Cx‰/ÜÜ�A0Ú¯:§˜ƒŒÓâgêbûppË“¿!4Ücþ°³sürÿëg'Ã㓽“ãá§ÏŽ÷ö¿:`kBëZϱ�Ád`¨ŒAókÌÌÅìq½ZâŒw4cm÷ª-ù¶žlè­ú®F!¸&Ö—« Pµž,D ¢“Ñ0ðo"éx›jUBíUÓµÅþ}öìà«OU³AôSÑ(úÏV<Ù‚¯ ¡ý'_ý¶m† ƒ¨ðåñ‹ç¬'ºàD#�LO‹±BW`‘ážì}îb”ÌÒë¼HÇ$�¤gŠ/à”"Ù”¼ÍÒäqy:Ïf‹' ²s{ü"’aSòOÊ(]pÌ ß 8ñ–﹂¼«…_9Xz7‘‰Ú[XLW cåÓ¢š¥ä•tòWëß•ÄÊÞΆøð.Ü4R¯Q}¿ƒíǽ¯½�‡/ŽÝÏ¿ùâ$±�ÑŒàC!ÇÔ£JÒýÆï"`*„él–‹ÂöVZ‹èã¾+ÇU:*ÞL¶øÐñX¸aJ­ÜŒ à�’Ï&ÁhC[9ðBy: rÅ@¼GJBy0i¶ðH±;(ûvä=:'§J D¬ošrrŽ[[²{ {�°>¥§-P„¸ç¦Ž16’ÑŒŒpv0]ÀVx¼Kz פå)mÏ%ù¯sìSÐWO‹éݤj?¾ÈÎXnxyò”¼ ePE)°7JˆKÞbHâ)½Ûp¾ã¬œå)åd‡¶Î/Cx<ì„æ˜FL¥o“�·¶“¶–Å|óž‰1¿ÈÞ:ÉÆèÔH+»~˜Oj¦ðú�ß6p%ÚNáÒC‘“‡Ÿlo‹l€RRˆoàdZÊYÇÉíŽè;ÖX{× vZí´ª´ÓR-@]]]^—j;âo¾Ž!ëC‚rí8bµë(¼ºf(üv_a-µë(´š€—ßR¶ænâ.a •.0_ ÃeàhÜ=WÂÁŠLQ\hèÛW>N)ù6è¤oÈ/O€ü‰œ“�/v² NÈ= àÌÆ<�žO¾âJ�å FíçŸþJA>µÅîÊx¥uZ;^Ó³® ߦö³ …r*Ógù�uçö7Zy÷7;¥¦dœT#ĘÃÅ ¸ùŸ&ó‚CœàBÞYî;fûj-å`=:8�‹Iä‹/�Ž-¿¤Æˆ¡1Ç.*¯$yÿQ�Z‰‡{oÅ©/¡ÂEúf’œ§³Òw·gMÈú”yÇÑä n'òM„yÀf^Î",½M§ýdò}ŠæÝÊL8(`«îbÀÕu±¯hž}¢b¿Éúì& EæNI¸³ƒ«¶OƒëI­Gèã©õ‰Ê á É}©Æºÿt-ãŠJ�ÛýæÒ÷jQš¹Œ×¶w�T.¼DˆÆvå`>’Ï�íÈWwïš‹9Š”{EÜÈ’ÓNØß6ÑÇ0+‡ù�C̃¯wÄofùaÛÃ+ü2ch§\Ì„~ÛcÕÍ&^ÉÙ©(j—êYš`Œe÷·�(_]]š§#jýTå!£öe©–ÎÃ˳k üÀcãJ ÃÏ ZjØk¸Ç>l�bªÏjµìFß²Œ®éyà×ÓvaÓ—dÿ\Ò•{à–ôç"Ó·K9Ú³? ðý«,g/tN©Š®¨ùÕLS¯gVŒO‹Š\¤Ó1ƒQ¶ªò¬²Er½®£réÏW}ÆX+PÜçy1JóofãQ�§óîƒPKÒV1]m¹  ˜-)imunify-security/inc/App/Views/Widget.phpUT ëÆ«jëÆ«jux 臵ÛrÛÆõ™úŠMª ¨D”d'é)e$Êf«Ûˆ”�4Î`–À’Ü0Ø….M<ÓþC¬¿Ð/é9{vA�²ìT6 œ=÷ûò»ïóE¾µÿå—[äKrœåŸ/$éþç_;ä8Éʘœñ´¼'/—ÓWä ïÑ8›É;Z°]2J#òüàÙAïùÁóoÉ IÈ5bäš Vܲ�#þ3±T°˜”iÌ r|vysBÎF7?¿ÇËñ� ^^‡çË Â/¤ÌEÿîîn/BÊ Þ‹²å~Âæ4Ù ý­­”.™ÈiÄ4{Š»·£e™òÙÃÛAž¿}ÍÙ�x±µUе ƒ(bBœÓ”ÎYñbä •t,³‚m„B’›Ñ°C-¼=Ïb–¼½.†Ÿ>ì B¿ârRÐèÝcìºg®Šì–Ç�œPÚz{ÂEžÐuÌ| G9¡b1Íh“;Ï™$·pfOY#J¨ä�~Ìî%Q’ß¶:x¼çÏé=_–K’–Ë)8B6#Kš /.ÙR™±ÈîO}¤Ð‰²THr>ø1|3:y9œ„£Éð|LÉ·Àáo§€1¤ò 4§áèâxtN‰Dž¸TnÀÁÉ’IJÞ±2Ë "À7x:·HEšeÿ`ð”J¦�«c¹¥‰€A#ÐøâòòïÓð|8„þd®Mj¼¡Æ‡e*y¸,]d)„…âÇçƒF’gé /./ŽáßÁùp-'aŠd=Fn®G$§r¡Ø� V9‡ C½ã3/áO%+fÂ�sv>8{3¸†€=¼L^!GûQÂÁ¨û†Àf.À ûµ|/èm|DKÑË‹L2¥íššÇ&å-Hü#]¡X¥C4/§ �Èv\§ �Î` c•ÂÖ¡ôòœE[ð[ðN²Mý$XãÆ$@r“<Ö¡vLsá%Ÿâ—DêT¶ w�ðšØN*¬q_æ¨|š�«¬÷ŒL3Ij«ÁÚbá‡L^U0:��õ—ßÓ2Iš¤§.¸Ký¤(#0“C!§]úF «¾!6ZÖ¢¬\¥�B{ë|Ï¢smÙŠ®ð6ø‡‹±¶` Æ…÷r³cX¤�«ažÚ#౟ ãGý"Ý“áiï›ç_?ÛÙ#oìP*¾1YÜ\Á—yòð 8Áñ Õ°x ˱@‘�GiªÊŒJ<4e�eù4ù$¤�¦Ù=RñÇ„{~ꛕ©ÖJF6Àº[�ŽQ~üìÂû:<ê@À瞟{Nmß:>ë¸(¾m8×!Ñùa�ζ\pÑ;òùp%ÅV€~xz9¾òƒî°™V+8?”ýYA5Ù_ÍeÇ¡îº$¸ËÃØö}¡`²Ìƒ]B‹‚>t‰B¹K8�²ó¢å0ý•Þ‡¶w0Mƒv£U<úµŽh‹ð½[ìâ˜P’BW7ZQ'ÙÀc‘’ÛŒÇk¼Xìj{ñé’ψQÍO’ص Ñ@�…Cf:(YkE³€Ù©º$ˆã²àò¡’ß2… ¹LÂtcšo26� {ºgOƒÔA­'ü¤Í¨vl]5f †®èÒ¬€öH ˜ÏøÔÔëe)óRªüñ%U‡�3~oUt‹N‘£Ôí<)ç<½)p/ý9Œy–EÒ%£ó›‹ÑéOáxx -Ôä§ðtt6Ô�”rß"U8ôޏÀhÜRžPH7µul”(³iš×dÀžª IÂb­W•`-ý¦¡w9<"��=�!¾þó�š;&§@’Å)U}žAÜ *¹Œ¿#R+BCì(K)?",�QLó/"šªÊ|Ø"6Ö6󾫎j ©zqx'ªÓF�ý}]ç¡‚` Vc»$Μš ¬[ÙÔóríæ�mÓW�Ôp¦2Š%¦ø:ׯ [ú8ƒÙDAGø ‚ÛCc€ÎP7ù¼ 1«%÷eïÈë®èǢÑî¾ÿPJ©³šÇÍ”ÕdÖï7‡ÇZN` ]ÉŒ ¬ÀA]®Ð°ö±‰CÏð5TÃüÁŒQP1 dm6?5 ÝsÖUbP�U¬†"‘5½Kv×HM,N™�+h¥&ëµ®ê ¤¯ß Rƒ÷¸ë¨c–|oåa8€]�ÅáÄuŸ�ƒËß’F\¾[ØRs­° ëѽ©N4¨ÂÔ^Š — Vìçêr9®!+KéÓ£ÈèéÑÓÙ4sSˆêðyõ¾:rGgžç5�¼Qï øŽvyÈ›Ç#¿·�x�©A�Ù¶ZdºiƒŒB%©4» Rí&\ÞEä›-æ‡àóT9:L%P|a,‡‰¢Q>˜¹‘Y9_ìmèú 2�À„¢Udw„¦1 LaÀ‡^šáè£Û¬ ó¥*pÿýç¿+Єß2+ävh¬Ìæ‚§ E¹”Þö¨YøJ!† ót¿Ø¸BÆ *Ã^K’nk½l¾öÒÏÏ�t�ݽ‚~!øói¼xôÀ°eNTÜbÓÙ®°é¯�çÞ‘.ó�óá1^Óü9m¿;4s€ _|�ý’úŒ]Ò£§îŽ:Û\ŒªfÈy3S¿Ïè$†p�<ä-¶îIát@Lú@FÇL7Œ4‡ì‘ƒ yÖé�Ì:×}…bÚçÂò†xêÇ}½ª�µ6u昡¸N‚êN“,zÚÛÑè7Zã�@*Ò†ðÃÀ¡ÇÇGëéz–õHWZe«­N½‰Äý$¸þeD; †š†²ªY˪3±F€“ŒF Ô®±>¤DãÓ˜óÔÓZ×Úø Ýd„ëNÈÞŽ§tp½ m®åÚ²�|Ÿ—ŽQ}pÌ()c¦²vO)J{ä¬È–Ê7j)ë­þ.lÈ€+Ì›öz¤ß¿ŒÇ›Õ��×¶Ÿnä×s°"0Á¶|B!…®Õ”Á¶�P!'| 5�.óµhÎ\¨UT•ê.Ñ�@JUZAªP.è­ZÌ—PBkEuqû™®õ`ÇÓY%¼q”áyÉÏèyÎíM¿�ÖpxÛ­ñÀG_ÔOŸµ×Žõ�‰æ‘ÄLÂH!ªŽ@Å Wã"rÜô7¥rÁgº¼f*ßv¼ðñL¬«Rð8+$™>”¥æRVRu—™À©'ÂÇ3^iÕZ 8ÚmS£é:Õ| SÐ×ÔÑ;Ò~MØ[¯ï,EAz$/…êz–xㄱCמ=Øè`œBÞG†õÚ5Ôt”ÑâÈÁ ûäýSi¶`{ö(¶§ðÖkAg­3VŠ1Õ®·Z…i=ÙÞz-qCÛ�Ô3¾ÄÕs}ß}Óy›n©YÕûÃÆæ¹Qc ó.«|Ó‚™IÝù´µ.6Ë3ùšm;¶ÌTQë/EHPmÜüaW/#üeÐK&u}s}VÝžé;2¼5[Ý´Õ7dú±àxù|ï`ï`ͲhuæC/1èª7ý~nß«}Õ*‡fäó8�ª9ñâÒ›Ûy,�k4éÝ€³›¸kgÄ�û\FÖÑ{$øÓ~ÿyƒ'67¿*ØŒß+(ëœþíê:AZ.Q?J;“þDq/gb¨ÞZ˜Reï2péK¦¬º)YfšeÉQV6Æ«KåÆF‹ ÜF( › æzjP1lVˆ¸ëËÿõ~†mlÝÀB&ËÉs‚ݼŠ�¿Ò[:Ž ž·ìËU#s¬Ÿ—5bB ùS Áq¬®f'×m†µ¹ëÞØ�ÐM½0ÆÍ° ¬•V¯ðöÝY©Õû@JŠž€1‰­=Ì�6ÔrTMàÄ2åÀéTᛞNô\‚ ¯g“½M+ü ²^b9 ,oå¿ÿ€¥U€«‰ »·K<%¦=žÂ̽ž³¦7µF GpbDB¯g~„²9RÌUyåŽûj£—`Î�ÇÕ˜Ž?*14BóN¶mïG/RAà/pÀ ´­´k~M³«úFßO¨¡ßÂ&8ü®ñª¡#-Šp5dë�ÈYÄg\ªþ ÒcïÄ“®¨Ü›0£°í¢¯Ó çA¾�ºÞ"°ó«°¹þyŽz[ñ�+žHTYš—²KFW7“ðêr<� ¼ått6^‡¯g£“ÁdmËÄ¿ Ñ¸~ÿÝ~úŽL-�Xp–Ä=hÜS ²'nç�–ܾQ)]=Wâ½ßúPKÒV1]- ,bñ T),imunify-security/inc/App/Views/AdminPage.phpUT ëÆ«jëÆ«jux 臽ZérÛFþM=ÅÖ¤#€´6ÞJñ�BS”̬®âaǧP 0á€,¥Øú±�¸o´Ý3ƒ“Gœ�³©ŠEÎñuOwO_Ãîi¸ š/^�dÀÂÇÈ»[ƤþŸ7ÈÀg‰K.½ y «ùò¼44a‹xmGôˆŒ‡·^¶ŒãÖñ+Ò÷}2FNÆ”ÓèžºŽø—žCN]’.�ÈàòfvF.G׳ŸàßÁðz2$ý‹ñpx5¼žâúe‡¼Ýl®×kÓAÊ>6¶júôÎö›°¨ypØ+ÊCÛ¡’=Á݇Ñ* ¼Åã‡~~xëÑ5ï$|ç’¾ãPίìÀ¾£QgïÊÐûÐÿh?¼±×ÿ�µHxï‚3;¶'1‹(p§”ÐwW^@BàƒÜÃv²`Q[È„:IäÅ�¦8¸ãÛœËõ·¸œ>Ä4p9AªäÓÁA k)f¹ŸÜ °xI‰-ˆ¬h�˜¸¢yPsXÀcrÛ¿Z“ËÙéÝ“T ®¨ê�f߉=”½@�(êÔ î¾·ˆ`¢Œ=:÷¯†V0Ý\#¾Üb)2–ÜS"rÙwÀdLØBÀÒÕœº.Ðä¶O"–Ćm˜Á®ÄŠ$¼‹l— ù•ÉÏn/Æý³¡5�,àä� ¹höß6ß*Mµ¹ÄjˆpTñƉ+&¸·#’éP‘ #ïÞÎÝ‚r rCC#+ii»0KæXŵ˶šcð QâÍ^hƒ\ˈŒ½L¥Ù1 þ—N|Ý%%d;™ûžCI -Ʋœ”Íú^®Ž $ ä`ÚµÚa¼ô¸qRæ¢W’y¶¨|ÖÞÖl×µlÁ_�èârXx9ô#bG‘ýX'êç\qá®pxit¶ï�-�˜„SÑn—lT^„‘°ÿ)]…>¨9*ÚΜ3�~6¾L¯D×Ú t®®´°{2Y‚_vÉü‘Ð{=JG‚7EÀ€ý•ƒžbV¾T©—™�H}í¹w4ήÓ`Ú?óðÑß“&y×?H.¥¡„;"saÄb*Õœ„pr¿A¸$2·¹dÛ÷î)',@æí’és ‡|g¾4[ù`Dã$ ÀºÐ»”� ,-.Úž~ùui#j#jç_ ˆÁ²£»:Œ×t\§áG©žÌí‰1©Áp”6Mˆ‘ ˜«jä,ÀqÎF •’?Jõ"eƒB 1ð²N}³=„)¹²\W,ðÀ¾…£eÌ�½ð+ÊOq»!B)¥\º&ÑŸåÆ½Í³V-×u 1‡x1]ílU¶ï™çîð$Å»¨øõ¤N¾!Uï`œx�IÿÞö|{îSX.7¨â-~J²háa…±PîXËxå[˜C•_p›a’4ŽþÔF]úa‹…xL¾ÇP·¹ ö’kó¥‡þÖ€¿Ôw Û�%Þ÷-Òl’[Æ=)ËE ¾Q›Ð8+áš)�þ…UïXäÞF!ì$fÈ>‘…AXåɳ]ȃýÇBÍŒÏF¥õ½wgÇiI-†ˆ‡²)Y²Å`°y~Ëòþþ�–¬&$�)G BDÍ€­!dßÚ.yÕjµ RÊs¤‚jû zj_Ï0«vY`‹f¬1&‘Ø©FŽ qÇ‹ëÚ3­ñsë—NÕBÅê­FpJê)Þ·[W4H;¥˜IFFÆ(ù<þÜv~mcRƒêþ’ù²$@#R –Iàî²M �Ë3µFñçI gRÝ g7Wé^/¬±-2I~%%íºŽÅ [Ð@áËvaw6Ï yƒ �úîœ)½Rª¦Þ¨”ŽÍ–ª”Dÿ{ËÐámHWÐçæ‰¯ùn —n‚MF¯uß÷î!�s¡·ßÃÈŠœ!wì�Þ$q˜Ä¦üsÍb9ꪞË.>nÍaÕlBÝ1å,‰ÊÍk¤ƒô¹|Iiü'q„l÷æ”å~…2¡CÙ�€2‘Õ“‘#–ëE23]Í®Gçï­Épãô½u>ºZ·ý陵&^? ûœÓ˜ßB0ÄŽMŽ ™”-¦š‰gØaØTßTúœ… jñ™Ê«¥¿Ì¿…é2…ÔŸ'¤ÐÕm·û?öJû5r¹eüi É:,_‡–Q8º«oÙ}s=Z×�—ª:¡±½Á` t©Ë€g{Dc %°QÑÂ�œ¨Ò'ú²½.„îq+H|ÌC3”ø4y|t]Ù¸@R�ù2ÐÈ ™\C}�¸.Ó ÀM©)fñºú4Õ9@Z §‘%‡S\ñe²dæPÃñ8B$1|D Ý9N္쟩 "3¦m-=㤼º¾!-eXåe?ò·¶Ÿ —«R;%:få:ˆI_ØàÒ¥q-)Lúr£Æ~›ˆâ ËÅ�¼$kìͦçÆ÷º¤z*r÷î7g7ƒéûÛ!Á•r?³f“á¶³Õ ;±7‚UJìVžð¡ G‡òÄ&Æ“ºŽîãvY<¦”V^ŸíNõôjª§ç©©²f™íq°—¬ü„iˆmÙ µd¹QIc¹^*˜³Ü:¢,XLìØ\ÉþDý“¸�àUKMà.m©(:Oàž^èY¦[{Ê­ø‘oæây9’Å%¾6ëÕ“äǬ�syÖÊ &“ê¥#ç;w5ctÌÒáH9¹ PúÔ[Q–Äõ|”[YZŸ~ÊܪOͦ/ó™\<8. 1e �ò&NW&¾k|äÚI�ÌW$b¯Ü¿˜z"+k¸üÿB+¢w¨äè/&ö èW$�æhÈmÜm~CPøôx ÑŒU¶ˆ$2–ü­ •ö‚vÞ«©&]a(mˆPƒYºxô•YAI¶”�±•Z™�½åm3‘ôÅ©§ƒMšxô"ÁP½v´‰­^R3`Õ×N¿¦míÌ5H‚ùÀ\t$7�œv³e2×”Ùœü‚ÂL¥ìz÷{Ñ<´­uÌÒH#â÷=MõÊ�…O Ø\¨&Ø’¥yªæ’ zŸ€dÀ.ð,YvÓ-L‰KDdÅ\H‡°¢r©F†�C=+r’H>[©XIúÁ��[TœÔº0#^ƒÒ‹ô´Tâ ·êøb1ž®°¬°¹@~ÈY{8_RëÊŸ�¸ta'~\˜ØKšÅK¸‚8‘VÒÓäß�Ì€6©{�l|Û"¹Ô µí'¬.3ðᮬù 0¶ª†Si¦6’Zbf}Ýf^�ˆÁúàÉ Xì£ –ÔÁß ,*ÏO„/Yâ»dNU#€º¿6‘�ÍäpÉØ¯d Û¡ÄíË Ι¥g¬9cþŽ–ÃÚóý×t¬èÕré‘Z‡;,Å«`áÇ…5õzjçóç_òH\‘ÈPVÁ$-}Ggd±Uö]4Œ·õ˜Ž«òuøg¬ÐóBú²€"˜[ð³e@¼®ƒÉè¨!uõ8#�=õßêDùÚãPZ«ëÁ±}œmÊ:Ž sÿÏöUÿÅgw�[éûf>ÿù³˜�È”ÿ¬«æƒú/¤ò/yÌåÈa½OEC"Žb– ŸªãgË‹¨øI=«hñüðÿ>b�”i@€¨œe$Ž”€âé@”ÿ{™KAâÂ\žþ PK ÒV1]'imunify-security/inc/App/Views/Display/UT ëÆ«jëÆ«jux è‡PKÒV1]òŠH¹Ý 6imunify-security/inc/App/Views/Display/RuleDisplay.phpUT ëÆ«jëÆ«jux 臕VMoã6=[¿bº;Hlo€¢€Sï6u¼»²ÙÂvÒ|a¤‘Í®D $eÇhsèOì?ê %y%壩vLò½yó83ÊOï³u ŽŽ8‚‰ÎvF®Öºÿü݃I¢ó®¤Êïácz÷ ¾o,Íuì¶Âà1\ªN‡o‡'§ÃÓà¿v.³£Á`»ÝöCŽœpà~¨ÓA‚+‘ èÐ ”HÑf"ÄBžW·¼Ls%ãÝò<Ë–··vy!m–ˆÝYäöÙ£#‹[~Ö&ËYžàÙÿ8¿f…îEÄ'L24$G8\È?h“ çÐ�°òJ¥ ' ÖR�[#leDAÀaJ§öKwki!L„µ�½‘ZZI§° ²Îä¡Ë zÒ¨ˆ"Õªb�½©Óq°2‚¥�n­sxŸiËÖç|Ó M9yHôJ†}'… Þ«rù3èpv_fi¦*7°I¾¾¾>oøÍŸ7°P ¿A'ËïÂAXÁȨ=×-YI‚!ÔŠ@B*÷ªM�ªQ “cŠŠ6Ô¹rœ>åààG²ng[¤¦Å(+ø„Ñuâ¹.· cï;ý…Ö£ê<“Û)ø2–h^eØÛÔ@_áfvõJ8Uï×F.HÎI·jª¢îäv>‡áÉÛa¯E'Z´-²%¸Nx£ä=8êÊ7Í*“¼ñ•£�­ÿKQáµÈR]á¢â«GªÚ,j²scP"©Îå½àæ åvROºTÌ-½�Ó°Þ ‡);ôÝ:ˆ�NkýS‹– #Ê-~Lõ—j-'©ê… ‹’ªpdQqð`-�¯ÇâçB;‘­•%ÎC`ow­Îk<Þê"ɽ«Ï\Zª‰Å`ȦRŒ’É ÍUŸMÿ¸Îé+ÎUȃÇ{‡»E–>óãZ"c·õŒÁ«ìñŒéT&Ó*nÁbw{|�Á€‹|å2­=Þ_țߴ‰~5hío)ŠˆÓ¢ñǵNCвéȺP øÑhòe6…ñx\(cÃ$Ýgáj�³îþó˜ £d°ë0Þ~`o6‹+ö©ój–,óÏD��cŸ=?{vvòüìùlElŠX$› )²{rÄú"–"`Û8^ßÞ]²ëñÍÝð÷pt3±Á›éhôvt3Gøuž§òüôt·Ûõ}œ9‰û~²9�ÄŠG§tzxó��)÷…"�¨ûq¼ÙÆárÿã M_/Åb»¢A~Ä¥TÏìï‡øýæ�e(✽{–fb~`Ë$c"Ëàï|�%yT¬ú~zxà'±ÌÙh:½�zó«éí|~=ò&ÓÑëñì‚uBE…'…¿ÍÂ|ï¯$sÎDÎ’¨Ï×ðÿ‚€ˆï…šq'{L&ô90[²Ô¿ÿºÅGù>L% s"‰0~sÏ3¶H’H™fá=Ï“9ÏCŸi6Ä]ÌïyñE$€Ø%�¤° û^,döYTÁ-ó dPÁ~´ÓðÀ·ÃàU²,åùúIXÖí!t Ï(Ó“Pl°6zªÅëð$$Z¼À×9Åd~ˆ ¦0Îk쨇 €äÌ]v° ’>‰²£Ì Ó-#ÒLœAV0ñ,ãû¯¾WŧÉÕ =lôÁi‚›É¶‹ÕƒpÁ<4¾{xp0òHÁ™ýçâëè÷�Á|?˜ÞŒoÞÔ`ô{ 5LÁÌë˜è½†¹¹�ƒ;¨Ã¨÷hx;­Ð¥€Ê÷6 Cœè7¼};_Ûh ¨õ¾[bva]Ìw³Ñ´‰Úò½ Ø@­ýÞude�Z²:=e#o6ŸŽ‡sJðk>hUÀ¸Dg‚ñeÿEÿ¬ÏÆ9Bð €�aLn†<\¶õsÒ²8QexíûDÄt4¼ýn4ü©›"¢ö^}9ï8ÌG—® Ê÷6w´Å] zp}ÍÜ? Þ#ıc1ñ}˜%ñ¼lÅb¬/Uå'×°”Ž…+åßØØœñ·Æsðþ}×—ÛØGA3Ï+ ëb9ÆÀuÎ<”'¯ìj`A=Nøº 1IŠ\Å¥NOÛ<#¬=ÖQ¯Ùq�=;ë±/ØñG`óÖ<"Ñ€@Èk]iƒÿì)ø1‚ûzl Ö>ÏG‡KÖÅ7hõl|{ã�/ÙWì˳ggz)ÌZ�ÿ|W¢þ }¶yê ‡¿ÂÿJ%zšEOŒìnzÍîCNo¿O²`ìH6˜ŒK%›¯,¨¨{\*L&x iàÏøùg–�“gÿõ�ÿ`»uè¯b ?' è'ÞÕíÛ‘2uç”ulWk…E�÷²e嵕ñ4�BQbúÙPd ûìÍ–gèNtÃ}X_ˆUÆ1Ðä D4¶�fir †aQ¢€˶2‘o³¸&“8‚Y 1ìRL;ºjehíÌ'O|e.A· ± f 5ö®BlIX­Ûa‚Q¸¶ŠZÖ8ê·’|K(&|6¦¦²H§Ì T­ü¨Yì(³RÈBé):º*Õ*ÇÆè5 øõ),¯²»F†+Ž ÇM`˜Íé'LlÒÜXñÉ«2¬.P XÂ@Þ‹øüi6̯ê+¬?TWµo•a�æ~$»zÔCÜšü¹…Wý¹ øh—’Q¯ÔªÿÒÒQ2Êöò°N”A\qoešo@ˆ$& |hFa&“†¬ $×îAEVZ$ßa–3x 9;òÔó3é£{ßuÁÒ¼m,¡\w‹±ïœ?!ªå(¢ª[·ByŠ^à�‡”‚j™�Ào¥:@Ò!‘S`Ž~’ÛªÐÜÕ\W`‚¦{Ì>ý´IØëDæ(eåÊXW[êë;üS‹è4ÅU¹e�µÙSħGÞeáCB´k¹YZ ®/i�Çtôow£ÙÜ»›ŽR>·‚|‚ÚxR@—ÖšCn(Nõx«>­zc4„1z㢔móÆÀ•`CàE@ˆð)$‚FtjÒ³ ç.~Ìê£êQ¹�’ª| �Ì0MV%5OØ 0ÝøHÕSãÇéC"+Ëö‘®ÈB 9rƒo\^N•jhYQC@¥ZT0]&y Úß„—‹¹· E<âïJœ=öz|=‡Wß ®Ç—P]y œ–ÜÁfé ÆíPPy�á2ÃhOtП,öØãë(Õ e`Ê|H½S9‘yê¶&CÚb‹8qhp ‘&ÝZÖ,Éq«À´Lj©Wƒôl½Æ¢jQꂨ®Ë÷I´j²S�i…†êè›t�úò<\ÅØ0*òò>”AýKq/¢$ÅóµF$ûª(‹’U½ ŒµwÝjÕ¦ÞOÖé¨(Z¹U ‹‹T_#Ö�¶SE_[s©ÕÄ¥¬7�µ²žÄ§�V5e{¯UO)ÙB »ûAsâ9 ’¸“cO*ça _3–FÛUw$e·¦? ŽÛ�ÆG=T7}B¢Þu$àÌö}X@‘-Lö‹­�ÎOï:÷<� ¿Îà�°2ü´ÌpkÑI¸Ô+äû y™Ž|R¤¯\NˆWLÉÇñk‚~ôäÕ–�›J©Bh°ª=]ºZùÿØ’´Å”QÉ�¶¤£%0&²4 ©ÉްMµ´Öî–ZÚÂÑ)M¡T/g õù�3Hé ¤ó¤áMVÝxþuåöfÞAÇÚè°êŸ‹WF -°“W�w�{4<‘àRÔ‡ºÃ5˜•ó•lâŒB03„xkC”t7"[‰®]†Ð8�ä@Ij¬Ø‚x!F ¤‡=dç1Š Ü÷’M˜ç" o¤Uê“ö.jØ�ýûÀvU@øª�Gá)$1"*�÷–Æu8~Ì[‹§ÄÕB±‘­á>-–€Œ—uv=4zt™_·}:g�»X÷há·NbÀHÍD$¥RHÆtmzÔ?ô·Õ¾t È•2‚ª•\8ÀµF‚Ô”ˆ@æ§µ¡êB•ã:Z$Vqë¶Å/tÖ¢µ#ÇMHœÖB½ðõ±¡BÁ�eï/¿Í=Þ”�ðñÌ›�fsÜ>®5#ôÑã4«½êÔàœpóù¿œõ5Û•³8< Oi�&~î…xNÈRO)Ã;¥�¯£µà�Ȥë�†ãÑËÌA¿ÎÕž’Ï‘ÓÓ¿H0/e€?œÌhö“Á6_Ÿ3õ ƒ¢XüÅ{úE‚Jç|“^ eø¤ˆ1ßý3õ È·OPˆ§Ïúgæ¸ë ‹xìZZväãÁ”Bðª›@�` IŠöàCÚ?¼›^ßNæÞÕ|>¹ .GS°<Ãü#càÆExpr;›÷ õÙŠÇ ‡w³ùí[Ý_„:Gvž‚þõxt}9ëa ×Â1õÝ {Å|üvt{3>{”ÂÛ››ÑpþôFª¤»�OGó»éÍ|:¸™½ÆA¥ÌŽLCѬªø |má…—¢xé: \q僥�œR:BgÉfÍΣš8½Æ¿°ÑÔoÈÒŠœåÿ²rµæìHc nNJ:ñ5¹š “M †¶#,sMçNŠþ [m�ÖÎT¤I–Uïô;ôÏý!9Že*¤rb¢ðg¤¶,Œ<”ª.Å’c£s™6Fв ŽöT¨âÔéÅô©Jуm‡cÇj¡‡:ÐP”TßIœtÊ DõKSØirÎ.ôe¯µ€5m¥ã-€�ÜÊð®jnýö†\Ÿ–íXaЏÄRk›‚ø’%Óu•a°tÔÄÀ|îž$¥ÀIÄ:ÈJ!\×>HÓS:eÙÊ!á…)‡Ö�4Ö@G°ÍÑ$¹9Ìð¿ƒD•µuŽ0î=5JK@©ž”àà‹ŠŠ°�=—úUñF«œSJ@U)*<•¸P°€JÙÒ«ãþäâÂ8`]‘ª¤\®Ã¥3“n–—EjQGë ?ïÖh¾ö.Š5Þ­ÀÍ@/MÒ†yvi€ËgåÚµ]åòÞýähsÍ]8˜uzZñÎ :smØú0 W+ü6WaÞ+øjy/@c60£jL*ýb:GjËIÙ¤Ö��*dß) ¢‰Gx¬\óíÝÍøõŸ½ÙðxþgsfªCUAÛW¬ qßtÈD´�˜si8¾Wí®•.íõš·q›šJÚ2(7‰qZjì‡êÚØ&Áu;1}gô+JÜߨ鵻 dêÔ×V"5È·¤�DJ{òΖŸ/ÿu¹xþ|¹üò…æyöìÅ‹Å< ñùç¼iÝô<º$`ãËÆ=é°&í³k ‹¸Ï_4L޽„–œÈœŠfsÓ0™êEèS–ðÛ�lت׶ÒÑu*¼º7뢊µX%œU¦»ËXæÞbKƒé(ÆRðmž5‰N^ Œ8dßg)ô�Ýl ¥“¿VˆèÌÄp=áW¸ü>�Y,p÷’Ál›šÍÃŒ’�?·cB­½VSzk+ÚB:2’C©[°µ àÄ'ewdü®ÄeG ­Î׋‘ÚÍUÛ¹Ö¦.£õ�¹,H�["ÎZ~÷FÄ" ý>v�1�ö2”ýFŠY)6`F_�LJ„õäÄ^k©“·øÄ55Þã¨l+TËA¦‡:®…ýÜ9€-ç›T fÛ«eGPFÔ²ùVØD=<ÖÖÔõзüb(¹£š‚ƒê¶Ð©OPu*í¶â`•2øâà`Ç�*;šjq‚§ãôLËÓLŸ9ÈRÁW×1ÝI}.À+�¨4Ér¸Pœ‚ðx¯Rþ†=SiI“FTN9�/�½ è ê�úÖwV ï(±9ÖâMSšB?Áíõ]([cë£{'oÊ Ë̹1c¶=ÒÕjº\ûÞ«g9xÜ´1eÖÂÀž„•ÖšsöÒ©MT©Ü¶d*q±ÜRt'ŸOëˆü(×J]Å¡‡‡`±AC§èî=X'ÛúþªéJè½:v®06íþX=Œ$à xˆc ×†�ÜV¸ +{KzÏç×�D sÓ„™WO?Fð¼ÿ¬ö@{u®wÝs” 8¥QRÞ+iiÜRmÚ¿·ønÞ‹§õ.îé 39=yÞk¼=ä™§ëñMñT©DÊfv¹Aà�`*ÍGéºô ]Žšš¤²ï?Œx¸!=B͈öez@GQ¨—ÅõŽuÅ- À–uJÁC¼ñ¹ÌXcµqKºIG1ɶ¨‚¸ó ù¶KÍB´ÙÊHiÝIU^a‡©„ľhßc0^—hXÛãc£®°- _)”ºÉ*º¢‹ŠE$HnÁ?pE,â¥38„‹6©ÉbRÊËB±+9Çâ{¼Ä_,m¼"Eî�ƒžÙÞ©@I²eÄup#L)ßãåÅ+]øä;$æjÌ1Û…¹ÇK%=ø Kƒ§¦™„‹ ¾„ªI.=}dÙ£{}ôÒº™ñ-�0ÿÀ‹¸rÒe0£gÙ–I5ZB´Æ¼4–ªI§W ér4Ü{Y,§ÄRK¸W·a)²ƒÀ¨�Ë­TO#xÒ×3Tuo’‚sÆw>ÔZç¸öæÎ áCî @íÙ_·¡ö–tÁ·ñŽm¨÷9HU%žŠEÑWV6‚Çê�Ö"Jü÷H’œu¦«‡jÅÕ-uø+YP½ã£FÕ„ŠGxƒgOÌ›‹Æ¿ÏŶ„Üb9}RY¶áÆÂM¬ÕZoúU/ÛpXKß0.K¨v÷øàÆ…JèÍ­&8Y…sÛ&&¤–}åµo@?¸%VL%3Ä…¦ùÚwßâó¥]GgX^؈kwq *XÓ 6»hm„L@7z”¨5”z ±[ú ­Ç—6D}rÁï¦Ê¥/ø�€ŒHß׊1šC‰;ô*Ï@WÅ6åÄÑ ø�ô�W)–Y>ÀºÚ’鱫ۻ©7¾Á¬éöærfIÄi«Ò–"$m@ÞÎòäñú .>� o¤€D¦D+mÇÀ›sá†YìC‚I¤ <ÝÇ!¢f_%è¾Hx´J5A ;í8x9À†9pÏ ÀLŒ³E–À:šåÙŸˆ3�­òh¾(Dÿ?ÿÚg±.Cq¥å½ø>™¾·ÝèY±”¹ˆó4OŽ>;:xrôä qÇbL\Œ+£ò;‚9ñ¿ˆ•Š2 U.Î.®^}+.Î/_ý„ßg£Ë›‘8ý~<½]Þý¢(2s|x¸\.‡IŽIð0ÐÉa¬æ2>Ñáîn*e2(«k÷ö<)Óh¶z{šeo¿U3EŸíú“ŽU ¢;eÄ4×Kèx`¢P R*Š¥ÎßC¿Y”†Q:7b–ëDÈTÈ0‰Òȹ,tÞ«6ÝñnJ@N¦£´¡Š£©¥ŠWB�Ê`�T pÅBÓ"šEм£4àCbCÜò2†i ðL4t“ih¿(cäßsüƒ¥CEûB±PtF )<‡ú�L!O”†ÙE…(´ÈU ó�Ï’O#$_U’Åÿùo¡S¨«S%ôŒÅ‹\u CìÔvÀ*ÖË��S]�ì §S싌0Q¡`&½L…®¢Ô[êk¡J<~6|ÂwÄÒqcÅüÈ\Æ*ÓynÿØÝÝ tj qúÃéO“Ó³Ûó«Kq"z‘½â‰YNr&î=ó”—W—g£ÉåéË‘ØH9I5¨éÏN¯O¿9¿8¿ý™é™ÂÆ�–Aæé^B�ÑkÀófr=OÆ£¿½ÝÜbË“£gMšWã‹ÉÅèòûÛÂÿÍÓ?µ¨ÜöÉ7?ߎn<Õ—_|ñù—$‘ ºc�¬©‹&º–®Þ¢j(NÓ•…•Š�°{®~QA¡Â!íg_ßÉWžË}=ÜÝÉòèØ¦�Eˆ=@F/Uèd�XÚ¾è•i®æ€<Ðö¢ª‚YÓg€©ÌsE†ûM�Ï=¢,Üp‡Ž,AØÑÈŽ]G¹½¨³Þr-W±–¡5 !�O^¦),ÑÓ•ßו•¹çMcø Q…¸S¹:l «Ë'·{^Û-Mngtñy x48e2—Éš%,Ö ð!ÓzvO\Ÿ±å�èÚ³ŠÎOç°x²Ébd�rf³2 È¥Ädxcô×O9ø�þƒ5ÉpZ€±bgg�bÏÁó5Ó�lÂSE¾fš“&$*²µŸ¬ßøÎïM9÷a SƒÛ-,�+ƒ[ ISM€Å2J9ªÇz>Wá-ÞE¸(�às%ƒâ{S¹*Ê<w: ·\€÷êZ¿7}k8†«™Mä/ò~ÒC„ÿxv|܈¾Ø* ¤§XÙ�M÷°ß±Â� …ó[#Ø Á‰)‰\�=r›�ËfýS­ãö!\̪Î⾿—re•pGr<"3!ikÅI”bùã�ýF»köÝIÙ {�|P\ÐT°:²ä–¢áQ·Ñ4ŸÓ<š‰¾øÈ)´å„–rWE&œübt:Qy®ó~¿<퉓ç¢7ÓÈù!ð�ˆ§GŸóéøx;{œ�æÈʸØÉõÕÍ훞͓ï ê+adÑßÕ¤P÷Å…Kö„—©Aú^lÚ´/Žá˜Ïêó€¡�r1aÿ?pmäíGo*C—Ö×�ÇÒU’³µÃR^9�‘ ×Å ”Õ�9Žæ©F¡†8^ç¨Ü†7”3£b5|-ã(DÂoœUÃó4+‹!ÿ¾ÔEõXn?Ü æ uP&ÀÁ€ª>MU×_\Þy~‚/FLWîC”"˜ä –�âôÞß¶ñ*÷áó2+lDÙÙËår¶üs¸Ø�AðE›L@L¼÷Åo¿Qð>99ñu ©ž8aöŽº×i±J+iÏÔÖ °G .´žÄ2Ÿ;¼}Ör'å )æb¯Ëª€š>/•¥­Mâã©Û÷�«ú™«ezÅ󬜣ÚjX·^u¨=ÚÒ¸ ÍŸýL�&µ…û‡��`p[Pð´A¤ŠÑv2‹èÀ ˆŒ�¡RòÕ{EÖB†-¯DfÔ6fõäÅMJ9E 4¬ªŒ¸¬FÆÊv)dËŒ‹¦öY¨{ò0šÜêr¾psÕKŠÑð—™°5\á7 Šnš¥HÙð>-e4×÷wón•‘¶›¸éÊõ¼÷Ø ÆÎÂ�}‘Ã�ý ðŠÏ`´ÒŒžÎêé˜8OR#xàé ­“2�{[é+<»=&›2<}˜ö³RÓó$¾§â³¾i‘ØÆ*!ÿù3~hÂŽâèbj³Žœ¬æ•Tê´ ¤¡ÖõÚ„þi—š^GôÖØòSKÊfé&–±’!'Û•Âd7¿PÉ/ݤ±ŽóÜùxFƒ1¡sú¬§”í(ÑÛ?¤¤tsŸÙ4ÈÞHS¸I-«Pè±×/®ÅRæäq¨ö©¡ºœ—ª v©ÖÒ–Õææ­Î0u�‚ƒìQöåŒ ×ó›#Ñð©R®kñ}Of¡ä‹Ó!VÈ|ØI‰ÝÉYË¥íQ¼c³r�Ù„«%xç#?uõ,rAÛñí0 éö}«Æ~gç–¢ÈL<ø WsY7¿jò†¼ièìä3ç×n¸çŒÞWñWÚA¤¥•j$Öb‡éüÜu!ï’QæøË®Õ°!b ,þÞ\øPÑ;xÿðг[δ³kÉyµº&?H¡Ç¸˜jöaÉš³�Æ+ªöÍ$ªò:-Cud VÅG£(4z†\V,ÈkôÔ~êºÌÐ�Ã1ç7=4¤ÜÕ�¾~‰v7VRÐÏxP꣈Ê7ðýi<‚;r쩇̊ д­¹ši´±-ø„Ñl¦x¾Í0"×´lê…Š��M ¦)1“ÅqƆHiÇqÌÕ~Þ!Ýyyön‡ë8Ú ÇâéÓÏ«»&>5k’u­çÛà±*dÜšáƒH2{¢Ö·Ïý�yÃM6ì0±Ž=þzK׉g±L²:ÞÛR UØ}””‰o/á$ób±Õa9öSoTròˆå¶H½Ím]õ`YµÞN b«_ëÌâšnÚ9ÙµÊ\Ïåÿ” ¯[ÔÈBôìõH¢Z •sÚj‡CœG %½P+ÛÀQûkÓ§œÏYÆJfÜ'“0§iÅE#º3Ýh in³ãt¡”û#NUl�̉E‰º°‰ÊçÊVÏ”µ!{kúõ5¦{UØ�½”ô>ÜèøNQ’ݘ‡-¥¨š__�PÝùØkn r\J­Ç9ÍÎÓ±«K(lƇ¢wÀ/ÝÈÊ,Sy¿9Ëlà[7ú±Ó4ªÀÐÏÈ÷¨ ªòƒWšC¸ê¦IiÑG¨=¯êHkY¦§R”bô>§ÙGøR±‚XÄoé•3}:>þæâêì¯Ýç×§77lºßwÿPKÒV1]<†ýK@ 8imunify-security/inc/App/Defender/CachedFileProvider.phpUT ëÆ«jëÆ«jux è‡�VmoâFþ ¿b*E…D‰áRõ>Üµ× BrHAÀ©­)Zì5^ÉÞµv׮͇þÄûG7³~¢~A°ž™}æyžóÛi”¶{m¸€¡JwZ¬# Ýïÿ�Ã0VY!³g¸OVŸá烣… í–i~ céÃuÿ]ÿêºý+ âæTÅÀœ®7<ÀâT"|.  “×0œ<|½…Éxúõ/üަ‹ îç£Ñ—ÑtIñ‘µ©ùÐëm·[ϧ›cºØóUÒ‹ùšÅ= êµÛ’%ܤÌç9<‡îqœdR„»ÇAš>Þò�Ó�ÛíÌœŽb–-¬Òà B+c5ó-¬æù13B¥!1¿¢³Ì‚T«�À l…�Àg~$äÚ+ÚžåO ðDI3é[¡$‹…ݹz®2؈Yˆ+ʆZ%0ûÜî9*ÛjUψ—«O�WŸ0”¿;Pz‡ñÜŽç£áòaþ÷Ób4ÌøO‹äFk­—Fw®)TÖ c…o 9š¨šeZ³Ý¿!‹q&ïÊôü4�NB&ì8ãwŒøÆQšZ—!ÂüÎ@q#;ø3Þ¼w Šæ›…’ð§ÒÁLsc<œCoª¤¿Ïƒ‘ÖJïVÍM3yä¿&¿ DYð{|£çyÊE@žZˆ³ ?9¬O£éB�wy¥R*×¥½ÔòÝ/I þÇrƒ;™æð0£m‘OC“÷%M.î y€-§~œD1&â$opïQ›*¬ ¶— lÇÀŠséª$*¡8±»öùgš%¥¡kìdí}W»kð»¨z86ÊJ©·SæD7™ï£Ž8—…ÖÑ[aêÁ8Ö®.ÿ�:†EØ•?ª3öB/q-#Œ¦“ÃUŸSG.娊¹mÝì/ψuYM Õ(¹qŽ—´ °w©p>6LÄäé7º¥WÍ÷V"7v-¬x¼„qÑ9(«w_ü#¿²Ü®øÑë½fE77ÝiÏy%¸²ƒjR:ÇrtjÿgþZŃ·Põpre§§HiØáNi| kÛ¢s†4ãV\ž`&0¸—|~b…ÖÎÉ“‹?2ÇïªÆ«"$„s—B,½´PKÒV1]S¹žNy8ýÐ-imunify-security/inc/App/Defender/Request.phpUT ëÆ«jëÆ«jux è‡Ü<írÛF’¿å§˜¤\!™�”ì|\–ZÅGS´­�,ñ(*NÊIACbHb8|ˆâÅ[u÷÷b÷ ÷$×3ÀeZ{»·u®T$�3=Ý=ýÝ þñE´Œž~ùåñ¥„Ñ&öËT4ÿë?Zbà‡™+ν »¯WÓ7â‹Ò£«pž®e¬Úâ,˜‰çGÏŽ:Ï�ž+ú¾/Æ%c•¨øN¹áŸ{3$ÊYàªX Î/¯OÅùÙÅõÏðÿÁðâj(ú¯ÇÃáÛáÅ×/Ó4Jz‡‡ëõº;Ó}<¸; W‡¾ZHÿ>yÈ•J"9SŒa÷ëÙ* ¼ùæ×~ýzªæ O<~b(«ÍT’Š™/“DÌÃX,e€àâÍd2±þÜ•©ìjìGqxç¹*¶)9MÒXÎR/ Dx-üp*}q'cON}Xé{·J×fE€™ËVJkð»0vGp› R€Âø!X+äG,Tf‹%rC&·»iÌ©9¾ê_ŸO<Ð�‡¯Î~FI[G�?'aP°«˜.c´ìw2‹½(E΂ˆLÃ0EY¸ ùm‚D$xÙ؆û.X¦Góp92º` Ç¿8WƒñÙhRÜÁ“ƒDꇋ›q<®ÑÖÏѫݢĔž&Þ"È¢Ò#t~w2Uæaé~FZÌr+ E-VQ£tO7,s"ÄÝ:²4QQL§ˆ§ ¡dÐfÁÒ5Ú”œ¥)ºVs¾LŽE�ÁÇYªdtÝÝŸËpw'5Ÿ£¶Ü)GÓwB‡ØH¾Sº­ß Ët³xkH>˜?ÇéAôÇô„m´§M,þOÁv4mëØKÙl±m0aª8C$=R1cÜ¥&l3d�¬a%*jzÿ†Fx²DYÏ JÆÞ3ͧŒ.D9`†Úì)Iü^ÚùX@(,H€èˆ„6Îfiïs I~íUx‰\IÃÊ훸"䊭"u¤U¨†ÿ0`"€k[¾ àEI5Àô}"dŸ âð´ G$Yù«†eS5G;”1&°),DÊߣ‰QÑtâöŽ«0.u eŠ`mƒ4ÙçÆj)Ê¥Â&k†·Þ~÷2ã¥%¦@$²mý^ æ°>)›n _ªªDRIc!fðçsOùîß[yéç�çBqÊ@B0—Û貯S³ n@ )nXKÿ–ƒÔ§Î«³sˆáF¼�Ø/]E&E"�•*0{ëÅqRò“ô3ÅÆBŰ<\šy!Š™ò(bøïÿORÎtÒQ:>X)‚Å�Mg•q‚Âê›�¬á6ŒIÀR€Èø ï.d è Ã÷ 9YÉ_�Î/û§Î¨?ž\9˜9˜”ëÙÑóo>vËÈu´bLYÈEœlמdÓÎÞ©uÕFÝ)D�ÀŒ1§°gëâéÒÕ}žÄê«ç0”>%`tñtprëEQI–„�B–q“¿™*J¤÷sªU>5ÎÕb•ÙdÜ)yH;ü'ù§¯ªóÂV$y>“À"Õ}±fÉ39…h†�¿±"0Óm�Ý�yI«beÐ5U5<ÏE0=rtzt‚‘y¢l²&àøÓÔWnG¡ž‚­Þ !¾F¨Y:°µRRÊ·ÀÏĶ‘‚* jŽHK[ê*°RâΓàõ§Ù¢×>¸ù‰C<,Ž_¨ Î†Öz^‹4‡ã»ç;¨uóä¾´ñµbËO‹¦VÔi1%æ~f?ø¯ì¤«àÓÚÝ$2ð¯êY+ÛñãÚýÚ)?VÝ7¸¼üñlX»“|œlû°êvÒ�–)EDÙÔA�g«¯ãä�T3g%_‡cÅDfþ—A:À¸ðŸ¢%~‡pÿðk%³¤Q+™ü™U¾Rt„AaŸ0Ê Ï…QæK,êµT»Áx›rxßY¯×…NûÉP¼ Þ�ë, Å(|zH+¨°ŒA| Ö ¶ üY‘f~EÝ£?:kµ«XSV‡^‘ MqyÆ™„Ì?oEѳ««Ï|mÓØsJ‡] a €À…º˜§¹"ʈ¬Ãøƒ±*�KñûëLÆnÒ£ß;âг ©åºhʻгç†`ÚTÇ”a‘cå¬P>átm?5¸ê=‘_ÑoI6ÇêÐŒcl‘n"�ìHg°†É` ú™xûÒ|úÊr¯ŒoÎ[ˆu0~…pÇäE$V›ÆÚ̎௻GÝçï™ð:É&Ѫ±w{P.àƒJ+Zô¾\ ÿM´Pg^<¼—ô@íêRÕ¾ Ul�¬[Ö ]®;xŠRo¬—ºÏ檦h7ÈótµÅsAŠütå­”!üYúáZÅMHg¼ IðÞ!.´ž Çg+/Aæé”j@`G07&±‚ *`»aÛKo`Ê\˜Àw£n߇» $y^é»Jºhtp"ަ!q¶ž`}S”a»Ñ4)¹âäZ ²Þ›$U+úµ‹@™Ìm(‚8Ã�Mˆ^ýy¯W×}hi« FOR¸>KÄå³[p.c-ˆìk«Gñý”¢wJÄúÆ $ ðL’e÷¦̱6ew”Y ¤³¥D ¯b^úùÑçr3 HK<0+Ò!‚l5eTRÅáLÕu»ƒ0�e0[2œ©MÆŽh‰ð€ê(°B˜¦I\Cêdaõ[$>ä+‘LR4,"qÓFâï‡(£ùŸ;åâ"LUíº‚o»ßµÚ‡”û¸‹}³é{�F¥””"Ú)mê(޵ ƒimºTF Kx� Éëk‰£Ë g�æT³ƒZ–d­±ÚÆXµ‡«Ä œáô€ l($XÆ\‘2ÚtÚÄÒ¶øî­‰´‚Ó‘“mrå˱ù¹¢ií4Ž}ëóRäu’/@ØèÒ‰ê¾\¢pŠ)›øý/”ÙRôüþ7mˆ)P6rÎö4�”Ê(Š�´ÞªÍ!åÌv�[u7ŠR` 1 3j!°ã4}Òß0RØñQ[Ãq³\/JÍX˜ÙƒÄ”^.Æ5¡#£v·È� “Ú0ur‰îI{§žÐö®ƒk'Þ*щ¢ÖV:ÔeD£Ã¼"Ÿ¥¾ê¸D$!�ªÜC,7$Xòmƒ¬ûèŒñ×4 ŽŠÚþ%î†�ù@��Gàõ°ò'ûɸÕçJR…Ú¾t¾+Öcä @¶\·L±$DMGÔlp¤á¼ÜXå†*ÝÅV®Ï °‰‰,.w"�ÙîørÄÅ·Tʶ „å|Ÿ!a¥cI�šT4U©Bîh±’!zJ•n?Wÿ‘³ƒÀ±© RmZRZ¯•޽B¹úLÏ(öQ»º¬Üÿm•ÎÛQ³@ëplEûœê£ h‰íjÁ»´Â–)Á“ìP}À.7P”·ÝaÎ[ó¦€~ÓfSaIJG‹Í¬'Áµ'x« âpÓÜàj 9%ìr“÷hT)ÑV–{«7Š.±€‚ çèûòÌã8Ðv� ./%c¹ÆHÎbRKwf̓/›-6ö¹0cÏ»6y¯Œãgv2MåìVÅ´qèûœe�B«²1Ú˜VYW±ªÅL­ieG¶µöžuëˆá˜jZ±³°ºÖYçPhHkP>|À’æÏù£bå_ð»½æí§1\ÛØX·Z3/ËÃ);=V,ñÞW¾똥2ÉŠFi±pN£"8ÖK?¹2b¼q¾54h¤�³xu×ÍÐÊ'2$05úˆô¯IX· lJC$úŒr·v½gZKÝEûq/‡·Ky*,eê’9[ÏÕ‡e¿zÀÞ2¿”ÉkÃ�½™Q+:åɤÿ7²ƒîGn«“žÒó}ħÌÖDùåÚŸ!µÄ£F{I/}œØè½{ËŒ^¿¯ÀðòGˆŒž´ª“šêGûŽF{O�©0ôai)�þQX¼ù$VÔÉ psç *—}ûõ+ë,FƒX—[Ò˵xì|o‚{ôôˆ8o‚ÉÏ\F]>»sÆE9Ý8슋Y‰ ²•Š¥yC·4™^?Ö5;8ÀÃ< ‹¬m1¸%õ6±G„"º»'„óÕåf¢îPå¸<¼,]z�©ãeªG„ÙN±uYuìÜy[d~ê®KO:Ú÷eOh?P™F’KÔQ9¥â¤”ðÑÌDí”T>ÆÍõ=ãmr\|ˆ¢@àtI o¤<Ãu¬5ŒN)áÕ…„üá¶x 9MÐÌÛFƪ?V×Õ#r{Í"j3=þË5½XýÐtyŽKïN1¬;Û7Ï -ûe´ôÓs ��g$*VªõÅ[ŠUZò¾��ScWêjqâ¯`Añ[±�æÁÀJÑSòÐ8�™î²ð8¼¨ÿ §ß—«•á0ö ��¬¾ôj/~áJ Y�MSžߣ³[Ë&~¿ïìéc.«x´Ã3 jK|£7˜Š{…µÖŒ¿á,®/D¥ÒÉ×|¤éáÃCqE¯®Žº{�íN8=à/Ú¡26}{B($‡©Í¸‰Õûåq.n¸ /æJ;îqæ{8¥«¿ËÉžxð>ßõÇg¯{ …2ñ¦Ù ÿ‰}¼® ÆY]¤Ól+I‰ÿ:jAÊ#öÏ€ÕuŸñVi rqÀvn¸º+à³Ã_27Ú'FðUÿÊ®¤M¿Ñí¤%<® !eº‹8ÂÜþ*Kê¿_ûWÚÊ%Q¢¾@Tjb ?hŘé.MìˆbX+‹+Uœ¤b>ÿ¡(a¸"œA3asÍþ@Ô·ifÀºÚ»wV›I³‘þ,™_¾zJÆ-Öèø ®*.ÂÄAÊÕ>XÙ ‡s@É(~}Ž 0Fa‘’ez•—³9L¡3dò—yžÍä”É'Y9CØPCC#$ —˜;_ò8;/9ÊJâ,׽ϲ)] gÙ„R=ÑŸIÇhÞ¸oC?|fsK?ŸäfŽc—`C¡Çã"rÓìô”ßôðñTÊG5QJÃXM›•7Ž}þ�ä&¯|ûÞ1f‰Ã[57kîiÂí‡Úóöž×8Øì:GN·°+_Çû[�yÁhk_c P " *|ø]³|sû¿Í¤Á'•DI˜9Á~ýÕPNúæÑ‘E›™´úà¿áÙ}�„Nñ²à“”’F&ãð©eãoT’‰®’PsI)»iÆ—ÉÉâ1ðOk ;#ø9Ì�ÔÀXš%ç‰9¨f›Ô/™ÄÆé ‰ìT¨‡§ß/Ã)ůâPÉ'”d×ázͦ»½Mo'}0”¸C¢†…œž‘¦áù¹y‡´Wná÷ÍŠL‰bbô…´œ�ÿEŽËPêžša–Åu¥€Ž×¢R§rî@jÄÍbDß'ºÂ=m·€ó„©-+œö°Ÿ]¦ù„=Kh~j©Ë]ÊB̵GÅevY\QzÓŽÇ™“O]ÍÒ™/+„î:DMb‰CôxAV^&(0Ì•î~ØJ6lþ§Š´—´OÄaiü¸‰e~'H3"(û súBÎPðNiÔ6³T{°—ì­6�AïÙÙ>Ôª7¡vWô2“fôfý à“äö›�Ûƒ¤G9ïÚbÓM¹@Χ…Qç’]‡U[WÁ{•FV;:A†Nj«µïP‚Õy6™“[ìÚuC€@ˆ»#ã,:È8‰‚¦4O"¢+R¦I’6$1™áZfʈƒ¶s5i=Yë™_œý"ý%Œ;·°8À¬]í¾OÇ�@o\ ×]ºû‚£Táà4è€ÇÇйŸycȶÎ[ã-M†¶ûg¨vÊ+)ˆ'FaÆð,¯Y…„â>è ã•óÖ„WuSº1ƒfn Zë»wÔ˜Í-üwZ?ÊÐ�µ“dNûÁš�ð�9A®ò |s³ûº §$–øîf=_¤`T¨@“­�a*H ÕKPVbÀ‚-˜ƒ$ÝZ.Ü„SKAé"ÐØ`Ï*vŸ.ÄåqnΡò‹1ÓdN«5{S?!twéM#b„¡iŒ0 ± �Î(˜ìX†b†ló1œ¬èÏ\ X 1§¹…yH/rÊŽhŠæ…¤aˆŒú1I&uŒ¿¹ÉTÍ¢ø‰mo54NY]Ç “ŒÍ#¼ùôÆ)aÿVÄ ÙÓ�#áA_Ú㤸Ì8Zí 7Å�Ñ�°y#­Ù°ä.K•5­ÚLH5lƒ,yëIççòËHLâ ³nÂé™DÇüƒíÏ© §È&ŸˆnÎg{Ñ>”–Û5úäF:}Ó„ð�ÓÌÓ¦Q-˜¿�Kk¶dó|±k=�µR5¦¡ë·À–Æ•}ÝÀ¥Õ}ÕjTÙgN ÀoU_?@Ê>Ò¡îCjÏõ1iöº>‡ò”\2Èt ¼ÎP(’Éž¸Q«n¶DíÎÖ¸ |qGq"†6°ßæ—… ?êØ�äÁ¦lì¾ßbU‚ôu†¯q§žPÁqÀ=Âø›|÷ÇiÉÞÛƒ'`s„¤©&óÅ´,È n�‘Ø×ÖØ�ÅJ ÷á�í¾U> pm—Ù#C€tzŠNÝX9^™é-¾¬-¡ñ†×WƒzåîæÂG[äXz$1»)�êó;Å î€êºfr%å ýoÊ/VÕ«}š·æîÝš–@ÏD7  bš¿½6¸»¦c:ËÊý¸¨+›±¢‹,7•/ÇÝWŸ’~Ë8g#ÚÙÑ€’¼ŒÛæ­F!Òþ´ç£¤™÷ÊTêS]™$úòe[¯<îy×-úëìâ¯<-ˆ�Îi­…w¼AŠý…½R*šÛg†Ïî…£áv}^Kâ-[�ybdÕ}Sàx·ý'û´È'Œp›Æl5Wx™‚º¡rV’ÒÙž7Ÿ©­ô¹1��èÊLŠÉ°¹:7´o`B¯ÌËé§n’ËÆá��&n�éH”op0FQ I©-˜6jÜç8ÕÚrô*¶]Íq€S•�l6D?Uv^«°›^å猗êR›VÊ¢˜™kæÑ!>¸q¤»wt´¶¶f-Ãdz®ašÇÃÃå—î“ý5’ÚÒžøü”%0ÿm«Vµ`N�Ö¹Ñjî&ðf LÄÄ$¶–],;çŠÉlœº±­¬©¯Š«ÇÔ´ý,¹çµ\¨ÏÙt¤#ýs×—ÛuÉðúüm§U_¼ïºY5Ç ]YéM¤% ò\˲tìŒ.5¢êÄàËp%ò¨àmZ·˜ztc᤟pŸ�ûú²<Íʬ6nÐÛ®#^Üå¶n@î•pø&±ÈµÙ&ÙXšÉ s¿k¶bzáÐ-Ë[ñйx–¢Q×ßÄï]¯8l¡"Ø'nr×n—|Õ“ÁòË�[޺ţ=¡Š!¡ª._'R±d}»B«Ú3¯n(6=3Ù{Œ>Õ‘ßM 2¿o�çÛáCÆÜÛÖÅÎÂvâ{ðõ¼,©õ˜‚I“tWå`D_ÀxOÑ@æt¢ÛnMBÃçø¢8Õ"Ãjvø”åm‘«(d°Ž§£ô#ÿy¼.DWONúryY�û!ÍÄ0»7/’�2aFaif+ÀÛi�â:¡£e‘£ Ž4þºÍ�ÉvU'9õZÑjìÂ’mUѱóΔ15³#±ÊMOD(¯ÿVÒûúmÿÁ&ybƒ ˆÞ×TÝóÍúÃ{•°)W¾F]͈9e×v‹r¡�H£jíq^Î*Óó &˜†3Ôt|ßüƒÑè%ÀŒp’³úàÖš¶�?:8a©H;§×(oPS¾¼s‚õ/©W³jûFm›ræÇ°4¥…Ï�Ãw÷n•<µÜ)#ðâ_LrÝþ¦CÒ“RZw¦Ý}‚üø‚¬*cø?âSïk7gRÍ.ü'Ÿ~Ÿj‰¦¿wưN\Á¿ëŠÅ¢{7‹§Êù‘T^[ Òr“ ›§x7 C–ðý_åçv…8$õÜ¢9u4ÿ2á¢4@<ö>Ñ´¼àµÐs’O¬þå)¼¾W¤ž«i0ÄGy£±ÅGÞ¬ƒ;Âagˆ¶àÒhÞN£Ö…!ùWùlœ Qµ yX sw¾ûVAIÝIÁ>ú+Ô22•`-mun)â)ª­™¸OÝ(Såµühû§�ÝWÄqFó+‡Ûç„ıèÀ"Ðsñÿ9»Žåj†t–�±ÍO>P%�~ݶ%rÄ –‘›ho^oÈ”Í<Þ%N¤&ÃÊõܪРþ<|d¤fqÙ‹œ9 ·C0ž›$GØÙ‡\øjË‚ ·ç¾p¹ÑqN›Tù” ëñõÞž¡£GÛ;°" Kpfèâ@rnÏ.mê�Ç*¼êÜ­£Îÿù¯ÿöÉ="1P*˜TÙÐh z#(�6ÙÁ‚ÕÀãL!-%©­þº¢†ÿþ»Ùø«(7Á0>G¹á?i7Þçn®Ý0‰}aí&ÿÿ£Þ0Ê‚®â*Ô'B[´�¨bã½Õo¼çŸ§ÿƒUBÁ õŒBdê„æ(T ×+û†äNË!©…qŽ…gXÐ)â�30\¢'&À67Ámi°ËÓOaˆ`Á:Ñ xÝúí$» ¹$j ¼ªMÖ'Ðn0¢à€|âm·Ý¡hP‘cÛbïãkߣ»�r¼àxŒeÈ[F墦ÙÍ?‰6p²ÆJ(I⣡ÇÙQ€`Ÿ+Úí"þën;á�ºE?#ˆŠ·²<×ò¥­ø›q”>ZX0p·ÊA~ à‡i�4´qúã;oè1¥}ÎÈŠƒ~-¬oº�zþ÷l]VW‹¾áP94„DÆ�*mÐ[‡GÉkd•º«eæ]Lé°ÜÀ’˜Dà[°·L˜Ê U¡¿'ªf•,jÎîßZûÎéÊw‹Œ8gÖ¾.Çü3�ÔÈ8KÓUTÓU �šiË2 ¢†ã9ßÈw>&˜]´Û@( ›‡ØÅÓÃÕs\œG¿Vƒb‰�Â`«›R>CÀëàƒmVÇBpý»b¾dÝG`¤ä†ä…d-›nÈ…ÄÔ_^®:i/:Gœ:Á\,è¡ÊÓ"ÅøÄÞ7;¶ß¼†´!‡} b‰ÝNúþ&¬ª�'^(+4ÐAA~ðæŸknâØÃ°%.íFåéÔæŒÙê"•’sp^^åðL5±ñA$yŒÑ$°/âøùš·ÙÏÞÁ½pG;¼¡»7Ýñzø¢Õ!1]•Í)�­Ž”!Œ5ð)�·Œ %jÌ?œåäÈ妸=.úd'FÉ…óÁ1Á0p}ïÅôR`v“dÝY$Rrž—‚ϰx+„-Z2DPÃTÌŸ.ú(æ�·w4Ö:Õñ|™ŸEÃ`0Rß劖u¸Z�«~6æŽYx™Á tƒä.åel„´æy4iu F:�««ŸgöR²Lu¡Ê‘Ôhøèåks)�8iÍ—¾ýŽÕݨ“v©/„ÎZdñ‘„ hh¶l胤Ï[¼JŸÝ´¿›ç!L�ïé¯G(PÇŠ»WÏ4z¦áöU¾˜Zp5à·E!ˆ¹{›[¹&uó�´î€ü ¢¤ÝÁB„ÀxQ�VÊ“‰=£­)!ß VXhÕAø¸K Ó¢­¥çPôsÃËtìÀ® d” 5‹Û¢bT=¢%sö€>¡ÎJGÞP¼Ä —Þ2]Sßn„Èõˆ–î‘,vºüuåY¹wž ’r²ä4Øåáñ|6œO¤N±–d¹L+þ,w$æ#?1å,åËŸ…+"³÷š¯Ç=t”õä>E¬ØHò­xS�„_t2ú‚B{ñšE½Än"¶Ë_�­0#¦oA5×Ï}ïCί¡ÏÕ«)]d½Ë „næT{U Ee7r*M8ŸŒ‰„R©oG&˜0œÏžMŒÈ>œœµŒE ÃE·Ü$a”h«Ï²Äèõ¡vØ™ÙPã[��i}è,¿”–eÚÇÙ8?Æ=ªÈ„žÃ’Å×—¦÷Ù ¶8€@ê\‚‹r»²Š�®[!wÍlé8#2Í©>à4²ô6A@b·wÆ`4²’3/Ñ×¹4­'§”ß{R ¬«QË%ö¸(ff[RIF¦©[a2U1£d_¬lÍ-sÜH}®!êsyD€Y¡h2zª—Í"!ÂéÙòAª™#/›œÂʺ¤Ðt¾»~v t@dæ±½÷¬UšÖiΞGuG‰auÞ[ùJ”8k�<;/QĈ¼`ó*¨V5Û§'ÿN’ù�iy€}ÇùnAa9¬úÐê­ë�ËfïP†÷hD³:—œNëw~ÆŒ øðúƒ7úa ¨¶A´3ø _‰H† ùSª‘!­€ÿ™¾e€7&9M÷¹3áDEN…ffr=eƬiÈ«gÞ‡ŸÑwmkÒεÕö1õwñÈ ƒº¯mw°Œlq dd '†P†ªÚL*jžW쑪²Ë”ê.«ðÐBJØ‚®fšˆúÂøÈx´šT-6§ü1n…ÞšÿáÝuV-›\«àÉH¢‘-ÉÛw¥•=ÙLhÎd 3dÑRÜ9 gh‹L½=x}‹‹ &R<ÇS ôû€m¶�/J-õÞ²ï8–lÝ“€­ã >‰�k~ÓœÌiQÇNi FÞÒIcèu�t5$c÷E<&5Èkùq¡€ ÏéÓeÎéO;Ôí?Û{5ÚÝ~±“À^šŸY@U±ƾ0í"#’Ìâ¡{ãÀv7IÝÍ»ècEd4®âëtÛN/ëñoÞ�x½7Xð-4ƹ | ®6(/Ñ/Ó*C¢72¢… 1úù¾µà}-Â�¬qïô'„ýÚôb*>h¹vm[àMr‹å •¬æuú׺}-y½ÿœÂ((¯”öóCv,tÅ1nm  N²)冺�æõ¡¹CéµÖ5–Éñ²Ó¶Ð�áV¡ù¬v˜¤eÍ—•Œp&ÜÙ5­L\¶Þ­Õ ÍZYô`夛œ%M–!ìf›*Ù~x°·ýê©[‚&‰MÒç�Óì,Ÿd§†H¤×ãHéVQ Õ•zo,à!ÿ­¥ù¨üò¿äs‘Ç úµ†3YÛø¦Æ0Ö†ÃÃæ:žò©(U±F£+$ƒéµ‡ÅYk(_E™»I¥·#r\ï ýLûý0›»ÍP"4‰Á`"I' òª|‚Bd/Sá%/­GpÉKÅÅ5½½®’Î�Ñåèä$›Ò*�ˆP�bðš¿Vó3rž3Ôo*HœÖÊ€ºŠeý%x‡‚5(HîC:è…êl—êùÅP_˜�h#—aÒVfªE‡H@ÄËý.ä½³ûjÿ?F<Ž`�|¦Ã€Öäð ëÂ�-)~ +?¬œÇñ4ôŒœÐ*alþ•C¸‡^ýT�É¡sÚhíUíNIl%àØÕTÖ ¸ø?_/•.öç(ÚCKIì„ ,\i³ÓQ{?qbÕ7pÜ€4éJßáH¯î…ß«ñÔˆf¸+rº°ÉXZ¬Ë{››SªòçJÅ“1˜l8•oŠ„¶s‘œ–YH7ÐGb†"©˜à,βiÎ˯q?.Šé&¼t„Êæ\rÑH ÷ŸqL á¡ýãÔÃp)W?U•T"ÙÛ@m+Àæ¾°¾±1VrÕlm^À¶œ`àôt‘xþ¬·ï[V­ï¥ÍCü¼xȃoÄE^žƒëÚòB³Jµ/Ó1]ܸ6c>¶…#+ÂÊ}Xa^%(A¤äí¯ßò£¯o»%é’*ʳ§u�×O»ÓUû¼)kPˆ/‰ŠI6$¯¬­!i¤My­Þz²HËŠDëŠá´–ší¼s×ýÚÄIÒצþÛ¢ù7÷XÐËÑ„Š1ïóé³ò¸ ûÏ9„Q_øÛÿ`[ŸMã �Å+–ªûj+‰uZ¿Š·-–ú2ûO¸ü�P¿â©rž�«}ý“�´™Ù" É'ü¿ G ™ÍÞ‰X†3Ë4ÏÅÇ'=³ñe3Çé9{S¨c†˜ÒÉû¤˜âÀÜé/äƒ;>õ?°¹™Oò™$‡û(wÔ9l_b§åH,¾%ÅDì˜N¯ ¸N7IQZ&TéqJ@ë¾–sç‘ T]˜�,ö *Ñ?:ciäºÇ¬~’N)º¯rË¥¤ª6âE€K8ÄuÜv·Ô¥“m=µoFèÍxsC­joVýˆ¹CÅ…†¯¯‚ìÞ:í8©ñ[otoû‡Ã;úvõÍ´IçUZŠ8èVSeÅ9à–_9¼wä™ £PÊxÇ_�@ƒV+™<=´o$¾®­ËnûíÑGÇ×\Úaqëˆ=¦þQqL<ÎïtN|³•Ô¿Ö6`ßdŠWÃÎU»ý-ðêò`úö ÌaZ¼ÝÌ[IzjsoA µ.$5ã€4çÀéžb¸.:ÛÆjÅû¾ß2•Z§Í‹V­…é–͌˴´ÐgK5fÎ]¢©ÈÄ ”Q•¥%±Ä ±»Ý2¶˜·Oá«nñ6ÑTÂÊã�Dæ!##ŸÍ­b¯Q–Æ*}€nFdÈÚ”€ „С:€”£ ò�?Äf¶2V�^�U¯Š„TúDßà++öàT—\BÌ)úÅÆ´«7P†kÁ•7Ò*¤‘¤3}õvíÛ7¾êIf�tu¿í�EîSî$âw{ëý@¹gô(%ߥdÕñ­Z\¯ R5c%ßF¿>;8;�­ºö•Ãï8•eÁ�Í»¢™:Usm2½˜kÓÈþ�®p;°yø‚Çñ"�’ ©^Gëµ`�Ú `Ãl?ÐÒBê›�árXè[¶œƒÑÆjI$Ž QŽqœV|�Ýb¥¯ª‹)"=©»]EBùŠFG3gÙˆ5ŠdŒÄ¯Tä�¢ÝqŸbÆP³QjdÅPîCgB`¾tâh?ÿ^ôa:’¾G¥(£Æñet·žpJ ƒEz£àoºU%JÉdÖ;§áÂG›—fœ0óà’Î1mkZƒ�·9å�#§*‚æÏ« ±U÷ÙŠ(=ÛRX±tš�ôK:øø«ë´e!¶ïTÈÌÆp™N§6d=&d¦D'J–}ç»ï|‚‰zgVÜÑ<ðó½.sñÉé<¼iÈ ËÎÂõo'a{¨ÏÁO}þòõ¶“Äúõ-¡n˜Ögí­�4òú¼A¸•w¶|e¬lÞ¾ùÇÈ¢�|„ Â•å/ó÷(j0@Í8”|Ì%ËN!i\‹¼Nc³¯½ÛºÞ ,ó ŸR/·/àßÉIÚÙ¾nasWtʬæ’�o×¾ ��•�á:ùDïù4i4ÚÈÅ‚ú� –IˆœtFΑ* ¤×´–OHÀ•|�«ß¤®7,áÂ�ܬèvAÁ=�3 È1c«|†>�›%“=µg”º,ÇRJƒB×Ë4Ç™*wÐÖó"ä`Á+)­ÑstÙÔNÁFÅôTÒ›LaŠªþ�®ú†,Ý¿àÊLáã9sòª£Jºu\y$›\åe1ÑL%fMâhí¯ŸèÈI+Þ{ºgÎÿç#Ž¿ .EÎtÈxðÔƒWÇcs_�W—˜´¸æ·:³Ý 6·3h³ö-ÞH¦|ÕOA”tš—”w9² "}Ž¡ep!GX+ E?¹…úíÖo·þPKÒV1]—ïŽ ói3imunify-security/inc/App/Defender/ValueResolver.phpUT ëÆ«jëÆ«jux è‡Í=ÛvÛF’ÏÖWt<ž�Ì�”¬$>»TœŒ"Ë—�,{$9™=²†‰&‰`Р.™øœÝØÛ_Ø/Ùº5и‘²Ç{É9I$]]]]÷ªn}÷C²H¶¶¿újK}¥âä. æ‹Luÿóß{ê ŒW¾: ¢Õ­z±œ¼T_–�ƳìÆKu_½Š¦jwçñÎ`wg÷[µ†ê¡u¢�N¯µÀþQ0ՑѾZE¾NÕÁÑ›wÏÔÑ«ãw†ÿŸªý'‡‡¯�ÏðûE–%f´½}ss3œâÌ!N<œÆËíPϽp>ÚÞÚŠ¼¥6‰7ÕŒa÷þÕr³»÷ûIòþ™žiœqokke6~õþuìëðýAùAÄÑÞ§ :�WéTÄBZ D^k£¦|á{™V×^¸‚³4^*>øü–©‰‡Š#x”x)þ<µ0.t(´| pBž-4ü›j­RœbE.£º³@‡><ŸëÛ¾20óÀ Cø)ˆæ¡Vô¶×G`“Ô›^él�xÙf¹æÂé«w'¯”¯§±Cú ¦T†¦ü(žMðÜbôG€ o¾î whc¦¡gŒú—)ËOÕß·¶ IÀ€ç¯ŽO•YMF‡zšÅ).ÇËx%×°®¨@dâô:HSþP- ,sA”ðÕäNÍuö<ªœ®&4m··Hß©¾NK3¬Ôn L­€mgqª4 y¯h;Šyeuß Ãêò‡×€ÍR Âù>ÙÞzÛÛHkŸ¾ûq|zxtxpöæäT=U^šzw]ÕÁ�ìôUgÈÚŸ³»„þã3eôpãžtToÏ!ÜQ|誀 F„2Ò‚‰jo6зì'1‚¯“lQ,âU¤z5E¦ ŒzuJƒãD§°ã×”#z\ O|•ét �4™w¥  2x €./—Þí8ˆ’U6Ž€f@ŒqT //•¾�jíõx÷ ð]Ì|íë™· 3µˆMF�ºO¾ésákØ®…—ú:"1Ђ ,C‘Ò³lŸ â? Õ™E“Ø•`éÛÀ€æ±dÁ9Œò&1²ð31¾™…1|ã~§n€K4¯- ÆÀLÝNµŠRíùÞd×eÄ2;ê¿þí?x­ŠÉŸz!àN nâá,ô2ØV+�p9Èâ—�Søñ Á#&O¾VD=£Þ¾|«¼éàÁ ˜RL &àØÈž�ËìDYgî??;|{örüüèÍ›`N@Åe²wIòiLv¯•ó:ÕÓ(2C PìærȘ̻E aÑ‘ f@JÚ £3æ3˜bbV©¿ŽÓ†D-Pq@`˜ PÙxêјQÎ@A °;Þ°H{)Ë€¯u²ÇúD!nŽð¡‹¥À¤!ìý`¹Ê@uûÊÂWsàÎ¥‡Šã&ÅÕ€tL4Ð�7õ—ýç*]E¦gQÌV),‹à €Ça<¦^huótá<غ¸�ö@ûBH égÙöƒÃW`z_àÆïì~³I½D«åƳ‚DqNãUj�Ó3�¹ |W„-8JÖã42dVˆ®°é`ôà§ðŽ@MôÔCãKFî&V3/Áô€HAE†w#dÖ1¹ä™,N@^ЦEÓB½ _Ma]™|%¸#—Æ«Œ]ÄÆOñ­¬Ñ ’†ÉˆÅÖÔ£ÄF ,3g¢:¯’0ö|Ê–\ÔÝÝAÓ$RÛ)¾ röŽSŸi»ôæ + k,àVQH¬0Ÿ˜y쯦úä…ƒ7ïŽÏr°ûí—Äj7ø,1 Wá˜�ƒ›T3›'9©µ nµ~�Ë(]¶œF!4´Œ $pfA:S{Ó°+>€Ê6ž ?ì[Ú1@0ðAtÊ–€Ÿ¢:ÞÀJÔ©Är`[yçzzE…]+Š ­¢!ø9”E¦\ªÜ¹S�Š¥ÓÄùo Öy)H5t�X?O©Giþ£}OþZ¥?¦š¡uPݘ-³Ô†ÍMÀ†S5[EVñ&ä ™n#úý|ê›øh€îª/œ/ß/<ƒ©öŸ£ëhÀ:òÇ\4Áç‚G€�<öi =<À_>�>âÏÏ;ü¤sA¯e­O è=rÙ¾xê $—vLoçÂ"÷ˆ~ÿÙ‚y„Â7øž\EøšŸÿxw‚us2ô•àÕo…Nˆ´a"5{o9*Îj q¶õ�üý[øüh}»g´æñµüVZI¯ß>îÁN„®M¼$�Û²c‹µ=­Q¦ùòK»ŠÀäš”#Ÿ®¥ŸÊ™¤…|C räÑ?Ø•w¡í•ñ«„\£(ÂX¢à÷ÏF£Àpx æêÚ%98¢ 7o-Ûò(úˆÇtë”`ÂÙÒ?v0/«•”æÌœ¿šXpë–xrø§w‡§gc ÏÜ…6SÚ%ñ3 æ´ÿ. º®ÈWgÜÈÐ9I'ã¾DÁRÔ*5 5ÑUDà_‚lA€D(Êô²[V`ì‚lð ÌP¬¼no‹¿FÅ 1 @í®�Ú—,ˆµb6þÌç$[oÁ€ó ­‹Ø–‘‹¶ÆOV È)Ü)l-ºßèB`”a¡ä¾Æ`'½Dç�½õÌPý.-Z9Æ�¾åІ¡,µ&9Šå=/ã^X["4“XW°³ñMÄ‹½ñ«¾…sŽzœ�9ZăövÿäÅé°¢wî'§�[ž•� 0~�ßù·‘ª|T(.ÜS@ 1ï¿–­ãdÇ$ÍØ Æn^x^‡J­“D¼Òw”gÁ§sˆCiø,Â4gh-PmMδ r)fÒ²"ë¼t޶Ð8f³t•Z_(½L²œFU-2Ë(ep4Ì”«ŸkGáÓœ5~�?8~à �ñÂ…UÈÝK« «–t•õeNWI£Cl“Myì=2A!/¹‚ª«‡óaŸ6rD®Ó9lÍEoXx¦œë"çyd°§.p³�y¤(ó!„d©Ç»;ƒmž 5ÿ®æ 5¸eö[žGåÊD½mZ=S*ßJ1%¸ß§¤4º½º¯Çêä7šà;þ¥ÏÎó÷¿‘šzîìRŸË`T9Ø­Íܬ‰u,{‰kvʘj߈=¤Oßâùu†á‡Öw#Z"ÁL½›çvæ:Lx;Î-² Ð}a¡8s€~Sݪ˜bZ±YþF¤~*nÓÂZ +IgVK53ãR'Z˜°\Cˆ]<&î~AË¥ùú”½ìÌMb9‰T�gƒ7ÆeK#ÅIN1S4º¶ �±�õ&Ü[J’cœ Àœº„[e}p./YVFèÂ^^¯-©ìŠŒzy‰žÐå%H¤TÉÜC«ÑIåJ•Õ¦ðIÒÅ×"QïÊT——½<×ïѪØŒP¹Bp’ì?ÕÇõRÞ㆛ENζQ™éUJ—Ä7XÔ¬B3 UdnX0È¿Q[ya0»cKÄÉé»0]ÁL€tA½¥‡Ô+™ÅÌx[€ h­ B*FT�¢}&BÐ’éIcÔ‚æPíG¹õG�¬ òÃhb4dMu—Qi§ª—Ñ)YÝ[œï\ÀÚ¨†‡£ÿ¶ 4šJ\@‰I7•'ÜhÊúŸ-”šÄq¨ÎR0Õ äTó- ŠJI”L%t¢”AUÓ‡e´%|â9š‚¢"­˜1«ýB[¨ß~S�Nƒ’µ@Ôjt9EðqW#œ�u4ŠLA�kÝ$àt_~¹Ö‘O‚(O÷Ô¿é > ½}ñ%ï³N…ºr�öž…°â[VLö­²L¼ »îôÄŒr9¸™˜{ˆú9Ê|½ˆoÄõàêÞ lkJêXšu^ž½>bŽŽg6+H8!ÈNæA|ë&p)Tr¡¸ºˆªË« ô¤õ|Àȋ옖~·êÑ‚Êë–Ó tHíö À¼á>SJŒÆù'L £çKI»F]ô°“ÄmÂE0R¢ÈSÛ„ª(hn¬ù?Ñ @ð,1Ë‘‚,S2€žhXL³m7h‡AlTŸ=9bu‚“?-§D  å÷8éᾇ=zd×n}‚bN\}iÕŠ¡ã¹)Xôí ë”»‡À¡ÒUg'ûÜy0OãUÂRè®J®‚Ä0 §D (©Q8aÇ^ïÿ8ÿðèÙøèðø¶²¼9ÿx²ðÓáÙP¤n€ú*Ø™§Fc¡h© l=8Ll›S‘ÁÜâÿøÖS¢­¢00òã)HIBùd º”áGõ‚Æ[!˜]‹–!�aê bh& ^¸I‘Ù&l‚· ˆÆ¶½ ™þ!éò‡¨Óâ>0 ZÛCŒx=\h=n� ãdJ1ŠeaÁÖç×8YŸ›±Æ��%šópøfôÑ6r�)ƒ¥WöÙnTx¿V¡¯ÕÂ[’V U̾d®*øR¿:6B$ð «‘j¡s‡…¡ì¢¶é©$Õó1Å‚ TÛïÏÏÿòþüýÅÅÞ_lwúnÌàÚ³gTZ ƒ¥¸pÇq`iµ~î¥Õ[pÜ�Ʀºå…¸Wj)�”¤ä`µ�<3/u%Ln�!nr§³†F|ur¶‘˜Ø¢õë¯çÞÅùäâ|zqî_œë‹óšF˜Áä-l¶ï„îÖv»ùñM´Wt¼aH�H„=`,e(iÒâ6=ÚÌ”ãLýPEž$d¢™T“;�,ÊqFŸY:š@k³¡–êžÑ|ê7Ê[�€KfƒÉÝm5Fy)yÖ·ò@\ã9-ª`NV)E°�¹ ‰4Ê©ƒô-h 쪘DÊ<€âà%K�ÙÛ7§g¥>(\â66´l‡C»`©Ï‘ÑÞ8݃Õµ4Ï©�z d7ŸDǨû yÃá“oúéŸÙÁWAàRh£¸$úx§ç´Pao¬çÈ…ý“N3ABqyùµË¾Ó¤l‚í_>'xL'ÜÚS ÷ÐH€O¡yB²g­Æ#(Ûˆ!,p¯@9aÃŽŽ^gf«ù©_j> ¨M1¥&Ì"!E‹”FíhîòöÀÖ,bÑ ctŤhŒ»Ì†ê”uÈ È$övD^ˆÎŽY-uJË5¶7•9ÙRn R óÈq+–Ô1ÀvUÅ€”É;¶�>y=›ÌÀ¾€Wc[0É$¢�Œ�Ölî%4y!ÊÔFK}±Bô+Øsi“~Eéð”.-ùŒ’µs­i”«éëZIm�¸bsûM�œÎPB«…ŸYœ¥ã·˜�ûp©cÙ›cwå»ìBê2ÇñÅ"W Á˜�"âÍ8�ºÉ°+)Mj‡ŒyÀíÈOnK²BÕe J­wÓ¶ýÁ>c,'b`�Sl®æ,³—Qg{\üLÀ{lX,¸!럻ÿÄ;©×Þm°\-¥\‹¦eZ—–z¨uͧ¥  za4£®8°°¡lœžª.@ïåÓªÓ²-�rü¸ "JBº!^½;•Z `Wµ|G�‹`?s|@$È祥ÒêÚp̦Pgè°ÅC¢pÃo-i[„‡ªˆÕè5¹ŽÔ´ÛEã±P_Z=è÷sŠŽò ·  àÅíÅùÝ}n#¾e~¶Ás�°`QõCØIBNÌ©w¥Ù¿öв²â�Íì\E’²'#¹·1—ÐÉŒwÒÙJC’½Oì@±é:æv^Å”wEsŒx&ÀéÜ/‚šP! ÐjÌžàQ­¾Ý~¼³Ã\�+VÛÍy¯Ø�Jâ¶*¸_÷†�æ6^º¯¬Co;@°À ³G"Fq�˜BAî¢AíV¥‚¨Ëô ä$%z>ÜE‡Ò˜ŒÝþœB‰5çoH ‹gÜÜ.¸�`ó3*lóa®ééN¨UŠ[�k6Õs�á*˜2•ŽnòÈþ â‡xäì-®,$|GàÈh,^–%e~ÞÏÄŸdšÛ÷ïi,3�!½cê´˜—€UШØ�–tPìü¯Ô7õŒ£ÏÉ›\ôi'ÖÖJži¹èyñ~ Þ‘Nç6 1y! ÓKF´w2¹A¯vªò.BÐ5ÏiaúåVÓvºšó õ´Å,7wWb;@)�o[XËPU%íDÆØPwB!(TÙ2sbEò�qÂâL/|Ñ‘cÒ %bªŽ-‰žEÅÁöLŠô>LÉCt]·a’møeÿñd÷àkr` µB“Äx%ªÛŽÉ·Äã£y Åvc 5Q÷ð$`fgAªù4(@‹â)¦`’EœÅCq‰SœâJ9q,ë&™öro Ĉ«d^8Ã�¹„ år‡\flHÑë­)£‹¾îGy«œ:xér·J›‹z–g¤GƒÜLf‰AÎ9ÃlÒt-�éF;‚A9¾E~]±šR¢Àm—’µ4÷åe)!/Eà€Òi`»t[ÔI´ÆK 0}H9kÅrîvêd%%+Zm¬ÑÚZØ�=L¿ �ìlS”4X<òº;áƒ! 3‹ç+ÞhÛEÈ~?¨zƒ•a�'Höd‘P"5€¹HâŒT~G›Òüh4|;4‡Ð·ÒàÀ_¿=ûW·¡�ªôCX—/a=劷�²iánfÈ6Oô%»?£t5XT$A�55<ÝÏFÖUX¹Ž¯íÀ}ï4B¸Ç‘%Ü)õ;Üm2–›¤µb.7Ô*ùqn/9Ò w~Á}4 õ¡è½ì–%rA¶úÑWs3í\Õ3<žªæÈZâ.ÒµÐk�õù¤hÐ"9gM67�ÿ¨ŽkÆ;½ÿé˜RNÞ�¶Ð�ÙäAø“wÿ@Ž6Ú9�’?ãNV¾0fTüž_S>PmÙ¥SÖ �±|ÙÌú±gðIãX{AÍúáüU#„â^›õ0žÃwÒÍö‰=µÄõx±OqfÊ”�¯q–…µ¥G¨Ž<×·h%°·ù˜Xóþ:£窞Kf‰8ÝúªÒ(ÝÂó´:"«N\\9ýš{ÌFumÜ€™÷%t¦ÍÁ«œ5SûN�;{€tA…tÓ“ §ÂR‚ö¥ƒ4?[àÞY^M2>ê¤Vc½–%ì§sÓ-Ïõ± ìëÀP[ú'ÌPjN_7÷›7ÎÐ$!¥ËÖvM �S�€)'ÇÚ+Ý”2“^�ê5Åø¯‘«‹²ØžÍ°c#®§LC«3ÜÆgH‹„¬ÑK/�+ž&6Œ'zÌ‚©ão�—2.®K²u8dÁÅò€nKñš|ŽZg±­¬•iÕ* ë/Lø{aËóYrDBðg Ï™¿¿‘×|!["áˆô•UC«WK÷ÁX}–ï^C×Û¬??Fy~ÄIØÚ¤Æ>I{ÝëvŠÏ­­`RRTŸE70«–>‹&xV }½S Ïò” –çÙ ÛлÑ%Ý©²™ôݺ]®ûvÿK÷6€½wŸ0Éû6¡·]rÖ�7f4`Ë\sÿ†]ŠEJm†¿ûËvwø‡Þö£ßa¥øÜfî«=¼Ê© Û_Yn£àÛ�¼<=ì^ �‘¶ýõD–�‡w„–ö¶ ô; |óf2G*1°øØ“7&ÚL�p‡%ýý8âÿÇù~†,tôÝS�­ÊgÃå(Õuõ›{Î7ܳ$ÑØºƒ+-§äÚnJã8³§ ­þ©º±ìchãŠóÙͰÚ�gO@¯>V·ÌÒx\ñÞ3”Tr;M�":“lÔÓõ¯Ñ±eXéÜiÃíV]Ôú¬\µsluJÅJp{êG§ð/Ü€«Ý˜9r¼ƒCü¸ü>/¯ë[p3NÙaw ¬Žûkgìre„úMn¡Êg ¥¡:µßݤUë ½Å‰N®©’ã™rð)½`˜æ~1©gŠŒÒµ?Ê$º×T=Ç"h9¼+{öŸÑœ¶k>)LX‰ZUâ}îM+j·­Ö¤ÆUÛ+ú–XhoK•õGƒâÜ\3·K»UÃeÎ,0œˆ(“_'(r]_9¶zËuÌè³vÁ‘.Ek©Óx5_lÚº#[¶<œè”NîzÊRl¼aÒbÎŽÓÙ¿ÛdA^°ŽÑk<Ƀ�PÆí€Ôõ©|]jTy6PVZ9ñ÷¿ÈÕ]¼Öº*õË.7f ×ñS;KOW)Y(nsÛ9îïO>“LÁ¸¯“‰�[ޣɷ ,øºû裆HŽqª“ÐÃзƒc;ï߈åùc<_4T�ÀܳÝÉ"™šQ0�°jóKœúo�ãÍðíË·Ããøó¡SíRíðY`¦`9½9lÈ`Û|FØ{=¤{jX¸ äñ’½û£»ÆGr…z§ãÞ_R7€¶Ä%²Ý $00û²_/µËû⊛R—I~���F h@,OÂB�ñµÝ²+‘«W{<Ð�’·=ob‘™íÔ ¯¨t½äý\_.$ãö|r^0âE 3±êw{uì nµW¤;ׂwû¤�§ S+¯ÈûЦÝO.¶QW«zwr4à{×ð`�qn†õ¹­µš=ã6�Gã‡gÛrì�#ªq²Ò5…_¥!Gß<¼n$æ–kÛ?‹aªç³ L‘�@LØŸ ó tñ¸ÅTj®geä2?羡>Ý^c xô÷”¾öè„ÃÜKîW5*û#' ä)Ýì^ñÖšÆVr—i~Æ¡�³'L%“ ®ÝœWF¹”ª“¶1/éZÅ;ퟞŽÇ :Ê�:t}«s ŸËI.švà šôíY:ŠŠ'؉9Ž�Ke¦^ˆGƒ°/·�Guð|>�ˆ^ç”N¼Py:°Ç€/æ0qn´ñ\žAÿt)lÃ,Ï)téÁ!Þ4aÔ6¿>°yù�bU¶ ÔÌÀeøóéiþó韎‚]dC×I›ÀPo� ‚Uª¡úEJxÒNJÑãþËé›ãÁ8XâøÓVtLqÇßâÅíãÀ8R�ûêa‡xÈ·¸Ã€«Âràåo€-Ò¶5}�5}ô=ެ-áãn]{|�Žp‚×ðጢBÜÖîõ‹žG‚WZ]tÁþ7 €íKÁVã`äÔ,kUº¦’%ÞÝw"…º¡Ô.1k¢S¹¹TNõç[^½ä~\r¼J.—h§šŒò¹ L>ïÚÊq²œ¢ž.¼Í7çf6úJeñj:LáÖè›ÏRä*²|¯h o<�ñ‰* aÒ ‡>Ôªó¸£Fª³Ói‹ÚK!K~sGm¶€ µöãß~Ãg¤-ZQ(ˆ5�® E>#Ç»oÓpx‹ñŒ[$·&\^úSûb׊]ê©ì†þ’IµƒTºìÜcOæI^ÑÁTÇj89Vr/ñ�mHEö÷»ÏiÄïw¿Ý}þiuŒ¶FK˜}]É¡å¶fÇè8<벯› ÂÑ=eÏî|ØúoPKÒV1]ª)¢ŠUà 5imunify-security/inc/App/Defender/ChangelogWriter.phpUT ëÆ«jëÆ«jux è‡ÝV[oÚH~†_qÚ¢5TÄd»—‡¤é–7aE "©º+E²ûÓÛš‡ ªû÷홋�!¤Õ¾.Qì™ó�ïܾã׿嫼Ù{ù² /a�å[Á—+íþîÀ ÉŠÆ<-àr=¿‚ö^Ýd µa»0J#xuúãéÉ«ÓW¿@?I`¦Q$ÌP¢¸Ç˜À5þ˜G˜JŒ¡Hc0_Âx4ùð'ý“›ú—³ xLnõý•R¹<ëõ6›�iωvìGÙº—à’%=‡K!Dò,æ’Í„�™ˆ§¥ô§WS’ÝðÓã@ˆLHÈe”‚- ­'m?Ný~¢P¤Lñ{|W¤‘âY*ý¡…r+®C�,Í‹¼Pa”¥ S% µ×l¦l�2gÚœ™”Ý�ÖEÊÛ»~žß q�: çÍ2ýW(ADSͧWòbÖ;¨ ¢K—˜dKŸ¨Ã"@¡¤ r‘EDœ§Kߥåv…»Û yB!É�¢÷’èiã5SÀ$ð4â±FÑ·ä™¶>J¬(D*Õ†«„áŠ%:ÎuN·D»£éäïµ!>`Th’Ö6`ÑÊ±Öø æLâ¯?ŸP%²˜:à�›ë P9Q,ø½2>^8îo)ÊÝOþ©j%LJ”á˜\ øÒl6töº{÷CÕðõA¯Ù ÒHƒ«þä2__†ïFã œôßpÞ^B½ób-:ÏêQ>÷ñézxô‡ÁŒ`Ÿ¿Ö“õ8gçwéóº�!S b.0R™ØBÎÔÊ šÃ·÷L€T‚Šê<å‚ß3…ЊÉnXšÕš‹(ôûPÎ[;¨c˜’O]J_¼O§½ÉO\_÷¸mÞI…¦ìo;eôy1Ox 7#sTrhúêPÉ�–ZqyòfÿèâQP�¯µ¸LÅ�¥eW9ÂG r,bgdf¢ØæmÏ�˜TaÏŽ�gC;ÄЃ9Š-†ÒÑpï§1 _‹†L”÷*AÑ£'Èrzî4¢ªÈÔx T…Haže ÜŠ�/jaCÓ´¡TPI@‘ùE‘$Û.,X"2º+6\âSÕÑÆØ7ÿ·Ë¼tËàº{W(�TÓT[´%ªjÒÞ¹SjkªT£×ƒ •…ÀZá—´ æHA£qnªÑ °Úð¬DEcWÕ>0V¤0–FÃ%Å„H}a£áÈ› ªèÍ žÄýêà›!îHkQ2Y6ºd†€òl5‹z..¥Òh”–èµU]­^:žÖ'é¸Ðï6y¨_„Vð*æBG‡ÐrRèè[_»ëZ爢]S|™ê,îo¸ÚB£ÇÝ¦Êæ‹BFL?„{è%Ù±–_CÖ{á�{Œ|xî”Jgh°Âè³îD#­®¦4�1’ ¯5�mHt‘„œÞ›&3 Ýi¨_ö“-.¹5«Ó‚QÄU«Uu9q†2õ”õÛ= N…Tõ¾ªyrMÔ¢”‰"Ço-íšÿ.HLgg597³ÈvÊ..¨áœCÔ£Ô¤®Q)Úø´íŸ­os3ä+z橬Ÿy2ë¬?�“!=ÚôÕÙÀ³ÝUý]�K©-¶ï…`Ûÿ�Žšp–g¥…ÿE,L•ë ¦,ž5ðhŠÞTÖæ@„<öÌ�C3°çësëÖÓçñ4¾ß~ôè¾x$Ž¢x•èÉ4µÿþ�º8 ¢Ì§:Ì–âÕlôZüûÆ£~4N2Q qzb·³Óiîvv¿‡A zDňž2*™+ĉþ©öTh”/²ÐW‰8:}{y,NOÎ.ÀïQ÷¬ß‡¯zÝî›îÙõŸ¦ilöÚíÅbÑòhä€nyѬ¨‰ ÚèÔ¾?”3ebé)Ës78™e¡¯‡q<8VcE#îß/fzž%J€N,m¢PŒ³ÐKu1޼}M·BÍe�Ij¶ÜºÒ›Š™LéW¥ÓÈSú�2b¥SaÒD‡�GB&‰\ "€—:LUÊ X5ˆŠZ¦‰Äˆè(9vŸaô$šÙ�˜k þŒ¯Ó½=÷Á):Çkõ‚£oŒ1÷Ç­N«Ãñi ”é&ñ†˜…¸?Ü¿�¦ßüÐï _¥Š'-b™w¦EïøýËÈËHQx9Qa¦C%ÐGz×bŽo¢Äˆþã?…/ÉJ¢ÌˆTNLÒRaê䑘SŠ“(�¼(€~²Ã5X:ßö!åe,[Œ—@§re©P�š�Ž¡nLB…^äCZ·‰byWGko=÷c C\öN˜·Îå( ¨BjX¦é*VÆB(¢¯­2H¦ƒö4�,|íñ+ËfýùZ™¹í¹~P¯ˆ¾b[Ö¦Ý7�™õܨpV09Ôd�Ç4“AmMë¨OÄhå²¥¨�t�à0®.�½šŸNfë¾7¿}à 3ÖÇдAx¬vf´ R¾N€¾‚SV˜L!QjYùxQt­U¾Hû„yY1å~4. I‰…ýhQ!Pö�b桜ë @WßäåZÀ‰À Ñø¢vÔ닯ŸììüµÓç¯ÏOŽûâ/�¿jˆ3XuùL/°¬ë ë0TIÙª¤NÚÄà¶`pU’Jÿ'€Ð½£Õ—ˆ_˜Ž¤w^dÒæ(Bài9),BÅvÜ{žŽM²çŒ4ÖM pñÏü×Á�i¥Ñµ¢p�?$W*0œ×:æ;�Î6Èp¤—Â<ï^½:¼è"8¢¥…&�øupÝVÆš‰® Æ9,E„¿ÍÀ7-,×9Íb2‡/š ¤}¦TYp Qº/;,½/Öâ«E°…Æ ^±*¤ùG Ý¢IaŒ™F‹º n Ú& M*ÄŠq”¤[lûg¢Í¼@Ç£H&>Lÿ ¦_n &Gø€hë�Ù¥&Å�üÌC¦V°ÃcY@ K ²�&•öcµzSþD"ò ¸ "-¾–Ù|x×rYEüä‚ 1oVM‚y®áSD{φíáS„‘¸2¡áSŽ'ù1ǔܢòlÈQ\ˆh,�"z‡qn†ˆš£AÐ…ðvqq¤ÌA3Ç‘4~™b4ñ\lâáóAyxzúöûÓ“þE‰I ÀC’“´òRdÜ‚•±WŸ,¤k"Ù“|ËÒÊ ±åþ(°�˜T„4×BXÁ E�…m"Õ›+Û¤YÛÜsh[Yœ�)ﲿ:´W"4 ²$7Ùh¦Óœ1�;Päp?PΫ6·ÊÎ-2Q\A¿‘ä2¤àH§ù•7vÚå-{PŽ–„Fý×wöƒõ}’UûZ”åi4™*!esûÞ j^×t ­N¦9™tŸâéÔ˜Çrà;LF]Ó#º¢ˆ qÀ53äò…Ôw#P�S�ç~fùv¡HÚ5)ÈËbZîù< P¹çXúŒ—�¬WÈx åSi¦E×(Æø €þú•ÃGAà.Ä�ûć=°³¥½ «»!PË¢€ZŒ?‰âœãâeŠ`+Ëa× Á8∔éÚP¦k1z\ÛIÜÝÙaÜ�ÉÝð`E`™DiI!N³Dèææ£4ʼ©Ó85 Ô`¸åÆ'‹I¦9Û¡¼xJ¦&wv3w3/¬%7¦°¹cÐ+9u:°m~lƒa*Ú|F6•צÁ=bâUaI®æ: ,–Ù–æ´½ÔÎÆ¶sæÂÐKªÆÌ)¾ÃEõÿvZ‰«>³nbÀŒâÑÍï9¹'éÚ"ÊåÙÉÛ3Ñïžv�.¬Q6T„6QNe†ì0šØÀ¹Í¶«Iy©/FpÞðœ¾Iñpša]Ñ­<£%úX7°ê]üj3-’Ër6–>I[$£ ]ÖL>Q}±¡ÛFæ×ª/4†)ôhºQŠ‚Ìgb Õ“_«Ä°P�|JÉé ü2²3¤²Ûð°*hÔŸ[@ FÕdC {fA:ÅÏ…'$û•8~sÚ>>>-ÄhÙw¥‹2›íäÎùŠª6vÝs°˜{ˆÖð„àœ;L׫œ¼ˆà…eXÕ÷žaÉí•àX!Š 3’H_»:›†«Ï|v�Dfª–EŠ„£³|¼s@?uVÄ,m†QjUVÛQ�ü_gŒzTJÑÒ¢Ol¬´»ó¤Ó¦K§ƒñƒ@ÆF¹Ú�Á1­\”¬$ˆp½ �Õ¶ýn°õàýs<ø¤…KýyÞY¾ë4¿–ÍñûíºíA “³©Ouÿ„à,˜šëd±�_mK,ÅÖÿ6Äd ø·n©¹¢B™°YHßC N¦ 6¥…á�2üœEÈ/Lº"¬›,¦¸ƒ›H¼é²–”e£@5¹/JY�k®é𚃭Vþ�ÒªñüëïþŽËÀ¼ÿ°Óx¼ûq°ã„s÷ÛÝOH„ìSa"¤" �ýRÀÔh¡k˜Q†/Ωòei  R§!ÞCÔuˆ…n(q*DTR4¥�U.j‹3mŒÐé¾NaxÈvT gAÔÜ‘U‹x·”žïg9s”3ëÜþÒWz˜ÛV”ºûzýùZT0´7�ƒ´9ÆdG0aÓ™DÞtWq‰{åeŸ<ž\ÙGþhf®‚È»´øÁÍRÓí1âûÓ‹—o{â¸{zøc1Å?c*/lÞÈUÕ\t×ÎaOü€ðΘÝPàí g™–³[Õ¯ R0QR#]Öêuñª÷öò\¼ø‘½6ûÊýŠ uÿUæÞ¬h~_´¾Ü¯.NŽb¢"Ú@MCtO/*ìNRí_!¦Ø×¤Wðë”" ;Eiü$ 'ÕG*HoNæøVÉí.ÁLÅW…²6¸Â*·®æV�ðõa¯VÔ «ÛÚ¨O‘á€góÉ lNØKíªU»�¿ªT«¾Üml,¬ÁC®ûšb…5Ȳ$WXšR„Ê�yqÝš6×%îŠySm„–$e8T™L˜ÕD.Ä�J_µ¡3ö.—Ò(£„êo´Üi¯%²¥�"–`ò€¾}@ÅŒhTE¶ô) –©ñ´®Wª\°âUŽøÑÀ#®ÆÔp…8縔7P ¿3�ߊѷ‹Æ¬0÷qà)Ÿƒ­Bº»_`\¾ì»$&¾rn×ü Û¥Ý\(ß°e a¸…7[Ãb£ˆ*PÃÚAWd)X»FÑ7ì…QL–AeúKàj曩¢Ü¡:&c¹ªŸn8~LZEîYÔ�‹™|ñ¸SßßC ç”Ȉ/[;ÛÅ7q�!÷ªš¥Ÿ !W3 Ï‘LÚ;4nŒùmáh �J9±X¬_mW ½?™(¼rÆ$çkR¸I«•ð.·Ók¿¡Ý�ãvX. X‡AµUãæ¥ùlëa nc Ô¨ãU÷‡‹ÞáÑE}ŒØ~·:^žýíòíEWl‹�ïxI EE´çÜ(ÑÈ+À'Lå’\™iÄkB°Î}›¿”óHë½<§ßö-ó–Îz;³8ÚÞ†g#„À>Üú˜’4O!FVšK˜¼™æ"ÐuÂÅ\žÑ îáZp/a�×þ = WЬk£ÌÎÏfq�ŒVU­ç½·GÝãË^WžžþØïß–+$ðº2ßõ!\¡Úázh»+«IÝÜ·ú5™\²õM$í"¯X—v›í-ð?[Ñr@'r›Xå0=“zQ’,¶+Œe#ŠÌWkˆî¹,ªÕj½ì½}C‹‘Õz]ÚX�ƒ [=m}è4v;��°¯3 {:BÀO@¾ær52Zµ�˜FMNca ›nÉSÐnl U-§23…E•®[3r¬ ó±Ì‚b{ˆí]‘k¼˜Úû‚ øM¸¯ªðNÎúÝÞ.o1¥ïO/»ýµØ)¥€ÊXõ”Ë´ìY:öÈA•Òåù1ÕCí\¿{A>;›…ܳL‹8`Zƒþ6ý’·]ß—8¤×ÞÛs`âðÉ—@öSÑà:¯)1•÷.xÕ�S=¹axŽ(¸#„XZQ«]u#üz#õªÄ­Ž�-ëMl ˜s¢—Oåœ Eè»ÇÞŒU7slêIeªÆ³©î°1l çcƲÜ.*k6ó¿äƒöàQÅý€pmdCmËý®Ý˜Áh¹ (^“?ÜÌ añ ؾàÂÏÀr·^×Ü�´· mÞD×kÄ œŠ3 {ü¬‘L]5ªê¸m8äòY+W"HŪDYËNæjíÂ?üµñ±嵕¾6´žèÎ]ñŒX£…*÷4˜5-¹—%´˜¯¸“±û¬|SƃzUFz38QÎ¥°E®…Ì›̆7¶4Bˆ2õ� P†Tz�Gת^òßÊï‹âTÆ¥¯�DŸ–Ȇ2'“Dñ¾Téx«8gkVÓ¡°Ï©§¾¡¤¡¹Éf¹œ[{Y{÷÷ú{HÃ2˺¢¬²vcƒï‚ö�ô–‹-ãÁKƒ•P?gT,àcK˜ð´Kµæ•lœuj§›ÌæÙ&òÒТwm„’^us 8•3ä€KP- ø�\4âš( UcŸÖœq(†´…¢‚‚{ù°dõâ·øþ&Q@AÈëÔ–bdå°@¥ØŽwY5ÇX£B¾.>@�[ Ä•¥_ôÃKûúžÆ=>88XSØÇû�÷+4l ë *yÒ¹³Úo[ô�Eï>·äí£�ñË“”4ïó“�÷Ýóç^s:�÷;„N‰Á ™è¹ÂªBÞöç€æ_†L¨”�…Oß—ÜRýÊn©Ð¾×ïΑ“D:n˜ß[€ù7è ãè.r*Žîà‡:Ug÷ÀjV'°W±MY«Ägõ?Þ&ýËø*ø­2ÿûÕƒ/[Vô_Pý]x‚Óïí!<˜ð�—à˯Vl”ßþ©Èú<ÎÜwÿ ;æ�Þž.‹’ð²ršœJ¶3Ã_Ý�qAuXȇØÔÆm?quø×�‚¾iø³Œâ6­, á�q£°‚µP’Š(õÏæ—Ôû°ï9|ºon¼ n¼i|]QÁ¹húŽA‡}-“W‰:ô—Ÿ½—·n œ¥æ/æŽ'çã*„0µ„çï7?ଡ‹Ï?9+ h’Ð˨hÚ±îÓÔñ5Mðk�›÷ÿgࢫGµŠÇbUí”rŒ„in²­,&f‹-À*Ô­0 ­þd£ÿt‚ Ö B c=©"€Õ^ ïY%NB¯dšO‹ƒÕºca$c]Hžõö–·Ü`¼³9š– G26Çnm—�)¦õÎþ»»ˆµF�q¤U1>§QCF0®;zý±&† nIÀLmnéH˜�žd‚<ÏNÖsyžU'&Y ’¬Ä¬ýK<ÐOtø�j‚�LŠ’JY2R�w*-ª¹—ñ©2—€*'ÉdXƒ‰ÿ˜�!<àj"©¨¶mdÞ(ÔW­Ë ~÷ï8QíC´©®¾‚èòXo|òª�#]o!\’![,œ\£4ÃøJ2s}–í̱s† ÐIÿ|QߺE*–dë7ÀV2g½Q= mM#y°®ÄZ9‘l¯¹¼y@ó±~·ª 4M%ú¨ýééõræwª×½ŽõÚ×ëH¯Y�™‹zm=Ç�¬g0óž­7~L½¢ç¬ °]háÀ?‚|f«�d1x·¼ó�ñÖùî=læä ©T°š!¹èß²þg=‡ÎœRw�Íß’À6O±¯’‰DŸD�»vÛ×gÅ2,èW§bÆÇu��ÍùO$¤Î�!Ðæ:Šxþtþ­‰$5èc§ýËþé¤7(H–(<£Ï{NyÂ9ZÍO^W/ ŸÆ¦ýtñ ¾À»ì]ªO #+77 HŽÖB'§‡�¸9ù 9ÞU+q‘܇'à˜ÍGV ¡ÌôuÎYj÷ƒiÒ�c7ä?´ÀkÓÌYÀÖàóƒUñuçR@»¤õ8_XœŸJõæ-'Ê`˜Ø\Ȇ* I–ü[íi˜†Ë˜�Æ’:ê]kµ)ç 3XQÉ\~nAê¯sR ƒ3H¥tèpîéVäÓsvnx‚˜áÞ =°È g’Ÿ5rðÁ€”DÖ8é�O&ìŠNÌS‹Õ§Íõû×Ñ£aQâ«_a,f¹ü�Ú\Êä<\fвd”í®�Ìêòn4 Ó U鉅6…ÈI9q"îr‚‘}*þX·í˜Œ•MsaÝ.‚:^T’Ù4އ kýYqXå #b'ҡظbÄ4œ¹7¿/Á¯S±ÚÃd`ñ >4°´ª\\kú<‚d¯%å"¨Ã8Gl¶üª~úû#–«s¡ÚÒõáWÂ\;Kþæ:¥YUБÃ�1A`2€|{ß³çl=ÛX+q³fÖDŠrÔÙxÒ9% éËÛjsc»Ö!äD),SÚDz’Ì›:%9LJoïpÍÛzmÉÛí{›¤–‚†ÐŠV½t;òÊ=-¥Ï£U |]TõW�²¿]é…™O|œÆ´ -¥2ž/gàÉÛ!„'° 8:`ZDîã{ö{¢�HºÊì©~SV>"¼ì�™#~A§M (;­A´QñƒzK›y4®•>&$q—ƒã*xD3Zõò É+÷5rÙ& Ò÷ýŸ”¶@­ŒÙ•Pk;ã ÏÇå%êriævý?PKÒV1]n—…g.imunify-security/inc/App/Defender/Defender.phpUT ëÆ«jëÆ«jux è‡�W]n7~–N1‚V6¤•ã´/v�Æp„Ä€í²’ôÁ@@ír½lVä–äj+$Ú;ôb½BOÒrå•’40l…Î|ü¾™áèç_²$N‡p*ÛhqŸXýó×\¤*�àJÈüx±Z¾„ï;K·*¶Ó| —2„ã£ÇG“ã£ãŸà J<²‰0“§½žmXmÞ«ÍY_µÔGzi?ëæam¼÷ŽÒ|ne0¢ ¹1H¶M¸§ýa&óßsn,^¯üP-¨åo<´»¤È¼k|Ô&" º—Q>¤tò4UÌ£Ð=E ¥šÄ¦™­2»”š 4·¹–dG7L§ð‚[ü»æÚœX«•[¬k, Õö ÷Üν£·Þ�á¹XiΤ«²D\ÌøÕ àô�~#¡7ÊòxÇ!LxøÐ æöš¥¢Êx|cÊO…°‰Ê-0°L£oH¸æÀ×\mÜ' ìx EÑ"%9 —e¤%'„`ØZÈûÒ%‘еåˆ` (d§O�œ´ˆ`�„þXøRçèÏ&Ìz".#1Ù¹µâ‰*ðDd Ï(¥VÄ,[2ƒóv�BÉ,„ŒžRa æ…»^à]N‡Ž´)œ{�!ÓzC×`°ÔªÀ!bb-dlCp !|oj¹A½¦G*d¯ôT%ߊY¤^Ÿ l/øH#C$›®E(KÿHg)z¦¡G•ÒS¡´ëw Äú0þ¼ÂcþeR3€ ‰÷š”~˜Ü ^ЧDÊ’{6$é¨b_�ÞÁÄ�&Ó%O‘ØgÒl{¡T2yHxgÿþù·K&Ø#A9AU ,S…™çl •§QéHa@]D€Î ¼à�GOœîŽÓ ;¬/|¸ÔÇ ‰Ì»S®©Rì_̼öò4u:@(g&N¥êk•Bß~Y· oßõW¥p]å-�Õ¥öQ¢ÎûÒ]öiç¶z„¾É³¯0ÇNä’›eYºq ¢Ö š%#B–Šõ;þk�ŠLTæÒ2Bi±¶£žë sí¶pšVE mÜîªÿdÂÖ¼î0.ì#ÿùRÆjOK\ÔF5I§Ð�“ý°Î=KåÓã$~Ц‡®»Üx ;×z£ó´7ˆð?UÏ÷ «€“§N3ÿâ|î>“®„©¿:-Ë#sÁ]{l•k#bùŠ.pÏ}ñÑØ¯ëðV®wåøI ˬ 5°hCì©’*+«:Ë(Oð{“kìªiŒ+í„8Õ*¥„Vh­‘‡^I4˜ÏnP3EèÊxuÚ9guêѬ…Ž£Èõ;jþv!UB¥ÍÃù¶žfë™°5|ËøàíýCK¥RXè߆¸��¸òù?†˜aÛlºV°5¯×CÈWÎÇjñ–ÕçÝ/•o¾ËnîfhØDp&öiî²¼\«â5¥¼åƒÎúÔ±›Å1òƒIÑ{à´/Cb™œHVÕíZ û/›O‚#ü²Ù§§s[Éýêl‡ûqúûíÇŠl7yŸ�Õ�¨wÐí’ïb?`÷ñ]ß©é/GôçáPKÒV1]ø™“†:imunify-security/inc/App/Defender/DisabledRulesManager.phpUT ëÆ«jëÆ«jux è‡íXÛn7}–¾‚ŒX tq\ôÅ®“¸²œ‘]ò‘I л”Dtµ«’»–•ÆýÄþQgxÙ%w¥ÈNZêÃ^çrfæ�Ã^.f‹z÷Ù³:yFzÉb%øt–’ÆŸ4I/J²� yœÝ‘×ó›7ä©÷i”LÒ%¬Eq@ö÷žïµ÷÷ö¿'ÇQD.Q‹$—L2qËBPŽú‡<`±d!Éâ� Òþt}B†ƒóëŸáw¯>ê“ã×—ýþYÿü ågiº�Ýîr¹ìh9BÃ� ™w#6¥Q„ºõzLçL.hÀ´{Ê»ƒyóÉêÃñbñá„MZ<¬×3¹YЦt”&‚�˜äŒÆtÊ$ ¹¤78.²þ�$‚¤3FÞ%"¼LJ"yÊ:&Ê74Q*J‘€3OI2)k1"Wq0IÌ?Ñ”'1YòtFÀdœ¶çÊvH&„­îW’Ççw�½Îž >ˆ(˜?1š/Q±vZv—BÔ’ôÀž‚š ‘ÜrDþ÷z½†!Ö@åI)6�#ˆhW»õZ�Ä2%'ƒÑñ�ÃþÉøòzØ�OÃþøüø¬OŽÈ®�«­4t  vW‚Æ’CHJ­Ï‚â#â[¼º<>  Æoû¿ ®s5¶›Æj“gª7£ñ”EÉ”,dDš( ¦T+‘W·Tr±»ü–¦Œìþ²ka·çlžˆ•Š�­I«-Ž ƒ췌ɴä‚®>ÇY•�‡n.Uî xôEˆD@¹:ŠTÐ9Éë˜èŸ�°ôˆT<|¬‚:<¶ÀŒÁd7È$‹UÖãq`n8þžµ¶mBÕÖj;éŒËö‹rHGŽ®ÃB¬¬ãhMnk÷®¯Yª’‡]�W+ê" Ó;Ü‚¥™ˆI�µ|ålËqIÊ‚»ØB1e)¶â9H5tHV ‹&›úlƒŸ‡N©Ô`áãµD¢!ó,Jy;b·¬ $pêmº:P‚Ï;•Ò.òÅ› [ÌjË~Ç!À4orEaŠE &ÀË„„ A yYÁOµœ k"!ƒ¹©¦H�ö šÝ.œ:J//ÅÃ'„F‚ÑpÔLC0¡[ôg $ªÕÈ“#(SjÕ~Ô–lâ6Êa!bÒj;Ê�Ж*x>Îñj˜Äût×TEl�!޹?¦€ðc£‰œ€!÷f,ø#TÀk¤átQ‡ÅÊ„¸xÖ°ãÜA©žÊϨ<-¾7ˆñºE¶Ë%½eW‰‚L«m¾Óïwç)Ÿ³Ý�åÏ’‚¯ÄÓ¶–µÖC7ëù�â/lvqÑ…ÐÔpI–æßÞïêã ¼!/«t›èÀPx÷Þ©hŠXÁ>�6RÝÅ‹›Må1¬¦Â„ŠÝLGbK¨²J…7IÁyŸ©fKíÇL‹LhW°Å’Ë�'—ŽmðFî‡9¼˜½Þ(q‚�ó4he­ÒaÛ×›%øŒF@·=(cÀ;_9°$žËpfGA¤ø÷.˜ž£j’*XŠø’V!‡užªË‚^î×äÀ¬#6.fÆm“ SÑ�`5Ý×_XZZ—gáæ×á£KSŸk ÉëFÁW4ºRõþ£%…Ah9øZ3˜ï&KÉÛ~ÿBå$‰ô5~¬h¨‹¬ÓÑ{ÞÍX¬ïû†e~ýh% ç)œGš2QB¹Mñz¯¹3§ó3%ü`P wÊÈz+dïÐZ�Û�H›Òc ¶bÀ,(ýõ-Lž‡gþVŽ47_óÚ/ÔµôXUq#ŸOv[kŠøp w[š/hk¨ÄýØÄB°[žd2Zù÷˜G’‹ÿ%ÎІ×PFœ¤[éBoþ±ÅίlŠÕ§±dT³�œqhÙE#s„÷CÜ^¥’ThÄ]‚n©ƒÊyNš_Í)ÿsÁ—¹@é?GîIF¡âà<�l�"ÕÞ‡Ž>êmäý�ÒŸôú¦›aî2 ÛÆŸÉæüÎN6Ä›s0ó1â�îñš~ÑMåM =3uæ“$̇<�[ØÌ6ß5ÍSKŽç';_ž'f¢l“˜ax ±Gq™" Ÿ?“'k{ÅŸ$M=i†°ÓR˜0濾Ýá„ÜF²·¸4«V¯+¦×Mfk) ÇÊdibæ&¢,-Ïh ¦ù&JÑ‹©|{Øâwý{R%Ÿ×xUPk/µÍ‡Öò³Œ¦yU«ô¡�åÒô§^3üàû�7㓚;Ûšð2¯¶5mAhˆñ›{f–«¥¼î׋3’Þ»Ø{»JØ�€ÖËØA!rMØWŸj4†öF?_†Ó¿:9£j«yâ ¬ŸÝñó¦=º*ÕSü¥ÔÞ&<Ü”¾ÇbÎ éDgXã‹€»mCŽ^¸*ŠeU«$_F­zUgÂzÔ=>:þ­! ztÌø©’h<æP› Óëù¤£ñü†ŸÃd®í=P‰ðup1x”µS´ëºZ#Ðsg�( ª‚²Dßoú‚0°ŒÎfWýét0¾dŧǚ¯¾ºNçmËÝÕ<1ϸå'üi‘¦"ËÓ¨Ü7Jåó0ðÀc<ƒ¯Ey…À>Â:·…ÅÓØ/Uª|z,k(Êpá´N*tï( º@J‘iЛ&î5ïü×ÚJ—5›u J¯€p¯ ¤W¶© ÚD{U$³Ôe˜Pu°j0RùQÀÑîL%¢bœ:% `>WsýA¤™ÿ,Þ½¡åj,‹ f± ¡Žű§8Xh(g³Þ;(·e U¨Ú´CÞ³vð7î(‚sÈì§^Ï�(¯*Y�šëªDèÂçGïØ~¬‚Ô|ØcYjag"mÍ�Âö!·é¿j÷©9ð^d—À¥h$•¾Ú)]ö×åM�k«<ÕwÈ«·¤ŠÀJ/Ü”úònköüÿi™Z¸Ý5kÚ*h©2e«ÊV&Õ k)¼o ²®%h¨]àozaSÈ7ä"š¶jØ,F¬©LÚ¢h CúÍ€-·º]MçØ�ÆFñ=Í—àÜTüž)8š ¿£ÿ޶xÇšõœ8«6•}¯¬(ãׯ7v¶šwÅSP¢Z«ØôÄc–r/c2ÎSHA’% ¨ªñBCdÔøh\dMÅÜ$î&q5Ù7ñ$_25Ae6ëO·n·ØœP]Õ Þj¯¦JrÓ¾¶²©MšÆ 2ðP×MQ¥µ“^±9ô SãH�£è ™a; ¨pÏÒèEÌ „ãîFæsüÖXcRF¼y+…Rc¿hÓ�Å_5l'é@vÜl(#là‹Â*)îWx+©hO¬wEl>Ô=í%ŽÂ'•X ÂR@ßY íaŒ#R9|‘AS�|¾Ÿº-æÇB"aŠGOëÎ �ƒ÷�ó–sJ¤²ÃT©jnÊ9HV ƒU�A@ Ìhܤ^À>£ —ɆiŒÌq 1ïÞ#n�ÁÔPR¸²8t…=ÈâƒP,²V UÖ¦b}ø±9—ÆàÛb`î©ÜF�•Alƒ[´%=Ù c< ãµT°3x,%­ð,á{¨:/��Ì6΢¿wí³H ׺XéÚS¿a©½—zд†Ÿ÷Ôô4}öuGSŸ‰úWÞEð¨nP”_•Ë›º7màÑÉÎö•+õgÇ™U¿Ì!Ê;Û7à1}WÓë’7‚ã£Z£Q³q‡GÎPhl¿Š+üc*JÝqêÝc§n)_Ï »?CâØ/óH×™ÚrÀDU~dEp€~fÐNxÞ}+Úlþúœ£ù“UÂx*á6í ‡5»Í¶"i³cf�Î^œGxåP-Öƒ)úÈL½vјÞ(N0}ey§9oïÚŠ@Ÿj%:ÈÞSlÖ÷lo4k{…w›uÌV1|WÒ®gÔ:º;)öTÊàÑÜ�´L ¾µ âÎ ˜Y†u×e“L$ì¨Ëú°„¿Aˆ•ToÊõæÓ!qÐhpOgó‰ $S("ÇO‹ýÒÓ§üÎ>kn'…ØâREŽSL§«ˆl¬—Aµˆ)w?£jq´¸—^‰ { ,ø÷|²µôIœå‘\ Ì%£ ÑÝÓ]³±¡ l©è@üÚ å„VXTбüG.Ð4z5š‚‘] ªå‹g“A&¾Ç]=ãZCý4 £¤v$ÐZy(‹6=¼åÁelkëGa™nço¯Ø7î³3¿Ìâg&pšVüZSƒ ™çA¨&hZ?‡¦§'ÇÒG¯vÏ®ªªiÓœXuM+ªšž¥B5LMé{=i³%)֦ݓ,+ÅFg²3M‘l4¨"ÝôKEeÿ€Ž‡YœÊš©õÛš^ÒÏ–X-Å,ì�[´k O ó¤5ËÑA×+r¹<ðÍYÂÈ* ØH�Zä4£iJz<1S*eñïyœ ýˆªˆ‰ð›H2ö Ò9P«ÌÉÌ-¿>cš×X8WK»¦š6’¶‹ùê>èVdFë¯MJJä„[µ¬7�rx a’óŸh#›[;Ÿ.®âËq�ö LÀ®Jc`kpÌúÅ-O¿¾ÖÏô�i:ß%FûJòZ1-fÇÿ´Mò³ƒ£6» ½6 ?ÍNûWÓëñ`Û„`ɤã©>%�‡NãTwõä íSpoɪ0à—ý ¨WGBi�Ý¿á¸bZƒíô¬|Ô£K›5_5u«ª¶“‚îtÅ‚þ=`8ê/x©îYÏ{Ï{ÿPKÒV1]‘ÀoÆn;imunify-security/inc/App/Defender/Model/ConditionSource.phpUT ëÆ«jëÆ«jux 臕TßOÛ0~nþŠ{@KA¥eH{�1¨J(ÕÊ�¥í4iLÈ$—Öªkg¶CWM<ìOÜ4;IKš”ò�Äç»ïΟ¿»�§ñ$vZ{{ìAGÄ IÇ õ¿v¡ÃDBŸòätg—ðnÍ4‘ž‰ èñÞì~€6cà[>*”�p‹ß§r…!$Ÿ7›™ÙÄÍ@ÌZ Ç„µŒSËq8™¡ŠI€Yyiuw½YÂi´¸kÇñÝ9Fh3Þ]‰Ù±ó|^RMˆDšpäÉlŸÑ)BÀˆRͼlN9*x$Œ†,ƒ@eQz›ÍHHP$’êÈ„á*üLQnÜ›ï›iÁ)x%ùo§f˪™&¨4Œü^ž¤iíéÞÙ#1‰´¤|l×-§f 2¾¾÷eä †÷6æÜÂÒ5^Aw½aëöf0"ÇÉ ¹¹¤×fhûÝ�…¶ß5Ì Ê’˜ BD‘…¯Ç¼èõ½4ýYC]’1¥øzÈåÉ;77Ÿ{xÉ´1͉QÈÛÓ\zísÏ_K“›¶óS\@ªÜ7]ÀýuûÊ[]C¶ZO„ˆéÀÍbU…,u"¹)H’´Ó·ˆ¶Æ™Jâä�ÑÀTG´ùD R¯1ê¯60Ó²ªïZ9׊êf]SÈ¢££‚6ÏV{žÂ2D£”ßá†�œödF‘5î;µ§S� S �jOÓ¼Û tÅD’Y~-°“ûu*Ã@d�Dc•ê! e‚6kêÖ€ˆ0… ôåœ*üÏT¥4×W¬Mù}Æõr»•ëi€¶e”)±â©p¢ $�­é­tT)È›¡· ìüÙ¹|þ��2ͱEq`Ÿ“O¦[ C6&zâ–„…Çú¯:8=9j3,ܲ^K!ÕÁ辬赢ò¡·É}5pŒûåpx»œ\åúóI±¥þçäæýQ�’R¨ ÍEb¿¯Xÿax?}yóÜŸr1_êÀMuöäüPKÒV1]Zî¯&æÑ"0imunify-security/inc/App/Defender/Model/Rule.phpUT ëÆ«jëÆ«jux 臥Y_sÛ6¶>n&ËYrs½õÔœ#ëR_�ÄcËnoâŒ"! gŠä¤l_›‡ûˆýFÝ@ @GÎùÁ#awû‹Åbõ÷7ù:ï�^½ê‘Wdšå�‚¯Öéÿñ¿2M²2&g<-È»Íâ'òÒYºÌ–Å=l@NÓˆ¼>úîèðõÑë¿‘ã$!ˆ"É“LlY àˆÆ#–J“2�™ Ó³�W'äìôÃÕ¯ð:ûp9#Çï.f³÷³sä_E.Ç£Ñýýý0BÍ *FÙf”°MFÀ4êõRºa2§Óæ)ënN7eÊ—�7Çy~s– 5Þ¼Ïb–üÐë•rGÞ›9+V€ˆ ÑE™0²A‰*åиvÁrΦà4%’E¥àÅ#ȽÌ|H ¾�Ïü�)™QO‰k¼ßz{¿Wáó€ø’CŒúl¸ÈôzFÒr³`â`ˆ|Š÷[*ˆ,OWø}ÔÛËßÒ‚‘<“kPí)sFúyR®x: Åšm`ï¢L°Ý0‹*m\ ˆ;! £-Í„äY 6¤ @yZì³Õb z­Èá΀‹Yˆú"É¢»ÝœCAÛ´Ÿæós²aÅ:‹aÓ’·"Ë PK“0âïi™$¬B°��#!ë,»#˜¸ßKˆû¯ã_‰^þ?`ÿCŽ=hXØ¢˜#E¶à¨ô± Ôp‡€–|U Šä±@ÀÆy+²{¨+‡Î Ééc’јD Ì¡´,1³ÕÉÛ½ŸhrÿÀ3¸ «�|F>O8f2<øNC‹ßÆÂãß…��¢-k#@õ¼#Wg»ÊCq¼³1ÎE¶—hAa“„EÄ;.QºÉ¶4)Û»+y åù¯Ã£á÷»(ÏQÓ *š�ý}/ª’A ÀúšÀ‡„ô§×——Db%#G‡ßµ3~ ;\xµÈ`8A iÔÔm‘mMõn[�9tc ÇJKH»jmF%N`kÑ�ðɬ(EªH•‘å"ᨀ0FdY¦ú\£AÇ*KQíÀ@àõ±÷B™ìüMHÊî!Vɳڰþ¨ ®YÔMQÓt‰¯h\JVôµšOûš¶ÿ¾ñÖÆj›j,ô�i.ŠYiaTU>„QÑ\kµ…e yÐMs‘êµ1Á:i#áÓáÒZ8ze¬6ŠñøíÙÇéÏ ©ÙA@Ms!ë5Ï´¦z�€v„sfSÈ}̆æB:ë㦮ڠPÑÃ.kš¨×B`Xv»6ií„]uYUÝ! CSX/_ñ–šsèÓßø‹!uV¥÷ÔY4Ò%´’*6éŠÐZ1ݲ Öü.„[¼@<˜jµ]ª*†f°.Í×ñ8ÍĆ&ü¿,Ì:¶XOfÿ<¾:›ß^ήg§ócß�È[ÝÁ«‚l“Cý\ðùám“‚haú�aDsªI¤ÈÈìƒj~k­ÖY •z�/IŸü…°M^à¦;il2BûgS :5œ2_Wê½––ÉS"Ê%ôiºfÑ# ³lž ÜTñ#ÜT_³|ïÅšÊÛׄ,i"îX§{ÕÑo'}€Áø¶�F£5 qQiu†µ„Ö^°¦ÃY…çJuâö}öÉd2 à'|/D©]‡¿X|g¾|éÕÿ¿TÑ?]’ôé!ì�ËBâcê‰$£­�1Qï2²rÃJ—ÛFcÕ¯j³µëpÐ~ Fj`¸°36à²@5ñ@ÀÛ´OŸu›2â'Ll“AÂæû Qµú¦Ò / {!šI–®àI•2³Xç©s¨&vÅT*L—¤Ø`ñ‹Ý¶™¨«ÝjØŒ¨Óµë«n­ŠL7V¦™ŠuëÙ„XÕ˦ºB‹5—ªbªø9•Ù¢[˃ GL+¯æ©kžËS-k&u“ùá²fP½‡Ï€Ë‚jÞ|\6–`gæcà²f¨[.—¡ZF&õ¢ÒÉ^™ »±ª¶Z®‰ËV'€�`š&¡îb&.[¡i–Z(NC4ñùk¸P»Só»/`<Óä‘À!Hʸ>`‘9…®¾�˦ÆÓ—�kmÝM\ÆÚHP<7Ïáêц>‹¬LãCxÂäN,|[­ ÊW#8EºŽÃqÖ(… ©äp²á¥­Ù€H¬hUÓ‹,Ïá5ˆ÷Ôr‹‚õ@IÄîä5œ{Èxšà,¬ÃáJ¾íqÓUMZ¬^©@�V©x‡c0°hñü‚]EÈ m5Ÿï×,­ niª¥ÕÎ×¹Öi NeqÛÛô_Ö ¯_ zã[¾È²¤Ã ¸‚‚unJ ¬"ðvô»O}?$§áhðv Ô6Íç+ÒcË ²jÆÙ¥GkÏWx õ2¨ND=eÛ§æ¢;ê4³UÔÛLP=ÝÖà³K©3;ô5¿WÂA½uI&^MÏwŸÕaej¤VÕ5…Ü¡U•S%TZ—ß¶ZÚšû~cpõT]ßvmÕíÙ𷪮¯À°zû† ½5IÝ-Ösê8ª«PþŠî±ëŽ uÒ;3ZOç¨vGíÓm8›Õ<7¨-0ÖÝ]v�]úôü7áîì�o‡3€ ”Gƒ.‘õœÖ1ä4-˜Hi¢¬‘ÐËq>»œ’\°% ý5£¢X0Z ˆš(ËBÓ2N ZɚǰQz΋¿œoxJ®Nɨ…šÀʯ�±¿~½rY™ëºx¤ž°°Ky&ûÍ}7 ûÊ�ýà=›7SxZª³ÂvMuo­–å)s¿–çÕ>Ü¢TÔ–�—®�ø²ÚÕ.w¬Þü uL–IaÈ~†m3wø"m_l`óÖk9„me—wõ¦¾®°×…W5ïh·È\”Ì nB=ƒ!6v÷\v6Œ\^#¿Õ5seÃÒ·o?/\ê3ü\'<Áç:>ñÍp¯íL­ði‡L“ö\wZbÏu&ÔNê5ߣ*t®­A™ªHáçÇ´w}~²?1PÆ*ó²FxíWjóβ¯ekþbý¦ëNg¬‰ŸêLün­Ÿ«l¸Oø”«M�ퟹÚÂÞÏ~gåKïOPKÒV1]3�2;È`4imunify-security/inc/App/Defender/Model/RuleMode.phpUT ëÆ«jëÆ«jux 臭TÁn1=³_1‡ª�š6=�V-!(‰J"IU©TÈxgY+ÞõÊöBQ•C?±TÏ.6QH+åbiì™÷Þ¼±ýáS¥^s߃}èªt©Å,²Pûó{ºReôE’ý„Óxz¯K[W*´ ¦±ç ‡ƒÖ›Vã up)aD(FhPÏ1pà„߃dI€ºýË›èŸn¾¹µÛ\õ s:êõ.zƒkÊ�¬MM»Ù\,>'fIÄ>WqSâŒÉ¦Kjz^Âb4)ãXÈËÕ�Ïã,árÜIÓñ †HŒã  <òÖýŽ2‰»=À$‹RÜ"pÉŒñW‚¯#aŠHµš‹ °d+;Ìn…J˜v ¡Ò ×˜†lÄ,†ŠSfÅÔ�-„�`x6„Cÿ½Ÿ7P�Ò¿¼ 髸ò!äÀ¤T ãXÎ V‘*Žø”�W|ž3 Æj‘Ì(nz®caعº‚�PMbÕ9pOq,¿]sL)Øæxø¸ÙýBÈym ú-©6gB2ê}cΰF›éd…ýýÇ =ͦRp·ëlã÷>à ­»_µ=r©²ªdZ³eÍŃ2l·©×ú&ÌR¼wäUî¶ôu#t­‹ØF kmiÊ4‹WúàUžµ¹9nœp74UJµÎ�(ÈÒÇ$u™4Êë…0èïî^˜¯TV[©(¹ ’IaDqX‡¢ûµau°$å¡4#Ò“J¶zKù=Þòä­xj¤pò»dÆ3-;ý«ú�+/wnÜ[â”7+œ9G77¡M{k“ÐðIdc9™Ô J¯«Z‡ª(¾Š†Aži÷Ž«¹K% ü=�”?¢]P†,“¶„P­ÒÑÝópøZ¤¹/=ŽÐÿ;�Mù‹N£³ãƒDéØ}%KÿçUâbIE¦ûáá]ë­‹Lê~8ÜIùÌ\_PKÒV1]À›@—ÁS9imunify-security/inc/App/Defender/Model/ConditionType.phpUT ëÆ«jëÆ«jux 臵XÑrÚF}†¯¸�b{0×ÉtœfZ"T‡Œ È­;q†Y¤l#$U»²M;yè'ö�zwWI�œäÅ3ZVçܽ{ï9ºþéçpÖÛ''u8#W›/ý÷ï1^;0`~ü—ËÙ;ø>·4 \ñ@"Ú„¾oÃYçEçô¬söºžc‰ÂaL9�àÀlêsê@ì;4cp}ÓƒAxs‹ s81¡{96Í+shÉý !B~Ñn?<<´lÉìIâ–,Û�¯�›ÚõºO–”‡Ä¦:<Ý]ûÌ]ÝuÃð®G]*ﮇz¯ë›óú,ðA¬B Ô�—§ûDÁöç­$jkÁ¸^�0 î™C9?³Û�}[¢�‰¸Av˜K± $P° ‰`3� ½ÁËÖ«–:ŠfY‡eɨþ©×d¸5Äø•QÏúȸàŽ–Ü 6ýrO"à"bþ\>·ë5Üɘ·ý‰5�7ÐÐ ÌCÙ ðh~ 4EY½Æ™�pÞzÑêäh‡×ÖtC�àÓ�ôô¯˜xÏ8Øû›î@L<�Œa~ulãzhuûC…ž‚<�Ñ9}¬ >6/Í[‰¬^ÏÁÞN&àPAU]Uî™–iXS ‚èr “÷`þŸ Ãs!\C†O,ÇvÅ8Èl’S}R•èª?™ô‡—S£;ê¾íúÖ’o©�§àï( fj� f‚Îç´Øž‡©Gãë·Šsbõ Éfas„Cì;Ž"ê ˆyy®lýÐê´Î¶šÈ¸�Q§7sœ¶RÂ4•L[ç¦Ïå>ß:¼™šæX.©‚jOî 󈔴‚ðe(#*âÈOX?|L(ÂxæáÅpAäý¤B s*~C5u¤ò£c©�µ€DYás�SϽ¸ÐÚÒÜ,l'³¨5"³�6vfIµcæyÓEÛ‹²Ü3«Ûµ™ù1W=…@³—ZxÅ”ÏǯëµÏ™Œ jæ)¤ZZ˽LY&å!‰È2É8|§vO`KÄí{š�VSI&Å›]Ó5ÁEÉ¥àžè�q]e»o–qu±GI<¹«eþTß®þ± :…bhbcXÅÌÈZ”q:Œ‡Y�ü(P^\ÌT•íª_èY¶St xªdˆù|pü2°�_¬Ùóœ-ú ¹š&�r{ºKo:=‚†v%SmL �rŠŠ!5R¥/¹i›C°=ù• uNá—„× x0bmàå Ó>j¤¾]VÉÀ!̱rìr€Ù�*­º—zp5\)E»�¥Í÷×6_•b[×v3¥olœ¸INwãç­ÜÒV^¡¸³R»›EÖµ‘ø÷ /M {ìt”C]{"‡ÐhÈŸ>ï�9Ä�X¨nõÛ©\�äY"·ÁøÊ"§¼�k3t³“óáÒ´]O,pˆ ­¯¨‚ ¯èRf´C2ã²hÜ(XªDE8�P.Ê2È'N«Ç%<¤6s1ïèÈèŒÄøÝɉ�×ô7‘‰/ÃaEÝŽb=Zã(Kz@o·—ëFÎàrìŠ=ü”¥�aDQ}°âp¶ÆÓ—>qmÖ¢ÉÕLvdDç§&(Lt]ûóc@R¢¢ô“«Ô\)OƒÈ�m_Ä[EÜ×ß�j¦ÁjOæ®ì­ÿDÎHÞCfÊûº�ˆ>×ÿ9Q’ç²y©Ñc=“álb�û¯¼Ed+2!¥±Tö�JP¿·ù_Š*W-�ÚW¼xžÃ9Åk“ÛˆxÀdŒÀóT�8ŒÌý@Ù¤¬P:•Ëó1TìR8Ò’ñ¤°ó&$N?¾:ïtð‡³sXï�°’wÉ„±ˆ:º^ù7ó®ñm›ê9–â¨/?^ÑÄ ³§íŸv¾ÃÞ”ŒL 9ŠÒô'ew¿ åà± TÁTW“f×ë»àЛ{÷@r¶;jïqŸªtýÂñºÜ?×ÿPKÒV1]0ÛwÐBË6imunify-security/inc/App/Defender/Model/TargetInfo.phpUT ëÆ«jëÆ«jux è‡�RÛnÚ0¾Nžâ¿¨ÆA4¡H»YGWDQ‡D™tÚRe‘Ûò†¦^ì÷F³�„†$¸@²ÿïÿNñ×o|Ëý°Ýö¡ CÆ"Þl4ÿýmÁ0a:‚ILõoxNWßáÓÉÕœ­Õ Ò�1ÅÐëÞuo{ÝÞg$ Ì,‹„‘DìHdÈ-ÿ$Æ„J�¦0œüx}‚ÉxúúËüGÓùϳÑèe4]XüV).¿„á~¿°UN¬p€Y&dƒ’ЀBß§(%’#L2{ÎÝrœj¯ËçË'²&VqùÂ"’ÜûEÞ¢ ¦k&R¤bF!µˆ ÷;dT¡˜ÊZ1­@m ¨l½É½‰iÇÞ¥¦ &3AZæŒì‘³‰·&v¤EL7 tB€ †‰”æ\¨=šƒÉÐ î‚® †$enrlÀß÷¬uïû:præÀÉæ �;$@*«mÏ¡ïqï�"pc×ïÏY¥á»jßköwDHÓÕU9¶Ìbz7X�% ŽJs’Ì9˜_©‡ g–pÇdU\n£.�u«WIŒa­)v�àí ›™—N&Õù`j™ïåy7jËÛ‡Ân¿èü8) ö‹6�“‚¨_*É{/õôlƒWògÙQZÐJã• fma¶š™Ï|£d÷²Xåy\)67[µbyì bçoéJ½ŸÙb­d}ŸæÝ™�Qf€„@‡sMw}AR±��žê¹…¦9{ ÛiÃ}é‡rÍ7´T†î9¹aî¶QæWvÞr)ÞýÿPKÒV1]_"e»02imunify-security/inc/App/Defender/Model/Target.phpUT ëÆ«jëÆ«jux 臕UMoÚ@=ã_1‡¨@D€ õBš&ˆ ‰�ˆ@[©TÕb�a•e×Ý]CQ•CbÿQgmC äóbkÇ3oæ½™Y:‹f‘W;<ôàÚ*Zi>�Y(ýû[†¶Pq=.ãßÐ�O.áÖéN…vÉ4VàJúШ×�õÆGh ‡b`€õwø=î£4@,ÔÐîÝŒ. wÕ}£g»Ó¿ë@«;èt®;ý¡óŸY™f­¶\.«¾Ë,\⪯æ5�S&jäTó<Éæh"æcZ^RÝøjK®Æ­(_`ˆ.ãøZ(N¼5ß!ÓS´€2ž ~�à fL5«–¢¸D &x6õµ«ˆL¡Ò`Ð�5·+бÀMйᒠiT�«õ¤ºr�é�Wp© äx+â)—lÕ™óù‚´Õ\Nݹæ|%�…ÛÞ¨{Õ‡S(FI`‘Xl°†3œã›¡†—$°C².l è«ÒÁ­F*ØWúíˆí›Aè‚¶ðºÄ™Ñ8ìK˜Õhc-�iÍVÐJž*|.„rFñDpŸê`–^a,}Ë•òûâbR©M©ìÔ.äÁKt.a³™ÊYy4$¢äÎŽ’;–O¼ÂCŽQ{†þ=ðX¾6àÙ˜ähEL³y¦dÎÃ\ŒUi ³¸¯ÆD)C£Ë•¸U d (j›^rƒ¯èÁM"Gi“{K.¦š¬?W %¾'c¬+ãu!4þŠ9 Y Íè;¥ðÞ+:8X'u–éÝ’¬+¼#œ·ë’�·rSÏIä¦?Ë ñ5�\ïÐe_ŽÌwø4ê‹Ëqñè¼Ëý dh‘ŸÞ8ý EºN§SǨÍú<¤<Ù�´»OðBHzùìlìEìÜH¥jCUM˜û�¤,H‘r1[Ö\'�AKLóܾoˆÿ êgÏlBq$ï¥Z®oèbÒÛï?PKÒV1]Ø7Ó³� 4imunify-security/inc/App/Defender/Model/Severity.phpUT ëÆ«jëÆ«jux 臭VmoÚHþŒÅTªDÄ�¨í©Iswˆ¸)Ð “¨'EŠ{ «¬w-ïš»æCâý£›õCÓV÷Û»3ÏÌ<ÏÌ.ïþˆ–‘Õ=>¶à2zŒÙb©¡õï·6 ¸L|1‘|�ëpþ޶–\è5‰i†Âƒ³Þiïä¬wöúœÃÔ (˜REãõÜà�˜G…¢>$§1 Fo®`4œÜ|Æß�3qè_OgìLfÆ~©u¤Î»Ýõzm{&27�mO†]N„wѨkY‚„TEÄ£YzivwÃ0,x¼ëGÑÝ ¨‰x7–>åVQ¯KW4fú¨HÂÎ(xœ(eçùΖLe+ÅrÅ|ª€ˆŠu�O3)7(�ÄšnP,Ç® R¢˜Xà¦ë‚òdŒ8­ÞÉi?§mÐK¢ÁÄ’aD4›s k¦—ðéÃ'xm¿±Ó:³DÊœÿ±¦Œ¢c}$áz8˃�©Ï’b"Z¯ìÞÉûmÛ6^©çŸ+CÀ%Ñæ³k5<)”†+ç}ÿf4»w�[g:œý—˜F‰+CŽ™`!"¯°t¿RسÐãáäÞ|œ:ˆÙÛÁ$_~³ÿ¹Ä<Ý�È8D¼¿)�a@K\C-qÍÛ."1 ³€_™Ð_•Ž�Ž/K ·†(Êx­:t•ù˜ê$ø&ËjÝY�´Åôs…YL¤üØ9Q2çCiì¯lÈM­J¶mÓ4 ÄhÁ $ƒççLÝ´m«Ì®‘g˜î¶ÄZ‡¦‡Ÿ �ÉfšK¼VÌ3L�5óÆå8!M!m>#΂ê"€›â·Š 3ú÷�í_n8~k÷vdÛ$›jxúÓ§ßêNiU^Õòò¸˜cu×Ãд1ßÞK‰Ëzm«®©NÃg*âäÌ5›Þ,µé�s©#¿?rˆþ|O\UHïÅŠ/ÃQމ÷@µz^üi‚@?§|ÁU+�ÜÛÌÆœÆ÷�9guaÜ�Sij¡Ùn^ì'³)Œ�`³•S©}µRmæ¶ý¿0›ß:õùN:`Zÿ¡]BhÓóCô»ü怷¦¸‚·.“­Û©dùÉz²þPKÒV1]´G+¢È:imunify-security/inc/App/Defender/Model/RuleCollection.phpUT ëÆ«jëÆ«jux 臥T]oÚ0}N~Å}@Tåc�öÒ­¬ˆ¡‰2‰®Ò¤RMÆqˆ5ÇŽl†¦>ì'îÍœžö‰}ï9çž{o>~*²"î_\ÄpcQì$]gÚÿt`ÌD™ÀŒòòÜå«/ð¦vô R½E’\”c¸¼t¯WïaÄ,,Š‚QDnHbÀ-þŒbÂI ä ‘0ž}}ü ³éüñ»ùOæÝ-&“ûÉü›�Ï´.Ôu¿¿Ýn{Ø23KÜÃ"ï3²F¬o‚úqÌQNT�0ñòœºå4/9MwËQQ,?“”XÆå½Hûïë]”ŒŒ¬©à�ÛkÀ )Õ«$ß#ŽÖD ãD ŠàRR½i0Ñ·Šr#ã]oÐàUêä98G5>"üŽ#«!r¦‡¸œ¹p—·$]îÓ³}ïÇQ!éi- 7€¤D»vÇTu„”Ć ‡ O¥ÈqŸ°H¢ÜŸB+A9Nî±,‰.%oT´WW®Å 4Òæ/-ù‘wätVðë@Ô ¤Ý'[c+Km-QDShÉ äø¬¨dÛ„c@” S:Î`Ÿƒ´h7Cï×�€£ê¯Î¨êݤ>ù›îpMô41‚ŸMËÝQCäÑ€Ì'¤¹ �CÇeh¨0Ø'üe4$ø†HóôÄ»ã3ÌZøq© w“ìfm29Í=̦xrWŸºÃIsmô ±(¹>õU©ò(×gÊq™uýQ]}sÀÆÁ?Á¬nà'U~ø_Ó¯„`gø©š¸Õ¯)Ø ^+x‰ÿPKÒV1]ÏV4Æ:imunify-security/inc/App/Defender/ServiceWorkerCleanup.phpUT ëÆ«jëÆ«jux 臽WÛnÛH}–¾¢f`,å@—L0û¢Ø™heâ�o°$ÀzA´È–Ô1Å&ºIËÂbö÷�öTwS¢¢È™Å›‡XìKÕ©ªSU]'¿‹¢=xñ¢M/h¬‹µQóEI�ÿüû˜Æ™®R:WyõD¿-§èo;K·zV®„‘]:Ëzõò§—½W/_ý�FYF7,ÅÒ�´Ò<ÊÂYþ¹JdneJUžJCãó«�ïèüìòãgü?ž\ÞNhôÛÍdr1¹¼ãó‹²,ìp0X­Vý„5g¬¸Ÿèå “s‘ phÐnçb)m!éá9t÷gË*W³õý¨(îßÉ™d�¯Ûµ¥“¥¼r!ijô {V¥’-0ÒJ›L2)òª ›U”ý`Ånez®ÊÔ£´¤r'¨Èª9~Šïó wêí£0»ê{¼=h· £.Õîhê3@S%¥6 ‘…0bùm¡[1ßÇÇÊ«i†Ϊ<)•Î)Ž“Zcç» ŽáÃVë¨\(Û{³Y=mZÒú£aÌ�¹Í`kJP–éÏÒR¬‰Ü¥¹–ž<+¬mäò&¯.Ž0 ÙŒë]‹l)ʦaH +æÒv<èæÅ¾[‘çzläR#Sñ—µcD§oàw¨…t‚k’ʨrMá< Y èUº²4ÉÃÜhdw�A3£—´Ö•©ó¬ïÒ§ŽÓ(^ifo©i¦re>ñ€�@À¨ë(� g‚ˆ—�Ýf䪌‰m ‘±Êg2�¯#¿gmx�²°¬“íýŽ%š³\YÇ'o„WJ($2›‘ÓM¹”Ì;MSé��éŸ0àø+¾Üȹ²%d3Z?0•EIȘ¼ô¬v Eªø;ÕIµ”Ø\H‘îóäQ«ôñMÐõ�Õ’ˆ4�…ÛîP´*buiÈñ¾K‘CóÞè¼Dq½u€":îÒKb{v…p½ÌŸ“sξ#D¤Ëç…ŒøÀž�¦gÜð:G¡Âf‡úòØ7ìîìV>6(š…“Ñg³Ï…¿ˆ¦á½ç ¸(ìãpnû«¾‚‹á>„_+•ùÒ§r4ù Á§™Nh¦ ÷HöãS¹×|I¥£°OW¸®gä4u]§ÆŸ: û†…ë“e�Š>V ™7ól!P†5ìÁ2Nâõp¨‘LÙ’ÚÜ &ï‘Á n-¡ªX’OÈ>—lÍ/A®8ÈÚÖ.¿ØÃ™À»kFå%h+]Ás �'FaŽr`Ðq³¥fÔ¡Ðck3ǃ©[Aq¢q0ZG¡Ir+Ûmn½7ˆÁ؃jšõº/Ù}Ø©%<§eªÓõV…_~Åzg+2B:Å1wü°4`™)†Üèi6A»ñR<¹.öÍ~>ÞŽ?L.FñÅè³ï"ÁªºoÔVúͺ�F~“kþp¸m®þP¦ø]é8 _;Ñ.ð^Æ•OÕwêÝ ¸ö`è >ÖÜn@ÞBsýGr|�ãð:œâ=9]ãÙé 6!ìÚ8æ0ƒs×Z•õ‚ÜEp¯\8—�ì`œÎÝ3 ŶB X#oôƒëоáp•ÚpiÇŸ7²€M˜š[JÏDf¥gµ»s�ÕÕm]>‹9ŠƒP8¿ß^]†´—aØðeR “­»ˆ'¬ñ/ލ´‰(üËwƒ$ÁCU… ŽNè§ÑÉ=ÿ ¸ñjX'¾Ô¼YᡤWý8/™ÛU)N#ꇛ}úñõ}þ#»¼Å÷É ÜÇúWeÿzó ù¿—ýf? ƒÈnC;PÃ�ÄMý:Pð÷ÊX¸·òf¼ß‚Õ‰búÓHGÐ/½Æðhûõkµ?á@Ê«ª,0öz;�æØ‡YÚ�¬~´¨gQ .x‡ë*zÌ™,t�lï *üåÝ!Ø¿è›ó®µÕCþºè{×ué”Rexæé|ãG¿;»‰c×^ŽA®hÀÔóŸ1Ínœïº+ã:Ù!¯áOô¦™Êd<—eì♣Z×w_Ó3±útÝe(à1ó¿ÖZŽƒðSÆSEÆ“{®Ë]‹‘ÐþMÃ8{÷Áy= %°yG@´šPÜ1«“Äé cC%ñ /Úû%rgV$¼WL.Ïýg3OfÑHŒa `‘ÌcÌÄÐhÃp• ò„¨Í� „ÔL ?œä`¾4HZ`Bò¥I–U9Mó‡»éGv"¡"r*½Í£-l‘60 ƒ‰ˆ‰_$ý;ÉÒ+XÙ×èº 4šã‘0.ƒE Æ…À)¤þC”øË�cpg|# › a’Ë ë›Fˆµ’1,ôþûÞcÜì�L£äF?Î׺TÄ0•ó˜¸ÎâLÞÀB£�o‹‘ÌÁ…âS†1$“&”bß™tœ£ðù½…ôq�ˆƒ~õï�ÓÊâj#€®hìO¹ >`q*‰˜ ›º]ío Ã$‰Ä ›IÞ|ÈØ¸Š™?Ž–a~Éîàš¼AN´ÍµÉv ‡EjmkõÍ×E”e±§.Ò€[î>5l<5 ÐT >Öûk]ŽýHÉŸÃÊ)€Ä ެçã&ömŸŠë Ø)³›0ÞPîŸ?_^ïà?ûƒŸèßËýó‹ž~ê_ à±ÑF2FzFíÒC¡$ X—ÀBVÝ«÷¬Aó–V†žxqèQ¯ÌÇ%U÷yãgjW2ïì€g:å 6EѲºT6~­GôÌÂ4÷fY„Ý¡wiIÈCºÝ‹-¬°¿Ñ¼UrLáóç~oÿª¿ÓÑ…·–�_\#~qBc‹QÚ%zá˜vDc«þµ6G$¼8‡—É|ùž¹êŽV8À!(«·R¦J`"r�) liðw:+ÁX:Ê’Ti¿ƒ[‡C$Saˆ>§¨} aˆå38$÷9ΤÜD¨ÊT9<¨ìkˆ0Ì «�&¥­ßç.M»Ç­_åÕ­brÄU° T ý¦§µF±Öý³÷ZäáTj‹]kàÀ…qÞ»›b­»¢Q!`wÊZ-¾Qykwp§íÒ(½®l¡ÁCZH£`«UÉ-ß�k c2+ú—·èZ‚læ1 òB CBå•[mgmc%úºM÷0ùqÃé¡—˜z¿AK�âc)3ÔøQ»qéÃû×|Àrˆ04\s`XCð-Ã×!–'”RHímäÇ·Ó .óA£©÷{§çƒž×=8è ?BÛ…€'jã$~˜†Š’­�ÂþuæáÀE«÷!%û®î¤Ý °æ>†<1‘[3ƒ¸œ!µ\Iží#&$KbM kr IN˜á~DÁywŽaPf©aÛ<Ý$݈«þ 6e$œÄ†u–Ìû!K9JÜñ$2Lš!My_}l8¿UØ$DËÝÅÞŽ>Ñûh0¸ð~òÏû×ÝþAïŸ`تÞýÞa¯ßs‰sï§æ%ë6Ò‚C“•<¥GÕ†ÂåäDû<†áã+¢ÚôiUTî?(èñúX@¤ýYŽˆ›HšÚÐ( ߃1An™ÝM>ÑÙ!qX�@Â;¬+W"›�àš’6…Éç‰ñâvÇ �N6 aŸdXyÃ\`ZÌbIÉ<`Ý9šÏ$¤h%£béFj,_-vþ&àl�û*Ä\B›š}C£ùA¸ÇñÚÑ$Á³P(Ò:Ú°0T¿,}D,*ãM ±h£l²H­E@³Ë]²\eѲ®¢!cÅä ØC�H‚ˆ*“»N§×{b{·4ˆ¡ÌÜIæRÛ¯La t¼‰÷‹Jb�[8˜:qBÕÜ#�”bCû°MºÍXô ò§éU>þHB½ÚŽD­b¼ÕÄÊñZ�µ4 æ,EÔ%ˆÑ€ƒïL÷•Ð t ^ VGØ^;ÂbÂê0 ™WâpM ”RF5 ýìBt¼A¢ 9Xå²…ä6"M&õËŒ:„Š#x§Ø ¾Tàe’ÔÕ„œ¯Ñ�?üã>üS„=çöò�[Ù^— ðˆ„W4ãó, 2ÈQÈ:™øX‹§³1ñ£±»Í â,ïúb:‹òp“¨)Äúx–§í‡OÀ*a¦…ÈrÕÖQÜ�Eò2q~IÀ nâ³õD ¹æ4•>#,˜×ô±¶¨ÑQ §„\Ü`‰ÍaŸÖŽ9ËûJƒu#‰Ò6|4° ‘Õl$‹~ÛEW“:u1%#}L‘LÓHºšp8eEB¢®×¡!šhÛÄbÂÃKj�œåÆ›úy0�N[[³F»èT`ˆ‰uɼù’Ï\§o:Tl“ŽÈ‹ IG¨9#^°ÈLŸ'/,­Fh%Ü?˜Ô"Ÿºú¤« “bð¡h`žE¡òº#ûP¿j9/À}p#ðxÒ Ú=D"e|8rÕç=åb£¤qfX�F5Ýó¤C°öw²žGÛ¦x"OØxáP‰$´‰¥#¤CØeC_ÉøžŸPrÊ‚ç0`€”J€ÙŒÃ{J0q¯ë¢Meçל¹h…`„]Lïš5Cr5~ß`æ0› yª1ù¨\{�<¦¼± 6¸FšåMqRd^˜Ca0,wDJ²³¡8b³O_P\�§õ”YWÅŒ‹ùì , Ðõ•ð&Æ%/ß|q.ºÀÏâK2oP¥Â+Q7Ê>ÁÙrªü{*ºuijOñ³òÑg8&­Ä›àC²)im,æRÄ’í‰ Î›«cùl‰À–®Ô01˜±ÝÖò�5¿Q"UÜÈ™o»–8AÜMàp2Þ”xĽ÷ijðF”ð<ˆQx§gšBÿ vÍzÿ¸páÇ‘œ[A¬åî….@ˆxTïŠêh’`–,ý2kC¿�Oz^÷â¢wvÀ…°’|‹9iÅy‘‹ûÿ+ O<¥"­­LýË'ä¿ù=x«™’5Ÿä¬®P/-Pw Ö—•©m·ý;KneÁú‰õê'–«Ÿ^­~J±ºT®ÔÔýO+¥¦ÌíNœ$7EV±âÖ„=£aª¸­/í$€@UËà<î]oà�uOíØÒ¸w2?ÃÓÜÅaxÃÍWv oɸº ¾×÷ç8”¥þÖqŸâq I±8êÜnót§€�ïdäd3î!�С-~í``!_ao‹osê1Wþÿ¯ÝìúZ'W›v”½œkÏOðqµí+ާ�£ç²«sXßvm vÐíPšƒGËç´6 ÀYœ¹c–�º^ôÏßöøÜÕv¶Há·:Á5I’î΢ØàÊÛ0K¦uѳ.æÚ�¶´ÿcBge÷.¯~|£LK¾g{Óºt£ˆ)êIw;dS Ÿî¹“vh½¹ê�/<í ŽÎt#_|ðÐ'£�Ô­.½ËÞÉ¡ùÙyÇg‡çJWýcÝ¿û¼ËAÿøì�nª=Êr^]]öú^÷]ïlකӬ§b¦‡E4¬i»³Ç´ÁÕc7¬È�¦�ÍBNÁŽt^µÄ›šÖ}ÎV²/&[ñ·h]åûÓd_€Œw¶¶Âpna,TãåR¢I± ² ¼hM)¢Î9 Q�š-=ÜyK=‹ÛÔÜJ·,EøUmÙí¢j«˜##vèäd g‚�Ê==°|kÇÑ'G®v—æO©Qž�LtÄåTGL,Ü^YµcÂo]rÉË’Ô*0U³Í¢ãGºYµZðÏ|šHÐÐ’—$._åŽD—þ+¨aÖÖ÷Ï)M£kö‹×ó—–Ó*,õk ?‚Áƒs‹F=ÄðUüü0Ú ¢¯8âú¾=?øàýsïRXŽeä\óÄ’Œ¾¬ŠzÓ×6Õ,M#¼r@s&õa~NÖÅZ®¸RGÀݲuâéip¥†¬{`¤FZ%Å_Â{0+­m¶ÜºOª­ îÿ˜q,òúVÛ(0ø²PgV‚Aï­|pp· p@¥Ùÿ‹…?ΩâQz}Î_“|"ð£ÀOT¶A§ÎE~ú9Kñø±¸*¦8Z€ið¥ä ŠÀ—àüRÈ¢dèGqZ% DSvn:´Z{ÏH®�??ka‰r4 ôÙN—oÿ7°ž†ä�›â¿¨¥†øÏ¿ÿ;êSIº÷ ïS–.ƒjñRù]8šùÓÈB�VŠ÷Û³¿Q¨Äeþâm?k—^BƒÌƒßÊTèøïi‡teà[ ÕI2ŸÊØj@l.àîo� *‰ÒHl§òh5W:6¦þ½G KŸŒÛϳÑ[•øV”Š”’qÍœ?àƒí�ÓúÔ™˜2Õ¹ºLäڎļ´ÑL�‘YV?'âfçûPåÅxÀ :Šû ¡:ã] F4A×…º¨ÁEŒv¡X:|ýªŠ™"DUÝZ@#’˜£áŒ^_-PߢÐé•ÙKŒ†ò c!öÿK“$5£ŠkT( þ^ã8{5›W¶9S¹ƱÌ�Žv%e<ƒЬyÎe v"ãB£5‚h� ��P©³ƒïè üóf‘ÆÂE ”Àôß©áyWð,ÍûÅž0¿Fœâ�ºsq(_(ÅNµLêÅ =æ‹åSŒÙsâƒîPYe»~/D‰l5Y(jï¶dWg7Zg`Õœ��+Áë…}X¾ÑZ.Ò2dF±ÉvÙÖ+ öJWšµ6|ã‚ð‚—ÐE75ùöWúz=yÆzÞDË(¨Q†¾Ýz‚?¥¯W} 2•¤hë[<(«RIÒÿˆe©÷[æˆëòÌ>d‡G³­x-S’q=œ¼O銯GÞIûg#㽪 -ØnÞ4¯>æ'¾bí’] „Ö^¼(õ®Z�E*_Öÿ PKÒV1]*•XmW 1imunify-security/inc/App/Defender/RateLimiter.phpUT ëÆ«jëÆ«jux è‡ÅUMoÛF=K¿bFýQ›’ øP§JbHªCÔV Y�}0@¬È!µ0Éew—¢…‡þÄþ£Î.)’Rb7 WI”fß¼7ofö×Ù2ëöŽŽºp#‘­%�–þþëF±È¸âiþ—Éâü´õÓ­uÁ$ƒ›úpÚôONû§gpÇ03( f¨P®0 pƒÅ}L�§J]}þ2†+wúåžÞG“éí..g“Éõd:7ñK­3uÞëEáø&sl;¾Hz1F,îQP¯ÛMY‚*c>–ô,»7ÉS®.²ìaŒ!šŒïº¥3¦bžpM0Õ 1Ró4‚±¸…L �¾æ"u* sÉüGUÇ+ÈÁ½Uù(ó�¥`JØ>*�u>e@reÜ ÜØCZ²Tq gÈhLˆ“kPš>#Ü$ÿHçHæ©3púV»3:nÔ\Ubþìv;Fd‡Â¯ÙOò¤E–ű(ÈÃRó¡ài Ç„÷º_¤JÃõŽçNGî˜l¸õn&3ïÎ�Ž?ßÁýþ»V‚yAI@! g�� Õá6ôܽž4h¿ì mª�¸¦ÒcÈŸl=šêQÙvgÓ[—ˆz7³Éoî=¡îóÒzo#Û3ç½ývªÑýGà!¹ÔXïÓé|2†Šd­X"D|…icª{c)Xœ�“,!›¤1tÏÄx<zÍé =⎠„iò˜GJÂ5˜›¤Î·`xæmÚÉÀø±-JÓd­üu.‰¶1Õ/G£é%ADzXÙ�¦¢€O>"ý»©k–/bîC˜§¶ïÁ7¥ª;ì y¼Åó�¯ÓÙ«Ù3aO/¹:yaŠ&eíðï¸~ÉøÔéõàIA.¥U"rz¥HšYqLÂ*À+†¡öêJ±M¨Ä&ýU)†Câ¸�Q*1¦‚ŠÃ•]5Î1¹Ä¤¦®×ËŠÖÀ0ùš õv§ó\‰©®Àý•±„Q]ËV°68^;0ï‡4Uqx~þâPV|«F°²Ú‰i7KLššγÀø¿]É‹šú‰Ÿa` Õkµ%k„ãŠs{ÚËÒW,5u*!>·&ò²j`t;ð?ò=»6ÃØCR”,xÊÊõüC#ù=c÷Ú¼UGLØÍzˆ$_1õýÐXGÉ»OL-­èÖýbê°�¸âzmË °• �*CŸ³˜æ•Dùt(k+á. Ì’àì`gÒ€’¤BaѵwN½ÉO|¹Îôä„n©j ú¦YÁšœ mÖ|.)¿Ór´2|w;�ì{û懊ÑWþ7ÓÞ,°rì‰ûwãç´j A½Ð7² a’ÇUë`9Ç ÀEEæ)ËeFòÕw'Q£oj}i ÓZ«ŒLØ›la³Òlý7¯ïÛ®íETíW‹òúp^=ìx?Š‘µoy õÄ*Ûm[‡T‹ÿÆÿÿÉñ­û¹ÙSÔ�1êær4ï²à _¼�M±Þö>®M-¹¾Þäìs÷PKÒV1] T½ê–9;imunify-security/inc/App/Defender/ServiceWorkerPayloads.phpUT ëÆ«jëÆ«jux è‡Å[ërÜ6–þ-=œR…R¦ÕºÄÉLäHŠFV&®±e�¤\femšD«Qb“‚T»3IÕÌ;ì‹í+̹̓ Èf·œ­ÝZÿpÜ pppðá; _ŸÓbsï³Ï6Ågâ¨ò�[ðß777Ð<0ð;èãWf`’™dkzR…M¥.*ƨš%`’ œc#Î3z}þÝÅ›³Ñ›³ŸÄ±8x“7’ -µ€=s ÈU�°8 –É3GÎÄt ³«JÌjžå® ¦D•‹™|€,'ÉA©qŽŠ%bklë �Þ�ýõõÛ³—× Ù¨9{ysñÓ ¶F2™él�æ÷ð÷¤Ì³ °…‹xWæ��Ú„TpE©@S0àvL4˜FH›µ|ó(K�`t¬rE©e¥ÄV| '|© ®ÖÚVLeR)ÈRb*É¢�ùÜXœ×±_²:M»“'=[JÀÑ`ÂÙãC�ŒÓ&\øGiäÎp¿Í oæþqªúÕTã±Ì¥©¬4˜y&`•ŒÀxõ§Fg÷bЙ~œç)Í,Þ¨Y®‘ÝZdfæ°hA_ë¬Ò©ÝFiT2ìªjçLe0o>IÇ46TÝÒ |s°ˆµ`vñ:'%�€ä¢×>±“NlŸ§Àö¢’å=œ“|"”Œ§N~d9OLügUàÁ"*Ä-ôÇ´”Öø@<`|û}vöSWåA,ªeŠæ$a:ƒ£‰'zÁ'“0Á´Û…°`N H˜à’åxf–6»Ï,]‹ðš Øž>oï´Íh)ëÕȺÁÕ¹C ºOUš´WY±Å Q9ÎÁ=ç2} /ŠØ�$Œ–´U&ˆ3dš+Õßj RX1[I;"�£â!³ÂÐ: *U‘—N„Sä`Ag¢Ü¨Fš™æuJhòŠõX«�¥œµÈF´þ´¸Æ·>ÅlÃPøJféç’ÿ‹ù™ZŒÑZ†§‹°õ#¨Êæün,&uŸŒF±CÌvÛ|-‹ V¬‘Ïÿ Ô‹›Ä8Ù��-ܦݓ^ãw€ï¾bª”Ý ë³Íq‹b7~ýßgY‰�ý@è=ûáw„¡Yži˜ºïæ8 ÙØ`ÉÉ%Ï'�„A�x¯ÀÑ×1a7ôQ”´æ¨õVC:ØLâ~³s&vf%š™ðÖ̈6ÇÞþ%ÄxøH1%¬=ÃÉ3@& òGèÑ`@†6ôuVª{m*…#a2X¶á(ŽBÁ0Þ�âøÁ <4Ø ‚uÅ{ +z„…üPªª.3r†>õG6ý‚=Ü6ƒWOÄ6ƒùø`Ä ëq‚Ü{cu‡cÑŠø�Ž´ù3å2ÏÎmª²-–P¼ƒØFÀnXíWÎÐöù!•1ý¸�÷”ƒPá ~ÂC"¼b ?TÞyˆð@%šq ‡+ü™A Y)&ŒÐ34ÑYB Ü<D¡&R?ê3IkJ�ªÄ¼Ø¥˜”·Ž$@½‰B% ªDÙtp¬+\ª8¿ÏÀ)xWQç¸.KôC^Ôœ ê þO¥´Ê2dZ>¸Ãž€þ%¬¡�Ýç&Úi{÷ Øpr§%!sîžàB‰·wvO 8°ÿïÌëæ'-cÈ€ì·BíNŽZà訕2ØQc˜ü•d-7¶8 òëÌòrF±Ð¶›î…Ÿ­9?<ÈÉD\A"«±{{�þðv“Ÿýȳ ðû�Jâ7ˆ÷J€Y‰¾ rN ¶U+²M0—%‡ù4qHMuÙŠõØÆB}Ði€,s ½úÚ@ëÖ.ä6ÒIt'î`Ak–´fœuNÔø"àÞ-õ?îßzè{C#^+´ìψê"ñ¸R{L†h ÉÄ'Ít�l4†ÎQãé´ô0À_ÄÃ¥ §ÀïØZÂR òÁ–c,-@Ï©¨à\T¸dtÅ™¯a×p”ÛL´—VfU¨g蜧Ûn&¶aŠsxOœ:>ïxªZ`&¤<Œx´?ð›hLt7m©õ°±í¬L¹É¶Æ #$Ýè)Ú•ÝÞµÀÖò*¶Kgß_çùƒ­X°yëˆt;�±,ÜqšˆøäÀPp4äC8’�Ù‚Cy•ð¯À8e‘cô…yGÅé”ÌljÔ�¸™¯Iç†üÃü�‡á·{•A$·Æï6ˆ(THRGÀò1׫ñ ‹zç%!´FQ ü ¸¶²Û.4Á?n“t‹G‰¤ÙB]xV)Á‡[… 8mý>²‰ykKq[lÆ,;¹² Òæ—¤1 ¥üÚ°¯Æl↰HEC(º45„fØ…¡�(ÜÄ„ÒÎÄñÙ÷¿ ,›dqú!q÷`WÇÝ2øÚ9 —k,kvhy+Þ\ µ¡ÔuÛVù^ßæekÿžØ¸.Ó7[Øû¥w3ÿX'T Z¦`àë(I3üà ÿ¶ÇL!ʃÍ`ã¶×£“XKÍŠjÁØl˜)œg›¨*šÉ£‰ÂŠ®ªˆ�a¾HŸˆÏܧT¨ïºFílú 9í/÷9ܧN�7„Àà�y5ã4�8×·°šèceíŠÙ?«2§VÌpTC) aŸe¹ ,‰(�ŸÇy²`�ÃåLdsq®Ä±Hü¤†˜¿ú„35’U�M¥«ºrI_¢&²Në%ÌkyQäÃۛãÆë¦X·±¶ø–M Û³ÿÂ6])ößAÓLpSÛÑá¾-9¸¶dø›¦�؆ã»ãÝSJ`‰înWnò��Ûêy¹¶©+W"I0[ÕNÑ×,͋㦮4öNK ¡»å¤«íZ̆öØ| ¼á"]è{ã]šø[­jå3.Hj(s‰±²ƒÅÙRÙKLqßö”‚¶Â\%r¦KïR —+á• �ªòð)yODÆ {”i­,SE˜S�Ž#ŸçÄ0�+±‰žé[Žâ@0Ћüäpó©ÃìÜ&Ÿá–+£­¡³Ó6Uëÿ½aVÅ ÝToÉÐFÍôOÊ"W’$ä.ñ/_Æ£±|…FõÜ&ñ´Ž“*ÀÝjº'Ø y t ²ÊgÜ´{g]Ûv—Y­`àö梽5µO?]÷y÷Düí ™ÛNtz¬Ã-¶œŽƒa^ÿe‡a»ßF¶nF¶½òíEݱ÷ª^‰Ø¥ÚS¿üñˆù�”p¾â—_üÏ›|ë4ÒIŸ6:qšpŒ²Óýv$¢ÈkEœ-ƒ,PäÆN÷@"@,ðmï?oÏvÿCîþ¼¿ûÕp´{÷÷ƒÁ—ÏÝÚ‹6øX§�KADPŸà–F[¦¿Ö¾øak¥c³v'r¦!,ÿ×­ü%ð㾄tдRp:p60gA–;ìõ/žFøÏèrÛ¡0@õ zó)·”Éb|Þ€U¡ÈûRQõ 9Ž«¦ä5m9 Ìò¬Œô‘v°9-a©ðE¿¯€�mÓ™NØ/Øà7r–ðâ:ô÷ù øe‰ÑÍTÜ`ݽ‘S?¶Ž0÷‰UÔÒÕ÷9T®½£°“³Û©ðVB(óuäf‡œ¸jT[Z¬í`Í‘á°ÜåÔ}‡Yôl¦� °]‚˯�v®Áš(Șés˜Y_AkxìzñÌEbµêÜÁj®�Ïý{:œö´¹ROç‚o^]ss#vÐÞŽ´á–èŒäæåuÙ¸§Û�›¯U…çpiX×ýž;RhꬉŠS'èºWK¤ìƒáÀ™¥Q�-ùb.ëø™¯äü#s–®Oí#6N]˜’¨ô¦>)`huüÉDïßEnÙ5õÒzSÑásJ íôw8jÊJm"^Qmòób$Þ.U¹²äˆ�I«”…8ì«AÑ¢}Ý z­¨Uù3Ó-Qù/\F²¿l™©SMr];ˆ¹ï z@ÿ�ŒrP%3{‹>Ñx[=S2[Þ~ `&Ð\­L?„1Ør�Ñ)‘·†}Éê–žÖumûуá~7ç Ôe¸?3�mcÈ^h;ëÄ®»ß¤ŠÀ£Vs1�ϸ‡ aˆå-™æŸ€ wq¬ª¹‚xŸÜîÁo»lkjš$+057œãª;–BT¶£\îüõ1«Ó–iT×°óÌ…µ¶ƒ�8ا?0 Ƴ›-±Œâ¤~ÖôèöŒ×@Uº± ö6Ó©TsÍž±X‚±ëˆöŽþ‘`› n4ð©_»òÃ'aýF"]í~p~WâN}$éSöÕ^2ìrÚÛÞfOΫE0›íÙT–&ëëqÚ×|Ôbdj›õú+t[²/ܦÅ[4³´Ÿ8?FïÈ7Ö,‹*uXO1¦]�—*ó4uŸ¼€Ó„ç”Â[|£©¦Éi.§Í‹Â0�†…È «WNÏéq ]væ³:Bi”sÁ<ÿT¦ÒÊ ƒ½ L`�ÒXì^Q,–í\rÖ ñ2ÙäÚ‘¯¯Ô)c`q£µˆèCÄÆ•j–?ªdÄ*€¤¨3ý …máHÆ"�£6Ë5]Bæ‘âÓŸœã#%~f@ÏV­¿  UM�LÕ¾rBQ\¦ù½^À¡ ï†}—àŠp¾éÚšhv¢øwPW6(ª]mŸ€e�!ÙJ‹S¥ï¦s—MÝä3® ènÚP{ÞD.¼5€tÚ•LØ\·QA½zNIO‡ÓžÖöq\PÐsU|³>òê z¶LµH•xúO³Ü¶Qn‘v]k¾C~�/_".*®YakÔqT‘¾»~+n "@ÄÞð6Ñå,‚ðÚ[ùS;’~„jp ߣ ×?mµsß9Wölå«®[÷jÝ !’¡£T‚î†,ñŠvŽ�¦ÏS~@ݾý£sg«(ð7VÛ¯HFy>ãºrO˜=ô—Þ2“¬±ŠeMï9Ü›hzÒÊÕßá¨ýëÿEºH[¬tTKR„dc~}lŸ,Y¶d<†uX⥼¤7zx7`‹ú•ž)|”•Oð+¾‘UÆIsï­š£kª¼0t (×ãK1|ün*|÷m€æÇùcºÅù8¯l*Y…W3´-¼Wöf¦¿d�ªŒÆ‹J™61[p~yxðü9ÆC‡ô÷ó?|ñû/›,xuÉÛŽÿ|€¸;ØwC¨ûÈÚl43Ñò”ŸCT5‡_ìÛ(̵Up;¡�•ÔH˜%ßÊðÓE¥$n�ÁJ2¯E�c™!0}Ÿ$ô¶Ú`9Ÿøú:Ä·9½ŸCFNäbèÊ4 øðQU¥#hì[ÅïF~µßŸ"Ó•Lj¹(oÕ· tq8½ÀÅœçÿ.)^.pø¶.ÉuW9«Ã· Çi_sÛ[p3ñt¿k`gÐF6ú¼ž¦pcÌÜdý^ˆ×[ZÚb^‚XV‚ŽÇnÐ ~Á:ÜZ™w=.£ùæ–Ý$u=},só}“S€7§…§å¾v,Ù»U,½Ï`…;ðºâ«¢_f¾:2úçÿˆ­."= 5w·jA�Ó¾æ¥àý\XR�ß•âù¶ÏÊ…¿'²/GðM+Þá,†ô­ÄÛ²%Kb�WfôÆÒ9¼^Aáǽ²ä  Í ’$ç¶Â9Xž!Ù®éI¨}Ë®HÝæBsQ5ºö>³¤�{ËÕHítÜlÐz`qÚú¿¤®ì£J~ xñÃÅåÍõèÝÅÕèêâ/ß_\ß,ƒ¹« Mq$ùry (´WÑìú5,wîYÇWû=ÊõLcWÊ&�™îžþîžf~~�ÎÒµáÓ§kâ©8HÒ›,¼œ¢û?ÿÙQRâ8ŒËkñË|üNž Òó¿\ù¿ä¯@.„—1hí F ÀB¤"!ÍÂ+¿�b#`•­‡@[2iT^Ñ�’‰ÑAd¯†ÏÏ2ÿæ6.£¨Ví¶³”hm¨FÎA™ù¨×ˆ¿gòï¥Ì‹:V×ZÑ3’=�ïvër–…-Íao p^d «VX²ø�· ˜� 0³rÎÁ—ú™?WÂÂ?Ìç6陵ÚÃÀZóYøÑÙ„ô•ã(œˆiÄh4Ñ”tº¾ ª ÿèÑF1 óÁ«À¶gT ziöìYðÌ�†Cñ6É&(4\%ÌÅLÆ`À7JgD˜ ˆBödHó¨äÁÈ'¢»¢cÞŒxs§ÏZg@jú¢“Ä'ôfŸW¶ŽèõÅÖf_l‹Þn …l%È7zmèÝgåû†cæ‹°@­n‹_Œhaþs|qF‹ âç«ÿždÁI&s¢,¬/Øx Ê)Ê4hås™^f>¸½8Ù m™§‘,Z©û¨ŸðÚ½ÔåûWË ~£B“EjœÂ3îß2öÛϽMðÛæa&‹2‹• Šs –Ñø,)ÀæA§ŒÒC€BŸþVuYÁ5Mwvjž»Fó5¹aÝŠTåëˆdõ1‡ã'I„^ –Å"ɾŒÀñûLËØõ©� ß6µz€«=‡KWI,ñMséjû5—0En�<%Žtë"¾»\[ÿf 3`À�ܳð7ù÷PÚþ¡�‹Mª¾ KÛüK++™E‹™ò¾¨ÝÆrô–‹ßOFävx ¯r÷$ã?ÀÀ–íJ¢ÀÚßš»îÏ`Ëv«3ô-Úú6ÆoÃׇ¸Ou˜_IÉ §ƒtL7)®ƒT•ý*ïá«)#d�ö¤bC;`™yØš�7êÏÆ,I¾Œ yË|qHCV^Î�ð¬�í‚–‰ÀEèè€,å�’Xâì»É}‡ E8]ñtR£®ýþS¹Ôù ënoqE<Òñ¥¹ÈÄžÎX¡¨cBv‡c'†HjP±òð÷QäwÂBÒ¤tX¶ñxooéº6 ÷ÕºãJÛ¦Y2²u9Ài.hZfꌆ¶�ÇÛ`]¢T¹òp‰R1õojk8a«U’wsea}„›©²ä<ížT/�©q¢Þ£ŠûW~ùãhiö‰toºîöÄÔ�r¶_NmN™°‰] :?ʤÜ x¥ú7Ê TàiacRÏBdÁ0Œ'O@ ÜŽ4�Å®òÔÓÞÁ«0ÇÄ3‹}}ðn{J¡ÔñÀÙ>ÂIý"™gÀ°Qî@)ˆÏGv! IBöcˆ"¼Ò¼ç,Õ<ü¬˜ÉÉ4bÐ<¢–ªV¿˜ sbH{Ní7¤Š°uà ç*µG"º¢…“L>z˜ã¬öKÃ#€X  ‚º„`©4Eœ2G!�€:O‚pN¸~3¢ŠOEÇKÒû1c«Î3.Ã(8·ß¹1ÅHÎyvƒ ­Ô¾¢hfP¹vË›+SÉgI qjlœt� QN£M]€JÖMª½ö0Å$¨,Î4i vZ0z¨›Ú?UÏ?q�ÜŽÁ}—…X6ÈtZm×§m¨TÁKÈ^/{µC¥­a²Œ áþÙ«9”�Â~ãÌÖÙv[¨µ*Dz™¶Vçé×5þ[kÁ¹'‡Aª×Ò"ò¾p�$)&¯Åãi &9¨tÊT/5´`¦ZøóTÔÖ*˜ J·‰¥4ê°Æ+¾äh€ÊPÕbÅ-/À֌׭ÏwTÜ4àŒ°!#yåÇ…v̌Բ¦Ííê�3J¨€{™E™‘ö-¤˜ùWR\ùQ˜v–±un¦Š…fKì½­ºÚW ùTHü+-øÁ«"aµêñ*uÒü.k싊˜¾òצ¿6:>z{x~„.[1ÍVÈš¶háW“Ø–Ñ4HigfyÏꪴài`¹3›0Rj�ôœ6ÏÒ *þ£X5“¿ÈNz9æó.�/YF�È<îB^S0Ã$ŒIä+¥âœª K ˜jB•¼ñbN+°óT¾q™·S.Ëæ+ £�«‘£k¾¥`=“€]P¦=1mBb`MX4q·­ÌÈ#¯òÆA›®?Ôx£æ&EÍU5/AÆa\͇ËÜÇZ ëîi¹5»Å/ø|Yk¨R^¨\ŠYSƒ­ÖOÛÚåkæAv¨r„NždÓöWL<êYM)0K'y#]gñ’”·î†B X�òÀåçu°/;êªiYó«º_ðDgÔ�¿«]Ÿ:”z‚B´½Ã´­óyueíV.²8¾þ3åȲó7«/»# /+tÇ¿‘nT/\å°ê®2ï:/9¤–bë+f¬ÉÍí…?Îك̡„KTòѼƒºgOô_åšÍ0÷ø+kÚ,F0>h †,ò(k°* 3ê:È(hÝý‘Wà�˺DT÷ž#ïm,x(ìôUý˜`%¼ó¥öæˆå7Ü£2e˜æÐ!j.8ûÚËç¦À¤Ð¨ �ÿà«Ðn� �×Ê)æ´À­:‰z;´T %˜æ ^ ÛÎN˜ÛÇ©r/<ØWÕGÝ8),N`ÖŒ�&¦gˆÐ$¨•ùÀYB„žChù½‰,fP*Ý’!5=|¥àðéÿZÝcXLª�íóGOuªç°Ï¼»‹õí¿-t)9ÅÀ¬¹¯»#ZQ;¹%È8…LN¨ƒ uoÑlóÜ×,ªÛwºàTßd4p£žK !A'/–ø!ó#`+­Éˆ pí©ÝBî0íxµÐ)±Õ›ME­ûãvzöªN�Þ妄•ó·œ:7ðU ^õz´bŸüåèÃnj5iÒJ­¶­YÝ@PâÌu”¾:âr]ݸå!À<1�Û0íšFÍcaCÐ킇U…ÜBW+1”±4‰¡ôü~Ä�¶ó£ãé:Kz§Xk/ë²­ÃöšivÅ¥O�ßÜd»ýÕNEŒ{8 ûþ¤[WQšüóA89½äz?Œ©™étÕ†3½þÀ,íÖê¯0;C(T( #vô¼ß�r¿qx·öulèüÝ!NÃ|+2±_95bX™eèÕè.ÀS6/©u¸HGԚï]K9ya@@é( |ì�ièx€hë*¥¤U•NZ¤t…Q9á»Rø6ÐÿgÙ;ôß%úƒ_O—J¾E´Uk�²�l¼Œ’±‰ �°Zù0†Uû¾%»:�¾ ºÎW…�£–´mj#GNsÅ2�ÍþG7Ê››0:ñ�›~1™ ß¶¡¾È�‘UüQæhEI΃Dðˆ�A‘ÃæX�àÍ$^ø W¡Ö¾„ÓÞð5%Ô�¹hÇþXª‰³23Mýˆƒ!h~µr„%TÇNHö£‹Ÿý¿ž�쟿Ãbt‘ü`ÆC¨Š¢2�ù�÷«‘»*™8b1Ϫ3/­Ð�$)1RìRæ»f"ÀÌ0”@“N¯fz �‘Œp!ÞöëãS¦§øIø<ñø=À©I¨'^$'10ór:Z°ãrh¦34ÖÉí*«¨ÅÙ, ’ÌœÎ<ãë39gH jŠOf~|)Åb‚¦piLZCý+ÅA¬•»¤•="ŒO¤'µÌ™ÍØ�Ê 64Stx„Œë: pI^�™6`Õ«ÖÓ„¦ÁL!–PQƒÎ1>¾¢Òßæ ,™±€éú.Ôn~ò§ÿ�ÇÜš©'1x‰Üa·×ÜŒS�ES ¡n,6R¾µûýdÄùæèÍÑ)ª÷�z-ŒÊ¿n´W¾qäýÎuÜÆÜϾ”©¾Wí«89sך SÎ7Øšï†[/c gv¡P=¤¸ë/„öûª-)c,¥ÊÆ+|rÎþY]�YÖ­ÈîkÕýo«·¬ÆDe—ò4ÔrßTBËç‰0Љ“ÚºÄyEø7—¨¬ i¸ºÿ¢ÿÒ"ûBÊ$�ÔvŸ{Þ–·ý£^ð”c™×}ïm{ß�¶õÊw7)Ž|>ctŠq9ãˆÊé4¼fl‰ÿý¯ÿôÙÛjìó³qÉ�±¶n½€½až—rðÃO/ |¨Aœã�m(·R~¨óJ,¢Æ¨‘Þ9úµöX$‡yx-Qô`’@+D…‰µy+�WÛ}ñ|ü¥¨^LôæÏZX"Í?,¦©ÍAh±�BêçŠp©õk�Ú6X®€nA­nr®ö© ³[!7Eí‰j,RôˆqÑ¢Õž8Doº¾ ÒÚÚô^‚ޝëÍ“‹l�ê˜+Ó�¬¶ë"Ð6Rý+‹3 >ŦÜ=Œ¢Ž°¹èëÈëžåÓß.®·7×?~j÷â4¬Í@Ø|9Å9ýÌŽ¯„��jñ që9«"‘­"ðâ™÷t£�255 bfBÅnú‘e/ü,дXž@‘BOVR’ßIÉ)¯$7 >€šè, Vô(ß‹¦h@k-t}Däµb›V?͹qkû¥ŠÙä� Ÿé˪Óyn÷¿—cÕç+-_×8¤òv 3}ó¶ï>èh9JŽLbF¾�|»;¬‹��Á¯y[Jç£ÔO÷·îÕë‹àY÷õÎ…ÿöžö]ïY�ĹQµåæÖ`�¥Éµù§­Ï<ɪ¼-=Ûþ¼«û±ÿ&e*¾ÄÉ‚ñÆa„Sù†Tý;Â(£ßv´p0;ÙZï³”6àQ·Ö«.üãÆ1Ø[ßâ¶Ûñm6¹õQ�oýÛ×ܦÑmz @zÝ‹àö“7ø|»Ñ£´A“^U­\BÞ «åøÃ‡rNÉ©=Š×e’ „—!¦Ì õûPÊéÛ…¨f™Ä5<òOz°k—Iß•º^F†ÂèTRÆa·7⤼lmvlÃ&ôZŒÁç« µ{á}òÿØüÇç‹ÅÓÞ³•Î1ZËmÚ^z×-ª^²¸0ÄWþk%™¯Þ»zšÔg@k÷õÞ…‡ ¹”às•$´¦˜7Tñn <Ë àâ– xêÉ*Âê®àÏï¿ö葵±Õîr#‰ÅTJ?+3B¦\0’Ó{A�fèŸRÔ¾7Éݹ ýjÙ˜KóÞι³kO¥Ô-•n ¨K+ +qnõï�¼VH üiˆÖã.• #¯ö8¸þ¼Mµ×LÚp°fY�vçý‰{œ¾C{¦Ì�}wíè{jö¬™ñÕª!dE*ÿp›¢gTƉ ¹Ë®¸øËë”~ú6ú¯'’ûþõ_�X“îœýtŠ=y%¹”LMP[SV´üTÍ(™÷ :a5Ìíú⡳!j¦�ó<Éë x=`(¬I÷’R}ÉŒ¸ÎËi ÷¨_s “*ËS“Ð{t�æÔ­ w÷Øú}‰ÕÎSóç¹ØîéqRgÖ�gPxÞÚýÙN‰Yëw« «Z{­³aOžX�¿¶a—ê÷ z$ÝhVÐ,i¨#ÝÎ$lëÿ…À­·N[ÖÝ1kî8[GýÜ^¢ìëÚÿPKÒV1]Àê±Oc8imunify-security/inc/App/Defender/ConditionEvaluator.phpUT ëÆ«jëÆ«jux è‡Í\ýv7vÿÛz 8ëQ)IÙiÚÓC¯ì¥%ÚÖ‰-)¢Ü$Çqy†�œõpf2˜‘Ìm|Nû}±¾BŸ¤÷À`>))N»ùc×ÀýøÝ‹ üùy²Nö¿ùfO|#Žãd›«u&zÿýŸâ8Œs_¼ ¢ü“xµ™¿_—>Mãev㥲/N£…øöñ“ǃoûOb†â©(q)•L¯¥Ä‘þ›`!#%}‘G¾LÅñ›ów'âÍéÙ»Ÿà�'gÓ‰¿ºœLÞNή°ý:Ë5:<¼¹¹.pä.âÍa(W^x�÷ö"o#Uâ-$³GÜýrºÉ£`¹ýeœ$¿œÈ¥ÄŸîíåjg«_ÞÆ¾ 9Ž#?È‚8zzŸNÓ8Oò^]¯¶É-;^¤ñ\þ2ÍâÔ[Éñµ„Þ<ƒlK?Àlí¾jÒB^{aîA±=¥†zcŽã8õƒÈˤØBŠTª8Ì©�ùbãe‹u­Äº*¹ÈSE¤y(Å·Ôþ¢‚6ãÛá“ácÚ!«àbb™ø÷½½Èãèu•z‘ d”‰�r+’T.ƒO4\‚“Ë Åñ³ugY(a°Hú ¯2qqyþb2»ºŸMOAxf—“—§?‰#±ðÂ͈Êlÿ©3â¿3½q €�Œejð—k/åV—º‘4IƒkX,ñèÚýÑ¥],9-];yÛð-·«Ž »»´¯ÖRÀŠfb ;Údw@ø9-’ÞeøÒ6Xu¦T0}$¢< ÝAI¤„ïeŒ†r‘ÁÈz¼EU¾Ê#³8üãðñð»2;*Ãî¿áPU†h»Np´:+So“„8®/£xƒb RRHJ!�¢÷–]œ܆™ ʪL(=ÐI1Ne�aù>;$^êmÊRC3ð_Y^„þïÖžBžƒTú¤aj‡y”�X”Ì»cCäò A4óÐ);Ø¡/ô_UÃòûñ›i¿úùøüìj|zVÿáròjò“8蓳Èå×_3|9:ª1E˜ª‡­:g¤ 'Õ€ãÏôµNÃã GM ˜Ðûr ¸aî->V5Å,X1C¤‹ç*ÐüX w˜�ÏX–ý¬d¸�<ü²�Ì™š ^ª2>Ð úGf÷÷�^–¡†QH¥ÿY‚ ˜ÿ,ó6CéíÙiö‹ÆRTM (˜¥p�‹<}€ fñz¹):@UZ×2rµäéÖ ®Ñ8’7%Ç5cû·ð  „-½ÐLûX¢ÆÈ[}ŒâæGµ*ú.9â(¤&~Nà÷xRR6ä�ä§„Cø6m+£=3�^±Í˜ *í¿%iÀº ÝFOdòk;o(•:ò Ÿ[½˜1(z‘”~Ø`Åî=MpÇ€© Ý“3Óq×Èðiî/Ã(û ²o(îàÿR®ä'‡yÛm÷'“«ÉñÕì§iáaÙ§A³ýD¢‰MxszjÐ.ØïÀ$œ$ª¡Œãµëq³–ˆà…WX€}°pdQÅý%Xœ­˜Wí£õó"6ͬî…Åxl”VÖ"` Úkéa^³«qü1�#0Y1̃K4^qny8E”nøW6ãr ‡Ñ�+¤^bÀšÀãÔ¿g¦ùD+[{ Ï'ȱ‚ KqŸ‘›yŠ ³lôšXDîy�‘ZÄ9ü9לADØl­Ã ¡(µ­ÀB¦é¿0e0}fJn¼�©ªeݾ£ŒðÝ¡Û-QXyCµ»Wõ•¬šg•Zsbûv¿ÚÈ«¶Ú0U³§ôñ V\ƒªGfñŽjHŠO ÐDüðn2½š½žŒO&—.vª¶8>?ÿþt2e¥Ð˜ÐlÌÐû}rÿfÀxtƒ»:±‰£WœS2ôhy÷?Ô@[é÷ _G+-“3”Éým IQâïK8Òóå0?˳w÷,Á-Âì/ôwË¥KqT—ú™g+êBP¾u91rPG¡¿¤›Ù>¬áç2º®óU–WÇ|Ø4f5Ö±ý ³¬€þòd͸©w3ÓÚû­ÜV3ÛØØÝ�öqÌf·PÖ?7À4#F/OßLî"GEjØ••ÒÁÈh œF¾ü$ý…ÖÙ‰:QäƒÃCAÞˆ¢8ür¬Ðª#°|>ÐHV‘§˜®À�´$¨F O†§ØCñÒ B±cE¨ áYSíp¼U*¡=¨[AÂÉä"‘âL÷I=‚G£ðÌ\ÝÈT˜—(æs`¬0b*üÀGZ€;?þˆsô?]k Ô¦° <Æèñ�pŽ#3XõñÙÏ"OÂØó ðD´Ë5lÝ›@½ B©�>hã¦8é‚û=>É€¥ |ÜÏB›ˆ)sҕωʩBÌ‹�rŸ¢Wƒ-üܽ˜ È0ß ã(+ËA³§!‡[Ñ™ºNXRàDó¹k›” ÷*Ý5ü‘Y‰:‡`¦yÇt‹Â„÷›)W?k>KgÇú[NºÌF¥~ GtLQUÍ5-+7½•}«î/Áèk oÅ(7½£ï.Ës3ïÒÀŽßŽfgã·fsÀ¦¼ Ò¬Î"]!>Ä9ôÐ0«ãhËPà-å×Ew693:Žý$+ÇHfDÿ^¾/#q9þqöâüäçÙ÷“Ÿ VÉPlr° 0ž!±h”Q4N&|¸{ÞãíÙ#w¦ ÍØ÷X«IQo@ç[ò%ÐH—Aå¡®“*B‡éB¥)LÊlô”1ð¦ôˆ0ÔÄ£ï¦ဈÁš#•ì&6®ÐOƒ%¨8¹o«Mý$ÊÒíi‘.öBÌ l…Ãä�([PäTà;Ù�1lA˜´àJ“< ð(àUÔÚK´ë•`{¶¥ú(·}Í&slW- t E¦Ø/Â%Žˆ Ì%‹$€PаÿóÿEkd»œ/‰pH±¿?W°Û¸ø,„B‹,Ä#˜$N11c¥‘R&@D(Î)­ƒä‰ͬlàÅ0óòÉ#"Èi‹ãØ1¬l2$”@°ÈŠ~$b´ŸEûyŒRŸê”MaIÉçP¼‘Þr ?e€yˆÿe�*LÛ¨ ª²[ãÇ‹|£Ç_!Z.ðÞ08F¨@Òñë Óq‚Ã.ùW�Ù—'Õøy TÒxv\cÕG£ûÒ/uXñÙœfÜ2qƒBœièÓ‡¶”‡+xõ´Ç9¦#¹¢RMLkYY_�é"Œ‡›aPÖ•h‘åTÌåË(ûS¢Äê«Sz¤Õ̸âé ÅŽB®e­•œü@Qg’f䲈¼vÈPZÌNfr@ÍɈlPL”Å4“y&#š�|`ª4n<ˆÞæráa¼ÝjÚ”h!Ê#^@m?˜M6N`Q+¹//âå"QF«Ý§CÊ«Æ`W=c†Ú$€Íý(eÂö’ÌÁ¢pšv.×`>À“¡$û¤§• æyVÕb¶%´æ\£Ä{ó$V¿\j ךýZPäØÓxãŠåí2dN™HÓdú–¯ÿ§´Y¥èÊèȉLdä«óH³×AµŸ7‡ßåÜ©ÉÍU¨™.0x4G ÜpÀpR5WµÚ±Û•u�§Â1d÷®‹åžgF¢ââ�woÎÇ'³ÉååììœÜ��ˆi ªBáNÎÓø1É~€ò9�â‹7B¹ÌX£pƒ6M£9•o$ò¬·[ñ•�'7ÀODú_ Ár†T"RêÃp‹0÷5:”åÓM½R�uª²e}RcôÇa‡±:™u÷¯Ïi|˜-Â'˜qŒf·ô¬õ˜Êœi_\ñ£ÌSªAWA@"ôQ"þŃ*}Aˆ/¥¤[M†”€d¸wÏÌ•“·ª„ìÔ±ÇÈ�ĺ„ ­ulбl‡]™P3– }Jê‰"C¥”÷Ö‰¡ŽüÒ^c««(¹ìlºÖ£Ó=` c‚ 6ï :lÅÓ![[DíÑhÞl„�¹_ §ë*‰É 6é­Ðl5ykÄ °¾S$ES?¯NîÆGû¸ªéi56�’è  'rÒ?þö}VÒtx¿O~Ë=Õ};‹Ù�±ŸÜŽk5rx|+Ã%Úr»œ«`yá°攇Ç}¤Ñ‹Ã¸¦¨°Ò¸`•ù §ÐÉwx¨�ÇI〛 óUÁTnÒ8ƒH W~hJÖaau-•xy(U¡— #s‰¤%Ó¹L*© E¿½W8” Ù ÐÍM’8îR*v®[i7v®Z£ vô>;åB†z¿ªb7(Ú…„n•Î� î@ ÐCÏ…3Úµ`ÝE®´ËP&ûS¨Ê%Þ3T  &Êk€5*�9£�4–qÄïƒ�·’êÃû)›Œ²»…âL `ൠÁ{ÊÄžÛÌ`þºcÆìvhEûtÉy²w¥éaN]ƒ´|s0§g²Ã.À’0Ë6é¸Ë*Ô÷»Ì›cXŽØê—~ÖÚ_Z1¼0l”ñì%¢Ó‘|u ;M¬EŒ¬E—ËlŽÔ“bàÏ™×ÍÈ¥>ï�q·Ýh‡HS[ò„Ö×»ãWÊYïtñ¥Õó(Ev‚ [I¤ƒeS3Ÿ¥ÁÂVŸqÙû?R2úçÀó}¬£òUŽ¿‡è*9Ö*2ø`³c]¥¦K[¢ ‚åpËqƒ'æ˜}ÐUÄ%�GO}4¥lRŸ~š#NÝs«´Ž˜Ô-Ò­µæ„..é9LöEå\æ�1%Ca¦Âo¹ ¢‡séWfUÐЇP$¶‘�⮜—©H†kç…ÅÈrG¾I©á� �§m ´íxÁ´1û4âú;ŽD èJËÉ•yºâ@ƒ�z¥Îùj]�:L%b´ðˆt˜}—2©¦¼ Ç`�g«àx»4'|®�õ˜rMàÇå‚nc¢¿ãJf ÕÄ÷`q† ´ §ÃÚ3mœ£6ûN8�²+÷>¹Ê4Öw²¬Çß'°+T®œL¼U6ª=¥ÓÆ™ªœò ÏÆŠªbצ•Š@4-�GuýÆ_*ÞÝÈÔB#û—ª™K¦Î62]ñ}‚ »õ› å|ÕAq»£;ÏfôÅ– ®J·X[+ Áþ¡•]ÅÚÔø+O¦aášÖŠ¢¡0­^8YËêÝ>GÈ7K…aMÜï)Çù]Å8l >æRœÚYk(æ�s:#£óÊ5P^ÝåƒÓ$ï OÊÇr|�Ù�™vObâ>&G„±Ÿ¦£“ë< þfàfšROû‡Z.£è|™ ÞLÕ‹KL»Rym{ù‰]²Â;Œä‚ÛßxìÈR�4�ä²·ŽbwÌ¢a¦„oLѸ=ø,ŸÑ™.'WÍc"&x³Ç@Ã" `\;¥N)LóBÅ•q¢%·Õ¾îY\Ëúh{âhr½M¿º{´|³é»³éäÍäøê µ­–7žëmø.êla/£Þµ¬¹øøÞ€.¸#ÀC<‹^õ­up÷¢ç†Ë¸w:ÕyäðÖug¦|Õ¾è³Ã¨­Ñ­öÂÔ¼(¦+q�¯Jw�M�Þ>õ•îV+ü-ql)ùDT]ÎqésÓL";Æ�|õ˜8ú¬hqN±·ZÄI¹r¦Ä0ýTš’Á¢¼ŽÎWø’ È> ePjè¡Ñäj ³ÂšToÁ��Rhä�É´¥€ õT()EÃâ + Z»ê?ªYYú üÍûÍ{~ïcü‡fagÎXî]çøn×&m?fߣ3€Ôêôñ¶ë©p�-©ž»×á–¨„ñj%ýtC Æu—f+mÈDÈL>|Ðë~zr~ÙüBη7fÉt3Käà £PÙ•ü&SµÓ2U/îßÍ,ÝVõ› KÕì°œ—|Á9¸|´ˆnŸ³š�:ì%F#ÚëÄRõQ p:«|esxKEe]¥KHµªÒ÷¹/lЧ]Z:oÉé =J¿r]‚Ñbf[,^«…–¢'‡€Jè"…f×Ñ®n«ØÆì U1€&°¶âúQÏù¶·øû}1LR% !J¶I‹¢j‚™DÙ¦CŠW“+êpq>½½bfœ=z4ÓáÝç?Ðüd͆÷ðõÅ_ª¨Ë2\�T¯GÎÈ/‰º9—Ê]¡Èg$zí0'J*g$J ÅIž„Á‚ ‘RÎCÀ¥œ&«?× í3á¿ãò"S^AÇ-8Íâ�õ.§Á%ã“lû‚¹8×*µˆ(ØYºÖ:V*VÚ�F—_o3¶˜ÄÎ\h¦´<RX3pÛQçq -f[ä|®UëëõÒ»!\aËôëe"õg�<¬í‘vûsÕsráZÓæ¿ò(ø• ñ´Y«æK™/sv K"RïÆ¹‹AeYgõùŸ{ÛÚS�VÙe Ù¹@edE,©à‹ó«×D8OM5£½K5`=À4D£׈s÷Þ,ë¾Î9HÿPiP\Ógu4S #ÿAùU8°FìºÍ3  zñ&ȲÅû¿(¢à~Õ­ã…:¤xä�vl“‹dÈ`S:ÞDiÑz=E­’ÂMç�Bsà¨$gû^¾SPÈ ME…­5vv5## ÁáJ¹ ìfæš«³PY 6/ŽZÛošáEeÀÒÃÖ+†tÌo©µÚ« 3Õçö$hd/ßWUºúxß…quŽÓ­8hNeÔ®ÐaçòJ²*ø]æƒÝŒa«]òIù:\}êÛ4þP«fà; ÚÜ„=*½Aì�’“‡ d+¬Û®"œnKn;ÙÉâ ¼Ò�ý²�WàÝq݇O9 ú©‡V­kL”6°Éëêø÷Gtft‚=_ÍõÄþŸþí°7ü‡ƒÃGÚï»Í»Ñ`'´¡Wâ>�Õw]¥„L©¾ B¯B,ƒUžÒQ�í ð†ÝCªŸÍ¸7^ø£C*Þ÷MØæ¾0¡½û'܇%þóû« .ûãñã' ™ôXé“Ç}øÓ ªš³ÛÖú¶f;ÊàÀAaXEÒŸx`½îqŽòHY×Ë ´Ž;3:…Ù¢öºˆeå™Ò3hiéB`ËiÕ[†±‡g¿ø·�ýóîH;™Rãg°kµÆåÒ.¿ôD'Ÿ9C´ù=êzh/Øp{ü¤¢ƒ:¸»d�,ÔHŸßZ¤3üñb8éW,ƒy©·G qsg›l†ÿ/û(+‡ˆæiç§Â»Ž£©-V¿„ôL+>o‚6¿ÈB51˜N¿Ì;—<éÒÒÆ'™®nâAèm)a„5:eu^8-!Ã`£_¬ÞÄt‡††Uúo2�ÅéáyßT¤âÉdf_˜^å^ŠGÜ*Oñ–š>ÌÖ�ƒ9ŽQ× ±a¸ks&Œúo¾àfâŠÁ ÔA3v‚BõÅ¿üów êGâÛïÄš¯qé»jÆ–¨u�$`Z0›bç;Æ_Øð©5�eŒ ïgºNùÅú&°ìÊß>²ÛÖnjöܪ¹Â²ØžT;§ËFìG4»Ïìv<°¨ïñÈÝ<ÁXN-7’ü£ôÞp[Òéö'‡jU-Tõ¥A£vßKLÜóÛu-¶õì‡b†žµŠ˜H±”0�u©îºËArìÊãËmûQzhÙ}‡œé ž¥y¤…Eu0Õǵ«Ê wk/z…èò ¿´®Gs[wsçÏÅcvºê̼¹/‹R³Ê Ȱ!fqz¼üåÒC»t sÌîõ„½¦o� O¦ú~ak8Ì-O-’º]Ǽ^–_Anœ]å¥dšãç½ÿPK ÒV1](imunify-security/inc/App/Defender/Probe/UT ëÆ«jëÆ«jux è‡PKÒV1]{}¤ˆ¡J Dimunify-security/inc/App/Defender/Probe/StorageAvailabilityProbe.phpUT ëÆ«jëÆ«jux è‡åYin#ÇþM�â`ÒÔ„KSvl MLp˜Á#‰�4v�ѤQê.ŠmõæªjQr0@r‡\%È r…œ$ïUUoIYŠãŒB ÈªWo_¾jþæ·Ù"Û<{¶Ï`’fw"¼Z(èüã/»0‰Ò<€7a’ß«øò5ü²±t–ÎÕ’ Þ…Ãć=wèööܽ_Ã8Šà”¸H8å’‹ sâÿ&ôy"yyp“7'o_›Ãã·¿Ç÷Éôøl ãW§ÓéÑôøœèJer4,—˾O’#Ü÷Óxñ+ ,ß/e˜ø>í»ýÏðû`g'a1—ÃE­±Vøâ0Γp~w1β‹—|ÎI‰‹™H/ùþNáýU‚T©`W.™�tÀnX±Ë0 Õ0\œƒ¥‡Œ‹y*b†*ô­Bç\¢õãÙ$ïÂ�}æ/xÐÕOyJÈQã+ÈrÁaözüV¡cÂ4‘ðÏ?ÿ’¾IE0\Jb—^~Ë}š D쎋.Ñ,3O/yÏ`ž'¾¢ózC¢Z=™q?œ‡>øi2¯rÁˆ ¿Ée~Ĥ„3c÷¸f®öüig§E.jé4I®Å� cžæ Â$GA�ô$\-Sq]¸Oöéœ>ûå 0�R¦èë`§…‡¤‚ÉÉññtrî�MOޞøýá~M&i¡’ M’,Î"ò`À“4†jCgHjch¾ËÉÿ»+Rä)ól|4Ãä{彜Ÿ�ÏONQðÐuݺ䯒t™@¦½ Ó Ô‚)|Ã0§ù,�Æ6â+™ìÎÊÌDxÃ0[¤bdAûšØÚl;0”plÞ9°[Wa²àþ5„s`5=åË<ËR¡xPœ1Áb#È?mM9+ÕèW¹Hà2M£BÅü2"ç ‹”B9_•ºv,Ç]LˆV˲Ïê¯7»˜ Ñ|4ª›Ø%rNVµ>Ô ;Í1…¼,·F™iSï+l-›¤1Ö·²ÁJÉ#UìQ [Lñ3DFM"ÿ~ÓÐÒB‘'cQ�zL¯a,BÓ.(� ‘ ÏD[Ø0µÚèsU…±¾øî=.·)Yz/´ªãÌωb#AÙ/¶Ré6r�‘, Gô»ºG_<ŠˆÕh«qèA _o`h¬º4À$pºN¬Õ«15ÉF½ï~×l´Ê �=5¡ÄRÖ¤ zldYE|sµHƒ‘î½^.GÔ‰éÿ ÔAc¯O¸#¹ˆGÚœþJ –�¯ED‡K¬Ÿ”û¿Å~#Ñ^âèi¡Klö^qêân•—¤ÊÃðÀ¡ð�oZƒEÄ—£ð*A&U{ï3ë�#Åö°ð†ÿ®èã}�þòbåÑèõpd†ØÖàšßéôÖšS³WP„�R�¶ªèj*�òÁrêèöæº]x®_`2è†EtÌ�+ÌG‡]‰;ci[{ûLaÀ‘.}‘RçïTUmipŒ¾ rvÔ Ó…„ÔHù ƒõìˆÈÆ¢dk�¾Îë&sç˜!ÖçÆé­6åÆZÉרY©ôœ+a”®Ó< ­>ðˆ+^�-Í(¥|rp`±Ù�Ðq(1÷ýEÃí¶·Ôh:8ÌvA¤9…´•C{P�Õ.–— ¸[·Y¬áQXÙƒšßÖp( í€RÚ~±%Rô‹Â,‰—¨¹Ý µ}¿ôŸ¤b-ê‚Õ‹ÒIJ×Ò>àpE/ zÓ[ŸgºjÛ|KR²ÛF)Yªð{>¥€òÞ‹+®ŽÌ,ÀŠ7Öu¯²omaÅÍYÐÁÂ䡾f¾mïHµPoKmT=©¤ZÓ’âb½’¤ ߨ˜ÚϲƒT�/âã(?s0I^ÔÖZÎ"ÅÎ@‹Îpï DŽˆÑœ®Ù"¢·†Ã½áP/îêwG¦þµ³™Ó�Òð T¹úÔ×gW%¸uî*Þªç÷ÁÏNnê$ͽհs¦s±æ4&¡m&±*7Šx^Õ¥E±ÇäÖã7ËaŽ-¶ŠvÁª[1zgŒyßXÒª¿·õ¨“#É#Û\,Zé/vÙ6“VÍFƒ,¬ }pti=Ë$Ù˜UD[�‚_QE—¾[Åç8LPÅDõóËËÄF k•ƒúÅîi0ÚÁdPh)Úõ¯² 'Ò`‚×ôC@äÑ#S‹ÆŠ¾Úäb}`F’<¾Ä kÇճלmÜ/¬‡t¶Àù2íá$ˆ yꕼsÉÍM”ŠVÈÜ÷±‘BÁ.¼�õ!ú&àÅÞÆŽ±)ƒÈä®5ÄdÃÏ„Ä>î'| +™,;™�{«·H¼!!ŒŒå¾Þ=›¿œN'_—ûLÐþþ7º j84¸:É H®ÄŒFkØwííØûΪt38a·˜›p'õÇú1Üëv?‘; ‚3zšC£´‘\û5tòŒXè\Gˆ]øÜý1P¢æý]*›!­z…vlµ9t£³°Ñ }pÔÒ® KõÁUظªþ‡‘MëP¡ G6íû¨‘d\6 8iÍ«Pe5�†(ȲìƒÛ f× ÎG@ͦ‡ix5h-œ4Ïüþ+PÒ>'Ø#5Å)hý'‡�ŸúÅó§ G­­yïégÎâG�šåÇ Ml?vÐØÈ£'FSB?,þÛPñ‘@ñçïåËÿDÔÉV Äòi5@µ©X¹N°)…7]Ô?^ص&Îén@Kv®�$ S÷† xS1Ü:ñïÏ£ÆÀ8³jÿ§ðYá•(•ü§ÁhVâ“`š=‹HmõlÓŠÿ7¨&,xØÓÌøH!Ú™}JfÄÚŸŠtó ?ʵxKô?8Õ°×ú)d¸Lë<7â¹B…ÀêÐÑ?]KY„ýëY‚¶ó`wcƒ_}ÚY¨`œÓö#Îtø¿ò,c ÍàÝYïûqïnï¹÷~€aq<{z¿å2¿D…‘µæ¥;Øg®ÛvþPK ÒV1]*imunify-security/inc/App/Defender/Handler/UT ëÆ«jëÆ«jux è‡PKÒV1]µ§èÉ:5imunify-security/inc/App/Defender/Handler/Handler.phpUT ëÆ«jëÆ«jux è‡�WÛn7}–¾b•È’â¤/N•Dµ Û…“väÁ€@íR^Æ»ä†äJR?ôûG’{á^;õƒ±"gçrf†üãm¥ýéóç}xG"ÝIviþûÏŽb‘…pÁxöN“ÕüV[ºk½%’Žáœp0{1Û?˜ü‹8†+ƒ¢àŠ**74DpƒÁÊ !ã!•ptññó1\œøüÿ�|¸>�ÅéÕÉÉû“ŸŒ|¤uª§Óív; Ìɱ9xˆdÓ[OQhÚïs’P•’€:ó¬u7çIÆÙzw³HÓ›cº¦æÄ›3ÂØÊ×ý~¦—>{÷^5üxÇxD%ÓÇ"¸ ú$MãÝ0U$Ä�²Û“ðì3³2™ã‘”`’œQî+t�„á’XÔ\d DJ²:¼1 ²[Ñ?ÍpÂìŒaø¾nõ)RÆŒ>wˆ°�ëP‘ÈâVÔÚÏhèU»¤:“ÜÝêd¥ß•oÖøéŽ"ÜÙ™µøkñœ'ÍYÙë±5 Á#• Óâ+ù¾p®�Špì‘r± i§† BÏ7{hzƒmº4ËLÀC×w¹0=²S(oÓ?Io³;ﯹØp¯fïO¤Kj £U¯1é‚Li‘tN”af.ÊæVdî3£Ç‹kRíÑ{dµXë‘5m ¨lmmüá#gÖzRçH«„ÿG5WV”ty†ê ai«-ñ"óÏ€&©6Iõ”+ZSߨ‡±}ûÈþ!pºíXnLaMuâþ›ü“z–ûfŽ¡ÑËK³súÙR³tìíaWXÑc¢I-ê60—ÅV^œÖsÙ€gs®4 ôZd•C7*G5µÜŽÜ–\÷ªTqhÉ¥ÛÇBQ4Ȥ¹í“V»¢XÌX6ýÓN<|6P{ùO±rÍHïÊçAEw7¸”Õ+!�šÅ×ÈÚ!a Ø¥Aw‚ñn?qL!Ë›ˆ±Jݱô5Ø(@h€[²îfóóêk·ðV¸l.BQ¡s/²e.üÐK¼™ ¹Ì'ÉÀ¥â�Ùnxd¾Ê#ü ·ÊÉ<'‡£r½v3©Ñ²ü]ÌrkÄO-—¨†¸Ãúªlkö0ehxC÷FRóNR8ˆ—Êšo^ÛîÎS˜c1/îÃÃËÅõu}:¼nÜR'¿)·ØmÛ–cn^¼Èi…¯_C¯f/qC¥XåŽÑè\¸ã;ýŽqj¼�žÄ¡ºEÖv.¼æÐe„äÄô¸€óAg*_Zc\εnÜ÷ÿPKÒV1]JV¸c?>imunify-security/inc/App/Defender/Handler/HandlerInterface.phpUT ëÆ«jëÆ«jux è‡u�ËNÂ@…×ô)þ•¢m!q£&Š¥À„Kâ‚ÍÐþ¥çfgÆÚ>¢od§€ÈÂÍd2sÎwι»W¹ò‚n׃.DRUÝåÚß_ˆ˜´)L©°ï0âÛ1\œ=-efJRà%LDý°^õÃþ5 ƒ…£hX Æâ ÓîøSš Ð˜‚)MŸÖC˜NæëçúŒâù2†Áhdzx¾rúÜ¥o‚ ,K?qÉÌû‰äÃaA- ì'î펔dù­I[`ˇ@!�ÏÝ=÷Âc~}•,’jçÑ£*<‚¾Ln”˜/ Ôÿù»ýP¦>œˆ8½†ãèâ <\[šÈÀ,™âMÆ<9øù õäàÉS8 CІ1×\]qÁ ÿDx<Ö܇4ö¹‚þÉéÙœ Ggðw0š àðx<¼Œ¦$¿0&ÑÝNg¹\¶=Ò’â¶'£NÈç,ì P§Z�YÄuÂ<î̳Ö�£4ÁÍùa’œñ€“ÆÕjªï”:+}ž�Ó�ã�Œš©bÞ¥…‹°èZªE<‡÷Rùï׌b±<6º�y;1wH<™â$è´Ïn � Ì‚CÈ´�g´¤ígÞªhÒyJÔ°fa…�@/ ‹��]ˆ$žV)5¤¤mÉðyGŒ7ÂX£Qç_Õ ¹Qq~83�XƒDñ@\·i«S­x2FÈéøp4bfïÆƒ×ÃЃšp<Íȸù?«!7ê(�.Pf}1’èð.·pû¿Gdz£Ã�}VFXÙů¡˜2¶.ƒˆAsDð5ÔŸø—œ'9u�á" ®ûü|x7N‡§#Tûµ¡³áh6ôOGG“²cT¥|`6lfb‘­Ào S,² ÛöÓ,˜�%£<ó9WÜ/Qܤ*†+)üÌÂ$½…A{ÖSeÕbÈêeäE®b¿‡>ÐOÏí´^ιúõÆ Ú7’’*ÛŸG>3¼µ�­¨å×À‰hÊEÿˆFf!´…˜ËuÈÕ¸c+N˜BkŽ–•P>ÕH ö'šøjçz˜Rì†,D¸N‡z„âQ–«® \�ñÈUEP‡Ÿ ]¹Ÿ ó�t9B*»6{p@†ßVwn?~œÛ1摼â˜8è› © aèâ,•Úk®Ly!gqšœ†9U…HáÞ„!hš÷¾·…ë¥J‘ÏEñZ U¯ñoýr!hÒ·£�¾*ŽSXýô^®Lh:j%³BK�Dè¯zÃî7ðÅõ¶”éÇÜ”{ӷ亄¹;l�m'ºµµ–žÀJFfÜŠ¥„(Ò€•rɱvYì—­Àå+¦\·÷ *Æ*ѯ¥"S¾§ZþÏR¨T2†î“X[Ñ2Ò°p³|v\#߯uO0jšZ™¸èòVó†ö¯Í"ܹíÂÛŒv&^"ÒR;Óit'y÷¸B¿ƒ=ëý wƒ_â§¢³X\oa!P{P»•ÃVKG²»²Ûd7µ'x~šƒþ‡…‘{·£"6º‘«�:òиC®k Ø>wÊuÖ@Éh5omEJ㌃Sn«%Bø()Á÷w«U‡Êú-µ&™Ë, o`«ÅRÿ*¢Äöµµ¸ì$Î…¢0~DCX™íiyg³ù® Aq×s4(?€Âë°în²×jÀBœ{{=Ôd1²{´L@=woެ_9­ T�yˆiˆJ?kÏÜŸu×Ä`¤YY·ø,C-N6àË—Òýž-—ºç7•÷Ò j#k&YCíê¾9C?»ò&w)SÎå=ù³?iöN†›™¤wfR3³¡lÂ�%Åõ¨H°,“™ 5�³P—5Ñ ýµìkBØD ÛÝ9�ïlÕëo”]My×» 4ƒ1øå å-0LžÁË*‘XÝ”„çù§5MÒ ¦y'¶ÝrxDýW˜½3$Ð#ì‡[L&¿þøúZïØ)a÷jsaÚäÖ½ÙlD#v}Âã9fdI�™òá2€Õp¬|_¹Ý,QTLèFa£+MÅ„N´ö òŸ–ó PW,5�æŠ']XrvÙòÔM‚—i«EÚ|*,Ð © �™KCoÀT cŸ Eåg~´A§hͨ· Í5›¶:Fq.3m# ÷¼ìAïZŠ%¾å…ô·2#«Êb¹Ï¼ïJêÓt¸öœ�1^Dû†®Í4Ú.7MËÛEùõó%œã.§�»¯Ý¬5××ÿ�1í�Mû5Èúñ/52HQ<Ìž½½6v[/#é‹€:{«F�ËÓ·ô¯�6Ô¬gµ,Ax½ò$�‰bÿ_Rü�Pº‘¸}!¹!9OHZ>½øŒ…Ý.>Iñû5Î87EÌÏæ¦Ã¹ÛqWúÇ«ï—ØzK´d†Þ|ÊL¥§«³ÕâÝnæj&nSô¶ú/PKÒV1]âçðÕ;!imunify-security/inc/autoload.phpUT ëÆ«jëÆ«jux è‡�SakÛ0ýlÿŠœ×îçuÙo tm°F! d[ŽÅÉHv›Púßw²�4l]©�%$ß{ïî�ôå[UVn8»0†e_\^pSmj%Í™†Bi˜ Õä·\6ûÍb×H^6cÈ5†™’’j–Cz€ºd°£\Z²J4[.!Uª6µ¦P™b¥©©ÊúðTò¬ÝHO¼.US·=´M �,t]^À>AÎ .Y>oñs}·øþ@’h¶Ž«²œ®n<áûì:]ÜÃ|ȹ–t‡„Ì1!xå¾|Dhº^ÝßÞOçQLâèÇ"YEq4ÿ€òÛ8jÝ0+î:¦äh=ÑlËMÍôÐuœ¢‘YÍ•ÄÔ­ï�–ã *�z{f`Tkz°ÑŽã�uìÔ²ÍLí*e˜Þl¶{´³“¯ð¦E€ ž†¯LaOyÂŽ&ôüwD=ø÷yW”ˬgl=Áâ•fÏ Ö~ª–šãÂ’ RjÁ–mqÚ.^Âd2<}˜íÑ8ÿ„�‚��f‚Öü‘‘Î\5)â^A¸LÏÁW=¶à‚�×v–M`qØÈJÐÌ tÃÇ qø[qdK·—Âëiîq™™Ï|+Ñø¥t¾Ô̘`y³ îT‚²2cy¤µÒ&˜s“©FÓ-Ë;‚Ö�k›a{÷[‰Óâ•%îtjìnE®ãÓ£Û ·oe4ÏIo~Ì}Xs­Ëk,æŸâþŽë¿Éêm'Œx|õÞÒÛ•7̱¸“‡•[~=h¸~«ÆÞXvcs烥Ê��;1ìR¹éİèüìüÏ*³s•ù¹¥Ù_Ôæ®Ô._y}v¶6;+'TîòU7št¼:a�…ÉoïÞkxIèx•·ƒ°՘ߥ�ÑÕËo2ñçÕ)ÿâÜìÕ«sì'?aøçì?]�›co±YV£Ï¿º:¯ýòêü“fÌþrnžýþ÷bʯæ®LÔ9˜2?ý&íûqåîóPÜÄGw*7Þ[`óÕ9ÅÛ�+7ƒð²ÆŠîòG?®²;tÕì}§ÃYÐdq›3qû(r({¶he²˜‚ ÞäQ=t»ÈýÉd� ÞA”™1‡Õƒf›û‘»ÊY,W—Í:Ž×sB΢ºãûðÅ kº!ï9žÇºaƒvÀî3ÌñÌõã0Á«e .°fj›öøräÆ<ªf'>·†»Ãþð$¯[ýáñè©¶B…�¾­lx4 _ Oaöþðhô`x2z4àd\nG×9!©Ÿ�HœÕ ¬°í¥“Ã~Á~®ßMbÄlÎä{{H$?î‘rÓm�·]î5Ø­OÝ(Žlþ’3&!of¤o´ž›üï ÄÀE“‰�æ…Š)(ô®廓}~·»¼ÅµHbø8ô.1 L‘k43Y¤§$1O³å>^\)±®,…�ŒÖ\ç¯ßc þ'LO¾Ì«P�øGŠ?ÃøJó(�õÞpºÎ²ë18zº‹uu„—ȸïÀÉÈ>¼ÌL»fÚ¼¾1· Áv“XÈé¶ÑV¼sk‰AÜuçƒÅ¥œ|=—^nbôï=’J–’AI¥ ,"® #`$­\K |Œº¼î‚®2�ù„3§ƒ§‰ß�Ýß‘ŸKÛŒ&lŒvÔ ¸­"pT�¯�L ß1<> K’|ô„& `ËÈ(£Ù{†º”æÜ)Î"ÙõÉß·È6Ô9OøbÀdH[È[‰ç„pý” DÑí:1°yp]¸­Ýéœh«#PŽFÁM�ÂAl‘¹˜„"”�$‚ø´#-‹&ŸYV«^dn ¤EÀ4A‚^”YÔ%AÇcòi;tŠ}aŠÄ¸Üpe”i«cÀ™¿ÀñpI�;+T¹îõ»HÁ<ÊÂsÊ5Ï zÅޏ»8@ÌQ缑=€YÏ[«Zžê€ˆ?V†ÑôÃOˆß#MNÃE3¡Ü'ZÂ�òp•›Â, íˆO×l:™A&¦=C'!Yž+³—áSÔxcØ�¯²Ó«3¨Eúê.á"Ž’¢˜*=®^=3(\ø�òXž3§„ð$Ji/bÓáQUx !÷ì¸ẅùògE7®ŸÄ¼ü ð¼ä rùƒÀe‚"�;Șóå#Î8H;HÂòc´Ã’S´ÃâÛØw…ç Úñò�4™_�‘ZÿÎóG|™]ëv=·N‚½-‹Ú&–ž`ŸÌ*ø�/Él!HénWh‹¾LŽÈ¼¸ž!YÁ`Ým@ ±©k¿M—&Ì„ÒýhÒEòi}ôçÉ|Úá´æ_`ym¥¯…ƒÐÈ(=l¬ úOYŸK££èÞÒòðø!Eµ˜æ1ÝÀÿ(7k*ØâÚ«‡NÏ¿uöúþ©"\-¢JÒ­¹xëƒÉ…ÁcÖ”eæ$qšc÷K˜Aä–°¸T‚\§zÝW2®EßnU fdmvZÌ•m!sFxéÖÝ ‰ìEJšr �aÐ'þ—Ðh-Älƒ^ vJîhCîT¨¨zŸ:=DÑm› åx°ùCHÈ~¸³À÷ô ì¯2±v„jòjŽ?Êl¤Ë+ëa‰ñO• ñ‘°÷%†"ûK̰òôMjÐ�C·Køì]3�¾îxŽ_·j Û„°–ø '@Ú\Qºðˆa_´ ªKÅIL³'èF†X0¼@”É:eb7d_IÎó±‰nóýIBt�Œ(^$îã6¸N•ºÇþÈåI!‹Œ©¿¸ZP§±™¯ÖèV¹¬| n× ¯`5†Òɶ5�Ë@tÕϼ5ÏW3àð³* ›¢Ÿr\xW–VÆ*¶¬3¿¢@ñ¾ePD¥¬(îà`‚“ Ì—î)44»iá‘Ë1P¯çQ) á:-? €ÓþŒîÔC\ºê@X%Ê]WUòt†5xÓ�p•½ñó+³³ð`þ kOñ á>�\æsûÔZš¦eDÖý¾Uøeôä¾° …ÑLÖȺN#ñëc6e—œ�ý"± „í¥[£‡3Ä#F½¯ÈªMiožèGmNk{sìmîußÒ�*"Ô{Jþc0úbôø-=#µ—'4¶(×u,²*) ç(ÆÇÆÌSË'Á"_”n{àð0�Zb ¯Ã|3®×W™¿Òæ§�ñº¹É¸QpÉ×¢hs÷ÉvÒ ´'‘i )üÝÐCžëò8SùÔ�;%.<[TPAx3=…½Ò¸9ú i4Ë'[*¤a—÷D ïMr¸?|­ÁîÕJ³Wiò�d�¤ÜÎÂÛû…Lš�-{&ZõVMê×ÛŽßÒíŸ ^B&�”Ø¢³ÊM=L=¶YÏGéY‡kj;ßM‘}ĦR¹¾$ý¹~}ßæ¡–tM?•ò;ÒÏ“ŸÙÐ.ùšÂˆlÙiTôû‡vît/�À•Ä)Þ3æ¡q¯¥¹´L÷ŠrÅJøÊsÅjÄ÷ÌÖ)Ï&Z3§×DTR*µº·PB*$!f›ZN90‰ò¶)2©…²Í¨šýí­¥6¡,*#�…Ú™d4ʯòmÚÀð¨`"ÚÏ%I@×1Tö…t‘È�Ï05‰(³§2ÛÕuÙˆ�MQ¦ŠÉ|é ßü]ä¿àÿžë¯ – —²ÏPâ¨~$ _$�u-3Wø…ÞèŽï"fé2§†güZ962äà>W8ï²0¡—ªŸ5-ü”IDÔop~Ÿ¨1%üȈSOÒQ^‰ø¥åN°¶Ãd’w =ÝcM�–’ßij .€ÑÂäGI°Nï—Âe¯Êì[k.;`Ê ÷üÌZH×P‡²©¿Qù¼¶Ÿ"Jquƒaç^Ó`6m* ”`.ÁCò­æ>¢¨r$(Å¡hœHͶu¢µ�1¡ko>â ëøf±­ˆ|–ë×½¤A‰@á @"ÁzW ‹Œ°ØqÖÈ €ìTËŽd!…»ç?ˆ¤êZD¿Wqº–�Ø#˜ÛŸÑ…’ºU¬|FбÓW:ôW5Là�özÀRi{8#îg]§¼/-E(2_äPtËV©cpVK–KÏM7ÂöŸ³‹rãÄŒ.+»iu…“\ß÷‘DÚö¬K˱½·½àûÁÍë%¼]”ÓÚÜñâöFž£ñš§Å%ê­ LJcñ\:DµJÉ&ßwy;å¥U‰í2b>ýu¬Wä ªN¹ÔRiÂùjøóõy½*5®º>:RO�6Ò¢`‚Ì�ÙŠ0aƒÁD¹í:\b+]Uuo^ óß ÍR¹Fåù¶)d“SÇ—;ÐÔjÃ×ì&äÂQnV{¯‡îÐk™G²³+K¢}ƒæNÖ¥\<â�‡E3æ'ŸQ”RcSWæ1>Ï:Pcrö+³—'̰‹‘E7Ê‚U¸–ôç"Æß-½ r�2A­I%xNomFÕAÚh€"lá“zmÂYá¾%²¤êi„QŠ¢ZFöÂUê„)3‡;À÷»„¥N©Xž ÇB“ýÖ…Q7Ê9…e“+¥”ж Y4Þ‰”0µ”èñÎì‰ü÷Ðct½ ŽL²01ú–yhRñíª#Âì¢|�F™É" iv³KAÌðšÛN·ËÍ·wÿOdE‹(zÛÍÛ,jƒŸfQÒé8!HEKü2ÈBZ¦vZ­�·0G ·„“õ£w�ÅïÉìÈtÀ–|î@ɇH¸œ¼ rÔR²›fè l�úX©®¯¥QDÝ~[þ¹ø%¿qØ•¯Iÿb{v­,5ˆ½²](«uÏ­¯ˆJ8 ŽÙÔßïMS·ú§]ŠXÒÑ38 êPðаB]³}BPU­/Ë~ È™&Pþ&Š» ¯T·£–OEßq4Ú$Zþ�^0³W"_ˆê…›(la.¼AaûÅ5�™B”ÙÝ ‹`õÌ]mÄ…ÀOy›kl ¸ŒA¢hå¿z6ÌÐFvz“Ž’ÙÝ-¸uµiE\ØŒ»µ±èSxbgv�CQØKiµÉYâ'4v†E/tôÐÜ=ÃO›éCο6s'š}©³:£�]§Ù››%}Q`_‹’‹8ÈóabûÒìY ¾mÕKx’¥û´ ÝhÙ}W!Ïjà%>V9C¾ �YèâO‹´�LÊðG_idÍ |g]³Tâ ]HõJ¯kÐI½tcƒ3£DŠ Ñ¶5“¾Ìi4ðõËR÷:¬!^¬ÈÛø­hŒ…Þ^g˜$}…#�Ó˜­t”õsåã „fQœoÕ;3ã¢É ÒÅ·/1ÕlÚ™Ñê ~¨jâšXy†EœñZ;¡RÐ11®Äµˆ²^OST�É6íIž–¾ËYŒr-ªèyèxF8Á~à{S’KùÉŸcÛÐɺHñ¶Bü•Ö ÂÐ<Ô½=ìwcú°úÊz.5({�ƒ©Ê:µ64]ß�Ú`�¸ƒµR–t5ÑÈÑ�&k±e¿ü·o‚212Ò~ØMê#¯ö¹r}„aåÊ l�ÙnÊh琢�lØ+M”"2£¾³ÙBm¶2Pó6ú}®ÒÊÚÏ)ï[äN�Åä9% ˆcù¯§Œëá0ì‘e+¡„>ç�ˆzI¸`½òÙÞ"]"Ÿ#~O%}›û;ÜGI"oë_”H¥®»l+h”Øö–hЂ 4H ÞB„4|¼ õ˜ мPKÒV1];gˆÅ#M4imunify-security/languages/imunify-security-ru_RU.moUT ëÆ«jëÆ«jux 臵Z pwyßÓ�Ä�ø™øO%V¬;K²lÙ²-ËòƒÈ±c)‰¡@YÝ­¤�O·ÇížQ(¶…ó@N‡t±c2<&méY¶lY²dÊÐBaîèІNKhèt¦¡�´L†a ý}ß÷ß½½½;Ù1Ô‰ýíþßÿ{?þ{?œ7çO üù*þ.§¿o7øÏò?(Áù€·þ>`àÀVÀwî¼ð#>x#à)½/¯á×o|pàzüæëåÜ»¯—ùí€M€ïŒŽI“þà;¿ x'`pà›€Üó.Ãx?àWÞ%ô^wƒaüà¼dßb@,5”†qÀàÀ·>ˆ­Fð6À�¾ð¥„¯?Ü 8 H"zÇ�Â÷À.ÀU€{œøí…¯àVÀ×o”sîºIøYu“ÐÙ xàzÀ@° ðôMBßk€ï¼~žàï\ øü<-�y"ÏÂ<á÷_ç’œ5ü9àH¡XtÀÁ‚Ѹph¾à?;_öÿD¯ûÙ|áã—ó….Rþ½±BwÿÑ_p àS€ ¿´@èšÖð¯ˆ\¿³@ì矈ü~¦á¯ˆœß¹Pè]´PÖß¶PôÔŒM Å~öêù?Y(r{j¡Èóoôþï,}½ øÀ�²>JüÜ,ö{`‘ðñü"¡ÿô"‘ËÔ"‘ç·‘ü5|s‘ÐsÃb9ç–Ųoåb¡gËbÙÿÀb¡×\,û¼ÅBÏQ=þâbá;¯ñLkøM ÿ°ð‡‹…¾9Kdÿõ€+oÕïÛ—=ûû–ˆ}�ü]À–ˆþN.ù¼¼Dð¿¢ßÇ—=—–ˆ�~w‰èï_–ˆ¼¹Dìàõü;–Šž–®¬[*|t.<{— ½ÖR¡/­ß?¡ßŸX*ôf©ØÁ×–Š|þa©Ðù_KÅžþGï»i|pé29ÿÈ2¡ûÄ2¡ãä2¡÷=ÿU=ÿ½e~°LôAHiÝ�ËeþÎå"ߨr9§p-à– ?Ïêõ§–‹ýŽ/üÓËßw—Ëù¯->~¢×·?7ß"|Ä¡Bã¾[xÊHÞ"ú:|‹àyF¿¿øaÀ¯è}7Ü [lLÝ*þþ�· ýsWˆÝÝØ ¸ "3>´Bô6¼Bð~b…ÐõÔ áãåÂºÏ­�øõ·þh…Øñ›€‹`@oW¢ç[o~7Þ&ç½÷6ñ«�¶“¿Þ.ð}· �/ÞJþ£á· žëëíl!=ÞEv‡øé/÷ºub7¯Õ ]?­;ûu�Èe”|ð àu¿ƒ$�÷ö•‚q½Èå^ {ê%®;õ2ÿ,à}€gëE®¿®ù¿ýnÃØxûÝ¢Ï þ7>‰¾ø—w‹üZ%ñ9øqâðSdn "ç/5ßyÀOÄ?“1±³�˜ð“}ÛÉ“›7’?n&=m�úæD¾«ÚDÞ»Úoo›àýcÀû¿Ü&|¾Ù&ô,²vo”ucE¿¯m”üþó�¯÷nÿÀ&ÑSr“ØõÐ&‰¿Ïm˜Þ$vþê&‘ï»Ad=Éa³ÈÅÑðàfáïøf9ïÌfÙ÷�ÍBÿ�킯®]èݬá‡ÚÅ>Ö.ûFÛ…¯ÓíÂÏOÛÅ^â[„Î÷BÔÆà‘Ï—ç@ßÚ"qâ»BÏœ­¯n•s¶Š¾w«øÕÈV©Çž\Gö¸�ì¼Sèy0øáNÙÿõNñ·×;ÅîÚ&te· '·‰þÏn9ýj›ì»m»èaóvY?¸]èøÌvñÏïm{¸y‡èïñƒOï�xò;Dn¯~ð¿wÈ9ŸG‘ù àÎÿÏcÐÁûË÷ ÿó»$ŽÜÑ%ö·²Kðüa—ðw Kôu¤Kìú ]"—ovÉþïëýÿ¦ÇßÐïovIþ% ¯®éW šIKÕ5ã©nÍ®Q—T«Õ �¦‡�¬2ûyrýÇA35df-ÕçäÒÉêv:Xl§ƒ�®•=ÃC–µß‡t|]�rú”™J)/köõÙ‰`¬×ñJc®òÏL©¬õ‘œåz®±JalÐ!;÷(3™ÌZnõAË5TÆ2÷Ûé~ezª.¹šø]Ïgúè@6aIJ’qLÚž2]Õ›rûe$kz–JÙƒ¶Gˆö[�õe�AefÌ;¹¬rmÏŠíÊp²žrsƒƒfv¸Aõ[i‹�$e“7€ûû³V?Æ\£œ4ƒ–Ñ.”te-/€T&ë$, I;Y(#5Œ³<ÏL쇌ÁDÊéïÇdoÎÃ/à@=˜éÏ’î�`ç`.m÷ ¯Y×HoVÚìMAŸ9Èãáöm„Þ³ø0 ÎyÎ ÓÜk&c!�(Û}ë'ñ ÂDºuÃØ}¬z½ê¶¹¬í +×RÄõÎ#¹ª×>§)Óuí>ÛJ6¨ÌУ3�$¾ÅL™é$¸…Δý7,YÙÜ2P_zki\£ßÊdM(³–—Ë’U+,››qÒ.Ô»Åñè¯ÚH+òªVÂʵL\DNÄ’mÓ¡g•1û-à dId™6Ž ‰0®z1$Ì4øL ÃÚÓ¶çdÃÞÂÄ•<%ü¢œVVyö ŸóÅîz¦g»ž 7M8©”fgï$Ѿ¾x˜5¢Â³a/&›k¼2”�3Z}f­´Šsió€i§Èè¢H1Õ×g‘%h”�0EÈÃ>3ê€“Ê Zêk°Æ†a‘æpO­|ýàd=Y\Ö:`!j˜$ž»(†d\£ã¡N£ƒì#àYýNvØè°€ÃîS9"1ƒ6Î¥˜¡ÜŒ• ÔÃN6¹‡‚ Îɘ½v &*]Úi*Ød* ¦=“Caië3•ƒ *ƒ3U¹T™}èpM¨×þ¨)îXe÷£6©öµ½³GÁöìîîQIÓ3«­†³%,: a'—2³ØŸ!~HþÓÉ‘S|Yg̬9hE,ž�[UÒ"ò{F*Ât,¡!²hy€Ò@ö‰�ˆÍ^ëKñPŸ†õ)Ë„á Ìeˆ?„¥~ò)ǵèß\²ËNç5:´É¦ûýGW%m³?í�²0Ÿ ½ôÙý¹,Ç;a# Q«•"ï6JSN:é6¨¤ÕgæRžºg]Kc#&š[Ô@=ˆráü OØœ&·„C�L'—J²0r™$å òÆRf�Èsaï`ÈEhÌ#øÃFâ•{Ãþ3û>P²Õtz3›Ä“g[-�Ùï~  >¢�7uz€Eôbþâ}ÝÝjeGÖqÝX7Å–îDÖÎйõ5wÚ.É0<¨Þa5@↿€ïvÒÊ–&±{(éÇ3™ÒL8´Ó(ùœÑ™äÛøÄíLúu+™Ýý�V'Y¾ìdò_Ø%ôË^«ßzÔØæd{íd҂ض#<”B*¿jEáÄ ›T„ר�ŒžBöFò(†S¸qI(´Ÿ•ÍýVÚØ‘DX>`»‘ÝÈ«®¼¨ãò‹J°Ê(.]#TØDóbÅ@(4eR¹~›Ã)Yü ü{ÀJ»ÓNŠb¹•%=ù…œ‹\’Æ@Tœµ†ˆ’’éJ^…¯ds$’–oÓ}6¥C‡¬^Ò!’zeû-+ãw:)ÑçÚ ÛÉ¡º‚û³TGª!'»q%l”î@œ”â±çZ©>�uÒ¨~\.(s$RT9W;çNäØÃe[o¥‚K Y Ù\"¦“,5Á ø°Ý9–øÉeBG;}‹Ô–È«EÍJ¦¼3-i nŽ”lSøÈXYN2°3 I#ÙImQ¥w;�A�%~ç�¹>�ž³ß ­uÓŽóQK%â8Yv‘ÑR=þ\y#m·âÑ£¨n§°ø4bÀÊ÷àˆa·ÞØU’%à]ÚHt ÞCeOå•>õÁx·¶/c—N¨¥Ü¹KW/TÊø/´ô~ªo¬Tfõ©¾ßáÀ3vš³†vMá2N«¸L§‡òfid1)?!D+]…§:$™©a